diff --git a/CHANGELOG.md b/CHANGELOG.md
index c9f7476cd2..908f24bd37 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,24 @@
+# v0.9.2 - 2022-07-14
+
+> This release introduces the epoch commitments feature which allows creating proofs-of-inclusion of a block in the tangle. This feature is also the first step to the development of pruning, local snapshots and will allow more efficient way of syncing a node. This release also improves the parameters of rate-setter that should improve user-experience of issuing new blocks. It also contains various bugfixes and improvements, change of terminology e.g. message -> block etc. as well as replacement of grades of finality with confirmation state.
+
+The snapshot has been changed and thus the ledger state is fully reset.
+
+- Update wiki cli (#2327)
+- Trigger all async tasks in a separate goroutine. (#2332)
+- Add bootstrap manager. (#2326)
+- Keep epoch contents in permanent storage in epochstorage plugin (#2328)
+- Terminology renaming (#2320)
+- Fix entrynode config (#2321)
+- Epoch commitment metrics (#2293)
+- Minor fixes (#2319)
+- Build(deps): bump moment in /plugins/dagsvisualizer/frontend (#2317)
+- Build(deps): bump moment in /plugins/dashboard/frontend (#2316)
+- Replace GoF with confirmation state (#2313)
+- Improve rate-setter UX (#2315)
+- Epoch Commitments (#2212)
+- Fix faucet (#2306)
+
# v0.9.1 - 2022-06-22
> This release introduces the rate setter which allows nodes to estimate their fair rate of block creation and makes removing proof-of-work possible. Congestion is completely handled by the rate-setter and congestion control algorithms (capped at 30 BPS). Access mana is not decaying and is pledged to the node until it's re-pledged to another node. The release also includes new time concepts which make the network more resilient against mana going offline which in the past caused confirmations to stop permanently.
diff --git a/Dockerfile b/Dockerfile
index 7b8bd8ae4d..15ac13e0ff 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -40,6 +40,7 @@ COPY go.mod .
COPY go.sum .
ENV GO111MODULE=on
+ENV GOWORK=off
RUN go mod download
RUN go mod verify
diff --git a/client/data.go b/client/data.go
index b1bd745efb..1d5c9fcec6 100644
--- a/client/data.go
+++ b/client/data.go
@@ -10,7 +10,7 @@ const (
routeData = "data"
)
-// Data sends the given data (payload) by creating a message in the backend.
+// Data sends the given data (payload) by creating a block in the backend.
func (api *GoShimmerAPI) Data(data []byte) (string, error) {
res := &jsonmodels.DataResponse{}
if err := api.do(http.MethodPost, routeData,
diff --git a/client/evilspammer/errors.go b/client/evilspammer/errors.go
index 75c54835f3..b3513c9848 100644
--- a/client/evilspammer/errors.go
+++ b/client/evilspammer/errors.go
@@ -10,7 +10,7 @@ import (
var (
ErrFailPostTransaction = errors.New("failed to post transaction")
- ErrFailSendDataMessage = errors.New("failed to send a data message")
+ ErrFailSendDataBlock = errors.New("failed to send a data block")
ErrTransactionIsNil = errors.New("provided transaction is nil")
ErrFailToPrepareBatch = errors.New("custom conflict batch could not be prepared")
@@ -54,9 +54,9 @@ func (e *ErrorCounter) GetErrorsSummary() string {
if len(e.errorsMap) == 0 {
return "No errors encountered"
}
- msg := "Errors encountered during spam:\n"
+ blk := "Errors encountered during spam:\n"
for key, value := range e.errorsMap {
- msg += fmt.Sprintf("%s: %d\n", key.Error(), value.Load())
+ blk += fmt.Sprintf("%s: %d\n", key.Error(), value.Load())
}
- return msg
+ return blk
}
diff --git a/client/evilspammer/options.go b/client/evilspammer/options.go
index 0b2517f593..5676b26fc9 100644
--- a/client/evilspammer/options.go
+++ b/client/evilspammer/options.go
@@ -63,7 +63,7 @@ func WithEvilWallet(initWallets *evilwallet.EvilWallet) Options {
}
}
-// WithEvilScenario provides initWallet of spammer, if omitted spammer will prepare funds based on maxMsgSent parameter
+// WithEvilScenario provides initWallet of spammer, if omitted spammer will prepare funds based on maxBlkSent parameter
func WithEvilScenario(scenario *evilwallet.EvilScenario) Options {
return func(s *Spammer) {
s.EvilScenario = scenario
diff --git a/client/evilspammer/spammer.go b/client/evilspammer/spammer.go
index c534588e85..8427f2234a 100644
--- a/client/evilspammer/spammer.go
+++ b/client/evilspammer/spammer.go
@@ -83,7 +83,7 @@ func NewSpammer(options ...Options) *Spammer {
return s
}
-func (s *Spammer) MessagesSent() uint64 {
+func (s *Spammer) BlocksSent() uint64 {
return uint64(s.State.txSent.Load())
}
@@ -115,11 +115,11 @@ func (s *Spammer) setupSpamDetails() {
if s.SpamDetails.TimeUnit == 0 {
s.SpamDetails.TimeUnit = time.Second
}
- // provided only maxMsgSent, calculating the default max for maxDuration
+ // provided only maxBlkSent, calculating the default max for maxDuration
if s.SpamDetails.MaxDuration == 0 && s.SpamDetails.MaxBatchesSent > 0 {
s.SpamDetails.MaxDuration = time.Hour * 100
}
- // provided only maxDuration, calculating the default max for maxMsgSent
+ // provided only maxDuration, calculating the default max for maxBlkSent
if s.SpamDetails.MaxBatchesSent == 0 && s.SpamDetails.MaxDuration > 0 {
s.SpamDetails.MaxBatchesSent = int(s.SpamDetails.MaxDuration.Seconds()/s.SpamDetails.TimeUnit.Seconds()*float64(s.SpamDetails.Rate)) + 1
}
@@ -141,7 +141,7 @@ func (s *Spammer) initLogTicker() *time.Ticker {
return time.NewTicker(s.State.logTickTime)
}
-// Spam runs the spammer. Function will stop after maxDuration time will pass or when maxMsgSent will be exceeded
+// Spam runs the spammer. Function will stop after maxDuration time will pass or when maxBlkSent will be exceeded
func (s *Spammer) Spam() {
s.log.Infof("Start spamming transactions with %d rate", s.SpamDetails.Rate)
@@ -153,7 +153,7 @@ func (s *Spammer) Spam() {
for {
select {
case <-s.State.logTicker.C:
- s.log.Infof("Messages issued so far: %d, errors encountered: %d", s.State.txSent.Load(), s.ErrCounter.GetTotalErrorCount())
+ s.log.Infof("Blocks issued so far: %d, errors encountered: %d", s.State.txSent.Load(), s.ErrCounter.GetTotalErrorCount())
case <-timeExceeded:
s.log.Infof("Maximum spam duration exceeded, stopping spammer....")
s.StopSpamming()
@@ -180,7 +180,7 @@ func (s *Spammer) Spam() {
func (s *Spammer) CheckIfAllSent() {
if s.State.batchPrepared.Load() >= int64(s.SpamDetails.MaxBatchesSent) {
- s.log.Infof("Maximum number of messages sent, stopping spammer...")
+ s.log.Infof("Maximum number of blocks sent, stopping spammer...")
s.done <- true
}
}
diff --git a/client/evilspammer/spamming_functions.go b/client/evilspammer/spamming_functions.go
index 141646122e..737fe2022c 100644
--- a/client/evilspammer/spamming_functions.go
+++ b/client/evilspammer/spamming_functions.go
@@ -14,19 +14,19 @@ import (
func DataSpammingFunction(s *Spammer) {
clt := s.Clients.GetClient()
- // sleep randomly to avoid issuing messages in different goroutines at once
+ // sleep randomly to avoid issuing blocks in different goroutines at once
time.Sleep(time.Duration(rand.Float64()*20) * time.Millisecond)
if err := evilwallet.RateSetterSleep(clt, s.UseRateSetter); err != nil {
s.ErrCounter.CountError(err)
}
- msgID, err := clt.PostData([]byte(fmt.Sprintf("SPAM")))
+ blkID, err := clt.PostData([]byte(fmt.Sprintf("SPAM")))
if err != nil {
- s.ErrCounter.CountError(ErrFailSendDataMessage)
+ s.ErrCounter.CountError(ErrFailSendDataBlock)
}
count := s.State.txSent.Add(1)
if count%int64(s.SpamDetails.Rate*2) == 0 {
- s.log.Debugf("Last sent message, ID: %s; msgCount: %d", msgID, count)
+ s.log.Debugf("Last sent block, ID: %s; blkCount: %d", blkID, count)
}
s.State.batchPrepared.Add(1)
s.CheckIfAllSent()
@@ -53,7 +53,7 @@ func CustomConflictSpammingFunc(s *Spammer) {
go func(clt evilwallet.Client, tx *devnetvm.Transaction) {
defer wg.Done()
- // sleep randomly to avoid issuing messages in different goroutines at once
+ // sleep randomly to avoid issuing blocks in different goroutines at once
time.Sleep(time.Duration(rand.Float64()*100) * time.Millisecond)
if err = evilwallet.RateSetterSleep(clt, s.UseRateSetter); err != nil {
s.ErrCounter.CountError(err)
diff --git a/client/evilspammer/utils.go b/client/evilspammer/utils.go
index 5a6a2ed7f5..46dc753346 100644
--- a/client/evilspammer/utils.go
+++ b/client/evilspammer/utils.go
@@ -1,8 +1,9 @@
package evilspammer
import (
- "github.com/iotaledger/goshimmer/client/evilwallet"
"time"
+
+ "github.com/iotaledger/goshimmer/client/evilwallet"
)
// BigWalletsNeeded calculates how many big wallets needs to be prepared for a spam based on provided spam details.
diff --git a/client/evilwallet/connector.go b/client/evilwallet/connector.go
index 74bbb6e786..52c9a0a7fd 100644
--- a/client/evilwallet/connector.go
+++ b/client/evilwallet/connector.go
@@ -5,10 +5,10 @@ import (
"time"
"github.com/iotaledger/hive.go/identity"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/goshimmer/client"
"github.com/iotaledger/goshimmer/client/wallet"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/jsonmodels"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
@@ -173,19 +173,19 @@ type Client interface {
SleepRateSetterEstimate() (err error)
// PostTransaction sends a transaction to the Tangle via a given client.
PostTransaction(tx *devnetvm.Transaction) (utxo.TransactionID, error)
- // PostData sends the given data (payload) by creating a message in the backend.
- PostData(data []byte) (msgID string, err error)
+ // PostData sends the given data (payload) by creating a block in the backend.
+ PostData(data []byte) (blkID string, err error)
// GetUnspentOutputForAddress gets the first unspent outputs of a given address.
GetUnspentOutputForAddress(addr devnetvm.Address) *jsonmodels.WalletOutput
// GetAddressUnspentOutputs gets the unspent outputs of an address.
GetAddressUnspentOutputs(address string) (outputIDs []utxo.OutputID, err error)
- // GetTransactionGoF returns the GoF of a given transaction ID.
- GetTransactionGoF(txID string) gof.GradeOfFinality
+ // GetTransactionConfirmationState returns the ConfirmationState of a given transaction ID.
+ GetTransactionConfirmationState(txID string) confirmation.State
// GetOutput gets the output of a given outputID.
GetOutput(outputID utxo.OutputID) devnetvm.Output
- // GetOutputGoF gets the first unspent outputs of a given address.
- GetOutputGoF(outputID utxo.OutputID) gof.GradeOfFinality
- // BroadcastFaucetRequest requests funds from the faucet and returns the faucet request message ID.
+ // GetOutputConfirmationState gets the first unspent outputs of a given address.
+ GetOutputConfirmationState(outputID utxo.OutputID) confirmation.State
+ // BroadcastFaucetRequest requests funds from the faucet and returns the faucet request block ID.
BroadcastFaucetRequest(address string) error
// GetTransactionOutputs returns the outputs the transaction created.
GetTransactionOutputs(txID string) (outputs devnetvm.Outputs, err error)
@@ -232,7 +232,7 @@ func (c *WebClient) SleepRateSetterEstimate() (err error) {
return nil
}
-// BroadcastFaucetRequest requests funds from the faucet and returns the faucet request message ID.
+// BroadcastFaucetRequest requests funds from the faucet and returns the faucet request block ID.
func (c *WebClient) BroadcastFaucetRequest(address string) (err error) {
_, err = c.api.BroadcastFaucetRequest(address, -1)
return
@@ -256,8 +256,8 @@ func (c *WebClient) PostTransaction(tx *devnetvm.Transaction) (txID utxo.Transac
return
}
-// PostData sends the given data (payload) by creating a message in the backend.
-func (c *WebClient) PostData(data []byte) (msgID string, err error) {
+// PostData sends the given data (payload) by creating a block in the backend.
+func (c *WebClient) PostData(data []byte) (blkID string, err error) {
resp, err := c.api.Data(data)
if err != nil {
return
@@ -288,14 +288,14 @@ func (c *WebClient) GetUnspentOutputForAddress(addr devnetvm.Address) *jsonmodel
return nil
}
-// GetOutputGoF gets the first unspent outputs of a given address.
-func (c *WebClient) GetOutputGoF(outputID utxo.OutputID) gof.GradeOfFinality {
+// GetOutputConfirmationState gets the first unspent outputs of a given address.
+func (c *WebClient) GetOutputConfirmationState(outputID utxo.OutputID) confirmation.State {
res, err := c.api.GetOutputMetadata(outputID.Base58())
if err != nil {
- return gof.None
+ return confirmation.Pending
}
- return res.GradeOfFinality
+ return res.ConfirmationState
}
// GetOutput gets the output of a given outputID.
@@ -308,13 +308,13 @@ func (c *WebClient) GetOutput(outputID utxo.OutputID) devnetvm.Output {
return output
}
-// GetTransactionGoF returns the GoF of a given transaction ID.
-func (c *WebClient) GetTransactionGoF(txID string) gof.GradeOfFinality {
+// GetTransactionConfirmationState returns the ConfirmationState of a given transaction ID.
+func (c *WebClient) GetTransactionConfirmationState(txID string) confirmation.State {
resp, err := c.api.GetTransactionMetadata(txID)
if err != nil {
- return gof.None
+ return confirmation.Pending
}
- return resp.GradeOfFinality
+ return resp.ConfirmationState
}
// GetTransactionOutputs returns the outputs the transaction created.
diff --git a/client/evilwallet/customscenarios.go b/client/evilwallet/customscenarios.go
index ac0d3ab5ab..161f37fc73 100644
--- a/client/evilwallet/customscenarios.go
+++ b/client/evilwallet/customscenarios.go
@@ -75,7 +75,8 @@ func NSpendBatch(nSpent int) EvilBatch {
scenarioAlias = append(scenarioAlias,
ScenarioAlias{
Inputs: []string{strconv.Itoa(inputStartNum)},
- Outputs: []string{strconv.Itoa(i)}},
+ Outputs: []string{strconv.Itoa(i)},
+ },
)
}
conflictSlice = append(conflictSlice, scenarioAlias)
@@ -136,7 +137,7 @@ func Scenario3() EvilBatch {
}
}
-// Scenario4 is a reflection of ledgerstate unit test for branch confirmation - packages/ledgerstate/ledgerstate_test_SetBranchConfirmed.png
+// Scenario4 is a reflection of ledgerstate unit test for conflict confirmation - packages/ledgerstate/ledgerstate_test_SetConflictConfirmed.png
func Scenario4() EvilBatch {
return EvilBatch{
[]ScenarioAlias{
diff --git a/client/evilwallet/evilwallet.go b/client/evilwallet/evilwallet.go
index d63b3f7b4c..9bc0c2e202 100644
--- a/client/evilwallet/evilwallet.go
+++ b/client/evilwallet/evilwallet.go
@@ -15,8 +15,6 @@ import (
)
const (
- // GoFConfirmed defines the grade of finality that is considered confirmed.
- GoFConfirmed = 3
// FaucetRequestSplitNumber defines the number of outputs to split from a faucet request.
FaucetRequestSplitNumber = 100
faucetTokensPerRequest = 1000000
@@ -32,10 +30,12 @@ const (
maxGoroutines = 5
)
-var defaultClientsURLs = []string{"http://localhost:8080", "http://localhost:8090"}
-var faucetBalance = devnetvm.NewColoredBalances(map[devnetvm.Color]uint64{
- devnetvm.ColorIOTA: uint64(faucetTokensPerRequest),
-})
+var (
+ defaultClientsURLs = []string{"http://localhost:8080", "http://localhost:8090"}
+ faucetBalance = devnetvm.NewColoredBalances(map[devnetvm.Color]uint64{
+ devnetvm.ColorIOTA: uint64(faucetTokensPerRequest),
+ })
+)
// region EvilWallet ///////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -465,7 +465,8 @@ func (e *EvilWallet) prepareInputs(buildOptions *Options) (inputs []devnetvm.Inp
// prepareOutputs creates outputs for different scenarios, if no aliases were provided, new empty outputs are created from buildOptions.outputs balances.
func (e *EvilWallet) prepareOutputs(buildOptions *Options, tempWallet *Wallet) (outputs []devnetvm.Output,
- addrAliasMap map[devnetvm.Address]string, tempAddresses map[devnetvm.Address]types.Empty, err error) {
+ addrAliasMap map[devnetvm.Address]string, tempAddresses map[devnetvm.Address]types.Empty, err error,
+) {
if buildOptions.areOutputsProvidedWithoutAliases() {
for _, balance := range buildOptions.outputs {
output := devnetvm.NewSigLockedColoredOutput(balance, buildOptions.outputWallet.Address().Address())
@@ -528,7 +529,8 @@ func (e *EvilWallet) useFreshIfInputWalletNotProvided(buildOptions *Options) (*W
// that indicates which outputs should be saved to the outputWallet.All other outputs are created with temporary wallet,
// and their addresses are stored in tempAddresses.
func (e *EvilWallet) matchOutputsWithAliases(buildOptions *Options, tempWallet *Wallet) (outputs []devnetvm.Output,
- addrAliasMap map[devnetvm.Address]string, tempAddresses map[devnetvm.Address]types.Empty, err error) {
+ addrAliasMap map[devnetvm.Address]string, tempAddresses map[devnetvm.Address]types.Empty, err error,
+) {
err = e.updateOutputBalances(buildOptions)
if err != nil {
return nil, nil, nil, err
@@ -641,7 +643,6 @@ func (e *EvilWallet) updateOutputBalances(buildOptions *Options) (err error) {
return true
})
}
-
}
balances := SplitBalanceEqually(len(buildOptions.outputs)+len(buildOptions.aliasOutputs), totalBalance)
i := 0
diff --git a/client/evilwallet/options.go b/client/evilwallet/options.go
index bf72db907c..a7502ee06b 100644
--- a/client/evilwallet/options.go
+++ b/client/evilwallet/options.go
@@ -13,20 +13,20 @@ import (
// region Options ///////////////////////////////////////////////////////////////////////////
-// Options is a struct that represents a collection of options that can be set when creating a message
+// Options is a struct that represents a collection of options that can be set when creating a block
type Options struct {
- aliasInputs map[string]types.Empty
- inputs []utxo.OutputID
- aliasOutputs map[string]*devnetvm.ColoredBalances
- outputs []*devnetvm.ColoredBalances
- inputWallet *Wallet
- outputWallet *Wallet
- outputBatchAliases map[string]types.Empty
- reuse bool
- issuingTime time.Time
- reattachmentMessageAlias string
- sequenceNumber uint64
- overrideSequenceNumber bool
+ aliasInputs map[string]types.Empty
+ inputs []utxo.OutputID
+ aliasOutputs map[string]*devnetvm.ColoredBalances
+ outputs []*devnetvm.ColoredBalances
+ inputWallet *Wallet
+ outputWallet *Wallet
+ outputBatchAliases map[string]types.Empty
+ reuse bool
+ issuingTime time.Time
+ reattachmentBlockAlias string
+ sequenceNumber uint64
+ overrideSequenceNumber bool
}
type OutputOption struct {
@@ -65,7 +65,7 @@ func NewOptions(options ...Option) (option *Options, err error) {
return
}
-// Option is the type that is used for options that can be passed into the CreateMessage method to configure its
+// Option is the type that is used for options that can be passed into the CreateBlock method to configure its
// behavior.
type Option func(*Options)
@@ -142,7 +142,7 @@ func WithInputs(inputs interface{}) Option {
}
}
-// WithOutput returns an Option that is used to define a non-colored Output for the Transaction in the Message.
+// WithOutput returns an Option that is used to define a non-colored Output for the Transaction in the Block.
func WithOutput(output *OutputOption) Option {
return func(options *Options) {
if output.aliasName != "" {
@@ -157,7 +157,7 @@ func WithOutput(output *OutputOption) Option {
}
}
-// WithOutputs returns an Option that is used to define a non-colored Outputs for the Transaction in the Message.
+// WithOutputs returns an Option that is used to define a non-colored Outputs for the Transaction in the Block.
func WithOutputs(outputs []*OutputOption) Option {
return func(options *Options) {
for _, output := range outputs {
@@ -174,35 +174,35 @@ func WithOutputs(outputs []*OutputOption) Option {
}
}
-// WithIssuer returns a MessageOption that is used to define the inputWallet of the Message.
+// WithIssuer returns a BlockOption that is used to define the inputWallet of the Block.
func WithIssuer(issuer *Wallet) Option {
return func(options *Options) {
options.inputWallet = issuer
}
}
-// WithOutputWallet returns a MessageOption that is used to define the inputWallet of the Message.
+// WithOutputWallet returns a BlockOption that is used to define the inputWallet of the Block.
func WithOutputWallet(wallet *Wallet) Option {
return func(options *Options) {
options.outputWallet = wallet
}
}
-// WithOutputBatchAliases returns a MessageOption that is used to determine which outputs should be added to the outWallet.
+// WithOutputBatchAliases returns a BlockOption that is used to determine which outputs should be added to the outWallet.
func WithOutputBatchAliases(outputAliases map[string]types.Empty) Option {
return func(options *Options) {
options.outputBatchAliases = outputAliases
}
}
-// WithReuseOutputs returns a MessageOption that is used to enable deep spamming with Reuse wallet outputs.
+// WithReuseOutputs returns a BlockOption that is used to enable deep spamming with Reuse wallet outputs.
func WithReuseOutputs() Option {
return func(options *Options) {
options.reuse = true
}
}
-// WithIssuingTime returns a MessageOption that is used to set issuing time of the Message.
+// WithIssuingTime returns a BlockOption that is used to set issuing time of the Block.
func WithIssuingTime(issuingTime time.Time) Option {
return func(options *Options) {
options.issuingTime = issuingTime
diff --git a/client/evilwallet/output_manager.go b/client/evilwallet/output_manager.go
index 95236d9761..d8f0c3b822 100644
--- a/client/evilwallet/output_manager.go
+++ b/client/evilwallet/output_manager.go
@@ -119,7 +119,7 @@ func (o *OutputManager) Track(outputIDs []utxo.OutputID) (allConfirmed bool) {
wg.Add(1)
go func(id utxo.OutputID, allConfirmed bool) {
defer wg.Done()
- ok := o.AwaitOutputToBeConfirmed(id, awaitOutputToBeConfirmed)
+ ok := o.AwaitOutputToBeAccepted(id, awaitOutputToBeConfirmed)
if !ok {
allConfirmed = false
return
@@ -234,21 +234,21 @@ func (o *OutputManager) AwaitWalletOutputsToBeConfirmed(wallet *Wallet) {
wg.Wait()
}
-// AwaitOutputToBeConfirmed awaits for output from a provided outputID is confirmed. Timeout is waitFor.
+// AwaitOutputToBeAccepted awaits for output from a provided outputID is accepted. Timeout is waitFor.
// Useful when we have only an address and no transactionID, e.g. faucet funds request.
-func (o *OutputManager) AwaitOutputToBeConfirmed(outputID utxo.OutputID, waitFor time.Duration) (confirmed bool) {
+func (o *OutputManager) AwaitOutputToBeAccepted(outputID utxo.OutputID, waitFor time.Duration) (accepted bool) {
s := time.Now()
clt := o.connector.GetClient()
- confirmed = false
+ accepted = false
for ; time.Since(s) < waitFor; time.Sleep(awaitConfirmationSleep) {
- gof := clt.GetOutputGoF(outputID)
- if gof == GoFConfirmed {
- confirmed = true
+ confirmationState := clt.GetOutputConfirmationState(outputID)
+ if confirmationState.IsAccepted() {
+ accepted = true
break
}
}
- return confirmed
+ return accepted
}
// AwaitTransactionsConfirmation awaits for transaction confirmation and updates wallet with outputIDs.
@@ -264,7 +264,7 @@ func (o *OutputManager) AwaitTransactionsConfirmation(txIDs []string, maxGorouti
defer func() {
<-semaphore
}()
- err := o.AwaitTransactionToBeConfirmed(txID, waitForConfirmation)
+ err := o.AwaitTransactionToBeAccepted(txID, waitForConfirmation)
if err != nil {
return
}
@@ -273,19 +273,19 @@ func (o *OutputManager) AwaitTransactionsConfirmation(txIDs []string, maxGorouti
wg.Wait()
}
-// AwaitTransactionToBeConfirmed awaits for confirmation of a single transaction.
-func (o *OutputManager) AwaitTransactionToBeConfirmed(txID string, waitFor time.Duration) error {
+// AwaitTransactionToBeAccepted awaits for acceptance of a single transaction.
+func (o *OutputManager) AwaitTransactionToBeAccepted(txID string, waitFor time.Duration) error {
s := time.Now()
clt := o.connector.GetClient()
- var confirmed bool
+ var accepted bool
for ; time.Since(s) < waitFor; time.Sleep(awaitConfirmationSleep) {
- if gof := clt.GetTransactionGoF(txID); gof == GoFConfirmed {
- confirmed = true
+ if confirmationState := clt.GetTransactionConfirmationState(txID); confirmationState.IsAccepted() {
+ accepted = true
break
}
}
- if !confirmed {
- return fmt.Errorf("transaction %s not confirmed in time", txID)
+ if !accepted {
+ return fmt.Errorf("transaction %s not accepted in time", txID)
}
return nil
}
diff --git a/client/evilwallet/wallets.go b/client/evilwallet/wallets.go
index 5ba9068f23..1a2b68f013 100644
--- a/client/evilwallet/wallets.go
+++ b/client/evilwallet/wallets.go
@@ -135,7 +135,6 @@ func (w *Wallets) addWallet(wallet *Wallet) {
defer w.mu.Unlock()
w.wallets[wallet.ID] = wallet
-
}
// addReuseWallet stores newly created wallet.
diff --git a/client/faucet.go b/client/faucet.go
index 2014a7d3c5..c05d6e746b 100644
--- a/client/faucet.go
+++ b/client/faucet.go
@@ -24,7 +24,7 @@ var (
powWorker = pow.New(1)
)
-// BroadcastFaucetRequest requests funds from faucet nodes by sending a faucet request payload message.
+// BroadcastFaucetRequest requests funds from faucet nodes by sending a faucet request payload block.
func (api *GoShimmerAPI) BroadcastFaucetRequest(base58EncodedAddr string, powTarget int, pledgeIDs ...string) (*jsonmodels.FaucetRequestResponse, error) {
var aManaPledgeID identity.ID
var cManaPledgeID identity.ID
diff --git a/client/ledgerstate.go b/client/ledgerstate.go
index e3f55c904f..bd8ca19834 100644
--- a/client/ledgerstate.go
+++ b/client/ledgerstate.go
@@ -10,7 +10,7 @@ import (
const (
// basic routes.
routeGetAddresses = "ledgerstate/addresses/"
- routeGetBranches = "ledgerstate/branches/"
+ routeGetConflicts = "ledgerstate/conflicts/"
routeGetOutputs = "ledgerstate/outputs/"
routeGetTransactions = "ledgerstate/transactions/"
routePostTransactions = "ledgerstate/transactions"
@@ -58,44 +58,44 @@ func (api *GoShimmerAPI) PostAddressUnspentOutputs(base58EncodedAddresses []stri
return res, nil
}
-// GetBranch gets the branch information.
-func (api *GoShimmerAPI) GetBranch(base58EncodedBranchID string) (*jsonmodels.Branch, error) {
- res := &jsonmodels.Branch{}
+// GetConflict gets the conflict information.
+func (api *GoShimmerAPI) GetConflict(base58EncodedConflictID string) (*jsonmodels.Conflict, error) {
+ res := &jsonmodels.Conflict{}
if err := api.do(http.MethodGet, func() string {
- return strings.Join([]string{routeGetBranches, base58EncodedBranchID}, "")
+ return strings.Join([]string{routeGetConflicts, base58EncodedConflictID}, "")
}(), nil, res); err != nil {
return nil, err
}
return res, nil
}
-// GetBranchChildren gets the children of a branch.
-func (api *GoShimmerAPI) GetBranchChildren(base58EncodedBranchID string) (*jsonmodels.GetBranchChildrenResponse, error) {
- res := &jsonmodels.GetBranchChildrenResponse{}
+// GetConflictChildren gets the children of a conflict.
+func (api *GoShimmerAPI) GetConflictChildren(base58EncodedConflictID string) (*jsonmodels.GetConflictChildrenResponse, error) {
+ res := &jsonmodels.GetConflictChildrenResponse{}
if err := api.do(http.MethodGet, func() string {
- return strings.Join([]string{routeGetBranches, base58EncodedBranchID, pathChildren}, "")
+ return strings.Join([]string{routeGetConflicts, base58EncodedConflictID, pathChildren}, "")
}(), nil, res); err != nil {
return nil, err
}
return res, nil
}
-// GetBranchConflicts gets the conflict branches of a branch.
-func (api *GoShimmerAPI) GetBranchConflicts(base58EncodedBranchID string) (*jsonmodels.GetBranchConflictsResponse, error) {
- res := &jsonmodels.GetBranchConflictsResponse{}
+// GetConflictConflicts gets the conflict conflicts of a conflict.
+func (api *GoShimmerAPI) GetConflictConflicts(base58EncodedConflictID string) (*jsonmodels.GetConflictConflictsResponse, error) {
+ res := &jsonmodels.GetConflictConflictsResponse{}
if err := api.do(http.MethodGet, func() string {
- return strings.Join([]string{routeGetBranches, base58EncodedBranchID, pathConflicts}, "")
+ return strings.Join([]string{routeGetConflicts, base58EncodedConflictID, pathConflicts}, "")
}(), nil, res); err != nil {
return nil, err
}
return res, nil
}
-// GetBranchVoters gets the Voters of a branch.
-func (api *GoShimmerAPI) GetBranchVoters(base58EncodedBranchID string) (*jsonmodels.GetBranchVotersResponse, error) {
- res := &jsonmodels.GetBranchVotersResponse{}
+// GetConflictVoters gets the Voters of a conflict.
+func (api *GoShimmerAPI) GetConflictVoters(base58EncodedConflictID string) (*jsonmodels.GetConflictVotersResponse, error) {
+ res := &jsonmodels.GetConflictVotersResponse{}
if err := api.do(http.MethodGet, func() string {
- return strings.Join([]string{routeGetBranches, base58EncodedBranchID, pathVoters}, "")
+ return strings.Join([]string{routeGetConflicts, base58EncodedConflictID, pathVoters}, "")
}(), nil, res); err != nil {
return nil, err
}
@@ -157,7 +157,7 @@ func (api *GoShimmerAPI) GetTransactionMetadata(base58EncodedTransactionID strin
return res, nil
}
-// GetTransactionAttachments gets the attachments (messageIDs) of the transaction corresponding to TransactionID.
+// GetTransactionAttachments gets the attachments (blockIDs) of the transaction corresponding to TransactionID.
func (api *GoShimmerAPI) GetTransactionAttachments(base58EncodedTransactionID string) (*jsonmodels.GetTransactionAttachmentsResponse, error) {
res := &jsonmodels.GetTransactionAttachmentsResponse{}
if err := api.do(http.MethodGet, func() string {
diff --git a/client/mana.go b/client/mana.go
index e2d3280bcd..d43a41874f 100644
--- a/client/mana.go
+++ b/client/mana.go
@@ -16,7 +16,6 @@ const (
routeGetNHighestAccessMana = "mana/access/nhighest"
routeGetNHighestConsensusMana = "mana/consensus/nhighest"
routePending = "mana/pending"
- routePastConsensusVector = "mana/consensus/past"
routePastConsensusEventLogs = "mana/consensus/logs"
routeAllowedPledgeNodeIDs = "mana/allowedManaPledge"
)
@@ -129,25 +128,6 @@ func (api *GoShimmerAPI) GetNHighestConsensusMana(n int) (*jsonmodels.GetNHighes
return res, nil
}
-// GetPastConsensusManaVector returns the consensus base mana vector of a time in the past.
-func (api *GoShimmerAPI) GetPastConsensusManaVector(t int64) (*jsonmodels.PastConsensusManaVectorResponse, error) {
- res := &jsonmodels.PastConsensusManaVectorResponse{}
- if err := api.do(http.MethodGet, routePastConsensusVector,
- &jsonmodels.PastConsensusManaVectorRequest{Timestamp: t}, res); err != nil {
- return nil, err
- }
- return res, nil
-}
-
-// GetPastConsensusVectorMetadata returns the consensus base mana vector metadata of a time in the past.
-func (api *GoShimmerAPI) GetPastConsensusVectorMetadata() (*jsonmodels.PastConsensusVectorMetadataResponse, error) {
- res := &jsonmodels.PastConsensusVectorMetadataResponse{}
- if err := api.do(http.MethodGet, routePastConsensusVector, nil, res); err != nil {
- return nil, err
- }
- return res, nil
-}
-
// GetConsensusEventLogs returns the consensus event logs or the nodeIDs specified.
func (api *GoShimmerAPI) GetConsensusEventLogs(nodeIDs []string) (*jsonmodels.GetEventLogsResponse, error) {
res := &jsonmodels.GetEventLogsResponse{}
diff --git a/client/manualpeering.go b/client/manualpeering.go
index 20ea85033a..38c4040bcc 100644
--- a/client/manualpeering.go
+++ b/client/manualpeering.go
@@ -36,7 +36,8 @@ func (api *GoShimmerAPI) RemoveManualPeers(keys []ed25519.PublicKey) error {
// GetManualPeers gets the list of connected neighbors from the manual peering layer.
func (api *GoShimmerAPI) GetManualPeers(opts ...manualpeering.GetPeersOption) (
- peers []*manualpeering.KnownPeer, err error) {
+ peers []*manualpeering.KnownPeer, err error,
+) {
conf := manualpeering.BuildGetPeersConfig(opts)
if err := api.do(http.MethodGet, routeManualPeers, conf, &peers); err != nil {
return nil, errors.Wrap(err, "failed to get manual connected peers from the API")
diff --git a/client/message.go b/client/message.go
index cc05a2345d..09ee67dc51 100644
--- a/client/message.go
+++ b/client/message.go
@@ -7,18 +7,18 @@ import (
)
const (
- routeMessage = "messages/"
- routeMessageMetadata = "/metadata"
- routeSendPayload = "messages/payload"
+ routeBlock = "blocks/"
+ routeBlockMetadata = "/metadata"
+ routeSendPayload = "blocks/payload"
)
-// GetMessage is the handler for the /messages/:messageID endpoint.
-func (api *GoShimmerAPI) GetMessage(base58EncodedID string) (*jsonmodels.Message, error) {
- res := &jsonmodels.Message{}
+// GetBlock is the handler for the /blocks/:blockID endpoint.
+func (api *GoShimmerAPI) GetBlock(base58EncodedID string) (*jsonmodels.Block, error) {
+ res := &jsonmodels.Block{}
if err := api.do(
http.MethodGet,
- routeMessage+base58EncodedID,
+ routeBlock+base58EncodedID,
nil,
res,
); err != nil {
@@ -28,13 +28,13 @@ func (api *GoShimmerAPI) GetMessage(base58EncodedID string) (*jsonmodels.Message
return res, nil
}
-// GetMessageMetadata is the handler for the /messages/:messageID/metadata endpoint.
-func (api *GoShimmerAPI) GetMessageMetadata(base58EncodedID string) (*jsonmodels.MessageMetadata, error) {
- res := &jsonmodels.MessageMetadata{}
+// GetBlockMetadata is the handler for the /blocks/:blockID/metadata endpoint.
+func (api *GoShimmerAPI) GetBlockMetadata(base58EncodedID string) (*jsonmodels.BlockMetadata, error) {
+ res := &jsonmodels.BlockMetadata{}
if err := api.do(
http.MethodGet,
- routeMessage+base58EncodedID+routeMessageMetadata,
+ routeBlock+base58EncodedID+routeBlockMetadata,
nil,
res,
); err != nil {
@@ -44,7 +44,7 @@ func (api *GoShimmerAPI) GetMessageMetadata(base58EncodedID string) (*jsonmodels
return res, nil
}
-// SendPayload send a message with the given payload.
+// SendPayload send a block with the given payload.
func (api *GoShimmerAPI) SendPayload(payload []byte) (string, error) {
res := &jsonmodels.PostPayloadResponse{}
if err := api.do(http.MethodPost, routeSendPayload,
diff --git a/client/wallet/connector.go b/client/wallet/connector.go
index 1e614133ab..ce21978bd3 100644
--- a/client/wallet/connector.go
+++ b/client/wallet/connector.go
@@ -1,8 +1,9 @@
package wallet
import (
+ "github.com/iotaledger/hive.go/types/confirmation"
+
"github.com/iotaledger/goshimmer/client/wallet/packages/address"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
"github.com/iotaledger/goshimmer/packages/mana"
@@ -15,6 +16,6 @@ type Connector interface {
SendTransaction(transaction *devnetvm.Transaction) (err error)
RequestFaucetFunds(address address.Address, powTarget int) (err error)
GetAllowedPledgeIDs() (pledgeIDMap map[mana.Type][]string, err error)
- GetTransactionGoF(txID utxo.TransactionID) (gradeOfFinality gof.GradeOfFinality, err error)
+ GetTransactionConfirmationState(txID utxo.TransactionID) (confirmationState confirmation.State, err error)
GetUnspentAliasOutput(address *devnetvm.AliasAddress) (output *devnetvm.AliasOutput, err error)
}
diff --git a/client/wallet/output.go b/client/wallet/output.go
index 743d02adda..1a4a40be95 100644
--- a/client/wallet/output.go
+++ b/client/wallet/output.go
@@ -10,10 +10,10 @@ import (
// Output is a wallet specific representation of an output in the IOTA network.
type Output struct {
- Address address.Address
- Object devnetvm.Output
- Metadata OutputMetadata
- GradeOfFinalityReached bool
+ Address address.Address
+ Object devnetvm.Output
+ Metadata OutputMetadata
+ ConfirmationStateReached bool
// Spent is a local wallet-only property that gets set once an output is spent from within the same wallet.
Spent bool
}
diff --git a/client/wallet/output_manager.go b/client/wallet/output_manager.go
index 830e287b1a..f3fa94f2ed 100644
--- a/client/wallet/output_manager.go
+++ b/client/wallet/output_manager.go
@@ -100,7 +100,7 @@ func (o *OutputManager) getOutputs(includePending bool, addresses ...address.Add
continue
}
// discard non-confirmed if includePending is false
- if !includePending && !output.GradeOfFinalityReached {
+ if !includePending && !output.ConfirmationStateReached {
continue
}
diff --git a/client/wallet/packages/delegateoptions/options.go b/client/wallet/packages/delegateoptions/options.go
index 9d4bcea219..1be24fe7d4 100644
--- a/client/wallet/packages/delegateoptions/options.go
+++ b/client/wallet/packages/delegateoptions/options.go
@@ -32,4 +32,4 @@ func (s *DelegateFundsOptions) RequiredFunds() map[devnetvm.Color]uint64 {
}
}
return requiredFunds
-}
\ No newline at end of file
+}
diff --git a/client/wallet/serverstatus.go b/client/wallet/serverstatus.go
index bc88a8c9b8..fce53b852a 100644
--- a/client/wallet/serverstatus.go
+++ b/client/wallet/serverstatus.go
@@ -2,7 +2,7 @@ package wallet
// ServerStatus defines the information of connected server
type ServerStatus struct {
- ID string
- Synced bool
- Version string
+ ID string
+ Synced bool
+ Version string
}
diff --git a/client/wallet/wallet.go b/client/wallet/wallet.go
index ad1dafe35b..abb01af117 100644
--- a/client/wallet/wallet.go
+++ b/client/wallet/wallet.go
@@ -24,7 +24,6 @@ import (
"github.com/iotaledger/goshimmer/client/wallet/packages/sweepnftownedoptions"
"github.com/iotaledger/goshimmer/client/wallet/packages/transfernftoptions"
"github.com/iotaledger/goshimmer/client/wallet/packages/withdrawfromnftoptions"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
"github.com/iotaledger/goshimmer/packages/mana"
@@ -170,7 +169,7 @@ func (wallet *Wallet) SendFunds(options ...sendoptions.SendFundsOption) (tx *dev
return nil, err
}
if sendOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, err
@@ -255,7 +254,7 @@ func (wallet *Wallet) ConsolidateFunds(options ...consolidateoptions.Consolidate
}
txs = append(txs, tx)
if consolidateOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
if err != nil {
return txs, err
}
@@ -337,7 +336,7 @@ func (wallet *Wallet) ClaimConditionalFunds(options ...claimconditionaloptions.C
return nil, err
}
if claimOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return
}
@@ -508,7 +507,7 @@ func (wallet *Wallet) CreateNFT(options ...createnftoptions.CreateNFTOption) (tx
return nil, nil, err
}
if createNFTOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, nftID, err
@@ -628,7 +627,7 @@ func (wallet *Wallet) TransferNFT(options ...transfernftoptions.TransferNFTOptio
}
if transferOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, err
@@ -728,7 +727,7 @@ func (wallet *Wallet) DestroyNFT(options ...destroynftoptions.DestroyNFTOption)
}
if destroyOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, err
@@ -844,7 +843,7 @@ func (wallet *Wallet) WithdrawFundsFromNFT(options ...withdrawfromnftoptions.Wit
}
if withdrawOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, err
@@ -960,7 +959,7 @@ func (wallet *Wallet) DepositFundsToNFT(options ...deposittonftoptions.DepositFu
}
if depositOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, err
@@ -1106,7 +1105,7 @@ func (wallet Wallet) SweepNFTOwnedFunds(options ...sweepnftownedoptions.SweepNFT
}
if sweepOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, err
@@ -1262,7 +1261,7 @@ func (wallet *Wallet) SweepNFTOwnedNFTs(options ...sweepnftownednftsoptions.Swee
}
if sweepOptions.WaitForConfirmation {
- err = wallet.WaitForTxConfirmation(tx.ID())
+ err = wallet.WaitForTxAcceptance(tx.ID())
}
return tx, sweptNFTs, err
}
@@ -1412,7 +1411,7 @@ func (wallet *Wallet) Balance(refresh ...bool) (confirmedBalance, pendingBalance
for _, output := range outputsOnAddress {
// determine target map
var targetMap map[devnetvm.Color]uint64
- if output.GradeOfFinalityReached {
+ if output.ConfirmationStateReached {
targetMap = confirmedBalance
} else {
targetMap = pendingBalance
@@ -1503,7 +1502,7 @@ func (wallet *Wallet) AvailableBalance(refresh ...bool) (confirmedBalance, pendi
for _, output := range outputsOnAddress {
// determine target map
var targetMap map[devnetvm.Color]uint64
- if output.GradeOfFinalityReached {
+ if output.ConfirmationStateReached {
targetMap = confirmedBalance
} else {
targetMap = pendingBalance
@@ -1571,7 +1570,7 @@ func (wallet *Wallet) TimelockedBalances(refresh ...bool) (confirmed, pending Ti
Balance: casted.Balances().Map(),
Time: casted.TimeLock(),
}
- if output.GradeOfFinalityReached {
+ if output.ConfirmationStateReached {
confirmed = append(confirmed, tBal)
} else {
pending = append(pending, tBal)
@@ -1618,7 +1617,7 @@ func (wallet *Wallet) ConditionalBalances(refresh ...bool) (confirmed, pending T
Balance: casted.Balances().Map(),
Time: fallbackDeadline,
}
- if output.GradeOfFinalityReached {
+ if output.ConfirmationStateReached {
confirmed = append(confirmed, cBal)
} else {
pending = append(pending, cBal)
@@ -1666,7 +1665,7 @@ func (wallet *Wallet) AliasBalance(refresh ...bool) (
}
// target maps
var governedAliases, stateControlledAliases map[devnetvm.AliasAddress]*devnetvm.AliasOutput
- if output.GradeOfFinalityReached {
+ if output.ConfirmationStateReached {
governedAliases = confirmedGovernedAliases
stateControlledAliases = confirmedStateControlledAliases
} else {
@@ -1764,7 +1763,7 @@ func (wallet *Wallet) DelegatedAliasBalance(refresh ...bool) (
}
// target maps
var delegatedAliases map[devnetvm.AliasAddress]*devnetvm.AliasOutput
- if output.GradeOfFinalityReached {
+ if output.ConfirmationStateReached {
delegatedAliases = confirmedDelegatedAliases
} else {
delegatedAliases = pendingDelegatedAliases
@@ -1813,19 +1812,19 @@ func (wallet *Wallet) ExportState() []byte {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region WaitForTxConfirmation ////////////////////////////////////////////////////////////////////////////////////////
+// region WaitForTxAcceptance //////////////////////////////////////////////////////////////////////////////////////////
-// WaitForTxConfirmation waits for the given tx to reach a high grade of finalty.
-func (wallet *Wallet) WaitForTxConfirmation(txID utxo.TransactionID) (err error) {
+// WaitForTxAcceptance waits for the given tx to be accepted.
+func (wallet *Wallet) WaitForTxAcceptance(txID utxo.TransactionID) (err error) {
timeoutCounter := time.Duration(0)
for {
time.Sleep(wallet.ConfirmationPollInterval)
timeoutCounter += wallet.ConfirmationPollInterval
- finality, fetchErr := wallet.connector.GetTransactionGoF(txID)
+ confirmationState, fetchErr := wallet.connector.GetTransactionConfirmationState(txID)
if fetchErr != nil {
return fetchErr
}
- if finality == gof.High {
+ if confirmationState.IsAccepted() {
return
}
if timeoutCounter > wallet.ConfirmationTimeout {
diff --git a/client/wallet/webconnector.go b/client/wallet/webconnector.go
index bb3df43795..4c648ade10 100644
--- a/client/wallet/webconnector.go
+++ b/client/wallet/webconnector.go
@@ -2,10 +2,10 @@ package wallet
import (
"github.com/cockroachdb/errors"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/goshimmer/client"
"github.com/iotaledger/goshimmer/client/wallet/packages/address"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
"github.com/iotaledger/goshimmer/packages/mana"
@@ -83,10 +83,10 @@ func (webConnector WebConnector) UnspentOutputs(addresses ...address.Address) (u
}
// build output
walletOutput := &Output{
- Address: addr,
- Object: lOutput,
- GradeOfFinalityReached: output.GradeOfFinality == gof.High,
- Spent: false,
+ Address: addr,
+ Object: lOutput,
+ ConfirmationStateReached: output.ConfirmationState.IsAccepted(),
+ Spent: false,
Metadata: OutputMetadata{
Timestamp: output.Metadata.Timestamp,
},
@@ -118,14 +118,13 @@ func (webConnector WebConnector) SendTransaction(tx *devnetvm.Transaction) (err
return
}
-// GetTransactionGoF fetches the GoF of the transaction.
-func (webConnector WebConnector) GetTransactionGoF(txID utxo.TransactionID) (gradeOfFinality gof.GradeOfFinality, err error) {
+// GetTransactionConfirmationState fetches the ConfirmationState of the transaction.
+func (webConnector WebConnector) GetTransactionConfirmationState(txID utxo.TransactionID) (confirmationState confirmation.State, err error) {
txmeta, err := webConnector.client.GetTransactionMetadata(txID.Base58())
if err != nil {
return
}
- gradeOfFinality = txmeta.GradeOfFinality
- return
+ return txmeta.ConfirmationState, nil
}
// GetAllowedPledgeIDs gets the list of nodeIDs that the node accepts as pledgeIDs in a transaction.
diff --git a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-analysis-server.yml.j2 b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-analysis-server.yml.j2
index 07669871d0..5eec897a98 100644
--- a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-analysis-server.yml.j2
+++ b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-analysis-server.yml.j2
@@ -29,5 +29,5 @@ services:
--metrics.local=false
--metrics.global=true
--node.enablePlugins=analysisServer,analysisDashboard,prometheus
- --node.disablePlugins=activity,analysisClient,chat,consensus,dashboard,faucet,fpc,gossip,firewall,issuer,mana,manualpeering,messageLayer,metrics,networkdelay,portcheck,pow,syncBeaconFollower,webAPIBroadcastDataEndpoint,WebAPIDataEndpoint,WebAPIHealthzEndpoint,WebAPIFaucetRequestEndpoint,webAPIFindTransactionHashesEndpoint,webAPIGetNeighborsEndpoint,webAPIGetTransactionObjectsByHashEndpoint,webAPIGetTransactionTrytesByHashEndpoint,WebAPIInfoEndpoint,WebAPILedgerstateEndpoint,WebAPIMessageEndpoint,WebAPIToolsMessageEndpoint,WebAPIWeightProviderEndpoint,remotelog,remotelogmetrics,DAGsVisualizer,WebAPIRateSetterEndpoint,WebAPISchedulerEndpoint,ManaInitializer
+ --node.disablePlugins=activity,analysisClient,chat,consensus,dashboard,faucet,gossip,firewall,issuer,mana,manualpeering,blockLayer,metrics,networkdelay,portcheck,pow,syncBeaconFollower,webAPIBroadcastDataEndpoint,WebAPIDataEndpoint,WebAPIHealthzEndpoint,WebAPIFaucetRequestEndpoint,webAPIFindTransactionHashesEndpoint,webAPIGetNeighborsEndpoint,webAPIGetTransactionObjectsByHashEndpoint,webAPIGetTransactionTrytesByHashEndpoint,WebAPIInfoEndpoint,WebAPILedgerstateEndpoint,WebAPIBlockEndpoint,WebAPIToolsBlockEndpoint,WebAPIWeightProviderEndpoint,remotelog,remotelogmetrics,DAGsVisualizer,WebAPIRateSetterEndpoint,WebAPISchedulerEndpoint,ManaInitializer,Notarization,EpochStorage,WebAPIEpochEndpoint,BootstrapManager
--logger.level={{ logLevel }}
diff --git a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-entrynode.yml.j2 b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-entrynode.yml.j2
index c516ca22b5..68fcbdea3a 100644
--- a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-entrynode.yml.j2
+++ b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-entrynode.yml.j2
@@ -26,5 +26,5 @@ services:
{% endif %}
--autoPeering.entryNodes=
--analysis.client.serverAddress=
- --node.disablePlugins=activity,analysisClient,chat,consensus,dashboard,faucet,fpc,gossip,firewall,issuer,mana,manualpeering,messageLayer,metrics,networkdelay,portcheck,pow,syncBeaconFollower,webAPIBroadcastDataEndpoint,WebAPIDataEndpoint,WebAPIHealthzEndpoint,WebAPIFaucetRequestEndpoint,webAPIFindTransactionHashesEndpoint,webAPIGetNeighborsEndpoint,webAPIGetTransactionObjectsByHashEndpoint,webAPIGetTransactionTrytesByHashEndpoint,WebAPIInfoEndpoint,WebAPILedgerstateEndpoint,WebAPIMessageEndpoint,WebAPIToolsMessageEndpoint,WebAPIWeightProviderEndpoint,remotelog,remotelogmetrics,DAGsVisualizer,WebAPIRateSetterEndpoint,WebAPISchedulerEndpoint,ManaInitializer
+ --node.disablePlugins=activity,analysisClient,chat,consensus,dashboard,faucet,gossip,firewall,issuer,mana,manualpeering,blockLayer,metrics,networkdelay,portcheck,pow,syncBeaconFollower,webAPIBroadcastDataEndpoint,WebAPIDataEndpoint,WebAPIHealthzEndpoint,WebAPIFaucetRequestEndpoint,webAPIFindTransactionHashesEndpoint,webAPIGetNeighborsEndpoint,webAPIGetTransactionObjectsByHashEndpoint,webAPIGetTransactionTrytesByHashEndpoint,WebAPIInfoEndpoint,WebAPILedgerstateEndpoint,WebAPIBlockEndpoint,WebAPIToolsBlockEndpoint,WebAPIWeightProviderEndpoint,remotelog,remotelogmetrics,DAGsVisualizer,WebAPIRateSetterEndpoint,WebAPISchedulerEndpoint,ManaInitializer,Notarization,EpochStorage,WebAPIEpochEndpoint,BootstrapManager
--logger.level={{ logLevel }}
diff --git a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-goshimmer.yml.j2 b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-goshimmer.yml.j2
index 2446804594..1ed04c4e80 100644
--- a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-goshimmer.yml.j2
+++ b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-goshimmer.yml.j2
@@ -51,7 +51,7 @@ services:
--autoPeering.networkVersion={{ networkVersion }}
{% endif %}
--node.disablePlugins=portcheck,ManaInitializer
- --node.enablePlugins=dashboard,remotelog,networkdelay,prometheus{% if faucet|default(false) %},faucet,WebAPIFaucetEndpoint{% endif %},activity,snapshot,WebAPIToolsMessageEndpoint,"WebAPI tools Endpoint"{% if spammer|default(false) %},spammer{% endif %}
+ --node.enablePlugins=dashboard,remotelog,networkdelay,prometheus{% if faucet|default(false) %},faucet,WebAPIFaucetEndpoint{% endif %},activity,snapshot,WebAPIToolsBlockEndpoint,"WebAPI tools Endpoint"{% if spammer|default(false) %},spammer{% endif %}
--prometheus.bindAddress=0.0.0.0:9311
--activity.broadcastInterval=1s
{% if faucet|default(false) %}
@@ -68,9 +68,9 @@ services:
--logger.remotelog.serverAddress={{ remoteLoggerHost }}:5213
--remotemetrics.metricsLevel=0
{% if faucet|default(false) %}
- --messageLayer.startSynced=false
+ --blockLayer.startSynced=false
{% else %}
- --messageLayer.startSynced=true
+ --blockLayer.startSynced=true
{% endif %}
- --messageLayer.tangleTimeWindow=10m
- --messageLayer.snapshot.genesisNode={{ bootstrapNodePubKey }}
+ --blockLayer.tangleTimeWindow=10m
+ --blockLayer.snapshot.genesisNode={{ bootstrapNodePubKey }}
diff --git a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-public-node.yml.j2 b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-public-node.yml.j2
index 9b92c2d994..dbf288b568 100644
--- a/deploy/ansible/roles/goshimmer-node/templates/docker-compose-public-node.yml.j2
+++ b/deploy/ansible/roles/goshimmer-node/templates/docker-compose-public-node.yml.j2
@@ -56,9 +56,9 @@ services:
--logger.remotelog.serverAddress={{ remoteLoggerHost }}:5213
--remotemetrics.metricsLevel=0
{% if faucet|default(false) %}
- --messageLayer.startSynced=false
+ --blockLayer.startSynced=false
{% else %}
- --messageLayer.startSynced=true
+ --blockLayer.startSynced=true
{% endif %}
- --messageLayer.tangleTimeWindow=10m
- --messageLayer.snapshot.genesisNode={{ bootstrapNodePubKey }}
+ --blockLayer.tangleTimeWindow=10m
+ --blockLayer.snapshot.genesisNode={{ bootstrapNodePubKey }}
diff --git a/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/goshimmer_monitoring.json b/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/goshimmer_monitoring.json
index d19cab12f4..3ee15966db 100644
--- a/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/goshimmer_monitoring.json
+++ b/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/goshimmer_monitoring.json
@@ -56,7 +56,7 @@
"for": "5m",
"frequency": "1m",
"handler": 1,
- "message": "Some of the GoShimmer instances are out of sync. Please fix ASAP! Below is the list of the nodes currently out of sync.",
+ "block": "Some of the GoShimmer instances are out of sync. Please fix ASAP! Below is the list of the nodes currently out of sync.",
"name": "GoShimmer Sync Monitoring",
"noDataState": "alerting",
"notifications": []
@@ -188,7 +188,7 @@
"for": "5m",
"frequency": "1m",
"handler": 1,
- "message": "Some of the GoShimmer instances went down. Please fix ASAP! Below is the list of the nodes currently down.",
+ "block": "Some of the GoShimmer instances went down. Please fix ASAP! Below is the list of the nodes currently down.",
"name": "GoShimmer Node Monitoring alert",
"noDataState": "alerting",
"notifications": []
diff --git a/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/local_dashboard.json b/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/local_dashboard.json
index 8949aa6d33..2ba0d523db 100755
--- a/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/local_dashboard.json
+++ b/deploy/ansible/roles/metrics/files/grafana/provisioning/dashboards/local_dashboard.json
@@ -313,7 +313,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Aggregated MPS for all message types in the communication layer.",
+ "description": "Aggregated BPS for all block types in the communication layer.",
"fieldConfig": {
"defaults": {
"mappings": [],
@@ -330,7 +330,7 @@
}
]
},
- "unit": "MPS"
+ "unit": "BPS"
},
"overrides": []
},
@@ -360,13 +360,13 @@
"targets": [
{
"exemplar": true,
- "expr": "irate(tangle_messages_per_component_count{component=\"Store\",instance=\"$instance\"}[5m])",
+ "expr": "irate(tangle_blocks_per_component_count{component=\"Store\",instance=\"$instance\"}[5m])",
"interval": "",
- "legendFormat": "Total MPS",
+ "legendFormat": "Total BPS",
"refId": "A"
}
],
- "title": "Total MPS",
+ "title": "Total BPS",
"type": "stat"
},
{
@@ -791,16 +791,16 @@
"targets": [
{
"exemplar": true,
- "expr": "irate(tangle_messages_per_type_count{instance=\"$instance\"}[5m])",
+ "expr": "irate(tangle_blocks_per_type_count{instance=\"$instance\"}[5m])",
"hide": false,
"interval": "",
- "legendFormat": "Message Per Second {{message_type}}",
+ "legendFormat": "Block Per Second {{block_type}}",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Message Per Second Per Type",
+ "title": "Block Per Second Per Type",
"tooltip": {
"shared": true,
"sort": 0,
@@ -814,7 +814,7 @@
},
"yaxes": [
{
- "format": "MPS",
+ "format": "BPS",
"logBase": 1,
"min": "0",
"show": true
@@ -881,15 +881,15 @@
"targets": [
{
"exemplar": true,
- "expr": "irate(tangle_messages_per_component_count{instance=\"$instance\"}[5m])",
+ "expr": "irate(tangle_blocks_per_component_count{instance=\"$instance\"}[5m])",
"interval": "",
- "legendFormat": "{{component}} MPS",
+ "legendFormat": "{{component}} BPS",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Message Per Second Per Component",
+ "title": "Block Per Second Per Component",
"tooltip": {
"shared": true,
"sort": 0,
@@ -903,7 +903,7 @@
},
"yaxes": [
{
- "format": "MPS",
+ "format": "BPS",
"logBase": 1,
"min": "0",
"show": true
@@ -927,7 +927,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Shows tips in message and value layer.",
+ "description": "Shows tips in block and value layer.",
"fieldConfig": {
"defaults": {
"links": []
@@ -970,9 +970,9 @@
"steppedLine": false,
"targets": [
{
- "expr": "tangle_message_tips_count{instance=\"$instance\"}",
+ "expr": "tangle_block_tips_count{instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Message Layer Tips",
+ "legendFormat": "Block Layer Tips",
"refId": "A"
}
],
@@ -1344,7 +1344,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Number of messages requested through solidification. ",
+ "description": "Number of blocks requested through solidification. ",
"fieldConfig": {
"defaults": {
"links": []
@@ -1388,15 +1388,15 @@
"targets": [
{
"exemplar": true,
- "expr": "irate(tangle_message_solidification_missing_message_count{instance=\"$instance\"}[5m])",
+ "expr": "irate(tangle_block_solidification_missing_block_count{instance=\"$instance\"}[5m])",
"interval": "",
- "legendFormat": "Solidifier-requested messages",
+ "legendFormat": "Solidifier-requested blocks",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Solidifier-requested messages per second",
+ "title": "Solidifier-requested blocks per second",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1433,7 +1433,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Number of messages requested through solidification. ",
+ "description": "Number of blocks requested through solidification. ",
"fieldConfig": {
"defaults": {
"links": []
@@ -1477,15 +1477,15 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_message_solidification_missing_message_count{instance=\"$instance\"}",
+ "expr": "tangle_block_solidification_missing_block_count{instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Solidifier-requested messages",
+ "legendFormat": "Solidifier-requested blocks",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Solidifier-requested messages total",
+ "title": "Solidifier-requested blocks total",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1700,7 +1700,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Number of messages in missingMessageStore. These are the message the node knows it doesn't have and tries to requests them.",
+ "description": "Number of blocks in missingBlockStore. These are the block the node knows it doesn't have and tries to requests them.",
"fieldConfig": {
"defaults": {
"links": []
@@ -1743,15 +1743,15 @@
"steppedLine": false,
"targets": [
{
- "expr": "tangle_message_missing_count_db{instance=\"$instance\"}",
+ "expr": "tangle_block_missing_count_db{instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Missing Messages",
+ "legendFormat": "Missing Blocks",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Missing Messages",
+ "title": "Missing Blocks",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1788,7 +1788,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Describes the amount of total, solid and not solid messages in the node's database.",
+ "description": "Describes the amount of total, solid and not solid blocks in the node's database.",
"fieldConfig": {
"defaults": {
"links": []
@@ -1834,29 +1834,29 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_messages_per_component_count{component=\"Solidifier\",instance=\"$instance\"}",
+ "expr": "tangle_blocks_per_component_count{component=\"Solidifier\",instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Solid Messages in DB",
+ "legendFormat": "Solid Blocks in DB",
"refId": "A"
},
{
"exemplar": true,
- "expr": "tangle_messages_per_component_count{component=\"Store\",instance=\"$instance\"} - tangle_messages_per_component_count{component=\"Solidifier\",instance=\"$instance\"}",
+ "expr": "tangle_blocks_per_component_count{component=\"Store\",instance=\"$instance\"} - tangle_blocks_per_component_count{component=\"Solidifier\",instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Not Solid Messages in DB",
+ "legendFormat": "Not Solid Blocks in DB",
"refId": "B"
},
{
"exemplar": true,
- "expr": "tangle_messages_per_component_count{component=\"Store\",instance=\"$instance\"}",
+ "expr": "tangle_blocks_per_component_count{component=\"Store\",instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Total Messages in DB",
+ "legendFormat": "Total Blocks in DB",
"refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Messages in Database",
+ "title": "Blocks in Database",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1894,7 +1894,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Number of messages currently requested by the message tangle.",
+ "description": "Number of blocks currently requested by the block tangle.",
"fieldConfig": {
"defaults": {
"links": []
@@ -1938,15 +1938,15 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_message_request_queue_size{instance=\"$instance\"}",
+ "expr": "tangle_block_request_queue_size{instance=\"$instance\"}",
"interval": "",
- "legendFormat": "Message Request Queue Size",
+ "legendFormat": "Block Request Queue Size",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Message Request Queue Size",
+ "title": "Block Request Queue Size",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1985,7 +1985,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Average time it takes to solidify messages.",
+ "description": "Average time it takes to solidify blocks.",
"fieldConfig": {
"defaults": {
"links": [],
@@ -2030,7 +2030,7 @@
"targets": [
{
"exemplar": true,
- "expr": "rate(tangle_message_total_time_since_received{component=\"Solidifier\",instance=\"$instance\"}[5m])/rate(tangle_messages_per_component_count{component=\"Solidifier\",instance=\"$instance\"}[5m])",
+ "expr": "rate(tangle_block_total_time_since_received{component=\"Solidifier\",instance=\"$instance\"}[5m])/rate(tangle_blocks_per_component_count{component=\"Solidifier\",instance=\"$instance\"}[5m])",
"interval": "",
"legendFormat": "Avg Solidification Time",
"refId": "A"
@@ -2468,7 +2468,7 @@
"type": "stat"
}
],
- "title": "MPS, Autopeering, Traffic, Resources",
+ "title": "BPS, Autopeering, Traffic, Resources",
"type": "row"
},
{
@@ -3975,7 +3975,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Indicates an average time it takes for a message to be finalized since it is received by the node.",
+ "description": "Indicates an average time it takes for a block to be finalized since it is received by the node.",
"fieldConfig": {
"defaults": {
"unit": "ms"
@@ -4019,16 +4019,16 @@
"targets": [
{
"exemplar": true,
- "expr": "irate(tangle_message_finalization_time_since_received{instance=\"$instance\"}[1m]) / irate(tangle_message_finalized_count{instance=\"$instance\"}[1m])",
+ "expr": "irate(tangle_block_finalization_time_since_received{instance=\"$instance\"}[1m]) / irate(tangle_block_finalized_count{instance=\"$instance\"}[1m])",
"interval": "",
- "legendFormat": "{{messageType}} avg. finalization time",
+ "legendFormat": "{{blockType}} avg. finalization time",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Message finalization time",
+ "title": "Block finalization time",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4067,7 +4067,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Indicates an average time it takes for a message to be finalized since it is received by the node.",
+ "description": "Indicates an average time it takes for a block to be finalized since it is received by the node.",
"fieldConfig": {
"defaults": {
"unit": "ms"
@@ -4111,16 +4111,16 @@
"targets": [
{
"exemplar": true,
- "expr": "irate(tangle_branch_confirmation_time{instance=\"$instance\"}[30s]) / rate(tangle_branch_confirmed_count{instance=\"$instance\"}[30s])",
+ "expr": "irate(tangle_conflict_confirmation_time{instance=\"$instance\"}[30s]) / rate(tangle_conflict_confirmed_count{instance=\"$instance\"}[30s])",
"interval": "",
- "legendFormat": "Average branch confirmation time",
+ "legendFormat": "Average conflict confirmation time",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Branch finalization time",
+ "title": "Conflict finalization time",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4200,7 +4200,7 @@
"targets": [
{
"exemplar": true,
- "expr": "sum(irate(tangle_messages_parent_count_per_type{instance=\"$instance\"}[1m])) by (type,instance) / on(instance) group_left() sum(irate(tangle_message_finalized_count{instance=\"$instance\"}[1m])) by (instance)",
+ "expr": "sum(irate(tangle_blocks_parent_count_per_type{instance=\"$instance\"}[1m])) by (type,instance) / on(instance) group_left() sum(irate(tangle_block_finalized_count{instance=\"$instance\"}[1m])) by (instance)",
"hide": false,
"interval": "",
"legendFormat": "{{type}}",
@@ -4289,14 +4289,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_branch_total_count_db{instance=\"$instance\"}",
+ "expr": "tangle_conflict_total_count_db{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Total number of branches",
+ "title": "Total number of conflicts",
"type": "stat"
},
{
@@ -4351,14 +4351,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_branch_total_count_db{instance=\"$instance\"} - tangle_branch_finalized_count_db{instance=\"$instance\"}",
+ "expr": "tangle_conflict_total_count_db{instance=\"$instance\"} - tangle_conflict_finalized_count_db{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Total number of unresolved branches",
+ "title": "Total number of unresolved conflicts",
"type": "stat"
},
{
@@ -4413,14 +4413,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_branch_finalized_count_db{instance=\"$instance\"}",
+ "expr": "tangle_conflict_finalized_count_db{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Total number of finalized branches",
+ "title": "Total number of finalized conflicts",
"type": "stat"
},
{
@@ -4475,14 +4475,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_branch_confirmed_count{instance=\"$instance\"}",
+ "expr": "tangle_conflict_confirmed_count{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Total number of confirmed branches",
+ "title": "Total number of confirmed conflicts",
"type": "stat"
}
],
@@ -4570,7 +4570,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Rate at which scheduler processes messages from the buffer",
+ "description": "Rate at which scheduler processes blocks from the buffer",
"fieldConfig": {
"defaults": {
"color": {
@@ -4675,14 +4675,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_messages_per_component_count{component=\"Scheduler\",instance=\"$instance\"}",
+ "expr": "tangle_blocks_per_component_count{component=\"Scheduler\",instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Scheduled messages",
+ "title": "Scheduled blocks",
"type": "stat"
},
{
@@ -4690,7 +4690,7 @@
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
- "description": "Messages skipped by the scheduler, because they were confirmed before. ",
+ "description": "Blocks skipped by the scheduler, because they were confirmed before. ",
"fieldConfig": {
"defaults": {
"color": {
@@ -4736,14 +4736,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_messages_per_component_count{component=\"SchedulerSkipped\",instance=\"$instance\"}",
+ "expr": "tangle_blocks_per_component_count{component=\"SchedulerSkipped\",instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Skipped messages",
+ "title": "Skipped blocks",
"type": "stat"
},
{
@@ -4857,14 +4857,14 @@
"targets": [
{
"exemplar": true,
- "expr": "tangle_messages_per_component_count{component=\"SchedulerDropped\",instance=\"$instance\"}",
+ "expr": "tangle_blocks_per_component_count{component=\"SchedulerDropped\",instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Dropped messages",
+ "title": "Dropped blocks",
"type": "stat"
},
{
@@ -5107,14 +5107,14 @@
"targets": [
{
"exemplar": true,
- "expr": "scheduler_buffer_total_msg_count{instance=\"$instance\"}",
+ "expr": "scheduler_buffer_total_blk_count{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "All messages count",
+ "title": "All blocks count",
"type": "stat"
},
{
@@ -5313,14 +5313,14 @@
"uid": "PBFA97CFB590B2093"
},
"exemplar": false,
- "expr": "scheduler_buffer_total_msg_count{instance=\"$instance\"} - scheduler_buffer_ready_msg_count{instance=\"$instance\"}",
+ "expr": "scheduler_buffer_total_blk_count{instance=\"$instance\"} - scheduler_buffer_ready_blk_count{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Unready messages count",
+ "title": "Unready blocks count",
"type": "stat"
},
{
@@ -5372,14 +5372,14 @@
"targets": [
{
"exemplar": true,
- "expr": "scheduler_buffer_ready_msg_count{instance=\"$instance\"}",
+ "expr": "scheduler_buffer_ready_blk_count{instance=\"$instance\"}",
"interval": "",
"legendFormat": "",
"queryType": "randomWalk",
"refId": "A"
}
],
- "title": "Ready messages count",
+ "title": "Ready blocks count",
"type": "stat"
},
{
diff --git a/deploy/ansible/roles/metrics/templates/logstash/pipeline/logstash.conf.j2 b/deploy/ansible/roles/metrics/templates/logstash/pipeline/logstash.conf.j2
index 612c78ae8d..fcfe917470 100644
--- a/deploy/ansible/roles/metrics/templates/logstash/pipeline/logstash.conf.j2
+++ b/deploy/ansible/roles/metrics/templates/logstash/pipeline/logstash.conf.j2
@@ -15,9 +15,9 @@ filter {
}
json {
- source => "message"
+ source => "block"
target => "log"
- remove_field => ["message"]
+ remove_field => ["block"]
}
}
@@ -41,66 +41,66 @@ output {
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "messageFinalized" {
+ } else if [log][type] == "blockFinalized" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "messagefinalized"
+ ilm_rollover_alias => "blockfinalized"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "branchConfirmation" {
+ } else if [log][type] == "conflictConfirmation" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "branchconfirmation"
+ ilm_rollover_alias => "conflictconfirmation"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "branchCounts" {
+ } else if [log][type] == "conflictCounts" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "branchcounts"
+ ilm_rollover_alias => "conflictcounts"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "messageScheduled" {
+ } else if [log][type] == "blockScheduled" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "messagescheduled"
+ ilm_rollover_alias => "blockscheduled"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "messageDiscarded" {
+ } else if [log][type] == "blockDiscarded" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "messagediscarded"
+ ilm_rollover_alias => "blockdiscarded"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "missingMessage" {
+ } else if [log][type] == "missingBlock" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "missingmessage"
+ ilm_rollover_alias => "missingblock"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
- } else if [log][type] == "missingMessageStored" {
+ } else if [log][type] == "missingBlockStored" {
elasticsearch {
hosts => "elasticsearch:9200"
user => "{{ elkElasticUser }}"
password => "{{ elkElasticPassword }}"
- ilm_rollover_alias => "missingmessagestored"
+ ilm_rollover_alias => "missingblockstored"
ilm_pattern => "000001"
ilm_policy => "logstash-policy"
}
diff --git a/documentation/docs/apis/autopeering.md b/documentation/docs/apis/autopeering.md
index 01a17b673c..caac8832cd 100644
--- a/documentation/docs/apis/autopeering.md
+++ b/documentation/docs/apis/autopeering.md
@@ -48,7 +48,7 @@ curl --location 'http://localhost:8080/autopeering/neighbors?known=1'
#### Client lib - `GetAutopeeringNeighbors`
-Messages can be retrieved via `GetAutopeeringNeighbors(knownPeers bool) (*jsonmodels.GetNeighborsResponse, error)`
+Blocks can be retrieved via `GetAutopeeringNeighbors(knownPeers bool) (*jsonmodels.GetNeighborsResponse, error)`
```go
neighbors, err := goshimAPI.GetAutopeeringNeighbors(false)
if err != nil {
@@ -106,7 +106,7 @@ fmt.Println(string(neighbors))
| `known` | `[]Neighbor` | List of known peers. Only returned when parameter is set. |
| `chosen` | `[]Neighbor` | List of chosen peers. |
| `accepted` | `[]Neighbor` | List of accepted peers. |
-| `error` | `string` | Error message. Omitted if success. |
+| `error` | `string` | Error block. Omitted if success. |
* Type `Neighbor`
diff --git a/documentation/docs/apis/communication.md b/documentation/docs/apis/communication.md
index bbe29b49a0..b6a3f932bd 100644
--- a/documentation/docs/apis/communication.md
+++ b/documentation/docs/apis/communication.md
@@ -1,41 +1,41 @@
---
-description: The communication layer represents the base Tangle layer where so called `Messages` are gossiped around. A `Message` contains payloads, and it is up to upper layers to interpret and derive functionality out of them.
+description: The communication layer represents the base Tangle layer where so called `Blocks` are gossiped around. A `Block` contains payloads, and it is up to upper layers to interpret and derive functionality out of them.
image: /img/logo/goshimmer_light.png
keywords:
- client library
- HTTP API
-- message
-- encoded message id
+- block
+- encoded block id
- consensus
- payload
---
# Communication Layer APIs
-The communication layer represents the base Tangle layer where so called `Messages` are gossiped around. A `Message` contains payloads and it is up to upper layers to interpret and derive functionality out of them.
+The communication layer represents the base Tangle layer where so called `Blocks` are gossiped around. A `Block` contains payloads and it is up to upper layers to interpret and derive functionality out of them.
The API provides the following functions to interact with this primitive layer:
-* [/messages/:messageID](#messagesmessageid)
-* [/messages/:messageID/metadata](#messagesmessageidmetadata)
+* [/blocks/:blockID](#blocksblockid)
+* [/blocks/:blockID/metadata](#blocksblockidmetadata)
* [/data](#data)
-* [/messages/payload](#messagespayload)
+* [/blocks/payload](#blockspayload)
Client lib APIs:
-* [GetMessage()](#client-lib---getmessage)
-* [GetMessageMetadata()](#client-lib---getmessagemetadata)
+* [GetBlock()](#client-lib---getblock)
+* [GetBlockMetadata()](#client-lib---getblockmetadata)
* [Data()](#client-lib---data)
* [SendPayload()](#client-lib---sendpayload)
-## `/messages/:messageID`
+## `/blocks/:blockID`
-Return message from the tangle.
+Return block from the tangle.
### Parameters
-| **Parameter** | `messageID` |
+| **Parameter** | `blockID` |
|--------------------------|----------------|
| **Required or Optional** | required |
-| **Description** | ID of a message to retrieve |
+| **Description** | ID of a block to retrieve |
| **Type** | string |
### Examples
@@ -43,25 +43,25 @@ Return message from the tangle.
#### cURL
```shell
-curl --location --request GET 'http://localhost:8080/messages/:messageID'
+curl --location --request GET 'http://localhost:8080/blocks/:blockID'
```
-where `:messageID` is the base58 encoded message ID, e.g. 4MSkwAPzGwnjCJmTfbpW4z4GRC7HZHZNS33c2JikKXJc.
+where `:blockID` is the base58 encoded block ID, e.g. 4MSkwAPzGwnjCJmTfbpW4z4GRC7HZHZNS33c2JikKXJc.
-#### Client lib - `GetMessage`
+#### Client lib - `GetBlock`
-Messages can be retrieved via `GetMessage(base58EncodedID string) (*jsonmodels.Message, error) `
+Blocks can be retrieved via `GetBlock(base58EncodedID string) (*jsonmodels.Block, error) `
```go
-message, err := goshimAPI.GetMessage(base58EncodedMessageID)
+block, err := goshimAPI.GetBlock(base58EncodedBlockID)
if err != nil {
// return error
}
// will print "Hello GoShimmer World"
-fmt.Println(string(message.Payload))
+fmt.Println(string(block.Payload))
```
-Note that we're getting actual `Message` objects from this call which represent a vertex in the communication layer Tangle. It does not matter what type of payload the message contains, meaning that this will also return messages which contain a transactions or DRNG payloads.
+Note that we're getting actual `Block` objects from this call which represent a vertex in the communication layer Tangle. It does not matter what type of payload the block contains, meaning that this will also return blocks which contain a transactions or DRNG payloads.
### Response Examples
@@ -73,11 +73,11 @@ Note that we're getting actual `Message` objects from this call which represent
"B89koPthm9zDx1p1fbkHwoyC1Buq896Spu3Mx1SmSete"
],
"weakParents": [],
- "strongApprovers": [
+ "strongChildren": [
"4E4ucAA9UTTd1UC6ri4GYaS4dpzEnHPjs5gMEYhpUK8p",
"669BRH69afQ7VfZGmNTMTeh2wnwXGKdBxtUCcRQ9CPzq"
],
- "weakApprovers": [],
+ "weakChildren": [],
"issuerPublicKey": "9DB3j9cWYSuEEtkvanrzqkzCQMdH1FGv3TawJdVbDxkd",
"issuingTime": 1621873309,
"sequenceNumber": 4354,
@@ -91,29 +91,29 @@ Note that we're getting actual `Message` objects from this call which represent
|Return field | Type | Description|
|:-----|:------|:------|
-| `id` | `string` | Message ID. |
-| `strongParents` | `[]string` | List of strong parents' message IDs. |
-| `weakParents` | `[]string` | List of weak parents' message IDs. |
-| `strongApprovers` | `[]string` | List of strong approvers' message IDs. |
-| `weakApprovers` | `[]string` | List of weak approvers' message IDs. |
+| `id` | `string` | Block ID. |
+| `strongParents` | `[]string` | List of strong parents' block IDs. |
+| `weakParents` | `[]string` | List of weak parents' block IDs. |
+| `strongChildren` | `[]string` | List of strong children' block IDs. |
+| `weakChildren` | `[]string` | List of weak children' block IDs. |
| `issuerPublicKey` | `[]string` | Public key of issuing node. |
-| `issuingTime` | `int64` | Time this message was issued |
-| `sequenceNumber` | `uint64` | Message sequence number. |
+| `issuingTime` | `int64` | Time this block was issued |
+| `sequenceNumber` | `uint64` | Block sequence number. |
| `payloadType` | `string` | Payload type. |
-| `payload` | `[]byte` | The contents of the message. |
-| `signature` | `string` | Message signature. |
-| `error` | `string` | Error message. Omitted if success. |
+| `payload` | `[]byte` | The contents of the block. |
+| `signature` | `string` | Block signature. |
+| `error` | `string` | Error block. Omitted if success. |
-## `/messages/:messageID/metadata`
+## `/blocks/:blockID/metadata`
-Return message metadata.
+Return block metadata.
### Parameters
-| **Parameter** | `messageID` |
+| **Parameter** | `blockID` |
|--------------------------|----------------|
| **Required or Optional** | required |
-| **Description** | ID of a message to retrieve |
+| **Description** | ID of a block to retrieve |
| **Type** | string |
@@ -122,21 +122,21 @@ Return message metadata.
#### cURL
```shell
-curl --location --request GET 'http://localhost:8080/messages/:messageID/metadata'
+curl --location --request GET 'http://localhost:8080/blocks/:blockID/metadata'
```
-where `:messageID` is the base58 encoded message ID, e.g. 4MSkwAPzGwnjCJmTfbpW4z4GRC7HZHZNS33c2JikKXJc.
+where `:blockID` is the base58 encoded block ID, e.g. 4MSkwAPzGwnjCJmTfbpW4z4GRC7HZHZNS33c2JikKXJc.
-#### Client lib - `GetMessageMetadata`
+#### Client lib - `GetBlockMetadata`
-Message metadata can be retrieved via `GetMessageMetadata(base58EncodedID string) (*jsonmodels.MessageMetadata, error)`
+Block metadata can be retrieved via `GetBlockMetadata(base58EncodedID string) (*jsonmodels.BlockMetadata, error)`
```go
-message, err := goshimAPI.GetMessageMetadata(base58EncodedMessageID)
+block, err := goshimAPI.GetBlockMetadata(base58EncodedBlockID)
if err != nil {
// return error
}
-// will print whether message is finalized
-fmt.Println(string(message.Finalized))
+// will print whether block is finalized
+fmt.Println(string(block.Finalized))
```
### Response Examples
@@ -159,12 +159,12 @@ fmt.Println(string(message.Finalized))
"lowestIndex": 21904
}
},
- "branchID": "BranchID(MasterBranchID)",
+ "conflictID": "ConflictID(MasterConflictID)",
"scheduled": false,
"booked": true,
"invalid": false,
- "gradeOfFinality": 3,
- "gradeOfFinalityTime": 1621873310
+ "confirmationState": 3,
+ "confirmationStateTime": 1621873310
}
```
@@ -172,26 +172,26 @@ fmt.Println(string(message.Finalized))
|Return field | Type | Description|
|:-----|:------|:------|
-| `id` | `string` | Message ID. |
-| `receivedTime` | `int64` | Time when message was received by the node. |
-| `solid` | `bool` | Flag indicating whether the message is solid. |
-| `solidificationTime` | `int64` | Time when message was solidified by the node. |
-| `structureDetails` | `StructureDetails` | List of weak approvers' message IDs. |
-| `branchID` | `string` | Name of branch that the message is part of. |
-| `scheduled` | `bool` | Flag indicating whether the message is scheduled. |
-| `booked` | `bool` | Flag indicating whether the message is booked. |
-| `eligible` | `bool` | Flag indicating whether the message is eligible. |
-| `invalid` | `bool` | Flag indicating whether the message is invalid. |
-| `finalized` | `bool` | Flag indicating whether the message is finalized. |
-| `finalizedTime` | `string` | Time when message was finalized. |
-| `error` | `string` | Error message. Omitted if success. |
+| `id` | `string` | Block ID. |
+| `receivedTime` | `int64` | Time when block was received by the node. |
+| `solid` | `bool` | Flag indicating whether the block is solid. |
+| `solidificationTime` | `int64` | Time when block was solidified by the node. |
+| `structureDetails` | `StructureDetails` | List of weak children' block IDs. |
+| `conflictID` | `string` | Name of conflict that the block is part of. |
+| `scheduled` | `bool` | Flag indicating whether the block is scheduled. |
+| `booked` | `bool` | Flag indicating whether the block is booked. |
+| `eligible` | `bool` | Flag indicating whether the block is eligible. |
+| `invalid` | `bool` | Flag indicating whether the block is invalid. |
+| `finalized` | `bool` | Flag indicating whether the block is finalized. |
+| `finalizedTime` | `string` | Time when block was finalized. |
+| `error` | `string` | Error block. Omitted if success. |
## `/data`
Method: `POST`
-A data message is simply a `Message` containing some raw data (literally bytes). This type of message has therefore no real functionality other than that it is retrievable via `GetMessage`.
+A data block is simply a `Block` containing some raw data (literally bytes). This type of block has therefore no real functionality other than that it is retrievable via `GetBlock`.
### Parameters
@@ -225,7 +225,7 @@ curl --location --request POST 'http://localhost:8080/data' \
##### `Data(data []byte) (string, error)`
```go
-messageID, err := goshimAPI.Data([]byte("Hello GoShimmer World"))
+blockID, err := goshimAPI.Data([]byte("Hello GoShimmer World"))
if err != nil {
// return error
}
@@ -236,7 +236,7 @@ Note that there is no need to do any additional work, since things like tip-sele
```json
{
- "id": "messageID"
+ "id": "blockID"
}
```
@@ -244,15 +244,15 @@ Note that there is no need to do any additional work, since things like tip-sele
|Return field | Type | Description|
|:-----|:------|:------|
-| `id` | `string` | Message ID of the message. Omitted if error. |
-| `error` | `string` | Error message. Omitted if success. |
+| `id` | `string` | Block ID of the block. Omitted if error. |
+| `error` | `string` | Error block. Omitted if success. |
-## `/messages/payload`
+## `/blocks/payload`
Method: `POST`
-`SendPayload()` takes a `payload` object of any type (data, transaction, drng, etc.) as a byte slice, issues a message with the given payload and returns its `messageID`. Note that the payload must be valid, otherwise an error is returned.
+`SendPayload()` takes a `payload` object of any type (data, transaction, drng, etc.) as a byte slice, issues a block with the given payload and returns its `blockID`. Note that the payload must be valid, otherwise an error is returned.
### Parameters
@@ -276,7 +276,7 @@ Method: `POST`
#### cURL
```shell
-curl --location --request POST 'http://localhost:8080/messages/payload' \
+curl --location --request POST 'http://localhost:8080/blocks/payload' \
--header 'Content-Type: application/json' \
--data-raw '{"payload": "payloadBytes"}'
```
@@ -287,14 +287,14 @@ curl --location --request POST 'http://localhost:8080/messages/payload' \
```go
helloPayload := payload.NewData([]byte{"Hello GoShimmer World!"})
-messageID, err := goshimAPI.SendPayload(helloPayload.Bytes())
+blockID, err := goshimAPI.SendPayload(helloPayload.Bytes())
```
### Response Examples
```shell
{
- "id": "messageID"
+ "id": "blockID"
}
```
@@ -302,7 +302,7 @@ messageID, err := goshimAPI.SendPayload(helloPayload.Bytes())
|Return field | Type | Description|
|:-----|:------|:------|
-| `id` | `string` | Message ID of the message. Omitted if error. |
-| `error` | `string` | Error message. Omitted if success. |
+| `id` | `string` | Block ID of the block. Omitted if error. |
+| `error` | `string` | Error block. Omitted if success. |
Note that there is no need to do any additional work, since things like tip-selection, PoW and other tasks are done by the node itself.
diff --git a/documentation/docs/apis/faucet.md b/documentation/docs/apis/faucet.md
index 14d96db223..9aeb2f44b0 100644
--- a/documentation/docs/apis/faucet.md
+++ b/documentation/docs/apis/faucet.md
@@ -118,5 +118,5 @@ if err != nil {
|Return field | Type | Description|
|:-----|:------|:------|
-| `id` | `string` | Message ID of the faucet request. Omitted if error. |
-| `error` | `string` | Error message. Omitted if success. |
+| `id` | `string` | Block ID of the faucet request. Omitted if error. |
+| `error` | `string` | Error block. Omitted if success. |
diff --git a/documentation/docs/apis/info.md b/documentation/docs/apis/info.md
index f6f3587634..f1d2fe10bc 100644
--- a/documentation/docs/apis/info.md
+++ b/documentation/docs/apis/info.md
@@ -58,15 +58,15 @@ fmt.Println(string(info))
"version": "v0.6.2",
"networkVersion": 30,
"tangleTime": {
- "messageID": "6ndfmfogpH9H8C9X9Fbb7Jmuf8RJHQgSjsHNPdKUUhoJ",
+ "blockID": "6ndfmfogpH9H8C9X9Fbb7Jmuf8RJHQgSjsHNPdKUUhoJ",
"time": 1621879864032595415,
"synced": true
},
"identityID": "D9SPFofAGhA5V9QRDngc1E8qG9bTrnATmpZMdoyRiBoW",
"identityIDShort": "XBgY5DsUPng",
"publicKey": "9DB3j9cWYSuEEtkvanrzqkzCQMdH1FGv3TawJdVbDxkd",
- "solidMessageCount": 74088,
- "totalMessageCount": 74088,
+ "solidBlockCount": 74088,
+ "totalBlockCount": 74088,
"enabledPlugins": [
"Activity",
"AnalysisClient",
@@ -85,7 +85,7 @@ fmt.Println(string(info))
"Mana",
"ManaRefresher",
"ManualPeering",
- "MessageLayer",
+ "BlockLayer",
"Metrics",
"NetworkDelay",
"PoW",
@@ -104,7 +104,7 @@ fmt.Println(string(info))
"WebAPIHealthzEndpoint",
"WebAPIInfoEndpoint",
"WebAPILedgerstateEndpoint",
- "WebAPIMessageEndpoint",
+ "WebAPIBlockEndpoint",
"WebAPIToolsEndpoint",
"snapshot"
],
@@ -146,9 +146,9 @@ fmt.Println(string(info))
| `identityID` | `string` | Identity ID of the node encoded in base58. |
| `identityIDShort` | `string` | Identity ID of the node encoded in base58 and truncated to its first 8 bytes. |
| `publicKey` | `string` | Public key of the node encoded in base58 |
-| `messageRequestQueueSize` | `int` | The number of messages a node is trying to request from neighbors. |
-| `solidMessageCount` | `int` | The number of solid messages in the node's database. |
-| `totalMessageCount` | `int` | The number of messages in the node's database. |
+| `blockRequestQueueSize` | `int` | The number of blocks a node is trying to request from neighbors. |
+| `solidBlockCount` | `int` | The number of solid blocks in the node's database. |
+| `totalBlockCount` | `int` | The number of blocks in the node's database. |
| `enabledPlugins` | `[]string` | List of enabled plugins. |
| `disabledPlugins` | `[]string` | List if disabled plugins. |
| `mana` | `Mana` | Mana values. |
@@ -156,14 +156,14 @@ fmt.Println(string(info))
| `mana_decay` | `float64` | The decay coefficient of `bm2`. |
| `scheduler` | `Scheduler` | Scheduler is the scheduler used.|
| `rateSetter` | `RateSetter` | RateSetter is the rate setter used. |
-| `error` | `string` | Error message. Omitted if success. |
+| `error` | `string` | Error block. Omitted if success. |
* Type `TangleTime`
|field | Type | Description|
|:-----|:------|:------|
-| `messageID` | `string` | ID of the last confirmed message. |
-| `time` | `int64` | Issue timestamp of the last confirmed message. |
+| `blockID` | `string` | ID of the last confirmed block. |
+| `time` | `int64` | Issue timestamp of the last confirmed block. |
| `synced` | `bool` | Flag indicating whether node is in sync. |
@@ -217,4 +217,4 @@ This method is not available in client lib
#### Results
Empty response with HTTP 200 success code if everything is running correctly.
-Error message is returned if failed.
\ No newline at end of file
+Error block is returned if failed.
\ No newline at end of file
diff --git a/documentation/docs/apis/ledgerstate.md b/documentation/docs/apis/ledgerstate.md
index c736ec7d48..fc1ca79d26 100644
--- a/documentation/docs/apis/ledgerstate.md
+++ b/documentation/docs/apis/ledgerstate.md
@@ -1,11 +1,11 @@
---
-description: The ledgerstate API provides endpoints to retrieve address details, unspent outputs for an address, get branch details, and list child branches amongst others.
+description: The ledgerstate API provides endpoints to retrieve address details, unspent outputs for an address, get conflict details, and list child conflicts amongst others.
image: /img/logo/goshimmer_light.png
keywords:
- client library
- HTTP API
- addresses
-- branches
+- conflicts
- outputs
- transactions
- UTXO
@@ -17,10 +17,10 @@ keywords:
* [/ledgerstate/addresses/:address](#ledgerstateaddressesaddress)
* [/ledgerstate/addresses/:address/unspentOutputs](#ledgerstateaddressesaddressunspentoutputs)
-* [/ledgerstate/branches/:branchID](#ledgerstatebranchesbranchid)
-* [/ledgerstate/branches/:branchID/children](#ledgerstatebranchesbranchidchildren)
-* [/ledgerstate/branches/:branchID/conflicts](#ledgerstatebranchesbranchidconflicts)
-* [/ledgerstate/branches/:branchID/voters](#ledgerstatebranchesbranchidvoters)
+* [/ledgerstate/conflicts/:conflictID](#ledgerstateconflictsconflictid)
+* [/ledgerstate/conflicts/:conflictID/children](#ledgerstateconflictsconflictidchildren)
+* [/ledgerstate/conflicts/:conflictID/conflicts](#ledgerstateconflictsconflictidconflicts)
+* [/ledgerstate/conflicts/:conflictID/voters](#ledgerstateconflictsconflictidvoters)
* [/ledgerstate/outputs/:outputID](#ledgerstateoutputsoutputid)
* [/ledgerstate/outputs/:outputID/consumers](#ledgerstateoutputsoutputidconsumers)
* [/ledgerstate/outputs/:outputID/metadata](#ledgerstateoutputsoutputidmetadata)
@@ -35,10 +35,10 @@ keywords:
* [GetAddressOutputs()](#client-lib---getaddressoutputs)
* [GetAddressUnspentOutputs()](#client-lib---getaddressunspentoutputs)
-* [GetBranch()](#client-lib---getbranch)
-* [GetBranchChildren()](#client-lib---getbranchchildren)
-* [GetBranchConflicts()](#client-lib---getbranchconflicts)
-* [GetBranchVoters()](#client-lib---getbranchvoters)
+* [GetConflict()](#client-lib---getconflict)
+* [GetConflictChildren()](#client-lib---getconflictchildren)
+* [GetConflictConflicts()](#client-lib---getconflictconflicts)
+* [GetConflictVoters()](#client-lib---getconflictvoters)
* [GetOutput()](#client-lib---getoutput)
* [GetOutputConsumers()](#client-lib---getoutputconsumers)
* [GetOutputMetadata()](#client-lib---getoutputmetadata)
@@ -50,7 +50,7 @@ keywords:
## `/ledgerstate/addresses/:address`
-Get address details for a given base58 encoded address ID, such as output types and balances. For the client library API call balances will not be directly available as values because they are stored as a raw message. Balance can be read after retrieving `ledgerstate.Output` instance, as presented in the examples.
+Get address details for a given base58 encoded address ID, such as output types and balances. For the client library API call balances will not be directly available as values because they are stored as a raw block. Balance can be read after retrieving `ledgerstate.Output` instance, as presented in the examples.
### Parameters
| **Parameter** | `address` |
@@ -132,7 +132,7 @@ for _, output := range resp.Outputs {
|:-----|:------|:------|
| `outputID` | OutputID | The identifier of an output. |
| `outputType` | string | The type of the output. |
-| `output` | string | An output raw message containing balances and corresponding addresses. |
+| `output` | string | An output raw block containing balances and corresponding addresses. |
#### Type `OutputID`
@@ -228,7 +228,7 @@ for _, output := range resp.Outputs {
|:-----|:------|:------|
| `outputID` | OutputID | The identifier of an output. |
| `outputType` | string | The type of the output. |
-| `output` | string | An output raw message containing balances and corresponding addresses |
+| `output` | string | An output raw block containing balances and corresponding addresses |
#### Type `OutputID`
@@ -240,15 +240,15 @@ for _, output := range resp.Outputs {
-## `/ledgerstate/branches/:branchID`
-Gets a branch details for a given base58 encoded branch ID.
+## `/ledgerstate/conflicts/:conflictID`
+Gets a conflict details for a given base58 encoded conflict ID.
### Parameters
-| **Parameter** | `branchID` |
+| **Parameter** | `conflictID` |
|--------------------------|----------------|
| **Required or Optional** | required |
-| **Description** | The branch ID encoded in base58. |
+| **Description** | The conflict ID encoded in base58. |
| **Type** | string |
### Examples
@@ -256,31 +256,31 @@ Gets a branch details for a given base58 encoded branch ID.
#### cURL
```shell
-curl http://localhost:8080/ledgerstate/branches/:branchID \
+curl http://localhost:8080/ledgerstate/conflicts/:conflictID \
-X GET \
-H 'Content-Type: application/json'
```
-where `:branchID` is the ID of the branch, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
+where `:conflictID` is the ID of the conflict, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
-#### Client lib - `GetBranch()`
+#### Client lib - `GetConflict()`
```Go
-resp, err := goshimAPI.GetBranch("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
+resp, err := goshimAPI.GetConflict("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
if err != nil {
// return error
}
-fmt.Println("branch ID: ", resp.ID)
-fmt.Println("branch type: ", resp.Type)
-fmt.Println("branch inclusion state: ", resp.InclusionState)
-fmt.Println("branch parents IDs: ", resp.Parents)
-fmt.Println("branch conflicts IDs: ", resp.ConflictIDs)
+fmt.Println("conflict ID: ", resp.ID)
+fmt.Println("conflict type: ", resp.Type)
+fmt.Println("conflict inclusion state: ", resp.ConfirmationState)
+fmt.Println("conflict parents IDs: ", resp.Parents)
+fmt.Println("conflict conflicts IDs: ", resp.ConflictIDs)
fmt.Printf("liked: %v, finalized: %v, monotonically liked: %v", resp.Liked, resp.Finalized, resp.MonotonicallyLiked)
```
### Response Examples
```json
{
"id": "5v6iyxKUSSF73yoZa6YngNN5tqoX8hJQWKGXrgcz3XTg",
- "type": "ConflictBranchType",
+ "type": "ConflictConflictType",
"parents": [
"4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM"
],
@@ -290,33 +290,33 @@ fmt.Printf("liked: %v, finalized: %v, monotonically liked: %v", resp.Liked, resp
"liked": false,
"monotonicallyLiked": false,
"finalized": false,
- "inclusionState": "InclusionState(Pending)"
+ "confirmationState": "ConfirmationState(Pending)"
}
```
### Results
-|Return field | Type | Description|
-|:-----|:------|:------|
-| `id` | string | The branch identifier encoded with base58. |
-| `type` | string | The type of the branch. |
-| `parents` | []string | The list of parent branches IDs. |
-| `conflictIDs` | []string | The list of conflicts identifiers. |
-| `liked` | bool | The boolean indicator if branch is liked. |
-| `monotonicallyLiked` | bool | The boolean indicator if branch is monotonically liked. |
-| `finalized` | bool | The boolean indicator if branch is finalized. |
-| `inclusionState` | string | Inclusion state of a branch. |
+|Return field | Type | Description |
+|:-----|:------|:--------------------------------------------------------|
+| `id` | string | The conflict identifier encoded with base58. |
+| `type` | string | The type of the conflict. |
+| `parents` | []string | The list of parent conflicts IDs. |
+| `conflictIDs` | []string | The list of conflicts identifiers. |
+| `liked` | bool | The boolean indicator if conflict is liked. |
+| `monotonicallyLiked` | bool | The boolean indicator if conflict is monotonically liked. |
+| `finalized` | bool | The boolean indicator if conflict is finalized. |
+| `confirmationState` | string | Confirmation state of a conflict. |
-## `/ledgerstate/branches/:branchID/children`
-Gets a list of all child branches for a branch with given base58 encoded branch ID.
+## `/ledgerstate/conflicts/:conflictID/children`
+Gets a list of all child conflicts for a conflict with given base58 encoded conflict ID.
### Parameters
-| **Parameter** | `branchID` |
+| **Parameter** | `conflictID` |
|--------------------------|----------------|
| **Required or Optional** | required |
-| **Description** | The branch ID encoded in base58. |
+| **Description** | The conflict ID encoded in base58. |
| **Type** | string |
@@ -325,34 +325,34 @@ Gets a list of all child branches for a branch with given base58 encoded branch
#### cURL
```shell
-curl http://localhost:8080/ledgerstate/branches/:branchID/children \
+curl http://localhost:8080/ledgerstate/conflicts/:conflictID/children \
-X GET \
-H 'Content-Type: application/json'
```
-where `:branchID` is the ID of the branch, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
+where `:conflictID` is the ID of the conflict, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
-#### Client lib - `GetBranchChildren()`
+#### Client lib - `GetConflictChildren()`
```Go
-resp, err := goshimAPI.GetBranchChildren("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
+resp, err := goshimAPI.GetConflictChildren("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
if err != nil {
//return error
}
-fmt.Printf("All children branches for branch %s:\n", resp.BranchID)
-for _, branch := range resp.ChildBranches {
- fmt.Println("branchID: ", branch.BranchID)
- fmt.Printf("type: %s\n", branch.BranchID)
+fmt.Printf("All children conflicts for conflict %s:\n", resp.ConflictID)
+for _, conflict := range resp.ChildConflicts {
+ fmt.Println("conflictID: ", conflict.ConflictID)
+ fmt.Printf("type: %s\n", conflict.ConflictID)
}
```
### Response Examples
```json
{
- "branchID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
- "childBranches": [
+ "conflictID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
+ "childConflicts": [
{
- "branchID": "4SdXm5NXEcVogiJNEKkecqd5rZzRYeGYBj8oBNsdX91W",
- "type": "AggregatedBranchType"
+ "conflictID": "4SdXm5NXEcVogiJNEKkecqd5rZzRYeGYBj8oBNsdX91W",
+ "type": "AggregatedConflictType"
}
]
}
@@ -362,28 +362,28 @@ for _, branch := range resp.ChildBranches {
|Return field | Type | Description|
|:-----|:------|:------|
-| `branchID` | string | The branch identifier encoded with base58. |
-| `childBranches` | []ChildBranch | The child branches data. |
+| `conflictID` | string | The conflict identifier encoded with base58. |
+| `childConflicts` | []ChildConflict | The child conflicts data. |
-#### Type `ChildBranch`
+#### Type `ChildConflict`
|Field | Type | Description|
|:-----|:------|:------|
-| `branchID` | string | The branch identifier encoded with base58. |
-| `type` | string | The type of the branch. |
+| `conflictID` | string | The conflict identifier encoded with base58. |
+| `type` | string | The type of the conflict. |
-## `/ledgerstate/branches/:branchID/conflicts`
-Get all conflicts for a given branch ID, their outputs and conflicting branches.
+## `/ledgerstate/conflicts/:conflictID/conflicts`
+Get all conflicts for a given conflict ID, their outputs and conflicting conflicts.
### Parameters
-| **Parameter** | `branchID` |
+| **Parameter** | `conflictID` |
|--------------------------|----------------|
| **Required or Optional** | required |
-| **Description** | The conflicting branch ID encoded in base58. |
+| **Description** | The conflicting conflict ID encoded in base58. |
| **Type** | string |
@@ -392,31 +392,31 @@ Get all conflicts for a given branch ID, their outputs and conflicting branches.
#### cURL
```shell
-curl http://localhost:8080/ledgerstate/branches/:branchID/conflicts \
+curl http://localhost:8080/ledgerstate/conflicts/:conflictID/conflicts \
-X GET \
-H 'Content-Type: application/json'
```
-where `:branchID` is the ID of the branch, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
+where `:conflictID` is the ID of the conflict, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
-#### Client lib - `GetBranchConflicts()`
+#### Client lib - `GetConflictConflicts()`
```Go
-resp, err := goshimAPI.GetBranchConflicts("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
+resp, err := goshimAPI.GetConflictConflicts("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
if err != nil {
// return error
}
-fmt.Printf("All conflicts for branch %s:\n", resp.BranchID)
+fmt.Printf("All conflicts for conflict %s:\n", resp.ConflictID)
// iterate over all conflicts
-for _, branch := range resp.Conflicts {
- fmt.Println("output ID: ", branch.OutputID.Base58)
- fmt.Println("conflicting transaction ID: ", branch.OutputID.TransactionID)
- fmt.Printf("related branches: %v\n", branch.BranchIDs)
+for _, conflict := range resp.Conflicts {
+ fmt.Println("output ID: ", conflict.OutputID.Base58)
+ fmt.Println("conflicting transaction ID: ", conflict.OutputID.TransactionID)
+ fmt.Printf("related conflicts: %v\n", conflict.ConflictIDs)
}
```
### Response Examples
```json
{
- "branchID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
+ "conflictID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
"conflicts": [
{
"outputID": {
@@ -424,7 +424,7 @@ for _, branch := range resp.Conflicts {
"transactionID": "9wr21zza46Y5QonKEHNQ6x8puA7Rbq5LAbsQZJCK1g1g",
"outputIndex": 0
},
- "branchIDs": [
+ "conflictIDs": [
"b8QRhHerfg14cYQ4VFD7Fyh1HYTCbjt9aK1XJmdoXwq",
"HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV"
]
@@ -437,14 +437,14 @@ for _, branch := range resp.Conflicts {
|Return field | Type | Description|
|:-----|:------|:------|
-| `branchID` | string | The branch identifier encoded with base58. |
+| `conflictID` | string | The conflict identifier encoded with base58. |
| `conflicts` | []Conflict | The conflict data. |
#### Type `Conflict`
|Field | Type | Description|
|:-----|:------|:------|
-| `outputID` | OutputID | The branch identifier encoded with base58. |
-| `branchIDs` | []string | The identifiers of all related branches encoded in base58. |
+| `outputID` | OutputID | The conflict identifier encoded with base58. |
+| `conflictIDs` | []string | The identifiers of all related conflicts encoded in base58. |
#### Type `OutputID`
@@ -455,13 +455,13 @@ for _, branch := range resp.Conflicts {
| `outputIndex` | int | The index of an output. |
-## `/ledgerstate/branches/:branchID/voters`
-Get a list of voters of a given branchID.
+## `/ledgerstate/conflicts/:conflictID/voters`
+Get a list of voters of a given conflictID.
-| **Parameter** | `branchID` |
+| **Parameter** | `conflictID` |
|--------------------------|----------------|
| **Required or Optional** | required |
-| **Description** | The branch ID encoded in base58. |
+| **Description** | The conflict ID encoded in base58. |
| **Type** | string |
### Examples
@@ -469,19 +469,19 @@ Get a list of voters of a given branchID.
### cURL
```shell
-curl http://localhost:8080/ledgerstate/branches/:branchID/voters \
+curl http://localhost:8080/ledgerstate/conflicts/:conflictID/voters \
-X GET \
-H 'Content-Type: application/json'
```
-where `:branchID` is the ID of the branch, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
+where `:conflictID` is the ID of the conflict, e.g. 2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ.
-#### Client lib - `GetBranchVoters()`
+#### Client lib - `GetConflictVoters()`
```Go
-resp, err := goshimAPI.GetBranchVoters("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
+resp, err := goshimAPI.GetConflictVoters("2e2EU6fhxRhrXVnYQ6US4zmUkE5YJip25ecafn8gZeoZ")
if err != nil {
// return error
}
-fmt.Printf("All voters for branch %s:\n", resp.BranchID)
+fmt.Printf("All voters for conflict %s:\n", resp.ConflictID)
// iterate over all voters
for _, voter := range resp.Voters {
fmt.Println("ID: ", voter)
@@ -491,7 +491,7 @@ for _, voter := range resp.Voters {
### Response examples
```json
{
- "branchID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
+ "conflictID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
"voters": ["b8QRhHerfg14cYQ4VFD7Fyh1HYTCbjt9aK1XJmdoXwq","41GvDSQnd12e4nWnd2WzmdLmffruXqsE46jgeUbnB8s1QnK"]
}
```
@@ -499,13 +499,13 @@ for _, voter := range resp.Voters {
### Results
|Return field | Type | Description|
|:-----|:------|:------|
-| `branchID` | string | The branch identifier encoded with base58. |
-| `voters` | [] string | The list of branch voter IDs |
+| `conflictID` | string | The conflict identifier encoded with base58. |
+| `voters` | [] string | The list of conflict voter IDs |
## `/ledgerstate/outputs/:outputID`
Get an output details for a given base58 encoded output ID, such as output types, addresses, and their corresponding balances.
-For the client library API call balances will not be directly available as values because they are stored as a raw message.
+For the client library API call balances will not be directly available as values because they are stored as a raw block.
### Parameters
@@ -561,7 +561,7 @@ fmt.Println("transactionID: ", resp.OutputID.TransactionID)
|:-----|:------|:------|
| `outputID` | OutputID | The identifier of an output. |
| `outputType` | string | The type of the output. |
-| `output` | string | An output raw message containing balances and corresponding addresses |
+| `output` | string | An output raw block containing balances and corresponding addresses |
#### Type `OutputID`
@@ -685,7 +685,7 @@ if err != nil {
// return error
}
fmt.Printf("Metadata of an output %s:\n", resp.OutputID.Base58)
-fmt.Println("branchID: ", resp.BranchID)
+fmt.Println("conflictID: ", resp.ConflictID)
fmt.Println("first consumer: ", resp.FirstConsumer)
fmt.Println("number of consumers: ", resp.ConsumerCount)
fmt.Printf("finalized: %v, solid: %v\n", resp.Finalized, resp.Solid)
@@ -699,7 +699,7 @@ fmt.Println("solidification time: ", time.Unix(resp.SolidificationTime, 0))
"transactionID": "9wr21zza46Y5QonKEHNQ6x8puA7Rbq5LAbsQZJCK1g1g",
"outputIndex": 0
},
- "branchID": "4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM",
+ "conflictID": "4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM",
"solid": true,
"solidificationTime": 1621889327,
"consumerCount": 2,
@@ -713,9 +713,9 @@ fmt.Println("solidification time: ", time.Unix(resp.SolidificationTime, 0))
|Return field | Type | Description|
|:-----|:------|:------|
| `outputID` | OutputID | The output identifier encoded with base58. |
-| `branchID` | string | The identifier of the branch encoded with base58. |
-| `solid` | bool | The boolean indicator if the message is solid. |
-| `solidificationTime` | int64 | The time of solidification of a message. |
+| `conflictID` | string | The identifier of the conflict encoded with base58. |
+| `solid` | bool | The boolean indicator if the block is solid. |
+| `solidificationTime` | int64 | The time of solidification of a block. |
| `consumerCount` | int | The number of consumers. |
| `firstConsumer` | string | The first consumer of the output. |
| `finalized` | bool | The boolean indicator if the transaction is finalized. |
@@ -751,7 +751,7 @@ curl http://localhost:8080/ledgerstate/transactions/:transactionID \
-H 'Content-Type: application/json'
```
-where `:transactionID` is the ID of the branch, e.g. HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV.
+where `:transactionID` is the ID of the conflict, e.g. HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV.
#### Client lib - `GetTransaction()`
```Go
@@ -847,7 +847,7 @@ fmt.Println("consensus mana pledgeID:", resp.ConsensusPledgeID)
|:-----|:------|:------|
| `outputID` | OutputID | The identifier of an output. |
| `outputType` | string | The type of the output. |
-| `output` | string | An output raw message containing balances and corresponding addresses. |
+| `output` | string | An output raw block containing balances and corresponding addresses. |
#### Type `OutputID`
@@ -888,7 +888,7 @@ curl http://localhost:8080/ledgerstate/transactions/:transactionID/metadata \
-H 'Content-Type: application/json'
```
-where `:transactionID` is the ID of the branch, e.g. HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV.
+where `:transactionID` is the ID of the conflict, e.g. HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV.
#### Client lib - `GetTransactionMetadata()`
```Go
@@ -897,15 +897,15 @@ if err != nil {
// return error
}
fmt.Println("transactionID:", resp.TransactionID)
-fmt.Println("branchID:", resp.BranchID)
-fmt.Printf("branch lazy booked: %v, solid: %v, finalized: %v\n", resp.LazyBooked, resp.Solid, resp.Finalized)
+fmt.Println("conflictID:", resp.ConflictID)
+fmt.Printf("conflict lazy booked: %v, solid: %v, finalized: %v\n", resp.LazyBooked, resp.Solid, resp.Finalized)
fmt.Println("solidification time:", time.Unix(resp.SolidificationTime, 0))
```
### Response Examples
```json
{
"transactionID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
- "branchID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
+ "conflictID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
"solid": true,
"solidificationTime": 1621889358,
"finalized": true,
@@ -916,7 +916,7 @@ fmt.Println("solidification time:", time.Unix(resp.SolidificationTime, 0))
|Return field | Type | Description|
|:-----|:------|:------|
| `transactionID` | string | The transaction identifier encoded with base58. |
-| `branchID` | string | The branch identifier of the transaction. |
+| `conflictID` | string | The conflict identifier of the transaction. |
| `solid` | bool | The boolean indicator if the transaction is solid. |
| `solidificationTime` | uint64 | The time of solidification of the transaction. |
| `finalized` | bool | The boolean indicator if the transaction is finalized. |
@@ -924,7 +924,7 @@ fmt.Println("solidification time:", time.Unix(resp.SolidificationTime, 0))
## `/ledgerstate/transactions/:transactionID/attachments`
-Gets the list of messages IDs with attachments of the base58 encoded transaction ID.
+Gets the list of blocks IDs with attachments of the base58 encoded transaction ID.
### Parameters
| **Parameter** | `transactionID` |
@@ -943,7 +943,7 @@ curl http://localhost:8080/ledgerstate/transactions/:transactionID/attachments \
-H 'Content-Type: application/json'
```
-where `:transactionID` is the ID of the branch, e.g. HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV.
+where `:transactionID` is the ID of the conflict, e.g. HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV.
#### Client lib - `GetTransactionAttachments()`
```Go
@@ -951,16 +951,16 @@ resp, err := goshimAPI.GetTransactionAttachments("DNSN8GaCeep6CVuUV6KXAabXkL3bv4
if err != nil {
// return error
}
-fmt.Printf("Messages IDs containing transaction %s:\n", resp.TransactionID)
-for _, msgID := range resp.MessageIDs {
- fmt.Println(msgID)
+fmt.Printf("Blocks IDs containing transaction %s:\n", resp.TransactionID)
+for _, blkID := range resp.BlockIDs {
+ fmt.Println(blkID)
}
```
### Response Examples
```json
{
"transactionID": "HuYUAwCeexmBePNXx5rNeJX1zUvUdUUs5LvmRmWe7HCV",
- "messageIDs": [
+ "blockIDs": [
"J1FQdMcticXiiuKMbjobq4zrYGHagk2mtTzkVwbqPgSq"
]
}
@@ -970,12 +970,12 @@ for _, msgID := range resp.MessageIDs {
|Return field | Type | Description|
|:-----|:------|:------|
| `transactionID` | string | The transaction identifier encoded with base58. |
-| `messageIDs` | []string | The messages IDs that contains the requested transaction. |
+| `blockIDs` | []string | The blocks IDs that contains the requested transaction. |
## `/ledgerstate/transactions`
-Sends transaction provided in form of a binary data, validates transaction before issuing the message payload. For more detail on how to prepare transaction bytes see the [tutorial](../tutorials/send_transaction.md).
+Sends transaction provided in form of a binary data, validates transaction before issuing the block payload. For more detail on how to prepare transaction bytes see the [tutorial](../tutorials/send_transaction.md).
### Examples
@@ -1001,7 +1001,7 @@ fmt.Println("Transaction sent, txID: ", resp.TransactionID)
## `/ledgerstate/addresses/unspentOutputs`
-Gets all unspent outputs for a list of addresses that were sent in the body message. Returns the unspent outputs along with inclusion state and metadata for the wallet.
+Gets all unspent outputs for a list of addresses that were sent in the body block. Returns the unspent outputs along with inclusion state and metadata for the wallet.
### Request Body
```json
@@ -1066,7 +1066,7 @@ for _, outputs := range resp.UnspentOutputs {
"address": "1Z4t5KEKU65fbeQCbNdztYTB1B4Cdxys1XRzTFrmvAf3"
}
},
- "inclusionState": {
+ "confirmationState": {
"confirmed": true,
"rejected": false,
"conflicting": false
@@ -1105,7 +1105,7 @@ for _, outputs := range resp.UnspentOutputs {
|Field | Type | Description|
|:-----|:------|:------|
| `output` | Output | The unspent output. |
-| `inclusionState`| InclusionState | The inclusion state of the transaction containing the output. |
+| `confirmationState`| ConfirmationState | The inclusion state of the transaction containing the output. |
| `metadata`| WalletOutputMetadata | The metadata of the output for the wallet lib. |
#### Type `Output`
@@ -1114,7 +1114,7 @@ for _, outputs := range resp.UnspentOutputs {
|:-----|:------|:------|
| `outputID` | OutputID | The identifier of an output. |
| `outputType` | string | The type of the output. |
-| `output` | string | An outputs raw message containing balances and corresponding addresses |
+| `output` | string | An outputs raw block containing balances and corresponding addresses |
#### Type `OutputID`
@@ -1124,12 +1124,12 @@ for _, outputs := range resp.UnspentOutputs {
| `transactionID` | string | The transaction identifier encoded with base58. |
| `outputIndex` | int | The index of an output. |
-#### Type `InclusionState`
+#### Type `ConfirmationState`
|Field | Type | Description|
|:-----|:------|:------|
| `confirmed` | bool | The boolean indicating if the transaction containing the output is confirmed. |
-| `rejected` | bool | The boolean indicating if the transaction that contains the output was rejected and is booked to the rejected branch. |
+| `rejected` | bool | The boolean indicating if the transaction that contains the output was rejected and is booked to the rejected conflict. |
| `conflicting` | bool | The boolean indicating if the output is in conflicting transaction.|
#### Type `WalletOutputMetadata`
diff --git a/documentation/docs/apis/spammer.md b/documentation/docs/apis/spammer.md
index 59a6a0c2a3..6e17b43f8e 100644
--- a/documentation/docs/apis/spammer.md
+++ b/documentation/docs/apis/spammer.md
@@ -1,17 +1,17 @@
---
-description: The Spammer tool lets you add messages to the tangle when running GoShimmer.
+description: The Spammer tool lets you add blocks to the tangle when running GoShimmer.
image: /img/logo/goshimmer_light.png
keywords:
- client library
- HTTP API
- spammer
-- add messages
+- add blocks
- interval
- tangle
---
# Spammer API Methods
-The Spammer tool lets you add messages to the tangle when running GoShimmer.
+The Spammer tool lets you add blocks to the tangle when running GoShimmer.
**Note:** Make sure you enable the **spammer plugin** before interacting with the API.
The API provides the following functions and endpoints:
@@ -39,27 +39,27 @@ In order to start the spammer, you need to send GET requests to a `/spammer` API
| **Parameter** | `rate` |
|--------------------------|----------------|
| **Required or Optional** | optional |
-| **Description** | Messages per time unit. Only applicable when `cmd=start`. (default: 1) |
+| **Description** | Blocks per time unit. Only applicable when `cmd=start`. (default: 1) |
| **Type** | `int` |
| **Parameter** | `unit` |
|--------------------------|----------------|
| **Required or Optional** | optional |
-| **Description** | Indicates the unit for the spam rate: message per minute or second. One of two possible values: `mpm` and `mps`. (default: `mps`) |
+| **Description** | Indicates the unit for the spam rate: block per minute or second. One of two possible values: `mpm` and `mps`. (default: `mps`) |
| **Type** | `string` |
-| **Parameter** | `imif` (Inter Message Issuing Function) |
+| **Parameter** | `imif` (Inter Block Issuing Function) |
|--------------------------|----------------|
| **Required or Optional** | optional |
-| **Description** | Parameter indicating time interval between issued messages. Possible values: `poisson`, `uniform`. |
+| **Description** | Parameter indicating time interval between issued blocks. Possible values: `poisson`, `uniform`. |
| **Type** | `string` |
Description of `imif` values:
-* `poisson` - emit messages modeled with Poisson point process, whose time intervals are exponential variables with mean 1/rate
-* `uniform` - issues messages at constant rate
+* `poisson` - emit blocks modeled with Poisson point process, whose time intervals are exponential variables with mean 1/rate
+* `uniform` - issues blocks at constant rate
### Examples
@@ -81,18 +81,18 @@ if err != nil {
}
// will print the response
-fmt.Println(res.Message)
+fmt.Println(res.Block)
```
#### Response examples
```json
-{"message": "started spamming messages"}
+{"block": "started spamming blocks"}
```
#### Results
|Return field | Type | Description|
|:-----|:------|:------|
-| `message` | `string` | Message with resulting message. |
-| `error` | `string` | Error message. Omitted if success. |
+| `block` | `string` | Block with resulting block. |
+| `error` | `string` | Error block. Omitted if success. |
diff --git a/documentation/docs/apis/webAPI.md b/documentation/docs/apis/webAPI.md
index e76aab2d3b..c15d22dabd 100644
--- a/documentation/docs/apis/webAPI.md
+++ b/documentation/docs/apis/webAPI.md
@@ -48,12 +48,12 @@ curl "http://127.0.0.1:8080/path?command"
$$ . $$
-Second, with `POST` we register a new POST route for a handler function. The handler can receive a JSON body input and send specific messages to the tangle.
+Second, with `POST` we register a new POST route for a handler function. The handler can receive a JSON body input and send specific blocks to the tangle.
```go
webapi.Server().POST("path", HandlerFunc)
```
-For example, the following Handler `broadcastData` sends a data message to the tangle
+For example, the following Handler `broadcastData` sends a data block to the tangle
```go
func broadcastData(c echo.Context) error {
var request Request
@@ -62,12 +62,12 @@ func broadcastData(c echo.Context) error {
return c.JSON(http.StatusBadRequest, Response{Error: err.Error()})
}
- msg, err := messagelayer.IssuePayload(
- payload.NewGenericDataPayload(request.Data), messagelayer.Tangle())
+ blk, err := blocklayer.IssuePayload(
+ payload.NewGenericDataPayload(request.Data), blocklayer.Tangle())
if err != nil {
return c.JSON(http.StatusBadRequest, Response{Error: err.Error()})
}
- return c.JSON(http.StatusOK, Response{ID: msg.ID().String()})
+ return c.JSON(http.StatusOK, Response{ID: blk.ID().String()})
}
```
As an example the JSON body
@@ -76,5 +76,5 @@ As an example the JSON body
"data":"HelloWorld"
}
```
-can be sent to `http://127.0.0.1:8080/data`, which will issue a data message containing "HelloWor" (note that in this example the data input is size limited.)
+can be sent to `http://127.0.0.1:8080/data`, which will issue a data block containing "HelloWor" (note that in this example the data input is size limited.)
diff --git a/documentation/docs/faq.md b/documentation/docs/faq.md
index d9c05d1cb8..156fd1e8a3 100644
--- a/documentation/docs/faq.md
+++ b/documentation/docs/faq.md
@@ -32,7 +32,7 @@ The transactions per second metric is irrelevant for the current development sta
## How is Spamming Prevented?
-The Coordicide lays out concepts for spam prevention through the means of rate control and such. However, in the current version, GoShimmer relies on Proof of Work (PoW) to prevent over saturation of the network. Doing the PoW for a message will usually take a couple of seconds on commodity hardware.
+The Coordicide lays out concepts for spam prevention through the means of rate control and such. However, in the current version, GoShimmer relies on Proof of Work (PoW) to prevent over saturation of the network. Doing the PoW for a block will usually take a couple of seconds on commodity hardware.
## What Happens if I Issue a Double Spend?
diff --git a/documentation/docs/implementation_design/event_driven_model.md b/documentation/docs/implementation_design/event_driven_model.md
index 0664add7af..00a9f45621 100644
--- a/documentation/docs/implementation_design/event_driven_model.md
+++ b/documentation/docs/implementation_design/event_driven_model.md
@@ -1,5 +1,5 @@
---
-description: When an event is triggered, an event handler (or a collection of handlers) is executed and the state of the application is updated as necessary. In GoShimmer some of those events can be the arrival of new tangle message, peering request or plugin start.
+description: When an event is triggered, an event handler (or a collection of handlers) is executed and the state of the application is updated as necessary. In GoShimmer some of those events can be the arrival of new tangle block, peering request or plugin start.
image: /img/logo/goshimmer_light.png
keywords:
- events
@@ -12,7 +12,7 @@ keywords:
Event driven model is popular approach often used for example in GUI applications, where a program is waiting for some external event to take place (e.g. mouse click) in order to perform some action.
In case of GoShimmer there is no GUI, however it applies this architecture approach as it's really flexible and is used to handle communication with other nodes and other internal parts.
-In GoShimmer some of those events can be e.g. arrival of new tangle message, peering request or plugin start.
+In GoShimmer some of those events can be e.g. arrival of new tangle block, peering request or plugin start.
When an event is triggered, an event handler (or a collection of handlers) is executed and the state of the application is updated as necessary.
## Glossary
@@ -20,11 +20,11 @@ When an event is triggered, an event handler (or a collection of handlers) is ex
At first let's define some terms used further to avoid misunderstandings:
### Event
-Represents the type of event (e.g. new message or peering request) as well as set of handlers and trigger functions. Each type of event is separately defined
+Represents the type of event (e.g. new block or peering request) as well as set of handlers and trigger functions. Each type of event is separately defined
which means that events are independent of each other - each event has its own set of handlers and is triggered separately.
### Event handler (callback)
-A function that is executed when an event of given type occurs. An event handler can accept multiple arguments (e.g. message ID or plugin) so that it can perform appropriate actions.
+A function that is executed when an event of given type occurs. An event handler can accept multiple arguments (e.g. block ID or plugin) so that it can perform appropriate actions.
Every handler must accept the same set of parameters. Each event has a different set of handlers (there can be multiple handlers) that are executed when the event is triggered.
### Trigger
diff --git a/documentation/docs/implementation_design/object_storage.md b/documentation/docs/implementation_design/object_storage.md
index 043c48c784..255c29c7b3 100644
--- a/documentation/docs/implementation_design/object_storage.md
+++ b/documentation/docs/implementation_design/object_storage.md
@@ -1,5 +1,5 @@
---
-description: ObjectStorage is used as a base data structure for many data collection elements such as `branchStorage`, `conflictStorage`, `messageStorage` amongst others.
+description: ObjectStorage is used as a base data structure for many data collection elements such as `conflictStorage`, `conflictStorage`, `blockStorage` amongst others.
image: /img/logo/goshimmer_light.png
keywords:
- storage
@@ -13,7 +13,7 @@ keywords:
# Object Storage
-In GoShimmer `ObjectStorage` is used as a base data structure for many data collection elements such as `branchStorage`, `conflictStorage`, `messageStorage` and others.
+In GoShimmer `ObjectStorage` is used as a base data structure for many data collection elements such as `conflictStorage`, `conflictStorage`, `blockStorage` and others.
It can be described by the following characteristics, it:
- is a manual cache which keeps objects in memory as long as consumers are using it
- uses key-value storage type
@@ -111,32 +111,32 @@ func ObjectFromBytes(bytes []byte) (object *ObjectType, consumedBytes int, err e
The key logic is implemented in `ObjectFromMarshalUtil` that takes the marshaled object and transforms it into the object of specified type.
Because the data is stored in a sequence of bytes, it has no information about the form of an object and any data types it had before writing to the database.
Thus, we need to serialize any data into a stream of bytes in order to write it (marshaling), and deserialize the stream of bytes back into correct data structures when reading it (unmarshaling).
-Let's consider as an example, unmarshaling of the `Approver` object.
+Let's consider as an example, unmarshaling of the `Child` object.
```Go
-type Approver struct {
- approverType ApproverType // 8 bytes
- referencedMessageID MessageID // 32 bytes
- approverMessageID MessageID // 32 bytes
+type Child struct {
+ childType ChildType // 8 bytes
+ referencedBlockID BlockID // 32 bytes
+ childBlockID BlockID // 32 bytes
}
```
-The order in which we read bytes has to reflect the order in which it was written down during marshaling. As in the example, the order: `referencedMessageID`, `approverType`, `approverMessageID` is the same in both marshalling and unmarshalling.
+The order in which we read bytes has to reflect the order in which it was written down during marshaling. As in the example, the order: `referencedBlockID`, `childType`, `childBlockID` is the same in both marshalling and unmarshalling.
```Go
// Unmarshalling
-func ApproverFromMarshalUtil(marshalUtil *marshalutil.MarshalUtil) (result *Approver) {
- result = &Approver{}
- result.referencedMessageID = MessageIDFromMarshalUtil(marshalUtil)
- result.approverType = ApproverTypeFromMarshalUtil(marshalUtil)
- result.approverMessageID = MessageIDFromMarshalUtil(marshalUtil)
+func ChildFromMarshalUtil(marshalUtil *marshalutil.MarshalUtil) (result *Child) {
+ result = &Child{}
+ result.referencedBlockID = BlockIDFromMarshalUtil(marshalUtil)
+ result.childType = ChildTypeFromMarshalUtil(marshalUtil)
+ result.childBlockID = BlockIDFromMarshalUtil(marshalUtil)
return
}
// Marshalling
-func (a *Approver) ObjectStorageApprover() []byte {
+func (a *Child) ObjectStorageChild() []byte {
return marshalutil.New().
- Write(a.referencedMessageID).
- Write(a.approverType).
- Write(a.approverMessageID).
+ Write(a.referencedBlockID).
+ Write(a.childType).
+ Write(a.childBlockID).
Bytes()
}
```
@@ -150,37 +150,37 @@ type of the struct field. This way, we are able to parse bytes to the correct Go
After defining marshalling and unmarshalling mechanism for`objectStorage` bytes conversion,
we can start using it for its sole purpose, to actually store and read the particular parts of the project elements.
- - `Load` allows retrieving the corresponding object based on the provided id. For example, the method on the message `objectStorage`
+ - `Load` allows retrieving the corresponding object based on the provided id. For example, the method on the block `objectStorage`
is getting the cached object.
- To convert an object retrieved in the form of a cache to its own corresponding type, we can use `Unwrap`.
- In the code below it will return the message wrapped by the cached object.
+ In the code below it will return the block wrapped by the cached object.
- `Exists` - checks weather the object has been deleted. If so it is released from memory with the `Release` method.
```Go
- func (s *Storage) Message(messageID MessageID) *CachedMessage {
- return &CachedMessage{CachedObject: s.messageStorage.Load(messageID[:])}
+ func (s *Storage) Block(blockID BlockID) *CachedBlock {
+ return &CachedBlock{CachedObject: s.blockStorage.Load(blockID[:])}
}
- cachedMessage := messagelayer.Tangle().Storage.Message(msgID)
- if !cachedMessage.Exists() {
- msgObject.Release()
+ cachedBlock := blocklayer.Tangle().Storage.Block(blkID)
+ if !cachedBlock.Exists() {
+ blkObject.Release()
}
- message := cachedMessage.Unwrap()
+ block := cachedBlock.Unwrap()
```
- `Consume` will be useful when we want to apply a function on the cached object. `Consume` unwraps the `CachedObject` and passes a type-casted version to the consumer function.
Right after the object is consumed and when the callback is finished, the object is released.
```Go
- cachedMessage.Consume(func(message *tangle.Message) {
- doSomething(message)
+ cachedBlock.Consume(func(block *tangle.Block) {
+ doSomething(block)
})
```
- `ForEach` - allows to apply a `Consumer` function for every object residing within the cache and the underlying persistence layer.
- For example, this is how we can count the number of messages.
+ For example, this is how we can count the number of blocks.
```Go
- messageCount := 0
- messageStorage.ForEach(func(key []byte, cachedObject objectstorage.CachedObject) bool {
+ blockCount := 0
+ blockStorage.ForEach(func(key []byte, cachedObject objectstorage.CachedObject) bool {
cachedObject.Consume(func(object objectstorage.StorableObject) {
- messageCount++
+ blockCount++
})
}
```
@@ -188,8 +188,8 @@ we can start using it for its sole purpose, to actually store and read the parti
that stores an object only if it was not stored before and returns boolean indication if the object was stored.
`ComputeIfAbsent` works similarly but does not access the value log.
```Go
- cachedMessage := messageStorage.Store(newMessage)
- cachedMessage, stored := messageStorage.StoreIfAbsent(newMessage)
- cachedMessage := messageStorage.ComputeIfAbsent(newMessage, remappingFunction)
+ cachedBlock := blockStorage.Store(newBlock)
+ cachedBlock, stored := blockStorage.StoreIfAbsent(newBlock)
+ cachedBlock := blockStorage.ComputeIfAbsent(newBlock, remappingFunction)
```
diff --git a/documentation/docs/protocol_specification/components/autopeering.md b/documentation/docs/protocol_specification/components/autopeering.md
index 6a420f0e0a..9bf2caa4ac 100644
--- a/documentation/docs/protocol_specification/components/autopeering.md
+++ b/documentation/docs/protocol_specification/components/autopeering.md
@@ -216,6 +216,6 @@ Upon reception of a *Peering Request*, a peer *shall* make a decision to accept,
Neighbor removal can occur for several reasons:
* A node is replacing a neighbor with a better (in terms of score function) one;
* From the gossip layer, the connection with a neighbor is lost;
-* If some form of reputation or bad behavior is being monitored, a neighbor could be dropped in case of misbehavior. For example, a node could respond to the peering request but choose not to gossip received messages.
+* If some form of reputation or bad behavior is being monitored, a neighbor could be dropped in case of misbehavior. For example, a node could respond to the peering request but choose not to gossip received blocks.
Independently from the reason, when a peer drops a neighbor *shall* send a *Peering Drop* and remove the neighbor from its requested/accepted neighbor list. Upon reception of a *Peering Drop*, the peer *shall* remove the dropping neighbor from its requested/accepted neighbor list.
diff --git a/documentation/docs/protocol_specification/components/congestion_control.md b/documentation/docs/protocol_specification/components/congestion_control.md
index c03419d0b5..41cc31bdbc 100644
--- a/documentation/docs/protocol_specification/components/congestion_control.md
+++ b/documentation/docs/protocol_specification/components/congestion_control.md
@@ -1,12 +1,12 @@
---
-description: Every network has to deal with its intrinsic limited resources. GoShimmer uses congestion control algorithm to regulate the influx of messages in the network with the goal of maximizing throughput (messages/bytes per second) and minimizing delays.
+description: Every network has to deal with its intrinsic limited resources. GoShimmer uses congestion control algorithm to regulate the influx of blocks in the network with the goal of maximizing throughput (blocks/bytes per second) and minimizing delays.
image: /img/protocol_specification/congestion_control_algorithm_infographic_new.png
keywords:
- node
- congestion control algorithm
- honest node
-- message
+- block
- access mana
- malicious nde
- scheduling
@@ -16,11 +16,11 @@ keywords:
# Congestion Control
Every network has to deal with its limited intrinsic resources in bandwidth and node capabilities (CPU and
-storage). In this document, we present a congestion control algorithm to regulate the influx of messages in the
-network to maximize throughput (messages/bytes per second) and minimize delays. Furthermore, the
+storage). In this document, we present a congestion control algorithm to regulate the influx of blocks in the
+network to maximize throughput (blocks/bytes per second) and minimize delays. Furthermore, the
following requirements must be satisfied:
-* __Consistency__: If an honest node writes a message, it should be written by all honest nodes within some
+* __Consistency__: If an honest node writes a block, it should be written by all honest nodes within some
delay bound.
* __Fairness__: Nodes can obtain a share of the available throughput depending on their access Mana. Throughput is
shared in a way that an attempt to increase the allocation of any node necessarily results in the decrease
@@ -45,55 +45,55 @@ The algorithm has three core components:
### Prerequirements
-* __Node identity__: The congestion control module requires node accountability. Each message is associated with the node ID of its issuing
+* __Node identity__: The congestion control module requires node accountability. Each block is associated with the node ID of its issuing
node.
* __Access mana__: The congestion control module knows the access Mana of the network nodes to share the available
throughput fairly. Without access Mana, the network would be subject to Sybil attacks, which would incentivize actors
to artificially split (or aggregate) onto multiple identities.
-* __Message weight__. The weight of a message is used to prioritize messages over the others, and it is calculated
- based on the type and length of a message.
+* __Block weight__. The weight of a block is used to prioritize blocks over the others, and it is calculated
+ based on the type and length of a block.
### Outbox Buffer Management
-Once a message has successfully passed the message parser checks, is solid and booked, it is enqueued into the outbox
+Once a block has successfully passed the block parser checks, is solid and booked, it is enqueued into the outbox
buffer for scheduling. The outbox is split into several queues, each corresponding to a different node issuing
-messages. The total outbox buffer size is limited, but individual queues do not have a size limit. This section
-describes the operations of message enqueuing and dequeuing into and from the outbox buffer.
+blocks. The total outbox buffer size is limited, but individual queues do not have a size limit. This section
+describes the operations of block enqueuing and dequeuing into and from the outbox buffer.
The enqueuing mechanism includes the following components:
-* __Classification__: The mechanism identifies the queue where the message belongs according to the node ID of
- the message issuer.
-* __Message enqueuing__: The message is actually enqueued, the queue is sorted by message timestamps in increasing order
- and counters are updated (e.g., counters for the total number of messages in the queue).
+* __Classification__: The mechanism identifies the queue where the block belongs according to the node ID of
+ the block issuer.
+* __Block enqueuing__: The block is actually enqueued, the queue is sorted by block timestamps in increasing order
+ and counters are updated (e.g., counters for the total number of blocks in the queue).
The dequeuing mechanism includes the following components:
* __Queue selection__: A queue is selected according to a round-robin scheduling algorithm. In particular, the
mechanism uses a modified version of the deficit round-robin (DRR) algorithm.
-* __Message dequeuing__. The first (oldest) message of the queue, that satisfies certain conditions is dequeued. A
- message must satisfy the following conditions:
- * The message has a ready flag assigned. A ready flag is assigned to a message when all of its parents are eligible (the parents have been scheduled or confirmed).
- * The message timestamp is not in the future.
-* __Message skipping__. Once a message in the outbox is confirmed by another message approving it, it will get removed from the outbox buffer. Since the message already has approvers and is supposed to be replicated on enough nodes in the network, it is not gossiped or added to the tip pool, hence "skipped".
-* __Message drop__: Due to the node's bootstrapping, network congestion, or ongoing attacks, the buffer occupancy of the outbox buffer may become large. To keep bounded delays and isolate the attacker's spam, a node shall drop some messages if the total number of messages in all queues exceeds the maximum buffer size. Particularly, the node will drop messages from the queue with the largest mana-scaled length, computed by dividing the number of messages in the queue by the amount of access Mana of the corresponding node.
+* __Block dequeuing__. The first (oldest) block of the queue, that satisfies certain conditions is dequeued. A
+ block must satisfy the following conditions:
+ * The block has a ready flag assigned. A ready flag is assigned to a block when all of its parents are eligible (the parents have been scheduled or confirmed).
+ * The block timestamp is not in the future.
+* __Block skipping__. Once a block in the outbox is confirmed by another block approving it, it will get removed from the outbox buffer. Since the block already has children and is supposed to be replicated on enough nodes in the network, it is not gossiped or added to the tip pool, hence "skipped".
+* __Block drop__: Due to the node's bootstrapping, network congestion, or ongoing attacks, the buffer occupancy of the outbox buffer may become large. To keep bounded delays and isolate the attacker's spam, a node shall drop some blocks if the total number of blocks in all queues exceeds the maximum buffer size. Particularly, the node will drop blocks from the queue with the largest mana-scaled length, computed by dividing the number of blocks in the queue by the amount of access Mana of the corresponding node.
- `Mana-scaled queue size = queue size / node aMana`;
* __Scheduler management__: The scheduler counters and pointers are updated.
#### False positive drop
-During an attack or congestion, a node may drop a message already scheduled by the rest of the network, causing a
-_false positive drop_. This means that the message’s future cone will not be marked as _ready_ as its past cone is not
-eligible. This is not a problem because messages dropped from the outbox are already booked and confirmation comes
-eventually due to messages received from the rest of the network which approve the dropped ones.
+During an attack or congestion, a node may drop a block already scheduled by the rest of the network, causing a
+_false positive drop_. This means that the block’s future cone will not be marked as _ready_ as its past cone is not
+eligible. This is not a problem because blocks dropped from the outbox are already booked and confirmation comes
+eventually due to blocks received from the rest of the network which approve the dropped ones.
#### False positive schedule
-Another possible problem is that a node schedules a message that the rest of the network drops, causing a _false
-positive_. The message is gossiped and added to the tip pool. However, it will never accumulate enough approval
-weight to be _Confirmed_. Eventually, the node will orphan this part of tangle as the messages in the future-cone
+Another possible problem is that a node schedules a block that the rest of the network drops, causing a _false
+positive_. The block is gossiped and added to the tip pool. However, it will never accumulate enough approval
+weight to be _Confirmed_. Eventually, the node will orphan this part of tangle as the blocks in the future-cone
will not pass the [Time Since Confirmation check](tangle.md#tip-pool-and-time-since-confirmation-check) during tip
selection.
@@ -102,7 +102,7 @@ selection.
Scheduling is the most critical task in the congestion control component. The scheduling algorithm must guarantee that
an honest node `node` meets the following requirements:
-* __Consistency__: The node's messages will not accumulate indefinitely at any node, and so, starvation is avoided.
+* __Consistency__: The node's blocks will not accumulate indefinitely at any node, and so, starvation is avoided.
* __Fairness__: The node's fair share of the network resources are allocated to it according to its access Mana.
* __Security__: Malicious nodes sending above their allowed rate will not interrupt a node's throughput requirement.
@@ -116,19 +116,19 @@ supports anywhere up to 65535 separate queues).
The DRR scans all non-empty queues in sequence. When it selects a non-empty queue, the DDR will increment the queue's
priority counter (_deficit_) by a specific value (_quantum_). Then, the value of the deficit counter is a maximal amount
-of bytes that can be sent this turn. If the deficit counter is greater than the weight of the message at the head of the
-queue, the DRR can schedule this message, and this weight decrements the value of the counter. In our implementation,
+of bytes that can be sent this turn. If the deficit counter is greater than the weight of the block at the head of the
+queue, the DRR can schedule this block, and this weight decrements the value of the counter. In our implementation,
the quantum is proportional to the node's access Mana, and we add a cap on the maximum deficit that a node can achieve
-to keep the network latency low. It is also important to mention that the DRR can assign the weight of the message so
-that specific messages can be prioritized (low weight) or penalized (large weight); by default, in our mechanism, the
-weight is proportional to the message size measured in bytes. The weight of a message is set by the
+to keep the network latency low. It is also important to mention that the DRR can assign the weight of the block so
+that specific blocks can be prioritized (low weight) or penalized (large weight); by default, in our mechanism, the
+weight is proportional to the block size measured in bytes. The weight of a block is set by the
function `WorkCalculator()`.
:::note
-The network manager sets up the desired maximum (fixed) rate `SCHEDULING_RATE` at which it will schedule messages,
-computed in weight per second. This implies that every message is scheduled after a delay which is equal to the weight (
-size as default) of the latest scheduled message times the parameter
+The network manager sets up the desired maximum (fixed) rate `SCHEDULING_RATE` at which it will schedule blocks,
+computed in weight per second. This implies that every block is scheduled after a delay which is equal to the weight (
+size as default) of the latest scheduled block times the parameter
`SCHEDULING_RATE`. This rate mainly depends on the degree of decentralization you desire: a larger rate leads to
higher throughput but will leave behind slower devices that will fall out of sync.
@@ -136,21 +136,21 @@ higher throughput but will leave behind slower devices that will fall out of syn
### Rate Setting
-If nodes were continuously willing to issue new messages,rate-setting would not be a problem. Nodes could simply operate
+If nodes were continuously willing to issue new blocks,rate-setting would not be a problem. Nodes could simply operate
at a fixed, assured rate and share the total throughput according to the percentage of access Mana they own. The
scheduling algorithm would ensure that this rate is enforceable, and only misbehaving nodes would experience increasing
-delays or dropped messages. However, it is unrealistic to expect all nodes always to have messages to issue. We would
+delays or dropped blocks. However, it is unrealistic to expect all nodes always to have blocks to issue. We would
like nodes to better utilize network resources without causing excessive congestion and violating any requirement.
We propose a rate-setting algorithm inspired by TCP — each node employs [additive increase, multiplicative decrease]
(https://https://epubs.siam.org/doi/book/10.1137/1.9781611974225) (AIMD) rules to update their issuance rate in response
-to congestion events. In the case of distributed ledgers, all message traffic passes through all nodes, contrary to the
+to congestion events. In the case of distributed ledgers, all block traffic passes through all nodes, contrary to the
case of traffic typically found in packet-switched networks and other traditional network architectures. Under these
conditions, local congestion at a node is all that is required to indicate congestion elsewhere in the network. This
observation is crucial as it presents an opportunity for a congestion control algorithm based entirely on local traffic.
Our rate-setting algorithm outlines the AIMD rules employed by each node to set their issuance rate. Rate updates for a
-node occur each time a new message is scheduled if the node has a non-empty set of its own messages that are not yet
+node occur each time a new block is scheduled if the node has a non-empty set of its own blocks that are not yet
scheduled. The node sets its own local additive-increase variable `localIncrease(node)` based on its access Mana and a
global increase rate parameter `RATE_SETTING_INCREASE`. An appropriate choice of
`RATE_SETTING_INCREASE` ensures a conservative global increase rate that does not cause problems even when many nodes
@@ -158,7 +158,7 @@ simultaneously increase their rate.
Nodes wait `RATE_SETTING_PAUSE` seconds after a global multiplicative decrease parameter `RATE_SETTING_DECREASE`, during
which no further updates are made, to allow the reduced rate to take effect and prevent multiple successive decreases.
-At each update, the node checks how many of its own messages are in its outbox queue and responds with a multiplicative
+At each update, the node checks how many of its own blocks are in its outbox queue and responds with a multiplicative
decrease if this number is above a threshold,
-`backoff(node)`, which is proportional to the node's access Mana. If the number of the node's messages in the outbox is
+`backoff(node)`, which is proportional to the node's access Mana. If the number of the node's blocks in the outbox is
below the threshold, the node's issuance rate is incremented by its local increase variable, `localIncrease(node)`.
diff --git a/documentation/docs/protocol_specification/components/consensus_mechanism.md b/documentation/docs/protocol_specification/components/consensus_mechanism.md
index 4d5b5b4749..1f0cdaba65 100644
--- a/documentation/docs/protocol_specification/components/consensus_mechanism.md
+++ b/documentation/docs/protocol_specification/components/consensus_mechanism.md
@@ -4,73 +4,73 @@ description: The consensus mechanism is necessary to achieve agreement among the
keywords:
- node
- approval weight
-- branch
+- conflict
- opinion
-- message
+- block
- high probability
- active consensus mana
---
# Consensus Mechanism
-The consensus mechanism is necessary to achieve agreement among the nodes of the network. In case of a double spend, one way to decide which transaction should be considered valid would be to order them and pick the oldest one. However, the Tangle is only partially ordered. To tackle this problem in the context of the Tangle, we have designed an open and leaderless consensus mechanism that utilizes the Tangle as a medium to exchange votes. Any node can add a message to the Tangle, and each message added to the Tangle represents a virtual vote (i.e. there is no additional overhead to communicate votes) to its entire past.
+The consensus mechanism is necessary to achieve agreement among the nodes of the network. In case of a double spend, one way to decide which transaction should be considered valid would be to order them and pick the oldest one. However, the Tangle is only partially ordered. To tackle this problem in the context of the Tangle, we have designed an open and leaderless consensus mechanism that utilizes the Tangle as a medium to exchange votes. Any node can add a block to the Tangle, and each block added to the Tangle represents a virtual vote (i.e. there is no additional overhead to communicate votes) to its entire past.
-The consensus mechanism can broadly be devided into consensus on two separate entities. On the one hand, we need to resolve any conflicts on the underlying UTXO ledger to prevent double spends. On the other hand, we need to make sure that messages within the Tangle are not orphaned. Both are simply derived by observing the Tangle and objectively keeping track of [Approval Weight (AW)](#Approval-Weight-AW) with cMana (more specifically [active cMana](#Active-cMana)) as a Sibyl protection. Once a [branch](ledgerstate.md#branches) (or message) reaches a certain AW threshold, an application can consider it as *confirmed*. To simplify this notion we introduce [Grades of Finality (GoF)](#Grades-of-Finality-GoF) where a higher GoF represents a higher confidence.
+The consensus mechanism can broadly be devided into consensus on two separate entities. On the one hand, we need to resolve any conflicts on the underlying UTXO ledger to prevent double spends. On the other hand, we need to make sure that blocks within the Tangle are not orphaned. Both are simply derived by observing the Tangle and objectively keeping track of [Approval Weight (AW)](#Approval-Weight-AW) with cMana (more specifically [active cMana](#Active-cMana)) as a Sibyl protection. Once a [conflict](ledgerstate.md#conflicts) (or block) reaches a certain AW threshold, an application can consider it as *confirmed*. To simplify this notion we introduce [Grades of Finality (GoF)](#Grades-of-Finality-GoF) where a higher GoF represents a higher confidence.
| Name | Component | Initial/local opinion | Consensus | Comparable blockchain mechanism for voting/finality |
| -------------------- | --- | --------------------- | ------------ | --------------------------------------------------- |
-| voting on conflicts | UTXO ledger | OTV/FPCS | branch/tx AW | longest chain rule |
-| finality of messages | Tangle | inclusion score via tip selection | message AW | x block rule |
+| voting on conflicts | UTXO ledger | OTV/FPCS | conflict/tx AW | longest chain rule |
+| finality of blocks | Tangle | inclusion score via tip selection | block AW | x block rule |
-On an abstract level, a node can be seen as a replicated state machine, just following whatever it receives through the Tangle, and, in case of messages containing transactions, modifying the UTXO ledger. Only when a node wants to issue a message (read as: *cast a vote*) it needs to evaluate its own local opinion via [modular conflict selection function](#Modular-Conflict-Selection-Function). This decoupling of coming to consensus and setting the initial opinion allows for great flexibility and separation of concerns.
+On an abstract level, a node can be seen as a replicated state machine, just following whatever it receives through the Tangle, and, in case of blocks containing transactions, modifying the UTXO ledger. Only when a node wants to issue a block (read as: *cast a vote*) it needs to evaluate its own local opinion via [modular conflict selection function](#Modular-Conflict-Selection-Function). This decoupling of coming to consensus and setting the initial opinion allows for great flexibility and separation of concerns.
## Approval Weight (AW)
-Approval weight represents the [weight](#active-consensus-mana) of branches (and messages), similar to the longest chain rule in Nakamoto consensus. However, instead of selecting a leader based on a puzzle (PoW) or stake (PoS), it allows every node to express its opinion by simply issuing any message and attaching it in a part of the Tangle it *likes* (based on its initial opinion on messages and possibly utilizing the [like switch](#Like-Switch) to express its opinion on branches).
+Approval weight represents the [weight](#active-consensus-mana) of conflicts (and blocks), similar to the longest chain rule in Nakamoto consensus. However, instead of selecting a leader based on a puzzle (PoW) or stake (PoS), it allows every node to express its opinion by simply issuing any block and attaching it in a part of the Tangle it *likes* (based on its initial opinion on blocks and possibly utilizing the [like switch](#Like-Switch) to express its opinion on conflicts).
-It is important to note that tracking of AW for branches and markers/messages is orthogonal. Thus, a message can reach a high AW whereas its contained payload, e.g., a transaction being a double spend, does not reach any AW on branch/UTXO level.
+It is important to note that tracking of AW for conflicts and markers/blocks is orthogonal. Thus, a block can reach a high AW whereas its contained payload, e.g., a transaction being a double spend, does not reach any AW on conflict/UTXO level.
### Detailed Design
-Approval weight AW increases because of voters (nodes) that cast votes for branches and messages by means of making statements. This is necessary due to the changing nature of cMana over time, which prevents simply counting the AW per branch or message. Additionally, whenever a node changes its opinion on a conflict, the previous vote needs to be invalidated.
+Approval weight AW increases because of voters (nodes) that cast votes for conflicts and blocks by means of making statements. This is necessary due to the changing nature of cMana over time, which prevents simply counting the AW per conflict or block. Additionally, whenever a node changes its opinion on a conflict, the previous vote needs to be invalidated.
#### Definitions
-* **Statement**: A statement is any message issued by a *node*, expressing its opinion and casting a (virtual) vote. It can be objectively ordered by its timestamp, and, if equal, its message ID.
-* **Branch voter**: A branch voter is a *node* that issued a statement attaching to a branch, and, thus, voting for it.
-* **Marker/message voter**: A marker/message's voter is a *node* that issued a statement directly or indirectly referencing a marker/message, including its issuer.
+* **Statement**: A statement is any block issued by a *node*, expressing its opinion and casting a (virtual) vote. It can be objectively ordered by its timestamp, and, if equal, its block ID.
+* **Conflict voter**: A conflict voter is a *node* that issued a statement attaching to a conflict, and, thus, voting for it.
+* **Marker/block voter**: A marker/block's voter is a *node* that issued a statement directly or indirectly referencing a marker/block, including its issuer.
-#### Branches
-Tracking voters of [branches](ledgerstate.md#branches) is an effective way of objective virtual voting. It allows nodes to express their opinion simply by attaching a statement to a branch they like (see [like switch](#Like-Switch)). This statement needs to propagate down the branch DAG, adding support to each of the branch's parents. In case a voter changes their opinion, support needs to be revoked from all conflicting branches and their children. Thus, a node can only support one branch of a conflict set.
+#### Conflicts
+Tracking voters of [conflicts](ledgerstate.md#conflicts) is an effective way of objective virtual voting. It allows nodes to express their opinion simply by attaching a statement to a conflict they like (see [like switch](#Like-Switch)). This statement needs to propagate down the conflict DAG, adding support to each of the conflict's parents. In case a voter changes their opinion, support needs to be revoked from all conflicting conflicts and their children. Thus, a node can only support one conflict of a conflict set.
To make this more clear consider the following example:
-[![Branch Voter](/img/protocol_specification/branches.png)](/img/protocol_specification/branches.png)
+[![Conflict Voter](/img/protocol_specification/conflicts.png)](/img/protocol_specification/conflicts.png)
-The green node issued **statement 1** and attached it to the aggregated branch `Branch 1.1 + Branch 4.1.1`. Thus, the green node is a voter of all the aggregated branch's parent branches, which are (from top to bottom) `Branch 4.1.1`, `Branch 1.1`, `Branch 4.1`, `Branch 1`, and `Branch 4`.
+The green node issued **statement 1** and attached it to the aggregated conflict `Conflict 1.1 + Conflict 4.1.1`. Thus, the green node is a voter of all the aggregated conflict's parent conflicts, which are (from top to bottom) `Conflict 4.1.1`, `Conflict 1.1`, `Conflict 4.1`, `Conflict 1`, and `Conflict 4`.
-Then, the green node issued **statement 2** and attached it to `Branch 4.1.2`. This makes the green node a voter of `Branch 4.1.2`, however, `Branch 4.1.1` is its conflict branch and thus support for `Branch 4.1.1` has to be revoked.
+Then, the green node issued **statement 2** and attached it to `Conflict 4.1.2`. This makes the green node a voter of `Conflict 4.1.2`, however, `Conflict 4.1.1` is its conflict conflict and thus support for `Conflict 4.1.1` has to be revoked.
-`Branch 4.1`, `Branch 4` are parent branches of `Branch 4.1.2`, which the green node is still supporting. Since `Branch 1.1`, `Branch 1` are not conflicting to either of `Branch 4.1.2`'s parents, the green node remains their voter.
+`Conflict 4.1`, `Conflict 4` are parent conflicts of `Conflict 4.1.2`, which the green node is still supporting. Since `Conflict 1.1`, `Conflict 1` are not conflicting to either of `Conflict 4.1.2`'s parents, the green node remains their voter.
-Finally, the green nodes issued **statement 3**, which is in `Branch 2`. Now the green node is a voter of `Branch 2`, and no longer a voter of `Branch 1`, since `Branch 1` is conflicting to `Branch 2`. Note that, this voter removal will propagate to child branches. Thus, the green node is removed from `Branch 1.1` as well.
-`Branch 3`, `4` and both of their child branches have nothing to do with this attachement, the voter status remains.
+Finally, the green nodes issued **statement 3**, which is in `Conflict 2`. Now the green node is a voter of `Conflict 2`, and no longer a voter of `Conflict 1`, since `Conflict 1` is conflicting to `Conflict 2`. Note that, this voter removal will propagate to child conflicts. Thus, the green node is removed from `Conflict 1.1` as well.
+`Conflict 3`, `4` and both of their child conflicts have nothing to do with this attachement, the voter status remains.
-It is important to notice that the arrival order of the statements does not make a difference on the final outcome. Due to the fact that statements can be ordered objectively, every node in the network eventually comes to the same conclusion as to who is supporting which branch, even when nodes change their opinions.
+It is important to notice that the arrival order of the statements does not make a difference on the final outcome. Due to the fact that statements can be ordered objectively, every node in the network eventually comes to the same conclusion as to who is supporting which conflict, even when nodes change their opinions.
##### Calculation of Approval Weight
-The approval weight itself is calculated every time a new voter is added/removed to a branch. The AW for a branch *B* is calculated as follows:
+The approval weight itself is calculated every time a new voter is added/removed to a conflict. The AW for a conflict *B* is calculated as follows:
```
AW(B) = 'active cMana of voters(B)' / 'total active cMana'
```
#### Markers
-It would be computationally expensive to track the AW for each message individually. Instead, we approximate the AW with the help of [markers](markers.md). Once a marker fulfills a GoF, the corresponding GoF value is propagated into its past cone until all messages have an equal or higher GoF.
+It would be computationally expensive to track the AW for each block individually. Instead, we approximate the AW with the help of [markers](markers.md). Once a marker fulfills a GoF, the corresponding GoF value is propagated into its past cone until all blocks have an equal or higher GoF.
Recall that markers are not part of the core protocol. As such, this description is merely an optimization from an implementation standpoint.
@@ -83,7 +83,7 @@ Take the figure below as an example:
The purple circles represent markers of the same sequence, the numbers are marker indices.
-Four nodes (A to D) issue statements with past markers of the purple sequence. Node A and D issue messages having past marker with index 6, thus node A and D are the voters of marker 6 and all markers before, which is 1 to 5. On the other hand, node B issues a message having past marker with index 3, which implies node B is a voter for marker 1 and 2 as well.
+Four nodes (A to D) issue statements with past markers of the purple sequence. Node A and D issue blocks having past marker with index 6, thus node A and D are the voters of marker 6 and all markers before, which is 1 to 5. On the other hand, node B issues a block having past marker with index 3, which implies node B is a voter for marker 1 and 2 as well.
This is a fast look-up and avoids walking through a marker's future cone when it comes to retrieving voters for approval weight calculation.
@@ -94,7 +94,7 @@ Here is another more complicated example with parent sequences:
The voter will be propagated to the parent sequence.
-Node A issues message A2 having past markers `[1,4], [3,4]`, which implies node A is a voter for marker `[1,1]` to `[1,4]`, `[2,1]` to `[2,3]`, and `[3,4]` as well as the message with marker `[3,5]` itself.
+Node A issues block A2 having past markers `[1,4], [3,4]`, which implies node A is a voter for marker `[1,1]` to `[1,4]`, `[2,1]` to `[2,3]`, and `[3,4]` as well as the block with marker `[3,5]` itself.
##### Calculation of Approval Weight
The approval weight itself is calculated every time a new voter is added to a marker. The AW for a marker *M* is calculated as follows:
@@ -107,7 +107,7 @@ AW(M) = 'active cMana of voters(M)' / 'total active cMana'
### Grades of Finality (GoF)
The tracking of AW itself is objective as long as the Tangle converges on all nodes. However, delays, network splits and ongoing attacks might lead to differences in perception so that a finality can only be expressed probabilistically. The higher the AW, the less likely a decision is going to be reversed. To abstract and simplify this concept we introduce the GoF. Currently, they are simply a translation of AW thresholds to a GoF, but one can imagine other factors as well.
-**Message / non-conflicting transaction**
+**Block / non-conflicting transaction**
GoF | AW
-- | --
0 | < 0.25
@@ -115,7 +115,7 @@ GoF | AW
2 | >= 0.45
3 | >= 0.67
-**Branch / conflicting transaction**
+**Conflict / conflicting transaction**
GoF | AW
-- | --
0 | < 0.25
@@ -124,10 +124,10 @@ GoF | AW
3 | >= 0.67
These thresholds play a curcial role in the safety vs. liveness of the protocol, together with the exact workings of [active cMana](#Active-cMana). We are currently investigating them with in-depth simulations.
-* The higher the AW threshold the more voters a branch or message will need to reach a certain GoF -> more secure but higher confirmation time.
+* The higher the AW threshold the more voters a conflict or block will need to reach a certain GoF -> more secure but higher confirmation time.
* As a consequence of the above point, TangleTime will be tougher to advance; making the cMana window more likely to get stuck and confirmations to halt forever.
-An application needs to decide when to consider a message and (conflicting) transaction as *confirmed* based on its safety requirements. Conversely, a message or branch that does not gain enough AW stays pending forever (and is orphaned/removed on snapshotting time).
+An application needs to decide when to consider a block and (conflicting) transaction as *confirmed* based on its safety requirements. Conversely, a block or conflict that does not gain enough AW stays pending forever (and is orphaned/removed on snapshotting time).
## Modular Conflict Selection Function
@@ -135,29 +135,29 @@ The modular conflict selection function is an abstraction on how a node sets an
### Pure On Tangle Voting (OTV)
-The idea of pure OTV is simple: set the initial opinion based on the currently heavier branch as perceived by AW. However, building a coherent overall opinion means that conflicting realities (possible outcomes of overlapping conflict sets) can not be liked at the same time, which makes finding the heaviest branch to like not as trivial as it may seem.
+The idea of pure OTV is simple: set the initial opinion based on the currently heavier conflict as perceived by AW. However, building a coherent overall opinion means that conflicting realities (possible outcomes of overlapping conflict sets) can not be liked at the same time, which makes finding the heaviest conflict to like not as trivial as it may seem.
-In the examples below, a snapshot at a certain time of a UTXO-DAG with its branches is shown. The gray boxes labelled with `O:X` represent an output and and arrow from an output to a transaction means that the transaction is consuming this output. An arrow from a transaction to an output creates this output. An output being consumed multiple times is a conflict and the transactions create a branch, respectively. The number assiged to a branch, e.g., `Branch A = 0.2`, defines the currently perceived Approval Weight of the branch. A branch highlighted in **bold** is the outcome of applying the pure OTV rules, i.e., the branches that are liked from the perspective of the node.
+In the examples below, a snapshot at a certain time of a UTXO-DAG with its conflicts is shown. The gray boxes labelled with `O:X` represent an output and and arrow from an output to a transaction means that the transaction is consuming this output. An arrow from a transaction to an output creates this output. An output being consumed multiple times is a conflict and the transactions create a conflict, respectively. The number assiged to a conflict, e.g., `Conflict A = 0.2`, defines the currently perceived Approval Weight of the conflict. A conflict highlighted in **bold** is the outcome of applying the pure OTV rules, i.e., the conflicts that are liked from the perspective of the node.
**Example 1**
-The example below shows how applying the heavier branch rule recursively results in the end result of `A`, `C`, `E`, and thus the aggregated branch `C+E` being liked. Looking at the individual branch weights this result might be surprising: branch `B` has a weight of `0.3` which is bigger than its conflict branch `A = 0.2`. However, `B` is also in conflict with `C` which has an even higher weight `0.4`. Thus, `C` is liked, `B` cannot be liked, and `A` suddenly can become liked again.
+The example below shows how applying the heavier conflict rule recursively results in the end result of `A`, `C`, `E`, and thus the aggregated conflict `C+E` being liked. Looking at the individual conflict weights this result might be surprising: conflict `B` has a weight of `0.3` which is bigger than its conflict conflict `A = 0.2`. However, `B` is also in conflict with `C` which has an even higher weight `0.4`. Thus, `C` is liked, `B` cannot be liked, and `A` suddenly can become liked again.
-`E = 0.35` is heavier than `D = 0.15` and is therefore liked. An (aggregated) branch can only be liked if all its parents are liked which is the case with `C+E`.
+`E = 0.35` is heavier than `D = 0.15` and is therefore liked. An (aggregated) conflict can only be liked if all its parents are liked which is the case with `C+E`.
![OTV example 1](/img/protocol_specification/otv-example-1.png)
**Example 2**
-This example is exactly the same as example 1, except that branch `C` has a weight of `0.25` instead of `0.4`. Now the end result is branches `B` and `E` liked. Branch `B` is heavier than branch `C` and `A` (winning in all its conflict sets) and becomes liked. Therefore, neither `A` nor `C` can be liked.
+This example is exactly the same as example 1, except that conflict `C` has a weight of `0.25` instead of `0.4`. Now the end result is conflicts `B` and `E` liked. Conflict `B` is heavier than conflict `C` and `A` (winning in all its conflict sets) and becomes liked. Therefore, neither `A` nor `C` can be liked.
-Again, `E = 0.35` is heavier than `D = 0.15` and is therefore liked. An (aggregated) branch can only be liked if all its parents are liked which is not the case with `C+E` in this example.
+Again, `E = 0.35` is heavier than `D = 0.15` and is therefore liked. An (aggregated) conflict can only be liked if all its parents are liked which is not the case with `C+E` in this example.
![OTV example 2](/img/protocol_specification/otv-example-2.png)
### Metastability: OTV and FPCS
-Pure OTV is susceptible to metastability attacks: If a powerful attacker can keep any branch of a conflict set reaching a high enough approval weight, the attacker can prevent the network from tipping to a side and thus theoretically halt a decision on the given conflicts indefinitely. Only the decision on the targeted conflicts is affected but the rest of the consensus can continue working. By forcing a conflict to stay unresolved, an attacker can, at most, prevent a node from pruning resources related to the pending decision.
+Pure OTV is susceptible to metastability attacks: If a powerful attacker can keep any conflict of a conflict set reaching a high enough approval weight, the attacker can prevent the network from tipping to a side and thus theoretically halt a decision on the given conflicts indefinitely. Only the decision on the targeted conflicts is affected but the rest of the consensus can continue working. By forcing a conflict to stay unresolved, an attacker can, at most, prevent a node from pruning resources related to the pending decision.
In order to prevent such attacks from happening we are planning to implement FPCS with OTV as a conflict selection function. A more detailed description can be found [here](https://iota.cafe/t/on-tangle-voting-with-fpcs/1218).
@@ -165,52 +165,52 @@ In order to prevent such attacks from happening we are planning to implement FPC
## Like Switch
-Without the like switch, messages vote for branches simply by attaching in their underlying conflict's future cone. While this principle is simple, it has one major flaw: the part of the Tangle of the losing conflict is abandoned so that only the *valid* part remains. This might lead to mass orphanage of "unlucky" messages that happened to first vote for the losing branch. With the help of weak parents these messages might be *rescued* without a reattachment but the nature of weak parents makes it necessary so that every message needs to be picked up individually. Next to the fact that keeping such a weak tip pool is computationally expensive, it also open up orphanage attack scenarios by keeping conflicts undecided (metastability attack turns into orphanage attack).
+Without the like switch, blocks vote for conflicts simply by attaching in their underlying conflict's future cone. While this principle is simple, it has one major flaw: the part of the Tangle of the losing conflict is abandoned so that only the *valid* part remains. This might lead to mass orphanage of "unlucky" blocks that happened to first vote for the losing conflict. With the help of weak parents these blocks might be *rescued* without a reattachment but the nature of weak parents makes it necessary so that every block needs to be picked up individually. Next to the fact that keeping such a weak tip pool is computationally expensive, it also open up orphanage attack scenarios by keeping conflicts undecided (metastability attack turns into orphanage attack).
-The like switch is a special type of parent reference that enables keeping everything in the Tangle, even conflicting transactions that are not included into the valid ledger state by means of consensus. Therefore, it prevents mass orphanage and enables a decoupling of **voting on conflicts (UTXO ledger)** and **finality of messages / voting on messages (Tangle)**. It makes the overall protocol (and its implementation) not only more efficient but also easier to reason about and allows for lazy evaluation of a node's opinion, namely only when a node wants to issue a message (read as: *cast a vote*).
+The like switch is a special type of parent reference that enables keeping everything in the Tangle, even conflicting transactions that are not included into the valid ledger state by means of consensus. Therefore, it prevents mass orphanage and enables a decoupling of **voting on conflicts (UTXO ledger)** and **finality of blocks / voting on blocks (Tangle)**. It makes the overall protocol (and its implementation) not only more efficient but also easier to reason about and allows for lazy evaluation of a node's opinion, namely only when a node wants to issue a block (read as: *cast a vote*).
-From a high-level perspective, the like switch can be seen as a set of rules that influence the way a message inherits its branches. Using only strong parents, a message inherits all its parents' branches. A like parent retains all the properties of the strong parent (i.e., inherit the branch of said parent) but additionally it means to exclude all branches that are conflicting with the liked branch.
-Through this mechanism, it becomes possible to attach a message anywhere in the Tangle but still only vote for the branches that are liked. Thus, decoupling of message AW and branch AW.
+From a high-level perspective, the like switch can be seen as a set of rules that influence the way a block inherits its conflicts. Using only strong parents, a block inherits all its parents' conflicts. A like parent retains all the properties of the strong parent (i.e., inherit the conflict of said parent) but additionally it means to exclude all conflicts that are conflicting with the liked conflict.
+Through this mechanism, it becomes possible to attach a block anywhere in the Tangle but still only vote for the conflicts that are liked. Thus, decoupling of block AW and conflict AW.
**Examples**
-To make this more clear, let's consider the following examples. The branches `A` and `B`, as well as `C` and `D` form an independent conflict set, respectively. The `Branch Weights` are the weights as perceived by the node that currently wants to create a message.
+To make this more clear, let's consider the following examples. The conflicts `A` and `B`, as well as `C` and `D` form an independent conflict set, respectively. The `Conflict Weights` are the weights as perceived by the node that currently wants to create a block.
-**Message creation**
-A node performs random tip selection (e.g. URTS) and in this example selects messages `5` and `11` as strong parents. Now the node needs to determine whether it currently *likes* all the branches of the selected messages (`red, yellow, green`) in order to apply the like switch (if necessary) and vote for its liked branches.
+**Block creation**
+A node performs random tip selection (e.g. URTS) and in this example selects blocks `5` and `11` as strong parents. Now the node needs to determine whether it currently *likes* all the conflicts of the selected blocks (`red, yellow, green`) in order to apply the like switch (if necessary) and vote for its liked conflicts.
-![Like switch: message creation undecided](/img/protocol_specification/like-switch-message-creation-1.png)
+![Like switch: block creation undecided](/img/protocol_specification/like-switch-block-creation-1.png)
When performing the conflict selection function with pure OTV it will yield the result:
- `red` is disliked, instead like `purple`
- `green` is disliked, instead like `yellow`
-Therefore, the message needs to set two like references to the messages that introduced the branch (first attachment of the transaction). The final result is the following:
-- branches `purple` and `yellow` are supported
-- message `5` (and its entire past cone, `3`, `2`, `1`) is supported
-- message `11` (and its entire past cone, `6`, `4`, `2`, `1`) is supported
-- message `6` (and its entire past cone, `4`, `2`, `1`)
-- message `7` (and its entire past cone, `1`)
+Therefore, the block needs to set two like references to the blocks that introduced the conflict (first attachment of the transaction). The final result is the following:
+- conflicts `purple` and `yellow` are supported
+- block `5` (and its entire past cone, `3`, `2`, `1`) is supported
+- block `11` (and its entire past cone, `6`, `4`, `2`, `1`) is supported
+- block `6` (and its entire past cone, `4`, `2`, `1`)
+- block `7` (and its entire past cone, `1`)
-![Like switch: message creation](/img/protocol_specification/like-switch-message-creation-2.png)
+![Like switch: block creation](/img/protocol_specification/like-switch-block-creation-2.png)
-**Message booking**
-On the flip side of message creation (casting a vote) is applying a vote when booking a message, where the process is essentiall just reversed. Assuming a node receives message `17`. First, it determines the branches of the strong parents (`red`, `yellow`, `purple`) and like parents (`red`). Now, it removes all branches that are conflicting with the like parents' branches (i.e., `purple`) and is left with the branches `red` and `yellow` (and adds the like branches to it, which in this case is without effect). If the resulting branch is `invalid`, (e.g., because it combines conflicting branches) then the message itself is considered invalid because the issuer did not follow the protocol.
+**Block booking**
+On the flip side of block creation (casting a vote) is applying a vote when booking a block, where the process is essentiall just reversed. Assuming a node receives block `17`. First, it determines the conflicts of the strong parents (`red`, `yellow`, `purple`) and like parents (`red`). Now, it removes all conflicts that are conflicting with the like parents' conflicts (i.e., `purple`) and is left with the conflicts `red` and `yellow` (and adds the like conflicts to it, which in this case is without effect). If the resulting conflict is `invalid`, (e.g., because it combines conflicting conflicts) then the block itself is considered invalid because the issuer did not follow the protocol.
-In this example the final result is the following (message `17` supports):
-- branches `red` and `yellow`
-- message `16` and its entire past cone
-- message `11` and its entire past cone
-- message `4` and its entire past cone
+In this example the final result is the following (block `17` supports):
+- conflicts `red` and `yellow`
+- block `16` and its entire past cone
+- block `11` and its entire past cone
+- block `4` and its entire past cone
-![Like switch: message booking](/img/protocol_specification/like-switch-message-booking.png)
+![Like switch: block booking](/img/protocol_specification/like-switch-block-booking.png)
## Active cMana
-The consensus mechanism weighs votes on branches (messages in future cone with like switch) or message inclusion (all messages in future cone) by the limited resource cMana, which is thus our Sybil-protection mechanism. cMana can be pledged to any nodeID, including offline or non-existing nodes, when transferring funds (in the proportion of the funds) and is instantly available (current implementation without EMA). Funds might get lost/locked over time, and, therefore, the total accessible cMana declines as well. **Consequently, a fixed cMana threshold cannot be used to determine a voting outcome.**
+The consensus mechanism weighs votes on conflicts (blocks in future cone with like switch) or block inclusion (all blocks in future cone) by the limited resource cMana, which is thus our Sybil-protection mechanism. cMana can be pledged to any nodeID, including offline or non-existing nodes, when transferring funds (in the proportion of the funds) and is instantly available (current implementation without EMA). Funds might get lost/locked over time, and, therefore, the total accessible cMana declines as well. **Consequently, a fixed cMana threshold cannot be used to determine a voting outcome.**
-Finalization of voting outcomes should happen once a conflict is *sufficiently* decided and/or a message is *sufficiently* deep in the Tangle. However, measuring AW in terms of cMana alone does not yield enough information. Therefore, a degree/grade of finalization and of voting outcome in relation to *something*, e.g., **recently active nodes**, is preferred. This measure should have the following properties:
+Finalization of voting outcomes should happen once a conflict is *sufficiently* decided and/or a block is *sufficiently* deep in the Tangle. However, measuring AW in terms of cMana alone does not yield enough information. Therefore, a degree/grade of finalization and of voting outcome in relation to *something*, e.g., **recently active nodes**, is preferred. This measure should have the following properties:
- security/resilience against various attacks
- lose influence (shortly) after losing access to funds
- no possibility of long-range attacks
@@ -219,10 +219,10 @@ Finalization of voting outcomes should happen once a conflict is *sufficiently*
### Current Implementation
-Active cMana in GoShimmer basically combines two components in an active cMana WeightProvider: the TangleTime and the current state of cMana. A node is considered to be active if it has issued any message in the last `activeTimeThreshold=30min` with respect to the TangleTime. The total active consensus mana is, therefore, the sum of all the consensus mana of each active node.
+Active cMana in GoShimmer basically combines two components in an active cMana WeightProvider: the TangleTime and the current state of cMana. A node is considered to be active if it has issued any block in the last `activeTimeThreshold=30min` with respect to the TangleTime. The total active consensus mana is, therefore, the sum of all the consensus mana of each active node.
#### TangleTime
-The TangleTime is the issuing time of the last confirmed message. It cannot be attacked without controlling enough mana to accept incorrect timestamps, making it a reliable, attack-resistant quantity.
+The TangleTime is the issuing time of the last confirmed block. It cannot be attacked without controlling enough mana to accept incorrect timestamps, making it a reliable, attack-resistant quantity.
![Tangle Time](/img/protocol_specification/tangle_time.jpg)
@@ -231,15 +231,15 @@ The current state of cMana is simply the current cMana vector, at the time the a
#### Putting it together
-Every node keeps track of a list of active nodes locally. Whenever a node issues a message it is added to the list of active nodes (nodeID -> issuing time of latest message). When the active cMana is requested all relevant node weights are returned. Relevant here means the following:
+Every node keeps track of a list of active nodes locally. Whenever a node issues a block it is added to the list of active nodes (nodeID -> issuing time of latest block). When the active cMana is requested all relevant node weights are returned. Relevant here means the following:
- the node has more than `minimumManaThreshold=0` cMana to prevent bloating attacks with too little cMana
-- there is a message that fulfills the condition `issuing time <= TangleTime && TangleTime - issuing time <= activeTimeThreshold` where `activeTimeThreshold=30min` (see the following example, messages `1` and `3` are not within the window)
+- there is a block that fulfills the condition `issuing time <= TangleTime && TangleTime - issuing time <= activeTimeThreshold` where `activeTimeThreshold=30min` (see the following example, blocks `1` and `3` are not within the window)
![Active cMana window](/img/protocol_specification/active-cMana-window.png)
### Example
-When syncing (`TT=t0`) and booking a message from time `t1`, active cMana is considered from `t0-activeTimeThreshold`. Once this message gets confirmed, the TangleTime advances to `TT=t1`. For the next message at `t2`, `TT=t1-activeTimeThreshold` will be considered. Using active cMana in this way, we basically get a sliding window of how the Tangle emerged and *replay* it from the past to the present.
+When syncing (`TT=t0`) and booking a block from time `t1`, active cMana is considered from `t0-activeTimeThreshold`. Once this block gets confirmed, the TangleTime advances to `TT=t1`. For the next block at `t2`, `TT=t1-activeTimeThreshold` will be considered. Using active cMana in this way, we basically get a sliding window of how the Tangle emerged and *replay* it from the past to the present.
### Pros
@@ -250,7 +250,7 @@ When syncing (`TT=t0`) and booking a message from time `t1`, active cMana is con
### Cons
- active cMana does not yield sufficient information (e.g. when eclipsed), it might look like something is 100% confirmed even though only 2% of the total cMana are considered active.
- active cMana might change quickly nodes with high mana suddenly become active
-- if nodes are only able to issue messages when "in sync" and no message gets confirmed within that time, nobody might be able to issue messages anymore
+- if nodes are only able to issue blocks when "in sync" and no block gets confirmed within that time, nobody might be able to issue blocks anymore
- if a majority/all active cMana nodes go offline _within the active cMana window_, consensus will halt forever because the TangleTime can never advance unless a majority of these nodes move the TangleTime forward
This reflects the current implementation and we are currently investigating active cMana with in-depth simulations to improve the mechanism.
\ No newline at end of file
diff --git a/documentation/docs/protocol_specification/components/ledgerstate.md b/documentation/docs/protocol_specification/components/ledgerstate.md
index 5b6e61bc49..f0ce075416 100644
--- a/documentation/docs/protocol_specification/components/ledgerstate.md
+++ b/documentation/docs/protocol_specification/components/ledgerstate.md
@@ -10,8 +10,8 @@ keywords:
- input
- signature unlock block
- reference unlock block
-- conflict branch
-- aggregate branch
+- conflict conflict
+- aggregate conflict
---
## UTXO model
@@ -168,7 +168,7 @@ This validation can commence as soon as the transaction data has been received i
The following criteria define whether the transaction passes the syntactical validation:
* Transaction Essence:
* `Transaction Essence Version` value must be 0.
- * The `timestamp` of the _Transaction Essence_ must be older than (or equal to) the `timestamp` of the message
+ * The `timestamp` of the _Transaction Essence_ must be older than (or equal to) the `timestamp` of the block
containing the transaction by at most 10 minutes.
* A _Transaction Essence_ must contain at least one input and output.
* Inputs:
@@ -196,7 +196,7 @@ The following criteria define whether the transaction passes the syntactical val
* `Signature Unlock Blocks` must define either an `Ed25519`- or `BLS Signature`.
* A `Signature Unlock Block` unlocking multiple inputs must only appear once (be unique) and be positioned at the same index of the first input it unlocks. All other inputs unlocked by the same `Signature Unlock Block` must have a companion `Reference Unlock Block` at the same index as the corresponding input that points to the origin `Signature Unlock Block`.
* `Reference Unlock Blocks` must specify a previous `Unlock Block` that is not of type `Reference Unlock Block`. The referenced index must therefore be smaller than the index of the `Reference Unlock Block`.
-* Given the type and length information, the _Transaction_ must consume the entire byte array the `Payload Length` field in the _Message_ defines.
+* Given the type and length information, the _Transaction_ must consume the entire byte array the `Payload Length` field in the _Block_ defines.
### Transaction Semantic Validation
@@ -209,7 +209,7 @@ The following criteria define whether the transaction passes the semantic valida
If a transaction passes the semantic validation, its referenced UTXOs *shall* be marked as spent and the corresponding new outputs *shall* be booked/specified in the ledger.
-Transactions that do not pass semantic validation *shall* be discarded. Their UTXOs are not marked as spent and neither are their outputs booked into the ledger. Moreover, their messages *shall* be considered invalid.
+Transactions that do not pass semantic validation *shall* be discarded. Their UTXOs are not marked as spent and neither are their outputs booked into the ledger. Moreover, their blocks *shall* be considered invalid.
# Ledger State
@@ -225,26 +225,26 @@ To deal with double spends and leverage on certain properties of UTXO, we introd
In the Realities Ledger State, we model the different perceptions of the ledger state that exist in the Tangle. In each “reality” on its own there are zero conflicting transactions.
Each reality thus forms an in itself consistent UTXO sub-DAG, where every transaction references any other transaction correctly.
-Since outputs of transactions can only be consumed once, a transaction that double spends outputs creates a persistent branch in a corresponding UTXO DAG. Each branch receives a unique identifier `branchID`. These branches cannot be merged by any vertices (transactions).
-A transaction that attempts to merge incompatible branches fails to pass a validity check and is marked as invalid.
+Since outputs of transactions can only be consumed once, a transaction that double spends outputs creates a persistent conflict in a corresponding UTXO DAG. Each conflict receives a unique identifier `conflictID`. These conflicts cannot be merged by any vertices (transactions).
+A transaction that attempts to merge incompatible conflicts fails to pass a validity check and is marked as invalid.
The composition of all realities defines the Realities Ledger State.
-From this composition nodes are able to know which possible outcomes for the Tangle exist, where they split, how they relate to each other, if they can be merged and which messages are valid tips. All of this information can be retrieved in a fast and efficient way without having to walk the Tangle.
+From this composition nodes are able to know which possible outcomes for the Tangle exist, where they split, how they relate to each other, if they can be merged and which blocks are valid tips. All of this information can be retrieved in a fast and efficient way without having to walk the Tangle.
-Ultimately, for a set of competing realities, only one reality can survive. It is then up to the consensus protocol to determine which branch is part of the eventually accepted reality.
+Ultimately, for a set of competing realities, only one reality can survive. It is then up to the consensus protocol to determine which conflict is part of the eventually accepted reality.
In total the ledger state thus involves three different layers:
* the UTXO DAG,
-* its extension to the corresponding branch DAG,
-* the Tangle which maps the parent relations between messages and thus also transactions.
+* its extension to the corresponding conflict DAG,
+* the Tangle which maps the parent relations between blocks and thus also transactions.
## The UTXO DAG
The UTXO DAG models the relationship between transactions, by tracking which outputs have been spent by what transaction. Since outputs can only be spent once, we use this property to detect double spends.
Instead of permitting immediately only one transaction into to the ledger state, we allow for different versions of the ledger to coexist temporarily.
-This is enabled by extending the UTXO DAG by the introduction of branches, see the following section. We can then determine which conflicting versions of the ledger state exist in the presence of conflicts.
+This is enabled by extending the UTXO DAG by the introduction of conflicts, see the following section. We can then determine which conflicting versions of the ledger state exist in the presence of conflicts.
### Conflict Sets and Detection of Double Spends
@@ -252,76 +252,76 @@ We maintain a list of consumers `consumerList` associated with every output, tha
If there is more than one consumer in the consumer list we *shall* create a conflict set list `conflictSet`, which is identical to the consumer list. The `conflictSet` is uniquely identified by the unique identifier `conflictSetID`. Since the `outputID` is directly and uniquely linked to the conflict set, we set `conflictSetID=outputID`.
-## Branches
+## Conflicts
-The UTXO model and the concept of solidification, makes all non-conflicting transactions converge to the same ledger state no matter in which order the transactions are received. Messages containing these transactions could always reference each other in the Tangle without limitations.
+The UTXO model and the concept of solidification, makes all non-conflicting transactions converge to the same ledger state no matter in which order the transactions are received. Blocks containing these transactions could always reference each other in the Tangle without limitations.
-However, every double spend creates a new possible version of the ledger state that will no longer converge. Whenever a double spend is detected, see the previous section, we track the outputs created by the conflicting transactions and all of the transactions that spend these outputs, by creating a container for them in the ledger which we call a branch.
+However, every double spend creates a new possible version of the ledger state that will no longer converge. Whenever a double spend is detected, see the previous section, we track the outputs created by the conflicting transactions and all of the transactions that spend these outputs, by creating a container for them in the ledger which we call a conflict.
-More specifically a container `branch` *shall* be created for each transaction that double spends one or several outputs, or if transactions aggregated those branches.
-Every transaction that spends directly or indirectly from a transaction in a given `branch`, i.e. is in the future cone in the UTXO DAG of the double-spending transaction that created `branch`, is also contained in this `branch` or one of the child branches.
-A branch that was created by a transaction that spends multiple outputs can be part of multiple conflict sets.
+More specifically a container `conflict` *shall* be created for each transaction that double spends one or several outputs, or if transactions aggregated those conflicts.
+Every transaction that spends directly or indirectly from a transaction in a given `conflict`, i.e. is in the future cone in the UTXO DAG of the double-spending transaction that created `conflict`, is also contained in this `conflict` or one of the child conflicts.
+A conflict that was created by a transaction that spends multiple outputs can be part of multiple conflict sets.
-Every branch *shall* be identified by the unique identifier `branchID`. We consider two kinds of branches: conflict branches and aggregated branches, which are explained in the following sections.
+Every conflict *shall* be identified by the unique identifier `conflictID`. We consider two kinds of conflicts: conflict conflicts and aggregated conflicts, which are explained in the following sections.
-### Conflict Branches
+### Conflict Conflicts
-A conflict branch is created by a corresponding double spend transaction. Since the transaction identifier is unique, we choose the transaction id `transactionID` of the double spending transaction as the `branchID`.
+A conflict conflict is created by a corresponding double spend transaction. Since the transaction identifier is unique, we choose the transaction id `transactionID` of the double spending transaction as the `conflictID`.
-Outputs inside a branch can be double spent again, recursively forming sub-branches.
+Outputs inside a conflict can be double spent again, recursively forming sub-conflicts.
-On solidification of a message, we *shall* store the corresponding branch identifier together with every output, as well as the transaction metadata to enable instant lookups of this information. Thus, on solidification, a transaction can be immediately associated with a branch.
+On solidification of a block, we *shall* store the corresponding conflict identifier together with every output, as well as the transaction metadata to enable instant lookups of this information. Thus, on solidification, a transaction can be immediately associated with a conflict.
-### Aggregated Branches
+### Aggregated Conflicts
-A transaction that does not create a double spend inherits the branches of the input's branches. In the simplest case, where there is only one input branch the transaction inherits that branch.
+A transaction that does not create a double spend inherits the conflicts of the input's conflicts. In the simplest case, where there is only one input conflict the transaction inherits that conflict.
-If outputs from multiple non-conflicting branches are spent in the same transaction, then the transaction and its resulting outputs are part of an aggregated branch. This type of branch is not part of any conflict set. Rather it simply combines the perception that the individual conflict branches associated to the transaction's inputs are the ones that will be accepted by the network. Each aggregated branch *shall* have a unique identifier `branchID`, which is the same type as for conflict branches. Furthermore the container for an aggregated branch is also of type `branch`.
+If outputs from multiple non-conflicting conflicts are spent in the same transaction, then the transaction and its resulting outputs are part of an aggregated conflict. This type of conflict is not part of any conflict set. Rather it simply combines the perception that the individual conflict conflicts associated to the transaction's inputs are the ones that will be accepted by the network. Each aggregated conflict *shall* have a unique identifier `conflictID`, which is the same type as for conflict conflicts. Furthermore the container for an aggregated conflict is also of type `conflict`.
-To calculate the unique identifier of a new aggregated branch, we take the identifiers of the branches that were aggregated, sort them lexicographically and hash the concatenated identifiers once
+To calculate the unique identifier of a new aggregated conflict, we take the identifiers of the conflicts that were aggregated, sort them lexicographically and hash the concatenated identifiers once
-An aggregated branch can't aggregate other aggregated branches. However, it can aggregate the conflict branches that are part of the referenced aggregated branch.
-Thus aggregated branches have no further branches as their children and they remain tips in the branch DAG. Furthermore, the sortation of the `branchID`s in the function `AggregatedBranchID()` ensures that even though messages can attach at different points in the Tangle and aggregate different aggregated branches they are treated as if they are in the same aggregated branch **if** the referenced conflict branches are the same.
+An aggregated conflict can't aggregate other aggregated conflicts. However, it can aggregate the conflict conflicts that are part of the referenced aggregated conflict.
+Thus aggregated conflicts have no further conflicts as their children and they remain tips in the conflict DAG. Furthermore, the sortation of the `conflictID`s in the function `AggregatedConflictID()` ensures that even though blocks can attach at different points in the Tangle and aggregate different aggregated conflicts they are treated as if they are in the same aggregated conflict **if** the referenced conflict conflicts are the same.
-These properties allow for an efficient reduction of a set of branches. In the following we will require the following fields as part of the branch data:
-* `isConflictBranch` is a boolean flat that is `TRUE` if the branch is a conflict branch or `FALSE` if its an aggregated branch.
-* `parentBranches` contains the list of parent conflict branches of the branch, i.e. the conflict branches that are directly referenced by this branch.
+These properties allow for an efficient reduction of a set of conflicts. In the following we will require the following fields as part of the conflict data:
+* `isConflictConflict` is a boolean flat that is `TRUE` if the conflict is a conflict conflict or `FALSE` if its an aggregated conflict.
+* `parentConflicts` contains the list of parent conflict conflicts of the conflict, i.e. the conflict conflicts that are directly referenced by this conflict.
-Then the following function takes a list of branches (which can be either conflict or aggregated branches) and returns a unique set of conflict branches that these branches represent. This is done by replacing duplicates and extracting the parent conflict branches from aggregated branches.
+Then the following function takes a list of conflicts (which can be either conflict or aggregated conflicts) and returns a unique set of conflict conflicts that these conflicts represent. This is done by replacing duplicates and extracting the parent conflict conflicts from aggregated conflicts.
```vbnet
-FUNCTION reducedBranches = ReduceBranches(branches)
- FOR branch IN branches
- IF branch.isConflictBranch
- Append(reducedBranches,branch)
+FUNCTION reducedConflicts = ReduceConflicts(conflicts)
+ FOR conflict IN conflicts
+ IF conflict.isConflictConflict
+ Append(reducedConflicts,conflict)
ELSE
- FOR parentBranch IN branch.parentBranches
- IF NOT (parentBranch IN reducedBranches)
- Append(reducedBranches,parentBranch)
+ FOR parentConflict IN conflict.parentConflicts
+ IF NOT (parentConflict IN reducedConflicts)
+ Append(reducedConflicts,parentConflict)
- RETURN reducedBranches
+ RETURN reducedConflicts
```
-### The Branch DAG
+### The Conflict DAG
-A new branch is created for each transaction that is part of a conflict set, or if a transaction aggregates branches.
-In the branch DAG, branches constitute the vertices of the DAG. A branch that is created by a transaction that is spending outputs from other branches has edges pointing to those branches.
-The branch DAG maps the UTXO DAG to a simpler structure that ignores details about relations between transactions inside the branches and instead retains only details about the interrelations of conflicts.
-The set of all non-conflicting transactions form the master branch. Thus, at its root the branch DAG has the master branch, which consists of non-conflicting transaction and resolved transactions. From this root of the branch DAG the various branches emerge.
-In other words the conflict branches and the aggregated branches appear as the children of the master branch.
+A new conflict is created for each transaction that is part of a conflict set, or if a transaction aggregates conflicts.
+In the conflict DAG, conflicts constitute the vertices of the DAG. A conflict that is created by a transaction that is spending outputs from other conflicts has edges pointing to those conflicts.
+The conflict DAG maps the UTXO DAG to a simpler structure that ignores details about relations between transactions inside the conflicts and instead retains only details about the interrelations of conflicts.
+The set of all non-conflicting transactions form the master conflict. Thus, at its root the conflict DAG has the master conflict, which consists of non-conflicting transaction and resolved transactions. From this root of the conflict DAG the various conflicts emerge.
+In other words the conflict conflicts and the aggregated conflicts appear as the children of the master conflict.
-### Detecting Conflicting Branches
+### Detecting Conflicting Conflicts
-Branches are conflicting if they, or any of their ancestors, are part of the same conflict set.
-The branch DAG can be used to check if branches are conflicting, by applying an operation called normalization, to a set of input branches.
-From this information we can identify messages or transactions that are trying to combine branches belonging to conflicting double spends, and thus introduce an invalid perception of the ledger state.
+Conflicts are conflicting if they, or any of their ancestors, are part of the same conflict set.
+The conflict DAG can be used to check if conflicts are conflicting, by applying an operation called normalization, to a set of input conflicts.
+From this information we can identify blocks or transactions that are trying to combine conflicts belonging to conflicting double spends, and thus introduce an invalid perception of the ledger state.
-Since branches represent the ledger state associated with a double spend and sub-branches implicitly share the perception of their parents, we define an operation to normalize a list of branches that gets rid of all branches that are referenced by other branches in that list. The function returns `NULL` if the branches are conflicting and can not be merged.
+Since conflicts represent the ledger state associated with a double spend and sub-conflicts implicitly share the perception of their parents, we define an operation to normalize a list of conflicts that gets rid of all conflicts that are referenced by other conflicts in that list. The function returns `NULL` if the conflicts are conflicting and can not be merged.
-### Merging of Branches Into the Master Branch
+### Merging of Conflicts Into the Master Conflict
-A branch gains approval weight when messages from (previously non-attached) `nodeID`s attach to messages in the future cone of that branch. Once the approval weight exceeds a certain threshold we consider the branch as confirmed.
-Once a conflict branch is confirmed, it can be merged back into the master branch. Since the approval weight is monotonically increasing for branches from the past to the future, branches are only merged into the master branch.
-The loosing branches and all their children branches are booked into the container `rejectedBranch` that has the identifier `rejectedBranchID`.
+A conflict gains approval weight when blocks from (previously non-attached) `nodeID`s attach to blocks in the future cone of that conflict. Once the approval weight exceeds a certain threshold we consider the conflict as confirmed.
+Once a conflict conflict is confirmed, it can be merged back into the master conflict. Since the approval weight is monotonically increasing for conflicts from the past to the future, conflicts are only merged into the master conflict.
+The loosing conflicts and all their children conflicts are booked into the container `rejectedConflict` that has the identifier `rejectedConflictID`.
diff --git a/documentation/docs/protocol_specification/components/mana.md b/documentation/docs/protocol_specification/components/mana.md
index 142ef3dca8..1186463c76 100644
--- a/documentation/docs/protocol_specification/components/mana.md
+++ b/documentation/docs/protocol_specification/components/mana.md
@@ -137,11 +137,11 @@ By adding these fields to the signed transaction, `valuetransfers/packages/trans
be exposed from the value tangle that given an `input`, returns the `pledgedNodeID` of the transaction creating the input.
`Timestamp` is part of the signed transaction, therefore, a client sending a transaction to the node should already
-define it. In this case, this `Timestamp` will not be the same as the timestamp of the message containing the
-transaction and value payload, since the message is created on the node.
+define it. In this case, this `Timestamp` will not be the same as the timestamp of the block containing the
+transaction and value payload, since the block is created on the node.
A solution to this is that upon receiving a `transaction` from a client, the node checks if the timestamp is within
a predefined time window, for example `t_current - delta`, where `delta` could be couple seconds. If true, then the node
-constructs the message, which must have a greater timestamp, than the transaction.
+constructs the block, which must have a greater timestamp, than the transaction.
`AccessManaNodeID` and `ConsensusManaNodeID` are also part of the signed transaction, so a client should fill them out.
Node owners are free to choose to whom they pledge mana to with the transaction, so there should be a mechanism that
@@ -167,13 +167,13 @@ in the network. In future, when snapshotting is implemented in GoShimmer, nodes
for snapshot files that will contain initial base mana vectors as well.
Until this functionality is implemented, mana calculation solely relies on transactions getting confirmed. That is, when
-a node joins the network and starts gathering messages and transactions from peers, it builds its own ledger state through
-solidification process. Essentially, the node requests all messages down to the genesis from the current tips of its neighbors.
-Once the genesis is found, messages are solidified bottom up. For the value tangle, this means that for each solidified
+a node joins the network and starts gathering blocks and transactions from peers, it builds its own ledger state through
+solidification process. Essentially, the node requests all blocks down to the genesis from the current tips of its neighbors.
+Once the genesis is found, blocks are solidified bottom up. For the value tangle, this means that for each solidified
and liked transaction, `TransactionConfirmed` event is triggered, updating the base mana vectors.
In case of a large database, initial synching and solidification is a computationally heavy task due to the sheer amount
-of messages in the tangle. Mana calculation only adds to this burden. It will be determined through testing if additional
+of blocks in the tangle. Mana calculation only adds to this burden. It will be determined through testing if additional
"weight lifting" mechanism is needed (for example delaying mana calculation).
In the GoShimmer test network, all funds are initially held by the faucet node, therefore all mana present at bootstrap belong
@@ -273,7 +273,7 @@ Then, the appropriate node is located in `Base Mana Vector`, and mana is pledged
`Events` are essential to study what happens within the module from the outside.
Note, that `revokeBaseMana1` accesses the mana entry of the nodes within `Base Mana Vector`, therefore all values are
-updated with respect to `t`. Notice the two branches after the condition. When `Base Mana` values had been updated before
+updated with respect to `t`. Notice the two conflicts after the condition. When `Base Mana` values had been updated before
the transaction's timestamp, a regular update is carried out. However, if `t` is older, than the transaction timestamp,
an update in the "past" is carried out and values are updated up to `LastUpdated`.
```go
@@ -506,7 +506,7 @@ on TransactionConfirmed (tx):
The mana plugin is responsible to determine when to start calculating mana locally.
Since mana state is an extension to ledger state, it can only depict realistic mana values once the node is in sync.
-During syncing, ledger state is constructed from messages coming from neighbors as described further above.
+During syncing, ledger state is constructed from blocks coming from neighbors as described further above.
In this first iteration, mana plugin relies on `TransactionConfirmed` event of the value transfers plugin, and has no
explicit rules on when to start and stop mana calculation.
diff --git a/documentation/docs/protocol_specification/components/markers.md b/documentation/docs/protocol_specification/components/markers.md
index 1a5c2e6839..0e163ab412 100644
--- a/documentation/docs/protocol_specification/components/markers.md
+++ b/documentation/docs/protocol_specification/components/markers.md
@@ -1,10 +1,10 @@
---
-description: Markers is a tool to efficiently estimate the approval weight of a message and that reduces the portion of the Tangle that needs to be traversed, and which finally results in the grade of finality.
+description: Markers is a tool to efficiently estimate the approval weight of a block and that reduces the portion of the Tangle that needs to be traversed, and which finally results in the confirmation state.
image: /img/protocol_specification/example_1.png
keywords:
- approval weight
- marker
-- message
+- block
- sequence
- future marker
- new marker
@@ -27,49 +27,49 @@ Operations that involve traversing the Tangle are very performance intensive and
*Markers* are a tool to infer knowledge about the structure of the Tangle, therefore, we use them to keep algorithms fast. Specifically, markers are used for:
+ past/future cone membership;
-+ approximate approval weight of any message;
-+ tagging sections of the Tangle (e.g., branches) without having to traverse each message individually.
++ approximate approval weight of any block;
++ tagging sections of the Tangle (e.g., conflicts) without having to traverse each block individually.
## Definitions
Let's define the terms related to markers:
* **Sequence:** A sequence is a chain of markers where each progressing marker contains all preceding markers of the sequence in its past cone.
* **Sequence Identifier (`SID`):** A Sequence Identifier is the unique identifier of a Sequence.
* **Marker Index (`MI`):** A Marker Index is the marker rank in the marker DAG. Throughout the code the marker rank will be called index.
-* **marker:** A marker is a pair of numbers: `SID` and `MI` associated to a given message. Markers carrying the same `SID` belong to the same Sequence.
-* **future marker (`FM`):** A future marker of a message is the first marker in its future cone from different sequences.
-* **past marker (`PM`):** A past marker of a message is a marker in its past cone (can be multiple markers of distinct sequences). For a given sequence it is set to the newest past marker of its parents, that is the one that has the largest `MI`. The past marker of a marker is set to itself.
+* **marker:** A marker is a pair of numbers: `SID` and `MI` associated to a given block. Markers carrying the same `SID` belong to the same Sequence.
+* **future marker (`FM`):** A future marker of a block is the first marker in its future cone from different sequences.
+* **past marker (`PM`):** A past marker of a block is a marker in its past cone (can be multiple markers of distinct sequences). For a given sequence it is set to the newest past marker of its parents, that is the one that has the largest `MI`. The past marker of a marker is set to itself.
## Design
-On a high level, markers provide structural knowledge of the Tangle and each individual message without the need to traverse (aka walking the Tangle). Markers are a form of meta-information (for each message) that each node locally creates when processing messages. They can be seen as specific, uniquely tainted messages that, taken together, again build a DAG within the Tangle. We can then utilize this marker DAG to determine structural details.
+On a high level, markers provide structural knowledge of the Tangle and each individual block without the need to traverse (aka walking the Tangle). Markers are a form of meta-information (for each block) that each node locally creates when processing blocks. They can be seen as specific, uniquely tainted blocks that, taken together, again build a DAG within the Tangle. We can then utilize this marker DAG to determine structural details.
![](https://i.imgur.com/3x7H68t.png)
-The above example shows a Tangle with the red messages being markers in the same sequence (more details on sequences later). A marker is uniquely identified by `sequenceID,index`, where the index is ever-increasing. Any message can be "selected" as a marker if it fulfills a certain set of rules:
-- every n-th message (in the example, each message is tried to be set as a marker)
+The above example shows a Tangle with the red blocks being markers in the same sequence (more details on sequences later). A marker is uniquely identified by `sequenceID,index`, where the index is ever-increasing. Any block can be "selected" as a marker if it fulfills a certain set of rules:
+- every n-th block (in the example, each block is tried to be set as a marker)
- latest marker of sequence is in its past cone.
-The markers build a chain/DAG and because of the rules it becomes clear that `marker 0,1` is in the past cone of `marker 0,5`. Since markers represent meta-information for the underlying messages and each message keeps the latest marker in its past cone as *structural information*, we can infer that `message B` (`FM 0,2`) is in the past cone of `message I` (`PM 0,3`) Similarly, it is evident that `message D` is in the past cone of `message J`.
+The markers build a chain/DAG and because of the rules it becomes clear that `marker 0,1` is in the past cone of `marker 0,5`. Since markers represent meta-information for the underlying blocks and each block keeps the latest marker in its past cone as *structural information*, we can infer that `block B` (`FM 0,2`) is in the past cone of `block I` (`PM 0,3`) Similarly, it is evident that `block D` is in the past cone of `block J`.
### Sequences
A sequence is a chain of markers where each progressing marker contains all preceding markers of the sequence in its past cone. However, this very definition entails a problem: what if there are certain parts of the Tangle that are disparate to each other. Assuming only a single sequence, this would mean that a certain part of the Tangle can't get any markers. In turn, certain operations within this part of the Tangle would involve walking.
-For this reason, we keep track of the *marker distance*, which signals the distance of messages in the Tangle in a certain past cone where no marker could be assigned. If this distance gets too big, a new sequence is created as is shown in the example below (marker distance to spawn a new sequence = 3).
+For this reason, we keep track of the *marker distance*, which signals the distance of blocks in the Tangle in a certain past cone where no marker could be assigned. If this distance gets too big, a new sequence is created as is shown in the example below (marker distance to spawn a new sequence = 3).
![](https://i.imgur.com/Q44XZgk.png)
-The example above shows a side chain starting from `message L` to `message P` where it merges back with the "main Tangle". There can be no new marker assigned as none of the `messages L-O` have the latest marker of `sequence 0` in their past cone. The marker distance grows and eventually a marker is created at `message N`. Following, a marker can be assigned to `message O` and `message P`. The latter is special because it combines two sequences. This is to be expected as disparate parts of the Tangle should be merged eventually. In case a message has markers from multiple sequences in its past cones the following rules apply:
+The example above shows a side chain starting from `block L` to `block P` where it merges back with the "main Tangle". There can be no new marker assigned as none of the `blocks L-O` have the latest marker of `sequence 0` in their past cone. The marker distance grows and eventually a marker is created at `block N`. Following, a marker can be assigned to `block O` and `block P`. The latter is special because it combines two sequences. This is to be expected as disparate parts of the Tangle should be merged eventually. In case a block has markers from multiple sequences in its past cones the following rules apply:
- Assign a marker in the highest sequence if possible. If not possible, try to assign a marker in the next lower sequence.
- The index is `max(marker1.Index,marker2.Index,...)`
-With these rules in mind, it becomes clear why `message P` has the `marker 1,6` and `message R` has `marker 1,7`. In case of `message Q`, no marker can be assigned to `sequence 1`, and, thus, a new marker in `sequence 0` is created.
+With these rules in mind, it becomes clear why `block P` has the `marker 1,6` and `block R` has `marker 1,7`. In case of `block Q`, no marker can be assigned to `sequence 1`, and, thus, a new marker in `sequence 0` is created.
Always continuing the highest seqeuence should result in smaller sequences being discontinued once disparate parts of the Tangle merge and overall a relatively small number of sequences (optimally just one) is expected to be active at any given moment in time.
@@ -99,13 +99,13 @@ Sequence 1:
## Usage
### Markers Application: Approval Weight Estimation
-To approximate the approval weight of a message, we simply retrieve the approval weight of its `FM` list. Since the message is in the past cone of its `FM`s, the approval weight and the finality will be at least the same as its `FM`s. This will of course be a lower bound (which is the “safe” bound), but if the markers are set frequently enough, it should be a good approximation.
-In practice, we propagate the GoF finality to messages in a marker's past cone until we reach another marker.
+To approximate the approval weight of a block, we simply retrieve the approval weight of its `FM` list. Since the block is in the past cone of its `FM`s, the approval weight and the finality will be at least the same as its `FM`s. This will of course be a lower bound (which is the “safe” bound), but if the markers are set frequently enough, it should be a good approximation.
+In practice, we propagate the GoF finality to blocks in a marker's past cone until we reach another marker.
For details of managing approval weight of each marker and approval weight calculation thereof please refer to [Approval Weight](consensus_mechanism.md#approval-weight-aw).
-### Branch Mapping
-Branches are introduced to the Tangle when double spends occur and are carried forward (inherited) by messages until a conflict is resolved (merge to master). As such, each message needs to carry branch information and if a branch arises deep within the Tangle, each message would need to be traversed individually, which makes this operation very expensive and thus attackable.
+### Conflict Mapping
+Conflicts are introduced to the Tangle when double spends occur and are carried forward (inherited) by blocks until a conflict is resolved (merge to master). As such, each block needs to carry conflict information and if a conflict arises deep within the Tangle, each block would need to be traversed individually, which makes this operation very expensive and thus attackable.
-Therefore, we utilize markers to store branch information for messages and store only a **difference** of branches (subtracted/added) on each message individually. In that way, propagation of branches can happen via structural marker information and not every message needs to be updated. When querying branch information of a message, first all branches of the message's past markers are retrieved and then combined with the diff of the message itself to result in the message's overall branch.
+Therefore, we utilize markers to store conflict information for blocks and store only a **difference** of conflicts (subtracted/added) on each block individually. In that way, propagation of conflicts can happen via structural marker information and not every block needs to be updated. When querying conflict information of a block, first all conflicts of the block's past markers are retrieved and then combined with the diff of the block itself to result in the block's overall conflict.
diff --git a/documentation/docs/protocol_specification/components/overview.md b/documentation/docs/protocol_specification/components/overview.md
index fe9049797d..f65b0df4f7 100644
--- a/documentation/docs/protocol_specification/components/overview.md
+++ b/documentation/docs/protocol_specification/components/overview.md
@@ -4,7 +4,7 @@ image: /img/protocol_specification/layers.png
keywords:
- network layer
- node
-- message
+- block
- ledger state
- data flow
- past cone
@@ -27,87 +27,87 @@ The network is maintained by the network layer modules, which can be characteriz
## Communication Layer
-The communication layer concerns the information propagated through the network layer, which is contained in objects called messages. This layer forms a DAG with messages as vertices called the [Tangle](tangle.md): a replicated, shared and distributed data structure that emerges—through a combination of deterministic rules, cooperation, and virtual voting.
-Since nodes have finite capabilities, the number of messages that the network can process is limited. Thus, the network might become overloaded, either simply because of honest heavy usage or because of malicious (spam) attacks. To protect the network from halting or even from getting inconsistent, the rate control (currently a static PoW) and [congestion control](congestion_control.md) modules control when and how many messages can be gossiped.
+The communication layer concerns the information propagated through the network layer, which is contained in objects called blocks. This layer forms a DAG with blocks as vertices called the [Tangle](tangle.md): a replicated, shared and distributed data structure that emerges—through a combination of deterministic rules, cooperation, and virtual voting.
+Since nodes have finite capabilities, the number of blocks that the network can process is limited. Thus, the network might become overloaded, either simply because of honest heavy usage or because of malicious (spam) attacks. To protect the network from halting or even from getting inconsistent, the rate control (currently a static PoW) and [congestion control](congestion_control.md) modules control when and how many blocks can be gossiped.
## (Decentralized) Application Layer
On top of the communication layer lives the application layer. Anybody can develop applications that run on this layer, and nodes can choose which applications to run. Of course, these applications can also be dependent on each other.
There are several core applications that must be run by all nodes, as the value transfer applications, which maintains the [ledger state](ledgerstate.md) (including advanced [output types](advanced_outputs.md)), and a quantity called [Mana](mana.md), that serves as a scarce resource as our Sybil protection mechanism.
-Additionally, all nodes must run what we call the consensus applications, which regulate timestamps in the messages and resolve conflicts.
+Additionally, all nodes must run what we call the consensus applications, which regulate timestamps in the blocks and resolve conflicts.
The consensus mechanism implemented in GoShimmer is leaderless and consists out of multiple components:
-1. [Approval Weight](consensus_mechanism.md#approval-weight-aw) is an objective measure to determine the grade of finality of messages and branches based on [active cMana](consensus_mechanism.md#Active-cMana).
+1. [Approval Weight](consensus_mechanism.md#approval-weight-aw) is an objective measure to determine the grade of finality of blocks and conflicts based on [active cMana](consensus_mechanism.md#Active-cMana).
2. The [Modular Conflict Selection Function](consensus_mechanism.md#modular-conflict-selection-function) is an abstraction on how a node sets an initial opinion on conflicts based on the .
## Data Flow - Overview
The diagram below represents the interaction between the different modules in the protocol ([event driven](../../implementation_design/event_driven_model.md)). Each blue box represents a component of the [Tangle codebase](https://github.com/iotaledger/goshimmer/tree/develop/packages/tangle), which has events (in yellow boxes) that belong to it. Those events will trigger methods (the green boxes), that can also trigger other methods. This triggering is represented by the arrows in the diagram. Finally, the purple boxes represent events that do not belong to the component that triggered them.
-As an example, take the Parser component. The function `ProcessGossipMessage` will trigger the method `Parse`, which is the only entry to the component. There are three possible outcomes to the `Parser`: triggering a `ParsingFailed` event, a `MessageRejected` event, or a `MessageParsed` event. In the last case, the event will trigger the `StoreMessage` method (which is the entry to the Storage component), whereas the first two events do not trigger any other component.
+As an example, take the Parser component. The function `ProcessGossipBlock` will trigger the method `Parse`, which is the only entry to the component. There are three possible outcomes to the `Parser`: triggering a `ParsingFailed` event, a `BlockRejected` event, or a `BlockParsed` event. In the last case, the event will trigger the `StoreBlock` method (which is the entry to the Storage component), whereas the first two events do not trigger any other component.
[![Data Flow - Overview](/img/protocol_specification/data-flow.png "Data Flow - Overview")](/img/protocol_specification/data-flow.png)
-We call this the data flow, i.e., the [life cycle of a message](../protocol.md), from message reception (meaning that we focus here on the point of view of a node receiving a message issued by another node) up until acceptance in the Tangle. Notice that any message, either created locally by the node or received from a neighbor needs to pass through the data flow.
+We call this the data flow, i.e., the [life cycle of a block](../protocol.md), from block reception (meaning that we focus here on the point of view of a node receiving a block issued by another node) up until acceptance in the Tangle. Notice that any block, either created locally by the node or received from a neighbor needs to pass through the data flow.
-### Message Factory
+### Block Factory
-The IssuePayload function creates a valid payload which is provided to the `CreateMessage` method, along with a set of parents chosen with the Tip Selection Algorithm. Then, the Message Factory component is responsible to find a nonce compatible with the PoW requirements defined by the rate control module. Finally, the message is signed. Notice that the message generation should follow the rates imposed by the rate setter, as defined in [rate setting](congestion_control.md#rate-setting).
+The IssuePayload function creates a valid payload which is provided to the `CreateBlock` method, along with a set of parents chosen with the Tip Selection Algorithm. Then, the Block Factory component is responsible to find a nonce compatible with the PoW requirements defined by the rate control module. Finally, the block is signed. Notice that the block generation should follow the rates imposed by the rate setter, as defined in [rate setting](congestion_control.md#rate-setting).
### Parser
-The first step after the arrival of the message to the message inbox is the parsing, which consists of the following different filtering processes (meaning that the messages that don't pass these steps will not be stored):
+The first step after the arrival of the block to the block inbox is the parsing, which consists of the following different filtering processes (meaning that the blocks that don't pass these steps will not be stored):
**Bytes filter**:
-1. Recently Seen Bytes: it compares the incoming messages with a pool of recently seen bytes to filter duplicates.
-2. PoW check: it checks if the PoW requirements are met, currently set to the message hash starting with 22 zeroes.
+1. Recently Seen Bytes: it compares the incoming blocks with a pool of recently seen bytes to filter duplicates.
+2. PoW check: it checks if the PoW requirements are met, currently set to the block hash starting with 22 zeroes.
-Followed by the bytes filters, the received bytes are parsed into a message and its corresponding payload and [syntactically validated](tangle.md#syntactical-validation). From now on, the filters operate on message objects rather than just bytes.
+Followed by the bytes filters, the received bytes are parsed into a block and its corresponding payload and [syntactically validated](tangle.md#syntactical-validation). From now on, the filters operate on block objects rather than just bytes.
-**Message filter**:
-1. Signature check: it checks if the message signature is valid.
-2. [Timestamp Difference Check for transactions](tangle.md#message-timestamp-vs-transaction-timestamp): it checks if the timestamps of the payload, and the message are consistent with each other
+**Block filter**:
+1. Signature check: it checks if the block signature is valid.
+2. [Timestamp Difference Check for transactions](tangle.md#block-timestamp-vs-transaction-timestamp): it checks if the timestamps of the payload, and the block are consistent with each other
### Storage
-Only messages that pass the Parser are stored, along with their metadata. Additionally, new messages are stored as approvers of their parents, i.e., a reverse mapping that enables us to walk the Tangle into the future cone of a message.
+Only blocks that pass the Parser are stored, along with their metadata. Additionally, new blocks are stored as children of their parents, i.e., a reverse mapping that enables us to walk the Tangle into the future cone of a block.
### Solidifier
-[Solidification](tangle.md#Solidification) is the process of requesting missing messages. In this step, the node checks if all the past cone of the message is known; in the case that the node realizes that a message in the past cone is missing, it sends a request to its neighbors asking for that missing message. This process is recursively repeated until all of a message's past cone up to the genesis (or snapshot) becomes known to the node.
-This way, the protocol enables any node to retrieve the entire message history, even for nodes that have just joined the network.
+[Solidification](tangle.md#Solidification) is the process of requesting missing blocks. In this step, the node checks if all the past cone of the block is known; in the case that the node realizes that a block in the past cone is missing, it sends a request to its neighbors asking for that missing block. This process is recursively repeated until all of a block's past cone up to the genesis (or snapshot) becomes known to the node.
+This way, the protocol enables any node to retrieve the entire block history, even for nodes that have just joined the network.
### Scheduler
-The scheduler makes sure that the network as a whole can operate with maximum throughput and minimum delays while providing consistency, fairness (according to aMana), and security. It, therefore, regulates the allowed influx of messages to the network as a [congestion-control mechanism](congestion_control.md).
+The scheduler makes sure that the network as a whole can operate with maximum throughput and minimum delays while providing consistency, fairness (according to aMana), and security. It, therefore, regulates the allowed influx of blocks to the network as a [congestion-control mechanism](congestion_control.md).
### Booker
-After scheduling, the message goes to the booker. This step is different between messages that contain a transaction payload and messages that do not contain it.
+After scheduling, the block goes to the booker. This step is different between blocks that contain a transaction payload and blocks that do not contain it.
-In the case of a non-transaction payload, booking into the Tangle occurs after the conflicting parents branches check, i.e., after checking if the parents' branches contain sets of (two or more) transactions that belong to the same conflict set. In the case of this check not being successful, the message is marked as `invalid` and not booked.
+In the case of a non-transaction payload, booking into the Tangle occurs after the conflicting parents conflicts check, i.e., after checking if the parents' conflicts contain sets of (two or more) transactions that belong to the same conflict set. In the case of this check not being successful, the block is marked as `invalid` and not booked.
In the case of a transaction as payload, initially, the following check is done:
-1. UTXO check: it checks if the inputs of the transaction were already booked. If the message does not pass this check, the message is not booked. If it passes the check, it goes to the next block of steps.
-2. Balances check: it checks if the sum of the values of the generated outputs equals the sum of the values of the consumed inputs. If the message does not pass this check, the message is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
-3. Unlock conditions: checks if the unlock conditions are valid. If the message does not pass this check, the message is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
-4. Inputs' branches validity check: it checks if all the consumed inputs belong to a valid branch. If the message does not pass this check, the message is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
+1. UTXO check: it checks if the inputs of the transaction were already booked. If the block does not pass this check, the block is not booked. If it passes the check, it goes to the next block of steps.
+2. Balances check: it checks if the sum of the values of the generated outputs equals the sum of the values of the consumed inputs. If the block does not pass this check, the block is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
+3. Unlock conditions: checks if the unlock conditions are valid. If the block does not pass this check, the block is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
+4. Inputs' conflicts validity check: it checks if all the consumed inputs belong to a valid conflict. If the block does not pass this check, the block is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
After the objective checks, the following subjective checks are done:
-5. Inputs' branches rejection check: it checks if all the consumed inputs belong to a non-rejected branch. Notice that this is not an objective check, so the node is susceptible (even if with a small probability) to have its opinion about rejected branches changed by a reorganization. For that reason, if the message does not pass this check, the message is booked into the Tangle and ledger state (even though the balances are not altered by this message, since it will be booked to a rejected branch). This is what we call "lazy booking", which is done to avoid huge re-calculations in case of a reorganization of the ledger. If it passes the check, it goes to the next step.
-10. Double spend check: it checks if any of the inputs is conflicting with a transaction that was already confirmed. As in the last step, this check is not objective and, thus, if the message does not pass this check, it is lazy booked into the Tangle and ledger state, into an invalid branch. If it passes the check, it goes to the next step.
+5. Inputs' conflicts rejection check: it checks if all the consumed inputs belong to a non-rejected conflict. Notice that this is not an objective check, so the node is susceptible (even if with a small probability) to have its opinion about rejected conflicts changed by a reorganization. For that reason, if the block does not pass this check, the block is booked into the Tangle and ledger state (even though the balances are not altered by this block, since it will be booked to a rejected conflict). This is what we call "lazy booking", which is done to avoid huge re-calculations in case of a reorganization of the ledger. If it passes the check, it goes to the next step.
+10. Double spend check: it checks if any of the inputs is conflicting with a transaction that was already confirmed. As in the last step, this check is not objective and, thus, if the block does not pass this check, it is lazy booked into the Tangle and ledger state, into an invalid conflict. If it passes the check, it goes to the next step.
At this point, the missing steps are the most computationally expensive:
-7. Inputs' conflicting branches check: it checks if the branches of the inputs are conflicting. As in the last step, if the message does not pass this check, the message is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
-8. Conflict check: it checks if the inputs are conflicting with an unconfirmed transaction. In this step, the branch to which the message belongs is computed. In both cases (passing the check or not), the transaction is booked into the ledger state and the message is booked into the Tangle, but its branch ID will be different depending on the outcome of the check.
+7. Inputs' conflicting conflicts check: it checks if the conflicts of the inputs are conflicting. As in the last step, if the block does not pass this check, the block is marked as `invalid` and not booked. If it passes the check, it goes to the next step.
+8. Conflict check: it checks if the inputs are conflicting with an unconfirmed transaction. In this step, the conflict to which the block belongs is computed. In both cases (passing the check or not), the transaction is booked into the ledger state and the block is booked into the Tangle, but its conflict ID will be different depending on the outcome of the check.
[![Booker](/img/protocol_specification/booker.png "Booker")](/img/protocol_specification/booker.png)
-Finally, after a message is booked, it might become a [marker](markers.md) (depending on the marker policy) and can be gossiped.
+Finally, after a block is booked, it might become a [marker](markers.md) (depending on the marker policy) and can be gossiped.
### Consensus Mechanism
A detailed description can be found [here](consensus_mechanism.md).
@@ -115,5 +115,5 @@ A detailed description can be found [here](consensus_mechanism.md).
### Tip Manager
-The first check done in the tip manager is the eligibility check (i.e., subjective timestamp is ok), after passing it, a message is said to be `eligible` for tip selection (otherwise, it's `not eligible`).
-If a message is eligible for [tip selection](tangle.md#tsa) and its payload is `liked`, along with all its weak past cone, the message is added to the strong tip pool and its parents are removed from the strong tip pool. If a message is eligible for tip selection, its payload is `liked` but its branch is not liked it is added to the weak tip pool.
+The first check done in the tip manager is the eligibility check (i.e., subjective timestamp is ok), after passing it, a block is said to be `eligible` for tip selection (otherwise, it's `not eligible`).
+If a block is eligible for [tip selection](tangle.md#tsa) and its payload is `liked`, along with all its weak past cone, the block is added to the strong tip pool and its parents are removed from the strong tip pool. If a block is eligible for tip selection, its payload is `liked` but its conflict is not liked it is added to the weak tip pool.
diff --git a/documentation/docs/protocol_specification/components/tangle.md b/documentation/docs/protocol_specification/components/tangle.md
index 77d88f7521..dee03ad853 100644
--- a/documentation/docs/protocol_specification/components/tangle.md
+++ b/documentation/docs/protocol_specification/components/tangle.md
@@ -1,8 +1,8 @@
---
-description: The Tangle represents a growing partially-ordered set of messages, linked with each other through cryptographic primitives, and replicated to all nodes in the peer-to-peer network. It enables the ledger state (i.e., the UTXO-DAG formed by transactions contained in messages), and the possibility to store data.
+description: The Tangle represents a growing partially-ordered set of blocks, linked with each other through cryptographic primitives, and replicated to all nodes in the peer-to-peer network. It enables the ledger state (i.e., the UTXO-DAG formed by transactions contained in blocks), and the possibility to store data.
image: /img/protocol_specification/tangle.png
keywords:
-- message
+- block
- strong parents
- node
- transactions
@@ -10,8 +10,8 @@ keywords:
- cone
- past
- future
-- strong message
-- weak message
+- strong block
+- weak block
- approval weight
---
# Tangle
@@ -40,36 +40,36 @@ keywords:
## Parameters
-- `MAX_MESSAGE_SIZE=64 KB` The maximum allowed message size.
+- `MAX_MESSAGE_SIZE=64 KB` The maximum allowed block size.
- `MAX_PAYLOAD_SIZE=65157 B` The maximum allowed payload size.
-- `MIN_STRONG_PARENTS=1` The minimum amount of strong parents a message needs to reference.
-- `MAX_PARENTS=8` The maximum amount of parents a message can reference.
+- `MIN_STRONG_PARENTS=1` The minimum amount of strong parents a block needs to reference.
+- `MAX_PARENTS=8` The maximum amount of parents a block can reference.
## General Concept
[![The Tangle](/img/protocol_specification/tangle.png)](/img/protocol_specification/tangle.png)
-The Tangle represents a growing partially-ordered set of messages, linked with each other through cryptographic primitives, and replicated to all nodes in the peer-to-peer network. The Tangle enables the ledger state (i.e., the UTXO-DAG formed by transactions contained in messages), and the possibility to store data.
+The Tangle represents a growing partially-ordered set of blocks, linked with each other through cryptographic primitives, and replicated to all nodes in the peer-to-peer network. The Tangle enables the ledger state (i.e., the UTXO-DAG formed by transactions contained in blocks), and the possibility to store data.
### Terminology
-- **Genesis**: The genesis message is used to bootstrap the Tangle and creates the entire token supply and no other tokens will ever be created. It is the first message and does not have parents. It is marked as solid, eligible and confirmed.
-- **Past cone**: All messages that are directly or indirectly referenced by a message are called its past cone.
-- **Future cone**: All messages that directly or indirectly reference a message are called its future cone.
-- **Solidity**: A message is marked as solid if its entire past cone until the Genesis (or the latest snapshot) is known.
-- **Parents**: A message directly references between 1-8 previous messages that we call its **parents**. A parent can be either **strong** or **weak** (see [approval switch](#orphanage--approval-switch)).
-- **Approvers**: Parents are approved by their referencing messages called **approvers**. It is thus a reverse mapping of parents. As in the parents' definition, an approver might be either **strong** or **weak**.
-- **Branch**: A version of the ledger that temporarily coexists with other versions, each spawned by conflicting transactions.
+- **Genesis**: The genesis block is used to bootstrap the Tangle and creates the entire token supply and no other tokens will ever be created. It is the first block and does not have parents. It is marked as solid, eligible and confirmed.
+- **Past cone**: All blocks that are directly or indirectly referenced by a block are called its past cone.
+- **Future cone**: All blocks that directly or indirectly reference a block are called its future cone.
+- **Solidity**: A block is marked as solid if its entire past cone until the Genesis (or the latest snapshot) is known.
+- **Parents**: A block directly references between 1-8 previous blocks that we call its **parents**. A parent can be either **strong** or **weak** (see [approval switch](#orphanage--approval-switch)).
+- **Children**: Parents are approved by their referencing blocks called **children**. It is thus a reverse mapping of parents. As in the parents' definition, an child might be either **strong** or **weak**.
+- **Conflict**: A version of the ledger that temporarily coexists with other versions, each spawned by conflicting transactions.
-## Messages
+## Blocks
-Messages are created and signed by nodes. Next to several fields of metadata, they carry a **payload**. The maximum message size is `MAX_MESSAGE_SIZE`.
+Blocks are created and signed by nodes. Next to several fields of metadata, they carry a **payload**. The maximum block size is `MAX_MESSAGE_SIZE`.
-### Message ID
+### Block ID
-BLAKE2b-256 hash of the byte contents of the message. It should be used by the nodes to index the messages and by external APIs.
+BLAKE2b-256 hash of the byte contents of the block. It should be used by the nodes to index the blocks and by external APIs.
-### Message structure
+### Block structure
Name |
@@ -79,12 +79,12 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Version |
uint8 |
- The message version. The schema specified in this RFC is for version 1 only. |
+ The block version. The schema specified in this RFC is for version 1 only. |
Parents blocks count |
uint8 |
- The amount of parents block preceding the current message. |
+ The amount of parents block preceding the current block. |
Parents Blocks anyOf |
@@ -117,7 +117,7 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Reference between(1,8) |
ByteArray[32] |
- Reference to a Message ID. |
+ Reference to a Block ID. |
@@ -149,7 +149,7 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Reference between(1,8) |
ByteArray[32] |
- Reference to a Message ID. |
+ Reference to a Block ID. |
@@ -181,7 +181,7 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Reference between(1,8) |
ByteArray[32] |
- Reference to a Message ID. |
+ Reference to a Block ID. |
@@ -213,7 +213,7 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Reference between(1,8) |
ByteArray[32] |
- Reference to a Message ID. |
+ Reference to a Block ID. |
@@ -222,17 +222,17 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Issuer public key (Ed25519) |
ByteArray[32] |
- The public key of the node issuing the message. |
+ The public key of the node issuing the block. |
Issuing time |
time |
- The time the message was issued. |
+ The time the block was issued. |
Sequence number |
uint64 |
- The always increasing number of issued messages of the issuing node. |
+ The always increasing number of issued blocks of the issuing node. |
Payload length |
@@ -274,23 +274,23 @@ BLAKE2b-256 hash of the byte contents of the message. It should be used by the n
Nonce |
uint64 |
- The nonce which lets this message fulfill the adaptive Proof-of-Work requirement. |
+ The nonce which lets this block fulfill the adaptive Proof-of-Work requirement. |
Signature (Ed25519) |
ByteArray[64] |
- Signature of the issuing node's private key signing the entire message bytes. |
+ Signature of the issuing node's private key signing the entire block bytes. |
### Syntactical Validation
-Messages that do no pass the Syntactical Validation are discarded. Only syntactically valid messages continue in the data flow, i.e., pass to the Semantic Validation.
+Blocks that do no pass the Syntactical Validation are discarded. Only syntactically valid blocks continue in the data flow, i.e., pass to the Semantic Validation.
-A message is syntactically valid if:
-1. The message length does not exceed `MAX_MESSAGE_SIZE` bytes.
-1. When the message parsing is complete, there are not any trailing bytes left that were not parsed.
+A block is syntactically valid if:
+1. The block length does not exceed `MAX_MESSAGE_SIZE` bytes.
+1. When the block parsing is complete, there are not any trailing bytes left that were not parsed.
1. Parents Blocks must be ordered by ASC type with no repetitions.
1. A Strong Parents Block must exist.
1. There must be at least 1 parent per block and no more than 8.
@@ -300,10 +300,10 @@ A message is syntactically valid if:
### Semantic Validation
-Messages that do not pass the Semantic Validation are discarded. Only semantically valid messages continue in the data flow.
+Blocks that do not pass the Semantic Validation are discarded. Only semantically valid blocks continue in the data flow.
-A message is semantically valid if:
-1. The Message PoW Hash contains at least the number of leading 0 defined as required by the PoW.
+A block is semantically valid if:
+1. The Block PoW Hash contains at least the number of leading 0 defined as required by the PoW.
2. The signature of the issuing node is valid.
3. It passes [parents age checks](#age-of-parents).
@@ -313,8 +313,8 @@ A message is semantically valid if:
1. Only one dislike parent is allowed per conflict set.
1. Only one like parent is allowed per conflict set.
1. Every dislike parent must be in the past cone of a strong parent.
-1. For each like parent, only one dislike parent must exist pointing to a message containing a transaction within the same conflict set.
-1. For every dislike parent and for every conflict set it belongs to, a like parent must also exist pointing to a message within the considered conflict set, provided that such transaction is not already present in the past cone of any strong parent.
+1. For each like parent, only one dislike parent must exist pointing to a block containing a transaction within the same conflict set.
+1. For every dislike parent and for every conflict set it belongs to, a like parent must also exist pointing to a block within the considered conflict set, provided that such transaction is not already present in the past cone of any strong parent.
1. For each referenced conflict set, from all parents types, for each referenced conflict set, must result in only a single transaction support.
1. Only one like or weak parent can be within the same conflict set.
@@ -337,94 +337,94 @@ A node can choose to interpret user-defined payloads by listenting to its specif
The core protocol defines a number of payloads that every node needs to interpret and process in order to participate in the network.
- **Transactions:** Value transfers that constitute the ledger state.
-- **Data:** Pure data payloads allow to send unsigned messages.
-- **dRNG:** Messages that contain randomness or committee declarations.
+- **Data:** Pure data payloads allow to send unsigned blocks.
+- **dRNG:** Blocks that contain randomness or committee declarations.
## Solidification
-Due to the asynchronicity of the network, we may receive messages for which their past cone is not known yet. We refer to these messages as unsolid messages. It is not possible neither to approve nor to gossip unsolid messages. The actions required to obtain such missing messages is called solidification.
-**Solidification** is the process of requesting missing referenced messages. It may be recursively repeated until all of a message's past cone up to the genesis (or snapshot) becomes solid.
+Due to the asynchronicity of the network, we may receive blocks for which their past cone is not known yet. We refer to these blocks as unsolid blocks. It is not possible neither to approve nor to gossip unsolid blocks. The actions required to obtain such missing blocks is called solidification.
+**Solidification** is the process of requesting missing referenced blocks. It may be recursively repeated until all of a block's past cone up to the genesis (or snapshot) becomes solid.
-In that way, the Tangle enables all nodes to retrieve all of a message's history, even the ones joining the network at a point later in time.
+In that way, the Tangle enables all nodes to retrieve all of a block's history, even the ones joining the network at a point later in time.
### Definitions
-* **valid**: A message is considered valid if it passes the following filters from the solidifier and from the message booker:
+* **valid**: A block is considered valid if it passes the following filters from the solidifier and from the block booker:
* solidifier: it checks if parents are valid,
- * booker: it checks if the contained transaction is valid. Notice that only messages containing a transaction are required to perform this check.
+ * booker: it checks if the contained transaction is valid. Notice that only blocks containing a transaction are required to perform this check.
* **parents age check**: A check that ensures the timestamps of parents and child are valid, following the details defined in the [Timestamp specification](#age-of-parents).
-* **solid**: A message is solid if it passes parents age check and all its parents are stored in the storage, solid and valid.
+* **solid**: A block is solid if it passes parents age check and all its parents are stored in the storage, solid and valid.
### Detailed Design
-During solidification, if a node is missing a referenced message, the corresponding message ID is stored in the `solidification buffer`. A node asks its neighbors for the missing message by sending a `solidification request` containing the message ID. Once the requested message is received from its neighbors, its message ID shall be removed from the `solidification buffer`. The requested message is marked as solid after it passes the standard solidification checks. If any of the checks fails, the message remains unsolid.
+During solidification, if a node is missing a referenced block, the corresponding block ID is stored in the `solidification buffer`. A node asks its neighbors for the missing block by sending a `solidification request` containing the block ID. Once the requested block is received from its neighbors, its block ID shall be removed from the `solidification buffer`. The requested block is marked as solid after it passes the standard solidification checks. If any of the checks fails, the block remains unsolid.
-If a message gets solid, it shall walk through the rest of the data flow, then propagate the solid status to its future cone by performing the solidification checks on each of the messages in its future cone again.
+If a block gets solid, it shall walk through the rest of the data flow, then propagate the solid status to its future cone by performing the solidification checks on each of the blocks in its future cone again.
-[![Message solidification specs](/img/protocol_specification/GoShimmer-flow-solidification_spec.png)](/img/protocol_specification/GoShimmer-flow-solidification_spec.png)
+[![Block solidification specs](/img/protocol_specification/GoShimmer-flow-solidification_spec.png)](/img/protocol_specification/GoShimmer-flow-solidification_spec.png)
## Orphanage & Approval Switch
-The Tangle builds approval of a given message by directly or indirectly attaching other messages in its future cone. Due to different reasons, such as the TSA not picking up a given message before its timestamp is still *fresh* or because its past cone has been rejected, a message can become orphan. This implies that the message cannot be included in the Tangle history since all the recent tips do not contain it in their past cone and thus, it cannot be retrieved during solidification. As a result, it might happen that honest messages and transactions would need to be reissued or reattached.
-To overcome this limitation, we propose the `approval switch`. The idea is to minimize honest messages along with transactions getting orphaned, by assigning a different meaning to the parents of a message.
+The Tangle builds approval of a given block by directly or indirectly attaching other blocks in its future cone. Due to different reasons, such as the TSA not picking up a given block before its timestamp is still *fresh* or because its past cone has been rejected, a block can become orphan. This implies that the block cannot be included in the Tangle history since all the recent tips do not contain it in their past cone and thus, it cannot be retrieved during solidification. As a result, it might happen that honest blocks and transactions would need to be reissued or reattached.
+To overcome this limitation, we propose the `approval switch`. The idea is to minimize honest blocks along with transactions getting orphaned, by assigning a different meaning to the parents of a block.
### Detailed design
-Each message can express two levels of approval with respect to its parents:
-* **Strong**: it defines approval for both the referenced message along with its entire past cone.
-* **Weak**: it defines approval for the referenced message but not for its past cone.
+Each block can express two levels of approval with respect to its parents:
+* **Strong**: it defines approval for both the referenced block along with its entire past cone.
+* **Weak**: it defines approval for the referenced block but not for its past cone.
Let's consider the following example:
[![Detailed Design Example](/img/protocol_specification/detailed_desing.png "Detailed Design Example")](/img/protocol_specification/detailed_desing.png)
-Message *D* contains a transaction that has been rejected, thus, due to the monotonicity rule, its future cone must be orphaned. Both messages *F* (transaction) and *E* (data) directly reference *D* and, traditionally, they should not be considered for tip selection. However, by introducing the approval switch, these messages can be picked up via a **weak** reference as messages *G* and *H* show.
+Block *D* contains a transaction that has been rejected, thus, due to the monotonicity rule, its future cone must be orphaned. Both blocks *F* (transaction) and *E* (data) directly reference *D* and, traditionally, they should not be considered for tip selection. However, by introducing the approval switch, these blocks can be picked up via a **weak** reference as blocks *G* and *H* show.
-We define two categories of eligible messages:
-- **Strong message**:
+We define two categories of eligible blocks:
+- **Strong block**:
* It is eligible
* Its payload is liked with level of knowledge >=2
- * Its branch is **liked** with level of knowledge >= 2
-- **Weak message**:
+ * Its conflict is **liked** with level of knowledge >= 2
+- **Weak block**:
* It is eligible
* Its payload is liked with level of knowledge >=2
- * Its branch is **not liked** with level of knowledge >= 2
+ * Its conflict is **not liked** with level of knowledge >= 2
-We call *strong approver of x* (or *strong child of x*) any strong message *y* approving *x* via a strong reference. Similarly, we call *weak approver of x* (or *weak child of x*) any strong message *y* approving *x* via a weak reference.
+We call *strong child of x* (or *strong child of x*) any strong block *y* approving *x* via a strong reference. Similarly, we call *weak child of x* (or *weak child of x*) any strong block *y* approving *x* via a weak reference.
### Tip Pool and Time Since Confirmation Check
-When a message is scheduled, it is gossiped to the node's neighbors and, normally, added to the local tip pool
+When a block is scheduled, it is gossiped to the node's neighbors and, normally, added to the local tip pool
except in the following situations:
-* A confirmed message shall not be added to the tip pool (it shall be skipped by the scheduler).
-* A message that has confirmed or scheduled approvers shall not be added to the tip pool.
+* A confirmed block shall not be added to the tip pool (it shall be skipped by the scheduler).
+* A block that has confirmed or scheduled children shall not be added to the tip pool.
-Additionally, strong parents of a message are removed from the tip pool, when the message is added and unused tips are removed from the tip pool after a certain amount of time.
+Additionally, strong parents of a block are removed from the tip pool, when the block is added and unused tips are removed from the tip pool after a certain amount of time.
When selecting tips from the tip pool an additional check is performed to make sure that the timestamp and the
-past cone of a selected message is valid. For the selected tip, the algorithm needs to find a timestamp of the oldest parent of the oldest
-unconfirmed message in the past cone of the tip (`TS_oum`). If the difference between current Confirmed Tangle Time `now` and the
-timestamp of the oldest confirmed message is greater than a certain threshold (`now - TS_oum > TSC_threshold`), then
+past cone of a selected block is valid. For the selected tip, the algorithm needs to find a timestamp of the oldest parent of the oldest
+unconfirmed block in the past cone of the tip (`TS_oum`). If the difference between current Confirmed Tangle Time `now` and the
+timestamp of the oldest confirmed block is greater than a certain threshold (`now - TS_oum > TSC_threshold`), then
the tip cannot be selected and another one needs to be found. The tip stays in the tip pool until it is
automatically removed because of its age.
The Time Since Confirmation check solves the mention problem of [false positive schedule](congestion_control.md#false-positive-schedule)
-by eventually orphaning messages that were dropped by the network.
+by eventually orphaning blocks that were dropped by the network.
-### Branch Management
+### Conflict Management
-A message inherits the branch of its strong parents, while it does not inherit the branch of its weak parents.
+A block inherits the conflict of its strong parents, while it does not inherit the conflict of its weak parents.
#### Approval Weight
-The approval weight of a given message takes into account all of its future cone built over all its strong approvers.
+The approval weight of a given block takes into account all of its future cone built over all its strong children.
Let's consider the following example:
[![Approval Weight](/img/protocol_specification/approval_weight_example.png "Approval Weight")](/img/protocol_specification/approval_weight_example.png )
-*E* is a weak message strongly approving *B* and *D*. When considering the approval weight of *B*, only the strong approvers of its future cone are used, thus, *D, E, F*. Note that, the approval weight of *E* would instead be built over *G, H, I*. Therefore, its approval weight does not add up to its own weight (for instance, when looking at the approval weight of *B*).
+*E* is a weak block strongly approving *B* and *D*. When considering the approval weight of *B*, only the strong children of its future cone are used, thus, *D, E, F*. Note that, the approval weight of *E* would instead be built over *G, H, I*. Therefore, its approval weight does not add up to its own weight (for instance, when looking at the approval weight of *B*).
### Solidification
@@ -432,23 +432,23 @@ The solidification process does not change, both parent types are used to progre
### Test cases
-* message *x* strongly approves a strong message *y*: ok
-* message *x* weakly approves a strong message *y*: it's weird, counts for approval weight of *y* but does not affect the tip status of *y*
-* message *x* strongly approves a weak message *y*: *x* becomes a weak message
-* message *x* weakly approves a weak message *y*: ok
+* block *x* strongly approves a strong block *y*: ok
+* block *x* weakly approves a strong block *y*: it's weird, counts for approval weight of *y* but does not affect the tip status of *y*
+* block *x* strongly approves a weak block *y*: *x* becomes a weak block
+* block *x* weakly approves a weak block *y*: ok
## Finality
-Users need to know whether their information will not be orphaned. However, finality is inherently probabilistic. For instance, consider the following scenario: an attacker can trivially maintain a chain of messages that do not approve any other message. At any given point in time, it is possible that all messages will be orphaned except this chain. This is incredibly unlikely, but yet still possible.
+Users need to know whether their information will not be orphaned. However, finality is inherently probabilistic. For instance, consider the following scenario: an attacker can trivially maintain a chain of blocks that do not approve any other block. At any given point in time, it is possible that all blocks will be orphaned except this chain. This is incredibly unlikely, but yet still possible.
-Therefore, we introduce [Approval Weight](consensus_mechanism.md#approval-weight-aw) to measure the finality of any given message. Similarly to Bitcoin's 6 block rule, AW describes how deeply buried a message in the Tangle is. If a message reaches >50% of active consensus mana approving it, i.e., its future cone contains messages of nodes that together assert >50% of active consensus mana, it as finalized and, thus, confirmed. Specifically, in GoShimmer we use [markers](markers.md) to optimize AW calculations and approximate AW instead of tracking it for each message individually.
+Therefore, we introduce [Approval Weight](consensus_mechanism.md#approval-weight-aw) to measure the finality of any given block. Similarly to Bitcoin's 6 block rule, AW describes how deeply buried a block in the Tangle is. If a block reaches >50% of active consensus mana approving it, i.e., its future cone contains blocks of nodes that together assert >50% of active consensus mana, it as finalized and, thus, confirmed. Specifically, in GoShimmer we use [markers](markers.md) to optimize AW calculations and approximate AW instead of tracking it for each block individually.
## Timestamps
-In order to enable snapshotting based on time constraints rather than special messages in the Tangle (e.g. checkpoints), nodes need to share the same perception of time. Specifically, they need to have consensus on the *age of messages*. This is one of the reasons that messages must contain a field `timestamp` which represents the creation time of the message and is signed by the issuing node.
+In order to enable snapshotting based on time constraints rather than special blocks in the Tangle (e.g. checkpoints), nodes need to share the same perception of time. Specifically, they need to have consensus on the *age of blocks*. This is one of the reasons that blocks must contain a field `timestamp` which represents the creation time of the block and is signed by the issuing node.
-Having consensus on the creation time of messages enables not only total ordering but also new applications that require certain guarantees regarding time. Specifically, we use message timestamps to enforce timestamps in transactions, which may also be used in computing the Mana associated to a particular node ID.
+Having consensus on the creation time of blocks enables not only total ordering but also new applications that require certain guarantees regarding time. Specifically, we use block timestamps to enforce timestamps in transactions, which may also be used in computing the Mana associated to a particular node ID.
### Clock Synchronization
@@ -457,27 +457,27 @@ Nodes need to share a reasonably similar perception of time in order to effectiv
### General Timestamp Rules
-Every message contains a timestamp, which is signed by the issuing node. Thus, the timestamp itself is objective and immutable. Furthermore, transactions also contain a timestamp, which is also signed by the sender of the transaction (user) and thus immutable. We first discuss the rules regarding message timestamps.
+Every block contains a timestamp, which is signed by the issuing node. Thus, the timestamp itself is objective and immutable. Furthermore, transactions also contain a timestamp, which is also signed by the sender of the transaction (user) and thus immutable. We first discuss the rules regarding block timestamps.
-In order for a message to be eligible for tip selection, the timestamp of every message in its past cone (both weak and strong) must satisfy certain requirements. These requirements fall into two categories: objective and subjective. The objective criteria only depend on information written directly in the Tangle and are applied immediately upon solidification. Thus, all nodes immediately have consensus on the objective criteria. In this section, we will discuss these objective criteria.
+In order for a block to be eligible for tip selection, the timestamp of every block in its past cone (both weak and strong) must satisfy certain requirements. These requirements fall into two categories: objective and subjective. The objective criteria only depend on information written directly in the Tangle and are applied immediately upon solidification. Thus, all nodes immediately have consensus on the objective criteria. In this section, we will discuss these objective criteria.
-The quality of the timestamp is a subjective criterion since it is based on the solidification time of the message. Thus, nodes must use a consensus algorithm, to decide which messages should be rejected based on subjective criteria. However, currently this feature is not yet implemented in GoShimmer, and we assume all timestamps to be good.
+The quality of the timestamp is a subjective criterion since it is based on the solidification time of the block. Thus, nodes must use a consensus algorithm, to decide which blocks should be rejected based on subjective criteria. However, currently this feature is not yet implemented in GoShimmer, and we assume all timestamps to be good.
### Age of parents
-It is problematic when incoming messages reference extremely old messages. If any new message may reference any message in the Tangle, then a node will need to keep all messages readily available, precluding snapshotting. For this reason, we require that the difference between the timestamp of a message, and the timestamp of its parents must be at most `30min`. Additionally, we require that timestamps are monotonic, i.e., parents must have a timestamp smaller than their children's timestamps.
+It is problematic when incoming blocks reference extremely old blocks. If any new block may reference any block in the Tangle, then a node will need to keep all blocks readily available, precluding snapshotting. For this reason, we require that the difference between the timestamp of a block, and the timestamp of its parents must be at most `30min`. Additionally, we require that timestamps are monotonic, i.e., parents must have a timestamp smaller than their children's timestamps.
-### Message timestamp vs transaction timestamp
-Transactions contain a timestamp that is signed by the user when creating the transaction. It is thus different from the timestamp in the message which is created and signed by the node. We require
+### Block timestamp vs transaction timestamp
+Transactions contain a timestamp that is signed by the user when creating the transaction. It is thus different from the timestamp in the block which is created and signed by the node. We require
```go
-transaction.timestamp+TW >= message.timestamp >= transaction.timestamp
+transaction.timestamp+TW >= block.timestamp >= transaction.timestamp
```
where `TW` defines the maximum allowed difference between both timestamps, currently set to `10min`.
-If a node receives a transaction from a user with an invalid timestamp it does not create a message but discards the transaction with a corresponding error message to the user. To prevent a user's local clock differences causing issues the node should offer an API endpoint to retrieve its `SyncedTime` according to the network time.
+If a node receives a transaction from a user with an invalid timestamp it does not create a block but discards the transaction with a corresponding error block to the user. To prevent a user's local clock differences causing issues the node should offer an API endpoint to retrieve its `SyncedTime` according to the network time.
### Reattachments
-Reattachments of a transaction are possible during the time window `TW`. Specifically, a transaction may be reattached in a new message as long as the condition `message.timestamp-TW >= transaction.timestamp` is fulfilled. If for some reason a transaction is not *picked up* (even after reattachment) and thus being orphaned, the user needs to create a new transaction with a current timestamp.
+Reattachments of a transaction are possible during the time window `TW`. Specifically, a transaction may be reattached in a new block as long as the condition `block.timestamp-TW >= transaction.timestamp` is fulfilled. If for some reason a transaction is not *picked up* (even after reattachment) and thus being orphaned, the user needs to create a new transaction with a current timestamp.
### Age of UTXO
Inputs to a transaction (unspent outputs) inherit their spent time from the transaction timestamp. Similarly, unspent outputs inherit their creation time from the transaction timestamp as well. For a transaction to be considered valid we require
@@ -491,14 +491,14 @@ In other words, all inputs to a transaction need to have a smaller or equal time
## Tangle Time
For a variety of reasons, a node needs to be able to determine if it is in sync with the rest of the network, including the following:
- to signal to clients that its perception is healthy,
-- to know when to issue messages (nodes out of sync should not issue messages, lest they are added to the wrong part of the Tangle),
-- to schedule messages at the correct rate: out of sync nodes should schedule faster in order to catch up with the network.
+- to know when to issue blocks (nodes out of sync should not issue blocks, lest they are added to the wrong part of the Tangle),
+- to schedule blocks at the correct rate: out of sync nodes should schedule faster in order to catch up with the network.
Every DLT is a clock, or more specifically a network of synchronized clocks. This clock has a natural correspondence with "real time". If the DLT clock differs significantly from local time, then we can conclude that our DLT clock is off from all the other clocks, and thus the node is out of sync.
-Tangle time is the timestamp of the last confirmed message. It cannot be attacked without controlling enough mana to accept incorrect timestamps, making it a reliable, attack-resistant quantity.
+Tangle time is the timestamp of the last confirmed block. It cannot be attacked without controlling enough mana to accept incorrect timestamps, making it a reliable, attack-resistant quantity.
-Typically speaking, `CurrentTime - TangleTime` is, on average, the approximate confirmation time of messages. Thus, if this difference is too far off, then we can conclude that we do not know which messages are confirmed and thus we are out of sync. In this spirit, we are able to define the following function.
+Typically speaking, `CurrentTime - TangleTime` is, on average, the approximate confirmation time of blocks. Thus, if this difference is too far off, then we can conclude that we do not know which blocks are confirmed and thus we are out of sync. In this spirit, we are able to define the following function.
```go
func Synced() bool {
diff --git a/documentation/docs/protocol_specification/glossary.md b/documentation/docs/protocol_specification/glossary.md
index 2002cd49e7..bf7afbdb7a 100644
--- a/documentation/docs/protocol_specification/glossary.md
+++ b/documentation/docs/protocol_specification/glossary.md
@@ -16,7 +16,7 @@ keywords:
---
## Application Layer
-The IOTA Protocol allows for a host of applications to run on the message tangle. Anybody can design an application, and users can decide which applications to run on their nodes. These applications will all use the communication layer to broadcast and store data.
+The IOTA Protocol allows for a host of applications to run on the block tangle. Anybody can design an application, and users can decide which applications to run on their nodes. These applications will all use the communication layer to broadcast and store data.
### Core Applications
Applications that are necessary for the protocol to operate. These include for example:
@@ -38,19 +38,19 @@ This layer stores and communicates information. This layer contains the “distr
The reputation of a node is based on a virtual token called mana. This reputation, working as a Sybil protection mechanism, is important for issuing more transactions (see Module 3) and having a higher influence during the voting process (see Module 5).
#### Epoch
-A time interval that is used for a certain type of consensus mana. At the end of each epoch a snapshot of the state of mana distribution in the network is taken. Since this tool employs the timestamp of messages every node can reach consensus on an epoch's mana distribution eventually.
+A time interval that is used for a certain type of consensus mana. At the end of each epoch a snapshot of the state of mana distribution in the network is taken. Since this tool employs the timestamp of blocks every node can reach consensus on an epoch's mana distribution eventually.
-### Message
-The object that is gossiped between neighbors. All gossiped information is included in a message. The most basic unit of information of the IOTA Protocol. Each message has a type and size and contains data.
+### Block
+The object that is gossiped between neighbors. All gossiped information is included in a block. The most basic unit of information of the IOTA Protocol. Each block has a type and size and contains data.
-### Message Overhead
+### Block Overhead
The additional information (metadata) that needs to be sent along with the actual information (data). This can contain signatures, voting, heartbeat signals, and anything that is transmitted over the network but is not the transaction itself.
### Parent
-A message approved by another message is called a parent to the latter. A parent can be selected as strong or weak parent. If the past cone of the parent is liked the parent is set as strong parent. If the message is liked but its past cone is disliked it is set as a weak parent. This mechanism is called approval switch.
+A block approved by another block is called a parent to the latter. A parent can be selected as strong or weak parent. If the past cone of the parent is liked the parent is set as strong parent. If the block is liked but its past cone is disliked it is set as a weak parent. This mechanism is called approval switch.
### Payload
-A field in a message which determines the type. Examples are:
+A field in a block which determines the type. Examples are:
* Value payload (type TransactionType)
* dRNG payload
* Salt declaration payload
@@ -58,7 +58,7 @@ A field in a message which determines the type. Examples are:
---
### Transaction
-A message with payload of type TransactionType. It contains the information of a transfer of funds.
+A block with payload of type TransactionType. It contains the information of a transfer of funds.
#### Finality
The property that once a transaction is completed there is no way to revert or alter it. This is the moment when the parties involved in a transfer can consider the deal done. Finality can be deterministic or probabilistic.
@@ -80,19 +80,19 @@ Unspent transaction output.
---
### Tip Selection
-The process of selecting previous messages to be referenced by a new message. These references are where a message attaches to the existing data structure. IOTA only enforces that a message approves (at least) two other messages, but the tip selection strategy is left up to the user (with a good default provided by IOTA).
+The process of selecting previous blocks to be referenced by a new block. These references are where a block attaches to the existing data structure. IOTA only enforces that a block approves (at least) two other blocks, but the tip selection strategy is left up to the user (with a good default provided by IOTA).
#### Approval Switch
-When selecting a message as a parent, we can select from the strong or weak tip pool. This mechanism is called approval switch.
+When selecting a block as a parent, we can select from the strong or weak tip pool. This mechanism is called approval switch.
#### Approval Weight
-A message gains mana weight, by messages approving it directly or indirectly. However, only strong parents can propagate the mana weight to the past, while weak parents obtain the weight from its weak children but don't propagate it.
+A block gains mana weight, by blocks approving it directly or indirectly. However, only strong parents can propagate the mana weight to the past, while weak parents obtain the weight from its weak children but don't propagate it.
#### Local Modifiers
Custom conditions that nodes can take into account during tip selection. In IOTA, nodes do not necessarily have the same view of the Tangle; various kinds of information only locally available to them can be used to strengthen security.
#### Tip
-A message that has not yet been approved.
+A block that has not yet been approved.
---
## Consensus
@@ -120,7 +120,7 @@ Milestones are transactions signed and issued by the Coordinator. Their main goa
---
## Markers
-A tool that exists only locally and allows performing certain calculations more efficiently. Such as approval weight calculation or the existence of certain messages in the past or future cone of another message.
+A tool that exists only locally and allows performing certain calculations more efficiently. Such as approval weight calculation or the existence of certain blocks in the past or future cone of another block.
## Network Layer
This layer manages the lower layers of internet communication like TCP. It is the most technical, and in some ways the least interesting. In this layer, the connections between nodes are managed by the autopeering and peer discovery modules and the gossip protocol.
@@ -129,7 +129,7 @@ This layer manages the lower layers of internet communication like TCP. It is th
A cyber-attack that aims to isolate and attack a specific user, rather than the whole network.
### Neighbors
-Network nodes that are directly connected and can exchange messages without intermediate nodes.
+Network nodes that are directly connected and can exchange blocks without intermediate nodes.
### Node
A machine which is part of the IOTA network. Its role is to issue new transactions and to validate existing ones.
@@ -141,16 +141,16 @@ The procedure of discovering and connecting to other network nodes.
A network in which most nodes can be reached from every other node by a few intermediate steps.
### Splitting Attack
-An attack in which a malicious node attempts to split the Tangle into two branches. As one of the branches grows, the attacker publishes transactions on the other branch to keep both alive. Splitting attacks attempt to slow down the consensus process or conduct a double spend.
+An attack in which a malicious node attempts to split the Tangle into two conflicts. As one of the conflicts grows, the attacker publishes transactions on the other conflict to keep both alive. Splitting attacks attempt to slow down the consensus process or conduct a double spend.
### Sybil Attack
An attempt to gain control over a peer-to-peer network by forging multiple fake identities.
---
## Tangle
-An append only message data structure where each message references (at least) two other messages.
+An append only block data structure where each block references (at least) two other blocks.
### Subtangle
-A consistent section of the Tangle (i.e. a subset of messages), such that each included message also includes its referenced messages.
+A consistent section of the Tangle (i.e. a subset of blocks), such that each included block also includes its referenced blocks.
---
\ No newline at end of file
diff --git a/documentation/docs/protocol_specification/overview.md b/documentation/docs/protocol_specification/overview.md
index 14635fe8fe..13905949df 100644
--- a/documentation/docs/protocol_specification/overview.md
+++ b/documentation/docs/protocol_specification/overview.md
@@ -1,6 +1,6 @@
---
description: High-level overview of the protocol, and its implemented components.
-image: /img/protocol_specification/Protocol_overview_received_message.png
+image: /img/protocol_specification/Protocol_overview_received_block.png
keywords:
- overview
- protocol
diff --git a/documentation/docs/protocol_specification/protocol.md b/documentation/docs/protocol_specification/protocol.md
index 99cd08f82f..06dac41f8e 100644
--- a/documentation/docs/protocol_specification/protocol.md
+++ b/documentation/docs/protocol_specification/protocol.md
@@ -1,8 +1,8 @@
---
-description: A high-level overview of the protocol, following the natural life cycle of a message from the Tip Selection module to being considered valid permanently by all nodes.
-image: /img/protocol_specification/Protocol_overview_received_message.png
+description: A high-level overview of the protocol, following the natural life cycle of a block from the Tip Selection module to being considered valid permanently by all nodes.
+image: /img/protocol_specification/Protocol_overview_received_block.png
keywords:
-- message
+- block
- node
- honest node
- rate of issuance
@@ -15,52 +15,52 @@ keywords:
# Protocol High-level Overview
-To orientate the reader, we provide a high-level overview of the protocol, following the natural life cycle of a message. The first module used—while the message is still being created—, is the **Tip Selection** module.
-Here, the node must choose a certain number (from two to eight) of other messages to reference, meaning that the newly created message will be cryptographically attached to these referenced messages.
-An honest node must always choose tips uniformly at random from a tip pool, i.e., from a set of still unreferenced messages that satisfy a certain set of conditions, as discussed on the [Tangle](components/tangle.md) component.
+To orientate the reader, we provide a high-level overview of the protocol, following the natural life cycle of a block. The first module used—while the block is still being created—, is the **Tip Selection** module.
+Here, the node must choose a certain number (from two to eight) of other blocks to reference, meaning that the newly created block will be cryptographically attached to these referenced blocks.
+An honest node must always choose tips uniformly at random from a tip pool, i.e., from a set of still unreferenced blocks that satisfy a certain set of conditions, as discussed on the [Tangle](components/tangle.md) component.
In the diagram below, the issuance process being described now is represented in the context of the complete protocol.
Each node in the network has limited bandwidth, CPU, and memory. In order to avoid any node from being overloaded, the right to write in everybody else's Tangle is regulated by the **Rate and Congestion Control Modules**.
-The first one dictates the maximum rate of issuance of messages by the introduction of a small amount of proof of work.
-However, if an attacker accelerates the message issuance—effectively flooding the network—, the difficulty of the proof of work for that node will increase exponentially. Eventually, the attacker will be incapable of issuing new messages.
+The first one dictates the maximum rate of issuance of blocks by the introduction of a small amount of proof of work.
+However, if an attacker accelerates the block issuance—effectively flooding the network—, the difficulty of the proof of work for that node will increase exponentially. Eventually, the attacker will be incapable of issuing new blocks.
Later, the Congestion control module fairly allocates the network resources accordingly to a quantity called **Access Mana**, which acts as a [Sybil protection](https://en.wikipedia.org/wiki/Sybil_attack) mechanism.
-We can summarize Access Mana as a scarce resource, that makes an effective Sybil protection mechanism. Thus, each node has the right to issue messages at a rate proportional to their Access Mana.
-This fair rate is not constant (since the utilization of the network may fluctuate), and to correctly set its own individual rate of issuance of messages, each node uses a mechanism called the **Rate Setter**, that makes the average issuance rate of the node converge to the fair rate guaranteed by Access Mana.
+We can summarize Access Mana as a scarce resource, that makes an effective Sybil protection mechanism. Thus, each node has the right to issue blocks at a rate proportional to their Access Mana.
+This fair rate is not constant (since the utilization of the network may fluctuate), and to correctly set its own individual rate of issuance of blocks, each node uses a mechanism called the **Rate Setter**, that makes the average issuance rate of the node converge to the fair rate guaranteed by Access Mana.
Nodes that do not use the rate Setter will be punished by either the Rate Control or the Congestion Control Module.
-Between the Rate Setter and the actual gossip of the message, several steps will take place, but—for the sake of clearness—we ignore these steps for now and return to this subject later.
-Then, assuming that the message was properly created, it will be propagated to the rest of the network.
+Between the Rate Setter and the actual gossip of the block, several steps will take place, but—for the sake of clearness—we ignore these steps for now and return to this subject later.
+Then, assuming that the block was properly created, it will be propagated to the rest of the network.
Since we deal with a large number of nodes, the communication graph cannot be [complete](https://en.wikipedia.org/wiki/Complete_graph).
Thus, the [network topology](https://en.wikipedia.org/wiki/Network_topology) will be dictated by the [**Neighbor Selection**](components/autopeering.md) (aka Autopeering) module.
-[![Protocol Overview Received Message](/img/protocol_specification/Protocol_overview_received_message.png "Protocol Overview Received Message")](/img/protocol_specification/Protocol_overview_received_message.png)
+[![Protocol Overview Received Block](/img/protocol_specification/Protocol_overview_received_block.png "Protocol Overview Received Block")](/img/protocol_specification/Protocol_overview_received_block.png)
-We turn our attention now to another point of view: the one of the nodes receiving new messages, represented in the diagram above.
-After receiving a message, the node will perform several **syntactical verifications**, that will act as a filter to the messages. Additionally, the message has to be **solidified**, meaning that the node must know all the past cone of the message (i.e., the set of all messages directly or indirectly referenced by the message in question).
-After this step, the node places all the messages left into an inbox. At a fixed global rate (meaning that all nodes use the same rate), the node uses a **scheduler** to choose a message from the inbox.
+We turn our attention now to another point of view: the one of the nodes receiving new blocks, represented in the diagram above.
+After receiving a block, the node will perform several **syntactical verifications**, that will act as a filter to the blocks. Additionally, the block has to be **solidified**, meaning that the node must know all the past cone of the block (i.e., the set of all blocks directly or indirectly referenced by the block in question).
+After this step, the node places all the blocks left into an inbox. At a fixed global rate (meaning that all nodes use the same rate), the node uses a **scheduler** to choose a block from the inbox.
This scheduler—that, technically, is part of the aforementioned congestion control mechanism—works as a gatekeeper, effectively regulating the use of the most scarce resources of the nodes.
Since the scheduler works at a fixed rate, the network cannot be overwhelmed. The scheduler is designed to ensure—even in the presence of attackers—the following properties:
-1. **Consistency**: all honest nodes will schedule the same messages
-2. **Fair access**: the nodes' messages will be scheduled at a fair rate according to their Access Mana
-3. **Bounded latency**: the processing time of all messages will be bounded
+1. **Consistency**: all honest nodes will schedule the same blocks
+2. **Fair access**: the nodes' blocks will be scheduled at a fair rate according to their Access Mana
+3. **Bounded latency**: the processing time of all blocks will be bounded
-Only after passing the scheduler the messages can be written into the local Tangle. To do that, the nodes perform most of the **semantic validation**, such as the search for irreconcilable conflicts in the message's past cone or (in the case of value transfers) unlock condition checks.
-At this point (if the message passes these checks), the message will be **booked** into the **local Tangle** of the node and be gossiped to the rest of the network.
+Only after passing the scheduler the blocks can be written into the local Tangle. To do that, the nodes perform most of the **semantic validation**, such as the search for irreconcilable conflicts in the block's past cone or (in the case of value transfers) unlock condition checks.
+At this point (if the block passes these checks), the block will be **booked** into the **local Tangle** of the node and be gossiped to the rest of the network.
Additionally, in the case of a value transfer, the **ledger state** and two vectors called Access Mana Vector and **Consensus Mana** Vector are updated accordingly.
The Consensus Mana is another Sybil protection mechanism which—since it is applied to different modules than Access Mana—has the need of a different calculation.
[![Protocol Overview Booking](/img/protocol_specification/Protocol_overview_booking.png "Protocol Overview Booking")](/img/protocol_specification/Protocol_overview_booking.png )
-After having the message booked, the node is free to **gossip** it, but a crucial step of the protocol is still missing: the **Opinion Setter** and the voting protocol, that deal with the most subjective parts of the consensus mechanism (notice that, until now, the protocol has mostly dealt with objective checks).
+After having the block booked, the node is free to **gossip** it, but a crucial step of the protocol is still missing: the **Opinion Setter** and the voting protocol, that deal with the most subjective parts of the consensus mechanism (notice that, until now, the protocol has mostly dealt with objective checks).
The voting protocol used here is the FPC (or **Fast Probabilistic Consensus**), which is a binary voting protocol that allows a large group of nodes to come to a consensus on the value of a single bit.
-The FPC begins with each node having an initial opinion, set using the node's local time perception and ordering of the messages. The nodes must set opinions about two subjects:
+The FPC begins with each node having an initial opinion, set using the node's local time perception and ordering of the blocks. The nodes must set opinions about two subjects:
-1. **The legitimacy of the timestamp of the message**: Whenever a node issues a message, it adds a timestamp to it, which should represent the local time of issuance (as seen by the issuer node). The other nodes will judge if this timestamp is reasonable, by checking if it is too far away from their own local clock.
+1. **The legitimacy of the timestamp of the block**: Whenever a node issues a block, it adds a timestamp to it, which should represent the local time of issuance (as seen by the issuer node). The other nodes will judge if this timestamp is reasonable, by checking if it is too far away from their own local clock.
2. In the case of a value transfer, **whether it is a conflict**: We use the [**FCoB Rule**](components/consensus_mechanism.md#fcob). Roughly, the node will have a positive opinion about a transaction A if and only if all its conflicts arrived later than a certain time interval after A's arrival.
In each round, nodes randomly choose other nodes to query about their opinions about one of the subjects above.
@@ -78,9 +78,9 @@ Unless the attacker controls more than 1/3 of the Consensus Mana in the system,
[![Protocol Overview Consensus](/img/protocol_specification/Protocol_overview_consensus.png "Protocol Overview Consensus")](/img/protocol_specification/Protocol_overview_consensus.png)
-Analogously to Bitcoin's [six blocks rule](https://en.bitcoin.it/wiki/Confirmation), our protocol has certain measures of the probability of a certain message being considered valid permanently by all nodes.
+Analogously to Bitcoin's [six blocks rule](https://en.bitcoin.it/wiki/Confirmation), our protocol has certain measures of the probability of a certain block being considered valid permanently by all nodes.
This is achieved by the use of the [**Approval Weight**](components/consensus_mechanism.md#approval-weight-aw).
-The Approval weight represents the *weight* of branches (and messages).
-Different to the classical Nakamoto consensus, instead of selecting a leader based on a puzzle (PoW) or stake (PoS), it allows every node to express its opinion by simply issuing any message and attaching it in a part of the Tangle it *likes* based on a `Like switch`. Through the like switch, a message can even reference messages of branches it doesn't like (thereby reduce orphanage), by explicitly expressing which ones it likes instead.
+The Approval weight represents the *weight* of conflicts (and blocks).
+Different to the classical Nakamoto consensus, instead of selecting a leader based on a puzzle (PoW) or stake (PoS), it allows every node to express its opinion by simply issuing any block and attaching it in a part of the Tangle it *likes* based on a `Like switch`. Through the like switch, a block can even reference blocks of conflicts it doesn't like (thereby reduce orphanage), by explicitly expressing which ones it likes instead.
This process is known as On-Tangle-Voting.
diff --git a/documentation/docs/teamresources/guidelines.md b/documentation/docs/teamresources/guidelines.md
index c197401969..ddd0abe155 100644
--- a/documentation/docs/teamresources/guidelines.md
+++ b/documentation/docs/teamresources/guidelines.md
@@ -15,7 +15,7 @@ keywords:
## General Guidelines
- Don’t use `log.Fatal()` or `os.Exit()` outside of the main. It immediately terminates the program and all defers are ignored and no graceful shutdown is possible. It can lead to inconsistencies. Propagate the error up to the main and let the main function exit instead. Avoid panics as well, almost always use errors. [Example](https://github.com/iotaledger/goshimmer/blob/f75ce47eeaa3bf930b368754ac24b72f768a5964/plugins/autopeering/autopeering.go#L135).
-- Don’t duplicate code, reuse it. In tests too. Example: [duplicate1](https://github.com/iotaledger/goshimmer/blob/f75ce47eeaa3bf930b368754ac24b72f768a5964/packages/ledgerstate/branch_dag.go#L969) and [duplicate2](https://github.com/iotaledger/goshimmer/blob/f75ce47eeaa3bf930b368754ac24b72f768a5964/packages/ledgerstate/branch_dag.go#L1053)
+- Don’t duplicate code, reuse it. In tests too. Example: [duplicate1](https://github.com/iotaledger/goshimmer/blob/f75ce47eeaa3bf930b368754ac24b72f768a5964/packages/ledgerstate/conflict_dag.go#L969) and [duplicate2](https://github.com/iotaledger/goshimmer/blob/f75ce47eeaa3bf930b368754ac24b72f768a5964/packages/ledgerstate/conflict_dag.go#L1053)
- Unhandled errors can cause bugs and make it harder to diagnose problems. Try to handle all errors: propagate them to the caller or log them. Even if the function call is used with a defer, and it’s inconvenient to handle the error it returns, still handle it. Wrap the function call in an anonymous function assign error to the upper error like that:
```go
defer func() {
@@ -25,7 +25,7 @@ keywords:
}
}()
```
-- Wrap errors with `errors.Wrap()` when returning them to the caller. It adds the stack trace and a custom message to the error. Without that information investigating an issue is very hard.
+- Wrap errors with `errors.Wrap()` when returning them to the caller. It adds the stack trace and a custom block to the error. Without that information investigating an issue is very hard.
- Use `errors.Is()` instead of direct errors comparison. This function unwraps errors recursively. [Example](https://github.com/iotaledger/goshimmer/pull/1113/files#diff-05fdc081489a8d5a61224d812f9bbd7bc77edf9769ed00d95ea024d2a44a699aL62).
- Propagate `ctx` and use APIs that accept `ctx`, start exposing APIs that accept `ctx`. Context is a native way for timeouts/cancellation in Go. It allows writing more resilient and fault tolerant code. [Example](https://github.com/iotaledger/goshimmer/pull/1113/files#diff-f2820ed0d3d4d9ea05b78b1dd3978dbcf9401c8caaa8cc40cc1c0342a55379fcL35).
- Don’t shadow builtin functions like copy, len, new etc. [Example](https://github.com/iotaledger/goshimmer/pull/1113/files#diff-f07268750a44da26386469c1b1e93574a678c3d418fce9e1f186d5f1991a92eaL14).
@@ -41,7 +41,7 @@ keywords:
We use the new error wrapping API and behavior introduced with Go 1.13 but we use the "github.com/cockroachdb/errors" drop-in replacement which follows the Go 2 design draft and which enables us to have a stack trace for every "wrapping" of the error.
-Errors should always be wrapped and annotated with an additional message at each step. The following example shows how errors are wrapped and turned into the corresponding sentinel errors.
+Errors should always be wrapped and annotated with an additional block at each step. The following example shows how errors are wrapped and turned into the corresponding sentinel errors.
```go
package example
diff --git a/documentation/docs/teamresources/release.md b/documentation/docs/teamresources/release.md
index 6def0b364a..6ed7be7fc7 100644
--- a/documentation/docs/teamresources/release.md
+++ b/documentation/docs/teamresources/release.md
@@ -15,6 +15,6 @@ keywords:
1. Create a PR into `develop` updating the banner version, database version and network version (`plugins/banner.AppVersion` `plugins/database/versioning.go` `plugins/autopeering/discovery/parameters.go`) and mentioning the changes in `CHANGELOG.md`.
2. Create a PR merging `develop` into `master`: merge **without squashing**.
3. Go to release workflow https://github.com/iotaledger/goshimmer/actions/workflows/release.yml and click the gray "Run workflow" button to configure the release process.
-4. In "Branch" field set `master`, in "Tag name" set current version, in "Release description" paste the changes recently added to `CHANGELOG.md`. Click the green "Run workflow" to trigger the automatic release and deployment process.
+4. In "Conflict" field set `master`, in "Tag name" set current version, in "Release description" paste the changes recently added to `CHANGELOG.md`. Click the green "Run workflow" to trigger the automatic release and deployment process.
5. Check that the binaries are working.
6. Check that the nodes are up and functioning on `devnet`.
diff --git a/documentation/docs/tooling/dags_visualizer.md b/documentation/docs/tooling/dags_visualizer.md
index 6f02b50cb0..256e5e4785 100644
--- a/documentation/docs/tooling/dags_visualizer.md
+++ b/documentation/docs/tooling/dags_visualizer.md
@@ -1,5 +1,5 @@
# GoShimmer DAGs visualizer
-The DAGs visualizer is our all round tool for visualizing DAGs. Be it Tangle, UTXO-DAG or Branch-DAG or their interactions. The DAGs visualizer is our go-to tool for visualization.
+The DAGs visualizer is our all round tool for visualizing DAGs. Be it Tangle, UTXO-DAG or Conflict-DAG or their interactions. The DAGs visualizer is our go-to tool for visualization.
## How to run
@@ -8,7 +8,7 @@ To run it just simply launch a goshimmer node, open browser and go to `http://lo
:::note
-UTXO-DAG and Branch-DAG will check if there's any added or removed vertex every 10 seconds and rearrange vertices positions.
+UTXO-DAG and Conflict-DAG will check if there's any added or removed vertex every 10 seconds and rearrange vertices positions.
:::
@@ -21,14 +21,14 @@ Global functions are used to apply settings across DAGs or interact with them.
Each node in a graph can be selected to see its contained information, and they are navigated to the dashboard explorer for more details. You can change the url to the desired dashboard explorer, default is `http://localhost:8081`.
#### Search Vertex Within Time Intervals
-You can check how Tangle, UTXO and branch DAG look like in a given timeframe.
-Press "search" button, it will show you numbers of messages, transactions and branches found within the given timeframe. If you want to render them in graphs, push "render" button.
+You can check how Tangle, UTXO and conflict DAG look like in a given timeframe.
+Press "search" button, it will show you numbers of blocks, transactions and conflicts found within the given timeframe. If you want to render them in graphs, push "render" button.
-The branch DAG shows not just branches in the given time interval (colored in orage) but also the full history (colored in blue) to the master branch.
+The conflict DAG shows not just conflicts in the given time interval (colored in orage) but also the full history (colored in blue) to the master conflict.
:::note
-Drawing a large amount of transactions or branches may slow down the browser.
+Drawing a large amount of transactions or conflicts may slow down the browser.
:::
@@ -36,12 +36,12 @@ Drawing a large amount of transactions or branches may slow down the browser.
#### Select and center vertex across DAGs
-You can see a selected message/transaction/branch and its corresponding message/transaction/branch in other DAGs! Here's an example of sync with the selected transaction, you can see the message and branch that contains the transaction are highlighted.
+You can see a selected block/transaction/conflict and its corresponding block/transaction/conflict in other DAGs! Here's an example of sync with the selected transaction, you can see the block and conflict that contains the transaction are highlighted.
[![DAGs visualizer Syncing with TX](/img/tooling/sync-with-tx.png "DAGs visualizer sync with TX")](/img/tooling/sync-with-tx.png)
-Another example of sync with the selected branch:
-[![DAGs visualizer Syncing with branch](/img/tooling/sync-with-branch.png "DAGs visualizer sync with branch")](/img/tooling/sync-with-branch.png)
+Another example of sync with the selected conflict:
+[![DAGs visualizer Syncing with conflict](/img/tooling/sync-with-conflict.png "DAGs visualizer sync with conflict")](/img/tooling/sync-with-conflict.png)
## How to run in dev mode
diff --git a/documentation/docs/tooling/docker_private_network.md b/documentation/docs/tooling/docker_private_network.md
index 1e1bf11b75..e577a2ad1d 100644
--- a/documentation/docs/tooling/docker_private_network.md
+++ b/documentation/docs/tooling/docker_private_network.md
@@ -50,7 +50,7 @@ Reachable from the host system
- `faucet's` dashboard: http: http://localhost:8081
-It is therefore possible to send messages to the local network via the `peer_master`. Log messages of a specific containter can be followed via
+It is therefore possible to send blocks to the local network via the `peer_master`. Log blocks of a specific containter can be followed via
```shell
docker logs --follow CONTAINERNAME
```
@@ -61,9 +61,9 @@ A snapshot tool is provided in the tools folder. The snapshot file that is creat
Docker Compose uses the `SNAPSHOT_FILE` environment variable to determine the location of the snapshot. Once you have a new snapshot you can simply set `SNAPSHOT_FILE` to the location of your new snapshot and Docker Compose will use your snapshot the next time you run `docker-compose up`.
-## How to Use Message Approval Check Tool
+## How to Use Block Approval Check Tool
-`get_approval_csv.sh` script helps you conveniently trigger the message approval checks on all nodes in the docker
+`get_approval_csv.sh` script helps you conveniently trigger the block approval checks on all nodes in the docker
network, and gather their results in the `csv` folder.
Once the network is up and running, execute the script:
@@ -91,14 +91,14 @@ Note, that the record length of the files might differ, since the approval check
## Spammer Tool
-The Spammer tool lets you add messages to the tangle when running GoShimmer in a Docker network.
+The Spammer tool lets you add blocks to the tangle when running GoShimmer in a Docker network.
In order to start the spammer, you need to send GET requests to a `/spammer` API endpoint with the following parameters:
* `cmd` - one of two possible values: `start` and `stop`.
* `unit` - Either `mps` or `mpm`. Only applicable when `cmd=start`.
* `rate` - Rate in integer. Only applicable when `cmd=start`.
-* `imif` - (*optional*) parameter indicating time interval between issued messages. Possible values:
- * `poisson` - emit messages modeled with Poisson point process, whose time intervals are exponential variables with mean 1/rate
- * `uniform` - issues messages at constant rate
+* `imif` - (*optional*) parameter indicating time interval between issued blocks. Possible values:
+ * `poisson` - emit blocks modeled with Poisson point process, whose time intervals are exponential variables with mean 1/rate
+ * `uniform` - issues blocks at constant rate
Example requests:
@@ -112,14 +112,14 @@ http://localhost:8080/spammer?cmd=stop
## Tangle Width
When running GoShimmer locally in a Docker network, the network delay is so small that only 1 tip will be available most of the time.
-In order to artificially create a tangle structure with multiple tips you can add a `messageLayer.tangleWidth` property to [config.docker.json](https://github.com/iotaledger/goshimmer/blob/develop/tools/docker-network/config.docker.json)
+In order to artificially create a tangle structure with multiple tips you can add a `blockLayer.tangleWidth` property to [config.docker.json](https://github.com/iotaledger/goshimmer/blob/develop/tools/docker-network/config.docker.json)
that specifies the number of tips that nodes should retain. This setting exists only for local testing purposes and should not be used in a distributed testnet.
Here is an example config that can be added:
```json
{
- "messageLayer": {
+ "blockLayer": {
"tangleWidth": 10
}}
```
@@ -143,7 +143,7 @@ These services that are created by default with `docker-compose up -d`.
#### Configuration
-- SNAPSHOT_FILE: The full path to the message snapshot file. Defaults to `./goshimmer/assets/7R1itJx5hVuo9w9hjg5cwKFmek4HMSoBDgJZN8hKGxih.bin`
+- SNAPSHOT_FILE: The full path to the block snapshot file. Defaults to `./goshimmer/assets/7R1itJx5hVuo9w9hjg5cwKFmek4HMSoBDgJZN8hKGxih.bin`
- GOSHIMMER_TAG: (Optional) The [iotaledger/goshimmer](https://hub.docker.com/r/iotaledger/goshimmer) tag to use. Defaults to `develop`.
- GOSHIMMER_CONFIG: The location of the GoShimmer config file. Defaults to `./config.docker.json`.
diff --git a/documentation/docs/tooling/evil_spammer.md b/documentation/docs/tooling/evil_spammer.md
index 350dad4b00..7cab9a10a4 100644
--- a/documentation/docs/tooling/evil_spammer.md
+++ b/documentation/docs/tooling/evil_spammer.md
@@ -43,7 +43,7 @@ go run . basic --spammer custom --scenario --rate 5 --duration 3
It is possible to start multiple spam types at once by providing parameters separated by commas.
```shell
-go run . basic --urls http://localhost:8080 --spammer ds,msg,custom --rate 5,10,2 --duration 20s,20s,20s --tu 1s --scenario peace
+go run . basic --urls http://localhost:8080 --spammer ds,blk,custom --rate 5,10,2 --duration 20s,20s,20s --tu 1s --scenario peace
```
#### Quick Test
@@ -88,7 +88,7 @@ You can check how many outputs is available in the "Evil wallet details".
- faucet outputs are outputs created from the faucet requests
- reuse outputs are the outputs available for the deep spam, you can collect them by changing reuse spam options to enable in
`New Spam -> Update spam options`. Later if you enable the deep spam in `Update spam options` they will be used as the batch inputs and will create deep DAG structures.
- - and the statistics about spammed data messages, value messages and whole scenarios.
+ - and the statistics about spammed data blocks, value blocks and whole scenarios.
#### Other things worth to know
- Saving the evil wallet states is not supported. But don't worry you still can request more fresh Faucet outputs with just one click!
@@ -97,7 +97,7 @@ You can check how many outputs is available in the "Evil wallet details".
- Spammer allows for max 5 concurrently running spams, you can check currently running spams and cancel them at any time.
- Spammer tool keeps track of your last spams history, so you can check the times of the spam and render a specific period with the visualizer.
- In spam options you can enable `deep` spam, in which the spammer will reuse outputs generated by the current spam, previous spams with `reuse` option enabled, and previous deep spams' outputs.
-- By default, the spam rate is set to mps, but you can change the time unit in the config file, e.g. `"timeUnit": "1m"` for message per minute.
+- By default, the spam rate is set to mps, but you can change the time unit in the config file, e.g. `"timeUnit": "1m"` for block per minute.
## Predefined scenarios
Below you can find a list of predefined scenarios.
@@ -346,7 +346,7 @@ WithEvilWallet(evilWallet),
```go
WithEvilScenario(scenario *evilwallet.EvilScenario) Options
```
-* By default spammer uses batch spamming function, but you can also spam with data messages by using:
+* By default spammer uses batch spamming function, but you can also spam with data blocks by using:
```go
WithSpammingFunc(evilspammer.DataSpammingFunction)
```
@@ -377,7 +377,7 @@ EvilBatch{
#### Deep spamming
Except basic functionality to customize spam batches, set the rate and duration, the Evil Spammer allows also for deep spamming.
-To create deep branch and UTXO structure you need to enable the deep spam with an option
+To create deep conflict and UTXO structure you need to enable the deep spam with an option
```go
evilwallet.WithScenarioDeepSpamEnabled()
```
diff --git a/documentation/docs/tooling/integration_tests.md b/documentation/docs/tooling/integration_tests.md
index 31de74b7d9..760daa18c0 100644
--- a/documentation/docs/tooling/integration_tests.md
+++ b/documentation/docs/tooling/integration_tests.md
@@ -81,7 +81,7 @@ var ConsensusSnapshotDetails = framework.SnapshotInfo{
}
```
-The last parameter to the `CreateNetwork` function can be used to alter peers' configuration to use a generated snapshot file (e.g. `conf.MessageLayer.Snapshot.File = snaphotInfo.FilePath`).
+The last parameter to the `CreateNetwork` function can be used to alter peers' configuration to use a generated snapshot file (e.g. `conf.BlockLayer.Snapshot.File = snaphotInfo.FilePath`).
The `CommonSnapshotConfigFunc` function can be used for the average scenario: it will use the same `SnapshotInfo` for all peers.
diff --git a/documentation/docs/tutorials/dApp.md b/documentation/docs/tutorials/dApp.md
index 2ef04de3c9..991a96854f 100644
--- a/documentation/docs/tutorials/dApp.md
+++ b/documentation/docs/tutorials/dApp.md
@@ -4,7 +4,7 @@ image: /img/logo/goshimmer_light.png
keywords:
- chat
- payload
-- message
+- block
- bytes layout
- web api endpoint
---
@@ -28,36 +28,36 @@ Throughout this tutorial we will learn how to write simple dApps as GoShimmer pl
## Chat dApp
-In this guide we are going to explain how to write a very simple chat dApp so that anyone, connected to a GoShimmer node, could write a short message and read what is being written into the Tangle.
+In this guide we are going to explain how to write a very simple chat dApp so that anyone, connected to a GoShimmer node, could write a short block and read what is being written into the Tangle.
The complete source code of the application can be found [in the repository](https://github.com/iotaledger/goshimmer/tree/develop/plugins/chat).
### Overview
Our chat dApp can be implemented in a few simple steps:
-1. A node sends a special message containing a chat payload via the Tangle.
-2. Upon receipt, every other node in the network processes this message and - if the chat dApp/plugin is enabled - triggers an event that a chat message has been received.
+1. A node sends a special block containing a chat payload via the Tangle.
+2. Upon receipt, every other node in the network processes this block and - if the chat dApp/plugin is enabled - triggers an event that a chat block has been received.
-Within GoShimmer we need 3 components to realize this undertaking. First, we need to **define and register a chat payload type**. Second, we need a way to **initiate a message** with a chat payload via the web API. And lastly, we need to **listen** for chat payloads and take appropriate action.
+Within GoShimmer we need 3 components to realize this undertaking. First, we need to **define and register a chat payload type**. Second, we need a way to **initiate a block** with a chat payload via the web API. And lastly, we need to **listen** for chat payloads and take appropriate action.
-If a node does not have our chat dApp installed and activated, the chat message will be simply treated as a raw data message without any particular meaning. In general that means that in order for a dApp to be useful, node owners need to explicitly install it. In our case we simply ship it with GoShimmer as a [plugin](../implementation_design/plugin.md).
+If a node does not have our chat dApp installed and activated, the chat block will be simply treated as a raw data block without any particular meaning. In general that means that in order for a dApp to be useful, node owners need to explicitly install it. In our case we simply ship it with GoShimmer as a [plugin](../implementation_design/plugin.md).
### Define & Register The Chat Payload
First, we need to decide what data our chat payload should contain and define the byte layout accordingly.
-In our case we need a `From` field to identify the sender of the message (e.g., a nickname, the ID of the node); a `To` field to identify an optional recipient of the message (e.g., a chat room ID, a nickname); a `Message` field containing the actual chat message.
+In our case we need a `From` field to identify the sender of the block (e.g., a nickname, the ID of the node); a `To` field to identify an optional recipient of the block (e.g., a chat room ID, a nickname); a `Block` field containing the actual chat block.
Therefore, we can define the byte layout as follows:
```
length // every payload has to have this
type // every payload has to have this
From
To
-Message
+Block
```
Next, we need to fulfill the `Payload` interface and provide the functionality to read/write a payload from/to bytes. The [`hive.go/marshalutil`](https://github.com/iotaledger/hive.go/tree/master/marshalutil) package simplifies this step tremendously.
```Go
-// Payload represents the generic interface for a payload that can be embedded in Messages of the Tangle.
+// Payload represents the generic interface for a payload that can be embedded in Blocks of the Tangle.
type Payload interface {
// Type returns the Type of the Payload.
Type() Type
@@ -88,41 +88,41 @@ var Type = payload.NewType(payloadType, PayloadName, func(data []byte) (payload
### Create The Web API Endpoints
-In order to issue a message with our newly created chat payload, we need to create a web API endpoint. Here we simply bind a json request containing the necessary fields: `from`, `to` and `message` and then issue it into the Tangle with `messagelayer.Tangle().IssuePayload(chatPayload)`. This plugin takes care of all the specifics and employs the `MessageFactory` to, i.a., select tips and sign the message.
+In order to issue a block with our newly created chat payload, we need to create a web API endpoint. Here we simply bind a json request containing the necessary fields: `from`, `to` and `block` and then issue it into the Tangle with `blocklayer.Tangle().IssuePayload(chatPayload)`. This plugin takes care of all the specifics and employs the `BlockFactory` to, i.a., select tips and sign the block.
```Go
-webapi.Server().POST("chat", SendChatMessage)
+webapi.Server().POST("chat", SendChatBlock)
-// SendChatMessage sends a chat message.
-func SendChatMessage(c echo.Context) error {
+// SendChatBlock sends a chat block.
+func SendChatBlock(c echo.Context) error {
req := &Request{}
if err := c.Bind(req); err != nil {
return c.JSON(http.StatusBadRequest, jsonmodels.NewErrorResponse(err))
}
- chatPayload := NewPayload(req.From, req.To, req.Message)
+ chatPayload := NewPayload(req.From, req.To, req.Block)
- msg, err := messagelayer.Tangle().IssuePayload(chatPayload)
+ blk, err := blocklayer.Tangle().IssuePayload(chatPayload)
if err != nil {
return c.JSON(http.StatusBadRequest, Response{Error: err.Error()})
}
- return c.JSON(http.StatusOK, Response{MessageID: msg.ID().Base58()})
+ return c.JSON(http.StatusOK, Response{BlockID: blk.ID().Base58()})
}
```
### Listen for Chat Payloads
-Every dApp listens for messages from the *communication layer* and when its payload type is detected, takes appropriate action. For us that means listening for chat payload type and triggering an event if we encounter any. In this case the event will contain information about the chat message and also the `MessageID` in terms of a Tangle message as well as its issuance timestamp.
+Every dApp listens for blocks from the *communication layer* and when its payload type is detected, takes appropriate action. For us that means listening for chat payload type and triggering an event if we encounter any. In this case the event will contain information about the chat block and also the `BlockID` in terms of a Tangle block as well as its issuance timestamp.
```Go
-func onReceiveMessageFromMessageLayer(messageID tangle.MessageID) {
+func onReceiveBlockFromBlockLayer(blockID tangle.BlockID) {
var chatEvent *ChatEvent
- messagelayer.Tangle().Storage.Message(messageID).Consume(func(message *tangle.Message) {
- if message.Payload().Type() != Type {
+ blocklayer.Tangle().Storage.Block(blockID).Consume(func(block *tangle.Block) {
+ if block.Payload().Type() != Type {
return
}
- chatPayload, _, err := FromBytes(message.Payload().Bytes())
+ chatPayload, _, err := FromBytes(block.Payload().Bytes())
if err != nil {
app.LogError(err)
return
@@ -131,9 +131,9 @@ func onReceiveMessageFromMessageLayer(messageID tangle.MessageID) {
chatEvent = &ChatEvent{
From: chatPayload.From,
To: chatPayload.To,
- Message: chatPayload.Message,
- Timestamp: message.IssuingTime(),
- MessageID: message.ID().Base58(),
+ Block: chatPayload.Block,
+ Timestamp: block.IssuingTime(),
+ BlockID: block.ID().Base58(),
}
})
@@ -142,31 +142,31 @@ func onReceiveMessageFromMessageLayer(messageID tangle.MessageID) {
}
app.LogInfo(chatEvent)
- Events.MessageReceived.Trigger(chatEvent)
+ Events.BlockReceived.Trigger(chatEvent)
}
```
## Network Delay dApp
-In this guide we are going to explain how to write a very simple dApp based on an actual dApp we are using in GoShimmer to help us measure the network delay, i.e., how long it takes for every active node in the network to receive a message.
+In this guide we are going to explain how to write a very simple dApp based on an actual dApp we are using in GoShimmer to help us measure the network delay, i.e., how long it takes for every active node in the network to receive a block.
The complete source code of the application can be found [in the repository](https://github.com/iotaledger/goshimmer/tree/develop/plugins/networkdelay).
### Overview
-Our network delay dApp should help us to identify the time it takes for every active node to receive and process a message. That can be done in a few simple steps:
-1. A (known) node sends a special message containing a network delay payload.
-2. Upon receipt, every other node in the network answers to the special message by posting its current time to our remote logger.
+Our network delay dApp should help us to identify the time it takes for every active node to receive and process a block. That can be done in a few simple steps:
+1. A (known) node sends a special block containing a network delay payload.
+2. Upon receipt, every other node in the network answers to the special block by posting its current time to our remote logger.
3. For simplicity, we gather the information in an [ELK stack](https://www.elastic.co/what-is/elk-stack). This helps us to easily interpret and analyze the data.
-Within GoShimmer we need 3 components to realize this undertaking. First, we need to **define and register a network delay payload type**. Second, we need a way to **initiate a message** with a network delay payload via the web API. And lastly, we need to **listen** for network delay payloads and take appropriate action.
+Within GoShimmer we need 3 components to realize this undertaking. First, we need to **define and register a network delay payload type**. Second, we need a way to **initiate a block** with a network delay payload via the web API. And lastly, we need to **listen** for network delay payloads and take appropriate action.
-If a node does not have our dApp installed and activated, the message will be simply treated as a raw data message without any particular meaning. In general that means that in order for a dApp to be useful, node owners need to explicitly install it. In our case we simply ship it with GoShimmer as a [plugin](../implementation_design/plugin.md).
+If a node does not have our dApp installed and activated, the block will be simply treated as a raw data block without any particular meaning. In general that means that in order for a dApp to be useful, node owners need to explicitly install it. In our case we simply ship it with GoShimmer as a [plugin](../implementation_design/plugin.md).
### Define & Register The Network Delay Object
First, we need to decide what data our network delay payload should contain and define the byte layout accordingly.
-In our case we need an `ID` to identify a network delay message and the `sent time` of the initiator.
+In our case we need an `ID` to identify a network delay block and the `sent time` of the initiator.
Therefore, we can define the byte layout as follows:
```
length // every payload has to have this
@@ -177,7 +177,7 @@ sentTime
Next, we need to fulfill the `Payload` interface and provide the functionality to read/write a payload from/to bytes. The [`hive.go/marshalutil`](https://github.com/iotaledger/hive.go/tree/master/marshalutil) package simplifies this step tremendously.
```Go
-// Payload represents the generic interface for a payload that can be embedded in Messages of the Tangle.
+// Payload represents the generic interface for a payload that can be embedded in Blocks of the Tangle.
type Payload interface {
// Type returns the Type of the Payload.
Type() Type
@@ -208,7 +208,7 @@ var Type = payload.NewType(189, ObjectName, func(data []byte) (payload payload.P
### Create The Web API Endpoints
-In order to issue a message with our newly created network delay payload, we need to create a web API endpoint. Here we simply create a random `ID` and the `sentTime` and then issue a message with `issuer.IssuePayload()`. This plugin takes care of all the specifics and employs the `MessageFactory` to, i.a., select tips and sign the message.
+In order to issue a block with our newly created network delay payload, we need to create a web API endpoint. Here we simply create a random `ID` and the `sentTime` and then issue a block with `issuer.IssuePayload()`. This plugin takes care of all the specifics and employs the `BlockFactory` to, i.a., select tips and sign the block.
```Go
webapi.Server.POST("networkdelay", broadcastNetworkDelayObject)
@@ -221,34 +221,34 @@ func broadcastNetworkDelayObject(c echo.Context) error {
return c.JSON(http.StatusInternalServerError, Response{Error: err.Error()})
}
- msg, err := issuer.IssuePayload(NewObject(id, time.Now().UnixNano()))
+ blk, err := issuer.IssuePayload(NewObject(id, time.Now().UnixNano()))
if err != nil {
return c.JSON(http.StatusBadRequest, Response{Error: err.Error()})
}
- return c.JSON(http.StatusOK, Response{ID: msg.Id().String()})
+ return c.JSON(http.StatusOK, Response{ID: blk.Id().String()})
}
```
### Listen for Network Delay Payloads
-Every dApp listens for messages from the *communication layer* and when its data type is detected, takes appropriate action. For us that means listening for network delay payloads and sending messages to our remote logger if we encounter any. Of course in this context, we only want to react to network delay payloads which were issued by our analysis/entry node server. Therefore, matching the message signer's public key with a configured public key lets us only react to the appropriate network delay payloads.
+Every dApp listens for blocks from the *communication layer* and when its data type is detected, takes appropriate action. For us that means listening for network delay payloads and sending blocks to our remote logger if we encounter any. Of course in this context, we only want to react to network delay payloads which were issued by our analysis/entry node server. Therefore, matching the block signer's public key with a configured public key lets us only react to the appropriate network delay payloads.
```Go
-func onReceiveMessageFromMessageLayer(messageID tangle.MessageID) {
- messagelayer.Tangle().Storage.Message(messageID).Consume(func(solidMessage *tangle.Message) {
- messagePayload := solidMessage.Payload()
- if messagePayload.Type() != Type {
+func onReceiveBlockFromBlockLayer(blockID tangle.BlockID) {
+ blocklayer.Tangle().Storage.Block(blockID).Consume(func(solidBlock *tangle.Block) {
+ blockPayload := solidBlock.Payload()
+ if blockPayload.Type() != Type {
return
}
// check for node identity
- issuerPubKey := solidMessage.IssuerPublicKey()
+ issuerPubKey := solidBlock.IssuerPublicKey()
if issuerPubKey != originPublicKey || issuerPubKey == myPublicKey {
return
}
- networkDelayObject, ok := messagePayload.(*Object)
+ networkDelayObject, ok := blockPayload.(*Object)
if !ok {
app.LogInfo("could not cast payload to network delay payload")
return
@@ -256,10 +256,10 @@ func onReceiveMessageFromMessageLayer(messageID tangle.MessageID) {
now := clock.SyncedTime().UnixNano()
- // abort if message was sent more than 1min ago
+ // abort if block was sent more than 1min ago
// this should only happen due to a node resyncing
if time.Duration(now-networkDelayObject.sentTime) > time.Minute {
- app.LogDebugf("Received network delay message with >1min delay\n%s", networkDelayObject)
+ app.LogDebugf("Received network delay block with >1min delay\n%s", networkDelayObject)
return
}
diff --git a/documentation/docs/tutorials/obtain_tokens.md b/documentation/docs/tutorials/obtain_tokens.md
index 897beeba04..82bea3f3c3 100644
--- a/documentation/docs/tutorials/obtain_tokens.md
+++ b/documentation/docs/tutorials/obtain_tokens.md
@@ -13,13 +13,13 @@ keywords:
## The Faucet dApp
-The faucet is a dApp built on top of the [value and communication layer](../apis/communication.md)). It sends IOTA tokens to addresses by listening to faucet request messages. A faucet message is a Message containing a special payload with an address encoded in Base58, the aManaPledgeID, the cManaPledgeID and a nonce as a proof that some Proof Of Work has been computed. The PoW is just a way to rate limit and avoid abuse of the Faucet. The Faucet has an additional protection by means of granting request to a given address only once. That means that, in order to receive funds from the Faucet multuple times, the address must be different.
+The faucet is a dApp built on top of the [value and communication layer](../apis/communication.md)). It sends IOTA tokens to addresses by listening to faucet request blocks. A faucet block is a Block containing a special payload with an address encoded in Base58, the aManaPledgeID, the cManaPledgeID and a nonce as a proof that some Proof Of Work has been computed. The PoW is just a way to rate limit and avoid abuse of the Faucet. The Faucet has an additional protection by means of granting request to a given address only once. That means that, in order to receive funds from the Faucet multuple times, the address must be different.
-After sending a faucet request message, you can check your balances via [`GetAddressUnspentOutputs()`](../apis/ledgerstate.md).
+After sending a faucet request block, you can check your balances via [`GetAddressUnspentOutputs()`](../apis/ledgerstate.md).
## Obtain Tokens From the Faucet
-There are 3 ways to send a faucet request message to obtain IOTA tokens:
+There are 3 ways to send a faucet request block to obtain IOTA tokens:
1. Via the Go client library
2. Via the HTTP API directly
3. Via the wallet
@@ -34,7 +34,7 @@ Example:
// the proof of work difficulty,
// the optional aManaPledgeID (Base58 encoded),
// the optional cManaPledgeID (Base58 encoded)
-messageID, err := goshimAPI.SendFaucetRequest("JaMauTaTSVBNc13edCCvBK9fZxZ1KKW5fXegT1B7N9jY", 22, "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5", "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5")
+blockID, err := goshimAPI.SendFaucetRequest("JaMauTaTSVBNc13edCCvBK9fZxZ1KKW5fXegT1B7N9jY", 22, "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5", "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5")
---- or
@@ -46,7 +46,7 @@ addr := wallet.New(connector).ReceiveAddress()
// the proof of work difficulty,
// the optional aManaPledgeID (Base58 encoded),
// the optional cManaPledgeID (Base58 encoded)
-messageID, err := goshimAPI.SendFaucetRequest(addr.Base58(), 22, "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5", "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5")
+blockID, err := goshimAPI.SendFaucetRequest(addr.Base58(), 22, "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5", "2GtxMQD94KvDH1SJPJV7icxofkyV1njuUZKtsqKmtux5")
```
### Via the Wallet
diff --git a/documentation/docs/tutorials/send_transaction.md b/documentation/docs/tutorials/send_transaction.md
index 46d8ab5346..0c75664e6d 100644
--- a/documentation/docs/tutorials/send_transaction.md
+++ b/documentation/docs/tutorials/send_transaction.md
@@ -50,7 +50,7 @@ If we use a wallet, this information will be available along with the wallet bal
```Go
resp, _ := goshimAPI.PostAddressUnspentOutputs([]string{myAddr.Base58()}) // ignoring error
for _, output := range resp.UnspentOutputs[0].Outputs {
- fmt.Println("outputID:", output.Output.OutputID.Base58, "confirmed:", output.InclusionState.Confirmed)
+ fmt.Println("outputID:", output.Output.OutputID.Base58, "confirmed:", output.ConfirmationState.Confirmed)
}
```
@@ -160,7 +160,7 @@ tx := ledgerstate.NewTransaction(txEssence, ledgerstate.UnlockBlocks{unlockBlock
## Sending a Transaction
There are two web API methods that allows us to send the transaction:
-`PostTransaction()` and `IssuePayload()`. The second one is a more general method that sends the attached payload. We are going to use the first one that will additionally check the transaction validity before issuing and wait with sending the response until the message is booked.
+`PostTransaction()` and `IssuePayload()`. The second one is a more general method that sends the attached payload. We are going to use the first one that will additionally check the transaction validity before issuing and wait with sending the response until the block is booked.
The method accepts a byte array, so we need to call `Bytes()`.
If the transaction will be booked without any problems, we should be able to get the transaction ID from the API response.
diff --git a/documentation/docs/tutorials/setup.md b/documentation/docs/tutorials/setup.md
index 214881ad1f..e89bf38891 100644
--- a/documentation/docs/tutorials/setup.md
+++ b/documentation/docs/tutorials/setup.md
@@ -26,7 +26,7 @@ We want to emphasize that running a GoShimmer node requires proper knowledge in
Running a node in the GoShimmer testnet helps us in the following ways:
* It increases the amount of nodes in the network and thus lets it form a more realistic network.
-* Your node will be configured to send debug log messages to a centralized logger from which we can assess and debug research questions and occurring problems.
+* Your node will be configured to send debug log blocks to a centralized logger from which we can assess and debug research questions and occurring problems.
* Your node is configured to send metric data to a centralized analysis server where we store information such as resource consumption, traffic, and so on. This data helps us further fostering the development of GoShimmer and assessing network behavior.
* If you expose your HTTP API port, you provide an entrypoint for other people to interact with the network.
@@ -262,7 +262,7 @@ It is important that the ports are correctly mapped so that the node can gain in
:::warning INFO
-If the UDP NAT mapping is not configured correctly, GoShimmer will terminate with an error message stating to check the NAT configuration
+If the UDP NAT mapping is not configured correctly, GoShimmer will terminate with an error block stating to check the NAT configuration
:::
@@ -294,7 +294,7 @@ docker logs -f --since=1m goshimmer
When the node starts for the first time, it must synchronize its state with the rest of the network. GoShimmer currently uses the Tangle Time to help nodes determine their synced status.
#### Dashboard
-The dashboard of your GoShimmer node should be accessible via `http://:8081`. If your node is still synchronizing, you might see a higher inflow of MPS.
+The dashboard of your GoShimmer node should be accessible via `http://:8081`. If your node is still synchronizing, you might see a higher inflow of BPS.
[![GoShimmer Dashboard](/img/tutorials/setup/dashboard.png)](/img/tutorials/setup/dashboard.png)
@@ -310,15 +310,15 @@ GoShimmer also exposes an HTTP API. To check whether that works correctly, you c
"version": "v0.6.2",
"networkVersion": 30,
"tangleTime": {
- "messageID": "6ndfmfogpH9H8C9X9Fbb7Jmuf8RJHQgSjsHNPdKUUhoJ",
+ "blockID": "6ndfmfogpH9H8C9X9Fbb7Jmuf8RJHQgSjsHNPdKUUhoJ",
"time": 1621879864032595415,
"synced": true
},
"identityID": "D9SPFofAGhA5V9QRDngc1E8qG9bTrnATmpZMdoyRiBoW",
"identityIDShort": "XBgY5DsUPng",
"publicKey": "9DB3j9cWYSuEEtkvanrzqkzCQMdH1FGv3TawJdVbDxkd",
- "solidMessageCount": 74088,
- "totalMessageCount": 74088,
+ "solidBlockCount": 74088,
+ "totalBlockCount": 74088,
"enabledPlugins": [
...
],
diff --git a/documentation/package.json b/documentation/package.json
index 5f1c10a301..50a49c0d53 100644
--- a/documentation/package.json
+++ b/documentation/package.json
@@ -11,7 +11,7 @@
"node": ">=14.14.0"
},
"devDependencies": {
- "iota-wiki-cli": "iota-community/iota-wiki-cli#v2"
+ "@iota-community/iota-wiki-cli": "iota-community/iota-wiki-cli#v2"
},
"packageManager": "yarn@3.2.0"
}
diff --git a/documentation/static/img/protocol_specification/Protocol_overview_received_message.png b/documentation/static/img/protocol_specification/Protocol_overview_received_block.png
similarity index 100%
rename from documentation/static/img/protocol_specification/Protocol_overview_received_message.png
rename to documentation/static/img/protocol_specification/Protocol_overview_received_block.png
diff --git a/documentation/static/img/protocol_specification/branches.png b/documentation/static/img/protocol_specification/conflicts.png
similarity index 100%
rename from documentation/static/img/protocol_specification/branches.png
rename to documentation/static/img/protocol_specification/conflicts.png
diff --git a/documentation/static/img/protocol_specification/like-switch-message-booking.png b/documentation/static/img/protocol_specification/like-switch-block-booking.png
similarity index 100%
rename from documentation/static/img/protocol_specification/like-switch-message-booking.png
rename to documentation/static/img/protocol_specification/like-switch-block-booking.png
diff --git a/documentation/static/img/protocol_specification/like-switch-message-creation-1.png b/documentation/static/img/protocol_specification/like-switch-block-creation-1.png
similarity index 100%
rename from documentation/static/img/protocol_specification/like-switch-message-creation-1.png
rename to documentation/static/img/protocol_specification/like-switch-block-creation-1.png
diff --git a/documentation/static/img/protocol_specification/like-switch-message-creation-2.png b/documentation/static/img/protocol_specification/like-switch-block-creation-2.png
similarity index 100%
rename from documentation/static/img/protocol_specification/like-switch-message-creation-2.png
rename to documentation/static/img/protocol_specification/like-switch-block-creation-2.png
diff --git a/documentation/static/img/tooling/sync-with-branch.png b/documentation/static/img/tooling/sync-with-conflict.png
similarity index 100%
rename from documentation/static/img/tooling/sync-with-branch.png
rename to documentation/static/img/tooling/sync-with-conflict.png
diff --git a/documentation/yarn.lock b/documentation/yarn.lock
index 2b112d7395..ae1677b677 100644
--- a/documentation/yarn.lock
+++ b/documentation/yarn.lock
@@ -15,19 +15,19 @@ __metadata:
languageName: node
linkType: hard
-"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.8.3":
- version: 7.16.7
- resolution: "@babel/code-frame@npm:7.16.7"
+"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.8.3":
+ version: 7.18.6
+ resolution: "@babel/code-frame@npm:7.18.6"
dependencies:
- "@babel/highlight": ^7.16.7
- checksum: db2f7faa31bc2c9cf63197b481b30ea57147a5fc1a6fab60e5d6c02cdfbf6de8e17b5121f99917b3dabb5eeb572da078312e70697415940383efc140d4e0808b
+ "@babel/highlight": ^7.18.6
+ checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.17.0, @babel/compat-data@npm:^7.17.10":
- version: 7.17.10
- resolution: "@babel/compat-data@npm:7.17.10"
- checksum: e85051087cd4690de5061909a2dd2d7f8b6434a3c2e30be6c119758db2027ae1845bcd75a81127423dd568b706ac6994a1a3d7d701069a23bf5cfe900728290b
+"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.18.6":
+ version: 7.18.8
+ resolution: "@babel/compat-data@npm:7.18.8"
+ checksum: 3096aafad74936477ebdd039bcf342fba84eb3100e608f3360850fb63e1efa1c66037c4824f814d62f439ab47d25164439343a6e92e9b4357024fdf571505eb9
languageName: node
linkType: hard
@@ -55,99 +55,99 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.15.5, @babel/core@npm:^7.17.10":
- version: 7.17.10
- resolution: "@babel/core@npm:7.17.10"
+"@babel/core@npm:^7.15.5, @babel/core@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/core@npm:7.18.6"
dependencies:
"@ampproject/remapping": ^2.1.0
- "@babel/code-frame": ^7.16.7
- "@babel/generator": ^7.17.10
- "@babel/helper-compilation-targets": ^7.17.10
- "@babel/helper-module-transforms": ^7.17.7
- "@babel/helpers": ^7.17.9
- "@babel/parser": ^7.17.10
- "@babel/template": ^7.16.7
- "@babel/traverse": ^7.17.10
- "@babel/types": ^7.17.10
+ "@babel/code-frame": ^7.18.6
+ "@babel/generator": ^7.18.6
+ "@babel/helper-compilation-targets": ^7.18.6
+ "@babel/helper-module-transforms": ^7.18.6
+ "@babel/helpers": ^7.18.6
+ "@babel/parser": ^7.18.6
+ "@babel/template": ^7.18.6
+ "@babel/traverse": ^7.18.6
+ "@babel/types": ^7.18.6
convert-source-map: ^1.7.0
debug: ^4.1.0
gensync: ^1.0.0-beta.2
json5: ^2.2.1
semver: ^6.3.0
- checksum: 2545fb24b4090c1e9ead0daad4713ae6fe779df0843e6e286509146f4dd09958bd067d80995f2cc09fdb01fd0dc936f42cdd6f70b3d058de48e124cd9a3cc93e
+ checksum: 711459ebf7afab7b8eff88b7155c3f4a62690545f1c8c2eb6ba5ebaed01abeecb984cf9657847a2151ad24a5645efce765832aa343ce0f0386f311b67b59589a
languageName: node
linkType: hard
-"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.17.10, @babel/generator@npm:^7.17.9":
- version: 7.17.10
- resolution: "@babel/generator@npm:7.17.10"
+"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.17.9, @babel/generator@npm:^7.18.6, @babel/generator@npm:^7.18.7":
+ version: 7.18.7
+ resolution: "@babel/generator@npm:7.18.7"
dependencies:
- "@babel/types": ^7.17.10
- "@jridgewell/gen-mapping": ^0.1.0
+ "@babel/types": ^7.18.7
+ "@jridgewell/gen-mapping": ^0.3.2
jsesc: ^2.5.1
- checksum: 9ec596a6ffec7bec239133a4ba79d4f834e6c894019accb1c70a7a5affbec9d0912d3baef200edd9d48e553d4ef72abcbffbc73cfb7d75f327c24186e887f79c
+ checksum: aad4b6873130165e9483af2888bce5a3a5ad9cca0757fc90ae11a0396757d0b295a3bff49282c8df8ab01b31972cc855ae88fd9ddc9ab00d9427dc0e01caeea9
languageName: node
linkType: hard
-"@babel/helper-annotate-as-pure@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-annotate-as-pure@npm:7.16.7"
+"@babel/helper-annotate-as-pure@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-annotate-as-pure@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.7
- checksum: d235be963fed5d48a8a4cfabc41c3f03fad6a947810dbcab9cebed7f819811457e10d99b4b2e942ad71baa7ee8e3cd3f5f38a4e4685639ddfddb7528d9a07179
+ "@babel/types": ^7.18.6
+ checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b
languageName: node
linkType: hard
-"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.16.7"
+"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.6"
dependencies:
- "@babel/helper-explode-assignable-expression": ^7.16.7
- "@babel/types": ^7.16.7
- checksum: 1784f19a57ecfafca8e5c2e0f3eac53451cb13a857cbe0ca0cd9670922228d099ef8c3dd8cd318e2d7bce316fdb2ece3e527c30f3ecd83706e37ab6beb0c60eb
+ "@babel/helper-explode-assignable-expression": ^7.18.6
+ "@babel/types": ^7.18.6
+ checksum: c4d71356e0adbc20ce9fe7c1e1181ff65a78603f8bba7615745f0417fed86bad7dc0a54a840bc83667c66709b3cb3721edcb9be0d393a298ce4e9eb6d085f3c1
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.16.7, @babel/helper-compilation-targets@npm:^7.17.10":
- version: 7.17.10
- resolution: "@babel/helper-compilation-targets@npm:7.17.10"
+"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-compilation-targets@npm:7.18.6"
dependencies:
- "@babel/compat-data": ^7.17.10
- "@babel/helper-validator-option": ^7.16.7
+ "@babel/compat-data": ^7.18.6
+ "@babel/helper-validator-option": ^7.18.6
browserslist: ^4.20.2
semver: ^6.3.0
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 5f547c7ebd372e90fa72c2aaea867e7193166e9f469dec5acde4f0e18a78b80bdca8e02a0f641f3e998be984fb5b802c729a9034faaee8b1a9ef6670cb76f120
+ checksum: f09ddaddc83c241cb7a040025e2ba558daa1c950ce878604d91230aed8d8a90f10dfd5bb0b67bc5b3db8af1576a0d0dac1d65959a06a17259243dbb5730d0ed1
languageName: node
linkType: hard
-"@babel/helper-create-class-features-plugin@npm:^7.16.10, @babel/helper-create-class-features-plugin@npm:^7.16.7, @babel/helper-create-class-features-plugin@npm:^7.17.6":
- version: 7.17.9
- resolution: "@babel/helper-create-class-features-plugin@npm:7.17.9"
+"@babel/helper-create-class-features-plugin@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-create-class-features-plugin@npm:7.18.6"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- "@babel/helper-environment-visitor": ^7.16.7
- "@babel/helper-function-name": ^7.17.9
- "@babel/helper-member-expression-to-functions": ^7.17.7
- "@babel/helper-optimise-call-expression": ^7.16.7
- "@babel/helper-replace-supers": ^7.16.7
- "@babel/helper-split-export-declaration": ^7.16.7
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-function-name": ^7.18.6
+ "@babel/helper-member-expression-to-functions": ^7.18.6
+ "@babel/helper-optimise-call-expression": ^7.18.6
+ "@babel/helper-replace-supers": ^7.18.6
+ "@babel/helper-split-export-declaration": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0
- checksum: db7be8852096084883dbbd096f925976695e5b34919a888fded9fd359d75d9994960e459f4eeb51ff6700109f83be6c1359e57809deb3fe36fc589b2a208b6d7
+ checksum: 4d6da441ce329867338825c044c143f0b273cbfc6a20b9099e824a46f916584f44eabab073f78f02047d86719913e8f1a8bd72f42099ebe52691c29fabb992e4
languageName: node
linkType: hard
-"@babel/helper-create-regexp-features-plugin@npm:^7.16.7, @babel/helper-create-regexp-features-plugin@npm:^7.17.0":
- version: 7.17.0
- resolution: "@babel/helper-create-regexp-features-plugin@npm:7.17.0"
+"@babel/helper-create-regexp-features-plugin@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-create-regexp-features-plugin@npm:7.18.6"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- regexpu-core: ^5.0.1
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ regexpu-core: ^5.1.0
peerDependencies:
"@babel/core": ^7.0.0
- checksum: eb66d9241544c705e9ce96d2d122b595ef52d926e6e031653e09af8a01050bd9d7e7fee168bf33a863342774d7d6a8cc7e8e9e5a45b955e9c01121c7a2d51708
+ checksum: 2d76e660cbfd0bfcb01ca9f177f0e9091c871a6b99f68ece6bcf4ab4a9df073485bdc2d87ecdfbde44b7f3723b26d13085d0f92082adb3ae80d31b246099f10a
languageName: node
linkType: hard
@@ -169,83 +169,81 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-environment-visitor@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-environment-visitor@npm:7.16.7"
- dependencies:
- "@babel/types": ^7.16.7
- checksum: c03a10105d9ebd1fe632a77356b2e6e2f3c44edba9a93b0dc3591b6a66bd7a2e323dd9502f9ce96fc6401234abff1907aa877b6674f7826b61c953f7c8204bbe
+"@babel/helper-environment-visitor@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-environment-visitor@npm:7.18.6"
+ checksum: 64fce65a26efb50d2496061ab2de669dc4c42175a8e05c82279497127e5c542538ed22b38194f6f5a4e86bed6ef5a4890aed23408480db0555728b4ca660fc9c
languageName: node
linkType: hard
-"@babel/helper-explode-assignable-expression@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-explode-assignable-expression@npm:7.16.7"
+"@babel/helper-explode-assignable-expression@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.7
- checksum: ea2135ba36da6a2be059ebc8f10fbbb291eb0e312da54c55c6f50f9cbd8601e2406ec497c5e985f7c07a97f31b3bef9b2be8df53f1d53b974043eaf74fe54bbc
+ "@babel/types": ^7.18.6
+ checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f
languageName: node
linkType: hard
-"@babel/helper-function-name@npm:^7.16.7, @babel/helper-function-name@npm:^7.17.9":
- version: 7.17.9
- resolution: "@babel/helper-function-name@npm:7.17.9"
+"@babel/helper-function-name@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-function-name@npm:7.18.6"
dependencies:
- "@babel/template": ^7.16.7
- "@babel/types": ^7.17.0
- checksum: a59b2e5af56d8f43b9b0019939a43774754beb7cb01a211809ca8031c71890999d07739e955343135ec566c4d8ff725435f1f60fb0af3bb546837c1f9f84f496
+ "@babel/template": ^7.18.6
+ "@babel/types": ^7.18.6
+ checksum: bf84c2e0699aa07c3559d4262d199d4a9d0320037c2932efe3246866c3e01ce042c9c2131b5db32ba2409a9af01fb468171052819af759babc8ca93bdc6c9aeb
languageName: node
linkType: hard
-"@babel/helper-hoist-variables@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-hoist-variables@npm:7.16.7"
+"@babel/helper-hoist-variables@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-hoist-variables@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.7
- checksum: 6ae1641f4a751cd9045346e3f61c3d9ec1312fd779ab6d6fecfe2a96e59a481ad5d7e40d2a840894c13b3fd6114345b157f9e3062fc5f1580f284636e722de60
+ "@babel/types": ^7.18.6
+ checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f
languageName: node
linkType: hard
-"@babel/helper-member-expression-to-functions@npm:^7.16.7, @babel/helper-member-expression-to-functions@npm:^7.17.7":
- version: 7.17.7
- resolution: "@babel/helper-member-expression-to-functions@npm:7.17.7"
+"@babel/helper-member-expression-to-functions@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-member-expression-to-functions@npm:7.18.6"
dependencies:
- "@babel/types": ^7.17.0
- checksum: 70f361bab627396c714c3938e94a569cb0da522179328477cdbc4318e4003c2666387ad4931d6bd5de103338c667c9e4bbe3e917fc8c527b3f3eb6175b888b7d
+ "@babel/types": ^7.18.6
+ checksum: 20c8e82d2375534dfe4d4adeb01d94906e5e616143bb2775e9f1d858039d87a0f79220e0a5c2ed410c54ccdeda47a4c09609b396db1f98fe8ce9e420894ac2f3
languageName: node
linkType: hard
-"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-module-imports@npm:7.16.7"
+"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-module-imports@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.7
- checksum: ddd2c4a600a2e9a4fee192ab92bf35a627c5461dbab4af31b903d9ba4d6b6e59e0ff3499fde4e2e9a0eebe24906f00b636f8b4d9bd72ff24d50e6618215c3212
+ "@babel/types": ^7.18.6
+ checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def
languageName: node
linkType: hard
-"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.16.7, @babel/helper-module-transforms@npm:^7.17.7":
- version: 7.17.7
- resolution: "@babel/helper-module-transforms@npm:7.17.7"
+"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.18.6":
+ version: 7.18.8
+ resolution: "@babel/helper-module-transforms@npm:7.18.8"
dependencies:
- "@babel/helper-environment-visitor": ^7.16.7
- "@babel/helper-module-imports": ^7.16.7
- "@babel/helper-simple-access": ^7.17.7
- "@babel/helper-split-export-declaration": ^7.16.7
- "@babel/helper-validator-identifier": ^7.16.7
- "@babel/template": ^7.16.7
- "@babel/traverse": ^7.17.3
- "@babel/types": ^7.17.0
- checksum: 0b8f023aa7ff82dc4864349d54c4557865ad8ba54d78f6d78a86b05ca40f65c2d60acb4a54c5c309e7a4356beb9a89b876e54af4b3c4801ad25f62ec3721f0ae
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-module-imports": ^7.18.6
+ "@babel/helper-simple-access": ^7.18.6
+ "@babel/helper-split-export-declaration": ^7.18.6
+ "@babel/helper-validator-identifier": ^7.18.6
+ "@babel/template": ^7.18.6
+ "@babel/traverse": ^7.18.8
+ "@babel/types": ^7.18.8
+ checksum: 6aaf436d14495050987b9e0b30259ca58b02cc2466edd0c5d6883d92867e2cc2a311afe5815d5e10ef2511af1fb200de0e593f797b25a6d9a2bb49722bc16d95
languageName: node
linkType: hard
-"@babel/helper-optimise-call-expression@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-optimise-call-expression@npm:7.16.7"
+"@babel/helper-optimise-call-expression@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-optimise-call-expression@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.7
- checksum: 925feb877d5a30a71db56e2be498b3abbd513831311c0188850896c4c1ada865eea795dce5251a1539b0f883ef82493f057f84286dd01abccc4736acfafe15ea
+ "@babel/types": ^7.18.6
+ checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd
languageName: node
linkType: hard
@@ -256,252 +254,256 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
- version: 7.16.7
- resolution: "@babel/helper-plugin-utils@npm:7.16.7"
- checksum: d08dd86554a186c2538547cd537552e4029f704994a9201d41d82015c10ed7f58f9036e8d1527c3760f042409163269d308b0b3706589039c5f1884619c6d4ce
+"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
+ version: 7.18.6
+ resolution: "@babel/helper-plugin-utils@npm:7.18.6"
+ checksum: 3dbfceb6c10fdf6c78a0e57f24e991ff8967b8a0bd45fe0314fb4a8ccf7c8ad4c3778c319a32286e7b1f63d507173df56b4e69fb31b71e1b447a73efa1ca723e
languageName: node
linkType: hard
-"@babel/helper-remap-async-to-generator@npm:^7.16.8":
- version: 7.16.8
- resolution: "@babel/helper-remap-async-to-generator@npm:7.16.8"
+"@babel/helper-remap-async-to-generator@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-remap-async-to-generator@npm:7.18.6"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- "@babel/helper-wrap-function": ^7.16.8
- "@babel/types": ^7.16.8
- checksum: 29282ee36872130085ca111539725abbf20210c2a1d674bee77f338a57c093c3154108d03a275f602e471f583bd2c7ae10d05534f87cbc22b95524fe2b569488
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-wrap-function": ^7.18.6
+ "@babel/types": ^7.18.6
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ checksum: 83e890624da9413c74a8084f6b5f7bfe93abad8a6e1a33464f3086e2a1336751672e6ac6d74dddd35b641d19584cc0f93d02c52a4f33385b3be5b40942fe30da
languageName: node
linkType: hard
-"@babel/helper-replace-supers@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-replace-supers@npm:7.16.7"
+"@babel/helper-replace-supers@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-replace-supers@npm:7.18.6"
dependencies:
- "@babel/helper-environment-visitor": ^7.16.7
- "@babel/helper-member-expression-to-functions": ^7.16.7
- "@babel/helper-optimise-call-expression": ^7.16.7
- "@babel/traverse": ^7.16.7
- "@babel/types": ^7.16.7
- checksum: e5c0b6eb3dad8410a6255f93b580dde9b3c1564646c6ef751de59d5b2a65b5caa80cc9e568155f04bbae895ad0f54305c2e833dbd971a4f641f970c90b3d892b
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-member-expression-to-functions": ^7.18.6
+ "@babel/helper-optimise-call-expression": ^7.18.6
+ "@babel/traverse": ^7.18.6
+ "@babel/types": ^7.18.6
+ checksum: 48e869dc8d3569136d239cd6354687e49c3225b114cb2141ed3a5f31cff5278f463eb25913df3345489061f377ad5d6e49778bddedd098fa8ee3adcec07cc1d3
languageName: node
linkType: hard
-"@babel/helper-simple-access@npm:^7.17.7":
- version: 7.17.7
- resolution: "@babel/helper-simple-access@npm:7.17.7"
+"@babel/helper-simple-access@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-simple-access@npm:7.18.6"
dependencies:
- "@babel/types": ^7.17.0
- checksum: 58a9bfd054720024f6ff47fbb113c96061dc2bd31a5e5285756bd3c2e83918c6926900e00150d0fb175d899494fe7d69bf2a8b278c32ef6f6bea8d032e6a3831
+ "@babel/types": ^7.18.6
+ checksum: 37cd36eef199e0517845763c1e6ff6ea5e7876d6d707a6f59c9267c547a50aa0e84260ba9285d49acfaf2cfa0a74a772d92967f32ac1024c961517d40b6c16a5
languageName: node
linkType: hard
-"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0":
- version: 7.16.0
- resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0"
+"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.0
- checksum: b9ed2896eb253e6a85f472b0d4098ed80403758ad1a4e34b02b11e8276e3083297526758b1a3e6886e292987266f10622d7dbced3508cc22b296a74903b41cfb
+ "@babel/types": ^7.18.6
+ checksum: 069750f9690b2995617c42be4b7848a4490cd30f1edc72401d9d2ae362bc186d395b7d8c1e171c1b6c09751642ab1bba578cccf8c0dfc82b4541f8627965aea7
languageName: node
linkType: hard
-"@babel/helper-split-export-declaration@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-split-export-declaration@npm:7.16.7"
+"@babel/helper-split-export-declaration@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-split-export-declaration@npm:7.18.6"
dependencies:
- "@babel/types": ^7.16.7
- checksum: e10aaf135465c55114627951b79115f24bc7af72ecbb58d541d66daf1edaee5dde7cae3ec8c3639afaf74526c03ae3ce723444e3b5b3dc77140c456cd84bcaa1
+ "@babel/types": ^7.18.6
+ checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b
languageName: node
linkType: hard
-"@babel/helper-validator-identifier@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-validator-identifier@npm:7.16.7"
- checksum: dbb3db9d184343152520a209b5684f5e0ed416109cde82b428ca9c759c29b10c7450657785a8b5c5256aa74acc6da491c1f0cf6b784939f7931ef82982051b69
+"@babel/helper-validator-identifier@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-validator-identifier@npm:7.18.6"
+ checksum: e295254d616bbe26e48c196a198476ab4d42a73b90478c9842536cf910ead887f5af6b5c4df544d3052a25ccb3614866fa808dc1e3a5a4291acd444e243c0648
languageName: node
linkType: hard
-"@babel/helper-validator-option@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/helper-validator-option@npm:7.16.7"
- checksum: c5ccc451911883cc9f12125d47be69434f28094475c1b9d2ada7c3452e6ac98a1ee8ddd364ca9e3f9855fcdee96cdeafa32543ebd9d17fee7a1062c202e80570
+"@babel/helper-validator-option@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-validator-option@npm:7.18.6"
+ checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf
languageName: node
linkType: hard
-"@babel/helper-wrap-function@npm:^7.16.8":
- version: 7.16.8
- resolution: "@babel/helper-wrap-function@npm:7.16.8"
+"@babel/helper-wrap-function@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helper-wrap-function@npm:7.18.6"
dependencies:
- "@babel/helper-function-name": ^7.16.7
- "@babel/template": ^7.16.7
- "@babel/traverse": ^7.16.8
- "@babel/types": ^7.16.8
- checksum: d8aae4bacaf138d47dca1421ba82b41eac954cbb0ad17ab1c782825c6f2afe20076fbed926ab265967758336de5112d193a363128cd1c6967c66e0151174f797
+ "@babel/helper-function-name": ^7.18.6
+ "@babel/template": ^7.18.6
+ "@babel/traverse": ^7.18.6
+ "@babel/types": ^7.18.6
+ checksum: b7a4f59b302ed77407e5c2005d8677ebdeabbfa69230e15f80b5e06cc532369c1e48399ec3e67dd3341e7ab9b3f84f17a255e2c1ec4e0d42bb571a4dac5472d6
languageName: node
linkType: hard
-"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.17.9":
- version: 7.17.9
- resolution: "@babel/helpers@npm:7.17.9"
+"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/helpers@npm:7.18.6"
dependencies:
- "@babel/template": ^7.16.7
- "@babel/traverse": ^7.17.9
- "@babel/types": ^7.17.0
- checksum: 3c6db861e4c82fff2de3efb4ad12e32658c50c29920597cd0979390659b202e5849acd9542e0e2453167a52ccc30156ee4455d64d0e330f020d991d7551566f8
+ "@babel/template": ^7.18.6
+ "@babel/traverse": ^7.18.6
+ "@babel/types": ^7.18.6
+ checksum: 5dea4fa53776703ae4190cacd3f81464e6e00cf0b6908ea9b0af2b3d9992153f3746dd8c33d22ec198f77a8eaf13a273d83cd8847f7aef983801e7bfafa856ec
languageName: node
linkType: hard
-"@babel/highlight@npm:^7.16.7":
- version: 7.17.9
- resolution: "@babel/highlight@npm:7.17.9"
+"@babel/highlight@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/highlight@npm:7.18.6"
dependencies:
- "@babel/helper-validator-identifier": ^7.16.7
+ "@babel/helper-validator-identifier": ^7.18.6
chalk: ^2.0.0
js-tokens: ^4.0.0
- checksum: 7bdf10228f2e4d18f48f114411ed584380d356e7c168d7582c14abd8df9909b2fc09e0a7cd334f47c3eb0bc17e639e0c8d9688c6afd5d09a2bdbf0ac193b11fd
+ checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789
languageName: node
linkType: hard
-"@babel/parser@npm:^7.12.7, @babel/parser@npm:^7.16.7, @babel/parser@npm:^7.17.10, @babel/parser@npm:^7.17.9":
- version: 7.17.10
- resolution: "@babel/parser@npm:7.17.10"
+"@babel/parser@npm:^7.12.7, @babel/parser@npm:^7.17.9, @babel/parser@npm:^7.18.6, @babel/parser@npm:^7.18.8":
+ version: 7.18.8
+ resolution: "@babel/parser@npm:7.18.8"
bin:
parser: ./bin/babel-parser.js
- checksum: a9493d9fb8625e0904a178703866c8ee4d3a6003f0954b08df9f772b54dae109c69376812b74732e0c3e1a7f1d5b30915577a1db12e5e16b0abee083539df574
+ checksum: b8426083f753a000bdb4929cb18c6ce5b68c23759245bf123515bf86cacb9f6e7ff61341a6e0d01a779a9a8a826c86062a0f4db424b88b5b51f67e121985d400
languageName: node
linkType: hard
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.16.7"
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0
- checksum: bbb0f82a4cf297bdbb9110eea570addd4b883fd1b61535558d849822b087aa340fe4e9c31f8a39b087595c8310b58d0f5548d6be0b72c410abefb23a5734b7bc
+ checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d
languageName: node
linkType: hard
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.16.7"
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0
- "@babel/plugin-proposal-optional-chaining": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6
+ "@babel/plugin-proposal-optional-chaining": ^7.18.6
peerDependencies:
"@babel/core": ^7.13.0
- checksum: 81b372651a7d886a06596b02df7fb65ea90265a8bd60c9f0d5c1777590a598e6cccbdc3239033ee0719abf904813e69577eeb0ed5960b40e07978df023b17a6a
+ checksum: 0f0057cd12e98e297fd952c9cfdbffe5e34813f1b302e941fc212ca2a7b183ec2a227a1c49e104bbda528a4da6be03dbfb6e0d275d9572fb16b6ac5cda09fcd7
languageName: node
linkType: hard
-"@babel/plugin-proposal-async-generator-functions@npm:^7.16.8":
- version: 7.16.8
- resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.16.8"
+"@babel/plugin-proposal-async-generator-functions@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-remap-async-to-generator": ^7.16.8
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-remap-async-to-generator": ^7.18.6
"@babel/plugin-syntax-async-generators": ^7.8.4
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: abd2c2c67de262720d37c5509dafe2ce64d6cee2dc9a8e863bbba1796b77387214442f37618373c6a4521ca624bfc7dcdbeb1376300d16f2a474405ee0ca2e69
+ checksum: 3f708808ba6f8a9bd18805b1b22ab90ec0b362d949111a776e0bade5391f143f55479dcc444b2cec25fc89ac21035ee92e9a5ec37c02c610639197a0c2f7dcb0
languageName: node
linkType: hard
-"@babel/plugin-proposal-class-properties@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-class-properties@npm:7.16.7"
+"@babel/plugin-proposal-class-properties@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6"
dependencies:
- "@babel/helper-create-class-features-plugin": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-create-class-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 3977e841e17b45b47be749b9a5b67b9e8b25ff0840f9fdad3f00cbcb35db4f5ff15f074939fe19b01207a29688c432cc2c682351959350834d62920b7881f803
+ checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422
languageName: node
linkType: hard
-"@babel/plugin-proposal-class-static-block@npm:^7.17.6":
- version: 7.17.6
- resolution: "@babel/plugin-proposal-class-static-block@npm:7.17.6"
+"@babel/plugin-proposal-class-static-block@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-class-static-block@npm:7.18.6"
dependencies:
- "@babel/helper-create-class-features-plugin": ^7.17.6
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-create-class-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-class-static-block": ^7.14.5
peerDependencies:
"@babel/core": ^7.12.0
- checksum: 0ef00d73b4a7667059f71614669fb5ec989a0a6d5fe58118310c892507f2556a6f3ae66f0c547cd06e50bdf3ff528ef486e611079d41ef321300c967d2c26e1d
+ checksum: b8d7ae99ed5ad784f39e7820e3ac03841f91d6ed60ab4a98c61d6112253da36013e12807bae4ffed0ef3cb318e47debac112ed614e03b403fb8b075b09a828ee
languageName: node
linkType: hard
-"@babel/plugin-proposal-dynamic-import@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.7"
+"@babel/plugin-proposal-dynamic-import@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-dynamic-import": ^7.8.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 5992012484fb8bda1451369350e475091954ed414dd9ef8654a3c4daa2db0205d4f29c94f5d3dedfbc5a434996375c8304586904337d6af938ac0f27a0033e23
+ checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f
languageName: node
linkType: hard
-"@babel/plugin-proposal-export-namespace-from@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.7"
+"@babel/plugin-proposal-export-namespace-from@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-export-namespace-from": ^7.8.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 5016079a5305c1c130fea587b42cdce501574739cfefa5b63469dbc1f32d436df0ff42fabf04089fe8b6a00f4ea7563869e944744b457e186c677995983cb166
+ checksum: 3227307e1155e8434825c02fb2e4e91e590aeb629ce6ce23e4fe869d0018a144c4674bf98863e1bb6d4e4a6f831e686ae43f46a87894e4286e31e6492a5571eb
languageName: node
linkType: hard
-"@babel/plugin-proposal-json-strings@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-json-strings@npm:7.16.7"
+"@babel/plugin-proposal-json-strings@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-json-strings": ^7.8.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: ea6487918f8d88322ac2a4e5273be6163b0d84a34330c31cee346e23525299de3b4f753bc987951300a79f55b8f4b1971b24d04c0cdfcb7ceb4d636975c215e8
+ checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3
languageName: node
linkType: hard
-"@babel/plugin-proposal-logical-assignment-operators@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.7"
+"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-logical-assignment-operators": ^7.10.4
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: c4cf18e10f900d40eaa471c4adce4805e67bd845f997a4b9d5653eced4e653187b9950843b2bf7eab6c0c3e753aba222b1d38888e3e14e013f87295c5b014f19
+ checksum: 4fe0a0d6739da6b1929f5015846e1de3b72d7dd07c665975ca795850ad7d048f8a0756c057a4cd1d71080384ad6283c30fcc239393da6848eabc38e38d3206c5
languageName: node
linkType: hard
-"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.7"
+"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: bfafc2701697b5c763dbbb65dd97b56979bfb0922e35be27733699a837aeff22316313ddfdd0fb45129efa3f86617219b77110d05338bc4dca4385d8ce83dd19
+ checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d
languageName: node
linkType: hard
-"@babel/plugin-proposal-numeric-separator@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.7"
+"@babel/plugin-proposal-numeric-separator@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-numeric-separator": ^7.10.4
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 8e2fb0b32845908c67f80bc637a0968e28a66727d7ffb22b9c801dc355d88e865dc24aec586b00c922c23833ae5d26301b443b53609ea73d8344733cd48a1eca
+ checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec
languageName: node
linkType: hard
@@ -518,81 +520,81 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-proposal-object-rest-spread@npm:^7.17.3":
- version: 7.17.3
- resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.17.3"
+"@babel/plugin-proposal-object-rest-spread@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.6"
dependencies:
- "@babel/compat-data": ^7.17.0
- "@babel/helper-compilation-targets": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/compat-data": ^7.18.6
+ "@babel/helper-compilation-targets": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-object-rest-spread": ^7.8.3
- "@babel/plugin-transform-parameters": ^7.16.7
+ "@babel/plugin-transform-parameters": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 02810f158db4aaf6883131621b5d2c7d901ea3c034df2c2b78663f8b26813795d78a346c37e56770a720c54773732fd1d7fe40947dbf11d1d8de0e9a38e856d3
+ checksum: 9b7516bad285a8706beb5e619cf505364bfbe79e219ae86d2139b32010d238d146301c1424488926a57f6d729556e21cfccab29f28c26ecd0dda05e53d7160b1
languageName: node
linkType: hard
-"@babel/plugin-proposal-optional-catch-binding@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.16.7"
+"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-optional-catch-binding": ^7.8.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 4a422bb19a23cf80a245c60bea7adbe5dac8ff3bc1a62f05d7155e1eb68d401b13339c94dfd1f3d272972feeb45746f30d52ca0f8d5c63edf6891340878403df
+ checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e
languageName: node
linkType: hard
-"@babel/plugin-proposal-optional-chaining@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.7"
+"@babel/plugin-proposal-optional-chaining@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6
"@babel/plugin-syntax-optional-chaining": ^7.8.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: e4a6c1ac7e6817b92a673ea52ab0b7dc1fb39d29fb0820cd414e10ae2cd132bd186b4238dcca881a29fc38fe9d38ed24fc111ba22ca20086481682d343f4f130
+ checksum: 9c3bf80cfb41ee53a2a5d0f316ef5d125bb0d400ede1ee1a68a9b7dfc998036cca20c3901cb5c9e24fdd9f08c0056030e042f4637bc9bbc36b682384b38e2d96
languageName: node
linkType: hard
-"@babel/plugin-proposal-private-methods@npm:^7.16.11":
- version: 7.16.11
- resolution: "@babel/plugin-proposal-private-methods@npm:7.16.11"
+"@babel/plugin-proposal-private-methods@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6"
dependencies:
- "@babel/helper-create-class-features-plugin": ^7.16.10
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-create-class-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b333e5aa91c265bb394a57b5f4ae1a34fc8ee73a8d75506b12df258d8b5342107cbd9261f95e606bd3264a5b023db77f1f95be30c2e526683916c57f793f7943
+ checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad
languageName: node
linkType: hard
-"@babel/plugin-proposal-private-property-in-object@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.7"
+"@babel/plugin-proposal-private-property-in-object@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.18.6"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- "@babel/helper-create-class-features-plugin": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ "@babel/helper-create-class-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
"@babel/plugin-syntax-private-property-in-object": ^7.14.5
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 666d668f51d8c01aaf0dd87b27a83fc0392884d2c8e9d8e17b3b7011c0d348865dee94b44dc2d7070726e58e3b579728dc2588aaa8140d563f7390743ee90f0a
+ checksum: c8e56a972930730345f39f2384916fd8e711b3f4b4eae2ca9740e99958980118120d5cc9b6ac150f0965a5a35f825910e2c3013d90be3e9993ab6111df444569
languageName: node
linkType: hard
-"@babel/plugin-proposal-unicode-property-regex@npm:^7.16.7, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4":
- version: 7.16.7
- resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.16.7"
+"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4":
+ version: 7.18.6
+ resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6"
dependencies:
- "@babel/helper-create-regexp-features-plugin": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-create-regexp-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 2b8a33713d456183f0b7d011011e7bd932c08cc06216399a7b2015ab39284b511993dc10a89bbb15d1d728e6a2ef42ca08c3202619aa148cbd48052422ea3995
+ checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951
languageName: node
linkType: hard
@@ -651,6 +653,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-syntax-import-assertions@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-syntax-import-assertions@npm:7.18.6"
+ dependencies:
+ "@babel/helper-plugin-utils": ^7.18.6
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 54918a05375325ba0c60bc81abfb261e6f118bed2de94e4c17dca9a2006fc25e13b1a8b5504b9a881238ea394fd2f098f60b2eb3a392585d6348874565445e7b
+ languageName: node
+ linkType: hard
+
"@babel/plugin-syntax-json-strings@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3"
@@ -673,14 +686,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-jsx@npm:^7.12.13, @babel/plugin-syntax-jsx@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-syntax-jsx@npm:7.16.7"
+"@babel/plugin-syntax-jsx@npm:^7.12.13, @babel/plugin-syntax-jsx@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-syntax-jsx@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: cd9b0e53c50e8ddb0afaf0f42e0b221a94e4f59aee32a591364266a31195c48cac5fef288d02c1c935686bda982d2e0f1ed61cceb995fc9f6fb09ef5ebecdd2b
+ checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67
languageName: node
linkType: hard
@@ -772,514 +785,517 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-typescript@npm:^7.16.7":
- version: 7.17.10
- resolution: "@babel/plugin-syntax-typescript@npm:7.17.10"
+"@babel/plugin-syntax-typescript@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-syntax-typescript@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 43e908acf4a1e267f7bd86dc2fcb015b1fbcc364da43b125289d6a91bd32eeed41e5d9870051f7a3e4e2da9eeff7655f7988b6f27beac06bcb60c054aa5bac6d
+ checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d
languageName: node
linkType: hard
-"@babel/plugin-transform-arrow-functions@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-arrow-functions@npm:7.16.7"
+"@babel/plugin-transform-arrow-functions@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-arrow-functions@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 2a6aa982c6fc80f4de7ccd973507ce5464fab129987cb6661136a7b9b6a020c2b329b912cbc46a68d39b5a18451ba833dcc8d1ca8d615597fec98624ac2add54
+ checksum: 900f5c695755062b91eec74da6f9092f40b8fada099058b92576f1e23c55e9813ec437051893a9b3c05cefe39e8ac06303d4a91b384e1c03dd8dc1581ea11602
languageName: node
linkType: hard
-"@babel/plugin-transform-async-to-generator@npm:^7.16.8":
- version: 7.16.8
- resolution: "@babel/plugin-transform-async-to-generator@npm:7.16.8"
+"@babel/plugin-transform-async-to-generator@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-async-to-generator@npm:7.18.6"
dependencies:
- "@babel/helper-module-imports": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-remap-async-to-generator": ^7.16.8
+ "@babel/helper-module-imports": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-remap-async-to-generator": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 3a2e781800e3dea1f526324ed259d1f9064c5ea3c9909c0c22b445d4c648ad489c579f358ae20ada11f7725ba67e0ddeb1e0241efadc734771e87dabd4c6820a
+ checksum: c2cca47468cf1aeefdc7ec35d670e195c86cee4de28a1970648c46a88ce6bd1806ef0bab27251b9e7fb791bb28a64dcd543770efd899f28ee5f7854e64e873d3
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoped-functions@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.7"
+"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 591e9f75437bb32ebf9506d28d5c9659c66c0e8e0c19b12924d808d898e68309050aadb783ccd70bb4956555067326ecfa17a402bc77eb3ece3c6863d40b9016
+ checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoping@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-block-scoping@npm:7.16.7"
+"@babel/plugin-transform-block-scoping@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-block-scoping@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: f93b5441af573fc274655f1707aeb4f67a43e926b58f56d89cc35a27877ae0bf198648603cbc19f442579489138f93c3838905895f109aa356996dbc3ed97a68
+ checksum: b117a005a9d5aedacc4a899a4d504b7f46e4c1e852b62d34a7f1cb06caecb1f69507b6a07d0ba6c6241ddd8f470bc6f483513d87637e49f6c508aadf23cf391a
languageName: node
linkType: hard
-"@babel/plugin-transform-classes@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-classes@npm:7.16.7"
+"@babel/plugin-transform-classes@npm:^7.18.6":
+ version: 7.18.8
+ resolution: "@babel/plugin-transform-classes@npm:7.18.8"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- "@babel/helper-environment-visitor": ^7.16.7
- "@babel/helper-function-name": ^7.16.7
- "@babel/helper-optimise-call-expression": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-replace-supers": ^7.16.7
- "@babel/helper-split-export-declaration": ^7.16.7
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-function-name": ^7.18.6
+ "@babel/helper-optimise-call-expression": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-replace-supers": ^7.18.6
+ "@babel/helper-split-export-declaration": ^7.18.6
globals: ^11.1.0
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 791526a1bf3c4659b94d619536e3181d3ad54887d50539066628c6e695789a3bb264dc1fbc8540169d62a222f623df54defb490c1811ae63bad1e3557d6b3bb0
+ checksum: 7248a430bb2e43bf5a063da37400875f2ed2c5eac1036c43e6634ad0ef8346a0fc99a910261832db0cd88e6d61dfcc3d9be36714eb87c8c467eed9588adb3143
languageName: node
linkType: hard
-"@babel/plugin-transform-computed-properties@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-computed-properties@npm:7.16.7"
+"@babel/plugin-transform-computed-properties@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-computed-properties@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 28b17f7cfe643f45920b76dc040cab40d4e54eccf5074fba2658c484feacda9b4885b3854ffaf26292189783fdecc97211519c61831b6708fcbf739cfbcbf31c
+ checksum: 686d7b9d03192959684de11ddf9c616ecfb314b199e9191f2ebbbfe0e0c9d6a3a5245668cde620e949e5891ca9a9d90a224fbf605dfb94d05b81aff127c5ae60
languageName: node
linkType: hard
-"@babel/plugin-transform-destructuring@npm:^7.17.7":
- version: 7.17.7
- resolution: "@babel/plugin-transform-destructuring@npm:7.17.7"
+"@babel/plugin-transform-destructuring@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-destructuring@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 767ecf6640fea9a06a4859f0c34daa30ac7d146a96476caa1f77081d5b6e43699f45e14acd52682078f2b7c230ff0814312b41f61b21ca2b5f9c5a2cc93c2b58
+ checksum: 256573bd2712e292784befb82fcb88b070c16b4d129469ea886885d8fbafdbb072c9fcf7f82039d2c61b05f2005db34e5068b2a6e813941c41ce709249f357c1
languageName: node
linkType: hard
-"@babel/plugin-transform-dotall-regex@npm:^7.16.7, @babel/plugin-transform-dotall-regex@npm:^7.4.4":
- version: 7.16.7
- resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.7"
+"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6"
dependencies:
- "@babel/helper-create-regexp-features-plugin": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-create-regexp-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 554570dddfd5bfd87ab307be520f69a3d4ed2d2db677c165971b400d4c96656d0c165b318e69f1735612dcd12e04c0ee257697dc26800e8a572ca73bc05fa0f4
+ checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da
languageName: node
linkType: hard
-"@babel/plugin-transform-duplicate-keys@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-duplicate-keys@npm:7.16.7"
+"@babel/plugin-transform-duplicate-keys@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b96f6e9f7b33a91ad0eb6b793e4da58b7a0108b58269109f391d57078d26e043b3872c95429b491894ae6400e72e44d9b744c9b112b8433c99e6969b767e30ed
+ checksum: c21797ae06e84e3d1502b1214279215e4dcb2e181198bfb9b1644e65ca0288441d3d70a9ea745f687095e9226b9a4a62b9e53fb944c8924b9591ce4e0039b042
languageName: node
linkType: hard
-"@babel/plugin-transform-exponentiation-operator@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.16.7"
+"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6"
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 8082c79268f5b1552292bd3abbfed838a1131747e62000146e70670707b518602e907bbe3aef0fda824a2eebe995a9d897bd2336a039c5391743df01608673b0
+ checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229
languageName: node
linkType: hard
-"@babel/plugin-transform-for-of@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-for-of@npm:7.16.7"
+"@babel/plugin-transform-for-of@npm:^7.18.6":
+ version: 7.18.8
+ resolution: "@babel/plugin-transform-for-of@npm:7.18.8"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 35c9264ee4bef814818123d70afe8b2f0a85753a0a9dc7b73f93a71cadc5d7de852f1a3e300a7c69a491705805704611de1e2ccceb5686f7828d6bca2e5a7306
+ checksum: ca64c623cf0c7a80ab6f07ebd3e6e4ade95e2ae806696f70b43eafe6394fa8ce21f2b1ffdd15df2067f7363d2ecfe26472a97c6c774403d2163fa05f50c98f17
languageName: node
linkType: hard
-"@babel/plugin-transform-function-name@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-function-name@npm:7.16.7"
+"@babel/plugin-transform-function-name@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-function-name@npm:7.18.6"
dependencies:
- "@babel/helper-compilation-targets": ^7.16.7
- "@babel/helper-function-name": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-compilation-targets": ^7.18.6
+ "@babel/helper-function-name": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 4d97d0b84461cdd5d5aa2d010cdaf30f1f83a92a0dedd3686cbc7e90dc1249a70246f5bac0c1f3cd3f1dbfb03f7aac437776525a0c90cafd459776ea4fcc6bde
+ checksum: d15d36f52d11a1b6dde3cfc0975eb9c030d66207875a722860bc0637f7515f94107b35320306967faaaa896523097e8f5c3dd6982d926f52016525ceaa9e3e42
languageName: node
linkType: hard
-"@babel/plugin-transform-literals@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-literals@npm:7.16.7"
+"@babel/plugin-transform-literals@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-literals@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: a9565d999fc7a72a391ef843cf66028c38ca858537c7014d9ea8ea587a59e5f952d9754bdcca6ca0446e84653e297d417d4faedccb9e4221af1aa30f25d918e0
+ checksum: 859e2405d51931c8c0ea39890c0bcf6c7c01793fe99409844fe122e4c342528f87cd13b8210dd2873ecf5c643149b310c4bc5eb9a4c45928de142063ab04b2b8
languageName: node
linkType: hard
-"@babel/plugin-transform-member-expression-literals@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.7"
+"@babel/plugin-transform-member-expression-literals@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: fdf5b22abab2b770e69348ce7f99796c3e0e1e7ce266afdbe995924284704930fa989323bdbda7070db8adb45a72f39eaa1dbebf18b67fc44035ec00c6ae3300
+ checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-amd@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-modules-amd@npm:7.16.7"
+"@babel/plugin-transform-modules-amd@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-modules-amd@npm:7.18.6"
dependencies:
- "@babel/helper-module-transforms": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-module-transforms": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
babel-plugin-dynamic-import-node: ^2.3.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 9ac251ee96183b10cf9b4ec8f9e8d52e14ec186a56103f6c07d0c69e99faa60391f6bac67da733412975e487bd36adb403e2fc99bae6b785bf1413e9d928bc71
+ checksum: f60c4c4e0eaec41e42c003cbab44305da7a8e05b2c9bdfc2b3fe0f9e1d7441c959ff5248aa03e350abe530e354028cbf3aa20bf07067b11510997dad8dd39be0
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.17.9":
- version: 7.17.9
- resolution: "@babel/plugin-transform-modules-commonjs@npm:7.17.9"
+"@babel/plugin-transform-modules-commonjs@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-modules-commonjs@npm:7.18.6"
dependencies:
- "@babel/helper-module-transforms": ^7.17.7
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-simple-access": ^7.17.7
+ "@babel/helper-module-transforms": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-simple-access": ^7.18.6
babel-plugin-dynamic-import-node: ^2.3.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 23f248a28b43978c7ee187a91392510f665db32f2cc869007da4922e5a83da47f27ecd5da37c8f66fe6b89e4b324f1a978a4493ae59edf2b3129387d844fde1b
+ checksum: 7e356e3df8a6a8542cced7491ec5b1cc1093a88d216a59e63a5d2b9fe9d193cbea864f680a41429e41a4f9ecec930aa5b0b8f57e2b17b3b4d27923bb12ba5d14
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-systemjs@npm:^7.17.8":
- version: 7.17.8
- resolution: "@babel/plugin-transform-modules-systemjs@npm:7.17.8"
+"@babel/plugin-transform-modules-systemjs@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-modules-systemjs@npm:7.18.6"
dependencies:
- "@babel/helper-hoist-variables": ^7.16.7
- "@babel/helper-module-transforms": ^7.17.7
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-validator-identifier": ^7.16.7
+ "@babel/helper-hoist-variables": ^7.18.6
+ "@babel/helper-module-transforms": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-validator-identifier": ^7.18.6
babel-plugin-dynamic-import-node: ^2.3.3
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 058c0e7987aab64c4019bc9eab3f80c5dd05bec737e230e5c60e9222dfb3d01b2dfa3aa1db6cbb75a4095c40af3bba2e3a60170b1570a158d3e781376569ce49
+ checksum: 69e476477fe4c18a5975aa683684b2db76c76013d2387110ffc7b221071ec611cd3961b68631bdae7a57cb5cc0decdbb07119ef168e9dcdae9ba803a7b352ab0
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-umd@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-modules-umd@npm:7.16.7"
+"@babel/plugin-transform-modules-umd@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6"
dependencies:
- "@babel/helper-module-transforms": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-module-transforms": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: d1433f8b0e0b3c9f892aa530f08fe3ba653a5e51fe1ed6034ac7d45d4d6f22c3ba99186b72e41ad9ce5d8dcf964104c3da2419f15fcdcf5ba05c5fda3ea2cefc
+ checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153
languageName: node
linkType: hard
-"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.17.10":
- version: 7.17.10
- resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.17.10"
+"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.18.6"
dependencies:
- "@babel/helper-create-regexp-features-plugin": ^7.17.0
+ "@babel/helper-create-regexp-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0
- checksum: a2be5f9f23d4dd49106e1c84a1cb625a56d6c7e5cb466602151f9e05aa0a70f68b52206f034447d37e6790914ea953ebf2ab705f377ee7ef00e14453ba3c3d6a
+ checksum: 6ef64aa3dad68df139eeaa7b6e9bb626be8f738ed5ed4db765d516944b1456d513b6bad3bb60fff22babe73de26436fd814a4228705b2d3d2fdb272c31da35e2
languageName: node
linkType: hard
-"@babel/plugin-transform-new-target@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-new-target@npm:7.16.7"
+"@babel/plugin-transform-new-target@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-new-target@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 7410c3e68abc835f87a98d40269e65fb1a05c131decbb6721a80ed49a01bd0c53abb6b8f7f52d5055815509022790e1accca32e975c02f2231ac3cf13d8af768
+ checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1
languageName: node
linkType: hard
-"@babel/plugin-transform-object-super@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-object-super@npm:7.16.7"
+"@babel/plugin-transform-object-super@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-object-super@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-replace-supers": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-replace-supers": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 46e3c879f4a93e904f2ecf83233d40c48c832bdbd82a67cab1f432db9aa51702e40d9e51e5800613e12299974f90f4ed3869e1273dbca8642984266320c5f341
+ checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef
languageName: node
linkType: hard
-"@babel/plugin-transform-parameters@npm:^7.12.1, @babel/plugin-transform-parameters@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-parameters@npm:7.16.7"
+"@babel/plugin-transform-parameters@npm:^7.12.1, @babel/plugin-transform-parameters@npm:^7.18.6":
+ version: 7.18.8
+ resolution: "@babel/plugin-transform-parameters@npm:7.18.8"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 4d6904376db82d0b35f0a6cce08f630daf8608d94e903d6c7aff5bd742b251651bd1f88cdf9f16cad98aba5fc7c61da8635199364865fad6367d5ae37cf56cc1
+ checksum: 2b5863300da60face8a250d91da16294333bd5626e9721b13a3ba2078bd2a5a190e32c6e7a1323d5f547f579aeb2804ff49a62a55fcad2b1d099e55a55b788ea
languageName: node
linkType: hard
-"@babel/plugin-transform-property-literals@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-property-literals@npm:7.16.7"
+"@babel/plugin-transform-property-literals@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-property-literals@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b5674458991a9b0e8738989d70faa88c7f98ed3df923c119f1225069eed72fe5e0ce947b1adc91e378f5822fbdeb7a672f496fd1c75c4babcc88169e3a7c3229
+ checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144
languageName: node
linkType: hard
"@babel/plugin-transform-react-constant-elements@npm:^7.14.5":
- version: 7.17.6
- resolution: "@babel/plugin-transform-react-constant-elements@npm:7.17.6"
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-react-constant-elements@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 4c111328511c4dcb8d1d7970d7cccff463c0c34dfe3380f5bb80b692fa191b441fa8c6ef4229c5140dc0b8c69cc3f9aeb6dc05455c4367be93e784658ce11cc5
+ checksum: 8ad4773193e2b2164f7ac0e717e493351127414aa5e7b7bcc95abe52319962bb83338dc44baf24486d3bc2186c8174ef74aeb6e4d9602bda580829cc6a63620e
languageName: node
linkType: hard
-"@babel/plugin-transform-react-display-name@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-react-display-name@npm:7.16.7"
+"@babel/plugin-transform-react-display-name@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 483154413671ab0a25ae37520b7cf5bfab0958c484a3707c6799b1f1436d1e51481bcc03fbfcdbf90bf6b46818d931ae35e515141d8354c3287351b4467376ba
+ checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49
languageName: node
linkType: hard
-"@babel/plugin-transform-react-jsx-development@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-react-jsx-development@npm:7.16.7"
+"@babel/plugin-transform-react-jsx-development@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6"
dependencies:
- "@babel/plugin-transform-react-jsx": ^7.16.7
+ "@babel/plugin-transform-react-jsx": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 697c71cb0ac9647a9b8c6f1aca99767cf06197f6c0b5d1f2e0c01f641e0706a380779f06836fdb941d3aa171f868091270fbe9fcfbfbcc2a24df5e60e04545e8
+ checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee
languageName: node
linkType: hard
-"@babel/plugin-transform-react-jsx@npm:^7.16.7":
- version: 7.17.3
- resolution: "@babel/plugin-transform-react-jsx@npm:7.17.3"
+"@babel/plugin-transform-react-jsx@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-react-jsx@npm:7.18.6"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- "@babel/helper-module-imports": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/plugin-syntax-jsx": ^7.16.7
- "@babel/types": ^7.17.0
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ "@babel/helper-module-imports": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/plugin-syntax-jsx": ^7.18.6
+ "@babel/types": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 7e33a3fb78a3b7352b56f48211160ae60dc3654bae314ea0352bfc179d10eaac789792ccb3701172388ec4e4dbdb94952cdf3386980f3af402d99ceadd91149b
+ checksum: 46129eaf1ab7a7a73e3e8c9d9859b630f5b381c5e19fb1559e2db7b943a7825b6715ad950623fb03fe7bd31ed618ce1d0bd539b13fa030a50c39d5a873a5ba00
languageName: node
linkType: hard
-"@babel/plugin-transform-react-pure-annotations@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.16.7"
+"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6"
dependencies:
- "@babel/helper-annotate-as-pure": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-annotate-as-pure": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 715fe9c5fd10c5605a6de1d4436d29087878924758969427ba4d0b2bc274a436d3ac8f2777b744c988bdbb90f7e68dc2a82491db333ae7e0079fab776b543fae
+ checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219
languageName: node
linkType: hard
-"@babel/plugin-transform-regenerator@npm:^7.17.9":
- version: 7.17.9
- resolution: "@babel/plugin-transform-regenerator@npm:7.17.9"
+"@babel/plugin-transform-regenerator@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-regenerator@npm:7.18.6"
dependencies:
+ "@babel/helper-plugin-utils": ^7.18.6
regenerator-transform: ^0.15.0
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: bf92f7228397615f12fa62d1decbe854ee9065d44e55036f99bf312783d51b082981bab38ba61de9858f7e20513484a043bfa958c0ce4a0d4d1710710df029a9
+ checksum: 60bd482cb0343c714f85c3e19a13b3b5fa05ee336c079974091c0b35e263307f4e661f4555dff90707a87d5efe19b1d51835db44455405444ac1813e268ad750
languageName: node
linkType: hard
-"@babel/plugin-transform-reserved-words@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-reserved-words@npm:7.16.7"
+"@babel/plugin-transform-reserved-words@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 00218a646e99a97c1f10b77c41c178ca1b91d0e6cf18dd4ca3c59b8a5ad721db04ef508f49be4cd0dcca7742490dbb145307b706a2dbea1917d5e5f7ba2f31b7
+ checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c
languageName: node
linkType: hard
-"@babel/plugin-transform-runtime@npm:^7.17.10":
- version: 7.17.10
- resolution: "@babel/plugin-transform-runtime@npm:7.17.10"
+"@babel/plugin-transform-runtime@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-runtime@npm:7.18.6"
dependencies:
- "@babel/helper-module-imports": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
- babel-plugin-polyfill-corejs2: ^0.3.0
- babel-plugin-polyfill-corejs3: ^0.5.0
- babel-plugin-polyfill-regenerator: ^0.3.0
+ "@babel/helper-module-imports": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ babel-plugin-polyfill-corejs2: ^0.3.1
+ babel-plugin-polyfill-corejs3: ^0.5.2
+ babel-plugin-polyfill-regenerator: ^0.3.1
semver: ^6.3.0
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 61b63497a9e856551d299547a29de8966102f3a85cc3c09335efd1492a6bf1d540dc937b395dd94200425194b65499bf0d36264b9061d19c93810b90fcbec181
+ checksum: ed1ee31d02c86b4cad3d38678fd9593a50478588c1ad15b0128135dfbfb463555d49335a55d1486c3a15c5791e6ef9e21a3cc124c555b250fadfd83861ac61d2
languageName: node
linkType: hard
-"@babel/plugin-transform-shorthand-properties@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.7"
+"@babel/plugin-transform-shorthand-properties@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: ca381ecf8f48696512172deca40af46b1f64e3497186fdc2c9009286d8f06b468c4d61cdc392dc8b0c165298117dda67be9e2ff0e99d7691b0503f1240d4c62b
+ checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7
languageName: node
linkType: hard
-"@babel/plugin-transform-spread@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-spread@npm:7.16.7"
+"@babel/plugin-transform-spread@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-spread@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 6e961af1a70586bb72dd85e8296cee857c5dadd73225fccd0fe261c0d98652a82d69c65f3e9dc31ce019a12e9677262678479b96bd2d9140ddf6514618362828
+ checksum: 996b139ed68503700184f709dc996f285be285282d1780227185b622d9642f5bd60996fcfe910ed0495834f1935df805e7abb36b4b587222264c61020ba4485b
languageName: node
linkType: hard
-"@babel/plugin-transform-sticky-regex@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-sticky-regex@npm:7.16.7"
+"@babel/plugin-transform-sticky-regex@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: d59e20121ff0a483e29364eff8bb42cd8a0b7a3158141eea5b6f219227e5b873ea70f317f65037c0f557887a692ac993b72f99641a37ea6ec0ae8000bfab1343
+ checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3
languageName: node
linkType: hard
-"@babel/plugin-transform-template-literals@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-template-literals@npm:7.16.7"
+"@babel/plugin-transform-template-literals@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-template-literals@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: b55a519dd8b957247ebad3cab21918af5adca4f6e6c87819501cfe3d4d4bccda25bc296c7dfc8a30909b4ad905902aeb9d55ad955cb9f5cbc74b42dab32baa18
+ checksum: 6ec354415f92850c927dd3ad90e337df8ee1aeb4cdb2c643208bc8652be91f647c137846586b14bc2b2d7ec408c2b74af2d154ba0972a4fe8b559f8c3e07a3aa
languageName: node
linkType: hard
-"@babel/plugin-transform-typeof-symbol@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-typeof-symbol@npm:7.16.7"
+"@babel/plugin-transform-typeof-symbol@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 739a8c439dacbd9af62cfbfa0a7cbc3f220849e5fc774e5ef708a09186689a724c41a1d11323e7d36588d24f5481c8b702c86ff7be8da2e2fed69bed0175f625
+ checksum: b018ac3275958ed74caa2fdb900873bc61907e0cb8b70197ecd2f0e98611119d7a5831761bd14710882c94903e220e6338dd2e7346eca678c788b30457080a7e
languageName: node
linkType: hard
-"@babel/plugin-transform-typescript@npm:^7.16.7":
- version: 7.16.8
- resolution: "@babel/plugin-transform-typescript@npm:7.16.8"
+"@babel/plugin-transform-typescript@npm:^7.18.6":
+ version: 7.18.8
+ resolution: "@babel/plugin-transform-typescript@npm:7.18.8"
dependencies:
- "@babel/helper-create-class-features-plugin": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/plugin-syntax-typescript": ^7.16.7
+ "@babel/helper-create-class-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/plugin-syntax-typescript": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: a76d0afcbd550208cf2e7cdedb4f2d3ca3fa287640a4858a5ee0a28270b784d7d20d5a51b5997dc84514e066a5ebef9e0a0f74ed9fffae09e73984786dd08036
+ checksum: 627211f1658870274fcabf38a71bb08ae219e3ac672423083574fabe2c857f28d39243cb7279adada8468c912a7beebc0622770ed66885a1e33b84ccc8bfd7df
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-escapes@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-unicode-escapes@npm:7.16.7"
+"@babel/plugin-transform-unicode-escapes@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: d10c3b5baa697ca2d9ecce2fd7705014d7e1ddd86ed684ccec378f7ad4d609ab970b5546d6cdbe242089ecfc7a79009d248cf4f8ee87d629485acfb20c0d9160
+ checksum: 297a03706723164a777263f76a8d89bccfb1d3fbc5e1075079dfd84372a5416d579da7d44c650abf935a1150a995bfce0e61966447b657f958e51c4ea45b72dc
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-regex@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.7"
+"@babel/plugin-transform-unicode-regex@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6"
dependencies:
- "@babel/helper-create-regexp-features-plugin": ^7.16.7
- "@babel/helper-plugin-utils": ^7.16.7
+ "@babel/helper-create-regexp-features-plugin": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: ef7721cfb11b269809555b1c392732566c49f6ced58e0e990c0e81e58a934bbab3072dcbe92d3a20d60e3e41036ecf987bcc63a7cde90711a350ad774667e5e6
- languageName: node
- linkType: hard
-
-"@babel/preset-env@npm:^7.15.6, @babel/preset-env@npm:^7.17.10":
- version: 7.17.10
- resolution: "@babel/preset-env@npm:7.17.10"
- dependencies:
- "@babel/compat-data": ^7.17.10
- "@babel/helper-compilation-targets": ^7.17.10
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-validator-option": ^7.16.7
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.16.7
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.16.7
- "@babel/plugin-proposal-async-generator-functions": ^7.16.8
- "@babel/plugin-proposal-class-properties": ^7.16.7
- "@babel/plugin-proposal-class-static-block": ^7.17.6
- "@babel/plugin-proposal-dynamic-import": ^7.16.7
- "@babel/plugin-proposal-export-namespace-from": ^7.16.7
- "@babel/plugin-proposal-json-strings": ^7.16.7
- "@babel/plugin-proposal-logical-assignment-operators": ^7.16.7
- "@babel/plugin-proposal-nullish-coalescing-operator": ^7.16.7
- "@babel/plugin-proposal-numeric-separator": ^7.16.7
- "@babel/plugin-proposal-object-rest-spread": ^7.17.3
- "@babel/plugin-proposal-optional-catch-binding": ^7.16.7
- "@babel/plugin-proposal-optional-chaining": ^7.16.7
- "@babel/plugin-proposal-private-methods": ^7.16.11
- "@babel/plugin-proposal-private-property-in-object": ^7.16.7
- "@babel/plugin-proposal-unicode-property-regex": ^7.16.7
+ checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e
+ languageName: node
+ linkType: hard
+
+"@babel/preset-env@npm:^7.15.6, @babel/preset-env@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/preset-env@npm:7.18.6"
+ dependencies:
+ "@babel/compat-data": ^7.18.6
+ "@babel/helper-compilation-targets": ^7.18.6
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-validator-option": ^7.18.6
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.6
+ "@babel/plugin-proposal-async-generator-functions": ^7.18.6
+ "@babel/plugin-proposal-class-properties": ^7.18.6
+ "@babel/plugin-proposal-class-static-block": ^7.18.6
+ "@babel/plugin-proposal-dynamic-import": ^7.18.6
+ "@babel/plugin-proposal-export-namespace-from": ^7.18.6
+ "@babel/plugin-proposal-json-strings": ^7.18.6
+ "@babel/plugin-proposal-logical-assignment-operators": ^7.18.6
+ "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6
+ "@babel/plugin-proposal-numeric-separator": ^7.18.6
+ "@babel/plugin-proposal-object-rest-spread": ^7.18.6
+ "@babel/plugin-proposal-optional-catch-binding": ^7.18.6
+ "@babel/plugin-proposal-optional-chaining": ^7.18.6
+ "@babel/plugin-proposal-private-methods": ^7.18.6
+ "@babel/plugin-proposal-private-property-in-object": ^7.18.6
+ "@babel/plugin-proposal-unicode-property-regex": ^7.18.6
"@babel/plugin-syntax-async-generators": ^7.8.4
"@babel/plugin-syntax-class-properties": ^7.12.13
"@babel/plugin-syntax-class-static-block": ^7.14.5
"@babel/plugin-syntax-dynamic-import": ^7.8.3
"@babel/plugin-syntax-export-namespace-from": ^7.8.3
+ "@babel/plugin-syntax-import-assertions": ^7.18.6
"@babel/plugin-syntax-json-strings": ^7.8.3
"@babel/plugin-syntax-logical-assignment-operators": ^7.10.4
"@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
@@ -1289,48 +1305,48 @@ __metadata:
"@babel/plugin-syntax-optional-chaining": ^7.8.3
"@babel/plugin-syntax-private-property-in-object": ^7.14.5
"@babel/plugin-syntax-top-level-await": ^7.14.5
- "@babel/plugin-transform-arrow-functions": ^7.16.7
- "@babel/plugin-transform-async-to-generator": ^7.16.8
- "@babel/plugin-transform-block-scoped-functions": ^7.16.7
- "@babel/plugin-transform-block-scoping": ^7.16.7
- "@babel/plugin-transform-classes": ^7.16.7
- "@babel/plugin-transform-computed-properties": ^7.16.7
- "@babel/plugin-transform-destructuring": ^7.17.7
- "@babel/plugin-transform-dotall-regex": ^7.16.7
- "@babel/plugin-transform-duplicate-keys": ^7.16.7
- "@babel/plugin-transform-exponentiation-operator": ^7.16.7
- "@babel/plugin-transform-for-of": ^7.16.7
- "@babel/plugin-transform-function-name": ^7.16.7
- "@babel/plugin-transform-literals": ^7.16.7
- "@babel/plugin-transform-member-expression-literals": ^7.16.7
- "@babel/plugin-transform-modules-amd": ^7.16.7
- "@babel/plugin-transform-modules-commonjs": ^7.17.9
- "@babel/plugin-transform-modules-systemjs": ^7.17.8
- "@babel/plugin-transform-modules-umd": ^7.16.7
- "@babel/plugin-transform-named-capturing-groups-regex": ^7.17.10
- "@babel/plugin-transform-new-target": ^7.16.7
- "@babel/plugin-transform-object-super": ^7.16.7
- "@babel/plugin-transform-parameters": ^7.16.7
- "@babel/plugin-transform-property-literals": ^7.16.7
- "@babel/plugin-transform-regenerator": ^7.17.9
- "@babel/plugin-transform-reserved-words": ^7.16.7
- "@babel/plugin-transform-shorthand-properties": ^7.16.7
- "@babel/plugin-transform-spread": ^7.16.7
- "@babel/plugin-transform-sticky-regex": ^7.16.7
- "@babel/plugin-transform-template-literals": ^7.16.7
- "@babel/plugin-transform-typeof-symbol": ^7.16.7
- "@babel/plugin-transform-unicode-escapes": ^7.16.7
- "@babel/plugin-transform-unicode-regex": ^7.16.7
+ "@babel/plugin-transform-arrow-functions": ^7.18.6
+ "@babel/plugin-transform-async-to-generator": ^7.18.6
+ "@babel/plugin-transform-block-scoped-functions": ^7.18.6
+ "@babel/plugin-transform-block-scoping": ^7.18.6
+ "@babel/plugin-transform-classes": ^7.18.6
+ "@babel/plugin-transform-computed-properties": ^7.18.6
+ "@babel/plugin-transform-destructuring": ^7.18.6
+ "@babel/plugin-transform-dotall-regex": ^7.18.6
+ "@babel/plugin-transform-duplicate-keys": ^7.18.6
+ "@babel/plugin-transform-exponentiation-operator": ^7.18.6
+ "@babel/plugin-transform-for-of": ^7.18.6
+ "@babel/plugin-transform-function-name": ^7.18.6
+ "@babel/plugin-transform-literals": ^7.18.6
+ "@babel/plugin-transform-member-expression-literals": ^7.18.6
+ "@babel/plugin-transform-modules-amd": ^7.18.6
+ "@babel/plugin-transform-modules-commonjs": ^7.18.6
+ "@babel/plugin-transform-modules-systemjs": ^7.18.6
+ "@babel/plugin-transform-modules-umd": ^7.18.6
+ "@babel/plugin-transform-named-capturing-groups-regex": ^7.18.6
+ "@babel/plugin-transform-new-target": ^7.18.6
+ "@babel/plugin-transform-object-super": ^7.18.6
+ "@babel/plugin-transform-parameters": ^7.18.6
+ "@babel/plugin-transform-property-literals": ^7.18.6
+ "@babel/plugin-transform-regenerator": ^7.18.6
+ "@babel/plugin-transform-reserved-words": ^7.18.6
+ "@babel/plugin-transform-shorthand-properties": ^7.18.6
+ "@babel/plugin-transform-spread": ^7.18.6
+ "@babel/plugin-transform-sticky-regex": ^7.18.6
+ "@babel/plugin-transform-template-literals": ^7.18.6
+ "@babel/plugin-transform-typeof-symbol": ^7.18.6
+ "@babel/plugin-transform-unicode-escapes": ^7.18.6
+ "@babel/plugin-transform-unicode-regex": ^7.18.6
"@babel/preset-modules": ^0.1.5
- "@babel/types": ^7.17.10
- babel-plugin-polyfill-corejs2: ^0.3.0
- babel-plugin-polyfill-corejs3: ^0.5.0
- babel-plugin-polyfill-regenerator: ^0.3.0
+ "@babel/types": ^7.18.6
+ babel-plugin-polyfill-corejs2: ^0.3.1
+ babel-plugin-polyfill-corejs3: ^0.5.2
+ babel-plugin-polyfill-regenerator: ^0.3.1
core-js-compat: ^3.22.1
semver: ^6.3.0
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: d81a11a0866e9a90eaa799211a609f3f3838eebcaaa717c63438cbb9c90e99ed336822717614bf974b90438e1f5c6157c9b43a0bfceece5b2c9188d67cbbae92
+ checksum: 0598ff98b69116e289174d89d976f27eff54d9d7f9f95a1feadf743c18021cd9785ddf2439de9af360f5625450816e4bc3b76ddd0c20ecc64e8802f943f07302
languageName: node
linkType: hard
@@ -1349,90 +1365,90 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-react@npm:^7.14.5, @babel/preset-react@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/preset-react@npm:7.16.7"
+"@babel/preset-react@npm:^7.14.5, @babel/preset-react@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/preset-react@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-validator-option": ^7.16.7
- "@babel/plugin-transform-react-display-name": ^7.16.7
- "@babel/plugin-transform-react-jsx": ^7.16.7
- "@babel/plugin-transform-react-jsx-development": ^7.16.7
- "@babel/plugin-transform-react-pure-annotations": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-validator-option": ^7.18.6
+ "@babel/plugin-transform-react-display-name": ^7.18.6
+ "@babel/plugin-transform-react-jsx": ^7.18.6
+ "@babel/plugin-transform-react-jsx-development": ^7.18.6
+ "@babel/plugin-transform-react-pure-annotations": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: d0a052a418891ab6a02df9c75f0202964ad3b936c20bc44c81bcf3f02c057383f2fa329e0cc79baaac1b4e5e5c8924d3df93a2dd9319efe8042e3b33849978b3
+ checksum: 540d9cf0a0cc0bb07e6879994e6fb7152f87dafbac880b56b65e2f528134c7ba33e0cd140b58700c77b2ebf4c81fa6468fed0ba391462d75efc7f8c1699bb4c3
languageName: node
linkType: hard
-"@babel/preset-typescript@npm:^7.15.0, @babel/preset-typescript@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/preset-typescript@npm:7.16.7"
+"@babel/preset-typescript@npm:^7.15.0, @babel/preset-typescript@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/preset-typescript@npm:7.18.6"
dependencies:
- "@babel/helper-plugin-utils": ^7.16.7
- "@babel/helper-validator-option": ^7.16.7
- "@babel/plugin-transform-typescript": ^7.16.7
+ "@babel/helper-plugin-utils": ^7.18.6
+ "@babel/helper-validator-option": ^7.18.6
+ "@babel/plugin-transform-typescript": ^7.18.6
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 44e2f3fa302befe0dc50a01b79e5aa8c27a9c7047c46df665beae97201173030646ddf7c83d7d3ed3724fc38151745b11693e7b4502c81c4cd67781ff5677da5
+ checksum: 7fe0da5103eb72d3cf39cf3e138a794c8cdd19c0b38e3e101507eef519c46a87a0d6d0e8bc9e28a13ea2364001ebe7430b9d75758aab4c3c3a8db9a487b9dc7c
languageName: node
linkType: hard
-"@babel/runtime-corejs3@npm:^7.17.9":
- version: 7.17.9
- resolution: "@babel/runtime-corejs3@npm:7.17.9"
+"@babel/runtime-corejs3@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/runtime-corejs3@npm:7.18.6"
dependencies:
core-js-pure: ^3.20.2
regenerator-runtime: ^0.13.4
- checksum: c0893eb1ba4fd8a5a0e43d0fd5c3ad61c020dc5953bb74a76e9e10a0adfde7a5d8fd7e78d59b08dce3a0774948c6c40c81df0fdd0a1130c414fd3535fae365cb
+ checksum: 55a5315b2e2541aa0dcb6193b72f8f339045d1121ff08ca87b48cbcb89447bc4550a4658e8f149c05305edd75704176ba388d780f7f0461b1b8d956a00fcf123
languageName: node
linkType: hard
-"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.17.9, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7":
- version: 7.17.9
- resolution: "@babel/runtime@npm:7.17.9"
+"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7":
+ version: 7.18.6
+ resolution: "@babel/runtime@npm:7.18.6"
dependencies:
regenerator-runtime: ^0.13.4
- checksum: 4d56bdb82890f386d5a57c40ef985a0ed7f0a78f789377a2d0c3e8826819e0f7f16ba0fe906d9b2241c5f7ca56630ef0653f5bb99f03771f7b87ff8af4bf5fe3
+ checksum: 8b707b64ae0524db617d0c49933b258b96376a38307dc0be8fb42db5697608bcc1eba459acce541e376cff5ed5c5287d24db5780bd776b7c75ba2c2e26ff8a2c
languageName: node
linkType: hard
-"@babel/template@npm:^7.12.7, @babel/template@npm:^7.16.7":
- version: 7.16.7
- resolution: "@babel/template@npm:7.16.7"
+"@babel/template@npm:^7.12.7, @babel/template@npm:^7.18.6":
+ version: 7.18.6
+ resolution: "@babel/template@npm:7.18.6"
dependencies:
- "@babel/code-frame": ^7.16.7
- "@babel/parser": ^7.16.7
- "@babel/types": ^7.16.7
- checksum: 10cd112e89276e00f8b11b55a51c8b2f1262c318283a980f4d6cdb0286dc05734b9aaeeb9f3ad3311900b09bc913e02343fcaa9d4a4f413964aaab04eb84ac4a
+ "@babel/code-frame": ^7.18.6
+ "@babel/parser": ^7.18.6
+ "@babel/types": ^7.18.6
+ checksum: cb02ed804b7b1938dbecef4e01562013b80681843dd391933315b3dd9880820def3b5b1bff6320d6e4c6a1d63d1d5799630d658ec6b0369c5505e7e4029c38fb
languageName: node
linkType: hard
-"@babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.16.7, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.17.10, @babel/traverse@npm:^7.17.3, @babel/traverse@npm:^7.17.9":
- version: 7.17.10
- resolution: "@babel/traverse@npm:7.17.10"
+"@babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.18.6, @babel/traverse@npm:^7.18.8":
+ version: 7.18.8
+ resolution: "@babel/traverse@npm:7.18.8"
dependencies:
- "@babel/code-frame": ^7.16.7
- "@babel/generator": ^7.17.10
- "@babel/helper-environment-visitor": ^7.16.7
- "@babel/helper-function-name": ^7.17.9
- "@babel/helper-hoist-variables": ^7.16.7
- "@babel/helper-split-export-declaration": ^7.16.7
- "@babel/parser": ^7.17.10
- "@babel/types": ^7.17.10
+ "@babel/code-frame": ^7.18.6
+ "@babel/generator": ^7.18.7
+ "@babel/helper-environment-visitor": ^7.18.6
+ "@babel/helper-function-name": ^7.18.6
+ "@babel/helper-hoist-variables": ^7.18.6
+ "@babel/helper-split-export-declaration": ^7.18.6
+ "@babel/parser": ^7.18.8
+ "@babel/types": ^7.18.8
debug: ^4.1.0
globals: ^11.1.0
- checksum: 44ec0a59aa274b59464d52b1796eb6e54c67ae0f946de0d608068e28b1ab7065bdf53c0169d9102854cb00aa01944c83e722f08aeab96d9cc6bf56f8aede70fd
+ checksum: c406e01f45f13a666083f6e4ea32d2d5e20ce3a51ea48f6c8fe9d6a0469069f857af06866749959c4396f191393e39e7e6e7b2a8769afca7f50ca1046d6172bd
languageName: node
linkType: hard
-"@babel/types@npm:^7.12.7, @babel/types@npm:^7.15.6, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.16.8, @babel/types@npm:^7.17.0, @babel/types@npm:^7.17.10, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
- version: 7.17.10
- resolution: "@babel/types@npm:7.17.10"
+"@babel/types@npm:^7.12.7, @babel/types@npm:^7.15.6, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.7, @babel/types@npm:^7.18.8, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
+ version: 7.18.8
+ resolution: "@babel/types@npm:7.18.8"
dependencies:
- "@babel/helper-validator-identifier": ^7.16.7
+ "@babel/helper-validator-identifier": ^7.18.6
to-fast-properties: ^2.0.0
- checksum: 40cfc3f43a3ab7374df8ee6844793f804c65e7bea0fd1b090886b425106ba26e16e8fa698ae4b2caf2746083fe3e62f03f12997a5982e0d131700f17cbdcfca1
+ checksum: a485531faa9ff3b83ea94ba6502321dd66e39202c46d7765e4336cb4aff2ff69ebc77d97b17e21331a8eedde1f5490ce00e8a430c1041fc26854d636e6701919
languageName: node
linkType: hard
@@ -1443,44 +1459,45 @@ __metadata:
languageName: node
linkType: hard
-"@docusaurus/core@npm:2.0.0-beta.20, @docusaurus/core@npm:^2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/core@npm:2.0.0-beta.20"
+"@docusaurus/core@npm:2.0.0-beta.22, @docusaurus/core@npm:^2.0.0-beta.20":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/core@npm:2.0.0-beta.22"
dependencies:
- "@babel/core": ^7.17.10
- "@babel/generator": ^7.17.10
+ "@babel/core": ^7.18.6
+ "@babel/generator": ^7.18.7
"@babel/plugin-syntax-dynamic-import": ^7.8.3
- "@babel/plugin-transform-runtime": ^7.17.10
- "@babel/preset-env": ^7.17.10
- "@babel/preset-react": ^7.16.7
- "@babel/preset-typescript": ^7.16.7
- "@babel/runtime": ^7.17.9
- "@babel/runtime-corejs3": ^7.17.9
- "@babel/traverse": ^7.17.10
- "@docusaurus/cssnano-preset": 2.0.0-beta.20
- "@docusaurus/logger": 2.0.0-beta.20
- "@docusaurus/mdx-loader": 2.0.0-beta.20
+ "@babel/plugin-transform-runtime": ^7.18.6
+ "@babel/preset-env": ^7.18.6
+ "@babel/preset-react": ^7.18.6
+ "@babel/preset-typescript": ^7.18.6
+ "@babel/runtime": ^7.18.6
+ "@babel/runtime-corejs3": ^7.18.6
+ "@babel/traverse": ^7.18.6
+ "@docusaurus/cssnano-preset": 2.0.0-beta.22
+ "@docusaurus/logger": 2.0.0-beta.22
+ "@docusaurus/mdx-loader": 2.0.0-beta.22
"@docusaurus/react-loadable": 5.5.2
- "@docusaurus/utils": 2.0.0-beta.20
- "@docusaurus/utils-common": 2.0.0-beta.20
- "@docusaurus/utils-validation": 2.0.0-beta.20
- "@slorber/static-site-generator-webpack-plugin": ^4.0.4
+ "@docusaurus/utils": 2.0.0-beta.22
+ "@docusaurus/utils-common": 2.0.0-beta.22
+ "@docusaurus/utils-validation": 2.0.0-beta.22
+ "@slorber/static-site-generator-webpack-plugin": ^4.0.7
"@svgr/webpack": ^6.2.1
- autoprefixer: ^10.4.5
+ autoprefixer: ^10.4.7
babel-loader: ^8.2.5
- babel-plugin-dynamic-import-node: 2.3.0
+ babel-plugin-dynamic-import-node: ^2.3.3
boxen: ^6.2.1
+ chalk: ^4.1.2
chokidar: ^3.5.3
clean-css: ^5.3.0
cli-table3: ^0.6.2
combine-promises: ^1.1.0
commander: ^5.1.0
- copy-webpack-plugin: ^10.2.4
- core-js: ^3.22.3
+ copy-webpack-plugin: ^11.0.0
+ core-js: ^3.23.3
css-loader: ^6.7.1
- css-minimizer-webpack-plugin: ^3.4.1
- cssnano: ^5.1.7
- del: ^6.0.0
+ css-minimizer-webpack-plugin: ^4.0.0
+ cssnano: ^5.1.12
+ del: ^6.1.1
detect-port: ^1.3.0
escape-html: ^1.0.3
eta: ^1.12.3
@@ -1492,30 +1509,29 @@ __metadata:
import-fresh: ^3.3.0
leven: ^3.1.0
lodash: ^4.17.21
- mini-css-extract-plugin: ^2.6.0
- postcss: ^8.4.13
- postcss-loader: ^6.2.1
+ mini-css-extract-plugin: ^2.6.1
+ postcss: ^8.4.14
+ postcss-loader: ^7.0.0
prompts: ^2.4.2
react-dev-utils: ^12.0.1
react-helmet-async: ^1.3.0
react-loadable: "npm:@docusaurus/react-loadable@5.5.2"
react-loadable-ssr-addon-v5-slorber: ^1.0.1
- react-router: ^5.2.0
+ react-router: ^5.3.3
react-router-config: ^5.1.1
- react-router-dom: ^5.2.0
- remark-admonitions: ^1.2.1
+ react-router-dom: ^5.3.3
rtl-detect: ^1.0.4
semver: ^7.3.7
serve-handler: ^6.1.3
shelljs: ^0.8.5
- terser-webpack-plugin: ^5.3.1
+ terser-webpack-plugin: ^5.3.3
tslib: ^2.4.0
update-notifier: ^5.1.0
url-loader: ^4.1.1
wait-on: ^6.0.1
- webpack: ^5.72.0
+ webpack: ^5.73.0
webpack-bundle-analyzer: ^4.5.0
- webpack-dev-server: ^4.8.1
+ webpack-dev-server: ^4.9.3
webpack-merge: ^5.8.0
webpackbar: ^5.0.2
peerDependencies:
@@ -1523,52 +1539,53 @@ __metadata:
react-dom: ^16.8.4 || ^17.0.0
bin:
docusaurus: bin/docusaurus.mjs
- checksum: a060258c22a73c209583d83e3fad6941742436f6c2abc2d306cc99688eee2ed99a514c855984ea46ecfe202e25ab05ad249dc711234c56b7f39508136d0479c4
+ checksum: 543cc97e624089c9cd9b2f4501d97f45eb8084496dd770f6d7539e9f07076de6e2594d739da923041ba6fe9b502d667e47e401ea2fc5643e4994ba7a5f38f5b7
languageName: node
linkType: hard
-"@docusaurus/cssnano-preset@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/cssnano-preset@npm:2.0.0-beta.20"
+"@docusaurus/cssnano-preset@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/cssnano-preset@npm:2.0.0-beta.22"
dependencies:
- cssnano-preset-advanced: ^5.3.3
- postcss: ^8.4.13
+ cssnano-preset-advanced: ^5.3.8
+ postcss: ^8.4.14
postcss-sort-media-queries: ^4.2.1
- checksum: 3576722fd3bcf0c8d32f0b303ea9de67eb333000b791e26d825c478a34bc3af7a52e2bde311cc51c7004f037dd8766cd94c8a7cc2e7d12025f2b13a93c823e17
+ tslib: ^2.4.0
+ checksum: e7b801d71c14f7e78e77fc835462b392a6924af90c14c4c8b5e0f198a7867dea26d4c5edbca02773a3e5fb1cec49120d5c4255912568eade001cac021c873190
languageName: node
linkType: hard
-"@docusaurus/logger@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/logger@npm:2.0.0-beta.20"
+"@docusaurus/logger@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/logger@npm:2.0.0-beta.22"
dependencies:
chalk: ^4.1.2
tslib: ^2.4.0
- checksum: 71ac220746f09bdf0180369460c44c324a0bc931617d9868ccc2b739ab6f15a800c277cf62d54c1c354f5db3251b558006ef4ad7512dd2f21060c437e1e69e5e
+ checksum: 995b859bfae27535b62f4bd07486f119b813579dec0108cb40abe70c7fc7732d6d506e0287b2dc6b2310cb105892041be2fce5987debacd48bc2d2c426d9660d
languageName: node
linkType: hard
-"@docusaurus/lqip-loader@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/lqip-loader@npm:2.0.0-beta.20"
+"@docusaurus/lqip-loader@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/lqip-loader@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/logger": 2.0.0-beta.20
+ "@docusaurus/logger": 2.0.0-beta.22
file-loader: ^6.2.0
lodash: ^4.17.21
- sharp: ^0.30.4
+ sharp: ^0.30.7
tslib: ^2.4.0
- checksum: 3d65bcebb8a93e15ce28892168ebe38732a031b5f7edd48df6e4b00a4411bb2d62cb2d5c754d7c84a1c18672dd1a7b3e73500ad90ef8ef5eccc08123f4e43568
+ checksum: 89f6092d0d7896cd7d29fef5617cda3fb7e035ba9cb7e5f36f1ec10f67e5e3ad4eb71879b702e37733a0c9919d2535ef3eace8e39976e0f238c30e338f3dc006
languageName: node
linkType: hard
-"@docusaurus/mdx-loader@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/mdx-loader@npm:2.0.0-beta.20"
+"@docusaurus/mdx-loader@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/mdx-loader@npm:2.0.0-beta.22"
dependencies:
- "@babel/parser": ^7.17.10
- "@babel/traverse": ^7.17.10
- "@docusaurus/logger": 2.0.0-beta.20
- "@docusaurus/utils": 2.0.0-beta.20
+ "@babel/parser": ^7.18.6
+ "@babel/traverse": ^7.18.6
+ "@docusaurus/logger": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
"@mdx-js/mdx": ^1.6.22
escape-html: ^1.0.3
file-loader: ^6.2.0
@@ -1578,117 +1595,124 @@ __metadata:
remark-emoji: ^2.2.0
stringify-object: ^3.3.0
tslib: ^2.4.0
+ unified: ^9.2.2
unist-util-visit: ^2.0.3
url-loader: ^4.1.1
- webpack: ^5.72.0
+ webpack: ^5.73.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 722018c2973ff1187d29d7fe53db7db902df928e7badbeaa866f912d077638855bd6c9bccfa270e0d05f0a7dc98b024fb1bb16c1cb7614b4140a2d9517debbca
+ checksum: 8c7e55d6695214f6510e7b4dfc850da7a3c9313821eb07c7d831bc5ccb93732f847609ea29585a8df82c8af35d8a5fb4bc205e4488486aa36be3c0c181878fd4
languageName: node
linkType: hard
-"@docusaurus/module-type-aliases@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/module-type-aliases@npm:2.0.0-beta.20"
+"@docusaurus/module-type-aliases@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/module-type-aliases@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/types": 2.0.0-beta.20
+ "@docusaurus/react-loadable": 5.5.2
+ "@docusaurus/types": 2.0.0-beta.22
+ "@types/history": ^4.7.11
"@types/react": "*"
"@types/react-router-config": "*"
"@types/react-router-dom": "*"
react-helmet-async: "*"
+ react-loadable: "npm:@docusaurus/react-loadable@5.5.2"
peerDependencies:
react: "*"
react-dom: "*"
- checksum: adcae941361d0d6b6d02f1d685bc17a560ba610ef76fe528b712d2e568ac449bfe3fdc918aee44ba6b8a22411dc47813a501e0ecd8ba027281f18c2e08458823
+ checksum: dbce58dd1217908212457cb2f70eaef59c0863a12dde5dca593b7293c122c5c1eddb6ad4b36a15a30c16a1eeb7e771f74b2b9f1b9e6b1d2bff87beb5a3df93c1
languageName: node
linkType: hard
-"@docusaurus/plugin-content-blog@npm:2.0.0-beta.20, @docusaurus/plugin-content-blog@npm:^2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/plugin-content-blog@npm:2.0.0-beta.20"
+"@docusaurus/plugin-content-blog@npm:2.0.0-beta.22, @docusaurus/plugin-content-blog@npm:^2.0.0-beta.20":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/plugin-content-blog@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/core": 2.0.0-beta.20
- "@docusaurus/logger": 2.0.0-beta.20
- "@docusaurus/mdx-loader": 2.0.0-beta.20
- "@docusaurus/utils": 2.0.0-beta.20
- "@docusaurus/utils-common": 2.0.0-beta.20
- "@docusaurus/utils-validation": 2.0.0-beta.20
- cheerio: ^1.0.0-rc.10
+ "@docusaurus/core": 2.0.0-beta.22
+ "@docusaurus/logger": 2.0.0-beta.22
+ "@docusaurus/mdx-loader": 2.0.0-beta.22
+ "@docusaurus/types": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
+ "@docusaurus/utils-common": 2.0.0-beta.22
+ "@docusaurus/utils-validation": 2.0.0-beta.22
+ cheerio: ^1.0.0-rc.12
feed: ^4.2.2
fs-extra: ^10.1.0
lodash: ^4.17.21
reading-time: ^1.5.0
- remark-admonitions: ^1.2.1
tslib: ^2.4.0
unist-util-visit: ^2.0.3
utility-types: ^3.10.0
- webpack: ^5.72.0
+ webpack: ^5.73.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 6d8e63da83b34abac093c6f49e0133f2f38e6086ee87796820d9ca00ea70b6332a5959ea2fc772961fcf8fbcf183b21758d0f0212ebdbf4aa9503093bcce8607
+ checksum: b97fbd74cb9b3c52cc0a75c136bd4c6e7fedb25ec501942a35ae6736d3e587613b0be227639071d4cb6a2b33e94da84410f3bedc11c3fa5c16b0509cf0a6cc3c
languageName: node
linkType: hard
-"@docusaurus/plugin-content-docs@npm:2.0.0-beta.20, @docusaurus/plugin-content-docs@npm:^2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/plugin-content-docs@npm:2.0.0-beta.20"
+"@docusaurus/plugin-content-docs@npm:2.0.0-beta.22, @docusaurus/plugin-content-docs@npm:^2.0.0-beta.20":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/plugin-content-docs@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/core": 2.0.0-beta.20
- "@docusaurus/logger": 2.0.0-beta.20
- "@docusaurus/mdx-loader": 2.0.0-beta.20
- "@docusaurus/utils": 2.0.0-beta.20
- "@docusaurus/utils-validation": 2.0.0-beta.20
+ "@docusaurus/core": 2.0.0-beta.22
+ "@docusaurus/logger": 2.0.0-beta.22
+ "@docusaurus/mdx-loader": 2.0.0-beta.22
+ "@docusaurus/module-type-aliases": 2.0.0-beta.22
+ "@docusaurus/types": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
+ "@docusaurus/utils-validation": 2.0.0-beta.22
+ "@types/react-router-config": ^5.0.6
combine-promises: ^1.1.0
fs-extra: ^10.1.0
import-fresh: ^3.3.0
js-yaml: ^4.1.0
lodash: ^4.17.21
- remark-admonitions: ^1.2.1
tslib: ^2.4.0
utility-types: ^3.10.0
- webpack: ^5.72.0
+ webpack: ^5.73.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: d9c0e836b4de06d66662d5c50d828b0c8e493243cf758bf4f0efb73077376a2906b9344b272fe2a550302a16af8dbbfc9dbacbbcf836553c3c61970fb0658977
+ checksum: d258f16a46fd3f3e21595193ed90250eac73748aee57f9070e4929fe6f8b9c14c2cbeef837a66dd00a1e9a5c428110e545ac1ae91dba0956d18e23b5fc6c9c80
languageName: node
linkType: hard
-"@docusaurus/plugin-content-pages@npm:2.0.0-beta.20, @docusaurus/plugin-content-pages@npm:^2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/plugin-content-pages@npm:2.0.0-beta.20"
+"@docusaurus/plugin-content-pages@npm:2.0.0-beta.22, @docusaurus/plugin-content-pages@npm:^2.0.0-beta.20":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/plugin-content-pages@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/core": 2.0.0-beta.20
- "@docusaurus/mdx-loader": 2.0.0-beta.20
- "@docusaurus/utils": 2.0.0-beta.20
- "@docusaurus/utils-validation": 2.0.0-beta.20
+ "@docusaurus/core": 2.0.0-beta.22
+ "@docusaurus/mdx-loader": 2.0.0-beta.22
+ "@docusaurus/types": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
+ "@docusaurus/utils-validation": 2.0.0-beta.22
fs-extra: ^10.1.0
- remark-admonitions: ^1.2.1
tslib: ^2.4.0
- webpack: ^5.72.0
+ webpack: ^5.73.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: f1a17b2655ee4a2b1b3c59dafd39232cf84f6f96c5d5af90c1902d03aad471e26bc1c13e94745265ac669438291c732dd728e894528a32bd8dd94fd9f176a8c6
+ checksum: 9d11ca101649921556f2119ba8be176edb50720e2672ac4e355ac1314a36f88f9dd0e3b41ede0fcabe52e8689058ec1d2d31ee3640de1b02de53d9e65b9be35a
languageName: node
linkType: hard
"@docusaurus/plugin-ideal-image@npm:latest":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/plugin-ideal-image@npm:2.0.0-beta.20"
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/plugin-ideal-image@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/core": 2.0.0-beta.20
- "@docusaurus/lqip-loader": 2.0.0-beta.20
+ "@docusaurus/core": 2.0.0-beta.22
+ "@docusaurus/lqip-loader": 2.0.0-beta.22
"@docusaurus/responsive-loader": ^1.7.0
- "@docusaurus/theme-translations": 2.0.0-beta.20
- "@docusaurus/utils-validation": 2.0.0-beta.20
+ "@docusaurus/theme-translations": 2.0.0-beta.22
+ "@docusaurus/types": 2.0.0-beta.22
+ "@docusaurus/utils-validation": 2.0.0-beta.22
"@endiliey/react-ideal-image": ^0.0.11
- react-waypoint: ^10.1.0
- sharp: ^0.30.4
+ react-waypoint: ^10.3.0
+ sharp: ^0.30.7
tslib: ^2.4.0
- webpack: ^5.72.0
+ webpack: ^5.73.0
peerDependencies:
jimp: "*"
react: ^16.8.4 || ^17.0.0
@@ -1696,7 +1720,7 @@ __metadata:
peerDependenciesMeta:
jimp:
optional: true
- checksum: 29522dc905ba96a670165448fcfffe2494b3a3bacf11944a2a5c10afbed090f4fa5afc1f46fc69d1affb92172166f856cd37de4f2ca047647bf03830f08800c0
+ checksum: 7a01cec8101432ab574cd18441df2f57fe58c7191dfc011b540a7885ed42114a14ffd32da8e6f4cf749d8faad2e7dc6a4d332dbf37aeef35e71575f89bcceb4d
languageName: node
linkType: hard
@@ -1730,108 +1754,127 @@ __metadata:
linkType: hard
"@docusaurus/theme-classic@npm:^2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/theme-classic@npm:2.0.0-beta.20"
- dependencies:
- "@docusaurus/core": 2.0.0-beta.20
- "@docusaurus/plugin-content-blog": 2.0.0-beta.20
- "@docusaurus/plugin-content-docs": 2.0.0-beta.20
- "@docusaurus/plugin-content-pages": 2.0.0-beta.20
- "@docusaurus/theme-common": 2.0.0-beta.20
- "@docusaurus/theme-translations": 2.0.0-beta.20
- "@docusaurus/utils": 2.0.0-beta.20
- "@docusaurus/utils-common": 2.0.0-beta.20
- "@docusaurus/utils-validation": 2.0.0-beta.20
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/theme-classic@npm:2.0.0-beta.22"
+ dependencies:
+ "@docusaurus/core": 2.0.0-beta.22
+ "@docusaurus/mdx-loader": 2.0.0-beta.22
+ "@docusaurus/module-type-aliases": 2.0.0-beta.22
+ "@docusaurus/plugin-content-blog": 2.0.0-beta.22
+ "@docusaurus/plugin-content-docs": 2.0.0-beta.22
+ "@docusaurus/plugin-content-pages": 2.0.0-beta.22
+ "@docusaurus/theme-common": 2.0.0-beta.22
+ "@docusaurus/theme-translations": 2.0.0-beta.22
+ "@docusaurus/types": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
+ "@docusaurus/utils-common": 2.0.0-beta.22
+ "@docusaurus/utils-validation": 2.0.0-beta.22
"@mdx-js/react": ^1.6.22
- clsx: ^1.1.1
+ clsx: ^1.2.0
copy-text-to-clipboard: ^3.0.1
- infima: 0.2.0-alpha.39
+ infima: 0.2.0-alpha.41
lodash: ^4.17.21
nprogress: ^0.2.0
- postcss: ^8.4.13
- prism-react-renderer: ^1.3.1
+ postcss: ^8.4.14
+ prism-react-renderer: ^1.3.5
prismjs: ^1.28.0
- react-router-dom: ^5.2.0
+ react-router-dom: ^5.3.3
rtlcss: ^3.5.0
+ tslib: ^2.4.0
+ utility-types: ^3.10.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: a7086e35735ea34229976dee6a70d95f78dc2cabcd34d7e75c3acdfa6dbb08ba83e03dd6584c43231f9b149cfa30d115c64a0bbe6a981ed006c9956c1f1bb7a1
+ checksum: 8db4fa18844ba7aacb23bd4d68e6d21d28323b34ae5e724e7f633d795080aa82702a99b331f8f8df2bf8f1395f662d5ff769722dc85238e9aa1d155081444864
languageName: node
linkType: hard
-"@docusaurus/theme-common@npm:2.0.0-beta.20, @docusaurus/theme-common@npm:latest":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/theme-common@npm:2.0.0-beta.20"
+"@docusaurus/theme-common@npm:2.0.0-beta.22, @docusaurus/theme-common@npm:latest":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/theme-common@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/module-type-aliases": 2.0.0-beta.20
- "@docusaurus/plugin-content-blog": 2.0.0-beta.20
- "@docusaurus/plugin-content-docs": 2.0.0-beta.20
- "@docusaurus/plugin-content-pages": 2.0.0-beta.20
- clsx: ^1.1.1
+ "@docusaurus/mdx-loader": 2.0.0-beta.22
+ "@docusaurus/module-type-aliases": 2.0.0-beta.22
+ "@docusaurus/plugin-content-blog": 2.0.0-beta.22
+ "@docusaurus/plugin-content-docs": 2.0.0-beta.22
+ "@docusaurus/plugin-content-pages": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
+ "@types/history": ^4.7.11
+ "@types/react": "*"
+ "@types/react-router-config": "*"
+ clsx: ^1.2.0
parse-numeric-range: ^1.3.0
- prism-react-renderer: ^1.3.1
+ prism-react-renderer: ^1.3.5
tslib: ^2.4.0
utility-types: ^3.10.0
peerDependencies:
react: ^16.8.4 || ^17.0.0
react-dom: ^16.8.4 || ^17.0.0
- checksum: 353944a6ae7920e0b72d2ca8ed96c6bb533fe1e05b079ebb9b52d9467a375d675e9a5f6ef5e561337c543ce2c52ae7f523a5b6916f79f07b91615c1683cbc011
+ checksum: 328a9f936a061ba71cb5db09560c4f05ae57065702b5962553a301ffe8bc4468afdde0fa65b787a2ec80c09faf0b0d2d36838f027a725947f48557ff0b8b6b52
languageName: node
linkType: hard
-"@docusaurus/theme-translations@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/theme-translations@npm:2.0.0-beta.20"
+"@docusaurus/theme-translations@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/theme-translations@npm:2.0.0-beta.22"
dependencies:
fs-extra: ^10.1.0
tslib: ^2.4.0
- checksum: 079340ccbe9021b065eb2083c309b02b24ee745274046cb90b14a63f2625184c568e46a79ac1de6b2c4fc4a07fd2eb0abdb417bd530f74c591f8ef78c54850a7
+ checksum: cbddda0264df4d97f0156d433228debb0b6d9017ccb6d017285446c1cfcd9a555550baf1ec7e9e9a25ff16a4696b5d5fbf3864c61c80a701d36463df596223e3
languageName: node
linkType: hard
-"@docusaurus/types@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/types@npm:2.0.0-beta.20"
+"@docusaurus/types@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/types@npm:2.0.0-beta.22"
dependencies:
+ "@types/history": ^4.7.11
+ "@types/react": "*"
commander: ^5.1.0
- history: ^4.9.0
joi: ^17.6.0
react-helmet-async: ^1.3.0
utility-types: ^3.10.0
- webpack: ^5.72.0
+ webpack: ^5.73.0
webpack-merge: ^5.8.0
- checksum: 25aade44696326719a7eae063b5031b69ab78bb6cebccf036e4b9a8a81e1fa8a1561b30fbab6ad76476e5422ca0119f50a8215e1b43cd164bfc9b208b9789003
+ peerDependencies:
+ react: ^16.8.4 || ^17.0.0
+ react-dom: ^16.8.4 || ^17.0.0
+ checksum: 2e3955b0c01a18a382b527635d17b5d23899ad1d1d8cefd76faa72964c40fdd50e0df654a6f98531de241441a13ef340d3d79198663c18a5c93b55b2a8ff6b83
languageName: node
linkType: hard
-"@docusaurus/utils-common@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/utils-common@npm:2.0.0-beta.20"
+"@docusaurus/utils-common@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/utils-common@npm:2.0.0-beta.22"
dependencies:
tslib: ^2.4.0
- checksum: 79eee4a1b8cd99a65afb08e0ff726702c9139bebeef408a4653f14c2c9dd3005d91b4dba25da3323f9c5d12ebec69285a5309edf2d339306a8c54ab692031642
+ peerDependencies:
+ "@docusaurus/types": "*"
+ peerDependenciesMeta:
+ "@docusaurus/types":
+ optional: true
+ checksum: 4b24d9fa929ace819f2ab54442f47f87fbbbe1c278199e5dd73e8d8d91ebc38515ff39f0b2d15227ce3e19bc6a9e5097a7d3f32e88e0b39fb1e72b6682cd164e
languageName: node
linkType: hard
-"@docusaurus/utils-validation@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/utils-validation@npm:2.0.0-beta.20"
+"@docusaurus/utils-validation@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/utils-validation@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/logger": 2.0.0-beta.20
- "@docusaurus/utils": 2.0.0-beta.20
+ "@docusaurus/logger": 2.0.0-beta.22
+ "@docusaurus/utils": 2.0.0-beta.22
joi: ^17.6.0
js-yaml: ^4.1.0
tslib: ^2.4.0
- checksum: 6d97711d4c89ae9acb87fce3f8fca5827b2a7e0a7bedcb720cc836127839e1baaf2b68a76e0600f9076f25198f9b54a4b17be9c050e251db106898363060fea8
+ checksum: ca3f7c092042723bdc75906e53d37d33ee4125e13f8dc5dae7923cf6980bd2ce957f9896a9734748541447d98d589967e545474952243f7fe0001337c700e15c
languageName: node
linkType: hard
-"@docusaurus/utils@npm:2.0.0-beta.20":
- version: 2.0.0-beta.20
- resolution: "@docusaurus/utils@npm:2.0.0-beta.20"
+"@docusaurus/utils@npm:2.0.0-beta.22":
+ version: 2.0.0-beta.22
+ resolution: "@docusaurus/utils@npm:2.0.0-beta.22"
dependencies:
- "@docusaurus/logger": 2.0.0-beta.20
+ "@docusaurus/logger": 2.0.0-beta.22
"@svgr/webpack": ^6.2.1
file-loader: ^6.2.0
fs-extra: ^10.1.0
@@ -1845,8 +1888,13 @@ __metadata:
shelljs: ^0.8.5
tslib: ^2.4.0
url-loader: ^4.1.1
- webpack: ^5.72.0
- checksum: 2bba29f97926662944930374eb14a0c92034753bf720e807f54864a514682bef05af36bd13d2863ee379cb560eff97f570ea091bfaba1ed1c7e9606f51e29f46
+ webpack: ^5.73.0
+ peerDependencies:
+ "@docusaurus/types": "*"
+ peerDependenciesMeta:
+ "@docusaurus/types":
+ optional: true
+ checksum: ee384c2ec29491e2f11d6110e64300d72df23364cf1e5e1ad6b735db3894b046491a58a1ac9429ae1b9a30db14e024039d9490053880160cf13e8f8fec7b5521
languageName: node
linkType: hard
@@ -1872,16 +1920,16 @@ __metadata:
languageName: node
linkType: hard
-"@emotion/cache@npm:^11.4.0, @emotion/cache@npm:^11.7.1":
- version: 11.7.1
- resolution: "@emotion/cache@npm:11.7.1"
+"@emotion/cache@npm:^11.4.0, @emotion/cache@npm:^11.9.3":
+ version: 11.9.3
+ resolution: "@emotion/cache@npm:11.9.3"
dependencies:
"@emotion/memoize": ^0.7.4
- "@emotion/sheet": ^1.1.0
+ "@emotion/sheet": ^1.1.1
"@emotion/utils": ^1.0.0
"@emotion/weak-memoize": ^0.2.5
stylis: 4.0.13
- checksum: cf7aa8fe3bacfdedcda94b53e76a7635e122043439715fcfbf7f1a81340cfe6099a59134481a03ec3e0437466566d18528577d1e6ea92f5b98c372b8b38a8f35
+ checksum: 6e0aab2fa5b9b6b0b9bf66b5328ed44265c23ced16b46c13d2602c3497fabd95299f6cf2c87cbc02b630452aa3cff599c194c538125d744aa135824129698ccc
languageName: node
linkType: hard
@@ -1900,13 +1948,13 @@ __metadata:
linkType: hard
"@emotion/react@npm:^11.8.1":
- version: 11.9.0
- resolution: "@emotion/react@npm:11.9.0"
+ version: 11.9.3
+ resolution: "@emotion/react@npm:11.9.3"
dependencies:
"@babel/runtime": ^7.13.10
"@emotion/babel-plugin": ^11.7.1
- "@emotion/cache": ^11.7.1
- "@emotion/serialize": ^1.0.3
+ "@emotion/cache": ^11.9.3
+ "@emotion/serialize": ^1.0.4
"@emotion/utils": ^1.1.0
"@emotion/weak-memoize": ^0.2.5
hoist-non-react-statics: ^3.3.1
@@ -1918,27 +1966,27 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: 4ceb004f942fb7557a55ea17aad2c48c4cd48ed5a780ccdc2993e4bded2f94d7c1764bd2f4fbe53f5b26059263599cec64ff66d29447e281a58c60b39c72e5cc
+ checksum: 19bc7205e85e87cadebbe5a926d45103b836af70ab6972ea4c333c8dd01b463fc9646d4e4097a36f145a05dd4bc388739667437b990f8cf7f7f925f9610d1aa8
languageName: node
linkType: hard
-"@emotion/serialize@npm:^1.0.2, @emotion/serialize@npm:^1.0.3":
- version: 1.0.3
- resolution: "@emotion/serialize@npm:1.0.3"
+"@emotion/serialize@npm:^1.0.2, @emotion/serialize@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "@emotion/serialize@npm:1.0.4"
dependencies:
"@emotion/hash": ^0.8.0
"@emotion/memoize": ^0.7.4
"@emotion/unitless": ^0.7.5
"@emotion/utils": ^1.0.0
csstype: ^3.0.2
- checksum: 99a9053bd98c99d63af542ebee029281eeaf653e3a12e97ee79bad7330c68408104c30be6fc07a528e38bb69aba680655181744b76ec6c6f459c121cb805fac2
+ checksum: e8cc342056734e176ea837fe44035126dea174962db40852a7ced499d258c0056b0fd3c298743c446f9ba0f2647cb42dfb623b8e5783c265deb9eb20138d68e7
languageName: node
linkType: hard
-"@emotion/sheet@npm:^1.1.0":
- version: 1.1.0
- resolution: "@emotion/sheet@npm:1.1.0"
- checksum: a4b74e16a8fea1157413efe4904f5f679d724323cb605d66d20a0b98744422f5d411fca927ceb52e4de454a0a819c5273ca9496db9f011b4ecd17b9f1b212007
+"@emotion/sheet@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "@emotion/sheet@npm:1.1.1"
+ checksum: b916ac665735ef6dfda26b09f2d3493789d432d649733db9da18c4db0115e7fdadeb8d45f6490320248916bb13d978bba74c914b711ac96f659b76a5e52d5cd2
languageName: node
linkType: hard
@@ -1997,6 +2045,38 @@ __metadata:
languageName: node
linkType: hard
+"@iota-community/iota-wiki-cli@iota-community/iota-wiki-cli#v2":
+ version: 1.7.0
+ resolution: "@iota-community/iota-wiki-cli@https://github.com/iota-community/iota-wiki-cli.git#commit=ee983421e6029e4802c69c9adf812c8ab80b0c42"
+ dependencies:
+ "@babel/generator": ^7.17.9
+ "@babel/parser": ^7.17.9
+ "@babel/types": ^7.17.0
+ "@docusaurus/core": ^2.0.0-beta.20
+ "@docusaurus/plugin-content-blog": ^2.0.0-beta.20
+ "@docusaurus/plugin-content-docs": ^2.0.0-beta.20
+ "@docusaurus/plugin-content-pages": ^2.0.0-beta.20
+ "@docusaurus/theme-classic": ^2.0.0-beta.20
+ "@iota-wiki/plugin-tutorial": ^1.0.4
+ "@yarnpkg/shell": ^3.2.0
+ axios: ^0.26.1
+ clipanion: ^3.2.0-rc.10
+ ink: ^3.2.0
+ ink-multi-select: ^2.0.0
+ ink-select-input: ^4.2.1
+ ink-spinner: ^4.0.3
+ ink-text-input: ^4.0.3
+ isomorphic-git: ^1.17.2
+ plugin-image-zoom: flexanalytics/plugin-image-zoom
+ prettier: 2.6.0
+ react: ^17.0.2
+ react-dom: ^17.0.2
+ bin:
+ iota-wiki: dist/index.js
+ checksum: 2c87920005f6cb4985398cd10b1c1f6e7eeb431b00855d785e71f7dd51524a367675060a1416af5d405d93412b251e73c2ca5f6a8fa82e32c9a4bddbef4eaeb5
+ languageName: node
+ linkType: hard
+
"@iota-wiki/plugin-tutorial@npm:^1.0.4":
version: 1.0.4
resolution: "@iota-wiki/plugin-tutorial@npm:1.0.4"
@@ -2027,34 +2107,55 @@ __metadata:
languageName: node
linkType: hard
+"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2":
+ version: 0.3.2
+ resolution: "@jridgewell/gen-mapping@npm:0.3.2"
+ dependencies:
+ "@jridgewell/set-array": ^1.0.1
+ "@jridgewell/sourcemap-codec": ^1.4.10
+ "@jridgewell/trace-mapping": ^0.3.9
+ checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882
+ languageName: node
+ linkType: hard
+
"@jridgewell/resolve-uri@npm:^3.0.3":
- version: 3.0.7
- resolution: "@jridgewell/resolve-uri@npm:3.0.7"
- checksum: 94f454f4cef8f0acaad85745fd3ca6cd0d62ef731cf9f952ecb89b8b2ce5e20998cd52be31311cedc5fa5b28b1708a15f3ad9df0fe1447ee4f42959b036c4b5b
+ version: 3.1.0
+ resolution: "@jridgewell/resolve-uri@npm:3.1.0"
+ checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267
languageName: node
linkType: hard
-"@jridgewell/set-array@npm:^1.0.0":
- version: 1.1.1
- resolution: "@jridgewell/set-array@npm:1.1.1"
- checksum: cc5d91e0381c347e3edee4ca90b3c292df9e6e55f29acbe0dd97de8651b4730e9ab761406fd572effa79972a0edc55647b627f8c72315e276d959508853d9bf2
+"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1":
+ version: 1.1.2
+ resolution: "@jridgewell/set-array@npm:1.1.2"
+ checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e
+ languageName: node
+ linkType: hard
+
+"@jridgewell/source-map@npm:^0.3.2":
+ version: 0.3.2
+ resolution: "@jridgewell/source-map@npm:0.3.2"
+ dependencies:
+ "@jridgewell/gen-mapping": ^0.3.0
+ "@jridgewell/trace-mapping": ^0.3.9
+ checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482
languageName: node
linkType: hard
"@jridgewell/sourcemap-codec@npm:^1.4.10":
- version: 1.4.13
- resolution: "@jridgewell/sourcemap-codec@npm:1.4.13"
- checksum: f14449096f60a5f921262322fef65ce0bbbfb778080b3b20212080bcefdeba621c43a58c27065bd536ecb4cc767b18eb9c45f15b6b98a4970139572b60603a1c
+ version: 1.4.14
+ resolution: "@jridgewell/sourcemap-codec@npm:1.4.14"
+ checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97
languageName: node
linkType: hard
-"@jridgewell/trace-mapping@npm:^0.3.9":
- version: 0.3.13
- resolution: "@jridgewell/trace-mapping@npm:0.3.13"
+"@jridgewell/trace-mapping@npm:^0.3.7, @jridgewell/trace-mapping@npm:^0.3.9":
+ version: 0.3.14
+ resolution: "@jridgewell/trace-mapping@npm:0.3.14"
dependencies:
"@jridgewell/resolve-uri": ^3.0.3
"@jridgewell/sourcemap-codec": ^1.4.10
- checksum: e38254e830472248ca10a6ed1ae75af5e8514f0680245a5e7b53bc3c030fd8691d4d3115d80595b45d3badead68269769ed47ecbbdd67db1343a11f05700e75a
+ checksum: b9537b9630ffb631aef9651a085fe361881cde1772cd482c257fe3c78c8fd5388d681f504a9c9fe1081b1c05e8f75edf55ee10fdb58d92bbaa8dbf6a7bd6b18c
languageName: node
linkType: hard
@@ -2199,15 +2300,14 @@ __metadata:
languageName: node
linkType: hard
-"@slorber/static-site-generator-webpack-plugin@npm:^4.0.4":
- version: 4.0.4
- resolution: "@slorber/static-site-generator-webpack-plugin@npm:4.0.4"
+"@slorber/static-site-generator-webpack-plugin@npm:^4.0.7":
+ version: 4.0.7
+ resolution: "@slorber/static-site-generator-webpack-plugin@npm:4.0.7"
dependencies:
- bluebird: ^3.7.1
- cheerio: ^0.22.0
eval: ^0.1.8
- webpack-sources: ^1.4.3
- checksum: b6005e5fb306347d18d6823a070f50c59f690f4814fc928b048c8cbd56d00bb19332a4f18ad5824c1af1e9d19ec8b6deb365bd4a63cfcfb062020bda65ae0319
+ p-map: ^4.0.0
+ webpack-sources: ^3.2.2
+ checksum: a1e1d8b22dd51059524993f3fdd6861db10eb950debc389e5dd650702287fa2004eace03e6bc8f25b977bd7bc01d76a50aa271cbb73c58a8ec558945d728f307
languageName: node
linkType: hard
@@ -2434,26 +2534,33 @@ __metadata:
linkType: hard
"@types/eslint-scope@npm:^3.7.3":
- version: 3.7.3
- resolution: "@types/eslint-scope@npm:3.7.3"
+ version: 3.7.4
+ resolution: "@types/eslint-scope@npm:3.7.4"
dependencies:
"@types/eslint": "*"
"@types/estree": "*"
- checksum: 6772b05e1b92003d1f295e81bc847a61f4fbe8ddab77ffa49e84ed3f9552513bdde677eb53ef167753901282857dd1d604d9f82eddb34a233495932b2dc3dc17
+ checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460
languageName: node
linkType: hard
"@types/eslint@npm:*":
- version: 8.4.2
- resolution: "@types/eslint@npm:8.4.2"
+ version: 8.4.5
+ resolution: "@types/eslint@npm:8.4.5"
dependencies:
"@types/estree": "*"
"@types/json-schema": "*"
- checksum: e81268cdeb8d64d84af649344df88f064ece0f05db62072657c976b6162ffe16f94b6480a5367d627c629272c2d86d0ee8c24f7095e98f8e743b16f98500673b
+ checksum: 428b0c971a50adb0d08621e76f21b284580a0052a31341a0e6d553f72b54cd0142d549aa1497c7e3bc56e9f6bcc27286e66e0216e1ba76d1a5ecd2279c40bc8c
languageName: node
linkType: hard
-"@types/estree@npm:*, @types/estree@npm:^0.0.51":
+"@types/estree@npm:*":
+ version: 1.0.0
+ resolution: "@types/estree@npm:1.0.0"
+ checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443
+ languageName: node
+ linkType: hard
+
+"@types/estree@npm:^0.0.51":
version: 0.0.51
resolution: "@types/estree@npm:0.0.51"
checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189
@@ -2461,13 +2568,13 @@ __metadata:
linkType: hard
"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.18":
- version: 4.17.28
- resolution: "@types/express-serve-static-core@npm:4.17.28"
+ version: 4.17.29
+ resolution: "@types/express-serve-static-core@npm:4.17.29"
dependencies:
"@types/node": "*"
"@types/qs": "*"
"@types/range-parser": "*"
- checksum: 826489811a5b371c10f02443b4ca894ffc05813bfdf2b60c224f5c18ac9a30a2e518cb9ef9fdfcaa2a1bb17f8bfa4ed1859ccdb252e879c9276271b4ee2df5a9
+ checksum: ec4194dc59276ec6dd906887fc377be0cadf4aaa4d535d9052ab9624937ef2b984a8d9da2c11c96979e21f3d9f78f1da93e767dbcec637f7f13d2e3003151145
languageName: node
linkType: hard
@@ -2548,9 +2655,9 @@ __metadata:
linkType: hard
"@types/node@npm:*":
- version: 17.0.32
- resolution: "@types/node@npm:17.0.32"
- checksum: afb05704b42032566b3da8b2d80a68883cd3b888472d1b8b4dd6c84f8fad371454f083d4e28bd30c10589187296119d92aba255638b30067afe062b5922388a5
+ version: 18.0.3
+ resolution: "@types/node@npm:18.0.3"
+ checksum: 5dec59fbbc1186c808b53df1ca717dad034dbd6a901c75f5b052c845618b531b05f27217122c6254db99529a68618e4cfc534ae3dbf4e88754e9e572df80defa
languageName: node
linkType: hard
@@ -2589,7 +2696,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/react-router-config@npm:*":
+"@types/react-router-config@npm:*, @types/react-router-config@npm:^5.0.6":
version: 5.0.6
resolution: "@types/react-router-config@npm:5.0.6"
dependencies:
@@ -2622,22 +2729,22 @@ __metadata:
linkType: hard
"@types/react-transition-group@npm:^4.4.0":
- version: 4.4.4
- resolution: "@types/react-transition-group@npm:4.4.4"
+ version: 4.4.5
+ resolution: "@types/react-transition-group@npm:4.4.5"
dependencies:
"@types/react": "*"
- checksum: 86e9ff9731798e12bc2afe0304678918769633b531dcf6397f86af81718fb7930ef8648e894eeb3718fc6eab6eb885cfb9b82a44d1d74e10951ee11ebc4643ae
+ checksum: 265f1c74061556708ffe8d15559e35c60d6c11478c9950d3735575d2c116ca69f461d85effa06d73a613eb8b73c84fd32682feb57cf7c5f9e4284021dbca25b0
languageName: node
linkType: hard
"@types/react@npm:*":
- version: 18.0.9
- resolution: "@types/react@npm:18.0.9"
+ version: 18.0.15
+ resolution: "@types/react@npm:18.0.15"
dependencies:
"@types/prop-types": "*"
"@types/scheduler": "*"
csstype: ^3.0.2
- checksum: 162364dad716d9017ee34aabf2ea37499709ebbdef70392ae1b39225985971e1a46f121efb9c5c7da92144ee1d96d4525df806a7c1c03a5db7fd31dd034ddc7a
+ checksum: e22cc388d1c145aa184787e44dc28db4789976c704cd5db475c170bb76a560eb81def5f346cfe750949bb3d43ad88822b8cbb9f19b1286e3795892a8263e7715
languageName: node
linkType: hard
@@ -2673,7 +2780,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/serve-static@npm:*":
+"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10":
version: 1.13.10
resolution: "@types/serve-static@npm:1.13.10"
dependencies:
@@ -2880,17 +2987,17 @@ __metadata:
languageName: node
linkType: hard
-"@yarnpkg/fslib@npm:^2.6.1":
- version: 2.6.1
- resolution: "@yarnpkg/fslib@npm:2.6.1"
+"@yarnpkg/fslib@npm:^2.6.2":
+ version: 2.6.2
+ resolution: "@yarnpkg/fslib@npm:2.6.2"
dependencies:
- "@yarnpkg/libzip": ^2.2.3
+ "@yarnpkg/libzip": ^2.2.4
tslib: ^1.13.0
- checksum: e3bbd796a1c586372807da07207230c89901519e53a991b95c070cae59f570ac9617368713e9e83e77c4507d602e21ce026cc15fc70eb171d3477c5bcbbbf60e
+ checksum: df5c73d399397b73b6b3bed15be7b56d5aa380270e4428aba8e67834a1994c693b03ef4b34ab6a8bb97eded4487a1f344b12dbd953040f05ab0a73fa5730a78b
languageName: node
linkType: hard
-"@yarnpkg/libzip@npm:^2.2.3":
+"@yarnpkg/libzip@npm:^2.2.4":
version: 2.2.4
resolution: "@yarnpkg/libzip@npm:2.2.4"
dependencies:
@@ -2900,22 +3007,22 @@ __metadata:
languageName: node
linkType: hard
-"@yarnpkg/parsers@npm:^2.5.0":
- version: 2.5.0
- resolution: "@yarnpkg/parsers@npm:2.5.0"
+"@yarnpkg/parsers@npm:^2.5.1":
+ version: 2.5.1
+ resolution: "@yarnpkg/parsers@npm:2.5.1"
dependencies:
js-yaml: ^3.10.0
tslib: ^1.13.0
- checksum: 02678b7b910eb653c27f0043ac5295c96f2547164959a76e529cad628c2dd48748d1eec2e5d0ee77f79c7d0536549477f203274ca0533e1b478a7f1e0689bb75
+ checksum: 42f98b8bd635add304ce392c6f600b46e40c2c4429d7b6c38b70f50b5fd6a854dd2369e0987b70546a3c8f690d280f040a885b35acfde891f5e173fc3f974277
languageName: node
linkType: hard
"@yarnpkg/shell@npm:^3.2.0":
- version: 3.2.0
- resolution: "@yarnpkg/shell@npm:3.2.0"
+ version: 3.2.2
+ resolution: "@yarnpkg/shell@npm:3.2.2"
dependencies:
- "@yarnpkg/fslib": ^2.6.1
- "@yarnpkg/parsers": ^2.5.0
+ "@yarnpkg/fslib": ^2.6.2
+ "@yarnpkg/parsers": ^2.5.1
chalk: ^3.0.0
clipanion: ^3.2.0-rc.4
cross-spawn: 7.0.3
@@ -2925,7 +3032,7 @@ __metadata:
tslib: ^1.13.0
bin:
shell: ./lib/cli.js
- checksum: c1ec5f08a3512de538534492e895db631b4a92fdf907c605ba7c7ca60477a865ee796802b96de717fcdfa6ee820183f3d2bbd9962fe5ff302ab47b39fa93592f
+ checksum: 7bb18285545ea918312fef4e4cb22a3475759f7ecddef33a4906ab3cd955ff093a26bde751c38cc7558094a30dac20601f32622c78eed913cfea130478a4dbf9
languageName: node
linkType: hard
@@ -3093,13 +3200,6 @@ __metadata:
languageName: node
linkType: hard
-"ansi-regex@npm:^2.0.0":
- version: 2.1.1
- resolution: "ansi-regex@npm:2.1.1"
- checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1
- languageName: node
- linkType: hard
-
"ansi-regex@npm:^5.0.1":
version: 5.0.1
resolution: "ansi-regex@npm:5.0.1"
@@ -3149,13 +3249,6 @@ __metadata:
languageName: node
linkType: hard
-"aproba@npm:^1.0.3":
- version: 1.2.0
- resolution: "aproba@npm:1.2.0"
- checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc
- languageName: node
- linkType: hard
-
"aproba@npm:^1.0.3 || ^2.0.0":
version: 2.0.0
resolution: "aproba@npm:2.0.0"
@@ -3173,16 +3266,6 @@ __metadata:
languageName: node
linkType: hard
-"are-we-there-yet@npm:~1.1.2":
- version: 1.1.7
- resolution: "are-we-there-yet@npm:1.1.7"
- dependencies:
- delegates: ^1.0.0
- readable-stream: ^2.0.6
- checksum: 70d251719c969b2745bfe5ddf3ebaefa846a636e90a6d5212573676af5d6670e15457761d4725731e19cbebdce42c4ab0cbedf23ab047f2a08274985aa10a3c7
- languageName: node
- linkType: hard
-
"argparse@npm:^1.0.7":
version: 1.0.10
resolution: "argparse@npm:1.0.10"
@@ -3227,13 +3310,6 @@ __metadata:
languageName: node
linkType: hard
-"array-union@npm:^3.0.1":
- version: 3.0.1
- resolution: "array-union@npm:3.0.1"
- checksum: 47b29f88258e8f37ffb93ddaa327d4308edd950b52943c172b73558afdd3fa74cfd68816ba5aa4b894242cf281fa3c6d0362ae057e4a18bddbaedbe46ebe7112
- languageName: node
- linkType: hard
-
"astral-regex@npm:^2.0.0":
version: 2.0.0
resolution: "astral-regex@npm:2.0.0"
@@ -3242,9 +3318,9 @@ __metadata:
linkType: hard
"async-lock@npm:^1.1.0":
- version: 1.3.1
- resolution: "async-lock@npm:1.3.1"
- checksum: b11aca6d74431a42f9a3010ce7e55ac18c208f389433f55c07249ccd69dc63bc77fade28957d2d36212811d80b9c067a010341fb1e3d6a819b4fb74a122c4c27
+ version: 1.3.2
+ resolution: "async-lock@npm:1.3.2"
+ checksum: d66d6163d4a5c1d09f60118d850da53394a2b8ccae28e0613a88fc33e8b0c2b3266c4f6ed0bc5c9889ad8a926fc886a3e06600775c7264289e8814e39018cd7f
languageName: node
linkType: hard
@@ -3262,7 +3338,7 @@ __metadata:
languageName: node
linkType: hard
-"autoprefixer@npm:^10.3.7, autoprefixer@npm:^10.4.5":
+"autoprefixer@npm:^10.3.7, autoprefixer@npm:^10.4.7":
version: 10.4.7
resolution: "autoprefixer@npm:10.4.7"
dependencies:
@@ -3325,15 +3401,6 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-dynamic-import-node@npm:2.3.0":
- version: 2.3.0
- resolution: "babel-plugin-dynamic-import-node@npm:2.3.0"
- dependencies:
- object.assign: ^4.1.0
- checksum: 8a8a631bb5257f1ea7efc64533640aaabadea891c4ec1bcb4a6d10f88f76f326bce88013131a24ef1716ad1046e9919ddf06b6293a863af1178d45466452809d
- languageName: node
- linkType: hard
-
"babel-plugin-dynamic-import-node@npm:^2.3.3":
version: 2.3.3
resolution: "babel-plugin-dynamic-import-node@npm:2.3.3"
@@ -3363,7 +3430,7 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-polyfill-corejs2@npm:^0.3.0":
+"babel-plugin-polyfill-corejs2@npm:^0.3.1":
version: 0.3.1
resolution: "babel-plugin-polyfill-corejs2@npm:0.3.1"
dependencies:
@@ -3376,7 +3443,7 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-polyfill-corejs3@npm:^0.5.0":
+"babel-plugin-polyfill-corejs3@npm:^0.5.2":
version: 0.5.2
resolution: "babel-plugin-polyfill-corejs3@npm:0.5.2"
dependencies:
@@ -3388,7 +3455,7 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-polyfill-regenerator@npm:^0.3.0":
+"babel-plugin-polyfill-regenerator@npm:^0.3.1":
version: 0.3.1
resolution: "babel-plugin-polyfill-regenerator@npm:0.3.1"
dependencies:
@@ -3452,13 +3519,6 @@ __metadata:
languageName: node
linkType: hard
-"bluebird@npm:^3.7.1":
- version: 3.7.2
- resolution: "bluebird@npm:3.7.2"
- checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef
- languageName: node
- linkType: hard
-
"body-parser@npm:1.20.0":
version: 1.20.0
resolution: "body-parser@npm:1.20.0"
@@ -3480,18 +3540,18 @@ __metadata:
linkType: hard
"bonjour-service@npm:^1.0.11":
- version: 1.0.12
- resolution: "bonjour-service@npm:1.0.12"
+ version: 1.0.13
+ resolution: "bonjour-service@npm:1.0.13"
dependencies:
array-flatten: ^2.1.2
dns-equal: ^1.0.0
fast-deep-equal: ^3.1.3
- multicast-dns: ^7.2.4
- checksum: 0dde8504351dcf7b7c354c73cd34625aa0aa3a1c325e054242d8a20aaba3fe11e109b0588f13620643ceedbda9b00c5e0b0e0f8e3d19f0033dc70bf96bdd39a5
+ multicast-dns: ^7.2.5
+ checksum: aee186f542e0ec095d1f7fd8194182373ea4e854eef1182a3cb90e70c958deb6945de38f1a793bb43cc51f3a0044fa7eabee05a7ecb698c446aee80f00101124
languageName: node
linkType: hard
-"boolbase@npm:^1.0.0, boolbase@npm:~1.0.0":
+"boolbase@npm:^1.0.0":
version: 1.0.0
resolution: "boolbase@npm:1.0.0"
checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0
@@ -3558,18 +3618,17 @@ __metadata:
languageName: node
linkType: hard
-"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.6, browserslist@npm:^4.18.1, browserslist@npm:^4.20.2, browserslist@npm:^4.20.3":
- version: 4.20.3
- resolution: "browserslist@npm:4.20.3"
+"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.6, browserslist@npm:^4.18.1, browserslist@npm:^4.20.2, browserslist@npm:^4.20.3, browserslist@npm:^4.21.1":
+ version: 4.21.1
+ resolution: "browserslist@npm:4.21.1"
dependencies:
- caniuse-lite: ^1.0.30001332
- electron-to-chromium: ^1.4.118
- escalade: ^3.1.1
- node-releases: ^2.0.3
- picocolors: ^1.0.0
+ caniuse-lite: ^1.0.30001359
+ electron-to-chromium: ^1.4.172
+ node-releases: ^2.0.5
+ update-browserslist-db: ^1.0.4
bin:
browserslist: cli.js
- checksum: 1e4b719ac2ca0fe235218a606e8b8ef16b8809e0973b924158c39fbc435a0b0fe43437ea52dd6ef5ad2efcb83fcb07431244e472270177814217f7c563651f7d
+ checksum: 4904a9ded0702381adc495e003e7f77970abb7f8c8b8edd9e54f026354b5a96b1bddc26e6d9a7df9f043e468ecd2fcff2c8f40fc489909a042880117c2aca8ff
languageName: node
linkType: hard
@@ -3604,9 +3663,9 @@ __metadata:
languageName: node
linkType: hard
-"cacache@npm:^16.0.2":
- version: 16.0.7
- resolution: "cacache@npm:16.0.7"
+"cacache@npm:^16.1.0":
+ version: 16.1.1
+ resolution: "cacache@npm:16.1.1"
dependencies:
"@npmcli/fs": ^2.1.0
"@npmcli/move-file": ^2.0.0
@@ -3626,7 +3685,7 @@ __metadata:
ssri: ^9.0.0
tar: ^6.1.11
unique-filename: ^1.1.1
- checksum: 2155b099b7e0f0369fb1155ca4673532ca7efe2ebdbec63acca8743580b8446b5d4fd7184626b1cb059001af77b981cdc67035c7855544d365d4f048eafca2ca
+ checksum: 488524617008b793f0249b0c4ea2c330c710ca997921376e15650cc2415a8054491ae2dee9f01382c2015602c0641f3f977faf2fa7361aa33d2637dcfb03907a
languageName: node
linkType: hard
@@ -3698,14 +3757,14 @@ __metadata:
languageName: node
linkType: hard
-"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001332, caniuse-lite@npm:^1.0.30001335":
- version: 1.0.30001339
- resolution: "caniuse-lite@npm:1.0.30001339"
- checksum: c974676c6e38692ab5a274c460557476f1d167166493249059b5595dc3166942a30bb030dd4a6f6dcbc28fb53c741b5c95fc0f82b043def296e6a49b32b68478
+"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001335, caniuse-lite@npm:^1.0.30001359":
+ version: 1.0.30001365
+ resolution: "caniuse-lite@npm:1.0.30001365"
+ checksum: 5d043006e9bd9de1ae06c0e12c31997f0ed26f889f47ea6403dc2d08f46a5bd4bf0fe1a5b1099561fc447201ddf13083f277de68829e77fd238ff2af8c05e0a6
languageName: node
linkType: hard
-"ccount@npm:^1.0.0, ccount@npm:^1.0.3":
+"ccount@npm:^1.0.0":
version: 1.1.0
resolution: "ccount@npm:1.1.0"
checksum: b335a79d0aa4308919cf7507babcfa04ac63d389ebed49dbf26990d4607c8a4713cde93cc83e707d84571ddfe1e7615dad248be9bc422ae4c188210f71b08b78
@@ -3764,55 +3823,32 @@ __metadata:
languageName: node
linkType: hard
-"cheerio-select@npm:^1.5.0":
- version: 1.6.0
- resolution: "cheerio-select@npm:1.6.0"
- dependencies:
- css-select: ^4.3.0
- css-what: ^6.0.1
- domelementtype: ^2.2.0
- domhandler: ^4.3.1
- domutils: ^2.8.0
- checksum: c64cccea5ba3af091cf876d07a8bbf81fbd616c821495d194b73829f026777a8edd17a0f760ddd5be4a213c4411c60b03d2b1f8da4a77a46c81ed596a9860b20
- languageName: node
- linkType: hard
-
-"cheerio@npm:^0.22.0":
- version: 0.22.0
- resolution: "cheerio@npm:0.22.0"
+"cheerio-select@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "cheerio-select@npm:2.1.0"
dependencies:
- css-select: ~1.2.0
- dom-serializer: ~0.1.0
- entities: ~1.1.1
- htmlparser2: ^3.9.1
- lodash.assignin: ^4.0.9
- lodash.bind: ^4.1.4
- lodash.defaults: ^4.0.1
- lodash.filter: ^4.4.0
- lodash.flatten: ^4.2.0
- lodash.foreach: ^4.3.0
- lodash.map: ^4.4.0
- lodash.merge: ^4.4.0
- lodash.pick: ^4.2.1
- lodash.reduce: ^4.4.0
- lodash.reject: ^4.4.0
- lodash.some: ^4.4.0
- checksum: b0a6cfa61eb7ae96e4cb8cfeeb14eb45bb790fa40098509268629c4cecca5b99124aabe6daa1154c497ac8def47bc3f9706cef5f0e8a6177a0c137d4bdaaf8b7
+ boolbase: ^1.0.0
+ css-select: ^5.1.0
+ css-what: ^6.1.0
+ domelementtype: ^2.3.0
+ domhandler: ^5.0.3
+ domutils: ^3.0.1
+ checksum: 843d6d479922f28a6c5342c935aff1347491156814de63c585a6eb73baf7bb4185c1b4383a1195dca0f12e3946d737c7763bcef0b9544c515d905c5c44c5308b
languageName: node
linkType: hard
-"cheerio@npm:^1.0.0-rc.10":
- version: 1.0.0-rc.10
- resolution: "cheerio@npm:1.0.0-rc.10"
+"cheerio@npm:^1.0.0-rc.12":
+ version: 1.0.0-rc.12
+ resolution: "cheerio@npm:1.0.0-rc.12"
dependencies:
- cheerio-select: ^1.5.0
- dom-serializer: ^1.3.2
- domhandler: ^4.2.0
- htmlparser2: ^6.1.0
- parse5: ^6.0.1
- parse5-htmlparser2-tree-adapter: ^6.0.1
- tslib: ^2.2.0
- checksum: ace2f9c5809737534b1320d11d48762013694fa905b4deacac81a634edac178c1b0534f79d7b1896a88ce489db6cb539f222317996b21c8b6923ce413dcc1a2f
+ cheerio-select: ^2.1.0
+ dom-serializer: ^2.0.0
+ domhandler: ^5.0.3
+ domutils: ^3.0.1
+ htmlparser2: ^8.0.1
+ parse5: ^7.0.0
+ parse5-htmlparser2-tree-adapter: ^7.0.0
+ checksum: 5d4c1b7a53cf22d3a2eddc0aff70cf23cbb30d01a4c79013e703a012475c02461aa1fcd99127e8d83a02216386ed6942b2c8103845fd0812300dd199e6e7e054
languageName: node
linkType: hard
@@ -3970,10 +4006,10 @@ __metadata:
languageName: node
linkType: hard
-"clsx@npm:^1.1.1":
- version: 1.1.1
- resolution: "clsx@npm:1.1.1"
- checksum: ff052650329773b9b245177305fc4c4dc3129f7b2be84af4f58dc5defa99538c61d4207be7419405a5f8f3d92007c954f4daba5a7b74e563d5de71c28c830063
+"clsx@npm:^1.1.1, clsx@npm:^1.2.0":
+ version: 1.2.1
+ resolution: "clsx@npm:1.2.1"
+ checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12
languageName: node
linkType: hard
@@ -3986,13 +4022,6 @@ __metadata:
languageName: node
linkType: hard
-"code-point-at@npm:^1.0.0":
- version: 1.1.0
- resolution: "code-point-at@npm:1.1.0"
- checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681
- languageName: node
- linkType: hard
-
"collapse-white-space@npm:^1.0.2":
version: 1.0.6
resolution: "collapse-white-space@npm:1.0.6"
@@ -4069,9 +4098,9 @@ __metadata:
linkType: hard
"colorette@npm:^2.0.10":
- version: 2.0.16
- resolution: "colorette@npm:2.0.16"
- checksum: cd55596a3a2d1071c1a28eee7fd8a5387593ff1bd10a3e8d0a6221499311fe34a9f2b9272d77c391e0e003dcdc8934fb2f8d106e7ef1f7516f8060c901d41a27
+ version: 2.0.19
+ resolution: "colorette@npm:2.0.19"
+ checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427
languageName: node
linkType: hard
@@ -4169,10 +4198,10 @@ __metadata:
languageName: node
linkType: hard
-"connect-history-api-fallback@npm:^1.6.0":
- version: 1.6.0
- resolution: "connect-history-api-fallback@npm:1.6.0"
- checksum: 804ca2be28c999032ecd37a9f71405e5d7b7a4b3defcebbe41077bb8c5a0a150d7b59f51dcc33b2de30bc7e217a31d10f8cfad27e8e74c2fc7655eeba82d6e7e
+"connect-history-api-fallback@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "connect-history-api-fallback@npm:2.0.0"
+ checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68
languageName: node
linkType: hard
@@ -4183,7 +4212,7 @@ __metadata:
languageName: node
linkType: hard
-"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0, console-control-strings@npm:~1.1.0":
+"console-control-strings@npm:^1.1.0":
version: 1.1.0
resolution: "console-control-strings@npm:1.1.0"
checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed
@@ -4257,43 +4286,43 @@ __metadata:
languageName: node
linkType: hard
-"copy-webpack-plugin@npm:^10.2.4":
- version: 10.2.4
- resolution: "copy-webpack-plugin@npm:10.2.4"
+"copy-webpack-plugin@npm:^11.0.0":
+ version: 11.0.0
+ resolution: "copy-webpack-plugin@npm:11.0.0"
dependencies:
- fast-glob: ^3.2.7
+ fast-glob: ^3.2.11
glob-parent: ^6.0.1
- globby: ^12.0.2
+ globby: ^13.1.1
normalize-path: ^3.0.0
schema-utils: ^4.0.0
serialize-javascript: ^6.0.0
peerDependencies:
webpack: ^5.1.0
- checksum: 87f0f4530ab3e58ec06a7c3182028dfd8cc85b045a0d18c4464caafeae1ed1141c2aad6eae37e100a74a72b69dc48c93af358c07038b7a22f490a678c0ab142e
+ checksum: df4f8743f003a29ee7dd3d9b1789998a3a99051c92afb2ba2203d3dacfa696f4e757b275560fafb8f206e520a0aa78af34b990324a0e36c2326cefdeef3ca82e
languageName: node
linkType: hard
"core-js-compat@npm:^3.21.0, core-js-compat@npm:^3.22.1":
- version: 3.22.5
- resolution: "core-js-compat@npm:3.22.5"
+ version: 3.23.4
+ resolution: "core-js-compat@npm:3.23.4"
dependencies:
- browserslist: ^4.20.3
+ browserslist: ^4.21.1
semver: 7.0.0
- checksum: 5547a51f403faad26f5855ba60e642c51f4acff549becfdd8a327b6db823785b375360f7a03b30978170af2a66f9fbde0fca0f8bb15a28a8c6dbe7df84d8af32
+ checksum: cf9d48496576ed297b00ff78ef64f6da01681fa810e3e3283034d097be9de4ff113151eb5da1f40212fc1dc882749156db9b311d8dbad289e0e9172d05cc83de
languageName: node
linkType: hard
"core-js-pure@npm:^3.20.2":
- version: 3.22.5
- resolution: "core-js-pure@npm:3.22.5"
- checksum: 923c7391f20dcd6fae861a2c9cb92caa0158b9d65fd8ff24eb273814cdf84df4b409fe4cf2c3fcff609daa1a408c64ba752c28f030d8bc31ac1128de8616ad1a
+ version: 3.23.4
+ resolution: "core-js-pure@npm:3.23.4"
+ checksum: 54afc79508ded6c1b59aacdf32fc1621f0246b10401e6228e7b145fe3960335c8863580e6ce8560bb8004aa69ea2328a5baa11d2e15965b6333b8fd839657601
languageName: node
linkType: hard
-"core-js@npm:^3.22.3":
- version: 3.22.5
- resolution: "core-js@npm:3.22.5"
- checksum: d3d7495d7cdde01cf9ac3debc5087afc3c8dd56baa4953d9ccbb46b1a80872c79d14c1e6343c664c9c0fade288ab44c70b54dd34f879a71e6eff6fffeab84e00
+"core-js@npm:^3.23.3":
+ version: 3.23.4
+ resolution: "core-js@npm:3.23.4"
+ checksum: 1317591dbd4a6dc357b68da324dfab52ffecc0193fe577c55bedc058af3ec96a47c7d68dff4dc914badf398ca120c0b58815fca3a162a497abf73166910d834c
languageName: node
linkType: hard
@@ -4357,12 +4386,12 @@ __metadata:
languageName: node
linkType: hard
-"css-declaration-sorter@npm:^6.2.2":
- version: 6.2.2
- resolution: "css-declaration-sorter@npm:6.2.2"
+"css-declaration-sorter@npm:^6.3.0":
+ version: 6.3.0
+ resolution: "css-declaration-sorter@npm:6.3.0"
peerDependencies:
postcss: ^8.0.9
- checksum: afd3aea1b763b7abb5a9d0e10e973e99520b528522be421d9ef13d4fa7ead2cd48acd85d48c0fd0e954f596da2181dafbafc176a080ab017ebd1909a8231c9b4
+ checksum: 69ce1c2e0e854c043dccbb613f15e2911e2e12dd656d18cdae831baa6a6a8f9ef0d6560c456e3b41d28835e5e013bfdf9114eeba206564b1513ea968a3633c1f
languageName: node
linkType: hard
@@ -4384,13 +4413,13 @@ __metadata:
languageName: node
linkType: hard
-"css-minimizer-webpack-plugin@npm:^3.4.1":
- version: 3.4.1
- resolution: "css-minimizer-webpack-plugin@npm:3.4.1"
+"css-minimizer-webpack-plugin@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "css-minimizer-webpack-plugin@npm:4.0.0"
dependencies:
- cssnano: ^5.0.6
- jest-worker: ^27.0.2
- postcss: ^8.3.5
+ cssnano: ^5.1.8
+ jest-worker: ^27.5.1
+ postcss: ^8.4.13
schema-utils: ^4.0.0
serialize-javascript: ^6.0.0
source-map: ^0.6.1
@@ -4405,11 +4434,11 @@ __metadata:
optional: true
esbuild:
optional: true
- checksum: 065c6c1eadb7c99267db5d04d6f3909e9968b73c4cb79ab9e4502a5fbf1a3d564cfe6f8e0bff8e4ab00d4ed233e9c3c76a4ebe0ee89150b3d9ecb064ddf1e5e9
+ checksum: 18487ee9aacdb0cc4e9fc1921f5d7a519c94203332b845b9a6d95434365d275fafff7dbfe21355347b8bbb8266078b7e60f7bac771f15eb30dfed5a29016debc
languageName: node
linkType: hard
-"css-select@npm:^4.1.3, css-select@npm:^4.3.0":
+"css-select@npm:^4.1.3":
version: 4.3.0
resolution: "css-select@npm:4.3.0"
dependencies:
@@ -4422,15 +4451,16 @@ __metadata:
languageName: node
linkType: hard
-"css-select@npm:~1.2.0":
- version: 1.2.0
- resolution: "css-select@npm:1.2.0"
+"css-select@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "css-select@npm:5.1.0"
dependencies:
- boolbase: ~1.0.0
- css-what: 2.1
- domutils: 1.5.1
- nth-check: ~1.0.1
- checksum: 607cca60d2f5c56701fe5f800bbe668b114395c503d4e4808edbbbe70b8be3c96a6407428dc0227fcbdf335b20468e6a9e7fd689185edfb57d402e1e4837c9b7
+ boolbase: ^1.0.0
+ css-what: ^6.1.0
+ domhandler: ^5.0.2
+ domutils: ^3.0.1
+ nth-check: ^2.0.1
+ checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda
languageName: node
linkType: hard
@@ -4444,14 +4474,7 @@ __metadata:
languageName: node
linkType: hard
-"css-what@npm:2.1":
- version: 2.1.3
- resolution: "css-what@npm:2.1.3"
- checksum: a52d56c591a7e1c37506d0d8c4fdef72537fb8eb4cb68711485997a88d76b5a3342b73a7c79176268f95b428596c447ad7fa3488224a6b8b532e2f1f2ee8545c
- languageName: node
- linkType: hard
-
-"css-what@npm:^6.0.1":
+"css-what@npm:^6.0.1, css-what@npm:^6.1.0":
version: 6.1.0
resolution: "css-what@npm:6.1.0"
checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe
@@ -4467,58 +4490,58 @@ __metadata:
languageName: node
linkType: hard
-"cssnano-preset-advanced@npm:^5.3.3":
- version: 5.3.3
- resolution: "cssnano-preset-advanced@npm:5.3.3"
+"cssnano-preset-advanced@npm:^5.3.8":
+ version: 5.3.8
+ resolution: "cssnano-preset-advanced@npm:5.3.8"
dependencies:
autoprefixer: ^10.3.7
- cssnano-preset-default: ^5.2.7
+ cssnano-preset-default: ^5.2.12
postcss-discard-unused: ^5.1.0
postcss-merge-idents: ^5.1.1
postcss-reduce-idents: ^5.2.0
postcss-zindex: ^5.1.0
peerDependencies:
postcss: ^8.2.15
- checksum: 01449ff538b55b772447fea5437e6be38245f5d19d985f36ee9e045753b944238f07c9f460351ecd7ee97901e807082aff78fba327b33ba18a8a3ba030dbddfc
+ checksum: ba18332d39b629393931410779b1e15f7f6019aa223fa419fad4ee9eecfa586f3f9e659acabb83a91db8998c95d91efc43d15551cfadbf8b587c5a90bf9002d9
languageName: node
linkType: hard
-"cssnano-preset-default@npm:^5.2.7":
- version: 5.2.7
- resolution: "cssnano-preset-default@npm:5.2.7"
+"cssnano-preset-default@npm:^5.2.12":
+ version: 5.2.12
+ resolution: "cssnano-preset-default@npm:5.2.12"
dependencies:
- css-declaration-sorter: ^6.2.2
+ css-declaration-sorter: ^6.3.0
cssnano-utils: ^3.1.0
postcss-calc: ^8.2.3
postcss-colormin: ^5.3.0
- postcss-convert-values: ^5.1.0
- postcss-discard-comments: ^5.1.1
+ postcss-convert-values: ^5.1.2
+ postcss-discard-comments: ^5.1.2
postcss-discard-duplicates: ^5.1.0
postcss-discard-empty: ^5.1.1
postcss-discard-overridden: ^5.1.0
- postcss-merge-longhand: ^5.1.4
- postcss-merge-rules: ^5.1.1
+ postcss-merge-longhand: ^5.1.6
+ postcss-merge-rules: ^5.1.2
postcss-minify-font-values: ^5.1.0
postcss-minify-gradients: ^5.1.1
- postcss-minify-params: ^5.1.2
- postcss-minify-selectors: ^5.2.0
+ postcss-minify-params: ^5.1.3
+ postcss-minify-selectors: ^5.2.1
postcss-normalize-charset: ^5.1.0
postcss-normalize-display-values: ^5.1.0
- postcss-normalize-positions: ^5.1.0
- postcss-normalize-repeat-style: ^5.1.0
+ postcss-normalize-positions: ^5.1.1
+ postcss-normalize-repeat-style: ^5.1.1
postcss-normalize-string: ^5.1.0
postcss-normalize-timing-functions: ^5.1.0
postcss-normalize-unicode: ^5.1.0
postcss-normalize-url: ^5.1.0
postcss-normalize-whitespace: ^5.1.1
- postcss-ordered-values: ^5.1.1
+ postcss-ordered-values: ^5.1.3
postcss-reduce-initial: ^5.1.0
postcss-reduce-transforms: ^5.1.0
postcss-svgo: ^5.1.0
postcss-unique-selectors: ^5.1.1
peerDependencies:
postcss: ^8.2.15
- checksum: 1408ce86e29756a90dafcfff162ccfd983ab31fcfdb1549875bb4cca657b0c520424ea95f88b750ea06967d5a61201de207afe0a4c5514fac90d7265358b9d3a
+ checksum: 3d6c05e7719f05c577c3123dc8f823ddc055ec5402ee8184cea1832c209a87ab11aa2aa2cba3e6f4ae6e144c1f3f5122fad1bc7c3086bc3441770f2733e03f58
languageName: node
linkType: hard
@@ -4531,16 +4554,16 @@ __metadata:
languageName: node
linkType: hard
-"cssnano@npm:^5.0.6, cssnano@npm:^5.1.7":
- version: 5.1.7
- resolution: "cssnano@npm:5.1.7"
+"cssnano@npm:^5.1.12, cssnano@npm:^5.1.8":
+ version: 5.1.12
+ resolution: "cssnano@npm:5.1.12"
dependencies:
- cssnano-preset-default: ^5.2.7
+ cssnano-preset-default: ^5.2.12
lilconfig: ^2.0.3
yaml: ^1.10.2
peerDependencies:
postcss: ^8.2.15
- checksum: d69e7e0091b7e6e43f3d61e416a54afb7a55a2a065d96d859650fa34ab5e70b3162a340fb59a8714042762f8e388fbc3cb810d478d775bcd4695d0951b625000
+ checksum: 5bc6a6195e7fe2065fbe6002dd09ce23f125956679232c823d9f28914e4ea7b72714b67c86e3b5369861253eb74c4df3079a9b839b8ddebe60e1f81d2292e224
languageName: node
linkType: hard
@@ -4554,9 +4577,9 @@ __metadata:
linkType: hard
"csstype@npm:^3.0.2":
- version: 3.0.11
- resolution: "csstype@npm:3.0.11"
- checksum: 95e56abfe9ca219ae065acb4e43f61771a03170eed919127f558dfa168240867aba7629c8d98a201a0dd06d9a5ce82686f0570031c928516c61816adbc7c877f
+ version: 3.1.0
+ resolution: "csstype@npm:3.1.0"
+ checksum: 644e986cefab86525f0b674a06889cfdbb1f117e5b7d1ce0fc55b0423ecc58807a1ea42ecc75c4f18999d14fc42d1d255f84662a45003a52bb5840e977eb2ffd
languageName: node
linkType: hard
@@ -4646,9 +4669,9 @@ __metadata:
languageName: node
linkType: hard
-"del@npm:^6.0.0":
- version: 6.0.0
- resolution: "del@npm:6.0.0"
+"del@npm:^6.1.1":
+ version: 6.1.1
+ resolution: "del@npm:6.1.1"
dependencies:
globby: ^11.0.1
graceful-fs: ^4.2.4
@@ -4658,7 +4681,7 @@ __metadata:
p-map: ^4.0.0
rimraf: ^3.0.2
slash: ^3.0.0
- checksum: 5742891627e91aaf62385714025233f4664da28bc55b6ab825649dcdea4691fed3cf329a2b1913fd2d2612e693e99e08a03c84cac7f36ef54bacac9390520192
+ checksum: 563288b73b8b19a7261c47fd21a330eeab6e2acd7c6208c49790dfd369127120dd7836cdf0c1eca216b77c94782a81507eac6b4734252d3bef2795cb366996b6
languageName: node
linkType: hard
@@ -4763,11 +4786,11 @@ __metadata:
linkType: hard
"dns-packet@npm:^5.2.2":
- version: 5.3.1
- resolution: "dns-packet@npm:5.3.1"
+ version: 5.4.0
+ resolution: "dns-packet@npm:5.4.0"
dependencies:
"@leichtgewicht/ip-codec": ^2.0.1
- checksum: 196ff74a0669126cf5fc901a5849b72f625bd7a4cb163b3f4d41fbe19ed0b017cf7674daef5b0acbd448c094fcd795e501d7066f301be428e4acecfcf3c5f336
+ checksum: a169963848e8539dfd8a19058562f9e1c15c0f82cbf76fa98942f11c46f3c74e7e7c82e3a8a5182d4c9e6ff19e21be738dbd098a876dde755d3aedd2cc730880
languageName: node
linkType: hard
@@ -4790,17 +4813,7 @@ __metadata:
languageName: node
linkType: hard
-"dom-serializer@npm:0":
- version: 0.2.2
- resolution: "dom-serializer@npm:0.2.2"
- dependencies:
- domelementtype: ^2.0.1
- entities: ^2.0.0
- checksum: 376344893e4feccab649a14ca1a46473e9961f40fe62479ea692d4fee4d9df1c00ca8654811a79c1ca7b020096987e1ca4fb4d7f8bae32c1db800a680a0e5d5e
- languageName: node
- linkType: hard
-
-"dom-serializer@npm:^1.0.1, dom-serializer@npm:^1.3.2":
+"dom-serializer@npm:^1.0.1":
version: 1.4.1
resolution: "dom-serializer@npm:1.4.1"
dependencies:
@@ -4811,39 +4824,24 @@ __metadata:
languageName: node
linkType: hard
-"dom-serializer@npm:~0.1.0":
- version: 0.1.1
- resolution: "dom-serializer@npm:0.1.1"
+"dom-serializer@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "dom-serializer@npm:2.0.0"
dependencies:
- domelementtype: ^1.3.0
- entities: ^1.1.1
- checksum: 4f6a3eff802273741931cfd3c800fab4e683236eed10628d6605f52538a6bc0ce4770f3ca2ad68a27412c103ae9b6cdaed3c0a8e20d2704192bde497bc875215
- languageName: node
- linkType: hard
-
-"domelementtype@npm:1, domelementtype@npm:^1.3.0, domelementtype@npm:^1.3.1":
- version: 1.3.1
- resolution: "domelementtype@npm:1.3.1"
- checksum: 7893da40218ae2106ec6ffc146b17f203487a52f5228b032ea7aa470e41dfe03e1bd762d0ee0139e792195efda765434b04b43cddcf63207b098f6ae44b36ad6
+ domelementtype: ^2.3.0
+ domhandler: ^5.0.2
+ entities: ^4.2.0
+ checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6
languageName: node
linkType: hard
-"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0":
+"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0":
version: 2.3.0
resolution: "domelementtype@npm:2.3.0"
checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6
languageName: node
linkType: hard
-"domhandler@npm:^2.3.0":
- version: 2.4.2
- resolution: "domhandler@npm:2.4.2"
- dependencies:
- domelementtype: 1
- checksum: 49bd70c9c784f845cd047e1dfb3611bd10891c05719acfc93f01fc726a419ed09fbe0b69f9064392d556a63fffc5a02010856cedae9368f4817146d95a97011f
- languageName: node
- linkType: hard
-
"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1":
version: 4.3.1
resolution: "domhandler@npm:4.3.1"
@@ -4853,23 +4851,12 @@ __metadata:
languageName: node
linkType: hard
-"domutils@npm:1.5.1":
- version: 1.5.1
- resolution: "domutils@npm:1.5.1"
- dependencies:
- dom-serializer: 0
- domelementtype: 1
- checksum: 800d1f9d1c2e637267dae078ff6e24461e6be1baeb52fa70f2e7e7520816c032a925997cd15d822de53ef9896abb1f35e5c439d301500a9cd6b46a395f6f6ca0
- languageName: node
- linkType: hard
-
-"domutils@npm:^1.5.1":
- version: 1.7.0
- resolution: "domutils@npm:1.7.0"
+"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
+ version: 5.0.3
+ resolution: "domhandler@npm:5.0.3"
dependencies:
- dom-serializer: 0
- domelementtype: 1
- checksum: f60a725b1f73c1ae82f4894b691601ecc6ecb68320d87923ac3633137627c7865725af813ae5d188ad3954283853bcf46779eb50304ec5d5354044569fcefd2b
+ domelementtype: ^2.3.0
+ checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c
languageName: node
linkType: hard
@@ -4884,6 +4871,17 @@ __metadata:
languageName: node
linkType: hard
+"domutils@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "domutils@npm:3.0.1"
+ dependencies:
+ dom-serializer: ^2.0.0
+ domelementtype: ^2.3.0
+ domhandler: ^5.0.1
+ checksum: 23aa7a840572d395220e173cb6263b0d028596e3950100520870a125af33ff819e6f609e1606d6f7d73bd9e7feb03bb404286e57a39063b5384c62b724d987b3
+ languageName: node
+ linkType: hard
+
"dot-case@npm:^3.0.4":
version: 3.0.4
resolution: "dot-case@npm:3.0.4"
@@ -4904,9 +4902,9 @@ __metadata:
linkType: hard
"duplexer3@npm:^0.1.4":
- version: 0.1.4
- resolution: "duplexer3@npm:0.1.4"
- checksum: c2fd6969314607d23439c583699aaa43c4100d66b3e161df55dccd731acc57d5c81a64bb4f250805fbe434ddb1d2623fee2386fb890f5886ca1298690ec53415
+ version: 0.1.5
+ resolution: "duplexer3@npm:0.1.5"
+ checksum: e677cb4c48f031ca728601d6a20bf6aed4c629d69ef9643cb89c67583d673c4ec9317cc6427501f38bd8c368d3a18f173987cc02bd99d8cf8fe3d94259a22a20
languageName: node
linkType: hard
@@ -4931,10 +4929,10 @@ __metadata:
languageName: node
linkType: hard
-"electron-to-chromium@npm:^1.4.118":
- version: 1.4.137
- resolution: "electron-to-chromium@npm:1.4.137"
- checksum: 639d7b94906efafcf363519c3698eecc44be46755a6a5cdc9088954329978866cc93fbd57e08b97290599b68d5226243d21de9fa50be416b8a5d3fa8fd42c3a0
+"electron-to-chromium@npm:^1.4.172":
+ version: 1.4.186
+ resolution: "electron-to-chromium@npm:1.4.186"
+ checksum: 9f87db963070473702c0a999dc4066fdd12abff0b2b98dfae1c7492b62fe3feb42bae64ff7fd837e4e347dab043a411e82cab64ada902726b782c60bf9fc40de
languageName: node
linkType: hard
@@ -4992,19 +4990,12 @@ __metadata:
linkType: hard
"enhanced-resolve@npm:^5.9.3":
- version: 5.9.3
- resolution: "enhanced-resolve@npm:5.9.3"
+ version: 5.10.0
+ resolution: "enhanced-resolve@npm:5.10.0"
dependencies:
graceful-fs: ^4.2.4
tapable: ^2.2.0
- checksum: 64c2dbbdd608d1a4df93b6e60786c603a1faf3b2e66dfd051d62cf4cfaeeb5e800166183685587208d62e9f7afff3f78f3d5978e32cd80125ba0c83b59a79d78
- languageName: node
- linkType: hard
-
-"entities@npm:^1.1.1, entities@npm:~1.1.1":
- version: 1.1.2
- resolution: "entities@npm:1.1.2"
- checksum: d537b02799bdd4784ffd714d000597ed168727bddf4885da887c5a491d735739029a00794f1998abbf35f3f6aeda32ef5c15010dca1817d401903a501b6d3e05
+ checksum: 0bb9830704db271610f900e8d79d70a740ea16f251263362b0c91af545576d09fe50103496606c1300a05e588372d6f9780a9bc2e30ce8ef9b827ec8f44687ff
languageName: node
linkType: hard
@@ -5022,6 +5013,13 @@ __metadata:
languageName: node
linkType: hard
+"entities@npm:^4.2.0, entities@npm:^4.3.0":
+ version: 4.3.1
+ resolution: "entities@npm:4.3.1"
+ checksum: e8f6d2bac238494b2355e90551893882d2675142be7e7bdfcb15248ed0652a630678ba0e3a8dc750693e736cb6011f504c27dabeb4cd3330560092e88b105090
+ languageName: node
+ linkType: hard
+
"env-paths@npm:^2.2.0":
version: 2.2.1
resolution: "env-paths@npm:2.2.1"
@@ -5268,7 +5266,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9":
+"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9":
version: 3.2.11
resolution: "fast-glob@npm:3.2.11"
dependencies:
@@ -5433,12 +5431,12 @@ __metadata:
linkType: hard
"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.7, follow-redirects@npm:^1.14.8":
- version: 1.15.0
- resolution: "follow-redirects@npm:1.15.0"
+ version: 1.15.1
+ resolution: "follow-redirects@npm:1.15.1"
peerDependenciesMeta:
debug:
optional: true
- checksum: eaec81c3e0ae57aae2422e38ad3539d0e7279b3a63f9681eeea319bb683dea67502c4e097136b8ce9721542b4e236e092b6b49e34e326cdd7733c274f0a3f378
+ checksum: 6aa4e3e3cdfa3b9314801a1cd192ba756a53479d9d8cca65bf4db3a3e8834e62139245cd2f9566147c8dfe2efff1700d3e6aefd103de4004a7b99985e71dd533
languageName: node
linkType: hard
@@ -5533,7 +5531,7 @@ __metadata:
languageName: node
linkType: hard
-"fs-monkey@npm:1.0.3":
+"fs-monkey@npm:^1.0.3":
version: 1.0.3
resolution: "fs-monkey@npm:1.0.3"
checksum: cf50804833f9b88a476911ae911fe50f61a98d986df52f890bd97e7262796d023698cb2309fa9b74fdd8974f04315b648748a0a8ee059e7d5257b293bfc409c0
@@ -5589,22 +5587,6 @@ __metadata:
languageName: node
linkType: hard
-"gauge@npm:~2.7.3":
- version: 2.7.4
- resolution: "gauge@npm:2.7.4"
- dependencies:
- aproba: ^1.0.3
- console-control-strings: ^1.0.0
- has-unicode: ^2.0.0
- object-assign: ^4.1.0
- signal-exit: ^3.0.0
- string-width: ^1.0.1
- strip-ansi: ^3.0.1
- wide-align: ^1.1.0
- checksum: a89b53cee65579b46832e050b5f3a79a832cc422c190de79c6b8e2e15296ab92faddde6ddf2d376875cbba2b043efa99b9e1ed8124e7365f61b04e3cee9d40ee
- languageName: node
- linkType: hard
-
"gensync@npm:^1.0.0-beta.1, gensync@npm:^1.0.0-beta.2":
version: 1.0.0-beta.2
resolution: "gensync@npm:1.0.0-beta.2"
@@ -5613,13 +5595,13 @@ __metadata:
linkType: hard
"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1":
- version: 1.1.1
- resolution: "get-intrinsic@npm:1.1.1"
+ version: 1.1.2
+ resolution: "get-intrinsic@npm:1.1.2"
dependencies:
function-bind: ^1.1.1
has: ^1.0.3
- has-symbols: ^1.0.1
- checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17
+ has-symbols: ^1.0.3
+ checksum: 252f45491f2ba88ebf5b38018020c7cc3279de54b1d67ffb70c0cdf1dfa8ab31cd56467b5d117a8b4275b7a4dde91f86766b163a17a850f036528a7b2faafb2b
languageName: node
linkType: hard
@@ -5695,30 +5677,29 @@ __metadata:
linkType: hard
"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6":
- version: 7.2.0
- resolution: "glob@npm:7.2.0"
+ version: 7.2.3
+ resolution: "glob@npm:7.2.3"
dependencies:
fs.realpath: ^1.0.0
inflight: ^1.0.4
inherits: 2
- minimatch: ^3.0.4
+ minimatch: ^3.1.1
once: ^1.3.0
path-is-absolute: ^1.0.0
- checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134
+ checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133
languageName: node
linkType: hard
"glob@npm:^8.0.1":
- version: 8.0.1
- resolution: "glob@npm:8.0.1"
+ version: 8.0.3
+ resolution: "glob@npm:8.0.3"
dependencies:
fs.realpath: ^1.0.0
inflight: ^1.0.4
inherits: 2
minimatch: ^5.0.1
once: ^1.3.0
- path-is-absolute: ^1.0.0
- checksum: 7ac782f3ef1c08005884447479e68ceb0ad56997eb2003e1e9aefae71bad3cb48eb7c49190d3d6736f2ffcd8af4985d53a46831b3d5e0052cc5756822a38b61a
+ checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5
languageName: node
linkType: hard
@@ -5772,17 +5753,16 @@ __metadata:
languageName: node
linkType: hard
-"globby@npm:^12.0.2":
- version: 12.2.0
- resolution: "globby@npm:12.2.0"
+"globby@npm:^13.1.1":
+ version: 13.1.2
+ resolution: "globby@npm:13.1.2"
dependencies:
- array-union: ^3.0.1
dir-glob: ^3.0.1
- fast-glob: ^3.2.7
- ignore: ^5.1.9
+ fast-glob: ^3.2.11
+ ignore: ^5.2.0
merge2: ^1.4.1
slash: ^4.0.0
- checksum: 2539379a7fff3473d3e7c68b4540ba38f36970f43f760e36e301515d5cb98a0c5736554957d90390906bee632327beb2f9518d1acd6911f61e436db11b0da5b5
+ checksum: c148fcda0c981f00fb434bb94ca258f0a9d23cedbde6fb3f37098e1abde5b065019e2c63fe2aa2fad4daf2b54bf360b4d0423d85fb3a63d09ed75a2837d4de0f
languageName: node
linkType: hard
@@ -5790,7 +5770,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "goshimmer@workspace:."
dependencies:
- iota-wiki-cli: "iota-community/iota-wiki-cli#v2"
+ "@iota-community/iota-wiki-cli": "iota-community/iota-wiki-cli#v2"
languageName: unknown
linkType: soft
@@ -5871,14 +5851,14 @@ __metadata:
languageName: node
linkType: hard
-"has-symbols@npm:^1.0.1":
+"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.3":
version: 1.0.3
resolution: "has-symbols@npm:1.0.3"
checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410
languageName: node
linkType: hard
-"has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1":
+"has-unicode@npm:^2.0.1":
version: 2.0.1
resolution: "has-unicode@npm:2.0.1"
checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400
@@ -5916,19 +5896,6 @@ __metadata:
languageName: node
linkType: hard
-"hast-util-from-parse5@npm:^5.0.0":
- version: 5.0.3
- resolution: "hast-util-from-parse5@npm:5.0.3"
- dependencies:
- ccount: ^1.0.3
- hastscript: ^5.0.0
- property-information: ^5.0.0
- web-namespaces: ^1.1.2
- xtend: ^4.0.1
- checksum: 31ecd040dd03bda38b8efbcb93ed95b19619bc8548da19973b6cdbb36302bc54c84662be345e6a4f3a53cf8b33956b502916e349871dc095802ca39cfe55040a
- languageName: node
- linkType: hard
-
"hast-util-from-parse5@npm:^6.0.0":
version: 6.0.1
resolution: "hast-util-from-parse5@npm:6.0.1"
@@ -5981,18 +5948,6 @@ __metadata:
languageName: node
linkType: hard
-"hastscript@npm:^5.0.0":
- version: 5.1.2
- resolution: "hastscript@npm:5.1.2"
- dependencies:
- comma-separated-tokens: ^1.0.0
- hast-util-parse-selector: ^2.0.0
- property-information: ^5.0.0
- space-separated-tokens: ^1.0.0
- checksum: 662321af446f09c76d67af31d05823f382ce1e6c007828dc77f899f310cea682c00216b67c317a4ebe7f0c05e50552c4810d214e6ed4e95388f7b7d7fc93158f
- languageName: node
- linkType: hard
-
"hastscript@npm:^6.0.0":
version: 6.0.0
resolution: "hastscript@npm:6.0.0"
@@ -6103,20 +6058,6 @@ __metadata:
languageName: node
linkType: hard
-"htmlparser2@npm:^3.9.1":
- version: 3.10.1
- resolution: "htmlparser2@npm:3.10.1"
- dependencies:
- domelementtype: ^1.3.1
- domhandler: ^2.3.0
- domutils: ^1.5.1
- entities: ^1.1.1
- inherits: ^2.0.1
- readable-stream: ^3.1.1
- checksum: 6875f7dd875aa10be17d9b130e3738cd8ed4010b1f2edaf4442c82dfafe9d9336b155870dcc39f38843cbf7fef5e4fcfdf0c4c1fd4db3a1b91a1e0ee8f6c3475
- languageName: node
- linkType: hard
-
"htmlparser2@npm:^6.1.0":
version: 6.1.0
resolution: "htmlparser2@npm:6.1.0"
@@ -6129,6 +6070,18 @@ __metadata:
languageName: node
linkType: hard
+"htmlparser2@npm:^8.0.1":
+ version: 8.0.1
+ resolution: "htmlparser2@npm:8.0.1"
+ dependencies:
+ domelementtype: ^2.3.0
+ domhandler: ^5.0.2
+ domutils: ^3.0.1
+ entities: ^4.3.0
+ checksum: 06d5c71e8313597722bc429ae2a7a8333d77bd3ab07ccb916628384b37332027b047f8619448d8f4a3312b6609c6ea3302a4e77435d859e9e686999e6699ca39
+ languageName: node
+ linkType: hard
+
"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0":
version: 4.1.0
resolution: "http-cache-semantics@npm:4.1.0"
@@ -6169,9 +6122,9 @@ __metadata:
linkType: hard
"http-parser-js@npm:>=0.5.1":
- version: 0.5.6
- resolution: "http-parser-js@npm:0.5.6"
- checksum: 8a92f6782542211c77936104ea1eca3c86a95420eb286b100f6421630f29d8f94fd4cc7a245df8e078791d86cd9a237091094440ffb0cd1b44a3f85bfbf539fa
+ version: 0.5.8
+ resolution: "http-parser-js@npm:0.5.8"
+ checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d
languageName: node
linkType: hard
@@ -6275,7 +6228,7 @@ __metadata:
languageName: node
linkType: hard
-"ignore@npm:^5.1.4, ignore@npm:^5.1.9, ignore@npm:^5.2.0":
+"ignore@npm:^5.1.4, ignore@npm:^5.2.0":
version: 5.2.0
resolution: "ignore@npm:5.2.0"
checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77
@@ -6283,20 +6236,20 @@ __metadata:
linkType: hard
"image-size@npm:^1.0.1":
- version: 1.0.1
- resolution: "image-size@npm:1.0.1"
+ version: 1.0.2
+ resolution: "image-size@npm:1.0.2"
dependencies:
queue: 6.0.2
bin:
image-size: bin/image-size.js
- checksum: ffa74672dc7a1b6529c66255adbfe4e7865408004db88ed100855816f03175494ec21ef9dad199b8685b5b194996ebe83ab27803af152adb66a301172fdd622d
+ checksum: 01745fdb47f87cecf538e69c63f9adc5bfab30a345345c2de91105f3afbd1bfcfba1256af02bf3323077b33b0004469a837e077bf0cbb9c907e9c1e9e7547585
languageName: node
linkType: hard
"immer@npm:^9.0.7":
- version: 9.0.13
- resolution: "immer@npm:9.0.13"
- checksum: cd3b82d4f4e9ad61879ab27071855224665fd8b5893ecc42a267f8965a7f75bcceae24e47244c826768124e95a3ae0a4a15a0dfd034a9efae4298936e162c7d7
+ version: 9.0.15
+ resolution: "immer@npm:9.0.15"
+ checksum: 92e3d63e810e3c3c2bb61b70c45443e37ef983ad12924e3edaf03725ae5979618f5b473439bb3bb4a8c4769f25132f18dec10ea15c40f0b20da5691ff96ff611
languageName: node
linkType: hard
@@ -6338,10 +6291,10 @@ __metadata:
languageName: node
linkType: hard
-"infima@npm:0.2.0-alpha.39":
- version: 0.2.0-alpha.39
- resolution: "infima@npm:0.2.0-alpha.39"
- checksum: 707517ba05e5240812c9f80135167fdd6a74e349ba8faae1722da3fe258cc00a7ece0ffefb0347183e7bef33f6d1aa3588650361f5e073cdec93c9b58bcaf331
+"infima@npm:0.2.0-alpha.41":
+ version: 0.2.0-alpha.41
+ resolution: "infima@npm:0.2.0-alpha.41"
+ checksum: 230d83d256391dbd33c1cf86e370df684ee37cfe81693ca5a467d6b23b7276d53891b871edd0d086c46995fe56b826d9e848db78b845c33e0845cf545b0b3206
languageName: node
linkType: hard
@@ -6494,37 +6447,6 @@ __metadata:
languageName: node
linkType: hard
-"iota-wiki-cli@iota-community/iota-wiki-cli#v2":
- version: 1.7.0
- resolution: "iota-wiki-cli@https://github.com/iota-community/iota-wiki-cli.git#commit=ef2f73d6464205353a1660413a667b6318f378a7"
- dependencies:
- "@babel/generator": ^7.17.9
- "@babel/parser": ^7.17.9
- "@babel/types": ^7.17.0
- "@docusaurus/core": ^2.0.0-beta.20
- "@docusaurus/plugin-content-blog": ^2.0.0-beta.20
- "@docusaurus/plugin-content-docs": ^2.0.0-beta.20
- "@docusaurus/plugin-content-pages": ^2.0.0-beta.20
- "@docusaurus/theme-classic": ^2.0.0-beta.20
- "@iota-wiki/plugin-tutorial": ^1.0.4
- "@yarnpkg/shell": ^3.2.0
- axios: ^0.26.1
- clipanion: ^3.2.0-rc.10
- ink: ^3.2.0
- ink-multi-select: ^2.0.0
- ink-select-input: ^4.2.1
- ink-spinner: ^4.0.3
- ink-text-input: ^4.0.3
- isomorphic-git: ^1.17.2
- plugin-image-zoom: flexanalytics/plugin-image-zoom
- react: ^17.0.2
- react-dom: ^17.0.2
- bin:
- iota-wiki: dist/index.js
- checksum: 346cdf5c237e251e35d08a77385e690f118fa4aa20fbb7beb450210c43f564100dabe06cf516b7706c18ed967d50ac7c2e658269944874d7a548d1f2b8f837a1
- languageName: node
- linkType: hard
-
"ip@npm:^1.1.5":
version: 1.1.8
resolution: "ip@npm:1.1.8"
@@ -6604,7 +6526,7 @@ __metadata:
languageName: node
linkType: hard
-"is-core-module@npm:^2.8.1":
+"is-core-module@npm:^2.9.0":
version: 2.9.0
resolution: "is-core-module@npm:2.9.0"
dependencies:
@@ -6643,15 +6565,6 @@ __metadata:
languageName: node
linkType: hard
-"is-fullwidth-code-point@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-fullwidth-code-point@npm:1.0.0"
- dependencies:
- number-is-nan: ^1.0.0
- checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57
- languageName: node
- linkType: hard
-
"is-fullwidth-code-point@npm:^3.0.0":
version: 3.0.0
resolution: "is-fullwidth-code-point@npm:3.0.0"
@@ -6844,8 +6757,8 @@ __metadata:
linkType: hard
"isomorphic-git@npm:^1.17.2":
- version: 1.17.2
- resolution: "isomorphic-git@npm:1.17.2"
+ version: 1.18.3
+ resolution: "isomorphic-git@npm:1.18.3"
dependencies:
async-lock: ^1.1.0
clean-git-ref: ^2.0.1
@@ -6860,11 +6773,11 @@ __metadata:
simple-get: ^4.0.1
bin:
isogit: cli.cjs
- checksum: b23ee00859f5d7057528932bbf52763ec1fb3ef8e07b26874fd39b04fb95144b66d7caf5a3436dc1c18c74b03ea6416be4f2624d202fcf1cd5bc87abf38a4065
+ checksum: ebc80777be548a8605a06338fe8622993943f819f0c7aec748cd4d75bf94bd1a68796bef159c1e8b46e6d37bde240c26f58acd04cd2e6a4c3899f27fd02729fb
languageName: node
linkType: hard
-"jest-worker@npm:^27.0.2, jest-worker@npm:^27.4.5":
+"jest-worker@npm:^27.4.5, jest-worker@npm:^27.5.1":
version: 27.5.1
resolution: "jest-worker@npm:27.5.1"
dependencies:
@@ -7033,9 +6946,9 @@ __metadata:
linkType: hard
"lilconfig@npm:^2.0.3":
- version: 2.0.5
- resolution: "lilconfig@npm:2.0.5"
- checksum: f7bb9e42656f06930ad04e583026f087508ae408d3526b8b54895e934eb2a966b7aafae569656f2c79a29fe6d779b3ec44ba577e80814734c8655d6f71cdf2d1
+ version: 2.0.6
+ resolution: "lilconfig@npm:2.0.6"
+ checksum: 40a3cd72f103b1be5975f2ac1850810b61d4053e20ab09be8d3aeddfe042187e1ba70b4651a7e70f95efa1642e7dc8b2ae395b317b7d7753b241b43cef7c0f7d
languageName: node
linkType: hard
@@ -7099,20 +7012,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.assignin@npm:^4.0.9":
- version: 4.2.0
- resolution: "lodash.assignin@npm:4.2.0"
- checksum: 4b55bc1d65ccd7648fdba8a4316d10546929bf0beb5950830d86c559948cf170f0e65b77c95e66b45b511b85a31161714de8b2008d2537627ef3c7759afe36a6
- languageName: node
- linkType: hard
-
-"lodash.bind@npm:^4.1.4":
- version: 4.2.1
- resolution: "lodash.bind@npm:4.2.1"
- checksum: cf0e41de2fca7704fc0adadc00f7fc871f8cf428990972f072136e4cd153c4d42d88c1418218121380914021c5547be05e4252e61f6280c736a2195cc8b6f4e5
- languageName: node
- linkType: hard
-
"lodash.debounce@npm:^4.0.8":
version: 4.0.8
resolution: "lodash.debounce@npm:4.0.8"
@@ -7120,34 +7019,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.defaults@npm:^4.0.1":
- version: 4.2.0
- resolution: "lodash.defaults@npm:4.2.0"
- checksum: 84923258235592c8886e29de5491946ff8c2ae5c82a7ac5cddd2e3cb697e6fbdfbbb6efcca015795c86eec2bb953a5a2ee4016e3735a3f02720428a40efbb8f1
- languageName: node
- linkType: hard
-
-"lodash.filter@npm:^4.4.0":
- version: 4.6.0
- resolution: "lodash.filter@npm:4.6.0"
- checksum: f21d245d24818e15b560cb6cadc8404a1bf98bd87d037e5e51858aad57ca2b9db64d87e450a23c8f72dd2c66968efd09b034055ce86d93eef4a4eb6f1bbaf100
- languageName: node
- linkType: hard
-
-"lodash.flatten@npm:^4.2.0":
- version: 4.4.0
- resolution: "lodash.flatten@npm:4.4.0"
- checksum: 0ac34a393d4b795d4b7421153d27c13ae67e08786c9cbb60ff5b732210d46f833598eee3fb3844bb10070e8488efe390ea53bb567377e0cb47e9e630bf0811cb
- languageName: node
- linkType: hard
-
-"lodash.foreach@npm:^4.3.0":
- version: 4.5.0
- resolution: "lodash.foreach@npm:4.5.0"
- checksum: a940386b158ca0d62994db41fc16529eb8ae67138f29ced38e91f912cb5435d1b0ed34b18e6f7b9ddfc32ab676afc6dfec60d1e22633d8e3e4b33413402ab4ad
- languageName: node
- linkType: hard
-
"lodash.isequal@npm:^4.5.0":
version: 4.5.0
resolution: "lodash.isequal@npm:4.5.0"
@@ -7155,13 +7026,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.map@npm:^4.4.0":
- version: 4.6.0
- resolution: "lodash.map@npm:4.6.0"
- checksum: 7369a41d7d24d15ce3bbd02a7faa3a90f6266c38184e64932571b9b21b758bd10c04ffd117d1859be1a44156f29b94df5045eff172bf8a97fddf68bf1002d12f
- languageName: node
- linkType: hard
-
"lodash.memoize@npm:^4.1.2":
version: 4.1.2
resolution: "lodash.memoize@npm:4.1.2"
@@ -7169,48 +7033,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.merge@npm:^4.4.0":
- version: 4.6.2
- resolution: "lodash.merge@npm:4.6.2"
- checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005
- languageName: node
- linkType: hard
-
-"lodash.pick@npm:^4.2.1":
- version: 4.4.0
- resolution: "lodash.pick@npm:4.4.0"
- checksum: 2c36cab7da6b999a20bd3373b40e31a3ef81fa264f34a6979c852c5bc8ac039379686b27380f0cb8e3781610844fafec6949c6fbbebc059c98f8fa8570e3675f
- languageName: node
- linkType: hard
-
-"lodash.reduce@npm:^4.4.0":
- version: 4.6.0
- resolution: "lodash.reduce@npm:4.6.0"
- checksum: 81f2a1045440554f8427f895ef479f1de5c141edd7852dde85a894879312801efae0295116e5cf830c531c1a51cdab8f3628c3ad39fa21a9874bb9158d9ea075
- languageName: node
- linkType: hard
-
-"lodash.reject@npm:^4.4.0":
- version: 4.6.0
- resolution: "lodash.reject@npm:4.6.0"
- checksum: 730acc78d29ab0a60e0f3cd87bbfe9071625a835791ef66daac7a405c43ec21209fd795fdf9b7485aecead4869f645801bd65c27b9acadce80dee26393793111
- languageName: node
- linkType: hard
-
-"lodash.some@npm:^4.4.0":
- version: 4.6.0
- resolution: "lodash.some@npm:4.6.0"
- checksum: 4469e76a389446d1166a29f844fb21398c36060d00258ce799710e046c55ed3c1af150c31b4856504e252bc813ba3fdcb6f255c490d9846738dd363a44665322
- languageName: node
- linkType: hard
-
-"lodash.sortby@npm:^4.7.0":
- version: 4.7.0
- resolution: "lodash.sortby@npm:4.7.0"
- checksum: db170c9396d29d11fe9a9f25668c4993e0c1331bcb941ddbd48fb76f492e732add7f2a47cfdf8e9d740fa59ac41bbfaf931d268bc72aab3ab49e9f89354d718c
- languageName: node
- linkType: hard
-
"lodash.uniq@npm:4.5.0, lodash.uniq@npm:^4.5.0":
version: 4.5.0
resolution: "lodash.uniq@npm:4.5.0"
@@ -7269,9 +7091,9 @@ __metadata:
linkType: hard
"lru-cache@npm:^7.7.1":
- version: 7.10.1
- resolution: "lru-cache@npm:7.10.1"
- checksum: e8b190d71ed0fcd7b29c71a3e9b01f851c92d1ef8865ff06b5581ca991db1e5e006920ed4da8b56da1910664ed51abfd76c46fb55e82ac252ff6c970ff910d72
+ version: 7.12.0
+ resolution: "lru-cache@npm:7.12.0"
+ checksum: fdb62262978393df7a4bd46a072bc5c3808c50ca5a347a82bb9459410efd841b7bae50655c3cf9004c70d12c756cf6d018f6bff155a16cdde9eba9a82899b5eb
languageName: node
linkType: hard
@@ -7285,11 +7107,11 @@ __metadata:
linkType: hard
"make-fetch-happen@npm:^10.0.3":
- version: 10.1.3
- resolution: "make-fetch-happen@npm:10.1.3"
+ version: 10.1.8
+ resolution: "make-fetch-happen@npm:10.1.8"
dependencies:
agentkeepalive: ^4.2.1
- cacache: ^16.0.2
+ cacache: ^16.1.0
http-cache-semantics: ^4.1.0
http-proxy-agent: ^5.0.0
https-proxy-agent: ^5.0.0
@@ -7302,9 +7124,9 @@ __metadata:
minipass-pipeline: ^1.2.4
negotiator: ^0.6.3
promise-retry: ^2.0.1
- socks-proxy-agent: ^6.1.1
+ socks-proxy-agent: ^7.0.0
ssri: ^9.0.0
- checksum: 14b9bc5fb65a1a1f53b4579c947d1ebdb18db71eb0b35a2eab612e9642a14127917528fe4ffb2c37aaa0d27dfd7507e4044e6e2e47b43985e8fa18722f535b8f
+ checksum: 5fe9fd9da5368a8a4fe9a3ea5b9aa15f1e91c9ab703cd9027a6b33840ecc8a57c182fbe1c767c139330a88c46a448b1f00da5e32065cec373aff2450b3da54ee
languageName: node
linkType: hard
@@ -7384,12 +7206,12 @@ __metadata:
languageName: node
linkType: hard
-"memfs@npm:^3.1.2, memfs@npm:^3.4.1":
- version: 3.4.1
- resolution: "memfs@npm:3.4.1"
+"memfs@npm:^3.1.2, memfs@npm:^3.4.3":
+ version: 3.4.7
+ resolution: "memfs@npm:3.4.7"
dependencies:
- fs-monkey: 1.0.3
- checksum: 6d2f49d447d1be24ff9c747618933784eeb059189bc6a0d77b7a51c7daf06e2d3a74674a2e2ff1520e2c312bf91e719ed37144cf05087379b3ba0aef0b6aa062
+ fs-monkey: ^1.0.3
+ checksum: fab88266dc576dc4999e38bdf531d703fb798affac2e0dd3fc17470878486844027b2766008ba80c0103b443f52cf9068a5c00f4e1ecf04106f4b29c11855822
languageName: node
linkType: hard
@@ -7513,14 +7335,14 @@ __metadata:
languageName: node
linkType: hard
-"mini-css-extract-plugin@npm:^2.6.0":
- version: 2.6.0
- resolution: "mini-css-extract-plugin@npm:2.6.0"
+"mini-css-extract-plugin@npm:^2.6.1":
+ version: 2.6.1
+ resolution: "mini-css-extract-plugin@npm:2.6.1"
dependencies:
schema-utils: ^4.0.0
peerDependencies:
webpack: ^5.0.0
- checksum: ea73bd66558de7a37db094fe68fa130e7a725ab15f880ff8467a75d9c4c2f1576d20720088ea22af9922a94b8600bbfef0c6acaf10d12a32a9bd20a90ba3c35f
+ checksum: df60840404878c4832b4104799fd29c5a89b06b1e377956c8d4a5729efe0ef301a52e5087d6f383871df5e69a8445922a0ae635c11abf412d7645a7096d0e973
languageName: node
linkType: hard
@@ -7540,7 +7362,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:^3.0.4":
+"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -7550,11 +7372,11 @@ __metadata:
linkType: hard
"minimatch@npm:^5.0.1":
- version: 5.0.1
- resolution: "minimatch@npm:5.0.1"
+ version: 5.1.0
+ resolution: "minimatch@npm:5.1.0"
dependencies:
brace-expansion: ^2.0.1
- checksum: b34b98463da4754bc526b244d680c69d4d6089451ebe512edaf6dd9eeed0279399cfa3edb19233513b8f830bf4bfcad911dddcdf125e75074100d52f724774f0
+ checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90
languageName: node
linkType: hard
@@ -7626,11 +7448,11 @@ __metadata:
linkType: hard
"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6":
- version: 3.1.6
- resolution: "minipass@npm:3.1.6"
+ version: 3.3.4
+ resolution: "minipass@npm:3.3.4"
dependencies:
yallist: ^4.0.0
- checksum: 57a04041413a3531a65062452cb5175f93383ef245d6f4a2961d34386eb9aa8ac11ac7f16f791f5e8bbaf1dfb1ef01596870c88e8822215db57aa591a5bb0a77
+ checksum: 5d95a7738c54852ba78d484141e850c792e062666a2d0c681a5ac1021275beb7e1acb077e59f9523ff1defb80901aea4e30fac10ded9a20a25d819a42916ef1b
languageName: node
linkType: hard
@@ -7661,9 +7483,9 @@ __metadata:
linkType: hard
"mrmime@npm:^1.0.0":
- version: 1.0.0
- resolution: "mrmime@npm:1.0.0"
- checksum: 2c72a40942af7c53bc97d1e9e9c5cb0e6541d18f736811c3a1b46fa2a2b2362480d687daa8ae8372523acaacd82426a4f7ce34b0bf1825ea83b3983e8cb91afd
+ version: 1.0.1
+ resolution: "mrmime@npm:1.0.1"
+ checksum: cc979da44bbbffebaa8eaf7a45117e851f2d4cb46a3ada6ceb78130466a04c15a0de9a9ce1c8b8ba6f6e1b8618866b1352992bf1757d241c0ddca558b9f28a77
languageName: node
linkType: hard
@@ -7688,19 +7510,19 @@ __metadata:
languageName: node
linkType: hard
-"multicast-dns@npm:^7.2.4":
- version: 7.2.4
- resolution: "multicast-dns@npm:7.2.4"
+"multicast-dns@npm:^7.2.5":
+ version: 7.2.5
+ resolution: "multicast-dns@npm:7.2.5"
dependencies:
dns-packet: ^5.2.2
thunky: ^1.0.2
bin:
multicast-dns: cli.js
- checksum: 45a78628a8f26479c4018122d689a8b22aff034699a1913dac0b9891e4111162b3222c85bba642d624270a90e51129607f1e41aa701e0108cc974246bc9fe828
+ checksum: 00b8a57df152d4cd0297946320a94b7c3cdf75a46a2247f32f958a8927dea42958177f9b7fdae69fab2e4e033fb3416881af1f5e9055a3e1542888767139e2fb
languageName: node
linkType: hard
-"nanoid@npm:^3.3.3":
+"nanoid@npm:^3.3.4":
version: 3.3.4
resolution: "nanoid@npm:3.3.4"
bin:
@@ -7741,20 +7563,20 @@ __metadata:
linkType: hard
"node-abi@npm:^3.3.0":
- version: 3.15.0
- resolution: "node-abi@npm:3.15.0"
+ version: 3.22.0
+ resolution: "node-abi@npm:3.22.0"
dependencies:
semver: ^7.3.5
- checksum: 8fb0374d11f4d02beaacfedf5e536006f0c5f4c479cd2ff6cfda39b0a8f1f9230dbac865f80e98f030dae5ae8e197806b8683547dad1b79af16246e32a441e24
+ checksum: ad76823920780de39b9712b10c8e5ee424d573b74720b9eeef9ce6523d587f114787aefeabbd34d7a861f9cfab9ac131e1a149243470bb79d6eb5d414a3fa58e
languageName: node
linkType: hard
-"node-addon-api@npm:^4.3.0":
- version: 4.3.0
- resolution: "node-addon-api@npm:4.3.0"
+"node-addon-api@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "node-addon-api@npm:5.0.0"
dependencies:
node-gyp: latest
- checksum: 3de396e23cc209f539c704583e8e99c148850226f6e389a641b92e8967953713228109f919765abc1f4355e801e8f41842f96210b8d61c7dcc10a477002dcf00
+ checksum: 7c5e2043ac37f6108784d94ed73a44ae6d3e68eb968de60680922fc6bc3d17fa69448c0feb4e0c9d3f4c74a0324822e566a8340a56916d9d6f23cb3e85620334
languageName: node
linkType: hard
@@ -7794,10 +7616,10 @@ __metadata:
languageName: node
linkType: hard
-"node-releases@npm:^2.0.3":
- version: 2.0.4
- resolution: "node-releases@npm:2.0.4"
- checksum: b32d6c2032c7b169ae3938b416fc50f123f5bd577d54a79b2ae201febf27b22846b01c803dd35ac8689afe840f8ba4e5f7154723db629b80f359836b6707b92f
+"node-releases@npm:^2.0.5":
+ version: 2.0.6
+ resolution: "node-releases@npm:2.0.6"
+ checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf
languageName: node
linkType: hard
@@ -7849,18 +7671,6 @@ __metadata:
languageName: node
linkType: hard
-"npmlog@npm:^4.0.1":
- version: 4.1.2
- resolution: "npmlog@npm:4.1.2"
- dependencies:
- are-we-there-yet: ~1.1.2
- console-control-strings: ~1.1.0
- gauge: ~2.7.3
- set-blocking: ~2.0.0
- checksum: edbda9f95ec20957a892de1839afc6fb735054c3accf6fbefe767bac9a639fd5cea2baeac6bd2bcd50a85cb54924d57d9886c81c7fbc2332c2ddd19227504192
- languageName: node
- linkType: hard
-
"npmlog@npm:^6.0.0":
version: 6.0.2
resolution: "npmlog@npm:6.0.2"
@@ -7881,31 +7691,15 @@ __metadata:
linkType: hard
"nth-check@npm:^2.0.1":
- version: 2.0.1
- resolution: "nth-check@npm:2.0.1"
+ version: 2.1.1
+ resolution: "nth-check@npm:2.1.1"
dependencies:
boolbase: ^1.0.0
- checksum: 5386d035c48438ff304fe687704d93886397349d1bed136de97aeae464caba10e8ffac55a04b215b86b3bc8897f33e0a5aa1045a9d8b2f251ae61b2a3ad3e450
- languageName: node
- linkType: hard
-
-"nth-check@npm:~1.0.1":
- version: 1.0.2
- resolution: "nth-check@npm:1.0.2"
- dependencies:
- boolbase: ~1.0.0
- checksum: 59e115fdd75b971d0030f42ada3aac23898d4c03aa13371fa8b3339d23461d1badf3fde5aad251fb956aaa75c0a3b9bfcd07c08a34a83b4f9dadfdce1d19337c
- languageName: node
- linkType: hard
-
-"number-is-nan@npm:^1.0.0":
- version: 1.0.1
- resolution: "number-is-nan@npm:1.0.1"
- checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb
+ checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3
languageName: node
linkType: hard
-"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
+"object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
@@ -7913,9 +7707,9 @@ __metadata:
linkType: hard
"object-inspect@npm:^1.9.0":
- version: 1.12.0
- resolution: "object-inspect@npm:1.12.0"
- checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4
+ version: 1.12.2
+ resolution: "object-inspect@npm:1.12.2"
+ checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2
languageName: node
linkType: hard
@@ -8148,29 +7942,32 @@ __metadata:
languageName: node
linkType: hard
-"parse5-htmlparser2-tree-adapter@npm:^6.0.1":
- version: 6.0.1
- resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1"
+"parse5-htmlparser2-tree-adapter@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0"
dependencies:
- parse5: ^6.0.1
- checksum: 1848378b355d027915645c13f13f982e60502d201f53bc2067a508bf2dba4aac08219fc781dcd160167f5f50f0c73f58d20fa4fb3d90ee46762c20234fa90a6d
+ domhandler: ^5.0.2
+ parse5: ^7.0.0
+ checksum: fc5d01e07733142a1baf81de5c2a9c41426c04b7ab29dd218acb80cd34a63177c90aff4a4aee66cf9f1d0aeecff1389adb7452ad6f8af0a5888e3e9ad6ef733d
languageName: node
linkType: hard
-"parse5@npm:^5.0.0":
- version: 5.1.1
- resolution: "parse5@npm:5.1.1"
- checksum: 613a714af4c1101d1cb9f7cece2558e35b9ae8a0c03518223a4a1e35494624d9a9ad5fad4c13eab66a0e0adccd9aa3d522fc8f5f9cc19789e0579f3fa0bdfc65
- languageName: node
- linkType: hard
-
-"parse5@npm:^6.0.0, parse5@npm:^6.0.1":
+"parse5@npm:^6.0.0":
version: 6.0.1
resolution: "parse5@npm:6.0.1"
checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd
languageName: node
linkType: hard
+"parse5@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "parse5@npm:7.0.0"
+ dependencies:
+ entities: ^4.3.0
+ checksum: 7da5d61cc18eb36ffa71fc861e65cbfd1f23d96483a6631254e627be667dbc9c93ac0b0e6cb17a13a2e4033dab19bfb2f76f38e5936cfb57240ed49036a83fcc
+ languageName: node
+ linkType: hard
+
"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3":
version: 1.3.3
resolution: "parseurl@npm:1.3.3"
@@ -8341,23 +8138,24 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss-convert-values@npm:^5.1.0":
- version: 5.1.0
- resolution: "postcss-convert-values@npm:5.1.0"
+"postcss-convert-values@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "postcss-convert-values@npm:5.1.2"
dependencies:
+ browserslist: ^4.20.3
postcss-value-parser: ^4.2.0
peerDependencies:
postcss: ^8.2.15
- checksum: d76e9aeaa9cc859fc3077b144d4a382cdaf58d6752418b808ffd67b6e0e8335a0538067d33954845161f6678aad26374de602f932b4ea81859265ec683ad8938
+ checksum: b1615daf12d3425bf4edee9451de402702f41019ccfc85f7883d87438becf533b3061a5a3567865029c534147a6c90e89b4c42ae6741c768c879a68d35aea812
languageName: node
linkType: hard
-"postcss-discard-comments@npm:^5.1.1":
- version: 5.1.1
- resolution: "postcss-discard-comments@npm:5.1.1"
+"postcss-discard-comments@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "postcss-discard-comments@npm:5.1.2"
peerDependencies:
postcss: ^8.2.15
- checksum: 578c3cb3e8c6194cf8b5f2170abd6636bf2fe1ec9ba6e03431f5a7e4aae22c6c6605a5e8e2731e824df07c1188f3defa2f4ba28da4adafe45c068af1189f1f2c
+ checksum: abfd064ebc27aeaf5037643dd51ffaff74d1fa4db56b0523d073ace4248cbb64ffd9787bd6924b0983a9d0bd0e9bf9f10d73b120e50391dc236e0d26c812fa2a
languageName: node
linkType: hard
@@ -8399,17 +8197,17 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss-loader@npm:^6.2.1":
- version: 6.2.1
- resolution: "postcss-loader@npm:6.2.1"
+"postcss-loader@npm:^7.0.0":
+ version: 7.0.1
+ resolution: "postcss-loader@npm:7.0.1"
dependencies:
cosmiconfig: ^7.0.0
klona: ^2.0.5
- semver: ^7.3.5
+ semver: ^7.3.7
peerDependencies:
postcss: ^7.0.0 || ^8.0.1
webpack: ^5.0.0
- checksum: e40ae79c3e39df37014677a817b001bd115d8b10dedf53a07b97513d93b1533cd702d7a48831bdd77b9a9484b1ec84a5d4a723f80e83fb28682c75b5e65e8a90
+ checksum: 2a3cbcaaade598d4919824d384ae34ffbfc14a9c8db6cc3b154582356f4f44a1c9af9e731b81cf1947b089accf7d0ab7a0c51c717946985f89aa1708d2b4304d
languageName: node
linkType: hard
@@ -8425,21 +8223,21 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss-merge-longhand@npm:^5.1.4":
- version: 5.1.4
- resolution: "postcss-merge-longhand@npm:5.1.4"
+"postcss-merge-longhand@npm:^5.1.6":
+ version: 5.1.6
+ resolution: "postcss-merge-longhand@npm:5.1.6"
dependencies:
postcss-value-parser: ^4.2.0
stylehacks: ^5.1.0
peerDependencies:
postcss: ^8.2.15
- checksum: 3245531aebcd0d2fe6982e142c088ae96ed5242885349e6160e68fc007cdc10d8b0f3e57d7987e3ba07fc9f7d0f6f278972fecaa517c0fa8594bdeaed82393f0
+ checksum: 327b5474d9e84b8d8aed3e24444938cbf1274326d357b551b700203f03f7bcb615381b92b933770ffe35b154677205af08875373413f2c5e625c34730599707b
languageName: node
linkType: hard
-"postcss-merge-rules@npm:^5.1.1":
- version: 5.1.1
- resolution: "postcss-merge-rules@npm:5.1.1"
+"postcss-merge-rules@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "postcss-merge-rules@npm:5.1.2"
dependencies:
browserslist: ^4.16.6
caniuse-api: ^3.0.0
@@ -8447,7 +8245,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
postcss-selector-parser: ^6.0.5
peerDependencies:
postcss: ^8.2.15
- checksum: 163cba5b688346b6bd142b677439257ada6f910dd32dbcffa2a7a58719a609bb9859f597da382bbd8be14a259bea26248aefd99aa890e8fd3753424dfedbde6e
+ checksum: fcbc415999a35248dcce03064a5456123663507b05ff0f1de5c97b6effc68014ab0ffd5f06e71cf08d401f037932e271b7db33124c73260f3630a1441212a0c8
languageName: node
linkType: hard
@@ -8475,27 +8273,27 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss-minify-params@npm:^5.1.2":
- version: 5.1.2
- resolution: "postcss-minify-params@npm:5.1.2"
+"postcss-minify-params@npm:^5.1.3":
+ version: 5.1.3
+ resolution: "postcss-minify-params@npm:5.1.3"
dependencies:
browserslist: ^4.16.6
cssnano-utils: ^3.1.0
postcss-value-parser: ^4.2.0
peerDependencies:
postcss: ^8.2.15
- checksum: 3d769b2792564d42bae3ada2f09bd19f358d75dddfb29048160e3e68415ea7f8ed5e6eea20fa8367d08ef8b7e28505b5185049639928dd34cdd258e660440285
+ checksum: 2d218f6b82474310c866b690210595a5e6a4c695f174f9100b018adb4a171bd67b1adaba26c241b3d41a4ea0f4962e0f5a77cf12ae60d9db76f80b0c7cbd6bcd
languageName: node
linkType: hard
-"postcss-minify-selectors@npm:^5.2.0":
- version: 5.2.0
- resolution: "postcss-minify-selectors@npm:5.2.0"
+"postcss-minify-selectors@npm:^5.2.1":
+ version: 5.2.1
+ resolution: "postcss-minify-selectors@npm:5.2.1"
dependencies:
postcss-selector-parser: ^6.0.5
peerDependencies:
postcss: ^8.2.15
- checksum: 651fbac038aaba10efaf4ed793d008439042954e5025462c14964ce24ca4bde868bb25ee846a4ff41df8a719fb8ee9f159ef0a036f54e6a09ed937bcc6884cf0
+ checksum: 6fdbc84f99a60d56b43df8930707da397775e4c36062a106aea2fd2ac81b5e24e584a1892f4baa4469fa495cb87d1422560eaa8f6c9d500f9f0b691a5f95bab5
languageName: node
linkType: hard
@@ -8563,25 +8361,25 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss-normalize-positions@npm:^5.1.0":
- version: 5.1.0
- resolution: "postcss-normalize-positions@npm:5.1.0"
+"postcss-normalize-positions@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "postcss-normalize-positions@npm:5.1.1"
dependencies:
postcss-value-parser: ^4.2.0
peerDependencies:
postcss: ^8.2.15
- checksum: 08a1f12cc8e192120c1ee14dc93e603546be507d826a75c2c6ef3224b5e3a17628a42a952317e8349b2708ffdef0560b84dcc20521104317eaa62291cca009f6
+ checksum: d9afc233729c496463c7b1cdd06732469f401deb387484c3a2422125b46ec10b4af794c101f8c023af56f01970b72b535e88373b9058ecccbbf88db81662b3c4
languageName: node
linkType: hard
-"postcss-normalize-repeat-style@npm:^5.1.0":
- version: 5.1.0
- resolution: "postcss-normalize-repeat-style@npm:5.1.0"
+"postcss-normalize-repeat-style@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "postcss-normalize-repeat-style@npm:5.1.1"
dependencies:
postcss-value-parser: ^4.2.0
peerDependencies:
postcss: ^8.2.15
- checksum: 65176c37741d3321fd346586bf42c292a9dab1e4b77a1004d9cde2ae9e015f6fe330c57b44d0ca854a48bd7db0b169875b8d2b5ca501ac9b5381068c337aac19
+ checksum: 2c6ad2b0ae10a1fda156b948c34f78c8f1e185513593de4d7e2480973586675520edfec427645fa168c337b0a6b3ceca26f92b96149741ca98a9806dad30d534
languageName: node
linkType: hard
@@ -8642,15 +8440,15 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss-ordered-values@npm:^5.1.1":
- version: 5.1.1
- resolution: "postcss-ordered-values@npm:5.1.1"
+"postcss-ordered-values@npm:^5.1.3":
+ version: 5.1.3
+ resolution: "postcss-ordered-values@npm:5.1.3"
dependencies:
cssnano-utils: ^3.1.0
postcss-value-parser: ^4.2.0
peerDependencies:
postcss: ^8.2.15
- checksum: d56825ef03225ccaeff9704b86008d012b91b0ace4b219f6d443aca628b7f0a1da922abc4a3fb8ca802baf09320abaa983f278ac416e1caf2658d119491686a4
+ checksum: 6f3ca85b6ceffc68aadaf319d9ee4c5ac16d93195bf8cba2d1559b631555ad61941461cda6d3909faab86e52389846b2b36345cff8f0c3f4eb345b1b8efadcf9
languageName: node
linkType: hard
@@ -8748,20 +8546,20 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"postcss@npm:^8.3.11, postcss@npm:^8.3.5, postcss@npm:^8.4.13, postcss@npm:^8.4.7":
- version: 8.4.13
- resolution: "postcss@npm:8.4.13"
+"postcss@npm:^8.3.11, postcss@npm:^8.4.13, postcss@npm:^8.4.14, postcss@npm:^8.4.7":
+ version: 8.4.14
+ resolution: "postcss@npm:8.4.14"
dependencies:
- nanoid: ^3.3.3
+ nanoid: ^3.3.4
picocolors: ^1.0.0
source-map-js: ^1.0.2
- checksum: 514fb3552805a5d039a2d6b4df3e73f657001716ca93c0d57e6067b0473abdea70276d80afc96005c9aaff82ed5d98062bd97724d3f47ca400fba0b5e9e436ed
+ checksum: fe58766ff32e4becf65a7d57678995cfd239df6deed2fe0557f038b47c94e4132e7e5f68b5aa820c13adfec32e523b693efaeb65798efb995ce49ccd83953816
languageName: node
linkType: hard
-"prebuild-install@npm:^7.0.1":
- version: 7.1.0
- resolution: "prebuild-install@npm:7.1.0"
+"prebuild-install@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "prebuild-install@npm:7.1.1"
dependencies:
detect-libc: ^2.0.0
expand-template: ^2.0.3
@@ -8770,7 +8568,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
mkdirp-classic: ^0.5.3
napi-build-utils: ^1.0.1
node-abi: ^3.3.0
- npmlog: ^4.0.1
pump: ^3.0.0
rc: ^1.2.7
simple-get: ^4.0.0
@@ -8778,7 +8575,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
tunnel-agent: ^0.6.0
bin:
prebuild-install: bin.js
- checksum: 204f2d89c6d6179fa1039036514aa72f7d0b537e421ef72c40840286e318f41489f00f22c6acc725cce6e10d43825b69dcabeaadfc917db781c58cd56fc25f90
+ checksum: dbf96d0146b6b5827fc8f67f72074d2e19c69628b9a7a0a17d0fad1bf37e9f06922896972e074197fc00a52eae912993e6ef5a0d471652f561df5cb516f3f467
languageName: node
linkType: hard
@@ -8789,6 +8586,15 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
+"prettier@npm:2.6.0":
+ version: 2.6.0
+ resolution: "prettier@npm:2.6.0"
+ bin:
+ prettier: bin-prettier.js
+ checksum: 3e527ad62279676778a8404d18174d7ca2365ada4caba6eebbcdd9907d1187afd3bc6ade5b4e5f5d4549bb9fb71e45ca8930d71500017635524f8fc05bc52e93
+ languageName: node
+ linkType: hard
+
"pretty-error@npm:^4.0.0":
version: 4.0.0
resolution: "pretty-error@npm:4.0.0"
@@ -8806,12 +8612,12 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"prism-react-renderer@npm:^1.3.1":
- version: 1.3.1
- resolution: "prism-react-renderer@npm:1.3.1"
+"prism-react-renderer@npm:^1.3.5":
+ version: 1.3.5
+ resolution: "prism-react-renderer@npm:1.3.5"
peerDependencies:
react: ">=0.14.9"
- checksum: 883693ea59dd6c7d821930ff232f1b28cd3f5d4a111fdb0a730f2ae34ffc7ca805ad3522c86eecbc79f9bee30279371e1fa6b33b4f72a6d3f17921b733b303b6
+ checksum: c18806dcbc4c0b4fd6fd15bd06b4f7c0a6da98d93af235c3e970854994eb9b59e23315abb6cfc29e69da26d36709a47e25da85ab27fed81b6812f0a52caf6dfa
languageName: node
linkType: hard
@@ -8979,7 +8785,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"rc@npm:^1.2.7, rc@npm:^1.2.8":
+"rc@npm:1.2.8, rc@npm:^1.2.7, rc@npm:^1.2.8":
version: 1.2.8
resolution: "rc@npm:1.2.8"
dependencies:
@@ -8994,12 +8800,12 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"react-collapsible@npm:^2.8.4":
- version: 2.8.4
- resolution: "react-collapsible@npm:2.8.4"
+ version: 2.10.0
+ resolution: "react-collapsible@npm:2.10.0"
peerDependencies:
- react: ~15 || ~16 || ~17
- react-dom: ~15 || ~16 || ~17
- checksum: cbb42a0dbdabc71e50725dd53f0f8c03cd8e94a1a33a385e799b56bd2d8a822771cd524bc0503e572b23c82d83fa7259378d9ca0166a65e45a18cba277fae917
+ react: ~15 || ~16 || ~17 || ~18
+ react-dom: ~15 || ~16 || ~17 || ~18
+ checksum: f7a883eb7c4aa91916378dfd4c98dc92a32bbdb4d6b8fad179e34ad1f2bbbab35446f5f6e126d699427bc67d1d70909c69f6be4ee744251bea4e17c7d10be2f3
languageName: node
linkType: hard
@@ -9036,12 +8842,12 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"react-devtools-core@npm:^4.19.1":
- version: 4.24.5
- resolution: "react-devtools-core@npm:4.24.5"
+ version: 4.24.7
+ resolution: "react-devtools-core@npm:4.24.7"
dependencies:
shell-quote: ^1.6.1
ws: ^7
- checksum: b3bc4097478b007c666a9dfb231385d581f1ad9d0dbddb3f63acb594036b52def59b8cbe188caf71f71602a066ebf2fdd0a07bac0e72731edbb9fc4bb2cca0d1
+ checksum: 1939e7373098c9438c8d0e5b3737a5a4c16b4bb56bac9c66bd160bd7957ac5dcd4106d69a5318c9957ccdeee881775a80f27ce7dc07849161cb3055f1e973666
languageName: node
linkType: hard
@@ -9095,10 +8901,10 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"react-is@npm:^17.0.1":
- version: 17.0.2
- resolution: "react-is@npm:17.0.2"
- checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8
+"react-is@npm:^17.0.1 || ^18.0.0":
+ version: 18.2.0
+ resolution: "react-is@npm:18.2.0"
+ checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e
languageName: node
linkType: hard
@@ -9153,26 +8959,26 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"react-router-dom@npm:^5.2.0":
- version: 5.3.1
- resolution: "react-router-dom@npm:5.3.1"
+"react-router-dom@npm:^5.3.3":
+ version: 5.3.3
+ resolution: "react-router-dom@npm:5.3.3"
dependencies:
"@babel/runtime": ^7.12.13
history: ^4.9.0
loose-envify: ^1.3.1
prop-types: ^15.6.2
- react-router: 5.3.1
+ react-router: 5.3.3
tiny-invariant: ^1.0.2
tiny-warning: ^1.0.0
peerDependencies:
react: ">=15"
- checksum: efbf80c91d64bf51e61fa5dd9e4b7e9c350a0a560d575992d3ee214e0e48da38210b5d8a03c6b270a21f8fd6fa020d076f2af191db5a722c28a68fcad9cefde6
+ checksum: e1998918e391611f09b967bce0cb88bc9794aa3d8dc5f86453467a1226ae2ace648a1f401f5282f19c84a3a61fa6a3207e2a6fdfe8c8efae0b255244631febeb
languageName: node
linkType: hard
-"react-router@npm:5.3.1, react-router@npm:^5.2.0":
- version: 5.3.1
- resolution: "react-router@npm:5.3.1"
+"react-router@npm:5.3.3, react-router@npm:^5.3.3":
+ version: 5.3.3
+ resolution: "react-router@npm:5.3.3"
dependencies:
"@babel/runtime": ^7.12.13
history: ^4.9.0
@@ -9186,13 +8992,13 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
tiny-warning: ^1.0.0
peerDependencies:
react: ">=15"
- checksum: b85c7b4dee5a011f542a654a673489bdedb8cd217e32838d13bc9b2c93f068fd37777bc7ef6cbebd6675cadc4e89add75f5e52e452be6c5b1f92070ad7f7e505
+ checksum: 52a9f28fa97577fda18a8ed2922b658704eafe873e444fe07202640d55d9e81e67c03efd2b2a5b80e3a80e8be8352df826a227ce5f42b33b91bef853c74d4841
languageName: node
linkType: hard
"react-select@npm:^5.3.0":
- version: 5.3.2
- resolution: "react-select@npm:5.3.2"
+ version: 5.4.0
+ resolution: "react-select@npm:5.4.0"
dependencies:
"@babel/runtime": ^7.12.0
"@emotion/cache": ^11.4.0
@@ -9204,7 +9010,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- checksum: c8c0ecd75704098ef1010fba4df68bcc5e7d76ffcd6d3bac40bc3017758a9c035a887fa82ead9105dc719c14e04c4164d8b7a8e8fa61d0ed39e4bdf48ee3bf1c
+ checksum: da896f0f8b3c7f6250148ce9ded1ace60abb35b812be50d34cf7ba980b12ca75533c3bbfd9e722530cc0e70c17e8997c3c7e93743877d84c00b0d90e4da521e6
languageName: node
linkType: hard
@@ -9223,17 +9029,17 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"react-waypoint@npm:^10.1.0":
- version: 10.1.0
- resolution: "react-waypoint@npm:10.1.0"
+"react-waypoint@npm:^10.3.0":
+ version: 10.3.0
+ resolution: "react-waypoint@npm:10.3.0"
dependencies:
"@babel/runtime": ^7.12.5
consolidated-events: ^1.1.0 || ^2.0.0
prop-types: ^15.0.0
- react-is: ^17.0.1
+ react-is: ^17.0.1 || ^18.0.0
peerDependencies:
- react: ^15.3.0 || ^16.0.0 || ^17.0.0
- checksum: 70d7e753eba909a2cd3519cee33e25725a89ad883c94fbc8cf7e5705c94c47d909f5ebcb58a7e0018d8c9ecaaf39c831524bf9e15100a03863173c752cf54db1
+ react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
+ checksum: 5a476432cd4a55ae022b33f82610a1addae92912ec88111cf33c17ef473bbbfc2c695714cb3bd60911259c92c5b6349f80033b022bf1e59e1a4be9b198a70a7a
languageName: node
linkType: hard
@@ -9247,7 +9053,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.6":
+"readable-stream@npm:^2.0.1":
version: 2.3.7
resolution: "readable-stream@npm:2.3.7"
dependencies:
@@ -9339,9 +9145,9 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"regexpu-core@npm:^5.0.1":
- version: 5.0.1
- resolution: "regexpu-core@npm:5.0.1"
+"regexpu-core@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "regexpu-core@npm:5.1.0"
dependencies:
regenerate: ^1.4.2
regenerate-unicode-properties: ^10.0.1
@@ -9349,16 +9155,16 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
regjsparser: ^0.8.2
unicode-match-property-ecmascript: ^2.0.0
unicode-match-property-value-ecmascript: ^2.0.0
- checksum: 6151a9700dad512fadb5564ad23246d54c880eb9417efa5e5c3658b910c1ff894d622dfd159af2ed527ffd44751bfe98682ae06c717155c254d8e2b4bab62785
+ checksum: 7b4eb8d182d9d10537a220a93138df5bc7eaf4ed53e36b95e8427d33ed8a2b081468f1a15d3e5fcee66517e1df7f5ca180b999e046d060badd97150f2ffe87b2
languageName: node
linkType: hard
"registry-auth-token@npm:^4.0.0":
- version: 4.2.1
- resolution: "registry-auth-token@npm:4.2.1"
+ version: 4.2.2
+ resolution: "registry-auth-token@npm:4.2.2"
dependencies:
- rc: ^1.2.8
- checksum: aa72060b573a50607cfd2dee16d0e51e13ca58b6a80442e74545325dc24d2c38896e6bad229bdcc1fc9759fa81b4066be8693d4d6f45927318e7c793a93e9cd0
+ rc: 1.2.8
+ checksum: c5030198546ecfdcbcb0722cbc3e260c4f5f174d8d07bdfedd4620e79bfdf17a2db735aa230d600bd388fce6edd26c0a9ed2eb7e9b4641ec15213a28a806688b
languageName: node
linkType: hard
@@ -9389,17 +9195,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"rehype-parse@npm:^6.0.2":
- version: 6.0.2
- resolution: "rehype-parse@npm:6.0.2"
- dependencies:
- hast-util-from-parse5: ^5.0.0
- parse5: ^5.0.0
- xtend: ^4.0.0
- checksum: f9afca7a8038a402d45d2f6eab31b2ce09100c195007c0bf9340b32e31585c6898f1cf0f4e088c08c5e2adade0fbb59e490ec6291e16751b12bd24d7c1e48ba9
- languageName: node
- linkType: hard
-
"relateurl@npm:^0.2.7":
version: 0.2.7
resolution: "relateurl@npm:0.2.7"
@@ -9407,17 +9202,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"remark-admonitions@npm:^1.2.1":
- version: 1.2.1
- resolution: "remark-admonitions@npm:1.2.1"
- dependencies:
- rehype-parse: ^6.0.2
- unified: ^8.4.2
- unist-util-visit: ^2.0.1
- checksum: c80fbc08b57c0054d7b414c8a0a205dee24d53ca9344a055acc3e1d0770d4045ffd7bec244d2316cf4c0cc27cf1a52be29332e7d9595000dbf3276a0b2f04b86
- languageName: node
- linkType: hard
-
"remark-emoji@npm:^2.2.0":
version: 2.2.0
resolution: "remark-emoji@npm:2.2.0"
@@ -9541,28 +9325,28 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"resolve@npm:^1.1.6, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.3.2":
- version: 1.22.0
- resolution: "resolve@npm:1.22.0"
+ version: 1.22.1
+ resolution: "resolve@npm:1.22.1"
dependencies:
- is-core-module: ^2.8.1
+ is-core-module: ^2.9.0
path-parse: ^1.0.7
supports-preserve-symlinks-flag: ^1.0.0
bin:
resolve: bin/resolve
- checksum: a2d14cc437b3a23996f8c7367eee5c7cf8149c586b07ca2ae00e96581ce59455555a1190be9aa92154785cf9f2042646c200d0e00e0bbd2b8a995a93a0ed3e4e
+ checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e
languageName: node
linkType: hard
"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.3.2#~builtin":
- version: 1.22.0
- resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b"
+ version: 1.22.1
+ resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"
dependencies:
- is-core-module: ^2.8.1
+ is-core-module: ^2.9.0
path-parse: ^1.0.7
supports-preserve-symlinks-flag: ^1.0.0
bin:
resolve: bin/resolve
- checksum: c79ecaea36c872ee4a79e3db0d3d4160b593f2ca16e031d8283735acd01715a203607e9ded3f91f68899c2937fa0d49390cddbe0fb2852629212f3cda283f4a7
+ checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b
languageName: node
linkType: hard
@@ -9648,11 +9432,11 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"rxjs@npm:^7.5.4":
- version: 7.5.5
- resolution: "rxjs@npm:7.5.5"
+ version: 7.5.6
+ resolution: "rxjs@npm:7.5.6"
dependencies:
tslib: ^2.1.0
- checksum: e034f60805210cce756dd2f49664a8108780b117cf5d0e2281506e9e6387f7b4f1532d974a8c8b09314fa7a16dd2f6cff3462072a5789672b5dcb45c4173f3c6
+ checksum: fc05f01364a74dac57490fb3e07ea63b422af04017fae1db641a009073f902ef69f285c5daac31359620dc8d9aee7d81e42b370ca2a8573d1feae0b04329383b
languageName: node
linkType: hard
@@ -9885,7 +9669,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0":
+"set-blocking@npm:^2.0.0":
version: 2.0.0
resolution: "set-blocking@npm:2.0.0"
checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02
@@ -9934,20 +9718,20 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"sharp@npm:^0.30.4":
- version: 0.30.4
- resolution: "sharp@npm:0.30.4"
+"sharp@npm:^0.30.7":
+ version: 0.30.7
+ resolution: "sharp@npm:0.30.7"
dependencies:
color: ^4.2.3
detect-libc: ^2.0.1
- node-addon-api: ^4.3.0
+ node-addon-api: ^5.0.0
node-gyp: latest
- prebuild-install: ^7.0.1
+ prebuild-install: ^7.1.1
semver: ^7.3.7
simple-get: ^4.0.1
tar-fs: ^2.1.1
tunnel-agent: ^0.6.0
- checksum: 80070d8cad5fe20e7bbb2a1cfddda3f7d421f6af8302c05af8307c0b3b1972e6ed2690563e90b2897b4b499b32967d28a15e37f5d196a1f8867d630609052211
+ checksum: bbc63ca3c7ea8a5bff32cd77022cfea30e25a03f5bd031e935924bf6cf0e11e3388e8b0e22b3137bf8816aa73407f1e4fbeb190f3a35605c27ffca9f32b91601
languageName: node
linkType: hard
@@ -9998,7 +9782,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
+"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
version: 3.0.7
resolution: "signal-exit@npm:3.0.7"
checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318
@@ -10082,7 +9866,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"sockjs@npm:^0.3.21":
+"sockjs@npm:^0.3.24":
version: 0.3.24
resolution: "sockjs@npm:0.3.24"
dependencies:
@@ -10093,14 +9877,14 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"socks-proxy-agent@npm:^6.1.1":
- version: 6.2.0
- resolution: "socks-proxy-agent@npm:6.2.0"
+"socks-proxy-agent@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "socks-proxy-agent@npm:7.0.0"
dependencies:
agent-base: ^6.0.2
debug: ^4.3.3
socks: ^2.6.2
- checksum: 6723fd64fb50334e2b340fd0a80fd8488ffc5bc43d85b7cf1d25612044f814dd7d6ea417fd47602159941236f7f4bd15669fa5d7e1f852598a31288e1a43967b
+ checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846
languageName: node
linkType: hard
@@ -10121,13 +9905,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"source-list-map@npm:^2.0.0":
- version: 2.0.1
- resolution: "source-list-map@npm:2.0.1"
- checksum: 806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938
- languageName: node
- linkType: hard
-
"source-map-js@npm:^1.0.2":
version: 1.0.2
resolution: "source-map-js@npm:1.0.2"
@@ -10152,22 +9929,13 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1":
+"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2
languageName: node
linkType: hard
-"source-map@npm:~0.8.0-beta.0":
- version: 0.8.0-beta.0
- resolution: "source-map@npm:0.8.0-beta.0"
- dependencies:
- whatwg-url: ^7.0.0
- checksum: e94169be6461ab0ac0913313ad1719a14c60d402bd22b0ad96f4a6cffd79130d91ab5df0a5336a326b04d2df131c1409f563c9dc0d21a6ca6239a44b6c8dbd92
- languageName: node
- linkType: hard
-
"space-separated-tokens@npm:^1.0.0":
version: 1.1.5
resolution: "space-separated-tokens@npm:1.1.5"
@@ -10210,11 +9978,11 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"ssri@npm:^9.0.0":
- version: 9.0.0
- resolution: "ssri@npm:9.0.0"
+ version: 9.0.1
+ resolution: "ssri@npm:9.0.1"
dependencies:
minipass: ^3.1.1
- checksum: bf33174232d07cc64e77ab1c51b55d28352273380c503d35642a19627e88a2c5f160039bb0a28608a353485075dda084dbf0390c7070f9f284559eb71d01b84b
+ checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb
languageName: node
linkType: hard
@@ -10269,17 +10037,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"string-width@npm:^1.0.1":
- version: 1.0.2
- resolution: "string-width@npm:1.0.2"
- dependencies:
- code-point-at: ^1.0.0
- is-fullwidth-code-point: ^1.0.0
- strip-ansi: ^3.0.0
- checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e
- languageName: node
- linkType: hard
-
"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3":
version: 4.2.3
resolution: "string-width@npm:4.2.3"
@@ -10331,15 +10088,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1":
- version: 3.0.1
- resolution: "strip-ansi@npm:3.0.1"
- dependencies:
- ansi-regex: ^2.0.0
- checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465
- languageName: node
- linkType: hard
-
"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
version: 6.0.1
resolution: "strip-ansi@npm:6.0.1"
@@ -10525,14 +10273,14 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1":
- version: 5.3.1
- resolution: "terser-webpack-plugin@npm:5.3.1"
+"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.3":
+ version: 5.3.3
+ resolution: "terser-webpack-plugin@npm:5.3.3"
dependencies:
+ "@jridgewell/trace-mapping": ^0.3.7
jest-worker: ^27.4.5
schema-utils: ^3.1.1
serialize-javascript: ^6.0.0
- source-map: ^0.6.1
terser: ^5.7.2
peerDependencies:
webpack: ^5.1.0
@@ -10543,21 +10291,21 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
optional: true
uglify-js:
optional: true
- checksum: 1b808fd4f58ce0b532baacc50b9a850fc69ce0077a0e9e5076d4156c52fab3d40b02d5d9148a3eba64630cf7f40057de54f6a5a87fac1849b1f11d6bfdb42072
+ checksum: 4b8d508d8a0f6e604addb286975f1fa670f8c3964a67abc03a7cfcfd4cdeca4b07dda6655e1c4425427fb62e4d2b0ca59d84f1b2cd83262ff73616d5d3ccdeb5
languageName: node
linkType: hard
"terser@npm:^5.10.0, terser@npm:^5.7.2":
- version: 5.13.1
- resolution: "terser@npm:5.13.1"
+ version: 5.14.1
+ resolution: "terser@npm:5.14.1"
dependencies:
+ "@jridgewell/source-map": ^0.3.2
acorn: ^8.5.0
commander: ^2.20.0
- source-map: ~0.8.0-beta.0
source-map-support: ~0.5.20
bin:
terser: bin/terser
- checksum: 0b1f5043cf5c3973005fe2ae4ff3be82511c336a6430599dacd4e2acf77c974d4474b0f1eec4823977c1f33823147e736ff712ca8e098bee3db25946480fa29d
+ checksum: 7b0e51f3d193a11cad82f07e3b0c1d62122eec786f809bdf2a54b865aaa1450872c3a7b6c33b5a40e264834060ffc1d4e197f971a76da5b0137997d756eb7548
languageName: node
linkType: hard
@@ -10626,15 +10374,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"tr46@npm:^1.0.1":
- version: 1.0.1
- resolution: "tr46@npm:1.0.1"
- dependencies:
- punycode: ^2.1.0
- checksum: 96d4ed46bc161db75dbf9247a236ea0bfcaf5758baae6749e92afab0bc5a09cb59af21788ede7e55080f2bf02dce3e4a8f2a484cc45164e29f4b5e68f7cbcc1a
- languageName: node
- linkType: hard
-
"trim-trailing-lines@npm:^1.0.0":
version: 1.1.4
resolution: "trim-trailing-lines@npm:1.1.4"
@@ -10663,7 +10402,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.4.0":
+"tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.4.0":
version: 2.4.0
resolution: "tslib@npm:2.4.0"
checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113
@@ -10680,9 +10419,9 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"typanion@npm:^3.8.0":
- version: 3.8.0
- resolution: "typanion@npm:3.8.0"
- checksum: ea3f97072c72efd4f1ac2c8996dad61e2a0810e6e2835f72b1e076e3f4c796666dc5f60af88329f3892173419a114b5d58a7369c16fdc46d76e3d9a55e8c486d
+ version: 3.9.0
+ resolution: "typanion@npm:3.9.0"
+ checksum: db635975e86c50399fe019010e489a9adb24a74cd19b15efb1d0f434c7dccd842a9402a6a6d60e8ab6d9f7949fd8604a019802a022427e78dbbe2e74f143527b
languageName: node
linkType: hard
@@ -10715,9 +10454,9 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"type-fest@npm:^2.5.0":
- version: 2.12.2
- resolution: "type-fest@npm:2.12.2"
- checksum: ee69676da1f69d2b14bbec28c7b95220a3221ab14093f54bde179c59e185a80470859553eada535ec35d8637a245c2f0efe9d7c99cc46a43f3b4c7ef64db7957
+ version: 2.16.0
+ resolution: "type-fest@npm:2.16.0"
+ checksum: 897fc5f6833de5ade5c4841d034bdfb6aaa168f24f725354ad13320b2a463b9df03a7a664b836b4c3bc7d9f92b22a25c26fe24668a35caf3b7a9ea5fcb847b8d
languageName: node
linkType: hard
@@ -10795,16 +10534,17 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"unified@npm:^8.4.2":
- version: 8.4.2
- resolution: "unified@npm:8.4.2"
+"unified@npm:^9.2.2":
+ version: 9.2.2
+ resolution: "unified@npm:9.2.2"
dependencies:
bail: ^1.0.0
extend: ^3.0.0
+ is-buffer: ^2.0.0
is-plain-obj: ^2.0.0
trough: ^1.0.0
vfile: ^4.0.0
- checksum: c2af7662d6375b14721df305786b15ba3228cd39c37da748bff00ed08ababd12ce52568f475347f270b1dea72fb0b9608563574a55c29e4f73f8be7ce0a01b4a
+ checksum: 7c24461be7de4145939739ce50d18227c5fbdf9b3bc5a29dabb1ce26dd3e8bd4a1c385865f6f825f3b49230953ee8b591f23beab3bb3643e3e9dc37aa8a089d5
languageName: node
linkType: hard
@@ -10900,7 +10640,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"unist-util-visit@npm:2.0.3, unist-util-visit@npm:^2.0.0, unist-util-visit@npm:^2.0.1, unist-util-visit@npm:^2.0.3":
+"unist-util-visit@npm:2.0.3, unist-util-visit@npm:^2.0.0, unist-util-visit@npm:^2.0.3":
version: 2.0.3
resolution: "unist-util-visit@npm:2.0.3"
dependencies:
@@ -10925,6 +10665,20 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
+"update-browserslist-db@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "update-browserslist-db@npm:1.0.4"
+ dependencies:
+ escalade: ^3.1.1
+ picocolors: ^1.0.0
+ peerDependencies:
+ browserslist: ">= 4.21.0"
+ bin:
+ browserslist-lint: cli.js
+ checksum: 7c7da28d0fc733b17e01c8fa9385ab909eadce64b8ea644e9603867dc368c2e2a6611af8247e72612b23f9e7cb87ac7c7585a05ff94e1759e9d646cbe9bf49a7
+ languageName: node
+ linkType: hard
+
"update-notifier@npm:^5.1.0":
version: 5.1.0
resolution: "update-notifier@npm:5.1.0"
@@ -11087,12 +10841,12 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"watchpack@npm:^2.3.1":
- version: 2.3.1
- resolution: "watchpack@npm:2.3.1"
+ version: 2.4.0
+ resolution: "watchpack@npm:2.4.0"
dependencies:
glob-to-regexp: ^0.4.1
graceful-fs: ^4.1.2
- checksum: 70a34f92842d94b5d842980f866d568d7a467de667c96ae5759c759f46587e49265863171f4650bdbafc5f3870a28f2b4453e9e847098ec4b718b38926d47d22
+ checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131
languageName: node
linkType: hard
@@ -11105,20 +10859,13 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"web-namespaces@npm:^1.0.0, web-namespaces@npm:^1.1.2":
+"web-namespaces@npm:^1.0.0":
version: 1.1.4
resolution: "web-namespaces@npm:1.1.4"
checksum: 5149842ccbfbc56fe4f8758957b3f8c8616a281874a5bb84aa1b305e4436a9bad853d21c629a7b8f174902449e1489c7a6c724fccf60965077c5636bd8aed42b
languageName: node
linkType: hard
-"webidl-conversions@npm:^4.0.2":
- version: 4.0.2
- resolution: "webidl-conversions@npm:4.0.2"
- checksum: c93d8dfe908a0140a4ae9c0ebc87a33805b416a33ee638a605b551523eec94a9632165e54632f6d57a39c5f948c4bab10e0e066525e9a4b87a79f0d04fbca374
- languageName: node
- linkType: hard
-
"webpack-bundle-analyzer@npm:^4.5.0":
version: 4.5.0
resolution: "webpack-bundle-analyzer@npm:4.5.0"
@@ -11139,28 +10886,29 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"webpack-dev-middleware@npm:^5.3.1":
- version: 5.3.1
- resolution: "webpack-dev-middleware@npm:5.3.1"
+ version: 5.3.3
+ resolution: "webpack-dev-middleware@npm:5.3.3"
dependencies:
colorette: ^2.0.10
- memfs: ^3.4.1
+ memfs: ^3.4.3
mime-types: ^2.1.31
range-parser: ^1.2.1
schema-utils: ^4.0.0
peerDependencies:
webpack: ^4.0.0 || ^5.0.0
- checksum: 32e36b5893dde4107e5bb758afdc7fc61fd238a62635cb2964ed6b61e363793275a40870479daeae3fa3b87678c1311f44ba7492f6ebf30fe9360f2aab30bae1
+ checksum: dd332cc6da61222c43d25e5a2155e23147b777ff32fdf1f1a0a8777020c072fbcef7756360ce2a13939c3f534c06b4992a4d659318c4a7fe2c0530b52a8a6621
languageName: node
linkType: hard
-"webpack-dev-server@npm:^4.8.1":
- version: 4.9.0
- resolution: "webpack-dev-server@npm:4.9.0"
+"webpack-dev-server@npm:^4.9.3":
+ version: 4.9.3
+ resolution: "webpack-dev-server@npm:4.9.3"
dependencies:
"@types/bonjour": ^3.5.9
"@types/connect-history-api-fallback": ^1.3.5
"@types/express": ^4.17.13
"@types/serve-index": ^1.9.1
+ "@types/serve-static": ^1.13.10
"@types/sockjs": ^0.3.33
"@types/ws": ^8.5.1
ansi-html-community: ^0.0.8
@@ -11168,7 +10916,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
chokidar: ^3.5.3
colorette: ^2.0.10
compression: ^1.7.4
- connect-history-api-fallback: ^1.6.0
+ connect-history-api-fallback: ^2.0.0
default-gateway: ^6.0.3
express: ^4.17.3
graceful-fs: ^4.2.6
@@ -11181,7 +10929,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
schema-utils: ^4.0.0
selfsigned: ^2.0.1
serve-index: ^1.9.1
- sockjs: ^0.3.21
+ sockjs: ^0.3.24
spdy: ^4.0.2
webpack-dev-middleware: ^5.3.1
ws: ^8.4.2
@@ -11192,7 +10940,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
optional: true
bin:
webpack-dev-server: bin/webpack-dev-server.js
- checksum: 3ee3fc9650ede7be37440d404fea2420310f3fb6dfdcfdb71b1d9e4675b04f05843832c9be68ecd4bd4e8e2c960e5d9da299990bd29d05702edfd013fef9e8c8
+ checksum: 845f2cc8e79a348ee7b17080eef9b332c675540888e0bc97ec6b62174882aca7995eaa7a3f49cfdd9af186da22f2f335fd03cb3c55cd49e387c8a3dc59700d66
languageName: node
linkType: hard
@@ -11206,26 +10954,16 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"webpack-sources@npm:^1.4.3":
- version: 1.4.3
- resolution: "webpack-sources@npm:1.4.3"
- dependencies:
- source-list-map: ^2.0.0
- source-map: ~0.6.1
- checksum: 37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79
- languageName: node
- linkType: hard
-
-"webpack-sources@npm:^3.2.3":
+"webpack-sources@npm:^3.2.2, webpack-sources@npm:^3.2.3":
version: 3.2.3
resolution: "webpack-sources@npm:3.2.3"
checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607
languageName: node
linkType: hard
-"webpack@npm:^5.72.0":
- version: 5.72.1
- resolution: "webpack@npm:5.72.1"
+"webpack@npm:^5.73.0":
+ version: 5.73.0
+ resolution: "webpack@npm:5.73.0"
dependencies:
"@types/eslint-scope": ^3.7.3
"@types/estree": ^0.0.51
@@ -11256,7 +10994,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
optional: true
bin:
webpack: bin/webpack.js
- checksum: d1eff085eee1c67a68f7bf1d077ea202c1e68a0de0e0866274984769838c3f224fbc64e847e1a1bbc6eba9fb6a9965098809cc0be9292b573767bb5d8d2df96e
+ checksum: aa434a241bad6176b68e1bf0feb1972da4dcbf27cb3d94ae24f6eb31acc37dceb9c4aae55e068edca75817bfe91f13cd20b023ac55d9b1b2f8b66a4037c9468f
languageName: node
linkType: hard
@@ -11292,17 +11030,6 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"whatwg-url@npm:^7.0.0":
- version: 7.1.0
- resolution: "whatwg-url@npm:7.1.0"
- dependencies:
- lodash.sortby: ^4.7.0
- tr46: ^1.0.1
- webidl-conversions: ^4.0.2
- checksum: fecb07c87290b47d2ec2fb6d6ca26daad3c9e211e0e531dd7566e7ff95b5b3525a57d4f32640ad4adf057717e0c215731db842ad761e61d947e81010e05cf5fd
- languageName: node
- linkType: hard
-
"which@npm:^1.3.1":
version: 1.3.1
resolution: "which@npm:1.3.1"
@@ -11325,7 +11052,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
-"wide-align@npm:^1.1.0, wide-align@npm:^1.1.5":
+"wide-align@npm:^1.1.5":
version: 1.1.5
resolution: "wide-align@npm:1.1.5"
dependencies:
@@ -11412,8 +11139,8 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
linkType: hard
"ws@npm:^7, ws@npm:^7.3.1, ws@npm:^7.5.5":
- version: 7.5.7
- resolution: "ws@npm:7.5.7"
+ version: 7.5.8
+ resolution: "ws@npm:7.5.8"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
@@ -11422,13 +11149,13 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
optional: true
utf-8-validate:
optional: true
- checksum: 5c1f669a166fb57560b4e07f201375137fa31d9186afde78b1508926345ce546332f109081574ddc4e38cc474c5406b5fc71c18d71eb75f6e2d2245576976cba
+ checksum: 49479ccf3ddab6500c5906fbcc316e9c8cd44b0ffb3903a6c1caf9b38cb9e06691685722a4c642cfa7d4c6eb390424fc3142cd4f8b940cfc7a9ce9761b1cd65b
languageName: node
linkType: hard
"ws@npm:^8.4.2":
- version: 8.6.0
- resolution: "ws@npm:8.6.0"
+ version: 8.8.0
+ resolution: "ws@npm:8.8.0"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
@@ -11437,7 +11164,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
optional: true
utf-8-validate:
optional: true
- checksum: e2fca82059f1e087d0c78e2f37135e1b8332bc804fce46f83c2db1cb8571685abf9d2c99b964bab3752536ad90b99b46fb8d1428899aed3e560684ab4641bffd
+ checksum: 6ceed1ca1cb800ef60c7fc8346c7d5d73d73be754228eb958765abf5d714519338efa20ffe674167039486eb3a813aae5a497f8d319e16b4d96216a31df5bd95
languageName: node
linkType: hard
diff --git a/go.mod b/go.mod
index 34e4220a92..3ec163d151 100644
--- a/go.mod
+++ b/go.mod
@@ -7,11 +7,12 @@ require (
github.com/ReneKroon/ttlcache/v2 v2.11.0
github.com/beevik/ntp v0.3.0
github.com/capossele/asset-registry v0.0.0-20210521112927-c9d6e74574e8
+ github.com/celestiaorg/smt v0.2.1-0.20220414134126-dba215ccb884
github.com/cockroachdb/errors v1.8.4
github.com/gin-gonic/gin v1.7.0
github.com/go-resty/resty/v2 v2.6.0
github.com/gorilla/websocket v1.5.0
- github.com/iotaledger/hive.go v0.0.0-20220617100616-12bd6f35b4a1
+ github.com/iotaledger/hive.go v0.0.0-20220714071841-4f9c6ffe833a
github.com/labstack/echo v3.3.10+incompatible
github.com/labstack/gommon v0.3.0
github.com/libp2p/go-libp2p v0.15.0
diff --git a/go.sum b/go.sum
index 2c5675fe82..f215116761 100644
--- a/go.sum
+++ b/go.sum
@@ -135,6 +135,8 @@ github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7
github.com/capossele/asset-registry v0.0.0-20210521112927-c9d6e74574e8 h1:lCaU8zjlV8f06WK3jlruYmTUPVumZ4sxj0CEyg/k0IU=
github.com/capossele/asset-registry v0.0.0-20210521112927-c9d6e74574e8/go.mod h1:BXwVCA0+rgYcMKC3vVkfjF+2nXYIYq3h/HndbaCuw08=
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/celestiaorg/smt v0.2.1-0.20220414134126-dba215ccb884 h1:iRNKw2WmAbVgGMNYzDH5Y2yY3+jyxwEK9Hc5pwIjZAE=
+github.com/celestiaorg/smt v0.2.1-0.20220414134126-dba215ccb884/go.mod h1:/sdYDakowo/XaxS2Fl7CBqtuf/O2uTqF2zmAUFAtAiw=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -473,8 +475,14 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
-github.com/iotaledger/hive.go v0.0.0-20220617100616-12bd6f35b4a1 h1:7eOS9j+1K2M66OLgL/7tYafQIP9d0MMmyn0e72AmRUA=
-github.com/iotaledger/hive.go v0.0.0-20220617100616-12bd6f35b4a1/go.mod h1:8f9U7qHFby0W3cxv/nKnz9LHn9BbwWU0tMsWDnfqzRI=
+github.com/iotaledger/hive.go v0.0.0-20220705110659-84be3e28c8ce h1:r6nyywvjxrFwC6qE9NcU/cWaLL8XWyzPtvQ0UfYGGmE=
+github.com/iotaledger/hive.go v0.0.0-20220705110659-84be3e28c8ce/go.mod h1:8f9U7qHFby0W3cxv/nKnz9LHn9BbwWU0tMsWDnfqzRI=
+github.com/iotaledger/hive.go v0.0.0-20220713131416-10a47a2d9944 h1:ARmT1GEX1XxOah061u7AXsnegFqYsRu/rge5fuBINts=
+github.com/iotaledger/hive.go v0.0.0-20220713131416-10a47a2d9944/go.mod h1:8f9U7qHFby0W3cxv/nKnz9LHn9BbwWU0tMsWDnfqzRI=
+github.com/iotaledger/hive.go v0.0.0-20220714061633-953e10f60c45 h1:tKgADjyZLNzcI5/pd/oW3rhcvGPq9yYODjqwrltqw2M=
+github.com/iotaledger/hive.go v0.0.0-20220714061633-953e10f60c45/go.mod h1:8f9U7qHFby0W3cxv/nKnz9LHn9BbwWU0tMsWDnfqzRI=
+github.com/iotaledger/hive.go v0.0.0-20220714071841-4f9c6ffe833a h1:052kOYS5MjFWQrbS3mRzWERRrxAgXaZQBjDQRsWxWNU=
+github.com/iotaledger/hive.go v0.0.0-20220714071841-4f9c6ffe833a/go.mod h1:8f9U7qHFby0W3cxv/nKnz9LHn9BbwWU0tMsWDnfqzRI=
github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
diff --git a/packages/bootstrapmanager/manager.go b/packages/bootstrapmanager/manager.go
new file mode 100644
index 0000000000..5db4f88e85
--- /dev/null
+++ b/packages/bootstrapmanager/manager.go
@@ -0,0 +1,53 @@
+package bootstrapmanager
+
+import (
+ "github.com/iotaledger/hive.go/generics/event"
+
+ "github.com/iotaledger/goshimmer/packages/notarization"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+)
+
+// region Manager //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+type BootstrappedEvent struct{}
+
+type Events struct {
+ Bootstrapped *event.Event[*BootstrappedEvent]
+}
+
+// Manager is the bootstrap manager.
+type Manager struct {
+ Events *Events
+ tangle *tangle.Tangle
+ notarizationManager *notarization.Manager
+}
+
+// New creates and returns a new notarization manager.
+func New(t *tangle.Tangle, notarizationManager *notarization.Manager) (new *Manager) {
+ new = &Manager{
+ tangle: t,
+ notarizationManager: notarizationManager,
+ Events: &Events{Bootstrapped: event.New[*BootstrappedEvent]()},
+ }
+ return new
+}
+
+func (m *Manager) Setup() {
+ m.tangle.TimeManager.Events.Bootstrapped.Attach(event.NewClosure(func(_ *tangle.BootstrappedEvent) {
+ if m.notarizationManager.Bootstrapped() {
+ m.Events.Bootstrapped.Trigger(&BootstrappedEvent{})
+ }
+ }))
+ m.notarizationManager.Events.Bootstrapped.Attach(event.NewClosure(func(_ *notarization.BootstrappedEvent) {
+ if m.tangle.Bootstrapped() {
+ m.Events.Bootstrapped.Trigger(&BootstrappedEvent{})
+ }
+ }))
+}
+
+// Bootstrapped returns bool indicating if the node is bootstrapped.
+func (m *Manager) Bootstrapped() bool {
+ return m.tangle.Bootstrapped() && m.notarizationManager.Bootstrapped()
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/chat/chat.go b/packages/chat/chat.go
index a26fe389cc..fb77f351fc 100644
--- a/packages/chat/chat.go
+++ b/packages/chat/chat.go
@@ -44,17 +44,17 @@ type Payload struct {
}
type payloadModel struct {
- From string `serix:"0,lengthPrefixType=uint32"`
- To string `serix:"1,lengthPrefixType=uint32"`
- Message string `serix:"2,lengthPrefixType=uint32"`
+ From string `serix:"0,lengthPrefixType=uint32"`
+ To string `serix:"1,lengthPrefixType=uint32"`
+ Block string `serix:"2,lengthPrefixType=uint32"`
}
// NewPayload creates a new chat payload.
-func NewPayload(from, to, message string) *Payload {
+func NewPayload(from, to, block string) *Payload {
return model.NewImmutable[Payload](&payloadModel{
- From: from,
- To: to,
- Message: message,
+ From: from,
+ To: to,
+ Block: block,
},
)
}
@@ -67,17 +67,17 @@ func (p *Payload) Type() payload.Type {
return Type
}
-// From returns an author of the message.
+// From returns an author of the block.
func (p *Payload) From() string {
return p.M.From
}
-// To returns a recipient of the message.
+// To returns a recipient of the block.
func (p *Payload) To() string {
return p.M.To
}
-// Message returns the message contents.
-func (p *Payload) Message() string {
- return p.M.Message
+// Block returns the block contents.
+func (p *Payload) Block() string {
+ return p.M.Block
}
diff --git a/packages/chat/events.go b/packages/chat/events.go
index 171df97a8d..dc3dead36c 100644
--- a/packages/chat/events.go
+++ b/packages/chat/events.go
@@ -8,21 +8,21 @@ import (
// Events define events occurring within a Chat.
type Events struct {
- MessageReceived *event.Event[*MessageReceivedEvent]
+ BlockReceived *event.Event[*BlockReceivedEvent]
}
// newEvents returns a new Events object.
func newEvents() (new *Events) {
return &Events{
- MessageReceived: event.New[*MessageReceivedEvent](),
+ BlockReceived: event.New[*BlockReceivedEvent](),
}
}
// Event defines the information passed when a chat event fires.
-type MessageReceivedEvent struct {
+type BlockReceivedEvent struct {
From string
To string
- Message string
+ Block string
Timestamp time.Time
- MessageID string
+ BlockID string
}
diff --git a/packages/conflictdag/conflictdag.go b/packages/conflictdag/conflictdag.go
index 4c914b5a5e..6a097db363 100644
--- a/packages/conflictdag/conflictdag.go
+++ b/packages/conflictdag/conflictdag.go
@@ -6,6 +6,7 @@ import (
"github.com/iotaledger/hive.go/byteutils"
"github.com/iotaledger/hive.go/generics/set"
"github.com/iotaledger/hive.go/generics/walker"
+ "github.com/iotaledger/hive.go/types/confirmation"
)
// ConflictDAG represents a generic DAG that is able to model causal dependencies between conflicts that try to access a
@@ -23,7 +24,7 @@ type ConflictDAG[ConflictIDType, ResourceIDType comparable] struct {
// options is a dictionary for configuration parameters of the ConflictDAG.
options *options
- // RWMutex is a mutex that prevents that two processes simultaneously update the InclusionState.
+ // RWMutex is a mutex that prevents that two processes simultaneously update the ConfirmationState.
sync.RWMutex
}
@@ -46,10 +47,10 @@ func (b *ConflictDAG[ConflictIDType, ResourceIDType]) CreateConflict(id Conflict
conflict = NewConflict(id, parents, set.NewAdvancedSet[ResourceIDType]())
b.addConflictMembers(conflict, conflictingResources)
- b.createChildBranchReferences(parents, id)
+ b.createChildConflictReferences(parents, id)
- if b.anyParentRejected(conflict) || b.anyConflictingBranchConfirmed(conflict) {
- conflict.setInclusionState(Rejected)
+ if b.anyParentRejected(conflict) || b.anyConflictingConflictAccepted(conflict) {
+ conflict.setConfirmationState(confirmation.Rejected)
}
created = true
@@ -70,30 +71,30 @@ func (b *ConflictDAG[ConflictIDType, ResourceIDType]) CreateConflict(id Conflict
}
// UpdateConflictParents changes the parents of a Conflict after a fork (also updating the corresponding references).
-func (b *ConflictDAG[ConflictIDType, ResourceIDType]) UpdateConflictParents(id ConflictIDType, removedBranchIDs *set.AdvancedSet[ConflictIDType], addedBranchID ConflictIDType) (updated bool) {
+func (b *ConflictDAG[ConflictIDType, ResourceIDType]) UpdateConflictParents(id ConflictIDType, removedConflictIDs *set.AdvancedSet[ConflictIDType], addedConflictID ConflictIDType) (updated bool) {
b.RLock()
- var parentBranchIDs *set.AdvancedSet[ConflictIDType]
- b.Storage.CachedConflict(id).Consume(func(branch *Conflict[ConflictIDType, ResourceIDType]) {
- parentBranchIDs = branch.Parents()
- if !parentBranchIDs.Add(addedBranchID) {
+ var parentConflictIDs *set.AdvancedSet[ConflictIDType]
+ b.Storage.CachedConflict(id).Consume(func(conflict *Conflict[ConflictIDType, ResourceIDType]) {
+ parentConflictIDs = conflict.Parents()
+ if !parentConflictIDs.Add(addedConflictID) {
return
}
- b.removeChildBranchReferences(parentBranchIDs.DeleteAll(removedBranchIDs), id)
- b.createChildBranchReferences(set.NewAdvancedSet(addedBranchID), id)
+ b.removeChildConflictReferences(parentConflictIDs.DeleteAll(removedConflictIDs), id)
+ b.createChildConflictReferences(set.NewAdvancedSet(addedConflictID), id)
- branch.SetParents(parentBranchIDs)
+ conflict.SetParents(parentConflictIDs)
updated = true
})
b.RUnlock()
if updated {
- b.Events.BranchParentsUpdated.Trigger(&BranchParentsUpdatedEvent[ConflictIDType, ResourceIDType]{
- BranchID: id,
- AddedBranch: addedBranchID,
- RemovedBranches: removedBranchIDs,
- ParentsBranchIDs: parentBranchIDs,
+ b.Events.ConflictParentsUpdated.Trigger(&ConflictParentsUpdatedEvent[ConflictIDType, ResourceIDType]{
+ ConflictID: id,
+ AddedConflict: addedConflictID,
+ RemovedConflicts: removedConflictIDs,
+ ParentsConflictIDs: parentConflictIDs,
})
}
@@ -104,14 +105,14 @@ func (b *ConflictDAG[ConflictIDType, ResourceIDType]) UpdateConflictParents(id C
// during this operation.
func (b *ConflictDAG[ConflictIDType, ResourceIDType]) UpdateConflictingResources(id ConflictIDType, conflictingResourceIDs *set.AdvancedSet[ResourceIDType]) (updated bool) {
b.RLock()
- b.Storage.CachedConflict(id).Consume(func(branch *Conflict[ConflictIDType, ResourceIDType]) {
- updated = b.addConflictMembers(branch, conflictingResourceIDs)
+ b.Storage.CachedConflict(id).Consume(func(conflict *Conflict[ConflictIDType, ResourceIDType]) {
+ updated = b.addConflictMembers(conflict, conflictingResourceIDs)
})
b.RUnlock()
if updated {
- b.Events.BranchConflictsUpdated.Trigger(&BranchConflictsUpdatedEvent[ConflictIDType, ResourceIDType]{
- BranchID: id,
+ b.Events.ConflictConflictsUpdated.Trigger(&ConflictConflictsUpdatedEvent[ConflictIDType, ResourceIDType]{
+ ConflictID: id,
NewConflictIDs: conflictingResourceIDs,
})
}
@@ -119,61 +120,61 @@ func (b *ConflictDAG[ConflictIDType, ResourceIDType]) UpdateConflictingResources
return updated
}
-// UnconfirmedConflicts takes a set of BranchIDs and removes all the Confirmed Branches (leaving only the pending or
-// rejected ones behind).
-func (b *ConflictDAG[ConflictIDType, ConflictingResourceID]) UnconfirmedConflicts(branchIDs *set.AdvancedSet[ConflictIDType]) (pendingBranchIDs *set.AdvancedSet[ConflictIDType]) {
+// UnconfirmedConflicts takes a set of ConflictIDs and removes all the Accepted/Confirmed Conflicts (leaving only the
+// pending or rejected ones behind).
+func (b *ConflictDAG[ConflictIDType, ConflictingResourceID]) UnconfirmedConflicts(conflictIDs *set.AdvancedSet[ConflictIDType]) (pendingConflictIDs *set.AdvancedSet[ConflictIDType]) {
if !b.options.mergeToMaster {
- return branchIDs.Clone()
+ return conflictIDs.Clone()
}
- pendingBranchIDs = set.NewAdvancedSet[ConflictIDType]()
- for branchWalker := branchIDs.Iterator(); branchWalker.HasNext(); {
- if currentBranchID := branchWalker.Next(); b.inclusionState(currentBranchID) != Confirmed {
- pendingBranchIDs.Add(currentBranchID)
+ pendingConflictIDs = set.NewAdvancedSet[ConflictIDType]()
+ for conflictWalker := conflictIDs.Iterator(); conflictWalker.HasNext(); {
+ if currentConflictID := conflictWalker.Next(); !b.confirmationState(currentConflictID).IsAccepted() {
+ pendingConflictIDs.Add(currentConflictID)
}
}
- return pendingBranchIDs
+ return pendingConflictIDs
}
-// SetBranchConfirmed sets the InclusionState of the given Conflict to be Confirmed - it automatically sets also the
-// conflicting branches to be rejected.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) SetBranchConfirmed(branchID ConflictID) (modified bool) {
+// SetConflictAccepted sets the ConfirmationState of the given Conflict to be Accepted - it automatically sets also the
+// conflicting conflicts to be rejected.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) SetConflictAccepted(conflictID ConflictID) (modified bool) {
b.Lock()
defer b.Unlock()
rejectionWalker := walker.New[ConflictID]()
- for confirmationWalker := set.NewAdvancedSet(branchID).Iterator(); confirmationWalker.HasNext(); {
- b.Storage.CachedConflict(confirmationWalker.Next()).Consume(func(branch *Conflict[ConflictID, ConflictingResourceID]) {
- if modified = branch.setInclusionState(Confirmed); !modified {
+ for confirmationWalker := set.NewAdvancedSet(conflictID).Iterator(); confirmationWalker.HasNext(); {
+ b.Storage.CachedConflict(confirmationWalker.Next()).Consume(func(conflict *Conflict[ConflictID, ConflictingResourceID]) {
+ if modified = conflict.setConfirmationState(confirmation.Accepted); !modified {
return
}
- b.Events.BranchConfirmed.Trigger(&BranchConfirmedEvent[ConflictID]{
- BranchID: branchID,
+ b.Events.ConflictAccepted.Trigger(&ConflictAcceptedEvent[ConflictID]{
+ ID: conflictID,
})
- confirmationWalker.PushAll(branch.Parents().Slice()...)
+ confirmationWalker.PushAll(conflict.Parents().Slice()...)
- b.Utils.forEachConflictingBranchID(branch, func(conflictingBranchID ConflictID) bool {
- rejectionWalker.Push(conflictingBranchID)
+ b.Utils.forEachConflictingConflictID(conflict, func(conflictingConflictID ConflictID) bool {
+ rejectionWalker.Push(conflictingConflictID)
return true
})
})
}
for rejectionWalker.HasNext() {
- b.Storage.CachedConflict(rejectionWalker.Next()).Consume(func(branch *Conflict[ConflictID, ConflictingResourceID]) {
- if modified = branch.setInclusionState(Rejected); !modified {
+ b.Storage.CachedConflict(rejectionWalker.Next()).Consume(func(conflict *Conflict[ConflictID, ConflictingResourceID]) {
+ if modified = conflict.setConfirmationState(confirmation.Rejected); !modified {
return
}
- b.Events.BranchRejected.Trigger(&BranchRejectedEvent[ConflictID]{
- BranchID: branch.ID(),
+ b.Events.ConflictRejected.Trigger(&ConflictRejectedEvent[ConflictID]{
+ ID: conflict.ID(),
})
- b.Storage.CachedChildBranches(branch.ID()).Consume(func(childBranch *ChildBranch[ConflictID]) {
- rejectionWalker.Push(childBranch.ChildBranchID())
+ b.Storage.CachedChildConflicts(conflict.ID()).Consume(func(childConflict *ChildConflict[ConflictID]) {
+ rejectionWalker.Push(childConflict.ChildConflictID())
})
})
}
@@ -181,22 +182,19 @@ func (b *ConflictDAG[ConflictID, ConflictingResourceID]) SetBranchConfirmed(bran
return modified
}
-// InclusionState returns the InclusionState of the given BranchIDs.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) InclusionState(branchIDs *set.AdvancedSet[ConflictID]) (inclusionState InclusionState) {
+// ConfirmationState returns the ConfirmationState of the given ConflictIDs.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) ConfirmationState(conflictIDs *set.AdvancedSet[ConflictID]) (confirmationState confirmation.State) {
b.RLock()
defer b.RUnlock()
- inclusionState = Confirmed
- for it := branchIDs.Iterator(); it.HasNext(); {
- switch b.inclusionState(it.Next()) {
- case Rejected:
- return Rejected
- case Pending:
- inclusionState = Pending
+ confirmationState = confirmation.Confirmed
+ for it := conflictIDs.Iterator(); it.HasNext(); {
+ if confirmationState = confirmationState.Aggregate(b.confirmationState(it.Next())); confirmationState.IsRejected() {
+ return confirmation.Rejected
}
}
- return inclusionState
+ return confirmationState
}
// Shutdown shuts down the stateful elements of the ConflictDAG (the Storage).
@@ -205,36 +203,36 @@ func (b *ConflictDAG[ConflictID, ConflictingResourceID]) Shutdown() {
}
// addConflictMembers creates the named ConflictMember references.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) addConflictMembers(branch *Conflict[ConflictID, ConflictingResourceID], conflictIDs *set.AdvancedSet[ConflictingResourceID]) (added bool) {
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) addConflictMembers(conflict *Conflict[ConflictID, ConflictingResourceID], conflictIDs *set.AdvancedSet[ConflictingResourceID]) (added bool) {
for it := conflictIDs.Iterator(); it.HasNext(); {
conflictID := it.Next()
- if added = branch.addConflict(conflictID); added {
- b.registerConflictMember(conflictID, branch.ID())
+ if added = conflict.addConflict(conflictID); added {
+ b.registerConflictMember(conflictID, conflict.ID())
}
}
return added
}
-// createChildBranchReferences creates the named ChildBranch references.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) createChildBranchReferences(parentBranchIDs *set.AdvancedSet[ConflictID], childBranchID ConflictID) {
- for it := parentBranchIDs.Iterator(); it.HasNext(); {
- b.Storage.CachedChildBranch(it.Next(), childBranchID, NewChildBranch[ConflictID]).Release()
+// createChildConflictReferences creates the named ChildConflict references.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) createChildConflictReferences(parentConflictIDs *set.AdvancedSet[ConflictID], childConflictID ConflictID) {
+ for it := parentConflictIDs.Iterator(); it.HasNext(); {
+ b.Storage.CachedChildConflict(it.Next(), childConflictID, NewChildConflict[ConflictID]).Release()
}
}
-// removeChildBranchReferences removes the named ChildBranch references.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) removeChildBranchReferences(parentBranchIDs *set.AdvancedSet[ConflictID], childBranchID ConflictID) {
- for it := parentBranchIDs.Iterator(); it.HasNext(); {
- b.Storage.childBranchStorage.Delete(byteutils.ConcatBytes(bytes(it.Next()), bytes(childBranchID)))
+// removeChildConflictReferences removes the named ChildConflict references.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) removeChildConflictReferences(parentConflictIDs *set.AdvancedSet[ConflictID], childConflictID ConflictID) {
+ for it := parentConflictIDs.Iterator(); it.HasNext(); {
+ b.Storage.childConflictStorage.Delete(byteutils.ConcatBytes(bytes(it.Next()), bytes(childConflictID)))
}
}
-// anyParentRejected checks if any of a Branches parents is Rejected.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) anyParentRejected(branch *Conflict[ConflictID, ConflictingResourceID]) (rejected bool) {
- for it := branch.Parents().Iterator(); it.HasNext(); {
- if b.inclusionState(it.Next()) == Rejected {
+// anyParentRejected checks if any of a Conflicts parents is Rejected.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) anyParentRejected(conflict *Conflict[ConflictID, ConflictingResourceID]) (rejected bool) {
+ for it := conflict.Parents().Iterator(); it.HasNext(); {
+ if b.confirmationState(it.Next()).IsRejected() {
return true
}
}
@@ -242,10 +240,10 @@ func (b *ConflictDAG[ConflictID, ConflictingResourceID]) anyParentRejected(branc
return false
}
-// anyConflictingBranchConfirmed checks if any conflicting Conflict is Confirmed.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) anyConflictingBranchConfirmed(branch *Conflict[ConflictID, ConflictingResourceID]) (anyConfirmed bool) {
- b.Utils.forEachConflictingBranchID(branch, func(conflictingBranchID ConflictID) bool {
- anyConfirmed = b.inclusionState(conflictingBranchID) == Confirmed
+// anyConflictingConflictAccepted checks if any conflicting Conflict is Accepted/Confirmed.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) anyConflictingConflictAccepted(conflict *Conflict[ConflictID, ConflictingResourceID]) (anyConfirmed bool) {
+ b.Utils.forEachConflictingConflictID(conflict, func(conflictingConflictID ConflictID) bool {
+ anyConfirmed = b.confirmationState(conflictingConflictID).IsAccepted()
return !anyConfirmed
})
@@ -254,15 +252,15 @@ func (b *ConflictDAG[ConflictID, ConflictingResourceID]) anyConflictingBranchCon
// registerConflictMember registers a Conflict in a Conflict by creating the references (if necessary) and increasing the
// corresponding member counter.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) registerConflictMember(conflictID ConflictingResourceID, branchID ConflictID) {
- b.Storage.CachedConflictMember(conflictID, branchID, NewConflictMember[ConflictingResourceID, ConflictID]).Release()
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) registerConflictMember(resourceID ConflictingResourceID, conflictID ConflictID) {
+ b.Storage.CachedConflictMember(resourceID, conflictID, NewConflictMember[ConflictingResourceID, ConflictID]).Release()
}
-// inclusionState returns the InclusionState of the Conflict with the given ConflictID.
-func (b *ConflictDAG[ConflictID, ConflictingResourceID]) inclusionState(branchID ConflictID) (inclusionState InclusionState) {
- b.Storage.CachedConflict(branchID).Consume(func(branch *Conflict[ConflictID, ConflictingResourceID]) {
- inclusionState = branch.InclusionState()
+// confirmationState returns the ConfirmationState of the Conflict with the given ConflictID.
+func (b *ConflictDAG[ConflictID, ConflictingResourceID]) confirmationState(conflictID ConflictID) (confirmationState confirmation.State) {
+ b.Storage.CachedConflict(conflictID).Consume(func(conflict *Conflict[ConflictID, ConflictingResourceID]) {
+ confirmationState = conflict.ConfirmationState()
})
- return inclusionState
+ return confirmationState
}
diff --git a/packages/conflictdag/conflictdag_test.go b/packages/conflictdag/conflictdag_test.go
index 9b40d6fec7..77a64f11c1 100644
--- a/packages/conflictdag/conflictdag_test.go
+++ b/packages/conflictdag/conflictdag_test.go
@@ -6,13 +6,14 @@ import (
"github.com/iotaledger/hive.go/generics/set"
"github.com/iotaledger/hive.go/types"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
-func TestConflictDAG_RetrieveBranch(t *testing.T) {
- branchDAG := New[types.Identifier, types.Identifier]()
- defer branchDAG.Shutdown()
+func TestConflictDAG_RetrieveConflict(t *testing.T) {
+ conflictDAG := New[types.Identifier, types.Identifier]()
+ defer conflictDAG.Shutdown()
var (
branchID2 types.Identifier
@@ -31,99 +32,99 @@ func TestConflictDAG_RetrieveBranch(t *testing.T) {
require.NoError(t, conflictID2.FromRandomness())
require.NoError(t, conflictID3.FromRandomness())
- assert.True(t, branchDAG.CreateConflict(branchID2, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0, conflictID1)))
- cachedBranch2 := branchDAG.Storage.CachedConflict(branchID2)
+ assert.True(t, conflictDAG.CreateConflict(branchID2, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0, conflictID1)))
+ cachedBranch2 := conflictDAG.Storage.CachedConflict(branchID2)
defer cachedBranch2.Release()
Branch2, exists := cachedBranch2.Unwrap()
require.True(t, exists)
assert.Equal(t, set.NewAdvancedSet(types.Identifier{}), Branch2.Parents())
- assert.True(t, set.NewAdvancedSet(conflictID0, conflictID1).Equal(Branch2.ConflictIDs()))
+ assert.True(t, set.NewAdvancedSet(conflictID0, conflictID1).Equal(Branch2.ConflictSetIDs()))
- assert.True(t, branchDAG.CreateConflict(branchID3, set.NewAdvancedSet(Branch2.ID()), set.NewAdvancedSet(conflictID0, conflictID1, conflictID2)))
- cachedBranch3 := branchDAG.Storage.CachedConflict(branchID3)
+ assert.True(t, conflictDAG.CreateConflict(branchID3, set.NewAdvancedSet(Branch2.ID()), set.NewAdvancedSet(conflictID0, conflictID1, conflictID2)))
+ cachedBranch3 := conflictDAG.Storage.CachedConflict(branchID3)
defer cachedBranch3.Release()
Branch3, exists := cachedBranch3.Unwrap()
require.True(t, exists)
assert.Equal(t, set.NewAdvancedSet(Branch2.ID()), Branch3.Parents())
- assert.Equal(t, set.NewAdvancedSet(conflictID0, conflictID1, conflictID2), Branch3.ConflictIDs())
+ assert.Equal(t, set.NewAdvancedSet(conflictID0, conflictID1, conflictID2), Branch3.ConflictSetIDs())
- assert.False(t, branchDAG.CreateConflict(branchID2, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0, conflictID1, conflictID2)))
- assert.True(t, branchDAG.UpdateConflictingResources(branchID2, set.NewAdvancedSet(conflictID0, conflictID1, conflictID2)))
- cachedBranch2 = branchDAG.Storage.CachedConflict(branchID2)
+ assert.False(t, conflictDAG.CreateConflict(branchID2, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0, conflictID1, conflictID2)))
+ assert.True(t, conflictDAG.UpdateConflictingResources(branchID2, set.NewAdvancedSet(conflictID0, conflictID1, conflictID2)))
+ cachedBranch2 = conflictDAG.Storage.CachedConflict(branchID2)
defer cachedBranch2.Release()
Branch2, exists = cachedBranch2.Unwrap()
require.True(t, exists)
- assert.Equal(t, set.NewAdvancedSet(conflictID0, conflictID1, conflictID2), Branch2.ConflictIDs())
+ assert.Equal(t, set.NewAdvancedSet(conflictID0, conflictID1, conflictID2), Branch2.ConflictSetIDs())
- assert.True(t, branchDAG.CreateConflict(branchID4, set.NewAdvancedSet(Branch3.ID(), Branch3.ID()), set.NewAdvancedSet(conflictID3)))
- cachedBranch4 := branchDAG.Storage.CachedConflict(branchID4)
+ assert.True(t, conflictDAG.CreateConflict(branchID4, set.NewAdvancedSet(Branch3.ID(), Branch3.ID()), set.NewAdvancedSet(conflictID3)))
+ cachedBranch4 := conflictDAG.Storage.CachedConflict(branchID4)
defer cachedBranch4.Release()
Branch4, exists := cachedBranch4.Unwrap()
require.True(t, exists)
- assert.Equal(t, set.NewAdvancedSet(conflictID3), Branch4.ConflictIDs())
+ assert.Equal(t, set.NewAdvancedSet(conflictID3), Branch4.ConflictSetIDs())
}
func TestConflictDAG_ConflictMembers(t *testing.T) {
- branchDAG := New[types.Identifier, types.Identifier]()
- defer branchDAG.Shutdown()
+ conflictDAG := New[types.Identifier, types.Identifier]()
+ defer conflictDAG.Shutdown()
var (
- branchID2 types.Identifier
- branchID3 types.Identifier
- branchID4 types.Identifier
+ conflictID2 types.Identifier
+ conflictID3 types.Identifier
+ conflictID4 types.Identifier
conflictID0 types.Identifier
)
- require.NoError(t, branchID2.FromRandomness())
- require.NoError(t, branchID3.FromRandomness())
- require.NoError(t, branchID4.FromRandomness())
+ require.NoError(t, conflictID2.FromRandomness())
+ require.NoError(t, conflictID3.FromRandomness())
+ require.NoError(t, conflictID4.FromRandomness())
require.NoError(t, conflictID0.FromRandomness())
- // create initial branches
- assert.True(t, branchDAG.CreateConflict(branchID2, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0)))
- cachedBranch2 := branchDAG.Storage.CachedConflict(branchID2)
- defer cachedBranch2.Release()
- branch2, exists := cachedBranch2.Unwrap()
+ // create initial conflicts
+ assert.True(t, conflictDAG.CreateConflict(conflictID2, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0)))
+ cachedConflict2 := conflictDAG.Storage.CachedConflict(conflictID2)
+ defer cachedConflict2.Release()
+ conflict2, exists := cachedConflict2.Unwrap()
assert.True(t, exists)
- assert.True(t, branchDAG.CreateConflict(branchID3, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0)))
- cachedBranch3 := branchDAG.Storage.CachedConflict(branchID3)
- defer cachedBranch3.Release()
- branch3, exists := cachedBranch3.Unwrap()
+ assert.True(t, conflictDAG.CreateConflict(conflictID3, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0)))
+ cachedConflict3 := conflictDAG.Storage.CachedConflict(conflictID3)
+ defer cachedConflict3.Release()
+ conflict3, exists := cachedConflict3.Unwrap()
assert.True(t, exists)
// assert conflict members
expectedConflictMembers := map[types.Identifier]struct{}{
- branch2.ID(): {}, branch3.ID(): {},
+ conflict2.ID(): {}, conflict3.ID(): {},
}
actualConflictMembers := map[types.Identifier]struct{}{}
- branchDAG.Storage.CachedConflictMembers(conflictID0).Consume(func(conflictMember *ConflictMember[types.Identifier, types.Identifier]) {
+ conflictDAG.Storage.CachedConflictMembers(conflictID0).Consume(func(conflictMember *ConflictMember[types.Identifier, types.Identifier]) {
actualConflictMembers[conflictMember.ConflictID()] = struct{}{}
})
assert.Equal(t, expectedConflictMembers, actualConflictMembers)
- // add branch 4
- assert.True(t, branchDAG.CreateConflict(branchID4, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0)))
- cachedBranch4 := branchDAG.Storage.CachedConflict(branchID4)
- defer cachedBranch4.Release()
- branch4, exists := cachedBranch4.Unwrap()
+ // add conflict 4
+ assert.True(t, conflictDAG.CreateConflict(conflictID4, set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0)))
+ cachedConflict4 := conflictDAG.Storage.CachedConflict(conflictID4)
+ defer cachedConflict4.Release()
+ conflict4, exists := cachedConflict4.Unwrap()
assert.True(t, exists)
- // branch 4 should now also be part of the conflict set
+ // conflict 4 should now also be part of the conflict set
expectedConflictMembers = map[types.Identifier]struct{}{
- branch2.ID(): {}, branch3.ID(): {}, branch4.ID(): {},
+ conflict2.ID(): {}, conflict3.ID(): {}, conflict4.ID(): {},
}
actualConflictMembers = map[types.Identifier]struct{}{}
- branchDAG.Storage.CachedConflictMembers(conflictID0).Consume(func(conflictMember *ConflictMember[types.Identifier, types.Identifier]) {
+ conflictDAG.Storage.CachedConflictMembers(conflictID0).Consume(func(conflictMember *ConflictMember[types.Identifier, types.Identifier]) {
actualConflictMembers[conflictMember.ConflictID()] = struct{}{}
})
assert.Equal(t, expectedConflictMembers, actualConflictMembers)
}
-func TestConflictDAG_SetBranchConfirmed(t *testing.T) {
- branchDAG := New[types.Identifier, types.Identifier]()
- defer branchDAG.Shutdown()
+func TestConflictDAG_SetConflictAccepted(t *testing.T) {
+ conflictDAG := New[types.Identifier, types.Identifier]()
+ defer conflictDAG.Shutdown()
var (
conflictID0 types.Identifier
@@ -136,101 +137,101 @@ func TestConflictDAG_SetBranchConfirmed(t *testing.T) {
require.NoError(t, conflictID2.FromRandomness())
require.NoError(t, conflictID3.FromRandomness())
- branchIDs := make(map[string]types.Identifier)
- branchIDs["Branch2"] = createBranch(t, branchDAG, "Branch2", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0))
- branchIDs["Branch3"] = createBranch(t, branchDAG, "Branch3", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0))
- branchIDs["Branch4"] = createBranch(t, branchDAG, "Branch4", set.NewAdvancedSet(branchIDs["Branch2"]), set.NewAdvancedSet(conflictID1))
- branchIDs["Branch5"] = createBranch(t, branchDAG, "Branch5", set.NewAdvancedSet(branchIDs["Branch2"]), set.NewAdvancedSet(conflictID1))
- branchIDs["Branch6"] = createBranch(t, branchDAG, "Branch6", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
- branchIDs["Branch7"] = createBranch(t, branchDAG, "Branch7", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
- branchIDs["Branch8"] = createBranch(t, branchDAG, "Branch8", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
-
- assert.True(t, branchDAG.SetBranchConfirmed(branchIDs["Branch4"]))
-
- assertInclusionStates(t, branchDAG, branchIDs, map[string]InclusionState{
- "Branch2": Confirmed,
- "Branch3": Rejected,
- "Branch4": Confirmed,
- "Branch5": Rejected,
- "Branch6": Pending,
- "Branch7": Pending,
- "Branch8": Pending,
- "Branch5+Branch7": Rejected,
- "Branch2+Branch7": Pending,
- "Branch5+Branch8": Rejected,
+ conflictIDs := make(map[string]types.Identifier)
+ conflictIDs["Conflict2"] = createConflict(t, conflictDAG, "Conflict2", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0))
+ conflictIDs["Conflict3"] = createConflict(t, conflictDAG, "Conflict3", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID0))
+ conflictIDs["Conflict4"] = createConflict(t, conflictDAG, "Conflict4", set.NewAdvancedSet(conflictIDs["Conflict2"]), set.NewAdvancedSet(conflictID1))
+ conflictIDs["Conflict5"] = createConflict(t, conflictDAG, "Conflict5", set.NewAdvancedSet(conflictIDs["Conflict2"]), set.NewAdvancedSet(conflictID1))
+ conflictIDs["Conflict6"] = createConflict(t, conflictDAG, "Conflict6", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
+ conflictIDs["Conflict7"] = createConflict(t, conflictDAG, "Conflict7", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
+ conflictIDs["Conflict8"] = createConflict(t, conflictDAG, "Conflict8", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
+
+ assert.True(t, conflictDAG.SetConflictAccepted(conflictIDs["Conflict4"]))
+
+ assertConfirmationStates(t, conflictDAG, conflictIDs, map[string]confirmation.State{
+ "Conflict2": confirmation.Accepted,
+ "Conflict3": confirmation.Rejected,
+ "Conflict4": confirmation.Accepted,
+ "Conflict5": confirmation.Rejected,
+ "Conflict6": confirmation.Pending,
+ "Conflict7": confirmation.Pending,
+ "Conflict8": confirmation.Pending,
+ "Conflict5+Conflict7": confirmation.Rejected,
+ "Conflict2+Conflict7": confirmation.Pending,
+ "Conflict5+Conflict8": confirmation.Rejected,
})
- assert.True(t, branchDAG.SetBranchConfirmed(branchIDs["Branch8"]))
+ assert.True(t, conflictDAG.SetConflictAccepted(conflictIDs["Conflict8"]))
// Create a new Conflict in an already-decided Conflict Set results in straight Reject
- branchIDs["Branch9"] = createBranch(t, branchDAG, "Branch9", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
-
- assertInclusionStates(t, branchDAG, branchIDs, map[string]InclusionState{
- "Branch2": Confirmed,
- "Branch3": Rejected,
- "Branch4": Confirmed,
- "Branch5": Rejected,
- "Branch6": Rejected,
- "Branch7": Rejected,
- "Branch8": Confirmed,
- "Branch5+Branch7": Rejected,
- "Branch2+Branch7": Rejected,
- "Branch5+Branch8": Rejected,
- // Spawning a new aggregated branch with Confirmed parents results in Confirmed
- "Branch4+Branch8": Confirmed,
- // Spawning a new aggregated branch with any Rejected parent results in Rejected
- "Branch3+Branch8": Rejected,
- "Branch9": Rejected,
+ conflictIDs["Conflict9"] = createConflict(t, conflictDAG, "Conflict9", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID2))
+
+ assertConfirmationStates(t, conflictDAG, conflictIDs, map[string]confirmation.State{
+ "Conflict2": confirmation.Accepted,
+ "Conflict3": confirmation.Rejected,
+ "Conflict4": confirmation.Accepted,
+ "Conflict5": confirmation.Rejected,
+ "Conflict6": confirmation.Rejected,
+ "Conflict7": confirmation.Rejected,
+ "Conflict8": confirmation.Accepted,
+ "Conflict5+Conflict7": confirmation.Rejected,
+ "Conflict2+Conflict7": confirmation.Rejected,
+ "Conflict5+Conflict8": confirmation.Rejected,
+ // Spawning a new aggregated conflict with confirmation.Accepted parents results in confirmation.Accepted
+ "Conflict4+Conflict8": confirmation.Accepted,
+ // Spawning a new aggregated conflict with any confirmation.Rejected parent results in confirmation.Rejected
+ "Conflict3+Conflict8": confirmation.Rejected,
+ "Conflict9": confirmation.Rejected,
})
- branchIDs["Branch10"] = createBranch(t, branchDAG, "Branch10", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID3))
- branchIDs["Branch11"] = createBranch(t, branchDAG, "Branch11", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID3))
-
- branchDAG.SetBranchConfirmed(branchIDs["Branch10"])
-
- assertInclusionStates(t, branchDAG, branchIDs, map[string]InclusionState{
- "Branch2": Confirmed,
- "Branch3": Rejected,
- "Branch4": Confirmed,
- "Branch5": Rejected,
- "Branch6": Rejected,
- "Branch7": Rejected,
- "Branch8": Confirmed,
- "Branch5+Branch7": Rejected,
- "Branch2+Branch7": Rejected,
- "Branch5+Branch8": Rejected,
- "Branch4+Branch8": Confirmed,
- "Branch3+Branch8": Rejected,
- "Branch9": Rejected,
- "Branch10": Confirmed,
- "Branch11": Rejected,
- "Branch2+Branch7+Branch11": Rejected,
+ conflictIDs["Conflict10"] = createConflict(t, conflictDAG, "Conflict10", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID3))
+ conflictIDs["Conflict11"] = createConflict(t, conflictDAG, "Conflict11", set.NewAdvancedSet(types.Identifier{}), set.NewAdvancedSet(conflictID3))
+
+ conflictDAG.SetConflictAccepted(conflictIDs["Conflict10"])
+
+ assertConfirmationStates(t, conflictDAG, conflictIDs, map[string]confirmation.State{
+ "Conflict2": confirmation.Accepted,
+ "Conflict3": confirmation.Rejected,
+ "Conflict4": confirmation.Accepted,
+ "Conflict5": confirmation.Rejected,
+ "Conflict6": confirmation.Rejected,
+ "Conflict7": confirmation.Rejected,
+ "Conflict8": confirmation.Accepted,
+ "Conflict5+Conflict7": confirmation.Rejected,
+ "Conflict2+Conflict7": confirmation.Rejected,
+ "Conflict5+Conflict8": confirmation.Rejected,
+ "Conflict4+Conflict8": confirmation.Accepted,
+ "Conflict3+Conflict8": confirmation.Rejected,
+ "Conflict9": confirmation.Rejected,
+ "Conflict10": confirmation.Accepted,
+ "Conflict11": confirmation.Rejected,
+ "Conflict2+Conflict7+Conflict11": confirmation.Rejected,
})
}
-func assertInclusionStates[ConflictT, ConflictSetT comparable](t *testing.T, branchDAG *ConflictDAG[ConflictT, ConflictSetT], branchIDsMapping map[string]ConflictT, expectedInclusionStates map[string]InclusionState) {
- for branchIDStrings, expectedInclusionState := range expectedInclusionStates {
- branchIDs := set.NewAdvancedSet[ConflictT]()
- for _, branchString := range strings.Split(branchIDStrings, "+") {
- branchIDs.Add(branchIDsMapping[branchString])
+func assertConfirmationStates[ConflictT, ConflictSetT comparable](t *testing.T, conflictDAG *ConflictDAG[ConflictT, ConflictSetT], conflictIDsMapping map[string]ConflictT, expectedConfirmationStates map[string]confirmation.State) {
+ for conflictIDStrings, expectedConfirmationState := range expectedConfirmationStates {
+ conflictIDs := set.NewAdvancedSet[ConflictT]()
+ for _, conflictString := range strings.Split(conflictIDStrings, "+") {
+ conflictIDs.Add(conflictIDsMapping[conflictString])
}
- assert.Equal(t, expectedInclusionState, branchDAG.InclusionState(branchIDs), "%s inclustionState is not %s", branchIDs, expectedInclusionState)
+ assert.Equal(t, expectedConfirmationState, conflictDAG.ConfirmationState(conflictIDs), "%s inclustionState is not %s", conflictIDs, expectedConfirmationState)
}
}
-func createBranch(t *testing.T, branchDAG *ConflictDAG[types.Identifier, types.Identifier], branchAlias string, parents *set.AdvancedSet[types.Identifier], conflictIDs *set.AdvancedSet[types.Identifier]) types.Identifier {
- var randomBranchID types.Identifier
- if err := randomBranchID.FromRandomness(); err != nil {
+func createConflict(t *testing.T, conflictDAG *ConflictDAG[types.Identifier, types.Identifier], conflictAlias string, parents *set.AdvancedSet[types.Identifier], conflictIDs *set.AdvancedSet[types.Identifier]) types.Identifier {
+ var randomConflictID types.Identifier
+ if err := randomConflictID.FromRandomness(); err != nil {
t.Error(err)
return types.Identifier{}
}
- assert.True(t, branchDAG.CreateConflict(randomBranchID, parents, conflictIDs))
- cachedBranch := branchDAG.Storage.CachedConflict(randomBranchID)
- cachedBranch.Release()
+ assert.True(t, conflictDAG.CreateConflict(randomConflictID, parents, conflictIDs))
+ cachedConflict := conflictDAG.Storage.CachedConflict(randomConflictID)
+ cachedConflict.Release()
- // randomBranchID.RegisterAlias(branchAlias)
+ // randomConflictID.RegisterAlias(conflictAlias)
- return randomBranchID
+ return randomConflictID
}
diff --git a/packages/conflictdag/events.go b/packages/conflictdag/events.go
index e8e42ec4c7..09047120cb 100644
--- a/packages/conflictdag/events.go
+++ b/packages/conflictdag/events.go
@@ -12,27 +12,27 @@ type Events[ConflictID, ConflictingResourceID comparable] struct {
// ConflictCreated is an event that gets triggered whenever a new Conflict is created.
ConflictCreated *event.Event[*ConflictCreatedEvent[ConflictID, ConflictingResourceID]]
- // BranchConflictsUpdated is an event that gets triggered whenever the ConflictIDs of a Conflict are updated.
- BranchConflictsUpdated *event.Event[*BranchConflictsUpdatedEvent[ConflictID, ConflictingResourceID]]
+ // ConflictConflictsUpdated is an event that gets triggered whenever the ConflictIDs of a Conflict are updated.
+ ConflictConflictsUpdated *event.Event[*ConflictConflictsUpdatedEvent[ConflictID, ConflictingResourceID]]
- // BranchParentsUpdated is an event that gets triggered whenever the parent BranchIDs of a Conflict are updated.
- BranchParentsUpdated *event.Event[*BranchParentsUpdatedEvent[ConflictID, ConflictingResourceID]]
+ // ConflictParentsUpdated is an event that gets triggered whenever the parent ConflictIDs of a Conflict are updated.
+ ConflictParentsUpdated *event.Event[*ConflictParentsUpdatedEvent[ConflictID, ConflictingResourceID]]
- // BranchConfirmed is an event that gets triggered whenever a Conflict is confirmed.
- BranchConfirmed *event.Event[*BranchConfirmedEvent[ConflictID]]
+ // ConflictAccepted is an event that gets triggered whenever a Conflict is confirmed.
+ ConflictAccepted *event.Event[*ConflictAcceptedEvent[ConflictID]]
- // BranchRejected is an event that gets triggered whenever a Conflict is rejected.
- BranchRejected *event.Event[*BranchRejectedEvent[ConflictID]]
+ // ConflictRejected is an event that gets triggered whenever a Conflict is rejected.
+ ConflictRejected *event.Event[*ConflictRejectedEvent[ConflictID]]
}
// newEvents returns a new Events object.
func newEvents[ConflictID, ConflictingResourceID comparable]() *Events[ConflictID, ConflictingResourceID] {
return &Events[ConflictID, ConflictingResourceID]{
- ConflictCreated: event.New[*ConflictCreatedEvent[ConflictID, ConflictingResourceID]](),
- BranchConflictsUpdated: event.New[*BranchConflictsUpdatedEvent[ConflictID, ConflictingResourceID]](),
- BranchParentsUpdated: event.New[*BranchParentsUpdatedEvent[ConflictID, ConflictingResourceID]](),
- BranchConfirmed: event.New[*BranchConfirmedEvent[ConflictID]](),
- BranchRejected: event.New[*BranchRejectedEvent[ConflictID]](),
+ ConflictCreated: event.New[*ConflictCreatedEvent[ConflictID, ConflictingResourceID]](),
+ ConflictConflictsUpdated: event.New[*ConflictConflictsUpdatedEvent[ConflictID, ConflictingResourceID]](),
+ ConflictParentsUpdated: event.New[*ConflictParentsUpdatedEvent[ConflictID, ConflictingResourceID]](),
+ ConflictAccepted: event.New[*ConflictAcceptedEvent[ConflictID]](),
+ ConflictRejected: event.New[*ConflictRejectedEvent[ConflictID]](),
}
}
@@ -54,13 +54,13 @@ type ConflictCreatedEvent[ConflictID, ConflictingResourceID comparable] struct {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region BranchConflictsUpdatedEvent //////////////////////////////////////////////////////////////////////////////////
+// region ConflictConflictsUpdatedEvent //////////////////////////////////////////////////////////////////////////////////
-// BranchConflictsUpdatedEvent is a container that acts as a dictionary for the BranchConflictsUpdated event related
+// ConflictConflictsUpdatedEvent is a container that acts as a dictionary for the ConflictConflictsUpdated event related
// parameters.
-type BranchConflictsUpdatedEvent[ConflictID, ConflictingResourceID comparable] struct {
- // BranchID contains the identifier of the updated Conflict.
- BranchID ConflictID
+type ConflictConflictsUpdatedEvent[ConflictID, ConflictingResourceID comparable] struct {
+ // ConflictID contains the identifier of the updated Conflict.
+ ConflictID ConflictID
// NewConflictIDs contains the set of conflicts that this Conflict was added to.
NewConflictIDs *set.AdvancedSet[ConflictingResourceID]
@@ -68,42 +68,42 @@ type BranchConflictsUpdatedEvent[ConflictID, ConflictingResourceID comparable] s
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region BranchParentsUpdatedEvent ////////////////////////////////////////////////////////////////////////////////////
+// region ConflictParentsUpdatedEvent ////////////////////////////////////////////////////////////////////////////////////
-// BranchParentsUpdatedEvent is a container that acts as a dictionary for the BranchParentsUpdated event related
+// ConflictParentsUpdatedEvent is a container that acts as a dictionary for the ConflictParentsUpdated event related
// parameters.
-type BranchParentsUpdatedEvent[ConflictID, ConflictingResourceID comparable] struct {
- // BranchID contains the identifier of the updated Conflict.
- BranchID ConflictID
+type ConflictParentsUpdatedEvent[ConflictID, ConflictingResourceID comparable] struct {
+ // ConflictID contains the identifier of the updated Conflict.
+ ConflictID ConflictID
- // AddedBranch contains the forked parent Conflict that replaces the removed parents.
- AddedBranch ConflictID
+ // AddedConflict contains the forked parent Conflict that replaces the removed parents.
+ AddedConflict ConflictID
- // RemovedBranches contains the parent BranchIDs that were replaced by the newly forked Conflict.
- RemovedBranches *set.AdvancedSet[ConflictID]
+ // RemovedConflicts contains the parent ConflictIDs that were replaced by the newly forked Conflict.
+ RemovedConflicts *set.AdvancedSet[ConflictID]
- // ParentsBranchIDs contains the updated list of parent BranchIDs.
- ParentsBranchIDs *set.AdvancedSet[ConflictID]
+ // ParentsConflictIDs contains the updated list of parent ConflictIDs.
+ ParentsConflictIDs *set.AdvancedSet[ConflictID]
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region BranchConfirmedEvent /////////////////////////////////////////////////////////////////////////////////////////
+// region ConflictAcceptedEvent /////////////////////////////////////////////////////////////////////////////////////////
-// BranchConfirmedEvent is a container that acts as a dictionary for the BranchConfirmed event related parameters.
-type BranchConfirmedEvent[ConflictID comparable] struct {
- // BranchID contains the identifier of the confirmed Conflict.
- BranchID ConflictID
+// ConflictAcceptedEvent is a container that acts as a dictionary for the ConflictAccepted event related parameters.
+type ConflictAcceptedEvent[ConflictID comparable] struct {
+ // ID contains the identifier of the confirmed Conflict.
+ ID ConflictID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region BranchRejectedEvent //////////////////////////////////////////////////////////////////////////////////////////
+// region ConflictRejectedEvent //////////////////////////////////////////////////////////////////////////////////////////
-// BranchRejectedEvent is a container that acts as a dictionary for the BranchRejected event related parameters.
-type BranchRejectedEvent[ConflictID comparable] struct {
- // BranchID contains the identifier of the rejected Conflict.
- BranchID ConflictID
+// ConflictRejectedEvent is a container that acts as a dictionary for the ConflictRejected event related parameters.
+type ConflictRejectedEvent[ConflictID comparable] struct {
+ // ID contains the identifier of the rejected Conflict.
+ ID ConflictID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/conflictdag/options.go b/packages/conflictdag/options.go
index a1958f324d..1d207e9643 100644
--- a/packages/conflictdag/options.go
+++ b/packages/conflictdag/options.go
@@ -33,25 +33,25 @@ func WithCacheTimeProvider(cacheTimeProvider *database.CacheTimeProvider) Option
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region WithBranchCacheTime //////////////////////////////////////////////////////////////////////////////////////////
+// region WithConflictCacheTime //////////////////////////////////////////////////////////////////////////////////////////
-// WithBranchCacheTime is an Option for the ConflictDAG that allows to configure how long Conflict objects stay cached after
+// WithConflictCacheTime is an Option for the ConflictDAG that allows to configure how long Conflict objects stay cached after
// they have been released.
-func WithBranchCacheTime(branchCacheTime time.Duration) Option {
+func WithConflictCacheTime(conflictCacheTime time.Duration) Option {
return func(options *options) {
- options.branchCacheTime = branchCacheTime
+ options.conflictCacheTime = conflictCacheTime
}
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region WithChildBranchCacheTime /////////////////////////////////////////////////////////////////////////////////////
+// region WithChildConflictCacheTime /////////////////////////////////////////////////////////////////////////////////////
-// WithChildBranchCacheTime is an Option for the ConflictDAG that allows to configure how long ChildBranch objects stay
+// WithChildConflictCacheTime is an Option for the ConflictDAG that allows to configure how long ChildConflict objects stay
// cached after they have been released.
-func WithChildBranchCacheTime(childBranchCacheTime time.Duration) Option {
+func WithChildConflictCacheTime(childConflictCacheTime time.Duration) Option {
return func(options *options) {
- options.childBranchCacheTime = childBranchCacheTime
+ options.childConflictCacheTime = childConflictCacheTime
}
}
@@ -72,7 +72,7 @@ func WithConflictMemberCacheTime(conflictMemberCacheTime time.Duration) Option {
// region WithMergeToMaster ////////////////////////////////////////////////////////////////////////////////////////////
// WithMergeToMaster is an Option for the ConflictDAG that allows to configure whether the ConflictDAG should merge
-// confirmed Branches to the MasterBranch.
+// confirmed Conflicts to the MasterConflict.
func WithMergeToMaster(mergeToMaster bool) Option {
return func(options *options) {
options.mergeToMaster = mergeToMaster
@@ -91,18 +91,18 @@ type options struct {
// cacheTimeProvider contains the CacheTimeProvider that overrides the local cache times.
cacheTimeProvider *database.CacheTimeProvider
- // branchCacheTime contains the duration that Conflict objects stay cached after they have been released.
- branchCacheTime time.Duration
+ // conflictCacheTime contains the duration that Conflict objects stay cached after they have been released.
+ conflictCacheTime time.Duration
- // childBranchCacheTime contains the duration that ChildBranch objects stay cached after they have been released.
- childBranchCacheTime time.Duration
+ // childConflictCacheTime contains the duration that ChildConflict objects stay cached after they have been released.
+ childConflictCacheTime time.Duration
// conflictMemberCacheTime contains the duration that ConflictMember objects stay cached after they have been
// released.
conflictMemberCacheTime time.Duration
- // mergeToMaster contains a boolean flag that indicates whether the ConflictDAG should merge Confirmed Branches to the
- // MasterBranch.
+ // mergeToMaster contains a boolean flag that indicates whether the ConflictDAG should merge Confirmed Conflicts to the
+ // MasterConflict.
mergeToMaster bool
}
@@ -112,8 +112,8 @@ func newOptions(option ...Option) (new *options) {
return (&options{
store: mapdb.NewMapDB(),
cacheTimeProvider: database.NewCacheTimeProvider(0),
- branchCacheTime: 60 * time.Second,
- childBranchCacheTime: 60 * time.Second,
+ conflictCacheTime: 60 * time.Second,
+ childConflictCacheTime: 60 * time.Second,
conflictMemberCacheTime: 10 * time.Second,
mergeToMaster: true,
}).apply(option...)
diff --git a/packages/conflictdag/storage.go b/packages/conflictdag/storage.go
index 78e3307b12..884cca94bc 100644
--- a/packages/conflictdag/storage.go
+++ b/packages/conflictdag/storage.go
@@ -15,11 +15,11 @@ import (
// Storage is a ConflictDAG component that bundles the storage related API.
type Storage[ConflictID comparable, ConflictSetID comparable] struct {
- // branchStorage is an object storage used to persist Conflict objects.
- branchStorage *objectstorage.ObjectStorage[*Conflict[ConflictID, ConflictSetID]]
+ // conflictStorage is an object storage used to persist Conflict objects.
+ conflictStorage *objectstorage.ObjectStorage[*Conflict[ConflictID, ConflictSetID]]
- // childBranchStorage is an object storage used to persist ChildBranch objects.
- childBranchStorage *objectstorage.ObjectStorage[*ChildBranch[ConflictID]]
+ // childConflictStorage is an object storage used to persist ChildConflict objects.
+ childConflictStorage *objectstorage.ObjectStorage[*ChildConflict[ConflictID]]
// conflictMemberStorage is an object storage used to persist ConflictMember objects.
conflictMemberStorage *objectstorage.ObjectStorage[*ConflictMember[ConflictSetID, ConflictID]]
@@ -31,15 +31,15 @@ type Storage[ConflictID comparable, ConflictSetID comparable] struct {
// newStorage returns a new Storage instance configured with the given options.
func newStorage[ConflictID comparable, ConflictSetID comparable](options *options) (storage *Storage[ConflictID, ConflictSetID]) {
storage = &Storage[ConflictID, ConflictSetID]{
- branchStorage: objectstorage.NewStructStorage[Conflict[ConflictID, ConflictSetID]](
- objectstorage.NewStoreWithRealm(options.store, database.PrefixConflictDAG, PrefixBranchStorage),
- options.cacheTimeProvider.CacheTime(options.branchCacheTime),
+ conflictStorage: objectstorage.NewStructStorage[Conflict[ConflictID, ConflictSetID]](
+ objectstorage.NewStoreWithRealm(options.store, database.PrefixConflictDAG, PrefixConflictStorage),
+ options.cacheTimeProvider.CacheTime(options.conflictCacheTime),
objectstorage.LeakDetectionEnabled(false),
),
- childBranchStorage: objectstorage.NewStructStorage[ChildBranch[ConflictID]](
- objectstorage.NewStoreWithRealm(options.store, database.PrefixConflictDAG, PrefixChildBranchStorage),
- objectstorage.PartitionKey(new(ChildBranch[ConflictID]).KeyPartitions()...),
- options.cacheTimeProvider.CacheTime(options.childBranchCacheTime),
+ childConflictStorage: objectstorage.NewStructStorage[ChildConflict[ConflictID]](
+ objectstorage.NewStoreWithRealm(options.store, database.PrefixConflictDAG, PrefixChildConflictStorage),
+ objectstorage.PartitionKey(new(ChildConflict[ConflictID]).KeyPartitions()...),
+ options.cacheTimeProvider.CacheTime(options.childConflictCacheTime),
objectstorage.LeakDetectionEnabled(false),
objectstorage.StoreOnCreation(true),
),
@@ -57,49 +57,49 @@ func newStorage[ConflictID comparable, ConflictSetID comparable](options *option
// CachedConflict retrieves the CachedObject representing the named Conflict. The optional computeIfAbsentCallback can be
// used to dynamically initialize a non-existing Conflict.
-func (s *Storage[ConflictID, ConflictSetID]) CachedConflict(conflictID ConflictID, computeIfAbsentCallback ...func(conflictID ConflictID) *Conflict[ConflictID, ConflictSetID]) (cachedBranch *objectstorage.CachedObject[*Conflict[ConflictID, ConflictSetID]]) {
+func (s *Storage[ConflictID, ConflictSetID]) CachedConflict(conflictID ConflictID, computeIfAbsentCallback ...func(conflictID ConflictID) *Conflict[ConflictID, ConflictSetID]) (cachedConflict *objectstorage.CachedObject[*Conflict[ConflictID, ConflictSetID]]) {
if len(computeIfAbsentCallback) >= 1 {
- return s.branchStorage.ComputeIfAbsent(bytes(conflictID), func(key []byte) *Conflict[ConflictID, ConflictSetID] {
+ return s.conflictStorage.ComputeIfAbsent(bytes(conflictID), func(key []byte) *Conflict[ConflictID, ConflictSetID] {
return computeIfAbsentCallback[0](conflictID)
})
}
- return s.branchStorage.Load(bytes(conflictID))
+ return s.conflictStorage.Load(bytes(conflictID))
}
-// CachedChildBranch retrieves the CachedObject representing the named ChildBranch. The optional computeIfAbsentCallback
-// can be used to dynamically initialize a non-existing ChildBranch.
-func (s *Storage[ConflictID, ConflictSetID]) CachedChildBranch(parentBranchID, childBranchID ConflictID, computeIfAbsentCallback ...func(parentBranchID, childBranchID ConflictID) *ChildBranch[ConflictID]) *objectstorage.CachedObject[*ChildBranch[ConflictID]] {
+// CachedChildConflict retrieves the CachedObject representing the named ChildConflict. The optional computeIfAbsentCallback
+// can be used to dynamically initialize a non-existing ChildConflict.
+func (s *Storage[ConflictID, ConflictSetID]) CachedChildConflict(parentConflictID, childConflictID ConflictID, computeIfAbsentCallback ...func(parentConflictID, childConflictID ConflictID) *ChildConflict[ConflictID]) *objectstorage.CachedObject[*ChildConflict[ConflictID]] {
if len(computeIfAbsentCallback) >= 1 {
- return s.childBranchStorage.ComputeIfAbsent(byteutils.ConcatBytes(bytes(parentBranchID), bytes(childBranchID)), func(key []byte) *ChildBranch[ConflictID] {
- return computeIfAbsentCallback[0](parentBranchID, childBranchID)
+ return s.childConflictStorage.ComputeIfAbsent(byteutils.ConcatBytes(bytes(parentConflictID), bytes(childConflictID)), func(key []byte) *ChildConflict[ConflictID] {
+ return computeIfAbsentCallback[0](parentConflictID, childConflictID)
})
}
- return s.childBranchStorage.Load(byteutils.ConcatBytes(bytes(parentBranchID), bytes(childBranchID)))
+ return s.childConflictStorage.Load(byteutils.ConcatBytes(bytes(parentConflictID), bytes(childConflictID)))
}
-// CachedChildBranches retrieves the CachedObjects containing the ChildBranch references approving the named Conflict.
-func (s *Storage[ConflictID, ConflictSetID]) CachedChildBranches(branchID ConflictID) (cachedChildBranches objectstorage.CachedObjects[*ChildBranch[ConflictID]]) {
- cachedChildBranches = make(objectstorage.CachedObjects[*ChildBranch[ConflictID]], 0)
- s.childBranchStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*ChildBranch[ConflictID]]) bool {
- cachedChildBranches = append(cachedChildBranches, cachedObject)
+// CachedChildConflicts retrieves the CachedObjects containing the ChildConflict references approving the named Conflict.
+func (s *Storage[ConflictID, ConflictSetID]) CachedChildConflicts(conflictID ConflictID) (cachedChildConflicts objectstorage.CachedObjects[*ChildConflict[ConflictID]]) {
+ cachedChildConflicts = make(objectstorage.CachedObjects[*ChildConflict[ConflictID]], 0)
+ s.childConflictStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*ChildConflict[ConflictID]]) bool {
+ cachedChildConflicts = append(cachedChildConflicts, cachedObject)
return true
- }, objectstorage.WithIteratorPrefix(bytes(branchID)))
+ }, objectstorage.WithIteratorPrefix(bytes(conflictID)))
return
}
// CachedConflictMember retrieves the CachedObject representing the named ConflictMember. The optional
// computeIfAbsentCallback can be used to dynamically initialize a non-existing ConflictMember.
-func (s *Storage[ConflictID, ConflictSetID]) CachedConflictMember(conflictID ConflictSetID, branchID ConflictID, computeIfAbsentCallback ...func(conflictID ConflictSetID, branchID ConflictID) *ConflictMember[ConflictSetID, ConflictID]) *objectstorage.CachedObject[*ConflictMember[ConflictSetID, ConflictID]] {
+func (s *Storage[ConflictID, ConflictSetID]) CachedConflictMember(conflictSetID ConflictSetID, conflictID ConflictID, computeIfAbsentCallback ...func(conflictSetID ConflictSetID, conflictID ConflictID) *ConflictMember[ConflictSetID, ConflictID]) *objectstorage.CachedObject[*ConflictMember[ConflictSetID, ConflictID]] {
if len(computeIfAbsentCallback) >= 1 {
- return s.conflictMemberStorage.ComputeIfAbsent(byteutils.ConcatBytes(bytes(conflictID), bytes(branchID)), func(key []byte) *ConflictMember[ConflictSetID, ConflictID] {
- return computeIfAbsentCallback[0](conflictID, branchID)
+ return s.conflictMemberStorage.ComputeIfAbsent(byteutils.ConcatBytes(bytes(conflictSetID), bytes(conflictID)), func(key []byte) *ConflictMember[ConflictSetID, ConflictID] {
+ return computeIfAbsentCallback[0](conflictSetID, conflictID)
})
}
- return s.conflictMemberStorage.Load(byteutils.ConcatBytes(bytes(conflictID), bytes(branchID)))
+ return s.conflictMemberStorage.Load(byteutils.ConcatBytes(bytes(conflictSetID), bytes(conflictID)))
}
// CachedConflictMembers retrieves the CachedObjects containing the ConflictMember references related to the named
@@ -118,8 +118,8 @@ func (s *Storage[ConflictID, ConflictSetID]) CachedConflictMembers(conflictID Co
// Prune resets the database and deletes all entities.
func (s *Storage[ConflictID, ConflictSetID]) Prune() (err error) {
for _, storagePrune := range []func() error{
- s.branchStorage.Prune,
- s.childBranchStorage.Prune,
+ s.conflictStorage.Prune,
+ s.childConflictStorage.Prune,
s.conflictMemberStorage.Prune,
} {
if err = storagePrune(); err != nil {
@@ -134,8 +134,8 @@ func (s *Storage[ConflictID, ConflictSetID]) Prune() (err error) {
// Shutdown shuts down the KVStores used to persist data.
func (s *Storage[ConflictID, ConflictSetID]) Shutdown() {
s.shutdownOnce.Do(func() {
- s.branchStorage.Shutdown()
- s.childBranchStorage.Shutdown()
+ s.conflictStorage.Shutdown()
+ s.childConflictStorage.Shutdown()
s.conflictMemberStorage.Shutdown()
})
}
@@ -145,10 +145,10 @@ func (s *Storage[ConflictID, ConflictSetID]) Shutdown() {
// region db prefixes //////////////////////////////////////////////////////////////////////////////////////////////////
const (
- // PrefixBranchStorage defines the storage prefix for the Conflict object storage.
- PrefixBranchStorage byte = iota
- // PrefixChildBranchStorage defines the storage prefix for the ChildBranch object storage.
- PrefixChildBranchStorage
+ // PrefixConflictStorage defines the storage prefix for the Conflict object storage.
+ PrefixConflictStorage byte = iota
+ // PrefixChildConflictStorage defines the storage prefix for the ChildConflict object storage.
+ PrefixChildConflictStorage
// PrefixConflictMemberStorage defines the storage prefix for the ConflictMember object storage.
PrefixConflictMemberStorage
)
diff --git a/packages/conflictdag/types.go b/packages/conflictdag/types.go
index 6cf9a02aa0..5d5ea583de 100644
--- a/packages/conflictdag/types.go
+++ b/packages/conflictdag/types.go
@@ -1,10 +1,9 @@
package conflictdag
import (
- "fmt"
-
"github.com/iotaledger/hive.go/generics/model"
"github.com/iotaledger/hive.go/generics/set"
+ "github.com/iotaledger/hive.go/types/confirmation"
)
// region Conflict /////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -15,110 +14,110 @@ type Conflict[ConflictID, ConflictSetID comparable] struct {
}
type conflict[ConflictID, ConflictSetID comparable] struct {
- // parents contains the parent BranchIDs that this Conflict depends on.
+ // Parents contains the parent ConflictIDs that this Conflict depends on.
Parents *set.AdvancedSet[ConflictID] `serix:"0"`
- // conflictIDs contains the identifiers of the conflicts that this Conflict is part of.
- ConflictIDs *set.AdvancedSet[ConflictSetID] `serix:"1"`
+ // ConflictSetIDs contains the identifiers of the conflictsets that this Conflict is part of.
+ ConflictSetIDs *set.AdvancedSet[ConflictSetID] `serix:"1"`
- // inclusionState contains the InclusionState of the Conflict.
- InclusionState InclusionState `serix:"2"`
+ // ConfirmationState contains the ConfirmationState of the Conflict.
+ ConfirmationState confirmation.State `serix:"2"`
}
-func NewConflict[ConflictID comparable, ConflictSetID comparable](id ConflictID, parents *set.AdvancedSet[ConflictID], conflicts *set.AdvancedSet[ConflictSetID]) (new *Conflict[ConflictID, ConflictSetID]) {
+func NewConflict[ConflictID comparable, ConflictSetID comparable](id ConflictID, parents *set.AdvancedSet[ConflictID], conflictSetIDs *set.AdvancedSet[ConflictSetID]) (new *Conflict[ConflictID, ConflictSetID]) {
new = model.NewStorable[ConflictID, Conflict[ConflictID, ConflictSetID]](&conflict[ConflictID, ConflictSetID]{
- Parents: parents,
- ConflictIDs: conflicts,
- InclusionState: Pending,
+ Parents: parents,
+ ConflictSetIDs: conflictSetIDs,
+ ConfirmationState: confirmation.Pending,
})
new.SetID(id)
return new
}
-// Parents returns the parent BranchIDs that this Conflict depends on.
-func (b *Conflict[ConflictID, ConflictSetID]) Parents() (parents *set.AdvancedSet[ConflictID]) {
- b.RLock()
- defer b.RUnlock()
+// Parents returns the parent ConflictIDs that this Conflict depends on.
+func (c *Conflict[ConflictID, ConflictSetID]) Parents() (parents *set.AdvancedSet[ConflictID]) {
+ c.RLock()
+ defer c.RUnlock()
- return b.M.Parents.Clone()
+ return c.M.Parents.Clone()
}
-// SetParents updates the parent BranchIDs that this Conflict depends on. It returns true if the Conflict was modified.
-func (b *Conflict[ConflictID, ConflictSetID]) SetParents(parents *set.AdvancedSet[ConflictID]) {
- b.Lock()
- defer b.Unlock()
+// SetParents updates the parent ConflictIDs that this Conflict depends on. It returns true if the Conflict was modified.
+func (c *Conflict[ConflictID, ConflictSetID]) SetParents(parents *set.AdvancedSet[ConflictID]) {
+ c.Lock()
+ defer c.Unlock()
- b.M.Parents = parents
- b.SetModified()
+ c.M.Parents = parents
+ c.SetModified()
return
}
-// ConflictIDs returns the identifiers of the conflicts that this Conflict is part of.
-func (b *Conflict[ConflictID, ConflictSetID]) ConflictIDs() (conflictIDs *set.AdvancedSet[ConflictSetID]) {
- b.RLock()
- defer b.RUnlock()
+// ConflictSetIDs returns the identifiers of the conflict sets that this Conflict is part of.
+func (c *Conflict[ConflictID, ConflictSetID]) ConflictSetIDs() (conflictSetIDs *set.AdvancedSet[ConflictSetID]) {
+ c.RLock()
+ defer c.RUnlock()
- return b.M.ConflictIDs.Clone()
+ return c.M.ConflictSetIDs.Clone()
}
-// InclusionState returns the InclusionState of the Conflict.
-func (b *Conflict[ConflictID, ConflictSetID]) InclusionState() (inclusionState InclusionState) {
- b.RLock()
- defer b.RUnlock()
+// ConfirmationState returns the ConfirmationState of the Conflict.
+func (c *Conflict[ConflictID, ConflictSetID]) ConfirmationState() (confirmationState confirmation.State) {
+ c.RLock()
+ defer c.RUnlock()
- return b.M.InclusionState
+ return c.M.ConfirmationState
}
-// addConflict registers the membership of the Conflict in the given Conflict.
-func (b *Conflict[ConflictID, ConflictSetID]) addConflict(conflictID ConflictSetID) (added bool) {
- b.Lock()
- defer b.Unlock()
+// addConflict registers the membership of the Conflict in the given conflict set.
+func (c *Conflict[ConflictID, ConflictSetID]) addConflict(conflictSetID ConflictSetID) (added bool) {
+ c.Lock()
+ defer c.Unlock()
- if added = b.M.ConflictIDs.Add(conflictID); added {
- b.SetModified()
+ if added = c.M.ConflictSetIDs.Add(conflictSetID); added {
+ c.SetModified()
}
return added
}
-// setInclusionState sets the InclusionState of the Conflict.
-func (b *Conflict[ConflictID, ConflictSetID]) setInclusionState(inclusionState InclusionState) (modified bool) {
- b.Lock()
- defer b.Unlock()
+// setConfirmationState sets the ConfirmationState of the Conflict.
+func (c *Conflict[ConflictID, ConflictSetID]) setConfirmationState(confirmationState confirmation.State) (modified bool) {
+ c.Lock()
+ defer c.Unlock()
- if modified = b.M.InclusionState != inclusionState; !modified {
+ if modified = c.M.ConfirmationState != confirmationState; !modified {
return
}
- b.M.InclusionState = inclusionState
- b.SetModified()
+ c.M.ConfirmationState = confirmationState
+ c.SetModified()
return
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region ChildBranch //////////////////////////////////////////////////////////////////////////////////////////////////
+// region ChildConflict //////////////////////////////////////////////////////////////////////////////////////////////////
-// ChildBranch represents the reference between a Conflict and its children.
-type ChildBranch[ConflictID comparable] struct {
- model.StorableReference[ChildBranch[ConflictID], *ChildBranch[ConflictID], ConflictID, ConflictID] `serix:"0"`
+// ChildConflict represents the reference between a Conflict and its children.
+type ChildConflict[ConflictID comparable] struct {
+ model.StorableReference[ChildConflict[ConflictID], *ChildConflict[ConflictID], ConflictID, ConflictID] `serix:"0"`
}
-// NewChildBranch return a new ChildBranch reference from the named parent to the named child.
-func NewChildBranch[ConflictID comparable](parentBranchID, childBranchID ConflictID) *ChildBranch[ConflictID] {
- return model.NewStorableReference[ChildBranch[ConflictID]](parentBranchID, childBranchID)
+// NewChildConflict return a new ChildConflict reference from the named parent to the named child.
+func NewChildConflict[ConflictID comparable](parentConflictID, childConflictID ConflictID) *ChildConflict[ConflictID] {
+ return model.NewStorableReference[ChildConflict[ConflictID]](parentConflictID, childConflictID)
}
-// ParentBranchID returns the identifier of the parent Conflict.
-func (c *ChildBranch[ConflictID]) ParentBranchID() (parentBranchID ConflictID) {
+// ParentConflictID returns the identifier of the parent Conflict.
+func (c *ChildConflict[ConflictID]) ParentConflictID() (parentConflictID ConflictID) {
return c.SourceID()
}
-// ChildBranchID returns the identifier of the child Conflict.
-func (c *ChildBranch[ConflictID]) ChildBranchID() (childBranchID ConflictID) {
+// ChildConflictID returns the identifier of the child Conflict.
+func (c *ChildConflict[ConflictID]) ChildConflictID() (childConflictID ConflictID) {
return c.TargetID()
}
@@ -136,46 +135,14 @@ func NewConflictMember[ConflictSetID comparable, ConflictID comparable](conflict
return model.NewStorableReference[ConflictMember[ConflictSetID, ConflictID]](conflictSetID, conflictID)
}
-// ConflictSetID returns the identifier of the Conflict.
-func (c *ConflictMember[ConflictSetID, ConflictID]) ConflictSetID() (conflictID ConflictSetID) {
+// ConflictSetID returns the identifier of Conflict set.
+func (c *ConflictMember[ConflictSetID, ConflictID]) ConflictSetID() (conflictSetID ConflictSetID) {
return c.SourceID()
}
// ConflictID returns the identifier of the Conflict.
-func (c *ConflictMember[ConflictSetID, ConflictID]) ConflictID() (branchID ConflictID) {
+func (c *ConflictMember[ConflictSetID, ConflictID]) ConflictID() (conflictID ConflictID) {
return c.TargetID()
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region InclusionState ///////////////////////////////////////////////////////////////////////////////////////////////
-
-// InclusionState represents the confirmation status of branches in the ConflictDAG.
-type InclusionState uint8
-
-const (
- // Pending represents elements that have neither been confirmed nor rejected.
- Pending InclusionState = iota
-
- // Confirmed represents elements that have been confirmed and will stay part of the ledger state forever.
- Confirmed
-
- // Rejected represents elements that have been rejected and will not be included in the ledger state.
- Rejected
-)
-
-// String returns a human-readable representation of the InclusionState.
-func (i InclusionState) String() string {
- switch i {
- case Pending:
- return "InclusionState(Pending)"
- case Confirmed:
- return "InclusionState(Confirmed)"
- case Rejected:
- return "InclusionState(Rejected)"
- default:
- return fmt.Sprintf("InclusionState(%X)", uint8(i))
- }
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/conflictdag/utils.go b/packages/conflictdag/utils.go
index 6da203b850..b8135742ce 100644
--- a/packages/conflictdag/utils.go
+++ b/packages/conflictdag/utils.go
@@ -12,77 +12,77 @@ import (
// Utils is a ConflictDAG component that bundles utility related API to simplify common interactions with the ConflictDAG.
type Utils[ConflictID comparable, ConflictSetID comparable] struct {
- // branchDAG contains a reference to the ConflictDAG that created the Utils.
- branchDAG *ConflictDAG[ConflictID, ConflictSetID]
+ // conflictDAG contains a reference to the ConflictDAG that created the Utils.
+ conflictDAG *ConflictDAG[ConflictID, ConflictSetID]
}
// newUtils returns a new Utils instance for the given ConflictDAG.
-func newUtils[ConflictID comparable, ConflictSetID comparable](branchDAG *ConflictDAG[ConflictID, ConflictSetID]) (new *Utils[ConflictID, ConflictSetID]) {
+func newUtils[ConflictID comparable, ConflictSetID comparable](conflictDAG *ConflictDAG[ConflictID, ConflictSetID]) (new *Utils[ConflictID, ConflictSetID]) {
return &Utils[ConflictID, ConflictSetID]{
- branchDAG: branchDAG,
+ conflictDAG: conflictDAG,
}
}
-func (u *Utils[ConflictID, ConflictSetID]) ForEachChildBranchID(branchID ConflictID, callback func(childBranchID ConflictID)) {
- u.branchDAG.Storage.CachedChildBranches(branchID).Consume(func(childBranch *ChildBranch[ConflictID]) {
- callback(childBranch.ChildBranchID())
+func (u *Utils[ConflictID, ConflictSetID]) ForEachChildConflictID(conflictID ConflictID, callback func(childConflictID ConflictID)) {
+ u.conflictDAG.Storage.CachedChildConflicts(conflictID).Consume(func(childConflict *ChildConflict[ConflictID]) {
+ callback(childConflict.ChildConflictID())
})
}
-// ForEachBranch iterates over every existing Conflict in the entire Storage.
-func (u *Utils[ConflictID, ConflictSetID]) ForEachBranch(consumer func(branch *Conflict[ConflictID, ConflictSetID])) {
- u.branchDAG.Storage.branchStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*Conflict[ConflictID, ConflictSetID]]) bool {
- cachedObject.Consume(func(branch *Conflict[ConflictID, ConflictSetID]) {
- consumer(branch)
+// ForEachConflict iterates over every existing Conflict in the entire Storage.
+func (u *Utils[ConflictID, ConflictSetID]) ForEachConflict(consumer func(conflict *Conflict[ConflictID, ConflictSetID])) {
+ u.conflictDAG.Storage.conflictStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*Conflict[ConflictID, ConflictSetID]]) bool {
+ cachedObject.Consume(func(conflict *Conflict[ConflictID, ConflictSetID]) {
+ consumer(conflict)
})
return true
})
}
-// ForEachConflictingBranchID executes the callback for each Conflict that is conflicting with the named Conflict.
-func (u *Utils[ConflictID, ConflictSetID]) ForEachConflictingBranchID(branchID ConflictID, callback func(conflictingBranchID ConflictID) bool) {
- u.branchDAG.Storage.CachedConflict(branchID).Consume(func(branch *Conflict[ConflictID, ConflictSetID]) {
- u.forEachConflictingBranchID(branch, callback)
+// ForEachConflictingConflictID executes the callback for each Conflict that is conflicting with the named Conflict.
+func (u *Utils[ConflictID, ConflictSetID]) ForEachConflictingConflictID(conflictID ConflictID, callback func(conflictingConflictID ConflictID) bool) {
+ u.conflictDAG.Storage.CachedConflict(conflictID).Consume(func(conflict *Conflict[ConflictID, ConflictSetID]) {
+ u.forEachConflictingConflictID(conflict, callback)
})
}
-// ForEachConnectedConflictingBranchID executes the callback for each Conflict that is directly or indirectly connected to
+// ForEachConnectedConflictingConflictID executes the callback for each Conflict that is directly or indirectly connected to
// the named Conflict through a chain of intersecting conflicts.
-func (u *Utils[ConflictID, ConflictSetID]) ForEachConnectedConflictingBranchID(branchID ConflictID, callback func(conflictingBranchID ConflictID)) {
- traversedBranches := set.New[ConflictID]()
+func (u *Utils[ConflictID, ConflictSetID]) ForEachConnectedConflictingConflictID(conflictID ConflictID, callback func(conflictingConflictID ConflictID)) {
+ traversedConflicts := set.New[ConflictID]()
conflictSetsWalker := walker.New[ConflictSetID]()
- processBranchAndQueueConflictSets := func(branchID ConflictID) {
- if !traversedBranches.Add(branchID) {
+ processConflictAndQueueConflictSets := func(conflictID ConflictID) {
+ if !traversedConflicts.Add(conflictID) {
return
}
- u.branchDAG.Storage.CachedConflict(branchID).Consume(func(branch *Conflict[ConflictID, ConflictSetID]) {
- _ = branch.ConflictIDs().ForEach(func(conflictID ConflictSetID) (err error) {
- conflictSetsWalker.Push(conflictID)
+ u.conflictDAG.Storage.CachedConflict(conflictID).Consume(func(conflict *Conflict[ConflictID, ConflictSetID]) {
+ _ = conflict.ConflictSetIDs().ForEach(func(conflictSetID ConflictSetID) (err error) {
+ conflictSetsWalker.Push(conflictSetID)
return nil
})
})
}
- processBranchAndQueueConflictSets(branchID)
+ processConflictAndQueueConflictSets(conflictID)
for conflictSetsWalker.HasNext() {
- u.branchDAG.Storage.CachedConflictMembers(conflictSetsWalker.Next()).Consume(func(conflictMember *ConflictMember[ConflictSetID, ConflictID]) {
- processBranchAndQueueConflictSets(conflictMember.ConflictID())
+ u.conflictDAG.Storage.CachedConflictMembers(conflictSetsWalker.Next()).Consume(func(conflictMember *ConflictMember[ConflictSetID, ConflictID]) {
+ processConflictAndQueueConflictSets(conflictMember.ConflictID())
})
}
- traversedBranches.ForEach(callback)
+ traversedConflicts.ForEach(callback)
}
-// forEachConflictingBranchID executes the callback for each Conflict that is conflicting with the named Conflict.
-func (u *Utils[ConflictID, ConflictSetID]) forEachConflictingBranchID(branch *Conflict[ConflictID, ConflictSetID], callback func(conflictingBranchID ConflictID) bool) {
- for it := branch.ConflictIDs().Iterator(); it.HasNext(); {
+// forEachConflictingConflictID executes the callback for each Conflict that is conflicting with the named Conflict.
+func (u *Utils[ConflictID, ConflictSetID]) forEachConflictingConflictID(conflict *Conflict[ConflictID, ConflictSetID], callback func(conflictingConflictID ConflictID) bool) {
+ for it := conflict.ConflictSetIDs().Iterator(); it.HasNext(); {
abort := false
- u.branchDAG.Storage.CachedConflictMembers(it.Next()).Consume(func(conflictMember *ConflictMember[ConflictSetID, ConflictID]) {
- if abort || conflictMember.ConflictID() == branch.ID() {
+ u.conflictDAG.Storage.CachedConflictMembers(it.Next()).Consume(func(conflictMember *ConflictMember[ConflictSetID, ConflictID]) {
+ if abort || conflictMember.ConflictID() == conflict.ID() {
return
}
diff --git a/packages/consensus/acceptance/gadget.go b/packages/consensus/acceptance/gadget.go
new file mode 100644
index 0000000000..500a644352
--- /dev/null
+++ b/packages/consensus/acceptance/gadget.go
@@ -0,0 +1,293 @@
+package acceptance
+
+import (
+ "sync"
+
+ "github.com/iotaledger/hive.go/generics/set"
+ "github.com/iotaledger/hive.go/generics/walker"
+ "github.com/iotaledger/hive.go/types/confirmation"
+
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+ "github.com/iotaledger/goshimmer/packages/markers"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+)
+
+// BlockThresholdTranslation is a function which translates approval weight to a confirmation.State.
+type BlockThresholdTranslation func(aw float64) confirmation.State
+
+// ConflictThresholdTranslation is a function which translates approval weight to a confirmation.State.
+type ConflictThresholdTranslation func(conflictID utxo.TransactionID, aw float64) confirmation.State
+
+const (
+ acceptanceThreshold = 0.67
+)
+
+var (
+ // DefaultConflictTranslation is the default function to translate the approval weight to confirmation.State of a conflict.
+ DefaultConflictTranslation ConflictThresholdTranslation = func(conflictID utxo.TransactionID, aw float64) confirmation.State {
+ if aw >= acceptanceThreshold {
+ return confirmation.Accepted
+ }
+
+ return confirmation.Pending
+ }
+
+ // DefaultBlockTranslation is the default function to translate the approval weight to confirmation.State of a block.
+ DefaultBlockTranslation BlockThresholdTranslation = func(aw float64) confirmation.State {
+ if aw >= acceptanceThreshold {
+ return confirmation.Accepted
+ }
+
+ return confirmation.Pending
+ }
+)
+
+// Option is a function setting an option on an Options struct.
+type Option func(*Options)
+
+// Options defines the options for a Gadget.
+type Options struct {
+ ConflictTransFunc ConflictThresholdTranslation
+ BlockTransFunc BlockThresholdTranslation
+}
+
+var defaultOpts = []Option{
+ WithConflictThresholdTranslation(DefaultConflictTranslation),
+ WithBlockThresholdTranslation(DefaultBlockTranslation),
+}
+
+// WithBlockThresholdTranslation returns an Option setting the BlockThresholdTranslation.
+func WithBlockThresholdTranslation(f BlockThresholdTranslation) Option {
+ return func(opts *Options) {
+ opts.BlockTransFunc = f
+ }
+}
+
+// WithConflictThresholdTranslation returns an Option setting the ConflictThresholdTranslation.
+func WithConflictThresholdTranslation(f ConflictThresholdTranslation) Option {
+ return func(opts *Options) {
+ opts.ConflictTransFunc = f
+ }
+}
+
+// Gadget is a GadgetInterface which simply translates approval weight down to confirmation.State
+// and then applies it to blocks, conflicts, transactions and outputs.
+type Gadget struct {
+ tangle *tangle.Tangle
+ opts *Options
+ lastConfirmedMarkers map[markers.SequenceID]markers.Index
+ lastConfirmedMarkersMutex sync.RWMutex
+ events *tangle.ConfirmationEvents
+}
+
+// NewSimpleFinalityGadget creates a new Gadget.
+func NewSimpleFinalityGadget(t *tangle.Tangle, opts ...Option) *Gadget {
+ sfg := &Gadget{
+ tangle: t,
+ opts: &Options{},
+ lastConfirmedMarkers: make(map[markers.SequenceID]markers.Index),
+ events: tangle.NewConfirmationEvents(),
+ }
+
+ for _, defOpt := range defaultOpts {
+ defOpt(sfg.opts)
+ }
+ for _, opt := range opts {
+ opt(sfg.opts)
+ }
+
+ return sfg
+}
+
+// Events returns the events this gadget exposes.
+func (s *Gadget) Events() *tangle.ConfirmationEvents {
+ return s.events
+}
+
+// IsMarkerConfirmed returns whether the given marker is confirmed.
+func (s *Gadget) IsMarkerConfirmed(marker markers.Marker) (confirmed bool) {
+ blockID := s.tangle.Booker.MarkersManager.BlockID(marker)
+ if blockID == tangle.EmptyBlockID {
+ return false
+ }
+
+ s.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *tangle.BlockMetadata) {
+ if blockMetadata.ConfirmationState().IsAccepted() {
+ confirmed = true
+ }
+ })
+ return
+}
+
+// IsBlockConfirmed returns whether the given block is confirmed.
+func (s *Gadget) IsBlockConfirmed(blkID tangle.BlockID) (confirmed bool) {
+ s.tangle.Storage.BlockMetadata(blkID).Consume(func(blockMetadata *tangle.BlockMetadata) {
+ if blockMetadata.ConfirmationState().IsAccepted() {
+ confirmed = true
+ }
+ })
+ return
+}
+
+// FirstUnconfirmedMarkerIndex returns the first Index in the given Sequence that was not confirmed, yet.
+func (s *Gadget) FirstUnconfirmedMarkerIndex(sequenceID markers.SequenceID) (index markers.Index) {
+ s.lastConfirmedMarkersMutex.Lock()
+ defer s.lastConfirmedMarkersMutex.Unlock()
+
+ // TODO: MAP GROWS INDEFINITELY
+ index, exists := s.lastConfirmedMarkers[sequenceID]
+ if exists {
+ return index + 1
+ }
+
+ s.tangle.Booker.MarkersManager.Manager.Sequence(sequenceID).Consume(func(sequence *markers.Sequence) {
+ index = sequence.LowestIndex()
+ })
+
+ if !s.tangle.ConfirmationOracle.IsMarkerConfirmed(markers.NewMarker(sequenceID, index)) {
+ return index
+ }
+
+ // do-while loop
+ s.lastConfirmedMarkers[sequenceID] = index
+ index++
+ for s.tangle.ConfirmationOracle.IsMarkerConfirmed(markers.NewMarker(sequenceID, index)) {
+ s.lastConfirmedMarkers[sequenceID] = index
+ index++
+ }
+
+ return index
+}
+
+// IsConflictConfirmed returns whether the given conflict is confirmed.
+func (s *Gadget) IsConflictConfirmed(conflictID utxo.TransactionID) (confirmed bool) {
+ return s.tangle.Ledger.ConflictDAG.ConfirmationState(utxo.NewTransactionIDs(conflictID)).IsAccepted()
+}
+
+// IsTransactionConfirmed returns whether the given transaction is confirmed.
+func (s *Gadget) IsTransactionConfirmed(transactionID utxo.TransactionID) (confirmed bool) {
+ s.tangle.Ledger.Storage.CachedTransactionMetadata(transactionID).Consume(func(transactionMetadata *ledger.TransactionMetadata) {
+ if transactionMetadata.ConfirmationState().IsAccepted() {
+ confirmed = true
+ }
+ })
+ return
+}
+
+// HandleMarker receives a marker and its current approval weight. It propagates the ConfirmationState according to AW to its past cone.
+func (s *Gadget) HandleMarker(marker markers.Marker, aw float64) (err error) {
+ confirmationState := s.opts.BlockTransFunc(aw)
+ if confirmationState.IsPending() {
+ return nil
+ }
+
+ // get block ID of marker
+ blockID := s.tangle.Booker.MarkersManager.BlockID(marker)
+ s.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *tangle.BlockMetadata) {
+ if confirmationState <= blockMetadata.ConfirmationState() {
+ return
+ }
+
+ if confirmationState.IsAccepted() {
+ s.setMarkerConfirmed(marker)
+ }
+
+ s.propagateConfirmationStateToBlockPastCone(blockID, confirmationState)
+ })
+
+ return err
+}
+
+// setMarkerConfirmed marks the current Marker as confirmed.
+func (s *Gadget) setMarkerConfirmed(marker markers.Marker) (updated bool) {
+ s.lastConfirmedMarkersMutex.Lock()
+ defer s.lastConfirmedMarkersMutex.Unlock()
+
+ if s.lastConfirmedMarkers[marker.SequenceID()] > marker.Index() {
+ return false
+ }
+
+ s.lastConfirmedMarkers[marker.SequenceID()] = marker.Index()
+
+ return true
+}
+
+// propagateConfirmationStateToBlockPastCone propagates the given ConfirmationState to the past cone of the Block.
+func (s *Gadget) propagateConfirmationStateToBlockPastCone(blockID tangle.BlockID, confirmationState confirmation.State) {
+ strongParentWalker := walker.New[tangle.BlockID](false).Push(blockID)
+ weakParentsSet := set.New[tangle.BlockID]()
+
+ for strongParentWalker.HasNext() {
+ strongParentBlockID := strongParentWalker.Next()
+ if strongParentBlockID == tangle.EmptyBlockID {
+ continue
+ }
+
+ s.tangle.Storage.BlockMetadata(strongParentBlockID).Consume(func(blockMetadata *tangle.BlockMetadata) {
+ if blockMetadata.ConfirmationState() >= confirmationState {
+ return
+ }
+
+ s.tangle.Storage.Block(strongParentBlockID).Consume(func(block *tangle.Block) {
+ if !s.setBlockConfirmationState(block, blockMetadata, confirmationState) {
+ return
+ }
+
+ block.ForEachParent(func(parent tangle.Parent) {
+ if parent.Type == tangle.StrongParentType {
+ strongParentWalker.Push(parent.ID)
+ return
+ }
+ weakParentsSet.Add(parent.ID)
+ })
+ })
+ })
+ }
+
+ weakParentsSet.ForEach(func(weakParent tangle.BlockID) {
+ if strongParentWalker.Pushed(weakParent) {
+ return
+ }
+ s.tangle.Storage.BlockMetadata(weakParent).Consume(func(blockMetadata *tangle.BlockMetadata) {
+ if blockMetadata.ConfirmationState() >= confirmationState {
+ return
+ }
+
+ s.tangle.Storage.Block(weakParent).Consume(func(block *tangle.Block) {
+ s.setBlockConfirmationState(block, blockMetadata, confirmationState)
+ })
+ })
+ })
+}
+
+// HandleConflict receives a conflictID and its approval weight. It propagates the ConfirmationState according to AW to transactions
+// in the conflict (UTXO future cone) and their outputs.
+func (s *Gadget) HandleConflict(conflictID utxo.TransactionID, aw float64) (err error) {
+ if s.opts.ConflictTransFunc(conflictID, aw).IsAccepted() {
+ s.tangle.Ledger.ConflictDAG.SetConflictAccepted(conflictID)
+ }
+
+ return nil
+}
+
+func (s *Gadget) setBlockConfirmationState(block *tangle.Block, blockMetadata *tangle.BlockMetadata, confirmationState confirmation.State) (modified bool) {
+ // abort if block has ConfirmationState already set
+ if modified = blockMetadata.SetConfirmationState(confirmationState); !modified {
+ return
+ }
+
+ if confirmationState.IsAccepted() {
+ s.Events().BlockAccepted.Trigger(&tangle.BlockAcceptedEvent{
+ Block: block,
+ })
+
+ // set ConfirmationState of payload (applicable only to transactions)
+ if tx, ok := block.Payload().(*devnetvm.Transaction); ok {
+ s.tangle.Ledger.SetTransactionInclusionTime(tx.ID(), block.IssuingTime())
+ }
+ }
+
+ return modified
+}
diff --git a/packages/consensus/acceptance/gadget_test.go b/packages/consensus/acceptance/gadget_test.go
new file mode 100644
index 0000000000..9053c34619
--- /dev/null
+++ b/packages/consensus/acceptance/gadget_test.go
@@ -0,0 +1,354 @@
+package acceptance
+
+import (
+ "fmt"
+ "runtime/debug"
+ "testing"
+
+ "github.com/iotaledger/hive.go/generics/event"
+ "github.com/iotaledger/hive.go/types/confirmation"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
+ "github.com/stretchr/testify/require"
+
+ "github.com/iotaledger/goshimmer/packages/conflictdag"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+)
+
+type EventHandlerMock struct {
+ mock.Mock
+}
+
+const (
+ testingAcceptanceThreshold = 0.5
+)
+
+var (
+ TestConflictTranslation ConflictThresholdTranslation = func(conflictID utxo.TransactionID, aw float64) confirmation.State {
+ if aw >= testingAcceptanceThreshold {
+ return confirmation.Accepted
+ }
+
+ return confirmation.Pending
+ }
+
+ TestBlockTranslation BlockThresholdTranslation = func(aw float64) confirmation.State {
+ if aw >= testingAcceptanceThreshold {
+ return confirmation.Accepted
+ }
+
+ return confirmation.Pending
+ }
+)
+
+func (handler *EventHandlerMock) BlockAccepted(blkID tangle.BlockID) {
+ handler.Called(blkID)
+}
+
+func (handler *EventHandlerMock) ConflictAccepted(conflictID utxo.TransactionID) {
+ handler.Called(conflictID)
+}
+
+func (handler *EventHandlerMock) TransactionAccepted(txID utxo.TransactionID) {
+ handler.Called(txID)
+}
+
+func (handler *EventHandlerMock) WireUpFinalityGadget(ag *Gadget, tangleInstance *tangle.Tangle) {
+ ag.Events().BlockAccepted.Hook(event.NewClosure(func(event *tangle.BlockAcceptedEvent) { handler.BlockAccepted(event.Block.ID()) }))
+ tangleInstance.Ledger.ConflictDAG.Events.ConflictAccepted.Hook(event.NewClosure(func(event *conflictdag.ConflictAcceptedEvent[utxo.TransactionID]) {
+ handler.ConflictAccepted(event.ID)
+ }))
+ tangleInstance.Ledger.Events.TransactionAccepted.Hook(event.NewClosure(func(event *ledger.TransactionAcceptedEvent) { handler.TransactionAccepted(event.TransactionID) }))
+}
+
+func TestSimpleFinalityGadget(t *testing.T) {
+ processBlkScenario := tangle.ProcessBlockScenario(t, tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+ defer func(processBlkScenario *tangle.TestScenario, t *testing.T) {
+ if err := recover(); err != nil {
+ t.Error(err)
+ fmt.Println(string(debug.Stack()))
+ return
+ }
+
+ if err := processBlkScenario.Cleanup(t); err != nil {
+ require.NoError(t, err)
+ }
+ }(processBlkScenario, t)
+
+ testOpts := []Option{
+ WithConflictThresholdTranslation(TestConflictTranslation),
+ WithBlockThresholdTranslation(TestBlockTranslation),
+ }
+
+ sfg := NewSimpleFinalityGadget(processBlkScenario.Tangle, testOpts...)
+ wireUpEvents(t, processBlkScenario.Tangle, sfg)
+
+ eventHandlerMock := &EventHandlerMock{}
+ eventHandlerMock.WireUpFinalityGadget(sfg, processBlkScenario.Tangle)
+
+ prePostSteps := []*tangle.PrePostStepTuple{
+ // Block1
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block1"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block2
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block1", "Block2"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block3
+ {
+ Pre: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ eventHandlerMock.On("BlockAccepted", testFramework.Block("Block1").ID())
+ },
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1"},
+ confirmation.Pending: {"Block2", "Block3"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block4
+ {
+ Pre: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ eventHandlerMock.On("BlockAccepted", testFramework.Block("Block2").ID())
+ },
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2"},
+ confirmation.Pending: {"Block3", "Block4"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block5
+ {
+ Pre: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ eventHandlerMock.On("BlockAccepted", testFramework.Block("Block3").ID())
+ eventHandlerMock.On("BlockAccepted", testFramework.Block("Block4").ID())
+ },
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2", "Block3", "Block4"},
+ confirmation.Pending: {"Block5"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block6
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2", "Block3", "Block4"},
+ confirmation.Pending: {"Block5", "Block6"},
+ })
+ assertConflictsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block5", "Block6"},
+ })
+ assertTxsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block5", "Block6"},
+ })
+ },
+ },
+ // Block7
+ {
+ Pre: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ eventHandlerMock.On("BlockAccepted", testFramework.Block("Block5").ID())
+ eventHandlerMock.On("TransactionAccepted", testFramework.TransactionID("Block5"))
+ eventHandlerMock.On("ConflictAccepted", testFramework.ConflictIDFromBlock("Block5"))
+ },
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2", "Block3", "Block4", "Block5"},
+ confirmation.Pending: {"Block7", "Block6"},
+ })
+ assertConflictsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block5"},
+ confirmation.Rejected: {"Block6"},
+ })
+ assertTxsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block5"},
+ confirmation.Rejected: {"Block6"},
+ confirmation.Pending: {"Block7"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block7.1
+ {
+ Pre: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ eventHandlerMock.On("BlockAccepted", testFramework.Block("Block7").ID())
+ eventHandlerMock.On("TransactionAccepted", testFramework.TransactionID("Block7"))
+ },
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2", "Block3", "Block4", "Block5", "Block7"},
+ confirmation.Pending: {"Block7.1", "Block6"},
+ })
+ assertConflictsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block5"},
+ confirmation.Rejected: {"Block6"},
+ })
+ assertTxsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block5", "Block7"},
+ confirmation.Rejected: {"Block6"},
+ })
+ eventHandlerMock.AssertExpectations(t)
+ },
+ },
+ // Block8
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2", "Block3", "Block4", "Block5", "Block7"},
+ confirmation.Pending: {"Block7.1", "Block6", "Block8"},
+ })
+ assertConflictsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block5"},
+ confirmation.Rejected: {"Block6"},
+ })
+ assertTxsConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block5", "Block7"},
+ confirmation.Rejected: {"Block6"},
+ })
+ },
+ },
+ }
+ for i := 0; processBlkScenario.HasNext(); i++ {
+ if len(prePostSteps)-1 < i {
+ processBlkScenario.Next(nil)
+ continue
+ }
+ processBlkScenario.Next(prePostSteps[i])
+ }
+}
+
+func TestWeakVsStrongParentWalk(t *testing.T) {
+ processBlkScenario := tangle.ProcessBlockScenario2(t, tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+ defer func(processBlkScenario *tangle.TestScenario, t *testing.T) {
+ if err := processBlkScenario.Cleanup(t); err != nil {
+ require.NoError(t, err)
+ }
+ }(processBlkScenario, t)
+
+ testOpts := []Option{
+ WithConflictThresholdTranslation(TestConflictTranslation),
+ WithBlockThresholdTranslation(TestBlockTranslation),
+ }
+
+ sfg := NewSimpleFinalityGadget(processBlkScenario.Tangle, testOpts...)
+ wireUpEvents(t, processBlkScenario.Tangle, sfg)
+
+ prePostSteps := []*tangle.PrePostStepTuple{
+ // Block0
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block0"},
+ })
+ },
+ },
+ // Block1
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block1"},
+ })
+ },
+ },
+ // Block2
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Pending: {"Block1", "Block2"},
+ })
+ },
+ },
+ // Block3
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {},
+ confirmation.Pending: {"Block1", "Block2", "Block3"},
+ })
+ },
+ },
+ // Block4
+ {
+ Post: func(t *testing.T, testFramework *tangle.BlockTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
+ sfg.propagateConfirmationStateToBlockPastCone(testFramework.Block("Block4").ID(), confirmation.Accepted)
+ assertBlksConfirmationState(t, testFramework, map[confirmation.State][]string{
+ confirmation.Accepted: {"Block1", "Block2", "Block3", "Block4"},
+ })
+ },
+ },
+ }
+
+ for i := 0; processBlkScenario.HasNext(); i++ {
+ if len(prePostSteps)-1 < i {
+ processBlkScenario.Next(nil)
+ continue
+ }
+ processBlkScenario.Next(prePostSteps[i])
+ }
+}
+
+func assertBlksConfirmationState(t *testing.T, testFramework *tangle.BlockTestFramework, expected map[confirmation.State][]string) {
+ for expectedConfirmationState, blkAliases := range expected {
+ for _, blkAlias := range blkAliases {
+ actualConfirmationState := testFramework.BlockMetadata(blkAlias).ConfirmationState()
+ assert.Equal(t, expectedConfirmationState, actualConfirmationState, "expected blk %s ConfirmationState to be %s but is %s", blkAlias, expectedConfirmationState, actualConfirmationState)
+ }
+ }
+}
+
+func assertTxsConfirmationState(t *testing.T, testFramework *tangle.BlockTestFramework, expected map[confirmation.State][]string) {
+ for expectedConfirmationState, blkAliases := range expected {
+ for _, blkAlias := range blkAliases {
+ txMeta := testFramework.TransactionMetadata(blkAlias)
+ actualConfirmationState := txMeta.ConfirmationState()
+ assert.Equal(t, expectedConfirmationState, actualConfirmationState, "expected tx %s (via blk %s) ConfirmationState to be %s but is %s", txMeta.ID(), blkAlias, expectedConfirmationState, actualConfirmationState)
+ // auto. also check outputs
+ for _, output := range testFramework.Transaction(blkAlias).(*devnetvm.Transaction).Essence().Outputs() {
+ outputConfirmationState := testFramework.OutputMetadata(output.ID()).ConfirmationState()
+ assert.Equal(t, expectedConfirmationState, outputConfirmationState, "expected also tx output %s (via blk %s) ConfirmationState to be %s but is %s", output.ID(), blkAlias, expectedConfirmationState, outputConfirmationState)
+ }
+ }
+ }
+}
+
+func assertConflictsConfirmationState(t *testing.T, testFramework *tangle.BlockTestFramework, expected map[confirmation.State][]string) {
+ for expectedConfirmationState, blkAliases := range expected {
+ for _, blkAlias := range blkAliases {
+ conflict := testFramework.Conflict(blkAlias)
+ actualConfirmationState := testFramework.TransactionMetadata(blkAlias).ConfirmationState()
+ assert.Equal(t, expectedConfirmationState, actualConfirmationState, "expected conflict %s (via blk %s) ConfirmationState to be %s but is %s", conflict.ID(), blkAlias, expectedConfirmationState, actualConfirmationState)
+ }
+ }
+}
+
+func wireUpEvents(t *testing.T, testTangle *tangle.Tangle, ag *Gadget) {
+ testTangle.ApprovalWeightManager.Events.MarkerWeightChanged.Hook(event.NewClosure(func(e *tangle.MarkerWeightChangedEvent) {
+ if err := ag.HandleMarker(e.Marker, e.Weight); err != nil {
+ t.Log(err)
+ }
+ }))
+ testTangle.ApprovalWeightManager.Events.ConflictWeightChanged.Hook(event.NewClosure(func(e *tangle.ConflictWeightChangedEvent) {
+ if err := ag.HandleConflict(e.ConflictID, e.Weight); err != nil {
+ t.Log(err)
+ }
+ }))
+}
diff --git a/packages/consensus/consensus.go b/packages/consensus/consensus.go
index d1d35577ec..91d9d9c2f3 100644
--- a/packages/consensus/consensus.go
+++ b/packages/consensus/consensus.go
@@ -6,13 +6,13 @@ import (
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
-// WeightFunc returns the approval weight for the given branch.
-type WeightFunc func(branchID utxo.TransactionID) (weight float64)
+// WeightFunc returns the approval weight for the given conflict.
+type WeightFunc func(conflictID utxo.TransactionID) (weight float64)
// Mechanism is a generic interface allowing to use different methods to reach consensus.
type Mechanism interface {
- // LikedConflictMember returns the liked BranchID across the members of its conflict sets.
- LikedConflictMember(branchID utxo.TransactionID) (likedBranchID utxo.TransactionID, conflictMembers *set.AdvancedSet[utxo.TransactionID])
- // BranchLiked returns true if the BranchID is liked.
- BranchLiked(branchID utxo.TransactionID) (branchLiked bool)
+ // LikedConflictMember returns the liked ConflictID across the members of its conflict sets.
+ LikedConflictMember(conflictID utxo.TransactionID) (likedConflictID utxo.TransactionID, conflictMembers *set.AdvancedSet[utxo.TransactionID])
+ // ConflictLiked returns true if the ConflictID is liked.
+ ConflictLiked(conflictID utxo.TransactionID) (conflictLiked bool)
}
diff --git a/packages/consensus/finality/events.go b/packages/consensus/finality/events.go
deleted file mode 100644
index 3e8cb29f69..0000000000
--- a/packages/consensus/finality/events.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package finality
-
-import (
- "github.com/iotaledger/hive.go/generics/event"
- "github.com/iotaledger/hive.go/generics/set"
-
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
-)
-
-// region Events ///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Events is a container that acts as a dictionary for the existing events of a ConflictDAG.
-type Events struct {
- // BranchCreated is an event that gets triggered whenever a new Branch is created.
- BranchCreated *event.Event[*BranchCreatedEvent]
-
- // BranchConflictsUpdated is an event that gets triggered whenever the ConflictIDs of a Branch are updated.
- BranchConflictsUpdated *event.Event[*BranchConflictsUpdatedEvent]
-
- // BranchParentsUpdated is an event that gets triggered whenever the parent BranchIDs of a Branch are updated.
- BranchParentsUpdated *event.Event[*BranchParentsUpdatedEvent]
-}
-
-// newEvents returns a new Events object.
-func newEvents() *Events {
- return &Events{
- BranchCreated: event.New[*BranchCreatedEvent](),
- BranchConflictsUpdated: event.New[*BranchConflictsUpdatedEvent](),
- BranchParentsUpdated: event.New[*BranchParentsUpdatedEvent](),
- }
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region BranchCreatedEvent ///////////////////////////////////////////////////////////////////////////////////////////
-
-// BranchCreatedEvent is a container that acts as a dictionary for the BranchCreated event related parameters.
-type BranchCreatedEvent struct {
- // BranchID contains the identifier of the newly created Branch.
- BranchID utxo.TransactionID
-
- // ParentBranchIDs contains the parent Branches of the newly created Branch.
- ParentBranchIDs *set.AdvancedSet[utxo.TransactionID]
-
- // ConflictIDs contains the set of conflicts that this Branch is involved with.
- ConflictIDs *set.AdvancedSet[utxo.OutputID]
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region BranchConflictsUpdatedEvent //////////////////////////////////////////////////////////////////////////////////
-
-// BranchConflictsUpdatedEvent is a container that acts as a dictionary for the BranchConflictsUpdated event related
-// parameters.
-type BranchConflictsUpdatedEvent struct {
- // BranchID contains the identifier of the updated Branch.
- BranchID utxo.TransactionID
-
- // NewConflictIDs contains the set of conflicts that this Branch was added to.
- NewConflictIDs *set.AdvancedSet[utxo.OutputID]
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region BranchParentsUpdatedEvent ////////////////////////////////////////////////////////////////////////////////////
-
-// BranchParentsUpdatedEvent is a container that acts as a dictionary for the BranchParentsUpdated event related
-// parameters.
-type BranchParentsUpdatedEvent struct {
- // BranchID contains the identifier of the updated Branch.
- BranchID utxo.TransactionID
-
- // AddedBranch contains the forked parent Branch that replaces the removed parents.
- AddedBranch utxo.TransactionID
-
- // RemovedBranches contains the parent BranchIDs that were replaced by the newly forked Branch.
- RemovedBranches *set.AdvancedSet[utxo.TransactionID]
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/consensus/finality/finality_gadget.go b/packages/consensus/finality/finality_gadget.go
deleted file mode 100644
index ba5d44b097..0000000000
--- a/packages/consensus/finality/finality_gadget.go
+++ /dev/null
@@ -1,356 +0,0 @@
-package finality
-
-import (
- "sync"
-
- "github.com/iotaledger/hive.go/generics/set"
- "github.com/iotaledger/hive.go/generics/walker"
-
- "github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
- "github.com/iotaledger/goshimmer/packages/ledger"
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
- "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
- "github.com/iotaledger/goshimmer/packages/markers"
- "github.com/iotaledger/goshimmer/packages/tangle"
-)
-
-// Gadget is an interface that describes the finality gadget.
-type Gadget interface {
- HandleMarker(marker markers.Marker, aw float64) (err error)
- HandleBranch(branchID utxo.TransactionID, aw float64) (err error)
- tangle.ConfirmationOracle
-}
-
-// MessageThresholdTranslation is a function which translates approval weight to a gof.GradeOfFinality.
-type MessageThresholdTranslation func(aw float64) gof.GradeOfFinality
-
-// BranchThresholdTranslation is a function which translates approval weight to a gof.GradeOfFinality.
-type BranchThresholdTranslation func(branchID utxo.TransactionID, aw float64) gof.GradeOfFinality
-
-const (
- lowLowerBound = 0.25
- mediumLowerBound = 0.45
- highLowerBound = 0.67
-)
-
-var (
- // DefaultBranchGoFTranslation is the default function to translate the approval weight to gof.GradeOfFinality of a branch.
- DefaultBranchGoFTranslation BranchThresholdTranslation = func(branchID utxo.TransactionID, aw float64) gof.GradeOfFinality {
- switch {
- case aw >= lowLowerBound && aw < mediumLowerBound:
- return gof.Low
- case aw >= mediumLowerBound && aw < highLowerBound:
- return gof.Medium
- case aw >= highLowerBound:
- return gof.High
- default:
- return gof.None
- }
- }
-
- // DefaultMessageGoFTranslation is the default function to translate the approval weight to gof.GradeOfFinality of a message.
- DefaultMessageGoFTranslation MessageThresholdTranslation = func(aw float64) gof.GradeOfFinality {
- switch {
- case aw >= lowLowerBound && aw < mediumLowerBound:
- return gof.Low
- case aw >= mediumLowerBound && aw < highLowerBound:
- return gof.Medium
- case aw >= highLowerBound:
- return gof.High
- default:
- return gof.None
- }
- }
-)
-
-// Option is a function setting an option on an Options struct.
-type Option func(*Options)
-
-// Options defines the options for a SimpleFinalityGadget.
-type Options struct {
- BranchTransFunc BranchThresholdTranslation
- MessageTransFunc MessageThresholdTranslation
- BranchGoFReachedLevel gof.GradeOfFinality
- MessageGoFReachedLevel gof.GradeOfFinality
-}
-
-var defaultOpts = []Option{
- WithBranchThresholdTranslation(DefaultBranchGoFTranslation),
- WithMessageThresholdTranslation(DefaultMessageGoFTranslation),
- WithBranchGoFReachedLevel(gof.High),
- WithMessageGoFReachedLevel(gof.High),
-}
-
-// WithMessageThresholdTranslation returns an Option setting the MessageThresholdTranslation.
-func WithMessageThresholdTranslation(f MessageThresholdTranslation) Option {
- return func(opts *Options) {
- opts.MessageTransFunc = f
- }
-}
-
-// WithBranchThresholdTranslation returns an Option setting the BranchThresholdTranslation.
-func WithBranchThresholdTranslation(f BranchThresholdTranslation) Option {
- return func(opts *Options) {
- opts.BranchTransFunc = f
- }
-}
-
-// WithBranchGoFReachedLevel returns an Option setting the branch reached grade of finality level.
-func WithBranchGoFReachedLevel(branchGradeOfFinality gof.GradeOfFinality) Option {
- return func(opts *Options) {
- opts.BranchGoFReachedLevel = branchGradeOfFinality
- }
-}
-
-// WithMessageGoFReachedLevel returns an Option setting the message reached grade of finality level.
-func WithMessageGoFReachedLevel(msgGradeOfFinality gof.GradeOfFinality) Option {
- return func(opts *Options) {
- opts.MessageGoFReachedLevel = msgGradeOfFinality
- }
-}
-
-// SimpleFinalityGadget is a Gadget which simply translates approval weight down to gof.GradeOfFinality
-// and then applies it to messages, branches, transactions and outputs.
-type SimpleFinalityGadget struct {
- tangle *tangle.Tangle
- opts *Options
- lastConfirmedMarkers map[markers.SequenceID]markers.Index
- lastConfirmedMarkersMutex sync.RWMutex
- events *tangle.ConfirmationEvents
-}
-
-// NewSimpleFinalityGadget creates a new SimpleFinalityGadget.
-func NewSimpleFinalityGadget(t *tangle.Tangle, opts ...Option) *SimpleFinalityGadget {
- sfg := &SimpleFinalityGadget{
- tangle: t,
- opts: &Options{},
- lastConfirmedMarkers: make(map[markers.SequenceID]markers.Index),
- events: tangle.NewConfirmationEvents(),
- }
-
- for _, defOpt := range defaultOpts {
- defOpt(sfg.opts)
- }
- for _, opt := range opts {
- opt(sfg.opts)
- }
-
- return sfg
-}
-
-// Events returns the events this gadget exposes.
-func (s *SimpleFinalityGadget) Events() *tangle.ConfirmationEvents {
- return s.events
-}
-
-// IsMarkerConfirmed returns whether the given marker is confirmed.
-func (s *SimpleFinalityGadget) IsMarkerConfirmed(marker markers.Marker) (confirmed bool) {
- messageID := s.tangle.Booker.MarkersManager.MessageID(marker)
- if messageID == tangle.EmptyMessageID {
- return false
- }
-
- s.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *tangle.MessageMetadata) {
- if messageMetadata.GradeOfFinality() >= s.opts.MessageGoFReachedLevel {
- confirmed = true
- }
- })
- return
-}
-
-// IsMessageConfirmed returns whether the given message is confirmed.
-func (s *SimpleFinalityGadget) IsMessageConfirmed(msgID tangle.MessageID) (confirmed bool) {
- s.tangle.Storage.MessageMetadata(msgID).Consume(func(messageMetadata *tangle.MessageMetadata) {
- if messageMetadata.GradeOfFinality() >= s.opts.MessageGoFReachedLevel {
- confirmed = true
- }
- })
- return
-}
-
-// FirstUnconfirmedMarkerIndex returns the first Index in the given Sequence that was not confirmed, yet.
-func (s *SimpleFinalityGadget) FirstUnconfirmedMarkerIndex(sequenceID markers.SequenceID) (index markers.Index) {
- s.lastConfirmedMarkersMutex.Lock()
- defer s.lastConfirmedMarkersMutex.Unlock()
-
- // TODO: MAP GROWS INDEFINITELY
- index, exists := s.lastConfirmedMarkers[sequenceID]
- if exists {
- return index + 1
- }
-
- s.tangle.Booker.MarkersManager.Manager.Sequence(sequenceID).Consume(func(sequence *markers.Sequence) {
- index = sequence.LowestIndex()
- })
-
- if !s.tangle.ConfirmationOracle.IsMarkerConfirmed(markers.NewMarker(sequenceID, index)) {
- return index
- }
-
- // do-while loop
- s.lastConfirmedMarkers[sequenceID] = index
- index++
- for s.tangle.ConfirmationOracle.IsMarkerConfirmed(markers.NewMarker(sequenceID, index)) {
- s.lastConfirmedMarkers[sequenceID] = index
- index++
- }
-
- return index
-}
-
-// IsBranchConfirmed returns whether the given branch is confirmed.
-func (s *SimpleFinalityGadget) IsBranchConfirmed(branchID utxo.TransactionID) (confirmed bool) {
- return s.tangle.Ledger.ConflictDAG.InclusionState(utxo.NewTransactionIDs(branchID)) == conflictdag.Confirmed
-}
-
-// IsTransactionConfirmed returns whether the given transaction is confirmed.
-func (s *SimpleFinalityGadget) IsTransactionConfirmed(transactionID utxo.TransactionID) (confirmed bool) {
- s.tangle.Ledger.Storage.CachedTransactionMetadata(transactionID).Consume(func(transactionMetadata *ledger.TransactionMetadata) {
- if transactionMetadata.GradeOfFinality() >= s.opts.MessageGoFReachedLevel {
- confirmed = true
- }
- })
- return
-}
-
-// IsOutputConfirmed returns whether the given output is confirmed.
-func (s *SimpleFinalityGadget) IsOutputConfirmed(outputID utxo.OutputID) (confirmed bool) {
- s.tangle.Ledger.Storage.CachedOutputMetadata(outputID).Consume(func(outputMetadata *ledger.OutputMetadata) {
- if outputMetadata.GradeOfFinality() >= s.opts.BranchGoFReachedLevel {
- confirmed = true
- }
- })
- return
-}
-
-// HandleMarker receives a marker and its current approval weight. It propagates the GoF according to AW to its past cone.
-func (s *SimpleFinalityGadget) HandleMarker(marker markers.Marker, aw float64) (err error) {
- gradeOfFinality := s.opts.MessageTransFunc(aw)
- if gradeOfFinality == gof.None {
- return nil
- }
-
- // get message ID of marker
- messageID := s.tangle.Booker.MarkersManager.MessageID(marker)
- s.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *tangle.MessageMetadata) {
- if gradeOfFinality <= messageMetadata.GradeOfFinality() {
- return
- }
-
- if gradeOfFinality >= s.opts.MessageGoFReachedLevel {
- s.setMarkerConfirmed(marker)
- }
-
- s.propagateGoFToMessagePastCone(messageID, gradeOfFinality)
- })
-
- return err
-}
-
-// setMarkerConfirmed marks the current Marker as confirmed.
-func (s *SimpleFinalityGadget) setMarkerConfirmed(marker markers.Marker) (updated bool) {
- s.lastConfirmedMarkersMutex.Lock()
- defer s.lastConfirmedMarkersMutex.Unlock()
-
- if s.lastConfirmedMarkers[marker.SequenceID()] > marker.Index() {
- return false
- }
-
- s.lastConfirmedMarkers[marker.SequenceID()] = marker.Index()
-
- return true
-}
-
-// propagateGoFToMessagePastCone propagates the given GradeOfFinality to the past cone of the Message.
-func (s *SimpleFinalityGadget) propagateGoFToMessagePastCone(messageID tangle.MessageID, gradeOfFinality gof.GradeOfFinality) {
- strongParentWalker := walker.New[tangle.MessageID](false).Push(messageID)
- weakParentsSet := set.New[tangle.MessageID]()
-
- for strongParentWalker.HasNext() {
- strongParentMessageID := strongParentWalker.Next()
- if strongParentMessageID == tangle.EmptyMessageID {
- continue
- }
-
- s.tangle.Storage.MessageMetadata(strongParentMessageID).Consume(func(messageMetadata *tangle.MessageMetadata) {
- if messageMetadata.GradeOfFinality() >= gradeOfFinality {
- return
- }
-
- s.tangle.Storage.Message(strongParentMessageID).Consume(func(message *tangle.Message) {
- if !s.setMessageGoF(message, messageMetadata, gradeOfFinality) {
- return
- }
-
- message.ForEachParent(func(parent tangle.Parent) {
- if parent.Type == tangle.StrongParentType {
- strongParentWalker.Push(parent.ID)
- return
- }
- weakParentsSet.Add(parent.ID)
- })
- })
- })
- }
-
- weakParentsSet.ForEach(func(weakParent tangle.MessageID) {
- if strongParentWalker.Pushed(weakParent) {
- return
- }
- s.tangle.Storage.MessageMetadata(weakParent).Consume(func(messageMetadata *tangle.MessageMetadata) {
- if messageMetadata.GradeOfFinality() >= gradeOfFinality {
- return
- }
-
- s.tangle.Storage.Message(weakParent).Consume(func(message *tangle.Message) {
- s.setMessageGoF(message, messageMetadata, gradeOfFinality)
- })
- })
- })
-}
-
-// HandleBranch receives a branchID and its approval weight. It propagates the GoF according to AW to transactions
-// in the branch (UTXO future cone) and their outputs.
-func (s *SimpleFinalityGadget) HandleBranch(branchID utxo.TransactionID, aw float64) (err error) {
- if s.opts.BranchTransFunc(branchID, aw) >= s.opts.BranchGoFReachedLevel {
- s.tangle.Ledger.ConflictDAG.SetBranchConfirmed(branchID)
- }
-
- return nil
-}
-
-func (s *SimpleFinalityGadget) setMessageGoF(message *tangle.Message, messageMetadata *tangle.MessageMetadata, gradeOfFinality gof.GradeOfFinality) (modified bool) {
- // abort if message has GoF already set
- if modified = messageMetadata.SetGradeOfFinality(gradeOfFinality); !modified {
- return
- }
-
- if gradeOfFinality >= s.opts.MessageGoFReachedLevel {
- s.Events().MessageConfirmed.Trigger(&tangle.MessageConfirmedEvent{
- Message: message,
- })
-
- // set GoF of payload (applicable only to transactions)
- if tx, ok := message.Payload().(*devnetvm.Transaction); ok {
- s.tangle.Ledger.SetTransactionInclusionTime(tx.ID(), message.IssuingTime())
- }
- }
-
- return modified
-}
-
-func (s *SimpleFinalityGadget) getTransactionBranchesGoF(transactionMetadata *ledger.TransactionMetadata) (lowestBranchGoF gof.GradeOfFinality) {
- lowestBranchGoF = gof.High
- for it := transactionMetadata.BranchIDs().Iterator(); it.HasNext(); {
- branchGoF, err := s.tangle.Ledger.Utils.BranchGradeOfFinality(it.Next())
- if err != nil {
- // TODO: properly handle error
- panic(err)
- }
- if branchGoF < lowestBranchGoF {
- lowestBranchGoF = branchGoF
- }
- }
- return
-}
diff --git a/packages/consensus/finality/finality_gadget_test.go b/packages/consensus/finality/finality_gadget_test.go
deleted file mode 100644
index 84d739ed5a..0000000000
--- a/packages/consensus/finality/finality_gadget_test.go
+++ /dev/null
@@ -1,502 +0,0 @@
-package finality
-
-import (
- "fmt"
- "runtime/debug"
- "testing"
-
- "github.com/iotaledger/hive.go/generics/event"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/mock"
- "github.com/stretchr/testify/require"
-
- "github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
- "github.com/iotaledger/goshimmer/packages/ledger"
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
- "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
- "github.com/iotaledger/goshimmer/packages/tangle"
-)
-
-type EventHandlerMock struct {
- mock.Mock
-}
-
-const (
- testingLowBound = 0.2
- testingMediumBound = 0.3
- testingHighBound = 0.5
-)
-
-var (
- TestBranchGoFTranslation BranchThresholdTranslation = func(branchID utxo.TransactionID, aw float64) gof.GradeOfFinality {
- switch {
- case aw >= testingLowBound && aw < testingMediumBound:
- return gof.Low
- case aw >= testingMediumBound && aw < testingHighBound:
- return gof.Medium
- case aw >= testingHighBound:
- return gof.High
- default:
- return gof.None
- }
- }
-
- TestMessageGoFTranslation MessageThresholdTranslation = func(aw float64) gof.GradeOfFinality {
- switch {
- case aw >= testingLowBound && aw < testingMediumBound:
- return gof.Low
- case aw >= testingMediumBound && aw < testingHighBound:
- return gof.Medium
- case aw >= testingHighBound:
- return gof.High
- default:
- return gof.None
- }
- }
-)
-
-func (handler *EventHandlerMock) MessageConfirmed(msgID tangle.MessageID) {
- handler.Called(msgID)
-}
-
-func (handler *EventHandlerMock) BranchConfirmed(branchID utxo.TransactionID) {
- handler.Called(branchID)
-}
-
-func (handler *EventHandlerMock) TransactionConfirmed(txID utxo.TransactionID) {
- handler.Called(txID)
-}
-
-func (handler *EventHandlerMock) WireUpFinalityGadget(fg Gadget, tangleInstance *tangle.Tangle) {
- fg.Events().MessageConfirmed.Hook(event.NewClosure(func(event *tangle.MessageConfirmedEvent) { handler.MessageConfirmed(event.Message.ID()) }))
- tangleInstance.Ledger.ConflictDAG.Events.BranchConfirmed.Hook(event.NewClosure(func(event *conflictdag.BranchConfirmedEvent[utxo.TransactionID]) {
- handler.BranchConfirmed(event.BranchID)
- }))
- tangleInstance.Ledger.Events.TransactionConfirmed.Hook(event.NewClosure(func(event *ledger.TransactionConfirmedEvent) { handler.TransactionConfirmed(event.TransactionID) }))
-}
-
-func TestSimpleFinalityGadget(t *testing.T) {
- processMsgScenario := tangle.ProcessMessageScenario(t, tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
- defer func(processMsgScenario *tangle.TestScenario, t *testing.T) {
- if err := recover(); err != nil {
- t.Error(err)
- fmt.Println(string(debug.Stack()))
- return
- }
-
- if err := processMsgScenario.Cleanup(t); err != nil {
- require.NoError(t, err)
- }
- }(processMsgScenario, t)
-
- testOpts := []Option{
- WithBranchThresholdTranslation(TestBranchGoFTranslation),
- WithMessageThresholdTranslation(TestMessageGoFTranslation),
- }
-
- sfg := NewSimpleFinalityGadget(processMsgScenario.Tangle, testOpts...)
- wireUpEvents(t, processMsgScenario.Tangle, sfg)
-
- eventHandlerMock := &EventHandlerMock{}
- eventHandlerMock.WireUpFinalityGadget(sfg, processMsgScenario.Tangle)
-
- prePostSteps := []*tangle.PrePostStepTuple{
- // Message1
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.Medium: {"Message1"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message2
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.Medium: {"Message1"},
- gof.None: {"Message2"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message3
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("MessageConfirmed", testFramework.Message("Message1").ID())
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1"},
- gof.Medium: {"Message2"},
- gof.Low: {"Message3"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message4
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("MessageConfirmed", testFramework.Message("Message2").ID())
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2"},
- gof.Medium: {"Message3"},
- gof.Low: {"Message4"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message5
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("MessageConfirmed", testFramework.Message("Message3").ID())
- eventHandlerMock.On("MessageConfirmed", testFramework.Message("Message4").ID())
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4"},
- gof.Medium: {"Message5"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message6
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4"},
- gof.Medium: {"Message5"},
- gof.None: {"Message6"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.None: {"Message5", "Message6"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.None: {"Message5", "Message6"},
- })
- },
- },
- // Message7
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("MessageConfirmed", testFramework.Message("Message5").ID())
- eventHandlerMock.On("TransactionConfirmed", testFramework.TransactionID("Message5"))
- eventHandlerMock.On("BranchConfirmed", testFramework.BranchIDFromMessage("Message5"))
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5"},
- gof.Low: {"Message7"},
- gof.None: {"Message6"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5"},
- gof.None: {"Message6"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5"},
- gof.None: {"Message6", "Message7"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message7.1
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("MessageConfirmed", testFramework.Message("Message7").ID())
- eventHandlerMock.On("TransactionConfirmed", testFramework.TransactionID("Message7"))
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1"},
- gof.None: {"Message6"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5"},
- gof.None: {"Message6"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message7"},
- gof.None: {"Message6"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message8
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1"},
- gof.Low: {},
- gof.None: {"Message6", "Message8"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5"},
- gof.None: {"Message6"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message7"},
- gof.None: {"Message6"},
- })
- },
- },
- // Message9
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("TransactionConfirmed", testFramework.TransactionID("Message6"))
- eventHandlerMock.On("BranchConfirmed", testFramework.BranchIDFromMessage("Message6"))
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1", "Message9", "Message6", "Message8"},
- gof.Low: {},
- gof.None: {},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message6"},
- gof.None: {"Message5"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message6"},
- gof.None: {"Message5", "Message7"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message10
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1", "Message9", "Message6", "Message8"},
- gof.Low: {},
- gof.None: {"Message10"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message6"},
- gof.None: {"Message5"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message6"},
- gof.None: {"Message5", "Message7"},
- })
- },
- },
- // Message11
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1", "Message9", "Message6", "Message8"},
- gof.Low: {},
- gof.None: {"Message10", "Message11"},
- })
- // AW swaps back from msg6's branch to 5's, msg 7/11 (pun intended) new conflict set
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5"},
- gof.None: {"Message6", "Message7", "Message11"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5"},
- gof.None: {"Message6", "Message7", "Message11"},
- })
- },
- },
- // Message12
- {
- Pre: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- eventHandlerMock.On("TransactionConfirmed", testFramework.TransactionID("Message11"))
- eventHandlerMock.On("BranchConfirmed", testFramework.BranchIDFromMessage("Message11"))
- },
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1", "Message9", "Message6", "Message8"},
- gof.Low: {},
- gof.None: {"Message10", "Message11", "Message12"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message11"},
- gof.None: {"Message7", "Message6"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message11"},
- gof.None: {"Message7", "Message6"},
- })
- eventHandlerMock.AssertExpectations(t)
- },
- },
- // Message13
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1", "Message9", "Message6", "Message8"},
- gof.Low: {},
- gof.None: {"Message10", "Message11", "Message12", "Message13"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message11"},
- gof.None: {"Message6", "Message7"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message11"},
- gof.None: {"Message6", "Message7"},
- })
- },
- },
- // Message14
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4", "Message5", "Message7"},
- gof.Medium: {"Message7.1", "Message9", "Message6", "Message8"},
- gof.Low: {"Message13", "Message11", "Message12"},
- gof.None: {"Message10", "Message14"},
- })
- assertBranchsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message11"},
- gof.None: {"Message6", "Message7"},
- })
- assertTxsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message5", "Message11"},
- gof.None: {"Message6", "Message7"},
- })
- },
- },
- }
- for i := 0; processMsgScenario.HasNext(); i++ {
- if len(prePostSteps)-1 < i {
- processMsgScenario.Next(nil)
- continue
- }
- processMsgScenario.Next(prePostSteps[i])
- }
-}
-
-func TestWeakVsStrongParentWalk(t *testing.T) {
- processMsgScenario := tangle.ProcessMessageScenario2(t, tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
- defer func(processMsgScenario *tangle.TestScenario, t *testing.T) {
- if err := processMsgScenario.Cleanup(t); err != nil {
- require.NoError(t, err)
- }
- }(processMsgScenario, t)
-
- testOpts := []Option{
- WithBranchThresholdTranslation(TestBranchGoFTranslation),
- WithMessageThresholdTranslation(TestMessageGoFTranslation),
- }
-
- sfg := NewSimpleFinalityGadget(processMsgScenario.Tangle, testOpts...)
- wireUpEvents(t, processMsgScenario.Tangle, sfg)
-
- prePostSteps := []*tangle.PrePostStepTuple{
- // Message0
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.Medium: {"Message0"},
- })
- },
- },
- // Message1
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.None: {"Message1"},
- })
- },
- },
- // Message2
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.Medium: {},
- gof.None: {"Message1", "Message2"},
- })
- },
- },
- // Message3
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {},
- gof.Medium: {},
- gof.None: {"Message1", "Message2", "Message3"},
- })
- },
- },
- // Message4
- {
- Post: func(t *testing.T, testFramework *tangle.MessageTestFramework, testEventMock *tangle.EventMock, nodes tangle.NodeIdentities) {
- sfg.propagateGoFToMessagePastCone(testFramework.Message("Message4").ID(), gof.High)
- assertMsgsGoFs(t, testFramework, map[gof.GradeOfFinality][]string{
- gof.High: {"Message1", "Message2", "Message3", "Message4"},
- gof.Medium: {},
- gof.Low: {},
- })
- },
- },
- }
-
- for i := 0; processMsgScenario.HasNext(); i++ {
- if len(prePostSteps)-1 < i {
- processMsgScenario.Next(nil)
- continue
- }
- processMsgScenario.Next(prePostSteps[i])
- }
-}
-
-func assertMsgsGoFs(t *testing.T, testFramework *tangle.MessageTestFramework, expected map[gof.GradeOfFinality][]string) {
- for expectedGoF, msgAliases := range expected {
- for _, msgAlias := range msgAliases {
- actualGradeOfFinality := testFramework.MessageMetadata(msgAlias).GradeOfFinality()
- assert.Equal(t, expectedGoF, actualGradeOfFinality, "expected msg %s GoF to be %s but is %s", msgAlias, expectedGoF, actualGradeOfFinality)
- }
- }
-}
-
-func assertTxsGoFs(t *testing.T, testFramework *tangle.MessageTestFramework, expected map[gof.GradeOfFinality][]string) {
- for expectedGoF, msgAliases := range expected {
- for _, msgAlias := range msgAliases {
- txMeta := testFramework.TransactionMetadata(msgAlias)
- actualGradeOfFinality := txMeta.GradeOfFinality()
- assert.Equal(t, expectedGoF, actualGradeOfFinality, "expected tx %s (via msg %s) GoF to be %s but is %s", txMeta.ID(), msgAlias, expectedGoF, actualGradeOfFinality)
- // auto. also check outputs
- for _, output := range testFramework.Transaction(msgAlias).(*devnetvm.Transaction).Essence().Outputs() {
- outputGoF := testFramework.OutputMetadata(output.ID()).GradeOfFinality()
- assert.Equal(t, expectedGoF, outputGoF, "expected also tx output %s (via msg %s) GoF to be %s but is %s", output.ID(), msgAlias, expectedGoF, outputGoF)
- }
- }
- }
-}
-
-func assertBranchsGoFs(t *testing.T, testFramework *tangle.MessageTestFramework, expected map[gof.GradeOfFinality][]string) {
- for expectedGoF, msgAliases := range expected {
- for _, msgAlias := range msgAliases {
- branch := testFramework.Branch(msgAlias)
- actualGradeOfFinality := testFramework.TransactionMetadata(msgAlias).GradeOfFinality()
- assert.Equal(t, expectedGoF, actualGradeOfFinality, "expected branch %s (via msg %s) GoF to be %s but is %s", branch.ID(), msgAlias, expectedGoF, actualGradeOfFinality)
- }
- }
-}
-
-func wireUpEvents(t *testing.T, testTangle *tangle.Tangle, fg Gadget) {
- testTangle.ApprovalWeightManager.Events.MarkerWeightChanged.Hook(event.NewClosure(func(e *tangle.MarkerWeightChangedEvent) {
- if err := fg.HandleMarker(e.Marker, e.Weight); err != nil {
- t.Log(err)
- }
- }))
- testTangle.ApprovalWeightManager.Events.BranchWeightChanged.Hook(event.NewClosure(func(e *tangle.BranchWeightChangedEvent) {
- if err := fg.HandleBranch(e.BranchID, e.Weight); err != nil {
- t.Log(err)
- }
- }))
-}
diff --git a/packages/consensus/gof/gof.go b/packages/consensus/gof/gof.go
deleted file mode 100644
index bf9e5d12d9..0000000000
--- a/packages/consensus/gof/gof.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package gof
-
-// GradeOfFinality defines the grade of finality of an object.
-type GradeOfFinality uint8
-
-const (
- // None defines the zero value for GradeOfFinality.
- None GradeOfFinality = iota
- // Low defines a low GradeOfFinality.
- Low
- // Medium defines a medium GradeOfFinality.
- Medium
- // High defines a high GradeOfFinality.
- High
-)
-
-func (gof GradeOfFinality) String() string {
- return []string{
- "GoF(None)",
- "GoF(Low)",
- "GoF(Medium)",
- "GoF(High)",
- }[gof]
-}
-
-// Bytes returns the byte representation of the GradeOfFinality.
-func (gof GradeOfFinality) Bytes() []byte {
- return []byte{byte(gof)}
-}
diff --git a/packages/consensus/otv/otv.go b/packages/consensus/otv/otv.go
index 2f2182602a..eb0d342ad3 100644
--- a/packages/consensus/otv/otv.go
+++ b/packages/consensus/otv/otv.go
@@ -6,6 +6,7 @@ import (
"github.com/iotaledger/hive.go/generics/set"
"github.com/iotaledger/hive.go/generics/walker"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/goshimmer/packages/conflictdag"
"github.com/iotaledger/goshimmer/packages/consensus"
@@ -13,18 +14,18 @@ import (
)
// OnTangleVoting is a pluggable implementation of tangle.ConsensusMechanism2. On tangle voting is a generalized form of
-// Nakamoto consensus for the parallel-reality-based ledger state where the heaviest branch according to approval weight
+// Nakamoto consensus for the parallel-reality-based ledger state where the heaviest conflict according to approval weight
// is liked by any given node.
type OnTangleVoting struct {
- branchDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID]
- weightFunc consensus.WeightFunc
+ conflictDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID]
+ weightFunc consensus.WeightFunc
}
// NewOnTangleVoting is the constructor for OnTangleVoting.
-func NewOnTangleVoting(branchDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID], weightFunc consensus.WeightFunc) *OnTangleVoting {
+func NewOnTangleVoting(conflictDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID], weightFunc consensus.WeightFunc) *OnTangleVoting {
return &OnTangleVoting{
- branchDAG: branchDAG,
- weightFunc: weightFunc,
+ conflictDAG: conflictDAG,
+ weightFunc: weightFunc,
}
}
@@ -32,17 +33,17 @@ func NewOnTangleVoting(branchDAG *conflictdag.ConflictDAG[utxo.TransactionID, ut
func (o *OnTangleVoting) LikedConflictMember(conflictID utxo.TransactionID) (likedConflict utxo.TransactionID, dislikedConflicts utxo.TransactionIDs) {
dislikedConflicts = utxo.NewTransactionIDs()
- if o.BranchLiked(conflictID) {
+ if o.ConflictLiked(conflictID) {
likedConflict = conflictID
} else {
dislikedConflicts.Add(conflictID)
}
- o.branchDAG.Utils.ForEachConflictingBranchID(conflictID, func(conflictingBranchID utxo.TransactionID) bool {
- if likedConflict.IsEmpty() && o.BranchLiked(conflictingBranchID) {
- likedConflict = conflictingBranchID
+ o.conflictDAG.Utils.ForEachConflictingConflictID(conflictID, func(conflictingConflictID utxo.TransactionID) bool {
+ if likedConflict.IsEmpty() && o.ConflictLiked(conflictingConflictID) {
+ likedConflict = conflictingConflictID
} else {
- dislikedConflicts.Add(conflictingBranchID)
+ dislikedConflicts.Add(conflictingConflictID)
}
return true
@@ -51,14 +52,14 @@ func (o *OnTangleVoting) LikedConflictMember(conflictID utxo.TransactionID) (lik
return
}
-// BranchLiked returns whether the branch is the winner across all conflict sets (it is in the liked reality).
-func (o *OnTangleVoting) BranchLiked(branchID utxo.TransactionID) (branchLiked bool) {
- branchLiked = true
- if branchID == utxo.EmptyTransactionID {
+// ConflictLiked returns whether the conflict is the winner across all conflict sets (it is in the liked reality).
+func (o *OnTangleVoting) ConflictLiked(conflictID utxo.TransactionID) (conflictLiked bool) {
+ conflictLiked = true
+ if conflictID == utxo.EmptyTransactionID {
return
}
- for likeWalker := walker.New[utxo.TransactionID]().Push(branchID); likeWalker.HasNext(); {
- if branchLiked = branchLiked && o.branchPreferred(likeWalker.Next(), likeWalker); !branchLiked {
+ for likeWalker := walker.New[utxo.TransactionID]().Push(conflictID); likeWalker.HasNext(); {
+ if conflictLiked = conflictLiked && o.conflictPreferred(likeWalker.Next(), likeWalker); !conflictLiked {
return
}
}
@@ -66,24 +67,25 @@ func (o *OnTangleVoting) BranchLiked(branchID utxo.TransactionID) (branchLiked b
return
}
-// branchPreferred returns whether the branch is the winner across its conflict sets.
-func (o *OnTangleVoting) branchPreferred(branchID utxo.TransactionID, likeWalker *walker.Walker[utxo.TransactionID]) (preferred bool) {
+// conflictPreferred returns whether the conflict is the winner across its conflict sets.
+func (o *OnTangleVoting) conflictPreferred(conflictID utxo.TransactionID, likeWalker *walker.Walker[utxo.TransactionID]) (preferred bool) {
preferred = true
- if branchID == utxo.EmptyTransactionID {
+ if conflictID == utxo.EmptyTransactionID {
return
}
- o.branchDAG.Storage.CachedConflict(branchID).Consume(func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- switch branch.InclusionState() {
- case conflictdag.Rejected:
+ o.conflictDAG.Storage.CachedConflict(conflictID).Consume(func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ switch conflict.ConfirmationState() {
+ case confirmation.Rejected:
preferred = false
return
- case conflictdag.Confirmed:
+ case confirmation.Accepted:
+ case confirmation.Confirmed:
return
}
- if preferred = !o.dislikedConnectedConflictingBranches(branchID).Has(branchID); preferred {
- for it := branch.Parents().Iterator(); it.HasNext(); {
+ if preferred = !o.dislikedConnectedConflictingConflicts(conflictID).Has(conflictID); preferred {
+ for it := conflict.Parents().Iterator(); it.HasNext(); {
likeWalker.Push(it.Next())
}
}
@@ -92,51 +94,51 @@ func (o *OnTangleVoting) branchPreferred(branchID utxo.TransactionID, likeWalker
return
}
-func (o *OnTangleVoting) dislikedConnectedConflictingBranches(currentBranchID utxo.TransactionID) (dislikedBranches set.Set[utxo.TransactionID]) {
- dislikedBranches = set.New[utxo.TransactionID]()
- o.forEachConnectedConflictingBranchInDescendingOrder(currentBranchID, func(branchID utxo.TransactionID, weight float64) {
- if dislikedBranches.Has(branchID) {
+func (o *OnTangleVoting) dislikedConnectedConflictingConflicts(currentConflictID utxo.TransactionID) (dislikedConflicts set.Set[utxo.TransactionID]) {
+ dislikedConflicts = set.New[utxo.TransactionID]()
+ o.forEachConnectedConflictingConflictInDescendingOrder(currentConflictID, func(conflictID utxo.TransactionID, weight float64) {
+ if dislikedConflicts.Has(conflictID) {
return
}
rejectionWalker := walker.New[utxo.TransactionID]()
- o.branchDAG.Utils.ForEachConflictingBranchID(branchID, func(conflictingBranchID utxo.TransactionID) bool {
- rejectionWalker.Push(conflictingBranchID)
+ o.conflictDAG.Utils.ForEachConflictingConflictID(conflictID, func(conflictingConflictID utxo.TransactionID) bool {
+ rejectionWalker.Push(conflictingConflictID)
return true
})
for rejectionWalker.HasNext() {
- rejectedBranchID := rejectionWalker.Next()
+ rejectedConflictID := rejectionWalker.Next()
- dislikedBranches.Add(rejectedBranchID)
+ dislikedConflicts.Add(rejectedConflictID)
- o.branchDAG.Storage.CachedChildBranches(rejectedBranchID).Consume(func(childBranch *conflictdag.ChildBranch[utxo.TransactionID]) {
- rejectionWalker.Push(childBranch.ChildBranchID())
+ o.conflictDAG.Storage.CachedChildConflicts(rejectedConflictID).Consume(func(childConflict *conflictdag.ChildConflict[utxo.TransactionID]) {
+ rejectionWalker.Push(childConflict.ChildConflictID())
})
}
})
- return dislikedBranches
+ return dislikedConflicts
}
-// forEachConnectedConflictingBranchInDescendingOrder iterates over all branches connected via conflict sets
+// forEachConnectedConflictingConflictInDescendingOrder iterates over all conflicts connected via conflict sets
// and sorts them by weight. It calls the callback for each of them in that order.
-func (o *OnTangleVoting) forEachConnectedConflictingBranchInDescendingOrder(branchID utxo.TransactionID, callback func(branchID utxo.TransactionID, weight float64)) {
- branchWeights := make(map[utxo.TransactionID]float64)
- branchesOrderedByWeight := make([]utxo.TransactionID, 0)
- o.branchDAG.Utils.ForEachConnectedConflictingBranchID(branchID, func(conflictingBranchID utxo.TransactionID) {
- branchWeights[conflictingBranchID] = o.weightFunc(conflictingBranchID)
- branchesOrderedByWeight = append(branchesOrderedByWeight, conflictingBranchID)
+func (o *OnTangleVoting) forEachConnectedConflictingConflictInDescendingOrder(conflictID utxo.TransactionID, callback func(conflictID utxo.TransactionID, weight float64)) {
+ conflictWeights := make(map[utxo.TransactionID]float64)
+ conflictsOrderedByWeight := make([]utxo.TransactionID, 0)
+ o.conflictDAG.Utils.ForEachConnectedConflictingConflictID(conflictID, func(conflictingConflictID utxo.TransactionID) {
+ conflictWeights[conflictingConflictID] = o.weightFunc(conflictingConflictID)
+ conflictsOrderedByWeight = append(conflictsOrderedByWeight, conflictingConflictID)
})
- sort.Slice(branchesOrderedByWeight, func(i, j int) bool {
- branchI := branchesOrderedByWeight[i]
- branchJ := branchesOrderedByWeight[j]
+ sort.Slice(conflictsOrderedByWeight, func(i, j int) bool {
+ conflictI := conflictsOrderedByWeight[i]
+ conflictJ := conflictsOrderedByWeight[j]
- return !(branchWeights[branchI] < branchWeights[branchJ] || (branchWeights[branchI] == branchWeights[branchJ] && bytes.Compare(branchI.Bytes(), branchJ.Bytes()) > 0))
+ return !(conflictWeights[conflictI] < conflictWeights[conflictJ] || (conflictWeights[conflictI] == conflictWeights[conflictJ] && bytes.Compare(conflictI.Bytes(), conflictJ.Bytes()) > 0))
})
- for _, orderedBranchID := range branchesOrderedByWeight {
- callback(orderedBranchID, branchWeights[orderedBranchID])
+ for _, orderedConflictID := range conflictsOrderedByWeight {
+ callback(orderedConflictID, conflictWeights[orderedConflictID])
}
}
diff --git a/packages/consensus/otv/otv_test.go b/packages/consensus/otv/otv_test.go
index abc16e7426..c28ad475c2 100644
--- a/packages/consensus/otv/otv_test.go
+++ b/packages/consensus/otv/otv_test.go
@@ -19,32 +19,32 @@ import (
)
func TestOnTangleVoting_LikedInstead(t *testing.T) {
- type ExpectedLikedBranch func(executionBranchAlias string, actualBranchID utxo.TransactionID, actualConflictMembers *set.AdvancedSet[utxo.TransactionID])
+ type ExpectedLikedConflict func(executionConflictAlias string, actualConflictID utxo.TransactionID, actualConflictMembers *set.AdvancedSet[utxo.TransactionID])
- mustMatch := func(s *Scenario, aliasLikedBranches []string, aliasConflictMembers []string) ExpectedLikedBranch {
- return func(_ string, actualBranchID utxo.TransactionID, actualConflictMembers *set.AdvancedSet[utxo.TransactionID]) {
- expectedBranches := set.NewAdvancedSet[utxo.TransactionID]()
+ mustMatch := func(s *Scenario, aliasLikedConflicts []string, aliasConflictMembers []string) ExpectedLikedConflict {
+ return func(_ string, actualConflictID utxo.TransactionID, actualConflictMembers *set.AdvancedSet[utxo.TransactionID]) {
+ expectedConflicts := set.NewAdvancedSet[utxo.TransactionID]()
expectedConflictMembers := set.NewAdvancedSet[utxo.TransactionID]()
- if len(aliasLikedBranches) > 0 {
- for _, aliasLikedBranch := range aliasLikedBranches {
- expectedBranches.Add(s.BranchID(aliasLikedBranch))
+ if len(aliasLikedConflicts) > 0 {
+ for _, aliasLikedConflict := range aliasLikedConflicts {
+ expectedConflicts.Add(s.ConflictID(aliasLikedConflict))
}
} else {
- expectedBranches.Add(utxo.EmptyTransactionID)
+ expectedConflicts.Add(utxo.EmptyTransactionID)
}
if len(aliasConflictMembers) > 0 {
for _, aliasConflictMember := range aliasConflictMembers {
- expectedConflictMembers.Add(s.BranchID(aliasConflictMember))
+ expectedConflictMembers.Add(s.ConflictID(aliasConflictMember))
}
}
- require.True(t, expectedBranches.Has(actualBranchID), "expected one of: %s, actual: %s", expectedBranches, actualBranchID)
+ require.True(t, expectedConflicts.Has(actualConflictID), "expected one of: %s, actual: %s", expectedConflicts, actualConflictID)
require.True(t, expectedConflictMembers.Equal(actualConflictMembers), "expected: %s, actual: %s", expectedConflictMembers, actualConflictMembers)
}
}
type execution struct {
- branchAlias string
- wantLikedBranch ExpectedLikedBranch
+ conflictAlias string
+ wantLikedConflict ExpectedLikedConflict
}
type test struct {
Scenario Scenario
@@ -63,12 +63,12 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
}
@@ -86,16 +86,16 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B", "C"}, []string{"A", "C"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B", "C"}, []string{"A", "C"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A"}),
},
}
@@ -113,16 +113,16 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"C"}),
},
}
@@ -140,16 +140,16 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"C"}),
},
}
@@ -167,16 +167,16 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B", "C"}, []string{"A", "C"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B", "C"}, []string{"A", "C"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A"}),
},
}
@@ -194,16 +194,16 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A"}),
},
}
@@ -221,20 +221,20 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "D"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "D"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"D"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"D"}),
},
}
@@ -252,20 +252,20 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "C", "D"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "C", "D"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
},
}
@@ -283,24 +283,24 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B", "C", "D"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B", "C", "D"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"B", "A"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"B", "A"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"C", "D"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"C", "D"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"C", "D"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"C", "D"}),
},
{
- branchAlias: "E",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"B"}),
+ conflictAlias: "E",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"B"}),
},
}
@@ -318,24 +318,24 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "C", "D"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "C", "D"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "E"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "E"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"D"}, []string{"A", "C"}),
},
{
- branchAlias: "E",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"E"}),
+ conflictAlias: "E",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"E"}),
},
}
@@ -353,16 +353,16 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A", "B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A", "B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A", "B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A", "B"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"A", "B"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"A", "B"}),
},
}
@@ -380,24 +380,24 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"C"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
{
- branchAlias: "E",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "E",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
}
@@ -415,24 +415,24 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"B"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"B"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
{
- branchAlias: "E",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "E",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
}
@@ -450,48 +450,48 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B", "C"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"B"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"B"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
{
- branchAlias: "E",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "E",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{"G"}, []string{"F"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{"G"}, []string{"F"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{"G"}, []string{"F"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{"G"}, []string{"F"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"I"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"I"}),
},
{
- branchAlias: "I",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"I"}),
+ conflictAlias: "I",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"I"}),
},
{
- branchAlias: "J",
- wantLikedBranch: mustMatch(&scenario, []string{"K"}, []string{"J"}),
+ conflictAlias: "J",
+ wantLikedConflict: mustMatch(&scenario, []string{"K"}, []string{"J"}),
},
{
- branchAlias: "K",
- wantLikedBranch: mustMatch(&scenario, []string{"K"}, []string{"J"}),
+ conflictAlias: "K",
+ wantLikedConflict: mustMatch(&scenario, []string{"K"}, []string{"J"}),
},
}
@@ -509,48 +509,48 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "C"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"C"}),
},
{
- branchAlias: "D",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "D",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
{
- branchAlias: "E",
- wantLikedBranch: mustMatch(&scenario, []string{"E"}, []string{"D"}),
+ conflictAlias: "E",
+ wantLikedConflict: mustMatch(&scenario, []string{"E"}, []string{"D"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"G", "F"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"G", "F"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"F", "G"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"F", "G"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"I"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"I"}),
},
{
- branchAlias: "I",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"I"}),
+ conflictAlias: "I",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"I"}),
},
{
- branchAlias: "J",
- wantLikedBranch: mustMatch(&scenario, []string{"K"}, []string{"J"}),
+ conflictAlias: "J",
+ wantLikedConflict: mustMatch(&scenario, []string{"K"}, []string{"J"}),
},
{
- branchAlias: "K",
- wantLikedBranch: mustMatch(&scenario, []string{"K"}, []string{"J"}),
+ conflictAlias: "K",
+ wantLikedConflict: mustMatch(&scenario, []string{"K"}, []string{"J"}),
},
}
@@ -568,28 +568,28 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "H", "C"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "H", "C"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"H", "C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"H", "C"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"F", "G", "H"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"F", "G", "H"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"F", "G", "H"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"F", "G", "H"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"C", "F", "G", "H"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"C", "F", "G", "H"}),
},
}
@@ -607,28 +607,28 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"H", "C", "B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"H", "C", "B"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"H", "B"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"H", "B"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{"G"}, []string{"H", "F"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{"G"}, []string{"H", "F"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{"G"}, []string{"F", "H"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{"G"}, []string{"F", "H"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"C"}, []string{"B", "F", "G", "H"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"C"}, []string{"B", "F", "G", "H"}),
},
}
@@ -646,56 +646,56 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"H", "C", "B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"H", "C", "B"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"B", "C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"B", "C"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"G", "F"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"G", "F"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"F", "G"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"F", "G"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"F", "G", "B", "C"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"F", "G", "B", "C"}),
},
{
- branchAlias: "I",
- wantLikedBranch: mustMatch(&scenario, []string{"J"}, []string{"O", "I"}),
+ conflictAlias: "I",
+ wantLikedConflict: mustMatch(&scenario, []string{"J"}, []string{"O", "I"}),
},
{
- branchAlias: "J",
- wantLikedBranch: mustMatch(&scenario, []string{"J"}, []string{"I", "O"}),
+ conflictAlias: "J",
+ wantLikedConflict: mustMatch(&scenario, []string{"J"}, []string{"I", "O"}),
},
{
- branchAlias: "K",
- wantLikedBranch: mustMatch(&scenario, []string{"L"}, []string{"K"}),
+ conflictAlias: "K",
+ wantLikedConflict: mustMatch(&scenario, []string{"L"}, []string{"K"}),
},
{
- branchAlias: "L",
- wantLikedBranch: mustMatch(&scenario, []string{"L"}, []string{"K"}),
+ conflictAlias: "L",
+ wantLikedConflict: mustMatch(&scenario, []string{"L"}, []string{"K"}),
},
{
- branchAlias: "M",
- wantLikedBranch: mustMatch(&scenario, []string{"N"}, []string{"O", "M"}),
+ conflictAlias: "M",
+ wantLikedConflict: mustMatch(&scenario, []string{"N"}, []string{"O", "M"}),
},
{
- branchAlias: "N",
- wantLikedBranch: mustMatch(&scenario, []string{"N"}, []string{"M", "O"}),
+ conflictAlias: "N",
+ wantLikedConflict: mustMatch(&scenario, []string{"N"}, []string{"M", "O"}),
},
{
- branchAlias: "O",
- wantLikedBranch: mustMatch(&scenario, []string{"J"}, []string{"M", "N", "I", "O"}),
+ conflictAlias: "O",
+ wantLikedConflict: mustMatch(&scenario, []string{"J"}, []string{"M", "N", "I", "O"}),
},
}
@@ -713,56 +713,56 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"B"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"B"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"A"}, []string{"H", "C", "B"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"A"}, []string{"H", "C", "B"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"B", "C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"B", "C"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"G", "F"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"G", "F"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"F", "G"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"F", "G"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"H"}, []string{"F", "G", "B", "C"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"H"}, []string{"F", "G", "B", "C"}),
},
{
- branchAlias: "I",
- wantLikedBranch: mustMatch(&scenario, []string{"O"}, []string{"J", "I"}),
+ conflictAlias: "I",
+ wantLikedConflict: mustMatch(&scenario, []string{"O"}, []string{"J", "I"}),
},
{
- branchAlias: "J",
- wantLikedBranch: mustMatch(&scenario, []string{"O"}, []string{"I", "J"}),
+ conflictAlias: "J",
+ wantLikedConflict: mustMatch(&scenario, []string{"O"}, []string{"I", "J"}),
},
{
- branchAlias: "K",
- wantLikedBranch: mustMatch(&scenario, []string{"L"}, []string{"K"}),
+ conflictAlias: "K",
+ wantLikedConflict: mustMatch(&scenario, []string{"L"}, []string{"K"}),
},
{
- branchAlias: "L",
- wantLikedBranch: mustMatch(&scenario, []string{"L"}, []string{"K"}),
+ conflictAlias: "L",
+ wantLikedConflict: mustMatch(&scenario, []string{"L"}, []string{"K"}),
},
{
- branchAlias: "M",
- wantLikedBranch: mustMatch(&scenario, []string{"O"}, []string{"N", "M"}),
+ conflictAlias: "M",
+ wantLikedConflict: mustMatch(&scenario, []string{"O"}, []string{"N", "M"}),
},
{
- branchAlias: "N",
- wantLikedBranch: mustMatch(&scenario, []string{"O"}, []string{"M", "N"}),
+ conflictAlias: "N",
+ wantLikedConflict: mustMatch(&scenario, []string{"O"}, []string{"M", "N"}),
},
{
- branchAlias: "O",
- wantLikedBranch: mustMatch(&scenario, []string{"O"}, []string{"M", "N", "J", "I"}),
+ conflictAlias: "O",
+ wantLikedConflict: mustMatch(&scenario, []string{"O"}, []string{"M", "N", "J", "I"}),
},
}
@@ -780,36 +780,36 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
executions := []execution{
{
- branchAlias: "A",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A"}),
+ conflictAlias: "A",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A"}),
},
{
- branchAlias: "B",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"A", "H", "C"}),
+ conflictAlias: "B",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"A", "H", "C"}),
},
{
- branchAlias: "C",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"H", "C"}),
+ conflictAlias: "C",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"H", "C"}),
},
{
- branchAlias: "F",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"G", "H", "F"}),
+ conflictAlias: "F",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"G", "H", "F"}),
},
{
- branchAlias: "G",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"F", "H", "G"}),
+ conflictAlias: "G",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"F", "H", "G"}),
},
{
- branchAlias: "H",
- wantLikedBranch: mustMatch(&scenario, []string{"B"}, []string{"C", "F", "G", "H"}),
+ conflictAlias: "H",
+ wantLikedConflict: mustMatch(&scenario, []string{"B"}, []string{"C", "F", "G", "H"}),
},
{
- branchAlias: "I",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"J", "I"}),
+ conflictAlias: "I",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"J", "I"}),
},
{
- branchAlias: "J",
- wantLikedBranch: mustMatch(&scenario, []string{}, []string{"I", "J"}),
+ conflictAlias: "J",
+ wantLikedConflict: mustMatch(&scenario, []string{}, []string{"I", "J"}),
},
}
@@ -826,12 +826,12 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
ls := ledger.New(ledger.WithCacheTimeProvider(database.NewCacheTimeProvider(0)))
defer ls.Shutdown()
- tt.test.Scenario.CreateBranches(t, ls.ConflictDAG)
+ tt.test.Scenario.CreateConflicts(t, ls.ConflictDAG)
o := NewOnTangleVoting(ls.ConflictDAG, tt.test.WeightFunc)
for _, e := range tt.test.executions {
- liked, conflictMembers := o.LikedConflictMember(tt.test.Scenario.BranchID(e.branchAlias))
- e.wantLikedBranch(e.branchAlias, liked, conflictMembers)
+ liked, conflictMembers := o.LikedConflictMember(tt.test.Scenario.ConflictID(e.conflictAlias))
+ e.wantLikedConflict(e.conflictAlias, liked, conflictMembers)
}
})
}
@@ -839,36 +839,36 @@ func TestOnTangleVoting_LikedInstead(t *testing.T) {
// region test helpers /////////////////////////////////////////////////////////////////////////////////////////////////
-// BranchMeta describes a branch in a branchDAG with its conflicts and approval weight.
-type BranchMeta struct {
- Order int
- BranchID utxo.TransactionID
- ParentBranches *set.AdvancedSet[utxo.TransactionID]
- Conflicting *set.AdvancedSet[utxo.OutputID]
- ApprovalWeight float64
+// ConflictMeta describes a conflict in a conflictDAG with its conflicts and approval weight.
+type ConflictMeta struct {
+ Order int
+ ConflictID utxo.TransactionID
+ ParentConflicts *set.AdvancedSet[utxo.TransactionID]
+ Conflicting *set.AdvancedSet[utxo.OutputID]
+ ApprovalWeight float64
}
-// Scenario is a testing utility representing a branchDAG with additional information such as approval weight for each
-// individual branch.
-type Scenario map[string]*BranchMeta
+// Scenario is a testing utility representing a conflictDAG with additional information such as approval weight for each
+// individual conflict.
+type Scenario map[string]*ConflictMeta
-// IDsToNames returns a mapping of BranchIDs to their alias.
+// IDsToNames returns a mapping of ConflictIDs to their alias.
func (s *Scenario) IDsToNames() map[utxo.TransactionID]string {
mapping := map[utxo.TransactionID]string{}
for name, m := range *s {
- mapping[m.BranchID] = name
+ mapping[m.ConflictID] = name
}
return mapping
}
-// BranchID returns the BranchID of the given branch alias.
-func (s *Scenario) BranchID(alias string) utxo.TransactionID {
- return (*s)[alias].BranchID
+// ConflictID returns the ConflictID of the given conflict alias.
+func (s *Scenario) ConflictID(alias string) utxo.TransactionID {
+ return (*s)[alias].ConflictID
}
-// BranchIDs returns either all BranchIDs in the scenario or only the ones with the given aliases.
-func (s *Scenario) BranchIDs(aliases ...string) *set.AdvancedSet[utxo.TransactionID] {
- branchIDs := set.NewAdvancedSet[utxo.TransactionID]()
+// ConflictIDs returns either all ConflictIDs in the scenario or only the ones with the given aliases.
+func (s *Scenario) ConflictIDs(aliases ...string) *set.AdvancedSet[utxo.TransactionID] {
+ conflictIDs := set.NewAdvancedSet[utxo.TransactionID]()
for name, meta := range *s {
if len(aliases) > 0 {
var has bool
@@ -882,13 +882,13 @@ func (s *Scenario) BranchIDs(aliases ...string) *set.AdvancedSet[utxo.Transactio
continue
}
}
- branchIDs.Add(meta.BranchID)
+ conflictIDs.Add(meta.ConflictID)
}
- return branchIDs
+ return conflictIDs
}
-// CreateBranches orders and creates the branches for the scenario.
-func (s *Scenario) CreateBranches(t *testing.T, branchDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID]) {
+// CreateConflicts orders and creates the conflicts for the scenario.
+func (s *Scenario) CreateConflicts(t *testing.T, conflictDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID]) {
type order struct {
order int
name string
@@ -905,32 +905,32 @@ func (s *Scenario) CreateBranches(t *testing.T, branchDAG *conflictdag.ConflictD
for _, o := range ordered {
m := (*s)[o.name]
- createTestBranch(t, branchDAG, o.name, m)
+ createTestConflict(t, conflictDAG, o.name, m)
}
}
-// creates a branch and registers a BranchIDAlias with the name specified in branchMeta.
-func createTestBranch(t *testing.T, branchDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID], alias string, branchMeta *BranchMeta) bool {
- var newBranchCreated bool
+// creates a conflict and registers a ConflictIDAlias with the name specified in conflictMeta.
+func createTestConflict(t *testing.T, conflictDAG *conflictdag.ConflictDAG[utxo.TransactionID, utxo.OutputID], alias string, conflictMeta *ConflictMeta) bool {
+ var newConflictCreated bool
- if branchMeta.BranchID == utxo.EmptyTransactionID {
- panic("a branch must have its ID defined in its BranchMeta")
+ if conflictMeta.ConflictID == utxo.EmptyTransactionID {
+ panic("a conflict must have its ID defined in its ConflictMeta")
}
- newBranchCreated = branchDAG.CreateConflict(branchMeta.BranchID, branchMeta.ParentBranches, branchMeta.Conflicting)
- require.True(t, newBranchCreated)
- branchDAG.Storage.CachedConflict(branchMeta.BranchID).Consume(func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- branchMeta.BranchID = branch.ID()
+ newConflictCreated = conflictDAG.CreateConflict(conflictMeta.ConflictID, conflictMeta.ParentConflicts, conflictMeta.Conflicting)
+ require.True(t, newConflictCreated)
+ conflictDAG.Storage.CachedConflict(conflictMeta.ConflictID).Consume(func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ conflictMeta.ConflictID = conflict.ID()
})
- branchMeta.BranchID.RegisterAlias(alias)
- return newBranchCreated
+ conflictMeta.ConflictID.RegisterAlias(alias)
+ return newConflictCreated
}
// WeightFuncFromScenario creates a WeightFunc from the given scenario so that the approval weight can be mocked
-// according to the branch weight's specified in the scenario.
+// according to the conflict weight's specified in the scenario.
func WeightFuncFromScenario(t *testing.T, scenario Scenario) consensus.WeightFunc {
- branchIDsToName := scenario.IDsToNames()
- return func(branchID utxo.TransactionID) (weight float64) {
- name, nameOk := branchIDsToName[branchID]
+ conflictIDsToName := scenario.IDsToNames()
+ return func(conflictID utxo.TransactionID) (weight float64) {
+ name, nameOk := conflictIDsToName[conflictID]
require.True(t, nameOk)
meta, metaOk := scenario[name]
require.True(t, metaOk)
@@ -965,796 +965,796 @@ var (
s1 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.6,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.6,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
}
s2 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.6,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.6,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.8,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.8,
},
}
s3 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.5,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.5,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.4,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.4,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.2,
},
}
s4 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.3,
},
}
s45 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{200}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{200}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.3,
},
}
s5 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.1,
},
}
s6 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID5),
- ApprovalWeight: 0.4,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID5),
+ ApprovalWeight: 0.4,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.2,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID5),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID5),
+ ApprovalWeight: 0.1,
},
}
s7 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.1,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.15,
},
}
s8 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID0, conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID0, conflictID1),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.1,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.15,
},
"E": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{6}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID0),
- ApprovalWeight: 0.5,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{6}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID0),
+ ApprovalWeight: 0.5,
},
}
s9 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID0, conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID0, conflictID1),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.1,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.15,
},
"E": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{6}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID0),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{6}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID0),
+ ApprovalWeight: 0.1,
},
}
s10 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID0, conflictID1),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID0, conflictID1),
+ ApprovalWeight: 0.1,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID0, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID0, conflictID2),
+ ApprovalWeight: 0.3,
},
}
s12 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.25,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.25,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.15,
},
"E": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{6}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.35,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{6}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.35,
},
}
s13 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.4,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.4,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.15,
},
"E": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{6}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.35,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{6}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.35,
},
}
s14 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.4,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.4,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.15,
},
"E": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{6}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.35,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{6}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.35,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.17,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.17,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
- Conflicting: set.NewAdvancedSet(conflictID6),
- ApprovalWeight: 0.1,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
+ Conflicting: set.NewAdvancedSet(conflictID6),
+ ApprovalWeight: 0.1,
},
"I": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{10}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
- Conflicting: set.NewAdvancedSet(conflictID6),
- ApprovalWeight: 0.05,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{10}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
+ Conflicting: set.NewAdvancedSet(conflictID6),
+ ApprovalWeight: 0.05,
},
"J": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{11}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID9),
- ApprovalWeight: 0.04,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{11}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID9),
+ ApprovalWeight: 0.04,
},
"K": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{12}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID9),
- ApprovalWeight: 0.06,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{12}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID9),
+ ApprovalWeight: 0.06,
},
}
s15 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.2,
},
"D": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{5}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.15,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{5}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.15,
},
"E": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{6}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID3),
- ApprovalWeight: 0.35,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{6}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID3),
+ ApprovalWeight: 0.35,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.17,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.17,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
- Conflicting: set.NewAdvancedSet(conflictID6),
- ApprovalWeight: 0.1,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
+ Conflicting: set.NewAdvancedSet(conflictID6),
+ ApprovalWeight: 0.1,
},
"I": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{10}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
- Conflicting: set.NewAdvancedSet(conflictID6),
- ApprovalWeight: 0.05,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{10}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{6}}),
+ Conflicting: set.NewAdvancedSet(conflictID6),
+ ApprovalWeight: 0.05,
},
"J": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{11}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID9),
- ApprovalWeight: 0.04,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{11}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID9),
+ ApprovalWeight: 0.04,
},
"K": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{12}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID9),
- ApprovalWeight: 0.06,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{12}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID9),
+ ApprovalWeight: 0.06,
},
}
s16 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.2,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.03,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.03,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
- ApprovalWeight: 0.15,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
+ ApprovalWeight: 0.15,
},
}
s17 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.1,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.2,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.03,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.03,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
- ApprovalWeight: 0.15,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
+ ApprovalWeight: 0.15,
},
}
s18 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.1,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.05,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.05,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.03,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.03,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
- ApprovalWeight: 0.15,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
+ ApprovalWeight: 0.15,
},
"K": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{10}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID11),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{10}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID11),
+ ApprovalWeight: 0.1,
},
"L": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{11}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID11),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{11}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID11),
+ ApprovalWeight: 0.2,
},
"M": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{12}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
- Conflicting: set.NewAdvancedSet(conflictID12),
- ApprovalWeight: 0.05,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{12}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
+ Conflicting: set.NewAdvancedSet(conflictID12),
+ ApprovalWeight: 0.05,
},
"N": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{13}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
- Conflicting: set.NewAdvancedSet(conflictID12),
- ApprovalWeight: 0.06,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{13}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
+ Conflicting: set.NewAdvancedSet(conflictID12),
+ ApprovalWeight: 0.06,
},
"I": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{14}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID8),
- ApprovalWeight: 0.07,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{14}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID8),
+ ApprovalWeight: 0.07,
},
"J": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{15}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID8),
- ApprovalWeight: 0.08,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{15}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID8),
+ ApprovalWeight: 0.08,
},
"O": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{16}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}, utxo.TransactionID{Identifier: types.Identifier{11}}),
- Conflicting: set.NewAdvancedSet(conflictID8, conflictID12),
- ApprovalWeight: 0.05,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{16}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}, utxo.TransactionID{Identifier: types.Identifier{11}}),
+ Conflicting: set.NewAdvancedSet(conflictID8, conflictID12),
+ ApprovalWeight: 0.05,
},
}
s19 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.3,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.1,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.05,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.05,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.03,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.03,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
- ApprovalWeight: 0.15,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
+ ApprovalWeight: 0.15,
},
"K": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{10}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID11),
- ApprovalWeight: 0.1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{10}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID11),
+ ApprovalWeight: 0.1,
},
"L": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{11}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID11),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{11}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID11),
+ ApprovalWeight: 0.2,
},
"M": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{12}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
- Conflicting: set.NewAdvancedSet(conflictID12),
- ApprovalWeight: 0.05,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{12}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
+ Conflicting: set.NewAdvancedSet(conflictID12),
+ ApprovalWeight: 0.05,
},
"N": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{13}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
- Conflicting: set.NewAdvancedSet(conflictID12),
- ApprovalWeight: 0.06,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{13}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{11}}),
+ Conflicting: set.NewAdvancedSet(conflictID12),
+ ApprovalWeight: 0.06,
},
"I": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{14}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID8),
- ApprovalWeight: 0.07,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{14}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID8),
+ ApprovalWeight: 0.07,
},
"J": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{15}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
- Conflicting: set.NewAdvancedSet(conflictID8),
- ApprovalWeight: 0.08,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{15}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}),
+ Conflicting: set.NewAdvancedSet(conflictID8),
+ ApprovalWeight: 0.08,
},
"O": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{16}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}, utxo.TransactionID{Identifier: types.Identifier{11}}),
- Conflicting: set.NewAdvancedSet(conflictID8, conflictID12),
- ApprovalWeight: 0.09,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{16}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{9}}, utxo.TransactionID{Identifier: types.Identifier{11}}),
+ Conflicting: set.NewAdvancedSet(conflictID8, conflictID12),
+ ApprovalWeight: 0.09,
},
}
s20 = Scenario{
"A": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{2}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{2}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1),
+ ApprovalWeight: 0.2,
},
"B": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{3}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
- ApprovalWeight: 0.3,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{3}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID1, conflictID2),
+ ApprovalWeight: 0.3,
},
"C": {
- BranchID: utxo.TransactionID{Identifier: types.Identifier{4}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID),
- Conflicting: set.NewAdvancedSet(conflictID2),
- ApprovalWeight: 0.2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{4}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID),
+ Conflicting: set.NewAdvancedSet(conflictID2),
+ ApprovalWeight: 0.2,
},
"F": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{7}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.02,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{7}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.02,
},
"G": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{8}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID4),
- ApprovalWeight: 0.03,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{8}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID4),
+ ApprovalWeight: 0.03,
},
"H": {
- Order: 1,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{9}},
- ParentBranches: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
- Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
- ApprovalWeight: 0.15,
+ Order: 1,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{9}},
+ ParentConflicts: set.NewAdvancedSet(utxo.EmptyTransactionID, utxo.TransactionID{Identifier: types.Identifier{2}}),
+ Conflicting: set.NewAdvancedSet(conflictID2, conflictID4),
+ ApprovalWeight: 0.15,
},
"I": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{10}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{7}}),
- Conflicting: set.NewAdvancedSet(conflictID7),
- ApprovalWeight: 0.005,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{10}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{7}}),
+ Conflicting: set.NewAdvancedSet(conflictID7),
+ ApprovalWeight: 0.005,
},
"J": {
- Order: 2,
- BranchID: utxo.TransactionID{Identifier: types.Identifier{11}},
- ParentBranches: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{7}}),
- Conflicting: set.NewAdvancedSet(conflictID7),
- ApprovalWeight: 0.015,
+ Order: 2,
+ ConflictID: utxo.TransactionID{Identifier: types.Identifier{11}},
+ ParentConflicts: set.NewAdvancedSet(utxo.TransactionID{Identifier: types.Identifier{7}}),
+ Conflicting: set.NewAdvancedSet(conflictID7),
+ ApprovalWeight: 0.015,
},
}
)
diff --git a/packages/database/prefix.go b/packages/database/prefix.go
index 361adbb654..e46baa2f93 100644
--- a/packages/database/prefix.go
+++ b/packages/database/prefix.go
@@ -19,12 +19,15 @@ const (
// PrefixIndexer defines the storage prefix for the indexer package.
PrefixIndexer
- // PrefixConflictDAG defines the storage prefix for the branchDAG package.
+ // PrefixConflictDAG defines the storage prefix for the conflictDAG package.
PrefixConflictDAG
// PrefixMana defines the storage prefix for the mana package.
PrefixMana
- // PrefixEpochs defines the storage prefix for the epochs package.
- PrefixEpochs
+ // PrefixNotarization defines the storage prefix for the epochs package.
+ PrefixNotarization
+
+ // PrefixEpochsStorage defines the storage prefix for the epoch storage plugin.
+ PrefixEpochsStorage
)
diff --git a/packages/epoch/epochmanager_test.go b/packages/epoch/epochmanager_test.go
new file mode 100644
index 0000000000..c31b1b56e7
--- /dev/null
+++ b/packages/epoch/epochmanager_test.go
@@ -0,0 +1,65 @@
+package epoch
+
+import (
+ "testing"
+ "time"
+
+ "github.com/magiconair/properties/assert"
+)
+
+func TestEpochManager(t *testing.T) {
+ genesisTime := time.Now()
+ GenesisTime = genesisTime.Unix()
+ Duration = 10
+
+ {
+ // ei = 0
+ testTime := genesisTime.Add(5 * time.Second)
+ ei := IndexFromTime(testTime)
+ assert.Equal(t, ei, Index(1))
+
+ startTime := ei.StartTime()
+ assert.Equal(t, startTime, time.Unix(genesisTime.Unix(), 0))
+ endTime := ei.EndTime()
+ assert.Equal(t, endTime, time.Unix(genesisTime.Add(9*time.Second).Unix(), 0))
+ }
+
+ {
+ // ei = 1
+ testTime := genesisTime.Add(10 * time.Second)
+ ei := IndexFromTime(testTime)
+ assert.Equal(t, ei, Index(2))
+
+ startTime := ei.StartTime()
+ assert.Equal(t, startTime, time.Unix(genesisTime.Add(10*time.Second).Unix(), 0))
+ endTime := ei.EndTime()
+ assert.Equal(t, endTime, time.Unix(genesisTime.Add(19*time.Second).Unix(), 0))
+ }
+
+ {
+ // ei = 3
+ testTime := genesisTime.Add(35 * time.Second)
+ ei := IndexFromTime(testTime)
+ assert.Equal(t, ei, Index(4))
+
+ startTime := ei.StartTime()
+ assert.Equal(t, startTime, time.Unix(genesisTime.Add(30*time.Second).Unix(), 0))
+ endTime := ei.EndTime()
+ assert.Equal(t, endTime, time.Unix(genesisTime.Add(39*time.Second).Unix(), 0))
+ }
+
+ {
+ // ei = 4
+ testTime := genesisTime.Add(49 * time.Second)
+ ei := IndexFromTime(testTime)
+ assert.Equal(t, ei, Index(5))
+
+ }
+
+ {
+ // a time before genesis time, ei = 0
+ testTime := genesisTime.Add(-10 * time.Second)
+ ei := IndexFromTime(testTime)
+ assert.Equal(t, ei, Index(0))
+ }
+}
diff --git a/packages/epoch/types.go b/packages/epoch/types.go
new file mode 100644
index 0000000000..fca295cb8f
--- /dev/null
+++ b/packages/epoch/types.go
@@ -0,0 +1,168 @@
+package epoch
+
+import (
+ "context"
+ "fmt"
+ "time"
+
+ "github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/hive.go/generics/model"
+ "github.com/iotaledger/hive.go/serix"
+ "github.com/mr-tron/base58"
+ "golang.org/x/crypto/blake2b"
+)
+
+var (
+ // GenesisTime is the time (Unix in seconds) of the genesis.
+ GenesisTime int64 = 1656588336
+ // Duration is the default epoch duration in seconds.
+ Duration int64 = 10
+)
+
+// Index is the ID of an epoch.
+type Index int64
+
+func IndexFromBytes(bytes []byte) (ei Index, consumedBytes int, err error) {
+ consumedBytes, err = serix.DefaultAPI.Decode(context.Background(), bytes, &ei)
+ if err != nil {
+ panic(err)
+ }
+
+ return
+}
+
+// IndexFromTime calculates the EI for the given time.
+func IndexFromTime(t time.Time) Index {
+ elapsedSeconds := t.Unix() - GenesisTime
+ if elapsedSeconds < 0 {
+ return 0
+ }
+
+ return Index(elapsedSeconds/Duration + 1)
+}
+
+func (i Index) Bytes() []byte {
+ bytes, err := serix.DefaultAPI.Encode(context.Background(), i, serix.WithValidation())
+ if err != nil {
+ panic(err)
+ }
+
+ return bytes
+}
+
+func (i Index) String() string {
+ return fmt.Sprintf("EI(%d)", i)
+}
+
+// StartTime calculates the start time of the given epoch.
+func (i Index) StartTime() time.Time {
+ startUnix := GenesisTime + int64(i-1)*Duration
+ return time.Unix(startUnix, 0)
+}
+
+// EndTime calculates the end time of the given epoch.
+func (i Index) EndTime() time.Time {
+ endUnix := GenesisTime + int64(i-1)*Duration + Duration - 1
+ return time.Unix(endUnix, 0)
+}
+
+// CurrentEpochIndex returns the EI at the current RATT time.
+func CurrentEpochIndex() Index {
+ return IndexFromTime(clock.SyncedTime())
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+type MerkleRoot [blake2b.Size256]byte
+
+type (
+ ECR = MerkleRoot
+ EC = MerkleRoot
+)
+
+func NewMerkleRoot(bytes []byte) (mr MerkleRoot) {
+ b := [blake2b.Size256]byte{}
+ copy(b[:], bytes[:])
+ return b
+}
+
+func (m MerkleRoot) Base58() string {
+ return base58.Encode(m[:])
+}
+
+func (m MerkleRoot) Bytes() []byte {
+ return m[:]
+}
+
+// ECRecord is a storable object represents the ecRecord of an epoch.
+type ECRecord struct {
+ model.Storable[Index, ECRecord, *ECRecord, ecRecord] `serix:"0"`
+}
+
+type ecRecord struct {
+ EI Index `serix:"0"`
+ ECR ECR `serix:"1"`
+ PrevEC EC `serix:"2"`
+}
+
+// NewECRecord creates and returns a ECRecord of the given EI.
+func NewECRecord(ei Index) (new *ECRecord) {
+ new = model.NewStorable[Index, ECRecord](&ecRecord{
+ EI: ei,
+ ECR: MerkleRoot{},
+ PrevEC: MerkleRoot{},
+ })
+ new.SetID(ei)
+ return
+}
+
+func (e *ECRecord) EI() Index {
+ e.RLock()
+ defer e.RUnlock()
+
+ return e.M.EI
+}
+
+func (e *ECRecord) SetEI(ei Index) {
+ e.Lock()
+ defer e.Unlock()
+
+ e.M.EI = ei
+ e.SetID(ei)
+
+ e.SetModified()
+}
+
+// ECR returns the ECR of an ECRecord.
+func (e *ECRecord) ECR() ECR {
+ e.RLock()
+ defer e.RUnlock()
+
+ return e.M.ECR
+}
+
+// SetECR sets the ECR of an ECRecord.
+func (e *ECRecord) SetECR(ecr ECR) {
+ e.Lock()
+ defer e.Unlock()
+
+ e.M.ECR = NewMerkleRoot(ecr[:])
+ e.SetModified()
+}
+
+// PrevEC returns the EC of an ECRecord.
+func (e *ECRecord) PrevEC() EC {
+ e.RLock()
+ defer e.RUnlock()
+
+ return e.M.PrevEC
+}
+
+// SetPrevEC sets the PrevEC of an ECRecord.
+func (e *ECRecord) SetPrevEC(prevEC EC) {
+ e.Lock()
+ defer e.Unlock()
+
+ e.M.PrevEC = NewMerkleRoot(prevEC[:])
+ e.SetModified()
+}
diff --git a/packages/faucet/request.go b/packages/faucet/request.go
index b6056ebdd4..7e6477bc6e 100644
--- a/packages/faucet/request.go
+++ b/packages/faucet/request.go
@@ -108,7 +108,7 @@ func (p *Payload) SetConsensusManaPledgeID(id identity.ID) {
p.M.ConsensusManaPledgeID = id
}
-// IsFaucetReq checks if the message is faucet payload.
-func IsFaucetReq(msg *tangle.Message) bool {
- return msg.Payload().Type() == RequestType
+// IsFaucetReq checks if the block is faucet payload.
+func IsFaucetReq(blk *tangle.Block) bool {
+ return blk.Payload().Type() == RequestType
}
diff --git a/packages/faucet/request_test.go b/packages/faucet/request_test.go
index 84473a6309..d796044bae 100644
--- a/packages/faucet/request_test.go
+++ b/packages/faucet/request_test.go
@@ -1,7 +1,6 @@
package faucet
import (
- "fmt"
"testing"
"time"
@@ -11,36 +10,12 @@ import (
"github.com/iotaledger/hive.go/types"
"github.com/stretchr/testify/assert"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
"github.com/iotaledger/goshimmer/packages/tangle"
"github.com/iotaledger/goshimmer/packages/tangle/payload"
)
-func ExampleRequest() {
- keyPair := ed25519.GenerateKeyPair()
- address := devnetvm.NewED25519Address(keyPair.PublicKey)
- local := identity.NewLocalIdentity(keyPair.PublicKey, keyPair.PrivateKey)
- emptyID := identity.ID{}
-
- // 1. create faucet payload
- faucetRequest := NewRequest(address, emptyID, emptyID, 0)
-
- // 2. build actual message
- tx := tangle.NewMessage(map[tangle.ParentsType]tangle.MessageIDs{
- tangle.StrongParentType: {
- tangle.EmptyMessageID: types.Void,
- },
- },
- time.Now(),
- local.PublicKey(),
- 0,
- faucetRequest,
- 0,
- ed25519.EmptySignature,
- )
- fmt.Println(tx.String())
-}
-
func TestRequest(t *testing.T) {
keyPair := ed25519.GenerateKeyPair()
address := devnetvm.NewED25519Address(keyPair.PublicKey)
@@ -73,10 +48,10 @@ func TestIsFaucetReq(t *testing.T) {
faucetRequest := NewRequest(address, emptyID, emptyID, 0)
- faucetMsg := tangle.NewMessage(
- map[tangle.ParentsType]tangle.MessageIDs{
+ faucetBlk := tangle.NewBlock(
+ map[tangle.ParentsType]tangle.BlockIDs{
tangle.StrongParentType: {
- tangle.EmptyMessageID: types.Void,
+ tangle.EmptyBlockID: types.Void,
},
},
time.Now(),
@@ -85,12 +60,14 @@ func TestIsFaucetReq(t *testing.T) {
faucetRequest,
0,
ed25519.EmptySignature,
+ 0,
+ epoch.NewECRecord(0),
)
- dataMsg := tangle.NewMessage(
- map[tangle.ParentsType]tangle.MessageIDs{
+ dataBlk := tangle.NewBlock(
+ map[tangle.ParentsType]tangle.BlockIDs{
tangle.StrongParentType: {
- tangle.EmptyMessageID: types.Void,
+ tangle.EmptyBlockID: types.Void,
},
},
time.Now(),
@@ -99,8 +76,10 @@ func TestIsFaucetReq(t *testing.T) {
payload.NewGenericDataPayload([]byte("data")),
0,
ed25519.EmptySignature,
+ 0,
+ epoch.NewECRecord(0),
)
- assert.Equal(t, true, IsFaucetReq(faucetMsg))
- assert.Equal(t, false, IsFaucetReq(dataMsg))
+ assert.Equal(t, true, IsFaucetReq(faucetBlk))
+ assert.Equal(t, false, IsFaucetReq(dataBlk))
}
diff --git a/packages/gossip/events.go b/packages/gossip/events.go
index 49733b2ace..595c52f65f 100644
--- a/packages/gossip/events.go
+++ b/packages/gossip/events.go
@@ -8,22 +8,22 @@ import (
// Events defines all the events related to the gossip protocol.
type Events struct {
- // Fired when a new message was received via the gossip protocol.
- MessageReceived *event.Event[*MessageReceivedEvent]
+ // Fired when a new block was received via the gossip protocol.
+ BlockReceived *event.Event[*BlockReceivedEvent]
}
// newEvents returns a new Events object.
func newEvents() (new *Events) {
return &Events{
- MessageReceived: event.New[*MessageReceivedEvent](),
+ BlockReceived: event.New[*BlockReceivedEvent](),
}
}
-// MessageReceivedEvent holds data about a message received event.
-type MessageReceivedEvent struct {
- // The raw message.
+// BlockReceivedEvent holds data about a block received event.
+type BlockReceivedEvent struct {
+ // The raw block.
Data []byte
- // The sender of the message.
+ // The sender of the block.
Peer *peer.Peer
}
diff --git a/packages/gossip/gossipproto/message.pb.go b/packages/gossip/gossipproto/message.pb.go
index f89ea1e20f..37320237dc 100644
--- a/packages/gossip/gossipproto/message.pb.go
+++ b/packages/gossip/gossipproto/message.pb.go
@@ -2,7 +2,7 @@
// versions:
// protoc-gen-go v1.27.1
// protoc v3.18.0
-// source: message.proto
+// source: block.proto
package gossipproto
@@ -27,8 +27,8 @@ type Packet struct {
unknownFields protoimpl.UnknownFields
// Types that are assignable to Body:
- // *Packet_Message
- // *Packet_MessageRequest
+ // *Packet_Block
+ // *Packet_BlockRequest
// *Packet_Negotiation
Body isPacket_Body `protobuf_oneof:"body"`
}
@@ -36,7 +36,7 @@ type Packet struct {
func (x *Packet) Reset() {
*x = Packet{}
if protoimpl.UnsafeEnabled {
- mi := &file_message_proto_msgTypes[0]
+ mi := &file_block_proto_blkTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -46,10 +46,10 @@ func (x *Packet) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*Packet) ProtoMessage() {}
+func (*Packet) ProtoBlock() {}
func (x *Packet) ProtoReflect() protoreflect.Message {
- mi := &file_message_proto_msgTypes[0]
+ mi := &file_block_proto_blkTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -62,7 +62,7 @@ func (x *Packet) ProtoReflect() protoreflect.Message {
// Deprecated: Use Packet.ProtoReflect.Descriptor instead.
func (*Packet) Descriptor() ([]byte, []int) {
- return file_message_proto_rawDescGZIP(), []int{0}
+ return file_block_proto_rawDescGZIP(), []int{0}
}
func (m *Packet) GetBody() isPacket_Body {
@@ -72,16 +72,16 @@ func (m *Packet) GetBody() isPacket_Body {
return nil
}
-func (x *Packet) GetMessage() *Message {
- if x, ok := x.GetBody().(*Packet_Message); ok {
- return x.Message
+func (x *Packet) GetBlock() *Block {
+ if x, ok := x.GetBody().(*Packet_Block); ok {
+ return x.Block
}
return nil
}
-func (x *Packet) GetMessageRequest() *MessageRequest {
- if x, ok := x.GetBody().(*Packet_MessageRequest); ok {
- return x.MessageRequest
+func (x *Packet) GetBlockRequest() *BlockRequest {
+ if x, ok := x.GetBody().(*Packet_BlockRequest); ok {
+ return x.BlockRequest
}
return nil
}
@@ -97,25 +97,25 @@ type isPacket_Body interface {
isPacket_Body()
}
-type Packet_Message struct {
- Message *Message `protobuf:"bytes,1,opt,name=message,proto3,oneof"`
+type Packet_Block struct {
+ Block *Block `protobuf:"bytes,1,opt,name=block,proto3,oneof"`
}
-type Packet_MessageRequest struct {
- MessageRequest *MessageRequest `protobuf:"bytes,2,opt,name=messageRequest,proto3,oneof"`
+type Packet_BlockRequest struct {
+ BlockRequest *BlockRequest `protobuf:"bytes,2,opt,name=blockRequest,proto3,oneof"`
}
type Packet_Negotiation struct {
Negotiation *Negotiation `protobuf:"bytes,3,opt,name=negotiation,proto3,oneof"`
}
-func (*Packet_Message) isPacket_Body() {}
+func (*Packet_Block) isPacket_Body() {}
-func (*Packet_MessageRequest) isPacket_Body() {}
+func (*Packet_BlockRequest) isPacket_Body() {}
func (*Packet_Negotiation) isPacket_Body() {}
-type Message struct {
+type Block struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -123,23 +123,23 @@ type Message struct {
Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}
-func (x *Message) Reset() {
- *x = Message{}
+func (x *Block) Reset() {
+ *x = Block{}
if protoimpl.UnsafeEnabled {
- mi := &file_message_proto_msgTypes[1]
+ mi := &file_block_proto_blkTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *Message) String() string {
+func (x *Block) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*Message) ProtoMessage() {}
+func (*Block) ProtoBlock() {}
-func (x *Message) ProtoReflect() protoreflect.Message {
- mi := &file_message_proto_msgTypes[1]
+func (x *Block) ProtoReflect() protoreflect.Message {
+ mi := &file_block_proto_blkTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -150,19 +150,19 @@ func (x *Message) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
- return file_message_proto_rawDescGZIP(), []int{1}
+// Deprecated: Use Block.ProtoReflect.Descriptor instead.
+func (*Block) Descriptor() ([]byte, []int) {
+ return file_block_proto_rawDescGZIP(), []int{1}
}
-func (x *Message) GetData() []byte {
+func (x *Block) GetData() []byte {
if x != nil {
return x.Data
}
return nil
}
-type MessageRequest struct {
+type BlockRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -170,23 +170,23 @@ type MessageRequest struct {
Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}
-func (x *MessageRequest) Reset() {
- *x = MessageRequest{}
+func (x *BlockRequest) Reset() {
+ *x = BlockRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_message_proto_msgTypes[2]
+ mi := &file_block_proto_blkTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *MessageRequest) String() string {
+func (x *BlockRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*MessageRequest) ProtoMessage() {}
+func (*BlockRequest) ProtoBlock() {}
-func (x *MessageRequest) ProtoReflect() protoreflect.Message {
- mi := &file_message_proto_msgTypes[2]
+func (x *BlockRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_block_proto_blkTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -197,12 +197,12 @@ func (x *MessageRequest) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use MessageRequest.ProtoReflect.Descriptor instead.
-func (*MessageRequest) Descriptor() ([]byte, []int) {
- return file_message_proto_rawDescGZIP(), []int{2}
+// Deprecated: Use BlockRequest.ProtoReflect.Descriptor instead.
+func (*BlockRequest) Descriptor() ([]byte, []int) {
+ return file_block_proto_rawDescGZIP(), []int{2}
}
-func (x *MessageRequest) GetId() []byte {
+func (x *BlockRequest) GetId() []byte {
if x != nil {
return x.Id
}
@@ -218,7 +218,7 @@ type Negotiation struct {
func (x *Negotiation) Reset() {
*x = Negotiation{}
if protoimpl.UnsafeEnabled {
- mi := &file_message_proto_msgTypes[3]
+ mi := &file_block_proto_blkTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -228,10 +228,10 @@ func (x *Negotiation) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*Negotiation) ProtoMessage() {}
+func (*Negotiation) ProtoBlock() {}
func (x *Negotiation) ProtoReflect() protoreflect.Message {
- mi := &file_message_proto_msgTypes[3]
+ mi := &file_block_proto_blkTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -244,12 +244,12 @@ func (x *Negotiation) ProtoReflect() protoreflect.Message {
// Deprecated: Use Negotiation.ProtoReflect.Descriptor instead.
func (*Negotiation) Descriptor() ([]byte, []int) {
- return file_message_proto_rawDescGZIP(), []int{3}
+ return file_block_proto_rawDescGZIP(), []int{3}
}
-var File_message_proto protoreflect.FileDescriptor
+var File_block_proto protoreflect.FileDescriptor
-var file_message_proto_rawDesc = []byte{
+var file_block_proto_rawDesc = []byte{
0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x0b, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x01, 0x0a,
0x06, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
@@ -277,30 +277,30 @@ var file_message_proto_rawDesc = []byte{
}
var (
- file_message_proto_rawDescOnce sync.Once
- file_message_proto_rawDescData = file_message_proto_rawDesc
+ file_block_proto_rawDescOnce sync.Once
+ file_block_proto_rawDescData = file_block_proto_rawDesc
)
-func file_message_proto_rawDescGZIP() []byte {
- file_message_proto_rawDescOnce.Do(func() {
- file_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_message_proto_rawDescData)
+func file_block_proto_rawDescGZIP() []byte {
+ file_block_proto_rawDescOnce.Do(func() {
+ file_block_proto_rawDescData = protoimpl.X.CompressGZIP(file_block_proto_rawDescData)
})
- return file_message_proto_rawDescData
+ return file_block_proto_rawDescData
}
var (
- file_message_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
- file_message_proto_goTypes = []interface{}{
- (*Packet)(nil), // 0: gossipproto.Packet
- (*Message)(nil), // 1: gossipproto.Message
- (*MessageRequest)(nil), // 2: gossipproto.MessageRequest
- (*Negotiation)(nil), // 3: gossipproto.Negotiation
+ file_block_proto_blkTypes = make([]protoimpl.MessageInfo, 4)
+ file_block_proto_goTypes = []interface{}{
+ (*Packet)(nil), // 0: gossipproto.Packet
+ (*Block)(nil), // 1: gossipproto.Block
+ (*BlockRequest)(nil), // 2: gossipproto.BlockRequest
+ (*Negotiation)(nil), // 3: gossipproto.Negotiation
}
)
-var file_message_proto_depIdxs = []int32{
- 1, // 0: gossipproto.Packet.message:type_name -> gossipproto.Message
- 2, // 1: gossipproto.Packet.messageRequest:type_name -> gossipproto.MessageRequest
+var file_block_proto_depIdxs = []int32{
+ 1, // 0: gossipproto.Packet.block:type_name -> gossipproto.Block
+ 2, // 1: gossipproto.Packet.blockRequest:type_name -> gossipproto.BlockRequest
3, // 2: gossipproto.Packet.negotiation:type_name -> gossipproto.Negotiation
3, // [3:3] is the sub-list for method output_type
3, // [3:3] is the sub-list for method input_type
@@ -309,13 +309,13 @@ var file_message_proto_depIdxs = []int32{
0, // [0:3] is the sub-list for field type_name
}
-func init() { file_message_proto_init() }
-func file_message_proto_init() {
- if File_message_proto != nil {
+func init() { file_block_proto_init() }
+func file_block_proto_init() {
+ if File_block_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
- file_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_block_proto_blkTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Packet); i {
case 0:
return &v.state
@@ -327,8 +327,8 @@ func file_message_proto_init() {
return nil
}
}
- file_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Message); i {
+ file_block_proto_blkTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Block); i {
case 0:
return &v.state
case 1:
@@ -339,8 +339,8 @@ func file_message_proto_init() {
return nil
}
}
- file_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MessageRequest); i {
+ file_block_proto_blkTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BlockRequest); i {
case 0:
return &v.state
case 1:
@@ -351,7 +351,7 @@ func file_message_proto_init() {
return nil
}
}
- file_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_block_proto_blkTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Negotiation); i {
case 0:
return &v.state
@@ -364,27 +364,27 @@ func file_message_proto_init() {
}
}
}
- file_message_proto_msgTypes[0].OneofWrappers = []interface{}{
- (*Packet_Message)(nil),
- (*Packet_MessageRequest)(nil),
+ file_block_proto_blkTypes[0].OneofWrappers = []interface{}{
+ (*Packet_Block)(nil),
+ (*Packet_BlockRequest)(nil),
(*Packet_Negotiation)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_message_proto_rawDesc,
+ RawDescriptor: file_block_proto_rawDesc,
NumEnums: 0,
NumMessages: 4,
NumExtensions: 0,
NumServices: 0,
},
- GoTypes: file_message_proto_goTypes,
- DependencyIndexes: file_message_proto_depIdxs,
- MessageInfos: file_message_proto_msgTypes,
+ GoTypes: file_block_proto_goTypes,
+ DependencyIndexes: file_block_proto_depIdxs,
+ MessageInfos: file_block_proto_blkTypes,
}.Build()
- File_message_proto = out.File
- file_message_proto_rawDesc = nil
- file_message_proto_goTypes = nil
- file_message_proto_depIdxs = nil
+ File_block_proto = out.File
+ file_block_proto_rawDesc = nil
+ file_block_proto_goTypes = nil
+ file_block_proto_depIdxs = nil
}
diff --git a/packages/gossip/gossipproto/message.proto b/packages/gossip/gossipproto/message.proto
index 3aac6c1d1c..884d4e65c2 100644
--- a/packages/gossip/gossipproto/message.proto
+++ b/packages/gossip/gossipproto/message.proto
@@ -4,20 +4,20 @@ option go_package = "github.com/iotaledger/goshimmer/packages/gossip/gossipproto
package gossipproto;
-message Packet {
+block Packet {
oneof body {
- Message message = 1;
- MessageRequest messageRequest = 2;
+ Block block = 1;
+ BlockRequest blockRequest = 2;
Negotiation negotiation = 3;
}
}
-message Message {
+block Block {
bytes data = 1;
}
-message MessageRequest {
+block BlockRequest {
bytes id = 1;
}
-message Negotiation {}
\ No newline at end of file
+block Negotiation {}
\ No newline at end of file
diff --git a/packages/gossip/manager.go b/packages/gossip/manager.go
index 11c4343182..58e005c5e8 100644
--- a/packages/gossip/manager.go
+++ b/packages/gossip/manager.go
@@ -19,8 +19,8 @@ import (
"github.com/iotaledger/goshimmer/packages/tangle"
)
-// LoadMessageFunc defines a function that returns the message for the given id.
-type LoadMessageFunc func(messageId tangle.MessageID) ([]byte, error)
+// LoadBlockFunc defines a function that returns the block for the given id.
+type LoadBlockFunc func(blockId tangle.BlockID) ([]byte, error)
// ConnectPeerOption defines an option for the DialPeer and AcceptPeer methods.
type ConnectPeerOption func(conf *connectPeerConfig)
@@ -57,7 +57,7 @@ type Manager struct {
acceptMutex sync.RWMutex
acceptMap map[libp2ppeer.ID]*acceptMatcher
- loadMessageFunc LoadMessageFunc
+ loadBlockFunc LoadBlockFunc
log *logger.Logger
neighborsEvents map[NeighborsGroup]*NeighborsEvents
@@ -67,8 +67,8 @@ type Manager struct {
neighbors map[identity.ID]*Neighbor
neighborsMutex sync.RWMutex
- messagesRateLimiter *ratelimiter.PeerRateLimiter
- messageRequestsRateLimiter *ratelimiter.PeerRateLimiter
+ blocksRateLimiter *ratelimiter.PeerRateLimiter
+ blockRequestsRateLimiter *ratelimiter.PeerRateLimiter
pendingCount atomic.Uint64
requesterPendingCount atomic.Uint64
@@ -78,15 +78,15 @@ type Manager struct {
type ManagerOption func(m *Manager)
// NewManager creates a new Manager.
-func NewManager(libp2pHost host.Host, local *peer.Local, f LoadMessageFunc, log *logger.Logger, opts ...ManagerOption,
+func NewManager(libp2pHost host.Host, local *peer.Local, f LoadBlockFunc, log *logger.Logger, opts ...ManagerOption,
) *Manager {
m := &Manager{
- Libp2pHost: libp2pHost,
- Events: newEvents(),
- acceptMap: map[libp2ppeer.ID]*acceptMatcher{},
- local: local,
- loadMessageFunc: f,
- log: log,
+ Libp2pHost: libp2pHost,
+ Events: newEvents(),
+ acceptMap: map[libp2ppeer.ID]*acceptMatcher{},
+ local: local,
+ loadBlockFunc: f,
+ log: log,
neighborsEvents: map[NeighborsGroup]*NeighborsEvents{
NeighborsGroupAuto: NewNeighborsEvents(),
NeighborsGroupManual: NewNeighborsEvents(),
@@ -102,30 +102,30 @@ func NewManager(libp2pHost host.Host, local *peer.Local, f LoadMessageFunc, log
return m
}
-// WithMessagesRateLimiter allows to set a PeerRateLimiter instance
-// to be used as messages rate limiter in the gossip manager.
-func WithMessagesRateLimiter(prl *ratelimiter.PeerRateLimiter) ManagerOption {
+// WithBlocksRateLimiter allows to set a PeerRateLimiter instance
+// to be used as blocks rate limiter in the gossip manager.
+func WithBlocksRateLimiter(prl *ratelimiter.PeerRateLimiter) ManagerOption {
return func(m *Manager) {
- m.messagesRateLimiter = prl
+ m.blocksRateLimiter = prl
}
}
-// MessagesRateLimiter returns the messages rate limiter instance used in the gossip manager.
-func (m *Manager) MessagesRateLimiter() *ratelimiter.PeerRateLimiter {
- return m.messagesRateLimiter
+// BlocksRateLimiter returns the blocks rate limiter instance used in the gossip manager.
+func (m *Manager) BlocksRateLimiter() *ratelimiter.PeerRateLimiter {
+ return m.blocksRateLimiter
}
-// WithMessageRequestsRateLimiter allows to set a PeerRateLimiter instance
-// to be used as messages requests rate limiter in the gossip manager.
-func WithMessageRequestsRateLimiter(prl *ratelimiter.PeerRateLimiter) ManagerOption {
+// WithBlockRequestsRateLimiter allows to set a PeerRateLimiter instance
+// to be used as blocks requests rate limiter in the gossip manager.
+func WithBlockRequestsRateLimiter(prl *ratelimiter.PeerRateLimiter) ManagerOption {
return func(m *Manager) {
- m.messageRequestsRateLimiter = prl
+ m.blockRequestsRateLimiter = prl
}
}
-// MessageRequestsRateLimiter returns the message requests rate limiter instance used in the gossip manager.
-func (m *Manager) MessageRequestsRateLimiter() *ratelimiter.PeerRateLimiter {
- return m.messageRequestsRateLimiter
+// BlockRequestsRateLimiter returns the block requests rate limiter instance used in the gossip manager.
+func (m *Manager) BlockRequestsRateLimiter() *ratelimiter.PeerRateLimiter {
+ return m.blockRequestsRateLimiter
}
// Stop stops the manager and closes all established connections.
@@ -155,13 +155,15 @@ func (m *Manager) NeighborsEvents(group NeighborsGroup) *NeighborsEvents {
// AddOutbound tries to add a neighbor by connecting to that peer.
func (m *Manager) AddOutbound(ctx context.Context, p *peer.Peer, group NeighborsGroup,
- connectOpts ...ConnectPeerOption) error {
+ connectOpts ...ConnectPeerOption,
+) error {
return m.addNeighbor(ctx, p, group, m.dialPeer, connectOpts)
}
// AddInbound tries to add a neighbor by accepting an incoming connection from that peer.
func (m *Manager) AddInbound(ctx context.Context, p *peer.Peer, group NeighborsGroup,
- connectOpts ...ConnectPeerOption) error {
+ connectOpts ...ConnectPeerOption,
+) error {
return m.addNeighbor(ctx, p, group, m.acceptPeer, connectOpts)
}
@@ -197,25 +199,25 @@ func (m *Manager) getNeighborWithGroup(id identity.ID, group NeighborsGroup) (*N
return nbr, nil
}
-// RequestMessage requests the message with the given id from the neighbors.
+// RequestBlock requests the block with the given id from the neighbors.
// If no peer is provided, all neighbors are queried.
-func (m *Manager) RequestMessage(messageID []byte, to ...identity.ID) {
- msgReq := &pb.MessageRequest{Id: messageID}
- packet := &pb.Packet{Body: &pb.Packet_MessageRequest{MessageRequest: msgReq}}
+func (m *Manager) RequestBlock(blockID []byte, to ...identity.ID) {
+ blkReq := &pb.BlockRequest{Id: blockID}
+ packet := &pb.Packet{Body: &pb.Packet_BlockRequest{BlockRequest: blkReq}}
recipients := m.send(packet, to...)
- if m.messagesRateLimiter != nil {
+ if m.blocksRateLimiter != nil {
for _, nbr := range recipients {
- // Increase the limit by 2 for every message request to make rate limiter more forgiving during node sync.
- m.messagesRateLimiter.ExtendLimit(nbr.Peer, 2)
+ // Increase the limit by 2 for every block request to make rate limiter more forgiving during node sync.
+ m.blocksRateLimiter.ExtendLimit(nbr.Peer, 2)
}
}
}
-// SendMessage adds the given message the send queue of the neighbors.
+// SendBlock adds the given block the send queue of the neighbors.
// The actual send then happens asynchronously. If no peer is provided, it is send to all neighbors.
-func (m *Manager) SendMessage(msgData []byte, to ...identity.ID) {
- msg := &pb.Message{Data: msgData}
- packet := &pb.Packet{Body: &pb.Packet_Message{Message: msg}}
+func (m *Manager) SendBlock(blkData []byte, to ...identity.ID) {
+ blk := &pb.Block{Data: blkData}
+ packet := &pb.Packet{Body: &pb.Packet_Block{Block: blk}}
m.send(packet, to...)
}
@@ -331,14 +333,14 @@ func (m *Manager) setNeighbor(nbr *Neighbor) error {
func (m *Manager) handlePacket(packet *pb.Packet, nbr *Neighbor) error {
switch packetBody := packet.GetBody().(type) {
- case *pb.Packet_Message:
- if added := event.Loop.TrySubmit(func() { m.processMessagePacket(packetBody, nbr); m.pendingCount.Dec() }); !added {
- return fmt.Errorf("messageWorkerPool full: packet message discarded")
+ case *pb.Packet_Block:
+ if added := event.Loop.TrySubmit(func() { m.processBlockPacket(packetBody, nbr); m.pendingCount.Dec() }); !added {
+ return fmt.Errorf("blockWorkerPool full: packet block discarded")
}
m.pendingCount.Inc()
- case *pb.Packet_MessageRequest:
- if added := event.Loop.TrySubmit(func() { m.processMessageRequestPacket(packetBody, nbr); m.requesterPendingCount.Dec() }); !added {
- return fmt.Errorf("messageRequestWorkerPool full: message request discarded")
+ case *pb.Packet_BlockRequest:
+ if added := event.Loop.TrySubmit(func() { m.processBlockRequestPacket(packetBody, nbr); m.requesterPendingCount.Dec() }); !added {
+ return fmt.Errorf("blockRequestWorkerPool full: block request discarded")
}
m.requesterPendingCount.Inc()
default:
@@ -348,44 +350,44 @@ func (m *Manager) handlePacket(packet *pb.Packet, nbr *Neighbor) error {
return nil
}
-// MessageWorkerPoolStatus returns the name and the load of the workerpool.
-func (m *Manager) MessageWorkerPoolStatus() (name string, load uint64) {
- return "messageWorkerPool", m.pendingCount.Load()
+// BlockWorkerPoolStatus returns the name and the load of the workerpool.
+func (m *Manager) BlockWorkerPoolStatus() (name string, load uint64) {
+ return "blockWorkerPool", m.pendingCount.Load()
}
-// MessageRequestWorkerPoolStatus returns the name and the load of the workerpool.
-func (m *Manager) MessageRequestWorkerPoolStatus() (name string, load uint64) {
- return "messageRequestWorkerPool", m.requesterPendingCount.Load()
+// BlockRequestWorkerPoolStatus returns the name and the load of the workerpool.
+func (m *Manager) BlockRequestWorkerPoolStatus() (name string, load uint64) {
+ return "blockRequestWorkerPool", m.requesterPendingCount.Load()
}
-func (m *Manager) processMessagePacket(packetMsg *pb.Packet_Message, nbr *Neighbor) {
- if m.messagesRateLimiter != nil {
- m.messagesRateLimiter.Count(nbr.Peer)
+func (m *Manager) processBlockPacket(packetBlk *pb.Packet_Block, nbr *Neighbor) {
+ if m.blocksRateLimiter != nil {
+ m.blocksRateLimiter.Count(nbr.Peer)
}
- m.Events.MessageReceived.Trigger(&MessageReceivedEvent{Data: packetMsg.Message.GetData(), Peer: nbr.Peer})
+ m.Events.BlockReceived.Trigger(&BlockReceivedEvent{Data: packetBlk.Block.GetData(), Peer: nbr.Peer})
}
-func (m *Manager) processMessageRequestPacket(packetMsgReq *pb.Packet_MessageRequest, nbr *Neighbor) {
- if m.messageRequestsRateLimiter != nil {
- m.messageRequestsRateLimiter.Count(nbr.Peer)
+func (m *Manager) processBlockRequestPacket(packetBlkReq *pb.Packet_BlockRequest, nbr *Neighbor) {
+ if m.blockRequestsRateLimiter != nil {
+ m.blockRequestsRateLimiter.Count(nbr.Peer)
}
- var msgID tangle.MessageID
- _, err := msgID.Decode(packetMsgReq.MessageRequest.GetId())
+ var blkID tangle.BlockID
+ _, err := blkID.Decode(packetBlkReq.BlockRequest.GetId())
if err != nil {
- m.log.Debugw("invalid message id:", "err", err)
+ m.log.Debugw("invalid block id:", "err", err)
return
}
- msgBytes, err := m.loadMessageFunc(msgID)
+ blkBytes, err := m.loadBlockFunc(blkID)
if err != nil {
- m.log.Debugw("error loading message", "msg-id", msgID, "err", err)
+ m.log.Debugw("error loading block", "blk-id", blkID, "err", err)
return
}
- // send the loaded message directly to the neighbor
- packet := &pb.Packet{Body: &pb.Packet_Message{Message: &pb.Message{Data: msgBytes}}}
+ // send the loaded block directly to the neighbor
+ packet := &pb.Packet{Body: &pb.Packet_Block{Block: &pb.Block{Data: blkBytes}}}
if err := nbr.ps.writePacket(packet); err != nil {
- nbr.log.Warnw("Failed to send requested message back to the neighbor", "err", err)
+ nbr.log.Warnw("Failed to send requested block back to the neighbor", "err", err)
nbr.close()
}
}
diff --git a/packages/gossip/manager_test.go b/packages/gossip/manager_test.go
index 65fc85ed26..c40dbf4f69 100644
--- a/packages/gossip/manager_test.go
+++ b/packages/gossip/manager_test.go
@@ -30,11 +30,11 @@ import (
const graceTime = 10 * time.Millisecond
var (
- log = logger.NewExampleLogger("gossip")
- testMessageData = []byte("testMsg")
+ log = logger.NewExampleLogger("gossip")
+ testBlockData = []byte("testBlk")
)
-func loadTestMessage(tangle.MessageID) ([]byte, error) { return testMessageData, nil }
+func loadTestBlock(tangle.BlockID) ([]byte, error) { return testBlockData, nil }
func TestClose(t *testing.T) {
testMgrs := newTestManagers(t, true /* doMock */, "A")
@@ -112,12 +112,12 @@ func TestP2PSend(t *testing.T) {
// wait for the connections to establish
wg.Wait()
- mgrB.On("messageReceived", &MessageReceivedEvent{
- Data: testMessageData,
+ mgrB.On("blockReceived", &BlockReceivedEvent{
+ Data: testBlockData,
Peer: peerA,
}).Once()
- mgrA.SendMessage(testMessageData)
+ mgrA.SendBlock(testBlockData)
time.Sleep(graceTime)
mgrA.On("neighborRemoved", mock.Anything).Once()
@@ -162,14 +162,14 @@ func TestP2PSendTwice(t *testing.T) {
// wait for the connections to establish
wg.Wait()
- mgrB.On("messageReceived", &MessageReceivedEvent{
- Data: testMessageData,
+ mgrB.On("blockReceived", &BlockReceivedEvent{
+ Data: testBlockData,
Peer: peerA,
}).Twice()
- mgrA.SendMessage(testMessageData)
+ mgrA.SendBlock(testBlockData)
time.Sleep(1 * time.Second) // wait a bit between the sends, to test timeouts
- mgrA.SendMessage(testMessageData)
+ mgrA.SendBlock(testBlockData)
time.Sleep(graceTime)
mgrA.On("neighborRemoved", mock.Anything).Once()
@@ -226,11 +226,11 @@ func TestBroadcast(t *testing.T) {
// wait for the connections to establish
wg.Wait()
- event := &MessageReceivedEvent{Data: testMessageData, Peer: peerA}
- mgrB.On("messageReceived", event).Once()
- mgrC.On("messageReceived", event).Once()
+ event := &BlockReceivedEvent{Data: testBlockData, Peer: peerA}
+ mgrB.On("blockReceived", event).Once()
+ mgrC.On("blockReceived", event).Once()
- mgrA.SendMessage(testMessageData)
+ mgrA.SendBlock(testBlockData)
time.Sleep(graceTime)
mgrA.On("neighborRemoved", mock.Anything).Once()
@@ -288,11 +288,11 @@ func TestSingleSend(t *testing.T) {
// wait for the connections to establish
wg.Wait()
- // only mgr should receive the message
- mgrB.On("messageReceived", &MessageReceivedEvent{Data: testMessageData, Peer: peerA}).Once()
+ // only mgr should receive the block
+ mgrB.On("blockReceived", &BlockReceivedEvent{Data: testBlockData, Peer: peerA}).Once()
- // A sends the message only to B
- mgrA.SendMessage(testMessageData, peerB.ID())
+ // A sends the block only to B
+ mgrA.SendBlock(testBlockData, peerB.ID())
time.Sleep(graceTime)
mgrA.On("neighborRemoved", mock.Anything).Once()
@@ -324,7 +324,7 @@ func TestDropUnsuccessfulAccept(t *testing.T) {
mgrB.AssertExpectations(t)
}
-func TestMessageRequest(t *testing.T) {
+func TestBlockRequest(t *testing.T) {
testMgrs := newTestManagers(t, true /* doMock */, t.Name()+"_A", t.Name()+"_B")
mgrA, closeA, peerA := testMgrs[0].mockManager, testMgrs[0].close, testMgrs[0].peer
mgrB, closeB, peerB := testMgrs[1].mockManager, testMgrs[1].close, testMgrs[1].peer
@@ -352,14 +352,14 @@ func TestMessageRequest(t *testing.T) {
// wait for the connections to establish
wg.Wait()
- id := tangle.MessageID{}
+ id := tangle.BlockID{}
- // mgrA should eventually receive the message
- mgrA.On("messageReceived", &MessageReceivedEvent{Data: testMessageData, Peer: peerB}).Once()
+ // mgrA should eventually receive the block
+ mgrA.On("blockReceived", &BlockReceivedEvent{Data: testBlockData, Peer: peerB}).Once()
- b, err := proto.Marshal(&pb.MessageRequest{Id: id.Bytes()})
+ b, err := proto.Marshal(&pb.BlockRequest{Id: id.Bytes()})
require.NoError(t, err)
- mgrA.RequestMessage(b)
+ mgrA.RequestBlock(b)
time.Sleep(graceTime)
mgrA.On("neighborRemoved", mock.Anything).Once()
@@ -537,7 +537,7 @@ func newTestManagers(t testing.TB, doMock bool, names ...string) []*testManager
require.NoError(t, err)
// start the actual gossipping
- mgr := NewManager(hst, local, loadTestMessage, l)
+ mgr := NewManager(hst, local, loadTestBlock, l)
require.NoError(t, err)
tearDown := func() {
mgr.Stop()
@@ -569,7 +569,7 @@ func mockManager(t testing.TB, mgr *Manager) *mockedManager {
e.NeighborsEvents(NeighborsGroupAuto).NeighborAdded.Hook(event.NewClosure(e.neighborAdded))
e.NeighborsEvents(NeighborsGroupAuto).NeighborRemoved.Hook(event.NewClosure(e.neighborRemoved))
- e.Events.MessageReceived.Hook(event.NewClosure(e.messageReceived))
+ e.Events.BlockReceived.Hook(event.NewClosure(e.blockReceived))
return e
}
@@ -581,4 +581,4 @@ type mockedManager struct {
func (e *mockedManager) neighborAdded(event *NeighborAddedEvent) { e.Called(event.Neighbor) }
func (e *mockedManager) neighborRemoved(event *NeighborRemovedEvent) { e.Called(event.Neighbor) }
-func (e *mockedManager) messageReceived(event *MessageReceivedEvent) { e.Called(event) }
+func (e *mockedManager) blockReceived(event *BlockReceivedEvent) { e.Called(event) }
diff --git a/packages/gossip/neighbor_test.go b/packages/gossip/neighbor_test.go
index e103051395..31589920f9 100644
--- a/packages/gossip/neighbor_test.go
+++ b/packages/gossip/neighbor_test.go
@@ -20,8 +20,8 @@ import (
)
var (
- testPacket1 = &pb.Packet{Body: &pb.Packet_Message{Message: &pb.Message{Data: []byte("foo")}}}
- testPacket2 = &pb.Packet{Body: &pb.Packet_Message{Message: &pb.Message{Data: []byte("bar")}}}
+ testPacket1 = &pb.Packet{Body: &pb.Packet_Block{Block: &pb.Block{Data: []byte("foo")}}}
+ testPacket2 = &pb.Packet{Body: &pb.Packet_Block{Block: &pb.Block{Data: []byte("bar")}}}
)
func TestNeighborClose(t *testing.T) {
diff --git a/packages/gossip/stream.go b/packages/gossip/stream.go
index e0175349fb..7cd35155c0 100644
--- a/packages/gossip/stream.go
+++ b/packages/gossip/stream.go
@@ -67,8 +67,8 @@ func (m *Manager) dialPeer(ctx context.Context, p *peer.Peer, opts []ConnectPeer
return nil, errors.Wrapf(err, "dial %s / %s failed", address, p.ID())
}
ps := newPacketsStream(stream)
- if err := sendNegotiationMessage(ps); err != nil {
- err = errors.Wrap(err, "failed to send negotiation message")
+ if err := sendNegotiationBlock(ps); err != nil {
+ err = errors.Wrap(err, "failed to send negotiation block")
err = errors.CombineErrors(err, stream.Close())
return nil, err
}
@@ -167,8 +167,8 @@ func (m *Manager) removeAcceptMatcher(am *acceptMatcher) {
func (m *Manager) streamHandler(stream network.Stream) {
ps := newPacketsStream(stream)
- if err := receiveNegotiationMessage(ps); err != nil {
- m.log.Warnw("Failed to receive negotiation message", "err", err)
+ if err := receiveNegotiationBlock(ps); err != nil {
+ m.log.Warnw("Failed to receive negotiation block", "err", err)
m.closeStream(stream)
return
}
@@ -210,7 +210,7 @@ func (ps *packetsStream) writePacket(packet *pb.Packet) error {
if err := ps.SetWriteDeadline(time.Now().Add(ioTimeout)); err != nil && !isDeadlineUnsupportedError(err) {
return errors.WithStack(err)
}
- err := ps.writer.WriteMsg(packet)
+ err := ps.writer.WriteBlk(packet)
if err != nil {
return errors.WithStack(err)
}
@@ -224,19 +224,19 @@ func (ps *packetsStream) readPacket(packet *pb.Packet) error {
if err := ps.SetReadDeadline(time.Now().Add(ioTimeout)); err != nil && !isDeadlineUnsupportedError(err) {
return errors.WithStack(err)
}
- if err := ps.reader.ReadMsg(packet); err != nil {
+ if err := ps.reader.ReadBlk(packet); err != nil {
return errors.WithStack(err)
}
ps.packetsRead.Inc()
return nil
}
-func sendNegotiationMessage(ps *packetsStream) error {
+func sendNegotiationBlock(ps *packetsStream) error {
packet := &pb.Packet{Body: &pb.Packet_Negotiation{Negotiation: &pb.Negotiation{}}}
return errors.WithStack(ps.writePacket(packet))
}
-func receiveNegotiationMessage(ps *packetsStream) (err error) {
+func receiveNegotiationBlock(ps *packetsStream) (err error) {
packet := &pb.Packet{}
if err := ps.readPacket(packet); err != nil {
return errors.WithStack(err)
diff --git a/packages/jsonmodels/data.go b/packages/jsonmodels/data.go
index 657af1d158..c25cc4fe8a 100644
--- a/packages/jsonmodels/data.go
+++ b/packages/jsonmodels/data.go
@@ -1,12 +1,12 @@
package jsonmodels
-// DataResponse contains the ID of the message sent.
+// DataResponse contains the ID of the block sent.
type DataResponse struct {
ID string `json:"id,omitempty"`
Error string `json:"error,omitempty"`
}
-// DataRequest contains the data of the message to send.
+// DataRequest contains the data of the block to send.
type DataRequest struct {
Data []byte `json:"data"`
MaxEstimate int64 `json:"maxEstimate"`
diff --git a/packages/jsonmodels/epochs.go b/packages/jsonmodels/epochs.go
new file mode 100644
index 0000000000..ee31ce9523
--- /dev/null
+++ b/packages/jsonmodels/epochs.go
@@ -0,0 +1,48 @@
+package jsonmodels
+
+import (
+ "github.com/iotaledger/goshimmer/packages/epoch"
+)
+
+type EpochInfo struct {
+ EI uint64 `json:"EI"`
+ ECR string `json:"ECR"`
+ PrevEC string `json:"prevEC"`
+}
+
+func EpochInfoFromRecord(record *epoch.ECRecord) *EpochInfo {
+ return &EpochInfo{
+ EI: uint64(record.EI()),
+ ECR: record.ECR().Base58(),
+ PrevEC: record.PrevEC().Base58(),
+ }
+}
+
+type EpochsResponse struct {
+ Epochs []*EpochInfo `json:"epochs"`
+}
+
+type EpochVotersWeightResponse struct {
+ VotersWeight map[string]*NodeWeight `json:"ecrVoters"`
+}
+
+type NodeWeight struct {
+ Weights map[string]float64 `json:"weights"`
+}
+
+type EpochUTXOsResponse struct {
+ SpentOutputs []string `json:"spentOutputs"`
+ CreatedOutputs []string `json:"createdOutputs"`
+}
+
+type EpochBlocksResponse struct {
+ Blocks []string `json:"blocks"`
+}
+
+type EpochTransactionsResponse struct {
+ Transactions []string `json:"transactions"`
+}
+
+type EpochPendingConflictCountResponse struct {
+ PendingConflictCount uint64 `json:"pendingConflictCount"`
+}
diff --git a/packages/jsonmodels/faucet.go b/packages/jsonmodels/faucet.go
index e02e9b3d8c..afa876e54d 100644
--- a/packages/jsonmodels/faucet.go
+++ b/packages/jsonmodels/faucet.go
@@ -1,6 +1,6 @@
package jsonmodels
-// FaucetRequestResponse contains the ID of the message sent.
+// FaucetRequestResponse contains the ID of the block sent.
type FaucetRequestResponse struct {
ID string `json:"id,omitempty"`
Error string `json:"error,omitempty"`
diff --git a/packages/jsonmodels/info.go b/packages/jsonmodels/info.go
index f5e77f71e8..fdbb1c675d 100644
--- a/packages/jsonmodels/info.go
+++ b/packages/jsonmodels/info.go
@@ -18,12 +18,12 @@ type InfoResponse struct {
IdentityIDShort string `json:"identityIDShort,omitempty"`
// public key of the node encoded in base58
PublicKey string `json:"publicKey,omitempty"`
- // MessageRequestQueueSize is the number of messages a node is trying to request from neighbors.
- MessageRequestQueueSize int `json:"messageRequestQueueSize,omitempty"`
- // SolidMessageCount is the number of solid messages in the node's database.
- SolidMessageCount int `json:"solidMessageCount,omitempty"`
- // TotalMessageCount is the number of messages in the node's database.
- TotalMessageCount int `json:"totalMessageCount,omitempty"`
+ // BlockRequestQueueSize is the number of blocks a node is trying to request from neighbors.
+ BlockRequestQueueSize int `json:"blockRequestQueueSize,omitempty"`
+ // SolidBlockCount is the number of solid blocks in the node's database.
+ SolidBlockCount int `json:"solidBlockCount,omitempty"`
+ // TotalBlockCount is the number of blocks in the node's database.
+ TotalBlockCount int `json:"totalBlockCount,omitempty"`
// list of enabled plugins
EnabledPlugins []string `json:"enabledPlugins,omitempty"`
// list if disabled plugins
@@ -32,6 +32,8 @@ type InfoResponse struct {
Mana Mana `json:"mana,omitempty"`
// Scheduler is the scheduler.
Scheduler Scheduler `json:"scheduler"`
+ // LastCommittedEpoch contains information about the last committed epoch.
+ LastCommittedEpoch EpochInfo
// RateSetter is the rate setter.
RateSetter RateSetter `json:"rateSetter"`
// error of the response
@@ -40,12 +42,12 @@ type InfoResponse struct {
// TangleTime contains the TangleTime sync detailed status.
type TangleTime struct {
- AcceptedMessageID string `json:"messageID"`
- ATT int64 `json:"ATT"`
- RATT int64 `json:"RATT"`
- CTT int64 `json:"CTT"`
- RCTT int64 `json:"RCTT"`
- Synced bool `json:"synced"`
+ AcceptedBlockID string `json:"blockID"`
+ ATT int64 `json:"ATT"`
+ RATT int64 `json:"RATT"`
+ CTT int64 `json:"CTT"`
+ RCTT int64 `json:"RCTT"`
+ Synced bool `json:"synced"`
}
// Mana contains the different mana values of the node.
diff --git a/packages/jsonmodels/ledgerstate.go b/packages/jsonmodels/ledgerstate.go
index d6e604007f..9135db5e92 100644
--- a/packages/jsonmodels/ledgerstate.go
+++ b/packages/jsonmodels/ledgerstate.go
@@ -6,11 +6,11 @@ import (
"github.com/cockroachdb/errors"
"github.com/iotaledger/hive.go/generics/lo"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/hive.go/typeutils"
"github.com/mr-tron/base58"
"github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
@@ -479,23 +479,23 @@ func NewOutputID(outputID utxo.OutputID) *OutputID {
// OutputMetadata represents the JSON model of the ledger.OutputMetadata.
type OutputMetadata struct {
- OutputID *OutputID `json:"outputID"`
- BranchIDs []string `json:"branchIDs"`
- FirstConsumer string `json:"firstCount"`
- ConfirmedConsumer string `json:"confirmedConsumer,omitempty"`
- GradeOfFinality gof.GradeOfFinality `json:"gradeOfFinality"`
- GradeOfFinalityTime int64 `json:"gradeOfFinalityTime"`
+ OutputID *OutputID `json:"outputID"`
+ ConflictIDs []string `json:"conflictIDs"`
+ FirstConsumer string `json:"firstCount"`
+ ConfirmedConsumer string `json:"confirmedConsumer,omitempty"`
+ ConfirmationState confirmation.State `json:"confirmationState"`
+ ConfirmationStateTime int64 `json:"confirmationStateTime"`
}
// NewOutputMetadata returns the OutputMetadata from the given ledger.OutputMetadata.
func NewOutputMetadata(outputMetadata *ledger.OutputMetadata, confirmedConsumerID utxo.TransactionID) *OutputMetadata {
return &OutputMetadata{
- OutputID: NewOutputID(outputMetadata.ID()),
- BranchIDs: lo.Map(lo.Map(outputMetadata.BranchIDs().Slice(), utxo.TransactionID.Bytes), base58.Encode),
- FirstConsumer: outputMetadata.FirstConsumer().Base58(),
- ConfirmedConsumer: confirmedConsumerID.Base58(),
- GradeOfFinality: outputMetadata.GradeOfFinality(),
- GradeOfFinalityTime: outputMetadata.GradeOfFinalityTime().Unix(),
+ OutputID: NewOutputID(outputMetadata.ID()),
+ ConflictIDs: lo.Map(lo.Map(outputMetadata.ConflictIDs().Slice(), utxo.TransactionID.Bytes), base58.Encode),
+ FirstConsumer: outputMetadata.FirstConsumer().Base58(),
+ ConfirmedConsumer: confirmedConsumerID.Base58(),
+ ConfirmationState: outputMetadata.ConfirmationState(),
+ ConfirmationStateTime: outputMetadata.ConfirmationStateTime().Unix(),
}
}
@@ -519,25 +519,22 @@ func NewConsumer(consumer *ledger.Consumer) *Consumer {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region Conflict ///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Branch represents the JSON model of a ledger.Conflict.
-type Branch struct {
- ID string `json:"id"`
- Parents []string `json:"parents"`
- ConflictIDs []string `json:"conflictIDs,omitempty"`
- GradeOfFinality gof.GradeOfFinality `json:"gradeOfFinality"`
- ApprovalWeight float64 `json:"approvalWeight"`
- InclusionState string `json:"inclusionState"`
+// ConflictWeight represents the JSON model of a ledger.Conflict.
+type ConflictWeight struct {
+ ID string `json:"id"`
+ Parents []string `json:"parents"`
+ ConflictIDs []string `json:"conflictIDs,omitempty"`
+ ConfirmationState confirmation.State `json:"confirmationState"`
+ ApprovalWeight float64 `json:"approvalWeight"`
}
-// NewBranch returns a Branch from the given ledger.Conflict.
-func NewBranch(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID], gradeOfFinality gof.GradeOfFinality, aw float64, inclusionState conflictdag.InclusionState) Branch {
- return Branch{
- ID: branch.ID().Base58(),
+// NewConflictWeight returns a Conflict from the given ledger.Conflict.
+func NewConflictWeight(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID], confirmationState confirmation.State, aw float64) ConflictWeight {
+ return ConflictWeight{
+ ID: conflict.ID().Base58(),
Parents: func() []string {
parents := make([]string, 0)
- for it := branch.Parents().Iterator(); it.HasNext(); {
+ for it := conflict.Parents().Iterator(); it.HasNext(); {
parents = append(parents, it.Next().Base58())
}
@@ -545,31 +542,28 @@ func NewBranch(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID],
}(),
ConflictIDs: func() []string {
conflictIDs := make([]string, 0)
- for it := branch.ConflictIDs().Iterator(); it.HasNext(); {
+ for it := conflict.ConflictSetIDs().Iterator(); it.HasNext(); {
conflictIDs = append(conflictIDs, it.Next().Base58())
}
return conflictIDs
}(),
- GradeOfFinality: gradeOfFinality,
- ApprovalWeight: aw,
- InclusionState: inclusionState.String(),
+ ConfirmationState: confirmationState,
+ ApprovalWeight: aw,
}
}
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region ChildBranch //////////////////////////////////////////////////////////////////////////////////////////////////
+// region ChildConflict //////////////////////////////////////////////////////////////////////////////////////////////////
-// ChildBranch represents the JSON model of a ledger.ChildBranch.
-type ChildBranch struct {
- BranchID string `json:"branchID"`
+// ChildConflict represents the JSON model of a ledger.ChildConflict.
+type ChildConflict struct {
+ ConflictID string `json:"conflictID"`
}
-// NewChildBranch returns a ChildBranch from the given ledger.ChildBranch.
-func NewChildBranch(childBranch *conflictdag.ChildBranch[utxo.TransactionID]) *ChildBranch {
- return &ChildBranch{
- BranchID: childBranch.ChildBranchID().Base58(),
+// NewChildConflict returns a ChildConflict from the given ledger.ChildConflict.
+func NewChildConflict(childConflict *conflictdag.ChildConflict[utxo.TransactionID]) *ChildConflict {
+ return &ChildConflict{
+ ConflictID: childConflict.ChildConflictID().Base58(),
}
}
@@ -579,18 +573,18 @@ func NewChildBranch(childBranch *conflictdag.ChildBranch[utxo.TransactionID]) *C
// Conflict represents the JSON model of a ledger.Conflict.
type Conflict struct {
- OutputID *OutputID `json:"outputID"`
- BranchIDs []string `json:"branchIDs"`
+ OutputID *OutputID `json:"outputID"`
+ ConflictIDs []string `json:"conflictIDs"`
}
// NewConflict returns a Conflict from the given ledger.ConflictID.
-func NewConflict(conflictID utxo.OutputID, branchIDs []utxo.TransactionID) *Conflict {
+func NewConflict(conflictID utxo.OutputID, conflictIDs []utxo.TransactionID) *Conflict {
return &Conflict{
OutputID: NewOutputID(conflictID),
- BranchIDs: func() (mappedBranchIDs []string) {
- mappedBranchIDs = make([]string, 0)
- for _, branchID := range branchIDs {
- mappedBranchIDs = append(mappedBranchIDs, branchID.Base58())
+ ConflictIDs: func() (mappedConflictIDs []string) {
+ mappedConflictIDs = make([]string, 0)
+ for _, conflictID := range conflictIDs {
+ mappedConflictIDs = append(mappedConflictIDs, conflictID.Base58())
}
return
@@ -729,23 +723,23 @@ func NewUnlockBlock(unlockBlock devnetvm.UnlockBlock) *UnlockBlock {
// TransactionMetadata represents the JSON model of the ledger.TransactionMetadata.
type TransactionMetadata struct {
- TransactionID string `json:"transactionID"`
- BranchIDs []string `json:"branchIDs"`
- Booked bool `json:"booked"`
- BookedTime int64 `json:"bookedTime"`
- GradeOfFinality gof.GradeOfFinality `json:"gradeOfFinality"`
- GradeOfFinalityTime int64 `json:"gradeOfFinalityTime"`
+ TransactionID string `json:"transactionID"`
+ ConflictIDs []string `json:"conflictIDs"`
+ Booked bool `json:"booked"`
+ BookedTime int64 `json:"bookedTime"`
+ ConfirmationState confirmation.State `json:"confirmationState"`
+ ConfirmationStateTime int64 `json:"confirmationStateTime"`
}
// NewTransactionMetadata returns the TransactionMetadata from the given ledger.TransactionMetadata.
func NewTransactionMetadata(transactionMetadata *ledger.TransactionMetadata) *TransactionMetadata {
return &TransactionMetadata{
- TransactionID: transactionMetadata.ID().Base58(),
- BranchIDs: lo.Map(lo.Map(transactionMetadata.BranchIDs().Slice(), utxo.TransactionID.Bytes), base58.Encode),
- Booked: transactionMetadata.IsBooked(),
- BookedTime: transactionMetadata.BookingTime().Unix(),
- GradeOfFinality: transactionMetadata.GradeOfFinality(),
- GradeOfFinalityTime: transactionMetadata.GradeOfFinalityTime().Unix(),
+ TransactionID: transactionMetadata.ID().Base58(),
+ ConflictIDs: lo.Map(lo.Map(transactionMetadata.ConflictIDs().Slice(), utxo.TransactionID.Bytes), base58.Encode),
+ Booked: transactionMetadata.IsBooked(),
+ BookedTime: transactionMetadata.BookingTime().Unix(),
+ ConfirmationState: transactionMetadata.ConfirmationState(),
+ ConfirmationStateTime: transactionMetadata.ConfirmationStateTime().Unix(),
}
}
diff --git a/packages/jsonmodels/mana.go b/packages/jsonmodels/mana.go
index 09a2014052..cdfaec080b 100644
--- a/packages/jsonmodels/mana.go
+++ b/packages/jsonmodels/mana.go
@@ -70,17 +70,6 @@ type OnlineNodeStr struct {
Mana float64 `json:"mana"`
}
-// PastConsensusVectorMetadataResponse is the response.
-type PastConsensusVectorMetadataResponse struct {
- Metadata *mana.ConsensusBasePastManaVectorMetadata `json:"metadata,omitempty"`
- Error string `json:"error,omitempty"`
-}
-
-// PastConsensusManaVectorRequest is the request.
-type PastConsensusManaVectorRequest struct {
- Timestamp int64 `json:"timestamp"`
-}
-
// PastConsensusManaVectorResponse is the response.
type PastConsensusManaVectorResponse struct {
Consensus []mana.NodeStr `json:"consensus"`
diff --git a/packages/jsonmodels/sendblock.go b/packages/jsonmodels/sendblock.go
new file mode 100644
index 0000000000..1ea524efef
--- /dev/null
+++ b/packages/jsonmodels/sendblock.go
@@ -0,0 +1,13 @@
+package jsonmodels
+
+// ParentBlockIDs is a json representation of tangle.ParentBlockIDs.
+type ParentBlockIDs struct {
+ Type uint8 `json:"type"`
+ BlockIDs []string `json:"blockIDs"`
+}
+
+// SendBlockRequest contains the data of send block endpoint.
+type SendBlockRequest struct {
+ Payload []byte `json:"payload"`
+ ParentBlockIDs []ParentBlockIDs `json:"parentBlockIDs"`
+}
diff --git a/packages/jsonmodels/sendmessage.go b/packages/jsonmodels/sendmessage.go
deleted file mode 100644
index 0a547582c0..0000000000
--- a/packages/jsonmodels/sendmessage.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package jsonmodels
-
-// ParentMessageIDs is a json representation of tangle.ParentMessageIDs.
-type ParentMessageIDs struct {
- Type uint8 `json:"type"`
- MessageIDs []string `json:"messageIDs"`
-}
-
-// SendMessageRequest contains the data of send message endpoint.
-type SendMessageRequest struct {
- Payload []byte `json:"payload"`
- ParentMessageIDs []ParentMessageIDs `json:"parentMessageIDs"`
-}
diff --git a/packages/jsonmodels/spammer.go b/packages/jsonmodels/spammer.go
index 49d9aacaa2..4efbc6a281 100644
--- a/packages/jsonmodels/spammer.go
+++ b/packages/jsonmodels/spammer.go
@@ -2,8 +2,8 @@ package jsonmodels
// SpammerResponse is the HTTP response of a spammer request.
type SpammerResponse struct {
- Message string `json:"message"`
- Error string `json:"error"`
+ Block string `json:"block"`
+ Error string `json:"error"`
}
// SpammerRequest contains the parameters of a spammer request.
diff --git a/packages/jsonmodels/tangle.go b/packages/jsonmodels/tangle.go
index 0794079b5e..9345aedfa9 100644
--- a/packages/jsonmodels/tangle.go
+++ b/packages/jsonmodels/tangle.go
@@ -1,51 +1,54 @@
package jsonmodels
-import (
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
-)
+import "github.com/iotaledger/hive.go/types/confirmation"
-// region Message ///////////////////////////////////////////////////////////////////////////////////////////////////////
+// region Block ///////////////////////////////////////////////////////////////////////////////////////////////////////
-// Message represents the JSON model of a tangle.Message.
-type Message struct {
+// Block represents the JSON model of a tangle.Block.
+type Block struct {
ID string `json:"id"`
StrongParents []string `json:"strongParents"`
WeakParents []string `json:"weakParents"`
ShallowLikeParents []string `json:"shallowLikeParents"`
- StrongApprovers []string `json:"strongApprovers"`
- WeakApprovers []string `json:"weakApprovers"`
- ShallowLikeApprovers []string `json:"shallowLikeApprovers"`
+ StrongChildren []string `json:"strongChildren"`
+ WeakChildren []string `json:"weakChildren"`
+ ShallowLikeChildren []string `json:"shallowLikeChildren"`
IssuerPublicKey string `json:"issuerPublicKey"`
IssuingTime int64 `json:"issuingTime"`
SequenceNumber uint64 `json:"sequenceNumber"`
PayloadType string `json:"payloadType"`
TransactionID string `json:"transactionID,omitempty"`
Payload []byte `json:"payload"`
+ EC string `json:"ec"`
+ EI uint64 `json:"ei"`
+ ECR string `json:"ecr"`
+ PrevEC string `json:"prevEC"`
Signature string `json:"signature"`
+ LatestConfirmedEpoch uint64 `json:"latestConfirmedEpoch"`
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MessageMetadata //////////////////////////////////////////////////////////////////////////////////////////////
+// region BlockMetadata //////////////////////////////////////////////////////////////////////////////////////////////
-// MessageMetadata represents the JSON model of the tangle.MessageMetadata.
-type MessageMetadata struct {
- ID string `json:"id"`
- ReceivedTime int64 `json:"receivedTime"`
- Solid bool `json:"solid"`
- SolidificationTime int64 `json:"solidificationTime"`
- StructureDetails *StructureDetails `json:"structureDetails,omitempty"`
- BranchIDs []string `json:"branchIDs"`
- AddedBranchIDs []string `json:"addedBranchIDs"`
- SubtractedBranchIDs []string `json:"subtractedBranchIDs"`
- Scheduled bool `json:"scheduled"`
- ScheduledTime int64 `json:"scheduledTime"`
- Booked bool `json:"booked"`
- BookedTime int64 `json:"bookedTime"`
- ObjectivelyInvalid bool `json:"objectivelyInvalid"`
- SubjectivelyInvalid bool `json:"subjectivelyInvalid"`
- GradeOfFinality gof.GradeOfFinality `json:"gradeOfFinality"`
- GradeOfFinalityTime int64 `json:"gradeOfFinalityTime"`
+// BlockMetadata represents the JSON model of the tangle.BlockMetadata.
+type BlockMetadata struct {
+ ID string `json:"id"`
+ ReceivedTime int64 `json:"receivedTime"`
+ Solid bool `json:"solid"`
+ SolidificationTime int64 `json:"solidificationTime"`
+ StructureDetails *StructureDetails `json:"structureDetails,omitempty"`
+ ConflictIDs []string `json:"conflictIDs"`
+ AddedConflictIDs []string `json:"addedConflictIDs"`
+ SubtractedConflictIDs []string `json:"subtractedConflictIDs"`
+ Scheduled bool `json:"scheduled"`
+ ScheduledTime int64 `json:"scheduledTime"`
+ Booked bool `json:"booked"`
+ BookedTime int64 `json:"bookedTime"`
+ ObjectivelyInvalid bool `json:"objectivelyInvalid"`
+ SubjectivelyInvalid bool `json:"subjectivelyInvalid"`
+ ConfirmationState confirmation.State `json:"confirmationState"`
+ ConfirmationStateTime int64 `json:"confirmationStateTime"`
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/jsonmodels/tools.go b/packages/jsonmodels/tools.go
index 7b54020100..659adc9360 100644
--- a/packages/jsonmodels/tools.go
+++ b/packages/jsonmodels/tools.go
@@ -1,11 +1,11 @@
package jsonmodels
-// PastconeRequest holds the message id to query.
+// PastconeRequest holds the block id to query.
type PastconeRequest struct {
ID string `json:"id"`
}
-// PastconeResponse is the HTTP response containing the number of messages in the past cone and if all messages of the past cone
+// PastconeResponse is the HTTP response containing the number of blocks in the past cone and if all blocks of the past cone
// exist on the node.
type PastconeResponse struct {
Exist bool `json:"exist,omitempty"`
@@ -13,14 +13,14 @@ type PastconeResponse struct {
Error string `json:"error,omitempty"`
}
-// MissingResponse is the HTTP response containing all the missing messages and their count.
+// MissingResponse is the HTTP response containing all the missing blocks and their count.
type MissingResponse struct {
IDs []string `json:"ids,omitempty"`
Count int `json:"count,omitempty"`
}
-// MissingAvailableResponse is a map of messageIDs with the peers that have such message.
+// MissingAvailableResponse is a map of blockIDs with the peers that have such block.
type MissingAvailableResponse struct {
- Availability map[string][]string `json:"msgavailability,omitempty"`
+ Availability map[string][]string `json:"blkavailability,omitempty"`
Count int `json:"count"`
}
diff --git a/packages/jsonmodels/wallet.go b/packages/jsonmodels/wallet.go
index 61c1a2d187..76ce4619b6 100644
--- a/packages/jsonmodels/wallet.go
+++ b/packages/jsonmodels/wallet.go
@@ -3,7 +3,7 @@ package jsonmodels
import (
"time"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
+ "github.com/iotaledger/hive.go/types/confirmation"
)
// WalletOutputsOnAddress represents wallet outputs on an address.
@@ -14,9 +14,9 @@ type WalletOutputsOnAddress struct {
// WalletOutput represents an output as expected by the wallet lib.
type WalletOutput struct {
- Output Output `json:"output"`
- Metadata WalletOutputMetadata `json:"metadata"`
- GradeOfFinality gof.GradeOfFinality `json:"gradeOfFinality"`
+ Output Output `json:"output"`
+ Metadata WalletOutputMetadata `json:"metadata"`
+ ConfirmationState confirmation.State `json:"confirmationState"`
}
// WalletOutputMetadata holds metadata about the output.
diff --git a/packages/jsonmodels/webapi.go b/packages/jsonmodels/webapi.go
index 5928fdb194..1be8644844 100644
--- a/packages/jsonmodels/webapi.go
+++ b/packages/jsonmodels/webapi.go
@@ -53,22 +53,22 @@ type PostAddressesUnspentOutputsResponse struct {
// endregion
-// region GetBranchChildrenResponse ////////////////////////////////////////////////////////////////////////////////////
-
-// GetBranchChildrenResponse represents the JSON model of a response from the GetBranchChildren endpoint.
-type GetBranchChildrenResponse struct {
- BranchID string `json:"branchID"`
- ChildBranches []*ChildBranch `json:"childBranches"`
-}
-
-// NewGetBranchChildrenResponse returns a GetBranchChildrenResponse from the given details.
-func NewGetBranchChildrenResponse(branchID utxo.TransactionID, childBranches []*conflictdag.ChildBranch[utxo.TransactionID]) *GetBranchChildrenResponse {
- return &GetBranchChildrenResponse{
- BranchID: branchID.Base58(),
- ChildBranches: func() (mappedChildBranches []*ChildBranch) {
- mappedChildBranches = make([]*ChildBranch, 0)
- for _, childBranch := range childBranches {
- mappedChildBranches = append(mappedChildBranches, NewChildBranch(childBranch))
+// region GetConflictChildrenResponse ////////////////////////////////////////////////////////////////////////////////////
+
+// GetConflictChildrenResponse represents the JSON model of a response from the GetConflictChildren endpoint.
+type GetConflictChildrenResponse struct {
+ ConflictID string `json:"conflictID"`
+ ChildConflicts []*ChildConflict `json:"childConflicts"`
+}
+
+// NewGetConflictChildrenResponse returns a GetConflictChildrenResponse from the given details.
+func NewGetConflictChildrenResponse(conflictID utxo.TransactionID, childConflicts []*conflictdag.ChildConflict[utxo.TransactionID]) *GetConflictChildrenResponse {
+ return &GetConflictChildrenResponse{
+ ConflictID: conflictID.Base58(),
+ ChildConflicts: func() (mappedChildConflicts []*ChildConflict) {
+ mappedChildConflicts = make([]*ChildConflict, 0)
+ for _, childConflict := range childConflicts {
+ mappedChildConflicts = append(mappedChildConflicts, NewChildConflict(childConflict))
}
return
@@ -78,22 +78,22 @@ func NewGetBranchChildrenResponse(branchID utxo.TransactionID, childBranches []*
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region GetBranchConflictsResponse ///////////////////////////////////////////////////////////////////////////////////
+// region GetConflictConflictsResponse ///////////////////////////////////////////////////////////////////////////////////
-// GetBranchConflictsResponse represents the JSON model of a response from the GetBranchConflicts endpoint.
-type GetBranchConflictsResponse struct {
- BranchID string `json:"branchID"`
- Conflicts []*Conflict `json:"conflicts"`
+// GetConflictConflictsResponse represents the JSON model of a response from the GetConflictConflicts endpoint.
+type GetConflictConflictsResponse struct {
+ ConflictID string `json:"conflictID"`
+ Conflicts []*Conflict `json:"conflicts"`
}
-// NewGetBranchConflictsResponse returns a GetBranchConflictsResponse from the given details.
-func NewGetBranchConflictsResponse(branchID utxo.TransactionID, branchIDsPerConflictID map[utxo.OutputID][]utxo.TransactionID) *GetBranchConflictsResponse {
- return &GetBranchConflictsResponse{
- BranchID: branchID.Base58(),
+// NewGetConflictConflictsResponse returns a GetConflictConflictsResponse from the given details.
+func NewGetConflictConflictsResponse(conflictID utxo.TransactionID, conflictIDsPerConflictID map[utxo.OutputID][]utxo.TransactionID) *GetConflictConflictsResponse {
+ return &GetConflictConflictsResponse{
+ ConflictID: conflictID.Base58(),
Conflicts: func() (mappedConflicts []*Conflict) {
mappedConflicts = make([]*Conflict, 0)
- for conflictID, branchIDs := range branchIDsPerConflictID {
- mappedConflicts = append(mappedConflicts, NewConflict(conflictID, branchIDs))
+ for conflictID, conflictIDs := range conflictIDsPerConflictID {
+ mappedConflicts = append(mappedConflicts, NewConflict(conflictID, conflictIDs))
}
return
@@ -103,18 +103,18 @@ func NewGetBranchConflictsResponse(branchID utxo.TransactionID, branchIDsPerConf
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region GetBranchVotersResponse //////////////////////////////////////////////////////////////////////////////////////
+// region GetConflictVotersResponse //////////////////////////////////////////////////////////////////////////////////////
-// GetBranchVotersResponse represents the JSON model of a response from the GetBranchVoters endpoint.
-type GetBranchVotersResponse struct {
- BranchID string `json:"branchID"`
- Voters []string `json:"voters"`
+// GetConflictVotersResponse represents the JSON model of a response from the GetConflictVoters endpoint.
+type GetConflictVotersResponse struct {
+ ConflictID string `json:"conflictID"`
+ Voters []string `json:"voters"`
}
-// NewGetBranchVotersResponse returns a GetBranchVotersResponse from the given details.
-func NewGetBranchVotersResponse(branchID utxo.TransactionID, voters *tangle.Voters) *GetBranchVotersResponse {
- return &GetBranchVotersResponse{
- BranchID: branchID.Base58(),
+// NewGetConflictVotersResponse returns a GetConflictVotersResponse from the given details.
+func NewGetConflictVotersResponse(conflictID utxo.TransactionID, voters *tangle.Voters) *GetConflictVotersResponse {
+ return &GetConflictVotersResponse{
+ ConflictID: conflictID.Base58(),
Voters: func() (votersStr []string) {
votersStr = make([]string, 0)
voters.ForEach(func(voter tangle.Voter) {
@@ -159,19 +159,19 @@ func NewGetOutputConsumersResponse(outputID utxo.OutputID, consumers []*ledger.C
// GetTransactionAttachmentsResponse represents the JSON model of a response from the GetTransactionAttachments endpoint.
type GetTransactionAttachmentsResponse struct {
TransactionID string `json:"transactionID"`
- MessageIDs []string `json:"messageIDs"`
+ BlockIDs []string `json:"blockIDs"`
}
// NewGetTransactionAttachmentsResponse returns a GetTransactionAttachmentsResponse from the given details.
-func NewGetTransactionAttachmentsResponse(transactionID utxo.TransactionID, messageIDs tangle.MessageIDs) *GetTransactionAttachmentsResponse {
- var messageIDsBase58 []string
- for messageID := range messageIDs {
- messageIDsBase58 = append(messageIDsBase58, messageID.Base58())
+func NewGetTransactionAttachmentsResponse(transactionID utxo.TransactionID, blockIDs tangle.BlockIDs) *GetTransactionAttachmentsResponse {
+ var blockIDsBase58 []string
+ for blockID := range blockIDs {
+ blockIDsBase58 = append(blockIDsBase58, blockID.Base58())
}
return &GetTransactionAttachmentsResponse{
TransactionID: transactionID.Base58(),
- MessageIDs: messageIDsBase58,
+ BlockIDs: blockIDsBase58,
}
}
@@ -193,10 +193,10 @@ type PostPayloadResponse struct {
ID string `json:"id"`
}
-// NewPostPayloadResponse returns a PostPayloadResponse from the given tangle.Message.
-func NewPostPayloadResponse(message *tangle.Message) *PostPayloadResponse {
+// NewPostPayloadResponse returns a PostPayloadResponse from the given tangle.Block.
+func NewPostPayloadResponse(block *tangle.Block) *PostPayloadResponse {
return &PostPayloadResponse{
- ID: message.ID().Base58(),
+ ID: block.ID().Base58(),
}
}
diff --git a/packages/ledger/booker.go b/packages/ledger/booker.go
index dfdbed22dd..53160f809a 100644
--- a/packages/ledger/booker.go
+++ b/packages/ledger/booker.go
@@ -9,8 +9,10 @@ import (
"github.com/iotaledger/hive.go/generics/lo"
"github.com/iotaledger/hive.go/generics/set"
"github.com/iotaledger/hive.go/generics/walker"
+ "github.com/iotaledger/hive.go/identity"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
)
// booker is a Ledger component that bundles the booking related API.
@@ -48,19 +50,25 @@ func (b *booker) checkAlreadyBookedCommand(params *dataFlowParams, next dataflow
// bookTransactionCommand is a ChainedCommand that books a Transaction.
func (b *booker) bookTransactionCommand(params *dataFlowParams, next dataflow.Next[*dataFlowParams]) (err error) {
- b.bookTransaction(params.Context, params.TransactionMetadata, params.InputsMetadata, params.Consumers, params.Outputs)
+ b.bookTransaction(params.Context, params.Transaction, params.TransactionMetadata, params.InputsMetadata, params.Consumers, params.Outputs)
return next(params)
}
// bookTransaction books a Transaction in the Ledger and creates its Outputs.
-func (b *booker) bookTransaction(ctx context.Context, txMetadata *TransactionMetadata, inputsMetadata *OutputsMetadata, consumers []*Consumer, outputs *utxo.Outputs) {
- branchIDs := b.inheritBranchIDs(ctx, txMetadata.ID(), inputsMetadata)
+func (b *booker) bookTransaction(ctx context.Context, tx utxo.Transaction, txMetadata *TransactionMetadata, inputsMetadata *OutputsMetadata, consumers []*Consumer, outputs *utxo.Outputs) {
+ conflictIDs := b.inheritConflictIDs(ctx, txMetadata.ID(), inputsMetadata)
- txMetadata.SetBranchIDs(branchIDs)
+ txMetadata.SetConflictIDs(conflictIDs)
txMetadata.SetOutputIDs(outputs.IDs())
- b.storeOutputs(outputs, branchIDs)
+ var consensusPledgeID, accessPledgeID identity.ID
+ if devnetTx, ok := tx.(*devnetvm.Transaction); ok {
+ consensusPledgeID = devnetTx.Essence().ConsensusPledgeID()
+ accessPledgeID = devnetTx.Essence().AccessPledgeID()
+ }
+
+ b.storeOutputs(outputs, conflictIDs, consensusPledgeID, accessPledgeID)
txMetadata.SetBooked(true)
@@ -73,16 +81,16 @@ func (b *booker) bookTransaction(ctx context.Context, txMetadata *TransactionMet
})
}
-// inheritedBranchIDs determines the BranchIDs that a Transaction should inherit when being booked.
-func (b *booker) inheritBranchIDs(ctx context.Context, txID utxo.TransactionID, inputsMetadata *OutputsMetadata) (inheritedBranchIDs *set.AdvancedSet[utxo.TransactionID]) {
- parentBranchIDs := b.ledger.ConflictDAG.UnconfirmedConflicts(inputsMetadata.BranchIDs())
+// inheritedConflictIDs determines the ConflictIDs that a Transaction should inherit when being booked.
+func (b *booker) inheritConflictIDs(ctx context.Context, txID utxo.TransactionID, inputsMetadata *OutputsMetadata) (inheritedConflictIDs *set.AdvancedSet[utxo.TransactionID]) {
+ parentConflictIDs := b.ledger.ConflictDAG.UnconfirmedConflicts(inputsMetadata.ConflictIDs())
conflictingInputIDs, consumersToFork := b.determineConflictDetails(txID, inputsMetadata)
if conflictingInputIDs.Size() == 0 {
- return parentBranchIDs
+ return parentConflictIDs
}
- b.ledger.ConflictDAG.CreateConflict(txID, parentBranchIDs, conflictingInputIDs)
+ b.ledger.ConflictDAG.CreateConflict(txID, parentConflictIDs, conflictingInputIDs)
for it := consumersToFork.Iterator(); it.HasNext(); {
b.forkTransaction(ctx, it.Next(), conflictingInputIDs)
@@ -92,10 +100,12 @@ func (b *booker) inheritBranchIDs(ctx context.Context, txID utxo.TransactionID,
}
// storeOutputs stores the Outputs in the Ledger.
-func (b *booker) storeOutputs(outputs *utxo.Outputs, branchIDs *set.AdvancedSet[utxo.TransactionID]) {
+func (b *booker) storeOutputs(outputs *utxo.Outputs, conflictIDs *set.AdvancedSet[utxo.TransactionID], consensusPledgeID, accessPledgeID identity.ID) {
_ = outputs.ForEach(func(output utxo.Output) (err error) {
outputMetadata := NewOutputMetadata(output.ID())
- outputMetadata.SetBranchIDs(branchIDs)
+ outputMetadata.SetConflictIDs(conflictIDs)
+ outputMetadata.SetAccessManaPledgeID(accessPledgeID)
+ outputMetadata.SetConsensusManaPledgeID(consensusPledgeID)
b.ledger.Storage.outputMetadataStorage.Store(outputMetadata).Release()
b.ledger.Storage.outputStorage.Store(output).Release()
@@ -130,7 +140,7 @@ func (b *booker) forkTransaction(ctx context.Context, txID utxo.TransactionID, o
b.ledger.mutex.Lock(txID)
conflictingInputs := b.ledger.Utils.ResolveInputs(tx.Inputs()).Intersect(outputsSpentByConflictingTx)
- parentConflicts := txMetadata.BranchIDs()
+ parentConflicts := txMetadata.ConflictIDs()
if !b.ledger.ConflictDAG.CreateConflict(txID, parentConflicts, conflictingInputs) {
b.ledger.ConflictDAG.UpdateConflictingResources(txID, conflictingInputs)
@@ -143,20 +153,20 @@ func (b *booker) forkTransaction(ctx context.Context, txID utxo.TransactionID, o
ParentConflicts: parentConflicts,
})
- b.updateBranchesAfterFork(ctx, txMetadata, txID, parentConflicts)
+ b.updateConflictsAfterFork(ctx, txMetadata, txID, parentConflicts)
b.ledger.mutex.Unlock(txID)
- b.propagateForkedBranchToFutureCone(ctx, txMetadata.OutputIDs(), txID, parentConflicts)
+ b.propagateForkedConflictToFutureCone(ctx, txMetadata.OutputIDs(), txID, parentConflicts)
})
}
-// propagateForkedBranchToFutureCone propagates a newly introduced Branch to its future cone.
-func (b *booker) propagateForkedBranchToFutureCone(ctx context.Context, outputIDs utxo.OutputIDs, forkedBranchID utxo.TransactionID, previousParentBranches *set.AdvancedSet[utxo.TransactionID]) {
+// propagateForkedConflictToFutureCone propagates a newly introduced Conflict to its future cone.
+func (b *booker) propagateForkedConflictToFutureCone(ctx context.Context, outputIDs utxo.OutputIDs, forkedConflictID utxo.TransactionID, previousParentConflicts *set.AdvancedSet[utxo.TransactionID]) {
b.ledger.Utils.WalkConsumingTransactionMetadata(outputIDs, func(consumingTxMetadata *TransactionMetadata, walker *walker.Walker[utxo.OutputID]) {
b.ledger.mutex.Lock(consumingTxMetadata.ID())
defer b.ledger.mutex.Unlock(consumingTxMetadata.ID())
- if !b.updateBranchesAfterFork(ctx, consumingTxMetadata, forkedBranchID, previousParentBranches) {
+ if !b.updateConflictsAfterFork(ctx, consumingTxMetadata, forkedConflictID, previousParentConflicts) {
return
}
@@ -164,33 +174,33 @@ func (b *booker) propagateForkedBranchToFutureCone(ctx context.Context, outputID
})
}
-// updateBranchesAfterFork updates the BranchIDs of a Transaction after a fork.
-func (b *booker) updateBranchesAfterFork(ctx context.Context, txMetadata *TransactionMetadata, forkedBranchID utxo.TransactionID, previousParents *set.AdvancedSet[utxo.TransactionID]) (updated bool) {
+// updateConflictsAfterFork updates the ConflictIDs of a Transaction after a fork.
+func (b *booker) updateConflictsAfterFork(ctx context.Context, txMetadata *TransactionMetadata, forkedConflictID utxo.TransactionID, previousParents *set.AdvancedSet[utxo.TransactionID]) (updated bool) {
if txMetadata.IsConflicting() {
- b.ledger.ConflictDAG.UpdateConflictParents(txMetadata.ID(), previousParents, forkedBranchID)
+ b.ledger.ConflictDAG.UpdateConflictParents(txMetadata.ID(), previousParents, forkedConflictID)
return false
}
- if txMetadata.BranchIDs().Has(forkedBranchID) {
+ if txMetadata.ConflictIDs().Has(forkedConflictID) {
return false
}
- newBranchIDs := txMetadata.BranchIDs().Clone()
- newBranchIDs.DeleteAll(previousParents)
- newBranchIDs.Add(forkedBranchID)
- newBranches := b.ledger.ConflictDAG.UnconfirmedConflicts(newBranchIDs)
+ newConflictIDs := txMetadata.ConflictIDs().Clone()
+ newConflictIDs.DeleteAll(previousParents)
+ newConflictIDs.Add(forkedConflictID)
+ newConflicts := b.ledger.ConflictDAG.UnconfirmedConflicts(newConflictIDs)
b.ledger.Storage.CachedOutputsMetadata(txMetadata.OutputIDs()).Consume(func(outputMetadata *OutputMetadata) {
- outputMetadata.SetBranchIDs(newBranches)
+ outputMetadata.SetConflictIDs(newConflicts)
})
- txMetadata.SetBranchIDs(newBranches)
+ txMetadata.SetConflictIDs(newConflicts)
- b.ledger.Events.TransactionBranchIDUpdated.Trigger(&TransactionBranchIDUpdatedEvent{
- TransactionID: txMetadata.ID(),
- AddedBranchID: forkedBranchID,
- RemovedBranchIDs: previousParents,
- Context: ctx,
+ b.ledger.Events.TransactionConflictIDUpdated.Trigger(&TransactionConflictIDUpdatedEvent{
+ TransactionID: txMetadata.ID(),
+ AddedConflictID: forkedConflictID,
+ RemovedConflictIDs: previousParents,
+ Context: ctx,
})
return true
diff --git a/packages/ledger/events.go b/packages/ledger/events.go
index 651467f71e..cbf8921d8a 100644
--- a/packages/ledger/events.go
+++ b/packages/ledger/events.go
@@ -23,8 +23,8 @@ type Events struct {
// TransactionInclusionUpdated is an event that gets triggered whenever the inclusion time of a Transaction changes.
TransactionInclusionUpdated *event.Event[*TransactionInclusionUpdatedEvent]
- // TransactionConfirmed is an event that gets triggered whenever a Transaction is confirmed.
- TransactionConfirmed *event.Event[*TransactionConfirmedEvent]
+ // TransactionAccepted is an event that gets triggered whenever a Transaction is confirmed.
+ TransactionAccepted *event.Event[*TransactionAcceptedEvent]
// TransactionRejected is an event that gets triggered whenever a Transaction is rejected.
TransactionRejected *event.Event[*TransactionRejectedEvent]
@@ -32,8 +32,8 @@ type Events struct {
// TransactionForked is an event that gets triggered whenever a Transaction is forked.
TransactionForked *event.Event[*TransactionForkedEvent]
- // TransactionBranchIDUpdated is an event that gets triggered whenever the Branch of a Transaction is updated.
- TransactionBranchIDUpdated *event.Event[*TransactionBranchIDUpdatedEvent]
+ // TransactionConflictIDUpdated is an event that gets triggered whenever the Conflict of a Transaction is updated.
+ TransactionConflictIDUpdated *event.Event[*TransactionConflictIDUpdatedEvent]
// TransactionInvalid is an event that gets triggered whenever a Transaction is found to be invalid.
TransactionInvalid *event.Event[*TransactionInvalidEvent]
@@ -45,15 +45,15 @@ type Events struct {
// newEvents returns a new Events object.
func newEvents() (new *Events) {
return &Events{
- TransactionStored: event.New[*TransactionStoredEvent](),
- TransactionBooked: event.New[*TransactionBookedEvent](),
- TransactionInclusionUpdated: event.New[*TransactionInclusionUpdatedEvent](),
- TransactionConfirmed: event.New[*TransactionConfirmedEvent](),
- TransactionRejected: event.New[*TransactionRejectedEvent](),
- TransactionForked: event.New[*TransactionForkedEvent](),
- TransactionBranchIDUpdated: event.New[*TransactionBranchIDUpdatedEvent](),
- TransactionInvalid: event.New[*TransactionInvalidEvent](),
- Error: event.New[error](),
+ TransactionStored: event.New[*TransactionStoredEvent](),
+ TransactionBooked: event.New[*TransactionBookedEvent](),
+ TransactionInclusionUpdated: event.New[*TransactionInclusionUpdatedEvent](),
+ TransactionAccepted: event.New[*TransactionAcceptedEvent](),
+ TransactionRejected: event.New[*TransactionRejectedEvent](),
+ TransactionForked: event.New[*TransactionForkedEvent](),
+ TransactionConflictIDUpdated: event.New[*TransactionConflictIDUpdatedEvent](),
+ TransactionInvalid: event.New[*TransactionInvalidEvent](),
+ Error: event.New[error](),
}
}
@@ -102,11 +102,11 @@ type TransactionInclusionUpdatedEvent struct {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region TransactionConfirmedEvent ////////////////////////////////////////////////////////////////////////////////////
+// region TransactionAcceptedEvent /////////////////////////////////////////////////////////////////////////////////////
-// TransactionConfirmedEvent is a container that acts as a dictionary for the TransactionConfirmed event related
+// TransactionAcceptedEvent is a container that acts as a dictionary for the TransactionAccepted event related
// parameters.
-type TransactionConfirmedEvent struct {
+type TransactionAcceptedEvent struct {
// TransactionID contains the identifier of the confirmed Transaction.
TransactionID utxo.TransactionID
}
@@ -131,7 +131,7 @@ type TransactionForkedEvent struct {
// TransactionID contains the identifier of the forked Transaction.
TransactionID utxo.TransactionID
- // ParentConflicts contains the set of BranchIDs that form the parent Branches for the newly forked Transaction.
+ // ParentConflicts contains the set of ConflictIDs that form the parent Conflicts for the newly forked Transaction.
ParentConflicts *set.AdvancedSet[utxo.TransactionID]
// Context contains a Context provided by the caller that triggered this event.
@@ -140,19 +140,19 @@ type TransactionForkedEvent struct {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region TransactionBranchIDUpdatedEvent //////////////////////////////////////////////////////////////////////////////
+// region TransactionConflictIDUpdatedEvent //////////////////////////////////////////////////////////////////////////////
-// TransactionBranchIDUpdatedEvent is a container that acts as a dictionary for the TransactionBranchIDUpdated event
+// TransactionConflictIDUpdatedEvent is a container that acts as a dictionary for the TransactionConflictIDUpdated event
// related parameters.
-type TransactionBranchIDUpdatedEvent struct {
- // TransactionID contains the identifier of the Transaction whose BranchIDs were updated.
+type TransactionConflictIDUpdatedEvent struct {
+ // TransactionID contains the identifier of the Transaction whose ConflictIDs were updated.
TransactionID utxo.TransactionID
- // AddedBranchID contains the identifier of the Branch that was added to the BranchIDs of the Transaction.
- AddedBranchID utxo.TransactionID
+ // AddedConflictID contains the identifier of the Conflict that was added to the ConflictIDs of the Transaction.
+ AddedConflictID utxo.TransactionID
- // RemovedBranchIDs contains the set of the BranchIDs that were removed while updating the Transaction.
- RemovedBranchIDs *set.AdvancedSet[utxo.TransactionID]
+ // RemovedConflictIDs contains the set of the ConflictIDs that were removed while updating the Transaction.
+ RemovedConflictIDs *set.AdvancedSet[utxo.TransactionID]
// Context contains a Context provided by the caller that triggered this event.
Context context.Context
diff --git a/packages/ledger/ledger.go b/packages/ledger/ledger.go
index 9511510e88..474aa96c35 100644
--- a/packages/ledger/ledger.go
+++ b/packages/ledger/ledger.go
@@ -2,16 +2,15 @@ package ledger
import (
"context"
- "fmt"
"time"
"github.com/iotaledger/hive.go/generics/event"
"github.com/iotaledger/hive.go/generics/objectstorage"
"github.com/iotaledger/hive.go/generics/walker"
"github.com/iotaledger/hive.go/syncutils"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
@@ -59,7 +58,7 @@ func New(options ...Option) (ledger *Ledger) {
ledger.ConflictDAG = conflictdag.New[utxo.TransactionID, utxo.OutputID](append([]conflictdag.Option{
conflictdag.WithStore(ledger.options.store),
conflictdag.WithCacheTimeProvider(ledger.options.cacheTimeProvider),
- }, ledger.options.branchDAGOptions...)...)
+ }, ledger.options.conflictDAGOptions...)...)
ledger.Storage = newStorage(ledger)
ledger.validator = newValidator(ledger)
@@ -67,12 +66,12 @@ func New(options ...Option) (ledger *Ledger) {
ledger.dataFlow = newDataFlow(ledger)
ledger.Utils = newUtils(ledger)
- ledger.ConflictDAG.Events.BranchConfirmed.Attach(event.NewClosure(func(event *conflictdag.BranchConfirmedEvent[utxo.TransactionID]) {
- ledger.propagatedConfirmationToIncludedTransactions(event.BranchID)
+ ledger.ConflictDAG.Events.ConflictAccepted.Attach(event.NewClosure(func(event *conflictdag.ConflictAcceptedEvent[utxo.TransactionID]) {
+ ledger.propagateAcceptanceToIncludedTransactions(event.ID)
}))
- ledger.ConflictDAG.Events.BranchRejected.Attach(event.NewClosure(func(event *conflictdag.BranchRejectedEvent[utxo.TransactionID]) {
- ledger.propagatedRejectionToTransactions(event.BranchID)
+ ledger.ConflictDAG.Events.ConflictRejected.Attach(event.NewClosure(func(event *conflictdag.ConflictRejectedEvent[utxo.TransactionID]) {
+ ledger.propagatedRejectionToTransactions(event.ID)
}))
ledger.Events.TransactionBooked.Attach(event.NewClosure(func(event *TransactionBookedEvent) {
@@ -88,32 +87,52 @@ func New(options ...Option) (ledger *Ledger) {
// LoadSnapshot loads a snapshot of the Ledger from the given snapshot.
func (l *Ledger) LoadSnapshot(snapshot *Snapshot) {
- _ = snapshot.Outputs.ForEach(func(output utxo.Output) error {
- meta, exists := snapshot.OutputsMetadata.Get(output.ID())
+ for _, outputWithMetadata := range snapshot.OutputsWithMetadata {
+ newOutputMetadata := NewOutputMetadata(outputWithMetadata.ID())
+ newOutputMetadata.SetAccessManaPledgeID(outputWithMetadata.AccessManaPledgeID())
+ newOutputMetadata.SetConsensusManaPledgeID(outputWithMetadata.ConsensusManaPledgeID())
+ newOutputMetadata.SetConfirmationState(confirmation.Confirmed)
+
+ l.Storage.outputStorage.Store(outputWithMetadata.Output()).Release()
+ l.Storage.outputMetadataStorage.Store(newOutputMetadata).Release()
+ }
+
+ for ei := snapshot.FullEpochIndex + 1; ei <= snapshot.DiffEpochIndex; ei++ {
+ epochdiff, exists := snapshot.EpochDiffs[ei]
if !exists {
- panic(fmt.Sprintf("missing OutputMetadata for Output with %s", output.ID()))
+ panic("epoch diff not found for epoch")
}
- l.Storage.outputStorage.Store(output).Release()
- l.Storage.outputMetadataStorage.Store(meta).Release()
+ for _, spent := range epochdiff.Spent() {
+ l.Storage.outputStorage.Delete(spent.ID().Bytes())
+ l.Storage.outputMetadataStorage.Delete(spent.ID().Bytes())
+ }
- return nil
- })
+ for _, created := range epochdiff.Created() {
+ outputMetadata := NewOutputMetadata(created.ID())
+ outputMetadata.SetAccessManaPledgeID(created.AccessManaPledgeID())
+ outputMetadata.SetConsensusManaPledgeID(created.ConsensusManaPledgeID())
+ outputMetadata.SetConfirmationState(confirmation.Confirmed)
+
+ l.Storage.outputStorage.Store(created.Output()).Release()
+ l.Storage.outputMetadataStorage.Store(outputMetadata).Release()
+ }
+ }
}
// TakeSnapshot returns a snapshot of the Ledger state.
func (l *Ledger) TakeSnapshot() (snapshot *Snapshot) {
- snapshot = NewSnapshot(utxo.NewOutputs(), NewOutputsMetadata())
+ snapshot = NewSnapshot([]*OutputWithMetadata{})
l.Storage.outputMetadataStorage.ForEach(func(key []byte, cachedOutputMetadata *objectstorage.CachedObject[*OutputMetadata]) bool {
cachedOutputMetadata.Consume(func(outputMetadata *OutputMetadata) {
- if outputMetadata.IsSpent() || outputMetadata.GradeOfFinality() != gof.High {
+ if outputMetadata.IsSpent() || !l.Utils.OutputConfirmationState(outputMetadata.ID()).IsAccepted() {
return
}
l.Storage.CachedOutput(outputMetadata.ID()).Consume(func(output utxo.Output) {
- snapshot.Outputs.Set(outputMetadata.ID(), output)
+ outputWithMetadata := NewOutputWithMetadata(output.ID(), output, outputMetadata.CreationTime(), outputMetadata.ConsensusManaPledgeID(), outputMetadata.AccessManaPledgeID())
+ snapshot.OutputsWithMetadata = append(snapshot.OutputsWithMetadata, outputWithMetadata)
})
- snapshot.OutputsMetadata.Set(outputMetadata.ID(), outputMetadata)
})
return true
@@ -136,8 +155,8 @@ func (l *Ledger) SetTransactionInclusionTime(txID utxo.TransactionID, inclusionT
PreviousInclusionTime: previousInclusionTime,
})
- if previousInclusionTime.IsZero() && l.ConflictDAG.InclusionState(txMetadata.BranchIDs()) == conflictdag.Confirmed {
- l.triggerConfirmedEvent(txMetadata, false)
+ if previousInclusionTime.IsZero() && l.ConflictDAG.ConfirmationState(txMetadata.ConflictIDs()).IsAccepted() {
+ l.triggerAcceptedEvent(txMetadata)
}
})
}
@@ -188,38 +207,38 @@ func (l *Ledger) processConsumingTransactions(outputIDs utxo.OutputIDs) {
}
}
-// triggerConfirmedEvent triggers the TransactionConfirmed event if the Transaction was confirmed.
-func (l *Ledger) triggerConfirmedEvent(txMetadata *TransactionMetadata, checkInclusion bool) (triggered bool) {
- if checkInclusion && txMetadata.InclusionTime().IsZero() {
+// triggerAcceptedEvent triggers the TransactionAccepted event if the Transaction was accepted.
+func (l *Ledger) triggerAcceptedEvent(txMetadata *TransactionMetadata) (triggered bool) {
+ if txMetadata.InclusionTime().IsZero() {
return false
}
- if !txMetadata.SetGradeOfFinality(gof.High) {
+ if !txMetadata.SetConfirmationState(confirmation.Accepted) {
return false
}
for it := txMetadata.OutputIDs().Iterator(); it.HasNext(); {
l.Storage.CachedOutputMetadata(it.Next()).Consume(func(outputMetadata *OutputMetadata) {
- outputMetadata.SetGradeOfFinality(gof.High)
+ outputMetadata.SetConfirmationState(confirmation.Accepted)
})
}
- l.Events.TransactionConfirmed.Trigger(&TransactionConfirmedEvent{
+ l.Events.TransactionAccepted.Trigger(&TransactionAcceptedEvent{
TransactionID: txMetadata.ID(),
})
return true
}
-// triggerConfirmedEvent triggers the TransactionConfirmed event if the Transaction was confirmed.
+// triggerRejectedEvent triggers the TransactionRejected event if the Transaction was rejected.
func (l *Ledger) triggerRejectedEvent(txMetadata *TransactionMetadata) (triggered bool) {
- if !txMetadata.SetGradeOfFinality(gof.None) {
+ if !txMetadata.SetConfirmationState(confirmation.Rejected) {
return false
}
for it := txMetadata.OutputIDs().Iterator(); it.HasNext(); {
l.Storage.CachedOutputMetadata(it.Next()).Consume(func(outputMetadata *OutputMetadata) {
- outputMetadata.SetGradeOfFinality(gof.None)
+ outputMetadata.SetConfirmationState(confirmation.Rejected)
})
}
@@ -230,20 +249,20 @@ func (l *Ledger) triggerRejectedEvent(txMetadata *TransactionMetadata) (triggere
return true
}
-// propagateConfirmedBranchToIncludedTransactions propagates confirmations to the included future cone of the given
+// propagateAcceptanceToIncludedTransactions propagates confirmations to the included future cone of the given
// Transaction.
-func (l *Ledger) propagatedConfirmationToIncludedTransactions(txID utxo.TransactionID) {
+func (l *Ledger) propagateAcceptanceToIncludedTransactions(txID utxo.TransactionID) {
l.Storage.CachedTransactionMetadata(txID).Consume(func(txMetadata *TransactionMetadata) {
- if !l.triggerConfirmedEvent(txMetadata, false) {
+ if !l.triggerAcceptedEvent(txMetadata) {
return
}
l.Utils.WalkConsumingTransactionMetadata(txMetadata.OutputIDs(), func(consumingTxMetadata *TransactionMetadata, walker *walker.Walker[utxo.OutputID]) {
- if l.ConflictDAG.InclusionState(consumingTxMetadata.BranchIDs()) != conflictdag.Confirmed {
+ if l.ConflictDAG.ConfirmationState(consumingTxMetadata.ConflictIDs()).IsAccepted() {
return
}
- if !l.triggerConfirmedEvent(consumingTxMetadata, true) {
+ if !l.triggerAcceptedEvent(consumingTxMetadata) {
return
}
@@ -252,7 +271,7 @@ func (l *Ledger) propagatedConfirmationToIncludedTransactions(txID utxo.Transact
})
}
-// propagateConfirmedBranchToIncludedTransactions propagates confirmations to the included future cone of the given
+// propagateConfirmedConflictToIncludedTransactions propagates confirmations to the included future cone of the given
// Transaction.
func (l *Ledger) propagatedRejectionToTransactions(txID utxo.TransactionID) {
l.Storage.CachedTransactionMetadata(txID).Consume(func(txMetadata *TransactionMetadata) {
diff --git a/packages/ledger/ledger_test.go b/packages/ledger/ledger_test.go
index 6de89a9d47..76b75410c0 100644
--- a/packages/ledger/ledger_test.go
+++ b/packages/ledger/ledger_test.go
@@ -8,10 +8,10 @@ import (
"testing"
"github.com/cockroachdb/errors"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- "github.com/iotaledger/goshimmer/packages/conflictdag"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
@@ -37,7 +37,7 @@ func TestLedger_BookInOrder(t *testing.T) {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TX1": {"TX1"},
"TX1*": {"TX1*"},
@@ -65,7 +65,7 @@ func TestLedger_BookInOrder(t *testing.T) {
{
assert.NoError(t, testFramework.IssueTransaction("TX7*"))
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TX1": {"TX1"},
"TX1*": {"TX1*"},
@@ -96,7 +96,7 @@ func TestLedger_BookInOrder(t *testing.T) {
{
assert.NoError(t, testFramework.IssueTransaction("TX5*"))
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TX1": {"TX1"},
"TX1*": {"TX1*"},
@@ -128,8 +128,8 @@ func TestLedger_BookInOrder(t *testing.T) {
}
}
-// See scenario at img/ledger_test_SetBranchConfirmed.png
-func TestLedger_SetBranchConfirmed(t *testing.T) {
+// See scenario at img/ledger_test_SetConflictConfirmed.png
+func TestLedger_SetConflictConfirmed(t *testing.T) {
testFramework := NewTestFramework(t)
// Step 1: Bottom Layer
@@ -156,9 +156,9 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
for _, txAlias := range []string{"G", "TXA", "TXB", "TXC", "TXD", "TXH", "TXI"} {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- require.True(t, testFramework.ledger.ConflictDAG.SetBranchConfirmed(testFramework.Transaction("TXA").ID()))
+ require.True(t, testFramework.ledger.ConflictDAG.SetConflictAccepted(testFramework.Transaction("TXA").ID()))
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TXA": {"TXA"},
"TXB": {"TXB"},
@@ -177,19 +177,19 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXI": {},
})
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXA")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXB")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXC")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXD")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXH")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXI")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXA")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXB")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXC")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXD")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXH")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXI")))
}
// When creating the middle layer the new transaction E should be booked only under its Pending parent C
{
assert.NoError(t, testFramework.IssueTransaction("TXE"))
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TXA": {"TXA"},
"TXB": {"TXB"},
@@ -209,12 +209,12 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXI": {},
})
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXA")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXB")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXC")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXD")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXH")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXI")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXA")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXB")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXC")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXD")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXH")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXI")))
}
// When creating the first transaction (F) of top layer it should be booked under the Pending parent C
@@ -223,7 +223,7 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TXA": {"TXA"},
"TXB": {"TXB"},
@@ -231,7 +231,7 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXD": {"TXD"},
"TXH": {"TXH"},
"TXI": {"TXI"},
- // Branches F & G are spawned by the fork of G
+ // Conflicts F & G are spawned by the fork of G
"TXF": {"TXC"},
})
@@ -244,21 +244,21 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXI": {},
})
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXA")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXB")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXC")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXD")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXH")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXI")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXA")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXB")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXC")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXD")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXH")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXI")))
}
- // When creating the conflicting TX (G) of the top layer branches F & G are spawned by the fork of G
+ // When creating the conflicting TX (G) of the top layer conflicts F & G are spawned by the fork of G
{
for _, txAlias := range []string{"TXG"} {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TXA": {"TXA"},
"TXB": {"TXB"},
@@ -266,7 +266,7 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXD": {"TXD"},
"TXH": {"TXH"},
"TXI": {"TXI"},
- // Branches F & G are spawned by the fork of G
+ // Conflicts F & G are spawned by the fork of G
"TXF": {"TXF"},
"TXG": {"TXG"},
})
@@ -282,25 +282,25 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXG": {"TXC"},
})
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXA")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXB")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXC")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXD")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXH")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXI")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXF")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXG")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXA")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXB")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXC")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXD")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXH")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXI")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXF")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXG")))
}
- require.True(t, testFramework.ledger.ConflictDAG.SetBranchConfirmed(testFramework.Transaction("TXD").ID()))
+ require.True(t, testFramework.ledger.ConflictDAG.SetConflictAccepted(testFramework.Transaction("TXD").ID()))
- // TX L combines a child (G) of a Rejected branch (C) and a pending branch H, resulting in (G,H)
+ // TX L combines a child (G) of a Rejected conflict (C) and a pending conflict H, resulting in (G,H)
{
for _, txAlias := range []string{"TXL"} {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TXA": {"TXA"},
"TXB": {"TXB"},
@@ -308,7 +308,7 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXD": {"TXD"},
"TXH": {"TXH"},
"TXI": {"TXI"},
- // Branches F & G are spawned by the fork of G
+ // Conflicts F & G are spawned by the fork of G
"TXF": {"TXF"},
"TXG": {"TXG"},
"TXL": {"TXG", "TXH"},
@@ -325,26 +325,26 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXG": {"TXC"},
})
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXA")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXB")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXC")))
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXD")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXH")))
- assert.Equal(t, conflictdag.Pending, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXI")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXF")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXG")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXG", "TXH")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXA")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXB")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXC")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXD")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXH")))
+ assert.Equal(t, confirmation.Pending, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXI")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXF")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXG")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXG", "TXH")))
}
- require.True(t, testFramework.ledger.ConflictDAG.SetBranchConfirmed(testFramework.Transaction("TXH").ID()))
+ require.True(t, testFramework.ledger.ConflictDAG.SetConflictAccepted(testFramework.Transaction("TXH").ID()))
- // The new TX M should be now booked under G, as branch H confirmed, just G because we don't propagate H further.
+ // The new TX M should be now booked under G, as conflict H confirmed, just G because we don't propagate H further.
{
for _, txAlias := range []string{"TXM"} {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TXA": {"TXA"},
"TXB": {"TXB"},
@@ -352,7 +352,7 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXD": {"TXD"},
"TXH": {"TXH"},
"TXI": {"TXI"},
- // Branches F & G are spawned by the fork of G
+ // Conflicts F & G are spawned by the fork of G
"TXF": {"TXF"},
"TXG": {"TXG"},
"TXL": {"TXG", "TXH"},
@@ -370,15 +370,15 @@ func TestLedger_SetBranchConfirmed(t *testing.T) {
"TXG": {"TXC"},
})
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXA")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXB")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXC")))
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXD")))
- assert.Equal(t, conflictdag.Confirmed, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXH")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXI")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXF")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXG")))
- assert.Equal(t, conflictdag.Rejected, testFramework.ledger.ConflictDAG.InclusionState(testFramework.BranchIDs("TXG", "TXH")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXA")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXB")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXC")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXD")))
+ assert.Equal(t, confirmation.Accepted, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXH")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXI")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXF")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXG")))
+ assert.Equal(t, confirmation.Rejected, testFramework.ledger.ConflictDAG.ConfirmationState(testFramework.ConflictIDs("TXG", "TXH")))
}
}
@@ -441,28 +441,28 @@ func TestLedger_SolidifyAndForkMultiThreaded(t *testing.T) {
wg.Wait()
}
- // Create ad-hoc TX11 to mix and match branches propagated from the bottom layer.
+ // Create ad-hoc TX11 to mix and match conflicts propagated from the bottom layer.
{
testFramework.CreateTransaction("TX11", 10, "TX-99-0.0", "TX-99-1.0", "TX-99-2.0", "TX-99-3.0", "TX-99-4.0", "TX-99-5.0", "TX-99-6.0", "TX-99-7.0", "TX-99-8.0", "TX-99-9.0")
testFramework.IssueTransaction("TX11")
}
- // Verify branches for all transactions in the layers.
+ // Verify conflicts for all transactions in the layers.
{
testFramework.WaitUntilAllTasksProcessed()
testFramework.AssertBooked(bookedAliases)
- mappedBranches := make(map[string][]string)
+ mappedConflicts := make(map[string][]string)
for _, issuedAlias := range createdAliases {
- branchNum := strings.Split(issuedAlias, "-")[2]
- mappedBranches[issuedAlias] = []string{fmt.Sprintf("TX-0-%s", branchNum)}
+ conflictNum := strings.Split(issuedAlias, "-")[2]
+ mappedConflicts[issuedAlias] = []string{fmt.Sprintf("TX-0-%s", conflictNum)}
}
- testFramework.AssertBranchIDs(mappedBranches)
+ testFramework.AssertConflictIDs(mappedConflicts)
}
- // Verify branches for TX11.
+ // Verify conflicts for TX11.
{
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"TX11": {"TX-0-0", "TX-0-1", "TX-0-2", "TX-0-3", "TX-0-4", "TX-0-5", "TX-0-6", "TX-0-7", "TX-0-8", "TX-0-9"},
})
}
@@ -474,7 +474,7 @@ func TestLedger_SolidifyAndForkMultiThreaded(t *testing.T) {
testFramework.WaitUntilAllTasksProcessed()
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"TX11": {"TX-1-0", "TX-1-1", "TX-1-2", "TX-1-3", "TX-1-4", "TX-1-5", "TX-1-6", "TX-1-7", "TX-1-8", "TX-1-9"},
"TX12": {"TX12"},
})
@@ -503,20 +503,20 @@ func TestLedger_SolidifyAndForkMultiThreaded(t *testing.T) {
"TX12": {"TX-0-0", "TX-0-1", "TX-0-2", "TX-0-3", "TX-0-4", "TX-0-5", "TX-0-6", "TX-0-7", "TX-0-8", "TX-0-9"},
})
- mappedBranches := make(map[string][]string)
+ mappedConflicts := make(map[string][]string)
for _, issuedAlias := range createdAliases {
layer := strings.Split(issuedAlias, "-")[1]
- branchNum := strings.Split(issuedAlias, "-")[2]
+ conflictNum := strings.Split(issuedAlias, "-")[2]
- var branch string
+ var conflict string
if layer == "0" {
- branch = fmt.Sprintf("TX-0-%s", branchNum)
+ conflict = fmt.Sprintf("TX-0-%s", conflictNum)
} else {
- branch = fmt.Sprintf("TX-1-%s", branchNum)
+ conflict = fmt.Sprintf("TX-1-%s", conflictNum)
}
- mappedBranches[issuedAlias] = []string{branch}
+ mappedConflicts[issuedAlias] = []string{conflict}
}
- testFramework.AssertBranchIDs(mappedBranches)
+ testFramework.AssertConflictIDs(mappedConflicts)
}
}
@@ -532,7 +532,7 @@ func TestLedger_ForkAlreadyConflictingTransaction(t *testing.T) {
assert.NoError(t, testFramework.IssueTransaction(txAlias))
}
- testFramework.AssertBranchIDs(map[string][]string{
+ testFramework.AssertConflictIDs(map[string][]string{
"G": {},
"TX1": {"TX1"},
"TX2": {"TX2"},
@@ -570,8 +570,8 @@ func TestLedger_Aliases(t *testing.T) {
var transactionID utxo.TransactionID
assert.NoError(t, transactionID.FromRandomness())
- branchID := transactionID
+ conflictID := transactionID
transactionID.RegisterAlias("TX1")
- branchID.RegisterAlias("Branch1")
+ conflictID.RegisterAlias("Conflict1")
}
diff --git a/packages/ledger/models.go b/packages/ledger/models.go
index 271ddf7a51..66cfb5c559 100644
--- a/packages/ledger/models.go
+++ b/packages/ledger/models.go
@@ -8,9 +8,9 @@ import (
"github.com/iotaledger/hive.go/generics/set"
"github.com/iotaledger/hive.go/identity"
"github.com/iotaledger/hive.go/stringify"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/goshimmer/packages/clock"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
@@ -22,8 +22,8 @@ type TransactionMetadata struct {
}
type transactionMetadata struct {
- // BranchIDs contains the conflicting BranchIDs that this Transaction depends on.
- BranchIDs utxo.TransactionIDs `serix:"0"`
+ // ConflictIDs contains the conflicting ConflictIDs that this Transaction depends on.
+ ConflictIDs utxo.TransactionIDs `serix:"0"`
// Booked contains a boolean flag that indicates if the Transaction was Booked already.
Booked bool `serix:"1"`
@@ -37,42 +37,43 @@ type transactionMetadata struct {
// OutputIDs contains the identifiers of the Outputs that the Transaction created.
OutputIDs utxo.OutputIDs `serix:"4"`
- // GradeOfFinality contains the confirmation status of the Transaction.
- GradeOfFinality gof.GradeOfFinality `serix:"5"`
+ // ConfirmationState contains the confirmation state of the Transaction.
+ ConfirmationState confirmation.State `serix:"5"`
- // GradeOfFinalityTime contains the last time the GradeOfFinality was updated.
- GradeOfFinalityTime time.Time `serix:"6"`
+ // ConfirmationStateTime contains the last time the ConfirmationState was updated.
+ ConfirmationStateTime time.Time `serix:"6"`
}
// NewTransactionMetadata returns new TransactionMetadata for the given TransactionID.
func NewTransactionMetadata(txID utxo.TransactionID) (new *TransactionMetadata) {
new = model.NewStorable[utxo.TransactionID, TransactionMetadata](&transactionMetadata{
- BranchIDs: utxo.NewTransactionIDs(),
- OutputIDs: utxo.NewOutputIDs(),
+ ConflictIDs: utxo.NewTransactionIDs(),
+ OutputIDs: utxo.NewOutputIDs(),
+ ConfirmationState: confirmation.Pending,
})
new.SetID(txID)
return new
}
-// BranchIDs returns the conflicting BranchIDs that the Transaction depends on.
-func (t *TransactionMetadata) BranchIDs() (branchIDs *set.AdvancedSet[utxo.TransactionID]) {
+// ConflictIDs returns the conflicting ConflictIDs that the Transaction depends on.
+func (t *TransactionMetadata) ConflictIDs() (conflictIDs *set.AdvancedSet[utxo.TransactionID]) {
t.RLock()
defer t.RUnlock()
- return t.M.BranchIDs.Clone()
+ return t.M.ConflictIDs.Clone()
}
-// SetBranchIDs sets the conflicting BranchIDs that this Transaction depends on.
-func (t *TransactionMetadata) SetBranchIDs(branchIDs *set.AdvancedSet[utxo.TransactionID]) (modified bool) {
+// SetConflictIDs sets the conflicting ConflictIDs that this Transaction depends on.
+func (t *TransactionMetadata) SetConflictIDs(conflictIDs *set.AdvancedSet[utxo.TransactionID]) (modified bool) {
t.Lock()
defer t.Unlock()
- if t.M.BranchIDs.Equal(branchIDs) {
+ if t.M.ConflictIDs.Equal(conflictIDs) {
return false
}
- t.M.BranchIDs = branchIDs.Clone()
+ t.M.ConflictIDs = conflictIDs.Clone()
t.SetModified()
return true
@@ -160,41 +161,41 @@ func (t *TransactionMetadata) SetOutputIDs(outputIDs utxo.OutputIDs) (modified b
return true
}
-// GradeOfFinality returns the confirmation status of the Transaction.
-func (t *TransactionMetadata) GradeOfFinality() (gradeOfFinality gof.GradeOfFinality) {
+// ConfirmationState returns the confirmation status of the Transaction.
+func (t *TransactionMetadata) ConfirmationState() (confirmationState confirmation.State) {
t.RLock()
defer t.RUnlock()
- return t.M.GradeOfFinality
+ return t.M.ConfirmationState
}
-// SetGradeOfFinality sets the confirmation status of the Transaction.
-func (t *TransactionMetadata) SetGradeOfFinality(gradeOfFinality gof.GradeOfFinality) (modified bool) {
+// SetConfirmationState sets the confirmation status of the Transaction.
+func (t *TransactionMetadata) SetConfirmationState(confirmationState confirmation.State) (modified bool) {
t.Lock()
defer t.Unlock()
- if t.M.GradeOfFinality == gradeOfFinality {
+ if t.M.ConfirmationState == confirmationState {
return
}
- t.M.GradeOfFinality = gradeOfFinality
- t.M.GradeOfFinalityTime = clock.SyncedTime()
+ t.M.ConfirmationState = confirmationState
+ t.M.ConfirmationStateTime = clock.SyncedTime()
t.SetModified()
return true
}
-// GradeOfFinalityTime returns the last time the GradeOfFinality was updated.
-func (t *TransactionMetadata) GradeOfFinalityTime() (gradeOfFinalityTime time.Time) {
+// ConfirmationStateTime returns the last time the ConfirmationState was updated.
+func (t *TransactionMetadata) ConfirmationStateTime() (confirmationStateTime time.Time) {
t.RLock()
defer t.RUnlock()
- return t.M.GradeOfFinalityTime
+ return t.M.ConfirmationStateTime
}
-// IsConflicting returns true if the Transaction is conflicting with another Transaction (is a Branch).
+// IsConflicting returns true if the Transaction is conflicting with another Transaction (is a Conflict).
func (t *TransactionMetadata) IsConflicting() (isConflicting bool) {
- return t.BranchIDs().Is(t.ID())
+ return t.ConflictIDs().Is(t.ID())
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -210,29 +211,33 @@ type outputMetadata struct {
// ConsensusManaPledgeID contains the identifier of the node that received the consensus mana pledge.
ConsensusManaPledgeID identity.ID `serix:"0"`
+ // AccessManaPledgeID contains the identifier of the node that received the access mana pledge.
+ AccessManaPledgeID identity.ID `serix:"1"`
+
// CreationTime contains the time when the Output was created.
- CreationTime time.Time `serix:"1"`
+ CreationTime time.Time `serix:"2"`
- // BranchIDs contains the conflicting BranchIDs that this Output depends on.
- BranchIDs *set.AdvancedSet[utxo.TransactionID] `serix:"2"`
+ // ConflictIDs contains the conflicting ConflictIDs that this Output depends on.
+ ConflictIDs *set.AdvancedSet[utxo.TransactionID] `serix:"3"`
// FirstConsumer contains the first Transaction that ever spent the Output.
- FirstConsumer utxo.TransactionID `serix:"3"`
+ FirstConsumer utxo.TransactionID `serix:"4"`
// FirstConsumerForked contains a boolean flag that indicates if the FirstConsumer was forked.
- FirstConsumerForked bool `serix:"4"`
+ FirstConsumerForked bool `serix:"5"`
- // GradeOfFinality contains the confirmation status of the Output.
- GradeOfFinality gof.GradeOfFinality `serix:"5"`
+ // ConfirmationState contains the confirmation status of the Output.
+ ConfirmationState confirmation.State `serix:"6"`
- // GradeOfFinalityTime contains the last time the GradeOfFinality was updated.
- GradeOfFinalityTime time.Time `serix:"6"`
+ // ConfirmationStateTime contains the last time the ConfirmationState was updated.
+ ConfirmationStateTime time.Time `serix:"7"`
}
// NewOutputMetadata returns new OutputMetadata for the given OutputID.
func NewOutputMetadata(outputID utxo.OutputID) (new *OutputMetadata) {
new = model.NewStorable[utxo.OutputID, OutputMetadata](&outputMetadata{
- BranchIDs: utxo.NewTransactionIDs(),
+ ConflictIDs: utxo.NewTransactionIDs(),
+ ConfirmationState: confirmation.Pending,
})
new.SetID(outputID)
@@ -262,6 +267,29 @@ func (o *OutputMetadata) SetConsensusManaPledgeID(id identity.ID) (updated bool)
return true
}
+// AccessManaPledgeID returns the identifier of the node that received the access mana pledge.
+func (o *OutputMetadata) AccessManaPledgeID() (id identity.ID) {
+ o.RLock()
+ defer o.RUnlock()
+
+ return o.M.AccessManaPledgeID
+}
+
+// SetAccessManaPledgeID sets the identifier of the node that received the access mana pledge.
+func (o *OutputMetadata) SetAccessManaPledgeID(id identity.ID) (updated bool) {
+ o.Lock()
+ defer o.Unlock()
+
+ if o.M.AccessManaPledgeID == id {
+ return false
+ }
+
+ o.M.AccessManaPledgeID = id
+ o.SetModified()
+
+ return true
+}
+
// CreationTime returns the creation time of the Output.
func (o *OutputMetadata) CreationTime() (creationTime time.Time) {
o.RLock()
@@ -285,24 +313,24 @@ func (o *OutputMetadata) SetCreationTime(creationTime time.Time) (updated bool)
return true
}
-// BranchIDs returns the conflicting BranchIDs that the Output depends on.
-func (o *OutputMetadata) BranchIDs() (branchIDs *set.AdvancedSet[utxo.TransactionID]) {
+// ConflictIDs returns the conflicting ConflictIDs that the Output depends on.
+func (o *OutputMetadata) ConflictIDs() (conflictIDs *set.AdvancedSet[utxo.TransactionID]) {
o.RLock()
defer o.RUnlock()
- return o.M.BranchIDs.Clone()
+ return o.M.ConflictIDs.Clone()
}
-// SetBranchIDs sets the conflicting BranchIDs that this Transaction depends on.
-func (o *OutputMetadata) SetBranchIDs(branchIDs *set.AdvancedSet[utxo.TransactionID]) (modified bool) {
+// SetConflictIDs sets the conflicting ConflictIDs that this Transaction depends on.
+func (o *OutputMetadata) SetConflictIDs(conflictIDs *set.AdvancedSet[utxo.TransactionID]) (modified bool) {
o.Lock()
defer o.Unlock()
- if o.M.BranchIDs.Equal(branchIDs) {
+ if o.M.ConflictIDs.Equal(conflictIDs) {
return false
}
- o.M.BranchIDs = branchIDs.Clone()
+ o.M.ConflictIDs = conflictIDs.Clone()
o.SetModified()
return true
@@ -336,36 +364,36 @@ func (o *OutputMetadata) RegisterBookedConsumer(consumer utxo.TransactionID) (is
return true, o.M.FirstConsumer
}
-// GradeOfFinality returns the confirmation status of the Output.
-func (o *OutputMetadata) GradeOfFinality() (gradeOfFinality gof.GradeOfFinality) {
+// ConfirmationState returns the confirmation state of the Output.
+func (o *OutputMetadata) ConfirmationState() (confirmationState confirmation.State) {
o.RLock()
defer o.RUnlock()
- return o.M.GradeOfFinality
+ return o.M.ConfirmationState
}
-// SetGradeOfFinality sets the confirmation status of the Output.
-func (o *OutputMetadata) SetGradeOfFinality(gradeOfFinality gof.GradeOfFinality) (modified bool) {
+// SetConfirmationState sets the confirmation state of the Output.
+func (o *OutputMetadata) SetConfirmationState(confirmationState confirmation.State) (modified bool) {
o.Lock()
defer o.Unlock()
- if o.M.GradeOfFinality == gradeOfFinality {
+ if o.M.ConfirmationState == confirmationState {
return false
}
- o.M.GradeOfFinality = gradeOfFinality
- o.M.GradeOfFinalityTime = clock.SyncedTime()
+ o.M.ConfirmationState = confirmationState
+ o.M.ConfirmationStateTime = clock.SyncedTime()
o.SetModified()
return true
}
-// GradeOfFinalityTime returns the last time the GradeOfFinality was updated.
-func (o *OutputMetadata) GradeOfFinalityTime() (gradeOfFinality time.Time) {
+// ConfirmationStateTime returns the last time the ConfirmationState was updated.
+func (o *OutputMetadata) ConfirmationStateTime() (confirmationState time.Time) {
o.RLock()
defer o.RUnlock()
- return o.M.GradeOfFinalityTime
+ return o.M.ConfirmationStateTime
}
// IsSpent returns true if the Output has been spent.
@@ -430,15 +458,15 @@ func (o *OutputsMetadata) IDs() (ids utxo.OutputIDs) {
return ids
}
-// BranchIDs returns a union of all BranchIDs of the contained OutputMetadata objects.
-func (o *OutputsMetadata) BranchIDs() (branchIDs *set.AdvancedSet[utxo.TransactionID]) {
- branchIDs = set.NewAdvancedSet[utxo.TransactionID]()
+// ConflictIDs returns a union of all ConflictIDs of the contained OutputMetadata objects.
+func (o *OutputsMetadata) ConflictIDs() (conflictIDs *set.AdvancedSet[utxo.TransactionID]) {
+ conflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
_ = o.ForEach(func(outputMetadata *OutputMetadata) (err error) {
- branchIDs.AddAll(outputMetadata.BranchIDs())
+ conflictIDs.AddAll(outputMetadata.ConflictIDs())
return nil
})
- return branchIDs
+ return conflictIDs
}
// ForEach executes the callback for each element in the collection (it aborts if the callback returns an error).
@@ -519,3 +547,159 @@ func (c *Consumer) SetBooked() (updated bool) {
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region EpochDiffs ///////////////////////////////////////////////////////////////////////////////////////////////////
+
+// EpochDiff represents the collection of OutputWithMetadata objects that have been included in an epoch.
+type EpochDiff struct {
+ model.Immutable[EpochDiff, *EpochDiff, epochDiffModel] `serix:"0"`
+}
+
+type epochDiffModel struct {
+ Spent []*OutputWithMetadata `serix:"0"`
+ Created []*OutputWithMetadata `serix:"1"`
+}
+
+// NewEpochDiff returns a new EpochDiff object.
+func NewEpochDiff(spent []*OutputWithMetadata, created []*OutputWithMetadata) (new *EpochDiff) {
+ return model.NewImmutable[EpochDiff](&epochDiffModel{
+ Spent: spent,
+ Created: created,
+ })
+}
+
+// Spent returns the outputs spent for this epoch diff.
+func (e *EpochDiff) Spent() []*OutputWithMetadata {
+ return e.M.Spent
+}
+
+// Created returns the outputs created for this epoch diff.
+func (e *EpochDiff) Created() []*OutputWithMetadata {
+ return e.M.Spent
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region OutputWithMetadata ///////////////////////////////////////////////////////////////////////////////////////////
+
+// OutputWithMetadata represents an Output with its associated metadata fields that are needed for epoch management.
+type OutputWithMetadata struct {
+ model.Storable[utxo.OutputID, OutputWithMetadata, *OutputWithMetadata, outputWithMetadataModel] `serix:"0"`
+}
+
+type outputWithMetadataModel struct {
+ OutputID utxo.OutputID `serix:"0"`
+ Output utxo.Output `serix:"1"`
+ CreationTime time.Time `serix:"2"`
+ ConsensusManaPledgeID identity.ID `serix:"3"`
+ AccessManaPledgeID identity.ID `serix:"4"`
+}
+
+// String returns a human-readable version of the OutputWithMetadata.
+func (o *OutputWithMetadata) String() string {
+ structBuilder := stringify.StructBuilder("OutputWithMetadata")
+ structBuilder.AddField(stringify.StructField("OutputID", o.ID()))
+ structBuilder.AddField(stringify.StructField("Output", o.Output()))
+ structBuilder.AddField(stringify.StructField("CreationTime", o.CreationTime()))
+ structBuilder.AddField(stringify.StructField("ConsensusPledgeID", o.ConsensusManaPledgeID()))
+ structBuilder.AddField(stringify.StructField("AccessPledgeID", o.AccessManaPledgeID()))
+
+ return structBuilder.String()
+}
+
+// NewOutputWithMetadata returns a new OutputWithMetadata object.
+func NewOutputWithMetadata(outputID utxo.OutputID, output utxo.Output, creationTime time.Time, consensusManaPledgeID, accessManaPledgeID identity.ID) (new *OutputWithMetadata) {
+ new = model.NewStorable[utxo.OutputID, OutputWithMetadata](&outputWithMetadataModel{
+ OutputID: outputID,
+ Output: output,
+ ConsensusManaPledgeID: consensusManaPledgeID,
+ AccessManaPledgeID: accessManaPledgeID,
+ })
+ new.SetID(outputID)
+ return
+}
+
+// FromObjectStorage creates an OutputWithMetadata from sequences of key and bytes.
+func (o *OutputWithMetadata) FromObjectStorage(key, value []byte) error {
+ err := o.Storable.FromObjectStorage(key, value)
+ o.M.Output.SetID(o.ID())
+
+ return err
+}
+
+// FromBytes unmarshals an OutputWithMetadata from a sequence of bytes.
+func (o *OutputWithMetadata) FromBytes(data []byte) error {
+ err := o.Storable.FromBytes(data)
+ o.M.Output.SetID(o.ID())
+
+ return err
+}
+
+// Output returns the Output field.
+func (o *OutputWithMetadata) Output() (output utxo.Output) {
+ o.RLock()
+ defer o.RUnlock()
+
+ return o.M.Output
+}
+
+// SetOutput sets the Output field.
+func (o *OutputWithMetadata) SetOutput(output utxo.Output) {
+ o.Lock()
+ defer o.Unlock()
+
+ o.M.Output = output
+ o.SetModified()
+
+ return
+}
+
+// CreationTime returns the CreationTime field.
+func (o *OutputWithMetadata) CreationTime() (creationTime time.Time) {
+ o.RLock()
+ defer o.RUnlock()
+
+ return o.M.CreationTime
+}
+
+// SetCreationTime sets the CreationTime field.
+func (o *OutputWithMetadata) SetCreationTime(creationTime time.Time) {
+ o.Lock()
+ defer o.Unlock()
+
+ o.M.CreationTime = creationTime
+}
+
+// ConsensusManaPledgeID returns the consensus pledge id of the output.
+func (o *OutputWithMetadata) ConsensusManaPledgeID() (consensuPledgeID identity.ID) {
+ o.RLock()
+ defer o.RUnlock()
+
+ return o.M.ConsensusManaPledgeID
+}
+
+// SetConsensusManaPledgeID sets the consensus pledge id of the output.
+func (o *OutputWithMetadata) SetConsensusManaPledgeID(consensusPledgeID identity.ID) {
+ o.Lock()
+ defer o.Unlock()
+
+ o.M.ConsensusManaPledgeID = consensusPledgeID
+}
+
+// AccessManaPledgeID returns the access pledge id of the output.
+func (o *OutputWithMetadata) AccessManaPledgeID() (consensuPledgeID identity.ID) {
+ o.RLock()
+ defer o.RUnlock()
+
+ return o.M.AccessManaPledgeID
+}
+
+// SetAccessManaPledgeID sets the access pledge id of the output.
+func (o *OutputWithMetadata) SetAccessManaPledgeID(accessPledgeID identity.ID) {
+ o.Lock()
+ defer o.Unlock()
+
+ o.M.AccessManaPledgeID = accessPledgeID
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/ledger/options.go b/packages/ledger/options.go
index 70bc3dacbe..2eaa80477f 100644
--- a/packages/ledger/options.go
+++ b/packages/ledger/options.go
@@ -6,8 +6,8 @@ import (
"github.com/iotaledger/hive.go/kvstore"
"github.com/iotaledger/hive.go/kvstore/mapdb"
- "github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/goshimmer/packages/conflictdag"
+ "github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/goshimmer/packages/ledger/vm"
)
@@ -109,9 +109,9 @@ func WithConsumerCacheTime(consumerCacheTime time.Duration) (option Option) {
// region WithConsumerCacheTime ////////////////////////////////////////////////////////////////////////////////////////
// WithConflictDAGOptions is an Option for the Ledger that allows to configure the options for the ConflictDAG
-func WithConflictDAGOptions(branchDAGOptions ...conflictdag.Option) (option Option) {
+func WithConflictDAGOptions(conflictDAGOptions ...conflictdag.Option) (option Option) {
return func(options *options) {
- options.branchDAGOptions = branchDAGOptions
+ options.conflictDAGOptions = conflictDAGOptions
}
}
@@ -147,8 +147,8 @@ type options struct {
// consumerCacheTime contains the duration that Consumer objects stay cached after they have been released.
consumerCacheTime time.Duration
- // branchDAGOptions contains the options for the ConflictDAG.
- branchDAGOptions []conflictdag.Option
+ // conflictDAGOptions contains the options for the ConflictDAG.
+ conflictDAGOptions []conflictdag.Option
}
// newOptions returns a new options object that corresponds to the handed in options and which is derived from the
diff --git a/packages/ledger/snapshot.go b/packages/ledger/snapshot.go
index 2e842689dc..ae40444ebd 100644
--- a/packages/ledger/snapshot.go
+++ b/packages/ledger/snapshot.go
@@ -3,27 +3,32 @@ package ledger
import (
"github.com/iotaledger/hive.go/stringify"
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/epoch"
)
// Snapshot represents a snapshot of the current ledger state.
type Snapshot struct {
- Outputs *utxo.Outputs `serix:"0"`
- OutputsMetadata *OutputsMetadata `serix:"1"`
+ OutputsWithMetadata []*OutputWithMetadata `serix:"0,lengthPrefixType=uint32"`
+ FullEpochIndex epoch.Index `serix:"1"`
+ DiffEpochIndex epoch.Index `serix:"2"`
+ EpochDiffs map[epoch.Index]*EpochDiff `serix:"3,lengthPrefixType=uint32"`
+ LatestECRecord *epoch.ECRecord `serix:"4"`
}
// NewSnapshot creates a new Snapshot from the given details.
-func NewSnapshot(outputs *utxo.Outputs, outputsMetadata *OutputsMetadata) (new *Snapshot) {
+func NewSnapshot(outputsWithMetadata []*OutputWithMetadata) (new *Snapshot) {
return &Snapshot{
- Outputs: outputs,
- OutputsMetadata: outputsMetadata,
+ OutputsWithMetadata: outputsWithMetadata,
}
}
// String returns a human-readable version of the Snapshot.
func (s *Snapshot) String() (humanReadable string) {
return stringify.Struct("Snapshot",
- stringify.StructField("Outputs", s.Outputs),
- stringify.StructField("OutputsMetadata", s.OutputsMetadata),
+ stringify.StructField("OutputsWithMetadata", s.OutputsWithMetadata),
+ stringify.StructField("FullEpochIndex", s.FullEpochIndex),
+ stringify.StructField("DiffEpochIndex", s.DiffEpochIndex),
+ stringify.StructField("EpochDiffs", s.EpochDiffs),
+ stringify.StructField("LatestECRecord", s.LatestECRecord),
)
}
diff --git a/packages/ledger/testframework.go b/packages/ledger/testframework.go
index 763b3e200f..01c1b8fadc 100644
--- a/packages/ledger/testframework.go
+++ b/packages/ledger/testframework.go
@@ -9,6 +9,7 @@ import (
"sync/atomic"
"testing"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/stretchr/testify/assert"
"github.com/iotaledger/hive.go/generics/event"
@@ -20,7 +21,6 @@ import (
"github.com/iotaledger/hive.go/types"
"github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm"
)
@@ -62,7 +62,7 @@ func NewTestFramework(t *testing.T, options ...Option) (new *TestFramework) {
genesisOutput := NewMockedOutput(utxo.EmptyTransactionID, 0)
genesisOutputMetadata := NewOutputMetadata(genesisOutput.ID())
- genesisOutputMetadata.SetGradeOfFinality(gof.High)
+ genesisOutputMetadata.SetConfirmationState(confirmation.Confirmed)
genesisOutput.ID().RegisterAlias("Genesis")
new.outputIDsByAlias["Genesis"] = genesisOutput.ID()
@@ -105,27 +105,27 @@ func (t *TestFramework) OutputID(alias string) (outputID utxo.OutputID) {
// Panics if an alias doesn't exist.
func (t *TestFramework) TransactionIDs(txAliases ...string) (txIDs utxo.TransactionIDs) {
txIDs = utxo.NewTransactionIDs()
- for _, expectedBranchAlias := range txAliases {
- txIDs.Add(t.Transaction(expectedBranchAlias).ID())
+ for _, expectedConflictAlias := range txAliases {
+ txIDs.Add(t.Transaction(expectedConflictAlias).ID())
}
return txIDs
}
-// BranchIDs gets all conflictdag.BranchIDs given by txAliases.
+// ConflictIDs gets all conflictdag.ConflictIDs given by txAliases.
// Panics if an alias doesn't exist.
-func (t *TestFramework) BranchIDs(txAliases ...string) (branchIDs *set.AdvancedSet[utxo.TransactionID]) {
- branchIDs = set.NewAdvancedSet[utxo.TransactionID]()
- for _, expectedBranchAlias := range txAliases {
- if expectedBranchAlias == "MasterBranch" {
- branchIDs.Add(utxo.TransactionID{})
+func (t *TestFramework) ConflictIDs(txAliases ...string) (conflictIDs *set.AdvancedSet[utxo.TransactionID]) {
+ conflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ for _, expectedConflictAlias := range txAliases {
+ if expectedConflictAlias == "MasterConflict" {
+ conflictIDs.Add(utxo.TransactionID{})
continue
}
- branchIDs.Add(t.Transaction(expectedBranchAlias).ID())
+ conflictIDs.Add(t.Transaction(expectedConflictAlias).ID())
}
- return branchIDs
+ return conflictIDs
}
// CreateTransaction creates a transaction with the given alias and outputCount. Inputs for the transaction are specified
@@ -170,91 +170,91 @@ func (t *TestFramework) MockOutputFromTx(tx *MockedTransaction, outputIndex uint
return utxo.NewOutputID(tx.ID(), outputIndex)
}
-// AssertConflictDAG asserts the structure of the branch DAG as specified in expectedParents.
-// "branch3": {"branch1","branch2"} asserts that "branch3" should have "branch1" and "branch2" as parents.
-// It also verifies the reverse mapping, that there is a child reference (conflictdag.ChildBranch)
-// from "branch1"->"branch3" and "branch2"->"branch3".
+// AssertConflictDAG asserts the structure of the conflict DAG as specified in expectedParents.
+// "conflict3": {"conflict1","conflict2"} asserts that "conflict3" should have "conflict1" and "conflict2" as parents.
+// It also verifies the reverse mapping, that there is a child reference (conflictdag.ChildConflict)
+// from "conflict1"->"conflict3" and "conflict2"->"conflict3".
func (t *TestFramework) AssertConflictDAG(expectedParents map[string][]string) {
// Parent -> child references.
- childBranches := make(map[utxo.TransactionID]*set.AdvancedSet[utxo.TransactionID])
+ childConflicts := make(map[utxo.TransactionID]*set.AdvancedSet[utxo.TransactionID])
- for branchAlias, expectedParentAliases := range expectedParents {
- currentBranchID := t.Transaction(branchAlias).ID()
- expectedBranchIDs := t.BranchIDs(expectedParentAliases...)
+ for conflictAlias, expectedParentAliases := range expectedParents {
+ currentConflictID := t.Transaction(conflictAlias).ID()
+ expectedConflictIDs := t.ConflictIDs(expectedParentAliases...)
// Verify child -> parent references.
- t.ConsumeBranch(currentBranchID, func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- assert.Truef(t.t, expectedBranchIDs.Equal(branch.Parents()), "Conflict(%s): expected parents %s are not equal to actual parents %s", currentBranchID, expectedBranchIDs, branch.Parents())
+ t.ConsumeConflict(currentConflictID, func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ assert.Truef(t.t, expectedConflictIDs.Equal(conflict.Parents()), "Conflict(%s): expected parents %s are not equal to actual parents %s", currentConflictID, expectedConflictIDs, conflict.Parents())
})
- for _, parentBranchID := range expectedBranchIDs.Slice() {
- if _, exists := childBranches[parentBranchID]; !exists {
- childBranches[parentBranchID] = set.NewAdvancedSet[utxo.TransactionID]()
+ for _, parentConflictID := range expectedConflictIDs.Slice() {
+ if _, exists := childConflicts[parentConflictID]; !exists {
+ childConflicts[parentConflictID] = set.NewAdvancedSet[utxo.TransactionID]()
}
- childBranches[parentBranchID].Add(currentBranchID)
+ childConflicts[parentConflictID].Add(currentConflictID)
}
}
// Verify parent -> child references.
- for parentBranchID, childBranchIDs := range childBranches {
- cachedChildBranches := t.ledger.ConflictDAG.Storage.CachedChildBranches(parentBranchID)
- assert.Equalf(t.t, childBranchIDs.Size(), len(cachedChildBranches), "child branches count does not match for parent branch %s, expected=%s, actual=%s", parentBranchID, childBranchIDs, cachedChildBranches.Unwrap())
- cachedChildBranches.Release()
+ for parentConflictID, childConflictIDs := range childConflicts {
+ cachedChildConflicts := t.ledger.ConflictDAG.Storage.CachedChildConflicts(parentConflictID)
+ assert.Equalf(t.t, childConflictIDs.Size(), len(cachedChildConflicts), "child conflicts count does not match for parent conflict %s, expected=%s, actual=%s", parentConflictID, childConflictIDs, cachedChildConflicts.Unwrap())
+ cachedChildConflicts.Release()
- for _, childBranchID := range childBranchIDs.Slice() {
- assert.Truef(t.t, t.ledger.ConflictDAG.Storage.CachedChildBranch(parentBranchID, childBranchID).Consume(func(childBranch *conflictdag.ChildBranch[utxo.TransactionID]) {}), "could not load ChildBranch %s,%s", parentBranchID, childBranchID)
+ for _, childConflictID := range childConflictIDs.Slice() {
+ assert.Truef(t.t, t.ledger.ConflictDAG.Storage.CachedChildConflict(parentConflictID, childConflictID).Consume(func(childConflict *conflictdag.ChildConflict[utxo.TransactionID]) {}), "could not load ChildConflict %s,%s", parentConflictID, childConflictID)
}
}
}
-// AssertConflicts asserts conflict membership from conflictID -> branches but also the reverse mapping branch -> conflictIDs.
+// AssertConflicts asserts conflict membership from conflictID -> conflicts but also the reverse mapping conflict -> conflictIDs.
// expectedConflictAliases should be specified as
-// "output.0": {"branch1", "branch2"}
+// "output.0": {"conflict1", "conflict2"}
func (t *TestFramework) AssertConflicts(expectedConflictsAliases map[string][]string) {
// Conflict -> conflictIDs.
- branchConflicts := make(map[utxo.TransactionID]*set.AdvancedSet[utxo.OutputID])
+ ConflictResources := make(map[utxo.TransactionID]*set.AdvancedSet[utxo.OutputID])
- for outputAlias, expectedConflictMembersAliases := range expectedConflictsAliases {
- conflictID := t.OutputID(outputAlias)
- expectedConflictMembers := t.BranchIDs(expectedConflictMembersAliases...)
+ for resourceAlias, expectedConflictMembersAliases := range expectedConflictsAliases {
+ resourceID := t.OutputID(resourceAlias)
+ expectedConflictMembers := t.ConflictIDs(expectedConflictMembersAliases...)
// Check count of conflict members for this conflictID.
- cachedConflictMembers := t.ledger.ConflictDAG.Storage.CachedConflictMembers(conflictID)
- assert.Equalf(t.t, expectedConflictMembers.Size(), len(cachedConflictMembers), "conflict member count does not match for conflict %s, expected=%s, actual=%s", conflictID, expectedConflictsAliases, cachedConflictMembers.Unwrap())
+ cachedConflictMembers := t.ledger.ConflictDAG.Storage.CachedConflictMembers(resourceID)
+ assert.Equalf(t.t, expectedConflictMembers.Size(), len(cachedConflictMembers), "conflict member count does not match for conflict %s, expected=%s, actual=%s", resourceID, expectedConflictsAliases, cachedConflictMembers.Unwrap())
cachedConflictMembers.Release()
- // Verify that all named branches are stored as conflict members (conflictID -> branchIDs).
- for _, branchID := range expectedConflictMembers.Slice() {
- assert.Truef(t.t, t.ledger.ConflictDAG.Storage.CachedConflictMember(conflictID, branchID).Consume(func(conflictMember *conflictdag.ConflictMember[utxo.OutputID, utxo.TransactionID]) {}), "could not load ConflictMember %s,%s", conflictID, branchID)
+ // Verify that all named conflicts are stored as conflict members (conflictID -> conflictIDs).
+ for _, conflictID := range expectedConflictMembers.Slice() {
+ assert.Truef(t.t, t.ledger.ConflictDAG.Storage.CachedConflictMember(resourceID, conflictID).Consume(func(conflictMember *conflictdag.ConflictMember[utxo.OutputID, utxo.TransactionID]) {}), "could not load ConflictMember %s,%s", resourceID, conflictID)
- if _, exists := branchConflicts[branchID]; !exists {
- branchConflicts[branchID] = set.NewAdvancedSet[utxo.OutputID]()
+ if _, exists := ConflictResources[conflictID]; !exists {
+ ConflictResources[conflictID] = set.NewAdvancedSet[utxo.OutputID]()
}
- branchConflicts[branchID].Add(conflictID)
+ ConflictResources[conflictID].Add(resourceID)
}
}
- // Make sure that all branches have all specified conflictIDs (reverse mapping).
- for branchID, expectedConflicts := range branchConflicts {
- t.ConsumeBranch(branchID, func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- assert.Truef(t.t, expectedConflicts.Equal(branch.ConflictIDs()), "%s: conflicts expected=%s, actual=%s", branchID, expectedConflicts, branch.ConflictIDs())
+ // Make sure that all conflicts have all specified conflictIDs (reverse mapping).
+ for conflictID, expectedConflicts := range ConflictResources {
+ t.ConsumeConflict(conflictID, func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ assert.Truef(t.t, expectedConflicts.Equal(conflict.ConflictSetIDs()), "%s: conflicts expected=%s, actual=%s", conflictID, expectedConflicts, conflict.ConflictSetIDs())
})
}
}
-// AssertBranchIDs asserts that the given transactions and their outputs are booked into the specified branches.
-func (t *TestFramework) AssertBranchIDs(expectedBranches map[string][]string) {
- for txAlias, expectedBranchAliases := range expectedBranches {
+// AssertConflictIDs asserts that the given transactions and their outputs are booked into the specified conflicts.
+func (t *TestFramework) AssertConflictIDs(expectedConflicts map[string][]string) {
+ for txAlias, expectedConflictAliases := range expectedConflicts {
currentTx := t.Transaction(txAlias)
- expectedBranchIDs := t.BranchIDs(expectedBranchAliases...)
+ expectedConflictIDs := t.ConflictIDs(expectedConflictAliases...)
t.ConsumeTransactionMetadata(currentTx.ID(), func(txMetadata *TransactionMetadata) {
- assert.Truef(t.t, expectedBranchIDs.Equal(txMetadata.BranchIDs()), "Transaction(%s): expected %s is not equal to actual %s", txAlias, expectedBranchIDs, txMetadata.BranchIDs())
+ assert.Truef(t.t, expectedConflictIDs.Equal(txMetadata.ConflictIDs()), "Transaction(%s): expected %s is not equal to actual %s", txAlias, expectedConflictIDs, txMetadata.ConflictIDs())
})
t.ConsumeTransactionOutputs(currentTx, func(outputMetadata *OutputMetadata) {
- assert.Truef(t.t, expectedBranchIDs.Equal(outputMetadata.BranchIDs()), "Output(%s): expected %s is not equal to actual %s", outputMetadata.ID(), expectedBranchIDs, outputMetadata.BranchIDs())
+ assert.Truef(t.t, expectedConflictIDs.Equal(outputMetadata.ConflictIDs()), "Output(%s): expected %s is not equal to actual %s", outputMetadata.ID(), expectedConflictIDs, outputMetadata.ConflictIDs())
})
}
}
@@ -291,9 +291,9 @@ func (t *TestFramework) AllBooked(txAliases ...string) (allBooked bool) {
return
}
-// ConsumeBranch loads and consumes conflictdag.Conflict. Asserts that the loaded entity exists.
-func (t *TestFramework) ConsumeBranch(branchID utxo.TransactionID, consumer func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID])) {
- assert.Truef(t.t, t.ledger.ConflictDAG.Storage.CachedConflict(branchID).Consume(consumer), "failed to load branch %s", branchID)
+// ConsumeConflict loads and consumes conflictdag.Conflict. Asserts that the loaded entity exists.
+func (t *TestFramework) ConsumeConflict(conflictID utxo.TransactionID, consumer func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID])) {
+ assert.Truef(t.t, t.ledger.ConflictDAG.Storage.CachedConflict(conflictID).Consume(consumer), "failed to load conflict %s", conflictID)
}
// ConsumeTransactionMetadata loads and consumes TransactionMetadata. Asserts that the loaded entity exists.
diff --git a/packages/ledger/utils.go b/packages/ledger/utils.go
index 12608f9eda..9841353900 100644
--- a/packages/ledger/utils.go
+++ b/packages/ledger/utils.go
@@ -6,9 +6,9 @@ import (
"github.com/iotaledger/hive.go/generics/lo"
"github.com/iotaledger/hive.go/generics/set"
"github.com/iotaledger/hive.go/generics/walker"
+ "github.com/iotaledger/hive.go/types/confirmation"
"github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
@@ -25,18 +25,18 @@ func newUtils(ledger *Ledger) (new *Utils) {
}
}
-func (u *Utils) BranchIDsInFutureCone(branchIDs utxo.TransactionIDs) (branchIDsInFutureCone utxo.TransactionIDs) {
- branchIDsInFutureCone = utxo.NewTransactionIDs()
+func (u *Utils) ConflictIDsInFutureCone(conflictIDs utxo.TransactionIDs) (conflictIDsInFutureCone utxo.TransactionIDs) {
+ conflictIDsInFutureCone = utxo.NewTransactionIDs()
- for branchIDWalker := branchIDs.Iterator(); branchIDWalker.HasNext(); {
- branchID := branchIDWalker.Next()
+ for conflictIDWalker := conflictIDs.Iterator(); conflictIDWalker.HasNext(); {
+ conflictID := conflictIDWalker.Next()
- branchIDsInFutureCone.Add(branchID)
+ conflictIDsInFutureCone.Add(conflictID)
- if u.ledger.ConflictDAG.InclusionState(set.NewAdvancedSet(branchID)) == conflictdag.Confirmed {
- u.ledger.Storage.CachedTransactionMetadata(branchID).Consume(func(txMetadata *TransactionMetadata) {
+ if u.ledger.ConflictDAG.ConfirmationState(set.NewAdvancedSet(conflictID)).IsAccepted() {
+ u.ledger.Storage.CachedTransactionMetadata(conflictID).Consume(func(txMetadata *TransactionMetadata) {
u.WalkConsumingTransactionMetadata(txMetadata.OutputIDs(), func(txMetadata *TransactionMetadata, walker *walker.Walker[utxo.OutputID]) {
- branchIDsInFutureCone.AddAll(txMetadata.BranchIDs())
+ conflictIDsInFutureCone.AddAll(txMetadata.ConflictIDs())
walker.PushAll(txMetadata.OutputIDs().Slice()...)
})
@@ -44,12 +44,12 @@ func (u *Utils) BranchIDsInFutureCone(branchIDs utxo.TransactionIDs) (branchIDsI
continue
}
- u.ledger.ConflictDAG.Utils.ForEachChildBranchID(branchID, func(childBranchID utxo.TransactionID) {
- branchIDWalker.Push(childBranchID)
+ u.ledger.ConflictDAG.Utils.ForEachChildConflictID(conflictID, func(childConflictID utxo.TransactionID) {
+ conflictIDWalker.Push(childConflictID)
})
}
- return branchIDsInFutureCone
+ return conflictIDsInFutureCone
}
// ResolveInputs returns the OutputIDs that were referenced by the given Inputs.
@@ -112,16 +112,16 @@ func (u *Utils) WithTransactionAndMetadata(txID utxo.TransactionID, callback fun
})
}
-// TransactionBranchIDs returns the BranchIDs of the given TransactionID.
-func (u *Utils) TransactionBranchIDs(txID utxo.TransactionID) (branchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- branchIDs = set.NewAdvancedSet[utxo.TransactionID]()
+// TransactionConflictIDs returns the ConflictIDs of the given TransactionID.
+func (u *Utils) TransactionConflictIDs(txID utxo.TransactionID) (conflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ conflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
if !u.ledger.Storage.CachedTransactionMetadata(txID).Consume(func(metadata *TransactionMetadata) {
- branchIDs = metadata.BranchIDs()
+ conflictIDs = metadata.ConflictIDs()
}) {
return nil, errors.Errorf("failed to load TransactionMetadata with %s: %w", txID, cerrors.ErrFatal)
}
- return branchIDs, nil
+ return conflictIDs, nil
}
func (u *Utils) ReferencedTransactions(tx utxo.Transaction) (transactionIDs utxo.TransactionIDs) {
@@ -136,8 +136,8 @@ func (u *Utils) ReferencedTransactions(tx utxo.Transaction) (transactionIDs utxo
func (u *Utils) ConflictingTransactions(transactionID utxo.TransactionID) (conflictingTransactions utxo.TransactionIDs) {
conflictingTransactions = utxo.NewTransactionIDs()
- u.ledger.ConflictDAG.Storage.CachedConflict(transactionID).Consume(func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- for it := branch.ConflictIDs().Iterator(); it.HasNext(); {
+ u.ledger.ConflictDAG.Storage.CachedConflict(transactionID).Consume(func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ for it := conflict.ConflictSetIDs().Iterator(); it.HasNext(); {
u.ledger.ConflictDAG.Storage.CachedConflictMembers(it.Next()).Consume(func(conflictMember *conflictdag.ConflictMember[utxo.OutputID, utxo.TransactionID]) {
if conflictMember.ConflictID() == transactionID {
return
@@ -151,27 +151,18 @@ func (u *Utils) ConflictingTransactions(transactionID utxo.TransactionID) (confl
return
}
-// TransactionGradeOfFinality returns the GradeOfFinality of the Transaction with the given TransactionID.
-func (u *Utils) TransactionGradeOfFinality(txID utxo.TransactionID) (gradeOfFinality gof.GradeOfFinality, err error) {
- if !u.ledger.Storage.CachedTransactionMetadata(txID).Consume(func(txMetadata *TransactionMetadata) {
- gradeOfFinality = txMetadata.GradeOfFinality()
- }) {
- return gof.None, errors.Errorf("failed to load TransactionMetadata with %s: %w", txID, cerrors.ErrFatal)
- }
-
+// TransactionConfirmationState returns the ConfirmationState of the Transaction with the given TransactionID.
+func (u *Utils) TransactionConfirmationState(txID utxo.TransactionID) (confirmationState confirmation.State) {
+ u.ledger.Storage.CachedTransactionMetadata(txID).Consume(func(txMetadata *TransactionMetadata) {
+ confirmationState = txMetadata.ConfirmationState()
+ })
return
}
-// BranchGradeOfFinality returns the GradeOfFinality of the Conflict with the given BranchID.
-func (u *Utils) BranchGradeOfFinality(branchID utxo.TransactionID) (gradeOfFinality gof.GradeOfFinality, err error) {
- if branchID == utxo.EmptyTransactionID {
- return gof.High, nil
- }
-
- branchGof, gofErr := u.TransactionGradeOfFinality(utxo.TransactionID{branchID.Identifier})
- if gofErr != nil {
- return gof.None, errors.Errorf("failed to retrieve GoF of branch %s: %w", branchID, err)
- }
-
- return branchGof, nil
+// OutputConfirmationState returns the ConfirmationState of the Output.
+func (u *Utils) OutputConfirmationState(outputID utxo.OutputID) (confirmationState confirmation.State) {
+ u.ledger.Storage.CachedOutputMetadata(outputID).Consume(func(outputMetadata *OutputMetadata) {
+ confirmationState = outputMetadata.ConfirmationState()
+ })
+ return
}
diff --git a/packages/ledger/utxo/types.go b/packages/ledger/utxo/types.go
index 07a9b6ce01..8e5fd7676c 100644
--- a/packages/ledger/utxo/types.go
+++ b/packages/ledger/utxo/types.go
@@ -58,7 +58,7 @@ type TransactionIDs = *set.AdvancedSet[TransactionID]
// NewTransactionIDs returns a new TransactionID collection with the given elements.
func NewTransactionIDs(ids ...TransactionID) (newTransactionIDs TransactionIDs) {
- return set.NewAdvancedSet[TransactionID](ids...)
+ return set.NewAdvancedSet(ids...)
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -101,6 +101,14 @@ func (o *OutputID) FromRandomness() (err error) {
return nil
}
+// FromBytes un-serializes an OutputID from a []byte.
+func (o *OutputID) FromBytes(outputBytes []byte) (err error) {
+ if _, err := serix.DefaultAPI.Decode(context.Background(), outputBytes, o, serix.WithValidation()); err != nil {
+ return errors.Errorf("Fail to parse outputID from bytes: %w", err)
+ }
+ return nil
+}
+
// RegisterAlias allows to register a human-readable alias for the OutputID which will be used as a replacement for the
// String method.
func (o OutputID) RegisterAlias(alias string) {
@@ -175,7 +183,7 @@ type OutputIDs = *set.AdvancedSet[OutputID]
// NewOutputIDs returns a new OutputID collection with the given elements.
func NewOutputIDs(ids ...OutputID) (newOutputIDs OutputIDs) {
- return set.NewAdvancedSet[OutputID](ids...)
+ return set.NewAdvancedSet(ids...)
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/ledger/vm/devnetvm/errors.go b/packages/ledger/vm/devnetvm/errors.go
index 0baaaa62f5..fe91461226 100644
--- a/packages/ledger/vm/devnetvm/errors.go
+++ b/packages/ledger/vm/devnetvm/errors.go
@@ -4,7 +4,5 @@ import (
"github.com/cockroachdb/errors"
)
-var (
- // ErrTransactionInvalid is returned if a Transaction or any of its building blocks is considered to be invalid.
- ErrTransactionInvalid = errors.New("transaction invalid")
-)
+// ErrTransactionInvalid is returned if a Transaction or any of its building blocks is considered to be invalid.
+var ErrTransactionInvalid = errors.New("transaction invalid")
diff --git a/packages/ledger/vm/devnetvm/indexer/indexer.go b/packages/ledger/vm/devnetvm/indexer/indexer.go
index 0cc552ffc3..7c774330f5 100644
--- a/packages/ledger/vm/devnetvm/indexer/indexer.go
+++ b/packages/ledger/vm/devnetvm/indexer/indexer.go
@@ -43,7 +43,7 @@ func New(ledger *ledger.Ledger, options ...Option) (new *Indexer) {
)
ledger.Events.TransactionBooked.Attach(event.NewClosure(new.onTransactionBooked))
- ledger.Events.TransactionConfirmed.Attach(event.NewClosure(new.onTransactionConfirmed))
+ ledger.Events.TransactionAccepted.Attach(event.NewClosure(new.onTransactionAccepted))
ledger.Events.TransactionRejected.Attach(event.NewClosure(new.onTransactionRejected))
return new
@@ -61,7 +61,7 @@ func (i *Indexer) StoreAddressOutputMapping(address devnetvm.Address, outputID u
}
}
-// StoreAddressOutputMapping stores the address-output mapping.
+// RemoveAddressOutputMapping removes the address-output mapping.
func (i *Indexer) RemoveAddressOutputMapping(address devnetvm.Address, outputID utxo.OutputID) {
i.addressOutputMappingStorage.Delete(NewAddressOutputMapping(address, outputID).ObjectStorageKey())
}
@@ -94,7 +94,7 @@ func (i *Indexer) Shutdown() {
i.addressOutputMappingStorage.Shutdown()
}
-// onTransactionBooked adds Transaction outputs' to the indexer upon booking.
+// onTransactionBooked adds Transaction outputs to the indexer upon booking.
func (i *Indexer) onTransactionBooked(event *ledger.TransactionBookedEvent) {
_ = event.Outputs.ForEach(func(output utxo.Output) error {
i.IndexOutput(output.(devnetvm.Output))
@@ -102,14 +102,14 @@ func (i *Indexer) onTransactionBooked(event *ledger.TransactionBookedEvent) {
})
}
-// onTransactionBooked removes Transaction inputs' from the indexer upon transaction confirmation.
-func (i *Indexer) onTransactionConfirmed(event *ledger.TransactionConfirmedEvent) {
+// onTransactionAccepted removes Transaction inputs from the indexer upon transaction acceptance.
+func (i *Indexer) onTransactionAccepted(event *ledger.TransactionAcceptedEvent) {
i.ledger.Storage.CachedTransaction(event.TransactionID).Consume(func(tx utxo.Transaction) {
i.removeOutputs(i.ledger.Utils.ResolveInputs(tx.Inputs()))
})
}
-// onTransactionRejected removes Transaction outputs' from the indexer upon transaction rejection.
+// onTransactionRejected removes Transaction outputs from the indexer upon transaction rejection.
func (i *Indexer) onTransactionRejected(event *ledger.TransactionRejectedEvent) {
i.ledger.Storage.CachedTransactionMetadata(event.TransactionID).Consume(func(tm *ledger.TransactionMetadata) {
i.removeOutputs(tm.OutputIDs())
diff --git a/packages/ledger/vm/devnetvm/input.go b/packages/ledger/vm/devnetvm/input.go
index 6877eb09ac..1c8154b68e 100644
--- a/packages/ledger/vm/devnetvm/input.go
+++ b/packages/ledger/vm/devnetvm/input.go
@@ -133,7 +133,7 @@ func (i Inputs) Clone() (clonedInputs Inputs) {
return
}
-// String returns a human readable version of the Inputs.
+// String returns a human-readable version of the Inputs.
func (i Inputs) String() string {
structBuilder := stringify.StructBuilder("Inputs")
for i, input := range i {
diff --git a/packages/libp2putil/io.go b/packages/libp2putil/io.go
index 82710ee0a4..8d4a027666 100644
--- a/packages/libp2putil/io.go
+++ b/packages/libp2putil/io.go
@@ -11,7 +11,7 @@ import (
"github.com/iotaledger/goshimmer/packages/tangle"
)
-// UvarintWriter writes protobuf messages.
+// UvarintWriter writes protobuf blocks.
type UvarintWriter struct {
w io.Writer
}
@@ -21,11 +21,11 @@ func NewDelimitedWriter(w io.Writer) *UvarintWriter {
return &UvarintWriter{w}
}
-// WriteMsg writes protobuf message.
-func (uw *UvarintWriter) WriteMsg(msg proto.Message) (err error) {
+// WriteBlk writes protobuf block.
+func (uw *UvarintWriter) WriteBlk(blk proto.Message) (err error) {
var data []byte
lenBuf := make([]byte, varint.MaxLenUvarint63)
- data, err = proto.Marshal(msg)
+ data, err = proto.Marshal(blk)
if err != nil {
return err
}
@@ -39,7 +39,7 @@ func (uw *UvarintWriter) WriteMsg(msg proto.Message) (err error) {
return err
}
-// UvarintReader read protobuf messages.
+// UvarintReader read protobuf blocks.
type UvarintReader struct {
r *bufio.Reader
}
@@ -49,18 +49,18 @@ func NewDelimitedReader(r io.Reader) *UvarintReader {
return &UvarintReader{r: bufio.NewReader(r)}
}
-// ReadMsg read protobuf messages.
-func (ur *UvarintReader) ReadMsg(msg proto.Message) error {
+// ReadBlk read protobuf blocks.
+func (ur *UvarintReader) ReadBlk(blk proto.Message) error {
length64, err := varint.ReadUvarint(ur.r)
if err != nil {
return err
}
- if length64 > tangle.MaxMessageSize {
- return fmt.Errorf("max message size exceeded: %d", length64)
+ if length64 > tangle.MaxBlockSize {
+ return fmt.Errorf("max block size exceeded: %d", length64)
}
buf := make([]byte, length64)
if _, err := io.ReadFull(ur.r, buf); err != nil {
return err
}
- return proto.Unmarshal(buf, msg)
+ return proto.Unmarshal(buf, blk)
}
diff --git a/packages/mana/base.go b/packages/mana/base.go
index ae2687edee..97bd2243ad 100644
--- a/packages/mana/base.go
+++ b/packages/mana/base.go
@@ -9,7 +9,7 @@ import (
// BaseMana is an interface for a collection of base mana values of a single node.
type BaseMana interface {
revoke(float64) error
- pledge(*TxInfo) float64
+ pledge(float64)
BaseValue() float64
}
diff --git a/packages/mana/basevector.go b/packages/mana/basevector.go
index 2aa3fc240c..4c3732751b 100644
--- a/packages/mana/basevector.go
+++ b/packages/mana/basevector.go
@@ -3,6 +3,8 @@ package mana
import (
"time"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+
"github.com/iotaledger/hive.go/generics/model"
"github.com/iotaledger/hive.go/identity"
)
@@ -13,12 +15,14 @@ type BaseManaVector interface {
Type() Type
// Size returns the size of the base mana vector.
Size() int
- // Has tells if a certain node is present in the base mana vactor.
+ // Has tells if a certain node is present in the base mana vector.
Has(identity.ID) bool
- // LoadSnapshot loads the initial mana state into the base mana vector.
- LoadSnapshot(map[identity.ID]*SnapshotNode)
+ // InitializeWithData loads the initial mana state into the base mana vector.
+ InitializeWithData(map[identity.ID]float64)
// Book books mana into the base mana vector.
Book(*TxInfo)
+ // BookEpoch books all outputs created and spent in an epoch.
+ BookEpoch(created []*ledger.OutputWithMetadata, spent []*ledger.OutputWithMetadata)
// GetMana returns the mana value of a node with default weights.
GetMana(identity.ID) (float64, time.Time, error)
// GetManaMap returns the map derived from the vector.
@@ -40,6 +44,9 @@ type BaseManaVector interface {
}
// NewBaseManaVector creates and returns a new base mana vector for the specified type.
-func NewBaseManaVector() BaseManaVector {
- return model.NewMutable[ManaBaseVector](&manaBaseVectorModel{Vector: make(map[identity.ID]*ManaBase)})
+func NewBaseManaVector(manaType Type) BaseManaVector {
+ return model.NewMutable[ManaBaseVector](&manaBaseVectorModel{
+ Type: manaType,
+ Vector: make(map[identity.ID]*ManaBase),
+ })
}
diff --git a/packages/mana/manabase.go b/packages/mana/manabase.go
index 4c03fe2699..518275d7fc 100644
--- a/packages/mana/manabase.go
+++ b/packages/mana/manabase.go
@@ -27,12 +27,10 @@ func (m *ManaBase) revoke(amount float64) error {
return nil
}
-func (m *ManaBase) pledge(tx *TxInfo) (pledged float64) {
+func (m *ManaBase) pledge(pledgedAmount float64) {
m.Lock()
defer m.Unlock()
- pledged = tx.sumInputs()
- m.M.Value += pledged
- return pledged
+ m.M.Value += pledgedAmount
}
// BaseValue returns the base mana value (BM1).
diff --git a/packages/mana/manabase_test.go b/packages/mana/manabase_test.go
index b15354f1d9..e1d9580e25 100644
--- a/packages/mana/manabase_test.go
+++ b/packages/mana/manabase_test.go
@@ -35,28 +35,22 @@ func TestPledgeAndUpdateRegularOldFunds_Consensus(t *testing.T) {
PledgeID: map[Type]identity.ID{}, // don't care
InputInfos: []InputInfo{
{
- // funds have been sitting here for couple days...
- TimeStamp: _baseTime.Add(time.Hour * -200),
- Amount: 5.0,
- PledgeID: map[Type]identity.ID{}, // don't care
+ Amount: 5.0,
+ PledgeID: map[Type]identity.ID{}, // don't care
},
{
- // funds have been sitting here for couple days...
- TimeStamp: _baseTime.Add(time.Hour * -200),
- Amount: 3.0,
- PledgeID: map[Type]identity.ID{}, // don't care
+ Amount: 3.0,
+ PledgeID: map[Type]identity.ID{}, // don't care
},
{
- // funds have been sitting here for couple days...
- TimeStamp: _baseTime.Add(time.Hour * -200),
- Amount: 2.0,
- PledgeID: map[Type]identity.ID{}, // don't care
+ Amount: 2.0,
+ PledgeID: map[Type]identity.ID{}, // don't care
},
},
}
- pledged := bm.pledge(_txInfo)
+ bm.pledge(_txInfo.sumInputs())
- assert.Equal(t, 10.0, pledged)
+ assert.Equal(t, 10.0, _txInfo.sumInputs())
assert.Equal(t, 11.0, bm.BaseValue())
}
diff --git a/packages/mana/manabasevector.go b/packages/mana/manabasevector.go
index 8639460b12..e998076505 100644
--- a/packages/mana/manabasevector.go
+++ b/packages/mana/manabasevector.go
@@ -6,6 +6,9 @@ import (
"sort"
"time"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+
"github.com/cockroachdb/errors"
"github.com/iotaledger/hive.go/generics/model"
"github.com/iotaledger/hive.go/identity"
@@ -17,17 +20,20 @@ type ManaBaseVector struct {
}
type manaBaseVectorModel struct {
- Vector map[identity.ID]*ManaBase `serix:"0"`
+ Type Type `serix:"0"`
+ Vector map[identity.ID]*ManaBase `serix:"1"`
}
-// Vector returns the ConsensusBaseMana vector.
+// Vector returns the ManaBase vector.
func (m *ManaBaseVector) Vector() map[identity.ID]*ManaBase {
+ m.RLock()
+ defer m.RUnlock()
return m.M.Vector
}
// Type returns the type of this mana vector.
func (m *ManaBaseVector) Type() Type {
- return ConsensusMana
+ return m.M.Type
}
// Size returns the size of this mana vector.
@@ -79,46 +85,11 @@ func (m *ManaBaseVector) Has(nodeID identity.ID) bool {
// return nil
// }
-func txInfoFromPledgeEvent(ev *PledgedEvent) *TxInfo {
- return &TxInfo{
- TimeStamp: ev.Time,
- TransactionID: ev.TransactionID,
- TotalBalance: ev.Amount,
- PledgeID: map[Type]identity.ID{
- ConsensusMana: ev.NodeID,
- },
- InputInfos: []InputInfo{
- {
- TimeStamp: ev.Time,
- Amount: ev.Amount,
- PledgeID: map[Type]identity.ID{
- ConsensusMana: ev.NodeID,
- },
- },
- },
- }
-}
-
-// LoadSnapshot loads the snapshot.
-func (m *ManaBaseVector) LoadSnapshot(snapshot map[identity.ID]*SnapshotNode) {
+// InitializeWithData initializes the mana vector data.
+func (m *ManaBaseVector) InitializeWithData(dataByNode map[identity.ID]float64) {
m.Lock()
defer m.Unlock()
-
- for nodeID, records := range snapshot {
- var value float64
- for _, record := range records.SortedTxSnapshot {
- value += record.Value
-
- // trigger event
- Events.Pledged.Trigger(&PledgedEvent{
- NodeID: nodeID,
- Amount: record.Value,
- Time: record.Timestamp,
- ManaType: m.Type(),
- TransactionID: record.TxID,
- })
- }
-
+ for nodeID, value := range dataByNode {
m.M.Vector[nodeID] = NewManaBase(value)
}
}
@@ -137,35 +108,30 @@ func (m *ManaBaseVector) Book(txInfo *TxInfo) {
for _, inputInfo := range txInfo.InputInfos {
// which node did the input pledge mana to?
oldPledgeNodeID := inputInfo.PledgeID[m.Type()]
- if _, exist := m.M.Vector[oldPledgeNodeID]; !exist {
- // first time we see this node
- m.M.Vector[oldPledgeNodeID] = &ManaBase{}
- m.M.Vector[oldPledgeNodeID].Init()
- }
- // save old mana
- oldMana := *m.M.Vector[oldPledgeNodeID]
- // revoke BM1
- err := m.M.Vector[oldPledgeNodeID].revoke(inputInfo.Amount)
- if errors.Is(err, ErrBaseManaNegative) {
- panic(fmt.Sprintf("Revoking %f base mana 1 from node %s results in negative balance", inputInfo.Amount, oldPledgeNodeID.String()))
- }
+ oldMana := m.getOldManaAndRevoke(oldPledgeNodeID, inputInfo.Amount)
// save events for later triggering
- revokeEvents = append(revokeEvents, &RevokedEvent{oldPledgeNodeID, inputInfo.Amount, txInfo.TimeStamp, m.Type(), txInfo.TransactionID, inputInfo.InputID})
- updateEvents = append(updateEvents, &UpdatedEvent{oldPledgeNodeID, &oldMana, m.M.Vector[oldPledgeNodeID], m.Type()})
+ revokeEvents = append(revokeEvents, &RevokedEvent{
+ NodeID: oldPledgeNodeID,
+ Amount: inputInfo.Amount,
+ Time: txInfo.TimeStamp,
+ ManaType: m.Type(),
+ TransactionID: txInfo.TransactionID,
+ InputID: inputInfo.InputID,
+ })
+ updateEvents = append(updateEvents, &UpdatedEvent{
+ NodeID: oldPledgeNodeID,
+ OldMana: &oldMana,
+ NewMana: m.M.Vector[oldPledgeNodeID],
+ ManaType: m.Type(),
+ })
}
// second, pledge mana to new nodes
newPledgeNodeID := txInfo.PledgeID[m.Type()]
- if _, exist := m.M.Vector[newPledgeNodeID]; !exist {
- // first time we see this node
- m.M.Vector[newPledgeNodeID] = NewManaBase(0)
- }
- // save it for proper event trigger
- oldMana := *m.M.Vector[newPledgeNodeID]
- // actually pledge and update
- pledged := m.M.Vector[newPledgeNodeID].pledge(txInfo)
+ oldMana := m.getOldManaAndPledge(newPledgeNodeID, txInfo.TotalBalance)
+
pledgeEvents = append(pledgeEvents, &PledgedEvent{
NodeID: newPledgeNodeID,
- Amount: pledged,
+ Amount: txInfo.sumInputs(),
Time: txInfo.TimeStamp,
ManaType: m.Type(),
TransactionID: txInfo.TransactionID,
@@ -178,6 +144,10 @@ func (m *ManaBaseVector) Book(txInfo *TxInfo) {
})
}()
+ m.triggerManaEvents(revokeEvents, pledgeEvents, updateEvents)
+}
+
+func (m *ManaBaseVector) triggerManaEvents(revokeEvents []*RevokedEvent, pledgeEvents []*PledgedEvent, updateEvents []*UpdatedEvent) {
// trigger the events once we released the lock on the mana vector
for _, ev := range revokeEvents {
Events.Revoked.Trigger(ev)
@@ -190,12 +160,110 @@ func (m *ManaBaseVector) Book(txInfo *TxInfo) {
}
}
+// BookEpoch takes care of the booking of consensus mana for the given committed epoch.
+func (m *ManaBaseVector) BookEpoch(created []*ledger.OutputWithMetadata, spent []*ledger.OutputWithMetadata) {
+ var revokeEvents []*RevokedEvent
+ var pledgeEvents []*PledgedEvent
+ var updateEvents []*UpdatedEvent
+ // only lock mana vector while we are working with it
+ func() {
+ m.Lock()
+ defer m.Unlock()
+
+ // first, revoke mana from previous owners
+ for _, output := range spent {
+ idToRevoke := m.getIDBasedOnManaType(output)
+ outputIOTAs, exists := output.Output().(devnetvm.Output).Balances().Get(devnetvm.ColorIOTA)
+ if !exists {
+ continue
+ }
+ oldMana := m.getOldManaAndRevoke(idToRevoke, float64(outputIOTAs))
+
+ // save events for later triggering
+ revokeEvents = append(revokeEvents, &RevokedEvent{
+ NodeID: idToRevoke,
+ Amount: float64(outputIOTAs),
+ Time: output.CreationTime(),
+ ManaType: m.Type(),
+ TransactionID: output.ID().TransactionID,
+ InputID: output.ID(),
+ })
+ updateEvents = append(updateEvents, &UpdatedEvent{
+ NodeID: idToRevoke,
+ OldMana: &oldMana,
+ NewMana: m.M.Vector[idToRevoke],
+ ManaType: m.Type(),
+ })
+ }
+ // second, pledge mana to new nodes
+ for _, output := range created {
+ idToPledge := m.getIDBasedOnManaType(output)
+
+ outputIOTAs, exists := output.Output().(devnetvm.Output).Balances().Get(devnetvm.ColorIOTA)
+ if !exists {
+ continue
+ }
+ oldMana := m.getOldManaAndPledge(idToPledge, float64(outputIOTAs))
+ pledgeEvents = append(pledgeEvents, &PledgedEvent{
+ NodeID: idToPledge,
+ Amount: float64(outputIOTAs),
+ Time: output.CreationTime(),
+ ManaType: m.Type(),
+ TransactionID: output.Output().ID().TransactionID,
+ })
+
+ updateEvents = append(updateEvents, &UpdatedEvent{
+ NodeID: idToPledge,
+ OldMana: &oldMana,
+ NewMana: m.M.Vector[idToPledge],
+ ManaType: m.Type(),
+ })
+ }
+ }()
+ m.triggerManaEvents(revokeEvents, pledgeEvents, updateEvents)
+}
+
+func (m *ManaBaseVector) getIDBasedOnManaType(output *ledger.OutputWithMetadata) (pledgeID identity.ID) {
+ if m.Type() == ConsensusMana {
+ return output.ConsensusManaPledgeID()
+ }
+ return output.AccessManaPledgeID()
+}
+
+func (m *ManaBaseVector) getOldManaAndRevoke(oldPledgeNodeID identity.ID, amount float64) (oldMana ManaBase) {
+ if _, exist := m.M.Vector[oldPledgeNodeID]; !exist {
+ // first time we see this node
+ m.M.Vector[oldPledgeNodeID] = NewManaBase(0)
+ }
+ // save old mana
+ oldMana = *m.M.Vector[oldPledgeNodeID]
+ // revoke BM1
+ err := m.M.Vector[oldPledgeNodeID].revoke(amount)
+ if errors.Is(err, ErrBaseManaNegative) {
+ panic(fmt.Sprintf("Revoking %f base mana 1 from node %s results in negative balance", amount, oldPledgeNodeID.String()))
+ }
+ return
+}
+
+func (m *ManaBaseVector) getOldManaAndPledge(newPledgeNodeID identity.ID, totalBalance float64) (oldMana ManaBase) {
+ if _, exist := m.M.Vector[newPledgeNodeID]; !exist {
+ // first time we see this node
+ m.M.Vector[newPledgeNodeID] = NewManaBase(0)
+ }
+ // save it for proper event trigger
+ oldMana = *m.M.Vector[newPledgeNodeID]
+ // actually pledge and update
+ m.M.Vector[newPledgeNodeID].pledge(totalBalance)
+ return
+}
+
// GetMana returns the Effective Base Mana.
-func (m *ManaBaseVector) GetMana(nodeID identity.ID) (float64, time.Time, error) {
+func (m *ManaBaseVector) GetMana(nodeID identity.ID) (manaAmount float64, t time.Time, err error) {
m.Lock()
defer m.Unlock()
- mana, err := m.getMana(nodeID)
- return mana, time.Now(), err
+ manaAmount, err = m.getMana(nodeID)
+ t = time.Now()
+ return manaAmount, t, err
}
// GetManaMap returns mana perception of the node.
@@ -210,7 +278,7 @@ func (m *ManaBaseVector) GetManaMap() (res NodeMap, t time.Time, err error) {
return
}
-// GetHighestManaNodes return the n highest mana nodes in descending order.
+// GetHighestManaNodes return the n-highest mana nodes in descending order.
// It also updates the mana values for each node.
// If n is zero, it returns all nodes.
func (m *ManaBaseVector) GetHighestManaNodes(n uint) (res []Node, t time.Time, err error) {
@@ -331,12 +399,8 @@ func (m *ManaBaseVector) ToPersistables() []*PersistableBaseMana {
return result
}
-// FromPersistable fills the ConsensusBaseManaVector from persistable mana objects.
+// FromPersistable fills the BaseManaVector from persistable mana objects.
func (m *ManaBaseVector) FromPersistable(p *PersistableBaseMana) (err error) {
- if p.ManaType() != ConsensusMana {
- err = errors.Errorf("persistable mana object has type %s instead of %s", p.ManaType().String(), ConsensusMana.String())
- return
- }
if len(p.BaseValues()) != 1 {
err = errors.Errorf("persistable mana object has %d base values instead of 1", len(p.BaseValues()))
return
diff --git a/packages/mana/manabasevector_test.go b/packages/mana/manabasevector_test.go
index 5e736f1c1b..0a561716af 100644
--- a/packages/mana/manabasevector_test.go
+++ b/packages/mana/manabasevector_test.go
@@ -1,9 +1,16 @@
package mana
import (
+ "fmt"
"testing"
"time"
+ "github.com/iotaledger/goshimmer/client/wallet/packages/seed"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+ "github.com/iotaledger/hive.go/types"
+ "github.com/stretchr/testify/require"
+
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/hive.go/generics/event"
"github.com/iotaledger/hive.go/identity"
@@ -12,7 +19,6 @@ import (
var (
baseTime = time.Now()
- inputTime = baseTime.Add(time.Hour * -200)
txTime = baseTime.Add(time.Hour * 6)
txPledgeID = randNodeID()
inputPledgeID1 = randNodeID()
@@ -40,9 +46,7 @@ var (
},
InputInfos: []InputInfo{
{
- // funds have been sitting here for couple days...
- TimeStamp: inputTime,
- Amount: beforeBookingAmount[inputPledgeID1],
+ Amount: beforeBookingAmount[inputPledgeID1],
PledgeID: map[Type]identity.ID{
AccessMana: inputPledgeID1,
ConsensusMana: inputPledgeID1,
@@ -50,9 +54,7 @@ var (
InputID: utxo.NewOutputID(randomTxID(), 0),
},
{
- // funds have been sitting here for couple days...
- TimeStamp: inputTime,
- Amount: beforeBookingAmount[inputPledgeID2],
+ Amount: beforeBookingAmount[inputPledgeID2],
PledgeID: map[Type]identity.ID{
AccessMana: inputPledgeID2,
ConsensusMana: inputPledgeID2,
@@ -60,9 +62,7 @@ var (
InputID: utxo.NewOutputID(randomTxID(), 0),
},
{
- // funds have been sitting here for couple days...
- TimeStamp: inputTime,
- Amount: beforeBookingAmount[inputPledgeID3],
+ Amount: beforeBookingAmount[inputPledgeID3],
PledgeID: map[Type]identity.ID{
AccessMana: inputPledgeID3,
ConsensusMana: inputPledgeID3,
@@ -71,26 +71,56 @@ var (
},
},
}
+ epochCreatedBalances = []uint64{1, 1, 2, 2, 1}
+ epochSpentBalances = []uint64{2, 2, 2, 1}
+ epochCreatedPledgeIDs = []identity.ID{inputPledgeID1, inputPledgeID2, inputPledgeID2, inputPledgeID3, inputPledgeID3}
+ epochSpentPledgeIDs = []identity.ID{inputPledgeID1, inputPledgeID1, inputPledgeID2, inputPledgeID3}
+ afterBookingEpochAmount = map[identity.ID]float64{
+ inputPledgeID1: 2.0,
+ inputPledgeID2: 4.0,
+ inputPledgeID3: 4.0,
+ }
)
func randNodeID() identity.ID {
return identity.GenerateIdentity().ID()
}
+func prepareEpochDiffs() (created []*ledger.OutputWithMetadata, spent []*ledger.OutputWithMetadata) {
+ for i, amount := range epochCreatedBalances {
+ outWithMeta := createOutputWithMetadata(amount, epochCreatedPledgeIDs[i])
+ created = append(created, outWithMeta)
+ }
+ for i, amount := range epochSpentBalances {
+ outWithMeta := createOutputWithMetadata(amount, epochSpentPledgeIDs[i])
+ spent = append(spent, outWithMeta)
+ }
+
+ return
+}
+
+func createOutputWithMetadata(amount uint64, createdPledgeID identity.ID) *ledger.OutputWithMetadata {
+ now := time.Now()
+ addr := seed.NewSeed().Address(0).Address()
+ out := devnetvm.NewSigLockedSingleOutput(amount, addr)
+ outWithMeta := ledger.NewOutputWithMetadata(out.ID(), out, now, createdPledgeID, createdPledgeID)
+ return outWithMeta
+}
+
func TestNewBaseManaVector_Consensus(t *testing.T) {
- bmvCons := NewBaseManaVector()
+ bmvCons := NewBaseManaVector(ConsensusMana)
assert.Equal(t, ConsensusMana, bmvCons.Type())
assert.Equal(t, map[identity.ID]*ManaBase{}, bmvCons.(*ManaBaseVector).M.Vector)
}
func TestConsensusBaseManaVector_Type(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
vectorType := bmv.Type()
assert.Equal(t, ConsensusMana, vectorType)
}
func TestConsensusBaseManaVector_Size(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
assert.Equal(t, 0, bmv.Size())
for i := 0; i < 10; i++ {
@@ -100,7 +130,7 @@ func TestConsensusBaseManaVector_Size(t *testing.T) {
}
func TestConsensusBaseManaVector_Has(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
randID := randNodeID()
has := bmv.Has(randID)
@@ -130,7 +160,7 @@ func TestConsensusBaseManaVector_Book(t *testing.T) {
pledgeEvents = append(pledgeEvents, ev)
}))
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
// init vector to inputTime with pledged beforeBookingAmount
bmv.SetMana(inputPledgeID1, NewManaBase(beforeBookingAmount[inputPledgeID1]))
@@ -191,8 +221,84 @@ func TestConsensusBaseManaVector_Book(t *testing.T) {
assert.Empty(t, revokedNodeIds)
}
+func TestConsensusBaseManaVector_BookEpoch(t *testing.T) {
+ // hold information about which events triggered
+ var (
+ updateEvents []*UpdatedEvent
+ revokeEvents []*RevokedEvent
+ pledgeEvents []*PledgedEvent
+ )
+ nodeIds := map[identity.ID]types.Empty{
+ inputPledgeID1: types.Void,
+ inputPledgeID2: types.Void,
+ inputPledgeID3: types.Void,
+ }
+
+ fmt.Println("all ids: ", inputPledgeID1.String(), ' ', inputPledgeID2.String(), ' ', inputPledgeID3.String())
+ created, spent := prepareEpochDiffs()
+ // when an event triggers, add it to the log
+ Events.Updated.Hook(event.NewClosure(func(ev *UpdatedEvent) {
+ updateEvents = append(updateEvents, ev)
+ }))
+ Events.Revoked.Hook(event.NewClosure(func(ev *RevokedEvent) {
+ revokeEvents = append(revokeEvents, ev)
+ }))
+ Events.Pledged.Hook(event.NewClosure(func(ev *PledgedEvent) {
+ pledgeEvents = append(pledgeEvents, ev)
+ }))
+ bmv := NewBaseManaVector(ConsensusMana)
+
+ // init vector to inputTime with pledged beforeBookingAmount
+ bmv.SetMana(inputPledgeID1, NewManaBase(beforeBookingAmount[inputPledgeID1]))
+ bmv.SetMana(inputPledgeID2, NewManaBase(beforeBookingAmount[inputPledgeID2]))
+ bmv.SetMana(inputPledgeID3, NewManaBase(beforeBookingAmount[inputPledgeID3]))
+
+ bmv.BookEpoch(created, spent)
+
+ // update triggered for the 3 nodes that mana was revoked from, and once for the pledged
+ assert.Equal(t, 9, len(updateEvents))
+ assert.Equal(t, 5, len(pledgeEvents))
+ assert.Equal(t, 4, len(revokeEvents))
+
+ latestUpdateEvent := make(map[identity.ID]*UpdatedEvent)
+ for _, ev := range updateEvents {
+ latestUpdateEvent[ev.NodeID] = ev
+ }
+ // check only the latest update event for each nodeID
+ for _, ev := range latestUpdateEvent {
+ // has the right type
+ assert.Equal(t, ConsensusMana, ev.ManaType)
+ // base mana values are expected
+ assert.Equal(t, afterBookingEpochAmount[ev.NodeID], ev.NewMana.BaseValue())
+ assert.Contains(t, nodeIds, ev.NodeID)
+ }
+
+ afterEventsAmount := make(map[identity.ID]float64)
+ afterEventsAmount[inputPledgeID1] = beforeBookingAmount[inputPledgeID1]
+ afterEventsAmount[inputPledgeID2] = beforeBookingAmount[inputPledgeID2]
+ afterEventsAmount[inputPledgeID3] = beforeBookingAmount[inputPledgeID3]
+
+ for i, ev := range revokeEvents {
+ afterEventsAmount[epochSpentPledgeIDs[i]] -= ev.Amount
+ assert.Equal(t, ConsensusMana, ev.ManaType)
+ assert.Contains(t, nodeIds, ev.NodeID)
+ }
+ for i, ev := range pledgeEvents {
+ afterEventsAmount[epochCreatedPledgeIDs[i]] += ev.Amount
+ assert.Equal(t, ConsensusMana, ev.ManaType)
+ assert.Contains(t, nodeIds, ev.NodeID)
+ }
+ // make sure pledge and revoke events balance changes are as expected
+ for id := range afterBookingEpochAmount {
+ assert.Equal(t, afterEventsAmount[id], afterBookingEpochAmount[id])
+ m, _, err := bmv.GetMana(id)
+ require.NoError(t, err)
+ assert.Equal(t, afterBookingEpochAmount[id], m)
+ }
+}
+
func TestConsensusBaseManaVector_GetMana(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
randID := randNodeID()
mana, _, err := bmv.GetMana(randID)
assert.Equal(t, 0.0, mana)
@@ -211,7 +317,7 @@ func TestConsensusBaseManaVector_GetMana(t *testing.T) {
}
func TestConsensusBaseManaVector_ForEach(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
for i := 0; i < 10000; i++ {
bmv.SetMana(randNodeID(), NewManaBase(1.0))
@@ -239,7 +345,7 @@ func TestConsensusBaseManaVector_ForEach(t *testing.T) {
}
func TestConsensusBaseManaVector_GetManaMap(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
// empty vector returns empty map
manaMap, _, err := bmv.GetManaMap()
@@ -266,7 +372,7 @@ func TestConsensusBaseManaVector_GetManaMap(t *testing.T) {
}
func TestConsensusBaseManaVector_GetHighestManaNodes(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
nodeIDs := make([]identity.ID, 10)
@@ -305,7 +411,7 @@ func TestConsensusBaseManaVector_GetHighestManaNodes(t *testing.T) {
}
func TestConsensusBaseManaVector_GetHighestManaNodesFraction(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
nodeIDs := make([]identity.ID, 10)
@@ -353,7 +459,7 @@ func TestConsensusBaseManaVector_GetHighestManaNodesFraction(t *testing.T) {
}
func TestConsensusBaseManaVector_SetMana(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
nodeIDs := make([]identity.ID, 10)
for i := 0; i < 10; i++ {
nodeIDs[i] = randNodeID()
@@ -365,7 +471,7 @@ func TestConsensusBaseManaVector_SetMana(t *testing.T) {
}
func TestConsensusBaseManaVector_ToPersistables(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
id1 := randNodeID()
id2 := randNodeID()
data := map[identity.ID]float64{
@@ -391,7 +497,7 @@ func TestConsensusBaseManaVector_FromPersistable(t *testing.T) {
t.Run("CASE: Happy path", func(t *testing.T) {
id := randNodeID()
p := NewPersistableBaseMana(id, ConsensusMana, []float64{10}, []float64{100}, baseTime)
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
assert.False(t, bmv.Has(id))
err := bmv.FromPersistable(p)
assert.NoError(t, err)
@@ -401,19 +507,10 @@ func TestConsensusBaseManaVector_FromPersistable(t *testing.T) {
assert.Equal(t, 10.0, bmValue.BaseValue())
})
- t.Run("CASE: Wrong type", func(t *testing.T) {
- p := NewPersistableBaseMana(randNodeID(), AccessMana, []float64{0}, []float64{0}, baseTime)
- bmv := NewBaseManaVector()
-
- err := bmv.FromPersistable(p)
- assert.Error(t, err)
- assert.Contains(t, err.Error(), "has type Access instead of Consensus")
- })
-
t.Run("CASE: Wrong number of base values", func(t *testing.T) {
p := NewPersistableBaseMana(randNodeID(), ConsensusMana, []float64{0, 0}, []float64{0}, baseTime)
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
err := bmv.FromPersistable(p)
assert.Error(t, err)
@@ -422,7 +519,7 @@ func TestConsensusBaseManaVector_FromPersistable(t *testing.T) {
}
func TestConsensusBaseManaVector_ToAndFromPersistable(t *testing.T) {
- bmv := NewBaseManaVector()
+ bmv := NewBaseManaVector(ConsensusMana)
id1 := randNodeID()
id2 := randNodeID()
data := map[identity.ID]float64{
@@ -435,7 +532,7 @@ func TestConsensusBaseManaVector_ToAndFromPersistable(t *testing.T) {
persistables := bmv.ToPersistables()
var restoredBmv BaseManaVector
- restoredBmv = NewBaseManaVector()
+ restoredBmv = NewBaseManaVector(ConsensusMana)
for _, p := range persistables {
err := restoredBmv.FromPersistable(p)
diff --git a/packages/mana/snapshot.go b/packages/mana/snapshot.go
deleted file mode 100644
index f491861f04..0000000000
--- a/packages/mana/snapshot.go
+++ /dev/null
@@ -1,115 +0,0 @@
-package mana
-
-import (
- "time"
-
- "github.com/cockroachdb/errors"
- "github.com/iotaledger/hive.go/identity"
- "github.com/iotaledger/hive.go/marshalutil"
- "github.com/iotaledger/hive.go/stringify"
-)
-
-// region Snapshot /////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Snapshot defines a snapshot of the ledger state.
-type Snapshot struct {
- ByNodeID map[identity.ID]*SnapshotNode
-}
-
-func NewSnapshot() *Snapshot {
- return &Snapshot{
- ByNodeID: make(map[identity.ID]*SnapshotNode),
- }
-}
-
-func (s *Snapshot) NodeSnapshot(nodeID identity.ID) (nodeSnapshot *SnapshotNode) {
- nodeSnapshot, exists := s.ByNodeID[nodeID]
- if exists {
- return nodeSnapshot
- }
-
- nodeSnapshot = &SnapshotNode{
- AccessMana: &AccessManaSnapshot{},
- SortedTxSnapshot: make(SortedTxSnapshot, 0),
- }
- s.ByNodeID[nodeID] = nodeSnapshot
-
- return nodeSnapshot
-}
-
-func (s *Snapshot) MaxAccessManaUpdateTime() (maxTime time.Time) {
- for _, node := range s.ByNodeID {
- if nodeMaxTime := node.AccessManaUpdateTime(); nodeMaxTime.After(maxTime) {
- maxTime = node.AccessManaUpdateTime()
- }
- }
-
- return maxTime
-}
-
-func (s *Snapshot) ResetTime() {
- addTime := time.Since(s.MaxAccessManaUpdateTime())
- for _, node := range s.ByNodeID {
- node.AdjustAccessManaUpdateTime(addTime)
- }
-}
-
-func (s *Snapshot) FromMarshalUtil(marshalUtil *marshalutil.MarshalUtil) (err error) {
- nodeCount, err := marshalUtil.ReadUint64()
- if err != nil {
- return errors.Errorf("could not read node count: %w", err)
- }
-
- s.ByNodeID = make(map[identity.ID]*SnapshotNode, nodeCount)
- for i := uint64(0); i < nodeCount; i++ {
- var nodeId identity.ID
- nodeId, err = identity.IDFromMarshalUtil(marshalUtil)
- if err != nil {
- return errors.Errorf("could not read node id: %w", err)
- }
-
- var snapshotNode SnapshotNode
- if err = snapshotNode.FromMarshalUtil(marshalUtil); err != nil {
- return errors.Errorf("could not read snapshot of node: %w", err)
- }
-
- s.ByNodeID[nodeId] = &snapshotNode
- }
-
- return nil
-}
-
-// Bytes returns a serialized version of the Snapshot.
-func (s *Snapshot) Bytes() (serialized []byte) {
- marshalUtil := marshalutil.New()
-
- marshalUtil.WriteUint64(uint64(len(s.ByNodeID)))
- for nodeID, nodeSnapshot := range s.ByNodeID {
- marshalUtil.Write(nodeID)
- marshalUtil.Write(nodeSnapshot)
- }
-
- return marshalUtil.Bytes()
-}
-
-// String returns a human-readable version of the Snapshot.
-func (s *Snapshot) String() (humanReadable string) {
- structBuilder := stringify.StructBuilder("Snapshot")
- for nodeID, nodeSnapshot := range s.ByNodeID {
- structBuilder.AddField(stringify.StructField(nodeID.String(), nodeSnapshot))
- }
-
- return structBuilder.String()
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region AccessManaRecord /////////////////////////////////////////////////////////////////////////////////////////////
-
-// AccessManaRecord defines the info for the aMana snapshot.
-type AccessManaRecord struct {
- Value float64
- Timestamp time.Time
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/mana/txinfo.go b/packages/mana/txinfo.go
index 72f8902f2d..e0741e71f0 100644
--- a/packages/mana/txinfo.go
+++ b/packages/mana/txinfo.go
@@ -35,8 +35,6 @@ func (t *TxInfo) sumInputs() float64 {
// InputInfo holds mana related info about an input within a transaction.
type InputInfo struct {
- // Timestamp is the timestamp of the transaction that created this output (input).
- TimeStamp time.Time
// Amount is the balance of the input.
Amount float64
// PledgeID is a map of mana types and the node to which the transaction that created the output pledges its mana type to.
diff --git a/packages/markers/manager.go b/packages/markers/manager.go
index 2f348c0f09..9cfd4a7b27 100644
--- a/packages/markers/manager.go
+++ b/packages/markers/manager.go
@@ -42,7 +42,7 @@ func NewManager(options ...ManagerOption) (newManager *Manager) {
}
// InheritStructureDetails takes the StructureDetails of the referenced parents and returns new StructureDetails for the
-// message that was just added to the DAG. It automatically creates a new Sequence and Index if necessary and returns an
+// block that was just added to the DAG. It automatically creates a new Sequence and Index if necessary and returns an
// additional flag that indicates if a new Sequence was created.
// InheritStructureDetails inherits the structure details of the given parent StructureDetails.
func (m *Manager) InheritStructureDetails(referencedStructureDetails []*StructureDetails, increaseIndexCallback IncreaseIndexCallback) (inheritedStructureDetails *StructureDetails, newSequenceCreated bool) {
@@ -310,7 +310,7 @@ type ManagerOptions struct {
// storage.
CacheTime time.Duration
- // MaxPastMarkerDistance is a parameter for the Manager that allows to specify how many consecutive messages are
+ // MaxPastMarkerDistance is a parameter for the Manager that allows to specify how many consecutive blocks are
// allowed to not receive a new PastMaster before we create a new Sequence.
MaxPastMarkerDistance uint64
}
@@ -352,7 +352,7 @@ func WithCacheTime(cacheTime time.Duration) ManagerOption {
}
}
-// WithMaxPastMarkerDistance is an Option for the Manager that allows to specify how many consecutive messages are
+// WithMaxPastMarkerDistance is an Option for the Manager that allows to specify how many consecutive blocks are
// allowed to not receive a new PastMaster before we create a new Sequence.
func WithMaxPastMarkerDistance(distance uint64) ManagerOption {
return func(options *ManagerOptions) {
diff --git a/packages/markers/manager_test.go b/packages/markers/manager_test.go
index a6425ee143..39be6ea52f 100644
--- a/packages/markers/manager_test.go
+++ b/packages/markers/manager_test.go
@@ -9,36 +9,36 @@ import (
)
func TestManager(t *testing.T) {
- testMessages := []*message{
- newMessage("msg1"),
- newMessage("msg2"),
- newMessage("msg3", "msg1", "msg2"),
- newMessage("msg4", "msg3"),
- newMessage("msg5", "msg1", "msg2"),
- newMessage("msg6", "msg3", "msg5"),
- newMessage("msg7", "msg4"),
- newMessage("msg8", "msg4"),
- newMessage("msg9", "msg8"),
- newMessage("msg10", "msg4"),
- newMessage("msg11", "msg6"),
- newMessage("msg12", "msg11"),
- newMessage("msg13", "msg12"),
- newMessage("msg14", "msg11"),
- newMessage("msg15", "msg13", "msg14"),
- newMessage("msg16", "msg9", "msg15"),
- newMessage("msg17", "msg7", "msg16"),
- newMessage("msg18", "msg7", "msg13", "msg14"),
- newMessage("msg19", "msg7", "msg13", "msg14"),
- newMessage("msg20", "msg7", "msg13", "msg14", "msg11"),
- newMessage("msg21", "msg20"),
- newMessage("msg22", "msg21"),
+ testBlocks := []*block{
+ newBlock("blk1"),
+ newBlock("blk2"),
+ newBlock("blk3", "blk1", "blk2"),
+ newBlock("blk4", "blk3"),
+ newBlock("blk5", "blk1", "blk2"),
+ newBlock("blk6", "blk3", "blk5"),
+ newBlock("blk7", "blk4"),
+ newBlock("blk8", "blk4"),
+ newBlock("blk9", "blk8"),
+ newBlock("blk10", "blk4"),
+ newBlock("blk11", "blk6"),
+ newBlock("blk12", "blk11"),
+ newBlock("blk13", "blk12"),
+ newBlock("blk14", "blk11"),
+ newBlock("blk15", "blk13", "blk14"),
+ newBlock("blk16", "blk9", "blk15"),
+ newBlock("blk17", "blk7", "blk16"),
+ newBlock("blk18", "blk7", "blk13", "blk14"),
+ newBlock("blk19", "blk7", "blk13", "blk14"),
+ newBlock("blk20", "blk7", "blk13", "blk14", "blk11"),
+ newBlock("blk21", "blk20"),
+ newBlock("blk22", "blk21"),
}
- messageDB := makeMessageDB(testMessages...)
+ blockDB := makeBlockDB(testBlocks...)
manager := NewManager(WithCacheTime(0), WithMaxPastMarkerDistance(3))
- for _, m := range testMessages {
- inheritPastMarkers(m, manager, messageDB)
+ for _, m := range testBlocks {
+ inheritPastMarkers(m, manager, blockDB)
}
type expectedStructureDetailsType struct {
@@ -49,7 +49,7 @@ func TestManager(t *testing.T) {
}
expectedStructureDetails := map[string]expectedStructureDetailsType{
- "msg1": {
+ "blk1": {
PastMarkers: NewMarkers(
NewMarker(0, 1),
),
@@ -61,7 +61,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg2": {
+ "blk2": {
PastMarkers: NewMarkers(
NewMarker(0, 0),
),
@@ -73,7 +73,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg3": {
+ "blk3": {
PastMarkers: NewMarkers(
NewMarker(0, 2),
),
@@ -85,7 +85,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg4": {
+ "blk4": {
PastMarkers: NewMarkers(
NewMarker(0, 3),
),
@@ -97,7 +97,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg5": {
+ "blk5": {
PastMarkers: NewMarkers(
NewMarker(0, 1),
),
@@ -105,7 +105,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg6": {
+ "blk6": {
PastMarkers: NewMarkers(
NewMarker(0, 2),
),
@@ -113,7 +113,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg7": {
+ "blk7": {
PastMarkers: NewMarkers(
NewMarker(0, 4),
),
@@ -125,7 +125,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg8": {
+ "blk8": {
PastMarkers: NewMarkers(
NewMarker(0, 3),
),
@@ -133,7 +133,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg9": {
+ "blk9": {
PastMarkers: NewMarkers(
NewMarker(0, 3),
),
@@ -141,7 +141,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg10": {
+ "blk10": {
PastMarkers: NewMarkers(
NewMarker(0, 3),
),
@@ -149,7 +149,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg11": {
+ "blk11": {
PastMarkers: NewMarkers(
NewMarker(0, 2),
),
@@ -157,7 +157,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg12": {
+ "blk12": {
PastMarkers: NewMarkers(
NewMarker(1, 3),
),
@@ -171,7 +171,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg13": {
+ "blk13": {
PastMarkers: NewMarkers(
NewMarker(1, 4),
),
@@ -185,7 +185,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg14": {
+ "blk14": {
PastMarkers: NewMarkers(
NewMarker(2, 3),
),
@@ -199,7 +199,7 @@ func TestManager(t *testing.T) {
NewMarker(3, 5),
),
},
- "msg15": {
+ "blk15": {
PastMarkers: NewMarkers(
NewMarker(2, 5),
),
@@ -210,7 +210,7 @@ func TestManager(t *testing.T) {
),
ReferencingMarkers: NewMarkers(),
},
- "msg16": {
+ "blk16": {
PastMarkers: NewMarkers(
NewMarker(2, 6),
),
@@ -221,7 +221,7 @@ func TestManager(t *testing.T) {
),
ReferencingMarkers: NewMarkers(),
},
- "msg17": {
+ "blk17": {
PastMarkers: NewMarkers(
NewMarker(2, 7),
),
@@ -232,7 +232,7 @@ func TestManager(t *testing.T) {
),
ReferencingMarkers: NewMarkers(),
},
- "msg18": {
+ "blk18": {
PastMarkers: NewMarkers(
NewMarker(1, 5),
),
@@ -243,7 +243,7 @@ func TestManager(t *testing.T) {
),
ReferencingMarkers: NewMarkers(),
},
- "msg19": {
+ "blk19": {
PastMarkers: NewMarkers(
NewMarker(0, 5),
),
@@ -254,7 +254,7 @@ func TestManager(t *testing.T) {
),
ReferencingMarkers: NewMarkers(),
},
- "msg20": {
+ "blk20": {
PastMarkers: NewMarkers(
NewMarker(0, 4),
NewMarker(1, 4),
@@ -264,7 +264,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg21": {
+ "blk21": {
PastMarkers: NewMarkers(
NewMarker(0, 4),
NewMarker(1, 4),
@@ -274,7 +274,7 @@ func TestManager(t *testing.T) {
ReferencedMarkers: NewMarkers(),
ReferencingMarkers: NewMarkers(),
},
- "msg22": {
+ "blk22": {
PastMarkers: NewMarkers(
NewMarker(3, 5),
),
@@ -288,16 +288,16 @@ func TestManager(t *testing.T) {
},
}
- for messageID, messageExpected := range expectedStructureDetails {
- assert.Equal(t, messageExpected.PastMarkers, messageDB[messageID].structureDetails.PastMarkers(), messageID+" has unexpected past Markers")
- assert.Equal(t, messageExpected.PastMarkersGap, messageDB[messageID].structureDetails.PastMarkerGap(), messageID+" has unexpected PastMarkerGap")
+ for blockID, blockExpected := range expectedStructureDetails {
+ assert.Equal(t, blockExpected.PastMarkers, blockDB[blockID].structureDetails.PastMarkers(), blockID+" has unexpected past Markers")
+ assert.Equal(t, blockExpected.PastMarkersGap, blockDB[blockID].structureDetails.PastMarkerGap(), blockID+" has unexpected PastMarkerGap")
- if messageExpected.PastMarkersGap == 0 {
- pastMarker := messageExpected.PastMarkers.Marker()
+ if blockExpected.PastMarkersGap == 0 {
+ pastMarker := blockExpected.PastMarkers.Marker()
manager.Sequence(pastMarker.SequenceID()).Consume(func(sequence *Sequence) {
- assert.Equal(t, messageExpected.ReferencedMarkers, sequence.ReferencedMarkers(pastMarker.Index()), messageID+" has unexpected referenced Markers")
- assert.Equal(t, messageExpected.ReferencingMarkers, sequence.ReferencingMarkers(pastMarker.Index()), messageID+" has unexpected referencing Markers")
+ assert.Equal(t, blockExpected.ReferencedMarkers, sequence.ReferencedMarkers(pastMarker.Index()), blockID+" has unexpected referenced Markers")
+ assert.Equal(t, blockExpected.ReferencingMarkers, sequence.ReferencingMarkers(pastMarker.Index()), blockID+" has unexpected referencing Markers")
})
}
}
@@ -344,13 +344,13 @@ func alwaysIncreaseIndex(SequenceID, Index) bool {
return true
}
-func messageReferencesMessage(laterMessage, earlierMessage *message, messageDB map[string]*message) types.TriBool {
- for _, parentID := range laterMessage.parents {
- if parentID == earlierMessage.id {
+func blockReferencesBlock(laterBlock, earlierBlock *block, blockDB map[string]*block) types.TriBool {
+ for _, parentID := range laterBlock.parents {
+ if parentID == earlierBlock.id {
return types.True
}
- switch messageReferencesMessage(messageDB[parentID], earlierMessage, messageDB) {
+ switch blockReferencesBlock(blockDB[parentID], earlierBlock, blockDB) {
case types.True:
return types.True
case types.Maybe:
@@ -361,44 +361,44 @@ func messageReferencesMessage(laterMessage, earlierMessage *message, messageDB m
return types.False
}
-func inheritPastMarkers(message *message, manager *Manager, messageDB map[string]*message) {
+func inheritPastMarkers(block *block, manager *Manager, blockDB map[string]*block) {
// merge past Markers of referenced parents
- pastMarkers := make([]*StructureDetails, len(message.parents))
- for i, parentID := range message.parents {
- pastMarkers[i] = messageDB[parentID].structureDetails
+ pastMarkers := make([]*StructureDetails, len(block.parents))
+ for i, parentID := range block.parents {
+ pastMarkers[i] = blockDB[parentID].structureDetails
}
- message.structureDetails, _ = manager.InheritStructureDetails(pastMarkers, alwaysIncreaseIndex)
+ block.structureDetails, _ = manager.InheritStructureDetails(pastMarkers, alwaysIncreaseIndex)
return
}
-func makeMessageDB(messages ...*message) (messageDB map[string]*message) {
- messageDB = make(map[string]*message)
- for _, msg := range messages {
- messageDB[msg.id] = msg
+func makeBlockDB(blocks ...*block) (blockDB map[string]*block) {
+ blockDB = make(map[string]*block)
+ for _, blk := range blocks {
+ blockDB[blk.id] = blk
}
return
}
-type message struct {
+type block struct {
id string
forceNewMarker bool
parents []string
structureDetails *StructureDetails
}
-func newMessage(id string, parents ...string) *message {
- return &message{
+func newBlock(id string, parents ...string) *block {
+ return &block{
id: id,
parents: parents,
structureDetails: NewStructureDetails(),
}
}
-func (m *message) String() string {
- return stringify.Struct("message",
+func (m *block) String() string {
+ return stringify.Struct("block",
stringify.StructField("id", m.id),
stringify.StructField("forceNewMarker", m.forceNewMarker),
stringify.StructField("parents", m.parents),
diff --git a/packages/metrics/events.go b/packages/metrics/events.go
index f5ac6736f7..054f2d3233 100644
--- a/packages/metrics/events.go
+++ b/packages/metrics/events.go
@@ -14,8 +14,8 @@ type CollectionEvents struct {
TangleTimeSynced *event.Event[*TangleTimeSyncedEvent]
// ValueTips defines the local value tips count event.
ValueTips *event.Event[*ValueTipsEvent]
- // MessageTips defines the local message tips count event.
- MessageTips *event.Event[*MessageTipsEvent]
+ // BlockTips defines the local block tips count event.
+ BlockTips *event.Event[*BlockTipsEvent]
}
func newCollectionEvents() (new *CollectionEvents) {
@@ -25,7 +25,7 @@ func newCollectionEvents() (new *CollectionEvents) {
MemUsage: event.New[*MemUsageEvent](),
TangleTimeSynced: event.New[*TangleTimeSyncedEvent](),
ValueTips: event.New[*ValueTipsEvent](),
- MessageTips: event.New[*MessageTipsEvent](),
+ BlockTips: event.New[*BlockTipsEvent](),
}
}
@@ -41,11 +41,8 @@ type MemUsageEvent struct {
MemAllocBytes uint64
}
-type TangleTimeSyncedEvent struct {
-}
+type TangleTimeSyncedEvent struct{}
-type ValueTipsEvent struct {
-}
+type ValueTipsEvent struct{}
-type MessageTipsEvent struct {
-}
+type BlockTipsEvent struct{}
diff --git a/packages/notarization/commitments.go b/packages/notarization/commitments.go
new file mode 100644
index 0000000000..d77e7fffd0
--- /dev/null
+++ b/packages/notarization/commitments.go
@@ -0,0 +1,449 @@
+package notarization
+
+import (
+ "context"
+
+ "github.com/iotaledger/hive.go/serix"
+
+ "github.com/celestiaorg/smt"
+ "github.com/cockroachdb/errors"
+ "github.com/iotaledger/goshimmer/packages/epoch"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/hive.go/generics/lo"
+ "github.com/iotaledger/hive.go/generics/objectstorage"
+ "github.com/iotaledger/hive.go/kvstore"
+ "golang.org/x/crypto/blake2b"
+
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+
+ "github.com/iotaledger/goshimmer/packages/database"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+)
+
+// region Committment types ////////////////////////////////////////////////////////////////////////////////////////////
+
+// CommitmentRoots contains roots of trees of an epoch.
+type CommitmentRoots struct {
+ EI epoch.Index
+ tangleRoot epoch.MerkleRoot
+ stateMutationRoot epoch.MerkleRoot
+ stateRoot epoch.MerkleRoot
+ manaRoot epoch.MerkleRoot
+}
+
+// CommitmentTrees is a compressed form of all the information (blocks and confirmed value payloads) of an epoch.
+type CommitmentTrees struct {
+ EI epoch.Index
+ tangleTree *smt.SparseMerkleTree
+ stateMutationTree *smt.SparseMerkleTree
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region EpochCommitmentFactory ///////////////////////////////////////////////////////////////////////////////////////
+
+// EpochCommitmentFactory manages epoch commitmentTrees.
+type EpochCommitmentFactory struct {
+ commitmentTrees map[epoch.Index]*CommitmentTrees
+
+ storage *EpochCommitmentStorage
+ tangle *tangle.Tangle
+
+ // stateRootTree stores the state tree at the LastCommittedEpoch.
+ stateRootTree *smt.SparseMerkleTree
+ // manaRootTree stores the mana tree at the LastCommittedEpoch + 1.
+ manaRootTree *smt.SparseMerkleTree
+
+ // snapshotDepth defines how far back the ledgerstate is kept with respect to the latest committed epoch.
+ snapshotDepth int
+}
+
+// NewEpochCommitmentFactory returns a new commitment factory.
+func NewEpochCommitmentFactory(store kvstore.KVStore, tangle *tangle.Tangle, snapshotDepth int) *EpochCommitmentFactory {
+ epochCommitmentStorage := newEpochCommitmentStorage(WithStore(store))
+
+ stateRootTreeNodeStore := objectstorage.NewStoreWithRealm(epochCommitmentStorage.baseStore, database.PrefixNotarization, prefixStateTreeNodes)
+ stateRootTreeValueStore := objectstorage.NewStoreWithRealm(epochCommitmentStorage.baseStore, database.PrefixNotarization, prefixStateTreeValues)
+
+ manaRootTreeNodeStore := objectstorage.NewStoreWithRealm(epochCommitmentStorage.baseStore, database.PrefixNotarization, prefixManaTreeNodes)
+ manaRootTreeValueStore := objectstorage.NewStoreWithRealm(epochCommitmentStorage.baseStore, database.PrefixNotarization, prefixManaTreeValues)
+
+ return &EpochCommitmentFactory{
+ commitmentTrees: make(map[epoch.Index]*CommitmentTrees),
+ storage: epochCommitmentStorage,
+ tangle: tangle,
+ snapshotDepth: snapshotDepth,
+ stateRootTree: smt.NewSparseMerkleTree(stateRootTreeNodeStore, stateRootTreeValueStore, lo.PanicOnErr(blake2b.New256(nil))),
+ manaRootTree: smt.NewSparseMerkleTree(manaRootTreeNodeStore, manaRootTreeValueStore, lo.PanicOnErr(blake2b.New256(nil))),
+ }
+}
+
+// StateRoot returns the root of the state sparse merkle tree at the latest committed epoch.
+func (f *EpochCommitmentFactory) StateRoot() []byte {
+ return f.stateRootTree.Root()
+}
+
+// ManaRoot returns the root of the state sparse merkle tree at the latest committed epoch.
+func (f *EpochCommitmentFactory) ManaRoot() []byte {
+ return f.manaRootTree.Root()
+}
+
+// ECR retrieves the epoch commitment root.
+func (f *EpochCommitmentFactory) ECR(ei epoch.Index) (ecr epoch.ECR, err error) {
+ epochRoots, err := f.newEpochRoots(ei)
+ if err != nil {
+ return epoch.MerkleRoot{}, errors.Wrap(err, "ECR could not be created")
+ }
+
+ root := make([]byte, 0)
+ conflict1 := make([]byte, 0)
+ conflict2 := make([]byte, 0)
+
+ conflict1Hashed := blake2b.Sum256(append(append(conflict1, epochRoots.tangleRoot[:]...), epochRoots.stateMutationRoot[:]...))
+ conflict2Hashed := blake2b.Sum256(append(append(conflict2, epochRoots.stateRoot[:]...), epochRoots.manaRoot[:]...))
+ rootHashed := blake2b.Sum256(append(append(root, conflict1Hashed[:]...), conflict2Hashed[:]...))
+
+ return epoch.NewMerkleRoot(rootHashed[:]), nil
+}
+
+// InsertStateLeaf inserts the outputID to the state sparse merkle tree.
+func (f *EpochCommitmentFactory) insertStateLeaf(outputID utxo.OutputID) error {
+ _, err := f.stateRootTree.Update(outputID.Bytes(), outputID.Bytes())
+ if err != nil {
+ return errors.Wrap(err, "could not insert leaf to the state tree")
+ }
+ return nil
+}
+
+// RemoveStateLeaf removes the output ID from the ledger sparse merkle tree.
+func (f *EpochCommitmentFactory) removeStateLeaf(outputID utxo.OutputID) error {
+ exists, _ := f.stateRootTree.Has(outputID.Bytes())
+ if exists {
+ _, err := f.stateRootTree.Delete(outputID.Bytes())
+ if err != nil {
+ return errors.Wrap(err, "could not delete leaf from the state tree")
+ }
+ }
+ return nil
+}
+
+// UpdateManaLeaf updates the mana balance in the mana sparse merkle tree.
+func (f *EpochCommitmentFactory) updateManaLeaf(outputWithMetadata *ledger.OutputWithMetadata, isCreated bool) (err error) {
+ outputBalance, exists := outputWithMetadata.Output().(devnetvm.Output).Balances().Get(devnetvm.ColorIOTA)
+ if !exists {
+ return nil
+ }
+
+ accountBytes := outputWithMetadata.ConsensusManaPledgeID().Bytes()
+
+ var currentBalance uint64
+ if balanceBytes, getLeafErr := f.manaRootTree.Get(accountBytes); getLeafErr != nil && len(balanceBytes) > 0 {
+ _, decodeErr := serix.DefaultAPI.Decode(context.Background(), balanceBytes, ¤tBalance, serix.WithValidation())
+ if decodeErr != nil {
+ return errors.Wrap(decodeErr, "could not decode mana leaf balance")
+ }
+ }
+
+ if isCreated {
+ currentBalance += outputBalance
+ } else {
+ currentBalance -= outputBalance
+ }
+
+ // remove leaf if mana is zero
+ if currentBalance <= 0 {
+ if _, deleteLeafErr := f.manaRootTree.Delete(accountBytes); deleteLeafErr != nil {
+ return errors.Wrap(deleteLeafErr, "could not delete leaf from mana tree")
+ }
+ return nil
+ }
+
+ encodedBalanceBytes, encodeErr := serix.DefaultAPI.Encode(context.Background(), currentBalance, serix.WithValidation())
+ if encodeErr != nil {
+ return errors.Wrap(encodeErr, "could not encode mana leaf balance")
+ }
+
+ if _, updateLeafErr := f.manaRootTree.Update(accountBytes, encodedBalanceBytes); updateLeafErr != nil {
+ return errors.Wrap(updateLeafErr, "could not update mana tree leaf")
+ }
+
+ return nil
+}
+
+// InsertStateMutationLeaf inserts the transaction ID to the state mutation sparse merkle tree.
+func (f *EpochCommitmentFactory) insertStateMutationLeaf(ei epoch.Index, txID utxo.TransactionID) error {
+ commitment, err := f.getCommitmentTrees(ei)
+ if err != nil {
+ return errors.Wrap(err, "could not get commitment while inserting state mutation leaf")
+ }
+ _, err = commitment.stateMutationTree.Update(txID.Bytes(), txID.Bytes())
+ if err != nil {
+ return errors.Wrap(err, "could not insert leaf to the state mutation tree")
+ }
+ return nil
+}
+
+// RemoveStateMutationLeaf deletes the transaction ID to the state mutation sparse merkle tree.
+func (f *EpochCommitmentFactory) removeStateMutationLeaf(ei epoch.Index, txID utxo.TransactionID) error {
+ commitment, err := f.getCommitmentTrees(ei)
+ if err != nil {
+ return errors.Wrap(err, "could not get commitment while deleting state mutation leaf")
+ }
+ _, err = commitment.stateMutationTree.Delete(txID.Bytes())
+ if err != nil {
+ return errors.Wrap(err, "could not delete leaf from the state mutation tree")
+ }
+ return nil
+}
+
+// InsertTangleLeaf inserts blk to the Tangle sparse merkle tree.
+func (f *EpochCommitmentFactory) insertTangleLeaf(ei epoch.Index, blkID tangle.BlockID) error {
+ commitment, err := f.getCommitmentTrees(ei)
+ if err != nil {
+ return errors.Wrap(err, "could not get commitment while inserting tangle leaf")
+ }
+ _, err = commitment.tangleTree.Update(blkID.Bytes(), blkID.Bytes())
+ if err != nil {
+ return errors.Wrap(err, "could not insert leaf to the tangle tree")
+ }
+ return nil
+}
+
+// RemoveTangleLeaf removes the block ID from the Tangle sparse merkle tree.
+func (f *EpochCommitmentFactory) removeTangleLeaf(ei epoch.Index, blkID tangle.BlockID) error {
+ commitment, err := f.getCommitmentTrees(ei)
+ if err != nil {
+ return errors.Wrap(err, "could not get commitment while deleting tangle leaf")
+ }
+ exists, _ := commitment.tangleTree.Has(blkID.Bytes())
+ if exists {
+ _, err2 := commitment.tangleTree.Delete(blkID.Bytes())
+ if err2 != nil {
+ return errors.Wrap(err, "could not delete leaf from the tangle tree")
+ }
+ }
+ return nil
+}
+
+// ecRecord retrieves the epoch commitment.
+func (f *EpochCommitmentFactory) ecRecord(ei epoch.Index) (ecRecord *epoch.ECRecord, err error) {
+ ecRecord = f.loadECRecord(ei)
+ if ecRecord != nil {
+ return ecRecord, nil
+ }
+ // We never committed this epoch before, create and roll to a new epoch.
+ ecr, ecrErr := f.ECR(ei)
+ if ecrErr != nil {
+ return nil, ecrErr
+ }
+ prevECRecord, ecrRecordErr := f.ecRecord(ei - 1)
+ if ecrRecordErr != nil {
+ return nil, ecrRecordErr
+ }
+
+ // Store and return.
+ f.storage.CachedECRecord(ei, epoch.NewECRecord).Consume(func(e *epoch.ECRecord) {
+ e.SetECR(ecr)
+ e.SetPrevEC(EC(prevECRecord))
+ ecRecord = e
+ })
+
+ return ecRecord, nil
+}
+
+func (f *EpochCommitmentFactory) loadECRecord(ei epoch.Index) (ecRecord *epoch.ECRecord) {
+ f.storage.CachedECRecord(ei).Consume(func(record *epoch.ECRecord) {
+ ecRecord = epoch.NewECRecord(ei)
+ ecRecord.SetECR(record.ECR())
+ ecRecord.SetPrevEC(record.PrevEC())
+ })
+ return
+}
+
+// storeDiffUTXOs stores the diff UTXOs occurred on an epoch without removing UTXOs created and spent in the span of a
+// single epoch. This is because, as UTXOs can be stored out-of-order, we cannot reliably remove intermediate UTXOs
+// before an epoch is committable.
+func (f *EpochCommitmentFactory) storeDiffUTXOs(ei epoch.Index, spent, created []*ledger.OutputWithMetadata) {
+ epochDiffStorage := f.storage.getEpochDiffStorage(ei)
+
+ for _, spentOutputWithMetadata := range spent {
+ epochDiffStorage.spent.Store(spentOutputWithMetadata).Release()
+ }
+
+ for _, createdOutputWithMetadata := range created {
+ epochDiffStorage.created.Store(createdOutputWithMetadata).Release()
+ }
+}
+
+func (f *EpochCommitmentFactory) deleteDiffUTXOs(ei epoch.Index, spent, created []*ledger.OutputWithMetadata) {
+ epochDiffStorage := f.storage.getEpochDiffStorage(ei)
+
+ for _, spentOutputWithMetadata := range spent {
+ epochDiffStorage.spent.Delete(spentOutputWithMetadata.ID().Bytes())
+ }
+
+ for _, createdOutputWithMetadata := range created {
+ epochDiffStorage.created.Delete(createdOutputWithMetadata.ID().Bytes())
+ }
+}
+
+// loadDiffUTXOs loads the diff UTXOs occurred on an epoch by removing UTXOs created and spent in the span of the same epoch,
+// as by the time we load a diff we assume the epoch is being committed and cannot be altered anymore.
+func (f *EpochCommitmentFactory) loadDiffUTXOs(ei epoch.Index) (spent, created []*ledger.OutputWithMetadata) {
+ epochDiffStorage := f.storage.getEpochDiffStorage(ei)
+
+ spent = make([]*ledger.OutputWithMetadata, 0)
+ epochDiffStorage.spent.ForEach(func(_ []byte, cachedOutputWithMetadata *objectstorage.CachedObject[*ledger.OutputWithMetadata]) bool {
+ cachedOutputWithMetadata.Consume(func(outputWithMetadata *ledger.OutputWithMetadata) {
+ // We remove spent and created UTXOs happened in the same epoch, as we assume that by the time we
+ // load the epoch diff, the epoch is being committed and cannot be altered anymore.
+ if epochDiffStorage.created.DeleteIfPresent(outputWithMetadata.ID().Bytes()) {
+ epochDiffStorage.spent.Delete(outputWithMetadata.ID().Bytes())
+ return
+ }
+ spent = append(spent, outputWithMetadata)
+ })
+ return true
+ })
+
+ created = make([]*ledger.OutputWithMetadata, 0)
+ epochDiffStorage.created.ForEach(func(_ []byte, cachedOutputWithMetadata *objectstorage.CachedObject[*ledger.OutputWithMetadata]) bool {
+ cachedOutputWithMetadata.Consume(func(outputWithMetadata *ledger.OutputWithMetadata) {
+ created = append(created, outputWithMetadata)
+ })
+ return true
+ })
+
+ return
+}
+
+// NewCommitment returns an empty commitment for the epoch.
+func (f *EpochCommitmentFactory) newCommitmentTrees(ei epoch.Index) *CommitmentTrees {
+ // Volatile storage for small trees
+ db, _ := database.NewMemDB()
+ blockIDStore := db.NewStore()
+ blockValueStore := db.NewStore()
+ stateMutationIDStore := db.NewStore()
+ stateMutationValueStore := db.NewStore()
+
+ commitmentTrees := &CommitmentTrees{
+ EI: ei,
+ tangleTree: smt.NewSparseMerkleTree(blockIDStore, blockValueStore, lo.PanicOnErr(blake2b.New256(nil))),
+ stateMutationTree: smt.NewSparseMerkleTree(stateMutationIDStore, stateMutationValueStore, lo.PanicOnErr(blake2b.New256(nil))),
+ }
+
+ return commitmentTrees
+}
+
+// newEpochRoots creates a new commitment with the given ei, by advancing the corresponding data structures.
+func (f *EpochCommitmentFactory) newEpochRoots(ei epoch.Index) (commitmentRoots *CommitmentRoots, commitmentTreesErr error) {
+ // TODO: what if a node restarts and we have incomplete trees?
+ commitmentTrees, commitmentTreesErr := f.getCommitmentTrees(ei)
+ if commitmentTreesErr != nil {
+ return nil, errors.Wrapf(commitmentTreesErr, "cannot get commitment tree for epoch %d", ei)
+ }
+
+ // We advance the StateRootTree to the next epoch.
+ stateRoot, manaRoot, newStateRootsErr := f.newStateRoots(ei)
+ if newStateRootsErr != nil {
+ return nil, errors.Wrapf(newStateRootsErr, "cannot get state roots for epoch %d", ei)
+ }
+
+ // We advance the LedgerState to the next epoch.
+ f.commitLedgerState(ei - epoch.Index(f.snapshotDepth))
+
+ commitmentRoots = &CommitmentRoots{
+ EI: ei,
+ stateRoot: epoch.NewMerkleRoot(stateRoot),
+ manaRoot: epoch.NewMerkleRoot(manaRoot),
+ tangleRoot: epoch.NewMerkleRoot(commitmentTrees.tangleTree.Root()),
+ stateMutationRoot: epoch.NewMerkleRoot(commitmentTrees.stateMutationTree.Root()),
+ }
+
+ // We are never going to use this epoch's commitment trees again.
+ delete(f.commitmentTrees, ei)
+
+ return commitmentRoots, nil
+}
+
+// commitLedgerState commits the corresponding diff to the ledger state and drops it.
+func (f *EpochCommitmentFactory) commitLedgerState(ei epoch.Index) {
+ spent, created := f.loadDiffUTXOs(ei)
+ for _, spentOutputWithMetadata := range spent {
+ f.storage.ledgerstateStorage.Delete(spentOutputWithMetadata.ID().Bytes())
+ }
+
+ for _, createdOutputWithMetadata := range created {
+ f.storage.ledgerstateStorage.Store(createdOutputWithMetadata).Release()
+ }
+
+ f.storage.dropEpochDiffStorage(ei)
+
+ return
+}
+
+func (f *EpochCommitmentFactory) getCommitmentTrees(ei epoch.Index) (commitmentTrees *CommitmentTrees, err error) {
+ lastCommittedEpoch, lastCommittedEpochErr := f.storage.latestCommittableEpochIndex()
+ if lastCommittedEpochErr != nil {
+ return nil, errors.Wrap(lastCommittedEpochErr, "cannot get last committed epoch")
+ }
+ if ei <= lastCommittedEpoch {
+ return nil, errors.Errorf("cannot get commitment trees for epoch %d, because it is already committed", ei)
+ }
+ commitmentTrees, ok := f.commitmentTrees[ei]
+ if !ok {
+ commitmentTrees = f.newCommitmentTrees(ei)
+ f.commitmentTrees[ei] = commitmentTrees
+ }
+ return
+}
+
+func (f *EpochCommitmentFactory) newStateRoots(ei epoch.Index) (stateRoot []byte, manaRoot []byte, err error) {
+ // By the time we want the state root for a specific epoch, the diff should be complete and unalterable.
+ spentOutputs, createdOutputs := f.loadDiffUTXOs(ei)
+
+ // Insert created UTXOs into the state tree.
+ for _, created := range createdOutputs {
+ err = f.insertStateLeaf(created.ID())
+ if err != nil {
+ return nil, nil, errors.Wrap(err, "could not insert the state leaf")
+ }
+ err = f.updateManaLeaf(created, true)
+ if err != nil {
+ return nil, nil, errors.Wrap(err, "could not insert the mana leaf")
+ }
+ }
+
+ // Remove spent UTXOs from the state tree.
+ for _, spent := range spentOutputs {
+ err = f.removeStateLeaf(spent.ID())
+ if err != nil {
+ return nil, nil, errors.Wrap(err, "could not remove state leaf")
+ }
+ err = f.updateManaLeaf(spent, false)
+ if err != nil {
+ return nil, nil, errors.Wrap(err, "could not remove mana leaf")
+ }
+ }
+
+ return f.StateRoot(), f.ManaRoot(), nil
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region extra functions //////////////////////////////////////////////////////////////////////////////////////////////
+
+// EC calculates the epoch commitment hash from the given ECRecord.
+func EC(ecRecord *epoch.ECRecord) (ec epoch.EC) {
+ concatenated := make([]byte, 0)
+ concatenated = append(concatenated, ecRecord.EI().Bytes()...)
+ concatenated = append(concatenated, ecRecord.ECR().Bytes()...)
+ concatenated = append(concatenated, ecRecord.PrevEC().Bytes()...)
+
+ ecHash := blake2b.Sum256(concatenated)
+
+ return epoch.NewMerkleRoot(ecHash[:])
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/notarization/manager.go b/packages/notarization/manager.go
new file mode 100644
index 0000000000..cc98e0e353
--- /dev/null
+++ b/packages/notarization/manager.go
@@ -0,0 +1,701 @@
+package notarization
+
+import (
+ "sync"
+ "time"
+
+ "github.com/cockroachdb/errors"
+
+ "github.com/iotaledger/hive.go/generics/event"
+ "github.com/iotaledger/hive.go/logger"
+
+ "github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/goshimmer/packages/conflictdag"
+ "github.com/iotaledger/goshimmer/packages/epoch"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+)
+
+const (
+ defaultMinEpochCommittableAge = 1 * time.Minute
+)
+
+// region Manager //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Manager is the notarization manager.
+type Manager struct {
+ tangle *tangle.Tangle
+ epochCommitmentFactory *EpochCommitmentFactory
+ epochCommitmentFactoryMutex sync.RWMutex
+ bootstrapMutex sync.RWMutex
+ options *ManagerOptions
+ pendingConflictsCounters map[epoch.Index]uint64
+ log *logger.Logger
+ Events *Events
+ bootstrapped bool
+}
+
+// NewManager creates and returns a new notarization manager.
+func NewManager(epochCommitmentFactory *EpochCommitmentFactory, t *tangle.Tangle, opts ...ManagerOption) (new *Manager) {
+ options := &ManagerOptions{
+ MinCommittableEpochAge: defaultMinEpochCommittableAge,
+ Log: nil,
+ }
+
+ for _, option := range opts {
+ option(options)
+ }
+
+ new = &Manager{
+ tangle: t,
+ epochCommitmentFactory: epochCommitmentFactory,
+ pendingConflictsCounters: make(map[epoch.Index]uint64),
+ log: options.Log,
+ options: options,
+ Events: &Events{
+ TangleTreeInserted: event.New[*TangleTreeUpdatedEvent](),
+ TangleTreeRemoved: event.New[*TangleTreeUpdatedEvent](),
+ StateMutationTreeInserted: event.New[*StateMutationTreeUpdatedEvent](),
+ StateMutationTreeRemoved: event.New[*StateMutationTreeUpdatedEvent](),
+ UTXOTreeInserted: event.New[*UTXOUpdatedEvent](),
+ UTXOTreeRemoved: event.New[*UTXOUpdatedEvent](),
+ EpochCommittable: event.New[*EpochCommittableEvent](),
+ ManaVectorUpdate: event.New[*ManaVectorUpdateEvent](),
+ Bootstrapped: event.New[*BootstrappedEvent](),
+ },
+ }
+
+ new.tangle.ConfirmationOracle.Events().BlockAccepted.Attach(onlyIfBootstrapped(t.TimeManager, func(event *tangle.BlockAcceptedEvent) {
+ new.OnBlockAccepted(event.Block)
+ }))
+
+ new.tangle.ConfirmationOracle.Events().BlockOrphaned.Attach(onlyIfBootstrapped(t.TimeManager, func(event *tangle.BlockAcceptedEvent) {
+ new.OnBlockOrphaned(event.Block)
+ }))
+
+ new.tangle.Ledger.Events.TransactionAccepted.Attach(onlyIfBootstrapped(t.TimeManager, func(event *ledger.TransactionAcceptedEvent) {
+ new.OnTransactionAccepted(event)
+ }))
+
+ new.tangle.Ledger.Events.TransactionInclusionUpdated.Attach(onlyIfBootstrapped(t.TimeManager, func(event *ledger.TransactionInclusionUpdatedEvent) {
+ new.OnTransactionInclusionUpdated(event)
+ }))
+
+ new.tangle.Ledger.ConflictDAG.Events.ConflictAccepted.Attach(onlyIfBootstrapped(t.TimeManager, func(event *conflictdag.ConflictAcceptedEvent[utxo.TransactionID]) {
+ new.OnConflictConfirmed(event.ID)
+ }))
+
+ new.tangle.Ledger.ConflictDAG.Events.ConflictCreated.Attach(onlyIfBootstrapped(t.TimeManager, func(event *conflictdag.ConflictCreatedEvent[utxo.TransactionID, utxo.OutputID]) {
+ new.OnConflictCreated(event.ID)
+ }))
+
+ new.tangle.Ledger.ConflictDAG.Events.ConflictRejected.Attach(onlyIfBootstrapped(t.TimeManager, func(event *conflictdag.ConflictRejectedEvent[utxo.TransactionID]) {
+ new.OnConflictRejected(event.ID)
+ }))
+
+ new.tangle.TimeManager.Events.AcceptanceTimeUpdated.Attach(onlyIfBootstrapped(t.TimeManager, func(event *tangle.TimeUpdate) {
+ new.OnAcceptanceTimeUpdated(event.ATT)
+ }))
+
+ return new
+}
+
+func onlyIfBootstrapped[E any](timeManager *tangle.TimeManager, handler func(event E)) *event.Closure[E] {
+ return event.NewClosure(func(event E) {
+ if !timeManager.Bootstrapped() {
+ return
+ }
+ handler(event)
+ })
+}
+
+// LoadSnapshot initiates the state and mana trees from a given snapshot.
+func (m *Manager) LoadSnapshot(snapshot *ledger.Snapshot) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ for _, outputWithMetadata := range snapshot.OutputsWithMetadata {
+ m.epochCommitmentFactory.storage.ledgerstateStorage.Store(outputWithMetadata).Release()
+ err := m.epochCommitmentFactory.insertStateLeaf(outputWithMetadata.ID())
+ if err != nil {
+ m.log.Error(err)
+ }
+ err = m.epochCommitmentFactory.updateManaLeaf(outputWithMetadata, true)
+ if err != nil {
+ m.log.Error(err)
+ }
+ }
+ for ei := snapshot.FullEpochIndex + 1; ei <= snapshot.DiffEpochIndex; ei++ {
+ epochDiff := snapshot.EpochDiffs[ei]
+ for _, spentOutputWithMetadata := range epochDiff.Spent() {
+ spentOutputIDBytes := spentOutputWithMetadata.ID().Bytes()
+ m.epochCommitmentFactory.storage.ledgerstateStorage.Delete(spentOutputIDBytes)
+ if has, _ := m.epochCommitmentFactory.stateRootTree.Has(spentOutputIDBytes); !has {
+ panic("epoch diff spends an output not contained in the ledger state")
+ }
+ _, err := m.epochCommitmentFactory.stateRootTree.Delete(spentOutputIDBytes)
+ if err != nil {
+ panic("could not delete leaf from state root tree")
+ }
+ }
+
+ for _, createdOutputWithMetadata := range epochDiff.Created() {
+ createdOutputIDBytes := createdOutputWithMetadata.ID().Bytes()
+ m.epochCommitmentFactory.storage.ledgerstateStorage.Store(createdOutputWithMetadata).Release()
+ _, err := m.epochCommitmentFactory.stateRootTree.Update(createdOutputIDBytes, createdOutputIDBytes)
+ if err != nil {
+ panic("could not update leaf of state root tree")
+ }
+ }
+ }
+
+ // The last committed epoch index corresponds to the last epoch diff stored in the snapshot.
+ if err := m.epochCommitmentFactory.storage.setLatestCommittableEpochIndex(snapshot.DiffEpochIndex); err != nil {
+ panic("could not set last committed epoch index")
+ }
+
+ // We assume as our earliest forking point the last epoch diff stored in the snapshot.
+ if err := m.epochCommitmentFactory.storage.setLastConfirmedEpochIndex(snapshot.DiffEpochIndex); err != nil {
+ panic("could not set last confirmed epoch index")
+ }
+
+ // We set it to the next epoch after snapshotted one. It will be updated upon first confirmed block will arrive.
+ if err := m.epochCommitmentFactory.storage.setAcceptanceEpochIndex(snapshot.DiffEpochIndex + 1); err != nil {
+ panic("could not set current epoch index")
+ }
+
+ m.epochCommitmentFactory.storage.ecRecordStorage.Store(snapshot.LatestECRecord).Release()
+}
+
+// GetLatestEC returns the latest commitment that a new block should commit to.
+func (m *Manager) GetLatestEC() (ecRecord *epoch.ECRecord, err error) {
+ m.epochCommitmentFactoryMutex.RLock()
+ defer m.epochCommitmentFactoryMutex.RUnlock()
+
+ latestCommittableEpoch, err := m.epochCommitmentFactory.storage.latestCommittableEpochIndex()
+ ecRecord = m.epochCommitmentFactory.loadECRecord(latestCommittableEpoch)
+ if ecRecord == nil {
+ err = errors.Errorf("could not get latest commitment")
+ }
+ return
+}
+
+// LatestConfirmedEpochIndex returns the latest epoch index that has been confirmed.
+func (m *Manager) LatestConfirmedEpochIndex() (epoch.Index, error) {
+ m.epochCommitmentFactoryMutex.RLock()
+ defer m.epochCommitmentFactoryMutex.RUnlock()
+
+ return m.epochCommitmentFactory.storage.lastConfirmedEpochIndex()
+}
+
+// OnBlockAccepted is the handler for block confirmed event.
+func (m *Manager) OnBlockAccepted(block *tangle.Block) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ ei := epoch.IndexFromTime(block.IssuingTime())
+
+ if m.isEpochAlreadyCommitted(ei) {
+ m.log.Errorf("block %s confirmed with issuing time %s in already committed epoch %d", block.ID(), block.IssuingTime(), ei)
+ return
+ }
+ err := m.epochCommitmentFactory.insertTangleLeaf(ei, block.ID())
+ if err != nil && m.log != nil {
+ m.log.Error(err)
+ return
+ }
+ m.Events.TangleTreeInserted.Trigger(&TangleTreeUpdatedEvent{EI: ei, BlockID: block.ID()})
+}
+
+// OnBlockOrphaned is the handler for block orphaned event.
+func (m *Manager) OnBlockOrphaned(block *tangle.Block) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ ei := epoch.IndexFromTime(block.IssuingTime())
+ if m.isEpochAlreadyCommitted(ei) {
+ m.log.Errorf("block %s orphaned with issuing time %s in already committed epoch %d", block.ID(), block.IssuingTime(), ei)
+ return
+ }
+ err := m.epochCommitmentFactory.removeTangleLeaf(ei, block.ID())
+ if err != nil && m.log != nil {
+ m.log.Error(err)
+ }
+
+ m.Events.TangleTreeRemoved.Trigger(&TangleTreeUpdatedEvent{EI: ei, BlockID: block.ID()})
+ transaction, isTransaction := block.Payload().(utxo.Transaction)
+ if isTransaction {
+ spent, created := m.resolveOutputs(transaction)
+ m.epochCommitmentFactory.deleteDiffUTXOs(ei, created, spent)
+ m.Events.UTXOTreeRemoved.Trigger(&UTXOUpdatedEvent{EI: ei, Spent: spent, Created: created})
+ }
+}
+
+// OnTransactionAccepted is the handler for transaction accepted event.
+func (m *Manager) OnTransactionAccepted(event *ledger.TransactionAcceptedEvent) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ txID := event.TransactionID
+
+ var txInclusionTime time.Time
+ m.tangle.Ledger.Storage.CachedTransactionMetadata(txID).Consume(func(txMeta *ledger.TransactionMetadata) {
+ txInclusionTime = txMeta.InclusionTime()
+ })
+ txEpoch := epoch.IndexFromTime(txInclusionTime)
+
+ if m.isEpochAlreadyCommitted(txEpoch) {
+ m.log.Errorf("transaction %s confirmed with issuing time %s in already committed epoch %d", event.TransactionID, txInclusionTime, txEpoch)
+ return
+ }
+
+ var spent, created []*ledger.OutputWithMetadata
+ m.tangle.Ledger.Storage.CachedTransaction(txID).Consume(func(tx utxo.Transaction) {
+ spent, created = m.resolveOutputs(tx)
+ })
+ if err := m.includeTransactionInEpoch(txID, txEpoch, spent, created); err != nil {
+ m.log.Error(err)
+ }
+}
+
+// OnTransactionInclusionUpdated is the handler for transaction inclusion updated event.
+func (m *Manager) OnTransactionInclusionUpdated(event *ledger.TransactionInclusionUpdatedEvent) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ oldEpoch := epoch.IndexFromTime(event.PreviousInclusionTime)
+ newEpoch := epoch.IndexFromTime(event.InclusionTime)
+
+ if oldEpoch == 0 || oldEpoch == newEpoch {
+ return
+ }
+
+ if m.isEpochAlreadyCommitted(oldEpoch) || m.isEpochAlreadyCommitted(newEpoch) {
+ m.log.Errorf("inclusion time of transaction changed for already committed epoch: previous EI %d, new EI %d", oldEpoch, newEpoch)
+ return
+ }
+
+ txID := event.TransactionID
+
+ var spent, created []*ledger.OutputWithMetadata
+ m.tangle.Ledger.Storage.CachedTransaction(txID).Consume(func(tx utxo.Transaction) {
+ spent, created = m.resolveOutputs(tx)
+ })
+
+ if err := m.removeTransactionFromEpoch(txID, oldEpoch, spent, created); err != nil {
+ m.log.Error(err)
+ }
+
+ if err := m.includeTransactionInEpoch(txID, newEpoch, spent, created); err != nil {
+ m.log.Error(err)
+ }
+}
+
+// OnConflictConfirmed is the handler for conflict confirmed event.
+func (m *Manager) OnConflictConfirmed(conflictID utxo.TransactionID) {
+ epochCommittableEvents, manaVectorUpdateEvents := m.onConflictConfirmed(conflictID)
+ m.triggerEpochEvents(epochCommittableEvents, manaVectorUpdateEvents)
+}
+
+// OnConflictConfirmed is the handler for conflict confirmed event.
+func (m *Manager) onConflictConfirmed(conflictID utxo.TransactionID) ([]*EpochCommittableEvent, []*ManaVectorUpdateEvent) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+ ei := m.getConflictEI(conflictID, true)
+
+ if m.isEpochAlreadyCommitted(ei) {
+ m.log.Errorf("conflict confirmed in already committed epoch %d", ei)
+ return nil, nil
+ }
+ return m.decreasePendingConflictCounter(ei)
+}
+
+// OnConflictCreated is the handler for conflict created event.
+func (m *Manager) OnConflictCreated(conflictID utxo.TransactionID) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ ei := m.getConflictEI(conflictID, false)
+
+ if m.isEpochAlreadyCommitted(ei) {
+ m.log.Errorf("conflict created in already committed epoch %d", ei)
+ return
+ }
+ m.increasePendingConflictCounter(ei)
+}
+
+// OnConflictRejected is the handler for conflict created event.
+func (m *Manager) OnConflictRejected(conflictID utxo.TransactionID) {
+ epochCommittableEvents, manaVectorUpdateEvents := m.onConflictRejected(conflictID)
+ m.triggerEpochEvents(epochCommittableEvents, manaVectorUpdateEvents)
+}
+
+// OnConflictRejected is the handler for conflict created event.
+func (m *Manager) onConflictRejected(conflictID utxo.TransactionID) ([]*EpochCommittableEvent, []*ManaVectorUpdateEvent) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ ei := m.getConflictEI(conflictID, true)
+
+ if m.isEpochAlreadyCommitted(ei) {
+ m.log.Errorf("conflict rejected in already committed epoch %d", ei)
+ return nil, nil
+ }
+ return m.decreasePendingConflictCounter(ei)
+}
+
+// OnAcceptanceTimeUpdated is the handler for time updated event and triggers the events.
+func (m *Manager) OnAcceptanceTimeUpdated(newTime time.Time) {
+ epochCommittableEvents, manaVectorUpdateEvents := m.onAcceptanceTimeUpdated(newTime)
+ m.triggerEpochEvents(epochCommittableEvents, manaVectorUpdateEvents)
+}
+
+// OnAcceptanceTimeUpdated is the handler for time updated event and returns events to be triggered.
+func (m *Manager) onAcceptanceTimeUpdated(newTime time.Time) ([]*EpochCommittableEvent, []*ManaVectorUpdateEvent) {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ ei := epoch.IndexFromTime(newTime)
+ currentEpochIndex, err := m.epochCommitmentFactory.storage.acceptanceEpochIndex()
+ if err != nil {
+ m.log.Error(errors.Wrap(err, "could not get current epoch index"))
+ return nil, nil
+ }
+ if ei > currentEpochIndex {
+ err = m.epochCommitmentFactory.storage.setAcceptanceEpochIndex(ei)
+ if err != nil {
+ m.log.Error(errors.Wrap(err, "could not set current epoch index"))
+ return nil, nil
+ }
+ return m.moveLatestCommittableEpoch(ei)
+ }
+ return nil, nil
+}
+
+// PendingConflictsCount returns the current value of pendingConflictsCount.
+func (m *Manager) PendingConflictsCount(ei epoch.Index) (pendingConflictsCount uint64) {
+ return m.pendingConflictsCounters[ei]
+}
+
+// PendingConflictsCountAll returns the current value of pendingConflictsCount per epoch.
+func (m *Manager) PendingConflictsCountAll() (pendingConflicts map[epoch.Index]uint64) {
+ pendingConflicts = make(map[epoch.Index]uint64, len(m.pendingConflictsCounters))
+ for k, v := range m.pendingConflictsCounters {
+ pendingConflicts[k] = v
+ }
+ return pendingConflicts
+}
+
+// Bootstrapped returns the current value of pendingConflictsCount per epoch.
+func (m *Manager) Bootstrapped() bool {
+ m.bootstrapMutex.RLock()
+ defer m.bootstrapMutex.RUnlock()
+ return m.bootstrapped
+}
+
+// Shutdown shuts down the manager's permanent storagee.
+func (m *Manager) Shutdown() {
+ m.epochCommitmentFactoryMutex.Lock()
+ defer m.epochCommitmentFactoryMutex.Unlock()
+
+ m.epochCommitmentFactory.storage.shutdown()
+}
+
+func (m *Manager) decreasePendingConflictCounter(ei epoch.Index) ([]*EpochCommittableEvent, []*ManaVectorUpdateEvent) {
+ m.pendingConflictsCounters[ei]--
+ if m.pendingConflictsCounters[ei] == 0 {
+ return m.moveLatestCommittableEpoch(ei)
+ }
+ return nil, nil
+}
+
+func (m *Manager) increasePendingConflictCounter(ei epoch.Index) {
+ m.pendingConflictsCounters[ei]++
+}
+
+func (m *Manager) includeTransactionInEpoch(txID utxo.TransactionID, ei epoch.Index, spent, created []*ledger.OutputWithMetadata) (err error) {
+ if err := m.epochCommitmentFactory.insertStateMutationLeaf(ei, txID); err != nil {
+ return err
+ }
+ m.epochCommitmentFactory.storeDiffUTXOs(ei, spent, created)
+
+ m.Events.StateMutationTreeInserted.Trigger(&StateMutationTreeUpdatedEvent{TransactionID: txID})
+ m.Events.UTXOTreeInserted.Trigger(&UTXOUpdatedEvent{EI: ei, Spent: spent, Created: created})
+
+ return nil
+}
+
+func (m *Manager) removeTransactionFromEpoch(txID utxo.TransactionID, ei epoch.Index, spent, created []*ledger.OutputWithMetadata) (err error) {
+ if err := m.epochCommitmentFactory.removeStateMutationLeaf(ei, txID); err != nil {
+ return err
+ }
+ m.epochCommitmentFactory.deleteDiffUTXOs(ei, spent, created)
+
+ m.Events.StateMutationTreeRemoved.Trigger(&StateMutationTreeUpdatedEvent{TransactionID: txID})
+ m.Events.UTXOTreeRemoved.Trigger(&UTXOUpdatedEvent{EI: ei, Spent: spent, Created: created})
+
+ return nil
+}
+
+// isCommittable returns if the epoch is committable, if all conflicts are resolved and the epoch is old enough.
+func (m *Manager) isCommittable(ei epoch.Index) bool {
+ return m.isOldEnough(ei) && m.allPastConflictsAreResolved(ei)
+}
+
+func (m *Manager) allPastConflictsAreResolved(ei epoch.Index) (conflictsResolved bool) {
+ lastEI, err := m.epochCommitmentFactory.storage.latestCommittableEpochIndex()
+ if err != nil {
+ return false
+ }
+ // epoch is not committable if there are any not resolved conflicts in this and past epochs
+ for index := lastEI; index <= ei; index++ {
+ if m.pendingConflictsCounters[index] != 0 {
+ return false
+ }
+ }
+ return true
+}
+
+func (m *Manager) isOldEnough(ei epoch.Index, issuingTime ...time.Time) (oldEnough bool) {
+ t := ei.EndTime()
+ currentATT := m.tangle.TimeManager.ATT()
+ if len(issuingTime) > 0 && issuingTime[0].After(currentATT) {
+ currentATT = issuingTime[0]
+ }
+
+ diff := currentATT.Sub(t)
+ if diff < m.options.MinCommittableEpochAge {
+ return false
+ }
+ return true
+}
+
+func (m *Manager) getConflictEI(conflictID utxo.TransactionID, earliestAttachmentMustBeBooked bool) (ei epoch.Index) {
+ earliestAttachment := m.tangle.BlockFactory.EarliestAttachment(utxo.NewTransactionIDs(conflictID), earliestAttachmentMustBeBooked)
+ ei = epoch.IndexFromTime(earliestAttachment.IssuingTime())
+ return
+}
+
+func (m *Manager) isEpochAlreadyCommitted(ei epoch.Index) bool {
+ latestCommittable, err := m.epochCommitmentFactory.storage.latestCommittableEpochIndex()
+ if err != nil {
+ m.log.Errorf("could not get the latest committed epoch: %v", err)
+ return false
+ }
+ return ei <= latestCommittable
+}
+
+func (m *Manager) resolveOutputs(tx utxo.Transaction) (spentOutputsWithMetadata, createdOutputsWithMetadata []*ledger.OutputWithMetadata) {
+ spentOutputsWithMetadata = make([]*ledger.OutputWithMetadata, 0)
+ createdOutputsWithMetadata = make([]*ledger.OutputWithMetadata, 0)
+ var spentOutputIDs utxo.OutputIDs
+ var createdOutputs []utxo.Output
+
+ spentOutputIDs = m.tangle.Ledger.Utils.ResolveInputs(tx.Inputs())
+ createdOutputs = tx.(*devnetvm.Transaction).Essence().Outputs().UTXOOutputs()
+
+ for it := spentOutputIDs.Iterator(); it.HasNext(); {
+ spentOutputID := it.Next()
+ m.tangle.Ledger.Storage.CachedOutput(spentOutputID).Consume(func(spentOutput utxo.Output) {
+ m.tangle.Ledger.Storage.CachedOutputMetadata(spentOutputID).Consume(func(spentOutputMetadata *ledger.OutputMetadata) {
+ spentOutputsWithMetadata = append(spentOutputsWithMetadata, ledger.NewOutputWithMetadata(spentOutputID, spentOutput, spentOutputMetadata.CreationTime(), spentOutputMetadata.ConsensusManaPledgeID(), spentOutputMetadata.AccessManaPledgeID()))
+ })
+ })
+ }
+
+ for _, createdOutput := range createdOutputs {
+ createdOutputID := createdOutput.ID()
+ m.tangle.Ledger.Storage.CachedOutputMetadata(createdOutputID).Consume(func(createdOutputMetadata *ledger.OutputMetadata) {
+ createdOutputsWithMetadata = append(createdOutputsWithMetadata, ledger.NewOutputWithMetadata(createdOutputID, createdOutput, createdOutputMetadata.CreationTime(), createdOutputMetadata.ConsensusManaPledgeID(), createdOutputMetadata.AccessManaPledgeID()))
+ })
+ }
+
+ return
+}
+
+func (m *Manager) manaVectorUpdate(ei epoch.Index) (event *ManaVectorUpdateEvent) {
+ epochForManaVector := ei - epoch.Index(m.options.ManaEpochDelay)
+ if epochForManaVector < 1 {
+ return
+ }
+ spent, created := m.epochCommitmentFactory.loadDiffUTXOs(epochForManaVector)
+ return &ManaVectorUpdateEvent{
+ EI: ei,
+ EpochDiffCreated: created,
+ EpochDiffSpent: spent,
+ }
+}
+
+func (m *Manager) moveLatestCommittableEpoch(currentEpoch epoch.Index) ([]*EpochCommittableEvent, []*ManaVectorUpdateEvent) {
+ latestCommittable, err := m.epochCommitmentFactory.storage.latestCommittableEpochIndex()
+ if err != nil {
+ m.log.Errorf("could not obtain last committed epoch index: %v", err)
+ return nil, nil
+ }
+
+ epochCommittableEvents := make([]*EpochCommittableEvent, 0)
+ manaVectorUpdateEvents := make([]*ManaVectorUpdateEvent, 0)
+ for ei := latestCommittable + 1; ei <= currentEpoch; ei++ {
+ if !m.isCommittable(ei) {
+ break
+ }
+
+ // reads the roots and store the ec
+ // rolls the state trees
+ ecRecord, ecRecordErr := m.epochCommitmentFactory.ecRecord(ei)
+ if ecRecordErr != nil {
+ m.log.Errorf("could not update commitments for epoch %d: %v", ei, ecRecordErr)
+ return nil, nil
+ }
+
+ if err = m.epochCommitmentFactory.storage.setLatestCommittableEpochIndex(ei); err != nil {
+ m.log.Errorf("could not set last committed epoch: %v", err)
+ return nil, nil
+ }
+
+ epochCommittableEvents = append(epochCommittableEvents, &EpochCommittableEvent{EI: ei, ECRecord: ecRecord})
+ if manaVectorUpdateEvent := m.manaVectorUpdate(ei); manaVectorUpdateEvent != nil {
+ manaVectorUpdateEvents = append(manaVectorUpdateEvents, manaVectorUpdateEvent)
+ }
+ }
+ return epochCommittableEvents, manaVectorUpdateEvents
+}
+
+func (m *Manager) triggerEpochEvents(epochCommittableEvents []*EpochCommittableEvent, manaVectorUpdateEvents []*ManaVectorUpdateEvent) {
+ for _, epochCommittableEvent := range epochCommittableEvents {
+ m.updateEpochsBootstrapped(epochCommittableEvent.EI)
+ m.Events.EpochCommittable.Trigger(epochCommittableEvent)
+ }
+ for _, manaVectorUpdateEvent := range manaVectorUpdateEvents {
+ m.Events.ManaVectorUpdate.Trigger(manaVectorUpdateEvent)
+ }
+}
+
+func (m *Manager) updateEpochsBootstrapped(ei epoch.Index) {
+ if !m.Bootstrapped() && (ei > epoch.IndexFromTime(clock.SyncedTime().Add(-m.options.BootstrapWindow)) || m.options.BootstrapWindow == 0) {
+ m.bootstrapMutex.Lock()
+ m.bootstrapped = true
+ m.bootstrapMutex.Unlock()
+ m.Events.Bootstrapped.Trigger(&BootstrappedEvent{})
+ }
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region Options //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// ManagerOption represents the return type of the optional config parameters of the notarization manager.
+type ManagerOption func(options *ManagerOptions)
+
+// ManagerOptions is a container of all the config parameters of the notarization manager.
+type ManagerOptions struct {
+ MinCommittableEpochAge time.Duration
+ BootstrapWindow time.Duration
+ ManaEpochDelay uint
+ Log *logger.Logger
+}
+
+// MinCommittableEpochAge specifies how old an epoch has to be for it to be committable.
+func MinCommittableEpochAge(d time.Duration) ManagerOption {
+ return func(options *ManagerOptions) {
+ options.MinCommittableEpochAge = d
+ }
+}
+
+// BootstrapWindow specifies when the notarization manager is considered to be bootstrapped.
+func BootstrapWindow(d time.Duration) ManagerOption {
+ return func(options *ManagerOptions) {
+ options.BootstrapWindow = d
+ }
+}
+
+// ManaDelay specifies the epoch offset for mana vector from the last committable epoch.
+func ManaDelay(d uint) ManagerOption {
+ return func(options *ManagerOptions) {
+ options.ManaEpochDelay = d
+ }
+}
+
+// Log provides the logger.
+func Log(log *logger.Logger) ManagerOption {
+ return func(options *ManagerOptions) {
+ options.Log = log
+ }
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region Events ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Events is a container that acts as a dictionary for the existing events of a notarization manager.
+type Events struct {
+ // EpochCommittable is an event that gets triggered whenever an epoch commitment is committable.
+ EpochCommittable *event.Event[*EpochCommittableEvent]
+ ManaVectorUpdate *event.Event[*ManaVectorUpdateEvent]
+ // TangleTreeInserted is an event that gets triggered when a Block is inserted into the Tangle smt.
+ TangleTreeInserted *event.Event[*TangleTreeUpdatedEvent]
+ // TangleTreeRemoved is an event that gets triggered when a Block is removed from Tangle smt.
+ TangleTreeRemoved *event.Event[*TangleTreeUpdatedEvent]
+ // StateMutationTreeInserted is an event that gets triggered when a transaction is inserted into the state mutation smt.
+ StateMutationTreeInserted *event.Event[*StateMutationTreeUpdatedEvent]
+ // StateMutationTreeRemoved is an event that gets triggered when a transaction is removed from state mutation smt.
+ StateMutationTreeRemoved *event.Event[*StateMutationTreeUpdatedEvent]
+ // UTXOTreeInserted is an event that gets triggered when UTXOs are stored into the UTXO smt.
+ UTXOTreeInserted *event.Event[*UTXOUpdatedEvent]
+ // UTXOTreeRemoved is an event that gets triggered when UTXOs are removed from the UTXO smt.
+ UTXOTreeRemoved *event.Event[*UTXOUpdatedEvent]
+ // Bootstrapped is an event that gets triggered when a notarization manager has the last committable epoch relatively close to current epoch.
+ Bootstrapped *event.Event[*BootstrappedEvent]
+}
+
+// TangleTreeUpdatedEvent is a container that acts as a dictionary for the TangleTree inserted/removed event related parameters.
+type TangleTreeUpdatedEvent struct {
+ // EI is the index of the block.
+ EI epoch.Index
+ // BlockID is the blockID that inserted/removed to/from the tangle smt.
+ BlockID tangle.BlockID
+}
+
+// BootstrappedEvent is an event that gets triggered when a notarization manager has the last committable epoch relatively close to current epoch.
+type BootstrappedEvent struct {
+ // EI is the index of the last commitable epoch
+ EI epoch.Index
+}
+
+// StateMutationTreeUpdatedEvent is a container that acts as a dictionary for the State mutation tree inserted/removed event related parameters.
+type StateMutationTreeUpdatedEvent struct {
+ // EI is the index of the transaction.
+ EI epoch.Index
+ // TransactionID is the transaction ID that inserted/removed to/from the state mutation smt.
+ TransactionID utxo.TransactionID
+}
+
+// UTXOUpdatedEvent is a container that acts as a dictionary for the UTXO update event related parameters.
+type UTXOUpdatedEvent struct {
+ // EI is the index of updated UTXO.
+ EI epoch.Index
+ // Created are the outputs created in a transaction.
+ Created []*ledger.OutputWithMetadata
+ // Spent are outputs that is spent in a transaction.
+ Spent []*ledger.OutputWithMetadata
+}
+
+// EpochCommittableEvent is a container that acts as a dictionary for the EpochCommittable event related parameters.
+type EpochCommittableEvent struct {
+ // EI is the index of committable epoch.
+ EI epoch.Index
+ // ECRecord is the ec root of committable epoch.
+ ECRecord *epoch.ECRecord
+}
+
+// ManaVectorUpdateEvent is a container that acts as a dictionary for the EpochCommittable event related parameters.
+type ManaVectorUpdateEvent struct {
+ // EI is the index of committable epoch.
+ EI epoch.Index
+ EpochDiffCreated []*ledger.OutputWithMetadata
+ EpochDiffSpent []*ledger.OutputWithMetadata
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/notarization/manager_test.go b/packages/notarization/manager_test.go
new file mode 100644
index 0000000000..6911a5910c
--- /dev/null
+++ b/packages/notarization/manager_test.go
@@ -0,0 +1,1104 @@
+package notarization
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/iotaledger/goshimmer/packages/conflictdag"
+ "github.com/iotaledger/goshimmer/packages/consensus/acceptance"
+ epoch "github.com/iotaledger/goshimmer/packages/epoch"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+
+ "github.com/iotaledger/hive.go/generics/event"
+ "github.com/iotaledger/hive.go/identity"
+ "github.com/iotaledger/hive.go/logger"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestNewManager(t *testing.T) {
+ testTangle := tangle.NewTestTangle()
+ m := NewManager(NewEpochCommitmentFactory(testTangle.Options.Store, testTangle, 1), testTangle)
+ assert.NotNil(t, m)
+}
+
+//
+// func TestManager_IsCommittable(t *testing.T) {
+// nodes := map[string]*identity.Identity{
+// "A": identity.GenerateIdentity(),
+// }
+// var weightProvider *tangle.CManaWeightProvider
+// manaRetrieverMock := func() map[identity.ID]float64 {
+// weightProvider.Update(time.Now(), nodes["A"].ID())
+// return map[identity.ID]float64{
+// nodes["A"].ID(): 100,
+// }
+// }
+// weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+//
+// genesisTime := time.Now().Add(-25 * time.Minute)
+// epochDuration := 5 * time.Minute
+//
+// testFramework, eventHandlerMock, m := setupFramework(t, genesisTime, epochDuration, epochDuration*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+//
+// ecRecord, _, err := testFramework.LatestCommitment()
+// require.NoError(t, err)
+//
+//
+// for i := 1; i < 5; i++ {
+// eventHandlerMock.Expect("EpochCommittable", epoch.Index(1))
+// }
+//
+// // Make all epochs committable by advancing ATT
+// testFramework.CreateBlock("Block7", tangle.WithIssuingTime(genesisTime.Add(epochDuration*6)), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+// testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+//
+// ei := epoch.Index(5)
+// m.pendingConflictsCounters[ei] = 0
+// // not old enough
+// assert.False(t, m.isCommittable(ei))
+//
+// ei = epoch.Index(1)
+// m.pendingConflictsCounters[ei] = 1
+// // old enough but pbc > 0
+// assert.False(t, m.isCommittable(ei))
+// m.pendingConflictsCounters[ei] = 0
+// // old enough and pbc > 0
+// assert.True(t, m.isCommittable(ei))
+// }
+
+func TestManager_GetLatestEC(t *testing.T) {
+ nodes := map[string]*identity.Identity{
+ "A": identity.GenerateIdentity(),
+ }
+ var weightProvider *tangle.CManaWeightProvider
+ manaRetrieverMock := func() map[identity.ID]float64 {
+ weightProvider.Update(time.Now(), nodes["A"].ID())
+ return map[identity.ID]float64{
+ nodes["A"].ID(): 100,
+ }
+ }
+ weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+
+ genesisTime := time.Now().Add(-25 * time.Minute)
+ epochDuration := 5 * time.Minute
+
+ testFramework, eventHandlerMock, m := setupFramework(t, genesisTime, epochDuration, epochDuration*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+
+ // epoch ages (in mins) since genesis [25,20,15,10,5]
+ for i := 1; i <= 5; i++ {
+ m.increasePendingConflictCounter(epoch.Index(i))
+ }
+ // Make all epochs committable by advancing ATT
+ testFramework.CreateBlock("Block7", tangle.WithIssuingTime(genesisTime.Add(epochDuration*6)), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+
+ commitment, err := m.GetLatestEC()
+ assert.NoError(t, err)
+ // only epoch 0 has pbc = 0
+ assert.Equal(t, epoch.Index(0), commitment.EI())
+
+ epochCommittableEvents, manaVectorUpdateEvents := m.decreasePendingConflictCounter(4)
+ assert.Emptyf(t, epochCommittableEvents, "expected no epoch committable events")
+ assert.Emptyf(t, manaVectorUpdateEvents, "expected no mana vector update events")
+
+ commitment, err = m.GetLatestEC()
+ assert.NoError(t, err)
+ // epoch 4 has pbc = 0 but is not old enough and epoch 1 has pbc != 0
+ assert.Equal(t, epoch.Index(0), commitment.EI())
+ event.Loop.WaitUntilAllTasksProcessed()
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(1))
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(2))
+ //
+ // eventHandlerMock.Expect("ManaVectorUpdate", epoch.Index(2))
+ committableEvents, _ := m.decreasePendingConflictCounter(1)
+ assert.Len(t, committableEvents, 1)
+ assert.Equal(t, epoch.Index(1), committableEvents[0].EI)
+
+ committableEvents, _ = m.decreasePendingConflictCounter(2)
+ assert.Len(t, committableEvents, 1)
+ assert.Equal(t, epoch.Index(2), committableEvents[0].EI)
+
+ commitment, err = m.GetLatestEC()
+ assert.NoError(t, err)
+ // epoch 2 has pbc=0 and is old enough
+ assert.Equal(t, epoch.Index(2), commitment.EI())
+}
+
+func TestManager_UpdateTangleTree(t *testing.T) {
+ nodes := make(map[string]*identity.Identity)
+ for _, node := range []string{"A", "B", "C", "D", "E"} {
+ nodes[node] = identity.GenerateIdentity()
+ }
+
+ var weightProvider *tangle.CManaWeightProvider
+ manaRetrieverMock := func() map[identity.ID]float64 {
+ for _, node := range nodes {
+ weightProvider.Update(time.Now(), node.ID())
+ }
+ return map[identity.ID]float64{
+ nodes["A"].ID(): 30,
+ nodes["B"].ID(): 20,
+ nodes["C"].ID(): 25,
+ nodes["D"].ID(): 25,
+ }
+ }
+ weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+
+ epochInterval := 1 * time.Second
+
+ // Make Current Epoch be epoch 5
+ genesisTime := time.Now().Add(-epochInterval * 5)
+
+ testFramework, eventHandlerMock, notarizationMgr := setupFramework(t, genesisTime, epochInterval, epochInterval*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+
+ var EC0 epoch.EC
+
+ issuingTime := genesisTime
+
+ // Block1, issuing time epoch 1
+ {
+ fmt.Println("block 1")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ EC0 = EC(ecRecord)
+ // PrevEC of Epoch0 is the empty Merkle Root
+ assert.Equal(t, epoch.MerkleRoot{}, ecRecord.PrevEC())
+ testFramework.CreateBlock("Block1", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block1")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block2, issuing time epoch 2
+ {
+ fmt.Println("block 2")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ assert.Equal(t, EC0, EC(ecRecord))
+ // PrevEC of Epoch0 is the empty Merkle Root
+ assert.Equal(t, epoch.MerkleRoot{}, ecRecord.PrevEC())
+ testFramework.CreateBlock("Block2", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block1"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block2")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfBlock(t, testFramework, notarizationMgr, map[string]bool{
+ "Block1": true,
+ })
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block3, issuing time epoch 3
+ {
+ fmt.Println("block 3")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ assert.Equal(t, EC0, EC(ecRecord))
+ // PrevEC of Epoch0 is the empty Merkle Root
+ assert.Equal(t, epoch.MerkleRoot{}, ecRecord.PrevEC())
+ testFramework.CreateBlock("Block3", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block2"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block3")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfBlock(t, testFramework, notarizationMgr, map[string]bool{
+ "Block2": true,
+ })
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block4, issuing time epoch 4
+ {
+ fmt.Println("block 4")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ assert.Equal(t, EC0, EC(ecRecord))
+ // PrevEC of Epoch0 is the empty Merkle Root
+ assert.Equal(t, epoch.MerkleRoot{}, ecRecord.PrevEC())
+ event.Loop.WaitUntilAllTasksProcessed()
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(1))
+ testFramework.CreateBlock("Block4", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block3", "Block2"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block4")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfBlock(t, testFramework, notarizationMgr, map[string]bool{
+ "Block3": true,
+ })
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block5, issuing time epoch 5
+ {
+ fmt.Println("block 5")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ fmt.Println(ecRecord)
+ testFramework.CreateBlock("Block5", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block5")
+ assert.Equal(t, epoch.Index(1), blk.EI())
+ assert.Equal(t, EC0, ecRecord.PrevEC())
+ }
+
+ eventHandlerMock.AssertExpectations(t)
+}
+
+func TestManager_UpdateStateMutationTree(t *testing.T) {
+ nodes := make(map[string]*identity.Identity)
+ for _, node := range []string{"A", "B", "C", "D", "E"} {
+ nodes[node] = identity.GenerateIdentity()
+ }
+
+ var weightProvider *tangle.CManaWeightProvider
+ manaRetrieverMock := func() map[identity.ID]float64 {
+ for _, node := range nodes {
+ weightProvider.Update(time.Now(), node.ID())
+ }
+ return map[identity.ID]float64{
+ nodes["A"].ID(): 30,
+ nodes["B"].ID(): 15,
+ nodes["C"].ID(): 25,
+ nodes["D"].ID(): 20,
+ nodes["E"].ID(): 10,
+ }
+ }
+ weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+
+ epochInterval := 1 * time.Second
+
+ // Make Current Epoch be epoch 5
+ genesisTime := time.Now().Add(-epochInterval * 5)
+
+ testFramework, eventHandlerMock, notarizationMgr := setupFramework(t, genesisTime, epochInterval, epochInterval*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+
+ var EC0, EC1, EC2 epoch.EC
+ issuingTime := genesisTime
+ // Block1, issuing time epoch 1
+ {
+ fmt.Println("block 1")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ EC0 = EC(ecRecord)
+ testFramework.CreateBlock("Block1", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block1")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block2, issuing time epoch 2
+ {
+ fmt.Println("block 2")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block2", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block1"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block2")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block3, issuing time epoch 3
+ {
+ fmt.Println("block 3")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block3", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block2"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block3")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block4, issuing time epoch 4
+ {
+ fmt.Println("block 4")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(1))
+ testFramework.CreateBlock("Block4", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block3"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block4")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block5 TX1, issuing time epoch 5
+ {
+ fmt.Println("block 5")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ EC1 = EC(ecRecord)
+
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(2))
+ testFramework.CreateBlock("Block5", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithInputs("A"), tangle.WithOutput("C", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block5")
+ assert.Equal(t, epoch.Index(1), blk.EI())
+ assert.Equal(t, EC0, ecRecord.PrevEC())
+ }
+
+ // Block6 TX2, issuing time epoch 5
+ {
+ fmt.Println("block 6")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ EC2 = EC(ecRecord)
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(3))
+ eventHandlerMock.Expect("ManaVectorUpdate", epoch.Index(3), []*ledger.OutputWithMetadata{}, []*ledger.OutputWithMetadata{})
+ testFramework.CreateBlock("Block6", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block5"), tangle.WithIssuer(nodes["E"].PublicKey()), tangle.WithInputs("B"), tangle.WithOutput("D", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block6")
+ assert.Equal(t, epoch.Index(2), blk.EI())
+ assert.Equal(t, EC1, ecRecord.PrevEC())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block7, issuing time epoch 6
+ {
+
+ fmt.Println("block 7")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(4))
+ eventHandlerMock.Expect("ManaVectorUpdate", epoch.Index(4), []*ledger.OutputWithMetadata{}, []*ledger.OutputWithMetadata{})
+ testFramework.CreateBlock("Block7", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block6"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithInputs("C"), tangle.WithOutput("E", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block7")
+ assert.Equal(t, epoch.Index(3), blk.EI())
+ assert.Equal(t, EC2, ecRecord.PrevEC())
+ }
+
+ // Block8, issuing time epoch 6
+ {
+ fmt.Println("block 8")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block8", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block7"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block8")
+ assert.Equal(t, epoch.Index(3), blk.EI())
+ assertExistenceOfTransaction(t, testFramework, notarizationMgr, map[string]bool{
+ "Block5": true,
+ "Block6": true,
+ })
+ }
+
+ eventHandlerMock.AssertExpectations(t)
+}
+
+func TestManager_UpdateStateMutationTreeWithConflict(t *testing.T) {
+ nodes := make(map[string]*identity.Identity)
+ for _, node := range []string{"A", "B", "C", "D", "E"} {
+ nodes[node] = identity.GenerateIdentity()
+ }
+
+ var weightProvider *tangle.CManaWeightProvider
+ manaRetrieverMock := func() map[identity.ID]float64 {
+ for _, node := range nodes {
+ weightProvider.Update(time.Now(), node.ID())
+ }
+ return map[identity.ID]float64{
+ nodes["A"].ID(): 30,
+ nodes["B"].ID(): 15,
+ nodes["C"].ID(): 25,
+ nodes["D"].ID(): 20,
+ nodes["E"].ID(): 10,
+ }
+ }
+
+ epochInterval := 1 * time.Second
+
+ // Make Current Epoch be epoch 5
+ genesisTime := time.Now().Add(-epochInterval * 5)
+
+ weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+ testFramework, eventHandlerMock, notarizationMgr := setupFramework(t, genesisTime, epochInterval, epochInterval*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+
+ issuingTime := genesisTime
+
+ // Block1, issuing time epoch 1
+ {
+ fmt.Println("block 1")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block1", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block1")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block2, issuing time epoch 1
+ {
+ fmt.Println("block 2")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block2", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block1"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block2")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block3, issuing time epoch 1
+ {
+ fmt.Println("block 3")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block3", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block2"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block3")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block4, issuing time epoch 1
+ {
+ fmt.Println("block 4")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block4", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block3"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block4")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block5 TX1, issuing time epoch 2
+ {
+ fmt.Println("block 5")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block5", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithInputs("A"), tangle.WithOutput("B", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block5")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block6 TX2, issuing time epoch 2
+ {
+ fmt.Println("block 6")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block6", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithInputs("A"), tangle.WithOutput("C", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block6")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfBlock(t, testFramework, notarizationMgr, map[string]bool{
+ "Block1": true,
+ "Block2": true,
+ "Block3": true,
+ "Block4": true,
+ })
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block7, issuing time epoch 3
+ {
+ fmt.Println("block 7")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block7", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block5"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithInputs("B"), tangle.WithOutput("E", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block7")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfBlock(t, testFramework, notarizationMgr, map[string]bool{
+ "Block5": true,
+ "Block6": false,
+ })
+ assertExistenceOfTransaction(t, testFramework, notarizationMgr, map[string]bool{
+ "Block5": true,
+ "Block6": false,
+ })
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block8, issuing time epoch 4
+ {
+ fmt.Println("block 8")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(1))
+ testFramework.CreateBlock("Block8", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block7"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block8")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfBlock(t, testFramework, notarizationMgr, map[string]bool{
+ "Block7": true,
+ })
+ assertExistenceOfTransaction(t, testFramework, notarizationMgr, map[string]bool{
+ "Block7": true,
+ })
+
+ eventHandlerMock.AssertExpectations(t)
+}
+
+func TestManager_TransactionInclusionUpdate(t *testing.T) {
+ nodes := make(map[string]*identity.Identity)
+ for _, node := range []string{"A", "B", "C", "D", "E"} {
+ nodes[node] = identity.GenerateIdentity()
+ }
+
+ var weightProvider *tangle.CManaWeightProvider
+ manaRetrieverMock := func() map[identity.ID]float64 {
+ for _, node := range nodes {
+ weightProvider.Update(time.Now(), node.ID())
+ }
+ return map[identity.ID]float64{
+ nodes["A"].ID(): 30,
+ nodes["B"].ID(): 15,
+ nodes["C"].ID(): 25,
+ nodes["D"].ID(): 20,
+ nodes["E"].ID(): 10,
+ }
+ }
+
+ epochInterval := 1 * time.Second
+
+ // Make Current Epoch be epoch 5
+ genesisTime := time.Now().Add(-epochInterval * 5)
+
+ weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+ testFramework, eventHandlerMock, notarizationMgr := setupFramework(t, genesisTime, epochInterval, epochInterval*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+
+ issuingTime := genesisTime
+
+ // Block1, issuing time epoch 1
+ {
+ fmt.Println("block 1")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block1", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block1")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block2, issuing time epoch 1
+ {
+ fmt.Println("block 2")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block2", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block1"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block2")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block3 TX1, issuing time epoch 1
+ {
+ fmt.Println("block 3")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block3", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block2"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithInputs("A"), tangle.WithOutput("C", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block3")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block4 TX2, issuing time epoch 1
+ {
+ fmt.Println("block 4")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block4", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block2"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithInputs("B"), tangle.WithOutput("D", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block4")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+
+ // pre-create block 8
+ testFramework.CreateBlock("Block8", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithInputs("C"), tangle.WithOutput("E", 500), tangle.WithECRecord(ecRecord))
+ }
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block5, issuing time epoch 2
+ {
+ fmt.Println("block 5")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block5", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block3"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block5")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block6, issuing time epoch 2
+ {
+ fmt.Println("block 6")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block6", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block5"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithReattachment("Block8"), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block6")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block7, issuing time epoch 2
+ {
+ fmt.Println("block 7")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block7", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block6"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block7")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block8, issuing time epoch 1, earlier attachment of Block6, with same tx
+ {
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block8")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block9, issuing time epoch 2
+ {
+ fmt.Println("block 9")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block9", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block8", "Block7"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block9").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block9")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+ // Block10, issuing time epoch 2
+ {
+ fmt.Println("block 10")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ testFramework.CreateBlock("Block10", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block9"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block10").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block10")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertExistenceOfTransaction(t, testFramework, notarizationMgr, map[string]bool{
+ "Block3": true,
+ "Block4": true,
+ "Block8": true,
+ })
+
+ assertEpochDiff(t, testFramework, notarizationMgr, 1, []string{"A", "B"}, []string{"D", "E"})
+ assertEpochDiff(t, testFramework, notarizationMgr, 2, []string{}, []string{})
+
+ // The transaction should be moved to the earlier epoch
+ p, err := notarizationMgr.GetTransactionInclusionProof(testFramework.Transaction("Block6").ID())
+ require.NoError(t, err)
+ assert.Equal(t, epoch.Index(1), p.EI)
+
+ eventHandlerMock.AssertExpectations(t)
+}
+
+func TestManager_DiffUTXOs(t *testing.T) {
+ nodes := make(map[string]*identity.Identity)
+ for _, node := range []string{"A", "B", "C", "D", "E"} {
+ nodes[node] = identity.GenerateIdentity()
+ }
+
+ var weightProvider *tangle.CManaWeightProvider
+ manaRetrieverMock := func() map[identity.ID]float64 {
+ for _, node := range nodes {
+ weightProvider.Update(time.Now(), node.ID())
+ }
+ return map[identity.ID]float64{
+ nodes["A"].ID(): 30,
+ nodes["B"].ID(): 15,
+ nodes["C"].ID(): 25,
+ nodes["D"].ID(): 20,
+ nodes["E"].ID(): 10,
+ }
+ }
+
+ epochInterval := 1 * time.Second
+
+ // Make Current Epoch be epoch 5
+ genesisTime := time.Now().Add(-epochInterval * 5)
+
+ weightProvider = tangle.NewCManaWeightProvider(manaRetrieverMock, time.Now)
+ testFramework, eventHandlerMock, notarizationMgr := setupFramework(t, genesisTime, epochInterval, epochInterval*2, tangle.ApprovalWeights(weightProvider), tangle.WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
+
+ issuingTime := genesisTime
+
+ // Block1, issuing time epoch 1
+ {
+ fmt.Println("block 1")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(0), ecRecord.EI())
+ testFramework.CreateBlock("Block1", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Genesis"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithInputs("A"), tangle.WithOutput("C1", 400), tangle.WithOutput("C1+", 100), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block1")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ // Block2, issuing time epoch 1
+ {
+ fmt.Println("block 2")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(0), ecRecord.EI())
+ testFramework.CreateBlock("Block2", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block1"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithInputs("B"), tangle.WithOutput("D2", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block2")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertEpochDiff(t, testFramework, notarizationMgr, epoch.Index(1), []string{"A"}, []string{"C1", "C1+"})
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block3, issuing time epoch 2
+ {
+ fmt.Println("block 3")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(0), ecRecord.EI())
+ testFramework.CreateBlock("Block3", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block2"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithInputs("D2"), tangle.WithOutput("E3", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block3")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ // Block4, issuing time epoch 2
+ {
+ fmt.Println("block 4")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(0), ecRecord.EI())
+ testFramework.CreateBlock("Block4", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block3"), tangle.WithIssuer(nodes["D"].PublicKey()), tangle.WithInputs("E3"), tangle.WithOutput("F4", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block4")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertEpochDiff(t, testFramework, notarizationMgr, epoch.Index(2), []string{"D2"}, []string{"E3"})
+
+ issuingTime = issuingTime.Add(epochInterval)
+
+ // Block5, issuing time epoch 3
+ {
+ fmt.Println("block 5")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(0), ecRecord.EI())
+
+ testFramework.CreateBlock("Block5", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithInputs("F4"), tangle.WithOutput("G5", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block5")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ assertEpochDiff(t, testFramework, notarizationMgr, epoch.Index(1), []string{"A", "B"}, []string{"C1", "C1+", "D2"})
+ assertEpochDiff(t, testFramework, notarizationMgr, epoch.Index(2), []string{"D2"}, []string{"F4"})
+
+ // Block6, issuing time epoch 3
+ {
+ fmt.Println("block 6")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(0), ecRecord.EI())
+
+ eventHandlerMock.Expect("EpochCommittable", epoch.Index(1))
+ testFramework.CreateBlock("Block6", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block5"), tangle.WithIssuer(nodes["E"].PublicKey()), tangle.WithInputs("G5"), tangle.WithOutput("H6", 500), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block6")
+ assert.Equal(t, epoch.Index(0), blk.EI())
+ }
+
+ // Block7, issuing time epoch 3, if we loaded the diff we should just have F4 and H6 as spent and created
+ {
+ fmt.Println("block 7")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(1), ecRecord.EI())
+
+ testFramework.CreateBlock("Block7", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block6"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block7")
+ assert.Equal(t, epoch.Index(1), blk.EI())
+ }
+
+ // Block8, issuing time epoch 2, reattaches Block6's TX from epoch 3 to epoch 2
+ {
+ fmt.Println("block 8")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(1), ecRecord.EI())
+
+ testFramework.CreateBlock("Block8", tangle.WithIssuingTime(issuingTime.Add(-epochInterval)), tangle.WithStrongParents("Block4"), tangle.WithIssuer(nodes["B"].PublicKey()), tangle.WithReattachment("Block6"), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block8")
+ assert.Equal(t, epoch.Index(1), blk.EI())
+ }
+
+ // Block9, issuing time epoch 3, confirms Block8 (reattachment of Block 6)
+ {
+ fmt.Println("block 9")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(1), ecRecord.EI())
+
+ testFramework.CreateBlock("Block9", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block8"), tangle.WithIssuer(nodes["A"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block9").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block9")
+ assert.Equal(t, epoch.Index(1), blk.EI())
+ }
+
+ // Block10, issuing time epoch 3, confirms Block9 and reattachment of Block 6
+ {
+ fmt.Println("block 10")
+
+ ecRecord, _, err := testFramework.LatestCommitment()
+ require.NoError(t, err)
+ require.Equal(t, epoch.Index(1), ecRecord.EI())
+
+ testFramework.CreateBlock("Block10", tangle.WithIssuingTime(issuingTime), tangle.WithStrongParents("Block9"), tangle.WithIssuer(nodes["C"].PublicKey()), tangle.WithECRecord(ecRecord))
+ testFramework.IssueBlocks("Block10").WaitUntilAllTasksProcessed()
+
+ blk := testFramework.Block("Block10")
+ assert.Equal(t, epoch.Index(1), blk.EI())
+ }
+
+ assertEpochDiff(t, testFramework, notarizationMgr, epoch.Index(2), []string{"G5", "D2"}, []string{"F4", "H6"})
+ assertEpochDiff(t, testFramework, notarizationMgr, epoch.Index(3), []string{"F4"}, []string{"G5"})
+
+ eventHandlerMock.AssertExpectations(t)
+}
+
+func setupFramework(t *testing.T, genesisTime time.Time, epochInterval time.Duration, minCommittable time.Duration, options ...tangle.Option) (testFramework *tangle.BlockTestFramework, eventMock *EventMock, m *Manager) {
+ epoch.Duration = int64(epochInterval.Seconds())
+
+ testTangle := tangle.NewTestTangle(append([]tangle.Option{tangle.StartSynced(true), tangle.GenesisTime(genesisTime)}, options...)...)
+ testTangle.Booker.MarkersManager.Options.MaxPastMarkerDistance = 0
+
+ testFramework = tangle.NewBlockTestFramework(testTangle, tangle.WithGenesisOutput("A", 500), tangle.WithGenesisOutput("B", 500))
+
+ // set up finality gadget
+ testOpts := []acceptance.Option{
+ acceptance.WithConflictThresholdTranslation(TestConflictAcceptanceStateTranslation),
+ acceptance.WithBlockThresholdTranslation(TestBlockAcceptanceStateTranslation),
+ }
+ sfg := acceptance.NewSimpleFinalityGadget(testTangle, testOpts...)
+ testTangle.ConfirmationOracle = sfg
+
+ // set up notarization manager
+ ecFactory := NewEpochCommitmentFactory(testTangle.Options.Store, testTangle, 0)
+ m = NewManager(ecFactory, testTangle, MinCommittableEpochAge(minCommittable), BootstrapWindow(minCommittable*2), ManaDelay(2), Log(logger.NewExampleLogger("test")))
+
+ commitmentFunc := func() (ecRecord *epoch.ECRecord, latestConfirmedEpoch epoch.Index, err error) {
+ ecRecord, err = m.GetLatestEC()
+ require.NoError(t, err)
+ latestConfirmedEpoch, err = m.LatestConfirmedEpochIndex()
+ require.NoError(t, err)
+ return ecRecord, latestConfirmedEpoch, nil
+ }
+ testTangle.Options.CommitmentFunc = commitmentFunc
+
+ testTangle.Setup()
+ registerToTangleEvents(sfg, testTangle)
+ loadSnapshot(m, testFramework)
+
+ eventMock = NewEventMock(t, m)
+
+ return testFramework, eventMock, m
+}
+
+func assertExistenceOfBlock(t *testing.T, testFramework *tangle.BlockTestFramework, m *Manager, results map[string]bool) {
+ event.Loop.WaitUntilAllTasksProcessed()
+
+ for alias, result := range results {
+ blkID := testFramework.Block(alias).ID()
+ p, err := m.GetBlockInclusionProof(blkID)
+ require.NoError(t, err)
+ var ei epoch.Index
+ m.tangle.Storage.Block(blkID).Consume(func(block *tangle.Block) {
+ t := block.IssuingTime()
+ ei = epoch.IndexFromTime(t)
+ })
+ valid := m.epochCommitmentFactory.VerifyTangleRoot(*p, blkID)
+ assert.Equal(t, result, valid, "block %s not included in epoch %s", alias, ei)
+ }
+}
+
+func assertExistenceOfTransaction(t *testing.T, testFramework *tangle.BlockTestFramework, m *Manager, results map[string]bool) {
+ event.Loop.WaitUntilAllTasksProcessed()
+
+ for alias, result := range results {
+ var ei epoch.Index
+ var notConfirmed bool
+
+ txID := testFramework.Transaction(alias).ID()
+
+ m.tangle.Ledger.Storage.CachedTransactionMetadata(txID).Consume(func(txMeta *ledger.TransactionMetadata) {
+ if txMeta.InclusionTime().IsZero() {
+ notConfirmed = true
+ return
+ }
+ ei = epoch.IndexFromTime(txMeta.InclusionTime())
+ })
+
+ if notConfirmed {
+ assert.Equal(t, result, false, "transaction %s not confirmed", alias)
+ return
+ }
+
+ p, err := m.GetTransactionInclusionProof(txID)
+ require.NoError(t, err)
+
+ valid := m.epochCommitmentFactory.VerifyStateMutationRoot(*p, testFramework.TransactionID(alias))
+ assert.Equal(t, result, valid, "transaction %s inclusion differs in epoch %s", alias, ei)
+ }
+}
+
+func assertEpochDiff(t *testing.T, testFramework *tangle.BlockTestFramework, m *Manager, ei epoch.Index, expectedSpentAliases, expectedCreatedAliases []string) {
+ event.Loop.WaitUntilAllTasksProcessed()
+
+ spent, created := m.epochCommitmentFactory.loadDiffUTXOs(ei)
+ expectedSpentIDs := utxo.NewOutputIDs()
+ expectedCreatedIDs := utxo.NewOutputIDs()
+ actualSpentIDs := utxo.NewOutputIDs()
+ actualCreatedIDs := utxo.NewOutputIDs()
+
+ for _, alias := range expectedSpentAliases {
+ expectedSpentIDs.Add(testFramework.Output(alias).ID())
+ }
+
+ for _, alias := range expectedCreatedAliases {
+ expectedCreatedIDs.Add(testFramework.Output(alias).ID())
+ }
+
+ for _, outputWithMetadata := range spent {
+ actualSpentIDs.Add(outputWithMetadata.ID())
+ }
+
+ for _, outputWithMetadata := range created {
+ actualCreatedIDs.Add(outputWithMetadata.ID())
+ }
+
+ assert.True(t, expectedSpentIDs.Equal(actualSpentIDs), "spent outputs for epoch %d do not match:\nExpected: %s\nActual: %s", ei, expectedSpentIDs, actualSpentIDs)
+ assert.True(t, expectedCreatedIDs.Equal(actualCreatedIDs), "created outputs for epoch %d do not match:\nExpected: %s\nActual: %s", ei, expectedCreatedIDs, actualCreatedIDs)
+}
+
+func loadSnapshot(m *Manager, testFramework *tangle.BlockTestFramework) {
+ snapshot := testFramework.Snapshot()
+ snapshot.DiffEpochIndex = epoch.Index(0)
+ snapshot.FullEpochIndex = epoch.Index(0)
+
+ var createMetadata []*ledger.OutputWithMetadata
+ for _, metadata := range snapshot.OutputsWithMetadata {
+ createMetadata = append(createMetadata, metadata)
+ }
+ snapshot.EpochDiffs = make(map[epoch.Index]*ledger.EpochDiff)
+ snapshot.EpochDiffs[epoch.Index(0)] = ledger.NewEpochDiff([]*ledger.OutputWithMetadata{}, createMetadata)
+
+ ecRecord := epoch.NewECRecord(snapshot.FullEpochIndex)
+ ecRecord.SetECR(epoch.MerkleRoot{})
+ ecRecord.SetPrevEC(epoch.MerkleRoot{})
+ snapshot.LatestECRecord = ecRecord
+
+ m.LoadSnapshot(snapshot)
+}
+
+func registerToTangleEvents(sfg *acceptance.Gadget, testTangle *tangle.Tangle) {
+ testTangle.ApprovalWeightManager.Events.MarkerWeightChanged.Hook(event.NewClosure(func(e *tangle.MarkerWeightChangedEvent) {
+ sfg.HandleMarker(e.Marker, e.Weight)
+ }))
+ testTangle.ApprovalWeightManager.Events.ConflictWeightChanged.Hook(event.NewClosure(func(e *tangle.ConflictWeightChangedEvent) {
+ sfg.HandleConflict(e.ConflictID, e.Weight)
+ }))
+}
diff --git a/packages/notarization/proofs.go b/packages/notarization/proofs.go
new file mode 100644
index 0000000000..a296f24ad5
--- /dev/null
+++ b/packages/notarization/proofs.go
@@ -0,0 +1,109 @@
+package notarization
+
+import (
+ "github.com/celestiaorg/smt"
+ "github.com/cockroachdb/errors"
+ "github.com/iotaledger/goshimmer/packages/epoch"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/tangle"
+ "github.com/iotaledger/hive.go/generics/lo"
+ "golang.org/x/crypto/blake2b"
+)
+
+// region proofs helpers ///////////////////////////////////////////////////////////////////////////////////////////////
+
+// CommitmentProof represents an inclusion proof for a specific epoch.
+type CommitmentProof struct {
+ EI epoch.Index
+ proof smt.SparseMerkleProof
+ root []byte
+}
+
+// GetBlockInclusionProof gets the proof of the inclusion (acceptance) of a block.
+func (m *Manager) GetBlockInclusionProof(blockID tangle.BlockID) (*CommitmentProof, error) {
+ var ei epoch.Index
+ m.tangle.Storage.Block(blockID).Consume(func(block *tangle.Block) {
+ t := block.IssuingTime()
+ ei = epoch.IndexFromTime(t)
+ })
+ proof, err := m.epochCommitmentFactory.ProofTangleRoot(ei, blockID)
+ if err != nil {
+ return nil, err
+ }
+ return proof, nil
+}
+
+// GetTransactionInclusionProof gets the proof of the inclusion (acceptance) of a transaction.
+func (m *Manager) GetTransactionInclusionProof(transactionID utxo.TransactionID) (*CommitmentProof, error) {
+ var ei epoch.Index
+ m.tangle.Ledger.Storage.CachedTransactionMetadata(transactionID).Consume(func(txMeta *ledger.TransactionMetadata) {
+ ei = epoch.IndexFromTime(txMeta.InclusionTime())
+ })
+ proof, err := m.epochCommitmentFactory.ProofStateMutationRoot(ei, transactionID)
+ if err != nil {
+ return nil, err
+ }
+ return proof, nil
+}
+
+func (f *EpochCommitmentFactory) verifyRoot(proof CommitmentProof, key []byte, value []byte) bool {
+ return smt.VerifyProof(proof.proof, proof.root, key, value, lo.PanicOnErr(blake2b.New256(nil)))
+}
+
+// ProofStateRoot returns the merkle proof for the outputID against the state root.
+func (f *EpochCommitmentFactory) ProofStateRoot(ei epoch.Index, outID utxo.OutputID) (*CommitmentProof, error) {
+ key := outID.Bytes()
+ root := f.commitmentTrees[ei].tangleTree.Root()
+ proof, err := f.stateRootTree.ProveForRoot(key, root)
+ if err != nil {
+ return nil, errors.Wrap(err, "could not generate the state root proof")
+ }
+ return &CommitmentProof{ei, proof, root}, nil
+}
+
+// ProofStateMutationRoot returns the merkle proof for the transactionID against the state mutation root.
+func (f *EpochCommitmentFactory) ProofStateMutationRoot(ei epoch.Index, txID utxo.TransactionID) (*CommitmentProof, error) {
+ committmentTrees, err := f.getCommitmentTrees(ei)
+ if err != nil {
+ return nil, errors.Wrapf(err, "cannot get commitment trees for epoch %d", ei)
+ }
+
+ key := txID.Bytes()
+ root := committmentTrees.stateMutationTree.Root()
+ proof, err := committmentTrees.stateMutationTree.ProveForRoot(key, root)
+ if err != nil {
+ return nil, errors.Wrap(err, "could not generate the state mutation root proof")
+ }
+ return &CommitmentProof{ei, proof, root}, nil
+}
+
+// ProofTangleRoot returns the merkle proof for the blockID against the tangle root.
+func (f *EpochCommitmentFactory) ProofTangleRoot(ei epoch.Index, blockID tangle.BlockID) (*CommitmentProof, error) {
+ committmentTrees, err := f.getCommitmentTrees(ei)
+ if err != nil {
+ return nil, errors.Wrapf(err, "cannot get commitment trees for epoch %d", ei)
+ }
+
+ key := blockID.Bytes()
+ root := committmentTrees.tangleTree.Root()
+ proof, err := committmentTrees.tangleTree.ProveForRoot(key, root)
+ if err != nil {
+ return nil, errors.Wrap(err, "could not generate the tangle root proof")
+ }
+ return &CommitmentProof{ei, proof, root}, nil
+}
+
+// VerifyTangleRoot verify the provided merkle proof against the tangle root.
+func (f *EpochCommitmentFactory) VerifyTangleRoot(proof CommitmentProof, blockID tangle.BlockID) bool {
+ key := blockID.Bytes()
+ return f.verifyRoot(proof, key, key)
+}
+
+// VerifyStateMutationRoot verify the provided merkle proof against the state mutation root.
+func (f *EpochCommitmentFactory) VerifyStateMutationRoot(proof CommitmentProof, transactionID utxo.TransactionID) bool {
+ key := transactionID.Bytes()
+ return f.verifyRoot(proof, key, key)
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/notarization/storage.go b/packages/notarization/storage.go
new file mode 100644
index 0000000000..4ee85c7cb8
--- /dev/null
+++ b/packages/notarization/storage.go
@@ -0,0 +1,248 @@
+package notarization
+
+import (
+ "sync"
+ "time"
+
+ "github.com/cockroachdb/errors"
+ "github.com/iotaledger/hive.go/generics/objectstorage"
+ "github.com/iotaledger/hive.go/kvstore"
+ "github.com/iotaledger/hive.go/kvstore/mapdb"
+
+ "github.com/iotaledger/goshimmer/packages/database"
+ "github.com/iotaledger/goshimmer/packages/epoch"
+ "github.com/iotaledger/goshimmer/packages/ledger"
+)
+
+// region storage //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// EpochCommitmentStorage is a Ledger component that bundles the storage related API.
+type EpochCommitmentStorage struct {
+ // Base store for all other storages, prefixed by the package
+ baseStore kvstore.KVStore
+
+ ledgerstateStorage *objectstorage.ObjectStorage[*ledger.OutputWithMetadata]
+
+ ecRecordStorage *objectstorage.ObjectStorage[*epoch.ECRecord]
+
+ // Delta storages
+ epochDiffStorages map[epoch.Index]*epochDiffStorage
+
+ // epochCommitmentStorageOptions is a dictionary for configuration parameters of the Storage.
+ epochCommitmentStorageOptions *options
+
+ // shutdownOnce is used to ensure that the Shutdown routine is executed only a single time.
+ shutdownOnce sync.Once
+}
+
+type epochDiffStorage struct {
+ spent *objectstorage.ObjectStorage[*ledger.OutputWithMetadata]
+ created *objectstorage.ObjectStorage[*ledger.OutputWithMetadata]
+}
+
+// newEpochCommitmentStorage returns a new storage instance for the given Ledger.
+func newEpochCommitmentStorage(options ...Option) (new *EpochCommitmentStorage) {
+ new = &EpochCommitmentStorage{
+ epochCommitmentStorageOptions: newOptions(options...),
+ }
+
+ new.baseStore = new.epochCommitmentStorageOptions.store
+
+ new.ledgerstateStorage = objectstorage.NewStructStorage[ledger.OutputWithMetadata](
+ objectstorage.NewStoreWithRealm(new.baseStore, database.PrefixNotarization, prefixLedgerState),
+ new.epochCommitmentStorageOptions.cacheTimeProvider.CacheTime(new.epochCommitmentStorageOptions.epochCommitmentCacheTime),
+ objectstorage.LeakDetectionEnabled(false),
+ objectstorage.StoreOnCreation(true),
+ )
+
+ new.ecRecordStorage = objectstorage.NewStructStorage[epoch.ECRecord](
+ objectstorage.NewStoreWithRealm(new.baseStore, database.PrefixNotarization, prefixECRecord),
+ new.epochCommitmentStorageOptions.cacheTimeProvider.CacheTime(new.epochCommitmentStorageOptions.epochCommitmentCacheTime),
+ objectstorage.LeakDetectionEnabled(false),
+ objectstorage.StoreOnCreation(true),
+ )
+
+ new.epochDiffStorages = make(map[epoch.Index]*epochDiffStorage)
+
+ return new
+}
+
+// CachedECRecord retrieves cached ECRecord of the given EI. (Make sure to Release or Consume the return object.)
+func (s *EpochCommitmentStorage) CachedECRecord(ei epoch.Index, computeIfAbsentCallback ...func(ei epoch.Index) *epoch.ECRecord) (cachedEpochDiff *objectstorage.CachedObject[*epoch.ECRecord]) {
+ if len(computeIfAbsentCallback) >= 1 {
+ return s.ecRecordStorage.ComputeIfAbsent(ei.Bytes(), func(key []byte) *epoch.ECRecord {
+ return computeIfAbsentCallback[0](ei)
+ })
+ }
+
+ return s.ecRecordStorage.Load(ei.Bytes())
+}
+
+// shutdown shuts down the KVStore used to persist data.
+func (s *EpochCommitmentStorage) shutdown() {
+ s.shutdownOnce.Do(func() {
+ s.ledgerstateStorage.Shutdown()
+ s.ecRecordStorage.Shutdown()
+ for _, epochDiffStorage := range s.epochDiffStorages {
+ epochDiffStorage.spent.Shutdown()
+ epochDiffStorage.created.Shutdown()
+ }
+ })
+}
+
+func (s *EpochCommitmentStorage) setLatestCommittableEpochIndex(ei epoch.Index) error {
+ return s.setIndexFlag("latestCommittableEpochIndex", ei)
+}
+
+func (s *EpochCommitmentStorage) latestCommittableEpochIndex() (ei epoch.Index, err error) {
+ return s.getIndexFlag("latestCommittableEpochIndex")
+}
+
+func (s *EpochCommitmentStorage) setLastConfirmedEpochIndex(ei epoch.Index) error {
+ return s.setIndexFlag("lastConfirmedEpochIndex", ei)
+}
+
+func (s *EpochCommitmentStorage) lastConfirmedEpochIndex() (ei epoch.Index, err error) {
+ return s.getIndexFlag("lastConfirmedEpochIndex")
+}
+
+func (s *EpochCommitmentStorage) setAcceptanceEpochIndex(ei epoch.Index) error {
+ return s.setIndexFlag("acceptanceEpochIndex", ei)
+}
+
+func (s *EpochCommitmentStorage) acceptanceEpochIndex() (ei epoch.Index, err error) {
+ return s.getIndexFlag("acceptanceEpochIndex")
+}
+
+func (s *EpochCommitmentStorage) getIndexFlag(flag string) (ei epoch.Index, err error) {
+ var value []byte
+ if value, err = s.baseStore.Get([]byte(flag)); err != nil {
+ return ei, errors.Wrapf(err, "failed to get %s from database", flag)
+ }
+
+ if ei, _, err = epoch.IndexFromBytes(value); err != nil {
+ return ei, errors.Wrap(err, "failed to deserialize EI from bytes")
+ }
+
+ return
+}
+
+func (s *EpochCommitmentStorage) setIndexFlag(flag string, ei epoch.Index) (err error) {
+ if err := s.baseStore.Set([]byte(flag), ei.Bytes()); err != nil {
+ return errors.Wrapf(err, "failed to set %s in database", flag)
+ }
+ return nil
+}
+
+func (s *EpochCommitmentStorage) dropEpochDiffStorage(ei epoch.Index) {
+ // TODO: properly drop (delete epoch bucketed) storage
+ diffStorage := s.getEpochDiffStorage(ei)
+ delete(s.epochDiffStorages, ei)
+ go func() {
+ diffStorage.spent.Shutdown()
+ diffStorage.created.Shutdown()
+ }()
+}
+
+func (s *EpochCommitmentStorage) getEpochDiffStorage(ei epoch.Index) (diffStorage *epochDiffStorage) {
+ if epochDiffStorage, exists := s.epochDiffStorages[ei]; exists {
+ return epochDiffStorage
+ }
+
+ spentDiffStore, err := s.baseStore.WithRealm(append([]byte{database.PrefixNotarization, prefixEpochDiffSpent}, ei.Bytes()...))
+ if err != nil {
+ panic(err)
+ }
+ createdDiffStore, err := s.baseStore.WithRealm(append([]byte{database.PrefixNotarization, prefixEpochDiffCreated}, ei.Bytes()...))
+ if err != nil {
+ panic(err)
+ }
+
+ diffStorage = &epochDiffStorage{
+ spent: objectstorage.NewStructStorage[ledger.OutputWithMetadata](
+ spentDiffStore,
+ s.epochCommitmentStorageOptions.cacheTimeProvider.CacheTime(s.epochCommitmentStorageOptions.epochCommitmentCacheTime),
+ objectstorage.LeakDetectionEnabled(false),
+ objectstorage.StoreOnCreation(true),
+ ),
+
+ created: objectstorage.NewStructStorage[ledger.OutputWithMetadata](
+ createdDiffStore,
+ s.epochCommitmentStorageOptions.cacheTimeProvider.CacheTime(s.epochCommitmentStorageOptions.epochCommitmentCacheTime),
+ objectstorage.LeakDetectionEnabled(false),
+ objectstorage.StoreOnCreation(true),
+ ),
+ }
+
+ s.epochDiffStorages[ei] = diffStorage
+
+ return
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region db prefixes //////////////////////////////////////////////////////////////////////////////////////////////////
+
+const (
+ prefixLedgerState byte = iota
+
+ prefixECRecord
+
+ prefixEpochDiffCreated
+
+ prefixEpochDiffSpent
+
+ prefixStateTreeNodes
+
+ prefixStateTreeValues
+
+ prefixManaTreeNodes
+
+ prefixManaTreeValues
+)
+
+// region Options //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// WithStore is an Option for the Ledger that allows to configure which KVStore is supposed to be used to persist data
+// (the default option is to use a MapDB).
+func WithStore(store kvstore.KVStore) (option Option) {
+ return func(options *options) {
+ options.store = store
+ }
+}
+
+// options is a container for all configurable parameters of the Indexer.
+type options struct {
+ // store contains the KVStore that is used to persist data.
+ store kvstore.KVStore
+
+ // cacheTimeProvider contains the cacheTimeProvider that overrides the local cache times.
+ cacheTimeProvider *database.CacheTimeProvider
+
+ epochCommitmentCacheTime time.Duration
+}
+
+// newOptions returns a new options object that corresponds to the handed in options and which is derived from the
+// default options.
+func newOptions(option ...Option) (new *options) {
+ return (&options{
+ store: mapdb.NewMapDB(),
+ cacheTimeProvider: database.NewCacheTimeProvider(0),
+ epochCommitmentCacheTime: 10 * time.Second,
+ }).apply(option...)
+}
+
+// apply modifies the options object by overriding the handed in options.
+func (o *options) apply(options ...Option) (self *options) {
+ for _, option := range options {
+ option(o)
+ }
+
+ return o
+}
+
+// Option represents the return type of optional parameters that can be handed into the constructor of the EpochStateDiffStorage
+// to configure its behavior.
+type Option func(*options)
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/notarization/testutils.go b/packages/notarization/testutils.go
new file mode 100644
index 0000000000..ec36c53675
--- /dev/null
+++ b/packages/notarization/testutils.go
@@ -0,0 +1,112 @@
+package notarization
+
+import (
+ "sync/atomic"
+ "testing"
+ "time"
+
+ "github.com/iotaledger/hive.go/generics/event"
+ "github.com/iotaledger/hive.go/types/confirmation"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
+
+ "github.com/iotaledger/goshimmer/packages/consensus/acceptance"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+)
+
+const (
+ testingAcceptanceThreshold = 0.4
+)
+
+var (
+ // TestConflictAcceptanceStateTranslation translates a conflict's AW into a confirmation state.
+ TestConflictAcceptanceStateTranslation acceptance.ConflictThresholdTranslation = func(conflictID utxo.TransactionID, aw float64) confirmation.State {
+ if aw >= testingAcceptanceThreshold {
+ return confirmation.Accepted
+ }
+
+ return confirmation.Pending
+ }
+
+ // TestBlockAcceptanceStateTranslation translates a block's AW into a confirmation state.
+ TestBlockAcceptanceStateTranslation acceptance.BlockThresholdTranslation = func(aw float64) confirmation.State {
+ if aw >= testingAcceptanceThreshold {
+ return confirmation.Accepted
+ }
+
+ return confirmation.Pending
+ }
+)
+
+// EventMock acts as a container for event mocks.
+type EventMock struct {
+ mock.Mock
+ expectedEvents uint64
+ calledEvents uint64
+ test *testing.T
+
+ attached []struct {
+ *event.Event[*EpochCommittableEvent]
+ *event.Closure[*EpochCommittableEvent]
+ }
+}
+
+// NewEventMock creates a new EventMock.
+func NewEventMock(t *testing.T, notarizationManager *Manager) *EventMock {
+ e := &EventMock{
+ test: t,
+ }
+
+ // attach all events
+ notarizationManager.Events.EpochCommittable.Hook(event.NewClosure(e.EpochCommittable))
+ notarizationManager.Events.ManaVectorUpdate.Hook(event.NewClosure(e.ManaVectorUpdate))
+
+ return e
+}
+
+// DetachAll detaches all event handlers.
+func (e *EventMock) DetachAll() {
+ for _, a := range e.attached {
+ a.Event.Detach(a.Closure)
+ }
+}
+
+// Expect is a proxy for Mock.On() but keeping track of num of calls.
+func (e *EventMock) Expect(eventName string, arguments ...interface{}) {
+ event.Loop.WaitUntilAllTasksProcessed()
+ e.On(eventName, arguments...)
+ atomic.AddUint64(&e.expectedEvents, 1)
+}
+
+// AssertExpectations asserts expectations.
+func (e *EventMock) AssertExpectations(t mock.TestingT) bool {
+ var calledEvents, expectedEvents uint64
+ event.Loop.WaitUntilAllTasksProcessed()
+
+ assert.Eventuallyf(t, func() bool {
+ calledEvents = atomic.LoadUint64(&e.calledEvents)
+ expectedEvents = atomic.LoadUint64(&e.expectedEvents)
+ return calledEvents == expectedEvents
+ }, 5*time.Second, 1*time.Millisecond, "number of called (%d) events is not equal to number of expected events (%d)", calledEvents, expectedEvents)
+
+ defer func() {
+ e.Calls = make([]mock.Call, 0)
+ e.ExpectedCalls = make([]*mock.Call, 0)
+ e.expectedEvents = 0
+ e.calledEvents = 0
+ }()
+
+ return e.Mock.AssertExpectations(t)
+}
+
+// EpochCommittable is the mocked EpochCommittable event.
+func (e *EventMock) EpochCommittable(event *EpochCommittableEvent) {
+ e.Called(event.EI)
+ atomic.AddUint64(&e.calledEvents, 1)
+}
+
+// ManaVectorUpdate is the mocked ManaVectorUpdate event.
+func (e *EventMock) ManaVectorUpdate(event *ManaVectorUpdateEvent) {
+ e.Called(event.EI, event.EpochDiffCreated, event.EpochDiffSpent)
+ atomic.AddUint64(&e.calledEvents, 1)
+}
diff --git a/packages/pow/pow.go b/packages/pow/pow.go
index 08dbccdac0..c9c1153ec5 100644
--- a/packages/pow/pow.go
+++ b/packages/pow/pow.go
@@ -48,10 +48,10 @@ func New(numWorkers ...int) *Worker {
}
// Mine performs the PoW.
-// It appends the 8-byte nonce to the provided msg and tries to find a nonce
+// It appends the 8-byte nonce to the provided blk and tries to find a nonce
// until the target number of leading zeroes is reached.
// The computation can be be canceled using the provided ctx.
-func (w *Worker) Mine(ctx context.Context, msg []byte, target int) (uint64, error) {
+func (w *Worker) Mine(ctx context.Context, blk []byte, target int) (uint64, error) {
var (
done uint32
counter uint64
@@ -77,7 +77,7 @@ func (w *Worker) Mine(ctx context.Context, msg []byte, target int) (uint64, erro
go func() {
defer wg.Done()
- nonce, workerErr := w.worker(msg, startNonce, target, &done, &counter)
+ nonce, workerErr := w.worker(blk, startNonce, target, &done, &counter)
if workerErr != nil {
return
}
@@ -104,18 +104,18 @@ func (w *Worker) LeadingZeros(data []byte) (int, error) {
}
// LeadingZerosWithNonce returns the number of leading zeros in the digest
-// after the provided 8-byte nonce is appended to msg.
-func (w *Worker) LeadingZerosWithNonce(msg []byte, nonce uint64) (int, error) {
- buf := make([]byte, len(msg)+NonceBytes)
- copy(buf, msg)
- putUint64(buf[len(msg):], nonce)
+// after the provided 8-byte nonce is appended to blk.
+func (w *Worker) LeadingZerosWithNonce(blk []byte, nonce uint64) (int, error) {
+ buf := make([]byte, len(blk)+NonceBytes)
+ copy(buf, blk)
+ putUint64(buf[len(blk):], nonce)
return w.LeadingZeros(buf)
}
-func (w *Worker) worker(msg []byte, startNonce uint64, target int, done *uint32, counter *uint64) (uint64, error) {
- buf := make([]byte, len(msg)+NonceBytes)
- copy(buf, msg)
+func (w *Worker) worker(blk []byte, startNonce uint64, target int, done *uint32, counter *uint64) (uint64, error) {
+ buf := make([]byte, len(blk)+NonceBytes)
+ copy(buf, blk)
asAnInt := new(big.Int)
for nonce := startNonce; ; {
@@ -125,7 +125,7 @@ func (w *Worker) worker(msg []byte, startNonce uint64, target int, done *uint32,
atomic.AddUint64(counter, 1)
// write nonce in the buffer
- putUint64(buf[len(msg):], nonce)
+ putUint64(buf[len(blk):], nonce)
digest := blake2b.Sum512(buf)
asAnInt.SetBytes(digest[:])
diff --git a/packages/pow/pow_test.go b/packages/pow/pow_test.go
index ae429abb79..e81b1d821d 100644
--- a/packages/pow/pow_test.go
+++ b/packages/pow/pow_test.go
@@ -30,19 +30,19 @@ func TestWorker_Work(t *testing.T) {
func TestWorker_Validate(t *testing.T) {
tests := []*struct {
- msg []byte
+ blk []byte
nonce uint64
expLeadingZeros int
expErr error
}{
- {msg: nil, nonce: 0, expLeadingZeros: 1, expErr: nil},
- {msg: nil, nonce: 4611686018451317632, expLeadingZeros: 28, expErr: nil},
- {msg: make([]byte, 10240), nonce: 0, expLeadingZeros: 1, expErr: nil},
+ {blk: nil, nonce: 0, expLeadingZeros: 1, expErr: nil},
+ {blk: nil, nonce: 4611686018451317632, expLeadingZeros: 28, expErr: nil},
+ {blk: make([]byte, 10240), nonce: 0, expLeadingZeros: 1, expErr: nil},
}
w := &Worker{}
for _, tt := range tests {
- zeros, err := w.LeadingZerosWithNonce(tt.msg, tt.nonce)
+ zeros, err := w.LeadingZerosWithNonce(tt.blk, tt.nonce)
assert.Equal(t, tt.expLeadingZeros, zeros)
assert.Equal(t, tt.expErr, err)
}
diff --git a/packages/remotemetrics/events.go b/packages/remotemetrics/events.go
index 6616e50df5..94bd5da01e 100644
--- a/packages/remotemetrics/events.go
+++ b/packages/remotemetrics/events.go
@@ -22,7 +22,7 @@ func newCollectionLogEvents() *CollectionLogEvents {
// TangleTimeSyncChangedEvent is triggered by a node when its sync status changes. It is also structure that is sent to remote logger.
type TangleTimeSyncChangedEvent struct {
- // Type defines the type of the message.
+ // Type defines the type of the block.
Type string `json:"type" bson:"type"`
// NodeID defines the ID of the node.
NodeID string `json:"nodeid" bson:"nodeid"`
@@ -34,13 +34,13 @@ type TangleTimeSyncChangedEvent struct {
CurrentStatus bool `json:"currentStatus" bson:"currentStatus"`
// PreviousStatus contains previous sync status
PreviousStatus bool `json:"previousStatus" bson:"previousStatus"`
- // ATT contains time of the last accepted message
+ // ATT contains time of the last accepted block
ATT time.Time `json:"acceptanceTangleTime" bson:"acceptanceTangleTime"`
- // RATT contains relative time of the last accepted message
+ // RATT contains relative time of the last accepted block
RATT time.Time `json:"relativeAcceptanceTangleTime" bson:"relativeAcceptanceTangleTime"`
- // CTT contains time of the last confirmed message
+ // CTT contains time of the last confirmed block
CTT time.Time `json:"confirmedTangleTime" bson:"confirmedTangleTime"`
- // RCTT contains relative time of the last confirmed message
+ // RCTT contains relative time of the last confirmed block
RCTT time.Time `json:"relativeConfirmedTangleTime" bson:"relativeConfirmedTangleTime"`
}
@@ -49,13 +49,13 @@ type SchedulerQueryEvent struct {
Time time.Time
}
-// MessageFinalizedMetrics defines the transaction metrics record that is sent to remote logger.
-type MessageFinalizedMetrics struct {
+// BlockFinalizedMetrics defines the transaction metrics record that is sent to remote logger.
+type BlockFinalizedMetrics struct {
Type string `json:"type" bson:"type"`
NodeID string `json:"nodeID" bson:"nodeID"`
IssuerID string `json:"issuerID" bson:"issuerID"`
MetricsLevel uint8 `json:"metricsLevel" bson:"metricsLevel"`
- MessageID string `json:"messageID" bson:"messageID"`
+ BlockID string `json:"blockID" bson:"blockID"`
TransactionID string `json:"transactionID,omitempty" bson:"transactionID"`
IssuedTimestamp time.Time `json:"issuedTimestamp" bson:"issuedTimestamp"`
SolidTimestamp time.Time `json:"solidTimestamp,omitempty" bson:"solidTimestamp"`
@@ -71,27 +71,27 @@ type MessageFinalizedMetrics struct {
ShallowLikeEdgeCount int `json:"shallowLikeEdgeCount,omitempty" bson:"likeEdgeCount"`
}
-// MessageScheduledMetrics defines the scheduling message confirmation metrics record that is sent to remote logger.
-type MessageScheduledMetrics struct {
+// BlockScheduledMetrics defines the scheduling block confirmation metrics record that is sent to remote logger.
+type BlockScheduledMetrics struct {
Type string `json:"type" bson:"type"`
NodeID string `json:"nodeID" bson:"nodeID"`
IssuerID string `json:"issuerID" bson:"issuerID"`
MetricsLevel uint8 `json:"metricsLevel" bson:"metricsLevel"`
- MessageID string `json:"messageID" bson:"messageID"`
+ BlockID string `json:"blockID" bson:"blockID"`
TransactionID string `json:"transactionID,omitempty" bson:"transactionID"`
- // Time where the message was created by the issuing node
+ // Time where the block was created by the issuing node
IssuedTimestamp time.Time `json:"issuedTimestamp" bson:"issuedTimestamp"`
- // Time where the message was first seen by the node
- ReceivedTimestamp time.Time `json:"receivedTimestamp" bson:"receivedTimestamp"`
- SolidTimestamp time.Time `json:"solidTimestamp,omitempty" bson:"solidTimestamp"`
- ScheduledTimestamp time.Time `json:"scheduledTimestamp,omitempty" bson:"scheduledTimestamp"`
- BookedTimestamp time.Time `json:"bookedTimestamp" bson:"bookedTimestamp"`
- QueuedTimestamp time.Time `json:"queuedTimestamp" bson:"queuedTimestamp"`
- DroppedTimestamp time.Time `json:"droppedTimestamp,omitempty" bson:"DroppedTimestamp"`
- GradeOfFinalityTimestamp time.Time `json:"gradeOfFinalityTimestamp,omitempty" bson:"GradeOfFinalityTimestamp"`
- GradeOfFinality uint8 `json:"gradeOfFinality" bson:"GradeOfFinality"`
- DeltaGradeOfFinalityTime int64 `json:"deltaGradeOfFinalityTime" bson:"deltaGradeOfFinalityTime"`
- DeltaSolid int64 `json:"deltaSolid,omitempty" bson:"deltaSolid"`
+ // Time where the block was first seen by the node
+ ReceivedTimestamp time.Time `json:"receivedTimestamp" bson:"receivedTimestamp"`
+ SolidTimestamp time.Time `json:"solidTimestamp,omitempty" bson:"solidTimestamp"`
+ ScheduledTimestamp time.Time `json:"scheduledTimestamp,omitempty" bson:"scheduledTimestamp"`
+ BookedTimestamp time.Time `json:"bookedTimestamp" bson:"bookedTimestamp"`
+ QueuedTimestamp time.Time `json:"queuedTimestamp" bson:"queuedTimestamp"`
+ DroppedTimestamp time.Time `json:"droppedTimestamp,omitempty" bson:"DroppedTimestamp"`
+ ConfirmationStateTimestamp time.Time `json:"confirmationStateTimestamp,omitempty" bson:"ConfirmationStateTimestamp"`
+ ConfirmationState uint8 `json:"confirmationState" bson:"ConfirmationState"`
+ DeltaConfirmationStateTime int64 `json:"deltaConfirmationStateTime" bson:"deltaConfirmationStateTime"`
+ DeltaSolid int64 `json:"deltaSolid,omitempty" bson:"deltaSolid"`
// ScheduledTimestamp - IssuedTimestamp in nanoseconds
DeltaScheduledIssued int64 `json:"deltaScheduledIssued" bson:"deltaScheduledIssued"`
DeltaBooked int64 `json:"deltaBooked" bson:"deltaBooked"`
@@ -107,23 +107,23 @@ type MessageScheduledMetrics struct {
LikeEdgeCount int `json:"likeEdgeCount,omitempty" bson:"likeEdgeCount"`
}
-// MissingMessageMetrics defines message solidification record that is sent to the remote logger.
-type MissingMessageMetrics struct {
+// MissingBlockMetrics defines block solidification record that is sent to the remote logger.
+type MissingBlockMetrics struct {
Type string `json:"type" bson:"type"`
NodeID string `json:"nodeID" bson:"nodeID"`
MetricsLevel uint8 `json:"metricsLevel" bson:"metricsLevel"`
- MessageID string `json:"messageID" bson:"messageID"`
+ BlockID string `json:"blockID" bson:"blockID"`
IssuerID string `json:"issuerID" bson:"issuerID"`
}
-// BranchConfirmationMetrics defines the branch confirmation metrics record that is sent to remote logger.
-type BranchConfirmationMetrics struct {
+// ConflictConfirmationMetrics defines the conflict confirmation metrics record that is sent to remote logger.
+type ConflictConfirmationMetrics struct {
Type string `json:"type" bson:"type"`
NodeID string `json:"nodeID" bson:"nodeID"`
IssuerID string `json:"issuerID" bson:"issuerID"`
MetricsLevel uint8 `json:"metricsLevel" bson:"metricsLevel"`
- MessageID string `json:"messageID" bson:"messageID"`
- BranchID string `json:"transactionID" bson:"transactionID"`
+ BlockID string `json:"blockID" bson:"blockID"`
+ ConflictID string `json:"transactionID" bson:"transactionID"`
CreatedTimestamp time.Time `json:"createdTimestamp" bson:"createdTimestamp"`
ConfirmedTimestamp time.Time `json:"confirmedTimestamp" bson:"confirmedTimestamp"`
DeltaConfirmed int64 `json:"deltaConfirmed" bson:"deltaConfirmed"`
@@ -139,22 +139,22 @@ type SchedulerMetrics struct {
AManaNormalizedLengthPerNode map[string]float64 `json:"aManaNormalizedQueueLengthPerNode" bson:"aManaNormalizedQueueLengthPerNode"`
BufferSize uint32 `json:"bufferSize" bson:"bufferSize"`
BufferLength uint32 `json:"bufferLength" bson:"bufferLength"`
- ReadyMessagesInBuffer uint32 `json:"readyMessagesInBuffer" bson:"readyMessagesInBuffer"`
+ ReadyBlocksInBuffer uint32 `json:"readyBlocksInBuffer" bson:"readyBlocksInBuffer"`
Timestamp time.Time `json:"timestamp" bson:"timestamp"`
}
-// BranchCountUpdate defines the branch confirmation metrics record that is sent to remote logger.
-type BranchCountUpdate struct {
- Type string `json:"type" bson:"type"`
- NodeID string `json:"nodeID" bson:"nodeID"`
- MetricsLevel uint8 `json:"metricsLevel" bson:"metricsLevel"`
- TotalBranchCount uint64 `json:"totalBranchCount" bson:"totalBranchCount"`
- FinalizedBranchCount uint64 `json:"finalizedBranchCount" bson:"finalizedBranchCount"`
- ConfirmedBranchCount uint64 `json:"confirmedBranchCount" bson:"confirmedBranchCount"`
- InitialTotalBranchCount uint64 `json:"initialTotalBranchCount" bson:"initialTotalBranchCount"`
- TotalBranchCountSinceStart uint64 `json:"totalBranchCountSinceStart" bson:"totalBranchCountSinceStart"`
- InitialConfirmedBranchCount uint64 `json:"initialConfirmedBranchCount" bson:"initialConfirmedBranchCount"`
- ConfirmedBranchCountSinceStart uint64 `json:"confirmedBranchCountSinceStart" bson:"confirmedBranchCountSinceStart"`
- InitialFinalizedBranchCount uint64 `json:"initialFinalizedBranchCount" bson:"initialFinalizedBranchCount"`
- FinalizedBranchCountSinceStart uint64 `json:"finalizedBranchCountSinceStart" bson:"finalizedBranchCountSinceStart"`
+// ConflictCountUpdate defines the conflict confirmation metrics record that is sent to remote logger.
+type ConflictCountUpdate struct {
+ Type string `json:"type" bson:"type"`
+ NodeID string `json:"nodeID" bson:"nodeID"`
+ MetricsLevel uint8 `json:"metricsLevel" bson:"metricsLevel"`
+ TotalConflictCount uint64 `json:"totalConflictCount" bson:"totalConflictCount"`
+ FinalizedConflictCount uint64 `json:"finalizedConflictCount" bson:"finalizedConflictCount"`
+ ConfirmedConflictCount uint64 `json:"confirmedConflictCount" bson:"confirmedConflictCount"`
+ InitialTotalConflictCount uint64 `json:"initialTotalConflictCount" bson:"initialTotalConflictCount"`
+ TotalConflictCountSinceStart uint64 `json:"totalConflictCountSinceStart" bson:"totalConflictCountSinceStart"`
+ InitialConfirmedConflictCount uint64 `json:"initialConfirmedConflictCount" bson:"initialConfirmedConflictCount"`
+ ConfirmedConflictCountSinceStart uint64 `json:"confirmedConflictCountSinceStart" bson:"confirmedConflictCountSinceStart"`
+ InitialFinalizedConflictCount uint64 `json:"initialFinalizedConflictCount" bson:"initialFinalizedConflictCount"`
+ FinalizedConflictCountSinceStart uint64 `json:"finalizedConflictCountSinceStart" bson:"finalizedConflictCountSinceStart"`
}
diff --git a/packages/shutdown/order.go b/packages/shutdown/order.go
index 6d77e1fe0f..e20c9ffaf2 100644
--- a/packages/shutdown/order.go
+++ b/packages/shutdown/order.go
@@ -7,6 +7,8 @@ const (
PriorityPeerDatabase
// PriorityMana defines the shutdown priority for the mana plugin.
PriorityMana
+ // PriorityNotarization defines the shutdown priority for the notarization.
+ PriorityNotarization
// PriorityTangle defines the shutdown priority for the tangle.
PriorityTangle
// PriorityFaucet defines the shutdown priority for the faucet.
diff --git a/packages/snapshot/snapshot.go b/packages/snapshot/snapshot.go
index e3648c2a17..3804b415d9 100644
--- a/packages/snapshot/snapshot.go
+++ b/packages/snapshot/snapshot.go
@@ -2,31 +2,25 @@ package snapshot
import (
"context"
- "fmt"
"os"
- "time"
"github.com/cockroachdb/errors"
"github.com/iotaledger/hive.go/generics/lo"
- "github.com/iotaledger/hive.go/identity"
"github.com/iotaledger/hive.go/marshalutil"
"github.com/iotaledger/hive.go/serix"
"github.com/iotaledger/hive.go/stringify"
"github.com/iotaledger/goshimmer/packages/ledger"
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
"github.com/iotaledger/goshimmer/packages/mana"
)
type Snapshot struct {
LedgerSnapshot *ledger.Snapshot
- ManaSnapshot *mana.Snapshot
}
-func (s *Snapshot) FromNode(ledger *ledger.Ledger, accessManaByNode mana.NodeMap, accessManaTime time.Time) {
+func (s *Snapshot) FromNode(ledger *ledger.Ledger) {
s.LedgerSnapshot = ledger.TakeSnapshot()
- s.ManaSnapshot = s.takeManaSnapshot(accessManaByNode, accessManaTime)
}
func (s *Snapshot) FromFile(fileName string) (err error) {
@@ -44,29 +38,32 @@ func (s *Snapshot) FromFile(fileName string) (err error) {
func (s *Snapshot) FromBytes(bytes []byte) (err error) {
s.LedgerSnapshot = new(ledger.Snapshot)
- consumedBytes, err := serix.DefaultAPI.Decode(context.Background(), bytes, s.LedgerSnapshot)
+ _, err = serix.DefaultAPI.Decode(context.Background(), bytes, s.LedgerSnapshot)
if err != nil {
return errors.Errorf("failed to read LedgerSnapshot: %w", err)
}
- _ = s.LedgerSnapshot.Outputs.OrderedMap.ForEach(func(outputID utxo.OutputID, output utxo.Output) bool {
- output.SetID(outputID)
- return true
- })
- _ = s.LedgerSnapshot.OutputsMetadata.OrderedMap.ForEach(func(outputID utxo.OutputID, outputMetadata *ledger.OutputMetadata) bool {
- outputMetadata.SetID(outputID)
- return true
- })
- s.ManaSnapshot = mana.NewSnapshot()
- if err = s.ManaSnapshot.FromMarshalUtil(marshalutil.New(bytes[consumedBytes:])); err != nil {
- return errors.Errorf("failed to read ManaSnapshot: %w", err)
+ for _, output := range s.LedgerSnapshot.OutputsWithMetadata {
+ output.SetID(output.M.OutputID)
+ output.Output().SetID(output.M.OutputID)
+ }
+
+ for _, epochdiff := range s.LedgerSnapshot.EpochDiffs {
+ for _, spentOutput := range epochdiff.Spent() {
+ spentOutput.SetID(spentOutput.M.OutputID)
+ spentOutput.Output().SetID(spentOutput.M.OutputID)
+ }
+ for _, createdOutput := range epochdiff.Created() {
+ createdOutput.SetID(createdOutput.M.OutputID)
+ createdOutput.Output().SetID(createdOutput.M.OutputID)
+ }
}
return nil
}
func (s *Snapshot) WriteFile(fileName string) (err error) {
- if err = os.WriteFile(fileName, s.Bytes(), 0644); err != nil {
+ if err = os.WriteFile(fileName, s.Bytes(), 0o644); err != nil {
return errors.Errorf("failed to write snapshot file %s: %w", fileName, err)
}
@@ -77,43 +74,15 @@ func (s *Snapshot) WriteFile(fileName string) (err error) {
func (s *Snapshot) Bytes() (serialized []byte) {
return marshalutil.New().
WriteBytes(lo.PanicOnErr(serix.DefaultAPI.Encode(context.Background(), s.LedgerSnapshot))).
- Write(s.ManaSnapshot).
Bytes()
}
func (s *Snapshot) String() (humanReadable string) {
return stringify.Struct("Snapshot",
stringify.StructField("LedgerSnapshot", s.LedgerSnapshot),
- stringify.StructField("ManaSnapshot", s.ManaSnapshot),
)
}
-func (s *Snapshot) takeManaSnapshot(accessManaByNode mana.NodeMap, accessManaTime time.Time) (snapshot *mana.Snapshot) {
- snapshot = &mana.Snapshot{
- ByNodeID: make(map[identity.ID]*mana.SnapshotNode),
- }
-
- for nodeID, accessManaValue := range accessManaByNode {
- snapshot.NodeSnapshot(nodeID).AccessMana = &mana.AccessManaSnapshot{
- Value: accessManaValue,
- Timestamp: accessManaTime,
- }
- }
-
- _ = s.LedgerSnapshot.Outputs.ForEach(func(output utxo.Output) error {
- outputMetadata, exists := s.LedgerSnapshot.OutputsMetadata.Get(output.ID())
- if !exists {
- panic(fmt.Sprintf("output metadata with %s not found in snapshot", output.ID()))
- }
-
- s.updateConsensusManaDetails(snapshot.NodeSnapshot(outputMetadata.ConsensusManaPledgeID()), output.(devnetvm.Output), outputMetadata)
-
- return nil
- })
-
- return snapshot
-}
-
func (s *Snapshot) updateConsensusManaDetails(nodeSnapshot *mana.SnapshotNode, output devnetvm.Output, outputMetadata *ledger.OutputMetadata) {
pledgedValue := float64(0)
output.Balances().ForEach(func(color devnetvm.Color, balance uint64) bool {
diff --git a/packages/spammer/spammer.go b/packages/spammer/spammer.go
index 7bcd170717..b094078c63 100644
--- a/packages/spammer/spammer.go
+++ b/packages/spammer/spammer.go
@@ -20,12 +20,12 @@ const (
)
// IssuePayloadFunc is a function which issues a payload.
-type IssuePayloadFunc = func(payload payload.Payload, parentsCount ...int) (*tangle.Message, error)
+type IssuePayloadFunc = func(payload payload.Payload, parentsCount ...int) (*tangle.Block, error)
-// EstimateFunc returns the time estimate required for the message to be issued by the rate setter.
+// EstimateFunc returns the time estimate required for the block to be issued by the rate setter.
type EstimateFunc = func() time.Duration
-// Spammer spams messages with a static data payload.
+// Spammer spams blocks with a static data payload.
type Spammer struct {
issuePayloadFunc IssuePayloadFunc
estimateFunc EstimateFunc
@@ -46,8 +46,8 @@ func New(issuePayloadFunc IssuePayloadFunc, log *logger.Logger, estimateFunc Est
}
}
-// Start starts the spammer to spam with the given messages per time unit,
-// according to a inter message issuing function (IMIF)
+// Start starts the spammer to spam with the given blocks per time unit,
+// according to a inter block issuing function (IMIF)
func (s *Spammer) Start(rate int, timeUnit time.Duration, imif string) {
// only start if not yet running
if s.running.SetToIf(false, true) {
@@ -94,10 +94,10 @@ func (s *Spammer) run(rate int, timeUnit time.Duration, imif string) {
go func() {
s.goroutinesCount.Add(1)
defer s.goroutinesCount.Add(-1)
- // we don't care about errors or the actual issued message
+ // we don't care about errors or the actual issued block
_, err := s.issuePayloadFunc(payload.NewGenericDataPayload([]byte("SPAM")))
if errors.Is(err, tangle.ErrNotBootstrapped) {
- s.log.Info("Stopped spamming messages because node lost sync")
+ s.log.Info("Stopped spamming blocks because node lost sync")
s.signalShutdown()
return
}
diff --git a/packages/tangle/approvalweightmanager.go b/packages/tangle/approvalweightmanager.go
index a4306d075c..a3746faa64 100644
--- a/packages/tangle/approvalweightmanager.go
+++ b/packages/tangle/approvalweightmanager.go
@@ -19,7 +19,7 @@ const (
// region ApprovalWeightManager ////////////////////////////////////////////////////////////////////////////////////////
-// ApprovalWeightManager is a Tangle component to keep track of relative weights of branches and markers so that
+// ApprovalWeightManager is a Tangle component to keep track of relative weights of conflicts and markers so that
// consensus can be based on the heaviest perception on the tangle as a data structure.
type ApprovalWeightManager struct {
Events *ApprovalWeightManagerEvents
@@ -38,33 +38,33 @@ func NewApprovalWeightManager(tangle *Tangle) (approvalWeightManager *ApprovalWe
// Setup sets up the behavior of the component by making it attach to the relevant events of other components.
func (a *ApprovalWeightManager) Setup() {
- a.tangle.Booker.Events.MessageBooked.Attach(event.NewClosure(func(event *MessageBookedEvent) {
- a.processBookedMessage(event.MessageID)
+ a.tangle.Booker.Events.BlockBooked.Attach(event.NewClosure(func(event *BlockBookedEvent) {
+ a.processBookedBlock(event.BlockID)
}))
- a.tangle.Booker.Events.MessageBranchUpdated.Hook(event.NewClosure(func(event *MessageBranchUpdatedEvent) {
- a.processForkedMessage(event.MessageID, event.BranchID)
+ a.tangle.Booker.Events.BlockConflictUpdated.Hook(event.NewClosure(func(event *BlockConflictUpdatedEvent) {
+ a.processForkedBlock(event.BlockID, event.ConflictID)
}))
- a.tangle.Booker.Events.MarkerBranchAdded.Hook(event.NewClosure(func(event *MarkerBranchAddedEvent) {
- a.processForkedMarker(event.Marker, event.NewBranchID)
+ a.tangle.Booker.Events.MarkerConflictAdded.Hook(event.NewClosure(func(event *MarkerConflictAddedEvent) {
+ a.processForkedMarker(event.Marker, event.NewConflictID)
}))
}
-// processBookedMessage is the main entry point for the ApprovalWeightManager. It takes the Message's issuer, adds it to the
-// voters of the Message's ledger.Conflict and approved markers.Marker and eventually triggers events when
-// approval weights for branch and markers are reached.
-func (a *ApprovalWeightManager) processBookedMessage(messageID MessageID) {
- a.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- a.updateBranchVoters(message)
- a.updateSequenceVoters(message)
+// processBookedBlock is the main entry point for the ApprovalWeightManager. It takes the Block's issuer, adds it to the
+// voters of the Block's ledger.Conflict and approved markers.Marker and eventually triggers events when
+// approval weights for conflict and markers are reached.
+func (a *ApprovalWeightManager) processBookedBlock(blockID BlockID) {
+ a.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ a.updateConflictVoters(block)
+ a.updateSequenceVoters(block)
- a.Events.MessageProcessed.Trigger(&MessageProcessedEvent{messageID})
+ a.Events.BlockProcessed.Trigger(&BlockProcessedEvent{blockID})
})
}
-// WeightOfBranch returns the weight of the given Conflict that was added by Voters of the given epoch.
-func (a *ApprovalWeightManager) WeightOfBranch(branchID utxo.TransactionID) (weight float64) {
- a.tangle.Storage.BranchWeight(branchID).Consume(func(branchWeight *BranchWeight) {
- weight = branchWeight.Weight()
+// WeightOfConflict returns the weight of the given Conflict that was added by Voters of the given epoch.
+func (a *ApprovalWeightManager) WeightOfConflict(conflictID utxo.TransactionID) (weight float64) {
+ a.tangle.Storage.ConflictWeight(conflictID).Consume(func(conflictWeight *ConflictWeight) {
+ weight = conflictWeight.Weight()
})
return
@@ -85,16 +85,16 @@ func (a *ApprovalWeightManager) WeightOfMarker(marker markers.Marker, anchorTime
// Shutdown shuts down the ApprovalWeightManager and persists its state.
func (a *ApprovalWeightManager) Shutdown() {}
-func (a *ApprovalWeightManager) isRelevantVoter(message *Message) bool {
- voterWeight, totalWeight := a.tangle.WeightProvider.Weight(message)
+func (a *ApprovalWeightManager) isRelevantVoter(block *Block) bool {
+ voterWeight, totalWeight := a.tangle.WeightProvider.Weight(block)
return voterWeight/totalWeight >= minVoterWeight
}
-// VotersOfBranch returns the Voters of the given branch ledger.BranchID.
-func (a *ApprovalWeightManager) VotersOfBranch(branchID utxo.TransactionID) (voters *Voters) {
- if !a.tangle.Storage.BranchVoters(branchID).Consume(func(branchVoters *BranchVoters) {
- voters = branchVoters.Voters()
+// VotersOfConflict returns the Voters of the given conflict ledger.ConflictID.
+func (a *ApprovalWeightManager) VotersOfConflict(conflictID utxo.TransactionID) (voters *Voters) {
+ if !a.tangle.Storage.ConflictVoters(conflictID).Consume(func(conflictVoters *ConflictVoters) {
+ voters = conflictVoters.Voters()
}) {
voters = NewVoters()
}
@@ -116,202 +116,202 @@ func (a *ApprovalWeightManager) markerVotes(marker markers.Marker) (markerVotes
return markerVotes
}
-func (a *ApprovalWeightManager) updateBranchVoters(message *Message) {
- branchesOfMessage, err := a.tangle.Booker.MessageBranchIDs(message.ID())
+func (a *ApprovalWeightManager) updateConflictVoters(block *Block) {
+ conflictsOfBlock, err := a.tangle.Booker.BlockConflictIDs(block.ID())
if err != nil {
panic(err)
}
- voter := identity.NewID(message.IssuerPublicKey())
+ voter := identity.NewID(block.IssuerPublicKey())
- // create vote with default BranchID and Opinion values that will be filled later
- vote := NewBranchVote(voter, message.SequenceNumber(), utxo.TransactionID{}, UndefinedOpinion)
+ // create vote with default ConflictID and Opinion values that will be filled later
+ vote := NewConflictVote(voter, block.SequenceNumber(), utxo.TransactionID{}, UndefinedOpinion)
- addedBranchIDs, revokedBranchIDs, isInvalid := a.determineVotes(branchesOfMessage, vote)
+ addedConflictIDs, revokedConflictIDs, isInvalid := a.determineVotes(conflictsOfBlock, vote)
if isInvalid {
- a.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- messageMetadata.SetSubjectivelyInvalid(true)
+ a.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ blockMetadata.SetSubjectivelyInvalid(true)
})
return
}
- if !a.isRelevantVoter(message) {
+ if !a.isRelevantVoter(block) {
return
}
addedVote := vote.WithOpinion(Confirmed)
- for it := addedBranchIDs.Iterator(); it.HasNext(); {
- addBranchID := it.Next()
- a.addVoterToBranch(addBranchID, addedVote.WithBranchID(addBranchID))
+ for it := addedConflictIDs.Iterator(); it.HasNext(); {
+ addConflictID := it.Next()
+ a.addVoterToConflict(addConflictID, addedVote.WithConflictID(addConflictID))
}
revokedVote := vote.WithOpinion(Rejected)
- for it := revokedBranchIDs.Iterator(); it.HasNext(); {
- revokedBranchID := it.Next()
- a.revokeVoterFromBranch(revokedBranchID, revokedVote.WithBranchID(revokedBranchID))
+ for it := revokedConflictIDs.Iterator(); it.HasNext(); {
+ revokedConflictID := it.Next()
+ a.revokeVoterFromConflict(revokedConflictID, revokedVote.WithConflictID(revokedConflictID))
}
}
-// determineVotes iterates over a set of branches and, taking into account the opinion a Voter expressed previously,
-// computes the branches that will receive additional weight, the ones that will see their weight revoked, and if the
+// determineVotes iterates over a set of conflicts and, taking into account the opinion a Voter expressed previously,
+// computes the conflicts that will receive additional weight, the ones that will see their weight revoked, and if the
// result constitutes an overrall valid state transition.
-func (a *ApprovalWeightManager) determineVotes(votedBranchIDs *set.AdvancedSet[utxo.TransactionID], vote *BranchVote) (addedBranches, revokedBranches *set.AdvancedSet[utxo.TransactionID], isInvalid bool) {
- addedBranches = utxo.NewTransactionIDs()
- for it := votedBranchIDs.Iterator(); it.HasNext(); {
- votedBranchID := it.Next()
+func (a *ApprovalWeightManager) determineVotes(votedConflictIDs *set.AdvancedSet[utxo.TransactionID], vote *ConflictVote) (addedConflicts, revokedConflicts *set.AdvancedSet[utxo.TransactionID], isInvalid bool) {
+ addedConflicts = utxo.NewTransactionIDs()
+ for it := votedConflictIDs.Iterator(); it.HasNext(); {
+ votedConflictID := it.Next()
- conflictingBranchWithHigherVoteExists := false
- a.tangle.Ledger.ConflictDAG.Utils.ForEachConflictingBranchID(votedBranchID, func(conflictingBranchID utxo.TransactionID) bool {
- conflictingBranchWithHigherVoteExists = a.identicalVoteWithHigherPowerExists(vote.WithBranchID(conflictingBranchID).WithOpinion(Confirmed))
+ conflictingConflictWithHigherVoteExists := false
+ a.tangle.Ledger.ConflictDAG.Utils.ForEachConflictingConflictID(votedConflictID, func(conflictingConflictID utxo.TransactionID) bool {
+ conflictingConflictWithHigherVoteExists = a.identicalVoteWithHigherPowerExists(vote.WithConflictID(conflictingConflictID).WithOpinion(Confirmed))
- return !conflictingBranchWithHigherVoteExists
+ return !conflictingConflictWithHigherVoteExists
})
- if conflictingBranchWithHigherVoteExists {
+ if conflictingConflictWithHigherVoteExists {
continue
}
- // The starting branches should not be considered as having common Parents, hence we treat them separately.
- conflictAddedBranches, _ := a.determineBranchesToAdd(set.NewAdvancedSet(votedBranchID), vote.WithOpinion(Confirmed))
- addedBranches.AddAll(conflictAddedBranches)
+ // The starting conflicts should not be considered as having common Parents, hence we treat them separately.
+ conflictAddedConflicts, _ := a.determineConflictsToAdd(set.NewAdvancedSet(votedConflictID), vote.WithOpinion(Confirmed))
+ addedConflicts.AddAll(conflictAddedConflicts)
}
- revokedBranches, isInvalid = a.determineBranchesToRevoke(addedBranches, votedBranchIDs, vote.WithOpinion(Rejected))
+ revokedConflicts, isInvalid = a.determineConflictsToRevoke(addedConflicts, votedConflictIDs, vote.WithOpinion(Rejected))
return
}
-// determineBranchesToAdd iterates through the past cone of the given Branches and determines the BranchIDs that
+// determineConflictsToAdd iterates through the past cone of the given Conflicts and determines the ConflictIDs that
// are affected by the Vote.
-func (a *ApprovalWeightManager) determineBranchesToAdd(branchIDs *set.AdvancedSet[utxo.TransactionID], branchVote *BranchVote) (addedBranches *set.AdvancedSet[utxo.TransactionID], allParentsAdded bool) {
- addedBranches = set.NewAdvancedSet[utxo.TransactionID]()
+func (a *ApprovalWeightManager) determineConflictsToAdd(conflictIDs *set.AdvancedSet[utxo.TransactionID], conflictVote *ConflictVote) (addedConflicts *set.AdvancedSet[utxo.TransactionID], allParentsAdded bool) {
+ addedConflicts = set.NewAdvancedSet[utxo.TransactionID]()
- for it := branchIDs.Iterator(); it.HasNext(); {
- currentBranchID := it.Next()
- // currentVote := branchVote.WithBranchID(currentBranchID)
+ for it := conflictIDs.Iterator(); it.HasNext(); {
+ currentConflictID := it.Next()
+ // currentVote := conflictVote.WithConflictID(currentConflictID)
- // Do not queue parents if a newer vote exists for this branch for this voter.
- // TODO: do not exit earlier to always determine subjectively invalid messages correctly
+ // Do not queue parents if a newer vote exists for this conflict for this voter.
+ // TODO: do not exit earlier to always determine subjectively invalid blocks correctly
// if a.identicalVoteWithHigherPowerExists(currentVote) {
// continue
// }
- a.tangle.Ledger.ConflictDAG.Storage.CachedConflict(currentBranchID).Consume(func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- addedBranchesOfCurrentBranch, allParentsOfCurrentBranchAdded := a.determineBranchesToAdd(branch.Parents(), branchVote)
- allParentsAdded = allParentsAdded && allParentsOfCurrentBranchAdded
+ a.tangle.Ledger.ConflictDAG.Storage.CachedConflict(currentConflictID).Consume(func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ addedConflictsOfCurrentConflict, allParentsOfCurrentConflictAdded := a.determineConflictsToAdd(conflict.Parents(), conflictVote)
+ allParentsAdded = allParentsAdded && allParentsOfCurrentConflictAdded
- addedBranches.AddAll(addedBranchesOfCurrentBranch)
+ addedConflicts.AddAll(addedConflictsOfCurrentConflict)
})
- addedBranches.Add(currentBranchID)
+ addedConflicts.Add(currentConflictID)
}
return
}
-// determineBranchesToRevoke determines which Branches of the conflicting future cone of the added Branches are affected
-// by the vote and if the vote is valid (not voting for conflicting Branches).
-func (a *ApprovalWeightManager) determineBranchesToRevoke(addedBranches, votedBranches *set.AdvancedSet[utxo.TransactionID], vote *BranchVote) (revokedBranches *set.AdvancedSet[utxo.TransactionID], isInvalid bool) {
- revokedBranches = set.NewAdvancedSet[utxo.TransactionID]()
+// determineConflictsToRevoke determines which Conflicts of the conflicting future cone of the added Conflicts are affected
+// by the vote and if the vote is valid (not voting for conflicting Conflicts).
+func (a *ApprovalWeightManager) determineConflictsToRevoke(addedConflicts, votedConflicts *set.AdvancedSet[utxo.TransactionID], vote *ConflictVote) (revokedConflicts *set.AdvancedSet[utxo.TransactionID], isInvalid bool) {
+ revokedConflicts = set.NewAdvancedSet[utxo.TransactionID]()
subTractionWalker := walker.New[utxo.TransactionID]()
- for it := addedBranches.Iterator(); it.HasNext(); {
- a.tangle.Ledger.ConflictDAG.Utils.ForEachConflictingBranchID(it.Next(), func(conflictingBranchID utxo.TransactionID) bool {
- subTractionWalker.Push(conflictingBranchID)
+ for it := addedConflicts.Iterator(); it.HasNext(); {
+ a.tangle.Ledger.ConflictDAG.Utils.ForEachConflictingConflictID(it.Next(), func(conflictingConflictID utxo.TransactionID) bool {
+ subTractionWalker.Push(conflictingConflictID)
return true
})
}
for subTractionWalker.HasNext() {
- currentVote := vote.WithBranchID(subTractionWalker.Next())
+ currentVote := vote.WithConflictID(subTractionWalker.Next())
- if isInvalid = addedBranches.Has(currentVote.BranchID()) || votedBranches.Has(currentVote.BranchID()); isInvalid {
+ if isInvalid = addedConflicts.Has(currentVote.ConflictID()) || votedConflicts.Has(currentVote.ConflictID()); isInvalid {
return
}
- revokedBranches.Add(currentVote.BranchID())
+ revokedConflicts.Add(currentVote.ConflictID())
- a.tangle.Ledger.ConflictDAG.Storage.CachedChildBranches(currentVote.BranchID()).Consume(func(childBranch *conflictdag.ChildBranch[utxo.TransactionID]) {
- subTractionWalker.Push(childBranch.ChildBranchID())
+ a.tangle.Ledger.ConflictDAG.Storage.CachedChildConflicts(currentVote.ConflictID()).Consume(func(childConflict *conflictdag.ChildConflict[utxo.TransactionID]) {
+ subTractionWalker.Push(childConflict.ChildConflictID())
})
}
return
}
-func (a *ApprovalWeightManager) identicalVoteWithHigherPowerExists(vote *BranchVote) (exists bool) {
+func (a *ApprovalWeightManager) identicalVoteWithHigherPowerExists(vote *ConflictVote) (exists bool) {
existingVote, exists := a.voteWithHigherPower(vote)
return exists && vote.Opinion() == existingVote.Opinion()
}
-func (a *ApprovalWeightManager) voteWithHigherPower(vote *BranchVote) (existingVote *BranchVote, exists bool) {
- a.tangle.Storage.LatestBranchVotes(vote.Voter()).Consume(func(latestBranchVotes *LatestBranchVotes) {
- existingVote, exists = latestBranchVotes.Vote(vote.BranchID())
+func (a *ApprovalWeightManager) voteWithHigherPower(vote *ConflictVote) (existingVote *ConflictVote, exists bool) {
+ a.tangle.Storage.LatestConflictVotes(vote.Voter()).Consume(func(latestConflictVotes *LatestConflictVotes) {
+ existingVote, exists = latestConflictVotes.Vote(vote.ConflictID())
})
return existingVote, exists && existingVote.VotePower() > vote.VotePower()
}
-func (a *ApprovalWeightManager) addVoterToBranch(branchID utxo.TransactionID, branchVote *BranchVote) {
- a.tangle.Storage.LatestBranchVotes(branchVote.Voter(), NewLatestBranchVotes).Consume(func(latestBranchVotes *LatestBranchVotes) {
- if existingVote, exists := latestBranchVotes.Vote(branchID); !exists || existingVote.VotePower() < branchVote.VotePower() {
- latestBranchVotes.Store(branchVote)
+func (a *ApprovalWeightManager) addVoterToConflict(conflictID utxo.TransactionID, conflictVote *ConflictVote) {
+ a.tangle.Storage.LatestConflictVotes(conflictVote.Voter(), NewLatestConflictVotes).Consume(func(latestConflictVotes *LatestConflictVotes) {
+ if existingVote, exists := latestConflictVotes.Vote(conflictID); !exists || existingVote.VotePower() < conflictVote.VotePower() {
+ latestConflictVotes.Store(conflictVote)
- a.tangle.Storage.BranchVoters(branchID, NewBranchVoters).Consume(func(branchVoters *BranchVoters) {
- branchVoters.AddVoter(branchVote.Voter())
+ a.tangle.Storage.ConflictVoters(conflictID, NewConflictVoters).Consume(func(conflictVoters *ConflictVoters) {
+ conflictVoters.AddVoter(conflictVote.Voter())
})
- a.updateBranchWeight(branchID)
+ a.updateConflictWeight(conflictID)
}
})
}
-func (a *ApprovalWeightManager) revokeVoterFromBranch(branchID utxo.TransactionID, branchVote *BranchVote) {
- a.tangle.Storage.LatestBranchVotes(branchVote.Voter(), NewLatestBranchVotes).Consume(func(latestBranchVotes *LatestBranchVotes) {
- if existingVote, exists := latestBranchVotes.Vote(branchID); !exists || existingVote.VotePower() < branchVote.VotePower() {
- latestBranchVotes.Store(branchVote)
+func (a *ApprovalWeightManager) revokeVoterFromConflict(conflictID utxo.TransactionID, conflictVote *ConflictVote) {
+ a.tangle.Storage.LatestConflictVotes(conflictVote.Voter(), NewLatestConflictVotes).Consume(func(latestConflictVotes *LatestConflictVotes) {
+ if existingVote, exists := latestConflictVotes.Vote(conflictID); !exists || existingVote.VotePower() < conflictVote.VotePower() {
+ latestConflictVotes.Store(conflictVote)
- a.tangle.Storage.BranchVoters(branchID, NewBranchVoters).Consume(func(branchVoters *BranchVoters) {
- branchVoters.DeleteVoter(branchVote.Voter())
+ a.tangle.Storage.ConflictVoters(conflictID, NewConflictVoters).Consume(func(conflictVoters *ConflictVoters) {
+ conflictVoters.DeleteVoter(conflictVote.Voter())
})
- a.updateBranchWeight(branchID)
+ a.updateConflictWeight(conflictID)
}
})
}
-func (a *ApprovalWeightManager) updateSequenceVoters(message *Message) {
- if !a.isRelevantVoter(message) {
+func (a *ApprovalWeightManager) updateSequenceVoters(block *Block) {
+ if !a.isRelevantVoter(block) {
return
}
- a.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
+ a.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
// Do not revisit markers that have already been visited. With the like switch there can be cycles in the sequence DAG
// which results in endless walks.
supportWalker := walker.New[markers.Marker](false)
- messageMetadata.StructureDetails().PastMarkers().ForEach(func(sequenceID markers.SequenceID, index markers.Index) bool {
+ blockMetadata.StructureDetails().PastMarkers().ForEach(func(sequenceID markers.SequenceID, index markers.Index) bool {
supportWalker.Push(markers.NewMarker(sequenceID, index))
return true
})
for supportWalker.HasNext() {
- a.addVoteToMarker(supportWalker.Next(), message, supportWalker)
+ a.addVoteToMarker(supportWalker.Next(), block, supportWalker)
}
})
}
-func (a *ApprovalWeightManager) addVoteToMarker(marker markers.Marker, message *Message, walk *walker.Walker[markers.Marker]) {
+func (a *ApprovalWeightManager) addVoteToMarker(marker markers.Marker, block *Block, walk *walker.Walker[markers.Marker]) {
// We don't add the voter and abort if the marker is already confirmed. This prevents walking too much in the sequence DAG.
- // However, it might lead to inaccuracies when creating a new branch once a conflict arrives and we copy over the
- // voters of the marker to the branch. Since the marker is already seen as confirmed it should not matter too much though.
+ // However, it might lead to inaccuracies when creating a new conflict once a conflict arrives and we copy over the
+ // voters of the marker to the conflict. Since the marker is already seen as confirmed it should not matter too much though.
if a.tangle.ConfirmationOracle.FirstUnconfirmedMarkerIndex(marker.SequenceID()) >= marker.Index() {
return
}
- a.tangle.Storage.LatestMarkerVotes(marker.SequenceID(), identity.NewID(message.IssuerPublicKey()), NewLatestMarkerVotes).Consume(func(latestMarkerVotes *LatestMarkerVotes) {
- stored, previousHighestIndex := latestMarkerVotes.Store(marker.Index(), message.SequenceNumber())
+ a.tangle.Storage.LatestMarkerVotes(marker.SequenceID(), identity.NewID(block.IssuerPublicKey()), NewLatestMarkerVotes).Consume(func(latestMarkerVotes *LatestMarkerVotes) {
+ stored, previousHighestIndex := latestMarkerVotes.Store(marker.Index(), block.SequenceNumber())
if !stored {
return
}
@@ -341,7 +341,7 @@ func (a *ApprovalWeightManager) updateMarkerWeights(sequenceID markers.SequenceI
currentMarker := markers.NewMarker(sequenceID, i)
// Skip if there is no marker at the given index, i.e., the sequence has a gap.
- if a.tangle.Booker.MarkersManager.MessageID(currentMarker) == EmptyMessageID {
+ if a.tangle.Booker.MarkersManager.BlockID(currentMarker) == EmptyBlockID {
continue
}
@@ -354,92 +354,92 @@ func (a *ApprovalWeightManager) updateMarkerWeights(sequenceID markers.SequenceI
}
}
-func (a *ApprovalWeightManager) updateBranchWeight(branchID utxo.TransactionID) {
+func (a *ApprovalWeightManager) updateConflictWeight(conflictID utxo.TransactionID) {
activeWeights, totalWeight := a.tangle.WeightProvider.WeightsOfRelevantVoters()
var voterWeight float64
- a.VotersOfBranch(branchID).Set.ForEach(func(voter Voter) {
+ a.VotersOfConflict(conflictID).Set.ForEach(func(voter Voter) {
voterWeight += activeWeights[voter]
})
- newBranchWeight := voterWeight / totalWeight
+ newConflictWeight := voterWeight / totalWeight
- a.tangle.Storage.BranchWeight(branchID, NewBranchWeight).Consume(func(branchWeight *BranchWeight) {
- if !branchWeight.SetWeight(newBranchWeight) {
+ a.tangle.Storage.ConflictWeight(conflictID, NewConflictWeight).Consume(func(conflictWeight *ConflictWeight) {
+ if !conflictWeight.SetWeight(newConflictWeight) {
return
}
- a.Events.BranchWeightChanged.Trigger(&BranchWeightChangedEvent{branchID, newBranchWeight})
+ a.Events.ConflictWeightChanged.Trigger(&ConflictWeightChangedEvent{conflictID, newConflictWeight})
})
}
-// processForkedMessage updates the Conflict weight after an individually mapped Message was forked into a new Conflict.
-func (a *ApprovalWeightManager) processForkedMessage(messageID MessageID, forkedBranchID utxo.TransactionID) {
- a.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- a.tangle.Storage.BranchVoters(forkedBranchID, NewBranchVoters).Consume(func(forkedBranchVoters *BranchVoters) {
- a.tangle.Ledger.ConflictDAG.Storage.CachedConflict(forkedBranchID).Consume(func(forkedBranch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- if !a.addSupportToForkedBranchVoters(identity.NewID(message.IssuerPublicKey()), forkedBranchVoters, forkedBranch.Parents(), message.SequenceNumber()) {
+// processForkedBlock updates the Conflict weight after an individually mapped Block was forked into a new Conflict.
+func (a *ApprovalWeightManager) processForkedBlock(blockID BlockID, forkedConflictID utxo.TransactionID) {
+ a.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ a.tangle.Storage.ConflictVoters(forkedConflictID, NewConflictVoters).Consume(func(forkedConflictVoters *ConflictVoters) {
+ a.tangle.Ledger.ConflictDAG.Storage.CachedConflict(forkedConflictID).Consume(func(forkedConflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ if !a.addSupportToForkedConflictVoters(identity.NewID(block.IssuerPublicKey()), forkedConflictVoters, forkedConflict.Parents(), block.SequenceNumber()) {
return
}
- a.updateBranchWeight(forkedBranchID)
+ a.updateConflictWeight(forkedConflictID)
})
})
})
}
-// take everything in future cone because it was not conflicting before and move to new branch.
-func (a *ApprovalWeightManager) processForkedMarker(marker markers.Marker, forkedBranchID utxo.TransactionID) {
- branchVotesUpdated := false
- a.tangle.Storage.BranchVoters(forkedBranchID, NewBranchVoters).Consume(func(branchVoters *BranchVoters) {
- a.tangle.Ledger.ConflictDAG.Storage.CachedConflict(forkedBranchID).Consume(func(forkedBranch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- // If we want to add the branchVoters to the newly-forker branch, we have to make sure the
- // voters of the marker we are forking also voted for all parents of the branch the marker is
+// take everything in future cone because it was not conflicting before and move to new conflict.
+func (a *ApprovalWeightManager) processForkedMarker(marker markers.Marker, forkedConflictID utxo.TransactionID) {
+ conflictVotesUpdated := false
+ a.tangle.Storage.ConflictVoters(forkedConflictID, NewConflictVoters).Consume(func(conflictVoters *ConflictVoters) {
+ a.tangle.Ledger.ConflictDAG.Storage.CachedConflict(forkedConflictID).Consume(func(forkedConflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ // If we want to add the conflictVoters to the newly-forker conflict, we have to make sure the
+ // voters of the marker we are forking also voted for all parents of the conflict the marker is
// being forked into.
- parentBranchIDs := forkedBranch.Parents()
+ parentConflictIDs := forkedConflict.Parents()
for voter, sequenceNumber := range a.markerVotes(marker) {
- if !a.addSupportToForkedBranchVoters(voter, branchVoters, parentBranchIDs, sequenceNumber) {
+ if !a.addSupportToForkedConflictVoters(voter, conflictVoters, parentConflictIDs, sequenceNumber) {
continue
}
- branchVotesUpdated = true
+ conflictVotesUpdated = true
}
})
})
- if !branchVotesUpdated {
+ if !conflictVotesUpdated {
return
}
- a.updateBranchWeight(forkedBranchID)
+ a.updateConflictWeight(forkedConflictID)
}
-func (a *ApprovalWeightManager) addSupportToForkedBranchVoters(voter Voter, forkedBranchVoters *BranchVoters, parentBranchIDs *set.AdvancedSet[utxo.TransactionID], sequenceNumber uint64) (supportAdded bool) {
- if !a.voterSupportsAllBranches(voter, parentBranchIDs) {
+func (a *ApprovalWeightManager) addSupportToForkedConflictVoters(voter Voter, forkedConflictVoters *ConflictVoters, parentConflictIDs *set.AdvancedSet[utxo.TransactionID], sequenceNumber uint64) (supportAdded bool) {
+ if !a.voterSupportsAllConflicts(voter, parentConflictIDs) {
return false
}
- a.tangle.Storage.LatestBranchVotes(voter, NewLatestBranchVotes).Consume(func(latestBranchVotes *LatestBranchVotes) {
- supportAdded = latestBranchVotes.Store(NewBranchVote(voter, sequenceNumber, forkedBranchVoters.BranchID(), Confirmed))
+ a.tangle.Storage.LatestConflictVotes(voter, NewLatestConflictVotes).Consume(func(latestConflictVotes *LatestConflictVotes) {
+ supportAdded = latestConflictVotes.Store(NewConflictVote(voter, sequenceNumber, forkedConflictVoters.ConflictID(), Confirmed))
})
- return supportAdded && forkedBranchVoters.AddVoter(voter)
+ return supportAdded && forkedConflictVoters.AddVoter(voter)
}
-func (a *ApprovalWeightManager) voterSupportsAllBranches(voter Voter, branchIDs *set.AdvancedSet[utxo.TransactionID]) (allBranchesSupported bool) {
- allBranchesSupported = true
- for it := branchIDs.Iterator(); it.HasNext(); {
- a.tangle.Storage.BranchVoters(it.Next()).Consume(func(branchVoters *BranchVoters) {
- allBranchesSupported = branchVoters.Has(voter)
+func (a *ApprovalWeightManager) voterSupportsAllConflicts(voter Voter, conflictIDs *set.AdvancedSet[utxo.TransactionID]) (allConflictsSupported bool) {
+ allConflictsSupported = true
+ for it := conflictIDs.Iterator(); it.HasNext(); {
+ a.tangle.Storage.ConflictVoters(it.Next()).Consume(func(conflictVoters *ConflictVoters) {
+ allConflictsSupported = conflictVoters.Has(voter)
})
- if !allBranchesSupported {
+ if !allConflictsSupported {
return false
}
}
- return allBranchesSupported
+ return allConflictsSupported
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/approvalweightmanager.models.go b/packages/tangle/approvalweightmanager.models.go
index 013c8c67ff..dbb457a92a 100644
--- a/packages/tangle/approvalweightmanager.models.go
+++ b/packages/tangle/approvalweightmanager.models.go
@@ -18,36 +18,36 @@ import (
// region ApprovalWeightManager Models /////////////////////////////////////////////////////////////////////////////////
-// region BranchWeight /////////////////////////////////////////////////////////////////////////////////////////////////
+// region ConflictWeight /////////////////////////////////////////////////////////////////////////////////////////////////
-// BranchWeight is a data structure that tracks the weight of a BranchID.
-type BranchWeight struct {
- model.Storable[utxo.TransactionID, BranchWeight, *BranchWeight, float64] `serix:"0"`
+// ConflictWeight is a data structure that tracks the weight of a ConflictID.
+type ConflictWeight struct {
+ model.Storable[utxo.TransactionID, ConflictWeight, *ConflictWeight, float64] `serix:"0"`
}
-// NewBranchWeight creates a new BranchWeight.
-func NewBranchWeight(branchID utxo.TransactionID) (branchWeight *BranchWeight) {
+// NewConflictWeight creates a new ConflictWeight.
+func NewConflictWeight(conflictID utxo.TransactionID) (conflictWeight *ConflictWeight) {
weight := 0.0
- branchWeight = model.NewStorable[utxo.TransactionID, BranchWeight](&weight)
- branchWeight.SetID(branchID)
+ conflictWeight = model.NewStorable[utxo.TransactionID, ConflictWeight](&weight)
+ conflictWeight.SetID(conflictID)
return
}
-// BranchID returns the BranchID that is being tracked.
-func (b *BranchWeight) BranchID() (branchID utxo.TransactionID) {
+// ConflictID returns the ConflictID that is being tracked.
+func (b *ConflictWeight) ConflictID() (conflictID utxo.TransactionID) {
return b.ID()
}
-// Weight returns the weight of the BranchID.
-func (b *BranchWeight) Weight() (weight float64) {
+// Weight returns the weight of the ConflictID.
+func (b *ConflictWeight) Weight() (weight float64) {
b.RLock()
defer b.RUnlock()
return b.M
}
-// SetWeight sets the weight for the BranchID and returns true if it was modified.
-func (b *BranchWeight) SetWeight(weight float64) bool {
+// SetWeight sets the weight for the ConflictID and returns true if it was modified.
+func (b *ConflictWeight) SetWeight(weight float64) bool {
b.Lock()
defer b.Unlock()
@@ -64,14 +64,14 @@ func (b *BranchWeight) SetWeight(weight float64) bool {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region SerializableSet ////////////////////////////////////////////////////////////////////////////////////////////////////////
-// Voter is a type wrapper for identity.ID and defines a node that supports a branch or marker.
+// Voter is a type wrapper for identity.ID and defines a node that supports a conflict or marker.
type Voter = identity.ID
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region Voters ///////////////////////////////////////////////////////////////////////////////////////////////////////
-// Voters is a set of node identities that votes for a particular Branch.
+// Voters is a set of node identities that votes for a particular Conflict.
type Voters struct {
set.Set[Voter]
}
@@ -100,7 +100,6 @@ func (v *Voters) Clone() (clonedVoters *Voters) {
// Decode deserializes bytes into a valid object.
func (v *Voters) Decode(data []byte) (bytesRead int, err error) {
-
v.Set = set.New[Voter]()
bytesRead, err = serix.DefaultAPI.Decode(context.Background(), data, &v.Set, serix.WithValidation())
if err != nil {
@@ -133,35 +132,35 @@ func (v *Voters) String() string {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region BranchVoters /////////////////////////////////////////////////////////////////////////////////////////////////
+// region ConflictVoters /////////////////////////////////////////////////////////////////////////////////////////////////
-// BranchVoters is a data structure that tracks which nodes support a branch.
-type BranchVoters struct {
- model.Storable[utxo.TransactionID, BranchVoters, *BranchVoters, Voters] `serix:"0"`
+// ConflictVoters is a data structure that tracks which nodes support a conflict.
+type ConflictVoters struct {
+ model.Storable[utxo.TransactionID, ConflictVoters, *ConflictVoters, Voters] `serix:"0"`
}
-// NewBranchVoters is the constructor for the BranchVoters object.
-func NewBranchVoters(branchID utxo.TransactionID) (branchVoters *BranchVoters) {
- branchVoters = model.NewStorable[utxo.TransactionID, BranchVoters](NewVoters())
- branchVoters.SetID(branchID)
+// NewConflictVoters is the constructor for the ConflictVoters object.
+func NewConflictVoters(conflictID utxo.TransactionID) (conflictVoters *ConflictVoters) {
+ conflictVoters = model.NewStorable[utxo.TransactionID, ConflictVoters](NewVoters())
+ conflictVoters.SetID(conflictID)
return
}
-// BranchID returns the BranchID that is being tracked.
-func (b *BranchVoters) BranchID() (branchID utxo.TransactionID) {
+// ConflictID returns the ConflictID that is being tracked.
+func (b *ConflictVoters) ConflictID() (conflictID utxo.TransactionID) {
return b.ID()
}
-// Has returns true if the given Voter is currently supporting this Branch.
-func (b *BranchVoters) Has(voter Voter) bool {
+// Has returns true if the given Voter is currently supporting this Conflict.
+func (b *ConflictVoters) Has(voter Voter) bool {
b.RLock()
defer b.RUnlock()
return b.M.Set.Has(voter)
}
-// AddVoter adds a new Voter to the tracked BranchID.
-func (b *BranchVoters) AddVoter(voter Voter) (added bool) {
+// AddVoter adds a new Voter to the tracked ConflictID.
+func (b *ConflictVoters) AddVoter(voter Voter) (added bool) {
b.Lock()
defer b.Unlock()
@@ -173,8 +172,8 @@ func (b *BranchVoters) AddVoter(voter Voter) (added bool) {
return
}
-// AddVoters adds the Voters set to the tracked BranchID.
-func (b *BranchVoters) AddVoters(voters *Voters) (added bool) {
+// AddVoters adds the Voters set to the tracked ConflictID.
+func (b *ConflictVoters) AddVoters(voters *Voters) (added bool) {
voters.Set.ForEach(func(voter Voter) {
if b.AddVoter(voter) {
added = true
@@ -188,8 +187,8 @@ func (b *BranchVoters) AddVoters(voters *Voters) (added bool) {
return
}
-// DeleteVoter deletes a Voter from the tracked BranchID.
-func (b *BranchVoters) DeleteVoter(voter Voter) (deleted bool) {
+// DeleteVoter deletes a Voter from the tracked ConflictID.
+func (b *ConflictVoters) DeleteVoter(voter Voter) (deleted bool) {
b.Lock()
defer b.Unlock()
@@ -201,8 +200,8 @@ func (b *BranchVoters) DeleteVoter(voter Voter) (deleted bool) {
return
}
-// Voters returns the set of Voters that are supporting the given BranchID.
-func (b *BranchVoters) Voters() (voters *Voters) {
+// Voters returns the set of Voters that are supporting the given ConflictID.
+func (b *ConflictVoters) Voters() (voters *Voters) {
b.RLock()
defer b.RUnlock()
@@ -213,17 +212,17 @@ func (b *BranchVoters) Voters() (voters *Voters) {
// region Opinion //////////////////////////////////////////////////////////////////////////////////////////////////////
-// Opinion is a type that represents the Opinion of a node on a certain Branch.
+// Opinion is a type that represents the Opinion of a node on a certain Conflict.
type Opinion uint8
const (
// UndefinedOpinion represents the zero value of the Opinion type.
UndefinedOpinion Opinion = iota
- // Confirmed represents the Opinion that a given Branch is the winning one.
+ // Confirmed represents the Opinion that a given Conflict is the winning one.
Confirmed
- // Rejected represents the Opinion that a given Branch is the loosing one.
+ // Rejected represents the Opinion that a given Conflict is the loosing one.
Rejected
)
@@ -232,9 +231,9 @@ const (
// region LatestMarkerVotes ////////////////////////////////////////////////////////////////////////////////////////////
// VotePower is used to establish an absolute order of votes, regardless of their arrival order.
-// Currently, the used VotePower is the SequenceNumber embedded in the Message Layout, so that, regardless
+// Currently, the used VotePower is the SequenceNumber embedded in the Block Layout, so that, regardless
// of the order in which votes are received, the same conclusion is computed.
-// Alternatively, the objective timestamp of a Message could be used.
+// Alternatively, the objective timestamp of a Block could be used.
type VotePower = uint64
// LatestMarkerVotesKeyPartition defines the partition of the storage key of the LastMarkerVotes model.
@@ -328,48 +327,48 @@ func (c CachedLatestMarkerVotesByVoter) Consume(consumer func(latestMarkerVotes
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region LatestBranchVotes ////////////////////////////////////////////////////////////////////////////////////////////
+// region LatestConflictVotes ////////////////////////////////////////////////////////////////////////////////////////////
-// LatestBranchVotes represents the branch supported from an Issuer.
-type LatestBranchVotes struct {
- model.Storable[Voter, LatestBranchVotes, *LatestBranchVotes, latestBranchVotesModel] `serix:"0"`
+// LatestConflictVotes represents the conflict supported from an Issuer.
+type LatestConflictVotes struct {
+ model.Storable[Voter, LatestConflictVotes, *LatestConflictVotes, latestConflictVotesModel] `serix:"0"`
}
-type latestBranchVotesModel struct {
- LatestBranchVotes map[utxo.TransactionID]*BranchVote `serix:"0,lengthPrefixType=uint32"`
+type latestConflictVotesModel struct {
+ LatestConflictVotes map[utxo.TransactionID]*ConflictVote `serix:"0,lengthPrefixType=uint32"`
}
-// NewLatestBranchVotes creates a new LatestBranchVotes.
-func NewLatestBranchVotes(voter Voter) (latestBranchVotes *LatestBranchVotes) {
- latestBranchVotes = model.NewStorable[Voter, LatestBranchVotes](
- &latestBranchVotesModel{
- LatestBranchVotes: make(map[utxo.TransactionID]*BranchVote),
+// NewLatestConflictVotes creates a new LatestConflictVotes.
+func NewLatestConflictVotes(voter Voter) (latestConflictVotes *LatestConflictVotes) {
+ latestConflictVotes = model.NewStorable[Voter, LatestConflictVotes](
+ &latestConflictVotesModel{
+ LatestConflictVotes: make(map[utxo.TransactionID]*ConflictVote),
},
)
- latestBranchVotes.SetID(voter)
+ latestConflictVotes.SetID(voter)
return
}
-// Vote returns the Vote for the LatestBranchVotes.
-func (l *LatestBranchVotes) Vote(branchID utxo.TransactionID) (vote *BranchVote, exists bool) {
+// Vote returns the Vote for the LatestConflictVotes.
+func (l *LatestConflictVotes) Vote(conflictID utxo.TransactionID) (vote *ConflictVote, exists bool) {
l.RLock()
defer l.RUnlock()
- vote, exists = l.M.LatestBranchVotes[branchID]
+ vote, exists = l.M.LatestConflictVotes[conflictID]
return
}
-// Store stores the vote for the LatestBranchVotes.
-func (l *LatestBranchVotes) Store(vote *BranchVote) (stored bool) {
+// Store stores the vote for the LatestConflictVotes.
+func (l *LatestConflictVotes) Store(vote *ConflictVote) (stored bool) {
l.Lock()
defer l.Unlock()
- if currentVote, exists := l.M.LatestBranchVotes[vote.M.BranchID]; exists && currentVote.M.VotePower >= vote.M.VotePower {
+ if currentVote, exists := l.M.LatestConflictVotes[vote.M.ConflictID]; exists && currentVote.M.VotePower >= vote.M.VotePower {
return false
}
- l.M.LatestBranchVotes[vote.M.BranchID] = vote
+ l.M.LatestConflictVotes[vote.M.ConflictID] = vote
l.SetModified()
return true
@@ -379,77 +378,77 @@ func (l *LatestBranchVotes) Store(vote *BranchVote) (stored bool) {
// region Vote /////////////////////////////////////////////////////////////////////////////////////////////////////////
-// BranchVote represents a struct that holds information about what Opinion a certain Voter has on a Branch.
-type BranchVote struct {
- model.Mutable[BranchVote, *BranchVote, branchVoteModel] `serix:"0"`
+// ConflictVote represents a struct that holds information about what Opinion a certain Voter has on a Conflict.
+type ConflictVote struct {
+ model.Mutable[ConflictVote, *ConflictVote, conflictVoteModel] `serix:"0"`
}
-type branchVoteModel struct {
- Voter Voter `serix:"0"`
- BranchID utxo.TransactionID `serix:"1"`
- Opinion Opinion `serix:"2"`
- VotePower VotePower `serix:"3"`
+type conflictVoteModel struct {
+ Voter Voter `serix:"0"`
+ ConflictID utxo.TransactionID `serix:"1"`
+ Opinion Opinion `serix:"2"`
+ VotePower VotePower `serix:"3"`
}
-// NewBranchVote derives a vote for th.
-func NewBranchVote(voter Voter, votePower VotePower, branchID utxo.TransactionID, opinion Opinion) (voteWithOpinion *BranchVote) {
- return model.NewMutable[BranchVote](
- &branchVoteModel{
- Voter: voter,
- VotePower: votePower,
- BranchID: branchID,
- Opinion: opinion,
+// NewConflictVote derives a vote for th.
+func NewConflictVote(voter Voter, votePower VotePower, conflictID utxo.TransactionID, opinion Opinion) (voteWithOpinion *ConflictVote) {
+ return model.NewMutable[ConflictVote](
+ &conflictVoteModel{
+ Voter: voter,
+ VotePower: votePower,
+ ConflictID: conflictID,
+ Opinion: opinion,
},
)
}
// WithOpinion derives a vote for the given Opinion.
-func (v *BranchVote) WithOpinion(opinion Opinion) (voteWithOpinion *BranchVote) {
+func (v *ConflictVote) WithOpinion(opinion Opinion) (voteWithOpinion *ConflictVote) {
v.RLock()
defer v.RUnlock()
- return model.NewMutable[BranchVote](
- &branchVoteModel{
- Voter: v.M.Voter,
- BranchID: v.M.BranchID,
- Opinion: opinion,
- VotePower: v.M.VotePower,
+ return model.NewMutable[ConflictVote](
+ &conflictVoteModel{
+ Voter: v.M.Voter,
+ ConflictID: v.M.ConflictID,
+ Opinion: opinion,
+ VotePower: v.M.VotePower,
},
)
}
-// WithBranchID derives a vote for the given BranchID.
-func (v *BranchVote) WithBranchID(branchID utxo.TransactionID) (rejectedVote *BranchVote) {
+// WithConflictID derives a vote for the given ConflictID.
+func (v *ConflictVote) WithConflictID(conflictID utxo.TransactionID) (rejectedVote *ConflictVote) {
v.RLock()
defer v.RUnlock()
- return model.NewMutable[BranchVote](
- &branchVoteModel{
- Voter: v.M.Voter,
- BranchID: branchID,
- Opinion: v.M.Opinion,
- VotePower: v.M.VotePower,
+ return model.NewMutable[ConflictVote](
+ &conflictVoteModel{
+ Voter: v.M.Voter,
+ ConflictID: conflictID,
+ Opinion: v.M.Opinion,
+ VotePower: v.M.VotePower,
},
)
}
-func (v *BranchVote) Voter() Voter {
+func (v *ConflictVote) Voter() Voter {
v.RLock()
defer v.RUnlock()
return v.M.Voter
}
-func (v *BranchVote) BranchID() utxo.TransactionID {
+func (v *ConflictVote) ConflictID() utxo.TransactionID {
v.RLock()
defer v.RUnlock()
- return v.M.BranchID
+ return v.M.ConflictID
}
-func (v *BranchVote) Opinion() Opinion {
+func (v *ConflictVote) Opinion() Opinion {
v.RLock()
defer v.RUnlock()
return v.M.Opinion
}
-func (v *BranchVote) VotePower() VotePower {
+func (v *ConflictVote) VotePower() VotePower {
v.RLock()
defer v.RUnlock()
return v.M.VotePower
diff --git a/packages/tangle/approvalweightmanager_test.go b/packages/tangle/approvalweightmanager_test.go
index 8269ff58d6..142adf3a12 100644
--- a/packages/tangle/approvalweightmanager_test.go
+++ b/packages/tangle/approvalweightmanager_test.go
@@ -20,7 +20,7 @@ import (
"github.com/iotaledger/goshimmer/packages/markers"
)
-func BenchmarkApprovalWeightManager_ProcessMessage_Conflicts(b *testing.B) {
+func BenchmarkApprovalWeightManager_ProcessBlock_Conflicts(b *testing.B) {
voters := map[string]*identity.Identity{
"A": identity.New(ed25519.GenerateKeyPair().PublicKey),
"B": identity.New(ed25519.GenerateKeyPair().PublicKey),
@@ -66,36 +66,36 @@ func BenchmarkApprovalWeightManager_ProcessMessage_Conflicts(b *testing.B) {
}
}
-func TestBranchWeightMarshalling(t *testing.T) {
- branchWeight := NewBranchWeight(randomBranchID())
- branchWeight.SetWeight(5.1234)
- branchWeightDecoded := new(BranchWeight)
- err := branchWeightDecoded.FromBytes(lo.PanicOnErr(branchWeight.Bytes()))
+func TestConflictWeightMarshalling(t *testing.T) {
+ conflictWeight := NewConflictWeight(randomConflictID())
+ conflictWeight.SetWeight(5.1234)
+ conflictWeightDecoded := new(ConflictWeight)
+ err := conflictWeightDecoded.FromBytes(lo.PanicOnErr(conflictWeight.Bytes()))
require.NoError(t, err)
- assert.Equal(t, lo.PanicOnErr(branchWeight.Bytes()), lo.PanicOnErr(branchWeightDecoded.Bytes()))
- assert.Equal(t, branchWeight.Weight(), branchWeightDecoded.Weight())
+ assert.Equal(t, lo.PanicOnErr(conflictWeight.Bytes()), lo.PanicOnErr(conflictWeightDecoded.Bytes()))
+ assert.Equal(t, conflictWeight.Weight(), conflictWeightDecoded.Weight())
}
-func TestBranchVotersMarshalling(t *testing.T) {
- branchVoters := NewBranchVoters(randomBranchID())
+func TestConflictVotersMarshalling(t *testing.T) {
+ conflictVoters := NewConflictVoters(randomConflictID())
for i := 0; i < 100; i++ {
- branchVoters.AddVoter(identity.GenerateIdentity().ID())
+ conflictVoters.AddVoter(identity.GenerateIdentity().ID())
}
- branchVotersFromBytes := new(BranchVoters)
- err := branchVotersFromBytes.FromBytes(lo.PanicOnErr(branchVoters.Bytes()))
+ conflictVotersFromBytes := new(ConflictVoters)
+ err := conflictVotersFromBytes.FromBytes(lo.PanicOnErr(conflictVoters.Bytes()))
require.NoError(t, err)
- // verify that branchVotersFromBytes has all voters from branchVoters
- assert.Equal(t, branchVoters.Voters().Set.Size(), branchVotersFromBytes.Voters().Set.Size())
- branchVoters.Voters().Set.ForEach(func(voter Voter) {
- assert.True(t, branchVotersFromBytes.Voters().Set.Has(voter))
+ // verify that conflictVotersFromBytes has all voters from conflictVoters
+ assert.Equal(t, conflictVoters.Voters().Set.Size(), conflictVotersFromBytes.Voters().Set.Size())
+ conflictVoters.Voters().Set.ForEach(func(voter Voter) {
+ assert.True(t, conflictVotersFromBytes.Voters().Set.Has(voter))
})
}
-// TestApprovalWeightManager_updateBranchVoters tests the ApprovalWeightManager's functionality regarding branches.
-// The scenario can be found in images/approvalweight-updateBranchSupporters.png.
-func TestApprovalWeightManager_updateBranchVoters(t *testing.T) {
+// TestApprovalWeightManager_updateConflictVoters tests the ApprovalWeightManager's functionality regarding conflictes.
+// The scenario can be found in images/approvalweight-updateConflictSupporters.png.
+func TestApprovalWeightManager_updateConflictVoters(t *testing.T) {
keyPair := ed25519.GenerateKeyPair()
var weightProvider *CManaWeightProvider
@@ -112,61 +112,61 @@ func TestApprovalWeightManager_updateBranchVoters(t *testing.T) {
defer tangle.Shutdown()
approvalWeightManager := tangle.ApprovalWeightManager
- conflictIDs := map[string]utxo.OutputID{
- "Conflict 1": randomConflictID(),
- "Conflict 2": randomConflictID(),
- "Conflict 3": randomConflictID(),
- "Conflict 4": randomConflictID(),
- "Conflict 5": randomConflictID(),
+ resourceIDs := map[string]utxo.OutputID{
+ "Conflict 1": randomResourceID(),
+ "Conflict 2": randomResourceID(),
+ "Conflict 3": randomResourceID(),
+ "Conflict 4": randomResourceID(),
+ "Conflict 5": randomResourceID(),
}
- branchIDs := map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Conflict 1": set.NewAdvancedSet(randomBranchID()),
- "Conflict 1.1": set.NewAdvancedSet(randomBranchID()),
- "Conflict 1.2": set.NewAdvancedSet(randomBranchID()),
- "Conflict 1.3": set.NewAdvancedSet(randomBranchID()),
- "Conflict 2": set.NewAdvancedSet(randomBranchID()),
- "Conflict 3": set.NewAdvancedSet(randomBranchID()),
- "Conflict 4": set.NewAdvancedSet(randomBranchID()),
- "Conflict 4.1": set.NewAdvancedSet(randomBranchID()),
- "Conflict 4.1.1": set.NewAdvancedSet(randomBranchID()),
- "Conflict 4.1.2": set.NewAdvancedSet(randomBranchID()),
- "Conflict 4.2": set.NewAdvancedSet(randomBranchID()),
+ conflictIDs := map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Conflict 1": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 1.1": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 1.2": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 1.3": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 2": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 3": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 4": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 4.1": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 4.1.1": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 4.1.2": set.NewAdvancedSet(randomConflictID()),
+ "Conflict 4.2": set.NewAdvancedSet(randomConflictID()),
}
- createBranch(t, tangle, "Conflict 1", branchIDs, set.NewAdvancedSet[utxo.TransactionID](), conflictIDs["Conflict 1"])
- createBranch(t, tangle, "Conflict 2", branchIDs, set.NewAdvancedSet[utxo.TransactionID](), conflictIDs["Conflict 1"])
- createBranch(t, tangle, "Conflict 3", branchIDs, set.NewAdvancedSet[utxo.TransactionID](), conflictIDs["Conflict 2"])
- createBranch(t, tangle, "Conflict 4", branchIDs, set.NewAdvancedSet[utxo.TransactionID](), conflictIDs["Conflict 2"])
+ createConflict(t, tangle, "Conflict 1", conflictIDs, set.NewAdvancedSet[utxo.TransactionID](), resourceIDs["Conflict 1"])
+ createConflict(t, tangle, "Conflict 2", conflictIDs, set.NewAdvancedSet[utxo.TransactionID](), resourceIDs["Conflict 1"])
+ createConflict(t, tangle, "Conflict 3", conflictIDs, set.NewAdvancedSet[utxo.TransactionID](), resourceIDs["Conflict 2"])
+ createConflict(t, tangle, "Conflict 4", conflictIDs, set.NewAdvancedSet[utxo.TransactionID](), resourceIDs["Conflict 2"])
- createBranch(t, tangle, "Conflict 1.1", branchIDs, branchIDs["Conflict 1"], conflictIDs["Conflict 3"])
- createBranch(t, tangle, "Conflict 1.2", branchIDs, branchIDs["Conflict 1"], conflictIDs["Conflict 3"])
- createBranch(t, tangle, "Conflict 1.3", branchIDs, branchIDs["Conflict 1"], conflictIDs["Conflict 3"])
+ createConflict(t, tangle, "Conflict 1.1", conflictIDs, conflictIDs["Conflict 1"], resourceIDs["Conflict 3"])
+ createConflict(t, tangle, "Conflict 1.2", conflictIDs, conflictIDs["Conflict 1"], resourceIDs["Conflict 3"])
+ createConflict(t, tangle, "Conflict 1.3", conflictIDs, conflictIDs["Conflict 1"], resourceIDs["Conflict 3"])
- createBranch(t, tangle, "Conflict 4.1", branchIDs, branchIDs["Conflict 4"], conflictIDs["Conflict 4"])
- createBranch(t, tangle, "Conflict 4.2", branchIDs, branchIDs["Conflict 4"], conflictIDs["Conflict 4"])
+ createConflict(t, tangle, "Conflict 4.1", conflictIDs, conflictIDs["Conflict 4"], resourceIDs["Conflict 4"])
+ createConflict(t, tangle, "Conflict 4.2", conflictIDs, conflictIDs["Conflict 4"], resourceIDs["Conflict 4"])
- createBranch(t, tangle, "Conflict 4.1.1", branchIDs, branchIDs["Conflict 4.1"], conflictIDs["Conflict 5"])
- createBranch(t, tangle, "Conflict 4.1.2", branchIDs, branchIDs["Conflict 4.1"], conflictIDs["Conflict 5"])
+ createConflict(t, tangle, "Conflict 4.1.1", conflictIDs, conflictIDs["Conflict 4.1"], resourceIDs["Conflict 5"])
+ createConflict(t, tangle, "Conflict 4.1.2", conflictIDs, conflictIDs["Conflict 4.1"], resourceIDs["Conflict 5"])
- branchIDs["Conflict 1.1 + Conflict 4.1.1"] = set.NewAdvancedSet[utxo.TransactionID]()
- branchIDs["Conflict 1.1 + Conflict 4.1.1"].AddAll(branchIDs["Conflict 1.1"])
- branchIDs["Conflict 1.1 + Conflict 4.1.1"].AddAll(branchIDs["Conflict 4.1.1"])
+ conflictIDs["Conflict 1.1 + Conflict 4.1.1"] = set.NewAdvancedSet[utxo.TransactionID]()
+ conflictIDs["Conflict 1.1 + Conflict 4.1.1"].AddAll(conflictIDs["Conflict 1.1"])
+ conflictIDs["Conflict 1.1 + Conflict 4.1.1"].AddAll(conflictIDs["Conflict 4.1.1"])
// Issue statements in different order to make sure that no information is lost when nodes apply statements in arbitrary order
- message1 := newTestDataMessagePublicKey("test1", keyPair.PublicKey)
- message2 := newTestDataMessagePublicKey("test2", keyPair.PublicKey)
+ block1 := newTestDataBlockPublicKey("test1", keyPair.PublicKey)
+ block2 := newTestDataBlockPublicKey("test2", keyPair.PublicKey)
// statement 2: "Conflict 4.1.2"
{
- message := message2
- tangle.Storage.StoreMessage(message)
- message.ID().RegisterAlias("Statement2")
- tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- messageMetadata.SetAddedBranchIDs(branchIDs["Conflict 4.1.2"])
- messageMetadata.SetStructureDetails(markers.NewStructureDetails())
+ block := block2
+ tangle.Storage.StoreBlock(block)
+ block.ID().RegisterAlias("Statement2")
+ tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ blockMetadata.SetAddedConflictIDs(conflictIDs["Conflict 4.1.2"])
+ blockMetadata.SetStructureDetails(markers.NewStructureDetails())
})
- approvalWeightManager.updateBranchVoters(message)
+ approvalWeightManager.updateConflictVoters(block)
expectedResults := map[string]bool{
"Conflict 1": false,
@@ -181,19 +181,19 @@ func TestApprovalWeightManager_updateBranchVoters(t *testing.T) {
"Conflict 4.1.2": true,
"Conflict 4.2": false,
}
- validateStatementResults(t, approvalWeightManager, branchIDs, identity.NewID(keyPair.PublicKey), expectedResults)
+ validateStatementResults(t, approvalWeightManager, conflictIDs, identity.NewID(keyPair.PublicKey), expectedResults)
}
// statement 1: "Conflict 1.1 + Conflict 4.1.1"
{
- message := message1
- tangle.Storage.StoreMessage(message)
- message.ID().RegisterAlias("Statement1")
- tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- messageMetadata.SetAddedBranchIDs(branchIDs["Conflict 1.1 + Conflict 4.1.1"])
- messageMetadata.SetStructureDetails(markers.NewStructureDetails())
+ block := block1
+ tangle.Storage.StoreBlock(block)
+ block.ID().RegisterAlias("Statement1")
+ tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ blockMetadata.SetAddedConflictIDs(conflictIDs["Conflict 1.1 + Conflict 4.1.1"])
+ blockMetadata.SetStructureDetails(markers.NewStructureDetails())
})
- approvalWeightManager.updateBranchVoters(message)
+ approvalWeightManager.updateConflictVoters(block)
expectedResults := map[string]bool{
"Conflict 1": true,
@@ -208,19 +208,19 @@ func TestApprovalWeightManager_updateBranchVoters(t *testing.T) {
"Conflict 4.1.2": true,
"Conflict 4.2": false,
}
- validateStatementResults(t, approvalWeightManager, branchIDs, identity.NewID(keyPair.PublicKey), expectedResults)
+ validateStatementResults(t, approvalWeightManager, conflictIDs, identity.NewID(keyPair.PublicKey), expectedResults)
}
// statement 3: "Conflict 2"
{
- message := newTestDataMessagePublicKey("test", keyPair.PublicKey)
- tangle.Storage.StoreMessage(message)
- message.ID().RegisterAlias("Statement3")
- tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- messageMetadata.SetAddedBranchIDs(branchIDs["Conflict 2"])
- messageMetadata.SetStructureDetails(markers.NewStructureDetails())
+ block := newTestDataBlockPublicKey("test", keyPair.PublicKey)
+ tangle.Storage.StoreBlock(block)
+ block.ID().RegisterAlias("Statement3")
+ tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ blockMetadata.SetAddedConflictIDs(conflictIDs["Conflict 2"])
+ blockMetadata.SetStructureDetails(markers.NewStructureDetails())
})
- approvalWeightManager.updateBranchVoters(message)
+ approvalWeightManager.updateConflictVoters(block)
expectedResults := map[string]bool{
"Conflict 1": false,
@@ -235,7 +235,7 @@ func TestApprovalWeightManager_updateBranchVoters(t *testing.T) {
"Conflict 4.1.2": true,
"Conflict 4.2": false,
}
- validateStatementResults(t, approvalWeightManager, branchIDs, identity.NewID(keyPair.PublicKey), expectedResults)
+ validateStatementResults(t, approvalWeightManager, conflictIDs, identity.NewID(keyPair.PublicKey), expectedResults)
}
}
@@ -378,22 +378,22 @@ func TestApprovalWeightManager_updateSequenceVoters(t *testing.T) {
}
}
-// TestApprovalWeightManager_ProcessMessage tests the whole functionality of the ApprovalWeightManager.
-// The scenario can be found in images/approvalweight-processMessage.png.
-func TestApprovalWeightManager_ProcessMessage(t *testing.T) {
- processMsgScenario := ProcessMessageScenario(t)
- defer func(processMsgScenario *TestScenario, t *testing.T) {
- if err := processMsgScenario.Cleanup(t); err != nil {
+// TestApprovalWeightManager_ProcessBlock tests the whole functionality of the ApprovalWeightManager.
+// The scenario can be found in images/approvalweight-processBlock.png.
+func TestApprovalWeightManager_ProcessBlock(t *testing.T) {
+ processBlkScenario := ProcessBlockScenario(t)
+ defer func(processBlkScenario *TestScenario, t *testing.T) {
+ if err := processBlkScenario.Cleanup(t); err != nil {
require.NoError(t, err)
}
- }(processMsgScenario, t)
+ }(processBlkScenario, t)
- for processMsgScenario.HasNext() {
- processMsgScenario.Next(nil)
+ for processBlkScenario.HasNext() {
+ processBlkScenario.Next(nil)
}
}
-func TestAggregatedBranchApproval(t *testing.T) {
+func TestAggregatedConflictApproval(t *testing.T) {
nodes := make(map[string]*identity.Identity)
for _, node := range []string{"A", "B", "C", "D", "E"} {
nodes[node] = identity.GenerateIdentity()
@@ -418,66 +418,66 @@ func TestAggregatedBranchApproval(t *testing.T) {
defer tangle.Shutdown()
tangle.Setup()
- testFramework := NewMessageTestFramework(tangle, WithGenesisOutput("G1", 500), WithGenesisOutput("G2", 500))
+ testFramework := NewBlockTestFramework(tangle, WithGenesisOutput("G1", 500), WithGenesisOutput("G2", 500))
- // ISSUE Message1
+ // ISSUE Block1
{
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()), WithInputs("G1"), WithOutput("A", 500))
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message1").RegisterAlias("Branch1")
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()), WithInputs("G1"), WithOutput("A", 500))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block1").RegisterAlias("Conflict1")
}
- // ISSUE Message2
+ // ISSUE Block2
{
- testFramework.CreateMessage("Message2", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()), WithInputs("G2"), WithOutput("B", 500))
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message2").RegisterAlias("Branch2")
+ testFramework.CreateBlock("Block2", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()), WithInputs("G2"), WithOutput("B", 500))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block2").RegisterAlias("Conflict2")
}
- // ISSUE Message3
+ // ISSUE Block3
{
- testFramework.CreateMessage("Message3", WithStrongParents("Message2"), WithIssuer(nodes["A"].PublicKey()), WithInputs("B"), WithOutput("C", 500))
- testFramework.IssueMessages("Message3").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message3").RegisterAlias("Branch3")
+ testFramework.CreateBlock("Block3", WithStrongParents("Block2"), WithIssuer(nodes["A"].PublicKey()), WithInputs("B"), WithOutput("C", 500))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block3").RegisterAlias("Conflict3")
}
- // ISSUE Message4
+ // ISSUE Block4
{
- testFramework.CreateMessage("Message4", WithStrongParents("Message2"), WithIssuer(nodes["A"].PublicKey()), WithInputs("B"), WithOutput("D", 500))
- testFramework.IssueMessages("Message4").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message4").RegisterAlias("Branch4")
+ testFramework.CreateBlock("Block4", WithStrongParents("Block2"), WithIssuer(nodes["A"].PublicKey()), WithInputs("B"), WithOutput("D", 500))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block4").RegisterAlias("Conflict4")
}
- // ISSUE Message5
+ // ISSUE Block5
{
- testFramework.CreateMessage("Message5", WithStrongParents("Message4", "Message1"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A"), WithOutput("E", 500))
- testFramework.IssueMessages("Message5").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message5").RegisterAlias("Branch5")
+ testFramework.CreateBlock("Block5", WithStrongParents("Block4", "Block1"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A"), WithOutput("E", 500))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block5").RegisterAlias("Conflict5")
}
- // ISSUE Message6
+ // ISSUE Block6
{
- testFramework.CreateMessage("Message6", WithStrongParents("Message4", "Message1"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A"), WithOutput("F", 500))
- testFramework.IssueMessages("Message6").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message6").RegisterAlias("Branch6")
+ testFramework.CreateBlock("Block6", WithStrongParents("Block4", "Block1"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A"), WithOutput("F", 500))
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block6").RegisterAlias("Conflict6")
- _, err := tangle.Booker.MessageBranchIDs(testFramework.Message("Message6").ID())
+ _, err := tangle.Booker.BlockConflictIDs(testFramework.Block("Block6").ID())
require.NoError(t, err)
}
- // ISSUE Message7
+ // ISSUE Block7
{
- testFramework.CreateMessage("Message7", WithStrongParents("Message5"), WithIssuer(nodes["A"].PublicKey()), WithInputs("E"), WithOutput("H", 500))
- testFramework.IssueMessages("Message7").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message7").RegisterAlias("Branch7")
+ testFramework.CreateBlock("Block7", WithStrongParents("Block5"), WithIssuer(nodes["A"].PublicKey()), WithInputs("E"), WithOutput("H", 500))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block7").RegisterAlias("Conflict7")
}
- // ISSUE Message8
+ // ISSUE Block8
{
- testFramework.CreateMessage("Message8", WithStrongParents("Message5"), WithIssuer(nodes["A"].PublicKey()), WithInputs("E"), WithOutput("I", 500))
- testFramework.IssueMessages("Message8").WaitUntilAllTasksProcessed()
- testFramework.TransactionID("Message8").RegisterAlias("Branch8")
- _, err := tangle.Booker.MessageBranchIDs(testFramework.Message("Message8").ID())
+ testFramework.CreateBlock("Block8", WithStrongParents("Block5"), WithIssuer(nodes["A"].PublicKey()), WithInputs("E"), WithOutput("I", 500))
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+ testFramework.TransactionID("Block8").RegisterAlias("Conflict8")
+ _, err := tangle.Booker.BlockConflictIDs(testFramework.Block("Block8").ID())
require.NoError(t, err)
}
}
@@ -511,70 +511,70 @@ func TestOutOfOrderStatements(t *testing.T) {
tangle.Setup()
testEventMock := NewEventMock(t, tangle.ApprovalWeightManager)
- testFramework := NewMessageTestFramework(tangle, WithGenesisOutput("A", 500), WithGenesisOutput("B", 500))
+ testFramework := NewBlockTestFramework(tangle, WithGenesisOutput("A", 500), WithGenesisOutput("B", 500))
- // ISSUE Message1
+ // ISSUE Block1
{
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.3)
- IssueAndValidateMessageApproval(t, "Message1", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block1", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
})
}
- // ISSUE Message2
+ // ISSUE Block2
{
- testFramework.CreateMessage("Message2", WithStrongParents("Message1"), WithIssuer(nodes["B"].PublicKey()))
+ testFramework.CreateBlock("Block2", WithStrongParents("Block1"), WithIssuer(nodes["B"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.45)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.15)
- IssueAndValidateMessageApproval(t, "Message2", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block2", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.45,
markers.NewMarker(0, 2): 0.15,
})
}
- // ISSUE Message3
+ // ISSUE Block3
{
- testFramework.CreateMessage("Message3", WithStrongParents("Message2"), WithIssuer(nodes["C"].PublicKey()), WithInputs("A"), WithOutput("A3", 500))
+ testFramework.CreateBlock("Block3", WithStrongParents("Block2"), WithIssuer(nodes["C"].PublicKey()), WithInputs("A"), WithOutput("A3", 500))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.70)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.40)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.25)
- IssueAndValidateMessageApproval(t, "Message3", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block3", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.70,
markers.NewMarker(0, 2): 0.40,
markers.NewMarker(0, 3): 0.25,
})
}
- // ISSUE Message4
+ // ISSUE Block4
{
- testFramework.CreateMessage("Message4", WithStrongParents("Message3"), WithIssuer(nodes["D"].PublicKey()))
+ testFramework.CreateBlock("Block4", WithStrongParents("Block3"), WithIssuer(nodes["D"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.90)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.60)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.45)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.20)
- IssueAndValidateMessageApproval(t, "Message4", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block4", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.90,
markers.NewMarker(0, 2): 0.60,
markers.NewMarker(0, 3): 0.45,
markers.NewMarker(0, 4): 0.20,
})
}
- // ISSUE Message5
+ // ISSUE Block5
{
- testFramework.CreateMessage("Message5", WithStrongParents("Message4"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A3"), WithOutput("A5", 500))
- testFramework.RegisterBranchID("A", "Message5")
+ testFramework.CreateBlock("Block5", WithStrongParents("Block4"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A3"), WithOutput("A5", 500))
+ testFramework.RegisterConflictID("A", "Block5")
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.90)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.75)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.50)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.30)
- IssueAndValidateMessageApproval(t, "Message5", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block5", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.90,
markers.NewMarker(0, 2): 0.90,
markers.NewMarker(0, 3): 0.75,
@@ -583,20 +583,20 @@ func TestOutOfOrderStatements(t *testing.T) {
})
}
- // ISSUE Message6
+ // ISSUE Block6
{
- testFramework.CreateMessage("Message6", WithStrongParents("Message4"), WithIssuer(nodes["E"].PublicKey()), WithInputs("A3"), WithOutput("B6", 500))
- testFramework.RegisterBranchID("B", "Message6")
+ testFramework.CreateBlock("Block6", WithStrongParents("Block4"), WithIssuer(nodes["E"].PublicKey()), WithInputs("A3"), WithOutput("B6", 500))
+ testFramework.RegisterConflictID("B", "Block6")
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 1.0)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 1.0)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.85)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.60)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("A"), 0.30)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("B"), 0.10)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("A"), 0.30)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("B"), 0.10)
- IssueAndValidateMessageApproval(t, "Message6", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block6", testEventMock, testFramework, map[string]float64{
"A": 0.3,
"B": 0.1,
}, map[markers.Marker]float64{
@@ -608,13 +608,13 @@ func TestOutOfOrderStatements(t *testing.T) {
})
}
- // ISSUE Message7
+ // ISSUE Block7
{
- testFramework.CreateMessage("Message7", WithStrongParents("Message3"), WithIssuer(nodes["B"].PublicKey()), WithInputs("B"), WithOutput("B7", 500))
+ testFramework.CreateBlock("Block7", WithStrongParents("Block3"), WithIssuer(nodes["B"].PublicKey()), WithInputs("B"), WithOutput("B7", 500))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 1.0)
- IssueAndValidateMessageApproval(t, "Message7", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block7", testEventMock, testFramework, map[string]float64{
"A": 0.30,
"B": 0.1,
}, map[markers.Marker]float64{
@@ -625,16 +625,16 @@ func TestOutOfOrderStatements(t *testing.T) {
markers.NewMarker(0, 5): 0.30,
})
}
- // ISSUE Message8
+ // ISSUE Block8
{
- testFramework.CreateMessage("Message8", WithStrongParents("Message3"), WithIssuer(nodes["D"].PublicKey()), WithInputs("B"), WithOutput("B8", 500))
- testFramework.RegisterBranchID("C", "Message7")
- testFramework.RegisterBranchID("D", "Message8")
+ testFramework.CreateBlock("Block8", WithStrongParents("Block3"), WithIssuer(nodes["D"].PublicKey()), WithInputs("B"), WithOutput("B8", 500))
+ testFramework.RegisterConflictID("C", "Block7")
+ testFramework.RegisterConflictID("D", "Block8")
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("C"), 0.15)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("D"), 0.20)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("C"), 0.15)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("D"), 0.20)
- IssueAndValidateMessageApproval(t, "Message8", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block8", testEventMock, testFramework, map[string]float64{
"A": 0.30,
"B": 0.10,
"C": 0.15,
@@ -648,15 +648,15 @@ func TestOutOfOrderStatements(t *testing.T) {
})
}
- // ISSUE Message9
+ // ISSUE Block9
{
- testFramework.CreateMessage("Message9", WithStrongParents("Message6", "Message7"), WithIssuer(nodes["A"].PublicKey()))
+ testFramework.CreateBlock("Block9", WithStrongParents("Block6", "Block7"), WithIssuer(nodes["A"].PublicKey()))
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("A"), 0.0)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("B"), 0.40)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("C"), 0.45)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("A"), 0.0)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("B"), 0.40)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("C"), 0.45)
- IssueAndValidateMessageApproval(t, "Message9", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block9", testEventMock, testFramework, map[string]float64{
"A": 0,
"B": 0.40,
"C": 0.45,
@@ -669,16 +669,16 @@ func TestOutOfOrderStatements(t *testing.T) {
markers.NewMarker(0, 5): 0.30,
})
}
- // ISSUE Message10
+ // ISSUE Block10
{
- testFramework.CreateMessage("Message10", WithStrongParents("Message9"), WithIssuer(nodes["B"].PublicKey()))
+ testFramework.CreateBlock("Block10", WithStrongParents("Block9"), WithIssuer(nodes["B"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.75)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 5), 0.15)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("B"), 0.55)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("B"), 0.55)
- IssueAndValidateMessageApproval(t, "Message10", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block10", testEventMock, testFramework, map[string]float64{
"A": 0,
"B": 0.55,
"C": 0.45,
@@ -693,18 +693,18 @@ func TestOutOfOrderStatements(t *testing.T) {
})
}
- // ISSUE Message11
+ // ISSUE Block11
{
// We skip ahead with the Sequence Number
- testFramework.CreateMessage("Message11", WithStrongParents("Message5"), WithIssuer(nodes["E"].PublicKey()), WithSequenceNumber(10000000000))
+ testFramework.CreateBlock("Block11", WithStrongParents("Block5"), WithIssuer(nodes["E"].PublicKey()), WithSequenceNumber(10000000000))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.40)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 6), 0.10)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("A"), 0.10)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("B"), 0.45)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("A"), 0.10)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("B"), 0.45)
- IssueAndValidateMessageApproval(t, "Message11", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block11", testEventMock, testFramework, map[string]float64{
"A": 0.10,
"B": 0.45,
"C": 0.45,
@@ -720,17 +720,17 @@ func TestOutOfOrderStatements(t *testing.T) {
})
}
- // ISSUE Message12
+ // ISSUE Block12
{
// We simulate an "old" vote
- testFramework.CreateMessage("Message12", WithStrongParents("Message10"), WithIssuer(nodes["E"].PublicKey()))
+ testFramework.CreateBlock("Block12", WithStrongParents("Block10"), WithIssuer(nodes["E"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 5), 0.25)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 6), 0.10)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("C"), 0.55)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("C"), 0.55)
- IssueAndValidateMessageApproval(t, "Message12", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block12", testEventMock, testFramework, map[string]float64{
"A": 0.10,
"B": 0.45,
"C": 0.55,
@@ -749,16 +749,16 @@ func TestOutOfOrderStatements(t *testing.T) {
testEventMock.AssertExpectations(t)
- // ISSUE Message13
+ // ISSUE Block13
{
// We simulate an "old" vote
- testFramework.CreateMessage("Message13", WithStrongParents("Message2"), WithIssuer(nodes["E"].PublicKey()), WithInputs("A"), WithOutput("A13", 500))
- testFramework.RegisterBranchID("X", "Message3")
- testFramework.RegisterBranchID("Y", "Message13")
+ testFramework.CreateBlock("Block13", WithStrongParents("Block2"), WithIssuer(nodes["E"].PublicKey()), WithInputs("A"), WithOutput("A13", 500))
+ testFramework.RegisterConflictID("X", "Block3")
+ testFramework.RegisterConflictID("Y", "Block13")
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("X"), 1.0)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("X"), 1.0)
- IssueAndValidateMessageApproval(t, "Message13", testEventMock, testFramework, map[string]float64{
+ IssueAndValidateBlockApproval(t, "Block13", testEventMock, testFramework, map[string]float64{
"A": 0.10,
"B": 0.45,
"C": 0.55,
@@ -854,15 +854,15 @@ func validateMarkerVoters(t *testing.T, approvalWeightManager *ApprovalWeightMan
}
}
-func approveMarkers(approvalWeightManager *ApprovalWeightManager, voter *identity.Identity, markersToApprove ...markers.Marker) (message *Message) {
- message = newTestDataMessagePublicKey("test", voter.PublicKey())
- approvalWeightManager.tangle.Storage.StoreMessage(message)
- approvalWeightManager.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
+func approveMarkers(approvalWeightManager *ApprovalWeightManager, voter *identity.Identity, markersToApprove ...markers.Marker) (block *Block) {
+ block = newTestDataBlockPublicKey("test", voter.PublicKey())
+ approvalWeightManager.tangle.Storage.StoreBlock(block)
+ approvalWeightManager.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
newStructureDetails := markers.NewStructureDetails()
newStructureDetails.SetIsPastMarker(true)
newStructureDetails.SetPastMarkers(markers.NewMarkers(markersToApprove...))
- messageMetadata.SetStructureDetails(newStructureDetails)
+ blockMetadata.SetStructureDetails(newStructureDetails)
})
return
@@ -872,29 +872,29 @@ func increaseIndexCallback(markers.SequenceID, markers.Index) bool {
return true
}
-func getSingleBranch(branches map[string]*set.AdvancedSet[utxo.TransactionID], alias string) utxo.TransactionID {
- if branches[alias].Size() != 1 {
- panic(fmt.Sprintf("Branches with alias %s are multiple branches, not a single one: %+v", alias, branches[alias]))
+func getSingleConflict(conflictes map[string]*set.AdvancedSet[utxo.TransactionID], alias string) utxo.TransactionID {
+ if conflictes[alias].Size() != 1 {
+ panic(fmt.Sprintf("Conflictes with alias %s are multiple conflictes, not a single one: %+v", alias, conflictes[alias]))
}
- for it := branches[alias].Iterator(); it.HasNext(); {
+ for it := conflictes[alias].Iterator(); it.HasNext(); {
return it.Next()
}
return utxo.EmptyTransactionID
}
-func createBranch(t *testing.T, tangle *Tangle, branchAlias string, branchIDs map[string]*set.AdvancedSet[utxo.TransactionID], parentBranchIDs *set.AdvancedSet[utxo.TransactionID], conflictID utxo.OutputID) {
- branchID := getSingleBranch(branchIDs, branchAlias)
- tangle.Ledger.ConflictDAG.CreateConflict(branchID, parentBranchIDs, set.NewAdvancedSet(conflictID))
- branchID.RegisterAlias(branchAlias)
+func createConflict(t *testing.T, tangle *Tangle, conflictAlias string, conflictIDs map[string]*set.AdvancedSet[utxo.TransactionID], parentConflictIDs *set.AdvancedSet[utxo.TransactionID], conflictID utxo.OutputID) {
+ conflict := getSingleConflict(conflictIDs, conflictAlias)
+ tangle.Ledger.ConflictDAG.CreateConflict(conflict, parentConflictIDs, set.NewAdvancedSet(conflictID))
+ conflict.RegisterAlias(conflictAlias)
}
-func validateStatementResults(t *testing.T, approvalWeightManager *ApprovalWeightManager, branchIDs map[string]utxo.TransactionIDs, voter Voter, expectedResults map[string]bool) {
- for branchIDString, expectedResult := range expectedResults {
+func validateStatementResults(t *testing.T, approvalWeightManager *ApprovalWeightManager, conflictIDs map[string]utxo.TransactionIDs, voter Voter, expectedResults map[string]bool) {
+ for conflictIDString, expectedResult := range expectedResults {
var actualResult bool
- for it := branchIDs[branchIDString].Iterator(); it.HasNext(); {
- voters := approvalWeightManager.VotersOfBranch(it.Next())
+ for it := conflictIDs[conflictIDString].Iterator(); it.HasNext(); {
+ voters := approvalWeightManager.VotersOfConflict(it.Next())
if voters != nil {
actualResult = voters.Set.Has(voter)
}
@@ -903,6 +903,6 @@ func validateStatementResults(t *testing.T, approvalWeightManager *ApprovalWeigh
}
}
- assert.Equalf(t, expectedResult, actualResult, "%s(%s) does not match", branchIDString, branchIDs[branchIDString])
+ assert.Equalf(t, expectedResult, actualResult, "%s(%s) does not match", conflictIDString, conflictIDs[conflictIDString])
}
}
diff --git a/packages/tangle/block.go b/packages/tangle/block.go
new file mode 100644
index 0000000000..ad360e4e1e
--- /dev/null
+++ b/packages/tangle/block.go
@@ -0,0 +1,963 @@
+package tangle
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "sort"
+ "strings"
+ "time"
+
+ "github.com/cockroachdb/errors"
+ "github.com/iotaledger/hive.go/crypto/ed25519"
+ "github.com/iotaledger/hive.go/generics/lo"
+ "github.com/iotaledger/hive.go/generics/model"
+ "github.com/iotaledger/hive.go/serializer"
+ "github.com/iotaledger/hive.go/serix"
+ "github.com/iotaledger/hive.go/stringify"
+ "github.com/iotaledger/hive.go/types"
+ "github.com/iotaledger/hive.go/types/confirmation"
+ "golang.org/x/crypto/blake2b"
+
+ "github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/goshimmer/packages/epoch"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
+ "github.com/iotaledger/goshimmer/packages/markers"
+ "github.com/iotaledger/goshimmer/packages/tangle/payload"
+)
+
+func init() {
+ blockIDsArrayRules := &serix.ArrayRules{
+ Min: MinParentsCount,
+ Max: MaxParentsCount,
+ ValidationMode: serializer.ArrayValidationModeNoDuplicates,
+ }
+ err := serix.DefaultAPI.RegisterTypeSettings(BlockIDs{}, serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithArrayRules(blockIDsArrayRules))
+ if err != nil {
+ panic(fmt.Errorf("error registering BlockIDs type settings: %w", err))
+ }
+ parentsBlockIDsArrayRules := &serix.ArrayRules{
+ Min: MinParentsBlocksCount,
+ Max: MaxParentsBlocksCount,
+ ValidationMode: serializer.ArrayValidationModeNoDuplicates,
+ UniquenessSliceFunc: func(next []byte) []byte {
+ // return first byte which indicates the parent type
+ return next[:1]
+ },
+ }
+ err = serix.DefaultAPI.RegisterTypeSettings(ParentBlockIDs{}, serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithArrayRules(parentsBlockIDsArrayRules))
+ if err != nil {
+ panic(fmt.Errorf("error registering ParentBlockIDs type settings: %w", err))
+ }
+ err = serix.DefaultAPI.RegisterValidators(ParentBlockIDs{}, validateParentBlockIDsBytes, validateParentBlockIDs)
+
+ if err != nil {
+ panic(fmt.Errorf("error registering ParentBlockIDs validators: %w", err))
+ }
+}
+
+func validateParentBlockIDs(_ context.Context, parents ParentBlockIDs) (err error) {
+ // Validate strong parent block
+ if strongParents, strongParentsExist := parents[StrongParentType]; len(parents) == 0 || !strongParentsExist ||
+ len(strongParents) < MinStrongParentsCount {
+ return ErrNoStrongParents
+ }
+ for parentsType := range parents {
+ if parentsType > LastValidBlockType {
+ return ErrBlockTypeIsUnknown
+ }
+ }
+ if areReferencesConflictingAcrossBlocks(parents) {
+ return ErrConflictingReferenceAcrossBlocks
+ }
+ return nil
+}
+
+// validate blocksIDs are unique across blocks
+// there may be repetition across strong and like parents.
+func areReferencesConflictingAcrossBlocks(parentsBlocks ParentBlockIDs) bool {
+ for blockID := range parentsBlocks[WeakParentType] {
+ if _, exists := parentsBlocks[StrongParentType][blockID]; exists {
+ return true
+ }
+
+ if _, exists := parentsBlocks[ShallowLikeParentType][blockID]; exists {
+ return true
+ }
+ }
+
+ return false
+}
+
+func validateParentBlockIDsBytes(_ context.Context, _ []byte) (err error) {
+ return
+}
+
+const (
+ // BlockVersion defines the Version of the block structure.
+ BlockVersion uint8 = 1
+
+ // MaxBlockSize defines the maximum size of a block.
+ MaxBlockSize = 64*1024 + 80
+
+ // BlockIDLength defines the length of an BlockID.
+ BlockIDLength = types.IdentifierLength
+
+ // MinParentsCount defines the minimum number of parents each parents block must have.
+ MinParentsCount = 1
+
+ // MaxParentsCount defines the maximum number of parents each parents block must have.
+ MaxParentsCount = 8
+
+ // MinParentsBlocksCount defines the minimum number of parents each parents block must have.
+ MinParentsBlocksCount = 1
+
+ // MaxParentsBlocksCount defines the maximum number of parents each parents block must have.
+ MaxParentsBlocksCount = 4
+
+ // MinStrongParentsCount defines the minimum number of strong parents a block must have.
+ MinStrongParentsCount = 1
+)
+
+// region BlockID ////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// BlockID identifies a block via its BLAKE2b-256 hash of its bytes.
+type BlockID struct {
+ types.Identifier `serix:"0"`
+}
+
+// EmptyBlockID is an empty id.
+var EmptyBlockID BlockID
+
+// NewBlockID returns a new BlockID for the given data.
+func NewBlockID(bytes [32]byte) (new BlockID) {
+ return BlockID{Identifier: bytes}
+}
+
+// Length returns the byte length of a serialized TransactionID.
+func (m BlockID) Length() int {
+ return types.IdentifierLength
+}
+
+// String returns a human-readable version of the BlockID.
+func (m BlockID) String() (humanReadable string) {
+ return "BlockID(" + m.Alias() + ")"
+}
+
+// CompareTo does a lexicographical comparison to another blockID.
+// Returns 0 if equal, -1 if smaller, or 1 if larger than other.
+// Passing nil as other will result in a panic.
+func (m BlockID) CompareTo(other BlockID) int {
+ return bytes.Compare(m.Bytes(), other.Bytes())
+}
+
+func BlockIDFromContext(ctx context.Context) BlockID {
+ blockID, ok := ctx.Value("blockID").(BlockID)
+ if !ok {
+ return EmptyBlockID
+ }
+ return blockID
+}
+
+func BlockIDToContext(ctx context.Context, blockID BlockID) context.Context {
+ return context.WithValue(ctx, "blockID", blockID)
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region BlockIDs ///////////////////////////////////////////////////////////////////////////////////////////////////
+
+// BlockIDs is a set of BlockIDs where every BlockID is stored only once.
+type BlockIDs map[BlockID]types.Empty
+
+// NewBlockIDs construct a new BlockID collection from the optional BlockIDs.
+func NewBlockIDs(blkIDs ...BlockID) BlockIDs {
+ m := make(BlockIDs)
+ for _, blkID := range blkIDs {
+ m[blkID] = types.Void
+ }
+
+ return m
+}
+
+// Slice converts the set of BlockIDs into a slice of BlockIDs.
+func (m BlockIDs) Slice() []BlockID {
+ ids := make([]BlockID, 0)
+ for key := range m {
+ ids = append(ids, key)
+ }
+ return ids
+}
+
+// Clone creates a copy of the BlockIDs.
+func (m BlockIDs) Clone() (clonedBlockIDs BlockIDs) {
+ clonedBlockIDs = make(BlockIDs)
+ for key, value := range m {
+ clonedBlockIDs[key] = value
+ }
+ return
+}
+
+// Add adds a BlockID to the collection and returns the collection to enable chaining.
+func (m BlockIDs) Add(blockID BlockID) BlockIDs {
+ m[blockID] = types.Void
+
+ return m
+}
+
+// AddAll adds all BlockIDs to the collection and returns the collection to enable chaining.
+func (m BlockIDs) AddAll(blockIDs BlockIDs) BlockIDs {
+ for blockID := range blockIDs {
+ m.Add(blockID)
+ }
+
+ return m
+}
+
+// Empty checks if BlockIDs is empty.
+func (m BlockIDs) Empty() (empty bool) {
+ return len(m) == 0
+}
+
+// Contains checks if the given target BlockID is part of the BlockIDs.
+func (m BlockIDs) Contains(target BlockID) (contains bool) {
+ _, contains = m[target]
+ return
+}
+
+// Subtract removes all other from the collection and returns the collection to enable chaining.
+func (m BlockIDs) Subtract(other BlockIDs) BlockIDs {
+ for blockID := range other {
+ delete(m, blockID)
+ }
+
+ return m
+}
+
+// First returns the first element in BlockIDs (not ordered). This method only makes sense if there is exactly one
+// element in the collection.
+func (m BlockIDs) First() BlockID {
+ for blockID := range m {
+ return blockID
+ }
+ return EmptyBlockID
+}
+
+// Base58 returns a string slice of base58 BlockID.
+func (m BlockIDs) Base58() (result []string) {
+ result = make([]string, 0, len(m))
+ for id := range m {
+ result = append(result, id.Base58())
+ }
+
+ return
+}
+
+// String returns a human-readable Version of the BlockIDs.
+func (m BlockIDs) String() string {
+ if len(m) == 0 {
+ return "BlockIDs{}"
+ }
+
+ result := "BlockIDs{\n"
+ for blockID := range m {
+ result += strings.Repeat(" ", stringify.INDENTATION_SIZE) + blockID.String() + ",\n"
+ }
+ result += "}"
+
+ return result
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region Block //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+const (
+ // LastValidBlockType counts StrongParents, WeakParents, ShallowLikeParents.
+ LastValidBlockType = ShallowLikeParentType
+)
+
+// Block represents the core block for the base layer Tangle.
+type Block struct {
+ model.Storable[BlockID, Block, *Block, BlockModel] `serix:"0"`
+ payload payload.Payload
+}
+type BlockModel struct {
+ // core properties (get sent over the wire)
+ Version uint8 `serix:"0"`
+ Parents ParentBlockIDs `serix:"1"`
+ IssuerPublicKey ed25519.PublicKey `serix:"2"`
+ IssuingTime time.Time `serix:"3"`
+ SequenceNumber uint64 `serix:"4"`
+ PayloadBytes []byte `serix:"5,lengthPrefixType=uint32"`
+ EI epoch.Index `serix:"6"`
+ ECR epoch.ECR `serix:"7"`
+ PrevEC epoch.EC `serix:"8"`
+ LatestConfirmedEpoch epoch.Index `serix:"9"`
+ Nonce uint64 `serix:"10"`
+ Signature ed25519.Signature `serix:"11"`
+}
+
+// NewBlock creates a new block with the details provided by the issuer.
+func NewBlock(references ParentBlockIDs, issuingTime time.Time, issuerPublicKey ed25519.PublicKey,
+ sequenceNumber uint64, blkPayload payload.Payload, nonce uint64, signature ed25519.Signature,
+ latestConfirmedEpoch epoch.Index, ecRecord *epoch.ECRecord, versionOpt ...uint8,
+) *Block {
+ version := BlockVersion
+ if len(versionOpt) == 1 {
+ version = versionOpt[0]
+ }
+ blk := model.NewStorable[BlockID, Block](&BlockModel{
+ Version: version,
+ Parents: references,
+ IssuerPublicKey: issuerPublicKey,
+ IssuingTime: issuingTime,
+ SequenceNumber: sequenceNumber,
+ PayloadBytes: lo.PanicOnErr(blkPayload.Bytes()),
+ EI: ecRecord.EI(),
+ ECR: ecRecord.ECR(),
+ PrevEC: ecRecord.PrevEC(),
+ LatestConfirmedEpoch: latestConfirmedEpoch,
+ Nonce: nonce,
+ Signature: signature,
+ })
+ blk.payload = blkPayload
+
+ return blk
+}
+
+// NewBlockWithValidation creates a new block while performing ths following syntactical checks:
+// 1. A Strong Parents Block must exist.
+// 2. Parents Block types cannot repeat.
+// 3. Parent count per block 1 <= x <= 8.
+// 4. Parents unique within block.
+// 5. Parents lexicographically sorted within block.
+// 7. Blocks should be ordered by type in ascending order.
+// 6. A Parent(s) repetition is only allowed when it occurs across Strong and Like parents.
+func NewBlockWithValidation(references ParentBlockIDs, issuingTime time.Time, issuerPublicKey ed25519.PublicKey,
+ sequenceNumber uint64, blkPayload payload.Payload, nonce uint64, signature ed25519.Signature, latestConfirmedEpoch epoch.Index, epochCommitment *epoch.ECRecord, version ...uint8,
+) (result *Block, err error) {
+ blk := NewBlock(references, issuingTime, issuerPublicKey, sequenceNumber, blkPayload, nonce, signature, latestConfirmedEpoch, epochCommitment, version...)
+
+ if _, err = blk.Bytes(); err != nil {
+ return nil, errors.Errorf("failed to create block: %w", err)
+ }
+ return blk, nil
+}
+
+// VerifySignature verifies the Signature of the block.
+func (m *Block) VerifySignature() (valid bool, err error) {
+ blkBytes, err := m.Bytes()
+ if err != nil {
+ return false, errors.Errorf("failed to create block bytes: %w", err)
+ }
+ signature := m.Signature()
+
+ contentLength := len(blkBytes) - len(signature)
+ content := blkBytes[:contentLength]
+
+ return m.M.IssuerPublicKey.VerifySignature(content, signature), nil
+}
+
+// IDBytes implements Element interface in scheduler NodeQueue that returns the BlockID of the block in bytes.
+func (m *Block) IDBytes() []byte {
+ return m.ID().Bytes()
+}
+
+// Version returns the block Version.
+func (m *Block) Version() uint8 {
+ return m.M.Version
+}
+
+// ParentsByType returns a slice of all parents of the desired type.
+func (m *Block) ParentsByType(parentType ParentsType) BlockIDs {
+ if parents, ok := m.M.Parents[parentType]; ok {
+ return parents.Clone()
+ }
+ return NewBlockIDs()
+}
+
+// ForEachParent executes a consumer func for each parent.
+func (m *Block) ForEachParent(consumer func(parent Parent)) {
+ for parentType, parents := range m.M.Parents {
+ for parentID := range parents {
+ consumer(Parent{
+ Type: parentType,
+ ID: parentID,
+ })
+ }
+ }
+}
+
+func (m *Block) Parents() (parents []BlockID) {
+ m.ForEachParent(func(parent Parent) {
+ parents = append(parents, parent.ID)
+ })
+ return
+}
+
+// ForEachParentByType executes a consumer func for each strong parent.
+func (m *Block) ForEachParentByType(parentType ParentsType, consumer func(parentBlockID BlockID) bool) {
+ for parentID := range m.ParentsByType(parentType) {
+ if !consumer(parentID) {
+ return
+ }
+ }
+}
+
+// ParentsCountByType returns the total parents count of this block.
+func (m *Block) ParentsCountByType(parentType ParentsType) uint8 {
+ return uint8(len(m.ParentsByType(parentType)))
+}
+
+// IssuerPublicKey returns the public key of the block issuer.
+func (m *Block) IssuerPublicKey() ed25519.PublicKey {
+ return m.M.IssuerPublicKey
+}
+
+// IssuingTime returns the time when this block was created.
+func (m *Block) IssuingTime() time.Time {
+ return m.M.IssuingTime
+}
+
+// SequenceNumber returns the sequence number of this block.
+func (m *Block) SequenceNumber() uint64 {
+ return m.M.SequenceNumber
+}
+
+// Payload returns the Payload of the block.
+func (m *Block) Payload() payload.Payload {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.payload == nil {
+ _, err := serix.DefaultAPI.Decode(context.Background(), m.M.PayloadBytes, &m.payload, serix.WithValidation())
+ if err != nil {
+ panic(err)
+ }
+
+ if m.payload.Type() == devnetvm.TransactionType {
+ tx := m.payload.(*devnetvm.Transaction)
+ tx.SetID(utxo.NewTransactionID(m.M.PayloadBytes))
+
+ devnetvm.SetOutputID(tx.Essence(), tx.ID())
+ }
+ }
+
+ return m.payload
+}
+
+// Nonce returns the Nonce of the block.
+func (m *Block) Nonce() uint64 {
+ return m.M.Nonce
+}
+
+// EI returns the EI of the block.
+func (m *Block) EI() epoch.Index {
+ return m.M.EI
+}
+
+// ECR returns the ECR of the block.
+func (m *Block) ECR() epoch.ECR {
+ return m.M.ECR
+}
+
+// PrevEC returns the PrevEC of the block.
+func (m *Block) PrevEC() epoch.EC {
+ return m.M.PrevEC
+}
+
+// LatestConfirmedEpoch returns the LatestConfirmedEpoch of the block.
+func (m *Block) LatestConfirmedEpoch() epoch.Index {
+ return m.M.LatestConfirmedEpoch
+}
+
+// Signature returns the Signature of the block.
+func (m *Block) Signature() ed25519.Signature {
+ return m.M.Signature
+}
+
+// DetermineID calculates and sets the block's BlockID.
+func (m *Block) DetermineID() (err error) {
+ b, err := m.Bytes()
+ if err != nil {
+ return errors.Errorf("failed to determine block ID: %w", err)
+ }
+
+ m.SetID(BlockID{Identifier: blake2b.Sum256(b)})
+ return nil
+}
+
+// Size returns the block size in bytes.
+func (m *Block) Size() int {
+ return len(lo.PanicOnErr(m.Bytes()))
+}
+
+func (m *Block) String() string {
+ builder := stringify.StructBuilder("Block", stringify.StructField("id", m.ID()))
+
+ for index, parent := range sortParents(m.ParentsByType(StrongParentType)) {
+ builder.AddField(stringify.StructField(fmt.Sprintf("strongParent%d", index), parent.String()))
+ }
+ for index, parent := range sortParents(m.ParentsByType(WeakParentType)) {
+ builder.AddField(stringify.StructField(fmt.Sprintf("weakParent%d", index), parent.String()))
+ }
+ for index, parent := range sortParents(m.ParentsByType(ShallowLikeParentType)) {
+ builder.AddField(stringify.StructField(fmt.Sprintf("shallowlikeParent%d", index), parent.String()))
+ }
+
+ builder.AddField(stringify.StructField("Issuer", m.IssuerPublicKey()))
+ builder.AddField(stringify.StructField("IssuingTime", m.IssuingTime()))
+ builder.AddField(stringify.StructField("SequenceNumber", m.SequenceNumber()))
+ builder.AddField(stringify.StructField("Payload", m.Payload()))
+ builder.AddField(stringify.StructField("Nonce", m.Nonce()))
+ builder.AddField(stringify.StructField("Signature", m.Signature()))
+ return builder.String()
+}
+
+// sorts given parents and returns a new slice with sorted parents
+func sortParents(parents BlockIDs) (sorted []BlockID) {
+ sorted = parents.Slice()
+
+ // sort parents
+ sort.Slice(sorted, func(i, j int) bool {
+ return bytes.Compare(sorted[i].Bytes(), sorted[j].Bytes()) < 0
+ })
+
+ return
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region Parent ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// ParentsType is a type that defines the type of the parent.
+type ParentsType uint8
+
+const (
+ // UndefinedParentType is the undefined parent.
+ UndefinedParentType ParentsType = iota
+ // StrongParentType is the ParentsType for a strong parent.
+ StrongParentType
+ // WeakParentType is the ParentsType for a weak parent.
+ WeakParentType
+ // ShallowLikeParentType is the ParentsType for the shallow like parent.
+ ShallowLikeParentType
+)
+
+// String returns string representation of ParentsType.
+func (bp ParentsType) String() string {
+ return fmt.Sprintf("ParentType(%s)", []string{"Undefined", "Strong", "Weak", "Shallow Like"}[bp])
+}
+
+// Parent is a parent that can be either strong or weak.
+type Parent struct {
+ ID BlockID
+ Type ParentsType
+}
+
+// ParentBlockIDs is a map of ParentType to BlockIDs.
+type ParentBlockIDs map[ParentsType]BlockIDs
+
+// NewParentBlockIDs constructs a new ParentBlockIDs.
+func NewParentBlockIDs() ParentBlockIDs {
+ p := make(ParentBlockIDs)
+ return p
+}
+
+// AddStrong adds a strong parent to the map.
+func (p ParentBlockIDs) AddStrong(blockID BlockID) ParentBlockIDs {
+ if _, exists := p[StrongParentType]; !exists {
+ p[StrongParentType] = NewBlockIDs()
+ }
+ return p.Add(StrongParentType, blockID)
+}
+
+// Add adds a parent to the map.
+func (p ParentBlockIDs) Add(parentType ParentsType, blockID BlockID) ParentBlockIDs {
+ if _, exists := p[parentType]; !exists {
+ p[parentType] = NewBlockIDs()
+ }
+ p[parentType].Add(blockID)
+ return p
+}
+
+// AddAll adds a collection of parents to the map.
+func (p ParentBlockIDs) AddAll(parentType ParentsType, blockIDs BlockIDs) ParentBlockIDs {
+ if _, exists := p[parentType]; !exists {
+ p[parentType] = NewBlockIDs()
+ }
+ p[parentType].AddAll(blockIDs)
+ return p
+}
+
+// IsEmpty returns true if the ParentBlockIDs are empty.
+func (p ParentBlockIDs) IsEmpty() bool {
+ return p == nil || len(p) == 0
+}
+
+// Clone returns a copy of map.
+func (p ParentBlockIDs) Clone() ParentBlockIDs {
+ pCloned := NewParentBlockIDs()
+ for parentType, blockIDs := range p {
+ if _, exists := p[parentType]; !exists {
+ p[parentType] = NewBlockIDs()
+ }
+ pCloned.AddAll(parentType, blockIDs)
+ }
+ return pCloned
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region BlockMetadata //////////////////////////////////////////////////////////////////////////////////////////////
+
+// BlockMetadata defines the metadata for a block.
+type BlockMetadata struct {
+ model.Storable[BlockID, BlockMetadata, *BlockMetadata, blockMetadataModel] `serix:"0"`
+}
+
+type blockMetadataModel struct {
+ ReceivedTime time.Time `serix:"1"`
+ SolidificationTime time.Time `serix:"2"`
+ Solid bool `serix:"3"`
+ StructureDetails *markers.StructureDetails `serix:"4,optional"`
+ AddedConflictIDs utxo.TransactionIDs `serix:"5"`
+ SubtractedConflictIDs utxo.TransactionIDs `serix:"6"`
+ Scheduled bool `serix:"7"`
+ ScheduledTime time.Time `serix:"8"`
+ Booked bool `serix:"9"`
+ BookedTime time.Time `serix:"10"`
+ ObjectivelyInvalid bool `serix:"11"`
+ ConfirmationState confirmation.State `serix:"12"`
+ ConfirmationStateTime time.Time `serix:"13"`
+ DiscardedTime time.Time `serix:"14"`
+ QueuedTime time.Time `serix:"15"`
+ SubjectivelyInvalid bool `serix:"16"`
+}
+
+// NewBlockMetadata creates a new BlockMetadata from the specified blockID.
+func NewBlockMetadata(blockID BlockID) *BlockMetadata {
+ metadata := model.NewStorable[BlockID, BlockMetadata](&blockMetadataModel{
+ ReceivedTime: clock.SyncedTime(),
+ AddedConflictIDs: utxo.NewTransactionIDs(),
+ SubtractedConflictIDs: utxo.NewTransactionIDs(),
+ ConfirmationState: confirmation.Pending,
+ })
+ metadata.SetID(blockID)
+
+ return metadata
+}
+
+// ReceivedTime returns the time when the block was received.
+func (m *BlockMetadata) ReceivedTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.ReceivedTime
+}
+
+// IsSolid returns true if the block represented by this metadata is solid. False otherwise.
+func (m *BlockMetadata) IsSolid() (result bool) {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.Solid
+}
+
+// SetSolid sets the block associated with this metadata as solid.
+// It returns true if the solid status is modified. False otherwise.
+func (m *BlockMetadata) SetSolid(solid bool) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.Solid == solid {
+ return false
+ }
+
+ m.M.SolidificationTime = clock.SyncedTime()
+ m.M.Solid = solid
+ m.SetModified()
+ return true
+}
+
+// SolidificationTime returns the time when the block was marked to be solid.
+func (m *BlockMetadata) SolidificationTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.SolidificationTime
+}
+
+// SetStructureDetails sets the structureDetails of the block.
+func (m *BlockMetadata) SetStructureDetails(structureDetails *markers.StructureDetails) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.StructureDetails != nil {
+ return false
+ }
+
+ m.M.StructureDetails = structureDetails
+
+ m.SetModified()
+ return true
+}
+
+// StructureDetails returns the structureDetails of the block.
+func (m *BlockMetadata) StructureDetails() *markers.StructureDetails {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.StructureDetails
+}
+
+// SetAddedConflictIDs sets the ConflictIDs of the added Conflicts.
+func (m *BlockMetadata) SetAddedConflictIDs(addedConflictIDs utxo.TransactionIDs) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.AddedConflictIDs.Equal(addedConflictIDs) {
+ return false
+ }
+
+ m.M.AddedConflictIDs = addedConflictIDs.Clone()
+ m.SetModified()
+ return true
+}
+
+// AddConflictID sets the ConflictIDs of the added Conflicts.
+func (m *BlockMetadata) AddConflictID(conflictID utxo.TransactionID) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.AddedConflictIDs.Has(conflictID) {
+ return
+ }
+
+ m.M.AddedConflictIDs.Add(conflictID)
+ m.SetModified()
+ return true
+}
+
+// AddedConflictIDs returns the ConflictIDs of the added Conflicts of the Block.
+func (m *BlockMetadata) AddedConflictIDs() utxo.TransactionIDs {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.AddedConflictIDs.Clone()
+}
+
+// SetSubtractedConflictIDs sets the ConflictIDs of the subtracted Conflicts.
+func (m *BlockMetadata) SetSubtractedConflictIDs(subtractedConflictIDs utxo.TransactionIDs) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.SubtractedConflictIDs.Equal(subtractedConflictIDs) {
+ return false
+ }
+
+ m.M.SubtractedConflictIDs = subtractedConflictIDs.Clone()
+ m.SetModified()
+ return true
+}
+
+// SubtractedConflictIDs returns the ConflictIDs of the subtracted Conflicts of the Block.
+func (m *BlockMetadata) SubtractedConflictIDs() utxo.TransactionIDs {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.SubtractedConflictIDs.Clone()
+}
+
+// SetScheduled sets the block associated with this metadata as scheduled.
+// It returns true if the scheduled status is modified. False otherwise.
+func (m *BlockMetadata) SetScheduled(scheduled bool) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.Scheduled == scheduled {
+ return false
+ }
+
+ m.M.Scheduled = scheduled
+ m.M.ScheduledTime = clock.SyncedTime()
+ m.SetModified()
+ return true
+}
+
+// Scheduled returns true if the block represented by this metadata was scheduled. False otherwise.
+func (m *BlockMetadata) Scheduled() bool {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.Scheduled
+}
+
+// ScheduledTime returns the time when the block represented by this metadata was scheduled.
+func (m *BlockMetadata) ScheduledTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.ScheduledTime
+}
+
+// SetDiscardedTime add the discarded time of a block to the metadata.
+func (m *BlockMetadata) SetDiscardedTime(discardedTime time.Time) {
+ m.Lock()
+ defer m.Unlock()
+
+ m.M.DiscardedTime = discardedTime
+ m.SetModified()
+}
+
+// DiscardedTime returns when the block was discarded.
+func (m *BlockMetadata) DiscardedTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.DiscardedTime
+}
+
+// QueuedTime returns the time a block entered the scheduling queue.
+func (m *BlockMetadata) QueuedTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.QueuedTime
+}
+
+// SetQueuedTime records the time the block entered the scheduler queue.
+func (m *BlockMetadata) SetQueuedTime(queuedTime time.Time) {
+ m.Lock()
+ defer m.Unlock()
+
+ m.M.QueuedTime = queuedTime
+ m.SetModified()
+}
+
+// SetBooked sets the block associated with this metadata as booked.
+// It returns true if the booked status is modified. False otherwise.
+func (m *BlockMetadata) SetBooked(booked bool) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.Booked == booked {
+ return false
+ }
+
+ m.M.Booked = booked
+ m.M.BookedTime = clock.SyncedTime()
+ m.SetModified()
+ return true
+}
+
+// IsBooked returns true if the block represented by this metadata is booked. False otherwise.
+func (m *BlockMetadata) IsBooked() (result bool) {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.Booked
+}
+
+// BookedTime returns the time when the block represented by this metadata was booked.
+func (m *BlockMetadata) BookedTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.BookedTime
+}
+
+// IsObjectivelyInvalid returns true if the block represented by this metadata is objectively invalid.
+func (m *BlockMetadata) IsObjectivelyInvalid() (result bool) {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.ObjectivelyInvalid
+}
+
+// SetObjectivelyInvalid sets the block associated with this metadata as objectively invalid - it returns true if the
+// status was changed.
+func (m *BlockMetadata) SetObjectivelyInvalid(invalid bool) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.ObjectivelyInvalid == invalid {
+ return false
+ }
+
+ m.M.ObjectivelyInvalid = invalid
+ m.SetModified()
+ return true
+}
+
+// IsSubjectivelyInvalid returns true if the block represented by this metadata is subjectively invalid.
+func (m *BlockMetadata) IsSubjectivelyInvalid() (result bool) {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.SubjectivelyInvalid
+}
+
+// SetSubjectivelyInvalid sets the block associated with this metadata as subjectively invalid - it returns true if
+// the status was changed.
+func (m *BlockMetadata) SetSubjectivelyInvalid(invalid bool) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.SubjectivelyInvalid == invalid {
+ return false
+ }
+
+ m.M.SubjectivelyInvalid = invalid
+ m.SetModified()
+ return true
+}
+
+// SetConfirmationState sets the confirmation state associated with this metadata.
+// It returns true if the confirmation state is modified. False otherwise.
+func (m *BlockMetadata) SetConfirmationState(confirmationState confirmation.State) (modified bool) {
+ m.Lock()
+ defer m.Unlock()
+
+ if m.M.ConfirmationState == confirmationState {
+ return false
+ }
+
+ m.M.ConfirmationState = confirmationState
+ m.M.ConfirmationStateTime = clock.SyncedTime()
+ m.SetModified()
+ return true
+}
+
+// ConfirmationState returns the confirmation state.
+func (m *BlockMetadata) ConfirmationState() (result confirmation.State) {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.ConfirmationState
+}
+
+// ConfirmationStateTime returns the time the confirmation state was set.
+func (m *BlockMetadata) ConfirmationStateTime() time.Time {
+ m.RLock()
+ defer m.RUnlock()
+
+ return m.M.ConfirmationStateTime
+}
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// region Errors ///////////////////////////////////////////////////////////////////////////////////////////////////////
+
+var (
+ // ErrNoStrongParents is triggered if there no strong parents.
+ ErrNoStrongParents = errors.New("missing strong blocks in first parent block")
+ // ErrBlockTypeIsUnknown is triggered when the block type is unknown.
+ ErrBlockTypeIsUnknown = errors.Errorf("block types must range from %d-%d", 1, LastValidBlockType)
+ // ErrConflictingReferenceAcrossBlocks is triggered if there conflicting references across blocks.
+ ErrConflictingReferenceAcrossBlocks = errors.New("different blocks have conflicting references")
+)
+
+// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/message_test.go b/packages/tangle/block_test.go
similarity index 52%
rename from packages/tangle/message_test.go
rename to packages/tangle/block_test.go
index 6af97ae6c0..4ccf398b87 100644
--- a/packages/tangle/message_test.go
+++ b/packages/tangle/block_test.go
@@ -18,6 +18,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
"github.com/iotaledger/goshimmer/packages/tangle/payload"
@@ -32,8 +33,8 @@ func randomBytes(size uint) []byte {
return buffer
}
-func randomMessageID() MessageID {
- var result MessageID
+func randomBlockID() BlockID {
+ var result BlockID
err := result.FromRandomness()
if err != nil {
panic(err)
@@ -41,15 +42,15 @@ func randomMessageID() MessageID {
return result
}
-func randomParents(count int) MessageIDs {
- parents := NewMessageIDs()
+func randomParents(count int) BlockIDs {
+ parents := NewBlockIDs()
for i := 0; i < count; i++ {
- parents.Add(randomMessageID())
+ parents.Add(randomBlockID())
}
return parents
}
-func testSortParents(parents MessageIDs) []MessageID {
+func testSortParents(parents BlockIDs) []BlockID {
parentsSorted := parents.Slice()
sort.Slice(parentsSorted, func(i, j int) bool {
return bytes.Compare(parentsSorted[i].Bytes(), parentsSorted[j].Bytes()) < 0
@@ -57,143 +58,143 @@ func testSortParents(parents MessageIDs) []MessageID {
return parentsSorted
}
-func TestNewMessageID(t *testing.T) {
+func TestNewBlockID(t *testing.T) {
t.Run("CASE: Happy path", func(t *testing.T) {
- randID := randomMessageID()
+ randID := randomBlockID()
randIDString := randID.Base58()
- var msgID MessageID
- err := msgID.FromBase58(randIDString)
+ var blkID BlockID
+ err := blkID.FromBase58(randIDString)
assert.NoError(t, err)
- assert.Equal(t, randID, msgID)
+ assert.Equal(t, randID, blkID)
})
t.Run("CASE: Not base58 encoded", func(t *testing.T) {
- var msgID MessageID
- err := msgID.FromBase58("O0l")
+ var blkID BlockID
+ err := blkID.FromBase58("O0l")
assert.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "failed to decode base58 encoded string"))
- assert.Equal(t, EmptyMessageID, msgID)
+ assert.Equal(t, EmptyBlockID, blkID)
})
}
-func TestMessageIDFromBytes(t *testing.T) {
+func TestBlockIDFromBytes(t *testing.T) {
t.Run("CASE: Happy path", func(t *testing.T) {
- buffer := randomBytes(MessageIDLength)
- var msgID MessageID
- consumed, err := msgID.Decode(buffer)
+ buffer := randomBytes(BlockIDLength)
+ var blkID BlockID
+ consumed, err := blkID.Decode(buffer)
assert.NoError(t, err)
- assert.Equal(t, MessageIDLength, consumed)
- assert.Equal(t, msgID.Bytes(), buffer)
+ assert.Equal(t, BlockIDLength, consumed)
+ assert.Equal(t, blkID.Bytes(), buffer)
})
t.Run("CASE: Too few bytes", func(t *testing.T) {
- buffer := randomBytes(MessageIDLength - 1)
- var result MessageID
+ buffer := randomBytes(BlockIDLength - 1)
+ var result BlockID
consumed, err := result.Decode(buffer)
assert.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "not enough data to decode Identifier"))
assert.Equal(t, 0, consumed)
- assert.Equal(t, EmptyMessageID, result)
+ assert.Equal(t, EmptyBlockID, result)
})
t.Run("CASE: More bytes", func(t *testing.T) {
- buffer := randomBytes(MessageIDLength + 1)
- var result MessageID
+ buffer := randomBytes(BlockIDLength + 1)
+ var result BlockID
consumed, err := result.Decode(buffer)
assert.NoError(t, err)
- assert.Equal(t, MessageIDLength, consumed)
+ assert.Equal(t, BlockIDLength, consumed)
assert.Equal(t, buffer[:32], result.Bytes())
})
}
-func TestMessageID_String(t *testing.T) {
- randID := randomMessageID()
+func TestBlockID_String(t *testing.T) {
+ randID := randomBlockID()
randIDString := randID.String()
- assert.Equal(t, "MessageID("+base58.Encode(randID.Bytes())+")", randIDString)
+ assert.Equal(t, "BlockID("+base58.Encode(randID.Bytes())+")", randIDString)
}
-func TestMessageID_Base58(t *testing.T) {
- randID := randomMessageID()
+func TestBlockID_Base58(t *testing.T) {
+ randID := randomBlockID()
randIDString := randID.Base58()
assert.Equal(t, base58.Encode(randID.Bytes()), randIDString)
}
-func TestMessage_VerifySignature(t *testing.T) {
+func TestBlock_VerifySignature(t *testing.T) {
keyPair := ed25519.GenerateKeyPair()
pl := payload.NewGenericDataPayload([]byte("test"))
- unsigned := NewMessage(NewParentMessageIDs().AddStrong(EmptyMessageID), time.Time{}, keyPair.PublicKey, 0, pl, 0, ed25519.Signature{})
+ unsigned := NewBlock(NewParentBlockIDs().AddStrong(EmptyBlockID), time.Time{}, keyPair.PublicKey, 0, pl, 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
assert.False(t, lo.PanicOnErr(unsigned.VerifySignature()))
unsignedBytes, err := unsigned.Bytes()
require.NoError(t, err)
signature := keyPair.PrivateKey.Sign(unsignedBytes[:len(unsignedBytes)-ed25519.SignatureSize])
- signed := NewMessage(NewParentMessageIDs().AddStrong(EmptyMessageID), time.Time{}, keyPair.PublicKey, 0, pl, 0, signature)
+ signed := NewBlock(NewParentBlockIDs().AddStrong(EmptyBlockID), time.Time{}, keyPair.PublicKey, 0, pl, 0, signature, 0, epoch.NewECRecord(0))
assert.True(t, lo.PanicOnErr(signed.VerifySignature()))
}
-func TestMessage_UnmarshalTransaction(t *testing.T) {
+func TestBlock_UnmarshalTransaction(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- references := ParentMessageIDs{
+ references := ParentBlockIDs{
StrongParentType: randomParents(1),
WeakParentType: randomParents(1),
}
- testMessage, err := NewMessageWithValidation(references,
+ testBlock, err := NewBlockWithValidation(references,
time.Now(),
ed25519.PublicKey{},
0,
randomTransaction(),
0,
- ed25519.Signature{})
+ ed25519.Signature{}, 0, epoch.NewECRecord(0))
assert.NoError(t, err)
- assert.NoError(t, testMessage.DetermineID())
+ assert.NoError(t, testBlock.DetermineID())
- restoredMessage := new(Message)
- err = restoredMessage.FromBytes(lo.PanicOnErr(testMessage.Bytes()))
+ restoredBlock := new(Block)
+ err = restoredBlock.FromBytes(lo.PanicOnErr(testBlock.Bytes()))
assert.NoError(t, err)
- assert.NoError(t, restoredMessage.DetermineID())
- assert.Equal(t, testMessage.ID(), restoredMessage.ID())
+ assert.NoError(t, restoredBlock.DetermineID())
+ assert.Equal(t, testBlock.ID(), restoredBlock.ID())
}
-func TestMessage_MarshalUnmarshal(t *testing.T) {
+func TestBlock_MarshalUnmarshal(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testMessage, err := tangle.MessageFactory.IssuePayload(payload.NewGenericDataPayload([]byte("test")))
+ testBlock, err := tangle.BlockFactory.IssuePayload(payload.NewGenericDataPayload([]byte("test")))
require.NoError(t, err)
- assert.Equal(t, true, lo.PanicOnErr(testMessage.VerifySignature()))
+ assert.Equal(t, true, lo.PanicOnErr(testBlock.VerifySignature()))
- t.Log(testMessage)
+ t.Log(testBlock)
- restoredMessage := new(Message)
- err = restoredMessage.FromBytes(lo.PanicOnErr(testMessage.Bytes()))
- assert.NoError(t, restoredMessage.DetermineID())
+ restoredBlock := new(Block)
+ err = restoredBlock.FromBytes(lo.PanicOnErr(testBlock.Bytes()))
+ assert.NoError(t, restoredBlock.DetermineID())
if assert.NoError(t, err, err) {
- assert.Equal(t, testMessage.ID(), restoredMessage.ID())
- assert.Equal(t, testMessage.ParentsByType(StrongParentType), restoredMessage.ParentsByType(StrongParentType))
- assert.Equal(t, testMessage.ParentsByType(WeakParentType), restoredMessage.ParentsByType(WeakParentType))
- assert.Equal(t, testMessage.IssuerPublicKey(), restoredMessage.IssuerPublicKey())
- assert.Equal(t, testMessage.IssuingTime().Round(time.Second), restoredMessage.IssuingTime().Round(time.Second))
- assert.Equal(t, testMessage.SequenceNumber(), restoredMessage.SequenceNumber())
- assert.Equal(t, testMessage.Nonce(), restoredMessage.Nonce())
- assert.Equal(t, testMessage.Signature(), restoredMessage.Signature())
- assert.Equal(t, true, lo.PanicOnErr(restoredMessage.VerifySignature()))
+ assert.Equal(t, testBlock.ID(), restoredBlock.ID())
+ assert.Equal(t, testBlock.ParentsByType(StrongParentType), restoredBlock.ParentsByType(StrongParentType))
+ assert.Equal(t, testBlock.ParentsByType(WeakParentType), restoredBlock.ParentsByType(WeakParentType))
+ assert.Equal(t, testBlock.IssuerPublicKey(), restoredBlock.IssuerPublicKey())
+ assert.Equal(t, testBlock.IssuingTime().Round(time.Second), restoredBlock.IssuingTime().Round(time.Second))
+ assert.Equal(t, testBlock.SequenceNumber(), restoredBlock.SequenceNumber())
+ assert.Equal(t, testBlock.Nonce(), restoredBlock.Nonce())
+ assert.Equal(t, testBlock.Signature(), restoredBlock.Signature())
+ assert.Equal(t, true, lo.PanicOnErr(restoredBlock.VerifySignature()))
}
}
-func TestNewMessageWithValidation(t *testing.T) {
+func TestNewBlockWithValidation(t *testing.T) {
t.Run("CASE: Too many strong parents", func(t *testing.T) {
// too many strong parents
strongParents := testSortParents(randomParents(MaxParentsCount + 1))
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(strongParents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(strongParents...))
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -201,12 +202,12 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion)
+ 0, epoch.NewECRecord(0), BlockVersion)
assert.Error(t, err)
})
t.Run("CASE: Nil block", func(t *testing.T) {
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
nil,
time.Now(),
ed25519.PublicKey{},
@@ -214,33 +215,37 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
assert.Error(t, err)
})
t.Run("CASE: Empty Block", func(t *testing.T) {
- _, err := NewMessageWithValidation(
- NewParentMessageIDs(),
+ _, err := NewBlockWithValidation(
+ NewParentBlockIDs(),
time.Now(),
ed25519.PublicKey{},
0,
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
assert.Error(t, err)
})
t.Run("CASE: Blocks are unordered", func(t *testing.T) {
parents := testSortParents(randomParents(1))
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(WeakParentType, NewMessageIDs(testSortParents(randomParents(MaxParentsCount))...))
- parentBlocks.AddAll(ShallowLikeParentType, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(WeakParentType, NewBlockIDs(testSortParents(randomParents(MaxParentsCount))...))
+ parentBlocks.AddAll(ShallowLikeParentType, NewBlockIDs(parents...))
- msg, err := NewMessageWithValidation(
+ blk, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -248,29 +253,31 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
assert.NoError(t, err)
- assert.NoError(t, msg.DetermineID())
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ assert.NoError(t, blk.DetermineID())
+ blkBytes := lo.PanicOnErr(blk.Bytes())
- msgBytes[2] = byte(WeakParentType)
- msgBytes[36] = byte(StrongParentType)
+ blkBytes[2] = byte(WeakParentType)
+ blkBytes[36] = byte(StrongParentType)
- err = new(Message).FromObjectStorage(msg.IDBytes(), msgBytes)
+ err = new(Block).FromObjectStorage(blk.IDBytes(), blkBytes)
assert.ErrorContains(t, err, "array elements must be in their lexical order (byte wise)")
})
t.Run("CASE: Repeating block types", func(t *testing.T) {
- // this can be tested only for deserialization as it's even impossible to create such message using current structures
+ // this can be tested only for deserialization as it's even impossible to create such block using current structures
parents := testSortParents(randomParents(MaxParentsCount))
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(WeakParentType, NewMessageIDs(testSortParents(randomParents(MaxParentsCount))...))
- parentBlocks.AddAll(ShallowLikeParentType, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(WeakParentType, NewBlockIDs(testSortParents(randomParents(MaxParentsCount))...))
+ parentBlocks.AddAll(ShallowLikeParentType, NewBlockIDs(parents...))
- msg, err := NewMessageWithValidation(
+ blk, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -278,14 +285,16 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
- assert.NoError(t, msg.DetermineID())
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ assert.NoError(t, blk.DetermineID())
+ blkBytes := lo.PanicOnErr(blk.Bytes())
- msgBytes[2] = byte(WeakParentType)
+ blkBytes[2] = byte(WeakParentType)
- err = new(Message).FromObjectStorage(msg.IDBytes(), msgBytes)
+ err = new(Block).FromObjectStorage(blk.IDBytes(), blkBytes)
assert.ErrorContains(t, err, "array elements must be unique")
})
@@ -293,12 +302,12 @@ func TestNewMessageWithValidation(t *testing.T) {
t.Run("CASE: Unknown block type", func(t *testing.T) {
parents := testSortParents(randomParents(MaxParentsCount))
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(ShallowLikeParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(LastValidBlockType+1, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(ShallowLikeParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(LastValidBlockType+1, NewBlockIDs(parents...))
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -306,7 +315,9 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
assert.Error(t, err)
})
@@ -314,10 +325,10 @@ func TestNewMessageWithValidation(t *testing.T) {
t.Run("Case: Duplicate references", func(t *testing.T) {
parents := testSortParents(randomParents(4))
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
- msg, err := NewMessageWithValidation(
+ blk, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -325,23 +336,25 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
- assert.NoError(t, msg.DetermineID())
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ assert.NoError(t, blk.DetermineID())
+ blkBytes := lo.PanicOnErr(blk.Bytes())
- copy(msgBytes[4:36], msgBytes[36:36+32])
+ copy(blkBytes[4:36], blkBytes[36:36+32])
- err = msg.FromObjectStorage(msg.IDBytes(), msgBytes)
+ err = blk.FromObjectStorage(blk.IDBytes(), blkBytes)
assert.ErrorContains(t, err, "array elements must be unique")
})
t.Run("Case: References out of order", func(t *testing.T) {
parents := testSortParents(randomParents(4))
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
- msg, err := NewMessageWithValidation(
+ blk, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -349,16 +362,17 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0, epoch.NewECRecord(0),
+ BlockVersion,
)
- assert.NoError(t, msg.DetermineID())
+ assert.NoError(t, blk.DetermineID())
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ blkBytes := lo.PanicOnErr(blk.Bytes())
// replace parents in byte structure
- copy(msgBytes[4:36], msgBytes[36+32:36+64])
+ copy(blkBytes[4:36], blkBytes[36+32:36+64])
- err = msg.FromObjectStorage(msg.IDBytes(), msgBytes)
+ err = blk.FromObjectStorage(blk.IDBytes(), blkBytes)
assert.ErrorContains(t, err, "array elements must be in their lexical order (byte wise)")
// if the duplicates are not consecutive a lexicographically order error is returned
})
@@ -367,11 +381,11 @@ func TestNewMessageWithValidation(t *testing.T) {
parents := testSortParents(randomParents(4))
{
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(ShallowLikeParentType, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(ShallowLikeParentType, NewBlockIDs(parents...))
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -380,17 +394,19 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
assert.NoError(t, err, "strong and like parents may have duplicate parents")
}
{
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(WeakParentType, NewMessageIDs(parents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(WeakParentType, NewBlockIDs(parents...))
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -398,21 +414,23 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion,
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion,
)
- assert.Error(t, err, "messages in weak references may allow to overlap with strong references")
+ assert.Error(t, err, "blocks in weak references may allow to overlap with strong references")
}
{
- // check for repeating message across weak and dislike block
+ // check for repeating block across weak and dislike block
weakParents := testSortParents(randomParents(4))
weakParents[2] = parents[2]
- parentBlocks := NewParentMessageIDs()
- parentBlocks.AddAll(StrongParentType, NewMessageIDs(parents...))
- parentBlocks.AddAll(WeakParentType, NewMessageIDs(weakParents...))
+ parentBlocks := NewParentBlockIDs()
+ parentBlocks.AddAll(StrongParentType, NewBlockIDs(parents...))
+ parentBlocks.AddAll(WeakParentType, NewBlockIDs(weakParents...))
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
parentBlocks,
time.Now(),
ed25519.PublicKey{},
@@ -420,51 +438,53 @@ func TestNewMessageWithValidation(t *testing.T) {
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
- MessageVersion)
+ 0,
+ epoch.NewECRecord(0),
+ BlockVersion)
assert.Error(t, err)
}
})
}
-func TestMessage_NewMessage(t *testing.T) {
+func TestBlock_NewBlock(t *testing.T) {
t.Run("CASE: No parents at all", func(t *testing.T) {
- _, err := NewMessageWithValidation(
- ParentMessageIDs{},
+ _, err := NewBlockWithValidation(
+ ParentBlockIDs{},
time.Now(),
ed25519.PublicKey{},
0,
payload.NewGenericDataPayload([]byte("")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.ErrorIs(t, err, ErrNoStrongParents)
})
t.Run("CASE: Minimum number of parents", func(t *testing.T) {
- _, err := NewMessageWithValidation(
- emptyLikeReferencesFromStrongParents(NewMessageIDs(EmptyMessageID)),
+ _, err := NewBlockWithValidation(
+ emptyLikeReferencesFromStrongParents(NewBlockIDs(EmptyBlockID)),
time.Now(),
ed25519.PublicKey{},
0,
payload.NewGenericDataPayload([]byte("")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
- // should pass since EmptyMessageId is a valid MessageId
+ // should pass since EmptyBlockId is a valid BlockId
assert.NoError(t, err)
})
t.Run("CASE: Maximum number of parents (only strong)", func(t *testing.T) {
// max number of parents supplied (only strong)
strongParents := randomParents(MaxParentsCount)
- _, err := NewMessageWithValidation(
+ _, err := NewBlockWithValidation(
emptyLikeReferencesFromStrongParents(strongParents),
time.Now(),
ed25519.PublicKey{},
0,
payload.NewGenericDataPayload([]byte("")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
})
@@ -472,9 +492,9 @@ func TestMessage_NewMessage(t *testing.T) {
t.Run("CASE: Maximum number of weak parents (one strong)", func(t *testing.T) {
// max number of weak parents plus one strong
weakParents := randomParents(MaxParentsCount)
- _, err := NewMessageWithValidation(
- ParentMessageIDs{
- StrongParentType: {EmptyMessageID: types.Void},
+ _, err := NewBlockWithValidation(
+ ParentBlockIDs{
+ StrongParentType: {EmptyBlockID: types.Void},
WeakParentType: weakParents,
},
time.Now(),
@@ -482,7 +502,7 @@ func TestMessage_NewMessage(t *testing.T) {
0,
payload.NewGenericDataPayload([]byte("")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
})
@@ -491,23 +511,23 @@ func TestMessage_NewMessage(t *testing.T) {
strongParents := randomParents(MaxParentsCount).Slice()
// MaxParentsCount + 1 parents, but there is one duplicate
strongParents = append(strongParents, strongParents[MaxParentsCount-1])
- _, err := NewMessageWithValidation(
- emptyLikeReferencesFromStrongParents(NewMessageIDs(strongParents...)),
+ _, err := NewBlockWithValidation(
+ emptyLikeReferencesFromStrongParents(NewBlockIDs(strongParents...)),
time.Now(),
ed25519.PublicKey{},
0,
payload.NewGenericDataPayload([]byte("")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
})
}
-func TestMessage_Bytes(t *testing.T) {
+func TestBlock_Bytes(t *testing.T) {
t.Run("CASE: Parents not sorted", func(t *testing.T) {
- msg, err := NewMessageWithValidation(
- ParentMessageIDs{
+ blk, err := NewBlockWithValidation(
+ ParentBlockIDs{
StrongParentType: randomParents(4),
WeakParentType: randomParents(4),
},
@@ -516,26 +536,26 @@ func TestMessage_Bytes(t *testing.T) {
0,
payload.NewGenericDataPayload([]byte("")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ blkBytes := lo.PanicOnErr(blk.Bytes())
// bytes 4 to 260 hold the 8 parent IDs
// manually change their order
tmp := make([]byte, 32)
- copy(tmp, msgBytes[3:35])
- copy(msgBytes[3:35], msgBytes[3+32:35+32])
- copy(msgBytes[3+32:35+32], tmp)
- err = new(Message).FromBytes(msgBytes)
+ copy(tmp, blkBytes[3:35])
+ copy(blkBytes[3:35], blkBytes[3+32:35+32])
+ copy(blkBytes[3+32:35+32], tmp)
+ err = new(Block).FromBytes(blkBytes)
assert.Error(t, err)
})
- t.Run("CASE: Max msg size", func(t *testing.T) {
+ t.Run("CASE: Max blk size", func(t *testing.T) {
// 4 bytes for payload size field + 4 bytes for to denote
data := make([]byte, payload.MaxSize-8)
- msg, err := NewMessageWithValidation(
- ParentMessageIDs{
+ blk, err := NewBlockWithValidation(
+ ParentBlockIDs{
StrongParentType: randomParents(MaxParentsCount),
WeakParentType: randomParents(MaxParentsCount),
ShallowLikeParentType: randomParents(MaxParentsCount),
@@ -545,18 +565,18 @@ func TestMessage_Bytes(t *testing.T) {
0,
payload.NewGenericDataPayload(data),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
- msgBytes := lo.PanicOnErr(msg.Bytes())
- assert.Equal(t, MaxMessageSize, len(msgBytes))
+ blkBytes := lo.PanicOnErr(blk.Bytes())
+ assert.Equal(t, MaxBlockSize, len(blkBytes))
})
- t.Run("CASE: Min msg size", func(t *testing.T) {
- // msg with minimum number of parents
- msg, err := NewMessageWithValidation(
- ParentMessageIDs{
+ t.Run("CASE: Min blk size", func(t *testing.T) {
+ // blk with minimum number of parents
+ blk, err := NewBlockWithValidation(
+ ParentBlockIDs{
StrongParentType: randomParents(MinParentsCount),
},
time.Now(),
@@ -564,71 +584,71 @@ func TestMessage_Bytes(t *testing.T) {
0,
payload.NewGenericDataPayload(nil),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ blkBytes := lo.PanicOnErr(blk.Bytes())
// 4 full parents blocks - 1 parent block with 1 parent
- assert.Equal(t, MaxMessageSize-payload.MaxSize+8-(2*(1+1+8*32)+(7*32)), len(msgBytes))
+ assert.Equal(t, MaxBlockSize-payload.MaxSize+8-(2*(1+1+8*32)+(7*32)), len(blkBytes))
})
}
-func TestMessageFromBytes(t *testing.T) {
+func TestBlockFromBytes(t *testing.T) {
t.Run("CASE: Happy path", func(t *testing.T) {
- msg, err := NewMessageWithValidation(
- ParentMessageIDs{
+ blk, err := NewBlockWithValidation(
+ ParentBlockIDs{
StrongParentType: randomParents(MaxParentsCount / 2),
WeakParentType: randomParents(MaxParentsCount / 2),
},
time.Now(),
ed25519.PublicKey{},
0,
- payload.NewGenericDataPayload([]byte("This is a test message.")),
+ payload.NewGenericDataPayload([]byte("This is a test block.")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
assert.NoError(t, err)
- assert.NoError(t, msg.DetermineID())
+ assert.NoError(t, blk.DetermineID())
- msgBytes := lo.PanicOnErr(msg.Bytes())
- result := new(Message)
- err = result.FromBytes(msgBytes)
+ blkBytes := lo.PanicOnErr(blk.Bytes())
+ result := new(Block)
+ err = result.FromBytes(blkBytes)
assert.NoError(t, result.DetermineID())
assert.NoError(t, err)
- assert.Equal(t, msg.Version(), result.Version())
- assert.Equal(t, msg.ParentsByType(StrongParentType), result.ParentsByType(StrongParentType))
- assert.Equal(t, msg.ParentsByType(WeakParentType), result.ParentsByType(WeakParentType))
- assert.ElementsMatch(t, msg.Parents(), result.Parents())
- assert.Equal(t, msg.IssuerPublicKey(), result.IssuerPublicKey())
+ assert.Equal(t, blk.Version(), result.Version())
+ assert.Equal(t, blk.ParentsByType(StrongParentType), result.ParentsByType(StrongParentType))
+ assert.Equal(t, blk.ParentsByType(WeakParentType), result.ParentsByType(WeakParentType))
+ assert.ElementsMatch(t, blk.Parents(), result.Parents())
+ assert.Equal(t, blk.IssuerPublicKey(), result.IssuerPublicKey())
// time is in different representation but it denotes the same time
- assert.True(t, msg.IssuingTime().Equal(result.IssuingTime()))
- assert.Equal(t, msg.SequenceNumber(), result.SequenceNumber())
- assert.Equal(t, msg.Payload(), result.Payload())
- assert.Equal(t, msg.Nonce(), result.Nonce())
- assert.Equal(t, msg.Signature(), result.Signature())
- assert.Equal(t, msg.ID(), result.ID())
+ assert.True(t, blk.IssuingTime().Equal(result.IssuingTime()))
+ assert.Equal(t, blk.SequenceNumber(), result.SequenceNumber())
+ assert.Equal(t, blk.Payload(), result.Payload())
+ assert.Equal(t, blk.Nonce(), result.Nonce())
+ assert.Equal(t, blk.Signature(), result.Signature())
+ assert.Equal(t, blk.ID(), result.ID())
})
t.Run("CASE: Trailing bytes", func(t *testing.T) {
- msg, err := NewMessageWithValidation(
- ParentMessageIDs{
+ blk, err := NewBlockWithValidation(
+ ParentBlockIDs{
StrongParentType: randomParents(MaxParentsCount / 2),
WeakParentType: randomParents(MaxParentsCount / 2),
},
time.Now(),
ed25519.PublicKey{},
0,
- payload.NewGenericDataPayload([]byte("This is a test message.")),
+ payload.NewGenericDataPayload([]byte("This is a test block.")),
0,
- ed25519.Signature{},
+ ed25519.Signature{}, 0, epoch.NewECRecord(0),
)
- assert.NoError(t, err, "Syntactically invalid message created")
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ assert.NoError(t, err, "Syntactically invalid block created")
+ blkBytes := lo.PanicOnErr(blk.Bytes())
// put some bytes at the end
- msgBytes = append(msgBytes, []byte{0, 1, 2, 3, 4}...)
- err = new(Message).FromBytes(msgBytes)
+ blkBytes = append(blkBytes, []byte{0, 1, 2, 3, 4}...)
+ err = new(Block).FromBytes(blkBytes)
assert.Error(t, err)
assert.True(t, errors.Is(err, cerrors.ErrParseBytesFailed))
})
diff --git a/packages/tangle/messagefactory.go b/packages/tangle/blockfactory.go
similarity index 57%
rename from packages/tangle/messagefactory.go
rename to packages/tangle/blockfactory.go
index 7f91e55342..1239031abc 100644
--- a/packages/tangle/messagefactory.go
+++ b/packages/tangle/blockfactory.go
@@ -11,17 +11,18 @@ import (
"github.com/iotaledger/hive.go/kvstore"
"github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/tangle/payload"
)
const storeSequenceInterval = 100
-// region MessageFactory ///////////////////////////////////////////////////////////////////////////////////////////////
+// region BlockFactory ///////////////////////////////////////////////////////////////////////////////////////////////
-// MessageFactory acts as a factory to create new messages.
-type MessageFactory struct {
- Events *MessageFactoryEvents
+// BlockFactory acts as a factory to create new blocks.
+type BlockFactory struct {
+ Events *BlockFactoryEvents
tangle *Tangle
sequence *kvstore.Sequence
@@ -36,11 +37,11 @@ type MessageFactory struct {
workerMutex sync.RWMutex
}
-// NewMessageFactory creates a new message factory.
-func NewMessageFactory(tangle *Tangle, selector TipSelector, referencesFunc ...ReferencesFunc) *MessageFactory {
+// NewBlockFactory creates a new block factory.
+func NewBlockFactory(tangle *Tangle, selector TipSelector, referencesFunc ...ReferencesFunc) *BlockFactory {
sequence, err := kvstore.NewSequence(tangle.Options.Store, []byte(DBSequenceNumber), storeSequenceInterval)
if err != nil {
- panic(fmt.Sprintf("could not create message sequence number: %v", err))
+ panic(fmt.Sprintf("could not create block sequence number: %v", err))
}
referenceProvider := NewReferenceProvider(tangle)
@@ -49,8 +50,8 @@ func NewMessageFactory(tangle *Tangle, selector TipSelector, referencesFunc ...R
f = referencesFunc[0]
}
- return &MessageFactory{
- Events: NewMessageFactoryEvents(),
+ return &BlockFactory{
+ Events: NewBlockFactoryEvents(),
tangle: tangle,
sequence: sequence,
localIdentity: tangle.Options.Identity,
@@ -62,46 +63,46 @@ func NewMessageFactory(tangle *Tangle, selector TipSelector, referencesFunc ...R
}
}
-// SetWorker sets the PoW worker to be used for the messages.
-func (f *MessageFactory) SetWorker(worker Worker) {
+// SetWorker sets the PoW worker to be used for the blocks.
+func (f *BlockFactory) SetWorker(worker Worker) {
f.workerMutex.Lock()
defer f.workerMutex.Unlock()
f.worker = worker
}
// SetTimeout sets the timeout for PoW.
-func (f *MessageFactory) SetTimeout(timeout time.Duration) {
+func (f *BlockFactory) SetTimeout(timeout time.Duration) {
f.powTimeout = timeout
}
-// IssuePayload creates a new message including sequence number and tip selection and returns it.
-func (f *MessageFactory) IssuePayload(p payload.Payload, parentsCount ...int) (*Message, error) {
- msg, err := f.issuePayload(p, nil, parentsCount...)
+// IssuePayload creates a new block including sequence number and tip selection and returns it.
+func (f *BlockFactory) IssuePayload(p payload.Payload, parentsCount ...int) (*Block, error) {
+ blk, err := f.issuePayload(p, nil, parentsCount...)
if err != nil {
- f.Events.Error.Trigger(errors.Errorf("message could not be issued: %w", err))
+ f.Events.Error.Trigger(errors.Errorf("block could not be issued: %w", err))
return nil, err
}
- f.Events.MessageConstructed.Trigger(&MessageConstructedEvent{msg})
- return msg, nil
+ f.Events.BlockConstructed.Trigger(&BlockConstructedEvent{blk})
+ return blk, nil
}
-// IssuePayloadWithReferences creates a new message with the references submit.
-func (f *MessageFactory) IssuePayloadWithReferences(p payload.Payload, references ParentMessageIDs, parentsCount ...int) (*Message, error) {
- msg, err := f.issuePayload(p, references, parentsCount...)
+// IssuePayloadWithReferences creates a new block with the references submit.
+func (f *BlockFactory) IssuePayloadWithReferences(p payload.Payload, references ParentBlockIDs, parentsCount ...int) (*Block, error) {
+ blk, err := f.issuePayload(p, references, parentsCount...)
if err != nil {
- f.Events.Error.Trigger(errors.Errorf("message could not be issued: %w", err))
+ f.Events.Error.Trigger(errors.Errorf("block could not be issued: %w", err))
return nil, err
}
- f.Events.MessageConstructed.Trigger(&MessageConstructedEvent{msg})
- return msg, nil
+ f.Events.BlockConstructed.Trigger(&BlockConstructedEvent{blk})
+ return blk, nil
}
-// issuePayload create a new message. If there are any supplied references, it uses them. Otherwise, uses tip selection.
-// It also triggers the MessageConstructed event once it's done, which is for example used by the plugins to listen for
-// messages that shall be attached to the tangle.
-func (f *MessageFactory) issuePayload(p payload.Payload, references ParentMessageIDs, parentsCountOpt ...int) (*Message, error) {
+// issuePayload create a new block. If there are any supplied references, it uses them. Otherwise, uses tip selection.
+// It also triggers the BlockConstructed event once it's done, which is for example used by the plugins to listen for
+// blocks that shall be attached to the tangle.
+func (f *BlockFactory) issuePayload(p payload.Payload, references ParentBlockIDs, parentsCountOpt ...int) (*Block, error) {
parentsCount := 2
if len(parentsCountOpt) > 0 {
parentsCount = parentsCountOpt[0]
@@ -124,19 +125,26 @@ func (f *MessageFactory) issuePayload(p payload.Payload, references ParentMessag
issuerPublicKey := f.localIdentity.PublicKey()
+ epochCommitment, lastConfirmedEpochIndex, epochCommitmentErr := f.tangle.Options.CommitmentFunc()
+ if epochCommitmentErr != nil {
+ err = errors.Errorf("cannot retrieve epoch commitment: %w", epochCommitmentErr)
+ f.Events.Error.Trigger(err)
+ return nil, err
+ }
+
// select tips, perform PoW and prepare references
- references, nonce, issuingTime, err := f.selectTipsAndPerformPoW(p, references, parentsCount, issuerPublicKey, sequenceNumber)
+ references, nonce, issuingTime, err := f.selectTipsAndPerformPoW(p, references, parentsCount, issuerPublicKey, sequenceNumber, lastConfirmedEpochIndex, epochCommitment)
if err != nil {
return nil, errors.Errorf("could not select tips and perform PoW: %w", err)
}
// create the signature
- signature, err := f.sign(references, issuingTime, issuerPublicKey, sequenceNumber, p, nonce)
+ signature, err := f.sign(references, issuingTime, issuerPublicKey, sequenceNumber, p, nonce, lastConfirmedEpochIndex, epochCommitment)
if err != nil {
return nil, errors.Errorf("signing failed: %w", err)
}
- msg, err := NewMessageWithValidation(
+ blk, err := NewBlockWithValidation(
references,
issuingTime,
issuerPublicKey,
@@ -144,20 +152,22 @@ func (f *MessageFactory) issuePayload(p payload.Payload, references ParentMessag
p,
nonce,
signature,
+ lastConfirmedEpochIndex,
+ epochCommitment,
)
if err != nil {
- return nil, errors.Errorf("there is a problem with the message syntax: %w", err)
+ return nil, errors.Errorf("there is a problem with the block syntax: %w", err)
}
- _ = msg.DetermineID()
+ _ = blk.DetermineID()
- return msg, nil
+ return blk, nil
}
-func (f *MessageFactory) selectTipsAndPerformPoW(p payload.Payload, providedReferences ParentMessageIDs, parentsCount int, issuerPublicKey ed25519.PublicKey, sequenceNumber uint64) (references ParentMessageIDs, nonce uint64, issuingTime time.Time, err error) {
+func (f *BlockFactory) selectTipsAndPerformPoW(p payload.Payload, providedReferences ParentBlockIDs, parentsCount int, issuerPublicKey ed25519.PublicKey, sequenceNumber uint64, lastConfirmedEpoch epoch.Index, epochCommittment *epoch.ECRecord) (references ParentBlockIDs, nonce uint64, issuingTime time.Time, err error) {
// Perform PoW with given information if there are references provided.
if !providedReferences.IsEmpty() {
issuingTime = f.getIssuingTime(providedReferences[StrongParentType])
- nonce, err = f.doPOW(providedReferences, issuingTime, issuerPublicKey, sequenceNumber, p)
+ nonce, err = f.doPOW(providedReferences, issuingTime, issuerPublicKey, sequenceNumber, p, lastConfirmedEpoch, epochCommittment)
if err != nil {
return providedReferences, nonce, issuingTime, errors.Errorf("PoW failed: %w", err)
}
@@ -182,9 +192,9 @@ func (f *MessageFactory) selectTipsAndPerformPoW(p payload.Payload, providedRefe
delete(references[WeakParentType], strongParent)
}
- // fill up weak references with weak references to liked missing branches
+ // fill up weak references with weak references to liked missing conflicts
if _, exists := references[WeakParentType]; !exists {
- references[WeakParentType] = NewMessageIDs()
+ references[WeakParentType] = NewBlockIDs()
}
references[WeakParentType].AddAll(f.ReferenceProvider.ReferencesToMissingConflicts(issuingTime, MaxParentsCount-len(references[WeakParentType])))
@@ -192,7 +202,7 @@ func (f *MessageFactory) selectTipsAndPerformPoW(p payload.Payload, providedRefe
delete(references, WeakParentType)
}
- nonce, err = f.doPOW(references, issuingTime, issuerPublicKey, sequenceNumber, p)
+ nonce, err = f.doPOW(references, issuingTime, issuerPublicKey, sequenceNumber, p, lastConfirmedEpoch, epochCommittment)
}
if err != nil {
@@ -202,15 +212,15 @@ func (f *MessageFactory) selectTipsAndPerformPoW(p payload.Payload, providedRefe
return references, nonce, issuingTime, nil
}
-func (f *MessageFactory) getIssuingTime(parents MessageIDs) time.Time {
+func (f *BlockFactory) getIssuingTime(parents BlockIDs) time.Time {
issuingTime := clock.SyncedTime()
// due to the ParentAge check we must ensure that we set the right issuing time.
for parent := range parents {
- f.tangle.Storage.Message(parent).Consume(func(msg *Message) {
- if msg.ID() != EmptyMessageID && !msg.IssuingTime().Before(issuingTime) {
- issuingTime = msg.IssuingTime()
+ f.tangle.Storage.Block(parent).Consume(func(blk *Block) {
+ if blk.ID() != EmptyBlockID && !blk.IssuingTime().Before(issuingTime) {
+ issuingTime = blk.IssuingTime()
}
})
}
@@ -218,7 +228,7 @@ func (f *MessageFactory) getIssuingTime(parents MessageIDs) time.Time {
return issuingTime
}
-func (f *MessageFactory) tips(p payload.Payload, parentsCount int) (parents MessageIDs) {
+func (f *BlockFactory) tips(p payload.Payload, parentsCount int) (parents BlockIDs) {
parents = f.selector.Tips(p, parentsCount)
tx, ok := p.(utxo.Transaction)
@@ -226,7 +236,7 @@ func (f *MessageFactory) tips(p payload.Payload, parentsCount int) (parents Mess
return parents
}
- // If the message is issuing a transaction and is a double spend, we add it in parallel to the earliest attachment
+ // If the block is issuing a transaction and is a double spend, we add it in parallel to the earliest attachment
// to prevent a double spend from being issued in its past cone.
if conflictingTransactions := f.tangle.Ledger.Utils.ConflictingTransactions(tx.ID()); !conflictingTransactions.IsEmpty() {
if earliestAttachment := f.EarliestAttachment(conflictingTransactions); earliestAttachment != nil {
@@ -237,15 +247,16 @@ func (f *MessageFactory) tips(p payload.Payload, parentsCount int) (parents Mess
return parents
}
-func (f *MessageFactory) EarliestAttachment(transactionIDs utxo.TransactionIDs) (earliestAttachment *Message) {
- earliestIssuingTime := time.Now()
+func (f *BlockFactory) EarliestAttachment(transactionIDs utxo.TransactionIDs, earliestAttachmentMustBeBooked ...bool) (earliestAttachment *Block) {
+ var earliestIssuingTime time.Time
for it := transactionIDs.Iterator(); it.HasNext(); {
f.tangle.Storage.Attachments(it.Next()).Consume(func(attachment *Attachment) {
- f.tangle.Storage.Message(attachment.MessageID()).Consume(func(message *Message) {
- f.tangle.Storage.MessageMetadata(attachment.MessageID()).Consume(func(messageMetadata *MessageMetadata) {
- if messageMetadata.IsBooked() && message.IssuingTime().Before(earliestIssuingTime) {
- earliestAttachment = message
- earliestIssuingTime = message.IssuingTime()
+ f.tangle.Storage.Block(attachment.BlockID()).Consume(func(block *Block) {
+ f.tangle.Storage.BlockMetadata(attachment.BlockID()).Consume(func(blockMetadata *BlockMetadata) {
+ if ((len(earliestAttachmentMustBeBooked) > 0 && !earliestAttachmentMustBeBooked[0]) || blockMetadata.IsBooked()) &&
+ (earliestAttachment == nil || block.IssuingTime().Before(earliestIssuingTime)) {
+ earliestAttachment = block
+ earliestIssuingTime = block.IssuingTime()
}
})
})
@@ -255,14 +266,14 @@ func (f *MessageFactory) EarliestAttachment(transactionIDs utxo.TransactionIDs)
return earliestAttachment
}
-func (f *MessageFactory) LatestAttachment(transactionID utxo.TransactionID) (latestAttachment *Message) {
+func (f *BlockFactory) LatestAttachment(transactionID utxo.TransactionID) (latestAttachment *Block) {
var latestIssuingTime time.Time
f.tangle.Storage.Attachments(transactionID).Consume(func(attachment *Attachment) {
- f.tangle.Storage.Message(attachment.MessageID()).Consume(func(message *Message) {
- f.tangle.Storage.MessageMetadata(attachment.MessageID()).Consume(func(messageMetadata *MessageMetadata) {
- if messageMetadata.IsBooked() && message.IssuingTime().After(latestIssuingTime) {
- latestAttachment = message
- latestIssuingTime = message.IssuingTime()
+ f.tangle.Storage.Block(attachment.BlockID()).Consume(func(block *Block) {
+ f.tangle.Storage.BlockMetadata(attachment.BlockID()).Consume(func(blockMetadata *BlockMetadata) {
+ if blockMetadata.IsBooked() && block.IssuingTime().After(latestIssuingTime) {
+ latestAttachment = block
+ latestIssuingTime = block.IssuingTime()
}
})
})
@@ -271,18 +282,18 @@ func (f *MessageFactory) LatestAttachment(transactionID utxo.TransactionID) (lat
return latestAttachment
}
-// Shutdown closes the MessageFactory and persists the sequence number.
-func (f *MessageFactory) Shutdown() {
+// Shutdown closes the BlockFactory and persists the sequence number.
+func (f *BlockFactory) Shutdown() {
if err := f.sequence.Release(); err != nil {
- f.Events.Error.Trigger(fmt.Errorf("could not release message sequence number: %w", err))
+ f.Events.Error.Trigger(fmt.Errorf("could not release block sequence number: %w", err))
}
}
-// doPOW performs pow on the message and returns a nonce.
-func (f *MessageFactory) doPOW(references ParentMessageIDs, issuingTime time.Time, key ed25519.PublicKey, seq uint64, messagePayload payload.Payload) (uint64, error) {
- // create a dummy message to simplify marshaling
- message := NewMessage(references, issuingTime, key, seq, messagePayload, 0, ed25519.EmptySignature)
- dummy, err := message.Bytes()
+// doPOW performs pow on the block and returns a nonce.
+func (f *BlockFactory) doPOW(references ParentBlockIDs, issuingTime time.Time, key ed25519.PublicKey, seq uint64, blockPayload payload.Payload, latestConfirmedEpoch epoch.Index, epochCommitment *epoch.ECRecord) (uint64, error) {
+ // create a dummy block to simplify marshaling
+ block := NewBlock(references, issuingTime, key, seq, blockPayload, 0, ed25519.EmptySignature, latestConfirmedEpoch, epochCommitment)
+ dummy, err := block.Bytes()
if err != nil {
return 0, err
}
@@ -292,9 +303,9 @@ func (f *MessageFactory) doPOW(references ParentMessageIDs, issuingTime time.Tim
return f.worker.DoPOW(dummy)
}
-func (f *MessageFactory) sign(references ParentMessageIDs, issuingTime time.Time, key ed25519.PublicKey, seq uint64, messagePayload payload.Payload, nonce uint64) (ed25519.Signature, error) {
- // create a dummy message to simplify marshaling
- dummy := NewMessage(references, issuingTime, key, seq, messagePayload, nonce, ed25519.EmptySignature)
+func (f *BlockFactory) sign(references ParentBlockIDs, issuingTime time.Time, key ed25519.PublicKey, seq uint64, blockPayload payload.Payload, nonce uint64, latestConfirmedEpoch epoch.Index, epochCommitment *epoch.ECRecord) (ed25519.Signature, error) {
+ // create a dummy block to simplify marshaling
+ dummy := NewBlock(references, issuingTime, key, seq, blockPayload, nonce, ed25519.EmptySignature, latestConfirmedEpoch, epochCommitment)
dummyBytes, err := dummy.Bytes()
if err != nil {
return ed25519.EmptySignature, err
@@ -308,9 +319,9 @@ func (f *MessageFactory) sign(references ParentMessageIDs, issuingTime time.Time
// region TipSelector //////////////////////////////////////////////////////////////////////////////////////////////////
-// A TipSelector selects two tips, parent2 and parent1, for a new message to attach to.
+// A TipSelector selects two tips, parent2 and parent1, for a new block to attach to.
type TipSelector interface {
- Tips(p payload.Payload, countParents int) (parents MessageIDs)
+ Tips(p payload.Payload, countParents int) (parents BlockIDs)
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -318,10 +329,10 @@ type TipSelector interface {
// region TipSelectorFunc //////////////////////////////////////////////////////////////////////////////////////////////
// The TipSelectorFunc type is an adapter to allow the use of ordinary functions as tip selectors.
-type TipSelectorFunc func(p payload.Payload, countParents int) (parents MessageIDs)
+type TipSelectorFunc func(p payload.Payload, countParents int) (parents BlockIDs)
// Tips calls f().
-func (f TipSelectorFunc) Tips(p payload.Payload, countParents int) (parents MessageIDs) {
+func (f TipSelectorFunc) Tips(p payload.Payload, countParents int) (parents BlockIDs) {
return f(p, countParents)
}
@@ -329,7 +340,7 @@ func (f TipSelectorFunc) Tips(p payload.Payload, countParents int) (parents Mess
// region Worker ///////////////////////////////////////////////////////////////////////////////////////////////////////
-// A Worker performs the PoW for the provided message in serialized byte form.
+// A Worker performs the PoW for the provided block in serialized byte form.
type Worker interface {
DoPOW([]byte) (nonce uint64, err error)
}
@@ -341,9 +352,9 @@ type Worker interface {
// The WorkerFunc type is an adapter to allow the use of ordinary functions as a PoW performer.
type WorkerFunc func([]byte) (uint64, error)
-// DoPOW calls f(msg).
-func (f WorkerFunc) DoPOW(msg []byte) (uint64, error) {
- return f(msg)
+// DoPOW calls f(blk).
+func (f WorkerFunc) DoPOW(blk []byte) (uint64, error) {
+ return f(blk)
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -357,7 +368,7 @@ var ZeroWorker = WorkerFunc(func([]byte) (uint64, error) { return 0, nil })
// region PrepareLikeReferences ///////////////////////////////////////////////////////////////////////////////////////////////////
-// ReferencesFunc is a function type that returns like references a given set of parents of a Message.
-type ReferencesFunc func(payload payload.Payload, strongParents MessageIDs, issuingTime time.Time) (references ParentMessageIDs, err error)
+// ReferencesFunc is a function type that returns like references a given set of parents of a Block.
+type ReferencesFunc func(payload payload.Payload, strongParents BlockIDs, issuingTime time.Time) (references ParentBlockIDs, err error)
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/blockfactory_test.go b/packages/tangle/blockfactory_test.go
new file mode 100644
index 0000000000..7b1e4a11d7
--- /dev/null
+++ b/packages/tangle/blockfactory_test.go
@@ -0,0 +1,433 @@
+package tangle
+
+import (
+ "context"
+ "crypto/ed25519"
+ "fmt"
+ "sync"
+ "sync/atomic"
+ "testing"
+ "time"
+
+ "github.com/iotaledger/hive.go/generics/event"
+ "github.com/iotaledger/hive.go/generics/set"
+ "github.com/iotaledger/hive.go/identity"
+ "github.com/iotaledger/hive.go/types"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ _ "golang.org/x/crypto/blake2b"
+
+ "github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/goshimmer/packages/ledger/utxo"
+ "github.com/iotaledger/goshimmer/packages/pow"
+ "github.com/iotaledger/goshimmer/packages/tangle/payload"
+)
+
+const (
+ targetPOW = 10
+ powTimeout = 10 * time.Second
+ totalBlocks = 2000
+)
+
+func TestBlockFactory_BuildBlock(t *testing.T) {
+ if testing.Short() {
+ t.Skip("skipping test in short mode.")
+ }
+ selfLocalIdentity := identity.GenerateLocalIdentity()
+ tangle := NewTestTangle(Identity(selfLocalIdentity))
+ defer tangle.Shutdown()
+ mockOTV := &SimpleMockOnTangleVoting{}
+ tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
+
+ tangle.BlockFactory = NewBlockFactory(
+ tangle,
+ TipSelectorFunc(func(p payload.Payload, countParents int) (parents BlockIDs) {
+ return NewBlockIDs(EmptyBlockID)
+ }),
+ emptyLikeReferences,
+ )
+ tangle.BlockFactory.SetTimeout(powTimeout)
+ defer tangle.BlockFactory.Shutdown()
+
+ // keep track of sequence numbers
+ sequenceNumbers := sync.Map{}
+
+ // attach to event and count
+ countEvents := uint64(0)
+ tangle.BlockFactory.Events.BlockConstructed.Hook(event.NewClosure(func(_ *BlockConstructedEvent) {
+ atomic.AddUint64(&countEvents, 1)
+ }))
+
+ t.Run("CheckProperties", func(t *testing.T) {
+ p := payload.NewGenericDataPayload([]byte("TestCheckProperties"))
+ blk, err := tangle.BlockFactory.IssuePayload(p)
+ require.NoError(t, err)
+
+ // TODO: approval switch: make test case with weak parents
+ assert.NotEmpty(t, blk.ParentsByType(StrongParentType))
+
+ // time in range of 0.1 seconds
+ assert.InDelta(t, clock.SyncedTime().UnixNano(), blk.IssuingTime().UnixNano(), 100000000)
+
+ // check payload
+ assert.Equal(t, p, blk.Payload())
+
+ // check total events and sequence number
+ assert.EqualValues(t, 1, countEvents)
+ assert.EqualValues(t, 0, blk.SequenceNumber())
+
+ sequenceNumbers.Store(blk.SequenceNumber(), true)
+ })
+
+ // create blocks in parallel
+ t.Run("ParallelCreation", func(t *testing.T) {
+ for i := 1; i < totalBlocks; i++ {
+ t.Run("test", func(t *testing.T) {
+ t.Parallel()
+
+ p := payload.NewGenericDataPayload([]byte("TestParallelCreation"))
+ blk, err := tangle.BlockFactory.IssuePayload(p)
+ require.NoError(t, err)
+
+ // TODO: approval switch: make test case with weak parents
+ assert.NotEmpty(t, blk.ParentsByType(StrongParentType))
+
+ // time in range of 0.1 seconds
+ assert.InDelta(t, clock.SyncedTime().UnixNano(), blk.IssuingTime().UnixNano(), 100000000)
+
+ // check payload
+ assert.Equal(t, p, blk.Payload())
+
+ sequenceNumbers.Store(blk.SequenceNumber(), true)
+ })
+ }
+ })
+
+ // check total events and sequence number
+ assert.EqualValues(t, totalBlocks, countEvents)
+
+ max := uint64(0)
+ countSequence := 0
+ sequenceNumbers.Range(func(key, value interface{}) bool {
+ seq := key.(uint64)
+ val := value.(bool)
+ if val != true {
+ return false
+ }
+
+ // check for max sequence number
+ if seq > max {
+ max = seq
+ }
+ countSequence++
+ return true
+ })
+ assert.EqualValues(t, totalBlocks-1, max)
+ assert.EqualValues(t, totalBlocks, countSequence)
+}
+
+func TestBlockFactory_POW(t *testing.T) {
+ mockOTV := &SimpleMockOnTangleVoting{}
+
+ tangle := NewTestTangle()
+ defer tangle.Shutdown()
+ tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
+
+ blkFactory := NewBlockFactory(
+ tangle,
+ TipSelectorFunc(func(p payload.Payload, countParents int) (parentsBlockIDs BlockIDs) {
+ return NewBlockIDs(EmptyBlockID)
+ }),
+ emptyLikeReferences,
+ )
+ defer blkFactory.Shutdown()
+
+ worker := pow.New(1)
+
+ blkFactory.SetWorker(WorkerFunc(func(blkBytes []byte) (uint64, error) {
+ content := blkBytes[:len(blkBytes)-ed25519.SignatureSize-8]
+ return worker.Mine(context.Background(), content, targetPOW)
+ }))
+ blkFactory.SetTimeout(powTimeout)
+ blk, err := blkFactory.IssuePayload(payload.NewGenericDataPayload([]byte("test")))
+ require.NoError(t, err)
+
+ blkBytes, err := blk.Bytes()
+ require.NoError(t, err)
+ content := blkBytes[:len(blkBytes)-ed25519.SignatureSize-8]
+
+ zeroes, err := worker.LeadingZerosWithNonce(content, blk.Nonce())
+ assert.GreaterOrEqual(t, zeroes, targetPOW)
+ assert.NoError(t, err)
+}
+
+func TestBlockFactory_PrepareLikedReferences_1(t *testing.T) {
+ tangle := NewTestTangle()
+ defer tangle.Shutdown()
+
+ testFramework := NewBlockTestFramework(
+ tangle,
+ WithGenesisOutput("O1", 500),
+ WithGenesisOutput("O2", 500),
+ )
+
+ tangle.Setup()
+
+ tangle.Events.Error.Hook(event.NewClosure(func(err error) {
+ t.Logf("Error fired: %v", err)
+ }))
+
+ // Block 1
+ testFramework.CreateBlock("1", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O3", 500))
+
+ // Block 2
+ testFramework.CreateBlock("2", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O5", 500))
+
+ // Block 3
+ testFramework.CreateBlock("3", WithStrongParents("Genesis"), WithInputs("O2", "O1"), WithOutput("O4", 1000))
+ testFramework.IssueBlocks("1", "2", "3").WaitUntilAllTasksProcessed()
+
+ testFramework.RegisterConflictID("1", "1")
+ testFramework.RegisterConflictID("2", "2")
+ testFramework.RegisterConflictID("3", "3")
+
+ mockOTV := &SimpleMockOnTangleVoting{
+ likedConflictMember: map[utxo.TransactionID]LikedConflictMembers{
+ testFramework.ConflictID("3"): {
+ likedConflict: testFramework.ConflictID("2"),
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("1"), testFramework.ConflictID("2")),
+ },
+ testFramework.ConflictID("2"): {
+ likedConflict: testFramework.ConflictID("2"),
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("1"), testFramework.ConflictID("3")),
+ },
+ },
+ }
+
+ tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
+
+ references, err := tangle.BlockFactory.ReferenceProvider.References(nil, NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("2").ID()), time.Now())
+
+ require.NoError(t, err)
+
+ assert.Equal(t, references[ShallowLikeParentType], BlockIDs{testFramework.Block("2").ID(): types.Void})
+}
+
+func TestBlockFactory_PrepareLikedReferences_2(t *testing.T) {
+ tangle := NewTestTangle()
+ defer tangle.Shutdown()
+
+ testFramework := NewBlockTestFramework(
+ tangle,
+ WithGenesisOutput("O1", 500),
+ WithGenesisOutput("O2", 500),
+ )
+
+ tangle.Setup()
+
+ tangle.Events.Error.Hook(event.NewClosure(func(err error) {
+ t.Logf("Error fired: %v", err)
+ }))
+
+ // Block 1
+ testFramework.CreateBlock("1", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O3", 500), WithIssuingTime(time.Now().Add(5*time.Minute)))
+
+ // Block 2
+ testFramework.CreateBlock("2", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O5", 500), WithIssuingTime(time.Now().Add(5*time.Minute)))
+
+ // Block 3
+ testFramework.CreateBlock("3", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O4", 500))
+
+ // Block 4
+ testFramework.CreateBlock("4", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O6", 500))
+ testFramework.IssueBlocks("1", "2", "3", "4").WaitUntilAllTasksProcessed()
+
+ testFramework.RegisterConflictID("1", "1")
+ testFramework.RegisterConflictID("2", "2")
+ testFramework.RegisterConflictID("3", "3")
+ testFramework.RegisterConflictID("4", "4")
+
+ mockOTV := &SimpleMockOnTangleVoting{
+ likedConflictMember: map[utxo.TransactionID]LikedConflictMembers{
+ testFramework.ConflictID("1"): {
+ likedConflict: testFramework.ConflictID("1"),
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("4")),
+ },
+ testFramework.ConflictID("2"): {
+ likedConflict: testFramework.ConflictID("2"),
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("3")),
+ },
+ testFramework.ConflictID("3"): {
+ likedConflict: testFramework.ConflictID("2"),
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("2")),
+ },
+ testFramework.ConflictID("4"): {
+ likedConflict: testFramework.ConflictID("1"),
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("1")),
+ },
+ },
+ }
+
+ tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
+
+ // Test first set of parents
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("2").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("2").ID()),
+ ShallowLikeParentType: NewBlockIDs(testFramework.Block("2").ID()),
+ }, time.Now())
+
+ // Test second set of parents
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("2").ID(), testFramework.Block("1").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(testFramework.Block("2").ID(), testFramework.Block("1").ID()),
+ }, time.Now())
+
+ // Test third set of parents
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("4").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("4").ID()),
+ ShallowLikeParentType: NewBlockIDs(testFramework.Block("1").ID(), testFramework.Block("2").ID()),
+ }, time.Now())
+
+ // Test fourth set of parents
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("1").ID(), testFramework.Block("2").ID(), testFramework.Block("3").ID(), testFramework.Block("4").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(testFramework.Block("1").ID(), testFramework.Block("2").ID(), testFramework.Block("3").ID(), testFramework.Block("4").ID()),
+ ShallowLikeParentType: NewBlockIDs(testFramework.Block("1").ID(), testFramework.Block("2").ID()),
+ }, time.Now())
+
+ // Test empty set of parents
+ checkReferences(t, tangle, nil, NewBlockIDs(), map[ParentsType]BlockIDs{}, time.Now(), true)
+
+ // Add reattachment that is older than the original block.
+ // Block 5 (reattachment)
+ testFramework.CreateBlock("5", WithStrongParents("Genesis"), WithReattachment("1"))
+ testFramework.IssueBlocks("5").WaitUntilAllTasksProcessed()
+
+ // Select oldest attachment of the block.
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("4").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("4").ID()),
+ ShallowLikeParentType: NewBlockIDs(testFramework.Block("2").ID(), testFramework.Block("5").ID()),
+ }, time.Now())
+
+ // Do not return too old like reference: remove strong parent.
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("4").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(testFramework.Block("3").ID()),
+ ShallowLikeParentType: NewBlockIDs(testFramework.Block("2").ID()),
+ }, time.Now().Add(maxParentsTimeDifference))
+
+ // Do not return too old like reference: if there's no other strong parent left, an error should be returned.
+ checkReferences(t, tangle, nil, NewBlockIDs(testFramework.Block("4").ID()), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(),
+ }, time.Now().Add(maxParentsTimeDifference), true)
+}
+
+// Tests if error is returned when non-existing transaction is tried to be liked.
+func TestBlockFactory_PrepareLikedReferences_3(t *testing.T) {
+ tangle := NewTestTangle()
+
+ testFramework := NewBlockTestFramework(
+ tangle,
+ WithGenesisOutput("O1", 500),
+ WithGenesisOutput("O2", 500),
+ )
+
+ tangle.Setup()
+
+ tangle.Events.Error.Hook(event.NewClosure(func(err error) {
+ t.Logf("Error fired: %v", err)
+ }))
+
+ // Block 1
+ testFramework.CreateBlock("1", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O3", 500))
+
+ // Block 2
+ testFramework.CreateBlock("2", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O5", 500))
+
+ // Block 3
+ testFramework.CreateBlock("3", WithStrongParents("Genesis"), WithInputs("O2", "O1"), WithOutput("O4", 1000))
+ testFramework.IssueBlocks("1", "2", "3").WaitUntilAllTasksProcessed()
+
+ testFramework.RegisterConflictID("1", "1")
+ testFramework.RegisterConflictID("2", "2")
+ testFramework.RegisterConflictID("3", "3")
+
+ nonExistingConflictID := randomConflictID()
+
+ mockOTV := &SimpleMockOnTangleVoting{
+ likedConflictMember: map[utxo.TransactionID]LikedConflictMembers{
+ testFramework.ConflictID("2"): {
+ likedConflict: nonExistingConflictID,
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("3"), nonExistingConflictID),
+ },
+ testFramework.ConflictID("3"): {
+ likedConflict: nonExistingConflictID,
+ conflictMembers: set.NewAdvancedSet(testFramework.ConflictID("2"), nonExistingConflictID),
+ },
+ },
+ }
+
+ tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
+
+ tangle.OrphanageManager.Events.BlockOrphaned.Hook(event.NewClosure(func(event *BlockOrphanedEvent) {
+ fmt.Println(event.Block.ID())
+ }))
+
+ references, err := tangle.BlockFactory.ReferenceProvider.References(nil, NewBlockIDs(testFramework.Block("3").ID(), testFramework.Block("2").ID()), time.Now())
+ require.Error(t, err)
+ assert.True(t, references.IsEmpty())
+}
+
+// Tests if weak references are properly constructed from consumed outputs.
+func TestBlockFactory_WeakReferencesConsumed(t *testing.T) {
+ tangle := NewTestTangle()
+
+ testFramework := NewBlockTestFramework(
+ tangle,
+ WithGenesisOutput("G1", 500),
+ WithGenesisOutput("G2", 500),
+ )
+
+ tangle.Setup()
+
+ {
+ testFramework.CreateBlock("1", WithStrongParents("Genesis"), WithInputs("G1"), WithOutput("O1", 500))
+ testFramework.CreateBlock("2", WithStrongParents("Genesis"), WithInputs("G2"), WithOutput("O2", 500))
+ testFramework.CreateBlock("3", WithStrongParents("1", "2"))
+
+ testFramework.IssueBlocks("1", "2", "3").WaitUntilAllTasksProcessed()
+
+ checkReferences(t, tangle, testFramework.Block("1").Payload(), testFramework.Block("1").ParentsByType(StrongParentType), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(EmptyBlockID),
+ }, time.Now())
+
+ checkReferences(t, tangle, testFramework.Block("2").Payload(), testFramework.Block("2").ParentsByType(StrongParentType), map[ParentsType]BlockIDs{
+ StrongParentType: NewBlockIDs(EmptyBlockID),
+ }, time.Now())
+
+ checkReferences(t, tangle, testFramework.Block("3").Payload(), testFramework.Block("3").ParentsByType(StrongParentType), map[ParentsType]BlockIDs{
+ StrongParentType: testFramework.BlockIDs("1", "2"),
+ }, time.Now())
+ }
+
+ {
+ testFramework.CreateBlock("4", WithStrongParents("3"), WithInputs("O1", "O2"), WithOutput("O4", 1000))
+ testFramework.IssueBlocks("4").WaitUntilAllTasksProcessed()
+
+ // Select oldest attachment of the block.
+ checkReferences(t, tangle, testFramework.Block("4").Payload(), testFramework.Block("4").ParentsByType(StrongParentType), map[ParentsType]BlockIDs{
+ StrongParentType: testFramework.BlockIDs("3"),
+ WeakParentType: testFramework.BlockIDs("1", "2"),
+ }, time.Now())
+ }
+}
+
+func checkReferences(t *testing.T, tangle *Tangle, payload payload.Payload, parents BlockIDs, expectedReferences map[ParentsType]BlockIDs, issuingTime time.Time, errorExpected ...bool) {
+ actualReferences, err := tangle.BlockFactory.ReferenceProvider.References(payload, parents, issuingTime)
+ if len(errorExpected) > 0 && errorExpected[0] {
+ require.Error(t, err)
+ return
+ }
+ require.NoError(t, err)
+
+ for _, referenceType := range []ParentsType{StrongParentType, ShallowLikeParentType, WeakParentType} {
+ assert.Equalf(t, expectedReferences[referenceType], actualReferences[referenceType], "references type %s do not match: expected %s - actual %s", referenceType, expectedReferences[referenceType], actualReferences[referenceType])
+ }
+}
diff --git a/packages/tangle/booker.go b/packages/tangle/booker.go
index 7fe934880c..39f8f24278 100644
--- a/packages/tangle/booker.go
+++ b/packages/tangle/booker.go
@@ -17,28 +17,28 @@ import (
// region booker ///////////////////////////////////////////////////////////////////////////////////////////////////////
-// Booker is a Tangle component that takes care of booking Messages and Transactions by assigning them to the
-// corresponding Branch of the ledger state.
+// Booker is a Tangle component that takes care of booking Blocks and Transactions by assigning them to the
+// corresponding Conflict of the ledger state.
type Booker struct {
// Events is a dictionary for the Booker related Events.
Events *BookerEvents
- MarkersManager *BranchMarkersMapper
+ MarkersManager *ConflictMarkersMapper
tangle *Tangle
- payloadBookingMutex *syncutils.DAGMutex[MessageID]
- bookingMutex *syncutils.DAGMutex[MessageID]
+ payloadBookingMutex *syncutils.DAGMutex[BlockID]
+ bookingMutex *syncutils.DAGMutex[BlockID]
sequenceMutex *syncutils.DAGMutex[markers.SequenceID]
}
// NewBooker is the constructor of a Booker.
-func NewBooker(tangle *Tangle) (messageBooker *Booker) {
- messageBooker = &Booker{
+func NewBooker(tangle *Tangle) (blockBooker *Booker) {
+ blockBooker = &Booker{
Events: NewBookerEvents(),
tangle: tangle,
- MarkersManager: NewBranchMarkersMapper(tangle),
- payloadBookingMutex: syncutils.NewDAGMutex[MessageID](),
- bookingMutex: syncutils.NewDAGMutex[MessageID](),
+ MarkersManager: NewConflictMarkersMapper(tangle),
+ payloadBookingMutex: syncutils.NewDAGMutex[BlockID](),
+ bookingMutex: syncutils.NewDAGMutex[BlockID](),
sequenceMutex: syncutils.NewDAGMutex[markers.SequenceID](),
}
@@ -47,51 +47,51 @@ func NewBooker(tangle *Tangle) (messageBooker *Booker) {
// Setup sets up the behavior of the component by making it attach to the relevant events of other components.
func (b *Booker) Setup() {
- b.tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- b.book(event.Message)
+ b.tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ b.book(event.Block)
}))
- b.tangle.Ledger.Events.TransactionBranchIDUpdated.Hook(event.NewClosure(func(event *ledger.TransactionBranchIDUpdatedEvent) {
- if err := b.PropagateForkedBranch(event.TransactionID, event.AddedBranchID, event.RemovedBranchIDs); err != nil {
- b.Events.Error.Trigger(errors.Errorf("failed to propagate Branch update of %s to tangle: %w", event.TransactionID, err))
+ b.tangle.Ledger.Events.TransactionConflictIDUpdated.Hook(event.NewClosure(func(event *ledger.TransactionConflictIDUpdatedEvent) {
+ if err := b.PropagateForkedConflict(event.TransactionID, event.AddedConflictID, event.RemovedConflictIDs); err != nil {
+ b.Events.Error.Trigger(errors.Errorf("failed to propagate Conflict update of %s to tangle: %w", event.TransactionID, err))
}
}))
b.tangle.Ledger.Events.TransactionBooked.Attach(event.NewClosure(func(event *ledger.TransactionBookedEvent) {
- b.processBookedTransaction(event.TransactionID, MessageIDFromContext(event.Context))
+ b.processBookedTransaction(event.TransactionID, BlockIDFromContext(event.Context))
}))
- b.tangle.Booker.Events.MessageBooked.Attach(event.NewClosure(func(event *MessageBookedEvent) {
- b.propagateBooking(event.MessageID)
+ b.tangle.Booker.Events.BlockBooked.Attach(event.NewClosure(func(event *BlockBookedEvent) {
+ b.propagateBooking(event.BlockID)
}))
}
-// MessageBranchIDs returns the BranchIDs of the given Message.
-func (b *Booker) MessageBranchIDs(messageID MessageID) (branchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- if messageID == EmptyMessageID {
+// BlockConflictIDs returns the ConflictIDs of the given Block.
+func (b *Booker) BlockConflictIDs(blockID BlockID) (conflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ if blockID == EmptyBlockID {
return set.NewAdvancedSet[utxo.TransactionID](), nil
}
- if _, _, branchIDs, err = b.messageBookingDetails(messageID); err != nil {
- err = errors.Errorf("failed to retrieve booking details of Message with %s: %w", messageID, err)
+ if _, _, conflictIDs, err = b.blockBookingDetails(blockID); err != nil {
+ err = errors.Errorf("failed to retrieve booking details of Block with %s: %w", blockID, err)
}
return
}
-// PayloadBranchIDs returns the BranchIDs of the payload contained in the given Message.
-func (b *Booker) PayloadBranchIDs(messageID MessageID) (branchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- branchIDs = set.NewAdvancedSet[utxo.TransactionID]()
+// PayloadConflictIDs returns the ConflictIDs of the payload contained in the given Block.
+func (b *Booker) PayloadConflictIDs(blockID BlockID) (conflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ conflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
- b.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- transaction, isTransaction := message.Payload().(utxo.Transaction)
+ b.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ transaction, isTransaction := block.Payload().(utxo.Transaction)
if !isTransaction {
return
}
b.tangle.Ledger.Storage.CachedTransactionMetadata(transaction.ID()).Consume(func(transactionMetadata *ledger.TransactionMetadata) {
- resolvedBranchIDs := b.tangle.Ledger.ConflictDAG.UnconfirmedConflicts(transactionMetadata.BranchIDs())
- branchIDs.AddAll(resolvedBranchIDs)
+ resolvedConflictIDs := b.tangle.Ledger.ConflictDAG.UnconfirmedConflicts(transactionMetadata.ConflictIDs())
+ conflictIDs.AddAll(resolvedConflictIDs)
})
})
@@ -105,34 +105,34 @@ func (b *Booker) Shutdown() {
// region BOOK PAYLOAD LOGIC ///////////////////////////////////////////////////////////////////////////////////////////
-// book books the Payload of a Message.
-func (b *Booker) book(message *Message) {
- b.payloadBookingMutex.Lock(message.ID())
- defer b.payloadBookingMutex.Unlock(message.ID())
+// book books the Payload of a Block.
+func (b *Booker) book(block *Block) {
+ b.payloadBookingMutex.Lock(block.ID())
+ defer b.payloadBookingMutex.Unlock(block.ID())
- b.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- if !b.readyForBooking(message, messageMetadata) {
+ b.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ if !b.readyForBooking(block, blockMetadata) {
return
}
- if tx, isTx := message.Payload().(utxo.Transaction); isTx {
- if !b.bookTransaction(messageMetadata.ID(), tx) {
+ if tx, isTx := block.Payload().(utxo.Transaction); isTx {
+ if !b.bookTransaction(blockMetadata.ID(), tx) {
return
}
}
- if err := b.BookMessage(message, messageMetadata); err != nil {
- b.Events.Error.Trigger(errors.Errorf("failed to book message with %s after booking its payload: %w", message.ID(), err))
+ if err := b.BookBlock(block, blockMetadata); err != nil {
+ b.Events.Error.Trigger(errors.Errorf("failed to book block with %s after booking its payload: %w", block.ID(), err))
}
})
}
-func (b *Booker) bookTransaction(messageID MessageID, tx utxo.Transaction) (success bool) {
- if cachedAttachment, stored := b.tangle.Storage.StoreAttachment(tx.ID(), messageID); stored {
+func (b *Booker) bookTransaction(blockID BlockID, tx utxo.Transaction) (success bool) {
+ if cachedAttachment, stored := b.tangle.Storage.StoreAttachment(tx.ID(), blockID); stored {
cachedAttachment.Release()
}
- if err := b.tangle.Ledger.StoreAndProcessTransaction(MessageIDToContext(context.Background(), messageID), tx); err != nil {
+ if err := b.tangle.Ledger.StoreAndProcessTransaction(BlockIDToContext(context.Background(), blockID), tx); err != nil {
if !errors.Is(err, ledger.ErrTransactionUnsolid) {
// TODO: handle invalid transactions (possibly need to attach to invalid event though)
// delete attachments of transaction
@@ -145,26 +145,26 @@ func (b *Booker) bookTransaction(messageID MessageID, tx utxo.Transaction) (succ
return true
}
-func (b *Booker) processBookedTransaction(id utxo.TransactionID, messageIDToIgnore MessageID) {
+func (b *Booker) processBookedTransaction(id utxo.TransactionID, blockIDToIgnore BlockID) {
b.tangle.Storage.Attachments(id).Consume(func(attachment *Attachment) {
event.Loop.Submit(func() {
- b.tangle.Storage.Message(attachment.MessageID()).Consume(func(message *Message) {
- b.tangle.Storage.MessageMetadata(attachment.MessageID()).Consume(func(messageMetadata *MessageMetadata) {
- if attachment.MessageID() == messageIDToIgnore {
+ b.tangle.Storage.Block(attachment.BlockID()).Consume(func(block *Block) {
+ b.tangle.Storage.BlockMetadata(attachment.BlockID()).Consume(func(blockMetadata *BlockMetadata) {
+ if attachment.BlockID() == blockIDToIgnore {
return
}
- b.payloadBookingMutex.RLock(message.Parents()...)
- b.payloadBookingMutex.Lock(attachment.MessageID())
- defer b.payloadBookingMutex.Unlock(attachment.MessageID())
- defer b.payloadBookingMutex.RUnlock(message.Parents()...)
+ b.payloadBookingMutex.RLock(block.Parents()...)
+ b.payloadBookingMutex.Lock(attachment.BlockID())
+ defer b.payloadBookingMutex.Unlock(attachment.BlockID())
+ defer b.payloadBookingMutex.RUnlock(block.Parents()...)
- if !b.readyForBooking(message, messageMetadata) {
+ if !b.readyForBooking(block, blockMetadata) {
return
}
- if err := b.BookMessage(message, messageMetadata); err != nil {
- b.Events.Error.Trigger(errors.Errorf("failed to book message with %s when processing booked transaction %s: %w", attachment.MessageID(), id, err))
+ if err := b.BookBlock(block, blockMetadata); err != nil {
+ b.Events.Error.Trigger(errors.Errorf("failed to book block with %s when processing booked transaction %s: %w", attachment.BlockID(), id, err))
}
})
})
@@ -172,25 +172,25 @@ func (b *Booker) processBookedTransaction(id utxo.TransactionID, messageIDToIgno
})
}
-func (b *Booker) propagateBooking(messageID MessageID) {
- b.tangle.Storage.Approvers(messageID).Consume(func(approver *Approver) {
+func (b *Booker) propagateBooking(blockID BlockID) {
+ b.tangle.Storage.Children(blockID).Consume(func(child *Child) {
event.Loop.Submit(func() {
- b.tangle.Storage.Message(approver.ApproverMessageID()).Consume(func(approvingMessage *Message) {
- b.book(approvingMessage)
+ b.tangle.Storage.Block(child.ChildBlockID()).Consume(func(approvingBlock *Block) {
+ b.book(approvingBlock)
})
})
})
}
-func (b *Booker) readyForBooking(message *Message, messageMetadata *MessageMetadata) (ready bool) {
- if !messageMetadata.IsSolid() || messageMetadata.IsBooked() {
+func (b *Booker) readyForBooking(block *Block, blockMetadata *BlockMetadata) (ready bool) {
+ if !blockMetadata.IsSolid() || blockMetadata.IsBooked() {
return false
}
ready = true
- message.ForEachParent(func(parent Parent) {
- b.tangle.Storage.MessageMetadata(parent.ID).Consume(func(messageMetadata *MessageMetadata) {
- ready = ready && messageMetadata.IsBooked()
+ block.ForEachParent(func(parent Parent) {
+ b.tangle.Storage.BlockMetadata(parent.ID).Consume(func(blockMetadata *BlockMetadata) {
+ ready = ready && blockMetadata.IsBooked()
})
})
return
@@ -200,183 +200,183 @@ func (b *Booker) readyForBooking(message *Message, messageMetadata *MessageMetad
// region BOOK LOGIC ///////////////////////////////////////////////////////////////////////////////////////////////////
-// BookMessage tries to book the given Message (and potentially its contained Transaction) into the ledger and the Tangle.
-// It fires a MessageBooked event if it succeeds. If the Message is invalid it fires a MessageInvalid event.
-// Booking a message essentially means that parents are examined, the branch of the message determined based on the
-// branch inheritance rules of the like switch and markers are inherited. If everything is valid, the message is marked
-// as booked. Following, the message branch is set, and it can continue in the dataflow to add support to the determined
-// branches and markers.
-func (b *Booker) BookMessage(message *Message, messageMetadata *MessageMetadata) (err error) {
- b.bookingMutex.RLock(message.Parents()...)
- defer b.bookingMutex.RUnlock(message.Parents()...)
- b.bookingMutex.Lock(message.ID())
- defer b.bookingMutex.Unlock(message.ID())
-
- if err = b.inheritBranchIDs(message, messageMetadata); err != nil {
- err = errors.Errorf("failed to inherit BranchIDs of Message with %s: %w", messageMetadata.ID(), err)
+// BookBlock tries to book the given Block (and potentially its contained Transaction) into the ledger and the Tangle.
+// It fires a BlockBooked event if it succeeds. If the Block is invalid it fires a BlockInvalid event.
+// Booking a block essentially means that parents are examined, the conflict of the block determined based on the
+// conflict inheritance rules of the like switch and markers are inherited. If everything is valid, the block is marked
+// as booked. Following, the block conflict is set, and it can continue in the dataflow to add support to the determined
+// conflicts and markers.
+func (b *Booker) BookBlock(block *Block, blockMetadata *BlockMetadata) (err error) {
+ b.bookingMutex.RLock(block.Parents()...)
+ defer b.bookingMutex.RUnlock(block.Parents()...)
+ b.bookingMutex.Lock(block.ID())
+ defer b.bookingMutex.Unlock(block.ID())
+
+ if err = b.inheritConflictIDs(block, blockMetadata); err != nil {
+ err = errors.Errorf("failed to inherit ConflictIDs of Block with %s: %w", blockMetadata.ID(), err)
return
}
- messageMetadata.SetBooked(true)
+ blockMetadata.SetBooked(true)
- b.Events.MessageBooked.Trigger(&MessageBookedEvent{message.ID()})
+ b.Events.BlockBooked.Trigger(&BlockBookedEvent{block.ID()})
return
}
-func (b *Booker) inheritBranchIDs(message *Message, messageMetadata *MessageMetadata) (err error) {
- structureDetails, _, inheritedBranchIDs, bookingDetailsErr := b.determineBookingDetails(message)
+func (b *Booker) inheritConflictIDs(block *Block, blockMetadata *BlockMetadata) (err error) {
+ structureDetails, _, inheritedConflictIDs, bookingDetailsErr := b.determineBookingDetails(block)
if bookingDetailsErr != nil {
- return errors.Errorf("failed to determine booking details of Message with %s: %w", message.ID(), bookingDetailsErr)
+ return errors.Errorf("failed to determine booking details of Block with %s: %w", block.ID(), bookingDetailsErr)
}
- inheritedStructureDetails, newSequenceCreated := b.MarkersManager.InheritStructureDetails(message, structureDetails)
- messageMetadata.SetStructureDetails(inheritedStructureDetails)
+ inheritedStructureDetails, newSequenceCreated := b.MarkersManager.InheritStructureDetails(block, structureDetails)
+ blockMetadata.SetStructureDetails(inheritedStructureDetails)
if newSequenceCreated {
- b.MarkersManager.SetBranchIDs(inheritedStructureDetails.PastMarkers().Marker(), inheritedBranchIDs)
+ b.MarkersManager.SetConflictIDs(inheritedStructureDetails.PastMarkers().Marker(), inheritedConflictIDs)
return nil
}
- // TODO: do not retrieve markers branches once again, determineBookingDetails already does it
- pastMarkersBranchIDs, inheritedStructureDetailsBranchIDsErr := b.branchIDsFromStructureDetails(inheritedStructureDetails)
- if inheritedStructureDetailsBranchIDsErr != nil {
- return errors.Errorf("failed to determine BranchIDs of inherited StructureDetails of Message with %s: %w", message.ID(), inheritedStructureDetailsBranchIDsErr)
+ // TODO: do not retrieve markers conflicts once again, determineBookingDetails already does it
+ pastMarkersConflictIDs, inheritedStructureDetailsConflictIDsErr := b.conflictIDsFromStructureDetails(inheritedStructureDetails)
+ if inheritedStructureDetailsConflictIDsErr != nil {
+ return errors.Errorf("failed to determine ConflictIDs of inherited StructureDetails of Block with %s: %w", block.ID(), inheritedStructureDetailsConflictIDsErr)
}
- addedBranchIDs := inheritedBranchIDs.Clone()
- addedBranchIDs.DeleteAll(pastMarkersBranchIDs)
+ addedConflictIDs := inheritedConflictIDs.Clone()
+ addedConflictIDs.DeleteAll(pastMarkersConflictIDs)
- subtractedBranchIDs := pastMarkersBranchIDs.Clone()
- subtractedBranchIDs.DeleteAll(inheritedBranchIDs)
+ subtractedConflictIDs := pastMarkersConflictIDs.Clone()
+ subtractedConflictIDs.DeleteAll(inheritedConflictIDs)
- if addedBranchIDs.Size()+subtractedBranchIDs.Size() == 0 {
+ if addedConflictIDs.Size()+subtractedConflictIDs.Size() == 0 {
return nil
}
if inheritedStructureDetails.IsPastMarker() {
- b.MarkersManager.SetBranchIDs(inheritedStructureDetails.PastMarkers().Marker(), inheritedBranchIDs)
+ b.MarkersManager.SetConflictIDs(inheritedStructureDetails.PastMarkers().Marker(), inheritedConflictIDs)
return nil
}
- if addedBranchIDs.Size() != 0 {
- messageMetadata.SetAddedBranchIDs(addedBranchIDs)
+ if addedConflictIDs.Size() != 0 {
+ blockMetadata.SetAddedConflictIDs(addedConflictIDs)
}
- if subtractedBranchIDs.Size() != 0 {
- messageMetadata.SetSubtractedBranchIDs(subtractedBranchIDs)
+ if subtractedConflictIDs.Size() != 0 {
+ blockMetadata.SetSubtractedConflictIDs(subtractedConflictIDs)
}
return nil
}
-// determineBookingDetails determines the booking details of an unbooked Message.
-func (b *Booker) determineBookingDetails(message *Message) (parentsStructureDetails []*markers.StructureDetails, parentsPastMarkersBranchIDs, inheritedBranchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- inheritedBranchIDs, err = b.PayloadBranchIDs(message.ID())
+// determineBookingDetails determines the booking details of an unbooked Block.
+func (b *Booker) determineBookingDetails(block *Block) (parentsStructureDetails []*markers.StructureDetails, parentsPastMarkersConflictIDs, inheritedConflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ inheritedConflictIDs, err = b.PayloadConflictIDs(block.ID())
if err != nil {
return
}
- parentsStructureDetails, parentsPastMarkersBranchIDs, strongParentsBranchIDs, bookingDetailsErr := b.collectStrongParentsBookingDetails(message)
+ parentsStructureDetails, parentsPastMarkersConflictIDs, strongParentsConflictIDs, bookingDetailsErr := b.collectStrongParentsBookingDetails(block)
if bookingDetailsErr != nil {
- err = errors.Errorf("failed to retrieve booking details of parents of Message with %s: %w", message.ID(), bookingDetailsErr)
+ err = errors.Errorf("failed to retrieve booking details of parents of Block with %s: %w", block.ID(), bookingDetailsErr)
return
}
- weakPayloadBranchIDs, weakParentsErr := b.collectWeakParentsBranchIDs(message)
+ weakPayloadConflictIDs, weakParentsErr := b.collectWeakParentsConflictIDs(block)
if weakParentsErr != nil {
- return nil, nil, nil, errors.Errorf("failed to collect weak parents of %s: %w", message.ID(), weakParentsErr)
+ return nil, nil, nil, errors.Errorf("failed to collect weak parents of %s: %w", block.ID(), weakParentsErr)
}
- likedBranchIDs, dislikedBranchIDs, shallowLikeErr := b.collectShallowLikedParentsBranchIDs(message)
+ likedConflictIDs, dislikedConflictIDs, shallowLikeErr := b.collectShallowLikedParentsConflictIDs(block)
if shallowLikeErr != nil {
- return nil, nil, nil, errors.Errorf("failed to collect shallow likes of %s: %w", message.ID(), shallowLikeErr)
+ return nil, nil, nil, errors.Errorf("failed to collect shallow likes of %s: %w", block.ID(), shallowLikeErr)
}
- inheritedBranchIDs.AddAll(strongParentsBranchIDs)
- inheritedBranchIDs.AddAll(weakPayloadBranchIDs)
- inheritedBranchIDs.AddAll(likedBranchIDs)
- inheritedBranchIDs.DeleteAll(b.tangle.Ledger.Utils.BranchIDsInFutureCone(dislikedBranchIDs))
+ inheritedConflictIDs.AddAll(strongParentsConflictIDs)
+ inheritedConflictIDs.AddAll(weakPayloadConflictIDs)
+ inheritedConflictIDs.AddAll(likedConflictIDs)
+ inheritedConflictIDs.DeleteAll(b.tangle.Ledger.Utils.ConflictIDsInFutureCone(dislikedConflictIDs))
- return parentsStructureDetails, parentsPastMarkersBranchIDs, b.tangle.Ledger.ConflictDAG.UnconfirmedConflicts(inheritedBranchIDs), nil
+ return parentsStructureDetails, parentsPastMarkersConflictIDs, b.tangle.Ledger.ConflictDAG.UnconfirmedConflicts(inheritedConflictIDs), nil
}
-// messageBookingDetails returns the Branch and Marker related details of the given Message.
-func (b *Booker) messageBookingDetails(messageID MessageID) (structureDetails *markers.StructureDetails, pastMarkersBranchIDs, messageBranchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- pastMarkersBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
- messageBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
+// blockBookingDetails returns the Conflict and Marker related details of the given Block.
+func (b *Booker) blockBookingDetails(blockID BlockID) (structureDetails *markers.StructureDetails, pastMarkersConflictIDs, blockConflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ pastMarkersConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ blockConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
- if !b.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- structureDetails = messageMetadata.StructureDetails()
- if pastMarkersBranchIDs, err = b.branchIDsFromStructureDetails(structureDetails); err != nil {
- err = errors.Errorf("failed to retrieve BranchIDs from Structure Details %s of message with %s: %w", structureDetails, messageMetadata.ID(), err)
+ if !b.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ structureDetails = blockMetadata.StructureDetails()
+ if pastMarkersConflictIDs, err = b.conflictIDsFromStructureDetails(structureDetails); err != nil {
+ err = errors.Errorf("failed to retrieve ConflictIDs from Structure Details %s of block with %s: %w", structureDetails, blockMetadata.ID(), err)
return
}
- messageBranchIDs.AddAll(pastMarkersBranchIDs)
+ blockConflictIDs.AddAll(pastMarkersConflictIDs)
- if addedBranchIDs := messageMetadata.AddedBranchIDs(); !addedBranchIDs.IsEmpty() {
- messageBranchIDs.AddAll(addedBranchIDs)
+ if addedConflictIDs := blockMetadata.AddedConflictIDs(); !addedConflictIDs.IsEmpty() {
+ blockConflictIDs.AddAll(addedConflictIDs)
}
- if subtractedBranchIDs := messageMetadata.SubtractedBranchIDs(); !subtractedBranchIDs.IsEmpty() {
- messageBranchIDs.DeleteAll(subtractedBranchIDs)
+ if subtractedConflictIDs := blockMetadata.SubtractedConflictIDs(); !subtractedConflictIDs.IsEmpty() {
+ blockConflictIDs.DeleteAll(subtractedConflictIDs)
}
}) {
- err = errors.Errorf("failed to retrieve MessageMetadata with %s: %w", messageID, cerrors.ErrFatal)
+ err = errors.Errorf("failed to retrieve BlockMetadata with %s: %w", blockID, cerrors.ErrFatal)
}
- return structureDetails, pastMarkersBranchIDs, messageBranchIDs, err
+ return structureDetails, pastMarkersConflictIDs, blockConflictIDs, err
}
-func (b *Booker) branchIDsFromMetadata(meta *MessageMetadata) (branchIDs utxo.TransactionIDs, err error) {
- if branchIDs, err = b.branchIDsFromStructureDetails(meta.StructureDetails()); err != nil {
- return nil, errors.Errorf("failed to retrieve BranchIDs from Structure Details %s of message with %s: %w", meta.StructureDetails(), meta.ID(), err)
+func (b *Booker) conflictIDsFromMetadata(meta *BlockMetadata) (conflictIDs utxo.TransactionIDs, err error) {
+ if conflictIDs, err = b.conflictIDsFromStructureDetails(meta.StructureDetails()); err != nil {
+ return nil, errors.Errorf("failed to retrieve ConflictIDs from Structure Details %s of block with %s: %w", meta.StructureDetails(), meta.ID(), err)
}
- if addedBranchIDs := meta.AddedBranchIDs(); !addedBranchIDs.IsEmpty() {
- branchIDs.AddAll(addedBranchIDs)
+ if addedConflictIDs := meta.AddedConflictIDs(); !addedConflictIDs.IsEmpty() {
+ conflictIDs.AddAll(addedConflictIDs)
}
- if subtractedBranchIDs := meta.SubtractedBranchIDs(); !subtractedBranchIDs.IsEmpty() {
- branchIDs.DeleteAll(subtractedBranchIDs)
+ if subtractedConflictIDs := meta.SubtractedConflictIDs(); !subtractedConflictIDs.IsEmpty() {
+ conflictIDs.DeleteAll(subtractedConflictIDs)
}
- return branchIDs, nil
+ return conflictIDs, nil
}
-// branchIDsFromStructureDetails returns the BranchIDs from StructureDetails.
-func (b *Booker) branchIDsFromStructureDetails(structureDetails *markers.StructureDetails) (structureDetailsBranchIDs utxo.TransactionIDs, err error) {
+// conflictIDsFromStructureDetails returns the ConflictIDs from StructureDetails.
+func (b *Booker) conflictIDsFromStructureDetails(structureDetails *markers.StructureDetails) (structureDetailsConflictIDs utxo.TransactionIDs, err error) {
if structureDetails == nil {
return nil, errors.Errorf("StructureDetails is empty: %w", cerrors.ErrFatal)
}
- structureDetailsBranchIDs = utxo.NewTransactionIDs()
+ structureDetailsConflictIDs = utxo.NewTransactionIDs()
// obtain all the Markers
structureDetails.PastMarkers().ForEach(func(sequenceID markers.SequenceID, index markers.Index) bool {
- branchIDs := b.MarkersManager.BranchIDs(markers.NewMarker(sequenceID, index))
- structureDetailsBranchIDs.AddAll(branchIDs)
+ conflictIDs := b.MarkersManager.ConflictIDs(markers.NewMarker(sequenceID, index))
+ structureDetailsConflictIDs.AddAll(conflictIDs)
return true
})
return
}
-// collectStrongParentsBookingDetails returns the booking details of a Message's strong parents.
-func (b *Booker) collectStrongParentsBookingDetails(message *Message) (parentsStructureDetails []*markers.StructureDetails, parentsPastMarkersBranchIDs, parentsBranchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+// collectStrongParentsBookingDetails returns the booking details of a Block's strong parents.
+func (b *Booker) collectStrongParentsBookingDetails(block *Block) (parentsStructureDetails []*markers.StructureDetails, parentsPastMarkersConflictIDs, parentsConflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
parentsStructureDetails = make([]*markers.StructureDetails, 0)
- parentsPastMarkersBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
- parentsBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ parentsPastMarkersConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ parentsConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
- message.ForEachParentByType(StrongParentType, func(parentMessageID MessageID) bool {
- parentStructureDetails, parentPastMarkersBranchIDs, parentBranchIDs, parentErr := b.messageBookingDetails(parentMessageID)
+ block.ForEachParentByType(StrongParentType, func(parentBlockID BlockID) bool {
+ parentStructureDetails, parentPastMarkersConflictIDs, parentConflictIDs, parentErr := b.blockBookingDetails(parentBlockID)
if parentErr != nil {
- err = errors.Errorf("failed to retrieve booking details of Message with %s: %w", parentMessageID, parentErr)
+ err = errors.Errorf("failed to retrieve booking details of Block with %s: %w", parentBlockID, parentErr)
return false
}
parentsStructureDetails = append(parentsStructureDetails, parentStructureDetails)
- parentsPastMarkersBranchIDs.AddAll(parentPastMarkersBranchIDs)
- parentsBranchIDs.AddAll(parentBranchIDs)
+ parentsPastMarkersConflictIDs.AddAll(parentPastMarkersConflictIDs)
+ parentsConflictIDs.AddAll(parentConflictIDs)
return true
})
@@ -384,162 +384,161 @@ func (b *Booker) collectStrongParentsBookingDetails(message *Message) (parentsSt
return
}
-// collectShallowLikedParentsBranchIDs adds the BranchIDs of the shallow like reference and removes all its conflicts from
-// the supplied ArithmeticBranchIDs.
-func (b *Booker) collectShallowLikedParentsBranchIDs(message *Message) (collectedLikedBranchIDs, collectedDislikedBranchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- collectedLikedBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
- collectedDislikedBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
- message.ForEachParentByType(ShallowLikeParentType, func(parentMessageID MessageID) bool {
- if !b.tangle.Storage.Message(parentMessageID).Consume(func(message *Message) {
- transaction, isTransaction := message.Payload().(utxo.Transaction)
+// collectShallowLikedParentsConflictIDs adds the ConflictIDs of the shallow like reference and removes all its conflicts from
+// the supplied ArithmeticConflictIDs.
+func (b *Booker) collectShallowLikedParentsConflictIDs(block *Block) (collectedLikedConflictIDs, collectedDislikedConflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ collectedLikedConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ collectedDislikedConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ block.ForEachParentByType(ShallowLikeParentType, func(parentBlockID BlockID) bool {
+ if !b.tangle.Storage.Block(parentBlockID).Consume(func(block *Block) {
+ transaction, isTransaction := block.Payload().(utxo.Transaction)
if !isTransaction {
- err = errors.Errorf("%s referenced by a shallow like of %s does not contain a Transaction: %w", parentMessageID, message.ID(), cerrors.ErrFatal)
+ err = errors.Errorf("%s referenced by a shallow like of %s does not contain a Transaction: %w", parentBlockID, block.ID(), cerrors.ErrFatal)
return
}
- likedBranchIDs, likedBranchesErr := b.tangle.Ledger.Utils.TransactionBranchIDs(transaction.ID())
- if likedBranchesErr != nil {
- err = errors.Errorf("failed to retrieve liked BranchIDs of Transaction with %s contained in %s referenced by a shallow like of %s: %w", transaction.ID(), parentMessageID, message.ID(), likedBranchesErr)
+ likedConflictIDs, likedConflictsErr := b.tangle.Ledger.Utils.TransactionConflictIDs(transaction.ID())
+ if likedConflictsErr != nil {
+ err = errors.Errorf("failed to retrieve liked ConflictIDs of Transaction with %s contained in %s referenced by a shallow like of %s: %w", transaction.ID(), parentBlockID, block.ID(), likedConflictsErr)
return
}
- collectedLikedBranchIDs.AddAll(likedBranchIDs)
+ collectedLikedConflictIDs.AddAll(likedConflictIDs)
for it := b.tangle.Ledger.Utils.ConflictingTransactions(transaction.ID()).Iterator(); it.HasNext(); {
conflictingTransactionID := it.Next()
- dislikedBranches, dislikedBranchesErr := b.tangle.Ledger.Utils.TransactionBranchIDs(conflictingTransactionID)
- if dislikedBranchesErr != nil {
- err = errors.Errorf("failed to retrieve disliked BranchIDs of Transaction with %s contained in %s referenced by a shallow like of %s: %w", conflictingTransactionID, parentMessageID, message.ID(), dislikedBranchesErr)
+ dislikedConflicts, dislikedConflictsErr := b.tangle.Ledger.Utils.TransactionConflictIDs(conflictingTransactionID)
+ if dislikedConflictsErr != nil {
+ err = errors.Errorf("failed to retrieve disliked ConflictIDs of Transaction with %s contained in %s referenced by a shallow like of %s: %w", conflictingTransactionID, parentBlockID, block.ID(), dislikedConflictsErr)
return
}
- collectedDislikedBranchIDs.AddAll(dislikedBranches)
+ collectedDislikedConflictIDs.AddAll(dislikedConflicts)
}
}) {
- err = errors.Errorf("failed to load MessageMetadata of shallow like with %s: %w", parentMessageID, cerrors.ErrFatal)
+ err = errors.Errorf("failed to load BlockMetadata of shallow like with %s: %w", parentBlockID, cerrors.ErrFatal)
}
return err == nil
})
- return collectedLikedBranchIDs, collectedDislikedBranchIDs, err
+ return collectedLikedConflictIDs, collectedDislikedConflictIDs, err
}
-// collectShallowDislikedParentsBranchIDs removes the BranchIDs of the shallow dislike reference and all its conflicts from
-// the supplied ArithmeticBranchIDs.
-func (b *Booker) collectWeakParentsBranchIDs(message *Message) (payloadBranchIDs *set.AdvancedSet[utxo.TransactionID], err error) {
- payloadBranchIDs = set.NewAdvancedSet[utxo.TransactionID]()
- message.ForEachParentByType(WeakParentType, func(parentMessageID MessageID) bool {
- if !b.tangle.Storage.Message(parentMessageID).Consume(func(message *Message) {
- transaction, isTransaction := message.Payload().(utxo.Transaction)
- // Payloads other than Transactions are MasterBranch
+// collectShallowDislikedParentsConflictIDs removes the ConflictIDs of the shallow dislike reference and all its conflicts from
+// the supplied ArithmeticConflictIDs.
+func (b *Booker) collectWeakParentsConflictIDs(block *Block) (payloadConflictIDs *set.AdvancedSet[utxo.TransactionID], err error) {
+ payloadConflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
+ block.ForEachParentByType(WeakParentType, func(parentBlockID BlockID) bool {
+ if !b.tangle.Storage.Block(parentBlockID).Consume(func(block *Block) {
+ transaction, isTransaction := block.Payload().(utxo.Transaction)
+ // Payloads other than Transactions are MasterConflict
if !isTransaction {
return
}
- weakReferencePayloadBranch, weakReferenceErr := b.tangle.Ledger.Utils.TransactionBranchIDs(transaction.ID())
+ weakReferencePayloadConflict, weakReferenceErr := b.tangle.Ledger.Utils.TransactionConflictIDs(transaction.ID())
if weakReferenceErr != nil {
- err = errors.Errorf("failed to retrieve BranchIDs of Transaction with %s contained in %s weakly referenced by %s: %w", transaction.ID(), parentMessageID, message.ID(), weakReferenceErr)
+ err = errors.Errorf("failed to retrieve ConflictIDs of Transaction with %s contained in %s weakly referenced by %s: %w", transaction.ID(), parentBlockID, block.ID(), weakReferenceErr)
return
}
- payloadBranchIDs.AddAll(weakReferencePayloadBranch)
+ payloadConflictIDs.AddAll(weakReferencePayloadConflict)
}) {
- err = errors.Errorf("failed to load MessageMetadata of %s weakly referenced by %s: %w", parentMessageID, message.ID(), cerrors.ErrFatal)
+ err = errors.Errorf("failed to load BlockMetadata of %s weakly referenced by %s: %w", parentBlockID, block.ID(), cerrors.ErrFatal)
}
return err == nil
})
- return payloadBranchIDs, err
+ return payloadConflictIDs, err
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region FORK LOGIC ///////////////////////////////////////////////////////////////////////////////////////////////////
-// PropagateForkedBranch propagates the forked BranchID to the future cone of the attachments of the given Transaction.
-func (b *Booker) PropagateForkedBranch(transactionID utxo.TransactionID, addedBranchID utxo.TransactionID, removedBranchIDs *set.AdvancedSet[utxo.TransactionID]) (err error) {
- b.tangle.Utils.WalkMessageMetadata(func(messageMetadata *MessageMetadata, messageWalker *walker.Walker[MessageID]) {
-
- updated, forkErr := b.propagateForkedBranch(messageMetadata, addedBranchID, removedBranchIDs)
+// PropagateForkedConflict propagates the forked ConflictID to the future cone of the attachments of the given Transaction.
+func (b *Booker) PropagateForkedConflict(transactionID utxo.TransactionID, addedConflictID utxo.TransactionID, removedConflictIDs *set.AdvancedSet[utxo.TransactionID]) (err error) {
+ b.tangle.Utils.WalkBlockMetadata(func(blockMetadata *BlockMetadata, blockWalker *walker.Walker[BlockID]) {
+ updated, forkErr := b.propagateForkedConflict(blockMetadata, addedConflictID, removedConflictIDs)
if forkErr != nil {
- messageWalker.StopWalk()
- err = errors.Errorf("failed to propagate forked BranchID %s to future cone of %s: %w", addedBranchID, messageMetadata.ID(), forkErr)
+ blockWalker.StopWalk()
+ err = errors.Errorf("failed to propagate forked ConflictID %s to future cone of %s: %w", addedConflictID, blockMetadata.ID(), forkErr)
return
}
if !updated {
return
}
- b.Events.MessageBranchUpdated.Trigger(&MessageBranchUpdatedEvent{
- MessageID: messageMetadata.ID(),
- BranchID: addedBranchID,
+ b.Events.BlockConflictUpdated.Trigger(&BlockConflictUpdatedEvent{
+ BlockID: blockMetadata.ID(),
+ ConflictID: addedConflictID,
})
- for approvingMessageID := range b.tangle.Utils.ApprovingMessageIDs(messageMetadata.ID(), StrongApprover) {
- messageWalker.Push(approvingMessageID)
+ for approvingBlockID := range b.tangle.Utils.ApprovingBlockIDs(blockMetadata.ID(), StrongChild) {
+ blockWalker.Push(approvingBlockID)
}
- }, b.tangle.Storage.AttachmentMessageIDs(transactionID), false)
+ }, b.tangle.Storage.AttachmentBlockIDs(transactionID), false)
return
}
-func (b *Booker) propagateForkedBranch(messageMetadata *MessageMetadata, addedBranchID utxo.TransactionID, removedBranchIDs *set.AdvancedSet[utxo.TransactionID]) (propagated bool, err error) {
- b.bookingMutex.Lock(messageMetadata.ID())
- defer b.bookingMutex.Unlock(messageMetadata.ID())
+func (b *Booker) propagateForkedConflict(blockMetadata *BlockMetadata, addedConflictID utxo.TransactionID, removedConflictIDs *set.AdvancedSet[utxo.TransactionID]) (propagated bool, err error) {
+ b.bookingMutex.Lock(blockMetadata.ID())
+ defer b.bookingMutex.Unlock(blockMetadata.ID())
- if !messageMetadata.IsBooked() {
+ if !blockMetadata.IsBooked() {
return false, nil
}
- if structureDetails := messageMetadata.StructureDetails(); structureDetails.IsPastMarker() {
- if err = b.propagateForkedTransactionToMarkerFutureCone(structureDetails.PastMarkers().Marker(), addedBranchID, removedBranchIDs); err != nil {
- return false, errors.Errorf("failed to propagate conflict%s to future cone of %s: %w", addedBranchID, structureDetails.PastMarkers().Marker(), err)
+ if structureDetails := blockMetadata.StructureDetails(); structureDetails.IsPastMarker() {
+ if err = b.propagateForkedTransactionToMarkerFutureCone(structureDetails.PastMarkers().Marker(), addedConflictID, removedConflictIDs); err != nil {
+ return false, errors.Errorf("failed to propagate conflict%s to future cone of %s: %w", addedConflictID, structureDetails.PastMarkers().Marker(), err)
}
return true, nil
}
- return b.updateMessageBranches(messageMetadata, addedBranchID, removedBranchIDs)
+ return b.updateBlockConflicts(blockMetadata, addedConflictID, removedConflictIDs)
}
-func (b *Booker) updateMessageBranches(messageMetadata *MessageMetadata, addedBranch utxo.TransactionID, parentConflicts utxo.TransactionIDs) (updated bool, err error) {
- messageMetadata.StructureDetails().PastMarkers().ForEachSorted(func(sequenceID markers.SequenceID, _ markers.Index) bool {
+func (b *Booker) updateBlockConflicts(blockMetadata *BlockMetadata, addedConflict utxo.TransactionID, parentConflicts utxo.TransactionIDs) (updated bool, err error) {
+ blockMetadata.StructureDetails().PastMarkers().ForEachSorted(func(sequenceID markers.SequenceID, _ markers.Index) bool {
b.sequenceMutex.RLock(sequenceID)
return true
})
defer func() {
- messageMetadata.StructureDetails().PastMarkers().ForEachSorted(func(sequenceID markers.SequenceID, _ markers.Index) bool {
+ blockMetadata.StructureDetails().PastMarkers().ForEachSorted(func(sequenceID markers.SequenceID, _ markers.Index) bool {
b.sequenceMutex.RUnlock(sequenceID)
return true
})
}()
- branchIDs, err := b.branchIDsFromMetadata(messageMetadata)
+ conflictIDs, err := b.conflictIDsFromMetadata(blockMetadata)
if err != nil {
- return false, errors.Errorf("failed to retrieve BranchIDs of %s: %w", messageMetadata.ID(), err)
+ return false, errors.Errorf("failed to retrieve ConflictIDs of %s: %w", blockMetadata.ID(), err)
}
- if !branchIDs.HasAll(parentConflicts) {
+ if !conflictIDs.HasAll(parentConflicts) {
return false, nil
}
- if !messageMetadata.AddBranchID(addedBranch) {
+ if !blockMetadata.AddConflictID(addedConflict) {
return false, nil
}
return true, nil
}
-// propagateForkedTransactionToMarkerFutureCone propagates a newly created BranchID into the future cone of the given Marker.
-func (b *Booker) propagateForkedTransactionToMarkerFutureCone(marker markers.Marker, branchID utxo.TransactionID, removedBranchIDs *set.AdvancedSet[utxo.TransactionID]) (err error) {
+// propagateForkedTransactionToMarkerFutureCone propagates a newly created ConflictID into the future cone of the given Marker.
+func (b *Booker) propagateForkedTransactionToMarkerFutureCone(marker markers.Marker, conflictID utxo.TransactionID, removedConflictIDs *set.AdvancedSet[utxo.TransactionID]) (err error) {
markerWalker := walker.New[markers.Marker](false)
markerWalker.Push(marker)
for markerWalker.HasNext() {
currentMarker := markerWalker.Next()
- if err = b.forkSingleMarker(currentMarker, branchID, removedBranchIDs, markerWalker); err != nil {
- err = errors.Errorf("failed to propagate Conflict%s to Messages approving %s: %w", branchID, currentMarker, err)
+ if err = b.forkSingleMarker(currentMarker, conflictID, removedConflictIDs, markerWalker); err != nil {
+ err = errors.Errorf("failed to propagate Conflict%s to Blocks approving %s: %w", conflictID, currentMarker, err)
return
}
}
@@ -547,34 +546,34 @@ func (b *Booker) propagateForkedTransactionToMarkerFutureCone(marker markers.Mar
return
}
-// forkSingleMarker propagates a newly created BranchID to a single marker and queues the next elements that need to be
+// forkSingleMarker propagates a newly created ConflictID to a single marker and queues the next elements that need to be
// visited.
-func (b *Booker) forkSingleMarker(currentMarker markers.Marker, newBranchID utxo.TransactionID, removedBranchIDs *set.AdvancedSet[utxo.TransactionID], markerWalker *walker.Walker[markers.Marker]) (err error) {
+func (b *Booker) forkSingleMarker(currentMarker markers.Marker, newConflictID utxo.TransactionID, removedConflictIDs *set.AdvancedSet[utxo.TransactionID], markerWalker *walker.Walker[markers.Marker]) (err error) {
b.sequenceMutex.Lock(currentMarker.SequenceID())
defer b.sequenceMutex.Unlock(currentMarker.SequenceID())
- // update BranchID mapping
- newBranchIDs := b.MarkersManager.BranchIDs(currentMarker)
- if !newBranchIDs.HasAll(removedBranchIDs) {
+ // update ConflictID mapping
+ newConflictIDs := b.MarkersManager.ConflictIDs(currentMarker)
+ if !newConflictIDs.HasAll(removedConflictIDs) {
return nil
}
- if !newBranchIDs.Add(newBranchID) {
+ if !newConflictIDs.Add(newConflictID) {
return nil
}
- if !b.MarkersManager.SetBranchIDs(currentMarker, newBranchIDs) {
+ if !b.MarkersManager.SetConflictIDs(currentMarker, newConflictIDs) {
return nil
}
// trigger event
- b.Events.MarkerBranchAdded.Trigger(&MarkerBranchAddedEvent{
- Marker: currentMarker,
- NewBranchID: newBranchID,
+ b.Events.MarkerConflictAdded.Trigger(&MarkerConflictAddedEvent{
+ Marker: currentMarker,
+ NewConflictID: newConflictID,
})
- // propagate updates to later BranchID mappings of the same sequence.
- b.MarkersManager.ForEachBranchIDMapping(currentMarker.SequenceID(), currentMarker.Index(), func(mappedMarker markers.Marker, _ *set.AdvancedSet[utxo.TransactionID]) {
+ // propagate updates to later ConflictID mappings of the same sequence.
+ b.MarkersManager.ForEachConflictIDMapping(currentMarker.SequenceID(), currentMarker.Index(), func(mappedMarker markers.Marker, _ *set.AdvancedSet[utxo.TransactionID]) {
markerWalker.Push(mappedMarker)
})
diff --git a/packages/tangle/booker_test.go b/packages/tangle/booker_test.go
index fd6445779d..01c85dd308 100644
--- a/packages/tangle/booker_test.go
+++ b/packages/tangle/booker_test.go
@@ -24,58 +24,58 @@ func TestScenario_1(t *testing.T) {
tangle := NewTestTangle(WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("G", 3),
)
tangle.Setup()
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1), WithOutput("B", 1), WithOutput("C", 1))
- testFramework.CreateMessage("Message2", WithStrongParents("Genesis", "Message1"), WithInputs("B", "C"), WithOutput("E", 2))
- testFramework.CreateMessage("Message3", WithStrongParents("Message1", "Message2"), WithReattachment("Message2"))
- testFramework.CreateMessage("Message4", WithStrongParents("Genesis", "Message1"), WithInputs("A"), WithOutput("D", 1))
- testFramework.CreateMessage("Message5", WithStrongParents("Message1", "Message2"), WithInputs("A"), WithOutput("F", 1))
- testFramework.CreateMessage("Message6", WithStrongParents("Message2", "Message5"), WithInputs("E", "F"), WithOutput("H", 3))
- testFramework.CreateMessage("Message7", WithStrongParents("Message4", "Message5"), WithReattachment("Message2"))
- testFramework.CreateMessage("Message8", WithStrongParents("Message4", "Message5"), WithInputs("F", "D"), WithOutput("I", 2))
- testFramework.CreateMessage("Message9", WithStrongParents("Message4", "Message6"), WithInputs("H"), WithOutput("J", 3))
-
- testFramework.RegisterBranchID("Branch4", "Message4")
- testFramework.RegisterBranchID("Branch5", "Message5")
-
- testFramework.RegisterBranchID("Branch6", "Message6")
- testFramework.RegisterBranchID("Branch8", "Message8")
-
- testFramework.IssueMessages("Message1", "Message2", "Message3", "Message4", "Message5", "Message6", "Message7", "Message8", "Message9").WaitUntilAllTasksProcessed()
- // Message8 combines conflicting branches on UTXO level
- for _, messageAlias := range []string{"Message7", "Message8", "Message9"} {
- assert.Truef(t, testFramework.MessageMetadata(messageAlias).IsSubjectivelyInvalid(), "%s not subjectively invalid", messageAlias)
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1), WithOutput("B", 1), WithOutput("C", 1))
+ testFramework.CreateBlock("Block2", WithStrongParents("Genesis", "Block1"), WithInputs("B", "C"), WithOutput("E", 2))
+ testFramework.CreateBlock("Block3", WithStrongParents("Block1", "Block2"), WithReattachment("Block2"))
+ testFramework.CreateBlock("Block4", WithStrongParents("Genesis", "Block1"), WithInputs("A"), WithOutput("D", 1))
+ testFramework.CreateBlock("Block5", WithStrongParents("Block1", "Block2"), WithInputs("A"), WithOutput("F", 1))
+ testFramework.CreateBlock("Block6", WithStrongParents("Block2", "Block5"), WithInputs("E", "F"), WithOutput("H", 3))
+ testFramework.CreateBlock("Block7", WithStrongParents("Block4", "Block5"), WithReattachment("Block2"))
+ testFramework.CreateBlock("Block8", WithStrongParents("Block4", "Block5"), WithInputs("F", "D"), WithOutput("I", 2))
+ testFramework.CreateBlock("Block9", WithStrongParents("Block4", "Block6"), WithInputs("H"), WithOutput("J", 3))
+
+ testFramework.RegisterConflictID("Conflict4", "Block4")
+ testFramework.RegisterConflictID("Conflict5", "Block5")
+
+ testFramework.RegisterConflictID("Conflict6", "Block6")
+ testFramework.RegisterConflictID("Conflict8", "Block8")
+
+ testFramework.IssueBlocks("Block1", "Block2", "Block3", "Block4", "Block5", "Block6", "Block7", "Block8", "Block9").WaitUntilAllTasksProcessed()
+ // Block8 combines conflicting conflicts on UTXO level
+ for _, blockAlias := range []string{"Block7", "Block8", "Block9"} {
+ assert.Truef(t, testFramework.BlockMetadata(blockAlias).IsSubjectivelyInvalid(), "%s not subjectively invalid", blockAlias)
}
- for _, alias := range []string{"Message1", "Message2", "Message3", "Message4", "Message5", "Message6", "Message7", "Message8", "Message9"} {
- fmt.Println(alias, lo.PanicOnErr(tangle.Booker.MessageBranchIDs(testFramework.Message(alias).ID())))
- tangle.Storage.MessageMetadata(testFramework.Message(alias).ID()).Consume(func(messageMetadata *MessageMetadata) {
- fmt.Println(alias, "added", messageMetadata.AddedBranchIDs(), "subtracted", messageMetadata.SubtractedBranchIDs())
- fmt.Println(alias, "all", messageMetadata.StructureDetails())
+ for _, alias := range []string{"Block1", "Block2", "Block3", "Block4", "Block5", "Block6", "Block7", "Block8", "Block9"} {
+ fmt.Println(alias, lo.PanicOnErr(tangle.Booker.BlockConflictIDs(testFramework.Block(alias).ID())))
+ tangle.Storage.BlockMetadata(testFramework.Block(alias).ID()).Consume(func(blockMetadata *BlockMetadata) {
+ fmt.Println(alias, "added", blockMetadata.AddedConflictIDs(), "subtracted", blockMetadata.SubtractedConflictIDs())
+ fmt.Println(alias, "all", blockMetadata.StructureDetails())
meta := testFramework.TransactionMetadata(alias)
if meta != nil {
- fmt.Println("UTXO", meta.BranchIDs())
+ fmt.Println("UTXO", meta.ConflictIDs())
}
fmt.Println("-----------------------------------------------------")
})
}
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": utxo.NewTransactionIDs(),
- "Message3": utxo.NewTransactionIDs(),
- "Message2": utxo.NewTransactionIDs(),
- "Message4": testFramework.BranchIDs("Branch4"),
- "Message5": testFramework.BranchIDs("Branch5"),
- "Message6": testFramework.BranchIDs("Branch5", "Branch6"),
- "Message7": testFramework.BranchIDs("Branch4", "Branch5"),
- "Message8": testFramework.BranchIDs("Branch4", "Branch5", "Branch8"),
- "Message9": testFramework.BranchIDs("Branch4", "Branch5", "Branch6"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": utxo.NewTransactionIDs(),
+ "Block3": utxo.NewTransactionIDs(),
+ "Block2": utxo.NewTransactionIDs(),
+ "Block4": testFramework.ConflictIDs("Conflict4"),
+ "Block5": testFramework.ConflictIDs("Conflict5"),
+ "Block6": testFramework.ConflictIDs("Conflict5", "Conflict6"),
+ "Block7": testFramework.ConflictIDs("Conflict4", "Conflict5"),
+ "Block8": testFramework.ConflictIDs("Conflict4", "Conflict5", "Conflict8"),
+ "Block9": testFramework.ConflictIDs("Conflict4", "Conflict5", "Conflict6"),
})
}
@@ -83,60 +83,60 @@ func TestScenario_2(t *testing.T) {
tangle := NewTestTangle(WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("G", 3),
)
tangle.Setup()
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1), WithOutput("B", 1), WithOutput("C", 1))
- testFramework.CreateMessage("Message2", WithStrongParents("Genesis", "Message1"), WithInputs("B", "C"), WithOutput("E", 2))
- testFramework.CreateMessage("Message3", WithStrongParents("Message1", "Message2"), WithReattachment("Message2"))
- testFramework.CreateMessage("Message4", WithStrongParents("Genesis", "Message1"), WithInputs("A"), WithOutput("D", 1))
- testFramework.CreateMessage("Message5", WithStrongParents("Message1", "Message2"), WithInputs("A"), WithOutput("F", 1))
- testFramework.CreateMessage("Message6", WithStrongParents("Message2", "Message5"), WithInputs("E", "F"), WithOutput("L", 3))
- testFramework.CreateMessage("Message7", WithStrongParents("Message1", "Message4"), WithInputs("C"), WithOutput("H", 1))
- testFramework.CreateMessage("Message8", WithStrongParents("Message4", "Message7"), WithInputs("H", "D"), WithOutput("I", 2))
- testFramework.CreateMessage("Message9", WithStrongParents("Message4", "Message7"), WithInputs("B"), WithOutput("J", 1))
-
- testFramework.RegisterBranchID("green", "Message5")
- testFramework.RegisterBranchID("red", "Message4")
- testFramework.RegisterBranchID("yellow", "Message2")
- testFramework.RegisterBranchID("black", "Message7")
- testFramework.RegisterBranchID("blue", "Message9")
-
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message3", "Message4").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message5").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message6").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message7").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message8").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message9").WaitUntilAllTasksProcessed()
-
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("yellow"),
- "Message3": testFramework.BranchIDs("yellow"),
- "Message4": testFramework.BranchIDs("red"),
- "Message5": testFramework.BranchIDs("yellow", "green"),
- "Message6": testFramework.BranchIDs("yellow", "green"),
- "Message7": testFramework.BranchIDs("red", "black"),
- "Message8": testFramework.BranchIDs("red", "black"),
- "Message9": testFramework.BranchIDs("red", "black", "blue"),
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1), WithOutput("B", 1), WithOutput("C", 1))
+ testFramework.CreateBlock("Block2", WithStrongParents("Genesis", "Block1"), WithInputs("B", "C"), WithOutput("E", 2))
+ testFramework.CreateBlock("Block3", WithStrongParents("Block1", "Block2"), WithReattachment("Block2"))
+ testFramework.CreateBlock("Block4", WithStrongParents("Genesis", "Block1"), WithInputs("A"), WithOutput("D", 1))
+ testFramework.CreateBlock("Block5", WithStrongParents("Block1", "Block2"), WithInputs("A"), WithOutput("F", 1))
+ testFramework.CreateBlock("Block6", WithStrongParents("Block2", "Block5"), WithInputs("E", "F"), WithOutput("L", 3))
+ testFramework.CreateBlock("Block7", WithStrongParents("Block1", "Block4"), WithInputs("C"), WithOutput("H", 1))
+ testFramework.CreateBlock("Block8", WithStrongParents("Block4", "Block7"), WithInputs("H", "D"), WithOutput("I", 2))
+ testFramework.CreateBlock("Block9", WithStrongParents("Block4", "Block7"), WithInputs("B"), WithOutput("J", 1))
+
+ testFramework.RegisterConflictID("green", "Block5")
+ testFramework.RegisterConflictID("red", "Block4")
+ testFramework.RegisterConflictID("yellow", "Block2")
+ testFramework.RegisterConflictID("black", "Block7")
+ testFramework.RegisterConflictID("blue", "Block9")
+
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block3", "Block4").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block9").WaitUntilAllTasksProcessed()
+
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("yellow"),
+ "Block3": testFramework.ConflictIDs("yellow"),
+ "Block4": testFramework.ConflictIDs("red"),
+ "Block5": testFramework.ConflictIDs("yellow", "green"),
+ "Block6": testFramework.ConflictIDs("yellow", "green"),
+ "Block7": testFramework.ConflictIDs("red", "black"),
+ "Block8": testFramework.ConflictIDs("red", "black"),
+ "Block9": testFramework.ConflictIDs("red", "black", "blue"),
})
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message6": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message7": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message8": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message9": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block6": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block7": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block8": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block9": markers.NewMarkers(markers.NewMarker(0, 1)),
})
}
@@ -144,49 +144,49 @@ func TestScenario_3(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("G", 3),
)
tangle.Setup()
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1), WithOutput("B", 1), WithOutput("C", 1))
- testFramework.CreateMessage("Message2", WithStrongParents("Genesis", "Message1"), WithInputs("B", "C"), WithOutput("E", 2))
- testFramework.CreateMessage("Message3", WithStrongParents("Message1", "Message2"), WithReattachment("Message2"))
- testFramework.CreateMessage("Message4", WithStrongParents("Genesis", "Message1"), WithInputs("A"), WithOutput("D", 1))
- testFramework.CreateMessage("Message5", WithStrongParents("Message1"), WithWeakParents("Message2"), WithInputs("A"), WithOutput("F", 1))
- testFramework.CreateMessage("Message6", WithStrongParents("Message2", "Message5"), WithInputs("E", "F"), WithOutput("L", 3))
- testFramework.CreateMessage("Message7", WithStrongParents("Message1", "Message4"), WithInputs("C"), WithOutput("H", 1))
- testFramework.CreateMessage("Message8", WithStrongParents("Message4", "Message7"), WithInputs("H", "D"), WithOutput("I", 2))
- testFramework.CreateMessage("Message9", WithStrongParents("Message4", "Message7"), WithInputs("B"), WithOutput("J", 1))
-
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message3", "Message4").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message5").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message6").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message7").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message8").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message9").WaitUntilAllTasksProcessed()
-
- testFramework.RegisterBranchID("purple", "Message2")
- testFramework.RegisterBranchID("red", "Message4")
- testFramework.RegisterBranchID("yellow", "Message5")
- testFramework.RegisterBranchID("orange", "Message7")
- testFramework.RegisterBranchID("blue", "Message9")
- testFramework.RegisterBranchID("blue", "Message9")
-
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("purple"),
- "Message3": testFramework.BranchIDs("purple"),
- "Message4": testFramework.BranchIDs("red"),
- "Message5": testFramework.BranchIDs("yellow"),
- "Message6": testFramework.BranchIDs("yellow", "purple"),
- "Message7": testFramework.BranchIDs("red", "orange"),
- "Message8": testFramework.BranchIDs("red", "orange"),
- "Message9": testFramework.BranchIDs("red", "orange", "blue"),
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1), WithOutput("B", 1), WithOutput("C", 1))
+ testFramework.CreateBlock("Block2", WithStrongParents("Genesis", "Block1"), WithInputs("B", "C"), WithOutput("E", 2))
+ testFramework.CreateBlock("Block3", WithStrongParents("Block1", "Block2"), WithReattachment("Block2"))
+ testFramework.CreateBlock("Block4", WithStrongParents("Genesis", "Block1"), WithInputs("A"), WithOutput("D", 1))
+ testFramework.CreateBlock("Block5", WithStrongParents("Block1"), WithWeakParents("Block2"), WithInputs("A"), WithOutput("F", 1))
+ testFramework.CreateBlock("Block6", WithStrongParents("Block2", "Block5"), WithInputs("E", "F"), WithOutput("L", 3))
+ testFramework.CreateBlock("Block7", WithStrongParents("Block1", "Block4"), WithInputs("C"), WithOutput("H", 1))
+ testFramework.CreateBlock("Block8", WithStrongParents("Block4", "Block7"), WithInputs("H", "D"), WithOutput("I", 2))
+ testFramework.CreateBlock("Block9", WithStrongParents("Block4", "Block7"), WithInputs("B"), WithOutput("J", 1))
+
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block3", "Block4").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block9").WaitUntilAllTasksProcessed()
+
+ testFramework.RegisterConflictID("purple", "Block2")
+ testFramework.RegisterConflictID("red", "Block4")
+ testFramework.RegisterConflictID("yellow", "Block5")
+ testFramework.RegisterConflictID("orange", "Block7")
+ testFramework.RegisterConflictID("blue", "Block9")
+ testFramework.RegisterConflictID("blue", "Block9")
+
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("purple"),
+ "Block3": testFramework.ConflictIDs("purple"),
+ "Block4": testFramework.ConflictIDs("red"),
+ "Block5": testFramework.ConflictIDs("yellow"),
+ "Block6": testFramework.ConflictIDs("yellow", "purple"),
+ "Block7": testFramework.ConflictIDs("red", "orange"),
+ "Block8": testFramework.ConflictIDs("red", "orange"),
+ "Block9": testFramework.ConflictIDs("red", "orange", "blue"),
})
}
@@ -194,7 +194,7 @@ func TestBookerMarkerGap(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("A", 500),
WithGenesisOutput("B", 500),
@@ -204,121 +204,121 @@ func TestBookerMarkerGap(t *testing.T) {
tangle.Setup()
- // ISSUE Message1
+ // ISSUE Block1
{
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("G", 500))
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("G", 500))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message1.5
+ // ISSUE Block1.5
{
- testFramework.CreateMessage("Message1.5", WithStrongParents("Message1"))
- testFramework.IssueMessages("Message1.5").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block1.5", WithStrongParents("Block1"))
+ testFramework.IssueBlocks("Block1.5").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message1.5": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block1.5": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message2
+ // ISSUE Block2
{
- testFramework.CreateMessage("Message2", WithStrongParents("Message1.5"), WithInputs("B"), WithOutput("E", 500))
+ testFramework.CreateBlock("Block2", WithStrongParents("Block1.5"), WithInputs("B"), WithOutput("E", 500))
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 3)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message1.5": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block1.5": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message3
+ // ISSUE Block3
{
- testFramework.CreateMessage("Message3", WithStrongParents("Genesis"), WithInputs("B"), WithOutput("F", 500))
+ testFramework.CreateBlock("Block3", WithStrongParents("Genesis"), WithInputs("B"), WithOutput("F", 500))
- testFramework.RegisterBranchID("Message2", "Message2")
- testFramework.RegisterBranchID("Message3", "Message3")
+ testFramework.RegisterConflictID("Block2", "Block2")
+ testFramework.RegisterConflictID("Block3", "Block3")
- testFramework.IssueMessages("Message3").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message1.5": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block1.5": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
})
}
- // ISSUE Message4
+ // ISSUE Block4
{
- testFramework.CreateMessage("Message4", WithStrongParents("Message3"), WithInputs("A"), WithOutput("X", 500))
+ testFramework.CreateBlock("Block4", WithStrongParents("Block3"), WithInputs("A"), WithOutput("X", 500))
- testFramework.RegisterBranchID("Message1", "Message1")
- testFramework.RegisterBranchID("Message4", "Message4")
+ testFramework.RegisterConflictID("Block1", "Block1")
+ testFramework.RegisterConflictID("Block4", "Block4")
- testFramework.IssueMessages("Message4").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("Message3", "Message4"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message1.5": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message1", "Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
- "Message4": testFramework.BranchIDs("Message3", "Message4"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1.5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block1.5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("Block3", "Block4"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block1.5": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block1", "Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
+ "Block4": testFramework.ConflictIDs("Block3", "Block4"),
})
}
}
@@ -327,7 +327,7 @@ func TestBookerMarkerGap2(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("Genesis1", 500),
WithGenesisOutput("Genesis2", 500),
@@ -336,234 +336,234 @@ func TestBookerMarkerGap2(t *testing.T) {
tangle.Setup()
- // ISSUE Message1
+ // ISSUE Block1
{
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("Genesis1"), WithOutput("Message1", 500))
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("Genesis1"), WithOutput("Block1", 500))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message2
+ // ISSUE Block2
{
- testFramework.CreateMessage("Message2", WithStrongParents("Genesis"), WithInputs("Genesis1"), WithOutput("Message2", 500))
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block2", WithStrongParents("Genesis"), WithInputs("Genesis1"), WithOutput("Block2", 500))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
- testFramework.RegisterBranchID("Message1", "Message1")
- testFramework.RegisterBranchID("Message2", "Message2")
+ testFramework.RegisterConflictID("Block1", "Block1")
+ testFramework.RegisterConflictID("Block2", "Block2")
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
})
}
- // ISSUE Message3
+ // ISSUE Block3
{
- testFramework.CreateMessage("Message3", WithStrongParents("Genesis"), WithInputs("Genesis2"), WithOutput("Message3", 500))
- testFramework.IssueMessages("Message3").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block3", WithStrongParents("Genesis"), WithInputs("Genesis2"), WithOutput("Block3", 500))
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message4
+ // ISSUE Block4
{
- testFramework.CreateMessage("Message4", WithStrongParents("Genesis"), WithInputs("Genesis2"), WithOutput("Message4", 500))
- testFramework.IssueMessages("Message4").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block4", WithStrongParents("Genesis"), WithInputs("Genesis2"), WithOutput("Block4", 500))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
- testFramework.RegisterBranchID("Message3", "Message3")
- testFramework.RegisterBranchID("Message4", "Message4")
+ testFramework.RegisterConflictID("Block3", "Block3")
+ testFramework.RegisterConflictID("Block4", "Block4")
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("Message4"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
- "Message4": testFramework.BranchIDs("Message4"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("Block4"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
+ "Block4": testFramework.ConflictIDs("Block4"),
})
}
- // ISSUE Message5
+ // ISSUE Block5
{
- testFramework.CreateMessage("Message5", WithStrongParents("Message1"), WithInputs("Genesis3"), WithOutput("Message5", 500))
- testFramework.IssueMessages("Message5").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block5", WithStrongParents("Block1"), WithInputs("Genesis3"), WithOutput("Block5", 500))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 2)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("Message4"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
- "Message4": testFramework.BranchIDs("Message4"),
- "Message5": testFramework.BranchIDs("Message1"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("Block4"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
+ "Block4": testFramework.ConflictIDs("Block4"),
+ "Block5": testFramework.ConflictIDs("Block1"),
})
}
- // ISSUE Message6
+ // ISSUE Block6
{
- testFramework.CreateMessage("Message6", WithStrongParents("Message1", "Message3"))
- testFramework.IssueMessages("Message6").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block6", WithStrongParents("Block1", "Block3"))
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message6": markers.NewMarkers(markers.NewMarker(0, 1)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("Message4"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message6": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
- "Message4": testFramework.BranchIDs("Message4"),
- "Message5": testFramework.BranchIDs("Message1"),
- "Message6": testFramework.BranchIDs("Message1", "Message3"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block6": markers.NewMarkers(markers.NewMarker(0, 1)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("Block4"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block6": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
+ "Block4": testFramework.ConflictIDs("Block4"),
+ "Block5": testFramework.ConflictIDs("Block1"),
+ "Block6": testFramework.ConflictIDs("Block1", "Block3"),
})
}
- // ISSUE Message7
+ // ISSUE Block7
{
- testFramework.CreateMessage("Message7", WithStrongParents("Message3", "Message5"))
- testFramework.IssueMessages("Message7").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block7", WithStrongParents("Block3", "Block5"))
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message6": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message7": markers.NewMarkers(markers.NewMarker(0, 3)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("Message4"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message6": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message7": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
- "Message4": testFramework.BranchIDs("Message4"),
- "Message5": testFramework.BranchIDs("Message1"),
- "Message6": testFramework.BranchIDs("Message1", "Message3"),
- "Message7": testFramework.BranchIDs("Message1", "Message3"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block6": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block7": markers.NewMarkers(markers.NewMarker(0, 3)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("Block4"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block6": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block7": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
+ "Block4": testFramework.ConflictIDs("Block4"),
+ "Block5": testFramework.ConflictIDs("Block1"),
+ "Block6": testFramework.ConflictIDs("Block1", "Block3"),
+ "Block7": testFramework.ConflictIDs("Block1", "Block3"),
})
}
- // ISSUE Message8
+ // ISSUE Block8
{
- testFramework.CreateMessage("Message8", WithStrongParents("Genesis"), WithInputs("Genesis3"), WithOutput("Message8", 500))
+ testFramework.CreateBlock("Block8", WithStrongParents("Genesis"), WithInputs("Genesis3"), WithOutput("Block8", 500))
- testFramework.RegisterBranchID("Message5", "Message5")
- testFramework.RegisterBranchID("Message8", "Message8")
+ testFramework.RegisterConflictID("Block5", "Block5")
+ testFramework.RegisterConflictID("Block8", "Block8")
- testFramework.IssueMessages("Message8").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block8").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message6": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message7": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message8": markers.NewMarkers(markers.NewMarker(0, 0)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("Message2"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("Message4"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message6": {testFramework.BranchIDs("Message3"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message7": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message8": {testFramework.BranchIDs("Message8"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("Message1"),
- "Message2": testFramework.BranchIDs("Message2"),
- "Message3": testFramework.BranchIDs("Message3"),
- "Message4": testFramework.BranchIDs("Message4"),
- "Message5": testFramework.BranchIDs("Message1", "Message5"),
- "Message6": testFramework.BranchIDs("Message1", "Message3"),
- "Message7": testFramework.BranchIDs("Message1", "Message3", "Message5"),
- "Message8": testFramework.BranchIDs("Message8"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block6": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block7": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block8": markers.NewMarkers(markers.NewMarker(0, 0)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("Block2"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("Block4"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block6": {testFramework.ConflictIDs("Block3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block7": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block8": {testFramework.ConflictIDs("Block8"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("Block1"),
+ "Block2": testFramework.ConflictIDs("Block2"),
+ "Block3": testFramework.ConflictIDs("Block3"),
+ "Block4": testFramework.ConflictIDs("Block4"),
+ "Block5": testFramework.ConflictIDs("Block1", "Block5"),
+ "Block6": testFramework.ConflictIDs("Block1", "Block3"),
+ "Block7": testFramework.ConflictIDs("Block1", "Block3", "Block5"),
+ "Block8": testFramework.ConflictIDs("Block8"),
})
}
}
-func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
+func TestBookerIndividuallyMappedBlocksSameSequence(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("A", 500),
WithGenesisOutput("B", 500),
@@ -573,34 +573,34 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
// ISSUE A1
{
- testFramework.CreateMessage("A1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("A1", 500))
- testFramework.IssueMessages("A1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("A1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("A1", 500))
+ testFramework.IssueBlocks("A1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
"A1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
// ISSUE A2
{
- testFramework.CreateMessage("A2", WithStrongParents("A1"))
- testFramework.IssueMessages("A2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("A2", WithStrongParents("A1"))
+ testFramework.IssueBlocks("A2").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
"A2": markers.NewMarkers(markers.NewMarker(0, 2)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
"A1": set.NewAdvancedSet[utxo.TransactionID](),
"A2": set.NewAdvancedSet[utxo.TransactionID](),
})
@@ -608,20 +608,20 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
// ISSUE A3
{
- testFramework.PreventNewMarkers(true).CreateMessage("A3", WithStrongParents("A2"), WithInputs("B"), WithOutput("B1", 500))
- testFramework.IssueMessages("A3").WaitUntilAllTasksProcessed().PreventNewMarkers(false)
+ testFramework.PreventNewMarkers(true).CreateBlock("A3", WithStrongParents("A2"), WithInputs("B"), WithOutput("B1", 500))
+ testFramework.IssueBlocks("A3").WaitUntilAllTasksProcessed().PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
"A2": markers.NewMarkers(markers.NewMarker(0, 2)),
"A3": markers.NewMarkers(markers.NewMarker(0, 2)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
"A1": set.NewAdvancedSet[utxo.TransactionID](),
"A2": set.NewAdvancedSet[utxo.TransactionID](),
"A3": set.NewAdvancedSet[utxo.TransactionID](),
@@ -630,8 +630,8 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
// ISSUE A4
{
- testFramework.CreateMessage("A4", WithStrongParents("A3"))
- testFramework.IssueMessages("A4").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("A4", WithStrongParents("A3"))
+ testFramework.IssueBlocks("A4").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -639,13 +639,13 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
"A3": markers.NewMarkers(markers.NewMarker(0, 2)),
"A4": markers.NewMarkers(markers.NewMarker(0, 3)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A4": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
"A1": set.NewAdvancedSet[utxo.TransactionID](),
"A2": set.NewAdvancedSet[utxo.TransactionID](),
"A3": set.NewAdvancedSet[utxo.TransactionID](),
@@ -655,12 +655,12 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
// ISSUE A3*
{
- testFramework.CreateMessage("A3*", WithStrongParents("Genesis"), WithInputs("B"), WithOutput("A3*", 500))
+ testFramework.CreateBlock("A3*", WithStrongParents("Genesis"), WithInputs("B"), WithOutput("A3*", 500))
- testFramework.RegisterBranchID("A3", "A3")
- testFramework.RegisterBranchID("A3*", "A3*")
+ testFramework.RegisterConflictID("A3", "A3")
+ testFramework.RegisterConflictID("A3*", "A3*")
- testFramework.IssueMessages("A3*").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A3*").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -669,30 +669,30 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
"A4": markers.NewMarkers(markers.NewMarker(0, 3)),
"A3*": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "A3": {testFramework.BranchIDs("A3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "A3": {testFramework.ConflictIDs("A3"), set.NewAdvancedSet[utxo.TransactionID]()},
"A4": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "A3*": {testFramework.BranchIDs("A3*"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "A3*": {testFramework.ConflictIDs("A3*"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
"A1": set.NewAdvancedSet[utxo.TransactionID](),
"A2": set.NewAdvancedSet[utxo.TransactionID](),
- "A3": testFramework.BranchIDs("A3"),
- "A4": testFramework.BranchIDs("A3"),
- "A3*": testFramework.BranchIDs("A3*"),
+ "A3": testFramework.ConflictIDs("A3"),
+ "A4": testFramework.ConflictIDs("A3"),
+ "A3*": testFramework.ConflictIDs("A3*"),
})
}
// ISSUE A1*
{
- testFramework.CreateMessage("A1*", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("A1*", 500))
+ testFramework.CreateBlock("A1*", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("A1*", 500))
- testFramework.RegisterBranchID("A1", "A1")
- testFramework.RegisterBranchID("A1*", "A1*")
+ testFramework.RegisterConflictID("A1", "A1")
+ testFramework.RegisterConflictID("A1*", "A1*")
- testFramework.IssueMessages("A1*").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A1*").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -702,21 +702,21 @@ func TestBookerIndividuallyMappedMessagesSameSequence(t *testing.T) {
"A3*": markers.NewMarkers(markers.NewMarker(0, 0)),
"A1*": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "A3": {testFramework.BranchIDs("A1", "A3"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "A3": {testFramework.ConflictIDs("A1", "A3"), set.NewAdvancedSet[utxo.TransactionID]()},
"A4": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "A3*": {testFramework.BranchIDs("A3*"), set.NewAdvancedSet[utxo.TransactionID]()},
- "A1*": {testFramework.BranchIDs("A1*"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "A3*": {testFramework.ConflictIDs("A3*"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "A1*": {testFramework.ConflictIDs("A1*"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A1"),
- "A2": testFramework.BranchIDs("A1"),
- "A3": testFramework.BranchIDs("A1", "A3"),
- "A4": testFramework.BranchIDs("A1", "A3"),
- "A3*": testFramework.BranchIDs("A3*"),
- "A1*": testFramework.BranchIDs("A1*"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A1"),
+ "A2": testFramework.ConflictIDs("A1"),
+ "A3": testFramework.ConflictIDs("A1", "A3"),
+ "A4": testFramework.ConflictIDs("A1", "A3"),
+ "A3*": testFramework.ConflictIDs("A3*"),
+ "A1*": testFramework.ConflictIDs("A1*"),
})
}
}
@@ -725,7 +725,7 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("A", 500),
WithGenesisOutput("B", 500),
@@ -738,77 +738,77 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
// ISSUE A1
{
- testFramework.CreateMessage("A1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("A1", 500))
- testFramework.IssueMessages("A1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("A1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("A1", 500))
+ testFramework.IssueBlocks("A1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
"A1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
// ISSUE B1
{
- testFramework.CreateMessage("B1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("B1", 500))
+ testFramework.CreateBlock("B1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("B1", 500))
- testFramework.RegisterBranchID("A", "A1")
- testFramework.RegisterBranchID("B", "B1")
+ testFramework.RegisterConflictID("A", "A1")
+ testFramework.RegisterConflictID("B", "B1")
- testFramework.IssueMessages("B1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("B1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
"B1": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
})
}
// ISSUE C1
{
- testFramework.CreateMessage("C1", WithStrongParents("Genesis"), WithInputs("C"), WithOutput("C1", 500))
+ testFramework.CreateBlock("C1", WithStrongParents("Genesis"), WithInputs("C"), WithOutput("C1", 500))
- testFramework.RegisterBranchID("A", "A1")
- testFramework.RegisterBranchID("B", "B1")
+ testFramework.RegisterConflictID("A", "A1")
+ testFramework.RegisterConflictID("B", "B1")
- testFramework.IssueMessages("C1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("C1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
"B1": markers.NewMarkers(markers.NewMarker(0, 0)),
"C1": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
"C1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
"C1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
// ISSUE D1
{
- testFramework.CreateMessage("D1", WithStrongParents("Genesis"), WithInputs("C"), WithOutput("D1", 500))
+ testFramework.CreateBlock("D1", WithStrongParents("Genesis"), WithInputs("C"), WithOutput("D1", 500))
- testFramework.RegisterBranchID("C", "C1")
- testFramework.RegisterBranchID("D", "D1")
+ testFramework.RegisterConflictID("C", "C1")
+ testFramework.RegisterConflictID("D", "D1")
- testFramework.IssueMessages("D1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("D1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -816,25 +816,25 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
"C1": markers.NewMarkers(markers.NewMarker(0, 0)),
"D1": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "C1": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "D1": {testFramework.BranchIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "C1": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "D1": {testFramework.ConflictIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
- "C1": testFramework.BranchIDs("C"),
- "D1": testFramework.BranchIDs("D"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
+ "C1": testFramework.ConflictIDs("C"),
+ "D1": testFramework.ConflictIDs("D"),
})
}
// ISSUE A2
{
- testFramework.CreateMessage("A2", WithStrongParents("A1"), WithInputs("A1"), WithOutput("A2", 500))
+ testFramework.CreateBlock("A2", WithStrongParents("A1"), WithInputs("A1"), WithOutput("A2", 500))
- testFramework.IssueMessages("A2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A2").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -843,27 +843,27 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
"D1": markers.NewMarkers(markers.NewMarker(0, 0)),
"A2": markers.NewMarkers(markers.NewMarker(0, 2)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "C1": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "D1": {testFramework.BranchIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "C1": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "D1": {testFramework.ConflictIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
- "C1": testFramework.BranchIDs("C"),
- "D1": testFramework.BranchIDs("D"),
- "A2": testFramework.BranchIDs("A"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
+ "C1": testFramework.ConflictIDs("C"),
+ "D1": testFramework.ConflictIDs("D"),
+ "A2": testFramework.ConflictIDs("A"),
})
}
// ISSUE A3
{
- testFramework.CreateMessage("A3", WithStrongParents("A2"))
+ testFramework.CreateBlock("A3", WithStrongParents("A2"))
- testFramework.IssueMessages("A3").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A3").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -873,29 +873,29 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
"A2": markers.NewMarkers(markers.NewMarker(0, 2)),
"A3": markers.NewMarkers(markers.NewMarker(0, 3)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "C1": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "D1": {testFramework.BranchIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "C1": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "D1": {testFramework.ConflictIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
- "C1": testFramework.BranchIDs("C"),
- "D1": testFramework.BranchIDs("D"),
- "A2": testFramework.BranchIDs("A"),
- "A3": testFramework.BranchIDs("A"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
+ "C1": testFramework.ConflictIDs("C"),
+ "D1": testFramework.ConflictIDs("D"),
+ "A2": testFramework.ConflictIDs("A"),
+ "A3": testFramework.ConflictIDs("A"),
})
}
// ISSUE A+C1
{
- testFramework.CreateMessage("A+C1", WithStrongParents("A3", "C1"))
+ testFramework.CreateBlock("A+C1", WithStrongParents("A3", "C1"))
- testFramework.IssueMessages("A+C1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A+C1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -906,31 +906,31 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
"A3": markers.NewMarkers(markers.NewMarker(0, 3)),
"A+C1": markers.NewMarkers(markers.NewMarker(0, 4)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "C1": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "D1": {testFramework.BranchIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "C1": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "D1": {testFramework.ConflictIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A+C1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
- "C1": testFramework.BranchIDs("C"),
- "D1": testFramework.BranchIDs("D"),
- "A2": testFramework.BranchIDs("A"),
- "A3": testFramework.BranchIDs("A"),
- "A+C1": testFramework.BranchIDs("A", "C"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
+ "C1": testFramework.ConflictIDs("C"),
+ "D1": testFramework.ConflictIDs("D"),
+ "A2": testFramework.ConflictIDs("A"),
+ "A3": testFramework.ConflictIDs("A"),
+ "A+C1": testFramework.ConflictIDs("A", "C"),
})
}
// ISSUE A+C2
{
- testFramework.CreateMessage("A+C2", WithStrongParents("A3", "C1"))
+ testFramework.CreateBlock("A+C2", WithStrongParents("A3", "C1"))
- testFramework.IssueMessages("A+C2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A+C2").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -942,36 +942,36 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
"A+C1": markers.NewMarkers(markers.NewMarker(0, 4)),
"A+C2": markers.NewMarkers(markers.NewMarker(0, 0), markers.NewMarker(0, 3)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "C1": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "D1": {testFramework.BranchIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "C1": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "D1": {testFramework.ConflictIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A+C1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "A+C2": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
- "C1": testFramework.BranchIDs("C"),
- "D1": testFramework.BranchIDs("D"),
- "A2": testFramework.BranchIDs("A"),
- "A3": testFramework.BranchIDs("A"),
- "A+C1": testFramework.BranchIDs("A", "C"),
- "A+C2": testFramework.BranchIDs("A", "C"),
+ "A+C2": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
+ "C1": testFramework.ConflictIDs("C"),
+ "D1": testFramework.ConflictIDs("D"),
+ "A2": testFramework.ConflictIDs("A"),
+ "A3": testFramework.ConflictIDs("A"),
+ "A+C1": testFramework.ConflictIDs("A", "C"),
+ "A+C2": testFramework.ConflictIDs("A", "C"),
})
}
// ISSUE A2*
{
- testFramework.CreateMessage("A2*", WithStrongParents("A1"), WithInputs("A1"), WithOutput("A2*", 500))
+ testFramework.CreateBlock("A2*", WithStrongParents("A1"), WithInputs("A1"), WithOutput("A2*", 500))
- testFramework.RegisterBranchID("A2", "A2")
- testFramework.RegisterBranchID("A2*", "A2*")
+ testFramework.RegisterConflictID("A2", "A2")
+ testFramework.RegisterConflictID("A2*", "A2*")
- testFramework.IssueMessages("A2*").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("A2*").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"A1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -984,27 +984,27 @@ func TestBookerMarkerMappingsGap(t *testing.T) {
"A+C2": markers.NewMarkers(markers.NewMarker(0, 0), markers.NewMarker(0, 3)),
"A2*": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
"A1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "B1": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "C1": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "D1": {testFramework.BranchIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "B1": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "C1": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "D1": {testFramework.ConflictIDs("D"), set.NewAdvancedSet[utxo.TransactionID]()},
"A2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
"A+C1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "A+C2": {testFramework.BranchIDs("A2", "C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "A2*": {testFramework.BranchIDs("A2*"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "A1": testFramework.BranchIDs("A"),
- "B1": testFramework.BranchIDs("B"),
- "C1": testFramework.BranchIDs("C"),
- "D1": testFramework.BranchIDs("D"),
- "A2": testFramework.BranchIDs("A", "A2"),
- "A3": testFramework.BranchIDs("A", "A2"),
- "A+C1": testFramework.BranchIDs("A", "A2", "C"),
- "A+C2": testFramework.BranchIDs("A", "A2", "C"),
- "A2*": testFramework.BranchIDs("A", "A2*"),
+ "A+C2": {testFramework.ConflictIDs("A2", "C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "A2*": {testFramework.ConflictIDs("A2*"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "A1": testFramework.ConflictIDs("A"),
+ "B1": testFramework.ConflictIDs("B"),
+ "C1": testFramework.ConflictIDs("C"),
+ "D1": testFramework.ConflictIDs("D"),
+ "A2": testFramework.ConflictIDs("A", "A2"),
+ "A3": testFramework.ConflictIDs("A", "A2"),
+ "A+C1": testFramework.ConflictIDs("A", "A2", "C"),
+ "A+C2": testFramework.ConflictIDs("A", "A2", "C"),
+ "A2*": testFramework.ConflictIDs("A", "A2*"),
})
}
}
@@ -1013,7 +1013,7 @@ func TestBookerMarkerMappingContinue(t *testing.T) {
tg := NewTestTangle()
defer tg.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tg,
WithGenesisOutput("A", 500),
WithGenesisOutput("B", 500),
@@ -1021,191 +1021,191 @@ func TestBookerMarkerMappingContinue(t *testing.T) {
tg.Setup()
- // ISSUE Message1
+ // ISSUE Block1
{
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"))
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message2
+ // ISSUE Block2
{
- testFramework.CreateMessage("Message2", WithStrongParents("Message1"), WithInputs("A"), WithOutput("blue", 500))
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block2", WithStrongParents("Block1"), WithInputs("A"), WithOutput("blue", 500))
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message3
+ // ISSUE Block3
{
- testFramework.CreateMessage("Message3", WithStrongParents("Message2"))
+ testFramework.CreateBlock("Block3", WithStrongParents("Block2"))
- testFramework.IssueMessages("Message3").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 3)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": set.NewAdvancedSet[utxo.TransactionID](),
- "Message3": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block3": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message4
+ // ISSUE Block4
{
- testFramework.CreateMessage("Message4", WithStrongParents("Message1"), WithInputs("A"), WithOutput("red", 500))
+ testFramework.CreateBlock("Block4", WithStrongParents("Block1"), WithInputs("A"), WithOutput("red", 500))
- testFramework.RegisterBranchID("blue", "Message2")
- testFramework.RegisterBranchID("red", "Message4")
+ testFramework.RegisterConflictID("blue", "Block2")
+ testFramework.RegisterConflictID("red", "Block4")
- testFramework.IssueMessages("Message4").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 1)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("blue"),
- "Message3": testFramework.BranchIDs("blue"),
- "Message4": testFramework.BranchIDs("red"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 1)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("blue"),
+ "Block3": testFramework.ConflictIDs("blue"),
+ "Block4": testFramework.ConflictIDs("red"),
})
}
- // ISSUE Message5
+ // ISSUE Block5
{
- testFramework.CreateMessage("Message5", WithStrongParents("Message3"))
+ testFramework.CreateBlock("Block5", WithStrongParents("Block3"))
- testFramework.IssueMessages("Message5").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 4)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("blue"),
- "Message3": testFramework.BranchIDs("blue"),
- "Message4": testFramework.BranchIDs("red"),
- "Message5": testFramework.BranchIDs("blue"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 4)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("blue"),
+ "Block3": testFramework.ConflictIDs("blue"),
+ "Block4": testFramework.ConflictIDs("red"),
+ "Block5": testFramework.ConflictIDs("blue"),
})
}
- // ISSUE Message6
+ // ISSUE Block6
{
- tg.Ledger.ConflictDAG.SetBranchConfirmed(testFramework.BranchID("red"))
+ tg.Ledger.ConflictDAG.SetConflictAccepted(testFramework.ConflictID("red"))
- testFramework.CreateMessage("Message6", WithStrongParents("Message4"))
+ testFramework.CreateBlock("Block6", WithStrongParents("Block4"))
- testFramework.IssueMessages("Message6").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block6").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 4)),
- "Message6": markers.NewMarkers(markers.NewMarker(0, 1)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message6": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("blue"),
- "Message3": testFramework.BranchIDs("blue"),
- "Message4": testFramework.BranchIDs("red"),
- "Message5": testFramework.BranchIDs("blue"),
- "Message6": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 4)),
+ "Block6": markers.NewMarkers(markers.NewMarker(0, 1)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block6": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("blue"),
+ "Block3": testFramework.ConflictIDs("blue"),
+ "Block4": testFramework.ConflictIDs("red"),
+ "Block5": testFramework.ConflictIDs("blue"),
+ "Block6": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message7
+ // ISSUE Block7
{
- testFramework.CreateMessage("Message7", WithStrongParents("Message6"))
+ testFramework.CreateBlock("Block7", WithStrongParents("Block6"))
- testFramework.IssueMessages("Message7").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block7").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 2)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 3)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message5": markers.NewMarkers(markers.NewMarker(0, 4)),
- "Message6": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message7": markers.NewMarkers(markers.NewMarker(0, 1)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message6": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message7": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
- "Message2": testFramework.BranchIDs("blue"),
- "Message3": testFramework.BranchIDs("blue"),
- "Message4": testFramework.BranchIDs("red"),
- "Message5": testFramework.BranchIDs("blue"),
- "Message6": set.NewAdvancedSet[utxo.TransactionID](),
- "Message7": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 2)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 3)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block5": markers.NewMarkers(markers.NewMarker(0, 4)),
+ "Block6": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block7": markers.NewMarkers(markers.NewMarker(0, 1)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("red"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block5": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block6": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block7": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block2": testFramework.ConflictIDs("blue"),
+ "Block3": testFramework.ConflictIDs("blue"),
+ "Block4": testFramework.ConflictIDs("red"),
+ "Block5": testFramework.ConflictIDs("blue"),
+ "Block6": set.NewAdvancedSet[utxo.TransactionID](),
+ "Block7": set.NewAdvancedSet[utxo.TransactionID](),
})
}
}
@@ -1214,7 +1214,7 @@ func TestObjectiveInvalidity(t *testing.T) {
tangle := NewTestTangle()
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("A", 500),
WithGenesisOutput("B", 500),
@@ -1224,121 +1224,121 @@ func TestObjectiveInvalidity(t *testing.T) {
tangle.Setup()
- // ISSUE Message1
+ // ISSUE Block1
{
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("G", 500))
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("A"), WithOutput("G", 500))
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": set.NewAdvancedSet[utxo.TransactionID](),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": set.NewAdvancedSet[utxo.TransactionID](),
})
}
- // ISSUE Message2
+ // ISSUE Block2
{
- testFramework.CreateMessage("Message2", WithStrongParents("Genesis"), WithInputs("A", "B"), WithOutput("E", 1000))
+ testFramework.CreateBlock("Block2", WithStrongParents("Genesis"), WithInputs("A", "B"), WithOutput("E", 1000))
- testFramework.RegisterBranchID("A", "Message1")
- testFramework.RegisterBranchID("B", "Message2")
+ testFramework.RegisterConflictID("A", "Block1")
+ testFramework.RegisterConflictID("B", "Block2")
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("A"),
- "Message2": testFramework.BranchIDs("B"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block2": testFramework.ConflictIDs("B"),
})
}
- // ISSUE Message3
+ // ISSUE Block3
{
- testFramework.CreateMessage("Message3", WithStrongParents("Genesis"), WithInputs("B"), WithOutput("F", 500))
+ testFramework.CreateBlock("Block3", WithStrongParents("Genesis"), WithInputs("B"), WithOutput("F", 500))
- testFramework.RegisterBranchID("C", "Message3")
+ testFramework.RegisterConflictID("C", "Block3")
- testFramework.IssueMessages("Message3").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
})
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
})
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("A"),
- "Message2": testFramework.BranchIDs("B"),
- "Message3": testFramework.BranchIDs("C"),
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block2": testFramework.ConflictIDs("B"),
+ "Block3": testFramework.ConflictIDs("C"),
})
}
- // ISSUE Message4
+ // ISSUE Block4
{
- testFramework.CreateMessage("Message4", WithStrongParents("Message3"))
- testFramework.IssueMessages("Message4").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block4", WithStrongParents("Block3"))
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("A"),
- "Message2": testFramework.BranchIDs("B"),
- "Message3": testFramework.BranchIDs("C"),
- "Message4": testFramework.BranchIDs("C"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block2": testFramework.ConflictIDs("B"),
+ "Block3": testFramework.ConflictIDs("C"),
+ "Block4": testFramework.ConflictIDs("C"),
})
}
- // ISSUE Message5
+ // ISSUE Block5
{
- msg := testFramework.CreateMessage("Message5", WithStrongParents("Message4"), WithShallowLikeParents("Message4"))
- testFramework.IssueMessages("Message5").WaitUntilAllTasksProcessed()
+ blk := testFramework.CreateBlock("Block5", WithStrongParents("Block4"), WithShallowLikeParents("Block4"))
+ testFramework.IssueBlocks("Block5").WaitUntilAllTasksProcessed()
- tangle.Storage.MessageMetadata(msg.ID()).Consume(func(messageMetadata *MessageMetadata) {
- assert.True(t, messageMetadata.IsObjectivelyInvalid())
+ tangle.Storage.BlockMetadata(blk.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ assert.True(t, blockMetadata.IsObjectivelyInvalid())
})
checkMarkers(t, testFramework, map[string]*markers.Markers{
- "Message1": markers.NewMarkers(markers.NewMarker(0, 1)),
- "Message2": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message3": markers.NewMarkers(markers.NewMarker(0, 0)),
- "Message4": markers.NewMarkers(markers.NewMarker(0, 0)),
- })
- checkMessageMetadataDiffBranchIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message2": {testFramework.BranchIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message3": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- "Message4": {testFramework.BranchIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
- })
- checkBranchIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
- "Message1": testFramework.BranchIDs("A"),
- "Message2": testFramework.BranchIDs("B"),
- "Message3": testFramework.BranchIDs("C"),
- "Message4": testFramework.BranchIDs("C"),
+ "Block1": markers.NewMarkers(markers.NewMarker(0, 1)),
+ "Block2": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block3": markers.NewMarkers(markers.NewMarker(0, 0)),
+ "Block4": markers.NewMarkers(markers.NewMarker(0, 0)),
+ })
+ checkBlockMetadataDiffConflictIDs(t, testFramework, map[string][]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": {set.NewAdvancedSet[utxo.TransactionID](), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block2": {testFramework.ConflictIDs("B"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block3": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ "Block4": {testFramework.ConflictIDs("C"), set.NewAdvancedSet[utxo.TransactionID]()},
+ })
+ checkConflictIDs(t, testFramework, map[string]*set.AdvancedSet[utxo.TransactionID]{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block2": testFramework.ConflictIDs("B"),
+ "Block3": testFramework.ConflictIDs("C"),
+ "Block4": testFramework.ConflictIDs("C"),
})
}
}
@@ -1347,61 +1347,61 @@ func TestFutureConeDislike(t *testing.T) {
tangle := NewTestTangle(WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("G", 1),
)
tangle.Setup()
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1))
- testFramework.CreateMessage("Message1*", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A*", 1))
- testFramework.CreateMessage("Message2", WithStrongParents("Message1"), WithInputs("A"), WithOutput("B", 1))
- testFramework.CreateMessage("Message2*", WithStrongParents("Message1"), WithInputs("A"), WithOutput("B*", 1))
- testFramework.CreateMessage("Message3", WithStrongParents("Message2"), WithShallowLikeParents("Message1*"))
- testFramework.CreateMessage("Message4", WithStrongParents("Message2"), WithShallowLikeParents("Message1*"))
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A", 1))
+ testFramework.CreateBlock("Block1*", WithStrongParents("Genesis"), WithInputs("G"), WithOutput("A*", 1))
+ testFramework.CreateBlock("Block2", WithStrongParents("Block1"), WithInputs("A"), WithOutput("B", 1))
+ testFramework.CreateBlock("Block2*", WithStrongParents("Block1"), WithInputs("A"), WithOutput("B*", 1))
+ testFramework.CreateBlock("Block3", WithStrongParents("Block2"), WithShallowLikeParents("Block1*"))
+ testFramework.CreateBlock("Block4", WithStrongParents("Block2"), WithShallowLikeParents("Block1*"))
- testFramework.RegisterBranchID("A", "Message1")
- testFramework.RegisterBranchID("A*", "Message1*")
- testFramework.RegisterBranchID("B", "Message2")
- testFramework.RegisterBranchID("B*", "Message2*")
+ testFramework.RegisterConflictID("A", "Block1")
+ testFramework.RegisterConflictID("A*", "Block1*")
+ testFramework.RegisterConflictID("B", "Block2")
+ testFramework.RegisterConflictID("B*", "Block2*")
{
- testFramework.IssueMessages("Message1").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message1*").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message2").WaitUntilAllTasksProcessed()
- testFramework.IssueMessages("Message3").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block1").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block1*").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block2").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block3").WaitUntilAllTasksProcessed()
- checkBranchIDs(t, testFramework, map[string]utxo.TransactionIDs{
- "Message1": testFramework.BranchIDs("A"),
- "Message1*": testFramework.BranchIDs("A*"),
- "Message2": testFramework.BranchIDs("A"),
- "Message3": testFramework.BranchIDs("A*"),
+ checkConflictIDs(t, testFramework, map[string]utxo.TransactionIDs{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block1*": testFramework.ConflictIDs("A*"),
+ "Block2": testFramework.ConflictIDs("A"),
+ "Block3": testFramework.ConflictIDs("A*"),
})
}
{
- testFramework.IssueMessages("Message2*").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block2*").WaitUntilAllTasksProcessed()
- checkBranchIDs(t, testFramework, map[string]utxo.TransactionIDs{
- "Message1": testFramework.BranchIDs("A"),
- "Message1*": testFramework.BranchIDs("A*"),
- "Message2": testFramework.BranchIDs("A", "B"),
- "Message2*": testFramework.BranchIDs("A", "B*"),
- "Message3": testFramework.BranchIDs("A*"),
+ checkConflictIDs(t, testFramework, map[string]utxo.TransactionIDs{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block1*": testFramework.ConflictIDs("A*"),
+ "Block2": testFramework.ConflictIDs("A", "B"),
+ "Block2*": testFramework.ConflictIDs("A", "B*"),
+ "Block3": testFramework.ConflictIDs("A*"),
})
}
{
- testFramework.IssueMessages("Message4").WaitUntilAllTasksProcessed()
+ testFramework.IssueBlocks("Block4").WaitUntilAllTasksProcessed()
- checkBranchIDs(t, testFramework, map[string]utxo.TransactionIDs{
- "Message1": testFramework.BranchIDs("A"),
- "Message1*": testFramework.BranchIDs("A*"),
- "Message2": testFramework.BranchIDs("A", "B"),
- "Message2*": testFramework.BranchIDs("A", "B*"),
- "Message3": testFramework.BranchIDs("A*"),
- "Message4": testFramework.BranchIDs("A*"),
+ checkConflictIDs(t, testFramework, map[string]utxo.TransactionIDs{
+ "Block1": testFramework.ConflictIDs("A"),
+ "Block1*": testFramework.ConflictIDs("A*"),
+ "Block2": testFramework.ConflictIDs("A", "B"),
+ "Block2*": testFramework.ConflictIDs("A", "B*"),
+ "Block3": testFramework.ConflictIDs("A*"),
+ "Block4": testFramework.ConflictIDs("A*"),
})
}
}
@@ -1409,12 +1409,12 @@ func TestFutureConeDislike(t *testing.T) {
func TestMultiThreadedBookingAndForkingParallel(t *testing.T) {
debug.SetEnabled(true)
const layersNum = 127
- const widthSize = 8 // since we reference all messages in the layer below, this is limited by the max parents
+ const widthSize = 8 // since we reference all blocks in the layer below, this is limited by the max parents
tangle := NewTestTangle(WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("G", layersNum),
)
@@ -1422,28 +1422,28 @@ func TestMultiThreadedBookingAndForkingParallel(t *testing.T) {
tangle.Setup()
// Create base-layer outputs to double-spend
- genesisMessageOptions := []MessageOption{
+ genesisBlockOptions := []BlockOption{
WithStrongParents("Genesis"),
WithInputs("G"),
}
for layer := 0; layer < layersNum; layer++ {
- genesisMessageOptions = append(genesisMessageOptions, WithOutput(fmt.Sprintf("G.%d", layer), 1))
+ genesisBlockOptions = append(genesisBlockOptions, WithOutput(fmt.Sprintf("G.%d", layer), 1))
}
- testFramework.CreateMessage("Message.G", genesisMessageOptions...)
- testFramework.IssueMessages("Message.G").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block.G", genesisBlockOptions...)
+ testFramework.IssueBlocks("Block.G").WaitUntilAllTasksProcessed()
- msgs := make([]string, 0)
+ blks := make([]string, 0)
for layer := 0; layer < layersNum; layer++ {
for width := 0; width < widthSize; width++ {
- msgName := fmt.Sprintf("Message.%d.%d", layer, width)
+ blkName := fmt.Sprintf("Block.%d.%d", layer, width)
strongParents := make([]string, 0)
if layer == 0 {
- strongParents = append(strongParents, "Message.G")
+ strongParents = append(strongParents, "Block.G")
} else {
for innerWidth := 0; innerWidth < widthSize; innerWidth++ {
- strongParents = append(strongParents, fmt.Sprintf("Message.%d.%d", layer-1, innerWidth))
+ strongParents = append(strongParents, fmt.Sprintf("Block.%d.%d", layer-1, innerWidth))
}
}
@@ -1451,7 +1451,7 @@ func TestMultiThreadedBookingAndForkingParallel(t *testing.T) {
var output string
var conflict string
- // We fork on the first two messages for each layer
+ // We fork on the first two blocks for each layer
if width < 2 {
input = fmt.Sprintf("G.%d", layer)
output = fmt.Sprintf("O.%d.%d", layer, width)
@@ -1459,14 +1459,14 @@ func TestMultiThreadedBookingAndForkingParallel(t *testing.T) {
}
if input != "" {
- testFramework.CreateMessage(msgName, WithStrongParents(strongParents...), WithInputs(input), WithOutput(output, 1))
- testFramework.RegisterBranchID(conflict, msgName)
- testFramework.RegisterTransactionID(conflict, msgName)
+ testFramework.CreateBlock(blkName, WithStrongParents(strongParents...), WithInputs(input), WithOutput(output, 1))
+ testFramework.RegisterConflictID(conflict, blkName)
+ testFramework.RegisterTransactionID(conflict, blkName)
} else {
- testFramework.CreateMessage(msgName, WithStrongParents(strongParents...))
+ testFramework.CreateBlock(blkName, WithStrongParents(strongParents...))
}
- msgs = append(msgs, msgName)
+ blks = append(blks, blkName)
}
}
@@ -1474,11 +1474,11 @@ func TestMultiThreadedBookingAndForkingParallel(t *testing.T) {
var wg sync.WaitGroup
- for i := 0; i < len(msgs); i++ {
+ for i := 0; i < len(blks); i++ {
wg.Add(1)
go func(i int) {
time.Sleep(time.Duration(int(50 * 1000 * rand.Float32())))
- testFramework.IssueMessages(msgs[i])
+ testFramework.IssueBlocks(blks[i])
wg.Done()
}(i)
}
@@ -1489,39 +1489,39 @@ func TestMultiThreadedBookingAndForkingParallel(t *testing.T) {
expectedConflicts := make(map[string]utxo.TransactionIDs)
for layer := 0; layer < layersNum; layer++ {
for width := 0; width < widthSize; width++ {
- msgName := fmt.Sprintf("Message.%d.%d", layer, width)
- branches := make([]string, 0)
+ blkName := fmt.Sprintf("Block.%d.%d", layer, width)
+ conflicts := make([]string, 0)
// Add conflicts of the current layer
if width < 2 {
- branches = append(branches, fmt.Sprintf("C.%d.%d", layer, width))
+ conflicts = append(conflicts, fmt.Sprintf("C.%d.%d", layer, width))
}
for innerLayer := layer - 1; innerLayer >= 0; innerLayer-- {
- branches = append(branches, fmt.Sprintf("C.%d.%d", innerLayer, 0))
- branches = append(branches, fmt.Sprintf("C.%d.%d", innerLayer, 1))
+ conflicts = append(conflicts, fmt.Sprintf("C.%d.%d", innerLayer, 0))
+ conflicts = append(conflicts, fmt.Sprintf("C.%d.%d", innerLayer, 1))
}
if layer == 0 && width >= 2 {
- expectedConflicts[msgName] = utxo.NewTransactionIDs()
+ expectedConflicts[blkName] = utxo.NewTransactionIDs()
continue
}
- expectedConflicts[msgName] = testFramework.BranchIDs(branches...)
+ expectedConflicts[blkName] = testFramework.ConflictIDs(conflicts...)
}
}
- checkBranchIDs(t, testFramework, expectedConflicts)
+ checkConflictIDs(t, testFramework, expectedConflicts)
}
func TestMultiThreadedBookingAndForkingNested(t *testing.T) {
const layersNum = 50
- const widthSize = 8 // since we reference all messages in the layer below, this is limited by the max parents
+ const widthSize = 8 // since we reference all blocks in the layer below, this is limited by the max parents
tangle := NewTestTangle(WithConflictDAGOptions(conflictdag.WithMergeToMaster(false)))
defer tangle.Shutdown()
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
WithGenesisOutput("G", widthSize),
)
@@ -1529,31 +1529,31 @@ func TestMultiThreadedBookingAndForkingNested(t *testing.T) {
tangle.Setup()
// Create base-layer outputs to double-spend
- genesisMessageOptions := []MessageOption{
+ genesisBlockOptions := []BlockOption{
WithStrongParents("Genesis"),
WithInputs("G"),
}
for layer := 0; layer < widthSize; layer++ {
- genesisMessageOptions = append(genesisMessageOptions, WithOutput(fmt.Sprintf("G.%d", layer), 1))
+ genesisBlockOptions = append(genesisBlockOptions, WithOutput(fmt.Sprintf("G.%d", layer), 1))
}
- testFramework.CreateMessage("Message.G", genesisMessageOptions...)
- testFramework.IssueMessages("Message.G").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Block.G", genesisBlockOptions...)
+ testFramework.IssueBlocks("Block.G").WaitUntilAllTasksProcessed()
- msgs := make([]string, 0)
+ blks := make([]string, 0)
for layer := 0; layer < layersNum; layer++ {
for width := 0; width < widthSize; width++ {
- msgName := fmt.Sprintf("Message.%d.%d", layer, width)
+ blkName := fmt.Sprintf("Block.%d.%d", layer, width)
strongParents := make([]string, 0)
likeParents := make([]string, 0)
if layer == 0 {
- strongParents = append(strongParents, "Message.G")
+ strongParents = append(strongParents, "Block.G")
} else {
for innerWidth := 0; innerWidth < widthSize; innerWidth++ {
- strongParents = append(strongParents, fmt.Sprintf("Message.%d.%d", layer-1, innerWidth))
+ strongParents = append(strongParents, fmt.Sprintf("Block.%d.%d", layer-1, innerWidth))
// We only like the first conflict over the second, to fork it on the next layer.
if innerWidth%2 == 0 {
- likeParents = append(likeParents, fmt.Sprintf("Message.%d.%d", layer-1, innerWidth))
+ likeParents = append(likeParents, fmt.Sprintf("Block.%d.%d", layer-1, innerWidth))
}
}
}
@@ -1571,21 +1571,21 @@ func TestMultiThreadedBookingAndForkingNested(t *testing.T) {
output = fmt.Sprintf("O.%d.%d", layer, width)
conflict = fmt.Sprintf("C.%d.%d", layer, width)
- testFramework.CreateMessage(msgName, WithStrongParents(strongParents...), WithShallowLikeParents(likeParents...), WithInputs(input), WithOutput(output, 1))
- testFramework.RegisterBranchID(conflict, msgName)
- testFramework.RegisterTransactionID(conflict, msgName)
+ testFramework.CreateBlock(blkName, WithStrongParents(strongParents...), WithShallowLikeParents(likeParents...), WithInputs(input), WithOutput(output, 1))
+ testFramework.RegisterConflictID(conflict, blkName)
+ testFramework.RegisterTransactionID(conflict, blkName)
- msgs = append(msgs, msgName)
+ blks = append(blks, blkName)
}
}
var wg sync.WaitGroup
rand.Seed(time.Now().UnixNano())
- for i := 0; i < len(msgs); i++ {
+ for i := 0; i < len(blks); i++ {
wg.Add(1)
go func(i int) {
time.Sleep(time.Duration(int(50 * 1000 * rand.Float32())))
- testFramework.IssueMessages(msgs[i])
+ testFramework.IssueBlocks(blks[i])
wg.Done()
}(i)
}
@@ -1595,101 +1595,101 @@ func TestMultiThreadedBookingAndForkingNested(t *testing.T) {
expectedConflicts := make(map[string]utxo.TransactionIDs)
for layer := 0; layer < layersNum; layer++ {
for width := 0; width < widthSize; width++ {
- msgName := fmt.Sprintf("Message.%d.%d", layer, width)
- branches := make([]string, 0)
+ blkName := fmt.Sprintf("Block.%d.%d", layer, width)
+ conflicts := make([]string, 0)
// Add conflict of the current layer
- branches = append(branches, fmt.Sprintf("C.%d.%d", layer, width))
+ conflicts = append(conflicts, fmt.Sprintf("C.%d.%d", layer, width))
// Add conflicts of the previous layers
for innerLayer := layer - 1; innerLayer >= 0; innerLayer-- {
for innerWidth := 0; innerWidth < widthSize; innerWidth += 2 {
- branches = append(branches, fmt.Sprintf("C.%d.%d", innerLayer, innerWidth))
+ conflicts = append(conflicts, fmt.Sprintf("C.%d.%d", innerLayer, innerWidth))
}
}
- expectedConflicts[msgName] = testFramework.BranchIDs(branches...)
+ expectedConflicts[blkName] = testFramework.ConflictIDs(conflicts...)
}
}
- checkNormalizedBranchIDsContained(t, testFramework, expectedConflicts)
+ checkNormalizedConflictIDsContained(t, testFramework, expectedConflicts)
}
-func checkMarkers(t *testing.T, testFramework *MessageTestFramework, expectedMarkers map[string]*markers.Markers) {
- for messageID, expectedMarkersOfMessage := range expectedMarkers {
- assert.True(t, testFramework.tangle.Storage.MessageMetadata(testFramework.Message(messageID).ID()).Consume(func(messageMetadata *MessageMetadata) {
- assert.True(t, expectedMarkersOfMessage.Equals(messageMetadata.StructureDetails().PastMarkers()), "Markers of %s are wrong.\n"+
- "Expected: %+v\nActual: %+v", messageID, expectedMarkersOfMessage, messageMetadata.StructureDetails().PastMarkers)
+func checkMarkers(t *testing.T, testFramework *BlockTestFramework, expectedMarkers map[string]*markers.Markers) {
+ for blockID, expectedMarkersOfBlock := range expectedMarkers {
+ assert.True(t, testFramework.tangle.Storage.BlockMetadata(testFramework.Block(blockID).ID()).Consume(func(blockMetadata *BlockMetadata) {
+ assert.True(t, expectedMarkersOfBlock.Equals(blockMetadata.StructureDetails().PastMarkers()), "Markers of %s are wrong.\n"+
+ "Expected: %+v\nActual: %+v", blockID, expectedMarkersOfBlock, blockMetadata.StructureDetails().PastMarkers)
}))
- // if we have only a single marker - check if the marker is mapped to this message (or its inherited past marker)
- if expectedMarkersOfMessage.Size() == 1 {
- currentMarker := expectedMarkersOfMessage.Marker()
+ // if we have only a single marker - check if the marker is mapped to this block (or its inherited past marker)
+ if expectedMarkersOfBlock.Size() == 1 {
+ currentMarker := expectedMarkersOfBlock.Marker()
- mappedMessageIDOfMarker := testFramework.tangle.Booker.MarkersManager.MessageID(currentMarker)
- currentMessageID := testFramework.Message(messageID).ID()
+ mappedBlockIDOfMarker := testFramework.tangle.Booker.MarkersManager.BlockID(currentMarker)
+ currentBlockID := testFramework.Block(blockID).ID()
- if mappedMessageIDOfMarker == currentMessageID {
+ if mappedBlockIDOfMarker == currentBlockID {
continue
}
- assert.True(t, testFramework.tangle.Storage.MessageMetadata(mappedMessageIDOfMarker).Consume(func(messageMetadata *MessageMetadata) {
- // Messages attaching to Genesis can have 0,0 as a PastMarker, so do not check Markers -> Message.
+ assert.True(t, testFramework.tangle.Storage.BlockMetadata(mappedBlockIDOfMarker).Consume(func(blockMetadata *BlockMetadata) {
+ // Blocks attaching to Genesis can have 0,0 as a PastMarker, so do not check Markers -> Block.
if currentMarker.SequenceID() == 0 && currentMarker.Index() == 0 {
return
}
- if assert.True(t, messageMetadata.StructureDetails().IsPastMarker(), "Message with %s should be PastMarker", messageMetadata.ID()) {
- assert.True(t, messageMetadata.StructureDetails().PastMarkers().Marker() == currentMarker, "PastMarker of %s is wrong.\n"+
- "Expected: %+v\nActual: %+v", messageMetadata.ID(), currentMarker, messageMetadata.StructureDetails().PastMarkers().Marker())
+ if assert.True(t, blockMetadata.StructureDetails().IsPastMarker(), "Block with %s should be PastMarker", blockMetadata.ID()) {
+ assert.True(t, blockMetadata.StructureDetails().PastMarkers().Marker() == currentMarker, "PastMarker of %s is wrong.\n"+
+ "Expected: %+v\nActual: %+v", blockMetadata.ID(), currentMarker, blockMetadata.StructureDetails().PastMarkers().Marker())
}
- }), "failed to load Message with %s", mappedMessageIDOfMarker)
+ }), "failed to load Block with %s", mappedBlockIDOfMarker)
}
}
}
-func checkBranchIDs(t *testing.T, testFramework *MessageTestFramework, expectedBranchIDs map[string]*set.AdvancedSet[utxo.TransactionID]) {
- for messageID, messageExpectedBranchIDs := range expectedBranchIDs {
- // messageMetadata := testFramework.MessageMetadata(messageID)
- // fmt.Println("Add:", messageMetadata.addedBranchIDs, "Sub:", messageMetadata.subtractedBranchIDs)
+func checkConflictIDs(t *testing.T, testFramework *BlockTestFramework, expectedConflictIDs map[string]*set.AdvancedSet[utxo.TransactionID]) {
+ for blockID, blockExpectedConflictIDs := range expectedConflictIDs {
+ // blockMetadata := testFramework.BlockMetadata(blockID)
+ // fmt.Println("Add:", blockMetadata.addedConflictIDs, "Sub:", blockMetadata.subtractedConflictIDs)
- retrievedBranchIDs, errRetrieve := testFramework.tangle.Booker.MessageBranchIDs(testFramework.Message(messageID).ID())
+ retrievedConflictIDs, errRetrieve := testFramework.tangle.Booker.BlockConflictIDs(testFramework.Block(blockID).ID())
assert.NoError(t, errRetrieve)
- assert.True(t, messageExpectedBranchIDs.Equal(retrievedBranchIDs), "BranchID of %s should be %s but is %s", messageID, messageExpectedBranchIDs, retrievedBranchIDs)
+ assert.True(t, blockExpectedConflictIDs.Equal(retrievedConflictIDs), "ConflictID of %s should be %s but is %s", blockID, blockExpectedConflictIDs, retrievedConflictIDs)
}
}
-func checkNormalizedBranchIDsContained(t *testing.T, testFramework *MessageTestFramework, expectedContainedBranchIDs map[string]*set.AdvancedSet[utxo.TransactionID]) {
- for messageID, messageExpectedBranchIDs := range expectedContainedBranchIDs {
- retrievedBranchIDs, errRetrieve := testFramework.tangle.Booker.MessageBranchIDs(testFramework.Message(messageID).ID())
+func checkNormalizedConflictIDsContained(t *testing.T, testFramework *BlockTestFramework, expectedContainedConflictIDs map[string]*set.AdvancedSet[utxo.TransactionID]) {
+ for blockID, blockExpectedConflictIDs := range expectedContainedConflictIDs {
+ retrievedConflictIDs, errRetrieve := testFramework.tangle.Booker.BlockConflictIDs(testFramework.Block(blockID).ID())
assert.NoError(t, errRetrieve)
- normalizedRetrievedBranchIDs := retrievedBranchIDs.Clone()
- for it := retrievedBranchIDs.Iterator(); it.HasNext(); {
+ normalizedRetrievedConflictIDs := retrievedConflictIDs.Clone()
+ for it := retrievedConflictIDs.Iterator(); it.HasNext(); {
testFramework.tangle.Ledger.ConflictDAG.Storage.CachedConflict(it.Next()).Consume(func(b *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- normalizedRetrievedBranchIDs.DeleteAll(b.Parents())
+ normalizedRetrievedConflictIDs.DeleteAll(b.Parents())
})
}
- normalizedExpectedBranchIDs := messageExpectedBranchIDs.Clone()
- for it := messageExpectedBranchIDs.Iterator(); it.HasNext(); {
+ normalizedExpectedConflictIDs := blockExpectedConflictIDs.Clone()
+ for it := blockExpectedConflictIDs.Iterator(); it.HasNext(); {
testFramework.tangle.Ledger.ConflictDAG.Storage.CachedConflict(it.Next()).Consume(func(b *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- normalizedExpectedBranchIDs.DeleteAll(b.Parents())
+ normalizedExpectedConflictIDs.DeleteAll(b.Parents())
})
}
- assert.True(t, normalizedExpectedBranchIDs.Intersect(normalizedRetrievedBranchIDs).Size() == normalizedExpectedBranchIDs.Size(), "BranchID of %s should be %s but is %s", messageID, normalizedExpectedBranchIDs, normalizedRetrievedBranchIDs)
+ assert.True(t, normalizedExpectedConflictIDs.Intersect(normalizedRetrievedConflictIDs).Size() == normalizedExpectedConflictIDs.Size(), "ConflictID of %s should be %s but is %s", blockID, normalizedExpectedConflictIDs, normalizedRetrievedConflictIDs)
}
}
-func checkMessageMetadataDiffBranchIDs(t *testing.T, testFramework *MessageTestFramework, expectedDiffBranchIDs map[string][]*set.AdvancedSet[utxo.TransactionID]) {
- for messageID, expectedDiffBranchID := range expectedDiffBranchIDs {
- assert.True(t, testFramework.tangle.Storage.MessageMetadata(testFramework.Message(messageID).ID()).Consume(func(messageMetadata *MessageMetadata) {
- assert.True(t, expectedDiffBranchID[0].Equal(messageMetadata.AddedBranchIDs()), "AddBranchIDs of %s should be %s but is %s in the Metadata", messageID, expectedDiffBranchID[0], messageMetadata.AddedBranchIDs())
+func checkBlockMetadataDiffConflictIDs(t *testing.T, testFramework *BlockTestFramework, expectedDiffConflictIDs map[string][]*set.AdvancedSet[utxo.TransactionID]) {
+ for blockID, expectedDiffConflictID := range expectedDiffConflictIDs {
+ assert.True(t, testFramework.tangle.Storage.BlockMetadata(testFramework.Block(blockID).ID()).Consume(func(blockMetadata *BlockMetadata) {
+ assert.True(t, expectedDiffConflictID[0].Equal(blockMetadata.AddedConflictIDs()), "AddConflictIDs of %s should be %s but is %s in the Metadata", blockID, expectedDiffConflictID[0], blockMetadata.AddedConflictIDs())
}))
- assert.True(t, testFramework.tangle.Storage.MessageMetadata(testFramework.Message(messageID).ID()).Consume(func(messageMetadata *MessageMetadata) {
- assert.True(t, expectedDiffBranchID[1].Equal(messageMetadata.SubtractedBranchIDs()), "SubtractedBranchIDs of %s should be %s but is %s in the Metadata", messageID, expectedDiffBranchID[1], messageMetadata.SubtractedBranchIDs())
+ assert.True(t, testFramework.tangle.Storage.BlockMetadata(testFramework.Block(blockID).ID()).Consume(func(blockMetadata *BlockMetadata) {
+ assert.True(t, expectedDiffConflictID[1].Equal(blockMetadata.SubtractedConflictIDs()), "SubtractedConflictIDs of %s should be %s but is %s in the Metadata", blockID, expectedDiffConflictID[1], blockMetadata.SubtractedConflictIDs())
}))
}
}
diff --git a/packages/tangle/cmanaweightprovider.go b/packages/tangle/cmanaweightprovider.go
index bbe6d846c7..b105aed215 100644
--- a/packages/tangle/cmanaweightprovider.go
+++ b/packages/tangle/cmanaweightprovider.go
@@ -17,7 +17,6 @@ import (
func init() {
err := serix.DefaultAPI.RegisterTypeSettings(NodesActivityLog{}, serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsUint32))
-
if err != nil {
panic(fmt.Errorf("error registering GenericDataPayload type settings: %w", err))
}
@@ -93,10 +92,10 @@ func (c *CManaWeightProvider) Update(t time.Time, nodeID identity.ID) {
a.Add(t)
}
-// Weight returns the weight and total weight for the given message.
-func (c *CManaWeightProvider) Weight(message *Message) (weight, totalWeight float64) {
+// Weight returns the weight and total weight for the given block.
+func (c *CManaWeightProvider) Weight(block *Block) (weight, totalWeight float64) {
weights, totalWeight := c.WeightsOfRelevantVoters()
- return weights[identity.NewID(message.IssuerPublicKey())], totalWeight
+ return weights[identity.NewID(block.IssuerPublicKey())], totalWeight
}
// WeightsOfRelevantVoters returns all relevant weights.
diff --git a/packages/tangle/cmanaweightprovider_test.go b/packages/tangle/cmanaweightprovider_test.go
index 811f0740e6..14f6bd28d9 100644
--- a/packages/tangle/cmanaweightprovider_test.go
+++ b/packages/tangle/cmanaweightprovider_test.go
@@ -4,6 +4,7 @@ import (
"testing"
"time"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/hive.go/crypto"
"github.com/iotaledger/hive.go/identity"
"github.com/stretchr/testify/assert"
@@ -51,7 +52,7 @@ func TestCManaWeightProvider(t *testing.T) {
}
}
- tangleTime := time.Unix(DefaultGenesisTime, 0)
+ tangleTime := time.Unix(epoch.GenesisTime, 0)
timeRetrieverFunc := func() time.Time { return tangleTime }
weightProvider := NewCManaWeightProvider(manaRetrieverFunc, timeRetrieverFunc)
diff --git a/packages/tangle/consensusmanager.go b/packages/tangle/consensusmanager.go
index 6d3b465404..e5d27e2ef0 100644
--- a/packages/tangle/consensusmanager.go
+++ b/packages/tangle/consensusmanager.go
@@ -6,7 +6,7 @@ import (
// region OTVConsensusManager /////////////////////////////////////////////////////////////////////////////////////////////
-// OTVConsensusManager is the component in charge of forming opinions about branches.
+// OTVConsensusManager is the component in charge of forming opinions about conflicts.
type OTVConsensusManager struct {
consensus.Mechanism
}
diff --git a/packages/tangle/errors.go b/packages/tangle/errors.go
index b46be20e72..7b4f4f2e8e 100644
--- a/packages/tangle/errors.go
+++ b/packages/tangle/errors.go
@@ -5,6 +5,6 @@ import "github.com/cockroachdb/errors"
var (
// ErrNotBootstrapped is triggered when somebody tries to issue a Payload before the Tangle is fully bootstrapped.
ErrNotBootstrapped = errors.New("tangle not bootstrapped")
- // ErrParentsInvalid is returned when one or more parents of a message is invalid.
+ // ErrParentsInvalid is returned when one or more parents of a block is invalid.
ErrParentsInvalid = errors.New("one or more parents is invalid")
)
diff --git a/packages/tangle/events.go b/packages/tangle/events.go
index 3897ce92d2..578e186eb0 100644
--- a/packages/tangle/events.go
+++ b/packages/tangle/events.go
@@ -15,8 +15,8 @@ import (
// Events represents events happening in the Tangle.
type Events struct {
- // MessageInvalid is triggered when a Message is detected to be objectively invalid.
- MessageInvalid *event.Event[*MessageInvalidEvent]
+ // BlockInvalid is triggered when a Block is detected to be objectively invalid.
+ BlockInvalid *event.Event[*BlockInvalidEvent]
// Error is triggered when the Tangle faces an error from which it can not recover.
Error *event.Event[error]
@@ -25,54 +25,56 @@ type Events struct {
// newEvents returns a new Events object.
func newEvents() (new *Events) {
return &Events{
- MessageInvalid: event.New[*MessageInvalidEvent](),
- Error: event.New[error](),
+ BlockInvalid: event.New[*BlockInvalidEvent](),
+ Error: event.New[error](),
}
}
-// MessageInvalidEvent is struct that is passed along with triggering a messageInvalidEvent.
-type MessageInvalidEvent struct {
- MessageID MessageID
- Error error
+// BlockInvalidEvent is struct that is passed along with triggering a blockInvalidEvent.
+type BlockInvalidEvent struct {
+ BlockID BlockID
+ Error error
}
// ConfirmationEvents are events entailing confirmation.
type ConfirmationEvents struct {
- MessageConfirmed *event.Event[*MessageConfirmedEvent]
+ BlockAccepted *event.Event[*BlockAcceptedEvent]
+ BlockOrphaned *event.Event[*BlockAcceptedEvent]
}
// NewConfirmationEvents returns a new ConfirmationEvents object.
func NewConfirmationEvents() (new *ConfirmationEvents) {
return &ConfirmationEvents{
- MessageConfirmed: event.New[*MessageConfirmedEvent](),
+ BlockAccepted: event.New[*BlockAcceptedEvent](),
+ BlockOrphaned: event.New[*BlockAcceptedEvent](),
}
}
-type MessageConfirmedEvent struct {
- Message *Message
+type BlockAcceptedEvent struct {
+ Block *Block
}
-// region MessageFactoryEvents /////////////////////////////////////////////////////////////////////////////////////////
+// region BlockFactoryEvents /////////////////////////////////////////////////////////////////////////////////////////
-// MessageFactoryEvents represents events happening on a message factory.
-type MessageFactoryEvents struct {
- // Fired when a message is built including tips, sequence number and other metadata.
- MessageConstructed *event.Event[*MessageConstructedEvent]
+// BlockFactoryEvents represents events happening on a block factory.
+type BlockFactoryEvents struct {
+ // Fired when a block is built including tips, sequence number and other metadata.
+ BlockConstructed *event.Event[*BlockConstructedEvent]
// Fired when an error occurred.
Error *event.Event[error]
}
-// NewMessageFactoryEvents returns a new MessageFactoryEvents object.
-func NewMessageFactoryEvents() (new *MessageFactoryEvents) {
- return &MessageFactoryEvents{
- MessageConstructed: event.New[*MessageConstructedEvent](),
- Error: event.New[error](),
+// NewBlockFactoryEvents returns a new BlockFactoryEvents object.
+func NewBlockFactoryEvents() (new *BlockFactoryEvents) {
+ return &BlockFactoryEvents{
+ BlockConstructed: event.New[*BlockConstructedEvent](),
+ Error: event.New[error](),
}
}
-type MessageConstructedEvent struct {
- Message *Message
+type BlockConstructedEvent struct {
+ Block *Block
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -81,14 +83,14 @@ type MessageConstructedEvent struct {
// BookerEvents represents events happening in the Booker.
type BookerEvents struct {
- // MessageBooked is triggered when a Message was booked (it's Branch, and it's Payload's Branch were determined).
- MessageBooked *event.Event[*MessageBookedEvent]
+ // BlockBooked is triggered when a Block was booked (it's Conflict, and it's Payload's Conflict were determined).
+ BlockBooked *event.Event[*BlockBookedEvent]
- // MessageBranchUpdated is triggered when the BranchID of a Message is changed in its MessageMetadata.
- MessageBranchUpdated *event.Event[*MessageBranchUpdatedEvent]
+ // BlockConflictUpdated is triggered when the ConflictID of a Block is changed in its BlockMetadata.
+ BlockConflictUpdated *event.Event[*BlockConflictUpdatedEvent]
- // MarkerBranchAdded is triggered when a Marker is mapped to a new BranchID.
- MarkerBranchAdded *event.Event[*MarkerBranchAddedEvent]
+ // MarkerConflictAdded is triggered when a Marker is mapped to a new ConflictID.
+ MarkerConflictAdded *event.Event[*MarkerConflictAddedEvent]
// Error gets triggered when the Booker faces an unexpected error.
Error *event.Event[error]
@@ -96,25 +98,25 @@ type BookerEvents struct {
func NewBookerEvents() (new *BookerEvents) {
return &BookerEvents{
- MessageBooked: event.New[*MessageBookedEvent](),
- MessageBranchUpdated: event.New[*MessageBranchUpdatedEvent](),
- MarkerBranchAdded: event.New[*MarkerBranchAddedEvent](),
+ BlockBooked: event.New[*BlockBookedEvent](),
+ BlockConflictUpdated: event.New[*BlockConflictUpdatedEvent](),
+ MarkerConflictAdded: event.New[*MarkerConflictAddedEvent](),
Error: event.New[error](),
}
}
-type MessageBookedEvent struct {
- MessageID MessageID
+type BlockBookedEvent struct {
+ BlockID BlockID
}
-type MessageBranchUpdatedEvent struct {
- MessageID MessageID
- BranchID utxo.TransactionID
+type BlockConflictUpdatedEvent struct {
+ BlockID BlockID
+ ConflictID utxo.TransactionID
}
-type MarkerBranchAddedEvent struct {
- Marker markers.Marker
- NewBranchID utxo.TransactionID
+type MarkerConflictAddedEvent struct {
+ Marker markers.Marker
+ NewConflictID utxo.TransactionID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -123,36 +125,36 @@ type MarkerBranchAddedEvent struct {
// SchedulerEvents represents events happening in the Scheduler.
type SchedulerEvents struct {
- // MessageScheduled is triggered when a message is ready to be scheduled.
- MessageScheduled *event.Event[*MessageScheduledEvent]
- // MessageDiscarded is triggered when a message is removed from the longest mana-scaled queue when the buffer is full.
- MessageDiscarded *event.Event[*MessageDiscardedEvent]
- // MessageSkipped is triggered when a message is confirmed before it's scheduled, and is skipped by the scheduler.
- MessageSkipped *event.Event[*MessageSkippedEvent]
+ // BlockScheduled is triggered when a block is ready to be scheduled.
+ BlockScheduled *event.Event[*BlockScheduledEvent]
+ // BlockDiscarded is triggered when a block is removed from the longest mana-scaled queue when the buffer is full.
+ BlockDiscarded *event.Event[*BlockDiscardedEvent]
+ // BlockSkipped is triggered when a block is confirmed before it's scheduled, and is skipped by the scheduler.
+ BlockSkipped *event.Event[*BlockSkippedEvent]
NodeBlacklisted *event.Event[*NodeBlacklistedEvent]
Error *event.Event[error]
}
func NewSchedulerEvents() (new *SchedulerEvents) {
return &SchedulerEvents{
- MessageScheduled: event.New[*MessageScheduledEvent](),
- MessageDiscarded: event.New[*MessageDiscardedEvent](),
- MessageSkipped: event.New[*MessageSkippedEvent](),
- NodeBlacklisted: event.New[*NodeBlacklistedEvent](),
- Error: event.New[error](),
+ BlockScheduled: event.New[*BlockScheduledEvent](),
+ BlockDiscarded: event.New[*BlockDiscardedEvent](),
+ BlockSkipped: event.New[*BlockSkippedEvent](),
+ NodeBlacklisted: event.New[*NodeBlacklistedEvent](),
+ Error: event.New[error](),
}
}
-type MessageScheduledEvent struct {
- MessageID MessageID
+type BlockScheduledEvent struct {
+ BlockID BlockID
}
-type MessageDiscardedEvent struct {
- MessageID MessageID
+type BlockDiscardedEvent struct {
+ BlockID BlockID
}
-type MessageSkippedEvent struct {
- MessageID MessageID
+type BlockSkippedEvent struct {
+ BlockID BlockID
}
type NodeBlacklistedEvent struct {
@@ -165,25 +167,25 @@ type NodeBlacklistedEvent struct {
// ApprovalWeightManagerEvents represents events happening in the ApprovalWeightManager.
type ApprovalWeightManagerEvents struct {
- // MessageProcessed is triggered once a message is finished being processed by the ApprovalWeightManager.
- MessageProcessed *event.Event[*MessageProcessedEvent]
- // BranchWeightChanged is triggered when a branch's weight changed.
- BranchWeightChanged *event.Event[*BranchWeightChangedEvent]
+ // BlockProcessed is triggered once a block is finished being processed by the ApprovalWeightManager.
+ BlockProcessed *event.Event[*BlockProcessedEvent]
+ // ConflictWeightChanged is triggered when a conflict's weight changed.
+ ConflictWeightChanged *event.Event[*ConflictWeightChangedEvent]
// MarkerWeightChanged is triggered when a marker's weight changed.
MarkerWeightChanged *event.Event[*MarkerWeightChangedEvent]
}
func newApprovalWeightManagerEvents() (new *ApprovalWeightManagerEvents) {
return &ApprovalWeightManagerEvents{
- MessageProcessed: event.New[*MessageProcessedEvent](),
- BranchWeightChanged: event.New[*BranchWeightChangedEvent](),
- MarkerWeightChanged: event.New[*MarkerWeightChangedEvent](),
+ BlockProcessed: event.New[*BlockProcessedEvent](),
+ ConflictWeightChanged: event.New[*ConflictWeightChangedEvent](),
+ MarkerWeightChanged: event.New[*MarkerWeightChangedEvent](),
}
}
-// MessageProcessedEvent holds information about a processed message.
-type MessageProcessedEvent struct {
- MessageID MessageID
+// BlockProcessedEvent holds information about a processed block.
+type BlockProcessedEvent struct {
+ BlockID BlockID
}
// MarkerWeightChangedEvent holds information about a marker and its updated weight.
@@ -192,10 +194,10 @@ type MarkerWeightChangedEvent struct {
Weight float64
}
-// BranchWeightChangedEvent holds information about a branch and its updated weight.
-type BranchWeightChangedEvent struct {
- BranchID utxo.TransactionID
- Weight float64
+// ConflictWeightChangedEvent holds information about a conflict and its updated weight.
+type ConflictWeightChangedEvent struct {
+ ConflictID utxo.TransactionID
+ Weight float64
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -204,62 +206,62 @@ type BranchWeightChangedEvent struct {
// SolidifierEvents represents events happening in the Solidifier.
type SolidifierEvents struct {
- // MessageSolid is triggered when a message becomes solid, i.e. its past cone is known and solid.
- MessageSolid *event.Event[*MessageSolidEvent]
+ // BlockSolid is triggered when a block becomes solid, i.e. its past cone is known and solid.
+ BlockSolid *event.Event[*BlockSolidEvent]
- // MessageMissing is triggered when a message references an unknown parent Message.
- MessageMissing *event.Event[*MessageMissingEvent]
+ // BlockMissing is triggered when a block references an unknown parent Block.
+ BlockMissing *event.Event[*BlockMissingEvent]
}
func newSolidifierEvents() (new *SolidifierEvents) {
return &SolidifierEvents{
- MessageSolid: event.New[*MessageSolidEvent](),
- MessageMissing: event.New[*MessageMissingEvent](),
+ BlockSolid: event.New[*BlockSolidEvent](),
+ BlockMissing: event.New[*BlockMissingEvent](),
}
}
-type MessageSolidEvent struct {
- Message *Message
+type BlockSolidEvent struct {
+ Block *Block
}
-type MessageMissingEvent struct {
- MessageID MessageID
+type BlockMissingEvent struct {
+ BlockID BlockID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region StorageEvents ////////////////////////////////////////////////////////////////////////////////////////////////
-// StorageEvents represents events happening on the message store.
+// StorageEvents represents events happening on the block store.
type StorageEvents struct {
- // Fired when a message has been stored.
- MessageStored *event.Event[*MessageStoredEvent]
+ // Fired when a block has been stored.
+ BlockStored *event.Event[*BlockStoredEvent]
- // Fired when a message was removed from storage.
- MessageRemoved *event.Event[*MessageRemovedEvent]
+ // Fired when a block was removed from storage.
+ BlockRemoved *event.Event[*BlockRemovedEvent]
- // Fired when a message which was previously marked as missing was received.
- MissingMessageStored *event.Event[*MissingMessageStoredEvent]
+ // Fired when a block which was previously marked as missing was received.
+ MissingBlockStored *event.Event[*MissingBlockStoredEvent]
}
func newStorageEvents() (new *StorageEvents) {
return &StorageEvents{
- MessageStored: event.New[*MessageStoredEvent](),
- MessageRemoved: event.New[*MessageRemovedEvent](),
- MissingMessageStored: event.New[*MissingMessageStoredEvent](),
+ BlockStored: event.New[*BlockStoredEvent](),
+ BlockRemoved: event.New[*BlockRemovedEvent](),
+ MissingBlockStored: event.New[*MissingBlockStoredEvent](),
}
}
-type MessageStoredEvent struct {
- Message *Message
+type BlockStoredEvent struct {
+ Block *Block
}
-type MessageRemovedEvent struct {
- MessageID MessageID
+type BlockRemovedEvent struct {
+ BlockID BlockID
}
-type MissingMessageStoredEvent struct {
- MessageID MessageID
+type MissingBlockStoredEvent struct {
+ BlockID BlockID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -268,18 +270,18 @@ type MissingMessageStoredEvent struct {
// DispatcherEvents represents events happening in the Dispatcher.
type DispatcherEvents struct {
- // MessageDispatched is triggered when a message is already scheduled and thus ready to be dispatched.
- MessageDispatched *event.Event[*MessageDispatchedEvent]
+ // BlockDispatched is triggered when a block is already scheduled and thus ready to be dispatched.
+ BlockDispatched *event.Event[*BlockDispatchedEvent]
}
func newDispatcherEvents() (new *DispatcherEvents) {
return &DispatcherEvents{
- MessageDispatched: event.New[*MessageDispatchedEvent](),
+ BlockDispatched: event.New[*BlockDispatchedEvent](),
}
}
-type MessageDispatchedEvent struct {
- MessageID MessageID
+type BlockDispatchedEvent struct {
+ BlockID BlockID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -288,47 +290,47 @@ type MessageDispatchedEvent struct {
// ParserEvents represents events happening in the Parser.
type ParserEvents struct {
- // Fired when a message was parsed.
- MessageParsed *event.Event[*MessageParsedEvent]
+ // Fired when a block was parsed.
+ BlockParsed *event.Event[*BlockParsedEvent]
// Fired when submitted bytes are rejected by a filter.
BytesRejected *event.Event[*BytesRejectedEvent]
- // Fired when a message got rejected by a filter.
- MessageRejected *event.Event[*MessageRejectedEvent]
+ // Fired when a block got rejected by a filter.
+ BlockRejected *event.Event[*BlockRejectedEvent]
}
func newParserEvents() (new *ParserEvents) {
return &ParserEvents{
- MessageParsed: event.New[*MessageParsedEvent](),
- BytesRejected: event.New[*BytesRejectedEvent](),
- MessageRejected: event.New[*MessageRejectedEvent](),
+ BlockParsed: event.New[*BlockParsedEvent](),
+ BytesRejected: event.New[*BytesRejectedEvent](),
+ BlockRejected: event.New[*BlockRejectedEvent](),
}
}
// BytesRejectedEvent holds the information provided by the BytesRejected event that gets triggered when the bytes of a
-// Message did not pass the parsing step.
+// Block did not pass the parsing step.
type BytesRejectedEvent struct {
Bytes []byte
Peer *peer.Peer
Error error
}
-// MessageRejectedEvent holds the information provided by the MessageRejected event that gets triggered when the Message
+// BlockRejectedEvent holds the information provided by the BlockRejected event that gets triggered when the Block
// was detected to be invalid.
-type MessageRejectedEvent struct {
- Message *Message
- Peer *peer.Peer
- Error error
+type BlockRejectedEvent struct {
+ Block *Block
+ Peer *peer.Peer
+ Error error
}
-// MessageParsedEvent holds the information provided by the MessageParsed event that gets triggered when a message was
+// BlockParsedEvent holds the information provided by the BlockParsed event that gets triggered when a block was
// fully parsed and syntactically validated.
-type MessageParsedEvent struct {
- // Message contains the parsed Message.
- Message *Message
+type BlockParsedEvent struct {
+ // Block contains the parsed Block.
+ Block *Block
- // Peer contains the node that sent this Message to the node.
+ // Peer contains the node that sent this Block to the node.
Peer *peer.Peer
}
@@ -336,9 +338,9 @@ type MessageParsedEvent struct {
// region RequesterEvents //////////////////////////////////////////////////////////////////////////////////////////////
-// RequesterEvents represents events happening on a message requester.
+// RequesterEvents represents events happening on a block requester.
type RequesterEvents struct {
- // RequestIssued is an event that is triggered when the requester wants to request the given Message from its
+ // RequestIssued is an event that is triggered when the requester wants to request the given Block from its
// neighbors.
RequestIssued *event.Event[*RequestIssuedEvent]
@@ -362,19 +364,19 @@ func newRequesterEvents() (new *RequesterEvents) {
}
type RequestIssuedEvent struct {
- MessageID MessageID
+ BlockID BlockID
}
type RequestStartedEvent struct {
- MessageID MessageID
+ BlockID BlockID
}
type RequestStoppedEvent struct {
- MessageID MessageID
+ BlockID BlockID
}
type RequestFailedEvent struct {
- MessageID MessageID
+ BlockID BlockID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -385,6 +387,7 @@ type RequestFailedEvent struct {
type TimeManagerEvents struct {
// Fired when the nodes sync status changes.
SyncChanged *event.Event[*SyncChangedEvent]
+ Bootstrapped *event.Event[*BootstrappedEvent]
AcceptanceTimeUpdated *event.Event[*TimeUpdate]
ConfirmedTimeUpdated *event.Event[*TimeUpdate]
}
@@ -394,6 +397,7 @@ func newTimeManagerEvents() (new *TimeManagerEvents) {
SyncChanged: event.New[*SyncChangedEvent](),
AcceptanceTimeUpdated: event.New[*TimeUpdate](),
ConfirmedTimeUpdated: event.New[*TimeUpdate](),
+ Bootstrapped: event.New[*BootstrappedEvent](),
}
}
@@ -402,9 +406,17 @@ type SyncChangedEvent struct {
Synced bool
}
+// BootstrappedEvent represents a bootstrapped event.
+type BootstrappedEvent struct{}
+
// TimeUpdate represents an update in Tangle Time.
type TimeUpdate struct {
- NewTime time.Time
+ // BlockID is the ID of the block that caused the time update.
+ BlockID BlockID
+ // ATT is the new Acceptance Tangle Time.
+ ATT time.Time
+ // UpdateTime is the wall clock time when the update has occurred.
+ UpdateTime time.Time
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -427,11 +439,11 @@ func newTipManagerEvents() (new *TipManagerEvents) {
}
}
-// TipEvent holds the information provided by the TipEvent event that gets triggered when a message gets added or
+// TipEvent holds the information provided by the TipEvent event that gets triggered when a block gets added or
// removed as tip.
type TipEvent struct {
- // MessageID of the added/removed tip.
- MessageID MessageID
+ // BlockID of the added/removed tip.
+ BlockID BlockID
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/markersmanager.go b/packages/tangle/markersmanager.go
index 7121d38a5e..407e75ffb4 100644
--- a/packages/tangle/markersmanager.go
+++ b/packages/tangle/markersmanager.go
@@ -9,31 +9,31 @@ import (
// region MarkersManager ///////////////////////////////////////////////////////////////////////////////////////////////
-// BranchMarkersMapper is a Tangle component that takes care of managing the Markers which are used to infer structural
+// ConflictMarkersMapper is a Tangle component that takes care of managing the Markers which are used to infer structural
// information about the Tangle in an efficient way.
-type BranchMarkersMapper struct {
+type ConflictMarkersMapper struct {
tangle *Tangle
*markers.Manager
}
-// NewBranchMarkersMapper is the constructor of the MarkersManager.
-func NewBranchMarkersMapper(tangle *Tangle) (b *BranchMarkersMapper) {
- b = &BranchMarkersMapper{
+// NewConflictMarkersMapper is the constructor of the MarkersManager.
+func NewConflictMarkersMapper(tangle *Tangle) (b *ConflictMarkersMapper) {
+ b = &ConflictMarkersMapper{
tangle: tangle,
Manager: markers.NewManager(markers.WithStore(tangle.Options.Store)),
}
- // Always set Genesis to MasterBranch.
- b.SetBranchIDs(markers.NewMarker(0, 0), set.NewAdvancedSet[utxo.TransactionID]())
+ // Always set Genesis to MasterConflict.
+ b.SetConflictIDs(markers.NewMarker(0, 0), set.NewAdvancedSet[utxo.TransactionID]())
return
}
-// InheritStructureDetails returns the structure Details of a Message that are derived from the StructureDetails of its
+// InheritStructureDetails returns the structure Details of a Block that are derived from the StructureDetails of its
// strong and like parents.
-func (b *BranchMarkersMapper) InheritStructureDetails(message *Message, structureDetails []*markers.StructureDetails) (newStructureDetails *markers.StructureDetails, newSequenceCreated bool) {
+func (b *ConflictMarkersMapper) InheritStructureDetails(block *Block, structureDetails []*markers.StructureDetails) (newStructureDetails *markers.StructureDetails, newSequenceCreated bool) {
// newStructureDetails, newSequenceCreated = b.Manager.InheritStructureDetails(structureDetails, func(sequenceID markers.SequenceID, currentHighestIndex markers.Index) bool {
- // nodeID := identity.NewID(message.IssuerPublicKey())
+ // nodeID := identity.NewID(block.IssuerPublicKey())
// bufferUsedRatio := float64(b.tangle.Scheduler.BufferSize()) / float64(b.tangle.Scheduler.MaxBufferSize())
// nodeQueueRatio := float64(b.tangle.Scheduler.NodeQueueSize(nodeID)) / float64(b.tangle.Scheduler.BufferSize())
// if bufferUsedRatio > 0.01 && nodeQueueRatio > 0.1 {
@@ -49,98 +49,98 @@ func (b *BranchMarkersMapper) InheritStructureDetails(message *Message, structur
newStructureDetails, newSequenceCreated = b.Manager.InheritStructureDetails(structureDetails, b.tangle.Options.IncreaseMarkersIndexCallback)
if newStructureDetails.IsPastMarker() {
- b.SetMessageID(newStructureDetails.PastMarkers().Marker(), message.ID())
+ b.SetBlockID(newStructureDetails.PastMarkers().Marker(), block.ID())
}
return
}
-// MessageID retrieves the MessageID of the given Marker.
-func (b *BranchMarkersMapper) MessageID(marker markers.Marker) (messageID MessageID) {
- b.tangle.Storage.MarkerMessageMapping(marker).Consume(func(markerMessageMapping *MarkerMessageMapping) {
- messageID = markerMessageMapping.MessageID()
+// BlockID retrieves the BlockID of the given Marker.
+func (b *ConflictMarkersMapper) BlockID(marker markers.Marker) (blockID BlockID) {
+ b.tangle.Storage.MarkerBlockMapping(marker).Consume(func(markerBlockMapping *MarkerBlockMapping) {
+ blockID = markerBlockMapping.BlockID()
})
return
}
-// SetMessageID associates a MessageID with the given Marker.
-func (b *BranchMarkersMapper) SetMessageID(marker markers.Marker, messageID MessageID) {
- b.tangle.Storage.StoreMarkerMessageMapping(NewMarkerMessageMapping(marker, messageID))
+// SetBlockID associates a BlockID with the given Marker.
+func (b *ConflictMarkersMapper) SetBlockID(marker markers.Marker, blockID BlockID) {
+ b.tangle.Storage.StoreMarkerBlockMapping(NewMarkerBlockMapping(marker, blockID))
}
-// SetBranchIDs associates ledger.BranchIDs with the given Marker.
-func (b *BranchMarkersMapper) SetBranchIDs(marker markers.Marker, branchIDs *set.AdvancedSet[utxo.TransactionID]) (updated bool) {
- if floorMarker, floorBranchIDs, exists := b.Floor(marker); exists {
- if floorBranchIDs.Equal(branchIDs) {
+// SetConflictIDs associates ledger.ConflictIDs with the given Marker.
+func (b *ConflictMarkersMapper) SetConflictIDs(marker markers.Marker, conflictIDs *set.AdvancedSet[utxo.TransactionID]) (updated bool) {
+ if floorMarker, floorConflictIDs, exists := b.Floor(marker); exists {
+ if floorConflictIDs.Equal(conflictIDs) {
return false
}
if floorMarker == marker.Index() {
- b.deleteBranchIDMapping(markers.NewMarker(marker.SequenceID(), floorMarker))
+ b.deleteConflictIDMapping(markers.NewMarker(marker.SequenceID(), floorMarker))
}
}
- b.setBranchIDMapping(marker, b.tangle.Ledger.ConflictDAG.UnconfirmedConflicts(branchIDs))
+ b.setConflictIDMapping(marker, b.tangle.Ledger.ConflictDAG.UnconfirmedConflicts(conflictIDs))
return true
}
-// BranchIDs returns the BranchID that is associated with the given Marker.
-func (b *BranchMarkersMapper) BranchIDs(marker markers.Marker) (branchIDs *set.AdvancedSet[utxo.TransactionID]) {
- b.tangle.Storage.MarkerIndexBranchIDMapping(marker.SequenceID()).Consume(func(markerIndexBranchIDMapping *MarkerIndexBranchIDMapping) {
- branchIDs = markerIndexBranchIDMapping.BranchIDs(marker.Index())
+// ConflictIDs returns the ConflictID that is associated with the given Marker.
+func (b *ConflictMarkersMapper) ConflictIDs(marker markers.Marker) (conflictIDs *set.AdvancedSet[utxo.TransactionID]) {
+ b.tangle.Storage.MarkerIndexConflictIDMapping(marker.SequenceID()).Consume(func(markerIndexConflictIDMapping *MarkerIndexConflictIDMapping) {
+ conflictIDs = markerIndexConflictIDMapping.ConflictIDs(marker.Index())
})
return
}
-func (b *BranchMarkersMapper) setBranchIDMapping(marker markers.Marker, branchIDs *set.AdvancedSet[utxo.TransactionID]) bool {
- return b.tangle.Storage.MarkerIndexBranchIDMapping(marker.SequenceID(), NewMarkerIndexBranchIDMapping).Consume(func(markerIndexBranchIDMapping *MarkerIndexBranchIDMapping) {
- markerIndexBranchIDMapping.SetBranchIDs(marker.Index(), branchIDs)
+func (b *ConflictMarkersMapper) setConflictIDMapping(marker markers.Marker, conflictIDs *set.AdvancedSet[utxo.TransactionID]) bool {
+ return b.tangle.Storage.MarkerIndexConflictIDMapping(marker.SequenceID(), NewMarkerIndexConflictIDMapping).Consume(func(markerIndexConflictIDMapping *MarkerIndexConflictIDMapping) {
+ markerIndexConflictIDMapping.SetConflictIDs(marker.Index(), conflictIDs)
})
}
-func (b *BranchMarkersMapper) deleteBranchIDMapping(marker markers.Marker) bool {
- return b.tangle.Storage.MarkerIndexBranchIDMapping(marker.SequenceID(), NewMarkerIndexBranchIDMapping).Consume(func(markerIndexBranchIDMapping *MarkerIndexBranchIDMapping) {
- markerIndexBranchIDMapping.DeleteBranchID(marker.Index())
+func (b *ConflictMarkersMapper) deleteConflictIDMapping(marker markers.Marker) bool {
+ return b.tangle.Storage.MarkerIndexConflictIDMapping(marker.SequenceID(), NewMarkerIndexConflictIDMapping).Consume(func(markerIndexConflictIDMapping *MarkerIndexConflictIDMapping) {
+ markerIndexConflictIDMapping.DeleteConflictID(marker.Index())
})
}
-// Floor returns the largest Index that is <= the given Marker, it's BranchIDs and a boolean value indicating if it
+// Floor returns the largest Index that is <= the given Marker, it's ConflictIDs and a boolean value indicating if it
// exists.
-func (b *BranchMarkersMapper) Floor(referenceMarker markers.Marker) (marker markers.Index, branchIDs *set.AdvancedSet[utxo.TransactionID], exists bool) {
- b.tangle.Storage.MarkerIndexBranchIDMapping(referenceMarker.SequenceID(), NewMarkerIndexBranchIDMapping).Consume(func(markerIndexBranchIDMapping *MarkerIndexBranchIDMapping) {
- marker, branchIDs, exists = markerIndexBranchIDMapping.Floor(referenceMarker.Index())
+func (b *ConflictMarkersMapper) Floor(referenceMarker markers.Marker) (marker markers.Index, conflictIDs *set.AdvancedSet[utxo.TransactionID], exists bool) {
+ b.tangle.Storage.MarkerIndexConflictIDMapping(referenceMarker.SequenceID(), NewMarkerIndexConflictIDMapping).Consume(func(markerIndexConflictIDMapping *MarkerIndexConflictIDMapping) {
+ marker, conflictIDs, exists = markerIndexConflictIDMapping.Floor(referenceMarker.Index())
})
return
}
-// Ceiling returns the smallest Index that is >= the given Marker, it's BranchID and a boolean value indicating if it
+// Ceiling returns the smallest Index that is >= the given Marker, it's ConflictID and a boolean value indicating if it
// exists.
-func (b *BranchMarkersMapper) Ceiling(referenceMarker markers.Marker) (marker markers.Index, branchIDs *set.AdvancedSet[utxo.TransactionID], exists bool) {
- b.tangle.Storage.MarkerIndexBranchIDMapping(referenceMarker.SequenceID(), NewMarkerIndexBranchIDMapping).Consume(func(markerIndexBranchIDMapping *MarkerIndexBranchIDMapping) {
- marker, branchIDs, exists = markerIndexBranchIDMapping.Ceiling(referenceMarker.Index())
+func (b *ConflictMarkersMapper) Ceiling(referenceMarker markers.Marker) (marker markers.Index, conflictIDs *set.AdvancedSet[utxo.TransactionID], exists bool) {
+ b.tangle.Storage.MarkerIndexConflictIDMapping(referenceMarker.SequenceID(), NewMarkerIndexConflictIDMapping).Consume(func(markerIndexConflictIDMapping *MarkerIndexConflictIDMapping) {
+ marker, conflictIDs, exists = markerIndexConflictIDMapping.Ceiling(referenceMarker.Index())
})
return
}
-// ForEachBranchIDMapping iterates over all BranchID mappings in the given Sequence that are bigger than the given
+// ForEachConflictIDMapping iterates over all ConflictID mappings in the given Sequence that are bigger than the given
// thresholdIndex. Setting the thresholdIndex to 0 will iterate over all existing mappings.
-func (b *BranchMarkersMapper) ForEachBranchIDMapping(sequenceID markers.SequenceID, thresholdIndex markers.Index, callback func(mappedMarker markers.Marker, mappedBranchIDs *set.AdvancedSet[utxo.TransactionID])) {
+func (b *ConflictMarkersMapper) ForEachConflictIDMapping(sequenceID markers.SequenceID, thresholdIndex markers.Index, callback func(mappedMarker markers.Marker, mappedConflictIDs *set.AdvancedSet[utxo.TransactionID])) {
currentMarker := markers.NewMarker(sequenceID, thresholdIndex)
- referencingMarkerIndexInSameSequence, mappedBranchIDs, exists := b.Ceiling(markers.NewMarker(currentMarker.SequenceID(), currentMarker.Index()+1))
- for ; exists; referencingMarkerIndexInSameSequence, mappedBranchIDs, exists = b.Ceiling(markers.NewMarker(currentMarker.SequenceID(), currentMarker.Index()+1)) {
+ referencingMarkerIndexInSameSequence, mappedConflictIDs, exists := b.Ceiling(markers.NewMarker(currentMarker.SequenceID(), currentMarker.Index()+1))
+ for ; exists; referencingMarkerIndexInSameSequence, mappedConflictIDs, exists = b.Ceiling(markers.NewMarker(currentMarker.SequenceID(), currentMarker.Index()+1)) {
currentMarker = markers.NewMarker(currentMarker.SequenceID(), referencingMarkerIndexInSameSequence)
- callback(currentMarker, mappedBranchIDs)
+ callback(currentMarker, mappedConflictIDs)
}
}
// ForEachMarkerReferencingMarker executes the callback function for each Marker of other Sequences that directly
// reference the given Marker.
-func (b *BranchMarkersMapper) ForEachMarkerReferencingMarker(referencedMarker markers.Marker, callback func(referencingMarker markers.Marker)) {
+func (b *ConflictMarkersMapper) ForEachMarkerReferencingMarker(referencedMarker markers.Marker, callback func(referencingMarker markers.Marker)) {
b.Sequence(referencedMarker.SequenceID()).Consume(func(sequence *markers.Sequence) {
sequence.ReferencingMarkers(referencedMarker.Index()).ForEachSorted(func(referencingSequenceID markers.SequenceID, referencingIndex markers.Index) bool {
if referencingSequenceID == referencedMarker.SequenceID() {
diff --git a/packages/tangle/markersmanager.models.go b/packages/tangle/markersmanager.models.go
index 22be237899..108e438ff6 100644
--- a/packages/tangle/markersmanager.models.go
+++ b/packages/tangle/markersmanager.models.go
@@ -11,63 +11,63 @@ import (
"github.com/iotaledger/goshimmer/packages/markers"
)
-// region markerIndexBranchIDMap /////////////////////////////////////////////////////////////////////////////////////////
+// region markerIndexConflictIDMap /////////////////////////////////////////////////////////////////////////////////////////
-type markerIndexBranchIDMap struct {
+type markerIndexConflictIDMap struct {
T *thresholdmap.ThresholdMap[markers.Index, utxo.TransactionIDs] `serix:"0"`
}
-func newMarkerIndexBranchIDMap() *markerIndexBranchIDMap {
- return &markerIndexBranchIDMap{thresholdmap.New[markers.Index, utxo.TransactionIDs](thresholdmap.LowerThresholdMode)}
+func newMarkerIndexConflictIDMap() *markerIndexConflictIDMap {
+ return &markerIndexConflictIDMap{thresholdmap.New[markers.Index, utxo.TransactionIDs](thresholdmap.LowerThresholdMode)}
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MarkerIndexBranchIDMapping ///////////////////////////////////////////////////////////////////////////////////
+// region MarkerIndexConflictIDMapping ///////////////////////////////////////////////////////////////////////////////////
-// MarkerIndexBranchIDMapping is a data structure that allows to map marker Indexes to a BranchID.
-type MarkerIndexBranchIDMapping struct {
- model.Storable[markers.SequenceID, MarkerIndexBranchIDMapping, *MarkerIndexBranchIDMapping, markerIndexBranchIDMap] `serix:"0"`
+// MarkerIndexConflictIDMapping is a data structure that allows to map marker Indexes to a ConflictID.
+type MarkerIndexConflictIDMapping struct {
+ model.Storable[markers.SequenceID, MarkerIndexConflictIDMapping, *MarkerIndexConflictIDMapping, markerIndexConflictIDMap] `serix:"0"`
}
-// NewMarkerIndexBranchIDMapping creates a new MarkerIndexBranchIDMapping for the given SequenceID.
-func NewMarkerIndexBranchIDMapping(sequenceID markers.SequenceID) (markerBranchMapping *MarkerIndexBranchIDMapping) {
- markerBranchMapping = model.NewStorable[markers.SequenceID, MarkerIndexBranchIDMapping](
- newMarkerIndexBranchIDMap(),
+// NewMarkerIndexConflictIDMapping creates a new MarkerIndexConflictIDMapping for the given SequenceID.
+func NewMarkerIndexConflictIDMapping(sequenceID markers.SequenceID) (markerConflictMapping *MarkerIndexConflictIDMapping) {
+ markerConflictMapping = model.NewStorable[markers.SequenceID, MarkerIndexConflictIDMapping](
+ newMarkerIndexConflictIDMap(),
)
- markerBranchMapping.SetID(sequenceID)
+ markerConflictMapping.SetID(sequenceID)
return
}
-// SequenceID returns the SequenceID that this MarkerIndexBranchIDMapping represents.
-func (m *MarkerIndexBranchIDMapping) SequenceID() markers.SequenceID {
+// SequenceID returns the SequenceID that this MarkerIndexConflictIDMapping represents.
+func (m *MarkerIndexConflictIDMapping) SequenceID() markers.SequenceID {
return m.ID()
}
-// BranchIDs returns the BranchID that is associated to the given marker Index.
-func (m *MarkerIndexBranchIDMapping) BranchIDs(markerIndex markers.Index) (branchIDs utxo.TransactionIDs) {
+// ConflictIDs returns the ConflictID that is associated to the given marker Index.
+func (m *MarkerIndexConflictIDMapping) ConflictIDs(markerIndex markers.Index) (conflictIDs utxo.TransactionIDs) {
m.RLock()
defer m.RUnlock()
value, exists := m.M.T.Get(markerIndex)
if !exists {
- panic(fmt.Sprintf("tried to retrieve the BranchID of unknown marker.%s", markerIndex))
+ panic(fmt.Sprintf("tried to retrieve the ConflictID of unknown marker.%s", markerIndex))
}
return value.Clone()
}
-// SetBranchIDs creates a mapping between the given marker Index and the given BranchID.
-func (m *MarkerIndexBranchIDMapping) SetBranchIDs(index markers.Index, branchIDs utxo.TransactionIDs) {
+// SetConflictIDs creates a mapping between the given marker Index and the given ConflictID.
+func (m *MarkerIndexConflictIDMapping) SetConflictIDs(index markers.Index, conflictIDs utxo.TransactionIDs) {
m.Lock()
defer m.Unlock()
- m.M.T.Set(index, branchIDs)
+ m.M.T.Set(index, conflictIDs)
m.SetModified()
}
-// DeleteBranchID deletes a mapping between the given marker Index and the stored BranchID.
-func (m *MarkerIndexBranchIDMapping) DeleteBranchID(index markers.Index) {
+// DeleteConflictID deletes a mapping between the given marker Index and the stored ConflictID.
+func (m *MarkerIndexConflictIDMapping) DeleteConflictID(index markers.Index) {
m.Lock()
defer m.Unlock()
@@ -75,27 +75,27 @@ func (m *MarkerIndexBranchIDMapping) DeleteBranchID(index markers.Index) {
m.SetModified()
}
-// Floor returns the largest Index that is <= the given Index which has a mapped BranchID (and a boolean value
+// Floor returns the largest Index that is <= the given Index which has a mapped ConflictID (and a boolean value
// indicating if it exists).
-func (m *MarkerIndexBranchIDMapping) Floor(index markers.Index) (marker markers.Index, branchIDs utxo.TransactionIDs, exists bool) {
+func (m *MarkerIndexConflictIDMapping) Floor(index markers.Index) (marker markers.Index, conflictIDs utxo.TransactionIDs, exists bool) {
m.RLock()
defer m.RUnlock()
- if untypedIndex, untypedBranchIDs, exists := m.M.T.Floor(index); exists {
- return untypedIndex, untypedBranchIDs, true
+ if untypedIndex, untypedConflictIDs, exists := m.M.T.Floor(index); exists {
+ return untypedIndex, untypedConflictIDs, true
}
return 0, utxo.NewTransactionIDs(), false
}
-// Ceiling returns the smallest Index that is >= the given Index which has a mapped BranchID (and a boolean value
+// Ceiling returns the smallest Index that is >= the given Index which has a mapped ConflictID (and a boolean value
// indicating if it exists).
-func (m *MarkerIndexBranchIDMapping) Ceiling(index markers.Index) (marker markers.Index, branchIDs utxo.TransactionIDs, exists bool) {
+func (m *MarkerIndexConflictIDMapping) Ceiling(index markers.Index) (marker markers.Index, conflictIDs utxo.TransactionIDs, exists bool) {
m.RLock()
defer m.RUnlock()
- if untypedIndex, untypedBranchIDs, exists := m.M.T.Ceiling(index); exists {
- return untypedIndex, untypedBranchIDs, true
+ if untypedIndex, untypedConflictIDs, exists := m.M.T.Ceiling(index); exists {
+ return untypedIndex, untypedConflictIDs, true
}
return 0, utxo.NewTransactionIDs(), false
@@ -103,32 +103,32 @@ func (m *MarkerIndexBranchIDMapping) Ceiling(index markers.Index) (marker marker
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MarkerMessageMapping /////////////////////////////////////////////////////////////////////////////////////////
+// region MarkerBlockMapping /////////////////////////////////////////////////////////////////////////////////////////
-// MarkerMessageMappingPartitionKeys defines the "layout" of the key. This enables prefix iterations in the object
+// MarkerBlockMappingPartitionKeys defines the "layout" of the key. This enables prefix iterations in the object
// storage.
-var MarkerMessageMappingPartitionKeys = objectstorage.PartitionKey(markers.SequenceID(0).Length(), markers.Index(0).Length())
+var MarkerBlockMappingPartitionKeys = objectstorage.PartitionKey(markers.SequenceID(0).Length(), markers.Index(0).Length())
-// MarkerMessageMapping is a data structure that denotes a mapping from a Marker to a Message.
-type MarkerMessageMapping struct {
- model.Storable[markers.Marker, MarkerMessageMapping, *MarkerMessageMapping, MessageID] `serix:"0"`
+// MarkerBlockMapping is a data structure that denotes a mapping from a Marker to a Block.
+type MarkerBlockMapping struct {
+ model.Storable[markers.Marker, MarkerBlockMapping, *MarkerBlockMapping, BlockID] `serix:"0"`
}
-// NewMarkerMessageMapping is the constructor for the MarkerMessageMapping.
-func NewMarkerMessageMapping(marker markers.Marker, messageID MessageID) *MarkerMessageMapping {
- markerMessageMapping := model.NewStorable[markers.Marker, MarkerMessageMapping](&messageID)
- markerMessageMapping.SetID(marker)
- return markerMessageMapping
+// NewMarkerBlockMapping is the constructor for the MarkerBlockMapping.
+func NewMarkerBlockMapping(marker markers.Marker, blockID BlockID) *MarkerBlockMapping {
+ markerBlockMapping := model.NewStorable[markers.Marker, MarkerBlockMapping](&blockID)
+ markerBlockMapping.SetID(marker)
+ return markerBlockMapping
}
-// Marker returns the Marker that is mapped to a MessageID.
-func (m *MarkerMessageMapping) Marker() *markers.Marker {
+// Marker returns the Marker that is mapped to a BlockID.
+func (m *MarkerBlockMapping) Marker() *markers.Marker {
marker := m.ID()
return &marker
}
-// MessageID returns the MessageID of the Marker.
-func (m *MarkerMessageMapping) MessageID() MessageID {
+// BlockID returns the BlockID of the Marker.
+func (m *MarkerBlockMapping) BlockID() BlockID {
m.RLock()
defer m.RUnlock()
diff --git a/packages/tangle/message.go b/packages/tangle/message.go
deleted file mode 100644
index 78eac3ad66..0000000000
--- a/packages/tangle/message.go
+++ /dev/null
@@ -1,931 +0,0 @@
-package tangle
-
-import (
- "bytes"
- "context"
- "fmt"
- "sort"
- "strings"
- "time"
-
- "github.com/cockroachdb/errors"
- "github.com/iotaledger/hive.go/crypto/ed25519"
- "github.com/iotaledger/hive.go/generics/lo"
- "github.com/iotaledger/hive.go/generics/model"
- "github.com/iotaledger/hive.go/serializer"
- "github.com/iotaledger/hive.go/serix"
- "github.com/iotaledger/hive.go/stringify"
- "github.com/iotaledger/hive.go/types"
- "golang.org/x/crypto/blake2b"
-
- "github.com/iotaledger/goshimmer/packages/clock"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
- "github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
- "github.com/iotaledger/goshimmer/packages/markers"
- "github.com/iotaledger/goshimmer/packages/tangle/payload"
-)
-
-func init() {
- messageIDsArrayRules := &serix.ArrayRules{
- Min: MinParentsCount,
- Max: MaxParentsCount,
- ValidationMode: serializer.ArrayValidationModeNoDuplicates,
- }
- err := serix.DefaultAPI.RegisterTypeSettings(MessageIDs{}, serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithArrayRules(messageIDsArrayRules))
-
- if err != nil {
- panic(fmt.Errorf("error registering MessageIDs type settings: %w", err))
- }
- parentsMessageIDsArrayRules := &serix.ArrayRules{
- Min: MinParentsBlocksCount,
- Max: MaxParentsBlocksCount,
- ValidationMode: serializer.ArrayValidationModeNoDuplicates,
- UniquenessSliceFunc: func(next []byte) []byte {
- // return first byte which indicates the parent type
- return next[:1]
- },
- }
- err = serix.DefaultAPI.RegisterTypeSettings(ParentMessageIDs{}, serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithArrayRules(parentsMessageIDsArrayRules))
- if err != nil {
- panic(fmt.Errorf("error registering ParentMessageIDs type settings: %w", err))
- }
- err = serix.DefaultAPI.RegisterValidators(ParentMessageIDs{}, validateParentMessageIDsBytes, validateParentMessageIDs)
-
- if err != nil {
- panic(fmt.Errorf("error registering ParentMessageIDs validators: %w", err))
- }
-}
-
-func validateParentMessageIDs(_ context.Context, parents ParentMessageIDs) (err error) {
- // Validate strong parent block
- if strongParents, strongParentsExist := parents[StrongParentType]; len(parents) == 0 || !strongParentsExist ||
- len(strongParents) < MinStrongParentsCount {
- return ErrNoStrongParents
- }
- for parentsType, _ := range parents {
- if parentsType > LastValidBlockType {
- return ErrBlockTypeIsUnknown
- }
- }
- if areReferencesConflictingAcrossBlocks(parents) {
- return ErrConflictingReferenceAcrossBlocks
- }
- return nil
-}
-
-// validate messagesIDs are unique across blocks
-// there may be repetition across strong and like parents.
-func areReferencesConflictingAcrossBlocks(parentsBlocks ParentMessageIDs) bool {
- for messageID := range parentsBlocks[WeakParentType] {
- if _, exists := parentsBlocks[StrongParentType][messageID]; exists {
- return true
- }
-
- if _, exists := parentsBlocks[ShallowLikeParentType][messageID]; exists {
- return true
- }
- }
-
- return false
-}
-
-func validateParentMessageIDsBytes(_ context.Context, _ []byte) (err error) {
- return
-}
-
-const (
- // MessageVersion defines the Version of the message structure.
- MessageVersion uint8 = 1
-
- // MaxMessageSize defines the maximum size of a message.
- MaxMessageSize = 64 * 1024
-
- // MessageIDLength defines the length of an MessageID.
- MessageIDLength = types.IdentifierLength
-
- // MinParentsCount defines the minimum number of parents each parents block must have.
- MinParentsCount = 1
-
- // MaxParentsCount defines the maximum number of parents each parents block must have.
- MaxParentsCount = 8
-
- // MinParentsBlocksCount defines the minimum number of parents each parents block must have.
- MinParentsBlocksCount = 1
-
- // MaxParentsBlocksCount defines the maximum number of parents each parents block must have.
- MaxParentsBlocksCount = 4
-
- // MinStrongParentsCount defines the minimum number of strong parents a message must have.
- MinStrongParentsCount = 1
-)
-
-// region MessageID ////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// MessageID identifies a message via its BLAKE2b-256 hash of its bytes.
-type MessageID struct {
- types.Identifier `serix:"0"`
-}
-
-// EmptyMessageID is an empty id.
-var EmptyMessageID MessageID
-
-// NewMessageID returns a new MessageID for the given data.
-func NewMessageID(bytes [32]byte) (new MessageID) {
- return MessageID{Identifier: bytes}
-}
-
-// Length returns the byte length of a serialized TransactionID.
-func (m MessageID) Length() int {
- return types.IdentifierLength
-}
-
-// String returns a human-readable version of the MessageID.
-func (m MessageID) String() (humanReadable string) {
- return "MessageID(" + m.Alias() + ")"
-}
-
-// CompareTo does a lexicographical comparison to another messageID.
-// Returns 0 if equal, -1 if smaller, or 1 if larger than other.
-// Passing nil as other will result in a panic.
-func (m MessageID) CompareTo(other MessageID) int {
- return bytes.Compare(m.Bytes(), other.Bytes())
-}
-
-func MessageIDFromContext(ctx context.Context) MessageID {
- messageID, ok := ctx.Value("messageID").(MessageID)
- if !ok {
- return EmptyMessageID
- }
- return messageID
-}
-
-func MessageIDToContext(ctx context.Context, messageID MessageID) context.Context {
- return context.WithValue(ctx, "messageID", messageID)
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region MessageIDs ///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// MessageIDs is a set of MessageIDs where every MessageID is stored only once.
-type MessageIDs map[MessageID]types.Empty
-
-// NewMessageIDs construct a new MessageID collection from the optional MessageIDs.
-func NewMessageIDs(msgIDs ...MessageID) MessageIDs {
- m := make(MessageIDs)
- for _, msgID := range msgIDs {
- m[msgID] = types.Void
- }
-
- return m
-}
-
-// Slice converts the set of MessageIDs into a slice of MessageIDs.
-func (m MessageIDs) Slice() []MessageID {
- ids := make([]MessageID, 0)
- for key := range m {
- ids = append(ids, key)
- }
- return ids
-}
-
-// Clone creates a copy of the MessageIDs.
-func (m MessageIDs) Clone() (clonedMessageIDs MessageIDs) {
- clonedMessageIDs = make(MessageIDs)
- for key, value := range m {
- clonedMessageIDs[key] = value
- }
- return
-}
-
-// Add adds a MessageID to the collection and returns the collection to enable chaining.
-func (m MessageIDs) Add(messageID MessageID) MessageIDs {
- m[messageID] = types.Void
-
- return m
-}
-
-// AddAll adds all MessageIDs to the collection and returns the collection to enable chaining.
-func (m MessageIDs) AddAll(messageIDs MessageIDs) MessageIDs {
- for messageID := range messageIDs {
- m.Add(messageID)
- }
-
- return m
-}
-
-// Empty checks if MessageIDs is empty.
-func (m MessageIDs) Empty() (empty bool) {
- return len(m) == 0
-}
-
-// Contains checks if the given target MessageID is part of the MessageIDs.
-func (m MessageIDs) Contains(target MessageID) (contains bool) {
- _, contains = m[target]
- return
-}
-
-// Subtract removes all other from the collection and returns the collection to enable chaining.
-func (m MessageIDs) Subtract(other MessageIDs) MessageIDs {
- for messageID := range other {
- delete(m, messageID)
- }
-
- return m
-}
-
-// First returns the first element in MessageIDs (not ordered). This method only makes sense if there is exactly one
-// element in the collection.
-func (m MessageIDs) First() MessageID {
- for messageID := range m {
- return messageID
- }
- return EmptyMessageID
-}
-
-// Base58 returns a string slice of base58 MessageID.
-func (m MessageIDs) Base58() (result []string) {
- result = make([]string, 0, len(m))
- for id := range m {
- result = append(result, id.Base58())
- }
-
- return
-}
-
-// String returns a human-readable Version of the MessageIDs.
-func (m MessageIDs) String() string {
- if len(m) == 0 {
- return "MessageIDs{}"
- }
-
- result := "MessageIDs{\n"
- for messageID := range m {
- result += strings.Repeat(" ", stringify.INDENTATION_SIZE) + messageID.String() + ",\n"
- }
- result += "}"
-
- return result
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region Message //////////////////////////////////////////////////////////////////////////////////////////////////////
-
-const (
- // LastValidBlockType counts StrongParents, WeakParents, ShallowLikeParents.
- LastValidBlockType = ShallowLikeParentType
-)
-
-// Message represents the core message for the base layer Tangle.
-type Message struct {
- model.Storable[MessageID, Message, *Message, MessageModel] `serix:"0"`
- payload payload.Payload
-}
-type MessageModel struct {
- // core properties (get sent over the wire)
- Version uint8 `serix:"0"`
- Parents ParentMessageIDs `serix:"1"`
- IssuerPublicKey ed25519.PublicKey `serix:"2"`
- IssuingTime time.Time `serix:"3"`
- SequenceNumber uint64 `serix:"4"`
- PayloadBytes []byte `serix:"5,lengthPrefixType=uint32"`
- Nonce uint64 `serix:"6"`
- Signature ed25519.Signature `serix:"7"`
-}
-
-// NewMessage creates a new message with the details provided by the issuer.
-func NewMessage(references ParentMessageIDs, issuingTime time.Time, issuerPublicKey ed25519.PublicKey,
- sequenceNumber uint64, msgPayload payload.Payload, nonce uint64, signature ed25519.Signature, versionOpt ...uint8) *Message {
- version := MessageVersion
- if len(versionOpt) == 1 {
- version = versionOpt[0]
- }
- msg := model.NewStorable[MessageID, Message](&MessageModel{
- Version: version,
- Parents: references,
- IssuerPublicKey: issuerPublicKey,
- IssuingTime: issuingTime,
- SequenceNumber: sequenceNumber,
- PayloadBytes: lo.PanicOnErr(msgPayload.Bytes()),
- Nonce: nonce,
- Signature: signature,
- })
- msg.payload = msgPayload
-
- return msg
-}
-
-// NewMessageWithValidation creates a new message while performing ths following syntactical checks:
-// 1. A Strong Parents Block must exist.
-// 2. Parents Block types cannot repeat.
-// 3. Parent count per block 1 <= x <= 8.
-// 4. Parents unique within block.
-// 5. Parents lexicographically sorted within block.
-// 7. Blocks should be ordered by type in ascending order.
-// 6. A Parent(s) repetition is only allowed when it occurs across Strong and Like parents.
-func NewMessageWithValidation(references ParentMessageIDs, issuingTime time.Time, issuerPublicKey ed25519.PublicKey,
- sequenceNumber uint64, msgPayload payload.Payload, nonce uint64, signature ed25519.Signature, version ...uint8) (result *Message, err error) {
- msg := NewMessage(references, issuingTime, issuerPublicKey, sequenceNumber, msgPayload, nonce, signature, version...)
-
- if _, err = msg.Bytes(); err != nil {
- return nil, errors.Errorf("failed to create message: %w", err)
- }
- return msg, nil
-}
-
-// VerifySignature verifies the Signature of the message.
-func (m *Message) VerifySignature() (valid bool, err error) {
- msgBytes, err := m.Bytes()
- if err != nil {
- return false, errors.Errorf("failed to create message bytes: %w", err)
- }
- signature := m.Signature()
-
- contentLength := len(msgBytes) - len(signature)
- content := msgBytes[:contentLength]
-
- return m.M.IssuerPublicKey.VerifySignature(content, signature), nil
-}
-
-// IDBytes implements Element interface in scheduler NodeQueue that returns the MessageID of the message in bytes.
-func (m *Message) IDBytes() []byte {
- return m.ID().Bytes()
-}
-
-// Version returns the message Version.
-func (m *Message) Version() uint8 {
- return m.M.Version
-}
-
-// ParentsByType returns a slice of all parents of the desired type.
-func (m *Message) ParentsByType(parentType ParentsType) MessageIDs {
- if parents, ok := m.M.Parents[parentType]; ok {
- return parents.Clone()
- }
- return NewMessageIDs()
-}
-
-// ForEachParent executes a consumer func for each parent.
-func (m *Message) ForEachParent(consumer func(parent Parent)) {
- for parentType, parents := range m.M.Parents {
- for parentID := range parents {
- consumer(Parent{
- Type: parentType,
- ID: parentID,
- })
- }
- }
-}
-
-func (m *Message) Parents() (parents []MessageID) {
- m.ForEachParent(func(parent Parent) {
- parents = append(parents, parent.ID)
- })
- return
-}
-
-// ForEachParentByType executes a consumer func for each strong parent.
-func (m *Message) ForEachParentByType(parentType ParentsType, consumer func(parentMessageID MessageID) bool) {
- for parentID := range m.ParentsByType(parentType) {
- if !consumer(parentID) {
- return
- }
- }
-}
-
-// ParentsCountByType returns the total parents count of this message.
-func (m *Message) ParentsCountByType(parentType ParentsType) uint8 {
- return uint8(len(m.ParentsByType(parentType)))
-}
-
-// IssuerPublicKey returns the public key of the message issuer.
-func (m *Message) IssuerPublicKey() ed25519.PublicKey {
- return m.M.IssuerPublicKey
-}
-
-// IssuingTime returns the time when this message was created.
-func (m *Message) IssuingTime() time.Time {
- return m.M.IssuingTime
-}
-
-// SequenceNumber returns the sequence number of this message.
-func (m *Message) SequenceNumber() uint64 {
- return m.M.SequenceNumber
-}
-
-// Payload returns the Payload of the message.
-func (m *Message) Payload() payload.Payload {
- m.Lock()
- defer m.Unlock()
-
- if m.payload == nil {
- _, err := serix.DefaultAPI.Decode(context.Background(), m.M.PayloadBytes, &m.payload, serix.WithValidation())
- if err != nil {
- panic(err)
- }
-
- if m.payload.Type() == devnetvm.TransactionType {
- tx := m.payload.(*devnetvm.Transaction)
- tx.SetID(utxo.NewTransactionID(m.M.PayloadBytes))
-
- devnetvm.SetOutputID(tx.Essence(), tx.ID())
- }
- }
-
- return m.payload
-}
-
-// Nonce returns the Nonce of the message.
-func (m *Message) Nonce() uint64 {
- return m.M.Nonce
-}
-
-// Signature returns the Signature of the message.
-func (m *Message) Signature() ed25519.Signature {
- return m.M.Signature
-}
-
-// DetermineID calculates and sets the message's MessageID.
-func (m *Message) DetermineID() (err error) {
- b, err := m.Bytes()
- if err != nil {
- return errors.Errorf("failed to determine message ID: %w", err)
- }
-
- m.SetID(MessageID{Identifier: blake2b.Sum256(b)})
- return nil
-}
-
-// Size returns the message size in bytes.
-func (m *Message) Size() int {
- return len(lo.PanicOnErr(m.Bytes()))
-}
-
-func (m *Message) String() string {
- builder := stringify.StructBuilder("Message", stringify.StructField("id", m.ID()))
-
- for index, parent := range sortParents(m.ParentsByType(StrongParentType)) {
- builder.AddField(stringify.StructField(fmt.Sprintf("strongParent%d", index), parent.String()))
- }
- for index, parent := range sortParents(m.ParentsByType(WeakParentType)) {
- builder.AddField(stringify.StructField(fmt.Sprintf("weakParent%d", index), parent.String()))
- }
- for index, parent := range sortParents(m.ParentsByType(ShallowLikeParentType)) {
- builder.AddField(stringify.StructField(fmt.Sprintf("shallowlikeParent%d", index), parent.String()))
- }
-
- builder.AddField(stringify.StructField("Issuer", m.IssuerPublicKey()))
- builder.AddField(stringify.StructField("IssuingTime", m.IssuingTime()))
- builder.AddField(stringify.StructField("SequenceNumber", m.SequenceNumber()))
- builder.AddField(stringify.StructField("Payload", m.Payload()))
- builder.AddField(stringify.StructField("Nonce", m.Nonce()))
- builder.AddField(stringify.StructField("Signature", m.Signature()))
- return builder.String()
-}
-
-// sorts given parents and returns a new slice with sorted parents
-func sortParents(parents MessageIDs) (sorted []MessageID) {
- sorted = parents.Slice()
-
- // sort parents
- sort.Slice(sorted, func(i, j int) bool {
- return bytes.Compare(sorted[i].Bytes(), sorted[j].Bytes()) < 0
- })
-
- return
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region Parent ///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// ParentsType is a type that defines the type of the parent.
-type ParentsType uint8
-
-const (
- // UndefinedParentType is the undefined parent.
- UndefinedParentType ParentsType = iota
- // StrongParentType is the ParentsType for a strong parent.
- StrongParentType
- // WeakParentType is the ParentsType for a weak parent.
- WeakParentType
- // ShallowLikeParentType is the ParentsType for the shallow like parent.
- ShallowLikeParentType
-)
-
-// String returns string representation of ParentsType.
-func (bp ParentsType) String() string {
- return fmt.Sprintf("ParentType(%s)", []string{"Undefined", "Strong", "Weak", "Shallow Like"}[bp])
-}
-
-// Parent is a parent that can be either strong or weak.
-type Parent struct {
- ID MessageID
- Type ParentsType
-}
-
-// ParentMessageIDs is a map of ParentType to MessageIDs.
-type ParentMessageIDs map[ParentsType]MessageIDs
-
-// NewParentMessageIDs constructs a new ParentMessageIDs.
-func NewParentMessageIDs() ParentMessageIDs {
- p := make(ParentMessageIDs)
- return p
-}
-
-// AddStrong adds a strong parent to the map.
-func (p ParentMessageIDs) AddStrong(messageID MessageID) ParentMessageIDs {
- if _, exists := p[StrongParentType]; !exists {
- p[StrongParentType] = NewMessageIDs()
- }
- return p.Add(StrongParentType, messageID)
-}
-
-// Add adds a parent to the map.
-func (p ParentMessageIDs) Add(parentType ParentsType, messageID MessageID) ParentMessageIDs {
- if _, exists := p[parentType]; !exists {
- p[parentType] = NewMessageIDs()
- }
- p[parentType].Add(messageID)
- return p
-}
-
-// AddAll adds a collection of parents to the map.
-func (p ParentMessageIDs) AddAll(parentType ParentsType, messageIDs MessageIDs) ParentMessageIDs {
- if _, exists := p[parentType]; !exists {
- p[parentType] = NewMessageIDs()
- }
- p[parentType].AddAll(messageIDs)
- return p
-}
-
-// IsEmpty returns true if the ParentMessageIDs are empty.
-func (p ParentMessageIDs) IsEmpty() bool {
- return p == nil || len(p) == 0
-}
-
-// Clone returns a copy of map.
-func (p ParentMessageIDs) Clone() ParentMessageIDs {
- pCloned := NewParentMessageIDs()
- for parentType, messageIDs := range p {
- if _, exists := p[parentType]; !exists {
- p[parentType] = NewMessageIDs()
- }
- pCloned.AddAll(parentType, messageIDs)
- }
- return pCloned
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region MessageMetadata //////////////////////////////////////////////////////////////////////////////////////////////
-
-// MessageMetadata defines the metadata for a message.
-type MessageMetadata struct {
- model.Storable[MessageID, MessageMetadata, *MessageMetadata, messageMetadataModel] `serix:"0"`
-}
-
-type messageMetadataModel struct {
- ReceivedTime time.Time `serix:"1"`
- SolidificationTime time.Time `serix:"2"`
- Solid bool `serix:"3"`
- StructureDetails *markers.StructureDetails `serix:"4,optional"`
- AddedBranchIDs utxo.TransactionIDs `serix:"5"`
- SubtractedBranchIDs utxo.TransactionIDs `serix:"6"`
- Scheduled bool `serix:"7"`
- ScheduledTime time.Time `serix:"8"`
- Booked bool `serix:"9"`
- BookedTime time.Time `serix:"10"`
- ObjectivelyInvalid bool `serix:"11"`
- GradeOfFinality gof.GradeOfFinality `serix:"12"`
- GradeOfFinalityTime time.Time `serix:"13"`
- DiscardedTime time.Time `serix:"14"`
- QueuedTime time.Time `serix:"15"`
- SubjectivelyInvalid bool `serix:"16"`
-}
-
-// NewMessageMetadata creates a new MessageMetadata from the specified messageID.
-func NewMessageMetadata(messageID MessageID) *MessageMetadata {
- metadata := model.NewStorable[MessageID, MessageMetadata](&messageMetadataModel{
- ReceivedTime: clock.SyncedTime(),
- AddedBranchIDs: utxo.NewTransactionIDs(),
- SubtractedBranchIDs: utxo.NewTransactionIDs(),
- })
- metadata.SetID(messageID)
-
- return metadata
-}
-
-// ReceivedTime returns the time when the message was received.
-func (m *MessageMetadata) ReceivedTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.ReceivedTime
-}
-
-// IsSolid returns true if the message represented by this metadata is solid. False otherwise.
-func (m *MessageMetadata) IsSolid() (result bool) {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.Solid
-}
-
-// SetSolid sets the message associated with this metadata as solid.
-// It returns true if the solid status is modified. False otherwise.
-func (m *MessageMetadata) SetSolid(solid bool) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.Solid == solid {
- return false
- }
-
- m.M.SolidificationTime = clock.SyncedTime()
- m.M.Solid = solid
- m.SetModified()
- return true
-}
-
-// SolidificationTime returns the time when the message was marked to be solid.
-func (m *MessageMetadata) SolidificationTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.SolidificationTime
-}
-
-// SetStructureDetails sets the structureDetails of the message.
-func (m *MessageMetadata) SetStructureDetails(structureDetails *markers.StructureDetails) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.StructureDetails != nil {
- return false
- }
-
- m.M.StructureDetails = structureDetails
-
- m.SetModified()
- return true
-}
-
-// StructureDetails returns the structureDetails of the message.
-func (m *MessageMetadata) StructureDetails() *markers.StructureDetails {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.StructureDetails
-}
-
-// SetAddedBranchIDs sets the BranchIDs of the added Branches.
-func (m *MessageMetadata) SetAddedBranchIDs(addedBranchIDs utxo.TransactionIDs) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.AddedBranchIDs.Equal(addedBranchIDs) {
- return false
- }
-
- m.M.AddedBranchIDs = addedBranchIDs.Clone()
- m.SetModified()
- return true
-}
-
-// AddBranchID sets the BranchIDs of the added Branches.
-func (m *MessageMetadata) AddBranchID(branchID utxo.TransactionID) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.AddedBranchIDs.Has(branchID) {
- return
- }
-
- m.M.AddedBranchIDs.Add(branchID)
- m.SetModified()
- return true
-}
-
-// AddedBranchIDs returns the BranchIDs of the added Branches of the Message.
-func (m *MessageMetadata) AddedBranchIDs() utxo.TransactionIDs {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.AddedBranchIDs.Clone()
-}
-
-// SetSubtractedBranchIDs sets the BranchIDs of the subtracted Branches.
-func (m *MessageMetadata) SetSubtractedBranchIDs(subtractedBranchIDs utxo.TransactionIDs) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.SubtractedBranchIDs.Equal(subtractedBranchIDs) {
- return false
- }
-
- m.M.SubtractedBranchIDs = subtractedBranchIDs.Clone()
- m.SetModified()
- return true
-}
-
-// SubtractedBranchIDs returns the BranchIDs of the subtracted Branches of the Message.
-func (m *MessageMetadata) SubtractedBranchIDs() utxo.TransactionIDs {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.SubtractedBranchIDs.Clone()
-}
-
-// SetScheduled sets the message associated with this metadata as scheduled.
-// It returns true if the scheduled status is modified. False otherwise.
-func (m *MessageMetadata) SetScheduled(scheduled bool) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.Scheduled == scheduled {
- return false
- }
-
- m.M.Scheduled = scheduled
- m.M.ScheduledTime = clock.SyncedTime()
- m.SetModified()
- return true
-}
-
-// Scheduled returns true if the message represented by this metadata was scheduled. False otherwise.
-func (m *MessageMetadata) Scheduled() bool {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.Scheduled
-}
-
-// ScheduledTime returns the time when the message represented by this metadata was scheduled.
-func (m *MessageMetadata) ScheduledTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.ScheduledTime
-}
-
-// SetDiscardedTime add the discarded time of a message to the metadata.
-func (m *MessageMetadata) SetDiscardedTime(discardedTime time.Time) {
- m.Lock()
- defer m.Unlock()
-
- m.M.DiscardedTime = discardedTime
- m.SetModified()
-}
-
-// DiscardedTime returns when the message was discarded.
-func (m *MessageMetadata) DiscardedTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.DiscardedTime
-}
-
-// QueuedTime returns the time a message entered the scheduling queue.
-func (m *MessageMetadata) QueuedTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.QueuedTime
-}
-
-// SetQueuedTime records the time the message entered the scheduler queue.
-func (m *MessageMetadata) SetQueuedTime(queuedTime time.Time) {
- m.Lock()
- defer m.Unlock()
-
- m.M.QueuedTime = queuedTime
- m.SetModified()
-}
-
-// SetBooked sets the message associated with this metadata as booked.
-// It returns true if the booked status is modified. False otherwise.
-func (m *MessageMetadata) SetBooked(booked bool) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.Booked == booked {
- return false
- }
-
- m.M.Booked = booked
- m.M.BookedTime = clock.SyncedTime()
- m.SetModified()
- return true
-}
-
-// IsBooked returns true if the message represented by this metadata is booked. False otherwise.
-func (m *MessageMetadata) IsBooked() (result bool) {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.Booked
-}
-
-// BookedTime returns the time when the message represented by this metadata was booked.
-func (m *MessageMetadata) BookedTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.BookedTime
-}
-
-// IsObjectivelyInvalid returns true if the message represented by this metadata is objectively invalid.
-func (m *MessageMetadata) IsObjectivelyInvalid() (result bool) {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.ObjectivelyInvalid
-}
-
-// SetObjectivelyInvalid sets the message associated with this metadata as objectively invalid - it returns true if the
-// status was changed.
-func (m *MessageMetadata) SetObjectivelyInvalid(invalid bool) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.ObjectivelyInvalid == invalid {
- return false
- }
-
- m.M.ObjectivelyInvalid = invalid
- m.SetModified()
- return true
-}
-
-// IsSubjectivelyInvalid returns true if the message represented by this metadata is subjectively invalid.
-func (m *MessageMetadata) IsSubjectivelyInvalid() (result bool) {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.SubjectivelyInvalid
-}
-
-// SetSubjectivelyInvalid sets the message associated with this metadata as subjectively invalid - it returns true if
-// the status was changed.
-func (m *MessageMetadata) SetSubjectivelyInvalid(invalid bool) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.SubjectivelyInvalid == invalid {
- return false
- }
-
- m.M.SubjectivelyInvalid = invalid
- m.SetModified()
- return true
-}
-
-// SetGradeOfFinality sets the grade of finality associated with this metadata.
-// It returns true if the grade of finality is modified. False otherwise.
-func (m *MessageMetadata) SetGradeOfFinality(gradeOfFinality gof.GradeOfFinality) (modified bool) {
- m.Lock()
- defer m.Unlock()
-
- if m.M.GradeOfFinality == gradeOfFinality {
- return false
- }
-
- m.M.GradeOfFinality = gradeOfFinality
- m.M.GradeOfFinalityTime = clock.SyncedTime()
- m.SetModified()
- return true
-}
-
-// GradeOfFinality returns the grade of finality.
-func (m *MessageMetadata) GradeOfFinality() (result gof.GradeOfFinality) {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.GradeOfFinality
-}
-
-// GradeOfFinalityTime returns the time the grade of finality was set.
-func (m *MessageMetadata) GradeOfFinalityTime() time.Time {
- m.RLock()
- defer m.RUnlock()
-
- return m.M.GradeOfFinalityTime
-}
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// region Errors ///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-var (
- // ErrNoStrongParents is triggered if there no strong parents.
- ErrNoStrongParents = errors.New("missing strong messages in first parent block")
- // ErrBlockTypeIsUnknown is triggered when the block type is unknown.
- ErrBlockTypeIsUnknown = errors.Errorf("block types must range from %d-%d", 1, LastValidBlockType)
- // ErrConflictingReferenceAcrossBlocks is triggered if there conflicting references across blocks.
- ErrConflictingReferenceAcrossBlocks = errors.New("different blocks have conflicting references")
-)
-
-// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/messagefactory_test.go b/packages/tangle/messagefactory_test.go
deleted file mode 100644
index f97333c227..0000000000
--- a/packages/tangle/messagefactory_test.go
+++ /dev/null
@@ -1,433 +0,0 @@
-package tangle
-
-import (
- "context"
- "crypto/ed25519"
- "fmt"
- "sync"
- "sync/atomic"
- "testing"
- "time"
-
- "github.com/iotaledger/hive.go/generics/event"
- "github.com/iotaledger/hive.go/generics/set"
- "github.com/iotaledger/hive.go/identity"
- "github.com/iotaledger/hive.go/types"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- _ "golang.org/x/crypto/blake2b"
-
- "github.com/iotaledger/goshimmer/packages/clock"
- "github.com/iotaledger/goshimmer/packages/ledger/utxo"
- "github.com/iotaledger/goshimmer/packages/pow"
- "github.com/iotaledger/goshimmer/packages/tangle/payload"
-)
-
-const (
- targetPOW = 10
- powTimeout = 10 * time.Second
- totalMessages = 2000
-)
-
-func TestMessageFactory_BuildMessage(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping test in short mode.")
- }
- selfLocalIdentity := identity.GenerateLocalIdentity()
- tangle := NewTestTangle(Identity(selfLocalIdentity))
- defer tangle.Shutdown()
- mockOTV := &SimpleMockOnTangleVoting{}
- tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
-
- tangle.MessageFactory = NewMessageFactory(
- tangle,
- TipSelectorFunc(func(p payload.Payload, countParents int) (parents MessageIDs) {
- return NewMessageIDs(EmptyMessageID)
- }),
- emptyLikeReferences,
- )
- tangle.MessageFactory.SetTimeout(powTimeout)
- defer tangle.MessageFactory.Shutdown()
-
- // keep track of sequence numbers
- sequenceNumbers := sync.Map{}
-
- // attach to event and count
- countEvents := uint64(0)
- tangle.MessageFactory.Events.MessageConstructed.Hook(event.NewClosure(func(_ *MessageConstructedEvent) {
- atomic.AddUint64(&countEvents, 1)
- }))
-
- t.Run("CheckProperties", func(t *testing.T) {
- p := payload.NewGenericDataPayload([]byte("TestCheckProperties"))
- msg, err := tangle.MessageFactory.IssuePayload(p)
- require.NoError(t, err)
-
- // TODO: approval switch: make test case with weak parents
- assert.NotEmpty(t, msg.ParentsByType(StrongParentType))
-
- // time in range of 0.1 seconds
- assert.InDelta(t, clock.SyncedTime().UnixNano(), msg.IssuingTime().UnixNano(), 100000000)
-
- // check payload
- assert.Equal(t, p, msg.Payload())
-
- // check total events and sequence number
- assert.EqualValues(t, 1, countEvents)
- assert.EqualValues(t, 0, msg.SequenceNumber())
-
- sequenceNumbers.Store(msg.SequenceNumber(), true)
- })
-
- // create messages in parallel
- t.Run("ParallelCreation", func(t *testing.T) {
- for i := 1; i < totalMessages; i++ {
- t.Run("test", func(t *testing.T) {
- t.Parallel()
-
- p := payload.NewGenericDataPayload([]byte("TestParallelCreation"))
- msg, err := tangle.MessageFactory.IssuePayload(p)
- require.NoError(t, err)
-
- // TODO: approval switch: make test case with weak parents
- assert.NotEmpty(t, msg.ParentsByType(StrongParentType))
-
- // time in range of 0.1 seconds
- assert.InDelta(t, clock.SyncedTime().UnixNano(), msg.IssuingTime().UnixNano(), 100000000)
-
- // check payload
- assert.Equal(t, p, msg.Payload())
-
- sequenceNumbers.Store(msg.SequenceNumber(), true)
- })
- }
- })
-
- // check total events and sequence number
- assert.EqualValues(t, totalMessages, countEvents)
-
- max := uint64(0)
- countSequence := 0
- sequenceNumbers.Range(func(key, value interface{}) bool {
- seq := key.(uint64)
- val := value.(bool)
- if val != true {
- return false
- }
-
- // check for max sequence number
- if seq > max {
- max = seq
- }
- countSequence++
- return true
- })
- assert.EqualValues(t, totalMessages-1, max)
- assert.EqualValues(t, totalMessages, countSequence)
-}
-
-func TestMessageFactory_POW(t *testing.T) {
- mockOTV := &SimpleMockOnTangleVoting{}
-
- tangle := NewTestTangle()
- defer tangle.Shutdown()
- tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
-
- msgFactory := NewMessageFactory(
- tangle,
- TipSelectorFunc(func(p payload.Payload, countParents int) (parentsMessageIDs MessageIDs) {
- return NewMessageIDs(EmptyMessageID)
- }),
- emptyLikeReferences,
- )
- defer msgFactory.Shutdown()
-
- worker := pow.New(1)
-
- msgFactory.SetWorker(WorkerFunc(func(msgBytes []byte) (uint64, error) {
- content := msgBytes[:len(msgBytes)-ed25519.SignatureSize-8]
- return worker.Mine(context.Background(), content, targetPOW)
- }))
- msgFactory.SetTimeout(powTimeout)
- msg, err := msgFactory.IssuePayload(payload.NewGenericDataPayload([]byte("test")))
- require.NoError(t, err)
-
- msgBytes, err := msg.Bytes()
- require.NoError(t, err)
- content := msgBytes[:len(msgBytes)-ed25519.SignatureSize-8]
-
- zeroes, err := worker.LeadingZerosWithNonce(content, msg.Nonce())
- assert.GreaterOrEqual(t, zeroes, targetPOW)
- assert.NoError(t, err)
-}
-
-func TestMessageFactory_PrepareLikedReferences_1(t *testing.T) {
- tangle := NewTestTangle()
- defer tangle.Shutdown()
-
- testFramework := NewMessageTestFramework(
- tangle,
- WithGenesisOutput("O1", 500),
- WithGenesisOutput("O2", 500),
- )
-
- tangle.Setup()
-
- tangle.Events.Error.Hook(event.NewClosure(func(err error) {
- t.Logf("Error fired: %v", err)
- }))
-
- // Message 1
- testFramework.CreateMessage("1", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O3", 500))
-
- // Message 2
- testFramework.CreateMessage("2", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O5", 500))
-
- // Message 3
- testFramework.CreateMessage("3", WithStrongParents("Genesis"), WithInputs("O2", "O1"), WithOutput("O4", 1000))
- testFramework.IssueMessages("1", "2", "3").WaitUntilAllTasksProcessed()
-
- testFramework.RegisterBranchID("1", "1")
- testFramework.RegisterBranchID("2", "2")
- testFramework.RegisterBranchID("3", "3")
-
- mockOTV := &SimpleMockOnTangleVoting{
- likedConflictMember: map[utxo.TransactionID]LikedConflictMembers{
- testFramework.BranchID("3"): {
- likedBranch: testFramework.BranchID("2"),
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("1"), testFramework.BranchID("2")),
- },
- testFramework.BranchID("2"): {
- likedBranch: testFramework.BranchID("2"),
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("1"), testFramework.BranchID("3")),
- },
- },
- }
-
- tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
-
- references, err := tangle.MessageFactory.ReferenceProvider.References(nil, NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("2").ID()), time.Now())
-
- require.NoError(t, err)
-
- assert.Equal(t, references[ShallowLikeParentType], MessageIDs{testFramework.Message("2").ID(): types.Void})
-}
-
-func TestMessageFactory_PrepareLikedReferences_2(t *testing.T) {
- tangle := NewTestTangle()
- defer tangle.Shutdown()
-
- testFramework := NewMessageTestFramework(
- tangle,
- WithGenesisOutput("O1", 500),
- WithGenesisOutput("O2", 500),
- )
-
- tangle.Setup()
-
- tangle.Events.Error.Hook(event.NewClosure(func(err error) {
- t.Logf("Error fired: %v", err)
- }))
-
- // Message 1
- testFramework.CreateMessage("1", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O3", 500), WithIssuingTime(time.Now().Add(5*time.Minute)))
-
- // Message 2
- testFramework.CreateMessage("2", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O5", 500), WithIssuingTime(time.Now().Add(5*time.Minute)))
-
- // Message 3
- testFramework.CreateMessage("3", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O4", 500))
-
- // Message 4
- testFramework.CreateMessage("4", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O6", 500))
- testFramework.IssueMessages("1", "2", "3", "4").WaitUntilAllTasksProcessed()
-
- testFramework.RegisterBranchID("1", "1")
- testFramework.RegisterBranchID("2", "2")
- testFramework.RegisterBranchID("3", "3")
- testFramework.RegisterBranchID("4", "4")
-
- mockOTV := &SimpleMockOnTangleVoting{
- likedConflictMember: map[utxo.TransactionID]LikedConflictMembers{
- testFramework.BranchID("1"): {
- likedBranch: testFramework.BranchID("1"),
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("4")),
- },
- testFramework.BranchID("2"): {
- likedBranch: testFramework.BranchID("2"),
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("3")),
- },
- testFramework.BranchID("3"): {
- likedBranch: testFramework.BranchID("2"),
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("2")),
- },
- testFramework.BranchID("4"): {
- likedBranch: testFramework.BranchID("1"),
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("1")),
- },
- },
- }
-
- tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
-
- // Test first set of parents
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("2").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("2").ID()),
- ShallowLikeParentType: NewMessageIDs(testFramework.Message("2").ID()),
- }, time.Now())
-
- // Test second set of parents
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("2").ID(), testFramework.Message("1").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(testFramework.Message("2").ID(), testFramework.Message("1").ID()),
- }, time.Now())
-
- // Test third set of parents
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("4").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("4").ID()),
- ShallowLikeParentType: NewMessageIDs(testFramework.Message("1").ID(), testFramework.Message("2").ID()),
- }, time.Now())
-
- // Test fourth set of parents
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("1").ID(), testFramework.Message("2").ID(), testFramework.Message("3").ID(), testFramework.Message("4").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(testFramework.Message("1").ID(), testFramework.Message("2").ID(), testFramework.Message("3").ID(), testFramework.Message("4").ID()),
- ShallowLikeParentType: NewMessageIDs(testFramework.Message("1").ID(), testFramework.Message("2").ID()),
- }, time.Now())
-
- // Test empty set of parents
- checkReferences(t, tangle, nil, NewMessageIDs(), map[ParentsType]MessageIDs{}, time.Now(), true)
-
- // Add reattachment that is older than the original message.
- // Message 5 (reattachment)
- testFramework.CreateMessage("5", WithStrongParents("Genesis"), WithReattachment("1"))
- testFramework.IssueMessages("5").WaitUntilAllTasksProcessed()
-
- // Select oldest attachment of the message.
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("4").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("4").ID()),
- ShallowLikeParentType: NewMessageIDs(testFramework.Message("2").ID(), testFramework.Message("5").ID()),
- }, time.Now())
-
- // Do not return too old like reference: remove strong parent.
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("4").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(testFramework.Message("3").ID()),
- ShallowLikeParentType: NewMessageIDs(testFramework.Message("2").ID()),
- }, time.Now().Add(maxParentsTimeDifference))
-
- // Do not return too old like reference: if there's no other strong parent left, an error should be returned.
- checkReferences(t, tangle, nil, NewMessageIDs(testFramework.Message("4").ID()), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(),
- }, time.Now().Add(maxParentsTimeDifference), true)
-}
-
-// Tests if error is returned when non-existing transaction is tried to be liked.
-func TestMessageFactory_PrepareLikedReferences_3(t *testing.T) {
- tangle := NewTestTangle()
-
- testFramework := NewMessageTestFramework(
- tangle,
- WithGenesisOutput("O1", 500),
- WithGenesisOutput("O2", 500),
- )
-
- tangle.Setup()
-
- tangle.Events.Error.Hook(event.NewClosure(func(err error) {
- t.Logf("Error fired: %v", err)
- }))
-
- // Message 1
- testFramework.CreateMessage("1", WithStrongParents("Genesis"), WithInputs("O1"), WithOutput("O3", 500))
-
- // Message 2
- testFramework.CreateMessage("2", WithStrongParents("Genesis"), WithInputs("O2"), WithOutput("O5", 500))
-
- // Message 3
- testFramework.CreateMessage("3", WithStrongParents("Genesis"), WithInputs("O2", "O1"), WithOutput("O4", 1000))
- testFramework.IssueMessages("1", "2", "3").WaitUntilAllTasksProcessed()
-
- testFramework.RegisterBranchID("1", "1")
- testFramework.RegisterBranchID("2", "2")
- testFramework.RegisterBranchID("3", "3")
-
- nonExistingBranchID := randomBranchID()
-
- mockOTV := &SimpleMockOnTangleVoting{
- likedConflictMember: map[utxo.TransactionID]LikedConflictMembers{
- testFramework.BranchID("2"): {
- likedBranch: nonExistingBranchID,
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("3"), nonExistingBranchID),
- },
- testFramework.BranchID("3"): {
- likedBranch: nonExistingBranchID,
- conflictMembers: set.NewAdvancedSet(testFramework.BranchID("2"), nonExistingBranchID),
- },
- },
- }
-
- tangle.OTVConsensusManager = NewOTVConsensusManager(mockOTV)
-
- tangle.OrphanageManager.Events.BlockOrphaned.Hook(event.NewClosure(func(event *BlockOrphanedEvent) {
- fmt.Println(event.Block.ID())
- }))
-
- references, err := tangle.MessageFactory.ReferenceProvider.References(nil, NewMessageIDs(testFramework.Message("3").ID(), testFramework.Message("2").ID()), time.Now())
- require.Error(t, err)
- assert.True(t, references.IsEmpty())
-}
-
-// Tests if weak references are properly constructed from consumed outputs.
-func TestMessageFactory_WeakReferencesConsumed(t *testing.T) {
- tangle := NewTestTangle()
-
- testFramework := NewMessageTestFramework(
- tangle,
- WithGenesisOutput("G1", 500),
- WithGenesisOutput("G2", 500),
- )
-
- tangle.Setup()
-
- {
- testFramework.CreateMessage("1", WithStrongParents("Genesis"), WithInputs("G1"), WithOutput("O1", 500))
- testFramework.CreateMessage("2", WithStrongParents("Genesis"), WithInputs("G2"), WithOutput("O2", 500))
- testFramework.CreateMessage("3", WithStrongParents("1", "2"))
-
- testFramework.IssueMessages("1", "2", "3").WaitUntilAllTasksProcessed()
-
- checkReferences(t, tangle, testFramework.Message("1").Payload(), testFramework.Message("1").ParentsByType(StrongParentType), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(EmptyMessageID),
- }, time.Now())
-
- checkReferences(t, tangle, testFramework.Message("2").Payload(), testFramework.Message("2").ParentsByType(StrongParentType), map[ParentsType]MessageIDs{
- StrongParentType: NewMessageIDs(EmptyMessageID),
- }, time.Now())
-
- checkReferences(t, tangle, testFramework.Message("3").Payload(), testFramework.Message("3").ParentsByType(StrongParentType), map[ParentsType]MessageIDs{
- StrongParentType: testFramework.MessageIDs("1", "2"),
- }, time.Now())
- }
-
- {
- testFramework.CreateMessage("4", WithStrongParents("3"), WithInputs("O1", "O2"), WithOutput("O4", 1000))
- testFramework.IssueMessages("4").WaitUntilAllTasksProcessed()
-
- // Select oldest attachment of the message.
- checkReferences(t, tangle, testFramework.Message("4").Payload(), testFramework.Message("4").ParentsByType(StrongParentType), map[ParentsType]MessageIDs{
- StrongParentType: testFramework.MessageIDs("3"),
- WeakParentType: testFramework.MessageIDs("1", "2"),
- }, time.Now())
- }
-}
-
-func checkReferences(t *testing.T, tangle *Tangle, payload payload.Payload, parents MessageIDs, expectedReferences map[ParentsType]MessageIDs, issuingTime time.Time, errorExpected ...bool) {
- actualReferences, err := tangle.MessageFactory.ReferenceProvider.References(payload, parents, issuingTime)
- if len(errorExpected) > 0 && errorExpected[0] {
- require.Error(t, err)
- return
- }
- require.NoError(t, err)
-
- for _, referenceType := range []ParentsType{StrongParentType, ShallowLikeParentType, WeakParentType} {
- assert.Equalf(t, expectedReferences[referenceType], actualReferences[referenceType], "references type %s do not match: expected %s - actual %s", referenceType, expectedReferences[referenceType], actualReferences[referenceType])
- }
-}
diff --git a/packages/tangle/orphanagemanager.go b/packages/tangle/orphanagemanager.go
index 2ed02b1461..6d0a5b3201 100644
--- a/packages/tangle/orphanagemanager.go
+++ b/packages/tangle/orphanagemanager.go
@@ -8,12 +8,12 @@ import (
// region OrphanageManager /////////////////////////////////////////////////////////////////////////////////////////////
-// OrphanageManager is a manager that tracks orphaned messages.
+// OrphanageManager is a manager that tracks orphaned blocks.
type OrphanageManager struct {
Events *OrphanageManagerEvents
tangle *Tangle
- strongChildCounters map[MessageID]int
+ strongChildCounters map[BlockID]int
sync.Mutex
}
@@ -22,31 +22,31 @@ func NewOrphanageManager(tangle *Tangle) *OrphanageManager {
return &OrphanageManager{
Events: &OrphanageManagerEvents{
BlockOrphaned: event.New[*BlockOrphanedEvent](),
- AllChildrenOrphaned: event.New[*Message](),
+ AllChildrenOrphaned: event.New[*Block](),
},
tangle: tangle,
- strongChildCounters: make(map[MessageID]int),
+ strongChildCounters: make(map[BlockID]int),
}
}
func (o *OrphanageManager) Setup() {
- o.tangle.Solidifier.Events.MessageSolid.Attach(event.NewClosure(func(event *MessageSolidEvent) {
- for strongParent := range event.Message.ParentsByType(StrongParentType) {
+ o.tangle.Solidifier.Events.BlockSolid.Attach(event.NewClosure(func(event *BlockSolidEvent) {
+ for strongParent := range event.Block.ParentsByType(StrongParentType) {
o.increaseStrongChildCounter(strongParent)
}
}))
- o.tangle.ConfirmationOracle.Events().MessageConfirmed.Attach(event.NewClosure(func(event *MessageConfirmedEvent) {
+ o.tangle.ConfirmationOracle.Events().BlockAccepted.Attach(event.NewClosure(func(event *BlockAcceptedEvent) {
o.Lock()
defer o.Unlock()
- delete(o.strongChildCounters, event.Message.ID())
+ delete(o.strongChildCounters, event.Block.ID())
}))
}
-func (o *OrphanageManager) OrphanBlock(blockID MessageID, reason error) {
- o.tangle.Storage.Message(blockID).Consume(func(block *Message) {
+func (o *OrphanageManager) OrphanBlock(blockID BlockID, reason error) {
+ o.tangle.Storage.Block(blockID).Consume(func(block *Block) {
o.Events.BlockOrphaned.Trigger(&BlockOrphanedEvent{
Block: block,
Reason: reason,
@@ -58,14 +58,14 @@ func (o *OrphanageManager) OrphanBlock(blockID MessageID, reason error) {
})
}
-func (o *OrphanageManager) increaseStrongChildCounter(blockID MessageID) {
+func (o *OrphanageManager) increaseStrongChildCounter(blockID BlockID) {
o.Lock()
defer o.Unlock()
o.strongChildCounters[blockID]++
}
-func (o *OrphanageManager) decreaseStrongChildCounter(blockID MessageID) {
+func (o *OrphanageManager) decreaseStrongChildCounter(blockID BlockID) {
o.Lock()
defer o.Unlock()
@@ -74,7 +74,7 @@ func (o *OrphanageManager) decreaseStrongChildCounter(blockID MessageID) {
if o.strongChildCounters[blockID] == 0 {
delete(o.strongChildCounters, blockID)
- o.tangle.Storage.Message(blockID).Consume(func(block *Message) {
+ o.tangle.Storage.Block(blockID).Consume(func(block *Block) {
o.Events.AllChildrenOrphaned.Trigger(block)
})
}
@@ -86,11 +86,11 @@ func (o *OrphanageManager) decreaseStrongChildCounter(blockID MessageID) {
type OrphanageManagerEvents struct {
BlockOrphaned *event.Event[*BlockOrphanedEvent]
- AllChildrenOrphaned *event.Event[*Message]
+ AllChildrenOrphaned *event.Event[*Block]
}
type BlockOrphanedEvent struct {
- Block *Message
+ Block *Block
Reason error
}
diff --git a/packages/tangle/parser.go b/packages/tangle/parser.go
index 24a3c994f3..e09e1b1c89 100644
--- a/packages/tangle/parser.go
+++ b/packages/tangle/parser.go
@@ -25,42 +25,42 @@ const (
// region Parser ///////////////////////////////////////////////////////////////////////////////////////////////////////
-// Parser parses messages and bytes and emits corresponding events for parsed and rejected messages.
+// Parser parses blocks and bytes and emits corresponding events for parsed and rejected blocks.
type Parser struct {
- bytesFilters []BytesFilter
- messageFilters []MessageFilter
- Events *ParserEvents
+ bytesFilters []BytesFilter
+ blockFilters []BlockFilter
+ Events *ParserEvents
- byteFiltersModified typeutils.AtomicBool
- messageFiltersModified typeutils.AtomicBool
- bytesFiltersMutex sync.Mutex
- messageFiltersMutex sync.Mutex
+ byteFiltersModified typeutils.AtomicBool
+ blockFiltersModified typeutils.AtomicBool
+ bytesFiltersMutex sync.Mutex
+ blockFiltersMutex sync.Mutex
}
-// NewParser creates a new Message parser.
+// NewParser creates a new Block parser.
func NewParser() (result *Parser) {
result = &Parser{
- bytesFilters: make([]BytesFilter, 0),
- messageFilters: make([]MessageFilter, 0),
- Events: newParserEvents(),
+ bytesFilters: make([]BytesFilter, 0),
+ blockFilters: make([]BlockFilter, 0),
+ Events: newParserEvents(),
}
// add builtin filters
result.AddBytesFilter(NewRecentlySeenBytesFilter())
- result.AddMessageFilter(NewMessageSignatureFilter())
- result.AddMessageFilter(NewTransactionFilter())
+ result.AddBlockFilter(NewBlockSignatureFilter())
+ result.AddBlockFilter(NewTransactionFilter())
return
}
// Setup defines the flow of the parser.
func (p *Parser) Setup() {
p.setupBytesFilterDataFlow()
- p.setupMessageFilterDataFlow()
+ p.setupBlockFilterDataFlow()
}
-// Parse parses the given message bytes.
-func (p *Parser) Parse(messageBytes []byte, peer *peer.Peer) {
- p.bytesFilters[0].Filter(messageBytes, peer)
+// Parse parses the given block bytes.
+func (p *Parser) Parse(blockBytes []byte, peer *peer.Peer) {
+ p.bytesFilters[0].Filter(blockBytes, peer)
}
// AddBytesFilter adds the given bytes filter to the parser.
@@ -71,12 +71,12 @@ func (p *Parser) AddBytesFilter(filter BytesFilter) {
p.byteFiltersModified.Set()
}
-// AddMessageFilter adds a new message filter to the parser.
-func (p *Parser) AddMessageFilter(filter MessageFilter) {
- p.messageFiltersMutex.Lock()
- p.messageFilters = append(p.messageFilters, filter)
- p.messageFiltersMutex.Unlock()
- p.messageFiltersModified.Set()
+// AddBlockFilter adds a new block filter to the parser.
+func (p *Parser) AddBlockFilter(filter BlockFilter) {
+ p.blockFiltersMutex.Lock()
+ p.blockFilters = append(p.blockFilters, filter)
+ p.blockFiltersMutex.Unlock()
+ p.blockFiltersModified.Set()
}
// sets up the byte filter data flow chain.
@@ -92,7 +92,7 @@ func (p *Parser) setupBytesFilterDataFlow() {
numberOfBytesFilters := len(p.bytesFilters)
for i := 0; i < numberOfBytesFilters; i++ {
if i == numberOfBytesFilters-1 {
- p.bytesFilters[i].OnAccept(p.parseMessage)
+ p.bytesFilters[i].OnAccept(p.parseBlock)
} else {
p.bytesFilters[i].OnAccept(p.bytesFilters[i+1].Filter)
}
@@ -108,46 +108,45 @@ func (p *Parser) setupBytesFilterDataFlow() {
p.bytesFiltersMutex.Unlock()
}
-// sets up the message filter data flow chain.
-func (p *Parser) setupMessageFilterDataFlow() {
- if !p.messageFiltersModified.IsSet() {
+// sets up the block filter data flow chain.
+func (p *Parser) setupBlockFilterDataFlow() {
+ if !p.blockFiltersModified.IsSet() {
return
}
- p.messageFiltersMutex.Lock()
- if p.messageFiltersModified.IsSet() {
- p.messageFiltersModified.SetTo(false)
-
- numberOfMessageFilters := len(p.messageFilters)
- for i := 0; i < numberOfMessageFilters; i++ {
- if i == numberOfMessageFilters-1 {
- p.messageFilters[i].OnAccept(func(msg *Message, peer *peer.Peer) {
-
- p.Events.MessageParsed.Trigger(&MessageParsedEvent{
- Message: msg,
- Peer: peer,
+ p.blockFiltersMutex.Lock()
+ if p.blockFiltersModified.IsSet() {
+ p.blockFiltersModified.SetTo(false)
+
+ numberOfBlockFilters := len(p.blockFilters)
+ for i := 0; i < numberOfBlockFilters; i++ {
+ if i == numberOfBlockFilters-1 {
+ p.blockFilters[i].OnAccept(func(blk *Block, peer *peer.Peer) {
+ p.Events.BlockParsed.Trigger(&BlockParsedEvent{
+ Block: blk,
+ Peer: peer,
})
})
} else {
- p.messageFilters[i].OnAccept(p.messageFilters[i+1].Filter)
+ p.blockFilters[i].OnAccept(p.blockFilters[i+1].Filter)
}
- p.messageFilters[i].OnReject(func(msg *Message, err error, peer *peer.Peer) {
- p.Events.MessageRejected.Trigger(&MessageRejectedEvent{
- Message: msg,
- Peer: peer,
- Error: err,
+ p.blockFilters[i].OnReject(func(blk *Block, err error, peer *peer.Peer) {
+ p.Events.BlockRejected.Trigger(&BlockRejectedEvent{
+ Block: blk,
+ Peer: peer,
+ Error: err,
})
})
}
}
- p.messageFiltersMutex.Unlock()
+ p.blockFiltersMutex.Unlock()
}
-// parses the given message and emits
-func (p *Parser) parseMessage(bytes []byte, peer *peer.Peer) {
- // Validation of the message is implicitly done while decoding the bytes with serix.
- msg := new(Message)
- if _, err := serix.DefaultAPI.Decode(context.Background(), bytes, msg); err != nil {
+// parses the given block and emits
+func (p *Parser) parseBlock(bytes []byte, peer *peer.Peer) {
+ // Validation of the block is implicitly done while decoding the bytes with serix.
+ blk := new(Block)
+ if _, err := serix.DefaultAPI.Decode(context.Background(), bytes, blk); err != nil {
p.Events.BytesRejected.Trigger(&BytesRejectedEvent{
Bytes: bytes,
Peer: peer,
@@ -155,15 +154,15 @@ func (p *Parser) parseMessage(bytes []byte, peer *peer.Peer) {
})
} else {
// TODO: this could also be done by directly taking the bytes
- _ = msg.DetermineID()
- p.messageFilters[0].Filter(msg, peer)
+ _ = blk.DetermineID()
+ p.blockFilters[0].Filter(blk, peer)
}
}
-// Shutdown closes all the message filters.
+// Shutdown closes all the block filters.
func (p *Parser) Shutdown() {
- for _, messageFiler := range p.messageFilters {
- messageFiler.Close()
+ for _, blockFiler := range p.blockFilters {
+ blockFiler.Close()
}
}
@@ -184,71 +183,71 @@ type BytesFilter interface {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MessageFilter ////////////////////////////////////////////////////////////////////////////////////////////////
+// region BlockFilter ////////////////////////////////////////////////////////////////////////////////////////////////
-// MessageFilter filters based on messages and peers.
-type MessageFilter interface {
- // Filter filters up on the given message and peer and calls the acceptance callback
+// BlockFilter filters based on blocks and peers.
+type BlockFilter interface {
+ // Filter filters up on the given block and peer and calls the acceptance callback
// if the input passes or the rejection callback if the input is rejected.
- Filter(msg *Message, peer *peer.Peer)
+ Filter(blk *Block, peer *peer.Peer)
// OnAccept registers the given callback as the acceptance function of the filter.
- OnAccept(callback func(msg *Message, peer *peer.Peer))
+ OnAccept(callback func(blk *Block, peer *peer.Peer))
// OnReject registers the given callback as the rejection function of the filter.
- OnReject(callback func(msg *Message, err error, peer *peer.Peer))
+ OnReject(callback func(blk *Block, err error, peer *peer.Peer))
// Closer closes the filter.
io.Closer
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MessageSignatureFilter ///////////////////////////////////////////////////////////////////////////////////////
+// region BlockSignatureFilter ///////////////////////////////////////////////////////////////////////////////////////
-// MessageSignatureFilter filters messages based on whether their signatures are valid.
-type MessageSignatureFilter struct {
- onAcceptCallback func(msg *Message, peer *peer.Peer)
- onRejectCallback func(msg *Message, err error, peer *peer.Peer)
+// BlockSignatureFilter filters blocks based on whether their signatures are valid.
+type BlockSignatureFilter struct {
+ onAcceptCallback func(blk *Block, peer *peer.Peer)
+ onRejectCallback func(blk *Block, err error, peer *peer.Peer)
onAcceptCallbackMutex sync.RWMutex
onRejectCallbackMutex sync.RWMutex
}
-// NewMessageSignatureFilter creates a new message signature filter.
-func NewMessageSignatureFilter() *MessageSignatureFilter {
- return new(MessageSignatureFilter)
+// NewBlockSignatureFilter creates a new block signature filter.
+func NewBlockSignatureFilter() *BlockSignatureFilter {
+ return new(BlockSignatureFilter)
}
// Filter filters up on the given bytes and peer and calls the acceptance callback
// if the input passes or the rejection callback if the input is rejected.
-func (f *MessageSignatureFilter) Filter(msg *Message, peer *peer.Peer) {
- if valid, _ := msg.VerifySignature(); valid {
- f.getAcceptCallback()(msg, peer)
+func (f *BlockSignatureFilter) Filter(blk *Block, peer *peer.Peer) {
+ if valid, _ := blk.VerifySignature(); valid {
+ f.getAcceptCallback()(blk, peer)
return
}
- f.getRejectCallback()(msg, ErrInvalidSignature, peer)
+ f.getRejectCallback()(blk, ErrInvalidSignature, peer)
}
// OnAccept registers the given callback as the acceptance function of the filter.
-func (f *MessageSignatureFilter) OnAccept(callback func(msg *Message, peer *peer.Peer)) {
+func (f *BlockSignatureFilter) OnAccept(callback func(blk *Block, peer *peer.Peer)) {
f.onAcceptCallbackMutex.Lock()
f.onAcceptCallback = callback
f.onAcceptCallbackMutex.Unlock()
}
// OnReject registers the given callback as the rejection function of the filter.
-func (f *MessageSignatureFilter) OnReject(callback func(msg *Message, err error, peer *peer.Peer)) {
+func (f *BlockSignatureFilter) OnReject(callback func(blk *Block, err error, peer *peer.Peer)) {
f.onRejectCallbackMutex.Lock()
f.onRejectCallback = callback
f.onRejectCallbackMutex.Unlock()
}
-func (f *MessageSignatureFilter) getAcceptCallback() (result func(msg *Message, peer *peer.Peer)) {
+func (f *BlockSignatureFilter) getAcceptCallback() (result func(blk *Block, peer *peer.Peer)) {
f.onAcceptCallbackMutex.RLock()
result = f.onAcceptCallback
f.onAcceptCallbackMutex.RUnlock()
return
}
-func (f *MessageSignatureFilter) getRejectCallback() (result func(msg *Message, err error, peer *peer.Peer)) {
+func (f *BlockSignatureFilter) getRejectCallback() (result func(blk *Block, err error, peer *peer.Peer)) {
f.onRejectCallbackMutex.RLock()
result = f.onRejectCallback
f.onRejectCallbackMutex.RUnlock()
@@ -256,13 +255,13 @@ func (f *MessageSignatureFilter) getRejectCallback() (result func(msg *Message,
}
// Close closes the filter.
-func (f *MessageSignatureFilter) Close() error { return nil }
+func (f *BlockSignatureFilter) Close() error { return nil }
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region PowFilter ////////////////////////////////////////////////////////////////////////////////////////////////////
-// PowFilter is a message bytes filter validating the PoW nonce.
+// PowFilter is a block bytes filter validating the PoW nonce.
type PowFilter struct {
worker *pow.Worker
difficulty int
@@ -281,12 +280,12 @@ func NewPowFilter(worker *pow.Worker, difficulty int) *PowFilter {
}
// Filter checks whether the given bytes pass the PoW validation and calls the corresponding callback.
-func (f *PowFilter) Filter(msgBytes []byte, p *peer.Peer) {
- if err := f.validate(msgBytes); err != nil {
- f.getRejectCallback()(msgBytes, err, p)
+func (f *PowFilter) Filter(blkBytes []byte, p *peer.Peer) {
+ if err := f.validate(blkBytes); err != nil {
+ f.getRejectCallback()(blkBytes, err, p)
return
}
- f.getAcceptCallback()(msgBytes, p)
+ f.getAcceptCallback()(blkBytes, p)
}
// OnAccept registers the given callback as the acceptance function of the filter.
@@ -303,22 +302,22 @@ func (f *PowFilter) OnReject(callback func([]byte, error, *peer.Peer)) {
f.rejectCallback = callback
}
-func (f *PowFilter) getAcceptCallback() (result func(msgBytes []byte, peer *peer.Peer)) {
+func (f *PowFilter) getAcceptCallback() (result func(blkBytes []byte, peer *peer.Peer)) {
f.mu.RLock()
defer f.mu.RUnlock()
result = f.acceptCallback
return
}
-func (f *PowFilter) getRejectCallback() (result func(msgBytes []byte, err error, p *peer.Peer)) {
+func (f *PowFilter) getRejectCallback() (result func(blkBytes []byte, err error, p *peer.Peer)) {
f.mu.RLock()
defer f.mu.RUnlock()
result = f.rejectCallback
return
}
-func (f *PowFilter) validate(msgBytes []byte) error {
- content, err := powData(msgBytes)
+func (f *PowFilter) validate(blkBytes []byte) error {
+ content, err := powData(blkBytes)
if err != nil {
return err
}
@@ -333,12 +332,12 @@ func (f *PowFilter) validate(msgBytes []byte) error {
}
// powData returns the bytes over which PoW should be computed.
-func powData(msgBytes []byte) ([]byte, error) {
- contentLength := len(msgBytes) - ed25519.SignatureSize
+func powData(blkBytes []byte) ([]byte, error) {
+ contentLength := len(blkBytes) - ed25519.SignatureSize
if contentLength < pow.NonceBytes {
- return nil, ErrMessageTooSmall
+ return nil, ErrBlockTooSmall
}
- return msgBytes[:contentLength], nil
+ return blkBytes[:contentLength], nil
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -409,54 +408,54 @@ func NewTransactionFilter() *TransactionFilter {
return new(TransactionFilter)
}
-// TransactionFilter filters messages based on their timestamps and transaction timestamp.
+// TransactionFilter filters blocks based on their timestamps and transaction timestamp.
type TransactionFilter struct {
- onAcceptCallback func(msg *Message, peer *peer.Peer)
- onRejectCallback func(msg *Message, err error, peer *peer.Peer)
+ onAcceptCallback func(blk *Block, peer *peer.Peer)
+ onRejectCallback func(blk *Block, err error, peer *peer.Peer)
onAcceptCallbackMutex sync.RWMutex
onRejectCallbackMutex sync.RWMutex
}
-// Filter compares the timestamps between the message, and it's transaction payload and calls the corresponding callback.
-func (f *TransactionFilter) Filter(msg *Message, peer *peer.Peer) {
- if tx, ok := msg.Payload().(*devnetvm.Transaction); ok {
- if !isMessageAndTransactionTimestampsValid(tx, msg) {
- f.getRejectCallback()(msg, ErrInvalidMessageAndTransactionTimestamp, peer)
+// Filter compares the timestamps between the block, and it's transaction payload and calls the corresponding callback.
+func (f *TransactionFilter) Filter(blk *Block, peer *peer.Peer) {
+ if tx, ok := blk.Payload().(*devnetvm.Transaction); ok {
+ if !isBlockAndTransactionTimestampsValid(tx, blk) {
+ f.getRejectCallback()(blk, ErrInvalidBlockAndTransactionTimestamp, peer)
return
}
}
- f.getAcceptCallback()(msg, peer)
+ f.getAcceptCallback()(blk, peer)
}
-func isMessageAndTransactionTimestampsValid(transaction *devnetvm.Transaction, message *Message) bool {
+func isBlockAndTransactionTimestampsValid(transaction *devnetvm.Transaction, block *Block) bool {
transactionTimestamp := transaction.Essence().Timestamp()
- messageTimestamp := message.IssuingTime()
- return messageTimestamp.Sub(transactionTimestamp).Milliseconds() >= 0 && messageTimestamp.Sub(transactionTimestamp) <= MaxReattachmentTimeMin
+ blockTimestamp := block.IssuingTime()
+ return blockTimestamp.Sub(transactionTimestamp).Milliseconds() >= 0 && blockTimestamp.Sub(transactionTimestamp) <= MaxReattachmentTimeMin
}
// OnAccept registers the given callback as the acceptance function of the filter.
-func (f *TransactionFilter) OnAccept(callback func(msg *Message, peer *peer.Peer)) {
+func (f *TransactionFilter) OnAccept(callback func(blk *Block, peer *peer.Peer)) {
f.onAcceptCallbackMutex.Lock()
defer f.onAcceptCallbackMutex.Unlock()
f.onAcceptCallback = callback
}
// OnReject registers the given callback as the rejection function of the filter.
-func (f *TransactionFilter) OnReject(callback func(msg *Message, err error, peer *peer.Peer)) {
+func (f *TransactionFilter) OnReject(callback func(blk *Block, err error, peer *peer.Peer)) {
f.onRejectCallbackMutex.Lock()
defer f.onRejectCallbackMutex.Unlock()
f.onRejectCallback = callback
}
-func (f *TransactionFilter) getAcceptCallback() (result func(msg *Message, peer *peer.Peer)) {
+func (f *TransactionFilter) getAcceptCallback() (result func(blk *Block, peer *peer.Peer)) {
f.onAcceptCallbackMutex.RLock()
result = f.onAcceptCallback
f.onAcceptCallbackMutex.RUnlock()
return
}
-func (f *TransactionFilter) getRejectCallback() (result func(msg *Message, err error, peer *peer.Peer)) {
+func (f *TransactionFilter) getRejectCallback() (result func(blk *Block, err error, peer *peer.Peer)) {
f.onRejectCallbackMutex.RLock()
result = f.onRejectCallback
f.onRejectCallbackMutex.RUnlock()
@@ -471,20 +470,20 @@ func (f *TransactionFilter) Close() error { return nil }
// region Errors ///////////////////////////////////////////////////////////////////////////////////////////////////////
var (
- // ErrInvalidPOWDifficultly is returned when the nonce of a message does not fulfill the PoW difficulty.
+ // ErrInvalidPOWDifficultly is returned when the nonce of a block does not fulfill the PoW difficulty.
ErrInvalidPOWDifficultly = errors.New("invalid PoW")
- // ErrMessageTooSmall is returned when the message does not contain enough data for the PoW.
- ErrMessageTooSmall = errors.New("message too small")
+ // ErrBlockTooSmall is returned when the block does not contain enough data for the PoW.
+ ErrBlockTooSmall = errors.New("block too small")
- // ErrInvalidSignature is returned when a message contains an invalid signature.
+ // ErrInvalidSignature is returned when a block contains an invalid signature.
ErrInvalidSignature = fmt.Errorf("invalid signature")
// ErrReceivedDuplicateBytes is returned when duplicated bytes are rejected.
ErrReceivedDuplicateBytes = fmt.Errorf("received duplicate bytes")
- // ErrInvalidMessageAndTransactionTimestamp is returned when the message its transaction timestamps are invalid.
- ErrInvalidMessageAndTransactionTimestamp = fmt.Errorf("invalid message and transaction timestamp")
+ // ErrInvalidBlockAndTransactionTimestamp is returned when the block its transaction timestamps are invalid.
+ ErrInvalidBlockAndTransactionTimestamp = fmt.Errorf("invalid block and transaction timestamp")
)
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/parser_test.go b/packages/tangle/parser_test.go
index 337f281ca1..1c2b4cd583 100644
--- a/packages/tangle/parser_test.go
+++ b/packages/tangle/parser_test.go
@@ -24,43 +24,43 @@ import (
"github.com/iotaledger/goshimmer/packages/tangle/payload"
)
-func BenchmarkMessageParser_ParseBytesSame(b *testing.B) {
- msgBytes := lo.PanicOnErr(newTestDataMessage("Test").Bytes())
- msgParser := NewParser()
- msgParser.Setup()
+func BenchmarkBlockParser_ParseBytesSame(b *testing.B) {
+ blkBytes := lo.PanicOnErr(newTestDataBlock("Test").Bytes())
+ blkParser := NewParser()
+ blkParser.Setup()
b.ResetTimer()
for i := 0; i < b.N; i++ {
- msgParser.Parse(msgBytes, nil)
+ blkParser.Parse(blkBytes, nil)
}
}
-func BenchmarkMessageParser_ParseBytesDifferent(b *testing.B) {
- messageBytes := make([][]byte, b.N)
+func BenchmarkBlockParser_ParseBytesDifferent(b *testing.B) {
+ blockBytes := make([][]byte, b.N)
for i := 0; i < b.N; i++ {
- messageBytes[i] = lo.PanicOnErr(newTestDataMessage("Test" + strconv.Itoa(i)).Bytes())
+ blockBytes[i] = lo.PanicOnErr(newTestDataBlock("Test" + strconv.Itoa(i)).Bytes())
}
- msgParser := NewParser()
- msgParser.Setup()
+ blkParser := NewParser()
+ blkParser.Setup()
b.ResetTimer()
for i := 0; i < b.N; i++ {
- msgParser.Parse(messageBytes[i], nil)
+ blkParser.Parse(blockBytes[i], nil)
}
}
-func TestMessageParser_ParseMessage(t *testing.T) {
- msg := newTestDataMessage("Test")
+func TestBlockParser_ParseBlock(t *testing.T) {
+ blk := newTestDataBlock("Test")
- msgParser := NewParser()
- msgParser.Setup()
- msgParser.Parse(lo.PanicOnErr(msg.Bytes()), nil)
+ blkParser := NewParser()
+ blkParser.Setup()
+ blkParser.Parse(lo.PanicOnErr(blk.Bytes()), nil)
- msgParser.Events.MessageParsed.Hook(event.NewClosure(func(_ *MessageParsedEvent) {
- log.Infof("parsed message")
+ blkParser.Events.BlockParsed.Hook(event.NewClosure(func(_ *BlockParsedEvent) {
+ log.Infof("parsed block")
}))
}
@@ -73,43 +73,43 @@ var (
func TestTransactionFilter_Filter(t *testing.T) {
filter := NewTransactionFilter()
// set callbacks
- m := &messageCallbackMock{}
+ m := &blockCallbackMock{}
filter.OnAccept(m.Accept)
filter.OnReject(m.Reject)
t.Run("skip non-transaction payloads", func(t *testing.T) {
- msg := &Message{}
- msg.Init()
+ blk := &Block{}
+ blk.Init()
- msg.payload = payload.NewGenericDataPayload([]byte("hello world"))
- m.On("Accept", msg, testPeer)
- filter.Filter(msg, testPeer)
+ blk.payload = payload.NewGenericDataPayload([]byte("hello world"))
+ m.On("Accept", blk, testPeer)
+ filter.Filter(blk, testPeer)
})
}
-func Test_isMessageAndTransactionTimestampsValid(t *testing.T) {
- msg := &Message{}
- msg.Init()
+func Test_isBlockAndTransactionTimestampsValid(t *testing.T) {
+ blk := &Block{}
+ blk.Init()
t.Run("older tx timestamp within limit", func(t *testing.T) {
tx := newTransaction(time.Now())
- msg.M.IssuingTime = tx.Essence().Timestamp().Add(1 * time.Second)
- assert.True(t, isMessageAndTransactionTimestampsValid(tx, msg))
+ blk.M.IssuingTime = tx.Essence().Timestamp().Add(1 * time.Second)
+ assert.True(t, isBlockAndTransactionTimestampsValid(tx, blk))
})
t.Run("older timestamp but older than max", func(t *testing.T) {
tx := newTransaction(time.Now())
- msg.M.IssuingTime = tx.Essence().Timestamp().Add(MaxReattachmentTimeMin).Add(1 * time.Millisecond)
- assert.False(t, isMessageAndTransactionTimestampsValid(tx, msg))
+ blk.M.IssuingTime = tx.Essence().Timestamp().Add(MaxReattachmentTimeMin).Add(1 * time.Millisecond)
+ assert.False(t, isBlockAndTransactionTimestampsValid(tx, blk))
})
- t.Run("equal tx and msg timestamp", func(t *testing.T) {
+ t.Run("equal tx and blk timestamp", func(t *testing.T) {
tx := newTransaction(time.Now())
- msg.M.IssuingTime = tx.Essence().Timestamp()
- assert.True(t, isMessageAndTransactionTimestampsValid(tx, msg))
+ blk.M.IssuingTime = tx.Essence().Timestamp()
+ assert.True(t, isBlockAndTransactionTimestampsValid(tx, blk))
})
- t.Run("older message", func(t *testing.T) {
+ t.Run("older block", func(t *testing.T) {
tx := newTransaction(time.Now())
- msg.M.IssuingTime = tx.Essence().Timestamp().Add(-1 * time.Millisecond)
- assert.False(t, isMessageAndTransactionTimestampsValid(tx, msg))
+ blk.M.IssuingTime = tx.Essence().Timestamp().Add(-1 * time.Millisecond)
+ assert.False(t, isBlockAndTransactionTimestampsValid(tx, blk))
})
}
@@ -121,32 +121,32 @@ func TestPowFilter_Filter(t *testing.T) {
filter.OnAccept(m.Accept)
filter.OnReject(m.Reject)
- t.Run("reject small message", func(t *testing.T) {
- m.On("Reject", mock.Anything, mock.MatchedBy(func(err error) bool { return errors.Is(err, ErrMessageTooSmall) }), testPeer)
+ t.Run("reject small block", func(t *testing.T) {
+ m.On("Reject", mock.Anything, mock.MatchedBy(func(err error) bool { return errors.Is(err, ErrBlockTooSmall) }), testPeer)
filter.Filter(nil, testPeer)
})
- msg := newTestNonceMessage(0)
- msgBytes := lo.PanicOnErr(msg.Bytes())
+ blk := newTestNonceBlock(0)
+ blkBytes := lo.PanicOnErr(blk.Bytes())
t.Run("reject invalid nonce", func(t *testing.T) {
- m.On("Reject", msgBytes, mock.MatchedBy(func(err error) bool { return errors.Is(err, ErrInvalidPOWDifficultly) }), testPeer)
- filter.Filter(msgBytes, testPeer)
+ m.On("Reject", blkBytes, mock.MatchedBy(func(err error) bool { return errors.Is(err, ErrInvalidPOWDifficultly) }), testPeer)
+ filter.Filter(blkBytes, testPeer)
})
- nonce, err := testWorker.Mine(context.Background(), msgBytes[:len(msgBytes)-len(msg.Signature())-pow.NonceBytes], testDifficulty)
+ nonce, err := testWorker.Mine(context.Background(), blkBytes[:len(blkBytes)-len(blk.Signature())-pow.NonceBytes], testDifficulty)
require.NoError(t, err)
- msgPOW := newTestNonceMessage(nonce)
- msgPOWBytes := lo.PanicOnErr(msgPOW.Bytes())
+ blkPOW := newTestNonceBlock(nonce)
+ blkPOWBytes := lo.PanicOnErr(blkPOW.Bytes())
t.Run("accept valid nonce", func(t *testing.T) {
- zeroes, err := testWorker.LeadingZeros(msgPOWBytes[:len(msgPOWBytes)-len(msgPOW.Signature())])
+ zeroes, err := testWorker.LeadingZeros(blkPOWBytes[:len(blkPOWBytes)-len(blkPOW.Signature())])
require.NoError(t, err)
require.GreaterOrEqual(t, zeroes, testDifficulty)
- m.On("Accept", msgPOWBytes, testPeer)
- filter.Filter(msgPOWBytes, testPeer)
+ m.On("Accept", blkPOWBytes, testPeer)
+ filter.Filter(blkPOWBytes, testPeer)
})
m.AssertExpectations(t)
@@ -154,13 +154,13 @@ func TestPowFilter_Filter(t *testing.T) {
type bytesCallbackMock struct{ mock.Mock }
-func (m *bytesCallbackMock) Accept(msg []byte, p *peer.Peer) { m.Called(msg, p) }
-func (m *bytesCallbackMock) Reject(msg []byte, err error, p *peer.Peer) { m.Called(msg, err, p) }
+func (m *bytesCallbackMock) Accept(blk []byte, p *peer.Peer) { m.Called(blk, p) }
+func (m *bytesCallbackMock) Reject(blk []byte, err error, p *peer.Peer) { m.Called(blk, err, p) }
-type messageCallbackMock struct{ mock.Mock }
+type blockCallbackMock struct{ mock.Mock }
-func (m *messageCallbackMock) Accept(msg *Message, p *peer.Peer) { m.Called(msg, p) }
-func (m *messageCallbackMock) Reject(msg *Message, err error, p *peer.Peer) { m.Called(msg, err, p) }
+func (m *blockCallbackMock) Accept(blk *Block, p *peer.Peer) { m.Called(blk, p) }
+func (m *blockCallbackMock) Reject(blk *Block, err error, p *peer.Peer) { m.Called(blk, err, p) }
type testTxPayload struct{}
diff --git a/packages/tangle/payload/payload.go b/packages/tangle/payload/payload.go
index 3a0138c0cb..e851e1b478 100644
--- a/packages/tangle/payload/payload.go
+++ b/packages/tangle/payload/payload.go
@@ -7,13 +7,13 @@ import (
"github.com/iotaledger/hive.go/serix"
)
-// MaxPayloadSize = MaxMessageSize -
+// MaxPayloadSize = MaxBlockSize -
// (version(1) + parentsBlocksCount(1) + 3 * (parentsType(1) + parentsCount(1) + 8 * reference(32)) +
// issuerPK(32) + issuanceTime(8) + seqNum(8) + payloadLength(4) + nonce(8) + signature(64)
-// = MaxMessageSize - 1158 bytes = 64378
+// = MaxBlockSize - 1158 bytes = 64378
const MaxSize = 64636
-// Payload represents the generic interface for an object that can be embedded in Messages of the Tangle.
+// Payload represents the generic interface for an object that can be embedded in Blocks of the Tangle.
type Payload interface {
// Type returns the Type of the Payload.
Type() Type
diff --git a/packages/tangle/ratesetter.go b/packages/tangle/ratesetter.go
index d4a154db8e..5717e1c5b2 100644
--- a/packages/tangle/ratesetter.go
+++ b/packages/tangle/ratesetter.go
@@ -15,7 +15,7 @@ import (
)
const (
- // MaxLocalQueueSize is the maximum local (containing the message to be issued) queue size in bytes.
+ // MaxLocalQueueSize is the maximum local (containing the block to be issued) queue size in bytes.
MaxLocalQueueSize = 20
// RateSettingIncrease is the global additive increase parameter.
// In the Access Control for Distributed Ledgers in the Internet of Things: A Networking Approach paper this parameter is denoted as "A".
@@ -26,13 +26,13 @@ const (
// Wmax is the maximum inbox threshold for the node. This value denotes when maximum active mana holder backs off its rate.
Wmax = 10
// Wmin is the min inbox threshold for the node. This value denotes when nodes with the least mana back off their rate.
- Wmin = 2
+ Wmin = 5
)
var (
- // ErrInvalidIssuer is returned when an invalid message is passed to the rate setter.
- ErrInvalidIssuer = errors.New("message not issued by local node")
- // ErrStopped is returned when a message is passed to a stopped rate setter.
+ // ErrInvalidIssuer is returned when an invalid block is passed to the rate setter.
+ ErrInvalidIssuer = errors.New("block not issued by local node")
+ // ErrStopped is returned when a block is passed to a stopped rate setter.
ErrStopped = errors.New("rate setter stopped")
)
@@ -55,7 +55,7 @@ type RateSetter struct {
Events *RateSetterEvents
self identity.ID
issuingQueue *schedulerutils.NodeQueue
- issueChan chan *Message
+ issueChan chan *Block
ownRate *atomic.Float64
pauseUpdates uint
initialPauseUpdates uint
@@ -67,13 +67,12 @@ type RateSetter struct {
// NewRateSetter returns a new RateSetter.
func NewRateSetter(tangle *Tangle) *RateSetter {
-
rateSetter := &RateSetter{
tangle: tangle,
Events: newRateSetterEvents(),
self: tangle.Options.Identity.ID(),
issuingQueue: schedulerutils.NewNodeQueue(tangle.Options.Identity.ID()),
- issueChan: make(chan *Message),
+ issueChan: make(chan *Block),
ownRate: atomic.NewFloat64(0),
pauseUpdates: 0,
initialPauseUpdates: uint(tangle.Options.RateSetterParams.RateSettingPause / tangle.Scheduler.Rate()),
@@ -89,19 +88,19 @@ func NewRateSetter(tangle *Tangle) *RateSetter {
// Setup sets up the behavior of the component by making it attach to the relevant events of the other components.
func (r *RateSetter) Setup() {
if !r.tangle.Options.RateSetterParams.Enabled {
- r.tangle.MessageFactory.Events.MessageConstructed.Attach(event.NewClosure(func(event *MessageConstructedEvent) {
- r.Events.MessageIssued.Trigger(event)
+ r.tangle.BlockFactory.Events.BlockConstructed.Attach(event.NewClosure(func(event *BlockConstructedEvent) {
+ r.Events.BlockIssued.Trigger(event)
}))
return
}
- r.tangle.MessageFactory.Events.MessageConstructed.Attach(event.NewClosure(func(event *MessageConstructedEvent) {
- if err := r.Issue(event.Message); err != nil {
+ r.tangle.BlockFactory.Events.BlockConstructed.Attach(event.NewClosure(func(event *BlockConstructedEvent) {
+ if err := r.Issue(event.Block); err != nil {
r.Events.Error.Trigger(errors.Errorf("failed to submit to rate setter: %w", err))
}
}))
// update own rate setting
- r.tangle.Scheduler.Events.MessageScheduled.Attach(event.NewClosure(func(_ *MessageScheduledEvent) {
+ r.tangle.Scheduler.Events.BlockScheduled.Attach(event.NewClosure(func(_ *BlockScheduledEvent) {
if r.pauseUpdates > 0 {
r.pauseUpdates--
return
@@ -112,9 +111,9 @@ func (r *RateSetter) Setup() {
}))
}
-// Issue submits a message to the local issuing queue.
-func (r *RateSetter) Issue(message *Message) error {
- if identity.NewID(message.IssuerPublicKey()) != r.self {
+// Issue submits a block to the local issuing queue.
+func (r *RateSetter) Issue(block *Block) error {
+ if identity.NewID(block.IssuerPublicKey()) != r.self {
return ErrInvalidIssuer
}
r.initOnce.Do(func() {
@@ -123,7 +122,7 @@ func (r *RateSetter) Issue(message *Message) error {
})
select {
- case r.issueChan <- message:
+ case r.issueChan <- block:
return nil
case <-r.shutdownSignal:
return ErrStopped
@@ -147,7 +146,7 @@ func (r *RateSetter) Size() int {
return r.issuingQueue.Size()
}
-// Estimate estimates the issuing time of new message.
+// Estimate estimates the issuing time of new block.
func (r *RateSetter) Estimate() time.Duration {
r.initOnce.Do(func() {
// initialize mana vectors in cache here when mana vectors are already loaded
@@ -162,7 +161,7 @@ func (r *RateSetter) Estimate() time.Duration {
return lo.Max(time.Duration(math.Ceil(float64(r.Size())/r.ownRate.Load()*float64(time.Second))), pauseUpdate)
}
-// rateSetting updates the rate ownRate at which messages can be issued by the node.
+// rateSetting updates the rate ownRate at which blocks can be issued by the node.
func (r *RateSetter) rateSetting() {
// Return access mana or MinMana to allow zero mana nodes issue.
ownMana := math.Max(r.tangle.Options.SchedulerParams.AccessManaMapRetrieverFunc()[r.self], MinMana)
@@ -176,7 +175,7 @@ func (r *RateSetter) rateSetting() {
ownRate /= RateSettingDecrease
r.pauseUpdates = r.initialPauseUpdates
} else {
- ownRate += RateSettingIncrease * ownMana / totalMana
+ ownRate += math.Max(RateSettingIncrease*ownMana/totalMana, 0.01)
}
r.ownRate.Store(math.Min(r.maxRate, ownRate))
}
@@ -192,15 +191,15 @@ func (r *RateSetter) issuerLoop() {
loop:
for {
select {
- // a new message can be submitted to the scheduler
+ // a new block can be submitted to the scheduler
case <-issueTimer.C:
timerStopped = true
if r.issuingQueue.Front() == nil {
continue
}
- msg := r.issuingQueue.PopFront().(*Message)
- r.Events.MessageIssued.Trigger(&MessageConstructedEvent{Message: msg})
+ blk := r.issuingQueue.PopFront().(*Block)
+ r.Events.BlockIssued.Trigger(&BlockConstructedEvent{Block: blk})
lastIssueTime = time.Now()
if next := r.issuingQueue.Front(); next != nil {
@@ -208,15 +207,15 @@ loop:
timerStopped = false
}
- // add a new message to the local issuer queue
- case msg := <-r.issueChan:
+ // add a new block to the local issuer queue
+ case blk := <-r.issueChan:
if r.issuingQueue.Size()+1 > MaxLocalQueueSize {
- r.Events.MessageDiscarded.Trigger(&MessageDiscardedEvent{msg.ID()})
+ r.Events.BlockDiscarded.Trigger(&BlockDiscardedEvent{blk.ID()})
continue
}
// add to queue
- r.issuingQueue.Submit(msg)
- r.issuingQueue.Ready(msg)
+ r.issuingQueue.Submit(blk)
+ r.issuingQueue.Ready(blk)
// set a new timer if needed
// if a timer is already running it is not updated, even if the ownRate has changed
@@ -233,9 +232,9 @@ loop:
}
}
- // discard all remaining messages at shutdown
+ // discard all remaining blocks at shutdown
for _, id := range r.issuingQueue.IDs() {
- r.Events.MessageDiscarded.Trigger(&MessageDiscardedEvent{NewMessageID(id)})
+ r.Events.BlockDiscarded.Trigger(&BlockDiscardedEvent{NewBlockID(id)})
}
}
@@ -250,7 +249,7 @@ func (r *RateSetter) initializeInitialRate() {
} else {
ownMana := math.Max(r.tangle.Options.SchedulerParams.AccessManaMapRetrieverFunc()[r.tangle.Options.Identity.ID()], MinMana)
totalMana := r.tangle.Options.SchedulerParams.TotalAccessManaRetrieveFunc()
- r.ownRate.Store(math.Max(ownMana/totalMana*r.maxRate, 0.001))
+ r.ownRate.Store(math.Max(ownMana/totalMana*r.maxRate, 1))
}
}
@@ -260,16 +259,16 @@ func (r *RateSetter) initializeInitialRate() {
// RateSetterEvents represents events happening in the rate setter.
type RateSetterEvents struct {
- MessageDiscarded *event.Event[*MessageDiscardedEvent]
- MessageIssued *event.Event[*MessageConstructedEvent]
- Error *event.Event[error]
+ BlockDiscarded *event.Event[*BlockDiscardedEvent]
+ BlockIssued *event.Event[*BlockConstructedEvent]
+ Error *event.Event[error]
}
func newRateSetterEvents() (new *RateSetterEvents) {
return &RateSetterEvents{
- MessageDiscarded: event.New[*MessageDiscardedEvent](),
- MessageIssued: event.New[*MessageConstructedEvent](),
- Error: event.New[error](),
+ BlockDiscarded: event.New[*BlockDiscardedEvent](),
+ BlockIssued: event.New[*BlockConstructedEvent](),
+ Error: event.New[error](),
}
}
diff --git a/packages/tangle/ratesetter_test.go b/packages/tangle/ratesetter_test.go
index e487818faf..5f28e81e5f 100644
--- a/packages/tangle/ratesetter_test.go
+++ b/packages/tangle/ratesetter_test.go
@@ -4,6 +4,8 @@ import (
"testing"
"time"
+ "github.com/iotaledger/goshimmer/packages/epoch"
+
"github.com/iotaledger/goshimmer/packages/tangle/payload"
"github.com/iotaledger/hive.go/crypto/ed25519"
@@ -38,15 +40,15 @@ func TestRateSetter_Submit(t *testing.T) {
rateSetter := NewRateSetter(tangle)
defer rateSetter.Shutdown()
- messageIssued := make(chan *Message, 1)
- rateSetter.Events.MessageIssued.Attach(event.NewClosure(func(event *MessageConstructedEvent) { messageIssued <- event.Message }))
+ blockIssued := make(chan *Block, 1)
+ rateSetter.Events.BlockIssued.Attach(event.NewClosure(func(event *BlockConstructedEvent) { blockIssued <- event.Block }))
- msg := newMessage(localNode.PublicKey())
- assert.NoError(t, rateSetter.Issue(msg))
+ blk := newBlock(localNode.PublicKey())
+ assert.NoError(t, rateSetter.Issue(blk))
assert.Eventually(t, func() bool {
select {
- case msg1 := <-messageIssued:
- return assert.Equal(t, msg, msg1)
+ case blk1 := <-blockIssued:
+ return assert.Equal(t, blk, blk1)
default:
return false
}
@@ -62,26 +64,28 @@ func TestRateSetter_ErrorHandling(t *testing.T) {
rateSetter := NewRateSetter(tangle)
defer rateSetter.Shutdown()
- messageDiscarded := make(chan MessageID, MaxLocalQueueSize*2)
- discardedCounter := event.NewClosure(func(event *MessageDiscardedEvent) { messageDiscarded <- event.MessageID })
- rateSetter.Events.MessageDiscarded.Hook(discardedCounter)
+ blockDiscarded := make(chan BlockID, MaxLocalQueueSize*2)
+ discardedCounter := event.NewClosure(func(event *BlockDiscardedEvent) { blockDiscarded <- event.BlockID })
+ rateSetter.Events.BlockDiscarded.Hook(discardedCounter)
for i := 0; i < MaxLocalQueueSize*2; i++ {
- msg := NewMessage(
- emptyLikeReferencesFromStrongParents(NewMessageIDs(EmptyMessageID)),
+ blk := NewBlock(
+ emptyLikeReferencesFromStrongParents(NewBlockIDs(EmptyBlockID)),
time.Now(),
localNode.PublicKey(),
0,
payload.NewGenericDataPayload(make([]byte, MaxLocalQueueSize)),
0,
ed25519.Signature{},
+ 0,
+ epoch.NewECRecord(0),
)
- assert.NoError(t, msg.DetermineID())
- assert.NoError(t, rateSetter.Issue(msg))
+ assert.NoError(t, blk.DetermineID())
+ assert.NoError(t, rateSetter.Issue(blk))
}
assert.Eventually(t, func() bool {
select {
- case <-messageDiscarded:
+ case <-blockDiscarded:
return true
default:
return false
diff --git a/packages/tangle/referenceprovider.go b/packages/tangle/referenceprovider.go
index b5a93417e5..357a6fc04c 100644
--- a/packages/tangle/referenceprovider.go
+++ b/packages/tangle/referenceprovider.go
@@ -27,8 +27,8 @@ func NewReferenceProvider(tangle *Tangle) (newInstance *ReferenceProvider) {
}
// References is an implementation of ReferencesFunc.
-func (r *ReferenceProvider) References(payload payload.Payload, strongParents MessageIDs, issuingTime time.Time) (references ParentMessageIDs, err error) {
- references = NewParentMessageIDs()
+func (r *ReferenceProvider) References(payload payload.Payload, strongParents BlockIDs, issuingTime time.Time) (references ParentBlockIDs, err error) {
+ references = NewParentBlockIDs()
// If the payload is a transaction we will weakly reference unconfirmed transactions it is consuming.
if tx, isTx := payload.(utxo.Transaction); isTx {
@@ -36,7 +36,7 @@ func (r *ReferenceProvider) References(payload payload.Payload, strongParents Me
for it := referencedTxs.Iterator(); it.HasNext(); {
referencedTx := it.Next()
if !r.tangle.ConfirmationOracle.IsTransactionConfirmed(referencedTx) {
- latestAttachment := r.tangle.MessageFactory.LatestAttachment(referencedTx)
+ latestAttachment := r.tangle.BlockFactory.LatestAttachment(referencedTx)
if latestAttachment == nil {
continue
}
@@ -57,13 +57,13 @@ func (r *ReferenceProvider) References(payload payload.Payload, strongParents Me
for strongParent := range strongParents {
excludedConflictIDsCopy := excludedConflictIDs.Clone()
- referencesToAdd, validStrongParent := r.addedReferencesForMessage(strongParent, issuingTime, excludedConflictIDsCopy)
+ referencesToAdd, validStrongParent := r.addedReferencesForBlock(strongParent, issuingTime, excludedConflictIDsCopy)
if !validStrongParent {
if err = r.checkPayloadLiked(strongParent); err != nil {
continue
}
- referencesToAdd = NewParentMessageIDs().Add(WeakParentType, strongParent)
+ referencesToAdd = NewParentBlockIDs().Add(WeakParentType, strongParent)
} else {
referencesToAdd.AddStrong(strongParent)
}
@@ -81,8 +81,8 @@ func (r *ReferenceProvider) References(payload payload.Payload, strongParents Me
return references, nil
}
-func (r *ReferenceProvider) ReferencesToMissingConflicts(issuingTime time.Time, amount int) (blockIDs MessageIDs) {
- blockIDs = NewMessageIDs()
+func (r *ReferenceProvider) ReferencesToMissingConflicts(issuingTime time.Time, amount int) (blockIDs BlockIDs) {
+ blockIDs = NewBlockIDs()
if amount == 0 {
return blockIDs
}
@@ -99,29 +99,29 @@ func (r *ReferenceProvider) ReferencesToMissingConflicts(issuingTime time.Time,
return blockIDs
}
-// addedReferenceForMessage returns the reference that is necessary to correct our opinion on the given message.
-func (r *ReferenceProvider) addedReferencesForMessage(msgID MessageID, issuingTime time.Time, excludedConflictIDs utxo.TransactionIDs) (addedReferences ParentMessageIDs, success bool) {
- msgConflictIDs, err := r.tangle.Booker.MessageBranchIDs(msgID)
+// addedReferenceForBlock returns the reference that is necessary to correct our opinion on the given block.
+func (r *ReferenceProvider) addedReferencesForBlock(blkID BlockID, issuingTime time.Time, excludedConflictIDs utxo.TransactionIDs) (addedReferences ParentBlockIDs, success bool) {
+ blkConflictIDs, err := r.tangle.Booker.BlockConflictIDs(blkID)
if err != nil {
- r.tangle.OrphanageManager.OrphanBlock(msgID, errors.Errorf("conflictID of %s can't be retrieved: %w", msgID, err))
+ r.tangle.OrphanageManager.OrphanBlock(blkID, errors.Errorf("conflictID of %s can't be retrieved: %w", blkID, err))
return nil, false
}
- addedReferences = NewParentMessageIDs()
- if msgConflictIDs.IsEmpty() {
+ addedReferences = NewParentBlockIDs()
+ if blkConflictIDs.IsEmpty() {
return addedReferences, true
}
- if addedReferences, err = r.addedReferencesForConflicts(msgConflictIDs, issuingTime, excludedConflictIDs); err != nil {
- r.tangle.OrphanageManager.OrphanBlock(msgID, errors.Errorf("cannot pick up %s as strong parent: %w", msgID, err))
+ if addedReferences, err = r.addedReferencesForConflicts(blkConflictIDs, issuingTime, excludedConflictIDs); err != nil {
+ r.tangle.OrphanageManager.OrphanBlock(blkID, errors.Errorf("cannot pick up %s as strong parent: %w", blkID, err))
return nil, false
}
// fmt.Println("excludedConflictIDs", excludedConflictIDs)
- // fmt.Println("addedReferencesForMessage", msgID, addedReferences)
- // A message might introduce too many references and cannot be picked up as a strong parent.
- if _, success := r.tryExtendReferences(NewParentMessageIDs(), addedReferences); !success {
- r.tangle.OrphanageManager.OrphanBlock(msgID, errors.Errorf("cannot pick up %s as strong parent: %w", msgID, err))
+ // fmt.Println("addedReferencesForBlock", blkID, addedReferences)
+ // A block might introduce too many references and cannot be picked up as a strong parent.
+ if _, success := r.tryExtendReferences(NewParentBlockIDs(), addedReferences); !success {
+ r.tangle.OrphanageManager.OrphanBlock(blkID, errors.Errorf("cannot pick up %s as strong parent: %w", blkID, err))
return nil, false
}
@@ -129,21 +129,20 @@ func (r *ReferenceProvider) addedReferencesForMessage(msgID MessageID, issuingTi
}
// addedReferencesForConflicts returns the references that are necessary to correct our opinion on the given conflicts.
-func (r *ReferenceProvider) addedReferencesForConflicts(conflictIDs utxo.TransactionIDs, issuingTime time.Time, excludedConflictIDs utxo.TransactionIDs) (referencesToAdd ParentMessageIDs, err error) {
- referencesToAdd = NewParentMessageIDs()
+func (r *ReferenceProvider) addedReferencesForConflicts(conflictIDs utxo.TransactionIDs, issuingTime time.Time, excludedConflictIDs utxo.TransactionIDs) (referencesToAdd ParentBlockIDs, err error) {
+ referencesToAdd = NewParentBlockIDs()
for it := conflictIDs.Iterator(); it.HasNext(); {
conflictID := it.Next()
// If we already expressed a dislike of the conflict (through another liked instead) we don't need to revisit this conflictID.
if excludedConflictIDs.Has(conflictID) {
- // fmt.Println(">>>> Skipping", conflictID, "because it is already excluded")
continue
}
- if adjust, referencedMsg, referenceErr := r.adjustOpinion(conflictID, issuingTime, excludedConflictIDs); referenceErr != nil {
+ if adjust, referencedBlk, referenceErr := r.adjustOpinion(conflictID, issuingTime, excludedConflictIDs); referenceErr != nil {
return nil, errors.Errorf("failed to create reference for %s: %w", conflictID, referenceErr)
} else if adjust {
- referencesToAdd.Add(ShallowLikeParentType, referencedMsg)
+ referencesToAdd.Add(ShallowLikeParentType, referencedBlk)
}
}
@@ -151,23 +150,23 @@ func (r *ReferenceProvider) addedReferencesForConflicts(conflictIDs utxo.Transac
}
// adjustOpinion returns the reference that is necessary to correct our opinion on the given conflict.
-func (r *ReferenceProvider) adjustOpinion(conflictID utxo.TransactionID, issuingTime time.Time, excludedConflictIDs utxo.TransactionIDs) (adjust bool, msgID MessageID, err error) {
+func (r *ReferenceProvider) adjustOpinion(conflictID utxo.TransactionID, issuingTime time.Time, excludedConflictIDs utxo.TransactionIDs) (adjust bool, blkID BlockID, err error) {
for w := walker.New[utxo.TransactionID](false).Push(conflictID); w.HasNext(); {
currentConflictID := w.Next()
if likedConflictID, dislikedConflictIDs := r.tangle.OTVConsensusManager.LikedConflictMember(currentConflictID); !likedConflictID.IsEmpty() {
// only triggers in first iteration
if likedConflictID == conflictID {
- return false, EmptyMessageID, nil
+ return false, EmptyBlockID, nil
}
- if msgID, err = r.firstValidAttachment(likedConflictID, issuingTime); err != nil {
+ if blkID, err = r.firstValidAttachment(likedConflictID, issuingTime); err != nil {
continue
}
- excludedConflictIDs.AddAll(r.tangle.Ledger.Utils.BranchIDsInFutureCone(dislikedConflictIDs))
+ excludedConflictIDs.AddAll(r.tangle.Ledger.Utils.ConflictIDsInFutureCone(dislikedConflictIDs))
- return true, msgID, nil
+ return true, blkID, nil
}
// only walk deeper if we don't like "something else"
@@ -176,22 +175,22 @@ func (r *ReferenceProvider) adjustOpinion(conflictID utxo.TransactionID, issuing
})
}
- return false, EmptyMessageID, errors.Newf("failed to create dislike for %s", conflictID)
+ return false, EmptyBlockID, errors.Newf("failed to create dislike for %s", conflictID)
}
// firstValidAttachment returns the first valid attachment of the given transaction.
-func (r *ReferenceProvider) firstValidAttachment(txID utxo.TransactionID, issuingTime time.Time) (msgID MessageID, err error) {
- attachmentTime, msgID, err := r.tangle.Utils.FirstAttachment(txID)
+func (r *ReferenceProvider) firstValidAttachment(txID utxo.TransactionID, issuingTime time.Time) (blkID BlockID, err error) {
+ attachmentTime, blkID, err := r.tangle.Utils.FirstAttachment(txID)
if err != nil {
- return EmptyMessageID, errors.Errorf("failed to find first attachment of Transaction with %s: %w", txID, err)
+ return EmptyBlockID, errors.Errorf("failed to find first attachment of Transaction with %s: %w", txID, err)
}
// TODO: we don't want to vote on anything that is in a committed epoch.
if !r.validTime(attachmentTime, issuingTime) {
- return EmptyMessageID, errors.Errorf("attachment of %s with %s is too far in the past", txID, msgID)
+ return EmptyBlockID, errors.Errorf("attachment of %s with %s is too far in the past", txID, blkID)
}
- return msgID, nil
+ return blkID, nil
}
func (r *ReferenceProvider) validTime(parentTime, issuingTime time.Time) bool {
@@ -199,36 +198,36 @@ func (r *ReferenceProvider) validTime(parentTime, issuingTime time.Time) bool {
return issuingTime.Sub(parentTime) < maxParentsTimeDifference
}
-func (r *ReferenceProvider) validTimeForStrongParent(msgID MessageID, issuingTime time.Time) (valid bool) {
- r.tangle.Storage.Message(msgID).Consume(func(msg *Message) {
- valid = r.validTime(msg.IssuingTime(), issuingTime)
+func (r *ReferenceProvider) validTimeForStrongParent(blkID BlockID, issuingTime time.Time) (valid bool) {
+ r.tangle.Storage.Block(blkID).Consume(func(blk *Block) {
+ valid = r.validTime(blk.IssuingTime(), issuingTime)
})
return valid
}
-// checkPayloadLiked checks if the payload of a Message is liked.
-func (r *ReferenceProvider) checkPayloadLiked(msgID MessageID) (err error) {
- conflictIDs, err := r.tangle.Booker.PayloadBranchIDs(msgID)
+// checkPayloadLiked checks if the payload of a Block is liked.
+func (r *ReferenceProvider) checkPayloadLiked(blkID BlockID) (err error) {
+ conflictIDs, err := r.tangle.Booker.PayloadConflictIDs(blkID)
if err != nil {
- return errors.Errorf("failed to determine payload conflictIDs of %s: %w", msgID, err)
+ return errors.Errorf("failed to determine payload conflictIDs of %s: %w", blkID, err)
}
- if !r.tangle.Utils.AllBranchesLiked(conflictIDs) {
- return errors.Errorf("payload of %s is not liked: %s", msgID, conflictIDs)
+ if !r.tangle.Utils.AllConflictsLiked(conflictIDs) {
+ return errors.Errorf("payload of %s is not liked: %s", blkID, conflictIDs)
}
return nil
}
// tryExtendReferences tries to extend the references with the given referencesToAdd.
-func (r *ReferenceProvider) tryExtendReferences(references ParentMessageIDs, referencesToAdd ParentMessageIDs) (extendedReferences ParentMessageIDs, success bool) {
+func (r *ReferenceProvider) tryExtendReferences(references ParentBlockIDs, referencesToAdd ParentBlockIDs) (extendedReferences ParentBlockIDs, success bool) {
if referencesToAdd.IsEmpty() {
return references, true
}
extendedReferences = references.Clone()
- for referenceType, referencedMessageIDs := range referencesToAdd {
- extendedReferences.AddAll(referenceType, referencedMessageIDs)
+ for referenceType, referencedBlockIDs := range referencesToAdd {
+ extendedReferences.AddAll(referenceType, referencedBlockIDs)
if len(extendedReferences[referenceType]) > MaxParentsCount {
return nil, false
diff --git a/packages/tangle/requester.go b/packages/tangle/requester.go
index 84b8070437..a7a82e17d9 100644
--- a/packages/tangle/requester.go
+++ b/packages/tangle/requester.go
@@ -11,32 +11,32 @@ import (
// region Requester ////////////////////////////////////////////////////////////////////////////////////////////////////
-// Requester takes care of requesting messages.
+// Requester takes care of requesting blocks.
type Requester struct {
tangle *Tangle
timedExecutor *timedexecutor.TimedExecutor
- scheduledRequests map[MessageID]*timedexecutor.ScheduledTask
+ scheduledRequests map[BlockID]*timedexecutor.ScheduledTask
options RequesterOptions
Events *RequesterEvents
scheduledRequestsMutex sync.RWMutex
}
-// NewRequester creates a new message requester.
+// NewRequester creates a new block requester.
func NewRequester(tangle *Tangle, optionalOptions ...RequesterOption) *Requester {
requester := &Requester{
tangle: tangle,
timedExecutor: timedexecutor.New(1),
- scheduledRequests: make(map[MessageID]*timedexecutor.ScheduledTask),
+ scheduledRequests: make(map[BlockID]*timedexecutor.ScheduledTask),
options: DefaultRequesterOptions.Apply(optionalOptions...),
Events: newRequesterEvents(),
}
- // add requests for all missing messages
+ // add requests for all missing blocks
requester.scheduledRequestsMutex.Lock()
defer requester.scheduledRequestsMutex.Unlock()
- for _, id := range tangle.Storage.MissingMessages() {
+ for _, id := range tangle.Storage.MissingBlocks() {
requester.scheduledRequests[id] = requester.timedExecutor.ExecuteAfter(requester.createReRequest(id, 0), requester.options.RetryInterval+time.Duration(crypto.Randomness.Float64()*float64(requester.options.RetryJitter)))
}
@@ -45,11 +45,11 @@ func NewRequester(tangle *Tangle, optionalOptions ...RequesterOption) *Requester
// Setup sets up the behavior of the component by making it attach to the relevant events of other components.
func (r *Requester) Setup() {
- r.tangle.Solidifier.Events.MessageMissing.Hook(event.NewClosure(func(event *MessageMissingEvent) {
- r.StartRequest(event.MessageID)
+ r.tangle.Solidifier.Events.BlockMissing.Hook(event.NewClosure(func(event *BlockMissingEvent) {
+ r.StartRequest(event.BlockID)
}))
- r.tangle.Storage.Events.MissingMessageStored.Hook(event.NewClosure(func(event *MissingMessageStoredEvent) {
- r.StopRequest(event.MessageID)
+ r.tangle.Storage.Events.MissingBlockStored.Hook(event.NewClosure(func(event *MissingBlockStoredEvent) {
+ r.StopRequest(event.BlockID)
}))
}
@@ -59,7 +59,7 @@ func (r *Requester) Shutdown() {
}
// StartRequest initiates a regular triggering of the StartRequest event until it has been stopped using StopRequest.
-func (r *Requester) StartRequest(id MessageID) {
+func (r *Requester) StartRequest(id BlockID) {
r.scheduledRequestsMutex.Lock()
// ignore already scheduled requests
@@ -76,8 +76,8 @@ func (r *Requester) StartRequest(id MessageID) {
r.Events.RequestIssued.Trigger(&RequestIssuedEvent{id})
}
-// StopRequest stops requests for the given message to further happen.
-func (r *Requester) StopRequest(id MessageID) {
+// StopRequest stops requests for the given block to further happen.
+func (r *Requester) StopRequest(id BlockID) {
r.scheduledRequestsMutex.Lock()
timer, ok := r.scheduledRequests[id]
@@ -93,7 +93,7 @@ func (r *Requester) StopRequest(id MessageID) {
r.Events.RequestStopped.Trigger(&RequestStoppedEvent{id})
}
-func (r *Requester) reRequest(id MessageID, count int) {
+func (r *Requester) reRequest(id BlockID, count int) {
r.Events.RequestIssued.Trigger(&RequestIssuedEvent{id})
// as we schedule a request at most once per id we do not need to make the trigger and the re-schedule atomic
@@ -110,7 +110,7 @@ func (r *Requester) reRequest(id MessageID, count int) {
delete(r.scheduledRequests, id)
r.Events.RequestFailed.Trigger(&RequestFailedEvent{id})
- r.tangle.Storage.DeleteMissingMessage(id)
+ r.tangle.Storage.DeleteMissingBlock(id)
return
}
@@ -120,15 +120,15 @@ func (r *Requester) reRequest(id MessageID, count int) {
}
}
-// RequestQueueSize returns the number of scheduled message requests.
+// RequestQueueSize returns the number of scheduled block requests.
func (r *Requester) RequestQueueSize() int {
r.scheduledRequestsMutex.RLock()
defer r.scheduledRequestsMutex.RUnlock()
return len(r.scheduledRequests)
}
-func (r *Requester) createReRequest(msgID MessageID, count int) func() {
- return func() { r.reRequest(msgID, count) }
+func (r *Requester) createReRequest(blkID BlockID, count int) func() {
+ return func() { r.reRequest(blkID, count) }
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -142,17 +142,17 @@ var DefaultRequesterOptions = &RequesterOptions{
MaxRequestThreshold: 500,
}
-// RequesterOptions holds options for a message requester.
+// RequesterOptions holds options for a block requester.
type RequesterOptions struct {
// RetryInterval represents an option which defines in which intervals the Requester will try to ask for missing
- // messages.
+ // blocks.
RetryInterval time.Duration
- // RetryJitter defines how much the RetryInterval should be randomized, so that the nodes don't always send messages
+ // RetryJitter defines how much the RetryInterval should be randomized, so that the nodes don't always send blocks
// at exactly the same interval.
RetryJitter time.Duration
- // MaxRequestThreshold represents an option which defines how often the Requester should try to request messages
+ // MaxRequestThreshold represents an option which defines how often the Requester should try to request blocks
// before canceling the request
MaxRequestThreshold int
}
@@ -184,7 +184,7 @@ func RetryJitter(retryJitter time.Duration) RequesterOption {
}
}
-// MaxRequestThreshold creates an option which defines how often the Requester should try to request messages before
+// MaxRequestThreshold creates an option which defines how often the Requester should try to request blocks before
// canceling the request.
func MaxRequestThreshold(maxRequestThreshold int) RequesterOption {
return func(args *RequesterOptions) {
diff --git a/packages/tangle/scenarios.go b/packages/tangle/scenarios.go
index a8557922ef..955afcc866 100644
--- a/packages/tangle/scenarios.go
+++ b/packages/tangle/scenarios.go
@@ -12,7 +12,7 @@ import (
)
// TestStep defines a test scenario step.
-type TestStep func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities)
+type TestStep func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities)
// NodeIdentities defines a set of node identities mapped through an alias.
type NodeIdentities map[string]*identity.Identity
@@ -25,7 +25,7 @@ type TestScenario struct {
stepIndex int
t *testing.T
nodes NodeIdentities
- testFramework *MessageTestFramework
+ TestFramework *BlockTestFramework
testEventMock *EventMock
}
@@ -56,20 +56,20 @@ func (s *TestScenario) Next(prePostStepTuple *PrePostStepTuple) {
step := s.Steps[s.stepIndex]
if prePostStepTuple != nil && prePostStepTuple.Pre != nil {
- prePostStepTuple.Pre(s.t, s.testFramework, s.testEventMock, s.nodes)
+ prePostStepTuple.Pre(s.t, s.TestFramework, s.testEventMock, s.nodes)
}
- step(s.t, s.testFramework, s.testEventMock, s.nodes)
+ step(s.t, s.TestFramework, s.testEventMock, s.nodes)
if prePostStepTuple != nil && prePostStepTuple.Post != nil {
- prePostStepTuple.Post(s.t, s.testFramework, s.testEventMock, s.nodes)
+ prePostStepTuple.Post(s.t, s.TestFramework, s.testEventMock, s.nodes)
}
s.stepIndex++
}
-// ProcessMessageScenario the approval weight and voter adjustments.
+// ProcessBlockScenario the approval weight and voter adjustments.
//nolint:gomnd
-func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
+func ProcessBlockScenario(t *testing.T, options ...Option) *TestScenario {
s := &TestScenario{t: t}
s.nodes = make(map[string]*identity.Identity)
for _, node := range []string{"A", "B", "C", "D", "E"} {
@@ -99,71 +99,71 @@ func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
s.Tangle.Booker.MarkersManager.Options.MaxPastMarkerDistance = 3
s.testEventMock = NewEventMock(t, s.Tangle.ApprovalWeightManager)
- s.testFramework = NewMessageTestFramework(s.Tangle, WithGenesisOutput("A", 500))
+ s.TestFramework = NewBlockTestFramework(s.Tangle, WithGenesisOutput("A", 500))
s.Steps = []TestStep{
- // ISSUE Message1
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
+ // ISSUE Block1
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.3)
- IssueAndValidateMessageApproval(t, "Message1", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block1", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
})
},
- // ISSUE Message2
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message2", WithStrongParents("Message1"), WithIssuer(nodes["B"].PublicKey()))
+ // ISSUE Block2
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block2", WithStrongParents("Block1"), WithIssuer(nodes["B"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.45)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.15)
- IssueAndValidateMessageApproval(t, "Message2", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block2", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.45,
markers.NewMarker(0, 2): 0.15,
})
},
- // ISSUE Message3
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message3", WithStrongParents("Message2"), WithIssuer(nodes["C"].PublicKey()))
+ // ISSUE Block3
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block3", WithStrongParents("Block2"), WithIssuer(nodes["C"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.70)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.40)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.25)
- IssueAndValidateMessageApproval(t, "Message3", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block3", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.70,
markers.NewMarker(0, 2): 0.40,
markers.NewMarker(0, 3): 0.25,
})
},
- // ISSUE Message4
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message4", WithStrongParents("Message3"), WithIssuer(nodes["D"].PublicKey()))
+ // ISSUE Block4
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block4", WithStrongParents("Block3"), WithIssuer(nodes["D"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.90)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.60)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.45)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.20)
- IssueAndValidateMessageApproval(t, "Message4", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block4", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.90,
markers.NewMarker(0, 2): 0.60,
markers.NewMarker(0, 3): 0.45,
markers.NewMarker(0, 4): 0.20,
})
},
- // ISSUE Message5
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message5", WithStrongParents("Message4"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A"), WithOutput("B", 500))
- testFramework.RegisterBranchID("Branch1", "Message5")
+ // ISSUE Block5
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block5", WithStrongParents("Block4"), WithIssuer(nodes["A"].PublicKey()), WithInputs("A"), WithOutput("B", 500))
+ testFramework.RegisterConflictID("Conflict1", "Block5")
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 0.90)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.75)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.50)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.30)
- IssueAndValidateMessageApproval(t, "Message5", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block5", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.90,
markers.NewMarker(0, 2): 0.90,
markers.NewMarker(0, 3): 0.75,
@@ -171,22 +171,22 @@ func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
markers.NewMarker(0, 5): 0.30,
})
},
- // ISSUE Message6
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message6", WithStrongParents("Message4"), WithIssuer(nodes["E"].PublicKey()), WithInputs("A"), WithOutput("C", 500))
- testFramework.RegisterBranchID("Branch2", "Message6")
+ // ISSUE Block6
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block6", WithStrongParents("Block4"), WithIssuer(nodes["E"].PublicKey()), WithInputs("A"), WithOutput("C", 500))
+ testFramework.RegisterConflictID("Conflict2", "Block6")
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 1.0)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 2), 1.0)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 0.85)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.60)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 0.30)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.10)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 0.30)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.10)
- IssueAndValidateMessageApproval(t, "Message6", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.3,
- "Branch2": 0.1,
+ IssueAndValidateBlockApproval(t, "Block6", testEventMock, testFramework, map[string]float64{
+ "Conflict1": 0.3,
+ "Conflict2": 0.1,
}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 1,
markers.NewMarker(0, 2): 1,
@@ -195,19 +195,19 @@ func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
markers.NewMarker(0, 5): 0.30,
})
},
- // ISSUE Message7
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message7", WithStrongParents("Message5"), WithIssuer(nodes["C"].PublicKey()), WithInputs("B"), WithOutput("E", 500))
+ // ISSUE Block7
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block7", WithStrongParents("Block5"), WithIssuer(nodes["C"].PublicKey()), WithInputs("B"), WithOutput("E", 500))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 0.85)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.55)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 6), 0.25)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 0.55)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 0.55)
- IssueAndValidateMessageApproval(t, "Message7", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.55,
- "Branch2": 0.1,
+ IssueAndValidateBlockApproval(t, "Block7", testEventMock, testFramework, map[string]float64{
+ "Conflict1": 0.55,
+ "Conflict2": 0.1,
}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 1,
markers.NewMarker(0, 2): 1,
@@ -217,16 +217,16 @@ func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
markers.NewMarker(0, 6): 0.25,
})
},
- // ISSUE Message7.1
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message7.1", WithStrongParents("Message7"), WithIssuer(nodes["A"].PublicKey()))
+ // ISSUE Block7.1
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block7.1", WithStrongParents("Block7"), WithIssuer(nodes["A"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 6), 0.55)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 7), 0.30)
- IssueAndValidateMessageApproval(t, "Message7.1", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.55,
- "Branch2": 0.1,
+ IssueAndValidateBlockApproval(t, "Block7.1", testEventMock, testFramework, map[string]float64{
+ "Conflict1": 0.55,
+ "Conflict2": 0.1,
}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 1,
markers.NewMarker(0, 2): 1,
@@ -237,15 +237,15 @@ func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
markers.NewMarker(0, 7): 0.30,
})
},
- // ISSUE Message8
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message8", WithStrongParents("Message6"), WithIssuer(nodes["D"].PublicKey()))
+ // ISSUE Block8
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block8", WithStrongParents("Block6"), WithIssuer(nodes["D"].PublicKey()))
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.3)
+ testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.3)
- IssueAndValidateMessageApproval(t, "Message8", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.55,
- "Branch2": 0.30,
+ IssueAndValidateBlockApproval(t, "Block8", testEventMock, testFramework, map[string]float64{
+ "Conflict1": 0.55,
+ "Conflict2": 0.30,
}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 1,
markers.NewMarker(0, 2): 1,
@@ -256,177 +256,178 @@ func ProcessMessageScenario(t *testing.T, options ...Option) *TestScenario {
markers.NewMarker(0, 7): 0.30,
})
},
- // ISSUE Message9
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message9", WithStrongParents("Message8"), WithIssuer(nodes["A"].PublicKey()))
-
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 5), 0.30)
-
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 0.25)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.60)
-
- IssueAndValidateMessageApproval(t, "Message9", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.25,
- "Branch2": 0.60,
- }, map[markers.Marker]float64{
- markers.NewMarker(0, 1): 1,
- markers.NewMarker(0, 2): 1,
- markers.NewMarker(0, 3): 0.85,
- markers.NewMarker(0, 4): 0.85,
- markers.NewMarker(0, 5): 0.55,
- markers.NewMarker(0, 6): 0.55,
- markers.NewMarker(0, 7): 0.30,
- markers.NewMarker(1, 5): 0.30,
- })
- },
- // ISSUE Message10
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message10", WithStrongParents("Message9"), WithIssuer(nodes["B"].PublicKey()))
-
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 1.0)
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 1.0)
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 5), 0.45)
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 6), 0.15)
-
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.75)
-
- IssueAndValidateMessageApproval(t, "Message10", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.25,
- "Branch2": 0.75,
- }, map[markers.Marker]float64{
- markers.NewMarker(0, 1): 1,
- markers.NewMarker(0, 2): 1,
- markers.NewMarker(0, 3): 1,
- markers.NewMarker(0, 4): 1,
- markers.NewMarker(0, 5): 0.55,
- markers.NewMarker(0, 6): 0.55,
- markers.NewMarker(0, 7): 0.30,
- markers.NewMarker(1, 5): 0.45,
- markers.NewMarker(1, 6): 0.15,
- })
- },
- // ISSUE Message11
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message11", WithStrongParents("Message5"), WithIssuer(nodes["A"].PublicKey()), WithInputs("B"), WithOutput("D", 500))
- testFramework.RegisterBranchID("Branch3", "Message7")
- testFramework.RegisterBranchID("Branch4", "Message11")
-
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 0.55)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.45)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch3"), 0.25)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch4"), 0.30)
-
- IssueAndValidateMessageApproval(t, "Message11", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.55,
- "Branch2": 0.45,
- "Branch3": 0.25,
- "Branch4": 0.30,
- }, map[markers.Marker]float64{
- markers.NewMarker(0, 1): 1,
- markers.NewMarker(0, 2): 1,
- markers.NewMarker(0, 3): 1,
- markers.NewMarker(0, 4): 1,
- markers.NewMarker(0, 5): 0.55,
- markers.NewMarker(0, 6): 0.55,
- markers.NewMarker(0, 7): 0.30,
- markers.NewMarker(1, 5): 0.45,
- markers.NewMarker(1, 6): 0.15,
- })
- },
- // ISSUE Message12
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message12", WithStrongParents("Message11"), WithIssuer(nodes["D"].PublicKey()))
-
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.75)
-
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 0.75)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.25)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch4"), 0.50)
-
- IssueAndValidateMessageApproval(t, "Message12", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.75,
- "Branch2": 0.25,
- "Branch3": 0.25,
- "Branch4": 0.50,
- }, map[markers.Marker]float64{
- markers.NewMarker(0, 1): 1,
- markers.NewMarker(0, 2): 1,
- markers.NewMarker(0, 3): 1,
- markers.NewMarker(0, 4): 1,
- markers.NewMarker(0, 5): 0.75,
- markers.NewMarker(0, 6): 0.55,
- markers.NewMarker(0, 7): 0.30,
- markers.NewMarker(1, 5): 0.45,
- markers.NewMarker(1, 6): 0.15,
- })
- },
- // ISSUE Message13
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message13", WithStrongParents("Message12"), WithIssuer(nodes["E"].PublicKey()))
-
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.85)
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(2, 6), 0.10)
-
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 0.85)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.15)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch4"), 0.60)
-
- IssueAndValidateMessageApproval(t, "Message13", testEventMock, testFramework, map[string]float64{
- "Branch1": 0.85,
- "Branch2": 0.15,
- "Branch3": 0.25,
- "Branch4": 0.60,
- }, map[markers.Marker]float64{
- markers.NewMarker(0, 1): 1,
- markers.NewMarker(0, 2): 1,
- markers.NewMarker(0, 3): 1,
- markers.NewMarker(0, 4): 1,
- markers.NewMarker(0, 5): 0.85,
- markers.NewMarker(0, 6): 0.55,
- markers.NewMarker(0, 7): 0.30,
- markers.NewMarker(1, 5): 0.45,
- markers.NewMarker(1, 6): 0.15,
- markers.NewMarker(2, 6): 0.10,
- })
- },
- // ISSUE Message14
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message14", WithStrongParents("Message13"), WithIssuer(nodes["B"].PublicKey()))
-
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 1.00)
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(2, 6), 0.25)
- testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(2, 7), 0.15)
-
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch1"), 1.0)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch2"), 0.0)
- testEventMock.Expect("BranchWeightChanged", testFramework.BranchID("Branch4"), 0.75)
-
- IssueAndValidateMessageApproval(t, "Message14", testEventMock, testFramework, map[string]float64{
- "Branch1": 1,
- "Branch2": 0,
- "Branch3": 0.25,
- "Branch4": 0.75,
- }, map[markers.Marker]float64{
- markers.NewMarker(0, 1): 1,
- markers.NewMarker(0, 2): 1,
- markers.NewMarker(0, 3): 1,
- markers.NewMarker(0, 4): 1,
- markers.NewMarker(0, 5): 1,
- markers.NewMarker(0, 6): 0.55,
- markers.NewMarker(0, 7): 0.30,
- markers.NewMarker(1, 5): 0.45,
- markers.NewMarker(1, 6): 0.15,
- markers.NewMarker(2, 6): 0.25,
- markers.NewMarker(2, 7): 0.15,
- })
- },
+ // TODO: this tests reorg, which is not yet supported
+ // ISSUE Block9
+ // func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ // testFramework.CreateBlock("Block9", WithStrongParents("Block8"), WithIssuer(nodes["A"].PublicKey()))
+ //
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 5), 0.30)
+ //
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 0.25)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.60)
+ //
+ // IssueAndValidateBlockApproval(t, "Block9", testEventMock, testFramework, map[string]float64{
+ // "Conflict1": 0.25,
+ // "Conflict2": 0.60,
+ // }, map[markers.Marker]float64{
+ // markers.NewMarker(0, 1): 1,
+ // markers.NewMarker(0, 2): 1,
+ // markers.NewMarker(0, 3): 0.85,
+ // markers.NewMarker(0, 4): 0.85,
+ // markers.NewMarker(0, 5): 0.55,
+ // markers.NewMarker(0, 6): 0.55,
+ // markers.NewMarker(0, 7): 0.30,
+ // markers.NewMarker(1, 5): 0.30,
+ // })
+ // },
+ // // ISSUE Block10
+ // func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ // testFramework.CreateBlock("Block10", WithStrongParents("Block9"), WithIssuer(nodes["B"].PublicKey()))
+ //
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 3), 1.0)
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 4), 1.0)
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 5), 0.45)
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 6), 0.15)
+ //
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.75)
+ //
+ // IssueAndValidateBlockApproval(t, "Block10", testEventMock, testFramework, map[string]float64{
+ // "Conflict1": 0.25,
+ // "Conflict2": 0.75,
+ // }, map[markers.Marker]float64{
+ // markers.NewMarker(0, 1): 1,
+ // markers.NewMarker(0, 2): 1,
+ // markers.NewMarker(0, 3): 1,
+ // markers.NewMarker(0, 4): 1,
+ // markers.NewMarker(0, 5): 0.55,
+ // markers.NewMarker(0, 6): 0.55,
+ // markers.NewMarker(0, 7): 0.30,
+ // markers.NewMarker(1, 5): 0.45,
+ // markers.NewMarker(1, 6): 0.15,
+ // })
+ // },
+ // // ISSUE Block11
+ // func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ // testFramework.CreateBlock("Block11", WithStrongParents("Block5"), WithIssuer(nodes["A"].PublicKey()), WithInputs("B"), WithOutput("D", 500))
+ // testFramework.RegisterConflictID("Conflict3", "Block7")
+ // testFramework.RegisterConflictID("Conflict4", "Block11")
+ //
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 0.55)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.45)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict3"), 0.25)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict4"), 0.30)
+ //
+ // IssueAndValidateBlockApproval(t, "Block11", testEventMock, testFramework, map[string]float64{
+ // "Conflict1": 0.55,
+ // "Conflict2": 0.45,
+ // "Conflict3": 0.25,
+ // "Conflict4": 0.30,
+ // }, map[markers.Marker]float64{
+ // markers.NewMarker(0, 1): 1,
+ // markers.NewMarker(0, 2): 1,
+ // markers.NewMarker(0, 3): 1,
+ // markers.NewMarker(0, 4): 1,
+ // markers.NewMarker(0, 5): 0.55,
+ // markers.NewMarker(0, 6): 0.55,
+ // markers.NewMarker(0, 7): 0.30,
+ // markers.NewMarker(1, 5): 0.45,
+ // markers.NewMarker(1, 6): 0.15,
+ // })
+ // },
+ // // ISSUE Block12
+ // func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ // testFramework.CreateBlock("Block12", WithStrongParents("Block11"), WithIssuer(nodes["D"].PublicKey()))
+ //
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.75)
+ //
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 0.75)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.25)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict4"), 0.50)
+ //
+ // IssueAndValidateBlockApproval(t, "Block12", testEventMock, testFramework, map[string]float64{
+ // "Conflict1": 0.75,
+ // "Conflict2": 0.25,
+ // "Conflict3": 0.25,
+ // "Conflict4": 0.50,
+ // }, map[markers.Marker]float64{
+ // markers.NewMarker(0, 1): 1,
+ // markers.NewMarker(0, 2): 1,
+ // markers.NewMarker(0, 3): 1,
+ // markers.NewMarker(0, 4): 1,
+ // markers.NewMarker(0, 5): 0.75,
+ // markers.NewMarker(0, 6): 0.55,
+ // markers.NewMarker(0, 7): 0.30,
+ // markers.NewMarker(1, 5): 0.45,
+ // markers.NewMarker(1, 6): 0.15,
+ // })
+ // },
+ // // ISSUE Block13
+ // func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ // testFramework.CreateBlock("Block13", WithStrongParents("Block12"), WithIssuer(nodes["E"].PublicKey()))
+ //
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 0.85)
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(2, 6), 0.10)
+ //
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 0.85)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.15)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict4"), 0.60)
+ //
+ // IssueAndValidateBlockApproval(t, "Block13", testEventMock, testFramework, map[string]float64{
+ // "Conflict1": 0.85,
+ // "Conflict2": 0.15,
+ // "Conflict3": 0.25,
+ // "Conflict4": 0.60,
+ // }, map[markers.Marker]float64{
+ // markers.NewMarker(0, 1): 1,
+ // markers.NewMarker(0, 2): 1,
+ // markers.NewMarker(0, 3): 1,
+ // markers.NewMarker(0, 4): 1,
+ // markers.NewMarker(0, 5): 0.85,
+ // markers.NewMarker(0, 6): 0.55,
+ // markers.NewMarker(0, 7): 0.30,
+ // markers.NewMarker(1, 5): 0.45,
+ // markers.NewMarker(1, 6): 0.15,
+ // markers.NewMarker(2, 6): 0.10,
+ // })
+ // },
+ // // ISSUE Block14
+ // func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ // testFramework.CreateBlock("Block14", WithStrongParents("Block13"), WithIssuer(nodes["B"].PublicKey()))
+ //
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 5), 1.00)
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(2, 6), 0.25)
+ // testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(2, 7), 0.15)
+ //
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict1"), 1.0)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict2"), 0.0)
+ // testEventMock.Expect("ConflictWeightChanged", testFramework.ConflictID("Conflict4"), 0.75)
+ //
+ // IssueAndValidateBlockApproval(t, "Block14", testEventMock, testFramework, map[string]float64{
+ // "Conflict1": 1,
+ // "Conflict2": 0,
+ // "Conflict3": 0.25,
+ // "Conflict4": 0.75,
+ // }, map[markers.Marker]float64{
+ // markers.NewMarker(0, 1): 1,
+ // markers.NewMarker(0, 2): 1,
+ // markers.NewMarker(0, 3): 1,
+ // markers.NewMarker(0, 4): 1,
+ // markers.NewMarker(0, 5): 1,
+ // markers.NewMarker(0, 6): 0.55,
+ // markers.NewMarker(0, 7): 0.30,
+ // markers.NewMarker(1, 5): 0.45,
+ // markers.NewMarker(1, 6): 0.15,
+ // markers.NewMarker(2, 6): 0.25,
+ // markers.NewMarker(2, 7): 0.15,
+ // })
+ // },
}
return s
}
-// ProcessMessageScenario2 creates a scenario useful to validate strong / weak propagation paths.
+// ProcessBlockScenario2 creates a scenario useful to validate strong / weak propagation paths.
//nolint:gomnd
-func ProcessMessageScenario2(t *testing.T, options ...Option) *TestScenario {
+func ProcessBlockScenario2(t *testing.T, options ...Option) *TestScenario {
s := &TestScenario{t: t}
s.nodes = make(map[string]*identity.Identity)
for _, node := range []string{"A", "B", "C", "D", "E"} {
@@ -455,58 +456,58 @@ func ProcessMessageScenario2(t *testing.T, options ...Option) *TestScenario {
s.Tangle.Setup()
s.testEventMock = NewEventMock(t, s.Tangle.ApprovalWeightManager)
- s.testFramework = NewMessageTestFramework(s.Tangle, WithGenesisOutput("A", 500))
+ s.TestFramework = NewBlockTestFramework(s.Tangle, WithGenesisOutput("A", 500))
s.Steps = []TestStep{
- // ISSUE Message0
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message0", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
+ // ISSUE Block0
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block0", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(0, 1), 0.30)
- IssueAndValidateMessageApproval(t, "Message0", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block0", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
})
},
- // ISSUE Message1
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
+ // ISSUE Block1
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block1", WithStrongParents("Genesis"), WithIssuer(nodes["A"].PublicKey()))
- IssueAndValidateMessageApproval(t, "Message1", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block1", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
})
},
- // ISSUE Message2
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message2", WithStrongParents("Message1"), WithIssuer(nodes["B"].PublicKey()))
+ // ISSUE Block2
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block2", WithStrongParents("Block1"), WithIssuer(nodes["B"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 1), 0.15)
- IssueAndValidateMessageApproval(t, "Message2", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block2", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
markers.NewMarker(1, 1): 0.15,
})
},
- // ISSUE Message3
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message3", WithStrongParents("Message2"), WithIssuer(nodes["B"].PublicKey()))
+ // ISSUE Block3
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block3", WithStrongParents("Block2"), WithIssuer(nodes["B"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 2), 0.15)
- IssueAndValidateMessageApproval(t, "Message3", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block3", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
markers.NewMarker(1, 1): 0.15,
markers.NewMarker(1, 2): 0.15,
})
},
- // ISSUE Message4
- func(t *testing.T, testFramework *MessageTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
- testFramework.CreateMessage("Message4", WithWeakParents("Message2"), WithStrongParents("Message3"), WithIssuer(nodes["D"].PublicKey()))
+ // ISSUE Block4
+ func(t *testing.T, testFramework *BlockTestFramework, testEventMock *EventMock, nodes NodeIdentities) {
+ testFramework.CreateBlock("Block4", WithWeakParents("Block2"), WithStrongParents("Block3"), WithIssuer(nodes["D"].PublicKey()))
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 1), 0.35)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 2), 0.35)
testEventMock.Expect("MarkerWeightChanged", markers.NewMarker(1, 3), 0.20)
- IssueAndValidateMessageApproval(t, "Message4", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
+ IssueAndValidateBlockApproval(t, "Block4", testEventMock, testFramework, map[string]float64{}, map[markers.Marker]float64{
markers.NewMarker(0, 1): 0.30,
markers.NewMarker(1, 1): 0.35,
markers.NewMarker(1, 2): 0.35,
@@ -517,24 +518,24 @@ func ProcessMessageScenario2(t *testing.T, options ...Option) *TestScenario {
return s
}
-// IssueAndValidateMessageApproval issues the msg by the given alias and assets the expected weights.
+// IssueAndValidateBlockApproval issues the blk by the given alias and assets the expected weights.
//nolint:gomnd
-func IssueAndValidateMessageApproval(t *testing.T, messageAlias string, eventMock *EventMock, testFramework *MessageTestFramework, expectedBranchWeights map[string]float64, expectedMarkerWeights map[markers.Marker]float64) {
- eventMock.Expect("MessageProcessed", testFramework.Message(messageAlias).ID())
+func IssueAndValidateBlockApproval(t *testing.T, blockAlias string, eventMock *EventMock, testFramework *BlockTestFramework, expectedConflictWeights map[string]float64, expectedMarkerWeights map[markers.Marker]float64) {
+ eventMock.Expect("BlockProcessed", testFramework.Block(blockAlias).ID())
- t.Logf("ISSUE:\tMessageID(%s)", messageAlias)
- testFramework.IssueMessages(messageAlias).WaitUntilAllTasksProcessed()
+ t.Logf("ISSUE:\tBlockID(%s)", blockAlias)
+ testFramework.IssueBlocks(blockAlias).WaitUntilAllTasksProcessed()
- for branchAlias, expectedWeight := range expectedBranchWeights {
- branchID := testFramework.BranchID(branchAlias)
- actualWeight := testFramework.tangle.ApprovalWeightManager.WeightOfBranch(branchID)
+ for conflictAlias, expectedWeight := range expectedConflictWeights {
+ conflictID := testFramework.ConflictID(conflictAlias)
+ actualWeight := testFramework.tangle.ApprovalWeightManager.WeightOfConflict(conflictID)
if expectedWeight != actualWeight {
- require.True(t, math.Abs(actualWeight-expectedWeight) < 0.001, "weight of %s (%0.2f) not equal to expected value %0.2f", branchID, actualWeight, expectedWeight)
+ require.True(t, math.Abs(actualWeight-expectedWeight) < 0.001, "weight of %s (%0.2f) not equal to expected value %0.2f", conflictID, actualWeight, expectedWeight)
}
}
for marker, expectedWeight := range expectedMarkerWeights {
- actualWeight := testFramework.tangle.ApprovalWeightManager.WeightOfMarker(marker, testFramework.Message(messageAlias).IssuingTime())
+ actualWeight := testFramework.tangle.ApprovalWeightManager.WeightOfMarker(marker, testFramework.Block(blockAlias).IssuingTime())
if expectedWeight != actualWeight {
require.True(t, math.Abs(actualWeight-expectedWeight) < 0.001, "weight of %s (%0.2f) not equal to expected value %0.2f", marker.String(), actualWeight, expectedWeight)
}
diff --git a/packages/tangle/scheduler.go b/packages/tangle/scheduler.go
index d35300507b..2e6d14e364 100644
--- a/packages/tangle/scheduler.go
+++ b/packages/tangle/scheduler.go
@@ -17,29 +17,29 @@ import (
)
const (
- // MinMana is the minimum amount of Mana needed to issue messages.
- // MaxMessageSize / MinMana is also the upper bound of iterations inside one schedule call, as such it should not be too small.
+ // MinMana is the minimum amount of Mana needed to issue blocks.
+ // MaxBlockSize / MinMana is also the upper bound of iterations inside one schedule call, as such it should not be too small.
MinMana float64 = 1.0
)
// MaxDeficit is the maximum cap for accumulated deficit, i.e. max bytes that can be scheduled without waiting.
-// It must be >= MaxMessageSize.
-var MaxDeficit = new(big.Rat).SetInt64(int64(MaxMessageSize))
+// It must be >= MaxBlockSize.
+var MaxDeficit = new(big.Rat).SetInt64(int64(MaxBlockSize))
-// ErrNotRunning is returned when a message is submitted when the scheduler has been stopped.
+// ErrNotRunning is returned when a block is submitted when the scheduler has been stopped.
var ErrNotRunning = errors.New("scheduler stopped")
// SchedulerParams defines the scheduler config parameters.
type SchedulerParams struct {
- MaxBufferSize int
- TotalSupply int
- Rate time.Duration
- TotalAccessManaRetrieveFunc func() float64
- AccessManaMapRetrieverFunc func() map[identity.ID]float64
- ConfirmedMessageScheduleThreshold time.Duration
+ MaxBufferSize int
+ TotalSupply int
+ Rate time.Duration
+ TotalAccessManaRetrieveFunc func() float64
+ AccessManaMapRetrieverFunc func() map[identity.ID]float64
+ ConfirmedBlockScheduleThreshold time.Duration
}
-// Scheduler is a Tangle component that takes care of scheduling the messages that shall be booked.
+// Scheduler is a Tangle component that takes care of scheduling the blocks that shall be booked.
type Scheduler struct {
Events *SchedulerEvents
@@ -53,7 +53,7 @@ type Scheduler struct {
deficitsMutex sync.RWMutex
deficits map[identity.ID]*big.Rat
rate *atomic.Duration
- confirmedMsgThreshold time.Duration
+ confirmedBlkThreshold time.Duration
shutdownSignal chan struct{}
shutdownOnce sync.Once
}
@@ -70,8 +70,8 @@ func NewScheduler(tangle *Tangle) *Scheduler {
// total supply of mana
totalSupply := tangle.Options.SchedulerParams.TotalSupply
- // threshold after which confirmed messages are not scheduled
- confirmedMessageScheduleThreshold := tangle.Options.SchedulerParams.ConfirmedMessageScheduleThreshold
+ // threshold after which confirmed blocks are not scheduled
+ confirmedBlockScheduleThreshold := tangle.Options.SchedulerParams.ConfirmedBlockScheduleThreshold
// maximum access mana-scaled inbox length
maxQueue := float64(maxBuffer) / float64(totalSupply)
@@ -89,7 +89,7 @@ func NewScheduler(tangle *Tangle) *Scheduler {
rate: atomic.NewDuration(tangle.Options.SchedulerParams.Rate),
ticker: time.NewTicker(tangle.Options.SchedulerParams.Rate),
buffer: schedulerutils.NewBufferQueue(maxBuffer, maxQueue),
- confirmedMsgThreshold: confirmedMessageScheduleThreshold,
+ confirmedBlkThreshold: confirmedBlockScheduleThreshold,
deficits: make(map[identity.ID]*big.Rat),
shutdownSignal: make(chan struct{}),
}
@@ -121,42 +121,43 @@ func (s *Scheduler) Shutdown() {
// Setup sets up the behavior of the component by making it attach to the relevant events of the other components.
func (s *Scheduler) Setup() {
- // pass booked messages to the scheduler
- s.tangle.ApprovalWeightManager.Events.MessageProcessed.Attach(event.NewClosure(func(event *MessageProcessedEvent) {
- if err := s.Submit(event.MessageID); err != nil {
+ // pass booked blocks to the scheduler
+ s.tangle.ApprovalWeightManager.Events.BlockProcessed.Attach(event.NewClosure(func(event *BlockProcessedEvent) {
+ if err := s.Submit(event.BlockID); err != nil {
if !errors.Is(err, schedulerutils.ErrInsufficientMana) {
s.Events.Error.Trigger(errors.Errorf("failed to submit to scheduler: %w", err))
}
}
- s.tryReady(event.MessageID)
+ s.tryReady(event.BlockID)
}))
- s.tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- s.updateApprovers(event.MessageID)
+ s.tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ s.updateChildren(event.BlockID)
}))
- onMessageConfirmed := func(message *Message) {
- messageID := message.ID()
+ onBlockConfirmed := func(block *Block) {
+ blockID := block.ID()
var scheduled bool
- s.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- scheduled = messageMetadata.Scheduled()
+ s.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ scheduled = blockMetadata.Scheduled()
})
if scheduled {
return
}
- s.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- if clock.Since(message.IssuingTime()) > s.confirmedMsgThreshold {
- err := s.Unsubmit(messageID)
+ s.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ if clock.Since(block.IssuingTime()) > s.confirmedBlkThreshold {
+ err := s.Unsubmit(blockID)
if err != nil {
- s.Events.Error.Trigger(errors.Errorf("failed to unsubmit confirmed message from scheduler: %w", err))
+ s.Events.Error.Trigger(errors.Errorf("failed to unsubmit confirmed block from scheduler: %w", err))
}
- s.Events.MessageSkipped.Trigger(&MessageSkippedEvent{messageID})
+ s.Events.BlockSkipped.Trigger(&BlockSkippedEvent{blockID})
}
})
- s.updateApprovers(messageID)
+ s.updateChildren(blockID)
}
- s.tangle.ConfirmationOracle.Events().MessageConfirmed.Attach(event.NewClosure(func(event *MessageConfirmedEvent) {
- onMessageConfirmed(event.Message)
+
+ s.tangle.ConfirmationOracle.Events().BlockAccepted.Attach(event.NewClosure(func(event *BlockAcceptedEvent) {
+ onBlockConfirmed(event.Block)
}))
s.Start()
@@ -215,18 +216,18 @@ func (s *Scheduler) BufferSize() int {
return s.buffer.Size()
}
-// ReadyMessagesCount returns the size buffer.
-func (s *Scheduler) ReadyMessagesCount() int {
+// ReadyBlocksCount returns the size buffer.
+func (s *Scheduler) ReadyBlocksCount() int {
s.bufferMutex.RLock()
defer s.bufferMutex.RUnlock()
- return s.buffer.ReadyMessagesCount()
+ return s.buffer.ReadyBlocksCount()
}
-// TotalMessagesCount returns the size buffer.
-func (s *Scheduler) TotalMessagesCount() int {
+// TotalBlocksCount returns the size buffer.
+func (s *Scheduler) TotalBlocksCount() int {
s.bufferMutex.RLock()
defer s.bufferMutex.RUnlock()
- return s.buffer.TotalMessagesCount()
+ return s.buffer.TotalBlocksCount()
}
// AccessManaCache returns the object which caches access mana values.
@@ -234,58 +235,58 @@ func (s *Scheduler) AccessManaCache() *schedulerutils.AccessManaCache {
return s.accessManaCache
}
-// Submit submits a message to be considered by the scheduler.
+// Submit submits a block to be considered by the scheduler.
// This transactions will be included in all the control metrics, but it will never be
-// scheduled until Ready(messageID) has been called.
-func (s *Scheduler) Submit(messageID MessageID) (err error) {
- if !s.tangle.Storage.Message(messageID).Consume(func(message *Message) {
+// scheduled until Ready(blockID) has been called.
+func (s *Scheduler) Submit(blockID BlockID) (err error) {
+ if !s.tangle.Storage.Block(blockID).Consume(func(block *Block) {
s.bufferMutex.Lock()
defer s.bufferMutex.Unlock()
- err = s.submit(message)
+ err = s.submit(block)
}) {
- err = errors.Errorf("failed to get message '%x' from storage", messageID)
+ err = errors.Errorf("failed to get block '%x' from storage", blockID)
}
return err
}
-// Unsubmit removes a message from the submitted messages.
-// If that message is already marked as ready, Unsubmit has no effect.
-func (s *Scheduler) Unsubmit(messageID MessageID) (err error) {
- if !s.tangle.Storage.Message(messageID).Consume(func(message *Message) {
+// Unsubmit removes a block from the submitted blocks.
+// If that block is already marked as ready, Unsubmit has no effect.
+func (s *Scheduler) Unsubmit(blockID BlockID) (err error) {
+ if !s.tangle.Storage.Block(blockID).Consume(func(block *Block) {
s.bufferMutex.Lock()
defer s.bufferMutex.Unlock()
- s.unsubmit(message)
+ s.unsubmit(block)
}) {
- err = errors.Errorf("failed to get message '%x' from storage", messageID)
+ err = errors.Errorf("failed to get block '%x' from storage", blockID)
}
return err
}
-// Ready marks a previously submitted message as ready to be scheduled.
+// Ready marks a previously submitted block as ready to be scheduled.
// If Ready is called without a previous Submit, it has no effect.
-func (s *Scheduler) Ready(messageID MessageID) (err error) {
- if !s.tangle.Storage.Message(messageID).Consume(func(message *Message) {
+func (s *Scheduler) Ready(blockID BlockID) (err error) {
+ if !s.tangle.Storage.Block(blockID).Consume(func(block *Block) {
s.bufferMutex.Lock()
defer s.bufferMutex.Unlock()
- s.ready(message)
+ s.ready(block)
}) {
- err = errors.Errorf("failed to get message '%x' from storage", messageID)
+ err = errors.Errorf("failed to get block '%x' from storage", blockID)
}
return err
}
-// SubmitAndReady submits the message to the scheduler and marks it ready right away.
-func (s *Scheduler) SubmitAndReady(message *Message) (err error) {
+// SubmitAndReady submits the block to the scheduler and marks it ready right away.
+func (s *Scheduler) SubmitAndReady(block *Block) (err error) {
s.bufferMutex.Lock()
defer s.bufferMutex.Unlock()
- if err = s.submit(message); err != nil {
+ if err = s.submit(block); err != nil {
return err
}
- s.ready(message)
+ s.ready(block)
return nil
}
@@ -295,8 +296,8 @@ func (s *Scheduler) GetManaFromCache(nodeID identity.ID) int64 {
return int64(math.Ceil(s.AccessManaCache().GetCachedMana(nodeID)))
}
-// Clear removes all submitted messages (ready or not) from the scheduler.
-// The MessageDiscarded event is triggered for each of these messages.
+// Clear removes all submitted blocks (ready or not) from the scheduler.
+// The BlockDiscarded event is triggered for each of these blocks.
func (s *Scheduler) Clear() {
s.bufferMutex.Lock()
defer s.bufferMutex.Unlock()
@@ -304,29 +305,29 @@ func (s *Scheduler) Clear() {
for q := s.buffer.Current(); q != nil; q = s.buffer.Next() {
s.buffer.RemoveNode(q.NodeID())
for _, id := range q.IDs() {
- messageID := NewMessageID(id)
- s.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- messageMetadata.SetDiscardedTime(clock.SyncedTime())
+ blockID := NewBlockID(id)
+ s.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ blockMetadata.SetDiscardedTime(clock.SyncedTime())
})
- s.Events.MessageDiscarded.Trigger(&MessageDiscardedEvent{messageID})
+ s.Events.BlockDiscarded.Trigger(&BlockDiscardedEvent{blockID})
}
}
}
-// isEligible returns true if the given messageID has either been scheduled or confirmed.
-func (s *Scheduler) isEligible(messageID MessageID) (eligible bool) {
- s.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- eligible = messageMetadata.Scheduled() ||
- s.tangle.ConfirmationOracle.IsMessageConfirmed(messageID)
+// isEligible returns true if the given blockID has either been scheduled or confirmed.
+func (s *Scheduler) isEligible(blockID BlockID) (eligible bool) {
+ s.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ eligible = blockMetadata.Scheduled() ||
+ s.tangle.ConfirmationOracle.IsBlockConfirmed(blockID)
})
return
}
-// isReady returns true if the given messageID's parents are eligible.
-func (s *Scheduler) isReady(messageID MessageID) (ready bool) {
+// isReady returns true if the given blockID's parents are eligible.
+func (s *Scheduler) isReady(blockID BlockID) (ready bool) {
ready = true
- s.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- message.ForEachParent(func(parent Parent) {
+ s.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ block.ForEachParent(func(parent Parent) {
if !s.isEligible(parent.ID) { // parents are not eligible
ready = false
return
@@ -337,61 +338,61 @@ func (s *Scheduler) isReady(messageID MessageID) (ready bool) {
return
}
-// tryReady tries to set the given message as ready.
-func (s *Scheduler) tryReady(messageID MessageID) {
- if s.isReady(messageID) {
- if err := s.Ready(messageID); err != nil {
- s.Events.Error.Trigger(errors.Errorf("failed to mark %s as ready: %w", messageID, err))
+// tryReady tries to set the given block as ready.
+func (s *Scheduler) tryReady(blockID BlockID) {
+ if s.isReady(blockID) {
+ if err := s.Ready(blockID); err != nil {
+ s.Events.Error.Trigger(errors.Errorf("failed to mark %s as ready: %w", blockID, err))
}
}
}
-// updateApprovers iterates over the direct approvers of the given messageID and
+// updateChildren iterates over the direct children of the given blockID and
// tries to mark them as ready.
-func (s *Scheduler) updateApprovers(messageID MessageID) {
- s.tangle.Storage.Approvers(messageID).Consume(func(approver *Approver) {
- s.tryReady(approver.ApproverMessageID())
+func (s *Scheduler) updateChildren(blockID BlockID) {
+ s.tangle.Storage.Children(blockID).Consume(func(child *Child) {
+ s.tryReady(child.ChildBlockID())
})
}
-func (s *Scheduler) submit(message *Message) error {
+func (s *Scheduler) submit(block *Block) error {
if s.stopped.IsSet() {
return ErrNotRunning
}
- s.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
+ s.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
// shortly before submitting we set the queued time
- messageMetadata.SetQueuedTime(clock.SyncedTime())
+ blockMetadata.SetQueuedTime(clock.SyncedTime())
})
s.AccessManaCache().RefreshCacheIfNecessary()
// when removing the zero mana node solution, check if nodes have MinMana here
- droppedMessageIDs, err := s.buffer.Submit(message, s.AccessManaCache().GetCachedMana)
+ droppedBlockIDs, err := s.buffer.Submit(block, s.AccessManaCache().GetCachedMana)
if err != nil {
- panic(errors.Errorf("failed to submit %s: %w", message.ID(), err))
+ panic(errors.Errorf("failed to submit %s: %w", block.ID(), err))
}
- for _, droppedMsgID := range droppedMessageIDs {
- s.tangle.Storage.MessageMetadata(NewMessageID(droppedMsgID)).Consume(func(messageMetadata *MessageMetadata) {
- messageMetadata.SetDiscardedTime(clock.SyncedTime())
+ for _, droppedBlkID := range droppedBlockIDs {
+ s.tangle.Storage.BlockMetadata(NewBlockID(droppedBlkID)).Consume(func(blockMetadata *BlockMetadata) {
+ blockMetadata.SetDiscardedTime(clock.SyncedTime())
})
- s.Events.MessageDiscarded.Trigger(&MessageDiscardedEvent{NewMessageID(droppedMsgID)})
+ s.Events.BlockDiscarded.Trigger(&BlockDiscardedEvent{NewBlockID(droppedBlkID)})
}
return nil
}
-func (s *Scheduler) unsubmit(message *Message) {
- s.buffer.Unsubmit(message)
+func (s *Scheduler) unsubmit(block *Block) {
+ s.buffer.Unsubmit(block)
}
-func (s *Scheduler) ready(message *Message) {
- s.buffer.Ready(message)
+func (s *Scheduler) ready(block *Block) {
+ s.buffer.Ready(block)
}
func (s *Scheduler) Quanta(nodeID identity.ID) *big.Rat {
return big.NewRat(s.GetManaFromCache(nodeID), int64(s.AccessManaCache().GetCachedTotalMana()))
}
-func (s *Scheduler) schedule() *Message {
+func (s *Scheduler) schedule() *Block {
s.bufferMutex.Lock()
defer s.bufferMutex.Unlock()
// Refresh mana cache only at the beginning of the method so that later it's fixed and cannot be
@@ -400,7 +401,7 @@ func (s *Scheduler) schedule() *Message {
s.updateActiveNodesList(s.AccessManaCache().RawAccessManaVector())
start := s.buffer.Current()
- // no messages submitted
+ // no blocks submitted
if start == nil {
return nil
}
@@ -408,28 +409,28 @@ func (s *Scheduler) schedule() *Message {
var schedulingNode *schedulerutils.NodeQueue
rounds := new(big.Rat).SetInt64(math.MaxInt64)
for q := start; ; {
- msg := q.Front()
- // a message can be scheduled, if it is ready
+ blk := q.Front()
+ // a block can be scheduled, if it is ready
// (its issuing time is not in the future and all of its parents are eligible).
- // while loop to skip all the confirmed messages
- for msg != nil && !clock.SyncedTime().Before(msg.IssuingTime()) {
- var msgID MessageID
- if _, err := msgID.Decode(msg.IDBytes()); err != nil {
- panic("MessageID could not be parsed!")
+ // while loop to skip all the confirmed blocks
+ for blk != nil && !clock.SyncedTime().Before(blk.IssuingTime()) {
+ var blkID BlockID
+ if _, err := blkID.Decode(blk.IDBytes()); err != nil {
+ panic("BlockID could not be parsed!")
}
- if s.tangle.ConfirmationOracle.IsMessageConfirmed(msgID) && clock.Since(msg.IssuingTime()) > s.confirmedMsgThreshold {
- // if a message is confirmed, and issued some time ago, don't schedule it and take the next one from the queue
- // do we want to mark those messages somehow for debugging?
- s.Events.MessageSkipped.Trigger(&MessageSkippedEvent{msgID})
+ if s.tangle.ConfirmationOracle.IsBlockConfirmed(blkID) && clock.Since(blk.IssuingTime()) > s.confirmedBlkThreshold {
+ // if a block is confirmed, and issued some time ago, don't schedule it and take the next one from the queue
+ // do we want to mark those blocks somehow for debugging?
+ s.Events.BlockSkipped.Trigger(&BlockSkippedEvent{blkID})
s.buffer.PopFront()
- msg = q.Front()
+ blk = q.Front()
} else {
- // compute how often the deficit needs to be incremented until the message can be scheduled
- remainingDeficit := maxRat(new(big.Rat).Sub(big.NewRat(int64(msg.Size()), 1), s.GetDeficit(q.NodeID())), new(big.Rat))
+ // compute how often the deficit needs to be incremented until the block can be scheduled
+ remainingDeficit := maxRat(new(big.Rat).Sub(big.NewRat(int64(blk.Size()), 1), s.GetDeficit(q.NodeID())), new(big.Rat))
// calculate how many rounds we need to skip to accumulate enough deficit.
// Use for loop to account for float imprecision.
r := new(big.Rat).Mul(remainingDeficit, new(big.Rat).Inv(s.Quanta(q.NodeID())))
- // find the first node that will be allowed to schedule a message
+ // find the first node that will be allowed to schedule a block
if r.Cmp(rounds) < 0 {
rounds = r
schedulingNode = q
@@ -444,7 +445,7 @@ func (s *Scheduler) schedule() *Message {
}
}
- // if there is no node with a ready message, we cannot schedule anything
+ // if there is no node with a ready block, we cannot schedule anything
if schedulingNode == nil {
return nil
}
@@ -466,12 +467,12 @@ func (s *Scheduler) schedule() *Message {
s.updateDeficit(q.NodeID(), s.Quanta(q.NodeID()))
}
- // remove the message from the buffer and adjust node's deficit
- msg := s.buffer.PopFront()
- nodeID := identity.NewID(msg.IssuerPublicKey())
- s.updateDeficit(nodeID, new(big.Rat).SetInt64(-int64(msg.Size())))
+ // remove the block from the buffer and adjust node's deficit
+ blk := s.buffer.PopFront()
+ nodeID := identity.NewID(blk.IssuerPublicKey())
+ s.updateDeficit(nodeID, new(big.Rat).SetInt64(-int64(blk.Size())))
- return msg.(*Message)
+ return blk.(*Block)
}
func (s *Scheduler) updateActiveNodesList(manaCache map[identity.ID]float64) {
@@ -481,8 +482,8 @@ func (s *Scheduler) updateActiveNodesList(manaCache map[identity.ID]float64) {
// use counter to avoid infinite loop in case the start element is removed
activeNodes := s.buffer.NumActiveNodes()
// remove nodes that don't have mana and have empty queue
- // this allows nodes with zero mana to issue messages, however those nodes will only accumulate their deficit
- // when there are messages in the node's queue
+ // this allows nodes with zero mana to issue blocks, however those nodes will only accumulate their deficit
+ // when there are blocks in the node's queue
for i := 0; i < activeNodes; i++ {
if nodeMana, exists := manaCache[currentNode.NodeID()]; (!exists || nodeMana < MinMana) && currentNode.Size() == 0 {
s.buffer.RemoveNode(currentNode.NodeID())
@@ -505,7 +506,7 @@ func (s *Scheduler) updateActiveNodesList(manaCache map[identity.ID]float64) {
}
}
-// mainLoop periodically triggers the scheduling of ready messages.
+// mainLoop periodically triggers the scheduling of ready blocks.
func (s *Scheduler) mainLoop() {
defer s.ticker.Stop()
@@ -514,11 +515,11 @@ loop:
select {
// every rate time units
case <-s.ticker.C:
- // TODO: pause the ticker, if there are no ready messages
- if msg := s.schedule(); msg != nil {
- s.tangle.Storage.MessageMetadata(msg.ID()).Consume(func(messageMetadata *MessageMetadata) {
- if messageMetadata.SetScheduled(true) {
- s.Events.MessageScheduled.Trigger(&MessageScheduledEvent{msg.ID()})
+ // TODO: pause the ticker, if there are no ready blocks
+ if blk := s.schedule(); blk != nil {
+ s.tangle.Storage.BlockMetadata(blk.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ if blockMetadata.SetScheduled(true) {
+ s.Events.BlockScheduled.Trigger(&BlockScheduledEvent{blk.ID()})
}
})
}
@@ -529,7 +530,7 @@ loop:
}
}
- // remove all unscheduled messages
+ // remove all unscheduled blocks
s.Clear()
}
diff --git a/packages/tangle/scheduler_test.go b/packages/tangle/scheduler_test.go
index d2c0e150d3..80b55c5950 100644
--- a/packages/tangle/scheduler_test.go
+++ b/packages/tangle/scheduler_test.go
@@ -14,6 +14,7 @@ import (
"github.com/stretchr/testify/assert"
"go.uber.org/atomic"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/tangle/payload"
"github.com/iotaledger/goshimmer/packages/tangle/schedulerutils"
)
@@ -37,12 +38,12 @@ func TestScheduler_Submit(t *testing.T) {
defer tangle.Shutdown()
tangle.Scheduler.Start()
- msg := newMessage(selfNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
- assert.NoError(t, tangle.Scheduler.Submit(msg.ID()))
+ blk := newBlock(selfNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
+ assert.NoError(t, tangle.Scheduler.Submit(blk.ID()))
time.Sleep(100 * time.Millisecond)
// unsubmit to allow the scheduler to shutdown
- assert.NoError(t, tangle.Scheduler.Unsubmit(msg.ID()))
+ assert.NoError(t, tangle.Scheduler.Unsubmit(blk.ID()))
}
func TestScheduler_updateActiveNodeList(t *testing.T) {
@@ -88,29 +89,29 @@ func TestScheduler_updateActiveNodeList(t *testing.T) {
}
func TestScheduler_Discarded(t *testing.T) {
- t.Skip("Skip test. Zero mana nodes are allowed to issue messages.")
+ t.Skip("Skip test. Zero mana nodes are allowed to issue blocks.")
tangle := NewTestTangle(Identity(selfLocalIdentity))
defer tangle.Shutdown()
noAManaNode := identity.GenerateIdentity()
- messageDiscarded := make(chan MessageID, 1)
- tangle.Scheduler.Events.MessageDiscarded.Hook(event.NewClosure(func(event *MessageDiscardedEvent) {
- messageDiscarded <- event.MessageID
+ blockDiscarded := make(chan BlockID, 1)
+ tangle.Scheduler.Events.BlockDiscarded.Hook(event.NewClosure(func(event *BlockDiscardedEvent) {
+ blockDiscarded <- event.BlockID
}))
tangle.Scheduler.Start()
- // this node has no mana so the message will be discarded
- msg := newMessage(noAManaNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
- err := tangle.Scheduler.Submit(msg.ID())
+ // this node has no mana so the block will be discarded
+ blk := newBlock(noAManaNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
+ err := tangle.Scheduler.Submit(blk.ID())
assert.Truef(t, errors.Is(err, schedulerutils.ErrInsufficientMana), "unexpected error: %v", err)
assert.Eventually(t, func() bool {
select {
- case id := <-messageDiscarded:
- return assert.Equal(t, msg.ID(), id)
+ case id := <-blockDiscarded:
+ return assert.Equal(t, blk.ID(), id)
default:
return false
}
@@ -121,24 +122,24 @@ func TestScheduler_DiscardedAtShutdown(t *testing.T) {
tangle := NewTestTangle(Identity(selfLocalIdentity))
defer tangle.Shutdown()
- messageDiscarded := make(chan MessageID, 1)
- tangle.Scheduler.Events.MessageDiscarded.Hook(event.NewClosure(func(event *MessageDiscardedEvent) {
- messageDiscarded <- event.MessageID
+ blockDiscarded := make(chan BlockID, 1)
+ tangle.Scheduler.Events.BlockDiscarded.Hook(event.NewClosure(func(event *BlockDiscardedEvent) {
+ blockDiscarded <- event.BlockID
}))
tangle.Scheduler.Start()
- msg := newMessage(selfNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
- assert.NoError(t, tangle.Scheduler.Submit(msg.ID()))
+ blk := newBlock(selfNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
+ assert.NoError(t, tangle.Scheduler.Submit(blk.ID()))
time.Sleep(100 * time.Millisecond)
tangle.Scheduler.Shutdown()
assert.Eventually(t, func() bool {
select {
- case id := <-messageDiscarded:
- return assert.Equal(t, msg.ID(), id)
+ case id := <-blockDiscarded:
+ return assert.Equal(t, blk.ID(), id)
default:
return false
}
@@ -158,37 +159,37 @@ func TestScheduler_Schedule(t *testing.T) {
tangle := NewTestTangle(Identity(selfLocalIdentity))
defer tangle.Shutdown()
- messageScheduled := make(chan MessageID, 1)
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- messageScheduled <- event.MessageID
+ blockScheduled := make(chan BlockID, 1)
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ blockScheduled <- event.BlockID
}))
tangle.Scheduler.Start()
- // create a new message from a different node
- msg := newMessage(peerNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
- assert.NoError(t, tangle.Scheduler.Submit(msg.ID()))
- assert.NoError(t, tangle.Scheduler.Ready(msg.ID()))
+ // create a new block from a different node
+ blk := newBlock(peerNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
+ assert.NoError(t, tangle.Scheduler.Submit(blk.ID()))
+ assert.NoError(t, tangle.Scheduler.Ready(blk.ID()))
assert.Eventually(t, func() bool {
select {
- case id := <-messageScheduled:
- return assert.Equal(t, msg.ID(), id)
+ case id := <-blockScheduled:
+ return assert.Equal(t, blk.ID(), id)
default:
return false
}
}, 1*time.Second, 10*time.Millisecond)
}
-// MockConfirmationOracleConfirmed mocks ConfirmationOracle marking all messages as confirmed.
+// MockConfirmationOracleConfirmed mocks ConfirmationOracle marking all blocks as confirmed.
type MockConfirmationOracleConfirmed struct {
ConfirmationOracle
events *ConfirmationEvents
}
-// IsMessageConfirmed mocks its interface function returning that all messages are confirmed.
-func (m *MockConfirmationOracleConfirmed) IsMessageConfirmed(_ MessageID) bool {
+// IsBlockConfirmed mocks its interface function returning that all blocks are confirmed.
+func (m *MockConfirmationOracleConfirmed) IsBlockConfirmed(_ BlockID) bool {
return true
}
@@ -203,73 +204,73 @@ func TestScheduler_SkipConfirmed(t *testing.T) {
ConfirmationOracle: tangle.ConfirmationOracle,
events: NewConfirmationEvents(),
}
- messageScheduled := make(chan MessageID, 1)
- messageSkipped := make(chan MessageID, 1)
+ blockScheduled := make(chan BlockID, 1)
+ blockSkipped := make(chan BlockID, 1)
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- messageScheduled <- event.MessageID
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ blockScheduled <- event.BlockID
}))
- tangle.Scheduler.Events.MessageSkipped.Hook(event.NewClosure(func(event *MessageSkippedEvent) {
- messageSkipped <- event.MessageID
+ tangle.Scheduler.Events.BlockSkipped.Hook(event.NewClosure(func(event *BlockSkippedEvent) {
+ blockSkipped <- event.BlockID
}))
tangle.Scheduler.Setup()
- // create a new message from a different node and mark it as ready and confirmed, but younger than 1 minute
- msgReadyConfirmedNew := newMessage(peerNode.PublicKey())
- tangle.Storage.StoreMessage(msgReadyConfirmedNew)
- assert.NoError(t, tangle.Scheduler.Submit(msgReadyConfirmedNew.ID()))
- assert.NoError(t, tangle.Scheduler.Ready(msgReadyConfirmedNew.ID()))
+ // create a new block from a different node and mark it as ready and confirmed, but younger than 1 minute
+ blkReadyConfirmedNew := newBlock(peerNode.PublicKey())
+ tangle.Storage.StoreBlock(blkReadyConfirmedNew)
+ assert.NoError(t, tangle.Scheduler.Submit(blkReadyConfirmedNew.ID()))
+ assert.NoError(t, tangle.Scheduler.Ready(blkReadyConfirmedNew.ID()))
assert.Eventually(t, func() bool {
select {
- case id := <-messageScheduled:
- return assert.Equal(t, msgReadyConfirmedNew.ID(), id)
+ case id := <-blockScheduled:
+ return assert.Equal(t, blkReadyConfirmedNew.ID(), id)
default:
return false
}
}, 1*time.Second, 10*time.Millisecond)
- // create a new message from a different node and mark it as unready and confirmed, but younger than 1 minute
- msgUnreadyConfirmedNew := newMessage(peerNode.PublicKey())
- tangle.Storage.StoreMessage(msgUnreadyConfirmedNew)
- assert.NoError(t, tangle.Scheduler.Submit(msgUnreadyConfirmedNew.ID()))
- tangle.ConfirmationOracle.Events().MessageConfirmed.Trigger(&MessageConfirmedEvent{msgUnreadyConfirmedNew})
- // make sure that the message was not unsubmitted
- assert.Equal(t, NewMessageID(tangle.Scheduler.buffer.NodeQueue(peerNode.ID()).IDs()[0]), msgUnreadyConfirmedNew.ID())
- assert.NoError(t, tangle.Scheduler.Ready(msgUnreadyConfirmedNew.ID()))
+ // create a new block from a different node and mark it as unready and confirmed, but younger than 1 minute
+ blkUnreadyConfirmedNew := newBlock(peerNode.PublicKey())
+ tangle.Storage.StoreBlock(blkUnreadyConfirmedNew)
+ assert.NoError(t, tangle.Scheduler.Submit(blkUnreadyConfirmedNew.ID()))
+ tangle.ConfirmationOracle.Events().BlockAccepted.Trigger(&BlockAcceptedEvent{blkUnreadyConfirmedNew})
+ // make sure that the block was not unsubmitted
+ assert.Equal(t, NewBlockID(tangle.Scheduler.buffer.NodeQueue(peerNode.ID()).IDs()[0]), blkUnreadyConfirmedNew.ID())
+ assert.NoError(t, tangle.Scheduler.Ready(blkUnreadyConfirmedNew.ID()))
assert.Eventually(t, func() bool {
select {
- case id := <-messageScheduled:
- return assert.Equal(t, msgUnreadyConfirmedNew.ID(), id)
+ case id := <-blockScheduled:
+ return assert.Equal(t, blkUnreadyConfirmedNew.ID(), id)
default:
return false
}
}, 1*time.Second, 10*time.Millisecond)
- // create a new message from a different node and mark it as ready and confirmed, but older than 1 minute
- msgReadyConfirmedOld := newMessageWithTimestamp(peerNode.PublicKey(), time.Now().Add(-2*time.Minute))
- tangle.Storage.StoreMessage(msgReadyConfirmedOld)
- assert.NoError(t, tangle.Scheduler.Submit(msgReadyConfirmedOld.ID()))
- assert.NoError(t, tangle.Scheduler.Ready(msgReadyConfirmedOld.ID()))
+ // create a new block from a different node and mark it as ready and confirmed, but older than 1 minute
+ blkReadyConfirmedOld := newBlockWithTimestamp(peerNode.PublicKey(), time.Now().Add(-2*time.Minute))
+ tangle.Storage.StoreBlock(blkReadyConfirmedOld)
+ assert.NoError(t, tangle.Scheduler.Submit(blkReadyConfirmedOld.ID()))
+ assert.NoError(t, tangle.Scheduler.Ready(blkReadyConfirmedOld.ID()))
assert.Eventually(t, func() bool {
select {
- case id := <-messageSkipped:
- return assert.Equal(t, msgReadyConfirmedOld.ID(), id)
+ case id := <-blockSkipped:
+ return assert.Equal(t, blkReadyConfirmedOld.ID(), id)
default:
return false
}
}, 1*time.Second, 10*time.Millisecond)
- // create a new message from a different node and mark it as unready and confirmed, but older than 1 minute
- msgUnreadyConfirmedOld := newMessageWithTimestamp(peerNode.PublicKey(), time.Now().Add(-2*time.Minute))
- tangle.Storage.StoreMessage(msgUnreadyConfirmedOld)
- assert.NoError(t, tangle.Scheduler.Submit(msgUnreadyConfirmedOld.ID()))
- tangle.ConfirmationOracle.Events().MessageConfirmed.Trigger(&MessageConfirmedEvent{msgUnreadyConfirmedOld})
+ // create a new block from a different node and mark it as unready and confirmed, but older than 1 minute
+ blkUnreadyConfirmedOld := newBlockWithTimestamp(peerNode.PublicKey(), time.Now().Add(-2*time.Minute))
+ tangle.Storage.StoreBlock(blkUnreadyConfirmedOld)
+ assert.NoError(t, tangle.Scheduler.Submit(blkUnreadyConfirmedOld.ID()))
+ tangle.ConfirmationOracle.Events().BlockAccepted.Trigger(&BlockAcceptedEvent{blkUnreadyConfirmedOld})
assert.Eventually(t, func() bool {
select {
- case id := <-messageSkipped:
- return assert.Equal(t, msgUnreadyConfirmedOld.ID(), id)
+ case id := <-blockSkipped:
+ return assert.Equal(t, blkUnreadyConfirmedOld.ID(), id)
default:
return false
}
@@ -281,7 +282,7 @@ func TestScheduler_SetRate(t *testing.T) {
defer tangle.Shutdown()
var scheduled atomic.Bool
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(_ *MessageScheduledEvent) {
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(_ *BlockScheduledEvent) {
scheduled.Store(true)
}))
@@ -292,17 +293,17 @@ func TestScheduler_SetRate(t *testing.T) {
// assure that any potential ticks issued before the rate change have been processed
time.Sleep(100 * time.Millisecond)
- // submit a new message to the scheduler
- msg := newMessage(peerNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
- assert.NoError(t, tangle.Scheduler.Submit(msg.ID()))
- assert.NoError(t, tangle.Scheduler.Ready(msg.ID()))
+ // submit a new block to the scheduler
+ blk := newBlock(peerNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
+ assert.NoError(t, tangle.Scheduler.Submit(blk.ID()))
+ assert.NoError(t, tangle.Scheduler.Ready(blk.ID()))
- // the message should not be scheduled as the rate is too low
+ // the block should not be scheduled as the rate is too low
time.Sleep(100 * time.Millisecond)
assert.False(t, scheduled.Load())
- // after reducing the rate again, the message should eventually be scheduled
+ // after reducing the rate again, the block should eventually be scheduled
tangle.Scheduler.SetRate(10 * time.Millisecond)
assert.Eventually(t, scheduled.Load, 1*time.Second, 10*time.Millisecond)
}
@@ -311,27 +312,27 @@ func TestScheduler_Time(t *testing.T) {
tangle := NewTestTangle(Identity(selfLocalIdentity))
defer tangle.Shutdown()
- messageScheduled := make(chan MessageID, 1)
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- messageScheduled <- event.MessageID
+ blockScheduled := make(chan BlockID, 1)
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ blockScheduled <- event.BlockID
}))
tangle.Scheduler.Start()
- future := newMessage(peerNode.PublicKey())
+ future := newBlock(peerNode.PublicKey())
future.M.IssuingTime = time.Now().Add(time.Second)
- tangle.Storage.StoreMessage(future)
+ tangle.Storage.StoreBlock(future)
assert.NoError(t, tangle.Scheduler.Submit(future.ID()))
- now := newMessage(peerNode.PublicKey())
- tangle.Storage.StoreMessage(now)
+ now := newBlock(peerNode.PublicKey())
+ tangle.Storage.StoreBlock(now)
assert.NoError(t, tangle.Scheduler.Submit(now.ID()))
assert.NoError(t, tangle.Scheduler.Ready(future.ID()))
assert.NoError(t, tangle.Scheduler.Ready(now.ID()))
done := make(chan struct{})
- scheduledIDs := NewMessageIDs()
+ scheduledIDs := NewBlockIDs()
go func() {
defer close(done)
timer := time.NewTimer(time.Until(future.IssuingTime()) + 100*time.Millisecond)
@@ -339,9 +340,9 @@ func TestScheduler_Time(t *testing.T) {
select {
case <-timer.C:
return
- case id := <-messageScheduled:
- tangle.Storage.Message(id).Consume(func(msg *Message) {
- assert.Truef(t, time.Now().After(msg.IssuingTime()), "scheduled too early: %s", time.Until(msg.IssuingTime()))
+ case id := <-blockScheduled:
+ tangle.Storage.Block(id).Consume(func(blk *Block) {
+ assert.Truef(t, time.Now().After(blk.IssuingTime()), "scheduled too early: %s", time.Until(blk.IssuingTime()))
scheduledIDs.Add(id)
})
}
@@ -349,7 +350,7 @@ func TestScheduler_Time(t *testing.T) {
}()
<-done
- assert.Equal(t, NewMessageIDs(now.ID(), future.ID()), scheduledIDs)
+ assert.Equal(t, NewBlockIDs(now.ID(), future.ID()), scheduledIDs)
}
func TestScheduler_Issue(t *testing.T) {
@@ -362,28 +363,28 @@ func TestScheduler_Issue(t *testing.T) {
tangle.Storage.Setup()
tangle.Solidifier.Setup()
tangle.Scheduler.Setup()
- tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- assert.NoError(t, tangle.Scheduler.SubmitAndReady(event.Message))
+ tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ assert.NoError(t, tangle.Scheduler.SubmitAndReady(event.Block))
}))
tangle.Scheduler.Start()
- const numMessages = 5
- messageScheduled := make(chan MessageID, numMessages)
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- messageScheduled <- event.MessageID
+ const numBlocks = 5
+ blockScheduled := make(chan BlockID, numBlocks)
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ blockScheduled <- event.BlockID
}))
- ids := NewMessageIDs()
- for i := 0; i < numMessages; i++ {
- msg := newMessage(selfNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
- ids.Add(msg.ID())
+ ids := NewBlockIDs()
+ for i := 0; i < numBlocks; i++ {
+ blk := newBlock(selfNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
+ ids.Add(blk.ID())
}
- scheduledIDs := NewMessageIDs()
+ scheduledIDs := NewBlockIDs()
assert.Eventually(t, func() bool {
select {
- case id := <-messageScheduled:
+ case id := <-blockScheduled:
scheduledIDs.Add(id)
return len(scheduledIDs) == len(ids)
default:
@@ -405,48 +406,48 @@ func TestSchedulerFlow(t *testing.T) {
tangle.Storage.Setup()
tangle.Solidifier.Setup()
tangle.Scheduler.Setup()
- tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- assert.NoError(t, tangle.Scheduler.SubmitAndReady(event.Message))
+ tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ assert.NoError(t, tangle.Scheduler.SubmitAndReady(event.Block))
}))
tangle.Scheduler.Start()
// testing desired scheduled order: A - B - D - C (B - A - D - C is equivalent)
- messages := make(map[string]*Message)
- messages["A"] = newMessage(selfNode.PublicKey())
- messages["B"] = newMessage(peerNode.PublicKey())
+ blocks := make(map[string]*Block)
+ blocks["A"] = newBlock(selfNode.PublicKey())
+ blocks["B"] = newBlock(peerNode.PublicKey())
// set C to have a timestamp in the future
- msgC := newMessage(selfNode.PublicKey())
+ blkC := newBlock(selfNode.PublicKey())
- msgC.M.Parents.AddAll(StrongParentType, NewMessageIDs(messages["A"].ID(), messages["B"].ID()))
+ blkC.M.Parents.AddAll(StrongParentType, NewBlockIDs(blocks["A"].ID(), blocks["B"].ID()))
- msgC.M.IssuingTime = time.Now().Add(5 * time.Second)
- messages["C"] = msgC
+ blkC.M.IssuingTime = time.Now().Add(5 * time.Second)
+ blocks["C"] = blkC
- msgD := newMessage(peerNode.PublicKey())
- msgD.M.Parents.AddAll(StrongParentType, NewMessageIDs(messages["A"].ID(), messages["B"].ID()))
- messages["D"] = msgD
+ blkD := newBlock(peerNode.PublicKey())
+ blkD.M.Parents.AddAll(StrongParentType, NewBlockIDs(blocks["A"].ID(), blocks["B"].ID()))
+ blocks["D"] = blkD
- msgE := newMessage(selfNode.PublicKey())
- msgE.M.Parents.AddAll(StrongParentType, NewMessageIDs(messages["A"].ID(), messages["B"].ID()))
- msgE.M.IssuingTime = time.Now().Add(3 * time.Second)
- messages["E"] = msgE
+ blkE := newBlock(selfNode.PublicKey())
+ blkE.M.Parents.AddAll(StrongParentType, NewBlockIDs(blocks["A"].ID(), blocks["B"].ID()))
+ blkE.M.IssuingTime = time.Now().Add(3 * time.Second)
+ blocks["E"] = blkE
- messageScheduled := make(chan MessageID, len(messages))
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- messageScheduled <- event.MessageID
+ blockScheduled := make(chan BlockID, len(blocks))
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ blockScheduled <- event.BlockID
}))
- for _, message := range messages {
- tangle.Storage.StoreMessage(message)
+ for _, block := range blocks {
+ tangle.Storage.StoreBlock(block)
}
- var scheduledIDs []MessageID
+ var scheduledIDs []BlockID
assert.Eventually(t, func() bool {
select {
- case id := <-messageScheduled:
+ case id := <-blockScheduled:
scheduledIDs = append(scheduledIDs, id)
- return len(scheduledIDs) == len(messages)
+ return len(scheduledIDs) == len(blocks)
default:
return false
}
@@ -455,7 +456,7 @@ func TestSchedulerFlow(t *testing.T) {
func TestSchedulerParallelSubmit(t *testing.T) {
const (
- totalMsgCount = 200
+ totalBlkCount = 200
tangleWidth = 250
networkDelay = 5 * time.Millisecond
)
@@ -473,58 +474,58 @@ func TestSchedulerParallelSubmit(t *testing.T) {
tangle.Storage.Setup()
tangle.Solidifier.Setup()
tangle.Scheduler.Setup()
- tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- assert.NoError(t, tangle.Scheduler.SubmitAndReady(event.Message))
+ tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ assert.NoError(t, tangle.Scheduler.SubmitAndReady(event.Block))
}))
tangle.Scheduler.Start()
- // generate the messages we want to solidify
- messages := make(map[MessageID]*Message, totalMsgCount)
- for i := 0; i < totalMsgCount/2; i++ {
- msg := newMessage(selfNode.PublicKey())
- messages[msg.ID()] = msg
+ // generate the blocks we want to solidify
+ blocks := make(map[BlockID]*Block, totalBlkCount)
+ for i := 0; i < totalBlkCount/2; i++ {
+ blk := newBlock(selfNode.PublicKey())
+ blocks[blk.ID()] = blk
}
- for i := 0; i < totalMsgCount/2; i++ {
- msg := newMessage(peerNode.PublicKey())
- messages[msg.ID()] = msg
+ for i := 0; i < totalBlkCount/2; i++ {
+ blk := newBlock(peerNode.PublicKey())
+ blocks[blk.ID()] = blk
}
- tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- t.Logf(event.Message.ID().Base58(), " solid")
+ tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ t.Logf(event.Block.ID().Base58(), " solid")
}))
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
n := totalScheduled.Add(1)
- t.Logf("scheduled messages %d/%d", n, totalMsgCount)
+ t.Logf("scheduled blocks %d/%d", n, totalBlkCount)
}))
// issue tips to start solidification
t.Run("ParallelSubmit", func(t *testing.T) {
- for _, m := range messages {
+ for _, m := range blocks {
t.Run(m.ID().Base58(), func(t *testing.T) {
m := m
t.Parallel()
- t.Logf("issue message: %s", m.ID().Base58())
- tangle.Storage.StoreMessage(m)
+ t.Logf("issue block: %s", m.ID().Base58())
+ tangle.Storage.StoreBlock(m)
})
}
})
- // wait for all messages to have a formed opinion
- assert.Eventually(t, func() bool { return totalScheduled.Load() == totalMsgCount }, 5*time.Minute, 100*time.Millisecond)
+ // wait for all blocks to have a formed opinion
+ assert.Eventually(t, func() bool { return totalScheduled.Load() == totalBlkCount }, 5*time.Minute, 100*time.Millisecond)
}
func BenchmarkScheduler(b *testing.B) {
tangle := NewTestTangle(Identity(selfLocalIdentity))
defer tangle.Shutdown()
- msg := newMessage(selfNode.PublicKey())
- tangle.Storage.StoreMessage(msg)
+ blk := newBlock(selfNode.PublicKey())
+ tangle.Storage.StoreBlock(blk)
b.ResetTimer()
for i := 0; i < b.N; i++ {
- if err := tangle.Scheduler.SubmitAndReady(msg); err != nil {
+ if err := tangle.Scheduler.SubmitAndReady(blk); err != nil {
b.Fatal(err)
}
tangle.Scheduler.schedule()
@@ -532,33 +533,37 @@ func BenchmarkScheduler(b *testing.B) {
b.StopTimer()
}
-var timeOffset = 0 * time.Nanosecond
-var timeOffsetMutex = sync.Mutex{}
+var (
+ timeOffset = 0 * time.Nanosecond
+ timeOffsetMutex = sync.Mutex{}
+)
-func newMessage(issuerPublicKey ed25519.PublicKey) *Message {
+func newBlock(issuerPublicKey ed25519.PublicKey) *Block {
timeOffsetMutex.Lock()
timeOffset++
- message := NewMessage(
- emptyLikeReferencesFromStrongParents(NewMessageIDs(EmptyMessageID)),
+ block := NewBlock(
+ emptyLikeReferencesFromStrongParents(NewBlockIDs(EmptyBlockID)),
time.Now().Add(timeOffset),
issuerPublicKey,
0,
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
+ 0,
+ epoch.NewECRecord(0),
)
timeOffsetMutex.Unlock()
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
-func newMessageWithTimestamp(issuerPublicKey ed25519.PublicKey, timestamp time.Time) *Message {
- message := NewMessage(
- ParentMessageIDs{
+func newBlockWithTimestamp(issuerPublicKey ed25519.PublicKey, timestamp time.Time) *Block {
+ block := NewBlock(
+ ParentBlockIDs{
StrongParentType: {
- EmptyMessageID: types.Void,
+ EmptyBlockID: types.Void,
},
},
timestamp,
@@ -567,11 +572,13 @@ func newMessageWithTimestamp(issuerPublicKey ed25519.PublicKey, timestamp time.T
payload.NewGenericDataPayload([]byte("")),
0,
ed25519.Signature{},
+ 0,
+ epoch.NewECRecord(0),
)
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/packages/tangle/schedulerutils/bufferqueue.go b/packages/tangle/schedulerutils/bufferqueue.go
index 8602f5efb7..d9c8d1a7cd 100644
--- a/packages/tangle/schedulerutils/bufferqueue.go
+++ b/packages/tangle/schedulerutils/bufferqueue.go
@@ -9,7 +9,7 @@ import (
)
// ErrInsufficientMana is returned when the mana is insufficient.
-var ErrInsufficientMana = errors.New("insufficient node's mana to schedule the message")
+var ErrInsufficientMana = errors.New("insufficient node's mana to schedule the block")
// region BufferQueue /////////////////////////////////////////////////////////////////////////////////////////////
@@ -38,12 +38,12 @@ func (b *BufferQueue) NumActiveNodes() int {
return len(b.activeNode)
}
-// MaxSize returns the max size (in bytes) of all messages in b.
+// MaxSize returns the max size (in bytes) of all blocks in b.
func (b *BufferQueue) MaxSize() int {
return b.maxBuffer
}
-// Size returns the total size (in bytes) of all messages in b.
+// Size returns the total size (in bytes) of all blocks in b.
func (b *BufferQueue) Size() int {
return b.size
}
@@ -57,10 +57,10 @@ func (b *BufferQueue) NodeQueue(nodeID identity.ID) *NodeQueue {
return element.Value.(*NodeQueue)
}
-// Submit submits a message. Return messages dropped from the scheduler to make room for the submitted message.
-// The submitted message can also be returned as dropped if the issuing node does not have enough access mana.
-func (b *BufferQueue) Submit(msg Element, accessManaRetriever func(identity.ID) float64) (elements []ElementID, err error) {
- nodeID := identity.NewID(msg.IssuerPublicKey())
+// Submit submits a block. Return blocks dropped from the scheduler to make room for the submitted block.
+// The submitted block can also be returned as dropped if the issuing node does not have enough access mana.
+func (b *BufferQueue) Submit(blk Element, accessManaRetriever func(identity.ID) float64) (elements []ElementID, err error) {
+ nodeID := identity.NewID(blk.IssuerPublicKey())
element, nodeActive := b.activeNode[nodeID]
var nodeQueue *NodeQueue
if nodeActive {
@@ -69,9 +69,9 @@ func (b *BufferQueue) Submit(msg Element, accessManaRetriever func(identity.ID)
nodeQueue = NewNodeQueue(nodeID)
}
- // first we submit the message, and if it turns out that the node doesn't have enough bandwidth to submit, it will be removed by dropHead
- if !nodeQueue.Submit(msg) {
- return nil, errors.Errorf("message already submitted")
+ // first we submit the block, and if it turns out that the node doesn't have enough bandwidth to submit, it will be removed by dropHead
+ if !nodeQueue.Submit(blk) {
+ return nil, errors.Errorf("block already submitted")
}
// if the node was not active before, add it now
if !nodeActive {
@@ -87,10 +87,10 @@ func (b *BufferQueue) Submit(msg Element, accessManaRetriever func(identity.ID)
return nil, nil
}
-func (b *BufferQueue) dropHead(accessManaRetriever func(identity.ID) float64) (messagesDropped []ElementID) {
+func (b *BufferQueue) dropHead(accessManaRetriever func(identity.ID) float64) (blocksDropped []ElementID) {
start := b.Current()
- // remove as many messages as necessary to stay within max buffer size
+ // remove as many blocks as necessary to stay within max buffer size
for b.Size() > b.maxBuffer {
// find longest mana-scaled queue
maxScale := math.Inf(-1)
@@ -112,36 +112,36 @@ func (b *BufferQueue) dropHead(accessManaRetriever func(identity.ID) float64) (m
}
}
longestQueue := b.activeNode[maxNodeID].Value.(*NodeQueue)
- // find oldest submitted and not-ready message in the longest queue
- var oldestMessage Element
+ // find oldest submitted and not-ready block in the longest queue
+ var oldestBlock Element
for _, v := range longestQueue.submitted {
- if oldestMessage == nil || oldestMessage.IssuingTime().After((*v).IssuingTime()) {
- oldestMessage = *v
+ if oldestBlock == nil || oldestBlock.IssuingTime().After((*v).IssuingTime()) {
+ oldestBlock = *v
}
}
- // if the oldest not-ready message is older than the oldest ready message, drop the former otherwise the latter
+ // if the oldest not-ready block is older than the oldest ready block, drop the former otherwise the latter
readyQueueFront := longestQueue.Front()
- if oldestMessage != nil && (readyQueueFront == nil || oldestMessage.IssuingTime().Before(readyQueueFront.IssuingTime())) {
- messagesDropped = append(messagesDropped, ElementIDFromBytes(oldestMessage.IDBytes()))
+ if oldestBlock != nil && (readyQueueFront == nil || oldestBlock.IssuingTime().Before(readyQueueFront.IssuingTime())) {
+ blocksDropped = append(blocksDropped, ElementIDFromBytes(oldestBlock.IDBytes()))
// no need to check if Unsubmit call succeeded, as the mutex of the scheduler is locked to current context
- b.Unsubmit(oldestMessage)
+ b.Unsubmit(oldestBlock)
} else if readyQueueFront != nil {
- msg := longestQueue.PopFront()
+ blk := longestQueue.PopFront()
b.size--
- messagesDropped = append(messagesDropped, ElementIDFromBytes(msg.IDBytes()))
+ blocksDropped = append(blocksDropped, ElementIDFromBytes(blk.IDBytes()))
} else {
panic("scheduler buffer size exceeded and the longest scheduler queue is empty.")
}
}
- return messagesDropped
+ return blocksDropped
}
-// Unsubmit removes a message from the submitted messages.
-// If that message is already marked as ready, Unsubmit has no effect.
-func (b *BufferQueue) Unsubmit(msg Element) bool {
- nodeID := identity.NewID(msg.IssuerPublicKey())
+// Unsubmit removes a block from the submitted blocks.
+// If that block is already marked as ready, Unsubmit has no effect.
+func (b *BufferQueue) Unsubmit(blk Element) bool {
+ nodeID := identity.NewID(blk.IssuerPublicKey())
element, ok := b.activeNode[nodeID]
if !ok {
@@ -149,7 +149,7 @@ func (b *BufferQueue) Unsubmit(msg Element) bool {
}
nodeQueue := element.Value.(*NodeQueue)
- if !nodeQueue.Unsubmit(msg) {
+ if !nodeQueue.Unsubmit(blk) {
return false
}
@@ -157,25 +157,25 @@ func (b *BufferQueue) Unsubmit(msg Element) bool {
return true
}
-// Ready marks a previously submitted message as ready to be scheduled.
-func (b *BufferQueue) Ready(msg Element) bool {
- element, ok := b.activeNode[identity.NewID(msg.IssuerPublicKey())]
+// Ready marks a previously submitted block as ready to be scheduled.
+func (b *BufferQueue) Ready(blk Element) bool {
+ element, ok := b.activeNode[identity.NewID(blk.IssuerPublicKey())]
if !ok {
return false
}
nodeQueue := element.Value.(*NodeQueue)
- return nodeQueue.Ready(msg)
+ return nodeQueue.Ready(blk)
}
-// ReadyMessagesCount returns the number of ready messages in the buffer.
-func (b *BufferQueue) ReadyMessagesCount() (readyMsgCount int) {
+// ReadyBlocksCount returns the number of ready blocks in the buffer.
+func (b *BufferQueue) ReadyBlocksCount() (readyBlkCount int) {
start := b.Current()
if start == nil {
return
}
for q := start; ; {
- readyMsgCount += q.inbox.Len()
+ readyBlkCount += q.inbox.Len()
q = b.Next()
if q == start {
break
@@ -184,15 +184,15 @@ func (b *BufferQueue) ReadyMessagesCount() (readyMsgCount int) {
return
}
-// TotalMessagesCount returns the number of messages in the buffer.
-func (b *BufferQueue) TotalMessagesCount() (msgCount int) {
+// TotalBlocksCount returns the number of blocks in the buffer.
+func (b *BufferQueue) TotalBlocksCount() (blkCount int) {
start := b.Current()
if start == nil {
return
}
for q := start; ; {
- msgCount += q.inbox.Len()
- msgCount += len(q.submitted)
+ blkCount += q.inbox.Len()
+ blkCount += len(q.submitted)
q = b.Next()
if q == start {
break
@@ -212,7 +212,7 @@ func (b *BufferQueue) InsertNode(nodeID identity.ID) {
b.activeNode[nodeID] = b.ringInsert(nodeQueue)
}
-// RemoveNode removes all messages (submitted and ready) for the given node.
+// RemoveNode removes all blocks (submitted and ready) for the given node.
func (b *BufferQueue) RemoveNode(nodeID identity.ID) {
element, ok := b.activeNode[nodeID]
if !ok {
@@ -243,15 +243,15 @@ func (b *BufferQueue) Current() *NodeQueue {
return b.ring.Value.(*NodeQueue)
}
-// PopFront removes the first ready message from the queue of the current node.
+// PopFront removes the first ready block from the queue of the current node.
func (b *BufferQueue) PopFront() Element {
q := b.Current()
- msg := q.PopFront()
+ blk := q.PopFront()
b.size--
- return msg
+ return blk
}
-// IDs returns the IDs of all submitted messages (ready or not).
+// IDs returns the IDs of all submitted blocks (ready or not).
func (b *BufferQueue) IDs() (ids []ElementID) {
start := b.Current()
if start == nil {
diff --git a/packages/tangle/schedulerutils/bufferqueue_test.go b/packages/tangle/schedulerutils/bufferqueue_test.go
index f926dbca7f..4311f1bccc 100644
--- a/packages/tangle/schedulerutils/bufferqueue_test.go
+++ b/packages/tangle/schedulerutils/bufferqueue_test.go
@@ -16,9 +16,9 @@ import (
// region Buffered Queue test /////////////////////////////////////////////////////////////////////////////////////////////
const (
- numMessages = 100
- maxBuffer = numMessages
- maxQueue = 2 * maxBuffer / numMessages
+ numBlocks = 100
+ maxBuffer = numBlocks
+ maxQueue = 2 * maxBuffer / numBlocks
)
var (
@@ -33,10 +33,10 @@ func TestBufferQueue_Submit(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
var size int
- for i := 0; i < numMessages; i++ {
- msg := newTestMessageWithIndex(identity.GenerateIdentity().PublicKey(), i)
+ for i := 0; i < numBlocks; i++ {
+ blk := newTestBlockWithIndex(identity.GenerateIdentity().PublicKey(), i)
size++
- elements, err := b.Submit(msg, mockAccessManaRetriever)
+ elements, err := b.Submit(blk, mockAccessManaRetriever)
assert.Empty(t, elements)
assert.NoError(t, err)
assert.EqualValues(t, i+1, b.NumActiveNodes())
@@ -48,134 +48,134 @@ func TestBufferQueue_Submit(t *testing.T) {
func TestBufferQueue_Unsubmit(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- messages := make([]*testMessage, numMessages)
- for i := range messages {
- messages[i] = newTestMessageWithIndex(identity.GenerateIdentity().PublicKey(), i)
- elements, err := b.Submit(messages[i], mockAccessManaRetriever)
+ blocks := make([]*testBlock, numBlocks)
+ for i := range blocks {
+ blocks[i] = newTestBlockWithIndex(identity.GenerateIdentity().PublicKey(), i)
+ elements, err := b.Submit(blocks[i], mockAccessManaRetriever)
assert.Empty(t, elements)
assert.NoError(t, err)
}
- assert.EqualValues(t, numMessages, b.NumActiveNodes())
- assert.EqualValues(t, numMessages, ringLen(b))
- for i := range messages {
- b.Unsubmit(messages[i])
- assert.EqualValues(t, numMessages, b.NumActiveNodes())
- assert.EqualValues(t, numMessages, ringLen(b))
+ assert.EqualValues(t, numBlocks, b.NumActiveNodes())
+ assert.EqualValues(t, numBlocks, ringLen(b))
+ for i := range blocks {
+ b.Unsubmit(blocks[i])
+ assert.EqualValues(t, numBlocks, b.NumActiveNodes())
+ assert.EqualValues(t, numBlocks, ringLen(b))
}
assert.EqualValues(t, 0, b.Size())
}
-// Drop unready messages from the longest queue. Drop one message to fit new message. Drop two messages to fit one new larger message.
+// Drop unready blocks from the longest queue. Drop one block to fit new block. Drop two blocks to fit one new larger block.
func TestBufferQueue_SubmitWithDrop_Unready(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- preparedMessages := make([]*testMessage, 0, 2*numMessages)
- for i := 0; i < numMessages/2; i++ {
- preparedMessages = append(preparedMessages, newTestMessageWithIndex(noManaNode.PublicKey(), i))
+ preparedBlocks := make([]*testBlock, 0, 2*numBlocks)
+ for i := 0; i < numBlocks/2; i++ {
+ preparedBlocks = append(preparedBlocks, newTestBlockWithIndex(noManaNode.PublicKey(), i))
}
- for i := 0; i < numMessages/2; i++ {
- preparedMessages = append(preparedMessages, newTestMessageWithIndex(selfNode.PublicKey(), i))
+ for i := 0; i < numBlocks/2; i++ {
+ preparedBlocks = append(preparedBlocks, newTestBlockWithIndex(selfNode.PublicKey(), i))
}
- for _, msg := range preparedMessages {
- droppedMessages, err := b.Submit(msg, mockAccessManaRetriever)
- assert.Empty(t, droppedMessages)
+ for _, blk := range preparedBlocks {
+ droppedBlocks, err := b.Submit(blk, mockAccessManaRetriever)
+ assert.Empty(t, droppedBlocks)
assert.NoError(t, err)
}
assert.EqualValues(t, 2, b.NumActiveNodes())
assert.EqualValues(t, 2, ringLen(b))
assert.EqualValues(t, maxBuffer, b.Size())
- // dropping single unready message
- droppedMessages, err := b.Submit(newTestMessageWithIndex(selfNode.PublicKey(), 0), mockAccessManaRetriever)
+ // dropping single unready block
+ droppedBlocks, err := b.Submit(newTestBlockWithIndex(selfNode.PublicKey(), 0), mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Len(t, droppedMessages, 1)
- assert.Equal(t, preparedMessages[0].IDBytes(), droppedMessages[0][:])
+ assert.Len(t, droppedBlocks, 1)
+ assert.Equal(t, preparedBlocks[0].IDBytes(), droppedBlocks[0][:])
assert.LessOrEqual(t, maxBuffer, b.Size())
- // dropping two unready messages to fit the new one
- droppedMessages, err = b.Submit(newLargeTestMessage(selfNode.PublicKey(), make([]byte, 44)), mockAccessManaRetriever)
+ // dropping two unready blocks to fit the new one
+ droppedBlocks, err = b.Submit(newLargeTestBlock(selfNode.PublicKey(), make([]byte, 44)), mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Len(t, droppedMessages, 1)
- assert.Equal(t, preparedMessages[1].IDBytes(), droppedMessages[0][:])
+ assert.Len(t, droppedBlocks, 1)
+ assert.Equal(t, preparedBlocks[1].IDBytes(), droppedBlocks[0][:])
assert.EqualValues(t, maxBuffer, b.Size())
}
-// Drop newly submitted message because the node doesn't have enough access mana to send such a big message when the buffer is full.
-func TestBufferQueue_SubmitWithDrop_DropNewMessage(t *testing.T) {
+// Drop newly submitted block because the node doesn't have enough access mana to send such a big block when the buffer is full.
+func TestBufferQueue_SubmitWithDrop_DropNewBlock(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- preparedMessages := make([]*testMessage, 0, 2*numMessages)
- for i := 0; i < numMessages; i++ {
- preparedMessages = append(preparedMessages, newTestMessageWithIndex(selfNode.PublicKey(), i))
+ preparedBlocks := make([]*testBlock, 0, 2*numBlocks)
+ for i := 0; i < numBlocks; i++ {
+ preparedBlocks = append(preparedBlocks, newTestBlockWithIndex(selfNode.PublicKey(), i))
}
- for _, msg := range preparedMessages {
- droppedMessages, err := b.Submit(msg, mockAccessManaRetriever)
+ for _, blk := range preparedBlocks {
+ droppedBlocks, err := b.Submit(blk, mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Empty(t, droppedMessages)
+ assert.Empty(t, droppedBlocks)
}
assert.EqualValues(t, 1, b.NumActiveNodes())
assert.EqualValues(t, 1, ringLen(b))
assert.EqualValues(t, maxBuffer, b.Size())
- // drop newly submitted message when all messages in the buffer are not ready
- newMessage := newLargeTestMessage(noManaNode.PublicKey(), make([]byte, 40))
- droppedMessages, err := b.Submit(newMessage, mockAccessManaRetriever)
+ // drop newly submitted block when all blocks in the buffer are not ready
+ newBlock := newLargeTestBlock(noManaNode.PublicKey(), make([]byte, 40))
+ droppedBlocks, err := b.Submit(newBlock, mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Len(t, droppedMessages, 1)
- assert.Equal(t, newMessage.IDBytes(), droppedMessages[0][:])
+ assert.Len(t, droppedBlocks, 1)
+ assert.Equal(t, newBlock.IDBytes(), droppedBlocks[0][:])
assert.Equal(t, maxBuffer, b.Size())
}
-// Drop ready messages from the longest queue. Drop one ready message to fit new message. Drop two ready messages to fit one new larger message.
+// Drop ready blocks from the longest queue. Drop one ready block to fit new block. Drop two ready blocks to fit one new larger block.
func TestBufferQueue_SubmitWithDrop_Ready(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- preparedMessages := make([]*testMessage, 0, 2*numMessages)
- for i := 0; i < numMessages/2; i++ {
- preparedMessages = append(preparedMessages, newTestMessageWithIndex(noManaNode.PublicKey(), i))
+ preparedBlocks := make([]*testBlock, 0, 2*numBlocks)
+ for i := 0; i < numBlocks/2; i++ {
+ preparedBlocks = append(preparedBlocks, newTestBlockWithIndex(noManaNode.PublicKey(), i))
}
- for i := 0; i < numMessages/2; i++ {
- preparedMessages = append(preparedMessages, newTestMessageWithIndex(selfNode.PublicKey(), i))
+ for i := 0; i < numBlocks/2; i++ {
+ preparedBlocks = append(preparedBlocks, newTestBlockWithIndex(selfNode.PublicKey(), i))
}
- for _, msg := range preparedMessages {
- droppedMessages, err := b.Submit(msg, mockAccessManaRetriever)
+ for _, blk := range preparedBlocks {
+ droppedBlocks, err := b.Submit(blk, mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Empty(t, droppedMessages)
- b.Ready(msg)
+ assert.Empty(t, droppedBlocks)
+ b.Ready(blk)
}
assert.EqualValues(t, 2, b.NumActiveNodes())
assert.EqualValues(t, 2, ringLen(b))
assert.EqualValues(t, maxBuffer, b.Size())
- // drop single ready message
- droppedMessages, err := b.Submit(newTestMessageWithIndex(selfNode.PublicKey(), 0), mockAccessManaRetriever)
+ // drop single ready block
+ droppedBlocks, err := b.Submit(newTestBlockWithIndex(selfNode.PublicKey(), 0), mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Len(t, droppedMessages, 1)
- assert.Equal(t, preparedMessages[0].IDBytes(), droppedMessages[0][:])
+ assert.Len(t, droppedBlocks, 1)
+ assert.Equal(t, preparedBlocks[0].IDBytes(), droppedBlocks[0][:])
assert.LessOrEqual(t, maxBuffer, b.Size())
- // drop two ready messages to fit the newly submitted one
- droppedMessages, err = b.Submit(newLargeTestMessage(selfNode.PublicKey(), make([]byte, 44)), mockAccessManaRetriever)
+ // drop two ready blocks to fit the newly submitted one
+ droppedBlocks, err = b.Submit(newLargeTestBlock(selfNode.PublicKey(), make([]byte, 44)), mockAccessManaRetriever)
assert.NoError(t, err)
- assert.Len(t, droppedMessages, 1)
- assert.Equal(t, preparedMessages[1].IDBytes(), droppedMessages[0][:])
+ assert.Len(t, droppedBlocks, 1)
+ assert.Equal(t, preparedBlocks[1].IDBytes(), droppedBlocks[0][:])
assert.EqualValues(t, maxBuffer, b.Size())
}
func TestBufferQueue_Ready(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- messages := make([]*testMessage, numMessages)
- for i := range messages {
- messages[i] = newTestMessageWithIndex(identity.GenerateIdentity().PublicKey(), i)
- elements, err := b.Submit(messages[i], mockAccessManaRetriever)
+ blocks := make([]*testBlock, numBlocks)
+ for i := range blocks {
+ blocks[i] = newTestBlockWithIndex(identity.GenerateIdentity().PublicKey(), i)
+ elements, err := b.Submit(blocks[i], mockAccessManaRetriever)
assert.NoError(t, err)
assert.Empty(t, elements)
}
- for i := range messages {
- assert.True(t, b.Ready(messages[i]))
- assert.False(t, b.Ready(messages[i]))
+ for i := range blocks {
+ assert.True(t, b.Ready(blocks[i]))
+ assert.False(t, b.Ready(blocks[i]))
for ; b.Current().Size() == 0; b.Next() {
}
- assert.Equal(t, messages[i], b.PopFront())
+ assert.Equal(t, blocks[i], b.PopFront())
}
assert.EqualValues(t, 0, b.Size())
}
@@ -183,14 +183,14 @@ func TestBufferQueue_Ready(t *testing.T) {
func TestBufferQueue_Time(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- future := newTestMessage(selfNode.PublicKey())
+ future := newTestBlock(selfNode.PublicKey())
future.issuingTime = time.Now().Add(time.Second)
elements, err := b.Submit(future, mockAccessManaRetriever)
assert.NoError(t, err)
assert.Empty(t, elements)
assert.True(t, b.Ready(future))
- now := newTestMessage(selfNode.PublicKey())
+ now := newTestBlock(selfNode.PublicKey())
elements, err = b.Submit(now, mockAccessManaRetriever)
assert.NoError(t, err)
assert.Empty(t, elements)
@@ -205,19 +205,19 @@ func TestBufferQueue_Time(t *testing.T) {
func TestBufferQueue_Ring(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- messages := make([]*testMessage, numMessages)
- for i := range messages {
- messages[i] = newTestMessageWithIndex(identity.GenerateIdentity().PublicKey(), i)
- elements, err := b.Submit(messages[i], mockAccessManaRetriever)
+ blocks := make([]*testBlock, numBlocks)
+ for i := range blocks {
+ blocks[i] = newTestBlockWithIndex(identity.GenerateIdentity().PublicKey(), i)
+ elements, err := b.Submit(blocks[i], mockAccessManaRetriever)
assert.NoError(t, err)
assert.Empty(t, elements)
- assert.True(t, b.Ready(messages[i]))
+ assert.True(t, b.Ready(blocks[i]))
}
- for i := range messages {
- assert.Equal(t, messages[i], b.Current().Front())
+ for i := range blocks {
+ assert.Equal(t, blocks[i], b.Current().Front())
b.Next()
}
- assert.Equal(t, messages[0], b.Current().Front())
+ assert.Equal(t, blocks[0], b.Current().Front())
}
func TestBufferQueue_IDs(t *testing.T) {
@@ -225,16 +225,16 @@ func TestBufferQueue_IDs(t *testing.T) {
assert.Empty(t, b.IDs())
- ids := make([]schedulerutils.ElementID, numMessages)
+ ids := make([]schedulerutils.ElementID, numBlocks)
for i := range ids {
- msg := newTestMessageWithIndex(identity.GenerateIdentity().PublicKey(), i)
- elements, err := b.Submit(msg, mockAccessManaRetriever)
+ blk := newTestBlockWithIndex(identity.GenerateIdentity().PublicKey(), i)
+ elements, err := b.Submit(blk, mockAccessManaRetriever)
assert.NoError(t, err)
assert.Empty(t, elements)
if i%2 == 0 {
- assert.True(t, b.Ready(msg))
+ assert.True(t, b.Ready(blk))
}
- ids[i] = schedulerutils.ElementIDFromBytes(msg.IDBytes())
+ ids[i] = schedulerutils.ElementIDFromBytes(blk.IDBytes())
}
assert.ElementsMatch(t, ids, b.IDs())
}
@@ -256,12 +256,12 @@ func TestBufferQueue_InsertNode(t *testing.T) {
func TestBufferQueue_RemoveNode(t *testing.T) {
b := schedulerutils.NewBufferQueue(maxBuffer, maxQueue)
- elements, err := b.Submit(newTestMessage(selfNode.PublicKey()), mockAccessManaRetriever)
+ elements, err := b.Submit(newTestBlock(selfNode.PublicKey()), mockAccessManaRetriever)
assert.Empty(t, elements)
assert.NoError(t, err)
otherNode := identity.GenerateIdentity()
- elements, err = b.Submit(newTestMessage(otherNode.PublicKey()), mockAccessManaRetriever)
+ elements, err = b.Submit(newTestBlock(otherNode.PublicKey()), mockAccessManaRetriever)
assert.NoError(t, err)
assert.Empty(t, elements)
@@ -285,7 +285,7 @@ func ringLen(b *schedulerutils.BufferQueue) int {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-type testMessage struct {
+type testBlock struct {
pubKey ed25519.PublicKey
issuingTime time.Time
payload []byte
@@ -293,35 +293,35 @@ type testMessage struct {
idx int
}
-func newTestMessageWithIndex(pubKey ed25519.PublicKey, index int) *testMessage {
- return &testMessage{
+func newTestBlockWithIndex(pubKey ed25519.PublicKey, index int) *testBlock {
+ return &testBlock{
pubKey: pubKey,
idx: index,
issuingTime: time.Now(),
}
}
-func newTestMessage(pubKey ed25519.PublicKey) *testMessage {
- return &testMessage{
+func newTestBlock(pubKey ed25519.PublicKey) *testBlock {
+ return &testBlock{
pubKey: pubKey,
issuingTime: time.Now(),
}
}
-func newLargeTestMessage(pubKey ed25519.PublicKey, payload []byte) *testMessage {
- return &testMessage{
+func newLargeTestBlock(pubKey ed25519.PublicKey, payload []byte) *testBlock {
+ return &testBlock{
pubKey: pubKey,
issuingTime: time.Now(),
payload: payload,
}
}
-func (m *testMessage) IDBytes() []byte {
+func (m *testBlock) IDBytes() []byte {
tmp := blake2b.Sum256(m.Bytes())
return tmp[:]
}
-func (m *testMessage) Bytes() []byte {
+func (m *testBlock) Bytes() []byte {
if m.bytes != nil {
return m.bytes
}
@@ -336,15 +336,15 @@ func (m *testMessage) Bytes() []byte {
return m.bytes
}
-func (m *testMessage) Size() int {
+func (m *testBlock) Size() int {
return len(m.Bytes())
}
-func (m *testMessage) IssuerPublicKey() ed25519.PublicKey {
+func (m *testBlock) IssuerPublicKey() ed25519.PublicKey {
return m.pubKey
}
-func (m *testMessage) IssuingTime() time.Time {
+func (m *testBlock) IssuingTime() time.Time {
return m.issuingTime
}
diff --git a/packages/tangle/schedulerutils/nodequeue.go b/packages/tangle/schedulerutils/nodequeue.go
index eb034da454..b85eed6fb7 100644
--- a/packages/tangle/schedulerutils/nodequeue.go
+++ b/packages/tangle/schedulerutils/nodequeue.go
@@ -20,7 +20,7 @@ type ElementID [ElementIDLength]byte
func ElementIDFromBytes(data []byte) (result ElementID) {
// check arguments
if len(data) < ElementIDLength {
- panic("bytes not long enough to encode a valid message id")
+ panic("bytes not long enough to encode a valid block id")
}
copy(result[:], data)
@@ -31,7 +31,7 @@ func (e ElementID) Bytes() []byte {
return e[:]
}
-// Element represents the generic interface for an message in NodeQueue.
+// Element represents the generic interface for an block in NodeQueue.
type Element interface {
// IDBytes returns the ID of an Element as a byte slice.
IDBytes() []byte
@@ -42,13 +42,13 @@ type Element interface {
// IssuerPublicKey returns the issuer public key of the element.
IssuerPublicKey() ed25519.PublicKey
- // IssuingTime returns the issuing time of the message.
+ // IssuingTime returns the issuing time of the block.
IssuingTime() time.Time
}
// region NodeQueue /////////////////////////////////////////////////////////////////////////////////////////////
-// NodeQueue keeps the submitted messages of a node.
+// NodeQueue keeps the submitted blocks of a node.
type NodeQueue struct {
nodeID identity.ID
submitted map[ElementID]*Element
@@ -65,7 +65,7 @@ func NewNodeQueue(nodeID identity.ID) *NodeQueue {
}
}
-// Size returns the total size of the messages in the queue.
+// Size returns the total size of the blocks in the queue.
// This function is thread-safe.
func (q *NodeQueue) Size() int {
if q == nil {
@@ -79,11 +79,11 @@ func (q *NodeQueue) NodeID() identity.ID {
return q.nodeID
}
-// Submit submits a message for the queue.
+// Submit submits a block for the queue.
func (q *NodeQueue) Submit(element Element) bool {
// this is just a debugging check, it will never happen in practice
- if msgNodeID := identity.NewID(element.IssuerPublicKey()); q.nodeID != msgNodeID {
- panic(fmt.Sprintf("nodequeue: queue node ID(%x) and issuer ID(%x) does not match.", q.nodeID, msgNodeID))
+ if blkNodeID := identity.NewID(element.IssuerPublicKey()); q.nodeID != blkNodeID {
+ panic(fmt.Sprintf("nodequeue: queue node ID(%x) and issuer ID(%x) does not match.", q.nodeID, blkNodeID))
}
id := ElementIDFromBytes(element.IDBytes())
@@ -96,7 +96,7 @@ func (q *NodeQueue) Submit(element Element) bool {
return true
}
-// Unsubmit removes a previously submitted message from the queue.
+// Unsubmit removes a previously submitted block from the queue.
func (q *NodeQueue) Unsubmit(element Element) bool {
id := ElementIDFromBytes(element.IDBytes())
if _, submitted := q.submitted[id]; !submitted {
@@ -108,7 +108,7 @@ func (q *NodeQueue) Unsubmit(element Element) bool {
return true
}
-// Ready marks a previously submitted message as ready to be scheduled.
+// Ready marks a previously submitted block as ready to be scheduled.
func (q *NodeQueue) Ready(element Element) bool {
id := ElementIDFromBytes(element.IDBytes())
if _, submitted := q.submitted[id]; !submitted {
@@ -120,7 +120,7 @@ func (q *NodeQueue) Ready(element Element) bool {
return true
}
-// IDs returns the IDs of all submitted messages (ready or not).
+// IDs returns the IDs of all submitted blocks (ready or not).
func (q *NodeQueue) IDs() (ids []ElementID) {
for id := range q.submitted {
ids = append(ids, id)
@@ -131,7 +131,7 @@ func (q *NodeQueue) IDs() (ids []ElementID) {
return ids
}
-// Front returns the first ready message in the queue.
+// Front returns the first ready block in the queue.
func (q *NodeQueue) Front() Element {
if q == nil || q.inbox.Len() == 0 {
return nil
@@ -139,18 +139,18 @@ func (q *NodeQueue) Front() Element {
return (*q.inbox)[0]
}
-// PopFront removes the first ready message from the queue.
+// PopFront removes the first ready block from the queue.
func (q *NodeQueue) PopFront() Element {
- msg := heap.Pop(q.inbox).(Element)
+ blk := heap.Pop(q.inbox).(Element)
q.size.Dec()
- return msg
+ return blk
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region ElementHeap /////////////////////////////////////////////////////////////////////////////////////////////
-// ElementHeap holds a heap of messages with respect to their IssuingTime.
+// ElementHeap holds a heap of blocks with respect to their IssuingTime.
type ElementHeap []Element
// Len is the number of elements in the collection.
diff --git a/packages/tangle/solidifier.go b/packages/tangle/solidifier.go
index b513c4624c..5719346a59 100644
--- a/packages/tangle/solidifier.go
+++ b/packages/tangle/solidifier.go
@@ -9,20 +9,20 @@ import (
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
-// maxParentsTimeDifference defines the smallest allowed time difference between a child Message and its parents.
+// maxParentsTimeDifference defines the smallest allowed time difference between a child Block and its parents.
const minParentsTimeDifference = 0 * time.Second
-// maxParentsTimeDifference defines the biggest allowed time difference between a child Message and its parents.
+// maxParentsTimeDifference defines the biggest allowed time difference between a child Block and its parents.
const maxParentsTimeDifference = 30 * time.Minute
// region Solidifier ///////////////////////////////////////////////////////////////////////////////////////////////////
-// Solidifier is the Tangle's component that solidifies messages.
+// Solidifier is the Tangle's component that solidifies blocks.
type Solidifier struct {
// Events contains the Solidifier related events.
Events *SolidifierEvents
- mutex *syncutils.DAGMutex[MessageID]
+ mutex *syncutils.DAGMutex[BlockID]
tangle *Tangle
}
@@ -30,7 +30,7 @@ type Solidifier struct {
func NewSolidifier(tangle *Tangle) (solidifier *Solidifier) {
solidifier = &Solidifier{
Events: newSolidifierEvents(),
- mutex: syncutils.NewDAGMutex[MessageID](),
+ mutex: syncutils.NewDAGMutex[BlockID](),
tangle: tangle,
}
@@ -39,130 +39,130 @@ func NewSolidifier(tangle *Tangle) (solidifier *Solidifier) {
// Setup sets up the behavior of the component by making it attach to the relevant events of the other components.
func (s *Solidifier) Setup() {
- s.tangle.Storage.Events.MessageStored.Hook(event.NewClosure(func(event *MessageStoredEvent) {
- s.solidify(event.Message)
+ s.tangle.Storage.Events.BlockStored.Hook(event.NewClosure(func(event *BlockStoredEvent) {
+ s.solidify(event.Block)
}))
- s.Events.MessageSolid.Attach(event.NewClosure(func(event *MessageSolidEvent) {
- s.processApprovers(event.Message.ID())
+ s.Events.BlockSolid.Attach(event.NewClosure(func(event *BlockSolidEvent) {
+ s.processChildren(event.Block.ID())
}))
}
-// Solidify solidifies the given Message.
-func (s *Solidifier) Solidify(messageID MessageID) {
- s.tangle.Storage.Message(messageID).Consume(s.solidify)
+// Solidify solidifies the given Block.
+func (s *Solidifier) Solidify(blockID BlockID) {
+ s.tangle.Storage.Block(blockID).Consume(s.solidify)
}
-// Solidify solidifies the given Message.
-func (s *Solidifier) solidify(message *Message) {
- s.tangle.Storage.MessageMetadata(message.ID()).Consume(func(messageMetadata *MessageMetadata) {
- if s.checkMessageSolidity(message, messageMetadata) {
- s.Events.MessageSolid.Trigger(&MessageSolidEvent{message})
+// Solidify solidifies the given Block.
+func (s *Solidifier) solidify(block *Block) {
+ s.tangle.Storage.BlockMetadata(block.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ if s.checkBlockSolidity(block, blockMetadata) {
+ s.Events.BlockSolid.Trigger(&BlockSolidEvent{block})
}
})
}
-func (s *Solidifier) processApprovers(messageID MessageID) {
- s.tangle.Storage.Approvers(messageID).Consume(func(approver *Approver) {
+func (s *Solidifier) processChildren(blockID BlockID) {
+ s.tangle.Storage.Children(blockID).Consume(func(child *Child) {
event.Loop.Submit(func() {
- s.Solidify(approver.ApproverMessageID())
+ s.Solidify(child.ChildBlockID())
})
})
}
-// RetrieveMissingMessage checks if the message is missing and triggers the corresponding events to request it. It returns true if the message has been missing.
-func (s *Solidifier) RetrieveMissingMessage(messageID MessageID) (messageWasMissing bool) {
- s.tangle.Storage.MessageMetadata(messageID, func() *MessageMetadata {
- if cachedMissingMessage, stored := s.tangle.Storage.StoreMissingMessage(NewMissingMessage(messageID)); stored {
- cachedMissingMessage.Release()
+// RetrieveMissingBlock checks if the block is missing and triggers the corresponding events to request it. It returns true if the block has been missing.
+func (s *Solidifier) RetrieveMissingBlock(blockID BlockID) (blockWasMissing bool) {
+ s.tangle.Storage.BlockMetadata(blockID, func() *BlockMetadata {
+ if cachedMissingBlock, stored := s.tangle.Storage.StoreMissingBlock(NewMissingBlock(blockID)); stored {
+ cachedMissingBlock.Release()
- messageWasMissing = true
- s.Events.MessageMissing.Trigger(&MessageMissingEvent{messageID})
+ blockWasMissing = true
+ s.Events.BlockMissing.Trigger(&BlockMissingEvent{blockID})
}
return nil
}).Release()
- return messageWasMissing
+ return blockWasMissing
}
-// checkMessageSolidity checks if the given Message is solid and eventually queues its Approvers to also be checked.
-func (s *Solidifier) checkMessageSolidity(message *Message, messageMetadata *MessageMetadata) (messageBecameSolid bool) {
- s.mutex.Lock(message.ID())
- defer s.mutex.Unlock(message.ID())
+// checkBlockSolidity checks if the given Block is solid and eventually queues its Children to also be checked.
+func (s *Solidifier) checkBlockSolidity(block *Block, blockMetadata *BlockMetadata) (blockBecameSolid bool) {
+ s.mutex.Lock(block.ID())
+ defer s.mutex.Unlock(block.ID())
- if messageMetadata.IsSolid() {
+ if blockMetadata.IsSolid() {
return false
}
- if !s.isMessageSolid(message, messageMetadata) {
+ if !s.isBlockSolid(block, blockMetadata) {
return false
}
- if !s.areParentMessagesValid(message) {
- if messageMetadata.SetObjectivelyInvalid(true) {
- s.tangle.Events.MessageInvalid.Trigger(&MessageInvalidEvent{MessageID: message.ID(), Error: ErrParentsInvalid})
+ if !s.areParentBlocksValid(block) {
+ if blockMetadata.SetObjectivelyInvalid(true) {
+ s.tangle.Events.BlockInvalid.Trigger(&BlockInvalidEvent{BlockID: block.ID(), Error: ErrParentsInvalid})
}
return false
}
- return messageMetadata.SetSolid(true)
+ return blockMetadata.SetSolid(true)
}
-// isMessageSolid checks if the given Message is solid.
-func (s *Solidifier) isMessageSolid(message *Message, messageMetadata *MessageMetadata) (solid bool) {
- if message == nil || message.IsDeleted() || messageMetadata == nil || messageMetadata.IsDeleted() {
+// isBlockSolid checks if the given Block is solid.
+func (s *Solidifier) isBlockSolid(block *Block, blockMetadata *BlockMetadata) (solid bool) {
+ if block == nil || block.IsDeleted() || blockMetadata == nil || blockMetadata.IsDeleted() {
return false
}
- if messageMetadata.IsSolid() {
+ if blockMetadata.IsSolid() {
return true
}
solid = true
- message.ForEachParent(func(parent Parent) {
- // as missing messages are requested in isMessageMarkedAsSolid, we need to be aware of short-circuit evaluation
- // rules, thus we need to evaluate isMessageMarkedAsSolid !!first!!
- solid = s.isMessageMarkedAsSolid(parent.ID) && solid
+ block.ForEachParent(func(parent Parent) {
+ // as missing blocks are requested in isBlockMarkedAsSolid, we need to be aware of short-circuit evaluation
+ // rules, thus we need to evaluate isBlockMarkedAsSolid !!first!!
+ solid = s.isBlockMarkedAsSolid(parent.ID) && solid
})
return
}
-// isMessageMarkedAsSolid checks whether the given message is solid and marks it as missing if it isn't known.
-func (s *Solidifier) isMessageMarkedAsSolid(messageID MessageID) (solid bool) {
- if messageID == EmptyMessageID {
+// isBlockMarkedAsSolid checks whether the given block is solid and marks it as missing if it isn't known.
+func (s *Solidifier) isBlockMarkedAsSolid(blockID BlockID) (solid bool) {
+ if blockID == EmptyBlockID {
return true
}
- if s.RetrieveMissingMessage(messageID) {
+ if s.RetrieveMissingBlock(blockID) {
return false
}
- s.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- solid = messageMetadata.IsSolid()
+ s.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ solid = blockMetadata.IsSolid()
})
return
}
-// areParentMessagesValid checks whether the parents of the given Message are valid.
-func (s *Solidifier) areParentMessagesValid(message *Message) (valid bool) {
+// areParentBlocksValid checks whether the parents of the given Block are valid.
+func (s *Solidifier) areParentBlocksValid(block *Block) (valid bool) {
valid = true
- message.ForEachParent(func(parent Parent) {
+ block.ForEachParent(func(parent Parent) {
if !valid {
return
}
- if parent.ID == EmptyMessageID {
+ if parent.ID == EmptyBlockID {
if s.tangle.Options.GenesisNode != nil {
- valid = *s.tangle.Options.GenesisNode == message.IssuerPublicKey()
+ valid = *s.tangle.Options.GenesisNode == block.IssuerPublicKey()
return
}
- s.tangle.Storage.MessageMetadata(parent.ID).Consume(func(messageMetadata *MessageMetadata) {
- timeDifference := message.IssuingTime().Sub(messageMetadata.SolidificationTime())
+ s.tangle.Storage.BlockMetadata(parent.ID).Consume(func(blockMetadata *BlockMetadata) {
+ timeDifference := block.IssuingTime().Sub(blockMetadata.SolidificationTime())
if valid = timeDifference >= minParentsTimeDifference && timeDifference <= maxParentsTimeDifference; !valid {
return
}
@@ -171,14 +171,14 @@ func (s *Solidifier) areParentMessagesValid(message *Message) (valid bool) {
return
}
- s.tangle.Storage.Message(parent.ID).Consume(func(parentMessage *Message) {
+ s.tangle.Storage.Block(parent.ID).Consume(func(parentBlock *Block) {
if parent.Type == ShallowLikeParentType {
- if _, valid = parentMessage.Payload().(utxo.Transaction); !valid {
+ if _, valid = parentBlock.Payload().(utxo.Transaction); !valid {
return
}
}
- if valid = s.isParentMessageValid(parentMessage, message); !valid {
+ if valid = s.isParentBlockValid(parentBlock, block); !valid {
return
}
})
@@ -187,15 +187,15 @@ func (s *Solidifier) areParentMessagesValid(message *Message) (valid bool) {
return
}
-// isParentMessageValid checks whether the given parent Message is valid.
-func (s *Solidifier) isParentMessageValid(parentMessage *Message, childMessage *Message) (valid bool) {
- timeDifference := childMessage.IssuingTime().Sub(parentMessage.IssuingTime())
+// isParentBlockValid checks whether the given parent Block is valid.
+func (s *Solidifier) isParentBlockValid(parentBlock *Block, childBlock *Block) (valid bool) {
+ timeDifference := childBlock.IssuingTime().Sub(parentBlock.IssuingTime())
if timeDifference < minParentsTimeDifference || timeDifference > maxParentsTimeDifference {
return false
}
- s.tangle.Storage.MessageMetadata(parentMessage.ID()).Consume(func(messageMetadata *MessageMetadata) {
- valid = !messageMetadata.IsObjectivelyInvalid()
+ s.tangle.Storage.BlockMetadata(parentBlock.ID()).Consume(func(blockMetadata *BlockMetadata) {
+ valid = !blockMetadata.IsObjectivelyInvalid()
})
return valid
diff --git a/packages/tangle/storage.go b/packages/tangle/storage.go
index 19d87b86d1..a9d057743d 100644
--- a/packages/tangle/storage.go
+++ b/packages/tangle/storage.go
@@ -16,38 +16,38 @@ import (
)
const (
- // PrefixMessage defines the storage prefix for message.
- PrefixMessage byte = iota
+ // PrefixBlock defines the storage prefix for block.
+ PrefixBlock byte = iota
- // PrefixMessageMetadata defines the storage prefix for message metadata.
- PrefixMessageMetadata
+ // PrefixBlockMetadata defines the storage prefix for block metadata.
+ PrefixBlockMetadata
- // PrefixApprovers defines the storage prefix for approvers.
- PrefixApprovers
+ // PrefixChildren defines the storage prefix for children.
+ PrefixChildren
- // PrefixMissingMessage defines the storage prefix for missing message.
- PrefixMissingMessage
+ // PrefixMissingBlock defines the storage prefix for missing block.
+ PrefixMissingBlock
// PrefixAttachments defines the storage prefix for attachments.
PrefixAttachments
- // PrefixMarkerBranchIDMapping defines the storage prefix for the PrefixMarkerBranchIDMapping.
- PrefixMarkerBranchIDMapping
+ // PrefixMarkerConflictIDMapping defines the storage prefix for the PrefixMarkerConflictIDMapping.
+ PrefixMarkerConflictIDMapping
- // PrefixBranchVoters defines the storage prefix for the BranchVoters.
- PrefixBranchVoters
+ // PrefixConflictVoters defines the storage prefix for the ConflictVoters.
+ PrefixConflictVoters
- // PrefixLatestBranchVotes defines the storage prefix for the LatestBranchVotes.
- PrefixLatestBranchVotes
+ // PrefixLatestConflictVotes defines the storage prefix for the LatestConflictVotes.
+ PrefixLatestConflictVotes
// PrefixLatestMarkerVotes defines the storage prefix for the LatestMarkerVotes.
PrefixLatestMarkerVotes
- // PrefixBranchWeight defines the storage prefix for the BranchWeight.
- PrefixBranchWeight
+ // PrefixConflictWeight defines the storage prefix for the ConflictWeight.
+ PrefixConflictWeight
- // PrefixMarkerMessageMapping defines the storage prefix for the MarkerMessageMapping.
- PrefixMarkerMessageMapping
+ // PrefixMarkerBlockMapping defines the storage prefix for the MarkerBlockMapping.
+ PrefixMarkerBlockMapping
// DBSequenceNumber defines the db sequence number.
DBSequenceNumber = "seq"
@@ -61,20 +61,20 @@ const (
// region storage //////////////////////////////////////////////////////////////////////////////////////////////////////
-// Storage represents the storage of messages.
+// Storage represents the storage of blocks.
type Storage struct {
- tangle *Tangle
- messageStorage *objectstorage.ObjectStorage[*Message]
- messageMetadataStorage *objectstorage.ObjectStorage[*MessageMetadata]
- approverStorage *objectstorage.ObjectStorage[*Approver]
- missingMessageStorage *objectstorage.ObjectStorage[*MissingMessage]
- attachmentStorage *objectstorage.ObjectStorage[*Attachment]
- markerIndexBranchIDMappingStorage *objectstorage.ObjectStorage[*MarkerIndexBranchIDMapping]
- branchVotersStorage *objectstorage.ObjectStorage[*BranchVoters]
- latestBranchVotesStorage *objectstorage.ObjectStorage[*LatestBranchVotes]
- latestMarkerVotesStorage *objectstorage.ObjectStorage[*LatestMarkerVotes]
- branchWeightStorage *objectstorage.ObjectStorage[*BranchWeight]
- markerMessageMappingStorage *objectstorage.ObjectStorage[*MarkerMessageMapping]
+ tangle *Tangle
+ blockStorage *objectstorage.ObjectStorage[*Block]
+ blockMetadataStorage *objectstorage.ObjectStorage[*BlockMetadata]
+ childStorage *objectstorage.ObjectStorage[*Child]
+ missingBlockStorage *objectstorage.ObjectStorage[*MissingBlock]
+ attachmentStorage *objectstorage.ObjectStorage[*Attachment]
+ markerIndexConflictIDMappingStorage *objectstorage.ObjectStorage[*MarkerIndexConflictIDMapping]
+ conflictVotersStorage *objectstorage.ObjectStorage[*ConflictVoters]
+ latestConflictVotesStorage *objectstorage.ObjectStorage[*LatestConflictVotes]
+ latestMarkerVotesStorage *objectstorage.ObjectStorage[*LatestMarkerVotes]
+ conflictWeightStorage *objectstorage.ObjectStorage[*ConflictWeight]
+ markerBlockMappingStorage *objectstorage.ObjectStorage[*MarkerBlockMapping]
Events *StorageEvents
shutdown chan struct{}
@@ -85,19 +85,19 @@ func NewStorage(tangle *Tangle) (storage *Storage) {
cacheProvider := tangle.Options.CacheTimeProvider
storage = &Storage{
- tangle: tangle,
- shutdown: make(chan struct{}),
- messageStorage: objectstorage.NewStructStorage[Message](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMessage), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
- messageMetadataStorage: objectstorage.NewStructStorage[MessageMetadata](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMessageMetadata), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false)),
- approverStorage: objectstorage.NewStructStorage[Approver](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixApprovers), cacheProvider.CacheTime(cacheTime), objectstorage.PartitionKey(MessageIDLength, ApproverTypeLength, MessageIDLength), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
- missingMessageStorage: objectstorage.NewStructStorage[MissingMessage](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMissingMessage), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
- attachmentStorage: objectstorage.NewStructStorage[Attachment](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixAttachments), cacheProvider.CacheTime(cacheTime), objectstorage.PartitionKey(new(Attachment).KeyPartitions()...), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
- markerIndexBranchIDMappingStorage: objectstorage.NewStructStorage[MarkerIndexBranchIDMapping](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMarkerBranchIDMapping), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false)),
- branchVotersStorage: objectstorage.NewStructStorage[BranchVoters](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixBranchVoters), cacheProvider.CacheTime(approvalWeightCacheTime), objectstorage.LeakDetectionEnabled(false)),
- latestBranchVotesStorage: objectstorage.NewStructStorage[LatestBranchVotes](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixLatestBranchVotes), cacheProvider.CacheTime(approvalWeightCacheTime), objectstorage.LeakDetectionEnabled(false)),
- latestMarkerVotesStorage: objectstorage.NewStructStorage[LatestMarkerVotes](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixLatestMarkerVotes), cacheProvider.CacheTime(approvalWeightCacheTime), LatestMarkerVotesKeyPartition, objectstorage.LeakDetectionEnabled(false)),
- branchWeightStorage: objectstorage.NewStructStorage[BranchWeight](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixBranchWeight), cacheProvider.CacheTime(approvalWeightCacheTime), objectstorage.LeakDetectionEnabled(false)),
- markerMessageMappingStorage: objectstorage.NewStructStorage[MarkerMessageMapping](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMarkerMessageMapping), cacheProvider.CacheTime(cacheTime), MarkerMessageMappingPartitionKeys, objectstorage.StoreOnCreation(true)),
+ tangle: tangle,
+ shutdown: make(chan struct{}),
+ blockStorage: objectstorage.NewStructStorage[Block](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixBlock), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
+ blockMetadataStorage: objectstorage.NewStructStorage[BlockMetadata](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixBlockMetadata), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false)),
+ childStorage: objectstorage.NewStructStorage[Child](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixChildren), cacheProvider.CacheTime(cacheTime), objectstorage.PartitionKey(BlockIDLength, ChildTypeLength, BlockIDLength), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
+ missingBlockStorage: objectstorage.NewStructStorage[MissingBlock](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMissingBlock), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
+ attachmentStorage: objectstorage.NewStructStorage[Attachment](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixAttachments), cacheProvider.CacheTime(cacheTime), objectstorage.PartitionKey(new(Attachment).KeyPartitions()...), objectstorage.LeakDetectionEnabled(false), objectstorage.StoreOnCreation(true)),
+ markerIndexConflictIDMappingStorage: objectstorage.NewStructStorage[MarkerIndexConflictIDMapping](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMarkerConflictIDMapping), cacheProvider.CacheTime(cacheTime), objectstorage.LeakDetectionEnabled(false)),
+ conflictVotersStorage: objectstorage.NewStructStorage[ConflictVoters](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixConflictVoters), cacheProvider.CacheTime(approvalWeightCacheTime), objectstorage.LeakDetectionEnabled(false)),
+ latestConflictVotesStorage: objectstorage.NewStructStorage[LatestConflictVotes](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixLatestConflictVotes), cacheProvider.CacheTime(approvalWeightCacheTime), objectstorage.LeakDetectionEnabled(false)),
+ latestMarkerVotesStorage: objectstorage.NewStructStorage[LatestMarkerVotes](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixLatestMarkerVotes), cacheProvider.CacheTime(approvalWeightCacheTime), LatestMarkerVotesKeyPartition, objectstorage.LeakDetectionEnabled(false)),
+ conflictWeightStorage: objectstorage.NewStructStorage[ConflictWeight](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixConflictWeight), cacheProvider.CacheTime(approvalWeightCacheTime), objectstorage.LeakDetectionEnabled(false)),
+ markerBlockMappingStorage: objectstorage.NewStructStorage[MarkerBlockMapping](objectstorage.NewStoreWithRealm(tangle.Options.Store, database.PrefixTangle, PrefixMarkerBlockMapping), cacheProvider.CacheTime(cacheTime), MarkerBlockMappingPartitionKeys, objectstorage.StoreOnCreation(true)),
Events: newStorageEvents(),
}
@@ -109,91 +109,91 @@ func NewStorage(tangle *Tangle) (storage *Storage) {
// Setup sets up the behavior of the component by making it attach to the relevant events of other components.
func (s *Storage) Setup() {
- s.tangle.Parser.Events.MessageParsed.Hook(event.NewClosure(func(event *MessageParsedEvent) {
- s.tangle.Storage.StoreMessage(event.Message)
+ s.tangle.Parser.Events.BlockParsed.Hook(event.NewClosure(func(event *BlockParsedEvent) {
+ s.tangle.Storage.StoreBlock(event.Block)
}))
}
-// StoreMessage stores a new message to the message store.
-func (s *Storage) StoreMessage(message *Message) {
- // retrieve MessageID
- messageID := message.ID()
+// StoreBlock stores a new block to the block store.
+func (s *Storage) StoreBlock(block *Block) {
+ // retrieve BlockID
+ blockID := block.ID()
- // store Messages only once by using the existence of the Metadata as a guard
- storedMetadata, stored := s.messageMetadataStorage.StoreIfAbsent(NewMessageMetadata(messageID))
+ // store Blocks only once by using the existence of the Metadata as a guard
+ storedMetadata, stored := s.blockMetadataStorage.StoreIfAbsent(NewBlockMetadata(blockID))
if !stored {
return
}
- // create typed version of the stored MessageMetadata
- cachedMsgMetadata := storedMetadata
- defer cachedMsgMetadata.Release()
+ // create typed version of the stored BlockMetadata
+ cachedBlkMetadata := storedMetadata
+ defer cachedBlkMetadata.Release()
- // store Message
- cachedMessage := s.messageStorage.Store(message)
- defer cachedMessage.Release()
+ // store Block
+ cachedBlock := s.blockStorage.Store(block)
+ defer cachedBlock.Release()
- message.ForEachParent(func(parent Parent) {
- s.approverStorage.Store(NewApprover(ParentTypeToApproverType[parent.Type], parent.ID, messageID)).Release()
+ block.ForEachParent(func(parent Parent) {
+ s.childStorage.Store(NewChild(ParentTypeToChildType[parent.Type], parent.ID, blockID)).Release()
})
// trigger events
- if s.missingMessageStorage.DeleteIfPresent(messageID.Bytes()) {
- s.tangle.Storage.Events.MissingMessageStored.Trigger(&MissingMessageStoredEvent{messageID})
+ if s.missingBlockStorage.DeleteIfPresent(blockID.Bytes()) {
+ s.tangle.Storage.Events.MissingBlockStored.Trigger(&MissingBlockStoredEvent{blockID})
}
- // messages are stored, trigger MessageStored event to move on next check
- s.Events.MessageStored.Trigger(&MessageStoredEvent{message})
+ // blocks are stored, trigger BlockStored event to move on next check
+ s.Events.BlockStored.Trigger(&BlockStoredEvent{block})
}
-// Message retrieves a message from the message store.
-func (s *Storage) Message(messageID MessageID) *objectstorage.CachedObject[*Message] {
- return s.messageStorage.Load(messageID.Bytes())
+// Block retrieves a block from the block store.
+func (s *Storage) Block(blockID BlockID) *objectstorage.CachedObject[*Block] {
+ return s.blockStorage.Load(blockID.Bytes())
}
-// MessageMetadata retrieves the MessageMetadata with the given MessageID.
-func (s *Storage) MessageMetadata(messageID MessageID, computeIfAbsentCallback ...func() *MessageMetadata) *objectstorage.CachedObject[*MessageMetadata] {
+// BlockMetadata retrieves the BlockMetadata with the given BlockID.
+func (s *Storage) BlockMetadata(blockID BlockID, computeIfAbsentCallback ...func() *BlockMetadata) *objectstorage.CachedObject[*BlockMetadata] {
if len(computeIfAbsentCallback) >= 1 {
- return s.messageMetadataStorage.ComputeIfAbsent(messageID.Bytes(), func(key []byte) *MessageMetadata {
+ return s.blockMetadataStorage.ComputeIfAbsent(blockID.Bytes(), func(key []byte) *BlockMetadata {
return computeIfAbsentCallback[0]()
})
}
- return s.messageMetadataStorage.Load(messageID.Bytes())
+ return s.blockMetadataStorage.Load(blockID.Bytes())
}
-// Approvers retrieves the Approvers of a Message from the object storage. It is possible to provide an optional
-// ApproverType to only return the corresponding Approvers.
-func (s *Storage) Approvers(messageID MessageID, optionalApproverType ...ApproverType) (cachedApprovers objectstorage.CachedObjects[*Approver]) {
+// Children retrieves the Children of a Block from the object storage. It is possible to provide an optional
+// ChildType to only return the corresponding Children.
+func (s *Storage) Children(blockID BlockID, optionalChildType ...ChildType) (cachedChildren objectstorage.CachedObjects[*Child]) {
var iterationPrefix []byte
- if len(optionalApproverType) >= 1 {
- iterationPrefix = byteutils.ConcatBytes(messageID.Bytes(), optionalApproverType[0].Bytes())
+ if len(optionalChildType) >= 1 {
+ iterationPrefix = byteutils.ConcatBytes(blockID.Bytes(), optionalChildType[0].Bytes())
} else {
- iterationPrefix = messageID.Bytes()
+ iterationPrefix = blockID.Bytes()
}
- cachedApprovers = make(objectstorage.CachedObjects[*Approver], 0)
- s.approverStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*Approver]) bool {
- cachedApprovers = append(cachedApprovers, cachedObject)
+ cachedChildren = make(objectstorage.CachedObjects[*Child], 0)
+ s.childStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*Child]) bool {
+ cachedChildren = append(cachedChildren, cachedObject)
return true
}, objectstorage.WithIteratorPrefix(iterationPrefix))
return
}
-// StoreMissingMessage stores a new MissingMessage entry in the object storage.
-func (s *Storage) StoreMissingMessage(missingMessage *MissingMessage) (cachedMissingMessage *objectstorage.CachedObject[*MissingMessage], stored bool) {
- cachedObject, stored := s.missingMessageStorage.StoreIfAbsent(missingMessage)
- cachedMissingMessage = cachedObject
+// StoreMissingBlock stores a new MissingBlock entry in the object storage.
+func (s *Storage) StoreMissingBlock(missingBlock *MissingBlock) (cachedMissingBlock *objectstorage.CachedObject[*MissingBlock], stored bool) {
+ cachedObject, stored := s.missingBlockStorage.StoreIfAbsent(missingBlock)
+ cachedMissingBlock = cachedObject
return
}
-// MissingMessages return the ids of messages in missingMessageStorage
-func (s *Storage) MissingMessages() (ids []MessageID) {
- s.missingMessageStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MissingMessage]) bool {
- cachedObject.Consume(func(object *MissingMessage) {
- ids = append(ids, object.MessageID())
+// MissingBlocks return the ids of blocks in missingBlockStorage
+func (s *Storage) MissingBlocks() (ids []BlockID) {
+ s.missingBlockStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MissingBlock]) bool {
+ cachedObject.Consume(func(object *MissingBlock) {
+ ids = append(ids, object.BlockID())
})
return true
@@ -202,8 +202,8 @@ func (s *Storage) MissingMessages() (ids []MessageID) {
}
// StoreAttachment stores a new attachment if not already stored.
-func (s *Storage) StoreAttachment(transactionID utxo.TransactionID, messageID MessageID) (cachedAttachment *objectstorage.CachedObject[*Attachment], stored bool) {
- return s.attachmentStorage.StoreIfAbsent(NewAttachment(transactionID, messageID))
+func (s *Storage) StoreAttachment(transactionID utxo.TransactionID, blockID BlockID) (cachedAttachment *objectstorage.CachedObject[*Attachment], stored bool) {
+ return s.attachmentStorage.StoreIfAbsent(NewAttachment(transactionID, blockID))
}
// Attachments retrieves the attachment of a transaction in attachmentStorage.
@@ -215,97 +215,97 @@ func (s *Storage) Attachments(transactionID utxo.TransactionID) (cachedAttachmen
return
}
-// AttachmentMessageIDs returns the messageIDs of the transaction in attachmentStorage.
-func (s *Storage) AttachmentMessageIDs(transactionID utxo.TransactionID) (messageIDs MessageIDs) {
- messageIDs = NewMessageIDs()
+// AttachmentBlockIDs returns the blockIDs of the transaction in attachmentStorage.
+func (s *Storage) AttachmentBlockIDs(transactionID utxo.TransactionID) (blockIDs BlockIDs) {
+ blockIDs = NewBlockIDs()
s.Attachments(transactionID).Consume(func(attachment *Attachment) {
- messageIDs.Add(attachment.MessageID())
+ blockIDs.Add(attachment.BlockID())
})
return
}
-// IsTransactionAttachedByMessage checks whether Transaction with transactionID is attached by Message with messageID.
-func (s *Storage) IsTransactionAttachedByMessage(transactionID utxo.TransactionID, messageID MessageID) (attached bool) {
- return s.attachmentStorage.Contains(NewAttachment(transactionID, messageID).ObjectStorageKey())
+// IsTransactionAttachedByBlock checks whether Transaction with transactionID is attached by Block with blockID.
+func (s *Storage) IsTransactionAttachedByBlock(transactionID utxo.TransactionID, blockID BlockID) (attached bool) {
+ return s.attachmentStorage.Contains(NewAttachment(transactionID, blockID).ObjectStorageKey())
}
-// DeleteMessage deletes a message and its association to approvees by un-marking the given
-// message as an approver.
-func (s *Storage) DeleteMessage(messageID MessageID) {
- s.Message(messageID).Consume(func(currentMsg *Message) {
- currentMsg.ForEachParent(func(parent Parent) {
- s.deleteApprover(parent, messageID)
+// DeleteBlock deletes a block and its association to parents by un-marking the given
+// block as an child.
+func (s *Storage) DeleteBlock(blockID BlockID) {
+ s.Block(blockID).Consume(func(currentBlk *Block) {
+ currentBlk.ForEachParent(func(parent Parent) {
+ s.deleteChild(parent, blockID)
})
- s.messageMetadataStorage.Delete(messageID.Bytes())
- s.messageStorage.Delete(messageID.Bytes())
+ s.blockMetadataStorage.Delete(blockID.Bytes())
+ s.blockStorage.Delete(blockID.Bytes())
- s.Events.MessageRemoved.Trigger(&MessageRemovedEvent{messageID})
+ s.Events.BlockRemoved.Trigger(&BlockRemovedEvent{blockID})
})
}
-// DeleteMissingMessage deletes a message from the missingMessageStorage.
-func (s *Storage) DeleteMissingMessage(messageID MessageID) {
- s.missingMessageStorage.Delete(messageID.Bytes())
+// DeleteMissingBlock deletes a block from the missingBlockStorage.
+func (s *Storage) DeleteMissingBlock(blockID BlockID) {
+ s.missingBlockStorage.Delete(blockID.Bytes())
}
-// MarkerIndexBranchIDMapping retrieves the MarkerIndexBranchIDMapping for the given SequenceID. It accepts an optional
-// computeIfAbsent callback that can be used to dynamically create a MarkerIndexBranchIDMapping if it doesn't exist,
+// MarkerIndexConflictIDMapping retrieves the MarkerIndexConflictIDMapping for the given SequenceID. It accepts an optional
+// computeIfAbsent callback that can be used to dynamically create a MarkerIndexConflictIDMapping if it doesn't exist,
// yet.
-func (s *Storage) MarkerIndexBranchIDMapping(sequenceID markers.SequenceID, computeIfAbsentCallback ...func(sequenceID markers.SequenceID) *MarkerIndexBranchIDMapping) *objectstorage.CachedObject[*MarkerIndexBranchIDMapping] {
+func (s *Storage) MarkerIndexConflictIDMapping(sequenceID markers.SequenceID, computeIfAbsentCallback ...func(sequenceID markers.SequenceID) *MarkerIndexConflictIDMapping) *objectstorage.CachedObject[*MarkerIndexConflictIDMapping] {
if len(computeIfAbsentCallback) >= 1 {
- return s.markerIndexBranchIDMappingStorage.ComputeIfAbsent(sequenceID.Bytes(), func(key []byte) *MarkerIndexBranchIDMapping {
+ return s.markerIndexConflictIDMappingStorage.ComputeIfAbsent(sequenceID.Bytes(), func(key []byte) *MarkerIndexConflictIDMapping {
return computeIfAbsentCallback[0](sequenceID)
})
}
- return s.markerIndexBranchIDMappingStorage.Load(sequenceID.Bytes())
+ return s.markerIndexConflictIDMappingStorage.Load(sequenceID.Bytes())
}
-// StoreMarkerMessageMapping stores a MarkerMessageMapping in the underlying object storage.
-func (s *Storage) StoreMarkerMessageMapping(markerMessageMapping *MarkerMessageMapping) {
- s.markerMessageMappingStorage.Store(markerMessageMapping).Release()
+// StoreMarkerBlockMapping stores a MarkerBlockMapping in the underlying object storage.
+func (s *Storage) StoreMarkerBlockMapping(markerBlockMapping *MarkerBlockMapping) {
+ s.markerBlockMappingStorage.Store(markerBlockMapping).Release()
}
-// DeleteMarkerMessageMapping deleted a MarkerMessageMapping in the underlying object storage.
-func (s *Storage) DeleteMarkerMessageMapping(branchID utxo.TransactionID, messageID MessageID) {
- s.markerMessageMappingStorage.Delete(byteutils.ConcatBytes(branchID.Bytes(), messageID.Bytes()))
+// DeleteMarkerBlockMapping deleted a MarkerBlockMapping in the underlying object storage.
+func (s *Storage) DeleteMarkerBlockMapping(conflictID utxo.TransactionID, blockID BlockID) {
+ s.markerBlockMappingStorage.Delete(byteutils.ConcatBytes(conflictID.Bytes(), blockID.Bytes()))
}
-// MarkerMessageMapping retrieves the MarkerMessageMapping associated with the given details.
-func (s *Storage) MarkerMessageMapping(marker markers.Marker) (cachedMarkerMessageMappings *objectstorage.CachedObject[*MarkerMessageMapping]) {
- return s.markerMessageMappingStorage.Load(marker.Bytes())
+// MarkerBlockMapping retrieves the MarkerBlockMapping associated with the given details.
+func (s *Storage) MarkerBlockMapping(marker markers.Marker) (cachedMarkerBlockMappings *objectstorage.CachedObject[*MarkerBlockMapping]) {
+ return s.markerBlockMappingStorage.Load(marker.Bytes())
}
-// MarkerMessageMappings retrieves the MarkerMessageMappings of a Sequence in the object storage.
-func (s *Storage) MarkerMessageMappings(sequenceID markers.SequenceID) (cachedMarkerMessageMappings objectstorage.CachedObjects[*MarkerMessageMapping]) {
- s.markerMessageMappingStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MarkerMessageMapping]) bool {
- cachedMarkerMessageMappings = append(cachedMarkerMessageMappings, cachedObject)
+// MarkerBlockMappings retrieves the MarkerBlockMappings of a Sequence in the object storage.
+func (s *Storage) MarkerBlockMappings(sequenceID markers.SequenceID) (cachedMarkerBlockMappings objectstorage.CachedObjects[*MarkerBlockMapping]) {
+ s.markerBlockMappingStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MarkerBlockMapping]) bool {
+ cachedMarkerBlockMappings = append(cachedMarkerBlockMappings, cachedObject)
return true
}, objectstorage.WithIteratorPrefix(sequenceID.Bytes()))
return
}
-// BranchVoters retrieves the BranchVoters with the given ledger.BranchID.
-func (s *Storage) BranchVoters(branchID utxo.TransactionID, computeIfAbsentCallback ...func(branchID utxo.TransactionID) *BranchVoters) *objectstorage.CachedObject[*BranchVoters] {
+// ConflictVoters retrieves the ConflictVoters with the given ledger.ConflictID.
+func (s *Storage) ConflictVoters(conflictID utxo.TransactionID, computeIfAbsentCallback ...func(conflictID utxo.TransactionID) *ConflictVoters) *objectstorage.CachedObject[*ConflictVoters] {
if len(computeIfAbsentCallback) >= 1 {
- return s.branchVotersStorage.ComputeIfAbsent(branchID.Bytes(), func(key []byte) *BranchVoters {
- return computeIfAbsentCallback[0](branchID)
+ return s.conflictVotersStorage.ComputeIfAbsent(conflictID.Bytes(), func(key []byte) *ConflictVoters {
+ return computeIfAbsentCallback[0](conflictID)
})
}
- return s.branchVotersStorage.Load(branchID.Bytes())
+ return s.conflictVotersStorage.Load(conflictID.Bytes())
}
-// LatestBranchVotes retrieves the LatestBranchVotes of the given Voter.
-func (s *Storage) LatestBranchVotes(voter Voter, computeIfAbsentCallback ...func(voter Voter) *LatestBranchVotes) *objectstorage.CachedObject[*LatestBranchVotes] {
+// LatestConflictVotes retrieves the LatestConflictVotes of the given Voter.
+func (s *Storage) LatestConflictVotes(voter Voter, computeIfAbsentCallback ...func(voter Voter) *LatestConflictVotes) *objectstorage.CachedObject[*LatestConflictVotes] {
if len(computeIfAbsentCallback) >= 1 {
- return s.latestBranchVotesStorage.ComputeIfAbsent(byteutils.ConcatBytes(voter.Bytes()), func(key []byte) *LatestBranchVotes {
+ return s.latestConflictVotesStorage.ComputeIfAbsent(byteutils.ConcatBytes(voter.Bytes()), func(key []byte) *LatestConflictVotes {
return computeIfAbsentCallback[0](voter)
})
}
- return s.latestBranchVotesStorage.Load(byteutils.ConcatBytes(voter.Bytes()))
+ return s.latestConflictVotesStorage.Load(byteutils.ConcatBytes(voter.Bytes()))
}
// LatestMarkerVotes retrieves the LatestMarkerVotes of the given voter for the named Sequence.
@@ -334,51 +334,51 @@ func (s *Storage) AllLatestMarkerVotes(sequenceID markers.SequenceID) (cachedLat
return cachedLatestMarkerVotesByVoter
}
-// BranchWeight retrieves the BranchWeight with the given BranchID.
-func (s *Storage) BranchWeight(branchID utxo.TransactionID, computeIfAbsentCallback ...func(branchID utxo.TransactionID) *BranchWeight) *objectstorage.CachedObject[*BranchWeight] {
+// ConflictWeight retrieves the ConflictWeight with the given ConflictID.
+func (s *Storage) ConflictWeight(conflictID utxo.TransactionID, computeIfAbsentCallback ...func(conflictID utxo.TransactionID) *ConflictWeight) *objectstorage.CachedObject[*ConflictWeight] {
if len(computeIfAbsentCallback) >= 1 {
- return s.branchWeightStorage.ComputeIfAbsent(branchID.Bytes(), func(key []byte) *BranchWeight {
- return computeIfAbsentCallback[0](branchID)
+ return s.conflictWeightStorage.ComputeIfAbsent(conflictID.Bytes(), func(key []byte) *ConflictWeight {
+ return computeIfAbsentCallback[0](conflictID)
})
}
- return s.branchWeightStorage.Load(branchID.Bytes())
+ return s.conflictWeightStorage.Load(conflictID.Bytes())
}
func (s *Storage) storeGenesis() {
- s.MessageMetadata(EmptyMessageID, func() *MessageMetadata {
- genesisMetadata := model.NewStorable[MessageID, MessageMetadata](&messageMetadataModel{
- AddedBranchIDs: utxo.NewTransactionIDs(),
- SubtractedBranchIDs: utxo.NewTransactionIDs(),
- SolidificationTime: clock.SyncedTime().Add(time.Duration(-20) * time.Minute),
- Solid: true,
- StructureDetails: markers.NewStructureDetails(),
- Scheduled: true,
- Booked: true,
+ s.BlockMetadata(EmptyBlockID, func() *BlockMetadata {
+ genesisMetadata := model.NewStorable[BlockID, BlockMetadata](&blockMetadataModel{
+ AddedConflictIDs: utxo.NewTransactionIDs(),
+ SubtractedConflictIDs: utxo.NewTransactionIDs(),
+ SolidificationTime: clock.SyncedTime().Add(time.Duration(-20) * time.Minute),
+ Solid: true,
+ StructureDetails: markers.NewStructureDetails(),
+ Scheduled: true,
+ Booked: true,
})
- genesisMetadata.SetID(EmptyMessageID)
+ genesisMetadata.SetID(EmptyBlockID)
return genesisMetadata
}).Release()
}
-// deleteApprover deletes the Approver from the object storage that was created by the specified parent.
-func (s *Storage) deleteApprover(parent Parent, approvingMessage MessageID) {
- s.approverStorage.Delete(byteutils.ConcatBytes(parent.ID.Bytes(), ParentTypeToApproverType[parent.Type].Bytes(), approvingMessage.Bytes()))
+// deleteChild deletes the Child from the object storage that was created by the specified parent.
+func (s *Storage) deleteChild(parent Parent, approvingBlock BlockID) {
+ s.childStorage.Delete(byteutils.ConcatBytes(parent.ID.Bytes(), ParentTypeToChildType[parent.Type].Bytes(), approvingBlock.Bytes()))
}
-// Shutdown marks the tangle as stopped, so it will not accept any new messages (waits for all backgroundTasks to finish).
+// Shutdown marks the tangle as stopped, so it will not accept any new blocks (waits for all backgroundTasks to finish).
func (s *Storage) Shutdown() {
- s.messageStorage.Shutdown()
- s.messageMetadataStorage.Shutdown()
- s.approverStorage.Shutdown()
- s.missingMessageStorage.Shutdown()
+ s.blockStorage.Shutdown()
+ s.blockMetadataStorage.Shutdown()
+ s.childStorage.Shutdown()
+ s.missingBlockStorage.Shutdown()
s.attachmentStorage.Shutdown()
- s.markerIndexBranchIDMappingStorage.Shutdown()
- s.branchVotersStorage.Shutdown()
- s.latestBranchVotesStorage.Shutdown()
+ s.markerIndexConflictIDMappingStorage.Shutdown()
+ s.conflictVotersStorage.Shutdown()
+ s.latestConflictVotesStorage.Shutdown()
s.latestMarkerVotesStorage.Shutdown()
- s.branchWeightStorage.Shutdown()
- s.markerMessageMappingStorage.Shutdown()
+ s.conflictWeightStorage.Shutdown()
+ s.markerBlockMappingStorage.Shutdown()
close(s.shutdown)
}
@@ -386,17 +386,17 @@ func (s *Storage) Shutdown() {
// Prune resets the database and deletes all objects (good for testing or "node resets").
func (s *Storage) Prune() error {
for _, storagePrune := range []func() error{
- s.messageStorage.Prune,
- s.messageMetadataStorage.Prune,
- s.approverStorage.Prune,
- s.missingMessageStorage.Prune,
+ s.blockStorage.Prune,
+ s.blockMetadataStorage.Prune,
+ s.childStorage.Prune,
+ s.missingBlockStorage.Prune,
s.attachmentStorage.Prune,
- s.markerIndexBranchIDMappingStorage.Prune,
- s.branchVotersStorage.Prune,
- s.latestBranchVotesStorage.Prune,
+ s.markerIndexConflictIDMappingStorage.Prune,
+ s.conflictVotersStorage.Prune,
+ s.latestConflictVotesStorage.Prune,
s.latestMarkerVotesStorage.Prune,
- s.branchWeightStorage.Prune,
- s.markerMessageMappingStorage.Prune,
+ s.conflictWeightStorage.Prune,
+ s.markerBlockMappingStorage.Prune,
} {
if err := storagePrune(); err != nil {
err = fmt.Errorf("failed to prune storage: %w", err)
@@ -419,55 +419,55 @@ type DBStatsResult struct {
SumBookedReceivedTime time.Duration
SumSchedulerReceivedTime time.Duration
SumSchedulerBookedTime time.Duration
- MissingMessageCount int
+ MissingBlockCount int
}
-// DBStats returns the number of solid messages and total number of messages in the database (messageMetadataStorage,
-// that should contain the messages as messageStorage), the number of messages in missingMessageStorage, furthermore
-// the average time it takes to solidify messages.
+// DBStats returns the number of solid blocks and total number of blocks in the database (blockMetadataStorage,
+// that should contain the blocks as blockStorage), the number of blocks in missingBlockStorage, furthermore
+// the average time it takes to solidify blocks.
func (s *Storage) DBStats() (res DBStatsResult) {
- s.messageMetadataStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MessageMetadata]) bool {
- cachedObject.Consume(func(msgMetaData *MessageMetadata) {
+ s.blockMetadataStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*BlockMetadata]) bool {
+ cachedObject.Consume(func(blkMetaData *BlockMetadata) {
res.StoredCount++
- received := msgMetaData.ReceivedTime()
- if msgMetaData.IsSolid() {
+ received := blkMetaData.ReceivedTime()
+ if blkMetaData.IsSolid() {
res.SolidCount++
- res.SumSolidificationReceivedTime += msgMetaData.SolidificationTime().Sub(received)
+ res.SumSolidificationReceivedTime += blkMetaData.SolidificationTime().Sub(received)
}
- if msgMetaData.IsBooked() {
+ if blkMetaData.IsBooked() {
res.BookedCount++
- res.SumBookedReceivedTime += msgMetaData.BookedTime().Sub(received)
+ res.SumBookedReceivedTime += blkMetaData.BookedTime().Sub(received)
}
- if msgMetaData.Scheduled() {
+ if blkMetaData.Scheduled() {
res.ScheduledCount++
- res.SumSchedulerReceivedTime += msgMetaData.ScheduledTime().Sub(received)
- res.SumSchedulerBookedTime += msgMetaData.ScheduledTime().Sub(msgMetaData.BookedTime())
+ res.SumSchedulerReceivedTime += blkMetaData.ScheduledTime().Sub(received)
+ res.SumSchedulerBookedTime += blkMetaData.ScheduledTime().Sub(blkMetaData.BookedTime())
}
})
return true
})
- s.missingMessageStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MissingMessage]) bool {
- cachedObject.Consume(func(object *MissingMessage) {
- res.MissingMessageCount++
+ s.missingBlockStorage.ForEach(func(key []byte, cachedObject *objectstorage.CachedObject[*MissingBlock]) bool {
+ cachedObject.Consume(func(object *MissingBlock) {
+ res.MissingBlockCount++
})
return true
})
return
}
-// RetrieveAllTips returns the tips (i.e., solid messages that are not part of the approvers list).
-// It iterates over the messageMetadataStorage, thus only use this method if necessary.
+// RetrieveAllTips returns the tips (i.e., solid blocks that are not part of the children list).
+// It iterates over the blockMetadataStorage, thus only use this method if necessary.
// TODO: improve this function.
-func (s *Storage) RetrieveAllTips() (tips []MessageID) {
- s.messageMetadataStorage.ForEach(func(key []byte, cachedMessage *objectstorage.CachedObject[*MessageMetadata]) bool {
- cachedMessage.Consume(func(messageMetadata *MessageMetadata) {
- if messageMetadata != nil && messageMetadata.IsSolid() {
- cachedApprovers := s.Approvers(messageMetadata.ID())
- if len(cachedApprovers) == 0 {
- tips = append(tips, messageMetadata.ID())
+func (s *Storage) RetrieveAllTips() (tips []BlockID) {
+ s.blockMetadataStorage.ForEach(func(key []byte, cachedBlock *objectstorage.CachedObject[*BlockMetadata]) bool {
+ cachedBlock.Consume(func(blockMetadata *BlockMetadata) {
+ if blockMetadata != nil && blockMetadata.IsSolid() {
+ cachedChildren := s.Children(blockMetadata.ID())
+ if len(cachedChildren) == 0 {
+ tips = append(tips, blockMetadata.ID())
}
- cachedApprovers.Release()
+ cachedChildren.Release()
}
})
return true
@@ -477,89 +477,89 @@ func (s *Storage) RetrieveAllTips() (tips []MessageID) {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region ApproverType /////////////////////////////////////////////////////////////////////////////////////////////////
+// region ChildType /////////////////////////////////////////////////////////////////////////////////////////////////
const (
- // StrongApprover is the ApproverType that represents references formed by strong parents.
- StrongApprover ApproverType = iota
+ // StrongChild is the ChildType that represents references formed by strong parents.
+ StrongChild ChildType = iota
- // WeakApprover is the ApproverType that represents references formed by weak parents.
- WeakApprover
+ // WeakChild is the ChildType that represents references formed by weak parents.
+ WeakChild
- // ShallowLikeApprover is the ApproverType that represents references formed by shallow like parents.
- ShallowLikeApprover
+ // ShallowLikeChild is the ChildType that represents references formed by shallow like parents.
+ ShallowLikeChild
)
-// ApproverTypeLength contains the amount of bytes that a marshaled version of the ApproverType contains.
-const ApproverTypeLength = 1
+// ChildTypeLength contains the amount of bytes that a marshaled version of the ChildType contains.
+const ChildTypeLength = 1
-// ApproverType is a type that represents the different kind of reverse mapping that we have for references formed by
+// ChildType is a type that represents the different kind of reverse mapping that we have for references formed by
// strong and weak parents.
-type ApproverType uint8
+type ChildType uint8
-// ParentTypeToApproverType represents a convenient mapping between a parent type and the approver type.
-var ParentTypeToApproverType = map[ParentsType]ApproverType{
- StrongParentType: StrongApprover,
- WeakParentType: WeakApprover,
- ShallowLikeParentType: ShallowLikeApprover,
+// ParentTypeToChildType represents a convenient mapping between a parent type and the child type.
+var ParentTypeToChildType = map[ParentsType]ChildType{
+ StrongParentType: StrongChild,
+ WeakParentType: WeakChild,
+ ShallowLikeParentType: ShallowLikeChild,
}
-// Bytes returns a marshaled version of the ApproverType.
-func (a ApproverType) Bytes() []byte {
+// Bytes returns a marshaled version of the ChildType.
+func (a ChildType) Bytes() []byte {
return []byte{byte(a)}
}
-// String returns a human readable version of the ApproverType.
-func (a ApproverType) String() string {
+// String returns a human readable version of the ChildType.
+func (a ChildType) String() string {
switch a {
- case StrongApprover:
- return "ApproverType(StrongApprover)"
- case WeakApprover:
- return "ApproverType(WeakApprover)"
- case ShallowLikeApprover:
- return "ApproverType(ShallowLikeApprover)"
+ case StrongChild:
+ return "ChildType(StrongChild)"
+ case WeakChild:
+ return "ChildType(WeakChild)"
+ case ShallowLikeChild:
+ return "ChildType(ShallowLikeChild)"
default:
- return fmt.Sprintf("ApproverType(%X)", uint8(a))
+ return fmt.Sprintf("ChildType(%X)", uint8(a))
}
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region Approver /////////////////////////////////////////////////////////////////////////////////////////////////////
+// region Child /////////////////////////////////////////////////////////////////////////////////////////////////////
-// Approver is an approver of a given referenced message.
-type Approver struct {
- model.StorableReference[Approver, *Approver, approverSourceModel, MessageID] `serix:"0"`
+// Child is an child of a given referenced block.
+type Child struct {
+ model.StorableReference[Child, *Child, childSourceModel, BlockID] `serix:"0"`
}
-type approverSourceModel struct {
- // the message which got referenced by the approver message.
- ReferencedMessageID MessageID `serix:"0"`
+type childSourceModel struct {
+ // the block which got referenced by the child block.
+ ReferencedBlockID BlockID `serix:"0"`
- // ApproverType defines if the reference was created by a strong, weak, shallowlike or shallowdislike parent reference.
- ApproverType ApproverType `serix:"1"`
+ // ChildType defines if the reference was created by a strong, weak, shallowlike or shallowdislike parent reference.
+ ChildType ChildType `serix:"1"`
}
-// NewApprover creates a new approver relation to the given approved/referenced message.
-func NewApprover(approverType ApproverType, referencedMessageID MessageID, approverMessageID MessageID) *Approver {
- return model.NewStorableReference[Approver](approverSourceModel{
- ReferencedMessageID: referencedMessageID,
- ApproverType: approverType,
- }, approverMessageID)
+// NewChild creates a new child relation to the given approved/referenced block.
+func NewChild(childType ChildType, referencedBlockID BlockID, childBlockID BlockID) *Child {
+ return model.NewStorableReference[Child](childSourceModel{
+ ReferencedBlockID: referencedBlockID,
+ ChildType: childType,
+ }, childBlockID)
}
-// Type returns the type of the Approver reference.
-func (a *Approver) Type() ApproverType {
- return a.SourceID().ApproverType
+// Type returns the type of the Child reference.
+func (a *Child) Type() ChildType {
+ return a.SourceID().ChildType
}
-// ReferencedMessageID returns the ID of the message which is referenced by the approver.
-func (a *Approver) ReferencedMessageID() MessageID {
- return a.SourceID().ReferencedMessageID
+// ReferencedBlockID returns the ID of the block which is referenced by the child.
+func (a *Child) ReferencedBlockID() BlockID {
+ return a.SourceID().ReferencedBlockID
}
-// ApproverMessageID returns the ID of the message which referenced the given approved message.
-func (a *Approver) ApproverMessageID() MessageID {
+// ChildBlockID returns the ID of the block which referenced the given approved block.
+func (a *Child) ChildBlockID() BlockID {
return a.TargetID()
}
@@ -567,15 +567,15 @@ func (a *Approver) ApproverMessageID() MessageID {
// region Attachment ///////////////////////////////////////////////////////////////////////////////////////////////////
-// Attachment stores the information which transaction was attached by which message. We need this to be able to perform
-// reverse lookups from transactions to their corresponding messages that attach them.
+// Attachment stores the information which transaction was attached by which block. We need this to be able to perform
+// reverse lookups from transactions to their corresponding blocks that attach them.
type Attachment struct {
- model.StorableReference[Attachment, *Attachment, utxo.TransactionID, MessageID] `serix:"0"`
+ model.StorableReference[Attachment, *Attachment, utxo.TransactionID, BlockID] `serix:"0"`
}
// NewAttachment creates an attachment object with the given information.
-func NewAttachment(transactionID utxo.TransactionID, messageID MessageID) *Attachment {
- return model.NewStorableReference[Attachment](transactionID, messageID)
+func NewAttachment(transactionID utxo.TransactionID, blockID BlockID) *Attachment {
+ return model.NewStorableReference[Attachment](transactionID, blockID)
}
// TransactionID returns the transactionID of this Attachment.
@@ -583,38 +583,38 @@ func (a *Attachment) TransactionID() utxo.TransactionID {
return a.SourceID()
}
-// MessageID returns the messageID of this Attachment.
-func (a *Attachment) MessageID() MessageID {
+// BlockID returns the blockID of this Attachment.
+func (a *Attachment) BlockID() BlockID {
return a.TargetID()
}
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MissingMessage ///////////////////////////////////////////////////////////////////////////////////////////////
+// region MissingBlock ///////////////////////////////////////////////////////////////////////////////////////////////
-// MissingMessage represents a missing message.
-type MissingMessage struct {
- model.Storable[MessageID, MissingMessage, *MissingMessage, time.Time] `serix:"0"`
+// MissingBlock represents a missing block.
+type MissingBlock struct {
+ model.Storable[BlockID, MissingBlock, *MissingBlock, time.Time] `serix:"0"`
}
-// NewMissingMessage creates new missing message with the specified messageID.
-func NewMissingMessage(messageID MessageID) *MissingMessage {
+// NewMissingBlock creates new missing block with the specified blockID.
+func NewMissingBlock(blockID BlockID) *MissingBlock {
now := time.Now()
- missingMessage := model.NewStorable[MessageID, MissingMessage](
+ missingBlock := model.NewStorable[BlockID, MissingBlock](
&now,
)
- missingMessage.SetID(messageID)
- return missingMessage
+ missingBlock.SetID(blockID)
+ return missingBlock
}
-// MessageID returns the id of the message.
-func (m *MissingMessage) MessageID() MessageID {
+// BlockID returns the id of the block.
+func (m *MissingBlock) BlockID() BlockID {
return m.ID()
}
-// MissingSince returns the time since when this message is missing.
-func (m *MissingMessage) MissingSince() time.Time {
+// MissingSince returns the time since when this block is missing.
+func (m *MissingBlock) MissingSince() time.Time {
m.RLock()
defer m.RUnlock()
return m.M
diff --git a/packages/tangle/storage_test.go b/packages/tangle/storage_test.go
index ecdda72d2d..544cb9c198 100644
--- a/packages/tangle/storage_test.go
+++ b/packages/tangle/storage_test.go
@@ -10,16 +10,16 @@ import (
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
)
-func TestMarkerIndexBranchIDMapping_Serialization(t *testing.T) {
- m := NewMarkerIndexBranchIDMapping(1)
+func TestMarkerIndexConflictIDMapping_Serialization(t *testing.T) {
+ m := NewMarkerIndexConflictIDMapping(1)
txID := utxo.NewTransactionID([]byte("1"))
txID.RegisterAlias("txID")
- m.SetBranchIDs(10, utxo.NewTransactionIDs(txID))
+ m.SetConflictIDs(10, utxo.NewTransactionIDs(txID))
- restored := new(MarkerIndexBranchIDMapping)
+ restored := new(MarkerIndexConflictIDMapping)
err := restored.FromBytes(lo.PanicOnErr(m.Bytes()))
assert.NoError(t, err)
- assert.Equal(t, m.BranchIDs(11), restored.BranchIDs(11))
+ assert.Equal(t, m.ConflictIDs(11), restored.ConflictIDs(11))
}
func TestStorage_StoreAttachment(t *testing.T) {
@@ -27,14 +27,14 @@ func TestStorage_StoreAttachment(t *testing.T) {
defer tangle.Shutdown()
transactionID := randomTransactionID()
- messageID := randomMessageID()
- cachedAttachment, stored := tangle.Storage.StoreAttachment(transactionID, messageID)
+ blockID := randomBlockID()
+ cachedAttachment, stored := tangle.Storage.StoreAttachment(transactionID, blockID)
cachedAttachment.Release()
assert.True(t, stored)
- cachedAttachment, stored = tangle.Storage.StoreAttachment(transactionID, randomMessageID())
+ cachedAttachment, stored = tangle.Storage.StoreAttachment(transactionID, randomBlockID())
assert.True(t, stored)
cachedAttachment.Release()
- cachedAttachment, stored = tangle.Storage.StoreAttachment(transactionID, messageID)
+ cachedAttachment, stored = tangle.Storage.StoreAttachment(transactionID, blockID)
assert.False(t, stored)
assert.Nil(t, cachedAttachment)
}
@@ -50,7 +50,7 @@ func TestStorage_Attachments(t *testing.T) {
// for every tx, store random number of attachments.
for j := 0; j < rand.Intn(5)+1; j++ {
attachments[transactionID]++
- cachedAttachment, _ := tangle.Storage.StoreAttachment(transactionID, randomMessageID())
+ cachedAttachment, _ := tangle.Storage.StoreAttachment(transactionID, randomBlockID())
cachedAttachment.Release()
}
}
diff --git a/packages/tangle/tangle.go b/packages/tangle/tangle.go
index 5bd24b4574..6134239d54 100644
--- a/packages/tangle/tangle.go
+++ b/packages/tangle/tangle.go
@@ -15,6 +15,7 @@ import (
"github.com/iotaledger/goshimmer/packages/conflictdag"
"github.com/iotaledger/goshimmer/packages/database"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/ledger"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
@@ -23,8 +24,6 @@ import (
)
const (
- // DefaultGenesisTime is the default time (Unix in seconds) of the genesis, i.e., the start of the epochs at 2021-03-19 9:00:00 UTC.
- DefaultGenesisTime int64 = 1616144400
// DefaultSyncTimeWindow is the default sync time window.
DefaultSyncTimeWindow = 2 * time.Minute
)
@@ -33,7 +32,7 @@ const (
// Tangle is the central data structure of the IOTA protocol.
type Tangle struct {
- dagMutex *syncutils.DAGMutex[MessageID]
+ dagMutex *syncutils.DAGMutex[BlockID]
Options *Options
Parser *Parser
@@ -47,7 +46,7 @@ type Tangle struct {
OTVConsensusManager *OTVConsensusManager
TipManager *TipManager
Requester *Requester
- MessageFactory *MessageFactory
+ BlockFactory *BlockFactory
Ledger *ledger.Ledger
Utils *Utils
WeightProvider WeightProvider
@@ -59,10 +58,9 @@ type Tangle struct {
// ConfirmationOracle answers questions about entities' confirmation.
type ConfirmationOracle interface {
IsMarkerConfirmed(marker markers.Marker) bool
- IsMessageConfirmed(msgID MessageID) bool
- IsBranchConfirmed(branchID utxo.TransactionID) bool
+ IsBlockConfirmed(blkID BlockID) bool
+ IsConflictConfirmed(conflictID utxo.TransactionID) bool
IsTransactionConfirmed(transactionID utxo.TransactionID) bool
- IsOutputConfirmed(outputID utxo.OutputID) bool
FirstUnconfirmedMarkerIndex(sequenceID markers.SequenceID) (unconfirmedMarkerIndex markers.Index)
Events() *ConfirmationEvents
}
@@ -70,12 +68,16 @@ type ConfirmationOracle interface {
// New is the constructor for the Tangle.
func New(options ...Option) (tangle *Tangle) {
tangle = &Tangle{
- dagMutex: syncutils.NewDAGMutex[MessageID](),
+ dagMutex: syncutils.NewDAGMutex[BlockID](),
Events: newEvents(),
}
tangle.Configure(options...)
+ if !tangle.Options.GenesisTime.IsZero() {
+ epoch.GenesisTime = tangle.Options.GenesisTime.Unix()
+ }
+
tangle.Parser = NewParser()
tangle.Storage = NewStorage(tangle)
tangle.Ledger = ledger.New(ledger.WithStore(tangle.Options.Store), ledger.WithVM(new(devnetvm.VM)), ledger.WithCacheTimeProvider(tangle.Options.CacheTimeProvider), ledger.WithConflictDAGOptions(tangle.Options.ConflictDAGOptions...))
@@ -88,7 +90,7 @@ func New(options ...Option) (tangle *Tangle) {
tangle.TimeManager = NewTimeManager(tangle)
tangle.Requester = NewRequester(tangle)
tangle.TipManager = NewTipManager(tangle)
- tangle.MessageFactory = NewMessageFactory(tangle, tangle.TipManager)
+ tangle.BlockFactory = NewBlockFactory(tangle, tangle.TipManager)
tangle.Utils = NewUtils(tangle)
tangle.WeightProvider = tangle.Options.WeightProvider
@@ -125,8 +127,8 @@ func (t *Tangle) Setup() {
t.TimeManager.Setup()
t.TipManager.Setup()
- t.MessageFactory.Events.Error.Attach(event.NewClosure(func(err error) {
- t.Events.Error.Trigger(errors.Errorf("error in MessageFactory: %w", err))
+ t.BlockFactory.Events.Error.Attach(event.NewClosure(func(err error) {
+ t.Events.Error.Trigger(errors.Errorf("error in BlockFactory: %w", err))
}))
t.Booker.Events.Error.Attach(event.NewClosure(func(err error) {
@@ -142,21 +144,22 @@ func (t *Tangle) Setup() {
}))
}
-// ProcessGossipMessage is used to feed new Messages from the gossip layer into the Tangle.
-func (t *Tangle) ProcessGossipMessage(messageBytes []byte, peer *peer.Peer) {
- t.Parser.Parse(messageBytes, peer)
+// ProcessGossipBlock is used to feed new Blocks from the gossip layer into the Tangle.
+func (t *Tangle) ProcessGossipBlock(blockBytes []byte, peer *peer.Peer) {
+ t.Parser.Parse(blockBytes, peer)
}
// IssuePayload allows to attach a payload (i.e. a Transaction) to the Tangle.
-func (t *Tangle) IssuePayload(p payload.Payload, parentsCount ...int) (message *Message, err error) {
+func (t *Tangle) IssuePayload(p payload.Payload, parentsCount ...int) (block *Block, err error) {
+ // TODO: after breaking up the tangle package, this needs to use bootstrapmanager.Boostrapped() instead. Currently needs to use this one because the bootstrapmanager is not available here.
if !t.Bootstrapped() {
err = errors.Errorf("can't issue payload: %w", ErrNotBootstrapped)
return
}
- return t.MessageFactory.IssuePayload(p, parentsCount...)
+ return t.BlockFactory.IssuePayload(p, parentsCount...)
}
-// Bootstrapped returns a boolean value that indicates if the node has bootstrapped and the Tangle has solidified all messages
+// Bootstrapped returns a boolean value that indicates if the node has bootstrapped and the Tangle has solidified all blocks
// until the genesis.
func (t *Tangle) Bootstrapped() bool {
return t.TimeManager.Bootstrapped()
@@ -172,11 +175,11 @@ func (t *Tangle) Prune() (err error) {
return t.Storage.Prune()
}
-// Shutdown marks the tangle as stopped, so it will not accept any new messages (waits for all backgroundTasks to finish).
+// Shutdown marks the tangle as stopped, so it will not accept any new blocks (waits for all backgroundTasks to finish).
func (t *Tangle) Shutdown() {
t.Requester.Shutdown()
t.Parser.Shutdown()
- t.MessageFactory.Shutdown()
+ t.BlockFactory.Shutdown()
t.RateSetter.Shutdown()
t.Scheduler.Shutdown()
t.Booker.Shutdown()
@@ -214,6 +217,8 @@ type Options struct {
TimeSinceConfirmationThreshold time.Duration
StartSynced bool
CacheTimeProvider *database.CacheTimeProvider
+ CommitmentFunc func() (ecRecord *epoch.ECRecord, lastConfirmedEpochIndex epoch.Index, err error)
+ GenesisTime time.Time
}
// Store is an Option for the Tangle that allows to specify which storage layer is supposed to be used to persist data.
@@ -223,7 +228,7 @@ func Store(store kvstore.KVStore) Option {
}
}
-// Identity is an Option for the Tangle that allows to specify the node identity which is used to issue Messages.
+// Identity is an Option for the Tangle that allows to specify the node identity which is used to issue Blocks.
func Identity(identity *identity.LocalIdentity) Option {
return func(options *Options) {
options.Identity = identity
@@ -253,7 +258,7 @@ func TimeSinceConfirmationThreshold(tscThreshold time.Duration) Option {
}
// GenesisNode is an Option for the Tangle that allows to set the GenesisNode, i.e., the node that is allowed to attach
-// to the Genesis Message.
+// to the Genesis Block.
func GenesisNode(genesisNodeBase58 string) Option {
var genesisPublicKey *ed25519.PublicKey
pkBytes, _ := base58.Decode(genesisNodeBase58)
@@ -281,13 +286,20 @@ func RateSetterConfig(params RateSetterParams) Option {
}
}
-// ApprovalWeights is an Option for the Tangle that allows to define how the approval weights of Messages is determined.
+// ApprovalWeights is an Option for the Tangle that allows to define how the approval weights of Blocks is determined.
func ApprovalWeights(weightProvider WeightProvider) Option {
return func(options *Options) {
options.WeightProvider = weightProvider
}
}
+// GenesisTime is an Option for the Tangle that allows to set the genesis time.
+func GenesisTime(genesisTime time.Time) Option {
+ return func(options *Options) {
+ options.GenesisTime = genesisTime
+ }
+}
+
// SyncTimeWindow is an Option for the Tangle that allows to define the time window in which the node will consider
// itself in sync.
func SyncTimeWindow(syncTimeWindow time.Duration) Option {
@@ -311,9 +323,16 @@ func CacheTimeProvider(cacheTimeProvider *database.CacheTimeProvider) Option {
}
// WithConflictDAGOptions is an Option for the Tangle that allows to set the ConflictDAG options.
-func WithConflictDAGOptions(branchDAGOptions ...conflictdag.Option) Option {
+func WithConflictDAGOptions(conflictDAGOptions ...conflictdag.Option) Option {
+ return func(o *Options) {
+ o.ConflictDAGOptions = conflictDAGOptions
+ }
+}
+
+// CommitmentFunc is an Option for the Tangle that retrieves epoch commitments for blocks.
+func CommitmentFunc(commitmentRetrieverFunc func() (*epoch.ECRecord, epoch.Index, error)) Option {
return func(o *Options) {
- o.ConflictDAGOptions = branchDAGOptions
+ o.CommitmentFunc = commitmentRetrieverFunc
}
}
@@ -321,14 +340,14 @@ func WithConflictDAGOptions(branchDAGOptions ...conflictdag.Option) Option {
// region WeightProvider //////////////////////////////////////////////////////////////////////////////////////////////////////
-// WeightProvider is an interface that allows the ApprovalWeightManager to determine approval weights of Messages
+// WeightProvider is an interface that allows the ApprovalWeightManager to determine approval weights of Blocks
// in a flexible way, independently of a specific implementation.
type WeightProvider interface {
// Update updates the underlying data structure and keeps track of active nodes.
Update(t time.Time, nodeID identity.ID)
- // Weight returns the weight and total weight for the given message.
- Weight(message *Message) (weight, totalWeight float64)
+ // Weight returns the weight and total weight for the given block.
+ Weight(block *Block) (weight, totalWeight float64)
// WeightsOfRelevantVoters returns all relevant weights.
WeightsOfRelevantVoters() (weights map[identity.ID]float64, totalWeight float64)
diff --git a/packages/tangle/tangle_test.go b/packages/tangle/tangle_test.go
index 0ce4538803..9e312d7262 100644
--- a/packages/tangle/tangle_test.go
+++ b/packages/tangle/tangle_test.go
@@ -23,24 +23,25 @@ import (
"github.com/stretchr/testify/require"
"github.com/iotaledger/goshimmer/packages/consensus/otv"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/pow"
"github.com/iotaledger/goshimmer/packages/tangle/payload"
)
-func BenchmarkVerifyDataMessages(b *testing.B) {
+func BenchmarkVerifyDataBlocks(b *testing.B) {
tangle := NewTestTangle()
pool := workerpool.NewBlockingQueuedWorkerPool(workerpool.WorkerCount(runtime.GOMAXPROCS(0)))
- factory := NewMessageFactory(tangle, TipSelectorFunc(func(p payload.Payload, countParents int) (parents MessageIDs) {
- return NewMessageIDs(EmptyMessageID)
+ factory := NewBlockFactory(tangle, TipSelectorFunc(func(p payload.Payload, countParents int) (parents BlockIDs) {
+ return NewBlockIDs(EmptyBlockID)
}), emptyLikeReferences)
- messages := make([][]byte, b.N)
+ blocks := make([][]byte, b.N)
for i := 0; i < b.N; i++ {
- msg, err := factory.IssuePayload(payload.NewGenericDataPayload([]byte("some data")))
+ blk, err := factory.IssuePayload(payload.NewGenericDataPayload([]byte("some data")))
require.NoError(b, err)
- messages[i] = lo.PanicOnErr(msg.Bytes())
+ blocks[i] = lo.PanicOnErr(blk.Bytes())
}
b.ResetTimer()
@@ -48,11 +49,11 @@ func BenchmarkVerifyDataMessages(b *testing.B) {
for i := 0; i < b.N; i++ {
currentIndex := i
pool.Submit(func() {
- var msg *Message
- if err := msg.FromBytes(messages[currentIndex]); err != nil {
+ var blk *Block
+ if err := blk.FromBytes(blocks[currentIndex]); err != nil {
b.Error(err)
} else {
- if _, err := msg.VerifySignature(); err != nil {
+ if _, err := blk.VerifySignature(); err != nil {
b.Error(err)
}
}
@@ -67,16 +68,16 @@ func BenchmarkVerifySignature(b *testing.B) {
pool, _ := ants.NewPool(80, ants.WithNonblocking(false))
- factory := NewMessageFactory(tangle, TipSelectorFunc(func(p payload.Payload, countStrongParents int) (parents MessageIDs) {
- return NewMessageIDs(EmptyMessageID)
+ factory := NewBlockFactory(tangle, TipSelectorFunc(func(p payload.Payload, countStrongParents int) (parents BlockIDs) {
+ return NewBlockIDs(EmptyBlockID)
}), emptyLikeReferences)
- messages := make([]*Message, b.N)
+ blocks := make([]*Block, b.N)
for i := 0; i < b.N; i++ {
- msg, err := factory.IssuePayload(payload.NewGenericDataPayload([]byte("some data")))
+ blk, err := factory.IssuePayload(payload.NewGenericDataPayload([]byte("some data")))
require.NoError(b, err)
- messages[i] = msg
- messages[i].Bytes()
+ blocks[i] = blk
+ blocks[i].Bytes()
}
b.ResetTimer()
@@ -86,7 +87,7 @@ func BenchmarkVerifySignature(b *testing.B) {
currentIndex := i
if err := pool.Submit(func() {
- messages[currentIndex].VerifySignature()
+ blocks[currentIndex].VerifySignature()
wg.Done()
}); err != nil {
b.Error(err)
@@ -97,7 +98,7 @@ func BenchmarkVerifySignature(b *testing.B) {
wg.Wait()
}
-func BenchmarkTangle_StoreMessage(b *testing.B) {
+func BenchmarkTangle_StoreBlock(b *testing.B) {
tangle := NewTestTangle()
defer tangle.Shutdown()
if err := tangle.Prune(); err != nil {
@@ -106,149 +107,149 @@ func BenchmarkTangle_StoreMessage(b *testing.B) {
return
}
- messageBytes := make([]*Message, b.N)
+ blockBytes := make([]*Block, b.N)
for i := 0; i < b.N; i++ {
- messageBytes[i] = newTestDataMessage("some data")
- messageBytes[i].Bytes()
+ blockBytes[i] = newTestDataBlock("some data")
+ blockBytes[i].Bytes()
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
- tangle.Storage.StoreMessage(messageBytes[i])
+ tangle.Storage.StoreBlock(blockBytes[i])
}
}
-func TestTangle_InvalidParentsAgeMessage(t *testing.T) {
- messageTangle := NewTestTangle()
- messageTangle.Storage.Setup()
- messageTangle.Solidifier.Setup()
- defer messageTangle.Shutdown()
+func TestTangle_InvalidParentsAgeBlock(t *testing.T) {
+ blockTangle := NewTestTangle()
+ blockTangle.Storage.Setup()
+ blockTangle.Solidifier.Setup()
+ defer blockTangle.Shutdown()
- var storedMessages, solidMessages, invalidMessages int32
+ var storedBlocks, solidBlocks, invalidBlocks int32
- newOldParentsMessage := func(strongParents MessageIDs) *Message {
- message, err := NewMessageWithValidation(emptyLikeReferencesFromStrongParents(strongParents), time.Now().Add(maxParentsTimeDifference+5*time.Minute), ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("Old")), 0, ed25519.Signature{})
+ newOldParentsBlock := func(strongParents BlockIDs) *Block {
+ block, err := NewBlockWithValidation(emptyLikeReferencesFromStrongParents(strongParents), time.Now().Add(maxParentsTimeDifference+5*time.Minute), ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("Old")), 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
assert.NoError(t, err)
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
- newYoungParentsMessage := func(strongParents MessageIDs) *Message {
- message, err := NewMessageWithValidation(emptyLikeReferencesFromStrongParents(strongParents), time.Now().Add(-maxParentsTimeDifference-5*time.Minute), ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("Young")), 0, ed25519.Signature{})
+ newYoungParentsBlock := func(strongParents BlockIDs) *Block {
+ block, err := NewBlockWithValidation(emptyLikeReferencesFromStrongParents(strongParents), time.Now().Add(-maxParentsTimeDifference-5*time.Minute), ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("Young")), 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
assert.NoError(t, err)
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
- newValidMessage := func(strongParents MessageIDs) *Message {
- message, err := NewMessageWithValidation(emptyLikeReferencesFromStrongParents(strongParents), time.Now(), ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("IsBooked")), 0, ed25519.Signature{})
+ newValidBlock := func(strongParents BlockIDs) *Block {
+ block, err := NewBlockWithValidation(emptyLikeReferencesFromStrongParents(strongParents), time.Now(), ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("IsBooked")), 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
assert.NoError(t, err)
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
var wg sync.WaitGroup
- messageTangle.Storage.Events.MessageStored.Hook(event.NewClosure(func(event *MessageStoredEvent) {
- atomic.AddInt32(&storedMessages, 1)
+ blockTangle.Storage.Events.BlockStored.Hook(event.NewClosure(func(event *BlockStoredEvent) {
+ atomic.AddInt32(&storedBlocks, 1)
wg.Done()
}))
- messageTangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- atomic.AddInt32(&solidMessages, 1)
+ blockTangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ atomic.AddInt32(&solidBlocks, 1)
}))
- messageTangle.Events.MessageInvalid.Hook(event.NewClosure(func(event *MessageInvalidEvent) {
- atomic.AddInt32(&invalidMessages, 1)
+ blockTangle.Events.BlockInvalid.Hook(event.NewClosure(func(event *BlockInvalidEvent) {
+ atomic.AddInt32(&invalidBlocks, 1)
}))
- messageA := newTestDataMessage("some data")
- messageB := newTestDataMessage("some data1")
- messageC := newValidMessage(NewMessageIDs(messageA.ID(), messageB.ID()))
- messageOldParents := newOldParentsMessage(NewMessageIDs(messageA.ID(), messageB.ID()))
- messageYoungParents := newYoungParentsMessage(NewMessageIDs(messageA.ID(), messageB.ID()))
+ blockA := newTestDataBlock("some data")
+ blockB := newTestDataBlock("some data1")
+ blockC := newValidBlock(NewBlockIDs(blockA.ID(), blockB.ID()))
+ blockOldParents := newOldParentsBlock(NewBlockIDs(blockA.ID(), blockB.ID()))
+ blockYoungParents := newYoungParentsBlock(NewBlockIDs(blockA.ID(), blockB.ID()))
wg.Add(5)
- messageTangle.Storage.StoreMessage(messageA)
- messageTangle.Storage.StoreMessage(messageB)
- messageTangle.Storage.StoreMessage(messageC)
- messageTangle.Storage.StoreMessage(messageOldParents)
- messageTangle.Storage.StoreMessage(messageYoungParents)
+ blockTangle.Storage.StoreBlock(blockA)
+ blockTangle.Storage.StoreBlock(blockB)
+ blockTangle.Storage.StoreBlock(blockC)
+ blockTangle.Storage.StoreBlock(blockOldParents)
+ blockTangle.Storage.StoreBlock(blockYoungParents)
- // wait for all messages to become solid
+ // wait for all blocks to become solid
wg.Wait()
- assert.EqualValues(t, 5, atomic.LoadInt32(&storedMessages))
- assert.EqualValues(t, 3, atomic.LoadInt32(&solidMessages))
- assert.EqualValues(t, 2, atomic.LoadInt32(&invalidMessages))
+ assert.EqualValues(t, 5, atomic.LoadInt32(&storedBlocks))
+ assert.EqualValues(t, 3, atomic.LoadInt32(&solidBlocks))
+ assert.EqualValues(t, 2, atomic.LoadInt32(&invalidBlocks))
}
-func TestTangle_StoreMessage(t *testing.T) {
- messageTangle := NewTestTangle()
- defer messageTangle.Shutdown()
- if err := messageTangle.Prune(); err != nil {
+func TestTangle_StoreBlock(t *testing.T) {
+ blockTangle := NewTestTangle()
+ defer blockTangle.Shutdown()
+ if err := blockTangle.Prune(); err != nil {
t.Error(err)
return
}
- messageTangle.Storage.Events.MessageStored.Hook(event.NewClosure(func(event *MessageStoredEvent) {
- fmt.Println("STORED:", event.Message.ID())
+ blockTangle.Storage.Events.BlockStored.Hook(event.NewClosure(func(event *BlockStoredEvent) {
+ fmt.Println("STORED:", event.Block.ID())
}))
- messageTangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- fmt.Println("SOLID:", event.Message.ID())
+ blockTangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ fmt.Println("SOLID:", event.Block.ID())
}))
- messageTangle.Solidifier.Events.MessageMissing.Hook(event.NewClosure(func(event *MessageMissingEvent) {
- fmt.Println("MISSING:", event.MessageID)
+ blockTangle.Solidifier.Events.BlockMissing.Hook(event.NewClosure(func(event *BlockMissingEvent) {
+ fmt.Println("MISSING:", event.BlockID)
}))
- messageTangle.Storage.Events.MessageRemoved.Hook(event.NewClosure(func(event *MessageRemovedEvent) {
- fmt.Println("REMOVED:", event.MessageID)
+ blockTangle.Storage.Events.BlockRemoved.Hook(event.NewClosure(func(event *BlockRemovedEvent) {
+ fmt.Println("REMOVED:", event.BlockID)
}))
- newMessageOne := newTestDataMessage("some data")
- newMessageTwo := newTestDataMessage("some other data")
+ newBlockOne := newTestDataBlock("some data")
+ newBlockTwo := newTestDataBlock("some other data")
- messageTangle.Storage.StoreMessage(newMessageTwo)
+ blockTangle.Storage.StoreBlock(newBlockTwo)
time.Sleep(7 * time.Second)
- messageTangle.Storage.StoreMessage(newMessageOne)
+ blockTangle.Storage.StoreBlock(newBlockOne)
}
-func TestTangle_MissingMessages(t *testing.T) {
+func TestTangle_MissingBlocks(t *testing.T) {
const (
- messageCount = 2000
- tangleWidth = 250
- storeDelay = 5 * time.Millisecond
+ blockCount = 2000
+ tangleWidth = 250
+ storeDelay = 5 * time.Millisecond
)
// create the tangle
tangle := NewTestTangle(Identity(selfLocalIdentity))
- tangle.OTVConsensusManager = NewOTVConsensusManager(otv.NewOnTangleVoting(tangle.Ledger.ConflictDAG, tangle.ApprovalWeightManager.WeightOfBranch))
+ tangle.OTVConsensusManager = NewOTVConsensusManager(otv.NewOnTangleVoting(tangle.Ledger.ConflictDAG, tangle.ApprovalWeightManager.WeightOfConflict))
defer tangle.Shutdown()
require.NoError(t, tangle.Prune())
// map to keep track of the tips
- tips := randommap.New[MessageID, MessageID]()
- tips.Set(EmptyMessageID, EmptyMessageID)
+ tips := randommap.New[BlockID, BlockID]()
+ tips.Set(EmptyBlockID, EmptyBlockID)
- // setup the message factory
- tangle.MessageFactory = NewMessageFactory(
+ // setup the block factory
+ tangle.BlockFactory = NewBlockFactory(
tangle,
- TipSelectorFunc(func(p payload.Payload, countParents int) (parentsMessageIDs MessageIDs) {
+ TipSelectorFunc(func(p payload.Payload, countParents int) (parentsBlockIDs BlockIDs) {
r := tips.RandomUniqueEntries(countParents)
if len(r) == 0 {
- return NewMessageIDs(EmptyMessageID)
+ return NewBlockIDs(EmptyBlockID)
}
- parents := NewMessageIDs()
+ parents := NewBlockIDs()
for _, tip := range r {
parents.Add(tip)
}
@@ -257,29 +258,29 @@ func TestTangle_MissingMessages(t *testing.T) {
emptyLikeReferences,
)
- // create a helper function that creates the messages
- createNewMessage := func() *Message {
+ // create a helper function that creates the blocks
+ createNewBlock := func() *Block {
// issue the payload
- msg, err := tangle.MessageFactory.IssuePayload(payload.NewGenericDataPayload([]byte("")))
+ blk, err := tangle.BlockFactory.IssuePayload(payload.NewGenericDataPayload([]byte("")))
require.NoError(t, err)
// remove a tip if the width of the tangle is reached
if tips.Size() >= tangleWidth {
- tips.Delete(msg.ParentsByType(StrongParentType).First())
+ tips.Delete(blk.ParentsByType(StrongParentType).First())
}
- // add current message as a tip
- tips.Set(msg.ID(), msg.ID())
+ // add current block as a tip
+ tips.Set(blk.ID(), blk.ID())
- // return the constructed message
- return msg
+ // return the constructed block
+ return blk
}
- // generate the messages we want to solidify
- messages := make(map[MessageID]*Message, messageCount)
- for i := 0; i < messageCount; i++ {
- msg := createNewMessage()
- messages[msg.ID()] = msg
+ // generate the blocks we want to solidify
+ blocks := make(map[BlockID]*Block, blockCount)
+ for i := 0; i < blockCount; i++ {
+ blk := createNewBlock()
+ blocks[blk.ID()] = blk
}
// manually set up Tangle flow as far as we need it
@@ -288,76 +289,76 @@ func TestTangle_MissingMessages(t *testing.T) {
// counter for the different stages
var (
- storedMessages int32
- missingMessages int32
- solidMessages int32
+ storedBlocks int32
+ missingBlocks int32
+ solidBlocks int32
)
- tangle.Storage.Events.MessageStored.Hook(event.NewClosure(func(_ *MessageStoredEvent) {
- n := atomic.AddInt32(&storedMessages, 1)
- t.Logf("stored messages %d/%d", n, messageCount)
+ tangle.Storage.Events.BlockStored.Hook(event.NewClosure(func(_ *BlockStoredEvent) {
+ n := atomic.AddInt32(&storedBlocks, 1)
+ t.Logf("stored blocks %d/%d", n, blockCount)
}))
- // increase the counter when a missing message was detected
- tangle.Solidifier.Events.MessageMissing.Hook(event.NewClosure(func(event *MessageMissingEvent) {
- atomic.AddInt32(&missingMessages, 1)
- // store the message after it has been requested
+ // increase the counter when a missing block was detected
+ tangle.Solidifier.Events.BlockMissing.Hook(event.NewClosure(func(event *BlockMissingEvent) {
+ atomic.AddInt32(&missingBlocks, 1)
+ // store the block after it has been requested
go func() {
time.Sleep(storeDelay)
- tangle.Storage.StoreMessage(messages[event.MessageID])
+ tangle.Storage.StoreBlock(blocks[event.BlockID])
}()
}))
- // decrease the counter when a missing message was received
- tangle.Storage.Events.MissingMessageStored.Hook(event.NewClosure(func(_ *MissingMessageStoredEvent) {
- n := atomic.AddInt32(&missingMessages, -1)
- t.Logf("missing messages %d", n)
+ // decrease the counter when a missing block was received
+ tangle.Storage.Events.MissingBlockStored.Hook(event.NewClosure(func(_ *MissingBlockStoredEvent) {
+ n := atomic.AddInt32(&missingBlocks, -1)
+ t.Logf("missing blocks %d", n)
}))
- tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(_ *MessageSolidEvent) {
- n := atomic.AddInt32(&solidMessages, 1)
- t.Logf("solid messages %d/%d", n, messageCount)
+ tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(_ *BlockSolidEvent) {
+ n := atomic.AddInt32(&solidBlocks, 1)
+ t.Logf("solid blocks %d/%d", n, blockCount)
}))
// issue tips to start solidification
- tips.ForEach(func(key MessageID, _ MessageID) { tangle.Storage.StoreMessage(messages[key]) })
+ tips.ForEach(func(key BlockID, _ BlockID) { tangle.Storage.StoreBlock(blocks[key]) })
// wait for all transactions to become solid
- assert.Eventually(t, func() bool { return atomic.LoadInt32(&solidMessages) == messageCount }, 5*time.Minute, 100*time.Millisecond)
+ assert.Eventually(t, func() bool { return atomic.LoadInt32(&solidBlocks) == blockCount }, 5*time.Minute, 100*time.Millisecond)
- assert.EqualValues(t, messageCount, atomic.LoadInt32(&solidMessages))
- assert.EqualValues(t, messageCount, atomic.LoadInt32(&storedMessages))
- assert.EqualValues(t, 0, atomic.LoadInt32(&missingMessages))
+ assert.EqualValues(t, blockCount, atomic.LoadInt32(&solidBlocks))
+ assert.EqualValues(t, blockCount, atomic.LoadInt32(&storedBlocks))
+ assert.EqualValues(t, 0, atomic.LoadInt32(&missingBlocks))
}
func TestRetrieveAllTips(t *testing.T) {
- messageTangle := NewTestTangle(Identity(selfLocalIdentity))
- messageTangle.Setup()
- defer messageTangle.Shutdown()
+ blockTangle := NewTestTangle(Identity(selfLocalIdentity))
+ blockTangle.Setup()
+ defer blockTangle.Shutdown()
- messageA := newTestParentsDataMessage("A", ParentMessageIDs{
- StrongParentType: NewMessageIDs(EmptyMessageID),
+ blockA := newTestParentsDataBlock("A", ParentBlockIDs{
+ StrongParentType: NewBlockIDs(EmptyBlockID),
})
- messageB := newTestParentsDataMessage("B", ParentMessageIDs{
- StrongParentType: NewMessageIDs(messageA.ID()),
+ blockB := newTestParentsDataBlock("B", ParentBlockIDs{
+ StrongParentType: NewBlockIDs(blockA.ID()),
})
- messageC := newTestParentsDataMessage("C", ParentMessageIDs{
- StrongParentType: NewMessageIDs(messageA.ID()),
+ blockC := newTestParentsDataBlock("C", ParentBlockIDs{
+ StrongParentType: NewBlockIDs(blockA.ID()),
})
var wg sync.WaitGroup
- messageTangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(_ *MessageScheduledEvent) {
+ blockTangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(_ *BlockScheduledEvent) {
wg.Done()
}))
wg.Add(3)
- messageTangle.Storage.StoreMessage(messageA)
- messageTangle.Storage.StoreMessage(messageB)
- messageTangle.Storage.StoreMessage(messageC)
+ blockTangle.Storage.StoreBlock(blockA)
+ blockTangle.Storage.StoreBlock(blockB)
+ blockTangle.Storage.StoreBlock(blockC)
wg.Wait()
- allTips := messageTangle.Storage.RetrieveAllTips()
+ allTips := blockTangle.Storage.RetrieveAllTips()
assert.Equal(t, 2, len(allTips))
}
@@ -371,23 +372,23 @@ func TestTangle_Flow(t *testing.T) {
testPort = 8000
targetPOW = 2
- solidMsgCount = 2000
- invalidMsgCount = 10
+ solidBlkCount = 2000
+ invalidBlkCount = 10
tangleWidth = 250
networkDelay = 5 * time.Millisecond
)
var (
- totalMsgCount = solidMsgCount + invalidMsgCount
+ totalBlkCount = solidBlkCount + invalidBlkCount
testWorker = pow.New(1)
// same as gossip manager
- messageWorkerCount = runtime.GOMAXPROCS(0) * 4
- messageWorkerQueueSize = 1000
+ blockWorkerCount = runtime.GOMAXPROCS(0) * 4
+ blockWorkerQueueSize = 1000
)
// map to keep track of the tips
- tips := randommap.New[MessageID, MessageID]()
- tips.Set(EmptyMessageID, EmptyMessageID)
+ tips := randommap.New[BlockID, BlockID]()
+ tips.Set(EmptyBlockID, EmptyBlockID)
// create the tangle
tangle := NewTestTangle(Identity(selfLocalIdentity))
@@ -399,16 +400,16 @@ func TestTangle_Flow(t *testing.T) {
localIdentity := tangle.Options.Identity
localPeer := peer.NewPeer(localIdentity.Identity, net.IPv4zero, services)
- // set up the message factory
- tangle.MessageFactory = NewMessageFactory(
+ // set up the block factory
+ tangle.BlockFactory = NewBlockFactory(
tangle,
- TipSelectorFunc(func(p payload.Payload, countParents int) (parentsMessageIDs MessageIDs) {
+ TipSelectorFunc(func(p payload.Payload, countParents int) (parentsBlockIDs BlockIDs) {
r := tips.RandomUniqueEntries(countParents)
if len(r) == 0 {
- return NewMessageIDs(EmptyMessageID)
+ return NewBlockIDs(EmptyBlockID)
}
- parents := NewMessageIDs()
+ parents := NewBlockIDs()
for _, tip := range r {
parents.Add(tip)
}
@@ -418,79 +419,79 @@ func TestTangle_Flow(t *testing.T) {
)
// PoW workers
- tangle.MessageFactory.SetWorker(WorkerFunc(func(msgBytes []byte) (uint64, error) {
- content := msgBytes[:len(msgBytes)-ed25519.SignatureSize-8]
+ tangle.BlockFactory.SetWorker(WorkerFunc(func(blkBytes []byte) (uint64, error) {
+ content := blkBytes[:len(blkBytes)-ed25519.SignatureSize-8]
return testWorker.Mine(context.Background(), content, targetPOW)
}))
- tangle.MessageFactory.SetTimeout(powTimeout)
- // create a helper function that creates the messages
- createNewMessage := func(invalidTS bool) *Message {
- var msg *Message
+ tangle.BlockFactory.SetTimeout(powTimeout)
+ // create a helper function that creates the blocks
+ createNewBlock := func(invalidTS bool) *Block {
+ var blk *Block
var err error
// issue the payload
if invalidTS {
- msg, err = tangle.MessageFactory.issueInvalidTsPayload(payload.NewGenericDataPayload([]byte("")))
+ blk, err = tangle.BlockFactory.issueInvalidTsPayload(payload.NewGenericDataPayload([]byte("")))
} else {
- msg, err = tangle.MessageFactory.IssuePayload(payload.NewGenericDataPayload([]byte("")))
+ blk, err = tangle.BlockFactory.IssuePayload(payload.NewGenericDataPayload([]byte("")))
}
require.NoError(t, err)
// remove a tip if the width of the tangle is reached
if !invalidTS {
if tips.Size() >= tangleWidth {
- tips.Delete(msg.ParentsByType(StrongParentType).First())
+ tips.Delete(blk.ParentsByType(StrongParentType).First())
}
}
- // add current message as a tip
- // only valid message will be in the tip set
+ // add current block as a tip
+ // only valid block will be in the tip set
if !invalidTS {
- tips.Set(msg.ID(), msg.ID())
+ tips.Set(blk.ID(), blk.ID())
}
- require.NoError(t, msg.DetermineID())
- // return the constructed message
- return msg
+ require.NoError(t, blk.DetermineID())
+ // return the constructed block
+ return blk
}
- // setup the message parser
+ // setup the block parser
tangle.Parser.AddBytesFilter(NewPowFilter(testWorker, targetPOW))
// create inboxWP to act as the gossip layer
inboxWP := workerpool.NewNonBlockingQueuedWorkerPool(func(task workerpool.Task) {
time.Sleep(networkDelay)
- tangle.ProcessGossipMessage(task.Param(0).([]byte), task.Param(1).(*peer.Peer))
+ tangle.ProcessGossipBlock(task.Param(0).([]byte), task.Param(1).(*peer.Peer))
task.Return(nil)
- }, workerpool.WorkerCount(messageWorkerCount), workerpool.QueueSize(messageWorkerQueueSize))
+ }, workerpool.WorkerCount(blockWorkerCount), workerpool.QueueSize(blockWorkerQueueSize))
defer inboxWP.Stop()
- // generate the messages we want to solidify
- messages := make(map[MessageID]*Message, solidMsgCount)
- for i := 0; i < solidMsgCount; i++ {
- msg := createNewMessage(false)
- messages[msg.ID()] = msg
+ // generate the blocks we want to solidify
+ blocks := make(map[BlockID]*Block, solidBlkCount)
+ for i := 0; i < solidBlkCount; i++ {
+ blk := createNewBlock(false)
+ blocks[blk.ID()] = blk
}
- // generate the invalid timestamp messages
- invalidmsgs := make(map[MessageID]*Message, invalidMsgCount)
- for i := 0; i < invalidMsgCount; i++ {
- msg := createNewMessage(true)
- messages[msg.ID()] = msg
- invalidmsgs[msg.ID()] = msg
+ // generate the invalid timestamp blocks
+ invalidblks := make(map[BlockID]*Block, invalidBlkCount)
+ for i := 0; i < invalidBlkCount; i++ {
+ blk := createNewBlock(true)
+ blocks[blk.ID()] = blk
+ invalidblks[blk.ID()] = blk
}
// counter for the different stages
var (
- parsedMessages int32
- storedMessages int32
- missingMessages int32
- solidMessages int32
- scheduledMessages int32
- bookedMessages int32
- awMessages int32
- invalidMessages int32
- rejectedMessages int32
+ parsedBlocks int32
+ storedBlocks int32
+ missingBlocks int32
+ solidBlocks int32
+ scheduledBlocks int32
+ bookedBlocks int32
+ awBlocks int32
+ invalidBlocks int32
+ rejectedBlocks int32
)
tangle.Parser.Events.BytesRejected.Hook(event.NewClosure(func(event *BytesRejectedEvent) {
@@ -498,59 +499,59 @@ func TestTangle_Flow(t *testing.T) {
}))
// filter rejected events
- tangle.Parser.Events.MessageRejected.Hook(event.NewClosure(func(event *MessageRejectedEvent) {
- n := atomic.AddInt32(&rejectedMessages, 1)
- t.Logf("rejected by message filter messages %d/%d - %s %s", n, totalMsgCount, event.Message.ID(), event.Error)
+ tangle.Parser.Events.BlockRejected.Hook(event.NewClosure(func(event *BlockRejectedEvent) {
+ n := atomic.AddInt32(&rejectedBlocks, 1)
+ t.Logf("rejected by block filter blocks %d/%d - %s %s", n, totalBlkCount, event.Block.ID(), event.Error)
}))
- tangle.Parser.Events.MessageParsed.Hook(event.NewClosure(func(msgParsedEvent *MessageParsedEvent) {
- n := atomic.AddInt32(&parsedMessages, 1)
- t.Logf("parsed messages %d/%d - %s", n, totalMsgCount, msgParsedEvent.Message.ID())
+ tangle.Parser.Events.BlockParsed.Hook(event.NewClosure(func(blkParsedEvent *BlockParsedEvent) {
+ n := atomic.AddInt32(&parsedBlocks, 1)
+ t.Logf("parsed blocks %d/%d - %s", n, totalBlkCount, blkParsedEvent.Block.ID())
}))
- // message invalid events
- tangle.Events.MessageInvalid.Hook(event.NewClosure(func(messageInvalidEvent *MessageInvalidEvent) {
- n := atomic.AddInt32(&invalidMessages, 1)
- t.Logf("invalid messages %d/%d - %s", n, totalMsgCount, messageInvalidEvent.MessageID)
+ // block invalid events
+ tangle.Events.BlockInvalid.Hook(event.NewClosure(func(blockInvalidEvent *BlockInvalidEvent) {
+ n := atomic.AddInt32(&invalidBlocks, 1)
+ t.Logf("invalid blocks %d/%d - %s", n, totalBlkCount, blockInvalidEvent.BlockID)
}))
- tangle.Storage.Events.MessageStored.Hook(event.NewClosure(func(event *MessageStoredEvent) {
- n := atomic.AddInt32(&storedMessages, 1)
- t.Logf("stored messages %d/%d - %s", n, totalMsgCount, event.Message.ID())
+ tangle.Storage.Events.BlockStored.Hook(event.NewClosure(func(event *BlockStoredEvent) {
+ n := atomic.AddInt32(&storedBlocks, 1)
+ t.Logf("stored blocks %d/%d - %s", n, totalBlkCount, event.Block.ID())
}))
- // increase the counter when a missing message was detected
- tangle.Solidifier.Events.MessageMissing.Hook(event.NewClosure(func(event *MessageMissingEvent) {
- atomic.AddInt32(&missingMessages, 1)
+ // increase the counter when a missing block was detected
+ tangle.Solidifier.Events.BlockMissing.Hook(event.NewClosure(func(event *BlockMissingEvent) {
+ atomic.AddInt32(&missingBlocks, 1)
- // push the message into the gossip inboxWP
- inboxWP.TrySubmit(lo.PanicOnErr(messages[event.MessageID].Bytes()), localPeer)
+ // push the block into the gossip inboxWP
+ inboxWP.TrySubmit(lo.PanicOnErr(blocks[event.BlockID].Bytes()), localPeer)
}))
- // decrease the counter when a missing message was received
- tangle.Storage.Events.MissingMessageStored.Hook(event.NewClosure(func(event *MissingMessageStoredEvent) {
- n := atomic.AddInt32(&missingMessages, -1)
- t.Logf("missing messages %d - %s", n, event.MessageID)
+ // decrease the counter when a missing block was received
+ tangle.Storage.Events.MissingBlockStored.Hook(event.NewClosure(func(event *MissingBlockStoredEvent) {
+ n := atomic.AddInt32(&missingBlocks, -1)
+ t.Logf("missing blocks %d - %s", n, event.BlockID)
}))
- tangle.Solidifier.Events.MessageSolid.Hook(event.NewClosure(func(event *MessageSolidEvent) {
- n := atomic.AddInt32(&solidMessages, 1)
- t.Logf("solid messages %d/%d - %s", n, totalMsgCount, event.Message.ID())
+ tangle.Solidifier.Events.BlockSolid.Hook(event.NewClosure(func(event *BlockSolidEvent) {
+ n := atomic.AddInt32(&solidBlocks, 1)
+ t.Logf("solid blocks %d/%d - %s", n, totalBlkCount, event.Block.ID())
}))
- tangle.Scheduler.Events.MessageScheduled.Hook(event.NewClosure(func(event *MessageScheduledEvent) {
- n := atomic.AddInt32(&scheduledMessages, 1)
- t.Logf("scheduled messages %d/%d - %s", n, totalMsgCount, event.MessageID)
+ tangle.Scheduler.Events.BlockScheduled.Hook(event.NewClosure(func(event *BlockScheduledEvent) {
+ n := atomic.AddInt32(&scheduledBlocks, 1)
+ t.Logf("scheduled blocks %d/%d - %s", n, totalBlkCount, event.BlockID)
}))
- tangle.Booker.Events.MessageBooked.Hook(event.NewClosure(func(event *MessageBookedEvent) {
- n := atomic.AddInt32(&bookedMessages, 1)
- t.Logf("booked messages %d/%d - %s", n, totalMsgCount, event.MessageID)
+ tangle.Booker.Events.BlockBooked.Hook(event.NewClosure(func(event *BlockBookedEvent) {
+ n := atomic.AddInt32(&bookedBlocks, 1)
+ t.Logf("booked blocks %d/%d - %s", n, totalBlkCount, event.BlockID)
}))
- tangle.ApprovalWeightManager.Events.MessageProcessed.Hook(event.NewClosure(func(*MessageProcessedEvent) {
- n := atomic.AddInt32(&awMessages, 1)
- t.Logf("approval weight processed messages %d/%d", n, totalMsgCount)
+ tangle.ApprovalWeightManager.Events.BlockProcessed.Hook(event.NewClosure(func(*BlockProcessedEvent) {
+ n := atomic.AddInt32(&awBlocks, 1)
+ t.Logf("approval weight processed blocks %d/%d", n, totalBlkCount)
}))
tangle.Events.Error.Hook(event.NewClosure(func(err error) {
@@ -561,42 +562,42 @@ func TestTangle_Flow(t *testing.T) {
tangle.Setup()
// issue tips to start solidification
- tips.ForEach(func(key MessageID, _ MessageID) {
- if key == EmptyMessageID {
+ tips.ForEach(func(key BlockID, _ BlockID) {
+ if key == EmptyBlockID {
return
}
- inboxWP.TrySubmit(lo.PanicOnErr(messages[key].Bytes()), localPeer)
+ inboxWP.TrySubmit(lo.PanicOnErr(blocks[key].Bytes()), localPeer)
})
- // incoming invalid messages
- for _, msg := range invalidmsgs {
- inboxWP.TrySubmit(lo.PanicOnErr(msg.Bytes()), localPeer)
+ // incoming invalid blocks
+ for _, blk := range invalidblks {
+ inboxWP.TrySubmit(lo.PanicOnErr(blk.Bytes()), localPeer)
}
- // wait for all messages to be scheduled
+ // wait for all blocks to be scheduled
lastWaitNotice := time.Now()
assert.Eventually(t, func() bool {
if time.Now().Sub(lastWaitNotice) > time.Second {
lastWaitNotice = time.Now()
- t.Logf("waiting for scheduled messages %d/%d", atomic.LoadInt32(&scheduledMessages), totalMsgCount)
+ t.Logf("waiting for scheduled blocks %d/%d", atomic.LoadInt32(&scheduledBlocks), totalBlkCount)
}
- return atomic.LoadInt32(&scheduledMessages) == solidMsgCount
+ return atomic.LoadInt32(&scheduledBlocks) == solidBlkCount
}, 5*time.Minute, 100*time.Millisecond)
- assert.EqualValuesf(t, totalMsgCount, atomic.LoadInt32(&parsedMessages), "parsed messages does not match")
- assert.EqualValuesf(t, totalMsgCount, atomic.LoadInt32(&storedMessages), "stored messages does not match")
- assert.EqualValues(t, solidMsgCount, atomic.LoadInt32(&solidMessages))
- assert.EqualValues(t, solidMsgCount, atomic.LoadInt32(&scheduledMessages))
- assert.EqualValues(t, solidMsgCount, atomic.LoadInt32(&bookedMessages))
- assert.EqualValues(t, solidMsgCount, atomic.LoadInt32(&awMessages))
- // messages with invalid timestamp are not forwarded from the timestamp filter, thus there are 0.
- assert.EqualValues(t, invalidMsgCount, atomic.LoadInt32(&invalidMessages))
- assert.EqualValues(t, 0, atomic.LoadInt32(&rejectedMessages))
- assert.EqualValues(t, 0, atomic.LoadInt32(&missingMessages))
+ assert.EqualValuesf(t, totalBlkCount, atomic.LoadInt32(&parsedBlocks), "parsed blocks does not match")
+ assert.EqualValuesf(t, totalBlkCount, atomic.LoadInt32(&storedBlocks), "stored blocks does not match")
+ assert.EqualValues(t, solidBlkCount, atomic.LoadInt32(&solidBlocks))
+ assert.EqualValues(t, solidBlkCount, atomic.LoadInt32(&scheduledBlocks))
+ assert.EqualValues(t, solidBlkCount, atomic.LoadInt32(&bookedBlocks))
+ assert.EqualValues(t, solidBlkCount, atomic.LoadInt32(&awBlocks))
+ // blocks with invalid timestamp are not forwarded from the timestamp filter, thus there are 0.
+ assert.EqualValues(t, invalidBlkCount, atomic.LoadInt32(&invalidBlocks))
+ assert.EqualValues(t, 0, atomic.LoadInt32(&rejectedBlocks))
+ assert.EqualValues(t, 0, atomic.LoadInt32(&missingBlocks))
}
-// IssueInvalidTsPayload creates a new message including sequence number and tip selection and returns it.
-func (f *MessageFactory) issueInvalidTsPayload(p payload.Payload, _ ...*Tangle) (*Message, error) {
+// IssueInvalidTsPayload creates a new block including sequence number and tip selection and returns it.
+func (f *BlockFactory) issueInvalidTsPayload(p payload.Payload, _ ...*Tangle) (*Block, error) {
payloadLen := len(lo.PanicOnErr(p.Bytes()))
if payloadLen > payload.MaxSize {
err := fmt.Errorf("maximum payload size of %d bytes exceeded", payloadLen)
@@ -622,7 +623,7 @@ func (f *MessageFactory) issueInvalidTsPayload(p payload.Payload, _ ...*Tangle)
issuerPublicKey := f.localIdentity.PublicKey()
// do the PoW
- nonce, err := f.doPOW(emptyLikeReferencesFromStrongParents(parents), issuingTime, issuerPublicKey, sequenceNumber, p)
+ nonce, err := f.doPOW(emptyLikeReferencesFromStrongParents(parents), issuingTime, issuerPublicKey, sequenceNumber, p, 0, epoch.NewECRecord(0))
if err != nil {
err = fmt.Errorf("pow failed: %w", err)
f.Events.Error.Trigger(err)
@@ -630,14 +631,14 @@ func (f *MessageFactory) issueInvalidTsPayload(p payload.Payload, _ ...*Tangle)
}
// create the signature
- signature, err := f.sign(emptyLikeReferencesFromStrongParents(parents), issuingTime, issuerPublicKey, sequenceNumber, p, nonce)
+ signature, err := f.sign(emptyLikeReferencesFromStrongParents(parents), issuingTime, issuerPublicKey, sequenceNumber, p, nonce, 0, epoch.NewECRecord(0))
if err != nil {
err = fmt.Errorf("signing failed failed: %w", err)
f.Events.Error.Trigger(err)
return nil, err
}
- msg, err := NewMessageWithValidation(
+ blk, err := NewBlockWithValidation(
emptyLikeReferencesFromStrongParents(parents),
issuingTime,
issuerPublicKey,
@@ -645,11 +646,13 @@ func (f *MessageFactory) issueInvalidTsPayload(p payload.Payload, _ ...*Tangle)
p,
nonce,
signature,
+ 0,
+ epoch.NewECRecord(0),
)
if err != nil {
- err = fmt.Errorf("problem with message syntax: %w", err)
+ err = fmt.Errorf("problem with block syntax: %w", err)
f.Events.Error.Trigger(err)
return nil, err
}
- return msg, nil
+ return blk, nil
}
diff --git a/packages/tangle/testutils.go b/packages/tangle/testutils.go
index 6469556615..b4da20cb1d 100644
--- a/packages/tangle/testutils.go
+++ b/packages/tangle/testutils.go
@@ -18,8 +18,8 @@ import (
"github.com/stretchr/testify/mock"
"github.com/iotaledger/goshimmer/packages/conflictdag"
- "github.com/iotaledger/goshimmer/packages/consensus/gof"
"github.com/iotaledger/goshimmer/packages/database"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/ledger"
"github.com/iotaledger/goshimmer/packages/ledger/utxo"
"github.com/iotaledger/goshimmer/packages/ledger/vm/devnetvm"
@@ -27,85 +27,92 @@ import (
"github.com/iotaledger/goshimmer/packages/tangle/payload"
)
-// region MessageTestFramework /////////////////////////////////////////////////////////////////////////////////////////
+// region BlockTestFramework /////////////////////////////////////////////////////////////////////////////////////////
-// MessageTestFramework implements a framework for conveniently issuing messages in a tangle as part of unit tests in a
+// BlockTestFramework implements a framework for conveniently issuing blocks in a tangle as part of unit tests in a
// simplified way.
-type MessageTestFramework struct {
+type BlockTestFramework struct {
tangle *Tangle
- branchIDs map[string]utxo.TransactionID
- messagesByAlias map[string]*Message
+ conflictIDs map[string]utxo.TransactionID
+ blocksByAlias map[string]*Block
walletsByAlias map[string]wallet
walletsByAddress map[devnetvm.Address]wallet
inputsByAlias map[string]devnetvm.Input
outputsByAlias map[string]devnetvm.Output
outputsByID map[utxo.OutputID]devnetvm.Output
- options *MessageTestFrameworkOptions
+ options *BlockTestFrameworkOptions
oldIncreaseIndexCallback markers.IncreaseIndexCallback
+ snapshot *ledger.Snapshot
+ outputCounter uint16
}
-// NewMessageTestFramework is the constructor of the MessageTestFramework.
-func NewMessageTestFramework(tangle *Tangle, options ...MessageTestFrameworkOption) (messageTestFramework *MessageTestFramework) {
- messageTestFramework = &MessageTestFramework{
+// NewBlockTestFramework is the constructor of the BlockTestFramework.
+func NewBlockTestFramework(tangle *Tangle, options ...BlockTestFrameworkOption) (blockTestFramework *BlockTestFramework) {
+ blockTestFramework = &BlockTestFramework{
tangle: tangle,
- branchIDs: make(map[string]utxo.TransactionID),
- messagesByAlias: make(map[string]*Message),
+ conflictIDs: make(map[string]utxo.TransactionID),
+ blocksByAlias: make(map[string]*Block),
walletsByAlias: make(map[string]wallet),
walletsByAddress: make(map[devnetvm.Address]wallet),
inputsByAlias: make(map[string]devnetvm.Input),
outputsByAlias: make(map[string]devnetvm.Output),
outputsByID: make(map[utxo.OutputID]devnetvm.Output),
- options: NewMessageTestFrameworkOptions(options...),
+ options: NewBlockTestFrameworkOptions(options...),
}
- messageTestFramework.createGenesisOutputs()
+ blockTestFramework.createGenesisOutputs()
return
}
-// RegisterBranchID registers a BranchID from the given Messages' transactions with the MessageTestFramework and
-// also an alias when printing the BranchID.
-func (m *MessageTestFramework) RegisterBranchID(alias, messageAlias string) {
- branchID := m.BranchIDFromMessage(messageAlias)
- m.branchIDs[alias] = branchID
- branchID.RegisterAlias(alias)
+// Snapshot returns the Snapshot of the test framework.
+func (m *BlockTestFramework) Snapshot() (snapshot *ledger.Snapshot) {
+ return m.snapshot
}
-func (m *MessageTestFramework) RegisterTransactionID(alias, messageAlias string) {
- TxID := m.BranchIDFromMessage(messageAlias)
+// RegisterConflictID registers a ConflictID from the given Blocks' transactions with the BlockTestFramework and
+// also an alias when printing the ConflictID.
+func (m *BlockTestFramework) RegisterConflictID(alias, blockAlias string) {
+ conflictID := m.ConflictIDFromBlock(blockAlias)
+ m.conflictIDs[alias] = conflictID
+ conflictID.RegisterAlias(alias)
+}
+
+func (m *BlockTestFramework) RegisterTransactionID(alias, blockAlias string) {
+ TxID := m.ConflictIDFromBlock(blockAlias)
TxID.RegisterAlias(alias)
}
-// BranchID returns the BranchID registered with the given alias.
-func (m *MessageTestFramework) BranchID(alias string) (branchID utxo.TransactionID) {
- branchID, ok := m.branchIDs[alias]
+// ConflictID returns the ConflictID registered with the given alias.
+func (m *BlockTestFramework) ConflictID(alias string) (conflictID utxo.TransactionID) {
+ conflictID, ok := m.conflictIDs[alias]
if !ok {
- panic("no branch registered with such alias " + alias)
+ panic("no conflict registered with such alias " + alias)
}
return
}
-// BranchIDs returns the BranchIDs registered with the given aliases.
-func (m *MessageTestFramework) BranchIDs(aliases ...string) (branchIDs utxo.TransactionIDs) {
- branchIDs = set.NewAdvancedSet[utxo.TransactionID]()
+// ConflictIDs returns the ConflictIDs registered with the given aliases.
+func (m *BlockTestFramework) ConflictIDs(aliases ...string) (conflictIDs utxo.TransactionIDs) {
+ conflictIDs = set.NewAdvancedSet[utxo.TransactionID]()
for _, alias := range aliases {
- branchID, ok := m.branchIDs[alias]
+ conflictID, ok := m.conflictIDs[alias]
if !ok {
- panic("no branch registered with such alias " + alias)
+ panic("no conflict registered with such alias " + alias)
}
- branchIDs.Add(branchID)
+ conflictIDs.Add(conflictID)
}
return
}
-// CreateMessage creates a Message with the given alias and MessageTestFrameworkMessageOptions.
-func (m *MessageTestFramework) CreateMessage(messageAlias string, messageOptions ...MessageOption) (message *Message) {
- options := NewMessageTestFrameworkMessageOptions(messageOptions...)
+// CreateBlock creates a Block with the given alias and BlockTestFrameworkBlockOptions.
+func (m *BlockTestFramework) CreateBlock(blockAlias string, blockOptions ...BlockOption) (block *Block) {
+ options := NewBlockTestFrameworkBlockOptions(blockOptions...)
- references := NewParentMessageIDs()
+ references := NewParentBlockIDs()
if parents := m.strongParentIDs(options); len(parents) > 0 {
references.AddAll(StrongParentType, parents)
@@ -117,35 +124,35 @@ func (m *MessageTestFramework) CreateMessage(messageAlias string, messageOptions
references.AddAll(ShallowLikeParentType, parents)
}
- if options.reattachmentMessageAlias != "" {
- reattachmentPayload := m.Message(options.reattachmentMessageAlias).Payload()
- m.messagesByAlias[messageAlias] = newTestParentsPayloadMessageWithOptions(reattachmentPayload, references, options)
+ if options.reattachmentBlockAlias != "" {
+ reattachmentPayload := m.Block(options.reattachmentBlockAlias).Payload()
+ m.blocksByAlias[blockAlias] = newTestParentsPayloadBlockWithOptions(reattachmentPayload, references, options)
} else {
transaction := m.buildTransaction(options)
if transaction != nil {
- m.messagesByAlias[messageAlias] = newTestParentsPayloadMessageWithOptions(transaction, references, options)
+ m.blocksByAlias[blockAlias] = newTestParentsPayloadBlockWithOptions(transaction, references, options)
} else {
- m.messagesByAlias[messageAlias] = newTestParentsDataMessageWithOptions(messageAlias, references, options)
+ m.blocksByAlias[blockAlias] = newTestParentsDataBlockWithOptions(blockAlias, references, options)
}
}
- if err := m.messagesByAlias[messageAlias].DetermineID(); err != nil {
+ if err := m.blocksByAlias[blockAlias].DetermineID(); err != nil {
panic(err)
}
- m.messagesByAlias[messageAlias].ID().RegisterAlias(messageAlias)
+ m.blocksByAlias[blockAlias].ID().RegisterAlias(blockAlias)
- return m.messagesByAlias[messageAlias]
+ return m.blocksByAlias[blockAlias]
}
-// IncreaseMarkersIndexCallback is the IncreaseMarkersIndexCallback that the MessageTestFramework uses to determine when
-// to assign new Markers to messages.
-func (m *MessageTestFramework) IncreaseMarkersIndexCallback(markers.SequenceID, markers.Index) bool {
+// IncreaseMarkersIndexCallback is the IncreaseMarkersIndexCallback that the BlockTestFramework uses to determine when
+// to assign new Markers to blocks.
+func (m *BlockTestFramework) IncreaseMarkersIndexCallback(markers.SequenceID, markers.Index) bool {
return false
}
-// PreventNewMarkers disables the generation of new Markers for the given Messages.
-func (m *MessageTestFramework) PreventNewMarkers(enabled bool) *MessageTestFramework {
+// PreventNewMarkers disables the generation of new Markers for the given Blocks.
+func (m *BlockTestFramework) PreventNewMarkers(enabled bool) *BlockTestFramework {
if enabled && m.oldIncreaseIndexCallback == nil {
m.oldIncreaseIndexCallback = m.tangle.Options.IncreaseMarkersIndexCallback
m.tangle.Options.IncreaseMarkersIndexCallback = m.IncreaseMarkersIndexCallback
@@ -161,112 +168,126 @@ func (m *MessageTestFramework) PreventNewMarkers(enabled bool) *MessageTestFrame
return m
}
-// IssueMessages stores the given Messages in the Storage and triggers the processing by the Tangle.
-func (m *MessageTestFramework) IssueMessages(messageAliases ...string) *MessageTestFramework {
- for _, messageAlias := range messageAliases {
- currentMessageAlias := messageAlias
+// LatestCommitment gets the latest commitment.
+func (m *BlockTestFramework) LatestCommitment(blockAliases ...string) (ecRecord *epoch.ECRecord, latestConfirmedEpoch epoch.Index, err error) {
+ return m.tangle.Options.CommitmentFunc()
+}
+
+// IssueBlocks stores the given Blocks in the Storage and triggers the processing by the Tangle.
+func (m *BlockTestFramework) IssueBlocks(blockAliases ...string) *BlockTestFramework {
+ for _, blockAlias := range blockAliases {
+ currentBlockAlias := blockAlias
event.Loop.Submit(func() {
- m.tangle.Storage.StoreMessage(m.messagesByAlias[currentMessageAlias])
+ m.tangle.Storage.StoreBlock(m.blocksByAlias[currentBlockAlias])
})
}
return m
}
-func (m *MessageTestFramework) WaitUntilAllTasksProcessed() (self *MessageTestFramework) {
+func (m *BlockTestFramework) WaitUntilAllTasksProcessed() (self *BlockTestFramework) {
// time.Sleep(100 * time.Millisecond)
event.Loop.WaitUntilAllTasksProcessed()
return m
}
-// Message retrieves the Messages that is associated with the given alias.
-func (m *MessageTestFramework) Message(alias string) (message *Message) {
- message, ok := m.messagesByAlias[alias]
+// Block retrieves the Blocks that is associated with the given alias.
+func (m *BlockTestFramework) Block(alias string) (block *Block) {
+ block, ok := m.blocksByAlias[alias]
if !ok {
- panic(fmt.Sprintf("Message alias %s not registered", alias))
+ panic(fmt.Sprintf("Block alias %s not registered", alias))
}
return
}
-// Message retrieves the Messages that is associated with the given alias.
-func (m *MessageTestFramework) MessageIDs(aliases ...string) (messageIDs MessageIDs) {
- messageIDs = NewMessageIDs()
+// Block retrieves the Blocks that is associated with the given alias.
+func (m *BlockTestFramework) BlockIDs(aliases ...string) (blockIDs BlockIDs) {
+ blockIDs = NewBlockIDs()
for _, alias := range aliases {
- messageIDs.Add(m.Message(alias).ID())
+ blockIDs.Add(m.Block(alias).ID())
}
return
}
-// MessageMetadata retrieves the MessageMetadata that is associated with the given alias.
-func (m *MessageTestFramework) MessageMetadata(alias string) (messageMetadata *MessageMetadata) {
- m.tangle.Storage.MessageMetadata(m.messagesByAlias[alias].ID()).Consume(func(msgMetadata *MessageMetadata) {
- messageMetadata = msgMetadata
+// BlockMetadata retrieves the BlockMetadata that is associated with the given alias.
+func (m *BlockTestFramework) BlockMetadata(alias string) (blockMetadata *BlockMetadata) {
+ m.tangle.Storage.BlockMetadata(m.blocksByAlias[alias].ID()).Consume(func(blkMetadata *BlockMetadata) {
+ blockMetadata = blkMetadata
})
return
}
-// TransactionID returns the TransactionID of the Transaction contained in the Message associated with the given alias.
-func (m *MessageTestFramework) TransactionID(messageAlias string) utxo.TransactionID {
- messagePayload := m.messagesByAlias[messageAlias].Payload()
- tx, ok := messagePayload.(*devnetvm.Transaction)
+// TransactionID returns the TransactionID of the Transaction contained in the Block associated with the given alias.
+func (m *BlockTestFramework) TransactionID(blockAlias string) utxo.TransactionID {
+ blockPayload := m.blocksByAlias[blockAlias].Payload()
+ tx, ok := blockPayload.(*devnetvm.Transaction)
if !ok {
- panic(fmt.Sprintf("Message with alias '%s' does not contain a Transaction", messageAlias))
+ panic(fmt.Sprintf("Block with alias '%s' does not contain a Transaction", blockAlias))
}
return tx.ID()
}
-// TransactionMetadata returns the transaction metadata of the transaction contained within the given message.
-// Panics if the message's payload isn't a transaction.
-func (m *MessageTestFramework) TransactionMetadata(messageAlias string) (txMeta *ledger.TransactionMetadata) {
- m.tangle.Ledger.Storage.CachedTransactionMetadata(m.TransactionID(messageAlias)).Consume(func(transactionMetadata *ledger.TransactionMetadata) {
+// Output retrieves the Output that is associated with the given alias.
+func (m *BlockTestFramework) Output(alias string) (output devnetvm.Output) {
+ output, ok := m.outputsByAlias[alias]
+ if !ok {
+ panic(fmt.Sprintf("Output alias %s not registered", alias))
+ }
+ return
+}
+
+// TransactionMetadata returns the transaction metadata of the transaction contained within the given block.
+// Panics if the block's payload isn't a transaction.
+func (m *BlockTestFramework) TransactionMetadata(blockAlias string) (txMeta *ledger.TransactionMetadata) {
+ m.tangle.Ledger.Storage.CachedTransactionMetadata(m.TransactionID(blockAlias)).Consume(func(transactionMetadata *ledger.TransactionMetadata) {
txMeta = transactionMetadata
})
return
}
-// Transaction returns the transaction contained within the given message.
-// Panics if the message's payload isn't a transaction.
-func (m *MessageTestFramework) Transaction(messageAlias string) (tx utxo.Transaction) {
- m.tangle.Ledger.Storage.CachedTransaction(m.TransactionID(messageAlias)).Consume(func(transaction utxo.Transaction) {
+// Transaction returns the transaction contained within the given block.
+// Panics if the block's payload isn't a transaction.
+func (m *BlockTestFramework) Transaction(blockAlias string) (tx utxo.Transaction) {
+ m.tangle.Ledger.Storage.CachedTransaction(m.TransactionID(blockAlias)).Consume(func(transaction utxo.Transaction) {
tx = transaction
})
return
}
// OutputMetadata returns the given output metadata.
-func (m *MessageTestFramework) OutputMetadata(outputID utxo.OutputID) (outMeta *ledger.OutputMetadata) {
+func (m *BlockTestFramework) OutputMetadata(outputID utxo.OutputID) (outMeta *ledger.OutputMetadata) {
m.tangle.Ledger.Storage.CachedOutputMetadata(outputID).Consume(func(outputMetadata *ledger.OutputMetadata) {
outMeta = outputMetadata
})
return
}
-// BranchIDFromMessage returns the BranchID of the Transaction contained in the Message associated with the given alias.
-func (m *MessageTestFramework) BranchIDFromMessage(messageAlias string) utxo.TransactionID {
- messagePayload := m.messagesByAlias[messageAlias].Payload()
- tx, ok := messagePayload.(utxo.Transaction)
+// ConflictIDFromBlock returns the ConflictID of the Transaction contained in the Block associated with the given alias.
+func (m *BlockTestFramework) ConflictIDFromBlock(blockAlias string) utxo.TransactionID {
+ blockPayload := m.blocksByAlias[blockAlias].Payload()
+ tx, ok := blockPayload.(utxo.Transaction)
if !ok {
- panic(fmt.Sprintf("Message with alias '%s' does not contain a Transaction", messageAlias))
+ panic(fmt.Sprintf("Block with alias '%s' does not contain a Transaction", blockAlias))
}
return tx.ID()
}
-// Branch returns the branch emerging from the transaction contained within the given message.
-// This function thus only works on the message creating ledger.Conflict.
-// Panics if the message's payload isn't a transaction.
-func (m *MessageTestFramework) Branch(messageAlias string) (b *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- m.tangle.Ledger.ConflictDAG.Storage.CachedConflict(m.BranchIDFromMessage(messageAlias)).Consume(func(branch *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
- b = branch
+// Conflict returns the conflict emerging from the transaction contained within the given block.
+// This function thus only works on the block creating ledger.Conflict.
+// Panics if the block's payload isn't a transaction.
+func (m *BlockTestFramework) Conflict(blockAlias string) (b *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ m.tangle.Ledger.ConflictDAG.Storage.CachedConflict(m.ConflictIDFromBlock(blockAlias)).Consume(func(conflict *conflictdag.Conflict[utxo.TransactionID, utxo.OutputID]) {
+ b = conflict
})
return
}
-// createGenesisOutputs initializes the Outputs that are used by the MessageTestFramework as the genesis.
-func (m *MessageTestFramework) createGenesisOutputs() {
+// createGenesisOutputs initializes the Outputs that are used by the BlockTestFramework as the genesis.
+func (m *BlockTestFramework) createGenesisOutputs() {
if len(m.options.genesisOutputs) == 0 {
return
}
@@ -277,43 +298,41 @@ func (m *MessageTestFramework) createGenesisOutputs() {
}
manaPledgeTime := time.Now()
- outputs := utxo.NewOutputs()
- outputsMetadata := ledger.NewOutputsMetadata()
+ outputsWithMetadata := make([]*ledger.OutputWithMetadata, 0)
for alias, balance := range m.options.genesisOutputs {
- m.createOutput(alias, devnetvm.NewColoredBalances(map[devnetvm.Color]uint64{devnetvm.ColorIOTA: balance}), manaPledgeID, manaPledgeTime, outputs, outputsMetadata)
+ outputWithMetadata := m.createOutput(alias, devnetvm.NewColoredBalances(map[devnetvm.Color]uint64{devnetvm.ColorIOTA: balance}), manaPledgeID, manaPledgeTime)
+ outputsWithMetadata = append(outputsWithMetadata, outputWithMetadata)
}
for alias, coloredBalances := range m.options.coloredGenesisOutputs {
- m.createOutput(alias, devnetvm.NewColoredBalances(coloredBalances), manaPledgeID, manaPledgeTime, outputs, outputsMetadata)
+ outputWithMetadata := m.createOutput(alias, devnetvm.NewColoredBalances(coloredBalances), manaPledgeID, manaPledgeTime)
+ outputsWithMetadata = append(outputsWithMetadata, outputWithMetadata)
}
- m.tangle.Ledger.LoadSnapshot(ledger.NewSnapshot(outputs, outputsMetadata))
+ m.snapshot = ledger.NewSnapshot(outputsWithMetadata)
+ m.tangle.Ledger.LoadSnapshot(m.snapshot)
}
-func (m *MessageTestFramework) createOutput(alias string, coloredBalances *devnetvm.ColoredBalances, manaPledgeID identity.ID, manaPledgeTime time.Time, outputs *utxo.Outputs, outputsMetadata *ledger.OutputsMetadata) {
+func (m *BlockTestFramework) createOutput(alias string, coloredBalances *devnetvm.ColoredBalances, manaPledgeID identity.ID, manaPledgeTime time.Time) (outputWithMetadata *ledger.OutputWithMetadata) {
addressWallet := createWallets(1)[0]
m.walletsByAlias[alias] = addressWallet
m.walletsByAddress[addressWallet.address] = addressWallet
output := devnetvm.NewSigLockedColoredOutput(coloredBalances, addressWallet.address)
- output.SetID(utxo.NewOutputID(utxo.EmptyTransactionID, uint16(outputs.Size())))
- outputs.Add(output)
-
- outputMetadata := ledger.NewOutputMetadata(output.ID())
- outputMetadata.SetGradeOfFinality(gof.High)
- outputMetadata.SetConsensusManaPledgeID(manaPledgeID)
- outputMetadata.SetCreationTime(manaPledgeTime)
- outputMetadata.SetBranchIDs(set.NewAdvancedSet[utxo.TransactionID]())
- outputsMetadata.Add(outputMetadata)
+ output.SetID(utxo.NewOutputID(utxo.EmptyTransactionID, m.outputCounter))
+ m.outputCounter++
+ outputWithMetadata = ledger.NewOutputWithMetadata(output.ID(), output, manaPledgeTime, manaPledgeID, manaPledgeID)
m.outputsByAlias[alias] = output
m.outputsByID[output.ID()] = output
m.inputsByAlias[alias] = devnetvm.NewUTXOInput(output.ID())
+
+ return outputWithMetadata
}
-// buildTransaction creates a Transaction from the given MessageTestFrameworkMessageOptions. It returns nil if there are
-// no Transaction related MessageTestFrameworkMessageOptions.
-func (m *MessageTestFramework) buildTransaction(options *MessageTestFrameworkMessageOptions) (transaction *devnetvm.Transaction) {
+// buildTransaction creates a Transaction from the given BlockTestFrameworkBlockOptions. It returns nil if there are
+// no Transaction related BlockTestFrameworkBlockOptions.
+func (m *BlockTestFramework) buildTransaction(options *BlockTestFrameworkBlockOptions) (transaction *devnetvm.Transaction) {
if len(options.inputs) == 0 || len(options.outputs) == 0 {
return
}
@@ -360,33 +379,33 @@ func (m *MessageTestFramework) buildTransaction(options *MessageTestFrameworkMes
return
}
-// strongParentIDs returns the MessageIDs that were defined to be the strong parents of the
-// MessageTestFrameworkMessageOptions.
-func (m *MessageTestFramework) strongParentIDs(options *MessageTestFrameworkMessageOptions) MessageIDs {
- return m.parentIDsByMessageAlias(options.strongParents)
+// strongParentIDs returns the BlockIDs that were defined to be the strong parents of the
+// BlockTestFrameworkBlockOptions.
+func (m *BlockTestFramework) strongParentIDs(options *BlockTestFrameworkBlockOptions) BlockIDs {
+ return m.parentIDsByBlockAlias(options.strongParents)
}
-// weakParentIDs returns the MessageIDs that were defined to be the weak parents of the
-// MessageTestFrameworkMessageOptions.
-func (m *MessageTestFramework) weakParentIDs(options *MessageTestFrameworkMessageOptions) MessageIDs {
- return m.parentIDsByMessageAlias(options.weakParents)
+// weakParentIDs returns the BlockIDs that were defined to be the weak parents of the
+// BlockTestFrameworkBlockOptions.
+func (m *BlockTestFramework) weakParentIDs(options *BlockTestFrameworkBlockOptions) BlockIDs {
+ return m.parentIDsByBlockAlias(options.weakParents)
}
-// shallowLikeParentIDs returns the MessageIDs that were defined to be the shallow like parents of the
-// MessageTestFrameworkMessageOptions.
-func (m *MessageTestFramework) shallowLikeParentIDs(options *MessageTestFrameworkMessageOptions) MessageIDs {
- return m.parentIDsByMessageAlias(options.shallowLikeParents)
+// shallowLikeParentIDs returns the BlockIDs that were defined to be the shallow like parents of the
+// BlockTestFrameworkBlockOptions.
+func (m *BlockTestFramework) shallowLikeParentIDs(options *BlockTestFrameworkBlockOptions) BlockIDs {
+ return m.parentIDsByBlockAlias(options.shallowLikeParents)
}
-func (m *MessageTestFramework) parentIDsByMessageAlias(parentAliases map[string]types.Empty) MessageIDs {
- parentIDs := NewMessageIDs()
+func (m *BlockTestFramework) parentIDsByBlockAlias(parentAliases map[string]types.Empty) BlockIDs {
+ parentIDs := NewBlockIDs()
for parentAlias := range parentAliases {
if parentAlias == "Genesis" {
- parentIDs.Add(EmptyMessageID)
+ parentIDs.Add(EmptyBlockID)
continue
}
- parentIDs.Add(m.messagesByAlias[parentAlias].ID())
+ parentIDs.Add(m.blocksByAlias[parentAlias].ID())
}
return parentIDs
@@ -394,18 +413,18 @@ func (m *MessageTestFramework) parentIDsByMessageAlias(parentAliases map[string]
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MessageTestFrameworkOptions //////////////////////////////////////////////////////////////////////////////////
+// region BlockTestFrameworkOptions //////////////////////////////////////////////////////////////////////////////////
-// MessageTestFrameworkOptions is a container that holds the values of all configurable options of the
-// MessageTestFramework.
-type MessageTestFrameworkOptions struct {
+// BlockTestFrameworkOptions is a container that holds the values of all configurable options of the
+// BlockTestFramework.
+type BlockTestFrameworkOptions struct {
genesisOutputs map[string]uint64
coloredGenesisOutputs map[string]map[devnetvm.Color]uint64
}
-// NewMessageTestFrameworkOptions is the constructor for the MessageTestFrameworkOptions.
-func NewMessageTestFrameworkOptions(options ...MessageTestFrameworkOption) (frameworkOptions *MessageTestFrameworkOptions) {
- frameworkOptions = &MessageTestFrameworkOptions{
+// NewBlockTestFrameworkOptions is the constructor for the BlockTestFrameworkOptions.
+func NewBlockTestFrameworkOptions(options ...BlockTestFrameworkOption) (frameworkOptions *BlockTestFrameworkOptions) {
+ frameworkOptions = &BlockTestFrameworkOptions{
genesisOutputs: make(map[string]uint64),
coloredGenesisOutputs: make(map[string]map[devnetvm.Color]uint64),
}
@@ -417,14 +436,14 @@ func NewMessageTestFrameworkOptions(options ...MessageTestFrameworkOption) (fram
return
}
-// MessageTestFrameworkOption is the type that is used for options that can be passed into the MessageTestFramework to
+// BlockTestFrameworkOption is the type that is used for options that can be passed into the BlockTestFramework to
// configure its behavior.
-type MessageTestFrameworkOption func(*MessageTestFrameworkOptions)
+type BlockTestFrameworkOption func(*BlockTestFrameworkOptions)
-// WithGenesisOutput returns a MessageTestFrameworkOption that defines a genesis Output that is loaded as part of the
+// WithGenesisOutput returns a BlockTestFrameworkOption that defines a genesis Output that is loaded as part of the
// initial snapshot.
-func WithGenesisOutput(alias string, balance uint64) MessageTestFrameworkOption {
- return func(options *MessageTestFrameworkOptions) {
+func WithGenesisOutput(alias string, balance uint64) BlockTestFrameworkOption {
+ return func(options *BlockTestFrameworkOptions) {
if _, exists := options.genesisOutputs[alias]; exists {
panic(fmt.Sprintf("duplicate genesis output alias (%s)", alias))
}
@@ -436,10 +455,10 @@ func WithGenesisOutput(alias string, balance uint64) MessageTestFrameworkOption
}
}
-// WithColoredGenesisOutput returns a MessageTestFrameworkOption that defines a genesis Output that is loaded as part of
+// WithColoredGenesisOutput returns a BlockTestFrameworkOption that defines a genesis Output that is loaded as part of
// the initial snapshot and that supports colored coins.
-func WithColoredGenesisOutput(alias string, balances map[devnetvm.Color]uint64) MessageTestFrameworkOption {
- return func(options *MessageTestFrameworkOptions) {
+func WithColoredGenesisOutput(alias string, balances map[devnetvm.Color]uint64) BlockTestFrameworkOption {
+ return func(options *BlockTestFrameworkOptions) {
if _, exists := options.genesisOutputs[alias]; exists {
panic(fmt.Sprintf("duplicate genesis output alias (%s)", alias))
}
@@ -453,124 +472,142 @@ func WithColoredGenesisOutput(alias string, balances map[devnetvm.Color]uint64)
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region MessageTestFrameworkMessageOptions ///////////////////////////////////////////////////////////////////////////
-
-// MessageTestFrameworkMessageOptions is a struct that represents a collection of options that can be set when creating
-// a Message with the MessageTestFramework.
-type MessageTestFrameworkMessageOptions struct {
- inputs map[string]types.Empty
- outputs map[string]uint64
- coloredOutputs map[string]map[devnetvm.Color]uint64
- strongParents map[string]types.Empty
- weakParents map[string]types.Empty
- shallowLikeParents map[string]types.Empty
- issuer ed25519.PublicKey
- issuingTime time.Time
- reattachmentMessageAlias string
- sequenceNumber uint64
- overrideSequenceNumber bool
-}
-
-// NewMessageTestFrameworkMessageOptions is the constructor for the MessageTestFrameworkMessageOptions.
-func NewMessageTestFrameworkMessageOptions(options ...MessageOption) (messageOptions *MessageTestFrameworkMessageOptions) {
- messageOptions = &MessageTestFrameworkMessageOptions{
- inputs: make(map[string]types.Empty),
- outputs: make(map[string]uint64),
- strongParents: make(map[string]types.Empty),
- weakParents: make(map[string]types.Empty),
- shallowLikeParents: make(map[string]types.Empty),
+// region BlockTestFrameworkBlockOptions ///////////////////////////////////////////////////////////////////////////
+
+// BlockTestFrameworkBlockOptions is a struct that represents a collection of options that can be set when creating
+// a Block with the BlockTestFramework.
+type BlockTestFrameworkBlockOptions struct {
+ inputs map[string]types.Empty
+ outputs map[string]uint64
+ coloredOutputs map[string]map[devnetvm.Color]uint64
+ strongParents map[string]types.Empty
+ weakParents map[string]types.Empty
+ shallowLikeParents map[string]types.Empty
+ issuer ed25519.PublicKey
+ issuingTime time.Time
+ reattachmentBlockAlias string
+ sequenceNumber uint64
+ overrideSequenceNumber bool
+ ecRecord *epoch.ECRecord
+ latestConfirmedEpoch epoch.Index
+}
+
+// NewBlockTestFrameworkBlockOptions is the constructor for the BlockTestFrameworkBlockOptions.
+func NewBlockTestFrameworkBlockOptions(options ...BlockOption) (blockOptions *BlockTestFrameworkBlockOptions) {
+ blockOptions = &BlockTestFrameworkBlockOptions{
+ inputs: make(map[string]types.Empty),
+ outputs: make(map[string]uint64),
+ strongParents: make(map[string]types.Empty),
+ weakParents: make(map[string]types.Empty),
+ shallowLikeParents: make(map[string]types.Empty),
+ ecRecord: epoch.NewECRecord(0),
+ latestConfirmedEpoch: 0,
}
for _, option := range options {
- option(messageOptions)
+ option(blockOptions)
}
return
}
-// MessageOption is the type that is used for options that can be passed into the CreateMessage method to configure its
+// BlockOption is the type that is used for options that can be passed into the CreateBlock method to configure its
// behavior.
-type MessageOption func(*MessageTestFrameworkMessageOptions)
+type BlockOption func(*BlockTestFrameworkBlockOptions)
-// WithInputs returns a MessageOption that is used to provide the Inputs of the Transaction.
-func WithInputs(inputAliases ...string) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
+// WithInputs returns a BlockOption that is used to provide the Inputs of the Transaction.
+func WithInputs(inputAliases ...string) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
for _, inputAlias := range inputAliases {
options.inputs[inputAlias] = types.Void
}
}
}
-// WithOutput returns a MessageOption that is used to define a non-colored Output for the Transaction in the Message.
-func WithOutput(alias string, balance uint64) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
+// WithOutput returns a BlockOption that is used to define a non-colored Output for the Transaction in the Block.
+func WithOutput(alias string, balance uint64) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
options.outputs[alias] = balance
}
}
-// WithColoredOutput returns a MessageOption that is used to define a colored Output for the Transaction in the Message.
-func WithColoredOutput(alias string, balances map[devnetvm.Color]uint64) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
+// WithColoredOutput returns a BlockOption that is used to define a colored Output for the Transaction in the Block.
+func WithColoredOutput(alias string, balances map[devnetvm.Color]uint64) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
options.coloredOutputs[alias] = balances
}
}
-// WithStrongParents returns a MessageOption that is used to define the strong parents of the Message.
-func WithStrongParents(messageAliases ...string) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
- for _, messageAlias := range messageAliases {
- options.strongParents[messageAlias] = types.Void
+// WithStrongParents returns a BlockOption that is used to define the strong parents of the Block.
+func WithStrongParents(blockAliases ...string) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
+ for _, blockAlias := range blockAliases {
+ options.strongParents[blockAlias] = types.Void
}
}
}
-// WithWeakParents returns a MessageOption that is used to define the weak parents of the Message.
-func WithWeakParents(messageAliases ...string) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
- for _, messageAlias := range messageAliases {
- options.weakParents[messageAlias] = types.Void
+// WithWeakParents returns a BlockOption that is used to define the weak parents of the Block.
+func WithWeakParents(blockAliases ...string) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
+ for _, blockAlias := range blockAliases {
+ options.weakParents[blockAlias] = types.Void
}
}
}
-// WithShallowLikeParents returns a MessageOption that is used to define the shallow like parents of the Message.
-func WithShallowLikeParents(messageAliases ...string) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
- for _, messageAlias := range messageAliases {
- options.shallowLikeParents[messageAlias] = types.Void
+// WithShallowLikeParents returns a BlockOption that is used to define the shallow like parents of the Block.
+func WithShallowLikeParents(blockAliases ...string) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
+ for _, blockAlias := range blockAliases {
+ options.shallowLikeParents[blockAlias] = types.Void
}
}
}
-// WithIssuer returns a MessageOption that is used to define the issuer of the Message.
-func WithIssuer(issuer ed25519.PublicKey) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
+// WithIssuer returns a BlockOption that is used to define the issuer of the Block.
+func WithIssuer(issuer ed25519.PublicKey) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
options.issuer = issuer
}
}
-// WithIssuingTime returns a MessageOption that is used to set issuing time of the Message.
-func WithIssuingTime(issuingTime time.Time) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
+// WithIssuingTime returns a BlockOption that is used to set issuing time of the Block.
+func WithIssuingTime(issuingTime time.Time) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
options.issuingTime = issuingTime
}
}
-// WithReattachment returns a MessageOption that is used to select payload of which Message should be reattached.
-func WithReattachment(messageAlias string) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
- options.reattachmentMessageAlias = messageAlias
+// WithReattachment returns a BlockOption that is used to select payload of which Block should be reattached.
+func WithReattachment(blockAlias string) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
+ options.reattachmentBlockAlias = blockAlias
}
}
-// WithSequenceNumber returns a MessageOption that is used to define the sequence number of the Message.
-func WithSequenceNumber(sequenceNumber uint64) MessageOption {
- return func(options *MessageTestFrameworkMessageOptions) {
+// WithSequenceNumber returns a BlockOption that is used to define the sequence number of the Block.
+func WithSequenceNumber(sequenceNumber uint64) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
options.sequenceNumber = sequenceNumber
options.overrideSequenceNumber = true
}
}
+// WithECRecord returns a BlockOption that is used to define the ecr of the Block.
+func WithECRecord(ecRecord *epoch.ECRecord) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
+ options.ecRecord = ecRecord
+ }
+}
+
+// WithLatestConfirmedEpoch returns a BlockOption that is used to define the latestConfirmedEpoch of the Block.
+func WithLatestConfirmedEpoch(ei epoch.Index) BlockOption {
+ return func(options *BlockTestFrameworkBlockOptions) {
+ options.latestConfirmedEpoch = ei
+ }
+}
+
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region Utility functions ////////////////////////////////////////////////////////////////////////////////////////////
@@ -589,15 +626,15 @@ func randomTransactionID() (randomTransactionID utxo.TransactionID) {
return randomTransactionID
}
-func randomBranchID() (randomBranchID utxo.TransactionID) {
- if err := randomBranchID.FromRandomness(); err != nil {
+func randomConflictID() (randomConflictID utxo.TransactionID) {
+ if err := randomConflictID.FromRandomness(); err != nil {
panic(err)
}
- return randomBranchID
+ return randomConflictID
}
-func randomConflictID() (randomConflictID utxo.OutputID) {
+func randomResourceID() (randomConflictID utxo.OutputID) {
if err := randomConflictID.FromRandomness(); err != nil {
panic(err)
}
@@ -605,46 +642,46 @@ func randomConflictID() (randomConflictID utxo.OutputID) {
return randomConflictID
}
-func newTestNonceMessage(nonce uint64) *Message {
- message := NewMessage(NewParentMessageIDs().AddStrong(EmptyMessageID),
- time.Time{}, ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("test")), nonce, ed25519.Signature{})
+func newTestNonceBlock(nonce uint64) *Block {
+ block := NewBlock(NewParentBlockIDs().AddStrong(EmptyBlockID),
+ time.Time{}, ed25519.PublicKey{}, 0, payload.NewGenericDataPayload([]byte("test")), nonce, ed25519.Signature{}, 0, epoch.NewECRecord(0))
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
-func newTestDataMessage(payloadString string) *Message {
- message := NewMessage(NewParentMessageIDs().AddStrong(EmptyMessageID),
- time.Now(), ed25519.PublicKey{}, nextSequenceNumber(), payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{})
+func newTestDataBlock(payloadString string) *Block {
+ block := NewBlock(NewParentBlockIDs().AddStrong(EmptyBlockID),
+ time.Now(), ed25519.PublicKey{}, nextSequenceNumber(), payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
-func newTestDataMessagePublicKey(payloadString string, publicKey ed25519.PublicKey) *Message {
- message := NewMessage(NewParentMessageIDs().AddStrong(EmptyMessageID),
- time.Now(), publicKey, nextSequenceNumber(), payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{})
+func newTestDataBlockPublicKey(payloadString string, publicKey ed25519.PublicKey) *Block {
+ block := NewBlock(NewParentBlockIDs().AddStrong(EmptyBlockID),
+ time.Now(), publicKey, nextSequenceNumber(), payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
-func newTestParentsDataMessage(payloadString string, references ParentMessageIDs) (message *Message) {
- message = NewMessage(references, time.Now(), ed25519.PublicKey{}, nextSequenceNumber(), payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{})
+func newTestParentsDataBlock(payloadString string, references ParentBlockIDs) (block *Block) {
+ block = NewBlock(references, time.Now(), ed25519.PublicKey{}, nextSequenceNumber(), payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{}, 0, epoch.NewECRecord(0))
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
return
}
-func newTestParentsDataMessageWithOptions(payloadString string, references ParentMessageIDs, options *MessageTestFrameworkMessageOptions) (message *Message) {
+func newTestParentsDataBlockWithOptions(payloadString string, references ParentBlockIDs, options *BlockTestFrameworkBlockOptions) (block *Block) {
var sequenceNumber uint64
if options.overrideSequenceNumber {
sequenceNumber = options.sequenceNumber
@@ -652,27 +689,27 @@ func newTestParentsDataMessageWithOptions(payloadString string, references Paren
sequenceNumber = nextSequenceNumber()
}
if options.issuingTime.IsZero() {
- message = NewMessage(references, time.Now(), options.issuer, sequenceNumber, payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{})
+ block = NewBlock(references, time.Now(), options.issuer, sequenceNumber, payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{}, options.latestConfirmedEpoch, options.ecRecord)
} else {
- message = NewMessage(references, options.issuingTime, options.issuer, sequenceNumber, payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{})
+ block = NewBlock(references, options.issuingTime, options.issuer, sequenceNumber, payload.NewGenericDataPayload([]byte(payloadString)), 0, ed25519.Signature{}, options.latestConfirmedEpoch, options.ecRecord)
}
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
return
}
-func newTestParentsPayloadMessage(p payload.Payload, references ParentMessageIDs) (message *Message) {
- message = NewMessage(references, time.Now(), ed25519.PublicKey{}, nextSequenceNumber(), p, 0, ed25519.Signature{})
+func newTestParentsPayloadBlock(p payload.Payload, references ParentBlockIDs) (block *Block) {
+ block = NewBlock(references, time.Now(), ed25519.PublicKey{}, nextSequenceNumber(), p, 0, ed25519.Signature{}, 0, nil)
- if err := message.DetermineID(); err != nil {
+ if err := block.DetermineID(); err != nil {
panic(err)
}
return
}
-func newTestParentsPayloadMessageWithOptions(p payload.Payload, references ParentMessageIDs, options *MessageTestFrameworkMessageOptions) (message *Message) {
+func newTestParentsPayloadBlockWithOptions(p payload.Payload, references ParentBlockIDs, options *BlockTestFrameworkBlockOptions) (block *Block) {
var sequenceNumber uint64
if options.overrideSequenceNumber {
sequenceNumber = options.sequenceNumber
@@ -681,25 +718,25 @@ func newTestParentsPayloadMessageWithOptions(p payload.Payload, references Paren
}
var err error
if options.issuingTime.IsZero() {
- message, err = NewMessageWithValidation(references, time.Now(), options.issuer, sequenceNumber, p, 0, ed25519.Signature{})
+ block = NewBlock(references, time.Now(), options.issuer, sequenceNumber, p, 0, ed25519.Signature{}, options.latestConfirmedEpoch, options.ecRecord)
} else {
- message, err = NewMessageWithValidation(references, options.issuingTime, options.issuer, sequenceNumber, p, 0, ed25519.Signature{})
+ block = NewBlock(references, options.issuingTime, options.issuer, sequenceNumber, p, 0, ed25519.Signature{}, options.latestConfirmedEpoch, options.ecRecord)
}
if err != nil {
panic(err)
}
- if err = message.DetermineID(); err != nil {
+ if err = block.DetermineID(); err != nil {
panic(err)
}
return
}
-func newTestParentsPayloadWithTimestamp(p payload.Payload, references ParentMessageIDs, timestamp time.Time) *Message {
- message := NewMessage(references, timestamp, ed25519.PublicKey{}, nextSequenceNumber(), p, 0, ed25519.Signature{})
- if err := message.DetermineID(); err != nil {
+func newTestParentsPayloadWithTimestamp(p payload.Payload, references ParentBlockIDs, timestamp time.Time) *Block {
+ block := NewBlock(references, timestamp, ed25519.PublicKey{}, nextSequenceNumber(), p, 0, ed25519.Signature{}, 0, nil)
+ if err := block.DetermineID(); err != nil {
panic(err)
}
- return message
+ return block
}
type wallet struct {
@@ -794,11 +831,11 @@ var (
selfNode = identity.New(selfLocalIdentity.PublicKey())
peerNode = identity.GenerateIdentity()
testSchedulerParams = SchedulerParams{
- MaxBufferSize: testMaxBuffer,
- Rate: testRate,
- AccessManaMapRetrieverFunc: mockAccessManaMapRetriever,
- TotalAccessManaRetrieveFunc: mockTotalAccessManaRetriever,
- ConfirmedMessageScheduleThreshold: time.Minute,
+ MaxBufferSize: testMaxBuffer,
+ Rate: testRate,
+ AccessManaMapRetrieverFunc: mockAccessManaMapRetriever,
+ TotalAccessManaRetrieveFunc: mockTotalAccessManaRetriever,
+ ConfirmedBlockScheduleThreshold: time.Minute,
}
)
@@ -828,6 +865,9 @@ func NewTestTangle(options ...Option) *Tangle {
cacheTimeProvider := database.NewCacheTimeProvider(0)
options = append(options, SchedulerConfig(testSchedulerParams), CacheTimeProvider(cacheTimeProvider), TimeSinceConfirmationThreshold(tscThreshold))
+ options = append(options, CommitmentFunc(func() (*epoch.ECRecord, epoch.Index, error) {
+ return epoch.NewECRecord(0), 0, nil
+ }))
t := New(options...)
t.ConfirmationOracle = &MockConfirmationOracle{}
@@ -859,13 +899,13 @@ func (m *MockConfirmationOracle) IsMarkerConfirmed(markers.Marker) bool {
return false
}
-// IsMessageConfirmed mocks its interface function.
-func (m *MockConfirmationOracle) IsMessageConfirmed(msgID MessageID) bool {
+// IsBlockConfirmed mocks its interface function.
+func (m *MockConfirmationOracle) IsBlockConfirmed(blkID BlockID) bool {
return false
}
-// IsBranchConfirmed mocks its interface function.
-func (m *MockConfirmationOracle) IsBranchConfirmed(branchID utxo.TransactionID) bool {
+// IsConflictConfirmed mocks its interface function.
+func (m *MockConfirmationOracle) IsConflictConfirmed(conflictID utxo.TransactionID) bool {
return false
}
@@ -892,7 +932,7 @@ func (m *MockWeightProvider) Update(t time.Time, nodeID identity.ID) {
}
// Weight mocks its interface function.
-func (m *MockWeightProvider) Weight(message *Message) (weight, totalWeight float64) {
+func (m *MockWeightProvider) Weight(block *Block) (weight, totalWeight float64) {
return 1, 1
}
@@ -913,34 +953,34 @@ type SimpleMockOnTangleVoting struct {
// LikedConflictMembers is a struct that holds information about which Conflict is the liked one out of a set of
// ConflictMembers.
type LikedConflictMembers struct {
- likedBranch utxo.TransactionID
+ likedConflict utxo.TransactionID
conflictMembers utxo.TransactionIDs
}
-// LikedConflictMember returns branches that are liked instead of a disliked branch as predefined.
-func (o *SimpleMockOnTangleVoting) LikedConflictMember(branchID utxo.TransactionID) (likedBranchID utxo.TransactionID, conflictMembers utxo.TransactionIDs) {
- likedConflictMembers := o.likedConflictMember[branchID]
+// LikedConflictMember returns conflicts that are liked instead of a disliked conflict as predefined.
+func (o *SimpleMockOnTangleVoting) LikedConflictMember(conflictID utxo.TransactionID) (likedConflictID utxo.TransactionID, conflictMembers utxo.TransactionIDs) {
+ likedConflictMembers := o.likedConflictMember[conflictID]
innerConflictMembers := likedConflictMembers.conflictMembers.Clone()
- innerConflictMembers.Delete(branchID)
+ innerConflictMembers.Delete(conflictID)
- return likedConflictMembers.likedBranch, innerConflictMembers
+ return likedConflictMembers.likedConflict, innerConflictMembers
}
-// BranchLiked returns whether the branch is the winner across all conflict sets (it is in the liked reality).
-func (o *SimpleMockOnTangleVoting) BranchLiked(branchID utxo.TransactionID) (branchLiked bool) {
- likedConflictMembers, ok := o.likedConflictMember[branchID]
+// ConflictLiked returns whether the conflict is the winner across all conflict sets (it is in the liked reality).
+func (o *SimpleMockOnTangleVoting) ConflictLiked(conflictID utxo.TransactionID) (conflictLiked bool) {
+ likedConflictMembers, ok := o.likedConflictMember[conflictID]
if !ok {
return false
}
- return likedConflictMembers.conflictMembers.Has(branchID)
+ return likedConflictMembers.conflictMembers.Has(conflictID)
}
-func emptyLikeReferences(payload payload.Payload, parents MessageIDs, _ time.Time) (references ParentMessageIDs, err error) {
+func emptyLikeReferences(payload payload.Payload, parents BlockIDs, _ time.Time) (references ParentBlockIDs, err error) {
return emptyLikeReferencesFromStrongParents(parents), nil
}
-func emptyLikeReferencesFromStrongParents(parents MessageIDs) (references ParentMessageIDs) {
- return NewParentMessageIDs().AddAll(StrongParentType, parents)
+func emptyLikeReferencesFromStrongParents(parents BlockIDs) (references ParentBlockIDs) {
+ return NewParentBlockIDs().AddAll(StrongParentType, parents)
}
// EventMock acts as a container for event mocks.
@@ -951,8 +991,8 @@ type EventMock struct {
test *testing.T
attached []struct {
- *event.Event[*MessageProcessedEvent]
- *event.Closure[*MessageProcessedEvent]
+ *event.Event[*BlockProcessedEvent]
+ *event.Closure[*BlockProcessedEvent]
}
}
@@ -963,9 +1003,9 @@ func NewEventMock(t *testing.T, approvalWeightManager *ApprovalWeightManager) *E
}
// attach all events
- approvalWeightManager.Events.BranchWeightChanged.Hook(event.NewClosure(e.BranchWeightChanged))
+ approvalWeightManager.Events.ConflictWeightChanged.Hook(event.NewClosure(e.ConflictWeightChanged))
approvalWeightManager.Events.MarkerWeightChanged.Hook(event.NewClosure(e.MarkerWeightChanged))
- approvalWeightManager.Events.MessageProcessed.Hook(event.NewClosure(e.MessageProcessed))
+ approvalWeightManager.Events.BlockProcessed.Hook(event.NewClosure(e.BlockProcessed))
// assure that all available events are mocked
numEvents := reflect.ValueOf(approvalWeightManager.Events).Elem().NumField()
@@ -1006,9 +1046,9 @@ func (e *EventMock) AssertExpectations(t mock.TestingT) bool {
return e.Mock.AssertExpectations(t)
}
-// BranchWeightChanged is the mocked BranchWeightChanged function.
-func (e *EventMock) BranchWeightChanged(event *BranchWeightChangedEvent) {
- e.Called(event.BranchID, event.Weight)
+// ConflictWeightChanged is the mocked ConflictWeightChanged function.
+func (e *EventMock) ConflictWeightChanged(event *ConflictWeightChangedEvent) {
+ e.Called(event.ConflictID, event.Weight)
atomic.AddUint64(&e.calledEvents, 1)
}
@@ -1020,9 +1060,9 @@ func (e *EventMock) MarkerWeightChanged(event *MarkerWeightChangedEvent) {
atomic.AddUint64(&e.calledEvents, 1)
}
-// MessageProcessed is the mocked MessageProcessed function.
-func (e *EventMock) MessageProcessed(event *MessageProcessedEvent) {
- e.Called(event.MessageID)
+// BlockProcessed is the mocked BlockProcessed function.
+func (e *EventMock) BlockProcessed(event *BlockProcessedEvent) {
+ e.Called(event.BlockID)
atomic.AddUint64(&e.calledEvents, 1)
}
diff --git a/packages/tangle/timemanager.go b/packages/tangle/timemanager.go
index 2a90dbc261..0ce4c194ac 100644
--- a/packages/tangle/timemanager.go
+++ b/packages/tangle/timemanager.go
@@ -14,28 +14,29 @@ import (
"github.com/iotaledger/hive.go/timeutil"
"github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/goshimmer/packages/epoch"
)
const (
- lastConfirmedKey = "LastAcceptedMessage"
+ lastConfirmedKey = "LastAcceptedBlock"
)
// region TimeManager //////////////////////////////////////////////////////////////////////////////////////////////////
// TimeManager is a Tangle component that keeps track of the TangleTime. The TangleTime can be seen as a clock for the
-// entire network as it tracks the time of the last confirmed message. Comparing the issuing time of the last confirmed
-// message to the node's current wall clock time then yields a reasonable assessment of how much in sync the node is.
+// entire network as it tracks the time of the last confirmed block. Comparing the issuing time of the last confirmed
+// block to the node's current wall clock time then yields a reasonable assessment of how much in sync the node is.
type TimeManager struct {
Events *TimeManagerEvents
tangle *Tangle
startSynced bool
- lastAcceptedMutex sync.RWMutex
- lastAcceptedMessage LastMessage
- lastSyncedMutex sync.RWMutex
- lastSynced bool
- bootstrapped bool
+ lastAcceptedMutex sync.RWMutex
+ lastAcceptedBlock LastBlock
+ lastSyncedMutex sync.RWMutex
+ lastSynced bool
+ bootstrapped bool
ctx context.Context
cancel context.CancelFunc
@@ -51,19 +52,19 @@ func NewTimeManager(tangle *Tangle) *TimeManager {
t.ctx, t.cancel = context.WithCancel(context.Background())
// initialize with Genesis
- t.lastAcceptedMessage = LastMessage{
- MessageID: EmptyMessageID,
- MessageTime: time.Unix(DefaultGenesisTime, 0),
- UpdateTime: time.Unix(DefaultGenesisTime, 0),
+ t.lastAcceptedBlock = LastBlock{
+ BlockID: EmptyBlockID,
+ BlockTime: tangle.Options.GenesisTime,
+ UpdateTime: tangle.Options.GenesisTime,
}
- marshaledLastConfirmedMessage, err := tangle.Options.Store.Get(kvstore.Key(lastConfirmedKey))
+ marshaledLastConfirmedBlock, err := tangle.Options.Store.Get(kvstore.Key(lastConfirmedKey))
if err != nil && !errors.Is(err, kvstore.ErrKeyNotFound) {
panic(err)
}
// load from storage if key was found
- if marshaledLastConfirmedMessage != nil {
- if t.lastAcceptedMessage, _, err = lastMessageFromBytes(marshaledLastConfirmedMessage); err != nil {
+ if marshaledLastConfirmedBlock != nil {
+ if t.lastAcceptedBlock, _, err = lastBlockFromBytes(marshaledLastConfirmedBlock); err != nil {
panic(err)
}
}
@@ -81,8 +82,8 @@ func (t *TimeManager) Start() {
// Setup sets up the behavior of the component by making it attach to the relevant events of other components.
func (t *TimeManager) Setup() {
- t.tangle.ConfirmationOracle.Events().MessageConfirmed.Attach(event.NewClosure(func(event *MessageConfirmedEvent) {
- t.updateTime(event.Message)
+ t.tangle.ConfirmationOracle.Events().BlockAccepted.Attach(event.NewClosure(func(event *BlockAcceptedEvent) {
+ t.updateTime(event.Block)
t.updateSyncedState()
}))
t.Start()
@@ -93,8 +94,8 @@ func (t *TimeManager) Shutdown() {
t.lastAcceptedMutex.RLock()
defer t.lastAcceptedMutex.RUnlock()
- if err := t.tangle.Options.Store.Set(kvstore.Key(lastConfirmedKey), t.lastAcceptedMessage.Bytes()); err != nil {
- t.tangle.Events.Error.Trigger(errors.Errorf("failed to persists LastAcceptedMessage (%v): %w", err, cerrors.ErrFatal))
+ if err := t.tangle.Options.Store.Set(kvstore.Key(lastConfirmedKey), t.lastAcceptedBlock.Bytes()); err != nil {
+ t.tangle.Events.Error.Trigger(errors.Errorf("failed to persists LastAcceptedBlock (%v): %w", err, cerrors.ErrFatal))
return
}
@@ -102,31 +103,31 @@ func (t *TimeManager) Shutdown() {
t.cancel()
}
-// LastAcceptedMessage returns the last confirmed message.
-func (t *TimeManager) LastAcceptedMessage() LastMessage {
+// LastAcceptedBlock returns the last confirmed block.
+func (t *TimeManager) LastAcceptedBlock() LastBlock {
t.lastAcceptedMutex.RLock()
defer t.lastAcceptedMutex.RUnlock()
- return t.lastAcceptedMessage
+ return t.lastAcceptedBlock
}
-// LastConfirmedMessage returns the last confirmed message.
-func (t *TimeManager) LastConfirmedMessage() LastMessage {
+// LastConfirmedBlock returns the last confirmed block.
+func (t *TimeManager) LastConfirmedBlock() LastBlock {
t.lastAcceptedMutex.RLock()
defer t.lastAcceptedMutex.RUnlock()
- return t.lastAcceptedMessage
+ return t.lastAcceptedBlock
}
-// ATT returns the Acceptance Tangle Time, i.e., the issuing time of the last accepted message.
+// ATT returns the Acceptance Tangle Time, i.e., the issuing time of the last accepted block.
func (t *TimeManager) ATT() time.Time {
t.lastAcceptedMutex.RLock()
defer t.lastAcceptedMutex.RUnlock()
- return t.lastAcceptedMessage.MessageTime
+ return t.lastAcceptedBlock.BlockTime
}
-// CTT returns the confirmed tangle time, i.e. the issuing time of the last confirmed message.
+// CTT returns the confirmed tangle time, i.e. the issuing time of the last confirmed block.
// For now, it's just a stub, it actually returns ATT.
func (t *TimeManager) CTT() time.Time {
return t.ATT()
@@ -144,6 +145,14 @@ func (t *TimeManager) RCTT() time.Time {
return t.RATT()
}
+// ActivityTime return the time used for defining nodes' activity window.
+func (t *TimeManager) ActivityTime() time.Time {
+ if t.Bootstrapped() {
+ return t.RATT()
+ }
+ return t.ATT()
+}
+
// Bootstrapped returns whether the node has bootstrapped based on the difference between CTT and the current wall time which can
// be configured via SyncTimeWindow.
// When the node becomes bootstrapped and this method returns true, it can't return false after that.
@@ -162,7 +171,7 @@ func (t *TimeManager) Synced() bool {
}
func (t *TimeManager) synced() bool {
- if t.startSynced && t.CTT().Unix() == DefaultGenesisTime {
+ if t.startSynced && t.CTT().Unix() == epoch.GenesisTime {
return true
}
@@ -180,38 +189,43 @@ func (t *TimeManager) updateSyncedState() {
t.Events.SyncChanged.Trigger(&SyncChangedEvent{Synced: newSynced})
if newSynced {
t.bootstrapped = true
+ t.Events.Bootstrapped.Trigger(&BootstrappedEvent{})
}
}
}
-// updateTime updates the last confirmed message.
-func (t *TimeManager) updateTime(message *Message) {
+// updateTime updates the last confirmed block.
+func (t *TimeManager) updateTime(block *Block) {
t.lastAcceptedMutex.Lock()
defer t.lastAcceptedMutex.Unlock()
- if t.lastAcceptedMessage.MessageTime.After(message.IssuingTime()) {
+ if t.lastAcceptedBlock.BlockTime.After(block.IssuingTime()) {
return
}
- t.lastAcceptedMessage = LastMessage{
- MessageID: message.ID(),
- MessageTime: message.IssuingTime(),
- UpdateTime: time.Now(),
+ t.lastAcceptedBlock = LastBlock{
+ BlockID: block.ID(),
+ BlockTime: block.IssuingTime(),
+ UpdateTime: time.Now(),
}
t.Events.AcceptanceTimeUpdated.Trigger(&TimeUpdate{
- NewTime: t.lastAcceptedMessage.UpdateTime,
+ BlockID: t.lastAcceptedBlock.BlockID,
+ ATT: t.lastAcceptedBlock.BlockTime,
+ UpdateTime: t.lastAcceptedBlock.UpdateTime,
})
t.Events.ConfirmedTimeUpdated.Trigger(&TimeUpdate{
- NewTime: t.lastAcceptedMessage.UpdateTime,
+ BlockID: t.lastAcceptedBlock.BlockID,
+ ATT: t.lastAcceptedBlock.BlockTime,
+ UpdateTime: t.lastAcceptedBlock.UpdateTime,
})
}
func (t *TimeManager) lastAcceptedTime() time.Time {
t.lastAcceptedMutex.RLock()
defer t.lastAcceptedMutex.RUnlock()
- return t.lastAcceptedMessage.UpdateTime
+ return t.lastAcceptedBlock.UpdateTime
}
// the main loop runs the updateSyncedState at least every synced time window interval to keep the synced state updated
@@ -227,19 +241,19 @@ func (t *TimeManager) mainLoop() {
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// region LastAcceptedMessage /////////////////////////////////////////////////////////////////////////////////////////
+// region LastAcceptedBlock /////////////////////////////////////////////////////////////////////////////////////////
-// LastMessage is a wrapper type for the last confirmed message, consisting of MessageID, MessageTime and UpdateTime.
-type LastMessage struct {
- MessageID MessageID `serix:"0"`
- // MessageTime field is the time of the last confirmed message.
- MessageTime time.Time `serix:"1"`
- // UpdateTime field is the time when the last confirmed message was updated.
+// LastBlock is a wrapper type for the last confirmed block, consisting of BlockID, BlockTime and UpdateTime.
+type LastBlock struct {
+ BlockID BlockID `serix:"0"`
+ // BlockTime field is the time of the last confirmed block.
+ BlockTime time.Time `serix:"1"`
+ // UpdateTime field is the time when the last confirmed block was updated.
UpdateTime time.Time `serix:"2"`
}
-// lastMessageFromBytes unmarshals a LastMessage object from a sequence of bytes.
-func lastMessageFromBytes(data []byte) (lcm LastMessage, consumedBytes int, err error) {
+// lastBlockFromBytes unmarshals a LastBlock object from a sequence of bytes.
+func lastBlockFromBytes(data []byte) (lcm LastBlock, consumedBytes int, err error) {
consumedBytes, err = serix.DefaultAPI.Decode(context.Background(), data, &lcm, serix.WithValidation())
if err != nil {
err = errors.Errorf("failed to parse Background: %w", err)
@@ -248,8 +262,8 @@ func lastMessageFromBytes(data []byte) (lcm LastMessage, consumedBytes int, err
return
}
-// Bytes returns a marshaled version of the LastMessage.
-func (l LastMessage) Bytes() (marshaledLastConfirmedMessage []byte) {
+// Bytes returns a marshaled version of the LastBlock.
+func (l LastBlock) Bytes() (marshaledLastConfirmedBlock []byte) {
objBytes, err := serix.DefaultAPI.Encode(context.Background(), l, serix.WithValidation())
if err != nil {
// TODO: what do?
@@ -258,11 +272,11 @@ func (l LastMessage) Bytes() (marshaledLastConfirmedMessage []byte) {
return objBytes
}
-// String returns a human-readable version of the LastMessage.
-func (l LastMessage) String() string {
- return stringify.Struct("LastMessage",
- stringify.StructField("MessageID", l.MessageID),
- stringify.StructField("MessageTime", l.MessageTime),
+// String returns a human-readable version of the LastBlock.
+func (l LastBlock) String() string {
+ return stringify.Struct("LastBlock",
+ stringify.StructField("BlockID", l.BlockID),
+ stringify.StructField("BlockTime", l.BlockTime),
stringify.StructField("UpdateTime", l.UpdateTime),
)
}
diff --git a/packages/tangle/tipmanager.go b/packages/tangle/tipmanager.go
index b4729b3850..41eab5ba89 100644
--- a/packages/tangle/tipmanager.go
+++ b/packages/tangle/tipmanager.go
@@ -11,6 +11,7 @@ import (
"github.com/iotaledger/hive.go/generics/walker"
"github.com/iotaledger/goshimmer/packages/clock"
+ "github.com/iotaledger/goshimmer/packages/epoch"
"github.com/iotaledger/goshimmer/packages/markers"
"github.com/iotaledger/goshimmer/packages/tangle/payload"
)
@@ -22,17 +23,17 @@ const tipLifeGracePeriod = maxParentsTimeDifference - 1*time.Minute
// TipManager manages a map of tips and emits events for their removal and addition.
type TipManager struct {
tangle *Tangle
- tips *randommap.RandomMap[MessageID, MessageID]
+ tips *randommap.RandomMap[BlockID, BlockID]
tipsCleaner *TipsCleaner
tipsConflictTracker *TipsConflictTracker
Events *TipManagerEvents
}
// NewTipManager creates a new tip-selector.
-func NewTipManager(tangle *Tangle, tips ...MessageID) *TipManager {
+func NewTipManager(tangle *Tangle, tips ...BlockID) *TipManager {
tipManager := &TipManager{
tangle: tangle,
- tips: randommap.New[MessageID, MessageID](),
+ tips: randommap.New[BlockID, BlockID](),
tipsConflictTracker: NewTipsConflictTracker(tangle),
Events: newTipManagerEvents(),
}
@@ -49,12 +50,12 @@ func NewTipManager(tangle *Tangle, tips ...MessageID) *TipManager {
// Setup sets up the behavior of the component by making it attach to the relevant events of other components.
func (t *TipManager) Setup() {
- t.tangle.Scheduler.Events.MessageScheduled.Attach(event.NewClosure(func(event *MessageScheduledEvent) {
- t.tangle.Storage.Message(event.MessageID).Consume(t.AddTip)
+ t.tangle.Scheduler.Events.BlockScheduled.Attach(event.NewClosure(func(event *BlockScheduledEvent) {
+ t.tangle.Storage.Block(event.BlockID).Consume(t.AddTip)
}))
- t.tangle.ConfirmationOracle.Events().MessageConfirmed.Attach(event.NewClosure(func(event *MessageConfirmedEvent) {
- t.removeStrongParents(event.Message)
+ t.tangle.ConfirmationOracle.Events().BlockAccepted.Attach(event.NewClosure(func(event *BlockAcceptedEvent) {
+ t.removeStrongParents(event.Block)
}))
t.tangle.OrphanageManager.Events.BlockOrphaned.Hook(event.NewClosure(func(event *BlockOrphanedEvent) {
@@ -62,10 +63,10 @@ func (t *TipManager) Setup() {
}))
t.tangle.TimeManager.Events.AcceptanceTimeUpdated.Attach(event.NewClosure(func(event *TimeUpdate) {
- t.tipsCleaner.RemoveBefore(event.NewTime.Add(-t.tangle.Options.TimeSinceConfirmationThreshold))
+ t.tipsCleaner.RemoveBefore(event.UpdateTime.Add(-t.tangle.Options.TimeSinceConfirmationThreshold))
}))
- t.tangle.OrphanageManager.Events.AllChildrenOrphaned.Hook(event.NewClosure(func(block *Message) {
+ t.tangle.OrphanageManager.Events.AllChildrenOrphaned.Hook(event.NewClosure(func(block *Block) {
if clock.Since(block.IssuingTime()) > tipLifeGracePeriod {
return
}
@@ -76,28 +77,28 @@ func (t *TipManager) Setup() {
t.tipsConflictTracker.Setup()
}
-// set adds the given messageIDs as tips.
-func (t *TipManager) set(tips ...MessageID) {
- for _, messageID := range tips {
- t.tips.Set(messageID, messageID)
+// set adds the given blockIDs as tips.
+func (t *TipManager) set(tips ...BlockID) {
+ for _, blockID := range tips {
+ t.tips.Set(blockID, blockID)
}
}
-// AddTip adds the message to the tip pool if its issuing time is within the tipLifeGracePeriod.
-// Parents of a message that are currently tip lose the tip status and are removed.
-func (t *TipManager) AddTip(message *Message) {
- messageID := message.ID()
+// AddTip adds the block to the tip pool if its issuing time is within the tipLifeGracePeriod.
+// Parents of a block that are currently tip lose the tip status and are removed.
+func (t *TipManager) AddTip(block *Block) {
+ blockID := block.ID()
- if clock.Since(message.IssuingTime()) > tipLifeGracePeriod {
+ if clock.Since(block.IssuingTime()) > tipLifeGracePeriod {
return
}
- // Check if any approvers that are confirmed or scheduled and return if true, to guarantee that the parents are not added to the tipset after its approvers.
- if t.checkApprovers(messageID) {
+ // Check if any children that are confirmed or scheduled and return if true, to guarantee that the parents are not added to the tipset after its children.
+ if t.checkChildren(blockID) {
return
}
- if !t.addTip(message) {
+ if !t.addTip(block) {
return
}
@@ -106,78 +107,78 @@ func (t *TipManager) AddTip(message *Message) {
return
}
- // a tip loses its tip status if it is referenced by another message
- t.removeStrongParents(message)
+ // a tip loses its tip status if it is referenced by another block
+ t.removeStrongParents(block)
}
-func (t *TipManager) addTip(message *Message) (added bool) {
- messageID := message.ID()
+func (t *TipManager) addTip(block *Block) (added bool) {
+ blockID := block.ID()
var invalid bool
- t.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- invalid = messageMetadata.IsSubjectivelyInvalid()
+ t.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ invalid = blockMetadata.IsSubjectivelyInvalid()
})
if invalid {
- // fmt.Println("TipManager: skipping adding tip because it is subjectively invalid", messageID)
+ // fmt.Println("TipManager: skipping adding tip because it is subjectively invalid", blockID)
return false
}
- if t.tips.Set(messageID, messageID) {
- t.tipsConflictTracker.AddTip(messageID)
+ if t.tips.Set(blockID, blockID) {
+ t.tipsConflictTracker.AddTip(blockID)
t.Events.TipAdded.Trigger(&TipEvent{
- MessageID: messageID,
+ BlockID: blockID,
})
- t.tipsCleaner.Add(message.IssuingTime(), messageID)
+ t.tipsCleaner.Add(block.IssuingTime(), blockID)
return true
}
return false
}
-func (t *TipManager) deleteTip(msgID MessageID) (deleted bool) {
- if _, deleted = t.tips.Delete(msgID); deleted {
- t.tipsConflictTracker.RemoveTip(msgID)
+func (t *TipManager) deleteTip(blkID BlockID) (deleted bool) {
+ if _, deleted = t.tips.Delete(blkID); deleted {
+ t.tipsConflictTracker.RemoveTip(blkID)
t.Events.TipRemoved.Trigger(&TipEvent{
- MessageID: msgID,
+ BlockID: blkID,
})
}
return
}
-// checkApprovers returns true if the message has any confirmed or scheduled approver.
-func (t *TipManager) checkApprovers(messageID MessageID) bool {
- approverScheduledConfirmed := false
- t.tangle.Storage.Approvers(messageID).Consume(func(approver *Approver) {
- if approverScheduledConfirmed {
+// checkChildren returns true if the block has any confirmed or scheduled child.
+func (t *TipManager) checkChildren(blockID BlockID) bool {
+ childScheduledConfirmed := false
+ t.tangle.Storage.Children(blockID).Consume(func(child *Child) {
+ if childScheduledConfirmed {
return
}
- approverScheduledConfirmed = t.tangle.ConfirmationOracle.IsMessageConfirmed(approver.ApproverMessageID())
- if !approverScheduledConfirmed {
- t.tangle.Storage.MessageMetadata(approver.ApproverMessageID()).Consume(func(messageMetadata *MessageMetadata) {
- approverScheduledConfirmed = messageMetadata.Scheduled()
+ childScheduledConfirmed = t.tangle.ConfirmationOracle.IsBlockConfirmed(child.ChildBlockID())
+ if !childScheduledConfirmed {
+ t.tangle.Storage.BlockMetadata(child.ChildBlockID()).Consume(func(blockMetadata *BlockMetadata) {
+ childScheduledConfirmed = blockMetadata.Scheduled()
})
}
})
- return approverScheduledConfirmed
+ return childScheduledConfirmed
}
-func (t *TipManager) removeStrongParents(message *Message) {
- message.ForEachParentByType(StrongParentType, func(parentMessageID MessageID) bool {
- // We do not want to remove the tip if it is the last one representing a pending branch.
- // if t.isLastTipForBranch(parentMessageID) {
+func (t *TipManager) removeStrongParents(block *Block) {
+ block.ForEachParentByType(StrongParentType, func(parentBlockID BlockID) bool {
+ // We do not want to remove the tip if it is the last one representing a pending conflict.
+ // if t.isLastTipForConflict(parentBlockID) {
// return true
// }
- t.deleteTip(parentMessageID)
+ t.deleteTip(parentBlockID)
return true
})
}
// Tips returns count number of tips, maximum MaxParentsCount.
-func (t *TipManager) Tips(p payload.Payload, countParents int) (parents MessageIDs) {
+func (t *TipManager) Tips(p payload.Payload, countParents int) (parents BlockIDs) {
if countParents > MaxParentsCount {
countParents = MaxParentsCount
}
@@ -195,56 +196,56 @@ func (t *TipManager) Tips(p payload.Payload, countParents int) (parents MessageI
//
// This function is optimized through the use of markers and the following assumption:
// If there's any unconfirmed block >TSC threshold, then the oldest confirmed block will be >TSC threshold, too.
-func (t *TipManager) isPastConeTimestampCorrect(messageID MessageID) (timestampValid bool) {
+func (t *TipManager) isPastConeTimestampCorrect(blockID BlockID) (timestampValid bool) {
minSupportedTimestamp := t.tangle.TimeManager.ATT().Add(-t.tangle.Options.TimeSinceConfirmationThreshold)
timestampValid = true
- // skip TSC check if no message has been confirmed to allow attaching to genesis
- if t.tangle.TimeManager.LastAcceptedMessage().MessageID == EmptyMessageID {
- // if the genesis message is the last confirmed message, then there is no point in performing tangle walk
- // return true so that the network can start issuing messages when the tangle starts
+ // skip TSC check if no block has been confirmed to allow attaching to genesis
+ if t.tangle.TimeManager.LastAcceptedBlock().BlockID == EmptyBlockID {
+ // if the genesis block is the last confirmed block, then there is no point in performing tangle walk
+ // return true so that the network can start issuing blocks when the tangle starts
return true
}
- t.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- timestampValid = minSupportedTimestamp.Before(message.IssuingTime())
+ t.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ timestampValid = minSupportedTimestamp.Before(block.IssuingTime())
})
if !timestampValid {
return false
}
- if t.tangle.ConfirmationOracle.IsMessageConfirmed(messageID) {
- // return true if message is confirmed and has valid timestamp
+ if t.tangle.ConfirmationOracle.IsBlockConfirmed(blockID) {
+ // return true if block is confirmed and has valid timestamp
return true
}
markerWalker := walker.New[markers.Marker](false)
- messageWalker := walker.New[MessageID](false)
+ blockWalker := walker.New[BlockID](false)
- t.processMessage(messageID, messageWalker, markerWalker)
- previousMessageID := messageID
+ t.processBlock(blockID, blockWalker, markerWalker)
+ previousBlockID := blockID
for markerWalker.HasNext() && timestampValid {
marker := markerWalker.Next()
- previousMessageID, timestampValid = t.checkMarker(marker, previousMessageID, messageWalker, markerWalker, minSupportedTimestamp)
+ previousBlockID, timestampValid = t.checkMarker(marker, previousBlockID, blockWalker, markerWalker, minSupportedTimestamp)
}
- for messageWalker.HasNext() && timestampValid {
- timestampValid = t.checkMessage(messageWalker.Next(), messageWalker, minSupportedTimestamp)
+ for blockWalker.HasNext() && timestampValid {
+ timestampValid = t.checkBlock(blockWalker.Next(), blockWalker, minSupportedTimestamp)
}
return timestampValid
}
-func (t *TipManager) processMessage(messageID MessageID, messageWalker *walker.Walker[MessageID], markerWalker *walker.Walker[markers.Marker]) {
- t.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- if messageMetadata.StructureDetails() == nil || messageMetadata.StructureDetails().PastMarkers().Size() == 0 {
- // need to walk messages
- messageWalker.Push(messageID)
+func (t *TipManager) processBlock(blockID BlockID, blockWalker *walker.Walker[BlockID], markerWalker *walker.Walker[markers.Marker]) {
+ t.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ if blockMetadata.StructureDetails() == nil || blockMetadata.StructureDetails().PastMarkers().Size() == 0 {
+ // need to walk blocks
+ blockWalker.Push(blockID)
return
}
- messageMetadata.StructureDetails().PastMarkers().ForEach(func(sequenceID markers.SequenceID, index markers.Index) bool {
+ blockMetadata.StructureDetails().PastMarkers().ForEach(func(sequenceID markers.SequenceID, index markers.Index) bool {
if sequenceID == 0 && index == 0 {
- // need to walk messages
- messageWalker.Push(messageID)
+ // need to walk blocks
+ blockWalker.Push(blockID)
return false
}
pastMarker := markers.NewMarker(sequenceID, index)
@@ -254,24 +255,24 @@ func (t *TipManager) processMessage(messageID MessageID, messageWalker *walker.W
})
}
-func (t *TipManager) checkMarker(marker markers.Marker, previousMessageID MessageID, messageWalker *walker.Walker[MessageID], markerWalker *walker.Walker[markers.Marker], minSupportedTimestamp time.Time) (messageID MessageID, timestampValid bool) {
- messageID, messageIssuingTime := t.getMarkerMessage(marker)
+func (t *TipManager) checkMarker(marker markers.Marker, previousBlockID BlockID, blockWalker *walker.Walker[BlockID], markerWalker *walker.Walker[markers.Marker], minSupportedTimestamp time.Time) (blockID BlockID, timestampValid bool) {
+ blockID, blockIssuingTime := t.getMarkerBlock(marker)
// marker before minSupportedTimestamp
- if messageIssuingTime.Before(minSupportedTimestamp) {
+ if blockIssuingTime.Before(minSupportedTimestamp) {
// marker before minSupportedTimestamp
- if !t.tangle.ConfirmationOracle.IsMessageConfirmed(messageID) {
+ if !t.tangle.ConfirmationOracle.IsBlockConfirmed(blockID) {
// if unconfirmed, then incorrect
markerWalker.StopWalk()
- return messageID, false
+ return blockID, false
}
- // if closest past marker is confirmed and before minSupportedTimestamp, then need to walk message past cone of the previously marker message
- messageWalker.Push(previousMessageID)
- return messageID, true
+ // if closest past marker is confirmed and before minSupportedTimestamp, then need to walk block past cone of the previously marker block
+ blockWalker.Push(previousBlockID)
+ return blockID, true
}
// confirmed after minSupportedTimestamp
- if t.tangle.ConfirmationOracle.IsMessageConfirmed(messageID) {
- return messageID, true
+ if t.tangle.ConfirmationOracle.IsBlockConfirmed(blockID) {
+ return blockID, true
}
// unconfirmed after minSupportedTimestamp
@@ -284,11 +285,11 @@ func (t *TipManager) checkMarker(marker markers.Marker, previousMessageID Messag
}
t.tangle.Booker.MarkersManager.Manager.Sequence(marker.SequenceID()).Consume(func(sequence *markers.Sequence) {
- // If there is a confirmed marker before the oldest unconfirmed marker, and it's older than minSupportedTimestamp, need to walk message past cone of oldestUnconfirmedMarker.
+ // If there is a confirmed marker before the oldest unconfirmed marker, and it's older than minSupportedTimestamp, need to walk block past cone of oldestUnconfirmedMarker.
if sequence.LowestIndex() < oldestUnconfirmedMarker.Index() {
confirmedMarkerIdx := t.getPreviousConfirmedIndex(sequence, oldestUnconfirmedMarker.Index())
if t.isMarkerOldAndConfirmed(markers.NewMarker(sequence.ID(), confirmedMarkerIdx), minSupportedTimestamp) {
- messageWalker.Push(t.tangle.Booker.MarkersManager.MessageID(oldestUnconfirmedMarker))
+ blockWalker.Push(t.tangle.Booker.MarkersManager.BlockID(oldestUnconfirmedMarker))
}
}
@@ -296,9 +297,9 @@ func (t *TipManager) checkMarker(marker markers.Marker, previousMessageID Messag
referencedMarkers := sequence.ReferencedMarkers(marker.Index())
referencedMarkers.ForEach(func(sequenceID markers.SequenceID, index markers.Index) bool {
referencedMarker := markers.NewMarker(sequenceID, index)
- // if referenced marker is confirmed and older than minSupportedTimestamp, walk unconfirmed message past cone of oldestUnconfirmedMarker
+ // if referenced marker is confirmed and older than minSupportedTimestamp, walk unconfirmed block past cone of oldestUnconfirmedMarker
if t.isMarkerOldAndConfirmed(referencedMarker, minSupportedTimestamp) {
- messageWalker.Push(t.tangle.Booker.MarkersManager.MessageID(oldestUnconfirmedMarker))
+ blockWalker.Push(t.tangle.Booker.MarkersManager.BlockID(oldestUnconfirmedMarker))
return false
}
// otherwise, process the referenced marker
@@ -306,13 +307,13 @@ func (t *TipManager) checkMarker(marker markers.Marker, previousMessageID Messag
return true
})
})
- return messageID, true
+ return blockID, true
}
-// isMarkerOldAndConfirmed check whether previousMarker is confirmed and older than minSupportedTimestamp. It is used to check whether to walk messages in the past cone of the current marker.
+// isMarkerOldAndConfirmed check whether previousMarker is confirmed and older than minSupportedTimestamp. It is used to check whether to walk blocks in the past cone of the current marker.
func (t *TipManager) isMarkerOldAndConfirmed(previousMarker markers.Marker, minSupportedTimestamp time.Time) bool {
- referencedMarkerMsgID, referenceMarkerMsgIssuingTime := t.getMarkerMessage(previousMarker)
- if t.tangle.ConfirmationOracle.IsMessageConfirmed(referencedMarkerMsgID) && referenceMarkerMsgIssuingTime.Before(minSupportedTimestamp) {
+ referencedMarkerBlkID, referenceMarkerBlkIssuingTime := t.getMarkerBlock(previousMarker)
+ if t.tangle.ConfirmationOracle.IsBlockConfirmed(referencedMarkerBlkID) && referenceMarkerBlkIssuingTime.Before(minSupportedTimestamp) {
return true
}
return false
@@ -324,45 +325,45 @@ func (t *TipManager) processMarker(pastMarker markers.Marker, minSupportedTimest
if pastMarker.Index() < oldestUnconfirmedMarker.Index() {
return true
}
- _, oldestUnconfirmedMarkerMsgIssuingTime := t.getMarkerMessage(oldestUnconfirmedMarker)
- return oldestUnconfirmedMarkerMsgIssuingTime.After(minSupportedTimestamp)
+ _, oldestUnconfirmedMarkerBlkIssuingTime := t.getMarkerBlock(oldestUnconfirmedMarker)
+ return oldestUnconfirmedMarkerBlkIssuingTime.After(minSupportedTimestamp)
}
-func (t *TipManager) checkMessage(messageID MessageID, messageWalker *walker.Walker[MessageID], minSupportedTimestamp time.Time) (timestampValid bool) {
+func (t *TipManager) checkBlock(blockID BlockID, blockWalker *walker.Walker[BlockID], minSupportedTimestamp time.Time) (timestampValid bool) {
timestampValid = true
- t.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- // if message is older than TSC then it's incorrect no matter the confirmation status
- if message.IssuingTime().Before(minSupportedTimestamp) {
+ t.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ // if block is older than TSC then it's incorrect no matter the confirmation status
+ if block.IssuingTime().Before(minSupportedTimestamp) {
timestampValid = false
- messageWalker.StopWalk()
+ blockWalker.StopWalk()
return
}
- // if message is younger than TSC and confirmed, then return timestampValid=true
- if t.tangle.ConfirmationOracle.IsMessageConfirmed(messageID) {
+ // if block is younger than TSC and confirmed, then return timestampValid=true
+ if t.tangle.ConfirmationOracle.IsBlockConfirmed(blockID) {
return
}
- // if message is younger than TSC and not confirmed, walk through strong parents' past cones
- for parentID := range message.ParentsByType(StrongParentType) {
- messageWalker.Push(parentID)
+ // if block is younger than TSC and not confirmed, walk through strong parents' past cones
+ for parentID := range block.ParentsByType(StrongParentType) {
+ blockWalker.Push(parentID)
}
})
return timestampValid
}
-func (t *TipManager) getMarkerMessage(marker markers.Marker) (markerMessageID MessageID, markerMessageIssuingTime time.Time) {
+func (t *TipManager) getMarkerBlock(marker markers.Marker) (markerBlockID BlockID, markerBlockIssuingTime time.Time) {
if marker.SequenceID() == 0 && marker.Index() == 0 {
- return EmptyMessageID, time.Unix(DefaultGenesisTime, 0)
+ return EmptyBlockID, time.Unix(epoch.GenesisTime, 0)
}
- messageID := t.tangle.Booker.MarkersManager.MessageID(marker)
- if messageID == EmptyMessageID {
- panic(fmt.Errorf("failed to retrieve marker message for %s", marker.String()))
+ blockID := t.tangle.Booker.MarkersManager.BlockID(marker)
+ if blockID == EmptyBlockID {
+ panic(fmt.Errorf("failed to retrieve marker block for %s", marker.String()))
}
- t.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- markerMessageID = message.ID()
- markerMessageIssuingTime = message.IssuingTime()
+ t.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ markerBlockID = block.ID()
+ markerBlockIssuingTime = block.IssuingTime()
})
return
@@ -377,7 +378,7 @@ func (t *TipManager) getOldestUnconfirmedMarker(pastMarker markers.Marker) marke
currentMarker := markers.NewMarker(pastMarker.SequenceID(), unconfirmedMarkerIdx)
// Skip if there is no marker at the given index, i.e., the sequence has a gap.
- if t.tangle.Booker.MarkersManager.MessageID(currentMarker) == EmptyMessageID {
+ if t.tangle.Booker.MarkersManager.BlockID(currentMarker) == EmptyBlockID {
continue
}
break
@@ -393,7 +394,7 @@ func (t *TipManager) getPreviousConfirmedIndex(sequence *markers.Sequence, marke
currentMarker := markers.NewMarker(sequence.ID(), markerIndex)
// Skip if there is no marker at the given index, i.e., the sequence has a gap or marker is not yet confirmed (should not be the case).
- if msgID := t.tangle.Booker.MarkersManager.MessageID(currentMarker); msgID == EmptyMessageID || !t.tangle.ConfirmationOracle.IsMessageConfirmed(msgID) {
+ if blkID := t.tangle.Booker.MarkersManager.BlockID(currentMarker); blkID == EmptyBlockID || !t.tangle.ConfirmationOracle.IsBlockConfirmed(blkID) {
continue
}
break
@@ -403,36 +404,36 @@ func (t *TipManager) getPreviousConfirmedIndex(sequence *markers.Sequence, marke
// selectTips returns a list of parents. In case of a transaction, it references young enough attachments
// of consumed transactions directly. Otherwise/additionally count tips are randomly selected.
-func (t *TipManager) selectTips(p payload.Payload, count int) (parents MessageIDs) {
- parents = NewMessageIDs()
+func (t *TipManager) selectTips(p payload.Payload, count int) (parents BlockIDs) {
+ parents = NewBlockIDs()
tips := t.tips.RandomUniqueEntries(count)
// only add genesis if no tips are available and not previously referenced (in case of a transaction),
// or selected ones had incorrect time-since-confirmation
if len(tips) == 0 {
- parents.Add(EmptyMessageID)
+ parents.Add(EmptyBlockID)
return
}
// at least one tip is returned
for _, tip := range tips {
- messageID := tip
- if !parents.Contains(messageID) && t.isPastConeTimestampCorrect(messageID) {
- parents.Add(messageID)
+ blockID := tip
+ if !parents.Contains(blockID) && t.isPastConeTimestampCorrect(blockID) {
+ parents.Add(blockID)
}
}
return
}
// AllTips returns a list of all tips that are stored in the TipManger.
-func (t *TipManager) AllTips() MessageIDs {
+func (t *TipManager) AllTips() BlockIDs {
return retrieveAllTips(t.tips)
}
-func retrieveAllTips(tipsMap *randommap.RandomMap[MessageID, MessageID]) MessageIDs {
+func retrieveAllTips(tipsMap *randommap.RandomMap[BlockID, BlockID]) BlockIDs {
mapKeys := tipsMap.Keys()
- tips := NewMessageIDs()
+ tips := NewBlockIDs()
for _, key := range mapKeys {
tips.Add(key)
@@ -456,7 +457,7 @@ func (t *TipManager) Shutdown() {
// QueueElement is an element in the TimedQueue. It
type QueueElement struct {
// Value represents the value of the queued element.
- Value MessageID
+ Value BlockID
// Key represents the time of the element to be used as a key.
Key time.Time
@@ -475,7 +476,7 @@ type TipsCleaner struct {
}
// Add adds a new element to the heap.
-func (t *TipsCleaner) Add(key time.Time, value MessageID) {
+func (t *TipsCleaner) Add(key time.Time, value BlockID) {
t.heapMutex.Lock()
defer t.heapMutex.Unlock()
heap.Push(&t.heap, &QueueElement{Value: value, Key: key})
@@ -494,8 +495,8 @@ func (t *TipsCleaner) RemoveBefore(minAllowedTime time.Time) {
}
for i := 0; i < popCounter; i++ {
- message := heap.Pop(&t.heap)
- t.tipManager.deleteTip(message.(*QueueElement).Value)
+ block := heap.Pop(&t.heap)
+ t.tipManager.deleteTip(block.(*QueueElement).Value)
}
}
diff --git a/packages/tangle/tipmanager_test.go b/packages/tangle/tipmanager_test.go
index 20ccb4c947..1669b8235a 100644
--- a/packages/tangle/tipmanager_test.go
+++ b/packages/tangle/tipmanager_test.go
@@ -13,7 +13,7 @@ import (
"github.com/iotaledger/goshimmer/packages/markers"
)
-func TestTipManager_DataMessageTips(t *testing.T) {
+func TestTipManager_DataBlockTips(t *testing.T) {
tangle := NewTestTangle()
defer func(tangle *Tangle) {
_ = tangle.Prune()
@@ -22,78 +22,78 @@ func TestTipManager_DataMessageTips(t *testing.T) {
tangle.Setup()
tipManager := tangle.TipManager
- // set up scenario (images/tipmanager-DataMessageTips-test.png)
- messages := make(map[string]*Message)
+ // set up scenario (images/tipmanager-DataBlockTips-test.png)
+ blocks := make(map[string]*Block)
// without any tip -> genesis
{
parents := tipManager.Tips(nil, 2)
assert.Len(t, parents, 1)
- assert.Contains(t, parents, EmptyMessageID)
+ assert.Contains(t, parents, EmptyBlockID)
}
fmt.Println("send genesis")
// without any count -> 1 tip, in this case genesis
{
parents := tipManager.Tips(nil, 0)
assert.Len(t, parents, 1)
- assert.Contains(t, parents, EmptyMessageID)
+ assert.Contains(t, parents, EmptyBlockID)
}
- fmt.Println("send msg1")
- // Message 1
+ fmt.Println("send blk1")
+ // Block 1
{
- messages["1"] = createAndStoreParentsDataMessageInMasterBranch(tangle, NewMessageIDs(EmptyMessageID), NewMessageIDs())
- tipManager.AddTip(messages["1"])
- tangle.TimeManager.updateTime(messages["1"])
+ blocks["1"] = createAndStoreParentsDataBlockInMasterConflict(tangle, NewBlockIDs(EmptyBlockID), NewBlockIDs())
+ tipManager.AddTip(blocks["1"])
+ tangle.TimeManager.updateTime(blocks["1"])
tangle.TimeManager.updateSyncedState()
assert.Equal(t, 1, tipManager.TipCount())
- assert.Contains(t, tipManager.tips.Keys(), messages["1"].ID())
+ assert.Contains(t, tipManager.tips.Keys(), blocks["1"].ID())
parents := tipManager.Tips(nil, 2)
assert.Len(t, parents, 1)
- assert.Contains(t, parents, messages["1"].ID())
+ assert.Contains(t, parents, blocks["1"].ID())
}
- fmt.Println("send msg2")
- // Message 2
+ fmt.Println("send blk2")
+ // Block 2
{
- messages["2"] = createAndStoreParentsDataMessageInMasterBranch(tangle, NewMessageIDs(EmptyMessageID), NewMessageIDs())
- tipManager.AddTip(messages["2"])
+ blocks["2"] = createAndStoreParentsDataBlockInMasterConflict(tangle, NewBlockIDs(EmptyBlockID), NewBlockIDs())
+ tipManager.AddTip(blocks["2"])
assert.Equal(t, 2, tipManager.TipCount())
- assert.Contains(t, tipManager.tips.Keys(), messages["1"].ID(), messages["2"].ID())
+ assert.Contains(t, tipManager.tips.Keys(), blocks["1"].ID(), blocks["2"].ID())
parents := tipManager.Tips(nil, 3)
assert.Len(t, parents, 2)
- assert.Contains(t, parents, messages["1"].ID(), messages["2"].ID())
+ assert.Contains(t, parents, blocks["1"].ID(), blocks["2"].ID())
}
- fmt.Println("send msg3")
- // Message 3
+ fmt.Println("send blk3")
+ // Block 3
{
- messages["3"] = createAndStoreParentsDataMessageInMasterBranch(tangle, NewMessageIDs(messages["1"].ID(), messages["2"].ID()), NewMessageIDs())
- tipManager.AddTip(messages["3"])
+ blocks["3"] = createAndStoreParentsDataBlockInMasterConflict(tangle, NewBlockIDs(blocks["1"].ID(), blocks["2"].ID()), NewBlockIDs())
+ tipManager.AddTip(blocks["3"])
assert.Equal(t, 1, tipManager.TipCount())
- assert.Contains(t, tipManager.tips.Keys(), messages["3"].ID())
+ assert.Contains(t, tipManager.tips.Keys(), blocks["3"].ID())
parents := tipManager.Tips(nil, 2)
assert.Len(t, parents, 1)
- assert.Contains(t, parents, messages["3"].ID())
+ assert.Contains(t, parents, blocks["3"].ID())
}
- fmt.Println("send msg3")
- // Add Message 4-8
+ fmt.Println("send blk3")
+ // Add Block 4-8
{
- tips := NewMessageIDs()
- tips.Add(messages["3"].ID())
+ tips := NewBlockIDs()
+ tips.Add(blocks["3"].ID())
for count, n := range []int{4, 5, 6, 7, 8} {
nString := strconv.Itoa(n)
- messages[nString] = createAndStoreParentsDataMessageInMasterBranch(tangle, NewMessageIDs(messages["1"].ID()), NewMessageIDs())
- tipManager.AddTip(messages[nString])
- tips.Add(messages[nString].ID())
-
- assert.Equalf(t, count+2, tipManager.TipCount(), "TipCount does not match after adding Message %d", n)
- assert.ElementsMatchf(t, tipManager.tips.Keys(), tips.Slice(), "Elements in strongTips do not match after adding Message %d", n)
- assert.Contains(t, tipManager.tips.Keys(), messages["3"].ID())
- fmt.Println("send msg", n)
+ blocks[nString] = createAndStoreParentsDataBlockInMasterConflict(tangle, NewBlockIDs(blocks["1"].ID()), NewBlockIDs())
+ tipManager.AddTip(blocks[nString])
+ tips.Add(blocks[nString].ID())
+
+ assert.Equalf(t, count+2, tipManager.TipCount(), "TipCount does not match after adding Block %d", n)
+ assert.ElementsMatchf(t, tipManager.tips.Keys(), tips.Slice(), "Elements in strongTips do not match after adding Block %d", n)
+ assert.Contains(t, tipManager.tips.Keys(), blocks["3"].ID())
+ fmt.Println("send blk", n)
}
}
@@ -124,19 +124,19 @@ func TestTipManager_DataMessageTips(t *testing.T) {
// tangle := NewTestTangle()
// defer tangle.Shutdown()
// tipManager := tangle.TipManager
-// confirmedMessageIDs := NewMessageIDs()
-// tangle.ConfirmationOracle = &MockConfirmationOracleTipManagerTest{confirmedMessageIDs: confirmedMessageIDs, confirmedMarkers: markers.NewMarkers(markers.NewMarker(0, 1))}
+// confirmedBlockIDs := NewBlockIDs()
+// tangle.ConfirmationOracle = &MockConfirmationOracleTipManagerTest{confirmedBlockIDs: confirmedBlockIDs, confirmedMarkers: markers.NewMarkers(markers.NewMarker(0, 1))}
//
-// testFramework := NewMessageTestFramework(tangle, WithGenesisOutput("G1", 5), WithGenesisOutput("G2", 8))
+// testFramework := NewBlockTestFramework(tangle, WithGenesisOutput("G1", 5), WithGenesisOutput("G2", 8))
//
// // region prepare scenario /////////////////////////////////////////////////////////////////////////////////////////
//
-// // Message 1
+// // Block 1
// {
// issueTime := time.Now().Add(-maxParentsTimeDifference - 5*time.Minute)
//
-// testFramework.CreateMessage(
-// "Message1",
+// testFramework.CreateBlock(
+// "Block1",
// WithStrongParents("Genesis"),
// WithIssuingTime(issueTime),
// WithInputs("G1"),
@@ -144,59 +144,59 @@ func TestTipManager_DataMessageTips(t *testing.T) {
// WithOutput("B", 1),
// WithOutput("c", 1),
// )
-// testFramework.IssueMessages("Message1")
-// // bookMessage(t, tangle, testFramework.Message("Message1"))
+// testFramework.IssueBlocks("Block1")
+// // bookBlock(t, tangle, testFramework.Block("Block1"))
// testFramework.WaitUntilAllTasksProcessed()
//
-// tipManager.AddTip(testFramework.Message("Message1"))
+// tipManager.AddTip(testFramework.Block("Block1"))
// assert.Equal(t, 0, tipManager.TipCount())
//
-// // mark this message as confirmed
-// confirmedMessageIDs.Add(testFramework.Message("Message1").ID())
+// // mark this block as confirmed
+// confirmedBlockIDs.Add(testFramework.Block("Block1").ID())
// }
//
-// // Message 2
+// // Block 2
// {
-// testFramework.CreateMessage(
-// "Message2",
+// testFramework.CreateBlock(
+// "Block2",
// WithStrongParents("Genesis"),
// WithInputs("G2"),
// WithOutput("D", 6),
// WithOutput("E", 1),
// WithOutput("F", 1),
// )
-// testFramework.IssueMessages("Message2")
+// testFramework.IssueBlocks("Block2")
// testFramework.WaitUntilAllTasksProcessed()
//
-// tipManager.AddTip(testFramework.Message("Message2"))
+// tipManager.AddTip(testFramework.Block("Block2"))
// assert.Equal(t, 1, tipManager.TipCount())
//
-// // use this message to set TangleTime
-// tangle.TimeManager.updateTime(testFramework.Message("Message2"))
+// // use this block to set TangleTime
+// tangle.TimeManager.updateTime(testFramework.Block("Block2"))
// }
//
-// // Message 3
+// // Block 3
// {
-// testFramework.CreateMessage(
-// "Message3",
+// testFramework.CreateBlock(
+// "Block3",
// WithStrongParents("Genesis"),
// WithInputs("A"),
// WithOutput("H", 1),
// WithOutput("I", 1),
// WithOutput("J", 1),
// )
-// testFramework.IssueMessages("Message3")
+// testFramework.IssueBlocks("Block3")
// testFramework.WaitUntilAllTasksProcessed()
-// tipManager.AddTip(testFramework.Message("Message3"))
+// tipManager.AddTip(testFramework.Block("Block3"))
// assert.Equal(t, 2, tipManager.TipCount())
// }
//
-// // Message 4
+// // Block 4
// {
//
-// testFramework.CreateMessage(
-// "Message4",
-// WithStrongParents("Genesis", "Message2"),
+// testFramework.CreateBlock(
+// "Block4",
+// WithStrongParents("Genesis", "Block2"),
// WithInputs("D"),
// WithOutput("K", 1),
// WithOutput("L", 1),
@@ -205,208 +205,208 @@ func TestTipManager_DataMessageTips(t *testing.T) {
// WithOutput("O", 1),
// WithOutput("P", 1),
// )
-// testFramework.IssueMessages("Message4")
+// testFramework.IssueBlocks("Block4")
// testFramework.WaitUntilAllTasksProcessed()
-// tipManager.AddTip(testFramework.Message("Message4"))
+// tipManager.AddTip(testFramework.Block("Block4"))
// assert.Equal(t, 2, tipManager.TipCount())
// }
//
-// // Message 5
+// // Block 5
// {
-// testFramework.CreateMessage(
-// "Message5",
-// WithStrongParents("Genesis", "Message1"),
+// testFramework.CreateBlock(
+// "Block5",
+// WithStrongParents("Genesis", "Block1"),
// )
-// testFramework.IssueMessages("Message5")
+// testFramework.IssueBlocks("Block5")
// testFramework.WaitUntilAllTasksProcessed()
-// tipManager.AddTip(testFramework.Message("Message5"))
+// tipManager.AddTip(testFramework.Block("Block5"))
// assert.Equal(t, 3, tipManager.TipCount())
// }
//
-// createScenarioMessageWith1Input1Output := func(messageStringID, inputStringID, outputStringID string, strongParents []string) {
-// testFramework.CreateMessage(
-// messageStringID,
+// createScenarioBlockWith1Input1Output := func(blockStringID, inputStringID, outputStringID string, strongParents []string) {
+// testFramework.CreateBlock(
+// blockStringID,
// WithInputs(inputStringID),
// WithOutput(outputStringID, 1),
// WithStrongParents(strongParents...),
// )
-// testFramework.IssueMessages(messageStringID)
+// testFramework.IssueBlocks(blockStringID)
// testFramework.WaitUntilAllTasksProcessed()
// }
//
-// // Message 6
+// // Block 6
// {
-// createScenarioMessageWith1Input1Output("Message6", "H", "Q", []string{"Message3", "Message5"})
-// tipManager.AddTip(testFramework.Message("Message6"))
+// createScenarioBlockWith1Input1Output("Block6", "H", "Q", []string{"Block3", "Block5"})
+// tipManager.AddTip(testFramework.Block("Block6"))
// assert.Equal(t, 2, tipManager.TipCount())
// }
//
-// // Message 7
+// // Block 7
// {
-// createScenarioMessageWith1Input1Output("Message7", "I", "R", []string{"Message3", "Message5"})
-// tipManager.AddTip(testFramework.Message("Message7"))
+// createScenarioBlockWith1Input1Output("Block7", "I", "R", []string{"Block3", "Block5"})
+// tipManager.AddTip(testFramework.Block("Block7"))
// assert.Equal(t, 3, tipManager.TipCount())
// }
//
-// // Message 8
+// // Block 8
// {
-// createScenarioMessageWith1Input1Output("Message8", "J", "S", []string{"Message3", "Message5"})
-// tipManager.AddTip(testFramework.Message("Message8"))
+// createScenarioBlockWith1Input1Output("Block8", "J", "S", []string{"Block3", "Block5"})
+// tipManager.AddTip(testFramework.Block("Block8"))
// assert.Equal(t, 4, tipManager.TipCount())
// }
//
-// // Message 9
+// // Block 9
// {
-// createScenarioMessageWith1Input1Output("Message9", "K", "T", []string{"Message4"})
-// tipManager.AddTip(testFramework.Message("Message9"))
+// createScenarioBlockWith1Input1Output("Block9", "K", "T", []string{"Block4"})
+// tipManager.AddTip(testFramework.Block("Block9"))
// assert.Equal(t, 4, tipManager.TipCount())
// }
//
-// // Message 10
+// // Block 10
// {
-// createScenarioMessageWith1Input1Output("Message10", "L", "U", []string{"Message2", "Message4"})
-// tipManager.AddTip(testFramework.Message("Message10"))
+// createScenarioBlockWith1Input1Output("Block10", "L", "U", []string{"Block2", "Block4"})
+// tipManager.AddTip(testFramework.Block("Block10"))
// assert.Equal(t, 5, tipManager.TipCount())
// }
//
-// // Message 11
+// // Block 11
// {
-// createScenarioMessageWith1Input1Output("Message11", "M", "V", []string{"Message2", "Message4"})
-// tipManager.AddTip(testFramework.Message("Message11"))
+// createScenarioBlockWith1Input1Output("Block11", "M", "V", []string{"Block2", "Block4"})
+// tipManager.AddTip(testFramework.Block("Block11"))
// assert.Equal(t, 6, tipManager.TipCount())
// }
//
-// // Message 12
+// // Block 12
// {
-// createScenarioMessageWith1Input1Output("Message12", "N", "X", []string{"Message3", "Message4"})
-// tipManager.AddTip(testFramework.Message("Message12"))
+// createScenarioBlockWith1Input1Output("Block12", "N", "X", []string{"Block3", "Block4"})
+// tipManager.AddTip(testFramework.Block("Block12"))
// assert.Equal(t, 7, tipManager.TipCount())
// }
//
-// // Message 13
+// // Block 13
// {
-// createScenarioMessageWith1Input1Output("Message13", "O", "Y", []string{"Message4"})
-// tipManager.AddTip(testFramework.Message("Message13"))
+// createScenarioBlockWith1Input1Output("Block13", "O", "Y", []string{"Block4"})
+// tipManager.AddTip(testFramework.Block("Block13"))
// assert.Equal(t, 8, tipManager.TipCount())
// }
//
-// // Message 14
+// // Block 14
// {
-// createScenarioMessageWith1Input1Output("Message14", "P", "Z", []string{"Message4"})
-// tipManager.AddTip(testFramework.Message("Message14"))
+// createScenarioBlockWith1Input1Output("Block14", "P", "Z", []string{"Block4"})
+// tipManager.AddTip(testFramework.Block("Block14"))
// assert.Equal(t, 9, tipManager.TipCount())
// }
//
-// // Message 15
+// // Block 15
// {
-// testFramework.CreateMessage(
-// "Message15",
-// WithStrongParents("Message10", "Message11"),
+// testFramework.CreateBlock(
+// "Block15",
+// WithStrongParents("Block10", "Block11"),
// )
-// testFramework.IssueMessages("Message15")
+// testFramework.IssueBlocks("Block15")
// testFramework.WaitUntilAllTasksProcessed()
-// tipManager.AddTip(testFramework.Message("Message15"))
+// tipManager.AddTip(testFramework.Block("Block15"))
// assert.Equal(t, 8, tipManager.TipCount())
// }
//
-// // Message 16
+// // Block 16
// {
-// testFramework.CreateMessage(
-// "Message16",
-// WithStrongParents("Message10", "Message11", "Message14"),
+// testFramework.CreateBlock(
+// "Block16",
+// WithStrongParents("Block10", "Block11", "Block14"),
// )
-// testFramework.IssueMessages("Message16")
+// testFramework.IssueBlocks("Block16")
// testFramework.WaitUntilAllTasksProcessed()
-// tipManager.AddTip(testFramework.Message("Message16"))
+// tipManager.AddTip(testFramework.Block("Block16"))
// assert.Equal(t, 8, tipManager.TipCount())
// }
// // endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////
//
-// // Message 17
+// // Block 17
// {
-// testFramework.CreateMessage(
-// "Message17",
-// WithStrongParents("Message16"),
+// testFramework.CreateBlock(
+// "Block17",
+// WithStrongParents("Block16"),
// WithOutput("OUT17", 8),
// WithInputs("Q", "R", "S", "T", "U", "V", "X", "Y"),
// )
-// testFramework.IssueMessages("Message17").WaitUntilAllTasksProcessed()
-// parents, err := tipManager.Tips(testFramework.Message("Message17").Payload(), 4)
+// testFramework.IssueBlocks("Block17").WaitUntilAllTasksProcessed()
+// parents, err := tipManager.Tips(testFramework.Block("Block17").Payload(), 4)
// assert.NoError(t, err)
-// assert.Equal(t, parents, NewMessageIDs(
-// testFramework.Message("Message6").ID(),
-// testFramework.Message("Message7").ID(),
-// testFramework.Message("Message8").ID(),
-// testFramework.Message("Message9").ID(),
-// testFramework.Message("Message10").ID(),
-// testFramework.Message("Message11").ID(),
-// testFramework.Message("Message12").ID(),
-// testFramework.Message("Message13").ID(),
-// ), "Message17 should have the correct parents")
+// assert.Equal(t, parents, NewBlockIDs(
+// testFramework.Block("Block6").ID(),
+// testFramework.Block("Block7").ID(),
+// testFramework.Block("Block8").ID(),
+// testFramework.Block("Block9").ID(),
+// testFramework.Block("Block10").ID(),
+// testFramework.Block("Block11").ID(),
+// testFramework.Block("Block12").ID(),
+// testFramework.Block("Block13").ID(),
+// ), "Block17 should have the correct parents")
// }
//
-// // Message 18
+// // Block 18
// {
-// testFramework.CreateMessage(
-// "Message18",
-// WithStrongParents("Message16"),
+// testFramework.CreateBlock(
+// "Block18",
+// WithStrongParents("Block16"),
// WithOutput("OUT18", 6),
// WithInputs("Q", "R", "S", "T", "U", "V"),
// )
//
-// parents, err := tipManager.Tips(testFramework.Message("Message18").Payload(), 4)
+// parents, err := tipManager.Tips(testFramework.Block("Block18").Payload(), 4)
// fmt.Println(parents, err)
//
// assert.NoError(t, err)
-// // there are possible parents to be selected, however, since the directly referenced messages are tips as well
+// // there are possible parents to be selected, however, since the directly referenced blocks are tips as well
// // there is a chance that these are doubly selected, resulting 6 to 8 parents
// assert.GreaterOrEqual(t, len(parents), 6)
// assert.LessOrEqual(t, len(parents), 8)
// assert.Contains(t, parents,
-// testFramework.Message("Message6").ID(),
-// testFramework.Message("Message7").ID(),
-// testFramework.Message("Message8").ID(),
-// testFramework.Message("Message9").ID(),
-// testFramework.Message("Message10").ID(),
-// testFramework.Message("Message11").ID(),
+// testFramework.Block("Block6").ID(),
+// testFramework.Block("Block7").ID(),
+// testFramework.Block("Block8").ID(),
+// testFramework.Block("Block9").ID(),
+// testFramework.Block("Block10").ID(),
+// testFramework.Block("Block11").ID(),
// )
// }
//
-// // Message 19
+// // Block 19
// {
-// testFramework.CreateMessage(
-// "Message19",
-// WithStrongParents("Message16"),
+// testFramework.CreateBlock(
+// "Block19",
+// WithStrongParents("Block16"),
// WithOutput("OUT19", 3),
// WithInputs("B", "V", "Z"),
// )
//
-// parents, err := tipManager.Tips(testFramework.Message("Message19").Payload(), 4)
+// parents, err := tipManager.Tips(testFramework.Block("Block19").Payload(), 4)
// assert.NoError(t, err)
//
// // we reference 11, 14 directly. 1 is too old and should not be directly referenced
// assert.GreaterOrEqual(t, len(parents), 4)
// assert.LessOrEqual(t, len(parents), 8)
// assert.Contains(t, parents,
-// testFramework.Message("Message11").ID(),
-// testFramework.Message("Message14").ID(),
+// testFramework.Block("Block11").ID(),
+// testFramework.Block("Block14").ID(),
// )
// assert.NotContains(t, parents,
-// testFramework.Message("Message1").ID(),
+// testFramework.Block("Block1").ID(),
// )
// }
//
-// // Message 20
+// // Block 20
// {
//
-// testFramework.CreateMessage(
-// "Message20",
-// WithStrongParents("Message16"),
+// testFramework.CreateBlock(
+// "Block20",
+// WithStrongParents("Block16"),
// WithOutput("OUT20", 9),
// WithInputs("Q", "R", "S", "T", "U", "V", "X", "Y", "Z"),
// )
//
-// parents, err := tipManager.Tips(testFramework.Message("Message20").Payload(), 4)
+// parents, err := tipManager.Tips(testFramework.Block("Block20").Payload(), 4)
// assert.NoError(t, err)
//
// // there are 9 inputs to be directly referenced -> we need to reference them via tips (8 tips available)
@@ -424,58 +424,58 @@ func TestTipManager_TimeSinceConfirmation_Unconfirmed(t *testing.T) {
tipManager := tangle.TipManager
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
)
tangle.Setup()
createTestTangleTSC(t, testFramework)
- var confirmedMessageIDsString []string
- confirmedMessageIDs := prepareConfirmedMessageIDs(testFramework, confirmedMessageIDsString)
+ var confirmedBlockIDsString []string
+ confirmedBlockIDs := prepareConfirmedBlockIDs(testFramework, confirmedBlockIDsString)
confirmedMarkers := markers.NewMarkers()
- tangle.ConfirmationOracle = &MockConfirmationOracleTipManagerTest{confirmedMessageIDs: confirmedMessageIDs, confirmedMarkers: confirmedMarkers}
- tangle.TimeManager.updateTime(testFramework.Message("Marker-2/3"))
+ tangle.ConfirmationOracle = &MockConfirmationOracleTipManagerTest{confirmedBlockIDs: confirmedBlockIDs, confirmedMarkers: confirmedMarkers}
+ tangle.TimeManager.updateTime(testFramework.Block("Marker-2/3"))
tangle.TimeManager.updateSyncedState()
// Even without any confirmations, it should be possible to attach to genesis.
- assert.True(t, tipManager.isPastConeTimestampCorrect(EmptyMessageID))
+ assert.True(t, tipManager.isPastConeTimestampCorrect(EmptyBlockID))
- // case 0 - only one message can attach to genesis, so there should not be two subtangles starting from the genesis, but TSC allows using such tip.
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/0_2").ID()))
+ // case 0 - only one block can attach to genesis, so there should not be two subtangles starting from the genesis, but TSC allows using such tip.
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/0_2").ID()))
// case #1
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/3_4").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/3_4").ID()))
// case #2
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("1/3_4").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("1/3_4").ID()))
// case #3
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("2/3_4").ID()))
- // case #4 (marker message)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("Marker-1/2").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("2/3_4").ID()))
+ // case #4 (marker block)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("Marker-1/2").ID()))
// case #5
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("2/5_4").ID()))
- // case #6 (attach to unconfirmed message older than TSC)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-preTSC_2").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("2/5_4").ID()))
+ // case #6 (attach to unconfirmed block older than TSC)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-preTSC_2").ID()))
// case #7
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("3/2_4").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("3/2_4").ID()))
// case #8
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("2/3+0/4_3").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("2/3+0/4_3").ID()))
// case #9
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("Marker-4/5").ID()))
- // case #10 (attach to confirmed message older than TSC)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-preTSCSeq2_2").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("Marker-4/5").ID()))
+ // case #10 (attach to confirmed block older than TSC)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-preTSCSeq2_2").ID()))
// case #11
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("5/2_4").ID()))
- //case #12 (attach to 0/1-postTSCSeq3_4)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-postTSCSeq3_4").ID()))
- //case #13 (attach to unconfirmed message younger than TSC, with confirmed past marker older than TSC)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-postTSC_2").ID()))
- //case #14
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("6/2_4").ID()))
- //case #15
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-preTSCSeq5_4").ID()))
- //case #16
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-postTSC-direct_0").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("5/2_4").ID()))
+ // case #12 (attach to 0/1-postTSCSeq3_4)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-postTSCSeq3_4").ID()))
+ // case #13 (attach to unconfirmed block younger than TSC, with confirmed past marker older than TSC)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-postTSC_2").ID()))
+ // case #14
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("6/2_4").ID()))
+ // case #15
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-preTSCSeq5_4").ID()))
+ // case #16
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-postTSC-direct_0").ID()))
}
// Test based on packages/tangle/images/TSC_test_scenario.png.
@@ -487,101 +487,101 @@ func TestTipManager_TimeSinceConfirmation_Confirmed(t *testing.T) {
tipManager := tangle.TipManager
confirmationOracle := &MockConfirmationOracleTipManagerTest{
- confirmedMessageIDs: NewMessageIDs(),
+ confirmedBlockIDs: NewBlockIDs(),
confirmedMarkers: markers.NewMarkers(),
MockConfirmationOracle: MockConfirmationOracle{},
}
tangle.ConfirmationOracle = confirmationOracle
- testFramework := NewMessageTestFramework(
+ testFramework := NewBlockTestFramework(
tangle,
)
tangle.Setup()
createTestTangleTSC(t, testFramework)
- confirmedMessageIDsString := []string{"Marker-0/1", "0/1-preTSCSeq1_0", "0/1-preTSCSeq1_1", "0/1-preTSCSeq1_2", "0/1-postTSCSeq1_0", "0/1-postTSCSeq1_1", "0/1-postTSCSeq1_2", "0/1-postTSCSeq1_3", "0/1-postTSCSeq1_4", "0/1-postTSCSeq1_5", "Marker-1/2", "0/1-preTSCSeq2_0", "0/1-preTSCSeq2_1", "0/1-preTSCSeq2_2", "0/1-postTSCSeq2_0", "0/1-postTSCSeq2_1", "0/1-postTSCSeq2_2", "0/1-postTSCSeq2_3", "0/1-postTSCSeq2_4", "0/1-postTSCSeq2_5", "Marker-2/2", "2/2_0", "2/2_1", "2/2_2", "2/2_3", "2/2_4", "Marker-2/3"}
- confirmedMessageIDs := prepareConfirmedMessageIDs(testFramework, confirmedMessageIDsString)
+ confirmedBlockIDsString := []string{"Marker-0/1", "0/1-preTSCSeq1_0", "0/1-preTSCSeq1_1", "0/1-preTSCSeq1_2", "0/1-postTSCSeq1_0", "0/1-postTSCSeq1_1", "0/1-postTSCSeq1_2", "0/1-postTSCSeq1_3", "0/1-postTSCSeq1_4", "0/1-postTSCSeq1_5", "Marker-1/2", "0/1-preTSCSeq2_0", "0/1-preTSCSeq2_1", "0/1-preTSCSeq2_2", "0/1-postTSCSeq2_0", "0/1-postTSCSeq2_1", "0/1-postTSCSeq2_2", "0/1-postTSCSeq2_3", "0/1-postTSCSeq2_4", "0/1-postTSCSeq2_5", "Marker-2/2", "2/2_0", "2/2_1", "2/2_2", "2/2_3", "2/2_4", "Marker-2/3"}
+ confirmedBlockIDs := prepareConfirmedBlockIDs(testFramework, confirmedBlockIDsString)
confirmedMarkers := markers.NewMarkers(markers.NewMarker(0, 1), markers.NewMarker(1, 2), markers.NewMarker(2, 3))
confirmationOracle.Lock()
- confirmationOracle.confirmedMessageIDs = confirmedMessageIDs
+ confirmationOracle.confirmedBlockIDs = confirmedBlockIDs
confirmationOracle.confirmedMarkers = confirmedMarkers
confirmationOracle.Unlock()
- // = &MockConfirmationOracleTipManagerTest{confirmedMessageIDs: confirmedMessageIDs, confirmedMarkers: confirmedMarkers}
- tangle.TimeManager.updateTime(testFramework.Message("Marker-2/3"))
+ // = &MockConfirmationOracleTipManagerTest{confirmedBlockIDs: confirmedBlockIDs, confirmedMarkers: confirmedMarkers}
+ tangle.TimeManager.updateTime(testFramework.Block("Marker-2/3"))
tangle.TimeManager.updateSyncedState()
// Even without any confirmations, it should be possible to attach to genesis.
- assert.True(t, tipManager.isPastConeTimestampCorrect(EmptyMessageID))
+ assert.True(t, tipManager.isPastConeTimestampCorrect(EmptyBlockID))
- // case 0 - only one message can attach to genesis, so there should not be two subtangles starting from the genesis, but TSC allows using such tip.
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/0_2").ID()))
+ // case 0 - only one block can attach to genesis, so there should not be two subtangles starting from the genesis, but TSC allows using such tip.
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/0_2").ID()))
// case #1
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/3_4").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/3_4").ID()))
// case #2
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("1/3_4").ID()))
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("1/3_4").ID()))
// case #3
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("2/3_4").ID()))
- // case #4 (marker message)
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("Marker-1/2").ID()))
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("2/3_4").ID()))
+ // case #4 (marker block)
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("Marker-1/2").ID()))
// case #5
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("2/5_4").ID()))
- // case #6 (attach to unconfirmed message older than TSC)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-preTSC_2").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("2/5_4").ID()))
+ // case #6 (attach to unconfirmed block older than TSC)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-preTSC_2").ID()))
// case #7
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("3/2_4").ID()))
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("3/2_4").ID()))
// case #8
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("2/3+0/4_3").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("2/3+0/4_3").ID()))
// case #9
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("Marker-4/5").ID()))
- // case #10 (attach to confirmed message older than TSC)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-preTSCSeq2_2").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("Marker-4/5").ID()))
+ // case #10 (attach to confirmed block older than TSC)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-preTSCSeq2_2").ID()))
// case #11
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("5/2_4").ID()))
- //case #12 (attach to 0/1-postTSCSeq3_4)
- assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-postTSCSeq3_4").ID()))
- //case #13 (attach to unconfirmed message younger than TSC, with confirmed past marker older than TSC)
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-postTSC_2").ID()))
- //case #14
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("6/2_4").ID()))
- //case #15
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-preTSCSeq5_4").ID()))
- //case #16
- assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Message("0/1-postTSC-direct_0").ID()))
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("5/2_4").ID()))
+ // case #12 (attach to 0/1-postTSCSeq3_4)
+ assert.True(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-postTSCSeq3_4").ID()))
+ // case #13 (attach to unconfirmed block younger than TSC, with confirmed past marker older than TSC)
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-postTSC_2").ID()))
+ // case #14
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("6/2_4").ID()))
+ // case #15
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-preTSCSeq5_4").ID()))
+ // case #16
+ assert.False(t, tipManager.isPastConeTimestampCorrect(testFramework.Block("0/1-postTSC-direct_0").ID()))
}
-func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
- var lastMsgAlias string
+func createTestTangleTSC(t *testing.T, testFramework *BlockTestFramework) {
+ var lastBlkAlias string
// SEQUENCE 0
{
- testFramework.CreateMessage("Marker-0/1", WithStrongParents("Genesis"), WithIssuingTime(time.Now().Add(-9*time.Minute)))
- testFramework.IssueMessages("Marker-0/1").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-0/1", WithStrongParents("Genesis"), WithIssuingTime(time.Now().Add(-9*time.Minute)))
+ testFramework.IssueBlocks("Marker-0/1").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/1-preTSC", 3, []string{"Marker-0/1"}, time.Minute*8)
- lastMsgAlias = issueMessages(testFramework, "0/1-postTSC", 3, []string{lastMsgAlias}, time.Minute)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-preTSC", 3, []string{"Marker-0/1"}, time.Minute*8)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-postTSC", 3, []string{lastBlkAlias}, time.Minute)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-0/2", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-0/2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-0/2", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-0/2").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/2", 5, []string{"Marker-0/2"}, 0)
+ lastBlkAlias = issueBlocks(testFramework, "0/2", 5, []string{"Marker-0/2"}, 0)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-0/3", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-0/3").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-0/3", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-0/3").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/3", 5, []string{"Marker-0/3"}, 0)
+ lastBlkAlias = issueBlocks(testFramework, "0/3", 5, []string{"Marker-0/3"}, 0)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-0/4", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-0/4").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-0/4", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-0/4").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "0/4", 5, []string{"Marker-0/4"}, 0)
+ _ = issueBlocks(testFramework, "0/4", 5, []string{"Marker-0/4"}, 0)
testFramework.PreventNewMarkers(false)
- // issue message for test case #16
- testFramework.CreateMessage("0/1-postTSC-direct_0", WithStrongParents("Marker-0/1"))
- testFramework.IssueMessages("0/1-postTSC-direct_0").WaitUntilAllTasksProcessed()
+ // issue block for test case #16
+ testFramework.CreateBlock("0/1-postTSC-direct_0", WithStrongParents("Marker-0/1"))
+ testFramework.IssueBlocks("0/1-postTSC-direct_0").WaitUntilAllTasksProcessed()
checkMarkers(t, testFramework, map[string]*markers.Markers{
"Marker-0/1": markers.NewMarkers(markers.NewMarker(0, 1)),
@@ -599,7 +599,7 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 0 (without markers)
{
- _ = issueMessages(testFramework, "0/0", 3, []string{"Genesis"}, time.Minute)
+ _ = issueBlocks(testFramework, "0/0", 3, []string{"Genesis"}, time.Minute)
checkMarkers(t, testFramework, map[string]*markers.Markers{
"0/0_0": markers.NewMarkers(markers.NewMarker(0, 0)),
@@ -610,18 +610,18 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 1
{ //nolint:dupl
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/1-preTSCSeq1", 3, []string{"Marker-0/1"}, time.Minute*6)
- lastMsgAlias = issueMessages(testFramework, "0/1-postTSCSeq1", 6, []string{lastMsgAlias}, time.Minute*4)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-preTSCSeq1", 3, []string{"Marker-0/1"}, time.Minute*6)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-postTSCSeq1", 6, []string{lastBlkAlias}, time.Minute*4)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-1/2", WithStrongParents(lastMsgAlias), WithIssuingTime(time.Now().Add(-3*time.Minute)))
- testFramework.IssueMessages("Marker-1/2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-1/2", WithStrongParents(lastBlkAlias), WithIssuingTime(time.Now().Add(-3*time.Minute)))
+ testFramework.IssueBlocks("Marker-1/2").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "1/2", 5, []string{"Marker-1/2"}, 0)
+ lastBlkAlias = issueBlocks(testFramework, "1/2", 5, []string{"Marker-1/2"}, 0)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-1/3", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-1/3").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-1/3", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-1/3").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "1/3", 5, []string{"Marker-1/3"}, 0)
+ _ = issueBlocks(testFramework, "1/3", 5, []string{"Marker-1/3"}, 0)
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -652,18 +652,18 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 2
{ //nolint:dupl
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/1-preTSCSeq2", 3, []string{"Marker-0/1"}, time.Minute*6)
- lastMsgAlias = issueMessages(testFramework, "0/1-postTSCSeq2", 6, []string{lastMsgAlias}, time.Minute*4)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-preTSCSeq2", 3, []string{"Marker-0/1"}, time.Minute*6)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-postTSCSeq2", 6, []string{lastBlkAlias}, time.Minute*4)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-2/2", WithStrongParents(lastMsgAlias), WithIssuingTime(time.Now().Add(-3*time.Minute)))
- testFramework.IssueMessages("Marker-2/2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-2/2", WithStrongParents(lastBlkAlias), WithIssuingTime(time.Now().Add(-3*time.Minute)))
+ testFramework.IssueBlocks("Marker-2/2").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "2/2", 5, []string{"Marker-2/2"}, 0)
+ lastBlkAlias = issueBlocks(testFramework, "2/2", 5, []string{"Marker-2/2"}, 0)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-2/3", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-2/3").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-2/3", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-2/3").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "2/3", 5, []string{"Marker-2/3"}, 0)
+ _ = issueBlocks(testFramework, "2/3", 5, []string{"Marker-2/3"}, 0)
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -693,10 +693,10 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 2 + 0
{
- testFramework.CreateMessage("Marker-2/5", WithStrongParents("0/4_4", "2/3_4"))
- testFramework.IssueMessages("Marker-2/5").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-2/5", WithStrongParents("0/4_4", "2/3_4"))
+ testFramework.IssueBlocks("Marker-2/5").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "2/5", 5, []string{"Marker-2/5"}, 0)
+ _ = issueBlocks(testFramework, "2/5", 5, []string{"Marker-2/5"}, 0)
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -712,12 +712,12 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 3
{
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/1-postTSCSeq3", 5, []string{"0/1-postTSCSeq2_0"}, 0)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-postTSCSeq3", 5, []string{"0/1-postTSCSeq2_0"}, 0)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-3/2", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-3/2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-3/2", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-3/2").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "3/2", 5, []string{"Marker-3/2"}, 0)
+ _ = issueBlocks(testFramework, "3/2", 5, []string{"Marker-3/2"}, 0)
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -738,9 +738,9 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 2 + 0 (two past markers) -> SEQUENCE 4
{
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "2/3+0/4", 5, []string{"0/4_4", "2/3_4"}, 0)
- testFramework.CreateMessage("Marker-4/5", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-4/5").WaitUntilAllTasksProcessed()
+ lastBlkAlias = issueBlocks(testFramework, "2/3+0/4", 5, []string{"0/4_4", "2/3_4"}, 0)
+ testFramework.CreateBlock("Marker-4/5", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-4/5").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -754,12 +754,12 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 5
{
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/1-preTSCSeq5", 6, []string{"0/1-preTSCSeq2_2"}, time.Minute*6)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-preTSCSeq5", 6, []string{"0/1-preTSCSeq2_2"}, time.Minute*6)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-5/2", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-5/2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-5/2", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-5/2").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "5/2", 5, []string{"Marker-5/2"}, 0)
+ _ = issueBlocks(testFramework, "5/2", 5, []string{"Marker-5/2"}, 0)
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -780,12 +780,12 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
// SEQUENCE 6
{
testFramework.PreventNewMarkers(true)
- lastMsgAlias = issueMessages(testFramework, "0/1-postTSCSeq6", 6, []string{"0/1-preTSCSeq2_2"}, 0)
+ lastBlkAlias = issueBlocks(testFramework, "0/1-postTSCSeq6", 6, []string{"0/1-preTSCSeq2_2"}, 0)
testFramework.PreventNewMarkers(false)
- testFramework.CreateMessage("Marker-6/2", WithStrongParents(lastMsgAlias))
- testFramework.IssueMessages("Marker-6/2").WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock("Marker-6/2", WithStrongParents(lastBlkAlias))
+ testFramework.IssueBlocks("Marker-6/2").WaitUntilAllTasksProcessed()
testFramework.PreventNewMarkers(true)
- _ = issueMessages(testFramework, "6/2", 5, []string{"Marker-6/2"}, 0)
+ _ = issueBlocks(testFramework, "6/2", 5, []string{"Marker-6/2"}, 0)
testFramework.PreventNewMarkers(false)
checkMarkers(t, testFramework, map[string]*markers.Markers{
@@ -804,58 +804,58 @@ func createTestTangleTSC(t *testing.T, testFramework *MessageTestFramework) {
}
}
-func prepareConfirmedMessageIDs(testFramework *MessageTestFramework, confirmedIDs []string) MessageIDs {
- confirmedMessageIDs := NewMessageIDs()
+func prepareConfirmedBlockIDs(testFramework *BlockTestFramework, confirmedIDs []string) BlockIDs {
+ confirmedBlockIDs := NewBlockIDs()
for _, id := range confirmedIDs {
- confirmedMessageIDs.Add(testFramework.Message(id).ID())
+ confirmedBlockIDs.Add(testFramework.Block(id).ID())
}
- return confirmedMessageIDs
+ return confirmedBlockIDs
}
-func issueMessages(testFramework *MessageTestFramework, msgPrefix string, msgCount int, parents []string, timestampOffset time.Duration) string {
- msgAlias := fmt.Sprintf("%s_%d", msgPrefix, 0)
+func issueBlocks(testFramework *BlockTestFramework, blkPrefix string, blkCount int, parents []string, timestampOffset time.Duration) string {
+ blkAlias := fmt.Sprintf("%s_%d", blkPrefix, 0)
- testFramework.CreateMessage(msgAlias, WithStrongParents(parents...), WithIssuingTime(time.Now().Add(-timestampOffset)))
- testFramework.IssueMessages(msgAlias).WaitUntilAllTasksProcessed()
+ testFramework.CreateBlock(blkAlias, WithStrongParents(parents...), WithIssuingTime(time.Now().Add(-timestampOffset)))
+ testFramework.IssueBlocks(blkAlias).WaitUntilAllTasksProcessed()
- for i := 1; i < msgCount; i++ {
- alias := fmt.Sprintf("%s_%d", msgPrefix, i)
- testFramework.CreateMessage(alias, WithIssuer(identity.GenerateIdentity().PublicKey()), WithStrongParents(msgAlias), WithSequenceNumber(uint64(i)), WithIssuingTime(time.Now().Add(-timestampOffset)))
- testFramework.IssueMessages(alias).WaitUntilAllTasksProcessed()
- fmt.Println("issuing message", testFramework.Message(alias).ID())
- msgAlias = alias
+ for i := 1; i < blkCount; i++ {
+ alias := fmt.Sprintf("%s_%d", blkPrefix, i)
+ testFramework.CreateBlock(alias, WithIssuer(identity.GenerateIdentity().PublicKey()), WithStrongParents(blkAlias), WithSequenceNumber(uint64(i)), WithIssuingTime(time.Now().Add(-timestampOffset)))
+ testFramework.IssueBlocks(alias).WaitUntilAllTasksProcessed()
+ fmt.Println("issuing block", testFramework.Block(alias).ID())
+ blkAlias = alias
}
- return msgAlias
+ return blkAlias
}
-func createAndStoreParentsDataMessageInMasterBranch(tangle *Tangle, strongParents, weakParents MessageIDs) (message *Message) {
- parents := ParentMessageIDs{
+func createAndStoreParentsDataBlockInMasterConflict(tangle *Tangle, strongParents, weakParents BlockIDs) (block *Block) {
+ parents := ParentBlockIDs{
StrongParentType: strongParents,
}
if len(weakParents) > 0 {
parents[WeakParentType] = weakParents
}
- message = newTestParentsDataMessage("testmessage", parents)
- tangle.Storage.StoreMessage(message)
+ block = newTestParentsDataBlock("testblock", parents)
+ tangle.Storage.StoreBlock(block)
event.Loop.WaitUntilAllTasksProcessed()
return
}
type MockConfirmationOracleTipManagerTest struct {
- confirmedMessageIDs MessageIDs
- confirmedMarkers *markers.Markers
+ confirmedBlockIDs BlockIDs
+ confirmedMarkers *markers.Markers
MockConfirmationOracle
}
-// IsMessageConfirmed mocks its interface function.
-func (m *MockConfirmationOracleTipManagerTest) IsMessageConfirmed(msgID MessageID) bool {
+// IsBlockConfirmed mocks its interface function.
+func (m *MockConfirmationOracleTipManagerTest) IsBlockConfirmed(blkID BlockID) bool {
m.RLock()
defer m.RUnlock()
- return m.confirmedMessageIDs.Contains(msgID)
+ return m.confirmedBlockIDs.Contains(blkID)
}
// FirstUnconfirmedMarkerIndex mocks its interface function.
@@ -870,7 +870,7 @@ func (m *MockConfirmationOracleTipManagerTest) FirstUnconfirmedMarkerIndex(seque
return 0
}
-// IsMessageConfirmed mocks its interface function.
+// IsBlockConfirmed mocks its interface function.
func (m *MockConfirmationOracleTipManagerTest) IsMarkerConfirmed(marker markers.Marker) bool {
m.RLock()
defer m.RUnlock()
diff --git a/packages/tangle/tipsconflicttracker.go b/packages/tangle/tipsconflicttracker.go
index 5ec15165aa..8331010a21 100644
--- a/packages/tangle/tipsconflicttracker.go
+++ b/packages/tangle/tipsconflicttracker.go
@@ -28,16 +28,16 @@ func NewTipsConflictTracker(tangle *Tangle) *TipsConflictTracker {
}
func (c *TipsConflictTracker) Setup() {
- c.tangle.Ledger.ConflictDAG.Events.BranchConfirmed.Attach(event.NewClosure(func(event *conflictdag.BranchConfirmedEvent[utxo.TransactionID]) {
- c.deleteConflict(event.BranchID)
+ c.tangle.Ledger.ConflictDAG.Events.ConflictAccepted.Attach(event.NewClosure(func(event *conflictdag.ConflictAcceptedEvent[utxo.TransactionID]) {
+ c.deleteConflict(event.ID)
}))
- c.tangle.Ledger.ConflictDAG.Events.BranchRejected.Attach(event.NewClosure(func(event *conflictdag.BranchRejectedEvent[utxo.TransactionID]) {
- c.deleteConflict(event.BranchID)
+ c.tangle.Ledger.ConflictDAG.Events.ConflictRejected.Attach(event.NewClosure(func(event *conflictdag.ConflictRejectedEvent[utxo.TransactionID]) {
+ c.deleteConflict(event.ID)
}))
}
-func (c *TipsConflictTracker) AddTip(messageID MessageID) {
- messageConflictIDs, err := c.tangle.Booker.MessageBranchIDs(messageID)
+func (c *TipsConflictTracker) AddTip(blockID BlockID) {
+ blockConflictIDs, err := c.tangle.Booker.BlockConflictIDs(blockID)
if err != nil {
panic(err)
}
@@ -45,10 +45,10 @@ func (c *TipsConflictTracker) AddTip(messageID MessageID) {
c.Lock()
defer c.Unlock()
- for it := messageConflictIDs.Iterator(); it.HasNext(); {
+ for it := blockConflictIDs.Iterator(); it.HasNext(); {
conflictID := it.Next()
- if c.tangle.Ledger.ConflictDAG.InclusionState(set.NewAdvancedSet(conflictID)) != conflictdag.Pending {
+ if !c.tangle.Ledger.ConflictDAG.ConfirmationState(set.NewAdvancedSet(conflictID)).IsPending() {
continue
}
@@ -58,23 +58,23 @@ func (c *TipsConflictTracker) AddTip(messageID MessageID) {
}
}
-func (c *TipsConflictTracker) RemoveTip(messageID MessageID) {
- messageBranchIDs, err := c.tangle.Booker.MessageBranchIDs(messageID)
+func (c *TipsConflictTracker) RemoveTip(blockID BlockID) {
+ blockConflictIDs, err := c.tangle.Booker.BlockConflictIDs(blockID)
if err != nil {
- panic("could not determine BranchIDs of tip.")
+ panic("could not determine ConflictIDs of tip.")
}
c.Lock()
defer c.Unlock()
- for it := messageBranchIDs.Iterator(); it.HasNext(); {
+ for it := blockConflictIDs.Iterator(); it.HasNext(); {
conflictID := it.Next()
if _, exists := c.tipsConflictCount[conflictID]; !exists {
continue
}
- if c.tangle.Ledger.ConflictDAG.InclusionState(set.NewAdvancedSet(conflictID)) != conflictdag.Pending {
+ if !c.tangle.Ledger.ConflictDAG.ConfirmationState(set.NewAdvancedSet(conflictID)).IsPending() {
continue
}
@@ -91,13 +91,13 @@ func (c *TipsConflictTracker) MissingConflicts(amount int) (missingConflicts utx
missingConflicts = utxo.NewTransactionIDs()
_ = c.missingConflicts.ForEach(func(conflictID utxo.TransactionID) (err error) {
- // TODO: this should not be necessary if BranchConfirmed/BranchRejected events are fired appropriately
- if c.tangle.Ledger.ConflictDAG.InclusionState(set.NewAdvancedSet(conflictID)) != conflictdag.Pending {
+ // TODO: this should not be necessary if ConflictAccepted/ConflictRejected events are fired appropriately
+ if !c.tangle.Ledger.ConflictDAG.ConfirmationState(set.NewAdvancedSet(conflictID)).IsPending() {
c.missingConflicts.Delete(conflictID)
delete(c.tipsConflictCount, conflictID)
return
}
- if !c.tangle.OTVConsensusManager.BranchLiked(conflictID) {
+ if !c.tangle.OTVConsensusManager.ConflictLiked(conflictID) {
return
}
diff --git a/packages/tangle/utils.go b/packages/tangle/utils.go
index 3075382a91..b102d4eba1 100644
--- a/packages/tangle/utils.go
+++ b/packages/tangle/utils.go
@@ -28,60 +28,60 @@ func NewUtils(tangle *Tangle) (utils *Utils) {
// region walkers //////////////////////////////////////////////////////////////////////////////////////////////////////
-// WalkMessageID is a generic Tangle walker that executes a custom callback for every visited MessageID, starting from
-// the given entry points. It accepts an optional boolean parameter which can be set to true if a Message should be
+// WalkBlockID is a generic Tangle walker that executes a custom callback for every visited BlockID, starting from
+// the given entry points. It accepts an optional boolean parameter which can be set to true if a Block should be
// visited more than once following different paths. The callback receives a Walker object as the last parameter which
// can be used to control the behavior of the walk similar to how a "Context" is used in some parts of the stdlib.
-func (u *Utils) WalkMessageID(callback func(messageID MessageID, walker *walker.Walker[MessageID]), entryPoints MessageIDs, revisitElements ...bool) {
+func (u *Utils) WalkBlockID(callback func(blockID BlockID, walker *walker.Walker[BlockID]), entryPoints BlockIDs, revisitElements ...bool) {
if len(entryPoints) == 0 {
return
}
- messageIDWalker := walker.New[MessageID](revisitElements...)
- for messageID := range entryPoints {
- messageIDWalker.Push(messageID)
+ blockIDWalker := walker.New[BlockID](revisitElements...)
+ for blockID := range entryPoints {
+ blockIDWalker.Push(blockID)
}
- for messageIDWalker.HasNext() {
- callback(messageIDWalker.Next(), messageIDWalker)
+ for blockIDWalker.HasNext() {
+ callback(blockIDWalker.Next(), blockIDWalker)
}
}
-// WalkMessage is a generic Tangle walker that executes a custom callback for every visited Message, starting from
-// the given entry points. It accepts an optional boolean parameter which can be set to true if a Message should be
+// WalkBlock is a generic Tangle walker that executes a custom callback for every visited Block, starting from
+// the given entry points. It accepts an optional boolean parameter which can be set to true if a Block should be
// visited more than once following different paths. The callback receives a Walker object as the last parameter which
// can be used to control the behavior of the walk similar to how a "Context" is used in some parts of the stdlib.
-func (u *Utils) WalkMessage(callback func(message *Message, walker *walker.Walker[MessageID]), entryPoints MessageIDs, revisitElements ...bool) {
- u.WalkMessageID(func(messageID MessageID, walker *walker.Walker[MessageID]) {
- u.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- callback(message, walker)
+func (u *Utils) WalkBlock(callback func(block *Block, walker *walker.Walker[BlockID]), entryPoints BlockIDs, revisitElements ...bool) {
+ u.WalkBlockID(func(blockID BlockID, walker *walker.Walker[BlockID]) {
+ u.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ callback(block, walker)
})
}, entryPoints, revisitElements...)
}
-// WalkMessageMetadata is a generic Tangle walker that executes a custom callback for every visited MessageMetadata,
-// starting from the given entry points. It accepts an optional boolean parameter which can be set to true if a Message
+// WalkBlockMetadata is a generic Tangle walker that executes a custom callback for every visited BlockMetadata,
+// starting from the given entry points. It accepts an optional boolean parameter which can be set to true if a Block
// should be visited more than once following different paths. The callback receives a Walker object as the last
// parameter which can be used to control the behavior of the walk similar to how a "Context" is used in some parts of
// the stdlib.
-func (u *Utils) WalkMessageMetadata(callback func(messageMetadata *MessageMetadata, walker *walker.Walker[MessageID]), entryPoints MessageIDs, revisitElements ...bool) {
- u.WalkMessageID(func(messageID MessageID, walker *walker.Walker[MessageID]) {
- u.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- callback(messageMetadata, walker)
+func (u *Utils) WalkBlockMetadata(callback func(blockMetadata *BlockMetadata, walker *walker.Walker[BlockID]), entryPoints BlockIDs, revisitElements ...bool) {
+ u.WalkBlockID(func(blockID BlockID, walker *walker.Walker[BlockID]) {
+ u.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ callback(blockMetadata, walker)
})
}, entryPoints, revisitElements...)
}
-// WalkMessageAndMetadata is a generic Tangle walker that executes a custom callback for every visited Message and
-// MessageMetadata, starting from the given entry points. It accepts an optional boolean parameter which can be set to
-// true if a Message should be visited more than once following different paths. The callback receives a Walker object
+// WalkBlockAndMetadata is a generic Tangle walker that executes a custom callback for every visited Block and
+// BlockMetadata, starting from the given entry points. It accepts an optional boolean parameter which can be set to
+// true if a Block should be visited more than once following different paths. The callback receives a Walker object
// as the last parameter which can be used to control the behavior of the walk similar to how a "Context" is used in
// some parts of the stdlib.
-func (u *Utils) WalkMessageAndMetadata(callback func(message *Message, messageMetadata *MessageMetadata, walker *walker.Walker[MessageID]), entryPoints MessageIDs, revisitElements ...bool) {
- u.WalkMessageID(func(messageID MessageID, walker *walker.Walker[MessageID]) {
- u.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- u.tangle.Storage.MessageMetadata(messageID).Consume(func(messageMetadata *MessageMetadata) {
- callback(message, messageMetadata, walker)
+func (u *Utils) WalkBlockAndMetadata(callback func(block *Block, blockMetadata *BlockMetadata, walker *walker.Walker[BlockID]), entryPoints BlockIDs, revisitElements ...bool) {
+ u.WalkBlockID(func(blockID BlockID, walker *walker.Walker[BlockID]) {
+ u.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ u.tangle.Storage.BlockMetadata(blockID).Consume(func(blockMetadata *BlockMetadata) {
+ callback(block, blockMetadata, walker)
})
})
}, entryPoints, revisitElements...)
@@ -90,13 +90,13 @@ func (u *Utils) WalkMessageAndMetadata(callback func(message *Message, messageMe
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// region structural checks ////////////////////////////////////////////////////////////////////////////////////////////
-// checkBookedParents check if message parents are booked and add then to bookedParents. If we find attachmentMessageId in the parents we stop and return true.
-func (u *Utils) checkBookedParents(message *Message, attachmentMessageID MessageID, getParents func(*Message) MessageIDs) (bool, MessageIDs) {
- bookedParents := NewMessageIDs()
+// checkBookedParents check if block parents are booked and add then to bookedParents. If we find attachmentBlockId in the parents we stop and return true.
+func (u *Utils) checkBookedParents(block *Block, attachmentBlockID BlockID, getParents func(*Block) BlockIDs) (bool, BlockIDs) {
+ bookedParents := NewBlockIDs()
- for parentID := range getParents(message) {
+ for parentID := range getParents(block) {
var parentBooked bool
- u.tangle.Storage.MessageMetadata(parentID).Consume(func(parentMetadata *MessageMetadata) {
+ u.tangle.Storage.BlockMetadata(parentID).Consume(func(parentMetadata *BlockMetadata) {
parentBooked = parentMetadata.IsBooked()
})
if !parentBooked {
@@ -104,7 +104,7 @@ func (u *Utils) checkBookedParents(message *Message, attachmentMessageID Message
}
// First check all of the parents to avoid unnecessary checks and possible walking.
- if attachmentMessageID == parentID {
+ if attachmentBlockID == parentID {
return true, bookedParents
}
@@ -113,21 +113,21 @@ func (u *Utils) checkBookedParents(message *Message, attachmentMessageID Message
return false, bookedParents
}
-// ApprovingMessageIDs returns the MessageIDs that approve a given Message. It accepts an optional ApproverType to
-// filter the Approvers.
-func (u *Utils) ApprovingMessageIDs(messageID MessageID, optionalApproverType ...ApproverType) (approvingMessageIDs MessageIDs) {
- approvingMessageIDs = NewMessageIDs()
- u.tangle.Storage.Approvers(messageID, optionalApproverType...).Consume(func(approver *Approver) {
- approvingMessageIDs.Add(approver.ApproverMessageID())
+// ApprovingBlockIDs returns the BlockIDs that approve a given Block. It accepts an optional ChildType to
+// filter the Children.
+func (u *Utils) ApprovingBlockIDs(blockID BlockID, optionalChildType ...ChildType) (approvingBlockIDs BlockIDs) {
+ approvingBlockIDs = NewBlockIDs()
+ u.tangle.Storage.Children(blockID, optionalChildType...).Consume(func(child *Child) {
+ approvingBlockIDs.Add(child.ChildBlockID())
})
return
}
-// AllBranchesLiked returns true if all the passed branches are liked.
-func (u *Utils) AllBranchesLiked(branchIDs *set.AdvancedSet[utxo.TransactionID]) bool {
- for it := branchIDs.Iterator(); it.HasNext(); {
- if !u.tangle.OTVConsensusManager.BranchLiked(it.Next()) {
+// AllConflictsLiked returns true if all the passed conflicts are liked.
+func (u *Utils) AllConflictsLiked(conflictIDs *set.AdvancedSet[utxo.TransactionID]) bool {
+ for it := conflictIDs.Iterator(); it.HasNext(); {
+ if !u.tangle.OTVConsensusManager.ConflictLiked(it.Next()) {
return false
}
}
@@ -137,10 +137,10 @@ func (u *Utils) AllBranchesLiked(branchIDs *set.AdvancedSet[utxo.TransactionID])
// endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////
-// ComputeIfTransaction computes the given callback if the given messageID contains a transaction.
-func (u *Utils) ComputeIfTransaction(messageID MessageID, compute func(utxo.TransactionID)) (computed bool) {
- u.tangle.Storage.Message(messageID).Consume(func(message *Message) {
- if tx, ok := message.Payload().(utxo.Transaction); ok {
+// ComputeIfTransaction computes the given callback if the given blockID contains a transaction.
+func (u *Utils) ComputeIfTransaction(blockID BlockID, compute func(utxo.TransactionID)) (computed bool) {
+ u.tangle.Storage.Block(blockID).Consume(func(block *Block) {
+ if tx, ok := block.Payload().(utxo.Transaction); ok {
transactionID := tx.ID()
compute(transactionID)
computed = true
@@ -149,15 +149,15 @@ func (u *Utils) ComputeIfTransaction(messageID MessageID, compute func(utxo.Tran
return
}
-// FirstAttachment returns the MessageID and timestamp of the first (oldest) attachment of a given transaction.
-func (u *Utils) FirstAttachment(transactionID utxo.TransactionID) (oldestAttachmentTime time.Time, oldestAttachmentMessageID MessageID, err error) {
+// FirstAttachment returns the BlockID and timestamp of the first (oldest) attachment of a given transaction.
+func (u *Utils) FirstAttachment(transactionID utxo.TransactionID) (oldestAttachmentTime time.Time, oldestAttachmentBlockID BlockID, err error) {
oldestAttachmentTime = time.Unix(0, 0)
- oldestAttachmentMessageID = EmptyMessageID
+ oldestAttachmentBlockID = EmptyBlockID
if !u.tangle.Storage.Attachments(transactionID).Consume(func(attachment *Attachment) {
- u.tangle.Storage.Message(attachment.MessageID()).Consume(func(message *Message) {
- if oldestAttachmentTime.Unix() == 0 || message.IssuingTime().Before(oldestAttachmentTime) {
- oldestAttachmentTime = message.IssuingTime()
- oldestAttachmentMessageID = message.ID()
+ u.tangle.Storage.Block(attachment.BlockID()).Consume(func(block *Block) {
+ if oldestAttachmentTime.Unix() == 0 || block.IssuingTime().Before(oldestAttachmentTime) {
+ oldestAttachmentTime = block.IssuingTime()
+ oldestAttachmentBlockID = block.ID()
}
})
}) {
diff --git a/pkged.go b/pkged.go
index 1088f638a9..f4f829280b 100644
--- a/pkged.go
+++ b/pkged.go
@@ -1,5 +1,6 @@
// Code generated by pkger; DO NOT EDIT.
+//go:build !skippkger
// +build !skippkger
package main
@@ -9,4 +10,4 @@ import (
"github.com/markbates/pkger/pkging/mem"
)
-var _ = pkger.Apply(mem.UnmarshalEmbed([]byte(`1f8b08000000000000ffecbd5993a3bab228fc576ed4ebed5e065cae2a3ae27b284f183c9527a61b277600c28011c33260834f9cfffe85c468e3b177efee756ff8a1bb0ccad490994a65a684f2bf5f2c77ed052f3ffefbc5b0423352ffd23ca76179a1027560e8db86e105a6e538fa168174adedcb8f9746e8f80dc70d5fbebdb08eef6dc32f25345f7edcace0dbcb4471f4971f2f8e62b92fdf5eba9ef6f2e3e5e5dbcb52d91a7a886a36bc866ab9473873cf0b8f1b1d2ba166befcf83f2f7fbdfcd7b797056ae9e547b88df4ec61ae2b81e7befc7809d0d3ff02baafbb4077b5e4c7ffaa74d1f00cafe16fbdd053a375fae3e5db0be3f52da807a876d4cbbf0cf4d2b70d1da09fff958f1803dc186fc3879161b9c1cbb70b90a6b5d3ff32bc86eb01fd18c851b6b6aa847ad0404d6faf16a2ff2dd76838baf3f2edc5d5c38619867ec3f7b7de1a75b8abfbb8b76ab4b6d060d424d4519f34cff1b77a1034d483e553d5176ba8847af58571b0fceaf3015a2a7e7643c572d14874c53f7a01ad203c7ab1b55c237ba1c7b8689bf898e2e98f8692762a7dd02cdfc4c3ce9e41b510044af9a06bc78f806ab548baf6a261b9a1be7515d8d0c15ed982e011b0c6dad221a8004368f9a1a5d5df94f86b4b09af95bb5610ea951a4c47a93c15605bc5055168c1334541a486502f0b1cd02a1f105ee5497bad3c54e915980a79f444b5de8e9e5b2455793e69328415b6c42d823e7e6af8b615bf7c7bd11d5547bdd15dcd03a91ce43f1b4ae092d5675509f42675fae6edf5e88de52adba4fa460b76d547c353ab8fa61e571f374839549e7d3c718ac7d841d4d6b75b6f8b46a7c7fe4e41a2b8860aeaf9da098fa7e35c77f5e1d6f3dc4618424dd14cbdb1a38e41545ddf5976c30dfdd3f7ded67d6ff8fad60e1a7f478a1b5af04413a8a1164456a8a31f00fd8785a602a0e981af6cf5461c9b4a60d69ad63ccdde7a8a6602b5518ce96a794309027d1bde045395edd6d2efa82f9bf3a162dc86051ed2bab7e1f4ed16c9c53d70de36f0d57b00b379761dceb4dc10e8a17207a81504910e2dd7be098934fa3d94dcea68edb90916286b3dede3ed2a035df35c904ea71b90210842a4c66f571aea5077f4709bd87a721b7a6f8566102ada153a41cfb82e3e5b1d28da15caa4e585f2bc1bb0b176c2e02acd03dd0db7c9776c27544080b2d335c36c18def7c0d7f70df45f0dc202503928c864f89e6b5805060a459c401a5b6ba3c09dd2d8ecc35a4bba636d7d25b0b486e18174b6e12537b80a8616e83b201aca76ab24d96a7e1936dceafaf5da3044a6b9336be116f056072a54341b3d5d054713f7a4f5b5125a662308b791763acc354c5cb7e17ad6a9fa5807ae175aeba4f8715c6c58ee7744dcada53682535c5468782eea11366d2f15210a644be0459042f6b0a5a679eeee2ee86c59bb08b84546f089296978df7da824c6d68b5cd0809ea6c0533e9e056968d1768b2cea6bb0916bedf46da0c0efe1567103a884ded5e6770ab400026aec48e214508dd66b057a0d53df9e92fec88e474fb92d7fd3d8bf0ea07d3774444003db9fdad6f2cf0ca08a8514455de31dc384895fa73054901972b5772720f75483611a8a5b63d25938106d95d0aa89d079e0d072f420541cff14da33a0de303c5fd16c3d6c6cbd28ac0bbbb7b520541a7b5d0d3c04765c8cac184bf3b67ed6f677b88d6e433402cbf1a15e878db03719f9ae7fb1a001343fc8e6911e1a4aa8ef95847c0c9cba0c8ebcb1cbbd6a049a0fae947aa7aaf2a83400fe45efb2f4433568e96e78376063af40a8870dc444c54022040072fb7ebe8240d7c11dd805bc662af774b78487dea9f57003c173d7d0d242a0180fa205ba1b44f790a28ed4585bae02ad30f9396cc35bff1ca217ee1e41044aa8d46debeb386b25d24e27f20d0c6bab23317904c7f082c0ba47e04f30b23f67f4ea0decade29b8f20a025d8f1807e6a8d5cc74a4b1ec7684461fcd078b2929df353480da0ef5c3dfc77b11b960bf4f8c1f15aaa4ff975ffec3a96a3b8ca83f091027d5ddfd6d6ac5b8867dcb71b287ab8b5b48750dcc72698efed1f01df2aa10e2dc70a1fe3cc5677bc50ff89d1046614026fef3e84e32a7e607a0f9121f0952c8e7c374aa8b8c66918e61e8c86af24d0531e5ae932cc40337510417d7bc695f9a9d0720db2a168a1b5bb73f1c9515c05268115dc6f40d430811298aaa76cef22ca29726a45fe0c66a06f77f7313dc78c42ef81995fc76a002bd0bc9d7e1a48b98aaf2aaefb5037ef358c7270683d047da71595c37beeda7a845c4031829d15440ab40e0f0dfb67a4e811332643b9df8ac9111e30623294fb6d981c61ab68fa3a828f28cc0c157ac69d86458680564c7da7bbe14f615aae155a0ff3f6e15537c7d383403174a8248f3577ff529561b87ab8f7b636404d3d808646f408b8b70d35537f6802deb9c4e7d05b6f6dc1c788ec6f3d470f4dfd3e8f27434a6d02e83dd2d0c3764486f7c0f29e61ec7555f11f518b29c24fae10193252468f633dac8f8ef0b6fadf917e1ab7bd07ddd415189a87c7112d777d973f728c95960761bae7fc20f2bd36fe0956aa3b1e47445672a087771ac9c7b8858df713a80f18bec7987bdd32ccd0df7a3bab16fc3d7312e19c41f35348e78298b75143c5d52e73e51cd255fe9f43b8aa962f21fcc468301a3243ad07475445fc897603055e16934b083fd38e0e75ad1e2fbe17eba75abc6ad35f46b9b32d55d16c6f7d39c656c059a1a30497d7e9022e09f5606dc16bcaa20a7bddf5cb21b5739bf8e7e0b0717e36a67f0e3a3f8c730f5843bda79fa7e771ae83034577eee8275a47d34dbd68ab370cddd5b796a6798eaf6cebbb4b37f1bd2dd0b73a704e43ec3711ff8ef4e8f6ac3ec6d92a2ef09cc7db0aae5800e7314273ab07a6077f62607b05da77882bd0d5e8b2159443614fe2b6a4645c4c23d6e156b11e4242fd5fc32b86700d0377eb7e70787b5a14b038f67b3fb8a76e742d0c426f7bcd18a9a3dd2fb605cefdd257a0dc237805f043325760dd296e16d0ddf05ae82a07b4778898b74999c1dd29c739b4a3f840bd1b7aeb6976f000fc7deaff86639e8339ca3630157835625e9c3ed5c37be1901f7c2f5c23d46e4b42fde4eb19a0c7a6890f9570ed6d2fef521480788fdfbb3df01cf0a6db504308e1e59db71c78abaf914d74132ed0b7b7822b55d0f836143ecc553be6720e3271b5fbc433b41c1de8b1ae45f7acc618fabeb51481de25a5670e465c80ba6f444894f5adefd5e4c45f07f8dc96751a94cc0ad0dfef67ba9c15d7c323654123dc2a5a8dcfb5f2c6deaae9ba0ad0e949d06ad97e5bdfe8d9289aed2b1081b84af8dd3f3ddcb15175570ff198d3039d0dcbbb0411ea8eff5ddf6ebf6b4aa899b59672387feb69b58305a7a58df2ccf835285fdf5a1eb04e4ec7daface72d5686beb8d2030ff752e646d43250a7c2f081b9a1f59a04637db5580d9b03dc55d5f2c406b4370b934f7bfd398796d893c0faa9f9efb3a0fb6ae1d193e0f77f62c9ced6d3d179f51ac9d24b191dfa487a7abaebd6dd4990115151fe06ce89ae95d296a38160050df2ba7725b40199ee3786e23ff46e10a88e6c15315730a529b63a700a9557402a37bc0021e224ab43df148d27d6854a400b03d33bb4b00355aaff5edf7bae2284134cf75bf07ba166dad30f9ee4430b48270ab2ba71d2a10b0e5aa9ec662cb7264077f3f1b432d61d25fd74bbf231fda3ddd69ba04d5383d5d5d0354a1e2daa6771a8bacc169d6568bac3ba16e37ab21b30a11d9314e05e51268b8bdccae23d033fef235c83b3b7b610ff13cf0193fe63ce03d944770161a7ee09f0bebdc8170e710ef12cf0c348aef013b6b979e07ad07ff2ec3dd391e047ac6e9b8005c3bc37101eeac697a1e76ab6bdee9c6e835c83bc775f6e8e679d0e0f493948b600dcbc5faee2e6255e1efec343e675cff44a2067cef3c737ca8df92c1db7af2cc51f3f330b74779afb41570f8ece6ddc03efe937e487815e3b61c077be5d407abc184a7f6771d2267e8f7c837b64a6d0ba386902837b5c6d9730b3520f40f29ce86aa04a746e565e06d7d93f80ab01785a7e762cf4217fe641a0839f5d8eec3b9295cc768fe95c9ef60ebe75c68bb02736dea388171ea3b9c14a61db90c7465d6b97a88297ba97cab47c199efa8ce007cbfa94f527bedbb13c5faf61e0b2ed4fcdb95ee83db3058ce6baeca439f0dd7bfa43885283e2da97b37e7bf41be07a6917f0d7a1bb2a6882ec00521f0eafd0b75645deb8ee2baf55894a384a19b1ae1d0db2aeaa90f55945b8152f3815061e86fbd08645f20fc2bff3ee25f7a1cea6e60796ed0f0d5ba7fe058ba6d34c0e9c13dc7b22dcf44bdac6fa197659e1f9e16b996d750a162eb94fa3db09c53b2e2f2f4a3deb3c5c83787d06c689e9f149b0097800cefbbe9393ab04ee5aa80406272ab962cdcb557e089c5e66cbf87c8195595406f7d5c2b3b0f8226dfdadb3a4a88a31cc577c4b760deaec3e0e7fa227a11ec7b9db917416b9f125f04ad1ffe3d0b5a3fef7616cc5402f34eb0865633362ec36e75c30a427ddba81d89bb032715e387d1b08c17dfad3f861b984af30ea4732afd1470a76cad536fcc53022b2816d4b33ba167414abdab45db9dfe389af113388e074e86e8f9ba1b6e150d69d8caefdaf7a797e11ab540d115d85ab0c657dccd9a2208a2a1b861505beb6ac5173eeef59508aa3a848a93e0e33b9a17b935bbc5b78db35fc7fb8e7e50b648cd7f07d67a0d2db591fd3d812bcec96567a5ff557e3877f600dd1d0897c6730726fa6986a7b70dd431f17e65e394a155b8344ea6c77e4d57d5a1caef56ad508d345b0ffff2b64663bf6f181e8e15e9a71cae55716603f57858dafa3221d3e2caa7dbf783d657ea40df1a56ce77cc74470935d3c757cf1c439ad6d68b1a86e707a89a8676fab5df294039bdf1a04f80fd35d96c68ca69c8267def679750540bb6da77d030b4f5c5f78d403b73cebc521e7ab67eda8d4a697d470569c45033b70d4fddc4178a423dc06ec7b9db246a404eede4790d64abff1dd5f63b421cbcc707e0be0749803cbb0b006ee468fee92c8c0c6fbb415c6e681e388d62ec14982850c1b1e8349a5b0fe6e6306b250843ddf161ed10e3de4cb6510075ddc7166db9f69ff19e62c53d248d2030bf2b4611db834a5a38d1d5087a513052d4a0e1e85b1beae156d72b3fbfe3251461797f011d58c15f9ad9585bb11aad4f5eda89aa6f1bbbe685d70d63eb457ed5fcc7bbc9f9d9e1cb188e072e01f88ab5bd829f153754375bc8cf010596e15e2b6ba8e046791a7038578e6766b91f700e24f6d6999512ab294ca4ea5bace394d073d22841e525b08cfa9b92aac032f0927303a6b23f7c11cabb5a5c7cc65801c082a86f4f1b3fa45b53c76f1aa9f49f292835fed1fcb804556cd95c02d063eb7424a8fca0f8b919ea3532cde835d4c882a0f2b3727e287d0bbc942365fd4895f9ca5671523168f8ca36c8065655925ea911f1d28a3b12e7a17c4573f42b45f800a296a9bc333099bb76b534b858eaedd7566abc9f2946ab46eb5299a9686676b3c89562df8309d9242ed67264905e05a85e85a5678caac357ace233a5451537ba55bf13eb1c1432387dc3bf5eda50b64e26a497617468284e6a985d832a0cca2b40e5376e578002cabe00718330d97532e9df4b30991774aee8a2a80581d92816a90be5a576c02fffe5ab36585f81b75d6fef9a5e762f4d15c8d5c386ead770d1ebcae180d3220bb8b531e3f779bf2ce50640793fc55590b3fdb5fcddeb85f76fe7defb5b2f4e4e0b82c4d5901ce1e5f56c6160b906d4d7d032cc5a478324c8add1d3d7a5e5eb06ca5a37f53cb67e0a18b9e951a2ea7b7cf823db98512d606da3fa9cc330388c991fc6aa9546ae85cc2e5cc55500f74c0df1f9d915e7776f557c277c29c95f15b0e23693f20a38f4a690a33be1f3e33797e1cb155a0fb4cc83ba13daf3b369700f78985df7770f743106a0af77b70854c7cacec06587431fc10c53cfe521949b1c29714a71b80dbcb6a08e88fc0038321dee0587d9556577c01aba6bddcb39cbf1ef65173e227c27acbf550c47b913f87ebe07e1ddecd8e9db203b727019baf888e33248662aa72f6ef3f708bc6a66df8b61584198ee215f4189dcd072b22d7d6bad6837a4e818fe26c7b3bb9b8aeba9d24dbe5bf078a56d286ef208787e41d42338c53d5119926f1b7f596e1e5df0beab1684c95fd94279a9b061ead0d7b70dcddc7a99a7730b1499456b2b8d425f06f68234447419228f0bd5200c2bbcd4edb4a8b2cb7c09a2bce455df59c504b8051c6daff5a8e1c3c8517347fb064c03df567a172452814e7658fb36308e8bdf4181530c60a5df5fdd0b6f58a165b8b96b78279205e2fccce4dd282e4837b3ef45f0d4cda36d2047e0611c3b84967b1f4a7a8afe2ed0f21080a2d9fe4fa03434c557542bbfebea51ecc002ba9a5b34b770b7fa2ebf9ef2262c3edeb2bd0bf46807fe7ee8ca55290f20ddcdf712c5b01e6d24df107800e54ca4fa01ecf283cd47903297f30246e52b901b2098a8411284e92182fba11bc00b6f5037477274c7db5e1571fc91417961f50db85bfa2f85b2bc1bcb5206974786adabe43a85bd936e35b49b3af20c466e306f15e7b13eba1e3896acbdb2752dd708feda11d5d789e2c0bfd29dc3e357cd976f2fd93638de135600d4b7f8bc40baebbdd5ca87353e886f86f85e70f4a75109f55b4e2a8ef86f11e14c9f2a96bb62e49fafa4451b1f6f8615108a6a551f714033ddd239ba0d568147af52e7be123ed535450daaafcaeb8b4b97c353b6780fabf226ff10aef24a8f7d7d6b39a932abbcf782e3e7cc26abbc29cdf99200f8c7d19bd053aacf5039245bddd063bffad6d543fcad4bf59d17e461f36a78101e3de3ab4e8eb04e6bc94c79688547af4fc229e5fb24d014989238fd30a35694454aaaefb3d33c65fc590fc2749ffb52fc059f78b3bc74efd2f2cab99ea2394a68667f1aaa65943f71b000ffce42018e85a714fa9306fb7d058b017ef177e4853af0b7961b66479fd2f32579f2886a1e09f45f98de2372fc2ea3e8d1cbacb3c5bb4a18a6f6aea1049a659d2d41ed6521f4937c16e90b570fadbc935b5fcb7e857a1ce65e227a4e2d652caf5e803997fe0a2c23ed921734a234feefa774457fb0fecb9e4ba7b010cdf4472348dc5041eccefcb5f25743c3fbe9f9533eb3f2e772f4f99651ad246372ed7d806f163ef75a4b0fdc14be6346aafc396755a60982709b5d2a5ddee71e24ae96fd297b56d68c3761b15391c6f514b5f8822c7d512ac4a3e7748705bd4d699445f4ca5f8d285c936fc7cf1ff8114d8b976f2f3bdd05deb671634be30ea84aa4fc1a34fe8354edbd7079068b6bc0d55d93bbe0ea9b2757d0cc34ac7e05e2dc3eca3de0c576ca396034c5801ba07fe587b197000b0d61445855dd84cbc3e1d700a986e9a769032e41655b00e78acbe0f8b9d20b21ee8ba0d548f745a09380f74d381cf7feaf6f2f4b3d088bbc446e0461faaac84494be1a7b0075f2c77fbfdc9d8e69ac586e9e39a996da89f1c61ea8bc6a18de5fe9063fe3f1d912ffe385fc8bfc78f99ffff99f6f2febb47f37f348fdb8724b6463bdf5dc507741b6bbfb234d4f85fee6092d7efcf78b9b6691ca378003eba0bffc7825e8b76f2f3846f183225fdf5f3f5ec95712bff917d63e3f5e2882a2be136fdf297249123fa8f71f24f1d7ebebc7fb6bf3836ec968c10dfe051019528a207dfbe3bf5fbafaeee5c7db5b93a4bebdb0aef7f283265aafe407f5ed6582937bfca030edf5971fe4dbc7fbfbb79795055e7e9004417c7b61ca9fe2bffee52b8078f9417c7b99035427f1ed6551e97a1bdac1d123de59faf1f1ede533b41cd49385aea1465aad0fe29d7a7ffdf63209d09b0f8aa6de5fc9d7fff9f6323e07d92472c862b0fff3eda5733fa8f8af7f456e14e8e0e5c7ff21be11df88ffc20c379f39c19e39c19e39c19e39c19e39c19e39c19e39c19e39c1ae823e73823d73823d73829d2b7ae604bb0cffcc09f6cc09f6cc09f6cc09f6cc09f6cc09f6cc09761be39913ec3ad63327d803e0cf9c60cf9c60cf9c60cf9c608fc03f73823d73823d73825d407be6047be6047be604bb032b2d7fe6047be6047be6047be604bb86fbcc09f6cc09f6cc097613e39913ec2ac63327d87d28cf9c60cf9c60c63327d83327d83327d83327d83327d8332758fefa9913ec9913ec9913ec9913ec9913ec9913ec9913ec9913ec2cc83327d86de0674eb08b85cf9c60cf9c60cf9c60da3327d899b2674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb0674eb07f3f2758a64251e3b6f1482aa8071284fdcfb7177c8f56365e5fd922e3a468b2ac13f7e7460f1ec84cd668aec1874e296b8a2474426d9244537ffb6b135ccf58760929cf6146be9639cc5e29e2e79297ad15185ccd5ef6fa4abc7e14d9cbc83c7b59b3497e7cfc44f6b2b4d30f662fa38b4463d45beb83a63f887f44f6b20b97959f26352bc5aa0251cf5c56262a2b1394a5729ae527cb58759ca0ac9a702c853e99d469f2ae72ce3fd5c0c5d958a88717569049d599108a40474366e5eb54f9cc0e584fb3e0bbecd0c970209b9ad58e46cc3ed0ba64221cda60c4f4680d06b1b8889d2f9153c79008a403b11f0dc6b44012efd221de8f9c18aa0e20946eb8192681af76c9bd404dc0a8475b8ac36f40a7b5d71c9a509bf396c6ac2285e91f964d10ad06dc4e63f8040cec48a2fa81da31772366ef7396bc13a81870967c18b96d52a30c4f25c340e483bdb8b003fc7b49eca794bcd32c33621918b14ccf5f52dcdfb23021466e3b519bf31d18c0bdbc68799238f902546ba639f45e1639425fb43692100743a617a896ed70960905aa05be84beaa42c2cfea45fdf08703d69f36c791caf091dc9c7bd3041e46eec453049918766c6fb80c13599c939af36a80456b0fc4893772fa7b8d895bc3c12a90ddf84320097f34987943917480d0da0006ee54ab4d0c3b477487a3014b8fbb61f2355895ed35d9ed30398223be445ed52011a81bc21c77e2fdd7b2f7ae7563a2c2873de283dec4f0e6973857b53ef13eeef4e82f8156259e40638ebe16bd7828921167491e58b40e1a13fb12b5f2348b0847dd9e3f6256b4da3183913ba6411fd3de5f8b1c04033e51ad365c8ba9bc7c89213d623e68fdd07b1b0f88002c49555c86d5b106888e3a059d21d3427df735872780c8456cfa1cc9a2b9579b1ca11d424a12590374c9486872e04b0cfda9cb066ad733c78b18ea83f64e73e787a91bd2eb0aed653e4cc49caf8359595f1213a3e3e760b840b4dad3ecf233009d5651e75ad847ea928423661f490712cd8348ee567966221e05a003dfd54e6b3764568166c18f7529e7b62cc8beeaf015594b71748a8f804042cde95b2ab37a436dcb144f4cdd393d148940edb492afd3799a70a4eacca1ecc048166616bb24095d6c4395928c5513869243079c252f7581b4546a1f01865e8201e7ab0e584982e670f68d7ef5272d55e0766aa745a8e484d0503be4dc9493f81d38fd0008ab37d62677f2800fe405470f17f197e4f8506ace2299e11d4568c1ca1cf6e4c5de12491a6a448ec3064806d5010fa7566fbf5e401ad114d4699aca46b7e76896e40c53b983c3851d4c3b7232acc8dc14c3cd301cebe4e363e92f11e9167e275b6dc85932fe3782f45a162713959a932ab3aac8dc0a8d2f610733bad019ce2491853e212fcc0820195a86be6c21d9673dd0b183122ee3078f744c1b6aeebc351ccc0216bfef93ea60668d0621545d3e9445ce949c188f7d34c8e8e0f0f470b14f389775388b3ba4fcd28e782b2fa0a336590ff791793514e115bd0b46cecc039d381a31153941b46b96f4417366bd68598ad0b2874c8b54993dd271feb48421d68b381839afb4ecf291d49cfb2af5eac90b98d184a5e585e4c88bd65aa4f8c352a06d20c4f0abb26620bd55a125960549e4033020deaa750ec5cafc14890ace3e923b6632ea70266bc5c9701127699f3e4efa1427d53a1ed7ef787e6299d3ba8435a2fa7badc366e3fca401052399a19b231740c96d9b12150e358a8eb42ed944f4539b5a0428ded298fe4621fc834ab5f6eb41ac8a8bd8fc123f236dc01f944e46ebc1a73f6d66efba64321a7cd25aa7755019b8911746bea660dd266fd0da257d689d56200b2d1730c6bb6c05dba1c87a5a3f74c4859df691b1696919a275821ef643305c06ffdfcb3fc0d0ffcb51fc9f32f6ff4aaf7a498de50feaedf5b718fcade6af33f8d34e5f30f8a9d7a7c5ffb4f8ff98c58f675769f5eb0947c92277c056fec63b8c3adc416df28944f10776e3ab6ca1f582b751f2b12b345d425b2a45135a739e48e2a7252ef696eaf443591c5b531858a71a71862c778643f558a30e674be2dc64adbda5662bc74298a1f71b65c0470a016d54265126a93a21270fc6a82c549b1ccc571a2d6103d6e15f6561420286cf566ffe80f094051bb02e07358a0e8093becb2d65f43b5f21d06f6dc0ed0043e35515e3d6bd0edc2fb452e072a175000c1a0b6fcfd2fe1dd27a9096477dcaac1a11f7792f891c54dd79ba62f42a1e15c2a14c5f76f1b891e50535978372ef08dfd406ed4047e371269e2c4cb673867764914b64617e3466cde10f4088f198e41acc0ad5e500217614210ee494d67f67b0fb8cf6b9658f7eafc566b1daad35878f81001399a7d7b82d4c7b1869cdb9a932f1499fd918d75b58d2159ae071ec312f317f71196e3b920412d31f59bb80e113cc335c5eb7a4309cd02255814f2481cbea051020fabb2caa2fb776d1ef13ab15c1a45616aa07e43c63b27157ac19dc0717f361a339bc095298ad2c6299c02b3a86b1501d859519b0ee715f35dc46360f442e9152fcdc7a40bf772a734946529ee0f925208f114672736c4d2dce9cad26fd517fd29ef193f6a8c7b76762bf334be2c18cef356756cccdf8767bd483ede50a767139cfe3bf4b2867cf80c57f57413027fa5da5c771f859980cabef559b1ba5ef6167d989fbb3557f34ea81f662654e52383b98affaed3931c67f79d487d5643f2366f879b132f0df1511044ba2df5eada460b1ea77759b1b56fb35e3270354ef8c323bf324fe9aadfa5fb324e667ab3e3f4b62385bf5e12c8947a8fd5982fbe1cfa081ea6a0bbc86db90094e42639e35dbcc2285592e339c79da7717e1cc513f92989badf8d71959c505ed595a577fb26271dd8bd52c5810fdb6b0c2efbb829d8e63498c031e8d77350e6484bf1a63b805c9e2faa495819ebb5a6fbe49c7d7b7d3fae1207d862ceaeb828abbe8efdc061097233e2e705f7733c7eca0777371de5d66e39925f17cb69ad8d97896fc02d36ac55b88ee746fd4a3db8b5e5f4c79063a0b2b1dff228927b3557f92e1f93387c57450083cce01b0e710f783678315a20fd143effb2b244bab3996a5592e4b04748e79df4b79cddb392d05d48f19df6752bc209811fdc18818a33a99d902d5d9e76422a595b2ca6441001d018f63f2f78c829d945eb8ceeeca4ee56b91d26690d1889b5bf82f943b980e7399c8f896c4ddd96adc9a25695b99cccc17e9f8e17c81db19e0fe2d271da1900f1bf35122244c1f01c3ad0eb3941eddb9bdcfc738c7635cd17b3cdfb279313bf01d7991c95ece473ba58f4a7029fd56709a8e7785dae2406f95c9149e335c4af33eb74af1c319a64918a5f280f0c2cea83769cf9a5c4759a5349ce37907da424a8f6d8a038899152f515f5649d6974d3f95a9039fd277a52198542636d93baad549c7f6512fe357af330bc920884e68bb5c744e616dc4f7ae6e4f521db202e3547e4c17ebaa557f903d33a37ebf3de3b17cf0bc8578d96a2bbd746c2b618679c1f35a3ac7283aa50392778c37c97448bf7df27e88c79ad0bd4c1f7c65ed625d3727fc5e157e41c9991cd29d6cbe71aa8dfb30d07b9c9c97657ce1969836e075664b397f97f9bc48e7d03ed37d04febb5c8db14e1d131329af4b48eb42f32c97196eb69a0433cc1fcc03c44bacfff8ce915c4db00cac786ed487f93cc16d60f9273c44ab91d2e38bb6f2f9b658a43291cd3569c4d09dd9aa2f490bc4d7de1ec96baee3a455bf3b46fa3cd3c943824df51d9feaf71555c20a48ef2dd0bcebf767a9bef91af5417bbe043dcd1ea77049d81931a83ffc2ae5196ea32d25299e9ceab3af512f6caf44b997d11fd17697c92297ad7b39effaa98e44eb1a68cffbabb45f3d3c5fdbfc4aca64a8d5c9e9a0a6babd3bcae8b1eaa538992efd4a75ca649fcea14c97f26ddcce6c6976460c44f412e669f901cfef4c67a63cd0023ed51db8be745e4cbc7936af331d36d2739a1cdadd8cd7c112eb62ac9b999968764e79375f7d6019023deeadce9355ce5f3eed37968fd5b17c04a88df632d367a0372b6940f4db931e1b282bae3de3e74cda36d94975b89dad87049e834be235ad8f2ae99ae998be94cd9d7936ced24e01e918abf8a83ed47ebe7ea6eb355aa738a4bf17254f06b3155c80421ed8e4441e88945f132fd74bcb5c0fa77ce2b335e30be94c9ee8772704fedb06049bf689f23bf93a84eb4ce82e925fccf354d7b7f3f5183dcf7bfdf1e9d8b331cf539a85ed7c4d982dd2fe67ebcc0ead33d5b998f37795ea884276d09a79d5de3870b9ee4bed88a63f9810058d5e0b1aa1fe6279aaace3423f953bb1df19317df4be5d3e4f2ab66166a30964275b6fc549de7e13958568acf9fad7cde85cc02c293c07bb6a8f4d32fbc3cc61e6a93df39aada15cd63f2a83e3b27523d3eb7097bd17d5deac6a4fb617e4271eb3b62ada10b5de0ccbf89858a530d9fcd0089648d72c3b9eb96677d4c33639f28f20bbf1ac3125db5366954882948c976d3866d8c378f979909752a4a43e41e127cf283a020c1f810efb2624ac210e66bb51d2f655774260bf91e9190b38f95ac24f432afd604376e88465261e105a5b9689779230f7550768aad5d60053dd7d3b893cf626c8efb22461b21d327313303d9f1d84295e3f26d2a8605aef42981fd82e61c84c9f90f8602f2e4fe1c89de654fce71236aec39ef1b74bf804c3c33862fb3191d1c0949999219efaeee4de6207f31d3b987bf2a21d167531b90f1517ed8e920f03302654adb6a3327d9745be77a7ad217f381f9fd8610d491c1b2a439b32c3db2cd38fe44edb51440eb24c492b917935c4c15c03e90e59de2e2777f646116be8ec0d65f149b3ddcf801d5462085dc21048e2bda88391779a65bc2b8bcf8f2aadcbddb5c05016c176b8689738fd9828dbf9a4ab780205c194cc6987ea87cef0f19dd142e66461dec5b194e63828db99f96c477258a6eabba7651a1916b11771611b7ab52ffd98d01cfea05231258be32ca27daead895a8caf4faae33ee11f8d6940167c1507f31bf884f1b5f8dc57f0e963da9b15feb57d15f1f3283e7432869fa3e7499d7ba312aff24f792b0ee6852c0b5416f358217a225e1fcfb3a3f2ca3c3b1a67855e8a20791ad34f64a1452cdcc94e75db4cb93b661b97cb4c1c6b1b1ecdcd79536160202fcc4416273b7520432d2976198e7489389857610e0a031dd031fc61c77e3feae799798ffaa3b97641332d693b9a438799ae8372a79dca5cd226d4a45dc6c03aed40112744c9ef39941d3ed11cde2e7971b28b7e16666fc8a209a5264fc8ab224665ac077b3497b16c166d743e76ec802355eba81fa56e1a004f165e8d549f6773266927b2d0b775bea06bb10b25512694a8b07726aee70d737e0f0a7d52dd05df280cbf518873e331ea7a1ee9a8261f806ef9be720ac0477a6b8c7511d25367e958ec2eb18cbd1d9ece9bb49e7a7c12cbf499fac8d03f91e77437cbe503d981386e8afa04061c291fc35576333d34f7e369d2fe9bedee8d33f1ccca498bf6dfc3243895d9b2df623bd3b5f5be0a947fac73b379762ec62b5073a8f5f05c36bf968431eed8b531c94e3fd0a8d5914e58f3273a08adeb8cec63dddba9ebd9fa58f9c3c89decd31d42d31f2d8880edf6fcd37e17f1df2e618824dd94056e8fd7bc26073591f735875f8b897931ae3b72c7c6d7e20c9fd3d33497c6448b4caba07bb1737b2a9315fd80d6739e3121d287a91cb5379230f1e4acce94ff6763cba87fefeb8a1e4375a9792c1fdb131302e9eb8a7e31556796d9053092934cdf342769bff09ce78b530ad53599655a3bd069072ad5b7656116b0e92e39ea43aeb3f69ac3e7e53b6dc021f942eb3b94fb65ffd09aa20af090ce97535b4f0bd8ee67b5ceacbe7946b7740e9f59d3312d0a9e747b6f6cb75dd129ad2afeb9bd0584af8a27b4c47c19e4f2b232ca5df656dd26edd3eb628f87a41359ec93c8de12c90fafba46e27979bc3674b17e4bdabe5cd8602b4311c7f8048344f591fe3b5af7aaf3b1a267caf5bf4f9c59b3523d7c076ef55451514729e3699fb3f8bf212dda912c6ac59ac6764c2c63da80275806a27f1160529b15d99e481e86e57cc1bab0c0ed12f7f4ef98d788264baf6a8704d532b5ebe57ae8e87d3946cfd09ba55db1aedbec7d9de137409cc363fbfc8c3ca0f62ed0b4b09f327d5dee079536d4a8585f8fcb2feb2ffbbdaa6f90ccce9dd8949336a130ab92ae4cff50e8807e41fba22d15cdf3c13c01c2aa56dfaad06178ecc5a92f96a19d137fa5aef70a9d569e16cbf53492a7a22da47718fe5563e883bc38eebb96b477d9e92963783cc70a5b44243ffc8cb797f5b983e5a6c0296d1dcce3b47fd42a93d3f3baf8321f5a9b8bb27b38d629b96e651900c1600e35ab5db575d09a6f284c3f51053ad22bf4be3dbe191adfd109b11c77d469e3fdc451a7edcae29c9045f6483f209dc2f217f557a426f5ba86a73ed18dd37c67faf2ce3227a7fb52190c306dd0bccdf73e07477e53ee0fd0273cccda5d19c7a7e9da88aef7d3d1652fd2f1c8bf41b6cba0383d97efaf1aec92a0d90ea89e4074b18f79f1d4e04fd3f1d209c6801d04467112b103721bd1bd40c707dafc748f697bd256ca3f635dda47a73cda54d60d471242c8322d5315f803923bc4ab74aecf2b7a01ef451b9cf5194fad36250931292fdabe96b4cdca3cf5e5cede28f8b868fba06273205d222f3e1db6cbbeb10c923700b3b8c93e1fa722f0994ecbf6c28fd6add6a13206a44320db918c49d7334a1b2fc32bfda2d4175ab4a352879d1dd7eb1ad92b0c0715a64fc98b76a020ba147647ae572fcf4f80edb4eae9c6b42fd97a026b725ba1e97091d3f493be66c3643caeca8f2fa731074c8b69c7aed1e218d6f04a3e64719772fe147d40be0447e5f2a8199c25e5f255fd1d1dcbe1d5b6531b23b5e78b93b8529383923887d969cfeab8aee9064f75c755d8ab277b55771cb01d80e694897c112ed91b7ad23e39e5da263417f32aa5c1d22bc6bbaefa19c77c4b2ed0cffc5a7cba5a739e2842cbe512dba8f8be5b59b4b14d99f3f20abf23b96346c8f65028be35ea1ce943548f8fe6fd29cd052a843a4fbcb3032292907eeba4a782471ddcb63facf8b79593eca54d70627f23fd3fcf4fc9f6b07d90804e7dbd94283ad4983ea1089caf3290d017eda622ce3de4b3a816e9492217aa54ab55e80b7172734ea9d6c99c624a59d34f64ab58a7ba44c50e969c8afd737c8ea64b1ff9f995f1a0f5b997cbcb10f9c349bbb0ddf3ba85a4225324a6b7318555bfbae297a0b534f77356190d07630fe904a463b2d3cdb92d88eaaad8d657e523b725908c9b48b6733a9ce77366ef6cc2ba5f86f4e1a3b1c8fe4d9b6c8763109593d1b96f3caae87d7d714ce3c74f4be7fdde1b5ad9477f9ab44fd7be63bd32e02d95811bb1d9360163ae45f2e678f63896d1617792d8de8b1df6d4affd3bdd0be9279ad36fe1985276525b20f7b5f38762870377c10ce20fb61f1671a1341e4107722f859997f445faf5a80fd95748b92e382a2b6484393a0796c5d2913f72798f27ef8b92c676db9acb993a8e279cd4959e152be38b4c799a3cdbd3786719dbf8ea9cf4bbbe6751f0248b277711ef25a7bf5192e371091404653c13f3e5f29947a42fa8d8aec5a837a91eacc84e0284d74adc6f7626864c130ad241792c36a3d1edb82b072a7b770b95a20976e359ac4bfcde53f38aeffff5aabfb66875ad69add65beb95d03f68d0baf989ec35c4fcd4fcdb1bdd7aff3ddfc9befdba63f359af2f9c9b279b6fcf83f3cf83f3fff983f3d7265879707e3800beeacc7720699d28cb2b9f0c0db2cf3cb3cf550532d88b8bf87dbcecbd4e9da3cffa02d089774331fdcc513b90bb61977d1d2ee2e84bf8f0c6cb5e6bb80cacdcf06537048d176e817686cc2bad5aa79f65bd969f5f75fd68b890309c408670e4d8816aed2d16924891a7ed6dc87745681dd0c23fb5380f3976ac151f505b2ac3132af5fac62efbf4b439f6542b4606101c3985b185da0f546a62aa83c9c77a10d2ebc53e1e2fedb793cfb68811f3e1eb8949e0316d6c7fd8e9c5c345be289aaabc68f9a38e1649224fa809b997051e8f57a748537380af6e3c623c68bfae172d1388f3dd486c4359c49fca1923c7849230879a1bda8a38d9ab4cbf3575e440168d77d989a1de216d64dc65fd79d31cba39a57c526bce7dd9b543293fd4d1f533679db46471de94053e5aafdaa12ccc7d696186926884808236608c37b6ab51d341fb752806b53eb39d16a6a32c7267db97283a000219ad45e20a2e6b8c1cce941900754adea9ee2cd428f8262fbd783268bf4e8fdf45d3ae466a0e1f4ea9b9af35db8124da6fb8ed6e68aa0c74558bf401c387dac1dfc8420b19b7ef8acb1f90f3a52fc88d4ab508f47eea4cd0828e8cd950123957115e4395e11dd0f56244ff69b36dca0cded0789be27e703bcd9943cd22134998fb401cbf4ddcb27fb2d30f15216e4d2d8ec3f55a6c30c287db633812272dad3987ea22eea80c8c14823425327bb7c2f8010b2750a668c8f6798eb5e2854a713bc07c040b860f80c3138a303147bd7ea208fd60349898aa3b0e350ad1520a583b6d87ed4d762a43276c8f0f55caf7596b6fad28de55a995c1af6c632e903bc5c1878296b20076f2a2cd2f164510ca9a36e7501fcc4249887d19f38f47f292fc7bb251e56f26e31649a8cdcfb7f1b2bdd7bb25fd3507baca60567b9ff165af0d4cfaeabcb03e23c9e9db32b58a54aa1520675ea738a4ab5ccda149d599a13910a84df68d3d7070da955ad36eb851a978a76dbc8decc8ceddf53bbc2f53a6a536b9c3e53666af93a5d69c6cee69a3b59319fe301290be9d9ba8ef8fccf39fe451a45273a825e9bc900418fde45c3e530f5b8c49a770dfdfc63f819b978f84d8d79af37785c17427a69b1e713a4fc7783ed2942c728ecad0cda9d3270143d323fcf723d4181ee2a06df219a90e6dcbe238d3897d5f75f8a4ec4b56be20f1a10d96e1483098ef54376c2ac29c50908ee8b6f7fae0df1dcfcc905ce470d3d1c89d4095e13780e1ed13797a630f6d473af4adc9e127e5c82ac6432902dfbc4bc6ba5e3ca54853ef909e2c64f37233db6b03e35d15fa894cc16824c45076d17b3c5f77c0e113d98977e0e07b8a30b765a145cf1812ca0c34870cae2ba79f313948afdac0f0f5e4978ca1d01580a1f7d30d7bbe9f685d3d2f8394224e48a4f774874ff4e67ca775bdfd94caf0ba55be7fc229654245001ee87a87f1406e9e5b1b329a6067576e723b20b4eca9358ec787be333e68ef6a53869a23076a537b531868cb0c1f4d9b5ea8082d1bcd95d1b27f566e81030f40e8078ae8a73411fa91b4200359005075e6ef1a431f14319bb3027750a99804ccea3dd3a1e4b8b3aad165b4ec91782e9dd7cf4732376d025f1eccbde966bcbf68a7b8b2af3579b41ebfa5b24f9aaad3437adc958596cd765a962472d5b98cf9859d710a246a938fe4ae8ff5b724b2a1dc44eb0784aa3bf300f36164eb44c032fd1808bd8065625f1556013b805065e21d48f046823dbc83d76ca785e7a9e6d081d60cf76a73e2a70ebc6f4ac8f61df084bc0c939cdfdcf2841e941ca8549f98ba5c3a96521f1dc9a2c6f4edf4c00699d715a7f4d302d6e2c070111fd99b604004e325bb7fcc8666e3ffeb6ce84def276d68f6481fb08c71d033fba53ab764210e14b17d50c4f13ba04c1f30ab506b22ff65f5a63a745373fafbe335c3f465660e559738aebfd3da4822678f166469f332f0a031b1a92f7d4765f8d7bb6ded45b60688b22f8b48df4d766a2788d01a5bb191025990b3b961d2a94e5c85c0811024b91dc2bfcb0e1d810e7940fa60bae92548d68ede59afcd89c8417579dbce45f62cdbcde7229dc80c9f8c443cf748ede051b539da218bb9307656af938dfd3aa5521b746a4d1cd991f2be34f3354475e84415fa419d06d5f111a1cac003185cb47f52beb92091c44fa4cf5e4742a193e3f192437a6b2f09731bc9e674c39dae4f5867ddd5874edb02e29c50a9d67b6e538d979f677972b43e9dda0e566baf397cb67641c4eb30f5fb2ed98efdcd949935e5baedf8409f5f236dc0c1b48cdc0171eeaac88f6f1eaf4b782dc53c1b1fc607d99636abf7a21f94ecc82e618d3aac252eeca383205fe29c1e757bc974e99f5c6b330bd424bf56654cab89914c3b76a06e90beea1dc61dfb9d75b30df4a47a858d197d09afc71b834b3a1a9557ccbc65d756455f7c98ea01e615ebcfe2ea90014beb148c906f04ba9ea530bc2977d84043e3a662886cada9d58bd7cbf030645e03cdb2df8fc624bc462a436f24213eac07f1fb5a447a787c410f071ee8621ddc1a2e0c73bcb0cb3808b58a94c5de1d39135373e667744566132f43fc3c12e6bee6f059f0d8473c2755e1b55c370e5e32aefaa11b2fd60686a15174a0083383a5a444def08eb409914f82fcae5073fab622f287e946aed92225cfd3792a39f4eb489c789230df8103f2b50c03f9df6c778c7f6b0eb0a485118f0f6c305ece9aa36eaf394ef6d178619fb565d68b545f9ed39b856e11b81d9e1bcb0b6371f1a1ab44ee7c667f8910f31307c98dc349bc20a3cf710c61b461b37841a1572db589e60691db68c5fc9a740d7272d0a8333efd4416e789da6cefd0fc62fb1c949b7c2089ac35ea90f8420379411e747142c80211cc9cd8579d7022099365fa8e64908d71ec77b3c1caa1515f76a39e09d5810c010337d2226e6b0e34d54e7c9084d661244e90ede78c3a5c3b6da7ddc5fdb5da7d55a0ffc61743546307177cfffcda2cd6250349e0a03a081ddc2771e2ebceea6dbc9c235a1cbd1b6d8c7ced286834edce5a63aa6fff3f15f7c8c602a8cc1e75b89dcaccde01c3bf820e49684e3fd22879a739c41b10db7b59e436923881eb452bddb4171fa2656d4dcbe22da122cea12a8e8bb8cb942291bc16fed7a47b141779abf9bf78beb247ebf774d3dfeb9d36f2037cb9f3b9910e137bccac88cbf12c9a04c89e76b07d14c9cbbbe6c7ffbdbc6f829d86d65d97839210bc657f43498883b5109b92c30743b49e0c7862c464cf49c1f7539b0aeba0b590c23f16cf2cec17e2c817db78c7fe43a69b73ff32d3f56f63b1fdca0e102da0cd76269b3135dbcbcbd9453b4e6df204e28bbcf423956ac1d26e1b13d3eeaa393914b69b2309a4af0eec37d686517691492889edbd8a6d6978000c1f8e7a1cf2d7b64ba1bf5965efe618ff881fd6a8cfed248726d424666521a66471ee4b542f98899c2f09fb40a3fa919690c8c7f0656b6fcdd2768c596a8f5ce2e7795d581cd8e3684568ed81387b931d7a03c4496dbd63bb9fc6b889e6cfa7c11e3ef7f2b2bd9144d257dd3609ba5ea80af4db48907752933f60bba599cf0b3fd50fcdb6a939c8de0f095934895add9dcf62fee4f23172b2bf623b407daafaee9a83d697b90f9cd5391ea6eb33b6d7e5bdde49edd16c8c51f637d49898d40ebea35213526b866fc8ee9491edb1e9d31ac507b230f965327ae44788753fe2a987aeeba1b598c5ffba05bf2cb569841a659a32f24b3758860e78ee773e37e36e1b8e9989b95eb412b5092ed997a1ccc004f119d9ad5397db812611690edd1c3924f2730359bcb46fc2d1d82fbde483e1f8e09936300e1f62ff398f3389b3100c4e6374b95f5bc69c46e2a48c4d893806976431a612b74386b57d84038763b1655c8b3d6a0fe91bc0d0e19936ada3364b7bb4d6ae641db55bda90b5b6f7476d577ded6a7d6a873cd47d7df6b47fc14820eb71ccd336c5e3f11eeda39cc069cd33709b3a9c2a9e81c3ed929fe5ba3029f6ecceccc1220e010630c0eb4c930b25615f8b09207fba98cba51c1f00d5df4f9b93443af8a4e6ec3dd6310930681fa6567a699b244e0eb2383f8c1cb8034c0fd5ef8e703df3c3884ad7aa1191fde5e79e22bc4680a21d79c336c086388c36bd036ba5072c55a14f0c3b5c53a564676cb1fe68c0276ac7b094c19cd006e3b751820f75995a7302c1601c29024d488bd64e73b41d1ecf60bc53d2fdc6dd22fd1bf28ce9ab560bd7f9d594e871f21a8f13d66719644b9226e81816ee8fc5faeb553bb51705d994cab84e7deddd147625a10b319c3a9040f6a374c8df83320ed2fdcceb29e7b03b694ae2e7bbd6e43653f7178dd1cefa90a4631d6f68ea6b398ec6cbb1355cb41dcc7771e6b12ed8c98e94b0961d00910b861dce0383f95e3b78bb511340c9e91f348a27b4a4e5abcdb939426b4742e3716909eda7724567f245ae1406460b718ef4d76694d67d95afac05e91953c8eba6b0db05d9540518e84bcfcac655f8045a73de52995511b7aaf90a1b763fce6d7da1dc93d69ac0d4bae14173c66fbf60ac7d7d304fa4558cdbccc69a5c95a90d6b0d17f1bf3f6f56fc2b1870e692c173359b3f57f96b0dc59fd6113e60fa81228ceb3a62f31b74c4d158e75cd697dfaa33e6a289ecc9319ec3bde379f59fd3212d5c97daade990c3efd021c7b2f57be8fcc7e5f9f03be439d517273af237e98db36dff01fd3cfb1dfa79210b8054997ef25b69cc1771c83f26c793eeef90e33f625f9ce8ffff186d2fdac593df6117aff0f90c525dfc56da4e64e4eb0bc49f93dbdf49db3f23bf198dff0172fc3b6c377e02550176542ab67faf0eaeb5fb1f5be3946c2dadaf71d2ef58e396b240fa33870ee4de1f91e78bedff01bbb8f93bec623cd6ce6fa5f11f9663ed77c8311ee39fb189f1a5e87f5c1f4f7f8bcd96fad27f4086b35809dec3fd63f6c56fa7f19fd1c9155aff03e4fab7d8745c200993ed6fd61bd536ff805eb67f8f5ec61f2eff11393edbf62fb32bf047c48fed87b0ddab34cfdee38b57ec91905d2ee74ce0d4e28a5804bbf965bc49548a3455ab4595b186db71ba7f933e976367ff1e7d723d65fd329d201472f38be94342802f24a003451c1b2b877781103f244b455ceca7c77ad487dd52e009cda1f72a15fb5a7221eeb5ecfdcab91a56cfde8d88a3fe84254d2a73f67cfbf7ac3997cef919b9bd78bf8f50f2e467fd01f588d6f451dfcad81f776e9f221e2f7ee57a749f0c9c89f59eefc74fc87eba2fd233b2b8fdfdf1df923f3fab0bafcadfd17ecd919ddb8b7fe5fec55559b8b84777be0ff7d808c73c6e67e3fbc7e89d3f4cefa37dd85f2ae7e999817f0c9df11efb9fd2edb5f313bf4aaff7d2f9c2f6523eb285eff48fa1fbd17effd958c56fe4c3cd3de95fc6977f2c3fce8efd4fe99dffe43a9bceb9766923ff43d6d9cbe78c7e23fdf119b2d69938c72f5b67f37db17f0cdd97026f2b221ffe29dd73d2fe2f95f515c587caa28de3c1ff1cbbfec23ed6eff4a9105d6af1d35f26e3ff2c7a1f8df3b7fb4ea7fb2dbf4cb6d3b8fb3f4f8f5f8e55ffce75f452bcfa97ebf17f5edce0ea9984dfc983f3fdf8b5f11ba44bed7fec5c28f5ecd9b3a6bf530f5ddf5bffe57e17d6b9ff183e64fecd1f5d73cff4e13f123ffba7ce85eaf8ff21feeeb9befce2353a36252af8c7f020ebcf9fb38598fe46f98fe89d74fff41f1857b8b2e7f95bed214c9f87647de117dfa54d379f47df274f296ea7a7f7cfe0ef41abf73de803d252a979ebe2bd279444c91bd3919aa437764fbeab3f70b5efeac7eef1fd04e3e5389637e3e6ffe37738ec1ffb6ef7ff695a14f7f3fcc45d48d99d09bdf49bfa653bfb96fae87b7beada77cc6346de8c05f6ec1d7017be633eb9132ebb7fa57e67e42d1fa3dce7ffbfee7b7cb6a667112fe56eb80122774074d098ec0c42c1dfd707bfdd27dc2b77161dc69bf37716b12e7f9017ed031870bed44436ea47a45926315cc4bb9133f310fdf09d72cdfcbe3bb0040c9dc80b361856934d74e07b9138a13f81eb85ed8f189c7401cd9b50125ae6aa39df69ceca1a75cc4a5f0c5f6f16491d26b248f8c5fd6b497acfdb24b1030ddfa5f4e98f189b569356341cb0fe88e9d16a6234271d3b50f1bd44863f62d2fb97c6891dc85dc243e5d3851da889110f1776a061b81e355cc4ce97f011a996b91f2e03f3f84e36f82ef3211cb96da4cfe9719fa0d9f4b7356278555eb44c99994f556a0ebf9613f0b5e08a67d68aa140ad22a487d4a60c970e6dcb4b8210978475f46ec106b80d67b2539d16949a29be762048042b5174a43afc06f4b27b34b37a65061e4ecbbe9632ea83ad88938d4ab522599810cbf4becfbcbf138d0213c48339d33f280cb79344ce9e09735b73f8837620e2291aa34d1e64823455a7df9390bc39b4a939f3b6cce004b207d6253cad197f0c07635a6f623ea1f60ea0d3f6bec4909e52d5241e1abedb6e28869e40f100c9a1caf004cb10ef155a1b6061c2a118fab26558aacb8792c327d57bfc5866e5970939f0bd8e043b98d1e36e8a73eeee3f84a3089237e912f49750261ae52cc99397241cb91cd41864fbadbc5162aaa23501c3058de68f3d5ecc901de28fba36fd8560f3c40a1d487c896d5373277021b48821b38ab4268fdb1f767bfe08c9d43284ea00d967d0197635f3145f19703b90a4c907e72297a84dd6e388ec1e059c4c2ebd0f956560c43226d43b852d68000a120a4e02c26fe434f1a4c15a636b64b5fb23478bd8ce783f666467dcfd8cd81ed8814a721e2e09e17019ded1fffdc774b04f264b9e2e13e5cc69898a4dad39364033e3f78023253497f1dc9d7b8a886cb0575a75f8269afba013130ab2b31c9a045d128f7745f1c45a24f1bc06782ecf908e69657310cd47eb4ba8df39361a8c7dbd89935244a3014ba3750c0824c4b66641dbd8ff12d98ff181463e03a9327bc4bbc357734c17c9511c00418f6eaab08dec00a8b9f3d69ce10f5293f3b5011a8b89ef619cbae3779c5ccec993a454ef6b436b908cef11e12cc9aac8b1f5b524095d6c4395928c95c33bf86e0b9c9c6cb2d39c3e212fa0ffc5735076e23cf9d2466d72266056f91d908196d8efb210237d5c49a4dba3e54591e0371c2f43f36b43eca7542f1c2d6c4fdd9050a0fa20bdcbd2a687034c8768c8d8fed465ff37fe8d757dec0f977ef6dbf6d703f41c164964b4cdeb81b3649fb3e4ab09a2304f18a4db213dead9f4e95d96c55cce93ba56e765bf18bfc3595c650d384fe3914342c0f4d3e4d762b1469c2fc7f202697caf8f3b21d8de2bcd6edaafac15b6861d1bf93007b563c4d3ee6780ec9f716715b0ddd59e5bd8d670d1225402cd37c39f529300f9376c8f47364a84e607102604e2c7500c53b9c63901263b890a21e815fa1bca5dc21c2f32d9afdc6fbc447389a2138594a1e64e10ad68d66203c098be96b4488de29355763f8d2ccca7b2386faa4d6ecb3b7ca25170a76e088bb5ca7a2591db28ddeabbbcded6e14b684190b4ed9133ceeb4fef673ea4f350eeb4acd1209db3f8fec615d6f7a94dea8ed339cccc2229afbb5c9f4eea2ffa1f619b86e1cee31774803bd5eea3bf94bcacd0c9314dd59907325f8c61290b717e0f372d2f89ff9deb18806c69789daef27df4c7ba19ad07d918362ac39b9a8dd7d36afbdef04e7e56da25d4e667158f90448e18766c7f7d3ae615beaf5b9045ee80745e2e03e8f797b0a2bfdcf067c6f2983c39934016fa09b617f80aaf2c7cbf63cee343461328f75a100cc04e73c2a2df5fc22a877335a7bf5718b8d112c9196672a6a1b5a263f8a3f2d9d4dc99375c9ca349451e1d18c904b27b5b2e5ab7bf962dac9b917d86fe666d62db32b5cfb17dda46bc034e69374c33f9c17747afd2f516d90c33446b518695fe931a333701c3635bacac53f3862259aeed9d7ed6e7d3be66f2bd80b95e7dbfd1c7526e9cb9af517d4b3ddf369dd30edbe264c6a78217013decd8485e90eedd7f2d093a6b97ca798413ff8b3e2cf5286b4da918824e1b7eadf2245272a2528457c7b5df2b3658a45174023a46aaef97c4ff069dec9e6386efaa148993470d99953f5cc45038b441c16397dfcb4c9f9057789e95743b10deb032cf2ff189b324f3441e91bec869e9706e8a2f373953634c5f6a8e1dce3233fae23627153e1c468ebcd36cde9428c34bd70f4cc3401667867a20333c904862db5384c921b521703dfc626112c365b843f34e45fa03c7634838148952ce1d9c983c914516fd4e647cd739eb0d17b0e027b6e7052eb845933f38a6e9c363a27822eb0fa33974b844fccce66fc57e875f1b22c67aab4b4e2471ee8d9c782727261c2eec148ef9a0c74b633fb48c7824ce764ba14f2858d6346f2cace2c9c2f6a785efc8eef50ebbd517863f1c84ded4f908b483178f98fddb68c3d3d535bed43917e66fba3eb9c3c1389284b99dfa6b31ea7f6ed746b3e23dee6f2027e601f915aa4053292f57015abb3279dda9f0a8cc93b17fac7978ed39f6d98ef1ec13ff30a9b48775c669f9713fe767fcc56c6ee2f12dc5898bf9b39a9b1a655a2ad54fe45edf96071cd49a477d39c8e2fcb20f89fb056985e9473213c3fa7a92fb79e665bbe058af57d71c4433ec8f55ec404aa5a0cde67a918a915d8469505d47871d3bd7c1c88785a0df4e6451f6d5267fc8e7ccb0d3db8f3abdfd50248ff5145f5d77335e8b64be4688b2c02d556ab295c57937e7a12cccf0fa94b5d994714e821a0c2d97f52cd1fa8be66b05ef90bd43b63fa139301c7620ad513c718557187f2920fd7c138e467a338f592079286cacdc4670c7389125f213d5bacde1af07fb33eb44cb941934fe5654b3392c3b60919dbf2c687c90456e79cdaee02cf96e7b69787d7dc4b6c66820ef1461668cbb04f2374a1b38d35997c65af623cbd3e1221fd78423a7dee71153d8df7eb6be128fb4356dce0aba2bc2ccff4afd991d4e7acfd0eeb093ca38dbe10f2cd30f348737e5816d28546b07a8d788b5623872a03d5c7a1ee814fcf0e58e1d607f86a203e44f221dca627b776570e2d89070fe9259c03205cdde701b597da30bfd2dd685ebf6661a87a9e357d6b2744d2a693d4f2411e4f28969311acca234d6ff7a187724a798d7780de2a066b55c599c8f2511ee8088eccbd64111485265fac87f8bb4661bdb13cb2c1e34cceb5bd8fe5024cfe8e84c1f39b42f773eab765596f306b57751de4bfbf357c84172aa37cffb2169cce9dc5c2af46a6aa397f4cb9e111dc91d70f84b34a7c787cfc2c6aada01681c4ba6df529b3cf273107c0884d8040c9d8cdcc93e5d5bf3588d498c5cbc9785d62062e4ccd17808a45bb1dc2ef6299d3ba9bd5ae9774e731be98c346e725ecf9cf14b515f03594cc7754d8e8bb5924975e0bd7855bd791387a9cde945467b3b4bf28e631a781fd26a17632ce7639dbff7faa997e5e317ebdaab632cf4cec3fa66b8f4710c52a5101cb2170d6b46f523ae393372ba9fd4bf039db6af5aed50123f4bfd88e6fb39db4a0c53bba2fb59ae55b9de47b6f205bd8fe36f795ca5bab60ec2ba8c6efc0b6b07b4a70ef6af48cdc17b28416907f6edcc0ef274aa8e8bf0ced02b5084d91bb221249143ba912e6cebc1ec115d96c644c55227e57d1c96beae91eac9768d3f4b011e703e8aa49d25ed5d1969ee90cf4a32e09467aad0df8f2c16ad5139ac3fcd7c6e249b884723776e6a9817a58e65b3b5bdbec691bed69ce0783960fa09d25515f9306497dba98b36a601cb90a6d679b590ece5b0c365787e7dfab7e7595adfc8417c8d7dd509bcca98839267b3b3764b4d4fdd65bf1cc7f2eeb5632eeac62b6de271a1baddc90e88dc465e8455be05e7d6d4237d7d9f3d86cf904a0e9da4fec925f98d8bd8e77079ea0b1fd571730e54fbad96f085ac0ec5b4fe7cdf031c4202ef8394b658c957e603dbead5f9341accfcb5c0071a9a2367eabf54179e235539113e0a1a16b2bc80c5dcc771da81f60e3a2d5fb58afaca762a7dcbf12ff4ad1c8f03a33adfedf7fa9cacc4cc3bed3c0721fa177e59e8efde28f87ef0d03cc573b2a051b54f97fc13e1b2ef8b6378836a5cc528ed9a9fb3637dfdc4c6cbeacd6c23182949952671752ee4baf50e5d86f504d65ba3e52bfeab8863432df56ba64b53dd82d7ba0b6d5eb0fdc68ad0da0e119fc57f4fe79cf15bba92f0ea824edb518496cd32c7ba881d205d84f7bd0a7e9fb58bdd9fd145151bf33fa08f6e8fb5aa63b01d82cfb95db5e790fff6603f0afba49c7b11b2c98fc75f19f34fd75fd41129c2eb91bd5bda05e7fccda378d57f6eee8bd7e237e7625059395ab38bd8fe91cd77cf9aef67f6c9f9ba1777d82a95bdadc21e726802f90100e79134a096d8d6399f1bdb9ae5798c8aaf59e6ed7d6c2c9760f158decfc7e8784eb52bb27e20892fe4c70aaf6fb5b301a775ae6812f910a7b8487ea70eb64596b2383bdd8faac6ff6976f959942b0cdd5c3048aed36f48871d485f8c113218d7d7a955d5bf3dc8e27c96e6b0a3492d3ba7a125c6d998073e0b94ebcc8b6384d1b2c28fdbf0359ae4bec90d3af469cde18bb8f2b053c4156fc62ed965cf1f215ddc9ffbaac0a77194740fe1c4869c7943910826c2ea3014c9a3b6d873e73898d774dd65884a5c24dbab1fb065be7d27de49543fcdad91aea9fed7826b6a07cf9a26c5d96f0be9690de718a40915d5d349cf3fb02e38a0f2e122f68707c21a251fd6b0c9460a431f4027842386c8cea90028c16c0fbf63fac3451c8e1c3a529b6da86e4862c410c88fdba80c7d9097e42e7b869acbedb40d1965cfa12c4e0e920060b65f5bcebf95bf5c12af91c6f4138dc2b18af49cc232d53f2377ded2d298f6213b6756a70bf3412bfd3083e5c194fa7038e7c3039dac2e91a4871d76079a636bd431fc22ee5fc4af2b63ac9e53e818e6b86307295f0b79aff0f0b80c88381e01798ab75614bd51d2fd9d6cfde5ed345f29a48b7d5df1d867fa12a4485ab40699ad91d91cf8ac4536ce152d5b2d7364673e11c4b91e2340f1964cc583724f19cdbdd931ac1d9bba806d62476d721b7995e715e4ed131b2fd09b27b1a8ae771877e28336c07bb25d95e21d79e3c5f2822046cc3c9184e25d34eeb2011a9fe4c49067cc4416279e4ac5f6d47a8d278b188d8952c4796b6a11c96880e7ce12303cce878bf4852ccecda9f5faba5ee0fc8bf8acea30e59933727ad13cb317799cbb12ef1bb82af60b571e6b4d1c7903ec8933c167d171ee5ce4bba53a77a639346a3f3c3d8f999e5f9919f2925459b79dc8c2c44f7d9934773a10c83dcb64f97c1336605dd9d45c98faca0ebf99605f3ede699bc01a75b854f730e4ffcfde9b35378a6cfba3dfa55e4ffd7703b25ca6df2c0910089099216fdcd8c1200b4422d18506e01ffbbbdfc8018464c9765557ef73fadcfd5051960439ae5c53fed65a69e83d503b285fafd07bd9f35a9660214fd73bc0d5af0ec1b2ce228e6fc074fc204f99b5367d6017d6f31ff234dd46226f441c3c609a1c29b9ba5daf55ebf9a46e9c529e56eb8594543e3bc1f9410d8e3fc685715859cf7b79f67cd0ad7cbdc89e6ff5331ef4f3849ed5507b733476792d4fd11893ca6700ddd7fa1867cf3cd64325be5976f398336b8ac1fa2667a70cbf379da0314b71216e3b1cf08b35e180a7318bd973397817ad132f43e610167c1965ebcc971e102f625edc2a0b7c93890b9825be09e53980412baf0317d7e265809f1ad148c37dde796e93f83a1371ec24999b4de8296c22b92dd937f7107ab85e1fde372d9bb0fe48dfc4850b23887dadb8ddc41b9738bec2423aa8c1c873f735992b69b4d531cef0cfd300d9b7988304033a63d689cb0feb09ae17195d37497c4d0ab74924f7c191f8561db9af31a737c0730f0ef6c99fd6daf4b4d6acbcdf87c19edba15f42d4febd75f15a3191a7bbabfed94813d13fe6dc269237beb10e1a440be26b3072db44e2f7c6600f62b63af9764747743db27186fa8f3c3e5f485a25cf6456cf1e4e0bbba26da173c5370b493b6a1b875337033aa134a71631a2a37dc419bba039adcfcf4d36a86d34b66824ef82e6a9d1ede080ebc8d27153fcfc81d0307b04d374a34e9fcfcf491a6abb8824fe1867e9466d07e3a334acb60cea935537cf6fda0dac675e9e09076d56dda6e9ce8fd2d4ad8aebcad6a52a095534ad37aa645431f57f98647d5b2d271893c52c601656bd7bb19f7b4cc98aab8f81673c0618efa0f1815597573283f0c3699a2eacfaf8e2e58760a44024939cb97244fc3db252640f94ea9ce0c406df1f1756dda077882dce6f029fd89c0be9a9f21a25f54748ef35e14a9c1c63b447c51d3a2067ed8a4ec977c3732443068f037863222f289d776d19bed2047ebe8bb3f1f0ec7ff69d9bf48e6ba223bb98ae8bb1750b50b80dd27bd5f9f94c2e09f61fc99d5e3e442d8b7de2cbd124d2a7e5d1b75946ddaeab58ac9845f1f45d73195ef5110fae4f5e6bfc113555e363ff26a5e339796fd1eac90bbe7f868fc067aaee8e68996139f78d62d306f2ea09cf3940325950585000186769abe6a2e5e422f019c53573203a597d585875ab16f4991ce9b0c22e6ec613072a13cfe5a7ae0324d395ab785ab76a6e023b1775cbd15f4d5199b84d5e01ac1f1abc6c0b151a475440bc57b627a2f57dd025c02de6f261b88fea54a85589ec4bcf3b6da540cf5dd2409daad2a9c463dc525a124406c754c04997e7fa7abf2b2d4363059acd880eee6b66fc717d5ed45c01aee0da3e3b111dc88bb6e0eaa63376d4d93319d7159d385d1c4996366aa1b3f1c83c460e1dcbd66580ff67fb5d133a9d2b69c29067e3266d553879b19cb1e334a7932a618c4d676b38c37ab218cfc9693cb0eafcc5124e83e76c12b334a04f4463d2894fa6fdb348a6f5f8bc9eae666ca916ee4322b90720503e337faec2e909f39a45cbd4af567d71bfb92cb0bebe7bd93c174a96ee549ba9b15e55c0fc455a174ab1fe2f6d1a14a135de44a3c9989c3f68602ce7fcb9d2a725b9a79a197fe07e08bd9f2249dc00b7c79897c0d72eeafd2ffc3dffea33bb0589d3c1fe0fa2073eec56a3ae9eae5175f151f69621fa5e41ee08b05e5e5cf0460fd758df26302892ca96e00158eb4ce640a1730617e07c0e7939b42980c46f0886dec03cd1f46a1879ee211194b1856cc02d28e3919b46123ac772d6df816c151815268c0bb7b9e2cf740ce7dfdfe8deb87f330dbd318c37e55195ce18b465e15411bd3f5e6e8d9e6f60bfe9487b94ed093ff06db4376583406a8b9a3ec0b101d8eebcf071e6df08ce176ec226c55834fafb2ef0c67987bbbcf20be03bf0572b473c631f8ddc1638a456f1421ae27309a60850bc02e281a167f28467b147248f6cc94d93c2b9b4a5afdfebfc01f333de6e80fb1b608ccfebac6e1536cace3e89d01b978904d348c0f809ba469ff4f9cc2fed3de28338e33017679f21d18172a589b83d8c7328bcf8c81e21f9619342aca86d73ed77b8816ded7d0848de9e88dd82fd342417ef16a451377e2a6f8cad720c39b7b11ce3262e91e4c2e65b60adafd671cd777ede572f8109f53fda126c1311db9cbbeefe06adf54dbcc667f02e37ee8a9269774f3a8e7cbb1afa993bac17923d6584c6dcc5b5cc78f8e21b8f88d686feb321c63399219dc9382412af45a304c6b99ec69cb35b58e3322af42af1f0bdf665ecc074cc444c7d4c38b7313811afd3c20a0a12d766ec9229c4f7c403fd20f207b122c0c2b6b61878fa8e9e83a3ba9db031c1b021ba3fd2f52d87fe40bcced38b78bfcff9c9989bf8e4f77d8f4dfee8b12c4fee7b2ffd689f1fc7b5ff8d9fc45b255d59637ccf728b16303d8d5c6638fe855d46becf6eb1befce6dc8db5d0277eb3de3f2c7c88c77e83c1263ee42b0cf6dc2817b45fc3075b7bebee2fc635a5f7819273130bf019ecff62704e6edec97cf2bc5cfbc6c91da6fbf47a71f76dfc266f9eb365e1144ae174b8a4d34bb36e16db0ecbc5c30e5fa46ecda3335760c04132d6994cbea331838b69fe88daa3b44a30200c7f88880cedeef4e09fe103b7e7e574f3a0631e3311ab33d837d5accb570f1e42df2c03af16e2421c51dfd0101fda63b8fa3bdfa9700fd3f816bf48ef7116c3733ced628287bede0b0c1e96831d4f93dfbf27bb77474fef8cf303d2a54d4fdc84948655e909cb0b608d8f896f0c7ebf90d5dd7d650a24b3bbabac30cff11944eb395aaf9b773dd41779ed9b3ce3df31deefe9f5525e0cf0df18fbcb5fc846d72da93fa89fc3aaf7696bfcdb98188c4fc4ebe93af90edfa30cd693c4cce07384da447a6f4b69998f9a5ef60ef18e0dfa1feb02d9fa7cef4565b651882df0cc972867d3a810baf8bceb5800e21b96f8c6dc2ac7c821cf0eee88898c1cc4649cb116f5718087c6fbe17a90fad6ce31e6034c37ddbfb36f32be8a4920e3e9f03088b7e13d6c177eafffc1cb3b76ac1b9defd9595759e09c2046b91c0dce86e7203dbfb7595f7c6787e3207d968fb9f4983029e28b15c9b3bcbec008c4039df01c8b02aee9ea0dada9850201070f2ea59981fed4d1717ffe3a8cc0d02e4f66f7e235707e0ad7ea3093f69ec138c9691fb3c12ea6f20614c108ccc0469f3d670b2297efdce75decd185ae36d8cf3bef9e326d9e6e828d99697690a93399b9dbcf955c5f7800fba6ba7d9525be90efc854cb1b2f077ca6fc60ac509dcaa7d54cdc2c25630432b9d2ecf55bfd96d0cbc519be3747b9a56d15d89e7a274ec17d497cf362ac88972da4feae631d71c1fab3ef7e6e9e5aab1766a65b9f9be79df88a8acc93b6e5913c8057f48a788d4bc6e20c621c2fec11d8e9e28b29e45f119fe25c06c9e1a480c816ea624d775d1ce88b25d4346ef89df82ef7e9b5bf9befce1cd5df36d73cfdcdb9ebe389aeee52c83e62dfd0f0378dd1a6f2dd7bdede46b8c4875ec561bd7f7f4ee2187b0cf69df84034e714be38776c33f7537b5aebd39b719c37746688e3cefb7b236b72049fd4d107b8b78fd604127e05de8fc1f2eba7c5dce0ed339efbfe19981b95661b7fe27c6339761f17726d07fcd03abd79f726fef64abe767ad2b764fa291a613e43235847990903fedce90b449e84b4ff7b768d2a39489ef3af582fbfc2b975fa5a27bbb19fafd3858c7bba10d119b02e846354f07c1773e3ac03ddf0650d70d13fc9976ed3d475cc6d90a511988e4faa90ef64d40e07b7d1a6c4791ee4ac9e461c5f014f3c2c5ca6322d8a4518e17bfd4abe9723602af73af4c2aab385b8cfd5ed736559eb0ce9e6a1971c96041b90a9626713c044159c433c578e89c4e3fed5a9f2ae5d2667758715295549de799c7188a7b5b2982a39f0f512700f8f382f832557bd3d74731e1fc769fdbabe3affc42f5ba313c1efb8a32ee7ce5fb0f688cf663d467b9a571fd08d0d7ca3f4ad5a54b793261a9947b236a7ec039de72fe9e3da57f1237b6914fc3192dc34ca6eaed1bd98f71f9907c69fdf9ac720dee607db936fb61775f9927e555b9779357e49bb57fe955f34d6bf64ef6fe1d26e8d777767bcd239374c7e753e27695c887b3c0eb45fe2de4e087e2759589763ed7c2fdd98fbb37f8bf7f4714f6f728064aa84730af56b12de5913f37ccf535ecdeb14f84a1a911c37689da37efd2073fd6ce727eed6a2df939be7e0036c969cd587c4abab9edf15ebdbfc4e186087aed751129bc023f98de246aebcce57c5fe9ab13b9c9bc685befbfc58bbdc4c3769afbbcfb919bb768bc6efed67973bea7d7ab91f27f7ebfbba931be5965cfbb9b54b13df3c7673e8ef889a1f69ffdf4f471fc4bbff25e7b7db2fdfbae64fd426edd6a3e77937d77b18d7f73f7b9c97b1d1ffb3c7fa26ae53aea2ad5b45bf56eed03c69e69f943bb7e394fe267cfb4297fc4bc6cc28c788ab61e08dffe43adfcb73f58636aed7a65b137af7f7215d24b7fbc7fb8aeffa08c6f7dfd5ef859f06f7ff769faedbeef68962693ea42be6b66e79695bfc7bfbbe73cffae9fe7bfbef27d73d1739c08cd9c819fa7e3ebde75d0ec60f79a66fdde4815777999fe67f7dbfef9dfb6b5cc8afd373eee640fb8b6d87b8b269eed93f297b3a7fd28ce263d29873739b1b633f684f7b34bff10ae722d64a55aa684ee375a98a1abf909e769a2d3c2cacfab898090d9af3759e4d922f147e2339421faa78c3a67191b018c735d7fa9cb7aa94f3f1e6d4be8c8c474c03f81e5dfb2d6ed9739e4fa43f8d92c339cf271480af6fe2029e12ec0fc4f7c28f71fb2b737b9a30e0f806fbe7bd9cbf9d33b5bb43acdb2eb72ec98991e2f50b2ef2eb32f59213feebc57efe1658cc7e61a58717cf8d029729952cd88536b3c3ebc03dec422b7f8c370ff8ef2e9fe9b2207f2f2cf8f42a0df38a4d9a978d5628455e2879a73ba33182322a3096f5047c855961fcf153155a7915fa4c97fb477ff1683e5189e213e7da3ab4c6a98a74147f728c0ab45ffb731e35ff8cb3a13e4a74464e7133c6ba792cb990c8709d89460a7c1bc3c8976a21f438e01edb3745340d3939abbf917cbefa32f058b8cc944de02b5dbce13ec1b249e155293f04d6b8c35b8a91e4ee813766d0990efd2053e7fb4d24896dcc8cd3c8731ee5424fe3c2d8ab5e0a03cf8471f66e1b3bade785a78cf8e69ecf718d880ee734bfc89bbce36fee38ca4fbe77cf1f85f6f653e3ecee7e6541c7f81659c077e58ff2b4cf85daedd530df39c98747df35187abffe337b6be5e5c2aa7f747f9b6814afbbda15aa6fece39fdbdf63347df7bd2af014184de56a4573e8da85b807f62eebfbf6e47d82da982a4a84daf3907c952b7c1e0abd019ec80007e994189bba93b7fa29f01e6e8c454981944079cb5caffbe7d6f11a5f36fa19babbbe3b23f98aaef145da342f7f7cad876791d94718afa6f09fa4f31b98bbf13ef09ff19dccddb52e1436999b581f5e717bb8b24ba84afcc1e0ea32e0aac78b58c1f7fb7f0f4f5baad29036caef8b69be5b35673fbdeac143c0f17b92d3bd84039ce4077b7c89a57db520af5ee4387fae9653747e7e663f7e29edbf24beb98db8ff2eda7f8369ecb1c8d168d2aa05f6679d80e7621aee78d847f70614a7744824bed3a9760b7b775a20797897e6cc32c96eac19e6752ca1078badb0defed9f916b7b09e7f27fae7d9444a8e7f25fd2fac9ce88273965f320cef3469ef7b59480f8720437af54d3ac816566f23eca26c9c2dac7586f3f5ba641c7296575136def856ad777aae61233d3740faac45f3fd4f16563d7bf1909e9b97aa60f051b3aeb5362e55e1f426a7fc7f74ddffd1ba2ec5d6ecfa3a11c04f19a4cfc6cda4f98c9e1b673fc28bb1feb48f24778bda427ce1e6fb8276082c626fa973f986be940a6a2150ddae6e7e843f05880e715c4efea7fa5e8d686dd4ed9e416b667835b695e5a286606b64affe9db94d9536f2c40ac91b3afe2b1ece965196973fd7b70e49fc98c2bf5a77d665abef03afae3a7bf65a2f893c98df5f1b03adcdb7aef6df6a64c2d5dc9c4412b2e177595ce0fa487f66eee90af339c8bfdafb3f5e9cd3cee31e0e01cb546196131e22067c98d52fffa937f2f7aa37426deac74fdad49b88634f1137467b27849ea947236c27f5b98e3fd2f713496cd0f3afdea05d312923a976a3823d26981e7b4cfe477a18a90be1b3431e48ebe9ecafe3901e81557771418fc9fc733ac0808fffa88d88db53fd6e0de2ecf5c7edcc1df04434aff550e78dac0ffc00d9c0bebed88778ed16b04d3cb14276559cc93faeb76f95e307be0c6ad319e8dd639477b526ca730ef50ff4e22edf791ff3012f739e9f73658d493d261c43215689e73cfeb8fefec6a7cdabc33ca51f8c7598a396c49de0f8d63bfa307fbabc1f396576f1b40692c804845fac036f3c1ee46fcdceb8bbf7c771cf378f78774ce23deed25e349a7477ebdfba750456fd1df8398e3997f37e3c6b39abe1cfd97bd4c6bac8db866db7095ac3c0c3bfb191a7c038c3d8cf610ccc2d7fd0edbdbd7947f0e3f652508839e09c75c4e1bc32d83624b9bddd5696e81d80bd5b9feb05bdbf3fa40e81fe12e19863a7fc691bced7f601c71f124944fa6383f3ab164919656ca6fadacff09881afd26dd13c7f745c71c18f64892d81645600e741c17531f741c67ed05e9d06857bd67970fd47cc9fd7145bf81e9d95d176c22653b95a8d2655e0e93094f88ae4465044a26f4dd22ee75be8217e84ef1b1ee52dd28fd067904673172eb7461571e319e63b9cf338a8cff0011f39e7c42318cb5bbc09c77dfeacbddedbe9da9bba7b8039c7b43e9c90dcbfb7eff1f4cc6f5c298571e1ac035fc1399dfb7d9f9b47798ee56457178f0925671d8cdc2646327a3ae964e79ade17c244729bb8c1b978e067f84cb0759944227c26e4dc318e51e7c6331c3fdeee706d96cff923eee2ca7600e7481cd037ce9d9d7e3bfb5a8c9f9011b8de24ffe2b9fcc267701ee5c453da642eefb4e9e981daff7fce27e30d62f933c417c59ff221bd4707ef9efff7cee9f6f9a6cd48f90ea3fa46f66ae19ab0782cb224d05cd413266a2665b4d54fe47bc8c4cd24073e9a67ddaa24efd62f9e67aa9ff15863344f6483ed56a36b5fd7cfed5972a93fe15ce0d7b91d7e8607e3daea055f753291dea3ac0d9ccfd23dc423b7a5772348e6dc9bbb45ed509cf342dea6ad9cd5385e00dba5999207bef25dceea4d28b99b9073f3e5e7fc6ff7ee79d0f9257edad92eb331ae932f00e5ebcb4c79014590119f1f3ab3499723e487f440fbba76156d0bc7cffacc67ee6f6edad4bfec4e4b0caa15c796c8d6d6a693bd9cd57b4c171b112ed1e7e9bad666133db2f24c95d87435db65a4d6d2f34e7327fb85a5f00b522f835f8e76bcfd63bec3835ae8893adf954b62634f5ffc5de5e07bf060bcb06a87f804e552151dea13cccb8bbab2e20ec74177313432d24f5b5a3f6a4b6a4ca3b51ed842cc8bf7f4a4794efbc23d5df8a735fbb95c34f23ab2e4c7a83dd5c00e7e5b484f47f42ca91705ca95e4e68b99869fb338265b16b8adf14b931ed556847a96a336a5d04f2198aedb855565b2c0eee54d797c998950b3e5aecdf1ad36cd739bb56e3feda2e6a906b6d0dc7ad695986c99917e359bc4b79b057c009eb1d39afcbb9c4d8cc892ab644eeaac9a1bf646cde7ba5df8c42f1b6575f3826cb511a18db8e9edfe2ab4d9e665a6fd96cc4a4c8f38df66cbb72f4ecfafb6c0375f126e7cf60b3a268c39bd09fd09ae97897d8c76d992fcfdca91daf9777c17412117837dbeed6f1dfa31cad0666ffb5807be9c2547f295e318cc39a6b974a89ba8b6f02db01f786db64f558b2917d2030fdc7dea5b79a16469f962a5781da22c2d1776d9bc6cf0df9dfff391fe5d2efcfa29b486f1fef27f690db2af82e2ec1332214072fb9c1f68dcfb4aacba7ca539d5ac194be4573381abb909a3c26ce5b97c30387e1f4bfc01edd56a748efb5e0df2685ee90bb406f007be56d1f8c85fe9209e65147cbefac473ae04994872863e46aa678fa7d1c864228e799437930678cc7d3f9ff88cfd84a0a859cc9fece7eaec339ca440c235903f6ee7c7fcc097bc7e6b9689846cc8db7e50733a4e290ef69eaf32ebf939e65bfdfd0b9205dfac192b2dc43de189c2bae389fe8bb3aecc16d72967342baffcf63fe7f86f798e373f788e07f730b7e8cdfd88def0391e4f23ce1c7fe23927f4910d7c5bdf48e81996b3e70eebdde717e99e8939780838e7b73bb45f22ddb13fb31c3876793b97997c5237697f6ee5ad5e46850e65298151e1b6a1af65688f6eebba39d2efdb640e2b6097df40c11f1291ea909be7c372aec0c852f8571c1780c7f7d6ef41fb43f213e783f46a38c06c9477cf7b334e3fee5bae4209df8b33cb4c6eb5d9e4b44236ed08c0b80055344a40e76f95b7ec1b4c07c67a0890011edbf67c62c3be2e7abcf987f7ae8beeded59bb10b55cca91eb52e5551f8cfddeadff16e55a87eedddea8fc9fbc1194eb19f32413641fb7c8ae7eb4c95ee9feb3fc97beedd5fde191bcea35c44123feacf5756efb05f768eec9bfca45872154b620e247800ed2ed3e69307199fcfe7e6fcf7fd7b4fcffa50de33a1e4a6e07c3779e7fed46cce76dead39aeb3445a5ff0b958e2db10e7ad7d7894b748b6eadf5748d797f8d372f35c0585b809b9a48946ee01cc7659c2a565223984bf42258d887ffede787617bc7a34cc17abb4890437e108d79d38c6b3dd49959434e0f6dbb8e0d9a8301ee56db20b7d13627e46b1e79663fcbbfaa3d8ea3bf7cd684fb0dfb5d7454fd1482f314fd9ecb278649601b71f2319118d9e1fb5699d059efe1d8c882db9cc94512841065099a2905c0f93483a65a4a6e8bdfd538e609e77b2f3fa3e80e4efb7fa7b6af5c515fa7b6aaba1f7d45383b79aba4636b1de0aa52ab9f03f77d67fcb3b6b06d87f7b5df01e3fae891f2f29c1dcdc2d33b9d666cff092f71a27cc5fb12f4f6c1291de6de469198f4c9aa75bae22894ff19dc8f6f699baf08f4d152de2c41ce3e4047d17f80a837800be9fb4cbc86bce7c489def31dd2d33e590786c067c3953a5deef57455c5c6bd314f39185a5f0be753aa8d9f5fdaf99269298a812bd17dd6a8fab11b10f9719e541c2e57c42417c08fd8be7aefac2bc84c62862fc3b7ece95dc8744ecf915cde9b5c3b999b406cb27cef0d3326ecb6f746f1ee5fce23e92b689eb5e4e13c4cf7ce347daaf80877471e39a37e31a28f296a1f989957609ab4c6e8d3af0dc74692909929d11c7330ea19dc755a3605ea7fa2644bc164ce547792364c4178a791f3a1b10586944f55786e4c543e79a872fbe09d5b9fe1fbef7f7e47b871fe67b573937cf98b2b3add3e5b25e8de85d268903794ca61d6626755602149605cfbf78ced096bfc5bf8c8f708006b1fbaeef9432d5d6d6916fecd199f9598ca1db9c710cddbd69e0e91be0ebad8bbf77cfb43c7b3a2d8bb7bf7bdc3bef4c99da77ab1a9d2bcce3ed5de64a3c1378a7b541dfe9ee6a2cef617d8ef9c77efef7307cefd90fbe3adf53dfe30ee73a06d618639d80376e135ff7f06ffed9be7c699f1f6f3fa3471fbdabda62e2b562d2f1b765a638d1c84ca3e964767e4f5be3bb196ba244d9a4cfd5fa091ce7f5fdd73ec898f63eeef453b6d5fb3481647b8ef5c78f9f8364ce9d8c977350467313c65bedaefe8de9f93d9de0c3395cdf55dd9ca74bf482491949a74bff2d37d4e7cdd959fe747244eef3df5fe9fa62826d5d34b753264fe53b3a8d4330a612aca2d92ed5a6756f475dd84934efe9329337810d0abd086aa4a374e3b9b0a1f29ac4b515ca31f0953c6ee4bb7ea20fb122f6eebe6d54903cf6d83e423a0ae7e23a53c0971fe59ce49e1fdc592be654aeb0efc4de650992eb387716c5974deb21a68d79b1c7671c488f47c0e3da25d3be8eeb81be5fbedeb56f3e8f9d7e977e2dcc574fa15757cb4c38a9f35e27b9b0c18c8e16328dd13c110636b2abbabdbbb4cfbafcfff25dfcf33a8b243103dea9b7cd64d8616226b45685b8e9ecc33fbb4fb49e484a758135d147ef607b8aa70b6c4f32c379bdfb3a1a2bb1c7ee3077b03bf47ee187e55876cfe7f1e11d87b8ae06faed24e074188fb4f5791f6a8c0bb27c1346be86787c4a9ed1c95916ea321e1915f5d5a2dfabc0d719a770f7d1084020889b8073db987139d49f2bc13d20f7e8bf62bc17f2e19d310fe5cf27c78d7514186d75f6edd8ff9df2669dabf33dd6c12f6bc42b65c0a548279780e7e69d2e3090a1fd5eda928bedb2a0e0d3b830b23fc3179469fd8dda68c3bab756e8e93be0eb8c59b8976bd79cf5964b7cc9253ffef7cbf1cb750d687caf53c04d28b96d2200083cb35bc3ea6ca7d1fca6d6e4dfb0beb42ff76aaf07eb78b1df37713cffddeb9c1e81753927c20f06b6b64378f12dda3525d876b58ff07de4f64ff00e8987177b3e58270bf52391ba5696373e25b8566db7e7437a9e0888b7d09a62d83e7c3dfb0191bdd4225bf82da606e7fea2b81fb95425e22b8c0aa7bb376e80cd1e805597c0fecf7df1dff1be38f09c5bf73c182f76612f73837b1fc12c81f083b12817357cd99bf7463f81ab3e26efc74877f121bdde75af8fa019dfc2e4378137ceb19fbedd65eafb711d65e4c5f8fe242eb44739e3113f82c95c433ae3366ad86e2c877804b67256a7d1dc789473f8e20ac25acb1e4eb260c2241fc3643a99448558ad308612d9c4f7f17be14c38eb941fb625ff4c2e872cf0cc2db070bd6526f0e08160384fe9e770c2f77212bf1707f26ecc01c6d2dab846f9458ee377e71615e2d976bcb787927608b2fa5b223de1fdbb984f178b71f1dd3bf8fbcbb6306692c44860bf47f66e8c88743a80e947633de1f6634964c2d92e53b94bfc23b129bb5834e3d1d832eff677d9161923b677ba333f2b1ba447bedb86757fed16e7fcd91dbd6c42095660aec028c3722805365bde96431f603b251176f8834872aa8073f8731bc22194786661a5672cc374bc5d58690af01e9890e03fb5529d4f208d15cf819557a070685e24794cf222c5238c8996084e549fa1fd4fe8fbc6696157e925d6017e03ee1eaa64cff9a5cbf0ddfeab921b018be468b23df16463ac86584533a6d6c4ee39510ffcc90b89ffc1b1afd0e39c03c1fbb2692c7471364cadb997efd0389a8b7e0cafaea251028138a9003ad3e83dd8bf3789245c9f2b77a41ae258a4617feee01db67fc78824179fc9613f96372e93411ffa793e4a5440e676fb0a4c0afe3b7efe3c170bf8e018de6c7ff03cbc6abf70b988db5fb6efe0fa46023a0f2fb630f26d26bbfe5ede32bb48c2b9ed2b60b3df908e74ae61c8c2177fcf5fe082e72e95fff05be4b91170911e4170b009e7fc07f7f2f7c2bd5449f176cf688d905fb47e2c4c2491d6d1efc77afb774257fc92ca40790e6187b98db7ee06ef31d53dcff5a5488e2073c6c2be2e03b2ff6d96e93fcf53f4fbf1d5efef4832600def49eef743eebe743626b52849df5d7c4a21ee71acf38c6d076d2b7f49dba476cf12d8ec9fc0ba1844dfe36a3b96c4c3726322f9ee8492db006b92c685b38e8aa7358d295c27d2d39ae4469a8c42dfdcc9737307acc926f115a4cb32f2bcf7e7917c899ecb005fe96278c47b63058573b6456ff40f3affd09f893fb3f7dd7e3c803efe5b61032447b3736cfaf57dce8bbb4f3aba19da9d377fa7efda6f7c3d06efb17d6c1183ef487aff5a1f37cb6bd37eafe96fd77e84f7daa1cfdacce9d6783f37a6a1efecd6b886bf7f666c379e1f8c2fa6f9c769ec5c76c68b523a12cd07cb21b126b4dd4b1fe65c1bf6f9d65778f97b89e462e76feb7c8ec3fdc3355c6ff80fe3968dfcfe1cd2ef58eacff7486d6bda471efafa2992c4f1d90775732cc3e7661f8c9be4282878c619c143c0b9b9dd635519feb6bf04c0b3bfea94b99c582653123b3e88b9433caf5d79e30df00c7cb649fdd63a5d5913a2ab4b74ae247eb3ab4d78cef52ddeb16b66a4be14a5e5bcf725b3c4dffee239fccbb6aab5610c7d71f9ccc0375228dbdb6753ddeabbd0034c5f676a6ef01e3746fc4940bc4e95dc6479e75c777553135ca7bd7bc6bcf0d191671d1ed7d4698513a985799f179c657a5f3be8e6fd69cca525d81abbae967f3263235c6756c075742ae032dfde7d7feeb6e134c5b5afafebe974f7abbd3f74c6e2da76f128291309d78da577faf82ea45c71b86e6dd6df496f4a7a06cd6322899571cdd35a1676bf917bdd6b9ef5d6b78cfd3f4486f4e71848fdf920f3b2d2f7fb6df26fc1568181577d0b70eddc8b3b84ac8b514cf01d7b3d3c53fd9aa071d0dfb10efd593ed9d50bc73ef19ea6077c82d2ec62fef11816fe197bdee5f535ae7dd8bf68cfba76efcefbeab961ff5dcdd2258764bbf87dd9f539f4515ff73bf8edc3be6f3c7babff4f3d3f7d5317d91edcdfddcc098cd634e6d263bc353bbc5ad5c5752e7ca67c3d9fad2df0cdaee6d70cd3bc4df6e7aa9ed8f0ac76cff767402d90de6de0bad1c974dc8612dfd09cf38a49f02797b193ec6e87f3e7a1f1d83466f49c8b0f9d9f25f0930b5b92f0d5334ff1ed7d8bf4a400d787266db9381f34ecce50e7afcf96052c16e7b9dc9495eadc38e346360ce2df03dc9031e46b10d7c5246de1fbb9ce5ec5b50cae65a3689611e2b3d698093d162e7c3643322d6cf79bc0d7e1a51f5f7ec4b503fb7a77d876bd2543ab64dacb90ff7ab1859336acbb8cf70016c9745d2e395ca394b657a7f1c8ec6ce8f7ef146dcc0bd1d8cb57af3b27260485c84673a3cf93ffeae1353abe78583665d83eecec94697d40faac8974096b5d035bfba35f07ab46ed3f50da4c238f67a3ad512e474627038e0319d0d144e78f20728be260919eb31ce9486f273928c8bd86b3f22770e177eb4c79f89b35bebc0b467c70905782d7ece7d3b036e3502e032be8ebb922fdfbafa1811b3adbaf19e35bbaba3f4e645ba7895733e7dce56c57f317ef715038bb4e96a03d1dc8fc1d8e7dc6793ce11efbddac31b312a0a04ace21f0e83d83bd673abd65509718127ad7691d3e377fb184d3eb85fe35860983cf49e74bfa09daf85f750695bff80cfe45ebfcf7a073cbfbefa0f3816fd35a9783dae56f6cc6f765dce779d50fcab777edd48b310d749d0fc67577dfde19dbbd773e67c3360f07f5ca1eebc678b691cd321e4daac08737cf2db2a7d5ece1707f3df4449deb301120c6732585582da6177bfa861606fac6ff90f1d33aadb4edae2632b18d21afce1cc40b7b5b80d42ec4d8269ef8fe72a4cb95204b7b3c00b060572f08e9761767cef09526f0f32a6e991db0ea7681f9ce53c7a3def311767996dee8c3efe3464b88784b3452189adb5d18e44c3e26dc5831674f99cc390fa00005c8ae30a5effb2407b851be0192dbb8127fb225b7484425051264e3f673fd6b368e037e9437cf992a29c7b830619c2b479c73daa921d89a56e0996542f0666ff5726aef47a3e46039c66ff246c0f197cb4c3e116cacbc96b3ba5db4028ed97e27f62e3fdfbdbe59eb77e2d98cfe6edbcb3a9921dcc7c0927e06f19974ced03cc6a282e3a39d42cc43df6d6fecf9c01fc38fa21c0a2f8d5ce318229cb746aebafd300a9e49247eefe0bcb17f760dfb791d93e90edb15173956b2bc923307df17bf0ee2238035b0fba6f8ce65c8234e81afb7c0d7f1dccc025609f1abbf597b25036d77d7b0b0eae359a6e0bb5f3691dc21f6f0ad4ce7b0edf4ee59a33eeebbf977038e6257b74c85cfe339afe75d8ce827f1e4df5673ed51b3ea2b5c07b3c7b98df0bdf4c7b82c9ad75031717df68f3072a7cc9dafd7efc5a2e2b6e7fb87b8ddb1afd629c3ba9c25d33a01345ec873ca33bec738637dd01e162e077ca505d6ba540b708c73374576ee02d7cace87f9a330062566f0f8a5d0ab19e0cb43fda4ec6ba277cfb2e6c3905ef07dd1342f940cd9d1f591f056582c70ce409caff61070f89e2b3be748d2309ddcf6cfa6d83fbbe2604eb0a1847f2daef2242deec57293f7cff95e38b145f4a2117c068989ebee9ebdfb7b10229dcb1a237d8041ed7e10634d7276f6f4d0dd47e1fc96f7f2553371c1e37a0b1d5d2c1a99f231fafe3b791f2eb1eca7cc25773ed758f11fe8ff5e3f429787b60a3dfdfb32c3bac621f0410938918946f221e0ea3296081653dd260d9263389e8fe47344f641f97ab615ee6335afd7119a47b9e795bbf5ddd88aa9d22673e5886b72d1778734fce935c4e70cc72a767e824779fa9cdd933ff1c86c220e63697ad94574f7311331f531e0c40ab8487f74cf744bf0f0df92e9f894f8fa6e719b5f6c018943203964cf73f91e356326ea6a2636eb529d9b4de8255b8cf12fc03118e11a6c48c7dbd0793eca5bf318f7f93eea7465972dcefd76675ddef0e39f898dc9eabb39dc5589d6b2e86dccfdf1a246cd4c382dac3a8ddbdd39e7e59fcca9bf1aa5ed722354d73860d513d9447aba2b47e402eed119598df426687719c5fc9691276e81c5b749117f5f496cb5e49434e61c4e9fd68639cb99002623c0997b770b375a517341b13b850e6bebf344091da50a0a7699c0721ecddd70b599942e0496c9d40ee0a0b1da98aa23e892e91a271bbabe9b2b92e5a44b0d9663038a9eeb94bac3ba3a6060a9cd81a679faa3e3e70f095424277715331ffbce164e5642fd87e9034d13c18be5c149e889b2b3996c4c89e7ec999e6b9c39d66d5d5fd92e1770ec2681726b15e9c6e4d29367eb7a029ddacb536d95bbaced6a63d305a2e3838dc69607db35c5c42d65a7d82b211e2f1ddfc6ccdc51ca06a3dde9c3fe72f60fc34f74a3858f406237a103e5706e6666eb3edadc781773a2affb8ae130e51108a995307cb99c835ce38cd696c69b555eef973e0c5776fa60b3e677dd39b5e15c4fddd66d2c0f4e355806d6b64cdd16b28ea82b783d3ca8589279f2f2d48ad8896dd9ca526364063d1fb1a51f49e3d41285b1e595402b74197050b1c4f2e4c1343738b9052d54427b32b2a5d2054ced18bebb7418a1b1b770a2e5e3d2b2f686c92a95578cf5044efe58496323dca65590270fb1a4cb76512b26f3c0e0f1e46ca9cf44440f7f00d740f4f168a3f109bbee779bfe3eee7e37717f70eb156c15738aa049308b6cc87a505700a7b5ce1666dad6acd0fb212cf75ec186915beed1fc5685295b5b906ad065c04ca942ce9ce3f9e46c6939e93429445fb727a12740c683691849cac1d99668fd77419e8c42a77ed467e9c6648253e0e8d310ad5f3e564cc1692dc7d4574efd07684dc5f493ad9d9b1bc0b08f96efbe9852525a4e12c692324f5aa84468ff0bd645fb6d6f269bc8868d07d1fcf2a61baf57c08bf9d8629ac722a237de7098bcb99e4f00934a13d17ea3fd174f40c0ebe518783d152e706316ffee9ba1279655508cad159cd8d6b6cc2da1e4025b71efcf8f1ddb52a9eb02144c9bcecf2f95c4611f01972cff66f3d3b442fbee08da785598fba0a9325512ab64b6cb1ca966e346ae120ee689b47e943732cda77389b30553368b247e133693fd6acad2bc519f8b6118cae54fc493743a435f3388c887e74ac7b9251f0e6af6bece4df8becbdf96cd6739dae53da1f1ec25c852284bf0108fcc3442b28b0bd696e774773a2db94fbad9ef8ecaee12ccde9171d8bff1cefb5d0ced7c8fe56038d308ae99c40b531faa9bdfcd3143f56003e73a47edfe40ecec5499505feee38fe85c72c66424a7e0d917fc795d2f291369bd762f63137fa8ff3bcfa5c8e6bfce931d1522177a499a483ca2d92af42704b7311d8fe20232c0c57190bbce074bf35693bfdfc9b173b58e525cf0fbff261db6f3b3ff47877d5787956b8d73da20fbbbe8b0e25dff60e8b15be2df52362457b5992e0bb80fbc04aa239d03cdfe21f24edf82426c811d30aa38119636d2d7922d90586fe5694d340759b89994b6ab3109034ba3a8b3c819735e9e54895b3e6a12f45ca8cc6dd1dc86eee45117f686c100d19d4d96ae9b78460e144b7868bc2d9c3a2e70ad9cb55d87dd5a5e7e4af2531d8c4a7365a79c9303cb74a064c3c45a39e2832d9562929f4e6ece2ba1239681935a9aa40bd1086848df03f39cd51876acfb6013793ae76cf44528e9f3703e011ac372ae2d86965023fd48775a28bab96b2685d6223dcc155c16e97b2103ff40e3edc6a74b8abf9abb1ba47f7fd49fed95938461674bbfcc234f47fad22e9194b9ee972f5191b648fec648de167c6e89cac8e6f287a4305a30d3b5a8d01f6d8919afdc72bc9ca72fae54b1f64ceff45b2574e4c683e9625588fed2770d8781783d90fe00e693d0129523d2e7b47c7c303626d2078f1e4caaa81065c7864a08f32660d22d7adedb4e424f3267c146df2e1d641f245a08ddad2d9a93c419db86ad2c434768ec022a0b7632778a3a8c729673a4f221c2fa6a9d99a3f41430e93212e0dcde98683c8fb697339a83e8a184ee6c52da7ea9a3feacee775723bf6f61f7bb88fab3bc248cbcba0d72e3147aca7ee9bb21d25f8356b7569edc24528ddeffe3ac17b1687e8f404817492134ae6fe65a517f074282e6f387fd91be53a499394a4a7bbe6396923e373793d46094ef8ea82fec1ce96f7aa7cf6d75018a09d6df74aacff102d2f74db63c217d77e9c0bdee832c72dd12db5f92be5ffa4a88e667d94a37de30742ee6a37997f6c5f57c32973b217b6281f65ff327b989d6cb3527683d8d2d48ddd641bf2b8958061e3a7f507944e31fe883647ec2a9099abdd1d94f8b46ae02af669699a287def853badcff16bdedd5ca89ffd167903c39e73095c436e6dc96dc83d03c241b16bed80fa7c19d4897a307fbbdd52d1a2fb35bf4798cd2a7d7a99076634838b7313046685daa053c045ccd02c96d17b7b0bb37de19d46c78e353c57ae566583fe902ef7bc03218f74befb5e7f5936c895dded811f09559e0eb7031cd0fa137de44733707beb6bb9a27ce4574e39df21afff663586f172e90ce7a2336e91ad777034b58de7a9fc6295d6339df60c81616c6495637638c6ee33d3a1fdf75bf17314243fcab5db8a38bd8222baf12cfd945d2db18a24bdcb4798c8a37fd74fddfc3285d3fdfe973f7f014e5abdfe551f908876ce0d8b3ee4e38f0f51d89f3377de0296dc4e9df01c1ac1c68cd171ef86c0b7c13afad29896d48fdbd8667e671e1b67193c2739c091eaf3068770224b341f4f47279d78fdb47b6505cb8c3cfdfaef65bf8688c8ba9502fac1a8dd10911ff1ab9ccd5bdf8457feacc855a037944cb118eff5997ab46bc17a3dec5941c2846c675f2d30e581db65ae6e56dd22e33f99b5ca44c329fa0bfd1193e905c7de611e9964a16ece20d9325231dfd8ef8dff7174b3eaa8dfc3dcac6bb68a4338b463e26232d3bc795e53cc688a07d84741fa769b3b0f7a55af087683481d1866554293f44dc7813497c0b6cf6483fc378ab1ce30ddbd2cf7bb407481fa478c86e5ecc8b53da36f380f865137318a342f381d6c7178f85de08f11e78022ef32d6a82226a5286e41f14ca579fe9f8cbfe3e7d9c86f5897e645f4f0bebe2dd0678835871eba7dbad91dc38f3233e1fd6a1ea69797b91cf0d637ee202ee110d75efbaf3b4cf5934385717bc16637d29ef7ef5129287ee1a8f7e999f6337c42a0de2b7705dbac5c771351fc5d40c30b5cf5d3eb40e8ff69bc78ca16f97f083b10e71e69f1beffb78f2cfc4dcfcc8b8d36b394172b97458ceb7b9fd065893dd1546ea2d6ef912d33eb97ccef905e31ce2dd3e35d6f771d6f731f83f3766325f19ed6fc4254de0b10aa92987c60a8bc51c1c43cf585fc486dca557f3e955ea73617e1837d1c747c27d246772a5896cb2ecd687f0e849bc55d295bdc7b9293b3cba36db332f1f9f9d1ecbbd1c19df170d841de6ce1b7d388f281199377821db1399703aee72ad7e383f6f64261d9ec51fe6f2905c1e702ec96dd09f8db77967900cc5f8c8822fc1f479a8eb6e6ec55ef4e77a5e3f9d638a3f75667b1c82c756999c9d4ebecbf43856826f149bb810c74b0ec7f9520c3e735a8e8ca74f8de98c93fd964cabef0bcfe9f024d1a7de17f78c7f8dbd99d6a43e53511f412b9c3ec79fc8dee278130b26c37ca4c067b7385fcae07d47721b825d8115d2fbfbf36b3f5fec8dfcd9bd990605b1af844fef4d5f87674eb0399fc020d1bd7bfae498c645e88d730be76b59ef92693e88cd79eae271f69a5dbec5c8160eff49b9708e7db7d2e3a215ca85c5dfc0fdbe3d47e7b8b35dadcd26fceb39aefa9a8f0d714c3764d94dbcd3677095439e5a5ff1d442297a5a1631e6f7061d510c2691a3438c78bf3fec294136f4f0b90e63d9c52d5ee5d8ea709d431ad6ec3735327bbe677a4ea94a2effea277021ee7375fb5c2585b3930b13c61cdc469b12e75192b39af05d0b26ea3c859dfe8b7547eb945ddb9572567311077379f65caaf33fd9f60dbbf497b67f5f5e646a27eba6799570cecee38c433cad3960ad3320b96de82587e516c7a865aad0e5c5beddcf953e71ce0bfb17cce56dbc985c757c6961d52360a511988e4fea1cc0c554c9818feb413e9276e4cadebafba0709b85cb542bc9c1b991d1f8d118d4a9723b0edbfab13e287eb7f4adfa0158383f0c6a17ad65257f70fe7f70cd963417fbedbe6ec4f29d6330ffaa39bd8925ff2b68ed962ef883fd7479346ef773e913fb411aeb72f5dca6b10b3beb07f71bc742df69f7e39c9f3f380f1243737b7d3e19bbf0837b42f4ae3bf37b4f66fd55fddc8a83fac1be9463c4d530f01eee9c9d4fc4e0ff208febeff46ecfef1d9fc7cd7e7677e9e39c5ba6bc7e86e6ecc07da2763da65b8771b2b0aed7aa8b3da26bd6afef1d1e40fd18c339b89c9bc51cbf093917c7dc101f5977cf7cdea7f0ee3e0d6a23bc19df248d0b718ffbf7b54c15f7f46e39f9d37389399721bed8011d08620ee60a8ee5a5f71967de50aceff106e9ec0bccaf9f21395c480e1fa463441d8df8d69b67bbb894aedd9e3fdd9631377361ff7dc6ed9a0f0ee5f51da6e033b4ff018fbf9113e1c7ced627da9fbdc927f16bfbb89f87e2363ffab3fdbcf1ffdc948df7e9a8cb257687cf263011a86ee2e8b4ded5af6cffe65dcd4d59719f07bdaf9374773a837c737fd5f8cf79eafe8af19ff3d9fdc2f10ff2dedd6cf70dbf78d3ee87328c65eef47d2f07771f83ff560ebd911bd76bf8312ff4efe966f7f2930ff37dbce5756fe6ffe6fc7e2c17937bfcea7dbff6bf777deee419bfc841f3567efd95f4733f1ff7bf799f86beb31b7ef27ff33eddf54dfedbe965185b8cfd55ff8dfb32f4e7f5744af3977f0736fb00ecfe9ed4c6f9ccfd786d5ab5defd1d724e65780ebfe26ee6a17d7438a7baa81595b3f0d5de9f303e72dbd5994aefe4264e0f6a2154e7bcdd628bd73b4bbfbd5af50458f97b39abd38ff25a47539ad77a900b18d8cc7fdd6d9373ee8d052e68bd0f55328f01cde34eea9875ef9bd39503f3c554c1f5d8e42c2f5fadd368699737eedd691ed4b9c647cdba594ef32adab0c7c56c7d5ad8558f291ae6db5c480f7c948d5f7dce6d6d8fcf13af862fdc03ae0b16f86e95ccca03a93bf6c07bec1e221e1465a74c866cd2e5078e37ecb7d01bb7c057982ece54ceea16f515492e8331c9b6c82f47da2ecaea6661a376dc8758e29b048d351b5711a7a7d15c7f7a9deff957ebf4a0cd6ecf6f3137c8dcac7c27db42b9b0289e562463539a3159272925f50eb6fbde965e16a002fefa5b40b0a9fb90d605e96265975cc9e2da76db7c1f7418f059d9c692b801169b211d1478ee6139a85b4fe2c149ddd9e5055ed6d8f7d8d85668352f68f511fb1c796e1e7ac22ef2c407d5ef6a2d3e8ff44d7a5a4de13775ab1ca391b10e692d891587c7bc07126c10fde0fa7d857e8ce6ee3edaec531cef9bb16522b9fbb82d8b48721f545f67025f615e7de640f2b94fbad8dfb54af3afafb82e2741fe088a1aae667bf2ae679631e2553816b26ca251fcce7ae15cbb6594b10dad274cd661b03e3a5e179e4d248c497a8c0afe00ec3dc608ab5e9ffb16e3d6f16fef8c794971ce2b4e39aea66c1b4a621e8de2476dfa7c92673ada87933cd54e9ae49c024ee4afd7529e8eb3b8100f603a29232ff9d6d7f7de180ff13c7deff99de6ef8b881b33aa4fea846bad72c26b36fc0ef125bbafc3b801052896b85ebab10785b80fbd7abccc141df866138d26c748822dce773b72abc0973375caa6f17c52018b6d57bece008fa90c8ce5daeb81a7dbe43b56c27de25a54c9115813d7b2e4ca29f80cc90b55486134073091e026b0ea495cc0349ad66de08d5bd5d7615cc0429d2a13d2cf8460bab3891879fc1fa125e31a4a80e3a12cba8a2cb8fb882b4b393b650ee76e23ce59bb4ebe7646701f147c256ff6b466134bce885d1ea251d204fee4ed5a4ae334b9711631ed4dd93cf415d8c52fc4053f5a726285e493ea911aeacb0e47befdf13344fbde07beb20dbd87476d83cfec09edf9ab75c52fb2c921f0837570bddf3678bbdf3edeef13b22910af5ba2fe67fb2c1a21f92befe32e2fc206bf7b4c7cb30abd315c16e3635438dfcefce1f904ecc926b069fb1e48230f562b7b97d99ecbc4057f8ab8ba8c9b8905bc848d24b191b3d33ef027a74872f6f108b6e8fcab8282daff6e7be2c6a1df99057f48a617fb97a9a2720c90eed7d432f06a0ef86619704265f84a1978a72ae6c443dcb0889f97203b6506e9674deb77ad4d8f3d86459e5dd2e01d1a12f571e429c7682a933afb5376d4d593453404663fc60b70cd0149780c255c27fc1ba995c6f6b9b2317fdcba487e35388ffb3b6d8082df24befe2d2878c4337781671e9376779267cf6b6d347940fff77b73bf9def81dfd3d63e92dca2e3836f69ebf940ea2db8dd5ab4b8defa4668e2f9faf2bbec61a413fabad9f6058fdd62d943f272646cd3e5cea0dfdf96499cb9d15a87d1ffffc5afe8f94d68fdfb328bb83a7f75267be0996560a5fbc05fef7bfcf72ce696f3c9c3c2af6ec9a41448095c753270b3a3fc24aee44c49709eaf818e93cc595e15f791666b8d3a132a0db2896fe5dfbe7cfd5286df57dbfd97dfffef97977cfde5f72f5fbe7ed1c36285fefad7bfbe7e5967fbf410fd23de15bf65bb7d0857c97af5fdb7f5ae4ab3a2587dfffdb7121ed6d9b6fa2ddc86b0a9b2eab724acd268177e4f7e7bfdbedbee57dbe4b7e890c1e4b7b02cfff1b07a18f3d16b1c8fc78fe30766f5c427e37f6caa7f14618986906d5f77e8ff64b50f3358a13fb764301fbdfcf54b95b5ab2fbfb3e331f738fefaa5d825ab2fbf3f700cfef39ffb0cb7c2311cf77f98c7ffc3b136cbfcce7dfb9d65fef1f0f0f4ed61f4c48fc197af5fb2ea9f49f6fdcbefaf21ac565fbf540d1ec36c75fcf2fbe3e388e5be7e91b7bb2fbff3ccc30333e6be7ed161b6cdbffcce7efda2e10e4723f6e9e9eb17274bbefcce320cf3f58b74fed3ffe73fcb3061befcce7cfd6226a84de6eb17eb62d8139893793c30fc23fab88bf3eacbef23e6e1eb97e77d56a0d158abf8cbefece378fcc47ce378e6eb17bd42df708fe3279e7f62fef5f58b76ebc951ff643fe37f7dfd32fdfca3fe3fff79d81eaa55f2e5f7ff87f9ca7c65fedf7f210a4957dff11aa165fbf2dbbe287f2bb6fbdf6298adb6fbdf4e2184abfd6f6518e7e17a557df9fa452ecaddf7fd4bb84f2f886df0c46c17939fecf0fb7ab5277f9bbb1dfd4b0bf771fae5f7ed01c2af5f2c4492fd76e14fe62aac765bf2acb41333b8aabaa749dffdc7d9aaecffb657d5feea69f4d5d51bda2e39a0fefeef173a810f8e071e6eb6fdf2fbfefb61f5f56a8df0f8b45d325cb6f5ee1fc52ec1bfb8abef558627c2fe837dc287b1c49d7627f5e3bee9dafec233faafaf5f92701f7ef9fdcbaa5170ca1a526e6bd7aa53a58d46d845d1ca9b32927199a0491a70d5a3da3c1dd58c4fe3f9f3311894a08a1bfeaafccef5e7711b8cf4f6a55db34bdb41227f043ce514e0b4264f47b579382235441d96b29a6b47c377996834814885888af8faf321e674ec72fbc9316288a08b4b0774e313463a27fcf4f80894199702786f6cfbc0830775ab6fe291f69bd6caad3efdf0b977c6c41e81e45671c38ff03f866d018b5d46e48af7de7b231dc65b50a27d56d9c45671a9cb5396706e86d4f0b0dd1dd5e6e9a072e2299e22d30ba23e8898cf91b89dc03843eb7a7ffd238fcf8157b72a33c6a23228f8266ede7f27c6ae1bb755999b2e9d4332d71f3e33ced0573691e4e23d76b814abf01fcc71e08a31dff4af92544d5ee8b923d4ceeaf69edda23b92629ac1a1191a2da5ffd13c3e18cbd5e77be31999fb78caefa3ad718ca59a051c3cc40d3f083b318e0099395b138de9188f94cdd53a965161c2d5f4fd3d7b67bef3c077b718ba3f5a7ffa5c91507bd2ced055f9e7d61da95c4a176afed3e3199676fcf9f1081fedff249e3f7ff4cc1ed17634d78ec9483bbaacaec75c82d3b60ee1041fd03c32cfb8d0d361dcf0bec375637b976f60576a379f0fcee5319158c4a30ec9943f4573771b22959c1b4004a67c1117c44d06a67c1b17da91a4c8335b7534a9125fa365f97e71db1c5b465b5cae8103eff2e9f7f71899b51d2f0f8a601c589f7a36f3f1f596b807be962d619505fe049b1cbdcb10f509f957e0eb7ac4996c2461b9d94378d1b31175b5a2bfb11953f027ec72dbe2fd83abf9e418d3fd8f247e137835fedb67f95783d56d9fa95f0cc7141dc84f1c01be5a0e6bd8ace2a0dfd173041e8bc691d8b6af6f5d7a0d2017691a156685f406fc5ce16ed1f904be2207de388f24b7c17d76ef3850c06394c403906a1867788dc8bb38ec89a6c347df17a494f7e0b7aee4379a5307df457f37c09f5481a7c3c1b34ab435d06f6de2296d32c7ef8838140bb59d0fe5101a0386eaa267ca282366205ef78267c9fa03d181a6e889fccc66ea1707f282e98089ebd40ea647899781dff3915be17b1981c9d504fe24f4d7ab5eaf73a17690890a75884b76496e7e86b902186f755c16f60cb7c3fdf53a1b9e072d4b80d71c87a6609e47d694d0421f823778e76a2dbafee131cacf70d17eafdd6e2c639bcea71b171b736ee3706e45e66c5ecc2de06a18f80a95c3e499ee372cebf1d922aee6218d60dd8abddb274e7d73af4f3052d2584acb80e84d3b4a93a4d41ea6250c79ea4aabe3f509257743d2baa073251e0287d02192af1d5497ecd5206c6df00cee57826de02915851091f527e5282b5a2ab19bc7005a7cca620e3ee2b5def6f36d294c35c36e0b0c27466d8026e2988ce8e864bd30bf29c8d9c0d71fb85ff614f80a1e2f28f8c6f4c40d3ec77dca8cfe6fec46219092c1e7ee6aac20e718fd4fcbc2a27eb684c6911e88c6c352080a5d37dc5e7d040c2da7385570b807e541789dc2b94b7816de7bbc47159e0b86551098aa5cb02d5937fe600cbfdf52a8265e63bc77c708bef9aea7779b947821cfe53d1471494aa7a0f6cd32e66e7dcf1f4cb49f1d044f389f31c40bdf85baa1b3fa6ec82ee67338ad23f0489f840e7a7a3e7f57b8a82d232e5c2ef478366608cd9133db41bf86bca35bbf4bd8a57c194e89c688c329bb753f8f2b4d3bfe708b57a167f139f0fab27df8330e8d2273607a3ee476fc14e69d6c8b39be22e3c32e7e4c1760aea409d38f0bd19716f8f098f8847f861ecb46124e79893fc704b2a80d6401b2336042dea7f62b9963e0a3f6703b29904c2df4c6dfc9f8f0b54d168d107d3e137989753b78004c5d4645d58fa57b27a690645b8287b0e7bbce358fc7672c7a236baef6c8e1d94478f3cc2e1a2532fa2e92b07b9bca391d26e2a4013e18f2f40e6ee6034fb1efca9e415876b7071da454de4e52ba7ec72847f6c443774eaa6844e46ac48dcff2b3a88f01d195905d704c1afa1d27326759a6944477c0d7fe9b883b611e1c8d74dcbfcbb99943e1adb47d64931fe8df248c9ae83207e02b0dddf36354b0301ee929e5d7786c16d45fec8ccc23de92f1e23491984f50d8c4543975fcb99ffb454837e12917eb929f6993f807a84e57249579295baa019d0e69b68846ca0638dd35283923f16842e409c7435004986ee3421c7e6e1349cc22c97542c44bb8f41849b83d646f70a16f8e89de01f7c045fa16a65b26945c86f2dd8e6e913eb28d045a6a96d00191c17385c072acb3de60423c973f220e1efab3ebeb9e83e73d69087406cb9d6d84cfb3c28202c09e26e8fec78375727db38c881db109bc3117f8ba1f7a2643e4909e465b90c64c4a5ce8780fcc26f0c62d9257646cb03538f19014626b4ab049e658164a91c4a7c94c6b06f29194c162745ca681ca9914f3bc22a9681ab687647a1e1ba6050af7b8588faddbe2b2ec83f9a2f38fe4ea50af8e0abc47882f32c04f27094ea33590d3588e9b70254e8e94d7b348d7891c9149e64a196c5d86caa42e25d534f14041e5eb291ae9252d578ad69fb601736287e0f33aa6fc085f51e1f9203d4318ec4b2e5a4e2e029f515c3307a2930df62dc7e903503b82e78c27b603673e635a861b63be121510d1efdef64424231e74097094e797787f6ca520bc5e6f80e71e9c0bfdc5842b81ce134e8ea13766e8bc245be0272e3e5f0a7005d7f6d909b23d445b7075d3193b675940c21af0bce1e4c572c68e7321efae69650c13f6eabbb36c2c57e40c1c809fccded2e21826cc0d7aec21383d8fefcaa50ef431fd18cf21f9ec221e645cd8257d096009529d426143afce0d0e36482fa6a90f76e45a0ffdee52d97886f174b2b5872509cad822bcfda2ec3bee17eb680a9657a4bfae1ccb99f62d6f7c4a7cf31c0282da91e0266c06ba7e0f81bfd0b9f7d1c86d814353c2131e0f71e9d5b3eca6cf209d9fe8cbf196f0769c8e45826924984de027f3b8104f9417607dc6d82ac790731bcbe9e59642aeea414a788e5e21fbc7c2f4a4708187e50a81025059857418641b53dbee22c50e1d43979607db7c60fed63672a85c4a241ee95c9bd0efedaf41eabca1ae8e7ffb0e082fda535de298f8e6125f514bca31ce89fd8b4b43f7fa19d113c0600dec5e7f86b9d1fddfd9c459c7dff7039d7df85981808387aea4c785ee2ff472015fedbb5e3ed41f881fdc83031b1c1eecb37e44ec853e3c82f4193a673b1dd1ddb0df98db97b12056d1b95f26c23ad55e0e3d3a36cfdc82411b9896f2f36763e03bebf48998ecd765097b96f8a3a8add9a798eeed11f7fc3b5affce9633cef64939d4d57019d329b53bb8ba0cb8eac67e52c8e254b1a211e69933aae790122144ff389752c06bca96ddff64cfd97475b6c3b07fb3d73570dfe82c26c4e624253f290f2376a35bb84dcc215bbd1fcb24299265e2b1e7711279456c1a8696a4c76323fc2994f8aa931f9d5d7b0e2119da2306d1c1b63ab3a2fea6881b5781a7407236f90214751a146ed5d9c138f499f821dca880ccf07c92bf713a4808847e1f9a68e41e88add297d9c0e7b32be5ec9ed76186ec294c27059f635e4cd3b6d27d6fd059e8ca81507a3a249288ec1542b345cd86a4fd1e7a43752b86fada5ac42fc85905c7686bdaa15f42ca1b346a6b77a939b1fe87f6d01c215ac13c6047212a847e900d5dd4c784cdc939f475c6225038f4d9c17e03e23bc4502442cf691a6f4d87c0b3a95ed3f9d62431038407ee0c3f2d29cfc36b804b0088e7bd4a72f181fab92a7aff40f95e6f4b608889733e6357a19db7c2c7ef857da33d1173aaa79f42af26fa56216e422e217b2c9ccff9ed3440f29db0a67b10e637619cb74a5d65efc28fdf849dde29ed66c99f0a93b8ffcc4529350c99bf0c33a6210e5d19d5ec9330ffa9f24e5a18f92ab4f9163c1fd1f513b1af0bd25e34efe8a48728535f19acc05c81c4673af00d0ffd2158cfc3e79fac3339d7dd3e301d5d752140643f899d4e5318137eea4f886e0469ea3787ec059121ec2999c38e07f725e307bf69fd3943fb8679a53947bc2726a5aa87eb76333c4cbe5bfa571e843bdc08157f2704ffe3d0f99be1e1173ec3f74bcfca3743e6877ecceb3263d76d0ebf27a9f4aecb6dca5da8d2edd0e2a9f2a61cda856c18d0f8b0af8fd2669c7ddce36322eae3a8d021c067d85412c9dd531fc0fbe1b4742cb8b4f6055fc3b4d9e996b40c64672374a9f54ceceb2421e5320d377b5b76f992b7dd485b41c397fb3b958bf2d5437deb266dbd5b4698c8ee8b3448d827117ae3fcec67ed522a76a91a891fbed3952ef9e9993f7ea2a4e0bd67ef87d613dbac5fdbb7e181d763eed240cae7703f76f8dd3084aea397339fa777c1d39e4f91b4897642f84181f86f7fff25225dc4253e545a7e8cc8b33b25e0889df75e4937d40785f72a4e349a58d8e67cef7df7b2441abdef7a9b5eb5b315dea6cb21e731171b72f79676f776b45cd5d9561cb6edced3ae3415f17b48679b34246987a8bf6282f51b7cf67cecc73286df0564ce7d4927b227e734f05477ef4b19e1b33352ca44721de0a7cc95ce85fd995df834f6c777a9c9dd3e9d79e7dfde028edaaa529d06dc79fc7d3a7342f76cb01dda761336e65227a2bcaedfff1be95571fff82e804d6361a0630f539a0ee87890aef41c9a4acb6359e794a5fd776fde7587747e3fdde790ff7c26bd800c5dcb9e5edc1b5ca772a43e664c4bbb909cef13f577d2f46a78ed281dc2d62669ad7ade639d69a645fb8eec707c0fee89a718addb48cb9699cc998e3831ac5a311c5131ac5a341c5157057762b8426539e2ccccb50a3de392df4c55d84f2c47ab424799985b30a5efb8f47fd3686adf70c4d49c92cfa6559be87733ab55c3898f062374edcd0c479ca9823e311c7d8efb74f819f91f2ec818b4ca76c4f9d2d1d0582696530dde757355e0278607a7f87fae9caa6232313c7eaa0ac9c474274bda1669d3d555f4bd658b5333c3637b311b32369b7c366dfa5915f22a7694592828078331509f42c8907570ac7a6e38face601cfc591764343671e92833b43686535506234e0ce601ff6ed3f72cebd4e88239317c8d35a7682d9ca39e9b029df75c15c589e1ba135588ab88516676514e5501a2f11be419a6eb5f311c5d321ab2eefd5e31a262347569e4a294e4ca847cefd2ffc519591b51a09f45da9f84c66c36fcacdb47b21f1a9d437c39076747c6d0d4bae1c463a321746335e7774dcfa86c469c848e8cfe9f85b95cb98c388918b9321951748407da165d4fa642df2b9aa348576bb1a4637d219f9dcab2eadac8f59d518c6784beccef741d4cb4b70697ce4c3c0f8131323436676ce41a5a9b89d5107aa37bfd42df5354893f19b93889fdc914af850d6b2337e8bce3ca41f4e60895d9d44723d797683e9816dd67f24c7f2ee0c46000a535a7db2b15d39f04a786033823a7b4ef90ff1d47c36b133806fdecd0fe0234e6b9cae893ae3dbc1f740e667339078bccc956057662b688de31dda883774530ad5f0c472c8d0cfdafff6164f89c1e8d0cd1b36bd07551689bb6d5a0eff3dac883abb578a0637d229fad5a51e7e2d4e0d26994eb98be4c693febe8d2443420e822fe6c9b98a64d1b4e8d06ad8da8d2f3bfbc3cff79b568ddd470c49156c8682dc470636694a7f4e7d6b0eab93a878ac18c35cbaa4575ba47bf87aaa84f0c174e304db0721539ca04f19d15fd7fc190ff2347a7df93ff35c19cd8f90eafb5e70888f7205a570d566f8c0cd1bca8d3f5199bd37a6eb8e28339ad6db45ef4fbbd41f96584f901a2c95ab0c8b86d13f30e3125cf3ed58446e99a8fcaa9d95cb4e51b780f748eec91889e47e77be2123a9a39644f5fc8d94d02baef640d7d7d8af7c216313f347c714ae850f4c83aee0dcc0fb722e1335ed9f172ddb4d038dc25e59366ff3d59775315d1dec69583f685f0bf49982b32d93b5644fcd874c684d778fa9cec87bea0bfab985f3b4f88362616960f7a437949b7267f18f989d09de3203ea20474fde91c1544eb8827ea39a22b20da788d825127af02068f6fe2303bda4e85f9928dd7545408af7ea2bc19f5c9b4265d4f7c9e46606ad13ec919878e2a213a8194cfefc9fe3a15954d5846cd8010107ec3c4f87b9bca56c4f3d5d96463b0783f75c3d9eb845789ac8165e3ffc7de9fb4a78d7c81e2f007ba8bbf06e30e4b6b0419096ba892d04e831b81244cc2ac4fff3e55e794188c9da4bbd39d7bdfdf220f3148359c3af354d60bdf1b259b92e16942198d043e2d18ae79422e9752c0d7519ac10bacc33226f650f789f9e0f3f32a06381ee31732c3978cf15ac91a65c80b197f776b3687c5f710a84276b1bf854c2db54c72c2fe7b7686918632a9667b1b4dc9b81f8fd14a21f9000bbee7ed2e08fb75343eb156810eb0e03ca0f3ce735a0de30de6e5d81336168e4df9d8e462ec72179cf7c869c2adc7ec2cd78141f57edc116570397019402cc3939caf089b09090f27f69e573b11c7cbaed1396fe767f7057845e4e894cf47dfb87e01e7fecd5f30396419917d14dfbdc05cd6c06f38ef37a6e43c578eb230b207e279c677a94fb6d37ead860367785eab24de8f4ec701ecd169388c94ca284d5cab6cc2594629e83dcad120f85e268d992ea1f9b10c3c40adf4dc3cef11f0acd1538e87eed15f05627d32c807cf2d054c1419f42ce9b8ebf72571d9ee09b8b1b303b8053ad0b3f780bc4be89611e7f7b20fb49f08986e0efee2b8f56bcb8a380d969a8bb815769a3eb1659df30690cb864b9c47b10676ee6cce803c30be6d848863ae74fbbeecb2f587b579ecdf35513624960e3c91c1a05f1383bfead75644f51ed7beb173c8616ce3d5e43a0dc73d869b653d56c5d834045e2e9e4d81865f40379df73c83f19f5462f4c7f8992c78cb57211f69c8f0a439f82706974a2bc8b8e76f977a0dca8c11c23d43785bfee9b8f489b50c385fa507bf067e3863cfc54df5da9fdd5b0f0bbe06f9adbb8453c17ff3f4fe5c14c26d00a66fa7f85c49383e8ca62450c4bb71c869bf616310d089f87aa7b8f7e8b4853d2b957125bfa8f72060c0c6e5bc5cd9ea207b98de0afa1eecb77171bf2f99e983dc265c27b6f2da097a1c3bcbd7ca27cd46f0c974c1743bc663e0ac664b7a430765dcd3815c6f52f60ee3855c2f354137eb70dde4cb3758b7f726f463a153bd9aa88baa544799f80df800b78fd0aee0f4ef4426e8889152991c37a89572fd341e30b984e7e2a28c733733625141db3eda67ec6c101fdeae740d6137c8a9c9e188b61e11b61ec1754ac2eee2f86a9580e746486aa1fb4e80a6b95ce7f23fb09c0bf908fc3c92ac11c39b889f377b273084ac63b00bd0960ac0d6d242f1f719a7f9271f570df489c4f66dee33e2bc313de14ce7431d7508a465d4c7e352d87c349740c7663063b41ba94ceec059073a9e05e721de63600facdbf74b42b8ce1e93d9edfb4c4e339db5021ee4eeefbdff4a083b2b6dc6f492abf737a740075a8960fe5d10bf7fdfadc926e53cbdd141e7b15e4ad34718a4e6c4de32187cf39b277e56af35dda19eb112ba3c8d526b322a515e8d6fd7f12dd039dfd34ac921ec9c4255b311b67b2edf24cb60b8c079785c59b8ff6662f331998d61f8c49304ef17fc212384d34e461cb013d8595a8d1698d61bea0a5c66315e1391a3a0cf492611e03f68db735b58b24665ed6dc47b3921c0bf62590f996e4eb64c67e772f395380e7fafa37a6112c46da9e7775393e39dc3f6c4cf06f42566ff9fc4f884f35f2bf2e0598d4a2ec3eb6d90383ac252e5babf64191e01d8503ade94ecac925207bf413d10f49e01fc0c3aeaf187024f701f849ec4e899d30393dffc5c3dc55fadadebe7bd55803a6671f53c5b13e72f6cfd075feddf0b2646a0fba474859ec0640ae8108e5e083ed7a53ae8248d3d355d946f6e27e0414fa093b233e53c220974f4b76cd14e31f2da797cf7bcd0e392f4f279ae1f0a1ec5f91cd70fafecd8c10fcebd627a842739f89e35c571363edab8af04f858663a06f070abe7d59351833a23f85bc2a4e1b2208c1a43f8b4c2c50dbcf9335c2f039d9d584186300bc383c270706a3a1eae7120e8e2b5be3d2fba0946fd39bde05a4efe626bdcc23633bd1eb61999a17eb9b6858e1a2c40d679e47a8da172d4c53e32e41b11df3b6da7679dcb40dc1af8a763ea132bf54f80b7203bad8a5c8c4188e579920fb4939440a3dc1f67319c320a32fe59fce16798d75c6fb604bc859f694a9086e502644adc5878c6923863a673333e194454c7f78268714357e26cd95a25f24ef77f167e2f7e3eec2cbcb70b3a5a07e04b71b31a6d3ea5b1518f7b44ff4a125ce3dcc445dec7700eed3aee3b0ae24affabf067f67156d395385712821dcb70f0f2ec038475565fade1c52734ece716308d1c0becf4e19bf03309983219fc5a23bc14b0cf68527efc7c675d3c6f6e62626971d27cf23c3d3f2f13d071bae093f5acf5e81ddd1dbf31dd22279e778b5713e94c3b67db6afced76dc40d58c7e1daa85fcd03cf92b47d8084ccfedfcda1a7992b70df477b4cfed8554f2be43fb8deec76ba36036fd2d3fb28706d76924e9ea2c0be2f5fa021b8b10cb282547f84f14bff3049e2688936b2127ca777285ee2ee44aaf07816f8e7eebf9733b78cfb36be9c296e3bfad41cf76d56094daffd098df00ffe957b107baf80bbc205ea34cd97e281b32e232585a4c3ec7c4327dfa04fa625cf5fa6c2979cc6e36d0f72bde713ce1ff90853ff701fe8e8f97fb08d83efc05a3eb40238b7778ab32bc7d3de32dbeb37d0c46957dcd7baca8e73d1ff22dae075cca15f62ee7bd046233415e8be71bf0ff50ebaba0850c6c0b87c6c0c33de9ccc36721f0a667b1ef3b3ac0eb850e209e4f7f500708e3b5f98e6f845bf3a3f3657ab2a09bb32e24f6e4ddee6994b6b027f7724fc867994ef8d19ecacb3de1f367187c47af390d855eb3c6f52f5d32bbe6a551f5e11ec3640d3a4b3c349016de7c05eca5387eb7e635ea2332e8e46e27e0c3e0cadf417a4af93cdec16fe17b2a7c140915f474e86944021a294d07ec13da2cf019e5928e22c6b793358f35051dd53df3bbeb0c0a73f6bd791d0fe84dcb250fe68d2b037c58569aeab73c6e0bf04a984def697eaf57d647b48b529ca7e56b5135f487597406bc7af4daeb28dacd7ae9c9af0bdcd3f8f6fcbf81cfc60a5c88eb8c3c329682efad935a4af0dd798bce977f8c2ff133e07cef7a4db979cb236a3508c1bf9549ce0ee4d4d986eb6d4caee3003d05effc93373294fbb6c6dc2f979bb897780b7b8949172c2ef457c6bb29c49848121817fbe5ebcd7a1e85705285bf78cb63c701f1915fcfdfc1a5e070a1df834be0935209922b1ecbf9641cf6ba5ce09346f6db0af4fda8345ce927f8d37d3d65cff87df15e4f191575f08e777ec06b57a06738d5ad8ed4ef55b9da6be59352f27f9effad90ffddd153b6068f7f093da5d799cbdd85ec5982ff8ef4366ef9ce6665f2bff83e7f8865fbdd5e7bbe441f046efdc07e18dc46b7678663692449c1d748ca23cadcb35ecd648be56981bab6c87bddefc4ced533fb73bd8fcb206f37b7ba67145736fabdb7fe0a6278a10a3efeb03607c1854f65c6fd91f85b3ceb7f7b676345f4c2b6449f45dbeb4b0f677b926c66128323d2544cded1d433c85b233bf3056b627b5a983826ea9b3bb44718afbb7f16f7d6b3b2703db57cb31ec395b8fec7bf7b9666e05b89343d43bf568c7175a6ab04e01b173e4fc727ee2010b139a51cf5b6757bb45186899c098ca34ae8fbf4d15740edb39fab011f1bc84cc56f7bfb6f0438bc35fbb3039f10c4a724cb98120fe2d292b5094e17fe2da69fd26073b9e78cc3985221977a5e73dada1323053fc50a65c36978fe9dedcfa82e6c15ca7de5e7df85ef1e7871d079dc0fe74b4c06f23d6e83d3e100be33b16e077248288f3b1864a48df0d963c0737ebc29e406991b2acde5d87c63769b1102ad30dde3fda764593ec4c49dbc9ec3f7dc76a5cf88437b8c9d7b483b2f605b78bb1b7fb6c7731f68c17db3e75874e3f0354b6b53e4d030fec0e3e792f0455b2f388713e2df94ff4d1ffdb6c27130c61b69638c3f8c791c271ee825ac5b0b3a3627978b31f8d6d75f71dc9167824ca294e3a9316b8f386ea184c03728d8337491f7e35530576c01cdc96f2023c321c6d51b3ded7d16107f8d08d04140b82d6415a68b3edaa325785e00be81e8d5041f3e4d1a888573de32d40282f3248e83f430c678cc1e75172727843dc374fb4308f9509ac8ff62788bbc8dd9eba3a995be317eee4bd62ee6fe5b59cbe546c4233c579a8bf8e2686268e09306dde380b2c5cb6b8c7575c198e3a90cba6914b1b5bdc7d7905893a2e6fcdb08edc1e8469e43ae0ed9483ef247d427ad5713631491c8934239a47aa39bf89c01744e3a91ef4160ad931063f561d8e32b8fbfe5667de323fac2f5a2b20e9c89cdf479f01da74605f1f0d88458548d3601c47166fe096456267c98b583be22883bd31a624214ce25c63df25c8180560227a34cc01dc61da32e95ddec33653858da56c8730e146be7b7831e1f42fdd8f8ca7141b9af8b9d858cf9117dde91112d789c9dd175879f7bfc1c8426fbe4fe51f6f792e1d144e77e6e0d62cde6390e056bf57ce2d5fe45be992f3d6ca6a6c3f94e81793c5e0df93d9e099f85c8f7c1cf9250cc030af077782fc3bfcf9ff4ea3d588b7fb9968de043401b9e066bfbe8b3fcceef47cdc3d81a41bbccab6bf0ab42dedfa3c0378c034f5eeb3eae66f8a41963ccf405e37ee318ce9be9026c1e97807e53e1794b22afe959c271882ff87d86f48f7ca0a43cff25f65a3c7f1b632a4608b43f9a41ee679202fdd618bf4b453e531c82ef32439d8f60ec1ac6257d8c796243cc0b7d17bb00fd1981529e632d2dc661621e8f338a9ae7b4f175309b43c45d52d83f65df7179aa3a3c2711720f7d1c17754fa6cf9ee987afcd237384b7cf78f5c4273c7ff33217cc9be233914a31e76bc0e34c013107c1a8e132766a063b7fe93cf3dfe3ad882520deb8b2df519e1f35918201df47b835f37a7cc2dcbeb5e085fd7b709e5f03a3e4ef652685f7e2d2ba798fc9d749bf46114f5606660e38f43548608d19a1b8462e5f447ed30079c60be5b8222b81c164c350e49d1ae14af8e9ca25e808650b7010765c7110fe7017e31141e7e8c8f78ec0efddbdc8bb0cba40475d431667ea8ad89c524d3057f028f0ce63bf010e60de27974723f4bd58dc6fdf3c09b92af2e0d63e8ff3238ea36e03b98e226f31c0bcc4a28fd37bd21863a815aeb1166bace08ce821300f88578dd1c74d1743315723f2e7e0991e76c2367f81f34cc1ae894b3b93088311a71d0687ec32a7a7f3c6c27ff7c17c2b913798e1da03e5787fce3a5560cec67e259fcca91c9df39c43d40bcb8388d317c2e614e703b2cacb4c57113657c6735e1a8623c22f9766a81bc66d05b8179768f7687a86b9b2717895efa2627eaf91b1b387ef96058e938e348cffd323f2d936477d3c857ce449613a7bcc594f21efc5798b308e524aa823a90dc864da7cc5df5ea6a03f3d040a1f6710a83c7f92e1dc92af5939ea590dfae82c419f93743821fd02ff551cb00540f65ba9e1a19eba6d91f60e9833ba44fdaa027838228f39714d97e1be36538e2ecf0fac2b4ebf25a9921cf5c150e1b90a4a68573afc36ffe6779a05cfcff71c6fe3d2f124e7d8e738114653c18a9a90c7112495fe6a42fe3d5185ddb601fad779bc7f9c416c7d3763324cb2f633b2163ad64bcced9ab2459ea311653beec738e7494ee2739eadc81fa27e5c2d32a0f1f58cc70bb88ed20567db40e4f5f078089727aa66e4a674134f437d4e91ed1b3de720e2a5aec87db9d1d3b23af816420c23417e3879ad37fc7c69d2608eabc574e44a9c6fa00cccf33c50cf00fa6465e1f7832044da24e3bd886f9e73eec0d7164496994bc8bf2502725a5d83cf423edbfba52461bedf507749d19f7d44ac516e7a9de0e321f8b3521772548d74d9d822472a023fd3d2bb783f94180d3bfdfb11fac3206fcbef300f68e29a12da95ee1e72601ac55ff67128c627239ed71c224f5ea5fa6d6e56266db8ed921ad41331b6e80c23353ac7ed54bfb646aee4f8227fa6cfcb343c31ee43c4f54a6bc5f804f8e7b80c57fdc5d0bb788feba611876383ba67758c74d0dd33f301f1a8f2b86ea20cf429b9c52d4f0eb97fc3abb3fae17c7e9c375a5c8e84f11a73113d9e031b92460619b6d60a618f45cd87713b8f9c63d45cbf518e180b28f51c632a31f8a3993e7dce375429fa2b1bfd1c2f031e1d75a989f9d832d886dece5f95587b41d1bea3712e7821ae85c3849f53803100eb017d7451093e4a83620e5ba85a63d41d05ac0ed1e22aafe685e10ef848ab3ecf82d9a8e0eb03bb314c2a41fb32e2e20a7407eeb7e3f991f87de0914d9fe7c5d6325b0abda139457d5e21d7e5ad087f0be91c7450a906d8a8ceb4cf89825c50cd35c7fb0bfd0f7c357d8dc9d63ee76cf0759d02c42d610f4ea47b3ea89e1fbccbff4ca562e39a0ed64e945a98a43887e708ff67107eb01e9988d8bc7e5d9b84b21b613391301f80500bcf89fbb0c3d3509f8cbc1e5f7d520b19ff49dcf5ecb7431a35a664fc2d123968ab0061baad40a6d6df842ff81d7e7728776ff09b9dab5ba3cd1a1f75b7e6b869e4508b300a5715e47bd152bbc87398f4f41051e10356519e2f5f4dc8238c94f2363fc37b2507c13b46988f98f8107f673c2ec6dc2c0123a197fe148c7213f8532a397ba4f70c75fc17e015ebdbbd4c5cf3c0e4cf84d953c077795dcd88d7f7acd6d30bbf47e513f7e4d7108ff6c8f8e33c9c2885fcfc387d8c3ef423a7085f6f17a1df1beb785421933d738eb99c2ee64abb5dd4e7f3cd20a743ae197e8e66ca401771bcb38ff236165a2b90fbcf7315a61fc51398bd1cf078c7c0bdcacf554be1039484fc067a21b2df95c2cfd705224708638c44f55c80872f47efe25526fac51b07f5361eeb24899009ee007211e902f4b97af02ee6c56d606ff23e874892428ccf4f24eeef7232d37dff3ec36588c5603d9ecc746c11c7d3b00647425bbc2920efd5c86b1ff780b56a6a65dcc8e988d90bc03f2c13626e959e63ae7b6c0f50a7b534b4c7fa7c2694ef6d8af67524c3ded0aeb272733cf0efe43053c9dafbf2bcaf7fc9c941e4c733bd7be4339b047dfa9974c0f8f570dae7eb9f849e80b5576a6078c27724f2b6cff921eb50d437319a89897c0137b41b2cf1f9087543de1baffb229643c2bbe728fc67626c2f37bfdce68625785e7be41313a0597a405b5df8b4a1364e3aa05f06fd8ccae0e5f69cbc5a827312fa7e3c78e6f8d7511d73e766a5f4c679bd8f3192a8637c85e79523bf2b790d42c4740af0bb80af826c83ebb847e3a63738481747c38f21ae416bebeb3b1c8d87cf4cae04b4ea656fff5b623da3bf5305daf30ec227353567889be9c77b8e3cac1bdd1c316ffbc157cbe76bdcfcb28f8087059c3f25e9c16f9eb8bee18d343d6edc8b1816f8627dc91ae510b3b1fdb88f5faad1a9c79187f35e780ceea1309d8ce97b1833ea0ad39965f545cc86fbae809f30590cf4ab81ff3d2ef5d7facbcdb3aeec2f86f69db9395ebaaaa683efb5e1b2b0647fafd62fbd2e7f7e5ed4e23ddeacf9ad20ce86c78363f908716d76e64d1f6763fa07d44d1e80f70b9fb909fee38c8c7bbed83fdb957a66a2cf5e2d5fce39e9bcf684cd49189c028e9326835bec11a1636be7e797d64b2fc3c0ae5aba50bfa2f4eb8e82a3bfd2f4fefd33ff3c843cc7ca9bb9d2975b5d9deb15219df5f6520639e55a89f66984f50105f8090c4fc8beae7c39d3c3167c2ded0def667a13b3dba4f527b480f93594d1b5792c6aa7616bca124f47bc7345ec116266a65cd44ecaf033553d3d5e36ef60c3f98590a5a47e407b329d88fdf73cb0fc28c6ea79b06f37ecaa09fa26f60267fa3a2055d30bac038e230f74aab8eaeb524ae90bfa8bb6faeb99ff09da827545e5c96f8f5c863cab8e1e2e862f37bab60175108c0fe279c25a57fe19c77bbdfc95409e4951636c392eb18740ddaf5fd422f5f96751fa8cfe5a2312be9b33aee8bcae99f1a39585f650dd811c28dffcfaed3d7ef7b5a73c07422a2407ea5a93b2f36bf3028e67f80442ffacdfc14909712ef4013953f2e5c676b8e52501f854e2e6821e7a3be38075198ad0959ed1a68b4301fb6d0abe77dad714a450a762e4b5b7c55ca0bf0723e0015aca7d8954cb47815e42cec4be341ded62ec1fe1035aca63d88d162a95853554a647dec9dc23f002abf2249e3f62147dacafc2f8bfa744b7f5665deaa17ed9611ef7c4459a7c353d353cfb9a2db0edbe60ed19d77ba492382197a59123fbed4027b7b22fd29e319ed99d71e34a1f325243d4c90a3f85d995a64338cd31b885c76d00f5c523a8abaa378544b90c0a24cb64f8373134cb278d79f14e1798d7efb87570f34e60debcc3737f52c97b64f2796254864fcaafa0b3c018dc7e571aee7b98e85bf6fbe6f2f79cdcac0bf48c011f8fc7fd0a8c055c8ca77afac494782c4fe4bf5cae87f1e7283c1e7d5e0f34be19dbe5f12dc84d2ad47763770e1f3b953c9e9f78397640ac8ec723faf11ac78f65fd1266256944bc4cc079ec13f91aced00be50c6793327df6f21935e07eecabb92cb0c1fb678e21c47e2ee6aeb452ba7ce670084df381f72b399fe1d88fb7d6e57bcf52a56557ef1d578cf6deed35aaeccbf772926aae79b5ee63505fafa990d26b788c1a1bf4cbfe1d39a8ade6fdb8c1e533df0262adafd7235b8ca75dcd15a7d6349675941115e837dc47ac4db1274114552f9c7ed535d45b4a73ccfbab7cc14fc8d997236c07666b5458bfc9f31a4365eb221f00be2dcf41cf215b4d7c9fe2f71ed4b91a341e7c6f8e25a70fe59c977de7b987086a53794d191b9bc7b2d5f2a20eb7f191c78d3037c5401e7e22e827c8e8536f43083f41561f209f58a9503e30bbfc003a35e4811ab18efb974cf1fd0bd3a7a00e82f79d809c7e9bf32a6bb6801c8c88f4cf47cc26ca9ba7dbb51a7d0cae1d3ca35efc70a1ebde83c52e5cf47589bd7e8a3e108c8fd34d80357f21a36d3c1b5ee727a7bbcfe0118a3a6509f37849817a9f8b7904cd33c6ccc1d6978e8c6f0550ffcabe9795cfc67789dbeb9a42a79c48c111e38a09f8f29fa0863de4b5f05acef407b0df92e959bf7d0fc355c5cf3c8c8f568e31be48613a12f6d920e91bd3512389765cc7c7f32ee4a7bf71ae56f4f9b91e9f5147f91ad8d5e89373dd84e73acdcdfd7325fb20fc6be71a8522c793d7e63b183b1ff118c0e92071df2c798333077dc888460dfa54205e1325e927b43c3efa27a81fcf25a713b1ec6064e922ce1b42af1683fb08212f700f79790dfb7dd0fb95eeacffd57499ceeee426dd639cf925abbf885e2656b04a8d74718c8278ad97d067c216b5f550735a1da0d6c47a81d8b0e7739d837c61f69f01b0f3d289596c3cab3402cc63177d060a88bb69a5c4fd934601fa09fab33d07fb5e5ce252c37109727945ce35dae1903be8e399083f34ea4f80233c3f87f3565f9c332520db398fedf3a44d51233ee1f942381ffa4efaf984bffbeca3e1cf00cd593c4ea8432ea51578f41d3ea73caf3049456eb281bec31f1cbffcdef8d5bbf1173f333efddef8dc3f9ad58ec86ba65cce1a50f7e82b437d62159b42a6869f203ef2fe0f54e37fdb504f80fcadc5f930c7c01b67d627f4bf6ca6bcee83c95e8e23deb830dfc9acf3f38be194dbcc97b21ae2c24cdfb7bcfa8ba85779617f97cd13d458cbfe0763ba32e436788ee077a28612f5ce59ffbde07760cbcc2623cfe43875fb3be3a75cc67379b0c498b20c3132cb2beaf967fc50f48891fd9585fdee88ea2f44fc8bf727323c896af0ee70d3fb18efc9138c91041462645346d79fe911a7733f928840bc81e9fc0199f7bed8bb7a0219f775f5af22b71d7a1ff0dc6f0e0bf03df378e3abc88714bd23983e0af915dffc9ae70b8dcada47fd89f77dc133e139588c476efdf653dde91be6b3585322c6d97e3d8f538a5a5de773f924f33cb330494d71ceb989feeef0f0f081feb3bc8f370de00dd8441ac8518fe7f263dc08f4a965e988381cafd71e893e56c347a8e7f5fc527e82fcb38e428c85c8a7f013f9c6f834cf8b8a8fcff7708af14e5722024eade0a98cf7cfc097fee0b7c04b674910887832d640bda4586708b94696313152db27745cc8e21dc738d7e1949aafccfe7d7d89f12c4e8bf4e1339ae13a2fef3f3156c057550f82becfcaa5bef4a6b27d4452f32db0efea4bdc3f45ed1fd1f1797edb3b3b82d908b10efdb9822bfcb2d289a119dc7fa2fcc8f8dc1ee77edebe17a28dfa7c5f3bd970590af15cf82de8753c76ded6017c4dd688f3fcceeb9fcba58d585b8a789ea05fc638cb0b8fc7ed0b91f70032d975eb2fa2e70fe3c32193171053eb7b697d64f36cb96d5f7b2bd2c717796e9688ab711e462d882352b582de69b2f6f8192f73c903d041c2e3a42fe0e7e6f9c71649bebba6de0ee33620e9fba272999c932f97fe71ccbfb5267d4f94da15bfeffddadc07cb738e792059f644025e11812e29f432a6f3251ceef2ba46df75257ac24ca487bedf08fa3c5f449e51205916c53aa5d949c4c8b62b8c83f0b8542031395d725f755a37ec37cb2781c0a325c4508e18776e24d1ebb0af8fe1f2ca1179584b38a30a638e105389b0a725e8a2e0cb0d92c0407f1abe135cbd43a47befac2fde91dfbd13df9b27a21fbec370237df70ecfb5ba7e27deea8188c362bf3fa8ad08c613936c5c8b1ac49adfd79909e8cc79ddebcca23680c762b3e69d3eb486d817f73d80ee827a618a761deaca2047245fe8c4daa54edce7cb735ee84dc518c195eebac59c13cc09e134d9e7bb693eefa704b130c2f3c17bfddbb89c8b9c75d2178021fbcd953186f782fd64959ef7f3b864d3ebbb93eb7df536c0bdb950d737dcf77aae0af3d337915f0a31983b7602f03547e4c2a6923361f6d0ac1d1817b4637ad80b8cf7b83b1dbe51e299457ddf367221b7cc28eb1bdbe8ae4dc2eb40d859a00d645eee1f7312c4f93e083898d7e70b3980c867a785f50e8fd473dd47c3e760cfe7a6f3486ef923d7ef657ece3cb6438afdf5d9792bcccda390cb86fc34f1d0f76f8d32f3da3e49a53e871e6cac78abbbf2bb350a9dd10bc0df61b9a4fe14c7f2ab79bcfa629ec8275e1c607d25d761b8ac38f729a58b6178cbdf9f256e5bd7e9e29c5b1bb46be38e7d0c7c58df525f0a844f06fb8c59ecefa54f4c057ab5788f58a306f95952bfa7faea0c8136cd1e47aeec64ec89476aa4cdea9a36b11715f8286ecea7f30c3126fd80ded9390489f60e1e25f4b4e27d0d71cdfe077c859f475f2f25ea3830c71673bf5f444f62ffdc2bf80832b4e75bdd356d403e71b0103541dcefc4e8a9e3fa13af0bbf8243c4f525ac7f0a612d6c3c0bfa5d430e11f4b9f0be06621ceced7bbdee5ae09223f2e17decf58675abd0f756595b9013c77b5a5ef238fe7e1ce259984ddf5f36807c59cc55e2394306d3cdb82f97e79bfea53d2d7d529e02513fd5bdb7ff5eeb39e34b5ffb1e2b31efdd66e698337fc1dbb42bde26fd386f73cdb75f26977e1c4f7bdd8af1059bf4bc8fd9ebdab3a85521bcc7e1599fc5fa38e01946c0de0d3d9c370a61accbb3a5e7da8309af3985339284ce87b9bd6fbeea44f7ce82e90db9399631af2bc2fc1ea55f2fd8adfeec0aafe842e007d43435faecd4f71531385ec83d5f8c78af97b824973815c4224789fb3b35af76967d8d159f83ecfb35589e46d5c0caa82fe898efb9a87bfa082047d8eb6b80106f539f948bde3705e3721c4a19fec76b90f5bd4f37c01c57ce5b979311a5be245ff2d6d199b75adf607c7700f93f22d7b251448d79f1de1705f11066cb60af68cad739ecfba2538e5ff405f21cbc07188bf789b9c2f1ecda4f195dcb6657f5effaec1e44dd66c5f3c2843ff4f4893ff424c667783108f8ba85ff2d3e1aa296ed9560afb57840a05f33e4f04591e663de76df8bf2156baa68d29868ebeda88e38cff55911e728be1121f779bcb46c7f4c47732f64b437251c774d09ed9f93afe0fc9166f6fd1d56da07eb2607a117a5d2f888674b5dd3effbfb14568f9760aff23c3f67fc2cf7b2a8f325cbc9cffee2b7fb3ee107c107822b7ff567e7a396fa5f91e121af8315fa9e7fa5ef61ee36da8965bf0ef7e7f5e2deef24c628c8f55ca8cfa10c85dc0f5f15fd1aa0ce255df5fb5983af85e712f7fc8432bd827f5f6aa05bf6bc5ebed6373657be6bb479787ece850ed716e2fdb8d151beeaaf4dff0c9b3fc63e22eec448c1bf86f9ef53cbfc41ffda17ccf3f67ccf3cdcf8d7a46fe8d3e77d2984afc0c3fcd22002fbd8275f0e50df51a8bdee2edf3f23de4bf3acf71d835f05179e6b78d8e452c07d4890a7573f10ec158370ca3ca9167e19deaff095d4304e87f571f253877a47e241ed9616855bacf326df449fb929b90b93c6a7e63e103422fb3730c1fb1daefd5e480b5fbecb57662087e3be3e19eadf0d627e01faeda821ea1c039113528f8fc28629d10742e3c6829e18e5636f2376d776d56d2c0974262edf0cbad8f63a38c41db517b42f64511391491893541ddd13fd8ed540ac6f1b404f4287d996b8c74170379ed4cb8ee027654783f0de60ae5c9f874fe3a175ce031bea973a459004d6cff0fa54f8bcb0a701e49df13d1e83b0d731de7a1b94f79b2dd41e4778afef2bb88bbb5930ae65f17e17483f2fdf3f23bc1f453922fdf739feb49048af3765b5d093785f46ab10bd9489bbbf95e13f05db845ad81b52829c4681273cafa887ade81b749f360aa08dc50fd2862468e3ee3930581fa1a7b9b3ebcf819f3f7debcfe1231f490fdb52e0ff5dd8be92336c8bb36dbef2256b13da470b6b1e986e6e335d1dfd9b952f6255ca509fd8eea6a4d48846187fc43cdc48e87dd827e415fa601833f4c386f667393c6335e4fe6d4eeb11f4b7005b1ce34e0fa1f07f735c9bf31c30f67b76694f087dfff2596a9e825ef7c0be29e7f822f4c2e27d4cfa7b27440f606e43bd9280f758c175a8673f3c8fa9924f63564b8a31fc8b984297bef4bc157202186ef3bb393c9443f7f6e4d6dc166467ce71016c8a52b9882560cf420fed38d015710eea93edc3cdb3504f29cdafe73b095f411f1b803c9bfae1b2af8924ea8e7bbf39d85d7dcd90807dcf23d85c0c7f2f6311c21691e6626f9cce33733ca0b7b1a6b8b179beb5d9f7b8e3f5b44173d70f3fe13d57252f9a988d919bc1d83f1d4781bd3503c4b910646e3231371bb70e8cdcf4d156b152a80bf742b40fb5c988c739b5c9c8834f1e37e474675cfdfeeeefa1e1d3e099c386361ac4ea985cda1aa46b7a3b87ed9dc9a240b2d2acc6feb910dfd9fa8b21f4938a65512bb6c19a96083ff9fd4413c359f8722f47bd67998f3709209724f564e13f1d3f604f9114c73bf86a40fb7a0df455614d505d8ada44d5c267861af64b3a518cdd1532b9ac1772fa5c5dec01904b0ef45fc2fef13ead555cc3ca5f5621c62b50367896b88749f81b730b6d96089fe5759790ab515aa2df6f49b19f9306759781a83db5c43d73d07fbf94fc8f615289580af00c6f17083e191fe1de046a8a67bd1e7eab1e7e2a0d7bf8893a570fef621a61ac5087bee5e8933a09df42c969302770b70dd616ad7bdd07eb1bfabe02a3d2f2c99781dfdfb3546a39de35949b01f44620bc2f6c75ae6f25ddc55d432be873ce6dfcf3dd407163a09ff888fb3ba1ff84bdb3055d81c3cd429f3bac1b62bfe25cce7705717a37319f85c817f3636e20d4b789bb36d85805f6aa63f00ee2ea3c96c8c710f76c9dd7c565e733e842bc2f14ec651dc2d9437f9019ce5d32bb08e431e4bde3386ecdfbcc8afb978ccbfb97d28bfd0557fb6b3e82d5fe627ff4727f29c13e6dc41acdcef0e8a05e19e6167d0dd8f3d0273885b993b579868727fa6f093d0deb8130d61f1e4e81698d8a1e1e8dc83d021d38b14c97f857eb127d3e5ecd92f7687b65f069d789a8ed27d8cf3c6f781f792be77df2af7f63762cf4751c5fdd9b3313fedbfede98ade6538bf306261bb246f40d4b23f07d98aa900339d4dff4f704f9a2df5e6241cd5c7c1c078c5fc4f238339daf14f3f3a7967be58b60eb2aea7ecd0fe4d4f794dc433f70fa78d3ab6e297c8afdbd618c3f9339e638dc9f6b4a459e93ccfb13865123eeb91a217da97e5bf1fb3a784e18f495447db65953debbc20b45bd08912c2318a589880b5388b96b05191f89e88129fb5ce79a12e741ac89c98102eb335f1becdd19a14f41a9986d07b5607281b546d5e51c7be8090d3948589b3881de83c11b15f74ac933a0d984edbbef8f4bd00e365ead42c02286dc61f3e02f4be4e575077cdedbf13e71206b92be9664e588f5ec29e8505e4f4bfc8ebc21e0733b0058f27aaa9f82e537bae8ef89926f61e949675866a2fe2cf1787cec0a9627b4d1a437a147a53ef14c01df82c108cf21b3dc1b18556718a956dcdf4dc663609730a29b0b18c53d3f5c0c31b664a95853f9e62b43ec5dd5e8a574aed1f528fac2ba3410759cd8f76792d57ccf2fe26e053f29a17f46bc85fe1984df8b057d60d1571575a217c9f64817901f531247f0f989c8fb0b316e1a249e0f3d0b183d12ac55e277066a6142c1be97be885ab895bfc4fb44c8f62bd42b73fa7cf1c97686f4b4a2d86f24971c85ead7f72795e8df704dd117738c7dae19ed7d881fa20643c472822915e7d3a07fcb2322ae1c25da8cc1df95b6361bc3adf93d0306faa6a1bf399d63ad19c28dbe71fbb1309d0a63be7b8167a93cc77eadfd1d26a90b77f68d18bfbea5c540d47024a2979f391063b916e2ac1c089bd92b2cdedff210416fde7d64a410575044bffde6887de896a23f40ccf301bc83dfc2dd537e3814f4b38e75bcbb41c2da5e5a1f015fb9efcde3b5c90c3fa14f874516a2f6dfbdea51e2a22e90da6bc4fba6053bf04dd4ff11a897035e4c8d06efb2aabf811fdb5b4c30cf2d8c4b884349ebb7334df35a0f8bac843f561a08facc646ef78abb8f34bcb763e52f4b22fa79423fe212f086dfad58426e04f09b07f4a73a1905de41fa33f2ce678431461235027e32e5fd1e3c52dee09327c91c9fbc5afa5bf85450bfbf73d0c5fb90e2c8e27c2be07db96ff916c5fa1e9e277a83ff658cf9b8a490aed75b9a031becae87bfb5de92fabc4724d3014be976bdeb7ebdbc5f28f49f0d45cf8973afc946f04ddedb3013b22f86bb77c41d355e03721a732bc9948afb9fb710cf51c67be48f4e0a391146d80a3ba4f906f741d0b0c098531435332157a0ff8837cb2de4d99d139fe378e5c57d8a5c87431ec66ddfbfcdc362f2090febb4b8f75fdc9c616669fc0c53f9e96f9d6146e79b4cf2e0de83c5350ff3a49e870522ef22a06341e37d3f52a037ec2da7040741c790e3ea3d8b33471d11f2dfa83f20d89bfb59e67903c66c310c104e2bc8a7f19e33abd753429ef74e9daeef0f49455ef896df35c0700674ce027a774be33d9e5186fc5205dae735bb238c7bf298ddab8577e4c50dc87a797c8fce5e6ef97629cfb0462de86ef8f623219c6f0f48f4b7f8b64c759e37ada552df07a63fa3d7faffa6332a355fae368297bbcdacbfcb2090e0ee1e7e7e91a3f77de5784fec6076cd83ada66c66b772fed15fade35ec7d1fb7b684f54bf91d76a6a6482d67b3ec9ebbd62d1e341e8d4ae343e0afdf98adf357d7dc40ce2bae4e82beb99e89942a13f95568abab788c6177b5872df9c9a8af914d499fb3b4fc3a88c7b5f05e6e5bfd6de632862505c66beedfb1e710de2a174e8c47a3debacef8bbe04e7bdcc786fcfd2f494fef966d6df7583cfabfdf3f20c62782ab3136677f864837762cb5a203fe13906fd395ef6c7726bbccb5219a02f1cfa3af8718575fb5e9fbb13489615eb97bd8031f78ed447e89beacdd8decf312dcb10fea2593c80bafdced39fe51af569013b1ffb17d787087da3a2276daf73cbe95ba85fe48c4855276294197176d82b72e23526e46348e34ef005cf823a1b129e6b8a02e5d8e73865358f151a3ec4e19c4caad166b1f489b059d83a500777e5be57f70cfacb98225e0f77629ae27eebf26cb7fcd8fb1ef4a10cac0c7b08f03bdf79fef0187aa491ed56f476e27be5b16aa85d0c4f435be44d4f09f4b10c9535f4beeb2c5dec776a4a57fbcda5baef4b9c353fb55e2e73037e2f0bc448f29fdb2fd343a4206ac20b7b85f730f32c22722e26507353f479cc8caf517e07c390c90155f460cead197bc615b136a107f5b8a73abc960479457a519f8b3af146819c33b7f35bcc83a085f0bb7a39d43e39b939063d250a6ce49f6c5dc29e32c43d89e2be0dd18f9cd157411cde27ab60678934e4091d49c48c3bc6fb2e7d52101fceebd9c73572ca40cfcd3e1e417d425d11e37afeb93c0b889d98b5b8bb9ebf93d56f2297246167e67f14c3b329ef79732f372ee07de2cbe7fbb92485c8c976444c2d809cabc427f2c6afb91f0aef4eb05e4a1e9734a5a0e1f5eea69f78e7bbf92156b4a75c0e0f4c91e30bfdc1ad6ffe92e9205b4e1377f1a106da89c2610c3cb354fa7b9a29f69711b63cbf1b76a815662aee023132bcdb177081c7cfb0cfb4c84f92f50c635378b6fd1d3339de2d40c1aeb3887ed7972df231990ec5fba678a83305aa96a04fff1beed7cb6adedb8fe7dbe0b9eca1d79825faed3d206f15f933d8d3cd1a893c1a7127e2453ee3e5fbbc279c0f3d498c787138612fec6a62201d50ba09457fc405e65d907207b141f7e89f0ea2b729ef4fc4653b35315fbbfc1a5cd755a9e1a2bf2bf2ea13e5c0a840ff08492cbc17a23c418d83ab06b0be066205a0cf11b57fee40f16e3f1f9eebefcd8635797b84eba814f7ec7629e61d6c956084774a902f2aea646301b31c7ceae20cd147ea3d8a1e4053d17b385edf3d43de1b3a0afa9e7f9c1f1257d0a5880f7338c5d8f70dfb8d9d440cd4efa057c5f778cbbbdc1c5a3e52217f21277b7f294ffdd3d0ecf94f5789bb07bf528c8d6532f61d8fd7aea86f0ab95fd93b222e3a5c2e939e771c6eeb843fafabe6f480bd5c2d3c83f2abc013e091475dd4727bfcae2eef90993cfeb7f66ac7cc954a2f887779a7b716f531c72f28b38686884533dc0c92cafc3477a5ab9c0b58043cd755e003f697bae6cbee03d249909be4dce307e7443e7aaee549b43e17de93debe03137e4f8c58cf4ef42178ad5deeeb884271f7742d05e0cbd9facb06ef4fafe12e0f71c6bcbf96e8a9576a017dba902767fc12f8e4c93ec893282017747607371ac8671530920e973413bc9a735117023177d2c7c13db8a38bfb592ee4937ff53ed63941af25f96dc3747c886b1d1ed0774073ec539c4a63913737ca6b5ea3cf634cec1de197867c2b2be8eb44ea19d025e60b9412ca4d41a7fde703f26bbc83965ae2ae3ecebb083fcf199f2bc3da649c2b2a5046705ecf68e934e4f7b6a25fbfeb799ac2ec560e6b499cb557439d6c94a46651e31df79df0fbcdc5196e21ce67f5b564583f257a71095f739035580ba16c712ef96ba443ef6d9e87d8d726f01e9458638e391fc047f00e0ecb86b88e33eaf343897f1dbf65f82ca7bbe0ba76e7c20ec0da66f59ccbc9e7578681c83fa23cff2bd8881c8ceff15ccc2b70f83d88aae50add84127e6733e6cc6acf3fddafe15acf3122ac930d393e349617af79ff9bd724d58365f0d55f79469faf02fc7f70ae61e239eafb4bf80691f5ff045f627605558e8667ce39dc52c911f7d8beb832efbd3679359d6f3cf723b174a18fe7d21ce966a8bb146af90bb4ff73b38f834f0aac7fc1bbeeb5a8a316d887952e7ced51174c3eeaedddbfcfe069538d44a58835331dabe1fa66bb86fc0c156dfff868f439185d10e1dd1252847dc23d02fd4032732c518c3331db83df8180f56044d5fa9eb004efa479adb90fe76b663a4a600fa63731e646e47f7832e6a774558467f40defa352304f6825eee3637ca790846fc8798cc5bee502fb3455a6b8c742dc3b9113470e20b7ad71a9e88fd724d87b4241dd71e5af0243cc51f6738cbbb8f78114789fcd790e97f4730c0271f7ec926622dec9e32ab565bc9a3ede81e17cc5f9b6fe52b3b1de533def63ce7942797e7e777edec1def6f5403c9fd339dcc3727efeedfc7c209edff7e3c3f34e56fb907f179746d6f8a2dfe0a1bfeb4fc69e025125e2a44e66bafd1d3fd8cfa7f357a9e8a5b59a85425f761ee16e3557bef8fd18707e5012bcf7eed4dfc5179b9b8c78982fc26b0bb87ce6780cbccb2ffadea6d608ee97e3b96d233f3c26c1683d0a31e7700af11743e49e301de1fc59f67599a2b76f149efdf3e05bf3628197682f77bfe2be3bacaf16f94d8fc287227abee3bd17147b593ffaab54dc5f770aa1962402187b59d6df5f178c811753b80f4f7136fd7d78f5d57d78d64cdc29468a079c0befd211fd94a53dda8f6bbf2dc519629ead8cfd7f29d8635da3e7757f5701cf6b3bdf4927436d99bad60bb0e1fb7ec884f78586180cbf074191edcc1c9fa0aec53cf8eda0bac12d43f40a8be24afcb69e85c735f062ccbbc13e2851bcae044f0a75e84b8bf9ae72dfdfe30af71a2d8c07e645ee27e082e29c045d08fe3a13f75e029f76b21a726fd2047ab3faf25c26bdbfcfbd7e470db88c2c64edab0f79d14628f0904858bb538a1ed0728c3d00ca46dc1fb7c5be394cb71ad2db5c0f8f40bdce59be383be11fcd1b1e77425f9b656494c721acc06838fe86ca0c623e12de0321ceaafb643d7d4e8835f0db417c91eb21c35d04efd6a3fccc7ab89dfb53eb693036661dfdb6f7fb7fc37c1baec7ddace7f453f0213f099f739e87eaaf1cb19e0ee300068fa55dafe7f167d6236a5f08cffdf236c0d3ccc1f91e98cd378a75b8b9047e882919ef6978935f24ee293bd7c51a7d4e3ae494f33bfa215e64893c01715f760a742ef826dedf99887b2e803f049843c2fbc79cd70679f3c439518cb9a5e027d804a36681f9f507c8b3f3a67d8dfce2363fcad20bab00fb4b2953cc8d91a97e96ad78cf6675676e66ff711f5306bd3046ae34c33b49e86c827795085c24bc6ed76372cee1399a5d7fe7ceb68fd79800ebacf6767d9e15c53b74fb7b8a7e00d671f30fc19aaf4df4737cbc81f5e94760ddaf3f29f5d777b0763f81f5d5dc0fb7b0cecde20ad684ce21bed0d31911f2daf2098de17e79cf7065b89b3aabcff769b33542ac4a035b365e1bb988099e79d53780b927893bc773096245f4847e87fe7e6253c59ad895bff4441ea51473ff937b14bd9d67c227d0d4b773a9feca42db04e2c570fe4361378d20ceba855c72c2fba15ce6dc083d38286df3ced86b800725dfe2ab3898fc188777cead01bc06fa2ff681d0f36d862fe621b4e622fe8578b5c6bedeaedaf77a92ebbe6e2fb76a613b209f6b1e2007bdead087b1f1174394f5c31de45b787e8e7986bdbd0fb14e66db928cdfe56839d80fac978fa21ed893cd73ecf8dcef2d3d8fc36350ceabc9e5f3f882b7be612e03e7adbc3edd96c36b1f29c43b190d52bbe2b652d6ae75b477671313f79e34ba277dd910b84fdec2bcbaf3ef51a0fbe131988c28f46d5edcfc1ef3becda20e5ebafc3d9728d735f9bd1f3aef0f0c75bc92b92170cfb921fa07c0ef32a30be8d145e79bb08fff78dac43237cf4ca6f37e33fdef32d303e9ed9e6219d7c4eb231e2ed754dcae89f7abf62ee63c48816925efc64ca891cb64139d8edf02f3dc3be9bc2ff3c0f5f2d3f118985634916e7fb7bef9aa46d93ebcdac37b93aff75910d8672a055ad85917bf1f1ef81dbda7eb7d64c4e177dc88fec721f4557644afe357d2309970fd0cb97e2695a0177548fafed7964fcbcb77b601b192cb77eecc7d0cf89de59f8ef38d3f235d3c635426cfcbb9183b9328f68b16ef1d1e02d33c5d8d6d68a61f39e6e57b3929357a39f6c81bbd9b5fbad9c7ed3bfad6f6637afbcef5be8ccaf693d2b91cc735538d5ec2d0486d3fde1a343cd2405deffc06eb50e2ed54d8e6c21f1ef01e19d0df200e45ed54c97b7b9604fcb458233f433cdafbabd4eded3b0b6a4df93d3f985f42d435c80ce970555325e2a9a152067807e0d5ef906be18daf6aa3fa3e4f15f6896edea05fbe45cfcf418d57d6f7b666765cc3fb3c8a9ef429d47ff27e8d8c86fbde63119d0a9b33e8ef2ff6ec73fe1cf43e09210f9eaddf2e6b47dcb92f62657097682c7aa361ec8cc2ddfbc16928e2a254e4d043be86b8b715e3ebe44dc4c73d9f1403e11b0c2fee8d0e62d07333c87de37702436dd118628be6038e25fa596e78ee8f4b1cb43787235c1bde7b20623f84e1dbdeafbd37bf1d60be6df0adefcdc7e56d65804e6d229f2503bfbf43aeaf85b5b08f1cf455b1e56d605a5aa60cb90f2d88bc4380b9979104f17f4acc4d188e37e3365de736594c174e558c9e769e4d242f6a1669eb2dbd88285ee41fd2683e480db2cb56ee62a23b5daed2d34ca19daf0c77a54d77a53e7e8c4f8e324bc6f359a2adc786342f5a7a2ce3e6948655315e98bbc9e2cbc5bfe12e57822651e47d3aa29b3471f7851a0c729b6c737b58a5363d4d94605da8febe58d15d6937db341caef376ddccd4202a47cd264d3c275f057bc2dfa3641617bb6ce515e345fd47623fccc7fad3c53f0dd6d6aff769381e394d91d075d192b7441f57e3f06137395dfc5306fbd4a67fe6f1b02ee363539c86cb4275dfad6fa6acbb49bbee7ee0fd6e9678dd243eee6771d0148b619d259e3451bcafc569f0b53899bb8964c9a53d3ca4313d65f160355979cb42157b1a14f9e2e97a5fb6b7cf574193affcf94ba82d736520a5f1409a34c33fd3c4f3722590739bcc5f4e17bfb54193b6969c8ffcf97471fe7e2a1f7777e0b64e174f6fe5a839a4f1b0bd9a2f928663bdecca91b3cedb62f51c6a77e0fe6e8d792cce3c1cac53fd70712687b9732acb24dabedfe7482ef2e6b82b5beb34b68787d26ef6f9ca65e3fdf1277bbe39ee725593b278b82b4e8375bef29a02e62bc66dd5cce2a0182fb745def6efee0aa5d9a5cab129ede18ee16bda5a9b422100e7555a150b4d2eeca02a19fc42ad2aecfaed72ade7f9f06c1a06bfc11661be4b93ea90ab8e549c9e861730d8e5f670398b8fdd7874fc321e6d87d3d378335e7cd98fcd665bd8c35339f2c4fc7f26f2d020b2f767c4f373689848961fd2a11351ed8534c19f89fc85aded9426969c254ef36c1d1693c5c3fef25fde0eeb940e715db49b285e579ce44dae58759a8cf7a9dd74a53e3c95f140ca62b99928d6210b075f0bf9b07866b06de903ac8bc3fb47d6f486b05c339c9a9cbecc23a481c41e34af236d5fac826eb2d2e44299bfdde243a28f77b3844af949eee9e05591aba22dd7f9f24d7247dac39fe1a02a93603f49b4264d38fecd2770ce4db1da32ba3ae4b63598b6e9264de67fa4edb179d5e59ac168a606eb5c79782cdaa13a55d672a106eb74556ffbb335d65d615bcb3494176912a8694c777f126d9bc6c17a1656db5932df964a5397f6fc716c14ca74a43d3c279b776b1eeb83b734663076eece3f53869b3296777f26d227ef8ee793d6a952bb6c5e95749faffc6da1348f69f476f446dac3f4fabbddd428e4a2a5db29e74dda6696d48f7c6e635be576b3ca17f2bab4e9b6e8d64b46f36932fe235bd1aeb49bf63594cfbca0f51a86afc572bb9d25ce2a8b1fb6b94ddbd2783b32f84f55ad4aed80c1fd71cad7e1ec8b96f134f9348b837599b88fdeeabcbeb4b5b6597c1c4c9b6391e88ec3c7e6ff1f6f26b17528ec633349bc41a1064d1e1ef5dc6e769924573319bf237c9c4d621d8b71e335a9326cc61675f8df8b63982bcebeb4bf6c429b6eca964a59ec5513d33a65b1b5998cbc2a5fb9db4261b09dc11835cc3936bd7d6e0f4f63936e7365bdc6f18ac43a2c884257b942e694d4f32096f759dbf0ef2716df4394c6e53e0d351a865af41acb8b5c81f7a66ad0bc8efced2c3eae537ece4c7ed1d3dfc3a14b3c405a58c852ae3e3dba91767835cee754b4cd2a1bf9efbec7f33b14a36af829fd2c9e76b3d6aa5385ec7265b0c9e241f3aa38d54cd9ae8a7628e7adcf686593abe3c771e734536336981adb65ae1cf7c5f26d99b669fbc3e3b7749d2ad522579deee339fc072f2a546ff923737099db4d62ce6f2bb6f69fe1077ff18cb82e539c807e6671b3fb8b347f679c71bfa75785affdd1fd0bef8adf27f1715da8c11f99cde12e4d97a6744bcf2ea7dba192264e9bdb4375da729d6438e19f5fb6854d9ba26d76e9e969c7654be222efb4d6794b4fe7b5e0efa1bc617aced876e47214ecf3d556cde240ca182f31b4c3ebe8efeec79fcf565462727cb2f29adca6cbd2a6f50d3e3d8e3bad9d75d6c2ebfe221e2dfafd28594cd51fc231e3ed3855e4ea5597dfd218e972e91f8ad1fc8f3cb64ea9d2ec26f1b14957ec7b4eaffbb2a5a7b43deecb6efd96c5419dc683a16fcb4d6a37d5b3cdc712f09b7bddeca118cdd7afa77f640f3daf603ae87439bebf4e267fefe3a092259eccf8de6b4b4faf6ab02f8cb7c354c1f78ccb737f6aa64ad56471f9561a6f9d3b4ad57b320461b298c5deb75475f6653ca8a70bf7e87656eb76c51fb99a36459b6e72b578cceca64e6dba9baa6fdb2c1ed48c56269175176fcbb6e9cad8da64c91a60125bbb59286fd2b86cf236f8a3b0875d9620cdc64e972b47b9b4c91fc843655727efe032894c99d3d27dfe7c857353b55ca7a3e06dba740f1fea33ab745da894c9ed47c07db9ca5b93f1f1551a0feab13e58cc12e79296f979cd5a6b9929e52957e92e35d69c7fcf92f1365599fc68980efa56da5fe628273663db3a96b1b919dbc7751e93cd78d434b97ddc97a703b3e1eae71f38ebb13ee0745ab4c34da16e0fb9eaadb99ebd5c57b395b7cf47544aa3ed499cb713ddc04349993e2a4d570eece5cc8fae70b1b0ad3ab5d919ca622cae8ffc490f8b89ae15e3e6b048426effed2727cd12bae6c77a79afdbb277986dfb3f1bf66fdbb0fc9d98f397ffd9afffb35fffffd07ebd94b1637bdebda24d7029afd2f8b8c912adcb12f78f52a9d6a54db685aa5533853ce6ed502d5aeb70ad8755ebd46667205d8faf0f96b3c4a927a17cb637eda62bec63f51aaddbdca60f3f6ce786a85725e93a4d980ee1ed737db3637aeb85ddb149e314e54d35043d836ccbb669ca93d0ede91f693bdc95badc31193b5d9a27c6bfafbe5b3ca85ee23479f47d1b93d9926343c8b7e189f3ae84cb33b9e8de9477724f977bf9e2b6e4c15bd60f53056cbde9c26bd37626d6a20abd2c6f87a73cb636ef6170b93f699b337c1b7d6853c0b9adcad32c79623ac2c324eef59ca31b394c1738cce2a0667274ba746e753eae07fcd01a746d512681942b833f849de2464f77cfe44ae7bbd5c7178343d152d4071b76d65bf0b97c648f59cba9edabe97b7bec27d6fcb02b464e03bfc9fb32095639e367eab5aec7f5537e666ee776693d5b923ffa7528699baee462bc6034e714e346eae93510bc4b3eee84ec9a5cf3819e8ed93be3c56101bc99f18ef772f52e1f523de9958d7b2b0b5547ce5701d3a5f6593cf89ac69e84f2bd0be38194cbf01eb5ad1593b9893ee6ebbe953bb09e2bd973c527c7a179570799a9df91cff7f416c5bac75397d9cadd652bb79a2c865b6683fd4f9eff4f9eff1579fe7fa30c9f29d629fd88cf73bb9effbd4dede6c4689cc17eda725b679b2f2f79fcf84a6e4d97d6e155d7984db94ef5a765ba745a2f4e171ffb503fe0c38cff2db78b5c9d6f0ba5aa52a623307b597f928ad17cee76ecffda29559cead9303b7771387a46b171a3a29be80fc7e7e8beaf61d27a55d1fa73fcdc32f9857ef545ae3aecbcb6b3762895f670fbd15efe0c412779af9b8ce799e1dde806009f1b7d61e72ee9298da50b3bdbd9737915bd9dc0ceee6583343588ea75bd4c6f67b1bcce47f523f87ae5a61c39fbc21e6eb2c49d9396aecaf858fdbfea7ffe333e56b3966e7e2e5ed0c3f2c133ea6e16fb1fc0b2e1be6c58e7613b4bb443cef5d6a62b6dba9d98ce268b07dfa2d85a12fc2ee0e3dcee49ecc5d9335cca4fc7711a1f953409d633c5dcf889b39ec5874da158bbe2247769e2ac53848b0f73ce7da083efc1c6cae3e1d78cc259df9edfd8f20679ecec73fedef89d4e386b879bd4d84a695249932438cde24197323d315acbc5486b0a46230a1d4e5669958fe82f8bd1e44cf69ef548e9cacfb47cbbf68d74fcefb9f09d21cd3eba89f6301eb1736eeab1ee2d5dc53fa491ffa13e9dab5462749046eb5dae0c9a1fa7b7ffb771a45486a7549717454babac5bc3e749ae72fb38cc6d6b91c6876f593c389489bf117f9ff1e3d6861a737d1d9e0f6e79a074c7667af03ae08b67bfdfb53f790ae77e217fb84c409e893266f97664385228c34d16fbf3b1e276a9a135de195fb6456bd55942bbe932051b2509b82f71da0ef6797ba1879fe3332dd3dd26715ae571b3798dd61cde21c7610760afcb5531d236692877af8927a5b1b4f1dbe33a6fb7de2cf622f84eb6f938b7e784e743dae1225783fdc4ac9a7c9436a5dd2c67e1512bdaa6caf563c7687492784dd1362d8ea1c19c9ac1ed95c577cefb3bbc98a80d937ff0de4a5ee72b4d2e8d759b2b9e5ca8b7f2f869eeea4f1da747fd69e91a5ae3da5ef567dcec8a1195a60b799bab6fdbb41d2ecbc4c35837d2d90af84d615b27ae0fa30fe166ecc35817f498221ef93bfcdc16f651bef1c79ed2f8589576a3a4d1bdb3e6b8c2e87f0e36b776781de11ef5017eca877c44bb699bee672aed5e2ffced6e2277697c6c66ea3f85cb4f977c4de6708cfec7d7fe79bee60c0b856e981edb9fabe2ec5fd959d9569dabc523c735c363f8c170eee0dae43053ace164e5ec4bf52762ace1e094abc52e8f9b3ab58fcdab626db2b8dc4de286d17ed7e71eac24f43bbd9393e0d35a9a9fc758c3c1399ea5cbd2ddb8f948daf5fa25a317f55e0cac1a4edaf3bb93583eeba4098f7175ee8ac770fa77678babf918bf9272457a3f673cbe9af3ac57bf9b777135ef59177e37777ebdd71b5fddf9fb49e2dd8f415eadefb0cd9377feb9777316d7fbbd8ecd5c3fd7dd79ee74e7b9ed9de7605ea2f5726676f6337e4cab422e25e07761f2ab68e52a37c4f7e5d93f673c89f1cef8bcf2d459f2f447a13acbe98a9e72bde2f4968d02a918b98f93d3504d63a72a54af2947ee2e8b87d22c6473147b3ed6c8dd67a0c7ed41168eb7d4aed6f962a0e64adabacba1f212b93b37f2f8b8cfa1d6e6aab39d25fe1bc898729fb633e43bf5a64c9ccd33d0ec5b390a0e45f7b69fa865336badae50a8c4fd0d6a504d18ff3b0df91e8bd370cd696a3184dc9b854c32bbd94d60ecffaf5c4add64697638c73c055fa884f3f075c26fcdd0b7fb9c9e659a7c5fe6f7fa2fc4c61eb324607aee527c5f2ae7f8a52bce243ed37ca19655616cbba2751fffc9bd87b80e84c1e9459d0dddd3c3d19539bf5c8fed94e34989e75d2ac3365d3a784647b9680f703e6d259523ad9b2ebeec4b852e6689d7a549d04dda665fdae62e579dd584ef35e8260ae0e544c24f1abc65f1c0296dc603dd1dccf123f890c26f89fc74c67fafb73f3ec9b7ea65308f3f3219c8c68e0fef6c1f77f974e8f3b7cef184ae54acc354f54eb36efdcfc080d08772e45491cde745188c7f08275dd8d37a32fa67e832482aa9682d97f3031de8f387f002d7f1f7795323cde2e37ad6bde34da77f8b375dc1c0c4f59cfe535e65bd8e82d38c1c399fb8a1db7f95778918d17bdee5fe5bbceb0a37ffa3f3f81de9a3fbb7e803f85470c3b3ff1b7e757f2dbf87fcf08c7f497e50a74955ba9925e3fff42c7abff2e2b7a20be9dfa28bdf429f22d7f2eadf3d830fed0af95fe34d31adb3846effdb33e0b9aa721efe5674f0af9fc1ef410f7816bf275d28ffd69910856e33e2ec73fbbfb52fdeafe35f95d56bd413decbea7fcbd6a35e93c78d9e2bc7fab7a08f8fd7f39bd815c5bf65577018fcb7bcea37a48beedff281b0bdff1e3685df0e37a9f95bca8b877fd907f21bd004f8c6f899fc5ef6f67f7216bf85ccb83c93df934e06ffd6d9f8edb19a299bff985f5daee1f7901bd3e85f931b9b59ec7dfb3de8e2ee5a7e911e35e6f9d17f21be37fff46cf0fbbcb5b669ec6fb378d095b6b59b2904e8b111be26d4e3fec9b34c9c7d1e5bbb09cfb5fd2bfedd7f0a7e1ff2fcbf0fbf1ac706bcfc477951d6e3ddaf855f1453a96887875c39ae8b9316a67129e7f6cfe2e2d96ffa7760905fad65e8a54970ca556d9fdb4df7815ff4e8d25fc913ae726df7d7b0927b585df086cfd7f353b2f2833cdf85867ab5f773b6d7f9ecfe8e9db5bd3a13e96a8d679f717d2fce661e7fa51cfd31dc71eec4163e5fd7dfa02588f3851ac497ac9f8b37f4e7f8b778f2a7f87b1587bc92b591f52be36f9fe2d08731eb4fd7f4533ad0156e8c4dd8ff6fc7ef7eb373b9ce67f8a574c3f3597ebbf3e0b92d0fbf8becb9cd77fa657207e8d19ce3f9cf853efcdb9dcf55decd5ddfd37f795edfcbf9f865e7f7fb9fdb5d98fc26fcee5e2ec2afe57b63f3daa6f88df4858ff30cffc373e2b9a7f51dbfd52fd3173006497fbbf3f1d2385897b1f4bbf0bc9bf5fc52da89d2585e8f4d1e77f8fdeca2fbf1dafff26c38bcdef9e17f19cdfc9ee772b9ffffdc467d172ffc65b4c2630fbfb19cf93836f21fca990fe323bf5ace84bfafbfe7d3dca0ff5277bbbfae5feb9f633c3efced69ebccf7efe6c2ff973eba4f73577eb97dcb61f2dbfae87e2bdde1ce9afe153feaef4e5b1770f95dfd0ff7d6f68b750ddb5a66bfdf59c1ba7e17de87b1e67f83df617ec16fec0ffa2407e03fd5ff18dcb67f99769ecffd881fddab7e164f7fccdae1c324f1d6af6db34bbbf5655fa2873f63679f8e9a0ffb01a6cbb49ddae9f2cf787ebae9d7d2b9ab77fd5a4e37fd71fadec3ffeb357458fc99683fd5e7e17f303b2cfe8cfb3ee88287ac5f5bf288bd21afbe9b2c45afa0ab5e3fd003437fe2f5f5bc47c7157da49ff4c7700f69eb1e67cbe227fa63dcf45187be633d3d79c65cf6ba42f9e0ae876b1bcdbace9ff97fae1fccf21dff67e75e4f154f2e56debe58ae0f39e6fdf478b0fcc9de31ff5caf6bec83e7cfd378c0ece684487297cac1a0b0c9fc55f4a41c69bc1ff94bf8749858f89d6dd5a9c9fb7bb2efbbfefb91d3e4f1504949ff9b747ec7dbe7eda099a9c114ef07188e0db2113d1a53bbe966ca7097b774599ad8e7df90e6dee288fd1735af504a6f160faac0b6bacc76f6b3c4a9fd38a88b96764527cddda82af295c4f6b6ce13d8dbeb4973d833513bac53223785ea55a942e67f865a5bb4c3ed58f4288c87751a1fb91e04cfd06e22355a6ac37aa398768562ad527a584ce5e329b10757739096f2febe7f719e308de57dd9d21f9acbbf8153ff7ca80dc7767aca1589f7309c2c78cfc526071d029e49dc7d486ece42ead7c2fb5216cd7197c532c79df168330f49b02e948fdef9e13d9a59e22d7365b04b634fe2704a3c2f4dbc6e16970dd377939153e42df69dd4b53fa8ecb13327af89d67c38875af27f51e2ade8a8397c003386dbdf5f2f1b4b6a900efa71383c78cfd1503367495085b6b54bed63532c8fe465f1341ceb55cdbe9f2e34f21c3e0d5f169a922b4d7df93ec3ed42f5e7997877e53e32d8c64a538fed6637b6cae8bc07e9ff9b2edecd25e7ed7697abe5ee65a10d196dbcaa12c0ace1f39ce9794577d80f675eb47495313e9a38e3593ca8739b9e9e6d41e7d4098cb7f9259c276d4fdb9bb15d55791b6c981c199b4155da563fc68b798736a28735eef99f59cbea8a9f7c6f3df769e89f5e537bcbc70ee7335dbecd03db9266a45fe7978f698dfc9fe708684df0e9b19dca790bbd44192f4d15de47ead4e3c0a2da8a7584c47fbcc2997050bfa72ff77b30fb94265f1635d224ca0e5d6bcb78b0e4bdc416da298dcb35d3bf8aba9fe32d17eb218d395d5cc9941d5b6b145bbb1909aa42a916b9629d52d3aad391d314ea77d63af2247e7f47d79fe7cfc18ed3ea0dfcec819cc74e532c3e3f436a3caca748d3e3119c19c834f18cd3c5ca05ce58d2fc25d4dec4da71bdc3efd16a190f7e04a6bb3296176932fe604d4193db544a2fe62fe4edc5be83f2ce7a3669e2cf4bd56538d5cc1a6f3f53b64da96b5f388cec231fff135ce8d278509fe5108373f13836878b8cc929bd013c5a881ece955a9c2ebfc39ed7aabb2b1466af55cf441a4e272b3c73a5695f61ccf53365eb059de14ffa6370edf58aabbd5567988db48adff32470ec74bc80e77017a95a932fdfe6cf7a3d7f891ee6653b5ca7faf5333ed32515f238d6e7ebb121fd9ff128dd67b1bfb9d8f73eafe9a968991df9f47629279ea3371c53bbe0e7b0c72c9ecd9f4765f79c5c9c31f4c23ea5492017ede0621ff2c59abc7dbef2a4b17ddccf98ae352ad7791beccbd360932b5e05fd002ff1e6c8ce5b2eda1afa54afca6eda5ccb4078ae69c77ab5c91577578c985d355ce6ca01fa6f5ff835b82f66f46ecd57e317ddbad737dead7f444f59f8f48d3fbbf8b24ff4f1fcf9a4f179337bd895fad3373cb777302b55de277a9726c59c2a744194e13253a8f4ccc7acef3dcf6c9d7d6153de7b3b57062fecffb0f7ab6796b93decd290e9d3fd995fe2b65a9c06fbbc8573c6b1ac62e5ec0bdce7fb67cf7ac94bf8f496868063af17735f9fa7dca51dc824c1a7d93c61e3bd448bc16196385d1a56cda465fcd35c8f6dabe372a29787b767f2c4ec87e792df0960ce0b7ebfce619eda5fe6793b9432f6f7bbb5701c60f4887ad1d3f025926e6437b71beee000fc2b5a2a95897305e377380038c3e45357ea677ec6f67bd6a3bc9cf1c7c98af3def2dd78b0d6fe5dde17fe86ef5cf372e0b7027e9fae6f84fad70abf5b1c16f7e59156152bafc1be8d6f7defd45efe685fcebca7befcfe8f6b3ec0f7b84f799f7c66bb02dc13dd4199e070bfdaab7c8f4f703ec8e6fde3827ff63df699cc10eb4c4de1efea650db7ff2e7bf27f673dd887bfbcb71edec31fd7b2cb6dba4bd5e06d6c4843662f7ed0b77f3f393d2d8bb664b66f5d26da268b3dde0b3f8dad65a66b9b3409785d4b9a54cb34d118fcd705a317ddbd778f40bf5e4e57f6f0c474cdc23e563385bc4d4e559e2cbcf2391caeb8adbdf08f8e61bdbf9769245fe111878918af3d36795b4a990e309986b770807f93d397f958754ea9522e66ad55dd592bd0741c18fd9af19cc27820f5f3ad3c79c6e4e5627e7c0e0f73379adddc2bc16c43ba2914f2e93abdd3c7ebccd5f179ad8b3bf73fdce00fbf43cbb64e85429d7ce5f7675ea87451a8c1e9d930d713fde9e82deaf98b71984f99be61680f693bbb81b33467f6597a173734296372e804fc3e489c13a731b106eef7803b01b99d6557cdabdefbc3e7a5d24899ae1d8a962ed398df37c36ce725b39fc726d9a5a787f9b87b3aa4edece0ea0ff340194ae311f4739e2e9e6ad1aff7cff8e91dbcefd199e07bef684d3eeed873d73cc4dbcc12af1b9b03ee4f9ab5c35371bae4090f8f63cb6b4ae328eebdf83ffd1aeca15c1a6f73a250e94277beb8b703f9eac891676ab02f1673ceabaff431bb5a73df3fa79341539eb4284dfcb7e7e8ee73fb32f17bb9cbe67dd6eb2b5ef327bf6ffc6cdf8f6d0bf5477eefc6b61851298dfdcdd81e2e0a859ecad65ae4ccee332fffa6de2c79bafd8eadebcaaecfe3e1e2d5e2facbd99761a5ebb235e7e9cad9e75c07617f5baba2b50e99cdef62f9e3d6d7125ddc51caf150bcbb78d84d14799f329a3a0df139675f26cedd717e810feac647f3b7fd33c6a7be999bfd0477fc753fef87faccaf44f18e940b7cf9c8c6ffd1f9e8a53f81feffd87bb3354591ed6ff882fae00f985625878282906aa6a80c71c6900568a0ee72c4abff9e18806052ccaaeaeefd7efb80a7bb520d6258b1e6f55bf7d657f2853ee97b2a9d4bb3ed7169f43bd4e8ab3783fe16ec1d743e7cb06c98671c58f00046b3bd9fcc0e745d4b5725bd36aaf30e6c638ff6c41160ea0857e2ab34673bdcdf03d6e74e7977e627afee311fa810d13e91a59b087a63a9719c8e77e81dc7b355fdec6f67f5b357f9c84b9465a08a69fdbc713f46dca3a8ba47810a4f9f56260bb2dfe89c6bf5fb541ea5f437be97501d7b648e0ccefc31e7c4e992d77f1823539d9be6d49407d8c6d10490cc84b9e00820a1bfcd7454c518058acdcd3e9623716173916e8c56c4de89670958079b5932e5a6942f653e4163658c0d531c2eb9ebc70a8a1fa6698c971c7c3752fabedbf4364b8c78663d7a1f7c9f73e26cb1ea8f91ec45726c6a4d5fc030484002c89ec6af674d2d7a2e05899906aaf992e9419a0a6f04df1be0dfe47ba20065050dc552f2798e8c1590ccd57545df7541fc56930fa53d7fc336e1ecf0361cbd4c65a4970c2efae212ce9603f8665ee2b7459ff3382493c33dbb27e6c65c9823d329d6a60ccd11b48c05d993e9385a3b6b239e2ee9badae7a92fa1f86eace07831d23f5671f6fbf0eadca2cd4c78f87b741e3f961b5337b8485ef21a39cfb5f432bd4d05a06a7ce54c2cc3d4578619fd5871d0c5f31d8eb8c6b5f133ddda983fe6abd96a610205ede3743d6f1f0bd348ffdd58cd56c60ac9dac1f57dc8cc7d3ce31ca4ebf30caf51b08d4c6950ecf9c4af7d627d25d9bc7c213afb5b037a89b959ac8ca1ab2ae95c1079d22b6bf052ffdd35f27bd3706e9b9cd7cb7ad706d91dcd65ffbc24cfcd4cffb804967e70ad69180866ec531b3d8f6da8e6e63d96624f100fc052ea3db1c818034fd06fc0d605c7d20fc0ccfd39bc935cf74e2a65fd082018f561300ece7e72b480addf70bfa658caf426b23f30db9b8ef3b667d08745cfe925d2ed0431757980ec528c475fd87584ee725ed379fe4aea08e1af8e93f7f8c33c7ff95a8c7723fdcaf0f747d2d9c1bdca40e4245798ebac6333f654b8d6c6ec5a7fe3382b786265c4c7edaedefacc9923d9f211d806235ba6fff71e633df615d920aed5df7eac9f983b91434426a2b971588715c072173a8978f65433f29e196fac43c732ce5e72ed6be38c6efab7f758fa607f87f603fb9312b3d7a0fbeedeccee74eb27660454f1e48d3721ede1fead41c7cef76722d7e7c29ccd5f2df37a6a0c622be436e579924a3f81655efc548a34f57a06a97406b1d47355852b64d588cc7f21dd5c55e43d15c7d704b0b884812d6d1cdb80409662c79ea1ff9ebd583a3a563fb7b1b14d6b29e81de8f729d56375431e1c3f729f8694fb323ad2df89e8a6cac9599179fab75db8647fb3e223bfb0d90ec51d7ac9eda78edf27b6d85768ad88c737d2dbd2522ef9f9a497f27cccb2cdf951d887bf300691ff8f68d84fa080ceb5bc16c63e7eb4d7f769b464ef7dac3b9ec77363763c331dd9a61ca26dcacfd03949e8bf41b2faa6a9fad913aed0b1f01c13c7bade003bee584a5d1b101f594f8f7c35447ccf427f9b6c82d4b1a5dd6403c7d8f61ddefb5db477705c08dbce27838c753271efd6be6e0a666c7057328e0ad7fead792c3f314f4035531cdb6b196b557c87e5f7c599d37b3fdfea675730d3c56afe157f06e601c4178bef75b6a7e57d8c4bbeea7a8cb81c7b8d321b7d224b475ff0499c88fa45bc4d1e53c7bee5b745d58fd818eb2dc54e7d36bf647109d13824ce64ec5c1bc7264ab6318e61a79baa4faa31bef828beddf0ae8aaf60fae57535e5fd34ef6183af20a531c1e7cfeb7e2e51c39a7dc1e4eec4aee9fa61468b624596ad5dd55cbb3da4eb46305023e8c7ecbd7e095d7b1a3ad6350596b2f95c4811a5c9037a3fb05e7279e6b3fa8d4c644dc133a93f0dd6645216ffc0fbb6a2bd9e900efca6ce0eae35fb092cb2a78c4e5c8a2fd7fcdcc5bee463cdd17f6d009b7df8b4772f39cf8a8eb622f1c3ca5c5a7bf852d98d7d50881f2fca7b89f33a0413f1834d36a6360ef03e3ac2758fec22aa0f702ee24d8272048bf25e561f3aef35d2effc0df1b330efacf9441be22f4d7b92fbe49b7ceee4793d6be300167b33c7eb7316d2c6b540026c1df732263d76ef8d31e3bcde207455a407130c01249f307d2da433a549bc073866569c45cbba305d9fbc1e92c5c6ceb1e721b08c2d58e47ad30658200aac2be7a712eeebad8d8d338e11ab7003cc4bfc60af5360cf90fd9a021becbd9e79a33cfbf63636d2c0c27703fdb7b17ff60fb3d9174fee05a1ddec4e65f721a7bb2a1de6674bef7521bb232a971b6c4332361b7f666ddbb742ff8260c8d80ef1e61bcd1da8c6cd385785b7c93680ce96daf623660c99c6b2f2318f0dbc481a38f4aed67543f3025485437a9963eb6b578ea8ed1975e60bc5ddc6362b92a7a531265ba41371bbda7e3e9a5b169b3573fb88bd7b386e5eb5c5cdc44c7d019ebdf52ecc74319a73f1bd99161edaf2683d3cd2f3187a297c090d31ce065e57f34168f248bc376e7b3c54ea21be170890437bed65f34d2fd88f1358d70d96bf633d0a52c2e7a81ed8140f25b495cc0ee8bca85f98ee053c7b54376fb9a7f7d737e46a7e92e26c9a7aab53b9827438f9fe7b03554983da779ae36e1d64a314d8c6399f1b64d78f733c23f479e3d9337783e80c8fe525e22dc0367a5e4fff99bf331e441f4b2e746c93f3f886fdaac5d24bfb51a5a1a6f119dfd19fa6292a1f52e9042c7383793fd2950433b7df916def97c70903011e3c598a01926ff6ece2f5b0ed1e795bd8736cd84a2f0eb2856cbd41bf0191379ec146f9dced4c444d55f8401597399d2b394f78a4e76c73bba825aede95e62bdf8bfc6d3d0e4bbe53ce49c8e520fa7bbbdccaeec0ac621b0d719e0dcd4d72840862dda92cafb27ca5861c0ffa7db979edecbdf0187f09e2d5f775c9420774b62617a8e2491bcfa24f7b1a066333f562691f60fdee057faea990c3710d553960dfd77813166bff03fa9a4a6b3b62e9e6d8f0a68d49fe8d6b63dded80e7330e10ed63cc839679509edce26fc43968b31d203a61eb1ee5bc4135a280eaffc5f9fadd686821417487aa7c0d3f24bfeac15cefd0fec3fd0289866850c667ba477be635e493b1f7a38d96902c2a68b8555fa76b41f626f6e774dcb37b392adde815244e57dab84ba3cd394a8f74addcdf549273b91e942219183e946f41c637b788afc26f596ee0b48507e4f9304d72a942872447adf091cf6d3d756c9c4f2af95b3dfa5cf471bcbb612e551d41c864b7cf29a99f28fdc97676c63c551d1d34556b5c2799930ee999c593e47a7604e50010add952e427ab9d53f38170fbaa4f84febe3607eb2605ac0ff481fe52f8d61ef8269cbc468ad185d99ce352be241b67efdf806ddcf1934411500d64a7dddebac919c697279ef29c983c5fbc21d765d16a0f6119a3d975ba7355e546fc5ffd535d9e6f6a7e419677b0e3a07dbb33ce23d9df491fa3f9920d7992151e39366fc0d639640bf9c2cb3690a59baf9a6bd7027b60cd4307fba9c9f8c51d79093f2d939bc858af5bbbaa7846b20bd9fad85f2f98b740b9c79745ce55cd341020e26bbd5c2753953ee251eed88068bfa80f01af978ded3d90491df4ee4cae94f4af7c1fdfe4aa7fb3a2f334f143e24f213e3501df1d48e75fec9f0ace3ef50d8104a67e0fe7911ccbfe95d2599f883fb2bf05f69ce60fd76da137ca0b03abbf0116d87b89b969f195d175537fe87606039a6fedd5edd24353eca5125fdbd57db3cc3d25efc435201eb5fd027920e6f294f8784f4030b9eef7e1f5ac8d24ce4ff93d10fa673f311b7265a91fcd9eb377760fe4963b4a72e0cf9eba3a79aab87d532e31e11f03886c098fc484fa9a4aeae42610d7cae27d73ad7923ad3079e8f769e6ce5a8a3deb4740cdce1f6eaa7a02ceb310c40358f40f9ee0ef6c99d82b9a6cde704dad6a6e26724187eff100fa7c690d07ed99fda731decc17a58dc1deef999137267ee8ccffe9f4ccd44fcc5320b37700e9cb59cf290881f245ff06ceeb96da68b7e59c599d92c4aaeed901741e1b3f517a8c3c693d7356ae320fb257f17e7816ce5fa1771af3bd9d630338914b9fdf7c5559131f6a80f969b3aff43eed30eb3d51db959b6c71fd7ff8110f6e6d7a53e7b1597eb2d5a19718d04fcc74920430185da34f4be40339dca3777ab679706ce3ecc7fd9b4f62de5360f5b7811aee181ac7b80ebfd1f62ce904a53aea422f68c9fbbcaf1bfc19de9cf9bd831db07598f935705ee902ebf158076de0e9cd3a7b938e5bf045a4db9665013ab7765950a57734d741309e1e5d2b38793d1dd66b63c28839db9d436379987fb5d86d0d7c6ce8585827d9205e8074522fe7cb175c474472eff9c897fbbe1693f85a138fd4581d19567972ffab7e357cb6ed67ff305e45fc38f7ee229d47e60ff3eb74fc757ea4225dfb0e3f229fff797eb4e6c2e96dd0ccb3bbd05b9d67a700dd375b877e8ceea731756c780eecf9ee6dd1bfb916cf7baac2919a1109db2d4b5a2fc4ea0ec4ce6cd4c75b6c61f2207b7c3e366e130b6ebd444c2bfa5db1fe24aba96d3dc70ef7ac613f979ca80ddbf613e9a998a6c240506e54473d38b84e8fc44c4122a6d9770a5f6d61573ed42b2bebeac04fd8b33b31397527a09a07606779079deda52cee50ca45fac579157675dacff8513bdf6fe23f0d7a662697b02f5abd8440553807e36a69ccde97f5b5b6793f111bff3dfa5441a33d6cc721b9a55ecf9e70c4b9afb80e0abfbbd0ff26b21407f61cfbe000c600cb78bbb999b4f9dfb0ce896cb5d730e3c7ff4a1bf0fef99e329dfc77e8e25d7d386d3935eff13dbc977f4cffc9659017071cb2f9b13d5da1214dd521e25160f11206637d0f8400fab11401d5a07b1cadfdc48c02d5ccf8db0dd8f37d3b9f28f98cbe63bbb79ed37dc74e869bec735f10793f99416dccdde325a5dcad4f666d6c7cb96d4f27e81c86f4f3ad11f9587793c42acfa9d0eadf6f87cb0a23eba288e655e57bf4841e3873edd98de820b37360ebebcc8e22362ea9bfa139bb47c71e9c6c59cbeed1cdeb99a92334e773fc0e3bfdde5a035549f1be7e69adf9d9765d2be7d83aba8f4faeb55fd35f9c44e45c19fb9e4397dc4148f4ec4bc8c669f31c3b82d741622d3d1d02ab5da7ce62b27aec748df53f2f9b2a7ab383eeb70a4f6e850633be9b9f53c31daafb3f680df8d8d87bd6aaf0f7d5b0c8881caff2af061dae455fb96f93d17de191ed0d127802d6fcee5e94ce6a4b720fdbeffba5ad26a0a86f88c35a8e6499e7609e4e6384155ad9ce9ed199bfb43f18734a2e9fb7261f2a7cb3541f90cfa5e49f253eea1bb09835645872b94f17de18b9d14afb1e93b3fdbbcfb734f6177cbbd5bcfac58acd7f7fc6d79bcf63e6d803d6d7c0d49b3fd01bd89cf38296cc8c96d8b562bea43c6f37e576c606fb0f8af96c3319b321b6d418e78f27aed56fcd39a0fe15667d79ed025b23d41ce32dfd0ed7bbb331a2bb3cfdfebda1732b9f077bef33d97828cfa1166bbc1783ee609b4b5df6fae4f590ec2ceeec533cf9714c205f1fa273f6ee1532ba731ca54ae7b7a25689ddc7e69c9b320f80a7263ed59cf7dbc5c7525927c307b2754ed8f3a8c7b0efe6a27c85de18bd32a7e5aeebae9d75838dc5e6bf521fe70deb4a32f7d7237bab4d0f78646bd7f8df03ff7313aec11bc55c7a8083d9295ffe6fd1a9089617fc54e12d50e10970d7bd971c18fe4eeb7f480c007d56b9e39706d9dbecb3d02cf3c5b5671cf1cd21bded8e8fb4297e877f33807e3a387ec4388e8774b063ae5b533d9ad62215bee3a7e67a4faf6ed487f053f6fdf6531a8398ba56ffe79b5a5bf703997b4fc79a868ed5df94787bbb3d9fe335521fd7ef8a39e3fa294fb8c249723d8334f2b5cd2cc2f6bd8a7e37afcd99e47222bdeab1dfeb37cba92fea9965bfe27d5df3aefe54f2af94fca0f76df3ce7aca9d180bfa5d9956526c5f127fb06cde183bb3610eb07b6e5f1739f6057d99fdbcf031107daae247fe659dea0b6774470e36d34f5d077eec6f2cc9997f481eb275d04c7d59392740bdf6d99c1e3acf2e798459cee9b252eb4562c9cb0eb9680db13dec5f1952bf4ab3edb1cdfd670b698fb1312c6427b1bad453366d29cface483eb147bdc90dc9696b53ce16f5a56ebfed0590418cbcc3c0179b0d3ede91edffdb677dd8bb5ae1ffa07eed869193665c5ae6ae70d341fe16ebdcdbefdbbe86cab3cba79cd0babcfda75a49e9bfd77892ea627d77a09dfe3660cb37bef59f64c6e59b733987fbf56ec09910fe4c1b70eb86a4df5df5897f3b7267c6fac119bedbc5ea0a1b3f0483fe3969a2b7cae590ce6a6a9a4fe87a90b24743666e2319df4e8b63aa288ade92379e2db69b5961dafab3d3f15fb049ac6b9eb73f113f3066c634e705044dee7b21a94f6faa1473c88d5a95acee12ecec9d7c610f96054bd678c3e317c8a862af5eea51cf11458997e35afe75f556a28dbeb1c69fd4d99a7a2b358b9160fbd1eba63cd79e5ec7b7259d950ef359107fc7438b8dca1f15c67c6f93aaa7272ac6bdf17e00dd1b6bf05d08f25c1b546252ca27a1d22b31fadf499eba436b0f4a527cc7ea2bbedf78c28189b37769f56aac2b9f2b541efcaf6a3e31ed33ad849432e6f8e599de75bb067fa1bde9d9def82f5cfd6f79fc4f956a1b390a83d2545c8a60009aef7da07b2d4736d63a7619d41a963d6e4354ff77585ccbefe5854b02eb23cc2063f72867fc5e05dd47f0fc11ed8fe09d1071018bc8b34acc7f40bec6d9a5f3710ab98174b55e9133f1a38233dce50614af8cbbc92737469ae9ba8e4c3bce35cc186f31ccf2ea4166776061648dee3c165b21e5ca6c3d1a1c1aedaf889b29d0b220489f34d1b0e4ed3a1d6f4bd5ba0e238c3cac5357dd1d953e7e4fbcb55d3f7d15a04d736faeff1e0388d9be669ec3dcb5c06aa79798f0769f35a8c1dc07d36d01aa28a1d5391d32a3937d79add2609f1716477e17e1d4a2336490f58fad6c3be92d5ae82d797e3e0d57c62f7e6b49d41ea5f9afb8988f6e7f8a6eabc6b5d37f3267cc62c8653b63398fa4212e7bfcf4bf3da93761f09e97b56c1a86b3ad3fcee102ceb3bf8804d7959551e5edd3be62e9e70bfaf34cc30f3efddcb2992816fadf88d353c940c670f7ab85f91b4f18419ef59e629c0be6f43f154f308ac3e37df421dc811c68cc539d42afc46f1b69bf5c302cba6959730dfe974e7119f0a5405e90ae97b8ce77c28d1948c73b5911d7dc039a98901fd0deea7757b8f895e55ad4d6ae75da680d68df58bca9da07bad7b5b890f46d9f72286162f15df599de7021b40dc773221580b6f343faeb1469fd587128a05b0aa6370109b0fd70fd46ab0eaebcce6dd3f7a3df3065626eecbd5791e5b824b01eca06c93a2f70f9bf840dbfaf97360cfe05235a32059dde551744fcb587e8bfbfa5ffe6ed814a72d6807e32b1677ee114d9ffcad79aad94638e66ea48eede7f5dcaee5e0b83bc165c3ba4444eabfb35aeaa679c1936b1b7bc7ba8efc44e951baeb941fd7128fcc3049b21cda564cb826dd96e8dd453d699b4d4878a12efb89f813d8ba6ee0dc1dc4e749cfb720510e5d74ddeeefe50eda7075990e07fba67c331c1f57e1cdc73d2b248a9546795096df2798d0a779c438a7b1014f3150c5cb9bdc9a6b4631719835b6eec7435e792ae65bd3f34b34db6a3b95633d6b4fe02f81cdd059b1aec24fb4baeefd9e61a13b45d64963ebfc31a89e53c7fcfc4efe8d26cc1036efaba3df3eefef60f15c87fa591dfa3df340fb0032fc90c96fd96618307db40fc7377953edd370699fcb8cf7c6c62de78718e7afca93eef89c8bf9b562c957eef6c3987691ef05cefec68c1c21a4f9e3abf6bb583d138c537c3d078299ce0505d327e2538e70e5718cb0f013447e32db4db6c679a98a3d60eb43c46bdee4cdfe5e0d5365ed34af80ccb11d0f826faa43bfefcfc8e53bdcb0f5c0168f7b5679761d4bed46309cfa89d7d315c79aed3219b958cddbf70f8d9ff62f813dcb72f51bee7f6dae392dbb9671fbea9d76599fdf06dd6d6237b26b6deb91d28c4f66eadea6e473f93f6d44ebc6131c9f6cc135abfe6e13bec7ec1e576af2f31e0846cdfe0538d656f6fd2c5578c3fe9002a3d4b36b7e9a5ce7efea4feabab62aaeee5e1bee4a3ca89cfb8c6be479b62eb8f0ab90dcc99aeffcc9b3a3780027822f9ff1b2022fe06dd1bf793d9d7b93a308c9bf3b3a5ed1336741fa6579aa394474e7d83a7c53b5da1d6bc5b47a74a62345005c9ff756957c14069bbab2de6ef9c1dd6213151980f3064af1e50c77f85eecb9b35ed65effdb1017955e7f34cfa563ae5d4ef7beb6967ced5e7cee419c33f70d30f3d56327acd6446ac397702a0ffeef6b726ab09bc683ff54707999faa6c159abd73c9d02559cfb89b9766dac53eca631fedb92d2ceeead2126fa5edd9347fc95dc4f9aef22627b1cc9bfff26ddc896b58b2debbf949fd64007f41cfa9cc767f9986145172ff94113d7bae636bb360ef6811a66b544794d85362e300fbdf186f8582a980a4c9c75ef2590732de5608cf528e0a89f73dc8441dfa95ee46ead63394796e5374c4e12c5b47b7847bbdf0dfc34d5b3046cdc3e115303f703a3f5ca8b0bb26ffa1319e7473cd0f54aef606bc94fadb1d38cf737dcb1a67ca207f9c50293b31375acc5c14f973c0872cfbbbcbbaee74d64e927b037075257d0ee9fa89ce907b1378d33c1dfc2f9d7672f5985b497f219c4a5d8eb01f72accb1ba0cde57af7b4750b83b18a484ef10fd9ce48fb034508ec922fdb3cbdc9fdbd33aed64f96211500d9a2b76849f8b4bd8309f07f640736dd2bdcfdaeade6a7e01ea9ff1135cf38fe46d96af71437cb081cfd4ee442b26687baed45dde92c761ec08d9e3595f8e869c45268fa4c1b7466416a96d67c67ac48322a0cec34065f6a667a48135433cff114f62cf9c62c8b6db6e5dcf88c9c9c9fc57e8ce4459fd2fe1b906fc94374ced0fd9a73bf938787ea605695fa7da591e327cc6d2dfc6b86699e94d79c71f447cea785c73b5a99d2189c964e7689a8b161ecbe888e6a2334fccdf4bfd4fd8ff4ef6af096f341f3fd3e1381a03b95ba357c7d3d8ea30f36355fbdeb5d77f52cc5de2cb2e70f31e61adc9ca03bc3dac3b57f42c644fb19f0fa2ae18959d6aef589d60c5cc6b3b2df1647a2607adf009b4f264469f44e72f9663bc243684740f122733f5c2cfd080135ac2ba30f547f234cb1fc3b80bbd39ee858631faea9839d817ffbb728eb3f9e1dc56da43b3dab735e3ff0f7df48949f115b4ce98cb20c354ff324d1677fc814e7ed757c9ea7aa55e2a653f14e58b17eac785a33b363d63379b3a63d3b231d42db009ff36579b5d3e669b2e476b49cd550b5e55215b325cf51bcdd9bb3818cb4d4c689ed53ab07574569c36c631a55fc77d6ce785794fb15a7cb4e6a7854d67c26276a4187f3e21f1e9aef516558c748aad29e398cc483ce1f3a6326161cd19fbe512626ccfe52ef4b6e6d149ccb4351f04e367487b4738844e81495f8bfb64bd5c9bfd20575c07e52523568611dc75554c8dad7ef630af1bedf0bc5a72129b7822a9ed22fc0ac8177ac7758cb5d888a5a836be17e3f2d6f6a4e90e90351d3cdaf702f79a6bc0f422eb18fcf5b1185c27eb166c12f57a065cbe2f33c73676b466e0589a7f135db2f3b0a37c2e4b4be15c99e4ba4e9783cb745879e497cb5b439dbc3b36b1cc9e2ec3cb643d08dfe2c16eba78b96832177aaab825b434386773fe1ce17957fd0b782cd227dfd87b5b48e925dc7da6d2ee3d9676a4dfc0f49b361c1d34f5f24d935f78c4831b7a8fe478a6d371e46bf1e0a7a64e4f812a6ac00eefe56116fa77dedf4a4c708f2b5223b323fd159ed2f5b0fdc1e87a7b301a95ee936b19f203ddef99baa67bb87d04f73baecaf190c87052f38de687711ae6f13dbd1ef1fd7b5827b90e7ac0ebbfab83e2fc08a483a2315b319a9877e7636a1d6b39583aa3bf65f931e9ef4de55bd697fb9ebfa13bce513dd7b7c809366eb53e7c8b4be8dac64d5349ce08c55d6ec89b67fb7035e51adfcbdd0da33b39a9f77db90d39ea77c6bf6b6b76c558a8d87731b082bd07a9debe68c8fdabd276a6fbd23abb37bcb7873b71b33c7710d3a57b4fef457786477a2f1eb39576891d958d77af3e2ffb4e7f5ded354f64b456cd7dd3162b43e98621de5cbfbf60fad1b4d799d4f94dbd8ee25eae4ec9ce32ddecaeb58c3591eb3a52d6a37552efc92acd79433737ab67b19d1ae383ed6783ebec76998fa41ce384a34c97ec5003714f576569becd5fb067e7bc58cd0f8f7bee5eea3d6f39f17db93187e6c81cb5f3bac6f9d4645a6d3eede7dada2ff997f8ede373aec74adb6517c62279cbf940393ebb58cd434f68ac1d7ef23d9dcefa5c1a6f03474d7763c99b2b9beb2b8b55a0cd37e2a2e18eb07d8bdbe56be39da53ce9f19d6d9a6be5bc45d31c051fbf7cdef57ad08a8fd23c01a52c23eaeb7bce7794e57261dbdc9ed6fb78e1fbff3be439e9d1b242323781e7c09e6536cbce178e7b7fa41c481ef4a1b907e5e21206aa88efe842859b525f5cdc4b25ebc7f2651d21fc31be84593dde5dbdb3abde50c5204accad6bf5330c935d43de35b617b03ebe2afc346d79e1f5dc53926be5e1bafca3e65aadf20b0235c8642fdae3a6fef25deace297eeeea21ddfc26b98bf7c747fbbf29f6e78e4fa72d8fa0d5874efd2f381736db1f962ebed24fa63adf7a0f7a4331368ab9549afaad34f28dafea1fecba58f9ba5c987ba521c7f5e13975d701aaf2a754b3a61bb90ff4717ddbc37c37e20b289d61256780ed4794c52aabf2fe913ca1f5bb4cad605cf27fb7f5837d283bc97d63c7c5b9f2ad75100fe6d9403fecf37ad6941c679ab5e3709c0ce9044c5cf7f7ea77a5355675b93bf9895df90f914f7f970ec8f2d427732b1bfe56c99bbd9f5bd75dbfafc78aefddbb27def30bfcf9e9f83595e5a5f78cafafdac3f8d5a3f9ff0e7efde05c9907e95e193eaca64668fd07b4d7185b27ade431b462e3769007755dffbfe1eeb5d4e737e53b5c4a3ad36fd6c1299f9ffd746d49f2d42bc9bdb8db5f25d3d7b3bcf088fc86faf8da6349e4c9ef2af1c3ecefc494a6d4efb723bedc861a25e6e9ecafa177999cc71d9f627b3d5ceb1c9a6293b57ac6bfc90e22efea5e1b83e68ee71f5f625bedef3d5b3afbdb7968221b6741fa3368ca250ed0bf2dea0fdece7c6d4df42a74df9789f94262407c8e89e2aa4a0ab2d89dcc85aec55fb2fa40c7ce7a4f3be1dc94749aefb40eec19e7095ce80b5184d665ab2fe84e5eb29acf898cfb266d3455ef6be3003a4950d4ee2566fa0eaf27604717afa7739a0a782f21f15aed41ade87b2cd9c0d2c74b454a3d21481d8bcd9b7e3d6b233c3fe858b31dc6a1b6f83dcd0de8e15e4896b9d186f3d0b10dce4f601cd806f46fbbf053be849f8b2c5ea511dc2a921b92db38d9bd989bc66ab581b2691aca8a17e786a9ff5829babe5c41ec4b43f76556a9f3253985337585eb0e1bf883728911df770448f0d1541e0215f21ec63fba9e1d7bfedd961b6b967d6d0b227f0bb1be1424e67a261779215a534d32a6116ca31e1d0b9ede48be0bd60bdbbe9fdf5f39da7a8a38f70478c271bb9ebe996cc370b2185c26ebd55e9377e19b1a1c6c5e3abb569f9b0be2d94fe6a74f7970d48683d36cb109dfd2c10e08d71f2b55dc7b5b63e809620ae47e1fd1de547ee1df1683ff688defd914ef195ed077d319e62397b80923c096352aaf8383cd81d4b182429fcde241777fcb62117ee11d63009ddb7c374577b8edec62c26fdaf6fd877989ed45ff3f681fde944b6c2bd7932d6b154c045affc78325a23dab81afdab21e056323752d9d0fd415a693692c45768fe65a29d2d9bfb59c3fd6d1a508c79cebf72344e7eca59280f451afa79db411c52756918eca9f687fcb3ca721ef612fd39ca44553cf52f4ced9de4b66505321a7f7a6f41e10bbc0c7b433c735988ea09c8a9e5033a80d354e53f57d204b685e17dca33defcdfb726ac2f9c779696ac4937e5bd2cec17de594939798079ab7997a3de902303e3ee9db49be1be07e978e3dbb05160f0179670c16836bd37b5acf4198f17ecf387b2b850bc6faded99a1cb0a777eebc79722d70f6132e1b83b77bb3b59f98d083f85c3afdd6b3146e26a3df1aa963f56f2011536f798f6f28e927c19d128035e51edf239dc458553e72ad971de13b8feeac44ee7e6fb6cffb548fcd1fc1588fbced2cf17afa11f119c2eba2320da762751f0eda7070d086a3fd83bb5ef01b85f63159b49dcbcc9b9a5cf81657f6cd3c5c6cf4dcd93ff45fcacf495c5e557e383df316a8e271ceca24fef138f42e9e1ccccff83390a3f5441ea4b3a573423c475371ad61e2a922d267d7939bc6cfe2178c27d3655c9c1bf507c6f59f9e6fc17726372e9cae57fc643db8cf53295d4e482ec9f5eef7b7bcaf41eee426e2de8b235f8357df839798c969c8ecca33e8e99157c19701c2e59ba604d0d904d315d5f3b06f0ee31a207dabfc7d676b2600e985651e8eebb12806e5b72a36c162857bb2621da9f23b82e1a1989c6b5d6fef551c890d24fa52a33e52d4a21a84266fd30da9917b1b3a5c154787ea3043af679e8261919783f354aa6b14945390283753809b400d99fcdae6ef2d546c4f71efb1740a2c3e0676e5acc62c7fda31f3c5b574878a1ffa36a7e31a2a4c83f186f5e9e7fa749ed352f1874dd2dd7f2a74f21f6d348b3cf58af87bfcb9a07b8eb1a4b29c31ccf70f9ea06cb29e1faeaa6c80ad65f2117d1fc93d0ed81157950d6fb158a93912233024ba544e47c35d680a666c70d7057d2fee659e8d79274770ebc9e8ceb16335c515889e6e22193b6ec00ada92cf4b736ac6d0cded006c3b125c0d3350e1c14ffb596f14061f86d45199709ae5cfde0c58c585ceefda09c9f8557e17a3fc5dcdd8e6c5bd219862a535d27c03714dec9cfeed6d9cdb1507a4a76b89f22348cc14ad75a58a048354b9c48e29521b88970a796ee69f07a698f5a158baf61e327fe7fc4439f90292bf98efb4ae13587d8c8b6fd2f767f281d683ee3c66dea41e3493818d67b2f5e43ef4481f050bd83aa2996ceeb4cf74c4f2a053a35c6a1e3b0e2c90504c18f49eec8c65faf71a06e08f0a6ff9853bc71798fc38b7f952e80dd23eef054a79aea612fe567d57fdddd81e8ebc4591ef3fc9713e7844a307b69f6e9e9f6c65189d831dbdab43d7d6d79e9af731c1ba30ae9d37ab3c401af8aa826d5a5f156f483ffeec85076d0c89bdd2d337aed5a7b974798e2da9657ac04fd0782eb1e5bf653ddbccd5e69b363e145847198f5e1f72bca48cc7bfa7b4e74fc6f3c7dc411b239b61177ea6d20bc3b7bf6b98df66fc5e12eff0a52c9f6d0fc618db2ccfeb751b7bff6776ce117fff2d96245331168b956e9a237369f392b282e27cb581b38569e8e6c60c70dd832ade26dbf0378cb742b6ebd55e0c444de62f5e6f7afa6ceea780799825c0cd27a62565652aba3e87e6ca30673f56237361f3d262b1e27573042d6331f8a90df5a0c09628f2e49bf1fbb11cf65ccb78417af0437f847c08a7040721dfdfc65a902e7752d1a16f9b10d733e17af4d67b19393d8377acebe193d65869aac8fb38ffd24c00ba9b5b03f702acd6a0bdc51559194b2bd2df0466fdb4d65e4f87c4cf4bc6a4b2b69aa7f49f49b5a69ed40d7c6bcbf927e7171c265bf306cc5c16ec0addaf95b7c6aed5dfcc299f413272b25116ab8d026c4e378d0d5056f125e743cdb22a384c129d070980fe06f1b4d10ec981b9a92fe626fc3187a66a6cccc524a3dbf482e584a1c0f7f98ad7e7bc385a6d14bb796c1ccfd9fbdc2cf2b620f23963ef6f8dfebd58a66bcf868ed5171c7b36726d9dfb5c14790eedb9a478efa87dc9cf1cdb485d3be4c0d6a9c82b469f5b5c429028075f581d4a7a5ee35e337a80d5df137d504fde4a72be5f92bd13595ad375d8ae65702ece4b2feb9d5d72fd8af551593ba2362124be2e24e7da65f2259cc6f4bc36d78fb9393f647b39913bf09d5852914e180ca76986073187b0e0279c393556bcb2847364efb6eb4e155d82fae0a01f7791fd7fe71ab4f02d1e349f0bbe2746ead801d15bec29be27ab91a82fa1b19cc8834b7e47b8d939b0faf51e2e88d755f249dee27de55dbb702e28074f6df763e73df7ed19e27b3747500ec09e9e7d5539e598e394d6b2baf8acbefc01afcae252ab425fe4b0ec067650fedb0820bb839bdef4a96bcfeed9018ceec951dbaf3456633f8c2acfc03afd58e7bf243f1eeb743d57354fdad8bc217dd24f4c5cbff89bf612f383778cb960f6e6ad362ae93d366fb74defe53993bde2833d18635ca9b0e15d8dba10e5511a8eb98ee7d9f90c2b7fff379c1192ef27af67ecc1761306f614e9b55190f56d4ecc5e56cb8b7bfcaab314580a8774e3b61a8f9673cbec887752cb3bd8dda16d2a131b6c3c3be2d0dc73bb89d04c6e6bce0591f7b6f3c3633dad51f697f88c261f446d38aae1d9556ab8fef356d3d7a521d295d01e39684fb1cd7c0959bccd40c5f59b9c6b813eba1f4817a23d6e6169bfb3beed56aea3111c3cda6ba6c2e3ce555c25fc5b1cc35fe5b6c27b2c7da77d46b33b10fe58b4d7b83235ced9fe861f711bbe5a49af25fe257970fc580cae5deb4b8bf7ad90ed107ed4cec549b427e7836302c22a0474dfd1de64fa6cd60fdeb1fa7d64d379895fdaebdcc777afa7f0089efc9e011d8bc431fc5e10f972d18fb83853c8b9f46ed9b28e7b65dbb256f482c03668430f132ad72669619f937e3c0644fa11b24131f6457284b406bfe51d2fa1214001e07edc700d16d2c7db70d4d0cfb6d8371fd12cd2cd2ce544fabbe97c80e38d47dca712adcb1748ce8637de9018b46ae2bedf8ef582fb333be89cd479e824ab6fad380515df92d793fae49ec3b963eb592de22dd3072609dc74b199aafa43c7df3cd2813ae1265462148d7a8949fc0847601b3b4f9887ae3d45b2b193ae42f6368abc24407215c7fd7d92efb30fc6b3dabb325af6d397d0c4f7413ce9bd3989b5615c9308fa497ec6fb400e6eb44f7f2643a4d56813be8d67102cf2bead478c47acd4f860eeb3f1696e12c9bb09f79acac3408dcea056075fe16118afd5bc792a3c0532bf71ed19f6a34dac3efc1ccf8f04e7491a60bc167bb6f6137809641e227af4b6f3b397bc1e81c55f82f1e608b6e6a95ce74b1e3f312f9eaaacb18dd893909ebf07f6f45b299741aee76fe7673d46ba565fd4e24b8cf32d701ec40cddbbdb32518ee8ae517ee26b09f9bb87ff4ef2397c783de5bf1b1f425f88cec8d6f01273b3581943749f323ef783c90d99c42f67f4f83de38c74ab0987fb8f5f804562162bf2f7c677b856ff3fc09a7113593ad3be9dd8bf93f532b365fde809facbc4467c12f38feff658f7bd041e7d554c03595a004b5907f225fc4ce9ff935ce8d21c91cc777a467d0e78fe22c9eb24f8e537a737bb35bce7bb36aaac6bac9ffdf1b4b21722eecfeeab2624b8a8f82c8bf1e035b5d5fe205bf79b72891ddbe4d07953dffb3250c5149897f8cdac7f17f33e73c661ec2759dbe33137ccde91f1e1e798e4f138c235f27bd390e4bc602ced30d35dfc6cbfe43ec6ebf3843ef4b6f3d779793e733f112f18a7daeafff412b1e7adb17c4e6bd88463a6be3d2e9f05fbfd4c27209873796ef185bca71f95f78facb59e3337f83fac5bab97f01d56c626cf2b50a150a2ff258fe83ef293cc9fca133c0a59fb0bef63b3acbb37ce71624510e711c14bfcd13c8fe2195e77d35bdfbf9ff7481eb246e9fb97f6c6e61fbde3752284b787f31d1f3bcdb5d31c5bf3570789fe681e74ceee707aef9caa3a745e033317c41392334b5afbffd9a3f9cee4fe9ed83b45ea9ce9dc56338231302e7fbff1be2eeab5183fcc6eebea7616e44cefd1e94430f6c1fa0e7d0daf1bd776284f98bd3b160f3f4cc41bc51ed1d982bd17f3dc04cb838774da762fce9ed2e12ed0313c55898175a9cdc9b3941408f034b1b463d07d3cfc2cacfeda137874369de897eecdcd5795537d3d7a04d400f1dabf6a3cecd1f325baa9e3e776a7f9dffd6e82f334d91ae755d67f4ede84eff1e0f2637939fb3d29f21ed3097e3e64f1e0583af4861dbfaf1afb2096d69eaadc7cae1f79d64ab4659de8dbb897807f9c58188bbc0badb23c2def4980e4f22469d25590bd57c345467ce252e0900cc4676892d2581cd80687f4becef3651e5730fb1ff69162bd18e297e842154f73e1ba778483f89996fb173da095acf7d93bc5083f6458b3c59ec02fcea974e7beb3bcc04fa32fed153debafff163f92afe5bd2bfca3cbf0156dbdcb7094361467b7135df9a45614061ca91dfcfada1ecaf8c6e7edb16e507d9e90b9a5bdcf30894e7ecf8cfd9e91be0d07078281a123fd1382111ccd8528f237d49ffefcdc5e2782ce0763e3dc950f91a7239d0e2f6724e31eeb75ecf7fe7be5e6b2677240107fbfdcec7d491655ebf3c38fbf47fe56dfdb885bac0d77e174ccbd4e7ab38b63bd74bb23c3cb999e5bc7ef37eb6baced3259f00797f8d59ed18dbbd9154913867effe8d8831dc3fb9ee60f1f2abdb3cfca4f32f79fc0de889f0295395fe4839ed01f229bd5bdf1df2b7dff1eecc9839e4a2bb8f9021fc34fe99ced23a3fb98b737e52b7b459ea7f5d6ea43eb48b0dc4af973601b5b4f407b7289df699fa08595e1d277ba73e5be4cddeca4c6a7a38d557dbada66cc5dfc9ace96d3a9dcbf05967e0bc6da6e2a5feef9d6be30b7cbd9d99a5ca08aa767f87d573afd9045c4871edef30edfbb6ba366bf7f67e895ec459fca6beda031fe384fd06fc0d60560ebf7fd854c5ddb5b2c4585dfabd93fc8fafce6827898c8d2c2eb05ec3b52f27b3ef6049143ba8d634b794d1cc9dbd013c79a414d21fa60e1b3958eaec5e0ccdfd8bfcf1bffeed861f9efdbac27797fc0ec81ef25e60b9df70658200aac6beeffd530969f32055600712fd1073e40eadbc475299f6c3c8ef1f155fdd079eeb35c8d07de91651873903f9079115bae8d765689d8fb78a05ba1f37af01d426bcdf665ece03e85af7f3dd2f7eebe677839df9debf0baf07afe83775c879e7009fd9ed1f7d495f8d93be2bcb5b975dd03e1e51ba2594f3513a4e3fdb0b9fb63d1bdf1053ef2d44b4d1ff32c78c2f63cfdfc97d6ce9c03a2d94feb8a64d9779cd73d520eae159c704f8d6406718e10fc2df3dffcedf3dfea38ce68cbbaf863d94ab3ec79de3c4b3978c37e55f73a3a76247ec862f6f9231e8be8a2758d1fb2d8465b39ef65c7af606c9663477f470ce817e253ff92d85139def3a7e347a5f1b06e817bf16963aed8bbf8e55cc47b82fabc47fad9eb19b760ac47be32ebb9b6b1764754278fe95ce480916d83a3df0bf6813adb4dacec7b3c95814165ec8a9c29e6749a101cdc33c1cbb842209827a05c6222ef894e3057e1c9c5bdcb235f6bf4a198be1643fa5d31f605330d1233257b734ffe95c7d2d07d56cd13184fc3153edff9692e88686f4fc0ea731fcd6775d0c6e6c915fae74078f9abe45f2afaaaad0b396a8c5ccb9891dc93b0840deb3761013cf21de57dbdd9f756e3020566b4c3acc714e0c153cc9367e1bb5bc61dade86b1d634e9cd71b749e0b8355f04d53c87dcc625cd5f76735f19f140b1cdb9d0af6c1219e4cfb2d4a2283217177aeefedb1c75da3aedaa2ab605b26e5f373f95adc90c60b63a4d7e95bd77a393a317fec62bf7fa861fab1a9d0b1c2f658d65e274298768843b6c6813afb1186d7cc6fd2dd2ec2be679223f2611f7660f105bbdbcc7bd4956c6fb0e873683f813d3f05897208accef13742f3e437e2177c55b5fe6d1ddffbfbfd354cffbec996d61b239b7c38c03dd89ef6210caf677f8cf7f7af65f29af5de4a68ad7e5f53b3b51f5e278278c179de7fc20ffbcc1e24f5f360fd56450fac81f8d176ffef3c1f2a5d672c098e75e5c192ff9e8fb9e5b2184dde23eac7b29ff712d4c6ecdf2f67af27e1f8c95336fba2bbef3ac3f3eaea536ee657c48f8bce3a8f0bf2cff995e736807ea26cc1a2c8f3ac60b0dddee38ee7bb69e801d9fbbd7e8c7b3cd249940d1056a127f40faed5874ffa5ddf694fedb3975cf75eb2fad6351e49f23a661fe477e61f8c5fb4da150f7d3bcdf4437325add9d9db1a11dab38aecbb75937d8df6fadab1f50c87b3d338f7ce96e641ec816a1cc0e2f939b27bf1949f9f7956b42732d5ed9f88c33c195ba0f374adfe25b09f90e1848e499ea2159d3dd580fe9af7b58d897b9ae31e0c348718e9f6cfae1fe74f22bad91af0736cf8dab33102daa3e4c33ede80a5a48e103d1d93f6843eb2734f4058899f6904697d40a77b9a616e65e7f8a6ae4e81aaa44030b9c996ccedb9f8c06be7d852a7bbfef0aeae8e1ed6b79fe3f1d4cf8d6b85681ee50158fd6da086251d24eff99d5ca197049c2b0ffe229f81a763bffeb0bf725533050b29f29355e825af390645a0be86245e2121fb7657ef1d94db11a426db3239249b27ebcbd97fc6d7ff4cfc89c6c4197b86e494c879ff9efdffe269ff3f88a73118d2ef1df94a159b95e69c64b940ffcb23f97f2e8fe479fbbd9417c0ea5b5d7293f1237dcf30c19fcc757d8e7fb7e9d682928227e50e1def5297656c3e2b8e2b51de320f1d7a6fb431eeb77bf27b12fe3bc1ff3760a02ab8c6ef43162fcfcce529fba2e3bdfb5aeeccd3e7c1d43f48df27f1cba9c4bb7b5c38e998b7fed0f7f1acad71ef7bcd3681e0da33deb1aefbcfc44c6d590b5d6bdef8f7afde3347104fc1583f7be34e79d2f8c930f5b511c68a87de76c6fba9447bba5d65268ebc0c04c83942243f9d2b4ab013d15a5f908dfe845d8af1eb71accbbcc4405552f7b9dfaf5dd55cbb82b9f9b0bbd9b36d3d079ef1d9211b9ce41473dba5f0b27d66bd2001cc6f41a23f21d32bf641bef6f7588a3d413c004b39e535c5cfda3f4fe94cd59a8ad9ceb1fa5bb028e654f2cf3fa41fbea3adf4d826e99c33a23ea859609e67f4aebfa92685aca112f3f22c78fab00fdba92c1df51e87fe8dee85afad15f82e4b474d0eafd3a134f316d0d7b6182ff325fb7cba5c856f43659e7df68ff1dd5a4ca4edf71b86c625423f5b2adbe24bdc8cc76cecfd9e74706c88f99f69f5f7814cfa61b278084c5fc522ff84f4c148813de33d8267e06bf0126773c275c289c8a37320b5edc8de34311e94b7352010cc7cfeb867f2583f933ed946b5bf66eaf5cc13a0f362e2e4183b9dbc03c95bdadb531e5ca7c386daefb10efd9e7908e481587d57a9ae6238babc2d063f31aea5cafbdafa407a2be3daa4bcbe3304b86fd0fd393c9c871c91b5a9e626eff9391ca1dfedd19c8c04be006bbe9ba69bf02d957c2d96269e7989df535cf7fdd3b5aee7f2bcf21e8ad01be3fadda4e11daff41dd9d3943f74c331db2117be55cf457e0df35ea7f2e614a8a2eada11047278cbf76d84e368df49ad2e0f81a0e0b363b1ce090d11fc65d203a67afe97b0d653b5d61791a5bffa394cd2e21cc859f4398f03fb4fd5dcbc0da77b4d3e607c584328ce190870eb58988f30f91864de5dcfbcfcce2f9d7fe97c5a6861c5d002076c3dadcebbc0b7fefa9e3ddabb1573477cd5e4daf6aec0e3a4eb57aea71f8bbf3d8f7048fcd4f7f20707e739b57fde7936cfe538f484cb81e88d99fffc12ae12b157cf51991f9d443c07385750b954e7fc2934f0dd72dec86992b63c8211f942147b688eb288de7bc2f913b278f393e9d9b1a5cba447f062273c5903ee619940ec170689b2060b89d61217b419a890f3d45553de238daf3178813ce955f085bcc7b1639b5bb090e0e7d8805e62dcb21c84c9667646fbe325e629185ef35a67c7eaf7594c18267fa14ad719de60ee5b34492c39acd50451ffef7bed5ee03ee5e15b038ef4c708d719b7e77b91cf4ff344dc7c3ec843cbbe6b923d67730b69aca32f7b3d647370df34d9bff88979d47bbcd8299fb2449f52e28dcd3d9091fc8607b0e4bf7ff6a408a81867fde9b189fed12167b2fe9bbbb972ed4f2d16c9b9b67100f6fdde370dfad4f3effff29c07afcebaff1da8f0e6abd7e893d806a69740ee4d9df1fe5687ded6b0f09d5a40f14316e3ce7b4fc79f70b3f3a3fcc4d2f779fd1cdcbae446e29ccc13f6bb2466fa283773c295e8f85e2e24e6bb938d7e06e34d734e24d774bfeafd516cf5259ec83ac34bb33cb54bf8f7e4a123be7b0971ec601420f97de9c8ff7f8507e3daa2856d40cf9e16bc50802747587dd346182317638ee0f76ca4bd97eca1d39befd0fa918c6173f62a38154caf16038244c1ba418e5781fd03a680f829c9dff823bcfb9fe2bd1dee772b0ffa8ef41f5bd61ff4c06b1ce3e65afd355872a2b7350fdef015f19b3d9be70c905c27bd0a309f9eaca31458dcf687cdfd45cf3dc4799bf66cefdf2e6777f912bec7835777c1f07a01205990e1e26da7f2cb4bceefb7b4ff4635ef81fe1de99c183bdbbac2a2e61cf3abfdc7f63effcdef3b34f6817a858ff8087b97d83de8b0af8927f4b915c533d66f83d3fb5887dec26fe80550fbed8e62eea1fdbd4d87d2e553eef4bb7390a03b7c3d07fce69b2607d8a7a13fe893d82937bd968382ebeaf540358f7eefe19ee398afd1d3cf813df8f3bcf8bf4b775f911ec48c8ebda5bccb6273b0737d99e0a6262042f72ccb0f2f7c1f18bfb7cab759fefb247fbd925cd4443f93353ec889a6b54c13598abced86c1aacc3190774d76679e6bdb70e678dfda750af2b9dc973dc1e8b3775417229cff15c8fe37fd36bd4cc7d28b9e5ec236fe35193fd435b377ad309f5dd6ea3428ffe53aeb1ff8195e59ba6774eec3d6eb0174d607afe76fdf637a9fd34b585edbe6a22ffc83260717c73236881feab7dd16ad57c3bc639016ff1f74ad452174d9e5bb746f0235828ed52e0b6bf77d6c3cd2e31ade1196f687c197df2239e2f78cbd231cfb788f905e21fbdfb4e1e0a00b7ae408c72df5fbe1ef0642b40fd415965bab4439b9b7cb3950c3677571ce656d983460fa00203b26b8052a5cbbbdcd76220fb6812a5ef4db2e9cca97ad93286b5708a80f117fb7e7aa90030b7c46a4cff06afe3ae919bb7fcb3e117ca47fd33ebd103cf69172f086cfcdeb431639bfbd96b02e7b7ac60e58cae6097b94733ae87dc553d3c570df8726dcd1e6f7a1f5b7cacefa7a7803e31376b5a51ee8b08fbf876db83a2fbf5f5f762ce4d5969191097f76b6e1b1591e0ffea3a94a6e03d4e472550613bdfbbefca5ba49cd5fc6cd768ead734d761610c43310ae706291efe0786b075b0be7d0177b4264cab2a8e92dd53431387e403513c7360fb8cfa6aadcb2d8f102e9b02aed8bf32f97dfff94fc755525ad6282363d01c1d1163f53ff3a1d0ea0fe40f7c58f4a65f590ffaedfe6440fe9f43b42376696efba8990ce4dfa4198453ceb0e3fc17da180ad899f379ca7f0d752152340fa2c93356731bb077613990fd62dc54fbe431f77f27e4f271846ba21fb0764437cda12b6f7327f2d923f342719f1f58327f8d7a91c114cbd851ffe30ab18d6ed4f2d2785f2cf0efb1474e1b1592d867fe3bf77e9a74dee06b133d19a491c45d25cdcbf09f7f7d836f5056ca121e95385b806821dd353c5ed7439d891b137b8666249f35bd1de12fddf5c013be256441f28f7de91fdf5f436bde9a924d6f1c2efdc838df2e2da533c56ee1b928377b676239b876bbd84f32dce35e0fee49c26e96b38df6e183e78090dca83b511e5c1a9d473adeb01dd2d4f106fa0c0cdc6f3cb7a8be21c2a818f904e42b0b79bfa93363ee7492af1be80ef58a48d03e8a99723ad070d1debbaf57afa3e50a323ede3b42be881bfb5e376579fd7b33662f801e91b8a6c5144fb826be11a122e105e19badd852e230b2689ce3bc211525be8a08d839d6bcd769a2a225b39cdc6b883f1ddb4f6c85383b39f40ce55398afb1d457e62ac695d4bd37e7fa7bd4d99bde04e488605a36c8e12f4091ec0de5357274da9f7efb9bb57e319740411bd23ab570bbdc484480e7a969892b88f7470709f2b78f6d6bb2a5e758e1fed8fcd527feaf25accdb33f41aa8afa16b0527dc5788e49f939856d1db00e7ad935ef366aaa962aaa9d773201498e518871fe3e72b7b2f213d52b33130a6bf1ac167e6e4ab66ea08e62950713d56dfebad429cff28c0e473f1129af87d244ee5a7647ec89ef0d44b88f1efc6e6a6dc7381a553dc8b88d354e3fccc9c300ebeaa2400fbd3a59dd7f3f1d89f8b009d5d1c58b39fc03620905f328c72f4f0be60268175090321825e4cd692e3880bca2990a573601b07d7325374c65e57be8ef307ae919714eb7411dfeb05b89738a6d9f1f43b3e537b83f48683274b315848d8b6f2557393f512217b94f52ec6e71bf9bd794e57682dde76c621dbe319fec0de75d247018d6bc874afe6c0d6d748e7732d2c4bf86778ada79a5ba40fa271cb3dde829327f4a1deeb3e16e1fbb8becfd3d32937b514e82c375bbbc3fdfed129de96f767e7803de3fc0e67ec27e239a0baf0877dfcaec901d62526b60111ad133bd4bf2219f5407738dfc38079a4fb663ed1ca67059eff98f7bd2d578a3b35fa2ee520c7626063468df8189ded2c09f700752c784232ff91fd547c57af8eb340f7f9c1ef175e2fa8c7bc48ade581da70240762dccd975ac1a3a079d2f7f04a98ef998d636439042c5607d6650d41e1816056e74f3eb301926bd8475ed8aa1ac5c2509420314fc128c3b1adff7ea99a11403c3b11cb766cfc726ef2e1566d58f29d922e519b3f6b43768d19b298d9ef31992bcdedfd73f1c03f93bf81fb30b3eb69c09528cdbd11aba247ebc948fe7d8153a1182f8b9581b12a4ad8fd4fd9d81d62e3243fa25af384ee783c594e43cf9e1fa7fc257ee41fc6791c5d62fcc36b89f63bda8c79cd7c19735d593b8279f3f94cefa8d70e7ea483cb643d08df6389398bd5c9b1666b60cf6e24e7c6bc59027bdffb9123cca0df9b5954673a79aa79023d63a7c9dcd5360f57bb734e47e6abe1bfdbb2bef27a46e4c99244c6cfe953f76229aff7ef16a3bd2343e8f977c9bbf867ce8da965f8cad9a1bb239827bf67b69d1fcead0256ff16d87fec0c87c53bfed1737c942f83f1ef1aea9ce2c972760f37ef59fa68d2491e7eff4e5cf7f16fbbc5eb1b1f23810724a7bae87d95b378321fa334efe773d1e87bbbe213b6bc97e4e7ff4aede9f02a3b9681f4980bf6953c95f7f0e8916207d91f3d92533d677c3eb3a112016bd4d7d3cebe96f647a57d8c99f8d5afd5e33e9187788f1689aed7d947d07c3e9733d57b7fed9cc787ad26075df8d6bf8e569c2548668973fd7f9956ca7afdefa399bc86e78be37da8d7c849ccaff32872b64b82bd11123ff1b2da6baef3f33a117e713ec3ebdedb4a7c97f8cf9df574c13bd10da54bdce61e6d197d5fc5f59b18ebd596bf502fcf3c05a6196b9b98bfc6135a30dc4a7ae1d6bc0055e10a4c074c0b6d186d5f3c970718bd6df4f45c0e334b475fcdcbc64f56e7f82be7f931a2585c6309fb6399fcfddfc027d9dc1083d444ae7721ebb3eb1ccfbaf31471a03ccfe397e6de113bf8c123113f4cad4fe593e7238b445e76cfabaad3670346ef33bfcf31a07e09ef3fc7c6a17dbc715decd95bffbfcdc783b11e79db5944f167c2c50ae34ffdcafb704cfcc3bcc4183ffa97e5430ddb6af53982a3aff3d001a9fddfd0baf125fffd4d5d919e506ac90ecffbc67fe6b411c1c9d688fc248081dc17b2ba92afae6fd2a54ea446139db0bcebb4d8b52e25fb7eb71ca9cabceee6c5e0e717b0bcc9e78a7e0ed21afec5d189398257f7185fbe532e59ad16a3eb1da4b90cd80fb9a13ebeb4e0b55a97bc1442a36c1d8af8d9ece3637de99de990d63454c7c4bdaa57b4573018d1b973640f4c151ebbd582fd621f01baff9d7b1a8cea31852ff8c54afeb0dca6ede603c30fc68f1b410e58fcedc33eb6fafcd8d848671e36267522d571713e8192f5a837983550ba508cbd6775d27dff093fdef7e2deea1df2d49fa28729b0940db0755abb8bf109a3dafe2526170862eaf2fade1122e8f70c1558e6664efdeb3f16251a29fcde653bd6d7b6dc3fe2cfaec5c9709e65d55f9d63032f5c6bb603f68c331213021693a7c765394fe2277f89e70cbd6aa36aac4d171fc9ad3fc1e3d1bc3c4bfb23f19c6efb487152cc8eb492f5e1a59fff897da46b7852a655eb5f680e6455bee0f99bdd69a619eba97c0f954bfc63f1b7f49969890922f9fbc0767a7a3f4b71e6463e93c5ebd898f38260d08a2dfac208c9073f817160939ef9ff148f29e75a37d20a1baf627241791ddb2ee37bbcc5407b97ba96ce635b0bfe59faf828e56c5475c57afd73b52fcc977aaf307909343ffd80c622ff4f712d1bf23b6a79f9a9b4f37af3861e2df3a3ab8adcc4ba9e498f0531f504b1e9f718137695883cb6fd9a724a6cfd1cd8a43f51b9a6ef102e557872d30b9af7c645eb43eb50c8f7277286df1636cecfa7ef9c58c6d9abe699d0fe2ffe7870f285d9cde7ebef9edbd2a5ad6f8c3fa6791ad5dfd57a9f30792802933f319e9ecbbdfffdcabf6b393a0433e7ce78249e4af24cf2dc92725e482336972d6bfb3ace47decbe5e23fae072ff623bd8481d5ffe92562cf5bb3bdcc9eebd9f2748f946476f6923e5e67a50ee6b9fe284fe48a34e23a6f717ed4ddde6a2e95fb1d6aa64f6edde68cfd44c1bd7cb4b171fe302ff184f408e8d0870d1e412addfc642adab27646f306b6719b08d733105e8fd9bc26db9900f84baca9ca2118f2beb6811fe668144ee3978b363260b0e9c34096242f510e9ff61edfdb8e3ee2577738fa6bb11257f3c5209dac07a1a19ac23231d1bd3939d6b5ff9998e9872ceea68f742d599cba56ffe7a33dbcd767a101b7f5312e5eaa74c32617ccd817449c778a648f97100c624d7692ce75756d7df32c630bcc4bfcb1e99f038289732278c5f3ee3ecdf1c35af3c7b1ade1f5e4748b7f65b4cc7937ded762b17287bbed3d7e2afcb5537d1e77dd7bc9e12bf33c525edad9c7bb64b1daee9d6d47fa9d08fde8ce79be4e04dae3e85e2f47da4fecd1bb888c5e85beaa70eeb0f99c708c37e7fbfcf78acc121ffb61909e6c7260215d1cdbd861fe45f43a5f8b59d930173f49de66a7318165ec7d92d3de4a63f7c6f990c54c9768fd4e0d1f5888f69e6aa4c0ea37f93a3af50024f99f4d985ad13990a392eef48665f186e42c97f01ecd536071a1c9cf66be10ac3e6d091aaa7273556a6b15b58739eee27b5e8743735f2de5b2c435f2cac1931b3ea33d58f2b814f177481ea9a1d8acd42bc43cb5fcf9dc534d9c579ced0fb15de0c9b58de6cf4c1d0689f81354e6b7b0fafb40b9f3d9c8403459cbe1fee483e5d29e6d71eddf8ac155ab62b109fc19a8e6c14fc59e9f8af68ae36f8037fabe6a8e1c7bb6cb7d2e95bc694d09964bcbbcf902aef1104bfa592c1e919eed8da7e7a0373d2f4c32977aed2ba4fb4cc7b15be786f9d1a4fafdaa6e3b3eeacbccc744eed00cd9818e15c06a1f49cf1237c0badec81d1c9d17abdc6ff3f01dd9993f316f7ae6663e9f86bd58001b9c5de63b0fe79cd1cc8a877e6f16e5f9e1f07ac23d4e16d208d9c70b553901f50afdf575f511636c466c37bfc7d28a620863fd93e2836458733bc7ea6f3cd54cfddb0ed9339e4b6b72daee9bbd7ca5784d8a96fdf6a3d4cb900b3f16d2f71f4b32c746dcd6b10e81806c6033cde71d47c7ec7d8bd5fc1ba6bd26da96fb04f39499fb7b5cdb039ddcc56ccf567f61de54f0a224b0fa6bda7f2b0556806c66e86f281eb2adedbcfcdd70f41e4b2d77667ea2ef89fc11ae878b3cf572d0d47c9cfa5e8d609e0ffa0fccf1e4a9f0041697d0cdf76a171aaac239ab7cdcd7d67bb27cc1fcf94f9d69ce671f9c6ded6efee17911fe2c1d00ce617bb07726fddedf75aeb94c7934af2a1ff9d3f486e520e577ab4777a2c6173fe2cdf7126ec1d63c65f1743f31b7ae3de380ade763bca9f95c7463b86be55f930d9619ba9740ce50c5877781e09b11faaae8338ff6ebd51cbe54f72cc3a4bebf1fcafcaf525f55aa43e4f3dcce3c765c7b311099f1be37e85eec5c796fdbe14ea87ddeb374e8c79b6fda189c915c60f0a3a0a7623db7901ffc91f9bd113018ab8d67e86476e388b96f4a001d383be3bac8bcf73bc6fb4c115d3038deb95ee509fd0f5f354feff160c7cab95c57c37966d7b32facbe6972487212c87ad831147fabe33ca5bce710defba6b5635f3ca7a9d7b393a27defc32095ccd5e6b2732c63e327e6cd4f618e7b08ec7918d83a7a6f68cb7acfbfed73f94dc6c318d7074f20ba77a08a6b4fb8909a07e512bb6383f3c7d36fb6acd570ae4be3f6f077bed730aac766ea2e063f31be79fc7ab6652d7c4b25fc3e57156f814c30af27bde096fbd5c8dc331da1e717ebb481a52f3d61f613d8f31d7affdb9259cb38b84d12f1846c260fe920aa785aa2ff5fe73a7acf4ffb672f991dbcde0cd747917e4fe20d2cabdf31533f1153fa1d7a3e0defcaf553acf3c0bc5f026bb3e467c6dfc08df0868ccfa0f11770f6b18cfb17c7d66f6011c149827df27b820fc3e8c0cb6363cd567e2f63f61eea374be06f20ede3dc1dbbf25b8c195edcd9dad9927997796f36af0aee6f6e9ffdc8f05fe232b69d6311593891890d1ae01ae8026fb48c2d37d87a96187fcafe2fe28c8a87892c31987e12c6019cc8d2479098a9a72a7d73acef8110101c6a55bc601cb3af6252ff615ba855277a6c17b4e87bb53a4ff40e9c57db666779c407ae939eecff85360bb3d6267ce1eab84d0f6065b980f6a9cf01abbf99f466a9938a913f1e9c717c6f3cabbe73ee8dcd5b796f5f5b1ef1e28dcdad6bf56f8ff1caa99fb9271d027b7af27b608bf3ad99d8866bf5793f7dbc365c47ac5e7920c0939f8a1b46a73ae373dc1ad04be667bfa7af278272f371ddbf7824e3f76f4112e03c43862672ff29ab03998219afa8ff762237e92e7a9506319f70ad19c47726f36955ceb4b1a754950631063c1fb9563f97834d58bd8c5fe74431ee9a708539d7e221b5110a3cf4b1f152fb3e2ccb6f7f6baed1fcde548a3d34dc853ec5899d54c645fffe1c61fd2dd33feab298c471b2b986794fbdd5bc1277217eb64085472cb3c6c6deb356cddf1947ba81fb7de0f5346049f7330cafec1e931c2536a6c5e672157b1ad1fefd859eb7feed7b74d054e588e35fc3027bbf8e0b36e37dacbf67185018fbe788f472b2fe4de3de38168f7bf421f99dfd7f19ef802fd1d62a31054f3842922b360f811d61be91e19fd11cb2fc5df99885ce5ed78dc63aeff48cb31f47751a4de93a96c4a640eba9d125ae2fafbda7decfa4675eb00e40fa588eb2bdcff6fc6dd9488bd919235accfebf9986889e073d5be23e4dfd1c207d4f0e5f83b1f6d7c7d8d8607a506617c77a113f6f86f8018d1db075a8a94a0a109da784d631364a2ae1be8165dc920c377e9ef76dd5c652e427ca11d806f4b7b8471e07862faf939e917ec4d0f7924c67338ffed8e82ff35c400ef7fdf8207989638c9342fefe97a946d0c7b84c686efdb3a6125ef28bf3aae930787ef07ac2fd566c00fded269c2e07680cb4971b8c1bb0904ec0f6b3da1934a7d445df4d2fa12fbcd233c2f833a9d733b7ae7aed6bc311ee1bed6d67ccfaf9e853217160d2e344c9ea97d13e5ca7c3013ad3f3242df744f7c74806c373604f433ff3abf4325f8104093f988681b00a5dc184be2c21bd6aeda6d219c42fe19bfc9a62ccccb17408ac60ef6da715d9cb479f25de3293030b24c0d6315ef79b793d65fab167292f59fe27c53ed8a07b3b5d0e2ed4aece6dc4922cc870148afb80d6897597025b68b00b549173ac4b98e71e16f6d7a0a4e32ea46a1dff376da4a47ea2f43f54e5f4b97c4177c5b3599b6694e7a5601c4cca1bcbb5eab75d38b7f5d4b137af042f62206aca31206b23f70de31311fcf93388a534cb01d3d43c3f89ac8bf620d7547842b22fd31d27b274237d4a897f167dc711cc13c5e93bfb8901fdd6396779c7f5bcc5f75892fcad1e7d2eaf44af64f7a0790f395cef3eaa8e79607c0603511b0e4ed361e9dc0e04bb04d15496ef370f9d2cc7edde3e10ccabdfbc17d5dcc379410b23887388d8736c1c6b6c9c03553964f98859be1ec3cbd11dbd4cd683ef8fe9a094e3d7bc07164cb11d4ef6fba08d67677f8b6c3969efc5d206d8b33592692437474c815af4282bf04095d823186579ced8b296b3fb0b7bd134eead90fff8decb2f97c286c518597bcc2710df4ae0da55719fb528cbf764e74aea4946797fee12ae567eff118f15539c9380f64e35a02fcc903e847bc0793d7d83f3809ae99bcdbd93aa399b5fbf2fccf966b4b76cde97b633f3c766eca9709d63c2d01ead59efbaf6b3c9f3934af53ed47754f647e1f320983d5ea2201d0ed30195a1378a7f44e993cad7dc3756ae6f60f922abdbd76889a5fd277ecbde29d7ea73c0d64f480e38f877f086fbf28ea90c417724819c6ba135111a02953a7b17c75abfba06ecefaed70b8c1919c3cacb6183aca17b0f92d710e30622bd11f18671568f30afcdb94a2395fa05a954d3826b17d87e2b9dc668a98128f56dc9fd9d8e3de3b278f6337320388e34668074e2c4dccceb351eabaabd57e2ab42fff0b990688dd92acc7d0c16e203b92ed87355f344cf6b5fa69700eb8f9e256e5c0bec8165e4fd08a98e63d2fab5528f56748f40a21c7c81dd0b465729debd71edd9c553957e2ebb72bbde68e31fcc6f2a7bd985b61e8ff96b344b64d4bbd733969f567f0d2c5287836bac16c48e60fba3e0bf2ffbb663418e629b323db491ae37eb7bc90cc934c46ff27956efec647d39d7c765e234cdebcef32441c51fd294cfd67ec60ff833a97964fd89523d8611307b28f6bc4dc976be636b866dbe87aa6e5ba181d2779bf0901abfdf186b7b102f2de7db5cb27766b59fb93f7495cbfaaa8ddf189f7a2abe5d79674d8e576de6afacb31a17cece01a8c63bb0031c63cc7cb2bfef7d45bcb7f17dd4cff1dbde87738f5687ccefe2167fabc6211a63c60fe2b0799e54e1d73136cbc4ecfdce7dcbf604fb4d54789b24ca068cfa30e0b3bd64ea14cab61fade1aee7590736ae4b8155bf6a8d8fc8119bc3fa4d53f5b3275ca163bd3cca0967fcbf860d2cfd46e26e985f67e3a13bcb8c6f34e5860fb2f84f8e61c8e891c1a89d57bda9ca06e07ea753c667d5101395a92f16ef6dfb78c4574763a48dbf65f2dcd99ec079cc4f8779dc586ee583d99d1f3ddabf3715d9ef33f856ca69956ec0267a86d733b9b73c66dc109fcb6896995335363791073cee3ffb206fbf34460b5d7488993f3c8326ec8d3ce6fdecfe8d8d34b056fb0e63a6c062ceb611273ddb67eafbee7ebf1207f735de94f16edbef702e8790deb1a27ebfb7b24dd59ddeb7355b2cb3b1f0f893ad91ba16d756b751bb9bd9bacd7194e3dd64be49731c957cf04d39222c5d967e87e3082c96e8fc84758d45d875df909c914a3a0689b90b8e7561f345f0b957f60af79c6ed1530a1cc621277e20dbd28e48ec88f6d2ce301d6bb10339d7b36fae0a9300bf47ea81851479885758465f53a328485621b0fae7c00a76b9dfb001e7af6d7ebe10edc196adbd1994732ce422d7c34bcc1ed14770ac1eeb54e86fd4ded9bd21b99d288716bdacfeeeb17973e5e804ec80c42954857316e5baba421fa5f82ab95e89e45cdd5f49faa283c82bc5659af226706e4ac19b1f6174b6fbaa9bf31b08e6feceb50087df350ea0a62a073f312330de84aeaa086021412f11792084d497de849d2fdd9b23a58d3a6f2eaff50a03ec6f65f719dbf8d88f4f6238e17e42304c83f736f9557fff25b067bb37b50f032ee3cb46f42c3f68f0d1e1388867cfb6efb1d49a13dd78aee359cfb58db52b0f685e09fe0dd6d19aef98b476ec19d4145c938c7d9db6ac7d6bab25a0b4dce6274677e2e80bfe89f8ed494dec7b1bee66ae1792f736ef03198ffa045b3105197db9c2c7288d6fcbfedc652d9e507d249c9be2de9a727766912facc2320ec6ccd75ab18fa4f21c9afca8380f8be41491bdc536f1a3f5b2b65e83ed958f4962784d6b29d178334f79cbe3daf84c874defacf2cf47fbf8a349076c97e7351b0ff3399af3d59abfb3689457b7acf6f68dec0df6e360fb6251c5fdce7433e5061652516fce5fe2f7b69aa4f25e65b498e31bfccafdc862105f38dfbf8596734c83211762de43bf437a063ea2bd061fbaf93c1f98a4e26ac9191fef31d21bc41e137b3afb31ebff9f523cc2077bdfb0be62fffb89d7d315c7c23280e888357aabadb7b90e38c7432458a4f344b901cbf8f0b02d3d22f9010b24efc4341815f914f4ef9886df5ad7c2eddbf6cbc1b5ec878a0ce173f9558e595475900006237a56ab595ea3d59453d2ac8310b98c7d84059efedd18cd24017b2f99ef00190f4eb6b39dd7d3491df40ac73d44263fa7aa17605d95ec59f35df7113fb6f593a61a7bbf271d1c9bd42c99567f1fc8241784c8d4f65c4db287590db6e46beb4148fab5f53be905999fa4ec83c2fa38ba03dfb4513db7efcefe92b8ceb263ace36fe191b51e0a387e93c9e62c9fa0952f12ddf596e170e57aea9a6bcc4768b12daafb54c6f3223615bd9b448f7dabfa329be75519a779bf5ae479d7180be28795f7f449ced6835edf6df36fc5d65271cfcc9f4de31667ceea0c5f38f77a2ce87f677f3f3ef7af38ffbccfdeb0555748816df07ed2ef645be77619a947a8e43d460dba4ba1fb2c56f3867e531263df4554ef8247b0d85db1dfaec9574575f0cf111c35f9be884d45731fe56b4b8d349525145381b1f39fb20fabfef292ce5baf456bf4657a2aee4b97f5e0c9f21b98bcc8f95f685c8be7fe563b92ee0da2e3ccf6a8c4e65bf5452cc3fd1cd32ff32fbd101fc528cb5ba0be8a877790d25f292e8ef5cd8cc7b4f8189ae75519a7c53752e58b44d7ec10dfff57dcfbdfc0f7d70d71e956fe8aeb69327e9c5ca197049c2b0ffea2fec42c4791fa151fef39be13a4175e9e8f80e696dfd7169f60e3bc2ae33c9437e43c28cd977fdb961381eda9325d113ef6607ead67db8aa172cf4eccfb6db5df69aa3b37db12ecdef761c0e53e54cca3331e477952036e1163ffad5a7833e38ba5f627ba33ff992e0797a9bc69920f4426601f7aab2cc8f2ab0f6df8672c8d4fb612ef0be1ae9067cd39ee59ae83497d8044e7c0319727fcbf681f4bb5b825bf61161b7de00fc1fc8fd27ec79c938c87137c166a979c883d8dfb13b4d4bc3ded6ba03c18ef0d13a36eca29fbffa9bce89857f5dfc6433afaf3b13e85d786ee7e963f416ddbb756fd2df39f34dd79ac7be21c346afb62f9fab61e5da6c341633c94f29a97161d14df8dac16e4577948279e90e73e947c06b55abf7f8fcfe07f7ac4fff488fff180ae3c40937fa71e81e5c7c813fac4be941b7584661b2dadcae5fb361cebe7b88b9bcfc8fb461957f613aeeaf64f534c219bd3b3bea7e7efd817fc396c6e31bb57f7f283b14e36895f4e95fc828c8f058df4c2e44d37ad1dfb02d297d3645b8f7fe438ff0c3d519a85e88c0215e7cb1eeee65595f20e32dd8bc63eeef2dcec1c72bf7c8d76303d2a87d324ee37d36bd5c721dfddefa6dce9ea9e37c89f59f0289ed7786769be5ad36f2bfeb22cef6cdf74bf897d446a6eb02d40b151e7249fb6a1f6e792f5e5e2bd65a79c9103c52897491ee640fc587221c6d291a5d71fb2c47b09e2f1f0d47a9e456cc4b3cd873c3e011691abc4be23f37f9361839f0bf1cc68e57100129d9cc67a9638464c7a2eab9b07f94ce4018909814cf33bda7a990caf9c7f179b52fa09ec8df829e077237de0ec6f0986f562f5a0ffc8537d145bfa24aa4def9d937c9e8cbff68213fe5b3ad86ac2ea05242001b1cff4def2eff7f11ff3adeb7884db19a8f3a23f59073f7997ef10bad1699da071f6475708b6c6c2b18c7d604f9fde93e952ba7c925eff97eebd26a598d6a1c95ecfe03c819f020b70ab44d9b8b6797ba775112db14bcabb48dd80367c0df5dbe8e28fc3ed7b3cd84ee507e7d1748f6a678679f35e930fe1d4e642529ffd00b7786c6c3eb6c7c679ff585ece813a7f84758aded1880d4263e7c47fb08062d7f93077a483cddcb5ff5d7e762baf272d5c2bd8058a1e0115f2fe6d1736c7e1090fa432e11cfc7fecfd5973f24af6270a7f17dfeeddf548026c6b47bc17968c4610a059f9c6890a24612494026d8b41a2a3befb89ccd40cd8de55f5ff779feeba78e2c1a02187956bfcadb59809faee97cc07c55ce2c6caf5b055ae6f3fef8d57d36fa29c43493ffbb6920126fadf8a7e36e5f6d0c51ec8fc6b2b478c04fbdc66bbb76cb6d7cf7a0ac7c0591de63164956f6805edfdfd9ac043fd97ba67b7ee3ca7c83d9ceb8e6d5fbc4e044387c67ad9aebf937164fe5d4ceb85d481d130afa87b49abf7f948a63ea4450ecb125b64711f94ea7e248feefa8986327f31f4d9f564701787a245be5860797027bfa2c23620f9f8209f80618f816477f30df6557ceecbde3fea8ddfacf22ba6f615d7057ea75abf55aba30c71c377306c97ef308777311ef57b3b763e3ea3f307febd666d84635b2be32626466d01c6a3dfa5992ad6396ee6fcb09657cf1ec375a9e950b493fa3bc0543ef2effa1095b77912440f526030b2f390efd851b76bfe0d7670b8ee5d5beafff4b5ffba77d14f68bd5b3308e7323636cfc31a05f937d8c1ffbbd6ba6377fe6bebfd25ae70b8e6efb7d8b3ff73d79dd061a71f93054f88f7df59ef7b391e77f1c6580f7226097040e6a776224bc5eb8f70de38c76042fbe2e55b9bd1a12fb1cbcbb9fcce853fb01f0f6be287b984eeaa8937567eedc3203f2cf547f25625f7e1fa9bf3f77cbb36de7e328726b6b428b94c2df347751fd17a935e4fdfd997c271c0336e6582c3c070a807ce784ef35cfd304b8b33b84e2feab763d7fdb54dd5fa77784737cbbe8ae9b67a45676ec25d7c775ba352e8604879eeeb9e5877f201892fffd647f590b624dc3b275d3b1308889fe20e7fb85ddf1a4f1a3a45fe00f7d29c4b873ee25a1d33feede2daf4b798a735a97b85cfdc77fe0d90b225f6bda0fb0c5c83e7451693edf287f368f814a6e7fcf3c15cba67a5c62d3dd267fd1fe911c23173efe096e5291d85e2f6e48bec7e6ebefd4c2721cfaab0cef7620ff0ab356ff6a9bbeef778e6ac7cdd06929285a94075ea4aad80abec8033a170ec0ce7f557f984952f4dedd8169b6e0d9cc1fb3bf756678efd264725d9aa71530fac19e3cff87c37b6c6c120459ff5ccc7f96a77637f977bb58d9ab988187fbd5d3bfaed79fce999e2a7e84c75fd845b25f67e9ad312b5fec64771c5aa76afab2d2b5b1cd70ff645fb8863421576bcfefb2776f43d1b8dc4ff20e22be30731c93be39f201e94184846badb433bc67bf8d26e4c95bce7abb82089a7be1de7e6d73dd8ef62fe3bffbec775567c5f24b58dd4bbbad6173c887f3bca7c94a1fddff06f9f7323c964fef5a7eb57637e33993f3475e686631bdacf0fb0f9974ead28b65f9783c8a96eff6182bfb419a43b3cc2527e11532f81abd1beb422581a03d75c8efcfd6d7d0c62bb3dd60d6eeb233e8cc35e4309e21eab9b910e3792cef922dcfbbbc35661301f80411cb28f318047b831e917a5eed51487f7fc425ff7a5fdae672bb22b796e1c5ce997b94bf5fb90da97d837689c2ff37daff27f6f9fec9a17fc77bed396b65bc3faba1ff75fe871bbdd48737673b5bfeb154dde2dc223f8baffd73fdfd3fafd5e3d9f417f29fbd6de002ee082bdfc487f8361229441dc8d3f7d637bd5674bf8d666a87d75559ff4369e049c02fa0ea97bdbc5c4cc700d32c4cf1ec79408cec3ce8143e3baa46bc4e344e1e431f619c443bcfb1738b46a8cfe883b87557d39c49716779ef1837cb4562ff9817f7a2970e7406419a423ac9d15bb616ca6c552bc7dd6f210e932569dfbc5c31fd16045bbab7a5e33487afdcaa27045bc60fdae05f28ed47d91ebbc2867f53aa39b319d6cd23bf7c77def3af339ad1852ff3bfc49bfdfee3344dc2f8d6bea2ebf17d75052ce7e1afca68e8e4d4c99d43db54f6b777500aed7e04154977a9d8d342a48d913b88e7fde0bf1760ceedad50fb2a0979e33b9d6f9048bf8ed3518e9a5cf4cf6cb5d11557d33328fc9d94d59c5eac54914a670efb9fa3988273b5f8497ba06533852b250b42de04614a2b30ae7927d989317340f8c9f95a8d71933fd6dc9b3cddc7fd48bf176fff13db6f8daf0e045fcb65d4af5fa9077fa9dd8533bb7cb198890f931ad557c8bdc43f0f53ee33558e47bef25f92313caa78ab3c70839b0d17db659d5f63afc8b7bd9a3e5bf448fef9773d367e19bf73dce137da847d4bacb373661458ba45f56eeb9d00a52b8078c5dd6ba44c33ff9b69eba5ad6bc7342f9745d9b659b7d181c55df8fce3f48d91dc60bc71c3a4fbb8a8fb22eaf50fe8843df9febfe134bf7d8f0c70ecfcdbeeb855fd1e04d5de89fd27013cf1e1defc7e4f960a7bd0b1170a613a5bc205ba5fabe8db7cbd23fa1abddc888bfbcdec59c875fc7fd3aff66257bf6132d5f3bdae7d2cdebfe3c895f72579fa121d2e5713d56dc0f08f19ae3cf6500e2f76ebef7f636158aec49197dddf395ecd9cfcfd897fdf01fdc83f64f962234aee2c3b8e96d7b9c39b8bfeb57fd93bfa2b7cc77826d3052764bf7887b597ce03a3798b6f1df2e2f6f430626a1b865376550e2b8f2e8565f063c1dfb22bb5b97dc71c337baf377bdf06ff9d00f7ae3df9efbbf7e0fe13bc7d616af75896ffafcdebcfb277af1edbafff57bf03fae7bae48aee05ea3bd7d73962e33fe6da41a6f9f321f9c66f178ffe373fbafae7f654b692ef52fcf0bf721d8eb675364779e53c0ae3ef7d7d6f9477652effa9f9ed1bb35fcbfeb4d4cddcaa7c7f7dca90fd3c669889dd2ac1997f97b8df270ad5436bdc1223fc606907856d32789f8abc2dd61d8dbe231aeb2f3afb177be91d3d51968f46d5984c9d23dc230fe816cfe891cadd6bbedff34b1d6ae8e6bf507573a90d32de26bbf91feff5c9d9f902c79f6c606f8a7ec079c57a063bfcc3fa383ae9afe1d1dfd39a61f6098901d54e705630cd3bf470f6620b5e6392b488553c054d8eddda1a3978e5f3d83bb278b4f9e0b32c008943f924f480607757dce7d58ae5d1ddaa23d0e119dc58487a92ef51bb6e7b07eafa3394448a7feb7e8d709e939f4bf4ca7afced17f74fae6df79567259c88757599c229e81d7a7ae674d7a123c7ae77fec817fa73d30df4dafc0d4e2ffd8038fc6febfb93df07359d8a5a9aece4ffac8217dde292844dba6034f156d8fd68e4eaddfe917e52a631ce71dfb2390e3d7bf285ffea24ed699f75fbc07ffdb30cd996bf9fc7f974efcafda24c4df750a4676dcd4b37a7fcbe5f70063a895727c9add8f8dfc97ac7f4577f43f4577fd7921f9780a4576ee335ae48b5d99f75f6b7f2d79d6f047c14fae7f9d51b7fdc0be8bcb901af545b4b1d17e857be03e8e1fdd939d5fe36f91ec7c4b95b8ae85c7211b1c0634d61bc4b55350c0950f24cfa7cab1bcc981253a3fd2377c51893c2627f10572cf73afb71fffefc42d57f18ac6679f7463eff53dd6660a325f42322622fd312a3b5735e0c3b831d60504fd5cc54c2b9c731b1fb99b073bd04f3e06d7602c466a23fd01d95b54900af5e7d82bb9b32fea18e353addb76edceabfe6f200bf65a3fd7b28addcef6c82eb3cb80b10eaaf1003bfd003b7283bdfb19bea99f9b372538dc07f88b6e9cb88dab136c47effe1fe408fe35ece2e39a78e4fa2a271538f4259460a717c83086fd001f56c7dfde1fd43f7a803dbf938388dffd1770a177e3f9ea0f732287744bb0674d9cbe5f27f97dfa10bfd88bebdff63efc693dc19a3eeee6f70622ee1d7b2576567d86db5c887e8fca643be88372e35be8e2ecea9ae3249762829e7154f96450e3fbedf2452d6f52eb51acc7857b2422fac5bdac007fd97ace6452eb8af55caa1e7129e1abca57d8502ad8dbc35c605616ed3c60ac2afe5af33d62ef858c5dae306e669bcd5288ec641a88f6f5d19c87f73ce0878fe60a7ddc4fc64e666def5b4cdfa12864fe7edee955a9c320bd2383bf99eb5dbc16797ff36e5954e8b0f37e20b23060c6fb90e730ff7f4077a416ff835e07b77203d3dc6d6fddf7c3d64bd9b32fda911f7f53977c7fbfa6fd4f31d7487690da3e35edc8583ea0f38e7b0639ab5c1685d3c6d50fb8af9e54c9f112f15d6b0b2a99f915e63394147a583fe1c3e0a02f69b09e0bf10f633fea08b8cabbe76a109d9bb533d9f9929d00775ef3f25e0fb73bf73cc82f7a3d57fd679b31cb22bccaa27d6ae659fdfebf88d6f01ac8a27e06ae7652462b72b6873d66aa351df662eaf4b36d7a893618359ef4f825f51ead1739bec4c08d488fecb6d6c4d6e595c473f56891c2a3e7847036d218501ec7be7379f152e10a4c8f9a09dc7461eab13d0af740a49d8d332f7d09c4eb1d9799f69c0a2998add222f6ad09e324611edad9f35c848e0d15c914f4fddae69eb5e971b5a28060bf730bdb0e9d550214633a2e9d3de42d1bd846429bb645ef0d27b984c9a5f04699be3123c64a80a15b503461686c2c616c8a991026978b9db0cada1232cf8a8cb9a84dfd1198cf99d51548093da7e889e6829def688cb5d3d4b5a8496b8903738a666c53581bd3e259776dcdba42c14e6c3d4ce757279d68f6d4a69d2432d614fc138db71e9f262aee46b2779b1df7edfb4c27e3428a7e5fb859e23b5a6658d12114154973b3a59f4657cf0ee80072a691b2892128239349c661baba82776deea7dab32952938d9d4d1652b4b4c59c36dfb543c008aee62acada924b0746ea2615dc856baf2c0ae2f5585b500612b73604e56c099a324fc6d7d54e57d69672766098fba9205b2654d630293d2adaa3eb9d3db77644fddddb69fb8505b3b914ced7d0de9b82ce85d6c45c99ca62634d4b33858a4a739295166b3fa1194bccc63ee4fedc8845ac8fa28b47450b7f0a2573a7a3f13c9b4e42cd2d440f19b4dfb9cc74330dbdcfa87fb7e7e4f73dac7f17d0fb0c275cfb4e71f592d565ed28c7856baf2d0aeebdab666c1cb90cc502ddffa793d26bdfce8e4e4aa3f93d8369a486e9b4b45d3d99a7c5279886683e7f9a0e548ca9c2a0f59e0b9967b8fada11b2dc4b27c606af7f14eba33033a503b5103549df71d18a523e2d4153cd044e755353f4293d31c56caf4da11032e14217b5bde9664a68b153c04045a7b38b9784a385058f9a0b62dfb6d17e2fe6a2765cb8ca1acdcf30957abcebb5d59bcfdc11f50ba2379fe64cc35486f3896de67241fb8df67fee72898ed6cbd639b49eab3d88ecab857e574221f31c74fea0f28cc6bf4975d9d883680eed87f3335d385f27146558ba50cd4fdb249036dd6c0fa8c9ffb7e637bd945e795cadaef01988f44ea52ff17ff8ddff4dfc6e72fa77f0bbf57ff8ddff19fcee013f583b34e10753e112f05c1aa4ec51162ef12c66a3407a3baf5ceee2f2f28b2b4e32df25fad4a6e4b87b7d0970ac7baf9c7d830be4787cf65cee321b91df8292bd7bcf9d67af829465d618438eec31120b7479e5e833ca78e62ad073346a789f95da91375ab5efdf7f759d3e3529eae6da99a39f7d9bf44f6ed645cab756cad2a168215dbd599f80bcef18e0dfecf2ce3cf820654701639756758d2c0a575950cea17b33b71238c22ee4e9d21fd9c8f63802913d0e9fe9f2f269c6d0d1da199f02462375f3bb63257e40b3eacd7cb397a4d69c7d9d519debaaf9f67bef939c18cfb5297fc441e0e23ea566535f93d43cbbbb9fa4f6f9edb3fc6e1fff267fad3bde6dddb395f439adeb0a927ea48d7eeff2cadd9e182e2f3fcb22c6555d806363bf7ba5e7e79d7b8fadfe6f07f2eed01bd74c284e75dfc7ca97780268df24421ff2545f9a7671ead0d0a9bea6c143bf175dfa7d99c5e353bdee431ffcb2a6857bf1daf7c2c0b460103fa1cf4c70bc7253469720652f4149f0da4b726ec97b24e51c481a2bf3afbf7d186f431c17c1dcf7dff73aa3b9d21f810ccd6119d7356bb8c46734ba8afded81ab0b751c60b5870ae0237466cefe480fe418067e9c605b2a4c0544e3179c7328293070ed2c48ad83cbcbd12c1e9fd13f1ccfb1d9a3cfe8b42fda57c41f364e01674e712679236cb276356a3652689fc41cce6b67f2277034cac2f151fb6a3824f688eeb345613f4bb3abcbcb776b63903135d80e444b2570057aed2a50152eb16c4c4fb3f8f5348b59ece37019fa0c243b07eefcec8db4ebcdb818edcfa09cfc19948fef0b18e11a9474ee3342025cf90c708e39bb5befe7a7f57e1ecd62960ba4b7e60cabbddedfed3faf8effe39a5fcd1c4e2ecdc280aade67bcfdeafed6daba6fcf9def6f6ac675fd271b97833ee3f5deb734a9ad32aa7d7fc1c35a6bbd310a47df77d82444fb99c26446727529e2d37fdb2b347db7de5965af339e2b6ffd118771e8a45ee0b1ea2933390712eef5749da5f0847b2de3f75de2b5684740203cacbd777245e7df176dca67703de2d61f058b13a609a9aa2387f919a2d9a83356ae795fbd3778fdd27acd6bfe466ae0b56b30c9716c4c9a6f3fa4cb7633a2f0b940bcc4a878744057ef17d80f97d24c8b66e726254c755bf958d99ce25250b3a6ac61a3dfcb9b73f4d768b573863c97cbbae7a4b603481dbc9f8ca5e9af8978f17956725a7586033fb5c781c896a1d4f4291cd24120c793d267584a16abfcb07d9bebb048410edced8be7141960c6c7b5ab43df9d3f7b8c8deb042e988c0e467a06f6c9b159ebf7ec1a88c20e18740c5c7d041cfbb418e1de94999f06cfa416d71bc6be2e1825f298e31ec96a3f5d1d1bdcc4757a9d3bde551bd16fbe63276b677af01d613c73c30c48fa6111bf8db45d74d9f0f06586f9dd6abbae6ae46d183ce623106109eadc89543bfb927df477c708e32f623a0b45fb185cb3d417edf1ccd528cf55a80f17c90df61cf2dc81d4e691b7b354293d67926c98ba6661f20cd2026ede8fe45e47cf02dc8f1c9efd5d56faa3e08bf5a2a3200d333fa64b5c93eafd40d6a1b33e1a5e17a49714999f5acf7eca9e8079a4801b213d087a0c5b7a2e3a0363f2db17635ea4e0ec8deceb8651ce1b9ebeae4521f147c1f39c7fbbc8ef1ada878bcccf2f73d1ba788cc00ed752e62771900a27c07399ef842f6bd1c635ac16bbd53890a2afae3fccdd638aceedccd5b24d6a3dcfafca05af59f7bbbd027df3b8f399e21cec0e3b908274c180b3bf5f1d412a1cd74e3159c02270794503ae5efa23eeec8b10e96a108cecdc7395c0457a144f4781c4e5c0a0af1b57a38043e5ab14addf51f31ccd24dfd1227eb7809f6702273c0383b30d1bfd2de756cac6fe483fcfa611f425004311ee3ca3e08214463e5f5c3d67729db91ad26dd2ea191c7927f78ec71f7382efb07faeabe7b94211c850838061a12cd88a3cb58f3e9365f8fbb8c0e3b6187bef33d6d6b692ad3582472f65c97dbb63851ba2c95932b3933f0a4bcfe56ed75c9c44e19d338b6994a713244f493fbef133d27b178c90af9df0347370cee975915638a4fd5f3f6bd5bb8f9eabecd7cef879bec367fb8268e3c318f0158c65f4b6de902e4c704b172ea68b8be7e80992170bf4fef76355d34d3e06750db51dbe17e94ef9da99c0453a39fba9f5d2f291b70b30b99d6756cf7740e43b30df98195e7fd3b129a4b3f94c910525670027a47d5128c91e5d8ec84ef245eb188c70affbe36caaa0f77c9a8eb0b3aaeff494c53d64fafb09095d0acad94b59ca2f0b193805035c3df39869be7295cc732e79c008a7a0a4af488f07154dacc83bb715b66cab3bf4799dd6cf1bd0aef10dcd09dac47794b38fef935f001e2b3d020edcafa5d533a237f0fed7788b9f0a8c2c4e9fd7180ba9bc84187f4a27c0d1ce412a107ebb27ba37eef5ffc5332aecdf8b97b288071f3c473f87d7c3457e7fdbce47dc18fddfece1e3e77c7a6e4383475fb4d39aafded2e0dbc94b85043076bd16d7b59bc1c56e5a06d2b6ff5d3c1e69840eef3ebbc7b3f75896917a7f315dd6752aabefefcb3846dfcdaf16a5fd87ffdde37f153f0821919359ec3345f2617147e0e899674447cfdd1eab5c9a67f93d6016123756ddfc9e2c8c8018c24d2d7b7707c29f6cb46e1caef5e2b6ba9350eb8fae38a96c21abaf93898d4e85ee895de312070c4b07a9062dfc6ef9598e15f6e9f7a76cfdb9d91f9ffef89f4fcb64fbf4c7d3d3ef4fda3adda04ffff8c7ef4fdbf8189dfcbf0587f4577c38aee126dc6e3e7f6d0f7914a7e9e6f38f5f193c6de37dfe6bbd5fc3328ff35fe13a8ffcc3fa33fcf5f179d81f37fbf0977f8a61f82bde879be26fd13185e86df1fee380fe0f37c7750c73f4714fdedbb9eef7a73cbe6e9efe9850cfbf3fa58770f3f4c798a1f0c7bf1f637c354331ccffa09eff07439b34f507f3f2074dfd6d3c7e7d198f5ed90978fafd29ceff1ec69f4f7f7cac61bef9fd292ff1bbde37e7a73f9e9f4734f3fb93bc3f3cfdc152e3314d8d7f7fd260bc4f9efea07f7f9ae3178e46f4ebebef4f561c3efd415314f5fb93d87e74fffef76c1d524f7f50bf3fe9217a26f5fb93d18e99830999c19862f19f8720c99ffe78fdfde9ed18a76820c62678fa837e9e4c5ea91786a57e7fd272f40df33c7965d957ea1fbf3fcdef5d396aae6c26fb8fdf9ff89f5feafefdefa7fd29df844f7ffcffa9dfa9dfa9ffe71f68bfa3cd275e1eb4624fbf8e69f62bdd1f7f0530deec8fbf2e6b0837c75fd93a48d6db4dfef4fb939c6687cfe3727d8c7aa4d3b9e2fd10909fccf5e77673249ff5c3a1fa345f1f83e8e98ffd09c2df9f0c4460cd4ee1bff4cd3a3fecc9b5e24188e126afaf26ef6efe7cdf64cd6773931f0757a3af0677cc0fe109bdef7f3e5513f886d8f170e3fdd31fc7cfd3e6f7c11ae1f1cd0f6177d9b687bfa58710ff626f3ef3184f84fe1bfd8a8f56865f5a9fbbefdf5daded3f77e2fef1fb53b83eae9ffe785af242e2331ab6db6531a27ce7f2dbb2fd1f7aceeab7a548c3509c6e3d268a82bd06c3772a0e5d3d9d99db78b92b289c5b634e249fd60e6b873e221eb67226912fc12b70e5d7d9a8caa5d91558174176a8ff4ec541e583598b360c7979bb9614087654bc96742a90e6cfb3923d7a6eb403e2f8e4213e85f143c2c563f413c6a6196c8c646530d24bcf7d3b6bfcf83adb4d89fdca609fd235949428e027c7b5333ea1efe598cb90ee08464a164a092befb58367cec71a4fef01c54eac1d9739532d366d8199d35116887434bfea9ace1f13837f2d009c8e16efabf37a07768ec16606d475db620f1e1d96da683b31f6e06ced236b9ed0ebf02a5872cced8294bd060c8beca7ccdf51b1e74ccefe1e1efd917d95e3d7df963c8b79ff7257c43ea34f963b9c8383eb1c10dfd82a6ef25176c5d51b295920ad0886db90896ffcaaa5e03d82f35448e7bb29d23fe2f9757a993316836c7579377e9d8db45d90c24bf83e7e0d18ad5cbb1c254b5ae95da978c60897806719e04c129cb7e308b1b7f34acd994e80b82abc9d35f2d22905ccd569bd9fe3f1d4cf783826fccc31ba875e384aea31735a333d5a7be7e0e21d269a31f93328659cbb5fdd8f3e576b7039af25fde8bf8fff7fffad72e9bcd98787cfbfadd7beffcc4cd66c18d2fee4c55f8f37e3bfedf2af65d537f7d6f26bf44a8fd9d7ff0e11468dd97f9f08ab87fd408abd4c98ffc8b1ffc8b1ff7a39f6cd296b659b2a85999feae7b09c8c80a35c3c47fb34f6dad9dfbfb121034f406447b37d08bd3d87ec1d3560d8532015af0e4d6535e6d8a1f3d2350a1feced53e5933800a3a066e238db940a1d3056d56b5ca3e4dd11ce5aff25ebc7dbd18287ec4c04b49f12bf9e2a5a79c81727d5cde3d0d5608589dd85bcfca20eae0b62f8e2c793449556b99c4ee3191fa5a133217ebb789b6d460d4e6efc6124d94c1c9f001f51335e89e5f872e88e59758f0dcecddaebac6a2479fbecf957cf564289ca54a338cdd2d521e42f31e0e5bc37561ebe3458eb298083b1c0afc61232f6602cde5763b900773096f28bb188fa702c87afc662dc8c25f96a2ca7e158d6f1176391146a3096cfafc6628efacff6bf5a73c91e3efbf8e5b36ff67ffcd53ce7c3fdf7bf5a73211c8ee5f2d5589cc1b303e3ab6747c3fd2cbf7a76e00cf673ff259d5f86f30cbf5c730d8f653102511073e7a57d0c17141baf537b17f29334486db849ad835f262f246e98b09b11f5d219ebd633baefcf3f578e75f21d36de4c437aede86cf7dad088a0ea1ea9b5a49cc392cb557e5acc442b9bf18a27efe9ce9cb89cf018f8b276bc83ec58592846a53f0aaa38b95d06295baabce2e37709d4568ef3432815af72229c6411e298d2da114e21cfa59e032bbc72740e191bd7df22792ee43904efcbc6606f5f3d06f752da7aa9bdf35c1be7cdacf1ef90e4fa4aca1948763dce3844cfe6c7b16a40d664141c979da5a0048efd0c8c2853cd63775e5755b4b20d596f6a694c8b45bb77fd3d6560aaf202a5ba2d8e78694c2f33d13a61ffa89454b8e7220ad290c4a6a579f6e1d2386ee85de9018df4f70dc4782f1a3a2335e0a6ecd2b1522556ce5e9a410fe9ec26ddc44381dbdba304cf058d93d49e6697260d3fa44bec57eb20c7533694e005d77310adaca13b734ae8495a75d62c84a1c095fe483fe37b2c3645cfefac0fb534a9f6fa7de75ab778c5e37fa7d8a5dba7b9808fe04c5ae57e0c5fda7755b5536df40c0e067b7d52c9b417e04cd05a9618fb6d1ea2b9518c821452cddf7cb1f39949ba76423ac0386deb5936dff23015f2d0b19efd3d957d38ed7993c52d96b5aa7b24f15c641bba9ae6338a27c747d89d5f6f4ef6f1e49a147a5f67cdfb7b86f7d0f052d97cc36bef3093f0a3bf470ca1b7e61d109d8d60a4477eaae13d351de1d21f2f75004657fe58c35a7b2618acf1869c6b3cbff09d263d89199b5a30e01cc4119937b259630eaaeeeae4397aa28ae3eede2e2b7a3b01c6a6cc5178b224e51c8876194ad0dc3874ec33053e3bb3149c83c48e3c667be8eb1ae36cd3f2ae3d70f565c84c5641ca5e80ab501b4b87b5ade78f64b42727d598407f6f1f81abe01c1a2506d42c1512c0472795c84552a7d49860ec902aad067b1b0cd72a55529c135ae782fec2792f9d3cfc458ab1424dae283092eef507b5bf7ff160ff702d6d740e80c9e2cf8b4767d57c8d317da5364bce5ac0cafb6e1d48395abafa2410f19e1ac001393a1b4a0c9acfa47eef116edcf92f2bb5535fc46b7b0e99c90cb8f0ba48be586fbb8a8148f35f7dbdb3ab677db55f93c877ec6acfb5b39f6a51c8473fa613d5a59e7bbc65ca8e7cd89e7733158ec09de79b77babaef729053faecedb75bcfd18f6b6792119f0c1e77ac1a85b074fa72b4c74fab33e0333091dfc9795462ef004c2a5eb9fad9b7de6295991e902caffb2de0ba538e55ff9d053407fd54cffc34b4fd948d31aea38aed205931abfb45ba1a0f1c7802547d8d9d747ff719e50a5c05e77a2e1d426fc05de54dcea303529bf02b76ce17dd1e8d750e24045365b2447cadeac7e88f42188cf4a5b7d760b00730801ae5b93a5c5a879399b0964bebc6cad2668635913e5a99057b3ccd989cfd44811ec31e81d519fb605deb5e50f7aec5397fa27d427343e7b5aa337d5aa5f6ce676868d67377489e22702630d8cf4f20654bdd11766b7e7b78488fa275c0e7dea572604c2e41ca52fe08f7e43ef9cc84078e76f61dbbb3373f18bb6db7fbd11f53aaecebfdbaffecee5c1ff3bd3e7f5779c8225d04e9094857094516f384d95e81d8a69b3e1e7b7b2e6958e5f0651f4631dcc31260fca5febe1605740e6f9ea3e3fae837722b43f26a96e21cc06b671ca535c27de7d199516750b3565621347a0fb6471fdf63c413d39e0a731d8db35dbb32283bb9c93d7d3942b218eb008188f9e1c963200ce88a9e4d0a3dd3b604d6326976bab275019de39047e7532f3d47437c3a5a9af47a964c966662a5ca3e83483707e86cf3ddbdd728cf2970eed94cc258b40bc0fd3d26bbb5635f6fe64068afd2eb92dc70303dded062475eb00f6dd20e8f417bf8616cb39998b36b7e4bf89121e7ba91f4789859b6ba5298b219e0df2e683d42de4b5569c57a659277bff7632f55c531fabed2e7e4dcbf12f9af237e6876c68375cb79aaa4134ae595bb675b8e8b337a7f10237ba7ba7eaf53aaf89afbe8bb11d16dad2bfdb276745c8b3f9492e7a15fa3a7239944279c491a15eced1da229cfb97c798fe3aeaaefa8bc53cfbd47cf3369d53d778d5c5abbf3e6de8089225f2ccee1f5cb7b4158e9a87303b21f4661f5ce536507d56753153a3af35ebbd1993fa4e2c5a559422f34fbb180c7f0c3e9eb7c55ff9654496fdf038cc9873b22cf74e9573694e8d78f1bdf0f7c41fc5495b01d83ed2d595a65213f3978a4267f2bc78de884745455b47d1f526c281c4fae81781459870f335767e52192f9c39f6afc5fff8f4fb47320418203e3df0e5e996c4d07e2f886cf004a9e6ae760cf35988a59cc71be78d90629dcaf25fd8af18715bdceb6d97cede09afd1054bd5b8398e4bfae5c2ef29808cad322f318fb1430562e0b00067b0d9fb5793cbe905c5d6b2b27cd35b16ae6db8dc3d2b248471b833bf9a3d5367435c8135981735481c1c18da8c1405a6dd7ce788b73ffc522c3b5f30c6e84eb1893bcef667cb39803fec8dafa8e3041b62ece638db94816d17a24b8ce17b289f9762c5bcf5d6d711cebfd709e8dc251584ea24014766b240f47ca7ec6d4d7dad71955282bca5e5894754473e3b799654ca1294fb5a53eb5b6863ddf5a82b2b41338d5add5d6a4c6db9535deaa8960ca5368aa31c7af6c4db1cacbd6a6a0654c59dbe63977652bc6ca9a5886659bf29435d0f3cc4457ec295c9a70be35296fbbb226804f8e8a99ac72796a2bf63412ac98131c8133745babee839a352d14dd42d7c0c58a2a6c7d0a177ac9b986adcb266d5bf2b4504c0b5a2b5b57c8f826a0739f6a53826125c2c29e42c12ab9a51573ef2635991af8fa097a8f280b686c8530e339d1b0f505793f40d772b2c07116d495156dcf57b6bcb504dbb0a6aca91b17d5b46c6345459c09756e95148a2d245b9396b766c22e66165ce85051cc24144ccb5ed8fc58e5a106896fa2436b43fa6a698ff4c091b40b70b40ca470278b45e4a721ed392194c590d4fac2360aeeeb705cbbda1563872f59e4a7abad2fc2e3da45f20a9efdfd9cf4a9aafd28ed7b4efc7fc31946ff64fe70c632673a7f24030fab2bddf0650fcf273c7d48377a498aecc1ca1f91fb3baa984932ebb9ca3ec43597f46bdbffe7785a4af28b1fe79faad3b16d4b6cdb524b4728c188e4050434e673cdfb7bba581a4501d5b74766a916f9e2e510f2c5b9e19734e69767d7483a3aaacdaac604e38e364695eb2f76de5b4276c1746c54e115ebb8b5bf45eef07c7947b5fe991ab3c67b29b08fb54d745abb3a44bcd01f29e14c1cb3f3f78e4c7f67a97adcc0489e37cc046ea4d5f3239d04185eeaefc62c309aba1fa9124770e982f3da596de77c926f4620f2251b2e52644bdb3e5a6bd728129f99c0452cc00f97667b36b8f076e35fe9bcbf6713d758272506d0a1ebf94eb250b44b5cbb1d5295bf719c756c8256b7298b6ce98c4fb8ee101f41d52822ec331de9e5a6a2a34519756d40ea432aa899416d97bbb74c89bd489564766d4c4eb81e3cd20b531d632755675a63c5cbd99eac81ead23bcfd5776b1ed3e979e91e61b057cec12e43eb80ec78a45f4c36e4fd257a7e104ff05a219dd5dfd119aed783f50c24ef9bb1676af77eecc37b6d7dace584bc674fb3ed3a083d9f8f897d94ed190026edbb46412dcdb797f0bde7936c7bbb8d569f6a0991cd8bfb8e798c40a9c2dba17bd69c911eaa037a27e77ccad6fba756b96fb2a86780e7cad0196f7d5178de185ce6a7905a3b42be7633646321bbfdcf65ed8be0b731f617f31cd6c371dd0ab1c15f9eabeb8da57b6467d3cb8daf5be76bdd8de83d4b77f5cbda65f38e1febe43076f8215d0e3e3c42d7a45fd03c410af761e5635ac4d3cb4cb44f68beb5ff30e48b3d701f9f1ba33ae7aa416c75fc0ea3b80eef417ad9bd6b91fefb61c0defe195d9f1d5f9c16d8df3cbdc826c502fbc8b90dcf90d1df7fba26b6df4ad53d5e900eb8322ed19cafe302afac19ffd03723c9d9acf5fb7c0217e2ef54f34805fb9e5e992dedd7835f26b967d2d92cc5bce5a09a79e41984c617ccb47796aa7da197aee27bc684f19c820636f51212fba9f22b69257084da074813dbf62d0f0d24cf2a6c89c89633c942f6dace1f2911fadb463c96b1a9e1f7ab0eedaa2ecd229a46363ae6b9eff40b7095d21fc9cfc0a55990c293e714f9c62573f50c2f959de90988ec0918c4965a63fb1aef7ba6c4e054f3d735dabff67eb41794eaea8720654732b22df17b14f6863f4ea95b9ba84f67957fb6287b7647c5ef66e2b48a454cb1cde719b063d345e54c7ccdd74651cec47136237100c243ad668f7bb6eb5a14ae7dda486a9e54cec443d6d0a449970e93858bd1db21888b3f67d3f96133a2f2d048b28e7f095fe3306cb8748f788f17e96b1eb474f71ea436dea7c57e856cb90aa3a3231e9acdba671fea8867c1f03d2b7bdf271dd97acd4e1f463145f6283020db39f7cf6a4f0627bfd05efa6551ce52e11288c5a48a91e45d5ea71ac933baaeb2c706fe1a5c0f14d6fbdfbfaf2811adf57cf0fdd8c061bea358c4676bdefb215daed86fdcca5e248f0e7253775d663bfe60e85c05c4c7e2a0e2b93d5d41b4fdb94d651fd2851a3c3355624227c0ceaf6edf972db6b8812e2d225b3bf905ccacf6b5670155f57114ad6c496f4f5ed56f1418c58b9f0a4760a27d489e01928b26ebcdd29ad6107fae7589feb5615c5f4b47242674c4be91453a6155333bd6ef0a189b42e3dc30b83e288ee72c52bbb7d6b63188c3f4e7c9ab4846304897abf9e398358d6d34e72f03df63719a55e7aca67bcfa4cbe5483ead1da497c0c817e13370e55f413ce9cbb67882fbb5e318d95e3ed5f1a7da3fb3a000457ce742021abf19ae2b846d73551ce71ef15364889e9646a3b744c4770de02cb54f615c9cba7e9c209e403f8db02f21d8d1d44c52887c163c76c3e810b86f381e56ad7dfdccd68f32ed9cad5dfb3ba2fd8d943ccb26d7d75fa7db818fb68a353ad62f7b77686a8af6e9d3fa55ef1f308a0438f605cb5d09f1fa68823e7f9819fcb06e63dd765ced9910b0ab381255a32896963cf4b9ded0711d7f046ef16a8f104dc3d78fe904efc18754cc43acc315afa6fbcfd13be249646d0544af497d6d1d6bc563aaf6bea5ed315a7718bc1fa2b94b658bbd87dfedf093a3e7be7df5fcc7e7216ed6b3c0e70ad135f6e724b9f24ef3aa6065b3295abba19fbdc21bddfabdb2e568f58c7128fd583918fab649dc56a07d499fd6792ffe48fe050cdc33390a9d82d23bb219d1ef9ac42d4b34de8a57e1f12f69eb59df137fa271a5712ecce28e3fecbe1d382e9518e82aafc4fe681bab666d7bd0323afb8b1ebe26d8ae190bcd1fa858468e4f78cdb1fe549c66a95d848e9023bb0dd971880efe8971448496e41acb715a5a5bcc7f5adc09a11107fbe3d07bf17e661f468168e19e3ff4ae0ebfdcc9a902a70719f3d12fde476a2218788f85e480fdb731f14713dfa84dfd13f3443aefb7eb6d10ffed60bdd1fa56e7fdd6978b7dde0f6461671d3424f7aaf9d7bca3598312ad811f2744ff31a7c8fe2b897e194d3a388e73c8472f38ae427cdd8d0ebd765787204ef2b549d7d734fcb13ddb32d2c9d88dbb3aac7b769240a9e23427e7ec359b89023bc358f4433293b4039215fe28780e6a7e08831cf1ced0d1a84512b23361cbde3daf58f753ea1a843d7bba67b77da92f74fd2279e1767448bb6c7c19389eddf76590b5ac74847b36397b5f0740fb993cd77ad5dad52a5e5b5fdbf0db3ce4efe906ab6c915235af443447ce8499416c27493296919d3d2d17230bed79f6d1e7613ae161d6414eec7120dabb10d7f543fa3e770e628e0a99d7de3aca927e96c5aebcb64e727c846a299fe429b67727fec8da7a8eb6ab6220d8869725bddc181ce5971cc673d631478c5b31c6b1ca589f728cfba6265dde29c75ddc128ef51f8c32f959bc54887c6053ac411fa14bf837e1a771b19e89365c5a145a93fc9eec247a0f6c70657e3c413630b2f54e38aec117f4d261fdb940bf7e4847b6afcfb4fd9ab11d51edf9aa8c5e00e62b49c55fa679951f3f0edf33f86114b45ac9aa50b458e058870d53f1df6b66cef6dd1851c1223e094cfa2eafc067fc3ebfe862b62030bea7ef1f61af0c2f9d9b48a7efdedfeaf21d7f09fcd2e6a8f628d8512d4eab7b56a5d5aff03d7bf9e8eb7c686f5880ecbc2a77e6918f2d7c6729a48f06d8569609ef457c10cb1bfbf543b4c8776ef12ac7724ef07c2c5425199d9d13302688d7d0de68c586a2950f690fd847384b264b5b602d2b11de0d0a2ef42b759cdb142b0fbf2fe51c5f0fed954beb4b97d2397b6ab1738162e5fe77f14cb47d604c5626ad9986a5cc1d9b253159932a5c938aad296b5a14e44d017e58b4ce99ed3df57525beaefaedc388d40fe9723076f40bc17b0e62f60cbe77615213616972e1d250f067392ea0c3582773ca4a4b5340dfcf4d2aa8dfc55b89cd1957f2ae1554849595a377add1bb9cea5db53c1ad22ec65e929ad851e86a70e9d87d5d5b64e17778b160600bad1d8bf084519885a2765045eb519c3bdb305a8478d330bebe687c94d362d15eb33069fdc316146e451d1533099e498f6eaec10874eebb74eebbb38759d7c7cf0211f1ea37a41bb01eae635e94d856ae7826b22766e22b1bc4cdf9cad726755930c9ab7f3d666a99d7bea668e92afeda267e638bb10e9e911099391590be9a050cb6b904ec4f4d48ff12cf5532e0ce33cfc0e7eaa09a4752f356c27edc08e395f86df6e16851b5a6dd3d4901d1e12ec0882815e991125d612bbec434543809d8a9156b61bd2c102da4bbe5c8f6eaf8560e18d36414b7ef1bf81ebc8a069af53526e70627b49f9f02063e03737c5950684d6ade4de2abba685f4271fbdb9cf7d210fdc3f64492af1ceb447496d044d7020be93068bdb4d70f5ea094d88b9b9c8578ca2e2d01dbab486e798ccd91b14dae1f5241abfcb418e0ea686074b10e952e51d1c58289f03998615e658fcc0e5d5478aa469f683127480e34f4f23937df2e2ac6ced8270fe7a0eb53e072d71583fbdcb2731efda6d07e0293a54170d3c1de3e19ceaad607911ec8915ae1c26ecdc013a07418a490a9306998e6d07da18473dd333f0da7c055b20633e65879850d45cf696a85ebc457c8fb23442b4289cea8eabcb2215ffb14c6d9822175bf4349996c98fe6f3dba645e59ccc32505af59877ebe1a3bbbbec507f5cf684b4348efccfd1ddd5feb2bfa7b0243aabbfe45b9b40e27dbe63eec29fba14f054b378af3d27c436bf9682f720f9fede9ebda3c46f86c5f71bda74368d227871142d5e861e652258e6874b6410a1cec6336a96226be229d30c27117783cbb264dab467146cfab7cc6f778e26f41ec217d9225fe678cff837eaa65c0d508dd1b10e946355db17e59dccefb4a57ba45c2766aea135ffafb319b19d48beae6d82fa74a161b0ac7cc35921310610a20893561dca711d1188f8fc7dbfeb63439b67ad6993cabf6d1e645fd4c3ce79b677a87d0b8c11bfe59bf4775e9527e80b7028fd603e9127d3c1efa3ec7f5e45dacb3637e1610bc502fa700f471ca037a3a0ee9cb77cd0e4d8ae3dedafa31755c9410ad19e5309310cd67c13cdc67f6569e857d9c3ad3e7a1582e5531913e3eb11bb703106392fbbc6d07704e06964f10f3c53dc6ad7d22fea58b76b9760189e3ef5a1def6b3e42f4c8819f33add6f3cb733ecc1918ec01ba9760a42a5965a57604a479078b88f8ba90fb223b226b691bc01192009d7f6980f517c91adec80e5b819ea35f91bed3d35daaebb18df9f0fc21d932e4291827f5883ed581bed98d6951b77ac65dba2234f535eeb17766eabc8f30c567ec88799204e1d2fa39267e9827f46124b94cfc44b16a1e27c806d954b1db5e4cb3a74386b0e31fad6c8d612e4a2323e2460eef8bd7bbf92c7d3b240b28faeceda34abe8f59d97ccb837eee50fbccb8289bf8d6f5be1d57cbfef97b731d3e3f0b4ac7b53b9bbca746679cb6faa364b19b11570217f4ce4b15838261d2a3db1a2f7bc5f6e9edef155d67d14c9c9c4311a61b5bbb6c480eca351485321470edbae7202ea24abf51c07b760446fe3993b828c0fd6daa3e97094c167b00bbeb8768233426edbd7c417fa0b956f88136aed7daac336497f5f4d02ae628be56314719d985f0c341725ac87d09bec8ce109f0ca04c7caf9d77635d2f5e3b384e9b019e8b9a733cd2238fc94f557c1ffb3bd01942b63df18fa077c1eb9ae7223f6eeefb25635f9a85de73f15c05d9bb5c67aebdf8c62c25b95f48d660dd6b645f02dc67463370ed59bc86e49ae04ae158b78ef5dcc925486d667557379d67338943f47f7ab8bf35ae97e8d5185b3da41fac37a61d1ac0393ed3971f8dd3a50e7e09fb3160a93e93b5bf659c073b7a0c084617cb187f47532adf8b310bc0884a24a3db1847ef9c8dbfe3e52b268afc3484c1b52f67eeebf5734447543f766d137b94ba9101cd59423c9dcce9089743baebf225697568fd4e24ded6c1e9603a0876546c76fd6636d16356bcfce9e17e3545f79e33d6f5086df470d16b1ccb4f58ab6ce312b5df25c4b45761bd08bf2b55b7e27d9d750a8d5e9ced8474b2c69782f43357a03da7b82e9d240f0d8cbbb5fd1ae32fda49bdf6242fc4aae383ac1f475427465aaa46417774f65b9c728fb763bc40db57abf697896c89f6c1ae7ca7c3dc834a7fc078a8659ba3b523b1796c7b3eabe2b87f8f3bc0cc9178c209e3e3f902d9a5d4202f21010e59af5ad77ce8b76ce63f65976eddc7ca3e60fcac2bffaaf364eae705d83f8cfd87c3775eb15f6cf09eea7e823fc1b899ed019874ddefae042ee6d50be086c47ec076761255769a6d269abcb226926ead902d9237fd6d5cbd7f8f4bb33369b04ef79e7feb07ca401c45a0c50aed43befedceaa061d327ad78a97d850b8243cef1fccd431cba5c82ceba1c17a7f67d68adaa3888bbca7aba1cb41718e79a8482fe7ec4fb8cec47b26776076f66b1d5bcdb73806992ec5745cfbd5caa1af3d4c6d4ea5e48e41c231d7d490dc7f0685ff5afd6afe679bde72f46bdb1617e467eaf736f2a5ee7ac10ff1fb76beea5ebce5adf59dbda27fc5c5dd35beb99c8e640a8c6b0d759d5a5f221ee06c9ce87f93e75bfaed4c6f5d6da1c2a3cce6a4d7558c5526bfaebcdfdde3bd7ce8402aeb2032e47ddf0e68e0e58af03da9f3b7bd1f892beca8b90a555aaa4d661c334313ef24c098fe559ded7f58d89cfd9aef112ddb36a14675fd4eb75ad783dc7aa46217c3346caa732d3a4c6dfe5e3107fdf9db5faab393d6aa9f8727cecef41a984f2feceb3c9d95a822ff4f0a69f1f63632cddcd1c3b98e0506457418af1e05998dae17774d5bc3fdee2e77e1891a01ac51298d461cd6fefca5c392e3e912d3f588baefe016b7db4e2df3fb4bb839a6774fd4bac43530d2f016eb8ecfe46e233f53980d7556a231bb9c98504ef14d2d19bdf2dec83852740b7b97fb53d2c9bd3e1fb61b09f131f9a80e35ef579ebfa972e35dfab7c84ff96bccd819faca2a587fe4af23b643f7c47b8e0ba5ef1bcca692d7a7458f9484b50c5bcd4cedaacaa3e95d897dacf6935426772c27d0a189b0a45bb1cfc6e611f03bacfc639a70bddc0f8274cb333bece5998ec6591bdd43e0a7f246fdbde98ab67d25354ce664dffcaae3f04e96661670f488f6860547974d2255eb57d36c9de3479bd0524714b2fedf43f24f370c23a9fb2c222e4f1ccd56088fbbdc979a5476437f20bfb38abcfa3e215cd95e4fa0825b07bb14a1c57abe3f94b7ade7c4636baff9e992d7666d5cc3d60b47320e2f9915aef2ed20d1b5950840e2c81dbb133765424231be4de6f713df623042ec7f922648049ae5f33360ca642be7601fc516e70953739e42b377625c6ad5b271ff7f9d35ab9e52a5ff96e6a7efa028cafcfc79d985f3e8c6d3c8a93635b8b7fe423a2ee8c0be7587ec5c76ee35a8847a7f06a63bf1d3c8172cab667c34b37a9d5eaca9d1c69f44c1fe7e8925ce12f727dff93affdbf2a5f1b639187f2bae185ef554f5e249f52656f1de4449b784c016551876183338127dcf3a2136f9379f9b3af47c8cf9def92be1fe282f30190cdbe76263cce45918ad7aeddd4ad3530db6bd926b55f3f6a9edd39f7cb32d23af646d67ef6d2eaddc4874c09a716df8168d44b87fb5ff96b1f9fddfbf1ceefcffb7fc119bfc3437e3dbe87eec4b61ff382e5ad8f19e751fd157fb1dacf35cf16296c72fe71dc86ecc9c87395d3cac17d726cbf8a230047c7be2c954ff22ad7bf2fff2bda68e46ea5d3e138ac5128385653f9435abbb8b25f304f27388426bf01cb3d810e18ab9717745be38083c0c987fa73ff3d6d3ff0ca8ec1f16682c3c13198a4c983427211d78032bb58ef5b5e130c6dab5a360df400d53de62a2fb47ae2de3ef9a46753a50b5c625b8ca02cd57f73671077faa2f35c65a7bced1bdd9fe8289f721c90feed923221fd78f573dbd385cb424983bee8f53064d83e7326c9e0dac88fb98f1e7ecc7eddd6f6768507819eb36a72865b1e6327b2d4e6342ecb56cf7aa0df5d2adf73d3b398ccbb8a35f7f5149c73d1cda179b88e3b8a6014707f96aace18c600dca9a540625e9c9fea354fbdd13b887fb1f147d4b622d5f11d3d3ea73798a4e2f4c5f9b8602c8aabbf7e5467e0432ace187fe116af72fdbecaf7876c603fee60402519f181812e3ece66927247be0ccec1431f07c9357aa0bf5f66d387988e4fb52ca0eaaed8d0b16adf46e34be8c4081bff96c7b01760242fd5be6520de46f377aac2767c8da5697c31fd67d7b945357ded106d0ef036dd7d6c6d81fb34388885acbec23ed4e7963c2fd16120e9879941b5f57ea87adde0095c890d794707bb86ae86e9eb81eef2091cfbb2720a648bbf7ef0510e0639802d5faefd9ef7f48d5a660cfda6dddcda6a8d2519c7ddfc2b5dfbc33bf1da0caa37f509ab7c3e675cfb172adfa0f2fad1e653464b07f7e97e0146f4a50fcceffb1ab39eff2b65d92ab612a92e4d6c488cadbeaf27868c50fa8910fb239bb29d3a8e6d27380e7da37fddadc5a25a14bbf8ce0742e67daf2e8f7eb6aa1c96ef9e51db8e4e795f5feb3e4be5934f1952f11d7a22fccb62d387ef13e543cf5f75473fede44f533ecd956b87ce4264f3d9d477feabe6fd643d6c16e7410b1a5c3a5ba4c736b2a4f2d1c5b3298b6c18abcfa35a7d18d7fb61b07d4ad7f2c6b626efc65458e8943dc5f9bcb52fea1b8c4335c6bb67b7e357294367a280f7d62fd3d6bcecfa66e06995e27cd0f6bbfde31a5fc195e4500fae6b6decfdbceba7ca025aa1fd7472734dc7c7f4201e87eb0a5663bc1783eefe7e8ba9ebfa65821137e9da3d4bfb1836be15069d5921affa43a27b2bde8dc6a1e7c3eb5b3f8d6ed43d09039af49a1cd6400bda67b6d7523ddcfc3d5f1bc62b580f7c1bad0fafa5c1d500ebd01d0310e115eb471689bfae88df2c0a5248d6b8d94b8d0e240ebdef7ab31678bf047636d520a2d37eed0616f6cee5e3fa7da335ae791ffcaa6b422ff6dd1897fc2bd81d625cb303c7e9eda4579b93e886bf02c6cec12e7b071596c4c26bf8969b2959cbd520a6d6d1ad3f3066a29bab85fd84e84cb4f8e1ca9788b19eb2639d5c9ac579fc7a452741e9a5aac0e135c6feb4e61961ee334ae44b735c5ff1f6be09b63ff19a9914ab9258a1856b2bd6bc21ee3d7b054cf6def37fa962fb7ca3ad7bf9ee8fec53c8e7ecfcfeb87afce643ba1c701d25066355245f6463a4aff5e34e18ab9ddfbb4e350fddfb157faf513836696948e7a196e6f4ee7d95df15cdfb59453604c68bd8e710f1f001b6c7c476ba7590a17e00ae02718e8ec11d43a7a0d62e9703e3b2c558bed42e8133a164a9ae2d33b9ca229bca53faecc1ed169f4d17c059cc699e7344b60b1da4d6d674d8d8e1b92c2839d2f713db0b937c637067440bb2c896b284ebeb6e3b7822a84af976ed6a671f6303aaf51508ff5ac41c15ec6d284b54e6f17286d66f6e24248740d021b2670739847f5658a06cc3587d5f05a9f34911acc543bbf9b787b63a8ef17fe17b34e98735e6065864e3f11875e88b3655e1ae2f55fee22db6daf0529360d9fa353a2a7c5b958b06bf894d543e84efe2176f189b1d3cbc6672adebce235bba8fe7d0313febf993f8fcb37f0dc4d720fd10e9fe3303c7c4333f5188deed1e79cc6bfab547d0354d4d0fdb69f97d2513f3f09dba2c46abd74eaefa4bc8e79f1ddd163a233d5c306364abae1e3e0bcb894b55ffeefe5ea8e2f86e8d4e8c17c1183605a26777e2ac98bfa2e7ddf743ae0ea406389735bc00f1ed290b718d08245f46884689aef6ddfe20993bc08c6a77b03c0f71e7835cec08e33aca88aaf1ec15d62bf75c8d5a39da0ec93de0e8fca63933c2359c0a3b8fb1af016327ab3dc62d139d8a2fa81b7c337da41ec4a53e559ac2f8b3bb713989c44c1ed44bbd0c70c4ed7dfc3643eb8d7301e2ed97e7ae47cbefe38b128339c1735c705e74af46436ad5f614b2a9715f6f9f21fc0794dbd8c1fc7c5be9a87628f341ac3256a3f72b25e6a7998fec391162bb08f05c123ad636145fb79ec1ed082ecadaae9df133be7fb4eadc2f636c4e2f966652ac135779454d3ede18e999bd788b8c713a183f55c55dc69d9c60aa00e63c1be26bfc7872095deda0f2f2c17326892cd291bf4fb6bec396c04862d53c9e6a5e21c7f227c905ab723325399ba5d979ed8c0f322c28394e3e43bec579dcf0d6d24b6f79f5d7bedb6e1ca19adbe7bc8989d824df501cb73266da95a14a021c85064c0883dd31f0e3d73f5d71d2acebcdde91becdb8069f87e52de94d5bf9ea706d3f0ff7ddcfb781c866febe5783be67e73da08b18d378c9e1738b6bd8a335bfa1017ced09fb37b15e8fefc942beca1d15b1dc4363554357a364119cb10d51925a73049b7924ef30881f3160a273e814892c4ed07557e060faab7c833a0cf7fad9670a92db2ae1ba759720b5776b5783be946c43268a429ebbac1d1b3d13e9b3137f64e33ee540b4b05f93f87fc9fc703dfeda5f6917a7ca674a61dff45e897cc7aa6a28629d26f719f693c48591ccc0f347efcb81235c439efb4d8ba9717dffcc0125a2b100ad053f217dc8e3fc008c5bdebb2478ffaecfa857eb9be07e8ac863acc38cceff74edcb79c604b91cbfc6aa7988114dcba497b685d676e847acc65bf51fe8f1604c430b7cef385691cc4ad9cc8fb731fedbc8d1ff7fce9adee272866ced0f17fb59c41b3b9ae99ff32af71bf76ee9e21a2b9d8795616b933dc046d6784a9ccbf5a0def5d94f709f867ced107f691b7727f6948178995854f8c79bb8f4b26bd32d5df92fe33a3abf3d8ec7dcfa6fff1a3ee35fc153a4f0aa8bf01a88ecb5d611aaf17eac5dcdf49808e27ee7b7bf113ed4d4130f86bf37bef86f31161dfcef1731569283f3c03f1330da0138b8a7e7dd7ac69ddf87f665bd4659406bbbb568e31eea58ae5763761978b59afb2bb93e15e003ff495d63aff68ff255ded0cd9886ebfb8d4f6bb01ffabdfadbb4df393743df1bf18736fb30c57da5471a04d56fbd38db703d08fea813536d7cc30f68e1ed05e7f58d9a78b6d2d529543ef98296c27e8db3ca1f56d50417485d5a82b9c77eb3966761fbe4c3c2fa3d7bc72f49f4cdeb3dacea366a7de6b81ffc19e98daa7b9c625ba0c5c80e69fbb2a87badb8761ddfcc41cbabb21ab389e9a88e23757d3778ad49dcb3b18bae7dbc57e78ca64a5a3471d499c8e2fcac06f7d0e040edb1c7d8972a4fe3d4cbc98a23aacecfae63a51ff7ce4c85d5d4dd08e32b111d19ce64e0d3bcc9c3a8d6028f0fd3558db1edfbe5e4ecc1f7871ad35ac7507e9aebdcc454cdb64e27d177a3509e221d0ef145442f76228bc249966c1cf3054c44c96267bdb03c1428590aa300e902e88c2179b84f90fe5bb678245c5fa3d5d9ab38aacf4ca0bf5fe138e6226ee3a86a29efe51dce65bb862ed64fae5ddf6395337b5d3218f77ef6ebd841bc6de7c14764bd48af93ce58eec76b3bb91c10f0972d48e1b8ed49c4a6b288e9009dd96d3d0e5954a02fb223d590b345da8ea5cac539f831c6fba079ec2bbfd04d9e482357bfc036f871573faee340548631e737b1a3fa4c3ee0dfbd33a2bf7ef0d103f976ff1c7f48979aff75635b0447f0083b336df844f94d3c37a979ed2c553264435798882ed6c0df0854757d01eff1ae46efbbe9bb54fb4495761f601eaba37e4cc735eec46809dee236af6554f976dfa9aa664854fb35877add3f559fd519e9e1a09631e5b6e7369a9b79eca5ecd917edc88f07750399b6e6e0cc14c2aa0e2d5aaf73c0b7b88f604727b8261ac98f8882b85357b2c264e07cbfb6e702dbebb9d0a17d5f64f74d2f309ec81160535ba5943f83b8c139213bab7ed6163813ac37025cbf49eeeb3ecef85763135fb3f52c2996faa8c6ca1418eb0e88af11cfc5fe2ad784e83cbd3ab2ab147d77ecf9b5963beef503f3d12e9ea1e53fc1a878b51deb60a756dfa72680d6a7d6c558b471862b96835ff8cbbad7cea4153b7fc73d37eada5b9745095fe626b6013ed5d10ad15bc777d1f462eb6041b9c467ecab1f8714c68620fe9b8690e4ee4d890d9916c4667375288b428a6c61f97d7a99f35c5d8f998c27e656418af898926f70bd731bd974d88693c51af3064f55bdfb9ae732c0e8e432ed0e5b393e42e7ca85154ef7e28b70078ced4535925e2f8325ceb1e370ed4df5fd2d9b4932d2d5cf4b67dc3927f2ab7f3d966a99673e3c96ae817d579df96fb30feb8bbdc4797a55ed39d1c23d39da3d18c7b32980033fb63bf0cfd9c03cda03cc46bfaea6b17ddcafb2ee6f35a8e311d4b55c1ada7d24ebb638eee71a9c42f661729e39ec85ec0357fa8c4e37b541f676e68bfa558e6fb0fcfd1c459ef886eb7a82bdbacbcc705cdd3ab54d9e6f5d9f18ffdfe6a554fc777facf2b1b23df1b7373533b3613d66642bddaddb2c85e5dad59bbf3fcc2667b89ca5f0b476f5cc738a6c93da65130bdb1f7b3dc616f1b498a1754d4106469d3e73fc4d9fb97ebdcf5df6287783cc477ced615d905cfce8d86e0ededbe4bbde81bdfa8b6058e7b4e73fab7c816d3e5f1d5becf6fec07e840d7377be77d605d7dfbdc15cdcd40ac49891b77a0ea7d9f458e5b72648576e7a201acc2d96a5f66b34b4f48e632377e5a1127b0feb5c019325eb5ed7b5e2e557c47b91ace9e432ff26237dcc3c94b876f2bdda86bc973eacc92fad7e01a6f2199b87e2cb673ca8e3bba470ee6f86e855362936d8b11289277d5997acaa23cb5daa5cfefe5cf1996b717035bdf563d7519373fc686c1f52513db38beb5410dfcd1fae8968fd026656e7293479b783989adeadef53d787436b89e9b6d2f380916483fbd42616d7d5b15c2cf3a8a5d3d4d642b48ffb22d53ee9762e8816142ec4f5e4edc63fb6a8fa79cef6addd1ec45e2abb18e79b7b6e92f9bbaa77526a1d82db9eb0950d496c5155bce0f827e937456430ce057de01f6becb5bad7ab63532ace05c1b1fd976fde4d231d3c24fd28cfb7f82eab8e5ff5ecf30fa9380dc69b21b983c6d9e01fe282c276b16b67c8e6eae5820de480cf239dd642b649274f74dcf72fe1daa67dfd5fe5216b3056e5871be6ebdee109a46652b92ca30e1dd5f49ee4241f2c79f677ec8feafba3b501431ed6eb092c34be094c9f95ecc2eb37902bfddcf1a4c2d76a7e28d0ec4cd260f87e48804b3d6f989fca340d0eeba1aaee516ff23b715f336463dde3cd345bcb40e70637f8b50e4c6a6af6aee9eca35d2e99fedf8bd4aacfc9af87719c01e621e40b4862e8c24475a9676750bb2e9456f7ea129f427e1b3fcaf140fcbce22b7ddadcaf067e7352d3f5316f977f05648c27d5cc8a906011b2a5a174d6b8c72fcbe5487ef6e3225a3ad6a79c145930d2a18f7bddc99d75647dcfa67ef9f431728d4904445c27f619ff6db6bd59555203aacf677bfd7a591fd8d4afca161bf6a6a8ed88b3c308e182a9f30f1abc42d6c12b5c91fea2c420014e0143d1da92b10d6b542854cf47e55827e0e01e7e3b6035fedbaa0e58a7fee7fd5cb4b2ea3152e3c9de073d7b731fe7d67de9b3aa6a86b57a7bc7cf5ce23a30c6a4f5f1c0473cacc8bb357f089ebebdb6a3f7577583df1aac86cf145128da35bea7c59df0d163fbadd609a4e27598b7f3958d88f3708c6dfc087b234bdac11fd939e0b918181cc646577db2d11ec11a0fb476e7dba0b6794a0ec77b3b583d6c07103cd95b6e89886e707cfd38b359a8f2c917d82b2f5585fe350dfeabc52167b3a9003b38a86cd6abf5d0608daf0d16fafd780d1988fdd9b8fe34ae3139bd2c525c4f32ee6030e205c6eabdbd5471dafadaa2b936c5bdc5abeba683eb480d656fb48aebeb3da718792ebccabbecbaecfece2888ae3e174c93b3f98cf6c6686be554b288e4b72acc2d4653b91eb0ff23e4f358292f5be04617e068b8b7b9c24c6098da25fa5e61843c64844950065bf2ac0e5ea5942b3bf60e06d49d7f51a311af53b434e9eb4d9d4657636b9d4dae7b48f672081e9c699c7b3aeeefa733457c87fbd139c4b9a8d3c1fd97fafe1fe14365e7723be7bab69821fcec39715b2b06ebe377e67f07731a0583fbfcd26b7ab2a0cf48b6070c9b0383e46ca9bce2ae6c65615813691173538c5528b914380292135016d9932f25a7fadc860ccc7d9e5b98f40a9dd79d3fc23e73dcf7baf6490725375a8bf64916b92f6b497a04f7077dd26f2299c57236fb3e46c0ca867046325089818b65485f373fb7b5bd7b75bdb2908f70edf5204eba185405e337a6b86e745efb01919d0c9c495deb05e9a2a9920a5453971ad74e1fd489bba3abdced67b12f5e557ed067a05c3ddb655f57f0dcbbba42be36ab7816c989aafb818c488dfbb6c718a9cf62b16e19452a922f2eae533a0ef96db62885bcee29e6bfd374d337a9a9eb32677dbeb1dd767fa53e5cc81757d5cceb985aba34a29312832bc9331dfff2e1f1ea9ad98ee4aeb210985949fa7cce73af24fda240eca5dff5e10fca221df652f2af5ff752f231a6f8d2e9a594b061bf9752d6e8ceb7bd94ce6daee16bb797525b6b91aae2963d9dc5a66eea908805a54a353d0df08fe8b78e8e332375b8ea1e1cb5fdc8f670d4bdfab25e3aa88bdac160bd215e56dee0a2aed4e1a6d665599c08ee7ef5659ef58ce046b10d02447b6c32b87f08ee2357c5d161d53fe6a41aa4a7882fe13a06657f9d34aa93af7404ae76f59c102e0d4534a7aceb521a67269a604e0b41e795fe5919ad6efa57d5f5d2f13ef7e5fb2fd9105c1c5730701fc3b15be7bbb873dc7b0a9f2518567d592e91ecd8fe46a05f3fc4bcead912d5797726c1f1f5cf2ee945d0f31f458ffd4780ae725e77a4ff0b7d1dd466e9d4de277dc98011557671efbaac5f6351afe8481badabfe80ad2fa8d661de2e6d7dec2f6bf1d6d7179deb913d42fce5e671e7b91a94dfe5e7d6ce42f46dfb7381ca818dfb390cce0547b5f5e66efb48373e1ba3e8f2bb2ecea4e96fa97e7706c5881ae6d43ba328ec8f070caeb9dfcf02d7a44f27b4ef28308887beaa87bdb0aafa7334b5748f07cf9ddfeba5827328d11a6c24f48e7eed34f43c9cf329ad70ade6b67f40835f382d1d32cf0e6f60b0cd68b227dc4fb4449f338af062fb8ebd5e63cc21de83a5498fd19cb0de50d50af147728cf7492a5e439c7739edf615f043816af0a16b6c3b2739c66655fe8a3a5f2cacf2fb821bbc72c3fbce4b576e72016feab2e1b8e62be633f5999d892cdbb98eaa7015eddc8d02c72deff545bcb5f1a751b8c7e3443cb35f53a8174fd8e2fac4777dae12e9e584783c9aab3d229fdbf9e9fe46a0702f97e1fae01e31267b9eed713c01aa580f489efd12d9eb7acf6f57f5b7a8ea1676fa1c7574980f87d4ea46e33025328eb0ea5b82e752e7bb8a3055a7345e3bd55d9d3c474fda5adf76d5b76f52fdded019e161661efb7bfbe8a576d9f713e0bc81d3d2e5a260af41c39950683e73f30dc9815c15c7bf2dcdb75c4e26e790e7225922382344a748a654188c138ecfc64d3d81d37247ffbfecbd499baacad62dfc834e638145a634335101415305a97a02a920a09cc402fcf5df133302884034d73ee7fdde7b1bb7b19f9d4b91228898318b31c7e0e8fcb62aaf9abdce1afc00ae707abed8065f6ab86700f77b5798a0baa77480b14e54fdd3c77abda16a413ef8ae4953cfe7b98ce630c5dafbbcb0abf37f180fbe03fd9c220924aace61bcd27767e6da09ef4d285ee1af415af1eec379af416fa8b976726fe922d1b6adfa3de866621dff1a7bc5e0d7b5e92c71d302f438bd7e70d17be6d02f43acbd24cf50fc770926e62090cc0bf4471ddb768bceab6d4e4abc1e223f656bcd5bda329fa42f777d57a445e8a5f09e23149bfaa9f0e65a83a8d20c60f6303969e57b206647633a005e7d89e768dd39b297dfe07b83e7dadccf6e7ff59ce3d162b9e8bc3e70d124c8af815a33608b507c53f786fc6b2eb39cc2415bfbb5e39ca4ef2bc33826c0c1417f9fc5738c4655857947efde2f1feab4556e8df1bb904dd58c49a5cd77696ad861a28d27905b6f71be722dce5786539caa7997cbcda0e3be17a3ddf41ca80d7f7e49e9605f9712cce75c1527c8bf2cad9e1060bb518c027188f12be26cd69c73b5df36b8a306332e37e3e2f5d727c2df552ad264ef907e55456ab4b6409ba937fa51697c0e9a0b8d3f8ff52adafa98f2ebf9515dabc55784e2729cd3d8d0f9d6a7f364da354fbace4de60ae9d730699ea1ff33f3453a77cf17bdcaa53e3e03d1c2627046de9dbb69522ca8b222f8d1f04e7016994af55d79f782bcc3a49e375f3d37016d0952bb35fa2be1bbf7c48769c606fb5463017cbeaf68565d03fb31e4735c0fc27d2506d94354317e7be2eb714b0ef9e341d2685e609d30aa8e49f7de723bb9c87c6e181a11f863e340043e5e3696d6c977d333671b19ee358b1fafe34bd3d2ef99330fef19d9dff933ade716ebd8e7eeda6bac55b2a9f6d2f0a2eab7662f67ebcde90cdd13f0d8d1cf5ec06f3afd5f793dda49c9dd48a75fe83d2e7be0270ade211b131fa4d64b078ef2ca47009f6e9069e2e4b6d30be0d476ad21b7b643b40eee1827f35097a231622c6fa4fe89351071afc8c54b054e91668922b9a5d7cf122f52d0b58a5dab0eb5e9b773314dbc02b94969202831a39f4ac6b3e2fd63b99f2b3d0fc598543ec85593e23c803a00ce4b07e0cf61ed3fefcee78d7f58644b7b9f07069f531ad95db80a3867578d2fe8cfb240faade65771c59a428dc7bb93da10d6613dd539227b9e1bfd15ae5f4bb70bd16915fcb2201ab14ddc89edc6bce6caffeadd6a2c95d94bb86dd5db35fec8e798976eeaeae181e618f7fb78fd9bf203e6becdfd59690c549c727d0ff8dd6a3e99eafee93e8fca7f687415094fa6632f38bd37443ed8bcd25aa1381238afc761ae97c9e60471e26f73a2cd5d7c60b15a809da1ec188e010ae075d5a261a04489f0822bf17f83ebfa976b9af7179cbe34d77e9b3fb864e6cd78705bf63617cf9ade54f9e1fe407bf911df4bf96de3877e817a2e39c7158bd97ce85f21b59d478dbfae6701fe72e0461b93be266467f5b0cd8d5dad919a23bb5a034a54645eba4ebec7a79b264d635732e3ea378423f75ee97eab629ca3f80c6a977df352f31937b164ad4de6a7e6d9ebbb893bce3c5b2f486c017504de3baedee632976913936bfa1f9e61a6d93df2373e1ae755fc21b79eab8e9bbbf9d3b0566752afbd2ece3f6abf0edb38a2e5f8a3ee31c0ebb4c6a556b860bc3f98dcdee89b1ce0ebe519f8345f115ab79bec8bed8f78bc77cc85055a168198c0dfcbe38af57f088e66556b38f31cf850c6c7bb7f2812cd5ebdfb51fea35a43cf4fb83a1756f5a174da4b7985ec25f2692bdeaae7c7825de43be77bc5a5f47aaceb7c157ecee7f6f1f5784fb9bd6109f1d67233a747fa56e93e8ec389f487e2b58ce26e456e386d491f68e8353d1c18334c349249ff47e53f438da91a43dc5f7e86b8b7f6f7ee7c27b7962f1599d333edadbd3e9177d6ad835b69fc92de19a7e6341b8681249cab7d74dbe233a4d629eeb7a1fb290d21591a1f6fae31cc96bd8db03532348f319e7fc38781b447767180f6cbad7e4e605f1973cf71806321d340b31e6b9107e3d1ed2b66cf6358536e2b0ecf5b0b309ce8f876efe68560f6af9dba00d2e4952ec05fd8be2cd1e459e259428fb66db53d043d7edc13e0505a85defdcc2dadc9a5b67513cc85021a8e80735927aecc5f96183f71a1c6e4f2950ef0fec2e0d6d8bd82d1b5873da0e14a5375a20324d73d23d5bc99059279f6393487058bf81bf59c6962b826ff8d739b0d967c27d75cd358ef6583e7f7a6c2a003c75fc13fe5e1b7e750cf7aec1d21f1de26e15c8bbf239fdbe3c99c7cad8584b9301bcdb9d1dcda509ab661d9b68f6abd8e3635bed88f8a2f757a4e34791da0b1501bac747b7ddcebb854dafc301ae2ad3de4c12e577be5f823076c734f40b106f8522d1ff0e2f7e0fe4eae7ee6804ba383cb0dc50c5bcb1d12fb38de4a49ee4e499ff9131de04a3faaeadd443607fa0023cc3bf72dd7fd44900bdec945b9ec9f5b7a0ec42fd50b78775fd1aceac38fb42a4f9a6e58dd0291d12ab8ec8c0c70bc950d6cedcd955e0e70b67a25a337d1cd9fcc8e8541deef6bdba84f195f7c1639e15c2fae4b3be49a9ec858f0fac5c83f08ffa5ed001e40bcee91fd78b4298d0d10c971c4667c1d9b5cf27f3d6e367752f5621c8cf9773a1ff822870b6384f312941f8b6ba979e393becc7b3cf749d1bdf110fbd7bd8f24af2368d22277ad69f91487daf22bd431e4a5d158e48eb5481e9f89f69716def794a3f5389ec67e41135b36bd624457c3e332e3d7fb236b19743408ffe26fbf81e34ad09fa86c55579d8ed17b4471a37fe0caafbe32eade6f9b1e20cd98b57be64abb65f32047d5d46c3b6bc6aa5dd55b3fea7aabc5735d35da6b6de3cd00f96294c67d47cd561abdf017693cf5abe3900fcae55ddfb7e646159bb37df2785e76f95cb52dd9e90570c6b4df2795af4e087641988fcfdc52ead443c7dc4e16ce45d1ef0ef26e556eb66bde4a8327cf3f788c07c4db4dc31c319d718e2f09b7bf5e6b13ca4f93ebfbeab8265768e38f4c1b4f32ebfe09f5cead94a48fd86cd6ded03d6fd46f79efb8386d2df7019bfe7f7cbc9b1cd1e5d1970e050dd7b04abfb58e1ff8be9b789ac59a03567376a7b00609db0393089abcb8fac776ee95d2c722be6095e3a672f69c7684df36fd5662abd7aa8ed3db76a8757e5833c56589fb44705ec4acc623e49ab1892f5b6b18bb76b874218743e1650e83f35ca774496adf12731b91fae3f131cfdc712f06c6325431e2525e75ccd184d19244f151c37dd0e04b8167427cc8659d9afd61e1b926977d3dedb9df5f1cec9f04ca64ca812f2eaf800bcb4fcdd025fa90d82e7e621f42fc3829d139514b25436bd0b1578059f6aa9c808431897e09c7711d71dc8f12c517658af9835ce0dc320fdbf2b3fa7eefa649e9f757176522f08108716c04f84811ee01d9bebb22079927ddf6759e5aaeb8f557c06580f91315e07e78e87f6bd569a87952a2d8a27a1f3867bb19513af6d9776f8ade3bf173e2ba4fc14fce0979b747e80fade3bd18e23d2f7aad4be645b50fdbf86ad23009784a978cc4755b4a932118f319f0bd91e3767ac8014f74836f406be74af4f1407311df2b8ff68bd73e7b55bb2f6382913089760470a2527b6e85fd83fc3cc15f75cd31ec8b2b52ebbdcaf35c11951f57cf2305b89a60ad2798bb690a9a1bf43bf8ea3ddb6336c8e6211b9aed6c5ef8e2f3a88a6994e816b9691106a2922b6972717a05ef4ae61d7ddeac7bf41d70a6459a38c3391bfa3b620bd16f28bd31742ce771c5d5e94d73d015821ad72c78a961523eed53217e081d4f98681da7b3281c075378775dfce08c1ff98bdd78a734b91ff2d22a6593183b88e60dd5f7d8b6f704cbe829786f18e2314f72e84dc77f5f5c187f17cdf119b627f0efdcb1d70bc7fe4063997afdd9d4b11627f41bcf9aded0fffd9e7076f5ffad310dbb725639eb87527e24ae6f3cd3ffbb76e51cbc26b6ceac9e19b4732b9a34627c900a7beb4505fa2ef7a34400dca8cd412d5a9be6919f9a7140e667f5f7264d8e5b7915d9fab01ed78e3cce5fcc2be81d6a9ebf377899bffeaac68ef1e9f39b4dcd27c6cfb97f066d7d42a2334be5b0f84b878ee255d58bb23a1ec5793bdae7e15b73b6a915b67ab7b93ac762f757f9465e090fda7a24b7b4b2d6e7ad35ccfcfe9af02c0c226dbae65a9c035f3826a5303811c6d56ee4d509d797138c7d9c4c394dca38e0599fce1e7426199c0ed597dbce8756f8d075c4d6549fd461178efdf9a144e710f8e3abda51b36f086d1db74aa3cce205ce36f87f070d075b83a732f8e583565b7a4ebeedf949d595badf72436ae134e7be294d8fb6c1450659f374efb842e14cd1f7cff61c52ab383bf6c7bee9e59dc36f14f9f3eac949bab58abce106dcec9dbe5982f6b7f819a173a231d2a2cf31f14b22c79a259ec8dfbc5e3144f6cc13811be9e0f56789666577ad67de179180ae79d91ee7916ad4bc6b689f0f49dd1ad9b7869f479aded13d757c7776edd991e8d33ee58eb37b61d8ce4376f1aaa17ddc017de3f9a9bb6ed5791e469f95f45ebfc24067edb80ceeaf043f9ad5be488493632fd0f362fc2a60b3e1fcb4defd858ccb4fdd470bbf9b0366d6d48b1617d420527b3efaee47398c22d0aa69de417d3d1f5f2f875e2079d5d5a74dfbddf53ba2fa3213c2fbd1d8a4a8d124fd0b5da347bf93cc857a1ca4a0cef551e3d1aff553e533ce71a6833f9426eb9b027cdc4aded6196ee53ca187e72b35854ede20aca1cd816fd7a9293ca8eaddbbca87ad620eccb19055631eba556e95f0019075dfc57d85c7f6178d603c471acd65c6e6e871eed679c5389b454ea8ca0a5367a97c6f573273f78926703d367adccc676342f3bcd5ef8ae2bda67488217ef8f3dd279ab9f5bce9782fbd226e69e8566bf5887bbbe35aa3b9ea6f6972adb55f700bc4073c1bc78e4d772e16cdefea1dea649eafd11e7d8c4f2e702fe363daf784e6b4d1cca913d58bc055f6ee61bde8c56516b93fcd1c56306ea9c1e9171db5c567f7f7bbbe4ea78d19e0be9bf6fd7769ca2402a91f746b3b31f844bbb277e8f849cba6e1580c38ea90afbc69e234c07a82be664b4f5b6c6a2274edc3bbf3e5b27feea86fb4f49a192d9fc1c31c6ac7945f297090bfcf813761910413f61e35594967e9b9c63e786527f7e4ceb1d6713796e6f1fd7cf56abe868bdd43bec1e2136ac07ad1359feb3dc1b5fdfdb6e620312f151e06c7b1c4d788941fb7acf8c3e3772faae7f01dcf61d0ec071b578f4df4cb5a10633866db33873ec7fafa95260cf279911f5efbbd4ccd6624f807a1b64168ac9edb9f569d4ae6483dfa5c326b481a75e98d1ebbf4f4db7b7365c396fd165ea8d25193bbe734c65aeeb3dace3ffae2751ff9eff8a7ff15cc15d8c1df7038f41c7c9a67636d349cb75b8faaab465cc75295b663dee8ad11df988a8b36f6eaf4dd83bed3cedcac07bd1d555f2ace59e1be4dccb346e675fd9cdf3de8677df3a3a2e2f02a97353f4f46349bc32beed7e8f211518c847b8c5fe68a9b9c2e199f98e668e154f97c71edf021574ee522e07b34ded01785fb707388fb2a7dcb86172cf67ac3e4eba8e4e479dffc8350cdbf37ab37cac97a38796512ec6c5e78f4d14c4f9d0adcd2dee7753c92269c6bcfc240124af5772d2e14bb42cf76e75c687215cf6d6254940fbdc9d248b0cb46eb75698de8fee4acea4f86dea8767fb2341136629855e3a58d15e02872ccfc66038676eacd4dee1db439419f6f957b6251e97e653b9b3f38a42752b5cf97a57dc69cac872c61fa79f13d83afb5d587f02e3067397fd5ea1a5b9cce8e4a855fbe32bd885803a1c14045842bf7c877ed2f3826facd476cfca279d5c3aa627d6ea88be238f7937ba2af7759da21d690ac7a3c805f531862dbf72cef3460f33480fd0e2f9a647a5e8273335f31ce1b80c6465daf8bffb8af7332d55a5f415e33c26bc2ba7f06683ff192bca0732955bf9a1f1557f0b98cac0736be0c313702dd2f697002dae3707fed6cec58c38bd75fedb7d6300ba424f4a4e48df41f9d1569913bf6e28e62e840029d81cc4b4314fb71800def71105b130ce0a5d50f49f665d0697afaacdad331dc60ce2be2f72ab817e3d53d43dcef1e67574fc79844ba276d6d61ee2bc8973d8d47708dff25e7edfddce5a7dc3b3823f1fc148bcb23ff8082d678d2e446b08f57af67230fbd12afabafde48f0a3da36527a90a3dad6e3fd15f8814e5be827667536bf7b185f88e21b7a4c706fdf289d45d32bb12ba41f51b954b61bada346cf5361c614622331c13cd2e52757f19982bdd59f687337ba0e0f3e00532fbb53f832f951838bec1b399af39a14e7cea37dc8dc28ec917e7462139a78d7c5f59a2a379cf95c5d47a0fb37c1ef849c531da363eebb56ef1d8a37182e54dc4bbca17b4913ab370ce8bd3e9079a6276355f75e10ded723aec7411e9cacb759896b25c02f033df6756f04e491801ff5b14fedb03447272aa6abf6e84c931cc129ebf9f5ae580ef6278c73bab4e6f5de53fbe2633e65f4a6c56948fa886faa0eb85e8e8a01d167844317d790f07bdb0bedf8d217e377afb2636281fb47e979dc1bfc328f1d348f536a1e97e8fee9795c6b234bf38779ec45f53cbe50f3b83d8e67348e8e4eeffdc89ec482a7536368c7d5180e9716f73086ee9d5fa97213e323fbee1cb8933fe68fd8c6ef0597cf0b9b89abab318ec9baa3c6aaf3b86a3df9bf8d755fd58b6827df4e58bb12b84f693fe0fa8b1f30447ec037e5076c0dfeccf801695cf901e7473f60d4f80165e307604d8779469eb58ee3b67606d86a74ffe86fd55e3df1e149efa185ec69d5c3dd60cdbfc73c3566951d2ea64beb768158afdc679a940bdf945f6adcf9296da3b7958d2ef11cdad6fad628b6afed33b2c17f738f919f9ae1b6cfff2ced7d3d67b4c94858d7732b69dea5c1e7cc5ef6bae7a9e553dd22acc1a5e48f7d821df897ee9c5267cf421537c2f991cf6d0d79cf62b86b0f2d3eb937c5f814d44e5ef8cfa51e8fbae30e8c7912befbdc638ffa81df31f17744dbb751b536af24d7c9accdad817cae11bb360d1e303fc897de9ae07b5dac7276ffb6f8c8ebdd181e0cc710c2afd43f397a122c6db3b16158a3b0b161c7f5dfecc55c7b2fae7b0b3bf66257af6d5842d9308afbe58906f353de7d6affab6284aef7c46586c10d7e8b97aaf7d9992fa76aea2fe3ccaff6dcacea00c9f95d11951fe2635fb01f18b271b61e7761d9197e1c17f830f2a8f26921ff0175c5b8d1548b6e7bd09f8a3e854eed81d77ae0f5b5d6f6eb1e2b1a13fba25f2c6af24280034d763ab21b058735a1db75bf8f489bce38552f2601e8a816b3a0add5ddad6945f84f3ab87d374ec30d8731fad88fd4672c1f47cfe428cdabeefa2237e56c839f50f545ba8e66b8f6aacec7389d35c71ac76b90f549cdad60e35841b0d467e83c8037a03003745f14fafe598f0ef027e238e5b3acf593f1bded7d49c8bfd1ba946ea01147b8f50f813dc35ab0d2acf4fac1ddb5958b32599c5c6bf1a348b3d049cd5cb3e91aa5001a6e7eba396f8ff3ab6bcf7b5a1f7a8bffed974dbf0e5db36dcdb5b2c55b9f000f4a043e793a3bd69a60374f9a1e7eab39b6f384ff69ffe243de11747162bc57b4aee9f48ac4693dd7a33de88ae917cf74f4d13ceede2fa0ae8af7ae1aff02fef13fde3fae8d7f8c79775de0a989dbf915ee17bfea8afcaa2a0e247d4525eb570d2abfaa7cf0abe466fe06229d5f89317fc1a31daf63f41775cbdc3f3cc41657882da83e0dc647d2ab383616bcf2218e0d97564cc7b1755ecad18bf0ffb2bcd492e4ec6b1d71e01792cc3290e3536beee6ca71917da79b4893cf0fd8d0ae5afddff483fe0ffa56a12b3dd60a5af177e646fb13d5ab47eef1efebadcf6a1dae1d54bd3709e63567f7f48aef1ddb0e8225d093f7ce3c40131b005f339aebddbd683170a7dbbdbfaae15c981a8eac08de5fd47098e7aaeab5f78fdc8b98de9792b6b3f059473f556537fe46878c7a1fe92c9a9c3a3103d1acca11fd52377c5903af701874def4e938bda8b7d3fd57ffa4b61d3e8d9ffee76bd0e8597fada7b5e7530bffc7f83015dfda93fa59d2adc7f55bfd85bb69f24af8c5efcdbd035fe5ba20b7abb6fa03914da6c67f1d88e13bec6d0fb16185eda37527363f4b6392fb8782ee1d7daf6a33567fedf9099783de8fc9e578ff3c8573e0dac7f52964a7407fe43face335cff14fea727ff10e8dc73ad75c2c2ecb4d95d787bcdca95523acf09d68ecffaa0e46f57e8da8fed13f68bcf1ba7cf4c15469e80562fe63239bfccfc6b4ee4bfbcdbed4f735e1a10e8cf65317b8ddd7573dc173eb457eb6e133c17b7367be7527176752afe0aa1cbc2abeae1bb4f05a60fb5dc839c719c13584a0ef76dc9c94b8e65663748140f34024b50ec0a033dcb6d38a0babe624e9ea7bfd3b1e8c693b466bbd0f8a3fec450d5f9abde6a1c0efe4691c0e71cc14ea2bb8bef8cfe2f0b6cf42b4e166deb3b85bd587fff67ac94515951c74944b65df152f5b65f8198cf981365d0c3d6b76f5c461a56376f5a324f8676bdf142057677760784df4ec4aaedbab4c93b3bfc4da62beecc79e51bec98d5476feb886de05e00c7ee8bf5eb5b49c078d7ef2232fa5e0470565c371de90c4c053551afc2811b68b0aa3e7f2586b71acdf31214d0f12600112557f8e6bc41c49bfe37ceab1108b879ef7fa3ab806532a5272f1fb6bf0d900e3dbdb647e84f3d38118bf136ecaaabfa6e654801cb11e664bbbc64de635feaec147b6f177a4573a19eda4c1536c14ed037df557c21672b0c4bfb379f08d83318ac73e912d0dfdd4fcaabf078d28e8b9f974f5a169c40b65b519caebcd8ae2386df575df85973d424cafbb5d8cbc88f1a16acd364d827cca9bab33fe2847fba3786cd7adfb2dae2cc608e2d5ff08334ce947032727e81f91fbaf74378053f3ceac21dca74763e8240a5b2c0d6acedb9a37a0ea996f71c4baf49e2b0d30f794744e5459f93bfc30f225711d1aead35a7ded2eff6c1abb1326c70679f7c7181a7a7abbb8426a7f10eb55aca74dfcd23c6b954375ec197ac6b6df4fcd2b6a2df45a7e3eec39e170271725354faaf800eda1d1b3be33af64faceae4cdf995dd5a41bdcb6d6f048541aa217253a1f014f4163b4292e0b82d183dc209517c85f72decb4aee32daadac6f60da6bcf35f9d14e0c4dd2e7f297ba531faf75a7a83e63dc2f49f8613bf5f6a89e646c3f89cd045cd2c9d59b1e8caa27afc92d249faeb4ce68bfa2c37f085d693df67afc2db0d7893b45df7dbce49bd0a451bed58bb0b6cdd2b484e7ed113c25f0c0549a75ad9e0e8cb3e49a7d8f7d8768aec3ba06bdb138d3c430c1bc3bc548951501b06af62a07dbfd0f341400dfa227a39d382914834336b99def00ee10f25da309a9c7d92c727fc9dfa0f1799ad31461eea0fb9fcc38ab67064bfbfc906b59fda29bf490afe9e81b66e66ecdc116ff3ec778b7d94f6a6e6ccc4fb0437e31f0cb766aa10327d0431c0039c4f6bedde4625a7ddc4fed12d9a3c3bfb44b5c875daa7abd23265744f290c0796d3cc1e33ff33b60fe299007acf614ccb90e18013c87296c7bdb0f7b967f68ad851a93e3369c86ecfe57527dc29ddf37fbd95677d22dc1312bc624db59558ee393f5b7c0c6d5fa27170a375e8fe343fe87197f3a17347aec3f78cc67859d3a039df5ac2277ad20f426d383d333ef1d5c4ad97747bf3ab54e295da6cfab8bf9cf893e35709a854e6f4134e189bebd159c480d86be17e047de5a838b3235efaefe717425f3e0f56761206d8ec41f45be33e06fe03b641f75dc33e603af3cf48191ebcdf75b7b05dacc8194400e1bf496abeb4b0937ebcff7c06f642bd17fc1a7f8bf1347567c5ad43ebbb2d6f116f77bbdf2fd5ff4c374f62835beb8ccee43bffab1d83f64fa13a0b7ebe53a1bfdbacebcd249bdb25a671fd98ed890dff1ff5d78fcb5d695bb2278c23c189f5fd896ee9e6d8b7f8977a078c50aa63ef555d6b88277066b4871156cc4f0ca6087a589b035a16f37b3eed360dbe8ca5ddd08f979800d04ce19559ad0751a342712aa4ec3fd4d7d0bc753749d66f5bcbe256dea3a8dab37759a668e0fab5c0013d7af8fabdfebd9ba123de1f59354aa0ef410177142df4b9a3553f56dbb7a3160b087267081c44447e7148c39e033f77ac37b20cf78a7bfbe569a5b3bf9d6ea436ef8dcd57246f7f0221f976bd7dc2bdfb9aebb1b6c4fcd371e8f3a0ed3241fb8d2bd88e692fb806780bcb93cc37dcb5393a37cb703f24fd05e47f45df3d571d5a5cf036bb7d52b6d915ee92a864c5a3df61c1a231d631de13bb5d2a8eeecd326f73499c69e955cb6f682f353c2a119156f416b3e986ded037d9a56794e724d05f47cd0755b7a46bebda2383ff75165db5a9acbe9acca471a7c854bfd6ae351697d3ad046c6daa139e12287ba07d83c9287a56a6678bce0bb826bf527265f4f78cf96bd018349fb8af627e8bba86b15e02b712ae41ae87e58f239f2c3e50df822685e9018b0c4f711639f0774c54c14f7a4b314f88d723cde547d495efd51c5b05ce2e3dabedac375be8ef86f6cff89eed47451e94e29a48ed2acb58af7554a52557cca1191cc22177e4bde737badd238dd078dfd99fca8b3e5dac528d0f7d19a6847823683bcb87ad6665fcf93962e61301ec5811816950e826a643f8c9e965d8c74f02793d18ebceb9d5c2c702e4d48bea210ebf64930967ff0bd67f8bd9331acd6ceba4fadcf07dc1de131b933ebd46d34043bfab518dc0f57a84c4cde6803e1b89360c7f16f9ab94030233bf95668fd95b0342657ef00eb05ec06feaea8febe505a4f05d65358854b7b45e78cb0864dc5bdda70f5134e6456bf176b62ceaa9c5b04fa45ba932a696d73698c107b7d1c57f3cb4d50f375545a4e01e041038ac783adaffafd20c318411477617d53ab8a91c44fddb582e9b7fc1928870c73d3253507e6bee24fb0758aaf2e527ed0d8a2ff7b87f3c36f0ca25f40ff46edafc2a57ee696e5f9a218dc8f7738dd9606f7138c4785569eb9a5c1155a6ff0a6a2f7a29f2f5f8ff73971ec7582ce49345bbd7a9e4f6657af57248e3544cf50ad11b847b5d650a38eafea00532e6a38fb66bc57e57fac15c30951f56fcd22b7c17c613bb274ebde8555b63438a1e19ec07e8ed1732a1fe35273ffd163654d6f9dcf345d2401dc9ff2afa5f18162c91fb5cf73cbcdb9d26710f43ed6abc2f3ef26d0e75d55bc48a05fb6c1f3d1ba619f44a4e760f39c01e89ffdf55cbc2f413f82e9c9c91de051617b82f0da99a3b577003cc7733b79af342be97cbd5fa235f244ab5b9aa7b374be6ff98e0715d655ab37294d2ea0a311cd5abed02cf35acfb8b39254c57b59c93ebb329a8b584742837d2216b6763102bf19de8323a8d20878542d9ecb283e4ae8cff9ea3967cdc8216fe1f1e7d436c02fa46c4ae2b909073e21de8346959e236890577a335e14e79e88ed9c2a394220361c5658bbb7f9376d0b0057353ea79acebdab16e06012555ea36be65e724e6dbd28356382f9719a7d2a9c937d8ee4f762ca37c3bd1ed0cffdd170a6c3bd3b82dbdc179567c5b8012f8a6b9e2f74cf6e445dcf781c2f7fccc756cf0d3471ea609d8e0fd08974f590b3fa9f81260d3d7fcae57ec415781fa0ede094e5d194849b2ac6f9561fdebcfec7097aba65aee1baa4f57726e7b68ee157b527521c866f4184f75003eb198d761247f652ec532d39b6a6efb6fa3cbe5a1af856c7beff644fedd0b4a13562587f62f3a0996b7a5d3daab6c1ab815824ec58645c479e1af7531ccd3af7e98accba5e5575a517c754b6f56fb8eb234bfce0d592c1c7127db2cfd04b57b5cdaef5a9e4f9459924a92227d7c056f6ae35ec6dedd9d54bf9c43baef6ae24247e6f700cc4cf7b607f42fc5def133817539dbfd654d3c4cf9b2799689f42bfef7b69503ad63a51e4f5b5d26e5e8883fd3a154a658ab5ea9509f2b5939eab7f7e7ae9ba44be93267e823dda5aeb04edf1be04e7c9bcd4dfebc9620c5c4091927d958ddda67b026c5e5818dcccb1b9f5d44cd6682b356c2e981bdcecd3980a686969363f4a6789b0333682684d85c9da74370627cc37bc201b13415c6d8a1d7223745ed8696972c1310e70ec9dbefb8bdbb79115ae5e24dff2ba74ecf91bf4754cd68973348f06cee1bdc82b850c6677d9af3578df487cd4e16f82af9aa84656e05826c6f5019b1734710d18e9af6308bc70b53f447072ea785f007fd9787ec398a7ae5a591e05682f96c11745fb1d13b7f94c9f425852f62ef4fb8bcced0d47bb763e9fca990463aef8eaaf9e7113736a99533a640c3731671b4c2fe77e6b0df65e94fce3bc00600ba04fd9043d0bc047e9743ddf14544acf15e7fd58de3d2f1ac6c8b756d249a43d609e6b7b5812ccef4bee7a311afd5b599df6ca6471f5e5a4dc5ac129103f4e4e19efe7878f62517eaaaeb5da9bbd29e7f7848bb647c7021ff1c5ef99b12283eda830ef0bdd5ced0d2939b8d6f0eeea1f2763936c54fdb6f77b6622461ffbadbce6fcf1e9aaf5b2c495833040f151343c6eedf529b094cbd61a5d9d5e81de27e442fcdbe9df5a39659fb19cf1687dd73af9873af67ddf75d95d36f770fd8ff97a1b6e128a4b6e013aafb89640e5f6ebb803eb03505a68c88f407b24a329b6b4e2ccd5495e0dc5bcbd46a3b4c2d96ced45c5595d92dec686a7b4c6568f6a0e5d9c97013dd3103484889fe2e844fb53ff7cc861c07d3463c3434fabac64543f701ee8713a3bcebcc04431fea6f28578d5e6195cca3615322fda478aa8643b6b7371ed106cb87f1f9d686dd6a505dc0dc9b70c38e8fbd21a655f472ac6d4c387feece63a82a0a5d39b2f15a0fb82fc3bb4dfab127d3de42f7218dbd2551f7d9c4ff47c292b3c3cf887442bc4adfdb0e1fbce68b81d40c3a00f3ab6b56dd8565aa2c486f807ee867cd62da5f187356e06c2d644f6a0e0686d422f8affb5343e473b31bc5abd61b0b430d700cd49b9b30617570c394d9c85ca0b9e33ffc865ff601c2e5aba3a05e22d7274256fe3fd9a773005cd0f2fda9774ae511d7f402f85170d2f684e03e6a51c86756e7083628135e4a4bffb1cf2db2f2b885dccb36b2bc80f446bb8077b30fb4ec236b75ae583a9b272417b083a4f209983408c4f5b061b628e76d2d00ba6fc6827af8567f6919d8f83d3dc507855df3fb5a7cad144eb0974b2912ff0d5fbcbf781b1d77963d39557363d7409b6b97e2fe5abf762260c47117a0ecc3b40de4d8cdf8d34aa38f9ae1a7a0e73c1a1b8fe35e7228fdee12110f97c6b23ff6a96f8b6897cfb7bed57c9411648fbbd2e09d76d7fbef7fbe60dea1ca2525dafd48ecaeb9e2b1b9f4bb38a2c90360cc723be8fcf301031b774207e024739f8c4635cc773d2cddeb1dd706b15580fa98ecd278217ed8b7919e78181c663c2435f7ded5384bc962a19c4e5a42fc38f67d0d70979bd88cd2963ade033d4412b5d3f88ed687c21fb2e0fac9e68cbffaf7b7bc3524b6f19f86138df7ad3a4bd30b7369c263b428def1c33ebe3acb6b4e47d888f3f04bf6772a6949c5d4be003311c6ae369b210db5ab8319aa3b7a55dd9e01a0f0df91ea81596fbecabef5cd05eb1b6a6876d0bbb1fb03c3f752f1ce665dbfc6b690d70af9735fc041e5369007807f2fb8b2b25775f12eeaebe871e8e9ab373cc432e50939da6cf0ae31c409749c33d38ff9a8b4eeaa1f58ac7ecb8d427852629429d13907de82366346f59fed6a8aecfda4aa4f6d83870fd17bcac4adad4f394271cad4119e7685ed0b9fda6f637eae2b868f2cdac4d392e7b4ab517033f16d4e4f5fdc98b86bcdf3325af3f3bb826c14842ae7a18abb82f335f5af1c5d1e138ddadf63992cb54ac5b33fe355fdd1ccf3d5941766e00b986b6ddeacd2f9e25f0c8c6bb632144f1b82acfd9772bdd1ede2d799787a7fd86c7f301c5785e3ce5be62e0c5bb78a9d057c5f8672b16d82e81665a96ec6ceee497c07d50cfc1a505dcce3087b0a6fb28d324e41ff015df45aea50bde3fce501c4acf4bcab6d6e33571ad19efd61c7a1fb98b731821d8d28d99bab08e9fe91053efd3e0d9790d797d7a7c04e6be9ab1e5c2f9f874629e11cd93661ca0d6e7c31e837591db7b86a3e35e28a2797359d9abb7b93ebaedf402d71a5bc7d3d7c29863fc9d96ae33bfff79f5b116327dbf02cc29991754bdf0a07fa1855570818ba288903f4e7a07eafa20d47431cf49e5eb47ac26a6f2d66803d66b29d3d209f80386341d7a7d935b5b6e0a7ec2c35cc57c91cfec199b9b012d1db039daf47c41cf12c874adda1714630a6bef293f10e45f3f2e813c0b9d5efed84b21cf86dffd9580d6489b13c525fd09347f09533b45711fb67b3fcffc6655caa95aedf4eef792a3772c460fefa48905807b610e188fee18c93b14e5576ff0a39609cd6d06b17230666326e4bffee3bc19d62600bd3fab27044b7bed79acf637f2771a0d1182556278bfd9587049fbf66d3b5cf5056ab2827193567e827cc23108fd748dece41b7acf98ef1678c7e2adbdb879d27408f917bb18b93aaee96bd24d60f74756ef67fd3857a8beec9068fdc479a02702f5bc39596fb963275fd063606f72efc087c05fd6dce79fda3f964617cf32cf5e199fe8cfd07b0e7ad3d29dce12378a4f9e18675f71ed835cb5944f3c6b94a9d20d7afe5ce0a91b3ce48ffd287eb986363cc654bec4f74a71eed2bdb73d9333fac185c2c74e5c7b71f0d3e406bc7d80078e89fdaa7c8722fcde609e81402f2e643d184b3b8f6732c96f1ea07f16d9b0d8b515c0ff0296539a96a4b796e0e826b7d6bcd9307d5358ef3df3a475e95a0334fed087e1a5ebc48f009338da49d4ded1aa4152b9823f38becca684eb83caf1ce29ddede2daf49e7311756da2e33e8ad07e017999c389f95e9326c2f3ba0daed70706c770b1d3794dd73c670ca7bfeea48121c0feb2b667255af74a8cf3ac46e33fbd2993f55591a01f0b624cea9ef68e358c51fc80c7eb33f3084fbbdf9b9e017f67f1a07bea88ca8f17c56f0ef25d0c0163c2523636d12de8c3cb5c11b07f3745fa88d4dee847493ff6b89e866ccce75e89cef43371b69e474e95679612c0127a251c7751cbd95e133f513c9838fd35fa8ef2bd867b2d52b29d897380fe14e6d67d699f0fa0ad829eeb908db5eaf90ed978a7179b8775db6078123f52b08f351dbdabd39180fc0cefb8c0b8665388006f2599b1497a46fc3219edc470b7b4e799c6c40da74c95293f2059c0ef02ab40f7b143f6a4899b3717478f4faa79ce6d03f913787e6dc6dc8dd8c1afa57d16be689e90c9a415b30c2bdcfd17e0a5bbf0c5cfeb8c75ada1e99dac72fd0daf7c30e6229b1fc56c0c0abc2d3f4a041a442bd02a3a50fcaa62fea3c96b0170327a01f7c6c65e275ac757277970aa4ef541b0039d75d8a4c1277002689d771fc7d1c705225357ab7c9ac79c11da6f3bea7a040bc9d4eafc57f5c58ab7c1f878f7ee74cfeef9aa96b896a734d779bd0727e7ab0d98fca9ae02efe5f96a9b5c1e4ccf17b42fdbad5ef2e6ef4fb6e6f588754d88fd026c0c1acbb92e248043e8afde5c7d22b8c087846c26f6d58d31ff3e13d7d55a7e9beb8d3d9febc5c1ebf137c79e255f8749a593596810c317719d23226b161de3309f6dc839869c6b879c897e6fcfd16775ee12f624193e3bbaf67af2f4737b96a1387003786153f253e14cece5cb63a8f39cb776987947f81b6c5b7d3f361bc7ae29cc4eb3cfbec42a72aa2124567f1d2cadc1dbebbd196a35ef1d7d0d1d3c141f39ee7da1fe4dfac3bd2357f9a8b3e56672528e9fe0e31a5632d85ac33b8a970d83ff54c5d9adb2776b5ca3247d314ac6d822f9d4a94959f12f3cf159211746eb8ffb8741b9ec2be7f9e174032e5e4379df1ac8af8d915f7bb57af1799eb434fb7a49f0d55f5d3c49386cfbf31ff58efb14489e898a1ba81ee5280cc16f607dd52bf2eb1d06375b9ff7ace937925f18e65e6ff1e397c00d7676edf5c9ebadef2fb59228ad61afe28cb57936a7f1b81edb1c51b46e7ba71e27f041401eafd681841cf07c7cbe2ea5c1bb57e63faa3d437e7b6b0c85e0ab7f22b89cbafef5a64dcf15f63d0fa65ca3592c2b0ff76fea8f3ac32f70eb89c525904bd7d19e259f05b8f7e4ccd9067f416b612717ef3b83d1bcc6e30e58eae2eaf4cef79d7cbb69b2827c6a6e2b0931fe8e4f0229bcbaf262b49b9e034d9e09644f79f723fa7d31397ec0b030df37b8921acbdeaccd200926ec7a5e4be6dde9cf325f5e5f7df22eabbcee4ebe851e7f5ed814f61bfb3d28ae61b9bf806f5f562a3d26dc57a217fc72e39cb67a71a5f84c4f8ec1bfeff4c4334c4e00ffb983939ee923b7b99c70f333c7d4f840e0a1c1f89bc0e025140b7865dd0f5cf5b824b53e418d2f8cdf5ff70cd6c7872af4b84e2eed9ec0a53eb9a1cf59dbc6979a3425efafb82e7ba3d6f7595547477e79a61ae7bfe83903dc3c3ccbea80e6cb74b41315e2d328b97900bb97f91cf2a3431d7c9ca637a044b6511f936378b3c903894aa64d7d61a5ef23bf77cefc69e5532b99264fe0f3adbd803c20e82fd53dc76c2e7bd6c26633f139eedf4e2cde0da8b524639fe4b18fc794c24491d1efddcc95cc18786eedcfab87f5970e9e34bd13edc80bf86dd3e2a2881ffb87ffa4107a7d3c799638d67aa848b304c50e759f8eb5da3bf67cef58833d95b7dde3784eb8409e0af9e916aeabbae6d9227e2ee1afa5ee6b1a649e54e0716fb88ed91827c11c6fc8bff07a8019b2b756916f2057b8da7b5292ba3a7ff8b616b9ab7f26017edecc2f3f2f5ef9997b3db44e94a62622418e98703a0e77761f8fb9cd8f40c7514b3e793f35c7cdf556154fea7d2b09bc477a41c9bd98442f84f43bac2e7e2fbc06d8e7a9c7a37eff0627e8e593e78c130e6b3442ec86f6a46b0075fff5559171cdebc5f5314e827e1fe9f40eef8aba0fbf1c446a85d9fee55e979bfcddc27535f081fc12cdf93dd4c2702fd626a26a905c1d871f18ee90ca477c6aa7acdadfadfa8c12419b6e70cd8dbeaf5e927bd36a0dae3a6a77186380edf004fbb5d11e7a0daa5af2520f2b9d884b15b75bdc2c50519c4bd50c483e09e79880efaee63d54602e8bb790f43a91e79b79ab84cba8b52c57fda2cfd72ac9e5da6e42c5e4287e09bde8b3a98545d5daa5d7c06aaf8ab8574fd53f7d2fea58c7e267df01fd5837f18f3364132e8a344d413392e0b31c7bcd39d6e2e45aab8b3285fbdd7bd6740835c6be9903a74bf4192a129f7896507eeb50fffb51a42425389467d7be8206729ac4c8765479fd2085ba22c1b1404f2170cdfbc46e7b72bcaf6b16e89e2a4e79a955132a5bf59917f9c09d5c3cf0f403cfce634f50d7393afb86d07c510e05fd3efea51c7906cfff8c4f4c3100579baa74dc0b7c8c8093c6fd7dc67952ad07b3c49a51eb9a5f6b92438f46859fdaf8343f60a2a5b3cc4b1b7d2307cd57e45360fe80524b57272fcaa3266fb6cf3aeae6c04be0007e6a02fe866260fc9ac5410f47cddb8f6276c8a173d09b5e68e204fa7a2d3e407edd558be97da8c5c3960aa5d3332b1b568f81aa838f50301a03c8169167c71c9b1ba6be8579f1d9fdd513912f3d81fa70ad3340d63968aad0785d79f36b8d80c63eb87a7c528c49bed51301f9c9281608c4e4dd35786e87eb6a545d7f4363461bec8ebca96a5ef47e53c55239b24d4b7b93b3b646113c11ea3d14ee8fc5b8eae5637ca18a713a4b9fea559fc97d04ca24e1147991b8167faf74a81dfdb37475beb27580cd043e66fd93ecddac6d42760478d57a41e2a7680f0b4e5bab4830c609300f99537e9c2a3f4bb317992b6d3245e2afaeb4a135accf8e754e1479c1fbe9a6b5977d863e654fd05ee7f586f9b78ee61a601b89fde4015baa454acd0341f6afaa1f26dc4621d5abfd89fb7f695f7dba6fc734c827c43931e083f8dc29d19953cbd98ef446285eaf88a19ead17571c77637b0f3eea7414a9fdd58f4238f77449c8c126b6fcc3adfec8178ee2b79d5c4c1addb03a7f7ff2a3e18f8a7c52cadec27d35bcbd57dbe67ff79be547fe05e0ec78e4c4ece258a8b8f3c2391bd31d67915b6aa90375250aff516aa99f813e8c0ef55cda1fc89ee94631e78be9733980e1a8f450bd84173479d1e261c71cb15873778ac6f3df6a7d3c97bb7afca7b6b7d200fdfb4d9dd43df9a09fa235ffb689cd6b6171e3ce5ee6d6ef0a55c71c12380ffda26650e7689db4c1abbb573f2ad4a539f9c37e56cd8115556f124ad77222d5383dad39782570c2f51d7b166f5233a5783d4eedef54fd55dd76c87b5281ecf185ca19e6d6815f2ff99a870cf247d5ba2075afdfeeefec5afcb5755ff0d97f703f2c6608b436137a8f4eb434b91b28569c104c38f80e2ef8045eaf4834a8fb0d701de6b8a7fdef37659a5c031ddb28b47fe01ec5ca97ff3852c71e1549b828d284b16fb5edb50067117feb9f27e4cfcd7ae45e449fb693248fd33eef2c41efbffede4a2e6ef971dc5a43d8c766e0d39f005b4a8d0b7af6ed334c9a81b1608d7f7a38ed2d4be015c2e1e01f13d81f0269b4078cb91850be2cda370668dfa07d2566ef08fa3374af898b7dcf646baf4f10cf58c36b2085e02353bef1d58f3e8e241624f5561f7c5957678ea3e259c0b0662e1a4b9e997b47a25d3cf4fa9b4b1523ea9193bafa80aa6572c27273626a92d51ef4f5587761ea12cfc6b4f1899b3c8a2209a932616acbfba037ade34345a26b9b71179eeddaaa4d674f78bb1326677b7fecb751a5d1c5e9cf121417aead22815ca4189f4c11d7595ee028b906335c7105174985e9a0b87a9f6a52133f9cf61b09169ae5e2035ff608c7663e79af2b8c6f1fed1afd0e9633c55eac28cdbaa69f511a5de8985803fe4ce8ad7e3320f6607c7dce65f6e99073294cb2632fee5b2bb8ece4071e2daacf6125cc8dbfc3c47b1d9878aaee54626da4c13fc77c40bd9b603efab360690d3d3fe1b29dfd0f301fb8ce70710d1ef040d59c6930c2e1fbaee5a3fbe986e1c74631575dcf8d8a4b175ffaffd5f8703d4cb469ce60016c1d34e66a8c14351e288ec8bd7bf31decadf23a51719e3c078eaf06dbd5c6c5116e0873ea4978dea8d230d1923a0f586af2b9d2a6bcee302f1ad3a3d1e6e284f12b8b509337b937c6f7c56256d87d96f9dd9de75c1dbde3e2a242bebbc6ee8dabda1eba3f5aa7eb011b1585574dda9c1cbb18a1f7e79509d40c54bd80b8dd8338c811fc8860ff6a8cbb99bb50e380389468f5d1fe278a656f02dae73dc0d9ddd0fa5f78bdd94027fba1d75720d645cfa149131467f1af39d480c3edae4e98635a3625845ad3ab7a02ce37cc4f5ef91ad363109e34cd98a0d885a7e726ee237ba953146ad2e6e57db4ea1ae83d5478df5c3b06255afb987b8d8a5521166d612c5e6a1c20bf8a3d1ee768081f9ef4a07508f6be53ffd02e460a935f50debd03cf2d4b14a3c29a3f07bd84db8a1c8eb7a27da4f6951f258aa3afa83ee6a444e7b28d65f08e1cc68ee945ce621892a4d50fcbe8ddb4341793d7b542c855225f05f76037bcab24565e65affc300b3897a11ff38afcb00dfa7fbaa174ec481ebcbf62b1f9fae7828eabb7368ed9614f859cdd6aef1ce3bddf13ceaefed9f486402d78e8b9262760ce3e828f3cb2f541c7da9cd8faf046e8ec05148b4ae3afeab74a80abd4f878f70e4542308e1cb6b54c9fe0c5c6dc994f6305a6e679ff0c9ef594cda71c65539f7214223b59a2f553e50021e663fab05efe36233cb0c8d6d6fd5a9aae60be4e38cfe6014f87f15d213dfe0427cefa277fd73fc2f40b57791bce2b3f23141f04e934f3307e20aa7849fd6878fb0fce0dfd2410eb48b34491a63dc74a72cc15a9fc8ff7f5acdb7d3ad18b3e9de9bad503347fd50334ac718ef83ee257f7b13db2f7e1beece3e25bf7e1bcba0fa3751fc757f7b1397219db1b06b9892bf424899023be68e900ed35b96370272fdaf770bff004e789a04767857b74a01f6b9269f25cf0a2fd10f70a0c4e8bb103da96b8a7699e69d24a50a5c16971f0d17d9ee606f43adce0d83bfa7e4f7ad33e324d769e6aa33c60e4581d5e363f6f000fb8a08a33ddeb9b9c6b2b675d4aee2846ff46eb4ae2feffba4ea4eac5f0117347636456745f0e85051f086eabde1588353f5fa61d713fd8d23ee75e6f11929e024e4bc3cc47b6fd180346c501aec0a180e684dd831c45d39f80e66022d41c7c467dfc40207daa1cb94ee670555f20f09b5db4a379f1600c4de08bded6e339ccb7f68273ad41c71ed6be07e102fcce53d2db2633cf826288372f1aee7c09c5bcc9c5e58aabd3c31c624b0beba368d290c9b5a37714a0b811fc71d8eff9403275af27708605b9f7a77c8cdffdcf3090f66f4a348a34b49ec6a7482b95dc97a6a563f1f7afe359d0a4e4beb6c3d0e9afe0385c03e48546af86ed3ba7fcfd0b53cf9eac3377c25f03e87d69d510888605f89c7d13f9ff31e0202aad937ecdeb3dafc72b7252f2bbbb6baf8d0038d7c3f7660e0c2aeef2cef1c49af383cb8b3a6abb2e4bf2e0cd3c9845eec36798ab7b50e73d9ef70c3f8b5138c09883af612b79adc3713c9fd03cf3fab321cd61e9cb736a2e16ccdac0f786e71ac60ae167d7241e706e5fc073487883cdd9d5ebaf17158fe2d3df02462ec4b53ebdb8a371df5a8b3a8669df5bc54d5ac775322f68cf9e5d76d867ef618c241acbf6799b187238da614c5b8deba338eb6f7e39acc78d7011703b3d84d88df1138cf3c367648e1f7fb367ad7aeb2bde0462cf16dd6bb8c1e0722dbc4be37b47431aef31d95a6bbc66da5a8a7d76bcbcde101f27d6eba61a9fab17e375d9e2cba8b53a3aae59d5251ff791f6b9934a0fa1e3baf5772dbb4f6953b6ae0df816d31a9efff2994d2fc5cfd6ac5552c74a854b7d1eb1ebfa7fbb8e71fe1c63bb615e33f8183287a2a57d1634d917e66c8feca08a01bb79ed36b81ea42bd776ef66d5dff9dde7324d54ae983761f3a7cdb742f0e491d53303aaaf08fefd55e7691d588fe8beb75601311c65c7fb4be8cf7552559ae1f8462cfa6a9967359e5d5ee5df7de4e7aeb96fe314ce65aed537f298c7aa39e327d8166978ffe73cc0c9567c0ec5b5eeff152702e1cefe2b1b4af7f0e3bdfdf6903370a91e2055bac13aa4f003701f946de5e1bedaf64c447edfe88f4ff868bf8e0aa56d59a4542d2fd4d2391aab3f0c0f07c5a5b6ecef4f5e847c90cfd04fa767bf8cdf1a3b3187fb83bc4f54bcfbc8ee12aee26ff04f1abb8ce2a86a0f576d2efb4a07f4fbe49765785025e4a782ddccbed267e3e8e7df3de182fd97875a269c63a717cd3aeee4faa9b0180fe37009a451f6c5d19f3b992a0df2ae6776a3e27ddb33875fe900729560cbe5a2ba07cebb67b0a7ab55bd50ca21c769dcb91b83d19eceeb7a7587b6cefb4e8f73559cdd8916111337077231eae04141b101d14c3edf1c7b7d22fa158d2d9715e4e3c377848b22f996506c5864ccfcb646e92c857e6be42712fea182678f99a4b374927b633826f18e8b0cf3461577f6b85b3a4b6ff55ab17816b7ac1d67892b9b07576ff7cc434f20d6de889c54899490e5bcfc6c78b0e515cda7fa1778672e52a233a7219b2a9eb9e619e16ffa59caa575f6bc04fa787e20c7619f854ab7a765cb4aca965d8147478a051423ba3d73e08fb35415a1767f851e49097a04dfbc3e95db988c46736b0373c04f40ab23d326a31fb58cf3ad8de240e83588bfd238af7849be8e9bdc07fea104706a5fc78550715ffba97974edf0a64913c1277a499a7413bc12bd77f350ebcc88d3fc615cf1731c9656e1cda75cee8ef9bce6921b4f804bcf3590ad9fd376309d45d3dbb207ebf9adf2ebbda8e0fdf456fbede47da2f97e589668cfc80eb47fef8bc5cdb167a167cfdf1c7d58bad69a777a9b765c93b7fb465d13bd53c851064b6b8d7102369769f259c03a6605e9a9c7786373fcc027c0d48cd8fdf5a13f81adabc8d84fa16a3134e62354a16f7503fc0d9d75b143db872075bfb60edd7fb1d740bc2bbfdc6b2e78cf237e4b13c78e76f28afa37c911d73e4c1defc524d6fb43ea81c8bf7ad863bfd2e61ab07f8c0503382f9abd246f7e1fbf05e2f08ce381e24ad9efbb964e325c8359e5dfbd2636f84a07b987efe3cd3f72c0e3de9c0fed9f13a647d5b9f32113238a458a8ea96bc6cd9ef5a8df27035736f6859a1a15b2c3fcd2c2fbdad338e3598c950a8206bdc9782c0363f434871a18020f9c35c7cd9b7317989a5e53070e0f1a3a2675fe40ada3d210889ef61ff2cbfee6e495f11b9e47783f7bea5bf6dabdb9d4baa96275a8194ecb95bd3acdc5f88f6b408cffe3b2b5ae1d5d3f54accda35d9706c20ad707eb758f7db2153d7f2e5bc0c1854b370a2faa217054ff363b6ffa8dbf82e250fa1c7edf8c909da57b0b911fc3e2ce3ed8e7edf6a992656fd3f850d204b0896e8b47db78cd69d2e06944644f300f37ebdf4ed07102d4dce89a0be95fdd1efe9fbd6bdb3ba8dfde695b46e566e482a3ffdde6d258353684aa0986b45dacf306daa37e27cdeb5dce2217ceb9b51716f46c4f9a5a29e80df70682dbe8da34d7c0fe36d4e42a9b0a1a94c6b95c5a933f9b32bc323ef9a4631d34bfcdab3ddb81da6cc66929b6d9042f5b2e7bf87d789270a1ebb9c837a1735e5e593cdafde34ca86ccf2f39107a5eea0c4e5b9ff5b7f6fab44905b4df94aaa8fc00bf1d5397c1354aacd715432d11e2bae79c4c7d1f303026d367b149cd14f9cccdfc595539124fe9acb5028627b2198eb5ff6efe529864aa761ce6f0eeb056df339bdffdae65057a56fdd44cbfd221d87595e5d1b83cf268ac722f1ada5d63b4b436f956dc43bc84ec59c3f553e7adff1fbfe9ff617ed3c7ba1d9d3754aad8a8d5db46e1a3c8dc525bb6bc43579fedc5403ea2b4b9d8bc80315dbcb05bdaebff7f9e09dd679776548f70883fa9910247863dcb1c6bc82912d4dfa17770f7f7bc90541d4f211c8f7be04287da1cd4f0703d6f5bd7ee3e3288c3a0deb6a96a773cd4eef4d159150799d6f36bbef6e7985913c5669740124c5ffe4cfc1834094eaa9e9fb006ef8aca018587f61ed4ea3fe0b4e3fa6a229b66cfc68ebd00ce34a8f550715f95ab6b71c0c46d0e4a26473816de77682fc11c8b6ced4ea7f20a906b8c918f9aa8469669121a17c6d74471e885d20a5d119ffeb6b4d0dedec23fb3cf4beb3f66581b00b0875f3857b541fb40e4f39fa56bb9d9378a01d031f61c5d93ced1a4cbde62b41367f1d676a2afd4c9fd314f639db1ef03f8b2e6fc4a748b9ce36285eceed6de479a380bfd7216a87a717a8c6950fc43ef21b7277bc82a6fe7ef21df70c82e9ab4c81d7b7127dcd7a10adc9f05f0befa22e607a26cfeed614cef7cacc91f5dfc41b78a7bf129271d7031bdc6a4b56377e4d376e1c494749d0591d2f19c1cb58f0d727aacbfd2c909de414a8d814e635ab97c0bbc769df8c74aa3e9d4c14b334673ab399670d3c88eb0158bf35fcc413617696d2ed49c20bd61cc3d43ae175d636b4d2f38c7bbc173f2c0ccc903e0a92c3ffa4a61beb6e723c63bb2f30ff72c72f05ed1bf1b3b88e6aa3dc79848ea5c3e3ed705fd163d9f662567b754b2afd67beff04552968b6742b8789c37f44cd47dbc814697bcf9e38b79a4e9ca4f606437d062d68b18fb2af1bbd7ee2534b86885e6d904ee2747dfb7b8470418f33409bde30ac7b472c57d190b9e5e1c97f6c74949f7bc12c5b973e06faa383b2da01fc9175c711f39e8fc221f79bdf5101df33de663b51a077b9d0552912851f1ced4edd24050f562bab4d03c5e847eba3aa398329012ce933691269f69dbf6e640ae22a7af976fade1cfc379a359a8a0632723fa58a87b761c7b8363a773fad8936b4dabdea70d7d7f6e2a5c03dce794afeed433c2bbe6a167148d3bfadebef3bfaef336cf8496ceee1b7996b8693240fb01f80ccdfbcf9d3b1c73d4d0bea7e35aae2641ad26f2fa33c893f86338e6eaca315ac709136749906b08fdb218b2fb0af787d8923778df1b1a833fc9d0fe659533cafe2bb9c2ac45f46fc0f54464eda37f5f7dcc29007fbb720cebaac146a3cfa7772541ef958a23483dc143eb0cde079a677b06f3023c8d849bee194609b492d2b582dfe54cacef7d9c456aa99cb7921942cfc211f34c3a2c0efad95aed3dc1260f76c061d9f99be1d3f52d73b95b16ef1df6198d49ee8076ceec88d6ba5316e92c72c8f87291da73725784efc938a3cf56c0fde703ff67e7bdf4493d29df8af1dbb6daebf85107760fe67ca44d47d067e7d8664e7a05ef4bfb0c6bfd2b9a143bbdd869717276effc101d6be2f52b7c8bc54e4b16bc73c4eb7fb9d9e4763914d1ef96b68ffe9ea3f5bbb472f4f706cde5e56684fe26ef4c1136253ab77bf5fa9013d9a0f3eb167f34fa6ee2a745f86df063e2dbeefeda176634023e911ff7dea17f42f7bdec6c7e365d6d169b5f353a9ee70cfff61c17a717264eef3c59719becfb4e7a937961b789cdcf15bfdead27a6654e84a5315decd65cb15cc5d3b9cd854b833befec7278d84ae661cbadc76bd084ab353713156b52e3beaf9470670357342fa8629c77f09897ffe3fcef72f84f38cc37ff04bf68f7ff01dfb9ecfe13fce2b9751fc94b1ca5dcc62fc66c0e581afd450e98cd7d6ef52a5e63789548cd322f505ce5d23d2087e2fad51bfc2c8d49ee47b930d793a4eaf7f013eeddad749348ada73336ec3fd13ea57a5400fb906e2ec80fdcdaab137a1615eb69a1b80ef01cda11f92209a78aca558912c273b4017e360ff3d6e570fe74047cc3fe9de77772a5e1bb81cf5d3dfee3187cf97554ea5cf32c724e4eadff5484b86e41713ee9b7d0d13b78eea25184cf3da1f2d6247778e743abd77cae19d3e0ab37109408f3653afd62a444830bc671a03847219f573a9203a1c5a3972e8d0fe47386547e255e1eb8db576f75d66abcc587e098e7d836403f1ff9acb7652f3e39c8af334e9146aeef8f47a72df441ac324d727ed4327e73a12f841cab17a9a673d90e6b83dd550b7a69dfdd883b7ff59c8cf0439eb6968bdec705eb124def3bf916e1679a7af3293fda49e8ff1c8cbd63e637e0f0932697c01adeb7529206e23e6af8f1f782a30fffedf5920b7ec7746c36486711fa6c222cad7d533310b902e77ef63f156e662bb3dc7481fec09181f7da8d902e7b1b4ac36f4ff1cfb2fd710f3a7f0d377edec56545f2ce1caec352bc8be37fa03339a974c2927bc515c77044767c5fe91957f36ec96ac0c177aeed26feb1e5efc8abdc8f58be69f41c567f1690fea1e7dab38099edd6a4a279d1028cfbbf2eedcd89d5fd5508ff407105cdba8390a8c00516bfb5b97e3b7aa4de77642f51f56182fce6ef16c6e1e1b9a6d0cfd63c5bd37b19ce51dc0e5a1593a2951f3fb0b1778dc142fb6ce8c7534e1d7f64cbde06eaef6dee7e97ad39451ad6e4019fdab1679f81b8bf111d39de392e383fda17aa91258f7a0d2dfdd7c718a0a9d7614cd9259084b9d70fa8bcd530f3d275f23d11528ccb697f1fa7b3882bd0bb50a2d11fa554e83a1f75cf28f6affa5790ff87ed3d5a53f5fa949bb9f8f03cf2c7affb17b5179de77afcc7d587774f4a0eaebebf6968ed3f8cd1be8d3d031c0eae5114b8eede33433f5d9c30a734f481024e07742f914da772f4c84f5e961813837bee72413954f80ab6d6ea1d4ee8d81f2f8a731fb017f30873a422fb3442f6e98075381576cef4953774acda57324d12987913d4fe27cdbf9c473ed1636d6940ff5151acf704eb0f3d62d1086a344aa4e43ee073d07a5c51ef771f2925b2e5f8fd7b25d6b80cc4e13db066f74056a05f2218f31c35576f9a34aa7d95adc133bda268bca83af279ae231b1e630d5f7b45d57fe30cb868a86bcdc52243fe55ab7e9c57eff02b52fee07538f8a3a098332ae07d7e45f558c3e73e8acd808b17f44139d7e0b9af468f4e581adc89ea8fad6aabc8b680e61c55af46f79dd1b53ea2e39e69c745e2d8b3c3763caae64cf399c8cc15728eea780ee6cd561fde5d6b5a3abd3d60f4aa6744e7d7a4f8b295a677746ea53a771a867e6fcfcc253447b7644ec37c8bced571704e7c0e78ef8c16df2c72e93c57dd7f41ce578f99aac7388ee831632200275e6f9d98e66ca64acc77ac9640bfe6016a6bb59a9b38c1f58203e6f646e7aa38e1667c33de8aa81c55f6fa3fb31278f7784f5aedbd54e070bfd53a717a424c737a01af9794fcb8563154a44588e27f57fc8c402f32faccbca31b7a52122bf267e2a78bc43baeceae3544cf9679a97f99213fa9d92ff6585325068ce2d202ded13f5bdae6182364ebc95ca0eac3b4ddd7f139e8f17474768e69a055da8c29e4ede9396831dfbf31f700da64ecf9618fd20b166321718ffb0bf32c5c1bff817df66a9e629ed86a0ec37764be09b887667adf8a4eeaeac31fd78e018709fb3af2dfa19e4ffa0fe455c54bd4a51154e902d1f8390eeb77d45a2d77d27b7cf66516c71ab0d80b21108b16dfeca6c68756d7c0dc9d8bab97ba999ff21b3f9d621ca0255c4c69f4d6ceb7631e53aa375f9c082ec581fa9c0b7ff3a7d25df84a37ef4f302ed9b27c9a1b28977d85f0a56657e011c2ff075bbe6d34f8f0773697e3dafa3036483f8b6b2b6f9dfb07c4231f8fb563acadd460582a4eb1567d95c217557a4125abdd0ee742310fde5b5237f364e0647ba58982d615ae5fda5c8ed6fdd67287cdb3ccee5f291bb7331a8ccff8990f2c3fb30b9c05981fc135cea55ae619d4980db67f16c5c30170f9cca68eb538b56b124ffa466a2e572fc218818aa7d5bd73a12ab27ae40c26ad87f658a1bf936f61f5b796aeaf0e79a6679f77d47f5a7985ba56cda972807cc56b00f8c261bab56767d847593c59bfe1866bfa08904fe1f57dba770eef23c067c0d75c716c8f1acf62ade4ca9fa33829c15e6e702f8414d0788d7b8dd7301add9ba55d3f43dd1b84fc3d143ba2f3a9c8e7a8c76918066972746ce038e4fd9e59aeac00c688f169e2e9c5956738af110d2264c33563426c5af7710b717083bc05b96e20527eb8385b78bd59e6499bfda6374d1d7b9655c72a8fc78eb7f2ecea591bc891100e04f6ba0979e6fe7cbf91c2ab976e22f0eb8f8f63817c5c5893a44f11eba3778d592c28fafe3c877da0fefee2d86ee6f6a6c04580f6533f9e1ef13ca3ef07f9ab6b348e11f08d1bb8164cea7807d79c25ee7196f8bd7dee357560e07698452eaf498e80799ed726bc13cca35c7a56d5e3c631b570f72040cdf81bf225e7e47b53f7d94f997a85bdffb3386403a807e9c3c8b11709deeb849b2acd4fcc677a9c7d450a8beb988c1e7c6ce8d938547b5b51621f17f6b3dcbbf3f5baa071be5b8367f0636a6f54efabe86fbc8f52b9c1127c06c115c34c9372d0a1532514771497d6da34987c2560c4f617b487b9927056c518c57f06e97f38cdef4e46f9f5a536a9f31c9ba50dfdc1f4b9c7e0d371ad9ac4c4c991cd5c3779073a07919be2f0e2f5d7997b4ce6b8977698f8c7f9698db9ce49bf67216929d11089d81ca60dbc43f9f37d81eda9aac61e625a88dbd2696f6b05a06d0e182a7bf6e9f6a02f8c59637e9a2c37a592ed308674b49b4c4e46d9f8296a0b57ba11f7d93707c7f45531ceaa9ca87100fe3f7adc3e6bce8bc92083eff5620c7a6398737c0338e96e7fe3e4eab7683311564a549c5b5813b0d94b6e7efaee553a6ca7ead887dee3677162eb3d5c962613ff93791dbf137b87e3e20377a372d53acbc702fe1ec494cb2a1e961561de680e0a5ec4975fbd118a8bbea01778b2427126e4142add007cec49a8c6579b2a82d53b81ef6db3e33b6fe1247e54bccf086dcd0ad53e5fb434b852f9bcd9b2e5e718700f39de2b26f1cfd2022c3afcdb3546a766ef98c6eec4ec21db47f95327e5f879f565625ba36287fcee59e4d676c0b1d6f1da7613efb86ed643b48f60cd4b8b93630d8faeaee41b31cebe0e109fcda07fa9baee71967896d07337fffcda7e6a9ebdbe9bfcedf5c918bd2df549417c6f69699fabb5fd46aff34a9fef2b9aad0cfe23d224ba77e0945735455d062ccd5c93417be0ed595ddb3ff03d826b345411db97669ec6efa6d8f828a63c0b497fd1d54bd65755567225f93437dc3ed2242eefe49fa1f1af9bdb0978950cbe24763c845e1f6c4bb06f5f2690cbc59a0961dd938efbd6a077081dfbe620df94f00da83a8a27eabd93baffe1c94fcd7469af18dd81c060d712fbcc785d69f25cd844545e4cdefcccf5f8dd2f6b6d6f5823aa5ee84b7b9eafcaf09d7e37a6b9505af6a1dc35b142d77e75d9c23b23fcbe3697d7f8b7e73d81e5d27670dd6f3a3fa93ab2efcd7c508dd736cf8f6ed1263657c6643a5eeb4aeee98ffd9d98c79ee2b6c0314686de1b7a7ed29f4572199087bfaa5652e9c0e2fb376bae0634b66f5bd2f3ee1a59b8237d4db8afec9635eb9eee979f25be54844e6f730ac4f81fbfcb2aef16201f770a7ae7a4a72cceb449cbaed3e34161c2fd23576b0efc7e8f98577ca71747ef9e4d3429b8aed2e9617bcfd8d88c5b9d3463828fe32a2ec5871ed1893a866322d08fb93ff426d339a604c7d868ef8beb77668a433a763f31f83c391bedc47081fbe24e281e7dd0086d8e3da1bd04ec9436e1e0de55644be0798b8ac3e3e91e68623d98c44b699bc8f6c318fabe788861397c2d0d78027881d672591fb13fb036f8776c5b67a197fa6fdf3df302792a13f7043cf56ba2c9d31e1f451f452ae63e13b42aeff59f9e4fa7f2af3ae4bb044d1a5efd5e1122fbfc70bf5111bbd6e2ea4ae60afa61d385a0c980e9397d1dcf8997d2dfcdf32a57b8819eb4ecb06b69496dcb9616081d47447336978c73527f5c234b1afcec471eb4eade4649f7be3cb7bf1aae19507ea072a0eb90558cb72c9508faeb48ee7a6b0d8faabcfa99b77d42fc2c9d3694c20cff5071f6c33da97a1e29c063c69edb149fad29dcd7ecf6a99e1c8285a27a72b8eeb8782050f7f277b15d8c6cb6997afd7d045cef98630934344df84d6dd72b9f32633163a33fce21bb02cf608473d7a033f680599efc518e785e29872c047dd3bf8cd950fcb836cfbcad17e7a5e55c484e17cf41b1e8c367ccbc6cf136880dcf7f50864be47fd2182f32ee80cf064e4519af45cc65bd12bef57d67ff5e1b6fbb8e60fca4a6c6cf5335b662033ae852927e6f8accefaf132f354bbf0c99bd549b38976a7faf6210fb0e31c68af44ab2fe2dd51706b5a603bf045ef1037f56a541a5fb07b936d504bd55665ff3eefc001def183c731fa4e779477aedaf9a18264b6bc2e6ad716e83aad1417eb8ca21e37c4a5d4381ef706d03ff0efe566bded301f8001b982b7b881faa75fbc57f549c4f5dfd613bd51c41ee7155a2f784f64ef3b53f296d903fb9dc884abed53bfae1c6c25895cf9586f75b752cbd4fbbc0d5d0c67657fea7c3e407bc033fd7d222f4fbeb596d9b24d0d5aee3aa4adfbd8eab644530c4215a2f9cdec46f5087518d9cd84e05ed93e5d2f8c8ea9e7a6b70f60fe72b7a6f36d6c79ea8d208f97930a7314f7b78ad63b2c94440f655934e82a7879faa71fe847c73e4a49b32fc7715176e0e789e1863dedb8aa1ae9a8f1a82287efdefe231e11fc7554614bf817dd930f9b1d2b500873b051da549b3de547106f3ce215cf64a547c55ebecfbd0e885af0ffc7b55fbfea230199af43236d735a9cacf8680ed7c5acf958403eeb95a5d7cdb4cfc6362b856813930a37d04ba47c0ff06f55eca375a611c48cfe456f69af3d3240a90cf2bce60bf5122529bb5f253a7ff98c27d01464e2da1c67856a5db0f6003a17ff9751ce755715cad3f52f361ffa398c04331c1d434f48e35d8150f6cc5f002bd951677f2c43347f82590adc3b6cd3eaf96f6ea4123fec918205f48706d0eec61ad95d7b5de26cc5ace2026d9dc2e7eafc8900f3e178bab7a9f645fbdb8aa8da03871beb4e2bf89d52e54ac36561b7fbe74ed4f1483272d1bc3f60f418c568f7f5d8bf847b1b534c8956436dd4c8acf15b7893429fe3dbeb6406390ec31b71f142b211b52e325a61f02c4f9b252e30abc3bb2818ddfb115d97d4fc53929d02e43b6cb989eaf36d4ac8b962da6ef95ce490c097f05f2a183eb57bccadd9e203ad6e2a75d475a8bfbf39c1cb7ae70f9e3c798091f33030dc70e5bdfc1fd44d52ec6fc06f3077e96d0e32bb2f1c7f7b118a9130ef9e839d81d31ce9f6149bf21e776823dced0014b53c7289a446cdbe1315eabef03f7a45e5cda0eb2bc51382e6bc563e45a7920625d22ea78e989d6389db75b00874eca675e14567f87df586b36037d7a862360f4b256d4f05f6d487e3e488229e47fc7d5dcaef7db3baea76ced75e658c5d43b221fdfbc6b52ccd419bcbbe029d128b20decbfe21c32b251d31cdb807d1e184c0f51b8bc7fbc3918ab0a7909a3d6319db3e71e8f7a5fe92d77eefc1072c38f78b2365ea58fb900fc06ff67fb5823284d12bac6e994dd397836fe28facf72f0aeb87f7c4f4714cfaeaf9ebecfb4e3fabaa9e2a2f1bca7d2316554dcabfdd21ff36355dee473b1c81a3f974371f57969c517cf9ade5ed55159fb757b8a8b42f78be235e092928b58152bed7e5f68f9fa11eb87c198e078503c271a8a2d4be841c7f381bde792196fdce37cf835af857d802eee8264d9737ecbe5979a846d22e6a1ca5255a478b1645ff8ee55b14476a6628997bea9679e6fb65ee0e71e67374d322fa06365cfdf3cbda87a2415dc17e8e7b06f8dff22f727ad4eaa5ef45bfbfcef6344f6792ffa7d9f6fde575e20df87795f4d8e20fbea357c23cbe3ea8f170defbe84f764c071d46305f8f8ec2b1d30d885967f4f72cbd47e7254725c37d9bf056251df03b3cfc8752eee6ff2dea0f7c4aed1f8dd297fcb7bd3fbdda0636f86bda7afa5d53b5e78f5184ed17edc7ed627fbe77156f31cc0fe992a4ff74f27fa8bfdb3a790fd73117a313adf9358c9f6497d6aff4373670663140b3969302ea8676b74a35fe4299b7374ec2558776f7ef17b26f43d7af62707f1ca8bbc628359995f3a30371057d1b9c2a0cfff359f43170ff15ff174b7f9c25ff5b948d37fd26fc3b7fa5c5ef296fbfd769fcb07f4f7bfe2957bc6d354697fcd2237b11a7dad2c90cc12301d0947388f06b4e664152f83fef4d21a54fa8b09f48300b66c5d7e131effaf3264b80481bf46e7f6cb03e02f43555684ad3ebc80c68718671ada13d3cdbb6a4d6afba11d310755abafeabab4cf09c64066c98ed16487eb97e8fc7e348cbdde30c175571eb8fdf0b8c7e92cadef1d303af5efc1ff1e658114965edfdf7be5105fe748f3f64f051607c4e0edae2add7b7834ef75ad44dfdf54fd56aa665ed81d7a26aaac10ad9769ee49a02bf9a8bff4c83bc76847a8f729b12d8567b7f2a08e5ee571f621609cd3ea3e99debb84e9afa8f7f7977a25b4bf1d0672310a204fd0d523c2e2fd5b3d27bfced7b6169cabc76f4a22ec6612ad49b9da2bd13951cbd9ce2e67a41e7e43be2d8bcb2be9b5c8e2c7940efcd8b24f721ef78cc6dd0097d68b5ec6bb6b15e9b2bf483cc979f364b49fb1bcba5eb4bfcfc5e7dc22ff1f776fd6a4a8d3bc0d7fa0fb6000b5bb396c5191d585bdce04ba65557e8d28f0e9dfa82c569799b9977fc41bcfc1c4b42c45ad59995999d7d5faa8dcf058a984fbe7dde5576f5f863905b978bf1f0ce2f2a58550fe09d3455e37faa89150c81621dee37e1f1ae4a07431319abd4fbc94f8bcdbb8462fbcc3e5d2cacab1f03aa4eecfc0863c8fed33bf2b87f074af9537dc0f0a97b01be6a3d84fc4c0e38fec177016ab44270b8f53258c7344eee1dfb55ac5b9c79815b6370e769678d18b3e3b5d729759c5fb9378758d4cd7a9a6bc0acea9af5e6a1a2ed55f57c939594474595cf67eb649a7e7cdc2c8641e787488fe71827acfb08d8718f3eaea2fbf9fb9a73d6e0bb657f03bd4868bb17e84c7a6c672c2c06b6a9115d222aec02e5dfb8993fa39feae522fb3f6b766cd6ebebd5f0dfa8dda90ef177f1c677e7adee8d0efa27b9ad3fe227b87312765aa8e350b106356e49bc7fb6f8eeeabfa0e9763fa7c927b75f68ed662809859eca5ec8dbc8ff74084d756872562f06c7d6875ecf048e3fef7f9e4826c017eaba41dd41e5fb3667583b378567527937912dfe1d5d047b46453b9ceaf66eec4a436a70b89a333f6785f8b7cde8cc97b5e06b1cb279572002b617a56f4cf297ed74c93c4afb3771370dacd0ae9b85ce786f57364892777b9a25c7e554339d1b0ff69dc071b382b598b573c1f5d787779c3e3e0336688981272b2c7f79daa2f7b0667825eca9ebc747521df50ba6fe8d8a621ef50dd3b2bb5f4ad555b4fba2f2bb938969f90b62d07f507ecb0f3c152ebe61eb6d1be9bfac1b86d4e979b83e79fa15e5d9837d3b34aceb06b3ff5d75ebaba1df824227dee30d8c66bb87ff15a833c31358c7367a2d664cd06993351ee65c2739efb54ad3daaaf23e1bcdf27de5a4cb04e4df2163a5e4bc8936eb8748fc029ce34bc65e19c39d82868e4c2515adc8e0a379d48da3c4384c3f1e8a626f048fa9cd0b60dc66f0ff63d5b7d3dacdb17fc8c1374d2533646060a1cc2c301391588376f78de617d0071d3a3c19789037a2ae4cc5f5d1e38dd19bcd6896ec1a6c21a657eba3a411f739fe72df77993232f239ceac0195a20cb8c053ea184302131f8164dbb6942fd6d7d1d86bdb8b65960f9f537fdeba709e358644c84a61f9fd547e6e6572f9c1f0feb3de5ad9537b9624f077b7ff62d013816646655f8e9eac7d1d8a21997c263ca9b637d1e5d8b8d7dab4c08a77ba961d947d66a9cc96b954130d77678ad70b84d58be6bd62c75e1ba4172e94739f6ec5fdb0a7fa9bf37b8452d2e3ae1cb716b82afe58523acbd219f5d8bc3fa4c777f6a53b5b8f6e46c2ecebb7c09bd8f49c5ba10d6bd3a3c196e16fc3b6d1ee72c0cf0ca487dd9ed00ff14eb521d3f1be4c65d58dc9efb3c54a4c54d2e81c02a8b4bb5e5e3ceaedc4c841fa94a8aad95b85e42e5a3b8527e9a6d23eaf6bdbe9d5de0eea2219f7ee8d77527f45f6220888dadfd77fd30d4b75a1e24b5e14192164ad69cbf17240fcfc0cfdd1aeea3c20d032c6f01cf01ef514e4dbbc229c885f016babc17ca9c78419c900b27f582af7dad95d0d6caf4ff0aabc94dd9b56fef417768306c02af2ae371bc80d361d1a0b0bcfd675834b3eb7e6252d87ef4aa21ceccf129ce0cc8a030cefd883e4b9570711836c7efb93aed0e6d23a7fa6d9ec8207761ee22937a47bc99237b9f086bf2bb1d4be114d42427def825006e8bf12684c27bbb8efab5b52478e0bd6d34e62260801b27877d4e7352576b620739219426ce8f1736385104ab2e7f852386b8f22187127c84a73d2baf3ff32f668c9706d832f7b943ab0beedfdcd7707d6757d9f2697f8d75473ca7c0d71539f6eeec6ac4870bb28a711e716712bce70a390a9fe054318371adcf90f74de40a7ab29e92f7b1bcbdb353473830035b544b9eeffb31d1e30e16821c4437051e63d87f50bacabd497cecf2ecf9552db47a5f35af7dabb91ec6c35c266a6be621b62d654e4c0f36e08a842e835221a172173022a61f3ed7e37a48d5a520b18f24474f9ff8c590fbde5f5d0a5b8b7b7f416a4e846583f5c2897a578fbefe21d2e6c496e193f46099b1cccdeb83358b9086f58e21ef741078d5fcd6f3717e9e84f002dc8652259cf0be48ce96daf39a5731129d1ddeec4546936f170fb09bb0fe3c7c9fc8f5668c5e722d7be18bb103ccd132742cf587e813e6d4e389beddf3fc2d8779f9e1302f1ab771886f8cf781f6fad6bcf8248f18cecfcf5f4cffadcd49c89dc97eba495956d2cae45b2baf281dc70634fcb3191ae5358fb81c7ed7677913134bc6c1fa2d7f772559fbc4e54d0a6973d22686c49b0ee6e4756b136e80838ee75ffce156a3f9974916eb1e4c8af8ab885f886d309aaf0dd64b84b42093010f73c8bd5cc21cbf1bd7eeac0172f9571d2f66e056499f77a75f86f677efff8f96240ec6683035c678abedb940eb5b1b96912b207f7a3c9d97edb53b5ce9abc524fe86590edbdec941ac5bf9eb63ee85630cdb6f88bf8947d8e12e03b8ca57372c1339655304e79a6c8ae037cabc14f036a1bf645cc6a32f26fb628c02d9c1cd9d889457d3634cabb1af0670be5b1ea2262e2c6bf4a016bf97c4c43fc1eb85b3fc013ff2ab67e08cb53bbb03eeed77c1623fbed73d7fbc35117d8831d2596ac0d1fd36dadf741af2e101ef43a71369bd077d8ce003c7433e6feadfc0a11df64f75efa7144384c761e2a666b5efe273f61fdffc202fd3fa4bbff889c4d6ff4f71b3f87bbcaadfda01b37b3b60d3d8010d9766d6da068fd8bb4bc875d86a01b69b810b73a3c52d066f89cb715a9c15d013ffc8b936e488cfc7dceffd3a061c2bd8ab1ade081e72f2b18e7eddf2d377b7ca7f245b745d9a1af1f05a0c3b90cb0145705d56a0e7343ec6445e114ec0a10ee2857187d12f697d1ced40d7a4094edfaec57e071ead3e1fef4e275def2077ee1e7fe8cfbc64cb171c7b42e154e57b9783ab373c813d8f663ee0e8b8e7d2eb31164f548b231f3cc1917fb8d6cc99f819ff7557e73fe4c103b60b70a7fea68c573c10d4b0ff15d0f59bf8cf2e8763939a2cd6e37f83fbccca6bc83b0d80bb1a721e007b7e1463e2436c8dc31eba7c367ced4ff89c498165448b7d8fb43ed61a816d8665fb6c81f7c04355660fd8c5c476c9dc749678899820c0c0ec72971bfdaf7d1ff08fe9ad15173ebfaa10635232afb0f77c0d5f132a3f68e57bf7dee3b928e59d9277b76af0d6fab32b6ae0e302ac7244e22e97adde0de7d66be03b1fe01f13bd1659fb8fefe6cc414e45aceb5fdd53f901fa7fc2c23903d838b6f98845dfadd965807559d73229c7c0367af9816d4277bd97919d102ef5c9be7297dd3d823f867f6b44dfc4ba18e1af21f5dab75895dc3193d7c299c4bdc6a3b35cc8d9b28eb8ee8c1822c0f3925fad4590f765d4e0699178519d66fe680f0fd615e836c318a188bd6cd229b193fbbc1e2c8313f9b4bf36b6f1609e94b3177369c0bbb8c37644173f48b0583ff0b54139e2c86741d6c8a33de885b30438524e2a96d5558b19fa78666d0ef3f8a3fb3c7eb2667a99e545f44de277675f2b93710ce0c3ef7a6b0bbfdc70368a59c17a06c90ba09eae832fad7c27396e592df3fdbaba3f57e86271b19cc1f36f10e7b9a9826c3bccf3d0b32657f088e57cf66d8f7062cf90f715b117e06a8be05c39dda45471b06605b2452c77581496c10b3cd6abcc539d3d2cf3deefe51a2ffc51ae39104f2eb0a88adf9d3fc833ab1201f759b654da3b8930876c6dc0e7b868309a4ef3003146d8cd59125fc620e3cec77387552fb4cf69c2db01f40583e438d8283126fb99cb1b2d46f1b01c063f8708df59eec2f7927ad7bc0798d3da28de6ddae083753c6ff2d260211f8a60bee607e0b051a92fab4c00179a7058ea5bc285d48e536e3ee279136c705bcc1c8d8e7c5bac508b01ded467778f633f6edf332cf1865710cbfebe5dc427d7cd43fc5c0d6749f63ef35378afc3b0257f2739f8ba4efb2b7e77d08e3b8e95d73a0602aeaa598df5292f6cf6d827f16cdfebde3fe4542dbf52dcc7234f40360fc724dbda9f67c4055b1974b929e8908731aedb626b2ba97852063955c7abb4ca0ba93affda9ad36013eedfbfb56366d1a5ffcdb19ebda23299f17221293d71b10c25adfcde1acaaf61cc020ae373cbe3d87c87f0702eb285cc9b530778019d3b5ec063cf19189b1d0f8fbcfa64056d797675f622ad3e72378cdfec2acef588de6d997f1fa3c65f3c62d4b47e1ea45f0aa9ca3362038f316adc841ae60114284d72c2eff31bac1a8813ea70398fc43f73cc7d2d7e3b70e57c6b7efe7aaa4b54e53bb637253dfb91f9f3a39c7d223336c9672aa66cc7f13cc2b38ea7b86ff15a78db110e50ac931ac37d08554b766b09bf0ee1acc2f212dbab469dfd33d4b7b6a692bfdaafbeb4f29f217fc1535fe0e03c611c274d85eec9bc38a9593de8b3faf987d8250d0ec8032f57bb0f1c2b353a524a6d50aa6ec0d988ba1066ea2266d45a98a99a7356ea4f4a898c99ba30988d393dfb0b0affa39428a636ba3351a29816c3e3abebb552ef6865e1556afd79b381c774f7a344cb4aade352898452e5f2b3bfb87d28ba9089d1aedae8bb991a79d5463732fbb4fbd7369a96d896936a65a22e3c46d19599529177542d4ec7f58d7f94daa0958553abfab2549319b55ddc669216ffa80b8156f478a6d4de4c6dde57aafbf7932f7f31fdd7365a32c091520bcc66b1ab557d47ab276ae0e79b255f77585fa33dafc13d416979c57624ee732985983d88d3daf32ceda4e5c3fe3e8c1b807c5e6be42b796f6346f07ef6247ee477319da02b4a5c4ce2d186b650b81c60ab0a78de4e7deea53f92c63a916bb6b1d7f3d865cc5ae0c127dbf039ce93aff53c7126fb0471f3b9b18cdf041efaeb2c69f3a13f23f3aaf9e560ab35c45087433f2aba7ab1193877793d835c12889d6bfc60a0b7f6d8c7cb77379ade36157571c3043853499b8242aa97e4bcd0bc5c6dad4cb01dbeb54cc2296a82fc823c858316bf236d84637b46044f9895d7ead9b7508ae5c29d2fa53b4791f98f46aeeed811a6a87ea1b6d1e7bbacd194644d592f6ce2f62097177c1d703e27f350275c4f0aea39d9fb5bebe37dec9fa39ff9d75ef028b53e95f17cfbd62f899c9a538f672b7fadb0dee97fedff21dc1e83b3c0db20bfe655fec7f04c87f6185383fcaf71fec7fd332b9422fcfb31d60fb8aeccca03ce443af9d6e21c387eb5f29eef281be70c7d8cfd9ff7f18846ef2f97ee308047e7cfdcacd3bf00573cedf69ffe2c8abb8fd38a733ce6245fe6df3a6fcdc7fd3af2af0dfdf415f0114734e7326c8eac55d1e7613be920d72f1547586eabdce59c54e873b9039f6701630bcf9d83fe8afff132ccc5b9c710ba3f434848db3b7d3f761995f40d372b7dcbacbe4c3571e11c04d618f10df779e482b9a415cd4015dec77b9bc54909e626c4264544defde99d84f82022ba809c81d31efc0c83fa00e7ca087394999233d035ddacdbd9d0afeefa2bbc6e8f70fe6dd14fb1c387be4756d6979dae35c0857f77c3fc879ca9adb0ac2808ded93e43699278042b1acf7dd68d2e21d6a10f931e47d45f8ffcee79a76bf4ba6001b1086b01d7317781e7fce36388d54f7c9bdd5913c85299bf01df9663abc996495c6545fdb4bf3729fc06bc6b8b29fdeff5ed26f30a2b84428f7fcfdf7221fc0ca5a1cfb38adfdde492db3a5d4bf5b2e34ff3b52092b432deda97c89b286f07332f6dadbc206b9f397a9659b5e8cb6bf5eadb62840c3af016f89aea7feb798309ecfcc27d87120afc2ac81613375513afca7fe4e6ba6fcf636cf77a61104b5afce6b4e7d4eb4b86f8eeecb1daa44ade3d1b651789dfe5c009302cb73e97c071d270f94bbc323c13a8c63884cacbdcdb475bfc18367a6a48f24d8dc219e4d97a13c088837d7f686fe3bd07f7718fb909dcf18553935ceceebe4e5f259b86dcd5963bf0c09833af0a2a49fb6d5c01e4d2fbcb1505fbd0c9a41060768b2e3289ef40e65e628b82cfd263cccae792c1df0125e917e02c68644bb0b5b03d32c3eb3af14e800d0f6b12eb1324f67ef9ea5c79e14ecc1cf1d393cfcdd383358b057e796cfaf2d8f92ec3b971e0935a58cf2b971103272d67024f278e35ab85f5feecd8bba3cf0789b02631f6028f75923975e08da3c8b4f5f68e1ebf02d9023c4c70969b00ceffc1da15b8ae8ed661c02cc00f0e7eced19a25e77955996eb520225cf4bff155f32aee67d6e7caa8c7370d7a79dfd958a2e786803b37cef9e33a2cf06a708e560016c949285ccb8c0fd6f29710cfc99ad33e439257a506049b8f4e109f0432271cbf2a211bdf536bafba85df9a90e1b29c895a37bc1905e97f533ff0660263dff83f0c264890bd836721867441a7705e588df1210efa68bf68fd07c0d303b1845a7025bc1b46cb170eb1895e7d09b0bc8633b50ee38c70506139e1af8073bc3fc365c00753235ba47680472226121fe70ee86cf11b7a1c4fc0951bc58771cfe2d367589e35f16f4d1f128ec5da9d9895c398aa637f124cb01a30fcefd6d8316cc62624fce04687bb76977fdf8c1b9c81a6e26f62f79dd3feea6880a3f7b3d5f07cf9f847a8e683facc6f5887374d51d95ad8e65cbe816ec327ad5fe87a38a957bc17e1bd408d76b910f6329e941fd06e6ad60eb3ba6139d1e0f898469c0cf9d4ce5aa26ef590f8c8dcd4cfd029c6fa3ae0b60be1e73f72256484c374346f32e2574b7264aa67649914cc417a8fed12d68b1a99c234bc231a9c61d7fe928cffa64a9ecc09033041bd493bbe6033dc8ff99fe66245307841969d1bbc94dc87fdfe295676c761836d0c90e9dc0cec27973729971972613a3f527d29b656f0f1cd05e7adad007e079cff70b310cbbb262611aff14c26bcc3d7adb52b1c3c071ace44999fe607ed1600b70fc9fb2f9ab2c02f2ea7781c76e7f6bc8be44a8ff3a9243b0f9ee551c23b2d6e2696b7d6ace9970187890e1cb601e8ef10c73d98cfb07e770427849f66c39c36c0cf1adb47adaed9fd0f73a06e7835266a4df473b2e61aacaa668d3829eee7c1fa237c1aa7817ec1f5b830f8db5b7bd7e1a2b915e4a38f6cad475b1df85db19dfefeadc585c7240562cac4e7d9e27b7d0b9d94bdbabc19dced93788fc5eb20473639c782b3dfc1bbd88e91063e4f177071cc86cf6897bdd0cb5bac9afe594e74bb38b1e6bcdbd620eee13987f22027bbe54e269ce77dec4a8b733dc0717cf7c25eaf746b9a96484c46b66156ae4bdfeb6ad4e5db1ac6c2d08d2e1be71ed65927cab8ec81ceeab465d354b6a949aebcc5a83e9c87a4269e8b11b295540c83e6ba794380272d006fd320662892174b2cdb8bad0578da7f1f2bfcbb38bf6758f30d9f6fdbaf2fcfe7494ed4b37cf6e139ca6fce014d573169e089027961e6751bdfe4f5fc42473722eb480c9d97396744b6f73aa604b88825bdb544ca659667df9a251ea3061e6f9c5b9c2cd314c5d199ff1272858a36dffe60a199c42f33f0d1f1375618aec3f51caf07d3886f2c1e2f47cf20a6e260b53e7ef61f8f618b0d039c0835b277ac6fef53593fbe03868dee503237b049d6462673c2550a95e370cf72b95b2870e7ab10c6e053f2fafdb996532c0f7e83253fde3fa1aec3b20765692ec352c07315c6033bc9e8f6ba11e76f722986f122076df0ceea72b5b5b838a46ce686c7d0e6a761c7a3a695b4ccdfbafa810f2acdae076b7a1692b2001f3c891519ce315749a857fa1f05f6d7a3ee57c89cc80a61fce69e467efe502231b1d97dfc05d13f5f72d0101c13f3e236fb4f227342689b548f2f655f58e21f10b2817d9b6df5cff7835e36f1291dc75936e0900fb6365e47aa7b30696cbb7671cea00bf1aceb9814e0420e6590af63b9638c6c655f1bc8b405ed0ec708014e5cfcee854eead297dcaae7be0d1c1a53dcb61cf7e39629715fdfd9cad35c08e7819bee8ee3b901cf669b94bce38624be87d89cb78ce4baed9fc7e635eb7fc34cd997fe2c3ec8bc097596f44be71bf95e97c44f3c784738f5320beca7303e8ff38ff317fc5ebd1f4ae2a71d56be74b77fba4f7c95923df2e775b2575e0b630ec2c69fe145f98fc47c64c8bc5052eb0b0e2f577b8c695efd6d399dee6599aecf5daeb67e49acc9eec7a5c1975b48e02369bea1d37fd009469cb0e4ecc8c436a85f3916f52c16b7dd3393eeaca97ffe4cb069776788dd4cd0ca48f62b6bc5eada72b5dc9b4246f064824ae68d629f88f33d45aff464ff6d50c17cbf34b506bf2a91d315e5f3abe8b052cf8e0536e555e6b10c247e07c752cf06130047adc47fe48e061c9df9283f0f6cb05b80b42e0f1af2f28c818d8cdf45da4cd18c996cd3aab133f7a651c56d1f435e06b6cfdb6f41ce12555e51155cf1dc6cce2f06f86c65e29d76675f8b737fc8a933a172ac8f236b1637e79b0fe728e003077cc18092ea6526a5d37f0dd6778f3b62413e18eff26ce02f94aa3f2fed9efdc70dcf9534d253b10db923bc1f277a780e9a3b0c7bfb6a628471dff88bac90d7eac4b1e773ef24065fe63cf04ebb372f2c713f2add39f64979e08919fb15051678039af93bd491a4ea32e0fea20be2d75bb2b2be6cce8e088eeb01ce439c54483edadfa5dde8f504b7943a03ef42eaf7f6693c889559ef72b0dbece7b974fd5c21674c6ee853021f047e6a1cbdd42c7d2ba990b53b0e7d5d9bf0339418d80fdd43cfdd564926c53a36ddd878106b4e933c9684f04672e277f7dba4fed25fe4d35e6a1cdd894941be1eee2f882f9b5172389fbbfcede85b33d8735c5b397a4c70f5ad3216001f5da4b09cf3f9e3519c98df22e427901c24815f15889b07fe1aef7722edf366dd3dcbacbec54a6862a19b7cb2613fafcce280f7a294eee702b673786c1fbf38d34b3a1971443c9b780cb4efecd82811d662e2d966e6a5662cacdbb2a93781137e0e78cf4a2e598f712364b64e07df83b5e59d600e135efd4596dc9db75077f1de800ddcd8c8fa81072e65e06e24983bb39a5c1375a21b19672f048cf304f40b7b9eb983f7bc30ce853b1931922f6b01cb97854ed13bcd28574f64ccf53732a6fa9d8c71ab387727c37ef84fceeaba3cc8dff0fa38e9cbb35cdef8757f768afbb73d8bdada7b76939a6cc343fd44177879d6a6228bbefeeecceb37b15b80b50971d315f8725fbc93bcbb581f22367c2586a8e17c6efd205426af2e89bcfe8fcec8da5cc36b936b5849a3f80c72cef3b5de75f93d6e358b0f36b6f75633924b46857aba6276eddce684fcbfcb131d9ed305d5206f26f0266a8698d9632cea400ff11754b999ec3e8631e6039d961ae8b4c528c68760860df78536afe2b94dff2487a2b5ed410701bd18b89a5992f730ce29f91386c628d6a5fa7f297756fd77f220f2411e449bf3f0ee86474aa9c63e7ae71ef7a58b21167eee70d60b9f674d6f3d1ff0ae5ec6fcaf639d971e9f853f9e33105de039f64dcf334cb1035fde110de26b077849944bcfab8345671073698ecfaa04c2693cf28f379cc83970a87631debbf08137781cdb920df057de477bfc0aeadee91ebbe57c5c276d7ef16d95c2fb61334681b01edd271ccf1ad8d46d7bcfa37c019da6b674f3bbce36be4587c8163282e515246d9ca49b7a43ccf9d06b307bc636d2ee97bfc8ba9cf57bfc79f7c9b9421f0f17033e12e446f77c70100f0f32b18fd7cec6b84b80138b651c9ce3fa3a7db5ea1539f31d8c152231d083988b91aedbef3fd62d17ac5b2a9e94544c972d2f282dad7758b6e75bc67873b43e7ef3a0c1deb3c063efa4abe850c58f184e2399f897393bebddbf149da5647df946f65baac43ab1bfb85cb1dcf492cb55d657fe9ddcc4b65d2186a82058a5e54cea716d5d047986434ef79226e31ce72043ccbb73a0eae59edb9eb5529236ab90b5a79d07ecaa697ee8ce8a15c87302fe32fa12487c9cd95a196f2dd53d9854ee2df0feabe416b384dca98349111fe1dac0753c6fed3d3ce747742ef1bb1c85656231810ff898368271ffd269068ffbc0275949eb0be45b4b5c5063392c9917ac0b5ee4b5ea1e5614fba5957583a79548365d480beff6c0773dc4bc27794111c4f8ae459a604c83adb844b698f9a9191bc07763f25eca5e9a3cebf3389fa8f1edb4fc59fa05649200bc05a8bd97f80d0f9d74cfffc937388fa4cc1ad9fb9673e7953fb5f12511fc1bef44e25388fdb34fbc346190d59461a0ca65e81da92719fb210f7453cf62cb4cdf1a1c8af64ca6c9fdbac7476de70fe0b68deb03b9a5f31acffbb62d0d27cde8fed632f2f17d9a921b3fb24db358378afc6582f59dca4d57b9c1e0bd5c3dbb933deff2ab13f068fdd5f3bbb61e783c7517af1f6c1b2dc504efd3c86cfcec5a00fe966f0b65f87d77dd8d05195f3ccf9bef35dc472cd6b39d6af66d4f54da5bcf2b64abf5bec78ac95c66663bb65880ef1cd79777705d6bdf06fbabf6a81eaf05f0409955e582bc065cfa584ed86f6f62def033de445d227b5ea1d6af9cf8819762fdc163057dfedfe1850c723cbb1c033ea9fdc54720d83bc2814a6295014fb7894d0a0ed6ac8678a8864f9dc44fe7d8761ac6f217e0e73651e0ae21fe7d782f932a01fc89238e6e4ef8f1b91cff9ffdbbf9a4cffbe1f25bbf9770328b83bda29151666e7a111127666e7b16b5beb044cf8475767579a3f0f138e17d3f25583a72f3ff269ce3f556f93cde83e7299615c2bac3383b2adcb454b939d8e99e6d263a9f14072a891d0e6253e37e7ccd584ecac2c463c7cf2fbe55528706b7c7e1e6576fdd70c900c7b419a0555908e10d7cec32276edcc93ed9801fd4ac90066507ee5abd0a1d2fc03c73c379871b21f06272e057ccc162ab4d3807190731b6d5fceae3f56eada20337275846abb238d8ca11ef371e93005614e2e6945b014642e14e7647471bd759e0c599c0777ad351e221d6f688acfda9a91feda649e95b46268702f8f65cac57f209f9e6824ee487318aefb0b067a36f0267c9ddb531fef86b9ccd5ea76f6c349dedf6c7361eaac503da9cb01d3085b835afa6dfbfb532daea9f398aa89bccefeeed835f7a94cde5f5e7437d477912fdbc6de3a9bb7346b7a6eb57b9e5c44fc37e7caf76c46ec576eda4fc90087fef8093306685f83394aacf1f6942b87d9b6ffc1cf07bcc287f1cfc37be368ccfa19efb2c3b5fc28d7c7f68bb601d686db4cf42febfcc1fa1dffc885ec83cc5eeaa72b635941cd5f8b7c07e31ab189133f8b7bd560688df03eeda23e63ff8a30147bc3df7233c4be5c75e039b3e03be072ef9f85e027719d6276fddbbfaa5cd5d037fada30557796de079d8ea8958b7c9fdd1799473f6b55be858fb5808e31c55c74c5e9b80794ce236f03ccddf8caa6cb93620ee67137f00061ec41d40ee08deaf012faede312ced9e1e78c7fa3cc40945dec57263a22edc09d6775fe3487636f97af89ef2927303fa6c8431cc52720aebaddea478be97789f6962e503d29e7497e37d748f65c4129e4dda31bb9b23e43ca3f375e5602b13ae4127752be2b3f7aa3b1fd3e8fc6d3ab4a97e3d2dffc979c9f06ceccedf0c71a464ddc40502fcc8246ef9663cc00b015b56442b0afcc7ddf7f539f0c4b4fd23c3d9e1832fff3fae93cc2fd98336833d44b3768075b26debb2c83239059d4e440b3827a9a4f5de75ccbfa963321cc367eba9b3c3e5b5f098bf313e0fcddabc03852b2bf06f75be8e1d39a79aec32ac5b91186b2a7752f374b066a6c713fec82f0dcfd17df71b5565e4f266f088f5199f25ad8c9fc47d6e01e7c7dab5b9a167fc1dc0fdc1f3bdce0c99c7f292ccc94345ce2ea0ddc99e1dd915bcf0c0f1d0da084e3883783239658bd738054271d73ef64ba7bf655e2890358bcd2666776b79acc195ccd6f67257a7a7f8becb4cb12d9b74f61d2fe443ff1a60aa7371ee8c313a269d7f84eb62857332a646de72f800df989e51df777a7ccb35f1c51c5bece67797c8a5446e750513301adefc3535b6579620cb8b67f1f4afce58346bc6385699216e5e60d921f049dc604565c81642491fc8f0b5f0208fbce8e3ec8533dc87c1d69ae6ae16543227d24d5f879216bf49adbdcdc7a47e5a194955de3e1b209e7074fbab4b62eb7405f3452bc7f1d07c7ec7b9bc77d19d0dad0f78fcdc88fe817c11c209568cb1988157bac3ffeee4691323f00538fd2097491cff62e01f6db13dd642bfaeaafcc7ad125d5a03cec7709f8e9155263e6f1ca16d5a19c91a85db5d40be3bec4110b37dc2f308cb86275c7e2db6d7301eaef56f5c497c0491d9fee2767b682796777d9c1245b08d5a9d00ec82569e410ccb01f8a6f757fc7bb80e5b4e35fc3d2f6cf78518fca36288aa4e9edd7d8bc495064d2e0d706ec0739216ff6bab7fa6621ab77d5d78933939475aef72e07009c127f6c77e32b971ec82dccf5312af742a3f045b68bf33c0616fb8e9b0bce4a7785c0b32aea43ea3f10dfbf8a5aefd748bf984e5792bfb1b6e9df4a3d917802f72f04d961d7fbf1cb5650758da233fec37e4e88639ab8cfdb33b7c1df2d5b5209575aac436d1a1c75cfb97c2413e3dc4a822ed18b6b20771427ee0e27cf02cabdcf357f6b8722f7572a4258375317df0bb93f8d0c7f83ea9ba540d161ce0be5913d1b7eff6c8519f68c375fd7775823c9f704e0dbf73ff8def11078070ef8fba8efcdc83316ccfc1476705036ca7311779dc9f5144036ec546a6b4793d5e7429a49a2aa1be6bc0316be476af3bf6eb912ac7b2316ecfd81aff53120f7c3964aed674834343fc25242e8ea6c6e52cdb7292769d6e19a35f9f2d5718de8bdafbe685b21fcf0dfa589949f3bd568febeb45b954126fed5dfbbbdb439adf195ad0777bc0ed01db15f0105a9f7a75cca44abe9d66bc48fc15e37b2f31b75ee291ddc5440e73d84e17889fdeafc50051b325c1e0be8b5bab5a99d1ead4ed6fe06dc23a0fe8eba641f257b0fd7cd0e94ae297bfcb8bb9627dc798ec030f72f3e2c26566c4c701984eddbd3f960175af9cf4a0cdae6ebcaf1ccb3bbb55f7f7dfd4e1ea71cdfb894ab9934ff23ef93b93f9990bed5a51eca189bd90f89875133cbf92d8d6606f003e09d02fe14caaecf6ccfeb984fdb6a9e1d96dbd798943fb7bbf5287e7159681bc3672972b6b99573adf80c29537e070069958328fe75e60d782df1ffffe9a1cdf7c8e4ee575fce685740c3cb8789df33bc8a575f587b37bc84b702773f0fd3a96dff02ab1cfaf878447ca615685c398f9ee64864e5a265b6d79fbd6cad9238e9951786b91e0622e3bff0ef80b9f5c07bd1cfd26bec0055bfd0678a54ef4d816e28feb722849f95c09fc41c4af98605dd981d830a6ccb06e69410ef5eff0620c16d9e547cf8348f091e4f5e72f09f220b00eb0cc36d1921d6138854edac6670eb8861bbe83f2a3e1bd2b9c9349415c7c15105c97b65e5c198f7e6b65847fb77960df6bc829a91caac36fc87dce497dd03f2ed34deae45f7a1637397e57f0475a2ced31245741084bc8cfc36b47e2c48b3b316b649b37212ca792565e202e82bfb17dbb8779b76ce131f8bb2ae591f59d7b35ddc59d0cf3035de004589ddae7feb23c16db79f83af00a4c488cd2d6f2485f9f9ab3ad35957f2dfe7a1e54041bf2653f0cefd11e27e45f5cfcd7f575b927f5b5c9f917c95b59a662ba241ce54b83bd8f85f9ad1dbd36b2af2aa0b6f6fe49bbe2e76becb47bbec6f03ed3c6c226244710cb98cd405f7de5ff51b8b2d8ea9fddda905eac0d499b61999158c49f4ffed63fcec0670e1848a623f3d89e6dee61bb6cb826bb730058af08fceb04bba05bc3d2a4eb87614e53e832fb997c52232f6573775926e8b4fb793e86fddf7deeeaac7626e2d5e54b0559886aead8d7e36fbeb9c2fbd0e5e95ae8ffee3931c6efc5b935d9e56e42b35293b774d01a1e26fb32dd9c445759511797ce6fb656cee0b709bf4bdba6de81d7f1e49f9165e67bdecc7d7ef9cbe76693036f26ee729fb8eb7d20d70aa32c32dcfec4e75799cb7d5c365a494bcd3e44e297f287f929d8069e53bf84939f38e9256b3046af722a56eec4af912dfc42da2c40fcfe196770235f48dd84b05c417e17e86eab182dc9bc19728209f17eab1bf415620318b5729972f81e2d864e00f8f99c384196f873b07710f7e956b3b0e50dc0fa629b9bf58c0bb959eba47f3821dfe3bd85e44afe8eff78a953b40aed319bb1ebdf05ec787f4de5fa53ddad8ba98273b4039e3fabe3c5e706f35a3b9f477b95bd1bec09f1cf689d6858876fcb893369546e3c2c17e1bdd578dc5bb1fd5236e723943b31a3033fe4754cde61cfed6d7cb0c77d4b3d235b851c04c24139ac6339aa539b7386e59b427000b02d4a3b4c30e4e4ecf55a03dbe67d5dac7aeee3fdba7b07cf75adb1e598e9c761c1565b8d2a37e9f45f07e0531058b0d7e13c42009de8a1bcbeeff11e79dfa6be2d36c1ba77c3663f5cc784ab4e2b8dc7fca84fe097c57b2d4a9db3d09409be7e4dc88d2a7eb887ac592c84a531dc7f9a76460413e216ca2b2c079496bf3d20670d80ddb378d4b792545a347a48d7a6de7730b0dfc67313ec0ea2cb7c117993121eb8a12e32fddfe82280a18cfbeab3d34b9a36b7fbb13ed04bda712b1027e42617dfbf33ea27c2d15ede8f67b6a985977d023c72a4cd33a2f31c59bdf13b0dcac8c77368e54b5a32f40dbf966329916178ff714321f72bc83f782527c937da98ecb05c48049394d8548bdf7035e2b509f6b4caca7c634ffd86db11302507cf83fdf49bf221a67bf87c23931fcf06ba3ef9216ba67967ddd955f7e757835ce6bfeebfdfc9e7677df81fe97eff376b396fe2781fec485ae9f0a58daac59756095fd713dcf2a12fe22e2fe405af811bc64ddec84b5b9ae0dfb7722222bc042339037e94070c1fe090df5601c4a46e6d21f7b9f80d30ac1e71c31ee2cebdb0d17f93cbb539476fb0fd121febc1cf3907614f68630e5b6cfa4a1af9015ffac73bfbd96258bfc5f02058194dee2e89814824abeddbf8a9cfe62f6d7c56d13f2945dfd54a6d90b6bec06e16439480df6db16becc9762f26fcab30f71b6c5a89fb385bf434b2b5f88aaa5b282e96b1a20999a4dd66cd9edeedaffe826eb8be9202e4f230d656bb956ad8e156609d6022dcbf4fe2534f3b86cddd8970c4e389ed1f64ed2046fbc09b53e8bf940e7c6e3e39d8fbb3b08678950441bccb67285442212c8d0255d3a3507fde50eadc146e7adc332cd5e2956cc2cf93c418ef7f51df8fed22f85022836e748c57f8838dcf7f84d7f51af37eec7f0b00cf18727f931c116cf75209fb3328077227e9dbc12a1393372f1e5fc2b99e1b1e4b45273a3cf9db80330d210d287ffdf92657ecc49f78855f2b853b114f72bd9c6df4f8fac5435c4038c65b58dee72dbce6ccb17e3fbf246bfac2a6bfc783dc6f8cea1802c7d7e27c9527fec4af6613a59a5dbdd4bb2ad1e74de1d8da4fbd5086b3ad5ecf83dc188bbeb9bc89ef8fb86607988285c724b8bf126f829af8b729c10a8ae894fc4db882b79692bbcd39c7d6c2760ae1dcdada9ff8efab1bd1397ede6550ba05ee4de2bf351896f65235d9da46ee8ecf45e9bbbd8afa5edfb07d5a49fc34031b197cca39c1163d3dc3a702df5bbf9f562ff6747e9ac3dc026e87d9b3385b907f7dbf7cfcc666090ab9fdb65616637ff418a3c9d1c667a36ef804cf472ba9c718d3b14f9be8ec4f71587f35314e10030358cf8c490d315df444397779d080393f7d8afd327c0eb74bd2b36294a777322964ccf4161f043d89371de92a4ff34e3ece2ee436eee7835cb68d510599cc895397c4029cbdd44c85f04ff58873e11434e7e841852c27bccb57b8ddcdaf31b76c151432e4f4ec097f1cc49f93f890766e37b93c85bfa6d9eeec783dc0851e9de34d875869f460bffc417652135fc20def85f9766d8cf7c20ec75b617df392db58b7b7f7ae4753ef02590360577b355bb46bc2a9a09e901328ad95dca9867935b3bfcf2dfbfd5947dee0cae4070dfce38deeb2eacfdf160fb1059464ddd8bb3c49f500798f4982b879f2c5ab491b1fe9326a13ffbf7b6fb81a0127cb4dd942b6e8cc4d099793c0ef133f9c27ee09655eca16c4ef33c77a06c1dae2119e97474472188fae65d61eb33a218de4c33bd63e26bca7b3c0e5e66764953774327361ddc6e8fab51c0a8d0c35bbf1b018924b24f371ee68256d93d8c17789bf6be37a37c27e166d05eb03af6361e94b245517ff9be014156e934306f117b69839d68c1256287399b2f1fb8b6c979fc2cd520f3f6fab864bcfafde822a65be645feea7cdf9fe66cc13368867a2ae7652d652f5913bf8efb5f223721fb9af53373c67dd6a56b9136cff95f5d6fa285c2b29c01eae6617c73ee628a2aff2a9c17f1d9f99c6c333d31ecbe676463a9d100c8b648cbfc8ef467b15eca34d6e98c02710d7eda62a39dbe5e2e1d97de257edf77a6c9b57bae0d7447853b8f2b4893e73273adfbeb5b2d8eacbdc8bda7351a3b5f7f31683094554a068650cbedaaacfcd199f37373ae2dd77d1981fe17cd0087e473f678240e68450c2362e555e7dc6ac76ccaa46dab1e32193f9292b3467cd7a72496c2d49b6c6cc452670ac05caa2d5a1c1bea0bc7455789306278913ee72e5c6ed97f925fe9dba13f1e2d8bb37212518efdf0d27d7d638165eea8758cf4616e4d08dcaf25780b578da9c00032477a28c22d88ae3f71d6d967cf16684e56967e39c2e15bc675239aa338213c24399b5ad9501bea7aee806b363c76adcecec31372cb712a70a12a98b8599bd1f16f8fd952faf15fc7e656b650e65d3f7ef97c1d3b630c7b62d75db167741da82fbc85fe5946d53ed7c16e434a8fdf0699bce6d9bbcb64d6b87b4e9fefd74f9b76d61485ba8dcd1f1bdfda87fb1febfe15ef46fbc3b9376c5b88f9712c16ac9703fef019b45f525dcd7b1738636e2e752b672ad15b549a7bfdaf9b009c533b28f53e1346a43f2b5709eb6c18b9a6f99f85b5ef32de083099b3ad57ff85678df46f58f6dcc43e0f3031f51796aae57fdf5fbefb7d7effba0bdbec7d7bbb5e1461f21c1e317de0468fb631d95eaffb48eafebc289039fd8b2fc06bf5afcfe8277331143e76c82af4dc8c410d9806157c5a99878d8860825fde3ec81cf5968f82dbcdc072e1421f717f4bb179d2b5537fe31c2e0262f04c21f5e77d7ceed35a77f8e21d71256e61df041a205158a04376cc0b93bab246d56fb1696b3c259d697d9b6126f588608d13984ffc3f80dea9e1ebbba7b7ddd19a87b44abcdf5dcd7c9df7e18e3ba3fd58f904e3152229c9176abd5e83393d73bd6082176ed06bea188d6b03da1e89fb741cce0554e51ee326c45fc97318b34ba227cb6e7b3a2d114e13f9afe232d96978396510daf2dfc26d7e27f0846195d89baf33e92d391414bc9a590d706d6410299bfe56e4263fdb0eb6b8b01ccbeee19dbbc60d9196e22dcd799dbbd07cf98be35517d923b3f3bcb6b21f7214e81e4346d35f1ec4d9c50d233e8d303d7f5692d69d8bac77d7ecb1abce8ae7fdd05f9dbe55ef76f87494db0da1fec6ba2aff4314edbc5672a86018985c27b34e1492c487c5b596c17cbab1ab189543bff48ebdd0569f13f6e94155b6e4a6f27787ddc2ab9567e212d3ffb1c9d48daf9ac841fb56c4d332972de10c1b14db6e65f8eb9766b78a3936a6b7db0079d2ec63aa3c1bad1ad5075b690c263294dc0e6faf139ba904ebbdc5d5095944e2fbe7ea9b6d6f2ec72252df3c68fa27dd4047fa0bb06f3c8d102ac8be448a34ab91ee003635942c6b6c27215e648fad1adb3830d364b71e0b0fe7ecb866bedb05673c887d06667c756b73e33dbf55ca8c7d0d104185bc279b4ecb8a23cae3ccb6b67e83f600f786cc03f9ebfa1b0974b88e0005f1c7bfff1cdef722fca6a09d67d1981ae1cde6e12d98b46d75145ae3b77cf3bcdf38e9e152d0f651317f6ed4ec40c3149e158a5e89ee674ef87570a7b02f9e155f79bf1f0ef53ff1bee87fd6fe0a00efaf7c5ab6fcde29d4ee712cc8786bf2e610349fb2895c5671b9ff6ddee615b7b57b47f031f57dafae4caf6dd9397ae6272fe057e5488ffbabbd695eb45b712e26dbbdf742ef5ed035f495bee7601eba3ff6dddbaf750156783767f2870a63fe807ae7b8fc45fb7fdcbe4b84fae87aafb0ee5d06c8616342d559797f8b548c7ebc6c8616e6a2585d798cfddf0fcccb02e6be0754cf687915cd8824e46640196a1ad8f0670cb74ea7cd02eb8efab262784dd5acb0ccb606c970d717fdd059dc9d6f2dd9bf819c162ff607d7d8ad7662e57c74ab6e28ba3c56f2ef7d1945966927d891cc8e933debc883ac3bad5d85caa026acb4f7fa9d119cb7d829f5e37cfae77f0ac1b62f9c2e6522dbc3b273171acfcdd011d7e5e6c4e025e8f179f8baf2e9753dfb670ddea881dea9d5e58d69bf403eb9bf4f7d897711ec6b335b28af46327abc83edbc92adce7edba25f62beb0cfad1d1e9ba2b9370f3e56d7f111c610ae4dc41ffb86dd2dbf5a095d956a703c906cc8c066f5b9d1c0876dbff2ffacd8f1efa8d19c79e36794de6459408f6e8f0fce2ace80e5e4b70cfe75edf73c327f7cc21af91908a29db9c63078117af2869f189fbefda9c7d9f1d5b9cfbdc1162b42176648ccdc102a682397c7f89759c2bd811fdfb3749a75897c67ae3e07d2dfe45e2534665fe3cf9cecfc3bb5cfce656430cc6517f5ec6fdd9614c8ad2fa0c5ca4f2323ebb1cd63947b1b6a5dadfa37e73af7876cfd65ed667d6fa17fc0599affee2e3b639ed3fbe17cbdba6c3b7d9b5632d78cced7ce793ad659da6e41acbf6b2904f0aab7301fe3f93f9ddd90deffc9c1d2ec38e6d7c80bf9445467daf6fa5b2e8f929400f3cedafda5acd252e1efbdcab9cf539b277e0ef6f8d1bf84521778a9fde610e0877b190a42d88376b07dab0a29076c4658ddf5b7b5d0cf856277eb96dfdf906718ffa67ef1f69c78a0a6a973b8e3007e4f4f6b3b57757acf7806f7f412b12fe9f8b7384c76a3c16d37f732c34c408f7635161d9af7065bbf717f249b8b8dcf1d2f4d73f642f89f1fe51a09a8ea4c567ee55472c0b73d8d7addb596eea2c817e146790f3920aac531d6ff25a39e332e06c23a473896bc71ef426c00c7fd2b6d5ff609ee5a37996dec83c4b6f4fe7d9a1bac7dfbd2b5b2babad86df3ffef85c9c28b5731b8fdd91f5a2db6d5b2b8cc25daacd4978d6aeed18d3e775fd7d6e76de6a0185bfa7e8c79ba41958576e39098665eabf2d13ebecf6ae387418303397ccc13296d697f30674fd65a5346d02df0737ab65fe86ffcfbfc9f8bc1f16e7b31be695baf8cc441db7b1ac37a75de155658eff77d75476978760fcf7f58abb767b7546c927057c43725ab277f59ffe75fdebbfaeffe2bfafbf57fd5dfd052c775fd43ff1477266f531b0db76c077a78665b1b5661fdf0be5d6e7963dd4f7ba8576b305d64d2c0630dbfd86bfabc2f3575a0bc581a3ce6e9551db685a4a5a3e51a2a6bf16f945b677ef922d14870575f6c2d959623edabeccda5c7104f108f1887f6a9453c7f5f21cea1e5d46394c43f9e88747825317cecee44c19f70bf030300d770fd64f4b79b27bf739eab2a99260508ff7c322ab707fba55c96c52e0c1ca0f449fa525cd2807eb37f8b6c6386b5bfb9279d43ef0d2fc65eef9004385f3d2e47458ef0b64abb5c4c51f8a2e4cbfb532f3a832434c40bde499b3893d70b0d5a5638b3f1297b0329fd426e125f9d3b7bf5de6c2927c79b63a583ee0b468d6ece6db7ff1eebd1dd7e4c4ef3bdfe0efb1cd6da6b1b39af77656793bf0cb3f7ed7b19be74f22f48d9b9ab557dfe736b7bc55e45b4ff6afb312c53329350a2fcce9cdc2fb0769b393542f4b95cb12391532b95e254a8b0fb0362f076b0667194f397d7b3d8bedf2a368f1e484a33d3ad9da42e1851fb0fff90bba92212e00f637d6c3766d8df7c05b01fc8ae1f98cf41b2b479ff54617a65bc6b82aba506c7401eb7c3777e2613be3478e3ef1be7955b4e90d97ab84534ad2e21f39f24a5517fe91d6bb8fad36bd29755c6d162cded32a398aab4dfa51783c3b014cdc0adecde47a59280b83961742a1727106d76ba192c2a0d82ea842592833253afe72c38f5209a73325caaef2697ef5ab23968ff02eb6b3499d6e951c418c61eebd18dfbb9ce0cea63f10dcc8d67e25e759cb25eb72a03bfdd3cd05dc6eacef743173a0c3312fc6883df436f3d0c7d0d9cece88c3f0f886652a9e23072ceff15c015960147e08e71ccdfb2bf65b2b89cc493a7cb8e7f3d13af67e81b0f7030cec7cb0115dee88e53e9e9364afb06e67d09152e2bb039f02f16f24f2c919ccb1cf12eb8eadcf635b816ff02c84174aaa845ce0841f37cc4351bb1d85f05249959048c4175dfbe9f2b7cfc9dc67284deefc2c5a1e4a9ad8f67bfeaadfbdffbedf73fcbfcb3def7777f5877eb73ffff7fd9ede7edfefccedaffadde5ffcb7ee7cde96f624a9981efa9f77df5be2188456afa31f97ada8f638c4aa1127efa1cd020f98258122ac7ba02b28fbfabcbab78851e77fdffc2d6c7f71a7bb7cdf7164394ddd9f6609b134cec916d9e8a697267db836f2083b3be3bdfc0c17cb0cf092675f2e01b002ebb27dfafefbe3f38334f1e7c1412f35837b8963cb9468faf0df6a5ace38a001eb13fadd56eee04a3b9b308da7e7f2de343a59bcbed7c91da32f07ef9805132f09fa7b7c11a065f74ef57653c381b1dfb449fc80afc8d9732fae55aaeb0ee208497b11fb75daffd374f929687b05e99beae4e18ff08611c6e425c8e1848e377aa67efa00abf033260d0c6fe9b5d3fa42ceda6fbb9540999708235b843b618216b4639969f18a91fbed2c3be26b8bfc87e6a8483315f347678252442589e70bf830c4c8441fd6e8dfd8d6595903b51d6ca456d50dfc6978cdb6284701edfe970c061713578e048297c7e7542e67f3936f7df9f8cbedf8cd5437b4fc3f6b6e370df5e271cb6f77e2c7fdf87afca1cf76133d6bfefc33f8d3de13d7fa57737f15e83bebb8f397913fab51f6c414e39e79d79f9f31ec22d6f12f00d2dcb662fe00f564921fb9ed3ba8fe90159c0507fda97f381ae9743be5eaf637fa389182092af6580dd5589ebbb7399e356fb2cf1186c42216c380a07985960e7bebb1105fb9aab0557183ffe03649e4be4dd15ce8f7a5ce010db7a8849e24dbc77348b0e10631ad09760d350856e259197b2b5cb200ab00cad3de401e1f9e285c0851378a7fdc265caab7752292fa24269b2fb1142c06e1a5f67a6203f88fc7ab93fb7187c816019ef245eabebcff69caff3230a24766a38d6a9d8c9cae5bf8639abc27afff1cdadaaeff52d849875e059305291c47b3077bfebbbdfd4ddefe1fb059eafcdef5f12076b392471f80d77ccd0964a063811da0d8fc1c909499e5273fed9e0a1fe46ae34efbe6e87f9f1cd05c5c06e1490dded6b67e028841812e5793d873a54750c140e3852493f440db64c785ffe71daf28149781d75df38befec6e2be4e2406e7f9f370afad7bed72cffb0cebef7d3d48bdbd89f3aa0ebdad037d5a16dd7c3b119d7458d6a61debb60fa23b59d4eb0420c3242e7e7b35f6df5a19b93c5b20fd254e5fdccaaba12e2869092baf58825f6fd05704dcbf0df66b94fd864bcde878be9b184317ea4653436e2ebfe5d168f1f47d6c3feb8ffe0bc0ac1aeb56ac1b8ee5e9d69a0e651fc460bbebf9d9d182829c659367bfb5323f58fed9e7cde2cffe168283a65b6c7cb050d6f3b87877b86854ee34be15644dffc21f83fb26515d06b8ab5bbed0f3d703277a193bb6f8f3df94b9d71ecb44b61ae07177ecfdebbdef8f7d103ff481c7acf0bb0443ef3fac2faa1eea7bf25273e631788efce7e53ae143b9b5c727fff91ce0f387f6b7cfee18f6e2a449d17cfb01a7f40ecfa7e5872071b92b826934e44bb368aaf098327318a3cd41a3242dc66d0800279af1afbeadfc6ddf2c5c860e0fd6ace5caf9bee7a49079e09669f36cffd372b78fe5d2573765a3c35abcba16eec7ffb8cebb87b2d780c346913caa066be1352e692747896c53afae85655e33b64be5616c219fe02ffcc32feaab3fd6779ff86b3140ff691d57bb076c4699df11dc295384effe0587c5386fabcffd7aff7ec29182b4e4291f8ab46ee2a9924b65eb54e89058c76acb002fca9bae058935117d498bb19e550cf1029b7a91badb2bdab1ca7b5ed031c7b7760c905d7e08f62e1343d49d4363bb6db07fb2584f6dfc1e1a62c47e4fb3a91c71b3cab166b1cb502f39ff104770020de8ef8f33b6fd507884185ff23ff9fdad91babb56327d829d5448f6a568cea78b6dfdf9e69eca0fb53d9f065ee2369680f8be8147b88b2168afc52cf88f179fa373725c2789ff28bc90aee493904969fce385338897c3d75105fef2f6fa09d7195f77f0f369f73cd899705dc3d797edf5a06d9b979a01e257e1c12a337f1d3fe1f1bd8b0b20ed1a622f9f9b5c8ab34b380d141f725f56854330b01ace809276ada4805c090deb48e01fcfe42ab8ca299db961503c7b4e5e0bc5fd9983d4fae29b361c6c5543d62a762c31478fdc4f0fb19b5beba1dd2d9e74ed3358ce1ccf6e4d058a763b7bbfc995dc4c76acc47538ee39b251e22ecee1ce5886f25acdbe52e34d38a917c72a73e14465725a267e6ae6d876c0cf907960de3cbecf9790f929c43e7a4cf2066ba17d9ff8f21477e20f386f483902c4743aa910afe63b4d6830a59db3bfa0c877f43cf4181aeb61a1d0600f0b29ec998dbd31257ab826d6ae85f720211b60c335edcaa8b64dee8966499ee38cdce32e957c827bd91703750b77c6aa2deb8dc44389f39db102b98634e1cdade96c1b51941c19777153e27c6735758bb2ebd68affb5d595c76706e537654d06b2e78a752139a5afde64ff6fcd0d995fe6bede622edd48feb716903361c0ea9f656eaae6beb54ff6787fe6c5c0612e8d8daae4071d3058619c490cf5ac3ed859b219f244375cce3e77c7e5ac05d5abb9694d542c63ffe5421ef7ade11cde9dfdd5a5b6879cb9e13c96d3a4369a325c1e707469b99b9f59d68ea36353d9f7fa16b8354b6f60fd2585c39434e24dbee3a5a1d4abcbb3955793fca1873ed582445ee5a1c0a01485422e84ca4d597c863660e3266c7386bec1ed82587f5b61bf9815d8064e5ad2483f87289aa71b1ea5425806ee690fdc053e136458d7145214204b8cd54ac81dbc87e8e750699ef56c3370ad15de17924d284c508a52b4d88532bf7af36d31d984628a9f45a913cabc981c2c1faea99643235ec1d7326fb222754851a2f20a258465e8f2abe8509f4365f1796b7e170e1324885fe5aec51668419e77523586fb90772edc141ebe93fb96c91c2c3647f6ee4d88824049c54409056c475c7d66fa26a44b5a499795a3e16b66e5ae9389cbb0f12614636409d3cdc2c3e5d05e3aa33c2649dc74166c423171743f512ddc3e3540bc49b5fda75ace0c594b5c57f095fb6b31f16db5eb133c1e32af9e5d068fe58a82f62e0466a3af12fc8e3b110317dae44c5064dc9a6b054a492e57f79d6837532d336eef7b4c92e37ec2dfd8f0fb085ff7d2e4027cd4a1183bf5925218dccfeaccb1a66f4234873982f8557560703f196f42f489e7cbd4e9aeb7cf7ede36bc30b8ee5f5d7e9fb827f18afbdf898e53359a8742d8d8511331f8d2cfa1a327c1c65ace06d713d494a746bb9bc275e555c88ef158cce01dadbd7e393bd605dbe821e285899a0aa1ccef032fbd5c1ccbc7fa58b00985a943ead7debbba7cc220cbaf9065169b50a0551d850acc3b72df4b570562603ea71b5e19d483ad1c26c8709b367a5c2ba91ab575f752336ebf45c610caaa1dabbcb8308f8cd94677264e5bf7899a387d1da62815a30ddfd5a186b1b7da7edf4d1566d7f7ef44cdb1cdd8f6a3923a148af6695717c8e534c15edb844285efa97dd9586f297d8bcd3c868ca9c398b1d2d50b7241131fdab8bb29fcaec6e5220bef7d4941e69053aa8bb8bfce5c66edbc5316739863f8dec1a24f5ebac2756036ba3353a318d72173ad663c23b8c690f164633498bf8a65cc1ad9911e6c31c176bdc3e46f422a544a2454788de239efa5ab7c207f5294ae5218af94ad90ad52fd9c12aa0ddfbc7702cc98cc69e499109627c74a0a8f11af5efaf126a4fb08f16aec54428e9800cbd0c9814fc85a8c8256fe9d5ca6c4722045e96e42c67c3cef11bf0a545dc06bb4ed87a9b238de36e4d976ec6ff89a32b8f66599b9cbb3934d2806884729999b6d9fc1fb53dcc603cf16c84e62647b6f42eadc407e90ebd460ac988d25605999b9e93e73ac5985acdd9b90aab16a29346ee3c19ac507cbbf6e428182b5b2c06b2561dc893823ed43298a70fdbaf5962abcc16c402e97819f9a05e2cd0acb3d353518942e47d7f1987acc918c4f344f554dc85d7e3571d3ae0f260e8322d207d866640b586729baba1191598e05f2bbf11935eb225dc56811246a88cb8338a45e3e469fd0d7fd3b8dac4a0de827d4bf03e388ac59e532fb19b2cadc9d78642f4b57b132788e8ca1182bccae460b683bf13575732cbe213c6fb9e13be6d377faf141a19a2a6557cfb51ab8d83e27ed0e94851f0cee0d6546a5f042e558cbbeccc13adc2cfc085968f8ee4866a8f571f6e45ef2e41e852c336fcb75a279a4f2fba4bf9f242e5f5efd666f41a9d1f4390dfb2c993765e65a208f12dc2ea51623b4502af2dc2c216d5dc19c12c27220bbf13cc3739f0ebc94853ed92c40bee26f00f7bf6fd1f7ba05a3a66a4cfa854e109fd0ae35dcbfe611c2e36399f1c1362fee448c0e7c82d771e8e8064dc6a879cf9ed3de699e437feaca44e1f7e1e0bb35b2567d9b1835546aaf1cde1fcb703f54a320415aff6d6f32073b79b8ef21bcc70d9ec17aa2679bd703d111a80dbf2b1d6658c7465eafc504f6dada2b55fd48e37a1cac7d315a2fd172a6e8f104e6a795143e0f383017a267e1b1833ecbbcc97ee6a56cddeb5a06b4cb65d4c8b1d5ac999b89ca0bf83b8563a3e090b2bd8c4c518c75cee6de8cc8b8cf46eeb13922b9e9788dc52832c9fa65caccc73618916fb0e7926b66eca5ab108fab13058912e1b6b315f051906f05aa0ef3a1d9b7cd46bea1545d18a49c7e8c6347f76e68e184f27a1eb8bc3958fbf81d33417a10e0fef7f8553ed011661b1e851bfdd8be37de43d3558a2c13c616debb1b13ac9b2864bfbc39f63cf8b256b8af6e44b69a295a18b8dcc4b1d4b3b7365344fa37762c01afc31bb2457a13e23573a41506ea0e7c42b88d4e3d8fb05ee0f125ede2fee0f781c2ef71dfdfdc891f235b6c745e315478e3867478bf9fd7b09e404e56c8121307db8478cef125594b91526ff43894dbb644d0d7953b5167bd8e0cbacb14cb542f65678ed5e9d994a23b33a4838d1d207e9f230b30440ba22bed684557e05e2ff3965365e161d9503bd62cfeea9e1753955f522a9627777210e941a8ea1eb96eab672cc349df3a34b20cb0ef91352b1cd0393f69251271ffd407ab64902dbc09a972c3fd88e7caa30c35f19abf5bcb2850ad15c8915ed782fd7d02fbbb0e75bc93a9783f8a6f50560a7b3b969601acb9b57a83332266a013f0285561acc7f2575d38532585fd9c22fbd9ae72a2dd14efe33e6fc2de8775f4664cc177e9c3588af1861753b4c073780f7e5fb7d10f947a37c1cf8ef5c2dd0de9f318f7899f26573ce7f1fe8ef46345fad43f236b4511d9b14f1cbc2ed7fef9005cf822b1e39adf1e435f0fb04e1c1a4526ecff031d87e816ed3ed2f7c10ceff94a2d84df5a39c736e98137a77a6397bec6dba086f83885c0270570133dcd410d0a8237bc7701bfcea458371cf27aed596939bdcb1f3e3f60867bfcaaf21893777936f0c18f783b1f6c75e31850b78f6fdef850d6e507d2a7a5d4e076285a9ca371dcbdd6fa581fb8653b7fc16b2c10595f065bcb187127ca21f88301f3f5a18e3605fcbfc08da753a1a27fde444dc8fa1c93ff4d1d7099df77f85448a76b69bdcb499ecc3cf04e6ab24fcbab63434c039cc9927a8d71e1a4d32e57f4cf8ce4b6c4b95bcd02e7a49c914653927e2b914631db7af98634939227e372ef798af53b1c29af3a96320f3941c93dc7e9fefe59d297a27bc2f5bd95ea5d4e8d36e6c63e2a637cbd5f42f4194a783d84c2cfdd1c50efe20e93ed822a9b3182581d44e296329937c7fc4df7989f1d960ee42cfdf338471fe30dc79c4ece789e2f616c20e6fbdb863962ca4b2137c352d86a01b7d544d75e95f5f7aaf4a415f52371c28fb43258213cfeda24f9c55edd7e6c9df56c7ef78fbdba15f6aa8ca5caf825d9b7f3b6ce5cd92c3d89a67e75d7358819cbacaafcc0e5da5a7e16c28bf9ea1afe2d25a527e91fa1bc725821b978f65afdb057b7f39fdefd8fbeb1be2c0c5afd368d99682e32e0453452f3b4b7839bb43232790d3181e3eb4d9c884409e47eba7c231ce062822873ea71c79060d7083f6618e707884b06bc210d59feea6bfd796ee2207e76cd7d477ff80660ce08e1c592b4f2ec4d9c876f1cd62a2384178edc47c1b36ff8e932946827937988197993e969b4ad0257e1a899a3d1e94ea379dbcecb6f2d3e5bf5e765632d2f285e5ef609fdae60d9b2ca6fb29e04b285e6b281fcaf7ac54adaee4aca735e95573d2deff4ac3c7150deee7f54bfa7efc7725542fccf2664bf84fae3dfa8dfdfb74fe458f68e07c81ecb8265a071b37ece0db069c698abec18a374910d30d3a8bb339271ecc9b7d6f0db93f8664a064c99f203b05a7aecb64ab2a9b36eada803f78a0be5916bf8714f6bf3b5a6e7160b574ea7670fcf6b82bd79239cefd3b30af9f8e43ec4d22da8d0c77b0cf0339bf1886b9ff77397110377057103bf10535e9d74959b7c9079f5f9f57b2dd742cdb678fe6f236e799d4d36a70b3bd205d6631c468ba606b9006cf1184fbe6bb98c20eedc6550fae419d6e76669138338e65b1ff33353502f9b701d23c67c9db7c49b2cd68def30a51b3e4a8385b14e5b1ec8e36fbf4978d81256026e1c1ace489c9abecae9b2e3c36df00ca73ed6795e9d510256c032776a2ab46936f25233f079e382ff7726bb8bd396c151a1541dcfeeea126c35f1db66daf1651b9e60f3fb60edbfed4af4b75a905bcccaff5edf6e92969792968736fd11128cf307befe11a6721f87d89f9502be47c7b10ff3e9eeacbffc20f10671812c3af3d7fbc48b40b7819c3a6fad147ebaca81cb78bdef78ca243e2e1c2d3ebb61998cf800810f7d7f853939e43a2467b504cb73097cdbc9d77a777f660ee50cdec3fad3fbb796b80e4db5f16f896b2594cf9b950c734268f06ed9025933ca6492dc5d611bd0c476f7aee13a7fc223108cf9dd4f04cfb7c111661caba4bb75d1f08f3d7b1eced8dbe7f5fc2cf131eb8531c82947a7af92fe016bef60971f8ac6665b9d2a6566f976d096ec417352475bb28e16ff022e337226fa12eb7a3bd99dbdb0bc4afab954165eadd6bb72b3106a19703aa9b37bbab10a1777b1a4dd78028ee8eedcb78b9c9535fc5ab96353b917ce2a043aaff0328e61c41f5fcd2218cbb598b8272a774f9057ba7019fae632b3c43dedb20de3800fd4e51bdc503ba080bbd3565809e23c2fac645e225ba769bcf6dc8e030fce134bdf4a2a04f8b92d46e1ee81e763a83f0e738e3603ee8aadbdeb6208491beee2b79ad849c0d022dcfdefcd9c7f431acc5b8bf41bc43f2672ca163df7e948cec0f9aec22d59893bdebe7903b7a946b6c8206bcf1dec7d2d6908ec35a4415ca1ee13aefedf7c0fef4fe6b37547fde5ba8bfa31d9db07abcc8dd48c909530c82473f9d14e6af3a61febbf696245efaf37b88f04e341ff9c28b54729fab152ea8cfa86980c8803bbba84df27434bfaea038eec5dce1a9963513b5f2c46f5c51035dc7caddcd8637950c01c20cf5fddc4bc21e8cbb8cb7bbb9baf57e7a426de0925682966fe5a69bf757fbde12dc5fbe5c7689d6dd257f2c62c5c0bb8aeefd7ceb37a77ebb3db1f5697c8d6083eff637b12b68d4931c91cf9d3fa1cf55d1bdb7bf7ad139607929e2530362731715390fb2ff4aaa0cbe56df784665d57c89ae604fb3e2e0eb63af74e62009c1c3a9b58f5dcdfa446d6c6037b13e0b5edf693c64ec77528beb5a092e3c11c19e180ec06f50779586fb5e3d9ad077b83360be42e16adbc4a5af96eacc5ab9f2631e4418425964135def7bc288b81cb809b055b4b65a54e6724fba31b1e6b858b9ff1180ce337084e7ae46577b8c03779a86b563362ffeb74f6ff11f7655b8a324bdb17b40f5e40a9924345999d98e14ca04a1010ba1005aefe5f1909080eddfdeefdadf51ff4ea922133c921322232e2791eaef738ecbf8d51138cec80b9ea73f40fcb9f5e3746f6ef8f6bd18dc9337cdfd613493ed44578d425f1ce1bc3235b1b6a49c6db3e0f636c3b59b598d95ce5dbec3417a35b247317df6667a5adc5ffc8cbd907fa6773b70f99abfca02ef2f67726b3c84eae7c641b7f73972f5cc631b7b5f84746b6b116ff03b6357b44f6b28fee2be7cab3f13b996c12b95c27becdc6c816f9914f4c20ebcc0cd52347712e2644794899dc8b8ed1372be60a2b9dc5281eed015d5f8d38caa3aade999740e16366cd56e14e9f17814e4462549d7636e61e7379b338a0fd923721d742a9c5cf8e0f4fe6a78c37c4a8d48b4e46a63b8bc67c2b4bb2c4f8a373c68b5a6e538cf74cca0d9974f1e932bf2a7c1630a56e32e5f4d8d60abfcf03ad605caea86cbdc38c823ab29d6502177a7042754881c2138c9700de2b8deadf70c043585a8d1928bc88ee51b6564de01e497c06e01f143bbd9d040c2b0df8a9a17fbe9638fe48d4494a8adceeef4c8adc0c62bda28adb69e20fce1f9066dfacf80bff2d168786887635c46846a8df649c131229ab196a476ddbd5cca92b7d6727b36fdefff4a39ed7bbc4f952e4ec9b8f7fe4babaf9a9991eece34770ae6622c409dcc7641bcf0a6fb28035e258b78f435dd5aebd481c7bffa16a155a63c4c1e28aedf95838f686706d29f7a9e243d4b889222c42d083d2e987d1308dccadf3edd9ff478ca6bfc4531659e41472c4f43afe1113e267574b8c6c93038cf0d590df3e95ee63da723c842160c0694e7aff3ef09f8cfc5bce834fcdb5900c5013d394241c7b7ac73c56c88baf34b393ad3167e59923becf859234f1c7ed72562926760d9c5f0a71ac5d0ceb7245bd8afdfbd6e2071c24a3b36f46b81e18bb9babfd94a301b3b2e367025c92f9a7d754c9809bf72ad745fe2e2ed8a298a08defbdda3af9e8f7f942b2448c2ef09c72eec7ed478ce2588caa14d972638c9207fdab4e86bef31ccd73cc7156cdbe2604dad7336f027fe74867726d95f8d299709b9a688f895dd3d43463b80f550de4638dbfb141dfd8aecf135a9f3e493cf2588483ef3ef5b64d54c53bdbf49c9a86f9dfe644c39adbe964dcda262725656e30de2957c8f6e584fac23fabb963dd80f7556ec813b4df72f32f36fec4fb6352069679c73e079f19b4a1e3ac877eee7850c4c8ffe9da21d77e240aea55e4a544e4d5c445df60edcf32c6fcac657e9f777cea4e4d776b2fffdfeaa2af01bbe8ca2a445e22e1b7b5490eb69bb8ece228d517d92098add2f52b95a45f5a1823bbd86145cc3380732be3210f1c1a0ba7a6af183b9f0e3d3601bde860d1a4ab5f8803d20dea05cc3fb0498c0e7f1fed818bc499a889cbce23a9be9c149cdff523d5e231e067472f6508dc4fe6c517545aaa136630e76e305f96553c982f37982f90ffe8301e1bc6d66411c8da2df4924b636b485f43babd93cbb69af929336931da21af52c538fd9984f66dde3c05bc198b3c5778efda677184431dbb3ebf39b68ae46189fa5d61175160ef8f7e670358fba3c3fa3f5ab2d9e911dd9e8b04b97b8e33378a7fc4748ef6895c6e880c63b8cdff7140a7c6b2daa9e9d8b5aa1cd9e4ae2de632e53298dfc68431704fe44949b906c9f083bdf9d951837506e338e40762bc5dbd0914ca2fde9f1f8909920f6deefe12c9cf36d7ffe92c00c940d35edc5c5b5a3a362a1f70843e50ffff4f7dcf8a67995ae3f852ad388bd182f0eac5c5017cc7764c06b24baac517731b9e4bd1984875fc79d00a66d0af3fee9964009f535bc05a1fc41ae70fb88dc5e379cb681fa9434f898a5fbb86fc12f52cfe9a10996c5e7cdbae7c85acfc8e8bc9e66ec0c534de0fd68fe78423de06992b1854a6cdce407743e32626952f2d578fd883a727bd9637ca0365d27e43128fe740eec33990dbd9cb16dd1c6c350f52e31f31123fc4348ec6f87ffb01be9698056cd2e593cebef969112c49cfd6e2e1fef0186bdd717d14079d08d71ac4aa233b2f56f81583749240276edb8931d4073e03adf8e9e4bbdf90893531832de62d7b79cee8d749283764210beb318706bf47b2a119c8f5c25f1251bb27360ffb61b4bdfb621b59ab1a3cee26e61915e63f3b4dcc764d16c9d4fec7678b48d632c065901bf2b64336fc5d9ffaa7b5534087da51fb1f313a46f2648eeaf907e9486d1b62b9867cff9b5c8bb9accfa26d3a7a36eafca9872559c8fcf4955e9d2b82c3381add787c82e6d1e5708f4bcf0147753938039c5433995f31b2e0fc3378e7a6b0647697f7f1870339fac77fb691f87340dfba9c31121be73b541fbffad959f13f62b48fb6e92c95ce0e9e3fd1f11fa4d7a2e7bfd97d8eec01997f38474a906eb82a5cc06e8e8bc733d82186ef00d3f4dddc2bbc1359625e8f2a79e4e8e8f4a01df56c0ff6186ba80f2666ed5046d9caf94c216f99bc9c85f67286d620de13f9693e98e735ec49a7aa1cec4935da9302f6411f3f8b852f4868ff9f6ed396cb63a887b7d786ba38e4b3a7e60dc752ac2a7c1e0eba0adc1be9e3e8599e03ffad77ca41eff91ee973eb560725da1c991c70e29ffb04f2a18679658029e735c46d4bcd46ebd3abd1faeced9f9bcc9b9e47122d9e6fdf9fc39c86e779d0ce2d3feaf055a599d8628b28bc035c85d83eef71839f72351ff0da6399875c8b526eefdddf4dfe9e93e8965de563def1105e1c7bd31caca064a3f0246b0bfd60d1b19f1a478362ea8360366cbc003bd43b6f1271454ae63cfba574e758771ea6b36babe3381373437b9674f58475e135e4aead6f84bbf72a9f0fd9dc9def72e4a3d4b05f0eca369246b568d2b3cc1ae7cd8cce10c39e2b966f7d8c96f13bbd33eaeb4bb9c6a792331a4fc7a24b6fb23f3aa97184bc57b48f0b411ef0c723b6f317573f5a90c86e6f75df6818ef71f7bf3e9e553efaccd4faabd5939fdbd1717d4cc3b5de9d75b436509f6f28854eba069d0bed83c8a6df6952ec6a62219e30c6c0bd5cc00e1cf5771b5b84f66de092edd795be1aee7bc4cebe300a3f65d6cb4bb95bae6e5b6afa23d70961d5d2b7185d7a9e4ac80135eeba16922b36e0f8a3fd4dbcad75b1d92c0d0ac7dbae98dfce2103e9a926e6f74ac9d0678fd96ff0e83cd72491bed6fb7cc4281e7d4fb7eebf26033ce9948b1c0a8d61901dacfcc7e349b4cf55fe79438811ddf87c95072c9405b8f3aac59d0eafda915c125b271364232b30269bd8b5dcf3814f7e1da8eae2a5cccdb7a5a6e515efd703e83475d8ffeed6a32c5c18451073798ccf7cc23ae348df09d736c9c86cfccfd3fc79859330f673910a7fc35c7a1ab25b57c86e1d9e75dcb9d4266b34dec33971c27166d3c159c320cf98c4795f5eddfa4af969e1d431b2450bf0335bb4e79044cbfb26e65f1383f1d19e39ccfde51d34dfd211a71be5a076e41d6e03fa068b72031c63567981794921a62db9c0751bce6c7b195afc7b8e5390b5239eb2fe3c97ad1a855f17c84657847971602b4ae189e24babce0a2f1641437e7e2db39b22c41f6b01dbfb5f3a91794bb256ec7d2ea7ab1f995f33ae4696b29693721dc63b6bfa0bb834ce62de9fd3e96421a7b31fa7ce7399dae752e4c019e197e6a49e3e05acec2f7dca6cd8e4ae07c19904e68fdb6961b3b30de041f1a222034e316b95cb67f14716e68ca3e5b962cd7e055a5cacd915b3d3c26c67af7fb9da2595cf48178c53e904dc7e9414b9d9ee44dcd0dfe8ff01e736eccd77fb9ac85ca4b3a6cec5aff3d39db7a86fdb5d5f6f6eb75d4d9e9546fc70eb59ad2ce78573224ff2797e71a33c5604bffc5a129973badd769478592ff3486ee6603f3827b291d3fdc563f31b3ca7bf7e2e98906fe236ee6762f2d2b8c9faeff96e5bfecf896b49676f95201d8168792c9b415f24ca39489c3468f1595bde4c61ddc54d145e545d3beeb3838e74bd2a049fb36060bd04f4bfaac17ee8355c734fa467eb45f8320e94df335f93e3c79aade8ed69c1805f19e39f9c7748a73a113fd82f07672a686e3efa0869595817d6645eb8c027b52fbf2016e0ce25efb2340df82a77fef8e26bf9b89f89c0532ab3d2c59b980de6b1362245f021577a74cf366f62544d659b2854fda11c0a7457c0db85983e3e295da26b8b84646526dbc4e79debf50d3f39b271a8e403ed87aa16172ae4301ba563a9f133ffe8237ff6ed49ce83cfce9ae55f94ff23d7c664a713372972325caecfac7bbe8d7de19f08b46fc7caf988bee5e461ec2b47b1a6489ea5015bc5ca391ede73d1bd80676e0a1b123beb98b96c9c4b910beb3d58ce329f75d22f2d0c15ee7243f681bfc4185bfeb99a7d6961de5ecf5bbd9bc1b9d6edfb60e7f5cf0ecb80b52b6b552d452e053a8b4de4329c1dfd1deffb9b5827e0c6407b2fee9fa73975f122a477bb04dcd387f762748ff026f342e6678c0538cf31cc4dab5904bb3acc77769c051a9cdd757cfa6fe6dcb46f6f60cf234538027ee86b9e60a6f429b340fb19c6fdda177ff91ce369d50db8253822df9efbf597f77d0ad8fa7f9c7bc0cffe2e764ce1678c4c81adb1020c1deabfead35666c4cc017c5b55b8b36234576edb3aac77e625ff16aa9bc29b810c189b68deb4b162351d7bd406eb072c7d457681c79ba7a0e5a3dfd9fbe24b0baf8a25ce36cbf94d8adc7047391f4e0d9cbed1ce9aa1fb8502b81db85f641ccf95b5eb5df053ee76e093934f4a570fad73ed1ecff145e171542dfa255e9d3888077be2c94ee37b2cda30365b208ab6efd7aec55163ac2a241b8b6850cf530cb8a3b536313fb209e36fadc2f3d1502167e45fb5f56cfca9ada6bffc77edf4d83fb513d6cdbf6ce7fa6d3b1dc00d2afee518bd2fcfe5a562ff5f95e9fca92f978ebd202027ff3136919a31ae4d147e8ad63a87fbc8de247b8abba1fe7bc235a36678dd0b24b39dfc511f605cb68ac7f195f301573be01fa652dae26d68f75802640f7b934d8eeb45ba44fbcc389667aa58b31992fbc1b2aa95f3f1c7abe1cc9146d7bdc849bd13ba1eff7813f26e4f080ffc48e378c804db91f4d5e5cd45b0ea64cbe2ead721a1088f5c2938a6de855829e66608d2d5e7b9738b4ff5cf9beb106b023a7eba49bc95443a29b2f389c7b65d9ef093792357d855356e43fc8015836d0c88a1a3a663df4f54306b2dc1b6344507f758c8969b9aad88812e8bdaf3d6f73288fb20915e308a3deb3848a8e19ef27aafc56d1f7d77def9f95c9e39e1d8ccfdef78d5a1aedffa219ef8b7fbb3c881bcbfebf0fea9e7c2f8f4a8e98757575737753e801bef658cf4abd83b72a46be3f8e1691b233c2dfc897af597c049f7af6cb6f6dc711cf73c9409dd5e36a966a2ddef6b2ff9fabc94a30e5610063c530ffd095f14e4e835904b178945909ab54f2590cfb7069ed00ecbbc2fbf746c3777298ef026628964881f736718f7b37ad57966723f778a8b60495c6501c98c4b1eb0892772b7abad859e2df8a5ad15b932882ff9166e5799873687b276fc671b4d7ff5ed89e27fac7ae12b24915964355112e247d666773e59bb9a297578f1a92491b5f9db675cad8d515931487f875824b4569db44ac4289ead592745e578933cf7f8aa6fc7ae5ed4c1291b941bff336e7be5d9fa7d2e417ee56493f827cccf8b79ac2bcab5a506cd25cc1b4ccebe59f1269e7f33d7343af9121657ffacbe8f57d4e70596012067c136f129933078ae06fc574bbd7e4df63f38ae11dfd3b1de5e423c47caa4ee7993049c7af5057202f1ad2d961ed2b781ab1ae2f4dcc6b5d5bd634b10e77adf83680f9565db6f6dd3dffa2506d85735e6c09ff53a27f6d7ad4636e198c3a8d5a3407f7ff46741d9684f291c8d9e423c6c67f3b155886c96801dd82cfcb47cdc47657e96dff969120fcd1f977be0713b23dd9cd6039eabd11ee547f4d54bb01e09b9725a5c88fa027c7abdcef3c2f7e6412c7295a0b5a3bf6847df2fcb2ede9dcc2dca280f961a0cfa04d949a0d71b48eea03d93c5edf126f34cd66ee15a4036113dd49532f9c5dc038ebffa7e0673302f57254d627bc459e5a41efade58ad1dcb4fa5748afa62e5a7dc197d3b1ab7411f3b8ab52abfd0389e0763a191a1724e18a4bf231b73f43cbf42ba3f31d0fda12fc106112ed1c1a26355904297407532b707bd077f8789e61f6a37b231d5d937af225d9f70b545df7fdf36c96c07792d9be5fb38c8a71c8be77c04e6edba1d70b7f811c41181df444cc9468c6ec876fa40ff0794191da884806bb5146c2722239e0193233d5874e2b2a3389b2eefe59fcec6db9ebb7d7e05b1c9c132ff44ebdee4938b6b3164b0cc4b85df205db01e5eeb300b5d1dc913637618c57f711033ebdb66e24fd485972617ace7d0bc9f7217572f7e64aa974b21ac1793f884187b9b235d7b43ec2d3ac7b8954ca99ea5d0b30cc64f2ea15c4bda6f9e896c1c4bddea515c79b0488c0b19bbb56391c9ce963c472ba23dc5950e65162fcbb0ab595bd71270efaceaf775dae4efbfd7ae66105f0831fb6613bc6ad73b99ad8570fea1e2d86d1ce78cc6a1c5a6c3395a18ef6fcddeaa4d047c9957cc0785da05f23af72cf31ad8fbf1fa857d2324646a8a6cf5629417cdcf9880bd940a9f30487effae4fbf855be647f4a9edab17e3fde47b43e58de7549bafbc7dc3c7f1227707742a45b8803ebd4d67c8666940b63ee17cc2197326a3b5fbbc0609e03dfacdd8c8c01d6b64482ff0eae303a7e22c6bbfe76dffc8383699c1ba33c415f6d8b210ffce4fb37533c7395effca57dff9e7baf3bee0d3b3ccc6a738c0cd40731cc7620549c02ee203e8cd1b342e8dc823bd7028271610ffe55809d2c1a36fbddf3b06fe942077053553f0397b277b45d74ace07613fc88bab12f7bc47fb30da4bd0ff9383a51287654e287c98005e09e8b9ffb51e00e787ae968ce2d4ba5824310e6ac75e64909b78364f60b76ae333ce718e60dcfb8790edb265e32cc031c8c33938d43f5a9bb0cabdf402e775435d63d7ac7eb04f0ae4e175dd64d5b77e21a4c879ebaf0858baf42835d12daef16b2795f91533be16f79ce0f7732fc076213a1d0c78e0911e24ac99355b9d76565c22591ef049e94ed6658745630a52e89d3780bbff2d54d7ed049e4feef981e116ce329fe36a33e001b7d07c5effec740e78e75a7e6eceb13699ce27e5a10e2f729b078474e7030f982d8057d2c554033fbc56c53b1bad5ff3f698d788e635b6cbd68333cdf99d2b0bec68f326b3f1a7cbd21043a15b0ce5ea6402f8b66952bbda31f2276ae2b33de60181e72ed360beb0d540de39e14e273126c1892c816f29aa622575733f35206e15e32b8a45c0c6b9c2d32d371df805f6bd6fe2f4969be8e8006f18f83170aee69fdfedd660847d58fb12ebeb0cc47979d4f49eb7c5566d6e09c40d10de04f8251eb1ac87679dc51afcb37179b020ef2d877c1a4362bdc931ebf24d613cc9c5d5a712189be75cd62e17aa823d1c8ddbdd6ea63fe17c5ccf0925756b8f224a9f671a4550af48af0b78e0786bbedbbad48914fa7ca8a1b9fd3ecf15ef81fb58ba7eb1906fd6cfbd7dcac45f4fbecccbe3d933290fe6ebc31c07792b0ba6177004c432012ebfb0c8bd188dd5a3af106451d4af8934690c3e29914cd9692be00e3cd81b584bddf5dff04fbd2ce75babe283bd4173e6093fde6d73a2c47493015692b58f14619e0fe7bfcb270dea6388d7e8b8095ff7d33d4fcabc2476fbacd1ca8c51dd637f0f1ef3368f7a0778b649bdd3a42ee6261287726ec91068ec0fd67eccaf0ef66518fa0492a94506fb808ee5bc57f77e984fff44826d313ce3b62652f0ad55cdc122498f077fc3c701b0ecb9db6199270a5f85fe44dd78133779b00b216e5be1f79f0f316b4f31fe100722ecefe7f275f133f47905dca5b4f522722c157c2f48a770a830f4d22081f8697d86742490e752e466481ff45226063b918d0b3fa28b8345ff48917b817b2047819ba2eece7700e325a23b790af1b7485e0dcaa5eee58ecaa487657edbebeeac11e6a64f6c20d7507e88dd3bb0a33d8fb4266a1bb7c90dcf9107fe5103ed9b5827b1c5710cd2aa8b1f97722f4df01cd48eb92804a15f2f2066c2b5f6c700c91976417ae9a5f4264129f250eef180e38dbab9522be7814cc26dba766d729ef5cd4e8e7ab6dee90eb86ffcfbdc42bae568cc3bddfa60a1b5de3ddfefebc53a8a0bff44dcb61371e69d8a1f7932e085b70cdcdf938de72704d2c5af58069292cb02b70b5a03ff04602bb7d739e2037e9fd5ab866c752ac667383cd380addef2bf1eb48419e1170962bea566684f84f36364a7e8a939813e36effd24f3abfc1be27963389383fb0647c8fc0cd9f9b90b67ab20fbd0de77c63e96b7f20ae61e9abf3eb9c8bd944e5c01fc66b163aba114b98992aa61c0afca83bdd91f2cba742d88ffab71ecca74789d11f5f963dc36f5986b7bb0f6c57d1e024636fcddc515b8bc59b8b69a88adfc3e6874bb764cd6a3541a30b29f39e8f32fca47df0118f41a92bf3cfc263c2289e5bb1e4c5a94d1c67b25b10d1cc9a6d73d87ecceae5f3b99d9626c248338dc4f07fce062aef055e72362fcf3030ffd88dfa5f20216fb92c0cf128dce44fa352c0bfbbe6d9077641918a71d644148e03985f4543195521fc90c903b5eeda42e60bec37bb16b5549c01b478fbb10e00bd12ac8bbf2906e65b6186635707f3f71d90fd61969516d8c379299487f6d488853545634e9595282eaf7093ad4a3908058b7c9fa31bfe01eaf08dfb080d84d51d864dec42c5c7611b9da2214f9ae3cf125d77d87db017bda90ef46a866327fcc909cecda2b6b1501bac8c027a3207bc9360bc756af6dcccc7498572e2f57b74dfd78d601befeffc2b6b9b7d78b8ef406e40baa637fc3633acdd6a755cb5170acd760a31099ab935754fed7a41d1fa28b61ce9a355b353ece59597a14e00e4e5d8d20141ed9486e1e08f187a2afca35e0c89984a367e596ad623fe5ce7b8a49dcd4f9504ef35a11c087a083ae7e126fe057ebec0f93231d4b35fcd44cbe85aa9497f10472282de38e1782f9e01a7c7f755b03c60bd896b80c43ad1d2be0bd897472919d1d1dabf552447606d89a183bc4d4db6f79786e9d2b105746e7de19e39f063c5377756dd8b8704fc3baa4ab2b24e01358eb7312cd7b1c8b3487b8a3c3b29dab82c3045a182be86f9e60fc1ae206e99d051ca085db10e19aada29d7d898003c75e7fb86c550516179b8294b87a9ef5b87f93f587cf227d4725906cf09b3c01dc3f7bfec073328e77eaf3e2b48a00ccf63e2e10d6168e61e78f48876f5c5b827df560990dd26bb693fd45d18b1cfcf2dc85b0b5782073d5d9371b629b2fdde09c18ca2464362e0e2c4dfa3c92dd586eaa29533b9401dffca575f7e037aa83f107b8f9d09ee5855034e253b688326871206461816472fead1d7b5b6c67ad3317d99de7fbdc1a715245f7ba606d6a55e8f22ab4e9f9dc1a7480e49d0cc1fac622f7eb05f8180fb694b8435e856811f7fcea80db4714c33df2bfac6f7066fdaaeeae1f1ce0f91be6f3b7e7f744fbdda37dec655bc67cfe037c3e8801009d4716f6b3353be46cdd97fe04c7bba3bd0aad49b0b907f30ce994c3b9817dea300eed5a7ce453059e71e06ee8fd34763513ade93b7d70d9fb6590ee8c63d88f9daf02e741e2392a0a03591c89f9b696cac02223d7164736861fe1b82f455f757d1cb639fc806d84797de3ffecf4f93f073dbbacb5ea3a9c777e1f3782642d87ed7c4ebd063c57808fe10f5c4d6b01e227e06cfaa5fdf46accecf9e3980df4d2e9658dec0716c767a3b518b0b70ace68d8b8c7b0faeeed3bb3095674121020e7feca37114463dd71e063c80063037c1de01b78fbdd6e8dfaddb9af79b69591688f8de8c89b848cc227806f71b0b07cd9a7ccf4c9ae45ef084401723c4d88075b75c4e935c4ef0a963388a9f2538e3ad82abdb3f748967539ae8d2c5cfa7bdbb3ca743c7538f6a2db0f812f2a736d357cb0794771172dde1a70bbec904e77c6efbca8b3dd5773e21bf503c692fa407a235cb7c9077bd4289c282e0e5a18c95a15fdf7f1db3d56cc740d7c9bb75bc7e9f7a5af20df7bcd769c88c71a72fc96f38ed38f5e9fc81abdf3efebbf63d438164d39f6fa4ddc61b7179b1df75926a69bd03bbba10f39702d2ecb449d76d82a0ec5a1b9d3607bb3c7c8ca44c0faedfa16e9956aee9f557aa7adaabe9ceedd33f6613f97d9f9a5c9e4d537e3dca4c1b9df69fe886bf2969768679061c01f4b7fc2d5011ba2b140ba0d21eb37340648af2b0e3a51e1f36b02722815fe06ba88df74366b78da5906c4abcbfc3a756aa2927bffb7641cac2af1ebc5cd4575022e1bf8bc9b03cf901e8f7dde3ec45c8847f0c308c15589c4d69fdac669f30ef345258dca2735d20b21378daa12c79656075b7a5887032c299c63912a69ff2e70b8766783de403f90eb4b22635f21d245da7289706ddf65e67b1f23d7fb18457b3fca758138f5cefee3e1b942e6e3cb4e5f41ce64c0767109fb17fee4297068f5f10d436c1dc1c95c3604bc5a59ab426bb2f10e2619f4cf229bb97faf6aacc9be8f9db075b2b1a82450f863779e5ee0f3bb767c7ec323e8b5cfee29e6eaa72a70d13d3e3fce3de6201f48e1abeb2377defdcc240c5f72ca414cea3e73908da4c523bf5cd0e65ff56b384e00bb1fe9db079cf75e2902e8f9577fb2d9f969723e5853464cb9d2a3681ae2186ab10834faeaa5d0b6c7d8a50cf689a7f51677e34eb63cc885d3909f5ddf6e5393d94e8cb29feb466b079ea6cc60bea55214a6edde5fcbfcf49757c7c53d2ed4c9efe711ad4db7240beb55b909f1e9b3f429108ea52b486140e07e407a5300fc91b75f5e5d91ca19adc7fcaaf0b302d5e59390274528e74dedd468fe209d4b3ad93a795284f9780db0552ef3ebfc5b0b4f8ad072f509063cbfb34ce6db2686e715239bd31df8eafc1349489631e052076c2dd24fcd6dab2f7d042c93ec96684f90ae4193d70a359ded96f3c2a198627b1613ef4c3ee4f11ef32fca796c2f0958416d3cfdd8fe3ec2d92af09ef5f2ffe9cc17e9b7249e43fb3696272e027d5aad97cc0d7876976417b3508ee212d8f0a62cf7b7f583cf3278e2c7053f0be07d05b694e867f3e2a4666d6bfdfe846cec028dcb8b3187fd07d9db106b82c718edf125d2f9e574f6e94734b295279867dbc8b0bf6773f55834078cee39a40f77f954686e74fe9f57ed1aee5f37f45cc0fef9b9df9ca50e7c15ebea77f93e435b13e9103dff9a56158ab02e9cba4a77baf84b5e8abf5acced661d63dc1b25965c7365ea36b9e08c84e1f495b9510dda904933f7ce7ff11cd8e045e40b52e2504983e750c77f313fbab8be4f887949b9facb4a4ab75e50aeb526441e73a26d6bb110db7816cfe2722f0a414f93b505bc27b2f3a34b55dfea590add96474d5c124734e7bd8908cf7c6b52a0a4f9f5604d3331a94aa457f84bd213538e809ce233c403a17a6b91e7be83d4acd1bc41fa32d4fffc1c819e1bd6115834d8ed5e578e607efbd40630f10d88692e228595482f4de08c56e4c93058ee8f81c910031ef7ff93be18e8f9c79db620ed895a3b16dde0f6cd7f89829b380dda1b18cab525340ff7de647d0d4ca67180d384d60f769e28ecfca69ce685b85c956b36eeeb68bf1b951dda146e9b927291fb9bfe3e2c899b2238235ca5fdd94cddd4ac01ab2975c01f83efbb854771c4ba913a6c3d0afb6840e69b078b1edf1bc45e7a3cf3c0091b86100f62ad0aaf216b6cff198c57f7fea7bd9f32c886b8c8c2bc7091ac6269d2a706d7c15714a377807bd3a35a0e6fc0b0afd03c1acd19d4078ec99c80af304263f63017347c2d189cd98b09912bc2be742d3a74d22a31dbf2f6b64af86912b57883d941a38763f6b7efb46d012c86819e2e916eea263ef0b056b77736e5632cf826ca21a66e4b919e9f801e365578d2f3a3a2c2fb625c7c99975a6ea400e7dac17c293cb8b60976d6b4fc62ab8b35117f36702e41d38a90a0f7491be7fac09cfad6aa6e8cd6078bfe79d2216bee39fe9b0d33b959e572eafc07d9a75fb69ae81d76973dce3fc7fd93b081e5a6ae2d66eb28a79454a2517d1d3607ec61afe76482f4c7377312d9fa25c469b1212d6bd505728a74b2446bc0c5b9cec5812d9835e42d411c22a308ad4fde80f3d227bdf0b09c429ede8125300f059cef5419ce679da7523a437d7dfb32f0fa32202635a495a5f30b9f49de28393d169b08e9202dd6a639900dcfe7c727d8afd09e621345e703c0f2ec157fbdc1b810afb22f9cd6def73b8eb1077fc0cb3526ec4b274d4a77d5cdcb9050624e3362ceb509c954639733a2163b226d9f89e13c2a0b587a6124d2c23219d6345c5e35c522882a428955578fb98d666cbe554e5a98755c38108bb3067b06b5a393c9bac5a17533ddf02e25f371395c9f0a8bec4ebcde7a59af4b297a6ebcb6211f3d87369e5da48b275fab76ff4816d703cef97a5cc7c51adaeaae758233a0aee5faaff7636539c7ed7a58ff06cf80efdc8fc2bc5b53ca728fbed9d4938da41234a7720c6b992aa7b0abdbbfabf388650fe8cdf859c89d892b498f4d5d59ce8b759467382fef7859b71cff5e1a181ee1d61e45bff0bfaefe83e7a9937a35dd0414776bd7e81ee2a979a2e8640f9ad38e76a3a07c34f7911da41355170fa19ea52be48f58f48ff61bde71c72699bff10dac9bd56f7c0377bb5969f3a2bb3c7b85bf157e5d9d76fadff7eddfea570aef30562dddfcd43c1dec0d3ea7ea38cad8450a9c214bd03b28c79668ec7b85bd7fa41f617fdbe2e25849d9e6cfe4a280de138f22bb387b1cc3b76747ddbe8ff7931394cd0c314a6d7e1a757a9fd3cec300ce6f51bdebe383ce01f53f3fb73ff6fbe7e9416f82fbe2f15157c1ba91591e2cd0a3000f6ec33ee83efaff495fdc7dafd19c417ade681f67b363909aa70d1b86f6a45dff9057464fbf3486b4279b1370cf25c00f5c884bd0af72687f343f8a7c50d8249613589ecc99479d54396747397af836b3b8d9e89fdeb7b5ddf3f1fbed37968e259d7f336eb7763fc3fbd85d3fa836517e92b52a6bef633e9ae5baee740c1fe94d27bcaf9a56523edef30043ecce77ed51dc43dcd40a38141cadca77b6087c11801fdc9f472e6a8f0a6ac7223297ad522c5fcd66745d033e8abc8de3bc3a148ee9f66bcc9ffc30f7501ff4fa2b8cfdc39c6aaf0df5f3c8063c2c3af1522ef278d36acb5b04825a1fac7effbff6b21fc6fe2fdf696534e815f6fe7ecedae9c9e03b781bb7f7889995bbcb4b6635fb5f5eafa385de86cd4bb9e1829d86f5b4035710723afd5927c001003cda8ae0b6cf6d06fa9bf4b73a43836ddcdbdfe90cd40ae90c24d219fcbbce003e438811782effd2cafb0bc87b1de777ec78229552e23f6bd64941df9d2ce8d1de2138c586edf68efd2f4fbb1168afe8faf8b9ae63fe5587aff4cb0bd62fd7ffd9d9f3d23927846bdc3138bb58d6d7768ef8cb671f745238037ebda6dc163bedd59a72b5f8d36b390e02b0af4802ecab08ad6193f9d66254f6456e880ace1a5bbc499ca38a644992f8cda3eff7ffafbee6b3aff535889d16fea4afcd9ef535fef6425f9b3dea6ba12218b9ac5f7eabaf79f583be563fea6bfbff4b7dedfa77fadabfa97355e371506bc70eb0ccb1d7681cf63a916c4d6e5dacd9ea22ffa53eb459fe4e1f1a9e43d29feddef3e1c3f5bfca352620d7f87dfee30857f36b82b9f6c5b48f1b1ae12fef28e363ad633f68db0ee277edf89bfcad80ad4a855f319dbfd45b12c83e80b31e0730fa5f70d70ccf0459a976ad0d21467109fa4f748c022a8903fe1829c0a14487687f9059296b73311eafa707ab2ac027d3cc6f8e2e255b5644767cfcaaafdcfb7b5311d91ae7e365a3ddebfe8218789a5674037c017f683bf0ff0edbee4fd4daa32e096e4f4c6f813f10e90befe2a5d01a1333f17cacdaf6e4f76b717b2d1e5c3bd66254950fcfb5d7205f8f7ae60a32ee3903a9d93814577431d39e3ec2b542b6f9e8b73bc6bd2a9c479e88c7b37e4dba38b65a1fec632646974246fa1ce876f3a2ff1d5dc2f67f52aec55c3c0dfb61e8a313e19ce05bbf3c7385b4b164b8cf5de00218715a46c7c8adc57b1f7572373563c56e392f30567721a62aeda5dce560ad232c1bb89b8ff6a5d5263b58558c65bccac86c97a7e2335f549f1f616abf893787339251be8129fd264efe645166f0ad5510f3fc3a2ee72d475032c0ac4a779681cf8c274401b1bacd531b21affe3dc6c8001f604926f8ac7983f42ed83fdfe824f7788957efbc6e47ffce61f80e2f252e9594c69b7df85b43ba86aab5bc458f762d83630017d99e32cb0070ef71bcfa834ff449f772b00f30f7ce0b325891a197726754fe41ab5afd17f87235d7ba8deaf4a2aa96eff1fe77dfa2b9b1d4d68e015f97dec5946f0c1df21c2117aa8f0134e360ef514919b047c04944fbef17375c1361aea4498931010cc0d3f16a7abab3a68557d3f4ce160163c9abe9761d86c6406fcf0e104788f677c026c8658d9eee404f3f5e1c8d9eca5a9e2be90a9705d763749dc6d7f7c541a313b921d1f3e8ef14ff7dcfdf12bb36b3c748a6e2d2d1908d35bfe17fe2cf41a3e376ede74a6afc00c70815976e5444b2260ee5f3c8de40bac9b75661d9a5bfe081eb62d307f68241ba02d625f699ac5f509b19c051e167e517e48f829d747dd3cfe3717ae8f32ea7ee61ec369dec93357a305f0ca437e17a35f093851eba16f5beb502c714e17e552c78aef09b87b99292a427a8396098f071bea56e8c5fd3219a437e4d278a60a0ffd36dc74d3096c58d92ae507f1fd72cfc8be4c9ba7459b0937fd0fbedb8344aeab418d3439c98d7f2d941365dcba7266b558175ec4d12709b9363554f793d483ff89b7207f3a8bacf9f79ffb7ac019674cb9914f7b2ee60d179f084a574499e643ac4ff8b99acdddeca409cd71f827dd463063dcb3c428adc047202ba5872e35e471b4ff8ecb77fd0f5202f07c7c2d403393eca05416bbccb7b015945b671ec682ef346c7cbc4793c8e43da53c04bf59ff59241f65ee953661daca404f5b1ab85f00ed20bfc49cbcdc742ec56e80b0b245bdb6b21d2976b1ca7d9e2323ccbf1612ecdc99aec311e03ce6378ee17c839eef107fae7e5362ef5c5def2a0773b7d2e8e1f25438ca4c1d90d592a5dbe10601e6cba5c03c68773ecc7f9009cb6f8ec8137439f32b74f7bf0f0ecddeecbfb44f344c6f8f860afef611cf6687d0ff236fae773dc9768df92708ed2a3fd39c07575b545ee458b46b61264fb95079e6bf44950f6f62be021c58358cb0dc411792dd6873fc8a7fc62ab4b8bf73188dda56985df6701ba27ecdbfc2ac0a0eeda0873f72fda788236f27fd1460bb7f1eb451b21cf43a3a78a1063cc8bc1fceff22c01931563640cbf83c032d67f7eefac5ec1c7c3868422c4858b6cd614ce96f287fcccdc996c348f629e7df277fef0b7fa17c4832c19c889dfa65306f22f842ed7d03d1b29737dcedfbf63968c6360665980e4da8418db8311e69a9597e24dd6aa1cfbe48f6f713a9e30c3c7b66a292f57f5f62d0feedfe5730067fd080f0ac930ccb3694da46020cfe0f7a0cc761f9d310177a96d9dfc3ce879adf0183bfedecefc73dc37a607f12b38eff73a280fc7a20c7f47c0b35e605fdcecfeed778cb4a317d117a42f7b117d4272d58be817b623e877a592ceda98b36a76cf556f71c3cd51dc197ae7d31d619b67e19aadceaebdfff0cf20074ae52c3ef5eb6f304ef42f8b8c3cea964a498bc9ced28447b6fc38a41abab593fea95dc624b93829530c79a24c9e3b2bc2a5e532cd22dd62e2c0aa12f14ce4caaac7f5ee700506b85a61a2b0d2b74d994dff4e54f59c9680f983eccce881ef7180afb3d65ca2e5cb87b5266bb7a9741ec432f2063cb761e1b9a8e30a7dc606c4f87a36c9243e415e5dc12c86768c7bcf6dba6374b7ba628b2fdff127947e04fb5eff5c371e4399e647b7085d776cb30858b1f842b68645263ef8b7d1b7cf8b9edbd326726529a601eba46f78a212d91ae079d7205313d99a96680f56f859f1c87f3a5c0f0147324a2ae55ebacf5adca8eb882b0bed6dfcb4f44e6ff347b10e9330dfaebdd978944a7abcf1cfdb78780de642185815f1fd143b7bd7efbe47384934d2890a315d4598d350c56d7af09929e378f4bfe71b6871c45b0e0934e76ec001c623fb8c6e763ae4887a7f8af9f6a2e3ed155e09e820b544fa9471f461dda03978416b183035eedf87d61d477ac23e1af3b78dfa26fd861ca3b73ce24fdc8683fecf0e3af1566fedd6375a2b7efbf768ad70bdec005e0f9cffc7bccf9fe8d798c9fcc67791fc0e03e4de2617c7b59c5bfc129ea9773ac10cef8b83df636edbd9e07bf2bbafc22672cccd308cd15cbde4b37bca75c7dc070fb9ee975a49476b19d98d8977362fae2d418cd1b7700bd71db76deae6eea493f144886cab76dd47076bdae5ec94c144ca031e9727eaf33fcb5541045c0764df3ee40f93e3be0fc901f702e0d3dd7132cc9d7b62ee720ce9228375a453ce6fe2ae419662cc0d92f9fe16aadf9503b93432ccd3171c558f98944f3c1ec82e3191ce79baf3b14960578a7c18fad4f41cb08bc8b5cc5244f687ade68e55e53e65c6224b1cfd897903be796d9139f6a694000bc74c30ff47553c727ab8e336368fbe7459580fb84b903d3b988706937e0b4ffad618573561be5b79f56db73c57b2d661770ee7e9fa153f0c81f9188c7ffe46c7e8f6182faa4673741b219de7717e820e32f1d384e87f0b44be4dfbdcf8e41bc9a21e37c879d24f4631c9ec7d0ff1a2aa7e877185fd6c492ab3685d2e720f3067e813c6f0dcff967f4d8c37a197025f208ca5c8af8e0e5585fe647d74ecf5d1d186758948c6e3dc1fbcc700afaf7f2249cc3d82f788960b1cc7ae691cf053f57a45b4627616dadfe3541aebfbc3fdbade515d39f1870ffc5137b0f9c4b37a75a900f0749eb0bfa969cf85ec5061e25097c45d22db8649dde888ec8612efb580d97e2f13ee3f94c7025e22e62dd7e8f8606f60dc5dc8ff9e623c1d5c57f6456d32d7dafcb8d6fe43046ca3aaecf9ec53a6ecfca352e4bebc2eb3ab4a86f51d174e1d1660c3b3d2f5092ffebf6ed3e2bf69d3ed459bdaf802e379efa51eeb57739f825884781badaaefe7b2faf63ff207802d00726143e01ce0cbfd5b97784d618cf875e6b161296bb7a83b537e5156178ff9f98de325a1cc2e9fabc5a26871c6c8a7fb722dddbe583147ba5437b70ebc99bb5448b4ef766767cc606cba6b3fe27931ed71c25a7beebe07bc2e3360c10f9568edb59d26a1b5799259f1e76d1d6c765cb3d329f8eef859e9dc73df7b9f950c7dee448a7039793cd7f804f05b7e88e7cde4007c398b28e0a747312ab2413da7036f9e0e9419ef6a3427e1998b180dfa3265d077d0a097c35a7af94cea9e37c49785e4c2a87c8807d9d5e2d139aba5a28dbe11ee6d23317a7c27109202e92ce2b84fdaeb5904f1f76d9b5cadba7a31f044ff201910f0ccd9a5aae45b43f6ecaab75354ab4a307e33e01f51c8d6c2b270b3050eb7486a022a211cea787127d235b0e7d1efcaf0278b10ade12f6a5338f6a6010e293d8bfc499007fc2653608f92883ff4e98f3c982718bb7c16e1f78848a61eef8dbf3d104057effae7eaa555e8a46621ff6fedeec6f8d59841be1c8cc37f35ce553b8639816df8c1fcf93f693b926f6ae16a83f65b15acb38779dfb6577a1e9b731b0b00fb619cb7fb497f7f675ffa35b38da4c8a398c2b5b807bcfde990f31fef552c60dd027f9b5fdfd79dc20f65e99fcb73f9a401fdc3da035eee8beb8547d185634989b7cc47f2dfe3b9c8b5aad9372bed503f7a949be26bb78f41dbd018e3f7856a26c678fff4a86efd8dcbc473d14465de7cc0f8946831aaeef364fc7c2f27406fe0dbb80401f7f9a00d303e2deef573398332c4a8c7911cdcc7f2fd5ba820076d882f796f4b7b4da86698ab8028bc33f92ff4b1b7fa0d71e7832798804d7ec39b2ce981bd48fc68917c098bda05de33c87122fdc9fee85a097140fb1ef026630c046f223ee96d5bca18d9f8039ba6dd278c2cc058ce431c40b48e46f6e4f6dcf9b1f2441182fa60abbfd7870512f2e5a5c8edec0006d9f16ddc19a1b0c0a3f2896cb16d84f1d23d0ad983eaea60a9668be31129821b7a82f9786e3f8a476cf3b89fd6cfb67ebb66d0fa805c7c25edf5a5543ae31cef77fa94772690cd085c6a8e169663fe45e06f21be21d67255ee29e6e2f34c09fbefdfc480d7f1e7c08735f481d780d976223dc09446f6312b46b649e45b6a9a6d34a453579f079eac612c8451fc64873b5074782f9a45135ed35d07fdb056528867c5b170fcc8973db8f7ce9f5d64e398a669b661e34cd457b9dcf1be70974449e342aa67bf6caef2bdf3edd7373b3f6e4fd9719f32d74040dfcddd44aed747d8c05609640b6d4f397e9eabca6f369f89ec82f52886f0276aedd8f3a3d1ca7771259181a05ebd689e19a9193a937d6ef3f44c3edf8e221f1281b068b6d1ecea5268cd9911f81834e67cb055d02103968906e55eeefb46572e59bb16770ada76f4657330678e1e9f447ecad53d664c7baee7b29803d38f16c481378eba911822b7209db4ca9d7ab1eeb943d970a3995d9bef7df4a7fe9157eb5c5c8ab7b51e5f7c017057ca805db0f89b169c27c447f9afbe3f79ece7bd6b4b97432f77c06790f8a9197d698bb39f7265c09bb1c22e523f3513c007e681d7f2ec6a37e04d772c9a160564576f90fe7875ce6a78b0e8dc4b7d24a7208ef63e46c866c57de9534c1a0841e8a7062a231691ce4a31a783c501f7fd9dd3430d5b5f438af10ce6c8764c4456d23dca25028aab5da417b3c0271ebb1657dceb4b4a549fab2d06cf2e50ff66dec42444d497ad3f12cebbd845eea59b22b054683fe00ef20c19b08b96cb976bb954a0cc1aef1f9b7e1c517f04f6265158fcdd0abbb80006d4392e449e4cfc3440f76e812515077b9329ec02d93e7dee82c22e1ab8d7ce17855d845ebabf2299ef5366e1ddc70d959fbb684e52ce11fa83db5cddb33a716ca97b0fdae3f366ed5909d18fd1798ddb4985574fc3f3d5188cc5c1be7f8f7b366b2f4d9a03f0beaa579157afa2b0b9b6edc4363fba8efb23f5a8aaf026011e7b8a413a098e9f6f9ed6b781ea752ce91a00b72c73fbb225aca7f1f43500beeaee1b90dc073efac13ced9f690ec0e90fb86fddd8a1f5987bd122f4f8fb1a43751c2cb31179a616850de9603f0a70778b58ae0d30b01fe70cfdd47e6d651c0d82e14d2e5818b171d4ccf5d1e0a49d19272bd5d81fc598d3c555a28bd1ed681289a1ad18d36417f6de94b4bd411b96b6d8a9d162a127f1512392adcade8eaa19ee8dd8d48d7ab13392be2e4937176bcd30570afa3bdeac4d4395f4d83fee13d31057f4ce64d17d523257e64ae4d49dc8a9a2aaddebd20c5317570c2fae48ce883722bab63724495f2586a5ddfb488d1343c7f5f33a291ef7da62bf3725433336a6bee234915b9846b2d8198471dc1bf40ad5adc7c9564d24498f034e37ccadc94e8f9a313deaf1eca89a2ea727fba341840b7d753b9aab90ebd7e68a33cd55b83392f511ea2298bd654a924a8486b80a77fa4ae5d0bd7d6c1cf555b2d8c71527aedc9dd1f6d99ea8169a4114e24a5de80627a8262e4727555135a5fe9bf0bbc95a3355576117b6b6320d6d656ae22ad98a2b0efd5b9aab64a747301e4b9da00d23e696268bdacb6826bb4075ee50db8d24900cc228c415a769e606c6404da49d3ee8439d446382fa9a69ebd8ecf498e6f6a42ae9c414cf8517f307b51dd52172a6ae6a833aa3c54a35b8b566d082512f243d42ef9a7d7d83324a9ba77d9bcdaee87f2fa2c1b6696dd9cb97b03eeea279093611dbfe6f878d285c7c2fa9089fe762e0976cb2a3725a937e6a5e44764ab4ffd71b5b4a3c6d5e6e0429f174fc8e9b3265c092ad7d372fb74b1fdedb9255690b2af83914abd3bd51b9c6276a5bc04b571ff64bb2762c350fecf507aaa37bf7dbac4a1bece276dfefdbd8c73b7c88106fc21107db4ddafaae416ad66e5a5d83263b1ef8247679b3ecca537a3f08f44b39b40d517ff4ba408a6c6fdc77688ff0509f686401dfc02e1edbdfe69865473f0d220738f6fb98ab72ad1bf9b69e5fe568b170f93dda0f236f22c5ae8de4f9ecd87f1fecbb6a0275b5fb9f1c31be77267db059b15fe278c0bc691e3ed321a2d6b68cbcc931b2b5ae6d6aee4f168563c71f484e7a29f43933ec4fc50a6a6f62de5ef62bcf453ec514683f6afbb5b5afb2e3fa34bf49edd803bf4234bfb5cf44de04e92ac487b89cb7edc078fffdef5667bdd703f78f6b76da6cec357e862527ae25fd1cecfda58def6b6392b223e60a9ddf606e36b80d8a455ebf2292f429b356ec968371991dbd9429ddb69d8addf147fde6b9713f03568fc8d28ffea0e3573baf5dcb25b6d1fcb2d6dbfe18bf7f413a5bfbec20ae2a43fb5de3511519f046d727571ff5eb12b7d54919d4af9741bf767575bfeb6e2d6df479373ec8e63e1face9a0efdbf9791a955dbb3cfa7e2974f984f49bf6de53dbddf42fe705f0380ceb041d5abfd70963366e6bdffefe198bab5d2a29c77309d6c8f3f70ce5c5e0de1792413c177b13ff3773bef70db57d3fc8838b4097477a26d5cd9b61bb449e23037ed6bd17ba3ce887976e0df8c2f1e9de702cfbfbfc5d16f67307ad259cb7f1212e17b7afa7f1c2be0c68c7921bdce74e070ad671e9b2773924526eea9eda714d9ee4de50a6ddfd3583b90e38e27c957473e05d3dc82e9759e202788f16b289e2b7b2f1cdb3e3f101b94b5e03bbdd37ec4d827548f4fcfcfd38f252e85097b30f58b2fb4b97a323023ffbf1322ee72fda4899278fa263d42ff20bd980f70d860cf82af752e3e24fcc9343998d5fff4f6d241d6a93f89375feb006fef8ec8bbd6d38c6317000d8e2f1fe0c99217bcbe38d4e46458eb5f9011967d1b162b55831d182726c3153ee65fcb96d960ae74b7ef437e38bec0d6c27fe0f6d43f64e09b8dafac3baf9d3b37f18d78345a7deff32a65652bae9ec2ffaecfedc1fc6b2d541fe9736617de72ffaaaadeb2fc6d152433f2dfeb7f9654b3f7fd1a6fb73a3b10bbdf64cfbd74e931efa4c0ab669087ae1ff22e35a3f753796579fe74e80171a217da4db6b90ce3dfb05f6d8caf81057d887eb50cc05d9c6075b6a02f6067a5f7bee94f8f52272adea1ad40b68a39f2631b27bfd7a51ba9619f77a202a9797aede446d905ee4b304a19c8f478cd34ca0712e0341ba7aece2b33b6bfcd616d8976bafc127e1b250eed1b392b2d7c979ecb3f0ac04fcd122cf9081b0200376013abd5fcf7f29e45817c7e3bff8147932f722f2ae1bd6d309e8eff5e272b0a697ae1d5b1c47729297ab7263215ba2382a27bfb52f8ae3fabc98ca7a711ccf7df2daeae0c7af7a71732c3546eb56697d04db685e2927b3762de253149ef597be8d83fdb8d345d6da946cdbd98ed9a30ca8cea250e07ebaefbddd3b4f360d2aef6fbe798deda71f7129ddbed8f845bba7a3fa7b7bac26ef3ad319d95ecf7de5a6cebb773bfdb1be7ff32b9da89535bc8ffafb3ea6d11ffacade5c5ef455a39c44f2efe7028ce351aee7b52f1cf3e73632652b731a4f1b8f29e04a0ac8c6e0fe30179edfede7837def539b9f225bedf8256c8e221b8e7cc5eb7ada882c71c4e5cd2f227ffc589f602cdb35fad837c8b67ed5372b6c4bebc5782de2b9d46c9a77f37a3a2af7d5fc504ee19ffa61ead7affb61fcae5f889114fc8b58cebf8a77b7c821f7e9be0c78460f305ef823e6e03d86129ffb5c1c7b9e3d7167f6788e6fcf8d0aff4426030eddebce32bd35d9e2c55ab37cc0c5daf25439e97b1e7589f0a855576fbe03de94592122f95c2f1a6f62d60e656e1c7b7183d870535aef00d37af5019c5c7c726ab9bdaf87f3e6ea9d2ea703cfd53e65123bdb24dc88986e2929f42983dab0b748a6a0be2cb0e8c4a736a1cf1b996bd1278f5213d394a4d1f9d32ad77502e205202efd60b998db448b73b9168f72348b3096d2acf42986f453b4ffbce8d7517ca4789523f0d5c3f3f03d9af8e3d574f7ad90f32153c68f18cd7f29b5c40c63a771cec2e6eaa59b3060c350061c39fae4d8fbcca29240d6e85f1e9594322bf9107fd6e53b2497da7ebca7858432e6ec27ac460a76b53407cc226b7514a30b5c936be9538c2ea55c4b8c78ca4bcc4bd1e209425915a1a4f123467629db45d4f5df538c7c14263bf3e2b531e2c9fd7cee1e7bee9f206fffbad3e79f5ed3e268773c2fcbcb55ae8bfbdc01ace98de791a4b7e6884f5cee8a39684e2a0b92773009cc7f8363dbbb329337e585685e7be4bd1cc72c6eb6e6a47e7209ad6611d836c491a552c485d06f14e7ad1382f14e39f0db396651db3a11c9acf8037f6b4524b73e781c9b0479a6803bd1f2108432ce7722fe84f7a0f0b3e2a043df843b2dac1f73d2ef6bb0e30977d201a77b2a8d30c2b9c2436bf4ce291e063c138df3788eaf70d9999d4e5ed1b7025754cf698fe31c1d5b3ab7e74d8dacc58537217245305ef14c0e30f819423973a46b4bb44199856b6d08e0bfd5e28f1127bd6d26fe39d1e1bc70a25e318e055178cbb739059fc3f8ffe779faf739e8ae76c4b919635e7bcf3589fbd9b46d3c708f1ac0fb0af2b0c7780e0ddda824cc6f7b8f3b9322b716f904e29480eb94728e7f7a47b6d5facbbed4980f8d2903de2c83d5708cc3c4b154c6a138b47fe1d8ea538b278cdbcef8e77b1e52c05d12bbc544f41bb28df900feca14385c78e0cea164fd328c5dbef5d8162953cb42bb97a075761aadb372b0ce6a586709013851d6446cf3359354e667f917352bfdd44cfdbaf819ca050730cf5733afa66f8e2d1103beb04f472b7e64249379ae0e848de79844e647ed73e42504ec6dcc9f12ee04b17d6e3d88c35ffdc8757255ce8b10731361be12270aebee9a45718102b1c264e2099ba4c7d0362f41dbce107db7a357fd3b83ef0fd1f707dd393f2f3eb4af2290cc3f9897bacda9fd3c58fb0fcc2555d5aee536dbd3aa68dbfd11003ecc28863c7b390ec0bd23021e8ad7a0fe9bcddc3b9ff4a757173fdd7a39e86462514cd06202448ebd49765482e4ea4ff77b9bc2ef22d0c94f67b269e0b74914eddef1710099570df6f039bad6d836f18964a8ad3335f4e3433f075a0c714bd0378284c68ff9a292789bdebfd99a98c1f7909f8da7ff804f7dcb306fd126f1cfaae49dd56bcf7b18bde3b7dd5c03ab8abd282044decd91dc76207f31295c6d41c099bdbd2fbb58065f90ae4eca459e101f3dcb0cf1b97018062c3e136e63e38f684cf079e8fc3c8a2fa97da48302977100314a4923f63c1efbf21e172b326e7249ef7c6744d5f2ed4501cfdc801711f04b5bae227b9ffb27a656523af91254fd00e7e1f479474d077c4666ea4d24c059f723ba74ed9030a824029bbf86f178ccc526643d2f5fe472a37dea3197bb70fbf1dce75bca2c90ae0bfa62dafab83511ed2583dc708e902dccbbea5a74dce531076c8f9b0fdf3b8c931fe816836f5767df2c372a5749bbb6be19f7e4a2b763bcf6282e766d29c0b6da42f2ce6ee8f1492cb6f155c099132dd0da45f298706df12851f7baa47a9e4914736bb18987637296b5458afd2350f626b03704c4a5b101e14de667859d9f3b9fb754e338b53e0723a94a910db340506f7e935d150ad97621e944481f24ae016546e053a949e09bf6d324522638c64fb1aaab63a9891f6dbaf510421c4bd473255d1fd6cb02ad7917701cf13ee645fd3db6bd9e056c757de4abf3b40edf057327ef74c0b443fd85f402cca9d7e7e4ae2a88bbe391ed49b79c7a3db76037ef920157608ac6d5e5cd29cef9893f83e59459b34eea460f1c3ef603f7df88efe20f7c296d6ca4d8eddf030ed60e23c4af69a2e3097dbcb6d300a38c50a84d83395746b94718afe9bc2ebd94299d3b5f7fbdb3a6a597ae3ffd36a7ffe139c68f86f2cf47fddf6258488dac5514de03e2221046df7eeef6867b3ecf25c1b8637189d6856a71a7037bccc698328057d5b8b6da612492802512558445d101c4f48efb387ab21b31066b6b13d2434c15c895457b48c76525f331f3d6664476ee00576e3719ff86be4265e939a18cb03cee79a2fd33da90a7eb01d707700c378ddf90f9b78539167da487515512f04c39e0413dc975f1e99dc80638fa1b12b82565adaa778681f1f8d8b0d5a1a685a3dd80abc96b48ee214fb654f855816d142c23519f0ff6cfc71ca061bca369c4b73fddef63c0bbb147f6e7ef7225d17de52c2541cafcb85d0c2c676afaef6cfa95547894f8bbb6a07d2adcd5e1a39fe1efd724c64c18e5d1fdcfeb72b0c6fcd42c769a84f77a7b93b996498898abb5b89703783349973f0c395d82c8e8351d1d2c3a6ef3b80bb44630afe4436e92169610079f86b56b39a994a07ea56bd776af07ca6cf31b55346e9917d119d283d13adb4661b9b33177be7f227f1ee7d0dbbad0bb630eac31ef6c17877dff1fd648db9f277fb24ea5f3be6cf5bb76bf06ee8810f3e66eae812d9d5c830cfd56b6757e0edde26ebd9c3f5d50dd4cc0260cece5dae22ab309f36dbdc72e1cc488435c28e41f5a63ce6b7565b2a6e1a752ac72fbc41446f9f923fde03eb7def10a9a7c9888c2e37eb938f51c7aa9d19d01405c1c9c91476484ca427bbf88ecaf34a93d8a867ad0de210b7be003fb4276702ba787fcddc37517b0ed1c6b18a27b767bbe30ca830cfa166e919332578f37c387354600a76a1a14aead5ebd73357b945f3b6b95c9183b77a4172319f6786da749996b7198ff8b1de805022e77a0d730039daed327ca9d75c4b6fe88ff2f2c9557dcc763ff8f67dffd3fe57b5f0d0dbe1a59309883790931a76edcda8ec44541761ef6b190689fc23e0527f5d930ebf749c879c776911fbdb68b02ac67838c4175f9c9e57aaf67646f15d0e66545beb0ff8acefe6b6dbec2069f428f43945b13e01f08be916dd7e93b7535dd69e104dbdfefb1374521007b3e60ab8992bab927007e29dbc5f43ff908b5717ebfaa75982d231cb972578bd1f62c824cc0f6b9d1e5aae807de4c023649ba3c12830a13d7c6f20378b896e41470a6ea31efd54127638fda90381fa9cfc133905c6e3995af72cbc7d0624ab5384597d09aa8c14bac2b9e030e54855ff536fd8e329e6d1d3e2e1c13f85a5f614de58fbaeca17eb029dbef43323f60d13a5773a7c5cdc2edda24c16ac853738c5ad919616eea7fd57f25b69bccce7791a0b1f5cf1ba2b58d3e65eb19f7c9d5687c4eda614be92ff0c7f8177bad095c56583fc77cdea3bed0eb5718b1b04760dc88e15ec056f9ce1efacaf6d847959a75c0a9d77d1fc3659a7e5a3552e45eb77548606c06c0ff353ce21e2b65da52e14faad9418b53290aeb9db5cffc28ce157e06bfe58688f0b9d3ddcf8ef61f1fd9b2a4a9e94b12b8d3b7d85f997798e40a95371e35fd7452ae7175875058f1c739ab57470b490f6395de5c2d4cbc7403589b469c2ceff937fb4c4b363b3da21b7cfe12e4ee39cebc3ace652d6e7df9e2234f2aebf14c247397dad6aa4f1c839845c08fc532a82f23e0b2847d167404a483831eb0334157e8d6cb485770d03b9a93bed7dd4006bec84bf90dceee1857f5ed1edcf929a5c8edf9c43c9ee9ce687a4ec1371cb5e9c10e610e401e816d22ddbcb9fbb0e9a2e7f9811c2dcc0d8cf6c0fe8c61ec0718e1f6f4794f5dce16b5b97a6c1129f52c9227fbf2c0334dc056c8eefa41cf38b69a792977011bb4c5ea9659c657c8cb97cd32811cedaf0a2b5e1ff05ed11abc793c7772b5235a03852dac7fd9ec319397b30f8b9ce63247ced0ef5d937b761467b67699d96cd8fe9dfbb216ffb2d93897a3c49735e67cd0c639daadcfbcc5e6416b0bec9fdcd38ec021eff35588ec5e859c46323bfd256b62acd42fcb18e0aa10b93cfece2fa93e9672149f2576f6881df0b0dfa8a3332a859c66e2a4c26bec5c818f629bdcae36cbcc0e824af8c2fac346fd38a920ffa4bd877efb7e9dc5b2c6e4ca594dfcc93e3b68f13fae9e65685f467b2e6086a66af2b562529915af684deda8f803dbd2f180dbf718e17bd39f839ed732158fc6c54e6ea5cdced0f845b2768bd038c9acf8f3660d0306656be332b6f636a72b423aa1087947c92960c5215e5add71cb6f30f66a29039ffa0ac9cd52e663381b01bc1fad2ac0f68f4252d62a9c1b8679190b255d818d0e39149c94b8d1f1fddc002e76a9310409ad55e0d743fb812798b9cbb6bcf1f61a953b3ccf217735ce7bdf9e8d8ecffd9e1bac55f13d171272f672f4fd562d453eb9a85dcbcdbf58b11053b708ac24c65c22c0eb30cca107ce067fd9635f657e4d87b21696f01c45138e9594ae0df9cd19b6c3e04c7ba4231ff459a468e2cf41cf22c56aeb3b0d309e583a7c653b3a7575af37827ad1dc4db7679551f8fd432e741eca6c9cb9519523fd479ecc7f0ecbfc86e70291cbfae5a4a45d7c780279ef3b4d5a0ebf41e1d7658fcdc5e15cd99d7dc1e3b0cc809315e9fb3b6bf35a268ff1ec088c313bc42d1de0450df0c4fc275c1c77f6fdbb75fc80b1b3b3f7c0cf3edc13943b9e1433ba3ecc7face911061bc6bb9b6618b78e7cc0b7aa86bfeffdb41c3d376ec318178c11f5c55fafc711eed77b3cace53b3c2c79e9d72dd6215a9fad6efabe4f657ef527ec9ecf619f6f934bf06d8dcffe5a7e89547a91cbeb6af4b73dc165dae48c0904f2e5180fcf81700edf3e0f583a73eccd2ea0e821d653296b4e2af370268731a85a2c25c00b1a9ff791afe728eacb8ef719f2d9eb009fe332ae4d869dbde56aa3dc69cc4b8af5c301d650bb7eb59090d13e108ddf79ccbf067d829fe6df766b83bd391797f9db7d5c52aef1a9e48c6ce4277ca17bbf110a3f65d61ad20fb8da6df5e5e1b9a377aaea16c36b80f3353b1eace9315892a19f06d8ce1136a86ff3fbbc18e643bf1a131ab0865afb09e2262c8a0976b68a6cdea14f27f906fe80c5cd13e20e576850effa71fc9a6ead3cc894d2b5fd0c7c06fc944132c4b392c6d5e25c1ead99f00afcc1d423d659f2190812fd45ddb2ee2c09731f93480f3c1d304e13c6497b89250667d905e094613d11305bbf2da4fb6d32ec238801e36b8c5f75c363a6d131d2c97714f0d4e3984d2dfe68e7c68b98a7fde039c0dd41f5265e14020fc9b775cb6441647c7c0656603c3475f6cd5d02f4ac97227dfd98bff0819fdef8c00b47273f3b9c88355b35682e3de253b7789457ab5904773f15e3adcd21260efa4d328a80fa6cfd61914481f6179023035fcb01d587dab9cc4919b84e7079dbb391add15edc9607bfa38451de63fbdf713fa330b7c817f87d09f1fbd8b309b2cdc73e874043f6f6ebf88c60840337946d71cbf9307dc06f83b6f6be3c95324bd796c28067da33550e7d6fe80af1d1b5c3c4999804c4c2824de1a2773e1dbdc8f11c86f261dde33817a296f0b9f73f7e4477edfd3800cf17532b67dcafdfc22d93f91933782647766d87f9e54771b166e38f7e7d684e2a6ae17567cdbab8915ae1e13c1de9e5309f07d8b5d7eda48b550d6be03a010c8298b11a3185b668d55539e3334aa46be16bc9a743718dabcd6fdb7413fa94715cebf97567c59fce594a1cabe8ee13db735f57a87438327551201b10e34ae0b37e97674ac0adb089ee5d729bae5a5c94db8f5c2379899f3de8382e0bc7a724656019dd3b936d1a338e4603ee8acf032775e16834e19f9306f093d963be056c0d35f7ce66b2a57a3de4036c4ae8bb15b28368bfbe65184bbff3b74d6fa8ef2d6ad6fb83149d0b64bb9a6d005f0dc633954e62b8d3c91cd61bea2b8831b9d7096740cb35d33d83e6836831ff8fb62f595314f9debea05e14a066ca32d301107002997602a920a054810a5cfdf7c4890826352bbb7fff6fd14f57220410449cf9bceff880bfd33f2e8bebc3f64656587a7133ab251e47a3d831e8bab9bfe21648a7fdc1e3d9adf19c7aaed7789fa75f5c3d97bccb6605c442ebef95f3e8ddd1b76fee81eebbf0652b6fc63279578d99ac9e5f1c0745b66b88f6c17ec0c235f8fe80057277071fc013a99c41aed06fd2fa7606bfc7382014e734e8cbf7b591718a6040cd892ab2c9de1c05ae508cbeb8218ffc39fcfe3bb25eeb5c3c9ea386978ee2a7c01c410d8ac1bcd15c8f226c6f6e82b17d0f5ae0eeb58245f6cac16209df3cfbee603cedc31eb04820479239a61fbbc9f640b1ad56e1aca03c1ddaae3eefe689b8877d75ce710fc3597da3d8368e30676c3dc5793df4ec03955e87ce655d7354ad129c0372843871125cb74acfd90bf3d29f191cd811151947286207c9ab39c1ed437b4ba3e7ce4fa48e808e7176aced147e9bc3b3dffbfc23c41fe41501b81b2eb6b560b6e636056c1af26c5dcc2e295448de03f20d8273f380ff601b7bcd7d2be00f37b7386e39374a774ae7617907d93ac739b31daed3db34f51190c7805c02fcfb34cb1c2e8e56a7398fe6d01d005ee81d70b6e97bd7efb6c0e358ea1b703ad11e0db17eae9272b090bf1997e3333b99979ab58dd1750fc7e9b746dff3b176b0adcb9936d70fad095d9b18e7f95b9b4bc475abed3a5b25217d023bffe6a2efbcc3dfc66348ae295e9ebc24be0367a2b98d9f3c1bf5f1991a7f89c460f19c01af0a5a0304c7178fbf13e6a73d373f3b960a31087a5c17e6576760040eb743b6c95549d8c013979f9e102b8e0531c8ab92f0571db8bc212f7ea175772e378f6471313e4c1627df5a9438df55bc7bcdbddedc413136cbc5c91d2c629b0b02efbc09a9afef257ce6950b5f118ac04d7cd6367da45fd07831606a99f3bbc7cceffb5d1e7fe96970c03ccbf83d458c3ba47323a8d5d920dd093d5bd9a58f05e9432d0af8ed992fb66a1d491d34aec36de13a9f9717776064ce6c7973adcf9b9b18577f4ef816f557dc6a80474dbec167607379e07006e4501ff196bae7400d75d717a0ebb96f4f518c468a2dda1ffbe64638a6ba7ac4ae4636f923d62170f9ccb2af01dacb9790c6e994921ff803efea0c00ab2db54b5c5f84bfe1b652389a1b1dfdf64ac034c376d729651481ae973e2637e5872071dd2a679484ec03cd4ec007827e37437439feec0a069671e292d663e9f660917ae216ff6d6e2efe6474c6e7229f02f0ec998316944ad4fa769328f3a6cc5d118eafec53d087f6604bc632ce5e32bfef274c2897c15dae3097b17f625d29542bb5b2b90da386ca443a6d676ab5d267c0592a318eb0d2a3bb3a913229540b751a71aa7e84f3e0f8341a614eb6e544658ccf0d70dda8707c53d964bc0db39c7a037c9ecd6d763332de72b29a2ee66ab483f3d46ac6a955c4528eb7e574335a69305ea946f3cf951ec1799bddfc73a3cf0a3a9e5a2da7f8becbf9f2e455eaf4033fdf4cba2fab0f725fb55ce912a786301ebbd43d66a3e3e75319a9daeee6532906deb6a77c0f4d7cb85def043c2cd7b595f3b25654750df5a4a831b76addfe3a3e73a235e65d5faee5c3c659a9e09c3ed227f9de5ac63ddfb5548471d33b600eaf7bc1081cc128bd6a1c36ffc69891cddf97f66f77292c02742dae478f7e49a1c3783abac6b8da1c1f3986a169bbf61a0caeb4be5d06ecc98245d7231db82ea504fe8fb11ecfc85e9190fcc338aba04fd1391ece0df20463118e63bdad22f91fe05ee625b26dfe38e6103d53ff18be3699e33e6b96675c2e8fdd133ccf696d6dfe48217ff693f84d196c8b7529fd9127522873d11f5fcb33999bfdf1cae81dfbd3bbab9fc4956fceb3bd9592dccc68eb9b46f9a50527591b21df36eacd3de1418a2b5a7329ebfc4d9e2c88cf063515058ca15f8ed244fae3682364eb2c1d6b5921fd204f20a716cadc0ef0bfb782c1d8669c3966e79c7475962ee4da996d6d0303639e5f30562ffce71fb428c5ff15a3566cbb6c62c7e003c45fe22695053b55048fffd2203ec3ed41f615e1da8aae1b887519b9634999ffc8bd59731b20ddb9378bc84b8cab827981898ddbe8101a1b9245e9096e677471ca16d6f699019c40453cbeec136be992665fce9ebd6b1d274f6541cab09dd3cf1db5f7f68660adc7bc32ebf776f4f1b95bb2df04db13f95b98ebe1bbde11ab18837eab5a718409c11dd5d9778a4bb3e1f8cc37d9ab57a5ae8563ead9de5a328e39dab94cdfae7ece150f1c4018ff33c3f913aa97901f8bd61a7f43fec206eb3fcbc3b9f472c50d9fed83d84fc006bc02979410573ef23f2d09f83a3cd2dff20d06734938d7c0d6922711c6ba27d761bb067021c979c8bf98ef004b92f6a84c3f025ca7456bc5eda48eb39a06f27baf5e02f9da1a5fb3cee90b63de01df6c44fc9961867d3e78a69b2b1ab91bc5335918425d47fd4db4d1656f6e23c71c4da91fa424f1d5e60ad6118c4a16a2744df313042ff275bfdc67268bc80fd9655f5c903ac236762372efb3faf6fc5eb4e6a59f1bebe43ac0d7873eb633601dc7f224e6714e27653a78da8fb2ab95630a80ff5111f387e75825bbebc3da2c7bfd7a16c6e63e50bb7442628cbb8edff5a4afaec52581eb4fa8ed47ed20a865528488774ff96d2d44adfe9671c33321ccf8bd91df2c3da7bdad175bc3f591b2959f6c6b194bc063cc0fb6095fbae69c914e970bf2071ccb3b7ae188db5b4bd6368bf42b217514bdf365617675079f84f73d4a718f3d1bf893205684197099a3b9a9e31115bdef22f0227aaef4268b84c35b949eedb5896d2d0477b0c8d1dce25807f6dd650dd735e367d96576b39e531a8b5971100f0b3798579d8e13ae92a616edfb77c6d80a2fde19edb73bd2cfb6362a31f687faee4e8b879ab02fca97682d5d77cebcfbda287084ad06d76875fc995504353d58bb1fbfd716edcbdd8fe77206fae67ffe7e84fbf9e7df70e59b6ce8fc1f7cc79d30677cc128dd9fdf7b635b5bc6b116d77ffdde98b7fa412e7e971744761392e5542e68e0c3c4e343efb88e637f17acdf3757475c04af6c0bacaf20c6043dda4ab24d9dc4813a0c05c9726d54ba03bf227500758c4a1166e8ef7a9ea14713fac2ba313245b8b78fef5cce0739436a0440471918d337025d49e6117d07af2cee500f3cf844df29c2f56d5bc34bee1970ed9e7f10376a7442258b9bc64fa87d88177a147d1b51cdfcb018298297d9613150c463b6d58a3fca6c9cedca62b7fa9b6f21a8e95713733fd531712a23a71f6f6dcee7ae3f5e306ddb01c9016493767cdb267e977de9b4dfb2b69120f7e0542ca39c9dd41b18812bc46fa4a6ea6a437e38deb94c5bff239b8e87de2bfbf46faf437e539461eec2fe7523d789991eff15f837ac2f18b3bde92432cc719492e7e7d73a7b5db359a54ce7fe2a0cb8f58ef0e227714572db17378c7ef993277235c1e71a02dfb1dfdd90e4f380b3ffa9fc6a9f9b99959a2da1b7bcce7b343abcb687f8f1a179e6143ff3023fb3f5f43e0170f61bdb1b92afb681b1bde5799e5aadbe7c17c98e391acbf0659dae17a9b55eea7bdef13db7fe2ace1845602efea4b82bc231b5eaebd4e63ad1e6ed12fc2be07326efd8cae1d8fcbf99539365524550eb7cc3b2bee7ee0de7c13dde0fc197a2727aed34b6d845d68ae15aff78ff9a1683d5e0f867adcfd22d8d51f56d46d1cebe26842bb7fca1dd38dba5681fec2b96eb8e47f6a2784c95d9983e231d63e14c82a1ac15fadab23bb215cb2af88d6bd510e33143723c9947ceac3e56e76cf765913ad374ad885077f0b61b402d50bda68c295bf56cf74c8ab7a96b1a98a7ffc4f06b4b25cf03be04f00cc9932859c41bf41f7aefd8b616583e4c8ea942629d9df3913f4a63a0b5ae0a02592b2a5c7fdcd9db1c1c4fb6a56d79e87b3598faddf8615736cdb681c705a1cbcd4b6762273f3f771479c97c208b76da926523c0652fa197acb3fe8067ba24d74ca2f63511f0bce0fb3eb38f2f7e58443f7be7289374f089b2456807ea64c6af2d637cc032ffea0c16c1d78e67fdd983af71f96afa38df6c8b417bba841e79eaff22fdfcfafae7be39f6ff5bbaf7992dffa82330dec20b9faf99b75bab9ffb86cfa736199f343e09b96e322b30bfc277fbb1c9a9b6fadf3e410e6aa3c44bf85c16735a13f3b6d798e2a04557d79cdffb7e548b2b1d6a583bf6d00ec9cda294ab59079fa4e1377998dfebde1c9d5cd1881c4b85ba51295c4e370cfa4f0d57676a23ccf8b539bc621cb745d5f57b4734c7f7abf9f7d2f562e6cd8ff3d2c2f57e255e63f55ab8101ff00a3c41244768638e93b25e77b58dc85f778981b9527ab5493ff8eed8fe2b8f38beddd403b09423a2570f85deb3c6b3d90a71a49bc0c3dd8f7f13198d9fb5bbbfa3acc69e005988f395ed5886745ec4c0a5a349549edfdc981e8b32624fd5bc2aae609c1d73145903128ba1f19d46a6f46dcc74113a14fb25f506dbd88db7379d8c6310fb542636f213db84e46efcd4150ac34dd89b6ff63860eb1a9dbfd86e78bfbefa3eeff55cd5fae4dfcfd7739d4df2c465dd0ffde90a854ae25b2003819badaf6320b6fc44c724ede39b8bac01974e934f46fa2659668e392feb73707ce2dbf565589f1170faf4e716bf27d1079df590fe8bbc57d7661399cc1701dba3dd87912a42f683386453eb46f73fc93d511f9be0b6b46bfd62a227964ddfb5087defb1fcf80e7d6e96a53b30aefeb41f77fc7e4e0d2ecedcb971759fefdbc7f5fee39c657b0e66c57fce3dd6b9e74d6b5fecbab15392db36060be8b1f20033ec21963ab3ade5c54ef8c04b363f8f518bc70cbd0770859cd29771babfc5d3b75ad18a3392e7d65346115ebcc329bdf67fdb0af36a2f2c6eb6b5885609cf632c272493b63cba6f075b4c2bd60ffd35ed3a4a71f3b8deff65bdc14ff483c7058071d27eb6577bb8fe26fafc899c6de4f2d672206effb27fc8c2feb5db8a1bd06b90fdd35947d537ebe8d4e04ad0b8f5d3d8dc4f646719b56b7dd317cf7e85758b9f15ea65682cc5368b0c304f2b641f3cfada0e7d3fd0a164ae12a3948571e63ec6ff5bf5c33b1e6a3a4fcc7dc50dc7edbc481f4fc931f2aba53fd419bfefb5e0ddeee72b927146e4ef5b63771474dedfbcb0c0b98b19927f2a7086931c59b0d63fa01e64c5cdc6bed6c35db2f254160dd73680f3e9897ca27bf555fe05af0d7fda932fb86fabbd2e986fd6c58ff7fdd7a478a75c989dfadb3e87ee93f52d8b79bf868be9afe7862fad96290f72a325536e072dc2393791e5719dca13fd36071caedd0fe407cd39fe071da77670250967225fcbc627f2b0f39e4f6522a985ebcafd695d0354bd18a357afb6b7969a63cea32fbdee9dc1751ab37846f28ae858d4e893ed017a269fe5768d45ec84d105ebefedcde58ad0b6163f3b1ffca9ba66f0b99ed48a6b3ba7e89dd8ab92d4d790da2cfcb7c5c551bb969fbc0b8fe37f4e8d9fe3567cfdefcebb73c70be4ae927e1d23f271a56491d4e3ddd603a9f9cd1cb77f2bd7dc18edfff638bca3b5ffde625f17fb6bb8066ff69778f75cfdb3d6675907a3431f87742d909ab016ee3213ca83cd1f2964429905f903b9314768af975edd499b1bae9dc7c5be32cde3a635461eae1d847a373a9f7b1dcfed2a79e1b376f8e776cd38b378d6c4d5f1f3915838f4ae377904d27747af7bac6d44efd5e412cedbd2e58ac516eac18769ab2eb6becf0ebde7348d814f10cebf935e87f1b398653d7f8d3d1620dba7d577b75838d3b46ac62bc06f58255156bf47950607ad60b18d13b5e30e680d05ad5a753c9fdc90e2e004505b38f93637dbfa3ee047c7b2dece7776eb0c009ba8d1dd25f1efc93ac2bd5acd7c237df2d1fa6ed436e8f7710d3bb54176535748ea23895f073d82f9ed5b9d5ffb822dbd2f4a99ad15a98cebf47f6e2fc075dfd90b43b017283ee20b7b01f0075dc0e0ebda0bb6f1ca5ed8658f6b564272e24eea759b3ad446d7dd1401cfd3c65a9c917c3fd4b1b21dd261590717c08c7e992cf3b6d773762ddc9b7cf56007f96a5b0b327360f8d0bb2e820e3cadcdd9bb5715a7d6bb55388fbabbd86c5e591d8c4062b7127d4ffcda97fe4ddbf6a839af27d877a1f8db64cf37f13b9c4b23188174af37f5d524f753ba1c0fbd99483ed955a7ce24599bf7cb1757f3abde0e62912e4227adf955270d3f6bfd1be567d58a40fe17754452b24dfd50cadc49001893489f38d656a43a05f03f292f74587478b07d8bc9203ed4c40b538f85baf05197afb5fefd55dce4d7df9ed30b478297cccff86f6253fdb57e29cbbeb1575ab1c4977e6a6d0fdbb56dfc24ce3d7d3d56dbfe41b6dddfde532f8bf7973546e7da0e7b5987d4da7b2790cb58af93180bb1bda35a4f3cc4499ed76c12ace6077b73d796b338d686f505d4f037b6ccec7ed0fe8775d2e8c16acdfc2d1e205db7e745e070f07746ebfd5f7d9f4d63075c9d24ce7cc1287b3a9fe9d4daf7de91c4eb6b5ddcb6dfa84e85e36729ebe920cc8b0b38dacff561ab76af19a73de7789c9fc74a1a3efb3f8e15d1bd3eede8fdc931558438426badb6ef84798a748f66420c10737893be97ceba8ac17e9ed87f8bdb110c181a0ff605fe8674ab17c58c63b2d59a8335fbf653d985fc3407f673d77ea7b197ffbb585dc747aded4b5cd359e7039ed60ddaadf82ba9c578d5db92ed75366ebdcbc2178c1cdb27bb762c77ee0831e30e24820fd3e41a5bf2abc2baa4559ba1a7a52234792c1f7a953a765f2b5f5bdbff10fb754bc0a0801a28f7790d54effe4105f808bd7c09606d69c109dbb330a709c1c3b93eb385da3294c68e9dd6316b003e59e6d09801cdd91299210b6ae684d17be3efe0f8f713db18e2d3065d8f21f18f7beb4a4996ac87d6fc7993ed358ac9fb41fad7f35a9ed998ef9ada52f47bbd79d3bfcf21f57915e1416f9ddab10490ab2487ee585b1dcbcfa0af439a7b4ffa7aac99a755b2e9fbe6ed982cd2ffaff437d28fb54c5f81bcff4b2e66b64d9d5771e96e0e937c83bfe96a52d70abe2ed99fcf7565fb9da8dffbd7fbb4f444daf235fab2a0e357fa53e6be1a6c3a18dbfe24e3d576ee17f0c78aaecf32275806101b68e40ae9d7a2dfabd6f93b8c195dadb82859840ba24317a91b7e3679b3bfbed7d2f5e74c4b9f77d6534aaf47b2f37f186f5dd7f20963e841ffe63b357e3e8be6a8d181589e747d535994d2c393fcd48fe3db8f98469d67ab634eda0c7457fdb7558cdbfad92b5bebef614d2cff6b3cb4ab6b88ad4ffc928b6302670f899577d64b8d27073843c8c6a7bc41c9687c10c6c9221937be8c483875cedbfa37cca318f08a10b5f3f0afea4668cee8aff67c5f7793fc736353cff9d231eddaf7b02de6afb6f3d331fbb21bd936e1a2eeff94ce4cb30ec9f7a2fea12ce6e47d480d0ed58d8d1d0d6b5e111fecea37322ff5f5f5da153bb652685b52ffdc1d7ab64d322fc17e8f7e6cd3a1f9a2633dc43eeb9ede04f9c0e47d6b3f98eed16f62320da627e927e8d9c1adbf6b7ed633c46e9ece99dcd47e3dccd137f5f621c543a718f72fe33af3868b146cecde3b838e9f211d7f4c5fc6d9678f353bff1ffb590e7b6b89ed4ec188d6daac503a7177e8b34cddc407990c7cad093de6856d9ba0b6cbeb7edd877ae1d4090306faaf20d710d77d948e16a5fe647473e39a131370d5094e2ff583902c5fb8e76dec9d9da0bf6e5a31941a0390caf6d56073b5b8b8c27528dbd899f23160073f7f16e4779e5cc140be019a97d24fe6992c0ca157d7e546ba6f2e4f8eb5ac005f464f9f9e8b6c24d5dc55a47ea1fd6e8f35595dbdf7eea2f903dc48d077ac575d42821dd29ef398da3b4dff6b5f9e77fb5d9e7f4fdcb3eb989bf05ff82eff254f4ff2564dbf35d1250f3dc95d5fa5e929df63ece74e8fb88dfb8c483f308e7d39d0dfb7a8fb8cff453ff240116bec87ce3b1cb47bfd0d5a7dd5347600fde87b737486b9168d4e8d57ef5c1adff9abbe3226a43ea0ab2b3ab5024fed22a819bb84641e6267023c17bd731fd642b238ef7ef97a1afc3dc6b5c948fd19f533541bd99ae6fc8ceb171efafedfdcb0e87fcf37b72c72dbfaac36d667aa71c66895a0f597dfdc083ddbe6adae53c27f77fabcb1eee6afb89713f8ca9ed5f4fcd0c7c6f3db95114ca08aff539d0c7ec6984f3d06d77e39e6867f5ec7f020875ef654f6eac4ae35ae2db1ff3da8bb7ff0e36f4dad63c7376be73fa0c6e3d13f85dced0ffcee57e775eb78e5c9fc7a108bf899cfdd8f2b0226dc647efbcbf9f45da04e5bb216d0cff2773f9bd4cef631124dfba95eeef29235fde6d2d9403a0ab022edc1265cd5b142e07d48ddc468e3dc31ca64d1c12994c2a6a756d23f79ca3382eb95bab5306d3bc0d1283e7dd32b46eb35fc490b1f2e6c70c4d1da30b991bf1a4868fdb2ae699450c30b3d9fc615d90a5e320f5dc1181f26c816c0394b2789cfbeb5803e03c0559c2c086e19f87bd027e285a38197c40c1e8f09d449137756286eaf01731c7be7ed08f93e5e38fa836438fa16adbaa14e1c5401fcb2769e6e88d6e9e501832f44e3a03588b12a911e3b68c7147a1131be29e1ac8b907f5af6f01c7f79a7f4bdc1814ccb03e451869725e53f121ee3d65dbb0cd93859f0040787708bec8e7b1374c0d5e63056bedce3028258d9aec6259ed6b8ff80cdf5194802c6089584792509b3365e59285b0cadcb62e81a724faff80ce6718f8340734c274676aacd35186678bccf8b6d2daf0be01f3062e4dfbb09b271d1de5ac6cee42397c4250bfb75121df7c2bcc2dc558bd83187f8d90523eae015033f52c341d0c172ee737cb4b195c5cd2fa45f0eb486641230e83b12597ab006c5b85973fe03ee25e647a1b886d84676b4ae8fa99cbb18385e14476b6d913ac09d083e37daeb2ce6ff1ba5ce6c09b25d2eb3cc6d71d9bd58071dce93fe7b37b1a4cdb7d872bb817177909d6505772f312a8f03aca01c733919e8dad80b3f4347233e3360d075d64b2609a39b3ff908e541c3dd0038ed6dfda937b8aed43e91c50df07174f417ce3934f3724a6b99e66845ec9e8ddc21f20330af44bfdc5b5bfaf71d72fe89933a032a8f2e812ab23cb23b916cf90ecbb4c9cd800dbd696482b176c89a5f250f18b3350fa9228c918deb7e7179fca55fc217b5eba122520cba9fd76fd7f64a585cc9dfa0df49bd21eb25775aa3dc5f5719b603b61473a632070b7f8dec0a6af381efbb64bcb37182986d6dc7f7ae196c5e5f53af753e04ee3034069b9796ceffbbf38d9cda960f7bc7eaf9022b1adffef1b3fc0de7650358a78eced76b15c9f1bd398a21d78d7c3231c25ca68d6d7f5584b6be43baf723ebeb3a589bbdb57ad0a237889fea2c1a83efd8e7dcb2dc5b9f0cf8bf02e4aeb287be06f2bd89ef41bed5e6423858dff7c80e0e176dbbd5da9b456698a31c6cd78994d57beb27bed7d928dd4941eb5ffbd8b8cd33738bcab1169c632d2a9333fcd500f85a293708630e5ebde3d63f584c56ef1f222776e43c292ce89cff97dacb9b1b512cde02eaab7c6b9121ff9072d5604e3003f717b7b85a1ffda963e8d5cf14bda36700ee863ad6856c9118c78813e7e645466073c7ef3022d247ae8d2056041e385921fe2344576fb038ad2d29db638cdd0e8f9994ccab2f737492c2787c9804a942fe5eebb31667c32baeecddcfbee560e1b76c52f28ec36fde710cd8b42ee69869af81f85fc883f8a92cc07813ef7b6d7473c1ff7cf0991eef417c7b674ec613a1378a87fdaa7d5fcf45e52df44122db1a30f423743c7e1a2fe11ee7b4f6a1ffdbfda9ce4e9509c80ee447b4b9674297db8e1eb951009ba3de53347ef87a2f7563e4078bf5658c4516b4b0d3bbbd007a9e91bd06b90caf62df81872c8943dfdac65e95b24adcfabd1c517b0df9e1532cbf766f3ec624ba83ed6aa957988fb268b0e0cebb2bc8616cc3540ae84f15e732ac39bbb716b133291a9fffe978b876837073448a08d88ffde7a378fdddb1452673270d071fa97fe2bfb8d6be25d88eedf77ae8791168ac417afadb73cc39965784fbd37db986ebee571ceb33222a2fd177386845f64c9fd36bf6e6768ae318ccbde3c34ed9ac83890f359df4fb6fff0b7f04b72c0183fe9df02041bcdcb102867c9f5a6f027f0cce213e396654d8ceab9f85e06d5e027552447b6b797785f908d735c231c0ceea7d331897e06e957bcb417b126259dbf3e2e612bf09df077a54632f8939347f3ec621295d8e6ddf37df5b41ea9ef1b85e6b8d62bd4fdfe513c90cfe8bc3f567e8dcba4610ce6bdbcb302ef8178e25917900ff87d8b9ad9a77fc0c01f299a1a65c64009f7b31d9529f80ce630edca478ecfe3ac67322c4952714c1d7ae79c66fdf47dcf15f03a68b9f3fe9f62e21dfc663d8d835c717478b7ed97aca9adceeda3c9fe31fc4e276b00cd70b47823b580c6c6b11ed1223b19ebc47ddeff0efd6c1bd250bc8b3c3fd968ec9de2c9d0d889eac9abaf9677197e2d4fa1dadad2ed63dcc1bb2216cbee33fcef8811b37318bdd20ce6dc8b7b6f9489e8db78de99e7707529b7304636975f831ec6cdffabded57adb857dc849fc0994cb8d2c0af7cce453424750db5bd755b5b1f17e0d22dedc42d67fcda3c92784a7153209f4ded0ee8ed7c77800776c6db2d6c09270cae32d45f77708a32cc4569f3ee04382673e0a2d38ba0a993cdfec85ccd573f5a9b73d735987782a59d9a8318ada972113a25f937b7081d8efc9b5d840e8bfe2dd7b50c1eef009f1ff2e101bf1f305abeb4e2dcc385e60f16cbb7b9835ec5f3fcc9e8e20e1ee3af8d5e379e5ddbe323a0bc231d7cd616c7d5f06ffc1c8fe3b7fb82da310f24e30583ef71a1d47262dde6b72cbbbc2716cbc71ec3de1cd12031bbe28ab9b863bef7bcff277c2c3f8ea10e36575b67823eefe6fa09e7d741bc074daf78c329f7eaf8b37cc6cf9fabc5cd12526e960d8d3156989705385a5299c40f81c365ca5e956478f1b528f3e01a69202399a405e8df9cac155779aa56b21665ce09fd3e43bf476bf37eb5b551d296ad8f78063d9fc05c324837d67d214ded74e6607e1ba88dd73863a4881f5047eec64b64e39ffc497121718aa92bc4a77d597094afc96d62411717f326c5ca3c0be9fd8073a955738efe26fd048a6345a13259b4ee236552c25f375c91da5c867e0bbc72816cd6361666a22412ce3511fe39592bceaddf59057d9f2e4ee6d5d6007ba87e565f1bb11e67d4768bac05272599a58ae8f12eeee50c652bcf15644340dc7b0131ecbd85f95bd7a674f5121ef0026481c1ffd699d017e661c38d7fe4edb0a96b45e7b8d8ff077c91adce86bdde9acc31b70b67128c643dcfcd7281f1b2ac45a898f8fb28661e7f690b7f6d45e8fd5367ca0e0f62912b491c2902eb4ac9bcdc9bb3bc95fb092d9d9da373cc7281ec8a40319b3a3b296632bfa23d47ecb5c94fb2a33527d5eb06ad8bb5cef05f50e787e642827ca70bfd0305701abbda08e96a8889404e4760ae683e34c8091f79459f65ae9185b6b5486d8d6d9dbbf0911c40baa17e468bac09c188a498e1fd92c6db33bec98faae8bb3efae21cd25d47649f643476faa5d9892c7e248bf3c7e54b83dcf579113a67598c20d67be8c67b81dbec31561070dd1ce82cc57dda4c53f72bd4ebf76d5f767b146ced98ca4294f9a59d4809e0e7738e26a514f375c53dc93b5979334f989fabaef174605f623e36ffc4c2f1bd39bffad3b4c62fa6df0f730a6c538f833c4eb4c27df6f97f9225e7e506edbbbd7524b977fa2e45057a45882b88d79a1bd24fd2e36c3377d7fa59274496100c5145c07cd95e598c5afdcd90d377704d199ddfce7eeec89ee6f94086207ded273bf4efd69a43b2a6fd5c52269d1d587b2ec6830f683c1ecb21747e2323911c6be4e1c297f5fcda924117cc4537cc24e8d5dde4ce6071f3ad8f7c6f6de31617f1e089dc0a5ca140f2f38ffc248e806c22af8cdbf6c3dd23cfb5a56b07f09970cf04f4ff08fc1dc73ce7679223bdc87a8ed7bfb0839a1473a0664e97bfa94236568b8b2f54cedbc08e90ee348668bfdbe108c9c40570204e995cd58ab09131cd5a93705c24453e2ab2171fea2bc48f6e3d9d165de87e3a6845a88839e9ff06ccfdfa9b3be12894b560a408d2752fe2ba6bdb52df5c249345fb974d78cad7e522904e9710f9f4bec05fd1bf1d21e624a4abe937acd281223c72edd965715504a8656dd691a8a2bf3b6b09c93b37cc8003d099807d7a954b29a7eb5a0a29c673f4dee6fea771073f4432fc81bb0f7001b6b0763e21672f9d72464966bc6b31593f9704fda0e582f5b8dd11dbfd4b463a65b2525e7e4bb34fc09575cfcb589a2f62f45c926817cb7058a8e5b098841fbf25111f87f80fb765c9d857d78caf4a9256e81c386fb6bc79625ce2feaf8f8b5d46c76d323f39e6e2e6725926cde2ab5d0e8fb6398a242166bcf2337012277585388098ecf17294d17fe1e76e2fc49524127e5eedf3e472db18f322a13d6e5c3dce882491c4b9c4edc5d13e979ab139a26fe69823648725eec0b812ee73662fec64697239eab378badd8df4adf609bc9e98670eae877e3709c9c204c712bfb44fc873f59e85f1122386670d799a274776dd00b833b51f7052c5351f5582fcbdbdceded66ce718e0efc09c27b5dd19cafa8553a7b3bb0a7d16e35fd4bf84d82cf2e980176073057b5d98675218bd2d4f1f853ab533ffdb7b38a56dfa94039e5ce3213bf4f5356712ff99f3397c9bfaba23b259bfb90ecd33fae646595fa3833ef8fe9a81933aed6ba660fb7ef34eb59d47e7ad502748c7bc9eb786b314ea7a9bebc2e2feed7c0f8cca13d09adc35d7944807bfbec6358ddc2da57475b2efaa3e63c10fae78ba46e059e409e0c59efcc928b3ad74d4cc979db93ad3c90db77d1d7acf45e8d4e321fde22573a8e169c771be34cc21d3f42d6f782909185ffcac56e1f846b8267e7be5e8e625decd11f89357f2381e1eb2916302cf74a92401e39af75f7b73c4811d678e983592795a715debb377f7d4c17f69e13c03172123574cb848e6a53358bad6f7dc040f1c858d6e5a2cf7e62875923876269f1a9ebb4ff2ac1f2729cc63b994de25d1493d2e66a489f4c79f64a124a06f0332e2e8805df899537c7ec8858be0d7c1ef6ec25f15934ddd244ef6a61149c236f6c3cfd83d3ba997f0576c0f22d923d1b1f0fdcf2a917bf3c81170cdaf6dde8f7bc1c83c64a74e3e919d75dd9ba3b3570e43125739afadbc5d0fd68f25537d0f18138e392a7cd3603186f232a63d04fd1cf40172ec73d6b18c7847f9860d1c1bfdf6dca636f421a68df4f1dacaf95507dfc36bf4cfa0539308580d4d5e17f629ef4f9a3a6ce7acf27648ff263d3896c403ffe5a013db1ac273b6391667bbff5ff71df4ea05493fd19269e74a20ee2e7a7dccab1aabfd594f07c4b4126af349414b6f201fea651d88a33575204e531f44f248c1489e1e59645b903c32eb09e8fb1950bfe55946ec9b86deaa2526582be89900fb9f7eef10ea92cb6e6d23925136671878cc475e856fee29b883c5c931c8fcb6ee2b25ddb52b41ddddb133976bab3bb7c466feb3deedbae7e17ebde18acb1e385eb75a51ca42d67fa75411b2ebde5a6e7c6b81f606927dedba3e64af623f6b36e6bfb8bac7aee6e7da55cf63b34a12041ed38d0f2bf30d4f7276810abc6038f66db17ce5984502b1ef397ff0389e457302f5045d6ed469939769d50142de6746f8bf0a96d4fdc31aa36bc59f60fe57c26342ed79e831837d1022bf18b86bd173a50d7e35e92de20cc048b575269442647be6f117f44fc73ae5db8398a6662792b1b9ee8579a50ffc6bbbc6c20ba176fe067527d6d6f54096534edca7fcb5b90a319863013186497c6bf394accd21ed01c0e708f74ebda357510cd02083789afef16e5745b6e254a4832a935bfa9dfbb2f949ae16fe8a1b5f493eab74cc21ef0dd8d40903d243d1cb4d949d79cdb0dfdbf5dde50e9e048fdebb9907b320f3403154b268211259704a539a9771b402faa36d0daf1b5fab312e6eca9cbff9dc28f64ee9bae903dd767968e7e35eef4c2d7bf8aeec717ab84cc3d6f3a0e78f79d80ff30f5e61ef37b9e4cfca0cf03d3a76c646a371529a8308560ddf47c3e5a18784d7b1850fe196a3d2b196247e5cdc60ad1984c77dca328a30c679df8abda27fd7b9c4295b92bfa1de5a9d14b7ba6ef49cd331c95cc63436f0e64f707c77950c9bbce4342d1501d7eead4e9f3d4edf0be5f4ad9f93ecbdb8f7ac043b6a573f2ffdbbf5cced63e4b9ef853a1daddafc28689e7c0bf30c77bfabd4d27ddd3cff5a67e375f5f1d6ab0b2635b3458dc3ebb7e3e6d32cf4cd3a4716418cd3da213f3774393e73ccf9151f33c68749407b8c9a7daccd8a1eee0e239b7790a364afd69c1e7ecdfdda70e9130ed8d03d1bb99d18a5744ad198f73e97824be204d2296dc69bb4d66a48c7fe4c29afacade3b10e16ece7ac85070498774807127cd25f52380c6506c9b4fb5dd6d3abacddc97bddd1babaae3512f73c8d432594de90cfbf0aa58c60c7239d42650f236b2dee6d51e5d5695eadc54d0b4b466d719fa8bc1be62ac8e2795e595a51c97a9ec9151bcbe22eb3cb0238c20ea691a177aa653ce0177c53373be54fe45bbdd9d54b5fe262576cbe081dc6e458ff20168c592e3e3642ccd45cc53193ae39ca59797fe993d8946f7cca9e1afd10655ec5dc57e5ece20367cf08d96317e0d000cede2c752719ef6801bbb6203698f9e60efafbe15ba0b928b3541125e0f669c9fed67a40f3b0abeb63bd13d1573352372d4617b59a65529cd379aaf1682c4dc25863653d8747b4b6f6934fa88b92c42c94fbb552e2265592f4b637871729bc1fa530fa239d997075963229943af8ebaec85c1ced1e4a21deaf5d1bf64eeb80ebbec2f63b3539db5dbb3fbc25af592c7b74fe15c7d7bb7462d01ae581b3ef74c1ff0e177ce34f499114661729447e5c74f5a8afa01d6f66c5bc591a7f56bee11df2e7794c6ab82e8e06b5fbe9eabcb9fa02af93fd7d512bbbf7de1bfade31adfd215cd371cb6647360ffc4d6aa97b63442d19d8e0a0798951f9263a0efd626d99ffeec07cfdfc7ecaec911fc2d1a25f3ae839e9012fb39f1396b5e8adb1dbed44067d1c3dc3b0e9f47c7f959b887efb551265b88e248d9533ee6b807ad0f32643efb54ae09d135c73f2095c4fb427cce2f8819b0066d695fefb00dfa9b8c9e53120f3333e90faed3dc9f390eff84b0aa537ccb7b783df64d07d9f996d2e6379fe9149e126514a29954be986f6801b46689f525ee758d6e2b6bf70d45bf64187f35093c21547d637e6654cd7da11ede1eb5fee99edc220566651e64fd94f59dc647b0d8f2d6bc56fb44f898ffdb6b6f29a13166311155d3f7666b7eb65df5ad81aef1d796b36728672067e69c74a3dcd3afbde21bccf86cebe531f83de7f0bb53973c6e60264bfbd292426bb192079655cfd1992bbcbcb86d41eafce79e55bcb3bc43c9bbe5a1cfb98d5b6dfbab6076771b5e3f8dc3148af7362941b88458fd058cd3ce03c50e00d96a9c30ddfbc33f3ee4f46d3bd10678eb888dd13fbee9af37b275ed0f82235e62d92492dbd1ad7397123f75b398525eeef219859b00ea2cc3b3319f231b7e6fcb49fa64f73eeedf977b456fe43cf3534e6765230ebdd8cf83d9df15345b860ce226ad7252f6b7761ac3e576f971ba5e0295705f8ca028ff5bdfe80f74ce5af6bb531d0e8faff1b9721961d992f42fd61f6647ce81fb24ad8634fe20133462d3b39cd98605274fc5cbf2c18256ae2c26b0b7d5ba85982b8b977622b45dc5c77a2513aedf8dc949dc3719267d04d3e727436c3c7ea3829ef4d0ae8c5d931c67417193b8b8957c6ccd0f468aeee587ea6b3fc4a67b707c358ce2d86d72c365e1b066f69bb42b598c5dc629cc52e32666b039eebe4227ba1a9d1e873d1615dd0b6439fefd57279f2488f0fad7f922e5f0326c3f9345c936f53dd4ab0f3306603f04e1ddc817f752ca9ef6bc3df145794e08821bf0dc9331670a6c8187a39aaf7a0ac155dbf1cee89ebab904ec636075ac7bb2b8e47414f2589373cf8a5d407a6bae2c12f25f559279c13d9a4bb92f63e6d32bb44ba69be7b16c79005157a295d363f593adbce0d32c8a76ee50bd17b54ebc1d2b559e6cd9fe7274b23fea3a0f24f7120274c8939226768bc936c767d71f794c7aeb88c2501ce19db65fcdef2f34f1d4c4ec146b676b216d47707fa1c97ae13339dfb9a9cfd478d997717b8af6b59d7e094bff4c7c9bc0b98ff5b11214fc936ba77dcd2b905e1d978e06e7d58b71d7baa854beb4fec44aefdcc2893851ddfb50deccce2909dbd645da8675d5e809fcfdc4ef6d6b642368255c7afb626a9138f95395faf3f03dbdb80ab690db617e8679f511ff803305dfd246e73d94fa12fc9646bace583165d5be7f59e11d921f5bb037eaea38d5a63b071779e9afdbd29dbc79d00faa0ced1cb3ee84d390af7e62822fb1fedf10e7634e95f8b1511e306d77d298991bcc2987f8cff612cf1268f84d6c02b0ef651a7e6d581f81f6024bc3904937c6f2dd177499d59f3de16bc77117c3d79d7a736e219d601e06a395a71f008dec02a640a65ced73190f6f3436eaa8f5bdcae29ecee814b2b26057d48b6b5886b2e1b8ca3f70bebe89421ba066aac1a3cfa6fee157e0af224bafad6326ef3e6e3bdd18c45ebb5bec54b42765cbfbe0b9f03ef8deeb1158cd0377db21f9ef260a0ebe74ee2207ff0dbfdba0d8f29aedd301207d772c0bb61dc01743cce3dc1286d6b9bfa8921613ef97e1cfd219653cf8766b277ec87c79cb30b0237d9664e6d4737efa40bf3913b3098ade924c87ffce11ca9b615df7c6b4bdfb53fe75053fdc3b1e0dcfe5cef1223f2cd650f57ea49cf5e338ee6985bd6e68cb2b135ebe7d11cd37e5d87db19c3063ee8fa3906cff3174faea5799298dc177a33d0bbaf35a9ae9990ce4ca64c9ed5e4e25a29f00fa166a9aead7da8afdf6b1867a2d5735df7f37a9cc118429c3b26cffa93cf8b6da94737e1eb1e6adacfe84ca4ae5f2ccc30ce44ab879cda3e12e1d1f94fe38abbba06c98578cb32f6e7c0f173f3ad4ddac8d9cef18ba3ddefb20ef62abece8cc787c9fc2a6b76d27dc7c6ae27b83ebb3d92870383519e8fc978e70e06003eded478a37dda3f87fafd34fe9aa99398b7b93989253e3db7ce5ba1730f1613f4313dd03ddcd3eb5c7de73da77ce7dd5649737f34bfee894d0f16d4ad97dfd499607ca1b89e935f84a3af35eebc33ae776203e4fbd7380093a242fe9922a8bca4cf32e7c4e46a37ef14213d689776e2423d273ecf6d70247e79159b41fc245906fe24a8643d4dd61a5328addcff2274eef224eaada58f0bf561ecb2d52fad0591ace7271cfb6df5110087618dabcdac4a82b32edc79afc4efb12ab33fcea940bf658bd0c94ccef195f38245327dc5d9507fda19476433cad160574ca0f6eabd897f5b223bac3fb72d5fb7ff1d00a30aed115984b8627010ef01e4c01ef65eb3debd13db1f277bb8a7b0a3fd0c25ce072c214680fb3ff1f1569f0eb6e96b3be8c51a072c8fce1a07ae1419ffbfbd162e54ee937c6fe29bc3569e1dc7c9d6d6b613eff171bfdb0dc77cd19a5ffe79c9c583f3b8d4a67f5a47a2e83382efff346ff88fda8eb90b435ed5f3ebfaf9b9040365ebba21533ce3aaf14a9a7b81e722ef1fa5ca7406fe4db38e8ab13d28c6be16dc91bed8f7711fcfc6f50507199ac39a3f89e243b7e71363dd8e98bdb585fa72fbbcb8f98365ec85123a1e22bde1714609f82bc2f8ea98230ee785c757f0774eac6b615c7f8aaf847c4a746dadd3486fe14d49f8ebdab2d16f81236c1b4ea213cba1f15c6e747274fa6f2721e7521ea387f3bdc4c8dd81136fcc226b38e71615b92e76cd9821ffbe7b89714776718b9b8ef743f4dc9fa5836468b25dbb09b2717abf270d1f419f83a36583bb169e47f00df6e6e8fcb8065fe8607171b339a3f25ad7e2fac4d1cd9f7c563efa768305e3989b907cab93cf3df42fd7b17da55ce06fc305d1be8793466a291a7c8f598df982d61360cb29c9f2e20871f99767605d735e75eded763ff0c7fdf0a47e14c7e21b5b453a7d5c55fde3aa6a8b173da2ddf39fdbb338bebb1a6c785f2cc66e595cd726e07d667b9d69fad3bab98e5f5abc5cebe108f91815d8617a4a638a8122ee782f243ca11d6cf8e8ea0af1753f588e0ffde3091f39969abe98df1a5307fa6e279f98c766f239d85bdb0b92bd9250a46e92579230bf3a93cfabcb6d63af9468af5b0035067a912ac9e8e6403f73bbb76d46e7215b5b9bcb5e1be1ebd93cb088ae90ccfbd3da09298923298c5e3db7489ef38aeb662927fc67ea959fa97b76021730463f57a4ae36c2eb864dbdc112f2aeb29eb318a31a3df7eee24e46a9332932c2dd8e7476effdf03cbc78bf6a6d0ed1fb657b73f4a7f37e96fae2fda0ff7601b626d29325e02174fb26b563e80b3c9cd3c327aaf7e976b0083ce17884ef5f7e2684b3ffb8b7d423d42a22ff7a323c6e129ed94f3e811b563337b8564fdcdee0dfd62296c4a69f1cfa7834220bcdd11f5954af0ef414c79182b1e217ce04f87cf15cb538ee0e7adeaa19560772d7aebaf5e2cef14ff6e337fbab5c5b395e53558ae43d9e7ff46f240f2a96e9f70eb6f3837b73f3e668a3d41199f776ecd2d146d07f047cc713fc6f5ce73267ec4e5c650bbdd0503bf7222ef3c591ef3c4d63a5fee605e33271b44a76782eff87fbaf3afc6814c3228075ff0cc3b5dea7e74fd6e38e1717c7d121e6eee07e98b96d2e2f3aaca727780e2159e3b58d0079418cef314b759d195ea96cdb9bce8862427ffb0dcde16535b5d34e4e4ae8d5ef08b38b178e42c7da0e1cd3b8ba09d24d8f79b6bdf6105f096451ba3a8271f61223a6b64cdf6fecfac37d7c905daa9c9737e05f153af8235d3f5e3090fd94031e0e700f8f72dbfae85fd38a33510e881ac7223607801f93ca16fb720fb4636c36ba3767c46e328abdc1720ab65e32cff6d676b44ac6197def0d87ecbb05928bcc979e625ec0bfebb67adef037f2d25e4f6bf77b402fe771286bddbe5a9b2b6e1e876c976585c789fae3c436b78cdd33e454525f84fed1910ab9abc7f84ba74fbfdfa7a57f10bdb24b5bfe6c979b4aff78f74ee8196bbfaa942ba690cde19fb569b85ecce07d49627baa7eb9b731d1bafe9c4465560b739062ca35d7b47d3a0f9d33903a98f45e0898f457b9626373b0f06b59f1936778d82bbb5fadb1df54f1f55a6a3ffb5e2b82561f3fe957da11fb9ce8b36471f38523d402c9e2869745a8c109ddc1f62285119a37d51df8b117410dd245d662f47bea26c8ef93487d54c4bb552baf817e0f5bbf919c07c6e65b209f30c439a5f8796c2742ef467a2605bc8e90def3c5e848d7af24e4a99b805e7c9384f8aa4c3ed1b84777201d6dd08dc8a68978af8d59d79687c88eeaf5a5f9930e7ffcd9b1b0bef44ac07546fe7c600e36d7bdb9f5d766747181cf2f8e64cc4b1efc17dd57afb3b028710c630c5c63fb67d874d8074e1561d6c271a0f851380e047dd9afbf79e64ebf1957545f8fabe73fd14795c9edf0fc001e514f073d9973278cdfbb7daf43c029aaf3e8c49e7bc4a9a2be36badfe67d8f31cb90cd1020998b633786ebcf195ec57c7781c98d7ce059054e57a668d5775c69de6d35909abab63a9e73e7bd7054ed8538f127c85e1fd3eb322c1beb7981f5e2985b3c3fc23d03bcca6efc01f4cf5739efcd5d96ab3ab2f1e7ae63407d6d6072860f181273e68faa1525d5f190efe5e03c88cb985ce1cbd50c72b3e81ab96259744c1162744eeb59635e1660be52d049689d87c84e8eb2479caadeb71654e2231cdfdd56eca1df8b837c60a887d58a72ad1d0b992bd0374895017c8bccd6d9147d1fa5ce6dce5af39dfd41eb01cff986b78d3cb1f43c33b92d79a7ad2f9f17bc0f7c33505b53a1b1e48acde0ff16cbcb9398d41bb4b132f3f8cb522f5e1935ebea192e3f9bc79636e6d533d3a97ff1aa8ecd7bc2bdd9850bb626ac2ff60566c62b7c9387f83ae623aebedbf3d1777bf3c7320ee2de06fabe7164e9cc1de3b8fd6dbfcdd2afb2b3d7af4fd7c8a33ca0b639dc6fc5f1b01f157d0edfc865611fde7fbe0fa3de3e6c3f37f87331f5ff90ee83dcd513bbb0c501963a53baefe0d9485d3b92efbcbb37bafb0eec4cb26f6c0def1bbf25a7f79c31f2cae0f6d44eecfa4937b44f314f9993bae236f6c2d7586b8a0e71ba187fab3bdfe287cebc8a65a1ff41344e8fdfba9bdf73b49cc163c4c8aee5bd6a785f9741a6e8b35419a86fea947c2fadc8147109df68ffd4ae84daf1167ecae3ef448f661e89db7da793bed375ffd21f4affadfeb1b5ff1bfde3b248ff30b98a6d811bd5355e5df73eace527f2b95af213db6a3a5b2ae7e5656f3a8c3c89de1f7c37ce88f0f30748ff435eb26d37dbda93fd5632b8ef04b87eec4416f0fe73d93cb5b4acadff18c2397b714f6c00360db223f48fac2f43ddbfc8d05a0f2059aae7ec5adcd09aa1b4bdf67c1257f0f17c3df529bfb39dda3e9303355ae0077d8bf7e070060373682d31be1c9221ad5822ae87e757f66ef8e64f79c2ff86e3441bdcdb7091b5f1c50d2f1737640a598bded430fdc17931ff8d7fd6eec91e623bebdb5849e696055e035a917531cd702e1a7a4e8428b3b58255847b7a100bc83fbb800130ceb06cdc65ee241e1f4409d9b13734ae3f698f5b8cbd30b892f198ce783ff0ffd5cafbd6ffffe28ac011b6983354807abccce9f7733678decc412c98f574f62a7ef8e94f3e33c79c57fee493f1b9f191c449712c4c68fb13d03b8bf16731ee278991d6581675be1bf621e4e686c856b9aec5cdbb5ce65719c712d17bfe51f5bc24c74bd91c068457fc463986dd24bb400f51bb8e7ec010dcbb22f60563b2b73e03efbc4dfb7daa4d6dea3140f68c648ec607713356c562ec9eeef7bfc5101dc8cf8d706ea4fc0cbc64d78921eab44745e01349c07124a8a5130037f5e809f3d227bdbf92b8bcb80323732680bb7d26d8178065609bc3a3dacc5f096b4c6fcd9f28a1f96bcd13ccdf6d6d6ddeddaa60646e888edf6433badae636c2b1aa006a9f5bf23f3d6845689b45e026cbd8992d5237de968ed99f3352bb387d3d3f5a3d079f57df644307f95f9c5daf99bd393cdac93cb3cdd1c93137475f5cc48ed6591fbc03d8fb635e37e7cc7e826c5eefa2860523eb595defe6851073c5ba6a3aa33176da5f7e43f6ae1b36b68d1b16c15a977eef41f6a2ff6705b2835a7382f627d4a5778e89bb76ccb63c68c5ddb6b697eff7d2c7abbdb4a0f176a8133617b11702ae44932be8cd0379afb21d7f075cb01353005f03c4d68729990f1c831686b9aa15d78e9d7d46fb222eed8191d9d64245ef08f5654fb06324d3181f84dd587d194388a1ff666f6e8eeeb3755ef31e0c79e03668efcff6734e3f32474332bcb8b6f7b4a3dd4b39d9e52a603331993358a45d7cd4a0a9e1457bd6823d5bfc2f6b12ee317990579dfd86e606ec596b932c4e50837a6dc5add2fe37da137b9bc6b0e05b0d24ccc7288cd1bebdad05b23f89aeb275b694b9f16f1fede9d347b2483afb3650442957b5fc269f37688ffca34eec64dfce3f08b3cc0bb38b5ba2794d917f5ccffddea273a93ec84245941ee613e9b66ff4c25fd632f4bc9ebd248ed4f2615e6b1dba36771752f753d0bd8d7d86219de3b235c76c7f8e7d32c7943fde3be15c53678eb16cbc11d99842dc532fae4846ecb5260e61a3f94a8680592273d16f7f92672b0ecf712fc793c1fc9273908d05dfeabc6b7fab4a11c67f642142eb989e17bc3a6f8fee8dbeaf3e4be5f3e6b71bb678e045835784d10dce1ff4bfdddf65f2535dd4d1391fffacb58f7b6bdf22dfe2b58eb6888cc436f3839cf1011f79a9fbe2e2e67073e6ebd4dbbbd0a357a475edcc89655e3dfb860b6eee00308673828d7bb485fca8849f0b7ff279aa794e92ddd115e6a5c3357af3a96c123eaf76b30eb1ad3645f661c4c8daa884ba4b8eb9ecad62bc9c4a29e6bf3ff673b80c5a3bb646b97bf17ab4b5a81d3b3fad776ce00bc7ab931437dc073e2ee56a96427c46c7b5e7729927b2f9746c76ad05095acb0b6b937965778ffbf45e3f1b0b7a5a497dcdcc1d18a18bfc2ebde9f375a66cb01aec7859b0ffd85a14fbc45ff5a66c467b317d24d3a62ce860472cc6240f4b9e6993794446ee917e2e3b31de486efc6a885da3758efb9ce3ab6feef0bb4cf3cbaa8cef6bf37e751363e883ef545cd616f40f4407b1a870cf01d11393e24eebd4fc13dbff8d95f51cf3389a3ce7ecf0713f8c7a73899ebbbdd796bc222cb3bd35679ddd32f59265d6c54cefe91eeddfeac87a6ca89dc73661ef7ec81e82faa5e17f1fdf58a65f60930e8f3657a49e65c41ba4ffb92246fbbc93e34132582b6e80b95be135e3963160d3b9657a85df406e756ca31b9295e877a8b76a6cc9b2adcbd54951621f0eefbfc68703bd5f76fd9888faa6ddfa2c247b84dd73d933d8b46cbf0f64fbc5c4f66b8d31e6dd302b56dc78ece8483f8cfbf6d21f7f52dcd058c897ece2d66c6a190bdc43e89bffef76d12bf99aabfa537b2e43cf8fe6ab3db7fe24473ee49f67bfb921d8fe2fbf8b3f610a652afd46ff47d71e7a3954b70cca7e6ed2010c47befcd2d9db4f708cbb793690ebc86ea03658a7f6d5d1f97815e6783ea1aeba1b83f1700c8a72c5c4c073d78dfddf9e70ea548e6944ed38d75adf942b7d335a9ebc72a5ef1279aade9753895de91b76798abf6401c9c01dbf9c4aa3e534e29695345a6af6e5d571b55299a5fe31504fde5d9d0f2f0eb2152ba9504fde48d5a552d5377f6461375e4f67a5acd98c7a8a98956e0fd453c4cac6285e9f86ffa87a94ca5a562dabcd60799a552b5d25d7ecd2c5a9f3bca95ca9ec52ffe0d46a57a8baf3e5e8f7f14a8b52b9da944b7d365ae9ea60a57be47af5e17a2bd9fdb33e0d8b65d8e261378d686dee32792a71abe9a65aa2b9d09c58d6c6e5f27464d46ac72c75e77b5ce7f3227093edcd056e9b4ebe9ae85476e1e3fe86db931aff568dca767c1086d4267c8975e485a32bf46cbcb01bec8151f9029fef92f9d511f85c12b637a7ae6167a126b613bb98cd379a7e3962bd734c25a1bd961feaa19af8d8f39ed476ee11d9baf53e6fe59a73a83b3d7dbc2b1a7b95cd315fbf9330fc837c1fe477981cef2b82e1ba2cc33b467eb5b42286f8a71965fe2448714cabc10241fe96597dfab2c5641e17b04ee2642ff87370bcabca2916436b1ca6580d36ffa8d32c57ac4dea9ed8b2b10140d6dcd626d46f64f04ce83921ef8473826ed5e96fe60f38cedfc6caba3ee9cf69c7f097c8c75612277339a4a7306e177c9bd9f6e69b8b0cd96472b24b5f8dbd1578163807cd31c489dbb5b63ee0c2f1a5abb3371ca76d6333f9816f2dabbd397facc7c5b205628b2b6e7bfb1a6c7835a4fc583ddb4a630a05c9f56f7fdff1fe244572fab77b6607d063a805f1fac41407f18eedac6e6fda6f1213a93ce0a4664a39c236a62bf080d3aa70bb9fc5104f1fe96b8e80baae1db8c55c0eea3f6e4e790c0dcceb973bd6f6e272b876ce118cbb971827dbdac6ce6478dc09456c032f0860e5997bcb092876b857a2bd155fbdc136b6cd4d286bf7a0d7ab8deedbee11053cdf8358f48f25ceb918f76ac192bdb5686a49ce399af3d84d5e62e51d1d8bc95c6ef80658e6610138b8ab6407b5cb87f63eb702c63147d1530e3771c3837ed23bfcd8487fcf31266d537fbcb63657971b929eed17f7fd4f79a102c756cba66edc4bf81cc975f237e3562c43f9c668fe0fc9f18647ce481cb4d7c9393e8779f6d7da739ded56fc6d759abfe443e8ebef6ead19e95d9df2b1729eb3b6b9b9afb0bfcfacb9ddd5b38cc099ceded413aee971b451e19bf3483d5daade7515c569e8d43a95cd73d0bec37a8c297b7d722fde3d5dcaded868afbca91589f9a07720f75c9bc3f4607eb77f32b0050e62f17ed0a2ab3358043ef0b5302dfca24e3d73eb1cc88f94b6e5a4be18bd29fa0ce95a662f188cfdcdf5be10c4be30fbd59c7bb9aea675deea2a4f25b6ede3aa7a345ce21c21f27f878483e0b2d2a3541177bc1b1e0b750a98cc50b3e325736e6f6d47c827365906b07790bd666b450278ddf8fe993385bce47dad7f207f9143766e939b88afc0f7355bdc1c218ebdea0526c2a4b8ae7734ae345a6e8ce0604473d5d8ed90edbc22ebf1aaefe6b6c53a9ffadc9843cc98cc8d12b10b3de6cdcdae30b65a91b6c7d276a37a2cc2015ef70cadcd19f545194563de5b385858c79d3f6f5e391ac29c18396369a3bb3b50af5f7aceae05a89bb8aead1d9abf7fdcd24e6461ccfb5a94b9d30273dd9ed84cd68a6c9d4418bfc4bc53ec916a6d8e73372c4e6b33cabd535ead13f5d75e674b79a0be015f04a7be7b53e6ae4c82cbdab2011bc9158c047d5b45385ebd243eefa14ea4b828e7edcd03ccb3e3d54e7806d942c86690c50d6f23df4b1ff22af46bc1efd11779bfa64660932b7a96ba5a808f239dc219cc2ee16ffe035755adb72f07ada0188f1397db8eb6800bb97b8833d77e5048f2693a5ba135a74e008b2f73a64ca1881fe86f6eadcfde6d23bb5b3a7ba1795e679a517d96afcdb9ebcd99ec4b67732559dc1c317a77260caf6ac55dae902d43f15323d01dab41942c12ef972c4afc17fd7e13366ebeedb839aed5c7470ae0183097bdce62fbe4bc2cbcf3e6e28529c46cdd324af137662efea46b87c89328574ebb54a9767734be2c6e1eec19451bb2b23666d5095aaf58af7b8379e94f82523e4b7fdc32bd416d075a43e7e8ea9af3ca2b53cc6b3f506fb210fdde6b29f087c868bd9ca5cc2e33de0dd39baca767b2fe727cfed25638868cd17d77176a2c9695a9f1e45c3577eaf9c076892c447cc71611a5df5e98dfe4649c02f7b628fded1d6f6b2d609ed845d7a516dd9648767c33cfca24c895f302f4936232781f4ca2db5e2f9275195cd7e6fd377d0f19e95578cff105e62701f9f6676d0e7f7b617182b94ac6e92a4463625d04789646ce59684d91638ab0f9b3d667990ff5a7c0ad81f509e4ffe7ae1f03d70539564468ed29a28dae491581217a46c2f56703c75f9bf5b1cc99a0310b0e6a6bb582deb37af21c55ef3948fd33c64a55cec73f6b6b476b334e8e361ac9157b3a68c5cd13d1fe1b55df60dbc4ebf2f877fd04efdbd509b276ff9b5e42efddd61329b133d2d539afc75925f78cfcfee69c59be8771cab57d7c679edfdbb8398e3ebeb4753cc54eacf53bc561ac753bed7b24d7b43118b14cacff86f5037dda78ef00d70d3ac6464846810e71ce50f78431efa780ad8264708c64922f22df98b9cbfa05d905a037f75a1199834f7f6dee526592fdf12645dcada962309624f88e2a609639d6e6226bc589d64ded27452ceb59003c878c917be27684f46d5363cd9e606f4f289f39ee2b024cd8107348e2586384dfb9950fd96b4f7ea77322421f109209998d65435ad75b544c85fd2390bb09d8bc7d39206c900ca13a2bdf835fec30b2962648ee93fb81de524ca895bea3df56dcfdea097ca59c8f7c7d0db7c9c8b35cbf743685799fe4774554f3b53ee77dc088d95dbc6a785f840e2b0b640c6106ff9749ff11b613d564717ef66ed4a7609bb9d7a026b8fd7780f622d463d7ba69469f17e9a780ea921517d135951219fbc726f20a7846616dc13b62593cc90372de6f572bc8354b07fad6f03aacaf97cf51cd71a64e8a10f7bc21f9580cd65a9052b9297352aa5452f635a57356cce177ba5eb57c286be372c531fff860cb782077ec133b50440f3d1be17788b22f7d3447b2ca29335e0d8be17ab7cbb6e85bd46335dc3c5e18a48ae0a52b2efb65d7bd3159666bd19b3c09fef46c9b501132f8fe6beb98edcb7a7f0dd0f1dab6d9edd06fb05ed7e62c73219fef65fb328298ee7fa881227e3bd8137ca7ef96e8032a3f88ff846548bd3f08d63896efcfaeaf7ad7c3b7831aead6df26f074129fad9137e4d9b0cca9ff0679d39c5fcf4d3326993be6556f675bd6b67b902b5f006c1664d753aee59b378ba32f34d6f31e0f1af7b8394856d73de0783efd5e9f851b16d71e7ffcfbde5ace5debb3577b767cf421094fb63bf85c3862c02b22ecc7b797fd0027ca17bd646c73f9a7e6a716f8bb666e87969e5f910dd17af66bfddc93e8ad33276cde9d8f39c3439e9cce8376ff23f7c63f68c5dd1d7cf46312a943f9cdebb91dde5bb9efee33974cde7b6fffa015a5632de347fbbc7bffb5fef9aff7436ffe487c6e1e7ac8cf3e1f737f321a425d3ab15b6d7351c9c20ed9cf8c72ee60cc5dd7d379ace8c7647196c6aab9cb57e28ffaab5e3e0faeefebfab690bb4576fce058ac4e1fd9973e7b5327c5503d5dee8a1895abd367d30f78ce4377707c734beabb3ce747efc448a7109f26f54875fcaaae7b69f9a19fe6bcf643cb573eed5e6ffbb4f1aaf16967cf7dda9e9f46f40dbb362106fbee031fc167ea26a3d8998e2f3eb5dfa72c8bfbe59d0df67b0a96eaa4b50598a0b11fe3bf91ade213eea81dd1b9f538f8ba661c9dadc741fe07f5275a3e31d583c8f6a6fffe670fb664d41a37caea7febb5cffc6cecd13a019b3268c68ed28339be7e215b0f70018e25f279dd723452758cfffda54bbc6d3119b1a5fadf195d53acd118fa0c30c2f118f83a55c43ef026312a7f368a7df6f3e671b886efd1a6a6b5b1d0c37e47df51853513c46dacf3561e965deb1fefbedeeeb5cbfec8835dbad732de3172d66ae63ec0bd6f86dfb2276e6093520c0c61d6f9bbc684d6998b1b8e86aa965fd1bb21fd8e9e4d1686e89dffb8e168a486d14d3d91bd3e45fb7779f792f8ea304d0f208d8b7e4dd3541e48345f9fc91a9b814da1a7c1e3f105d4eabe8c17be8e6fb66ac28717f504757afcd7807046e80fb917a6e50fe5509f2c2e028759de1cd349e4f3e6ea2746e672d03f89e6b3757ef4f7f32db6dd4b7c95a79bbbac05f11a705d8af7f6b5ab707857cf0ce0529be522f292f979c3f1b193d8a1a5459977fe2fb2af550b1e1e4be48b7e2f035fce53ad0f710f25ee03477604f215fc06c367ac424cb4bf0e52a659cbc04345f775ee868d9c688e47cd71adc87a318e404e667f7c2d65699d27c6139af1b2287d174760d75a507e174770a7dd3882ada1b5b9fbed37d89ed5dabce77be0553d068021ca1938bf40ff7dbadf21563cf8847e6df20ddfeadfc3e8b757f219ac1512375f7143c28bb2bb7e4d32de2ed340115ac73438c602264b7d1e43ce6b1dd3e0187bb0980e8ed572fa91ca9043427b28af3cc0d1f6a7f8792fa5a3318c22f6bfd965a88a0c5a17683d76af09a54cea7fe30970abdefee7fe4bf41d2a2407c17e0dc026d55fe8d3563e489d623d877b8587639fd447d45819240f097cf5dc9df85479a69c9dd815f813c4ab2126a2fec6bc601013192ac2bdbba7b58cf7ca346bc98106737f32e21cb3b8d95ccc7cc1b576ffd808f9b39d7898a0feb6cb3c91133b5d719b7f708ca877cf297b52b0efda196b6dda3767027b9a91937b5f56a56b6bf3fbf1feb55ffc676d498d3fac65fc5e2b6e72d5b1d94a59031dd23e96b66a452f106be466bf6d2dbaf93feaaf98dd9761f41719dec84cc7f28e5e38821831c691fa813fd2c59642efd7b3b56bdf84da25cf7f27df98604935f9ae669ee9753ddf6cfe5093427a119345d8e4c83a9c4cfaf842c618becaa3a1f58864cbd7f452fb6edfe589203f748eded449f44673e35fd397e7ff72f41f8c2b6e7ef9d3cb5deed7d434dfbaf14d2a1abfa2babbae25a96d4532b7697dfdf3b94f5fcebd107d3bf7cdbd91dd60275242edea2e5fd6baa43ed5916f9dd3e1b551cec75fe81b203f81dc73f4cdb71ac1b76acfe9e99b6f7542dfeaf2ffe55bfdfdfec35fee09be69175f92015ff6cd0d0bd3c11c58a5334d4b6506c72b679ade94b913038eee6919ad9298477aeb91c3acb17f9ff629f6d604f80fcdde45f22faee3242dbf636dd5fe2ab219785f641e6a3888fdfe3c66d3dc67847c5dc019fb57cfde59ef8d8f33659b3d80f673935b6fbd63d47d47bdc9b9b7def1adfb8e17de3d33d95efb8fef68d5ebe047985d7d5b52eacbe91a93e3450f14e65b4e9d7374b4b9f9156aaa70ad47629b45f5a57dd61c29b6a51e093f7325894b96f2cf74b0b8c50d6f968b9b8bec8fc4493dccc37cc3367241eb3a992e9ed430dd0376eb332ca88031b9912fbfaa9d8debe7689e5f805e36a851d99b4eea989b4c1297a99b00ee062309f30c30afc5e8b817e695243698e7d2c40be5c116d9217fa4d00b31c749d4f442bfb0ddffde733e7a871a91d6f5352706c6fb68e37eb6e55ef9b22eaec14dc6b53b567047cf00bd58c218eae86dedb33d2eb591d3b5b5c59887b50d1a8f0f93801ee74d16d99511ed7b7d6fddebcd0b8b932f1edfdc013ac7e015814f9c6e5f40ab07a58dcb366c61c67e33675a1163ac37789614e3afb4e292e1ac253fa5d4110ce88994f0f9942fa85333eccfa1de8ef68bdcbaeb2f4a71af2fc6d0c4d8d50cbfb6a464918c919f005ccab210656abb860bde1dd678efbbd27501fd91b07e0936ceadc399c1bdc2b4c43957ca31d5937777e042d628de677b8c7b2177fb165ebe2fb1b903d2bfff6eb7dfbd1c059ef8997d6941a0244be66b5294edde235c07d8ad9182da27f03d79a819c578911bf83fc64d884b07b80e60be32e767384ccffc10666d49177f52bcbbe67c684e2f853a9518456083af79f4a6ea1fe57252e05ae1703173801f17785d2b5f884f92486a5bcd51ec0dd4a36bce2347fbcc1ded33724bc2097daef90aaf6b737cf127b8ae16d7d4105b68f63cf6f72256f83c1e387b5ac702f53a5f0306f9ba2f31e6bfa6e9b5a9e344765560cb5a315a25c3badf4249604ec01ef75e73811d1ff6a1cebfc61938e7bc223cea1d8fa558196c06b58bcf6bde866b7173fd9a42ac8fc1f1b91dc409e1b733fa4da2bf95addf46709d4eaf8bf0751af90d5da7d3eb227c9d16f3b2b8a4d82399ad21bbc7eee9df8cd61a9e1d0bf79f7a0ce1829a404d4f00cff822ce6b6b108b7c51bf3443eff2aa862980e77c51c7f488c5109c6478fe27faa7c628014e85fb839fd6c15466eeabc1a683bf2597793b7604f5412b6e88f133911c9a2c0247d8600ebc7074da0bf3abc3193be061e5d40bcd41cb7a1a396611fbc2eee8b139cdb700c604ee09855e856481f496b98d08ffded5e682c04dfcd8803c111fc9c210637a96d15b23d70dd725f87bf0ae5acc1fbec57241f3f58837240b9b14cba6e1454a286fc62654c48f5411f3d237878fb54d757ec8b8cb8071bf641ceb21dfd33c4b784c95c9ec7ed00ab4a6305ee77c81f6d2cb6b6c64e7013f145f3dd477735896ca930599fb1d3cef412b528f815e94cdde1c5dfb1cd29d7e0d64378b9fa91bc13779964be315a1eeebd9b883650af73fa5177c1c301bdac75fe1d700ae522b170375ababe4886414c5e0447ee28d1c033c4819783196cfeeff34b64c742bef61ec0c9c570847c3b5b541bec508ea39b50273daed9ebd739b1fb56557f4fc375c175324f284faafd19b3b41efdbeb2b128edd3191dc31a0dea59dd322b5f6c38b7adaa5758f05b249cce165a947e9ab583a7d5f373c7250ab0478836af13d06466d9b666ed8e05528a29ad9659128c226f3a6ac2b219fc85ca61e073182dc31b7a96fb277497032979b33ab52caa4b31378e7387513efe827c66939f93cb95c71f34e19b2edb9ffc7dd9f74a7ab7cf1e2f00bba8343a349184694de8e1e66024610504e10055ffdb36a57d1c67ccff777ef7a26ff4156a4af66d7aedd7eb6e72a73c0f495fccc7bae4f51a6674709d1b6bd0c18aef197701f1de419e0b4cad226c6381672a3f30bda65bbe307fe9e5d1d1cff1ee6d4296404c07f08cfca4a96ecaffe78f52e278fa48bff37164fcf01ac8a669dee4f91cdf5c7e7bffefe93f41764d6c0118a80c4afabc602be27f39fa783e39d54c9b77c3746f39ded19ee1ee6fbea987c723be3f3a125e9e988de937c9ed0fd3e537fe917ec470844ae9197d4096ac24a76e39bca4a1df5ebb3945fbd5b4a8b6dfb4e893af535313faf3fc69b9fbfc94b8a9397ab6ad86e995f5c02811389dfa20c58f9b4331654fbad75babf8ec6cd78fc9c4b7e3e3b1a69f7ce2f63d1e119ca7cccd86dbfaccd3d609554bb5c4f3b933aad9359214b681e641813598c4a97823a644ba0a5e49393a5f65b56a3f3f1705e1a8d5fbc78773c57cdf69d0b4e16bb5aa97f9a9fe7ffdbfcacff97f9797fdd4fb44ef6d735ff38a131c6ffd37759a2109d72724655879c2b82e494b8e22c81bc59bb4c3c57a7c23c4b22d813d13be49367730cd2937d37de07ec1ae665741f59c7b2287cb57954fbc1f5f0395d1bf8bd4007ac92f9cedc3cb845365d978123501b583b7ae339f327cec199bcabfdb6647f456256faee66efbb4a3776af78cbbaf939cf7fb326d11c5a22f73cb8d8a6b833266d333eff6dc77d3266f7695f35fef3a1f19f35a62d250f442e8e10cf6395ca7761cddc0206de738edc0d1530f42292f4e6e0287424da4f8dffa4b404af113fafef9e8bf4f1acf4adacf2457b86e82b7090ac4372a27e9b9be6f32e2ff7958ad6a1cd51509f8f5e6461b7262d4c73793bce7a1188f6d312edc6ca39167d87f8e3d05874d7baf1355eb491e41aef8ccf5a4b86df54eed173341e700df191c8a1abae4fb80d4a90ebd9917f9c06f36e046cf8aabde83c1a53f45e24abc27b0da89975babf7e3ecb5571730ff37916b63cf7fcd9f397d7eb137d83f19d75a32e3f4b79b9c2efba0c7969dccf31e259c6ecd1d3d86bfe03bc02d16d72aa073433e445578fe19a20b71bcc93e56acdf7fce7357f6d79848c79048fe7a9e3b57fddcf55292f3fdb7ec25e3ded83cc5f39320f8375fee2bdfce737da2b4673ce5f873483f7e39ffd99cb7cc90de75a4df07b2c267bf3f178bdde377a9a68ffc750db8ed5ef81255091a414dec5a67c777dd21a5873f73fae930b95b8c6fcdf80c92a9557c220910b4df22017d877eb0f6c3b783c54a3be113d5f045a5fae9bb616f0e6bc1fd4f0bf213a1ee79149ebe2c8a45cd880affc1a3650a796f8c8e20ce9423bd7eaebd049cadd67953830e22be82122ae0136385f418e894b70d944eeecb938f65b1567a5d328b1cbfa5978d1b3a3b0b887b03e7ee327c0c3bf4206e9f97605e36fe07380917dd960be8de6712807f0ed739dec057c7eb83fff78867ceb15df97336c5bec733705ec4f7d71af06b684b4f29d79ece57566e77683f6e6b65fedbc04b86657cbd3fff69997fc1bdb79d26e8ef617a8f3d660fdefd738a1219e23b7364fff62dcccdb0d727cdd3dc94b81b55206f6ad529f42b4c3317537df983f61ef11e92048cac635294ac5359c73ffb2c922bebe39ccec7b4d438dd199ca585508f387cf6f048ad3d0378ce937ec6867eeff851aa68c0ff5b7d4e78a5cf37f6957d4b6eb7bd2aed9cf76950db936774df4cc69da977addb5ed36f9ceaafec3fbea75f6baaf6b73f3dbb8d5681c367c91691977f773ffe9bbfbef75f79c4dfafba31d8c6b52b7889fcf7f7e2b7a317e802b426a54bed62f0393a6916e06b56b484d7155a4ca2879d45ba44f2625b73687313b48cfc6bcefe0cc63a043d1aa425639abe6adda3183315ad215ce9945bfafd761db2016839f035f6a9f9fd472c73ea47e7cd01893df3aa7424d83baadf10336b19ff1701ee028a99277db417d26c0f6fc88122f8fce33c8b741f312e66ba831ded605eafa63d4b4966feea194e1da4ff6220e2ffb6b60a0b129c09ea52d5733f5e2956bf354a838c60febf376e7ab297c77fdca96410dfb361c9b413e9b15e642153220cbfe983b7f49c56bbece778ecd691289b7c27bdcabef3d778e557a4f9ad2c43d876d2da406f7796acb79c9db0b2d578a20d7f9c8f173df95af0763beb03265e1d81c6f5bbea8db72e919697930e609be475979ae1eab625aed6dc5d8dbd9d73eb3453db50d4d04dfe3cab1e60bd3ca962ea51b7b3b2c3411725ed39db1aa47bcd7a263b48f1e977a1e2571a95d8632f3036aa4411b7bd9bf01fca1cbe61ce6761664781d854d7d86dc0ba3e3c32d4fdda3fd3612ed86c4cc002f06ffea52466d15cd15b7b079f4adc7534db16cb87e2aa42ed89c776c5db0686eafdbca976ed58269d95b1befd305ae73a567c7159107b2c5fde0cc29348ebff1776db9fa7ff9ee4c1dd9694e2d7e50757037ab03f82c7b7c816e6d0b9d5cf4ecb1622c6ebdbc653bb0790eb0bd8d340eb25be61af322a4f422bce87325f12b87b1232d9f93baa0042758aa3f8e468caf41bdb87d45eac891b69c0aa8010874a6379e1be1feb96b44679695660b338dd6babd2ed7fc83512f1eba7f94ef7d347a9cee2017a883eb67adcf40497cf4de0c3042ed4ede42ebbf22f54f5b5fc2c0a7d2efadbd2e722ab64c5a79ce06dedf9f8f0ba7512cdd8e2ddb560439b9512e590b07679e0eefd3325d7004ddb652fb6b9de258968301f56095c0112ea0cb8b6965af6ccf166c43b73f1a9d7f3cd07ab0d288dfa331ca14699f027dd866b651746a2ee80207b400b9648c5045b9f0c4b40732571ce6c20dfb995218d3b6adee535969a3ef719bbd157de969b6b65768ada695b9cab6ba2518ffb7ef33acf9cbf7b914ad582b7a61091c1cebf6c6c234100176011a7bd3c91e81233c7e8e098c5ba7c7af9df41a0865d2c97f89fc1d09541961dfcc749eb9e0f27f8bf3dec9d55fbdfde5fad0848e9fbfadf91af6fb6df207eca1f3bad1a44de33d0bea2febbdfcb09dfa268df6dff2c8d895e728a56f29a54feac16d93d5439316909f115efc4c97943862b2caa714dacffd2c3c5f11dfc4f51d536c53da2688efe27a90d8f6a6b4b5b9dfc3f3b5d6c4f06d6dd4c9f6bc2a3df35a7fb99d0f12b05d3a9b2d5f5f35c92b03c08387f8cbcbce2e6b6df989d6ef03fe1be43f1caffaf3fca3768d3a81fa19520879ffc725d40214700dc1920b9a53a1ad3eb883712a34e1859f6f509708edcbf6af3ecad929324ecff572456d97e96c733eb1e8fefdb4461d535691bb4881170c7410550c513b7ebdf665d45f534c17ff49077feafb688c6c9ad384cf1ff13888cf82fc72a62bed1215bea45fdbd8e6c0116690074de4099bc9d2483c956b232d7d90c9e28ce4b391584c3a3e821f96c86a2b729d7fd4aa519f95c43f6b17bff0dd08d6840aed83792e34b1cc95bc1f1bacabc5b9f6944b9fff6854a3de2989bfd32e23f9e4ea271f8d26eeefeb242dbe90dce84648b6b847cd3c0d980dae77d961cbdb4220e2d8019557ce9e33673c779db4387ce6997ec73a67561d685bf943aeb18071faebce8f6a5be9ef3e172906ff8826be969d7fc47b8cfd327d0c09a24f128bf8456aa0fd68e3cfd89a51bce0201ec3ea62c058aa0cc53af698dfe4dfee99c78b67d62fdb31c055183e7370e68fc8d5379e338f7dc66eb617b9f472fb7270e64657377e4ca39c866405e11719934d318e2cd4e984e7af60cf387fe64a0a353a2b5f24baaca840fc3b9e5ffdae5f947b70f9e9471cf8919a9d53821d02df8b31ed0c677f55cddbb796e3f7d92227863957015eb05137bb1cf403f0cf933a00482e62a1de93140521d2f3007bbfc6e7f22cddb97209e74cba42f74402859ee3a0ceb818359ebbb8426d2fd16ef6c4873cc115267b4e14ac4d25da99f2bfbec1e580bf429735d2a3d706d5a897fddde7eb251e8f0e53ef4ff98673b529cbf04c5bb83eef10932f4b77ce0ce21b0376cd457cfdddc55410ccca304951bf2ad7a41b6d6577b551c2a46ebe8cbac3c1fe936d2130ca6f4d9239ab19c7e084c9bc003e24c9108b486ce1a81dcd20ff71d7b709639da236791969135a9be336515857aa11bf307ce7f16a6c2ece73d5b846c9ad93e2029865b975f7130e7e6b229a834da49954a3e651b0b1a97f239e4b35067e97fbe684f8f9d36384293ee7a4c699fc6fc4cf671ae3ddd688aeccd56d9d14947649effe72884b4d7130c7195586ed6f9a2ac939c08a5097ab9b8ff836bef6bd73e5e1b9876b5cd1585d9ca71da9673ad356ebabfab35e7446e299aef245c942661307a29dca49c691f8e002fa2ed0a013a23dc3827b7ee424766d77d1fe2baed15ad9ab7c0a63a3f63caed55fb1ad36fb44fca318e788c64d47ab4ffafdcb24796a973fc82b0960db404c2be0f9e4f62acc0516726388ed6b67ac90be45a17569f14836f840e34169b9f008c1c6b1b91e9c3a55c559a1f1ababf744fb21b16920b956da5f6590b7ec06ea5b5ff438e069d677944bc0cb65d0a4455fe3834a005b54dc138cbfac42b4ec3935f8266cc64e74ea51c9c226f31dfa298b757160ac5324c6992c2a4dc0464fdf954fbec8652133bb0c6be6ca62466989dcd5dd8571103956cb85d2875c0fa8bdc19178d42cc88524106d1ef43331ab7cc89d5f571ec4d3e9221a77746cd1cad2a584b5b58a179ab8ae4c6a2e2019dccc6cd3a537c69ee616a6b090f7465a7a4dfb5eebea3573de5cd95b9dc7f58588ee467c85ed9a5f71be311fc993762e949163bd7bcdf8bc2aaeaa30a9632d0f4bcf98279ab8aa3ca38bbf4f7c272a82acdd3ba6b2d89a7c5f46ed5a9a54bdb3b2d606a17cedd3cc525d9a3b34ad7d09d1f79f65142dafef9eb3bf7a4d5a9acd7c44bfaae8ddd7499d6a4fb9c0ebebf16b8c1ad896a09e12d882a086c59457a8eead52123f437f3d56704f971033436fe810e7b44cf68b0e4b31fbbf949906f1485e4e62ca960103fa27056dfafbf5406c70187b0ff6e79fd85a73d8d39378ae9954dd61272f69a1adedb365885e6e2cba7368be5a7b1cc1fea5d4911d324b5bbce22391c5309646f6f125a5639cfc7317dfc23a6c166dd908d74b4a6ab217ceb9513f722e7d316737d28fdba41fb317fde8ce21dda0eb078ef9fab51fc1b01f0efdf12552bff52371183ada32caa41f3344bb8def2e4acfc1f63ba8672c6619d43c24b55e5bd90ad7ce594f79fc201ed9e28eec09e9b2f3ed79c169d29e5b2f6fd44ea4a6f178098ec7b3aa23dad72fbdef41bb9c70eca3331beef5d5d1a81f4ae23f547156a2bdcc84dc05124f95c49546f2b3bab6bec0a1ef6aa9609e710f9c0ceb00ec86c8a44a11e461318833ce76ee6d8673f3af8f2fd82746c76ddcff7c54cb43923990858cfabe73b1cc427257dfd13e0fb9da7c8df6774e43bf87f7415e2b8ccbbd1b0b03fd4ecb03927ff9b8c13579d2f2301e03723ee346317a62760e69e51eb07f88a3fb5d27c179f18c750d92f42d3ad3e0e743324dab0f7536df9ff40f63ed35886764bb9d63bd0ffcd17dde460ab5df0bf0b7617e01f89cfb2e6763c37aeee72964e218cdab2c72952ce957888397d24a4b6627c7b1292d5148ac1d8ee90b73ee12e6c2edb5de24201d35539d92f3cd41dd52d16aeb482426de9fc12e047c52b4532d5974f5d543368a437ef13c20d91a6a75ccc83eed9747635669c9c2f7dd7d255fa872e883dc33758178ac2d72787e26be913fe15e69971307f5a62ea7bb9f00366b7534a95a031d603ed7983d8e373630de05910b0b248fae058ad0520cf9e3443e2c5a59159e83b8e42be8da10677a4939c0e64a4e37b2ef65bddc0c35da491ca87e6ffb85fdea7a11e402f5d38f31aa698b73ab2ea73bde2f49cc33c4387f5c3567df9e23ed22f237d17b70dfd1f3e9bf3e5dd2ae01b2fad385769fa0cee51170800bbc6f43df4fb586e3abff45fdc1391e5d7ce8225a6dca039a6b61719f623e6a5dfd9c5ff359a8617de0c8a9cb2dc134f95fe61f74af416c739b531c987d3e51c4c789c3ccf1180056585a0cbe8daf61bd68886d0ef8a3c3f8e2808fb7aa516fc7f19c16d5c6736ece32c1e33a31eb06f00f2b75e9d1501b0eaeef017713f2fbf9b4c4f5a2e55afd1b6c5f73f5ecbeb394ff0be7970a2f23daf961bf9bd688de0eeaf3058e4079cce9aad1b30f570abfb50663690d75cf4840bad1a07ef3804e43d64e425687f89a2049bf9566310b9cba0a9fc533ca434ece632a923edfb486632336aca2e7ba0a58e5a23de5c77af9790f59ff2227ed33547290742a5c5eef1a1bb1513367d7cdfc1ee6e17d7dfe7cac790ebd3391f9107cd491a33c23a8d19671bfd4b8e979922834383667fe8820eec99e45cbeba0e6176ac3e31fd0e320fee0e38a747acf559ebe05f5a9cd0872edc3ab6f3c12789ee7d033896a0c64c6954d78f5bef8723680538e79559bcf65ff86ddf30abbe9559f562645efa15d486f6a31d1a5818ccb2f92a341f25aa445e9b93aac2f2d59ec416f60ac53c02eb220591421bba17d6371f5a1161c9aabc5739b7cdc7d24734876a2e59b7b60707170f1e303b342b208f607c0bc65dcaff9e26dcd850bc81cf9c199673e3fb2c30dfbd1d1e6915dc4e1659381adc9de508065f02caad1da84f1d077a68def0d2fd4f5d5bafa5b0c8ebfaa1d3bf08d21b91372f8485e9d26aeb888c7391138a701d743924d8af30c2f5f372b6ee7acfaf5d7fa0e45e1b9076c3b928782f4fe1eaf16b507f418225b12ff610a38343bc91af90f0f4696a9921d1c6caa0c9a8c03cc6367952bbfd994a03e196933d12b718d0c79ca2740fe6af9449090dae8cec7f4be62e770c1daa64acfa4ae07635e403ce08acb555eaee4242d23e156b846faee995cdcd58d35d237cfa42987c9a29d7da3dd315e24ad763e482ef56d3f0e243bdbb97a70b0211f0de681e4d9515a3e8a0f9bb6afdcb9fbca1bc5c162f9fc00b5a7d28f801fe5c814aa2b5f0368730ddff9223e514dbafd62771ed7cf80b1c6b903d33ab8943ac85f7951ab95c27edf3697e5043c0ed7caa43abeacb1b777959f7def1a24d77ebcc2eb2e7b7bc2079a6f06fb9fc03e741fd457bd6b394d78d58cd4ae19e60b225ae3ce9e536f3d87ce34c9e20e7659bb98ce635542fa19d211e29d9f9c122d918bddf2b3f82d8775c443c40d1d22bdfda297476391068cfd9445907b07f69b7916b298af1d883f6e506bafdcb94a10d9d47bb0e4ca96ae206f6349370e6b23ba7aba2e3dc67e68f038432ef96a4037d6dc24796fa567d480d1a4bec63c2a8eacdce9a324a77a7d703794efccb3173532ca3019d524bd0667bafa921e575fe4ce11de33a036cecf7771efe8fc36ff28c39c7a3bb8d4db9111527f59c49aa4dcb6179b538db40a730acb13925c0610b726fff23eba19d5f878d24defa787beff424bffff6d3fba87f86a1ba8a5ea4c6ba4e21aaf21c69a7a89cfaf129fc50407a31860ec033ff975de707d28f48d1f3584b5eeddb8eed91f72b4fb9c7a6b1387383e026a39054c9d1a9695e03c1e81020cc215ce5b5779c8a1ffc6be6a7acc0727edf7459b42bc03b77f7f9573ae92931bc892bfd68ff8db9aeba257fa7cfdd8193105f55ca41ba71af3d273b37be4eecbc312e25bc01f7370364f4df2388ca334a73c27ab7c572e03936eeb3de07a61398e076a633dbea4fac7394d4a39d95c95fe1362b112885b924238775c52f11afbacdbb8356f7bfe2c5bbfac03b81b1bc4a3b2ed5900bf7698c4ef5f83dced23abd093fcb26668873fbaf587ca0b13fba0c74597faa3b719eb778fe45e134cc9325cd28f2fa906ac9523fb02af89af5f623b7d19508fedfa25d5058e3b003b617c80355330e87ac4bfc2473825135b4ea2a2b64bfb6a729e93cd4f880f023b3fb986f6c1e1f197f47868e28c53c55335f54d7e4935ad22da174fc517e0febe90f15ee3b250d8ff40ecce8997473ce06cb43ecaffb3e6b3917d0ce2a2a471dbb68c05f8db21dfe763aa7c5a1e78245f64942a792f6bf45b3c8c1df99642ead8818d765c3bbc8917aa517fa1774eec61b196a33e2a8def829f3dd1a46ba1adbcab6ad43b95c758707292e2183b677d8d92b440cfe89212fbcdcb7af3d736d62e00ffbd92053ce43d9710876ad426f4ad217550ba6fa067a942356fe8bb4f8f55ee8188f40e2f5745fde38b1f7c5fdc57013337c93dd3daec6d1c0c0fb5efe03755007ec0cf7c5a43356a5bc5f13e682d246ddeaecfcba569e079389a68ada6e52b9dd34f7a5c4dff4c971d2e048fe461eb9f17f6c7ab6f50dcda483fd6fc309755e8ebfb097b24ebbfd9fce3b946b420c9048368d3f9dba6355e0e880edc4d1609983fa07683cf6d6555d87f67716b972a4351a043e6879f6eb633560f4df4aa90d501879be0b4d281f3f2de1aeecded67240a4dd4ddff9befbeb34d985dce294b95c79cbb071647ffa15603aff2ab07d27bf0bd5935ed7737662bf92a9bab82d83e7f8d831df242dda54af0a5d8fafd955ffac0cf2fc4460376c930ed72abafbad1c5167b9a63fdab1b73ece7356aa18b8b11d25bc4178276217302b49f119b53bfb7fcda273126f7d6f1d1f9e3383dbe8c3a3db89b47c06eb2e9fb807e099deb09e26fab36f77abceec5929c4f4b3f9943bd1fb23626fce445ddff177ce800723ed4f71fe6ace37ad83ff58135d82456f03e242b95213feffa44f861e773413cf1cba85fe5520fc7e51bf81bcc674f77a88fafe6bb1f77320ea3e726b9d1ab713d7bf942f4f866b43fdc760c35d01be20c6a9a2caf8987e859b4e3890df1f625d5b7914c28acafc0537325f399acb2ba3897d7bcfff0e31c9aef5335f1e120fe7ed5f241bc4d721acba2c08306b9fc67faa15d0023e08a78b2ec86a585decd0bc9e8b915b477866466ef0c74976b1705e936100baf4e6a26221ed5fb273f710c0ed4af8f0ddfd950d0cf25fdc47be00cdb7597f2b76fcc676b23bdaf93ba2136ed4605ccb355a13de5f7e1fa44b2408463daeeeb84ba0649bf263567063cb297b1901cd7c6b37d349a11376adaf1d05b98001dfe1d5f18bed748b1cc379679f723dc58d27f9823bbf789a98037b12fb6cc69585714687d3cf6645f1aac93f6de89acbd78f95d8897fac377b12cf1f3bbe2f5e777c9bd93ef1a9d0f66f581642a24c724eac04e259babf720c131d0206350f3159209b1ecc85516a6a3294f873e1cdc0df649895915e4760afc44faac4231abba31e321de8385fd0e6815f103f40de132a9973fc664e07b2c95413eee15628af8f41dc96ebf5faf1bed72fa0e92f94ca33a5a024c07157c9bdc708fc06d13bab699b8eeda648fe0e78f8333c7bcb4e55398be3875620730791c4340f231a0af66aa3701fb8964366c071ccfd34a1dc627416d0c2ef5cdb2c73871f7138c938fabc543de8701b13262982bd9c75535d237b98d593064a22791f5620386dc3feaea710d92b43413f47c5b53f057ec9a0b8ed941ef2531a2afdf8bee5d435b563378ffb07d93fe2a633c6c0b63b53c717dcf1ed7c51af7d9c82888c740fc3305bfe35349fc05b62ff579b293fe67937616bfec9d953af44df24a8bfb9e90f11961d6747a7ad68ec902624c705dd0d73e567bc5adcce7f564e0dc46d0f76491ce644319d38f31ae7946fc531460812feb516d325c1b28ae08c67b41fc50ffe868eccda2c7cb4953b0b3428cdca836c315ad67d0556c7e720de925ee2d8538e6a12cc0e338e517746cab189fe9eee7de181b67454ddeddd584c0310203df50d8c48c6adeb0ef3f9f0df6128c4b7510319632c60e273eae16375ae45875b9aa367c9ded1aaa5a9fafd53a1960ad0de4f303dfca90e0cb2f800718f5771f8b8779849cd4437ed1fdeeeca61853057c721853c562d5168fe5ec15b8aecea95e9b615b43efb945f742fd3d8b568dfa89b15bd0bd6b7c1d709afe0b5fd7aad5b16dfbded9e3fb78b4d427b62053cc9e9047e8b663ffca9e3578b68b7dfaf5f93fd54a81b51ca175e6f805da1fc678a56d6c548feb1c9ec718874153233a7a3b201e8be478fe516afc6b6c1bf90258934fb0b9b2fb64fbb8ded5e47ada8b75e1317685788395dbb1c7ee4fd179c568e7d5533baf5499bf9e427cfee68bdc0dea8d303a4dfa51054e566979f1e493cf7fd19fbc827c4352e3e6f3ea35e949cf85b3ef28f780294b7995555e333b79ce3c95c58c0a9b45ece77e118819f89bb5d3f5a4a2bf6461615fdae61eb9cad9371667c47b31ff68db6ca7b284e5481283b131ecfd0970fb9c39c126b42b1ff11aa80562417fcc55b6d4adb9a91b8bfc80e857ccda188e2660384a16f522cc6d5cb7db58805d65d2162acced0cda9a70037afb04ecf82039519ba6ad11b96ad64dfa3eb56b8ee294909c91f77e403cdefabf21f1c3fa22770e1b2ec3b64e3af59dcd1df559cb632a701eff803fd5550acf99533b03c9a275b54372cbb98ec33cc23e52a9af5fba6566df6a9321de9828b9d0f8ec26704d2a5119bbf21824ebd986616dee81bbb807b95d457c3c78cf06b022fb786c6573801cc72cf3f985e13bc239e217a4ad9f6739b9656a23bfcb925f20394ee6e5ef882f1359443c1be6e4e4439d9fc5cd77374fcf893259e41a828d0ad7839cab3407b005f38363a7b2a86751b2c8820be2435c85e3060187b27d17fefe654de84c487d11cb909ef3381d44bb0c11efe017ace72a15f66dcc922f077c5abd8db9f5ff8aabebfa2cb360b319cc6334b04f6be2477930ea5893ac32e8fc7debdfb02501e752cb119f7d5c3d57b9605bbefed496eb62cbeacd11ea31088f50ace7aa382bc326e33c06fb03077869f7206ddb68155f2e4dea4f809ed3d54af29e58efe96ab72de9f7809963dbf94f8cb112e43dc4af7ed4f5ff1cf803480d4aa33e6ba2571c9907d88cc36757ebacf2dcc52390d2abcf8fe8b0addd79ed6a399ddb9a7114aef9b41cf1ecf90bde9e6917d0513fbe0007e756056c54690ee6c3f2f986c6b6f57159687c7d77cf913ce017fcb19b3f5a13f7e581d85843bec3e7c4f8c1230cd014e619fb651f6d9c568797eb19a77a6b9e8a2ecef24c3fb7d33112371f5f7c7c26b62e2e4a32ee0befb5655ba319e3325895c7a279b6ab48d0d158426e3a7a0719cb4b37d76788451f8e1fdbda8cfd6664fb05df8897f4ba8e07b9b075b573c2898d80f81c79aade81acfa737d6c4daff48db4f50b0b8025dcc92e5067027c0ec4f7f37cfd8e90bca38f370a13e0dd02c1762079be789e41e675d7ad9c7cdfb9adad13c916f320cca8127cfae2830bcfe03ffad6f2380e298e0db21e8b58151fbff409cd316acf2d08048a3bb471494fbad02e8b2b92f57c01ec20685f8d61bcd3791c38f613c71bac5b5cc83bde63d668cdbec25ebeab86971ff9f809b5eb8187a4ef015ab7124d64eeb40a73fb72703754980bb01ecd5cb8213de7c8437dba17edb0008b0ee29a908e6216e87fdd63e4beeaf309aded0cfbbdc77adb91efe509444f268de8a5c38b26beb8385697abc79a47ef48dfe11e3407c226f06dc099c8224cc768fd3e716c989e416e8388f69f2c0b59ccc774136aa77d43cee4ea03b05aade70ffab686b6034d9c81ce8e6366f740e3be91911a422fe65eda1743be82e380617c92dfeeff926a8817964d8a0bc95878d98dfa752c929a426301f7404da519e0177c39b35cb9845795f0edfd938a55e0677ae6e75985f482516c3e913b0775dd91fec6a2b51ab061d5fb84f58faf211ef4dfc6d943ae27e623565b0b74357bc593179ddd44b4b808f0765ee4130ef1a3858f573cb2d92e3f8b412c7a06b5da5c9dc4b0df28a45b454bfaaa82fe01b54a9f91d8e554418d6fd853611ec7f48aedbdb7fd8e9afd63266dcd44abd8a6330ef033b34fb4c78ded4184575a839aa9165f533b6b8669fe4cefdb31da1b907747a90eacf10ce99fbe39c45c47b24f59ec015b1dc7344ced2013fb70a6feb0a1ed477bee0803d58807e727f6033e7b277bc366673dca23b67d8a78fd0fedaa16d24560ae911e6ff15e8ee79be276d61ced4f0ad267ade434b551f0837d19ad2f7188b98ded55e9bb8ebebb9cc44baea8ce3ffe05ba8f50065286ef05bf40d6eaadcecee08eceb3586876f1e519f49b2b598ff56afdd0ec9a5e2f17ab4d86ff6f793a8ccccf877ef6c9ffd30dee4d7d11fe3f43f2cc9ad505f23f41cf08a29ea26764f45ef44c83de87ff9367ceab998ebe93ae1f6bf88e22ea167a66fd582f573757b2571b0a7dc716b7e6273ca3a7fa123da3a7ba08cf58bea8a77af4ffa1be849a317b6866066ddc9f23f4ffb95e7ee2b63ea1adcd7ab911f1773fa9b540fdabf01fa5b1ec63b34672f10b7eab0921f0fdd09cf2fdcf74109f51064d5df4f53385b3c7d88f48daf001c395be2354e1936aa04e92547f409c9eab7f7c2df7d84ed7d6fe1cc4a9e1bd956e7ebde66e1e9eb3c976ce47577325723794ed0ef256a4940b92bebe4edb27f2eeae8e07a9ddd9d7bc6004c8c33be6b66da50fee40f6071df6be32f170fc62e3a3bd0ddbdc9a80b59f819499beab2b413ecfc234b64ceb71f2453bf75cbb8c041cc78774273f17e840d29707d13e1f900e8dedd38d21e81b93c48085b9fd0c299c43155c7401e94f80cf60477198cf01473264ed07c40db01bf9e8e80dc14b735b9d4a9636d411ec43f36728d645c49f1299978b618cddc4575e1ca908e4048837e511ef7b3c347e556ba255e27ab08f784dfc710e5d269eb339fbee82da3331c4a5463ce0b2e1f9e7e9f30162906d4acea8d2699473200acf9002d928d17872dc28912694c941d26fc10af172c04ebc8749779e0a57761d391923270f7cccd359e8da45942891fbe7b8c26e6f739e8b684b418e75d7bf887fd4b87f36c471fee8236a3333a7d0feac3b7a118990cf88da0e710a3ed31d3f43d12e83d5e6ea3b9b6fc089c331a6c97fb44f427b13c6e1c36b6a9d001e11d4e236458ef55d65d9da355fb42f8e5cfd6e2199dc559e807387f1b81ac4d7addc7e06acdd788cfdb47218c306ec9dbc92235924ecdbffc0b55b14c6b7843214e358cea83ec684ffe9e3d5b16c09987f0ada4b977209b14cc48780c615fb7b1f89e7d465c046223a6f115c3e59149e47677e9645818e444e84f6340bdc1fb18e8f60739a5361ce9561b3487dc78f23a7a6f01ab21bb01341fbc126d1fede1f9c0d60ea19cebcfb0df68e9cde06b41f076206799cb21817bea86741b22803867bc8e2fc6e3a5c1a814d6a7eb773a13c3860636f63c71f8128cc432a037f806f2c1adf115293999747f4db15e883ab643e0ff57732b41e7c7ef1f418eee13bfb53c8d871e0d4508fe1e0ea59606fcee8bdff8febf349d6671589dc3a60a32c4c3771c85857f5c73cd4819c63fa24347043e379701725a61b9a8e20affb91848c5d921a2bff3bfd368f18eacb9398521c879116682d7b8cf0c03846e87bfa3d62708eedff4e6bfb5f680dfa780fa435ea1fe448e3feb4189068df98fdcf7ddab46bf2459f900e67b18b38c0b50829cf55a8ffbd3f16e9cf9c0aa8fa1e3176b3678427ae3b3ffe26895bf5770617b83cf5e61a7100f28c91defde7484fd0a63963ce5388105fb1ddc5a3e72b1947787615f1f4d577a0befd09724498398efb739418d1c4c19967b228349ea3145e4313fce3fe9ae66eae07c7a764711387c377317511f2f4c373f5ab2c6eca83fb790b2f7689edcaf53d4ce8027ce797c53d1005e247c6b9de9a83632643912bf11e37bbf97956c2b9a67bfe11e61cb12793e7daf82388c358a40143235917f53141fd266bb8cd51bf414d18266a88cd1abdabd41c0ec9194524a527f4cd80a71bcc1f00d338d51c82a5dd1d0fefe7d0b772cfa18ba03f065c27c48f82cbfe86e9928e7db1a04376dfdd13494a16899b6b771fabcf03d16aaf77f6e6f67a5bbf5316a3f2e82eae9a037becc967ea79289e6e01ab409e593b7e07916b0e6e71c7f9d88b4b20658f034fdfc33c831c6d4c3f3460dc1d9c0dbae78ade714ce8d897bcdbb13f46cf5c0ece0c9d2b007fcca09b41feec29106d0acd95866536720ed1858e7edf3c82d11e38427360ec467360fc6f9eab7cfbae7c0b9c2c95453a0ef35b16263489315bdca3dc6ef01cd283bcd7d17924fb9d0f0cae81138a4281c62a6015c8d10c45a10ad84da699ab53287298fe121adb47a4f5a98d9141b214a1c12ac2399e8f691f719c1c4d687101b152435a0859bd3938b70cebe0f6e5c08fda0c7ea1036363fb85135d3557bf1e9ccd7780e4c006aedf0f8c75f345e10932552ecc917c17e6dcb76fd0a9e76eae6d6cc9e03cac49c473a7e730ee7affdec0c928df55ca8343179087d09e671731aed7d99f23fe4e9c4fc6d371906fae68fec831f8475a1b19c6badfdf8663d9fa8c5ecc1d8dd76b5d04b905b5e23de656f9eee6899e3980df05add32c3d18e8de0c7c529aab800f1eee71f5a7e62e601e0363c1680e9665bcdca60ecefa142534f87c713bbcdbc1d1b3806963efe0fa0df128dfa1d11a387bce0370af23e0438011728ef805ac0bcd11d228a1e7b284f6fa3d5e634c5669eee904f88ffc606d180b16f09e076b206215d4efca6fe81bf8d6a4f81688f3e7f61243ae8d2c9d6ead2ff97f921106b98e1d9ea811fbdaaa2c7e977f7fcaf73269c73617ce9164831c7414316e90e72a672497f9c6628663238a26606ad407fccc05d144d8dd1f8919150c9e079dcb9071cd31777f9593cfe43ff28306362a25c31854d6d5316a4d356f92c3eafd7e2dedcbb541f66b5eb94692fed8261ff7888d58ed123eb59c6bfce6a3de9ae95c63c9582723997a16388f372f17b03c7d896fc1b22811dd2059e228d2e5f682f5cfffdae7bb7a7a468faba00a696934299201a8810c4069cb1591011ebfe6843a2b7aad3d57f3ad79ba07033d78d27ea42b126c7a24676d9a80dd3c4d429fffbb6cb2fa6bd9445b85159ee39b1ce676decd09af603aa1e2c677bca47d674f63e4fcff325f7c8aeb41e720eb5dd1f7a02e84d3da3f1f09c67e15081d29d1ff285bd77f215b3f489c3ad0a7b3a41b2de3be2cca5e5aa96db954b6b557b661a6c2daa2b99549735b93d6bf6c7b23b81467b874b6b36dce35ac7aed528ae052be62a5f66a6c235c8df280dadc36fdb52f83524d0ed6c336c7794d24b72bde99f47df7049bf51dfbefac37d995732539353b69dff9a795c4bbcaf907c415411eb45b7fc8e9e0d848a1be1560cc99348564ca2fe991988363c057961e3ff201da3e1c1cefdada3923a9fef8cffb207e7e962b67687f45dadf63e499abf7908d0ac8e7938639f8b73392f5c69816053e77d9cc0347b907bcfcd6bfe7f3dd03da5692d676259f8bd6e61b630ca96e3cab5d2354afed5dd7c41705ca33a84436298cbdff6afd105fb4bafc2c37465a288997806c479ef38df4bdb3212dfb76405cdf203faab7fdae1ed8f7258fc666328e453756e20cdbbf8c8cf4fbf3b9bdb4ef12a82d03f47eda0cbf6d42bc5f7b3fdddfbf28426a1e9b0960d4e0315e7a6f83da9b4f3317b6d887f3a877179d1be63b903cb63bea0fa2c180f8a555a36ebea4bab391074fee372cce58b64e15d4f0e4e31a3060a4476cf0a486a400fecd5c49624743b21e8bd678fa4f68237e47c5ebe5f56ad3e437ec8369f185d693d1cd39d0de6e904b37ac3b80fab5cdad0ac96093f3a59cc8df419216dbfca30a5cfb1909f67380f13ddf317610404d5eb28e2df06346c4d781bffb5cc783b59b2b899c6cf3d99b2aedb9a099c703ec6792b32abf3c1f824c47f67b5caff41fd89f3016fa0043daba467cfaa68a339c5b6dc4f79df3d1d24b6bbfbd2b891793baa7ffc889fc86fb5a37304e93b130b3f5354cb0efe1b7b142e3a41a19e7fc920786e3a4f465e42a0dd8e5a0a69c40794c9c85890c7cc7e1e7381666d5c521ac0e68af74f5f301f2c16ee7f679cc276b4e356aefa5cf9157a6efe2e13dabcd3dc8fdc26f7efde6f8be27fd1eb2f6331421deeb0dc65feaf06fd59dc11d557ef6af6adf425778dc5de3a374cebfd7b3b4d8ece6e55ca924be7974e824601eb0af6ba29dedeceb3fed75d8f312c89f8b3d765ff90ec1b0e1e5627bf61e6bf3f3a949fa1f9f81183a5128e5247ddb9c3febf5d22b83dce29c3337fa36e490400cd23c0f73e132f90eab49ca9fbf037ad28672191ac7829b5766bd5c3db67c7df74dfab0a35b9e3d87580af9a26468bfc771717e118876d3b5d1dc9707e78f6d44eb8d413a00a21bd2c6b9260a7f6ca3c77015d675da67560f4dfaf398a367fa18120ecbfb5d3b576520fe792c0356613d57495d56c9fcaeadab469336ff319e1dbdb56359af9bfafce7b1dcd021bbc882cb267399ba08a1f6353cdbacf93affe3b3399d05ce47f7ad8d51a77fbebf8e8f97b4bf3fa91f7fbe5f290366f3dd8ddd79551e448bfb15b34a68dfe3e5fd1881ae1b239d6e1c5f05b51b86f6b26ecff1910c94132c7a7e52af9f011efdf65b1bd0de7f40fc3ab7838368475f529d398df2b917fb76c81955ec3a9e30f2f3de70be06f878497be8ec07b6d0dfe3ff665aae1748eff2dc0cf603d41e2d87fde6e30bef7304c7e4650ed3e85d5b76c31e108fc3390578cf17e7592f1328e2800f10996141f966274f2456cb5bceedf3dcf0f97d6bd70b93eef966f43ce119a6c3a5bed1ddf31cdfd3af8356a6f118ab974db29ee6218e9857381c4fd1cdf9640cfa7e6bc93eede6ba1b0361d8870e1f514b37f7e00231204ddfdfecf5bdb007f905c4d776f7d6d9f632d2ef71ce704fb3d4cedd57b8ce6a1d1339e2e30bc9f7a02fd61f7202f85738974e14b03f14f2c0659039a3e547a2e75c13314203f155c92951d93d5a73c93651c4961759a06fa5ed78e783f13e050ed44680bdaa9305a5c5a09f98aebb7c89fe3da96f16102fb43357383f22e320e62472d7484ef9823c53a726fbf6a39773453ac37198e3b531ce27c8b2918dc490932da3df8f88163a9918e97bc2a59bcbe5fa8dc8bad43627f270ab432cc3f65abd5eb6e7d2b736574046340bbcab3cf9e6adf3619139841ace2ea367dec5be986c8471049ed0e7d47714daa7db98e7bad839d03f227fa5efad7cac4932c6e543d725b9bd5e20f9ef809e33e444133ffe39985422f3711cf19f89ca7c547e9e953ed0c7c84ea46abc9ca846996c911cd7403de2acadefac3672219f0bc08e27ef6be398525954e6328f64bf32510d19f2f3e4acae701dccac42d75449f9f8e215bb8d199593f4fbe0d294faa42b0deb486d8c3d17819f1dd1d1203f42d247313c3e63e1bccb9fba5fcf8f72e51e3075e639b384cc5f1290fe74ba60bfcec97c2a4f827dd53d33ce15e8697d3caf2dedc9c9d7385e27f18da91d0be4f8ae6f4447047c225893a0ab28457059d0c07f00dfee874f18d79a66e2cc636e49c09e9236ce42be28b12f6677929f35c9ab89f03a60acca65716c822d29b1c7dcb2f0527f203afb71fefc0387aded0bee9bf9d1b623f379f94dbe909887a4ae766d1d179c373796e92d3d0b994d73701714daeb01039899a3f1a73d56bf8709c86954c0c278416e5b78a61239b90de3057f8d2f5412bf8dd7039d1de9d8bfc9d44182dab747e3fedb5e5a017e0edfdb61c833906f00d70618dd3dce168929b48771afa0bfbf23d9d0cfb34be42a50c70dea6e8851f687fcee7b1bbb8e635f328c75b9fc114bdea0b5af32567930880e8c635c082e685afe4dfb7ca4833a7603f12790b3655711d223316634d29ba07e02c1d4fa35bf3ebc5065f8cb7db086c99c7e1935f84f08dda135387d27e28f18d7c986b8e66fdf95719c245f77f5d97dfb46b92ecd7db914e22113fa8fb301fee740a659d543acc09f6ba0cb07ebed21cb497d3312eba3b6747a1e6326ab92cc79503b28fd07e7ede138a05da350e1c5cee4f335f173a1045925b72a124752687c9ced5cb990a146bd07786a83f144ef2b65f37312bf6867535cfd88efbf39901beeaa74e334695f1e999f314adb4b17dbddf1ba761ebb587909f77b706fff9d9cd8cc9cd93fc119ead6b121c6546f2c16622c2ac07817b3b88da1f11d9d9bc43c7eb779cec731761387659e71acd5ae9193ede5e779b08b105bd8702c76a0a711feb52cc89a988c0333e3d09e33789ee08b719446f8dd369f41ce80cb825f09f1381362664dfafd671ff76f615203aecbc111ca764c83a4ee625f02d14eb78942daa9dc8f3cc96fed73301acfd18ba0199eb7fe79d5c76e1edc3da12b9b1bd30bd7d14bfbbc2aed47ef500d2fb720775ae9cec9494de1188cd17c99dd7c51ed7bd38e0ed13876e367a0b5d2b57d64af0c9274b05fa3bd4cfe47c5b1d7c0cbdb5c5cd29f8f2fb15b3388de0a52a78fcc13f0984a358bac9d2fb49eb0cdcacbd5fe59722e1de0149f9290b593c0c928dc0e906530ce0a9e9366a01be13d47fcc556c82ba4df3260151d44e189e4bf41ece2b5df3fd37ff620e7d4edf89480bffc8b7dec47cc6192e64aba21e34fe2b5c52843fc637aaf6aa49d5d7038e74ae283ac29435ef5cf7541c6b8e30dfb6e1d51b13c5c9b3ddd4ff025dabcf52e9e99fac516d78d1bc6d37a79cf94470d300564ae1d032c37ac909e4b7b395d805e6fd20da2291c0bb7077d08c9432d8f03fda8a35912abcdafb87e3d59c5006f9d22fbef4f5e60cca76bbe0cd07796135a46fae5a5c580dc63dca7299f737544abf1cea4aec19926babcd5d27d85747c6807e0aefc9cbb9db18a915e15b14a1c4a8b2ccc700e809677f528ba7b35a223b66b25c0b1b453ecb6a56f0c725f875859264d6a04706c90db8d3ec2d1c398687a6b9f84b1803168ed1e607bffd1ffbf1fe3b7218dda2d8f203c614ac3f6980f4ce8b5e793431ce2a089df07f1c1dddef865d4946a3caed1cf3a6244861ecb0961325f1ec4acf425250b92815f5cb4ca1f7e4ba6dd5b01e300e9522dce0e0578a1045335cced4ac5fe8f6c780ed3953dd2ab2cd1fae1878398e99c7b40db2f6b2c532c715c789fd7f6c1ad97b7fba8d623f301f9ae4e23a7689c1d868bb0bf053fd7625afb03bce52029bf55e783fb8dc729bcfceddbb7ca35fafd831c3f010700b03357dccef980fe429ed3659305a27d46baeacef92834f123572e727fbd5f1b66f70ea8919a71b007b85d7b11bd5c7c9ccf48b5f928c113f5e363dc8fa6fc26fc2c83dcb2762dc31aea73cb7dfb761fb51dd766c5f5ffa5b68ddc1fda98165ba6f34b526063c4f77731b25f12d01f9c575d9af073c4cf3a59b28df9040cbd89febaedf672c83beae588ff88817f9577345f431ce30bd993fd2143fe2e6f8a3d0d6f93bfe501f654a65cfc90297b5e3ef253b7797758ceefbfad61f968daceb2975fc67eec887f95a796365057d6f1ae6dcef2c1dd901aad88ce487e9771aa7767baea729cf8f4f5f836881e665c90950fd7a5118d72fdbe0ef38df81ad86822897e258f7347a6e3ff6d0d474cf3d33cafdc9ad60ebb406ed4a59529ea66e7fc226f98b756ae00feab629b19e2b731b677e0fbc6321c5db5f117bbb13ce2b4fbf26b3e4fffcae303c0116c695a263c72f25ebc4f4c71568d17769dec28919a38ce9cdab2fbd68ef9bbce2374fd4ce404e4895cc9fbf53ce93fd5e62c9ae0fbf80d6f7e35df9ae9fd28024e41a2adf46c67fc1a5fd3ac979f0f8ddd307e238ff2ec0d676263833d07dbc400cfb8b785fd15963db1bf278123508761ecc51ffb71ba9b703f0735274deb916c3b3d75ff97efe8c762c2db363d0f98fa7ee8ec4bfa3d1e6b6da6f3adc1cd207785d8e8765486630192bf1a6b78066c52e89a935d8274e07330696ad7fc674cd43512e9523e1719c9db7bf38d5af4cd5f6b968e6d99c33cd1156deeddc54349fc8d45098f909f6747d13edbcefce9397e66624c6cb17bef79148b31cc93fcbbe79371fcd98bfc4a882bfb328beccb78892f4a728b71de7708b5d36dc33056dcced2f1dc39f3ca7715d95ed16b39cf909c56e07da1dba3b86889b19570bef8e97acc2dee98235d72887ddbd613ecea1d5ce55c2fa2442ed4c9fbe4738d68fdff003e31e16126e35d55634e0574eb573b156a237f001d3c6709da478eb955f979d684ac8ee5bf25a9bd77d95018377fffae3a039d129f43bc213fb8ca336aebd311990ce996e3f795a8ef20e707393907b55b47df28be704cdb083b69b4ff8f6c303fda0cbe4aa433126caad273bb77e7ca798d63b8000baac5ab1aebcd2a921f47f8f7485fb4b0df7dd5e6c5edd1de35ca89fdb997dfb8819c5139cc8b583e9c17ff2ab63190b328f3f21bd20dbf7d9be2e44b7f8c7455a75136017b4d54c68e76867283dfecbe0c2e983fdb888e18a13ae07862c073f19705ef1ba764efcc0be08124567178ac3bf3544ed2d21b9c3b40ad6cfc7b9b0256ee22c8b31b89e94fb4d1f15c019c69724d35ea78700dc7d0ff453b08be1e7a9ed4f9c1382ebe334f491bace179f43ca9618c63ba53bbf2719d37d937a106b3ebffc8255dd4031fb7ecdb806bd0f10143b403dfa6b0fc63fb19cee51efaa07bec013bc7f70ef1078204f007aa3ff807a0f6a22c44433ac4ed30e90a7c0c831c9a2f0bea56a27efc57ddbcf4e07a896acc9f9194415cef688e318e7982dad8630b3caebe6897beab67b280f4e409edf0f3c13ccecadfef6d630bd0f8fee533247769742e494b39c3f8cd18c3708ef1e779a5089205c13e88109f6c6bd739be31ff412b2d0634c14124314f9fa96fd235a2c1219dfb84f675c6e242c7bacabff64b2e3421cb76ae80e8f0277df372a1ad6eedf51f6d42df70407e12125c736113079745e9b9e9c963840afce718a383f699d3c997daf5d462ed5927dfa1913e9cf93ce2a79be6e82e90fe7482dc10f41fcbe4a740e4625fb4531c13ba809c37dfd16fbeabc7c3730417f54470994f21ce83043f3dce5958340113353827028d83ddb52564ec0c6cb1d226f39d5b9b971207620d798891bb7940bf25bd081cbbc50f3c453957460e9db55886b214c5304f79986897cd2310334ae5e5131a2f0bc9cab9cdfe21d6c4f51de1db7484c78e8e32cfb96d3cf7f30d1d4ff613752237eb18e3713ff1f70e7134dadaca507b00bd17b5077c20c4b65c6813ffb0935b9338fc1aed57efa4ee691c4888a7ced138e03a7fcb1b603862fb5d59444b7a70dcca08169217d2802d1fb2495dd7e667b3c13819996acc333ff7915e6e794ed8c6b1f6ef48d21272cddbe30bcdc29e8931593b9e8773e4f71087b06366afe282325c6705d7ddc1b56fbab8855e1781782cae38e6764a748e914e4bc6b4b305101ff4685c0806c8ab7715ad1e86ed083dcfc6fa703cf7318da67f8ec9d0a9ce172714e097c3b1cf2ff15c665b7e628b13e7fdf3fceafa42ee1d8c875092dc688ad42c026cc7d1981831b5b3713bd43fb461187303ed35391c8b95dbdca06624a237f06d6c9f658f95e4ccaa516da43ebef8ae3a10f7f7ddd718faa83ca7467caff25c3d9bdc5f0c63c3600e71dc6f3b17e87ab573e5771cb798559163733826e506314e4183f81992db100da595476440829d84bf4f64cf835912fbcfa4466ab2a0223ebeab464dda974efd21ed756acba4dcc1983f0f8e52229ef6f50aefcd3ccd5403d7270e92ae2f609fefd75256ed9c0f34b6045fd57e1f8c3b8d71e91f5cdfbf5bb96dc85ce378e5e2c85a9c6c7e96c199be43bc8c7983d8c9034ba33185d83fc8b98098f0ba41df0be07b788ebe9c0717f083be600c3bbac5170c9674d1da8ab6cce39dcc5549ec7fed7bab9d03feaf7bff5e34860f3286371a63c2413c0feaf37b3b7fc1922eb5cba6f020672ec2316baef51a0f6d9902460f19d3e11a8ff1775ecd43fa68e701d7f49a111ef3db9c0d78b738ab42e01336e0f6f69870fb368efe2d92b06ffe673c638f4186d62dac1d44574babf571c63e5b7f6cce3d9f1cd25a5b6faca565eccb42ba4e474b5cc4d714c12d06da26365ef03d61bd25c3b4406a666d1b81eac73a7c1fe0abb5314b1067d7f69fbca38f89c3384ef0cdf69e2ff49bc912c8856c866deb7e97780feae7f8cfbc54a1ba7a05c31c9b9736c7f5633c5f84a738d63fd1b220b6c779115238df14f1c31df9ade5d993d829af119ffea38a56154af6f3d063f6e1ba61a2556c715d765cfb0cea07a46f2f6c9c946a724876c7b1d28c40810d25bb659aa447637ecf51035fe1eb763283fa287cdce61be4ca65dfe687901ac198c7b6787ea3786051a006385ba3bc4a9781185aa81fd6e3ce2a4fa483f8c6fccbef73121490ab9df9d977d7bfd97729d51860034a32b75edea63959b18ffa4883ee12fb4ca79fdd912eeff3a762cbcadf6a93e1b81de1d6b8465d39ac1275b8d1d23e572e6987fdb4657eef478755f97b5fda789b0cd18225da4dc8e0e7a1fe07c41443ac2b155e48fe2c5afbb81623d47418d3ad3d18ebceee0976df83bbe7c2cb1efd077c424db438f41b9d6fdb40f8ea1dc9441a9a37a32e7eb1b3d3ad9ddd6bbaebd9cef17ee2744eecdc81b41fd5786873ba30bea50e710721ab9c3bffa5d4d750528df939602156e01130b89e9bed6e7a5f270ffe545cfffe8ff7a5652beb61fb088ef5f00da8db9905178c910e32c8b09e19bbefeba25aeb516e582b1baba00b414dad4c75b24a1ed8be86b20ed25155244b0f7db7ac9221d9a46fe729f1c58c9193b4f8516f0ec78e747572a04ee2f2f73c9748b865ae919691846d2a1ebbe71c9a1ad9a8fd0bee1fe4d8b18bb58f746bc038b406748af6baacc38b1ed0783b8740df83f371906f32c8edbff4f8bd3bf3b35c9b9fffc76387ebd3877c9216e36eccaf746a5ccb0cd1f8a6c7a91bc412925c9b87ca0ff9f2471589dcc31451bb6bb097219932685a2cc7cd1c6ac1597ee939d173e7cae81a92158b28b7b1be8ef610788fd0f88c4d19cefc89789e26725c5f2b4cbf87ab1abdb3c418fe45a68978ac2c16d6f64dcfebd867d76f61524fde5f509a44b051575915b2fbb720a987e3f7e6d0f464cd2fa8295f1db50fc945eefedd173982f38aebb961feb3a1025679b6fb4a90a49d4cd4619ee358bd2796e1e614d2c7a00ee010e3d018d670539420f7ef235972796b86fa207ebed3079b9db92632a91efb4f22ff5fe4a9dcd3d7384b33b42f716ddd51121bfebe315658ef68e52bc3cb37e007c27ce5973e235974896bba757a64d5da7e077ef597744c70a8df895e54798cfd447c3aa46f954bf29983275d024f9dac1dd5bc3578bec674d9eb2c101b82e339b09dabf4207ee0253dbd93fc41a48bc65f4b8ad9f0e958966f7dec4bd4a7c7873ef4b1f3e0636fb1610587a9a32d0b36bae7ce5d57be1b53612e9c2382331f3618e3f760d4774d5c1590df2959b0c74446fd44f26ee4a2df933d4a8ca9718cd2290e92f9d573d720c31e5fe5c25c36809310f0f29be302de4212329b2660ea92e4b0b7f9016dde31c6e56aba38f42490204edd8f901cc377d721d65313320af24b73a58c5c3921f54c488cf229f1f29a0e1399f8a2d33248e64fdfdd5fe5dc47bcfd2927755bf7b79575493cfc066826e8e3e1cf81c83d7d437e2379b3b992e16ffbc6cb7e14c105636d0df2addb38abf69d6decdc5bfb6c9feb7cbd419eb11d431c922fda3393f1f077d3a89571b9b63f83ba2564fdfb9426d294266594264614d605156a67df224d8a3a1e7f943a19426865404dbc8d6c4c26bbc798002b3a0ef9da8c96808b6ba13d2b70383a64ec14721944fa1ea1feb89fa748e4688f89cfb06e9d477b9c05f9befddde2d8c4911b9f03313b1f9a45eae575fbfb1130a45624036bb394a5c5fde0cc29df55f0f7fa633ae417188f0ef0d6f506ed03e4fd6998730fc04472fb5a3ef8bef1b9d6f67860ec39925920ded6cd30166103bfd177483ec20272940c525bdc63ea3bcea9226d1537f7504a4f1e6b53b2b488d1fe04b84fcee65b1649dd0d82ef86de03320360a8217a583c2347b91ddcfd0ffbe39edd731ded8a40f3275f52629fb161ac48df4bdf1118df58dc02d67efa0ec7f88897e1b9baa3f676783f39be3638467dbb04ac3e1c7f8259b628037643f5f776754ea7ed1cc9262efb1b86ecfcddcbeb3bc449aeb86a9b5be50f7e7ad9973ec6ec368f50af95160351b884cfeb737da92b4d1cf3e56dfe51623b8f5004b9dd6c2fca9887098b4e3f7ce5cff773ee1cb9eb2ee785f08fb788ddb738c4133e01e38deb5e25ddba065a44b27e945bc9f612b7eb6dca2386f3d3e7e6f4f3946c53fbb767bbf909587ff8edc1799b92cfc537b645424ec015c968ed75036a59115b5bdb7f867b39bf5ddb44ee19f5ebeeecb90b8c2f782e767fface34962ae2a7d8f7d94f3ddcec733387732c9b1477303faebe497f457c3cac07d0c7b09098912e3e156c9a50c70af6bb00f6a2b4d7cf5feecb9b0f244bfa931a6d7b773fb2a9ef715d2b2243ef8bed58871bc6051d7cd0f3c7f64aec9f2336ec910c34c1ff806b484f9c15eac0aee21b73342f109f6a3260d721b1d7691539e00b4a02d1fe0a2f7665235e272c9a83c3350717725c2aa853cb2a4524a5e3d84a3e7b3fbafbae0ef9200e1c644aa4b305c9080fbb3a4819a27d6a68f7c1f16a688c71eeb2efe8bbe04c3db10d10e4d27fa6ef19ae61c399e7c1b368f7b7c97be89f3620b178a94b8f9e4b06f92b3dfeb70a747999e8011037fc526e2bc7f233e4958ef5023e1dcfa13bf0cd137adc4e626edaf8e200c61eea4d4ee6f711af7b5f49bc1efb458c6888937f21b24a3eab5abfe74f8cef9a82ba5060c7c4b2c2f6f9f9e15d7afd6edbf478e4de450fd60235c154b1aa212f6f31bd5b9f8a8bd7c8b01fb00e23dcbe89eeb2e70c38ff43974563f152e7d32634a3893fe4ef517ce88e19b777e7eedf507f43262e902e3d8a0f65f7b99217942a45180ba5979f86fc6686d6031aef23f8d4bd6b2f5ba55d2ce4ceb22925f1ff8df8588870fdb64eee528dfa9b601de0586741a154a3defd3837a94d17b538eed33eb5b1ade2e47cabdfb35047f812e158db42bbd8200379799db9ece67c106dc082dd334219884aec31e5f560cc696c03534adfe6b601abdc3ca7de8779760ff38c3a1af51af1d5291e3cf1d50dcf51ea38de6c8579b95580ed7f39a63fd5bda1eb09c65faa337514733de3d6e6adda89ca10fbbe529bcedfd4ec1c85729879b465e51f634472d25e8d11ec5ba04b76eb3742f387dac2465063a2f7ff1da57daea43aa54ab81f03da10d03ce8d2feaa631b5e7980b8a4de3efb639ec1763ce3d6cb5bb513363ffaa54a3267b13ad4429af0558ec4c137aff8641717f5fcfcb0c6f69b0eeb411567f0eeb5307d7759ec094f1a60e78cc64d497c33e2e7cf8398e56007253500204edea8df10adfb6e78321de1a1adfc919e61bb7bce6994d8cbb986e068e3b884e491fa80a13c8d0faaa5e9796310232427b53fbddec6f368bc827413882b00cc3446a830e632e0c5913888acc3a31cdd6377311180831db5f1186d3d3d8ced4bb7edd8b77105c923e9e32500a7fa164a7a41b08887f113bf1cebed738897034e3189af80ebd8c68bae47f797321aba9fe128ab95efd281fcce2b188738792410ab01dfa9ef9ea3673ec449acba7b7c475f79ae1e77f78a761a3836e5393feedbf4f11dddfbdad894f6d81c1e872ff58eeedabebdb61f5ec37385e33578a58f15491e492829779f55b2905d138c6fee82f539c02a6ee34400bfdc77ecefeeb92e6e84601a3b7549e6a18f2381fb30ae06be6f145782eea50e0e9dd9ee02e36d27b586e831fa191f56ca9741cc09afb09e8374d2f945cec676defd65dfc67d8ef91fe21368cf1bd8b676a63ce07f36e21580ade030b3efb54d9507934a2036ae89efce73f1021739fd0e9af913ead919a71afc0626fd1e8a718c747eeb553d2077fd766414dacb15345e6f07a3eee8cf5f1685daa077137abc50a52fda0f1c2b343f1f1cfbb9cdc06f43f6f85e4edd5e740ef10b6cd721f520a5a23f46b2ff8aa61c868b764ec67d590aa5f2c47644f4e4816e4e6c3b8bd6d630f8cf3d412f6fff8ff5f3eed86c8fd9c57ca4eb8b1b7a62d340bf972fec1b69c0da482eefae4dec174290efb16ecf124c6d7cde1cdb35a06eed89e8adddff03b14b0cfe3380670df60b6297126fd9d1d1ef1133039b87fedae6b19fd83fd07f3be45bdb027e9ee8acaba91d889c47f73f3ca4bf1bc3ff5063affb0fbc58c2f167431d94ccd563b0f6ffcb1eb47a611fea9eb7ddcf13e8284e678769d0faecf8b4a4641847b8fd0f7c0262c8108f002cfb360f566a6d7a0b2a60edf3a1a72d7cbc9a1c03af68af0d7e4b648e25fd1e399b2bd9a75ec4a6f9f740b26fbed5ed35130cd9c743356a1efc4f8876085d11da21760a7c4e87b1e9ec47b3834be88d1afc66eacc73fd8c3cbf2676256cdf00bb03fe6de2df8426e87b945beddc6fd07d2d4d804d82fc3607bf83e1f3d6d42685dfd71da793636cb3eae6d7c436b776ee010f7b70bcc3c7ad5d7af1f458e51e8860a3bcf880e1abdf7d262a7da39d33fc3d62b7c4fd91a2abef201a24ffa7f8c4cb55a1ad144a156c4a5bcaa39a72f665cf75b5778d459bf3368aabc471de59154ac0535eda293d86bb855d6ded39d85627e7fabd68624734a43dda33e468593b11dffb120c69ffad369918f1d8ae6c5ff4c090f4485b7eb6387d6eb4a4c7ba020d753378acdb65954ff77c5b93046ae7fcb71d42e375a4773e46f107abcecefd8e7d0775f622c7de1feabbadef4bbfeca1863bd6af3bbfc4b06e59b37bca6f61d2e17e3eb6179933d87de5e559e5939c5b0db09441df18dbfd96abb7f04c7b118f6bb3133b430978d2a235b0ab0d7274ceb4fedbfd5f188332f6451ddb0d567501fa6d6e37aab42f43ec2b79fbcf7b26b62a63647bcdde8f97fac3304eed5cde77b6406962ca1dcfb737187f5cfb73a58a1fe5e039cecfb30ac94047b7bc1ecf74a1baf5876d9ca6763d6f68d753dd5b1df1b11bf1f58f7ef7ef9ee6150b3f7dc5bc4ea92f744225f16e6bb3b6227e5e00d6f30ab0e60ad5b13897dd5f3bbf77db1ea34e863eead6cfd9fa9e8dcb70acd2714ca4f3515810ff5037e33ae454bd13746ae2a329886df2ae0dfaa221fd94f82e01d7b6b7a7c5aff17fc156fe8c980ceaaea27530f591f571c211b5b3e660a3d04675a90013e57d6897f631df4f065864b368496f233e9e4583f1d2c48f42e3d19a9cd8a5316e5467dfd3dd3d675e5add76d076e311af97ad1f70c28fcf05f0c203e0b976d7147f801d8474641cdb9c96e8fda033e3e3a2c5c39df475d4de5f6dd903bcde9df351f5fb4a966a2bae95290b6d35a754749c47708c687e4a53688ca09fd2c01ee752d7a019d25df6ded18e51673b07c74384c4f7a8018f8275c7abd282d840faba7424b6e3473dcc31bdfeb015573b6b53215d3e90f6d71063ca76b4eee416c40c4c69bcb5138cd746ca050dd869e1feb5b97e1d772bce38b467a07918c633421e2e8edfeed7cd72f48efb2426e14aea790df2513eb1bdb821f6e2e6efecc53fbffdd1e5c176361134ae269d62de25a339a35413d70cdc27f103ec3c2e9d1f9c39d209e747c6a75ee2ec615bc7215ad2efbfd924f60c470797fd9b6c7e965ece353ef84768247fed2257477beeab6b26e860e6355ef37582eb77280ad41ab1a3c297f42bc6cc52eec7955ffaeea97dc74ccfebecb8829a2e8ffe1ef46ee0e712929dc225bcf71c30351d38f365c0da55343ef7c4cff6eff6bbf786fdb1406414d7cffafb63f3003872e5e0b97906f17be3fb7661ae67e119be7b09f32cddbb4ae699fdb195732cc1066b0e8e6e042ce848f8bdac52f882728f68a86f343d07b2f5e0d925eed7e0bed506e46ad0c797833630207f5750dfe8fcea3cc862a46f5c15095106b5e7f13b003b70cfd471e07ec23d10e76ac5c37beea1289c41c785f6e1796f7f235d3bb8ace159243f594cf646e8803d20dd8bc5d78e29de7fe039a9b8070c45da9495c1aaabc3d2cec13d60f4dde8bbd2860ad8c58f735033c5d2e310eadb29f1117f9bd442b157c3ba2be367e822c2354e6e0742d321ab370173cbccb6a6caf85deec1d1a9031a13892a7d67c6398de2fa8ef20d7e705eb981cd26a5efc704fdff48dc713e0dd5d7d37ee14b74f58f2f7e88693fc0c895d03519e3062e3f12f95c545fd2a3c75c1ae607a37bb1fc487d49f5e1353e479ca986973b173df06dea1f95971395dd17da456f0e0e7555cd82521be571e495717c653e7b65dbc135844d5c9bf6e8c0be52203efccbb7ab21d60f892b1ad4d33e259a41255093d9d5d1fe5046c2ad7241ae2913441b9ebb4f761dc6cd0ce92acf90f2cb801128a43b84672e833d521862e5cdd0fefb061824267dff72fb1a9b07c69e874d7c88f8f48f75377c67f6eb7582b542a90ce2f5711ca602a52e3f8b57362ba8d1eb74f895d7b59196682e2281e2f09cd0e0cf540d82c52529d5cef9b81e193a0b2e36a2db1ba2e52fa37ef77a1e0435b3080f25eb73730ff01ace0247c908dfb8121e56040ee68dc406837f33f6dc67ec0a3f5f777c11eca7f83b0fcf55e280ac0d5cbbd0c2eb1f30f8f0fd1183dbf0658c632d2679e1edff2680daeade08b7a4c7e999b7b8c77f8567f23af761cd22594c4ee462ecdf067c0ab05dc05ec3d4730bc7377639e96339628c2df2ea5b9bf327f9c62909087ee3788dfe571fea8f2f7e759533ee0be316402ee77fb7f3652e945777793a3dde1cc977f5f25f30b3a9762dbfee9f8cc77122ef79ce706e4f383eccb1266b7b580ba3c7701dc513f3f3227cf67a455ffb4289837c7e8f48fd39cd8d6fa3f8b7699db90e3b16d760f373e1ffc7de9f2d39ca336da3f0017d1b0dd8ae329b5d1e30068fccec19a82a3060f3de78001ffd1f4a4920615cddf7f3bc5ffc2b56ac8d8e76610c1a52a9540ed775f48de6fe3c904682eef8b127599770b03cf6df2f8a619e36f9252d67dc3ad31de0ac8c997c39ee9980bdd5beef7270d70fcc558639e058de92552f46edecfe4570442267289b8ac5af2565d8c575819acdad99623c13a67eff6b71afe87c7079e966d187f5556c063bd902fea3cb8f750fa4a6e11c4d62c1192c23e0a94af8337e8871237859213a15f6098217b4a5f58d8075cdf3bcab8c7c3079edbf98cf0dee9066a445677f7d8f16cb11cbb3a8e7c03924b55811248f3797d34f573c7ad81f23f07817a32490f6a38e4f2127358c386e2959f9f20923a22c3036178f13d1b691af05f0bbf39a54f5d6f1afd827d072a987475a730567959ac76bc03a6beb58ff84098e09ec302fc295f1a795be79c77932c721531f3a7a0719318b5a57e4dc07ccdc42d01d5bde48961c9cc46c73a2f8152aad9943efcf3e177b93d6da01beadab5e83dc1e46f3b62eabc1db7645f83e54e6c0f301672bb8466a8a1722eef742edfa71ee80b7cbf82cfd96e7bf8ca6e2117dbf19405c019dc3ae9e8431a775ac5f97fbd3320e9c160b00f247404648ee8bf15237357cc336a91dd121be4c7412f064f932fa9beaaee028c42b5724f9c84dcd9ab075d6570d30631bce0a649f1741bebf45757a65649b3dcb099d9ce72ea71cc81fcc1fc60eeffefd8caf615e98ba602fd7261ca635e4a9a9809984ed2e8a1b8f6cd050b2e3305f9f1b8c4fb4c7b9d518dd1fb498d81407550cf3fbf33394f9231c44b730e79faf91e77c42dd821d634c4fb093090e2f7e673376333b3db8d8e74bf197a27c48f3872fadef80c39bbffe946fe99d6c2152184eaa9cf8bcdb9c698c59d7ee01b0d6c02e3318ff973117f49ce1511eb0fe184eb64fe49cc0e49e70cf9429e65130f868b82c300ee3f21a0cd6c730cfee148f1cc617f8174627fe4cd1b1af26cb6be48889efaa4ff2dee01c9e388e0d99b317fe609bb4f8a480e592426cc15dde22775d7eda6ba8496939d65bdcce3fdf3bfa72a558089c0ae766294bb4765f611f3c7c776f1dd09a1ad8c27680ce081013bf21fbb7c5498e7e7ac6116ae4b2e677bf3c88412d9be736d87853eefc37e4f7890613f21def0d4fba93a9896ff53ae46e4e67e47c7727798e19ad896ef72a5ea6e6e4dd1970522c96599467683c9bf7f1f5bcc27d2359b47e7648d624e0dedb848bacc1083646a9e7ee638cd5aaa65816913ca9a98a6515ceaacbe938a135d5e0a3c3d806cc3e6dbd4713e1f2e5d880abadd7ed192f9a94ff7c39507b770f735b3a38b2188a6dbd2dbfd75339b85cb7961847caf735cce748975eb4498a749fd99cbb1e1ec3efa616fa4c46f3fee50e30978d817dbe57cfa9daba4a639768d2e5aacfd7dcbd38876faf7a680f02de637adf9ebb6fc7f801e9b3f898d2baa3cfedc0944611a9976ec76bb17bef6018f0fba879b9d25afa682a5e1d717f75dd6a1c64976d900924f714ea98d93af392c5cb25faa13d7b815fd267724069cd36ae8df54d11cb99d9e656fa0d1ec150f66dfc6ea6fefcbdf90d83ad112dc4eb16d9b1ceb0d04f1f317032cd600d3ccd3597c74f71ea1b9d8b9e81c70ff036d118002f9a45b00bf7b15f933a2e82cdb14cbc0ad7d1377f3f54b227815f177cd145d6c9d9bf36f9bcb8fe3de3eadf1bdc0fc6fe64fdc9e6a5aff61bea9cd8fe9979a77f8a1d58b86fcf39c6b339691370a7bce0edf072a86ba3ed63ec009fc612f8dcddff69f72646ee985a3ac2f5707dc20b68f27cbe1bbfbeeaaa4f767a70146bcc19c1f0bd40ee2889f14823928fd2ecb7b720c5752b4cce15f3ddfe1639cbd2b7486d4bcb2772dd2bb2886c859d54159e749932b502cd3d269b37f2e27aff7b490e81234b2faf5b3df50bd2680d3906b67def799f1dce7ef88d456a6c8ee7737814e230010e21b087fc4936fe9ac4f5d6989dd57c29468b3dded74c01e30613be4e82c7778f888f0ddb728d8dd3d81410ff077d3323361baefb56dd177c3ab925abe65cc6b83e4f980b048f8ee7fd5039de8f3edf86fa581995a0b79c32d70e5e028f999c37b1cbe2b38e85ad5380ed17e071baf39c81a3fb41993f7c676ff84e54201b8a604b618e467436c67ca0e720e16af05707a8031a65e16905358b3f7c0f5c299defb91afe9edfb3df974fbc19b3eaca6022e0b368fbdb69208df283135eff9023c79dadc006c964ae065b578650e31d4dcb224848cc1a72de76f2ce199ea3a63e7487f689267f6335ad04dd10de357b79d5945110cd05c867c5320d3c056dee34b24306bb31fb7b640bf0bf6d72f9128c17c1e79eb33e77c0834fa026a46fbeebbe7926d84a58ef29c3feb1ec1bc3ff47ca464664e307b9e8ed8b97efc12731faead67f931877e73d22790fc601319521cdb37e6b38b1667e93e76f3b435abbc66145e2337e966b739bdd4fece0886d63b296e57d3e2c430e73b9ba6d0dca4300bed3b7e028bf0509c5e72dd0e78e4fa482587b9b9fdafa597cb3aa91dde3487604362970d05e32ad2e699e4abc75d58bdfca6d85e476ebccf2653e0ac244145cf0bdc9c1c1409f2f02fe2ddb27f1d6d8a28a55aecc4ad83e6697685ad09ca04e1e8a0ff54f2d4ec4071f7b5738acd6ee19d36dd705e4c1b0f8f010cfc1bc453debe421663ae628baba030e4f00f07a0e4af678c6711802a61afeae833992e29c38ec6bcdfa39a29431ac25c0b4001cf6f417b44fbcdc5c53847ab34db2a4f56d09e120c6ef3b91364ec57a7342ed5e078128c84106cf6179cba04f07773da37b9605e724d853d3add1f8ffaf0ceef42e247557beb3fb85f44adf6f37c9ac22b564d4062338d8e92f3b1fbe19cab024e3fd1a3f662aaa4182c797c768985f9ff291485f485dea2e90e4b20fcb82bc93e632df02e9fe8c6d419e4530793af942326b8f6751fd01ed63dbc3b575b2bf723870c647d1e82b1cbb44efea8fdf1cc311dadb011bdc6de5479ba480f5d1d717a67684c81ea99153e45bf00a0b6416511dc98d1fd4a52b16e4f7c0ef914cb8f3ab8ef9634adf993f7c5348839378d3e6d115f86e07fb1be6faabde432a0fb336dfae83ab4cdad82b5bb26afe6eeadb485f3bf81e178ac17ea7bfdb37b5fa7286da43fad3c8b73649dfd4937d3d48a35bd4b1b798f34283d9aee1bec27c37dc1be6acd0ffb4766cffaab94209f816735ebe37395fcff9977d04fe31ccc5333f11dcd45f2fae9f35f39c44cee89f20970741c273c3ea347f7b46ec08d24f9a8bbf3bd909b29fb706e0369039ca1efc3b46267a6fc8f695e22d3d71c43563b5f3dde583ecf702fadd9751a1f59f85a735ce9b3ced4037f88add72ed1dbbcf83fd27038e033c665d6ebe25ce2f839814a9a1b4b08e9f64d01fd8d7480d77ffb813ddddb101b72ed133cf7604f5b9fe79bcdc3fc88e155f9bfd86c1c2325abffe833ee367acac0af8f46c6978257e1d88e16ddd0be61aca49be2bb16fe8df2d2734dd475e72fee133785b1b7286783c7d0e91a390e47de9340f1f728e09af301a2f47ccacc11ef2719ef8f75a5fd93552b28b6f23dd29debf16d50cf3018d6e51fd5d7c1955ff3e44da7270d75678b21fedb54ad691cecad199cebefacf1c387c5de4247be763101d1ec1a4c198c3f38fc694e0548575d6e0ff80ac3d2e02a72b01ab87fdfb42f330a12e8fe56e0ceab840367988ce858a8c630680adc23defe99eae0d82ec93805f27c013f465541dfb04d75332e354379f27d52248806f06ad63f4d90d1292bf31cfae5b9b19df49fc0e3567664164262d0d692823d94436a9ef8c526d71c17e5586fb3e388ac1c6b857abfa5eafebfb639509a5e50ce55dede56acae7e0f76157ebb382dadceff09bbcc50fc3dccc602b3398d95eaec16f588cfdee6f681f8beb1670b79716ea43dffb9789171bf9b0f45d15daac4de6fbe0548d8d7c982f8fdfe4ff59b53d8a5a90a465846b482176a1e77e1d48e2f4a0cceb9d84defbfd58419da72a7f4acb0cb8192c1c9bd99c2e3f9fdd1fc53b5d8ffef49c04d268e2432cdf5e92b857d9d4f639bb373597afbbdcce83c132c3782afb3fd48895494fed43a24f964ced12d4e3659f8b7df34ef54470583251d63b35157b6794fe07fd9a0692780f067c2ddf53dff8b6ce83fc0ffd4b68dd5a1f660d5fb385ec9e70b082cf4cbd15ae87ead4a47c19d5916b6f46f222ffdb7e93e7a8095bebf7fabed69fb79475659f41fda4625f3d29cbc2c79960ae7cf06d3dd11ab8ffcdfedb771f78298b7f55d3d833a7765367a3b4be964d02be536e0e692de87f3606a4bd06d4e011cca54bf6e97e603c74f86cdf694d15c630ead487b9a2ac2f9635603c70589f60b7bc8cd392f16572e7854a3505d951d8dcc258d0f34bf669ad6f3ee452b4bf256d69e3b553b5de18380e82be079d4379d273a64f8d8f96eb53171b8ce5a2edcbf3a93a7eab22ecf0c13479644c0c97e051a6bebb8f0fcebd00ff29d432831ecf30171fb3cf601f4c1c1e851653c445fa139f1720b6e7aede82935a3e61b23d78ee62c6774070e8c087bb0f922cdb9c7a73b7fad74b5b67710d9351fffa27b54aaa62f53f0b7817d4b7de6740be34a98daa3f323ae7afead036792a0727f5eaf5af1f3677a560f25448eefebcde4a584e8304b0338aad33aac1dee8e872742661e48e720cd5ab634ab8571a397df91c92dbcdfa918a6d1d676182f6f6cb0d78aa9ce135c09c3e7076f2dce5f84b01eeae97e3bd95701b7ac772e2e51ee6dfba6dade5559ba4c5268995e0282484930dedf9e7cf7c288749faeb331f52aeb637f8ccf3c3949eab02979d6654c5d6ceae989ff903f8e0fd495c30b551b7ad941279166f0d4fae299c838788d60be54e2cf41ceafce5a04e4bd3199e0f465aa27b34b3b8519f235a3b4e3efcd5c357f467d925f2d6dae3590d757c8c3e217a9fd147bf1fab84f0904a71e149df2496783e8727180364ef34cfe0ea2b5bfd71f649be6aa4cc0acc23afe6cbd3b2dee27c82b77eae7b5aff21000e9f663ead65122f983378f0bd7da6f19fd87286f932a73a19f0a5e55d3e3c6b4665074751098e62ebeb45eb02f0fdac82cc5b3f5799327fc01a3c75b1c67bc635c73ea468323a468b656948f608f3cdcecb6886f473358e2623e0ef40df69f8efe6de65e2b7f7d23c44c87599d7cbc4abb6383f260edbd8031b7bc7df1d090fee293a1f9cf599f151d31c83ab7f5ade026b8dd6dd349000db88ceff537dce0bdd04b6233326fcfa7677cdfaa6320039339093d1c3bfa6d0b330c4330acd1c835fd540670fc6b7a52948dff07675bb169b7598e9331163969945cbb3d9d66bfd8aa64583db124de5db26bbdc002fdc15ca6081f69ef52d506492af0e3a16d780203b02f5dfc17fab20f3369c8f7507f2ed4af54873dbe705c973bf04d208d768406c02f299706d479b6386ffcea18e197f26396cb83e649f9167417c805c6bda11b9cb125f8b32df29df54f343e6f3c9d6f5ff623e1e178b8da6e35875aa1a38b2d05e6d0b6f3df97124ff655d6fdd0badd77efb1c607f843f5f66be943da205c18449312fdbe67449226799102e736417365831cfe7055cebffb73622ad19f720ce5e3e6340f078966238e9ad39efd488677287a32a0f7bea6b905eb29f647b8df652d23f5a0799162406ced4beabe5019fe9d7e007312acadf978654b72d3e6a7aa6e63837172ac6e0c3587c5c6c263aa94deef3a7629d2d88ad7135897c7e8922d62c6700d33ed0c72caf0269df88d8785c5e6108f1b47d0d3ed4858ae64af09cf5999cd5cf686ec386df3c6bc75d59a2fdf71e1ec5a6df9d1af784d8ab50f340ed009237766f6a7fa8fc9ffc5a5b7cd49a01bc5fd9d6c17f43ee38d4a1a685be381711e11a22bc0f6cfdf74a53e2ba5b87fa79047c785b9b402d2adbbe012b1b0d3e29cecdf9a52911c411c2852a07c91d8d8d1c4dd2abe7eeffc5f8a46f14e3976276f903f5dc19a7213b4e94cf17cd71839fd1e67292b5d0e65c74ed4596932f4ce27bd8c9bbdfbb2a5b8f9190f59774792f903c4613feb78701ffdba79c90d73288da2268ae38058c395795c3011a3b62cb805dfc1db3d8f4ede7fd1aed915f8bfb68abfce873a271d76d7814df495c03f223c347710c93eaebe0aeb15f65467111ed7ba8c835f83c4f59ad23fb6ab18cbd01c12a58acdefa6bdc9978d954de05a86f66d1e49a437d38cecf24f9023ef7b77edadf4c451e30f55f780df339354f793707a8cdf18b40c1eb28a8694e3489373b628d6ba0ad6ff4bc70a0425d33e814572d3c53fc276cf8b066f2e74225b564961c0d96042b137307317b119c21f9763cf32e423e78be3efbcefa1f2f97875866c74ceef732f695ecc65dc7b679bcb5ec9ad45fc5701e31c598728331328474794c710e22c3cb23b057c69013d15d671af0ba3ff3e36b986718f2f5014b45b153d4bfa66e926b9f97ef24eb1cd46c5d65756b38925d51d6e7ebbaebc78df22c8b1a9ffe3e83dcce69ebd7b5918d23cccb687a4e3ca71290eda926d594b669932c1b9b544d2ac023db24cbc66e5593ca04acbae939c1d88f7bdd77d3a4b3f74d439e47ab370ecf7244c0396b26de7c25cb0f4ec377fc2b9a8c4ebe0bebb0f0f3ac1d4bc0a19dc5b09f2e96816f0b480e62d5c5f58a3c9eb2cac503768325b649e61ff5d6fc5d9a27555e4daa8f10ebebff21ff1be15134c304f2a091cd7bfe845c763b0bb26f1a1f79788365e63b23bf89ab485581fae64c9bb84a7970ec6b344fe96fee9e1365cdf78b8fd897ecf6f7837d1da0338049bf5f9f0f8e0ff3d4dc43e68dfe0db59016f31ba5772cdfdc815ad2fa01260e047f3771a0c5320b90adebec2d92bff063dc27cced12cd874fe3518b6aac2916396734bcb72407755d7b4273ed17e095b67fbff9c6280f73f9d2728264b20e584258d73ad3a21b07c2358d8e2c919a298ff2f5b26d64bfa7dc9f5bfba366e46f171ea17d747ecb9dabfea23eb400e74c32b523c09f42e7ded3dddddb6a7a3eefb0efa05c75db6dfeb1ddfe1fdaed37edb6466cbb377cbbd3f270faeb76fbb4dd8753db6ea423cc852a5b27958dfdb0d8d4548e07b8fe9cca1cadd16fe41afc9191bb646399578cbb9ec5c1bceffbac8ce6df4cecb14263479eb71f1cdc7513076d304832e817fd0de4ab1c1c310e4f64bd2d84429fedd1d9e3c2e6a46e4e97defc3a7cd6c0e347f0be92e7b3441134633c4036c49dc77a817809c9abc598e66f9f83be738ef5c6e4d212ac30b5377ec3629ceb131e07dd85f83ec564f98bfe650d7ecc9ce0b0f7be93c70b8378108f4983fad9e284e1f69bc57b6fce9e09f18d068f928c4bffd8b2efc1fded60b72fe1bc6ef4f88af78bbff715ebca989e8b8b6d075bbecd35eee2f0808d5e7aa6c0cd49effdf43ab62fd0fe74df9ac279f550f3a006fbe38a39ae587dbb1f7f29c3aefe44f658ec211bcc79ae25d594540e9311b5013156d7407d23d76f9134cac2b4b55935532e98bc1ee7e0d883af45d5d636d09abf476b577a46fa4b536632cdb1c4bc913b99e4d3d6be53016fa74df215be16d515d99a0c0fd5af1de012d07d10fa0fd8f44e6e217b9fd641085c1d04e5ea03cce1061fbad8e43399c9d58eb71d3ed1f6bbeffe79ca591c3d7a6620dc31f6b2d695bbbc5fa8d7805b9bd5636bed6b3de7f443e93da82c5809b181bb6b877293251d1e894425edd116966c2ed432988ab33069b900c83a29c3077f9d7d77f3cc442558fa84c36a2ac89e29179bece3aa29b34257d2e67a3425d717bb429fc4e5d6b53a3e897be91938674e23f58f5b67f58f9a137cc3a42a995cc64c57eecfb6c05444cfbe3e3d7bb16af2f1f867937a810464a77d8632ec7b76a62b2b399adccfe1518c917c7875d6d401870ff1a82b3364d7655bd792d1d9632359900b8ece6b9e51fec3e4d496d1547c6c06bbf7682a7ec099cac832ad2e09a75379df2ab38b6f964564c2f7a26654b16e08ccf7d6c533cb227cc0f70fcda8b2f6fb0bdc4bea9245e0971a54e3c814e4adbbe2b85a29972bd49fb5ef7a6cadf9555bac8a2fd7e2f199165693ab4cfa2dea0b0b72e1c3c4cb435843ab86b317d7b4cf905ee0387bbf16558c6431acd377cda5dc8c71ad19558ddfdd6032d65bfb126da455becc81cbead1f046602edc78eb74fae456630f6297ab62536735c574f3eab4f4f0781d698ebdf710ee1b69358e18be26af2effd1acfd555bd881277673ecefb45d47a8eda6f9d28fdf63af162e9b3a9b05495c3bd23a020c6b1a6f9fa865903079a5d3dff2d6f896d613ffa6997210cc853747ba974126ca5f24366922fb8ec90fe4ea5767b40e7554840fb9c572719fcff15c0dbf493995bfef5417ac0c39db9a42a50f76c08ba882eef005d514852fa37a0b8f2d560c9f47f49cabccd7f2f99cdfcea4fe182363e3c1af7142149bd6deb535bfbd78227bf63ea13d47cfaa0dadd3b29af1fac7772147b7d017aa6c92e741bcd15d9d1b3e8836ee81f9d3dafc6116b302af81a370df0c54ae4e234cca7f34ccb5fb1626a3a3e754a586ec00c04fcec65f93f91ae902471a05612646fa621fc077b650f0ed67b130a02f767804df52d2f51b619bbedd77a196cf1cca3ff99af4d912d9aac4dfbcfbf77ef2acf1e33cf9c92de2dffbfb5c0a0ecb99c15ba67c4a7c6ec9533e09836bdceb5bece69bb842699f549aaba9363eed79447dda650867ac19e7db5e2ed42eee88a09fa80d03ebeb573419b57964d3f308db0b4c0db1290b9bd3ee8ada0d78c8cdbd4c1e21c4aa895cdb7efdb5a81cd0af0ee0061634dea501367a132f20f8d3cb2248e22bfa1ddaab0ecaf01c24e9afe028be137cda37e0267bfa1d92f3a7efe641be9737f950fe84bce0f816a680ebf7a62943595386cffdc0dc334fb6608f1d486dbe02c7be893c91fc520d73039e83c11273152af4fd0d2ec715730332d72615c6df14701b8364c4fe5de2f8cb7aebe73ee0f9b5df93df2f84d21ea8f932f56b6d1ed53a3bd6201bc3b237ae325bd67ae3d7acd430c158608dcd61d079825aad864b12cd914e6a8674c52a2876c37ef07cded8fd8bdc14cadb04fe56232eb6c60c7205be16f7738ffdcee26dbc6d609f5039ac9cf058d47d58399a91169f92f5f6298d6523b7ce419d96075334754607b0f5f59e89f6dcd9f8c0eeb946a32f6fb0afd471e148f34833b2f7e001b19c2687e5cb19cbaaf9211f4c210e300ffa333f778b297c43ebd152f059a0c905ede3144be24798c43782bb51d3184e50b798277b675f609c64f0159f417fd4a03b04466f3cf176519e327ba0cac642951bbdf3c457c6e75161fdf3bbcb2dd6d1952dc6129c295db67696e08af331f40afb1cef6988ce844cde457f4ca640636c872d764b9b0786f571538bfb9c87f6bb79c7331ea7503aaedacdfb8d833cbb703e04e2834167be7081f6261c8fa6fecd50b2455f915b2c9b3667580f8fa21bb03e55695d1edc8f2490e6b53f833c92d7fec6fce9de0463fdc999fefc5d2b5b4fdfcdc1cfe5403e2fe7e77a3ac7366de7fddbfb8e7f3b63f2a3d8f6367916c4bff76b856de40ce3c4c47198e2dc3fb00d1ed416446792d943338b6cebeeca95f99be6639d7d53a856755aae1eea18e272d3d903fb18e46c73fcc07eed59816c887928added4d47e203bc037d4d2021c493bf15cf54d4d7e27faaccafcd3ee4d4de77598cb0353b1736437d8eeefe69aedfe4ef4f9b2f0a558d824cb8ff0b4bc4522fe5b4d2aa8376fae0b58f6f419e42c247bc29fa526957b70866f6a2a9b10537046e226594e796e08b5dcb91f77647f901ac8613443facc4af439c19e9f9e138b70a19a8a7c3cd46a693af29bb558a2f32fd495835f3c59da419ea548f60e8e0f7c315f4675088fe2fb667a4e76f9fc7818acef9eb3ced4e48eeeb73c474df4e9ac867629761c266ab93261fcc899f45ead8fe8fdc07785ee1dd03ea0b6a1efe1d94e25c067f39c58ca1c7c02fa54bda37b3df7e341dbbd3a86dcdcac1e644ea6abc72659ee908e80b19fae04fa37e69b40f75ad02e7486593dbc37358d6f8183deb31ab47301738bae0ddb79b3ef6a727fa0b6ed80072732c0673b51cbf5b49d73fa9ef514bd27bb86925de37bd0bbf6683f15a0cd268c97b2c29f1ff019c66d26c0e71a3ea3b956d613f82cc1677cff003ee3fb87f019df8fe643d9c0fd306eca06ee572b78a6f91be669753c27fbe3ac4263bd3aa279f22afcee1d7af72672c45520adff817943fdc8880ccdaa9b2795684eeaf5f49c988e2d786007dbb7adbdaed958da01622c4c3d585bc70e39b8ccfad7c2ec8275802d026e1bfc16ea0a9f6551edf8aaa2160b9bcb2963b1a7b60fbcce919d63c1b92d2db675e3bf7d7b5d9710677db99d0c061617d7a77102e7b40c7c03ce66a0bf5cb40767f6f5e0ecd159056271fe04c92c1abb166fec7f358e85c641b1e326a680df53fa7f13e76a75eb0ffb099b37cde0859932d6efe6f9fe6554cd183cc9428b87d5e6977771c7729263ce3f9fdd2fde560ba1243978ff4d5bfff51cb3f38bf60eb42746cab81bfb81dc3d1b7330e5beabb6711565f4b466286f711b4f24feba39e669c1f9dc6027907c15b4d7767ea3903cc8669ec52c52e6baef3631d42646ddc483da5834bda7376ebcc9e41af533ccc75d3ba79b17449f9305ca1cd934a9ad649746f6161fc8ae4bd9f8653b2ef20d7cc85c7d955d46cadcfb418652dfa904cffe666c9a7d162cf6b1333d27911467be53cdf87bc617df180d0e8a9d05b3e6de3baeb743f7a53fc813b99fcbcd8736fa9b64c93f93de5323d9c1fc2dfb17f7523b4747f2c9b6d964db75a6638bffb6447c2e6cc62fbb6ddd0ba95b04197e6c5251f84f72643e29af09d457e0f3cc0f679396879dafa928fce41bf04091ee0d92e7180cb1f7193d5030cf01fb3fdb3af6edd539a4cb53e19ba2171e9f38d62966106a4f4d6af893c8dd0b81347cd526865babe55b6e79b53a6795cef981f8732ec0e1d3a92d8173451f0773f71ae6afa07d805cfbcfc51e9d0d4418177b593ff12a031713cf0f0dbea7ee39aa8747da776396339ee796ce99e74b3c8f34c71dc6bc2718a07e5a72a48cbbe7be0e87558bb9d8725775af013752f34e9edb1de6fd1a3c3af33e417b0fdcffbd972cf2bc0fdf47e7033beb8eddb72159e839f5d3734e94c309de633ec91759db5856e5675995e4fb677bb63db273dde4cae7966c0cd4ee38bde0476f9ef59227bd7d7e97dfec99bfbb53ebd4c68c79ccab2edff72bbe95ee75b47fa2715b31e3c6e149d9d2a8c59fc079e8c87e43fbd00ee3e8efce41ddf2f8e88bbdfc8563c3a77e8cf0dfc021e83fc40fe012c0b9ab423080fdfb1a42fea445b030be132bb71fa122233d5eef2956c4c23ea1bdc292b24ba85459f7fa9e8ddd5b148fa2127d29bbaa339253d9bd4e7d82b3eefd7c7e7ee75d5d4ead425f8467cda8ce5b6b74d5179eec4ac33230c55d905496b6b8980747bc070aa9f99f7f94911315c1b12882bac2766f8a63919df7bc19ae5ad29cf0ee77e6402da90facfbdd7ea0969dbadaeebbc5f02434183bc1430c5ca312838770e9e43697418df692f2be3dd9b7afc5fdec1ba363e42e6b8c3f33bf3903fbe61a551c881711f05ff07e2806b570e9e4e83ed0b330c69d7dd3eab2f41c39881c39021f02c5039854999eafc5f0b4847cab68817d969e34963f0742e9e763f9536abe7ff324197237b6eea569d72699555f46750e1ee2317870fd91da36b4387b384f71d4f8be884f14fb371d763f5adf5abcbd1e7c3ea81952afae28237d738c66647de6f3d274ec4b20656fbeb3b7835c8c43e0cdc578f78d9fa08bddb9f8e3b3d69e0b1cbd180f7b46f7a41db51bca8329be7f917852507f20fbe7aa391960f544f3cbcd35597c012f07dce44edf3463d487ddb9f61df176708bcc9fdbd7c0993f0e929d620cee7de313d90237d41f7e3f7b351e22d4af7572f66fbcbdd970a763bcbdbcf30c627775647114d4dfc5a754ddb4c5c74d332a24e77950f3b9dabe346e71ede0bcecdf18d98cb7a6780cea3efcbc99b499a4c566b0bec16f00bf6d0def42cfe2fbb3bc515c1f7a0e27b9702c8e25cee76fb143a71d592db9782e17c354c16eecce0bcfd3d4fad00f06c808e087f7fe6e8273a155232e5405e7fabdd0f94374de01cef9c53db15b9c98f20079e6cdfb6fdae222a3bd04adef6eae7d0473c0e56acaa43e97e5812a96899fe999fc85f6336fb0279813a338988959e0c8c5676ea7a663d77e8f8c7e2daa635083bec883bad56f306768fe20a64be60ffd6b650078c778dca8f82fe7f33b0e7bb11767d2068d8f3484da3f2fa732182339adffd33e6e1dab0c94f13954c685ae54d02fcda81e58eeab4c33d2b7e67b5656716c781e3c3adc8f83a5186451112931cb01ffcff37dbd7cf2a5298de50ea7fc11e3555553cfa94a2f9f1f0f7565f6bc370b5d3b0b07fb9de76468bfb09eee9146b7a8aea6cfd7a32c9ad1b9dbb7edb6005ba6d4e7f2adcb596938e2c577f6059a3bf0cf0e9645b4484b4b796abf1d4a76bdc39ce8459047ecb86c9eda228c80e32260b93067f3a7f79b8a3c60df7bc89fdebbf4958a6f5b8ef74af3b98d8f83228b81b2f70f8e5dfa936a163c448a8387f499193c64337874b17884d270c6746f5f070f5aa355dca0fe74e6dfb6f6fea64dd2d276c6f2cab1846deadfb6e2fed6c5a16ad6f11ceebfec7399aff39b2d6f1a8b45305ba3fb684ceddb95c60c96403aa267054be1ae0fe97533e7ae0fe8f59dc35d97e8f5037fbfc8d67a464a5c0783f07b8fb9d7cf9ef1fd583d9ef95aec9ce8ace75adcef8d99b6cf9fa3b309bdfecd5cff60ae87edf5d988b9ee31d7e7cc758ba9492d6eff49fb0d65dc93df233a600b1ad59cda503c6e62c4eabdbedffd437ef7cc63e274757c9373b30c1ee333923d47b2237d26deb6cee5a6cde59b3e8b6e486719ce98e678a17718c180dde77fa7789fcf5afe23535c07758b87663ae377b395ed2db677c505fa5d07bf0ee412e32b173716afdb70c6c5e700d6c29dd887806fc9f05e085b2bbb6d84f8a64dd3913e89f9f505fbeff7bb6f5642930f34c538988d9d0af520c2bbafc8efc151bc6a93d95d73c501d87d46cc608743ee7ba1cfb21bc5e7a29c19c0a54564a0c123b7b2db32f1608c612cf159ecec1b253ab39507697c76a571b9847d61cff0c15ede207eee8a322f0759af1cacccdf83d5231456e677bd3284f3ca28cfda74765f3f5683f574365c1d6717dfb808fa6376d78cf13948c6f2cafc5d7c4d7f179a515cf9b9b8dcd8fc2f1fd723b1d85cb770b12a581c77b055163b8a3f25603e4ef015622c3f8c9ff7d028f604d8e2fb20c804c8ef75a45144b8f459db85d6857ac1437c6fce304d9d52b56f74e5acc54870f2711f2e6b7630be8b4fb1b86dade2b6b5e7cdfc71f690929e1b9e80c54e7694717b769a5e901deb05755ad2788b9ec9cdb9067da6b60dc5198c781cf2ebc1a0b80558261b397180b780e6256550e38fcf2302b54fa9edbd77e3fbc125f95dc0e7608da349f6d3f75c3e36c112c618f8337b182a19cdfd072e88ed628773ce7f7c5e53df0ab696d6c1daffb9ad6941fd3e3fb6c3ddcb18e39bc8c389d7a3619e523d8ae420d3e7646ed97a7eccd94a6591ab5dd08c96af03be27dc47743e096663f6b9f828688d02f6ed0f658c31368a09be22c391d49cadfaea8d6fedfc67b9362f6e2aa90554cd594c386bee24ee87f32b999a3f8603255f1ed9b50df9b5c2d7e27e46b28fc6646b72df03be356016e0f3eb9b6f5437efb4cec2939ff93364d7acde908c007600c5d66bf7092da8339ed3d69edf7acf258fdf43cd48df8d7c8c646e1fd4a3d4773fb220df6741be2e7c77257f4acf73bd3902a72637fe9bd3ae0c195f158dfb7cb924a77986e71b7390ec6436070f9d895b0c445c0b49744971309f6acc63342f9a7bc9748a0565cf45dfb5b3ad7b017e421a33f48dd1a53d97e33387ae2ce350b2f791638b3e13c7f400afab78c77993d9d57f347a2bf3733ff306fb071d6bfe8c631754ff62f9e7dba42f76d788e05d59ae9d213d43f33ea209c504a2ed11dfbd7cfe00cc45779f6d72ebcafedd697ba6e7ccdf46f53800563ed4dcd1cfa5eff8b9efac85f081eeb7733fb78fd1622d7764bd6c64bdd1e7e88c7de9594f45a62fd66238f8c882d33a436bc8cfb3139aff48999f906c84ca7c142872ec4f191c4aa54a3c67fd4f1317ced1ba6b6a58317fd754e4310916eb82dddbba3aa233ae45ab9329df0099d7497a6de7f5d2e4cc07475968e5f18ce6e38acf8743dc9e49756dbe9fc03e023ae9e08c4e48dff1be8bb6ad0c6f0d9b8fcfec1fc37c794272332c7d232d993cfbebabbef1730d58384436a8ecefe8180a48e6e867cdfc53bf3a7e1ea2a7f9985b8afad291d50b5d9b24df50ecb4b112d1f90d3873733bd54fa057809b8d9b4bd7eadaa471338f533126ed7cf70cd207d7a27d10691f8285186f5dab3cb472cfcc37c50762b09ca69d3d1bd78d331cde7739e8ae4d7c4fc9f5d114c52eefe5d699159fd25da6ed2536f0038d05bf9657f26a52e574fff3a7f41cf99bad816aed00c27f83e7e35b0ea625e54e3a47a678d6f3673dad992d765a0418064ffbfbdb61d2b3671ad52372d748d61fbe4531d98bb37e7a5ef7fa621fe3eff6b15f5777cfcdca409aa79bfcfbdae88149756cfc18e8debcd507ba027348e3c4efcd5a707fffd2949d1c4e4549573c39acd3b7702ade1bb94d2a719b430dcc11c910e674b2db35e6fe46dfddb7ee6fba167afbcfd9e2f5ffdffa5de84a566a0bab3c4c46cf6da8d377df2cc85a44364835da3adfed997a0136a3b47586e527e6106aced82b13e2ca1ce709c3bd760e4c71a49f3ee24fa7ba79ce0ee9d0c7d6112816bba42f566564a42c261dfa9ee55fc131b5e9ea2d304674afb43c2794757377df9861ce5f8fc6ebe38ec4107fdf01638bda2e462cbee6448b2f5b3765c636fd1518b4e6c32bc3ba1235b3b86846d6e2f00d56f48cf3d01756f18cf1f7bbdee45981ecc22f576cd6da61326ae7adc658dd741fb595f9e96b2a3c5649d5d65e2d2cf9d0f6f1816b31e95ebb921d298e36a7a6feeacce90cacf7cf5be79be8b56cfca57c231ba164398199f73cebb8bab5d10fadce9423a283f48545d740a92b29bf6f38333932aaa2dd2b993d8e625a3b8d6d79df4a9e1c3e8a661dfa938aea7d137cd0a6983fbdc3fd5d7ace1d6ac3fa6d74f1a8436d7c13cba1cf7a7430765262a79494e30d63d535635d4693761e9ece168e5550be98d5f4226cd13b1b8ed9dd3f5add7286fbf64570811f5cc56b01fb6af9bdcb19132e04ee1eea3fa9b7ceb844675e7dc2c9348b0d5ff7c70bd20aea28cd4b8d75c6fd1cd48037847de84a2a3b93918163618d0f77c273cd54e703daeb727ba02e548ad57a855a616354fb8effe031c5fc82e778183675a59a32948324ae751cfb7eb2a93523fd154d0b1cbbc0385765df7d483f612e76ebdaa38b2147fac97ee665eb4aeb360227953fa5ec613ab288ce49fe338e445343a6129baa27eea61c9c65162669becc0ac01fc1b5c442e93ba30af6787b9d45736a8f73795ed4aff3f3b38f34ee21a491f15de8ca580e95f41a0ed059c9be8692f5ae29633950d2737814179111638caa3a45ff0a4637337e01746ef7ce41cde8a98778d5d0190063d814fa3c13511bc3249375f41eb0236dc3773f4acf61ce48cfb95605e172eb89adf8053adf36715f632f6a13c0bdbc23bdd4ec5b66790e1e223a53d45b2b12b5855aa233ac06ff52a8fdde9ab332a847cdbeb97577cd3ac59cfb637e4d2569194a609ba2e7f880d5b3003ce32c386159d9e772ed4936c551edabd1fcabb90ae85c2dd4e7b95aa83057019eabab0e639ce2dc0f640b3c845a6f79e4914cd7ecbebf7521fe5968e4778e6b61bc4c57ec60fc65ec7a2c83ba2a7465c6e616beda27fb62d634d681b1a8a511d217749c7ef93f7f7f0e13fcee4d32e771f4dd6aacbadd7ad5ec612decdab71b2eca46ef7c2dee67d5f26b0d9f2dc65f93b91226f14d57d2a2731e3db17a9eea6415c9cc433ca2b160f88c495c9badd1e8e58f2d583ff5c1948bad23179a02d8b2b7ad23deb4c5aed84af16d9373b1ed12e9515ab7a8e2cf82dee6bc614cb03a2db6031f7cb1419dbe79d218fc3858ffeece415215d8f7d4c627c91a94593e4c3c6f805f877daffcf55fc0ab8ff1bac979a1f52f8447f17240efe0e2abf83cf85ae645b48ef265f24dcfcced6f8df4bfc8df106f684fff0f7336e48391961d7f6cd2ca049c6b32665cca9735dc80a3dacaa02d6565305f669e6417516eefc25cbe87b59763ceed46f6dd835395566e1f7d27937c9bf8c3718ed78fefb2ad91b9b3fcb92b611ce580626f2895e13bebece0fa19f1c9e7cbd3bfbaff4c308a053a47d41f1938e9b5ddaf9659a854b147f74c2386f9a7e38465ad9b57d077e61f77f30ade91be86f142368d32a6cfecb509e0fbdccec387783e1815f6d9b53c1b4feb67532f6fa4fe9de3863e707edff457532708fe8c66fd163fad5fee372e5ea307e092c4364f905437cc35f5873e4d5eea5cd047be640b7bc5aed19cd1dfec4fcb5b40e507f04e1a3bab407bed9fdea919f75767b76f82a336f3dd259265a24f6c25cce50b9699f5f8eb659b3f6ea416f8eab91f48ff0b344f8ee2f37f2deeafb932eb916d66eb8f7d6a7f3dadaf99788b706dfc4fbf7f5a6fc4961b7f4dd0dc8effbcb6c14678f56e9081ee9a5a0703fb1a4dbe8bd773f971d3337b630973656fcb2fdab8cb97f9f8a7b5dbbe6701b95137ba6697897f4167456ab358b97d0f94f991fa8534658ce415af3b03db7b9a51e5d8ae1b223b0070cae9f3d05eff746e327ed0519d31db2b59daf409e256e42c35dfc7fee02eaf27944b272eb6d6bc0ef3f908edf13b77597b6ecad5ecef9db49323d6fadc90edae9f96990fd89c2fcf4380a7d38f5341fd84c3ab2be1fa687a3ede3add6bdf15e18e065f486fac7f9a16541f01af23bbefb9e24f3949c21ae708357a524dd47f7c267790d9cff36583212f0ab8ff80b9f972ff403a1370c3e1ded117e5d5b7723ba79c83f0ddf18cb90a3bb52034161a26e48c37009cbef381602dd1eb5bf7226b46ebc3f04d39f59d2a8b14eb1be742168223c9d1d6b165cde8b4c31997d104fb30d4d35a08f3ecead7fc3cf6f3eb7d0b68dc482e2933677df7a67752a7ff8a6ffe1f2e3e3759827ef7dc65e6196accd444f5cfbf714f1c89da891f047b651f411d568b63c2e56633bceed43f2668e6b895d7455444ca37e664a93fded5e4d262c6c0b5189dbdff2790b2ab36514b75a2165abd94d56321e8133579e2e296707c9bdbab2731b3be1a0cf01a63b4cf1fd18cacdf69cb8f1e1ec7e730c1bea03df163a1b3783419959ebb66af159bd38ec656e7d88f82ce9d4ff795c1d3f388af25e17d809b051f070e489d3a9eb379f654b7d38db5bbeabbe6eea8ed03b998a19425018ee5f06b8eb7171b5c1cc247876df1991887ccd800b730637fa379da4ad635946c415be0bf918c6d72e61a70bd7c034e2cc45b4eebc2cb2b886d30bce97cbfeb9ef89abd2f292ead8ed690620fb7e6ef12ce63ceb26c7d70f7b223fb85d6dac16dcde9645404f93efb9c8ab5ae58bf987819c80787df648ed139a6a6efd5cceabaad6381d3ff70964532a1bea17eb33ed0ad09584b6fc1896b97a8717d44fadc6fb1f9275c3c0c7249baef43f62d1f57bb73b6694f5e143a574a380e8ff9f335643fd81f258eaf8d2e80698271c9e85841dc5d33b10e0d6abca69ebeefe4ec73feb1e79c6bc8338826a38c6224600c1a01f851705de7f80cfe03fc3e8cf3bd58e1f73a9eccee9ffa426d7830b70ef80adeb4495c6fad35ea17c9d3af30874bc347f7f120be87e77efff1f9bceef16aeeacd5c1e0837ca0f1d774d762fb0d80fb823d2f90f3f9bc403ade7046795063ae98a7eb3dbf257522308e846333c69c35b8e605303914ec43ded6dfe7682a6e8209f863ae01e077630e09b68fd104c610d996671c03c567d630b7af5f8b2a70d19980e6afc0b9b893d7a7788c2c56c5eb7109db717960ee0b57ba231d86ceff808f03bfff43fb9ebfefc46a27bc2f9cd98b597b56004caffedc94a6be02b5d152ee6764cbe0ba13dc4ecc59c08d09e107e8f5b108ac8f85e3d15aecaecbc99edaff4d7cca77da1c4d4d19ca3be97e46eb187c49adfea56ba5a4f5bbddf6f947718e6d64823b8b79cdd9f57ca579a191c2bc73b193cd1cbdf3a73eef65cca390624ccb850fb9fcedde85f48d0cd863cdba43b63ac1b57c1a3f89e642893fed5f775edfc03e4ff3a540beb6c4aea07c373fc8c0f5a50c284f35a6705ea1584c0191312417a00bcc0e961cff2cd6debdb23c4741324c970bda1eca79f491f966d18e4132fac7778117eab695a8ce44fa73946da566ed5159a0f51fb5efc07abc6966c1e9683a2ee45dc2eb77ad98754d318601f3687830e22bf0fae4565f8d3037563e870b45318a2ec4c790c95d7e1c8e0b61d2c1b0c536ed83d89bdcb93f3c556315f50d6217dc3c33dc4a1f581ea10e28caa209ee0796c97ba22617780fc1b3e8f5bd8409e37b71910c3635d5b59eecd286238ed6572b76c67208419c07eab49bbdba86fdca94af9b934af036689baa9a72a320d9f14d39c7eba9aa9bbd8dd1d7ba322e433c87c5e6b4c2eb17fce469ef7c7bb0e75aa47673d7c65e5d95d87cc337fabcaf45457cabe87959b3f6c1670d6b5fe578045e8f33c607237a00d67d3441fbe98feb5ed29471e91995a82b77927b8aeb91c226976545638cf9d69995d1518c91dd189822b1a11bd944674969bb60e39c1ec439fd84da8a23695bc797ade3953ee55d310bf4376b67c3fb3f4df18edae62795e80cfc08e37432f17b531c696e9b5fe5431cc79383267fe082394ba85cc1f8a79c5d8acebef81d69e99962a12d523416127b56f51ef263eba66f5ecdd8c92ee08e8e74f43e38bfc712d89c460fb796323c0775956b46f5e8b41fc932e4d96c061e87571a01d624e3cf388a296a67645f24d7a84a8d724f201b2ba9627de1154c4ee6713b58c9feb138326705d94faae3d6f1d81ceac79703f39d6f5d15b7d1bcf4cd1f93ab24c887499c036f05332f1ae6ac60f5f185cf7942f330a267fe763d38025e0f03ef2d30f07ad095997c30e28baeccca2861f2d59cd5aff0215e36f98a9115f102f269a46c9d5abeccbd2b3a87ed9df9f130f93ebfc4b058403d75a6b94281e687b7bf04f41d5a1765d8d42dac64d0cd94f3e455ed9fb2eaf303546bf37741b842a87c9d83a9786ce2eec019d217a3b7701d779b579f6f9d665d4a5bd742eb5144ebf2d3a4eb369403928ba74d52e68cebe5cb647ed2f3fd2dc8adf7c028ffe9dc5b7c0e3c7aeefc3f81393e7f9aa2a42f3c8a9dfd067f33e7503c36aa1c4ee29bbef04abf1e499863bf7a74fa2b7b49c6e45da1b6c4d216e955922ff3057c4a1e952524cf49579622fc9e42871c9538d1175619b0b98d8ef7cb7b88c92667f58a98a0f5ea2568bcb09ef5eb511a4823ce2f00eb0ce98307dfee28c92856734c7fb791847fb4ba3a6d9d3bc9a7f92eb875fbc0eb961b0fbc764558bb205f02bb76f3adb492fd4791736bb746ba3764d7ee91ac5d89ac5d4933ff55bbcedac22b83babae84a48f92ccbb04e0b9cdbcec641c2aece9400570630bcdaf1f16b58bfbf02b338e173625a4648a72a611919d585f3ff1de5e3d609dffc84f53d84684f38315c71df30d7093ab32de79eb33e6b5cfd0e9777f10d32a15805d4e0286bc6fee1f328707cf94e6ddcc7d6f8ab5850becc53ce46647d0d07acbbde43c8df4ad1df387655931a86c5326bb8d39595fc77316390bfa3e6367650f1d20ecaadb74f8a61eda4e41cb392c323e3977b94247f6885752e5a8b357b665a619c7cfadc69f886d6c881e28799821ce456f189f31b1e8c7c16fa24aed13932ac8103e0c97eea9e2d7d53acdbfc385ba6f9644d4dd014f0291f7a4eb19170dc8ef23761dea80b9e4f665fd60cc072bf698b55d9ce41e7cc06dfa565c89fd7b2adabb2798732c65d5db57a09b8dbd0faad1e5b97d9830662c1db92d8ef82cee0fd72c09cfd209f0dd60a7f6e532c99f8604aec8349a90f86dccf8c73d70703fb31e783a97505ad897b770e4ad6368c70cc14cffd62cfcad483ca1463ebd51b52f711b6679b07898708804f8fe32180cbc0e68790586c7c7046599866573f1f035f58cff59edff6f863b04c1481fb416505e779a17d06e690f1e1d669497c6235e40d3667bad1f86b7e89fe24a7e4795d9978f6150f206f6313a035dbfa88cabee73318aaa206fc7fafcf6207f7e5598c3d23145b434d34292d99f354be3c7af84c44fc447f189bae7f12ad8f6293c4579a4b84eeb51424e3ac3cf7ca7149648b9e710b8de5eac3ed280f687cf03d92dfb927309eee392e131fc764906c2f98da41a4ab93f983d19b19ce9ba67e80df15c5425a4d0b1a73cb5a3c928a8dbf892b58affb221c7c949e9b017eedd7025d03fcf4f1d764c9e431ed20aec2dafe201fae48f8c2d6c5d6920ba821352aeb608adb83f11daf8cb4dc4929d48ebbe87f0667652765b23eff28389c95745d7c19d5e66072b58fd3832b70f19b9d9336bc9cb06f59eb17f66508b1b257f184435b4fd7f85842697c36f3147c5fe8b3a5a4505f1242dd2af407c93e8f91def04fff1e357360cedea2a97086d806c38bc8f2bea067a0710f31feac6da5e99be9907304f8179a9c71760f11b616e060006ec506e782a267dd3d177258317ecc695790b97c84101bb70da33d5363b950e627e02032323950a07f18ab612e17cff5d8cb429b64efcd7d4a75d3e61f05c13ad91cba713752578ae6cacc53068f276de2abe83b57e2be2b83a3b8867c1b85ca6dfa1ed17a9f247e0475bc436b93604d7c1d8ceada8df9edc9bb2d8579361e27a83fc1bf4b01bfc2c279737036371c5e46570b5eee4c2277cc7945d83a4c4d92bba3f52414b398da1e2dfefe73ee5a271f7ad8e12419ca019c31e3910f1c07760ab8dfc9ee17c6bb1c628e677c2de6ae198caf6db1275c921fd03e8c9b8edb876c5f06b3816f23f11386b92df9cebc3407cbd47749ec11dd8fb941f81854fdeabd31e3d726b6c3247b6f3fb7ba399a54428b4fb37bc7f10e7466b7e18c43e6b3c9d9277c326c9cacb19f36dd5a4e77d7ec57c045dee876fccc2e5e208e4f3635b96cacb2ddf79867ea5013d6beff094f9cabcf2b9a9a37fafbcfc112e9845b90efb3f05864fa02db449bd35e26359dcac1143d3d23f9a154c667a0cf6364f7faae5adace5fe5b84f0ea670d7e77e41e3a406e5439a54ee819ebb17f3626bcc2a2ebf76b2079dd09b1b709c75f351175caec12b1e14c657171c85fb461a8ea349e343ca97f970ec333ea5a0e52fa13c2584a3e4077e121e5fe0294798e4c44c0ec87e43e3e2ee4ae0a87fcac5a77192a71ad426afb427475f5e4d2ae5c0e19eb1dc31cc79b22fff7f90c59b3c8ad11e04f50480a3d0ff9ead294e805701780cf6377c4e7ad5a67bac4d55719bbff0d53c30e6dec128e5950172a11e987e76eb7389fc74fab9e4dafde546e82c95bd6a13693facf73dbb874cc58b67540213c751b973ad1517a4b6a6dce5291a6fda5ea72bcf481efb739bc0a7f52a6f46076c058acde15e9ee6a9c172e66a91d96b3877adc1e9c5e346f15fb9baf44d274e8e64c396d25f769ef6d5fba0be669b2c2ab6765434354668cef83e78d0077e2daa07a3c53241cf677d241b89c9b37620e7fd45bf2baaf333662e9a7dbfada98f8aade8173d7be29b2dd17ae64b67dfc85cc87d9dc505da7b5b4c06c66763f4e59cadaad5242d501f3ea5e7f769f8797d6de1e7308df95a2da3c2f5f264fe8c4edd96be20f38c7e47f2153b758be55f8c079a6fd9370bd477f740eb781dbbb5c9e751c75e9b3fed2b3fe4ccfd8a26e82c53f0792333d89b8a0673c68e0b0ddb6802ed4bc7f77fedd71d33d01d418273a0ac1c78956adfd91bbeb3173dc9aed15cd21a0543817a98ba530b5d20bb86a941e7e482f2c770756503c25b08dcd9204b0d76021d43745e26757de297ab76eafac6f201e785d0ba6b99896bb675c575f61e3c44faec12e704b135574d2db6b8759abdf5b175c680bf43fd6761dd57d787cf85dbd9b2a9cdf75fd421f7febebf0ef9d15b8fabccb16e38160f3d279f932af39c280bb365e62feca3efaaf09eceb5d277e627df5d92fea2dfdbb12f35d8f33c5681c9e0074cc7e7c814cbade3950753ac35b3281bffee54cc7565f57f901e7a51ebe61c5ed642ce4b4d59211b046367b4b1e612eabea6624965a11f9f83c31329dbfa257b1a48a3fce084681c7aea8cab989c17d0f7f4331d9f46de37a7d5b57b4d57b83163c699d603f4d43b2babb2bf1d2992c3761e723b8d9c7516621bf757f7d99b1c6a9498794fdfc307fa3d70d2c811d8e1168339b0ca9727c061b969dc7ccac5d655df68dc65eb5aa5e9aae8d97d671fe07832f399ac9abfc18ee9d9cf6a749dd5c15b079dcf47acde9503c845aae2708074ca28f5dd656b33b9cb464f3a839e77400e586b3bbbfc3e7920582994d302f64d5d416714522fd2890505bd39cfab6a857118718ee97c091831211a8b666ec4acc5834567b80c9ddd054ffac635b0ad1e2a0fdd735aef59725c7c4ac3271c874dab17e5a026180b601fa6b26fc485beb0ae1ee156d28c4a6cf022160d3e9888f55efa8ee6f660fcc773cbc688045edf43ae7577de81f3f469fcc81e7968fcbea3e0605475671e338f9f47b0e1367fac05fc20fc4262a64dd257fd103a35b6e023d4b09fa8a2b8345d5c1c5d6965aec17479291bc5fe6054ddfd93eadbeccb48597991a37c76f5f2ecea4f62c215e803679b3ebff4cd55e9db6207176cf62267d4923f0780db90e9cabaf61d78bf007c89837d1d0cd2b720a952df45e755b58351c3d6fbefc0beec62b46c6ba4332e5cae7483cf84faf08457b4ebc9c16e6af5914dc3f952baf76aa62c10bdd1e46afb8d7d65bd81ef38a1b6c2b0792ef8bff167d04f7cdeb8986946c5e3f028a398c7ab045bea59967899ad3dbe5e0fdb110f22bb602bf2b526be51ddfaec47349f2b17cf6794cb853ff97de7fccbae8a739da745ddc5f07ad1060faf1f55a6cf83f8c851c63ae6a436b837f4fb0d8f51c39c3566c8e6eb5957981f7cebcc90bc3fa2c5f2f669b4b86e61e2e57b29457b4baca3f5b258b1f102ecd35aec6392e75d40adb3fd9f8dd901fbbbb9fc71ef09ef09cdd7b7b832bd723da97a725fe7f1934daec8b136b5aa75721774e5393f3572664fd89981343baf27f7baeffe4079baff75eddb744cf55a1961bccb0e4e2bc9f19a64325d47aa290adb1aeaa3cf5047c960abfbcfbf67cfec14a7ea8dca4307a72aeec3790c9a9a61f1ba9570deb327cd056d7ec95ca3e1b4b979c6b7a04fd532503a7a0ff2dfd2278c504f9a9d35f7d2c16d7a1e6b434acf5a9f1fc6be64fcfad9d1f523b84f6b7f1f7771ad1c253d6be6056a29fb9ec1da013deba2a74e4ae5eaa49689bf3840ddea3258d942b11d2c83d55c78030ed4e7fd2b40fd46edeec8f8bd9571821b8acf80efd1b4c1f985bd9be66f4653a61eacc73ee9c9fdacf97c67bca6a349553b8f79a49972ed3c3ea24dd2c85cdf736547b2ca682e947e27167068f7b1b6cec75ade501f0c657cde98dfff273c8e479b69513fe3a85a6764bb60fc53c05a1d6c17ea2fc0d04dee5cfe1583cd6df3380e97cedf2fc74d084fd9bb4fe266e8fd5f8e5f04f9bc0c16d9bbed70180a727812e56edc23ca7bfafa125fe2727b814dd7c59be83b3fde98b3e2b539b7b4b60ab16ff8f34cbf6f0b631482ffbce76cbfc53803cdb93d789ccfd466dd3a29c5316bfc5c410d6703067f07380b3a586515e45cd87946798b911c16cbc42ff0f5b4089d14d9ad65d07b26172707a37a75f69c1ccc0b9c39498c04738bf5608b71fcf04e36fec2f716bd3864ac7fd3c0b5d22f6dc5242d18ace0b8f75e62f7e15ca61970bec3d9e1f96c2f1f607fe4e6528e8c6a1d26b1a82bb376cf3d8947afe58b92092e471b2756c4788b74ab3367300e8adbc1a84474ae6e7158ce29bdd6606326fb425fd80fdfa2365673cf32703f329803d7cf0c657ef5952a6befafe24f47165bdbacf91df04534f7d9ad7f63a9a46584ce96b99db7df937372f3dc7de69dec13c1bd657fd3e077b2f7fa39ec8369f77ec21f57e0b5744e0fae507e3a33f913b026186cd05c26cf627120fd985c6b704e03093fb7b59d33724f7609151b642aca6dd5734669f00abb86f137373e7667f82b480003e0e8b9bbb323d991d6f211c6da7457ae92aaf48c51727046a9d6d49040acf6aab902b4cb54e6a3606033b67d170f88cd636d9e8b6d2976de7a7e47f756d8b3993df2e55e85e3e07fde5348db19fdd6c363dd62acfcf07ea8e9d84a84e37952d57def0d93118bc12a433b8d38835c1ce2eff81c34be808633eee0aeefb0fe5a5ec88e3fa49571fff55952f81767c9bef6c359b25953c7979852df3e9fe7917d19159c6bfac6a499038ab9e4ccb09c2b761239910379a86671f4b08c18bebbbe0712eab7faf699a7f4dedc8758d49ededf9d4786c7c78e81e71c9dffb2f20e3866ce08d9528c0d93c55ad76668ec24bb607dac1b91fffbb5ddb7af3f5dc023ff71ff0f60ffaf88dd9696e149e8d1274f63dff0327bd4ce388a02d8570c06f9d6dda37e968ee4c79a12c77abe2c829c9e05908e207e04c58ed0da715d51d695e82f757b917a5ddddee836aaa38bd8fb49b79fd671bf6e2f448fd511a78fb8abdb8d9cd1edf928e674fb2b6e89595168f3794175d8ff3599b3c87b8caa06599b0be0f7437630333fb1677cf7da9ec17f697b12ae82fce08cd01e33faeccaac33c2fce0582f16fa6249d6f9bef69cd1e3806b4c9fb83569dccfc8d3b3857d7872342fef2eaf2305d44f7d7e493d233ebfd84702f43f92f72013e52fa34a3c5344f31433b847cd1ec8f0c3bcf9ca8c5c7b924deaf779f3884e311cf1eee35883e45b711ce4fbd2378b0799e795e766b7c86dfc456f11f91d60323d8a7b230fd4d79f1505a30fafe47baa6f3bfaa399e7c3c188f7072393fbec0d4f9a3ddb1ba7e2a5bdd183e3466586bc07e20557a40b74658c745ec5ce8fe7ccce9ac2af0fbadf7674d393ae62fd43d194fa877698cf02f331b13c105d99bd7eb902d23799bed8237d53133bc00af3f9359432c2afdce58fa531cb664d01e7c56a2eb07532480e2b17e95165763ebcf01d38835de9db50cf107d211d20cd680c6fe8d17c82991d3fe5c72897a773bf29ddcf6be2c3a239ceab09c446bb35efc97e66aff6f67ebe9fa86590907c756339db5bd5dc9ed93335a9ae4f3865ca90cbc57dc2926078117ca3e337ade3ace30bc5e7abd6af896bc3795fe755031c75cc07c0f9603bf7f1b165b9f585b5bc369d5c7deb8dc10187fe77732154e24b5e19187b2240e360137e6765788d1479150ca22c4c212ff3acb1f7613ee3e77bcc464649dd0857572f47937b8ce68ce47c4a4cbd26d726b5e19ba6b65a84b1d206d5785577db6b353600a93be372c4b7eeae54cddfc5a6c1245ebd3139a10d4ee7aac3bd6349b3265776efccda75e1c631e61864f61f97d4a55b746e5252433b3b47537108b823381e68b6b5098041b8a57e22c6ff9a7570292e2bf377bd36fc2e3e524dd70ef1a79dd1faf28df4fd20cdd067f0dde16bb0de503b84967f02f2030976b5f5ed3fe127cfeeaba395fb1dfce45552cd3d5388574635f04c31eb60e45a245604758c1c2707537be21b5ebe36309706cea3f41e645de11a81e38cfdfb5d73a07696ced53bf4897fef94bc17f84fc01f26cdda7c447346e6c78e9971c66d35487f906c9aad9d476a38e0776c5bbf16f7e4a0d8b13f51290f47e2e572fa69347fc73e9c533a788b146f03d76961391aecde3587ea3ac0732173d49115eccf27edbde31c59a759f3845785c9312298b33dd85cbf303f4f9b134be2672f72d76603a833348b06c786c678aca64ea012b6e6ef77df24f544d36fe2b7416bdeb6486d0ec35783d626998f649c92bcdb82f1f9a03d96ca6bd633160dc6f697bbbbe8344f21d92594b306f279139a13aca6db1ae6067256b5fa82b9623acffd72e3b8c59cc66be253992139faf50979fb3c4608e8f7795bf344ebfd5b99fbe0f4898bfde6a85f83eede477253775e6f6e2ac6a9d231870cbf4fcee6318fd3d0e4fdb6b9628ef5cb06ec08ba77629c010bfb8a1b2e2012afece4f9b3b1cceaa6b917c03b0bc9d997f341a2730113cf011f3ae458aab2e3a41c76095c57b8dccd8d678ecf0c7e36e89aad392b77248e43eaebcb36e739055ca06efee4135704c45ad81c6b4fd64dab5ad755af6f713b156faff97c84bb66547e13d7abd36eae7ffc222796cdb16b6277d43679114b6731cde2af4565069338c67810d82e44f2ee3df16dad59dfec95e010c6616e8fbf160cae2be449f09c5bdb1a7058a7806583f55fd962093439bba4ae2c6deacaa209fc5f323a1af2d0a96c6d1dabd820bd86318aab35e088e21a39cfa856743c3d0363161c8cb46072bf63e025c6725d068f0a6c8be021c63dfab584bcff560f5e09e6cf2554e635d27fc1b150c2243d632c43e02b833eb41879e92f87ca1cc6f714ba71cf957147e364a1f960318efe661c785baeea9397e7189563e5cbd447fa97d5e9043ff6553f1adea94a57c6e38391fe7a952fdc2beb8c9c034f6c9a716dedd6adecdbf8695bb301759625e3abe73001ae34679bda04a40f18bf85e4b174b80faad5b1cb079875c6b0e58d099cf13948d25f0765fce6e71c3f5b33c60774b6077c8e149dcb31b6590dfe1d9fc5fcd595145f6ffa628fbfd0f87671cb403eaa0f26f67f23f15e9001c289d3cd7befe56e62fbbe3c0a97b5391ba07344cf1c8eb7ce9862683eeb34f377a1cf9b71ba3d61fd394f7a1ee9ac4b50c757cd68c753357fbf4712d2d359539b82f724640f3363c7d68bb058e06dde7946742c8bc926377e328ed38ea909e065a1d68cea84f7198c8d1ce13ded4af78af028c4abe985e43172f9b68d4de2c17a6171a72b11ce17dd75f6b8c4b4c676eb929c5b05b8765a5ebfc54a26befe9613da2cfbf18a162b762d3cb683951c48e919b8661e4426d1f35ec9f0a4ad1f0f923f61f1ae4aff28bccc67f006d5f83566eb0c70742c6914878bf53918ec273eb261f306ebfedd3f757ecf615fccfe1d2ef50f7b600fa66ee7f7ebf1d704e7d885a76a4cf22d8b65e227584e6648be1f9a5171fc51feb43f27d0a3369f29a680d7bcd895903303f6cb5deeab6dd11716c4e6bf16550af6e8a21a872c37e4a21a1f9cf497f61a03f808fc6c3991656505b21df4b7b1d027b1b875b2e26b518de85a88601fdd41aeb4067c5d7e178b991fd7bfc11cfe77f382318817d5f8877ebefeddc4cbf1baea6dcbf9275c6acff81b6c68ff6ffa7cd67ec4329efd8465fcb427ac27c89678c985f4dde9efece0ec9bb1e8d90705ad9b3b8ad78ffc225f580e2669e9190d867aad2bb306fb3b9854718b89be93914db175adffedf6d668af68f3ca67720777b18cc839417ba583eb8ad1c1bb167fc345ef23f5c1988fe15764163ae85062c74606ac21b69f653fee46fc6871221b7e070e8b237cc80fc07f5fac8acd6925473960263e00075e19f6e1c0a3759affc02f75047bfc4f18eeee7fa5a78b9f30d57f5c373d9c053fe9fb3ffe7e508db5564fe231add37c99631b02ce018b55a12b19ae357ba56b7919ce71de968a7e8f6caeb4234334679ddf1f9cfdf86bf1c1ccd57efc85de5bff20fb35c1d2c7f6dd11e3f7ef7adba819f7b3f7108b835b8d3f1d6a9f00ee4c8974347077d471fe9fcf0db11b8d7f3b27e477eebfd6d1549ef265fec373814b08faf7a30efdc136e0def317f79dc3a44a75c0b4fd717fe8eaadf63dfd7afbc7f6ff61cdf53e7375b424cd48dfb49ff66476dc67fbc267e62b32b1ffef593f7a393967f5e447a335d7a7977f943b64579a413ebf87527c8b66cbcccfe5dab7ffafb4a55e9b5eb74e60d7ec57fdf503a966b07b025afbaccd366bf5f8547ce80b55f6eaff6fdcfbc71d388e584cb137efe9fccb9f1b3f3bfe417486fe1468ce6edaf8b9569399ac4d3d6179e2df4df05ce330f172d561fcf5ca385f9ee21bd6af77c8b7e07c3203f5c976b0d05cb739d3425bab33fbc976bd026ee60c9d4133a91927cbaf0349c435486d5e7ee3f7d426291b0b7df251b47cafe89ceb131f01f101d9eb8260f5123f26f5cbe21a19eabf25fe5972f6b5880fa6f1f78af4fedebaaf53c383c38fe384f19ff2b89f4aa7c6a7c3e3741198585c937fb295a29b36fdcde58d367902e81cdff31b8a6141ffd6cc82e1e3d9e5cbbc79667bae9ecc2acda8fe87f8637ab0bd094fc8dc8ef5d932d6e77eaccfe278eb5efa621d259abbf094917ac50f9efb6c1eb1f9f4383739a96ed89600ff009f732b52dcad996c382c264b2536be91495c6fcdd7981f5f8bfb393c0a77d514ceabc48f711cf319db407d816da0410ec2f81c411cabcfdfed896d1d02e16d6a7d72bd7a82cd3d3818a3bcc9431a5463d524f9b6271bec2f2faf32579a438e8cadc44528f84dae25ea9be7dee515c102329cb45c19a88f15e713076c12c6afcdbdb3f6724b9a9d214646ef857cdff63dfa242e00079bf8a983fa7ea738c81ae78fbda33ea17116084e158dc9652cbe75cf19ea1783b782ff9f16421b3f499bb5eb9b4cacd32c0bd61f7c303086500f8fc439388a5fc1241601b737a1fc3b298b958279a61b8cc4613fbe8615c7ac2e3918d595f1a7df800f9ac1affe034607e9ab6861ff021d5fe00de4eab97b6513fb126f342649da54305830cd9c1e9ee7f44a792a58fe738be52ef8615ec18f628a2c764e0f2e48334ef4ff3726c684b95ca8ef16cb4983ddbf75590c23eb5d732d2687645846a628f6f17368ca58b68157b583c3ef223dcdce2f9203d29659af5ff7afe63f48aa1b8ba5d3b307153cbef5f0d5ded2f862db3823c8003bb7ff0b6bb46d0fe4e2b07110e0696d30e590adffffaaf5cce71d45e3ada9a27bfe6b19e8e8807e1f51e37fefda2acff2c1d7a0b5f579fd71d34a781d531505ca8585f30358df7f3bee41e2e5686c5e3dbbff3b5140fb0cd80d4dae51975be577cadbb9e392adafecc56a919abd39de4abddcd1ef07773d41321f49f3da5fac20679de493b3b9e7ccb508fdb68ee6841b7e82f3cc3727b5045b675a5cf5c53e3e38d59cede7e6f81b7f3f03d97f0beaaa53039cc99b248e81370df6ef280ef3fd03c99e07f1b6a64d74fe633456b8de05d937a8cf4b81c6bfd1990af2d3a6d88788db265e9bcf9c8c0ee5153c0fdabd867c2c678cdedba93beec4d1673d3618c4133bf96035e6c8ee60ac011e067e27e6a5607208b87d2f48d2129f4dd45c5ba81dfb2d2d34579557865f7f4dd5f23937c1133612e6fde7b103ac7c796c6cbdac6bebf9664173a39a75c6e0a86614736d65ae480e1c6055feb8c72e13bff230475f81db647de367a4ec337aef61daddeccd9f52f3b98b4f9ab56d069bbd084e760618a518ef56d09c96e7be8b2dc7724b3d61cb39168b2d9771d872eeae6038ff33ee5e56f7d62c4669f3b924dcb2641f8ee430f1e415b65d1e411d2fa146b96f1fe9f31f363c07780cdb1ccc31e5954950bfc9ba4f3639b619184c3ec84def70255c371caebe250709171b2d587c698ca708b8e1b7ad3384bc70d66e68f59380f6a09b668ecfc1a395377effc618eec003ce3c03f2615bac74b277dd91ae84f318d9d38aa71afe498bbd89f33c9709a307dbf1a09c6d3fb58be14a0b285e35cfeb78e3eb135316277e0df82306839338156f0caebc1cd46c7fc75c7f614c917e716c79a9a0b3073a3f57576aff62ec0e2ee7b7c10126b9a649a4c827dfdd9f7d574d3609aea7071e6952cf896d299a93f3d3f3f6999fcfc56001b6e90b5bbd92599f04d1739cbfa6f5a10c8b4f898fc54713b40f807ecd827c5df8ee4a865c41fe5ab16138ff7af210b0ee6aeaaae7a5b65019bfc67edeb37f5f9f79f838bc03e0e5a032427420c5c0ece3c81457755a749ed1e65f90dcd4e008f93b19bb2efbce181d3bfacad89e02abb7593b9fe4abb6b235c179488c7cc1bb75c57af22374ecc377fe3cf077f36c48b3277c5e9c4b9b9526f83028eeeef27c70f6a9ef0c930de010e07b782cc9275d25b0baaa8757ef8a79e6792c4fc666ba229b89da0df0ecfc59d774d79227c965a0ccefa164a7eab1b892fcd72298e2f9a435844f7ae3c8702c3ac30e778107dcea50e3c0cd4fbb67854759e8604bc2183df781fc3d79e24f7c0b7be690cf1b8cffcede79b4f349f8061b2eb3d5b120b9ff33a9c552b6de48aefd9dc55726d706f4da66dafcb66eae99cd35a19ba7dfe6d2339c56c01b47b0f80d2fff74c667eae369ee7fb4f75b797a2618c877c81952c6673f1f17b056ba7943469f7fd1033e5ec6bf7fedf337c23e46d798d0c6b8c9bec79f2d73663d137df1b5b8c73bf03d65c00ddd171f2232d7d45eec21df1672c83e0e46bc61b13c391e7226c7bcb71ddd71b09afcd202729c92b46472e6dabcbf177973acbdaa522c6216478acb83ead5add23a498b6e2d09b5fffa70a9f1d8a5c5678fcf9e1d03bc7ead8e8f86e0f732dc5f8e205f5df4bbc532b0a451b4752d38af117d56f8a7651c385642e498c9bd22f29c030f1dd2218b68f29d048a1cfb13b50c9327bb453a38fb2ca855b25e9671e4ec0bf437cd855f4d2fd9760eb53f599047c2617ac9b4ba2cf683ddd951ecc0b785bee73e82815d7b92956cd248d026cb0c8f6f6f1b8ac0099bbe1c1c31f625a66f4a763dd4ea1b7a9f9ae3bc7d1573d5fea96f7930585ee81884b9fdf0dd5d0271ec19b4e91139cbcb815cebea625fb1410786f4dda7fdcd97a2d2375ef4e1f4214613f5ed20418c56a4ed3b38c0835390369681323c07c93d09a4d1f4a0ccafa8af4dbeff83acafd33a0b14c8d9407af52b1a2ce370f1d1e0f16dddcbc073d7ebc8a98483fb51fae639565deb1ab8761929d93d506c99f4b1084e7e1c28594ac6ac843a9dc9f216a4ebb3e78c4ebef1dc77d035cabcf69d59b249e799b65021b704cf4106dc3907878ca5525d356558aab97cdd49711ce451a62699cce0a097aa925d5545be6a4a0acf697d6c56013e346374f6dcf5369246b007f8ee52f834e2b2c9cb5cace4c8be94ae5926ccd93621189109e5ceeee41efe0a13ac1f893ebd46149b10b881f967e98b75a499e7173c9e2be0e5807121b5a4c16987ecf3444d2e0f820117a88cff484d8003f0e11ae99b59bfea5f8bdb01314d908daad45cb1d903d9754f652c02194b4b1be70388fa64767f9621b407ec63744d3d1603df88d1fc1bff3ff6deac4b55a4db1afe4175b141d34cb9ccb4a1b3a7e74e20150494dad880bffe1bb1220282c6dc55cf79be71cec57b51a3762a4210ed6ae69a13feffc37c23cfbafb12ced9aed3ae7dfe9a2bd6b8a179ed8909e4335449467f9fe0ef27fff4a244201a9d5d4ee8a868c4c17af3c90457c5e824e61becffdfd85a9ccde0eddd8b46f760304afcb8d6575860ff9d87fb8b86a059c665af61cd06f8fc348efcc1aadcdb5f1caed9897fa9c87eb61e3767a8248055aa341a8e912b260339c2dad290a79bef56fa948b36d2eae4a7c92398be8ded89f074864ae64bdbbfe4a8a07efdd51bba09a94f43766bbab795673023f6bb16bfbfd0192d1769f2dc0c0cc19b8c4e680c03d19cd3da50b4bebe07c913b41fed95a0ea17342ff3454ab8f80caa2db445ef9d33e32e608e1be03e058d947a2f317e7993d1b5de6bb87039cd4ae40b7ca7583381fc5b001bd0ce12558bb375dadf463d012dd04cd58aa43ae744939c73726e524e33a89f68d4af260bf12138d6db05c732a08e809c7749ea8356453d7fa9be153d475c8b8f5c6b4bcfa3dc1bccd19e98606d23f9df9d8bd2129d8bcfd6b9f864cf459fe77257039ed4b2bdbffa0381f7d35542cf2617738b47c09d8035ac9aeb334dae6edd96ccb3e667e65d91cdfdbbf75eb37ff4aefde764fdfbfa9c7cd9be5d027e81b4a4fdcb7983e0ec89c64fef74f32513d92cbf5dac7503d7ed2c83ea0b75ce4fe06afb27e7672a3c080ee2dd7ff2077affee38a0f5007653b24884a19fce1fbe58f3187d0f83d0e778de9376990fbc41b3d08f98b56073b9ffe4efaa741590adfa3d74434f3293f599c43b242eeb398793fff81c263a44fe935f577df61fddbfdecbd1fc3c58f86cf6cb1a6fef3f89cfa97d655ef475021d057179db8bf3a73e0c6e103b10cd3290e24ba0c5b44e38dd582b2f30b90fb47f7d5b4502fba86dfcf252e01648d119ebc2b899a537349f9e94e8aebd53bc14edd5a1a11b0f38d70352672d632dd07433706e362f5c0291cfabfe9dc4a912bbd02f6e14bf37ce5ff2dc17fb68ba298f8dfe857c3ce8a4401d658ace6613cfc5f4a55d203aa99298f07c39927f431bce2bde97be4ad75e3d2bbb6366c67b1b6308ccc1bcf4707bd073782572227f683e7c4949fce14afeb67634f7653bb67203bb2682dc6baa444a18d8bbfb2e154e81bd8436079a93aab3f1ab71f945ed0bd084c5f605839300fdda1df85b5a91828eda3fb03dd03a44b607e8ac4d66c53fb03d12627b243fadd5ca168aa87624d44b3d5d7bf71548c8c653f840342ef219af3362639d0187493e53b5ae2fe25a05390b581bd910646d5e2ed27a7d5798260df9e732d588cc36fc171ee3cef56f39e0c92a5f5666ea0d717b94c8ddc25a9db4f60ed477295d8784ff4523dc011d5da7cb4baca75f8ed01acff7d6ea37c93fdebd14ffbdb15737d5e6475e1402bf298981b6723cdbecc0e690ffe05fb7f56a68dc637502fdc2a4c690777c6dcbd18e8f05d1706ffbbf787f667cf77addb258b692cd11b47ced7efdd99393a9faf5b631e6993a1b650dbcfa6c9e819e55e3b355a84adb6c537663340b49eef5dd17e2c8d3c17e016c03d6fec273877058f6f73bb2cf54f14d50a7ffdc8655b5caa632906f83fb16d9f649d58656bf085d6df447a50bc7c6ab3c11b04b59f73d09d6eeb5a6d3cbba4bc845eb974bcdd5ca097e84eb24d8fae8cd90a9dbedad8b6862a548cc057330b3dc87fd9c00b97726fa66944f91c9b1ec995818abf1597130e27b43bd869b26259bbfc0b8c736bf499c530d89ea339bd407b7afb53bfcd059a53bc1f0a3e0dc5491b57833de54e003755219f40e617c4ae54c717c71432f0cf0f3fa6b1dafc082791379a2797080836c67ecc5e4b94b2957d2757cc073a050e2a4b16e36dc8a873539049f601ae8fc5ba0c5efea6c05b508f0798cfffd2d99e3c304ae99071ace4f6fac8c67eb4f747c1fcd9b849b402b0c749d2e3e2efad0c8f76723433ec66212de0e12ae0d7e518f43f4d669dc72fb5e736c2b58afa411d79c3d983830b7d742ae13dfd5fdfa1e22b2fdb6548b2e55cec9bde79ea3758a6ca7e2aece924c6df09cf7afb3860e24be17e6ba7e8dafaceb51619ed6385ec2c382b1675ab270d05989cfecba66b41a2393adab4f94c801bce6eab46d71a4f8147fc4b33a6c4d9c58538305f9dbba856d459a9feac31b2c66d7509564385717ed35daaa1fa6e3de8e25ecdb7c088d1836f099b7f2b964fe34d776153fef70c8777e5f94fdfd207fa836da031f17d02f69f6614a704fcd7dc2a2b9571a1368ee01b037b4b89318be2881e48cb356cef8975a6bbff6e427b907ba6fdffe1d682c4ead6a5be70cecffae89b3dcb7792bf4fa9d5cd184fc876b8d4e7bcba4f7437b66f5fc5d7f5dff4bdcd8ab777ac105c0e2f1aa7c69ffbbf67214f47353f6f4076ad73fe0f4e0d173dafdf2435f410c8bf2f6f5ead69c7bebea7332ef6bce45745debb385c4e80e9e97ef01604f28a7a1f23c608eb8b20f0b2a4b2bd8fb16d359dac01f498f92e50d38d868beb1da887ccd953c9967d8076d6023567b2de4d15950e9d735cf80c16a52641b6df660f7128841fec3bdc48bfaf7126d30bbf8a4de80dd57707ed449e534cc5c71977898e7ab64f1614ae484419317a0ad2b09edc4fab04dfd093f6a69549076bfb01748ee0ae3789651667ae5315bb4ce073457fdf30e632dcf721fc62d554eb3f18bb86cddc7ecdefdc21eac702a7d384febedbad4e20f3f1a653e07f6c6d0b195d87f8e2fecbc60f10c0cee85073b93e545a1fbf424fed5c018d8c63bfb3b887762bc1fcfea8333fb38c9838f2f4b769cdb7d1485749c1b7becc634915df07ba57f3e30d7209d2745d9c0213ef91b6a4b853764f0e3ed71efd88ded7b35308d3c1ef71ebcd342dab66b3a285e2cdb3c67295aa3ebd32c855c6f44341524be1793b28a0acc7fd3e10c02ec6cc6c4ed7bf4a9f9bb5aebfa525baae2076dd91ff5de32dd3ed6ba93825e4587df0d7de7a3774073b4d27b6172f5c846d1b066537157a5af3bc9d7a75e4971930ea744a0f7d2acebd2e23e7fb35c4f8da636e41fda54f9cf0cce006b1477ecc827639be6788ce27c35fd1cad907f39e5db38cc5fa83fd9366f348e5b4ee3a172de8d5727e0af7cefd8aa3dcf685ef3af6de8a4b6a199b86363bf6b61456659470ba58aada6464ee3e7ebf33687da9c41fefe6d19c0d97230cd706375f9bf997ce4add756b3dea83e338f75ba461cb2490f5307fbe678be260b1c23beb9345783d6148b5f60edeae936ac7fcb70f443ed3dc5a1bef5e050df720f34325ee150df1a38548c653a7ed4fe2dbbcef33606a2c677219f38aaf1a40dbddd53c5834630a86fbd1854e6f7b8cd0c06f5a0151347e77bf8d0a1d632ab3408faec29acf310e27801cd031b581bb1159761b0135f7b2d3c34b02850bb40709851379ee9e8fcdcd5c2e7429c41dc63671917cc3755241bf31ab463f2def08be43db370630a892a2d7307db3e07b80fe4c40dc1e2b91fe29033c12bc38f8356840be93a20dccf847ff94bc01ccfe3cbf790cbfda8f82071c85a1b07e7d03dfbe7b86bb831466cfbd6afdaf72aced8aad765e38cafe39151331e09f1c9663c92cd2bdc214f016d7aabb0f944b3b95ca461e873c2d04bc0ee4efcf36ea44a80130e7ff88ec61f436b6806f85eca339092dcd5c016e389ef8a7109d25270cc2b6f6bc9b3f79ee283c4818a315a77df43e0faf5bc3927c8118d591a7fcc69d0587d132350c5f59f81fdf5f053f3e973145fb09bbb62c2399692bb6610fae908d901f57d983c83262571e5cbf4e4171cdbe43ccebd3b43f3593f33dcbceac3cd00e23330ff490e39394885676bf1cd97cce71eea7d484d93dec813551a60ce932f51ff63deac6515a3737401c6a5cee1143f8df309f36638b5dd6f31dc7ff632eb1f5f7866f63d688c7326dbfdf92b6f928c0fe23255d21fbe8758d303f90e1f07e018bfe636e03f62c21bfa38eeadb7a35326a7d7f3c87d5a8322004e43fe9adbb80616eebdb1af68dddfd0f71b6b85e657c55b8be71e33265a912cce5fbc3f385e02adb8a998abfff44fe722ceaf8d2fce933f6d06cb9ebc1ada6397bffc7274b00721e7598f6aefa9fc28abd2f83c510dc4ee1c5966aa7ee96076025d78a2ff0327577f9c1fddb3ceb935783e56b81f2c737c98a3be183d027b7551259c8373caffbf73703fac9b92c6bb509fb839cebb18d9028d9d04b52e27348760efd68077b1f73d1cb09fdf304ea9fd7d3dd7011b0971b149c875b40fadf875bec7e672339d093dfa2ea0e7e84504dbdecb1592505da6bda3bfe65b330766b8e7574930156c747e1a03935b27e8ef6b437733686b88a1b39dd877240ff10cc4f969cfe295a3862d057ed7c64e12557cabe2ab553d9d655c2807a9aa15e03791f3b4898b3dcd983a22fc3bca2baeea5803c11908a86d39b2e989dfc3a97643d7e8e9dad88ff68626d7d5ff20fcc3a209fa5ccdfac21ddfe0a6c738a1b48df127fbdd2b2e1b4eb541238423bfc90ed60a344481cb7b10e42ad505c4dc860d8d3ee2dbb1e373abc7a7b2b1b896efd687bb2e5615b65a2ed7353f36f511dea186e2640cda7c196c0ea0e6917d135ee40cfb6b17875baaafdac80f020fc67c7573ecafe75e14b86d6aa6de50494c12f3c1b18d06c716c10c130ef653936f0bad3f1fe3930ff610731a6bd60863efade235b789ce7307bbdd274bda773cedcf558577dfd6fd5ae5eb46427fbe1374ad1b3aa1d518b66a8b689c8872d277383bb5f8573bf65d7369d71ca898ab1e34d4636f083ed405fb4f7eea6a71838b126bff557ab01f5e348a5d1b9d01c2a8d2bd9914ac2652a9446ea94e003b78eb684ec35e85f6b4a62ee9ffbd77a67ab857f6fd051fb4fcde2a1dd9831d20fb10ed6578bdb738fbf758378d6871556bf2f61faf49aa852a0abc3a5d82d65b1d93c198772f6a62da5713f7d68c35240dfee76082fce416c710e1255427f107ec3d8dbea1b8c41dce7d13ff1bfe3dece34a827558f137f7e5e4911ffe92e7480bfbb996905d950807e43f39c39d82ec703f1d85de4f7b06132fc43652d8985f5ed4995fa992ee32557c23ba35557f3f717f37e76a374e8d737975eea4c1834deabf987951e5b51bf383077c66547103b0e3dbf25bd13c7875ad29b8627c8118b96864dd3dcd7867b5a1dbf388edaf0dd1f7ecce2d27fdb6deaa337cd1d42825b917d4a7c6cdc5b8a80bd3a7559dd08aadffe99e47cff67a68c44bba791d5c03d6aab562c7027cc67e9dd3bc65bbdc084ff985d89d893b69da309abdbd78510c39ef3a0f1db367025dd7f5ba3fcdaabe3ff4e91ee8ceb3cd91ecf4ee2daf390277d62355623347b60560ba1bfa2c9f55fb966c9d55b76eab5c62ec502357dcb32f33b54b1cd6dd68d59232fb2dd13ed8121d577fec9dc6a3d533bb75745cb1bd956c6cf9c31505d6dea8ce25ecc33678e5e9efee1b9b6a15bd5d5ab6e0d99b8477bc2ef8a4d21daf75f21312db025bb0b3e6ce3b1efaf5a5add75b43d6e17935add1957296f6e83c815d1b4c2aced43e3d8f1a4fa4b7bea73aa1939f9e7b7c69831e30976f1bf77a5ce919176821d7c10a223b6858cfd1d699cf076d7eaf26cf06cba942f64ea355235ef4bd5ffd5dc7c7c271c59e1a62e67e3d3cdfa2f1026b50b4e734f3ec769d647daf1e2ec1eabb864e108d835679ad6daa9c4d98674d4dea82f822744ffce4ebbad0607c9832bc0dc362bc9ad65a2d2ddd6e7c9f81f1fecdd4db62eeb5ae664e30a5b1ea02dac4da5b748e20df09f2a2550cbb371735584ee2ec509f831cc4b2592c1fe83ff5e849618ec0f619f864ce110ee70fdafc6c80697bf4d6b3f7dae9b34cb5b9621575cf3b756e2650471f415cb4c391bfd4fd6c3d30de836946ebbc9335c4f9ff07790009fc646acb645807856005292f85cdb77202842baace53b2398ceadf1dee86a7d1c88bacb08e0dd5492ad693faef8a2ba4d34f0970e7edad118ffcd875fbddeada56aecee7f8191eb7e41658c631985e19fba8de1b487b298720d61e9aca694b2f2dabb462d85c04334f0fb6fcaba1215ff1f853bf762c901ae77caf7338ef84d613d41e8d29668bdb58e093b0b6d37bebefdb1e63f76ecec0c8bdd3f80dc74908161538a4857271068d945b30ab7fe3da4a65d3620ec5f8dd8f4699775e25fe9972bd1ac0d3a8ea97cb9ae2a7186d32557c43cf7a3836700bd3b3a8ef1e25c18296aa36829a462fdd4db15d5963ed64828df3a311b5c5356f20903a3ebce654cd49592e3d9fe23bc9dca9eace8610b76fd5a1c50d7e9815fc66dcb02f30f682d6632598cf86d561803da8c6ba307bea876a1954a3a1c31170c0fc34793089dfff77e686502ed2e4e60fccb28a4bd073f82c233f07b045b4362da0fe9af685d601705b7a65436f9c63f2a9152f19e18d2e69ccadcd3b40f7fbd77d1a203b30ef72597d9d02add65566f2ba98d70aeaa60dd8c3e9de21dbe82c33843da3af46398ad6dd7d91efd509d39d07f22b2a2e1c4906ac52c39fd19a7c052b3dbb637ecc9a2fa8e73c29d17aea394feeec7902e71e70ed55e71e8fbe877cf0d4205c95e43cc6b58bf47c4b081f0d3e4ba1be6f29ecb5e2b4b1de72f7c43f511fa07e42f6bf3729d285b864b0977c4ad781123930fe2ed94bddda27ac3989a222dd584e955f27be3eb2ef53d893caa4d236ebe6ad9d9fceab943dafdc66defad9e0643ab1d7a27ff79d4f0e733e39e89dea356a8d7fa9e243f0a3e2b901bd52c66ec0da6f7913abffb881f692352278fc51e95afc3d484dbab73d553dcb019f630903d720fb8ab4cc543d2b3b9f8bcd67d67a028029a8c79ae597823d2cae71054359d8b7f4dc5ecd31860790e91fc82d64bd1804b63de21cd978f91ef250f5febdaff96b3eea7f37380533a6bd1ff5b96c0a9827b3c189d5e1d9daffc8b315b33c5b599b678b7eb77e6e05822daeaf89626a8760ae592d693c8be56564f8f6e05daab93b6cc6ecdcb3d1e1aae9709bd4f189a2f691b7ff2c76272910bb0b264cecae13e3a8f5525be743630eb15af5fdb52e6381c99bfcea8bcbafcff287dbe6bd10e3ae4f8f351f7b72572d3fc58a692ef766f1ab9badf3e5625261380482558ffc741eefad71446c1f8853307880729182a66baac442a29233c7b1c01706fdaa8d35bfd11a4befc93dd683f178af8d72d71a9d03f1f8e195b9b0acb128c2debcde6dadc83756e279655ed87a1ef9c3ddc8138daa8611f00d80635662a8c3b4957b60aff26f73950433a66e1cbf07bfe15c689b37e9af6734219f55e4aa9eed54ac83932f90ff56fb3a0953174d6b6c7557c3388b1f6b4cd38cf6cb6becca19629a1d4e8ac5b9592b8bfc167b1894604fd80a89af8e5abc155c28db8d5af36acc55d160ea00e35f06c4fa1f9deba1664e8bdf81db416bd7d831b8819eda3c5cd7f7d6adeb93bad7628e856c0bfdd85bcb57ff7ec35f8375244798d33b110e758c98894bfe7b5e9a65939706c729a5568d1a3e97889e7c6f9d4fd6c755846de9e385d8604c5be2db9ee04b5c8235aefec61ab94a009c41703e847b6b94f8717273d371c6c4618be5296bf74141f097981398d153ebf2110a502fb68ec2129f576f358e78522c03826f6de67e136af7241bebadb205573aa32b6bc5424bf334f74fe357f14e724ee0ba6615d7a5d67c1eba80be4b88ce24c6044c94786faf1e9e381fc9d123f252e1e66a722ea7c9d5178512d9e4c144ced6697c73c5e4e98b45f8ad73f4ba7755ecb68ff22aca3a77f1fae37537b207654ae4de7bb10a8d76c5bfbc7254fd4df9e3c176009c41fdddc6dedd9abf45fb66c33f18d471223febeac9229f91ac3d5bfe2547f27beff9c1d481363942d9bc7f5f9ddf1f38df5bbac0aa9dbfacfd63cef964211ac25ebfd6f1862e277865ebb83db68e4bf893fb6c1d8657f4f61acf69fc6417270dbb586bd8c5b7865ddcb8b6c1e7c772a032767193e38fa9fd2539431ca366731275cd078e97bb927161ed92ff207f1d77e2ba2d7ba18391b0afaf62b56c7cbf61033131339293e9c44e93a0fcda3b1ad483a5de50993bd6ead2c478841c9383187a9351b4b746349794830d08f9df30f44b742d8e4d38d62eae732861e24561099aab3687fa02eb3e485ffc6b6dad2fc0d8e8d6fcb1e183c4b1ae2bc7fe7c477f37741fc490af39f8f28b77e2f33d3acf6a7e72b46e856559dc16e7aff0db2aee8eb515be07156f0cc1ff73ac8d48f0ab8ca66b343a55b5ba4fbe996fe112fe203d2e9a8d7cf4cf5cb7d1391fe7ae4d6d642e473e1b33fe03d6df07ed5b9c73acb8c6d15ebed197559b286ee7cfba2790b7ff01cbda88c5d0f76cf40d9b5361756dabf7d18a5215c7d9c1e629275e5b77a4470b376eebb9b0639d7573eb38bf4238c25ff77df95223a6ac6a9de10ccef8cd30e3c99cd75d7b7bb186bbcbde5e05aa9ebd07da2874c5ed2510c3cc2f99b1d3e28f968f71da3fafdc5e4c9eafda0c3557048ff5ddd0bd5a718eb5fabd66b4743783b777395204b42e16e208af0b91e71752c26f0c3e0cc4e3cd1998993729ce41afcef82ef3875ff05cd79673e76c08d664a4b9d6fc14cc2a6db40dd4dc47c530d0b9c7420af98dbecc77b621ac26c56ff86c26f0d4473186557ec8c0dfadf88d1df08b39738d64084bfd73b87cfadc523f96cbb258073a572ca7fe73f5dc16eba9fc5ccce6d5f5fbb3212c278586fd4f64dfa0fbeeaaeff1da99c1da21cf7e0f2abd751734591673b3ba7e7b3684b5fe999be7ea7a19ee390faa6b7c1bb8fe1a9cf18176647340b816787a4cf74323db3c678fd573395c4d676fcbd3ecaacea1c6e9bed4bfc6cb49fc8eebf8e7fc6638e7d7e739bfd17fbabea5b3cce4f82acd7ced58421d4ea551136735a7ee67a32f2bfe5e43811a22b023a69ca04eb7693089eb5abb693cc2fca7e3e6ef4f6c5be58aef17d9e04a7ae5d9fa6c536a735bbe65aecebb5e19268be9d7d88b90cd80f180babd1a1fa666b22c1fe54affcc3afcda925cc503d67afceeb6e6483b4fbad68feff5b366fc72f22896d3cf4e3e75adfb348e305a9db264632677740eac2ce3b998cafcb2c367fd395ae959b2d1e59e1a81acc7375996ab28ee70835475fc29d83746a039e94243f694d9e46caef67e5c7fb39c167250fb409db9cada0ba4deaa831fd086d59e54634bc97c68acc527f81cbff0f8e2b9ad440ef0a457739dcf208fb98ec21dd82298475dd80347c10edd335b271007cb1678ae72304fec62bcd68f140f325a6b687e60bc378d639967e317accbd41cca333ef427a1670d8c3c98f380bd67358ad0d9679e0dd0e35381bbbd187ba711d480a2cf7dfc791e40eeb371862e6a3c5cbfb636e69aedfd4ea875cec06e62eb563f1a5896f4ed877bf77e57df1b9fdb752d51c591dcb075d139f5647d0cf0819ae729894d323674558b7f25fea6dcc4edd49a097ddcdda0bde1ffa451636fb326f6c7bdfd50b33eae797d5f3d93e7589e08bf8e75a7ca6959d513bb65f2e13d6b2d34f2fe38be3ee44bc203413040ddb5e9954eaaa2b38cfe5b9c632ccf0c7379ec6c2355122557c5716e4a06f2af97806991b6e8dff716bf7307bf4cea53a1bf5c0be3a2d7783f0f1bb56611c9df4ee67f036738aef7c4fc07f30af700bf67f7de60ca6aaa006e628bfc94ea59f5d9556e4e8019ba6d888e0fae97bedebc6170332aeee4220952335775e1b64ec17fc6f90e7dfc58a7cd3dcb803d2ba9b9e05fbcaf0a7e5fc59fd2c7bdd0b403c4c6f55b3f4dee7e9a70df3a375a6b05f2552bad21c28b587865b80fb4b6af11577c4ab486d692307717eeaff67d60ef7d10fc66938bb3d9a6069604f9bb95bdc9f56bf734aee1bfcabd25947b7b37dae8f183d64b7ed3335bdbf1d599ddb34ffb276eb4d62f05b4532ac6cb53fdf94acfca8dfef9d7460b4b646fa8d191eddb6281d669efe772a6ea63745f742effb5b1e55fe86c5de932bf9cbe21fb60b47a5e46ab667ca9f20d5ebd1fdebbfe38fe1887938ed173ebdcc400f0bf1a5a97fa607cf1a244f8635fdbdbd77d6dcb79306dce35e8c3a9f07afe24c15d95e45c3b1b37274d6e14ab89391daf955d83eca5debe86baf74450fbe72d7768619bb5336b078405b6bfeb7c8d3cc33a69c19403db54d50a721e93fa627ace9b782f62f69a1bb927b7b1ba7399f05a71eb89fb3be8afeb7e2e4f3eb53306dee448396337c8a681bc92b9e30f5271c39a076fec79a0075a9d53d90f8d8ffdd01c6ff4d9a0a141f0e4efe8beeb679e613c6191ab955d76159cc19ce48d920f3f7d907ec2ba64b87efdcaa331768706ab117a5f4ca1ae65cad853dcc614f88538ca5552c360e0fbdd98fe6ce369d03b54b92b1c7774332f4d9e7bd18ccd8150eee1b3aa96a4858b05bcdb6d6faf2eaed57bdedd16922c6c8746aed7fe5459e531a480af7362bdf627b762b1b1a76c06e33095c7de695caed32ec6f05b32a0068579f71be5647289769331349f9857df8c31474c8cb5d9700dc2c24b21ae4acfa7a56bbb8937e5537446aa5a9c77f62ff38b5722a7584e1fa80f978196f3cbe9e7d5041d01c2613257781a43daeb2fce35ea13e97c76908a6c7382f9dd7b2dd492d377ac6d03a13ab7b430a3eb05d9917b0dfb30d4ee6f689d9c65ba96fa9f5571cb5ec13ea3fb8326ce6fae58241b4bb9a9e22e5fa44ae6a5db0bc536225b82695b8cc6ae83fd9c993ce44ce64a356f61dda1bd9e9ebdf315ef0f310ed3c51a6319e14484da0a6d007c7a5baab3a08be6c0b51e829b3e2e5e19678bb982c607737c68e1bdbeef171adfea9e07a9b8439f6b10efc57305d90f03324fd07caed757d5274c9fdfd93ef7caff4e9f77ce4c745f63c46f86b2b0d43fff56a74d1f5c3f1b648f8edffbe62afc6e7ab9f827ae584e2ecd7b6bfc36d0e22bf6213fff42eb06341ff15cbefa518cebf2f44fac77d177ee5a6fd9c21a679b49586eb463b13c7dfe05bef8e9f37d353d3e3667f917fa3f3a5fd653f21dfe7b44af5debf2637d5a25cbe7a8dc3cd1ff2fdcf22993df2ecbe5f452ac75e7a19e135e95e4fb528f011b8acefc5a1b05d6ead88f603cffcdbc2dff386fa7789fe98c0bec0575addbd636b2ef412c1852ad13b1b589d6d0f40df6a5a554f08b54e1fd61b2da5ba35940fd8a987faaba80fa1a34ae98eb66ae5584df06d60557c5988c0f77e99b0f7b2dbeaad3af71a0f5c52ce24cd51f82f744b6f0f8b71f812e65b19cc23eadd5e79e710bd01ab0043e9885a197ee7257e7232f0ae36e3c3c6672cd57e160c1f9deaf09d57b26c7193903e9b9d5636734311ff22ce33be368f3429b8fa4119f38635b9fe1a2c1f561d8b7a3fb02d6039d82c631b2abb8661c6949f864b66f2486d41f47a1ba4e928bceff1cda6f0868ae008ed59480a38f60e8196d1773c53378e9df817efd1dd80f61a93b0d8cdcc612c0ae589709c6fe5b8f0b338769fd02b2c14ae28b6538476502d7cb7e089c58e780e1d84076c712dab9aab173e29b600f0d7af6207f56a3f75bcc49ac447c6bc6cecc553ff6eee4149067443ea135cafc4198b8f3e0eea739d8c4b41d4dcebba261a3f471c705936253c54d453cf768dbdafe72131f6fd21a862a2ec2d875b81ea4ced327045f9f79e93cf7a4e4839c2fbfd1b3d1feaf88e34bbbce2f10a98dd71a53cd1116ba9ce3671dff2bcfaac608ce988e5dc7d62cfc60c3718fcafeb6faf600f02faf4badaa7b4a1667340ee63db077b2638d624f3484853ecb83c11bd43bb56c688a75d70306c7d9e2efa96a0a593d9d2ed754c5f30c3112cc3945e33b543f09d722426d19e1a2ead4042484ff481c5f7c718c39a444f7de7706ecc4f8d2c5d57c72e41e9d9abb6555d3351bad53c21ddab9efecb13eef325592690d69955b4576b4ab157aa0131db6da36cf29afa5095a44c534d0f961a015873a8730e2e1fcd79bfbd7b6ce37fc8d63b20ae41a9a351f4adee05c9ae61fb4ce08ea162dd0c412598e9e8dc5870b694eb1c374be5b7d5c922d3dc9caaff2a2514130650ccf30d620a9b4b19e352f1e60c4713d163a3f267b1c63ce3606b287ddacca8b58b150e919a2b564ae78562bcd18d6f972269e350d74ae801c90bdad7344d36bb23e5fa9bf972cc4b8f1fb8538437fe781ce63ff4bda0aa664e48ed6d14b7eaca647f4799b23347c513f5463ae81834688f629d1fda87380fc4fbc3e60138866a5dde64d797ecde666d259959721b19ce7c69a35fcc0f570f94b15671d8e45bfec705f867d75587ed9c7a539eb8d2bfb651fc767fcdef7fc4a13f865ed5722505d0492074a5b3abab97be2b3f5607727ef1e63ff792b10fc4a4af7203c5f3f0537ea9bdb0d1cc343b5b635d6d2fe6cd6884e1b71b3cbc672fa38b4e2baa61eed91c79b5b7139e7a9121d43faf93fe27e9ecc4fe8ec80754ccf3e09b0d37db8cebaaeb78a957138cf31071e90eb229dc7ee2444eb31ede23578ca5131a8aeab63949765e4a6b5862dc69777b84a4edbd6daf1d38dc6956bfd5890b84848c6a5d15ea7c5cde9505c84ee376ad7bf753edf6bc756fc96f0d60e292e41cefd417c71b462a4da687df6c5481bfb2c5b6fc5339c0821d49a423ffa82578e1e582b707edab3185ec0b0f8bfd4ee35b8efa52f7e2119f5384c8a33e0d62621e871a9150fd92760a3039d3f038e02c6097c3a161790bbe5e8e9dadb8b372978e447c9b6011c4aaa3843e3c293b10ba926a073e2a3b61fe095c8be9865ebc183e25fa28588ce34a7c3e9bd9cc68385e8f4e792a6d7aab6e060c1bcacb146942fa2b2179c6c3d3404ea4fa8229fc0de00b640323e4c942f798ef103b2c8e0122672a696f2d1676243b284391b6489e1df2c1f47e76c72b238bacba25bf924f2dc54642908fdf20bfdfeb4b7dcccb5b6375b1cf95e8cfaea2b94a7851ed8ab876b8dd0fcaf79ef9fdc6d11bdfdd56ccfd7656f0517d796817f0af59f2ced4ad7328e81383efac8c74893d8d5be42592cee8eb5cbbcd43fee2106b20a03512865f49ff4953bd62ad98b42ee8a66294bbbbb2c025e2277ecf82647d791ab85a1aa25c20ad970c60a6225dba1212ca3189d59aaa3853cf0e8898eb0d78117a3d6668d5a78f767966f6c2377a30e3fd163ad3bf0795f5e6c21ae325574f2bd645cdc08639f2bbb086a4aaa3821ba3fd9a37ca859014c9074845a8f36fe1de3031c4e499d16cfa7f313dfcef08f1823b62ecd3efe84eb79fb11d7c360730ed223fc3e9375261d331c3bfc976b65529cf65a982e249747fde94d307e87d97b84561d0dad5baf718f5182ec15c1193c2ec6d0a8ebbc210fb815dc2666b28a3d367c8fc1e3426d0a57e71b7e2583756efa9bc85e64b523067cd8cecfedaddaa7d9ccc1b6293798b7611be87cc26285a1365e2fd6c8365a9e0ad0ccd5cf603f7f05988385cda5871ec6d8279b348335b0876b9b1816f0ab09cf3d63b3ea819e67a8cffcaacf1a75d7b95ad9cdb51d6b00ce60bef4ca63b62e1364d33fbd49887ca2c633d13dd938850739cac65996bb584be183e1e5e8ab1fefd69b974583a703d9a60e3c0ff9690adfe1919a145cf3dd56e05f7ff32b7e631935d782b4051bb86127e2bc59d3362676e672ba7d539215dfe2baa5fcdf82053ae6854e3523202e01b9994741faf275de5d6bf1c4ea9fb98ffd4dc215cdf816a79ce180907b79d5f75073f21207f0e13d479427e4ae6a45b64929f6146bb0b09aca0713bdf36b1e7cefdcc4240793469e9cc12a3b29deebc087e8e83a34f61aabc35340f21f2d0d13685bf333767da13eefe82d88ac0e71c36721cf687cd6e6374763d2f47d26c0c3d5e4c8867635394216d3d918b5a7c939d6d0266ee92b087f6e8b9ef5f789d8be176a774c781dcd66ec4b0bb98d390fd5f90af8ec59fdf356fd3f5a03c385c472171bfde3d279172696d33c2b605da92d5cbb4ad666cdfbdb68d707dac75cbb7b2ea07d8dd9bb912f2c6ceca0b217569453bac93597927d95e1efe8d130a8efcb512cc7ebf51cff0aa659d2dc87709cafc2a9104c581d1f0eefea341e2da4af4ebc9fe05ebaf140e9ab8e79c0be86f6fe6ebf98369393fe67f96606dfd28acb954549d6e70f31b9a61fe645bdba32ffa398df027351b3f1a57e1dae27bc4f1f0e80e162f91127f1f8091bb304ee949ff2b2557cf2beb1dc5c05de198ccf207b5c951724b6e67d21c9e31f728bbf6a8c52e7bbd739649dff733bcff8b9a45dd4178869ce8fe4345f3edb8fb80238a4a7fdf963f2fb9ebc25f768fd8e8c03cd7f632c501fce09f27c0c2602ed631ba3c6409b92212c27e83c2e9a3c1e4f81c1d4b4f6ef32bcfd61efbd413d6ad4390bdebd277f5ba77ddf31181e1a8f1163267ebf2c5fd83303efc4c5147316e8fcc38b8e640e853755a2718863a52b8ae62ed6d6d846e09b69098d9d7df8f8f3f7401b91da4ad8e390ff50069322f1d2ce77732fdd091433ecea59a58dad8a0ff82fd0faf4e29cd49ba0b9e386815570669a24c1b0180783e4e68ac250d54667d7dee9f573de52257d00c6d460de8362b2fcd249716e7a79f353e0199e629ea7e4c39bf2cf453a47fbf1dd8fb16f55e98996a3d04b57176fa86cdcd47d42ece084aec7bcd40483f644f7c53c6e2b7a1de1d77ab09c23c83facb94d9abc5b790f6f0df62fa6dc63217d428e613fe5ae4bad18201bcf039c512c045a71aeea84a62c3f441d97764ed711cc1da918e3d8d932554ec0833c6239010ed2e3e24ff9581d2cb38514038fc2417a3c289f35e480ed987927e077be6caced6fbf8c738c7763bf87333e569fd573886664559fdcd0cb724ee83a6c0f102e0fe43b9c37769c7feb7c446bcc685de4379cd106c520209b119d0d67383790bd565ea1b6cf015def4fc145f6d613381b5225ca7f7bf07bd05647efd0d316d8f3746acfaa5a427319e78d168e36969f35f9694c01b5f3603dd078a17de571901e57b0e7ad23d6359d66d53af2c99ad94b55dc90cc8342f0a67c7e908aeada25b976d9b9f6f1e1596fc2f7608e6c9241ad97bd9bb9f62e740661e24e33725ee1798bce454f34afebb39137d63dac0de3dd93b85c91b69043d84986e03d212e82f321e2a3cd19d738af7752afa6e573f9fc4467e9d99b84b340031cc22cd0f959d0d2123bf4d820e89e6b6ec76fac31b655606d112d37cbc8bd29cf31feea0cf9abc4561a6e8c5dd3ef028d8663b18adca112b9a6aba1f634eb5581c36a3a2bd71377486dbbef29b4b581236fd8c276c5cb37dfd847c2835cb5698eceaf971af433e3d78ebcafaa67f3ee3e9e0875adfcb1584e976fca99894b9db26700ef11a3f1ea726f3ddb3938e7dd1f1a17d4af8b59ab7f4a4758e8cbdc3dc3f74d4cdc6cc7f7e5f396a7ed7bef73f5cf72d57bfdf1f5f55a91e27769c600600eb439f7a6d93fbe763dcd4e01c4fa96683e618d3cdbb8386582fe46ff35cf6989aff08b14335df998c6ae3fe7ff5c02df8e3b78a0be03acc8ab7b7762bb06f42d5a4bf38dc5df16d251f0c5b78baa15c38d41794257893b43eb9543737ebea05af8e0532ba19706c94282da0d34b7e1bf05b2d752b3dc89c229c0f590a9c2ce4391f064d57580a13a997307e9117a180f85b9c8cec5987cfec4be3a739611cd4e5ae7e03539bc08af528b6b0b38f609b7cb79896d8da9c0d6e43fc1de8d6621e56a44bfafdf63b7f586ab0cfb614e2a6bc07794fef9daf0a6421d167709caaeedb148eb7fef28aff6a418aa5ac2f8ae8f544991fd84630fdf533ec7f50c0ab7a09c9b18c330df588f1bb28321263b3384ef499ccb8d71c3bf93d3e4264bfe2f55f26f3db698f03d29868df18ecd9b3be5578ebdbb2c523ef3a270be907c5a9778f390fd3edc5d54d0333504553a0a7def7b908ad81bac78fc9e71aa9c8f2c8f44e6dac1f820059997eeee4119776c2cf4fe3b9d9f139ef2ba7d113adb97e899a0c557691a4caab33f0ff446fbeb3e042ea787c0d6117993113aff7e057ad6fc4d6adedc497152b547b8038dc41dba2e55cec65f6003884bc19b1410b70f74fea40287d40e8d5d8ef64bf7c4c75e140e17e203b5375552641b1c21eeb6d34625f09f182be0813e48c5bc652b829604b16dc68719da2f47a7bd2894fac04dfd8109b5184e39ba63bb7007d790b50ceb807053c17ac1f727b625f37b37a2bfdfc27c4363f93da9349535ac957fcc08bf03b1c743d22e23af9fbfcd1633884f5ebda19b6cad22c767bef954d17ea88ff24d19ce21ff35c7fb892a1de137680c611e8b0eb6efb4225da442ea421e0e7421de20273743e311a6f4d96cdb17d03fbb98d81997ef09e607467b9dc573388e393384e0799da33dafc14fa5e719c66b194dfbf27ca4da1d1f150ffe349b2fc42271cfdbf79d367a3a43e5ee89c5d2b55c6e21edee3efafebc3af9a9907bf3dddd97b88cd896afb104e52845eb04d9c1f5bf8fd942f285e5f43adc48c76acdad87fe6fb58cd1ba78b38641a06a23b42ef0fe429f3b83f6a1399643bb501f57fb4dd566c31b7ea26b386ff825804da6cd075e545cbd133f6870c2d6f8f91baebbedd84ac38dc5d4be193bbec2a288b9d03e8f71cc673950d23c55d28447eba5d71ed01ec5f2744cf765f2f13de5691e16df773686fbf668426ca85d653cf9b6fd55f3d521dba4cd017e3e0a466dcf543e227c3e7cadeda13f850d9acbeb78ccf6d5dbc1e65fd9a1ff4b362ea91715c7e8ecff1de87ca5a9e336f2491887b83b1bd9ee8c6bab4d1bf23f138cc521bf813585e7436bec396c1bc39e49631579c756a1f157740f7b5be51d21f66bbd8843617ba0aaefc698db4e0d0f70e69b43e3972619bfd5e7e5a241bca5b021d7a567b886f6751ef30dedefdfe2e3d2e668f7a338c7b56e71aed9f558d11a7457e7578156ac6a1ca5c16833429cf38dd6c22a781c7af094616fde6b27191f4c6e108d7d4303126371647e15b9a0dfeabdb2b371bdee65a5cf4a2505fcbe18d8c558c5b5f28fc53cb8abd378d8e50667f84e26d4bf2e04d867d11876c67cd7d27471e1bdd038afb1eefaa4aa05120d61adfbe3edd9f8b5d6fdf7ed99e9b799c26ff4f8b1988550a7ed598f763def15b5a7c5036306756d64b8d4ab7e33036c0b9bd518fd93f8f37356c59f8329604f211e52c7c88c16f6b6997b60fcb504f646c0a956f850a6a6de28badcbe7156ed5b1d9ee65e5ef9ba3ee824bffb67e3b2c2353df7403bf2842b9cc53637f6a07ebeade57389ce6286afdcab78e5eb35eebed0ef76759eadb9457b0fb79840ad782eeb5f8dbced37c95513defd0cd7b8f11752b32d68e90c3416da6b5fd518fcb716261be30afc2ecd5a8338532217e3e39b73e84cf1d8986381e5594a4618cf0f1873caef8475deea3af05718dccc8d8e4f9673f97b98e4aaf846f96f280e006207cdeb2846bdcda9fca3e611d501017b7a279ae5de762b4cddeeacdc3d03fb9507e9f1936e21cb613fdb5bbb299e2f0ebbc6ded1be21db194f387c4acc2fb0023d0f57e70701f0e918306658dfe3c731bbe1317b7b35668d9a2dacaf59e1319ada0d293b87683f22bb2fb9b9dc0a6257cc9a044d9d45ba43b614e76ac0bdbc0930375aaa243b5c137e1270eece30f98354903c5e486ad89a679021a1df412dd155978cf14aff7c6c06b84ec144e7710258e1c73acd685d14f20d1e34cfd89b8f001de0ed18ebdff5d662095e446b165b9ac352d0c1e8f7723eb1dc05a299bb58070af338000f34f7201adbc26e685c68ede9a2e22a8c1bb14e57e72bae05f43b52272e78c89ee8eaadd56365f7ea65b7b8450c5677a2c635f394370de7b3bafa28e8b7c2f8207dddd93c9d9ece0459ff64397acb4d535768ed600e9ab6e6d7731dbb21f4d35c087bf0ebb8566f5664b82fb76930195d89f6795169b395a3cbdedac5aef5d6cc77ff5bddf00a9fdd898fbd7bd618b856b1fe9b93068331e6236be3f0d30cb5356f73677739737bb0fac0e1dca3535452feca02c68bd4191cf03dcd37a2b5ed7865715f244275969a38ee902dc4f1cd1e54bc4494d3b16cc7e396faf2bd193fedd336aa73bfa406b16478bb7fcaa1a7ca59fe6b63bdfd3207b36adeaea390e8843f0a254e32765e2d9a1a46ae53f177c5d966c8728167244e7b7d79afeebbc6f0aefea9e667efc1c3a0f6d6fadd695bbb1bdb643e930fdfb1ef36ecd1b8975ad808cc09d6c170c35e218e1bfafa159f6d89ceb984e61ab285b482ba8ec5acd57f9379a9b6eb8feabf99fe4c04bc86e702f56bf0df3386a7bc7f3d2d279d355dc29ac59c6e446ba9b6e148ce988d0d5738af5e8d13a9d3875853b967df5aa0be4cd1ba2cd09ec06a37977bc24d8faeb1acf8523d5392913d7187efbacf2a1613e5eea41970d6b2e77c83bbde1aff84c7bc577afa51ad3580b952de6245a2d7e1b944f89c05d82b5f6bc8bce63ab6c6173faa6a2732382b87c11dd77311ad02b417ebd71fee0fef446c272355ce2cf6bffafc9757523d1f9acb9ac33e4df0113ce0d95ed95226396bca97fdc62b913b807193e49cf8eef7eabd6d59f0acb8bdcf0a640f2c31175b7223f329dfa549847e134c8a21bd27a9d7e7367616520c793029cac504b8cc615d54fa96688e3fb9c7623667afa5f3a63e57a657162f47cf8fc13a35deb19f05ebbd8a3de1587dd1c0d501d707e37bd2b10d26afd64db35e611981ae37d783bd6c68a8131b9be4428d9b3d84f1e1fd12ea970f30ce92f9dce89f6ccdeac119eeeefee9ca6deced45c55a77a56baf780ffa01f6838b6bbd5d5491d1cf47fec1f313fb0689006316e03c2f70b155f1ed49c17e8fd641ebfe89a06a8f0b6b0321db6c396dbf03eec7eaef27877ccd9b3d54127f68824604e5c554c571b698ced0fe74679e5df9b35e09fa214f8869d536cd1dad85ea7ef8bd41ebd32b8b0cce69717ede30b624d630fad1074998fd5ac775e0e3627dfa6cd86f34f7a582efccee21a0179937ce687d4674fe50ffb809cb75b7926acdc1e599bb7825cc9b855762bd31d0d6af79e5b98d91b4e63ecb4b901f5dbdb6978229bf72482c0dce9812b8bcb31e0d0be47f731b2bfba7f7e6d6e7ad60205f96ce7f719c6b83f1059d8bf8bc3132b4be1bbfb7fbf49d968f5554dc17133952b54460318995fe65cd915fd6b657d16b372f66a87f0cbc87f4ad73f07be45f1ed69d44d764b84faa5a836a3cc02ea1fab0cfdeb5bca2e7b71fe1f6f468ce969bc1f81df58d0f1ccbc0dd51e9c442ac12fc4bd0f5ef9c292c369ead55f4a3be3887fc06bce283eaec7fd0f823d57f6338a75fdb3dba70af753c094feca4e0f7c4175a882ed8d73ee16d85fd7712b6ed66cad35cf5bf0af37f9cd983d905f67cb31aab5bc51d056b33bcb7f5f01629e57ac63c20dfe24cf816d1bef3271b9f62c6a8fe4f3174a0f6642cec2cf099903d9261ddf737c114e30bc59591f99bd7e70a7f5b0fde3e54aba9e3b5d1b827f89c0dbb05f2ff39f6f36b6d2172967d31f3069d7f07473b225bb53ec3987da13ec3180d4eea8f31f343895cddc1feff9fd78918ff59fb81f08707684f66f40b1662705351df94f12f1a8764b85d332572cfc07b2cbed22d9f0d54ad9839743efdd9a7fcf5caf6fd932f49e3f4aa7eb96c2de217489873a6a90b5570157ea2e6b73f32f8f954495621d3e76c7d77cd21cafa1e351ea3fa7e9fc2fc6af1f28fa0b6c6b1929b6b2b8a97ba773a86dd71636a658695cf271883cebc7dafdfb73d8fafb53ec9bfd95bc5ec7fb4b7ae987eaadbd6f71cec07d41cebd0cf6f356f94ccac83396d53cffe4cd7929278789d718c060eb9d7e7bbab671fcc5e8ffc74c21bb07db5eff3fd31822243f608c11a9058d5a3f6c11201c6d9b5435213bebaab7374ce3fbab1012dcebd09b2f3484e8eea5c584cccd13640ebc99bf2fce24cb42d48ac6baff32b3f0a73b40637cfcff7a5f4788db39264f4fcd01357bc077be9eae2608cf1646fef9e9be1cfdfaba031d0e21d2a635acbcbb37b07f6b9d8717152d96ec6b2be875bc1b2d875c4e8f0594cfe8e894d788db58cecce47cd836f6f33265e9ad75c034b01f0b44dbdcf167e6d097a635ebd7698d8396061e9f942e70c138b5c529ed213c1efa0ef29f72970303be5e8ee80b69e9bb833250ba465bad7e2ecfb39c3da54442b419d84a78d55406cba8a55627fa85c48ab0c8d8153c6199a4b7dbcad98fbb1f73b01f8b7ea38f669633d1abe0fea4fa7af065f2f00e7d2ff1d0f3c6c7b2dcc196d25f4d9b3b76e5a847aa9feefac7a0e1caca5e094545f9d6857614eee467f7964cde11a37f26f3c07de99b16cd6596909cf6845e48d5cb164081e93cf042c25ac61b0f138d5bef24dac32e6f062fa35dfd8cdfa9bef013b4799fa38fc2c9a2be0d9ef0ed643086cbeb21fbc9e3dae8e05eefaece911b3e733b1cca204feb89e7d5fd51acfa8e33850d7867c302153c571bed746bc87ce354bc95d5368cfeb0cefbf2d3f592bdab650cf1ebd65b4c76301fc8c676d9bf7d8b9d962aed073e1bea0bfa97c93b8f64d6a4daeea6cd2c5fa6c227dd37706944dbfc167f432d8b8dbf8951dcef569e5fb27e1be8eaf77625fe5ddbab0fef8dc8b58459b6ba4d2f686383b8e53fd423eacac7fe6249e9ead538c07f0b1ad82c6e44ce335a84d01b63540a311ed1ddfac1f28c9b90c3cb1ac9f3363e79cc4c63c7beb8b7427a79a6aaa4df529c2bcc280580fcac1c2e6407f931c28d6aab4895601ec917cb2907697bdbdbced07e66863bde558efa0aec9dcd8f87b6a4f91ef2bfd157a3d1be7229fe1bd85fcbeedffd17ec1ba09c9cd15cdb70dea6b7a7fcb695ed3d586e668db5dd124b543a3d3de329ff4995d8d259edcab159fec5edfd49896e8f750cb5556cf657d9dbaedcdfa1efafe2d2d6c726d6f5e9d7cf7031737b9e78b9837eed3ee7a68e40e67424e7dcc8524b338909b6bfbc7fda0cab5e67ed4acc136480d76b5aeb56388e33da0b1ce794318e3ec203d42571b653e4f342a06c2d517851bf8bccd3cbd51e5e9197ead26af4e33578073b7e30bf24d75680fd69185185d7a4dbe811b8d70a7686d7b1cea2e1b7b0c6865d3ef686ca38913eaea5445cd9827e6636bf63b6801479d7d4e807e6fd419409d613f964a7c7ba5a5deae1d1328ef95f71397fb8ff5a4d0aededff4d57f57cf99321a53e83dfaeaed7b74f7bd1e8ea07e5dabe2d6cd2b186d9ea31cd7d4ee12528f78730649e297e89d5a9f91b54db065d8573f5f7becb58cebeb8f8548eb8e489e739a71752d5295fb2c5d7bf5f006c896569eeb33688f3e610d8866e90fb99cd50c6f6860419bc9be6881be71ecdac71cf8cf2c0763532ca7ad233465f77ad00ad66a2dc7e589e4bf2d237fe9f3884686d737e1c1d1670d1d69f9bce230f74b3b366c08ab4a97c078afb14d4615a7f552264e3347fb4fa50f50bad65bee95053a872bdb21b08cf740e7de16a230dee87e2b27fd55ba7ac66ff463ee217ba95d37220a497db686c9c61072753a2bb12ef5e3ed208efbf6853bac611a2b1f18b9abf5daf0d9a28a117f3dddda46bab83abff126c702f4a5c00e057f04eee793fbb59ef9c4fb46df9a8bf32ab62caefade6784df0734ea3a67acf387f6337a2750d3e90d94bfd139d49a0f8c66389fa88c06e722dac6f4ba0abb2626c9fa0c7e47373e2ecee1bb750f978d27c25817cb9eefdc147fb79af67c477eb78a8ab25313499f2b7de1369de43fc4dc67cfe584c692f9643330de997e803a2fb5d6b9bc045334d621ffd318601b998c7f54f4ee25689c83264fc0a165b3b5e7d77001b855e0b379e1bb164d4e80f9575eeba275ee37a8b13effe29eb351ef3d71bf1cb94583ff8289750c0c76ddbf5b3c87e6e96fd78e41d7e585afdbc9a77e0f3a7a9cef7d31c38554d98ed3ca5f3bd1bc7072f5453266225e23eb14edb7fc83ae53d20e6121ed1a76d0b68169c43619f810f6b6b2e16afc75d3b66bb711edc9e4bb069f19fd8cda0fdbbadf5a36f4cf3cb0cb9eeb1a3c08126d7f9bd3146a88db36f894c6eb6aff809e83cdfbd53aaafc8d7ef64a6783f6cd2b1d8dca0eefabcdb799ef5af839d6d67ec58fcedaee3d7c0655dfa1f3fd8fdf577102d2f7cdb5fd779fadfb8a0781b17b931f781af2658df1fb0b6b6d18e38ddd9caf46dae1db4d5ebe9356fcc439ffe19db066d04f1c0dc124ce5549fe0b344cb0ee64d6e065e8e94788d3fc679c0edc7fcae9d0dcd38a1a53391d252fc6b4c145d31eef9696d4abfef9a8c62c0ab9cd89877df1d53cf8612c843f71ff437ebcd60f7ac5b5f17a4c9e336497fdf587e7fc13dd084e6df179edba1cd0fd63a8e7b88ec41a8d0fe2db5f507bc8702835afedf09929adf394f2d3722c67f05e27b857c9107c31be51fe437f607cec755e0ab430433675a0c51fae8e759d55fbcaadcf6057ef5d2d04ce5d7b88fd5dcd1a61ffd52ac4bda5247e041c0937cad34531e1fd5c329f35370ee457777706b39a77b0aae943f07a73be684faeec268ec9e7a3365fbd12ee05fe3ae6957834f3cb897040bf75863bc53b635fd79bd57e9c6e99255a87e45c9ad6791c929b9076c2c182b6fdc053f9c8d6c39efa68dd076d71ac2d00fb07ad93c01cd84f9ee2e2716ec21a5f7c881fbf094e3abe7851f1045dfa469ee44df024121f17df046730fe68f2e213adf23a2ff10bd70893f3ce7a7b67e3965be6dc5b4cd0f745a68a319a23d92b7d5917f45fabf87759f19f4e499e10f33e940493cd9c9739e8c8fa83f8e295c037ef065a7887b8add85c57baf5a8ead0658d7048d55cbe349e97b5defd83f1db2adc6cb336c57867fc865a0bb6d68466e6a0d9aa15caaabdb551d3d1ebefc70dbf03f9ef952d61c1f906b17fff9ce0fd51229c6ae02329a317fb80589fbd59a52f4062570d3e5c2572df6b6d00d68e36599bb7e262776d9fb5072b0c01e4f1700ee6c6623516e218e256cb926245b00d44b5be564fa2ff351d3fd7a7cf6c3d949b9a47e2b8a9dd6ccbb963c51827655e0d2f014dbdba76497c4b9513d6a45322b781b56bd8224606b5016b7ec72d52f7eec766e80c8e4dbc1cf8f42157f70397a95a31fd41333a51edeb2598d4f16db4aed5e967be26f83ea646f7970b5c731d1e828cda7ff6a0c64e1aa9700fa67cd93cc315c27f466da7d945b6ccf101e3e81296c346899c11d13767f8099c74a9f75e7b5953febc06a78d7cc47be4f6ea5902ef9db7575f1432f4ff9a73da38ca11fb5b9c976e9f8766cac65d8b3ba39374abb0a373e5ee0df15e8b7d08acdf5ac57ac499b0d746877d7dfe68de40e0fe5063543d2bd0f9fb7a306eeb3ed35abb9587b98e79cc7306fb8c7030925c95b6b9a315c9421c37f8fffed0f64ecd08d5313b488f4b30e5427532433e65b279c6427b4cc066aa791be6d467433e1cb1a5b0cf47386d54bb18833e83bd6d8de19c837a276ece05929239679373b563e48a73ced178dc7609b57d1b416de464ce35b9fcafb79a8b90e4e9ca04f623cf1206ae4172f080bd6fc6da4dd8371e8f85b4fdf53da8f6887759ff12d615be391154981371eee87cb648d0fc22e731f4e9f68798de98aeef1cea7adb9ad9f8bb6463f0b94a38aae1cc815a665e08c44773fd4f920fcd7a5c82491142dca0c4ebb9c69ee0fb34d764d8b36f72cf8d382f5dc22d81fc2fc2f5d0c27533d7f0f9d3d685d04f03cc4121adbc25cfbd93bc17b5313e94c98ee2e1df03d1c8f7037344b058cc197b89e4e85a2ec43a36b14e8dbc83957b665c7f9c60d43cdfe6dd7aace5a960dabaac6afe95c8a5b5ef689f69be4fc2fd726ce54ce6f4d37a2a01693b3ecf0d05344cfb75643e815386e17aacfa9d62120fa6992fce5fa537dcdd49bd4e09fe40672de27176a9ffdf33e758ed05d5e67213d98f92720f4401e779cfe68dec89aff69397f7c6b1fc4e8c07da54f1559273b33d3f83393e0389967f86da16b4da50699bea8dbad05a4bd41a5f14c9b8a8daa358e99ff952ff7ca8fad5a5b56f8b995bd5cd1eb4e21a4cf9d6999717c071065a31988315eb403f9eaa56605b64ba84b67ddbffae6dd0aeba2db86eafee8facba3fb25f6c2eb79f7cfbcc47e7305b4343e3f4d1de1a3d027b1b612dba5542b5e8c0c645e36319b97c5642574cee689f01bb9c9c9bd4eea9b451900fac5f6f4dde33e343c55a2e0d8e1fa215093e946f9b897f4e2867dfdd8fd17e74246ddb795e3a477e7fa47299ae73504b0b75487bcb1da913395287db4c2d83c0c2b948a16a6fc29d2156a07f7e0453c89f255e1a70fbe99553cb9ca92b1d79c19c233554046770966fe89d3c9df2060ba5a7d51aa97afa06fa37b046ad719f5f37827aeb6198a8929c2d50df027620110e943b9ce62fb03e0feab3503e657fbb5ad8c0a8133faee26194493c53c6f568378a7b83fa4c11e65c285b6f370fd9ed62f2f060de3ec2a5067377b9b1cc7c316bcfc15e3ba4d2dd5a4d31c75b8b57f60df845582dd53a1f95217b7c6f8d424f2c46b8e682bbec8786b0877cd30eb4540f5aa1346a13480d853add8eb0ae9893b6d77b5363cbe599fdc50af4abc57037c0b8edacf9693f395e7a6c8f993709b905d5c942eb07ce7bdab663b6c0ba65d9412b56ad1a8a177a59f27fac6145ea950a6ff288bd49217953fe6367bb702eac93ebc18b8aad17156b2f2a8c8598e7baf596b7f7116fb845efa620bb7b215e72232a76c1a4e0834931f026c547ed575cc2a5cd07073d8fbd2977f1ad87f03d406ddce1f845ac8c34517806b3047c0f2f5d25eb78755b880a0fb1626cbfbf2f27c5c0b595279c91915caca2b76259be15725490734649fce42b7406d7d01d986bc7e29375a4601b6bc2c7de808b0e5a0cbcbceecccd9cd42cb7e744f686105341f6f40d725b3dfba57c86d8159a6389dbd4fe39d8bc32df1a2bc3e6767333d96d74aed06d2e58ea9cf2a5cf05e4062c6c7e5cfbc4faacda6f6d5ed076c67c6ace85d9ce740d9d1396062f48fa4c986c8de2804c4a8d170e44d3e8b6b757b3bdbd0a9db4485ca918cb80db371fbe289481b422f12086cb82ac253a7782c928f3706ddfc5d5e28f6ff1d1391ff09cdadebcc168ea0df8ebde26e394c0f979f1a222a9f8c5268fc1aad27f6063014d6ef41657235a8b73af73ae91b64e46772f5edd3d8bcf02324ea635ba62ae54e00868e925f042fb6f551c5fbe875cee5b8ffc7b20a07953eead5da289c27dcf13cd2082b7f7866ee29f95cc154d822920391c69955471d1f32aa19a96fea9fafeb417cd38b08ac42478017acfaa1f66a003026d736d45732de7dd9a8c345cab576190d1983ea07f44b35c88b0365af3d29c7c1bb82fd669cb67eec1b0a880858231ce280eb389333105f29cd76bf0e5733e636f3a269a9db82f0e5a81d646dcbe87cfb9773f5112f7ac24fee0486b5b9ec0072a99b96bfef81d9a6fd5e7aebdd35ccb2d5d7b75e98c8518244c7fe2773ad1b6c580c3b37941df192b6d67ee0e9a313276a6b2de1a68adee363637da9873c13438f3a0f3cac13204d3e603459f15876d6c1e7671a2ed8cadb01b00ce8f729e6dbda1c239d64330f1e7d007bb99b022fcdc3db5876195076ed72963aeab59c71765ae4bd6947bdd325ec7834f446bbbd222e239caaffc8ac383b1d57be3c6ebe93153f56b5f0dd4603d2936a45e18f07e7e4938256c36c74463a0c0f380d631a76a318d49268dfa0c64534f46a92799cffd7c35f2d2e50b5f1e38302eabe931dd0f8d7ebf453f0e91dff20fb42665af3c8ed680996870d7e3dc429aa0fecdbfed2b9ca5f5b95d704cfcad9fa702e223f38907efdc5b47f6c0f65bd516cbabf5e2b13d85e361a85f5ef854ffc56769d5b3782fe5817390c5d86ded1dc9aff6d579c2b393fe676f9b3ea4364f7e88df40feca6bd952aa7d65da4bb570519b1fedeb7eba37cd712716bfbbd914c788e62cd864b347f5fe35be3a22fb734cf77affc927a42e1df63b7426db83157a26e79a5f77ffbc0bdb671c8e89567d6fd3fcd17fd99fcf605eb2ed1a927afc64c53be75de95aa6e29d77f72d1393e8da9c04c3598febedc739c5726a59e6f8c07290feb45ff5d6562edf1a7365eed6b8d2c9ac40edc2ef88ceee151a73413ecd068bd3ecb938cd22741ef5f9a5f2d9046c15c4e286db683dc0f843b48ffb4ffea64e67e56a82ecd96e5fa8761e0580fb01acda2998c81f9368fcb71a7d7d7a6272229a63f86c9f7c0d9693b762adbd1593e8f36f99b115fc08f0ac7140b84b3187e8e86fff7139aac7cb518dbea6def06be4a7c9792f6d8faab8cce4991b3a0333f206c2efc5e44bf1d2e54d4667e0e42b0ba4e5d1b1dc746f1519cccbf24d952717f4dfd104fcc1d7d31b9aa533308ece40885ded0b7d96efad15d835eee48bc75c0d5fdc5e348eba9118b25864ce007294473715782fdd561a69f03eb342d972e6dae0d0f7498eeee991dffba9700f265ff1de56b08f7d8e8fc05dd96a4b202989ab415bef448b1463f5c4598e79d78e5100f96464a79871b3868a70c10e8b71233e19cd183e6b3ef1872be40b4cf7e2fce6a566ce6870121b6e49f78253db376cf2073d3286870db83858dd472f1586ea24fef02647b45727aa56541cea2c7f333d5bfd81c999141333094f8be967b6104d749ea41b03b8266ef49ead7de8e60dfd76ccabe662c135c0e89a8baaf1e901f016ed7dbaaecdda0c918d4bb584b7173f7a3c907dbd8ec27c63012f7ba79d686ff4ba719fec7bb8145ad7e338915664edbe750645e2d88a41b5d2556989ae0bdbd7d53ed35c5880e66ea32f526fa89c5cc32d91af67603c502b064d78eaa9df3ee587c846f386fecd17cd12622d16f6fb7ce63bdc8fc5656353ce61e0b4addabb901c81ea402cd255ee5af3b27aef69cfdc65e7a5b8ba7be7d5ddabb574aecc734e8e353ab956f1e5a5c99560c4441fe25279c37e93595e58da16644bdb66e20f77dddf6b4eea0c849b3f1000bf89f7da6344f68808d94efec02c65717777edd54d196e8f956f39f92a5d7bcebbf68adb5aa3ccb370ac7a775642cf326ef28c0ff703035d5fba1ada07e69c2c25f740fbcabdc13c96c5d9d11785fc1bf587f880bdc41b14c88e393a67e51e0c57897f467b5ac805d2d7731d8def6e2adf3ccbb8d31c58fdfbe2294771fe72dd8b5caaa4551fdf5c62c7ca09e4f9eae7455fb137309f5e1470b2b4e27d099dd9dba333007f2bffbff19e18a7f0427738fe4977d89dc03e90fd9bfd83fce6a2da5c5baff5817c92a084baf9cedef772dd4a9f741fbb7edbbc403558657d963b943758f24157e47bcaf18b99212ca7d7d7fb80d4bbeffeb5314cd81f5aef252c5ad7a3f5ee0c4cbc1ecc3e9b3df9584e47c9417a14cb93317675a8217e7a03c05263bf62a274f71ded8b73ac6be2975fa18ce6d120e1f6b69bc862720b265f916bef86ae65dee4e9e7d1b146b18cec0ced71c4ed496e6ef995429b005f693e6531ccdc4148cee4f90d5fff95fad2f288e6b0970a9c2c9975ec47447b4cfcfe3de51e1bd1f8a5a3798b7c2851406bbc70f5e5ddd5e2f715adef1273ac63db73462e6663615f8ec0265a9eaebf17675817c522156e9e653efdc1fcdcd9679bbcca119b8769dac7640e7186e06ad7b7f570577edbd74805fe2123db70e39b0f3104da2e8ae789dfd5d6bc69c594a80db981f60e772bd75e3d1d2b4848bbf0f94aeb999f5cb8b4b9dc3f757cf4089d7beeb018e3e77de63af4c58ad3e9bb538d0c0dd989e3b61f7653edeb70631d3bb94d570b7bfb42b539a8dbef3b2783281c82f682c6152d1e5bbd87a391e6393f5c6df4086c9c7f590f8c77464fbec2962cf4d95f9bd35b01ef605e4b1bdb5ca12a35b8af52e5f439b6cbf08e791913062b6f7a7ec20901f2a306a360638d73efc497ad761aad18554323d9d5f9c47a7e05aa4e6a655a5aa4dbb2a96b87aec5b150a68d7613f3ea8bc2836a2e7911f97e607acb392778a76bb24eebfcba7fe21ef0fe4cdff9a7e2be66f4ad96d1e5e24779a16a5cb11067a8af325b2bf88d15ff5e829d677a8189733a94eb0cf8f6412f727450c519f0f7b1df7913fadd2377b4f8972ae2be049f7468061beb0dcd4d5ed52f173c367cb8104d6f6f728207350931a99f3129168bf5137325721e9b647cf1a09e34ce98da85c41a2ac1c67ae4ae79e56dc04fcb4260f30213afe10e6d0ebd463e7adcc5569e57c8df55901ff13d416b9ef99be10723d8d45fde294b1669122feced6d6fedf0b930ff142c9ecbf513efd95af1b5d167f99e9e1173595896c572a3cd8ac50c6b026998d38d9d6b2b6cdfd6e31b4c79439dbdb17c041cd56daa75811b58b86c5b86eb263fce8cf2de94d85636c61bcbc8548be4ccb8e545c77c1f4fb4676ab8a60af83a7aeae07475fe09b95ddab6d67a79af6229b318de53078ed647b89b248dfa7973126e552d99010fb7245f7651dc38b3fbde5d89dcbb2a5df2d6fb5c016bd3c05538742f9be13e075cac02ff16e38baac5b93ee5c2e5b4da4f34b297035f83ae8537552bfede98db8b81fca2ca8fba8076be2a5efa6a41fef2a2647c00bdae79a84ee2ace68e30847dc460f89f1d2e818fe6f7f5bcd983bf4df40e8d220952335f53dc8a6d5cf6bd7ad90fc18be20fefd47f7efdc0079f6f069706b6d29b667f6faaf172d26d89fe5fac54b4e793f3083ed3afa4bf9226978175c9287f06c3398b35d59e9d313ed13176cae6187b519cfb70eed55c47fe90c99b0e2ed417d636b68cc7d76e72259bc085cd68936b155698e1b6e18a75ad0955affd93f1a8b86998faff068f49c53fcb70104ce7c96aca6a2c547908ded557c2c186b19c806679d3d6555cb1480c49c9bca19205522cacda71312eb97a9619ef71cc8ea90b99b5e37f4b6f18b0ba995cdbb6d4b12f99b3cf5b96ade7f15fa53740b67d72739f359f007b1fd35e257eace4de60f59bd4f6d6f78b3af146c8b378b35a1bb4ebef1bcdf988b12bedf7abf5c60df3cdb5563ccced53cbcee376e3c3ac181f2621bbef74e38d83463e66db5e7f2fedfbb9d2b5d90726b72398bb6a7d73a476fa851f036bad1bc3bd61ac753baf55e1dfb51a8f3c7bafb95d2bdd7db2af72cf1a2fb14bdc74ce7bd2f63d98f21a998bb78d297f18279e237b2283673e36f2f3c689bf1dbaed7c38b6f9fc711c869ddf54feb9015a565b61db9e2b4385f792200bc49099c77d719cba16f30ffd51add59abbbadb2faece3d5bfd92b4fb2598fca37ea97383c6cbf99e7b51113298d37eff0363567b796e1d8de5b99d3118c719f09c3b76fce14db9c83b9b572735cb2626f201f6b237157875f0780fb422dc68ca2db0f8c8b5e5d673d07ac3f1a4cd6056d7c84d3353851c373e1b1c9d87bf418b4a67e692ce7fecadedfb56cb7f2fc4ba3fd6e95bee577b46426a64b26421615d2b527f9e2fc41e8de8742678936bb89058fbed7245be92371df19b326cda7a533e5fcc91fd0331cf2aff4ccf3ae02833b7c83ec2f6c320bea87aa6c0de218e2fdf51912f6c23037d30d1b8f903a10c66b43e7d961b65b805ccccac7fdf51b522e9e63a56176f68e6ee3cc95cab883b3e15d110e9898b5c54fd0a36e49afa13c47ea9eb19ded019fbb712b995edb18fd8f9f2c6d617dc58cd66f41baa2d466d0cc0b6f5da1fc5df7df5aa07a908d549d2d92383a112fa3f9d01346f6ccaccbbf4f5cb9b609caeda866ac732d8a2453a7ff8623152315e3e67734f0dfc152f0bde19f9135cde9ba32c15de8718daaedc03c6acf64921ff82ec58c6e6f04a88e3b2367286da7bb062e03d70ed9dedd8ca8dad6f05ee55e83fa10ca465fb9c60ef95547925e03580bd03d996a18c793f2bfb13c74baa18109c45e89932e66f845cbd5f7e0d1cabc85c71ce7943e5298bbbcc4fcd53201623594c9eb238ba0793af67607f417cc5b5b647e71c435e4516bf1e7e2a3c16d8967c3a93af071a4bc70a9245f465a23e037e8b39fe7e91ae2eaeb5facd7ea64ed0bdc6478cb3fee2f6a2795d4490938a6591bffba97174eced712fed387f7ab92f066eb448f96431349faec69ff6a279da977ca31d721457798b401bdd1c8b4f369aa2786737f4d324f4cedba39926778fe097e5a8e05b3e0dd738e34553a0fc2dbe6d427ddda6e2ef030dd9d24fe723c04ca7c21df62e98abcb77cc1b0d7b29fa37ddbfd1bf21a7e7a53efcfbdbe2236ff040ff0ebd730cfff7cf4af86d08e9fabccd198db6642136395bd073f735ee66e39e326e2182bdc13c73473e176e2eb9a7371825fac0c5f7386f737f1086be68bc079322f916e727e0f210bb63b64ee3fcc53c7ef7861cbbf7dcd8df6dacb71cadb37f9aab249c0d68ef7e6e34a5c2c2ec66c2418f05c3e6bfbe0c7e753067a162f0c2c6480457e7cd83c9254b7d2e4c76a6206aa632df4d949e6726cdfb1b780c1769f2dcda4ae9d8c8af7b852752bc8a2362867f676bb2b03168ccbbc1ff730b44412763dda827f8afe46c75e7b6d497b7e516f2b0143b08b5f2ff2f67db9bb3155ed687cc5723cf52eedec4498d617275522187da2fe06e967f353f3b4624ffc1e80fcad9fae43c96fa27f0e7fa274127eb1ab0b6ea84623b71acdab11e91aa5f06cbe9ecb18a8af0c7679c95d01d40fd57fd1be0197dfd1b7a5ed903e07faa7eb7065dcf1f7e272977e86f5ba6bf295693e2f9a7df04691233bf79acb5e2f4d36f6a6d14da6fc8c6727eeab7d01f26378717800b588ee2f7d5e9b358eab3dc9df2e586a7e33782988e7cc6f80da89da8ea9b7707e02fd3aa67160be9f3a767a6de50193ab612db432571a3ea77e5423cfef4bb27a92f7f32cf7a2ea41fdfaffe8d29e47b7bc555ef78facc3dfda777e413cf1ad7e3a515a39ffade13e7efdf75bb060bd1ffa95d91270aa77d49af978b8528ffd86781358a1d7c46855e3dbec385f4e373189ea8ff8fbc37db5254e9da462fe83b2840cd94c34c5440b0a58f33014d1050dec206bcfa3d624600016aad5aefbfbfb1c71effc11aab1269822062b6cf7c66bbf6565239fce3da1396b7a05ddfe5aa1b639d319cfe2ffd27d4f19f18dbd3b1ae4cfdd4ab1a911fff91b7b1a59633adf91d1da9cf29d73ee77754fba3fe84fea658f56f67860731657d52a61e196cf06e4f813aa6f57dacef1d34f74eea7b5f9adf189e6564be8a537dd33e9e78dc09c35bb9157b76d2ef5eae04e61afaec293ca727b3c7de191d4dc21798611f6023882de67aca93988854727a52d79903eeed81edf4e0c81feb6b404e80dd8a7224dbd5da5d605fbba9735c3b63fcb75cef552bb3b3b5fb05c7826c7622b6131fe1fb9978ed9bfc08feedd817ffc15ff0bf2dc84bce8a35e959b2093211eb3b3c0e887959549ed2f7e1c9b1861b41dc419f0f6c3f2c477eb65cbec41cb67305737750ca76ce4e103fc803ae23afe87d8af6b7e779eae7045b7c8d11a584577f093ed8ce5d36dc04562bb39f72ca6d2d0bf40315d726ff20d8d1f4d1f4f77ec6c3d7cffd2b0ead798c3adc59c06538a8e700dd82531805d9d6009eb77f1edfbd195fab2bffe6baa8be8eae8b7f9e4b37ade772891cfef6876fdc7c5bdfa5efc5bfc659befe66cd73d8b5f817d795f57526c10d6eff692d36e30c9b71b675047f73dd4ea9af43912fa7c9b6cffff5ee3bbce1d1fb53ff46e49663d22b65363e901e1ac94129811fd757e86fae5dff76ae7f0b4fe5f80d2e2565e323354f0e23fbf17d46f83e4feb158f8595c5c05bb0c4cfee5f7f7c757da0bcb8de99bfba7ef0eafafdcbeb031adf86636b74e46707e35efcadbf61d2bdab6758ffa45744fa40a5c1693bd2944da1a6e201b920df785fb6625db990de77e6395a281ce9d1d57063bc5fafddfe4080dd053c651d0bf54c1efa78ae2765e467e275eff0b7d05dfccf3a560be8efac94d70e86d7ddfa7ecab15c1e698bd105dc58aa4aea6fbf2a6255fe8ab581f55bcdbe009f126476193a69859c0dc4237c67f61b19df3f6a7c89b46afea3cab3a327d80fc24b4938bf5505fbc0f3872a63d936c3bf3d42391590f1cd216779f633b1f0853047f8fe03fbb893be23ec9b78d88e7486c09500fc97d530d64c9637fe2eb2b1aaa63613dbe0d44fd5e4fbff2c4db1d04deb63212585f7e0f895b018fb93cb51ab8a3ce02f47ddb4c36ecdf8e5e8b2f158631405ca77b16f73f185336038336d0e6c744f9801de91f8ac1dfc315d23d846d98aba742ff07fff3e86a6020f881fff701a604a86e74505f5fd573d1b9e774652403d20604eefa21f8fae9a62e580858d7f780dfb197611efe57bac4bf302556aa1667ca2c6f73810387c6c1854f310fb16be348ac07e6c754b9fd3a38f5189031efbd528df4b786cd6d513ca28182ca15e0f305c781eab32ebf2d758bfd46c9b87b1fa111a65d2c606a29b9e4da1efaf53cd997be3312f0bcf5d3e4cc03ee2bf670f35c5fbe94bacf7a4a62cae9e919cfdf81e7b8258a87152ec26803f10d6f62564ea248e7fe42da1366e5dd7ba76b63ea29890ba37aa2ac3b1e28dccbcb5329367eb626ffa6979f79ce167d8f6b5c7f20befd71c3861aad10d65e881dc4d111cf99b9e8915de0775fe209cf0371acf8ed606fe762ad80beb4abda8f1255dc56abc1a6cb279f6730d14fbb1937e2232e79b5f6aacfe0ea44b84cfd1065fbf3da3887543fd1d4a2d573af4f88b29de489adf02884ba8cdb901d3efc0ef9d4bc71d6bc2f4b71a73b1260c490d86fcd3d4401c94f2ac9fbef940f8390712f4e988f48cd659580dffd119c54d1dd23988479166449f07a34c74e55221c7fb08a5f2e863b9c241adf98767e0fbd431ed1a4f54fa9d7d2aff14614cea42f07f2bc1bb22397d047219ed2db88fa8625b5b52a157ddda417f1d87aae3277efc5369065e33c3f3524a8a1deccd45aecb53b237813fdfc2e7dd09ae7c78f5e308efd3075c636079c5177a3605ff2f1466159a61dffa651d32c387367f58ca1ceba4a12e27d0939c991f2c23a02e2bc8b07edce067e06bc8f7cdec04ef7fbc9ffdc13c41eebc40eef2a1cbd02fef0c35957179a7dcc31f80a576ac2b7ee79d33bb865229c06f94b73810b09c2f2fffd5be6ec78865533d9e14c1b9f578cb34182cf0ef746c705dbecf2c7c4cf0dc79ee39230e645c674cf350c3be7f3bae0719d7b0504f24df8465067af0912625e79d518e74e01949e87afe2902c9cbf6f55e904a7e1ea39156a91790ddee378cd3abe8394e3bbf6a5c66f5b91eddd3be6c3f824a2d507d4f27ba85995de1317847b206b03e849e934d1ced27a65c41b13e6ddea382f7502ea22e73c55e60e6d4cc4f3a5e17c79c236b3ecd34c5ab65dc60ede277e3ebd8c20370aec7d657a93913baf51a5e368fa3c1da0dc8bc0c3ce89de2194d2d65e37b6ad23cd9b91eb6833afb351c708517337c30f25c84da3ed877cbff3fefbb66fd51fd77df417ddbe2694f22b87e06fb8cedab8a8ee338187c477eac7e20bceffe661fb5f91bbc07e0992ae8c1561fc3dfee22760dd08bad7cad40be5ef17ef39ced096272adae7cb30ea3e4c5fa23b259e18a402a3fd967afb2e95933a2a38e65b0e1653ba98875f73bf7b15d2227585fd13dc6cae7c50bf93c8f901ca66a5c1e19fbaae68fff0ce4b4f081a3802bfedf5d4b01af756367516d0fb56b98e9a1775afc627986832ae234e02c5bde7c17784ea6beb024f57f338a3177c4eb5a203d710eca3d528d9f7219a37fbc06787ecc9cda13df6293e3ecaff5eef81f6cfebcb5a1ac2b9e172bb333cdf889b0fd1c326b2534467c20d8d836ccbbfc6d3f7937bfdcc468c42ed750b36678fd04b818d2c7404a9e30d6ef72db785e1bce64635a1e5c2ed7679790f6bf699ecbe69d3d167b4cfc29da6fff7ef68f6fde0f30d2ccb35ce8ddfdd99fabba3787663cd5b7bef4e7d8e32cff1ea9414e0a87e7728ab1c9d6161f85f2cf3590c58136518bc5639aebe6b493534712c3cfe52e487f48ab37cf369665c959637c1caf7a3fdee79aae0dc307918a8019edcd03c40babe7efd8f80bffe5b31a5974ba60fbf283bd4fcd3bc3d8d2b779ec9dfd07f0fda61ae180bd6ad8d67cdc457414593ed77e8d1bf0cfb05c09aa6c9ddbfe2730c7b7b5ab5e3ab579d08bbabd277d4ea7c60c7a8f55c947f7797f582fa44f14f455d18c32d35c8ef40d9a76ea097ffb15e0f58ebe6c47c131bf367bc1e5890f39011cc643039b0de4c0bd2707845edc2a9dc75e8cc7497b6ac73b67f8834cf14c74637a45d3edda24fcb16764241f4d5f5f53a49c1925ad0de240962ee3a4d8537fd537c0bec2ba19fbb371edcf860ff2bbd7c38bec2556ae4443268f8c754b8e84d1732eba8319e7cad560337e1933e8f2395d7bf100ce65e30e8a4aeabfe2b4e147e87098012f20f01937f1a09afb10f884216e46eb02d24be5b25c78b22d6a6dbc81709d7538ef7a7cc8945b6cdfa9d1b69ad8ce7e50d70551ffd5c5766122b6b1ab4bba7717c01943fab3a9e26272a9d672d2f869ab81fa5babd2ebda49f1980bc235b34df75331d3e461be3e72f783723ffbfce5ea9a3cd48cb0b2c51f90f5b7836fede5fa744cedb0225f096cfdc1a2b3ee9ff4105983795df743e5a205ebe6a1e6fa7421aaa7ed2d90d4c27d70b197895c288b17352e376b635eed9cf01c4a6a611eb9d897ed0cff7b63f2fea62a0ffaecab3053aed81df96ffd344f91621f91f1d2deeb70d8fac2e8e8b99bb333d860db99e0b2c167c436bc7d45d23cd45a9d64aced4b48f3ac512845dffaac883dd7e6fc0afb23a30a395bde13ac97b196be6d017eececc2e9ca5f3d7bb1b68bd8cbeccc1fccb14e8fc08f82bc28d889113a6dd3206dfe8e91836e41662fb1cd82ed45df99e57e0cf1962c94edca6cfec636af58213bac76ee166ccb7030cfb1bc68ef4b7f4be97a7ce20e6bb9ea02a845a4fb3cbd406d90fe642bb498b8beaef5635207124a3f39cbb1e23c662160f3b15e1d6c0a6417a56b73b9eb721d396318bdf8ab31c276678efd2ddd50733c9e6e4d05d789d5ef073f1fc8a86337db057210a72b097bccf2075f4528a4492877ce7577ce96db49e519398037617f53c9b16d8f23f9dc7259a5973a6ffb63d3ba61d7203121fdb4bd59d47fd3a4a493bbf507e115b9f3d69e64fbfe4b5e164aa326f76967691a0eca715d97cc72c13cd79974d6ec0f83bdba215a0fa3270d466b7c783ea7f11dbb754ad65fde3bb24cab6cefa19450b7597318f982f763ccb64b73da8ca15ba3d6cbd5bdadfb9e2dcf9eb3bd853cf01a01af74ff397b7c2f6364eee459e20f42e0d77d351e4b88223cafc0532cf5b87efbdccbeee68ab06ec6e7129ec46c7e7a3a866d921c01f77dc38df9207ca00ddff19de40786d93c51cf7e9cb4bc86eee613c922e535f43282ef5b46be4378a43545edde67a08a418fa7f1a094959e45b760b06db8dc03d6df37679df734a4defe33c7e79a6f19e2186e39566335c76bda94c50172e713cf5d62fb8ed81fddfe196ecfa6216b23833a06ec4bf1a16c27d6603bf2c186e9ce79d0910523bf8d0ddde3500639c9eda47958f7de3205ef0ce33792ff599bdf9d7bcdbbef75d6608f24d837bc85c2280d92edcd1b307cc40c97f541291b0e03f6b89eb5d734fe78f7fd951e26ef1cca7c013c9cd60f793ef8a2909739e1b56d09e52d847c59ff3bdecfb0274c3125dfb3e6f04ac70769f334774e4f8e428d91e1656a86f2bd4cf6d0da0ef018a036780778e8e12f46e66dc8f337afbeabfea226907c5b7928c2b3cdcb751ea312cb7cb063c17e488ff0ee7680d739fb5ce018758ce8dab15d622fd3a4ee9c412d9b348f7d613b6a8f61df62fe205cbf8b18b0f25574d50ca831cec998935fe124bf1e94b29feb636ccb8de8673361e78451288b15e83a77fe8d04e0dee37caebc85825d6d00abf293e375e709258f00233ccf762ee8e2a11a27857fe4e1dbaf788b8c2f2de29db2bdf8347e8a9424760dc6969bc27be4ebc9175b4fec020735c1055d7d6194c27773d56ba8cc23ffb4c4f6c4e5a0dc633f13af88e89b4a3f61bb7779c7f6dbce4590a70e48fd0acc0df675eb78c84129f1beaa3c67f4201ca9d82ee95eafa6dc75e78c8ebe6227c85d9c837834d83965b111a2c8cfc25473cb31d655786d012f7fac8a641c61eecb25d4c023c11e1f940de5654da1ef225e179d7137d7a7ed1a00aeeee135c076b833e2089719dfed6daf800d303ef47a3e39d293fc00fb14cf7fa86c6fbed1951d08e4c6d72ff5f413afe2f9483d11dbd932f9a5e76ecf7ac6477ba9d4ea5880efa4577d7616292f40e50fec2beaf6734d91c1f0f736f558d09b57d3e078d2e5de56b6694f66367e8ee72e1f3b27bc427c59b970fee0eb632195c4b69e9cefba4cdfcbc4ff2e5374da7c2c14aee8cb063fb39eec69c281f6c2feed8f5d81fc35f44ac3b6dc7ed0c4482a64f29f84ebf71c7bc00f12c4ba6c5fa116c4d97ca8e65711c8511408d6879af1d1ce19c6ba8caecf9c884ddeafede359f73882fc447923b6d3375c437ad60f5b8cabb2b8d2e7d3fc2c7f43729aed1cbb0a382c87a650cf1e603b5a4019f6b1a11fbe9540ff4f5f9e1d512de3e5bbe848343e6d5f56faecbbb366c27acd64514a7d9c0ff514e648d99e55c21998cf63d4d44e792f397e5a4c1b327eda1a28c6ce81fec6effb40fe4246f4669d401fcb63a82c8afde0bbf09c658dd1e7f413f3b7c2e59a99837e596523a8dfd840fc37bae9a7ef08c9dbdccf02e09646477e09717c7923aaa704648a3f1127ab645804132ede1bb0ff8b353ffeb02412efa063c0ffcf10d62bd9327506cb5013defc2694a1eecc7c7fc65d481fcd25170067c4f71db9733fe0b9223cf21139ef0ff79039d1a8a21cf24d0ef78b19ef45cf96c50ebffb947e3be87d95b7c767e43b1e94fb7d75fc2ad0833feb0ff512c6e34a9755d1e32f896b9483b59b5c507a79b8067f7406dfa1aefc887b635ce90ec2e3bc2de2cb499f5a2272acb31797435d09725d2ea017fbf3da9c416c4293226eed5e44cdbefc764d7e06fdb1b11e62d6ecdab22e7b09ef635ed4e5ba0f6dded76f0dcf43cd0749f7d52d50a006ead1f6d7855c371bc3bbaeabb94ffb2ad0b9572f646f85a17accaf4d8d34700bfeb4792ad64657e6e38314556033337bb4de83fa69c623773eb2283f36d6c701d4a179991d476c8ff107f09028df6950c77294cdab7d2f621b57579a5a98c72a2de2e73d3f0fd9730c07cdf672fa0895c58753cdef41660ba07306280d32546079e6ba5ce10b96b81f6c6fc1e44ce3076a416b143ed46cc687f238666471730ec43d9a6be66227fe22a7e90bd957cf39fe2e69f3eee91ceff3c27fc0b1760f53ec87dfcab4887277d47616c93f67e13db4002b54a09a2b202e0bd2c7791be175116656017d804ff31bf6bd1839795c1b53c88f050ff10f6beda7201c16091e3b633fdbc2ce59a6969c0e91531a50873728c70bb3ed07b19fe43b6d763e87525e698658411f10a91cadd2f3d989a3ab7652737da0e6785f1e5ceebc33928fb7b25159fc0af0fe37f35c973dd1ab46c31779befb2af38a60c21ff178775d4cc87dfdf8fa0820b79e5c77f2ec610e42523324db55a824676c2f68467979ff7b12937cf710cb9009961db50f4f7cbf7b9b07b68a33f4a39f70b12794395e7f866ce7488838352e676b637ef4e514ef051aaf503fc30727aeddf3931dac123b78b03636605bc2faa1b9aa79ec9df133026159f94259f49ef1f006f39b2f97f53300fbb436f909f49f7bf0075dfeb9acddd0dfcfb84b108fea9849b193ce62688ecb55cc9590bb3339d1c476bc9288965426bac90f1cce0e756cc392184c81d86b68bc7c5795ebe718f3f0bc1fb4efb0ca66a22edfb37926a6acdf109ae26b5d381d179a14fda672f5e49afc655da977f5788ed5b8fced0cd270ed7abfd4e357bc8ad558978b8e9dbd36a258cfb66998a547647f633faab0487de9f83099e6eb89faabb6a57db0597e624dd8fc564fdf435dfa8a35e107fead19d84660ce33978926a9bf9154c481f253a892fa7b57ff7bf295e3b16946f2d1c68da9bf18031667ad4b3fe770c27f1e8cd4473c27faa678d6aaf97d8f6d91582dc2d965e49abcb0a663a1efcbe9acdd6f72704c33529a3398a56bf772a57cef475fe0efa1bb4d89af6e3fd4b84cfd0cea6493553cbdebcaf7d97397f8dc3a76e90659ca21432d5036fc78176f64ecbb6bcfa6abc0a61b7cf31b6779c432beaee5c56b91ddbfc1a91c0731b10159f9e5992fb05d908fa5b6fa54ccd0699962dbc8efee79fea094bcae2cc49ecd34c7fa2690cbc81328aec2286b19fd114a6dbfe8d656518b5aef58443f73fa09eac1585d760a14fbdb1396f87a5a9b3c843ac5b647c7e8e20bdb1c6529f6cda69ebb8d9aeb93e63d80df17ebf93d9eaf760ce29bb5f3eadc62e758e737e73f74e552c707a047baef88c9ce413972e78f2dd8098d8db6aecfd31566cfe26b9a6f3c7a84c0f16c9ff64619217976076caa9947bad2d33b8f1cb88435a3c5bdbd9c936c56059938c0720a6a9594b4406e6b17fcc53c4401d6795599bfb7a917c55e68e6fce34fe3e8bc7b3c8fbcd3f2e62b36ec0b66ad7ea8e6b408a0be70dbccdb2a2b450ddeb9c4e36d7b5db9adedf45a4612cc45a8605b6cce87b2cdaeb54f35031fe8d2d85f2e6b43c03a667ca0ada8b95c0136a0997f027f8483ed9f6f781e19fb77ddfba2607d40447a5f2c76ee9243ce280d4e8bf7fee0a9ce5f94997fcc9f783910cdedbff315c1ce21392a6277646d6c5757d4aebd2b8fc5201e511d772f765d39713b28e54d97a7f89c0ab98067c376137b4e7450ca08fb86fbb7f66982ed27df65f254783d52bd4a636bf8fc798a32bb42cee848fa8f2f8f412616fe8cf6e061ec6456c7ed0c2f0baa3ff6f04bf56c96a029b561b15d2bdb57e4aa67b57e86a4167e3ce20399cc5be8580427aa58d93cbb63599a6cfbdf90d4b43d766e8ebfd5553fd97744e4378f8ca4e8e5d1b1effbf8736f42c02b5efc014a5f3e8bda27cfcf22d887d0f032e857eaf0b730b36721d46c957930d8a67e6693ba3d976212e5e135a43ce3ba62d3fa66d80b1ffb012feaca12eb3cbcd6b855dce62c5bdb1e622a1ddb3e94c53bd69bfee0eb83892bf56cfb653fa603bde6881eb1ceba80efbb1d93e76cc775eef4a06c6f81249ef4e76fdbe25604db47362fb67a1be17720f9c8c93946ce2821ba7af3a1529e0cf5d4cdb911fc4037c71964369101c6cf0defa3e0b41de37be942503ce3b49bf7ca907d495d97cb7bbd3cefc8e8f907900320329ed4e6135b1774a4c4e4204f9701d8a0a037893faecbd45fc7c79ab80bf90610a71d7c35df2c9446f43b96b13fd872bec07d40ad28f937f5c9f07de0db167bf6df267ee6f616285dbeae1d9dafda8681fc12e3bfd46bd6acef7dfa8e90607bb52ed3957a8f631fb2f91dd5bff7ea1705d48be507b2759e933cc795e4d22f6738c768e40be43d3b7145994fbb9c2510fb2f808b2d835e2e992f637da562bd0af8579495b790ff2948efe5f61ca7954337f0650765fddc31e080b332dabbe579e76c13e40c6ffa699b06d0e3e672d3b0dfd68977a669af9ee193b5ed42097c7cd1e1b99a3fa6c3bd4d7041edda752a9a2f88efb19789c9de500b355e264d7ef5395fc469348607efddcb05e92456ff611bf83c2ff31dfc3cc825a4da34c0ffce0f30f7507f0ffc9b3507a246e32cfd7b6aa658eb920f3f1e412e036a4adcf399f68cbcadf94bceea8e9d311276ee92f79cd2d939f68070b0946387e70a3ca6204e7e05c7dc778de423884b9ef02fd678fb298b23bdad07d647c8dc7bef58e76d1545d05fa433b7e1dfc5a265abd80b24de8c8cd15057605d13df3f6b72e9434db01a9faf9671abccbaee0dacabea181cd71bc33c7dc2609cb0bd19427d8f4a7bf022c13abff33148feb7bc623f18aff900f807511e0cecc89fb5f722f53da39e7f4dfd8a9e2f8eed838554f26bf38b898d437f8ddb9af16d7790d7a865d4fde6c63fe775353bee94f9cd77ecb1e78c9200d67b72d58cfce139280ab2e4b633461c72979c268fa2304b4f9ebbbd05316022ab8d13d2bce4fdecc1fda92d3a25722b648f611923619ddec8d11b233f735df9f9f08c0b913146395a9d6c91ac67bae6cdb7311e22d3cd4e0e01cb5e91feff37c159c35c12cc853402dd0afd5c89dc4adb182c1d7b2b9b5fdd47ade30c8d5c9ff0b5bc66cfabbf5da333684d147c439b7e9b506ae216e29b670cdbb1e27b25f5988a50e1f0defff8c3ba2bfc2397404e545145a233122c4b6b3eaf33d183cfbd93d783ba462bafe50f5e475b4d1e5e6bdd52bfc38bf57a5b0be3fe791f0b7abc3707a42eaf77ef768dbf5af7e35f7ed5e8997aae9eee5f9fbf3a7e81cfadbbeab5a317a566cd156b83af5abb17cb0ea6eee1b42d9a9cf1a01cfb717245720af9803a8e151a856819d1b51fb7a763edcecfe47cd70c1efb549f35066867b4981fcf2887ab9385757f7170b95acff6745698bee88f0bf1ba40f9cefd2c6cecfb463ebd934d44f6a61ad1c5be9acde240108b9062b950960e91b3e9e68a674f797bc001ce63049c766bae003c2862f6e6368eae9a29726d8eb58faf63ebce21179acd53ca570bb80192b3564d4e241811c817f9aecbc1b31c9eadc3dc40bcb07b4c2d009b08b593a2bf9871a0e7dee1fd7a3ddbe3a6a726932b03db6cc26f3545bd623b1cf8db64f10efef2690eeb6f6d619ddad880cd71e253d7763cafe17bd43a09722df4dfe43c902f788d55b56d58cb328de6413d9253cd3b187b795aeb01d133ea31f0517d0fcf68e58f673472efe21944c678c668b876a6b5fc89b0fc697eebda88c3be8df88c9b9bf57073f6ab7c43851c6cbfd9a47707f8d16d6ee875be61fccb30a25bddb30eea7c1e221e4f7b8cc4dc869a30ace7e3b688093e00f6e9432d7ce8839afcf6db583239a7d19de36ad57268e60d87e674f1114ef8cffd24e77525c1f6d408cb9a1d953f07f3d2edd53a1b3f9d8fc7f5fefcaffafcab7efac1e31b50393b5a65a5d8ebf1fa631e736eed5e86ab6c78dd4bcc3be26729dc27e50cff6c6bcfd9f3f13d87d7a6a783b21077a6e8697292b33da59b1ad1864f7dd1e46183c738aedf453d9e633adf313377513377b53f78cc3967b00cd7eed60f78eea2c923df83bc255f39c232d41fea532f5bf02bbbd7fd7e75dd81c16af4b051bf91d160ea989a64c0f091dca7d9d477713ad4037572f3783db231996a2d589dd8eceaa442cd10ec73679478ee7c84d727eb5fecccf11bb99db7b16241e43624361705a7e42956bcaee64263934b504bfde8e011a6351f0ad47bb2d73ed6d5bc8ebbc6abd3a240473cde5951fbc664cc6dbe0ab81f622f837a34828b49909c5e51559ebbb5dd5fbf1693fc0e3d7564ebace2f5037dc1d488a98f3eaf859f0f3fb3ce3ba9fc061d64724d9e94f48b5efc523b312af5436d625c6ab1375919f114cf3ad17ad46327df2b433cae8d95f397642d701f1ecf15e1831f2023923559cdd782fae151ac1272230663578eb15e7e1777f38cb2d08c72b876bf534d49727d6a895bc73a633fa6199b990f5b8ec2cd07aaca36166d9e63cf993f7ca1e40147ad747200372cef770ffef4363e2c07c5d648006bcfcc15f06bac85e2632f95e6da25f89db002797e31c9ff7f873195efb57f948c5bbde406ad5e1a78ed718af5092ba293746b5cdbd742ad6b6a3fccac1a3d346874e1c0bbd2d893a8cfc0167e11cfa6fe04edc3d45b23d93c6db0b1abb5bdf57d9efbecd7395855f2877ece4c2f77feab7079c09c25c88dd608e22b437131213942c018728b77e7c47b58a33ff18a5ffac8e67eafad91efa7dc7f00e3c2c8238bd646988225ee05520fab66a8d8b95fff47b8a5e758b4780799775a509d0acf22b871f7450ec5be54ae313a04c2250feadeec0aad79728657a8054866c39dbb781bbbf6e351e42bdbefbd9c3ea0c71723f33cb71c7bb41e11653587f965c3c4fc1f84b76274f79c2dc4e77419fe8e216f26cfaabd516604d723defab28a3e5b62cebd936795793023f5b1f57cf473ed07a5049905f790016f996c5c9bf37916abb4287c136252f5bc76e4beae24a26144d8763bad1de0371ed53c38aaf3f3cb1196a92673b96b3e6165606d53bc061ecf1c7fd706639d5ec2b6572c89e932b51209f567385dde42cf706c1bfbc0bba08a8ec0b3b527a73fd59b74f0766cbd89348f42774bfaf803562df9f5aa269aed510bfe11e48613a65f35c9ad76e68cc43ed8ef9bbffebed3eeba203a32f3e5f46e131e823a7f5b907c6c59f8833045d3191fcae2d31a63d7a53f118d5576c73a12db8f95066b6cf12b34c5ffacb273831b7d91eb68f6f45e6e38b38e50bb9c00ef62f6577e8fb2789627808b2b084e446afad9601b25593b5e1d93bcaf1dc0d925215e17ddf1116e19c66f217d7d2ee043f6f2cb57c82dd0b95e65e3a23fffc06b5bebfc471e1d8cd4378ce8aad95c1102af11d84d4f755cb50c0ea484f081bfeea7dfc6986797d435f8bb33d886a40e3ce274e5c2da5f1f7e5cb6ebc5cc8fba023d6125e658a62b0d76f023a8cae775f2c8cfba8c65903840cef61baf6f8b5997c123170e06b6d3a1fed2770da8516472e81d7b03e2354ff6c6b4e699e6a3402a7f03d7f9742c7a6971778dd25c9b5f9fd6a38c997a4493a947b4d6cedcb778ae3027fc5c9b6d72e895d3d8ced8d68a52729c7ba59716b08ea4f2636d71bf5a6ce8b9b5d3e35286f5a06cfaebc1eaae87c58bf5e0159e53b2f6e90792ca667fae4e4b3c6f367ef676226e56c9f0633b110fab64f119f2970fd71c0d9d411e6239619bfc111991ddf4769eaa22964fb69114f691f7492f2bc0b33a3577cc36bd2c5cf32e427d3ae0f5280fcd14f9b6cd8dd7e657b14d2f527d8e1d8fd230b3abfd537d5f97cb5a33927ccf8d459b7cafb2f63f0e96750d049bd3669bc2a67dfc7655da62f8a73f6f6bdbbc98f412efef4f86476206792929e268ddce95ed27ae9f96c015ac4dbe0a642457e4a23438252f788b98baac864321cdb04e68632c633194ee31f507e38351ba6be7e7d7e2712e577cf03f8bc9c5d50daee604a5fdc14027a9da2c68fa241ddc2e1e05fb07664570917fb42b265cb4807808bbdef835c50b3f90bb1155f32b3fb85cd1f08eb9cb394aece1ce5de27de9abb54d28cdc3268fca8b8f9d90de5731f00174f28c9660b55c5b2f7b97f110cff38fd8df3edfb1cf4cb8da88ad8c48ece3c2c46d2fe0ef2bc48e5d6516b56337f81ceaa75fb0dfdec937b4f6f4a6f1fb356178dd1b25c9fd6616b59ff936e7e80caffb5e1ed0eee54df1deb7a4f2a04f47a17e5ade7ce7094bdf591b58b642fd2ef47507593361f1133b394d003fe58ca0ee094dcef89bdd77f2ec817faf6b42df7e9fd377453118eb269f071c63ffc676251c292467f252e6de5eca5c397987597a31a6326ae49fd0f8740d07e82a9eb371a9f840b8d67e23a293bab666cdef27df45bcde3ca3ac08767f996a8a45b8fb808b6d9b6ad0bfd013f1770c2ae0bc791a2fe86aac179be7db13acc302ac7fb91603e44b350e6c3e0b8465049c860d4e6a51ecdca5c1dc43a5b9d10faf2acf9ebbdcf4ae4d561902ecbee76eb9204be310f8ccff02cff50627a42b45dcc771b35879dd8972246f533f563fbceafe742e7297478ff02a7da01387e50291ab3391c50936dc63ffe83ffd0d36fbffdcc7827c4be3bb4a65de899138e35fcee3ab58ccb80f1faf415b7d67c3a53d99457b33bee2b36962d673520f37161d6e586cba3641457dd5cbc23c9778afbcafed18fef2e3b7b51d7d7b01f4cd2a1b169ec943ad34b6cf777651b29c8a1ee097ee77fc9ba6d8e3c3e42bd7b27181c769cd5e8d536ce2a59ecb7dec073f1f5e9b2bbcb235263b2329904bed50e8e738f37b78b2107aee409e7881ff3f6a6b08fe0e4f48b17d7f8387bceea542f481f3f86f6a804623edc13f48ccff755d86e7f235d66dc3caeae77bbd97db01adffff57b85878cee5e5b8fc947b15df7a27af9bb8dbeaf4426e030fd38c434e38eae315bbb1d5aedd7180bead2d968aced1aa3347ca3c25f8ac164bf2071cf185701ff4f1807f59d342307f2097a86f0bf7dbb8510ef5621d39208e0ff298d68acd8a704a622b0ce62f5a9b7c348f5144b93d593ff9f1da4f5ebc8a8364bd986d82ff0e659bdbc1dc7f75eb1294728c68fd547d4e8b21f2ba71ecc9f8beca7e0abfd58bac6f56bcf0cd1eac6f86e2b2a747f323d4f799fc2bccf3097c9ee7e3f1da989d7425101d291a410cd6980f898f1440edd52a9e0fa1c6e02ff7ba2e1722a94d84faaf4e7ecaecf8810dbed55c1b6ffb480aeb81f70edbdcdeabe7e73ee1618de4238c4b0bf236c7af626f9eef07e22fcc689fa3fca0947cbd4e376653133758738b0f332effb336e6a37a5edc47bed1676a93c309dfe470f4e95ddcda97816b94d3b565fb21cffdf6edcbb76b60df12febef8f6e53fae51ca6bf7eb976e89be9572b7c5f17cd76756d76775825f3bfe62b866be76f879a84fd5a7dfe9f51fba73c1ffc73e6017eb5a639ca73f622079997d1497dacccb570d66ef7c6fb126e73bf8382fe39d455d2f7ac43288701413acd67af0efce676a153f688dd6bdf10f8e4c5cfdf855d763e171956b3bf4373657cc27bceb0879a84f03a8d75b48e56f323f119e835c9f25a27714c9b1877ad9c6bca2bbd38bf5c86ddd0a2e81c19bfaec2c7ac7f105e6d718571ae7fdde5645a2f18b8f4d7c51b46af3dbaa4a0efa78bf98cf798cf437756db92e8fd2b5bb4dd755bb7e4299c1b6c8e21dea154fdb1eb6668bf53cd40b93e73eebc3ba6eece59cb7bc004ffadc198421cca760d1f57941ba3b4f756794ea729ad66bd589f90ad11842530feb90bac860226ada7483ef91af924d614ae57dcd4fcffbb8cc91917cece3e413ee6df211324a0b3f73edcc52dd2a21061036bad34e5999b379e42b5d2e3bc760bf294b18d77ec6159e60898160e1bdc4239b2b50067fe3bd54c0df3233467999eab2986a668e75e90319649c08fa5b59f92a43a9665e66ce200ad7ce36d5675bfc0c11c9d625106cf1f02ede6ff2d6dffada872e6fd8375b63de89a7c65ea6c9435135a70d761238b34d2e21188da918505c5268f236397617f7038ac599d21a72a9c1775a5073ae7045f0e8f8e88d0f0cf6a434e3e7b117917ab49f730f3bc2696e39c6bef1ce4872f0f727dc19fb979a31152906329ba704d3d81f8b06d8fda48725ea8e8fc12759fee05b5c6511e14a314a78c775f5730e1e805fe33423011b31941a9c10e50c5a5cf746e738be77beca80c7eea19f7ec43023efa01925b68f6b5cc76f5feae27075774173fb53824f11ee2d3e4b16eff0bb51d6f8bce805ce396af1913d2c72d6c5223371ceebda016e79937258fb3d5ef53fd50e703aacb5a8f1a36abcfd3f5c7705feb5aab92eeff26d7ca79a3ccef702d469259a3ca6f5fcc0b5c8e055c757661f8c0fb34ba8778fb57b630018d8fc6d8d81a2d218daac1e5ba5d5f3258ff1f73d217783d7daa75f7919e0565c1ede35a86399f298607c5d0e7feb8ac66a0c6cdb766ce2785e6378625d66e4eb23f75de37d7eb9b79f17c8f8e970ab20938f822ce46b5d5073c3e9cdf7aef9f609ffca6272b9ae65ebd38f8bdf1ae937d0e1eac7be6b8ba39a712f63559d38e6f48c0877cc3bfe01e03da231e8dccfc209dd330670c83dd7034ceb7a0026f697426da9c9e4aac00f2a09d7528d979932f35a9555d78e1ffe7278eec38f494caabda68d0df4f3a56b7e9eaeb2f16b8e53c6a77f11a3cc1b7c4a5546d897eefae2679603afe19f3619d9bf4af1ba6ec6f6aebed320b8b2f2c9df5d9d2e22d367f1b13ab1712ae8abd8d6262a5cd189253d72a8e7a3f571a4fe45be8b0ecf917ee6d017ed427c5013fbfecb9499c78f3ee71b8a7f725d61ea371ffc1b6c4452849d5aac215c57cb438bf2bc008730139f5a2584af69ef10aecb9ad3b7830b998823d08559d37fa8e5bf36610f36f3b1071c7f5afba92ffae3d471a6bc9be78dbf177fe028bcbee3280ca551b6734a0eb9ea1ff305fa89f8bfa0bf4f58ded479af547cd71f81626c5ec7ad58ce32c7c6b61bf8c41d5d605f3822afed10efa137ebf00af126e11fd7eb958dc58552fbad35a34c60dd26af6b16fd7804bf93de2cd8e64c45cdcc391df24125c88567fee2d16fe4a6c0a9a66758effd29bfbb6d6aa5b459870bb2eaacdd8a8d2d2dba984e388f72e1b3b2e8c1dffe2ac78c65651d1752409ff0756f09e4400fa4fab97f859569631ccff18f8e2d78143f0f660eb5d3c818a52843786f120cca5bb93eaed74ebe76c6e7fd80c45a5627ab20311dfc6dda3acb55b628dafd9f57f87bf952ad437bbd4aa5f4f36000cf72aecb8ba62e0ffa30cbe81664cbd4a6c73a316089f22dba0b866bd9627da582c4853a31af2be5c1801817e4e2a6655af32fed070d464decc5d0be219632259c0c0d771af811d69b3ae6a4a9f75e251c968d22c8b726a736c5f28f8d2f881d79d8c5d7fe576ba3b3569f7d8db4d9eb6f6a879141f621c17877b877093fedbb3d5035f888cf00db1e0eb6bba680590c0da8a54ddb3aaf3179ef177ad119cc435d4e44bf1a657e5c466b67ccf202145d9d3ffdb51f701f1ec4d6a83d69166ffb72ed8033c6127746f449f3071fa15136f3bfcaeef5daceba6b7b2902cf99918ac8c17edf370f359cd85f36a625de6fba3983fedcf55a5ec5d1addf27bdd7f7691364e265e73ecb6dcdbd90de38cc3ed0246c7f473cb1a7b87ead6d1bdf77cbb1264f896d38fbae7c81cf83679c51bee79bdf607dfa422900afdd697b46cef0893f9ce15328c04e96da1e019a514607ec1fc836de0bb7bdd9abe116bc33e4e18ce9fde0921e3eaa55d23a8a84e987b5e8d6a6c2b5f7bf5befb275a6367ab1b62f21c38f7a047fa6b55f807f3094a3d47f21ab557791cdb3e1d51746f2ce9d3fc2595d770c7de56f7e82f2e0b4e49aef22d3ba69792952df608e4c1edbb89f2fedd647ee6f04abb064abf01cabf065ab7005ab30f17f995504991de2b9349df73de9ba3c285681fdca55acded598e6b0c9bf6f813c3beedced88fe7df7851438a468adf56315535ec1132fea4acee6f2080fb65df322f4f2192e576c33163709989e2972b1bf9ec6c8d94afb3fe4ae3d0771c89db71c217f5fdfff0fbdf62db1cbc341653f9beb24b981da16246bf1344f7d471490c5e44f8d79eec7df4d4ecf7f60798efdc5ed77cbad609dc9bb4f2f78ed7b8379ee6576e29d92586bb85297775f4e394d520b354efe0ac7868c11b6d52f9a94506ec43421389271e3ffad85216061368c5daf4973c057eace36c536f5ce99a7489e8ff05ad0b3fcb673866735bec71a60aa9abaf9bf7c1f5e3c187fc8c74874aec977eae8e4e0c85f9918fd8d72c2b5df04cbfbba6e56d988c1ab793ecd6fbe6ce1b1ffaa6d9bd5096a7e16fe204c83046a136ace5d98b379ecc5a12cde7c659b0712c4e0f39a579f9d37354baf8cbd033a07fdf5dc26b0863cc3cb74730ab9a2fe376773aa785c9ad1705c7efad5e8f1b76b4a97a7bfa00798a4fe0ee2518e2639b91ff936363221ce43f20e595f7ed4d89b9a5fb8eb3b633d4a7c67b5b5519f72e64daeacead92a4f7ab9e54350b17e7ee0fb06836d8565261a24af6a21d87ce307e957a7766c9867ee2ed1065dad7c895b23aaf45911b763072e5396db84f6b522f94dc2abdede1bfad8c93fef7ab0e4bae23dfdb6116afc74f1a20f0bb14f697e5b5c1b51ba767ed89e1ad04393b57d6b8ca36f3ef54299784e5978d9ecb87bdbdbc3fa6c6bcf2d7127313d4da00728c4ee8ec8aef5d94f5ef739d19544dc4a51ff9926c94127e71ecea0d0157a0f33179eedf57f8a35503970cc97c8888ed87600ce1d7c1e8dbda1073f02fc82ac8a7bbb288167b1df4bc5827ee2effbdf9c1a5d46394ee8fb58ad2efe43fe7950eba636ee08bc80cf5c5829f7f7b97cf72262fdb31f3cd74774f5d69f6b25fcf492ba26dff216f197d435caca11ec106affd9f9e729278751c69ad2c474385da1d73eb05fd8c10d018700e585f908e3b2bb6eccfcd2ab8979e21225dfb1f4c3b8bce8f23c7c8549fe8bbe3d67a69f4b36cfa03f15b37f406eae9bf8421f9f2cb131d7fcf81c936de333482afdb02a3f90cde5071a73f1aab2d095a0d8d95cfedc03e17dbf24c0a432fddad9deeda1d4721bb3fb736dd53c18e590607bbefad89ea283cdc0be763f96d8c633127d769191510edc3a6edf9dd7ba2766777ee388fdfbdad8f258f6c9ccbcb7351b85f7473cfd0ff527cbcf7f250ff0da7149ec0be49380fd9e92c372110db8c2cea0a7d660192785215be053db02fcff3354e6232a774b64f29f5887ab4ac355d5f193c8b5dfa22e8769287de3b94b3b3eda2c4cd75694d63e8b9d59570ffcc730f7b3ed2dac461192b7af388780bb418dcb1219f8bfa4a8f91ef5c6ce7cc5cb043c29b1aecc525d9adef1fb7bc28cf4ed37d24fe25b7c419ffa5e8c0ffae152ec01f06a7b9978f3653bf2bbf57ef8b7c8162cb68712b6ff8f08f847d4ab27ccee58762203fbddc34fd50ed3798ca09713e06352f100e7637dc2fa6946849f4f7ae6fce11d43a9c4b65e4eb80566852fd13e3b8a9a43ecb0bebfc9479a51bee5b0827ae86994ae07eac70efbe4c69b6fd1cc4dddfb24ecf70a2f5ef495cae6f13cf605b140ceecdae5b2557f05319619df788da4ab93fa49eaa6dff04f91e7df34f6dd0ce8e5f00fd78c0e2ee4c3acc2af9a3835fac3b76fd6f55c6e70d645103fed7da5cd17e3eb78519f5e52e8e3730c727d16d17fabb93e9ba5fdf8c581da96c6936dd9f1c3810bb895d3e047a56bc16264489e36df6496bffc260c96b2cb493cb888ab6c58f80fec176df34020fa1bfb1001e1c338ee786c4b8727e4aafd7add7c5dcdc939155e3be5e35d8f36d59ce6babc1043a51c5ba44fe4dfdb644cdc1deb7b03f2b4c92796a59a348d82f81e933e21cbc21f2c53555e468182bf9f9da8f2f4c713ca5b20583f042bbdf9c17a5995b737e42e7efc4ce454398ac2ccfaf18cef0a391ef403f704f1023cf9c6771e4adf9c5f0d7f88fdda3e479392425596677f601748fa8e91f17df7dce503391be65e51144adf1572b12d8ed2a0c2f7fa8ed4e9766d1adfd00b448d9322a83afdffa0478906f565f748938757dfb139cfc2b64d39a658381db9d8e61de27553f9d3e6b7c74e4eb310ff0d9800f4d62f26be8575c5f311cae2f540799954073f1f384da3006a381262db0a76a8757b5beb5856f46d0d58bfccfb1c94f2d8c475d8ded6d34b0a3d369f7cf7a25a3ec8d876823dda086282f739e9770871d4feda99d118fcb3fd4af2d56cefeaae8fed36fa87e029a5b25a1b11b7b648ae8ab1553cf2ae91407a28028f0cc2b25a97ef058aef11e57f698ebde0e78b60cf091bd263aed98bdf847fafbe569aff466eca0792fafe1e83af97f7009ec4d63e8c7d61c4f903fbb853281e0dfbe68acaf45e69f37a582f519ec507ded3c8181df19ea47c1ec9de181d77725a20659efa7172f59dd9fd4f711707f28be017e26f04bc846a5c6e29fe21d7fbb61ed846d3b366943cde5bffc0c9c8c4777e48ec94dac9c8286fe49b9489ae7c8710df75dff6e962b8b06cc873ef9c11f67759ac63cb793611611d510e09bc469b1c9f368be87a4ec87c99e73fe4832ce8afb476ac33c1827899dada8ba43f21f4d7837ebbadef69dccf6c6c07f5e2377e2626c8c6e3b6f0de4f0f4a09e3d57af543a1b2e9f7fd7debafbeef616a73edbe56459fd400ded6cec85fd0def2aaab32792f72fe4ac0bec7f8bc63fb05fe0b9f2094bc0c7aba4bd84e82be709cae401fecbf970b4d2c948e69b081d820b6cff0fe26f2ce2a02e8c73feff6fc386dbadc547149b06006e18867e23d3cfb771d27d6e53b899932fc1bc00f4feae5691ff3a6ce22237c5bb4076f66575607f36c513c63d8ec632c63db98ec7ce20ba36ce704cf5cec58f79fbe8af0c8bfc384631ba5d9671b775e796e72ddb9cbefe0348ff6c059366ed6236ae3226fb1508e40f1f7363e1ffc68e8217c504aee60609f89cd81254ffecf4e2abb38a1eccec4c5f3a8eb979ecf3b93a73ea057ec85beed3b7fac4e97366671b2455d795153f5c8eb7b5c5fe1ee75e5c2e4bcbc5f7b29fa64ea8a336c8b333c65c2ebbaadde3e6e7274b41718e5400ce3d1ab5e0a2ccf198319807ad5ba8ee883c51be031d618d555b61475b989ab556bd76bf0ab2cbf621033f803972b288e16ee75304aa1e569beb071a008494c4ef044be63fb4e63fc4e94279a9983ac93a7fc6ce2df933ca13105a87f86fb094c7d94317b90b1c05e827ddcc1f6834c4dc4fd80cb758af5d2b3f441d7f6796724bf7666dee06db0fd013d0f8cd1c573bffe8437c9b17d44b17a22f601f1df90cf73dbbe3ee1e4bfe9c74ee402a9c56ae4c28de4e159de814464fb732377be6939279eb87a78a87f7f30bd3092e5cdcf508eaaf2d8e5bf59403c1b62c88e55f3f8d35e6065b2b6a13ff37ded6c818b2c3cf289f39841bf18abfa8178a86f836e38ad1d1eeb86c263f48d2d11bb4a5736b9ae0422d14dec7ba8d0e3851ec776cc09b91be08479db5b559aa5fa09dbe601f453357978fe616d89f07c6bc24bc8887eebca5781e5792f3e746b6aeea8df1d3cce918ae75b886e6155be9ce355361b1f265601dc1cc03f50f3bce4952e93bdd1e2abf211f099b3f3fe803a915c9f0e45abe55b2f3626bfe9d52216bb233fd3665f8553cdebf3a04729cb53aea65cbe12e8981fe2641ea383264d4be8d94efb1510cebbd1f8305d8e0fb3f15935bf6a7cb3b1aedf77508e51ec65aab5009dee64d639904abc16af06d4d5969f484e1fcd1e841c61eb271d94127a9ff883edc497c507b2583f13eac07fdb505710a6c131ef9d4be61fef63d55699dc36e1f0227108d0a78c6d1a11792d9f8bfd00d600960bf57a2802657e0b94452db7be593ef780f44ffc3063a6e7406667ab6c2e36b1751efa2137b26c63343cf7ecf5f531ec077ea001d7d6aecb5e6d7f4c498f99d16c2fa79c3e85fd7bf3018f4b7a4499c009255eb7ce88c363d91fd9bfe770ceb67b2c4593cb62eddcaf9e313a06991d85b2dd62f764ac07d32bd47793b51ce177f75c156a4bebb1ac924df36f58db49d2fc8dbf712f0e82d7d59dc498c4ebd68df250b69339f4f96fffd6b3d93d90cb91265b058ba1d5a00fd068e69fb610b7d4e5cefb7dece312cf09e4daf1b3b727ae3025c67654825f3b6914e9d9b242ce8c43f6f72d386d235f8a16ba12e475ff6ec09e412c367d60b9b9b788ac5613d0e585e726b1aecc39ac9ffdc1b7b577bf53c04ec2fec9d7586e432c502a3bb171b3c2cf16afc812336da6e6ba42fde609bdc6198d74b9e9598adf91390eb29dde637ef3857be1416fd16d859c213d8e75cee20a75cfee8c87de88d21b19948cf177bf860e1fb3fd3236827845595aff5ef7d72dd87d4a7f83581dad71ebecc1fa5a3fb3d7288e7c35237b97e6feb0bd9df883f0aa129bf9e57eef3c43a6f2e3993ba8d347f2659ff316935fdba2dcfa38fd154a5c4978525571615eaa35f6ef003f35f283982bdd0efe7be907751f6779dce36c6fe7655d45b7b505e386716ad03bb6a9b966d6f5b8203640933bb842af19e61b7aeef7dd5792331c035e98366f02fd0b8d920bb2d9b5c1a390f96a725936f61f8d763fd0df615cfd7dc33cb7dd5f59f30dda6bf0fea46b15f67555b232e8e93eb50c688f2f1bec6f38e1ab502af3107af42f782c33c9bfad6e8f7485f85d8d1fd6c6614ec8dd4eeabc209a91bc5a07377c221c1601d6a9822dfbb288e79a03cc6a16e67ebabd05523a3e4c5aeefaf7e752de36d217abe1b57f7b7e52e7e1c9fd29e7fddd73e70f64a1c2279cad57df99554848afa4a6069ffb5de3990a321fd3a166940ffa6f2c3b8fe104b0e2596d237a8379eab9db7403be9f3dc4eb097c79a34cc2c993cfc6d604705a53c30458c34f623b92defda10c75bb805fc07ed74e4e1ff5f703ec08d6f5ce10cb9ba53fc0eb0cfb3122a76774cd9d36b08e9133ab182c7745f6811d0529605bf980f233ebcae6ba7386bf76d8577c7031a2fa40c57ef3d3355c8cda351c6b667e5b1bc023096b573de6508f103aa30b8c6d4ad7af528ea18ebd3e46f4e52ff5645fb16cc2d72349fd503358d7806708629a4b3679825f54ecc72a13455d51af7e660fc369db9b7ded80bd5104a7d66e0d069bab672490872175ee611a4ef1385301395b9a1f47952ff09b2013efc19ffb55429f15c0d8d4efd6e06337d77a7ceb01c93987ee827997b958ebb815d3531bdb39a12c025e93f94e57904fee3796e3d770bacdd194bf85ce88ebe727c83a1975f2fda1bbc03662417fa3b6c3bcfe8de49dfaf7af317fe6db380389a9816d04f14d9afb227616e30bd1e3b44efd54af994be77c3c8febaa5e33e91555d01317e616d53692d41c3b8793fe9a3b77fe5669fd9f9a35360839762ac79ab211e97720d7baf518e93bdb748cd50fdedb1cd83ac0c3c9df7d6144b9b4cbc2aebf79675fffe4fbc1f6bc7317574f809ef085d95b9704e33d047c952da717e4887ca82cc49e7d466a9fea3cd6b13bbffa699bfb8e7d0bdd0dab0345fc5dd6aedaf4880a600e5e729f56b4dea8d2612e3658c655b5bcd0e56187733588eb7503f9bfc6fe0ca5a4d80b70fd07702b107b90d3652a238ef9f540e6afbf269fb059afeba1b07c6d7b5eadddcd2f4df9a7f94d8afabb432f4eca414ed7ff1d624083f985ca1b88c93ffd86e593f4936b66de9bf74636ad89bedd64f3789e52fd4aead7c9bd28e66554effd6c7e22e30e049ba33e6f5d53c0078f7357869c38b22f4fdf690038689edada6ff7231927fe6ef45d407e5523f24de2b25abbf5bc51dd3411c9354dbdd0a6a73f72e08ee8dd0ff25f5666676bfe52b966ee133b1e615b606a723cedcd0fcfc23625c1b2135f3e02ee739b2bc25a5e60f93babd7f2f681bf9d3fe1abf5c06af5d509e2b1f85b7daa8e95cde3d9f5a060dd2bd6b22542996d2297caef1adb8e7543cce8a113573cc7a59bf762fd158873633bb05e6bd4ffbc3636591ce5ba3cc57e03fda6b30cd9cb349c113957e38ca8cc6fd7e25f8e019fabc949e11909d410f969c7f79ff9d9e6ec4bf73e5e88fbdf998b32a298fbbcc6a560f9857d14e89d68c13e782dbfeaefac6c9ed625f8cfed7ac536a4b5c33ec3c0e6028841a9efd75e1b3b3d93d85c7a45d3eddab44637245bd45e4a20efa03a4b6e5d453d7d436d10097836ff6a1dd57ef5abb9434667ee6add02fd6c203ef0eafbc5740e9ef29fd63fada7c68678792db356a95c3a07c01f59ff97e4abd35faddbfffa3914dff2523ef76d9656b69331f5ed38d0f7641d5c911b710ce6b47906961b6fce21b86aaa73fbeffb8cbb483f1b590a3513a374af6c199c03e99dd0fc5ecf1bb9963ec3e6fef8ce1d1f0adeb9f08f5cb49830bd64debc0bbbc78238fd64380eb09c78f3ee25a9ff77b97773d4cce3d3b7c1e37a7bdd05ded7174616ebff6e9d51f2725ea95e44ee76d57bfe3994187edeb77bbe278b216f3a4f51dce65a57d90ff8c93b67946ca7e2d2c4e71864ef6bd043bfc901633dd2930980b5ba22068b44ecdb213eb7c697fde3356dbd44cf66cbb06cb20de478bf9cc1ebb58ef5a91fd3f595f5d61ecf153b93bf115cf014ebd4d235fb76f48bf1801e4945168f19b0b6678d41eb3faf2a53cde5535f59a6aab264f4f4e6dd7e2c16f51ec8202f5f3df927758dca6b1b89d6a274fc3fb005591e52f03bbafba75e13b49fdbf2bc73ca048f01eb108df8b2c50b5f131fe3fd8cf852661dd3555a5f196a71db73d3faf7b0993be01c7c9a737c4e6b2be073baf15fd0e9ad8eadff2676b8d48d27337fa7089ed7aca3a2c9a5c8f8f834d7944de1547326aeae16801fa1f13e6ab7c273f1b1279f5cc2e753db1dae6dcf45f5efadef01f90b246f677ec6f6adc4d735738ccfe9d835301626b655ff8de796fd377b6e6d5febd2bc91076a0ab8a24666fa6c3cd96a7a1b9cd16903fdc8c32c4d201e3f4091afd869ed7febd25bbeaceb9af8269566e624be2394d8476662f310b39fb4f33dbaf95939d2a0ae9fca5c853bc3d812c6c796920eb6235036d8661291b269edf31960424474da14f838ac7138663f00472f6f393ddba6289bf1beb2ade3159f3b6708fd74fbdf7b154f4b5d79f25fe0dcc6d6c6e7c8cdf9775daecff962e3fdf7502a3bdf7475fae69858668a26cd39707da0f47213f5f934ae84ff3e1865124a23db4cf8b56d8dacadb5117bb200e6616b47737b6a4fd746eb77c15c24f6ca9eda86618d9436fe04b104721dbea73d9f6ddbd841ef9ee96adbc4bae03a2aaf226eed6cb96e2c14714f7df9def113584f78b45edf382f0ba551821c14854ec9d9599a8683725c63a6493fbab73156b03bc838796e6d8ccf0e37bd382997eb4240638929b736c4bdef2e2efaa313733c85520f97f587bafdb6276a7409a57bac1b9b52853ad25efd19e989c59e3f82f31dfea11b6a9d578fc30907fd00696ebac076d401e25f330eb9e5c31366053292b3a394e830cbc70b6193af07e5c573b7d5cefd39d3bfb1cffe0864fb08bdb3ddf2b113ec81368bc68e91fcd28ccd6d4731bbe16053ec953ea68ccddb430ff86a6da8f18af04e3f4285c493d81a6ab68601749792621b1f7f1fd883c89d737b9bc8184d0ea11f18d44e03062981b80f9647d87f0a95d4f19c924746740a492fce177531ef6b61fca607522286b3cbcd352ff941b9d77881e8edf7347e2204fd20e65cdd9f14119efb9b668a57edc1e3f1dc34a38857f157ac09c96ff558c4ab93fa7bed8c7fabf10f3916273f2ae47fc97a6cb0ef36d8236970da8e600ee4715ef307017f4c5c886aa7fffef9478d2f9556a99f2af199ea793d0683a585ed0cedc1c5ab4afdedf7faf76edd0d5bdbc7d6f465f338baae4dabed9d6a60f93616bbf6cf53dd4dd5e56deac459985eaa6dae96e0507f6263b65d9a14af1f546abe1a60db639487f49826cd3bb922d29ff81e2d24824545c628d9b9cbbbe76e8fbbfa1ac0b6111cadae6c7efb7183634df5d7f77b7a1fa8e13092624f30f5d0b39c9541bdf38f3ec4f75b7bcfaf926267fce4bddebcbf8123abc5e0d77c407953f347bec16d8dbf9f6c156a17c3300ddd7944f52e5eb778ffe56b832b81b3a3627afe49f30b9ecff563962e1e67e881d3cbf7dc342387b55ff31279263f83f1d13a80f08f7356727f988f08fccbe7f75fd3f76738662ef09e4f1c5c03f51acab30aef7da8db044cd3f00c583a6227e49a4bfaf158838da849d180f62db932716d512578885857c226b7839c4de7b86694d67f8759c23278f9308193accc0986b1c96b171e5393e957448fe9b322f684320a06cb95e7f0d0b391b9267609bef9efeb06b0deac662f7ab9d73d5e9b3eb9c0dbe719ad1d0dfcb4addd7946751d9bcdb1fc459d3c5d83ed91a27328b558d42086f7030ea6d56953402f7867943035381fe6602beaf214f6147de64730e0f27ebff25ecee88d1d99b4b6bca2428e6a3fe08a502a3fd9f95d9d82b366fcc408fb1c868af75ddefa7e9def678690abeec47d3e6d85e1059b91ebd6ee25f78f67c875d4f1b7d571715f4865df5f025bf1c96798c0b50c266526ea33b04df360f05d786e0a635f1b73d973b6a97aa4f5d9838d682b9bc21d6cc4fd80950bc38f4d1fe700b62bc50599d3a2c73bc7f983af3e8fdc86da364ddd800e7e70f9785ad780a7eb3cbf40c79718bba45be3ed01c60e7ad1b536de0dfc30d97af6c3bacfc0be4c1fef0bfb653779da2fd8d7cb35c2297e21b50eaf6b76888f0fbd545fdf8360b0725d4e5a1c9e3ca3be237d37e90e7cded0cb3c568127f34fe722b065b6b750185e602f196aaecf9eea3dfebce705c0d637d7ec5c92a705ee37b71cb7cf4fb97a7ebd9a3f9389ffac5d8251d065e06118f9b2d5e4f5d7067080704c8da758cb889d514678ee1deebfaeb166b8ff19ccaed0e009ffc0e1cde218a10757c4be53db7fabb8eb93efb0ed033f646a81096f01f481257560a4179e3cc5ff6efafd436f6cdaf78ee989c9317c0d17354efdc58ccbf7b4d725bea77accebfefefe422a23d7a43d3409e767bc3a316354ecb0ee93d9700076afbf35d7d3b1f47ecf5df3d2f8439d7b4fbec383cb8b07524370c5dfac8f27351dfbe2bfe00868b8636ace16bcbf65c0917d03ee8fa37891d3e25ff56f301c84fdda47a8407d3cc510ce435da6f5106fbe3de85c9a17a7fd7198ef095c3b4c3d7c8d4df4b2a7bdd0b9aecc35c2d3f3dccba319db127c261aafe1d494633831f0fe19bee15e1ee3b544fa3332eb087aa00dcab1c7c662feddf35b4ef807ff095c3e27abc6e9f00d7ff5c96af9ab4f36c9a13f8ff3ddbeefe52f5e5e0bfec24b8eefdabfa93145e02ba622ac45a83b4943cde643cd284780979e71057af01782a95645d5fc22fd2fb925b7ca96e303c5c2b6fef53beca7c831f56c15f9de757dfc3c45c79798e4273be6609489ae5c585ebf0f54b1f5ff9def059cb3c4dfe8ea65eff46cdf3cf1dfd058ec0e70b064fe2c7acc33f906d31bc2bf6b2e8e325b037765974b03e47897633f617b9f0493d736291d03c42759fc2fb64f098616ebe3fad96aa1f69e0be7b17da5f0dfe49958477faaaff21b347f416a9bbda667103a5e081fdf91d48f8703e0964a91528ef15e7379711090986b3f6fc2da8d574df1a88f0e3961fc0cbc1f0fee20ac48fc6e3b3ee035c23ee31973d6f6b88b2381f477e472e8632227b59f7c79c58dc7f235e82d8f46a22bcbe34eb693d0295b0e9493d5b5d132afc076a529a0a6c7c2ceb11fab38a275367c52d7bdd19a9be415473be909d5adbb79d35b08fb82d1c2656dffb771dec77ab038bfb2bf03a88deff26aa0b87cec6471b0ca66a22ecd8ed8ef98c7a86ba7c77338473d7105c3ef70a96b0ae87ef8d8913ef2af7d0265f1d2277833a62ece3d63781833ae78f621a2c76bbfe11e799597798697d53ea5567355982fe50a838da132521ed632b8e1c73bd8dfaf62d5877042648779da8896b22936ef6b3e0bffd8b1efab6e5da3d5e074295692e58c6e30930c271e965505e1da4a3ab83b66ed53796c611bf31e6422e70f489da6ae74b17a0443b3e482937d0c65b15abb9b626790de97baa276cfc5b667d6c7f2fc747a6476737a6d3eeb6094d5c18860bd6ca0de1de2179cd6f57dfed3c6651a3ca918ce68ada7abb6f6c2acae1727fc174166431c16d5c795721cc4a3abe76ef386ab01db5de6259fc72887380dd6fd4674c3f203ea466a6c75e323945c8fffdae8f86613e27f357c05a436a2c6f7533dc2e4f4e4e9cb5ac9a0cba715119e8429f5ef88ce01bfae5d87e60e6a01bf5ef5173fd33a0fcb17c2932f5b856f926b7d7936d295e4a91ed463eabec2ee58e2f520c9e63157e2fbef8d4e5c8bf4b48d930f2f2e876ffc482ec8d21312481e0efcb2ac8cf6a0b7da79213aab5b3bd0d177bdf7a6b9b5fafdb0ae4c9043efdbe70da37da1b1bdbd7de6e6eaf9968588a49fd7b55e844b2c56e3a4b098b810aa46b16644476cd7eca4a4b027bc0979eee942b478e0bf3afc4137a6f3d88b7dfaac5ecdf62f64e6753d48aacb518e64eb03b9bca8c9d887f8eaf61e63b94ee4e417cddbb56b2f13af58c6ec8ce4dad4240db8c23cf21b883d65e2316ceabfc4eb262bf9202effb3b6bff05a9a10de8dd278e6f262f08bcf3c506dae288e668cffdaf2974defff8e9b0d301f65eab9ea5933ca35eb1337b1c4d9b8ae43fb4dfa21f4c755d46b0baff175874b2901cc318ccfad46a00b35339f40cd11f1dd0ef59edc54e56f5857cf718f3f72beedb0fd0a796a586b0cb70ad7f48e74abd179e76cd3b55090bea9fd79a8e6f03be9293deef85f1bc0ff427ce0a067b06ef215bcd794cefb98da23e544972fd8f69fffcbefbad0a484ed6f9eaeb1cf32687cbe9a4f18ea0f901bd4f5dc10fbf48fdc7d250cc7c8bc5cb5aac8895ceed6caf829d770e299a7726c12ec6eb137a286c32aa4bc7ba654aec09ffe97dc7b5be9275ffd6ff76ba8f309d66c7c984e5b5d4fe5b65ed7ff739b626363bfe5fceff603b738abf626d7e57336cfcecff797d9ef4263467139d1675bfcdde57ff9dddb5a29d97a572bc5f56aa552cd28af6bf3ebd33f96e94a18fed6aa94f6d266c6c6836ec6fa7f81f5bf9a412d436353aab48fb439c37bd0fa9732e37ffb1be79c36dd14a1748f43597c1af3168f79aa363ca9e144f45db3cb63174ad0ab99e540b82c8ca9b8b6548683f427f68432f78422d60c2fd3665e2b9b1ffc8766dc5f5e83886c67af917d61c9070f7eae93bf255fb1abb5857d64a2eb377147d79feb982af49b062e65fe06312b7cfcc8cbf43e4b7f80d790c88713ded68cf25dce028e6f4ff30809c40621f1dffb7bfe6f53ccb557f1849957c71366a487e69b78c474867d3fa88fddba5c27f6f6e4bf1851aecfbcfc0fe35fbdcab91c8c7288fd4bf0b152c08d609f2e5d259bba4e7bd0e35f7c15037930359d06960d50ab67cf5f6266da9c489b6308dbfa665fcda25b98511c145d07aecb7d62ff786dcfb98351bee0254b3f552c0b8c6fc01178834dccc46ecf8b3881feacda6493931aae9f874678e7ae7e1ce5a47fe8f0bc2098f8ab9e0dcf21e4d3b8b31fff544b7c7dfcf3584ad043005fcf6b4699adad563e131f627b039bc618c5783dd73565db768df47d19fc3bf4240a609f34f9f304c6f35081130a3f7b5141bee2aa4da603cd28855e0d73d3c3b8b50db93e4e5c04ae015243700b4e6114645b6c4ff673046c8ca5e16df1dcc5b3dd5fcd795f02cedd23b5e14de494503bbb2731298215b12ee91ef80da076b4404619d3f375e4a6537f105e752560721fe33a27e1abd9ec41ede7fade106bc2ef1566b68edc04ff5df94299d2f39a7b925adb973cbbd0c32488ffd4537d96425dbd39cd21b6387d96e1d4c686ba99dd8bdc6bf34d80bb65fad24e6feb17937318279fd0535d0e443428c7ea691b79781f025763229ad5887d6fc83d91ba3aa82b81be36c8d9ce814bd9a2bcd2f8fe0af4084b83244dea9cbdf53cdeae6f317b1b1f102d86bf8ce07766dc1bdc28c185ca43514d2fa4e78a3b8f7587e02d74e792ee6deec3cf444e93008f41b981925897a1f76e193a76b5b797a92f137f7fe39485260f8163cc87be9c331eb9f39105fdbc971cd6f76a5ccf9315138eee9fc8af5a2c11d16b641e7684f3fc8a647b680aded9af08c7b66e4e81c3efcd7b456b27f98d3abd8e873417047664368fa3686d7ee5ba3c1d2f24fc4da7ecef17bc6682f412b92e576c5ed53ed6bd8a013f1d1de7313ad21e06c5aef2b25d45ced3dc96dff72f786e73144766d77fb0589ee80637cc7ee39773fcfe7b5e3d67c9ed5c94aa71f249392833d0dfd54f7eb0586e46c0bc37fdad5cd64f25bc279c3e5bfc15a6001f7f893d4d96a2fe2ee6af7ce1e358370958ef057189dfbf081deb630f7df5ac0f5495ec9efb6865d4cfd58b93f3de488afe3e43d3345965a3f141e69e7ec37b7095a5e3830c3ceaefdee7f13a17110006c210ecd1561607effb155f1ea190029fab177b9917834d9b02cecd483f3d61f640469d8ba379c58ce41137842fcb0e24f5239cf0962671a5665ea097f4ee417389098dad92faf1feb544f61e736e6d6fce0b23f9f44ef3d4738a56f74f9a1ca418c2deb018eea8da66d8607f79a2d53d9aa0a7cba8f212b2d6f01ce8c041d85b4f523924fd4208b7885b95a01b565908f538141b77c2fa75f90872e0fdc67b3a4b23e8c1dbf821d12dc8d20fc223716f8e1f8c7240756fe60fe603cf9d27a007fed00fab83015016b56efbacf7097e97553cbff9299573d29cf6344fae6c3c59973d71678ce280ffae9083f2bd5426f89c90f4c4b8865279c77fef64b1dab939706af8d0d73901fd1d76f94dcfeb6a9eec5c2fa6fd9cfbf99dfc25e6e8b4dc04999deddc1fac7705cf9de71ecddb749f0bf876ca75cfea76fafe5857cbe92394f85390897c20a9ec3ebfaeddaf5f3497775f57d89e9fe7fb0c78de0af578ee3d8b8bb5c1d707adc179b7a7462ff614ac9150e10a1fb8a3171f615c1e7d79f6083892bbf68c9f5c53ac025565328fd149abd48b1a5f125d1e66f32cf8adc65cac09c326febe1a04cfb81f472dc28ae00d7d793682f8bfc9c580719a86953fb0ef6a5c0ef424e590c389a81a45abc1e6ea99fce0ff037bb75c3ca6d8973c2f0d6aeffe3b9b1138929f7b9f0f7fa9d9360f63f5c38f09f71fb39628af5f075795f5f143e84d0ed223fc4eccbe80782d73af5efc36ede0d47826a6f020ebc22a5acc827ad9c97684a0362329ded53eec8c7798b6ada8cb9b622f30e331f348c3f69e511e2146277bb4af8ff77ffd5c132e55357fabb35fe2f7c09ffe7f887bdbee4671657ff4bbf4ebf9ef01dc9e33ccbbedb4c1e174e836360274d75d6721481a0741bcdb0fb1fd5ffbbbdfa5aa92104e66f6a42773eeabc43608a187523dfcea570ec5de5feedff06e57132f1ec9fff6ad32fc7a0c21567255430dc7d096d777fe80af263e4a6b8cab4faea92129faa5b2ef5ec4f1eb47e7c9aa2104786d88a5cc5f8d5f8ce7e5456ce16a9e288e788d25fd7c1361cd4b92ebc4a189363cc4f3352718b4013eec1cd6aff3e29c139b2b8cdba2f5fffbc6c4a26d6ec6ed181b05312e91af0023f59ff11b377896fdae8cbf213d601339c2f377752895ccd5f1d6c7cf37d1c7cff968bc7eb95fbd7e1688d5690adcf7fddd7e7837750681dee1fdbe1fe6db8687d2bbddbc941557316d8d6df23f87dfb6c01fe8fd3e67199d7bed7fafb72d7140b7aff95eaeb09c67c0f7dea8672c0f2c948e0853bf389f5ac89fc235e9f3c7bdf3b99bfb7ce1d6f9aafdaf0f3f7dd896dfeffbfd87dffeef87afedb70fbf7df8f0d387b8eceed57ffffef74f1fbe6df6cd41fca37aea7ede3ced4b795f7fbbfffef3b7a75db3e9bafbefbffdbc95876f9b7ef773d997f2bcdbec7eaecb5d239ecaeff5cf0fdf9ffafd7d5fff2c0e1b59ff7cbcefeba7efff284b217ef1a6a55fd7ae98fe97283fde7ffcc7e3ee1f5db955bdd8f40f4fea6f7dbf2f3772a7feedb13f7fe2fe9f3eec3697fb0fbfb9d3e92ffe74fad387eea9befff0db47cf817fff67bf81963cc7f3fe8ff3cbfff1dcb5ebfce6fdd76faef38f8f1f7ffdaf8f935ffd29fff0d387cdee7feacdf70fbf3d947277ffd387dd19faf1e9fef8e1b75f7e99b8de4f1f6efba70fbff9cec78fcef4e34f1f62b9e9db0fbfb93f7db883074e26eeafbffef421ddd41f7e731dc7f9e94338fc9bffcfff6ccbdaf9f09bf3d387a4566d3a3f7d588dfb3d932dbec947c7ff457d7caadadd87df26cec75f7ffaf0cffda653fd59dd571f7e737f994e7f75fecbf39d9f3ec43bf58df7cbf457dfffd5f9f74f1fee5ebb7262ae34effcef9f3edcfcf94bf3fff99f437fd8ddd71f7efb7f9c9f9c9f9cfff7df6aa934f7df6194d4c07df879df6d7feefafdcf95dcdcf7fb9f9f4b29eff73f6fcbaa2dbfddef3efcf4e1b6db3e7ddf7f2df7cd68d559577c7aaaf0a775f9fddbfd1eff4f9e9ee8bfbb725f351f7eeb0f52fef461a5d6a69930f894dc97bba71eaf0d9f828dbcdfe9abf1d9e6e3a7fbadf97f7dbfdb5f5dadbebabae3eea93ea8e7fddf0ff402ff619f407737fd87dff6df0ff73f5d8d11f4efeea9b687eddbd33fbaa71a7e61f7df771b7811f71feeafb02bb7f050bd65fff3b3696cdf77b3fefba70f75b92f3ffcf6e1fe1c79004d04eaefa7cbe79be82226ec5c78ec72fbb815b77d2d8b7ed614deee97cfe75f8f9f371f8f9886eeef8597b8226497cf4abc66b1f3d943f7cde76e0baec2da631b284778793a7e3eff7af8bcf1219535f7dc235fb01dcfef8e22f337f737feaecc6ee9ff29b59b1eca1e549c09cfa2e7228bbf7fd9fc7afc7cfe78f8ec413af083c87c806055675fa9818ff58dbb119eef60c9b17fbeeca733db145924c58d7faeb32940ff3f7b8d14ea08edef8e3c6fd451db5667ff01c320df0e22fbf3ef424707c0a3abb38f61909be9bff0a87ec33866404b08a58caa9b97cf59865153746cf77912b9025293d36319b25d15b27375f6893631c9cb3c7912132bf52e94b2724e473189e567d7f46fff57c799e7f1feb39b3c2915dc72fdbc65fe80fae033c2d32e3fbe8e5cddbf5d9927f2b3a7da0a2e95c7cef59c1dea4e9e8537451ae27769dbdf40db1d3b2fbbc001d5adabdef2de7be1297547cffb695b87e9513d13a197f231255a01a0477e8f3e4f66aa2d2709d9a6ce6a4ac57cc31af5dc63d17fdb2bf5a7982cf74a4de42b7f581b4a656f6328a353e7b3b4ea82c752cde7f95d9ee1561e4bea8cb93c4bc27169bb776bff6bd1c7b2ea952af92e6d1edfb9bda17fa3f4fa777bff59e5e8750d74a86b3c0fde248f7f775d6bb9fac36d79c9b69a2c717d2fe8bb8e5dc45be65fcbd93c3a4279b28d2f2bcf39eaf1a83adf054ab837ecb7ff2093a1fde17c79435fffe39915ef95bc2c958cc893cb3af48fd5dbe6ca29b3e9f473262df7a5df9679ec7c9e245bd1b7fb329b1af7e29bc7da4b8e62e53ef10cd3d6950c122bff519d912294bfbc69dfbe7e3ec2d86a138f79d229e7d1255d449277f24d67889effa2f38f3596de7ba6feb665cee13c5dda6e85f769fb539147ed107e7c9ff1587ac199cfe5fe4d72f73fb5f7437d53f3ff63ba50e5f9bbba4bf75518386508a63faef7d77f7bcb9af7f0dc736595b346d03b52c869cff3c02db2e7b7b4f7a4f68b9844539ad3e1f3bb9cd9cc29b3d3e52d6dd59df48a0cd2249eca5ee913d1e3e709dfd6ddfc2febd5a8efe950309c1126c4fede3253435c615f87be4bae7c59f5c996e7f19df0fccb7bc990b4f3276f9aaf0ec7f773a7e90f7e609d7bd35ec982f266bae779d4f31fd92bafcbd863ed4d65d526c782a0723f22afcc5988fbf8f573127efba1773e17d9b4159ef3237ac1a4c8a303e8c593baa9bae95b75ef7f561dbbd46170ae6ffc27e1f9dff59a2338c85e64d2a943062ee937adeb452495fe5ef5cb6319fac77242e73440dc70add854746fe833b9b0dd9df00265631d3984ee6cdd401ec0ed4a743995230f75e8afe13e96346fd3c3e34b75fea36705cfe59bf69eb9e658f46c2bc2642b367e2f427ff34679eb95396ff8246aaab0f9971a97aabb3b328f6d12e7f9a8e6887b6f6aef0fd7c23a6367eee13a7893eef607b266dd05de8f9df90ce9b210c600309dd7dea7e8820dcf9e8f55cf90ba6de5dbf2e123503a2cee8eb9b1b5ddffe53e507820a8b775d8283ddc50099519d37aec3bf6efb42d367a4e93ad58dcbd657db8a21ba05d9026bd429f15eadfcd51bc6d1f0f677cc66531918fd0ef0cecb946edb13ffe7d2adfb40e5f3f1f9e8a3cfe04619537b5656437fdfd11dd4ee92101de1f6e2f9f27f1b938fb91e867aeb23d84e7e2ff73b7115dd0bfd197f4aa6c5865d3e73a5f1ef9226ab8376dc1dff46367fdc72a543ac7bbbd77ceb368b1bef1a93c437c14a1ff26dbb3f2e4be0a4fb29af0fe477c6723fbce8310e3e58d630e3664e1f93b31b93da3dd281f85773abed1e7b1155dbbd7b6dce03f3074ddfa0c827dfc033ac37391274f9ff3e4a8dae61efb58fdc8fad5b2ebc6d5a9c23fd297be449aa30bff41dff9ab3abe5bcba2adefe0acedea1dae7b2a93fd3699f7fa198bb2f36897667defb6218c6a28c5fef2fe62752877d5d9df549d3fa93c765e65d34ebc5fbb48bdab43cbc1eca869b6fef25c3af2502d9873359771914d1beebdcd3ff5fa5a21bb7202b467efd79e072546549b87ca035a98b7ac8d03ae8b6f40e555786c57e4f2a864f70fec31d3561536d3ca938fd5797a2933d71561e088c9ed8fb4f9876bb7c234eaf73a13c0a6aef3e84dbea63f23179679b22bf277d8b3239dfb745766d3efe9223aaaebdee693fdc37150fdebc51cfaa4f44475ddfebdc7641dcac3db7c097fa2cf417caab3e0fc0eed6665c6269f27b1c71d7a8f2c7e934f48dbede58ff9e16d1fd0be9a28bd3d7efa9c452e949ada68bf15eac5233f67ae6997dc4d9d278ef03eead8c3fbf8a21cab6cdd5bf48df7b06326b1449f14a51ca57ef72367b99e1beef947ee9de4e72c7e2af2c8a9cee48b376dfe60ac233b1d8b6cb9afbcf85ce63387eca11fd07d9a23f4279b5a73ee02350aac478acf94a1affeee45e71f8c1e9703f5d3b698dc1d0a6ffb636b37f4e95d206e73566be1affbe1ffff99731efafbcfd9752c276e8464179e265fd7efe4d75c6640ebdb1493e44b91f3a80ed99b64e71fc42e80023d9944c73a9ffd68bb47580bbafffdecacde49a7e9894cbe498faa16d1b1f0d8c5d6f7dec16f2eab3e86fefc901ed34747916d2fe2c7ec04d34e1dfaffaa3cfff06eb68213ecb8e79f012702f81586659343e9dcff983ff71174f62ed8957932fd211c87b1b363655b9c8becb4ad172df6d74b249f44f26db1fedfe91b9ea91b9e27139eb183e8d88ffa415e6bf7114a8aaaf368f263baef782e50d7e2594ccf928ff0ac779e7f88ab740195337f37fb680bb4f47d2c8b49b2429aef1f590f35949928f2e4a864e55fd947dc83b2fa4d1dfa67f5fdef3eb38f1ad1fd68fcf28f6d51d557a0299e934f2f941ba169b5df664bff471b478472f379123f6369801f5ae34a876deb452479163dfda57ddd076e91254ed5315974dff0993fb69f5ff409302b41eca8f17a8fbe9579bc2e3257a6a1afe900df7f5ebce858bf1513328cc173b99017d0bbd4f9940395d5b1da906f7a1135dc419abf1f1b8fd9d37d1e83be5679725f6727d833a43b5e2a281550230eebc7e6f08ffb9fabfe441194c298e07efd1bde4343f96f84f73699fa6afb6a4c3209e9847f311edcc1b866a7e61e28fbffa6f8f3eb72ea4efb5c947d544d9246f46fb2d5fe8caf201259d0f3f4efb5e95799dbf0b7e1a15eef7b27657dd67e881fb4bf477e7a5c7bc2739f4ba059fd4bedb4aa1d881fbccd6fafe4d1b35a077557913c82f3682b42f6a0f4f92a547be54de3d7f070b9e73997a2076ca1a68f7f3f5f1bcec599437bd11b6dfe3f3c9727aa8f6252ffc839ac6d61c0338c6c1ac4473c579dba96684a3a772bded4ef8172b4fa11bb7d7cff23ec172f7ee219fc7e7e0fbbabba41da9deaec774586f827c0ed04c993b2c5ca6cdaa75eb3156ff33b5e61c361bdaf60ac110b94c2335da55f46f26dbe57a5777ddbd7e1affbaa633dcf9bd77c01dbca436aa7bfe2d729c1beb2d704d15dbedb98bbf27e919c0b8a4b03456c1eb8651e493ee7c7aa9d9feef2f6fdfc6def845364801ffbebb91ed8afa8e161fd2659fa3b3e18ed4f7c937cff63dc0f96dce3d99bced13fc4a5304fee44a0cb85bd63bb44698c2554de84553e73f0f1450e6222f61a6be0561e33a56e7f64ff180ad05c8f2994ae0dc7652f7f644d6ada5579f9dfc7d1bc471ffe461ccd1fcfa755a6f3cdeb4453d9aa33fd514c2283cf113ddbbf111fff477d5c171997547afc6dfb836865d5395978fe59e37d6a1dfff698b3ec820b6776aaf2bb8c81d21ff6f673d66130853caeb7c616dff00c46a5f7de26ef28fdbcdb5e94ccacba947448c01bb983ff47d9e4d347f093bf7ffb8f480d23dfe6b37acbf8ab7bd33763cc7f770dc19993dbb172d0b95dc09a522987f77f8ebce0593ba4acff0d73d1f33c999b72717343cbf1f78c5b306b806e08e2c27fd7dc50391bfdacf7d97ff678c56aed2ef3665b39405dbab428b6df5566892c70caf7edffa4cc93a7327b935fec4ff413f0b6cb224b5a65330ce521df61bd4eecb9e5eaec784a3dd9f28102ff3dc747de2f668de89254384d53794d5ce4ff7c97b152d79419dfa20e40255bde653f5b2528cee89fa8f344a25c626fd487ffd433886e6c2825fd4e72dcde635fab05e2b2fe86f3fa779e835466900f2bff7e1d61d9f9aee892ade8ea4f229452f46f8fb5bc41c6e7e427591740cff746acfd9f96eff55674c9b176e3c7aaf377621e35957c93ffe84f9f8da91703b63b0d83f3df7436eeca3c76ae9ff377e92c7fcbfb68d9a9ec96899269f1ae04cca3fafc379df1f37857e6b367f01dfd9dfa2f94a09e1dabbf77df0cbad13b8ed9f83d2087f7cdf8d3ff7c5e1a1df52b96fd4bdee72c30ed27b20ed9633d075bb813ef668b8cce9a4e84f24db8ff378ccbacce93636a513bfd0dfd87d20d7f43bbba94e3fbeb26ba14544b7af4db7cea7ff619678c37245feb8e9d79773ad6efaf43ccc42299dd87f29d74a017b2014add8b49bcad43f677caa02fea5e7d3efc4dcfb86573f76ec0c4d3f9fdbefad6b1ea1259b5f63a7e97f6753c7849547fef2ba343b611803b7d5f7f14d94c37f76ff753687f3ad0fd8b30986a5fb07ee6fbf86bd985334d57f89773d71a1e52de896537fc65bfff844af9538eae55fafa2de309bac58b3c766aebfdc61262299f0067f697fddeef972ffe7a5feba6cc81af67be76dc15cf8a77599fb4e6bf560b28ad7fc158e37509eb77199baffad9ef849b752b4fcb97282ef2a82fb3696c952afd91f11995f8ff9c219db1e65ba19271efdd6e6aff4638e01fe282d0630598c75e9d81f228369a929a6285a3dffeb20c31676e0db12e5deef6afc60efd8992453fe24f7fbdbd665a858d14dd5b39ae5ecff9bdcf674f3c9baaf30d3901fe7a9bdbcac592b9bcf3cfefc10df446ccec1fc48379f346bff0abb27bb4265b76f8311e9c97b1ef17edfee059f60772c694515cf6d1b19ec4b292917cb37efc473c06a634e33bb7c74c79ccff751ec8329b3ef13cdad60bcd2ff3637c90afeb18d7253ca2d91bfd677fc4c1d814adc9957ea73d146ce073163beb2ef0de0f0f7155f6faddf351dee467ff83313525f3d3324fde262fff886b48d3550f14cfefdc5fdc37f9ea7923ba60cff3bbcd17b9dbe836a0ac57de3c8b49e4c0fbb42c4e8384e74eb04adb80abdf75dc05aeed23c9f32ddc97a4ee9205f261ed44ff9da4710abf439c947dace7b2c5cfa763d1053b8abdabf7021ebf64c2b61ccbab3665f60cdff33cbe14590d6ddb5c0444872e0b6fa7ae0baa3e3a02d579e72bfb497d0734f1fa3ee1ed25b68de578613d416964f8ce2a67a83e4f8f62f24fd5c6b67274ec47cd2b96ab8136f37829c2602b5afb77ccfbd2ef9c5a65c4d65ea1dab3cb2643892c1e2654a21b4adc3c6379ac616c01c73507bb8d4ad2f2ade898c17160d95b76a8335756c0c908d74daa4e3ac8450294f2a8ef4ed8d9fa8eca2348c4f076b1141e5f561d6bcb2cd6f372302545bc5373df3fa9ef3ed2fb07e985c7450ee3e494a13c70582b6e53c138cb4bc2eebcd463f01efa2f8c4b786aca6c4af4eac9679e4bd8df3c9bba4a6f873e620983ef543aace121941483384aed4d87f767f154a83d84e5ed3b318982228b9fa08f309710a79d0869b8c1a649c82ec524da568b04d74c8b183e5acb4741b4fb9013e1c9ee1e4aa3a9ef92633a49806f15dec9fabf0efd65d5c97d996349abcf3791b299ccbba51debb06c0cacd14db979bd6f6bda8f44efff58e4eabd6f5be47fbbdddd4a7adf1be8b7233c07d7a93b9314e361a2331c9d54c617e6eb8667f2c00d7f276b69ad5d788e3ccff0fea1ecb81cd6b908834b3d0f1e216fce63edb287f9d88949ade4f7c0372a217f13ee59a589ac3ae9159017315d43697c357eedf42b0bfc346d834f2b477e49ceb85f971d7b149e2bd7ba2f19ccf551b4912c3c7fcfd3a1cf83dd8dfdb530c4e37b183b88df6b6ff45b02e702e463a18c3df31c7cfde6dd406ef491ac42ff5ccfe3a7229bf6d426e2e4e6515387b8e674bb669fc9385da6a700c6f606cb4e5721f0f61e0a4fcaca1dc68db1d9039bfb0fc93c489315ee2165d7141eed2d0967ad5c677eabc773dda6381f5e0d7cba6a3ff3eed7abf78d9d82e43ac89330e8d533975ed388ae26b9a874cce13dca3c9ed5a1bf87bd4f9c2bcb3cc1bdf1ea9c25b7c0d71652596e6f7ac3b358d9e1d67a64ed2a0c0e3c3c61590a25772f30e68d7e16f19e3cf27ce6ac945e7026f99503c6e28cd7a83331d9d60b940dd0c70dedd99e3dd60b25439e495eb2e704391bb5fc6ceaec84a590709f5dca30d8092a01ae795853e258c6f3fc654eafba36777d94e7aeff00630be3d8349533ded374ade683813e5bffa39c87f784f739e0bac612b2287b831dec77e93f200f25c3b50ff7e0feaf43ca7f83719d2a1d0fde57785349cf57f21ef63c5e83e70f960799b99507a5a2a43947a5ff504d66e61e903ff364cb83c815ad3a0b64243a65db07bb32dfcaaa8fd7f799d2399ecd799ec23a57322751eb50e7e7c17344cff63c8f20af7e248fdbb851e73a3cb3f30f897d2628b94239ea62127d52727e7496b161cc57d954d94e0df0c8e6d19ce7f163d5c9e73af4cf661f60b915f33c4e675469df6b9d8f701f5da3f6bdbe9eb35f4f30c6de9cd6587cacba40f511e6a9f4d814e7772feff3f8e16e65fd4ff7569a877d213fa18f19fbc9afcfaace1a4b49255d6faebe6faff519363c479768b1f63570c0cfadfb375a97b91ecbd374341fababe76e06fd6a95b97b9e255bd5bec07dba155da3ce058767c9fc7a8caa9c3585b7bfac43f99da781f53bc8f58b08e5233e4fbddbddb0b7b3e913e00751fe7b300f67949deb6b59dcc90b950cc7b50fa5a4d5bb823ceeca6c4ab2907418a5d776eccc019fc80e65181c0a8fe45bc7260c3961e1aca6b880fd5ea1d24544d7c0dac1b119b761cdb929dd967b7f767eef684c710f5a7dd98ef625cec9782c524b67ed8296cf479cde460fad3a943343de3ce99ab40ea9740dad57c38d0e7b7a3d9951ae305d8b7aa291bf49c81e05e5ede967dc933caf1cad9b8efa657cb9b42fe4cb35abcee693d24daed7cff68ab75c97f679edb7995917d76b281d74dbd1f72cc63952eba5bdee5324b9a473e9babf9dbfe3c1a06b297932ace728ac3a7f3f1e47ff19fc4128438ff6782750c6d73f977436149dff9164991ae733f8131692810e97c7d7e3339a3b6b2d2107f2e2b5b546cf2119321ea7419f7e75fcda31873c071d176ca3675a63889d1fadcb54ebfff3d7d650a2f476bdaee7a371da40394cabafc9422abb665bfcfe9a90f78b44e9d3e3356df30d8fb886496fcc0ad4091791ab4b20575d85f222634e19faad557ecde07aaff742994d955ea9ed5865235abe68f5dc7f6e4cf9afbc215bd8df570ba664eb1a9f9f5ccfb1c1eb911d7ce61738af8ed52281b95c0e6d50ed073557715367f5533d671f0b8fe1b86ef0dcac695ccb3cfe54e4ac2f1749701fc612f7e947d2ad7c5758fda7bd7b2e73de98b6e4ec6beac6d1b23df1dc1df4652837daa26e86fa185b297d846cf697dfbb88f537f74ae44928b4eddf5b9f83e15aa5b3dbbabbb6e904edf557c7a54bb695879869d0995accd52ef248af0717392ae2ef3c4b02d1e17a10e1e95893ce9f76ace18b58fff6a8ce06eeb139cfc19693a28bb73c8fd17e62c9f10ef595279ec5df5719c7ef531de38e713cfb7856756c06cff1d0c62bc341fe6bbba9f2e42fe37588b66212aa39fef6a2afda56d06700f1afcd303f0d65328ded1cfca31d6bad92ea609beb73737d35ce753685b8379f27b25ac49fd4ff244f5dd1a2cf087292486fc7b9c5b1356de0b395fd4bcf1f6c5f5c477aaf932dd5c1f85ceaf954d68ef59bf33bb66bd73ed3dad56723c4338771bdd57bd5aa11a2ee537233b99a53b2ef43d654d7fdeaafd66c4775534827e379f13beb08dbd4e5a097944bba423bf5a0e4c4d5774319c576da888cbdd0918ddd47f7c177f4ff20c7f881ec26594c98c353abbfea9c04bbc17e87f851c94d18c39e1d906f116d37b51f19e430e977e5bf3397a3bdff89f60d9e4778fed3de205b1df7d019f59de9b10e6577cfe2673ce3755d1a5a678489bc1aab07f45527336b3dcbaa47ddb4ce67cf6a7d562efa74611f4139c6e88ffaa4f7fd83b237ed31ce27b15b911d9d4f9227b2539f8a3c6642fb2142d6ea3d89f6ddaffa4ca0f347eb18a44badd0a61bea8ca05e46faa82dd7e4958e2a614cd2a9acdd415761e9f4d36a1e7c491c36d776d17aac13abfe023f43d5c199a06d3f9273a4ab0ebf7fb2be079fa9915dd73e9fce77ca8c4fafbfb77d0774efe06b507a9807d79f57d67574369a3a3cb0963b79e6a9dc8b8cb5a51abb0cfdc555c77af015e5d1e033daa05f7025e3afebcde023267fef43eeb94d15e2da52e7249d835bd155e4b78b5c01fcf4f59ae7894372e462fdff48f9fb329d24e73a8b95fd86a59b7bd0cfb66aeda510f7306bf3bbb28d96d949fb2241b72ab25aed97b8c8e5c6ac435cdf5bd10ebe1f923f33d18dcfedd77c474bcf3fa8f1526385319ae02cda40c9738721f7d16389fce80dca33a3f70c6bae9f499e811f7f52a8bd9ac7cf90bf9f8dcec576e8db8ef61d5ea7e7ac9a2490473a9c11c37a2d72a66c327790a39c817e9af99b6c5eef8417693d77a87907f2807c18eee033a4b3e132fe7dd8fb15d99f69cf0ea27be5b73e7ebe4fed9c06f005631f821732c4f8d5aaf3586f4c3b76aa3379e679bc32f5b568adeb36ac6b46baec0b5f25fbddb534e88df3d7e208eeb1f0f60be2e9d73abafd99781360bdf7d6f7179e9d3af26f1d88479fee3b59e7aebc08ef04725ec9515a136a5f1d8bbe8986fcc11872a8c9d785f1248a330d3e3ce09d3dd6686f40ec90cef41dd76b3c67b2ce98b2dd5ff5a3ab336b189fe9e083d66bbb8f8f64abec8407ef7c93b66cb6429d632b069b5ac93ea517a455876b14f88a4806570bf4fd959dbf159b57fcc6e7a184b3b11d4346fb66fa78cf923347391c0ee592b51ffbd4906d315e379d3aefa65e919db6dc8c3f3b579d7f5e5dc952bd565ef3b124a1bc000f3acd157025798d8418edf01dd67f33718b4a7fbfaab3e941eb75030f454af272e0aae05a4794c37a27390db1cb246f40c6e3393e7da14b80acda902e3f991d2b6fb031a10cfc24b67438e837c833ae636e2160276491ed97c293a8b34a7f7b4be594f5bc80df3c85fcbd59d5d530ffebb9bfa0beeab5348c11cafd739d4d87f9e9e35bc4c2dc6afdcffaedcef6010fb26932db9519f92d3bb62f3279a05c89d1fa2d5fc80fb5572c19627181a06f21b870667386904cc3b57bc4fca2e05279b2172ddff2ec44fa06e89946d779c5eeb57db6e427d5fa19b6737d4f91477d3cd80a075b8fd23e3dca7fb27537afccd8643cfe68af5ecd410b1c4bab2b990a72ddc43986d8736f8d89447fabf1b15a6348be0adb47315ed701dd0bfd263fc262b6bb67c97135f60d9c6b2c050e3c0da3f586b6dde67614238b2e2b8f4d5137f28fa5737d060df2fd4af6be22975933f261865a26b1873b8c1f6c8cefdbfdf56cff9fa3df419d49ae58242fec0ececc35cfe33837601d52e158b270228dfc2cf344e27b239f01e960a1b215961ee8b43ba1ed5c385b6fb5cc797136da7116a5836add43f4b1bd5e9c32049f726fc63e4bf6b4a78618b5891f73d4db3acdcb303b8b4933650b35bf77643f3ae87f8239b3e3b5e3d8be3e27c8073bf633f7b3a6ea63b9a2f350bf0b8de9779e4bda5b8914211bc54d6cdbd6cc9963e2cccace01fc738276c4c5e83412dfe55a0fb7ce059097e843f269bdc91662da9d5e87e61db5ce771d9bdd5d7d461f3e4bce453ebb0ceb3f3a17b9bce3d9b4d7be0cb82e45bf22f1ce93ef77daacb5cc9ba3df726dc5dec4a43ed099355a23f48c190fddade824e0772cf9f90cf10a06bc1b963ff9d45493e4b3e8fc89684f5274b553a24d2a6bb7c0986d986424bbd00fcc5087a5f182758d3665a2f5e38687a89b69fd47cf9f8e5b036e3d4b06bf8a7a9e633f3f762b755d9fd86376e0790dbcbda83f512dd5f49531f24eadfd59e95375a8636127a97437f3ecd66da8fd7d91e3df1265d8a50a4fdbc263f84cac4d853602dabf073149b6bc97389e8cc67865d9f4d4b7a5d76c4598b02a34f822bab71dfc2ec66e336727bda7d2a9b8437ea94b19ca4efbf66b252751ee3e8ad03fa0ed121fab7e39b2d392eea3f1af0c7e126357b723fff950eb0be3a2c4bf40be96c77ae0841cf977ec78cfabf18b3468853aef73c0c00dbe056fdec2de1ffbe0e3229fc545ae64c3edc8d79f848153a0ef40c98d8b395b2c2c0c0b839e62570dcdfb03d8ed59f04cbeef33d9f50f5a96426c12e743adb340f4c919f748d3540ec94be9bb388796ad2821bfc3feacafb92df258bd87d596db94b89e2c7b05fc6bda07f75080ecf25bec3fe176c246c7eb1eeee84c8b6f6cdd19e748bf9fda17051bb007c6afda73255353e1e8b8917fe6213bf32c991779d20c67e235b624b16d1d995f28662c0977e091ae7c4371e4947d44b908d763fd4a8af772f6ab43721ff44394fbd2e1f9ad8e637eac3fcd8d8ff08ef6453af7ff7baddf7d457fa9cd17b1afb9db54dd5e126ec0603986b5bd0f85c1252411f2d3e13968ad417bafbf1a775167abd21111d368cee001d760f0067b798fede039ba78192f4bad783be63fd4fafc20fedf713c1363e43a6fc4f6230e67e7324bda72e8d7a0bba488fbbf8ad358fa81d6bbeeb4fdf1f25c69f9916a3aa3ed0ffd19dab5fa7d152b9ad1fb55fa7c79a1eb94b0d6ea46689c17c61aedb69d95c1305cc74475cced75795364d3290b1b6ddfbdfe6eb8d750e765c8d10bff4beb7fabb62ec9e649d5e1fe533297ce6394a969ace5e56669fca04d539d9727fd3e80b1269ccb3af56fb2c09f278ca76bc7bf4b5d7fb19efb37cbf4f4b09afb5f5784ef29b329acc3b5c6e2a9bda3743783334c64d1b3dec87ce9eb3822c55c7cb7221c09c8c7497db87e37d2c377451e5f682f34158e5d5375756afca2d95463de1efe5c1d54ec6fe19d5c1ea22f4df7c7ccadc43afd43ed411b276ab0e3ea999fc0cfacfabbd1ba1fdf72b20fa146a685bfd6f596b55f4effafecb322673bd55f9ef1ed3d6168e1ff908d62723c8f6e8a3c79049ca963d9295962e38e0cbe60ddf9c7cac2b369ccf12a8f59e5c90377a9de841b415ca63271217961790cfe58aa5bb1222e51bd86812b5bcfb5750ebf56e39e7c77f0fba7f59ccdd6922d73e7142cd37d9004fe2a49834f6c2ebfae65fcb04c799ab0e8619dcabbf55cae699d2bbd625fe6899219839d2e23c90d962a76ab8e7d527a8de8d933c450f268e44729bc932cb229835a8599bbad17c8e137f6594e8f3560788ddee40c35fa6d3d7169f428d1061a3375293388451df43aa01821e961549b7f65cb7d7686d8aad2a5d479aaf64dca69bf464de5a12c13de54e9a6c3decfe3ebb8dbe9f5baff109f1ae512e8fb53f4f3b5c9a88ff0ce6ee5b197ed58f63f1b628d2b8af9ab7bf4ff4a9fb1e609cf4c3b3ea9ce7e3a93f7a017d37e3475caafaed57d4e42b6a9b3daf29b43cdd88e1bfcf9c8ef0bbac22a53b27faab192384e748ec338127f5c92f14e63ce7f7f7cd88d08fd47c064f6d7fbe61a1f30ccb1f119a5707e1d45a7ed1057d926d61c2ff53eda8d712ffc58f5755375891ee316fc73613035b2b607dee567b073c6ed3d094f5eea79b45367c95afb6a37cb16b09c19ea5495b56ee18c0e03d4e3dad7d72a5e0776c69967839fdc7aae858d06797c590ef90a8fafad6b35b6c595fe9040bd3b83ff471e57ed4f50679a6bf0204f451e07f03b33df411b4cbd27615d51569e226ecb7623434f145f63937422f745e7efd08f38fc6ffc59f6ef5e83f168879dea2cd891dcfed792f67ad9de6abfc36539601f6fd475f81ee8c736e74e807cbe3417d677e9c6c6bd58ef65e43ee8450ba347cd7ff77bc228500c19b056964fe877afb1dad99779b3253fc285e7afe47140ecdbddde8792d631c42c96788e01eea7239f27f90d680d93ff17f601e18650ef3f49c4cbf83a2f6227bcf87b45fbb10eb47fc99575d81c0913b0c77315da1ec702a4bfe3d9478c337b7b79bf86e73e43ffb01de8bbdd078363cae44725f3b53e657f16dee9e5bb75feb9cceaade8c6efa4d6dacb6bb5ce91285de160e9d40f15c9b57a023e51c9e7dc151dbea7f0a28f64235ce5c7c0b85fef47e3efc2799217964d47f2b8f2f6db2a2039d7ea3d272f28132126483e11fd1bd89b5837d7b164ddfc4a165a726409badfdd38ee60cbb5ce6a27a8b7c6ef7f83be0a31613baa1342d7d867dff0dcd48919be6bf0fd0a5769d62bfaf5e97d37d6fb0cb24a9f6b1ee9b7e0ff8c16fa9e649803fcfda59c86f7f9e7c8c730fc262f5a7f803885b6e7ceda2f80b128db6f5f778cf4b35b63c35a7b143f0f796617e3bfa638fd2af477ea79da2f5e40aca65176d230e7182f068c99d59692b7b6eed991ecc0319adb6716b7afa3dfe1ecb3bfdfa22c1fe718407c3a18f4eb916ede438e28da0c3d71505a7852aa55ff8a2e6fb837371676795d87fe99a754235efbe22751a3ec30788e83581f63070db94afb22dbcbd4cc89c11c38c2c5b38f74917f615eab9eab7a39603e95fd44cf1ecebbbeea824daa6cb88e5d96fd8093aef03bcb66027d11df81ce3a7c1fd3d6560cf8ce2765a78a49347d7d7c284ef5a77e439b32ed7c6597a32ca5787f34bfd6779a2df41bfd5e0f651ec7b6bcc9272687eb4e78b1ed4f465bc519d960aed07ef38de54337f1bb21afc8f81c90172436f2bd9f3575d8981cbf4ad93b88933c8b1bbda682bdb6fb93bc6968fc1e2ac86dfcf55a97999759120f7ee617b28b89ce357e6a91054e817927d73adbdd50db1c7d72a21deeb3e56712cad6d6ed11f731ac39e14d6dddfe28a4e14487be430e89851db0fc28ea9c7e1a7fe75bf25bee2cf9bc15d6f5d087059e2d69c7da328ff4bab3b014ee80b7c17184b32d5a985c9c3dcf9327e12d4ddc653dd60fb1ef2b5c7f8517289d82fcecf81d8e6f63fa957ba398e383303a7622ef433a53941e4f7680757d5b81af977252adff47d7780cf93e72ae7365c69f3bd6d6148fa6be618c420eb54e52bd06292f47cb658df381353a1f7276746d86d1bc30a8dd807eee8e7de419ca289eb9c761af8e75c9087da00f98139c5858f4a0e573653bc3be5cabb39dfaf754e4d14ccbe1aa93cfc0f99d197903b87361ec93d82dd475b67ec3d86a7d63efefa6115da263cfebda93667f94eabdd4394bb84ad605bb324b8251bcc03ba9bd36faae06ac7a74546b0e735def2886183c5780211cf692b619475881e12ccd5fbb07d7803c9480e94e34a73ccadf2c425d08e32a8069b4f41d35f6b6bff4bc5ac8e7326407bdc6706ff88c387b1ad3eec2f8621ecbc5ad7d86e5659e3c2dfb78a9f65289f125ac5583ebecccb3a2e5804f3935f7c3d97033d2d7866b71bf5fb5a7febfdb24e4f7c378868e81a8734a78270ffdbbe69e4f451eb5abcc45ac32f230dacf690b3cb3e665ce917b254b6695f3cd453f99f4c0b73747bfa0d197da645b4be4a6e1f3e0b2fa5498672d3bbfbd27fc7ed525c44f603eafeb2c72aebe83faccb79007109c7930f8faa0ef216bb47d0cbfcfb93a4b684dc1fd91c86ac38564ae83bd12518eb43e4b23e467433fcf91a36fe211fa3d3e7355bbb74aefe27974a3f423e327c4677eb27320f4f8b2503a746e5cbda779967957a69fd53612ebc6aaffed77937bee68ce27ec6719b2c7d2493e2584a94d5b365bbac9433267199bfb5fd741fc9038a7afcb36b8cb9de6ebdad93fe89cb46516a9f5a1e58f8e797e159dd129d3aa0bb602308530df7446f84bacf96be2cb9a7be128d8aca9fa44637952e1041b736603d6447f76dd6a92048085a1787a916b9fcf3fc9f68b6ccc4000f93f782ea831401d9959b84a0b6309e7423ebb53f385f57c4e0d9d658e70006f7f5e7a01f9a2953e0f3adbc1d2e9d4fdafbebff13b181d2596451e919ddae8e7683930d69facf8f6f87be0dd1ee251bacdf91067afc2e05c79962e10b247e12592b12882f5c3a2c8f21bec4cfb9887618d9f96f9c88784726f6aeaf593dea06490436727d831fa33c4e9941da0f4879b01ab5375ee88678ba12ea16c495679682f203ed78ac9809f6c6ae5d2eb1c39cbb6ebf8562cf41eb5eb0e23c64bf3c069fbffd5e7e8ef565abfd7faafb470445aaf5663585f781edd6add1cfddf702e136ef434faadf08203cb63b982f7f029e63b6dea4ef643fe1d536dce940ea7b10f3c4b2e2b758eeb78ab85c5253ddce88ffaff28443fb23a23958cc775f7ca77d227dd21793907abd1efdff918a372fd19fc016bc7bd5eb32fc750eada64557be543d4fbe133f98bce108f402ccf88bb6d9d058722aba58e95811ec266c7cab223a86e1bad158c7d898e1deb3c5eaa31c2fc06c407dd5af8fb94b090faf368ec2d1ffd1ad738e565139e0de4d7e95878166e33f4afec23c0c5b53c37794b03a708dc3fec67eefd8abeb51c62f34bcdf3627c11af8fdfadf63b59583a0b4f833959506be82a27a1c8923641fed9ab9c81dfe593a4f145df1ec5f49ff4f3ab05bb94d69c603eccf07e2027e626fe7de639f2cb5b7e8b5e38066fd20b47fb29e0399bc1bfcf0e45a7c61daebb55723845ddfbc80d161de4e7a6a0181387589525a33167b9257d7c83389c41a657c3f9003a5d3537721c7862cd336f2cfdd9e449192cc6f83a234fa06f237931ec65f82db5734ccac1bffc00eb3300dbf8937a9faabf6bf11a5cfbdc9b1eabce3a13e8bd7960de53ad41f81dc709705f78ceccd1af83beb6a4c177b9e6fd323ee859bd50b656a4f585e73a8f9f86fe7d1b7c5ceafd173aaf2c407db7a33377c091baa84b63aea27daeae33b657e33492a583ac1af0405863dae0d1d439566427c0dce8dce3619ccdef16e6e3b5ef0017326a43c9f604f7ea85e7495a120ea00ee5a3e1f5092c2e1cc9b77537279d663b257c22e50e2ab9e3ef57ca061af26125d57154ff2fb0ae2ab40bf53be90c3e8ff3e84fc7224b200e30e4fba06f8c85fe7fa78eff05fb6ed7e70659f68cfe03637bf73c1bf19d5c74eccdfe9c9ab81ed62bbd250e34a88fdacfdc7aae6bbb829e7aa816c447a1de359b3ed7503f66d02fc6f7ba8de8829ee40dd5b8843d7b2eb2fac00d3f06df8a6eb033ad7ac77086941a0380f887adc8085f09bab3ae4f3bc8f82494908bae737b0047106a5b886f790e765daad6749d47d2eaf7ac0e4f8de15733f55b1972562fa2239f440d62d3f0f7b55a7faed299ea7391c19947355ac77565ad6728bbc07ee65ae96f15eae674afdc6b3e32ba06d78ee68a91540736600e719861edd5343e0acd7530e17d82754bb7c544e78eeb7aa520c32e9533d491d5f760ad29de14830f11b001f510df5d19deb00907996cb81d5bc30bb4e6d94916930471ac237b0bfcfdc49dac631ab8c6b41f46d938ab340e72378eb296adc99f32c1b3c75fd490b7a6b9a434569fb55736f945ed291b1752f4d1f734f4b7065b40b148c0975b3eed329b9a36eacce249eb98e621cac524c27c839eab3dd862bc92599c17b46f5cd8bb0d6113cf3cab410fac3aa6cf6cf2217e1ce4c5e09b7eac17dfd0661be567f91dd73a7378825aee14c3ded23aea4ac42bf535f8e0932b1ce83e121d3fdab259f705fde001ea4c3d7183a833d3415bd0f8f3284f13e2a3ab01cb9584fe633df8fd6faace9f281967fbae8dff8225c72b5de82026d1bec84edbfb8ea5ca9eb37532def967a8591f00dfc55389fb0decec65367d2c753c415f87f96bddadc13245063f51e47ccb3da3db029e46cb7fe14d3f097d06281d40f335dc98380df8a16d9ea711ce087fa7dceac8ad1709e9d5aeacc340ebc98d5824faffc77a11edf4faafbc66cb7bf3dbb6720cc73cad99a5ed23bac6047462124d8a3c8277877ab7e4bf1d8ddf06bfcb27eaff046a052d27ec5c993802f88f3e692cb07d2dc5c4280669d6ea7ffa9ef87e07ec19f898061cc1601b0edf0db6ae34df5da01d76f519e5c8a5f082679e25466f22dcdb6188e16c8f6536c53e7a1067d179bdea2c5bf34cc76599c6b62b3be528d221065ce48d95cbcc77c2f3079ceb3c39d603ffa1abec28c1a88d159def5eb04b495f806713af4c9df14ee75f147964705580cbc13535d4bc3438c953bb4ad1bf283c1f3061b7940f7e4bb1c6429f9d81c5f5d3a34f8f591c53ab2089d773195680911ac7efc00706b190d1fe7e32b858aacfb5caa673b2fd946e49fa68345d119f1af08ba37fb9e5c07dabce63d00f0c6f290b7dddc656e71c681c7469b743f9153ae7d7c46e26789e616e35e86b173181bc10cd2579e6195732f850504e7f4df11de2326a351f37ad0d25f71daa4136f687e789d25537e0fbd6bc9e168fd7d2fadd6ecbf691602e01e6fe512cf94872dcd856c68778850fd7ed88854c850b98c21dcf93a3905aefc7f748bd461207ce63358953c3e93251fb90b8fe06ff91d295bfe8dc55c220c1678d0341bb72c80dd5efb5ec98923f72dc2fdd177d5fe0285bace819f967224720af992bf41e261c3dda766cb5bac675b5dbf5daf968f9ea6b9d7ba1cebe4b3d1ffa06584cef24eb907237adcf4bcf77811f6063e59fac8671b36c7ec8bb10fd302e3a07e6b575411c24ffba35fc96f67a8f0c06ca60c5305f066c381e429d5daa2982f99e83ff905d388b8f751e3d0e5c5186c357cf6f5c50cdaa5b0b83abf65065b00e515379a917a30dad732af43e61697b1ae189c9278ccf8518af7916c4434cdbee98bf74e00cc6f38f87b249732649b76c7996b89aa7562c225964c97495b9905bcbb324d63201ce2fca1fac163a3f67d6505e8cc969a91c2b4769523715e55ba59a9ba34fc86eadc758b3916e0f7e1b791fc44fe0af97f1b940fd4ad92d68a3780dc42ad249f4a87548ebfe116f95be167cb92d5bb1392b7237be5da6499082bcc1eb1319cd12c70dd63279489d6696ccd94acb98228b9fec76c44bbb43c95b636fa8f755679ed6b9d673f965e5fa6b360f52c6f01cab3c83975f9721c43f402f5c877e4f6788d4e34b18732bcf2c7279a7f967a4c33357c9fe1b7586913c1fe6c49d29dbc0e19963b725f97ce0f04ad4b9982f2f77364f2ed41ed6fa21f1ff64d32df0fca7fed996ad164ea4439e9f41771cb01f2477da2bbdd2031e096a77fc5b45633ec85f5a131beb7f49fb621caba731bdbd1ee36591474aefd0dc1b9fd68ebb5ca5a70078a958c2d233fa1b936eaaf555755ecd48e6744bd225d5590e7e61b0cda74ddd8eb01b06afa8f5ca7c921cad9c14a35f82ad4ed8119221cf5527413701fd3e1d3051eb9eed0be3c386f6b6221be2ef50bf1d7c5553076a2ee93c12f2d5512ea9852fae095f3ad3effa00d8e06b3c151bf3626b3c59ed0517d33ec84638330ef5223a8a90f2f73b3ba70673bc5fcb9fb81b38292f238e19b2bdac7bdcca638873ef13a863a5736d6eafb02350237ffe3aae04ebe747b2f098d28f079c12da1876fce205c6c5c29b3ce4c4f34e9c3387223bad45173c575e73ace77c57605ece1f5f7763fc5d87229f5dcad03767b98d7dc95d7fe02272125929994dfb8579c1597436960ef57c4b0f07fff4adc1dc065b9b3f4f8d39c836654785b237feb29e1dca3c70797ada8a6e4fb862f0af5c8c2c441fc75eadf73265ade66a024efcdce6fb523a3960a002cb376738bd075d48e71c018e381a73dff263d5cac395afcfc40575dc97e2022dc513a8dff63b802f04ae270e2865eba9fdb14db284e2164a6ea97b888f26e3da37f1687352551df8415af0473956dca3077ee633477f94cd7f0436ea50bfcc8effb08f659ee87a40b67d8e73129873b7e1a1a52766093e9fce4ae1b9e63753c79cf23a877136efa6da82b160a1ff42c732ed1a1d126a6e6bd98abaa933c2583970cfc49a7b3396fb616dd0fc28d99f64c16389bf4b1c2fc473559db4ec7935f7ac29bce6abf97e989f9dea3fcfb03f9a03cd5a5b87f524daaabd0f9ce07a9d8c9e0ded6c78566f85b471b6ecc047b85bb5bfccf54f451e0f638db6a2d68711e34dfea557e71cb84d9e3794cbe8aca9b6a1ded769c70c1714ae251823cd89b6e284c7376b10c695d620336def8537ddd6a17f4e276c031ccb5924c77c5dccc44b86b502b210c6cace4f5f7bdce8dbab6c6ae925c3baa3f17784036b5fef3fc2378d7d9fb8162c5f3771ea555dd0afdb44fb1a80cf87a5ed68ddd1e7a39036dfe314eea5ffd77568f86e958d7ed13686be9e2f226daf51adc2e11c205feac02f47bc75aafd14eb9bc0790f7db5eb3a209f5c61fdcf4916b985d744e053f1ea332719adf4f7c26b4ae1f9fb51eebdda6fe4b7c17abbdf280604eb9fdf6aac2ce60436dcb3e3f3c889b1ecd9c6e482528c3609e505f23b3392c537565c38758f903b649e3dfe3e09fd09e150cf8533f255b456fd7f6b3ec7f733f4031c451f4ba899b018cd1d8c65358cadd6016281f5e49e78c6f49a07ae6b4b5fd80b5d6b10cff2633541fb514c62f4ef8541cf19d994592db39535eff393e42fdfc37ebf0bd6bc3ea5b426a186ffe8999dbe3ea15ab93ae7e934beaec7f7486c2e853cd1755174ce3bd5d83ed9e7a5eec3953fcae02b06ffb28e0d181fd46c2bbaf829ebfca3486d7e08be05eecfc739daf0c05f88f9e37abd305cb7b1e60da1754cb66972ac338de3213f263dcb5ecb576d697e443dbfa998b0c7d2e26d35f8024ff6023890a5925367bcff9bdef7c39eed02977bc35cf13c71d4bb18ee1b1d9f41cc4fbbf4fc9dcd9d5b824f8eedabf0a4f5bb5678ae3df61f41df217b08fc4fad911d1e77aefd76d8260f1229f2592316c998a758d7489d4fd7e41b51cf963ab603ed1bce7576e0c65f10acd157a06beb2452681d3c8d9b6a91b8e4c3ba8c63ccec4bfa7bbea014fbc0affc666be4cf00df18c592b48fdabe57fb9b3b882190afeb96f89b2c3f4e07fecd3c4e854b38108809bb775c7372289b86455bee35c4c32f0ff784dfd6beca224f9ed221e67d069b9374ba3a6c62e21b81ebd65980b8892c70cac0f205f7c956f4f2517827cde3dda3af16f1ff782e59f90f98d375261f5c5f602cfaa9c2dc0e5cdf8b7857a0bcbc20877a73a198f513cfbfd978b348f41467d67c2f6a6c3b76aee78dbc0f926312b2c73273095bd6c87bc47eaa76686fb08f77e7dba18e8d83f16116fa63ee731763644b375e2b3b5be333eb6cdade21265ad98b1e076e567f09bc3ed9d4d131d08af2ab707c9b4b2d9363dad5c8fdb460f2ce8c5b7311c1f05b419c5c62317b2a881f88fab74a1cca6b57fa98270f8015d076b0f4c9bec53e2e8917c35a570f7ca2f45538ff8ccef2da77397166e593e431f734cf70bd61a17f4bf376e65e940a87e64bbd8b4c8e664e80d7b5ba2cbda621dc948e4335fcd3adbebf61a13f53edbe9ccb44169edc17d9493d83b01089acbc00383e6bed7b1bf2151cd517c213ee8acc7da639ba14b9dad35aff547a83bc145eb0d37abcda2f94a7baa93ad9970b9d2b32cc090f8373e969fcf58c78071bd7b2736df9a5d615727af689ac958e74336053d19626f985f240cde3917bbe5b99d81ddbe9330bb87c0c6669a975d263e1354a67845a2c74aedc569342cbb56b1b685b394953a1deadcede1b7ad783d6a3ca3cbe2bb3fa09fba471f4436d29b83e9b36626ee1293ce6249d0fd8462303b3d37389e7b2baefaecedcade80c2fdbaa72a305f882dafa92b635e4ba2efb58afed67e2c3bc60ed70da037d725c2d62efaaaed46de59dd616e6dd316ba5c7b5787dbd9625b43e1db33e412e05e9f5fd5f021b5785ebe1bab695bdeff57a79edfbabfb4cbe969247961fd0118e852fed630958d1f97006972ffaa5af51b2aeb1c783f67ea2eb08e8cf9a0b5f5fa7ecb061aca58f9c7ad7fce91bfbb7f8283275bfe58f04bc356279749c60ac279c8ea427d1ff7826915fe0ccbddb9396337786ab35698a4eeeca1c73860ae40678bca35c0fe0ce0d07feb7c20b7abcb77e2cb2ea9c86c159e0b86a6ed3e7228f286feb24eb0ef5e11a7346204f62e9048b3b396baacea5789c7f41cec7c4f0c2989cfd21ef69272691f113416d8905034c8ac63ae05810f6b16397da9a53f81cc48f26069501f67d63b0e4d9d4015f525e3f953a772d0f5c3c1f82539d05fb027838502edef79a6b2992259d4745272f554eed75278d73dc08e0de6a240f839dc87cd207226d17401fea4e1e45887b1e746394299b3a8f76f7797da45c2cf5f9502fe22dcfa607ec5bdcf0903945a7e3ce901be4541d73355f5819fa8fc8a54879479348e3c28f5537ed44e84f781e0d63e1f967d1c75b11eec87f25f7954776db4436c45bda54dddedc83f23b9e1628e75be0f3f220bff55075986f8dd7d4ba060e5e338924b7ef994484fd81f6bf9761f0bd1c3e03fe49f4c84b81edf9bb32e7f2ba1d7847e227a7ebce85d76cb59e5a75fb33e1c0e0facac3b931d74f625964f59967ccfe6ea774e361aca19d8b08038767e3f7aa90bbb2af3aca2183fb13b7ea035778f262ddef9599bf23f90175852ae32b4b24cf67977222ad71967ba54fd0186d85ea233d5778496fcf23708967d159e35778773a56ca1ef59a2dad05f0e3569344f593fc1f5cd93f178a8ff745260f95171d2bc46ff565e85feac5b047608ed1870679cba28f481f33e361b58de3799fb1a1e69999efe6283a36e52172a396a1ef0ce3200f3c948de823f2b5c1e71e6b90494f636c4baf694a0fb9098a9c5bb9e4a7a6a6dc6e357784f3dd15797db0d68dd22f8e02f820784767fa0eceebd0ec55fa0cb54d76e4635667fce33de12be8732fbc53cbb3e95978c994e35968dd6fc6c67cd6eb4cdfafd70d7d7ed63e41fa7c29b2d37ed4c7c578bdeaebecb5a3bfbb5aaffa7e58dbc37ca0de564d12c9b3d3751b57efa43944e49e8ffb70e0dadeb1f6adc882b3207902588c9ced41d6666e0367eecac4845d9199b1879a5e75e61e2b98a3a5fddd739d47cf7446e9ef2e3c0bacb547ede5d77bd87cff8c3537adfe53dfea053b57393b96b9ce1fa5ef496657ba9e65265b813adf305e993cd421e027f6f4f9522fe4594c745bfe63e10517b20b0f45ce9bb2f32765a87956a74ddd931f314c00f381be28c3af7f14a1f478969c8bec96fcd2c6974fff332debecb17b2e94fd7f25a3ab30d8d973089ff32bb9d5cf1a1132925b896efbb9c867cd7d16a8bea34f33047ff8739df18e3e9f6bbc5ffba79fc582edf1377fa2f7273dc3adfad9cec42a3aa6c6c99e67fd5c359653ebcc3c0b75460d7bf65264492b42b6a93ae31b6c44e81ecdff5d62df3f5e379097153f71c24d559e94a29b36f4ff4ef36a54de7e3af4fd6a8df5666f119ff3d55eebe383d6c92bc4acd8cf7778c676435b4943b693f69f030f461d9eb4ef4be99f47f4578cd7adad63d45e23c9661dd65a8f72bdf2dc6389ebc7dee7f47f6d9f15bb12b04aa4fb9a79073f422842bfd1b6ceda9b4ac4d82625cf23e89fa9ede6cea00e87c9ef319f138d8f6d2867f053eac60f2c9d460cecf15990b66e94ba71c45af6b04e8374e97cc39ab773b65aa7729d3a324b981f2f59f269f509da5ff1ac0eee17ba8e95ab6cbd7f550ed540200c08d64330f54f740c8ff0c90c39d1a84686ae11b1ec24f994d5fa8a813b75a87591dc9439e26d7377e0d488c231ff10fc0e5c0be0e355bf53ec7ef01d0cbc4406ebf8709d17cd89676dc0c75ff11cdd18fd1e6b341037bedd0e7169c3faba337e5aab3eef507f7578b709f28868fba1186a1e3e1779f2c4425f8dbfa4f1477c3ad99fcafeafdce47855bbc911de5e8a3e4e851b49eeb08f984f3d9bb179f390b66c91b066496bff3bcf4c8d3ec4ddce13a9cea5d260f8ae3f6b6c28ca47cb2ffe58e4339307c0b176bb6dfb9bfa8635e49fa38ea5d63ef0c81b4c1ea33d405c05a4375461e0a8fb84dd87b43e8b09d678e279ac9e2f6d9b56e7fa301645a3dc798bf3c1be06d74ad3542de44dcd6ae3878c9f0c26260c7a5d570b3075d65ca05c63bdf1a3f489c63c37f52251b2dde4ba695ca298b0212eb9400c581232a5236c35e608c772a6e3d3c0a1f0caba70747df4aa0ba657bf6b6c1fae098fd6046234a2ca795193dce2439597177544fbe468c7c7ea905d8897d6e1798cfb00e3879fca30382f877152e3415803e6181cbbd71cebecd4b23c966b65bf6b0e0ae22d431fd437b0c5efd7f09c8f6853b770fffd27989b29fa50d1a77abfc671475e8939dab468eb932d4fb63ddafc67bcf75663d00f849b3dd488b5c29a6781e106c1d894f1cfb37688c3535c0db12157711d8ac5a935deb1577f83785c3be42390ce0338996afeeaf710c7598eb9a91f0177ef8cafe761b45b7aca8edf8f9fdd1b1ce2b3980cb9e6c9e09787cf367e05b19888f53775c03a79a83bff3bf11d12df16fa7e4d7e14c856fc4eed53d51fe2b3a0df4ddcceb1e272101f5ee6c9278a952e85e6a550efe92abb8eb8c35fbfee5264ae1c62e11897d2799cc66f68f27ce295f07c8d09de5a631d188ceb682ead78659a68bd88e297ecf97aae50cea879d8a1fddb9d863c096a77a97437cd4fdd0306b0c1fb5fc4859eab8e3d96708fe12c7c1693786be7ce8bb04019ade77d12abbd497ee3a97b15973435725f8d01431e1dea0375aeec404e186876d6f179e1f10ef2e2a9469bfddd3a641dc9f88e63ad1fc2b5a11fd7cee7d1f135ca91b3fb08b165a5470c7b0feb16a833c3d4c0b1b813867a7560eb9a1a6730b672546fe8ccc1b7153bcb6cbad579f2491fe9d8981a8b564c223b4fea116a0064a799e8e49eb0969803a07318fac8d4bc02aca4e90f3c3b15b05f915f0cd659cf1b31973a2fa0a97aac9955995cc699f519fc123aceaee76ff81d31764d69729aeb2d5f98dc8e2de1e85aca537de299b2cb34772ceca55bebbbe772212f65165f524fc97179203e6ceb7bb9afb353735d9ff0fa7bc48bb89a6706f76fe7b73ab7b49accce43dc373af250ca3136197f6758ef03fcc9b7ba3ecddc7088404eec80a9f20fb4d73f8dea9579c1259d0c3e55c82f4399d45493c4ecdd126b146eac3a47583b23254e5e907198b738de87c49b8639b5dbfb8e0ddc2f50d3e2957bb09efd51e7fed3bb0d759fd2e8464c4c1e36e07baef23ec946321865cc811cce3288bd2ca906f180a13263b7115e32250cd073994d0d3eaacce325e48319cc1df6dffa0eda56f7eb359fd27c913d385a0b06d33360d2ce80d90139abe76e2acbac7e2a3a5d97c46deee7d7df291d1c72a9716c713ecc35f6fa82f850a76b8baa7796577316b41cc642127fd470aef1858c8b215605e3b21ee2a0bb7ba6ecf6e9b8b6476ac6b5ab3a7f3fcc7f721cfa0b7933cf76fe3cdccbacef3ab367d6d6fccafb85a98da56540526741cb74bdb29edab06b8a98efe22327df83b2bdeb8e72a2fbe48913b731e0abaceb6a25c358ec50cd70fdcc1bd097aece1225af918f73d43fea7f8d3cce831cef8718e9f0f90a236ad65661cb8c9c353c3035d536565f2e2f9f0539d4d667757df38567acad5c3b8f65e616dd695b38c173a963e01e3b838c31f594306ffad6e4b8521ebfe663f692a9f5fe4da1ced69c816f83b89b757cc7b362b70d0f93d17b920e0cfbf26e63cd9f5b4b132fbd9ad332831888339c3dbe53008e895b715fd0cdd439f285e7f5d53e881bd1738b3f7f8491df564eb2d51cad7528773c8f973c1fe786f3509eeb85843349d93d1a57586627093e0c19a1fcece3139d63f05b6aea1f831cbe135ed0f22c8938e6f4eef4679105bde6932c3df9ccb3645e6a5e59f409b8ba4efe505b9a9dc5c2aef13bbc4799b93dcba31df9108e15f03d068e8e8b22c648d959ee9174c01ef90f2057fbfafa4731994db53fb7b4c60be7837d047d2f37fcb29f84e79f79280f85c9893b1d0b5d0314b1e8f8ceb81ef7dc919a27e2584d628a8f7f449fe7702ff4dbce3fa891876f74c6d4ba3fa9b2fd225d3b95c630dd8ceadbe86bf57eca6bab5ff1916c7b3db7940304d7918d1d6c2acfdfd5c019353abb206f5504c95684ec4b9db99b0137147d4f703d7d217f1bca532f38d4c4f35687fe27cafba61cff13e528265b9a738b03ea4eb771206c73447809e080829c16949feadc1ed6551b713667ebdc9d05a9f4ef56e9f4b37ac652ca3461f1433a67abdc617749ea066b09e3cfca6ceadc5d22bbd61460a9134975b3b2e9f7cae5eb5b83c91fe1eeed3c78aa1f64e510f5c33cda58395db774cc490b18463bf789ea7ab14cd9fe3c6f34de6ce8abc9e9d21849c30965e531c1fbb072c0116b3bcc01ac1872d6805d55f4d2e123fc22d6fd829c733b87defedeac11f25d117f08f2c99fb45eaf6b2d04a2f35dee35c0376bf820c896bdd61b45c726d7dfe96b8d1cea61bd293dac5df6c0e98f5c7b2c5a2d997c584a16262de59cd1efa636539bf0751bc4ab347e488268c688bfa7ccd4d9e1c6459e9ccbfc9bc37bac55203a09fdb8eb8a0de14525cfa6eb32df928f5ad95ceca3c6f991cf5873e3ddad9d20bdc51ad0eb555a7f49d2e401d6e6b057716e51eea8f51ba48441c57a517e087bc29c0f6a3ea7a84b93bc19aff5e9d7643ed8e29543eb18f347b274b4662c3d4f731f5dd72894b3afab749aa60697796dc7c41e778dff02f4fc2b5f08f92811bfad6dd00cf5acc77ac11a11c4ca2ed638871dd89354cf4584270b330ffaed4d9dc99dc91fec8033c9ecb9ab67c35e5ef66c0b1cd5c3de18ced66b5f0fe423b2e856c7a359242b250375dd09e48e853d607f4e905b50ef49e05ce5417234d7995a00bc4f3bff7895c7c156948b5866a7f685dfaac7b919ececa9ac5dfceeea7d9f45183c627e117c06dee8e1bbfd35ce592a5d795487047d45c367b2d338f9d36c7bad7c8d3707f7ee8e6aedef5067853380746b9d9b1d67893b3b96362f9e9bc43007a4c3d359adf6d5c757ec4ba83d4d3ab5593f345761317043698cf75077d6ee83e336f522a27a3a78d608939b82394c55686a9aab75bc1eb082ca96d475b7e58e1b7cbb553f50d7fe68873c2f5d3f633de47b0d7e21b77ee258cb76b09d82d11e7bc83d7659533ef22df226773c57cf89a5c5afe8923f5d829e8538926de5c1f982f15f6f6ae751a9bd225721337861ac8faf3929c05764b804ead0efb9a76b634f77451649a17d4adda92968eecbd0d5f56a21af7e954d1da175294fd79b36f579b602ea0e24b37ae0ba5a9719f40d71dca3bcfcc4a1b3e680b5e9e07f96b6cfb68d4218de447f7fe6393f96de8bef6f448875582bea3b7296c298cf93346209e4a76a1e6f83f39d157d7c14c0196e7459e473f748f7ea9a23c5211c9d8fbad47983ba6e58777229cefda0f92cebd087dafe437dfc60526452c7f11e8a2b5e9cf486ea4b79eeb6d23c3db9ea9be194363103deb31defe44eaf05fd1bd73a2af96573d7ef81876fb0fd86b9eee301dfda635c457341aa7311b1cc3a97b469aafef51a23e80ff1b73aaf0938c403357e754f3e1ebc662ee7d8577f6274ab05db93eed89619efb83ee7095736e2260a997a9796596b97fa35b36b3c2347277caf799ccfd6b5a3efb8e71f755bd67d010fa51eaf0163497c09d5640675f890cb226155f7ac6d635964c9ba0c99ac03e2b9b3f2df29ff07b977891badd49802cfb7c7f4b10c83731de81a2994ab9d1b2e69c869d6f926c23b6d8a3cb2ea970edf25c051511f8557ef20360c7e7bdfe4ef9b1c281a077aff8bbe26f5e27399cff43de4e793071efa93eb7bac3156faefc5e4ae87c163e919db92de6da6ecc7c6e4c7aa7e4c98d6cbf19af9a9115ded6a9d5364c173e504cfa5a941e21fa05f37160ef1ac7d81f4db55cc47f71d39a6695c56766e2fae518b1b9f894e9eea8cd1582641d2066c1d240f4ba799a552fdf5efd66e44f6867a26e4a5a4e8d304fd7d3d5a1b1abfa69ecdf8f61e393fce22b06a10689e442b1e5b0d7c1597a11daa63e8fa18b7366d25c774b44eb15e6699c72efa4e079cafc58371197804d9a50afd03c9a1ad5d8f046be0b04be505566e7022411e86ac7de5b7613c408737188365d5f95e69b8a8cdf7e39a7b57eb176c01867ee6d5501bf0896a12291bc615ba3e0fc5a858e8dff1ac5667796acb25e1f9bdc07c646bbfdd6e4c1ef088c79472f446fe68ecd3ad5d6b7154977de82bf9417675e61eac3ca047ecef47ebff29ae35ed275232b2c5756970c846169ce85a25d34e538ddd1fe40dd8450d60337aaaad6a7f07efc5b7f7edd577c07fe14fec5c8065179c479f11ff1c5af92867c09ee4f49c1e31b1a423187c6c91256d3a60c6e6da7fa7dbd5be15fbbb54e317743f5f8e4f3bc8701ce375186c386296daaa0b26967cb2b02d78ae95e48fc57a4efa0c9acada319c347a6e2cdd10f25fb762c22eaf3c13ea589499ef02dfbe3587c063dbc9639dc77aad5ef587eae063bdef6372b586541fb5ad7d6bd73c49932d473b176ae9b121c6023160f4ff445f793b3a77c95736ee87ce77d7efa5e7cdfe6c9d9756ff4fb2403b83728463b3470c471fca67bb3e87d2cb5ff479b437e709f0ef0ac3b3aff6aafc5a0fb5c846fb9e874a3f8b359f25e49657c6ff6072fe76623ef061237fc9efcb1ad029c7679e1d4fd5f5da53e158b15ee9ef84e73f530d44e4550ca85e31ea36b3aaabedb393dad47b08794090db7ee433367ac0883beaaaffb68e437dfe34d21fbaabf7cd92ad8e2795796cd931d6f80750c701fd519eafec9e3372f2e93d8939edab74a96d020762bbe9e87b5a77d817fa4ec9dcabfe696e93e7d13bafd2242e72b919ea4f03ff09c942f3798c615b4447315e77a63d4635d62a69d70132ed184e95a56e677c56403b452695ce10d9fa88b97edc2f7bdd3c88d03f56c1afe7db31cf84cd91fdb29f9bd7dad3f27d3ca7a60f664d699bd65a23a1f4903f4cc70d81a3d5cc85255b8ddd43f1077d6daad6823a23acb56cd7637eed8c9d1779fc5474bee6e40639cd42ff28c288f20c5faecb5774f48bbd96063943ef29b53e3c1ecb2b5ff920b390fbd8d4c5adf1acdd560e7745789adaba30702a64f1a3c9b9cb121ae31862d5eaccaa098347b23132d884e1591a1b083a96c985c61c506d070ff5653aac15c8995dfb18f1aa68f3476ea16b41eb7a3baecdf38ffc3bf6ff84bdbcaea1b92e26d1b64279f340dc39e083b2b0320f55e85f2a4f2afb6cfc7c19c97a419843e01590cff59cde97ceeb32b37c2dc02fd7c8cae05af15a1ed0bdb85f64d547c7aa63adb64daab3ddfe500790e46fcb33aed6eb559d44e343c2fb6e2c0ef00be2da454bd7acacf6891ba272aeb90383cb7d367dbcd5fcb6563f005fea04807fc373675c2351e3f752bdf7c7f57e8fa21b746fb011ad9aa1541b30c2778d82651aa7c4df152d5d18afcfebd6cfd71239d75669bc367d347631fc4f3e9948f32bc749ea7ebd6a2bcdd82cb8fa0e38c5a87eb48ee5c7bafe5432e27a55e7932b45063e9823f96f96e06b99184e7aaa613b253e98986a1a12e7b4e102bee261d49c802feaee622d5c61f80d4dfd26c95fb4416d07b46708fb465c84e3770c11dfb6cc001baae6e04b9173b0c151578a0d0e53c908e44e596e28e742739e692ec7af42926d817eb36b0e3525e3c758ecb9c5f965ce1c1357befa7e6457193eb455f6f21cb6bed77cb9baaf4e9145168fbde631f10f16160feca504f1b6662cb48f61395cf70b8c1dd882780ee87563d708e4d9146b38a72feb5a9bdf98e121b578cad8a1c29ace6bbd36d1ee049d65a1ee5f0d7874f59ed735f922eacfb2ce23f93bd7fc37b4033ae333faf7266a0e0bfdffc0c5d73a78ce4f6a7d9e27b09741e6efe53db36a3d49b89fdd5a986cf53f436c32604832f043c099059c3719d510275f32f455c79613a8ff85f5e7b07e3dee29c3b14c75e3a96e0bfa1926caf667daf6a71a9ea6aed0d7da9bea7a5197d4f3f7a68e6ac7ce4bb07d4d4eb415a3f50f02e54a5875c180f1067f27df6a599442ccfcba3e19e4463fd67357c7bbd6751e3ff36c7a211ebc87d4619fd296a5b923bfb0395baddbe02e75fdf9daf5bfacdde481b138c81d7f95bbf22b637ebe4a4f77b91305b9c3a3b465b0fe72ef3fe45178660c06de40e90f717ce4ded19c844f4a366bde60ba7fa4bfd3b94eb10eaaf3a3e34ca6064bf0cbbd7e4ea8f920403eb974be9d791ebb82ea6456de152e1a7850e4be42de38b59fed3afd80a9d5b21af80ea96ea1a927c4ecda9a143bd3d84b53ef80e265f378c7b3e03cfecd702dae11dbe16a8ca8e1855ca25e64702db0067b7618b7c3ddabfa56438d7df095510eea226aca6caaf15c243f869a31a083655356cd2136616a6dd07d569b233c2be02574adea1a78bb5f605e8dbcc3fa55899675434db62e3873e473f0b47f947221f614877aae3af65abdaae17b6ffa785dc3a9c0fc54c2b5c5136d7ff0509e49b7c7d85ee63615f6e95f95a7319c54abc67b25960fb1d417f80da80132aaa99e5a7544884fc8e27246ee71885533aadfa5e439c8c4c73a8f1de1b9c8b777f5fca2634eed3129baa9547a27d8d45d60b803ead0cfca9c378915e3d4bfdbbea3713bba863ae41cbe68b3f4a4e616c21c6fe21b134ab6778cf46ff648754fb685a7eb9ec84382f9d710d32d26804b231d3c39d621e5ef4e98f3bbd775f2f0c7bf1b5cec1cfb3fc6118db8ea28d75cf317549eec05e6581febb0a178a6c95501fbc5c2f7237fb7e67766f113f020e7b163d7a4835ca745d2b0d037397685e74bf241a935db826fdad3f899e0b19830c2aca6a67fe01bd07c2899923110e3442e457718bb1a31777373cf4ae357932dc5e75a8ef5e6a67add5b31b12f458af99a03274a74849a08e813b56b8dec8a2c6907dbdb7d16217346dc307922979d84bc21c3dfd0053bc4b0273765364dd51ce298c833ce637467b5db571df92c27d1967f22fcb633f042d69eb231e2b5b2ddb91738f79b2bfcae1b6fefd1bf75e0799d0ac2f7f22c517acda424dca0d2cf943eb454fd307aa4fe6ea80f2c428873186cccc00b8fd7a2ff6b5c1fd8f020a3dfa1a9f3f852526e3ab7ea1261ce444d752cdd67d0afc9a7567b43cc9a7c8a9a87fe5467417b778332bec8b05604e0539173087f3f0f7e46cdb5be1ab8f235b6625bb97123b26b7c386154d97086942fef252cce508bd770bbcde56109e7a2990783ef5ea74191bb7cb60e58809fe517fb33c40b3496c4d82f03be19f56c3ed5b19f3a6376cdbc4b19caae9ecb967898dcca6b34a61363a9685b18ecabc8824be57ea3f32cbe64c6c73df289a97730f794791c887c461850b5efe2efab3c9138dffe8e0f38f733cfb1a695b5a6607e5659827c5fc3783e8bc94cf73522cc80d2d31fcb316fdc33603e30378efe8779474cb23af39ce868d543d138b9fe0aa30fbcbe19eef9a6f218f24f766c27bc58dbbb0e6148f06ce9a16f1ed5c47fbacf636d0f6654b70cfdd05867f582b59db90419f218b75a9faa642ceb05f892089b1c7ccc282ff23e18ea1492ae3755f2dfc295101e083973c7d81faa37351f70294af6297b05794fc77912b7160e8fce4b533f497fbfbec262e93ccd6aa27472c474eada684a4610378633d4fbb2396e078c13f1b09a38ec7a12993dc2aeeb5d758123c260ccb1be0e3ada73973af4f7cbeb5a17d23f8ef825090b6771e71e48f7b5f9e094cda574e7a731fe56bf2ff6c3fcc6484ee05992a6ad9caddbfa2e615a9f38c93a6423bcb6d6e5c7edebda32232c30602147d7c924c88284a52d7bb86b4d4d0ec405afd15e4edbfa66a9b1d9143be6c0050deb2a4d589332a66c1c7796b87eb84a4f69c260ff004e7189ffdbd7456bf9da75d1c33a95cb751a2c73073e07a94bbe03c296f0d4dd5621d58130784ce754a2ede28c70ecd914eb71752765376a5dfdd9d4b54a0157a9f68ccde34ff8729ba309634d8059b56af3f257f210712fbebe1e5ffc8edcd5635c21ee0d1beb4b1cbc728c6724fce108b368ce184b9766668c68cdc6b2261ce5c08b0e7e058dbfcccb2c218c2fe5fdcd1b2b5f816f795e43bd8a5be47452e3a779ac070c2af0d48ef0d95260ee09e5e85ee1d833a9ebdaa0fd346937762df997f89668a7ce7cf079c2de8c574bd79fad83d92dfa7bfc2f09f3e3553a65a9ebafd3367e58a6a7e56a8ef13131e450dface7ec0b622ee2afebb9bfca9d88252d0f52e9dfac98e66e88dd6a313b5686179bde0df817d19f7a6bf26d6dac267131bf7a1dfc46d7f9fb92f2c22a57fb39069eb6fa95fa7aa26393711d8f58e344c775f82c7b47e7f1b2d0c7fcb2797c1413758e4f9b3a1c722ef4f524c353e11017f22bd7ebbc448d6125dbccd4e51b6a4924cd289f0972b6b02655a5ce1fd4cda9b61fe2592caeb9f9da7197f05b3eca2d9aa39e67be6f6d1e76882168bb15cf3a250fcfe09b7af91bd9a7bac61b70fa83ae67618d5bcc97973bbe88882f04e6c6aa91e5aacf3be0e64b919700fc90adfc92cce597c4f5832c98ad6ea95e0ccf4e43cc60e075b572fb819bdb9cedc89101e7bdaef7ae7e4f5ff2c522a7b7f0dceb9aa79adb23363cb650f3eb45ac417d367c835007393b99cf762d28cc2fd5d860902723fee43a044edc8638848d8dcf11cf4335c7959e278325d57fb9250cc22a65739e9b7b354783c5a14d6dcc873ac985950ffcffb1f66eed8de24cbbf05f021cf7373e1cdbc83109240224306706f2b463b0e36ebbe3cdafff2ed546809399f7596bbd0773f5040b1052a9f67517f877bec64f3bbc72d287965daf50f2490f6294d0eff19f741de9813ff97a873be29a7390f49e693135dda9b161a8e6906bd6fab5db46cf0c3aac2ff8dbc85ef035f731967b39fa9a6a39f85aafbec3d643466dd7ffc9c8bef8b3eebf7737f9a329774dedf4cdea5f5d6dfbfc7e0d877daedb5bf2cf6bd8f584a55cec94f2fc97bd1caaf41e9bbe7b37f1ace17c390fbd57f7cdefe33e163667b35a08b797f3eadaf183b53e7c969efb4afeb61fa5373925983705756377be25e0e9bd1ef1c3dea598bbdff56cb53921fdbdb1df077cab9f8b6ae3f4a017602dce7a404f637b1e39efbc57f3dca7776b6fdfd74274fac49d4cf6c44d2dda3f25e38079175bcf60318e9c2f7d363a3fcf7d6f8e1dd5a6123e336114c3b535f719265f0bce13fd48ab64e08f55abdcac33eccdef15e176c19cd0ef74c56bd1867d0395d185073483ffdf8b3f3bf49c0f63bf410cd16b21de86b51f5ddfc46aa7f7eb3c32cfc41eef8c1bb02f36b866887b82cfc36f7bc3ef98625d11c64f248ea3feeed67ef0718c863131def788d7361bf437c0b527bc76826b29e68d45780d31bc527cbe445c568ce7ac207f60ea544ef059a27ffa76cfc7114f363a5b3cb65cdf6a41f5679803403d3b05f0c2b79de6bc788defc275785b007ddb1eef1ae7b3c231b8371ae79de0355cab0cbe79d9103e29e15aa35cc73c718db8ca788d71b0111b1b71e27ee1b5d33bd235d521a29cc6bc7dbc7659bd934e62e3f7815b38d8d715e32871bbdaebbda29e70f8def6d8c35e875a887e8d66b5a35a924e2fb0e7f30ddffb9f1ae237e0a3deae594ff2b4d3eba960eccfb3c6da578b518cf36ddf91a696efc3d846af7ea39d8c38f7bcd757caf61b1f8c6d688def7b4835c13bd229e5cf401c0ed79e63ce83fc9106f18b639cd77235c863a538abed193bbc9e64b4bf90d3197cd679747cd398d702f93f228e5278c701de91e09c429c930bd7527cef2b5c6ba7704de17323e5887345358b4516e9721f6d8a9d0ea166d52fdc72d7e5d1963dfa67ac29eaa5bbd4be1bc2737754df90477d1f628aef8edfeff50feb9bec5d5b532f25db37a4f75b0f1fc44159d30e9ea3f1bb327c5ffde57d3d1dbef33fb6784632bc770df7bef35ca927159c83ba5d6527ee1bbaa51ae02de9d2682fdad878b12bb2c8d10b41385e88db5f64ee27e80da28be9150bfdf196197bdbf6158267ae175407deabdd293ccc83c2771f709c47f8307456d7668ff2187a080df22a07bfb5b09625f773dcb5d83b6d21f6a413409f9a8ae8708db5f037caaf449d24e39a70d017cea58778481ab0a3fa58ec13ec8b88df7359517d44e5235674675318bba9f558bf417d1e7bd226d9f86671dd3df04171ef83edb2cbe34cdf607eeec2629ceda3edb2df630c72e6c6bb12e78018eff81d1eceabde223f423c2ebc86eb2c71dc0cae35f8dc18c709bc86fb16e37e2cf11ae2c827780dec84b5a71beac114aea82f0ce92de80f68dc2d9edb10e514d5d75684eb928f02b76ceb43bdd8c86ad77e5616e3627a5d6793ab8da33db68dc59f68c516cf27e594013de0f76bfc2e1773448363a1273788253feae3171f4d06fdf3dfcb85fe4f8af1bd23f4fd1bd99ca58cceca16cf548867ea0a678ace0ae15a67c17baf2614b1a2f037cad11d7ecf0af313b7141b6ceee763e8ae6aa01efeb7a1c3bb79f1d9a21c75ea590ceb8df4b9c6e76f7ad8477d1db9e7570d3e2bc8ddc4defce9483baca7af7693abd1b793ccdd149e4ea1cf40f2f59e1e4ed17b39da2c4a8e8def260ff1eed2bef91d2ea0b996925fa1ec5d2fcc38fca663916f1e2bea8b0fd7d98744f94f782dfaa876b6279bb9e7a5c86a3c7389bdf65a590ce5fabacee269b5439d0b626422607c20f35b528e6aee9b03b134b59b8cd468ba29df0763ba7e55786ddeabb780fb38a73d263e0eefe2ba82d6c89caf637bfdae764697d7bd1816e0102bec59b1c49aba4d1727c63dc2ebc1d9e8e79cd7b66a6d3c6fb4cee2cf1a7d1f3f7ab52260f3b0be53fa13230f99c676e562f2590caf81be92f6df0f3d5226bf0b05f9dc9b0e976070bdef4f37faf6e7dad311cac60bf4d9441f527c2dbd53fbedf375878fb5467a27dc6e97fb9a3b5d0f50982bf7ad69cbbd3ed83cba3c6851e70cc887e1bed339fda8387f2aabdbaeafbdcfbe2af2bdd5ef388ef186312e45b633cd85fcebe8bbc6b38d74f5d0cf9f2bf771be06dc32c2a71dfe06f9c85d8d13f28818e7bac0b1c2ad179345e9452ed51ac098dc9d7cd40b1762dc09ce8f78f101f530cfe686603d891b1d56e0e7847984c4b71be4db30f615f5cd6983fa16e1d0622e15ea2a0b9b1f4032b9d79bb4c535c8479c6b69e4358ccff01938ef0c9f51e0359c6bb0a03c7edc338a35034d63def3aed8ac6c4d99cd0d9215d97ecc832916e391ff92f2e70bd6598639cebbaeb7238ce59ad885be561ee77df2b3361bf233b00c601c00e80fd7c3e83c9419e414529fe6f6a61f0317f0c929d712f524fc169c2fdaf18465dceb9b66f3d68e8c018e3a2dd6a6f05a158637a8ae170bf56865ac0ee675988fc031ec5eafbfbbf1fddeac940f2f687e7adc618a325633ce0f746feabdb15eb4e8ffdbc75d6d12c633286e8fdfd9e992c229728b25d9969938e0beb9e68ca0dfb06f932dc4ad1ad59f94fbef148c2f4d7659ede91673d830e6fe86cfc51a9e06bf45e2bce774e6304701c72df01aee5382df14e035dca704e71fe23597fa24819facc34a1477f185668cb17dc28fa1bcbb419d449a6987ece98f35613baaae0e2bb278be6da787ab8c722df13e8c8de23d1aaf158c8f0058e9d98c73d2755bb6883357e7b163fd693bc4c52a049d613c3fd7d27307fde1ebc564d82fde626711de47f737c4ccb5f525e91bc449f1ac406d5fb9071facbcfbed503ee2b3ea457bac31e6edd47c2e3bfdd3d6ea605f65a307614e6446340cf1ff85bec65dff337bad87235a904fcbf6785e67582757119626fb51915f219618d62e051867c67afda6e8dbcac84310db0df39bf678cf6687fa1be2cb508f4cb261ba1a385b37da707f36e8d1f2d9cbc332f6d047390afabd1277202b1c3b86fea6f81f3ce74479a2ab7bfdd1fa378aecb2a91e23430b071bc3f0b45b7cd97bc4382d17ed196b72b0260f79d50a7955579333b7bd71f1dda2f2084f6f21b64546f53b8dc5a3d588a3ddf5b3b3bd331b8a75b435e2a93686de089fe9116b569417414e3b9eafc90fd0aff754034c7dc52b98ff1274d91743035bc42d0e5333afe5257a876b23bcf613aee1b825e869e1d6c8d325628f6f43786f7893702d8271a187d770dccb0caec1bba3b9b1cb970e8e93382ee5f7fb37fad7a17f5dfa97c7d19cfc07fa778cffd2bc52c45a0ed3253d6f49cf93f43c89cfdb22fe72c5b4487d73ea8560df38e390edfaf6adeef7afdcd9bc67ec41c9b1c78cf25619d3fc31de200feaf7ee142b92cfe6ff31c7c6d872d9c52fb28bb3d20df9c6ccff7f74ffafac7c1cc1f3dbe80039768a65f6c5653c19c2850e8b4c78dffd2ebd0df022f2d5cbf25133861bf7af25be3e3dd619d3db50f67e73ef1879c16187b638acc50ceb59a21de97057cc93ef3074d34c9f4aaffd5164b12e77eea6f24e6df11d2e7e3bf90fd7f1a08e646c2db72db309c4b3d24cdcd6d0a3737328a93eb2c8f90ce1d9c3b9600d73cc78235ffbac47d607e463dffe6fe7d3204f4bf03b9ff0d9c867fa36afeda93bc4300a71ad063e8316b00b46b15c6584e1d3b85f9e57920d99ee56f73e01a851e13cd7ceb66e43f0bda01dfde57949e6426f16c8a71fdae312e90cf38ad4d7f785e5a81efa37dae89be7c7c7420ffd041af7437f5d03c3dbf5b1102df4fd87b1f8de1ce7826b9ee19aaf0bf403a23cc2fac92de677c7e4d343cc3ebc56ef5117ad501745ff1c5ef3b0670e619e625c15ed864fcc6198ee49b733b425de1ea707f67f76f8cae447dcb5d76a34a4bf22df9cd79cffd55af972a5fc88fdb2872551d89ea1f80d357e03e4e6f5fce1f837e43ba2cf7d0d721b6da08270cf973d3f273e13fbc4d6f8bd375b1fa27a76cd7eba79cb2c8ee3035ec39a97375c932dc66af07b255e9bc3b806e71ce39c17780dd7f89b73b65833e663837b93e0de0478df09aea5782d229beb45396211ebc9b6ab3332f6e6e5a8767a5b64ad47b19e1b9e11b857a76d348d1b7316bbfe0cda6b8fa5efdaba9314d744523c857b192454c31de3f58063eeb7da07ccbd6d0fc34914bb82f3e676eb3c188e69719f357ecfc9f67f673facb0b57d1ae9b0edfa652e3adfb8c66fca713e9b3d9e870acf03faf0905633f45dada9ce01650e5c735659ddd37bb0cf2e8eaba9ef32e6bf76bef06e4dd10615c77414708ef6614db1e16a34fdecfa7b1dc8af81f8a9f87c17ed9b1df662c6fba82602e771a5f8fa07ca5eb8e6e2b502afd93e6191c3b1f3228b93228bdd95c7391c625fe4c177d77af56f80f39a707ec4d0dfcff560f0ae077c7ffb816700ae4dd794bb01fe9d11c96cea9f2171cc1cc63468d3c5f87d0bbc86eb9ce0f705780dd72bc17786780dd72bdd51afc84c345fb135efd61d6a998c5e0fb9d74d2f2ee7561ed7967471f214df27e17dadf8405e0fd752bc1653cd0ae512f76aa4357e5386e3f09b32fca602afe13705786d83f91d016272624fb806af616e40813999ff7c5e450f2b7957633ec1a219f0bc612f9df101e70e632e84a97c203a76aa7d6bb1f2d7f8eedd5d5d58279b3ce1955edbe8c5e65039c5c0e7cefdede8f937d9e5f10fb0f0c0e7ddc3d827fd12ed7fc09bbc0c648bfdbdf38d9c28e702bf01df3b5ae551546717679d4f8f77987e5c5bbbb5bd1ff631dc5be3f78ef0791bb8f696c1b51f6be4ef07a4e506f94d267e2bf2a14b7cef02c7e1dec578ed3b7d2a2d77e20cf5db3ee990bab78f0dbe3bc1773f119eebe76a843a7582cf0df15d38f714c7bee0b5095c53b8c731e5d2a29e2982cf926431e69100bf4a704c74407e4c749847e77221503fc1e767380ee92cc371055e3b1c90ae9bced784b2c85f67f11c7c8568bffe5a763e27ec0bd4e5f7276bb4a7698c263f50f40b7910e8febf71cce517da9e70ed0f5e9bfc42bef9817c13edf05f48331fc83711b708af791fd66f04f9f3983bf28063da5fc8db3e2c6f8d5167e9dbc3537c6f71a8f691a32c3fb0bf234f5e40cffda6ebd702b2f1d9e8ad653ba55ce6bad349775dfc2afe5e4feae146dec59bac4e7db2399312bf61be469bf917f2de0fa457d4357e21effd40b9978d0f15e098d69fd427babbe6eb876ad1727c49753d15c50d7c5e23f89efe1a05b89e5cf318f7eb489f68bfdd6ad446eb6cecd7fcad0df6dc5dedf5ed4dc5ada143da9f679cb3fb0be500ccf98c7cced6d3bce23b31bf41e177ad30c687f4a7bc8f4e27f97ede8849a5ba3adc1af314b8beddfa40e28586fc46db5fce8b8c5c69209e9cdcf971da0ecf4ae3bc46361e80f9805def97bb9ceaaec6d7e666717ed875988b268ea5e86368456ded93ff685fbce379fec0f38c3907bf506eb44d41f88f257eeb6a7d6f8f781683a2eb23d71e7e0de421e5d81a1e8f7a17f617c6181ef744826b2dc5f5e05a8271deffac3b3e69f3f00baac5c2f11b9431489bbf592ef57ac05fea4c5fdf34affbe42aa92fa2ad396b887f2c2c7d37f1ae7d2ff260f6a6369f15d8d4fd7ac1c005dc026d75d22e8fb4b598845d2fef3cf2d779046b463ddfd91f7cc3f758ac90cf32730fb55f1c563b7ded3082277fa437399559ebd0bc74b9eb74f30cf7ef13f04a766d53a8cd67e99d7abadcc42bf2e0bacee2b6870f89f4626d1cc262c829c789e3e77d59d4e5e9f936e68379b1e4d36cff14fedd7aa960dcfb4658db6431b9d5fdfc0da7009c97c2e8c8a86ff5deff8fd7190bd77c47c27538b6e75087adc773eeec298bdb027b40183a05e453a74e975f5e40dfdd4dca982c75363e410cbd8ff9e18b5ecd6cff6c20264291c51443611f58cff7c1677831b9dafad4deefac17a9917eaf1f83b650ed9f7a31b997d7519147b75556b7e8b71a132e6b7f2e887d8139b43a613dbe32b601e640701f7ea8fd0819c37e8fb592a5373ef13bf03eb37f6e5b8d22c6dabc99fb7a31e6b3f57ba85e3ff5deb7416dc3aeb57941439f90d151db3f75a6c59b39b31dbed2bd3f67817664af2eecdbbd18335e42fffef32a37b600e48db9bd5ace9ebf056ad28735738c27d3c3d0519ede1a7d19ed28f75c3fb68b3a1bf7301ef5a97a8cc75d8fc831f418545d7f12aadd313af1d8c8ff39c81094171f6bac15ba155974a5f18097b35e208e30e175c83bdca5f7d2c358d22a1ba33e007d2ddbd782eac4f9fc11b63063e9d0ef933f859a109ee1b84dbda2c3f5f3369bcad61a68d03bcad1147eb7fd0f11ff11f08cd28cf6c4f0b78e87447cce86b98697cd1bd64f4b435354bf74a89cbb67193bc29bfce96a68ad0d70a89c7fc000a57bba3ea4d8cf74c935aabd38c63a8f16e5c8d80e41c3fccd5c1be08eecda5bcad81abbf6d63fc7187f9aeca0af0abd1b715823a7ff0d6a889372a85c633bb54dfcd5efd1c781b6bda7b8174f4fc706b9a33cb1e33afe72345dd480a92f4e858e3605c53b090fcfd8f2943f62f354fe53017d633d5cf068af77f8ab90a3d1720fd2f712fc1d9ca344b942bb0b63257c94a3a2d7236dfa09f98b388f2edf61f05b0fabac0936c582794f7b2cd9b65728037bf518e0ebd2cca751c7816fe03d847a6a2716a92f8adc7101c7aacea376881342b250331ee140e7049cb835e6e23583fb3abd765afba8b356661fd457d9d2b779d251308ca7e67d4cff13fbd8d0a7893845a7ae7ea2d854bb966c02ac3d04ba4119bf5979bd1ae0ae26baeb07db625e7c57cf00b5cdf26e3cf4355be5adf9365bf30b719f5e1c749d4790473b3ccf1b95aacbfdd94ad70bd194a3daea74cadb6cb02e856bd941ff65fc7c63a77672996bdebbda5caecb1f8cc15a139bcf4d1855eeb98698768763bfce23c2591ed48d9bf1fdde8bf7bf49c2ddeaf614700bea3f4516a7e562d2add163e01a5e8a7d167bdf05ebfdddf5d6e885d7222bb82ebdadf6464febf0c06c3e28d7fa2c2efd3a0d8bc765f404b087006bffc8bf45e6baccc15783bd6186fb3d32f289e256a7220ff6859e6e8a05d8a6fdfae7f32a8bc1afd4ef455be49bf30a31d697ab3cfa483371469b42dcd63ed5f7eef41f5873ee69b7108cc384751349dcd1e83e8218723023d9b29b8c86f9b9b6e7c28de51ce5579dcb11609f533c3ce6de5ecd3a2b0e451edc3a9cde6fe97ef3b668b9b6a8b1f838fbc0c8c9debb6a7b26caacfd03ba81adcfb7fdae8d4d693182ab5ebf06d2a92c9e3cf599b463e91dfc0d447783be901dde06d5aa614faca2ada04732caeaa2cb7980efeae64975634d3f27a0ef9b9f7c568f5867152c06e7007a74ae8ddd43eb52e5fa50edf42dc90a61de417cc8e85d6d2da203e30c949938ebc52485de12c857ffc3341418beefb5fb72bbecef61b7c65457463ceb5c2bc02f3f5a0c01ea19b8caa75d1f63e8a31b0fe800f066b7d4c7f4916a2ef2e2b0f2b45ce79bd6d8cde679dfdd2ff7adaf04d67c98bd0caf884f41cf24bcdbcd86b0320c8f2d501eb44da1097b238bdb2ca1f38b7920588bddd1cc08eab57b3dd3bfac1163b8662ee471199e6631bdb2156186596c8ea6184d5d9945dbc28cdb892fbfafb27863f69a64f37fcad194701ce22bd47633bfe2dacf6effa8a64aef29977b538da2ef9e43bd58ce5f9e5fe43677b5ffffb6770bf15b92ab98cbd1ef6d0b3c7f34a5bcb66f65d82bd8dd5eeb14fa1fe4e68ccfb7bd87f235ebb437efb3b18532bf775ef65363f317fd9ac7be7ce4dc13b913d78c78bcfae61b72cfe252ba35f6df623c5db0ef8bdd85f297c1a6df958bc9089fd7fb1be337876a14a7dfad5deed933dc209e6060e59c95afdfcc6d9d4716d3a5deb5b73a1347bd6bdb7a04b6e27bafcf22628fd9b58cbb1af361cf53ee110d671bf1a9ddc3db42375d4d45745ce753f0e90de6f2189f4a96a1a2c32de87a58f3fbb8af31d7b8db5c22f3fe00f0bc9a7fe9856dce661b6d01d7d2e6cb4d8ea5e872939916fb7d731837ca62f87bda8917932df56a19e850808df438a5786ac479f886df6c084b0a7a7bc8e1b513c8f0eedec11eaffefd7a5b355ff419b317e70a6358a88be019a758edf7fbb0fa6eee59b41df41a17bdb3f66efd9b86be07fcb8de89ebba57e7b4029fd704f3142d8feb7dbbd15f08cbb85ee86ded7767e09eaf553dbdf90bcf1baeeb90e77d5df7feef2debb5685752ceeae09acdcfe9c95071e4feeb9c9fb8ca2efff61eab67d9b183386700f1cc02fc6d837dddda3dfd7afe2cfec640971a3cebcb3d2c8b07e776d98fd3fb5feee9f89633901d8c4962f303f351f47b8db569fd6fbfdbebe8a3c8a2df69260e65231ed6a43bf4c66fcac778ca7a1bacd5ddbdb27f0df56ad0330bbf8b5b7eb1b376fff2db606f0b734eb2551e1c202e42b52a836b945fbbca2ec77254b7850f39fd3d7915731db68d53ab3bfa2dff5dce89b7c7e9066218fff64dfb2ff6e2701d1797cfdad38dccb553bab02ff6dad7f5e9ce9ec5bdc7333eadf3f8f37efe7dfdb7c7b3617f2a876d0477b3f6f4c2fadf1cfafddac5d9e25d8bbdcfdd3b19de4ebed8cbcbae6ff8f52b4f6a6f1afa38b65bf23901dde91e4f524677c3dae5e3e0fed6e8b53d7fd8a887c94fbe65c2efbadf2bf0877732b76dac9d687b88714dc350775de7d1b4dcb7a9d121e3bd3e968f2df16faa5bf02627c661ec301af159e9c8d805c5916ca46b6727e8d7818eb19f7ea2ac30fc6ac85bfbfbd793418339b24d131306713ad0db0137d93e23e9c59b8c2da8eeee2dbef0d0beadd2fe811e9c80e1883e4d5c83d3016d56f8ce6688f9d88d95d9b851766cad4a7753a08c80be2d4d857965ff2a43ea85867ee7185feefeffbb317d1df1bb6b46cffa8e76efc7f67257805687f469f71decf6ae46ce3d94cd856b9d366f3eff3fdad58aed5c67f2beb6e7f2fe37f7f0fd3deee6ad373ee5f861d6fe19608164e2a1ff37630c0dc6d0ffa79dadde61f0ec8dbcdfb45543f3e8fedef470fcc0a62dfa3a7a3b19ae533b31b202ce10ee153dcf8cc338c67fb0cf0ee289dfebf6b2ab95e9f130eb8b78ad5ac3a36277957df17f2d8c7d59b00f999ecb7a95ccc6f7f514d65fc1baf7dad65ac76d05beef76b7ce90e6625f2fa4d6a116935725e22075c629f9115a4333eb2cb6cfaf06e7bc865aeb3e56acfdbb19e03bfea7e86178a65666c0daf57a0506afdd798dad2f956a2aba1a967f7d66dc14d98a3088096360d87f857ccdba49efd689733b25e261b8955ffc61de1363fdd7e75bc6f5bb3ca65bcbb89f1b4a3597f7ef28337de55ea885d1294696dfa0df4c05638b238236b9e15dc3fe310bbd29f7fa1cefc8f74efcc6ea54249bf9baf5b5dbb9aaffe9f72bc571305e36c813239960b1a203ea4132363c63530aa28dbe6fa1abb7e9e3403536c6ed631f31b45db14f29ae19fa9e8cdc34ebbf1a0587d54e3772df76b480b2b8215a227d73d9c079eb61992c3b0cf3b6f349c55877d1e84889b8c81df735f6db45a274a206743ed091d97fc37db79bbe1fe70bcfe7eb23c23bc0dc467ec6e98ea6595feee2e11c53b0df76ff5bbcad93ffe1f794b0468c8cf0c4ae8fafce32b7970bcd36f9dd1a330d46699d4fc176265fec27e864237dae209e45b5acd433a8f0077902ffc9bd09fb173f518edfc5df45d0166dbf7e6cf2077df788876dd7f43dc61c3c37beaeb37adfe1357eb9d6e931d9c4ad3c0d3104e95d3ecdff53ace4b36cbae773ef081a3f5fe5538b23b9cea3b0c80a07fb4a9c7ab863dc9bc2fd34ebdc7f4ee2e9b1260c0ddb2301e40dd6c3961ee350bbc6f689ca91be152ada5480d5a9effa01729e0ebee70eb39d9ff15ce4ad5bf943ccf6329bbcafb30bd080b12d12c0bebdc3cc801cd87ab3cee34539029cbd6e8da09fd9e458ef6cffd75be95d3ccc175ebd77b915f0ffed2a0f8e6f362606796bfc1bf13a4b5318df265aecf785c8bd8ebf1abbb6af93fe4fbf537fa1fe196bca9e4cbebb7753edb9d69f620d7ddcb15daf8779cbb18dca9ee5e09179c520f7ff9b6bf1674f2630b60ae8d19c2f598eb483feeb55175b7d0c9b3ea607ea50cde0f7ea9bf5d35fb05f26c37e0d2eed0fc6cc067ac48ab0f738169a135d5afbd0f030d4eb1cc4dc23fd8efb4890ace3bf815e7bd7c89efe20bba27d5bb4cc536e6093767f23efeac53c305f2b1eae9b375eb26e56ddf18cfedff1a2bdf56249d71e3fe89d67fa962effe9b36cf403f54ca0ffb7340035968c790875d3fb1e66e76ef2876ac84807033c26ea3536f913e79b03f3cd7c901b11ef6aca25c2fea7e25a782de924aee19187b28d6dec08ffee6a1d4b1a2f7713a75e2086035f4b177a677b13218ee15ddf318c9577752f5d2cc8d0f48a72ff793ce7c2f0bef4d68a72a0780d305fac77ef1fc4aa1cd473b10c4aefc7819c7a1cd6cfa73be84d34c8212ffafd42a88797a1a71eed580c60b05347c1a95fe36baf99bde9ef99dd53c0f3b2fc0cfa0276d86df4f7dd3d5dbcffd6ade95d0f1294cfdc0f8af3cd0775068c19928fe28f751e0ed662493817dfad098d277ff3a4ad9cf167ed6f36f54edb39a4a360286f009755ff29bec812315eedf4cb377b877ded7b352e031ed4209ecbd0d7a95f5235d1691b0bc4ded5ab44dbff87de3a891a430fa5588d55ac83feb8206d08cb79a4db2ff5c518afe863685c75d70bf004d89b8fe6ac822efdf1964f3f0ac4b3c55863970fd0fb8d70d9ac1ed4c781742966526c0a7e06e10ade8f290678246d0f3316701f067d4918fbf10ebfa42d73acb91fae31d77b1bfda1ef1f17b6773beb266887205e00e717f67413c089ebeb2a1d76470fb3ead1f09cbaad5ac49abec38e70bea35d33ef61def1a047c7977beef49cdd2a8b5bb617802e0c9d267d3dace3c7767e0dc4c56f285bad3feb00319db6a357c83dda5d369dee42bcb5d3d1c1472da13721c583779373b1988c4aa823eff74d043fd87185fdcc3e013fbef72eab7ff765ac66bd81dedba09ed2e7dfa4bff0bc1a9bd736239b3a8fa3551eecd7dc939af9fe9d3dbaca2207e272f77a829d770b798294a7677512ca75e47c2ec018b4327d37716b7fb2b3f109a37b61ee35fb98ccfa2f4befc2356f1f98d7cfba2fbc9b3157af05d0856e5243cb363e4f58135887cb7355d5aedd17deddbebfdbbcb69bf236a8e3a16dddf47008590fb1388a76ec6ef2a7dfff1ff5adc837f37a4b7acfda5d0e8845cff607f61cb0f9800b9827e659336d619e03bffb0ff4b5464ce1eef94647d84db624073fcb2638d6c3754bd79c53c536c7a2bd3b0f5d0d90ed8db7bbb8c8e387b64bcab977ede458640fc4cf4eed5b1a7eb7572ed19c19eb7463f9ece37e500d2eaf4b8fa6267fc8ce7ae5de94a5371e3e7b37f9636c288bddd0f59bc17a09abc3c69bd5b08721f447eefa42412f2363874ca90e03b1bb67835cf57070cfbeab0358f6f02e7b588f760ffafd16412e7e1ddbacf278c3f647b5237f887f6a29ffe3b3dab53f300f0b620abdde8660277c94a3e0f0b6033be048b1063ef3660d75b9ebf562cc3a1e0e589ffb481a5b654dbe4ac863ccc6db7e1fc680fa600c30407bb2dce8e05d6ee6f4bacedc4db56fefe31458af6de443eb20ff447fff6db9fd78af9c621a3b7afaeceba95493f9b31053a9d5315662aa92cbf3f37c3393cecf9b7cbfb895134ca5e31f1325e6890a61ccea7a79942a3aca263ca68e98a60effbb3ac68e9817b34b209508e2eb454825da67bf9ec6d978f62ca2a9d4d1fcd96fa7d2391f95799f139a7ba6990a8fca11e2ad599a7ff1ba12d3047f17fafd1249154f25bc5b689abb6f9e2ddd9f667e664c2a954825be57d3bfaff13bccd791ef30afe73831d723ffd977a75239e6dea9f9b65489699a5c72a9c426995d1e651637cff3622155ebc9f6efbb6f8579eda52771beee60be738def0a06f3f524de7b35ef8896b00eaa857d889d0ff39b2f950feba1718ecb7806df60e61c49252279bd3cd3bf8554f587bcdaf7c0b73e2fcc5c7e0ed690d6d8eccbab54e220dfe1df4c2630b793bc5e0eb21153ddf866bca8fc7070ffca91707fd92c616eabebbfde3f377b48df69be6145df29600db4b8d2fb5f2b67792c949816ea273edfe7b555b0273a0f66cffec4ecb32bdf615f5c9e7bfc7e11329bccde1a9e6b4573a56f265ad5fa6f7876d5447ff8bd61c3ef5d0dc72697b954d1593aea982931cd700fd6f27ad1760fdd62febc88a632837be685f889748367e424772ba287069e19fac11c69d59d03ad8e8239ad87c4f5a860bc761c58fb502d890e704ea95e1db5999baa604d684e660d0dad6b057b10bdd33a7dc877a083b47096c7c41153b3c6e6beb51fd079d78979bff236733a8f29ce23c2f9318d3afe7165ee5338df38d5bdf30be317ff30fed18c4f6e77e3337756e0397ca073189839123f417e01d7bb734aebf4f8ec9fccb7fdc26f8bd67c5fa6149d5da0cfd7ca87b57b91a998e37afce5c8ebe56668b37202b3ff865ee3d2211e93e01ae2190d3fe5ade5fb7ecbeb656cee7b5381436b1a570ae93ff62eb367d14ee52d9aaf603f44112796e74552b5bf64a3902e5408fb90b870afa8fde5805facf492681fcf4c42e7dfac27f0130df43d4f5a69ffd68e1049c75f80a6357edbb302dea23e893ed298e667ce9679cf9acee61ae98ccf2cfc6de6593bcbe35a0553a90ba4975ccc609fd5694ae717f955aa05edcf09798fefc9f7cba759b38cce64d80453942dc2877fbd8b2faf97d8ac653c33ff4649ed13fddce2f9f3633403be0874a30b7cef5ff8fb68e3138d8fe319bea774029fe62668df2e31f2b8d7c80f8f20bbf2689625866746bfe2fccb33c49b1f315fe2bd3fd6e6fbbd02e9368f66cfa29e26a398e999ced17124dfe11b80dea58ea7f06fe6ce6442bc18e5aa19f70c74ef36480b5e3b239ac667b9875f38463c3f39e1b186799b317a2a6fedecd9211af26aff79d1cea412bfe92c787267bec93ceb748867c0a70ada971f788ea2abdc6fe87da7dfdd18238f0eb3d297f46cd77f5e98734aef1dc5b3b2e1df26fef36262de7b33323f66beb010d3173ff880354ff54c6a3c97c9289e3f0bb3a6ea37cb86522d0dddce431578f10cbfb576e4d1d088742e0f836b7e3095e974667861ff9c86247fb204f7582666fd2b37d63fefdeabcd779ee0dcd37b23b5bcf03bc2461e2378eff936b806ef8d6791f3dfbcf7aff137effd8c679796646c2e55c8f2ea9564651b29a0f7e7502d1f48663fd77e883c3e173eca961a684edea219c8fbf4e748ba38279427f534ce633a972d9dcb7a85e7478c7a7b94838e339a22dd3b07df8efdba9f3036ce2e3ee91c7981b4a2cb66b81ea5425ef2ec589932b7cfdb2df9795b431f46dec5c83f450c3a8bd8f6f4b348aaf00273307a857a807b63d42345e507829eff8a74af5f14ce4dc8ebe537f18077942fed4c5f2fa94cfd07392ae6ea6a64b938c8fd41c01a788759e8034f16c956238dab93c3b23d22beac513773ac8ee287bd33eb4e632d3d387b6934073d382de655b3f458ee868e24b98ffc55a51bdca7eb84e46df84063731e9ba631ee4bdece903f463b38c3a99ec5a84bdf24c983d05fde62a0bfe888ba9f3f96db1879715ecf91f7f88edc1afe6cf48d0dfcf632affd52851ec883b419c5b3c9ccea8cc82f8e4c8f86fe6347c42c4f13985f0b672374d431767c2f72e21ff2fd84efc8c263a9826994d6be54f44d46a753be1339f26a6461ecf897c8898fb1e137caf08da51bc39908c7725f231fcfdc5945b23d552b9297480385fe49b21eed140dfb1bada4d9f32c7882b54da7fc4d8f28d3a31fbc8fb48e115ccfc4bb34fbac37745f3c231aa5fbc29bbd0fcfad4e66f6f740eafa2c9bcad82f2f09cad9b16c3e8876f16cbcd1fea7a3e923c99c518cb6c063da7f9672cfb2399a6765ddb31ebe7f16acbdd1057f76bf9b7f8147c4b3ba09223c0b35c9aaf042b4f658e29e0611cafda5b17bccbd85b3bcc457d68bab6361648fd16ffc08cfb5401d75e5c05897e46b4a327acfeb4dcf9f26a3299d2d65ce10c81a8572c8d01ef00f4357306f6f423cec887b4b7aa0421be759e33abd923c153a01deda12cf0e22a295382d584751c42f52e67b768c3799bddc8effdff0bfd33e6e446ad604deaf2ba6ad5c6ab132fba67c41fcb5fae4752a9c9f60bb6afc9edfc4bfe6a1d1f57adfd1a345f36f8073abc91e68cf31f19e4a55c82bc81e613b3b76e0ac88e8eeb929e80ab14ae8b9a55fa1fcc8dc47580767f227213da836f20f648b5ea07cd731e9024f349f10ff6e697efa89d6f299fe0e51ff6f49c79a04f0b73afd415df75b9b1474cf5a55f7f6677f5dcc1903199dcd6bd40ff37616f992f65493aef6d703e92c39f17e9ca7b7a1f9b448f39afd197a49df27d83e91467ff62be0e368dfeb85b937f6db257d6b78f7cda4830a3abb0dd9904bf3ac699c1b1bc7356b71a133fdcc349a226d460ad7e63581bd3a191d09d684f6ec9579408236d18e78f0b3d53917ae91a7abc891406b6f6ae9905c16a4434cd3dbc687f3e91d903fab13ca11a2a714e5cbbc405be1241b87ec26a4afd009d6448bd1b76ba72631e9ba48df684bce13f4916cf19de335f2eedae8bdf0edb0369a7d34ed8a9e1d932d30c7b5737be701deb924be71c373a61fc8e7f1fa646c7bb0f149df023b1df489a8d3ad42d6c7813ea52b9e707e2ed305ecb9d411bda77d41ba5120f713e287b1fa89f2de019f8430fa319d75b3cf01dadf82f6df3e1be8244e6bf6572cc046b27e18b0dde7e96c60d72e7b6b3b4db2257f1bf28c84ce7653b16e88b4a8c502eeef6c4fa6bdc7dae83766df3d97f4a6bf46cc634a05f43fafd8c7e2813ef198d199a4f79e505f403b68ed44537913f33792b9b513fc8849077e9e0733b099b7537c574afae84d930cf67fa3bd1dfd617e40e7fe5392dc4ad3fad1ea46b026cd03f90ce317e21dabd4c84f7c3ede1f5d4906c5343642791029d9fd0d763ec830f7a7a1a72dd2ab392bf102746b4d7ab3fbf13bbed2be887a1ae3d9b2fe97522d47c9ccd059b426fa7e0e7df437aefd00694d1d51774c05f2137733267de124b7f512f5cff1ac7f3fd0731ec3794b5296d751771fe84c28fb939e4c4870ede61af7ed807a8d3f920eca8ed45da1ad323367444f89d636a81708a2b98922dd906d08b4077503bc32db1f705c16dd683e31f9177ea37ea41f489f0a56c4cf0ad27fcba6b9b3e7c54dee05ee73267e25a457ad9d0f3a6720e3e621fa720c6fe99f11b2cdc18e42fd9a6c31d085ccb9601dda7c0bf09768cc6361edccd8bc9e91dd43fc71f240fa1dd28877411bde696e2cabd748f37ecc32cc3b0470c6b3f12c6a4846e5423c2f6af38d7bd9fe8de3d296dea1c7a4a7446f767c2488f61cf2cb885a29d4b9b27656378ac6d5e2f951cca4aa46cc03c98f9c6afcb688f4b37792432e9eb5f0f38e0786e893601d26e2ef4e4bd28b12f29ba6ce5fe497423a8a6f827c06470f9fadcf687718be0e34f3c4fc0bfd5ce4afca40df08ac5f7644fe848ced0d1f7ce986b6adef67e80fc7f3ee8867a649f39cb513ecc84f13923f15695ab7b1994f02be9d96fc26e6df80fc30e60c18592f14ebc6a447c4248323f6e129f2f321af0f6fa8d7b4e4bf3e3d30edfe8b4e35625fa1461e64fe36768ac3fec19074dfca09c89f295e716cf44bdeeac72fe70eff75e53e261a0e495ed4f0bdead6faa4a7de3d4fb8b26990cfa05ffb08711cc7eed53c6d1b4b7bb856d12fa3cb6a88c7e098ac09ed189c4bf44bb60aec3dd853582bfd4bee36bccf73e6c325ead5a26a24f936d1275ea9e0237937baa2beca7d1db09ff10d6da87931df3c916cfe4c28ee81ebeb8ae785007e593bf6590fac87be35b42fe934a0d80eeda178ae8d8e6cf869137ac863da3fd6478af3bd30cf251f3cd8f043dff97144fecb3dc55d3ee496fc84f89b3672827c74eb887c2ba4b7dfd8179691cf3581b981ad89cfe2ebb77ace7629fa163f3cb6cdc1f7e38de743dfba980f6d8bfa9ae0bef0790f2aa7211f0bc6e8528af5a8c7e99274193799a16f36417a94b58fbc40dfa60b1af3c4fa25eac1669d4fa407b546c6cd33a4c16de17cc07bd463bc20decb72fb352419113bc79e2d2fc45bd358fa34b2e0d9891e896f1df07ba24537a77841fce2e5dfe77498a778bed31794bbf378cf73aa7eb31c33679a6c69984be50fe7f2a2824fd091b2d32c235d1ee35bd6fe1335c7bdd057a3791cf1bd2bdb896b3f72c80ed095731cc40bd70dc736508eb35d9d92edbc22feb2e658ece8407ca139d3f9e7f904955f0d74872225bf9717b04d6b787b61f69aed647d2b30b6a19b51e793c51845a48298f6f20fda00d1ae723e8897a08e5eaac0215915d72a3cae81779c6629d1059db56d02f15cfd23d6bed1af4581fc718df79ab5f26d6c2e5122ae7c382786a65f889fb39c0f149ee39c7858a2e0dfd36a204fb2768eb2fe309757e62946ce3c5c12f453446fc89fe6e9ee3423dde5b7dc5d68cd2eb352d9b8e6a35493d5e00ca653e45fe017ed6239ca3c6f24f0dcb88a632bd704fdf75392e34f44b364134d6eb83e3447c3f748278f1d11d57ef400f767c5caeaf31c971ed560cbae55d00c6ccaac9e316d854d90a1ae1ecd239247a50a8eb0bed9655193bff74d05ea7bbe62fd6341e9807c1656ffcfdc19fb5352f6cb6427f0a9e335d239b37af6c2e39293bdf68cb4e6af7d8c3fc5eef48cfab7886a857e1745f1e28eb754e798d62b7967fb0cd6f59c904d4a365214fa1f1ce70f405f1ac5b43ed19e6cf18eef8d02f64198ef7e057b1de937a7e7fff81f9e7f8b1f8ba7ff371e66ae3be78e1e8ced57cf2b1ffd8deab6419bc3291cf261e64fa8534f939cfddcffed738d7d7846fdc29c913c12d97683fa56a6c9c76dcee68afd5dcc732e1863aaa76b5fff40b9ea5f25c52c63ef4431636df8dea354f599e29641c53ecd74437a734d3646f442e7f9a9041fbcefc482ec69cfa5d81cd89a8f777116e08fab7790b573bd203e92515c336b672b38ef5182baf161c63a99ca20de354f76b03f738c67f9bfe58ed733ea628266ff47609392ed08fe508f74cad74a9dd1e7f5b8092936c47ed614fd52e35945365b887203f806bc271b2fc84771413bc13f4be4af5d8ec4d5daed8fa08fec0fa4174f3e53d619df276210233276db90af8c38365329c85b10eba6b8127f7ca56f629ba84d397ebfffefbe49fd9f7e9303fccde8c63ed19ce47d7e263a49c8ce88f3cd827c2e2234b21af5298c4f917fa1500f6467040fe9ecced77a25dfc43ec279a5946b729dcce84cfea1b5092af27f847e90e3775e6cac18fdc618b35fd1b7171a6dc15a2d3f297e10b07ff0cd5f99f78bb74679f190760e6413f23a3bffed3affdfd20eae81d892add1aa7fa79b5794d79807c5b1c03743e786df7907b2d55b17fd2f51487af0afee3bd0c65f37cb2bd2a87fc51801d8ad01fabbc8076e6c6b92ab9af3cd70de7b1abb5e131f8db309c6f89c15c9404df2a465ff06dbfdbf381fe20dfd088f105b8775239f59e6cede28cfa352a14bb9630ff1bca0759d2cecb385984ad55c889791fe21f27543f9527efc49ef8b81c738102f8758574c392ab12f70ad73f4afa22f239addcf37f439161463fcd75bd93c198aa7ccd379b4201fc80d693752ec8f46ff5ef442f43255f914d626d68107fb9fc702e34ffed99e0955dfc8e71c45287305c9e7a9d11b909f1e662f4aa1dd0532cfbfb29db386fc0fdc77f49f5bbf35cbdc8f747667df897a1a8f30c62d557b43992c36b40f9ce784ba01c704b313ad977b24f96ced8fd20fac5cecde1f04fff07d660fc6ac1fdeeb1b7affcffa46453972951fb00c48d71437483b3dc589df6d0c67705fe90767be8fed94de7d5fed9451e4132f9ad518331125d118ae87d1e1c591f244125a37ca1bd1ab7527e70399b9be265ba5223f78d8047bf2df7ec85100fa49acfce3931319daf72b8ad5af92cb3ef6c574edc4c82b321f74fe64770842e7817ccd27d26f4fc41bc4456e35c65e8dfe6fe47fb6645f05f8e55e7ccac9839cacda7ccb3861fff1fef06cce7b7a13e0b7ab551410cfff940df00721d3c897791de0599dccd668db77f614c98a35fb11d3966c698819c39923b977905b3c2b49da3e926c70d8c7a1491f243f3ae59642fc07aea39fb6f5e48d649a663d8ae3270eed7ff4c8faf31be6574cb562df4b3d233ad52f6cf741fc0bfd41a0dbb1af80f3b4bcc3827c4e1c1f785e3b2bcab9251f31e557c6d9784e369e91714facb3938ebbc3b883ef92ed9626c96523d5f1339ec7a87b520ee3dab1b98e09e9972ef9127e904d68f83ce68ac2bde60cff3d886daf9de538bdf7f9189e901f900e321ff3d616a717e2c37392330a7d51fe99e4c455ee2e2f43f9a9bdd8c645ab7f7d5f3a3a709ee689ceaa6be72e50af2d6dfecb5f185b471b6c093e3ac80bda907eefbac48f575dcecf0a7857e52cd197a6a547b47363db37e59ce211d909a3a9cf723ff1c634dfc989fc1bcf65e380eda1b213e977a7237d5b4c7116d66d3e53d44bb6c857d48874faa972493ea02ef658725ecc0de3c2b13ba573ce3e4388f36cd93725d5f1582811842abe1fe7510e6fc0e356661f9afb71e220af10e7b7e38c9c896f916f7fa7f531349b62ccec11f52890394e3cbbcc0dfdc698933bad14ed53e6824f3b4e23f29fd5cce3243d5bd3bf7bcac7b3734821ff9972ff38d69c51fe29bf1fe23c97f9ddb30e1265857d965262f9e6c3b90d788e2bcaefc15c458865a23f48a11c9309e78684244b032fa59cc15a3de0be63eee873d5cfa1c773f98071eac8ebd9491b23572b8cad6ede382f9562ad2b8ad997ac2f90dead479b278c4d473be2e936ff6a857efc23bf037d1e144ff5e4206fd0d84e74bfcff76b90bbff70bffb93efbf25401fa723aed186635cd636a3f37fa198c88de38d05f0a7d3547a1bce138ae86ce729c649738effb0ee1faa9fa45f07a41335949b41beda744331b56a9cd8f86e44b13588695a1da3265d3949f5927313400627a725fb3f42b41ba729faec1dca590e2a5f520ee2e9f5f9519bf55f870e3d2f7321a6193b1f1843eb6c8013ea293aa13811c4ea13fca685cc295e990989f309629641e88f8c203f20cd56647bad7a34f025df0ff307bd0bf84ce2465cd0d6171b8532e05d71bd400bbc6f9ec1b74d282f7f33d5ecfbdb2d4917237beb5fe7579b7db5befc2c213963e608314ecbc7c7a4abb514679826861fa27c18939e0c3417e7c1bcc218d534cb2349f2e5447bf14cbae8597a17c967daf0caa461b9aa65975f89b1de2707e32acf4e70c6f51045edfe8df2fd3af16bf137eb638f8677ade87b6aac5f303c8c7d2d45657dd5943fd57d63f1fd19a83ea58bf2356c8277f2fd31bfcd8d0c5a99f34131aa6707e5489ab721f97b5f498fbf259cff05e7e8224acac9d0c6e6ead649605e5fc17157cacd103a72695dd342525e26d617d0f98d1b8a6564ea93d7a9707d9091fcbd71233e8896ec6f3217b3107518817688f0e4287845fda4f99d5e2fae6cc43cdb519d93f3c17e04f2899dc631c476ea0fca9b0e4a15fedb588889126f7f5dfb6863270bf2e16ab22b212704cf768d635e2bac9b7a926944fa53bb5709e72ba39e583ac115f326fcb3dc620ebe1aa18ea77c9f9e4d31c1ac069f2bc6c3ff32b698393b24a3841cee21d79dd437f96e6440f8298dac077d263aa62cb37640af41d5c417b24b2837aa767a7e77a01f6393802de85d6611c5e5eef358c0a681b872bbe49c09e90811632edb51eec947ae5cce8fd591f313f9c4eee2434cc239b834bfa06e1cb039b946a772b08e2b1d4d31efc7fddb23bf86aec99e4f296fb9021bfc34851813f24963b3713ef105f374a207d6334a876a04709cd9a7c7b52f7f133fd1a1f31365a4473975de187cdb782ea219c83ba32b38469e040d3deb93ed80b5ff81fa05e72bdc62cac3c2355a5d798dd89feb727ec69968f543ee3621e416388711e9762dd78e91cd2edefce56fdebbe1fa9dcea4efbcc23a76f2470d64ab7742fd697161de11bd91ef5483afd9acfbc1491388293dd5644b26791121ed617c65ed07639a634172f699fc57cf944b8df152ef12f5748b0de4903e6af2a7d70fc9fb60cf04e623d95c8f6382fafa35ce8acf7446f9e0bb0bfa4fb2c32cebc9a318f25e707d2ba539b683b90e99fe23bbf38ef67bf29dfe105d390f84cee114dfa1e99ba846443523a2cd20a2739140eed0642a9dcb02f6ded9b0efa30d8996acdea0da1bda55a1b51550269f6620fb3a990cba569c4f7dfa1ea60daa79b2798773f63761bc9c6af61ccae5f16ae4d11afc21f324a59aa00cfc77815435d7a3a5eb06f2e539d72de038657a8be23b5ec7f1525f669bfbdfa06e23c17a919c7d3da09fdea2febbd12fb8fdf26cc3477396e5f4edb487e2227713b42521c7a5edf907ffbab15c89840fb239ce0bb4917ddfbdffcdc8698a517812737c04c77c43e239a55a9e25fbcded3c1b4725973df8c8c8d79d66179ee70f1cdfe9416b3f1cf8beff41ffdac2f9cf63dfe89fb1122ef1a7fccdffa038ec6446f163e6ef868f9973b79024fb23d28d52f2efb03c5937cbff82667f3a760cfacca6b1b7f9ae76686bf87932a2ba02d5fc4e67945f8676f2916b420a5cdf1deddd58eec64957a3773e638dde12f2d3d76a09f41939d127fab8fd339c0f474c6b155cd50c78c831265aad481759118d725e6c02395c35eec9b03622421ecb7ead967c36e42fd57c8e9a31f9b95edf1ae2a72a3c664ac494f3f422f388e469fb9bf2135ba0037d38a29fc5f2a003e5186fe3a15f8aebab5febe6e730ff3caf413e641a6dbaca09488fe31cef89477e992bea8951f0463505200f32fd21df07b9da07b96dd1761a05b3757384b3c93453380f9c1f8aeb956b5bf35252ee5b657f23de718be6d6c787b2268b31bf7f4f3ccdc809ce2174f95add0447aeffb376fd2898958e34f4bc7ff10388f73fdfea59e27fa05fdaa15c269ff23429cea7770aeb809d80beb73ea32d124fa95eebb76cb99ed8817856d9a02f3474a257aabd6d06bcd2255d7164781ae4205d5532d8271192df22f55af009c40a6a887da971ad546e6c17c8a13ea0cf33ca28972d333451a9087da7d96446b9636b8df6cb677fbee6dc466a79512c63e7852f955661ebb35f806a7fc52b9ed1e8e90d735ba7a51f1c3807cdf00f73aed4b6edf4d5eb65c4670f748b86ea877331cbe8be9874eec8091ee8fc9ee49e742eed7fcaebe5627e0f9de08879f2d134c41c8ae98a63ad9a732ca35fb2e17aed23d46763de5efd436ea3e4db7929f1275e1ce631e68be799d9e35cf8b69e8ded27cbc78ded327925d9403805cd19f7209ebe91fd9b7a8a790aeb05473e4715e570a629e6b0c67a8532336f135e9fdae735e31aa1c36220e34694179deb5949fe1e5ba3924d66f7b2cad888eb81ac129eb531e937cad513e08bdde133baf7914cede6360fd5f2cbf3cd33286fb485ba388c370aeb87057ea5ae681fab1be77d871c1775821f1c1f0f49cee8947992f39be28f79e9e39a313fd3f3faf94b6d2dd6475c40dfc31a08dcaf4c3a586f2446ccfb33ac97a37a58b12ad9f7cafc4387d6b78d795690fb49fa8b43342739ce49f532272fa6ba9735ed8df20ea01febbc80d89ef6c598ce5e14aa9f54e74fbcad599ee97c456f82f232e9b7d5bea6ba0be71653be2eeddd2ea43360e449a502ca45d09077cf7ea6aa45fea2d28074e5f09658cc055af7d101784fe25de6b50bef3dc5adb1637c3754544f97b9b3379f6ad1a8562bce2e9cab7ec31c17f11aba68b724b738013b2d0b6fa817c77fe48deac1b22fb56862dd589f86786b24f0ea35e54ea5db82e2b1e2cc755791e01ca74d447ef51be9e18f658bb99f594af729358a13f4e9b11f5f19bacc8d2e3e1194e7a7d74d453ac912e9366b67a1b3a4f8a9d8cb7dc031785781bd2c5aa2f39be29c6bac6bbdc97d84b667769985ea836bb6b156ced11f5cd756b8941b7dd309c7f0288f76c5f1f4c209ae366701ed609b03f844f978b5d1c9c8078c79b26c9f185e45fb7cab39f6765057d4390b2738e3f868f7e61fd91f9372ad9f747c2f6cc0ff2064f670954d74e4b9973a446c8c3c065f48323acc8acebf6ae7fca6975647a6fc8633e5a41e51378aa7a18dc9450f29fa7e3fa43749d95f5209c264c15a4fb60b834a0f704dcc7b1d9a1fe6c55f27334d71448d7225a975c8766d0a71708579e51af33b05d5a63d535ef19ce3446b2187eb332a6655d3d019aa599f7a48e0b9add3d31f8097455ce7703d51bc93754575b7775c2b269e019b01f5588b0bf0e29f2976dd32ffa11ce7c998ecc4e2eb5eb69c07ecc519e5f099756dce94271df079c5b5803d35b2afe57a1c3e9f79dd9ca95ea381b9551027eccd430bf2af46eff69b6f854fb2db0f9bbf48ae6f52d0dfbd604cf9277bb93fa03f5139507f52fa816bf713cecec348bd0ff7d3d829bc7f500fb39d329d4d812ef37896265fcef027f9e8418f074c13b2ed12ca758d7c89be2c47b99cfffae4a27f74954c12fbcd42185e38ffeebcaedd906dff3ebe88cb581d3616bad5fcdd5705f2465fe58df3557bfb948b94319a709fa6e4c3d31790f35a9c815ef534403e124d2bae47c1b3133e537ea8d22bd07dd5debe1bf4da742b02e26b777419ed4a7506fb4a832fd3e8349b0bd1dc41be4fe839ee186389fa28bd49f0f51b6adc77c42fb139b2a9b751e4eb72d0b7ac3fe48eea7e06b4caf81b98c7bf66eca9d194eb070fecc322d960cf4e6263a027c8bbf96ecfde74c8757e39f021ae8976292e97c7f3de3c63a994fbed3c73c6119948f6fb21fe04cf37b6f3d533a8455515dad37f62a89589a6a5531fe5750267b1720251637df4d5e86d15d57086fe927432771635f0fb057c5ba23674ca329aeb51b691229c99067430e4338efaea17684243ebf350450ed3ff5af57d59d12fb93bbcd237ecd1a636b6abb10da7b3b5f8fbbfc02a39fe96433d7dfea2969f5cabb15692df07fcdee8c9898298e703efe9da917dffef2fb9bb300e8ad12369bf21d7fda8e83b4a25c1de5bd33b6b3ff8c3df68ecc792f062accd8b3e9279a4a23f31d5eead8d2eac028a256b88f3ad5bfee693e2738ab9ce2dfa4f470161d0f469117492df98eb07f1e608be6314bfd0779c34aeed967dca656bf158d497b5dd4fe91c9d3e49ef297a381b5867b2ad296744ef8937c611e70a5f2f9f12750acb0b43ff016256abecc036db08cf7878915b5b2b6ccf5d4df51c2adf602c5cfb76ad28ff7b1e3ad185df1d3a126409da95f0ac8ba6f8d29ae29dab3c88bf9c6f813125ca07b2cf795172cc732779398ffdb3b519014789ff4e8b65cf865892ad49d868d1871c515c574701f87cdc98f3b851268d8ad99bbf2239378d4906fe22bd31aec9175535c1878dd36b6963552fe46f51e966897b191de5a8e03d1ce91962a53c537c4d25a7a5f9ee17ffe313e698ea27998d495684a314f75c178e62ac8663a6fc8762abd12e4b4ee42b50378e29b38e92cd1023abe6fc9d2e968f7245454fec4bccd8f7d21b5b3990f3312f7d697d8eff3bd831078b1df31dde8b7d6f135e92ff158c99c94ce69bbd6cc60785f1829bdc1f14e6198b99cd79bbd5d13fe11b954df4bf8f6f9412edf5f6d9f03fa625a0cf51300f15f1875be03fcf0b4353a1391bddb57886d8305c6f4cb97790fb0c7e695bbfa494787d51ca49587e380e614c4c969cb7a621b7bae317a596203bd2b9a6ba91e371adc08e9cab6ba7db26987f076779ddb0ed387d015d74b4213fe1665691ce98e542c37cf3d6fe166ae685addf8be147182ff90b7f1bd5caac8df23622a2387a01b8122ed46813efddbe35e0cf9debc6e7b552c01bb2ba613ccab513bae85351e3ffe6fc502e8b3d3f8ca9f4ddf9e1bc9798b02fb42769adc7c37dca0843f0cabe1c3817fcbc2fe7e2ad772efe012f09f36d184746855606f6e3042b25c48b8a38eef61d76d4f679a1a76f3b7991a356820d96b7b34883af7b1539c160ad0d5f2c7c5eeb423d3f02ff0b9fddbfd1af0cfef7816d41b6c6f141cfc057bee175a8c4df86f7a7e4f309de14c9206f2c07cf004c9b1a73dfb8967d4b740fbff5f11cfe72ad3c7e673c39f4596473ae67eece624db48875ccb69e3378a31a9d342f9ebf9dff4df39c1cf2f1ff96bb83fffd9cda7d8c38040d633da21dad57ec47eff892be75760ee8f417f2f79fc9f60858c7af708fb846f8ddec19e49e3a7ff5740da8713f40fe23c4b4a2b39e7d39cfa7c417f3b55f58bdbb74c996e2fcec5181f136a7b5f7f3fbd35b1bddf9d59e43e1a3fd3f8a638ad92256add3b2edf9a967946bee80bc0d426779a3fa67cdf88189128f6fcdd249bff03297bfed37e4266ae1b0dfaff2d9c62f86f6b6b7994598ff39cfb28db6b87ac9d773283166fd103f6aaa63adac6df52224c8e9156397901f4a2396e55cef378fec9b86982ac8d7e020994eb6119e11ef30ebeced4d686d0ff43150fe4f43f57a9ba074c05698cbeca0bfb1df0d3d6525d6a48a6caebfe817952b3957086416fa17aa11af5b48f5a0f8accdb4c658d134f1cc5a0b8b9b5a36cb31ed5351b97f637e8f0e384f764acf99a6b9e6fa88d90bf175a8c9b53203e4d685752c433399128f75837a6d886b37ad9be8aac84ff2e410c6a3fb31b2b9793c4ffbccfa0fcbb5baa93a3d4fb4d3d82319e5b47f1883e4bfbedfe812f9943070fe223b3a5ad6ec5f269be7a9e7db42dee03a689316d310b1692837cda55cc0bfbe5de76cab31c6a47f32de6047ff6960ed15ac8d0ffe68b2536a579a759ca75baa33c8d408edaa68273b5b26075c54cc3b7cac9ae595d6b37bc7ffe4bb30728f72052aaa4f55f901fd2c6ef049b83b98d7e61ed0b6d6cd8de2621f1d7f460c3185f63bd7fefee07a4d8e59a7698db1b551c0f9f29c13b1a97dd63f01e7a9aba9622c4e2d1e903745ebda3f0efc2b2ffe5f03ff62c479d4c909ed5017f4a4b4cb0b8eb29073abd30d626a65f107c981cd1af370c5ba0996ac9b311e03fa23d0c68a47d3594d18283dfe6fec28d7c6c6cdf39a98b1757a7b33f4c944ffe693d9b78b7b5e30c44c0c3fbfc74c3cd93ab9343b30a6c839c55cf0bcf6cf6863024da94bbca09cc3de7b86be99706c719cffcd37f3cd7c2bf6c1b87f330fcbc136205f4fddcd1bf4c6584be447f926aa21c6e39fd3146c2392d563acdb4da7332b23f7584bbb56cb51bc70a936d737df9826b99517636db154f434c98a1f7cee7abec347c011de5d52b68dd56c901b138498d340f8a57f0dfc1289d1912d4f3849b6c7632582d5eec2ba51c63e35737ded079af747cfbaf9a5deeac2f23a148a70756baa89a967a156ac37eb61ae6cfb20b7113fd3d12c23d1ff12856ae9f27747fe5f165304e63f3acc22d6e3bd361efa3b5a4fee0e31e3d3a414d720bf4e50fbcb11d917cf51ab78afcd7cce725b6bab8b2567c7dcf782ba5d5036e198e7f3e42ab2d3029c8fe1f9ae62df5646b614d5f29c8ed2db64d6aff78ecf8d909f3d977ef44bb3dfca5dd1fa61ae5972d3b352ac58d77a7d7e043a226c83e358eea7af76ffdf0731f7a0f4c307ca33417dd23bf430b74f80b19f728d8979a7de20ff74c414e498264c71d41fe752112608d9141acf035c4f1c21128ccd0b8b19c6b82628b31d49b296f0b9e76b3f386bca5d0199e891af296b73f2a540de50e201df79626ccfd469ac1d42be5cca0d9d3ce3390b2f92626215c7c27ccecf376350ffe2587342f85fa5bf446c1bc6eac6efd8226e4b788ba99e839f5935c114f26e553b7cb66b6bad03c46912844f15fd601cd0d439a27e373a60eeea28861c95afbf615e24638cc4dd9c0d4d3f16e4af1aae09e6bc906dc7dfb7ef6a68813fecca26fa447c0f9163de5281b6bb131f35e3c92cea27c82b013ed5f0fe64665c0675acfeb58bf986a39873e0c8879ea59b84f9c00be13f5bfb356719db1e508e4757b96d932f76e4be4dc95f705388213eaf7dc2e9fbe7718617062f8a71a610f74266ea46fb5ebc083c276b3fe438bcf54b456dd861243a628e7a973feecdaf19fa15f455eea95e228f666b01fad9f30bfb70bc3aedff66f693f2e91dc6eed5de6686b6ae5e31863d5eeb9ff9e82c6fc2a77c968b7eb7f8f50face396a8dbc6cf0ef73ec07ca6f4f120ec7d20f3208f0bf332d12f3fc73c3b9ffde80f721f2c7af7c4e8cb8fa6f256cf2ac41d7fc43caf785867a3fe72e96c1795269ee6c54e3ac43a25dbb5f128b7e33974ffb658a7e4779ef76abb838af49b5576e2bd1e919ee8c83df94c34e4e80fe2075857eb8fe5cee6fff6f7ef156cf92de5dce97a87b9b27a55900fa778efecc81862af414b6343cc41d3ab04ecb92ece1f8fe2594d36bef62631e0c4e7c5ec05eb9da7592e328bc90df3ab5cce897921cc8002eb1045c5387f9cb391896b7abdab71b811be24c878f3ef8a7cb9aef545d568074f7536e6da0dc2a38a3e24f5a4d0ee07c5410297f563aaa5137513597c6aae0b59e58c3d56bb8cf15f39c111cf59748e7da6ef15c693dc43dbad735f6e872349f517da5d02cdc4ee0762dcd2f7bf74184377e74f6cbb9a1ca16dcf1ac7f0cdf84276f14dee3629ead263d04f6ac7e65152ed903811df2c42ac11172f284f7d99b96987510af16fab53bdd998ff21629df64d45463f980f6b9549df851caa7a9cf2bef81f98b3e670cee3896ab2fe025bc3e66e72cd4942d8d0c39e361b8b7149bc3fe6de15e493e49ca267f76fd69903e2038539c34f2ec685d38cfd6347b4bdbde24467342a399e75e5ba4638f7bfb8e6bd26fa4eb92f01d6cbc79ccb5f8b15c4639e9de8467885cf98e31a85c9ccfe0df58711d985ec0337fa5a8cf81caf3d9cdc8dc5cdedbe5b601ccd9d66fb621103ce9ed8a49cb7b9bb3c719e78c23963d88788728edb98641afae8d36256361f5ff6f8c58fa732abc51be581f57f0ba95fc077fb1f3613f3cc5773df4a710e2ee6b5f09993c9d006d2b729d135f97b937e3cdb39964e6ce48b4f988011610fd9589b79cfdbe2023277a51937d4a1ba6eeebfc0759e848b7333b21ef3ef68af3876b2252cfa3fc49bd5ba457db1545ddd73867627e7e011f662317b11a89fad01e3aaeee5fd0abf143fffc73e1885fb13f576caefa8fce023639fa3fef2db2ffb9bfbd3c64590278617b9bbac5837a73acf82f5e575c336466de3f55423f4a1fe4fe3e4ff1731e9ffd77872a97ff67261a3a3dc8df95b3fb35997572e47d359c5eb3e12abaff1e380efbb65187b447c4def32abed7e4d04e515319e13d07be4ffa498a458cabce57e429ebe7e8d4962ee47f0c0f1f41ae72fb420dfcfa8c839b6a65156e614df9ad5ad9dc70af470677ce67d2f0dbd74f50267f93e59915e637810ca7615fcb03a940f39d7f3d28ff61a784d9d902e90d62de3a9d72bce8f1af847469bbb353e7dc8e67c377f7dc838860bbd3c6af637fdb073d63fd91e994b5523fe9a2aa615c6f9fb7190e15e7ac6b6a73ce9d1e1a52f47d066417b319b0d759a9af22892dceef53e837e2591bf1ed0463d93da62cb5e29cf7db9f67fb21f73d5c5123197211e1de635e20b3daabdf84203a1909893cab14ed2bbc9b76df4268ef39f32c88b11cae8a1891257f03da4c512787e365e2673bb2e5f6895b19b88e7a7a9c51b69c98e765dc2180922f4b1cd230571328c47b877e7691faffe693dcb26b8f6f7d2d071fa489818d65faa77b5f3c05813542f05e794e5ef399b91bfc00f3c9655d4a7218a543842ec39fd64f31e3b1afbcdf7beb02f0ed6d19c9782e5dc8df324de5aaca9cabaf8659f9fced3c5c1f2c90c734f362f8465957a63c83f88e7f50cf705f5d744fffc52974e71ab5f28eba38cebe0b91ef3f931026cdcd8f5397664d6e44722e859599df2b3a246216649ceb2e2787cf10113651ebaf772e42f9091f1e8e0af35619d249357c682a5f7a721d661e4a1b31c27148378d32bdbff672de4402759238e98d173fa187322a21c8e74143d633ee078c1f81cbd3d3267177d69c0c7a6b348f3bcdd15c81c67fce78e8e98fede4be679a308c6c66afc80beb868fae49c29a65d532df58a309adbf537b472f99e1f3563aa4f099e1d8e53c42bd28305adf938035a867812e4b73e116e74ccf9ff1af21bcdbc9e08af5f640bca63eff1813b9ff185eba791cf427cf29b3c017d95b74d76ff2c233bfa3c85f4159491f9748676abffc07500706e1dff1c611f935c2a8d7e775b4f5dbfb25e0338b1dbcd2be7310c301fbc4d7187cb16872de5a8f9e1986ce0e7171ff317d2cc8edf533d28d72204f1b0eead45bbd4bfc82dcfe5d4c71eee6aef6f621692cc5c3be0ef14d83f0cfaa571af86699233d616e02761aed96e43780a8c1b7072bb9e98103ffc935addbf9ec6eee1945effc18ec1be99f3b2091d8535fe31dbf2d617bc3f504d7cfd23659d16fc66fa1a3f72ff8eda211cd682e2abe6bb6ea4ebea27976a1a200797f483d92590f9c783dc1d04d5f746cfc413d2ac2e305735465cec6412d0fe3f24db9ae3d09c0bc5fdf234d8f3c3b3fe0c3107b2dbd7d81f42c4f328bff39b50bcf974d5b66e66053ebb388de66f18d7258ca416fb77d97e72a7a9742ebf882fdbfb5067d6d334c37d4a2d9d5a7cc423df53b92bd4236f91c5a7471ed266e453dcacc9e74579d780915a60ee8ba189d9da45bf55bc8fa927acff993256ee63bb942a3ac40b5aff0c719123c5583842f430111fa96f81cf3582d2626c23cf5c29d5c3d28dce7244b5688caf72635c9596f3fc4e723f4dbb1e1830f681fb32bda89f14238f6fca8e8fd127a7ea8b028c223596fb6941fbe6eaf7413c4254ac8b24278a79fa37ac65f3cf845d543cb9885d523724236e85ad9daa106f1d6c2cc20bb579d08a31438817710f4a9dc74f3d8ca1693a22bc0855615cecca753b0dc5f8da27b3062f7e70e63ad627d205931c717d63e78c75d54617473e3e66bbea79be994b15bd1859a233ea550ab53d40830f444f78eeb5640cffb5b5e1dc9fc73e463ae3a8bdf8d42781f120339ff1f406b5cba8ebbaeb01be24e2494750f3dad36513dfe73a49f6dd9cd9475131ee883786be0c7214cc15e6fe71ac580cfab4fa92310a1fa19e977de51857853e588a6b369a25c4be9fb94e137d94cbbaf918f4858d93415f11df621d2a31d7fbe809651ac4fe84e67a12c21d5b711c5cb97bea29b30da9462519158f863724a303f3e3dfb42f17b93b505f4cf748b2f3beff92c3bd86d6fa83b1637ea1dc61f9cdd8aecaf65be9f542405c817dfcc4d8c7f21dfb6e959cb3ca7b8c39431ff2163d0ed77a3558a727a7625fef46aa3a645cbabbdca415633752ac310a39669f3376d65f2c5ba3959135399e43e28992f410a0d9c259baec2be31a3cabaf65138d189c11c6c37a3d234af1d1f5db316727abe79427ac22ccd199872af8cd71b79272f612c0aa403f0cc731d78e83317caa95ac9ae098be7738b40ae82e24fcb7f8827b115ee4764afc471c393f05f907f6e232f30c95f3cd3cdbbb792ebdcefea9c3ce2f0afd4a2907fcf49af0987d10e13a3bee174c3c88bbfd1c4b8ab9af6e53c61066acbff3bfac09635bda3d486e9120fbf2c9cc3fbdb582e4e127cbb435d53aa4d42357278cbfe7339611e9468073f72cd5e4c1e2fb51be2761f2be24840ba11763eab568f18f5e913edc24a4bc88349d024f4eba9e8d57c57ada3e4e6cae38d12b6109ce23271c137fda327f5299c595e45e619b8a72bd5623caaf52b5cda1a51cc83474c82f3ad211e15feec9bf1a95be83b8f2c8c314c9d893c50df40ee0eb4c6e48d7b16a3f511728a6b568685e2e3f97d7f00fed795a114f4c4641c1340db288eb7f6e1a6ccb78a7f7ac77968e837ae188e9e274c1e7b57fb83791be725e24e636a1efb1b6b9c4a10aacff6fed52ffe4bc466c09c49541ffb272d0b61b15f4aee34382f120413ddae69c5314726e24e553854df023651d1c689870e7c947c635c8643b73dd7afaa2578ccb96631cb32828963a1d3cc3dbcc62a25fac1b08c4e0777743f94f60eb14c63e66bc6a350ab8cfc608657be5ca7dcceb69ce640cfe293a17c98d714080af235e18e219cf538a4b513ffa47943fb62e31353cc9ac79bca3ba40ec15b995a9f02bdfdac5af8503fd7dfec4e26fa0c7173ff820fdea9b1e14ed986a62b94f24e318b2de3397e42f583b81a3feb19705e803af543367f40259a25e18b02c7ef3d1df87fda7a2267eefcbfe7fe8e9c535f8d96956b51f6c27301631e3bee6dcc34a798ce5c57d324411713ebd91d188172ed88f52606ea558fb01c7339fd7e8870f52ec03b42c45f32f3a84fc7d87094e7d9da255e15acc866b8667242aa8de66e5623fb2b0ab71873c854a15ef44c717d2f9291f581f492e3c7778ca808b687bd4268cc5b73fe019f136f33ef6b254a74fccab8a5e2a9fe8d19b60fe997339f359ad1460c9cd4927d121f7bbe39aeea6a2d807f53e5215e593e0bd0af2d831761735714332c2d3164f82316727b7f40ecbb9e21a41c2965d21dec4b442fb5fa05e4dba0c612b41df497c079ddbe8c03db7228a9fa6a388f23f2cbeadcd1b2699e0726f4bed5bfc934feaa116bfe8fe7380078fd2fe6f5047a27e935e78b1cf7a0cb27bd945798df3b7263c536cac259b087c2a0ab09a2653e5b7478ec5559a7a00f1f3d4e9a2393fbf6d184306f4cc7854cc2a4198b3239175bc0c71ac389706b1824307ffae1bd4996265eff54e689ba8f36d957436867401b7654ef9eac113f62584bcd7fbf9560d61c83824b3b2e881fb11521f09cae3109e241c8ed54d87e06373ffe65a08785e02be558e85710f8a16b13fbc15636d586cd28af651996b0beaa7423eb0b009b84e067261df14d6f7c44c0bfb03d54e408e35d3e0987e1fcb2d639d0076ba4bb524078b77bdd5e423f18d0cc43a0e1550aeadefc93df718116ef27ebe922f99fad21433ae435079fd847d1b9b11cae2cd897a487fca3df7dcf27fa757c839f951394152ee969c6b9c917e7990fb007bdbdfead9baf939acd1710f03ff076054986b168326065cfab55b0d72c532ec353f0f2907b3f223ccf1d76d8439145143b19b22bde279289ce017ca72c028477aca2c9e7f667851398a66f2d6127ec878561286cb8b0f7ac223f7a049d29872e78f47eaaf087ebd88fa78707c00d6c839b33d6374013feab0d405d4b1402f02aefbe76b2d63ffce215fe2bbf1b687456fbc43e307bfe178c095c92eefeca3ac1de8813daf28c6bf564bc06b8ff38d78139c3b514bce8f8b30b76c1e39c179f5de61bd803d9252ee96fe9b6d881bf940a4c478c451be4fb08e35ad67953a635d414a3c423767cdb4087d00c434d6c51571e10cbdd1373afe8d784f11b62beccb9f001e4f2c955ed73eaef5b313b884cb388d4817cbd238c33a37ff37e343854ee8f2f322d1ab3fa57c1bb867d1ce61fefb82eca9c3ac7678fe35cfdfd3ef9c436de7ff40f3bf61dfd3d3545e096b3f8d665c7bffe2fffc12b38828de0cfab78d9798f344bdaea07f587440b91b915f4c5cb057a27fee6af622a279388782f906e964c59be0fc708d18661663ada5ba14dbdfc2af1beaffabf58af39835f72407f97c98465497502ad263a1f74878ecf5fac21a5cdf62573d33a641626bc8009b655efb926389d3927ce3958a7ed81e19adcd6da7f86143f54ad1314e514fed6116d9be19682f7679dcbd1e4094ab843c61dd04d433523430c7ac9de941cf15fdc13eb5ae07c87f33bff0423e8d0de7d7509fd68bdc5d662fbaeae1a5516f4edb9f45bc46c49354e616bcc68c29d6effbcd1845554b18b637aa5f537ff1fee7acd7ac5b8a9b79274df6c62fca2789d6faff67ef5dbb5355b6b5d1bf0418c73bf37123a02152864b15c83715db3082c62426517ffd69547f7a812663cdb9f6dafb3dedb4763ead3547bc2054f5ea97e772e39dea1c1434fea1bf817e4d7e409fd53ee6ecbf9aeb9e9c57ee901be781c5da428f5644675fd18c22d499797a5f42a3589fa573f9c267abee01caa01eb00f0df36432ae8b3b9e63d1fe4d6b747ac9c4e042b5dea87b801eb3bb208eefa4920f035e972bf425d34b32313c0a8d174ef0bdca9de50fec0b32829fe791b5cfccfb9df67a1b37d15ec5ba6f015f0a930bc2636b23d1c37488dff4cd93757ce3c9fa0aad9aecd18efb6bc7cd9c53c61a8078be93f6d9631e483dacc20d7a5838a3d19db2373b667beb40fb584fda9c98f4c80efa77a48af1abc78c6ba3aa81c6d42559400f867dad8dc65b799bcbead7366e92def7bc29b92f3eeff7c5cf6b5f95f0a34923ea257eae7de50a1feb9a6a3cb9644e4d96c04bfcdd56d453d891c6786d61ff4edb9c9f7a1409fb6ab7b9b9bad2e73d43bbe052b26e4ffb9a6d5c1cee123d3754eebad8042b193e5e7d46b1b94bf293e657a3ef3921fe0ef4d79da1bae2e916c1829eb50feed983cd3356d1f8f09421dfe37caba0f5d59c0d8e48e9de47a0f4df2a77596c82c8170bc40d5b3ef34cea5eafbd9263a27314e8e39fe7c8573093235e467a0c0d1fffb279467df30e4cd393d8f957bdfd34ab36ed7e48f2e092525df95ca19e4d59b3556b3b10a7907d4db3a2f2382e192e3b7b4ee93df1fe19efaedf9f49c6ae902f19f4f4d247e3895406d8ef36747b8b8a6a152f1fb11748359a5a77ba16367e068e0d1c60f0415cbb06fe029b216ae5735cffbeeea5daf3cfa43fff94f337e447dbe5589f0b5fe9e0305ac0b366653d0ce6d0dc301ea09724c39e7997d88bf3f454c4e9f1b9f2797614cef9ba17949f79ab1bbf05f2820d749dd4cb27792ef09ade68a413c7f668f258ee87cea00d25f34dcaf9627befd823fbe673f7e04a260bcc98313b669cb13ee3d5e0c07bfd82185e623fbb320b2373dd923c6f895b11ba74d6683d349a895d14f4637df600c7ac04fd5fa7d3d2a4e7a07d6d754c5d041a03f09604fcbc9b39d69ecdda98d77d8bfb0f3a2fdafc95cefad20696aaef79011e08f97586e8f1d9dc634f63d68e86fe83a4b51fae7dd9e17849ff97ce54ad1bdaf38a2f0e12b91bb4e4c5474f5720ec7b9d2f2c68a9a918f36ad2b525cdc1fb09f820bef108d57b02fdcf009c1af21171b38bd2deefa9e6e2dd6b6c3e78b8dbc8a1fd2fbdcd06312946cc71a866371ef8c98cb4ec83a5e627f67e17fba567d0c67586a36ed6d7e85e7afc6c300f7bf20282fe64c6988d205b526ddd7986d9f81d17fe5cc67ad577f0ef16d0a47a0287dd9bef36ac21c833b6501aee20cf8de0bba4fb5b95febc9871fe3bf423a14b6634380bf8272ac1738d42d41adff6d4eea75c06b33283ff87da0c69bd35aee03e99fa2fc6bc6d28be9cdea88f6ecfe95c6b581f5d3f93943cb1fff44c229ebdd2bd69b446a3a857579e889c0fcdf07c328a5d9ed6b7d0bd9d0ae74174d15ccc629347169f15e5c49c51a8e34be0b8abfac1ec99c4223e06665d0f3d8c4c421ac21bd30b8fc88fba9ca296488d57973d5afbf57bcf03c56065563673c29305ae879e9d5d7ee6ec430aec439bd7501c361af6af89c11a002f6805d0fd6e308bb2ad797af5bb26e5167c7ed9fc92d09b5f580f97b4ff3a7defcdeb26d4afa8d8f32a9ca2775b5a0fa7947950ecf55d0463e33779ee3e53ca20609c5ec9382ffadeebf7e78cf3d6fb2400ae38acb0df1756f84bbf4755c6fb67096d251dd355f9c4316d89d981f4cd39be417ce73d46b5dd60335a32e63d3ff2594fb88d73af66c6de49f5fa488ec08785d0b4753387f5b64beab9dabf998f1f0aec7b7961ef05f249abea708bfb5cd3f7de838329e62b9a997dc5d60be107d4cb954ef5ca361c0ee045e77cde841dcfa1fe222e7290d1b588ba420c4d0be618be5b39f3108029a47c45bd02831646b6ce390faa3e7c26844d0a7fda83a989d56abe7022e8511b2ca7ba3e2334f739d13caa1d3c472f62a375ed54fc85be6a17fff695c2d967cd0977fa08fdbe0b3e07f5851a508caa28af6ea48533a1f7590d72dca8cdbfb4b76eb67747c097f8f8df01f1b0e425deba0a7e0447c6564554a3b0eeb11f6b3f15ca454a2b71634b9f9d9392cf65e066d933337686acc7ceb31ae8a8d58e0416621598b5abe364a7f118dc190e1a9f855a7fdbee66a0f0454f6cee3128e3cb54d1dc42e767b9ce0dc4abe25ed6ae91e8477b1a07916d588b778bb3645305c6773668ef8fd1a0278c80bbb41ed84fa45950aee6ad8dc6327b782bbffb1eeae1dd7c4f831a2cc06f664fc613f38fd7e867e623e8acca77dd7f67fd9c458e1a07b5cebcd8f033fe45fb443076462ee05d1ff36b351654af37f63d854681f160700c06711ff06f8227b4f8329acb3c0f2d36139afd92be447ac543ac1dcc9e9b35660caa50f9d573e0398573f2d701ea78e805cf8c8781fbc47d0c052c277b7fcd480b3d58d7e21761941357043cab558cabbcc32c6ab240ac4bb90eb2243421bede125ff75935d7329d286f41be0062e1c7ec25204c7f4bf775f9ac0c30136c8cc7067bb0ceb5870072a1a071e34278ab20e67ee927b09385f163d5f9bdee9d78d02bd8c7fb43c11a10890c82c89a33e60bb3f166f4082d963c1ff2f7f13e3c6146c13e2e454f67eaf6bbde68dd489b663689cb1a6d3305fefba0a17998fdf029b9fed23374d63e6fe09d63a307246dc4b1645d532d587e5b9bd0d529ca9fd7a6637c37bebead4da5f54348f3f28f6b333c20aef4efc19e74ed817de37e8e3e072a97f365ca3f55f11df758b9c97833d2f861ed4b017e65d6483a277dd692bd5aab49df5f6970f004d6bcd2dfa1719007601f5ee3ddedfaaa5ed9f72a42fe358726d4aa995fe59249ff1ceb7904a61235c985341362ab3c324f71891e50066e07bc8ebdecb2995cd765c1d3ca41dfdefa42fd95bc62ceefb6672474711cf5dce9c640ef6d747d5eea3a91304398b9acacf038473dbedc51bf70598bb7b979f62e718b723924aebbb88b77c72d9f03cb71c47c5dc6ce3de13e44e9b87b5dc5f74c73e049d391cfaca50d6c8f737a6eff960d0efe3fccd7b76baa4d9fe7c41d94733373c0eb9ce11879d1704e7e1acd62a7cff060cef7628c3aaf77bde61917e5b7ebbdb906eddb83e7b2e11edf328756773edc728cb8ae4bf49c5be7c8693eefddef30e77a86b13f95c57efcf7c839748f4aaf0dca63e410be0bf3551e191d5cc613aa0e63afe3cc1a5a5e699b9b5a8147bdfa6a87cfe65aebc2b543996f308f95439c17a2fd1ef2968127c124dcfead27c100f36a55be410be093f1bf92e796da7ff96590ecab91c8d9bb03b935716f0ec22aadd8d41716cfe751336f46d518f125433ea514f53ef4e7ba1e3ef74d5865b4ca1ffaf5d1bbb0ca4ce43effdd0716a7fdf762ed9bf73d46a4cdf94ad7d26c6fb1a1ac7bca319d3c30ddf65e9757fa4d7d8c6c1d5d61788863a2e737619cfd7692e637eb2f211e33febd0477da9ea3164831bf80febdf6e3d01af34b683aa5f929bdcaf5ecf02d660d6b9cd773edc3d1cd412ac6836b3ca08e51cd95bf8d73f24af6e02c9a913953e173006cdf2fc9f3a9bd1a4fffe401e20c8d0708be93f2b3f4a8359d6383458407edbf7aee527c2493a4668e5c09ee2974a79eab316398d4b339fbadc02b27e5336bead06c3b489654df7af32d6b301e87e588bdab985718fe2a478c819af7385d5aa386fb98d018edfc1ab52630f9e497ac0b4d1ef441c15e22cc75462d9d60ddd98ab95c0de7ab7c2f80a5927fb53176983e532e5cd50777857a73e63f7cce0d87e8e14acf2eb21f80e58c91e787dcfb7e8fbb7bb097348b0fb4d647dfe74145b6645f32cc75f3b15df3339b3a11eba8d62647a51aec8c59e23019c14f625ba53ffb49d0acb682c743e61cf25e0ee7ad7d83597a12cc03cf44ffda95ceb7f7f074569b3ded5bff2e7ebedf32b75032579aae8f3dd3fcab59507e3f12ecad9085a4bd50849e803e5aff5eaf3a1d2f7daf5701bcf20af2779de7a7a0cd63f33df2f63f72b8026fe10377690567e45f998e39d6d727e7465cf3889ae60bf3adfb70a579bf0796023d53e9e30cbb34bc77ec396b9a3514ff97f583433a644139756ef691bc7f55a41f7d176f5d70e8686f293f222d0dcab5764b60461652e7ba7a2ebba69950b0f4a33bea2ff49f87fc9a932ff6817018ea9c00d3b9e4fdec002b4b7e8eba464f3de5dffe9645a3b99141558707f05bfadfe3f4be473f2770023e81ef1e724e5522a78a7cf6d1a98127c17d44dfa5da01cb9b7edd116e47d8a4c7a5f571fbb8b97dbc1b363f5d6fd6f7c1cb129afde6849b4a72e698c4c897e147a2f3574567ecad7e8de219779bafe8b3e430472d63fc1a3487fc47cfe739ea03e3554b3d9ce8123b5589def00bf90e05d315cdd9bda5ff6078c695131b6f7f683135382ff4bc271994de6accb3deaa36674bc3b37be3b94258ec62e3fff42c4be36b8a9e12e7169875084b9a7ba77dc807497313e7cd3c849fe72c8ff9793a49adb512a6bdf7400f3bdc024f395ae00ceec782d2fc7ee30f033fbcfb027535fc9bdd31f3875937def098f7d5136290b7f6ffeaed01bbef89cc78d2acf2573fefd75ce78a499c27db25f4f0d5ce56e811bb9c7b685d53f4466551ced133b2d9efac6a088b994e80a7a17cc59b23bf90aa86870af3cc30d3674cfe40cda967c56b22399919e5be6cae39a782677159a57e637d8505cddca8968f65f4e3f7f19c199815d68cd92cfbd7d13e938bf2960dcdb3e65b575d612f55f555029bbcb463aec9be30eb7ca2fcaf1cf5f0c7dc2745de9f5c79be4cad10189420efe520a2cd5722e80eb0b6e60aba76ec9725fd9a622bf9187b25e9cfb8197902b35edd744ab99a9989ae1ae8f84eaa1dfa461f99c1d57e694efcaa0e59bbf793f5e4d6f28bb492fc90e640e9b17f5e05c41720cc41696245c5780fd67a84df8a9a5df1ffd83b455a27e8856674a60413ba1fc70f60c4439e7b75dab34903bda94bbc0386c306d7847a9e9335f5d5c74bf083177e487317a3adeeb2ae9cfe0d9274e92cd664163bd642399a7d9dc13f5a6595a43d1b7abd6b429e23ced42f95c37857c91ff2a1a6a795a5cf9d12390ce2e326451e9d3077afa11921e67ee15261f67869f41c4d581403663ee747da3356f77e1675ddc502e2ba0e8de78baa51cb1ef12c809d5391c6f8c403e817ea58a53114d457bf0401e3a2d5adae701773ce8c07881ad63be4f8a0fb0861445e3d0f71b1b93d0bb36af770fd794e623e0ff879e06f855c8e59af84af5f7d95acbbc29827cdbba5d93ab03489821e43ac7161959b38e55e7d3b5bd4a54c3b8d59d2a7e779e9fd0b3e4b45f0135cfbdc5f68c6e83bbd48d6dc703436e9aeb2f40c3c888b66105b6268e2766dbd77de51b6d65234fa06cce151f293f0ef5ab3dd6b73f32af0fb9e476e7a29492bc9d1de7b3d7fa9e125eb6acff633e24520ff85bf549b33eb7c7c9aed8d3ef83e31fa7c98d75b43e046845bf916c7c85f9cefadc8233e9cc9f02dfb7e7f4f657a7376e71bbebfcc79002673c333c417f008368b80d789a8dbf53d2b3634a395fedbda171e74f3c0a1d2cfe38ed691b062a3df127db15ff4943c5ebd05f3ab8a24f9efc76be23e4283ca53fefcdbdf299e03539a0573e2f826a3356be63016abd8e83c3b295cf226b7862656712d9a3a43d4e66ab670683dc64562b85feb06f54b11e8fa252dcad182ce8a97744075cfc27a1fc6d68ba941e053f62b3dc363b05f23398cadf8ebc2be1702b96b76d9c478bea403906b7fd2fe2c8e39ce6a451cc6c99a664ee30a317ba5f3ed46c74fe353cb3d864b93b1de2eb0b38f0b05ccd9b5f636cd2b35668c6a20f03028e71e9b9e7cd9e3f50755fd703b3b8417b9f1123f1baf64c7f8427accaba033cee6f9fd903120ac879930078c7b3aa6a60a12688a89559d6c3877d01c36ae1376fcbcc96b2fc937a31979eb43175c3db27782f12fc8752d942cfcf08eb53cf0bb3e93eefc99680d922b0ff7e691eb08ddd7dec18be7dfd20a1147c6f42ec10965cdbd4550b30615f17072ce67eb3be604ffe9feca4c78d7d80b51df60c204ebe1c5aca1738dff1aa27f10b67182eb94b4d31aec71218c7fc3e8fb330da7fd7332c98c37da2ff6b0bef9fcdbf3be5da31f49f082d734ffb256603e771274e71cf69d976e938da9a1eaf76fb991aebbebe43d37e782c6fd5d695894c00f183d2c6859e0ba278c8d33cfae08269c77d07c557cc54e037caacdd83df1ed5967c1e8ef9e7592cfe19dffd35e0a793e6ef04ea8a15de0502722609e99f860cc85bced0ff80feca54b73387ed6cea9e47a8ff19d256b0771ad91c113cec4a1e0296ae02f74ddaf7213c6c940f742c7195f3a79cada40ed77ffe63ee9eef6bb91f7e8f84ab9b11cc4db70c2fd17650501f136ccde1d9b9aae5d1be3c3c37f63efb23fb6600ed4779d1fc9f55b38f3193b7cff7c7d5fd40eb37ac6d85fed09f3dbf46ccf1d31a66e798b736aefa93e0793d1a35d53bcd73ddcfbe8baef1158a5f1d0230ed1c2f4a0b19fa4cd788ef6b5a4f999a39e18843bad1d5e24deca99f7ce79f6b9b417d7f7f81f7d1f7b22defdf1fbf2a1b772225ec3e425b643df9ab18ef00ffb7e8fc57c9163260f7c439a952368560c7a7b45cf92c94320481663ee35d2ba4f8b66cb58278d93f2aaeded5a5c5a926342c8da67695ebeaae72b5eef41e1ba58830bd7f0634cd7fd19b3cfdf75ee014e5638430d26b3e60fe7a6fa307330056e40dadef7eb3e61b2b34bbcff053ac71be6179b353610d02e2abdc8face71d2189efce8332f5276fafac33fc6a3f3e933a98370513783f8ea1e49d6237d6a73711dab5823d968435b9f8c73e7389f7b21f7df92abfba173b28afa4198ad567e74d33fd7739fa0aac337c2d9059ff140cdd003fc845fd61d63012ac61638ecd77d7fc17ab318cbbbae0d76ef8c3a953c8a0709c778e6a5f67a23cd63ff59cf647887bee1373f5c33cfe3f9967d686bb53fd6327ff63a168f6bff475f63154b65f18c4c397cef9b17094d2ce449bad6cb801fa45c31dce3bc7962ce987436d45773486f8ad6e3d123bdbfc0ee30b7d735a494c164ca674b21329aab2ae69ff17a12957fddab8cac15fff729d69efde20d3a9f8999d7ee13aea7da3d93c4f2e592ec5917f7a77cc6601dbdb88d6781d6b24adaba5de30ea9ee219c3b797f783171e5cdbfcde9df12fd6f017984e8be8a35ff44df27e11958493e5f43e681b7eb01333dd1d606943b34fa5c4c2e6254f9062381f5082d8ac1c6acb93fe790a53987a636f74bdd1134c4a5c15c33b76f0b4c91ac1dad1fa1fd65ba19b3244e26e7fd418763d335fb89e37d847e559bbb9474bf27331953bfe5dcaf37249f01a4fb09cf7245fa22c817743fc7411fe9f63eb6f9ce7f701f75fc661fd557c288689d0ac207d5ec81ca1e460f6ff33fc4f684f2f57197c3e918433d111f180bbb3932765dd40f342fbf545dac6f7feb201c2d083b69666b5c57002be6b1ff7376410f4189af9cfb153817a473c4efd2393eed5b9f306d534b73539358567370fd59a35acfff857ab9f6b224cc89b7f685d5c53570c2544d7e53269e43675105bf24fcbd1f9d3f9ee5bba57af9d3391628a323007f854bb03398032b9862defe184bbfa70766ce1c0b3d47d659df8253182007f0e3bc9bf970debcf0dfe10f0e1ed2e03062ad5160cdae3f4fe735ae60bedceaf69cd5cfe17a7f948c95c66b64913c6b6e16f8bda9d5ece9cc3ab9b3803556a24f8a751a17b18ff5bc51d8348314af09e2f7aa89b8af31801f590f2bfec06b037c06f945b3bb601f5f786665db7476375f7aa65004cf697eaff1d9ab5de81a6d7ec2185bf16ea3806d1801db30bac236e4e280d8bf418fd75559a3eb03d9d69041e0ca3134bbf2873be0b76d7346d9bfa11b42eb4b8d87e177ac0eb429b516a4f6d1f35953fbd182b73cfa510bffe1b3efcd9f5a5daf2adfb1a7d5f180eb10ba4e6c7391f1616fbc1073608254e3201e1442ca6ffab5b42f3adf7f617cce55cdfae4fa8cc55920b70d6152ecffba39f7cc397881cf2dcfe84ea5c55a9ad0ee7074ecf0167568c5a6275b8dfadae369bea1fe8e33d4d815f4a0f7ac41a7f3d1f4b828b50e78b5207f41d2d5618ff5d2a9ccef24dfb3aae17901f7cbccf7ebda47f7a5073ca712f08a8864c89ac6db35fbaee7d533ebe4e3b317981f9abe09fa6a7d1d649d07e5b71c3ac7f4c6d9276b505a1cbbcd359b1a9df389f58e7fdff152c28743664179cd3f894c9e3b1ba3ffaff308955ed7698d7f8d79528afb95c2fae2b9b0595fc2812743de80976d8f84c18cdcfab0c18f330f5253cf18bf87e8946a3ed6cdef2836e52d4fe591bed3abfcf085ced6e018efaa1ab1eb4abf72d140473a2b713e0777ac01b46c88ef1a5992cf28c4156b4075957a8df74170bb9e56f080e2fad3f4d006d0e4ec66c036f717e545987b5699f5f83e001ec131793bfbb3fc67334d9b7bfd4bccc8246bdab76bfb128c163b78ba701fdd7e708081526bf2a3f0d40e3ad9b41703ae2523e23af4e699e4d795fbacf1c67e493a8fcf6215a0161c8633c2067b71d6dd0f31ae46146382d7f2f974c583aaea903d781dade3aff7dc89e6a6f288fba65ee3fa453fcb7c0c5ddffef3b24dcd47cfabc1fa31383bd646e33c4011a7dc0f06d0c3f88c071bf6433bb29fc0aa8e3e8d8ffede257c947df8b79ecf6d5da5908798784f1e7793ecb9eb3925396af3ccec97ef7102dfb5f0a1bdafcf45d2b166dfc975401aca951f9a6b8e882be8910fb908d694877df797a4d99627f72a426eea64a3db186aff629da605e928608fd89adb0fbe93006e56e7ad734beb02cfe36c43fd1ce46c72073d69697d658ca11b47d4af723623e1df612e13c09bb48d09c31dcfb83597688be72c2d8bf5858dee547e20acf02019553670e0aaf9959afd797cb87d6f55f3ec7ca834a63f1f8e964efcb7739e4473530973d96911ab396b3ecc0787c8cc3aad879edfbabecf1f377bc45bfb31f3431903fa0fcf04f12bde6e1ae0d99803dffe3ec2ce12ff61023dcf9b73efbefd2ee2fed07599bdbbb0d0e3e5ebcad813d3ff4cfe7e8db06ea91ff31c5cad86cc7158587f991ee5caaf99bf0fddb8a0144dc43599d7717b4428a05df80fe68eba7741983e7507ddf03feed34a7e813307dd68b5bac02ffb1cf7e2a7e61cec8ee1f759ae7f5ad6895e976237f4e30bf72fab4f7e0e95cf3df3f04dfddd5cd7d2be8f5fc96d9e426ba38fab7cbf7d5ea6cfc15a165d5db4a8acbfc0171377ec7149b9259d7791a47c2d279dca94eb7d6094369cb360f6b08f7706eb6e713f3b92bf9143b93cabb893575e4436f4ea830de6030239d16416f0399fc077c176785d99f3d9017674108e663eb85be67e9be7d6ae076815d8c6fb7429c38fb2a751ddc6afee3bdd27ec576b4e1a61ecabe6a5f9f1f93f8cbbe2c7b8bbe3dc8af162c3b734353ebf133ac38e6e62957fbf66080bf07dcde4f70f57b9ad89912ef2e6fad2e5348cf745fe6bcdcddf1e6df8b9690dfdeb5a202b0e3731a9ad7556e4252023a34fdb7e06e17f8233d53b7210ef95777bd6ff19571dfd87b86ad5e1aabd32bafddea8fefdde79f1cb0bf7be978cf7716cde7faada45e8b1683dc8db78f84ef84d65c5db8d7ffb3d8f8ecfb94cd1cbe9c305735e0625f239f7c89e2ebd6b20cd7267c338010b9a261b1def9ccd68c9318bf631e33bf6ac77b38616159de3f7f0acd3bdc937608f2653688664c50118b66000ccd8643d261da7451d5f699caf253498807bc9f6ed7bb5ded130319a9dd0c1ca70ffe5fb055ac4e19ab4cfa6cb3afe7e5615ba5ee9bc50a04f1ccbe61763eb346f4a73936cee417fb0cfd952d6c0011b8d15d296ca7de458e1c73cede6b7b1c53a8e15f4838ebf648f634f3a2be8c79c8f12b3b64fd61f5f235ec9a282f6427537a738f0dacdd0dbf368334c58839dcead59fb5e7d5f07cd04cfd8410fa8a4fe9960cdc827eebfa5173163dd61ea01bf5f92eb35aefde2d6a46feaa603e379cbf5f31df99a041b7866b126c8c56062da3517541a1b3185a6463fcfe99e8f60fcb0eec12f6a79934b04b85fef16dd53f4866f34cb56926b3270ee95b84b504f2d1cc6331dd143aece73606156d0014d0621b01ef6893508d0779bac763ef782758ec17d820ab3be7400bd3779ffc9eb7e66f6f75fd09d50b8067b501ade8ed601f93435637aec717a746eeaafb92f3670175c8f28c6ab8d59b3883ffb1d71687589f1db9963296dcc39f56fd01c3dfdf74a72df967ae8e05e27954df7973183747ff42c9df7fd94ef793248ca3fea875ddc0df4c3fc2bfdb0fc60e68c7afdca4e67425ada9ff50e3dcd6e5fa7c71deb84d3f9e4a32fc0798cb8aeebb26494eb3e9118a5b96d7c1117d0c95b183e81c9853f6806a0dee3fdc6bfaa4738eec07f2da35e96cbf76fe943d32283f75e1ebd95e889979ed871af44cf1f74cf27d95d6979414b78ed9bfe39d72e7c7e7579cda0413d6cffd27db0f6fca92d9cafea0173092b0747cbe8b51737df996da099e79a5e03f75cda738138951becbffae6b9d9979b753c30eb382bafd7b1b361bc0ff7c644c43aa439e399746d4ffec7c65b57ec4bc2a279cafc864dcc7ca62ad0679757f90f3c47984e278d1f4bff9c78e50bcfbad7c17f9116762612e03ac74b8379b0adf27a7e73e299049e6d7b6691b695c9ff08877baba592e9996eb25f9026989779d58bb92e6f4398a08bbeae89ce67a0e1318387c04aeabee8137ad7fa5a13b53964b7fba0686b7ea397dfd30b2a67b779fc1aba2d9ca747d094256e119f03b5833ee734fef762ec81b5b02bff05589063f93f176b233b31b522e257a1b0f65743e494debc97bfb34e33f8049315734a06c1e2bfa9a3c85ae9acf7d95da339cb8fbc6f265550b33e58c6bf9fbdfe23e243072b3f667e9aee0156bec1e47dd3522c653015d60fb1b01005c753aa471b9ae50c36dc871eb25634fad06f89fdf29e59fe25a98321f19bd93bc068138f397fc1ef0923be36c2a906a5ae5bfcc1d2dfb0e7f725ae23839ba0b3cee5fd9f2d1d70ecb416fe8aeb9113e152a2cbb5962a73141ac7e07324f01fc0ac91ce97c189ba697e327ef40b87b89f490edda17cc8fb6fbbd49866d614173d8d977a90f38c1ab8529c81f5957e82247c7d762969fdd92ffcbe50b0079a8965ef0e62e35690f64f30654f4f87300f09fcc9b3813be573f091b087de2207c626a79ece6c7c7c58f9c2d3d79d07ef46a367077d0ad6a2a6fb4ebce4bdaeff2798c905d0f40963d98457bf4b01a77409beed69e1ff057ec2a9a4b526f6f9f3f57eadc6c0fc0e14e7ae16e7c6bcdf53e0ab9341b2b9d67f9ddfeabf76b99143f953c275a663f3b36ca69c6fa3f64c0684574b7691395f56ecfba57b75e4975e3a95d17fd39f5d1cf45a4824f7d3cc9991acd4c36d7fe1b66fd5c6dd375c6f29d48fe7d93496c733e762958335a8447c1583f2d3866b1fe640dec420e021585b50dfe36b2dd781601eb893a7eccb1471bc55e8a99fe9f3d55732ea7bc935939f73b1937e5e8c094ee4f579a0e319e5bfcc5b79433c6f24d50725b88e66bd2c760fac170c9d81ea15d82ab1608c11af17e7f0dc5f2f86db91db78eff19535454bcce1934bf062bc1e75de998cc498ee7bb27547ab9d39f74ddecdb8d088eb04e59f99739430267b9024b7fd60012c04adc3a65dc784b7a8fdbfcb73a8fffb6d8d5dcf203b6dbac632da740ee746ea0e98a76e9f7eebadb47bfe48f14ad576fe2d8f148811ea25267fab20015f38a2d9eb3492e0d8a21f28591b0f75449b27525d7f248d0e3d630f3877f02474984d1d619ea9e05a690adcc96419bcb0e6367288d509b164ba223ec5b7b393b5b6b047b13f9a0fda1f15ebe94c2bc7ccb088c3c5fa5dddbdbfa0d79b95d85379dee60647bdfe1f595be7baf7778aebe009339747a3ffe648e6937c5b33cb807a0b2b3f3ccc9907851852352ffc37de47acbb23aa9d3e3fbcd273b1d7d89bd0be9b53acc8d7d83f59b181a772371382f621f68dfdba90b40f557e3c709ebcd45887ce174f58e1893dcd22ff2fe41dc996f0ed02fb4c3d56fc7b25e768253863f117f6a7f91d6be28a4d23f9c039a759bf52fb501edd44fd3e2d085f17e4e3f9ad66f6e95bbf87f91474aefb4bcc6b495b42f9847bf64d6fb1c34828674e9a559edc1afe7ad7abcc444ae7443212d6dd1ffc741a37734ecce3e9f538e41bf78f6e7b77e8cf4ce151e6659390d70971f89ffbfaedacdfe4169c9b616d646b1fbd1fe768ea8c7e1e4de7b2d8f4f2703a97f3db7339bc3a9757ac2d5bf0997e3ccfb9b7c839fca5d9f7e36c2c1b9bd751e5ccaff1f62666f96fd731575989075daadc1eb13ea4000fbef3ffb7930e47d0d6e4016268f59a00bbbfd239933e5bfdebfc3e647ff10b71e4be9dad0e9ecbff5e7e2f1f7eccef57b4a78305636f9c7bf25250bfbf386fedf2fda6e9637722cbf862d259ec700e93900e613e1cb1ae71afef3690eced1b549aff7dcb53aa34f745e9be5d15dcce27a5153ff7bcf2db58cf1885ef98972768c1f4f14c1e6186856bf61873c7b5d61bf5b752c2abce2b9e71b33f36ebb5a266c0f9b7818634cdebf3eeec15e6ec456f795006b340320645106efedecd6c3d4fbc9d9f65d7f5d515a7ad5d7bef8c87c0dcff103fdf63ee6f0f496f42bdc78c71eef5f41736cd2cf32b3e43cf578231085bc538823369cacb61bc25bd1fe104e4d99557cf33191216263f8e96c085b6e737739916e499321156325457183961c5fb4df13718b9fdff9b18b97f8183e3de902b331798e28713bf3e1d041c9f58bb7340da58e235de6f188f736e5f0fbf67e0255676d2fbee8c7c6bfe0d9c9cfa112727fe8893fb9fd2226adcd8d9040bc28a7831d5c5fa9a670178b0f9bde6af09df3eeb3e537110710e9c7c1e9dfeefced436d1b7ef7524e3050bd245419fbdbebbc13a1f6efb1717e25d61de43dafc6e9a3107eedf9e1d7caf81b3260006dc6853ffcf9cb5cc57873ea1f2efcc1969ce58b133b54261fcaf4f942754673e8757d6fff77afde86fbd717f2b92a6bf35ba8abfd9867b4ae5d287ef1ecf88c0e182fea547d8ec9bfca9609db4ff9bf9d3bf7ea695d3b00fe5797ebec1c80f12e4eac64f40738a7bbe307b68156699e95f093796ea8e7939a2897f7cde0bf824ffaf3def22f9b99f506cb4ae683208bda55fdfe6f5ecabd8ad817f33af8f765cbf589f25b4a3d3ff20af4ff2d368099f89f925e01cea33662c0ae16aeee2e76b5d61deab1caf12ea0df971f1838ed0253c50cf5f9ce34199189dcc40e7085e6eb04ae034e8b947c4337b4fe7b37b9327e8b328d37a6e7fc67aa6563001d7fd89f0e60d38f54797f18573ee37103791679feff13e78fe034eafc3d8edb82f52729fcb68cc44d60b73fc68863248bc478bfdb28fd05bb48625f928078bff6d5ccdb67cc473fc459c04c2d1887c13e83c323dbe24f2fd0cdcee1f31358915843379ad7592a8cd5bf63dae194e32c535f8d80d4aa3752c9fbfe5d2d4b3b0a33e56b83d6b17469fc4327fb30cd6b4dd37e7fb51a5a27f8ae9fc204c6795f73c3e02e0a0c2f416fb53b8cfacb5a8fb0c359e551636ffcbd8d30fe2a5d2b35284214de3e24f6bd37e63ddf6592e292fb65facecf9b67f564e7b67abd09cd66dc878492b633ecafec079fe89f2f28af464a49a9bfba6f5188793db1ca7c4bd632c39f657b0a2b9af1f33969ee202e9ed38123ac52f3fe087ba9ee17acc1e3bc7947253ff42734069c7979ff2ad8e7ba134ff93e74025ce25e26de6db80f10def09d7b07c5ef9518735d21cb172b444ff4c0e9205fa725cdbbdf3fbaa9cbcfa04d7b1836afccf30360d74aed8a75c2d3a0d7a7a3f612f3786177ec3ddd4fd30f4dd27bd7e971b9f19f3fbfec51eba86bb0b4eb2d6db1bb10e52e5c697cac3b9eb72cf2db3823092e1097962b7f7b3f0e1c71ade696b22a3bfa4743f761fc6b7cfeb1b166c6f74544d1d93a5f70d3894ccf93ecbe71bcc935772cfafd3cb450f46380697f6ed99f5d6dc30d13cd368c0356b65cdfb5ade2ff16ef8b3760ab487593b7121c33be26ee8f914f5944d5e66b36ff05d3222aef8a3edf3fb7c7d2db97a999f7bcfc33904fff8797c9ba142e7be9ba15e6efa1a764c3d5a2bae9bcfcc605bab02bed65cd3420337104bf2c10b967e78070dcaeb996b71c03cfabbe62fd591fed0e0cf79160a5dca54c53c2fcbc44eef8f87d2e3d9926d67d4e79ab1effb77fc47809e19d7b43c47b70672c4383bbd4685b0c43fc435acfe29aee187b3f1ef7a2ecd3fecb93037a9db3bfffd9e8b3ac783c3b738bece650fff195d62c3d7209c61797dff82651d7effbd59825e8bf626f7cc8c58e36d89eb871a1e5c947bc383ebc75f3abb9a82f51150430bed813029a7bd6bd7b8beca610c925bff6b5c5ff90dd787b81da809c5a7480ea90f9525b37e1f6ae5ffd08722ec4920ac987dd5f7f47de205beed19ed1bff2dde6d78cec11a774935666d8d86b4f42e1c933714eb8ac0e822f21c8cce1061910e02fa2db486f05da29e5abf6f74aad1fb721267fef77cccb7f99975aad1af6ecfc071c4dcb92d3f63e019b916663d90a7f6ef513d242fdce2308bb30df697ff16ef75acc679dd5cf31a8bf085fb78bc2f22eb46b74ffe7561aeb2e1e43884154df28db7c4cce8d10a9df637a2d7fc7c85b32b129e0340af22b2594f77017d347569c4f5fd6dcf00f645eb7820460ff0bb5fd62bfb58b5f16adef599d0a74c5807eb8dbffb91f68bbf24adb8696cfaedf58f9cba0c9e8559fdef71ea7ee68240ef996601747e0e12c399fc9903727413e2a619ef961b0d8cac9bf5962e7bd2ce305753cef1a9f3537143aa61c3d11a9e8b795666ac53407d08c64596e20ff978f01fe4e3d039d4fbe500dc9815ef4be62ddd81e7514456ccbc9dcd3fe130547b41b557e65e1219192ed0d2fa8b6af52209190bb4b0e77fc3bfb2f56c011cc6eb75fe472e6fc85ed67bf665882cc3717d85fec43ede1d4c5f78911fc81b273758d417fa9b784fc63666f0fe109a63e1d460860cc702ba31ccf3858687e9ff688e6a5b933cb3de306af4623936b1c868591bdf417c7eaa6735f71a9b60744928c7b195a96b02ceadd977ec186fd5e3f7b3e81b37a79bbf807bb7f42bbe773fe1a3ee504fcf384f12b6ee074d5675789cff10fb66fe0bf8203c9f9017e0dbd402be414a6a2f6aaf42ff6d0eefca8ae7886ad5f1eb1d7032f80c91cd87e2b383cf035d0fdceb3e10669ca7cebbc7cdfab3f2aa369e8d7fdfaf69e41ff6513434fb68db4cb05708d369dd5992b579b42fffdda9b777da3c0578b5e3009ec774765b87bb94bdad2d78280f363a262585d106e23df62f785bac4522bf6b1450df4bc0a781bcbcf4b9ccbe3dd5fc767dae1b5e9f4370cf1474dfa353bce5daade301720ca9fcf08373ada87e201fbbdc66feda574a3d9bc7b66e93da8747b85d3ead7b62830570bd911fdef15c5258e1b77f27ff7c1d0b3f62abbef210499efb7e232f8c11bdd6afbba8875b6dbaa5e1821f75cda6f321191ed3d1956e978d737dbeaa5fae7573e4fd29676c24f0ff2aa3b360ed1fc3475b7b12baa20e7fe1f3bd55adf8fe9f16f5c37ba5f9a56a1431ce50a9379ae7c853ec1c293f498fa36ad7304ec2ced2ce8b837202cced076110993eb6042f9370c5d5781356d6c32766ab49497d3e6fe1534f7d956fc2947ba5e7fb879bfce13ddebad026d01cfe29d599ac7bb399c267a58bc1ff723d6a1e909fdfe6218303e7211f38af14f6006bd26e05d6c8da8f1c687cbf51edddb8ebdd264c8a50afbf75be6973126b41f3fe5f0bbf71e2ad7ae6bfadace853af9362f392164920e0a5352f12e885fef5169f4f43f85a5a8c456cef9beeebea67e4dbf18e7387cd03f5ce8f745e159b51855eaa1a1c1edaf3a87236e1d48a07dff64ce6720fa0e1e727eae32bf2f0cfd8f2a149072dbc2c3940b360106f15ce82e8126fbffdfbc4708f9c8397a6ba6edf46bc9fb2329f4e8211f9d4844a9f99dc677a3e4e7866a37b06c869c598fdafc5dd82f1dc79659efb6a47f3e72453fe529a19818e8d3cf3cac7363ca484b7d6e7a5f162f8712f55fee935dedd134f2e0b47b39c72ef243f8d97bcdeaff6887c63ed6c9c4f363cb3ee80399b7ecfcdef3b0c32ddb733f54014eb477e76fa4ad76712f912ff7c266539cdb733ffbfad87af7fc78c7a345ee53f18de9902ef4c04863758c6b29ae97352a1ff5b1c9e7a3edb6e9a377feadd0795fff0b580b76d693de8f8f437f54bbb2699d3562c550d7f139cf17934a479e73bbcbb0eee0ceba7f79af61cca746e027fa4651df53c3322f8118b1258b75a58df3c587e714f8bf525caadd167382ce0df39e7b989e12db2af5fa7d9637247d59c79ee6230c6d603e74a5c0f88c8ae1917a36259cd67f2666dc8fbaf9ed737fcb9a1fdae75cc95c62790bef6465c79d5dcce8e7e5c0fe1007142a186ce2bffbdab7bac20d0b94a7e1826e42df6b9966afaf75a09959b660de3472fd4bfaad2552e7fc8dded2e0f7fbef2b27b5aec48837169855652a81c3a3043a327ac7be3ea05f87de02eaa03af43999e2ea9f6dbc30cf6fa2c6cf7549fbb7887be8e12e4b13a59d6c09e6326d3f7de89a84f172c7d015dafeb3cf70f7daacb4ddfebe73e95739ffc1097f43da333bf31de758c6f4e9d63883e363c059a37f5073dfc365fbcd6c3ff791dfd3883ecad2361bd5fafd78b18cd980ffc2fb5138227d25f39847f5ff7556e324846d0aae1baadecb8cfecebdedcb14e674f43c3ecdf5ce3076f7495be696858979cbd3634ffe434327bd2f47fa20bfc8c83a51f823770fdec573a0e74f3984e9f8171bb47cac5ede495b9ca5dac5225f5fdb90ea8cf09eba36bfded9f3ca89b133074d315bca7e5007ea394ab27d4179833ce9f39062f8a395d3963085caeed0dae7b059c79a2b5383b7c44c4b8f982b115c72f832fe5cfbb547fc697e657f8d292719b7a5f3b070f1e93ac334658cb9ae377a939ee89d6d5d2f5db1b3e2753cf57380ac68d2217ff861bb5c107e970a363cc679c7be6e39e1933b168f09c80cd492e01af35f691bce164d43673c86fb0edcf1d27033eb3340b7dac4837fc3d1b541ec5bffb0feeab463827976d5ef9cdf3b379c67e214fa89d0facdee1f91b568f7a61ec0f70a0f30abe6952d70743f2d4152fc9788879aabe87d4c39473ca3f95ff7eeda51ac097b59b292d194f0eafd1c40999dbbe85f783576ed9f3d3373ea9a27eb9e67b2aff7d69b5f14f60cf5b03e4afc3c483ce9695e0fefe655ecbbe810ba31bc59ef016f3fd1f183bb9189bb3033c61606c80979e9b1ec2fd81703bea2b61bd64e849cf07e2a1772f683fa817d63e23cf70f66dd45a1d951b67c968393e1a7d07e07b9fa0fbe54581a969ad8565f40c329e5367babee11812a69c23a3cf7b614c8b608c4656b256cb0b78054627217548933bb19277f4528ef1f3913002f6c1edbf2f95c121deb3b65df3c61c85a58c86a89ff4ec60d1e63df9d17b74d053708613c4d361ce5a705b050f2f7888cbe69df9870b7a86819a54139e71ae7dcaadf27d7330de9c8383e1415454ef4d2b3f667ff639d6d83067dfa6e0051834d42692bd6ae776ce1a61f42c72ec9d3de5f67a7d4f4867f5e5460f535f7719cbcd21de07c0c986ecf3e846ec3f47d8f9316b72673c3394f79f3417624c52102e2de65c6a6dc909781b3dce25fd5eadc354334f44857ca6cee0610ffccf9dc927c75cf3af4e785e5e49e7ebedb5b7f9e1d38cb5e22ecad7b9aeb319ade02b3acf2bc3178d647ccb653a21ffdf98cf181c8037f34fccc95b291ddf83a52f4ff39e6e4f22cb81d6ced59c3bfd797a1da6b42f1ee28c3557ba75516e13d222cb7d3befaf09edcb183abc4e780d647aa659192dc42bafea0b7d5622b5e783eeb1458cdb35cfedaf33ebba9bbe6d1110f7a808bddbe75e91975e9416f0d6a69eeb13afc534bf67bd0e0bb3123533b8a5872130c96a6593be871a2473d69be87acef77a56c16b5b6b92a9927a697678c1de2baae077efb7689f19e61438fdfd9458e062133ecaef5d7780b9b22b070d7be5bec55bc1fb91f7da04f8aa717a51d01c8a87d77368912c81f79cef15cdb2adbf5863fd2dde568f3fede394bc4c2df4e69f2ae04a55b611dd3ea098af0a81585059d40b5256e26d1efbfb85f8f547f36f53f2f3f19735f52253b519e0ac3ac6fb0d34124a8e8fdcfbd33d65736f039ddb8cda3c066b218c73e685d60e624ab1ac63c6a78fae391bda035ae7024b499fa124bcdc810f481c3b253c67a8ebd1640c0f6af4d1977abe59b1d7e8745547fcdca05dbf1a60b630c1393d59326ef9e2b236017124d9a757d69ff0ac16e87deb5e429cd37766f8bd3c37c18c0f1e6434774b0ae0ff1566e17ecc7115ff4d75ebbcafa9a8a06d837b6174889eafea2c7075d4abe1985b77fa37cf9d21fd1eeec3e4be9e59aab13dc373273f6505ffd8bcf1c0738896a45de899677566ec987e96ac1b5f2ec686d374644ec2121a8033c97bbd22ec662e5eb8672db5fe39b03b9453d971efb7c7f66f682c1c1b8a912fdc337b6beb938c7bd1e3e32896957fa563e36c76ac3799581de63ae2190f7dc604f5ea14f1e729e61ec69596828267c8107d5ee087a9f7e8a2ae0ef12cbacfa275f29a98ebd43d9a887b876dac6a9f2be92ec5c03a47b8e757d7098f22cd91ff8cebc0cd271b9d03c799f658a43cd4f6594f1135eef183676155c7dd4af84ccaf859213f1272cedfd9f4afb394c184f75ce7dfabd7fd34dfbbc0e23407e02fb5ef94ce5bd8eb5a3f7b7deebfb04726ceb803eacb2fd6f22fa986637d5037857f087413172656f11a1d53ec17ecc12f4f547b628e086ce824e7de1c387f321f429f430d3268e78b20bafd9b4d7f1367ce85a206b186f8609e245d3d57d1fef7329ff617f5f0c8c7006712ed7ddb75a9afd3c0cb597cb19fc242865f46cb8fe6e787b8660feba8b707713f31c3553b1b6788dfdfa7e3b83f3f75ae62e2d37c1b22ce61eea4a4c90750cbd7c4117fb1a07995c5ec7da7f384c82e69fef1c56b8c3874a83564cdef7b1239d5b4b9ae2d545f1b8363c89370f835e47791e5277dbf52df77f8350bf675be20ded82fe6fd8b1dff0dda1a2ac4da0a0aad9d60ff8676e78631bf9c7b070bd2eff552e3d7a818ebfedcc717632683df29a041f87ec6ef9c08f08b13ad27ade3e1abf90e13f38e0966eca8afafcf1bc2699a9a67526a8c83e239ff0b740a9e96f071cb9c23eb107fc6dc4bdd1f901f699cc48430a2a51bd5e89d5cca510fdbf3144b95afeadfb79f87be743059b09f253045917ce8ad338199dd3de1462c7d5ef9712602e4099c434c315ff7b2b10d2d60fb8b7534da7c3ad53afe269feaee6771401e667d81f712447c1e66a5fa97f773c0f7423f43817c771cb35fa2b3a139b5edb27ed1d3a2d6584c4fef9fac7988d36344bd963fe40d56b04f0bf6c38c9cec360ed299166a6d4f3aef8709e220f66830232eaea73c70c194d8032f2d1e81596d6b23f27a959ff1b6c2591439385f44696aa8f0857a45c95dbc1bfa3738d937be8762acf5a2278bfac19e332e9c383427c421b1820f4932c0337078666cbcebfedc33819e702cab5fd4fba94c9f67096cdfbc003747c706c647ebdf35e45e727b6fa8d77caca7ac35efc4bc27f5e73d52fcf032c697e93d786c7341ca838b60341ddfb731358fc6144ba33aa21e8afa3da067249cd86074f57e7b4f18433db6455c54a335d7cff9c92bdb9c6ad4e61e2a8ee1e53ef343e453c036d5d190f314e416d1a3f5d5d7e97b8ccfa74d9c9f6639eb14ed0faf37354502cfcbd942860e34de9e2bca593d091d219935d0a3f8cba2da5ebcc737351fea857f5207782b5f9e396e2dac870bfe7fb0f41feea0cf99cc14f433743cf2ad4cc586e717a727319d047eec1cded3da071fdd3ee81c355784b5cd930e3f863510cbfb7d3aba9e5ddc7097a68c7be6be29d699d1d548a0c5bd22cd56adf980dcc6d3fad2dc2f82e7803cdfbff13a5e92775e507539187a65c0d20e023c1f914f1d73cdffa277d8e0cc09ce981b7a534bf0ccf46945f57cef7383a7959e0d356e7a1123d33f250ec7d3c2afaf38e9edffaaf3e998f86237930fff677679ff3f33abd2b924bc9636bd59edde789820beb73954297bf5ad63eb5c3d21ecf798f54210f3c803597ec14be5dfbdf71acb4cfe91c8c5b27cf87e73ef4dbf2a75e0452ebfb41759ef5a32ca8f280eacd0138206be9b93d697bba47be0e635ce2e2b64bec52b7b622e1cc26349d65cd999b9bbcdde776dacd41c6ee60866ed33ed66054246dc6b05862e000eb4fa58761e5ce065a2163bdf8f12786702d3912c76ec8172dfe81eb7bafd5de4d16efcf3a067cdf3e86cd0f0da9ce3339fa29c7990257c248ebfc0817265c1af0fc235d65cec6cbcca398c6eef5355ebe7288c5fe1a0e2f72651e799d1e680fb782be606b3adbdf385b7cc6dd38b2ba1ab1a8d29df5fd5e1d752b27f7a04cd17fb48b38c23308a256391c784fb4e465d1fa8d2333e29c9cb3db348eb7a2e83bbd8fafd9ea65f4e5c8b185cf18cb03efe5d0c1f0e09ef4b81bc02788b1c9c94eb19cf85faf3896cce3c8b4d078dce7792fa8b3dd533baa6f80bf9e1663db6f97adf78862fc8b37162b08717856754a3e7c19cd460c7eba904be977201f11a0f0ec8b5ac3bbe1e3508a94670c24fe65eacfc7778971ce061a06b384f58e13f8a45096b2b532c0aa6e32a88ed839c7aa11f4b156a8f2b19b802b55b1b9780450b750d051ef25c6ade84378756e25caedaffdeb47b58c71ff4799632f46e7239efda1366f5bed2b55515d37309f8fa881f63b080c2676dbf367ee8daca9adbb173fae0df18f3acdcef3c66da73763a6ea6b1537ec4b7beaf3dcd04f8b2d25927d557dcdf9b37af8df9b5e3fb40e723d6e125deab63cc3856d2d65794abe8589901171350cf1a7db84b45f5a36a2653bff1167ea8b5aadb67f74878b250c8ee7ea6d2e4a14f3affb30ee093224fcfabd1021e65a2cbef4bdd8fd45a08a2a8e8b996e9f8a8f918790ddff5a2d2cf45a6f71e5da7ff65fa503b9a5f6bdd14fabeb725f8396ba97d72c258faa7785b923604cfaa8b6a14d95a37d45567aa99725f7ba90ce27de975da1fed7b4e844b2baa91205fb049e7a5760477c4e4bf940f3b980fb5dfe31c47d77ca310fcaac4705d31f72d563bde8f6243bdce92f2620b3efeda835ed17d853e4d62700a778cd7a19ea7731a2da1d36b3e8f7c55bc12be2195f57091e8efac6a5df385552df6b89e41fc7c3f67ae451b47a656b8d7b3868bf0590b185e3114579cd270e8a67ee5a5c6bfa7fe5c32be2935981cbdf64a9e1317cd28367a6d3d2fe29c9e99eea9d373c1feac0d8e5c409365291fa06fb4faa43d37e7b562c55b6018f2ca434ef8c97eac6b7004f2ada0d7148267bd0a5c676fe18b37f42f3cee89cd14e158f2d1294c76d15d7cd13e5241be0d3ca19f65a235e5dae7a27377e2e6991a5ce74ff0fa8f3b2ee08bf1b519b07e65a53d41534ba8d2a2b895d4f527eb8a950e3c61daba24d05a953ef6f48579fa717f266a78d6d0a7cdef47f908be8fbe70934e2b7ec3fb17cf916217b8ad6b1d431be0d12b372b9200f3fa061ad23bc26bdbdcc7dc2e02ed05e8951eb49dbbefd6f978e29cbcf9f91424dbaaadb7b258fa56bc4f9e3afcbeeda63b1bfaa5e530033e83f50f505325848d1356bc3bcc7a189a20f2455159c4755dcaf081b98ed8479f71f31bf941fb3cca5daef9dd2a28ad30256dc67257f9a6f73288b7d51bc72351bf23c6695dbb30c91147b5dee01df82bf6d3cdef4ed6bedebb07c2e1dfbb0b1fb147dac3ec4c5a0ceb9a3cad547a04e7969f91d5e60405745fc60b9fd7b9ade36552345a973bb3ca5fb173d46b3fc98f23d9e8dff21a6f9b119febfd78403c7bf516efcb91bcbe37e1ca0f8bdbdfc03a395a13699078e9edfd4c919fef3733f616d53194ee4fc65e46b76b2ac93701e919ab477ed64b9a4d07f31dfd6fa2f987e2214dafbf5316fc5d9a9ba8749e70f969dd05daf37aea37feb256ae7e4f6e7b2bd258092a5f5cc005f829cea1e7d8d3d449efc1211103c242a8e715f5ae5caa6b14b4261a3e9b15d74d0bf9a0fdd3c071a6f8368646596e8fd663bdf79ea684af8fb0be44b4033f9efd699cc4bfc267a9c05af2998d6785f9e5d4e4b9edfecba0b12bc581e35de290764da248c72acd36d4f7c8657b76bf25c1017ae1fa6c2e6259dfe8fce99947102ba1fb00b20e5ec129ce5635b40d498b9b7af75673523cff09f43d0d165ce70c4aea25589b01e3f7f262031dc6ea25de332f57b87dcc50a2f03d1ac32a3e128735870c0ffc12b7eb48690fd5a75885a67730b556ac5bfcd0e7e6426fa2c3c69caf6a59eee3710d0bcf90e6eba71a569fd33803122b0627e2fa73331d4b13092e41b8f4578c03a5bccdbaff00af53eb1c118f518da12d93204781df7515e9ff1e1c7cec9b009ed9537c3e66607aee473a29b496a74bf6dbe8f50872f8fad22cb4622d7ace2d1be47f5ae3817cdc12e2d9f05c61409e2ac0f664b81797782f46ab1d63054a9dff4cad073bde1a7dfdad301c8e88340d32fd4cc14dd1bdf22ff24c8c86f1053abdf9fd68c5dc08ab26ad2ff9020cd201b3ade833f1361f267f06c65680bf9f11d6d55b19bf8284f0f5a4bd61fc185792b14d25b053f7344353d1b93d27b427026935bfc6b5cf359eee3fe4a4bba37f9fcac4083a8a11e70bb9d43d88694adec053e2150405f577f55e684c7f300fbc35ddcb7936bed7d7a2ecd505ba4cf3344be89eaae62bbe045ffcdc1786f767036b61df815b00bf00f5c0b5eb2a475f3657678e1f0bffc170cc7fe22b710f5febeceadae0e84d277a06378cf782b5752e1a3b9b87afc98eb546826d427504712ba8d60746b2e23920b8df0d7286439b672a538fd9a5879925f53b799e0fad34a18ca7f9247636be42deca39e7c20a3f1803667a7af93d6b0314ab31fbae549fdc0363cc81740efcbac922873fd1c0f5b01f4b70264aeab5e8f9b5d0f7c4cc338933423323f5c87ec7b9f64dae5c5994d739736e8f5663cc2606ac0bf3ee98dc1c6b4ac908b87be07024d7cca48927771bdedfa72b2dcc8bf016f93debb67bf024dcad51bb679aafa439f5a305e7fd99cbaffb8ab701d75303daaf1aaff1d49b7f17384fd87be27d65343f4e279dc348e9a0bf17acfd32044e857e3fade3c078894c02d6f2a0b3d379785bd199d2ded3535b1b648392af09bcae8d4b9800fb59ecb0d62dff3daa43b7aac31479cf5bdc48c6b053ded3c478f684ed5635faf4c0ffe4f56f5e4f33e6d02a4b3c6b5f40158a8514bf647a9a4aab3debbe9cb849a6caa77a71693ddcd15ce87887b8a7e80c976d7efc062f37ca29db1c7adcae89da818f545b2b054a255fcc291775cc73f13616ecaefa22ac313b086fea31f582fb3e450fef313d1f3f8d5ebd7ede475d973ef2b3cfe5e792fc619e97383b568caf612e702146581f7341184b4f8d0c768fb851c05699b97ede7c993e19eb6aee0e5f466b806adabb25e2bf22eec02f9a09e99941184bf14471c97e8b6b3a57e6f909f5e4ea337ebefd6d959b141bbe2747ac2377ce3837da530173c0d2ac7a33b3c8f171d4f511c823b89b814ae8949a7ad555c0f6cc8039d5eb40732cc0e755e0496688290ab8de8b08fab805e6143116ba9a84df7a880b879fb73b4af875fbefaf5b9a75b1614e16f21dfbd5f0259de35ba7b30dbcaeeae30ae4e97a06039fc2db7e656e78d762b1e3cf09c6dc5f466d6b72a199bfba9e999c8f5cbf016f1588a5fe1ccda5446f79653177927122593ee45a6fba70f8991df9777e2c182bedcf7bbfa999dfdc737d7ee4ec1de1630e3dd058870961eedbd737d68a7b9d85c0da15b82f438b67187fc0845db0fe82751d9ad76a7c97ee2bf07731b6ebdde88c5e9f95c3d19acf2c709c62a347d89e9d21ce4e684e6a1deb236303bc6c6797142b03d439e2a3dd4be084b5fffdace7935a6b506b8d78845fa1cf2bfdc8e8a6d0dff5d9adb9a111e274d4d68b3a57301e1fa7187824e27588b48d2dd0529cb49f05de5bc6fb7fee0ccdaca1f3f2f90d8c59c7b5feb68e3adc7e44e76de221777e822e525211bf352e77069772464ed62c390f80be62c63cb94b35b9e284d6f29a773dbaca5f727034747c57ac4b971e5193a947ae2d95ce11c50cb39020e5f34b49ddeb566a8e19ddfda8eb8d6b7ff488f08a984d000b99169b055ec71ed20f55118e1877bbe2fbae7547f55e67ee026b04bda79881af74bc57bc4fdc14b3b0ccd450fd98f2d7553cc8ac4e0b58e393fdeaccf8f974101cbab85f69ef89eebad499f6413de0594d4638b780b49f44d03ffb32f942e79a7cd13daca406169bb51706e5f9469b482c69063e89acd0668cb8d47d07e142d3e74992f725f5a8f303f75b9ea8172324ff37f8468918b8373de5cd97e1e7d4863b64ae45f31f74ce97682fcccc9c53d117dfa7397114dd5c6aef8b0c9ce79474d618370e1d59f09364a6bfe3ba96cd4af38ce04df4801c8bf332e3032919efc23e0f23332fd1d8b584b8d484ef3138d068689e5fb6c1f35b9de206d8bb4ce3a7f59964b46d0bd19b9be9dec679c533cdee6fa5d9b363c6f7dd0f88f36bbf2798ed895d33ea9f6bf49d25faf20db02d823d3742f428de13eaf1b579d8bbe158eaf7e9d993d190c7dc3b233d13f253644ec27ce09ab9d9d2c17b72891a34695077f5666b12ef43df4ade9f813326ccabee57dfbb491db08fdd06bab9097a4f1be45a19f2078fff5da2779675ff0daf7deaa7ea7fcf4aafdd9331e998f1999d08f2b70c222be4df6bd676d530ce947560e9f7ad7dc1b59279ed7a77347a560b0bdef99c0382d7555ae147c51ea6fdbaf2f98859bdefd09c5c1a3da70abda18e2b2da031157cc41a677064bcc3c1d4eafbe4cde06a6abee60760d09ad9751dd68cd69cf3d1f7ebf537857f469edfb3ff5e82fcd85bb09e32fdae80ebff39bc68e6c0a89556d8c58273d70b422c0d69564bf768cdff9e1bae9ebdb08c3667a1fb1fac3fb003eed0024e59be9f7aafcd88d301ff46e6d050bc74256b4adabfbf8c1e055f7771389bfbb6c78cf542fe64297cfad222305e60ddacb264af652148b3c9cdd3fb08fbf0937b2e32ab4eb81f9724ff7e06e7b79f91b93be29c1cbc84fd7fdb7c57fb2d220f2c1abee669a4eba06e4e15ab5ac7964406e7785f7a89c658ead9eaf5fad77d4be039684ea0fb193ab7267cee46e07c5103f572bb1eaa7af365d675a71f7d64ac87f90efd7b1ab7920f36c7a4b49b7f4d49ab21a0992f617b1f999ba3d293ad6be02d664ef2e562703a63d2e3e1f788ee3d5bad8d40bd8820dd56ec794e58651b39c6059a3a5988b99f783731737762efcb03e72e65b1410f5fdaccebaa06827b4de46baaf937a2af5d39c099b25d52dded96f9097c00f11a3bf6d3775e7ce3e97cd501ee396f73d0d24db2c65fa00e28c94bc2ad682d4fd635f734958901cbfcc475eba7d1b0a598e1541d66e72dd1be78787f1158bd3e7a49b37c8deb7f67fcbfb937f2feb3bd37d0b1415faef9e2fb9539f7edef1c50ae1cb2361b9fc5acbb69996b9b04e358268778771ff63f7fa579a0581b2af84a4c2f28b40cd64befffe812ef0deef918ef13feff09303a7cc6d9fcbe7951be77f78b6ad5a515de1176ef348a3bef42f3f7b6d65056e09523eeadd2335959e1cbd2e86694ac1b75c1793089a4b0ae6b46c26254f87d84f97179263fc43572afe8406bd31fc4bb21ddc34143fc3be8add0fc2cbcab7c5c837334fdd3ca228c69044e5524c32d78ab3c8bbec45b95ebb9fda00c85facd7a473cbf3da236fc88b7ca78cc2f74ce8c3c65845e0e69a77c181c1c7bd1a157b1d827e4fb979fbc850d4f8c823515dfdf2b99b871d1f8b3608e79fd97935ac164e997da0728b1e32b1c4d09ce8689455ca35f54006f10ab8ba3826bec21f7ded34bf3cc5eb6b371efdf480be42d27cddb46a04eeefe56f3ac326bdf9f68ad1f7dc65ef8b3575678a6b3bdf39d5a37a8b9ae75e975efa4fd5f6185a72534a097dc8fbe989cf6d279ab945a3739cb027f3140cd938b7793576625f76d74ae95e543cd0fa27af374e6b36b3611e04edd73ffc4bb9ebd8b9cf33ac40d4f58a15ed7b4875ce0b3eebf247b9d28d24a5ad70f56d5e3e6a23f7e563cd7eacff49d7bf640d13dde39cde3cecc2fa2f5d43ca0cf803355914e5426464b9ed1685fc246c7f56b8f51c3332e08cf41fa04346f246fa09cf356703df9ac5bf9e23ce7be11eadbd2226d0a558417ae411e1d9b3564885f4dfb90ce0667132c9da8d7331173d258f1f94cdbae1bf8fa0d82e7eb67127a25f829156b44b4f16cac5cd97905bd511f51c484bf0f90c3e9fa82f8b9e80be51930bbf68b53d21a2ec147c8304b4863f60d50e20c8d1dd2007730932d184f46b32b836f3c1f830e5fa4fb027aeedbde4739319ac5e55acf256c3755079ea37ac973df9b0bda25f2dee77d9f598113d7c10b66b743e45061d5bc403feee1ae32e735f76f83d192bc7adae7e8e4b7b14b45141f8a6024d1cf2e8b92b965d38a668d1ac388de04c7f112bdaf82ce466b48f1f61446a413e525bb61f2fd7cb7a35836f3c8fecd9a2836fbf0ebb5ae82b9007f635eb8277edf52c25bfc92a016a83e183fa77e38f3801d604f74372d94656a85dd81750469ee5824dc9b2e70de9f9349c5afdfc7bbd3bf78bd729362e3630d0ec8dff218b7f736ad8fac1f3f5d829b1cdbe1abc98974bf579f9347ae114ae2ab15348310777c7e5675c2fa7947e63297e393f3b73a843c8b18245e6a7c4574af6ffcaf74cf52538bd93dcf62e5e605ad1b5593fed31afe5411eb0e6bfe5e60742e92c1c65b34ec45a9247e83c31afec28f75cf5cc7237c5e0a5dfa9cf8be8315ffdebd6b77672f73bd932f3e2f3013dd18bdb549c87ca7bb156aa5cad2b3505d33af2646ffe48d7dd617f261805a562c6be930c6a17f66d077d36f15ba0fddb8d9c4f5c46ef3fd1cca8fb65947845522aec3a5ec7ca1cd3ab09c95f5c03815c2e95d58cbd3b78d3f1ecfffb3d2c77afd88f7c1c7df7cde53ac7ca3a581dc59cf3088c3b8b9d3185dc200b1eeabeef568ada83a613c28308fd28ef79b33afbf75111a8c9ac6ed66a5993feafca03878d38918755a57ea039c13a3539041b35dffdd4e58d3c15d58a46d9814c968ddcd48f8da5caceb7dcc7c4ddd1b516dceaeb997acc3b7dca187e57cffbed479e0b9b3d6e15912ef66cabeaa4be82011364c917fb3bef7911def5df92dce799b3096d55cc06f7c29c377837123bc985858848f6feb8f2b9f36bdbe3017b54e6e66745b6a8bd7e95a86afdf3e0f3896f635c45b90acbf8b7519bc20177c0307f28362778fa3bbab02ae0baf6a954c74b5caf8deefeb7d77cf559ff35c670c52ae1d7cead7e6e6f5babede724ccd4cbf435f0fd5155a175663e275bda6744e1732ef226e9f59d6aea9f61adbfc99d65aad7d55317b630ce90c58b6388fba9963d67c72de128de117aca0d9dfd6236d4e2cedf3caf8e9b096813ab4f757cf039cd3a779de3a96aedeb0a6c3aa3e0ea1ad7626ce66e5a693c308795441ba8c367b596615f18f1a3932bca9c9ffcf9bfa0f795356f0166f0d9676c81a33a8299b69a7a71ba246d1cf826a96208ba07bb4b8c59babea1dbc0fb170743de62deaf0a2f763e18e32fa1c3bbe08acd720e9f8bfc4ed6eaf5535467312fed5d03b22fffc907eaf9e710e69df965154f7f95d424663ce9536c76f78a14bb9ed742ef4d96eff81d775623ef57237efaf0d6f518b5f881962c63d71559dd1677f5e32e77ee04e11037fc1e39bb8e9976aa4f57f745eef4e80a33f710f3e1b84d0b5a84c2e83d7275951d5a47dba19ad8217eea17a711b33c7819ba4f7de9a6793e0cb97f4dc5d453e6dc1da1716722b7f853ca12c9499290ac20570dc273d248d1bd0bd022f9211f1c4d4eaf3ca5f23976fe988f2a994f101db2a646c2df907a95f861f062ddb6cd7507f580511cf80127e3ff043f34bc0dad3ecf3b8a138ad5e35ae2cdf3c0bff81e7590697175f9ad112bcdc47277091e7509d992b07582df6f83c31df3ceb3462b1ff8d27a0055dd70ce78f4ddc507567f47f31cfd0b98fe6c6569a3b9fe93afadecdeae057c5e7bb53b136e827e333147bdbe59b5e7d4a9ab2d08e7635464fca41e229e2974a31eeae31b2f97598af4fc09f6bb41fb3ee6d883bd6f07eb4e6edf3c816a47b12a7d0ea9d775a1413e821841abf8e7e4a9b97ea59b8c642f883791db346d87e6ebb7b1d0ff2cd765e20afcbab6dc239597aff2cb457903e83df2be3b1d2f8e02d7f76bcfefb0bf7c61fa9ffee2d7d75664d98b58c89d79cdf8f840f7ffe6233bd9a47620ec03de15252cc5d753d9601d789ea7c2faff76d34880dfffb875979e1b27ebec1143e5ad1fb1ada9e2b68636799d0b866b17b182445c37dd5336368d20cd892f3fd68e61bbf493d774fd56ffd3b2a094f72da078c47039e5fc7082f5692e72ed8330abe630aef55e725e2ab2c02c60ca948fda65a2e73811597a77c4498d5c8f6d9bf46eb8324979273ebe725e65a5c6ff5f47c8115398ca77dce46c17943e35efdfba00cf1bc757f49eeaa5165ad08e7e4b067a7f9ddbf628a898af12b097b0f51efdb5b9b19db950e6d09bcd3137cbe663a57a2cf3e55fe351e5d4c9251c7813c42a74cfb59732fedb5d3863e32f7a1cd7f36c04a6eae73c6c6e9fadb1a23728e9f8f8ef1fd1a376dbee0245bc13808cc93f5e7716fe1a9ddfbf196fa74dacb59cf2fe0a563ffd7553eb2429f321b24df67e3f991ebf6cdb759406130394f1d46a27f46defb1d46ac7d7ee1b8e498e140034d053f601bf4b931d13c1ae4d88b3aec5e97423f50df578d7d275f195363ca4f8325ef7aa94f460753c937d4781eb8a34f8f16f7ef42cfcc4fcfdccbc03c28f73f7b73903096ab6192de7c6efdc7cfc56c983963c18635a54b2b1c98738735a27bba0b2b5f9d13e73e062efc90d09edb4ec7ca8d9ac4e9b898e4ddd0af8b967bd7d424a2163dac19e1220c57d368ecf16ba37751875e3468468b3a7a5fd895bb9261b828a8a791ed03ea2166c9281ab0f7d9d0672dac8cfb286d1d9bc7f048640cc6e61978d10170bc5ef97cd473d0d48eb5ee31719d1eb47788cae7039c1bb30a7c10e13fc0c7cdf47bc347cca2699ea7ea6bfd0cff6e4ef3a9ad601d0e678eeb3ccad918f8b122d0b127cb0f66b688da5be7a1b9620e29f03b178d5d98683f2af8bbe873337347a9f6eade8cccef2ec065ce9bd15a3f17d3d701ee065a75f9903458061b6f51a0ae05af3edf6f025c0feb09518e49e7d11dd52b7f9de2dd06da17f610fd31eacd3bc3d17a87fd9eb98dc19a1216ea2bde6d3a9c627e44bd2e64e4f07b9206badbef3c17cfb2cd2bfa91494abc61de0f8384fdda9cabeb69ebd6b4bb8e0d3e53e32ebcf9b69974fcb7c64decc34bce1aea63e60cd9a348eab53e5dfb21fdbd483c457ba359e17a2530ac558d5c42de67bddf9ce93a1ee7c1d28fb9a668e34a141b3fd6c68dad617fdf78996ff07aedb34fc197be20763feb7a293f7aac0b0f8c5d869ae1a9d27e4bca9df921cddc32358a0b31e8f1af09034d3a07deba7ef8ac2c331f18749ad8ca4df2e4bdfb9bddfe4d6ba4c9f170607ad27a5ed8dde3bcbbc7bf56fed57b3fe33a98ae6af0e5e47d007e864d3d137117ef3677c6c3417f2ee50c55c701c5f5ad4e7113f13e79f869160a3ea0959026fc76966f0cc62437fc3cd24b58eb3972e7dd9379a58375972df64603fc9821a6997d3170b54628f99f1cbe4c3f94f796b4ef082b25cef1bec2bcf9decc79e599f2af850cefbafbdc30b741ac7d70ab34d74aef313fa33aa7594dbe5f57b7afa4e1bab6e70af5477026a4f78ffdba682685d1ee5f75b1a3fb4c873581b416d76bece8dfa939c9e9ed3c80f66b19cb6647f5f72650a39317174dc01a4b6dec5596efb066745b27a8f62c6c1efafc8a80fda9a16f38918c5385eeaac47366bec64286af15d7eed75c2c774e5e0d0f2b9f3844656edff1cc009f2f22ee5be7ec9ffc8ede94de3b2ace8f23d44e2f711d5cb8679b5951cf870a5c80c14fcfe6c4b3b1af75b72f04fb8e68ae7e87d131bde51458e5cc0a266b3fbeebbef72fea1517dd79c9d8916492dc7d9bd5e4f746fba5da6fbe5ddfd231d7f7b2fa8e1d70194300beff64e1434ff56ff6b1f9fe2278476fb4584fbe7fbfd66aa1fdfefaf3f7dfbbc945f9b349c5d8589b7d1ba9d769b433452cabf18270f2bfe2267e8fad36164bacb7b88d1383ce6fb5fc32d80cad67f77067f80a6deccf8f9a13dc9ff3cf399648e280c94ba067ad9275d27dcc736b83db55b1ac28deab0de168ad92f5b7f4fd445e26511b37ba5f5a1c0ce67cc53a873ac7209d54ee9f66e9f133369e6bba56fce16f5a4b001e8de08ad29edce08c49a04ff9b422cc789412c62b56edb5a9e07956302ed97ac33cda95068f9e8c4997eea8fb1fa5155eda7b1e6bad41c6561f905b076f31f7d3907fac6a8d194cb85725d5cbd53d975aa7ffbaa79df02c670f7f30791c50bc1767eedfa483c3d8f4ed289fcabb7a8c7d0cf4ac92e25b4d1c0cd39f1a57a81dfcb798b58d0c378f625a1b57748cbd34069b26829ab902c278462a899e4d744ac053594baa7da99e105fe080870b9e1328f56a30b279837c48bcc7b5c1747e757fbf87078ab88b9f19d7235e57b599877f9ab5ce1c24f9d71baf15990f17f0ecf6229caf8afa544d05dec9cc675d7317b5cb718419f886f1e93c535d21a629ca1333ee25753d71ed47ff607815a67f68eabd3be699568637ea529c38df7b3c8b84169df6154cb4b734f351fe3aa5d099d5381f7886674530462fead4f5e584c63c612f504cb1dda6f739612c959cf9bff9b966b48e37ec01f036bfe98ba0a7d7504da2d0af56ba079814a547ff7e642ed196ea2cc6cf89906732da2343c643a3193a68389fdbacf7e4d99ee4a75135a846d7d75bcdb5c79f451c82cc0a36eaf90af7481a638a39fc7abf0fe3ddf086cf2659575b2dc627ca7d48e753eb7df5639d226dd202b9f002b39341bcdf3cde6a7d2da4eebd7b530b733cfc56b96bdecd7c97756dd49cb91c4733ef77a073656f0c3632bb709e1761fe275ecc5ec89b11d66696e87d199d78bf47b8b7cb1a5ae4f93df068911da3b7c0b3cf5889907d6a8877e773adfc15439f7a25f19b2e0d63674f313468a465e919dc8c67bb39fa18453942ef66805e67b0a6dac1870ee06439a98ca62bf04c9e9a04c43d621f60e6140cc07d1b84cc0363ed69dafbcc85cb0def6cdaf7dd5d71ec3df7fd018cee1271e5d27b4ff28c655f1a9e1b6b1d1b1de8a2f930cf8db827bf9606fbefb2ee9388cc59111c79162d9de187c192b47f276ca00f1d9512b54f027cc776defd37bce71a37be04d0366d183f72620f46dccf2fc6f34692717c8c57293ffbbc9944b97be0398843616fdee0a53126dc53b0898cc7ba79af58597a6d4c56be9ed74e812f9ac42ad0f8a2cc6f8ec0a6d5f3767de66a37bfbe2657724f5b6b4edaf0bcaba64b9ca78f56b85d6a4d4ea17dcd62e3f923f43a58b38e02e9d678990fef51c99c6fe2ea2af26a0b94ff17d62ccf62b42fab57f9e1bb39572e1b8ee99b5941388ea47047b3b1e14e7d721f8f75cb67b2eb95d2f5985ce9c9f052594b44b29ebc0d4e1f690de4db20c75eff325e3dfa3db679cdaa7e38f33a53d0e09c83778c3e6c1b53e04f2a0771a74337d53aa5d40b8cd2ee79b57b608618bfa51e0af4450ae4fd8a7b7d7e370ba1f95740fd14011d0ef82ba8e0d7d260409313f220f43a5486df3c58771e5d344b6ccf10dd8bf2cf8ab94103ce4d9b1cf8d20b7b29ad8c46c7c399ce01d2d64fa4d6fb3ab4f1e9a71a6c4d31cdd4606bcce3b8065b8323fd0f6ab0633c70f56fae7ce1e25c1caecdfc9166f3994a30af0fc4627fd0fb3d512f5fcb4e0ba6e8f5c57e813f9aac1bd2c0c9afbcf7ad3b8311f8fbfc0cdcf12e3fabacabfcecc3e467f53bf79bb9ff64316670c535730ebd05a55e09f7120de241c598b03bc42d51f973c610bd1b0fbbbdd1f4f8e1ef6d8df7c3df0bc57caf27511b6c05f208d1c6ac8cce70e881166dceaefdba6db34780e3488a3298e51d363cef744cc3cac468d2de5dfae295713dc6ff8f3c4af5acb5ad6f328ff345f1decd4adbefb7751f65e180673f80c6856a2cfa4ce1702e9f1701ffed9cea9a4adcc59811cb01dfebe617f9caddffa2defc215cec86df754677f32bacf3ca674fe8e8133adc6dfc7fe36b555457ce588beadfec2bbda1a76cfcad6763e658fb76cabe7f9849cc914b5572836b12efa4011164e63ee17c410d272a6b4e6b7cc05ec9d507bfe7d1e19e06c7d8fb2d6bd4a7c87d742f210fdfd0fbb553e04fa573aaf9b54a06e13a385cb0569cd86e6beb3657416dad73daca9df961caf3f46ed671f259ef42ffee0cf3837cc8d8a0e9529a1a5ecf3196882b5c67e9d729f9697c4b58e712f74215c994f55e91ef5c52a3a5abe77b56ca7edaac7bc17a1c03f161623fbc36f97ca82c5e23c232fd560bb3af41083f497f98b117e3cea65cff22bcab9c5e9a1cd9d379e5ae024e5fbd703ed17dae623df513efcdd4d94cda5898660aba8cd1d9cc8e594fc481a66e16b277c373cc1a869ca3037b40b9f96ac85ae16bf98e1a2bf9c0ece1dccdb7da675791a71ee995696c31cdffc807636595e0c6dafbf6ac525afbc3e85010765abea0d61beadec9ff43de9f6da7cd746da3f029a9311961f30649601995a3a64a427b20318291c0c4101b38fa7fa8e6354bc271eee77dbffff9d6c65a5b193142a8a966365793d8460b99ea22f63fc0278c028ed9a9063bd456b7913b09bffb7f69890f8d7fcb475dccaef3d57536e97de408df9533ef29bb896f540b532f11f35bfbfaf15fb911c39cff79ae806788468c4b955952726d35ebb9804a90d79e174978bf14ea919f23f50748db3bcd12f68abf104725911b7842ffeb3e531c81df0b46cb6e6ee492f88e3abe275d3caccf593d879faaf2af72fa69ffc8cf0d3c82c0a546cecefe4c39f5e2d55c6cfb3c42bfeff7644ad8848835d289bfff9accda27b30732260dbd3ce6382cc07fccd8c35bda367bf5c874bcc27d3f70efb2db7b09971cbd715d4082b39db1e7829223e4b8664eddd7219a117b796dfcd3b03ff391f4fba88007c52c32f598e0081f8b79ce6b24d6e04ac6c417c9988f403d914d13391c4b99fd5112dead04f78334e9dbd98ad6b40facad17b3b6e647bf9b832b8bd75671e1be3c3ca0bc35c7d2c524641c047011ef9cef573ef4bd7270db9432311bdd87bc2485fa666a34d493bb1aee2dd7200af16eb4e20e499fe33863e8ff4736efdbdd1e9aebda51e898ba2463c7e6d4af48eefb365ab3e07f5753e373681e59b70edfe035aea0591c723cb8323d91b1d137be8b6fb0af94d6a3597b2534d513058c83a375ddb238175ad344f901fa80f292a18f8e77fd1aef26c4c5956a6e7a841a63a42632271edcb210f87e6dc1c321c5dcbac6d74bb9f0ca69ec1e6fdd7a4a6b6eab759fca82b4b94bd38fae345fef2b8d3e956d59bfe6ae579f66c07cfca12d339ab3c771721d6a6177719818e844371673f5175ae3577fe74c3d5ae5dce934cbf61b72c01f15cf297bf96eaeb9c7f6da09f04e1239e3069c635984bf58932e76c6c040b1c7f5e0bc727cc5785df05e9ee9e3db49628d5fd3f45e9f426b1ee64bd214bb6a1df309eb9847bb09f36b59e3c943ace1714da9da4d185f64f09322603f28a3ff5ed4de847a45b7d6abcc3e25ae91cf5ed6e314fb1b7b507bab866b64e2b5065e25cf5be077b6cee09a4bad6ba0ca3db43b99275ed4bb60daeb7713ff145a71bd5e36fdfd23222ec97336bddce297cb2d6984afe63ee7f96a11045ee6c48cf9271c8ffebdf1d4f8e3dcd58d58b7a4f61633e5cb594bd7658dbb311524fee895eb6c991bb6c01dbc816bc61efa17ae392437d6bb882e9f7f27d17d6ab178b2c2d7ca32b89a79124caec8dbdfe27d4b382abb3e0db0c6cc5d02df2cb0c9abc0788b85cf54ff9830ce51edb6586bc1cdd13536c2d2c5ece9f7c23ce2d3853036e281eb8e6bce3f9a7044f52cdff42637c13fc4d12b6aba1ee7185486cb1e80eb78fa48b4efbbf8151fe0c79ccb9e936f699dbaa0f21fafd0e2bf9a5a9b65116f10b91bf3fe33a7d750e1fb8e100fe54580be9f7d95a4237b8a0f2245ced1e3b202a32fa8ef05bd1a011ffa5fac4bc47c21d6a8afacf01b30df5be6c7d27b11bf92f9b6efd575f323db4e875a39b1a571b6845f08487b32d3180dd5eb1e06e45f9c32f6d0fea7c7688067493a0ee710f1dd1b6b32722c1f93c6c84765bcd3e015e8854b9affe4f50b1fa789ba4d52d6e38ac0f54be507f9231501df53195927686fb28706bfb3a08ca4853a0a7db66e1e3ff478b98ea719bceb807d78ffdbfb5d38acd7525d13f664fef49d1ea71b714c34ecddbc726f34a1fdd04dbc70ded796d524b63eae39693211d659d5bc370495d3d7169514cf55233e50bbb1cd35b7860720f4fa7e13e5679c95be3eed412116f90cb541e6f449fb94e9e3741d5bdf77c479643adeb3b7d2276dbc62edbf726d8df011ce765a432b28e758499e3f529e6bbb04635e3d602c2d6aeb556b02970de7a347e8cb9ed96b770f6d53ad97a0fb272fd42fd57d7c1aeff41cdda367faada8bf3cfbe1a5347d5dc44f18e7d011c373d77ee0b30d7a8492dee139de8531f759f2411fd38cf9ac8b4f745fecddf4c506633e92c937d639f9eb98bf99e7f24b724c40efe588ffab55cb783dc13e28c1aaa5b99a7986cf99ac9a07ba2faaf558f1be65cfb15336bd6ce37c34855fe1af786f47acbf9675f7da34ddf8788ddbadf15d307a293a7f12bf62cbe0247db33e68cf02a37752706e07bd4fef5986ac735372df95b540973427dee32e77d5cfa43e50bca458a7b85d0fced7ebb9e9dabcbfe6dabb73264f7a95845ccb19e8ee029f253487c57c47cf17256bf4b415af8b3978e039fc732cf13b31e3c4ee7e83fbe8db6a703fa5d6aa15cc5fdad6fe1f9fd9bdde4fd9ff968efddb8f987b9139d762ecd7ec9ef370e51aef823ccabcbaf96fcccb09eae567aed52c340ede0a3c857999b925f45ecf36f9e88815c646d6e5828409a8490bdc01d7528ebff1f93692f2cf7ca7301eeb33ee65b16ec041f21f2df4a7d4a6e17b18935eb7b3bc00dfcb5a0cab27c43eace1cafd984d138daa5e5ba4d4f1c12130b55fd2f082f792c16392ee6036c093b3be248efb114b754ae7c739e7a939bd5bae0928c201241ee38d96e073ca14181fe3d32326b175f18cbe0bfb942aad9d103c03731b531dd84b5feef79b27e67db9dcef6e1df419504755fea08efa100107dd632f9abfe5721ac39dcc8f46a712be704f99e9e575fb4878ccd3bbfd8af3288ea19227dbf8cf6a3db0f8de8716bc7a3531b10f7c3e758c4e7c0faf6e08eb9d58afc8e747882f84dd73c3cf344f08cb53c6784fc9bc46ffebf49ef11ea8c7e668fa449e1993d4d98ac52c98ac1ab1636de7b565f57acd79eb491e87b6cf5a555afb017a280b49f59584351096f059486de48f0e6addce768ab1bd50943b310ecfcbb1b6a7c09b67ec6f651f79ce617c8e99a3b842feb0804678c6394fe957b837f428f95c4e82d8f77c00a66ccbdf49a7971fdafbdb9d0425e27aec5901c5f291155fc9db77dd086f31ab3dfc4d8f6f21c584bc06fd37f895cc36bedeff84be4ea59ec8934a799f8ea3faba050f595d8b62ad9a3a7ef625e1fbd2f10fc6fcd1da337e8d77131c27262b4f71eeea71ee8eb92f16b3711c3b175d97a69a69639b9cb2f9696a4019703addbf75c37d0df1ded758ea495a180f99f784f765e67149cb228f07f147ee8e782ddc28f8bcdfda17f41b2fc93d9f11eb6663614d5944a8ed4ae6c8c9f686efcc13e3bfa0bf0bad1afcdfb9042b9b356fe041254f0e9f771d48d23c6ec237e8b92c802d3924ca3f65d2b79319696d6de423d71dc3855bc2473d71a1b1a0ebadbdb7b9d16e0c163486dee2a63d80f779ea626eacffa7e4ce1f3c98afa5e14b08133f3b238ff50ed6bb101a8e88f7e4f9ad3befe7ef0cb4d754d580879bb25e5ff59e40cf2d3e8839f7c6b0464e64f693f3f5e2390b8c175e75638d9e6036d4045737e25b28bfb5f87e9e2cc413d7b13e36c94786439a53ace1995e51c6782df52b7e393f183f8f3deaf77679e6f835e75e48a66b0aa40d750376e0164cf99e17eeb6d74636bda06ac4ba674fdcef56f29d7957a83d1b9cca9a795672ccb5e8c91fdfa17ce821be25b86e9f39f6127d1d68aa0492f6119ff1de12ebf447827c1dfa332134117cf6bd41fc4b63da0a2cd61c4cf3d6e0abfafbc5bb414f26b1fcd357de8e757f6fcf1c776fc0ad96b87e738c55022fa138aee4633d6069716c3d89ede4afc7564d78636d10897d5d05e84ba286a89ce3c8f4900e0258ac165af53c7eb147708d9b3d1fc14355f971c57e0499d6dd4adee1b77ac4b3ff15432b9eb8af228d0daeadfb1dd640ac179cf7a45a0b9f6b69ea573ec09c263adfd2eb9cc95d561c472b691b1d25bd6e37f0d02fc34d8eba6a36810642325db06eb0fcee68cd6f5ac317a46fc4bed5743db5affb425edd28c95c8ac4f8cbeb78f15e4faca839e678c07586b5eda326b8559ff9fe1b157df2ab3f8df47a9b9fbd5ae3cbfcf778cf7ac7d6d5d49fe65c4725ae7c5284ac670e3e968d35be1a7aa633772fa37d0e7ddf1cfd6ef68d57c3efa8df0673c65c9942a1761d7cc0bbf3153a194117637f3ae637f10bb41e74c05ee314b3dc798d275d0ece395852b4c008702f21ba30f729226f16af327a28e72dc6d237c38f52f06c2eea52d77434070e7d31aaf33f6fdac67805926ffec8e37c94e2b40b7b8e1b1c0c746593a8dba3d1d38d0e47e3eb82b1f10dba63dca30d37057470557531baa3b7f01bd6c182ce47b575fe2d65ddf399aa261e195f42e3517e3e216eff515a3f873dfa1058bbb9598fb47e2f79a2d378fa005f557ce3f863c5fd06553ff075fccd7b3cb38270d57bf2cf1781d639c73c11475e434b2b3c257dcc22b03e0bad538bbe77ead8bd47b9f63060fdd6ef7738ad8505df13ce49f2f3b4f61ba3e79a49d25ccf082fcafbf779185fc579f09b73c2cabac3352cba3997f4b9e2443ae0b3e682ef5d44c859d1b7784a2896bdc4bb70e801437c64fd6e7c0bb5da6be2857d7e0b9d29e1c45803f8b3f19b9a12ffa886368dd1bec9ea06f3eac6b83283cdb831166ffc8de2ebea96ec921170fde5867c58c039d76bdcb5cfc3710ee7f863700eada3b27649d736c92fe0210aeedf9ee3c331ecfb16367c30ed499c1fbd3fb0230ebfd3f307ebc548c693e03762797e58f7b1d6bcef4d9cc11bf53fe2c324600c0baea3e86bc58c69602c57fd19bfe155fea3c5fd6781deb4bc2531e56d17ae45fd10367f56c68479dc4e05f6d08cf0a2c0f8b02647190a1a8ba65690fb3eeb00de08efee33d7fb1aef42d6307d485eeec627d77db83e47d8849b0a62e6b3237e40fcb2d3d705bc108d7d738f8b4db3bcc3ee6c50871a6077a88f92513c61b4336f25e69874712eb131759ae46634cfc1391fe8d9be53fcaf0ec60b64d63e123e37f9a5df47517ae8bb9fe33d7d163b465f1cbefed0818147efba79bca6a66ea9e3a05e67bf8b779093e6f9f689fb76cac410b6e624eb7771085af07c1ef17dbebface6b1eac2cbd42da72bd4b9b86730c0ffd0faa88f6d2789e159b3078d00ae22c8aa76398833c6e8bf5d2e58ff7fc507c1d784b828b2ffb8a6db64c63aecabe63f5c933eb69d247acdd775a05f9f710edd58e53e0f8f55c604e8fd0975e467ed7578d61c048d3161fd43e481e4d9759e96cd8934d4f323c592f6f15b7c35759924966d56430b3df182e993b31c629eb88f71a47c4f2c93a9ae1fb8f17ecbd87ec64982a711fa2b6070ccfc654db0ac9dfe31b7efe6d9b9cbc73e183326827f783dd273e2eebb41b7076e833fce47d8b1f9ca7fb4d92750b4ffe8d89be7bf908feea7cfc07ba277d5fd3f2f268881a32e6f5e0cb01677dfcd74af50fe713ed267ab9f44011f5b55da1cd746be70b82fb06e1edfd807bbb6a8e651c9f02149fbbf717d3395c11cba685e77ef9f9fff9abc25262a1f2583cf94dee3e99dff20be3b799267f0ca200c4e39a25c5448a34180d89a742327c9a7dfebf2be63d204c1f2007fa47c3c555a7f793b4d8b7006ccc483c184dc5ac35ba0f54d7dc4bb25d62c355ff0daee10ce2fc9807dccb79e19530e630087f519ed0de555a845f7c718ced71f7841959e4313575ada736f56377fe20ad5f5fe38690562d588bbe3941578f997f3e1acf5eb70ed01eb9f54d0db5f598f9788636b60cd4d2c094c4d5204ecd1baade6ec8fa2de5983232f42ce3f8255c6de1ef5ab396f5e7db046e98a311952bd459cc73baf1f77dfa79edac97c5fc7991a777b1767a62617098a0d344f93ac64bdf21fc2f802480b38f4b930f8c76dc4d8c5a1479cecf2c4bc355cfd15f4c1345e294ba6c6c713ba00ab3c3e29e9db89bf647f0ccabb1c8aa9139fb5a8e0256e2df5bb4a886faa63f9b4afcb74bf9fc445ebd7be98ebbe4c11fa1447fa4ebc836f9192979cb935ec2d5004d3cd5ed732c3b50fdf0cf8f457397b2b3c02fb8d588878cb8c2fd0b5d4dc2b2fc61b98b9b06e39fc5dad23bc2a38f63bfac89b968263b5db84f5041fe23d7b0d08697cabf7c63321a9a94e3f17cc95a5b533cc81e5e73e673edfeafc39b1b7ae647c89df4ed6522ca3997f2aa5efc60dbd83da7a1c55ec69e81b3fa18fcffacd340e2a602bc4a330f53d69f4b512b7fbdd9a3da12652caeefd852bc242f8717a661dc69162df1660fb2471aba3febca4b994cf13f00a5bae69d8e5f48e3ff251721da6c7c984a4a9a773b9737c984c4bfb1fdd8f2c7d8ca9f44ec7f0013a193fb42fda274c98e0788df5a0fc9fff673a3ed77150194f99f38563045994463fa8460da28b3936e026a9fcf2f2c9577e8073829f2fed7d17ecf7027de4f7b45b4b54cbba8d6155805f9cb71ef4c096eb3db8f1d964ca3e7bc497aff5fedee3edc6064b14591fba4f5a373c369288d7ddb5c75e5982eaa1e4a9ce757a2b65dd4de7c2fa2bbf851ebbfe55df13f60bfa9be6e1c09f49dfab63aee796c0eb3e60efc8acc7c76b2d8a5f465f61cafdbc76228dae53f9cd785bee0268438377a3cac93d8f9df673350fd893e2965c07f84be7a8b5e8aa260933d2b8f6d9b745e32c3f5fb35b4e9f2c8d4fbc2653c473d3317bfc2fa827a8e31bedbda0e0d5a9684d1a951c93937f08fc6cfcf77837d9a36675e98f213d2ce4cfbfe2db57c7e835e882f35cbe3c4fd0766ba70fef2a2f02cf26b9057bae636a9e859b3c2dace5e07e696fd778e04c6df9be965d3c5b047e6489b7ac8bd9b2daabe043ba6ee2d1e099196d07f6737dce4d2e50c6d9d6ab7d71e0dabb748e0eafa32b17bdfb423037f647a271b391cb18b51a18b58d0f1c78d122ef160f0934be6ae6c64aedf7faae7b2316f35b6b7a265930656df6b5142f5c5b217e5a741bf8690037335ee8b5e616f0bc83f744708d81e979664e9ce43c427c432c5308e62949cb624f4de58c678c55a881392badd07051b34c731f0aeaa3d793a44866ccb5c0795be01b7b0e09fba53976dceb7323aff34abe06877d78d25b8d9c4c2c2bf66d5101cfb50574bc83e52e7c36d7aa7dfe49af91b8e7cd85725a3549839a75b18ef17e445a96ce68ba461d7d254387e6bff81d1f94f15dd2fc562b0811a3f96951528cab1463337e188e8de6ede9b51a73409c62b79efd87dc7d1ecbfaca7c9dd50db903733cdc4983fae2a5442c1965cae809515c913cf45a9f7aef18516fb21af19a9d99588072e381f72863b3b21a5a4c5dcca5f1010ef267c57c67758af7fc375f7b46ea78d26d389edc6d76d0e9bf8ea79b8c7d98ced37acefad3c1213ed4d88fb566166917a05f26f3cb81d6d09e73b32ac40057dc4e2a5fb28ff039463f79059fc85a86ce0678c9951fdabd67d596bc7bf236c03cf34aeba15f13890768d620d5ad6359e03fcf5083ce26537aa7d12806be542960e091ebf36f24ced1635fd78c3d1e805f80875f5beabda4ba199f116974cfa9d6cf785ba3ff6878a9d03e000f46ef2d35eb1278e5ae258c97a56b004136af237e07dd18662dce88f2111fb55a2f6aa2abecbd3a880369b8b0d8bface57b76c7e99e3c94a8bd92a6cc398e0270972877d5de6114a73f3e48c6b5de79fd07dbba41ac576cb52e565a84d3d2e65e19f28442fb2890060b632c54e50a5c3f73a497bb9fdc8f3fc4bddec29db64bd2fb65534c3cdb720c7136faf999447d30e2dad0be645de2fccc7c3cf28b772e5c6ffa008e335941030dfecdc1da0f3fc84b4fcc9e67f1e05d8b3d72aa79b5d7b9c9efb811b792b08baa0a74cdc98ea1f110cbf68231f4161f0cde9ed608e7e83df7de9d1afb8835e710ef1fa04726df796cad6fb5d1cd55d41738f13ac2baa8ca35dabe378d0d2994eef3838f26b1de388c3952bb7fcc5a2030561377493874c2e811567a174efb1e8fa2bee29de7dd791a9197df9c78e5a5151fda967b471b7a5601e72baa01aea4094d1f46fb6d77714b568bec7a29e2ac141b19b29fd7efd8616dfac7419ca0b5538f71e3bb59774db360221afb96cca0af0c9ee3da0f4933c18e6fc60fe0a6bdffbb7dfd356bbe7771d621db2553c48f5d7cf182d860daeba47fd7b5926e5eaefc51f7ecb6715e3f6f64a27dd8d2ac664fd10362468df55d51af0fdab20f83772e5691f14a09469cd32fdd57f84b89ee393e0df0029edc4d56c88330b6b4fe4f017c95c61f09e00e2abfa5bd3e172ee76ca46b5f6b7d158a775bae6515cf01edfb6556a3c66e7f33757d9ff4cd96998a06fb81d298eb4264ffb26ecd36f4cc837f5bb7aa6639ac9f4e32edad27d88bb1bdc7040ce6c0cee87088e7d9c868a5405bc62b0f06f3996c10db49b77b4ff6a0ffdbbcd19e6beb5a71c6dca75cd81c7fc2e7641a19bd73c6875f6e8693c13adce0daada9bf1264d331e3157ead4d2f720cadfdc882f7c60fe2ace879adeb27b877f61f7dc173b756465bad549ff6e6ec59c788678da5153bb366983d7cd3f789681d337c9d06f52dd6c811566474cb8c576b7ffe2e9f31dc444579be5dfeca5ebedc73acb839d1dad87c7ce47d4d3d8be5b9a902f96fcfe4475ca87964854ef7eca40c4e894539e84a3e5a86f3d870bf97de7b6aeaafd5036abfadb09ac11cd03d0c0b3ef95b81d892f6358d090c2a3be23aa08db562b2b61e2f845128c1b995d7f806cd5ad6ae53ea0d3135349675bdbfbb8688fa0ac0beb0e724308fca4d24f6a8e9731feb7f519f15fb419cfdb9161d541c77a4675d17c8a49e5b51ccde47b709bcb87df0391f47e2330e7e2e58a3f3077a5dcfc073be13ee50450b0bde52fba3f10758035b296f22c33e6d63cc6b2f16ad4739bddfdb59dfa6dfdb7d07b8b784f52871ef62101bec85d7eff19f3472b6cf88f7f0bd85e6c17a891d7f3d3e3fbaf1a948d3e87f323e6f121a73b5c6a3eb9eb31db7f19017efa5fbe89459fe7bc235287089b5e6467af6d3bd34f551fa1cf975178766899fce0867b66904d671ed639b18ef6ab51dd42c4c7d709eb3d63e724a95b526b67f66bd67199376b784369eeed977e7429d3c07a6c7b94c819d2b89dffe4f77ad8234cabafba038294efbfd2eb68fd49bd41cb276923849d9dd476d85b26e1ef0bc690e97d6a36b34a6f9bae73cb6ab8f8ce3a75d001f5469237e09563ef4928b8adf2b7b202d752dcbba4cfaeb20ad414138f263dc80ff4e3a407345396028b03f435bd95b37a137d417958dc1a667840f4f9ea936d7fe9fe840106f14ebd2ca0a2de8b29d92423d331746922eb693f5ba87ff4b3cc8f97687e59067602beaabc6628367a2ef8fc6e224cfa1bb611f8f09d50fcaaad1188ea09cabc59dbeacff93bec33d39fb7849affd77527865130685b16bea5bf6729f633c036b91b3c68b6c9dbe17dded698a6225f87fc579c91ed3e778c7dfb1d977e4dbfad35ea7b57dbb317c1db3de844575e11a3a0f869bfd63d5fb84a33e11642288817d7fb4918f9482b02f93d4391ee3bb6badff7eadd813faefb6a8414b3719e42ad94dc1fb2de235fe10efea67aec554fb3f6209b32e558ef1ff7f5f5b5fc61cc2f8a848eb46b891da78a13ffb0f3c26af1bda773dac2bf960ce07066b682717f68f5acb6aa031148d12ae6bb076ca2e30b98b9891277fdd8467ad29938f54721d0f3e373aaa1e9e515f0b0deac95a4937de1f63601bde6bec95ff95fa5d7ef6f96f55637455e89db847d6ca7bbbd3ca935d0e029d48ec036b3fbea067fe5fa9e1c5ce6526d04badad10d7ad4a8c0b0f18a72d3c146f714b3d50cd0fd0c742cfa11053a5cfab1cae69d54d34a8c177f3f603f76db841a1ae5dbb097a785ad728243c379ed117f8af0a1a5b6b5f304e87e231ad03cc1a0c01ea1fe3e98ab4ea828d59370c3ec5416cf50aee58b6e2ba83d3e736e66f9960afde6cc3b16e2ebea1bfda8d8951d47bc1595d9e443cb67a5a439b886b1db1522eb8b3c97a069dca1b6347dbdbc00f4fd70a6af671d7f815ad6d47ba34fef0197f58f1fe27e72873cab74eb7f81018eff4a879a0e3035ae797ce23c78b7a2d48b29a71ac140f502d2b88a55a66460348ef7bdd1c1ee616ac3357aca83ee9e5f3e409e3e937723f8ec17aedc35ba2fb8be5bc9eae3cdaab97b770ba060eb8f4da69051fe6a5534f4b97bc3f967bf2c9edf68a6531317df1b5cb3db8f66af8f0b9ae53ea3efdca337df143c41aacf9a02f7ee31c5afceafbea0ded8f7937a6c69304fa3cf01dd01e3e1b78c3a89b88b907d9e5a99b469c95f1f238776bfb94b507d6edf2ff9bb5bd82b921ac01d5dcd8f7684d5a781ee710cb067e59cc39812ed0336b9243b728cfedbf9f53de9fb36cc8cb7865ced99cee3d5827ecf9f6867d56d19ea94ef161029cd8f2011a6274ac53720dfeaaeb7d5dcce68a563f53a53e94d6603a4e4b6f42cf59c98bc63a15ad8955579279432169a9d9c0e1e4d84f546d65ecb343dab213e9d88c597ce6ba5a961aed077d5ee456ddfd82f7214ef11eeb2ae9d44de2decbeb43c773850a0c970a3c1753cf932a8f781ee5918318645ea3ffae8c366573651f38f4d7021e3bac5dbdb21e2f8463ab1ff55e7048a61baaff4d5632fc46b553c59cc81c75a96ff1fef284f8d4e9f6b6950c271b7f5c74b9686d8d47f13ebef3c4a3ba5dfd97ba9d7fc9ec2ecef03fb25b32254c407b627d07f4a127bacf9fb7039fbdd1338f49f27730fb43f2d5fe50fbe10835ca84383f8f263fac28c7d43c5c6505bf53b9e4587d58a3251c39b0f5aa28190fdcc57ae499ab395b478d2d4a8c579fbd249fdf867d8b0a8eb7a89f196ca94e71d17384f65dd4b1d3f1fb9ff97822a139cf7909f072768171fa8b63944a0ed7c5f344f8db6b322f89a3521c1f81ddded546ab42d709a9e7446335e45a9bba6de3414f4d731356ba4e371e70536b9be3b0befe72f99fd45f7efcff557fe15aa6fcfe05263a7cc71ec0fabb85d1c8847e58e2123f22d99fa7dd1e9dd17c4d084333d2bda8342f8d379bde938bade651690d7c0bb81e77f2552c6f708dc04fbb697e9c6ea00bb2940ffa3a198bc57cf6bc50d3bfaea9ac2da99fb1fe5d3f6ae95de7f201f512ddaf130653226b8381cbb937d3d7fd4e8239442ef364c47e6d01c7625984e9f1ea1fa8cb528e39df1ef4bbcb4753ad8f9b8fa7d233756d8d6b4cd52bd534f37a9e1e8837155925ea20ed54b06723d7b3d923f8aff5ecb1e622f33a62b44c5c75eeebc395d6b15efbea06ceca5bbc5353e3a3078c59c21aae59e845ad6fb0eba40378668dead99d7e8efcd0f7cedc39ae376637689b71cf86d6f9fcd31ed2cf4de0a76afff19ad17b7a8b5b3d9ec5da17f7634d8a17ae67945628a816637a53c66bdd68cedd02e34f54f25ae28c9e063566d621d1f5b7e720e63dd9d4d56ac445cbac16c0df7be9d7b1caefb8d5bddcf7b88def6b6e8508ca992dfb98b68b798e9a232eac6446b51dd5a0767f4aa5ef24feb1edde4924cde78c67e93eff487c3de6445c1c3dac5fad909a43c2d8b0e5a75a16f155a10b9f6698c7bd763cf9bf526e4a3abff036ccfc337486c4633abdab4b9da0c589b954c7ddb566a49d13a572a03dcf7b97142bc207e8ba4118cbbad15e64453d55f352eb1d577e8879514f850b5e016bc26486735044c8e5bafd9bbd1705b06549bef581c97485c987e0753e25ac5edcfbc9514f6ea744f79d95c6b78c0d1fd57021b4179bde1f5ef99c49cff12e698d8e6cdeab9e73e333c37db419fecf3ddb2b707bf355062fb53cf0e8d90befbe27399e5607f81a397ddf71a8ed4ffa8035f41bdb23d70eeef044bc9e16626ab46a9c2d6b02baf1013158514f59cb2a7345a06b95d731d708a0d3e55fb846b09611eb3b2d7aadafc866fc5165854ec218454b6aad16c1f58b42415f7fcb18a72362f810b1d6473263bd51a30df58334867b8f8055afd545633b335adb46eb1f359bff3b58945bd86be3b4ff30a793f062ced1fb6f61529ee7e1ff159c8ec8b93e5073dd5064ec7d41df415d477d883bee9670126f02fea5641c42bb40dfb65bd3a06f5880bbe2b1afc273d0604f6b4bf6c6419da77bd6c41b7a391718b3fe1a63bfb4928f25f74973f86a3b27f88255efe98c3d25fc9b1e5345eb199f209775d006d8018e3b1cd6b2ae71cff607fa6d491544f046dd2e792d26fc60f2f7f74e3d8c60d5a833eb1129b7861640f04bb2de35ae636185ac7ff0f7bddab7ff7daf768ea8658ad902de88d05b893733aae366fef7ee5ec45d9ca26bdd4b3b03d6b4243f9685f2267a5d7ef69113b2deff1739473463ad011ef7dbe946be32ef5fc452a426972f8e8815341713fb89dff79e65e0c999ed0f35f9633b7e5bbe7c8d0f8864f9ff0e7c80d57ea33190946bf452653121be36f556bc8d1f1e58fb7c7953f1e7f1f4ac7e0ef893ea23be3d5e4d7cb4535c5fb2c9bf4238f19ed7a0f6c3e4a6ce18bd8dfa004ef517df0d0a41fef3c1b34c78ee96117bcecab30d9cf87cdd3c3ea0def83976da6b0f93bc9eaaff301ef598f06af4552347eb7f162a58bee81c3189f34b8078e818ef92d5a77ceefa1ff2b97b8ce42da1f19efb7636bd8fa957ff8d98dad9ce10a34515d7aaf2638c3ef3f16edd1962d435d6aafa7a5e530cfa437dca3f223f69d6eaab7e6ef0dbf05486fddcdcf6a89f1bbcf69f0ffab979eda5b3b3e6ea088be335f54d408362f9793dcd19eb127cb08ed126d0b526cff0c7dd7ac73ad6c3b931f8ae19df51ee9fa4f4adf810fa95f660b6279b261cf695e7b13c6bbfd9740fde8d7f1f8fd2de553f3d99dad4e38871da547f0aa6eb26bae87a497e99625c1de25d7debbd5fc9875cf88f7f8945cf93b57c341aa8b58e679bd3b31f7aeb9d9aaae9c75bdae83ace8789c3110360cccd53687df23e9d721fc4f0786a5a238b76ca3db824335cd087843879ac91ba408c35c7b5d35ee81047692d43702f10df6462ca7a3ce83b06f05a594003e847af9bc27ed8ad5ea714f192badf7c069748e322d3815617701121748b0299d2fb057f50604ece11572e52e68459a86dfbd072bf9ee754f316e893353a1e4d58e7075826419c488ffad222495f06de053208c00dcdf03b6166f47445b7efa186a01eb1b63d626ff18d1654376e55c3f344dc9d9bfdb91187512d87fd3e855b822f42def2c13176a1ad596ca7ab9d323aaa9aa3c09e05a9e182cf63d98c689c6db78bb99aeabe2b3c2f4d7e617cef23d6811f6af392d71274a313cb47ad2d62fdf01dcd2b834b5d0cb47628568307dfcae87250dfe61efb155c7bac2779c397f2a7a97f93df113d4be8d74c94ae870c75537a2ce926651f23f5bab07a2e58a6f30e7867a89f16308813e6086db8c622db2bbcba8212f7b196037d298dc3421c9d9f15e24a8e1bf535d0dc142bd23f10bc1f2c81eb9f90ef818286dd96e69615c06728a2184225c4b1d67f3f4f12797c5af8a7d3ca12dec2124bae679bdae275d0afce8fd335eb33d39e201947495e79cbc1fb409f3cafa7d50c5a0d9fbc1b92acf6d6b9d682269cecd0c3d3657db7f12d4969adabf67c1eeb8debb732abe0072cddf8b6e4714f1c3bebe14e33a7fb97aeefbbcbf5ba278311f6ddee9cb9c68289f7d2321ecc01e31312e732c59c5d40373ca118e3a75ba17f3d7c5eb1739c521e651bbe3ce5cf6affc773bbf786de9a7c089a04b51f7aace189f38858b6dfe21e5bd3ffae3b999af3f7e7082a1ffc7a69e9bd36fdacdf080dd7fe3ac5efeefc4bd39fa57a7e9a892973af87d7583611fcb37bcfa054736b434bb21eb0bedff8d338396b7e6badfef9fc1c0ee48dfc38bc267dcfe4b76bf7bfa3b9b8a137c0d804991fb12eeae09d8ca6acfd57dd9d3772b51eb5fc347e9d12b8bf68780d1661d309639c18bd85fa141f02f3778df3f9e3f9b51a87c2fb2f5f7f2683f9f0fd74d79f36d11f632a21eff8cfefd6d3df9d0bf6e035cf151ae4e4316dddddef25fefa7d79910cff3a1672f6c435f712fe793d16ae476b5bcac1f351ce60bc7a431cf6e0bbe117633dd4717513b1f7c3dd9cbcd3fbb64d4e02bef591d78c93f04b7dfc2a3ffeb9e60cbfb3efbff364e13b9af342cfa49b3bc002b156fe69c56327fdb8a67e10567e78eefe863864f0fe12e3bb30a8a7bd987b188ce7ba094f2bf610b422f4f0edd72ecfd05e10d7f1bcdb03452326896cde28af2c755d31e1deb3b4ad728a9e59774fb7d6ab518381afc18d3d3a54465a24a9bbf529a6652fe3fb1a20fc9549c352bd3ea057328a77ed8163d0e71934556ef5f499b0b458b3d46ce17f3f8926f4ba581938d525d7d2381fa19c36428ccd1e7b65cabd5fb3a6f6188b20254f8880f8737adccd322fec35b3baf7e64d1ad4fb1fd67f685c9d9ca58ed72bd6e45d088c5f13232296ac90a72867b4efb5fa5aaac1714d93bcd0a907b1270cc4723fdea3cef7910277b669490fd6ac43fbff919fc5bc6e867e166a92b7f1692d23fd6c63e99f363299a4567be1bdb264bd70ac31189b0b1ac7d00b9641b8f1b91e6cb36ef3c332fd0fbacdfe7f41b7797fc6b3694658b317cf0172e126bc729cfcffb89632d6a22e175837cb37c5f5dd17d654af4dad2ad39893f801d7bac5737a076ffa57ec32e642c79eadd6ebcf93c90ae36c5924afd81b127ed62be8d0091ee784919a31773a2f0c164ae83c55f7824b2be2da7b11512ea9c40bd62b1a5f05f6aa1cb8bf5ea79bf58f5147d2b1d033b4b3fd92629f17aa77f81fbcbf94a4d7e3f57ab3ca27dfac52af79a9120f863fb697aca3a87bcd157bf6e6d08e55ec9ba963a340809794654afdaff4e9bb3807fd3cc415e94a351c17843437cfd33b4d06cc93caec8bf5b964ed7578fb2e8143889cda43cee0ae08273edf3435e369c27aefb37e3df1540e6a8b7ec1439e6afd7a8fe6a5f8151f5a8a07e9b99f634b9eb2eb6517df02af3c6cdfb86e087f6aee793facf4b3f19d24432fbf68a7e01f38831c2a886597b7d2be4673f5f2c639f0622e7c1dbfe8e3d933ac3daf8c3efee3b0f7220cbf4a3ff3c7cb33f39a3fad9391c7387af1f0ccb52968c6b29f6d5a34dc1f4c9eb39631eb6fcfa6f6e883bf60347f84f111e2ffcf6a5dd748729b9fd32ecaa0634a5aedbf93c3711eeda0b59fd753ca8d95e19951dd70fc4c3a0fe5947a1796e1b01a2dbafdf6c4fb9cf1f621edfd6b1f17eb98fac2bcd7141aec3c6637dc3b506ab432be5af43c6acb78317e43ccf639de782d7b4f9b51172bf61a2c13beff22656dfe46af350235b028258d18a3d9abe0ebbb9261c0b5311db75b82f5987e3f4ba37baae7c606187bc51abe453bd4580fb5fe2fe142e62a8858b7563f03e6e6d333a8d11f0b268987d8284f5cdcb7e1a5c7c0d7ac65f8caf97ba6319584ddcf286e3d800f3d272c917967fc0c027015fdca8af9193f40273458f9e2c631b27e1681d66b213e06f4f552e8f231f6c33cb3eeb85bfb170f2debcd78a7bf9c196f437d2ee7e2ad5333167e3f59cc29552bbd16e4016bf24d85193372643449dd30337d222b10466bc96da0bd5b4bc573967e371af4ba1729ad79113fdf3feecb617f2f6846b1f6a7ad8f0f334ffd62be5f050d58d23613d7786feefb101fb6479ebb9b863daeb81f373e49d4de6aaa7d636d56df189bc6eb116afbac2fcebc8533d75755fefac67d10c4a573e2211acdbc1b1f5b0287a8f207600d22373e447ccd5bf231d36bac5da25e10edcf8c07479feabc207da62d6aa1e315699ca88cbc40827760f4c20d8ddbc7187346ca136ad0f4ec9796443c1b723f88751981791434ff6f6a0a8e74c2dafbd0efdf519e25acb8fd79d2ba9ff6442e9c33fb57683d7969ffc33d4ad383dda0472ab3093c5ab96ed58ce0d9e8ad2df8bbf0f5d37b7e601dee88eac21efbc33dcb578a316fc0a1dbcb616f6022b360466bbd82be2fe22fe3ddda1e57c84d96b7eac1f04c7cf2342c8b49c05e762bd624c826d38af5f3953fa2da6b175bb63c4eed78d79fabf22b7d8dd239ffa275b3ba245e73f77932bc073a67b7b7528da9082937d45e2df188f9e9993ba15ab1fccede47e619f79f598c0748f0acc4aa8907317da363796185ac4dfcc6e75f12de62ae35ce7b4da7f9c09b62b12a4aeca5edb46a4edd3bf7eb26bacb1144d34e4ad9c22357a14e2cdf898752b387ef9b1a707e126072d322815e895a3c33b6cc4d8c4e93590fb2d2e86722ee401c62dfa0aba5f3dba4afbd70fcf083f30caa7d46ef4961bc7716daa78af4f31dd68e538502f6f30cac6339616f5159288abdf3764a9a81babefec031c4aaa80d7682f200f16abcccb3d0c47909cd39b56e5ea1cda08e357410e12f7a890fdb96f36faaf78b8fd8157acdcf957ec74edc506c581682755fda85add780ddaa79641f835dddad390169087ce1553bf4ccb4d8939a6ac054835a35e20c8c5a463ebafabef99abdd253ccd5b8568c4d746c8177f4566abfbaf614ef261a5bb7f143d93d9f8dde23483f524d2f459c9ebdacef75a83857296b87a93e0fca481f6e8c7dabb5e133d1e594027d6cf2999997262f614f859a6af85d1ce0d0f79495cc6ac978238edd56d0a24f0bf5083c0869fe75390fe9cbc53574e35754f765cfb52e561be4c4b66db06487f2116bfd6ca5d8effe9135e22ea859dceee7631d45c0472c53f36c0e71a37b351a1388fe2cebd96dab5cc7813fcacf5c8319c587eab3a7599694d03abbd78555958bbaf042b40d3c8942fe6cc49f3d077f7cf6ce9f9536f99999cfe477f621fb957f9d33a3aeadb5f483cd9e6396e8c3e40814cfff88a56ab89f20ef7c79db9bc175934fb6abfd5568cfc9e037f564e22edd0bb46f29b40463e676fbaf549b604ea3db3e9136b0ae33fbb1f166b33e52eac978e07bcfd3b9f9ec9abe90b71eea83bfe29de0cfac94f2fae899730d8da756e019d793ba0999c3348af727c6fb3af19d466e204403bccaade6733fa4d0b8ecf6067a16a8a3a8ea1dfb86282dcdc1b6e35dedc7146f1ce2fd71a1f3ee9cfb4bfdfd65cd47f71c77b27bfe6a12ac4dcfcf26acab7f1c09e612c8f04af530216b1a93016a0e0b70dd44dd56ecd5a7f7fcc8214eafea35636ecc4fca6eea07738608ab95a0d7f9fd0a1c2f7b7386d833df8c46a5b47f6729fbfd531fa7349eec8f0ee1447c27de9b3a026a3ac24ae6a1c3f177b4e7da9c207f51673b5de7189706b3653f002bb45c339787f12fd2b2a4c6bf895f71d3f09e4575a4fd36e13972ef4349b514d4dbb6b194efa857f1ba7d4bae83753bafa76bfff55f7c8ec529918cf7f839e08d8ad7946bd8c6ab5afd624c98cc5b6095c5293e6c810fab5d60dcde1967b9b21edfd17308575a9747b1afb8eee16cf6ac59d4eea0fb3013586fb39b927c5ee6fd3dfbbadfd46b35100f2958358905cc4f72e7915f44f65d3dee564f2b1f3e21a8e365fb36648eb9226d4cc2171a9e9f32dcd4053811697e3c19dc7a4efbe7ca8f1863a3d60a71423e82e7883ab32e2a7979d87a8dade111a86c9d0b3da7454b75b5dc9e56f46cbcaa79bc00bb24b06e8868974c591b8ed67469c7fb0f73afab1be32929af496cf8841565819ad783e125ec355ef81c1f126f950dbcf774fda79e0af5889a61d4f740ad609e795c4387df4ab16d0823aae6d02cd41c4eede7c2fadba47b708c1bf6b6608dcd7ac57302e3f21bcf5fcea3d7f2913dd617f43b5dbe705e31369330b92130b93ee34733d4abae465b5086af4b8e6b739ff8a6c4cb196085836ffd1846af0818bf85857e722e4ee63c8e8ebf48af007d85f51e31803b09f5d876c369056e86cc2fa8cb9fdf2866142fec495516c0a6cad343469ad31ff141d1fa96ab2bff267c25bcca0f2f2963e5d8e3cc15e0f11c59e332ab8cffd9780e2f428e0bcb7ac6d7aab6f0ac9c3ec32b8cb4bff5b58ea8ce25f27e2dab4b5cab439a0ce2f5cfb5ecc8ef96d7b256ef2db41792df25f535b1c6051c93dec50066ac10e626e33ec3520641ed7f70ed8c7cfcac68b8971c34f70d731cb52ef228363c4645b591a27ed43d5a7026d7e03da6457d3378a743f0cc734fdcd4704dcb88437806de3260cf892fd7438e3f578687740c9ed9ab416b4053fc94e93d429de2832a30ee2c75bdcfcf847a853ee787a57de70843e0ad7c75e61eeb938dda00ed256ae33337e5f13d4def3d12b9365bd9a40b9c1d12058d57e01c31a69943666f67e85d0113faa17bb7893721ec512e6ee85db61c9b46b89ecc5521eb84d40dbd8fca972e8e2f57fa1a7c3776e1730e5dead47035bfff4bbe181e38e6e57ae79afdf4feb77ac26e38dbe4bc271c5ffe9e2f5686ff678ebf75fb6ea0f773c2543e70fcf66b10e32f62299e2bead9922f5421bc4a86a31a35f3127afe25faa06b9d37756bcb364859b307d8cc4f1e05fc3c0bfc9f62de1cfe1959eb478657e60f3d2f7f031f7888f7366bf1962b6931d77ea1f3146774c4b3074f522ca37d3bbd1f33ff8c14fc516aaa5779e98cae435ad8ffe0fb5b49aca36e395d1bcd531b356beb2a90eb97161d97646aba365e87f69be0fe00add97360d4fa18f3c63e26b6a5df5f7a69e35b9d56c005c89b89f37e54f2e34e1f87c68af67343af8ae6f68675c2b11fa6457220eda3e892cceb83a90506f544e6545b2df5fa96ecb167bd519ce7a31f98bcc684fdf4b9cef76469bf017f6109fd5b890fbfbff44c388774acfd7993d996f3dccc60e5f41a8a750e3d31ca95c4abe146937fed03f42e5aae03f17772bdff91864089b811980e073dcc2fbfb3f2436823e8b9e7e5fafcf5ebb0c791c9ed838ec3691da7bc947bff0ef38feb7778b52d9e67ac3b6d53bf1c9aa7991b7a490abd8e2146c8d2788e6bb7b7d5fbf15d1d93b901e5cb89e306acad22ad2c792abbf76d190df71b73b433a7e27aefed139f1fd8c3e010efa0f7a0f318bd6fb0bfed35de0123ad9a11ee9d3cc2861892c6e050dc6e2cafef75fe1fd732e27a11ed699f78dc695162ffad6dddffd5bcf4e32b5da700ffeacc1e9a17ae93ad513fc47e354fd8e772a8bfe76cbd3a073ed078e0987b99a4b6e9e58183bfe45a0aafad6fe853786afff166e2d72bf4afe4f9f4647acfd08b768ed30a5a6ae66ff0004cd49663c46cd3be52cf686e7eeb37f4bb9e2b8ecf9d4bc1b1496a053fea26d4f57f3ccf8274d7f4bef1d03f3b856717cc377bdcbbbd449f183153110c7f135ae9034e926ceef4de56be30ef26c5bde599c6c0e8b12ecdb3272f1d7e17353f87fcc41cc77c3d3d4f3f3ddb49eaf4cf9639acab2634ef1a7fe3fec1bc640f4d199fb2eb871337e21771aadb4922db77d323e972d02cf4cae9f8fd734ff979d6cdb1ea14f9ca8ba498757355eed93735fcb6066fad6e8cfe8ce07741de76e32bf14174aef92396dbc9621e4ca95fddcdebf0923186c6f1e99d65023c4df182ba2be291faa2cfe524c87f85c1b2ac64e8448cc365dc6c86b18c3e7e693d3e0cb0c4946f0f31cb0efbd47d1fe199d23551aeca7dfadb127871e2e0ebfef9077b1f6f7c8b7886cc4d746bb1f02d5d5f4fa14193a567f0a593594df179a0b5be948abaf55dcdd0ef50894375769b6b813f6a1b9ec199f6cf249f3487f59dd8cf46b8e03527427b77925ec4867a81f38d1f5f680f6fe3a8858e08cd9306f5d99b32d86c60e8faf5fc2d3e1caf83ba55827d147e52ecc7112c3607688316ec675f720de8525adcc711cf9fb51cd69e401f987854dd33cfd86bd03db2f787e6812e752ef8f8be31d8adfa1b72124f905ed23c61cd46e6764869f489686e6acd10bd87d57be811a8c93bcfe5a53ea63dc53ba590437d637d485504884deb5f466fabcfb988fb534c087f51d4d3fcd0722cbb331cb121e7b608a684a3d17a7ca1ee57d03373c07301de51450b68de7dc658ac0d77b43dad2463db97c00da3a6928f99ef5a56b316cfb9be75c72f07b56fc2654676ec2e7bdd47f0c10883d0b21ec91b5d47cd3e8c8603bdcc8291e92bfa3a660c23d2b179642effdae82b124667d998673f8fa5921be6be7eeea56725ea70a79ba4353a498c3fb5d0bd408c69ce937faca159647ca3edd70fd6ba4add47833d21cda9e08760cf73609322f6e3cac12bb9b106ce0979686cb19684e49e32fbd9ea671e5d6260d6a0b5395fe8b842f793ce6bbe16fafdc57a6ff367ef6bc2c8789125d867109a4cac03c4b836d66ab9182f1c31efbd7cc01b77e3fdf18c7120e07d6fafc1694e6f35eb1b10cfc65e3e30c721bbb59f3e7b7dabd973e33a1e7c769e2416f1ff736f42e3cc5a5e196b9d67e2c2f95be5865a7f3a7646537073cac88547b51cdb0653dfed0f3a6f94b7f8e57ce2715ccfb6c0329e280e3ce8d8f48eb7c9758798fdd7583f499e0f29af69bb7f46889db5e6759a6fa7c0ef9591c3bf717681c39b1bee22f1a7e7ec818598eb1cefd89bda7058c2caf00c020b750ced0f837a47a6b95787768b3931e25e89cc7e8e62e3f7dfad9125c5be5d3c8ada19d681026b9a4d5ac8ba0f15f6fcf6e09c684e95fa9d183c2fea41f0fc94941b24d0a3788a8bd270ca56d62bfa82e3577843969bfdc8bbf3dc01bf66e38bf735d6d22c33bab9a335e6787a4b5827ad10f9488ff5c4fe07789cd1f4d9e73a6cf3063ecdaf78fffa66f8cf1a2fa3d720f4daba785850fd42cf819fcc25cad60e3ce895bc70ef1ce705862ec0bea331d937ec015e7a8fb7fa48b90eef855af331de337ef5bbd57d27d7635bd15ee286779e434b9beaa919fae0895f625e288ebd29969ea2b7f532363a76e40dc17a7543ff2ff9ce7b92745ad4b9c48afd14aa9679fb2defb7cea6f7ae4eb47708f40b2b17bd02ad21c87a8417c6f1fe306b5bd6ae10cbb37e9fcd6b57561c6fbd4eb0c6dc714c1fd68eedc16f0d3597e4cce32af97c0c61b926d957c770bd98f07c93cc2d792d339fa5f911d88af617af732b19538f607fe4f8fe080fa882e35eaec5ae5847578ecfc058799b26bad360e6dab62a8e31fbc3ca297194580b7fed0b1e835ba3f1d8e51701f9e7f39cad0fe0323ae15bcf27173ef5438c3fa95311a6751e59a15df1efdf5ad4a1c4cb26af19ef6f2753d2ba62ad89e4d36f756b88f1349796853e554975d8f30373de583f67c363c28d5d7ec72bf4567b2d3965f6957acf6b6ccb7b8b07ecf04416dbfe9df13bb78f1cbf7c337b61d19e355e27575473cbc390627431fb626da17dc2267e9d9021ef1162236313fb69ff457732050f4fd75bc189b37bef00f86dcbefa75a2693b8507e65f6e3ef0f6b703a52f687b622ac5bf694f33ec6c345c08e947a0fb24f693ef2eec79f48573c36f2d627ec6f8dda86fa451c35ed3104fdc9b3f6ebe27b7bb2625da7c9a7a6e6794ba6f42e6b7e67e9598fa5e4164c1796c10b40e7aa3d49d6f208fe214c15b4ead3ac35711473faf5eff3bb02f72a294ac6c899f9ffc51e7bfd631fb482371a976212412f2691afd0876ce10f18dc74dd8aeaa2def03ce82d6e1383ef3a32eff3006da21d7b98b0bff85a3ebad053f4aa267117c60bebd2af7f8776ca31855e63f2d6d414d7e08b42d3eb9678a2d770d27a9dffab73245d3c6334675460c77fc60fb7f85099bd8c754737ff72feda835e739178cf81c1e99571b19d2d097b63c5871a3198e4580c788ce06a3c1af37140f9fa90635bcb0afd38f3b9aa1b8c254be7dab93ddb34e125210cfd393e104628d51e637aff7a638d9e8dae35d45a5b4e927681b5867645c4b8696938601eedf3037d2b3966bc75f2c79aa3f707e6408d3f789ddfcccc71ee9a7325c7d4157f632ddc6dfaf38dd6e49fe4adc9df7a9ebc70ad66fcb066dc5a96bcd36fa897673d9ecf93d41a7d437ffb13665fbd21ded5f9512a5967594193823012dd7a2f0f9a175d8067a17b6fb51f5a66ec1611eacec289dd98c74a525dc75c2378a5b8af355e655c7f5a598f371a738915ef4ccef6e3ae167c9b4c91c3e97d70501738c43b1d6791bf97feb79c60ce299ca3a0d825440eefdbb19b187c54cdbafa59c239f139410e549aba6bb7668a0974be4cff68bdbf7c9d1fe6263f380c70faf739e275ec41036584f76072a5c43f39fdf72f278aa1d5afd8e9f3e7418ea2b12d4b192ce0a131e3fcb6c23e56c947977b5902fb96bc35786ecaa27a91327c40731faef182bbbb8fa8a53c8f705102da9d2aac398653e295f6c972c19e9ca5155e911f86787ebf6357f15e5eaea8bf3f914542fba99b987cacff2c3418c49cf703cce9588e0fbcc6525fa1798f0db6ae9bff540f5b074137ce6e5ff358e4b5c2dc37b96cf1cadeb1ba2e55cb44eb7b564d32313d54e8a6a92bd7b3c63cdff5388a1ae42da8b3d7142378bd7e764dcfa110be62ed0d77cbcf46b0fe7d5f57e05a8b7aa83107f14c056b2a6e0c8e34f8363886de37c6a13986f1f4b4371bde82e9435c090ba966475af335674b681e27aee71dde5345446bd1b2ece2a22eefc8d4947d4e2af6a5f99fc72ddea6891dd3639d9efd58fa6fc97c62f0c6eb02f9fd2d60dfd1df1573331cfd0ea8ce100493721e4e791e202e2d98ff58eb7ad440c3ab085ea05de3734e403ce5764adeb0fab78e15e693b22ce658d1fa769870fde432e08eab586aaf809e9f2323d239d07bc0d6dc57c5f7a5daabb91ff05e563c0ef27a5a7981d987b3ee7b8d64dcdc083c9460b94b588741ff2bfdd7411f4873f0b56ee2fafe5c4e225f3f22f2d3d0d8978dc90df4bc9deb5a085d6f581f3096508fd2d8db6eaf0b1ad6bc29079f4f3897359f3b35bfab0c9c6a9ffbdac3eb4aad60a1dac7412d4df5ef2caf39aee75a0bb40ac51e78db15adc18a6bdb8a71a3435e19f73fb5fe98f18d62be623bfda4dd4e71afb5bcdf1bcc1eff696f282673d4726ec917fb425298da615f1fbcb5ef3c3fd61671018893ab621a9b0f1fd004f49203aea750d34d13f33a3d8fe5f9376a31eca5ec0ed685612d77b136de52fec8e894642170d416388e4627c467bc217186b6cca719f1dc908459d05c9af8e03376827968767c983cf4b53b7b92ba89b73298dafac4e38ed6af3a8d873a3c184ffdef7effe0dfcdb9c65598b968b0c83a073d84fefdb9ce6f1bcacb4439ffc7f41416d677d49d5a8d6549d5e4d4bdb3c54c782b5fb1afbf8ddeee3c6d0c86bb20bea3feed878a7a9b3ecdb7f6897a62c2ad2ceedf410f0a6328321ecbc024511e93623d72e1e7b463aff20a18914a8667e6dda6f9c38dea4ce36bec96c57def5a8d746dfe7ad9c56e1b18dd40ee93385bcef37ed40efbce37c6ab232bea8bf1a0bd1b5bad35a827dff5092a07f593bc9dd63c479c91d7f7656b8e1f17c2659fb7b3e937325e3e73ceba069de6c607d4d48196cea5bf6e3e3e3d737e126e50efaffde86eced67f9db35cfb0d8ef121e135069c2ed652a0589ef29291c98f3f5faff67f31f75ab2d7c91bb8478b7f7d0eb77afa1f9e938b5afd6be24ea6cf45728755481471aeca6c6b4127eee5de0f488fb39bf19c672c4dde4e3fbd67c62a70cd6a0e9d146f090c5fca63481a5e27fad7f50fcd0772130fe758a0b6b60527f3cc715b62933648869a66da04ec85a9a8e6021d7eddc7a2fe366b892968adb3af9dc11160ef48ec8aeaa5ea1fcd3355e88d247663740e257f17f7b84c591347f778fcbb584cda0daeadc57c3cc6ed4fe8053e12d63f9337eed7d55a379031285d8e3b01def6b1e7365ac1476c4f34f7bf96f012a33e4a00edb0a0f781361e04ac7bc65e968b98f5fb1ac6cd1d7f732caff71c976ba98db56e7aae35714da937c7ef71f0dd2cda8f8c8f28d59c4b1d83250d72de5c7c98be4eae6b69dd985b26c8e3b12e6a3ecbca4fe2da079e13f8eab291f7ff3fb4ba57b392f0c22ec4d478ece9f589f7e52157165af4d0ebcbf717c61b7ce66f1e398faeadc7f735ebbc48a305e869fd57d45fd7fc2c9db185f3b9f1fef88e77f11e1fb42677efada6fd74eb5e37441d1fd677b1bbf1055bdded494aebbb05bc56695d012bf0d77ee8f2f79533668d8f79e43f4297e83c353573678b3e8cfacc5db78c66bc97781a730b1deac4d90615af1fb9bad68c3171da70c8dfcf0a7580bfdfcd7802e33e36b3b18909bb6323f4f172de1fbb67a5b4feedd7d7346fe7b11cbde239c2a72bf915efb6bdbe87c39a24d595395b6b693078d96a2e58ffd8bbd31d2878fe59a7487b4f271e7c80e6cf32b9f0fd9645c8ef77b192cd105f256af8ab6726bef8ee8047ff90a889eec9e89af06dc9358a25f62a60b203ae57966b0fe3c3311ce1b3e91571bd52d602b5661b3abaa1a0df7b8c8b88ef79de7d8fe62c748e297feef24dae15ce9f2c9a6b4b8a5b837c677ec3e47b6b094d0ee5732e3aefe24caa6533be22e475d0f8b9a2de342f53683ec990fa8619e13a133fb8f61cf1cabc6f60c4631aff758af5a15df8279dbb3fcb50fb0326b2855eab849f6868ad64af4f42d80370538c2e1e6a5b59c8dc776084c4b764cef82183b3519143de8389174e2bc2acbe9357603bc9f6667fb43946cf4c8fdcd42a893f4831e04b772f9115ced98f68c029bdf3cd16ee846390ab899f716ead3f8cb52b9ae338158023bfe57e24f3226cecd94bad276bf5f14ca23d02b5cfe2113e1b1c9f05ab468f872e0678a89117f11a98514d536b0eea7c896bf9323a65a9c67a7dc4f6eb49594100afa01979b0c80783c5d07ae0426b9965dab321311ac6ca0dcfa6cfdc8d737bc918b2a718b1fcc2d2394d5b931679c3f856756b8df75c69fdbcc3353e534cef559fe23d13237fc6b234e0ff17d00e655d25f4f83706eb954047277a5f718f20b7e7e8914f4d9f50af37c700bd930bb8509e7ae9fdf24c1db250cc474f90278e58afa6daa3fe721d6b1e7c72c7e336e79d646e088fa8938937c09b9f67ce36fc5307b1f64a8c69e90af093fc87b805e6444153147538d2910972f962e20c61705bd0454d647be5eb495dd2c34c9a8feb5d7fd68e3fb0566c37339b6b2a6f2970ba624f5807e3717b0377fa8ff83c806653fd1bf8c3c4f4645cf464a4f5d0eb92877b9a33e17b69382e275aab8be38a79cb2969f7bfa3cfd3f3f0dde097c178eb77d276b18ff19dec8e5fcc8359ecd8aca59b55dc7753f537e0a13ce3e94c35af92c7dfca35f839e4b601e64c3dad0fbcdfb517833febe6b9d638837f831bb0b7e0af0ab525f05bc2cd9ebe9fe4c04d14621a1d067902b0d7ace3ac6b5eaaf40dfe58cf07f899e5f51dc6c070eb25fb232ffbbe3cea5a728a185ae34782f794e229f93cbb18ff07aac9000b9f1f4d1f759573bdfdfc4bcf659d2b9f87f8d1b9d1dd243c83e608d13d90660b7a0e779a9ce97dfcf1b666cdc6f47248fcee1c317c1708bfae80e55a5be1a9e6fa881b58a8252794df978ea2f562b22cca8ba9258087c99aadb8b66f2bd31f64beacadf06c75bf2973278f881d8eec4fb8b6c25fcccd589167cf64e97c8c5893c1c4aa039c5bd5eddd4530ad669c872747c41241e587efcc9d01de314bb877da54c8e780d7616da7c396e79e5bb286306ad0e097daf1a1e4fcb9313c413bb1f15b9c43169adf18688e8c1e57aaf1df4c8c7b85eeb90c14e106ea49966fa131a56b49bad7c31e81e0f33bb19bb0d6dd8dbcc6ea27e07ba1f1252cbee70a98dd3cbdd85a6f9a71f145c93a82fedd9a9edb062353cfd90b515db8aec7bd0f9e7b6bffe7903f14f4bca1d6cc9fc460de4d8efdefdc22e732a77ab49e17a6d60ccfe2457d30d76503ab33df348f6e0eaf1cf62613e0cdf53a91fa192d180767fa65b48f74fbf67b9f7b8d5c7875a7f89e4d7c9036635c2663c94a2b7c357a924efb6630815ccf3f6cbdcffbc02ae77529b896a48bfe83b9c83daff80c4c98305e72f4fcd4e479a05b48fb8d88891f42b98dd9a7e8791fe35d89fd535c63e0f297a9c9b116627f341edb023db3ccb91cccbeb96f1f19038ebaf2f0bc73acf57abc46064fd47cac8d776ac9de563bf68031bafea8afd492fd63c753f62260dfb328679f7cfb42ba6c5d5caa3e6a8bf12f01f7032f46736867f4cfd433eba515013c86469cdf5c98474f9af24118cdb83efeddc1f32b695d11d833825fb579df67fe5d857a572b58af4a4557d449bc48d6bff518e9d665e7e867c087d4f9191a37ff704c753478bc83e21e812529862cd7f6eb69d3adaf453b5dcd43d61c394393fdc7bab1b8aecbd89bdf89d438002fd91f6de60be9fe1b8d63d4cd74ac49b5e519ae3f9b4c05b46064f7fcddde17a2266daf28636cdd816b3362cfd877d323cafbdf15016982e4f978b598eb9ad2287e39b33e86c3358d55039ffb9b602f6b37b6861acdf5efd81915783ea35c6396b5be28f9631f6ab3f73ee7fc3ec09fe2fa2673270b7895a9d6da7cd669718ed34dced7d7d8357379e8f90ad2e3eaef6f4d5a9f139925d080122f83e776ac8d6e26693a2df75bf3dde779ed69fd59e26b079a6f786b5dee933cb9b5b798d753aaab8ccddf4b778bbf8b537c43dc6805d81bd48cbc5ffdc1b5e3de54705e539ee22d0fda6388d6268db3d0b8c22bde875835a1f185ceae1f0fdd5e02de4bb76e3ef378c9d2fbcf360d7bf88ea7e9f0339d0345efbaff3bc4ed2b61716f44ba356bc061ae1aff97a4d6da762dc556ec3396079f3e67af6e7dfed79a7ad3de0acf610d8daaccdd3256c84dd0e35b158c9da8bf99eb296ac2e600af9e3adb27ea3940533387c688d29a0ab3eefc6ba9ebbd5e29036bcdbd46d21cfe018cd825de4d748f3b73963a764afce31f98954c06c1ba094746db967403bdece5c3d2fa21d4579c2c66f6532cdbd9da87e666569e80ddde0ae7c2d8f6876e5deee2b24cbeba6be47e75f368b0c0627f21cc42b706f4df73d6bed1aad6bd52de9712d603e43a8b1f3a1bf9494f50eb277ca93138218d1f6125598fb521fe08d7eb3ff11908e3f6623025a497f50acde5d1d2fa6e9bdf373ac4df4dfd8139b59b597489b9ae5f18dc2bdd7f504f562a81a68cff11b7555fbba09ec89c31618c1948ee7bb505eaff89f197e398d3069fe1a6b55908e3eaa2e67f53ccd7816ea4e2ba08ebd7798ca58cc94b9d34262c785ba99a7251e2ed078653861c53a2d6cd5ea2c68399d7578bfbff3ff17f8c25f689b44ea82946439d81f039678c4dbdedaf13bc3fe43bc8d97fc55d7e065d39f44ab8f62fd6e44bd8f7b272e8369b35a27ebc7b0e0eaf0fdf790f05c7ecec32dfffeedc84b3d3cf6cd58a8fd83a0de3ffdce0050fe508bcd0dff1a11ef57fdf0efedef2dfdfe3c391fffe11ef26fdf1bb6064b84dbb90ff5e7671a572126fe891b554f4ffda1a1b7fd172faf5f311d6a3455a578ab94d8b7e9fd3cf8735580b7e0ee8b75ab1c37b22ef7d01eddb0abe252a588157e599f85bfb32df9d7ff87ee15535414fcc762a69f6ca1b8dff7ac99c2dc4808abe273ee23d3cbeb0472779f8667c4b5e8673680c4ef271a2588715dcbb4ce766ca895bea7f6596ae357cc860024c25e5244a1dbde1ffa57d8c86ef20b313c11afb8afc90888f86bd5079e5f4abcf193b98e5a3abce9b55bb5f1734ce4533c2fb3c73dfd1e8e39a78518edf0d3f05baeabdd77435c41152ccee71df45fb1c38d94e4c53e886e863947a7946efa4b6e1af94b1264c902c0cb64d1d23d41323683fa5e977f37b6b13cfc287546399b5df29e54096d1019fa4b7185e21bec3bd8be5ae453c13b11644b8021ea39261cada72dca7cb0cefce7fdf208f0736c387a65b56b7af5ff7e28bd08cc9eaeb7e97d1c27a72056baf5d0c1ff810b20f1fdfe39bc13238cc31acb91e11f7cf30720c96280b3977fdc57544c451c100f7348f33314d5acdb59facadf09579c47886f81efb638cbfd16f8eaff0923cc4b76dafddf9c771d2a5fb84e6b42d9cfce5cb1ee1a56aa2e1b8fd42e3353498757e16d92d605ef5b5027779b99b705fa905ce71b1865fbb72cd7a130f9ecdc23c1b7ebeda17bc264feba0b636c60fb834f576e01927a5fa89fd6df04cf3105ccbc08e7b0e7d3f57a4c19b62fcb79375105ac95cf72acb383f27a86f5ee2c3e387f197658c2fc65d4239b4477815ad8f4f63fd1090be800ddd7e97f5069ae1f726d2b1af663d3f4003538183a4f7fdb6d732be8ebd9a39fafd3bc7583d4f5641f03bde95cc37d9a2472a965dfe48ba34e0119e97a2200fca8d1cc39b583286d58be121c718a395e9df8da69bcce450df8cdea0d3420b549de2dd56c75855339e74398e1cf4f8948a1f582713f5954205d4cf90a49f9550fe76e4bc61225dfaed4c11c708dc83d08c0733efe48dea42ad13efc21ff77f5379778f4aea5c328d33fe5cb1c7c08efbc96beb11cf28b2631edb4a5da0e3529ae3241f27be919e2ee544e06177eb35c7afe7784ffb64e28ca6ccaf5799f8015ccb3b7920a9d470d27713eee73e6c309fd54d8df47b2dc26e7dfc88a8ce1e6458936b1932578ab9a297f890f0dc1c19af67d7f4d6ac8ab936b41e2e5785e0be09fcad4786b749eb6dfbca7975c2bfb1ab8c86c213eb533817cff4f78ae4caf929bc9caed91d16513cebef997d98f8a1b817c31d66ffa5c8fa69f41124f5b08f58c79725f311ace59d56c8c2edfd66a226d47e3325fba331ee3deb35893fef734bbdcf8d277973e27d6ec1daeea973baf2fac59cd808b1e54a3eba46af58efc71727ee3d5e488791c78e3c738fd9dce3c67fb4d0eb617fa3e3405b59e37eb3e2388d4c7fdb46cd31501c4b24f976fa7463bce1f7775c8fe1d47ebed7d881c718e77ae69cf51ef93372db3ae43a21632e9f4d7c6862860439c56fe3f7c2bf67fdbce3bd3c7bd081e7f7c11c27d5fe5afcb11f8a2b6b6233660cfca597d58bc1655802fc306876c39b83b5cbc2ebd75899e6837b10aad8daf7fba0b8c64e6b198f01c97359738bc26e4d8c5f2ebb584d7eacddf0d3f3132f0bf88bb067d3a7f1a174cc4a5a3b8b58aa1f141725ccffcff0dc67f7cf1d9a3377cfd3e0362da3c9939f785db8c54693d4428d946b7f412832c35ba47d6de0379dd8f10374068238bff0987b357807678c7ee489bc009803905bdc4b2878cf4dd2415c405eb85cefcc382ee56356d44b7c8f77e4a7b2f6c390b0e862b6de85bdbe159e6565192c88609fff9af09f1e7bbda8396bd469cd0dd2a7f654dfe71ce094d24c4cab0c7aed5679fdf7676aa387a1e3af0cf807adf1cae325738f8c8ffbdbb30bbb9c2e92468b45f13b51b28b73c298bc05bfdfcde58cd70fc60813b622807f9397106e228865126ca0b9309cabd0c5d11e0efabd390fef98b7d91fb946afeda2bdb4147c492916f9aa8fddc69fe7e5dfe3cce4cf38d38d477fc6707dccc99cd3343d33ffa58f39aff0eacd23c6fa2cd8db525e51d3d57c0fd2aaa163da657f7fbe9504e83f3bc76fb49f195d8e4b44f5094f7aa8dba0cedcedf7664fa6fcbcd5ef6d9e4c05bc5956e04b2af88dcafcc2fd64f226b8055e5d70bd43f1de895e6b7dc8181f897de5fefbf544b98c09122ec7f76b19fe866f8ae1010e3c51f47a92da3f07795610c2e7b7db179e3ef7b00c9fc3493ef8373ee7637d4e537ff2e7309a34366b5489c3b6cf29189ba7f7c9b3e64e19fc800c164bee55f0b8cbc507ee2dac781c67addeb352e2540feef511fe0067f8729e46b8a7c4eca9f64f7066eb87f88febb36ec06f0cbd52c3b8080ff11e9c89c2c4470572d9532a7dabb442d6a8cea0a3728bf70f17a3abd07eaa7d59266e00b695b862f77c4deb2a497f3865fd06e05844d422162fa8964e988e6e3d530ff0290f9ee78af7ac6f835c50fb6e24ce96f79bd997f33bdb32bf76f15c70ddf244b57f9e9bbdfed7953893c18f9abc033cd6d6da90cf41984ffbfbcc14e3775af31bec899fe6ad6f30622efb3b9e1ec073355a626ad7f34c368c978497e2f2707ce87b2b7c0ec27d248ec19d402b5f3826ce29ccdaeec4872fd627fb1f5bfc99cb8bfac01e71e72372d860e58756afdf6e8e45af3a42fe39ee7b73bda6f65f6bac2bd634f3a3d1baef578d787d40bcdaac0ecc0f3bbf6d98db8be796ef2fa3bf3d9bd87e7d3739c46d0b7c30bcb07201ef7271337cb4fb1ab8d10cc37eff43b8a5c77d15ea9d6d9d7e4c95de62a67589bdf5fe328da4b0923bee6f1bb33757edb0f6de778b6ab93d06b1d73de5da8ee10894e008cc91f7dbf1c1e89c88da85f7327b63cbf615fcfa27ccc14332e45d415b3acddb1471066ad5021ab1f262e25aca9fa927ef1e19bbc1f1902ac9b3c25ba6545ba89af017e3f7d78ae29ab51ffe569cbf74f38574b6f9b7cf52df935a00fbf211efcd67efd268964f72ae3f2af6760e0c063dd53c0b69d1da594ca6e633374849ebfd32ad5ac6e10739f6892b5f6ba5f41a34df3421b80db5f3e73308c4a6d1bc398fb1d4f20abfe63f8fd77d6df3cce4f8a6d86700f18d7297864bb22a8e1a83533511fb18861b9ff6b5dedff7a4c75872d84e37b3f64b5f9fb57c744a68e3b18744790b59770139a8cf78152fce38b615c04bf0bf2dfe2d273d3f50e387b0dfeb353850d0185b993e6b38e026a86e3f3fc53d1e8778b873f684a9ed9ab541c0ffad9a70491859e8a4ca93cb394f02dea400be2dcdbf5f18d700fe49423a748ae233c61d4aad0d345f3509fa0862817b79eaff5f4f126770ed14077cab11c3553ee3c3d4a8fb5b090fe2cd81ef85feae39005932f8bbfca87b1fe0792ca59da463d2b8e86231c2d3dc585373cdfe89525ebbbf95e0144457d61da0bf77bf93dcda69699bbc02f863ed93a77f87c66032d914a5d138a7eb6a75ed2fb18279ee258ee1a9bc7cc25db94693368c0d4fea3bf746cfb40fa8d7f810702fcbe2f76930cf85e63ee8ba5add3f2bb73b8efc12c3c5fd33972e9e79b0f1d9ff0dfb38f3f45cf8c8cbefd61ad8957c6feb7533b182c55fee35ac299e9d2c3177936cc95a5047ec3bbfe2c3d6f8e70bc6c6b2de561efee2bca7ff6ef59ecce153a1c4c9dcbfb96fb1642d9ef5a7fbefd69b3ca0b560991ff93d0425b0f0c0f505cf73da7b92a29cae11af488eb93265dff1e264e472bef27433f5b46f3c17d26c021d1565c536c54965865eac246ed6329bd0ffafe329f6eb56d811f35fb566f473c018e130be7fde35d5755c65e65294d7bda61df21ee9d63bdd9f722e1ee3c04aebf1c6deeb99d3c7139b5cf7f383951fb92bffcfcf6b07f3cbc2daed6c3dd64be9d6397d4ff023444e6f1147ccff889ba3192f98f3afb5c5791bcfc576c27cc8ec3a1c1bb6bed76768f197c531e33a8efecd4264dcfbe5e7b869b97745cf31a2e7183ccbc7db7fb837e0c3c52b63e394d3025fc2d871f24707f660d1e5f5cfec9365b0c2ed6fd6935a37e19931626bd6dfce472e6a42e8d168ae8cdedb73cfc4d1ba879f4a7fc46bf35fe7a6d5c5b79327f83fccfe58c7643849ac07e3cb97e41a33d47be09bd8be715143f1e2ec27d536b260cebe00d5817153138e816ef59daf988887b8ce5ce99a541e172563e3feb6c6fd88a5ca6be87f4b77cbc7079b02e3da09994f6af16f2645ed12bf4a488e056bc67b757b05e16bbce47034e7abb5be9feedd39fd3a523b848d1156bce77a43f2e93b9a537cfa6afc6cfc986260b73da05ebeadf6ed9ff3d139c30b2438c40df533aac6f0649dc17df17aaed6fbed17f37aeb23cfb996e066e44579343853d39f146fe5943cfeb5267cb7be39c71970accfc817f43b157ee991e649500a97df7339d55834ccdd1ab897b5d5cd23e69d8833d7ddc88f51e422e31a50fd1671ec81dc400eb45abbb5af323d8aca62ddb53f8f6d27693ef26ad4d8123f70d0570c34e64df7afecd70d6b51e7f503639d744d392f079fb50f4617a53b97bbedfbcd37935fce6b857a875b0197571b9c78657c762368c0ea5af29c3c162866633cfdc6787eb53486ece337617064a2317cda179a8f2bc2374dc0b50b364de244d697c713ffcc0a8fd03c7d63cda9641e328602bc5941dad0c5763ad08ee8f6cdd5669770fddf2ea797778dd9b2c0b1736aca9398039b29bfde892f8f27fd90f3b474faeb4f757cad0c2fa6a29ad77cf9e93932ce88e3d375c31abbe0f8e55b9e7fa667bba2d86692e7038c0bdeabe9816bfebc5edf02d6479629e1f063a50ee65ce044e4c627d637787cf33d7d0d6a92dc54c0e75f713c58e8fac17ce0d5c9f9a6d1fb4ab2098fbba49a636dc849f770e3f77b4469851c0f0746ab3e0b1ff85a23776b62de0d733081998b0fccaf1bc48837f35d51f1f1468fcbfe1d6b5face8f2c7751f4cee1d44737efec10763e968aecb77a33be7b6466f39e3bee72179f8f31cd8c3b2e0cbcf52f267f92d7abd23f21b606e45114c716f5ed53c8ea0510e3d7e31fb7c9ce639491c679e955ad519eb507e37fb6be2aa25fe06adf10978ef958378ef8ffb489c11fe1f8d38fe4bdc23e3e9bf38fe4263f2267cd443dee203e238e732ed39ea661c782bfff16a3c7533ed9fbba03e77f960f0f79c57b85bb376af5de418ecb3ee5c184f3f8c913456600d6f9f951f710d72788cee01d7386661194de7e131bbeeff7cccda8fecbed672eef283d18af95a464b6c44bcea424dd7cde303afd1264ecada874f71d2ff6c5ed9ba87f9ff63ef4ddf1355be7fd17f894173da971b0195489902aa40de29f8b42d684c3451f9ebef43adb50a34e9defb3bfceebde73ce755766f11196a58c36730f85ee798d83f296e1b8fd618d6e9981d8e96c662ed34f6b50eb19f1da5f9bbcea16dad89809a776c4fb9878e85521813518a5adaa9ffa6e7630a7af332452c12d4b832d5fb53d8b752e3cfb830ccdfe5e5d1ed447cd97e3e7ec19af7745531c4b647ceefc6402fdf00bc48f77ef518e81da3c680d2b7377c7721ba31d03b468d81f69858f82c543e3ce09736d7eb16f559efd6afa08783bbf1dd776b03ac3dca47bcfa76bdfc6e9eb4737d5fe8dcfc3ca6b57b2d0243c704bd318458afebf79f99ed5aaf742062cf1bfe661f57cf32acd11bd3636fbfd9bfd57ecf26335ceb612f88a79147de2b30070a5c9b958fbeaa35ac085726fd37ec45ba91cbf62a5732b7c3907417b116b44888ebb2845c3f3d696ed7daa5ba95d7800777b90c5ddf250f5cf016fb41d7b0478d495b92be22f812babc81df4fe4f6c044489a719037ec24fefe91342a4da671348185be456ebaa37bf8790b3bff96766e2ce61a8b731f77602ebd428d1477f59bf844c5334df00be218f0ebf90ff349772102a875a5f24990ef96ca15fd33f9456a0cd1dd310aeb62626dfa93efeaafc7285ca9c463e489234e1cd646ef53c531f7da04c70e2f5f2bbd18d2845fdefaff3f1a33b3d0f52cdc13e7f389f2d43a91667588fd3e91be5e340f698ff15886bcecdb88fa4f1d3fdb3aeebff51c6f3047d65a95fe2bdf239e5b8c2e881bc6312e275f39e0c8fd57dcf312fa80909737e041eea7e4471beda2f77b0eb3cacd514382f1b002bc60b4af717f1f299e5c6cf88336b765b48e43fe78e035d47d432f3813ef51a6431d939536e9a6010e3d72730ff5381b6e73fb0b0ffe3b3dce067a79513c72ef7998037afe5f3cf943c28e58ea1df5712a1fbc21ccbac68b4be01f02bf456311ac017eb77cd050ab9ff0da5eca04fbcf16d5767dea477f6c34ceab7d4fa7d3d26003bedfba0fcfd0478ecb27dfffa0bdf6f4e80da5f4a3d36be7f30b6b658a5a8d0deef9c11c75410aac35ae743dd7b0718f70c5ae77ffe801ac72728cc550f338e14256e4cb59a4b4b7c37912751ec2f8fbbbd58e6ac9eca07b80e950eb1ce0dea16a0ec4a5e95de359f37e92127b70e59efc1a59a5fcca7c76806b880ec18430b4fff477638dfff1e7ed7dc649a99fe13a45bc90a57340f4e22a5fe93cedfb57f509db19cb69a74d4979556e0156a25dc7b59e44ad7da1708d393b91d29fa941db17d7859511181877048559e89abbee89ab3d90fa1e955e97b8282f546f93f1e59d57be9f23de65e3171447bee9debc2bc70f352a177b240be251803f2560dd62e14771f213f0423270b08eb4250f4bd8b34aa539483a8bd837158c303fa97f597d53535d594b759fa111dcf8af8bc52befc677913b573eb43eeae4f6faf7d23f30f04decf004d64f58b7d2f3588eaf2f3c0d1cfdbbb29c6a3d00e1bb65459a366570d7a7b5aee39e2668bff77be1d505fb64d1f4f13b05aec1b2517b4b0fe3589ef8cea1fd262bebe55daf7de50526d586d735e020d05778dace03fa2c413f3a38a77ce395f2dea4b522493adf0df08450e3349fa307fe3be5006b118454a3027fe6f01a911e8208ac08fbd70cf93239687f68dc54893dcbc83a6a6d3bf22a8e13d237523af92afec2da932c26a1d64d55feddaa0ef7d3f8fd39c22b371ff0973579bf057ffaeddbe36faff7a1d6722bac7ff4dbf6e36f23a7f9655dfd38f5bd1c57ae8eb53e294688932840ed2c88e12a6f80797eb6907f219777fba463557837fab75616f1b64f26e93427297939c058dfe05a59b4e3b8d31b68732c1fb5394e91cef3890b5726106f08d46a7fa5bc932db506b447ff2f9331687ca3d69893a417d4122a86fc50200eb29c907f84444e1ee2a23f10b735dd9027a675a6fd615e4c913362beaafb8993faf13e56ebecf870dd587390a845676f071a1fd13883df5dcf92b46626cc891acd6d1d680e85cd908fcf56c48f0d6deab16dc721d5f20de429c812fd84999eff293cbf67faed34be6e79ba9dc65307744c24685d91de8b807cec24218e582da8076d20a618628200b0821171d54e02bd6fcba9ff451fa1c8b6bae7504c8fbfd1243769ee64ab3d696622be4c140f9aae3a6f3ef05fd82396e5c7aa228dabe0957cd5d78de65b42bdda809c6c4d3d2b23ff85df37688d99dbb5eecff5c628aec7e4812c4f0c7e2fa05a6702633450bc6f6b34966e78bfff26728cf95ca2b106b2b4d7da7367407dfa29fd5d2784092a2daac347847714c53be8888c9e90bb3bcf2d13cf0bcf8cd60396618dd87845cc3d788a72f9937a166e74709e783fcf10f5003c7e583a9ffa0117e5f4ce4328438eb4f6f227ed0feadf94e750d7e59684d59e3e1bfa3e6654e70aa75463c7f5fd10fdf65a984bfde1d1d3aad2f50788a3087b047a03d81f39371ba80ffba1c1064c682fd686577e003973e4ac285fc9e413791c60cc6c294d2da5211a9a589b0a38f5d4005fe84b8c8557cd56bf038581e9f47e5fdab9dc79dda973536fe14638f2d80e0788917fd37153b6d41ac4c09f61fb42ff8e1ce8efa29e467ed01c83ed66b7d5fa2bb9c2e4298d75d47d5a628f54e3ad3e118fcbd0e36a46b802f4c7c75a4fb47f267cbcecfa054bc30f12d22e410e181723f4152dd3fe1a4c9e33eb84bc70afe33bee2f69a7a55fae6dbad27c62c443a7a318f0516d7e72d4f317c7cef1cecf4dc81be1ab719d986eb476538171c4f0a3c30bc01825ff4b984747adf5151bbe1bef49671affbdcbfdfbcf47e4310d7d74e37acc51e346c5a8a4df2e23d4a2469dc1acb6790db55456810f7394e9d8fdbbbcc85a75fd3a98fbedbe0d9f0de833491a736d2c3069737b5f69072d45fdaa70bf69e0acc9c301fdf3d25f77ba3f8c7c4e138d5b36fb3d89a9c225228613e6a7046fc1d4533e3a9234b58c4b5fefdd871a70ef5dd8f5a97b176a5df95857f7ef0fdfcdb4bfee24f0bb91d28724bda1296987fb0dd556047af1c549f9a1b54d26d71e5650e30b9d28d35cf0e9caf63b9e85c2c6ca5fb4562f89df03799da9fb0a4d74d3dc1fd5d7dc92cfaff3f5ba08ef79fcfc7a5df27ff0ba800fdc7d96df5f7352fee19a4917edfacd353f3e4bc22a974ff4fd04b5a51619dd433178fc6c4e7c7751bcafbacf823666c53ac39ce64741cf4232dabf2f6b8c1be3263a615c6d761a816a7dd03de4cde1e15926f555eb984e1f3e8b4747ad5faaaf91be57d2339c325deb575aaf3e33783ff77244c634869cb4208bfd48eb07ad35bf7b76376fba1ed8f1faf02e87f40ca366fbf899b9eec6c0c73f1f9ba84d6447ff606cfe7bef99a5438d2ba06bd49fd9f40c0baba8fa6340d87f18032f3806acbf1d03c6f642bccdc82aae3adedcd5d7fe33e2f6715ca6d433941ae3d5dd977ac76d6cdd9b6b7fddfe74bedebd1914f3ad8dd9677137d6439b1fd8853cddbbfa30d6fc559e8ef879dbb96acfa3ee59481c4fd7ff3f3f8b42d5804618bf43ac817d9117a5c181eb7a31f5bfaeeb6681f7c5fe6e8cbaf1b45b3ff3c677bfbb76f43ee88f2dba4ef7efeefb4fdf65997edf97b0d3371f3ecc87f9dd5cd4cf32ecadd3fca6f54b7e8d1ee6f9e96e8dd163c8fe8fc6508e63c8fcef8ca1df5d277be2b6dec34c31fe17bfdb68fcca3474837ff9ddfe790c92bf24e0e5e68d338e2dad03f1067959b9c2baa340cd8bd90ab589f3f44a7c1af57c40b33ca4e753afc9a33061a8ff695878ffbdcfea2755f74f6bafa804f41ad2ad27acd150e34630a6ca8d6845b1eeca8beab0327ae7579f9ff81e63df74eb156236d810b60a7ea73d9fc56f27b8c6b4f6a2b1c28ccd8a9da3f12350a3b88e4bca5fa56f855d1f7cdec6863ae6ee1dbf409caf48886ba8e6b09b4f743c4e7ec127beaf1a8dffd9311d3326c2ff88fcfc48b812a891b170859cdd12bd7ce746706284056c7edeee9f95f2fe3e96deac87cff1b7343712c58d8daea4ffd97b8f26f660987c7c87e9f6893e5b35340ee589b4b6153f06eafb13fa4e9cfee8e6f4c1a1df78dd54ba7ff94e79c9ca3e6a9dbca21b1b56a7e17d1e60aef49c8ed1b71edf7f642f75ed6105f1885f54c195e62cd510d75ed0d314eabd9f83fe7eb026eca0f43fba9a857ae77b1af771aac752b43a1cdddeb97ce26390ef679cf9e4cda43c0980776a4aacff375ad32509683c04a58be3ce44acb3a84d8a0bf0df27f837fb5568ac63fdb1a1f50ecf13922f7a2203e21bd1f35ea3de34ad1b98ef5d50b37cce44853a074143cf21c966779cf5d8e277319cd4d8dbda896bd431d7da36e579a331619eaea7e07a3525be265d57648d9e500f72b1aafb9a05ca9f4061513a4f99f24c39149d4fd73945710dfb7c85f6dccd0cf192252b5cadbda3fcfd1007e170f381e380defc9145fc6aea83e27d290d78b5069e62c531014f66edadd3d5921ec7aa1b1ac111f585becc7758a7e533d548fe1b7375857a2ded5c9da3b6dadfcfd5d93be2c5828262e2fe5c4d8f373d57f767e80324b99ffefafd5c7d469d8942f3f48788452e87a427ddd532cc94f87c21612293428f23bd378a12e2cecec77da2ebb4c0259ef27e4c621e1d5debe88d1198178cfc42b0f78d987cf46b59c2dc11dd6f5757fc6d47c07871d71ed3e7579a365988d7cc5ef9813f6840f4ceafe2111d5f066142da47f81cf1bae2b8377fedc8853e5ba9f855cbca3368df8aa9a7897d195ad3ca1dd568ebb3c64aa7835b57b368c7c952bffbb5ad6bd297b2bf27ca7201d737f88463998b9cb6a0ab4fd5baf61127b9d2ca8fe44f15c3927e6341e717b551763e5753d46be9af559f31ae89cf3486e3118e9f4a5f2f8e6f77e3b170deabddc729f9bbd70dfe8ebbf28227fdbc127ed51a8c34877a316e6471bab6f618d2071daf31068853136bfb9eadbfd3bdcf693e460cc2a15b538b8678f6bffdcefd5831fc2913f77974487c20aa43527dabab43bdc07b226d4fa6df096ac23cabe79c6da7a51798ed5ce30af37fecaf3bea7abab143b5fcb0e1dfd70aa157e48d9cc88c2e5a376a7a74a97796685e20bc3f1db7c52358cb92688cbaa9ceca98e998b81b5bbaae66f083833d42e27bd7435a33a4fd8a1a8032c6d8fe5dc75ae88514efeb1a63667dadeddead700678ccc60b746c1959d5e5bede4f3abd54d3abfb35db003c8cbaba6069803639d4a6b5a75484f5c180a176b9feeebeabef86f40e50fb95bcc104d61fe358f327419bf3361af7f6ca29cf1c19357fb5cfc455d832dc938a2af8a05e437c3b0d501bf4c877d2c3b566bcde49e26d1f16a8271137a443a2efd9cdc7a329f1e257c4c5b743d248a1fb73f3a9f252c25c97b846e541af9194db5ad12d228d605c5763cba4982c58d17a6c45177d5c42356649cf4e22ee6ec82acd4d0f688d8d61cd788b111fb56ae8fb624858dad832c99740a2ae65001a8cecc4eda5a57d25dbdf468f89b94dfd9ff3a18de5976d6ce0059785d6a82c865cc7646a2cbd7ef719ed8f32a9f4efe40df2e8edadbb726bf7cb33477cd542f5161e3eb30a536b9427f9dd7763c51108872b4fe7c95bca59d13b644bf53de482cc5716f12244f77cd5f7ce4e9448979176b1ed0d75aca2f78676feb5f16a6e2ce837ed50eb0680478c67c9947846a1f637dd7471c0630c01188a1de90bd526adf5225b5eeff7bb5c7f374eb61ce7d7508cef8ee9f6b2f4fb5caecb0758d0c5e925e5925e3c9539ada9da8f2abd5cf897be0eae6daa1ece307731afdd775efff41db7f4428be284d2c4581ae72be0b504add953cc335e3046593c539f4ed43a07067f59c961fde45433a77d7b887381c139648598db41aab5587edeedebabea7497b76cd2876b6c502f419cfbe706be0bae57f118fda011a71a35b38b9e2b7a4fa671e0cf0bbd0e49ed59b726cf3d8a11a866ef990e6f489bee7cd6fd1bebccf1ba6ea11ebba489721adec7762ab7571e5a30974927acd43163dce8718c315389f5debea64d31e487aae1bdbc2d32eff3307eaf7dd3dba7296729283ec23da0761971a16c66e9b9b4fbbf73e9eb5c62a4b3111452e5d7be3c90cef3e3d82f2bd5f3acf4d807ff061998ddbfd5f79e96f1ddd8f70bec97826f501b470dde759f1ce6df8ce61fe2f4480b66866b718358ad69b873682c9dc4b83fd6d5ff23cfe079998ebec6e93aff018ca7f290e8f4fb751cb202eeb513db5d3c1bd21c6bea7bdc8ce2cc86b6f62a205eb0ed118f71dec5b1358c1f75eefcce5f324aeaf126617dad1f5f8eef7a61ce43aeded5f128afb7cebd7cbe7416e0e387da84c4ad0fbb1a42af9fdbad17e595a11e66a7714ef1abaa2f2e08a3b5206dbf98ea1bfe34445c0ff8ba840d3f14f697e3b30871b6e5a5407ec39f8f7fbdd2f95715a7e399f2ee47ede3a241ec42cadc7e8e1a35f5a5c3f6aa78685074634f9d73913977788724d9f670e24a67605878b3be2e3b5b50fffa7fee7714572b76ffee187ffee76b51e3e98fd7a230781eef8e49af1f9dce68ed845570d1e3c8222fd770f837e348f52c05f677842fc03b1870813ee267a046b3f350d38d3df1dee7ffdf8faff2c20fbed49ef2c2b7553e86b51b5a5764231163f2c38ac8ef0a7355c2aca7a8719a1306146b3392fc86c95b9a7245318073a75bf22518444a67a340afbedc21be409c71bafe39a37d4686e8bf14585f6ab1a27ad775275d5baca1be62f8ee725f743a35eafa54cf1cb82cc451b0b693877bbefd1f7bcf9aa7729cdcebba525e20d153ca7f619e00ef37d035b4880384f8eb648d75eca4c9b1ce12108688fa294bfcf7817066e45d46bc2cc452d13d32c40e4bd4e3749266eb2bcea4c279a8dac1403f0fe5e1076b4279874f6227aef55e6a4bfbf8a6a5adb991b48f66b9413aac2bf2fe959281161e69246acc65a23d90ffe37bae341e19f3feee9eadd104781a70cfb1e77f507f40f7c344fdaec72fc6935ab71ff2d3e0b1c611c7675a7bce9cb06530ce1cc45abb6b8fd375e9fa469cd52f54cb803d9adfd5452816e98e470debd41c536f06716388d567a7c8a57a62f5f95d6daf5b77fb3594eab176126c905bf5fbdf0a1bdee8b1eddebf57f649cfacf8f25e9dffa3c672dcddf301ef795e3ece5feb38fea7f7c0ed7c8c7a1c2fbaa746ef31c3d84f0ac422a19654a6ef83fed2b5b07ead3f216c28d6f4ca2aa07e0dac67d2d7eb19bd7369a3bfafd6aca99bbf7d0f38bfda1c98de03adc334dfbab8f64cb18ebbaa5077e9cb3ac1a8dfc536d512b8ab543f37fe6e5f6056ef3d7b77cfc97cede5916c26eed70b57ee754d07b051e8a14a5857ac95612c77ee626d5b63027a7b4b978396348670dcc1bd47471a831274617c8cdd82ae2773eeeadcbdbe52d1f8f77b95c66b0306438f6d18c773c5351c938e2be1bf7f5c23e22ffcc3f7dc8e555d1b147763d54deff124fc7e0f6429e97cfcfe5eebce5ffddfbf57c5738f265a435c629ef472afe3aab97c6addedd50f1abd8666fcbe8f07f821e37e9da9dbb9ee756bc4fff0b831fc6043b168a3f5930e7cc726b487fedf77f9efbecbb31367478fe214d23f9089ec625ac47d621ff893e37a2d51370cfad46dcc8bfbce5d6c2b3f3a4d4cfe0fd6b0e8d4f9bcb6cfd36cd6a877b9acfab9b7efce69ed4ec1ff3fca681c68ad6e5a8f596f3d86fa9ac6c28eae6bd40f9137e2959fb56f1cf20bdc5044d6e339beacf156adb1e980830bcc35f1a6d29f06e591abc4e9edad35fa9e2b4ec210ce592eef3c0b5346dca11786fb42489ec73d0fbf48f80c753a42d2d7d67d7cc91f9ef9e888dc318bef743f0d73b77af2585789b3aa8b99bab1a6713e65a6f7640bf139ee42ccf4f7218f600bd23ec06355ef36024fe279bb37510d6ee5465acb38fcba5ffc4d1d545fd714cf7be1d4ffd7dcae826a52188f159a4fafd6a1ccf9e4f54f8aef64d8e4a0af232bf0c4f366836743e3f933d0eb55efd098531dcd169ffc063a69c80bf4d71e235d1fa5d396a01ef5663ca2fb6ddaef4ba1f448a6df1cfbb2f9a58fbd620fc95f7941fb7e8ef45b12744b1047e6698deae766eb82569cac18797683461d276d6f7dfd96aa75278a77b9231f4df0244b486733d6d7728c11efce0f61c351b34569c3c99f8403c1f1655e58f78cde49ef06f53a51632cf89ab3285eb7faecaa739204fc2cbacf664672d75784b911ab1a5e64b30af990a08d9382964d4f8fb7f7379a7033222e8b5bd27d9acfa03d90286d71e9283f22b5ee25beffa52f0cd8ca2ad79c3faf891ef21d3aa63431ff48a886d2e53670cc7901f9dc71c8088f02bdb31dd73c79533d8b624ffca4b3d2dd547b85f849791783bebdf6769bae3dd5ab9fac2be49aa28fe6f2ce13d77fe787e8956a46a087adb85313cab31241f522b8968874de275717e71bf872121f14bfb332026b45efd42e5f71bcb22e2735e19a34afaeb0a30ab56cd04f6a1103ef3d829ac4848bd75eff57e546865e4bec57d280baf18a8eab865a1f516b03a0f7a4ee9dd238472cae75745795aa9ffbe9e4c727e84622e78f383cd916d757837c3d928deee3f67aece94fad89be986cc91feea13f0bde0d775c86644bbdf40ce7c7fd3a2e592ff6fae33a3efd661d7722eb88e72b2ffdfe7c0c3a82efacf36c6dd711f288b168ee683d23bbbb3fe869ab78a6eb8337db57f2dfe9f5b28d25cc0f8337fa3e03f47478c7d822469c78803847d9ed09959e8ba81de8883ded69bad629350634ab2997fb72eef280d7dcd4c01b4f4ddcefb7b7f81eb7e0a2cf80dc641db718bc803b4c2a7a24bf771cbe3378e1019e41e35c298eeedd13cc83b4e3f7a958c50e9e698c2e3a9da33917f22d4a4bcd2d90d057c5988c70d45bed5bf30d2e21f816779028df2e8deb509ee922bceb592e8877290b78f60fb9bef8f7e364f59d05f59e6c67d29b9fed3d3f4513437bd6a9f9489e7909c3f16c68ef8d72f71fcc473b72f57d8a7af5b057655d2ede8e15d9c554c9ecf238d6e45d5ea46a201af3c6a6ec711fcceeea3a0acf09bee614d3a693eb4befb9b4eb1df8cf4839dc547f33be627af6c0172d90d72cb3d2b8af6b8c1e30047ed4c302806fbcf7e3cb1aab3023e9d15f1bbacf0db93aea75a6f73e0ec9e6df7e47eaff0d56c065f0e746d81b172aef317bda41acd7b7baeab960fb87087a900c3d4c7d26661627df141daf970eb7dab8cbb352f05070d6227862e2effa43eaef2733eebc959c38a1716540cf88de19f55ea5f8d438e586f9783fea7d854660935e5277bc34306f9d1653dffd07c73f615fa0dd07bcdf1e8fbad66b63a67aa631784de13bfa415cd71d33c2ff1dfa8dff6ff63507a89df3f25fe85db67be87fdc238daceb04cff9fb3ea8790cc11711bc167283ff5b7b06fc3fc299d11ae5076512614e7ff4a21835c5618e619d76a8f733e0276d0fe8fd332fd3d2c35ccc456ef07855e97d29032c459f0bfab3d17512e2abf4f16d704faaceb2f1b18761b3972fc741fc02c7edbfc45b7dfc1dc634edf996bfd9bfc435dafdf565ffba5bdb5da6eff931ee20bdafdfdc07d63846a76fae6d40fac009ee0b39613fbf60fe3a4c65592d517ff47cf87a4e58affbe7fc0ee708eb379e53f5b1bec52ed2b3a33a8db98c1fb1a00272edeae72d429d72d4cd7697779c6a61b32ece78d27b313ca3013f94c4df3416ded79808722dd47cb0b7d4736a927f729e5eac7b7f9ee30ecf330cb51e347cb6f102f2998b4a77eb3e60331faf27fd6dccee9d8c768d2e8c00f4c77c9a4ffd98f6a7ddcd69cc9f4cf0829489d6c0fb979f15c4ad578a63a0969c6dc7a5d632e5836ff673f5bd25e6957a3cfecdf7f5fa0231c80ee3eb678cafdfa99efbe7e7db8b35f47954dc7efa47cfe09bf70ccf408fedbff9be8e5fee9e81c6d97e89a7ae21abf8d7ba94aeabbc0ebfbc574328dd93c8743a5c34e1afa18fc2172ed5fab53fd67f108fd5fa7e20bf96a7281d9dc9b3f13e965adee1ae68ee1798472c9be2dfcd2991cfefdd63c4ada3bfa25a4d6a22a69e7df05d4d9aac3d4cb731c43ad781ffba5edb75a6441ff639e9272498fba79e8adf96bffaf504e861d23c97c9567bb062ee7c26efaad2a3fbf568aff2d90e6b35a2ea78250968d1725135a8abe16f407fd989b323ea558b019cb7f88c0857e76e5d2ebc01b70cdaafb65a537887f7200bad8f83c7a07e9ffc88e31fef0fefef8cd839ed65c52ac801974d09fc09eb4a3df2847ae1e54eef19ef98c32a2f21f4ee853e734f739aea1ee584bc2b740c41dcf4bb318d7b90cf45f904b17b6ef3bd419cbb2d6acbdaa8d3bf9c1b4afb49f986b7b1bcc2f1284f97f03ff9b70c0da5e7a9feadbcd193ed9472bb62dff7e1e0a75cf8c4b75b165ef1a7e3adf6f88d089c4882a6563a8d402b2826cdf22de8a3d9ce78e1a19fb411dc56da6b44c5143517127df67e7e9257f41f8edf120636cac863fb6fbed738edf776da4b4379a8a9ebfb003ecc1fbfd7eee9fa99acab3f3e9341fb4c243c43f54ecb3f1e7ffeec3d73753c33967f3afe8cc74f0b2f406d70ffcc0fc12bc56685557af389745615eb3fd3297a57294dbbdeb8a73cfd83ef8f41ff1e84e1fbd2ad75cc17eee1bcb9c12eedef3dd61ea1f6bfa43d4dae77ba86fd093e3dc595ef8df6bfcfa4670dda835b8d67283ce07232ca477bb811a671c5e500ebc38c746715d71639ed89c27577394a64cb29faa677bc20d8efe625ec5dcf3c1d3e7fe520519e6c58c8937ee5fbeff69bf395b4d1936cd6207efa95efbec93d6ca17de6cb5fe433bf1d77fbc2f94018823969b1a5d701f6697fe9daefd47b27af3478fe17d4df9bbdd3f595e916f59bfd33df5fc9cfeef26c80471613ecfa6c9036badabb17d4537ad6fd12a52704ef4b282d07f56e8b5f6777eeab5cc72de333eaac7b50eb230fd4f159f730daf9045eb5e678aeb180cb77c83744c31bf55c95363fe41e9443fe187e7b3f07da23aa61fbbe52556761efbfb99f8fdfdccf85ee673deeee67ddde8f0ffb4f7b3f02fb60c56fee674dfd696b40f733e47641ef81c1fb41dca2fdfafdfbd9693f8601be9fe9a662ea7756e81f88fbdc5b87c374669d8e0b782b11a6a1cd1b932eff41cd3786757ce3d6e97528acae09587aac3541dca48e8db2c863aeffedf398dff4f3b0bbeb3c8f371a9b5bd1f3b079f3d7fbb7efb709bbe761b5cfe33c5631ea8eeab8d595c6eb42b0f776eca03f62a66b8b62f4d1f540cbf6fda236aaf6c6afd7e311bcdff4e8b176ec827fd5117caed82ff2cc7efef63cb3ab8e3f7605de93fc885c35d7be5903c56fee8930843f1abaa74d151adff7757fd8bfb916cd6b61ed389d287d0b77d561061bf4ddcb71bc1888777c015f6115ef210671445ad042eb18aa7c4c69e111c6c5c4ef6777f131e187759ff2f44e7d78d2c24b32a5a5a9745e21ae976ffc10d27a9ec0774b27f27ec25885efb9cb9bd6a2655a87d4189e3b1d283d6ff1f3733b17bc67f234913e5e73b9c2f161210e4052cf2fb98d6ec00776222666ef1a23960596f61d87feb3ae350bc42baf50333746ce9a44bd49393d4ef11dd8e003e0476d1e92837ef300712d722320c613e971dceea791b5f537886d9459b0277d1569747ed25aa3326353f4dd55f17d59cdae4cf3c88c0bee13b3907abd8d03b543e3a7ad7b1c8dea81bcf02408525d1771a6540b012fab6577cfd023f610fbe4fe2b38d328d3f8e10179db85a4c79d95102b4abf7d9f11701068cffd61d23bd3cf2b0b94a7481bbb6d761ab3f54e3acc0a7f2a955e306005609fe131706778e16afed241d785ad9fdad3efb9a11ce9f449fdee58614c8167bbd01eee3f106fca4e1ceaebc07b92a89362e7580ba91bd4089f973e6a8b37fe99fad979a37be6061cc74edceab885a14b9f9faefab7b38a62a5f96647d81ad4e3ed5f23f49be19c941b3633fddd50ff7675d1df69bc01fd36eae0f7ae11ae2136fc6d28c2f72e87cca7a0b78c5c0ff433a7b952a07f400cbc2a276eea8739c2f65aeb5f8f8b7adad55c157ffe43737ab1761267f24df7f1bc50cdb13cd3fde51be16072d4ca11b6f3dae3be0056496b7997175aa70add37095ced71f8ebca78eabfc52ee22da43cc463f4e58335163da8b5ce5384fbb27b87f790e889e01f418f270d6d1ae36daeaab4c7c5ddf363edbe9a18fe8c634e0db826b95073293d6f6395937806af0472891e78630d690cc9e5620a7331f27cf2bf70087b01dac584a338773551b597b001afb4170f78bf4f23d44cadc79b09d5f03cabd3c952f92eebf5aacc42286d5ced09200f1239839e81f96f8ada6027e2b3409c2f31fee043ea3da1bf8023319fed3c9795bf8a9fdef1f742f2617feab42b542d17cfe77d2ed3e3186af14ced81c918e26dea2f625c9585ea1813f750f037914261a5c07344c501dcd8f4793510af802f3a681a3ff7bf1b79c6e3b1feb7c71abf3bb6c392a9f191b639ea4f9c4b72d6c6083c15771e85b2d3b1a05ee405b45364c0686d35d0ab399363f4cc7e5920be2076eb71c76b847e6d8af70c9cd4fa950376d0e389d6ad7fc1bd01381f56786102ebc24d49bf11153a4e3a5f19bc3b77b9d35a592f6545ebac543d8c48bedec7249ee687f6717b41496b9994aade99e03e1783cf9b417b82ae174961a1a7588e7df28c7a0d1baad7dab91beeb688518e106354efd55f136bebb26a70fcc88da0f7f213ebc60afff102fb8fc669d2fa922157268b34dea6379e11d74a3d0e7837a6c3657926cd8ca2420e89f95743bd87b8f9ab7d1fa6f2e0472ff6c29b5de91a4bf113306be20e07a9733ca50597fd34d5f54bff8dd6d375a6e32ff4efc0bc5b7aa85d3fbbc463f09e526b82b975616c82d74d4eb83135e714d735d371ac79d41824e58be385bd1ebef2ebedfae266a08f6dc78ea0fd01ea0deeca43dd2a61a8cf934ac55aedb84d509b1c63faf65c8ece7d04ea9823f6a83df617bf3ddc0ffa98089c0f9d3f0f5b7e39efa4e7250d7e365d3dd3cc356eb33d97fcfa6c1e8e65e4b5e6cace43befdddfdd763efefa7c3b4b1f4ebfdd4aa96dc1ebbacbe798e8ff77bff1c231d479bd197631117d91e5b75f8cdf659e4a87302f7937fbd9ffb631fcefb703f1deec20abe3c5321c85f8e892fe3edcfeffddbf3b6e3497a5fdefbc3383e539c0d63effe58ac1930871bc32f63fee11aee8f7d18030ff776ff5e692eb7e7adbecca587f1ffc7b1f5c7f9fcc7e7f0f07c0b11383c63301fec68fc2fcead3f8edb876beefafb56d4cd43b5afab7958ebb84fb057feedb8bf3fffc3dc7c78d6f7ef5068ccaa7a2ff7eb16e4e3efc0176be3a02f73eae1daef9ff797ebecea1c097929dcd593ace15863c6057eaffafe7b0ff3f5e179ff714db99f2b0fe3ff619cfe71edc53a497b6cfc7763facfe3f48febcb1fc729beeb04dff5c37c7d98dbf7efeee15ddf5f03c630edb808ffeef93eac03f7e7fdf37a78bf173cae03f7cff761fdbebf863fcebf87e7f0c73d13e35b75ecd7e77b7f0d0fd7fb700ddfc6000ff102c335ee614d1e11365c9d17af577251ff2ac85bac418e921446a4e6c5e809799dbbd2458f6213eb6349443a99a8d1caef62d4d5dea47e0eeadb0d317f9129fa29cd41d3e6385ea526f18a4dd2e68cc4a5e39e62de07bcf81a389d69346ce72c57358c6ddc5ec3ca089e88134f1c824ec76e84fe7943477be2a5430fc652f9b1aed4f5fbe9a4cce1b99aaf29f6c6f99db6cbb9cf177337dad350f5f7a711e8120429f96969ad42ffadd3b480de9eea33c1f3b5f921c8e7da0fcf84f50bd64ae21e7d62ede2437b2ac767493e8989809e2870c783b3f2c269e785753dabbc27ddba0b119dd782ab6796a7c333f6bdbafb531cdc92eaa29f6be0f3bd7313fa5885115c507716bcc044cf535e0ca10f9a11ff7b48bd68ffd914a4af3ce7e9d02daa4079f5b4d7b1cc82b3ea3d49e5f3fcc265a0df4f483c1585df20df1c31e8fc53011f247e412eb19ec0988baca1bb56fab3759be35dd6c44b4cb6a88d1a0eb16e1514a8f719f7705c71c248fb6fbeb225f1c80d7d1ea5550c5ea731f82fb5f9e0aca8abdee7c0f52be93d342572c16beddd5ade46844fb9ad482b02f3dc753cd29e8bea5d1bf7da02c5187c65e3947cb498c6dfe44670ca0daa4fe1bc31a8ee39e8ee379534bf9367ed0d74be602f30bdc72f91feab3c859ef69647ed5ce74e1707396141a8f551105f908ec66b176af4b10d1ec371553b3d8d3c37415d0fd1696c625ed8be57986bb1fc891a5c5a03eb93ef0ab3e7410e3eae1672d3b4d792df604df7951fca18e7beb1a63a77528e351e57d5dd8823ab35183e95f721faa8a9bd04eb7eb91184bdfb509afab1f013919e55edac1d275873507ff3ea68895fd7294f59509833c2fab6f14d587881c6872c3ce6c4d608e320d46992858a5572f24e52f107fb883acc30ecf74630f9cdf16d8c55eb67fb70ee54f87e28406f36f63cda5fd5ba1edd34a70fb83e8776ededf9e026414cbd69c8e1815fb9f1829bf845bd3ae8bb088d916df72606f5f7c61f17f5ec6e2f2974af146a55c8371ff0fd35d6b53cd0aaed7e5b8d754edcce93f875e7997bee7e5b61cf26a44bbbf267b43fc33ed6fdb6ea99c0dc08af7cc7741db11451bbbf4d1efeed76ff56fbdf33fd7b23a4935838b650d314f4aa71fd576b3a230dafa490a439a734b7ee3c2e72a3748b5ddef1ec14277beb522f42f3af1a881f63a5c37f767846b1f5887aab9af7baf002676e3b8a7bc20dbf29049b868acff2a3fdcc0d33c577b123cf6771a67d74dabfcac73bc7b8507959f98895998cc60afba174c8460ecfea767fc8b9f06ebacf02e719eada683b9f533988718d62a4419e9ae345d68d17f2ff5a51cd0febee7def8f0470174e0cdcb6bc3c20b6c1e2970df1a9acc1909eef06e20f7fe5cd6ebae60cebf636b4b71ad7104e89e7835c59190e63a8f5bea0bfe119b1daaef610343cc44d8d90df56bef15fa379bf0e1a1337d543df39d799f5e24867199327af6c94de07d49f3e0bd25cc96af0ed33039b55c417cb8fb8f744d4fb13f1fd9a49bcc7b2a63ee2b951bdab4c060bd45e8ab3c8bad7f13506f1f85af3a49cb57181f231f38277ed6b6ecb0ae797dbf7fae59904bc59b675cb6ad60006d1bb70c333341ef1763178e53f7113f403226f7ba3cf92f83ae495efae8de04aff2fcf821b6a6447f3ce2f64c80dc09584227a5f2196a5447c8e4c02ec49a93e097066941659ed70f32fbc674761fd62f18a5c48aadf9fa8bf966d0e9187b123f138318f66f0ffeddcdd64918778594e637943580061b67137e07e00efe26e3c7615caf3d811702ef989bd2b19a236a1cc4827a6eaf419ad638878985bfb4e64bb77d9919aeb6b8f39858dd858f143c556dae7d9071f3cf2fcc47eb21fdf8f0fe8b9caf01de30c27cf72837054dd3db237d48b98965e443cdd17b65f9e422f7038f9aba7a6cbd29afca07dc45b7e968471b54c86b88ecf640ceb5978880843df945e5fdb9b21964806cf3653fb6854790a6702f9401e12ce2c897bcf5af86ee90543f25f5e59e7bbf30be10da349ae78f62b21a76be3d47ee7ad8d8f73e5c552fb329107d5ef89471e7a722e428c898887c6b5d73ef44f910fe26faac020ad55cc799c187c7b3a4df764ebadbdd96545d85dd017ade09da8dea6c2fd6c2ac43a64aceb65ef14c602c68dc2d47a66946dfdf67daf8ddc57f1d5c11917d611d6d55469054d97fbe137efd56bda3c0df6dcfa4c78b8508d2fb5e6be172aa6f2ec28a9d1cbf63c5e4d19f1b21abcd773b43f8e0bd4e04e1a39bbc306e01ab856fc9afb77b6b2140671ba449cd4dc6067e57791965e7b7f4be1fb11ed234deee3fe73e5bb807c226dd877bc0bf616b187e54ba6c68dda138fa5c7a1c601fd289f09e2201f3f7ae749c0771df9d236d514d9eb1ab113823c9b11e3b71281c2c1e4954ffaf284f7b2dbdf4c50d71778e698af03afaf5d138e25ead90be8fdff62fad98f86846d4e1067b5a278528cd45c1706d5147c1992ff5ab78f4ca1e693835e59168d71bd7989e2eb8e0bb9487f610fb3867833b1f990f208d5bfb1a28f923c5cecdae8c5223b2ecebf22d08318cbb1aa9bd5abfd48f785d6b09e98fca0b5af02fcec42fabec2764efcd755f2f4dcee1bed3af9ca0ddfa6fb165950cd5d678c7dd744e1cf1a7944dce28dfa393969eca5f2556bd1a44a477d0bbaab233df69fedc8d371b2ef3b2baf567327372a23c21a45e1953ad76ff7ca15fa7ec39a1a8de76acd050c6602314204dcaadae1566e9584c9b5ca05cc33dfcc11dbb0cc025a0ba6eb4987d3dbc0daae3002302eb5276c3d6faff961deb0c916eea3a9c7dde7a7f7f6b7294710c27f8a85d2a518c649e4c39a555e740e9a2a0d5d8dcf97500779dde8f5fafefac1abb6db1f7263803d3679401deded4a7911409ebdeab08c03c0afd516b72b9df7436dcacf806773c4f8b51afee1f9b9e26f7e3fb4ae6a8f8e127f0c73b47462b93da32743b4480903dac32d65ce6c096bd767ecd5b7e2cb7e65bee7e36bc2d3e16c530517e5b302dec333f271cde19de65c7b3f508da974d6621b1607bdf6e9399f24a5c1f1f74ba85b396b111c714d35633f7852732cf1bdb5989db8e1dd22d71fb7ef3d029ca6a7e317ab9c507f209c505c8635a0c41963cda986fd5ed805ea288b246ab04e708b60df0d377bead1602e69e65ef7ef5aad6322bebe7323fc8c096797f99f9d2e136a0b1afebcf4828fb2ead631e0c299a819c4def8c1b11e729c686de71ee673f0fb763e2e0eb977971b49cfda08e551d144d652ad852b23b852bd6733455d72a581a572c9db0aeb3e2b41eba87962dabf7d4bf352aa3a5d164de746d8a026a7beb622cb3dace79d31bf71d71e331eef5164ca0b093c24e0b817ed83dcedfba86daa735317754ca5cae35ca77d2f4ee9522fe24439ed9c4bf68bbc0048b334b12ec49dd2f72fd4be503b02f027f338bdaa7d22f1fc434fd7b1fd1dc132dad70dc047eecfbb5eedca15bb3c21ec8a9a8bae5a3f908f333ae21ccc28f7c8152f1a3c84db18043182afdcba92b6037bb68eb45f7eb6f90d721960aea4801d64e4259fe59d8746a5fd68da6b8fd7a4f920e587d6ac80cfaa35695e4b76e9f42c9868c718e0e64a27ae3c0b7517a3127d89e27884d8169f85b447365b5bd7a776b5c6fc2fa6b467b0b7b541b56f95634cf3fd08f592d86435462cbdf40fcfc4cd53ba2d4adfcb8535037c3a08af9dd8bebeefc207de413a411d52c906cb3eafd90a0c8c7d5f0ae3b5ff1c9645f78c6e8fcfa8d0cfc8371e3e5b95fa7ba5f5f0d9bed4df2b07f79f95fbb5aa39d60e3796d682fc316da55f0498631be7a8f6a4529ce5a9246dc75ebd11d683fcad40ddba107305b11fee21ce2dc7585f4fd68041758b2a7a2f103358601cb3aca07eb0426cca12e7303382a05b334d87a76d5cd79eb776f1df708db711e17ff2f5a4e723aef80f358e6b66f01a31821274e211c7d4e607e87137baa95e057009db75375d5505c689e8dd0e3a9f6e3e19bd93efe79d36aa751d879311f6bbb06e616e932f6b376013f1df01e574f8ef087b27a89f671e83bbcf25e933d5904f48ac47c882707773c473296e1cfa8eab1eead2ba4edbdf965e65963ae61891e75153621f379f28ffd3fbb997523c30fa00fff3fa8dabf5a7fcdbf114997fd1e79fbcc6fa9c05e70dbde0c6c07b4ee1a381eb105ab0e6fab27473e2ca7ce431acf9f07c0aac3138e863cbde344710f4f8a8ae7e90d8c7207df1d2d37ae1c0719cd6d0134acdf1826aebd6a9e3bd560562996b5c53cf6f900b23474dd47aeda67aee66aa6b160dd58e12ebf80978e5d2e08445bbf7ca08d6e988f655b56e412d1c785de217e8a6e51393f4de5ed6fb91875e7ae3227368cdb8293dbdce73270855dfb057c3d5758ad1c71a63e1e876c6eb23fd74f305f7e5b715707183a212b43726808bc735ad09148f31c920de4c3cd432ce14aedad79c11d3b9e2faf8524e0957adf62f3f9f9c0d78be912cf734be01a719b90ecdb9a46c50133109c6a1751e031746be46d3fcfddef38474f6eaf3fafe1dbc60bc8bb56b851ba11a9a5d74f9cee333f2d7e8935808eccfc95c1f9f2a2f57d3e9637723cf7fa25844249a5732677bc2871b4d2954fe392df1dc4bc829c492f20d95fb1d711ed4b68e6de4927a082e17b2c27c92a56aeeb0b8ecf6b6f739f1cc12558b6bc7e02be470edba6476b5fec4b9d0dcc3bcec9cebef3213e7f60b3cf31a7b5a7e90ab9c07bce34a1c7ba9da3f998f5a97bdeb567c1717bd32a86f31c8ffd1ef9e5dd52f6a820b716510172037075f6bc2c5863f5d20fe9fb4ed57baa76cbe63bf6587ef9e9e6dd3e9502ea1ffffdd33ca8e7be252a8dc2e3589c3c0425b7aa4cb598840f14beefb38cef93763d4d23e78e9798a7bc455c7a86a4f2a510b327756e4df2349ff7464e9e79b49d4409127bedb7e68ef69e5aba9b4562e05e57498c7e91c8a30ee93724cf7b822be5a5ade8d59dc6fd0972d30298694b486406da8e187fc9deafff4ae720bbdc461df9a9655fd3147ee26d68b162b8998d7b4fea4e7cb6c87f2458b6289a48da9555ceb7f62fe36de54bccdcf0c15ebf7eaca52905f68bbd779669406517b9fcc9326b786c0d74ca4bff1661779a3fd8611f6afb7df849d86debfbbdf24812fedcaa2f5b1543995d287f5545ef3b096478d73a1bd1573c40f8a87710e5dda3923611f52bdc87ffb9d617c0dba6ce5473c197c524cb0a2feba30ec82b055cd16d695f6daab40bd4be02a9de0dd65a5473a596bd5632f1d49fde66646dcd65d41fbbdce1347343fbafddfcdc7aa2efbeb1a71c93e88f75a34883f4f7dde613efae7303e43ca07e31e76ad5d3b3cdaf7b55f41aefd01aca1079ca41c75d43d8b7281a82929dec11a3e9bb1fd50bd3b61f23b6c40621ddff1bd55f7bd41ea71f9d735f21352ad0d503ba5216c8d6d48f07da625692f44c5843c81cd46f38dedf2489a940bd5033db7b16883ffef9dabf55aed0df8ffc22ba7351ce27e0971ff95621cf0d437fc49bc1fd29a2231fe557a8e91f0cfe879ebaeaa00f6fb8ca13ff976dcd5443d55b351b1b4fbb3873b299dc8f8a9f7d37f2136a298ddd0fe2476170bd1fc8258a97422751d2578a743ed20d5c79b11e83148f4e64ab18faef65fa6f8d2a877a63dff0a9b745ffd97febc106d1e2366da3f4d222744ef6b9293f661c08534b8b5fdd0f8982ef7fe84772a17e4ad0f18281627637af60a2b6feb3a6e93f76a3fa6b3ccb62ebebb458c314d5c69de1d9380d59cf5e287363e705707a7efd1e22449ffbc672752b5e487df46ec0ad3b567d1ee2bf37515fef198d8f05f369af305eb7e8a18a26522893f7e5fc3503a828c6a1e5aef3b8947678cf15e4af2ab9652c5706a6ea5183fa7e77108e368153705f62dd8ac48481f9bfae2dab394cd15fe096201d02ad1bed6528d2fd075d26b3669cc522f3c555cdd6a18290d9dd2893c31c4dea20b7a6eb523e0bdca82e2dc74449e7e906367183b4ad57b9d8646d4e033c870aebed2fde3de44f59d17411edcca17a556381d35be5261d33afa6ce1334bd940e77559aef7e002628608f3351effe76bcd54520fabaf136e286de9e3da9b419c6504aa0f9b18fe293e608f33abc7c58e3c224d6b0dfb8edfd381f8d43a40bf68df3a5d49a37a055c8e36eed97221688f0bf41e67dcf396e7b44e909ea7f6f63e13b7f885a96346887f01ed5daa2d417d0b6a87bc8d2ff747f4a635cfc0f3658b70bf243cedbc9de75d4da100be941fd21edf1e9f62ce1675f504885722c529e077c7c631e262bd911393279259610f77a6df71b91f210ea6deafd4baab30c757ca2318d4c4a72b2f32698c886c091e80d976968f117fa939dd5fc6cf740db1ed8434e019d56fa48ad9fc7872bc46e36f63e5a6d07562e74ab518c8e7c24fbeafe97b6cad625ee80dd19ebdcc749d745e4e7dd27e7a7fb83e47d872a5fc89d47c1841ff156ac5138d63f2f81d864ae7fa89303b1dc29e4f48175fe83918a5431773a6433c398ed7fa79e3faa8356f3d1b3dfb6f911d4c68fcafb086acc7bf7ade88e351780b75ed06d5db73817e38d92b3d07b6da533c2ea9af48cfc18c1ae62ed4bb618843bdbba6a1aa0d34a7ffb5684eff2b12ec75993913f27ec2daa70d1a06701dfc766d78e5bb732378c718e6c877f514632253d77ec4f294433d7f58e0b5af45606de899db127314792c0daef2ad28dbba779e0432b4438ff8f79dcf76bb37c777f967656c2a1d3b0f23cf9f6a8ca7ad6accc00d9f28dee73bb7969fcb5baf1791485728ee1d43ee2eee658620df31e8c1a3361d70974dc4f85517ba3ff49a0acaa9ecd76b7cac0d783c6366e72554520fc25da186cda60aafddf3a93d8ce7db396192b72ef1f1b5d68df0e780e38b9c3b1c11cc43379e6e7f330f2bfd3c415b31b0e93e707eb0f240f731b2dbfc4371413235af7b18f0b385fdb0760faeb9d82a1eead77b38eb7b58a918fbacae41e56519ee318dfe3d535f4b965fa13628676bd3a31a6fa0b5fce1190488650c0ad23c83fb0fc06f65ebcca772acf0783bd5ffeee75d4658219630c6ba98cadf544dd8a3f7451adee0f550eee7d336f68cfc85d25d57d7fc4efadc6beff57edc906e6a92d3b38b0aadc5a46a0b6c419ad6eddad0c616b2afa75a476c3ceaf43b6cfd9b07c4c4916e858ec757a99afff3d25375ef675aa71729c42591f0de4b78c61e4f7f7eea5e97c6d0850dd6cda6d295e36ff7cdf48aba14f28a3599281e7775b948696df7ea27d916303575f442b900c53a3af755f593da89ace118d79f5aa0b65a5161df48fea5e60d3382a6d4feaf918dfbff0b690b00bea47ea3b800d72b137a43e195ef47dab3ab9862ce9eb1717cc33cec76878fa5f5ee711e597afe27ec7a5f9f6cf7b311cdbf23dfabb9737f2ff199d68488d9bec6c4b103d52fcb03eddb2229f5dc5b7b58dbbf7dfd7ea2b42fd5b8b394574b7cdd717b3b11fbe113e553b0ee396301f988bfce1efcbc1eff9ac7efff3f6a8e47e6eb5d3ff6b77f13c4f8d1f7ed68ccc863fbfbef688e798effcef75bca29005b633aafe4d70271df9630648ed29b48cd31c4e543a7b4001f283c1fafe31ce25f35ef120334fd921ab13ee28cba1e6785c14ba484cfa7ce7843d76d99742eefe1afd2b490a6aaddf0d4875e444c7c03ea291a06febd605c14715587c7f8554c4ac06da6181760fe22c8e31ce2c35ede7076562210ea3a2bc0710bcf7feeeef3ee7e6778bfa427c21fee7746f7bbaef17e6df6cfeed743fd0fd26947ef91d8c4e7602e29aebebf5f37e7ffeafd2aef21e05fccb9882ae4ce4702d7b588744048af067082b74e93fadce628a29d37cb9ab1de1ea2fd7c906712743e2852e5070a0320499b86c6c2e98af9da3ca4e7d6e0d8b783f1427b608c5e49333bb7b77dcc00799c71e825fc30301ee70cea012fcc432c6716781497d2fd8692de554def6a00d7c36efcd788b4965e0a8b7cb69d0fadbf04f353ad6f72afe69164a8b5217712ea7f4984787a31e437855708147fd43aea9e339b907771ad793be0b518bc917e0f623c5e601df22efc20dfb43fffaf3befb35dbb96adda385169acaafdefaa6b8ff419e274851003cc9b9c2255bf2522415a52aa3ee3961e61427d5db7c46770255c1cafbaef28ee107d27251d3fad0f8af927bbd07772fccecaebeb6cd54e696cc91bf2cad11b7efd1befef508f093567dc78ca487b5dcdb5485c1baacda49073aeb4b6aa1a9fa8ffa5de01d4990bc092f945357b2f1107bf225dc6465a1a93b13f37baf6a0b129a00b119336851d78da9f624a58a0aa211fb638c971bd916609bc5f571e24ea4fd737baf6383b52afd12f6dd03688cc6344f552c0b545a48ffb44f578c07ffb8da03d1bf584f2ec989006b08a2b1a2781b862ebaed3ceab053cac823df6e5690d7c81f8aebcf15f4a8b10f287fd70acf56a11dfba4a021a072ec458a593d01c6cfcfef15b3536c8d7dbc5ef692cbd7fc367fdac6227a3867a50aa358002e56f4cbaa25867038d61b987bc457ea0c7b61725f9a1c3a949154fad2dda8319e972050c7bd951a6debbea23b0fd8c7a3750ef68ea3179ff177bedf3ffb4c2b1136565f7dd097df7acbeab7cf6b5cee18f0b7980afd5fe7476a2147bb7293b2db47e54f04eff1da13e6b62fed4f350e91699b0962cb4475d7d5a50bcb0cb491fbec61af7811f4a1c73a355579753fa880968ba101f38a2eb68f7d077d2945f5a17d4b56703defcf1fccb87f3031fa4611eae638a4b1b99f90db0ea6c82efe2c00f47d4a1ab0dbecb693cfc2be3c88d52137bd7d244bf16d40b921ffc50ef90ff19fe8379eac824ff85753dd4600e879cf6b22cf8d41e4fba1f2eedeebb117d17fb8762c8f7438a8551a3897df66a0302f7fa6101f84d173946ae701de2d6d4258ee1046387b508a85eab741549d32f4f4ac48d82c6d63271e0dfb7d198fc0199899e23c84d5ff821d61f83378d1fd9f9079aff6beb4a7a9cf652e1b6e58937cabbf3379ffb07c58d549c294635879c11d603f2227f55cd0c8d43005fa1b4d8e3f8270e8f113c95a0d91194decc226e4fdc84ed5e75ecfb0f141e69ec5e6eb827715c1fb07f1df945e623a7c123bf22d4c92d6f7caf3d4e836effa9c8a3d32f33d2a911d6923c50c50c6bfa01fffbb55d7dd7d0df857aafafb954426b324f68df94c4ada47a27f253d7469052adac7baee0b9c16d958f8156728d5a8ab71172a1421bc625e305e26a126b74a279d58e33e48ba2576831e47bb3c2b985f121c6562961d847b07f34f518f8cfd281f19ebff3c316f11655c377db8b9ef395aa5ff869857d4653e36ad59800bfaba0d1e39ac681e15f92c61f8707a66a7b915fdea84fb1b455ec74e6953fdd7c1f57c44a0b213dfb881bffe4fbc105f77d86fab4bf606d6322249f8fd41c176a8f5735d921f43905d5705f80f35c3a452579145f339e389e3effe1afdf9e9f4d7be73ffcfdf99911713567d3339dffcc0f333affcb97f3ebeb3f8fcb2fd72f9fbe5e7fc455ad3d715c3cff911f389d3f793cff425f7f392ebf5cbfb4be5e3fe3315cbfdb5dfff2b7d7af354ed3f378f38fae9f71c56d489c319ebfde900ea659a0867100bd1a333a906eddd23ede34af49aafaa0afeba8d609ae2f29c7c253fa1aefbcd258f127aad38a18f8564bc06eb872a235dc8e7ce77f397fa76181e7cf82b1f0bdd352f85bbcf6861f7ebe935e1d3f14031d6f1f7e8276651a5cf841e90e7ff24ad55e322e98bfeac5ee6d9e5bc26f4d783cb21ef38676ecb129d6c6121f741a92c013d857c3feea76b5478dd47470d15a9484bdbd51afafb20af2fb259ff846adbd9d2eb3adb93c9f843f4cb26d8531c47bfe4bebd260ff7bf9701ef94aef5d63b2fbfb79c69e68af2da7c85feb743a6eddbedfc582857dd47aafa46ddedfe7c18b0972d682f4d2a916d87116fa31e2017b2e53c29a409da614b84f9e34e6bdd67cddae6e8fef68956dc75a33bbe694d7420ff636227fb1617e1f4701c6867441b2da42cd233786cfd57eb469f732a5d52c271bed6d2f2e65a70fe4b77b19ed0b9db602c3df100dbc87c851e7c27500ce552b3fa50870d8a07d62132f6044f777e00715eb4d557c85756cd44b7763c439f26f6b8f7553525f2873cc5eed11f1276a2c437d6e721e170adfa6f227a314884bb283a9caad8471239e27d4cae447575f399d7223703755bdd7384beac7e95a48dde65c14ff3ce9baacd69cdc0e744e0db836f53c3622c4f9578f57a493a88f5579057aeb539fb8469dc172b0410e79e9cd066baae1b76ba0ee39948fc79ef8ce779979c72ff1b1f703deed59390e2bc5377796bfcec86364826afcc81b9fcabed6a87185fbed7ce9ddb8aab087a4d6412132a6300af309739506348cd96b0858be546abf34e0e44406f035928979d25e678ae3261d6e1c3fc94f28b61dc4cdb230dc51bfd468d479e3eb8e1bc3946aa15fee97303ea843509880cb0e15d6123c0104f06e6ae0c7617d9af403a6ace70ba47490cc55d5f704ad2b1c2f57ed516e1f4f5aab7972a51e20f6c855ed67c78579e1d6568df5b816a7d2089c5898dac7a104bee92cfd75bd72c30f7896cf88fb07fd87ed02e674ed94d54fe2cd81568099e3dc29ae39f20d41930b301db1caf14b978bfac82d33bf3f6f887a437272ff1c6485387f858deaf7d0a8aeb4992076cda63cd1e8bccab2ed58eccd0f1a1f91751c97aebcd3af88e45fa02150cd488be689d68a826af752006ea0d2581d1f74ee153ed6d868ad1e39043f1506bc0ca39e2096edd61d53b6c7b4e364affd6ea7ba47306c8f53fc786b04da1c891c6f0ef439e1296b531d2750abaaf36c757b7eff73553734b737be7fbdddf3d76aaee649128c4badc5f3c300cfff6eadcc2dc2d575dea5ab7d497a14ee4a7f0e9e92b9473508d2a008065ded5369ad76fb68dcdfe375dff4aa75032ae68453d280ae3f809b49fe4452795000a6a07ca13a5191498dd1a1753e9f54c37f947399b9b9fcbacf7e538b9169b8871e519a62ef16c778a4b511ea57ca19a45553eff0c80fafb497cf57786c8c3de7b8aa9fd0bf48f333d7a0c5e21655f0817542f87f0a57b235b58fee146a8511e168cce08cfb00e274a5f229817e7fd09067489ace4e6be40de710f3be728c3ba0decfaa7ff97e32bc1fefebfd1470ededfddce87edaff2785ef279033c6a52540c30a7bc6ca1b05e6b59d749a4b53989ff25b7fae55a79372a4ebd67c4a595b05e4c52f4a0f59e1ff8e3ef286881fff29d41ac66efce0c4bdff073a29075a430ac8879b72f2fb5c5eea71d58dbf52f7d1becfe165733f1655dfd62fb467cf7fa70eac3c36a0c7ef7259cfda35167273e4ed673f3bec930dfd09dec8b18a1bb1ffb0f945d7743e524e9c64e8396ee76dbc2fdbdcf44fdf490cef1a29ff8a1a704c46a75185fda1b9aad319c357a57f9904131e539dce577b7359e5e2f7fb71ed4442a22633730a43f5cf665192130630eb6afada0fc2e9f20aad7d88fbeff9c41be2d145ed33525a44a91b80b7b81139aa7e6e21b750e21a6b424d35121efa011ba0f790f8d00b358f664878107b893596fa44bea42bacc17fc100db1a177f2a2bc0574b6b34c73de3b0f6b8daeb79568f4beac7c3d875d795200f00ead9d73169874f11afd1b0313e332749cb5334565825a7348257d2504cd29a309f35d4f8d9473439d2ff632bebeacda77efbff9fd7932bed6747fa7e0efa3a6d8cf4f6ed39c76ddc515ea2b43b67aece59b6e714abee9cea7e0b237058c562c083f9e379833c186b486bf47b88faf7927424a739ea5c8e8e25e86176bdacd437b49f0fc58831f58b149ef41c6a3df801d697d8138de5d8fecbd0b83263a96aa712fc6c07fcd719f98aec9d741ba521404bbd827a42247e02975ee23a8cbd6d093a6c6ebe3f1a6a9ca4472f3ef47e4b3d23a99e51efb9bfab672402672da298628185c2a5972a872edc88f80cef6d1eadc664c21a55db4b8f1ed62f18cec37a7dc05cdd22dd260f795da5d21e892ac0ac4410db0589d65931b1d728419f349513d0fd1f811f93019abfb9f78abc01c05509f254cca287f1c080ab51fdc0be223342d01476e3a9009f1a513f633e05d82ed3197463eedc9e4fe94d14220868fce35c537e770b114d62b526952e378e6ffcc09bfbf84a427c95b171d110e6f08ae30e6b05e8e38975c3096b88f32a4eb91139b13ebe1a84c495c318520ad18e1f774d635332d2880f94ee82e2647471743c7534ff2a420df7ce4b912d72f47017986309e433aa67ad727bf6c6f7c77198b03b7d8325c6ce8511d8da0bc832b0361e92fee17cbd43cc8df1f38e4fc5d2923cb44ea5604e44f76cd487106a37deaadb03a6a835eb427d7789dc43a6b029a19f3f13f673bd475e60a72d45fe26d1da9fd17b16775ea50dc3def7198f657ebf5fcf85f95174be1dedbaafb014a199bff1fdc8c67ab8497e68ccc0fe595a8e2335cf4393622b89b88ddc0814ce2b6ab40e2aae359e8d187c2769a2a4a771e88646f04e6315e275a543ec036f4f62df0f62f544c769c70af3e2f77c0c3d8db5987de2b83a26fba3bf70313e821eae9f4f5f6f1afb6b02d63c251c9f8b9a748d3f2e52f28e6337d2bd8aad1a732856ad286e48d57a365d55c15348b95c5683ce98accf8843bdb5f3842584d132b07ee3231eae7cdfa8e33c3b567942ad71521c78117e7ae8b01edcf05f84ca9d400b11fdf4a68829006d4eec0facc5ac5747133a0742fc5396d2b3ac8bf6b860e5e93a601022974dc2fb9de63b9ff2b95b499c15581784f25faf8e57be2f013396f8cf2bd4d08a7c1f353419e0740c95cbbe8450670d63c4fb2d0d550371575e80fb06e81695e2f8027a47d1730cf3d18c0fce98e9dc33b088738879c10163b64b5c83e6b2c2dbdce995fb723539eb7d81b4aa685eae45f0b6d2bcb6d1be7dd63273dc852750e7adc69a8c3ce171aeee9d64e497fde3429a48bdf3b90b113c2d891b3c2941df4e56c310d7ab243d357a9f737d5cf3cc27c24a875e851a368c348c0cea49020761e8877adcd7e335ea2889f48b8ebb231379c23a9bae0fb03d62cca5e673478cf02b76a06bd66be4b2447dff72e3320c897b98fcd4fddb45e2934e9251a29ed1da9bd9a47d17c7e793f6dd21ef39515839609d65e105e7e817e9da970e3711336b473afe461d25160ad0de7f36a2491727d53a4e5aefa987707e264f5baa6fa6a9bae65e8ec99a10b521cb8abd527e1e357f510d202b689c181ec4fcd3e3f84e935ccac14ae393495780add231d6b277f5abe68251aedd94e3b25de781ebea00df5ee18d3a6d7f29ae2bd4922ea92fd26ce95cdf9f5771ca556eca8a2abc2a0f57a8fdb4311b0ff79aeff98ed8d100f928830dd63f8a2ab0740fe0906b8ecb52f82fe9a4b828ae66d7cb3bf25d8d1eb484c11e7d52fd41dace1bc5776b6fa67425a5f2aa825ed15a0403aa05925fd8438fd245add0ed06734a2e23e29fb5fb75fb77a235b6e57602b90a6872b4ef0df7fe0fd06794bf547f14b5d3e3ccc77ce38729b0e6c37c7c66e4192f2906271fbbf391e62ff00094dfb7aa0be43a6e060d85c8d2d8b423e9ad8b446120029e6dddfc20cf38ef33c4f5ced3e95fa48d833cd433cf1bf4c4000fb039f06f73673d21fe18b341274b4ed477b2d2a55e95ee09c0ef4e15b7f25eeb5761c0becfd1b436fba9205f55e49ca0a695453ccd15e2148565121e262aa618a71827f54c4b2f3892ee5399d6b0361a578bf41a13bb849ab2195d695f164da9396f65e7238feb99fce007bde7bf2c26189b99d141c7603ae7a5cf474e942a9f5aa7f466435ac3135b1e61feb155b9d7784c1bf8064c2c265457ed74cee97aa3f438a6da46d26c0f1cbd3d36c4e791b5a5bf039fbf70513ff15d4e6bf06e43f1a6300f12fca6772561371a8d41493693a3d6d6c5f747fbcd0b235e9c2c2f189ba8b5037a03c75d2fc670b516d0847a293f2ec4c54a1227417db8a4db431576df468ed803e7a63e49f485035ff792f2ff609d1d297f7b5b68ffa9197ab733ec219d08bb091a1e265e730cf8e4524429e57babc9d17ba85b1e5695c6cb00ee8f6a0f13faed93c140a7c815ba4f0a1ce6c854fb95479c08c216759c8cb34fba51383fe6cc2d69dfeee2eb18e796f1bd1e4ca8eae535e8c8697c3dd433b447627c6eb4c7995b8f1faebddd235037829df82e18e2b8ce99e68d9d09b392152ebd57a857819765495a3859d8f95a9ed07b4fb23df13d8a86d670e0392a5f9c09dba3d67d4a9a9cf22d829aeb13ff75266f0c55e703ce733ec07ad007f57954ad318bfc25d6215746f041facc6b8f1d698c2449ae639c76ed299537901c430fb47c8d5c497e8e2fe178d48b13905399a19f69538e579a1b783200ab2ad335dd7f37571c49b19d1d8c5716e535f2690dfdc263b41fa21e6fe9b206b9c5ea2fe940d59dbe93380fdbfd5b024feaa8f7ea2640aeb57f0af5333edd28c62d95ff9174565e7e8926e001518ac05a81a695bba982cf95f67af05f792f3654f905c435b0afc96a483184c614274be20a268c78c9dd187173b78c713db0886b82fb388cbbc37147da635f3ff725d410a3c71860aaf071fbfa4dd7e1770efad4944aaf37561c4cd26e38d31e92e838deda8e73559b043d52dd4354383b5f6944ac704edf7f0ee337ca9cceb7435f1bf901f6c73b9eaf61e3c2d2daaf845be9cf9b37d8a7c32bdf6d09bb901484a116338b3452c8f757ef8b1393e6b65d60dd776ef05b6910be6f36a4eb49921cf76d6970c2564acfd4d7ab620de086237e5bf11dd573447c5c9a1d290ff8e8f280f3377980beb71bf0eac2abe651abba84d45e7e12cf03b1bfda2bafcfc697fdc3bf5f63c22bdf6fb54f7081dafedf1c8fcf560ef89e74017db6a25a4e2adf42d2c46ba233a76bdd95a8d552bf93064f9e5e89cb3065b5f22ff7d755d08fc7def4f55480c12cbc9955ea1e8cf2ccddaa1814e650c3f757e2a692b673bd21de6d97e3ff695ff64b8f78a0b42fb7eb05ea196b2f6ff6b1d29a6ac16b14a31682c226a91a949512578ff4f4c81f87348ee21f66447bf5a474dbfda7c3841686ce27f6471c6721f93a079b3d79c82ea9a79215187fc4d8f38cabf3d3123da757a9beee015db79cea7cf971bd68e3b75fed6fc4c2bf4973fbc1ee7b218e4866edb58397b9d77146d6b45f66c17ba797a0b551cfe934a775f04379b1403df023f5a3cb1de78d6a9e89335e27e8df64ebb86a48f1bce86bf95b47e27824bd6b6adfcf8dfc3545dc3f7e3b5e4c69de16f479d0c6e8eb2ab0716f31b8f1dad0efc926d4b5f070a775dc550dbaac66467bdc52eb9b9f2bedafe69d9d240db45f5f2cfc4876de7e532e4c7eb75f98c4b12e544f2d17834ee7be776f85871ccd549e565a3fffdcc659bb9eef7784fa75c43f7ae7fba1ce8dd6e976acf55dfbc7db91d761f89cee784be3bcae77c7373e1d9f177bea99b2a6bdae149e49ef58e612ffa5ec8e35bf3b364aa4dbbdd7d2e1a6ae8f139e85e64a8ed8b23ab41057d0b07138d1e78fb1f782b8607f40fe160b31bbd1f35b9a809d5f19c1853e5f79a1419fa75263bd3ff0739f899985ffed607e33edeae995aa1de6de00f574545dcf17e4ff06ff8ee44edee954c626b751e34142ac3a4ad796a03a7fce13e719fca324c6c1f50d73269727a5adf5531bc25b8f2e21f0d6fd9cb8b6ea98526909449e6f8694db19068c63d0f274f303bf60be15b283d6351c127633b1397a1497cf2bbb06fd1833b8511d3fb6ea77d4f26238bf97d4b317da0f3cf85819bad660d1b9655276d85c5fcd9d7959cd6cc2aec5496013b776a33cea47aa4e05baa2e0211c1faa8b8ec951638a8b1f038a0944c26cf41a0b43233886109bf90fb9479663bc40bcc54d37b68e2bd4330f010730417d10276998453a804556a22e57d4f73b7564161176f68ddf6109d9ec5e178f379a17aff06035e2b472e7b9d17ad1838dd6593d5b18a3840aa72ca558a9fc5e76fa9e2a1eeff732a9a774df5f591f8e5a9787558113a5d453aa1bc2a12676f9a6e331e327fa67209e378966ffe4fad66d7cdff924b6d777d4b862c44c62ee1642cd8874309d2de6d196ce556cfe493ad68a2f45752ce3eef8f6ff33a99ee3d1619a07357a6b6374e41c60fc7302be07d4564e7cb7ec389aae03f3d78c9a50fb1880e7b9e2994b2642e2cfa3b6a7ae71187aac10068af6991d6ae1d958179c23771f6356f6eb5e5bb2b2754ce1e66dbe2f716d7fe37bc3827330a1f95080dfd43501ad33439aa614eb3679877b8498816ae53bd6d3eb8c880fdbfb7704fa04415115e0979f602f4c7a4aaf12f2d12df6bcca055c9b2998c711738ade2e58b32bab2d5c775a076b4ff9dff46ab3f2a9574bfb325638fa17c5e9c0d61a318dd6a268988e6ff8009f3bf11a82b5f2bad15aaaae9c9cb4975039468d7d31fa44fd0188fd2d85519a404dc79c282f2bd0b8d0de1bd043629a9fa46375abeef0d4fbadaa5124e9d04dc754e32e9dd8fcab7da6cf71823866239fd1fb2921d77085bbc539e653bef20b31192f2ba5877856f5d075c6bccef75af13849df1cbf575ef87ed9f384f5254b24f6a38f63f40b6a100b9d96de2bcc95dd4f83f6ef85d2bc547d6913fb486dac6592b6b9b0ae56a7b5a4b8676629b0eedb0813c7ef8557afca1389a727f3fedcac9dd7e33baf5a296c86b976fe4bc563bbc2001d047988105bb91c10d759dccee82fec47ac414c98751c9754f7900c7031dac3c4774b85d9563d72f55bd067099e557e2bfc771d7fc2b9232e25f82088a343fefd21e9484a417189bfaa668daec3370a8747b56485412d6b47acdded5d1fbd1d1342f9649a5487a2fdabff77aa6ac48760405c8f95c293751e0ea489bff28293ae1b5926d68dd4bceafc80daf1a37aa5aa2ef7b9216d64c0556b2d007e70f4ef15d9d7df53586833baf0433ebcc7409c211f48ebb1e2e9b7ef72077a005c9c068cb40aeda3d6a5eb787e61938c553cbc53fb5e23dd4526c99b4263b4934c61b4d5b52ddc92b45b5cd2c24ed43b0d3f99ae751703ec5981ff8395bf2e747deda71d691fb4256aca71cdabe99ddf88507379910ebdb957290cbf7419e1d73e375413e9e52e51168d5793e31df658227e626d04ef8b9ed769dcc67930fe9e895bbf6cbc21dd6ba8f63bf52c0023a3f8ef23ad6f567a11eaee232ed1dc4e098b40ef9e6ab3a0fd48fc0ac4cc7a77de76cb0e5f50a24640e9acc4f59d1f66802b4e8f61b4e357d40f0c712f7ae33ba1bd2efabeb6abeabaa79e3cf398931bd714eab923e407c9f99a6aed596974da4ecc89cde08cbe7a09c4dc91f266793602c40d119e6d899867f98cb1b2f62a8a5333d03d20e1bbd215bfd354bb6aec8d35b8d1d8414dba376e7b84ab4e8a5d403ac2461b8b225670ca937abcf182a7b9a162cc776e40bf2e37822bf9c5a07f17cdf51de236b63169ea527c79a3f852eb3331a972fae34bef3bb8de0e906bad62a7698cf5a134bda276e7b6af75a5b525d6023d223b3e39d6a2eb36f76fd7c1939a27d2710a3876b232a8874e7c52f9c66bd0abe3989ba1778d930ab58ebb7363d624388f568fd7663bee336ab9a4f4bdf633d887def15e73d887c5909ba001a8f2f2ccf1d0dbdf8cbca5c27c50ad475d5b52bbc217a75cf8c7f6f3f65d9446c0bb7a939ae321e69d2a2660edf3acbd536c78fafd2dd14755a4afc387583760ee9630830abba57ce49365c745dabf520c9af48e9dabfb7bd454959a5f0abdc1c948fb85add1a36b4d1e6cd2c7fa9b4c71adc7fe2a7be388598f89b70d3eae275ea1868ca808db94b5735ee97ea5fe026bf463acdbe40971e713c409dc46ba77443dff5cbed2d8811aa2edb8c849066d71f378428fd3e8d950b1d95410575280effe4a041fba7eb103fd4679c8dd92ea9652504dced65ade494e7c051feb4f2ef68e9272a77115b71078f09315f2e013c8e7b71807059a57495a5192516d6ccb954eb46838fadfe68967522c1eeeb4f61e691bb1fe38e2c2a0185c122e74497c9544527ddce9feaa3139454d901c754f9c25e919a5a4d530a3f36e0937be046daf17cc97dd8d1750afbd5e10a605f40b9ef86136d03d02c47f3023080bd48448cc57cc79b01f077b51a038edbbbf34bf6249fa76ca9bcabb4613d2811c213e29e7e41f1d133ff1e06b2c1972e93567b9aba782de4d9c6ddd3b7e901b8ce713e6247b738c75423c16f5dc3ce9248defa15779981815d58988fb85f536f38937397a34206e3a3d8fd7c0bd4d1869b85826720f9d277c27c19ab4f6205eaaf03aa04e6b450beaa5a15738d5526bc0c26e515f6469afbbbcf5001c227fbb01ad7eb7f00246183ab53f23666d051e5dd3bc02bcc092b45a7650778d847fe938c2a58eb312f0ebcfc2c94863fec0c702b5b9092b244e43a6f58329ef673af72c08d3907aba0f56eea8a671bab47117ac7dd8d76ba41b52ccae3dc7d900b9ac4ed4a89e6c0dbc6a39468c96bbda53dc540d34fff176462cafcfb096e12e7792c6715022c632b2ca868e431f2d3fdf9ba4292570be46b8c7dd161423403cd83fbf23d301e179e6cf0d7ae909c3ece97edffd5dab98f19eef1135115d23ea8487d708c7a5b097fafc61fb5d95db0993f24ee8a7e62eaec5c986f851a2b8155588cf5a6a7c0b6077c3613225bc4d3dfce27f2654ffa4991b77dccd39722782f67b1b1104e04daf3cc59ff12fae89cc09a9be887ee3edbb50f355f8468c5a5111694681d6a18b78a31b7d8793272b7a9cc789b44193c5dfaafaa5e21dfa9fbc027fca5470e0dbdbb98ff9bb847d73700aab40d50d0a03feaef12ffdff3656880ecaf304b5684d27927ffd3fecfdd976e2caf23d8cbe921ae3535c2e90642ca374a94949e84e488ca210066c63037afa3394113325b0abd6debf7f739af15decb1761950934d643433e63c2d7bbd1ac5113577d6d3ee9949df319d10c77ef7ef88feadb0e6e984f27adddf7d8fff4bffeece1b63715e1a5a434984721c062f63ddb7d4adc745a3b9d071fe1454a7a999378ece59a9796e086bb4620ee84576e4bedec0d6ba3c9c0f92a47b5928bdab5c4c35fe8130478f651340ff80faad183bb6d8a49a0f18fdfba171663e270ffd269c8f4af7e16e8defa72bf4fa484369462eba33cbf6b48d605c9f15da3efe3613bbed946bd8f7c0cf15ce04bd660562807a564f490bc5d3fe01f716a2af9c6a32c88b282c6bfa11357bde7fea396df4af84039e9594f0239f2be4c1fef0dd95d2431f4fa2dc772af7843c88e695ece2bfc2f0558ea66a4e381f687cf9ec96c82fe8be3cd26e8d735fd53c564d7a648d082f7d30194730de07cce55d35fe08b9be344989c7304d3f25eacf317317b4e974790187b434e5b5f6a3fe7eedf03eb4d6ce533b41ced0bef9fe91bfff3350f801731225e974092cc1d7eb9f25344af00cedf66fcfa3bf5f6ff879daedf43f7f9e31f19035bfa8cf5cf3ced259121842d539fa3cf8f1b7ae251ade24e2b929a58f7ad31a79ed5069ae86579c2fa5e653a71a18b07755835ec3eef7dbceb771d8462196f3cb6ebdd33adef57851ceb30e38e542ca7f15a59e777c27b5049e27f9a7d5da27c06f916d71b2ed9ed727fd3bd5f58f54c5f385219a887aaf275c3fe55a9e6824b83cb01fac3beee9a82fe12e9d437380f0d18a6f5f6157d9d75ff7b5899a720b86e26be21c7efd11a0b7df0eb867c4dbf47d364a93c24981ef56e3d5c522c11bed4ff793389cdcb7682b92eb6bba9f917a6ff72ddaf84ed5921f3f3716e40b64e62c30546e8e30dee877046ed67d0456836ae5a6d67fe4e7acf7dd39345c63c045940f3d76413c30bf65c63ea5e9bfc7c87d66988ff16b7f2fc2b90ac52dd1ebbf268ec62c7e6f275d6ddbeeb94f3a7f861e82ac54cf843a27da7ac4e7c467f8d2dbabc07da49e5beb97e6407cb20fbc3e85a5f1923807647d08c8ae7b75033e5f31e1981363f6aaeda8f57eeab9b47cf8a4a9e23202de00ba2fd6da2dfbfb1c0397eb2f3962dcb40dc97f2d02f42452ce67f62c83decfb2dd13fa3297868fbc3fd979a935d267735bdfab0ddc610f08744bb67b3d7e49d1f9246fdc3fc3be79fda1dff30ff7a4f3c244ae6512d9117381d66677cf42820f457384befee59e5edd0cefa970e46a1c570e7ae9eb51d0f30278035cc16f8e69bcc0f0b9b62e22ed8b18de6cdeed0baacf6cd13b5e4b8d9b19a1febab00f971bac8fb36c1e8d00b8d7787cc798860dfc87654358cda5dc16d54c0cf151b3301bf98cc33ac659ed3eab7e0ef59bbdb26db9e72fa15596d15959b8ee7bafa5beb5c24de4d0b9cf7bc402d6bff35d0d95a72d9b83c66dc5d3ffca17f6fe135f58ccb42facde3536bcd3bff8c01fa1815e49e46b3cbf9e61ffb95617f340df1bbe6134556bc259baf2d4fbf442d5d187fe6f24bff77fc3ace7a4526bd358bf817b86fddff2daff1537feaff8c6ff9d90ff3b4bddaf7eb0f75e35577ef0a340fc895c0e6bcf43e769c9f6784ef1faff9aefabb4703dd468d519946487e935dfc896b0a3b9007fd806fe70f6bfdb1f6e17a72ffe705b9dfeffd91f5e35a2247fd83590472d0dffbd800f6a85387fd9afda635f8855829cc4f82e8939c7bc6bc806c5e307e20f72dfa297d134c85827333b3a65e2df722638a51b7d3ed11edf475c272f8cfa23dc7807cd29cf3983fef79a4bc1a99af08ef318aff87d29bffc5eade1feb97f984bc2247a7513de313ef503bf5fcada0837e26fbfb754fe263bb8951b29dc6d37a64bddbbb59dea1ae186736ad413e964f0099953b772a3529da179daf308720c1a59ebf79e4f2a5af3bafe24bf45c44be61e97ed963e33199f6cf0becdd76eb6533ccc7998f8039ec23dfb1ea27c76c01b4398b88238ed387f5597cfd0731be2eddbc267eef2c9e0bcf2ea2678432e35c90e239c394f7caeafdcb5f2bd6a633d0bb44e91beee5d4cfdc0763c4b1dd1a8f1ba8b67549baf8dd00e5fb6b67a976cec459d2f9ed46e18f7e741288fafc8492dd86e3dcf58af2f3b4ea1c728b94f268b493f3dbaaef9bce14c5a90bf7fe0bf5fe0cf77bfcf94761afc7f9d77577e16f3d08cf4dc717eba04f7673e9972af2d30051f3a879d2b3c1ee5b01dad9183fc6b415c64a2647c6cc2ff96c0d7a5741e1f23ef40b824c36dd967a039cd275ef170841f634672d13def2592b215c45fa7fea66a35c9ff4ff8ba0fff9ff675c5ff4e5f37d9fa941b75efe2a47ba6ef7c0f13f8ccc7e54e5fe7dc5d071c4235f258b9b221a2f7a16b837bd566753299725e53c5707146f5af27637b88b2c3fd3739bf23ed0d398a1f463a5f54b713ac8dbb00e360355af70af160f7fc8c59dec7aae6a9f6cc07f36eaf87bedfaa793c6b7c24f97e11f7fe1dc3971fd600efa7fb7863e3cc3ab83fda1438ba6df59ec474cf70070c7b83cfffed9e09dff31c6ec0f96b8eaa414f679fbfdb06a4ef7b64be39851b9321720dd019236cf35d686fcfc0d904ac1591b67e0edfb8d84553ead5bac628a8bef9189c60cced835c2ffedb789a3b67c895c635a62b8e82d08a9c41dec5c9aef006698f37e0de5dd6dc52fccbdc8f0c3f8e74e08df02e85ae186334111fb0bfc9f9f3ed24b48a09fa70b9d7ace8ec71b8f181cbd7f9f6e50c7871cf2ea8ae7d096dcd256a4631fc67ea6565fb38e41903a6e3d4d9b95e63c99b975c231df280aa9a4d5b4f0badd9aab1a696d640605c6de541638fb057cf5e75fdae9ee8e24c47a04f39475d005af9aec661316e6e14b6f0757e8c58cba1bbde9c78644cdd2ff3d4eb230fdfebe67b9e11486830f89f031e04f5bd65666abd5c5caffce67afdf74c2ba0dea69990fe11d8af82f32fab5dc41c6c3eb85a92a0d7b55a2bcce4ce451db7601ff95c42efe70b1f5dc5bdecfe59df0b1cf9add8df68165debe2c8a00d7781d1af79752ff35feed5d982bb405e6b2814ac25ae7d0ccadb83970ddc3705d5b1b6d02cdaf0bf87f1b2c2560fea0ca28f1bb793d09eccb826bb5e3e8c75af7a467ec53bf5d4356d6891ae6e6dfa13c2db301f27b4a4b3fda7de9bee78926467ee6df1b4de52d1eb62f9c457b7eff7afe288f25a3adbd3f7d0323f757d7f13c187f964ad45876a27eea76c22c45e19db5b1b7d47298dd922462cc41843de53afd853c12ed51a5d35f94db3caf5cdbab9c6003fe7e040d47c1847cc8fb446a4999a6e4fe12ebce35e44c635a667d6347416eade6a3d2abe988a75605807fe21649def05d9694f3e9c5fa3f82cc274bb58e607077c3e545bd0b559e2a48ca1ffef9df80c986753e2d24d797d308765b87ce8ecb93991e9fa5836123acbc86952af21f3f066b08fdb86e328ffd4fd2691de2c9b79ddf3517f91b633c8b58f2791eb95b04399c61646f44ed25cd4d9c1233c6ad0f96ff3c20df02ceb501ebb7885c609d8853c3a4457fb88fa475709faece567c1dc58e94b8dfd9a06f8dc5ca8bd161b9e885f4c97f5f5d13fef15bbfa709307bbd2e5eafbb89bcf67f0ab64ef775af3d5651e05736feacf9305fa1ed605710038a5c6ee08f4e0f6bfcdb6d348f75a3ceafb4459f5461ca2e95d34fb073df95ec0fe7c9c6f796cc4f37382fe6879411f7f9cfd30796e9fe7ade61e8556fbb1b3c7d4bb544ffbcfd35df7f74ce10b1f3f4b29392ef319672f5bd844f1b2f550afd1dfbb1cf96f299d9fad98323ed20b5e8ea8fdb678c628d1fd687e9d68ce564b801fdb2ef039f8c8bdc0f01137790b8e9f97b0cbc0b09b21f4e63c15ef295ce8e1e9668c3c8d8743ed2925bd9b2c098047f40a6006c9d6726f5efa3a3ccf43690e9f69f877f623a415c783bfb7a957d85c6fc8bcf7c139acfad20ae6c88aac9153198c53bdae41acc3cb15ff965fff068ff9f60df80699a0874cecc3975f5fd750767ce5712ac846a48ac32c607dbde1fc0870eaa68dc9b8696fe93eeab9c4d910658a2b05bd43c8e9612f4ca4a17a4abbd886f33f23ec71bfcc6aee41f0ba98e88dea363ef88def399fd3cfb3ac2ed197f5559d04f420791d2d6445f1a0bdbf1e03a52ba9d7f6457317b985a5dfebeb7e9e4893ff6b1f0e11740a6c6fc7cfb2e9b1dfbc0facf5f4197f4bd33de627622c6ef662e01e69b9c16fb16644098eb8bae76d50363868a3ebfbb05e53c61a4d51a63135e41b64e8a1017728fe8e71856e9ffabb2fa4a4de90ac060fd69ffc861969481f8179303b9b9048cf495ec63c46f5a28b6fb89e968752c80a7840b546b60d730806dfef8be8813119fbf0f711fec25a645b8f72db2315a325e6af5369c86bbc03f3042e38564a13e57ba8bc719544ba96c7fdca5ee77790cec3611ab00f225de6cca53e82a86afc4b653c82af5bdd2778609fc1dc5fa0511f18278e7fe03badf5bd838d50fb3c4db6d372574caf7acf582f3449fc979e6b4aad038be3da84fbe48b1ab9289bb94ee4d1e6def644e97da7fe84fde59fcb86fd89d69b62bf0bd6254aec35b8c3984b4734cb1c7dece2a3fed2436f588cb7eafc04d686720dec5de67675ca26401cb25e75ef4cb9ec33fa9725c7498b6ccf63233f43abd17847c553493ee14ea03ee61267a6347f7dc6dc3f825e23ae71ab5892f1e53ae7c3d8d664b92b6e7af785156e168cf314f083d6412270ef5650eec659ba7ef0fd98989334a9a705f3f7605d941be452cc03b4b934cf0c742b5271802f9b255e3be029a71c3163e9a471527cc621b431ace30bf72473dfaf780f773a7ebd9ff31e4a88b7ce296675ab75e1a13d7fc5eb5babfa64944fa6ab1c7d6fde49700f709674ef4e3e1ff5068a4595a1cf88d76ea279bd4eba375e6301fb5caeb4b5567ecfc96517d39a38f19c30dfea3530988743a2f0f0e23dfc7d6cfb5cdef5bb249dfd321eef84a17b973b9b935d69ea6687578eef7f060f7cf698fba116c144da61e7ef29bc62e56a3d3967c8a11eec0ece97776bd579403d6f2fc7de37cdd6e09c3c069a4f1373282e2bb2f1ceb37c3c21964cf37f1067fa62e7a146c23a275e32b727031c8dd0ba8c83dc86a9e324bb405ee5e7ea37f1cfc7ad700bbb70318769cf5701ceabf72e0620ae059fcfb9ee5caa7b9f32155677ae15a4a7e1a17728a43e6e1e6feda3eb7d1858b507fbbbc4d86441abe3e85cff46db2e694723d435a9ae24acb0f5f1bd4db5819ee8f64d6b655a238ecf84e2f2675d033e478415da3a962f443f47369e63f07b8a1f0c6f12b55bc6a58b8fb08d70ffa276fe7afffef7f69afa02ad915326919e37c408d05a83ed8c316f333a2b64927a2b5def53f505b237a6b27f09eb0684ddfdd479964753ea9d168fd0fb0b93b5e61265dbe4e91ef94c723eb4de871b8a891253e909e52ac7a9fac935fe5be55d65b6e0be628175962c2eba3f6e1666eb2c039796a7fb1ebc9eff216ae52d4705f53fbc735cfbd6f31bbcbf8bc677a4934eab9e830c1a69b40fe3b350e363fc6a5167d17c19e01797bfde59cb8eea33eccbb33fc93e1f638d89538e7340de0c7ebfe630457f1af959dc2f54ef91c383ee3de312bce4cbef557fe5827f9f235e8be9730f396f39bdba1ee74c4dee334dd77cdfb8e7e4523ee539e6df052ebf0ffcf6c47b644e9996ef35e398c55b617c38165f713f49ff1b97f92705eecf3c8129631ad319de03362fcad7e008f298fbd1431d2de27901d62e823f0bdd1dd62f8ca0a9ce7abd51065eb031faa72ea4abef6d2bee6bd0d7e21ed1655381a79bea4446a5f17eca46e05ebc9ef06c94dbf1665a2f67076e670ffa2f66c118ffe50b780dbf799edc7707df2ffabca5d817c0f1725d69093db1d6e7fa4ada428b806b399cbbdc3ed0350db2d9d916e3cff32335cfb61e93c19ae6ef4ed8f6373773f8883577339ea4453fbdde3b37d747cdace1f539e9ffab9eebae8bf152e26b57d77b06c655327e24c37add628e0d7981d692a9f5ae237bcd3a9d69dabf8f7aa611ebfeff0c1ac66565e60cf7483536a6f3f3aed706eb1689677731e486471e62a675465f428c89dfe702b6dc170b8d703d9ea81f7acf58fff2ee6aad25972bdbd2f4311cc58552d728d4f52f123a58f47dc1639cf5e3305c03dfdb3ece49838fcf7b9e1e5df4dc7e3f3f69c67dbd579f137fb57ef62fefac3964818b8ff57dd57f611b30d67c8686fd18d03ae333e8117b09fcc0b55cd01ca75c2760fcafb615e9af6b1bc2f7855dc6fbeb7da66afe7b93b59ccf5d3cc23a1209e37caed604f6c3b2f98533a73feb52899ea3c7ebb83c5de0bd549d1b361a3608fe03cea41cd869f98671a5b992c0233087c1af617dca2f5dd8cfc5d5bb63acd9dfd063c073092e609c510f577360683b79243ca3df7307607f342ef8795dac193a6343acc50de38499171c3cfec3fbb8f82eee73c17da08b1b259380f1c49fc9a5ff8cb9b060772fe09d633f6a176e260fbc6727573e80313887aeedda709f2fb0bfaece57e6b2eac69a9e3f840d51b6867f0b5be55caf831a7f7f8fb8af0b3a2151769e29db9ff25c5a47ecb13d8fe31af52765dbb27ad6bf1be532992f9bf1f68dad6b25b08fb978e8fd0adabf11f84a0d6d0b496b0eb9dd7e6caece856553e10c9b3146a0c577bad8a9e8eb7d4940fcfffa1a5887c994c640602dd80278834bc4bc90376ba7edfd0e6891769f796a5c6239380be3214f6bf3f684feb6f86445ae37110dfcdd1f3a97c8f7d861dfe87d75330625fad5b243087f6090fbe73566fc75fc28f6f552f04f445978559b1bfc8e7ca88bb6cf7b605ef5999dfebaba07ea73b857d9fcfaa3bfd1fbc854f78c9847aac4999faf1f285ee77f1b923091ec43324f1debcc1f3f07d7bdb6fbeabfee2890be3ea3bb6726ec30fbd257674360c7d773bfe973a4b59e6fe824c77271e5bff06fdcdbf385b825a005a6c778c8e93b5a1a01fc87b3e2216d42753688a650bac3748dfa917374fb9863d8a5f693f859909394b5e433dd8a786ed4be577d2cf8afde236a4f0ce211b249e0aad15a9e2ecede4b94ffb2082be29ea2de077aebf3ec9a4bce5b6e26e0a157ef08ae19c40a1cab7ae26104aedfb740f3f6347aaf94f1119fbf3ee93a90e25855f6b9d05a75f2ac7b52b2bb7ecfb25fabce351dbb441fe0df5a2602dc209ffa3db2e3199a99bc5e8d00dca9e477cc077ee61d73f88bb24d5dae3df47b27593fe0fd04f3d5b2ff1921a60b72e468d20fd6f6c55aa17e1ad4eca53496c0fa64067060f9bcdfb36fa8854ad6fe13ce8439089933a9edc7f699394d92ec1d3c9069391dffe5bd988b59fefa4fe63b1fe8bc79a5ed81c785630ea5c1cc7b5af1fb3efc751e87fe89b65d5fe6c90ab8468c31869df8c318a7e060eace43dae7bfae7c9b6fd6e97989759a4f5087f196e05697e66bade7be5f67a4d346f1068df941ff76706d73899a911de9cf2b5bf3cc7c7c77ed5a5d5bebc1685e8895d6f59257763bfbeb7dd796beefa5f7e189b37ffff9a76766dca08a5fe7d01e9329fa41bc603641af169e51adcf40bec30692f6a9f5f5fdca5638c81ba8ef0eecc3e039daa0cfd350fcdbafe57edfe452ef9be5efef3e2f5e50afa239f6fdbf7d87f282df7c275917d79c6e1e389707cf6cdc6557fec3967183860d4eb928575c2fcad62dc1732bd3cf39b427b25f7a4ed0871325931330cf7806da739d3d49594f8a6af901c63b073fbe3c55e847d07132e1a262f8bd84c73987bf115b0ec7266811db7c3ffeffe5f8926e98a1f912b5ee77bdf8fabb46dfbbd473fb873568f4faa88335a834ec2ae3f1b3f8669d0738afb3bbeff68155fc1ee20dbd0bfc8c6fbfc35abd023d59f18f4faeddccbeee4fe3d4dffbf42ff33d46efcad57c3f75f3dd9da5dfecaffa6581388ffceaa6f9db77d4def9ee3b9c877a1bec43aec93f8e9ebe9e873bc19c48f2db33a932119f614e19fbfb16fefef1cdf71b7d86f5e7e1e00c4b528e1d85c0fc7c73469bfa99d87fc2bdeb6fcec55a9f8b92f1037bde93fd1cf5cfa778a2e93db40e3371287ff31c67f80a29b09c890f5e36bdaef4b5f3d4b9ce65f5fb250067f4e0b985a3b953f9fba9a56dedaefef29ecbdc73f17dca8948ce1f8fec2fef997be79efb8f341cf499d5e76c901ff0fabc13d76aac2ff120e7ca067ee93731de35bfeaf653c7e833e186d26ba359a17348815c30a65e8f83ce090ae39dfd64f8bfeb19e658ed296b1cb3e614fddb5ec7b0e5f0352a77011fc4e39cff06fcd1a1340f78a73ebe5bfb57f1433c7e567b2933f5fb15377e73cad7d03125f777d133211fd1283dc730f7a675a373c36a0d76f3f55d4e42e7d61bc430a6b8daafdfed6b1e2fca8f55435c0f9d032f670fdadeb5f19d7faace76752d8a6991af07aea87ee03d63f2d8ad692edd512d695ecabcf0e417bba87a8e8a1e7f28f6fab3af31ad7a7fe0cfd2dfd7796960efd29b357c35ee58bb786e8c059df176e4e9d8b1fbed43483ed09ceff91a4d794c142ee6d8e7cc2f63ca7da4a82dd68f9c7b22cdb2ec381dc4236f7a1c5ba9ed90ce2766b5ffe57b6ce3443c76bfe615d539857ce307ea4195f1ebf65dbc01ee7d8df39bc605bd8e29ea4aef55bbedc6b17d96cdd5babccd1764a8731106e4cb73402720d6f530f5bc9beffc5ecc99402e1bf113f9d627cda5d810ef740c9c8ef1fd1ee17b3f7e89fda53709bc947824f22805e62cd67b758b3e804964219679bc8a3bf83dd6780f656fcdebbc6b7a6b1b774ad372ae757e34666efd86388a79f2bc0cebf7c1ecfe7b8c9289fe2dcebcb0cf95825b92b175f25c1ada8fffc9fc9eb04b14ef5967ded79e01dd058ce7aa09aff321ba0e82b130dfe1a3970fe065d27336f435663ce667cdd3899a9fc24b0e7da1b50b4ebabefe612a3b3e8c47540f859a9771a47b42a437596d494fa730d7f7727a6d9379fddcaeb974c0fbe45de592d25fb7e721e575fade04f5ef15e3ac22c63b45377b24baad2335bfae737b3a57cc6b015cae5ff396d7b5b2f87aad5cd781d27be4962a03b9f5eabbdc74a073bf781f59ddd40dd5b912f0f7f36b9b43df458f517cf9f65950d7f1fb7a11bd0fd75848aff3b7ce71a1863ebcfff355bd1079f17eccd53861aeaeea3a7d1d92cfc03e871f5fe70a877b7af2dd3a89f43a51fb2cefeda5faf70b3feb1aef47bed21ff3b3576719de3fb9aab5d6c01a14ba9639a8c355c60f3e2fc6efa88d415fbd36ee38c655fdefe437edb4660aae5350eca8349bee4bd617d66b53226fbd666e7c736063146ecbc67be8331bb5f4cb4d1d95e67e72b3360e42c7b13fc0234ebd8664b7ed28e698a98d7a0efc1b4c41edf4792dda23c1cd9c0e7d579e8fdb75ae7dd75f57b963e8125cd515ac40e7e9f91ac33d85f3a0d57937c9b803bb98f1f8bdc147ecf7999ae79d641b59a8de569c19d11efa3bdd9c935faf7468e1e3b14f1da11741d7f7ea6cede81a58130c781c3c41f81a755f7d864127fdeafd2cf77a4cfa7a723736865436d6b5e483f65bc0dbdcf6be2fe7f59af06a6e9e99372ecac6cecd9e53732b6f6ac5fd7a1ad8c4f4cacfd1ef1ef7bf25dd35e4cf87e72eeaaf38dbb12e98db2f92a71b3ff1b80f756d508ddd45635ad8b6e2fed565dcc764b2b793bd0f77534fc47e4ba293d61650bdef6aef3046632b9053a95ce8e99ecfc01ac167a8d4efd49e7dd7f5d158d7d1aefc8bfebbc667e5722dccc039f5f599963be8921fb506579480c3f6ebbdb186863cee3c7fe060bc3e7b33f9ed7cfe47cfabeb2debe9ffe419694decff32e7caa7410df9b3d4b6487d8762c664abf1f47cdf0c79e701978a5adf95eedd4c750fe1bfd6a0154e40fe277ec07f76f64eaff110c98d1fbac0b81b9c5fb2ceb3eb67e1bda26aca6accdfa32bbc5dbdefe7996a3525f4ab9254f7d94013b944af4752df7e765742db30d90e3ebbf24dcaeb3353fffbad9b67da2fa393e68767be83c8029e3b5df71cedc3df57eca3fae0f8980596eebde8afcdebbbdc2117f4cef61ad7073e643dbda9bf6fbef53f3343e744e89c53d7507931e6dca13a429ffbbaaa2f04b2e27f9fdebaf7ecb17063bc9fae71639fad9a06b9d7c1d9c4f505c97b235139eddb3c2ed6dd9b7ebea48f6fcbece8708c68a077bec75dbc7f823f7710e3b625784313a1c73dfbdbf5306eb9d241a2bc420b5e1269a33e1bfd46fe8beb618a5b22fcf26ec1e58fcf32ccbb7f8385a3fcdc1cd8b7b6e9f38ddd5c917fe37d5713aa5f4c9d2b7b76cf93305907c085615f3dd9e8034a0ded0f0d9e1b67b550cf3ff483d3431717aa9a771ea1e7cd935a0b5b3d97d3633d6bede7dfc6e86576ee351bb4f684372b5fcef8fd61e9067a6cd5d865a3b7f0f26d1ee00de775250de84f67fcec9bebe7c0de94a7987ddbd5f6263667ff71a931224a23f19bfba6a315b4225b016c11e2d8487f3f0dcca5c6c16c778839447ed098a3448f4b8df9337bfd255a1bbc5f93aa31be5c2b68d7d3ab5ad0051a846c67723145ceeb49cfaba96c01f0ad7fbea6795fca6bfc49b0496133ce42efc370780dc203a287ef8badaaaf7187ed3fe863f7564e718bb7f80446b3343877a374b0d475de996f887345a9a9716b53f8b107ecf553bfd72bbde793be372c595a47d856ddf3f7a71ceabfc45f88bbac40efe3be8ff4f961ebdc9ca7cab608dd9327b9e7cc9cc277111b817a841de89ac2a2455da4efff93773a2763adf559d7ff3ebde85c2f7cd8447d4f685d76f983b908fbb372f0cce6c06fbdf21d9fac8373954fe731139dbd1de425e9fcaefa3aef6d6e230f74afefeae18cf848db535d53c90bb3e7b45367efbdfcad7d92593f1fbdeffb5ffd96b4fe743f74d9683c2b72679fcf52f725e26fc04a3b3a77f35b7f863c95f7cd67bace83b92f1dbd074fa5711dbb7e9f13fd834d92e03d41ccfebf6c93a85ff21b5b94c0f7a43db7c7b91324e94d7f6a7a28506b6ab7e897d53e23e2353e338c9830b6a3183522bd07c2be5eab349e86b5fb037a0e58dbb60eaff2211ac379baae0b6595d6f02b159e1673c6f1f0cb483f6fd10ae41cf63dded13c62dfd0fa454e866c425f13dc7eb706af70b7cc79847331b8f20dcd410c3a887d17d7b9016d6b794f5e61b90b6b8b7537d2fb9aec0161cc1eb4af7ae83ea7b534d676e149fd7ecc5a7c88438e07f850bd0612ef1faa7b92fe93eed3e17c7a67f329af1cdee0e3bfab09dcc4f574ce839b4afcd6ba2913d834d479aa997080571afa4fcf4a4f84f6602915afa857c9416fcce01c582a5f13dfa5ebf69893f438371033f47882e16f2876e83f23db493e51091d59eba0eda6f621e3f16b3ff6dade9a4a234bd97ce0e0166fda2fee6be6d6a0a78234177b7cd94efb9c568f3b292e638dcb4e079cf503fff6ace3cffcd739fc3e7f078d6fdde3a4eb1b349fd7784cbec7e22abf5e3f7f9ffbe0b842067fcb573f5fd7a852c4c61a3f02fd601d57247ebf07a06721c73df60f385068d92bdddfed24cc0af838e09830fe363e8c4dfe29a7dfc6e17c6ea5f26f71f82087ca637eec3542a5d4ef9840c743cddda086779d2fb006d7bb8aef2a70c6cbf45035885bc727d467ca56dbca539f93d85e90ff11e682d670fe8f8e4d4bcdd7a16a54833eb6ed3df883a2bc19214fb5da6c6f716fe4bb355f70f894ebd6cf3172fb9880d6ad7e061b3d59e351c298c37ab79e5e6199f8dc151a77977e14a80964373164df177855a388afeb0be9d0aef29aa5dc66ef07de699fa3ddbef6be186c458dfabaf5acc7b18f179113beca5b222f992b0e418a55bd7f584bc47bbdad25ea18dc3ae29eafda17c9a0d589b13775ecbc7c80cf97725d630b1b0f9bf004bc9b8e2bb3f3db00b30c7f8078e8101f74fe3cd5102c9d0b423edfaa756fe3d5dc7ce7bf5f86e71ff16aeaf3ab5fbb03bf98e20d1d0b010f902bfe17c246d25c9cbf7c2759bfa2e6f9ac79380673abb1d1ea5a831a28ea7ac0e4467a7c7b9f3a3d76e3378891c9177a40ada531f57ce56a0dd1fc78ffb09f3809b95f6254f6797eca31eaf14cefbf5deb7fc156042f7a5cad7e5c91032a0ec0f0d05a1feb1a9d444e3056791d53710f4bdf280cd4e17e7cf3f9635b30cf47cc3c8751d2efa141ad90fe0b3ba978ab3d3372fe9bfa787abaad8f5f9f31d02314bb9e2f90309673e3baee531ba7015f9db75eb2ce931ee34ce98751fd7803fef4f418800bc5da9ef06e61afd17dd26365713f80a53807a8c619f7df2b5d7935dfb7b5b76ffad5fede23adfb5fbd9f37fdaf9fa9d67024db5ecac76f6ad5db4b3cd5dad98eba16dfa3ee7349c8954daef0137ded9bdef372bbcf6bf4842036d63e3cc538947fd6eb1c7d70c815e4dbde5e9afb614c555cf9e42d6b4b496948f479d33a6ba12729d22ffd39e02fbfca2520ae2ed53e241c4b6d84c37b83db0eba2adfd44d497f55f788731f0e7173e0596f7a270df7aade377f1877cfff19396bada114e4139ca7dcf357ffbc5aff3867b23ad37de1ca1f5e67d7df73bf7c8fee3dc6f9e8f6311c300494c3d3e38bdfd15940b9a7d961faddbee5f15e2b6e7bc3fd1459f0be92d144cae684b95f49f09f84b0b718e78bd626a5bde508d4c8b22df885f3257316c7d6f149fdce5a4f83d95af3700ace43c56dc83d37e2f77287cfd37bf613e64b83f4998b8d47f3af7808bbf9db83d3ec0c1d64e6e8b90fdb9a62de74fbc931e4bc721517945336fe6b869ed36e1d24eb69058dd83e779813a6ced37b2551b5f4f42eca0f54bf49e9bc59cac78b84a64217ef2bfe517ab7009c76e9c2025f6f8571059f8ab209c262ff115a39427166a8dc8500576a4eeb5661f19c4046f7ba764dbd9f4eccb69375aee292f9db52da5b39fbb0796141dbc5655e397f0f0e9cda16bd461d611967959b7e96ccd195e68f580f1bf53cf67a5ac547cc9bf1ec2a3fe6146ee939cbc6379fdda0af8964e3697766cc1f841348ffe52a679ed553a1f3a5b5eaf54c142fd3789234de3ebed25af6d20a7af7d9715a3d8cbddb1e4268dcaca4bf1e5e33caa307e667eceb5ec467c73c8913952b89ccb0bdb9e7817b15fc6bdd67dde78c7f47656632b723f10c958df6b577e12685dd9d11feaf32c317e63ed17c1d69bb642ec7b2f12dfeff9aaba33b3ba4b21d371c1ec6cdbfb3ed31223bb99ebb95e207c9666b6feeacdd3033a771fe085f79a76dbbe6f5a65e8458e9748e27b1cb5a2d593d0de4b06fb59eb246a2a362a50bf417484755b0ce237ae474ef87855e8723ec86c79c52932c259dd2ba91cc7da9755ed04730bfe22ec29966e2fdfb1e71e5d783e346f3ec4be8cdcf53c40a64874e11b8fae95ebe9a1f1e9b15d7f4d304b1389e47718692cf68b0be692b986fe4dd90ccc91590c6afbb6c02bcf3e676bca3ec30d5dcbaf98172d62ab6eed6f79dc56b675db9988328e1b3ee8ef338a242dfac358a696d3796e68034e4d02ef8cb54e5ce66cb867b9713c17c5eaab61765ac7d0cfb31072eceaa1fc12dc3ba160eeb9a3a577303df97e71d5cc0e070eade83f0ea7c66eb5e39f8afa43b19294ecce175efba397553d66788b33363d9d3236183c4cf257a766dad536b46cc39029c249f35b384ce757fd0efafd607b079c99438d951dba11c4d3a573ddcccafa8ce0ad2749995e8a9b4bd0ff05d891c3a698105ed994c6b815667ad677119fad5efe081d6e746ccdc81e9350f2678ad3f073ebc477a25238ab953be4ef6aeb9c602ebacf9632b8db75a73ed8edfad8d38bff87e818f90b4cabf57dadb5c834ac40b382bc5fdb2211f5c4257a4451de1bd456d91f55c27515edcf1d99733b7bcc1f8ae79806bca1f14e328bbb0e0b115e8d1982f5fb8ae073d61393618b7f3b37f2e4f69c8d13939fe09cd31aeeb7f70fe88fde494c78cf3c7b7bf55eba93a2d1b60bf986bda0007f8d692743dd18f31f8c1a4b9426f54e2ffbe5a13d49b463ea6f2d9eb499c47c0631fc1c195e5bee6aeab29ffed04ec5f5446fdaeeb1bed84f30e755fd3b305e7e7dd36b2ce03fe56a1fcca27e46efb1e0fc54d0efdbbc8d03c30e1dc5a7bc37c94e478e61a1bdc7c17a3fc2cacad075d7ce299e3b9200ec2bdaeb76a1c02e5fda2247dc733d5fafeefc0d40ab5f63566bfbf7f8afd436bd246ed299b15ef5457724fe1c6ef7b6914979cf22beeb8ce58600cc8f60ab659a95db1564eddec39af1042a77b4e6354f731923e0b43e60aeede53dcf3bedd14a8519b14bfc67988faf0ecbaef72b2ebf93a4c873970e7545b3087d84e2761adf615e37661878307f8fac5802bbe5b8ffeb144ae99f6622290534829e68c9310fabab00fe633743ee95d7ed62fa8296f4dac3fb65ba2ff2c45fde7ad8446226bcbe8be06ebc0752670f768ce8eebdfaa353f7c2ef5d91d627de42c280f265bc241447e9d1df51aa33d5240a366b6ccb67a8d8586ee7d8af9d9e8dd53ef438f57b27d5067a37d9896d918fcbc6a1ea4ae77a53d97023feb52f3486ff5d8d37a16e05567ad6ef2a9b369df2b18284e228f38ac691f9bcb86314dd6f6331a3eabdcaaf1e01c8ed2d08eae9eab1ee93d80eba6c2c2dc7e9d77ccc5fbb0c64698187bed5c61fa0cecc1fed9a927887290356c4f9b229e369ea0276cad6dcea5ffd4d7567a180d737bad591773dbd744bbe7a71af25e8fa9ae9d34f04d67035fa0c7c1d25a49d4f3a3be912ede6083396f01dee9ac5f0f74762a5b15ebf7f431e7c4835ec1d6abdf3ee93a149db90b6bc45cc19ee8d71ff70d589a279a317ce6ed5e9df76b89f20c8caff396baf6aa78d455ec1c5fcda5ea19719ed99ee3f9aedfade9f92406d779ceaecf82f82ff7fcf25dd8e6cc3cf45a13e6246c81e5df7e686e754b63f6f4592593ed3eba3973d4f867ffc97707eb65b016757ed032f73c17d4576317eeedf8c6fd7d2c8df1201e04411af5ffbe9ea33c9a2e73d4c98fa7958b3c893aab280fca7939694f12f6b7b9663b36a0a156656bef663faab9ab5e700e6d47c0f62247c2befc79018e73c67133efb6c1f5a73f9d0de8879d5cadd3b8d70d0a65fadac5b1dfdba3a3fe9d94da1e46ab87b537a8175fc2cd76ba52e32306fd77076810cc0a9adf51b88156fdf6807ae592b44c9ccaf51dad176f906e4faf472a5e10d3934e47b47f065688f22ac1137aaf289fe7653ba5e144fe91d27dbcbb3cbb8f386be6a114cf37d7fc72ff8cb4d4baeffee67eda5e3748e148546ce1146ec0dc06db6b6d9b4c908db50f4e7851f1cd8e9e49ecc3dfe337f65d080362febac0ef269caa08ab6ceb689e10c373328c09e5d99db21b33a56da97aaf1d751e3501c64569a3719e5af95b511a71ceb1d73b224c0fc7fcf6641a6a8da26e4c8a7b3577e43f76cf1d070fb57bfbee1cb78a50d6d04c02474a5a3b91b213513c061ea565bd682701c7ea86316219696787e99a75134d68e8283ce437f1dc64417bb650e7a6e12dc27ccbd81a53dda7926212e6e87b272d90d01ab9d0ccd01cbe36eae2a6c13de83f2bde6b69be864eeeaedb5faa26c871736a1db4fe47d9f9cd2abf021d82baf73d2cc531bf1972e556da56d5e752826786fd347ba02ba2fcf171f7dc4f9cd73c865bf0994e9ef91c6f97ecb7a6c8f574fbd13ab8abc463ac04f34ba6ba4e4f392895339c3811e256ad2977549cc7ac195750ef50ba0f39a7b9947ea4b964a9b7e78df472c45dc8715762fed33de74cee168433ccd245f71b61f8b02769d1f6f38ff552188f76b8d3d8c4b770179d58d7250d76624a9aafcafeaa6726add640f764f2ba4997adee177a0b5f4667d4be969a1347e1fdb68ab78e35434bc3372a97f331c9e493fbcd88b347615fa856c435dba85b9bdd5e901be6974f659bfdbeb94f5e3fc3f7849daabbbd27897f8bb4833b7bad6cf28ef987e773c777d4feb6d60bf6f738560d8cbadf9bdd987fa05ec335a663b87be4f1101fe1ce3d6b4dcfdd9a78fcadc374b541fc3fdc2f9e935e86dfdd4ee2dca7ba4fb29d2e3aff213e4e6bd2bef522eee1a4df08d880236b277d689d3ac5e11285fd99b59dc4296b7a286d7ca1b8d5958d3214ef8e13aa391793ffab7f333c9f3591274f434d7639d024c8ea69d0b016be2b3b5be422f7aff4dea4d2a6e5b9527d5d4ed9607dae1da1f470c693c8aaf57a88fab93c21d754a1c73e6d3e75dc00ce7ed6759b1b432d3e6061186f9457c0d047d7ba6b826d2170ac0db8b077217415d3f49e73eb29c5d75eaf25dc685d892294e212259c0bcec6d0eb4cb9864a3622155661041a435a812344e57328dfa3f4109a05f8bd0a6859a54ab7586939d03df31acf87fc94607e7637802e38631352f6db25eb91406b9bfbc023d66b72f5b9c57ac4a96c949d2f62aaeb2ea5ffc4f7640ca9f279bd40b24e61664ecb41fe6ca1f2c91c33736e0e6b28497c70de3fb09f30a31ac8c4bdea634ed39f5c6f622ca449354d7bedf45c6dc3730deb4dd0396f6a0cea4fae81b721b45b52e1e13d869a6cd2a848afdb9e784b17fce45883c2575adca9771fb6297479e6f399b2af9b2a639efc6c3c5dbd301e2aad4caed7cfc443c87b89eb56ad60cc6d7529d41a0dec283b1ea39e439dead24aebb19ba7143db39f5af3d59ea0176bb6b4d6f0bf5e91ab9749c1359ccaa61afe208fcbcfbdca589795f1e1517ed0baa17c1626a5aa756c2751767083077eb72ef6249f7154525ed5115a47608be74aca97b5d6702d493bd2e1ff76eb5261459887635bbb5afb9c6adc5c47e7f3cdc4b3971638fbcf8a7f29b6ced302d8c7a4c038dc09ca5d7a7583bc776551dfa8400fbc2538e7bd94f44c1969c331665ce56cef25e38e91df43bd51e527722f60ffeb94b8de88f1eaa2b602ecbdce37cd8acb91eba76acd79cbc6bfc3bd93bce99eebccb819a5ef00bd8f383ba0ae3caf8d3d7f3f62dea21fbd969475d86b5f4cc55aaa6e012deb73f8727eeb7db5a3473e8b78efe694dff3137e7eb9f391637cab8071957dccc298d35cfd9ef2ed3e5d3b02ffdf316c2ad2a97095dfee68cd8294f777664e1355f7101f1c2342afe3d2f977b40ec6ddf5a3500ae20cc9fde99375f6b05e89776242bcddcc8957cc28a68d9a7db79ee7e8f9860e24e75352c647ccd5755b014d877ce920d6358f027d6f8c91421e7de58abd405d33af37e0eb793248ef7d61363daf8ecabb8b77fdfd64bd05b7236be839a883a83d911d3e7b0d7915171f9037e733ceebd752ba073f77e7cb61fe829c7350d026ccd3118f71d26350b6dd1e79a43c9277dfede185f46681713039fe16cf0ff28a4bb4661e47703d962f5a33866c7db6c5b323bed6635264bf808313fdf30be56b0eb9e10adb5371449c178f83b96885d6c383dde17ed8b43e914f95de53bc17a1d7e301759f40cf15f68da1f60dd922ff9535e975cef3a9658df24c22c75d2c77d0fd7a7f0bf8fb8bc43b72ed2d0ab68f839c96b803e6a9683d3e0b6037ddcf80f52785c17630abe09fa64152506ed00a5177e8f6c82cd814782670cc78b7fb5634ac01048dd17cbda7b8415c2267dddbcf1c3e4e9df0591bb27faeceda48ee71ef75776fc6316d795c7bbd17acf7768d5ae6237c9392620867d984773570e0d6163e54cef9ea943050aace2042993ea19eba3014d7961fca02f319fddbfb3f198fd7fb95de3f511c2a333d7f9c4bf7ded9663d31b62ba53cbc58d70f6c63e4f1acfd006bfda1e7ba19ce7560828ba0ce609b3cacbdcb9234899caaf10fb8d602fc15ad67006bb7cc23c68e08e5cf45c9d649a0ad646bacfb011ae7a9c93e79fa4fe7173aab469d375e0c5da06e7f19f5bf8e99e244ee6c8419deae99d3ff70cdecc2c67322936c38c7767eafd333c6de3f03a39bc2af7e587b6a1dd991fb3c4b9dfffe9d9596e2bfaf575be01916b7ebb5fef7f59a87d2bc8f1ef6a8f38a6552bb57fa5a37e7457786128f2fc6d8835616eb6f056768dfa439b8d2158fa6afb42cad5ffa5e95e2551ae8ce26db77d6b1fa80ded5b3eeeff931d2fd95ed1a785a2136ec93a555abb195a41ba5ec7c041d235de7ae47c0f226880513ada73853da5c149fbf3feb77c47eab6de6274c9e5afe5b564febfeda66c1dce30563598aa4d6d7567572e5ab8b37e8e9cde103c8ea6d895c45cb7d2499f7a16b219423a7fc8d8ee927da4f5a5a6b8fc6bae6f3dfb5c29dd6a99aa99cb5ca318a13f80a11e7a449cf81f5871896b02c121ae3026749546a5fca9ff39ed2eb6c809b18fe775d3e8cf5782d39af9622eeec35a9de429eefa5c1fe967598f33ebae7dc4831b7463a87add610f9eb84d360ed7ed4569e94d6f478129afff475c194f829a5eb9de0b3c7ade65a38269c63d7f39d0aa3460f8fadc6e1e7701c2ae95b3883233bbd8ba6aa06ee084369377b3a1f6750ad7ab1f3896fd1f0c0779f96ccaf38b02f5d2cc5b8e4479bbfa7781863e55f47ec3fa4af58efda3e74ef8c5ed04dcdb63c7823ed02710f5ec12c1e7fb1a7e0ba4eedb5819cddd24e3ddeef599f7fe8e229f8e9d10978fcbad72bd1b5ad28a9a72bce1944ae6755e085c853684299dcdfe0442f06d6d21fdec763ee85dad06b34019f45ff1e35f850a9df78164ad99d05b73916a718d680392757d039290365676a8ac9d47bb25d52eb96b91674cdb2f3510af84ac87d7eff0e84eb739e256111a4b5861ff693e203a5e1eb7e738f9741ddd7e175084ead8f705b710e23b89903551f70aeae67f39825c5943536279275020ab5f7545ed91bdccf8b58ffbb647f749117175d275279f9b1d26bfb726f6b31a8c90bb796c0db445f62b7a50c75ef23e9b59dddd50cdfabde96cc6d22b9b674f37cca7f5eb276c9a285167bda8617159f3acbe6f10ceca7c6cd716db4d0f8576fbf847eaf7ae66014eed223dbd53cb005c6c5a80c79edb3d993a33ecfec09b012871af5a1419c93f5fc7c7385f76c610fc554e8fc99d61e3933fecb991be20defb0948f3aaf5749f61ff303e3aec47d68999f3dae1bf14e6aeafdaedeb99e846ded2c2d93fdbfd4866f2332fedc2ea683cf471a23e312165d6979288d57d6f73227d6926d499cd7acd32c9ee6aaf6ac786d775d0c131bee257c217df7baf1b16e2268f72ea54f5cfe16d56e6a97f9333373dac5662aa6b246d394b038c02889543d7ffa11beac757da2b3d7c435c25aefd6dac1382fa5cf7ae85e2e32e4acb653addb9999d3257e9f305799b57612d4743611d9089bf0d5613e71e676e4dd9c2962691d3caa7f8845bd2bfef039f3a5eb7e4168f32bdee56eaf37dc4fe084b07dc3e753dcecf47ccf12eff768503eb88b51c693305bb49cfb985433bdcfdfbaf50cae77ae57e515c77ba51bbce9fa80d6bb77393617fb90b5aff85e0969376d95ce71c958d880fbeb96aeff3c674de195f20d8eac2b2c350731636e3ebbd85eb2868eca3db9c1a0afe0dd0c5f6ae68032de3aff8d7e9f22ceb6b06f96e8ed031e204d759d9b7b609cc566b2d3fb65e342db40d49a975bf976ea7c2f1b31ff979cd01be68b6b324fdd3b69bec784f553b3c0d47bd808d4f34709e74b73b283915b5ce09b7e9bb369552e8bb135e9245471fbe05ea4d9a17c885af5bb0e3914df81ebe0f3dcbd5bb2463b6355e6ab97a3078e61f2dbd7efc0e0563bd663b50fe0bfea7d3cebf435ce48b74fc87d2c7b4c1630533f555d997b7dfe83fc9415db91d3d9c8c03dbeb14ff011be9ce107470a5fa0304d74be2f9bc74fd6c19dc8f878cf7536776eeb3e8eb71574986cc523d3f91b2fab8c752e736f4ae3614e227be2e89c5e6763d0ef6efb2768d1021f12e9bc985ad7fa1e52aafe24e75986e0c8207be2a593282fa6b5d67b370fe0604e496fb828b52ebfae7d0bd597c6f951ba8ee2cdd4d7a90d5fd571e786a9ebb865cbbe4be24f892fa79eace4f91252ced95338ceddfa029fb0ceeb29f3eb7f72ddf8144dc71a53f3a46ddffb67dd637e880bc62adec095245e46d3815fa4e2b7a5a339eb4e9d3d4869ef9eeb46de728c9fa1095c4aff6e69dc7e6e5cf873a76e8251fff9b1b37d76d878b34543be70e0fa7755c3b1585e77ef7195cfae1bf0168e91239c974d7373bfffe57cf66b943417c465cf0fddd88c31c634369b9bb1517a14025c5c037ff370d17548bb707afe4ec66718279ca793efced3b9313c7f3b3facd0e72eb4a044a3ee350ba4f8f86e8d885d0dded033af914b34f3effe758da8f53a62be0df2b75733df635e8ad3127947da03f7e1409f3392fb3b8ecbf6c98ece9052de753ed23a94c203de1cbcf269aef073d46f82beff0be3d5480b5df53da9daca0cdfedf5ae12c50733b4a526f5486742f9398b9838438ac6bde3da4afaec702e3517d34a6129eb499cad9d25f08ab937ad668587fe8aee594be6205167ae3572c5efa3f3cd77edeebbfafca3fe39574cbffbaebc54dd77bbeb767bd903b646eb3c78d96cdbafd7ddc4d2188e87f11475df54e1bf80f73fecffcfed0def337ce1f590a7d35af55fa87c42bb84cf7019cfbec5672097a3620a657bed526afc0561a62cf41884dfd6f6fab5e84fcb07f8c1a81b40dbec07e353dfef9023607f54e50a80d7e2bfd1fb90afd776eb49aabd74503e45e9fa3b152766dbe9aa61ac06c76ed0ec4af3475e8ff253f74ac57f5abb8ffff5da156ef0a9de23d93a61b2e61e50f9063f6429fd0beb39f8c2f0cfc0af96867fa9614b13bf0d7f934e4eb73653e54786034ec77431acc9563bbd96dbee1a057af394cf5123aef9d0396bae29cafc40bd61e6a3eeed5bb47d5fa05039beeedd38d64fc56b9f675339d6db9cce7b89dca2757c83cf070c2f6c50e9fa88f5c9b73380f7feae1e396eeba6c751acc8afde85bf49dbbc68b45fe8a246a8f12b6a9f714d35a92f5a4b7e87baa46b57e042b2d7e83bc82bedeb7a979a7c07a77623b342df4d9f6f7a459e37b91c2fe074e077fb0c5fd69fecd3e69dad88b291477e29fccb5f765f3bebce97c51df7ba00ffcef5e8e33e633b5271cfa34cfc98f30dceb3fcc1f9b8f54fe614d4df2f4c8599f156cd23f4cdc99732ce6df73e2af6b1d8865ad1be0036d686be287c24f19b727b63e613e8e2d5c737e656cf9f55afa9e220b97d8703ce8fc2f02ffc0c6bd1e38bf5e78b363d7d5f5b936d94fce23ea368c3e7f6a65438caf124ce278e70c437fbe1cbb9f7aa3919b7bf6ef6807f0006f9ff888fc2ef359fa59deda23c55963efd9b8d2d992f27c9e89c495c57db8c247719cbe76d19fba8720a0a279a23e6df4e6bf717b03df350063672aa92b0ee8e7cd9bafabca0fde495c45f37cb3654179d1b62dddda3302283fc82141c52075ac3e2157968d68a4d89d3aa9e44397a660260d2351656006bf33fc6c2baa7f881e661d5ac27abf4f13a064a95feba93bebcbf692e11c61357aeff090c46c57fab5d7fcbfee399b1cb97eebdc89730c98fb44653ad97a57a651f751f429229cef448638aadf5b47434e650717ba9ba07fc083b9af67a90e601bcbb8b8bb2ffdd33becef5b515d74a4e1856ce114acfe1de56374cc4e79f7123e3f659f7cf6bce8d99e2eaa13a0ee7bc6b43d7876c41f5a16c3c0d685deec3ad77a67d5230ceedf0c13d52e0d4fd4d311b73e366e729e96ad1fb079c33c83293f2e186f701eed27eecea055f9bf0bbe0a6c9fc07ce93295fa28bd3556d8035894baee16514873b92e29419739579b5ebef836fe66949bd564efaa079e044d10a85218eb2c370fe9426e062b0c6e7d68873e3dbd78af06fc99c6c4e1ce629f8b238a7c1fafde9c458d25e71e20bf94c2be9bf82ef8bf54f459dd3191fd985533f8c54fe2cce27d34a73d098e7c17a611d1d895ad027dd3b1869ee16edff1dedf8f74d8ee6f28ebc4e52bea0665c1f18e73491a9c683eefb1ae09afa41ed891b3415fb3734078b8d20ffce9ed09e313c60f5f69a2388c770698de01bb615f90a2a07c7e7fa99ef7740bd544af69338de02f651ca8ac6420297080ca3672c5dce87b53e723066d89cf877efe40bdb6b9fcfa7a2e7e3eee77ca173fd8f269e73d984032caa782c731f3e13f5e65bfe447378901ff278ebeb1446c59aded1a5cf7f282c8dd9c5d7f44e77babe9c0df4e717f981f1525e12280c0371e051af477da1fe71d52fd1edcdbbf0458da1136acea4e3244ad72f3a47b311d006b0712e2f8dc77629afe72c20de756f457ea9bb404f6dbbfea4fa6bfa1a6ea87739707d85f15835e0646de0ffa59c6f1ca95c6d369eb2bff611c2af4bd966f1fa5ba4643feae671c43eabfbec0ab3d2380b75fe75f1bdaf7c34eb803a29df4b9e292f2c4ea89d57d0e34beb3374f464eedbe009aac1479c361672ec92fc49c2d94c8fc8f1fe2197b076b8becf78f9c0acd04f417ea7aac346b3f4f4b506d65fe7c9f6c125a6d789c819d74c3c096a3ee2ee2c000643f348fca05ae166fdf30a13833e486b5d700c71e67e67f8605dac3a824ff7ec929e6192e9efef08ab99de879bc92362bceecc4d66e2c4dc971bae7f39c56cfb80fa3bf578a99eb437c6c4fcacd0478173cb7a046eabf7577e1f9963a11a75eb524acf2f9c9bf76a43aa3967e769c0b1b67452e41777e0dd503e46769cd68dbf630cc95c38698f59d8f9c8ef5ea4c65eab73e161c55cbad103dbbaac9e0af53753717cf4bddfaa0e67e19cab0d1f35ee73b87bc45e980bf079e7827237dfde77347be6f3287a30a7d0ebae8c479b399066025ac1b6cbfd72e9a2e7173515fe83cf8c9c7ab31843924ffe7c3e5826f06a51b50317547daea19bc0e78eb40bdd235ee7297ad43eabbf60442af4d52b7d42f44eff7a03263980f642bafd58a0473943dce6bd03af477d7a74ed121811f39f3ffbedd67afeec72cf93b56e6f6cafadfb4d24b806c6d069018f51f464b36ea7f29f4cc6592a1d6d1bba2429ef319914c08fa4f5aee01eb4e2f10ffd31d44362a16f2060ce81357414fc811ff0a6cfa8363d3177e1cf32479c2bcddae5da3ef1344d16b91a37d597523aa8159bf6e202bdeb2df550256bf6bd464eaff9da7faf54b8ce2e7670bbf9bacaff404fbcf3ab03c378af950f2d463c5f2db87a564d9fe7212ce49feed1c5d487eb1834f53a7b051f7ef44dbda72ddd90c6b64d7d60e075cd809f2190ffd36738a20fdeab9af50077aa6a5e9b01a7511a2464abe336a51ea317c2e8659c0fa8803fef71c2233e1bcec83ff1f91a29ff65d3f7af2eed09f91dad70069a455ebcd1fa1d1a9f9ee4e981ce36f78dcf9653d8f7c10fbea7e2da4fe2290c6ed767ae631c69d84f5fb1d16795bf3338c7d87a37f864bc9be26c224c8a3d011ef254e93cd3f804eea804b9e09ecb40d52f3a7f60ae6dde2fe4798047b603f488621f1a86f6a1ba797b96c159f3a75cfb374ea1f1756360d0e177fce773f1a7bd4d313fd568d4193c063f52b494ccdb961da7d50cfa68dbc392fd06d9c5a22a97202c3a3bd3458fdd334e1a5fc7f9c325f75f204612c6a3e666ed634453ed9f05c5e773853de0fdc27910ae79de8d3897382f705e678aef761bcad4082dd6b04fd69ee26d4a3c817339cd25d6d91af98167776d859b05fe5e08fb0f797c4ff53ca17f6b048c7c6c1dfc5b1c9ac6976a8c590dfe086d23becfe5b877fcb7ef31877634a867eaf366d49d37b01ffcfb6da03961aa4bf7b9b2cf8cb92da5ffdee752152f28f54bb37e5d693c7eea38fc72dc315fa813c8d1279fcd9b6a26bcabb321ab3fb9dec0e79338857671407cc06756f2dcc50914a3582bd4905adfd6f6eae5f0c8f8277735c89f73bde20bfee8c9a8383e0a196b13bdea9ecc97a3cb7cea267a869ea56f620e0ac33ff6f9d283dbe3ae48bb9daf636a5f9de3cc410e7617b3f6463d038fcf71541b2a0fde3dcb237caa7a067ed1f7bb1a18a484c7301b4fb99fd809788f94cd634b1a1462927ec1d76d1fc17fbc426cd44e6cb65545604f78bd055649e3e2699d97c49fe19e141ba3c6ee9f484f2205cf19e5f5ccf53956dc6dc553a9b19ed00cf4bfc4934b8a8166ab46dcc5bf6ffcef87e1d9b59d44d67abad458965bed68911556ed72cd1a351067d9f8aece91f1dfaac67f19d665140791eb9f18d73959a237d49e4cab5e67761ecafa156b3e4b6aeb2f75508bfd9e96cfacf7d0eeeba2a5eaa75536ecedc908d4b913e55b8d2b5aee803f1be0ca72859d68c3c6f36ace132f1b61f535f3ad09fd89aaf387d43bd72f5739fc847dffb46a2bf74baddd7e26ad7bc59f5836df63e8eaec00beb24bf71df23917032c9d37a35e61f46237166a86017cde5458bcbf2671b246ce6453ee263a97c37dbbc819fcc13e0617f42cd4d2ffe8cf61b33b87151eb0746bf271550d34656e32550b75aad9fa9b71eefd88a5e1bf57e08c6ffd33dba668f55043dfc02ad89710746679cba638693bf5ed9c74b6e37c06ef7eb083668ccb6b67804fb37d77d59cfe27d7ba84ccd9b7225e8d59d9b05e46dad87faadd295f87f56ed11b30475c91adcd6fd6af59320e37cbd7a82ba4b5c5feb8ed3b7dafa93404f7722c1271fad2eb9f5723e2dc90e7b09dccbe3eeb4daf7f2ba63de7cc9fcfd665eef5f5318df1f64c70c8208eaafb38d1ac755d63acfb9ebe399b5b600b65d2a01e377b9e1e696cecf5431fd3d4fb0a3127f7c8d5dd75b46d5367cee797182c3e22064ba2eb9ed754a8586ec8b5e75a153f779a178c271416e96029defeee3a46f87b7c046fb91efbf8a8fa5443e3d75f7cbff45e63c51a83390fb73887b781d2bc5131e541e59d541c15721c150c7be0bdfa8531d0f2789ff03a0866a8dfbae6b209c08553a81e4e67fbf9c767263fcf299ca2f3e38833c35e6bbce38aec88b3747df07fbcea33d0da8ee8f9c529dcb20f9a88915e9b393497541fcc75bc38f431138ffb4cff9bb189f637cfb1258e609563dcb3ddf1560dd9a59af82bddaa41df6ffdc936d28976299f3fa9156e52fdfc4fdd38a83eabd3e7c026fd1fb9178d5577f6d6196152dd3651e3e31a49b6565895482adc31e52de8decad78c94dd7c04f727f3ceeb1ee8137ccfff710f743676b836f0111a7d0ff42a93e011f28887e3b0bd89a589f3c35c58256a61d47bf622e41eb5cf2e9e297bae0ee34eb8d7fcbd5c6b712a700ee4fb56f74b593c475960c7c8f5eefacfeb6c8dfaf02856f8de5ae7c09e5037632d8c8cb946f079c93cafb2adef8139133bf6a9acf5905f644431b278285ae62b48d3417e40eca18d2d484faff38b0f31fb70ec77367d4ecb34754e2bd9aa7c7a9c4fa625f54d4e16a4edaae63c91de2c9bad11db0cde1738d4eef78a57613a1ce3426b03289f539d433c3fd1d5fc10f67256ba7eff3ed9d1070f6f176f662f67ff3fb8ee5a8d3dfaaff2ed54c58bf1d8d5f1627c44adf22778c36a43bc863b5d8712d56efba77aff45cf9be62438bec6b7e7a4f5fea6f9a7779343df2ba6f98d1e90df5d3e680ea337c58da47ad828062eb2b5feade214a51e36e64af42e9a1bc9f60ee85143fe515aa38bbe6f8edc2ff7dd64e9a96a743ea4fbde3a94419b4cbfc51458f154d7e529b7a5ae67b2d68b3ecb7f720d240da56b872f23f1c56f4b0ae00b8ebcd68d70b3d5f669e0b31c9073eeecc9d57997998f78ff4aeaf37a467ba9bac5597cc1820d6293413f486353edc565cc4df7fce7d3d7e732948d2914af8d4ff501d6a666dd0ba76e7e202f69c5e031d86c5faf71c8cce1977b6f9ad38ae3b3e8f7977fab788bffbd892f9a4b6a46791475ee735e88fabae86c4bcfc088286c0cf9e29a5729d8ee159e6d6e986fba5e9efba3bf608bf7e1a5c71697763dd55cf086e7d5eee3a5fcee3addf7288e33f93a1fa1b5befbafaf9363efd4e00c812dd63d687d9df99b3d6957c813e781ee61aed4b935e4272a12d1d7a3bbebd19e93c0be2cfb9a80e2cb2c24715eeade5ca559e00e720a0a5f70fa52cfbb1c67ea7d6c7fba64ce9c9b1cc45a8dd54690ae7cba95dfe549544ecf3a384a9b82f8cabfe9e7fa459862bb7014ffa1cae3f9d9178c9cfcd53d9b373704f3b599fb25f00979c3dca8a2a9c996ee23ea713b44e9e27d7139596113b475e33f88fca0750b10e3683f9c7a9a68ddb6c2a9d85f207dc95a76e790cc6a87f5bd62211fad9afd72ce116faef515b65cdb52f1c327c759c915a77a3c66ec59735da38c8ffc77c38eb86735421f38e552394765f2bd5c43eb84180be04e397ea8ce31636902f717b00d8fe0fa53f3dba29e59dfc553dae7c018522eb0264d7fcda75ddfc7438e4369d81c23fc0c9a47aaf1c31ea65ec4cf61328fd95cb8c46155f6634c18b0dcf7f419c2e76d960b60530fd417e08ee25984bf154b60fab22deadf45393bf039595d6ad64d2fa5df96cca3b7e073ac941c63651ef92db937a5ebba7641bcc85ed1685bee81572aca54ad7da6b8b55ece9c473dcccb7cad629338aba7e50efb716b8203709117383705fa3c345725c5cc0fcba638ae50e38ffb7b66f961aa755e87b593a47e55cf9caa9e7ae68547eef207e5fba5b7577d74ddfaccb753ee374a038555ae8943a19b07e2fc582bdbba41afa2aaeb0c34939acf81aee6b9db67e1269d554a1f8cece0b3da67aa5e62ad2857d3d94fcee3b1df911da6929ef7336c750fcb5e4ec16faa62bc1df79945373cdc96c6033a85db3d237a64839872edaa378a7a47249f4967e0e25297f6d9b3ebe3fa61e9a9fae9217c393fd72af72d149e7baefa96d4994defa2ece1da64bf662da0cd616b6e8376c5750e694706ceeabaa99833d954e318b5a44b17b9bacf5bd4d9967bf6d1c731b6e04b258cf9c972e553a5aab7c1663f2c1b3fa69d1f91473e6b031cc397f12bfac6389f489a4bc904f9c6171a17d7e03ce34b18eb1cf470be2f8b189ce74795bf8e12b1a67593a207fe12404b24e77e68f9c3d0bc02d981352bc171581bf87eca71fdd27c443c45b5528f7d20bb8176475a3a13e6966874ecc2ebd0e3b88db95c8fdd9a7e03cf549654e7de3e55c08db79aef9eff56645beb76cc34566cc6fc85e9f650532c369b5bd167b76f43754e9f8097a1fd984ca64bd76f4bc6722d18bb2cb54ea8c2934d972a974f6782aa211a674bf32a7ad48b43b6be02863aa914d66598ab124d6d306e2ad7fc643f572f3d1fa49801fb233eea061c632673a6897db8513df014db724c92d88739e5ce1fdb1a1a706d14733dc0445cb0b0d7f4ce52bc866d6892dfb3f5ea9de7dd68b214b585359ede97c461e62c5db1275eccb11798fbdbfb8cbafba0ef34c8b876628d9cc0c638f4d75f6503dde48dc7cfe5cdfbef1e77812b35df52e94cbceb58617b8a32c408ff72dd64eb827f6d25fdf75a2297c8bc1136631fb2ed9cf3f34f356b7e24e079b3d7ee179fa4b9b90e725f9c6381ae436242a397e60d7136db52e8b7d3596b3c4297d52f684c7ed67c9fc2f0492f2959bbc2d8ab5a59c83555d643d03147d14e34afc8d7b14b8da88fafcc6e9c4bc39f44f24ee5d92247e57cc88fa19a6ea0df89e258e46d4c70442689e8b9b87bced537cd1fb3f1c06f5994d00bff97b51327b513e411f3913217769abe82939fde51e5a3ee997fd955b137efd3ceb74e66d06efea1f200c079afc05b900676ad7ad83d2f9d55275d87b81eb36eefbe686dad54f76310afb1359a3eeb3aa461c196b08df1bb7d2f3cb2858b6c0b3c40a47a4abc7a12e5fe74a9f3c8e255802b70a0d59e4acfabdce0b2243cdd2ccece17eed97ea8671e7a53de62cc81b5e61ccff67e89eb0107ef2e98430e1c43b5819c867a26ea09ff04cf4c92147b70d3098bf03771b6760bd49ee5f88e759344bd8b8823c47c7cc3382077b588b96ea6ff2ec103315375b7df573c79acd7e35e42ae53945a8ba9d6357131f310afbc3ebbbccff2eda1d7b37c3c6bfbd584e715e30e12eb88dcc33bebfae73a3fc9e344b5cf2ede34effb7e727defb4f39508dbe9bf55c83b59fb3bf4ddfcc9c695ade63a392ee5a33a4fe2247553ccc1f6d73067d488f49f2fd7261f44c57a7725f7b5122652dc85d6f14de3bc919f9c09ea7d4868ad442ef04ac15d49582c87ea0fdbc512e78af10e8ed9ee395e960fa3e9d7b1ae0f9c6bdeae943fbb256ca7e2c6126ff0e54b0318a249cbfd6e673ad3a289c601f01ec5733c3f205617775a5fd2832d3d9e290f2c5becfdb9ddef7d697cbbf77f425320968711fb89a798f229e7385d73cf81f7514bc66727930bf328bf871bffa0f95c553d3d0597b75336fea8a0da5e51e51e6a429f94cff2d25ad993b18ab59f3a5f9572e3bf6fbfb7dcf0597c194f9f3dd613b51a7018e49afb32bbd35cdacfb3c8e5de4f473c30cf57ee3dfdf1daf2fd4ee1eff84cd7d8766bfbfae53e49f509bc6fdd46caaf8bb291535a26d6c21e7d5b05f10e9ec2cd640bde7cc573ffa27ad112ad07692e46a2d1fa01eb500a497e0f61931686e7a43bc17cf0e348f387ff663e942d9f3986a1314591eaeff6597f6efcb3f7cf29afccf1c3cf38462f8ce2a59a2e1d0fb1ff28828662ce3c5ed6793a6f51afd61a8413c4b1732f50da81cff2f8ae7348addf7383eade09f35df722b1dec2d2f5ef2a8df1e3b1a43e1ed28c26acbe03fbafb0122e723f9447991b8fb0abddbf7f174630e0dd49196b7e3a757690b5363b5be5cc9dc994eb851e61f90268c776d7893b3b981a3d9f78bdfd35d0c4499f0472ced0d4b1ced3a55adfac49d19dbb3bef01faab0a23bdd93e30ee46fd3b7394afc2baeee924347de7eafbbb7fce1cbb911ea5b93e0752f63da7a908f89cd0bd66d88feafabb097475894bc30cbbf71d6848849fd437a6c77a87da3cdfcfcaa6bdc677240f07e0250a350edb0fc4f19ab775c736363b736cd55ca0672753e00161ff4456e654eb883587b5f75e0d74395215eb47c4cf9416fbc8256eba059f073255b5ad7dd828ee0f6785d88ee6b15c75cf733507fef46a3d4db9179df538172fdc434efa14c562330137d41af17dca3533c599933636ceec00fb24db4e03ae7924ad4fb1b6bd9e4287be327c5da75a018fd9027befd9e1069c8b3fba7857f59ccd0dc6277571bea1fb5b9df96c4bfc188ad31fbd858fd771bebd9e56ada7355145e24333d9547631178e301ec1794e5aa5b9ef485e3b4fd8cf3dbfdd017b99f252c45faefe1b1f91cb38c1c7e9de3b64fe67d2f3f9a5f3fdca0e806399cfdc4a3eb601e7128abc61dc477a0a99cbaa32b867254fa7c994f9f20c60e27c9dd38ce04391efe33f438f38d96a5f6fc5bc194bc36f91ff090cffa38b07625507662c91c290abbcf81de7397f16c04cbf181c73182dd9c035b852750f0263d572b21f41dbad578e6798fbb2fec91ab4539117de1f72ad7cdebc6bcd09cec730164963f4ee759d9139c4e20b3444c161763481475acd98ef264ddbc0656d27ee654a299e52fa8bab84f971b22dfa2836abcd847f5bdbf8add61fcfc41d8f236322023be61e18e132b7595ed018e5db6931d83fd586ee152582343e65fac275b723d64629fd5300ed14e850da3e3008cc31757c018776e7cfc4ca2716af513ad9a32f4fe601734881eb3c7d5d315facde4b86dbfd76d3f91719ef8b32ebcf80ff479ff8ff863ef1c19dcfbc87f9f4380bcd7a5199644f9f0ce8141e0cc6c6fc51937cc9eb314ed63daf913dd19cd215f351170fa391e69c86de953df1d5785b87e993c5bc50ade0b978bfa4cabf13fb70e7dde33c2c756c76dc55c01dbafe1efa5d69b62ef179f69b6afab5c7bc8289875adc27d7e95ec3dd0139c6bfe994939fc9f3a8347d62689793f652a2ec717d400f90641d9e7a768026c63e405e233bde519e4f18a1ed9a61df63ae7a3c52fb80f79d402321c0753297fa38d3fa8efb6b2794cb1577e1a64ed9f61d9e693cbc82b52863e0bd153e21ba439d3ac9b767c2d6abfec96278cea4a8771bfefdcdf7e79a1f56e9130c6a13b998b20dcdb1ff0ac30f286f7770b927a5d59a1cc6fb9057ae8bd92fd14cf7c30a5da7dd09fe5b6087bbfe73cdc529dfdfc0e35ecbc7b37edee4f18e7dfcbbb00dd09326f84c3d869b08384833dca4fd7d8973d9881e4c53f7b1516e362b13ce83289e367312a685b6b3e0824c68af6d183394d09828dd96ce2ebc5433ac457354910feac4bb83be7f99a4147f99feabae85c7c733d79e0b1d4bd8b88e31e8dfaf27512b70a6f4effaa2dea5b333d051f4c566edf47e776737bd4bddaf2b7fc8bff5acb85a159f9b535f8e34ee5abbc8bb7be29849928f9badd4b9abf86caff58251274dbdfb9af1f281f178e2ffdfad173eef5063a0ef757b4c633060a392f5077c70f48da4b4f7806bf82caf7406c425422d89fc002799be3307a297043b1e0f33fc5c812bf646d7bf3449732fa37cd0ac6ca21defb7eed9ef3bff7c21bdf7c8adb436bfe8eb66b3303bba5d5c3877c74ee5460b6036f8bba76efc1754436a9977428a9df0aefcee17e88d938f255f98bf5c71d22a9d4aab96d4379fa26f1e39b278fcc23c90e0e53b405b25b5ce1c231fdfe2df6c7f37c50eb5903fd8f618755ea17514432384fd7e59efff66fb85a73581706f3b66db5dbe701c9b8a11f745ce572f01ddd729de8111af5ce6a3b6c684fb320b937ba9f2c0649fadf5e91cb3d6d34afef9bca836e08775d5f83dbbfeb9c01a420d877311d2402eab3b0bf87c188c393497f9cc2842995a7176e43c0ad5f5341e31e5fe1aa5e34af5b712bc31cca1c0dcb069e5602f46e89b3a5634f633f2a78bc9723761de06e314135edb49361e34f1ec457c7e0b1bcf8f5f0ef1cd5eb628e7abb053ea7d97f944f759ce69ef75fefacf509e7dd1c57cddda8c8fd320613dc86c34455f0ddb2de20fff3dd636eea9b35d83f87ae93e7e6abb4dcfa6b05691e1cd24e5d845f0b21dc69bcaffc97acdc87d94fb07b66d733e179f9281764794fabb009875f687a02b573a7daf296b867b7523ee2967ebf96c0f7f0a0bda4201fa8045698393f507387d128afbc78aab78291be66628ee18b322cbddc185ff10cb1ebf9dda029c5a1674aba13fbfdc3ec2f6505e7056704ebe7ec69a22ed278aeba57538721f781abce0b909a313d9fe53f0000e3461553def079fb329f0a49b7a966a2d00e2027c7c4fdaf7ffd733ff2f32023334904b4fd9cf1ee6ab14e7f823fe8e3eb295cb393b09edc3adc633ae1ec6d0ace6bef7f44ec7f98acb56ed91417e8a7a63508b8bb23bd445c0e170757d9d47e79a77fd825c749afdf57ed06ba1fb9db4fe3b73674439ea7ae35185583ce6fe5d8d3b0cf5b3f57debffd1fd5e972ede6ffddffcee13fb31ca1f91fbfdc3b868de4de21ede45181768157cff3bf013f3efa00d14e513f439fce17e47e46289a7549f311c37fe794c377ddfa679007759940197f3a7fb293deb2dd68bfe5dacb99354dc7eb52edb357a77b88e56a0f6e85533aef5429fef5a9bc99bcfb66e28bd51a49fefc7597f46ef097d754bfb09b93743fd2dd03c8a7767c62610f7755ab74bb7e78d0b72cf414fa900a73134c7545ecb1b85bb7ffa7bd3351cecc952ae3b7f3e841edb0a585e3ef334b737e7f31203f95bf5ae47d8eb05f3d32c87dc9499e70cf61bf96b7ceea30f89eb3247f699bd20070e99f50d657a0c88f36e12d9bfacafbd1d63ce2da5a7886b968571c73517e60a93e9059f113fafaad7153c063d078c353e21865f9a647323ab614e75714a384f4b7d28ae7593b7f5c4ffd73e7bd44606f387e4610b2ceb2a11de60dfabf9e09c87573b02d8f3b7bad1bd93c489baf3a7fd7bd65a8f3abab04685c27ed2df073c9734df573ad6d07e3840cbca0a5cbd3ed43baf9c09701c9f9dafa3c626df76f133eab276a0b97c81af4cf5fa260e7485edfef25e4b70e4338e7ff9c2751e59ebf958da1307ba14b51cecbb56f75d7ec23ed25a171f85e3f7f7db08cd61895cd9600eda08796f4760ede01deebaef73fc403c5789fe0ed68dd1cdbf7a876c0c4d02afe73b4977f0ad22d624e07babfac4e09e0eebf0227f3dbb8aef25e14342dbbfe358167ae4adee75cbff3181c9533cc9ca9ea5cc89939ab7762550f9f0639f9f6dd7f39b7f5fb8aec37e40ed406b4ed5f03db6c906ce371ff95a0ffb719978ce958dced7f7da0ee277bc2eeb6cacdf9570eb8781bd665d095ae3d45769e8f383e6afa1778e296e4c90f789b2f123afed33f7bc7afab7dd675eaaf1c1d29ec0573a73cfa1103b4f3f17ede9d1079e2b90c0bfe8b37307cc62946cef74bf15f694d22b556bb6edcfd8023d5edb92b14af1458fc51bce1efd3e49ef6bd05973c4338f92cb359767a2c76f38075b1fdfc7782cad33eaf3478dabc09947ef750f7eaa48e3e906cf90f8adf6f954dd478df71d9f53b3aa69f05b5a1ffcdf0a6b2df77d5eefbb00fe52f64b9fbbaba6e2f5ccb508cc850d6daaf4b31b63ee49830607bf776d045cb3410d22cab7ef7dcd50bd875d36187b3d9e6d0cff293ba3078274c0d2c05cc2df8d8fe0edffc4183c197cbffe5a9f31e395505b256dff2df23cc9f2e5009b3e429fe592f5c1a31c788cc6420c1dc53f3e75cd0edc54d978ce76e13d862f964c50277bc679a6fc7fc373561efae5fb67a79e085a2f5c2bc69932d17fe75ac2d59826c52beaaefa5d9209dbb146f705c2462dd36ffd10cce79dde477a3d18da1eac545e7670eeb5bef63d0937a67b4d27a8e7ebf59bfc73d27eaae235312761c27e6ebe76cb2ddf373b067c1df062a81e38ba46a835d4a9ee443e84f64d35f7c5a38567ae37beded38c5d884aae1f45b1deef77a51160dc094b931d9dabb39af75fc99cd2c965fc8475b3d29cf9ebfbde175f7c7996d52cc299ba8fb066151e8cebfe86e7880cfb29d0fba97cc1da007fb0d4da01d8037acfe4e809d0f65c3f53dd680d22c26a737f4094448fc8b7d133a7d83f97b2b91a17ac510379d3887a84d4b856bd1f78dff390906f1125fe03c714a7de567b7f3dbbd81ed2b9e30cce03e9b94b97f517ed7aafc75cf706ddf8a11453ddeb7882f1fd9aeb1e7856f4eb700f6ac45831ce8578bded61ed6a8e1dd08b8dfad6d5f3db137d6e2dad11bf9b445f2cf90d2fe3ebf35a73d16a2cd644da29b8a7d13b8579f17b1dede0cb3dc50b701df01547afbd9d260d85007399ad233c1ff796cf06bc16b067bbe4ca1ea83931afafd9ef1dee63d0f31cd8d8b77c96689bad3e670e29cf0a5fcc8f9bb8f163d99f8573cdf5a73e57f33019de33517135f12fc4ecbb555c63e6fe1c9c7da8f3ddc6a7e035f0c01f9fd89ce3e7fe41097d58c6a44709f28d52aff162d368bba7d74fce714296b26daf4715e225eb07b0f95e60613fc93bf80c2be05c95add6b8235ed7ca6e9a886938c679d35c6389ff34f4f54a29265739aa9ee3d05b41f34ad627edc36663e09afdeaffcddd9f3529aa7dd1a3e857a2d18cf27123a049ca326916206f0846596297a9992a9ffe066b36a099d5fcfee7dc734fdc871db5ab549ad5cd6ecc31a6fc6caaa7a0d4fc5b74b706b447ae7f1a3bb6ef7e4dbef99a38293ee8d911f7639713ccb3f1799c9c697c141f87ca5bc01925eae71be96d75e3e85c838d383efa4042439ec318fb48a5bcf273b16d9143c20884e915fc8d540c29ef8f674ac83afcb244dcd7e8de7664f216dcf984d5a53b97be8d0171fe88bfa4e277ee74b11626ebba6a879effaaae7f95ace9d7eb278ace6f8fbe3d6079916b3373ed6593237739e8a9f69fe7bb331ace26c939af6e7f7731f2833fe37cebcfe039cfeb0f30b9cf73d45aca358fb897bf8fd1784f9f7b7d87843fc33100dba7ae41d7f2dd67da4331d4c5d539da8e5f6f4fd17c021768783bdb42ad11a1f61bdb33e52fc299ca67471d500e019e0f39717cb68155df06d2b3dddbeb8635f43e689c85f3f3315fe2f46d36f8993fe1de864e9c1253e859fb4dae86b8f4bf39d75fb403ae95abffb80f3b9f2379eafc47f2f9f3098f09e581d89f63bf8330272ebdbbbf3bda3856c3a5f41fb5322fb4265f3a7bf2d9f9159cc335579d6d066d10fbc1bfd01ce209a4f507be3dfb12f25a902f033ef74be51ca0a6423e78377ea2eb79f4b582f2473d9bbba275680c292e38c7b85745421c541cd772fc5222a75698b9cfb8fee7b8ae3fd997d44a1aa78673129d9fac306a52e9d92609eef14377be0da9efb29bd7ba1f67dff99f1ca7af882fa88b9568ef410c79f739f48324507f0e7dead5ea70a9d0933e0de959948d8331eefb935bd66093b733ef9f99f99bb5dd9dd55d0ea4b7defb3990fe3ce6da0fd2dc7ebd8b7b8c8afe7e2dc806c796d9f911c8d709fde04d97e3e5b5ca7156513f9bddf99174befa9edfe5cc7e4fb63ef5df2152fd3023b66dc5647d9f7348b91f07cf2aa1b5f381e79de8306b425f11be11d73fe091d5fd8fbc46b270d8e5c17a7ba81187ceff533ed713e9b0890dea797671147068ab3a82c297ae69ddf17d6e9c83d7417f8c38f198efd5a45a6da7db801a3e545fd9e77c0610d6a8245ddea61a22b619dfa31ee6e4e3195b0fd7fa076176cbd825bd0bcc071eaf5c5f81f133fe14c7dce5cf7a710cdbbf5e3e4ddcfb0067ece73c043b7df8759d4bedc1976fe8ef7cff04fc4458b757c69483dd26ae986f6d413f6fddf92b387f01f7f3f47cfb6e7d730f71553febdfad6fb6d32a46cdf9dfe1b9b7c8cdceb5bf03e71b2747bbaf7b2d1ba501d3f77f1fe3cb6957ffe198f215ce69a8b171fd0b6dc40af1a3bc8fe45dcef4ca7c85cdfa0f670fac778ae53adf658478e033d6a3c0fff7c9c6e0f7fdf8e11962d63cff9a2bfade8714bd77bc545047b4e76972437b112eb32dc586da92cee9e807e19bc3bca9b0cf461c784cd3b587b889a3d0308fd56c138ed1a80e9e9e88db6bc3faf5e941673edcb8a29a5cdf061197c267776d97ebb77e86f597c4bdb69f2f656805a9ee20effc2d9efe64beddaaddb388cd071b7ce5b8ea2f7bf495f72871b27d3fbe1807e5f779e1cef7788fc677399321e506959d065fcafbe24b91c6629c73dead9c90264972257f80738fc4dd87f6fd3e87acf6ee8de70e7258c471fc81ef403cb2ee52a33e95d3279f233bbef7e7d77b3bb72effb77654ad19753164e3b24df089533e130f397dc23c287f62a67823691da63afa37fa474ccf2207785e889ce61631f9bf1e73c7bfff6ece7db625e706ff523fc8142f11f86836f14e258a2756f5d3c7cf57fadc8f0987242f3ed6edd0cf887bf7bbfad8538af636f64dcec1928f752bc94f319f397e2c63efbe06c07ef6c10cfea50ed1abc777cf9a5c495f4e1afa20e0dc22ee0dc8cb8eefe2ad4670ed61cefdcab5fe9063235db4df61001eeb0eb0a7eeea13ea7c7c425db26445cf83fe25e5254bd54fa6ce2a6d11f57d11caf99fd7f8f947417625db520ff7e31ab35793854ef99d926b6d15e68ceaf799c6b99c3df2f38b654df9546bc03c1daadea7fc1bc2058662a233ae0bec70beef9d4dd3403a830878b01aaaab515c729f8bd39dfb3951b500b06131efb55b8afca5a5e61d7ccee5a8de18c877da3c2faa3f0238220657b6c98debf6fa9cac30f62f5d6f981a3fa79f7f94d2ef710ebbf612f57a65837d1832515c8bf0eecf84494ee8dd2aa3eb5ba5defcd0c41ea6c4517579d07bf638cef663ec394c9c9b40ae74d4508a2bdbfdde9ea7a3ce7731aa7b9fa4414c6d52035f28e57cd2f3fc61cdc4b4e62bac2bc83830a94ec17e47af8620b223f79561fe85cedb703eb5b8870cc6e7f8c6f9bcfe7aeecdf53c252c977c577c81ca27dfbe3d726ccbccbf32e76d86f993466c67acd7e41842bbf74356bdb1bb7b871d69c089863963553f1ef8ffbcce62d587d8f511b6fed1ddbbffa41a52b88a09f340396f4bbfdf178f6310f2189419e73f3e0bc645508c2ddf0bd00fa59c6d3c4f8fe3bbbab786f6210ba7e4dfcc915f997012827b2a92fb1c82515fd83f75105b11cb6b2f26803893d7c7dae05e4918c327c224f7720990db8b2d3a3f9e4a49badadcc7f1f5dae9b6ebd3042cd21b5d5ba6e70bf532e37e350bf9d7fbaaba25f43257c7dfdff7d4cee327e9f1c17e2faf7fadef802e0c63090847251af7db58bef561ab897812a49b9029dc2e6162d0861ddfbeae1be5071fa9a72c4a8f8370cc3d1b6f6c13a4ffb80ecef387f860fe0feba08de3202f50ff7e1da43f06dca30bf3f1c9fbe6befeda8f6f06d4b314c5399d15bffb1de4f336a439e368c4a719d3d9c8d81f7a8753b79699b365641492f9e9695cae7347dee1a30adb737f77ad39e1048c9f37f69de95c8aad94ce8444e19b8411ec3dc545176bb58631851d20275d102bde6017743d50231f7bbf54cf41d26901570de2feb54bbf5ee689b862ff6029851566166b5aaa33103433fafc50a6d03887710d34b709f6fc9b81408c1371822bbe6dd5af7a212d9827a539a17465babe40b59f9b35f1b7cfa89f0579c180272673c73866d700393cfad743de5e27c8b6749d73b0579cf059204511e01a533a114e42981ed78775e446e8abc4c4338afda5902bf73f09abca31a976b8fb5d1977bd97f3d8bab3a371aa5dfbef16342ec5ef57ecf974a996fdfd75ce06e68d856f57fcfcb1740da5d5adb8a3945d7725ac05a7d49eb1f694d318d9a95463ed0631e905264fc43f5551bcaf5daf3ef32843df7298417c172610678553d631780b3615e259c426507c7289f58278f9301688451e0df03ded78ea5f980705fa7fda6b8c810317b42443ecfb0d6be2c070a0cf087338c029902c3aaeb304fae519c7a17a9026505f6cffdc5aa1711da38f85bdf916f2dfba37e404b0177b9fe629a49ef5c24ea8e67b14c87f2d24eef1147bee1cd2770b90fb5fcc7d1bf23b51827b1e6c2b730745775ad16877d1e74f109f9268808758d5de84f4f042e81df5021992ee60b3a4be8bd83a13af17f87b232bd0175a85760db8a52a85f70d6b7748bfcb25f6f2d7c427af7a416c1c8bb550fc9295151821fc466bcf21d46ac4bc411a2b0c82501c3c4d7e08a36e6e0223d0fff48c61ba1e97644f809fd0ceb1374ccd753a747338cb866a5ff639b213b50fad4a3e9b6dacba20ee2c3c5b10038a3d11d5807a4552f8530f90bfafd2bc09f5c4ab7e8f89aadbc0f3398e417170d9ddc7ce9dc7eb2778fd244b8977770bfc2582fa008c0bfafac07f15ca1aebeabc2fcec1af1fccc1857564b546819fc47fb84ee593a678b76f9f3f399766e65837d3dfe7f06ffbd0aeec00e2923d9ea5c7ee1ca77efd33f6449c150fbed28dda1f5fa88e85f6c18a51bf30b51d9371bbf2009c4cf059ce35203357bf17d293256292659c0f42ea9d81def105f61c52fdc3a0da7b8cb67ce9608e265ddb0ffa8e3172b5508fd42d7cc80700b727739f137ee57b6ed674387dd48f04ccae380537aac5337e0de3f4f307dd73097b635a38c2f4b93fd5e9cdadbaf73b7d16e9708e44668e1803f102bd55c7f18a7145bae623af50213dbd5b17a40b5bbd2afe5a633826ed6f65e7e13d8629e92e2aae9fe3b8d811dee93f937d9ea6f30b489b1ab50a5e5a1f258cb7e33ca2586ded9226752295cd1f12be54c6b9c6bdd40ef4af0a33a45e50cce1c01997931679741e74fdc64a0ffa93af976e67c4c70ebde8de1b6242c2dcdc629e568db9b7acbd03ad1b19ff4778905931c17933bc867e2b94e66f3bcee284fa1b76e5f43e273bae012f4dbe47fef3c4190849bdf3d63b7113f3da4ef50fc4d71e83fd11633cf114f0efddf39234b63277bcda635f71538dbb6b3037f96bb5c17aac91f3b31526f383bd077b8a23fd6bff1eed38a8982213e3155ea39d43be4756c5775cfad1e817d81b87f8fabc404a333013d21e56bd22e86b42afa95a33c0937487b7c842fe7bd9fa98a6351635ddd71d76bc11555fff63a6f6a8c958fab054bc5c3ad76d12b44395f37ce7d396f6f68b4fdbddaf1a624d2084fb39ccfb3c9b08bb72ae97c0b890d63df34dcc5cc52b688793e3f89eef611ba835978af797beef4b36553d9fdfcfb7d811e6c772c2b4a6db7169630ed238da25e523d38afa268ec1fe19b9bbe567b0f7f1ffc3764d2b3c490e5ccf76907943cac1562ab6072c34f222bb2970e1a2ff203c81bc34a1e39e898752c63f0710335585da6b993b063c0b9c431d2ee84753d6c0a35669bec2ff4550cbe5da53dc2437c80b2a9dabbb3842f106aa79bb1881e64e97c4196c12cefaf12c2e49cbf45564c451a29f4acc212784e384bed041c7a5455a68884b4ba9efe1875e922dcdac1b7cdf473e5377c6bf4b2ac3d7301fa8d68e6fde73e66e2f8c79988c9c4056a76013eed9c749a86fa5a2fc6fb6b259fbd0f489c7c2547da2229025c5ac33dfb8da7f1b0b9ff95af48fbf8dc50be7d7477bc2722f34e20517379aa3728ff975d6253cbd53fe3732adf64c073e6638333f2be7bbcf548dd8b93f0bac69b73713e5938b09f5a3e9a6441c19d92dd277949c773fbf61dd4250ce26527d13ba153615f1570e14a751e6d909fada737bcdb5ac90f25f5965fb94ef3717c48d3ff5199f7abae7ad695c7be578acc309fb3fa1fd6f32cfa5512247bdab38d1404f9cf2299e7ea7c7abafaf85e433aff50903d2b955bea1761d96ccf9e6a9d871a979178ceb8f41a3ea57149f625d0af30930f70b5ff5b6abb5f6b662aed9ed135ca37a2dc723f0b3d2f08c758459d178c00da1ffa713e756dc04a497f0bab4a907ecfceea3360bc7f38d04fe8d3819c7934a676d6ae5b73befec67a65bbbdc631eec36225fef50504e0b9f7f3ed992ae04e1eb685dd88bdac7f87adb5f1f5920abd96a32b2f1bd8665b73e9ffff85ea8b9cf6bcaf488df1abeafb9974057fda5cf413a626e915257f1c00c7b04df83dd4fe420a90ec186fa5846dd5c6721d7ca72e2064bc56d09b5cb60e9f89712d7779c6d651b8b2472a0d66aa179ca3687c67accbe8c1c35ddb573be7611f3b50f25e83f2e7ccd334897826a657edcc6df8a97c5cef76b9a0b738563d471d36f819b1ef33dc481516adedb0a30a7ae600cc919fbdec36cd6ac89cb723f97c8bd990ef15caa1bc6a09b6be61e2ba7f8ffb2bad2b599130ee6c989a31f03e6cd8bb7b4ff35e2060a4d17efb1bdd03d20ee76b4e097fa2d70b3123778bafec281abf82a8103f7522047c00c73ac85f42ee8074f4bd382ef19c4db377a4fe8d95c889123e39ce1380cda6bc4d27d9666a5f09a715c01d62f1d8d0ba746fff6b9a787267cac7f21e6bbc7a76c267be64b52fb7964cda5370828e789dc5261f29fcaff847dbd36ed72697d9752f98709e2948511d4256bf506d175a67c4cddd3824dfde81f852fb7336afbf4ce57290e81f1f3f3f1bb627c768957a0f7dd5bd0945fae9bdf467dbe08faee87d2e27df86e118db03ec71c04b3d6a75b82364bbf57f71cecd754b77d2d24f102d319cd761a39250fe8971c9b4e8319fbd2e1ac72997f0fedec9c7b351fec76e692fd104b6563d5b936217b039aa3beeafd54b98f8cef893659e59507ca6f81be0fc482f4353815b73be01e4d17799483bb7ec9a5f67c257b1e1b5bcced5c89fbce24df00b93c0bd2e0e3dfdc887b00fc890e378998e3b826ff04b11d8499dc5ec99ec5e9f0167431f514e2e144f1cfcd556f2a688bf13d33ef463500a138afdb33a8a2fea0a437deee5c520f08cd652531b7813c8c620c58834ac55a309fc00d1e725d1efca9587327ca2ec6c2296b6f70c70b97ba68ffab7165acf92c9ee39a62de02e4f009d22b6173e2a54b3c03614c58c9987a2d3575e626810c7fe5268d05e93f3a585349deb176634ba8b34a31415e09d31b4bb6bbc0d9037c73ee1ad65c18c0da0e438a3522e0275b80cd847b24c0b1334dee6a00dbd34b5703d043c79d14cef385e29f5ce5d1122bc67330ac1d7d4eb9bf4c44ed1e8dd09689da3ba05db57daee704a47d10125f409c9e71fe7c7d2eef7c1838671a9f6aa4af3ed695bacf5d51c58c65d2793d3592ee332b94decac88af6b9ed37adbf549f169a3f0cb6e14dde9d337a4067746fbeafc9183985dbfb2595e74fe17ea9e390de07e486b4a1267bb9a250e6efc8e7ff5a8d99c790b534940f9279637f4fe7c9c89869f2bb75e396f5b3c6daa1993a7741c7cff57b3d6489166c2c8131bc96fffaee3b95166cd6349eebce263e3c57341afbd384f8731af9ebba0ed264aec627cec7858d3c6d8d18cfa72ef1d00ccb2ff3e72afc49eb7754d8ab4beba4d0bc87eb6d2ddf7926eecef7c0d003e4b5b2abf4f9eeb74b89bf55ba0ff82c06f936b541eb4836e5f07e1d800d5fd19a912793fa9212c8dbeee653fe4cf52c4592798e0fc1af33d90f3133097faaf2ae5ab0bb8ebbdf9e074232d74ffbdbdd2aa6fabdfef4f0d921d828ce5bc0c7ed59b77400fa0e49805c44b7554d3884ae2711b88d17d4ff82f7df361563527fea80691669610c094bf7a1b4bd41cb0ede43b7de3b4ec391ec70c621bdf354ec46cc41853ef007d95f9f63b60a785ed3a4069d22775c4c543ed9454e845ff309ea6134dbba7db730f96f807cb1b3790a631335eb1ac7f2c3a77e3d98874bb0eff0c8dd789d4d0118ef696cd36f4fc31c7077af7c4f6340781cd044c9d6e325d7e2b5cf1cb9a95e0cd288fb8f72faa76077e25a9f3002e2ffd0897b7e09ebe516ec72c5d11b68ae9522762489159fbd08b2a3bd729e073e689b398184deba857924bf07d7ead68ada1845d5ff1203e366158f808f5d69e8e39e28c659b9d40fffe3b3c3b10b2b4ad5fa78268cd5b2c9711dd437e2b858eea1f727d006508fe67cbaeb553baa4beae78271f4e7ba376653e09842bdb11439afe4c984cf442d0cd6bfb8f39be2f44cf8fe7cb50989f75e47ff7a86dcddc44b3948609d783ef3b26f4f05e6c94be799702362e9c29e88d31fcc515632d6e73cc4bcbc5bd6cacf57732e26eadd6cb9f129cecf5e387ed53f583730d58fa0291b34c15e28eea165ed4dcb29f871a1f6b3f1593b8375244c8135f3342edfe19c3b5df1bcbb2a4d79c5f7eced097b97183f29f60f55bd714a31eb88beb30ff4ff1077707a27bef3628af55e331cfba8d719c7e4af9d8fa4a714a31f3dd3c25bb05b5feff31f23b487fa77f6106b6167b687f1833d0cb583817f7fad7efdc6fe99de784e762675ae058dd9bdfd9bcd20367c0e62c64b3dc4e58ed1c5e57e136cd6c47792cd3377fcdd7b07f23a08f6b97767e312f78b4d5a6aff6693a4c6313cfb3d05e53de305d9a158b0b6073c0fc682dc7f10355bca1166ed9c277fb12bfe9ef655bf27bd3dff2a151346c0b3cef605b467018ba234b3594718ef9ff5ce563b011c9f9e7f92befaef6c43c7a1ee7ca24d0d7dc649b2ddcc43d24c219ddb09c63769455a853ae1a0401bc7fde5db9d4d86f33c09ee6d4845f61272481bdae71877395ecf1e1e19ff5c3570e6558e581486fceb791c1bf9997ac9d374bd27ae73ee4f35155e7caace92c6621e1cd89f6bac216ab8c61703b625cd9ab4e934c255117ec94fd9f6bd22df96875a78ed381c42d325edd786b97e635f031f313904cd42ebf274903b4ed26b83f6e1157defa67ac0e7e1fd5e71dd78a8a5320ca73ef9d699bf81f83274c335c51ae04ba0af9309cc4f825f12c610d3261be8710ba53e81b80c6359f5e7d95a3a9ebd1ab7bf697d75f1116c832e070b382881fcfb4db0af487be8b54c827ebce145b185ebee68f9da82e268d0a8c0b188cdc56ffce9eaf62fbe3270c78facc8712e95bc3f1322eddb5868407e72d2eef55ff76b0cebb2fecaf1ee6cfe42bae1c359e7296e75ca5769e20c9ccbe21098a81bc3e79af8bfe42ff7f75fcf279e05497e52672d71b9b6e705fac4aa96faff905fbb34a86741ff4cc6c0355a689ec69c3626637fd6e4b7cbd8a5fedb77fa5e2a4907ea99fa22510b7ebbc75c6022a87f4b033f68b1610e3ee5bb469aebca7bff53f99adffb9f89d20e2ccdfc2baf8859eaaa0735bddae9e4ac344c42c79da37ff544dcf15daca5efca8634c270fc27c33f9e517ebc467f8beaaee8833047e119b93f35d6028f9a7280fef06215236e21498c02b1369199bcb1fed50e3437c3db683c9f9c294ebc610ec5ca214f18609ddd8e41a7fd57601e5a5f46d56dd3af7bdf954a0737f17a1adc593415edbb861df6570ec9a6c5d109f9ae844676679e3156e10dfb5745ae07c8878a79de14d7fa2fece3d17ebc63cdd795c8df20a31fe47789220930afaa8f0be469909ad3cb6f4a5a2b5e411a45e956769cdea4c946dcbdce492a5e6a5f0ff6d467515f25f3bfc37722c5c7e31d0af9659c62e05bf7a98f40d05a2d4ce2c71dd13818ac7b48be48ff4f757611ff664e3620a932f26774f25128cefd2c499339cbe91c251ecdfe9f5e1bd385d36fafd95da3a789f08fd7fce85fd31f9fed87f7255db813dd2332a95f68fbcd9f5b1587547bcecb5e787d1957ea4b9d3d8e33d7a7be19d308b0c011e9b3456945d7d9f4e6f6b5ab651266d2256dbf5d6f0fd8f15450de19d68f0eb9d4950c2774fe579b44f946714ae7ff19395a503f51a23ed2bd76ec95ebe053017570c8cf79d8af640759827638b7049ed1aa170d6a3411deeb8db812d1b611f78e47757118bf0ec355a5147b6c0d3a07e8b7bdcfb482ce2c53e073888f60af7409214f98e2ded29fd9bfad64491c13948b9fd2f7226348f541439d77f1d69553a55dd1da9763582fc0b63bde4010365d53f8c55050be13355f63e4186cffdef920ee2cbaf5f2e88db8c7d6280e51f8bb7072554f07bbb31d86b7fbf70f1dee0bf5c4be526b35d449b3edf0bb7c3dd60470bf1a94e73feb3cce597860ffdeb81feb10358950178ec6dc08366ccb74d44b0bbbdebf4ac773d12bb8a69cabf558d655509a47e0958dd77e4898d0bdeaa99d06523710e7453d62f03edae00e23e4731fcf450b34d745ec891bc5396af3e556e1960feb53bc5484d3495cad24be44b33a74bc2bedf397ba80b3708a79a239f2924f96a4d32e9326ec71e68454636aac80f6743fff21b323d46012314c7bdce61d3e634be7fd6bb9855a4362e7e11de60172e9b6b43d3a3f3096faafa1b30d71d5b760ef75fc42bcfed7d8b7a687e41b0ad6efebe6713e419f3956f799e23900fe0572e755f53098a76afcf450833db230bd2b7c5f2ffe8fce1cdb1b7f73e638413a22bc31affb08d6fd24882b937b4ab5b2c72395f83ef7e93ed4f0a83706783ced65ed7d2e995f239912970be365ba330c72a138164bcca9aeea755065ed9a4eaca526e00cceaa31f4f255569c597f3c83933f8fc785753ff6f43edb33f189c46680fb66bb835a8d7bfee65de0ef8ddbdce15c8de3b8b79ebb7dcce386fb473abdf34cd44bc4921775282bc5a179b684b346dbe3370fe7e42be9d9605f06616c67fd31c81f34eb3b3bb4b595e6e6ff6487aa8873f6ed18ed7e3621e1f0602ce77026b7f193c2860f96cc8525ba31d35c3b9a42ff54a8a3ed3619fbfebf9fb30fb6b0d89166c4f948df41bc57cf7fa59867f4843c1edea33d04dc7f706773606ddecfebd2667f8baf85d779b4055355cf671b4b7376fa6a53d30bc59262b5fd0fec9f993cfceeac913d60dd3e433fabfb64de8b9c6e9f20675ebda03dd80aea839515ae9352aba0a61e12afa1ea7d8b7eb3a64057dabcb3898fb8d658699ee15eb3be5b6756d8bdcb54a457b4c3c321c592ffe39abbfbbb9856d89bb31ee33ae4ebfe7d1d32bff1e33a547872f8ce02e3e1cecf223ee9ffdd2f7bc42f1e0f8cb3e4ef80764ec5f9d07c8db6f62947cee428a33ae816e6ca588f97a46b6c1e83dfac47f58ccb18ef630cc7a5dd7b2ee00e3f3357eaefd666f7dedfed212b4a35c2133d054db5be5f4b5ffd9d87fd34fd325e6a2f3c3ebfaaa7daab1d7146d1f7b6d77f7afeacdb5bd5847a24cedac33e605f10d6dcc924ad89f9e40af6dbb9064a9fcc75ad521be2d9bd1d8b86e28605f6fd39bd7113f3fbfdd3f531179ae87cd72c19d3fee9dbd69e1ff6bfc709bb6e7ed9cec7ca9e4d15ce19ea259fd8db7489f5ff6ead8d5c688e2625f827957c1eb26d62cdf2f21d6339f47d2b2b89a99774cb3c8c9129bee32bedf9a1d7cfb03d2320c7e156d263ff5d20df7eb80fc702b92225e393b6a42509bd836decc09c9cc95b38214efcdaa8802bcb96b8378bcd6f304a7ff46ff85cb9222f07f651512fda764ff634d79e9ba2ab3570ffe46a72ed73d8a2cdf1f560139e7e732629aec908fa5d9e9077d226bc7964e6877fb5a930962abf7e413d51afdaf13ec0f321ffce07627f2e6cf21bf8a923e21698f9eee2db75b88ad13f4fb7e3d50673495c2b3c7f8955ff709e4eb19e8967c68f4b3c561ce25bffe1fcec703484251821ae4e2cfee5fdc394b846cb8e476877e63c884f718ffe1fd653bd23cf39d67d9374f08ef62b2c4de6faba11076db1a79c897e7ed1b02e5b634d9ff27ef196b9ea0af993fac7f08c75c512b991122de88d61f2069c1c15f22d8ee0d934d78ea9bf28cb69cfbe2ed578aaba2bd4ec4c6b5cc4a4ed9738a8e9fa81cf68c94c74bc3135724fa6c72163faa23368aea643aa459f081b1f37d457f7dd38688acf03f2679e4edc2da2462e550db437171bba46674784593d8ee58c35579b0af89ed36122c7e727a50b9e8957f4931ad2205e602dae607d61d62073fb7c13b0aeaa3df1dacd265b47f97a3027de7c52614fad43fe68df2f1fe6da82cebb7de8b85e09fb7a429803ee05481c852d5631f9e4b7b9894f81f9e43cfb0fd7aa780b4c9fd6ed9a34e84ace376cafb81edc55edddd8f787d864be8c892fafeb45e8f212f85be95a69c6f921afe4f5a27cadd912f0769320bd92869ea8f4be36ba3b5db98481ace4bd2e7d720a8cb554fb30a19abdbee75e64e61bd651dfc0bf3ef431beff66ac1ae4580a2ba8f5dbbef4b8e727ce92f8ee5c57fbff0a6bd9c4f83311ffc3b5eff1b0ff989f7ba35e3a99d698b7f587c19e7431be9d13eaf517ab94eccaf66909bd456f32b3b07e238673eabfe498f75cff7f3bcff06ff9b5a4e388429b5bfd25a7d0e959ab35f3d6f76fba7c4d17af938ff2f077c06064c7f177f15e2f1f47e3aaea7631e63c23c7fdee19af8f790ffcadd5f357a74bc7031bab3966a0ffbc56f7b51b2b89bd3de242c212cea4e9aaf68c97072d6409df0b9137693a9b083b32b93f412f48ffd2747d389703eef753ebb2015e9570ea92e67abdb2916b25db52ffdd06f796960366df9b3197d34fd2034caa0df2a018c73170d5813ed0927a5460ce3e0383b0d835f863c4078079bd6f7e1b17709e4fa8e7fe45831e8a99a6705e4ee1402f61e8604e3fce6dd5bf6e5736bc4368816fe1bc07c0a9f509dabfe18178d1a9061503dfff16df1d7c4cf9a3bd8fe20788c0ff9c21be27bbff2e6017daef0aed59d9ae5c3a3d9f5418a839fced6f7287afefa9eb03873fe0e60c1a9711ec570d7459a403d75fb6f793ce30b4b7e36a32baeb7b0812f98efd3ed3a2f60e54cbe675149d88ef0d7900c520d8fd1cdee9f9b76bb13dab268955ca64c779ba867aa1467bd2c3e5dc3ef7d8816fd3fac4c0ff204e6833f7a4a356d6cf1ae6b872d0dd3d2b1cf79ded4d8fa42774aab40463a65e6d67a2abf75d6a5e1793eda05e4d189e6a7bf8929b58ed4803177d3f8aab985751ffc01810f9abaac9fdb90539e7a523bad81b7d8834deee690e651f0b6d1e4937daab183377423b28d2e5f8ccda9c38ae56645cde19db05fea25dd41e691408f62101c7e1a6d32d68bd26e229855c74d0dd6b88b825ef8a39f57889397f85fd8ac5b8a8bdf30bf0eb4f43b5d605f1410d38e7f6ffffe3385dfc226d2f855d780a93f53bc5de49aaf003c077a095ede7c3d68fc67cee25472ea094b0e68aef12301e4bed997ad6789f57ed3e577d3c89e2e3289df61c60cdf464b9ab26c865b06fcfc7f68c59c0b9382b6a7116acf3db7b2ea342cedfe4829fbbf3d6fff9e6bb655aa9bd035c4895156aa4df51532fe354507fad29104b2a523893128d78c62aaca9948ef7415c9bddbb61dda449c633c37ffcfe53afb6f4a17c76e04076559cbc3feed9cfc0e7e03c4b46cfa3ea5f612085f4d3e398716e1a6b5b634d2ae17a045f2b1335ce8fc260f4746f3cbfd9926dd28823bb74216fab386c6e8843603de36d230837d4cb59849937ae76eb2fbd6988511aa2aefb14f3be93200b6ea8d71d72ad6d52b5f15e50c678fe6a3ffb5cd2af898ab10e8360b33de26f24f4922a3fa77dfeb89db7958ddcb5c96250306fd815b4aa755f1788f349edf591e351a76ee7c78bc6fd3eba6b33476caa04cea939f523fad8bf984c43ccb1299f19fc35ecf58b371e71b28a72c73ab827e8d56ccfb17e0dbf1c40efd47902d86f79676f4af97ca59c696ce8027c1fc0a6858eab53cff9523e9bad8f447814b1439c68fbffcd9afac21cd08caf2ce9fe67ce29a79509af37962a7ef215ee4171cddc5823b71d4be7c769a18953a01fb956f280d1db077b491cc709f5df15845b4d5c532007486c9ca96fcb2e266b8cf3cfef787ebc2e1be4f3d68f9a208d3c634b9a3ab3d2402e5f3d37f8735300af1c616a8c50239d86f9f88cbc13e05b85e9f3f085b915ab0360a79c1b713120c7825592a67de2b773d8ee0b439aa4294b7af8e2521257425a3d131e1b9e056c8244ffacd0bc03f69ecdcacc836742ec9bdc7b149bbd07bb35c64be7a6bd762cd9f647d5e48cb1ea795c38d4eb9cdca08e2176b00f3ca3c0b3bd7fcfcac47b9ac04ff9d85328cd23f1208b9cfaa88deb14395ce0397767e4cdabbebe4be21a585fb0819fc28d0a0dec71627c79274b666baa4f1c3006feeefb7af7fde3b7df8feebf6ff2f763f78a980eb9ac7d33bde3fd60eec80be472c580fce804fd5d3867c5af2a437c74e6da18635c827d4e7143d87d9e8cab7d42eb5d6f6dad64ae33bf09b3de6f4cecc348b774cd53b05f7ffd3c73c7ab295fd3ac90831a6adc15f3122e7f11eeaedf93eb1edb77eab0ae7e13dc487bf647ef7b62e74fc5577e052934ca2f115703f08a2546b05f7f308eebf19d018b3d247d9405d4546a3c13281683f932aee36a32243ef401f93f32ab0017299343b0b1e85e6b588b1ef798c3358ee39999b00f8f1cf16e7277b65f74d03976de23ac07949ac7394385299089e6438ef1258cd7e44bcd569335f563283deea4dd8fb6e0dec3d5eeebe7e9c6e5cffd943fbf7efbb9f1e57337dd7b6fbc171bb6b3171fb4b1a779cdb61ee613719fb119e6c45bd8da9984f0f7fc7d496becb5b2490fa5bc941af1b58b01e6ac4fc1bef3458a8cfbd0618c946ea2d584a4eb423d63ed7c4e492ba37eaf00f366c7b8b7a2dbc880de80e499ebe05905b9566d883986f35b05f1961b4dbb67f0dbd8e8ee7ba72bd67bdc08cfec280ecf58639a0784bb47bc4244b5d354d319cb8c793cf493ed74e3a15f7f1ea0bf3303df5c44ab84be0bf50b395dd3773106380fe13749fa705d2b6ae0baa17e78cf899f12fcfbb7e0d7887b5f733307fbabe58af347cd29dbbbc38dd7cc1e7164894b78747bb1e79e93987a9910afb520beffa8091b8a93cb29f08a8469f856d6c1fd7a8278157b3344b0648ef593ae6263d067271d2e5c4be0177631fe59f954a49b101b15f16de0f7cf96af5d0fc146f14c872aa66a7d21fd3fc4080c110b96c84ad60ab35b11be26adc662a723761dd658184bac830aab8ab1f74dc3da85e60ce7bcb717c4d317627f802769be60bca280fbd2dadf5efb67a39d13df0f8e2dc53590f33d5c43ea1d059ffd13fd2837c51ec52a43edf9147a73983729cb991308b4c255cc370c11035a4e3daae15ca84f27324607f039937ac97a7c880bc75a407ac701b0656ed24a5d4fe585f7a453e74bef40b1a3ccc40df6ea36f50dc2853386722614e727f057928e7414af29ef972df7f9e3e77651fb970e639e7c73aded6dc93d4a65836755ef5afcf9b402cddd49b271dff88c707f925e69c7a345be0ce55ce9fa9ae246f37cd672d386a4511437964f5c1451c7edf311980ef69fb96246fbb257cba35c1bf41788a79cee155b8b7e4c86b121f92c74eed9dddfb7aae76465773d9c15c60349343af2f995523c37d2c95f4fcc9c6ab5a16f6e9dfbfced16726fa6e728ed12786ff6cda38c7c789156d89314c735e30b2ad553dac62b01f6536e25af8ddb48239b09fdee3ae6bc69bef3b790f6408af151527d54d487c1b6c73783c63a725f16f93ff2a4fae3c1b74b1aeeabda9126576f0ce0ecb8b34d21e61fc3ede24a3cd9fffbbce8ed1e18a30e8e98a77f5d0357ec09b2e268445aa0afbe7351bca3d8938a3c89437bb5233b5b5ff0bc9841ff15f49692cf4db68dd601f489d5d760c73ee4ccdf5bdd1cd0fc9a8adb4aad8d6a4aba49dbf715ec79afa87d9dd659147ba405962cb97e7c320ad4538bcd84f8feb34ac5bb702fd23ee19c06f8d376598767a1d19a2abb354567b59eeb39f6accc63c2676c4d013ec42ceebd9b8a3954eecfd2f0bc118a370278e5796d706c6286e302736739f654765cc2951526e113af5353a076bd082aea1f535ad44ae7e7f17b42f9c9c43fce672f73df2afbb562fe07886724f80fe8376817d4a9ca1ebf17038fe51ecf1cc0fb1ab9cb5cc22a27d1bdaf8af1605c9efe342e5d2c188e71ccbf5c3bd25cb1ac3dd0494ccacf25f1df463f745cffb31703f39f6648bc8ad94c618a413fa142ed97a8f9af51bfc92caf729eaf7e8d5cf4c4b91e23470afbc2784e1915c54706c7678dfb09fcffe2c2ff165bbc16fdf66c718515263ee445326fec4ff8bc795a423eb88d5130be7787ddd979fc04ffa8aa8b4d0e3a99da0273f3a581fd94546390c4f506fbeffc0b634a0d7bcb5caa0d1553e62c1c50be0039d6b758ebafa368843d5b62123cae5fd0b4b6177befc66bdb7cfc2ce4cfaa2fbfcb6f5fe69e3f5bf367d0637726dd3f3bdd5ba47fd43b677f9854978b1a8f3094a1cf18a9de390de3a4054d775e579c831c0de6dc0fed5dbaeb9066df7938472c539c1d86ec2b4c2de6aa6ac778e9043a9d6f5417cc6f38dffacf01d53371bcad427bfe6ce720d2dca9d09edf713eece8368271c89297047561c49ef4354647ec09f0a027606d910d49b3fc0cb94d515494174eb603511376ca236d6631479dad30cdc967c90bacb3250afbabfa6ebd5e9f53bee4fbac718cfc6bb0f79807b272288fbfd6a0e759bc05bb11cddbab20bf31917a0967b7cb185ab39b5f9a7bbf16cf8a4f0239ffa338a7e74f8a3d9dcb67d52bde8e215e6b12645faf85ebc8957bd6a1de72af57baa6779d8906fbade4c9e0f84269b428fc8b8771227208c07cb1fe2a60a609af73a1584736cc2d45f6d62e1cefb3678fb57fb595c82361178e784fd0ffbbf34b1cd4426f128a2d66ab98d6f90f5cfbc92530348a67c362fa9dff6c2594c7227f243693906a0d85b1781cbb2ef696b59edcdd5bc5803aec41bf0976e71dd8a86a0cf9fad0e2f1049e711cdfa4f9fa8c275350ff5cb340fe54495ac68461790b765b136d55c3da95ff76bdf6fc7c82dadaf645105fc4fd3e428d6bfd5839cc994de399afec9c7a8f6f31e1b9d09ef85a22556f6d4a798e9a7ab2bd3963f270eddde7417e012f20f822c4aff94dbc6217f5338ffff76765e7ffae7654c7380f0b98675b68cf7f3b576f7cae66bc27fb31802130ceaa1cffc2cf32655f5cef7cf190afbfe2b8929fc58a8da301e7cf5663bd9738a47304732582b4085f5736bf0fad5b3bdde9d83fe4c6dd997ebaa9bda2d6f0903ec7f5bd1d130e6fb5e9c6076d809d4ef87a89c82cf7cbde33f87a6a9d8471355eee39feb9be901ecabec238196d84698d7d5afb7274c6f3c996985392b1e03d0de7c4c80a939f9f3eedd9b4bc629e645e216f07fa1376e93c5f2bc268a53aee03ce4dc58fef21a53bedf844b69f1d7736f1e0f4eb0dba86fe8216ec3d386352f7f985bfdbdb3be616b1f5a32687f3355d399ec2c3c07972bea1ed98acd4dea31c4eeb133e5f8927348e9f898b1835ce45e1737e523396b43e515320b72b7a07319f203f0cd7681643ea6f8f33b1277e23b86ef2aba49a7b229e1ede598d5dd9facaae7f5a687e23d3ab2df49fa7f05e43270b64b52ba8166bd40ddd43f17526c7375fa3cfce07c4442a0e9ec0f04e85b320eeacc7cf3ebacf468f9f5df833d3bdfb2c34bc1b7fd6fc477c52af9817bc76b5acead8fd4ef1dc0f0a49d7dcde7d161ade53f799fbd4bf66a01f6fac7d6d8a27ccd502779cbed6bacf6ae2c688b176f634d3989fe093f9d681a7e316ec16c4f782bdaa57a31b8fed5bf77c2a57ff5690febb717e439e02751f517b27d237ea783d439a5f3cbb2b752e141b41980323b95b27a210fae2cbfcaacfb2756bef3f488b98d745a6c6d70d92ed1bc50f693422fc400e7d99d678696c1173a0300a760cb80f1d6ddd21d824ed7580a7d738aaef86e97a5cd8c48101dabe49cc76eb13f594ba9c1f6b7e8e3e1674ad94745af5c7b10ba1376c849cd16787e2840ac71f6be776ba17185b9e068b6e4ca6815c17dd589e8fedf54187e3f8f6f82ed4cb4435e9a5f434f235e394f28ee7a77072a071efc621591f4ae28ab8a95a3ae6d8b6a734ea7db7e39cb573ec51594e8e93fef32146fbe1f984151a477ba6b08c50576fe7289a0c4ce269eb5f3fba5d3781716d63e94b8139f9de39112b2deebdfb4e9845c076f9266b8fed308f6f0c4f7c7d33218cc4d0a733de381e09cb5318a449323ab57b14b8a27af94fd3faf3b51a9ffc534fd8687be50f5d40fdc52d09abd0ab67604d8072f5a718b8075ee6f2f9b378c05eb2eec3a6a2fadd80d667c7a56bd57fa92b7aaa5fcaac3ec8bf474dfecb4a628c41bd118831876723cd68ea5df1e9bbd3d6afec38d455edeeba74d06f6b9ec997f64bd58f31b20a29ee311471455c1d5ea934ffef6a6736f6a32630dec309e637dacf5cc2d8cda784f73a0f0ac2e21ba321f06d8bc227de5e797efaf6f38ce3992b7f6ebadf7dde7cfd3c39108e043439b89e37253e7c41fc1472342cba5ee04b483c7cfcf959f1ad252adfe41dfe9cbbffc93c45a52950dbd3bd14802bb27df93c60fe47f0d91fe28fce3fee7eef0c05cc9deb4bef9bcff9fa77f7ffe6f9eeef6f0ae2b60ae7e497fec93f571cfede379ff7de3f3a1be8c7ede85c2d36f9ef6283692093e2cfb143afb669e4944bfe20cc7e7f0c41a3b0b2c2e4f09731ae2fc83fc95a5f917131be8e5bf7dee9be125f9e31f358f348505db57bc6cb77cf08cf5059517a1d8b0dc502db6e9fa3ed296aef7385ef90a657c6ed04d4dfb13b535c9e2ff7d46b87b976e3385e122f4cb27dbbbbb6e65ec2f4389e3b07ca2d298cd6926b09bd6769f7e2977b004fdcd211e7ef9eaf30bfb92ff4175e02b39aa15e1e693226059cc336f53c44b147eb37071b9014619f875c569d161e6a9ca97bc4d5b5c3526c41ab1279fb4ae7be0fa3e35ebceb411852ce3dc9f2216a1a2758b7d602d31962ae3b16c49398244f2bf9b58e0febb08dc5dc71956e51b3ce3799cb2c3b52cc3ff5a79c73e19a9c90de9eb80b65937c7d2f63385e365bf7eb75d573e70acfb8d3f879199b3fe575d2acf837d6b0e31f56fddd7669e2f712f47f92e4c673d99eaff83cb026b6c4533af5592f75eb614e44e7d8a809f7a08fa838aafb76a9c178db0a4d41763ff4997fb7d76b67a8dc06e0c571df621d420ba79e41f8e3827afe12475f52ef8371b9b27fa5f4582ad216427bfb43e93e08f93c0c273fcdf05b9c93bc40bf9178626e019779f65dc275c6c67aacf8591003d0ae41b9493e093380bcad07e45166ff3932b6efac0fd4203f9c3cb3c6d54a61a4606f91bd8a60dd813ef3047d25e3ea7467eaf95868a4897134d17f9815c84f22b36d1b43299fbdd8d1339f149605faae2e3aac6b95e77b0dd2f5b8d3c1a8ac85e98d97596eb77399d6ee47c51cbe6bccc16943cca180d68b998fbbf7507dbf19eb79837db682d6cf94496b3f3cd517661cc7c9f8c7e5ffca9c04c67a4c3ca4bfeb1b567a71d9d17e6988ef4bcd9df775eee47ba9918f47b6a0f3ffe839e7b10bf92b23d70563b28883f4c727f645dbf946102625f6a76bfafcba025f8bb9859792e6cc6de744d549b987a351f77d5518b9a93fa4bcd692b8c463e17db1d599435853e113f6be5f3fde74f5e3d279bc4e0f63109d893fa6bb0edbc6f63affe7d882d6f6526d3bded403f42d2cb159ffbf126fa0e22918677dc63560eeed939037f0145620025e4be2187a9d4f74c4bcfac325cfebfa1cf4f318f27c235d3199091dce7b77433cc8f8fd57e0cfa57ecf7ac05c7a19adafd1be049fd95d39d580743d6339f8529ff437c45de89e16600f9f82bd457cc0f32f754ad3a1bd1a163bc0edac6aef421c9d72fc78c6b5e34bda865788e5cde398d76ef2df97f3ab8c2dda6f6f0bb5ef4fa67aefccb3fbe7d352e55a8e8a1b7bd9fec7384b394828a786ba21a8b564047b1ed735e6a31c58576a0dec03cd7d0bfb9cdbd23f2da0267e0c6ad79e4bcfc23ccf53a0079ce37ce01a3c079b67b233a1ec6b27c8c49b99704e84b56bce090b80f62d3738ee51bed8e2d768d7fbbb151ad59e7c59758dd4fb5872cea11c3007acc28f8dac907a23086bbd1b211e7241f1296887409fa896fea6ff35451c4645dceaa4bbf6ebdfe22ddfc6ba58e234056350ae6f8f389d304ec65deebf67abccf5913454ba35eb98e4037cb5afaae66ef7e28f47bbf7b0d6bebfd66a8f3e698f878ccefba8a91aae8fb5be1ee0de07140f2eeb678d63b766fbdd774f782d7b597b1d662d1da55fcea68631bedf615ba64abb72e3185d0fee5671d8578c6bfcc69790f58d9fcf3c507fb9116c428d71945f9fd58a32bfc3d0c439f6501fc78c5391e7a788306e936ffc0e984be87deed9215f1ebeac8b6feeefcee51fe254ca01c3bbd45d8fef97d80e78a0a83f360dde31ef2196bb2b6929bc57e4f7a6db05fa6cc71c713271669d8843bb979f7a071d9a8ab57f5eb026f91b1b6845e9b0bd0ef8438de87a2b3341bddf09c545516b331defb474becdd1c52fe4ff9a8413f9411cb6842d0d572a2e51efd7a87bb53e99565f594bdfe6dcc88d726dd807a67096abbdcbfd6d2be4c320be9725f17125feb0b8ef21034efafd917df52a7dc8a3d259dd6c2956e834c76ea37177dff3bbd018e70fbcedc688b1eec5ee3ca1fd53203f25f68479b06ec425d81ddf295fea2bbee63361fec31cf749c5b1e077ef227680e3ae54af096270a8e7ac5ed614d720de21d5e93b11ee5f17ff3c528c10de73093d01479a7a5fd694697d0785d9493ceec30bbb9eb863b00fe9ffddae2e5b03376e2dbabe3b7eae6dffd9ef9e079fe3f6dd7314f41c12b1e6e06bbbd4b3d9fadac44b40e7467c1b3dcc6bfb6ca5510296dd2e1d4ff335e6d31976f518387749ab4f1aebb73f5d672e7bd7319337e64386eb205fb03810e6bfeb7174a7628f7978e36a574aa3ebfbf5566416afb7e51fd69be4f536fcdd7a8b69bdad78bdfdf5d9c6cb0de9f3ffbf7fedb5f6ed6eed997ed3e9c0434f99dc0d0863e52e59d3718befa97af0ce7ec765d2fa514f81193474fe2eff695d82f61a8f8fc9bcf3477a0eeac328a477c795517efffc7ffe9de65cc3e9d15e91efd3f5ea83e6c4bed6288f8db9bff92a237b871a6d7afe2d97317c5e59897e684a8a458c9f4d403dbe717b1dd020841a9b73631e2f3a53cdb5dd3b5375ae256516d76878acbafdd8e5c00833dd6cc7dd98f27eebe79dbbb1eb5da7971757efb230d67645be5b229edae74954bee1d9805e27d4b46ee307559351cf4d3196f7cdbcaab32831ad71a73bf5e3cad7cd9c86632c88fdaf7e1dfc7edf3555ff4cf8fff178c175be9dbff488f9eced77e7a95719d42f0fe39e6bde216872d44cf39bff3bc6bdf75c4d8fc3ce039d9dc00cf63fb5af1ae4a0b95a281e37c70863177aec99a74410669d72e5cff7dc11d72e06b8e3e766eeb63369efb63e1ce6a366606320a71c6baa8e72650dbe07de329f380d533198231f79c2f51fea1bae298f1acee3d6beaa7ce93b5d73d13898977dd40cdf3e753adb55fbfbf730d5a956b7f1e32e4f1f69ee47b83f4e7da52102fd3e101f25d4fbe9411c3b622d9f48f9a55a439f477406efd627d2d37cd0d2bbddd719afd75ecd32eef531672bd635488685d6d548dbef56da33e8ffa7de13c67ef683dee221d758e37ed8e3abb6a2d8a2f7cf223aab013b2e5027c98f10b7443d6e8976a0b3d8a53e22555fd348ef5c7ccc697fa938d6b557498d7389d7c8b6efbdb5a6b80603e0839b26ae4f35073506d873806350015fa9eb5aa14ddc78a189efed09a9f2324e80fee4527a87e5f77a4fb62fbd3de6f2a7a037c5734663403855a7b50138c68302b450dcc2111c6babb1689fc904befb10796822ac2fa7a8f7c363d67e8f359a1eb94d35e2d6488a5f67e4224a283f6d2f235e0b1fc4c7119a49a1ce9014353e9b642c78cdc8216b6b9bd45fa830f902c7cb8acd1aeb50954c68cfc27dfd5e8fdb2c827a854fe3fbe5bd38877746de74e454d0a1cf2db69337d28c2e6549395ad0efddf17bef83bde24a801c41fd0ce765dafa96aa4ff52429ffe900870ff88309618c28cf7a0ebfe775549c2c6a1da68777aaa791cf0bb9f68e7f82be9bcb9ff89b0172a3f866b0f7dfb937d838336f14f149fb3bcc71a6ee1cc74569b087c6dac177517d71659dc40bd82b9f01f0ed782b58b7cfc4d92499df1fc67e81bc87be463d122ef55d927e0becff2619a39e5d8873fb8afc2f1be8a7165ab0fd891c032248c6a3f73b8db65404acebc0fcfc3f541f0ef4d57884e3350bc2c9c539f50f6fd478de4663e25750764bb7ec3ece5f4e2e43fedcceed406e173487acfd6a1e3fa93e501a23e499700fc831d28ec327e10453e2474d2bc648c758ab589a5b1b6a28d565453abf8c9d70b372ca3ae0d40f6d25a637a433bcccdadfab3861b2227e26e8b3a11e73aed18a0cf86c83c6bde759b2496fb8fae4dee8c61f769a61d427e9daea778d3b16ec6395832e47f6ed6fd45994186b1bcf339d38a2968ef7b47416f7e761568d45f2ed19897dfef21ac6eb21ce27e9d425737eb7ed58ec912f3ba9cd4a3e6a06b9c2271df1f43ca631493602f78bbc91c6499256d873eb0f83dd9a700571c9fa73db2be50a922c1c32df09d7ce13adabb70af2756f2b5eabe19574a0a4c9ba515e996ea95eab6af80acb96720d3f29bbfa2fad417c26e8652ca93695f89facc5129d083f9594aadeab784dae5dfdd8eb3845a8c6751b5d88ff3c1c9f2fb89ee2196bc6d4ef54f34dd221bf7f8759483e3a0c827eff4c9afbbaaac3b3a803e59b91cef26fe66ce6db39701036ae4d316a09bd2236ec2fe71aec43e24255ba4685e65961921f2b9a4f98a3e9ef780caa4e4b13c7a8fa1da6490b36d6b83f47d0d7e51e887f08f625f482f118c3184d7fc7735039dea0a01a43262215d325f5600579e169e5607d35ab68ad362bac3d168eb8aee8bcc9bc016bf1d427ec19726794bb2dd273970f226e41f4e3aa078c4539fd8d6e443aa27ee570d97ea7ef1720776f59733e15e30d71ce59cbc842be6af116ecf07339426e6e813d44ae16ecb9cea51712b0a7727c268c4013ec433a0b5e2b2d382dd4383e1bb48652d057e3cf1197fb847de26f81c93c02af73c5d73ab202633b060e93700cdc750ff79f709db409f647bebefafdc4b5c22c1c9719daa664fbb122aece66cd9c67edbcc49a9b20bfea4b90dde972e68a376fca5af6e372c21a53c3644c9f57fc79c769acdd08938276e51d3537ddc5afd6a68f9e971bea87214cee9af47e8b9941f9ad369653fc2522711c38831476b57a466d0dbd829e2717eab3a385c8c498eab60968b403cf5a063ccd71f293fa3d118f2ee63e734369efec2fc1da1eac004b24568ed26f59f763f742521ef19962986990b88bcad83a845356ef96ad8f7426acd2ad8a6765761ca7bf94d63ce77022e33806be2fc82bc1b8280d843b4c02e16062d3a53d96977b9c27d537d1d9d568a2ea9cd0e3dd208632addab9a29cfb09d6b9af07bbf59ecf26e27ebdffee1b7c7774081aabfdddfdb3b6f130c6a115f330574dc9186bc2f4b8847513624af9fbed81ce91a5e37d02ee53581c073fe634f4e75b873de8b0732a76523a70cf170138cbd6f701df63b7666d453546b1650386ccf95479c9765fb9c0ebbfd410236e5a6d1cdb3ecbab50eb52b722ed3824cc72a1be776ee78ef2cf5c03cb35ef40671ac71b46c573564cd7cae72b9c2e465e527f63d2d7af1387608fda92dfe37eeda523f61817be72ed06b0c6d34e5751a775b8e6efa85ca337a07c66d2c3b9b467887f1b39fd5ca2444eb917cd7b9fc3fa7705e97ea65be2eeb30ae266d7dc17fcf39d3ef3a9768b5c20a1e6de300f6c115f488979d000fcc93a88e17a2b799d22d6ebe4d79e1568cea9d4e0cfb9037fe69af8ed9fa1744e4bfc7e81fffea285eacf95fcdffe5e48f8b3f5d783f47823ec78bb4684d49f0b13fab8726dc8cfdc3e63fb0c25de5be03b087cf625de83be47cf5ac904ff1d7fe724f82ce2ee77053e5bae85789ffbebd2fd7ef7f7f6cc0ca2eb39803fdb18d29ad9f9b89d93991ddaea4fa501d4fe3d577305bc32eea9a4fe15d05b7f8d2627e83d4c2cab34b1d6909e8903f80cf66f84781af10b7278bc2edb7d8d5809d0e31394b3012c805f64c0cd53b1ce9ee292573644b096e14943dfc78e09a746be25eae686e97abc4aaff7f726ec99b1c6fa5b62f4fcef64c53a409abe729e156663d12cc8778b118760044dd9cbeb6e41573ea99ed05fb373db1a304695b8cda715da30976af0f10336e4aaf86db5e7538eb945fc77b04f882f59401c06ff3615e34026b74823ae5a5fa3bcc36a423dd24a27b36793546ec92ea784b92e953dacda35955563c20f2429be97e9d9338a3b7ef7dd4c6194de83da75cb5adc7cf2c50c1c7f59ed5b5f21d73c6b2ec3a2ac2fed79730c9123acd0bc534e36c600fbbb227f313ddcd4d91a5713185fc70877c3f12a0e092b821cefe22dd810e6486b7cea3f36ea1bd9919ebd39fbac37909cc196fa7ab061ee4ae1371663fc40fbbebb4e0f276e948cc3a2eb88b7a0f9fe3aa106f3ab6c4ced0db967eaa6fcce3090c920d8544fbffb6df4cfef220ebf7b86ffe7de057437c32cb44587756da86f3c460dad22a61efb1eee30d528267c055eb1b3d289ef7849efaea362efee3a3ddc619c5fb93f9faf73fcdd75a09f1abeff16405d4dfdf6c5cca1e606dc546ee5f8266bc3c53e9d0582b01da46bdeef51e8b8bd7ee84becdd2d1c9fb954efaf039a1c7c9d7e1fc19eb54df83acbdf5e077482e08c3ef6f6cc8ff7aa06cc0768572446d07cbfee1ed7cb5fd6dd6fd74bf4b017ffb2ee4e7f5abfa4adfbe77597ff6edd3dac97bfadbbdfae17e57ffffbbabbfe69fdea7f5d779a6b84fbdc5eed8eea5cf69d1cede368ec6be48b7b4f3436323dd375845071bd8af91923ad72c6d9fa396a7dd46cfb2c34b00db4c673e254313daa555d89bf45712cfdba6e15be9835f590afda0c955fdcdae670477e66f5b9442dfe245b7f72cf88f343e11d57b5d760ae76ba6c6d06d6b7dbe758d4d86f1c6f991f5ad40ff79427c484a16e4fe38e9758cf0e8d11c642ad4de41e9693e2ef4f8753a179b7c5af6b1664d514f55e3e831dc5bf41d3f9d6d4bb53d17c4cd30d73c50de83c1335688d2d309fb18830efdfd0777f684be887b6934945be80f00decdb963fde794d37e127bc73a5055bd41d488fc3e0d775d3ae73d479788b6a854d3e46b5c3d8f295a3cee8b708f4028fd15ed802f0b26fd13e54f9d642fa66b03b9b68bb3f2307ecb15f7b43e25d5930162cb703d23982f8dd4a282f0c1cac1fd178349e2b2c49350e32f1ccbab350c3b3abfa19b54b516f5ba77c620d5a5159f89c0257f9909e65a9d1feaa0e4b87e32e8d30bc4b0d30ae72779d612c355c206fd0d2e870aba1e65c23f7a0fb2a17ee18edf55bbf388cbdb73ffa720efa56cdfa09751cb279467c35a5ca81289f0c7850a681f43f835de7f7b4fb5cf1ce183fd9677c318fe80b8a0bf31634c43f511d7df03d5b5f0af5ff1457517fdcde28f7171aa70be1470ae9d1f99584113c2bae4fe4795a3bc5947cb9eaac9e0d72b49853525c81edef721fc6d58aa12e3a15d26f18af633aed3d3f55ae5de3be9aa490cf54a7821a13fb8d953aef3aac30c6b3727be0f18b735a870a23043998ea83dff337f75c75b824ca534c2b8a53ffcfee7b89ec6a4abdae80ad649c82584ead31e58182aebfc30e6389dc3ba15bc6c4055431e7559caa736fa3eae1987b9ed3f71e73a019e36ce2657bc6700e54e147c6ddf5c5cdafa9bf2cb8223637c77e90b8dc10e762759e69b25d5376e51007b124ce4c4b9acf94dbf3609d6d0f41f393b8b285e29d9b084b385534576768d5c6a1ba606d07150fa9f5b6b23b2c1de56a703d10e6fcd70cf56c7da9b84d89038a9eab21ce2169ac0ff05c7e13ecaa0361e1fdc9503d4fa02faefc0ccd4f0dfa82dccd3c25ae63e7d25e6ba1b953d67bc33a631e3b1af583bd34216865abbeff1ffcef7993d8ea3ea93890064278c35e28e2d831d676ce7dca95e2af4a55cfe341e77eb3f63aea5cd946544bf2635ea34a5f01ce88c137bfc1b5615cf833c01bab3acb859fcbf8a1130ea5246d1e59e978965879961346fd937283617aa4d8775ac6fcaeb7ee9a279dce836577cda6fd1c7002a371d5bb57fbef52610e4283af019a146a5eca0d7ff79dde394dbbf7523a43d4ffb9ffc9ffbe6a9f6d9a8c558d6eda8dabdfde1b7031d78767cea1d6de5ddb6fefadf2d6d2a4f595443097f3947a85748c8f8f766eac9dbb352441a347e19c9bcaf535ef89faad103f3dc3be8dcf60e3210f8c6e56589353fc739ce7d83e57c89fa7f805a53b4bf95c51367d966c7ce48a51bea13adf13c4a62c89331f7a925e57b53091035a7153608ef016ecf20bf518e1337e06dbff48a793fae23e3a7ebfdff5e479e322ae5cd4603b62ceefadb5eb95845c00e455d763187bb653764fb7cd0ea4a8e7d1a8afa76947fbedbd9ea576fca07e2dcc1fbe743a5c672b4a0e54fb21ee286b9571eef10d7d433bc8babca53ac7126155d9638ed2f9446c4b1164a1d9f19f2b3e9821e57cd19ff8857acec05da2332f9adbe977816e36e210faff86df13f2ebbfe1f7f4e0fbeb69aeb7d87be4cb03df8bee753dce9a3b951b7ef60c3ea71a51099a32764dbec7a6aa2fd0d73ea94e38ae9b9971065ee934dc2f3116ca35ccff67de80f98f48df2613a86df0f3bdd01ebe9ffea4da2e7fbf7079bfad554fc36e4bf71e82dd10b7602369afe62faddf00eb661f6cdc31617d9684cf4fea6b6bab73cd53b50cd4d19b168e30c9a6b53165027a3d03fab734029cd6efe760f17fe39c6e554d54746ba87d4fbf7400dfb2c8b6d8f32f7eada61571f39ba46fb3c8d626f5f5894610372df50e728e2d49b703d40a5ba37fe0cc699d27a2e9ae179adca3fac7eba91e0fc82fc2b83b7e9cdbddf9a8def5d6ee33d9f59ee2b854a715f300016e67a67907ac1581c699b28d5bf6a597f5896a1fea3a219f3b2a8e73606fb73117629993adaa6b80bd1ccefa759550e33ebd599038d73063fd80ed6abf7659bfd879465d3ae183cd833ab9d0b89675eef69350fc9695c3be2de242f0b9548ca1ae7ba6b196c610e7b6ba046d0c8cbdcc50fb7bfcdd8f1bc7ec8d00dea3647b0936e59079b4c0ffbb56c885b0507186d39ea9a089861cab71f2133535ab0e63b65be3ff277239392a8eba34599f57a4b787eff362225fba0173f54278cbcc42ecfb7981ba3847c203e69af7c658ccc9f54d71582562b14c8f2ebc33e121812363e9206eb18bb9cc6023ded89eec2db886ac16e55faf61f5aee1f6ae11e235f485dfbe2f686469981f9be53bfd88364ae5d4651ada741fc56db4b7fa3aa5f66293702ebf9a9c91f3f6c87efd02cec65f6583e74a527fce65d0ae15af743cfd45eb7483b0c6ccd8d615c60e5174e63a1a9c81b935a3b32e1517da53695a52ace7cda577a01c521a9d9f70cfae97706db7ac9f09c3b379211fa029755853ed791b10fe2d9f3196fb872920067297f5b34178a5d8b8dc58bb370b719d781f641fe354d7883b79b9a71ca30ef94bc0eebd512eb3f7ddf53c76098b4c7c2cf6cae95fb726cddc356a2c7c04bbee5920f7a67894f517e64056efe505f2c730d81dbb3d42f5ec2ca45ec1ae87a1d98e970de66713ee0d877c67bcedf29d8c5fba827687997877bfc17e42fcfec5678cd4f9d6f5ba87c0c39988977263d97798028c03e3ac667cd4034fedeb6a87bad8ba85daf9e777d68031d0f626aea1cefac4b2e653e22aa83e7cd2b5bb9d70ee4524285692d5478c38b639c67061125e28d79666958bb99163856ba4aabd019d5d71fa83e62ae46b1a21e940c74be22995e71b6280c432c6673320f728f5b59afb3e6f56b1d9328e63457ca4cebd6e24ae4fa5a151b246cdf9c8e362a20f9324382e9eb534897beaafe3f214835f9f2d4dccfb1801c7a8a1695d890f103915d3a5b9266ec8db92f23f8a33a28d2df2f16a4fcfa85f718f58324e301728ea256b45adb9dfb7503927857b3dfb78e62e00df304d6dcb217c0c9f959235c2ed55ed1d10f79b28bb9ff438e361ac81679c39d7c339fa0f7ac4bda3e05b04d1dfaf93931e8be9e17592ebfd75b60e68139cad503bbe15f533e130fbfd006b584f927114abf4d8ef6bb7a2ecc8fcce60db1ef629712199db41bfdf9d7f1f33ef442e628a4d4fef25acf94d1b87c45a1b1b08e68728f684cf837e81c2f1dec9bf89d32be3fcc09f5e8fefc64b8e8efc5dc2c0506f7d23c6c4839f506d81ce27c0a35b51ac6c258cc93e9fdc9d3d1961e7d7fdeba87d56419cea168eb7c77cd52576d11f015d76386b48e3b61121e5d553e97ec693f0f3057b5d16717204fb9accc5afb3d37b8669593f6ba0ffe9aedbb3224914064d06717824de8215e22d03cdd1d0fe7941ec216e20999693a1c2e3c4fa7a986b127204b0be44badbba84a7466cd295700688a336492319ede06605e35d44d962403caf4553b9b3a9caf744dc8baa79ed59abb7b6a282df4ee75268e4d3a571f50bcec4e37109f1861dc4e1197d78ab60cc93bc96a0376ca5a98678ef4a0b7607ca59ce0ae54f2b1fe3b394cc4b8ef57fef5842ae4af50205c0890998c94dce9c412bd93e8be29574822ce862b326245d00c817ea16fa868a1bf1254aaf47d60d5431fd568d83683837f3d9fac19017fe8ff088d332ae084f7e13a4af6d2aeec62b725a68ddbf4b9370e41561a265650ae4b7586c24cf85d247c13cd71d175776a43c5ce867982b4bdc4fa14988fb4c6b5cd8341e25e79312937f2700e30eefb4e2faa81014c3c4c4ef91519db01c705d371a3dc1be283f03d39a74fd7152cded02f836773ee96acad2e41c4f9c53bc3e5db5e3a6725aad4f5fd31ac8c534a7de36a3e25e272f43bb7154fd207f8e71e01c30b7269f61a839f870cdcfce862bee97bfc65d612c6c81f9cdb05d4f90937b0b7643c22d0678aeadc50ef86965e68d97fb35f7a642ac6321f650145d1c578d577b8a81baf3b168fd1455a3dc0ee780290ce75261c7b1b7b2eaf482a311cdb1b7dc5dedbfc57515f49838b2b16ef73c79ae5ba56bb86f2a8c82fb9155ff1bd44fa6c93848e467600cef7b61b3238dc521d86d9b2e77d4d3ca873aa15d324692fb52b197457c50fd2732bd19e06dac71d5102ffbc3e7a8fde523574b1ae713f4c91ae4b9733b9d9ffcc47dc99beac4f5e826e17c0a72835e661ae90f7a97d2e9e74a7ce299c773cedd611d4a612bdbfbe4e988f26c1fb0e7ab173c8ba927e840b98538f6d0f71746b0115c9f7e69d08f4fcfc84dded3896c7ce6d9f0c723653b926c3d166dbc7ad79bbc3d223eeb106c7e9aff341f5c47f1df592fe1d1e7a23989794e065daf34f51124d0d7857bdb378f98bbaff6f0ec09eb242d0993906ec7e594ce1daa1f2bee3b558711e351a7bfd850be0fce4881fe2ada212baf49dbdd831ed554be63bc65a30f338deee388f57243f87b7d4a7e29624d45a1f243bf9b8f92e7839e3132d6e315eb67280cb1aaa7159a67f0b866ee13d8c27a18dc466f9cb3725933f025c07ea679c2d80895afeb3027580be9faaa3de0caf46e949378ecb5ad546d13f677c9b801958b7e23de61b149987386e399ccc27846e976d2fdfb3caed413325d019eadd76b232ec1c663ec4f9fbbd5e7bac8d1c71e09eaa5697dc9668e391eea872bb567e6fa8ad2e15ccd551bafc6e4876e55ad1aeebff5f13e6d2c370b547ded0cfd1e29e04099dbd63813e7adb6d4162ad713256a1e26340f82393f1de8736ecaf72e17dfc3814be214169760ef5f3bad3e856fd429ff10ddc5dd389f60a37e3b7fb9eae5df620d2ef8dbfc75f168e6d1fc2dbaf9d3cf31e14cea019e010972598bb760b3205ebc504467d684ebe69cf52a0ec12678671d59dbc5fce8f9dae9ea11664bbc05fb0e1bbfc45ed2d01862af646d92f6fbe2d7997d1771fbe3fd6bf6bda56e70cfb8c9f7e9d69cbed6bf59539fbca68833109e615ad562d0f1b62a7c0af08ac8cb97ef479afbea4b718923c497720de0acea9c52f509eb969c6ca9aea7a1ddb0a34975645cf964cb38e2dcd8227ef73a1694974aa50173591d825d059a9e89bb7841ac2cf72a48c699c0dc1a87019e55a2408ebd50ff8f6cc346007edf4ebbda77fb3c01f1cafb4e682569883546ea694a9cae2743d99637d2fa8e53e2d1ab82caa65e40d1b47eefdfeeb34843773639dbcad6624e1638da2b6ba16cc6c84a1de4ef9092b84304ad11e23d619e0443232d20e8856e92f16a4a7da2f271bfd175b8d73b8c3dca21cf5e4cb03fa1998ffd8cafd1207fec8c3855c298302cf58538e928960dfaf1bfb9b6674d78ff2c2a7727e89eaecffd29db4fcaa37d77adf0fe5a342edefd33a9bdd9cf0b40bcbb5f13bf5eef7e5fc640c5d03406aa5743f5c53f5f513f374927fa5bd8da3c6593d11f49876f8a4b21154fca2f4ad6d4f7d2cd1171d4f4c67219931e07e9f97903d20aeccd89e773ce16c60ff28f9467443ffeeb7cb9ff305fd38e4b06f98eccfceb7cc97f9aaf2fd70aefaf45ef2dbe7926c43cffc33aeee7531ec605f27a3c2ea01f9b85382e9515eaeb61e5048c67a05e5de2074f1a9fb8bad09e381ae5940bec098f484b1762fd45b5b188df645f3a0be84949cf36bc6b65a0dd9ae1f9cfbc60ffe0bbd873ea094d759db18906e548f54b89f9c428267e3c37991943ea9f7c5f526e283bbc23b6867bbe5f88eba9779d5069da9c91f3017ba635f73557f986dcaa6ec4bf2036800b028c6431398f53eabbc3da36e38d947fe1ebc10ef10cf2eedf1bd243fffaefb046167d7ede4e1331a77d1381eee03bd626b3febf2febe721f9aa1dffef49713be7538b7800b5651767bb9deecc715c4e74ea87ec3d5b7252b5863e9f804c904f603b2e33177231a0efef820e4c88e7c1e805f8699271a9f8bb55cfc5b88b5be05eb1a6b48dbd400a6f4e3638266dcbd310f56080cf826a79ac470b7d83e4fb2d9b8e579efaac11bf3af5554fcf48f1f4605c3da41c58741bd9b406c08775ae881bdb55d3ad33b3d7edfb5f43c779f8fee8ea635fd90a75a988ebcfcfac09f1efac5a5fc0f1e6febefd3785459a50adb4dcd1b86f3f97c405a7d58c0188e88c801cc2d3ca415d4a13f42503f9a341fe599bf86583e83a9b4d841de8a8b5631e9fa1b6f2dfdd3346118eaded4d83e4780a7654e366bed62c906867b2ed783619b5be4ebd6ae7dd056c47bfc7291c733fcea104cd9229f712b20e1ffc56d66d1cadb862ada27e6eca7bcc918798a3f760e35d43ca47dcc77a1b5fad3f356f9abc1197b56e858ae762642d34d21a3a759c6af59d5fa8e2c848bad328cb91376f6dad94868eca093e637e6eaaeaa3a8bd1d4e105f9012b67cdbfb7b82eb7c648519e5b9b7741daf8735b2d5de7f78a7987cef360675897b42ed9943a1f9df9ea7fe8e9e77fbc41c7bc8bb543ac2248e8aa5c47ef8a4563c56c0c794803d975b0d9fe5973acfd3911d13ce7977bc521eed4569b1a93e34e258314a87f8b9ab1de5334b29154700e73d9be482e7f62b68a01d289f43ff7e0c3615fdbf00ce5c95ef3da22640a72bd3c3e6c45013c6ba99c4f318b911409b70baac05e40276159da9efc1af918ebaf1a0af95e5e32a231e8c2d9cc1ac29573d3327e0eeca5a42cb14fcd870cf67f539d8c2b3a5e0e7a8faac8a31013732ab6ae479454c6c627ac8ed2c4ec1fe3fc22d864bd3459cc0f6407c0c71aa83a650163abe9a4be0b64ab1ef0ef3bab4a66614c72d779543b968c57bcdb9b480794f2baa4125ee47ae052aa6e6b933866fc1b75c3cf53be3f0e2f2f35e3bc21f063bfd9de7766fbd73ff8eead355fba229eef7e32530433b002e9dc7bdaae659d50da63f6fc11dcf916f8006b28e1abac2a4314bd301fa621d1e306ebc338cd550ce9a9ccef2f788b8578df504b9b1cc25ee27ace1c55187dbfdc477cb8bc96842bdda21f4ea847efb6faeb0924e7b7e4e6b326d7d2d63883e9998513e8c3877046bf0f9efa5437823cab5f27e09c1feaa5ce4ad3d3f6309d88b9e9e8a158fdbb14c90e3ade6bd5ac86793fe3f06acb8807812e340c505a5e20bb44f9776ec5dcaa1900f42be5aa830a762106c9fbfdd8315e072264b8df82bcfe39999b8a8f343989da9e29878e07d5b900f30ad1ca5834aba5afcfe3a7124e51003f943f4b5a6c47b5648efc47a688d85675eaef1f34a4f767bbfb5772e70c749a17899a2d6dec27c215f52351659c53c06a59dd3fe69daf83b078d0eb5462b93b45be4f5612fbfb6767a59276fe1e4487c33c7f6d9979ad73ef31be4291c23d858ace7e5a7c40d535e73e66a29d18f1f5d8013646809e2e756cfacb015b78a79a6b7a88d2d24bea7c6dcca864e6b2c23ddad1e6e43e52e4be5cb28bbd4d03a5a48b42952e97f4f53e727f8daa47310bb67d2f9f6892724494c1fce7523d824f6cce09cbd85fd0f67dcb76ee9880bf17931b733f3ad256fccb73e253f50ad397781b91e91e1bfa7dbb1bfa758adbe92df9534ee9ee2a90a73f7b171545c5f71ed183477edd91d812696c9bce112fd321df8790233607de2a5f205953f817b8af82f3c5a63b7760c23d0a6a2b15f23a7bb1752fcc563be3dd298ff694c43cd5dabdaa4aa1dad4deea1f9f52febc8bf064dc87552df0c1d9c8f63b0237fe6bbdf950df53ee426e17593977f19eba0716d31a5ba6aa970818a53201d8d735c43dffd2e6cb6c46771644e1fcaebfd797c6cd4e5a61e153bbce75ed4448d1a32d16510d4ee74e978ef25f10f6b3fa01e4eb886ddf07e3c95ef41e36f7d90bd88ff6dfcf5fef8cb88f0e70a6f71223e7e1c8f99f22bcdb0f5679b3beed0e86cb32fbdaf48c3edd5dfd6782eab3d1f8619e948094b4c00239423a6b8743c179e297fa9a8f69c54564f3bc10da702e36d7109f6cf9497c828472e5b9bef82366661308fca474efd406900fe62ed7dfac86b5849ffb3c07db1aa3db3aa093f94b4f75aab9cc53e276df7b8521c525b2b6c1207cf2dd2ccd502e2db84d8dbad6aef837ae9a18f472c964d8fb35c614eae63bc8e8ab5c3e4ff43dc9f7527ee63dfe3f05bf200798acb026c86c4a66c3c853bb05921e0101208835ffdb3ac3348324eaaba7fbdbeff8b5e9fae00b62c4b4767d867efcd7ba1d511fd348fa16710b17331f6ea424ec70cf79223b4e8876670237cd5227baf644e4bf074a95c384934fecd7caec4fd5afbd4a1e196e9ebf54f904e9fbc9db0b3766882bf166613d610c37ae6663962ae4259471675a7531d0b0f0bd678f0f17dc6768eb1f333d73320ce2e1cdff4e309713508ed0ac49c6e404fe3d964fd0ae4ef4f239c8b84fb21fe1047a3d09f70692d95fdd09ccaf5b03f500f0cd8d5ca1fac08cf9078b77ca78ea37808142d217f4f1c813b9bf0117125d649c67d10953fccdf7a5cbb2ff65c0735eb35f20c1c6bd612edc3329e2e712e0c91ffcbc2896f0416da117b6e74ea7730c6bcdf677083de966237e9de8fc1b904db82d7ad325ea89749ed53c82558d7915627a47eba68d3728dbc12fa0706e9a6785560f58e147bad0406b2d7f7e353b08e60bde749ffd1a77eeffaf999b3780aeb360dba1ed79f8867ad04fc85e1ba8b418fc7e1eda7d0036a6e0c8a57a3ac8cf1379f3ed414ac78247a6aa641e6a611f44ab85cc31d517c40582ef30cf998f81a80af309c4beec604b00a6853d262b0dc53ae39fef4208619a6db648ffdd2883bf71f0aaa5956d32fcc199e83fd6689f36017b4d6d34d4af5ec8235db0af2c7feac443e40d49a878fd6c6051c989ba26f6eac24d78cd0bc5865b0d7e7913bf0993359f4d70dd3d106759137fd1f9ec7f5e3e927bd93677b41fc97a8d3e5bfafb91e5bd2bbdfe4d8e31854e590e2ec9cf1d8f4fd3e6a7eedaa605b7e30e6c844ec57f48c35abe448ef22c8fa15eb6951df26f2712e6dc001ce92e23dd8f617d863693cbfb27d1e07694f70ff8a1e6d6752412cc7d8c46981bd2aa0ff5cf63916df96e8eb864f3381b92d05ae3f8f0a88316c57e01cc26c8abcbec8af9b9a300f46aed45d11431b8768434b8bb067fe4e68778db1f7fd18c5a2c67a08478701c6aaf55826e2d992e7f3d210b1d838191936fa137fa0eff6faceb95f5bf0756fea3343f47dc29a613eae24f347a8bb0f793467725b494e21d173b3dce9e717f67195ebed143896adc360297073c0df2d74a8450f7741fd79c31439c41669e70ad8a0e223d83edf882754cc5f82bd0909eca5c8de5490972de265166a3ad73172d8cdd21e633ce7b13b5ebc9e484b0ef8d28d0ee6057b67d62873ca7e942e843ed7b3c4a22df1fc32109fed27e3c494d712ebfd2337ee34488ec1b67f650e523b21bcd729d8529e27b9a20e6cf26415f735237a0771cfa09a434e1c01915331568b31f649056bd4b742db458e0373f43c979890c0444e65eb62c03e32e35544bd1a396119600ee97987c903e6aa22c19151faf16c7cc0bc2c62cded70b024fc667cc1ff625c16955f0daec0cf15f66f7a06f674a66e47702bc6eef0f94dea318bb524cef685c1dc1eb53daf6d3cf6b0c416f31750be4739075e2edc5392fd464ef7f223d826c8652df81b37c2b745db3573b88fe44635c5a53101ae7cd03f37e8efcf91a8b5d56bf1cddb62de24fe65ae7722fff8304ffa2671cbc7a603be1ae0f7a641baf196bbe95783b73dd279db0b5157c31ea153cef74dbe8837b2f9fddac7f52cb40163ff93eb62f07c183b151dace3096c9bd85fa949befb663dea923e6af3fbf53c5750a7ea3de3354d5affcf16da36115b9afd209a128fc07b403a97c6827ace6e8511a34e83df0d21b7833c26fedbd3e8a4fcae5ebba1f85d114fe9be25e515243756cf043e80c2cb99238dfdb5613a742da9f9b810fdee61f272253c606c0bbbbbadede29a7a2b12ff5aeffd3476c729c6db2b1b6a5af3e437f06c67bf69af670be6d5e91d3df479139bf8833c3b2877222f10a7a8199d2583047304ab086b54c60bea10948ff9b6afdbcca1e0cc10fb63b58533e6393d503e6fef61ff534c1a17c68e7027983fed596bc811d5ef926bb20b63fa4518bce728b8484c7cc9387dd2d047fd5aa8ad37f89365cf8e7f0baae71bff16eb8c2aafaec23d7c6bfcf621a8fab3a69df4c6cc9b6378c644e199769f0a7bc3dc9bf9fd3976c3f36a583889fa39f28f26dd9cfb5a7e57dcd3093948937ac5e696ec45c8e19cedc751f841f8cb304ad817fd8bcd8ff25da08cc1ef87d9c129a83701f9a5429bdfab8f76f2e281be80cc8fa739e97594396b720a0ca5a8872d8c894d3cc5125be99d03db259edf1bc68da1ec0b32f73ee47ec7f55a819ac1bb6af3089746bc4351611d880fa98b7caf22be8798cf212ccde6a90a8764a7a84f96b0d40bc2a4c7bd07e2b613b9cef4d4e873d2c67fa1f113eec6db426fad327f74ce5c306e18e6ce94723991e881c11a27f2e12863e71eea43b0cd6ff8ec1de6861e524e1972822ba8134c29578d98f13ee83716efc19eb5b637791df7013f4487b54401237c0eb613e49480733730fbcc0d926684d1ef7d48ce15576275ab09d5ccfe089e54d0abefe07bc1ba741db31eaf1c3382dd3d06af27e8218a17471ff52fa8feb0de533f437ea3339cf5403287d7c2daf9d77528f63971adfef1b383ec517fedbdeb7d5a508f5c5a57e27cb2e9dc9967321e5a8f39b77aef4b599ba1bf67fb6c91e6c03c3d31ce00e2a906e646fcbef643aec3b5e86193799a30bd0e2007978c66228e55fcddedcb95afdb7c0f220f7f34427a176fdda1bcaed99fd7f60c722f84e9fe0cb61eedbd8760bba067fe6e1df942a78b7280d62fb2139fc136b6c3867e33e1a122c605f710c39984c4af4d98c9c84eb0dfd78ff388b86fa46d7ade3edf58874bee99d7d9d005bfd15840dd335a00163c0b07b328212d2ec1dd9d0aeceec4a035ff171facbe3ef6433957c5f7666ef9c09c9e31fe1779b83a8e8d80cfc908f681c9bce3692978c1036b33f087216b0f78156211acebc01ffad4cf6ce298dce7b75f6ce3f221699a4c2cc2602de389ed416e659a4bbba8bc93fcee9d00c7b958eb5dcad14a5e721f7b25048713f0af6f4bb269f01c10f7915fa7e647aedcc73917dc3c611027a91873d497efa4854f3ddd93568fea57f5cf6cd386c0af17426f549fb8ba0a67229f01d64f86b88a27a90b55a654435d925f1225a899e2134640e1b92f0e11e33e01371ab5ebe49e73f211d36b45fa9fa45b0befaa3b5c12fec832691e43b857ed9375bb31609ae35515721dd117f1bef44f83f8576701daeff5fafda4b36d694c6c1fd6cab470a6958f1c6021697b62ae28869cf350d48f94cfa18fd89f20dff728a07a6de442fc660506e1e051b3699a53ced5e2fee60bf978d1fc843efe0efad2aa0de9f858844f7e340cacd116ef8c5bb5546e70054f953ac0ddc5e74172917c095de6fcf3877de26a182e8c5f94471bd6b1b6ec372dba1c53d841a56971db87816f337fdd896c78d36f0b854612e0ceb0e6b1f5c4d9213084f692fa55e09c8e72ccb54637351f80f537c735111f27fdbe546a8c2c984bde245b08fe47540e57696ff0434e0e7cc188620d8ae1e36eb00f47cadfc2202a368c35894a4b72696838bc6bacf382219e6f33c0f16fd5ef17cee446f9f605e3f64ea2a6bcdc631f0ff95ef81b2f9e6abd73ccbb4e3e9caaff6f73ff8bc411028fd21b731167ee83c61104f729d9efb40f842d97b1ee78c371a6c71a5d8b2f85b3efc0da5ff8ddd0267d46efc6fe3ce932d99b0edb986d9ff0789dda46ded500e9bbe975b0763c1b6bff0a3e5172dce506fe3ed95409d4a762cc2755d81f364e069a8edb03f98bd8ff3d9cef50db1f6a1a710cfc2bd35975fcffc1ff4ee3c04ca83f4ce2ac196359c78e9e4dba16a1fa7ed272809c542ecfbd21f837201ee57e8db8fb64706e55d5c9c27d181fd771d80fb2d221ecf78ab83be8bed82711662287abe97845d6917115ab2df57de4d87bea1f5983289e5c73d255ca62c2fc4e25d6712ab082f950de5b5c837a68e7d7c3dca9d7c70be1bf1e88b702f7afe5c788a5cc12d27816fc2e81bdd9e0d974c5391bafb67dd240c5fb2527ee45ca9ea90ee93ef2fd4f13fc5e97f242617a425eb3b8e27a30cd059e47a1d08d04bd7fd211f59c1df6c532ef908179ef84e60fe2c31ed66f1283f0ac6bea958e132337f89ef019e126aa7a4e403b37451dcc6519a83673ba4ebb23ba17d4325c653ee1b76bf00999c329b8a99f9f98370a7aa1bc0be3e260ae2dc4bb8f1faddeb7f7ca4bea61c5754b9887b8f822ac4248ef2535c827778b2d9d23f1a77c572ff8fe582bd25d9a90a70e23cfc49aec7865fb7f7bf60ed59f43fbc50c11ef5a10a7405cdc8a58f0a5f657f13b9d99a6d492d3e7479c1706f7da093ef2673d6738068c46cb7a54d6947ce684f898dc55dc216c2ec66ad32f3c33ddc2ee8f30b6a0711f3df0a31d1f7bf4d2ec37cf29fd7715d11e4c2ce2a909e7279e6fb4cfee3aa29c43f21953df88e89baf7d51e4c5c90e83c2e6fb770ac09bf523d2e037a04ffdd93a999a161f6ac453cd12fdb27e946d4cda0b457aa57e11f199c7baf22fe4b3b805edc3aaff80f13271965dd7d46321de89d309b6d307cc65a2fe3ff37891cff2b530c0c79b25c1adfeff81d86fc935a4f701d852b2d57f38d73b6fbe138ffc08d0159db7af1dc09abc601e873532c535e57c95a447de9f47ee8535b1794de5a4cbaa60ccc5bc5d788f55023f04fb83ed7f5279cc27ea522d215cbab96677f0bb6765bd8abffb0223296c9fb972f80c13f798cd7b8e3e6ec6278ed7e21c2feec60de78b18b7c0230a3d0abc5721f83ffe722fcad1d23d53d4e39ef7060b7b4a6bf401f7483fb43ad7963df1c5e744b4b900bf8788e3904b4f9cad5f2be3595d0799b44de54db761828fd6a43ec930ed7ed1e73973a9270f9e3c07e11d653c5e810113b8c16872251b87e7aae0aeb83f13c53d3bb9d4837d60bc5646f8cdbccae53d0183ef60af665acc687dd47b80f42ff0ba46416b6aaecdc981d625ebb0935f91162e60369203c7cf63e6943e13676028f4fac43dec15ad4b71068bf15ef9bd81e66328e73cd987b207bbe3512dfed623ec875ba4c588716adb92f25a707e883dee200715cd1fe83cb38f846b3450fd8ed8bccd07f7b60ad6d6e19db5d901b7345cbe11e68b6b12632f227d83d67301ce57aa23d667266229d927d83db7bc7fe8b3aafd42d44c22fb355eed5d9a63be1ff558086ea757ad76e5cec67de45cc82b9eff4ad4ff37926fa0347d87e7096c17fb12e25e2abf673f946725eaab097f62c8eb5d3ea388ffa4bdba7ef1dc30f758891c48686f6d79dee1bd31f64f325c835d7e8e9bb67ee55998525f9866f3e08c665d8be29df725f097353fb7eafbc098a4bf49671fcce386df4ba1d844f01d73d6b956d7169e0157ce0d36ee073d6cf27e2bd2129e5f15be6b77ec316614740de709638bcec01f37bdf9bb58e4af51a7eb8a3a5dfd0834064aee97ccdc413eba0eda7949a09f7961a867b1fbf49daf3937dce12c75f83cc4b389d765e39d5ef97cb3a717f91d658e293e31a626af739cd7e5b8683b53149ce7cea63e8630e69ed47a2ce0e70b9c79a9f49d25271e8fd5e5f1e4b64bb6dce231a8d7e1cf9353443d244e87fc8708f283f49ddce4fd6117bc7e683ed13e8d3de1930b5f976a7a63c6c5d3b96b1f785e0b39c60e8f714e5ce52eaf15d8bf17051fc3fb47fe2e93e32a78dc894d9fd39aa47ed220a6fe56f2a5e3e67bf7e5fe11f7725ae3578e234a5a8b47da27de989fef81c71907da1ccff83b79577e87d7d11ff4f7c897566c97279ffdd6635ff1effe36ee77912349dacf81b67815c643f5ee11f5d5ab1c8184ad0f8d5d33c6537d64cdef8c514b39457c15ce21bedfe20fe61427e27e55b944bb1db2dddeb5c673cabecd3f3dc92b0fbacdfbe90f71d1f1da1c2fc692f02e708d2d7fbc06f8b48f95cc5dc0bc201fecbce19f0f37691d2b243bb63d9d90b8c648efa18e13d1ae293665acc7d0453f9cf72856ee501f72981efe8bbc8418f73942db39abed16d7e230de1773a0e41662473bb7c86fc9a9d7c5f62cc953cf7ee807e94e3fdaf53db046feda23dfdd5d3a2fa8fd5ad4f342316987d775f6629136ebc23862fd93ea4709c72e458267a375255ff3c6fe63b61961cdf7b894b608f31aa43502f5a6b5fb7e2c62a1fb34f59d806265b8c7708a753a3c4f8476b4383fce842b09b3be15f0b9817e2cce15e5aff1ec74f5ba05c4a4738e91e0ccc17886eaaa50df12795af83c955a9eac87970077c01fce35caef09cda1c209b45eb3bc91efa33543b6e9ee19d36ef319f7fc8c4eeb333a9a2f0bcff844b93c7cc64fe240c1b1823f88faa1d8ff42ebbfa2387965132f6a72410e2f7e8e25d973de23b1eaeb718cedef0f038ab1e53bf0ba8b019e47f899d0a38c42c23e202f713958b146f9ffc1ba1817b32076ede8ad78a05e3aca097a94476fbe57ab47350417740bd59c61e92a7b5579df3826cca784d1e2817493e0bd1da10fb07ca7f797108e53707583fd17bd24ffa7f3a3ef0171ff6fd7fbff625ee6ad6bf90ff51f23df433fc273e3ff83b1e07bf9ff6a1f718fd3c1e7385ada33cd2fbff56ed2e7eea1ee9272bf6a83983def9c0e2e97e5ceef0b1e73a1bf60b24ededc0e08577cf79c7a2d8378afe24b8c79ef55b5404cf7e114102776e475b8d6b16fbe1bc2f326efedef26687d37de2ee907d1d45d08dcfaff78ec31f5ffed800fedffd1660bade0f969d05857c0ef88fbfd1934129cf67d9eebbe24c73efd39e264ce3eedf1ffed9cdb01f477d1390ef61cc70cb1f67763fe9fd82681bf54f28ef0feadee9673c951503f67c2b16fbc3bb36fc7bd785ade08cec55131440d03f4adc1eee173fe91fd27a08ffb6c2f26ffe7cf493144fa8bf04be355497a4ca7c1d3c87482d8ff8ad0162e4d8c31ac6bf5d79847b14fecdb6605e1a75cc1110ef999149ff3d4eebf98622d40cc341d687911ae63261e3ccfc9407e913f94cfe1ba117108522e80ee3557eb96a67e66cd994745cdb361bd836d7a1824fdaf39d88485122ffe342f4a4e97fa1ec273f85f5d43d861b339e734e6a5e0c903aeeb48f2488db18e748cb4f57424ae66b5df50ff1d7d4ffab063ca3b3f132732eb16f87dae3bec3cc4909ac0419176871ee7bc9396752ace5ba51e110bfb9b1b189345c82514c7e4cbfc618d5aab1baf044ed0871caaf1b7baa31297cfb53ca65c0f779fe1f7ed58c9f5a96762f2b1323c2d3ed1aec571504c3909e51a86c419c01abbfffdedf44c358194cf9f1373bf63cefccfa3f98263e83dd3fad572283c6f493fb2a74eebbc29f3b5664ed7f84c715fc1750daad73fdf026d7dfe829a6e327d475bb2401d0e8ad7c785ac7f5cea181bce5a9ff34a10ef9e6a7b6172de01f2d7620ccc8111171d8a7917997fa3dffb023f27e6e79a23f636c9ca9b7efd52e6aced427e36d63f8bebfd91b89fe1deadede050ec81b13fd2f69925e74c622092f3caf1184b0ddcce85729627d7a5811ae859ffb391d73e713d34db507dc75dd8aecc0d6c131ab32b6b2c85c33e9f58af85ddc8ad312738db51e4ac09adf2cc357659abe31a4b6e1f5853afadae9c3bcfc83b67527e4ee6c3943af5caba0ef919deba47ccad6fa4dd833d928ee57373fd35be88e77aa67c3ce87f911d7c2a582339d6ec26ffbea5063f1bf6b1e738f9903582dee02ed7a4d41ef2f43444fdfbcbd2d0ec8c1fc4a111559ceb1917f57ac29e668a5973ae57e6763a409e7ee20cb20f5dec550809b39493bf6187f53b177983a7e162203842f6caba4f5e947a9ee098182a76dd5d8d1cf2d916947343fb4b352b97350bb7e507d58c03b42feb8c6ab0e57549f8126bc36b64266212e05963ccdc9cb061d8c798f91f54075deef98cefd6d783355bb24e8c9207c35ac981f6c791fa46c2488cb331be9d929b1167bd2dc7dbfddb78afa4b123c69b5e13aaf3e6cc5df94ff7ecf23dedfedfeec9f916a80ff5798ef2bfce5149dc62628ebc379e23e36f7344b82d3c5b0c39dec57f3647d182c7bb1eff6dbc27d25014e39d8d78bc0f7f1b6f011c78258ef793c75bb97f1baf922b31f74b837ee7ff27bf3bc8df257ffb1dec51f8dd27ff8eeb5593aad83d832f1363ddadda38b45791bb85e3ef5c6052a51f42f975c6b9906630699ec0596d337e6fc7bed9b920ce99ac6f30eec50e4913e2a2d4ff4b818dd0fc12ff21468c726ed398103370e7eb9aba3f7523bf069e83384aa5bfade5182e4bd95ff3c178a95ddcf0b1e05a90fb3b0d56126bf947e1d655ae5dc83a945d56e1ab86b7207ff80979d4b4cf309e109fad87c4c39bd378509f5af80417cf88758c8d382b1cac7f1df5cf30fe659c99f63be6d2aaff76400cc4bbf28eb4e7f4859e3e6ad80057ec59e2a6e039e4197d429e2fed3908ef89e3c9b538c3672c18e73b3a4be47a5cc5e073f8f1c4e6788b63b6f28334dd84e63fd50bb81e5bcf417262dee791cc5dc1bb626d24177d90be121b0e576f8c2782da84adef9788e6dc0ee59a97d83bf88d55347e93dffd6636a25e227c9756ef22e717ce25e5dd68b199377489f7ecead13a8d44bf18f311b23f594d9f5bf616e631e17b903710d852a8f12a3642cbef6858b818790983d6f553b01d3836e2142dd6d0e293d6ef19120ba0c5f0d96f43f77371dd29fe21cf2f63bc747f6d2db80744cedfe6d880f42ce258d82f6137e6bd8f90f99c0fa33b7c536acec8aeaf24560a629ced94eadea6f4098f06f9c7eb3d6149932aa238d8411ed968f3d48873713e7a13f295098389cf7aa67f3fd67e21721bcc1c8c75a3c00ae7ad5841ae452fea7d497644ccb3d00fa7dae150e60e2116596753cdd756624fb147d53819f4dee899e2eb9c7086324f71e11aa7ccd1a0869b6b493b4af5e6a41f5887927aec787d5705af65b9c795f57c53f37247b2c75aee02bf1711bf126a7ef5d3e679806b4ce5c5a55abf1c4f29c7d39aeb95780e7c36c6eed27d1eebfd84ef057228cc2981f979f66fc5bcfbd46f19e3f7a1ceebae771d7cde138f69394e460dbccca1889ff91d2fe51a157f7f365c877848d3f460b63f5b6cb53e3f9e29623da6bf947c4a315462fe6e7d76ace3e999f1bb8601f39ff5e7780d8bfd5a67a2d927e248091b982cba5672039f0a7bf6a7844d8275d8ee53f859c9f930facc671dadf8ba8eb91749c5baec08d3c2b132f497636fc03d16d4cb880bb8f4c47c44c5936fec641e13e24b9bce371d2fe61b21f899a881995bdceb816b475cc7843ef030415c8bbda07c4b67aef17c788cab58edbe99e3688adc7c49674e366f97d39946b8a92f3a733ce2b6cc8a06be01cf137b83ba67b9d4db07ccfe06f596c4fc2e39bfef91af055c3b769ff2dfd782b857090323d7f917fb009823a1bcf14a60365cd285e92756d7644c83f84c708fbd21eee0a350f03fb50d28e2f054ff2d8058adfead329ffeb5604cd6b4b96fbec919b6da0bda879cbf803dfcedef2576249558e675dac39caae46cc3f77b055e24f7188e4c8ad379ce96d982fc832eef71b6fbc7b39e73f88579d65fbc97970ec42b91f093c4f37c610fe906728225e88f4a9c96493d94f00e654e0d759aa3dc4ee4b97c8fc982fdd68add7e698eb7fb686873315e4afb02dca5f5bd80cbbc84ebfdea2e77d8a39c226fae7db0b0968679e85f2276c39c33c4d736637afb77e75f56d4cf2c6246e4821baecb9dacab42ac6a2af59471ebfbc67bc93c5c62e731e60a39ce6ef92c4a94fcb4d8c35c13990d7ac8b9e17419f7a8cc23e0ecc1a711e708f04399bceea2b081614df82c5b124e5960bcb1368ef1fdaa22bdf5a2759e384f05b18e593096ea34461f82f973c34c704240ac05fbfdcaeb263dcd388e137c278c3dfa94e7b4989363743f27f84c3bb9de77cf14b7024e724c3e646e36d7ea02fc8b259d3bf45fb83e70cfae32d62e3e72ae7d0e3e8d864db70e09fb4631fb46776bc6db27df8ea765ef747dc67737de1bf4703a7735348331aa6a4ccfbef21cdf83f415b18e91c54a3d00720ad2266c90bbbfb79798331c83f58bb0656a0efd9db520b03e8a3c22fd48c9c7926d8ae99cab16749637ee0deb03f280e27e21f76a72dfa352cf103e0beef308b515237fc0e768da3b060dfcc4c2987e717f4312132734f6c725d206c7cd3a55bd7e4fa0f56cdcf7b0249453623e5e93cfa219f7b631ee90d7bc372ae43a71248637b86939aa4eaedb56f4a1c57c497b91f9f53da9d7d7e26780fe39fabbb4e5f0fd7a7e86abf21deca049d8c59ed95e572e645da6edf9e19d20376392508e84fc5eb5ff6c2e7bdcdad635d804d03634a2e63bafed02c61eb1c5f5800fc28be23a3edced25f469146c23f44c904f6c27d4d7f79053ac9ab9b65e7b5171d0620f8875bae01a1dad65f3406b80aebfce5caa4df03b4d209f14b7c66c6917e2a1d4e7fccb6a176bfd6d9c57d3dfb3f2feb5730fd79558cbc21fc4d85fd680e8fac0f123389c888bcb1b26c3eff708638e316f56c89e113ed37e9f091b97db0b47d69a3616fa757c36caf3488e4dce1fae53fb20e39db67737ef914fdcade71bf73bd8e8ddf1eed9efae5f81166a901523d235e07e64eb60e976dfb1c0c773ae216389ca81e68b5bc5073e3ff06825ee3b6b6a617cbe72c02749e376ac297261018770d677fc3d61cdf2ee92b9e4c32ef29f848c9ba3bed879330f5c4afe7351ff346b3f9c34411df04d451dfa439effc527c6c5c992f5b89203e9f2c5d686f03611ea087e309f1bfbbac557d18e5bd7f10098634ddfcca66f77c59a75963bb9e64f06733d8fa5f6677b32eed2eb975c9f4c8ecc9f6052df8fafe35deeeaf02759cfa7faa75aefd4f22fcad9883dad6aafbf52d727ad5f695fe15d3d93dd54ea9f166129a51dfac5b1e6a23e73614f76b8c6c07939e53a96e87d025eab71a8e43000072fe3ecc9dd3d84d6389c7f7be602157a2818efa4d7c19275c5a996b59379bb2df9b04a9c02f16ff4dd3bf3255f00d5b5091b46d83b716dfe1ef54ec7b949fd09e08fc05a87fc403954b8128c80fb7442d058421c4e682f6c8a455777d72f441c07b50fd0b7e65c81ddb79ae7828fbce7a1f5eb331ca00f7d639fdf51c63295fd21bfa456119d0df5dec2310a6d3297e21b9aefd0ba8f6f94b881d7a85f7fcf268d7a881f5eae6dfde10a8ff21fa925caf5e786fd3b40ce0d7bc723bbb408cffe8c7dddeb3a3ec63c04da59d6fe6bda78d57f5b67dc5fd9d1eccadfe255a119a4f89e37353692637fc4dea9594cbd53ea35843d046cdee8d4b4531c032eb8863c7dd2e645f7e3bf9ab1a617b7f59a2af97cebf0c15c0af10be6028b8ebc2efa5d4accc06b66d81fea71963f6ee9cd037f356bc6d7f10ffddc580f84fc48a387f7fb1ccabd2fe611f6e212622e7646fa3e71f1e00367d1f0c9dc117f98256b010bc5f75671b18afd96b1b3f4c1c59a107bcca2f12cecc577beba5287366ee8bb4ef533a8b6a127a177a8c53c80e9d5e32d3167bfac6fd78472cff55ec690ecdf44d3a7bbf82a2bafd437cc7e0fad17594f51ea384d3f28b935faeeacc2a0f8d7b5fe928b3f78d45793bef05af8d6e7566a85338915a21a81f65b395fa55e5f8bd8c6464f03816988d1efb1c3d78b55c73cb3e4a591fb49ac7b4cbd56e3c058176c85bf9bf68388b4a48e145f60ef893b147dbb1cc3c26f043e3c2d863c873bce21b4d865ec89107639907566a17dc03556435ec397e317cfec7c0692fb9d7af4796f3ed631d9fc843a695e959026fa78a1f4a94bcefff8d6b39a3579c1e394b983855d8ce49c21e7d758f8f636dbc531e7267feeafb47acc4342758bfa0c5273d2cb7dd1da7718092c21f9578e391773ea7c2226380ae66d671f63fe3eeb352df650f29bfa32c53ef3ec45031f9b9ceaef622ecb967910bf1f44888f8cdc91bf5f283e146867f9a437277ab47de6484db2f2443927b40bc7827cb9289c618dc68e09cf20343f5de65350ee75c9e3006b83ee91eb20a3eb106bb357c9f120344004767e29309050a7ad3f5774749ed6fc59d2e5cf2279ed223de1b54bd69808b392f22fc3e51bf5a5f749c7739c8f8b3bdbace7bdb5bacfa92d1e8467421e68b107fa4163be151b58ef7dc28288cf3e7c1eab4b7e6fbd5eebf9d8e57be683123a378075f63f710f246c8304d7a078f677e5dc861c7a56c81cbaf1379f046cdd12f94d9e8c961c36f496895800ea91600318ab6d27ef5c8781fac845e9c7557991eecf699857f5cc21fd1135f78d632e741e19c2ca4afe08e8c7a0f87e9733b6654e3567ec0dcc850df10784cb9abfea9f136e6f8e675e44bfc7f3893e8f74ac87baa6861e6184d8d697b6ce6b901bf23c4b6cfd1cf8f5cd678041e0cf201e68edc99a8bb38f6bb373a57650b5fc9eceef33736b28fe55a3ae9ca8dc1ad48b01f99b9dad9f25ace122c76cb4f58b8beff29a9b251ba1050b5a6809cd6fc737eeed18c4b2e5a28967f2b28daca7effdbdc275227c92e8c679ab395edfe51ee89dc1fda3f12b739cc05ae17a438f70b17bc2e0e68c192aa6e85f3c8935656ffe34721ed4e72d357e712df15a1cfb03a18db2537818f4739572e0331df7560e387739f667f535a2fde4536a9a893c5cf5a8f7153f31ce77e7310e113401268cb3a79e378feb9f9bce377ed8752d71035c3f5d33ef2fd8f31cd70f7361c9be04883999d3e6177357f819d50e772ad7d954e8140207ede519ed4e616fd8675f3bcf3ff6512b3c5917af819562ccd67833d2f074f6a1433e146982c4a42f28cfed8ae36ba86d59cd1e1f18e32ff1ac848bce992f03b538055f26e41897c6d49a39f7718c1c03d76f86ca1800cb23fd33cc5b6befcd947850159ba562cc728ef1fc6c33d2ce51e27bd1f0635a6e04f254c4a92af30cd61afdf01cf3066b2720ae8c0eae9f4fcc2fee78fed4f752dbe6cc1dacf79bd66b63ff11e9bc9bebef3093f5ef559cc54d5bfb64e3cfeb06c6759de96bad81a3fa81bfc9ace332bafe27e99084d6a68b6b1e70a409ac87705cfb65f577cbfe5ffa373bc439437ee05ae7f28ad8d7aecf0a87f23005ef6998cb52e44361dc871f3874c4bcdabc67e3408be39b7d74b4af5bfa6418a3b032262d789c9de4f992f94e7b4df9533d96a9244644e97964fecf98b1762206c1bdaded0fab3b52f326299df9a2461274e74d0e8f08749760ad891c88453cfc6aecc17d188a3ebd728d00f323e69cf3752f7a9f2ccc057ffe441c30f56fe1594df67b548e2403b1940a5e09e7ea3663aebc2efb159cc7e41a066976978d9eb6d303730eeeb9c6c8f3ef39ef8d9cb47fa63a168ef7ea19edfb4368f243dccf7d29bebda198f6ca386127a6fa75e79b9e3578d7ceb16d2e715e76c4a1447db4920f93f9b7e21be9ec3f5aa726bf219d19e0b73670274be797d69f4fdcdba1d2d7f5c4eb60f3a4f9cbcce7e5538ca272098aeb17696fa8f524db8bf31dcf4c56f0bd543c28e609ab669f95b72d861a0e372aae927f44a9af2a1cbacc37188513eecf309a5c6c4adc54256fff3e57075ebb33c6219f86ad7335ecff577355af9126ae4f594b3857bf2fffd95c8979b0f3561ec79eecbd53d6795e6d2886b6d7b286ec930ed08ffb85394239877af625df3af442efff6ad3af39d9802cbe1267c572dc476dfaa4bbe61ef53bfed953f05676a94f72352ee13c49bc460f88b2ff94734cb7fd2d675d26b02bca354a4be649c5674aeda26729587ccdafcb4dea450be7e42fc5a485ee2047887de7d7f595efe239abd859bbbe96ce5f16911e88c271b6b04baaf36a3ed272ccd8a98a3059ac3b895a4541227d49cadd69fcc4d2d692feab2173cbe588fa0f048faffe8c156207fff03d25bf6797707cca3d877eeae9751fabdbfda7bacf3fd41b22a546c2b834e6903c5d28b6e13a44d6479fbaf775f759da051f24913d2b01f1f0edf08ce57ee244a951976a0d827fe3638d26c17c696c751dda4f737c6f2bc9bd2dd632e5a3d63be2cc6f70e4320f6183ff2d63ced4cbfa7b2cc4b810754d7d0cb913ebb92e81bd15393f936320c6db143287c3f1fa897a840ecc23ace56fa00f742df3314f41ec9d63c98d0d631b97a37fc8bd35f3f9667d5d8aed57dbf23e56cbc4bae47e25b0a39eac1f6aefffbe46afe0cf357b4eba850257017bee286b16e5e8699cd471b3196c9387f09e7fd0bae33dcffa54af95bd24e017c23b260e4fa901ff339fb8827b2beaf1308f1be2b8f76c476c750ef15d76781d45fdaee4789b5cd712cbe3e3f9f3b9a4dc40b6b099f39fb41c189be853dc42b9a05bd0a8a5e4721d8f38f702ff15d7d1f93ddc2ee76ee60a8e30716fca793864befd243cf358ec3edba0dcc6b347e6a408e359fd5063069c016b60e36fd28de4c8931cf77c5d31268d23de7d5a8a7728747749e372bf74b866fd0e679263019eccb9863b47b7bbd194fc0af6cfbc31f906e5c3d2c177534d0fe1ebe552bf47cf9998d24ed075c27a4ebaf09e091797f03cadd313f51c3d2c19977a3a32ced6e29c3de6e216fc7e7cbb5113cb248703715b8490e3877540fcc4e9d4d1e6dd40fd8bccb9622de70af19863867bc1a7acd53b57954bf5fb2a1a606d14f4686fcfd8c394bf9dbed3a220ce5825df52cf6931d4f037917c4ead46c53e6d4f5da778c61e465aafa7b57990ebe6407d6bf8d9417e661f465a1fa875e5cf56e277c2effa58c78c3154b14786ccbd89dc89b0fffe98f313ef9c9f10da3cf59a4c88cbefbcdef1de79f8479e1fc4e2f4b956bd76785caa4d4fa8e6c5e3b3367bd87b4297b0b611b730bd920f76a67cd7732ae78db92db2b2a3600f3b1efb76272d07093560f97bc6f5647e876a33b3a8a4ba83e4c398ab9c757eeb58f2fa5d10fe76ffc2366155f589d3f27dcdf8b5f2e1ee7e71fc39937c78d320f6bac4b714f2797968efe3a4fc4a7a6ab96ea2e2395ae234e3dae839523002e603e58d7291ff817cf17ad7e8456ef268672a178e6a0364ce0330eac2d7af8a3bbb24fadbc57d7d6777c7a509ebd5e139f6b81f92e274f6cd2e94d3f364ffb7de7b2bc781d7f5197b3c1b4f290f64c87e7fc837cb3526e6608b7939c6122bfb43c45951cc7c4a53d98fcbb5df53bd36806376da612e1bfb306cd45bce5ca7aebc0beb9445d3464ce4b4fa2f4a5e4dde2f3d7409b7bcacfa432d476bdde362a4cd89cfb3462d51c6c4c999b589e03c93760eb9513cd96b4bf1e8be1e13f6b1e099c07a16d5fcde56daa4d71a667da9ada0ee43f4c196af27b23bef91e6a3ee34bf8f3565086f5425ed18caf4447d12c8b70d31a5e41053f79749bc559f8c8db4aedc3fb962fe66a7195bbd136e5ae1393edfe5d0e6d43b9c08ed04f04930f762f7dffc2dd7226d596fde700fb04fbe485c889c9fa6d913718dea61fd23c7b3c685fefe44b9daac9f35f2613a3785daaf5bf51f64aef9c079d604382bc6aaa614e26142d6cc22fc8b5db65e03793cc535d6d96174f74cd067ff07feaed4fa23b72bf5ac143c4cd4efdef577c63bad17ac3156adef18620fd3d67d25718d8b3c73a50f803122dad29dda9bfcc435a8efee43e351fba03397f3faf9b6c09e67f79dec93372e89a7f1ca1a658cd195e785f2ec572d7f6c8729e5e7f9790cefeebfc8cfe4061a3fb95e3f6f705f908680da43d4c0d6bd73ae675935780fd20b7fb68ac246ec49f7b85cea79f35cd7583a3aa748916e5c59abddf483b498146f1b57e1051d7a26e2baece29d796f86dfc46cdf6190748e5cabf6ede06c78bfc8be7ef627cfecd7a7bd07f28338ee7d7b27feb027bf8e95c117b971fd27137df870c68f914bafe2f562717d57396fbfa9eb7fbf2fad5cd168381127b1b286d1f785df0bec86fe8e7ffcbef0777efc3ef185c0f7450cc018cd37c25af61e62e6e3e8cbba9f761dacf3bfe2bfc7ee40e0ec4ad29271b907685d922ff3bb7e76c0a3e87543d3fb6f74d0643d8aeb5af346ac01e7acc01c1839fad771e5535fb7ed91cf6d3f4b3ff5efda606a2ded3a87395880ed98321e90af5dc5c4f9bef1f6ecb756b53da09ae05ccb4bba0fba960fcc4d6c99a015996eb6c4c320efb1bb7c833930a51d55fd7d4feb05a467696ab434fde23cdad039d869d67a71ed9c1a38810cfa58a60a465b5e6f55614e2e018d8604f6cc5cd6c2e31bdfc77ee9e01974c6b565693d4975ac0531a09817911f8dfa9ce3afe781b9bc2ab6437b0f6d4a8cfb67455cd2b6b01719d6d8d5b995fd54ca195090d66d9254b0f79d4e3810ebfd168ede9987448e93f85e26677d3e002fe7733e51d617ea1840e1acdd147cb627ddfa993166526bf358cf2e8e5edcfabefa2dbfff237bbb992b45e6762ac6f77f796c6f8b07c2842fc73ca66b3de784bfc9e5580f6b27209f9b3993a54fec68b56679bd58d74a53fa769f381688691f1cc0c772bad803f347c9e3da7cbed82f9f64ff949840ce053cf798f57d354e54efca3dab11cfc9c5fb21073d1b506d0dde47b3deefa5a7a16283159cb77ff6880394791d279adfd0c0708abc26ee7135dfc079da47fbd0c4a9a8b6e0cc3e61266c8bace5d4718aa8e55f07eb2dc72596b445f9455beb884159a0ddf494fbaadc32dc8bf57fb0bee02cdea87e65ab0dc1189c7de9e570217971c435761ceb2c29472db4a7a9a74f7bce3fa8c58b1cf5f4fdc33f7d7fc1d7dfb47f9f73dfef15e5b7bc21618dca77b2615ee4538debe23bba3629f969c5b0add623f706f0d588bda1f50168b6ad5eabe68bcc5d2a6b75c5f9f7d8a8dfa127383ffb033fe3bd6ed57f279e4ed098f31f68bf112e70bd75477779473a4b151b92cbfd79f314ed237dddc3f9be96bd005dd9c70cf92ee92f487e77cc733ee8e7ef3d96a7918fb9c9fc45f17ddee15e17f553faa1dea7ac6db18f64d49fc3fb79e7f7c31c375170957bb9d70fe627581f19730ec4b85e2aeeb7e39eb8974b03577bf01817e752fde646bf5b6efb3a579c7594e3e17a0ed77d8e3cb796c1f7596f69ad8a7a1ce409644e556063a0f6827840ddffd0723ecb39dbdeaf35f5a143bfe753638e6d9e63eb9d7a2d9ff2faf75857e0e766ee3598773c3f154c29e225e277aaff3ee0de3c206e6fbe646dc3e4f0646879a4c51c7a0c165473f1f819887f8f7c46e74cb508f2810bb25537e6b9bef94683f357cf5b3cf8742645bf1b1c3ebbabfc6c623675e6f09c819cbaec1512f85fbe07c5083267ca9cb7386fb02e65ce8a3f271baf7c86fd19606bb0476221fd70471b13fd8df4d295f845d33dc19c1bea15dc8f43bb0f3dcfabe479d59e8338cdc0af4d82d8bf2c1ae3d6bf0f7f53c7c0732739d074cd1ac817512cdef5bee13869e1cef92e1ffa1968b648a9ddcdff03ad485be2b67cbd4759c985170f79b3ae40783de227b29301f1f217b2c778a8e594a285ee1fda02d7ce3db3a0ddbdf1d08e5c985726135ce5d01fb2f7475a1dac9a4ec857c09e47f2a3cfb5cd113eb8f5c2dcb31e9f43c591e3baa850f9621077c5dffbb8ff5edca17d2e380ef19df27974431d34fb9002273dbc1bffad141cd7cb78d25dc62ddcaf95ff116c3707e6b81cf5e6f5da8fb7422b43b755e25c91df95bc84f7d880b9dcd723518b7cbb7ee8d73b9d96babeba1b34aebb14f3816709f9b7a4470bf53deae1577ae190b35fe8644e64fd077c1f590b19f6474fc3cd40e85eefb45a01c45af535c7628f77833df686d35a273e238bb8065bf27fad39d6843518eaef905fe5c97ad5f51ff2c74adee128f98dc535e073d9035a32463ee67a7cdcf481148e51e97f78dc4b537e48bc98786f0fb1eeb334f96fd5eb312ed91ff29a3c2f77cf1a7fccbad4edce1d6f30605068fc166322ad0d638a7e1e5bd1ca53321bfaf2ccd84adc6deee89ab09237e0a552ecbded1993063ea5f15eb73ef7ba7bffc2a11117d71ce77d4ee729dae87cccb15467c9fabcbf4ca9df4c187ee681a0b50afb91f46a64ad887ffb975a35f6c8b186bdb564bfae7cc7b5e113cf1ff57dadb7df684eca5c2e7c2ff21bb896fcba8e836fdeeff11aff45ab5ff0298c88ff7bc13eb09772cdedc7f1e0182ebcfe35ff3f917d1c0a0651c929836f3538a9b5022de75854d2ef857e9897cb3f6106ac23f7f32c457cc4dab59a2e229c19e1e02ebf6775feaebb7a1fe77f4a9deb52fad55c93ec0e34dcee9ce23c3ec78c47e2fe4b3759a3462bf3ab95c4d2f82a87e9f7fb44c63996a8cb621ffa84fcba699004dd0838b816c1fc2fcf1db7e9cdfa83f67c3dcc0bcfab89fab1e6bb1a07fde3fdcae63ee59c3dd4e9248e8bd61169d72cb7ff5e2bd1f340f79cbe3963900ad26948b5b8ebdf72efd3a0a9437bd3b0009f777d17f35317e3cd4fc4ce76029362bf4387eb53c4179b967cde259c2fdad0b977620e57d81b5c0bfffb7b38410f8bfa1e1a31006be9cf250735d79b12ae6bfc38e6f855ed01fb1f8c597219714e36ae8ac799a8a3f9e0f33b4d7eefbfd93fa8a5b5d5b338f76d995adebc897d52387301236ce8fa8b2bd66e290e94ab51313bb0874f123b26d6a7d90fac2b69089ee4feff37bbb6d2f5939ea50693c48a24fbdf6cef7ca1c101f9802562ec585fa6a9d3162d2c5927de0c1b7953a87349cc87ade0a5349d5b3853659f86ec4f129a35b84e94b3a32a989f5d5c23d1349d9f25477962cb3ea50df12195e85bcbf1483c4cc2d850cef11fda35fa154ef615712d64fe939607251f46620d8c9ce31ba9c1f468f55a7044c2affb927acf3036984fb187c4f81b781eb06b8a8ed48feb54c16141cfb75a0befb136d032de519f82cce7c1737e4a0c77afdbe84b17f5eedc0d283f72d3f323fe10e30c3b905af527d2b2215c2c60bb88a7ae18a206cc41f94d24eb1005ea4c39f2f7cc719580c6420cda2029f609ad89331affed8f29ef7ce46b601d8ceea7f06d1798fb92385e1103cff9bb19ac27fa6e22fd26c3d3ee8b3c17997c0e17ea7fedd76d7c3711f56bfa2ef4afc6dfcdc1dd98456c8fd75e6e4917193fb78e06eb98d2ef157c6ecb73e8df155c98bfe47763c6a08e03d698bc7be6a1972eeedea5fade9023597056fd076ba584bdd5b89fa1c4ca8443253c8ca172eb9cfa4144fa9b3ef73ff83fd4b6345c10f45f63bee184fc017a3cdae06552f5ea49c3e5cb8bef341c318f3265dc6e1d770157cccbddfef3aae948c917486c4bb578271be25b1b15df3e9c25c8c16afd32a5cd4ff47a48ea68b910388f4ea226a6d8248eb59788475bc593ebd269efa3276ec175d46ff64e366a00b1ca210cf1eca037d0b8c3b27ec23eb8c1b8e24fc62e4ade0ba567e28ed3d7f4eeed2ee853b768c4e5552235eb990b57e401f59e5985ab106c7cd10fdde03cc7deaaa5f18e675fc8f99fe57631fa460bf6e4735fc37b27d47588b966d0e49c963cb009f5bee3355cd2d4e94aedd5a3c97957b8677746f16be5c8b5c66b32af3cb0b5c37c47676bcc6ba918868d7c656ca08f1c11ae8db85c50935aec69e85951ecb52dea46aa4fde15bd0b06c769e347ebde86a9b182676d1a7e66cf407f98eaff37a187a1d8b2593675b471dc4e37ec277b6ab59b56c792b8421867ac610c8a4fd2a784fde41f9381de1f25debf5edffea64f4abc9f4aae896733d479cd69ddee97c644abd7287c8142774cd77d33dfdb7bf1846d91dccf0dcd2daecbc6f75c8e2d7c834683d755e597bee6cee447eec139dbcd89ad70515be1ebe5069a23c8dda5704fe6f642e640a9b753e4645b79077dbd4728671e786fb4218d13d619f3d20df35891fda33ecf7cd41db6dc43ce8575cd08f7e0734c7269e166537b6409fb5f649afe14eb84a1fedb6b8f78b1a77a2deda29e354f0decf493528369c3de31bff937ff969a61b1f2aee2fbef6b1a17aa8f3d27ec2fc495bec475c17a63db583ef179dde0df2ca87f58c360613c13b9ce7abc1969678cd426fb947563c8c3721f147c06dc9f6fa7a67ef1e5c9005d14cf993e3c71dfa0c93d50abbd3bfaaf7b0f21beb931867bc818ee8ec4af708d99cf2ae0b55170035679041be699cfcddecc21f2b96585c37ce7828b25547a9e611d120f5f1e51ef95df17e709e28d97467b8f37e48226dcdf2e382e814fea9d6d42b45072a5c065b176265a0c2a39e836034d93afeab3c65db15de8f949c3d16d69d4672e3a2fbd367d19c149a77200caefc4c485c3b1f27ad8cefb5918d30b3eeb25d82bb1597aa573dda2f58db1e5a3f4176bdfa43c7b4d3fb6adef43f2c9410c1ee15ac80e033fbd8e9a3e8cc27734c1fd7da67ee424bd0e744c7671616d1d63a2d73121eeb363ea9fe03ebbe484f8ba3fc5b8ef346a18fd664d65154f1ae79bd87bdf3c3bff5e686c62fe4f7cbe667dd4a4ed3b62ccbec5ba45e77badb26980bcd5d718fc34fc2ee3074f2b8772fadd7a2f4d83d8ab623cc773f15e51334fd9e36b79ae1fd027f8b37419d36071ff4ffd3de897612ed3e5ce53fa7695fc0af9e409fbd97a3c0198368b7a4af2ed9478678c64a0f90a17d6e4b659afc355f39fb467d6ac83abf04e89ba74d90fe6bd41a1ed03987f9fe216c3bfd567a082bdfc930f919ba24a102bed5dd8de57de0f3cafea3a883f0bc6744a4d35d05b839e6d7f17109e146221c165083689b4d5347c18c50f52171231b31db2ebb3464d8ff4654e11717342dd8475e0946b09cc837e2d059721b46a54ac17713a0556f8aa9fa7abd8ffb16fa2c95bd53c27157b7adf9fc3797ca52ed2e83749249639e43c7d25b994140ca99ddef9baf77c9ceafcf098603f722d10781f9d660cdde6efb2462ae79fc0df54f1379fc1dbe63368f713d17ef19a6ef397a52fabfbbdb768d0e4582b345d3acf7647fc6ce07361fee797914b0c3369049f59d72976749d2a7c270b9b6b4a37df786ed4c4550dde2687496c2d8c58b3a3c42f55ff9d31840d1f48cfa96e3ebfd54253309ea8cd70248ebebc927ca53c66a3d11797c5b6c24da0d9be62588c742c40f00f67a5fa0c6abe7a6addf391c5b795c663bed8cfc5fe8eed79568afeb1f0ad27341fc3287984bccde23c176b2736e99e51db78d28ede4315f7246f9febf6c36d5fe49ac2f430664c77e20adbaec501dfccd3bdffc5bd7d5f4bc2a0d8ee8e78b4ea3340d9f7d39993eb5c4a5b89c5f10417f574407b94631ae260e61e30ae1d20766c8ad89e458cb6e99d31ae7feb75ce76b65e3b283abed1cee3a763538d169eb9f893fd3bdb0d1a7928f0759ab9233186e414e2d959bc99f4beae2b9dafa884dc59785b71aca668f665c82349f86c9547d29c68ba41fedba11d0719151f41a3173be6fc54cb9ebaebc354ea1e562b0f5fb7fe2d3e139cd5f27915de15cf96f99ea666327c2792b9d347b58e41be5dc43e571be7a2d7293807c53d65c405f9d6cc77ada3827ad61f786d4413e2cba6fa6dc59f65459343aaa370ed1b0dbcd0379fb5fe4ea9852abf43ffc2977365fa77f80cadb7d62e1cbd1f02745294cf9477243f8b6f7903a70bfcd7dfe43b60ae3f89cf28acf2efb8852f625d30e6c93f3ebfea58f55954b473fcfca807fced332bcf5550cffed08f910bf87694e3aceefd891ff6bf3a3f987756f8a9ef6da7c27590704cbf1cf6f57ba91c8f2a27972d633f25a7cc78499dc7ab376ce03534ad63c608e3bfa5d619fcbb10fe49c2ff5634469f142c6f5b9f24e37bd5be4cba8e8c41f4fb32c68cde736abe63fefc1abc75dfb947be8e33d329c7a09ce7a8fd62ac49432f4b97fd5fe06a615f0fb0c273bd46a2d4e8414745c692e097cef578a6914fd574d4157b88351de245d6f9ca7ca1d572b797a641ec7f2c302f09f916e3aaf7934b8e6ec85784278911ddb4e260e68d786b266dc7d9d7b597202752db69cca9c437f247a7ef39f2c56839b1a81c4adeeb77c2e2755a3fdf875c0f56b92e66b18c4f992bbddab47ebe260e40ce471db92f7d35dcdcdb0d6d5ded3ac4b5bd743dee99698b8997ccc125f5b967d4cf33ef9de47e2ba4fe53b3cf9175b68e76d0e8b7f5b7fc0e6cc57eebda48728ea4be17f57eed2668dfa4fdf2533e5fd57aa0883b1b76f21b8e0ae5bd0abb24d6db0771623c56f2cc69f8256a2d0cf88fec907a97cf33ee05faddf95ea351e18c53f60fcf17afc9f81c334fdbf42367feb197363b7e567408ea77069a64e6e498c7907f9c31276b7252d719f3a8cb75a87d2e79e80a4513e85737e0fcf5d4a33d26b9b6b5cf3bcc5546da0bd146e1d578feeb1aae9f83786e96a67737c7abfa7a1a475447f2ad2317bb7c3781dc47760b4f607aec489f44aca1a79ff2065a6fbdbd49641e41b19346f08d6f093d3633f47996c694f27cefc11b6b679a72ecfdaf967aed01e3ef28619d7e9153b8717e88e6d65ebc137f42916e884fc258ed02ec0f0bef7148c9b386e7597d9783e7fcb9a211170754b7251cb7a9d807d56738afb877a4f873e73bcf1b3d6bf2dee04fa7b28f4b5ea7895914ef43e70b10fb856b237d954733aa02c9d756715ee393628999e4ed6ee2df686c7fd86e521da67ae94a5f58a9874afd8fe667c3958bbfb50e57e25bf6ecd2fd3baecf31f475bcfbc4eb7f84d66682fef675e9e4a859fd2e632bf229ede49df44256f2ccbd710e360a996f68d682b5e7eb54e11c710057d2e659c7139bd67d98d018285764302e5fd5e1031f95c7be27de05c6e4abd813d454649c1bffeef849b8027e87e9c16d5e53d19cec10d66c61405dc68f37ef738c6d9756395670a3c0d19a76a97fc7e4dc5a3c31687ffa49ace075848fc89fe54e809ae453d6e3e13ce0a8240e0fcb339ed9b6afd0ce24e9e60076a9b8b1867c5a8ea57dfe977e04d210e639392f6bff5268ec88bcc23df69c70b4f2ddc8dfa4d72b71d7a19dba056fd7057ecf243b1a377bc37e1a6322793f3876d0d7c6f91ff0a1439ff868ac5f9c935b6ecbbb5a18680df7598b106af8976f38a515dde7f4d8a51e75b2b54bbaaed5abdf958857441c08397083e66355af2bf0338e1c47120f21fb8486f43379dc5cf3d9cf64dc867e33739c9ef9b3f8c2be2ccd59913137f705356a272be7faceeb27ea77308fe5165b9fce1be445338fac650cb98a6ae5102f5d78244dc925bd678ad5470573d5dedb9752f6c6c9d8784ff729def8b7e682317fe5807166fbc55ee191466c9dffbe961a915dd4bb59c01c96178f7033d6e9104a5f86d69791ef02194f120725e4463b77f6cf16b618b4bcf6dcb3c55ab96bc79331e27e3354ffcefc7efc2ccaf5ed0de21f13436a27f81d89d32c808f6f47f3ff5c85dc9b3afda45eac847b6285cd7ce0355abd54ccb14075baf4f08439894feaf78b58f78ce761988fc28f19f8544e61315f36bf5bdfc55a23687f25d8cb0f35fb88f914ef7e97c77abe9e7142ca1ce7db907e6fd6e71bdc47f83ef09bdaf741fd73f8ed943ff3b7fe8863ff6d5ed17dc1ce53fcc7f8b903ff6ee84b4ee16dccbf13b960c9350cfdd029fe3e3d5d039d13fd5a34fbe49ca39663f1df4cd6de546bee687b3a096be820ff978a7b31f837e4bb62ef30f0d8cee2bb1c28e60a4baabfbccf1ce29e45dd19ab78537031305755e9705d2b7687b36477cea96e3a3f315f1cf8448e1deabc26434d47e73e2fa0f4195f5d89e1a2e755f662caf5eb0fc261c938aa605e7ec6feed023dcf65e49aff497ec62a7e11cfbedc6df6ac034d6794f41bdefd1dce376837433c3b5c1027901d7ef71b716ef6d067da19ab3b9efaf28b78c9fc48a9eb408cc0f5bd47c2e647b98c79249ea15ac5c4ab9e77428ed737945beb2e194b22f8e1ebdf27e4733f0afe76a82d601e6c58ec48835be17ce09e8af8733ed77c87b3e7785aee72193186f323dfddaf17a839fcbae87e72efd3339ab52c653e6ecd7c008c197b89a6bcd7f7138b725cb371d8e8d73bc49453a5b365b9751d5c6b9715712854ee99f2d6de5bcf15fbd4baa68dba66c5f78673e8e6ef28c7b561ee4b1ab79f400c1565452caf534a7c66ace38e29e74739e6d568437969bb88038d43d4db97775a816a6d3377e366eea813214fbed40ff4a81646f5dcebd260ae52781fd23ee03901b13aac735103400d758191b925f3ef7af51dce4b308667381d08df72eb7eb2af354e9c2076cd70d87f0f5e55ce49d3cc77b1921716f7337eba9ff0b1aba294f75b88de7afd7e657dbf6ecbfd6c713f8da3d7b77ebc1f6a2ecafb61bfba7abf61df0962e7a2df0ff66c8e7b106c8bff9e34b06bdefc748f251035a886ce5d4b2f8f2f7d637bb5232e29c24ec697dadee8780805db8071b3bc3f7e9f7a37c5f715dbddc8a92bb53ee621c3dffe9138d41de9e14a8c79e6824d49196f0af198d48de3da7eed0fc60660f2603f16dd3bdd9a3793cf27b5d6b48c4247e9ed743dc281347059b324a65a2a61c7ebf5875ceca2b6d4bdd342f8264e438d2eddde297962bf2a9b3c69ad1816bd5eb1bbcd55ae2e18e358d9c3903f1a9c745ca8c4af5e5a7eef92bf0531d3e453f6b0e118908785b97b33c95f389f13f721e19d9f3f4385eb3732b83eb158ca3e64ee5d7ed473ffe057b19e13f057419e2c567c7ad0cc7d94396bd49ee7f3d3cc9953ec45e7f2e339ab7d76ff08f896f01c45cc45372ec4f714ac67554aecf4b84fba35142b7c30379c322f0a5f8e29799794cfe784719812ffc6fb4ce6915143c15dc85c69bd5fa7c4ed70257f70694c2eec1bfe2d87184d2f80f5a3f575fa909c6d92eb3446ff857932ecc39b17bfffb4deef737769de65fcab85fb2041bbb063aee80bebc8b880d77fb6655fe342c4d4623f9f8963621efd663c9d27b51a58034f728d721f24e2dfb9dff680eb665220de364ddf3fff912396716bb02e42ce0379b6dbfc2efafa3d1dbb0beff7136bf91b388b4e33b5f73c893b744edcf7a05b9dcf66fec41b99184bf8b6c7da8586168bad5fa54d506cb3884d426bb358dc7ad8a35cbc3fe97b721cc4cf5df49d160af641cf495593cf3b9d73b45d3ef196c5bbce8cf60af6b78595a33e8fc64fe70dd558b350f449a44e09e27ff4defd2afebce3ed25dcc9f7e7a892f33e3663313c5f5883be5a70af717f4f7af55ecab90ed1db03bdb787fd3ffc5ecbdba1bf2af322e2dd9832279dbe700e0d3e833d32935a1ae0b3734f547e96b9ed427fc7722d92565ab78ecb01d35398a4b9ba1eb3be49e7d1d0efa361859b7bc49a68d88ea55c8796721d889f6fd2ff50f06a2acf43bd97dd65199abe13887333b42ee750c3838bfd24eb1cd1a4abf4fb0bbbc6dc8ce45367bf3fbfe3131663af365f74367916f7242975ab09d7a502b5d787f66c4578ee58d1f2d4eae8b740ed1b8ffdbef27d88dbc57b56e201bb7f438e06eacbbae6bb40eb41c31c42443ed95d1f6aa3d74ced65c135fd87bfabf608db934aef3b2bbe3c47efa15d6753b7d9ab86b803ea3bdb17689b69bcf9b0afffc6762ef2378a0fc97da1625dffafb1d5887b16feb1b9de516de3c8f75abdf646773869c8bb1d0127ed99cfb81efcd7c67bbbe7a9dccfe21f6239c8ed70df2f6b83a727e6479d39613f88368e37927d24b8af447cf168fbc439777e32beeb0916fcc77f82d8a9c2b1ac13797be2d44fbacc99277b5e6dd6efb10eb3ef701f73eb700e742c7777c67a952f5c175acabc85417b2b69e8692fac62fcef58f1e2b820ec6635edb6f80d98c732f714d3afdef0fa29e56c5cea058d8bb883d78a09c3b968c5c3583dbe5e3e2a9a5cbf4d4c440333a5f8eda9b88eec1995ba5b94539be17f09577e4e89b39df12efe06f7c6ac797662cc25d608e98b146f727e719c09e696b0d617c33eb163c63a34f0ac1f0bcecdc93dc31c816f3c1f4ded3088d5241749976b88e27d297926eba47036240ad6167d54ab97debd7f3c479692ab0fed1efa87a45d67729fde3e6ce5b6424c9738dba576602ed6656df313c25cd839e9296ea59ff844763c893f578ce5e11a86f9acf3815b3c7edbdf37d638f9f70fca3322deab27f15efa3bc458a244ed6d0527a8ec017e9f1a27797ee5f71a37b8a91873d37ebdd5a8d0f5c6aa3e7fe659dfee0f31e6fbfe899fef110e7a6e2eb42f851ff799506f9bd3a1eb8afdb11e960ee9fead8c986c3fd83cabe7aa9f2d04d73773790d1bf69c6a2b7cafc5fc6a8a1c523c9d537f5c72fb9fe411a416b5c46e558cddb28a9035529b5891d4aca82774c5fc99c929a7bc9075b142d29d53718bd6f51a683168d2d7de25c75989190d34dcc8c197fea749faaf381f01d98ac7066e782d6205f8cc67cc7c6c8603edccb4e4678ed9c0957de55257ec4af7f52bb22b522f5df07212efabd8cffd4fa95fe70e941e62a8b3edcb81f2ac8a9f9058115eb3882fd84bb5b314ae0547e3b5b00313e3f06913fb0dbdd6b41fd41cc4cb59f26470cd6e1fdd73b1753dc3d3f15a59c031356bcf45fea0d99fa5d57099b32e36ea3542b997f538616c7611b3fd8258d7e675c5f3e3bd319eecd8c48ff399c2766173e4fdbc4fbea94df89dd52ed6ea70deeb89792122c31de66f8bcfa2d143a36b7dfa5c7b833a3bc71a6027d90784b85bf339edfefb7ddde25beccd1d77fdcadac87cdd5e5cabe5ef53cae3f0fa78947ecfb9b6c3e2ba6a6f8921cff2bcbe9616f78a3d365ced48b38b6d6c23e7a1ae3bc9c3d3a677f44c5c2ba3eba07136732db5b5ce59b9b6b4052d9f5bc540d12512fe9dca63ba2e9953906273ec8112d71ae91ad281f65defad70798e9963b6d8ebf8e9d375e9c4cd7ba8b6fb5cc7c76db5d847f10ec966f4f8dd2e447d1a700d4b9ad7a8df210e702f635cc14162730e8796df339e036cf6f5103674a9c539d6c08533a73ae356c8bf94f78035532006bfd70fd2699fce2ef1bc6013ded18f2a595707c6f5c0df117da0c011463da3fe6843dc08157f8ff081e2be77bc8b53c9b32df6ebd7b2a97b01f7d5fd0189dd47fc8e572d88c35ee0b3c036d1fba3feb267f293ec0dbf33ff0dc79c26136d6e2b57eed9b8836b96fa66633157a0e998f0f7c82ed79fe9dc8fa20e45b58698cebd553cd1b44797c9bba615b316fd54ea1ed17b3d96f57a5279a20cafa9993cfc698f05378d177aa8e1770d4feb7dd6790a7d8111c7dc99187b51152a0fbca825fa51e86a7cdd942b85777a157aa2ea35a2fff81a266b9d629dd33377f7bcf4dbd808893f1e736ff81bcacddbcdebf849f33afec7d29998222ed2eaaa3036faaee89753fd466bb344dfc34aa9e72861bd2061d366d97facbf863c88cccb2eec9667504f043f17eb72ae24f721680c0bff03c629709f32fe06df83fb2bc4bd507bf0f98c98cb50e225e25b6e04708dc8af182b3af609436ffa3bf439b2f7ae9e17035e32992f2f89bffa1c1307bc3b91b80b61c737f89db83be73d4c1c74f1d9234c5bed2fa23fa7f084090e22451bf78ff093858f54aa3dc78c615ee0d93213b93a0ddba7e8304e2bc2fb7b82030b6c443d2f50673cfc211b2b79e3418baa8eddeab949c605d70c81efa5947c66126fd7ece3b3641f9ff8ec8fd46f95f632b1cc2f89d55431f10ee9657cb5f681b10d268e07b68fc3f51bd56c1973c7beea0aed6e54e59c839b0d13f6f7c9762cb2a941eb85cf25c17d8b9fa71bd6fb877eacda3e08ac5dca6b17fd55c45cb85273b5641fb318b22fdb610e2a03f77126cf02650cb8afddafa5d459a8edce1efb8b8dc87dd6fbb82cf6e71f66cca9567625e74a9f725ef273fc2dd7dca23e69e01da446bd4739a8b1bfc37c69daf565fd81629a80f962f31b736635e206510bace8fc58ef0cadf76c65f0f559bb8ffbb81cfa6c673247c790303a49973523b277837b87d382fc90aeec6165ce93a68d033d17837a100fbe56c78a7e5ff8ba023323e2dffd9c39e3a69a3d02fbcabe994fd86ec4fdcc98c7284b484b66e1a59cf34fd59a3d6275e63961dc137e5f275d47c8bc90dd583ad31b6b5c610d6869dcf7132afd715d19dff7be704ca85379b828f65b3c0fe34fd9de35b964628bafa7f4c7863aef31bed39ed427e673a1e0f1afe63dd6fe7aa26bdaa5820954aea5681dc39e80675b3136b6c9430479e040ef4116e715da20954be72167aef529e5ba2bc606ee0803dfb3252f16f0b4a19ee8d0b3163f3f573525bca22db9bc5e642ddae0fe492d5f0a39411cdb96ae1157fcbe745ecd4fa5e70cb0d7f85c3972a92f77938e9cb3056b11fafb1262ce2c19146397f20d627e85de44e4d3f84f8c9bdd05cdbeae6e2bd65ee79404fcca6ea29f15c8add63acec83d498cf7e6e771668cb73c1047c17d6fee2f5eb7b9d2af3fff41435c72ec25946b9f937631ef07fb9d6b898f127305393363a7f95839d9bd88f86b93abace38a7fcf71fd2bd77f96bcfabb895607f0941e6c05d785fec1a243daf511fa974ba9a90af90dca1fd9581bc8983fa25338418387657acb658d97ceb60ec5b305e693292f93c69766de97b04aa405a8f6e4395a7e1dfdb3f9fcaec63f56fb9f71ddd3bfcfe1e8f4c1e7f4b84f780ce6f62c62c1c734f4ad09f1e81d64cde5d09e53b6ca0f992fbeff8ec6e5877f237ec450d391edf59b9f07ad3a9d71e39a0d5da7ecd9a635c33caa37d92f4767c2d2a11adbe991752674dd69a5fff372a19c883c7bdda1921f6b8ee7d6ae79077cb2ca35813f63a7f728e7d689c6f02efb67aedf9de5c0e190f26f8ecb5dae624d1a3e49c9baf1777579894d66cca17c36ff12134e9cc7979f53e264a4f8efedfd4a586deefb506b02c20ff4474d1cae1a9b17eefbff53ed76192feaf8707457bbb50b89bd6fea85b7f7ba2a754277ded46ce6796e70342bf3aa68fe16c4c9fb1edff7920e744df6dfcc83585827aaa777986f9263945dfd2eb1bed0135a034b23a6b524d6c55ce6c4a1cfca210d8feb9130eea03f1cc35cc6578e630bec675dc7139b350cdeae4d1c00d66c12ea0733e89c580b3e0f112b763de66c76790f7ae3fa73bf3eb7465e266b5d70bda909dac14e1546f73cc65e82dc71519ffcc76b42beb27570553d74a81d1cebb851c4ea8fc6c49839c8058b5ce3cf5162ca789a794810a3110b2c399c4d0b93d6377144cee4d83b8439cf459d4aab11fbe47f297974d8bb36632be467d95ff00272bf937fce9a72eaba04ac00d5b4a9c784736bb780f984f8cc3a724f28f32e14c0ef59b93bb2b74b591f05ecfcc8c1f83b59d2d997befea7f5b9a455e37c15c79a866abe8b356c22f8a87fc967803f7c939cc2c0cde3b12e6878a41e52851753e141c33e3bc19f09bd4b4f86ce4d29eb4021fbb07ec65ca3ac0db34ea987a5784fb5f1102fd5e61bcd5425decd0ed41ff4b96a705cac47cc596a536f0fc79fd9ae2bfd7facfd906ec65ccda11aac9de54bad30f1791b1e14fe7d9a686734d851c2357d04affcfd7fabb9a6fe473cd7b1dbb1d0267ce6ba1d60df4a05c7e4c8fa28f2492c8c8941f6cb17185e9957c61cf547c871f461ac6239e61a975603f348feacf46b556e5a0dd71f36b48314dde726d78ec6e9a3e585e7ea359883b5c3b649d3b8414e20eec510dfb5957debd7ef7ef1aaf72edceb40f5fefc7c1fc507b213ce03ad05ff6e6b1fd46d654c28274be72cf63ee0998cf3c15c615053ea101fc023f6a593bff068f588b31efdd6c36778d371b3340f77bc60b51d85fc366be647b6c06d23e69271037c06ddd5e76cd1eba89cc3d4ebc7b8864a99774deb9b71b9f53a76dd7e303fc1399a2de80cab08cf2f380ea9b6a2dab528fcc498674fd8464ff868143b28f827e6dce21c87f87eb3762e7e9b28f19f71af5ba1f111db1bec5dd959cdb3e1be4eacf83ab24e2cd6408373866b2ac06f79f75dfdba6443d197c3ef8af7c2583978d7438d573596fdc86a9f57e319646e34913c3b9aeeb8e43bc567103dee9267bbf643e477c98750d6a9f9dd77453c2bafabf9a1cdbe1badff89fd65159fd68839352dcda4d4f158f2bbba1e6fe3bb5a3d5f8e41cd33ddbf1f38b3545f1bbe6b6ddefeebdf7eff5d1f7379f85d9a6fc483e0bce077e9ddc077c917a473467d37d6016b99c565e5e835c6d56bcfd5ce265b89e3352cc9c169d33cf79c40dddf707e897d0dbe006a4ef86bb6cb071d13a3f4283530914d0e56e2d5d56ab088db9d331f7134fd941833b42f09d5f57bc3bbbecbec70a39c848e8f53b990c53ed7b89091178f7b43bdf44a67f68d7b7ce7d443296c9cc13da5b8cf8bd4fbaf310d2bc197af7c6eed943c14f4d907b7e6f950d4f105dc03ec9ba99fb58867aeca52e5b78367157df7cabcdef5808452d3c5ab9a3d5afff1dc2afebfd29348bd67bec2fb78bebb17ec05f55e30df15c7f4ea59b750b529159e6bc8ff693cd73abe81cf43c2b0d8ee23e7ca09dbfc6636cee1a40a987f44e54b2c2ef36fcfeefe39b8a9d899a355efbb867f826b0df843573b1d1bd0c0deb84d0e026d5d5a3a5e06ce287ee757af853700e2e1dd4dd6d52107fa6430564cc7d4a07e27f75119cc71736a68a95ab9e403166bb778eb8d1b5866387b1a677e91f6d8f71367a7757d93bf95faa72b23a731524e12ee8f1c0cabe61ed130a992ab7f65700e97eaedf2b752b7e14c6b0ef30ed7fbef845dc635605ce6c581f63e9927a2c1b909efa1249e971b711afaf1e53fc518283efa4ec6bb52e3fb8bf95fb28d7ece4b0c61a3c74abc0be61b6bf45ca9f7bbf1feb417969e83fda5f6f8b6c6041a4ff2aef1eef4de65b51fecbcda3146ebce37d7630ee559b3d062ffd88c7fea8fc2f7a93d739b468dd663ad705ffcd88b0dd87cea39f3bf96f1e4a6e0d57e78766dfef47b7f3f46ed5970ef4c95772cf15e6971fe662e154dda1fef0518dc518f7c8acfbbfd0836ed231dfc43ded4ea4a8e42e51c5371504b3720cca7e45f4bef6cce54c1e4df5684918f36fb9fd6ce2c65dc7b75ff1c2defa7e51a859c0bfbeefc6ef46ed3bf8997ec3bde5d8d67578ff5d19eb77c0fcef4ce129e7db87edb0c0447963e4fb027198717dfd6988b7924bbbe9d92468b15ec273ce7eceb55256a322492335d6074bec50dec81ab51c55e978487a038e6abd8b56985417e98f1005551519fe47ac77d5053e6c423db36ec4f82d8b9cc8742ff47e19b300c0ff14e8b04af699711e52b90632d2e50d76a912d3ccc9d5431d5c14ae6e5029d9854f257281cf695e09032a68c535e72efdf6920ea96d0d73445deaacf604b39dbfc3394bd0bb7b9ce1d5dcdf59a93ce7582d8e3f5903965ccb5e47981f767f7694f5e72c6944edf092f5c58dd917e6d8a418a469c24741387c508f989ed80386ddc59a6f22f426dacbe17f9ced4f70936bb7f09b93777339018d5c9ddd8bc743368f4665d74ec6d71f3981707f3ccfb8d435c6d2b3e237ff35889e364ed04a4552ae20fef8de7c1d16356ea495b5ceeb1dbcddaa2ccc94bdfbdf6355c891f8b42abd18f7af01c8d6b64ba1e332e9c312adede656d14f0fba5a636d73cf6eef869b8190a2c9b325ebccf85f3b5f5f587fdfa7b17dcb3d16c4efd9517ce9dc33c901ed189b8de147c91d0aed472f161e5226e2abe20972ee9567ecc8725f2e19777d81b78befa8cdd598bf9c5a87d29dff12d5eb35247e412de2e97fa73cff16cf231949e45c8eddb1baa891cd73b98b375ac6a243876d0cc9365fe31809cf0301f79d457f8c9dafa11edb304f767817d67c954e3a6ae26ccf7e489fdd7e2eb29b86a7f483c86c96d4d1c1a51ffabd1dbdf2dc8aedfd94c738f582a9778089f6cb62f16db048a1923c113a1e68a6c5e835572f9a907afc955cf9ce9d1f48a389f3dee0f23d8fa77bae4797a25eebe6bf0cad88807be4efd7e070d2d12eb1a8bb9cb8a81560781f5f714c44e3778ed0d9b3141ee04d47f4d1c35a0b7217a22928176566687368d03a867db21e5c76f8a6e828801bc9dde6b9feafce027afa165abf699c1fa92f1aa2fd64ad10fb212fced2c1c070d0d5c7dbf085fad921c6e9b7a6fdcc4ded8f9b1b4e3503b645b994d3b1493aeb20ddabb84f6cb3bed97b0da74693de1188963d82dc61be0b4036de9613e9ad07e91fde13faffd86666fbbadc3dadd4df2e3807612e1350bc179a7e4aa22977be79458c4c8c91f6f59df79d667eee99c3034697953ec4c579e9d21cf09c641638cf35cacaf8df1f9792f2ec707caf319722f1e511fede59bbde977e6afacd94867b2f475d3de43f87aed826ee994fb20a57f1a1b758ce8395093f44a3ec7ceccb367f514dd1deab53af0e75e7dadb13f10353aeeddf1f973bffe9c739f05f060495ffc2cf28b86db5f4aadb1b31c7f016b7557af55ce917dc879fe7d095f2f9dfaf39933b589b37535ee737dae7e3ec281e4d4436c752f9aef437c76fc7c53fe3c179f379eefa661a3c66bbe5f22d600f9f29813c21ca7ffa1f078ab38edcfe0f5e7b8a8adcf6b451cff566fa0e7f0593f90ffae725e328683f807df3cf661545ec1fafa6acc25312f8acef3edef9f356b7cfffad937d7c4f85eecef87c2683beb7a8a866bdf640eb76c33d0f06486d3a8b72a9f55fd6ba872d413fe9ef075f3ef3f0b7ef8dd4f9f493e4f557ffc604bde28c586814f0a79a2b1ac2de60d2c11bef3b9e4c8e239b892e6699216fcaccbb17b87bdc31aa472fe4cbfb5d7743fc5a65e585bb572a9f69a2c33f6cd3fd896b669e1a366a34778d8da9f454e0cc8013a15e3dfc4b8882358c9b5d972ec45361d2bf865f1378ae1041f67bdfe4dca2dd4e724fa7431cdd5e916eaf5b36ddbbb4c066aef15c5348b1bdb54398ebeb6d76df21d8b63ce7d75e29e4f41ec9d17b23f578dff02ad1f59e6da45ac13ce75cc00fa44b750c386c43a1f269f793c4e5fb531e14de5cb3deaeb2ed634858f3a4e04e742c1142a9a0c7a5d4bd10d638d1d31e7b2a750fc373ddec281beaf4043f4a2fc5dc1ef59e2fb5483d6ecf17ad4653f5ad6baa0679edf076b69500fd2cef4a88705edd3aa9a32afa1aa6b496b6db9f7bfdd4331e7b6cb7e90613dbab65d90d396fa0e5aedddb90696b26feadf448ba1de23457ca92f3c2fabb1df8ec7351af8f3ac3c624da4ab638a77b702cfa1d5ce57718a030dd36391dd299cbb9cbc833a2522272dcec90eeb65802d80f3aaa99727de81124b57aede976fa9fa87e21d7ee60d4cc17aec8e747b5b5ec3bf9cc5da99a173befcc485365c8d70fe09af6e6faa6ffad5e538edcd95ea764be9839b3e6968a5ddeabee7f5c47cba73e48d586ee53e8773b1a824c6e67e0da87e40d866cbd2364dbfdad6ebdcf95ec63ae897fa9928e7a9dcd3f9f973e21331ee347ff2ca77984f657fa85a70b39567048d6bf6f85d93ad563486fadfffaee807f313e080a362f0f33d12555f9931db5cdf43dd23196bf8553367b4ca984346cc0be61df89d69f62ef3213f961e06b99c577e9618fa724dd69b75195f585f0f7a76339e6fabbe1fe59ee1ef80c7a9ff8eb65fe4c266f23746fd19f6d8faaafe2aaf6ffb1b3b63bb15eda562ec8f359bd9e89dc5f77ec2f3df666c9531bdd3ee9d03b6be927d0a4d7b0b7ab489ecc7875ee4dd0bf58813c6f0b632485bc465aed1827c05f0cd22f4512d7966eb7aac0dae60d078b337e3965c02f87a19f364c9f79f9afc3cb36831d27aac81f309ebcbb8af10f7c5bf9f9f2a3eb7e12c796ef82076ce7ec842af0f4a6d8e2bf52e53ddd143cd5cee9d6ff07c154e13a7e27450bf6f41b8fcc2606d3ee6c7f1f79b11f58c3f736f18d964a5a66d304683b0393246b00fcbc6783a85d3c0db1b4d9d5b39be7cb8612df719f36b4d3a61c34f5a551b976a62c84d6d07cce913729eb6be37e1a190d7c6907168a8e0d584ef74e3b16642e384e204c8c9cbeb9a7c5dd217277f467e079e3fed0166253d8ca47f43357cec2b8f0ab647de3844cd87e4418e25513492e0b91686cefd918f0f238de7e0d65ba8bc278b98f01832778f7186c17146d61cbb3950716dabddb46963af33ecf5278ef094b8cbdeb0af315d5cee35f9c5dc0aee8c40c7ac1e7de75e5f97f7bed823dab961126ed21f73afbdb9661d9190f3e07e46da7f27aba9d1998b7520307f37dc3bc3dcddddcf8f1dde9fdbdfeb91aa67339c0343c20414679ff2baf66fd9df3d44fb9596c0039386aca9bb74a62df328f6cd06f0a3a77afd2fe06c6e5de35fca7a1a2873a1e343b4b9d6f45ffe1fe6da3fce09a32ff68798bbae66175afb0a8a36de2fc6b7e711db00a368da44c497714fc59cb9b9ec3a7602dbb73971cf8bc4de77ebcf09c3ac62ac688daee2583bc3b433c756f91b14ff2d9a729fb827fa12a1cf68ceb921ee2ba75e6143f68c2647f2c97d1e676c4abda2974bcbb5bbb2e76073945ad5d331e36314bcd30a7b5517a317e6a72886536d2d437f0ccc49bd1efda6dec7fc449a4a66f0da3b4a7dd329eaac24ef2b19f7aa73aaf6fb835fb0f799e72da7fbc8b9c13965dd9483d4849ad27abf2da52e0a3cbbf3a261a7537e4fe29a5538d7feade5170a11db258c35893907cc7197e94b2dfb21eaacd5dff90adeae01f519e5928bb7de1b7bacb3bc17924341d1eb2f3f8b5daed5b9eb380dce0ccf92bd180be27cd8e07f3b3ef5b864b94d3c31ab11d5694ae399f6107112a7e69eeabbeb2df7f1767d3a67b2fe03f5d9785be6ef10be3872df2db45c00e957ef9a3de3d4efed7f2dde8a2eed5725fea8e82c4d1bb669cd1af7099d9763cf32690d188f34ff6c1fbdcf066e0ef7e8943011779c737c0fea8faad7136a020007a003f39fbdd8dceb5731e7c6714163c8c2578a0788ff7625f8fac539f320dfcfcea67957cef09b473e52e4497caab9d3e2c4c2a6982537d92645b20709c685b8f8ad2b7910b51c99dba5759fef192fb0251f6c8d7e32e619e359267b24996f21da18fc3e888f2ff10daeb145fd4ad75d071e84675d93f96df54673b2903a3ff5baa8e744d40a0546e07d2d6b1157d6b51c6f68df1aec7fdbfd0ef70765ae8ea5573818980f45b91ec60980cb516c06f93dfcf7cc7f13be3d9da9e9d458f0de82f39f39b66fca3532997b03ad46dfcaa55627f43f8d643f72b127bf18e2c5587076f906afa3f4daa131fa1c7b15179eabac94dcc2199eada227aef19c92a346b18790bf95fda1dfcfa5ce99511ab27faa9079a2db2f69bb2a1ff489aaa42cde08eb39ed84af0ad63305ac7aba5f5c59034b9e83b7fabc167a28f1a4e2bc6834bdc9da05e8f5482dfc52ee11711de0d328b007f759ab0b1c9afa2bd70239c696c6e442bf9947b11da85a219c23e80e56eeefbf9cc33e72919b22df286dc3e22c755b77aa3621ec8d94c6deee2bcc86a4b1155f792f66a2ae0d9a166fdcf7ffcfbe4204fb16eccf7ec3f110eb9c10f707f1bf6425e916ec28d716dc9dd5b12df3d9c6dd3873799fcf35e7aabbdcb33623df295a707ee5c9a2678bbbf3f95d7c7bf4803b68b876a9f72ce9301fc238f936573cc3da8a674ceff3c2994f714d588c3956a80a275763358a75acc2d175dbbee91d759479632d03c5cf205f8171442b559b14ce5ef251ce52276342f876b5e657a573e58cc810ff926d064f52a3e1558b332bf79570c54d0d22c97f46da3dbd81d22f8cb62374bfc3772cdf366e2306616c61ace3f14ccedf5ad703cec3d84f5eb80efd2870254aaecb0ec8068d97a31e69a4598ad61bf83ae390b97e8af6ba991eaf449b411129cf58c7c44e13cfc4381d43d1cf664eb4dad716f9c06833f4399f9beca57d018e099d0fa2909aedb0173ac441b5de6e742e75050f27ce57e60094790825b692b9a2f9af0af2a05e95a24fb3ace439065c7e2f1dd68a843c90a1601f23958393d7499650bdff1a6c4be45c2e1ed6a44b8a75e3282bbb522b88b84e0eecbf7cab61afcd7d6286b7eb19fc6edc47916b71fe65bf18738d8df3c009e701fd7a1dd5362b73071ee32b632b47bcdb6228ae8f78be05fb67ecc78b9c0ae470a9368bfdc14f8ff6946ad157c536887c273c5329fa5d592b3a9a2207be6731878e9d1b94ab96f91cbed77836669ff1caeb39edb2a6d67a174b9c34f257b06fd0522f563470384f505f57c75aefae853c972dd622e57c7622f76f9513afcd35d84adfd4df635d340d4c1e77145a3277b5b8c36652ff7b42da835578d3f368b199ef88a3eec4fe8227e74dd82845db73bb96b98f5b8ab93f7fcb7929db97783d9957e57abcac3f79199f315f54aff5c60757d16085be9efd1d86f7aece713fdfe5177382a7bf4caabd7af6429e49bbe67cfbd6227b67ffd71767603ddfe18d73720abf78bee57349eeb114f12f82175d60e3052f369e55d2af4e7c8bf07acf769ff6c3e5999e79443c96d3b6dce417ad657fbf6859cb523b0dd7afe9133ea7f2cd760c65c25c3ab816b85786b91f223c0ba5f63b9c69597fa0f094b3864d1e3f8b7831373c7319c7ac97f824304209f6e14cf8efab31cf4387383be19e02cfaac45a05dae5dce27765c4884d9dd43ebb8d98f76b41feae253922e19c42cd6159f3647e47e4e518fa26e9f94b8e483ffbde2fd2718305d4a145dee2c4f928c2044795c3dc62cceb0818df45103b9d04ea35c7847a358d89f9fcaae58b9a7d66e725ad67bbff416361beffcc671df0e5fe40e7e795eb810a669e71ea593958baa4cb451c25709e178ee48c655f56e067051676f868713f98a5e013c94688796862ee1b7e8e825d3f70df99e0ae6d9cedd43fb666cdf3f08c79e03f50dbf7cc9531513f835a58dae3736865e8b833e5b3cfe50e73a0997f65ac2cfbc7b8ceffffe4bd5977e23cd336fa978c0d59e1b0011320b1691b4ff119d8aca6032124210cfef57b59520d924dbafb799f77afbdbfefe8be3b4cb625954a55d720e6de9830c5a8bf9690ffc63ec7b587383adc0b9beb268df2ddd3281c05b16b0555f285b194e391190e14b4099348e1dcab9dea437956899cdcf2cfeb5fac17bcae51cb3352d8e8293dd7ccbf068499b408872ffe7e167f77a736f84df2da36e4c53446e2397d04d2dfd3a1bd4efc5de136bd8bdfa2e9618cb3f47a40ac6259d1731035279503cd6cdadfddc63c11b1eeda0f542cfd58a1f776ffef9e25ea30e3f974d8983b8b3ef996c5c03f1a77f01c3a211d44c4484625ae3d76ae7b2f810bb5f8fc807d6f9d610eff097bc76a124e747ee60cf8119705d66f2e43e83182b69d9f4e757c216a2a82b74809bda4e3ca6dc624ca790780eb7e475cb7333e931eef4ce31e28aefe2b9c05305779453d5e166bea7b31f49eaa1df584c81b9472c945bfe15fb914fbb9d8eb1c363f55ec71eb7927d6826fcd3e57c841439ec975e54e3f7d57e0fcdd758a3aa2cd731469fa4a0e8bdc93eefee23ae4595fe64ca7e025419e9cf77a193e8d0643c1a5213ec3db12eb65659d27289cf614d7e17282cfe654e7e0deb63e87cd86f81bacb7e64d06238963f6ad3c9b61ad0eb5a9d2dd17ae23f8fceb81e9a80d46181f5fc6d4c3c1efe55c8ce9a5801a4edab71846fb8c6705f9774b8c893b3d9534b787dafa1135f0dd27e0aee642531eae23714cbd50f6fc15ce8f7d96f2b213ed5934764f882939fec51a9675761c8b3d7ac67f14ee94bc771dac675c458fb5c195de5539e4a9931d623e16020fe455c91070bc8889fd2c1b784a3ce364bc079e4e4cfc9bacab94aef40d58b2b9546c519794e16612ee732c6311adc78f474bd322c9653ebdf97cb40c4db4f413ea41b9e6950998ac21ea5b9f7c57d75259ee5b39358c2bbb7b5fc2dfb3986ad011eaeafd13ff43be777b225d65c9b9d0eb194547e7df15ba8e94116f57759e2aeb34b0b6cfe86504af3903e8f99e404f71fed0030e00d6dfe20a79b3f5fb7ca9698bbd4289ef18b6e206b1e6367fc0fec325879a70dae9c05977b5c7dcb9ed331a57c9b3cb31616812f0c4543920f2ba86ecb9cda4fe490eba41c6bd954ceb0de7a2abd7e1fe3427b617d4d1a6b9f753c58593efc62dbc00a967fc047e4ada18fa6f80ad5e393962efcaa63627e76dc09913f54b40f32e6ec1ecabcf439ef3be026c95a36a3889a88bc86b00ad42a1d72ad73b704a501fb8457376d5d17069b07ece31ef2d3b03388b9ef0dcedccecb0a10ba59d691a7c44862dd1f48656b8df602d51d45b380765bd2f0d8d8ff85c5ae06bd645bd0686f9a5ef907e68f27ee97551d3929eb139d6cf0a9a83c247548f5956fd3d0cc77efcc2f7647197f43b180fc279ee36eaca2636846a6a86b606f37d426e4e79534757c3cce1350b3e97e6bbcbebc3a2676bd49d0c1eb2aee316ed5c0d337d3dba0d8e8ccca3d4fb76888bf7208ea32e787c81988a3c51ec1b0fa02f807b71d9517a59d926377054f0df3deaae8247f19ebcf9151e0af10ec6fd022fe42b407df19d4d98e7dcf0d43a3a29c617f1f73be83d2cb39da62194a607d40a87fef8c2ac1fb4d5e253c95748a8c68ebfe9abfe540473a73e9f2b4c6fcb7aeaad953fa5bf9d0a9f57e3bcb45438e72bf487428685f7261bc99bb42f90bfdb73d0ee74f0fc36a6dc56686ca8b5207ae9f07e77692b0d277bb3015d62f0af5801e64e8c7d7f1064f9c8d0ea1e99f7936607ca99e13a15973d89c65dfdb9fb17ac91311fbd3f9cff7eb2df3fe93a37842d2b5d79ee4b9c1cfd50d619ee0b16c509aeaf8bb5fa5ea9b0d28b6a00bc7a8c69aa1e481cdd2df7fda3582b3f5f7681df54aadf447d3cb55f95580fc5fde80f7a412c9fa1f338d63cea382a71aebff09a97af4a972dd95911f7366ab96ed5b7ef282c65a4745866fe6bef6ff2db09ebc99dc1270dee5dd6748f7a8cc073ed9b71bd22a61f56789d85057b94ff12a2376019eb1e5b4f56b33730cfca09c489c57ff17e62dc07c0376ef764f689ff5bf359e1282d5a5fc89fb616e4abf585e39a5a1fa05956e2be129fb14e92763e0389c11f950ff1c527dc4a3d0e0759f79d3ad46bd960fcf5aabc59af6f7dde9fcd39a0f43b29de353ddcb976fada9d728f36df031f3d5a93a073897105eba8eef40f3d56ac9137d756055a73459b27541df733e6fbf4413d90d8d631b8b42e658f7be784e8f1a37275077d18fed7e28cd2c11927bf6ff5370b33a7ff623963e3cca9e5176c6f867e2bada9a0313fca975ce5239fceda051c5d6ec4bfc61963d09adb206e41d3b4b4965b6dde3c790fa08d0eb1b38b18da7594bbcdde2a7a807fa21e61acce1ed100b5de758daccf53b3f77bb4d18feddaa718d6167f163aaf9ad641dcf69ca84602b8dfca37f0c379857e60d43feefdd7c6c62e6de21ee772cd3bf9ebca019faaf25cbacfad67ee473ca715a73f5f0fcdb9386ace755adf1dbc9e6292b7fb90e8fd3c3c5f2edbfbd2ed6704eae9a958e19bbd874bc3f7499bcb53db77ffb0b6e0ac453d62153fc8978b30d5e6b8b45fbbf17b1d631fa2fa33c7b7e21acf098ba1b4275756ac7d7ef5823506c75735ac487886cb7c19ebc3e9e184bcef2b7a167c61ff3c0b87b77321919bc8da930d3a5583cfe037cb6bc433c0b3d485c5d4eff6627ecebb9af3b6187d7b6fd8db45fcd89fe611f3fb5ba15750e1f81063d2ad8518cb97d09cc3ed73c3eafec5f37b66be34b2465362ef7660eb75fd5bebc6ebce91e37bb9819969eb83b7cdc3e909735b891dfa40cd26913b789d3cdb62ac2ed4be1d3eec5ee5b8fa9fcc77d3c1f83ad969da6649339ffb080c8f5fe8cb3cdda813b6ae8b54f481be5d1725f9c237ae13b072d853877379f46c357395c4323c64e9b958a0bfef9da0b7bada83377b720d4ccd3f3c971e4107fb2357b5ece275d7c0f895806503cfc20c70fb88ddf86aac41c0e6d4b92a9b4bded6bb2c61ad47a5c4cf64e108d729d46648b75bd632b11610c2d8ca386acc6ba89fab3341869c0f730e3a638bf60bc859774e097d4967d3093956202b876b8a43f219a5bde1cdeb963ab3b40f24651b2e44c592d2228ff69cd777351d155e2f5a2206a7fc227c598998db6547618523af63e8cd42adcbd7e287bd9969ffee408e4e38de277b43fd7c1779366a4f1febf1087c659c12751097d4cfea22f76a84f9db7169197854fb80f96eaab4ce7dd7220c14f8f538a5817505ada81c7b50f49ef85a92e6b58c17558e674ae4224539ac9f399c57099f74e8621d3d250d1fbeeed7c0f3a11aabf8fb3c429c2d7acb941433a4bf29f8fd38e16b61e97de239e1e42a7feb81e72dd55ee019c75d784e84c37ed9611daac41ee02684f5be74f5df2a5fc9db7441580c8c47e465d6e9426d933d4b7a3df3707dce29af95f71d9376da5cc415a9d9b146cfd01f4c7b5dfadd10069dfa8311e863914f33af5775173a671674b7dfd10f2e83b92dcfb5f29cd0f9503d910f8583d8b239b984fd1ffbb088934fde99760e60205ed6c479613e3e335877e4edb8e8bfe96bbf6fb37e337077f19ea047b0ca3650efac10bf00baa889ab8f2d3d27a949097d2aaa097f98cff691eebd757c56c2678673162ec3f9c4dc2be20e8e3b62f4776de3d0fa0c0bf2ce92bf49daa49d5c713d8a09f47b93533cd4e64e0ffb91517c817b9f3f204ea95b60dd5bbc2ef7b07ddbb895c8a978a2d8f7776b4860361285c9881b6b689ea27f2ff2978a4ce95d46a1aac91e461827e212eb273ed4a34027d30a4c1d2ba3a69028bec8b68bd84a85772cb0777bc0385adac86ffd8801d338098d3e0a7826c7e712358deeaf66ce05fd6daf4a8cfd70306aef21fa76ced675381aecd68477ac7cdc9f4bd50f3d429d64e4d9e07571ef046dba5ca43b0d9e9bdd479c0bfe58df2b912b58ad626dcdcabd90f649d8ef2f06afe9e4e35e08bfb13d1b712e050c02c6d1c8bb107ff70098e80f5c8baddf25384be09177fd6e1f2d901b66eca3d998e621bde7b8768d7d14e76d70c57d17723db836b6171482c72efaaedde8b73e37547ff51cb6e5df4e4e3a0ee6fa002e59da031dc7c9b3ee23dac135978d5f558ff18e708f8871d9c2dac231669efab2a624e354b1bd15b7ef4f4baaddc11c3a7b382ffab8aebc7d09b1bb03bcbf27ca593e3066324ea3bc675e2fe37cb8f148eb5b56b3bb161c1cdce397ced1833a59676ce430d2afb0c27354e5c5c8db7f07fcf9236a43245ba8897baa9e545ae8656c51fdd8c539b124bef1e5c63c91fb00f9aeb398bcc373d372ecfec398243d1fd7d896f585704c9cb6d7e7a30667df3674ab501760d9c8fd93edff7c7dbb96ca4baec14bc0ae2bc75c86f617afb1d7b2713acfe1dc146de6e259a75e4fe3d6db9b5759633472cf2a71d07f79fc43ab51780f1daa9b80c76db439357f5fbd2ee6517ef94ff355cacdd00b7cccf2f01eeb5738cd7c95bffe4bf5805c4bc5d1bbc0f951c1fef50cf3d2fd4ff7dadd55f763527e71ceb8719e9ebb9f70cd95718ea3fd6e8175bd7dd4c0b76bfd79271cf2da1bc30f543bd43e28dcaeea7bc059b19c1bfb825687633e1a33e45ed3356d6ed4eee5b3d4b5d237905b3c2f6ed455585d5bec09ca472e7e81f36b02df718e643c0a21af59622d40e58eaed7a2f984cfea117290a86d0fb231c7b1eb1c479d7919b71b3496cb77d494b082469d0638c59ed5d498473e79e681f636c389507e8ef5141c27637c040e5e78031ab573a863f586da7ecf7130cc670270b7d8abcd0ee09df8be8ab106e1c2be23797cbb5343d3c699bdfe0fefedcffd69e29fe39a98039f3c6ae9ed2f8cda98c277acc08fc96ed3cd4b749dcaa4c45c0a73aa6dd08e0792f70d9e230fedebf328342a4bc84dea3302d4ac5e3b93b6b196bde8039d49a9177545ac7fe453edd0559e5c7639fdee9988f9cd6ab165849ec59fcdb13f76f1fe2196a4fdc6dcfca66f76c55ab87db0bfed9bd1dcc55e2ed37c39ade3461f8bb4028d1e08f1eb850e01d792740aeb99b41fdb7479f4f9a6dfbb8a3785f56dbcc1faee42c33dc299ea48fd64d016a9fc0ef5f8662d988069a7203ecf1970ee5e04fe5471b7d836300183653cfbc2314d3b47e4c22bdfe3360c0dc33add7db79e89ffbd010d8c4a8ff5d6057d019a63f615e83861c0cafd64d8e7268f509d0912dbe448130730002d99ad86d78b504f45ed4b8459191c71de229f8a7a9792d7287aa9dfcdc12fc32ba48398176d0eea3d0a6ffbf677bd79c35b40e51abdc5b50d6bc2e695f3c36a897578ad2be7a0e69a7f5e13ef7564f60dbec538f0d822d64f7cbdf19b337e0f3ee24f8bd30a792a3e7245106be14c3baa0ffbf4e4ec46dfc67b319e09ed530f3dbd576013c6a17cb8e86754bbff815a618ec62dfd267f93f5708c3fd5f83dd4cf2832df91fb582f34f7265c3bf115628a3ae33e532da63eb7367b7bf5dc89a9d67109b62e788ecfb53944b9a883182423bf517fe3ebb18b7b15e616e0edf8d98aad66987e75ae3e0c95fee585fa05bd31fa005be3410eb8a228b9b1e6799fa38f7ba6d21a50cf7fa7f2d2f237c4d9507009db7d02549e765702ae352b3bc001d77339efd2fa1eed7bbcaaf91eff3d57187238779534d7318750bd1bc7f041eb7837bd6394767645cf183c61a8f7bb710c1ddb9e3af7584195a31f4659edc82705f960ecf5a8ed75f21829e8f350e7ff2a2d037f97951f6aff3806bf5be79bc4013f1c1f6e608fab3adeca58b91b9613e4581cea3c5deacc9e8dbe3ff30096b9ee471825369e6b27cac33f9b8dd0cf3fcb8786ce38fcfe88d7f3e51979f7a99eabbfccca07f480933c01c7e4bbaeb35269551d873e3eb3c49983767416f490674ccff4ab248d6ce91b26b07812d70a3af86156a0ffff9a7c897af4dd6ff8ddde6837d4bdf53f81ffee902e3ff201004725e7b6d484919872f4f94a2abc46f045710e1db5cf6ed6d961a8d563a4fe81ddf0ac031fd9f432e71e5d3296fcc0ebff87f9f8e603b704b0b95549b8305c276387e92e40be25bccda0e7abaf155947a667bfedd19c16afbde16ba05798a1bf99d0152ac08fcd3edab047f8841969d5fe37bc9e75ff523dafd571a62d5a40d863673aaafe64837358eb790a7d989dd47b15fd9fdcd4bc1275a6e7787c1766e3c7fafad671f2b6885ce466acb7f7f5d8de85993f93afc7d562b2fb09b5be48ee2199da272f2bc8adbeb9af24464fd388e136ed7a5c055edaf240039bf2a254cd8de4ad87314ae2e933c697bfacdd67e3f7355d812a46feb3f4a5835e5dd151dcc57403f57ecbcc4db0b6dd41ceb8f2b0965876d08ea4f1567e96acff0ecf357776a8ebabcf03f1db6fc845c87c35ffc6a4270bda8c8e8ec7637eb9faf5629d23c43311f241a271bddee5fe8df877dfbdf50ce4752bcdb02616e903fa41cbc9a689f993cf4ccce7dcd9809ee73b6ad92d8ee419219e87e82f493da20cf9d0ef2bf2ab7c7e9a2443a94bfa89188095f0944e44ac48875237a3b4a61f73aa4faabc7687987199a38691f6ef4e0cb1407aa566e00381da9d926f2ae2da91f6acf457e7a65f16f83a3ba8196cad4d1dedd6b9abc678a1725b2da7b22e3734c6988fc40e342a59bf9ece8b4bf47efb3c1bbe14dd123848f6e5bd89492bd96fa09e8ec25259f09c7e221fe8da07afe9e31cb592f3ee7fa0df523fa30f999bb9a7c564f7859c245197109fbd1450f75bf4ef4cfe338f9bcaa38efc72990eb93a839176e5c447ed50d5b782beaf5d6e759e9567b77825c5bad687f7aa6a19167a82755b38fd2df83d8bfacc13a6f7b54fc6da1ee31cbe4c8f1a751e053ddb89e077bd20c7df420d73b9fe7e429d6769784c17e31fb73c12bfd06b08b1dd21f86ea4faba3bbce199ca7ceed533e2aeca7d0eb1e7a344fdd9f19f9f95f2e9bffdaceafde5a8faf93b376cfcde788f7d73f67b1cc3b088358ca2e47d3d94a85d5ad27393eb6d928ff4679180072ef4ca2f9003aacff805c654f4defb86db2b6b0b4fb2673e9a276fc0f3eb1a797687e2af8ccda4bba1d685e3ff467eb8f26ee1787e5ff468d95e67ffba90ae6a47e8dd498cc406fc06ac1cfa0751b85073c1ce95c7ca7a0fba5bc919b1e069ff00b91c3c5f3f455c01e0d7a2950d180cf067d9d9419b2f99dd7390aba2e9798f712ee6156879c4e77ca8fc27c987455fcf71735d830626f5b2076f61736e80a795ce75b53b78bffe58ed5b51be55f5fdbb12ea2451b2a767adf10d10abb7841898f60ed8874ba13f1f5f966eacedcd37fa43ca17fa868f7412c35c33e651fd0c065fa859259fef44eac0d1b32a6cc511215da4f13a9b8dd0c7413ecb0bea8844832bf08ad9fceb29bf9cf17c0cbd13632ee2f93bdcffd5f3cd06f8cc686e25aa8f177772f0fa63fe0baa0ea5c68ff8f01eaef9a2d7b2e7eb7a22a6576e4cbecea1d00b573960b5e99237cc463f8760ff94d6fcfa65e33672832cbe52dce07368f0a6e3d32dd117be51d7201d8128e88643e4e7bfad635d0f95ea6639cef1f9a2ef9af54aa11f29c7ff0ef5fe33d24e5e56213f9b61fcf54823b625b7be3f35b08762fd1156977906285d80e3ccf8f77161eaf7da1d780f6aff93a67f62531d59e8484a9dde09f8ff313dba0cf1e51f3eea03b5f92a8eafbaeeb76fd65d40d3a06a9c071c78ae50ef2bb087483d17ee7720eef90dfa284b389b2c5a9e637a046d8e2fe8d32eebf331e44b52630af3c8c2ee4f8cf3b0c400a2eea31a4327b942df6325f0e1f2199590a7a44abf7dd1c7dad923fdee6989717ff313fb42c027b1513bc4f2b077e65dc2abf0e0d804caeba77c414f4751df93b524518368892fc2bb419e47e099a647e51790bcd1da43cd4aec03ac23533342e275e4de0be7c2129ef347013a53d1b3053cd2791a3ba84f29ff6ee82727a46325359723f25fea3bc87d88cdfd4d605dd4fd8a797729b6982b8ae7f4bc50bfe59438bf719c16fd03acd3a57b0fbd64387357abadf29eca820bce916a4cbeb74a0785c629be80179347f53515bfc89b6d25fa04fabc94f30374f449430e71bf720e887b59ee7713d663563dd7316a62ac63b3ff99603cc9ad7bb98e539c7b88350f17a09b216293c37a44f2dc1bebdc27c23433ff8c08b8ce490f710b6c9c98b748d7074c8c33fbc0fb257db96e483dc7c3b3569fdf3ac86b90ef937e78d48b431cd192bc69ba18b7513f8c7937455b8a3bc85ff8acf78e0fd547b3d6dbc2c86bc59c237d293cc3f97773ac8d15bd50e46b7e17b44751d7568ce3ff8ff648d687cbab9d0bdabd25714cee5af6c3aaf9dc634b78bd58cc9f41ae39a6ad27f336d2f76edb83441d92bc7298ae3cec2f8bdf7cbf2a71af647d59d48523ace05b177d4aa28dc9e1ec50ed5ee8e4cb7ab998d7b2b7b6c43ef073a7a141fa1fcceb15624062c641a7f92b343698c75a63ce8b6ba15ce5b1dab8ca87ff23d86f4ea13e6794ff9acbd6733908ec5eaac6bbb7c6ef0c7bed5e97f1b5ce29a5e7cf59ccbf39d367f745fd4ceb8b0cc803ce981fac0eb26cf1995a59b9cc7fd3cb4360f00dcb68a6df53f5eb1aa0ce8e88cddd10eba6e2f71f51a30ecef4d6a7f4314d8fc39558af3ba1c9b006ed20d2943ee9fe23c74af009c459e7d759c5d248c58c96fb2cbbd8e7553d38f4217036bdbfd1c15c2aaedf93d53beafe50be8335fc6c43da27901f381bd0c711bf297b8f53d4042aeab52e9f97b3268ded11f7e22900bbebce6cc270820e6e7259487fc12ad853ed0af66ca62325eb94c2ef083f677af6a12f1c7ece09b1872d3cbaf00c54f27e03f1e259bf426a49eda4961ef1ebfeeebbe3127bf94c8fff4f7e65dd861f1a7c2f6168714f615a5758b751fe96231f305dd5ac47799f88a35bc893736b0a7156ccf347bb444db7f5df780d34b8edc95ee8e088eb8da91ff81aa898e8e37af5119bbc73a8be5812274ec4da1ce7b69cd37dde43907d19e6e7c0b5fa214fccab01f2a4ffc37b3ae03dd99b3b95df8c956ff1a0f1db6c6f9cbb32bf5373faa7ce8dfe545e06e6f90e7d21c64585f5a563a9c6ca53b972fa7a41cd5aa9d3adeac85be95503ba6b7e76807e448f62c6019f6b99a22653557fb65eafab782af70d88738e390eb2a786fc05d80792f2e8410d279a6d95a745c5b4a1875a4f5dc4b6d99e70f63266518e4ae3b3dee338130e49c6c28387bebabb9ee9ababf2d5eb9a78969afebe3627d8bc994f30ff3ab5bc473edbc9ceeca7cab9edecda3df5afc71e695f1cdab5262abe6fb21a78541af7e67fc1bacd1d1ce3f77553bfd00fc8e34ad66bc4de44585e2dbf249e9cc8f7316714f99aaa55a93556c4dc8f53dbe3cf4b57f9b6453ef29b54ac6abe47c671e5efe45aa873256a98b29ebfbea9b7e4da8ad37009f41a2070f05fb08f226228f3917574be7f1ae5edcf3e06ffee7caf6b3e1cef62ea9d4f484b958ff967bd57ca7c5cf7a53d9b63e52baecb7aeb618eb4b8f65fa1c62df314910bf018d41aff12f2f2921c038a03d7963962fa68f7e66e40bda67f887985db3c0faca3cd08ee2162eb479ec9ca366db20be12567d8c728883b3e137353c3bb961de20d6fbbc115f4e9456ca5dab6bae744cef3d113ea81f877e41ddd5c9b66ff721d6d20ef117d0915e7c59e14683e8ec7818659cb807798dcb85eaed5b6b9d3f17da4f755509ff94a1e6bc86914bf95e86333215f26b7e1e9cec788cd331e4b13dcaf14cf9372fdfcae3d0765cf8e692d480f18dd6b5fd5db2a3a6f94cca71abc0f3bd807977da5f0aa6b481527f2bec6fac484628fa9cbe5f7c8576733042f1becbf57459d8fbdc8dc5cccfdabe7ea7e7cfa1cdcb9707d1213784f7d66d50fc4ba86fc6e89b77a51e72bfba03c8bbc337bb637f2fbf667fb77fe41bee91f049c0ba85dbe2ec963817a8255425a2f581f50be1259329c4fd0abb2877e6a8be30cfa8fe43dfadc0d87b26689f300c6477a7a356a950abf08fb3669e467ca3b39cac70a6b0778e5aac57b97d5c94dcecedfd7cb0167895ac8e4271d7a59b3564ef504d4d5dcc8fe9c98337bcfe8cb167b3effc57b081f90b980c3031d0fd24d4b71fc7625bcdf215c9bff12824f6807b84c6ddaddac7f2bbc1e011309fec3acb7ae716997f641f5abddb3e2da748357c262609d6371ac63fa25d84a3f3b8e45f333c48690e74c2af226556b9b3abed5e4a3b01c78af30554715b7de02a6e55f6425d6d05756637e54a8495cc58e3ae33ef9428b409e8b90e79f5e023d9f577dc73df864b984f9afc6aa662b74871436dd1f006e85e5a6b21fb99d8236ea04b12b16fc0dfd6d7a850be7aacd1962b39795caeb383e97106b329f74fef780f34eacfa75e1f39696c3c201dc62023ca9b0841e6656423dbb0b3dcfe56403d8abfd1af031d94e6118fc3b789f577fafdc57ae783de9711fa89ec5eaa184eb39e616e16f57aff8f753fd77a94f3ad8ab783a592e8e43ad1f63d7d758c7e81deee3ab175ff967ec1cc44b56fe19bc3d0bf2c9f9248d4b711e551a5a3bf22500fff06a3cd6f1baa4932deaa9f5192df6751ebcda879fb16e565406cfded0fcd95a6c4e70bc14d42aeddc2a346cfd7a67e4ef36ed3dabfd8e7c78d57d2c5f0fc3f6f3c7ecc6f923e1fb90d254857381f26aaab617a6ebc56b7f4c4bace84a5f14af277d3cc3633ef2ff2ec78c83ff207ff1df734bad9904bd023f3cc829a09ff4cdb8eade5232b6af951e5ba97a382bf7b332f340964feb3837ceeba37c70bfdeaa33b1ccfb8c1e68f28975cd58694fa6878706ff507a70b11e84d7f5b653ad363e07feb19a3b8bdf2df5fdb4c362ee4cf48d1682ef27fe2e3d0920a7b8f61f1023227138881f598e143605f0a3e83fc6ee578e957cc6b8cf00b7393fc8fd4b70d6eb39b235b4d5aec65953c6fc17e893d49fc333943c0788f5515cf16c5421f6ed52c2353909c681682163d51ab1e58311e2b2c0933cfbf3996159417e585acc47b6791e50f905d35b201d44f19ad74bc5fe1d1ed2971f3dc5579a68396ee4628df69130e94ebddfcab5fa8c385491fb3e304eb4333d87df9d61487fb783b51be539447b1ee4b75e2f4fcf27855f9fa978a779d78ab38af0e113d7d8f5dc42ab4b7a58df307a61d9b8a7fb3bef3ee7e83bd86558d352d62eeafb36bd50f5dafb11f36eacdd977f3cf3eb757be0efed4ea871e1b85dfdbdc2175ed4aef1f7ec6e857f43fe41217898b2d6ec23d76b853acec907e2fdec738f796a5d70bfb30ff53c065e27e111e5fbe53e4f7c06bbfe9c3c6b15383fd682c722cf9f842ff4f0fc02f34ed5351df81cf85fadeacfcbde67073f6f59aa7f7e80f552e78caaf70573747cd7ace719fb4934c5670bfaa9cbfd61f2ef6b4acc25c15d0aabe98d35e5fd7f644d8da3d5b08f586e59cb228cb4da9fb302cfb1bfce21d41714c6746de6f0323fede6d6b48bbf07dc96c8ed36fd399446bf3c470426f7408ff97dccc9601c7c9b30100a5b1bd1fa61799d45790ddbf32557b6dae8ef1567f89b39207199aae40f39e01163ff6ac472c0bd0b67a989f086c29c8a3836e2fd72dc28e7749eebcfc9dfa3bda657af4555f7c2dff3a80ea1f9a71411f69502d098fe5fddab22dcab02f064c2ba21abeda9f7908f1bebf3cbf3f84ee9608613ef05bc47b0a727795e157a94b4d647fc177c6662ad3d13472c2a5e06e3efea91ba864a893e5a31d344a0da8ffff904fd368531609c6279ae4b4ac479cf478309e49c72fd530dd1f0693ae17edff9f1ffd69a1af969fe1fec55c507bd57afd101a69a61bd277a4dbb38fdb9b61c5b8f56609c6d581c8031591c9147ec6f0379f6557cfff508f9f0ef2b0bfdd2c56b4bea6775ea7b32bd41ff5a1f5df303e2f80aea61168eea0f273b8bf4437c9bf54ec47f572f2dde07ec7dab1168c933bff04ce8a4cb7c60a2fb26334fa471107b975869f0fabfc1cba77cf79ab85d1147101326f4d6b5e7ceeb98c4dfe35a0d7157bc774d3dd83088dd2a147c4ab697617d1539b949b1477d4fbbced7a1eee0237733161c70c95914f7a6eae1aac6aeb44456d8736a78bf4e281edd1bf7d41f04695f628ea27264d4e7616c3e58de29f38897013c7767693d6b6726c923aecfeabb7fb99e89f0cbe3bc3489bdb662389763bfbafcc2bea65a13f3c9a11583ea3b8823b6d8be2ed751d6c0189bbd9e2fe609205ea39e79eb3c1a295fc8fa399c11ff9dde53dde4b503cfb4576cd55867e3e1ca815caff9bd8f96aa9d58be4b382199fb96b11cfbe7175a7bde5e7905096f8f44f107a6bc8e3a41de2bd4d112ef83f27be011ffc2785792175687b02c39c6d935f8313b3f907bbd4e2fb4bfbe8c3fa90e5f5f9fac8b8b79924e591f7c0675e03d6a63a4c0fb55bf8b79767267f8b49d705e383fce61ab260779b387ba8ea96df808a2be17d36a9098b549f8d0f29a9cfb6daf39841d42ec4a0c7c4ee23fe37cac92183d9df07ea667c313046aa47c5e13470fcf83ba767aa4f6c36284d88fee5a795eebb52dc8eb4b3c6770ae38df8f407700b0e53c7eaa3a856560b4a076bff7f18cf6cb3139e9f30961ced5b5202edca7f54ebdb66a43f3c131f338ec679cf037d95cf51fcab1ac7d431fadd7c13c91e6926f70a11d83e3bd97e73ad709f634e6d2b37c30347316e4d664bba1ef2027a9cb7c53152f5bf0c36ccfbac1db892d93b773507d90b7060725caf7a1c414ec8317c13be23554d788a16deba1c7e23de7b55fcb6d735ff45e3b23f2ec707be15eead6ccddbc133ac041bf6ffb3d1e7b65ed1fc7bceca6308f5fd087d6cead1838e7528fd52ea96e391e0fe6f1b3b3f87df18368f350584755c3747be1effe0cae69213020e26f8ff837851b8865dd44e387e358be82f7ff6ebf260dac4cf5e2e10c2e63e90e62e5d4a1988dfe53bdfa6caaee8361d3040f77b47c78064edc1d9cf592a1fefd6a8e8e0d9eb3b8ee18357740b7a9b8a484d5eef8eeb42d87b57cd45bd8dcfdd19f42ac67d485627c7d196763c4a5a2cec57b69e99e3d37beb34b1821e48fc07eda81dff15f0f6d7e24f27cf782f1b3abedb3ad98b764c07d2d18a61af5c5d6ee9463ee66ab57d7c4ca2b7f5bb72b6bb4ee25d8fb9fa479e1a35f3fd63610ff3fc07e43b9e75c7c56838f75af06d446127dbb927159e08cb7ed16ca8fcf770b869b461d860c721fa503305e4f0e66fdff6c7a5324e4a3558fb7d04f5d64e1029ec1dc8d558f6e4a5abb11f08477e7396a888bebc8a577b2d4e4a4dc20afc22b7ab3bd175bd8a3d0b7de669c67b9a7ba90cbbc9d4dac802775b246e518fc3337f8bcbd68f057cffb91bc30a63a5e033c36deb41806674aeadf963f5bce6b3a2eed756babb9312bb39078eaaa57b130b03582afce30455145d8e2626fd6dec688abf59c5cf6c033df5dbf5ef099922f6e9ba720d4a8c29f5aad01d77f7c46fd307b735471e809b94959d3075a78734b6c86a9611135f43bb27c219e692474a5e4dacdc207c0ae299c08eec54b4be52ef6169f49e984e873dd8c099d2ffcded77e43c7ffd1fa25eea38c65bd2ad96f91732735cfb4d81479e02122e68bb846e432920e7c7c2edc58cc63cf9d5e7cdadb43dee309166c4c85b651675890d6ffbe84baa0b3790b9956a0eecb9b5c94afb68fbeda691d3bc4f94df8ecdf5c3fee9bdc2b9057119f0dcff7b187794dd263fecaa8f32f9fa9ee25a95f87cc2df019c5860e0af643699f297762af1aad5ea1f61c60eeecff0fd6b5a6c36cbdc19ef48efaa10f789eeca20e8e7de8619d077932e3a9cae9345f74399f779fd4b74964ed95f042306710e3c3742c582c177152605dbe8d7f6afc16e9f14af5bebf7b3e629f61fbea4a607b64edb6e55c7cfb5c0d732d06bfa599febc65af9ee3fccecd3e313c4feb037c95788f4b7ae7320c95ea6d2e85b6b5ac9dfe6b2e003ae2382f33d419a05abafd79c69c6f049ef0c975adf85880692d5cff0dfc95fd611f6aee56815a8c03e59d59ee115f548dab90ed63728ca9bebc8aa0fe5fdaebbfbbb72ed684d4f93f523828c8fd16d1a69263e95a6155d2efb3e72bbfbfb753f7da5d6f6ffb00ca7e93e83fa2ae471dd7eb67536c77a8eb447a22bb2be60999db0d1b1c17197f543d54d6b8e95c257303555b5bee673086e895edef7d9de35c856a2e96778df9217a52bb4150f9bf410b87cee1f78db5f6571e6e8edf452e3df539b5da94c4fa97843db18f7baa1f0c545fcc3d2fb0c696c871a9e3e06bf9fe4dde097a233816cc1317eabb17c02260aec17ca955afaa4b1ed1b75fd3e68c582b3be59b5054650bc7813828e507e9ceed3a2ddc8bb6e77b229d907e436b00e3f2cd1cadf745b104fbcb57d2609a625c145aaa32f7ba90d7cb6c8ffe28197958a9be6907d7037919759f142f2c4ed1938171854b1bfae1e8f1b73fbc6871b3e195bffbc0b3d3eb51c6eaacc49ac43ac5b318c69df5766a23e6d319ff5b7cb3245746e938632d6f4e3de66eb99d7eaee399a87f90de578c7c4738e3631efc423cd5d28a3f4b513b2d87ab09f193d0ff867c12ceab6dfcb9b4fc41e0845bfaae31fa73ace2f8d37767c267fed1022d9737d4965db91ef37793711f79f755427330ed35b522d21d72689756a19fad150f17e3b3d02f4a747ea37340bfcdf215b0ddbb8af93d2087ab6c60dd13a67dbcf944ffcb2dd3a56bfcde337a29ae5fb07785183cacbb5433e0285a30deb1e35f213ed073f6afb0ff3f3a3eccb173db1a9fa34f5672c79f7ddbb5421c2f5f903373f5b6e8274c98a596df213f9437c4c8ce21ae275bc8fba1d6775e34e6e1e088ebfda1377e1acd8641ecd671f4283126d3ce0af6bd7a4c27e3a1ea0ba8d767e4936bc59f2b4bce59d47ffac367b4df7c49bef4bfe743c1fb919f1bad5f63ba96ecf01bfbf52fe36bd0128bd5f9137ed32e0033f4179f557909f1183116faef849dc37321cd39fb0c3da1098b81d7dcf2409374d69ccff94ee5d09f058ee78e728b611fb5f250d360ab6a2352735f9fa7af17d0f5b87b46acd0f452608f9cd747e49a5883ae833c97458c2f48f8ec68005e0c89ff8a58a26e69e6c80ef9f5149493919e6635468c4c21f0bfa8b188e75a992f63bf51e876cb9a4bd0415fc7d118fba0785e206fee6301fe1dd5f7fb52694d151e7933a4f54498735fd412eab1479df0bb67436360991eb1feb7547b7a49deb3bd1c356243c8a7ee82971ce6c20971ffd196b027d5007184981767b3aed492181fc2870371eee4d8bf051db5e6a30df373ca87728d8d8fe150aea5e56be2a04767568e9f460389e7a7358ab52daf5e8b0fc791d89b713d4d2f14173ae3a751389418cc236832dc79e8b77c813ce4089e1c8f36eaa47728aeb5d52792037a218b67cceac04e883d14f2e523cd84f51e35caed1cfc3a26e4914f78abd26a70cf32d27b275d87c2a1da4bdcf83d19bf6fdefb12723e0fb4e6b2b01e4b894d756658e7c17ddfc1bcfea3201fe6963c31ee112ee7c0f7b9b66b859aa38d3a1bd10cf7358f3c15dbf2518c3f6bf4f3265d9914eba84a77cf19ccbec965acd2a55c85f6a3c4c2d810c79f85c88b7c7a7d3f83faed255c486e4911cfaefc33b007f999ba46e7f08a7be2e2e89bd7445e61fa35f9a23e497ff7b6f5df67c3d50b727f7a5463b1a07706eba77a444fcede6fdc035f37d5cdfda675af626bf3c5bfb6d501542da7f9d9fa7711d326f65f89bd1ed13999f4aaba67e405a10f4ccee6cbb4c37403cdfd039f65496bce0917975efdd9753c3d43bff9bffbdba2667b61357507f08f4c1fa9459bc7eb79e8e33ca6bd0af7a2ce279c15d83e8831649ef98c870febeed70970b6e4c57a401d24b947fb9f39e555e4e7fa7fc738f11c63429abcfd9387d8e8b7cb5fd51ac8dfe2247577bd0ee81833fef3bbf7471d8866fd5b5e47076b8873adc6ca3194b457e97ae0079e2f313d7011c7c533906732da5fc08318fdc6ecce097f3fc3df279e8a7a7e85d028bc55d3813a5bd15b3474b5581e3719302d10d4e0a6bc42f112c9cb99f870309772eb1ef69e3a5787b9a4389e3bd4a159a61759db8f6672ecd3cbcc274f3e5e6f67cfe5be222e471f3d6f56af783ec55ab93744cf8737f28d80389a2c344dd82a81da2c714ca10f13fdf8408c13f666a1ee43b9ade7f8e8355f80ce4f4b4fb9205d980a3d9eaa161d2cc607ca9db1d210edbca307cddfcd8b8c70a6ac5f2db1c657acb9d6e794760ceb2d9c9b1c43a17d27b8a5dd48d54b3ca75167ffa8d79e8c19675cd3f2b30a43f54a7ff7b6bf00573b85df5e0c41ab066b0255d1ac5b4ee57db9aaa61be2f359534f1d9fc57afb5c5fd3a87810f5aa9fabce2f1b3c2223acc38bff06ebdd46f745700eef811ecfcecbed14748727756c0faebab6db9af4196f70cddc8fc056b947e48f584e75a21c0179dea792fc8c505f45601905bf22a7e739c1fafd05eaf371b6fb0c781d351b4b6f8c45df5f621f4fc476c5c31a2fd9d9ed0c737419cfc8031fb5b8ebf73c8bb9bd68eb2b910eb53a4b6f0853bf7f76345d4a0b7574d81a6fd6c21bb1a1f537c49eba535c43d2958b04b62a9398df9ddc9ba82f75175ecf761dc3fcedecadb0749ce50a7b2389d2f951e7ad9731e87b85706d0baebf55e7b80297eacb5a7be259ac8e08dc3f1b3d0310d3d639aeb61c3b2474502641ec7650078569ded17779744f69bf13eafe175f4c637bcc6ac967e08b83f782ca0772597b1f0c781f3c62dece9e43faa8b266eb35ce473e6a55535c0ac097608ce76e88d315f8877bbb1fac3f9ee85ad75aef0c7aecf7ccef7c6ad68e7bd257d1ab9e25b7eef8fc52a0bf888f18eda2431e5bf989e9c98df835c491e04aff14fcd37de8b23e848cfd197904cfbff74a11f144e6a44c6b14f7243f503d62e433ad149676e5fa2d9e04c905f955f6e6a32507565a38a4ad47bf35a5fd6f6fee7f86ae89d5f087206c3bd71eafd74096408ef4b656fcb4e4b563682b0a7cc14fa16dfe00cfae708a58c304ee65adde3d054e53ef91d6802f75dd658f0d31b16bd2781be07ee5aafdca9a0a6d00dd9f44d6d1555f33a07e51ae7a54898d7305bc632976b5ea18e2b38e5d35b7115f54298c78227aff5aee72af6ac2f93bce1ffb00f533dba3de0fd7fd276f3cf15eb13eec35f925373460eb675def1973e55d53ba39f9f84521c3f8929eaeaa413e79dba9e9edc2387ccf5dd01c609e894c1fc7ab488314eefd5085ffbc56f0f9906e5cda7755cee9b2356cfbe0096193c719f6281263ed696baa43fe2ec4ebe19aa64f75dc6cc63cff2b7fc1ebcbe57ac8194fd6d5c73cf1f8b8d6f15ff5555d87defbbf17ffc9ef3ebec6438649d1e799d647455c4be50f01b7c7d78f47e7105be99685808f2b495f57f32762634f674cdc2b3a03f5dfa67f128eddb7d7afad13fdfa13e06aeaf5de4cf90e09cc477f1044c9c4af36380f705e5589810f4a4cbeea4fe133ee801705791c21a72d1b333ff28d89dbeccc5d4f3f373939f9b7d6e734550f839e409bbeacf055845a33ea3236f6e20871a32296f70741361bfedbfcffc3398db4035bd69a7749d5b9a014786885733375fbb016ccb043022300da4d898eaf8c4837a9a963f1c3c0de300c8113804e0ace9d75e4bb0a77d1016caaae27a6bfaeb02ef8fbebbd8f9c66e074a0df913a5ff823d4c172fee31a07f445494fe74c750bbe6fcb7e07d523075f840fa05c42e94a21dfddaff0ecf3c1ce4952ff7bb27b50f55cac0d78e9ee01b4513dd40cb52ae0e44b6f9504b1f10a170be76c392746700e8dcf42d35b6a917e36ef353e97b1c2f046c5a5a5e7fdbeb4f46b5e227621be96d8d7471ff4aa440fa37edcb80f56ebf12709f0203b989be01e1cdbf5f7f07bf39d648c7538f4900910934338cbe4a3ce41d83dd767d23bd01b2fa95ffde5ddd458c4f94ff924c50d76d60c7b1c83a9fa6e3de031160f3dac8f63ed29525a7099d2344b37a3f5c36e74135b457dffd3ca6decb91faa462acf605938a4b99e381ed462a231f4ca2ec1cbeea0e69aeab981f7e0d6ece5f23a549b76963cdb3a9b075e0f5c2a1c490a1c15c9fd12b53f86db323c0c3c33ce024f75d1ce5db9c9d791fe8a13f22e14b802318f8eefa85510e19a14fc57a515c3bf9bf3522dc03fac50af91c55ac9cf67beff903353bcc4fc0974dc1bf96ce70d6a05e536d0f31f330f8a2de0e928dec954d70851e748f23a64be0b9676f68b4807441fd3e57ef7c062afd2c60ae86ca9f823ba9f62c7f4ec6e70f2f03bf0ec390e853fa8e1394d78e0860ff8016bb3d98069458a3c4fe2e11eb6507f1847e057049a3c46feb56ac9bf3cf237813d5cf073540c54cfa7d4e6fc42d650a05f91324e09f32950733b89f13c6f7862003ee6a0fa275bc6c5673c6dafde6b73a5d125cf582970274bd411f4a9a77d67eecd780e7ad98ce4b96d2b9ee9829dff258e53e033e13ca4e1395bce6adcdf0cef919e456cd7f999acabb33a035e830b1a97c63a65b8c80a7270a665227da9e4de097a7bd918b9e49a9ea2f89bc0d1d4e3f41ebc9e6d7d9d1c49d741e7bef8e21cdaaccd681ea28207409ce11dd75f586ea7844975d19fdc56bc98ce8db16cd330a0fc91ea959223a56954cadcb1b460bdccb067df5a8ba133d49d5947a0ef7dbe10e6de181b9b7b5d4add20d2cb46ded405f12ba8d925ea8e4af3279968f195d54061ad288fda31af71a26e7da2795387a461dfc8c715ffeebe7986baf65f557cfb20bf8826ce9e6b92b278aff90b17c914f204be4e5ea80fb643bd0ae6f5a27275a1ff553febdfe0815ca286561f7df60b511717f551ac95afeb1c1ffba841a5fb1cdf1b3c5f137fcfe295c45a21b78fed6362ec96e35f37bdd4f97ee25fc143ccf0f98d42a51d7918317edf05ce8ce9fe609bcf1d62cf33d640998e814de3d45203f1713eb79c31d5bf5d6d9f11b9d6a167f2bce599d76f5f3facb653dae0e9c3ee03bea31aa8fe5139f4046752bf1e8669a1b8a97147352f62317717c831f7ec259ea97e5cdb35e2fba403b12d607f9b9167b0ff4ef931ecdbc5d5f482575cbdbdaef5a4f634bb6bf23c1007867d8c2cc0bd409e9fcb36af7af24506fe029dff2957d3aecf385bb071e15e1d11deb3881f349eecbc9b57b389e609095e402fbe5e13861c2e9ab57b35d2de9dfbceeea1513f6e7856f26b96eb14eb8f69dff0af6d8ed17204f89c64ef6d75fdccf6d7faefba27cc91ffde5d88af893899813ec3123c249de9f55fb49b31e6a5db3378ba81f711f6f1b3c4d2bd64800bab7befe931ed8fefd3e6ea5fbf8fc5b4762d19b9869f410b728f1cdb8f08bcbca38da943a37e97f573ec720a5811c4e5abb9175a67f56fa9d71c4adf11b67ee4d94df4aceb189a9597003d96a627d414c83616c62927c4fa48fdba3c2fdd9f50fbad8edf8a43a3d68ccc5590776dcef344ed1d6e77196bda1d9a86b889fb8aaf2de39cee5e914302318de51aab0874e9509fae2a63d432903d52fbd9cce9eaf168f39e9de3bf63d50b8f759c883719437df0daa839518dd8e893995a47df7105813bab9dbfb5b39a8cb93bdc97dace706d1817f8cdf296e684b3d9431e2a6b14aa6e9d1e86e4039a74701c5053e6d051e7c9dc9bec1ef07e5d5de71931a5acc680d88a451ffd5db02e8e1866e06f80ff1be9a1231e5de8c5f5257619316fb13547af27d222c1eb889e5187f5096a1389a7b0545003fae47309fcf4e13c21d6cf7c52a2b7b1ac97977721d613b4f3474835fe4fd8cf741ea9c903264f902f316e120faeb473b6e735f9cfec605e124ea837d4e6b3b6bf7bf67a1b73ac7be8a34795f1fe6fee41de6f0ef70bfac80e7e377f4d7929e26b57fd0cf04fdf25efe1e67749bccedfbf5f9e4b73d435f459ef00f69547bb8fe32cbf9fc6b98c4aace5af5cecd1b69d4123c3c7e9aa740d479e1d83aee35700fd0807730ce1fdae7ef71db96fe0650df7e5c4a44bf57081f572fbcc65dfdb90a3794ef95fba67c19b51f814797689646cb78397bc07fde7e205eb741fb0e698b6c293a86fbe802761ace748e9e651e1af7a2b5dab0b70e61f889b707cf27981fd143c6421fe01e7ee15bd60efd0b333bdbf825f4981fcb7806942caf82bcfb0de957828ea3b950751e810376955cd50bf5be16fd59ade59de56d7c8d1b0d1ecfbfd3d9c99ca6e0175ce6c77246d7511efebe720b1720f07b7315ea2e6cecfb1c429d3d646daaf50f3739f3f106f1362cd05e32bf2c811dfaacd7fa90b9a1e29ae81466f953bb4fea8c6d612bbb4b5847551194f1157bcc05ed36c28d649357e2d5f37c42db3401bb307e7f1777c2e99a62fabc60c39cbef2bbd6f89bd5f9e83b5d6cfb32457faa039618f553d9c74432ee556696c3a33dbacc77809e028dc13acb3559443dfe8cb278c824df8cde48171a3d9674ad227759ea1d63dc19a4fda279e6c1a400d4570a3d66907e2cf6721389fc970b587184235db95eb295fce03e9c53d5c46529bcb559ca3e3d0b73bd8bb801a6004f9918d38924baeb412e7e8e90b5ed43972b15007c4027cc9f9f6fd54bb2fd22016be0fa065e6105791fa7da43dffa342ad847d0eb9feb1dcca58a96a3b132fc25e660fce88f311f6e0444c525cea27f63e999bbb6f8deb5ec55dc69544df610beba6a849b17520bf598f705c60ce9d7deb197cc6118f5346b309e5ab7a3f39463f07960f3b63f419a6bee9a6471c628cf1c0d74e405f286ccfa922f41fc27d79e3683944b57b955e3ee23a2bc2cd507cfddbbc8b3cbd63fdecbdf8c47d51ce6985d1473ff5fb2ef93d424e417ba9e40dfcf5f5c97ef6fe807badc29ff742e2e68e1afb92b19feb7152d6d4d5f7cb9ac937dfef4d76460efb8fbfdd9ebb5d303fad063d2317a3d7e49e2663f50b8d877e3f22cef09c55693bfffb3cf071ff2a2e25d4d052c8954bf2ea4e0b0bc753c44fd9d3c175c69ea7c287e3335b55f93fe583c89589a6f89bcb7ddef8cdb6cf92064dd9d17086b1d7ad6395e480bf91b6c7c8079ced3be102a71743e3fa6ce4374e38147bb7af70bb67e4ef299d623616271f75f7379f5863d56bf46a5c45bc3df9a8cb287a22e320f62de51d24f120e4bdbff7915f1bdaa8730c38386d0e8a3943f3ccbeb7ff981b1bfc628e45278dc9296a4f49df7756df62da0fde4b62e842082eadacbfb95d98135a6f0e311d69f9d8a615f28cf76ba9395a62cd42cc41ac1d0ef05e8b9784f27a3897024f5569db95f154e9d6cc7edfe8e39ed6b1acd92a5dbc7df0daf3408ba3c49c6333033cb8e87da4a84f7e507a84bfe17ae5eb97a95673b3410f6957add08f75c072cb2dec1df07d0358ff6def57dfdd657cff91c0dbd8a0178218f7015e9725bd8b649e5feed5774dd693c1833a73ec17da7aecfc866ba0b337cd7bd27751b96c0a3c96fe3b7cf76ae2c3185da1b601632d7999b2defeb739baccf7c46f7e94c037bbf63b8df522391b5ff9efb6b361c76ef9be33e5eb633bfc262ea96783bed0be15407df301b16d9607ba980c43513a858b78545ce3f5e7d5dead9fdd459fa664f574c03cb946ccf31556a93f0892fc6b895a2e5493866b7cb6adb37ede91faa588d382ef4bfc2ff436d7ce3b1dc6d30bf1fce83da066b938f7c85c02f3d8b33893080e90cbf0be705654fc1e2d56b9e425bf851cf792a9f87eceb19f27fa02e219af5e550e93405cece2bc7802bd42bb1507c47a39f7c43715d84fbd9ed9a23ff14ddd5cd66d19874572221afa3cf1b5889b78e7c0c02b4b8d61d2a850bc60551b90eb10ce1cc142eb4f9d5a7592645db68e2912379b5ec62c471995afcf9702cf4b96131adaad9e93a87ea167e15a6cd64e23b3766a62261bf57d9173ecaeb8a6318720feaf27eae372adad403b90d54219afd4a9cf9c722fec7f22e6c96ad3caa8c7fa28fa921c43c9faf1e08b47fac1b82f8d531543eb3384c0a4ae04175eace5d67a2df50b50a7c9f68c7a77d353416838fc1435a77d819e90aa8e3b9198a0e4062f5a69932397f5cde4f3e6124bc7745150b3afce91354fa699d1cf55319c620e7ab68ad7a117a1e294ca1d62e411d1d8faaeca3b33d069a2795358b373606855a3fe21d356057cdc3a9eddb1f154383aa5a190f992b3955e860d4c08e1d2ceb925e3c44a61ea96eecc5a21d70c31209d722bf7d8c29ad9e423912066c7cf428397125f09c79a208e95f03ef4d992382d17e51d312a1f9e2fa4cd82b8440bb49c01db8def59087f9b047971c958cc75d6bfa4bd57690bc50fba362af7a4979cb01de5886d63b9651a1062eec9bd29d98707f496cc360a7b575618a7b302fd81d623886f09f4daf215f826caf7a95ac058e9bceee07d9315f474b22dbc8ff16159ee217bfac2db8cbcbf4bc28fa41d75762f3f9698d34f010720d781c295e0be29d7c2931ec30cce7e2275835afba5d7e34e6a9b16464f95f7f62ea8b1cbb88c7abf9163203338db25ef6bd27d9aab7da233373c02f877807648b99df650af46d5374a0bb410675df45636f49394462cec5b4fca5fb67e7ed740fa9ba97d538b514d3d8dc551addbc370f9d07f30b1c8857d945e51d0e78b4b9bb4700ad4572d5ffc89563780ba88bd53bdf19d837511c0e0beccb887dd682ef517dd559ae39a5679c568f90a79d0867a80b8b60d4c30f1d5c5b92846af887a4efdaab4bea0bca7cf95d294ce653dbdb7907b5b77f17253e376b24e8ff84c3cabe0f91de85bbc05bf816348bc18a17ffd207921a461c9b5b2df6cd413ba35d7d19b947abc6bf2f1bdb6c54cc839e9b531faedac91bb98f4c0ef37cf0ec8f3228e99f9aceb1cbebe9e7baaa5a31f6f8fb0928bbed2fc74bbebf8f916078762b85a339e1392e7b68bb840895fc53d807118e4e78e808f2d2784ef230e71fe20e674da1fceb3eff83f71af889b3ed22bd2fb450d67e4ddaa6b43dc657ab4d1670e3dcaf03b1daac588d788779d6d6daa0549aca4bf45adf400eae26a0c82b67b605a9fe73a9e89bf57fe6e9e21b6fd506c81d743baaea4879abca30671340b60fe34b07ec4f9fb807dfbb9dae1dc61b976ebbd330f0c9bf41d2886ada3fc5b1d58e6d95e717d0a71668cf0d99ce321c70fdd570b03632d7939c7f7e6382702e7299e531ca89ac4013dbc97e901d6dd4cd5aaae4b5a63efd0475ced13934b7b5a6f25660db8a0abedac3e67736cbae293e70353a7406a298c132fdd343c17fcf89781d9f5ebb8a9ee9f614418e657ae4fd5ef7aa1fc8f3035972fb51f6e4c3d90a63e53df0eb986427da616fbcc66c8b0ef0cef22c6732770cefb1fa8a7d6da4fbba1f12cf304c1ab6aec49ea4cace91e489e8d8c65b296d1c53550d4afc9b1b49103b8387e51ced71f04766f57df53381aecd67b35879dc11ebd57be89af2ab7bdb679a4e135c931c69a83d462a175baacfc0972c35ecff8f795f83b7a5bcbcf0b0ea0e1afd2dc534e58b75198ea927cafcc3d6ed6c423037750de27c69cb43f2c47a8e3c9f339791ff5b396ebe70b9fb59caf52236ab26bf0225b70f61de523b091fb7cd823bd29faadb21a48ad98d4fb58328c0fe2dc28076ad1ba49a6667e24bf4f6a6ba1b7e895fb4bdd1bbc2e56034bbbc69829bd97fd0fe3ef2216db7a1e79b43ce4db30bc2470c7e2e39747cfb25e13d20b30430e23e3adb5730711532c79349463a818f7873ce2a3fe7de0fe155bf08b08aea849c9781dca2702739915e28c982e4bda015f5be2edec217f026d11c0efc97f2b6db207757e7ed2b0a6e4b9e1fb550e7a661dd46315fd07ff9a5b53873091026bea8bf195f58b8a3c65b7d7b01dcbdcf00b537f471ce88abc568ead385011ab0f6793778f9e6fe0e52cbfffc1034c58326e78c7297fa1a9077c63d0c5260fca06c6f251e1777d6b7a2ee1bc58a1fee658699f4c94ced158e19f4fc43daccf109be193b31b1b3de62be0bcb10f9ffda86ed4d106beda27eb73138e09f10737f29a7f61dd5171f61293ebc67119fea4247dcdbf38f7f9d8074de43956d48b3b626f2b681c1bf7b7b41a7e77df5db3e1ebf4d9c2c9b8b7b06f95a007691b0e5af9e5ee86edb8e2d63370b77106e61e8d574d2bebc3230dfc162e818c7932bf3a3ca875b6270fb667d01078454c26f476eb5c5771ed1587f33dd8e7db5544b8628981f97169f7c5de7e53236d70d2ece5d6c489b1be1deae2dc5b81c67160dea0f235d32fb0b3b454dd34ca43ec41c41e62340cfc3b5d6b158e740ee00fab45cf446102dbb44e8837eaef1b7a0870ce76eafb56e717d59711d7239e87daab2e8d7e39abd937b8289a4f1c3faf325e9f83f19f3456a44690c43f524fdcf80dba6ef4abadf236bee005fc79b4d791dbc3b45d743e4512c4fe5b6cf7df03ddbfb089e7fe47bf10c42e461b87ce85b2d7b3425fabdd93865992f3a94a9c2d6216bc4af58db341c6749adbf4a7f781f2700f5e42d0359b2c50df07fb0e15e6430b5517ac8cf9af7224d9ab94b16d49d8be2fec65bea087458f6a028875f85c61de929f103f43d8e69bbd426f8bf59e4fc400da3de85ddc9197393cbf8479f3975fa4a7df879ae431d07bc06d3842ecb57a9063001ec6dd6a184ccfba17fbabfa7ce42397b93fd2735fc463a9755bba22a752f74b7dca1bb86551e346cceb7585fde4cbe9fb3128690cacbf1f03033389cf436226252e0bb552113b997496aef29a4e4bf4fa2ab7b18ea7043f95787b5a6ee519c7b3a6d7256ac2941f386ee00592945c13e649ea57cf0c1c05aea16ea07a48de0be07eb7e4a98118e1f8caea93923b8b98e0f85a58867e579d735dfb3bf24d96dfeba36738d3a47f411c1f7ecfc226ddf955bd0f083cc70678b13d1f7a09b1eedd8eda292fe1887387e3c5d9121805777af5a9ef05f8651dd760fd25ae21ca81e7cb700df239a9fe2ae28c0dff68b6bf70dccb46e51f47073d5416705602af5159eb6218328ed73ec05c3634fdebfb835cd4224d7fe8cbbef54c4d226fefcb3d42c5f3847b42b85355139b5ed85e0ed720b4aaf93c2987479d4391791f84c562b89bf41868ebdaa6ebd4bd7ea0f772ec150dcfabc3315067eda51b337f128d13f9b558b0f788f9b8b59a63a5f9bbdef946afd618936364f04e56db2d9bb7e2bdf27ae57562cf6915030ea9e77f3fbffd738eb593378be212fbbcdc87e9f319e354b7de9758ffe23aca6a403aec869f5139f13197821e9be4bc95cab7c1c8133017ecf754af173c6d7beb5bfa1cd1e62e1c6aef05dc400f715888e3d95938cfa2ddecafd793e4ec296e81a8a93878ed428f98bebb1d23a5e11ec4f7cc61df8b5d6d7ed4eb44ceade26ce002e5f3b2944ebbe8f7fa0efd8dc71da9098c7d0267730e9bf15a3da70dce89023565caae8f67aa1fe7166cadc01c2b3e0668e1d03d2d505b93f7d9216f6b9b3b5df2b0f4d14f84e970dc182385bfca7cd4da58a32792e80d89fa440b8f40d4fd058f13b9895a2fea2988bdce7335337355ebcfb9aa783e622f657deb6f301dbbc17385b1f8b2a27a17e8e943df7600bc2c1f725a75ae988f72ecb9617dea6ffc02a3d9abcad94fb9d5e008d27911f45786fdb1ce5989f1de589e7e46ac8ddda57583b51bc95fc1b8689ff1ec257d50a5fe7d6472ffb7cfdab5e4d6732b0686fcd291e722ceb8f2de3a732d078e66ae7aa627387b339e92cc5710df1afe9473a7e07ee2beafe24d61290d692746ad8e15d6ca0b5d2b08b5ccc653cd5b559dfbd0b3d3f44adab6e72dd83b141847d2d2ca6dc4059f715e30dd248e6baacf29a475e07fe64ae7ce1b8d1f9077db9c5b5aed5f7ac5b6e1ccb47acf37fc714d2783629ff2ac4ff7e43d8b3d8a14fdf4ba262f57f105707d523c69788acaf8807a2ba03fe75ac18bd04cadaf6f8b3ee51a3eaebe06eff46879e8a1e6399c6308bd3bdfe6fe42b236bb43bef27c34fbce4be8b0825cd9211c0ce1cfbd2abc5e4e624fb07c1aa7858ed162b93d9e85ff9697cfeb535e7c83c75c9509e4121e5d6f65d490f6588393bdab11ce6303eb14f07e55bdefeabd7dc019c15a3c04bfb5bcf693ce8a5467218dcda971ef9ce31ddee9b522f17d5dac375b6e5b1e8d1855d2774d2ef318f4cfa73d983f45b473c5fd50dd4f9e6dc93b0278507426c37c47f8b989bdc307ad28d57fe27b4219f9e4cd6eacdb9c6ad2124f41f753fffb13e30cd5e6bae1429c7bb43ea2d4ff511e304a838ee7dcab11ea887db5e8cb0e8df9c69ee5d6c2dca551fbe367213dc7477e5816933695dd87bad495fccedc1ee8abc967fe1f3deb5139567a074e41fa99a84dd2aab9aff74a591df23f889799dc8f66fb82f62c392e0f2aee27dafadeab5ce686be597c9135ba319ceb9625d574a5c6abc489b46391513f75760d7e5f9c3a77292d7d3e30df1aa6b95cd8a1e215ae69be907f3b79b031ffb604f2901ef6ebd2c309cf46c0f190383f91f7ce512b3a3914d6947a6813d4ec6af3e97148a74ac4d84b7d3f6bc55d29d49eb974671473b93762da93f8f1cc1ffafb0dd68e7cb7199742d9674df89a58d279a29eab5fc1b69973cadf188b7d47c430d5778a27d3aea60d04b1c6a6fd90d7ba553db7add67d98bb715b9fad4b7955db77764e3ef0b39037c0d67be4a3a787ac891a35f3f4be03fca6323dfce9d9d19c7406af7a8f4de607be45f81063ceef107b10df5f0a95bb2afdd325cb9b51e7f839ed0347a8223e37cdbf25d526cfbe15603f82e620f10d72be1f271e5fafd177fa37a1d8eb7fc91ed8f617689e1f42d401de8cc8e3e2ad6bee7f45b519b568096b7965a07d97e4cccbf7bedd7caf37da8c345fb0ca458de22245cd986b0e7c8fbfd1136a89833c1fb9d167f683d8ab1295c7fae4bf5a69fb61ace9cf1e645ddfed311f4267c97553c559c083789ffcf7725f36aeb1b1eef71bcc7bb5b3ac882d3b793e4c73c271113e09708a172337ba43dd6bd41016dc6f193f1daab1c91ceed7957abd909f28fea5ccbfccf3fa17f5009afb34cb8f185669d7039e0cd41045dddea1bc49cfebd137e08b6902b0b32eab7120a6b4e8e6c09db405b759c6d0ce8f86b6048eab35551cfdcd90e579bea6cfc2c6bba842fd2c6ec9bc48ee3721e97a6b782b384794a3a7ebd17d9af8c320be7415c73df733d4df6cef9d461be82b9c9af840cf29496ffd1400968d7846769b3f84b79f0d9f26c9506964ca9aac035e5de57e897d178eab91cf7d611f87eb74a7c6abe8187ba3de8b62cfeed1de8ccd67477d1abe773c57e48fd69e6fd5f9d9ead5559caed901cfd2d51fcee4b236a378b51baec7cbe2efd16e7834a838861ac39a86b9b876964b10ce527d1fc360fa0bc0a1ca3a206858aafa14d30467d7e7307d4fc949408c6e52b17392bc467aed0335b5d5e756a4614e6764f539b67f913797a68d48fb6758fd32c688e10aae9ff8da72144e8c987ea39e835a54180bfffcda6e1054e308cea49827db6f566868f36ab165a1eb8936f491af0d5d7cde93ffa0b97b5fe95ab2de77dc32a59711e87b13c572f01652316df3d8bee789585f5fdf96e97f1e5bf2fc43b06fc744e8fb97f2c588750c6373fdba1fc16f2d3f3c99fda1c239405e7df1dcf6efe33cd3d28ddbeb0c62cf12dc0be2ff6531683cee4af4abebe99c0dcd5701df9fc33dd259a66d3fa1fd4acd1135e65c7793e5c1022f21fbb8ba86bad4e29aebd80c8901880688995a822e067b5dcd21c257e0da931c50da5bee1bf50ec467a48a57148d87845de11ad1e34ef8dbc4b610262461988fa69eb58bba26adf34af696ac9b73ce697f8d3dbf9dcc930f840d92e3988871047d0b398ea3f255f76663781a79ce60f186e9e09eb00f06b5943d608efacc4b486881493d5ef7be818769687eb3b3d642e504f5f7a4e4c5332e23953ba7aed2d5796e7c5f29785c8c1f2bcf51b21e28eb1fa3c2855ab40b1eca93d528fc831720afe12788e1c0381a6f3b05680d80079ed5ce438538886ba1a18f4dbc1d6f8f7cdfaa8811c7873a37cbd783c2d2f877c42d30d7f2d8067c53b1cfd1f33e96ba19d9b3c2e8af1ed0ab02b12ab4662ea1eaed7da2f690b11fb0382074a2240774f3d1c2e9ad7fbb8e2d9b96df262d1bbb7b69eab56e9d58e506e5eb51fe0dbcfbb2cd90ceca88d7faa86385f486de80b7df69493817d00c65de3faa779e3d23ae50e80fc93ed3d7f315f0f81c3ff70b34c25ee4fbf2a319df452e24ea8bd0639d1dff6afe31cf8686bf11d62d0ed8cf5d56f05de5a76f7a72b21c53ef1f2603e663e0aec7b3c34ad52b43fb6ce9392cab595ae3b10fbd1ddb82f74d8aff83d6139bb79ff1e22fd64a5486aa8f6a2f2dd3c703cf48ff3857f2e35f3ddb7f9c2b2b9a2be7ff70ae3c14dbfc8873c5f9f1dd5c9994dbad3a73fcf98cd2c085a463d2eecfb650877d66be5da493403a22b386466dacf727701e21ff793036bd3f20b76cc9552c3acb8b3ce3ba18b6e3c857961ad3872ed50b2ce8651e4f6a0e1e82dfa439eb4f66ad7593e2a1e322cf28a67360f1d01bb5f4ae0e81ce4f463c1deebf026b25f8725f05f43fb4dcb3c3fca742c31352f8692a4fd9a9f1591623177deafbc5c84d50fea4c983f61acb21996f8eb6df30fd2fd2a6cc66a81f8f356038174bec843cff678883a830bea8b3bb8f1af5b337ac81d0fc7716438d6fd18538b1d4fb55b3e50efa43c70a752b504f2739401e8ff9917db8819516ef557b0ed354b60fe8cba7fb1c742ead3e3b8e4f1e59d6f33778691fcf054bf0214af1da0e904bf871a1e159c883cc373d4355dd70fc73897368e6b478edbcd39879379e89ba76918b9717a86d2b8fe451f1facc719673732eccebf5a4f243b96f4f1147b4ca12d007f92a3177ca43c53ddaaa986e61afb99aa2a656b19b2a1e7578823a5e6e75a137e280ef5af1d0c11e7bbdbfb562f199768ab74f1edaeadc6cbd9ce32bf3ae88bd0eccc739d6833657f49377b7aaafdfab80d7a4e2bfbda2f81799387ecfd421243d2fd43955be688a83df9934eac9a827a479d3ca5a01c3c718f773012f126f0cbd8f0df0dc2ea62e35d6d9c7addc824b6c628d8cde8b5c27e46d26b8b2b7d689431c35cf45ed4288f967d00234380550077846bd6f7a96aac73f3e14802188922b715a45fe8b988895737868720eb4df6f1f3be9991005b17f7e56d7b8b23ba81fafe501ff2b38167a5f226b0c8b47ac9d02bf2fc01e421bafc8f8db37182eae33cff1b2cf175327f9a60f04d343594d0c1fed2a31f7c2efb133985bfd59431ef1780b559f4f7bedda0db2ce1162cf19bd0e9517b3d87bdc5398edf0de0abbce1fc4dee1cc5dccb3c57362fd15f96fc40df83f352c5516428fe12d5439cfa3b3238c64ac7161651e49dadc9f4c0f18c61eb5429651de7c1f6a61de7fd0d8e9673d887debadd285e9c45aef5f1febf2b3052f8f3afb524351e608b8a72cfac0c7d59e11f3793cac63d0883b208f807ad580999f7da20ef86b1f3d227cec6113be5be91102767f4f1a74bf1cdc2fe1fbab00e6f5644e7da43a8e632f478ec9f4daf4dd69f26efc3de8eb95776de329e683bd79d57922a1431a8f586fb059cc6fd1c9431f4b5673b8ef803eddfca13754fbef27eae399afcbfcf50ef71bd2413eaafc342d5fd05fa6a1ffc7b5f59e04d7c9f0da64baca25eac8289e7fec01ae5ad3cce35848d25b8eadfa1c23b522061fd89fffc36f363e2ffbc382174ffa7dc5c96f8965a40be85d5a9e4fc4c75e8dcfcf9b7843dcff02ac8ffc832eddc057badba5eb11c799c7690b34e47cac1d493f8d641064630d173577a536861f07d4c78b353de84ce45d96f25e487f21ae22afc6e09725dfdf013d7c7a8facc9efa0cfd7d663a7bf3907a1b7198ec2df2bd4e0617b91a10581381a27df2d85df3a9f4faeae89406bb9e9dd185b1f2be8455789af7cc9698c005747f84e935b7a211cb2e6d962f6adc9d3342adfc917e5ad5147996733999fa64a07327946ad1ed494ad42a925178543efc577950e6f459aad33f021cc352c86e21879a4e16395c849921af07e06ba27a4cf82b59ff4387ab25173417ca717cf0666ad8869c87c01876cee4e4f4f88053f0cc17f486a7910e7cadb169a371a5d4fb2f75dd07608aee071b2a25abc787eeb910f1c496d2c48df8efc5fd9f998f51dfbb01e4f2bdadf755cace4837e081c87f28f081bbd4c4d47e01b1f5bd51369d3d5b134fff3d1ea159f3d8e0de9fa0cf64a773269f3609573c7ffca99ff462c7bb0bc26d3fcdeff92c76d12b778dcb27e521b4f99ad1ff2ef6b3b4f304fbf1271b188f9eb8480d5a1be136817346a7e0daf7cf2ac25af5ad6cbd27c745b9f39f7d497f13bda8bbaadd2bd517d6ac2544ec4be52afe9b8d7f1c173c979b61a79bd86df12cfef726bef88602f1c114fca273fa7d6beb4d03e531adf1a8f00736985bf417eaa893f50397a7af86ac1caf35ebf3acb228e68c0fba2668c044e4b81dc3ed231a8c743cc133843c6811e93514726e8600fddbee8ba0d4227ed563fe7177974ec40e39afaee7e84b86ef44c40bc5b0afa7a9fce724b67cbb89ecf3660c49fe9ba809ff1dafb021fbf00bc505fc650ef573db96d173ee755ed756ee937076bd3b5986f8fcb637accb0d1300eac2f6a01c659f9d87e812e96aee3bcad9e4d1ddb54e94900e620ddb8ab2ac7dea9bf9dc21a979e328b23c365efe88c0b7524fb17f9a646612b57a9bee704c7c7bf46c03f79406facde8dfafd8c8f5d11852e9df3b5ba444858fead76aea65a13f56956b1e2683865fe3411f9510fb96030de2f3bc675e7f811d427a4f31ef097d27b9bfabd21f08f947eabac9fc7fbe4f1169f2ba1fcfb23d038a56d7a08b016ddaeda03ceb0172c1fc83f1e78e6884b7772f2b17df1dfa106e5573972d3d57e07fcf5cbf36f8de775f441bbc4d2f98dbec0aac931903d6ee51f17f74f8f5897fed5e5f980e2ffe2ba598d783fe54f7a248cc7961edec1d372b5384e9e1e8ed227ea658b3d1dc63313fbd752bc2f613ca3f2ddacc9c935e2cb585895cbfa9a1eade94732dabc8b9c64d11f7a1de496f7eafc5fee219f27b81eac1f201ebd70d2e1a52370f4f1ec63057c396706fd988997fcfa5c0ace51325adabb11af2fa551ecd01956e62b3ef517c7229781cfa4071957b2b15bec3cc8cb25562cd1ffbde0fa73717c51b9c2b8245d8b6ea0d5c18e785d62ced03588d8a1bff7f3a45f73b257b878e8e15d03cd7bdebf2e2dfdfa3cd1336f89412aef0bf56bcbbf7b2f5d8b588bbac695fe2cc7b7ee59c51919cbe233cf9bbaaa8f72503e610f5ebdbe9406b1d4b579aecc3399d65fb6eef535466b4deced6bd7f49c2e0741b57b067d21e4cc928662a33f996a7d5df97babedacc9e7915efe50ff95b90ee8d0cb9a3fd3aef44d6cf78cf8dbcf9742c50e5dbbfec874b54bcec39c0471003d0959037576a3bc5238113853598837e33521fb11355829c75c66c89d422edeb37c6dc9b80a1f4b2b06ed2f19fb743cbd13b6e1d8ed0e7a67f1da89f61ef4dadb114e72cf3c8f658ff0a90583dcfcbdffe177518c6339ea82f911c79dbbdb7510e56da2f4c522a1eb2734aabba8b310cdee548fe2c97394ce57a262a97d81b97a460ff66adc69ae39be363e292f93d737d0d662acaf716fd19fdcc051ee89fb5d9f0998365a7a4ff9cc28d7f7a2d4e0a4451c7713c0b395e7fb4cd6eac2d70be8f0d7df3fce2dcf5a4b7efa432179e4e315e4c75b89b1cbb3f2887bc60be89cef3e3cd0f64ecf6739d7852fcfacde07c308fe7ffc73256ad262bc7bd8d3c6cf3cab7e6e7250cffa417a2e1de9fce3bc313d0e9efba9ba7435fb601e3b9cffefccb15f0e6744e999c4f8b599aa69d663f49be1f6ae4b2be6bc52591f70256f26b76627035f2f7967a364c239cc72de8d19bee538089c43a87aa394bb383f6c73aea1ce22eaf9c69d02be1331e4b9a1ddc9eace2c4761672c8eed9667acd1c6f464ef79e0111d25550bafdf7c9de371ce94d74e8d73f07d45396ccb79d5c024ad5aea333ed4c24c1c92ca9b78ad40d6cd4ad4117f547e1cf378c33881cc1766bf7b40af55c433e596e03b4b7ece1d3e7fca8dedd2259dd4f5ded731e636e17e880fe5bb98f3ee0f6dcfb7aa9f6ff33b2da3a72afa92ccf76e8b3d5cd9eb66b96f955cb9ff8bd9cb86f5893831de471575c5813a9ff5f858ca3119f65d399edb4e1db7e4f319d31e30c135b1473d1bf22098c1da5d8e307ffc58c3fbd2e33b7aa5bde0ebf0db990738d457a55957fd40bc7d895a15b73411e27acdedebb1cd89ff28f39d91d19bb4c8434bde5f8c71790def8d92a1592f5947b9cafd5d1b729535fbeeefd6a9af34ab57c405a8afed3d78716d1d17568adf6ee2cae26bfd1d65acf4705e61cf246c798e382e3cbf6ab541381b2fab0168667e62dcd7d73dc48e8eb86ef4ae24fd76bc962c19aabc4abc57ceb3671bb56c5007aec0fb14ba231233fb065eb7a5ca11c3caff327433ebb302c7b1ebe39fb976738e948cab49f919fdae71b6ac8cf961637d60c6b51feafbe39c977974e379a89876eb79a85a0ae7d5bdcddd826afbf2fe2faadffab6505ae925e5db67532b4fcebdfeb095e745f14ddcb7e7fa033e67d7c6bf170b79c65a19eb48e17dce6abd26fab9c6d56ae99443693de109f5cffa9d866fb2d24b400e3ff3bda99fa5d442422d3d879e6f503fb35efd7cd7f1b4c27db8029f9de2447568fa6db99fffbaa8b3e26c49dac167ac9dd1f8d318dbbd9d877306b565b56b5c8e36f03a622fd59c87676217982f243f9117bcd53d513cf0598df22bc560acff7dccb17e3c3bb5ac1bce21b23dd0fb5bf0f12c3a1e7a910b5f05898dc96693c6bc8fc41a9e05b1ffd9d4102a4e381ee03f2be782b78c28768702bffe66877c3c52ef03c7ccfe05e7bd14eb5da247d4a99f9de56fcd9c9369f21a3d8725e9e75af8fd7a9c3bb11ee4489d4127222ebf6a3c712d7ec40f62dff899438ef32aeadf33c93311f3def2e35b1c24553b89fce12a2a415beeddc75ca47c53b9f6a498f8c01ded80fe58e8245fa8e332c25ed409cedda073e4fd069c8471ae18213664efc1ba8cc5d92028e533fa595abfa46e0eac8b3dea44777c950bc5c475d3ce80b257b5c31cfed13e8eb1ae8a1ae81ee024a0966005afdb6b3854731e712fc91b62b4b202e3bc17f980ef3ae5f5da4a06b6c4cbde5b0bc73da9b5fb13fa58e41be8e1190f71d0f6d969ecbf71e9a0d751155f9baf17ddc7c6d9673c09dab000d5e64ef3428efb5f8843c2f89654f5b3116b2c0bf07abcd7cd50dde707785427d198793f9713e4dabef68e30cf187f80f81cb0bf42bd0b359e403f3ca878dd211eede2fa3b22c74f405bab8e35ad735a9efd836227f2cd9ffe2efff0a986ef843a2689af39c84f9adc5e67a7f4717dfb59fc37383ffffec4daa41fcdccb93f2a1f12a18f184e76bb560e45553faff150e8c867745d5e9dd708eef4b80a5e01c35a74b0be2473060bce804bb5169f5f62e65729712ff17efc58afd978d19ff96a3d245a4fb33c44addcce0d5d0fd6e1c5397227e38a861777180f55e6add94cd7b1657c074fc42de15b6061ad22da7c62dfbb258ea87d60c7e7483a39106e86fc9a446cad5f7f8e668fa83db9357da73927887052a06b48388eefae3f767c4bc75653cffe076211cb57c00d970e9e05ecc3f9d6fee8bbba76db63952046d76fe7939f4163bd547585628bda328227c5f02313d103da4a5e76e9ce98d7036928d4bf233cf9a3c1703d22be74fd6c0b51abf787d0cbf7c5f589baaae00c8befb5a42ed56a3b3d118e09f3a733e626993f9c532fcd591b1aeb6d67963c0b71bdcf1f704ffdf4adc67daa7d5aab953d336dc533f5bb03c87337f5f3577bdf9d891768f2a26ee85c2d6e5eff68fdd098377b79ee702f8099f1298fa1bc5dcf932cd24fec234655e6459b39e1140b2d0f363489150e706a6bfc9d0cfad05dcc5d7d6bcab0f903f95c17c7a1efa81a7832d672f6c2f5f9b3e0f93a68278abc7a21cea0d353d07aded37924e6b51b793ef73fa1cf33eeca3f7c9e7276392f78ae3ed0ef37c1dc3d42bf3b237650adfcec03e6d8c9b12e5bda181fde0bb7996f2b0eb8ae231cfd62fdf772a2bd56df4b1274a23a4f4cfc5384fa8b52f3d5a7baa5c8cd286f15f1ff84de2d516e9bf537cc15321fbcea3bf25ce876541dad1bbce0d91a6a72e7609f9c98cfce58f59e7bc1effb6ea8e72930cfc09f68cb30bb3d4f61a9e76ef83657b5f2a51b7499f686ae0fafce8e4fb6ead70a0e87e05ef7e6a8697eacef25237fa0d2c61ebdd923a5fad613d4cde4fe6ceaf29336444b6ea0f1ffbc91c2af5dfbbb7fdd2bd0871bea92e29c7763af006ea1c899d06bc3ec17e4f2f3975302fe3323a8cfe0f9b98bb1382a8cf571dfa5b5d37a0664fd75d1d71b2d5dc09450ed44f602feaebe063ad8c5766699b1d2c459d531289d24e21c93585d799d2f21f413feabe7a5f215b4afb767d107b97d5e1a6935582d47e77a8e423b5cd6fe806b20ea71bb41aaf025897d94b5d9e497cae37e61ddb6a836b25f08fa0689ee730479358ddfb643e35172af44fdacf432bb601f8ace4a77d8934ce9fcc5ce4a3da51df0bcdc0adc4356583b3c1fa02696839a4147ec99601d85edf93172bdae2deb0e73dd665f693c61bd509dbbc5ceac722efcea409ed7c0bb455bf457282af4dab4f0faa2d91b60aa1e9d7cac7a01a43b98c575be083809fa5c96bcd15c905aeb3ee448958779f78d1a2af59d9d03e84a7c505cb877da7d71b826c1166a1063951b9b3d578527456f23ee3db0f4a40e78be72a7a217287e377b03adedc8177ab14a3345faf083873fd5206f6b40f7f0dc1b2b9d215aefb32039dc89f5926c51db1b744bd09397be3b0c92c3599cf993ad158e425c83ebdf47d02310be6a517d76b254ccb28fc1cdb9883845314e1bf2733ab2f1e5e33ed562d7eab5336ee212f15c715075c24fd4237be880a684f9fe1d6a8ec48945fbcae6a8be033804d7474be363cf3ca1392f737f7c2d139a63dcc74e6ab9585c43c8e047302d53c02c107762d6097f37bda9c0cfcbb3a652b747c3fafa80a738a60bd9432b2dffb4444c528bde96f01a11ffeea13eb6aad385d659fd7bcbb915865e5740d83967d3ccb988b76daf5d33b6524ff259e7dcd1b5904f57134b615ba0033f91beb725eab3eb3d35a1b323b1710be09a245dac392d8e38afbd11e61a7794f3519c022f2ee44945e33bd84b72d4384b1ccc69aa8d812d8a691d30ac945127fd1e2b65f75e003b11fc36f7a244c3656b757bd1f7505c3c07713a57f8ed729fab7d68bc071fa028eeeafd053987dfe780bf8c028c85fe6b009a62caaf9aee5dd308a4ba0f8d55da7f0bae9ab758e55906d723db75504710f665d7c0bd4b5ddfa72076afe86ff212b29c5dfcee5b09fb45a2b043991fc1be266b5b422792c576e80507ecef5cf73ee99656ac698879a39d986bf95072069eedfea4a810fb6d21073de2b98d1c7f8cc5867632f2beb0a6025c82e454c05ecd6211691f314f1ee6ef52c058644abf330b5de4214fd0afdd460e61965cc221f81b48bd3ce4cea7fd1360cf8b873ec4e98f9515738d3ac5f5ecbff9840b6f786a3471abfed0d08c92f3d1c69ce3ea53cd92f6ed44e281e307e42076eaeb891afdbdadb342fe2ee594853376555ed25901cecca1d79742b349eaa5e09865c91d3c872569f3f4eae724d70769643cda7dd0aeb8230d82dda7f2f6dd3dd9e89d2d3c95a177b5a6def2a18e35a9d2c49258f837f252cac62eeabb9257d7acdc979a2e85d2c44d1f9d8dee232ab8418737bc5ff0906fd3d68b92b996331a75040ffdb837a829a1735ac3dfea9eba6be4497698d6a2a6f3a0bc0f932f8fd68ad2029bc19cb072e98d626aa41e9e418f668f7dba136922de9f559ea87086fe7e0d73a39a4d818f21aeb9f215a7b6b01643e9d332776757cf551aa750ff203d207e1d153d131f359dbd97b295f3b174dbf4d477f65af35f1dcf3cf4f41ac01cb1e03588838fc85d9c3a3057cbfa7755ef15bf332a2ee667f9193495d71ce0f7a53b5bedd5120b902aefb8b4375aeeb11f7b607e2c6aef192357a85e073a375cde278b3390a3cd744ee7e088e70d5cb789d5fe394d1347e59618b34e2bf220611ed39df3ca42bf911369afc8cf600ee96cb0cff364a33638f927f3f53d2e07817d7955f9be53e8fdb79fd493e923e77af5dad3b990a9a8d5c83ad2be440f055f698101f6bed8c2dad99d4d8c54dbe7128815e02de70c0ea1ee19f5e9438f7ef18967eaf53e87333ec639ef45e993885ad37110241becb1fba855e0dbf04c7d4b62f5736bcae33a780f40ccfea0dee3c126ad2dc092098d937a0e45b88f3c94b06ef66bea29483e00f0cba36d07e6843f313c1dd332847a0fe11537662daa17336f1b35e617c26413ce78857e63e195e968a9bac06cd4b25ea40ef91ef5618ff59c61d840569befc09a4a0c9c921d5c356f7fead9516dfee45ba0a37824cdad07fcce77388b44d7cb45d69ca69fa575a973096f65a356c2d72a1618b5b7e077ffb97ef6b9353ba6d1b3e224fb57e161668ddf8357a9bbb28ca74ef8e25fb0ae233cb6654e2e349e63f0e692ba282bc485ee9057a9c749a9cfb3406eacdfaa01e23bb827d29c8b62861d27ef7cb9cf1eb0cfbbca74cc68287b905609bd14bb073c94df4beaedbc534d15f55c2b15a3327d0c753f97621bf039ced7e47e85fcba1879906be8d9da25d42627eb17e69b403c40ca9d00c7931cde516f2eddd5f7bc51b568d051bf7aa0b3117997e07a3ed77ff714463c720ad0819935fc8e9c016133155e0ff00ab00efc7487beb02b7586040e0fbf877f5c23c7e02544ece20af2807476a2fe17e9c1919fb9ef425e899abef57b3b864e4d948f00c7a6b84590f75fa8e633c6735e2174e0764ce3c587d76605c32961fd07b50ffa83a0dafd56f8e64fe29448ad3eaaa9b89d063643685df507411a9c3df47d752bd0b6ca1db58613e6c384bd65aaa9af5d9d0b933b883f7d2b4d6c3e3e47ecddc3fed9c51e8c7c4d613d131ddf6b99dfb335bfe78ebe876ab5eb17e4d49f7dd4be7f233e817c7e7be422d8878ea923ed09dd0ce8a5c97b271f6fc05a95a6ffb8ac09d93d35bed0ebabcf21d0f7c881e302d771111e7c9a2f87886157fc7b2af0c052bb6ce40fffe23bd96b41d7e861e13e83cfc63e77481f033df32fcc8f1dfa0395cabbbfc2c8c75a08d3a8ef911fc1e739d4f69dfe3be4c9a4e76075897f017cc25d85d75579383f651eb1bda8bc6a548e0bd0f234be43e65fb8ee16fdbbd0e0bef03c907aba70fe8daff950e0b62faaa6f04cfaec317d2f9dbb138a9ff5351e1cc0208451b8557e00d2d345e15cd317c20cad2ad06729cf8853603582853c3bf9d417deb19e903a3344532bf80d387addab073c2d3d4bc720b3bacc8747b58403e143a44653dc868d215e2cf634451c909896cf25de07f604351cff3cc3da8c033d70aafb6cd003f2113427a51e94d6cf929ec6a5e6e14cf503d01b1b7fe6ff0f737fd6a5a8b2458be35f0941f3968fa5804a4a58209dbc2938cab2cfd44a954fff1fc46a22406befdae7de31febf8733f6a95410a259b19ab9e6a45cdf361caabe80a06aea60503f81aee34ef91e1da7dee86d3fa3fd5d2adddccd08ce81eb90f25aaabe21cf62d04752bcfd8aef3f3b59945b5b47e5b0719e58eab3f2e9b390eb8f85c5386e83f399a01d423d9af2bf6bce7b26bdda1f079cdba6791fc02a80bf6e409e9eb801f1d9d567729de33969b8f6eab0d0de5bfd7ef94acb803837ac9ffc8e53554b79393edae7ea3ed6a2fe3ce25834d1ea1ab1bb9865744d6c2a3bde27bed13dce578ff33a0d6d4fa8ddae153f09e006866d8d837adc647ea8fb6afca9f6a1e59ab5dfe8e0bae1dad120d7ec84b24fc9670e672ffb50cbf19eec53b765f7428d6fed936ab04be277ddee519b682f73d8109bfc84d8251b0c973b695fbe82edc6639d56d0493339bed996ffa2c3c13d541dcacb732fd5bc3f6c7377f863819840e713fb771a985fd29de71a9e56036c9e6ff1ad401cdc0c7dd3f5ceb31b3d8695171276fd25ee24d6380de4dfc547fa0bf9c92b3a6b4af3459d4e3e4f5e95e3868692457d93725c1fc11678be8bd8ebe2da1e2d25ef26f41f826f18fcb9e64a3920c935d5aa936935b7f5967d4a85bdd4b1aadcff0778d855dcccb1c9b94f91776dded7305d1a4e96facc554dbf537fd6ecc1b8ca7b6bdad46d5c2d7172fd0efec4aba2d599f5fe11c0cceed88649fc987a3ff89bea0ff997fe058907ab649c6b346b9253e6fa884de55b7a5738af250e7f1cc4e15d7f3fe85392dc13e7605b687106619b9ab843c905905e35dc6162d56b8cb4eed62a46f8c3f79b3845fc5b8ff78cf67bf57d25ce31731bf7e5df93bd15fbf153aeb7d9037dd3c7d357e3ac308b14df3156abd4d662ae381c8e0b5371d9d77f47ed33e6efe11e594bf5bb2511d52e88c7806aa3eadf5aef70b6f854bfddd64f535a0dcb2a7788cb4f69905e4caa89d079bada326791ea95d1b093abfa3eb04e3b25d90aed7385c7047f08319c26eaa1d3d9a4ae6dd632982f6469d17b0226a674bc93e479c8c4b030ce3de69e68fbd5f1f553b00e54d8ea61ea715ea1c8ce4eb3279daec9df94765f83970d72068ab38c72984d6dff6a4f58ac1be56dd6d1c6c11c4b8f73dc99bba475357302de0fb394eb26f27e33d620472ddef4ecc89c64b30f57f15ac63fb9a74eb8640306b58f08f18b457c52c967ed4783c65669058af38ff9d53047780fe72ff19cdda9e25ab481638c300e71c579a8b4ff5bf90c5083159c8bee09caddaea00fc89ea5f17dc9f545c1bed18af521c2df615b7f24ed8d1bb58d2831689e757e69ce69a69d0fe43b23cee533e1b4e7d9e0dad0a88c2f74763d5af9aaa491b393cfaaedcbd478a8716be58be9ac88ca61e31e59ae746c4de6acfee2fc3b9e4bc5e83e6cf8f20d9cc6ae9d5b9f1647c2aeedad36c7ff7a1cb6f2c41b8fec6e3d5e802976553e9c7ccab44fdced27c2f436f516243f7a0387c47522a9f7003e79cc768379c1bed4fefbd375c5979c4bb96f7714677eb0465a4a3113f201a67b35ae47fe1d6369001fe8d2f01eac359fe59f4f1a5199e22c6b8e37f41ead89372213d726c6bcc33a80ef783e0a437cad08939eeebb94f75a47989f8baf1f2b87b1e082e6823177872bf95d5fcb1de9455f2daea145bc3e3baac6b0e9e2f5881b757b5c27cb3c1e9bf747dfe1784ceeb59f945f7f2f0f57e61127dedb281ad46799dcdbcb03e37aef5a0dce52fe18d4c254dd85f05f5cf3249f558ead9f6e483ff3cd27feb0b4ec317f5a7a259eaa8e309afb2378eafd9176bc479c20946f5b528f36c616658a7cb856887aad576b6934f5d444eddf513f8fe249026e1bd5ff26ed3cf437e457ee5b975aa31ab78f159e290e2cb80f2e6eeccf65a5f27290b73d819d6a72c6bcad14e710f2de26ee1f30c1a2a84877b4fcbd243c49b6e7bcedfa80b54f79f696e81b4fd037db13379621a86f907ca8cceb854d7d98c65c6bd86fa56b01f5c226a6837ba58b5bc83845bd5e5f74f9bcda529d32be61ae8b38484c8a434ac9872c31cf47c13a0ebd2d5d973c346e40c26d1d73f26944b397aa506725e1b5b3fd8efc2ebdee5d8e5ed5ce77bd84f2742ed750eeaa262bc7f6ec3b018d1dd52a5afa14a4cd47797bbfa334d950930ff8f0ea353a5a472ed6449c66ede8c035aa536d0f1bf3190d3817a2af9f068eaeb679a48134bab672c5724eb43c4b7c639e736b409863779d0678b69f778d5ac2531f48fb9edabe9837b1e939ea2cf8235993b7858918936ac0cf5b8c88132be9e1da49d687e0cf98c1b4cffc54fff5da28ca999fc2cfb0669d0c0c85abee908d8ffc8ae2b8b2c7bda2e699b160abcc735fed4fc41e60ef5af7ff7376826ce9d4f0ab947cb707f30adc99eb3193f920f0750e67d69659f2e7e284f1440e3859c01a72fd3093dcf87b88c1ceccb7b05418c941d37f8eef69fdfd74e3afddefd4bfd0633d9d6af384518c31870afb05f24d611c70de0830934dfe50c5e5791d516e6da9f01acdfc9b79254dac4ad07b3d547f0de7fa47779bf628e42efa97362f6d6e09d27dfc2ab00ec375a8b4e8113f7e89cf2b0c0ffa71f873d6ceffc23edd6334ea8ca03f45a0e6389df9ee02eb27b56f479c2966ab2f09ed3be1335ce6632f0f14975d8f0a5fb1639b3b8bc12745dced7c36e67cd149cd7f4ef9c473704c58bf51dadb662c77e2bc2f739bee2b5c3bfbb5d4c7877bab6751b1d4fae812c728e1463e97acbd7e57583c9b7d994fd677a8e368ecf7a6f300d6a7b61e63775fec90dfff71e1585e8c396ffec5bcc2e6059f5b7ce4dbd26fe32622badfaf2bd7eb596f27edd11afa5a9306a57955beac150edbef39e35a3dc5bb86acfdc17c9646d0c4a1d1d965ae887757c5bf5fa533618c316272f87c2f0f7de229f858a95e4ed6df5e9925e6db5c43f989754c0e7c1f2573cf96467b5facdcefcdda77c69860553b1d132769795b72de6443b9d61eeb32a6970eeb2f8cd866eda83fb264aecccda419a7159c9358a51bcad1fce67504f656aeb7e556e13c48ef4c30fe2cbed5b65dfa9ce98db5a4d6b5cf897dfe31c570b5dd46de778eb5d34e80f3a8f06a91d45592751ec03240ad756504b026a3fc494f571c5d1bf207e590f52f957e73fddc909356f5b0237102bf7758fba5b6df9f80ad9d7c711c93727f86b2f5f3aba05e18e4011dcf127aa7fe91ea0a859dd339718df11956fbef840da9634ed06a3ab026c6b1a0bd50ed148f43f21df128bd401f0fe03eb9922ef6276920bd1b27f0c3e236874dd3175c8d38be52e71cafcbc55dd5ab28b663bfe11660dc2b7952e5f7434bf5c04a7b7b4b31c6998d4a5a9b8f88ced8b84bebfa06f19c78cbb7e12fe23189c8f6d6f151bd6e52d4b1c9725bf10e879cabc9094f6e854795cf28416729d91b8c856af5f3e515d9bfe452c79060872e0fac6b794b93fb575a3653f214766a9b041ceb3f2b8a4b73a52bf5fcbe915a7b5217017cf8aef2430633e20b5f195453a23c0fe3629c469f4455989c2be15a80db5b33ce68f1f96f315f2357239fe37bd5aae5cade37f435754ced27eb899977f2d3a40f5cfbd7d45b49f8c1f9b8245cc00fae9b5b1ecf998aad9e7d5cecfd9c2c4dd217244c6affd6c47f7ea35c07c579e3623cc0b18b3b05dbfc869f7a64fc40f3fd08cf3d2e46e47beaf11bd4f913e2ff4d4e2d2c0ac49ec42dbecca8f6533438449747a51d50d01c30afb447bdcc74468c975cbf2fcfcc4d5139acb5b7ce788d985aff1dac817acdbb1a2e2bed60bf7f1343ad7c6daa1d397faea5657ec57da9b28f02e6907cff7976e6b5d1780ea85b9cc96696bcb7d05fb6069417f9f29113626ec9bd06bdc563ee1b56fa1faff600f5ed28fe9ed71cedc09382f531c65359a2a5cb9fab7ec9c7ba55ef2bb23dfa2ce5c9676c7e41fda238fe321769287c80d40e6cd4b9f9b3f4e70df7c715d6acc4a7d5ebebc1d840ee879035bc2fe00ef3de542e0c7a24c15fff66687561885398d3aa74fe912f16b8aeb03edbe4c10a55dea0d26afb888565bc78a7b631c0fdb37fb0ff12b94ffda7511418cf1cb6da9c5531bf87d8324e74d0b28d86de5f2ee24985755fb9378533b945c0073b05be1cc3c038d097f39009e27aefc6cd789fb08a0a3bd6c8d99c6eac291ad15ae17c51423cd2d29e6e45177b3cc22262cee59b16ff62ae2779cbb9b74dbbfe70a29c5528e49a7da141f0e8cff4fc18d647c857f1571df03152f021c2a5d4977d19efdbb394f82c07fe2b2d408d53a09183d27444c167d2f08a7a5d3406fb3353b9d47aaf2417e2c710cce59674664a733042ecfab37653e53a8d7fb3662df432a9de32d6b2c8e0373d6d2d3956b015f25dc4ce234dcdff096f201e845f8eb9a719f9c766b2ef382a8753591b74cce0b81f69bdd1cc9db964bf2337583b09756a4b85b37c51a3f9f68acfb38dcbf29a1cdf4967e600ce2867ed930d737209a78dbf6ce4d6f55ecdc63a21ac61a17a0bc02f3d109757a9ebb7c3338ff6ccbf82fa8e8f36ff35f8708a5ffc5ff82af49cd3ada961daea91d5300965a6305e0aab94b4b14aea3335ee19702884aaf73c4a1863f96e7960eb209eb04572c2dc5039a7b86e16ff51bffb33b00ad6491119622db2cd507185848adf03ebe139f751ff64ee03df64fdc9df1a07fe067148b58ff13bd8fd130f782cebbc85e1bde0e2669c2d703b017ebcfa139f79830356e35bce2dcead6963e2f0d834b8219f7809b4b9541cb680af3a3ef5e2bea845e3bad7f8bbb5e7b9ad28ded0359bf4b32c696a18689c044ff7a5da26f7b06bbdf0a5eca96cd401e80c361507b8f4bd005fd4d95d7c0778b95ee9b72c2b4df3e45f7b0cf6663ad47a13d3d27e5778f62ef51baf1d4fe313f8c967ba9fa25d4b73f5f9fcf2507af19ec6495a72beb1c4b95ded749ef392f9df96236577610d4e14bf61b4fb6ce1b5da350e6bedc8fbdbeb11eafb5413d5fb606ffe55c3fe1557df32da8c9b3899efbd36665eeca907e44c1c161d85d1d99cb81e4b1cf4f15ee93644f903fd166f1d71ecf2c6b8c46cc07a33c0f13561dd9c1969fc54a1e4b59b1a928fc5937ab4c6c278e69b891fcc47634afe7d5d9b64c3f3dfb47df5b359f88cbf5ff191022fde1eea9c47c5a9ba52efa3f352309760a9e6bbcd6309e70cd89a9eea553919ffce5ba2e1eb8e9ae625609c9e78d3fdf44abd536f8849407e8973834b6cc9589ec4a2fe8964bce19803b861af808155fed20f3c9743c9233b675c14fb8a3a57ade42e4c771c6f30ff92b589978a0b10f1ffb74e3bbf0fe35db6f90de1335e6f61d5e672447fb87aa9c11b919e8fa605150d9afcd5e6eda6b4514a855d3bdcd5f992316f84217bae25d6a2f3089967a0a3f7aa823d503cd36d7e3de41fe9de7c83eb68aeccc959acadd4d1741175ffe6c67eae79ba2b5dafc1f8758d3001fdd17a8cb682fcd17b89e7df027b83550e38c773c2a13930e95cd7f8074d61148db36b6def9576ec8b5ec7b5ecbd63fbfe8c396af090245d41b5d3f4cc3ecad2e8e25c7fef52fc26a47d29ffc06792744a3ee773ab8da5d234658d39f5fabed060f1a301f5a87d050dbd58e89df199db2e1c3fad35036d9c79fd62bd768eaf1cc6f09647eeada86a1b877c91fcee45ed8b0307c143eba57fe65b7934ce18f5bca4056b9e77f0998c5f1c71084f6bc68a713eb88a113fb28aca116040c4298f4aa523407daf89b8e78c2794ebf1c59e96f1e04d71d77c23bfce45bb02b9bb6ce3489b19611e25ed0dfd94eb5296afece8ed8fbf9376864a7b2c3972cd08356e5807f5df9e2169afa7129ecb010eb559ba1fb6d7845ce31203efdeb55e9569ab4f53d76aa43e826d037f59ed59a713e7b1627fd5ec3efe6c374b5d975eeb51a89f3907fb25dfaf1edbfb70aaf46dabe63a41bdbdc3996b2b653d0f7816412e2c67be8955d5b23de99deaff6ed4cabdc1f84add5ee2517bd2dc873d1edc555fe0e0cfbe4ff5bd62de1d997b138dfc43813d13abdd44f5ed37ce90fa9dfc8eeae94f8c179c4ef612eaa9ceb253287f58ed97cfe857a307f077f4ab59e3d6faf370fc545ff23afbf367705da9fcf64af0678c77e6f3cc35980323f27ef35e1d0f948608f78c795dd27bcd2dd684b9f338a8d84eb7fb0f2dc69f06b1b8e4c790ebf4ac19ca7cbc3173e194d6f95fd66822c71ab0e8575c9b7a4fa9d38e33065c438aa1170a63ae6835e2bd79963a114a0ff78c67d929b4930f7eb62c645d18aca91b61db6ea6e8cf5689d603a8745fe7520fb4f74eb9598dcb4e8fa5ba73c6b54b9ff533e77e98e446bc49be7322dc8acc17f9c4e712851acf0af466968c2fdeffc6bad90fac437fac7613fd3369cf97871e8f4dfdb96ee38af44af5df8fb2a579bb4a7bb6aa6b932f73ade30cd28b603ea092f934caf38a3511069da77592296ed582f37e05af9995b9b7319f5e15aa66d379a109ffc59c1f8c11f32a4da3c828158f13f70ccfb2671d10e6c1d6b898f5f3c48f8b462e49e9f324b7a0a1cd5830b7abe41487f7d0b4d51343f1eb00ee62d1e44b545c451173492a9e69ade791b1bb1d9e4fc895b94daca8cab333e6de5eefe55a737cf7c4e3eeb3af2d3554b41cdfb74eb96bf502c31e4e8258dc72c2f7aa9efe9ea6abd5fa0c35b7347e199fb5bdd9ce9feb337f11bb6f91d90fe05cde5ffcd6da6c61f56f7e1c37b4610027fcf4991b287cfb1bd7dd553de34efe95867525be6c1ac307df2f72eeed1a2fe81877b4febbf3b9851377f4e7025ce0e9e93e6417b8ce543f0ff65dc11ca8dff6b7fcd9ddc71c24698c04fff6dbfa7dfecb6f186e2f3237bfd6d19e3052dcb314b5f86c653fa4de3316edb51c247e96b9a0a71595f6f439072dfb21db63ce7eb695fbf43dd6e325fb497b2e71dff0eccb416bbed4b53d5be70bf12a4c6e8ab77ad0ae3fe15a5271488c18ab14d6e0167cc0275cabb9dc01963137bc73f1c47faaf73cee998f6b9985cdb3b1e1f37fab7f77bedc2d6e25f694235f2ac44b6cdfae95f20fb86f83e291c4df9d5a3973c06ad11a14b61a03381763f6c915cf08eb72e87a08c887a06a003a4657694cb5efbffbbfbd3fe44d387fd9babfb5f87f7afff5d3fd4fcff7cfc4fd790e924e44989d5d97f0dbc3461ee10fcff10ff50638c387d7064f0d6bdc18ed73425bf70a53f2f514d3aabdf69c5b893c3b619d8527ff9dcedb47f078d6eaf68f39c5d65fcc4bc1dc054955a8fe4dcea751cfc9c22adf8276ed478b31744d97fffa3e0bb29fff7f791f75be426d0573fe59389c0dfba4b9fec1fec98b79637f95b4b4ad49b7a5c7fb5be566804ffc4f35c515eb46961fccd1aae2213ab707ef86a76212c09cdc183b10718fab51fb02792cb103caa78dc29cce0ae4457aa3bccf7a1cb671ca26fbac55693cf99ad4e72cf3161223a1e987f41bcf013a07930ab9f5f7827a02a2418fec61a162d2bfc84b281ebb55bc90fed3d4d07a4ed538dc98e329135388fb1c837a70d7ee8e6a56968a0f1b392cc02f5a21612b3f4bf29b2bf1f6647fd26b2fe41cbaec19b96873053505ebace9f60584cfd7b4889adad030bead382f1373c25b2e75dedf061639ee625f2ef57dffd26abd5007d6fbd5d5677c96d6df014e8c33e686936e832f3bd635fc345b6a5ebe48334b9bd7413b174618ffb8add7aad9177fccbc0a9c63a5f39cf2a82b3e1b4ae5cbfeaf763675cda299afffc1ba47eca36f907bdbefe4c4f39931ef649771bd99ccf5434ea062ecdf6dc6fc1957d6f5e26be68dbcc71be7f82cc139dac2669fbfcb3c0d1cd3ea3900a8852c779a7e60b35e027da8c9807dfd3a1e89b47a6bb925ac79a9edaf85453ef4ff92a75e6b7add603713c5b13ed6f9e32137c5fd5e69f9e3692f281ef0f9dfac27fc0ebdd395d70bd42c1ae75c13f720afb3d479f0a7dcace6a33471975f827a3afe3277fe2a4faed75a001f717bb2911cb746df3f69cd2cc7e5b8e15f59aff6ed37c697be9887bfb5492fc64df22735eb4ee975467179346cc5c9e90e39b39c4760a0ae8af5f3f93df12c2a763e6b12b5626dc8ed58fceefcbdc27259435bf109e07e4c85ae3ff5ecc3fdf3380dda67f622da718f8a96fbd0eca0ca8b1623ffd5ba3b2f153715c777ed7c8566c3e4990f75c10e71aafcf36fc3ba9c6bb98c41a0fce4671baad55fd647e6147a5513ec15cc5fd9fbad74b0a9de237eaf58aba53fa1b849f5c121171a73714fb886f9e259281fd90d2ceadb4cee4269fdde59ef7c7825ae828eaabdcb1e0ed06a3b526f31e6cfad5dafa96d5b7e32372df58264830af8dc1de246bd8595f783f69988896f3061de2ddf12b61efb12077db15b70fe6fc63d84df1ee19cf858bc9beaa7d7ff3ea9d4fb08c6f2cab1ce5cee0d64cda3b4f74178d5e2c079defb329e402ec92ca95ee996e30df583205f857b521a867c06bff9ce1f714d84ff94351b0dd7b385fbe695c268a979aeed592c6bee93cf25e74afb3de2512a9da0e1171491f79283dfaf12cebb2b8e89cd45f1c2720e407277250dbe6fd1633cb7e2edf8aa9f47c70452fe8bf447563b8372c6569307f05b6ff984ef6bf272506fc6d4d8e9f9b9e992752816aabf67d87ffdce47a1f8ed88db36723f559fc195ed20eb0ac05919ae246fbf96c7879e1888af6dc15c2f25f38ca83ea932f290b72479a39afc3cbd6a670e6afb6727c260122e62578ef9992deec14a255f6f0e38a744e3923f8f9f7e270bb9e7a1fd39d839a752f6d8a318fe6b4dbd8555de55bc5e218f5f49fe0d3c337060fcf9737dbd1bac25c0fe4a3821fdbeb6efc79ccce9a5a2fe9595cd63f2bb70a8cfee3e7bae975d6bfb7f2df89eb2efb8a17509efb8b83ff55f99679b39d2682ca85e41364ee3acc167085e61ec02d6aee9b535f07e078f67bcc252697ad76be0a0c680340c62d95b56db01e676ac7c4bf519eee9d9554c14951fccb5c69a1009db6dd2d38887ff3c0e702ee78a8b9c6df68b7848d516ee5c2b7b7d06ff6ff110e7d244bb565a05c710fce3f43c9c116f7ee4be37fc11c02e29ffa01a7c918fe8678c95e17af02a16665b5b66e5287f6b95316fe7ef82cff1eb44ffcdd2f064ad5fe3cfd26b15709fc39ffd1b55df8a1f2f6a48af7d1998f763b04de8593a4bf4ddd371780fdbfe22f9a3c9fe12357c183108a27c18333f793b57151387b911fcba3efd5668a9df2ae31bfade1be463f299b3b3d4ceac5771c7946c9796177ef2ffd81f62bba07cd06ca29ee39f7feb451e47d99772776baf3fed37c2ded3b8fedff8e16cab9261bb26f5e73ad87fac9131a72de2c362a51d568e889b6472e39c6f3c69d492c591f3d29dc2d130ce7abdf928c6ff840728ab84706415d75539af12336fc42a63cc77ef0fdf6b61030a73aa7804005f70f8796fe4f2b4e77c55ab7db1a77ebc9bccfbf1dbdffd9baf675862e7bfd050849e0dc5312e6b493f94f6c5ae5baafe13cc712cf47739110f17efb5aae8bd8ec9e5fc9a2ace25dcedc55863fe709e6d18a350104e50ea0bca673105e7747e9a84a32e58c3d07df8065f831cf646459cecfe6e475ce2c41ffa59ee688df64dc2c79409f589e611f118f871a1eb82607d5cdec3cc873a27516ce598735b2bcd53f8f78eb4cba5ce3cf683b31d7bd0effb2ec5abdcf770aedf4be66fcd5345df5ba71be2a0785bd2589912ef8d580a79edc5df917db9b056c42c632ec70ff277de2b8ff13ab0ffbfa967b207c41d7af71dd684bf511d5d289ca6d49fd1b9f07d85a3eaae1bbccb1beaad3aaf63e665041b7adcf335feae69478853634936c07cce49bc5c6f5c7f04ad82a9f19fd6abeda7845fff797faa99a67bc091a561bb16da09a9cf83fbab63731dc7c0b15211b79d6fccc80e5867f33fe1a90983558532c7154afc36f830c43dc8f9e828e01cc8d256b97eb6b91a4688f51b76e4cf2b7c40897a2e31e83f0dd228515ca763c53bac782a55cf84acff019e8a724f67c6de6452f30238e02c97b91254fd60a1faad2ae6ca545cc84ff80d372925774793f7f0dd08608fa5aab6a1cd39e7e513e627e7bcfcb57e277d7d6b7c9b5ff567ba9d286cfeec53bb0e30a8eab3aa8e89685f28ff2fbed5e714fd5d8bf57af5f721c7abf0e1e2289a3196f2bda1d6b5677cd273dd22fa6e8543b01bca36c45dd6a5aa1c8bd743b4b1b1ee67294efe9c315c6b3556e7d50ed7473651fc7d11e1cbf6b799d3c6a78839e6abbaead9f61f4dcd98fea3ed9b431ca2f08f428d21e5c3edf581794f2b859994782a796fd6a666ac7afc597f0fd677ccb92251bf1f9c371f6ba54dd2a35e71516db8562ab99ea17e4d3ce53de277f2b784018ebf54ecee91ef7a9fa316cbbb85b16d958cb9f7826a565569feabed6ad465257e44b7299aeeb6bc1ee3d3b3c2c331eef1f2a48de76fd9efaaf85c30fb2ab624ac8dd1d0da53dc71a9f65d985bf519c65a41439ff2da2b14df12e49dd233f14f7594bde975a9e6a3f2692dec8ce6d308a9cb0379b395d3d426588fee760b17a3c739dd82fc212bbc281e7fad06a5f55b3672f3663f6ef6586e52bceea861c1006b3067ce1fcef5a37f3caa6351a9776f961d751e13ceb43c258c01a4bea47cd2fe4cb31d9a5e82786fd42a1ed72a6cf47a7dfb2a18a759dc5a1a6d1da5cba6307df4ac732ba15e67634a38fb47bf52f8543a4376169ff3fae77ff3bca6ec6dd463aa53e9fc8fcfab8f2d737497ea7e8a577ebf1a31ff2f7328fc611f0c9eb0c0cd750fef7a383731ead5e68bf9170e77581792d741eb17c906edfc8ec1fbc6dab4d669fca76bba7c4de55e9e342a5e5e733dcb3101dbf4b7d77caa6bf6ad6b4a0d974bb935992fba36fb6dae57bec7a3ff17bf0bbca4e10b5e77f4d9e5df674a1b6b80b6b7d17f463c397e1cb27d5def0a555f205e1ce3dbdfadad2c6f637054ccef7c7bc27570ad37bd7fa08d897ca59309fc4556ae34918c977122fa38988f90ba89fd41909e6d158beafb453ed789eb0b69a33ee5a13d7df245624bf9aca421ccb8fbcafdc339560e822c81e7c9063ad7bf6e232166501c55c8458667aae617acb7e8432582fa55ec628fbd7b8fabd2eab59ee681737125d6a20ae7aaeaaef3eb5b737c282fab6293657a45ee0bf1b1d4b4f803e6b106ac93e2483c23d7ecee8679ee97e3da5853aa7e4d3e9187f53d93fba1b2e48d7cb53273871aa73dc4b6ce37f42df7a6ea1f64eefb4eb0259fc3ef4543d29eda931dfdfa877efaf15aea27b6637e1573143bea0d94187c8d13fef255af45b07f13839fff78a6bcd18d62d522dd4c90dfe3b1747e526df2633e642e43cacf7d3097d9a19cb4f5197c93f5c96fb9f1b3a12be12bedf26efd991ebbcef8b36b87f50632a92320afcd8d2ed5dc70bc090fe398ec433e889329e90ad2dd32afc7f9b0a15b7fa97f1b3edbd79fc1b9c271f1f9c8eff7abaffa3fb7fe17e701867dd20eecd5f130e609be34bd892ffe7b15d6f7234eb70eff76159ee643e2639c7478ccabc5179f7531ea641d1cd86b5c03faf99f62ddb2da8cb1cf9eea8e4670fcd97de293af4ad27060bee942f28cea9c36257331b026ba3a6be4ba06dd35f00f1a39b6d75c039ade49d1551c95934a7171bed6d6281407aa7ca62647837e2f4feabbcce13cd3edeed3d8498ed0c6d895baae0561a79963fb45dff839d83a3c3ff0775d57407117d1b57faf9d212e09da0e9ff2b455f168af05ee15e0d833a7f9bfea3ded0d4d93e34f33fc6f6be9aad6488f7a27d4da308d171c2fff4f3450a4de2daf3f986b4bebefe92a0d45f977dc7b9ec97f9fbf1e277f9b8fa76339de56b0f5d51ccabf23f739cc2dd4cb917f919fc7fc69fda77da9c69fc7722575c21bb5f4dfbc2e796dc7f533a05df60cfc7d5b2458177b5c98d76139bcbe3e93e57d74de1ae0377dc6220d4e74a62c5dc2bee69f8c7d95730f3edc8af1a54587ce67df627fb9bbe4dce1fe53e9e7101f6679511cd3bd262790f94dd374138320db6b7dbd71a3765b5ac85b1aed87c5132e34b98a38003da3f46aafb689d3e477214dc36f86d2de933eef47ed073cd701302e851cbcea1b731ab901b7c9fdabf82e7de315675172f19feaedce8df27b5313754cb86786f4cce3166e0f7aee584b2c8a995b76751cd8f4ec58d7be3df58f4503cc1326d7fcd7ed567fcf77b016129537c535e0b5b1b7128b80e73ed45c647d5befcb977888d7fc54cdf5782f545d479b139dd3a1549caf11e3193e5646138bf66ed2be4a4c7fd7ecc7d4aeb37c2750983db29f8c9340ec8dd67351da8c27d47860483bb07fd13065b0d62a21b997427b9351eea67038af36c1b9ad38e7b2fb097e8f864fd1eac79f3ed700be917e88feb9a570f0fb0f65f7f7581bba7656adfeb8d5917517bbd0e3206eb9c4ea879d5cc62c7d8af7ecd5281f34630707793f1477c0827c8294f21157eeb95c8e85ce9100be6ec6dc20bdc2d06bf2927f8d7f0f7ae87c5e87cb5f88054ae15952e624e41ed013daa46de13a8ddec846af39e308930ed5e697d1c67dd69f761ecad746ce33d64ba45c71e74bc431e5af81ef21a3bc5b7979379abe51bdd625a790e339ad3d65ca9e08790e96a44ba9e591375de25f9ba99ab0c4fb52fe9fce2cf6392a17b9801253eb63859ae4837155bfdbcf189abb4fe6216a9c2d7a1f61d2a875432ebbe4396e5e27f935538cf1aeef8a8bebf38fb16d94534d5dcbd5623fdca3ffc7986abd13eaecc35c4530d7b90caf3cde5303f80585e33d344e8c5e3b5e6dda6fd0a759efdabd808d3a4ac307617c48b439f37a325b7599f9f58bea32b3cca3f9bd970aa7f178eae98b2616f508ce2285b95fe21a8bb3fd5bcbff25dfed1455c93bf6d73a8d7962ad24e5dbad2ae2292be51a458cda8d3959649d59c8f30af62cf1ce94bd35691959e7b7368f01cc7547e6a8a68a17b50a491f14eb99cc47237bdd2017cdf3d58ca54590963f9671227b2b652fa435517e489357adb7248c917566bc21e7ef877dc2dff69674ce54833a2e865a4e1d37cafce27946391bae9b5a8bcf9686f5e0a50f92ed3f69ce0997b9a4bc71e33319d3b63fd37b285e5f37da4b0e84407b3f31427d067343beadc1f863ebe71ff6e3ab9a89f63e0a4fd52bd477cee15c691d637eb5f392b32953d8e5f5966b120fc2832d18234c3c724ef735f7d377f671fcdab769da29b2d1c08dc93e87b275a2f29eb1d3f29c95e3ff9bfcf79c6da7667f52851bd47c5b83b8ed80b7ae83b8aabbd3d24c96d7bd9b7b177a51821e9e63f96adbea7b8b06704e66f904ec9af3081d38ebca1dd7d89d46ceb6b9de00137fb832aea8f6e54857af3c2a5dd615727126904fd8d05a53fd4325afc3f588ef5795bb987cc33b686b7846b96bf6a63ec54cfc8c2a762ab292b4d41e1aefc58534a956aa6ed0c02f705fb576be34e323c27a1677656b5ce2a5b6cbddd5aa6d36d80fefd6d4e206be3c55973ff1da95353f9953dc0fff75ada69c9f3bb76d0ff1bfa0de1fe3d8de152e8335d3d68acf9b79f157943f4f657e04b972e4381e391664aca3d6bfa4d50104d667e78c5967cd764bf3ad516397f501efefaff3e8fa19a49fe7e0373bc485e0424f067291c596376e704e1a0e610f1ad82ff4f3901b73403cca8f9511abfec55f8d58af6a637c1bbd89a9f4e9c14fd2b4e1ea33077a45c337556fe3dccf1d6bcfe3c2453c8c95300fa9ffb83ee9ecb4cf59b2b362e7ff5f8d07ac1b795641bc3cbc3639d322f78f1cb5e8771aef7c1e3b4f6702d595d097f00b47db73e6a6fe5dc0a98cfae4c7223e68ff41fe88b2a1e589d74c3618515e79b9fb49b65fef37e4da6dfd398c5159ff1ef8548d7d137f2a1ce1e2e9fc2e7e5dc74d5ba9cfeffeaefc26f9aeea1991570cf713db4a61303633aaf7412ab52635fec34abca99aab866de57ed852e387d1cf465503c82de6ecee044d7f943566b066d469e7a8fee4ef2326503d1bec9d0efb6d8fa6ee606985b4763e9784cbd27e8ffa16df157fd967b377f8626af7967b4c58e73627c78bdf84f7d47b47ca63a8b0b1389e2bc3635b4418d495e3a95899fd69e58ba89a687f10a4e2e5b3c378fbf7682cee381fe4db9945fcd2176df4d9b7b85ba7c07b82f5f2f43c14e384c6c0527c632f3989f4dc1ead8310e3bc8e6872f1e29e863e82e8d7ab73e8650e57e539322f404cd2bddd8750ecbf4bffa0c0b5ef1bc9d377d6d9c0e5fc33d6a68a6d4236a4c9296c6d2e41d3d7eb3077408b2347f34b2f3ef79b9c87afd6490b9faff975da9a63cdf73d6be8697c5ac7f910cec1d9fc3a5658b9a2a1eb89d75f944fb833b9bfd5de8f5a3e738bc7c39bbcb0c950df96baecd0e35cd2de31654e8c7a6729f6fb547641cb5b2257b838861c3f95bbe735d6ba26c29c75fddee9ebf5f7dd448eeefd4af602837da9efdde6805fa51bac6d0bc3a75c3abc9f1047c2339667d46fb167c9f9b4666d38ac0333eef18f796ef0a38d661d8a7dedf44a7acfaeca0934b00d90cbacc4b0c9c59370fdc5779bf9dcf5fe4f78019e0fac23d4fb2394f54f7f1766cb6ccf3a1405fe7e6cb967f2659723c2c01597c470aa7004584d7f1750efd768b5ff59af9d53680fe6f23c4a9b78dea5d4597eeeb99b5609e3f8444b1381fb89f93b526fba1d8f635e80f790b1a2f3bf52b973b027104f313f1ef062cb3354d89ed400c98da04a7e5db1ce7fe985b8d796e392c700fa94ce0f2d87f087da0bf36effe31c6b5a074af73076aa707ca6393acfa350f5fdff426de2c437fc1df0b8cf1ca97560afddfc5410ff15ac3da748169fef46b37fb2b493a1ce0d12981dea4de31894f100c4e566603f8b25a2863f6105ccb7b0b2f6ace3c6b8cbcce9321e9ef0adac9fd4fbcd58e78cf913aa9531693f2fe775e6866b2f0fce7d893a7531e6d0d729f6ba99bb2fa5a5e8bd15cce93078040dcec7d82a7705e5a381476ebb31556d6f52fb604e602c645fd66a27359b642cbcfcd51fb7fc04794d114f1eeb787279af63d839e5e50db21dd0679a715ee1d6fc2ef80a6bce07185f847b5d518e274e64ad1ffdd11faaa7a1a901bc3cba6e1b8b1866e2ce9a4347ee6f86bab7e603950a27c23a9b388f5f5a7d53da0a2d4e6e6a51c9fa0d8c7be178cf1a1e6959c788b9c67bfc5552cd2b2d1ecd9c95dff18d26ef1efb098fbee2bd3df4eecffb9df9918774a6408cd697b99455ecdd52dbabcf545bc627ec8b73bc46bac7b0b6ac9d360613c630e9f141a03005fc39624fe8f33bae950e6b3555e582b12ddb417d7e901628faecf277c7aca551c73152c782e2c4b2a7cee0fd88f888952e4ea230fa863b482cff16fc6afd8679fa6a7138b7f5709c665dedf2459aa6c2d1de15f337ec572107077d4e7577f539630ec22016667adc5cb11e151651e94e471da73effc351c9fe4171b8439e2f717babf82771ef30e673e5c0391b4783fa5ec0230967c62347fea8679d250d13d6d46bf963ee8ab86738e7396fae4fae7f6489ceed12f279910843e3bcd77adb0bc671d33d66a333db6cf0d3f25bf0021b893908f8bbacefbfe6645b1e3a84e7fe9c534f34e697c98f15b1e222acd75bf262bd4d650d7caf786ab9afc1bb434e4e9889b921eedad03f7426e46bc3f921314badb3b41ccce2d0927e42b47118a3bd95e7a0a7ec46c710ecb7fea1561eb9dcbfbd663b9b34b5a21abae0df3e7d75fe403e96f597e25bfc68e865bfc59a5f15240eeb1b85d989b569c1bf80be08e2b98a339fb5eb0873e8ff63fc06fe85ca29069fcd356cdc5f6165f5daa33fbc36fb599b79f6b1b2e1e595314ed9897ac7c395e4c578caa3bcae9b715ea9c3b9a7ff21ff73d37c68f021daf53c3a870003e405b1f89d8cd5338b5147c70dc2197728278d67cc621ecbf257eb195ff31a4e39768ebff5b83733350cc6e5c51353f183cb1c8dd5ee15d5e6601c68586869a3390728efc93e096009bb86c20b959c9348956664b81c615e3571ccda469658cf5d2b5ee433d9d9991c23c41c715ebe9cb4fd52d440e0b16ae612b57a6336408c6b72471f26447bf70859471271474f9afec24c0ef7213efb67fdec2b4300e619fc817b4e71d43f61a4696ea3ef7caead8e8326de3c2acc3f6243e68dbd25e738567e5cc439a1a66d871abec439ff61cdb4d7f51f6b5ddadab6644c09982dacc3c7d120256c4ef2b899c14e9ce247dff73bf079edffc7aa3f2e9c3ac6ff995517f89f51da514a5c2365483533c575c3dc1595cae37404d6193926957d6f993bace708fd68e4b09ddc98e3a3a1e9b4ffe0b9239caeed35f94cade0a130e8a5ae1b256d18f76be81a6f09c51a1ead79837f5fe187c8b6a5b8f692565d5dce5dd2e423e9c4d873e627df1bb5f405e1e87f71ffc1e3dd506720629788d7321452df057c21ad96f56396f649df9c74282b5e1b66f7c1394158fbd5bcd92f43efd08d87985b319a7800df38e118e15ae2b12a294f7d573c1ff239aa55dcc4d8aa3a22d982f2cab8b128b9227f62b676951619d855a73d979fe92fecabde9fe87c31dbf38d9a8563e011205e20d4824edcf36aa7ec9996d3d3d799c13d6299f7a0385ece01f42cf5962a17931077442cfd20f13bdf8634a7b70463a608dfd11fb14edcc7927b08fac770d8e446a2bd51feeadb0d2e28ca05a67c9fcb52f1fbd5f7a1f840f1da1f4af21feeb98198c22c19ae877cefaf8872acb6276bb173a54dfa55b24e8a77422ed4706aa01f39bfdd64ced4d9e9bd4ff6ea907444cc9c086d6eea9e5098b87f5de3cb636eebd7e167ba3e815132be76f2e0bebef44e719b4539d0380a153f94be5eb43cba761ddc578b1d9752375ef71bf61f6163fd5f7af1bcd1477355bdac2fcebaf4273f6fe379cc8dd3b04518178988737a56a1ce0688f3512b3d4ef7bfe7c3760c981c555f68a2c5656d5efc4df8b42646fd497d3ecd6dcf523e32e09b59cb377397d42f51fb193a57d7eab0b75bf90ec02e8cf7ad9eacab11507fafc53847ca957e96b14f3a2d1dc58b9320f6a6033978b3777865f77d2b696370611fb1be37e746711d02679dc2168b1edbc4f673c7b706bf07dc53be6f97c727ed7482a62681c51824d2a84ecfceab38ac18ef5b7e47cecf22dfbfa14dbd39611d315a6539e71f42d094668c67fb3c000d661807f5cc7d33f8d5d025268d88db92fb70b5f782756309851bfb93fdaf14f7f2adcbb10362241893dc3a8f21f6df0f81731c34dfb51a3c9c5f76c9ba69b1c2ce37ea951037ee093b796a704bfd5bdfc70bbcec8cf21715eb593aad7c807eb6fc6ef27b3672ba607f946e0df72a691ac1898afffdcfa0d9b3775fd3b8665e579de190ebf4a9571db1f94269d1fce65a11adf73878aaaba8e7423d8fb881cb3f723f76c41cbd178a17923969bc5c5f7168c8e72b38e7256d91d24db65ca5272639305fe417e3a0e15f416c05df890dbf9523f9739fc3ccf51bfe7b61eeed06e650bb4fab8ff5ebd5fd9a5ac2bd611357797d9ae7a5419a968dda0bceb156ef8cbb8df75dab7da0af07d6a9592aee7e3a3f1eaa7fa28963993f717629fba3c7304bc50789757db6212765438c1bd6d62867f5a671bec29c5aeccb18bc7e13aabd9d87ed353a73dafce309eb93acb2cd33ce4ffac8103fb0dd642d42eec3e35c4441f99b6af3f65c0b4ba82f0dfc5f5e63977f7fa76cff06e78ec3b937ae554725732ef0b3693c13bc3e38b7dce9be78b62fc45e904ef98fa5d3d4daa7dc01e46c4ba551787cae23fd435dfd73e9206e253d9f28ffb6e4beccb8c16938cbbc96168a664fa3c107db17c51dd85bee9ab6b8b0ca669f8d15468d7f77e2c61a5e254dfefc3636296ec6743f9a3e5d27d2fe6d2ff59e46f9ccee5b530f67d7b445a9d28691f52fcd0f591f366eab96a9c763cc5548bd08339b6289b88a99b7ab236bdf3cb759e2e3d9d98dc0c7abe30011c44e2fd06ca7df61fea113cfbbeaa5fd5862de5bd7991315e3f68eec3b58688353c11ccc7c86669b398d097232d23c597416a01e45eab32dc76b9be3ebc95a13eb6a3735667caa2b52add8da448d7b5585aaef5ac43df2ade1fbcd325ef3ade7d7f2553056605b949658af50f12b8f6f19df10cbb5f1e5185861407d777cff795fe75d849c61ba719fd71f61bcf53ccea4473ddc3ed7e0e2467d5058cc8bf9f5aef4513ca837d4f7a43c55f246f31159829f8938c217cd751937eb1c4925e289ce414ffd1ab057774103cb88efa2faf56cf60f4e02b946e3168ff9a289f1b9f9ec2ffeec90fe1ff151083afbe9bf5158c7115bd62f8af7e694f31a7dc6baf13d33bf3e7fa977bc433570a5f1103ee78554aeaa5a29ae21f6b99676e2908f9dd2fe3b6e08bb8fba08093ddf02ff9da12f31d3e7086a9e6add10a76232fcd39c69ebb71334eb361c9b700f9b3e473eef87f88ffbe1a8f643e7d57ee8a9fd70c1fd90fbf85ef796d65c9b17057a37332dbec2ba1ffa55aa2672f4f4d8c62edc139d69319de77e4b972a68e14b9be762f2a22f116c86cef1d7f2eb110ff0ea7e680321afd9387be15cbd301ebb18f3f9f83ba6daa5b5196b397518cf31f62027ee71ed14177fe70d02c5837b5a636f5e9cf6bba1aa13534ebdcbf1edb61c71ef308d6785d8abc4edad763fb9ef99ea54f5df207ff2bd1bfeba75eb7bcfb81fc8e1fa5c699563edde729fae8ecc3d4af6a343e71be6593ab941f999c1eff9f0f6a8efefef901bbd2abec856c66863a2c6f95d588a2ba37f87335f7417d67713c738047d6cec23e179032d4aaed7554587beef1f7a93a9bd1906b1d355b80fe8812cf99ca73ce5847f478c7a13d2dd84d8253fa9bc0be409d70a77de5853cdb5d7585388133dbbcdf801f333d003c963bb6ef52814c3ebf399c0f5e8fcadc5158a7b32a0751fc2bcf259797bc77852afed897abcd4bccb7c94307b586777643e9f7ae3575b5eb3a6c0678dd36f56a86972c299f0edf68c93d27545dafa1f8d31fbdbb17d31862dfdb14ae1499fc76ff387f1f39be3973d8d9fbd1c256fa4b710478115febadde4ba770877bfb8bfee352b5f6bcd736d47e6381b5af3a44fbbdaba4ec39e2bdbab9f034a83262b39069a9a25e5dade486704f3e79f12dfaac53fdc03623cf1d37d69dcf5ecd3d3f3290d4ae6e07b5b729fcefe84b164a8ea4aa71b9d1b6a9e6293e7093e873a3cf7baa30f90ed05f2208995e2c803edcd1173fbaaf51e95bfc9f7909cc5900f3a11167f75d850cdd38ab07740105753ba7fe09c98e1f8c4bee9ab9ccaca88bbc52e6ef0279743c270c56c0b1577937c06e0c21c2aac978a3b43d21bb92f5b67e252ed6bf2454ef5b9893a028d3806796822ca13ce62b2034eaf79ae9726fb03d99e7b54969c6b8d19d3fdea1d54bc181baaa658f239c7e7ba55b26ffef7e7829b73fc52890d71a9c7d9be7166ea3d76c5d81bff438ed8525cf1edb8706f3fc5172d6c2b3c0b68af68e742cb5f01aed7179f83ff6062ff4c166ee80c88b09eb7766e4dde1b2db6031ca7e6cf638d6125358ca05f24e41a7fef458d7f33798df54b349b083e54633cffc7f308f39a23cef733f61ef2fda0ad3a31d8af92bf635cc4ceb3d3611dc3c038934e4e896b0b789a92df016218017b2e62c4d5c0ef7430679925c300317c2b03fa9bc348d8cb0369ea504d4dee5f3b271f28a5cf2f5f02d75c646dc0df4e6293f2ae398e6182ff5d583bc44a09b2631ee28133f4fb0f758c348f1db4510ef18e93a6cf1b700388e574d4f183f82ac72f74dc1ed6a5bcd51ef07511604fec68d409eb790d3b84ed93984a2f8845a0fa979241b8a73ceed5ac63b07a8e1759dc8135d3b950ed009f076bace277b08d7bc849f103b4779341d01920677707381e8ddea3f639e57365ee6fc83189592935d2fb525b9b38a762c0fcc9dc486976609c3b93afb5b3000ee3f915fd533187fe0579fd7106782937dea14f0e18653b720c584ba0476727e3cd6fd4cb880ab387cf1b5e62a87b6c961de0995bec609da731dc273de65df4f14491a1ef6ef410af95408cd7c97fc07aee07380ed8035382cdee6cd047ee435cd3f97ef71dc4ba56dfd13f4a8204b4cc8ec121809c95e3d9c8d3740da0d7625aec646e794498e23cf37ac8d5921719d8aa301bd467b037b5f36160f69c649c7f617eef079cbdf9571d2b4b2ee14e5005580762bc48ca3884ce1cceca0cdfb7833872dbc73adecc413c6796db33b93fe4daea901e8f7058d783b00596e41e231c4a75f93fa121429fcf679730492ef7ad1ed98f18e0fd7b05f7955e39b6d2fa42baa465b2ce98971efd933dd6853b0fc5f5c2fc212faf537856c01bae9e75455eff1ee35ce575664ebdb9ac09bdb19fde67aece2fa8055ef71457aaded897d7312619aeebb3a67aa172cb7ff59c05731b2adda2bf18cf5bce75d6d2fba7eb882b9be2461ecfccfbc7f15c4bcc03ffde87d2c7dbfce37545eca19e97bcaecbd725c17f18cfabaae36d515fc81a1cd6d4ef65ed1f642b35ac216270b966a470a8afaec39813795059476ef1b7d7a4aa36acf2ca2fdf6dafe167bfd67ce64f147ff8cbf7429c3dbed7ea1832b714fb982f9f91f9dbe47582fd80c1e59fc70378eca2d8b557ae43b921e6495a6935f5f0ef387b75bc4997319bd1ee8b79c3258fafccf9218663d76d6136154714e684b49a0af37e45f0aec88b7955f810f87777dec45b89468c6b496e32fdf3378dff1bf82877a7c633242d0ee3c67bb7f56ea3fc03ed734e1c95bc078913df6862165bcfbb693c6f35b9b5f8c10dada6af71167deb363556dce9f2a06a0330defb1363b1c177537a98470d4301dc660a4321d70260d7980301f15d71babf715c12712f19e7e996d660827cada6aa9f08ea2f38964ecc67c072ccf527f6abdf2de1720fc371c0f9389f6a7f897b2d1cc447462efbb6eb2dd6c312c7f02956b4429373afd4c3901616e130a6aa3efb81588370553f3fbcfbc732264c1be76d24ff18621b3a8ae7608731937ba37ed2d501b953cccd81f310e98e7f7b3d663ccf1b69cdc5a961116e63c53a90c929a667ab4aeab57c70ae7edea71c68558f0b6a3120c7c179d29ce38e9a6339ff508750b5e97b8fd6e88cf06b26e3043bf5fdf99ce2fa63d215f82c7156de34be54b431bd8f56beefe5ef15ac494d382fb7277f8fce53786fc91fd08cd7f70a5bc17bde676e44b56e9c5b41355ac2e1e8e303f5993fdbbce73d2fe7a9cc368471d17257de8d796bb137f6af9edb649e7583b0e4623c98703c07f9d3bf1a4fe13027ae476bb77e7fccd3c31a1cb5d7c74b1bb0059eaff34ee5bc25a610e2757c3fc644fed3fb551ef714cd390f5dbf1f9c11c8d9f457efa7f00a77ccd33b9f727e35be363ffdabf7fb5a516ddd3a134f5f985bee84b097c8f3f057cfe5ef4eb48e435cc7e7226e3e97f8bbe74a70dc7f50ad2e4eaf778d77189fabd49e0bfa74b4dc61935f69a7d631c40721eb48301f2c733a85d437af8d8fe49181be4b7acf4abce3f7a80721a5eb7cd56bc23a18dadf286743783acd6790ebfd4bf13a074ffb6e35a2bd52f019a5ae2d7b6be6be52f877edf30baf1fcb253c81b9e4fa4a72266c0de384b4df5e47a4c3581aec7f699fcf24ae497e7e0e9fdeabb4e8de05f565347ffb4098ebb9ea13c258f05ba7f6edc2c7ed33d889e56a9f3c6adb0b7d241ef19ad19919c1faf52f411d631aaa5fb5be7f9884a41f18ae01c764c73237e33c82ad876b4abcf135f51e4dafc325ebaef7bb986f49c40163be1431a50962664ccae5ed6e53ece95b1993ce143516969463b33c5bfc821c4a907686fe03f960ea38d1847b87594edcf8107ba4bd61893dd491c4179483a03369e06c96ce44efd78a6663e48f4ea04e125501eab93a5580b586dc408da274339adaa11bc425f18311278b8579924164c93194be50817b398e089bddbfcc5127ad60cd73d033206c7104f38b7c32941b45cd033c6b28cf1701cecd9ec5f903f33c83b92573482ecc6929f34e755c02b9cfe401ebacb0680efded1e6d6572235b1945de3b8d09f4e4d273fcc5fca6bee4a88758a394f627b4c271b1bb347320f8be92bff071ff0cea5d73b8dbd3f1de09e2ab57a4580b49198b3c557a33a01d13cde96f9d41606deca5d9e1f502f3d279cb41bbc816e87b241171711a5f39e40c77b8b7cec41d929877d450b97ecee5fa17a7e088f58164ff85e7d4b47076f5b8dacbddc4c43c61b2c6b8616ef6df61bd2fee782e5ab86696efe8fb530e2286b1b0d73bbf47cf104b2ca8d30d8e2e618a04611b65fe0cb0a2520b2acc4297382a31df760db61efa68d216d8a5e3b3f601607ec5bc18616f99ec0d731ec121b84486730f76ee1979fc37e56863eb7c8f49e49dc08ff2f17d12ef9dce5bc3b1507bc80ea20de2cfcf835984bc4bc9be4b78c928f3913fb463c07eb9ff286dcaf7742aac374f53f4bf72ac6710be7d817db2f55a0be4fb612d36da5cb01ef8196cf7f4ff1371b8430f90b9b103391f0ec5c1b700cfb2958158ad4ad8b328278d8c5381f63e49cb07ec1bf13bd8d2fbb9a17abfb88b395e77e54c3ee9baa82af139cab851f3a05ecf14f5ae64ce66af304409f2801bfee70a71f0844b8e32ef8cb6046a524958516c92e3793db7ceac87220e8136f7ee54e0f91957f90e7d25e0d38fc20be4d2fd3bd67de3a9853e5a9a18ecd7a7e73de324ebb189be131f356a661a26f6b6702e33d9ee3b8c833e6e28a60d9707ae3dcb5ca86f6f868d679a5f3127529aa11d9818170a19cbd4f178273c2fd10fc571017f17747cc768fbc5bbb143fd48ac6d2605f573ca9ac194b9bc2506ce2e768968f0c81ab7470a712e707126e5a38e6912b045f8ee529ffd4e1ad289753e91ad957db260476f4b4372f98e574e725da22f37cf3647d4c0d94a9b66fcbc44d077f8118e1697751c0ee6c6cec8f1fb05d616a3a8a4eb308f1c534f9b90dcb3866baf697fa47be235cf560ed9aa2bf0c39a9b618998c134ed638ef17a9b0377c747704c2eb89e92159d1bf1f55a9f7db5af90634e22b1bef770df4d57d57e44f7c6f9de14eadafb0cf8126ce6ed4a5c83ced2b9e5f7a0df5afc2a5843e05b3787779bced2407295a44741fd02c99adec92adfe5da30179f64f716d9829fab8cf6c03769de8722e23e5eb91e668e77a75c2be3f3a49f06fdbf8b39ae01fc9be446c0da07d44db0d6286b8889399f5f33dedf2ef0460803b0e910778a8f709c87648be7f20c5ae059d439d09956eebab8a6b02ea2ec85897c5f5139423f33714c1fcf929541eba4a0b917cba804bc5152de5631fb6170b664ee15b907f2e240672a3dbb5bad50eb6d6185571ccf2fe4fbda976907fcb444988dfbd663d8113dfa1bafddf466918e0de4d6fcc69ef4cd7d634fae9de49ce2f8c31925167e82d862e02b1fc710fb7805f15e269223ccceb1fe8dfef767b0755bcf8fbcc2f1a91e2738778ee515f0e222e6ebf0ec59d2b8c2788cd70ebdd349bd938cbfe0d985e1dfe7504bcac4e10ee3df014e9ed0b8715e616eb86eed9fcafa9215daf9af7b2f74dc701ec7cdb1cbbcd3ffab7d8ff6ebc5fec9af3ee6aaa2cae7fd037ee37510744e5f2bc4d4bdb4195be45f4f92b739d90443c68976bec57ca6e440afede989f2dc1497600fb87f0f2a7efe50aec368332c18ef60908f98418f55c23d8271c34f3a8ffec94f8ae9ac32f43d9320cfab204c4e06bd641843c5e11bad8339e484ec396abb026e54cc97c98eec81ac49635c9b1126224efbd4ef1f2a9f0cfce4d8dc87b84f3f30e78718e5ce3996b6a3fc08cd0b61c04431da40ff6d2aafb70bc7fb5ae2fc44d9a48e6d364136182ea45dab6dbaff15b2667d395819de8fa9f3ed52c6a15dee3cd47bf3bff8dcb70684518ec46e876b0cc66c4e75a9c4fd5a22dffa32f66e4bca81a5fd4fc20f945bec03abea7d81b9d2f4db9d78a57243dc7cc44ca4510e5caec4a99c6d5e5e531a9e591890135bd5f32c39a9c539a0de044bead5d77bd9a0dc46c91c0ea8455cc75a86f4e98d12ebb629d6aa00cb2a1e7c9e67e423bab29f123809fb83c871a02686f88698e3e5721018f7bdba46909ea18b3cbef63cf2a84694f856e94c5db79e8777d67bc6f59b473bd45d10c05b60e45f81d90b31bf6c2f2db7f6359cc0707a42fa8e62548f29f0ec856e7490f8053bb4dde13bf1bf2588818bfb9722fe299f67b1f548832cf14dd46dea9c3febcf43231cc4d84b9dc81cb5986b58163b221ec5281cb10d907dc589c43d8431f600c47b4bbd97c4800117a2499ac5a853837e5c7d2fe17806738d648883e1fcd4ae4735b7341af4203f952c31779243ee6b8f7ed96680fd9d7bf0073076ade21bf59be7954bfefdbd7ece54ea4163ef7822fbb0ed05d5d4a82602e391526dd0dfa1864a5adc797ed3b3e4f85dc532a612cc1d6edc3ff2fa7ee979883c489b358ec13c354cc05908189be40c3c3b066a7700cfc7381ec9beacda77f2fd28941a7a61bcbb15c8c798c073ba0bc45c2591fb81f88d64b5c7bc9345da04fb2b6a129d425bd80af393c8fc4f48e78a4d7a817bd27492b601704fe8cfe019b678f43f689ea10f477c04554ef10a8e8dc4083d96cd671ee491d4099179b5027d3b1c17c9df358b06c84120795eece56e8139a00be9107e063bf2af6ea40be515510e35482bb7658f50b4b14303f8459788630a92f242d8a47926b206af44e27497a0332f964e70afc75ae69af04c8f7fdda1c66be52ed51bc4117173693984d848185863a77ee20ab1c25b3c0b495f32aadf1db438dc11f810d05352121f5c941356b43e4fa7533bb703a3db211b3c35ef12839767a1b45bb9e352dcd95b39b80fcc7242582d88ffb1b6610d706f120735c5eebb46ae6a9ef6c61a4f8dc41f859c3b1383c03a333f414ee75b1d87a15611cc696236f36db2776c2a6bc3d4fbd8597cf1335b095ddf097f412d9e7406d729d5a5bc0fe813f2bf0293f0a07de23151f78dfb8f25d8e6a94f7da7f2fbfb4168f44fa4914af929e98398f981ec35f569cf1cf2335c38cf2be47a436c4182bc8d39e12120c752518ea538d0f3505d20f7d97f807513fba300e39ccd957b1b8d13e91dcb9a4d58a1af155f3a38dee8b351dfc1fe9ed37e3e20360c342aede58e7ba00470a5c9fdf0c03cdaaf15c62cb13598122e398579839c40550ea90f28b24833bb7fa77c7a64c939f1ea389f9e5f7e1fcef16d847b2637cf1365efe1bc015bec5fa2dadfabc430263f58c6d13d83b42a62b9f6454cf19ecc711f0795ca99f60761f2fd4198d8653c21df12e2c623c5a90ebd07e6b1fa4650058459be06787d9e9e0ce420c3ba587215e84fcfa1eea1ec135e33cf249e4c6949c4c25a19909b5dc7de40e6f02bb4ff1d780ee2820cad0d5f5b109e52fac96290daa5b4dd89e53acb6d38426e2dd8d7a941dce353ccef5521ce01be93571e087f863d825649b8b7daa7cda4cee4cea9cf39cac76d623c87711c177369cbc44cdec7b8c8b31474ed9b7f0be775fc2466f2198dcb6561884bb097f66d8e78d12a387419f749fedc3a1be059bdbbad313fce397fece35a6d493fc7803cd9fcdea97d18ac9127c0972aedb0cc95f9e30168d0528c669d6f1c673197c17510980bd49b1dd0e7d9fa38a07cf32532441013d6b5c21c48ba1fe23b984113b39c4c25d7aba6955e3f8f417ea350798dca453e4f716bf9116fb8c7c7caee39778893c4623d265c4d61515da9a85ce008e96c886beb871ff19abfad76b1cca7e7db3dd51042a13e7fd49f2f0cf14e9ab8b98979fc24bea32e95bd44aec1d2982087cf80cea9e97a0f18d93a6690f1fe8e38700667dc83c7e0703671bf4e97593e94f19945dc8dfd01d589f09edbc23cbb72cfd471a605d8d6f0d127be9fda67b623177b2cabb0473e88c880a7354cb57b8fdc41e8c6323601bf496289c7805fdd039faab1971c840b69cfbd3bd6d2441d4f28cda47aeefd0ac7c445dca9f41516b1eb24d1f73bfb4211f58619860ff7b5e7514cbc6fc7601bdc210fd031a9f782726da2826b43a993da1904d160885c6a87990d9a1373e3d4c3fbfee977bbf5e7a9fcdd9df6bb3fe1772b7758fb79d8a3ea6abf1f2eb7780f2be71e571e3bf3c638ec5584fa1769f29b3e8f52a3fe7c2b717d980f421bf5636de7847b791350b7b5f9fc97f74cdeb186f6497a6829e6c717f86fe047126f54bf5e12e769fc0d358112ec399575301b7994bd69e7bbbc3e4ecb0be17ec91f5dc97bc8f39dcfa63076bdc4a1da1dfa4556f2899c30dbf2407d3fd77b6e40ccb876bc470ef8096fc135dac42e769ec0f7fe220ed6341b54b8ff2f41b32f82720dd05be5422e0cf2413733849e1cd0bc361c8bfcc2dc3ab36d2a8e429b3ff93e0fea074922413cc25191094d7bd683e73158db282a2cd4064c13037b87edfa4c6ef4d762fe0f6b7bd2af5a3bd8db0bfd5a327e2ba4cee055e230c258384bde57b2cf1acedf638e6392bc613f54240e848b8aad9541318543388a0be400851198f70bf36d1d1cc4ec4b2c25f824e69dfccbcf5cea690ba78e07e11976d4b3ba5d8f69ec509f33ca01b3949d872b1a8f647fa3f188618d08fcef20cef615ac7f315f1fe9fb6ea7b6150be9b72447dc0f9b59e6513e177d78f7beda05d4b3f043fad0e6f5c2fe098d4fc73359db95f41bd3fed0cff0d9253f7e5f6a95d3bc2f8023df0b62f185b56e33b0dc8a7b1868feeb31b707d2e798a7bda1209daec4953c308bd89d485dff281fced1b72b23b28de5d0470d9479164adb31771cd24999626deed37f5a8be27770602d827d51d1fdd43b85e9c6663efbb41c2ef93bc9c5c79e4eb1837348c4e2ac7c41efc3477ce5a20339edc2c1bc7d9a54f4bd95e119f8bdb15ce386cbbd27ef98179bc5de91be9fa63f2be005706e60bf9d5e70606e867c690bf03fb212f89fa2c45ef238ed87cb2d6af0a5622ed7652526ab5f50e30a8dc503f5f63e824e401a8837d428f17cc8254f087323c6bc2ea5fe5f827d36c86362231edaa8cf65b4f7927f381c235754ea7709bbb8b0366a0f6e43ea0bdbaec6309fe49792966e4c3d8aa333e16c259700e4715cd28b3d2abd1e51bf2bf1d618c49712a5fb0fdc17e7604b7edc8ef42aa937eb121c035a279ed8ba80c58942c86f6483a1a85c8cb9f6bdda475fc4c0db5c8fc5d2f1de96947b88061f98a7e93047a2ccc13ac8ff207bb321de37a99771f7a07be631e00073036afbab9dd755f7f63e400bd4790488175c641b7a3f6fbd039e72ea07ce8f7becd3dfbfc1bef7ab08edd6bb09dc696132001b41dc24c9fe773d9f89e17ab378a2f8b9d3fd3037bcded201bf76157ba71275d753d883f66a17be714eb7c2b593ed873e60adec7aed353914a01e0298cb3ee6b2dcf0ddcac7c4711d2a9e7d3175f67648fe37e616a248da1ae2aca9ed109ed31d07f331900fec6cbea8ff3ece822ef18214d5a6f685ec907cbec7b58b7d633f5647c22f5f4df49d7f1426f027ac712f234627a498106d5ae3fbf3583825f728bba4917b45ac8176afbe41f15a6e3016731c18e10e7df83b631be4ef097f6989218da3eced7278ffc8fead622c868493098d7052c6fe036af1c968457e1a62ee7263621598578b1ea8cb5b9576936be76290962de244935594633e4c9805ac4bb780e770822c791056b53c7a886beca3cf2ee6b3b180f8dde8d6e364857b79c6db8bc3b9c2da3df49a1bbdcffad9945f296215dff40741e7bbd49f0f0da717c6a0ef99a77bc0a69ad4ef941fc1ee248362d827fe86378a1fd680c1b117870df5f3fc28b94f06b05350632e719ee34faa0dcf1f7de2d43f08ea6b4e9307e1daa24cd656c81f1741ecf702cc43e486d755dfdb7d51bd107c32710b1023941b1ee14fcfc191ebea625961fddaca6dca7547987f59c7de96ceb9f5369498db70e4900ec95e8f7d23f36450bf7829e39d3df62a2583c0bc63ae57c62f2e71c4cb1e40a8ede07e0f878dfe4ae8fbe9068712fd9dfd7081b93d31071cdf3c0b1dea597847ec5f61f8b2fe30b74b7b019accf59a91d856d27f5e135f7ee274caf8a7ca5192af6d48be65eaed1180215435d8a91157d8cf97ad6cc221743e67b1b4c5f6623b409ce2d5a1383cfd8598953dd69ce4fed8d7e7bc893d2fc7e0b8f8a2bee795b9c79ca94fb8467bb90b78bed30ccf8054a046a37f0ff631e399643e10ebb0685344b9c55ad3a33f1436e1113b600792d0c7b5f79b783770bf5c026b4f38a56479200c8561d6cf023c87c83f939e3a640397dc4ff5e27b09c63e144ba11f1d47fe57f834e61d413c9002396866717925eecb3439fdcd3da6e86b837e8eb571906ffb2bf84518c47298a3b679407881146b36525b5a8e518a639450dd42d47e9ff467a88ebc33d9d733265ff5ff5fa839f0101b36594621fb9488bb408e6885370863773c8bfd7b497dcc19ebe66d119f65178e67f0e7514e75880d61094515623fceb7ae8ff66041fd00e6dda17a30c500f80c738a710462e608535a54898b6bc8168f3ee1dbaeefe8d346668f9e713a1be78489f92aa1fee20ac33b923f96007eccceb76aced6f5de865af95b6db7e7b2d7a34fdaf78817746e01f17225bb2fea118ba3ef9fe8ef56c1510c311770caf1bde3ea27f5908585e41275ccc03abf97d25f71ee01ea3be786f75b001e83f11e6beaf3c9886fbfd305ec5cb21323d813a19bdc046178d3cd1ded7ab64ae06cf28dc9adf67d001b0039a962e761cfa2e4bfa9b0062ded539881de55906e8625d60f4a638238fcf310fc6d11a38dd91784758e3bd594b4aa4dec33337b269d0f4596c87db148a92746bc3c6f1680390df3fa3c4ddc47604d789e8a477fa46a78f5de70a50f9d64f990b89013c23dc9985e2c02c6eb733efc2bd8f955783863ddaa5e7f42e25d85c1feca8fb6bf12190d7fe547db5f896b5b4af17c15589873c9d7366a264a9f5cfafb3d9c2f374809cbe8530e5bf8db107ad8cd1ccebbd4b9f3fc46df3ba89bf23ba0feb86477f7d5e777d0d51697e0803d2b495ca9eb271dc8e98b53b08d098f984d1f841f343edf611c25361831b1f5d875d43d82fa1ec76027733d8447b4d4e78b0ecca5f8609f21da75e8fd66f5788ca0a717c7bf8739f00fec373783038ca3bf9b7c2d31f7baa61ed5cc23acbf57287fe78198553b190bc2db78efcadf01dc7d121e11f3e344d977133525a07e0afdf478feca7c949e8f364bea9fab023a9704ee012122e29fde5725c64411f6a5a06f7b09cc0d6110c78545769b38f73a4649cf9a9617aae5616c2beb6eb9e1519fea67b087b36c15fbc8e5751ec2bd9d2e61bc16f81c9827b2fd987a7812c488771ef84ef652d65dfb789ec8da7c8fde977a5a11e76f0b83e63c413e39e30b71a0afeec318abd67d5cbe4fdc4fd1b77d14ce4f4d0fcbef0587f24e79ca946ce8917a3225fec49ec59eec49025bec77614d8bb9b099631d620d5c8b5154e0bc27a8f5b03f535d1c6c8758525c4eeb3fcf62ca691c832df26e3ffa435a5f0bd9372d7e058cd310833039dfc89e2c63afe3e3bd9208f2c9a1d919524e04fbf747f3037307ed579c27e90c97500f72834af26f648039e09eec8d1c0f93e665578fe18ff47056da4b504b22fec2703d867ec730f14e3ef2f8cfad84720a9b5554525ee644d83bbf42bfb712f6d4221d958b411860c20dcb5a4f5cdc03a92f257fbf87b9a9fa191e3387f1dc756c3317568271d6c55ce3182dd26f643f3754634daac200bc857f0fccee1d3f9f2ee5f509fafe25e9647b4bc06f4c23f49122077b59d2e4b1769efd6ff0b1bd4e899c9509f446db89fdd3245b1e414dfb00d7eca790a7bade4ae30ffe7ce6d6eb576a52e15c9dd1d65d03ec398be90c648c905c93029fd5474c2a9eb1df10570ef97cf48ff6ebf1c6016d4df7bec6f19d2713ec37edab7181fcc446e25d8f386ec8c1135bca6e222644eec565ec19d4db81ba9491ea01da21b622bc405eb5a8e2e3a0fb322f20edb50bf1739ad06f7de2787c05807957e36185642f913b86c6744f9a38c7e0e037afa94407ed45f39af9957a508fc151e2d4b0c75d8ef5bd84f55985c33ed4ff4defa3b67f98cf97675d74b85673e626951c319c135ad4be812d75ecc741963b9c533b94a8cb201ecfb83db75a52bd280bcfc0992376eb11c60149dc251d9228da7f02ef7fbd1faf9fca2fed7f726fede83c815e73710a0cf0bf046298fcd843bd60e716e0792062ecd94efbc3e5e8ce3de1cb9dcc5bd8a0ef56db72e448cfc2e10afb100bea3731cf0eda0c2b389c2f4a33ea0cfda6dcb3e22296cdb907870eacc76860cbf333d9bf852a66046ce7a1871a51a5cbf59c56cc0bd87b7146fd9670c531e2931f6a973b0f3072c9fec298d268c1f851e8a913dde0b01f62bffe19fb4bc705e25a8a9db8293c6a23ef21d747e968799168c01ab925e6cb62b367fe695fe426f1cc18b72573b162dd2a41dd98647ffa173be3026e5b0c022b1faf484fd3ec9da856a9c539103f56e570b9252edbc4246d9f28db9c113b19aed23bf4345b9b21e505b107ce4e081b08ebcdcb65edcbb18263f8ea3701b76185c3926306ed7dcd1e62d15cf36ff223bedc47a05b0ee782fb83fa64d37463fdb30d4ab897b4d895177cd76875d8d01aead573297b6e208f50fb3dcc678c98d17466e70e6b94bd188f95e3196acd885fd80b6c2e8dc57f58139d6a81bdb8e2701d519f46fdecab5d8c5a47fba1b6fe2927942c77e2363562b2635e60e5eff3ede6137b2412b9563a67c24ad7635705c60e729adbc4e49c26c452b3a525b8bf5dbeafc339f2da3605a2da60dd7d07b5fea3f329f741b6b1d1261e83a3dc1b7aff628f7b7777d40b8a5c3ea6f77b49bd8dd5e08039dd7bcebd8ddef09f729b457a67df40d305bd1750b7b17db27132d7b297b593bc2a91ffbc6f236ed10a1007be343c83f543b3e40273e7df6b5b21ed2dc62885e3394ff7a81caa0347cb8ab44f12ee196ac5c0a18c192af259587bc4e0bd61098a83446e9e11ebeff7384738e2f5705cee5017b82a65ad3a4dcf721d25bbbd81b9163b3c18a4ffb35d1df349a37732ed9b708ef93d8e2fd29fb7107b4d9658c34932e6388956a4719c38c60ab8dabcf52e84f5612c2ad2228baafc77f01fee3387fc94b4ffe1f09b09b93f315a45745688dfe50e73ef888b5a5939d607f684add94cadf348d3e693df2b8e1897c9dcd2047ba0655fe18f20de75420762d170ebd35cfe988d7ac3ff701f51c7eba12d7562a754279a1ae25d6ab4b39e8c88df250e83730b7674e854846b821ac2c0265b50dba7f8d0ab186bead6be3d713d2c7ae8bfde83c3866ae3cd3a49923c7c87f4ae9b3cb5498a9c19b2d62cafa11af954e695623127bded39e661c1ae04c63266fc5aeddb04ebfa7c45ec6d6cb86e4cdc2ef32be448a2cd1031d376e1040daea2249bdca8e6a67330f3f33dfa76e3aca86d702c66842b5a497edb527214032fabc4ba10b6a747fcda9175662eedd23adbc07b2cfbf4f47cc0279d39ef15e6b425f7a3c4f9d9e92ec6395f508e652ae4f7fab54dbb2097fef4bddaf3b5b31862a4e470e5791647d208b9586bb0b5764afe44149246c854109797e9dd0ad4018dd282f292d3e5f00af5c5cee6b2261e7df36acd9f3e9f7456c4255a8557caa94ee5735eedc4218d7b796fec873d59a1c27f7b0a8f2ecff70a6d0a63b2426b30d4eb1a919d9f00d7b7d99755883c2bfb7b206bc7fbdfc1d6ef84b2276bb32dd4e7802d37488301392cd2fe5058b0c663c9a54c9cdc3efaad934f81f1d12a869e1bd9b308da2d1297bd9c5f1dc257f819ee97c497fddf89215261c43406687bdcfd0cbf17661e61c23f693dad8cc99d6bfa8c2f118fc02c09af97e13c7d06804dd0722c84b5bc0e610c541d8e30614bc39338f530bd733c2224777c3e5c8e887fe5d225deb704f3d2a98cfbc57845394be4bc591ade6fd621967c2892fb82ead89fb5dd8eeabd0b731d4fab72dce8e38018759c600e1bfa35133b77b17e6b727df036437b5aa21f31671eb63e7395c5a87f5742af6e034fb5da7a80a702ffcb2d77cc597a2e77133af366f577c2da7f8d06389e805f94f9b96a81ebd7dd8b0a7b4bcd339edbe568556db8cf41a07fbfb0161247143afb4b70f856db0baca5793db897ff151c458fcf7bd4102b90cb6ce5845ba83f96c362ccf1e067edb3af0ce232049c508998ebc2987c09d0c1b70b677356f9564179de07e2714fc1a177c3bd1dadc8df85be3f199311bf464979102ba1f8d85bc6a4d34ef9947d8c3df4f3163e75dfe8f9afcaf192f26166976ce8b47403ea3d18d1198cfbf2ca793b23d6f28772ddbfd567385e87be87fb196c310f928ac752d669926e700ca9afa72a30e7b98cbd53d0c22617e33d71901e15465dbedf57413df872fdf95670f859db37793ee78f2bdae8eba58478dc4e479dde0b1bde59c1beb1935f971b9d0fca86f3f58379aa6cef549e0b9d416079c395c4ba82afb3462cd2bc4ac80e7b62d419d37920e4be159d40e27fa44fde15580ff37793bbdac3bc26abe0711753c3bb0587fe703a723eebff121fc5ccf1eaf9a97de22efa31bde078ee3dd976ab7cb6ed1662f8cccd508c9953e7f18c69f4efc131e931de8e35a1f667d086148f605b505e335c561b1afb8f9913481cef82fa21cca21bf218960ee41b42c3c7f30db84ec4bb9eab0a63b713eca53ff611ec76b7d54eda003bd47e536c51df2f8d2d017d4976b943febac47f1047521ef996cc3d2402fc57b9eefc3be17b443520aca50dcfd673a6acb7b43f526d2f4f6f3dcce9fe0e8e1bc675f9a31ee14e3f6adf20450e2079668e882315fdb7cec0c55c01fedb7bd038703f53262cdc475fc1b6ecf29ad8222651f6d1944e7cd83bb9ec1382fab2b0105b91ec148ef2013ae8f9e80eb8f1b46ffbd61ed7c0fdd9a7324fe42f54c151f6f78d83447cc8bd99788335f1272b3f6810cd2f3d35bf7b3c7f8c3bf1e8c7d1a6077a897e8fe3c0f87a7a37103b6abef07fe2fe1b5f3fbff600fb2c4ed08f037b987a82e34af957af7f5f6a336c20171f283fcfda606dd231790f9b6c4f7eac8f67ee39f0779233c05eeefc2ed51ae68f6f26da8e50eb5fe0ef16bb89fa6e559898ff8ab45e06137b36edd299700d636ede2db6f116d59379bcec7ca4c64ba464677606dab4fab9d0e689806cde3cf2c625f619f93b0f72d5d057390eb370b87240b7671d7b6feb589df580e3eef708df1413fe0cd717f966c0c1e29da9f73d25cd53dd37ab926191c05ef231665839c1a7401c62697837b6858095fe221d12b02357aabd56c1af6f26c465e2145ace97e285917bf6936a1773c3003e0dd4699c9ba7da16c97efd7248791bc6a099b5df9002d786acffb11e0f7fe75a4d8d097d479e5bc4e98f7d095eae6ce10fc0188880e30ec47b2cac9ff4ccd48b339dd9e508be4fda693b2b6c7da77cf487fc1d99fb2d0dae0b5503e2a44d565bc4f1a6ce27e2626affd65a3bd41f1398738c0d57d49b98241fb5cf9cc4ae58ed643cf8be8c412f5f18e24edc9ff599ed233f479cc516e6a804f020d47baceca2fd9a528c4036f49fc7bf3db6b26f771cc4e5231cca58db0f00b38fe32102e4bd0a03c2256e89570f31eac6a6a29a88b4af463ef6775789cd0f009bd86b9d7dd3204b86a563501fcd5bc87c42e11bf9896576a631b3912fd169f02ea51d1b730dbfe41ca6f7a1c09c89703c73bda33d4318c2c11bf70d1f69ef5c873efbb11bd4774b2ea1ede177c32f8505069e18f0dbbb06c5dfe2883e80de6791f886c418b306a0f81d8e180bbe158cf32f1e05e67e72635215cd7e067716436e745ee5844b4b668eace94d63aac7d6beb0b368e03af32a04ff526a4bcb3c400f793b9299037af2a44712e399981bde91ea71982738053257247dd00ed464eee05727fbcf50d66604f0e0c8b9d2b4a8cdf38ee24de9e7c97a22c6c1ec4b1715e7f0ab01d9e33b8d37dad74be85cd0e7f7268dfc9f15dac8e1b6c7773b06478913d5fa3463e6598aa5ef43b91bb98ea83fe407f151bef6152f5fe0379f07c4891e67de319c2b1e833a169cc541eb6c70a7458a79b8c4957d407399cb1177c643a55deaf543bbba53e76455feff987bb3ee54952d7ef42bd1e81a3b8f8b4e2552a6802a903704c732824da289caa7bf839a73169a64ed73cefffeef18f769af1d3b28aa99cdaf1911ee6235702e3e223893bdb5cfce91d617be5c30b64fe9acba8b9949ef3d2e3bfd3da7feb30a1325d8bbfe9e3cde13279b62b367e2b30ee736ab2c7d5f467f2f7d5c3837c24edda308bc943cebd2d08d72cae922b52615860aea36cf9cbc3ff2df633ae757944364708d4a5b2f3b5db4eed4ae0e90dfefebf1cd82533ffed047d0b1d2a6dc525d901de91e97b983cf8efd8a274ffb9834f2f62dc601adb9265c243c67c05fec03fdde72ef9046c2b1c2b8eeee7b2dbe83ef8d6d2720be33d647366bd45b5911769c6a7ac9d378d07041df2e834dc957659dd6a89d296fab66e05e2522784952d5330db8741cc2086429a3bed33cda6d80bf6f1ddd9ab0f15218a817346758572df6daf7a7886e673c974fb76763891a89a1adf99b94cbc956f725f19cdaa8ebef023f6a1aba16d49469c7c9e338f4fbe35cad732fc6f708c247c9721ad333d993ceb74cd53e7abf66b437ba487fdf1ed653d7fa91d792ee079df5a04b019fbd949a7b1475143fe26be6f0bd4a6b56bfd63f57cc31cec811f2d2d73b1f3663437d1cec2b410f1d6b8963f47899d5539a47d5dd75046f3ac7354ef7bf1fa33f32e3424ec81314cf5e2ff1428b30c2ff6f7e339ad0b92b14174a287c928a5582f8e11eff18543f44ac50526a1c453d3caf6ca3eb29858dcf530ae557950226d3265e7f6c4bd46e9091d21c154bd43d60b8f6d8ecb9abe979aafc4fec8e8473980edf2f0ff4fb49dea2568f7f8980abe8ad9b7fffcd7e2dc4a90cfe87dff1967b8d1999de8de1156bf8e14a63f66ad22fc96b9fcefe10f41bf3d6c5b8ec083c17493e5b7bac8397d51dc648f56c75bfe11fd2dd220f89d7e7db19d7a6e9de7300745e0735a27eee86ab869de2897f1299e9ad44bc8c10df2dd222409cafadbd1f1bd0b75ba65a77f68d6260c229d71ef2ae64d0218f88f4306cd0a4ece770fbc1edd097b72b5b09d6c541fcae7d12ffeffe6ea87ae3a4a7d1f5df2dbd48c48cea4554bf2e77a6d6412e812fe3318c21b3c6871a49437bb6d2b928a91e4c3195bc3d9d113bb98c26a8df90076e6491af697463c0cbf3161a5b6222b6a4700b033120063bad348ffa348ed18f025ff71677b815960ddf5d807e96c78cefb81515ebe48e9705cad3e6939bf5f51b0e26af5d365cab8aa196a01d02df97e3f7a5c1f07d4d7492d69397a585eef3c678e6d6c66c4cbd7f713b1fc0978dbd1136276a3436a75fdb176e85b379c03eb9e5bfeb6b33b0df914bb7d4b821762c91d35efa746dd8c7ca8f2ee43603ce67edc77a3dac86efb8f639293c671c2fd567edbf2374090f491c348dfd14d155e3a8d0e380b82f5c1eb774adff897fc26d67aa34d773c75b35e1761ed49fdc325d8503eaffe687e13c689dd8ff7312d693b732c226a17c6acba81e7a8f0707ed3cebea110e60995d3506e51bafc33ebaeb29c504f29a7eff3ec2556d29fe49c8a7cd077fad4acc8897b9e7fb2371acbef1b3492f5a64a76b7c031fead2987509ed5bbbcbfb0ff8f60df270687f93a8b1f49190bf6acefab515504fb3a67f77d2236f83c2083fa9b70118f7a3d7e7d88a0fd3a1efb5b951ba05aab7624be4723041bc4cc2baac1bfc1ce09a03e915cf34af4807bf14e165ddfc0dbb73a69e4481f9a9b7f2a5ca812a9f1db8056ba9301803cf1adfe06d44f520e07f5ae340e7b3e03777e15b49be3073f05a47cdd11df9711b37ea7df5e35ea2ffa5c2d2e3338e940eb29a97c12a67e44167132fb734c211e92b0a4b73b4cf7cfffb4a31529dd3bec4ac1af31566c8a11f9bd7077d56ed3707ca39d884aef9dcef67d8affbe746bee7cb2e32210761569c0d1880751a681db3f536203ec495ae7925c21be9178bbc262ede16bc5a9e9c38df0411f9a265c169d57cc7b6cd55efe309fb9af58577cc53bac1d6931735ac61932bccb9b470d107bd406eb3f69a5dd1996ad767bcffbc847cde5bfbe1a9d298b6f333e6008a3b793f9feeb11c8843b1a91fc134cfa1bad73b7a29b319d692c277f21a5ab7873b4c3e69d5ab78d3abfcf838f049a90fa9ea47c04dfb8fdfd582de4d3faf9bd85c0f6bd0eaffadde9bd506ceb99732419f63195c2a5fd560c37e1d516d40bdaf0bfb5c2ae682bd965bf2f231d4dcfa373c6a7a8f474de50c7145db12fc49bd8c3487a81e920f1a5d1c758bef70a83f62abd658a3486d4938a479ad72e033faaeb598c3ccbecdabf59e21e6db3c47fe1ff00b843af22787fde5c0c9d783e6b331539e3d70bd4abf29e522328193d59f814c9ff7bad78067607d77062e7287b0aeefe8bde445aadffea4fa187406625ea7e384cac7fd32ddb8e59e7aaa81d293541c0c3bf616987bc8dc21afc28153695ddd0aeb6eb223cfcb208e2663c05a5963d2996ea3c15b5bf9642ea107451e71db72ea680f2af449f26a3fc4f82bb0f96e7cd5bfafbc5fe4a37e3c6171f10c8f7cad1fefe31ab5f93ed4dfa13093ca1f961d080b5789d978d83306bc68e43e61de3df66a437386072ef0d699a3369187352c751d8908fcc47d9a118f776528bd17af124c6bbaa0e6c215e3d62b571ce1d6291b66e05a307927e7502b537bd68d1bd77ecea69560f3acd1b566a82b58e3818f6e0c9805869e0f2b6366ebdfd2d8a9dabbc3af38dcc2bed7805d72b2147b6a99e952acbef095776dc8d3d0ad8d7eae32f519d468be2598e32c1103a17b757be797c688dae8b5a362df76faef3a68ecf6171db41bb70b2fbea93131b9d15c56b8efe1b878ab86610fd81ff1dd65acb58bfa3d01e6f25f353c13114c697f7926dd55597d629ee065deef4f5d6fe9485f75c80daa26dc27a4336cd5dfe2fb8a38679930759db38bf7a0edc4467c4ffc7e7923bc86b07d1b796f1f7c875abf59eb56bba38e87fb6757a8da60c8281f882cfdbad2af551ef7800de9c7f51db54fae9ce68bd0f39dd6535069bc0e6a8fe7c7106bfbee33d63a9639d5289b77aef53fe49ce23c4ebce16d603f6af209a3469e76dd106ebc85efcf825f09c4186dd434aa0e5bfad118fbe2fe0afd66565a1fb4ea3027d0357536c5fa9b7525cefb0de3f08e6ffd1f3530122398527ece8cf09812b669db5ab046fb986d63e1def289feb5714d393de67e9920ee61a874541f351c62d2e1577d92d4066e52da509fa6453c98ff9e7ccb71c92381018f400c1cb96c52a3b720fa359a8587bd36e43bc4168e7f8a3cd8846aceb0765a875ba13f6844a8750cf9b73af3c06b2bc19a5249dc27598d23d45c4de81e77e8cf865a8b0b41be93b5eec7957bf2e83e1fd743ed49718463ff3ae6bbb6ffb7a7f6af7d48eb0e308cd678025a0c72d05e32377bd43392d8fbcaa0c74d1aaeaca91bc461e198c97ecc26f20e17c40ebc8960ad402e18c233677315bf182a6ef2b8f514516fa39e3cfd8ddfdfe7a7e423b3594d363fbc0fe2a1751392bf4d41bd8e08b5a04b3f3c47880d421e62bfcfe8bc1f79ebb93a97d2d65de485e6463d6028523d6f73a6def3a439c87d1cc951871d6a539aa753d03a975d8b582669f1bda4fecf91ef490781eac9f2c4edb6ffdb8ddb475fdeaeb2126c1c07c181787154532ffde892120f103589d4b5dabf3b4edaecbb33ea12052643cc23edc7b51fff2a49273f0d0f9a933f68e77acc0849b727af487f253b9ebfcc27efff643ef5cf037ae9309f965b89fac9cc016f2fe79890d701f103056138297e2dde306e79a9b3e350ef203f5ee02b04736339a2faf6d256f70aba11aaeea6aefb8d8127a6b7f22383c66565cc3a1d0f6e619dc7438ee30d67fd92e61861f146a487a2b46ea57c55d8d4a6b9223e6d425e1729cc0df0dd9b6accde3be6b6c8dfaa8d3e8e040c7d41bec32f305f55ee74d1983aeb0cf332277d63f2f209d215e8e2c25a3082692488bffcf4f18cdc9494b0f35be9d2793560c6cf4a5354690beeaa4127615fc03cb6376e855a2bc37a53f5f469ac79b08189dcc8b0521e82ea0cb2947e35f8e0291e8cd233cc038893b231ee2732241f51c01fc9c3dcf8c213cf9a4fdd83df912f4f7dc4fc798efbfc01b894d1a7ce271b3817858975cd54eaebacd1eb10fcbd15cfc582b5c7268fba43ff8c6bcc6bb0df347d36b00e92c67bd4e3c33aacfc60a839b5beeb8f0911cc97380675079eb331f4c67d2e6758630c51371fbc891351bca1bfe2076f1b638167a9f658ebaf2533dd0c3cfa83014b513b94bf72351f22ea53492e8a4971a3fdd9a4710e12d5736a0dbeab737c4d9da76a2ddb32229de3f5eee93ba7ca567a4953d0cf746684f78d554d887de8bce2aefe5ba3effeca0f7f692de6ec4c9ae3ca4f59661b974d8f3eea39be0f3806958fb8e5e438a11cba9fbbc93eb8c4838f60c08c7689f537d4b709da35ee014a3f46fd266084451e2bad34316d75dd14cfba091f7a12c867bc90aed4147b65037e44cdbbd6015ec1c5228d8ec48e088f95d60abfa69ecfd073bfc77eed069e24cb51cbcc1afbcf9d837efd4fdacb5bd8ca5780018e43f30b88bbe088e44c3ddfe370ddcc88a76a2f02ae658e7b9e641f6bf11d2fa7b90e32b2a8ef5f8a99897d1c6fdd7043dda7aa8b89e13e5f354e6fe8c1dfe1e19eade13e571ee87325f906f98bec1ca1ce5c05987bf27a1b781b7436e2b9b5dad37d0417f20a4db3f33bfa87d11ee17de19750af3665c047eaf7f639cf5aaf008eee6bbd0dffc75a4de87e9bb3caeb817df0fd1ff058c9aedeff491da79c12b6f1c9ac34bfaeb841af8d955517ccfe2fc761745e9ff9deb97ce781467dfc0b9cd986e95e8ee2adff145774d2ab2c734a31a6d256c862d2d4f9e4fb23f235e49bee1ba9fa5d6472bb3ea3e6ef066289cd193ee7df780bcfbb1006d54b3f38ce9978ca748d5dc23ed5a6bae6bba1be3ee616ec124baa518509d5e3f15cb97243631a857e8d7c083bf9c3f88006510c354f4f7dc776d6afc331f0b228b70c5cd0b2e9cf58fc9bad3455dec15317ff0675a5072fe83877dc45ee68bef4777e2970e8fe1307b7b2c8e7b578c77d34c6583098bb67f03def1ce813581b0f6a4881c9554f9acd32c8c95f17e9b05ec47fb55e1c973c68b0e6dbdf9f974d97ef58f37435df74a7309ff77cd391d6f8a37a6fdee751669fdf8de8ac94597dd59e63d300eb1e1b77a87b0e9e64ebfe7a948efaec3d6a342fc7aab4cffcf92dfe3b57f45a617fa2ffdb5d0d1bb9b4e8e1777bf2cafda003a1aed1da94ff5e0312d89f881daa01711a1f18df23a73e55a7f5583ed08bffce83abfad4fa277bea7368fdf737de6dd8971a9d59e2be8f5a15f3721b7b9483ac917b73a71912904e599c6d02cdc3ce5b17fd9e97abacd5f91a9eaf2f515ef83f733a1a8b7a60c8a71cc529f386dce4ec70d319219ed78bf792b48ff3280f098b8ef9d56cd08deed86d889bfab307f81a71e35ff47bd05f1dfa21cc228fce4ce8bf0306157ae506edf72c43dcc27fa36f28c017ae6ce211cdb1d8a2389ccda21c6bd5a21ed7c45905aceb64de21a650543457bd647a34489b289a0247575a58a3cc6bb7445f3069e95ae05d4f75982f9188cd05cc190fb45298b7428c746d8406d5bf93ae6dee6346a5e5d0b003e52e4976a29ca2e3bb0bfe3bbaf2016f12b229de63ce5c86f71bcb8ab41a88cff145f34071390dbefff393f61b6aea3183f6df84fa074d34aa8cef7d0cd421df9693e3dd5aad9dd83e7a35791dffd4f790fea852750236e2bb25f2eddbabf60a86ebfc37befdcb3ddfbef243e81be7d2a5d8a0d2d81beae3fccfdaa1f3d20fffbd7f237d634d1ac0096ad27701d5004e549fbdd7da001f4166f17d6162fd30ad703ffb4193e3c6f7b5477b7d3f4fe4fea8bf5f73e7214fd8f4b914dffffe8c93815bcd9ae205f6eed9588d39e4b6efff49d3e54b0f6d1a13276a873aad76e1fe17fa05c379929c297e9acfad1acf936244b1e88fdaadbb7f2eba4eba95177d6e594f302f3ae956a87b5c61de5093f640ce1093c28cd8d71a9d63dd434b543f3e561ca026faaa0f38f9f21db7784a35eaea4a7bab489d0face97e0c5a6f6ce86dedc6a00363172ee97f2dad8dbe8fc276664a6fda8e5d46de0a7fe99dad51bfa8bcd3fd15e9a6fb9f3418f04caa8dd9e77036d746a2fcd206dd1cf45f216c0ee294545d19e3acd8d7d76b13f7f86bfcc93e946efded7faca77a31fa200658fffa33d67a477767ef4f7a387513dda8064ab8d44879653dbe6f6e8466fa8abace5bc4fc596397307a3447488f97db8ec7d43367376e36a754c4576e32d045b6430feb23fd7af32b838df87ee0ccae5dad0f79a7a9c2956652e54723bcdefede3e7fc0eb80866a27ddff16d753e33c61fe9d361e695d927645fec7fc2fb47886dc069ea7a56a7e7fdb7b047badc01bd78bb74117bfdee53026372bcc3d115f331b7889ea7c9ea6c86d29a8e724547d8dbcd442d6fc79d42e46fd9a927c6694c7a4444f52d3e1d9acbbc346c2781176dc76bcdaba6a6c19bedf1cf0297f087b9ee27cf7ea7da0eb9cf8fe77f2835f11560874602edc8e4ff85de9c245fe6cc64827c0e27baefd531684c3d2af0785f6bc52b987aa3d7a83479ff15ee33a5bdae405dcdee87a4bc477ae29b79435e8ef4a79c1bc342fb705e9d30e75b17e1fec0a55e78efa7831a84e3275bcda8827a4695f19e1987034d56e33417df023e137a575404d80e833f636f45dbfe8bbd6229e901f7a2df4f3c1eb69157e876ace437dba7e8bb37f8cf8dff45641abde5b88f00573531b7958b2c47a66916dbe68372b7cada7f676f071609a03a1f9a42a660dd27d7bd4feb6bbcded879c1e79ebcc5dbffeb0de314f5d29ad82e017dfc7411f972a2eeb5469648403c6fafa5e0d5e728a8f35d4f814b775c05425d7e95a84e7582cad95c678e93ddb4d497bcdf8875e9bd06b80e733f56bd28ed9fd9c88ed16f16dec5692877dbaa4e7801ac7adaab3ad32e40dc816f4fcb3b3bbfaa1cf80b1bb41f3491a06fe7749d7c7a91e82fb629a904604e9e5b5bfb18676ccf1374b387fccfff137757f35d1bf896b88faef5a97023cfebc481c6f38af3ef93edcff80c324eec91bd7fc24fe13bed1432dc9e019fb04457644fe68ebe1fe728ba98ea478ff35e2420471cc541e50f95ab7e21a27e441af7b771e33fe90bf66c7f7c54f73f7f3d9401e4d17ecf9bfbc9edebdae75ec6535c21e73813dff29f6e49d2ca3bc78d8db56a4a58e5e4e9581718abd09e83d65637cdddf4843a480fd451ae4e944f35e6be7614db012342e331b73f097b5b8502f2a00ff33f28c388d18f0949c65da909ef7bcb06be2141b54a3d09fedb4dfc49e7a8acbec0fedf187c43d6bddf0da205c8ca3b59059ae7bf8ef2b1a2f7a3d3bbbe51438f7b1d61a6d34967009e7f181ee7585f78a798db3d43a11269de526d6a1833e37a4f7d706bd5feaf7af3de7a16758374a9b59eda52beb09f7d0e81dfbb823be6778963cfd8ad06740e6b2a3f3a8001c531009e43f8a7fae3fbdaf145fded7af671f7cf353e805d3353922c79e9c30a1cf92413d820b535f83b0cebf1ece70a974cc55cf2585fd769300f7f3964c63f6785f415e1be41d12bed518eb24767bc1b1a0d7fbb3bf8b80d31dd60dbb44ff55de1ba44c84fb7e4f025df1b3f6d391863c24fe0839a767da13081b37e6bbeb49eb946557e86b133fff018f546b4f615527378b4f6ec7d093378e2fcf8a4f506ceb267a8f30b62c8dd08e74ae147e10cfa96ad895b8df0f5a06dbcd19cf7b9b630c10f9333325acada7d7b6b79a2c69fdf47377c97ca89d629da8047d1fc420c8d826dd7cd2241e784615d66c06ee4dff99d20823e585db34b71ad73253b5e2d6e1a9c24432d58f7e259fa631c50a873b7ddecb82eaf0c93f26f441d82b53753af68bef6aafdca93dc15f8b50ac927e3d9cbdb51f36751a6aaf69d2d691e98ce2bc6d047e7e5ea27a4ed0eb2a7da56930598b680ccf208e97af4fcffdfbd276a65e9780f9420fb8fac0c81727ab0cfe7acd63bf2e234f06a40bb0de2a3d223ff2c30fbe1d7e1f9ec559d57057a4d925e581eeb73266e8adce467c5bff227d61b63f623ce1df1642796b79910849ef218eac33d57e748cbf4c7f8fb54ef3abd2a8539af96badd513689edaa32e476342eda2b131368bd61ed565eb77ad1f73a72751ef705e76b18bdcfc4ba4b9b6c4df8a3a3ee8fb4eef746406bd8d7c8335b97f469c7aae1d5dafdf95ba77175983ffddc98abfead898478a1dad2f3a15719f3f95e43767b51f188732e6a137b3f6be09081bc3b0c672035f2596159d243e1dbeb73120ff644d84754a85b5481d57f90fe647976767eabfca7a1b7fd136acf12c8dae7c37269fb9b09ff39057d51fd49f640a67a6fa1456edab7ee93bdf1fdd3a277d186931ff11af5ea8cf283caa5bdbf43e7ffc8c67669233bd4f33c4b195feccd4fe83a89795d8d2425c6779f73dd7fef7e03acfc6e3759a0a83a6b8e99d33682e916f8555ef71cf211de4c1b3c26afbd7a08f04e3e0d5be7cabbfdc9b1aef7bcc455768ccf022394f9123f689b92d036dda90bcee4754ef5d761a0b15ce0ded7f04588b3c76170a0fa3302f07d28d4cacca068ddd76594da9a6fdf48698c7399b8cd5b8a7b2b0ea06b4af700c1917f52452fd5ce9954d28c063bebd5694636b9e6178132eeecbfd9c3137effafffbeb3137bf12d47c547c25f3809a8b057019ccdfe42701710a79938827a36a66803dcc8329ad17aefb9e805f03af8f8055c4e317187f508e62903727ee01e81b3c37e44d633e6cc5ab9ca2a795f617afc07b74ba46ff56918747aa4fae142ed1249d46e009937ed3807f547b56ec82cfd18a30e432507a7b911f3a499f73929f7803f1426184d007322e546b7cc410ab98adede33ef7115ff5e4a2b6ff85ceda5ae77a4a1f4ff50023c148d355f3f5b47724ea7f603db0a3bae85a845a2736515afe51f74d435bffd69327488fac011fb37ebfc51a12f83b6f25c3da83a7f74f015c83c5df7895b9446ca0e2567a7323b2f8fe78d5fbf7ce547cf7d8db78717ea49c0afaad66316059c1277cb9087edfc55635d450a705fa3bb111d4d7bfd7bf6a85c781984b406c63723b5e402e043161819c1ce2406718bb604d7349f93acc119931eb3c212d11855bd8695e6a0c6b6f6c6a7e1ff4143fa86f069a39aca928fe019e8fb7dc9907c276906ecbca421d7cd42c591933b36cc8bf6976ab8187e3f16c6ce83c9030ed52fe754c9e3b67d0e120ff53611257166ab7aa16276d5a776956bf8107aaaeb35cf8b6c5fa6175d5bc7cac2d2c533c27b2b3cb507b0731918e4c43c43fb4ee9cb876c68cf86b326aaa47cdbe2e0823d4d51669e80fba2feaac0f99d68729fa79ead73e031dafbc7681b3296f8487cb869ae098f2073aafe3b4a673e50d7debdbea5ffcd94bc432471acb7ca5babab5a231b72343e362b7c1176d1369a25fbcb7faa20f2b002f1563ad9d740342de6ddcc80f8fe9edeac5f9262851d7b61a34024fda47596b42218e464a63f5057b5e67a46b145811f6561784f9cdabcb174dcf977aeb901fd578057eee73f4aa7ce6b94f78e29fdee7883cd278e3dadbfc4dbfb08b34efe80ffd7e8a676d504f708eda1bf69f3e2f00830a3d398b3045f12be8bf877ea5347455fc33ae8ce82f5af49a239caea705e2edccc34ac7eda4b71e99dcdaa01e0d0bead499dee1e603bac66abbf9869b5fe547ca27bbb50f3e0d84332efd06f910c4a59b9186c14ba4624773c21a6ef0edd2446c3cc63f95cdb42f884173f09d6febeefb5ee12b1dee659f8f76526166ea8639d554ef0dfbdaaf70ff3509aff0c37c16f6ba21ece7e37c8ef3f69cf439441e3c2f7717ddaf2eec78f0abde8d4cec5fc6f87d17a5cd80f78f9ec3fafeeb9c7248d3427f0b6fb9af2ccde9de1d51dbc7f8543e10c02bc3f33486f338bbba05e9c7a5a8794318952ef018d61785899ea7f2a0f462570d7947cca02f2337ced07f60a84b0a712162668b0562b3b0ff72e35bb68f6f8f7b3ee0dbce830ea931b2d0c35ff7dcfa5887f6e94404f36cda5a7a8fd9fdb910eebaeee0ec8b5baebc5398b149188d196a794b11bcacfcd9b5cf6332e06be5e0e3da820611e24012b5e7b788ab6d638a2f066c86aedff7f9734175fb54d74d370bea7d517e502396a230420bbc712baae9cc2bc48d9422248d9b1ce39d37de8f9f64ceea071f4581f5850475e3173e7964cec629711d705f2c8c9985bff7093af37ec777e3fdf7f5119c57fe1fd47a18b49816941f77f0ac537bf3e05b503ffac136e0b77cd7bb549ed30306e56e3d5ee646d5bf3e2f7d76d79babfb731eb5e5c30f26fe969b698f78bb30a26ff52b96600f4b4636e67d8ec836de5fb1479463dd9e8e90c7b5bfa00650604f979d6a3a6b101f4e7ef72bd3ffe1da675d847b93c8e5123cef501b4ef9fbb4caaf6ff8acc245f7eb24ebd7564afea679bbd7fcce2dd331d0c39eb2ff3d6818f7711fd468afa4915b19e10df3242f32c28efebea65e79cedcd5be8638f3f6e40107f08e9f9b32b722eca1e2dbdeed1fb6e3b394b837ffdc98fecd59d7ff3b3182a0405f5531651cbc92f9a5a05a0cfae9c5a8a11f4de059e19eea89a9e6a9a69a9b68c6d61af59953e4a0a4db221a786067871be373097e2a6fbc193b7f9bafb587bc33a970261ddf159fca3345b0b7340ddd48f94c48bf1466a6e2546b497126c41f1df31f6a1302e3256366522d45d8ed46c5e2667c2e689ee50753ad31ebca647f66286fb62747fae771692c8187e6dfebb70461b90fbd9f7e6bd13f4758c318abca90724109b82203fd331c996d30de6099d6499681aa9b6622988b89ca59c2d80ba374624e50d3427d8f984aec5530076b6d5be5959f5d31ef3b679487d43ef5acd435cee7e8a990daf141ede399e949c4f1542a77ede7853319b012f2b1e693b72fa4f33df0369e9c58f21bd524d0eb685a417e6c7123b850cd4ed8f218278899557c23e5d1a56ac4f71c3e46fe0276e895367a5f64e25a137e265775ae16b06da13df0adeb19f69e6cf05808aedc1abbab1dc6dd8a43577f0888759c228d8dc47de8e98eb8d17cabadc786c663b68859396a0d13ac11c07aa4b3a48f4319affcc13b418d635ab8ebc938c0ba96ffa0e7effb8f1e41bbabf67c50b8409f0f7e34822d5679e0d1bc50fe0753c581ddaa6b0c9893648547fc6a8a13ca6dadf1c2cb6f78e1da894d672f4807e715b1e0bb8b3df8d99cff13be6ed3c71635797724dfbc6b0cfe9fb1f76f9cb825fd5ac77a47923a86d630d906c6b71eaabdd15a1ab5a1cffb51aa6ab29149382b61cb05e5a47533523116233c6da271e1fe7dcebcd2dabb38ffc5d35b4a1ecbfb027562fd5325428ccb544c33c6980b35face67fe25274b49b316ef17cfb2e9ea76469c76fdbec2fd4bf9ba819edb2fbe67bff02c0f176900717e1afa6c47fa07e2daef5f4b88b3ce588fbcada91f95b213c56e6a0ee6c534f298d6722b9b25e6c5b53b9f4a978bf62d9e1c288641ae6fab74f7ef7d77a93eae343c95c7ae6f6b6c1761c5cd7a88df9a708331e27baab5cdafe0d3d2e9fa53b1c2ba5d1f8ba4a05d6df3fd127b80fe3bf279ac78da521ddae4bb23f6f09f4e75a3c7627b87eb4957a40d96076e35012fa098f491457bd6feb030f621acadd6e1928f6a5f7b63e8fda24e093b43f346dccd1b75f6fd386f5646a8741df07755cc96281d29c42636582314eda1342ae2c701177a029ac022ab49b3f6a59e5c81c388f1596c14d715f1b1d2e01d7057c10631e29f7c1bead890bc59d1a3e0903e7ca78a393afa2e1c97172eda53bc6f7f618ff35dcd939ccd44ff5c72877429cf7ccb74bd90691df7eb07ee0de4ef12965d017c8a0cb5b56471225d6af2d2238c71e9b333f1de0a237c4b0933d1447fcdc32af337d68248bf437a9cf696dd156337f306757e36228c6441384f3f3481fbacfcead3bb1ade251e78ed1f742d2bf406ae1bba16d479c9c6ee33ea09505f93f8bc951f6b9da2ca87fd2c4d0bc0f5d91b17b514f65883b9f03d7251d302f13bc13bea2b7891118f08432e3ae267f823be6baf0f9c2111512db4002e33d404972a0f2dae29f1892196f42a7f6612cf4fdcaea6f2ed87bccea27d9eed376a8dc50a67d7c7b331f9ecdb7cf0491e4742e521fd38bc47b867544a231bb0970cd684c7bb8030325bd89b82425d6747fb6e6be3e78315e24fb4bf49deba1a0fb46daea083ef1b7c5711bec5e4fb3fa437e6e13a0cb8dd5c35969478deb076b05eb4f19839fba28970dd53ad96f4b0a3ece80e1855e53dbbef6305a9f90dac5c59e307afba744f7e86be91be6a6d93486bb863ec04d8f69aaf916fb9c4181734222393ef8f548fc9d7c47504cc7bb0269f864cf346621853f6e83934398c742c00ba36ffd1db4efb617df117af5fcfdaf34e28cc8ff6fc24be91413e9f2267473aefc107d474b8c52ffa75d83f44351963ec4a75e550c7dc773a59a395c6e62befb83e7f97eb7df818eba69b8674e19eb577c73f9f84c9913661c4eebc186f4fb6ce01b7e1457b00531f4ad683669ee680a9fe329ceb1df292c173c61353c2d5935fc56ffd5b02f709b1773ec0db3c28709e95fd983fbc67abd68c5ad3f89e57d69f773f6372fbb91fd63e72aa2c358f314fc4582d0bf689e2953f79d807fbe006c63fc83748a6ac1be235b57e5275965b26fa5d8cbd28f8fdb0fe053ceb4fc0000439e9232cbcdafba28f30465e81ae55adc581f6aea9e2e3a4a41bf2cf25c2febf447d32d668bd9903ecdff509783efd7971c19af091f45dde05d5965e9f207756fe66810bfdcbdae1e6dd996404ce33799ffae118e6b48ffdd3e08d6f410f56a81ce7c9497dc46f666777910653d28f80de467117f3a28e6c267f45c6fdbcbff373c73d83194ba58dfab01f4ddbc9178d9671f27ad79315d535d21aebbf894794e3b930c2d86fcc77aa6717540d603a18d6dc99c2d1dcdf87aa4bb80b2f987ebf3f7f54a34e7424c23dad479a074b35fea873db499791f7ad8cc8e790742074aec026e2614c18f936500d74f7f4067e6958b7368f9fab6649794aff9e453d78c42d482faaf22ffdf5bc54d80b076f0115b38e875a770cb9b3bd71fbdf9f07cc63c639b8d3a008a83797403d509d4f116204f07d2161af387094b75cb000f36cac59c138c4fd5917d44e8cbe5829698b18e1ddfb5a27e9022f229d2d817dd3ddf8a4c76c377675fd4af7156b9d53ae9bc85e619f3bed361fe401b21af2bb10cec0d689d396f6aa8f48e11a7c83378adb7c535c2da59736b3f4fe674bd29618ada9c7615d67836e528dbc11cc6155ee1994a015e05ff836245f0bd0e8545acfc053253db9b4435d0de9db296841ee0a5b63983e4aaa0d65e61bf4c0d889ef5b331efa0e57c42b1ef8be254ff223dfff192376e6c2f7cdf8aeefa6711cd13e98dd69c128acb9c2afe6cae357e5c2f1e430e2d49b49dbc10f73877d02597f925fd93265267a76bea9cf219eb4f20de8e3282d2955cf3f2e40136a5a358307b948952e9dd23d401f8f0fbedf10e7685e65777361d7d2efbfd3ef1706729b32d38d542ea7c6f05c8216deb4f4979f8c7c04ece0ce9b34245e52be9e929e88ca3f436ec71e83b9242047f02dbe7b9a539d9f6abdd2de8c74ce867d9aaa218ead7a7601683f21a7fd71be60ace97f79d6f47ed57f0956a83594d8ec6e9e87fb1faefdb8f0296e626f0bf24380f18dd5594479789f2b35e84d973db9059d43c3fdc03c81f8ee5a8b3e5f6473d433e10571b15fff211dc07f5d3731fa59c6be4f3d8dcfe4bf596fb6e351ad05bc69fe9bcf9d4ea5117afdbaaf9b0b69676fb894d8d369bbc5c071047cc7eb1362f6067f3958cf7dbc791717534f4ab41d78fa06b29ea8fdeb1aefc6ea1e6b5feea0f7ae75dee6858df3320b3e504f78f04d4adb10f5ad31a75c8e92e41e3ba1f12d9f7cbb214c51ce52eaa59c8c7e7e0bc56d0e3bed87698427f2eb4a2c73847a7abf286744dc2ef20b25e845036e42dd639c6f503bd2bff157c08e615de8449a91521c601cf325c613ec17dff2f19d0f0ae55e2a26025d00d25c6cfbb3f9ca770de47d69e196cdec467ea68531336aad5ba39fcf1bc62b72959197a63895e2a8b862858dfeca79ebb22ec438b2b2564a73ddffe4bb6507dfefbff35ded97db408df942ccec78d2687d00d600ee4b76f533c6d2a304fa0c722140d73c4dcecfa847ff99502fd7389d321144952ff05c090fc0af5038dd17f0f857f3ea8dd67d9ac6cf0a2368b0639c9d8c18f8e347fefacf0d739a786507a4cf6253cfad48e507c6bf41a172db688cfd6f2f82fa8ec773391a7ce4fbf33a3845a0cfe7e0fc3e92c7f122c39a70bff779889fd2e308dcd485473ed7be1d354a0f692a764df7e5373efed36f2c44d4a9f325397b198e439c9c46103bb3e785476b7bf89decf57aede712ea5727b89615970371ebd0c7f322c24d1ea056acb490fabf16735ffa5113276b3a2732616b9c4a17a3e70033f8ee0c75e14efa22b906b117fb99fcf338173be697d82fe2b96fe05a85b8208bdea916a5f071fed97f36f827df3341b510acd79207187276d07b49f500559e1ba4a4cf88fc1fc2de8857ecb1004ea043ad9c60edc7d8a336df31bf984bac5165d91fd4693a6665877948264711602e58b1e517cdd3c7dfd3be96984b03066884df233ffa3d3d811c0de7c139a3fa68b9059e40d216ef14c31739f5e7cd1ddb220e4bd5c06aecc19a4eda0cbd0e5c5be17a624eb0ce3fe2dbf81c93a6385ce7b4da068871343a4e9e8d1e23ef15a5870d3e1c72811effd702621cd2887c475e98b76ec43d5e8ceadf219c057e5781bf86c25d49557f38bd63dce540ddebe1bf818a0bf7aa467187ed90e32569ca0c674ece459d616e33460cd63cdac6141b9ab4bf2f4987c6a01a49bf479c8355a3b1ee1da7d865bfc19854698fa396ab9a134102983b9b628be5ae853e80e26d9db1a7663a5c3a078a7b28ce7e9cf767f4d41d81a76d43b8907054213e6d453aaaea1c3d93f62af0daee38d2ba7ffc78de4af4edeec76a473d83f4f6b453e7564679d679473d6ec4f72bddf1057084bc15e072b4a7d1b3bdd1f8c8399dd3e2bc471d048f11162c0d4827aac0783855b189d20d18f0522b23344ac0d307eb263c6a1fa68e694f20e490b86c2a492fd7244e8e048c25d529e7d15eeada1107fd12d45515543b80dadb6e8c6770f4c97726fe3b90845b53d8914c7def8be2d5dcd7090cd22146eebbb5a11e470e6b4996302719ce43f4ceb036eed77ac3bde6ab4c745d10af478cf9ee097394a0a0ba1ae1a4812b2113fcad0b8d5d62b594d780169bb941ad3d06b9695ab8f594fc4ac7946f99e483568b411b546bfd43ada55cfbcc42bcdc3612a15d36e4d1c4f683f7543d457d87bd204d6f9b7c714fb735d406bcca0f0f127b7d3f7b4fcd6cd2414bbb867497e60be57178ee737ff2224857bb96f4eacf25d40abd62dada9ad3bdd5bebb73e5d10bf5cb11dfb678968831e97524dd86f4942ffcf5acf9a16cb88711ddc39a7a017970afbfaefa598ff128fb88275043af7ce6915e09278c3171f908cb2f213759c2fa9daffc11d4637389f9a86fd586c2f3ce53f4fe81eff22dae31d54be30b3ecec0dcd38aa76d887db55f183f07eb06315179ab708bb13c8277977482d2c658340b4e8879d97363fcd95f0337eeead4d971823567c216189178ac73d5e48f4f1c7e9f7dc82f18eac288bee8ec9e17fdf746c6cce05be4c7a4a11b4f9e5eefc64be12fa93e8e9e1f7ee4cf4e05d66bfadf2b3cf98238f03d5c935cf6731a7aa5edbd7fddd7ef944cfb83a3d6935df8e594e133896ee47bb012e18d7c6404e961749b4fd27ca925f45c9f11475afba8819bd72ef930c954a266984f1e0329e9765446689037c40aeb47f59defc27ae0d7ab6b567ac429d5171961224dbe2f7e258ad321cc54eb7421aede189fca06fb92362bef6bdaa53f332aed290575fa15d6e8d70deb6ad24630b4ae828cf230805ee999ae43bfaf34c2517fed520441d92cdf4bd20fb58f9f03a697f0bae46156b3fbbec6aa6111d697d1dbe58f5d82c7c1c3f5c7c86b80316367a67d7767b61e33f4b8d598e8ce49a8b7b2de1fe979abdfadfdfa2c21bf4d413fca74622b3c28af15a5f1587cf07b5cb2157eae00afd7e74c7b5c93d9b31d93ffd867ed8b7e7f39c43ee026c4961d63f7415f53f57663e370259e4c2df05e915b4d3dc8b53fbb26183395c601eb4cf51d76f5acfb373295588370a806a1bddc18d601628b3ca6a157243cf2ec6b008f6b5c77a40d44b5831a639a348d6e31f42573dc93aee80bfc5291beffe0d7f9b146ae4b6a8df7a469b5ca6ae432867aff5f4fc887deb44bf085f48abdf6482f4a57ebb0ee112be9adfcd094daef41ad03f5fd657e9cc1f9108d075d1dad89835ce12f9a385de073ca3df61bfd5d0aabddcff94e52afd7c45eef8874f34bccdba9175e35d4330e7ed17a4e33c581cffb1c82efdb8bee736f5b09b1c5d57d36c543cfb0003c8cb710c497a31a408dfc05e90e1ac1c70cf51cdc5ae7cc4eaafb8910e778dac7827abed0c70f563e71251b8875f13b305edd92f608f43ed98ddb0e69ce15abec29a098b2d29e9ce67b857cd355c38c5a10feafb961ac76e4fb906a274cd510fabdc367fb15d56811072453f9a6750b14bfc77cc4154fd18f5a52cc1b9a35e914e4857d1f87c679ecd6767ddf9f7464fe87d648fcdc113622407e85c216788a6f9532f1551f5c2abe55b0e7bb61cec0359e952e541fbf526e479c334eda795d3b26ad2f3c3717d4271d7a86b3f7d87dd45c2acc08703486af30a5d99621173a3204619ee56fb5862a3fbcac301f5e6615e9fae4a5c7e09cefe3f21de97f443669132ffc704f5cc58c7ac6a86356289fe3f812f934b71bcc71d93369b6e37f25f6783e86f7aa7550284f031573296d5af7fefdb1a934f6538af98b7c76791c5be5150535914caa399e661be04b62cd7549fdf794e9e75275835633ecfbecc60c0efbb875203e12531c32c5450e2c7ddd79d55fc33be02dd8819ec97a4a399439eedf5b1aa1135b47cce3a5e69624f7fe2cb6f6bf21fd34565a1cbdb5e90ca1d825204e0c9ce95debf5cf5fcd91ec70f936e7acf88d3c89d22e2e1ebfab267f8e3bad549ffc246e2b8c1fd32ebe90fe13f6e2bcc26307cc63e66bc55f51daf6396253c6ec4b2fb4b6ce5ab3bc7cd4a1fac5ede31975f25ed8d4212ff90fe4f83773c5c95179b18d7e6c21ead88688e9079f2e8b7a0ff45b51a79f57aae6cc0b176c87fb44c1521c77611811e2fb57e4c722853d7c7689da72e00501f3a8d163bdf0707e0c9e47c5bcd3dffd4edf5dfba145785caa09a49959203676543fac2ff681750ca6e213985347ac5579d94e406c801896d47dc4b4f0db63fcad30bc29f3a056cadef80eea86986f2f56548bea7f43c0f58adde13acca7007118ec56fa0d3cbfec8911962f4dae05cf6b8f89d97b61348fb13efaa867b887299fc9415bd493fb02fb797544d88039eef96b1c27619916aeb10db349ab05df07fa39711ff3c69979418fa3384a43d49e8b70fc6797083d8d44ea23ce08e64e925dddaa0ba784c305bd87b6507993b57159c309c7102a5c0ae17bd46f191ddf8acff8367040b994f61c38f16ce587a7fefdf79f2fed8d0f9c91d02db7b5fff0bb59652b3d84bc764b3f7c7b465d2cc4bacbf514f579c56954fbea4c65eb261caf7d71879156d73062d0279e3331bbf4ff5e02f6487d0f4bce6a3f4aec8d5b587588fd02b886dc29fbdf48ecd0adcc83ceb7e0fa8e25d61a49df57c5cafd3c4ebac02bcc83daf7a8dfcda5bc65afd7797f9ef09d59d23e23a037aed61ef484668ffc724be3196fa8e1202bcd032d34771cd6fc15eb9fa6d6a2273f59d2d7c59816f63e8c67f03dc457216f2986f5cb536c0f3cf22a43ed51e20682eeb8ba2ed0bbac9d447929289cb185798d0fdca6205c7901ad3153ed094630557efba81d0ce3be3924a0d7ce16d318f9bf95493c9d34678784fae0a8b50bdfabeae9a304310435ccbd698d9aee328f1167750ee8d92577d89b95813abdf6e6997cffe35bffcc82513c690dc232c1f31446a1b4a9ce06dfd51d7150f0597ff4fb436204f355137ef6ff461c9d9a73d56413c2bc8add2adb7c9973e101f40ece37be6bfb7fdfafa737fdbd7ef8aebef76e3dadf4f7866eadbe97694d0d991738a692cf03b546bcba7576b89f8d9163e9c82e38604dee44f51b8d3193cce8cf34e895f0db1d0feb56414f733ee88880d649343d022f2cf0fbbd4161a75616e922ff63883b7daf34df78736ba3b8076920dfd60de2d0ac27f24c7d61adaff4e710a7c298883e4be00d47d2bafee2afdf7e6324201ec5396c8cb9eda026cb355d88eadb6f3c9bbeda238ae43a55b50a937f22afa59fbb1e274c5df28f8d7cf0eddc37bddaa83e313ebe50bfab02cde9690dfd594774b1a5b18efa4c7bdaccb51f0be498702df299386475a67dee7e55c86dbac3559c911ff8b284395694fe489d91356011a6491ae29a891dc08c155b38ef4c27cea5cb3c1ddffd22ee709afea63c3c8e52bd6ef7fdeba911987c1b280c50d5844ea4fd95cc6b6dfca1f19b7321dff856f38719a3756a1c4bd4ff50b8c2b95117fd5c2c8c4db99ad65fbecbff8c4dff9489e0984c202f2ffdcda65f372b63f30a6314076bbdb718aa9e5b402e670ff7f3e7aa7461f378d6e720197879a53cedff3f1c0ddaf1f516e2698803b35d73a1730d3828321baed1b83cde2f6ba21c5e9b1ba180da903c13cf284b2568d765672f326646ad75c845ff1be007807a3aa5c16cea47afac33e1abd498c7bbe0529287a72daeca73240f43decfc75c86e9643ca21cafb23710d75a4bcde7498d6094c87efff08d44aa7df5cc5b8c1d736744f529ade529ebcbdce86322ff92da1bd5ef58f7cf5ed55c24e89800aee513d620fbc55f9f6c8d21b2da10623cec79e7ce91745d16fdbe35914e7c7b72cb29f9503cbd20def78a3d2c03f523bc9a34ec93b38dd7b9018fd22379f87cd6a45f67c7038e4918777bd3509f7e26bf0cc94e4ab3cd50fd0613b528fa3c620a9eb98ebb9ab4217166523ca3684e47e2acbce5a2e69c81c6743017b76bc15367be049eb2b76ea07fcec4b9984f5b9727e7b9547d5b7f9c98d12913fe28b1c027abdf0fd4fda5ed5cf67b6766466513de866b7ceac7700bf78fcf007cacdc7aafc731c0fe8c09cf2532f96ea3c7a4ea9f8baac7d67c3d8cfd78ed57c085567bb6eab9f5fb5f4835870c7b4ae0eb1cbfae2657ea4fbe2db046985826d6328d51dda8583d474caee0b93c535f0abf2b9684a3c2ef8a615e3a19e6af77bee4303e9d746bd2c8154fd68aea29f0dd0a5347dfcd32ba3edf58411c11947e9811ff62adfad4c07ba873f21f0ede4993a216e169e51326ef7c229f1ec81dea0b6af147f2f658bbc8dc476ebb1c70f721176d59ed09bffdd4f5638efb086092b09626c541f1455658af5b36cda0336350ffaf062d88ac7856fb8428867962b37e9e5c79131869ab7ec34e5bc4971977efebd49a54f905e45df2c4f747bd4ea35d0beb54886e9883fa19e39eeb8fd3667492863f4af7cae39ed6cbb1467c469aa9fd54e592f1e4aabfbfce6b9730066adfdd8623b5ef66c797a23fc373f65235e185304d691723a60978853c67aed6fd22efafd4a1da81e2792786f239a7f83166d6e6db7a8e3cc4115863b7c07a1ecbf47dec53c401e119eb2456bd200d098c699d25ec7341d5c487da27aec0e1fa6d2f4a7fdf509f430efdd59a7abd882108d2d54ef16f9d2c3f9286d40b9ba02fa8bd09a8ee58ed498bc0404d95b0a3df2f4568d0bf53ea31ef25e1b8f37272a47b34fbe7bb043c9984da9f44bc2af6d8a4f26102afaa86b07763f0ceb0431f63dd0d68cf609fc33eba77e3fd5e360d71df40fb7307e7caaa75367dceba329d127ad3f18d341cd34ef925aae7a4347c00c761c0b59c3abe6df57c1ac6986a1741bcc0bc486a0fced9e73097cf6f34ff9197aa6a95a9e1db6252bbfddebe08fa98f9efd7a4eb20b2b2a8ae04753cf9c1adcb9562ccaa0b02f08408f6e8973aecb5f6efe17d691010170f787b8a17f0c2b36bacb85099d9ef9bfde7fc6aeb50cc7b2d756e7eba402f2c90eceede9746c022c1dea83f9e76c5087b185baae3602c8a5aa3ec5282e76c20a7f511d7cfcbfa87f3b022ef1febea8ae45fe716d6689bf10ffbc925029f6c476623eaed61ee15bdf779c8e37a906f71aeae2ba47c4928af866fdf7b8bb4260ce2ddacabbb18d6f75fe76564868a63c982b0c13940b5c317c03999f77534472618b3e5859b0eb9f5be8ff10a837ae22ca15c1474315981e7c1e4c7e79e3ba9c2bfe5412a418fd2a73830b50e1df5cd865a55d4e7221b9e5ddd48ccc6ff79ae0737d1aa7cb513addacbbc78421e354f6f0ac3057bf895f8d9c8e9b9f2ad74cb29e1099eec7e9f56f89f3c001d4bd45fabfdd0b87b2e47d067637cb51be6929a23aa3e8f7c63ebea56bbe3b7d70b951fb723be0f29667d59d9ed14c60e309895119e747fd50e154f3ac943e2fae591b5a473b21f137c3eb3ae444d8cd28f3ac489dd9d514ce370ab46d55fa691119e05d588d535d4e4ff063e235bf686b9f521d6bc64f2c964d6b0bec40deb776aed2d2d35be25cf97b798f6b67ebededda3ccaee79870a6fbc8c2dacd84df7d0f37e37d4d9ab7b6e3d2e7559ee8f76b85b410d856d511b2f06d41b9263c27355f4ae258dc30cedfb61dd66981ab6f1cada811f79fdb725137d510935efb7d47eb9ba9b3bb75574adf11ea0ca801eead1bde891bc5aac750ef995bd25865378ae34b8daba9b3ef677a489c07fb6f7b8daad7a68d8d7806897bcde5d9587ed96ba2719cd76fb007fa17c4232febdd58ebb794db4df06d5fec98f2ed8fb32bea4b9fcc1ab53e451a52bfed55d56291af95e49bb76fe7591e75a03141da1091adc7a0450c5cbed1deb37f8f3522fbcb3abcd3b60bbc7a4ad849c396aff7f38e39fcf6e44bacf3d701bf8b29d889efce92f045abe0de334c8cf9fe87eb1aeea7c5783d07ce693dc21c6cb9de81f6671fafae84407ea2ccbeed17d6f5ac3814d96cccf7e1596b7ac8e5d779acb4494a119eb83dec1d4cfcb99fdbc4f7dc93378cb08678b5249f0dd5935035a140f1100cff2a2d53f91a4641bdc3d87ff253dfabde935746d4ad9bd9e3bcb4c66e69a1b7aecde6187f19aa8fa13422c28e412d7f97661bca858b95ea0da8b1ba90af46963313f15fcb5ae7f4edb57f7d09fde1dbf05ea553f4c2057b5d9327976c954707784c5d4907be60eafacf0e37b97df75b9fc8598aea09e29b6533aad18f7fd5ccc654f7c872a597112b8eec5eff968a59a5d2328b293e2dea3c063cbf555814c7669949d72a56c3e73fd5e7fb6bdd6b6d8e62ad3eafb02abf86cf9fd1f39e656a3f4c37aed6741d6270acfb427f82fa001a3385755601bd3ea8d7624d57f722f0ffb1f7801c76f8dca0391614fd35c4d991833682407c491d507f0cf5099d5acc3e17a2bad7ecfc88a7c7d3e08ddacf1ff2cb098fd40fd05e9332b298ce4b100b9145a81b1d5af71e9b5c98138a2556a8f592d8471bf7fcbceaa00ea9fa0fb007ff1276a0b06451a0eb2c2ccae5b48f03987f4d28cf4b857f4d03ecc3d905f6aad89189c1fb19ead28da97a55b98ca006d73e236fb9a5738c83eeda7b443accb0ee9ee3846ab4caefdf07dd4db52f79c56ef6d0439409e97e29cf949c6233a521b5dfb88491523d3beae9213f9efa8da823fc7ce7b7e28926bae300632f12cf98581ef0fe414bb4de5ddd0c7a8927be2f889f0ddca2ddd515fd67d56bcef05ac0d46baa4ea45e8bef5e0be0b5a41fbffeb5f0efaff5b9bb601fca6b94b8f3889fa61a669a2b9f6fd0c8efe7bb11c35cce0317345d554c4d5eeadd8aeaaa30b64ea5bc1980f7a9f21eeb88fa2d9a23f352594fd4cf41fc77f3198919c67c4fe3f8f5fa12fbfccab71badf9584ff1b785f91935b4f65ab722ce8a30afea1e0c3959510d117d23d47e6f98af833e714db81f0f7d3553c4639cf96e8cfe234ae7fb250e1cb87fd08554f1dd1d9e1ff238ea55e78c749d62ec317d544dbf0733b61061d7ff9b038f983c4ee2e1b3923e9bcf83c013db96c678aab59cbc4dc06f6737ebcf974eba99e2037283b7fd7af23be2bb16e0810eb565f0eae8f765aaab928720f8e718a30b43ec10f01594ced7143903aa07b4dc1f110bc004ded7456bc4aa7a31e4460bb1d4cf0539c5d70af53e410f2238f23d7a860863d43faf1fdf2f82e9dca80fcbaf18c06e03b506293fb2d707aec58cb84d3866949fc76c477ab3b1ea49c4d9c6ad71df5961ef5daa5a5bdc60cea3bce962d45f226d2ce8d13fa18770f0c9b7fe85e275f0356dbd2279726beb1caaf84bb66f7dcc0f9a64e17585fac8c8399195e213d6143338a9e21900973e11c1a46e58571a0dd60e9e2827277d1c7d7faa36bebb7a6b891a4bd699e22ab6f0da89de0f218f78533d47195cf8ed8cf9349b44693da16bc1fedbfd9c9873511bbcab694edd3d73f31dd74f8ed7a5e64edcc767a887bff0f0bbf3c05d4dae5a9b7385d813995d97a83de87ef704918f9e20220857c8d3029c3e138489abf60578134a882dca26fcac21c77b05ad397fc4f7ce897832da77c7ba523fea578567aee89c2bd64b0a8c87892f11a206bfbce3af4ff55ab2436fadef3118f7f708fe79ea3aa4f0950fac5389d975853897b2b91b0bebba84f3a530a80e8af8a2978aeadf83c624ead3b04fe426f7af85c09d630e37e2cb8a702cea39cb846254c569f29657c29bd436faab59b36bbf9f274610822e79902acf47881f3aba4e611d17f81c3f89c3a19ea35f3ba5cf4ee89fc1588a9e41466002f6c77fe72d5c5306fda803377c1d2faa3c22abbd4ab09bea17641b2f3266a75ad519708fb08f1e9b207f98f48cf2c2ad75adbdb1c1a7ba5f1b26e4c0848348cefddabf815fa23fe6bb62c47ccc376cae3971750e3e4e0b3f7c877321ea28a7e7a4c7d3a277bdea1dd0b89827f2ad5805e86be7c7fff62cf7d8637f039c6934a6b30579d1a37e7c4103fd0a98437be3d1b359e5f86c72e62e32bdb6de08b3aaeb10fe01afafbee019b38d88834d9cbf5416586f46ff4dc53b556b9bb5700dc51e751e0cdf4c88476e5c4ea951cc418bed298c5ecf501fcc18fa78432ec6a9b6229a7b0c3e7811423c77d73b893e63d2de20bd54617c2eb06f85f72f23d2a84b9e76a80b8b38ece69691869bd1601fd5012c8675744be26259d45f3a7fc03ec60e7c776d681fce00177a252fcb54e342154fb08f578248c457ca1f97b7473e74a9fac8edb46a66c4d51be1d91244a401264e97b5c2ce6f3e79b3319f8d08f788f0ad36b046d5ccaec441569c4a88dd7ec0ef05f16a4ff559f4ed11d13581fe1ec4acc3782acf89e5703617b07f427f263262f5ba8a1910e7964eaaa136b1238e586131f1e0dd9dc035aa58da82339271e2b1920f0f6bd0ab093583d0b7c449f323f57d36e485280147827c8ae6b2f01f7084a33855584da9cf21f9a055e4480b71e4929d0aaaa14ac4d7d8f24071d7bae1fd330d2b7f79213fa1799fff4c0287296f5506f3a763e495a2c625d92afdbf012364c6fb95e034b60ac31c630d04f294e2157b4afd18d8bc2dc658139c2fd28dc6f4f5f169f27a9549b6f1b27bcd11ebe856761c3c7834ecd91573d91cb1da8b87fc6677cc284f4d8dfef9a1af0fc6a1c067038ddb248bb324afb00e401cd7c7ff2e8d27f2bd97832f9d5e47bb671bf1f5996f92175dd2c517a8d9b013df694ec027dfd69aebb698627dd73e12ff80fa7d0661f89f8d472dbe5513935e86ea2df5e7c2e077673ce6f92a9f845e739cca60e151bd0439c980b70b568df2b16b567ee808fa6e38f321ffb61dc2c2ca87bf5b47fa7b8b988933dfff19695da300f411d62971d49fdce17d87e17dfd77e6753087fdc08aa50fe7a024decb6fe2fc2ace4702b19acac1565ef0908309eb44fe1529ea4992ee8e53fedb7b019f6cc5b85f8aec427c30099c38f0531c3cd530d6ce67da175cf932aa5c19b47dea06fd2b65fd3637407b4be60a3f3607fe22ecb1780d5bf5ecb373c0fbb59e1d8314fd6b44a2b10b4ceb081ad7d30a30740ef07fd9a2364e54bbf194febc75f4bfe0333f90cf32e033d319f9b5fcc8f3d45eeddd0675448313dd8bb8dd5dcfe0214cda16ea3c8e88db93992ef614e255ff37e58dc7dc3a67a4a37e263e512942c52dc231245cc4e7ddeb9735d4e5bdb51f7e92ffbdb0b41fd691ef361fb1f6df26bc437bf7fa1131e982fabf71b4d778f1cfb5583e6880024e8369bde0143057dfefdf0e10eb2d5ff57b8dbfbc17f41e8225f2a3d5b9417d29c472c2bdd7a70af681bbf7067f7baf0fb99f8a353cf0c9fbf68c522ece7afeb169abfc62e33eefbed726b436dea336e1e69424ffb536e18bd2266c66dfb49e05d469675fe7a6d241ba9f9b5a0369f05c5b03ff21405d5c27b99db4e662f9fa3425dd5ccd0bf9e6ff2a90efcf712da3ce858c4611e9b75a07cd055d254f70fe6567b7dc6a7f846ffec1fd75a127b69af7850971e8d2c61a80ac6fe4bf809a88548b7951f522eb62690e9d7d244ed885d6c1ca0fdff53ccfce1f5ab757f59a4c85e9aa72d42795d2c298c349ad73a7f26719dc802fef38f57ee3ffed3ed007596ba4957eacbe2b017c1e5e238bd65e813877d346fd772fdd8726f6905ef4b598cea526de53f66422862063c95fbda2fbb8e8fcb73d9519900bc6d3e5777deafe192b7f9f27e521f1c358c377ee4cf26657f78f7d12c945fb1163dc9bbe5e5f9676e1f3fc600edc10f4dbe8d7096a8362ade29d37f0bc699dae7d06bea7d91962c7ac18d5c883c0f780f63f8cfd5ce1d3e14cfba43a733d1953bd9c781177b1616b460f1c93c88c5361128f077b3511dbb7338a03b23b0e0fe63d5be4497b65831e5d3663c4432c27e710f3e8db02e36fcd21cf7cb50e17227e2b0dac1fe7b50d1a0b2cc35ad5c71a7d88a8a6c13cf0bf8d45d0e7ae2a76a8345ecf545a6aa8b9a13968cbdcd1dec82b3b9c12ae4392778e1d50fc73ab4405de31bb913edbd701cd855ae1e4e2ac782fa056e827a94fef632bff1f85a58db3b3d61d8d0468e3aefc506b788a5ce37a4709f29a16d9c6fd924bdd73173097829a3bf64e5eeeb8ff508b4a064de0c8884837fe9def63d2397d893ccc83550d4dd5ff06ae1e7ab0a4c007f0b2fde0e154123ed7fe7d8139220dde3cbc9f3c269c04bc9d1486a6f6080fdd2a9f0b29ee72be498db82df086e4e21faa9586abdb794af368911d019fddd5ae5e43b256d70d7990bece3947ec4e3cfc3ff07a603e1d0aa8137a8c7caf6fa74f5dabdb91e6e86c5c82d6d267bf46cbacc63a25f13fd941fbfd93567e4bbefe638b3c53b4d79a1dec719dcbfa156317cc1d9960efc9176ce47317622db276e70ae72c019762d593478ee99fd112ebcefd39d9ef7d72f2c7846bf3df713fb8c5937fc863c9e6fbdfda6f69f00167fd5aea637e83f42de2b42e69af5a8b13eae643fc12274fcfa0492fe9bc2f2bf49a7f265d1b9cc7b45f945bed7d7221ef13f4ba3ec5dbe0f50b77f6887d7606e7217b2ea7c807cdd8be424e356a828ef8eecf28a69e533fb626e0bbe3497d8d6f8f5cb8b51cf8670968dfc05eb9678895f1477735a8fbfdf28dae3bed7e5b83ce97c20c4da2ec8bb6b4e7800f8a440eb979fc25be5c4b390da60f9c17ab261dc618c60b7aea19f6440bbb0d7e188358e954e633937893549b00dc844fcffbee3b0d83e17c49bb3ff4fa669100d62ae924600c64705a12aed4074d1bd99f1358575e0bd48dcefaf3b0f6e49e6a8cb5cb30d656de2b22def4b919705883710cb5574e7d1f3a874a55c7c1eb1211fad6c0b9b33454bf35555ada46bfeecedec27394e78cb44317348dd8527645007f8bdd4a69bad49e6c46dd4a400d23cbb5469121a867429ac9b23622d078f716825d23d252b46717e276ad4cf4c6b25ad438676f1cfa7601f096a937d1c72fb5bf348fd7b5d6b460e744d5c4e5816f9d4fc28dc279c4c937f0f20d1b9b9d9b7e9ec4d66cb480ef7a5d81dec936a25a5076b8295e5116604f99bd13bf7125c25fb4c70bc5e9020efe33d6ccd6da4f2da47d2a5c61ac9f906eb7d69584332c4ee30ff09062cbc88b296e340aac21c699b98f6fc8371a7cb4822adf4c607eb6fbbad11a9dd867aca19f215b6b0ed7e664797019fa16e45f1f9873d0c7f1d63ed7bc5e914a184bf4561399f2db7644171056ed13efd929927facaf7e274547fc2ef9d58bb75f633b1a03990a53eb0d7912f590969f546bfbb956aaf5ebff6fd4703ef13915e5966af927e5cf067d92907408cf7c77213ccc7c95d6502f1bbc09cef85b37de905738d37e5588bdcd2b8f7ee3fcd98f0bea6b928ec54d8fd5ed2985baced58d2826934df78cb174d2a95a81546b661b6e09c7a33fdffdf984b9cfde066d4e98dfc5b422fd16936fd916bddf21364e9e485f54ce157602ea8502784f17d4d5f11642740c7bf0c0b7f3477caffd02d8177f05a96b50b2d15817d454460f1ff4631dce0ad5ff8ef3cd739de29829bdfefb5ad8c65de4a1d6b0abd1d758eeeb86e29de1fdadc2ccd65b861e2812bd099edca2c3bfc9fa4ef34ec5b5c19ae2b94ef9d604c81d428f01adf320d71ed3de2a2ae74f9edcd2636aff5af9f1827c53b1976ff0c10387b87d2af69058cbea63043afb01abcb6f2bf06274d27eef83dc6fb1ce63f438327f81a7a3ffce8d765c0bd09b2a84d2aa0dea26bcd0dec9fc1961782e29e10d31cf79364ed48b3ca177fc7cbdaff10c9354c78e514f2228ba8df6e0d1b8efd419131743fb10758cd6298bf6ed14b96366a935dd9e38c6f9ef42d5b4fb7d9d6a408dae4182af3e69743bc798b4ea77677ce6f250025fc2ab602ff6b8cd0eba4efbe0a1c1dc6a4ada73c1db42280d274fec6ad220d896bb8dd6b5067fcad0209f936867aab14fcccd07e1444536a2fe7c0867d1137a61057dcc1962ccfb56a247faca08958613c61f7355cfb4373acf85df309db4fd6d0d188fb3939a1cf5d9bfbe177ce7c95bb59ca246901dba558ef79af98fe3698437edf79e1dc688b34b0ad2cfa0eb859ec80b68eb90e79f39aea1a73ccf26c71bf559568a37007a492a67034f182712e13b9d6b4beb78c0bcea93efce87fbfb53b5eaa9f62155bf918a602126e26eac9e04f25b46038ea835c8b30379368f6360d318440f63c04438018f69ff812baffa22feffbfbcd8710d2ea32d7a37a521edd97135790abf9fdbaa2fe7e358bdcf71dfced06326434ed832b9f7b4893adea01f4c82754ed29ba7983eadff07fd00c3aab04e28301efaea6979a729a9b4e6e3add41a016c42589d68ac9f43bab9c138d5e4f19d55298d89e30e38a9bf8c49d762af929dbf8dc9eb931d535ef2c577874d693f8c082f1eb1b4c0daa2f6b7ffb5422c5f4af7a730c2ca471ab0d0d995f497c7dadba5434d16ebea56d0e7531a06f773b5248defdb0336205eabfb547345e76ae4fd41de912bd2acc9db33628a62ae756f54cd9aae9f6afde84de84cd6ee13e998da14538a2ef84c109b12f5734ff189833bac93d6792856faf306d4a16dc7bb9f936aafd6de678ff73c37663fde33cbfe877b4ee3fff99ea31b5df3e936dc73adef99ed867b8e84bee7777dcfafc33d174acb137d352ce393b47dc5a0c50c98ff46fb83605d1db48899a56b805649b517a1f9dc2aaf2c45085ab65981f1a8ffa97b2e9dc209c6434f61ecb229f9ac04a3123dcc655a8ce0b3b5a498309a6ec8dbb6ab492b907a61db9878069b25f21811276b71ace52cc1dfd91186e2994ea5beb67f7ebcb6387bb836c43e30e8e175cc457d910d62f137803da951bfdb1833c0a093260b2bfb3891b42bc09b0363a0d9b5c6bdf80ec7fc506f895e9f1e75389bd65a60bd2cb123f48b640561d1ee7e7b3ae86b6efc6ad7926729c4ce46e0918fd832f5df493b137eaf453d6ff59d27d63c7c67fa50974819adb117f4109a699d2aed773d9ed39985b163527ac427193cb19f49a74bfb7a99126a39b8af59b1459adb227b423f36b62893339c9fc698fc05daa8df8b278153356d48f88185b7a1da90fafe257164bed465a5083e13313a89e4dac58634d2e04f473c23996dde62d459ae5ad487ccd912791b96201ebae9639d24cc91d3d9e74c738d9b13d58ddfae2f732f76b9215103316e71ccc7cb3b1d0e99b6de5a7994c2d9b614c1398638e62db66a8d6de9e39c7fc50a75ad8a4596466b5642f75055ee504c8e2eb36aca677e21f666be321496db2b501b43619a546e7f207d11e20053dd73c46d493a907939a57dedbcaf04a79c133998ed2fc28525767b8d5dcc29110393dace95eabf2b3bf0514fd8243f852c8d465acfb88f4708ebe491a7cabfe09990fb807877c8f9b00fb93482b0f28b3715df1b9b2df438b516e605eb0d373ed40101efa36ae04ab7d1e776e1ae74ee7826bcc30bf186a31cb530fbbc12f40cf2f5fe88f18b8ffb6bf8499e9ecb04bd026ec8236ad063687f1cebd805cf17e49410bfe693c64bdace18c7d81afc00c3ebf07a38463ea7c78c7042d75ed3b5cadaeadfab7024845d15adad3f8f38cd54f5d7e489f2af0aeb8bcc9f99aa9e889ae5803b585ab1ee9d615fc52e8eb01f47d4039baf337ca60a37ad7947aa0f9888e217b75aa57b19e76d7feda0c96614bf7857b875aef43082b560ce7cda8fd9c6636266d66a0ca4cdcdea06ff2e46dc385b2bade7d8bab5d5afbb73ff59ed11b234b40f82550dfb6d7ec7839caff340736e50777f0e1a22a40f487cd9407b74600ee8889c111fe1cac90b55adb93f7635d4dc91d771bed7d921ffb8a224afc8746343bc512317a10817798835789fb0698c21c646e4724b79afeac1931faa5467a7ce21b214731961985982f54fe847792c68301707ec646cfe19ad3047d25a10bb0dd5bee655879c9041975fd5b5554c962e49fb0dfde7829475c40b3f770c623d6fed8763d6686f2eb8e64c7c12a73db1234bed5369e146227af0cf43df89b0ca896fc5ac127df8a51d502d7fcff721ce4bd408be61ac269a1b714d97c6e1cb1c0ee2d26c708e5c46b0b6d8b87ad4ff75b254a2e656f5c9f7ace3af0fbf89dc9ab3d283c5677d260c268e3f61d3c8afe34abab449b744dc14fbc03d4bf796d75e31c5ded11975761d5af7d584dff3b14e713ef0b1eadc819e9ff10f72ba2a8bb4a3aa8c3474108b68c75a3f8af4b8e13cbbc3944cabdba34eaa5c24ba76473e0aa0654a9cf352d5a9c0276b91a27eaeed78cc0b498be088d8536725666604180ac569846b8e4df4f1de921ead7ce815359f9a8b0e3daeb738abc60a7799b65e8975855a84a71afadb81aec1a721e212a4c2a0267e2b86dab83a63e933d3b2d11e1230ef873ef95cdd3bf972abf160b3b2cf3bf019a1ff2cea743103b00d724298a3a508bcd4bdffaecdfceeb3c1e0c9a4ce33f8acc214a99ad3941be889ee318db388fc03ec8fc6785f62cd7729b4cfa33778f3abbaaa8df7e9954d7c269e62618437bdc6c00beaca5b8525b079e38f51f70b7548fbf8f06a54e4cb2efc934cae719c5da7e9eb13d57d344e7425948fa023ec18d71113555613d7baa876d0af8e65d1513d68adb53bc707ec797fd3be4e11f3a7f678d98675076752d620e62a33b1ae5bbbf38e3492ffc1fe7034ea632eac496fb89082d9ade692129ebe1433c5a190807179d77f37421d2fac3d07799f630ff37b59768eae53afd4eb80ab7bb68ff8f740bf9eb8e0ad447a3c953eeb5bb7ee3f8bfb38f4167cea8d8ff8be229dda236268b0071a8de96c2c31065df8a1f69fa67afc032ff4913ffac285bc25d33f17ed0b1080b7e23a75eeeaefcc91d958610cd2063c44621fb977564bf81a4763739047b9bc3b136255b33f3b09fa7ea7d9e14ef30eceeb4ce70491194f550d81b034fd3a7966de7d2c025a0eebad435ee698cf1c47e2f51e9f4debbeee10ff28613e29bdede08e4fc4f00c3a1237b612a115514f0a73ca3a85391077c14c7bf2f5b91be8b361efe7e8026e0df69bd2ff431a5805f4dbcf549b962c8f11c7f574c01802ef63794a6f97f7b8019fb558043bc2c8a77961c68f6b85d6229b5b80e19b1ba4c156137645ae11239558d0d7e3d6f28a1807e2fd97cfe83950910716e9e4378ce3389e2847298d03e51586a0dac7ff171c889f728649e0c416e8d1c57ef04e1aea347f753f0b7c9e74af43e7e9d693f6b1bf9b77d7787a7cff3aefd2fb3cdb0c8f59f230bff4bcaa03384316223c2a2c8101fad9c5cea49c3e21de18e0aa095b6b7c16e8f54a3ea9b5aa25ff1fe58477fb03fbc5cddf38f657ec5b9ffbb182b1dfc709e52a3a26042d50af6c42eab3e4a487965863a8a7581b7735e1ffb10f88d8e85cf33d80c732ed63e4d4087c9e9d9fef9fc14af7bf0470e2d518a81cdba4bde27bbcc094bfc07a777607bf27a50bb9b83f07c4ae2d1eb02206c5482c51f3ebf6e4568d714a05e3f1ae3d680f108ad7544fe8df9e5d74d5defe393dbb1fd7ca38c2f590a51161bfe7d1eb7942eb65aefca3fff65c66ba6720f202f5facee652e18cd96b94f1bfafb5bdae19c9d58e389ce60efd88dee9ba96f98cce8379a5f6bbda89adab1ba5807d8b9b56afd1a4535eaf2f6a7fce36df7ae9a047ef8ff856fea23846f789efd733ce0fac0bfd7456411c1b48274e59f86c9267d90ce7cecc4ec98b405defd167ea6c689d788a1eef5978295e751cae729aa1efdd4e88c3920efc4603f0b21aa33e6043fd03e59f0f9821d0beff89cf645e29ce56f7658cec9a346ef13dc285be786d61ec60151f2bf1e75e9b3727ada15506cf6a25c2fd8a702ac6eceecc6dfb586252b9e71971627fe0627dbbf648f0eb10ff33e5a1bdf05103d3ba105653af0b664577dc23b507a87b5ca31659267cd448ac8f25e14c7285efdef0b47525c6f77caf3cb2f4ef2efcf095ee51649b7eee305dbbb7366e41f1950c02ed27ae3801b3d36c571c5713f1ba780dade2ffa1eeddba1bc599fde10ff4bf78300e3dedcb400c86384e1bdb1c7467200d8e85ed19c707fce9dfa59204120827e93dcfdeebbdc89a9e04840ea53ad7af42639b0cdd531cda9bf83dae66e1d840cefc1abfaf867139d6d0727e5aef5e3653cbbb25c3a08af5e036d747a7cc094e99e5fe082b77974533ec4e665a5ae2f7cc4aff8a1c234d4a5cba567149cbd13b8a66b769199cb28df1bad47c3bd282d760f338fab5d4726f685689ee0fe2a17f48f487ddf3c2fc2b721e72d7199cd12438a28581df26e639ddf937f749cbd332b86621aed022df4d37a3f7f5eee59c9641110fe7a774e29177de33079f938df1b10e1fc8dc77cfcb8f34d969390aaf37f43f181f39818ec2eb39750638d9cd85b10769b2718feee6e7dfcf1b7396e85eec5a5afeecbc1cdcf1e010eb054e2c3342d14c4b877e15473e769fdccbcb72954f178fd5cb937b21cf2f5778e58eaf87580f4ea91e6c5d6b7f8e1c438f23375f6a9e1304b3a779e0dbbe3db257d8fbb5da3c8e5cfbb299870ff93a24cf7987383434d741c53abc62645df2b5331aa208e174636a6b6795a3c8ab92a19bafa3973cd1bd328b66ef643ec83237289c15f42cfd3df93bf989172639c36d16ceb475383ab98e375887d7ed145f36af83eb292bedca1d07b395eda348b317abad8dc83e86038dd0c1afb83c60d8bb9d875174c0cfad67e9fea122dd98f63230576130fa35df1eecf9609eff5a987ffd267fdf8e36eb3278cf2ca34ccb00bf95abbdbf1acc031bff5e6adeb3bf9aad609c120d9292cf33c3d9989cadef212b3fb8938f34d93ce6ae655628f20769f9903f571fbbc4196de2f0bacc1c5b430be323d1bd077f181cd0133b57694cb2af977d1206b754b77768b1cddf06d7936b3de6ae83612fd6a17dcaaca28c81d62eb9f02ca53beb31cf9ca24a86691e595e1c59ee5faef5f3ec4e8213d0995e147179c591638c22c728b3d060f46c1e609f4a5c24bbf99ed054ac1f8fae33c0e97056207d25aef180368f7b379ced5138fbe7396073841f535b4fbc7356992714a5b94fe9611f595e9284a3cd9bade591e5e6cfd5a3b04ef3e76fcbfc35dfa260a5cdcc601c8c232d58acb6a3c533ac8bccf5e1fcbc3990efffedda66b50e0d2dadccc2757c9c4e3c1ceb36dbc37abe47424b99659e93f26ab8cee88416a6b60e07788ac97cf7f9aa0cb42cf24e6965b2fd24eb6274ec0497b40c38ed7e101e13871976275941be9b906f86bee14ee85c5038cfe3322893a187c9393c6f469ceeb628322ba07d27d82ef99aa317427f49d4a1ab663d289cef9368b69b923d75f00955123d7c89ff459627ddafc8720f9c4ee067e2e16c1254c986edc1523ee3cc290e49990a674f7f52b677edf94696bba3e76b7ea47a4afe9bba9bf4e84e821b5a3cf2bfb1f53cfe43f88b5711da9b6928b4e1de3f377318f1b9aec3387f96bee5cff899a49571484a1fbf8d47e5b333b8917d7297dac8b5b46b8b36ebbb894afb98eaabface48e73de63414dca63b7390ea399c8330aff744376e897ec5d332a8d272543ddb974da80fcef1aec8dcb1b4273fc81a5deb98b7c6a8e7924dbc01aaf9fccfbf9f197d2e43fb1f4227e930a880761d5b23bc13519ea9af43a04de90ea7b097e8bc26fc9d3cef0ccee9709e27baf18e1606dc9fe9e07a42bbe0c46422fb5b01e3d4f291f011c27b81ef8cfe21f4fd6bd1a191663f85f19e2d814ead8696880c49f40f8c2c2cd1924487ef329d35ef3c8edc895f656173666dfa25f39f96f62575aec633953147d7b12b340c3e10f08b8647fee6fb4defe829d1471722573aeba8ccd16b6bbfb2d038a451809f9deb211dce45be08b2342d835b23a3e8f71207df887c49869e1d87b3fdb323dc79ab38644ef021eebd70c72b14bd9cd6a1b14551f10b6df8b3f47e4f9763f93ed774fe724a27c16dcdc716ee948a06c99cc93a7f07f25ad7d18ccbd87d56dac72c5c29651dfb1bbd778e31489c4bee6de23c9be00b0a47a53b41453209b0fba48d7e2dccd42d99ccb5a99c577c779e38f6a191cd851e87d7414b2692fd61bfa7fb91ec826362813cd1de2213277a2ccfcdbe6c12ddfb1b8533ed1bbc909e2b916bce4f720f1abd430fb415fc7e04df5bea71bd4faf7c9ecdb8e4de6a4945e7ba64f398eecc2a19fa67d82b2a0ba5e7604d4a7d61764e7608a73b7f95688322b58a6d1cf9c56a48eec98cf0672cd214e5a1f8e6072ffa32b42fcf8e5f648ebd24fc271e927324677bfde93af8b6d4bd1b8a3c3d0ebd235af58dddb9e70d3f706c2d0e665aba0bdec9da9182a7a35ae63eeee79157c5d1f6b48e6666baf38ab7c5f7be9794c1d01df7ccf3936f2b68ed2bdf069a48421bf846f3fdbc3977fa5c49f4e1e709f0997f50b4cdd7a1627f3ae3d31f32fe7437c3995590778f6ee7cc8264ad074624e87f94e6063df27a50a44fbdfbd1cb5be3101f898c9bebf62929475a437bf39cdc09d807075589aee5de80cabbee1a99bc1fb4657c47172d90e3bbebd0dfa2d098a7e5e8f2ecf0b3b9c03d4cc7469184ab23e72b229dd7f7aaf4312af10905e47e99e49e18fde3c8720785c62009830ae87fb9e7fac251de9fac5a473ee8d3af1b93ac134f6de9ec899e50aec36c9096f62671563f980c6b8d43d7f0ba31292fe33acb443ba878631cfadb8583b7c8094e7e894f7178fdffcb1e313dfb2a8d13eba3132af12e8bbc7b7b49f766b967fc3c90e5598737e21be1cba91354d9043fb5ce61cf65c094f2da4b57eff171aacfaa75646ae4feb679fe72989d84f1c7289abda725be64cea8eaec9fd5dccdfa1e5af6567c07f8ae5548bf9b96b37352a2031ab23d5e3c16441eb07d06f98a9ce0160fbd433af1cfe9c618a625d614cfaae9289a111eaffde93e813c999855a2cf703a7c39a1d0d0a75be3973f0e7efb2b2374ad3195f53bd10763a4eee6b1f4368f05e1bb644c3287b7557badc599edf791d858c9f0f1d0d2e5153c6950acf515dd7358cfb6e645f41c0c2d19801fe984aafc407e4fec15d7196d523da832bae6a3eb608dd08feb18e7ac7b87f33834b6225d131d99e9e55a1c793b14117dbbd131947b3ff430b13516a171cb1cfb14ebc119616227fa07b01b16c52926b62af9be63ff78db08f281ca12388f65697f10dd87f0d5753403df10b3b1e0fd5a1639b3631c1d7e48ba46f0d18c116884c6e1de29f41681373feedfbafa7d2d87457d913c4768f4cd6e7d87e8612d5dfeb7c2fe11ecf3e1da09b4b513546c9f8bb4cc08ef396516d83c059119546fb8e4c8c1b7b40c7671e46dd7a1219def3abc1eb2c9f654dbe82d9e41f510fcb20e3ff0f344edd751e82a0fcf546f3ba49a484b41f3f71e1e55eb62c45e098d9d78bf6a5ec1fe46e82c1dfa4552ce40af25eff5e8cef6ea8696289a2bec774167a77f23365643831b93bca7f0b9305ad8bd90f7b0eba073e25ccf998e4fe8b6cf936176729d0ffc466cae89a4cffe83227c73ad983e33991949e89d138bfe7e6a719f4b6080adb63071b20b3e109305cc57736ee9073b14f9b2ce36866fd7fcaacbcf8353160e30bdc3d43e039dcd26ba95a0b339e89c6e1ef7f49d0ffcb6300fc9c6e4bc48b6175a634e4b7b8ba89e7678ad1ecfd3eaf1ef38bc1e9f37f29a52fead71ed7724ebf995e946c30f03b64f13714dbdf6e33f3db6e31fc9ac75b53d49b27da1b0d77bd62edb99c77c5afdcc9fcbd130d9ecf374883fe27274acd76ffd3cbb63e39c51bd88fa84c3c12571a8bd1e479c9e5ff224c4b794d05ad5a20fcb3c24658189dc432191156cdf1cfc4ee990ea34ae437498e0e62ecc15f5a364e72cbc6e5da738677aa0236adfe16c429e0d1e522738a53ad6094f4f2aa28fce6bbd86ac298ee83d48cb159d5ff93347212ad7e1ec80c0478e3532472adbfd7d1ccdebfb9c367471e1e7bd0e835be7de8fed2a2d6d635a825ebd97ce247a51ca9574e8578457ac43642cf4c078061aeed8cc608710de4c6c87e9ce3fafd87b7dfeb2ce73824e03b643cf7bec8e31994bef46779c8efeaf2503b35a878343e6903350d8fe8d6c52d8ff8fffe13e08a24bb6fd00bfba7e80fc5765a62ea6ba027faed6c7655fd139d38d29f0b427adf16fd81e46e595dcb5dacf9085c61685e89094c1967c83ecf7aa0ccac4813b5f8fc3f7f157652e50888e542f1f0d932de169337ef77e7c8d5fcca4bbfaab9265375933e115c2fedde311af4487482ba28bed0f541f9d15d97dbeb27c0b079b44bfde80a76c082f6cec4cf879dae7d36a4fe4941687c6260b2ff93acc4ec9d0c3ae63e0b7c93c7fdefc146c940c67e3d130c1cd7d065d227aa1b1403897c72dc4172ca20b711953a46e3938c7bb9cd84c1febd038b0f818d34381f6c08e9f47fe39217a940531b6c758bf16e9f005e621f35a512778e4f211d6f5bc319fd2322832a2232e68fc2386711f72bf1c814d11ef821da27cec9245de2519ce705a9907a6c754289c9d93708093127cbb84f7ecd611c254271de709e87b86f8cdd5da59e5896e58f4dde057bc9be17487c8fb4552cec5bf0549c9f59360eb3ab32271ae9b389cfd9356e67b1c3ee471b9cab368067e6562f7a465c0e2b22b62e39fe230c354ef12e730e23c5fbcc366e68c3e9e81efae3af103ea8b82bf317d109dd7e13c7fa13e57d05dc9fd8a2c0fc699331f3ad05b193c6463bc25bca3ede7203a4d5a19f5fbb05fcb0fd533877460927d3e246526ec0b8b233dd5b6138d9f815e606254224c786d46f62934ce6caf891e7572c75e91ea01ccd7758a22ad981dcbf61245859696e33c19421ceaf0c6be35b5cc5b426860f272e7ac0c9c95410571c7c94b1eebf6317182ed548cab3a58f3864416115bc8c028f431b25bb13907dfa625becdcb80ac5ba095c791eba02299cc70cb7fc5dea9e752a51579d6c05905bae2fe59bdbfdb7588ca80f3dcc5e3453d2eb967be19830d39c368ec1964ef5f9e94631e936186d3a15fcf3bc5338dc6bbb57cb1f2891ea0b3fbcd63aeafcb81ff3bb03d73ae7d78cb6ddad81c5c668d6d2dd1b5532af871a7e5e8342f83f7441f60ee0be53110919ff6e85d7ccf1463f82f84efa1d0c0e9eea5732fa86c035de8a4bcd3e32be161388173e8d5078ff53736709f1a79ece05be6042714b97ba29ffdeef51bd2b8c757f62768ee01a7a33e7e29f80d3a6b94e87d59cfd3bb75f658a64bf53cfe2ff6c9e2b62b3cf3b73b66b1b3059dabeb0c70e61467c6d74fc9d03fa0dd36a7728bc7f7f0398b5c2637cc3dd133e332c0c9c61c40cec604f66a9f0cd353331fc956069e0374486ce588c854f2edd920dd7938d9f9c7b78559b810bf9e6954b6cccec9ce2772571cf3ccff4d65a341631243df489dd5292d834b32f4b46fdd8d46e7a85004393102ffa17746b41ffe605f7fc721227af76f6e4f2461a0ad9dd196f1e3f7b563139d65eb4efcb33b991d906e148965425e06d7d3896e4e78695a99353da5bb973cd50b6633402ec6711dfa44d67f7bcfe67a512465f6a5bb42ecfd74e75b71e4bfafbbb105b01fe2302b322778e26b6377abfd2c9175dd71264d8c5235e7cc192db389077e826f9c2fbb9b20df651f4fc797e29f139a3fb567b91ea08fada31995a34fda577c65a9bb253c6a90ba9b0b5b078c25ea23ef54370b44bde4e83a4a1eedc6a1b14d9ca09a5ae639d97a38d6471f28084e89e2996e8cedfe982c06aa273adeba4f8f07777254eb6f634227fe91d8a6bf1634462dead2ed6fc9fc4f78b7ab5f7dba26aa3b8dcee9d3b19193d4ef58f073a1312f900d7baa97363c92d8c8c809ca380a8e9965d2b19c4791afe6998e8f8945f8e03c27ba79e6e02271f00f7aaf57f9da199dd7a063f8524eca677bc562d0e764f8d8b94f6a3db980354967bd6a64d182dc2be74a64445777a0f2fef3fda4be7038c3aeced0274b15f3eaa341458cb389f9c119713bbbed83dca2d0d0d6916fccf5d147ead8159179f1e292c71ba5bd5d30fa55c6edd326665a24e3d93989cc222d83ead9191f5dc755fa219113e0741c5cb3d03ef2e7946313bee95ccf99f6c7e31edda7b172ec9a56bf38e7c636c5b7f69ca9efb01987dc15c1ff52eff7ebc63c202738650ea6f10ff67c1df79a34b1d338bcfc90fffffa94e8834b1c7938ddf0789ab945212ab2f0aabd6e9a7f0be75afbb0eabdbced95fb4a6885ac87fa80c7f9f366fff77fffe790a6f87a9aeba3cb5be41d905e68ae55bc3f2fccd93a9c55c9707646bb793ed74755ea8c981dff7072c736e123d53accf6c43622362bd3494ed1c44b93ad90f33a094ea8892398a963bf135eb374f03b0a0dc8a90c88cea8838caba6ef8fa0aba28599bacd38e03b005d6d617ec4d196da5c93e086822bd93ba697401e34b1fbde51646a1027a274715c135b5a5f111ea8ad2dcaef9a393ce461381ab8cea0785b101dc42fd6c4365f98efc9d0345c6744753bfaad977538c3c98ed87fb6e63a85964d1e7f4cabd1301ba6a738328b582f88be5ea16a74e4cfa6d5e865b19ad94b3cb3a74bf7f462c358b0ffc1b8f05695f9b4d47cdb1de3a56b9b8be50079fe3818bbe3d1ab3bb65f5deb60ae2ad35b55fb7cbeb5978be0e5e8da99178c8b5f4130cf039a7ffb1a8cb1bdaacc5fab0d19cf182f02df5b6ac6d21d8f1c324e48d7305dac8cf1d432ed45e0bb7ee0e67e50cc57db60c9def59681f9b25805e4196fb99dbd042b9fd87279a0e1d5623c0a028bfc7de005637bb558d139868be63da0039c992bec994bec7b7ef0922f076e3ed746affe18c33be45bfec65c2d02ffc55f5c727f8b574b3a07079e5d98f379e0ad16ab59b01cdb0bd7368315367fadb4d591d2d9c05e6d67ee7c65ace62bef6511f8c81d8f16eed8f8b5dc0cbce5162d162b63e2af06f61233dac4b0fe250a5734ae32b62fc44e410b3324b60ff545b8a717cb14ce197c11b7d409ded7213ac495798c43639785904bbb4b8608a7a5013a5bea0415f39d9f93dd0cce17e297cef5908498f9d88d5beb5ed4df9ac2fc1efe17ee3ef981dcc48af21c93e54e5f049fe9255f4dbc33590f5af06729cdb218cf03e81636f8040ef1f0a5a5b316e02f01f94bf69ef24cfc362176a20ffe82753803bf6e939b35c3992dc4b356e4ee5d7f36ef331fd8e498478311d59d07a3dfaf1b338916e6a81db363b1431abb17730d9d399335c71c59c6ef6848bf190d20df6c43f43e8831c23d157507c99eadd727c5b1268f907344e439d519ddd3dab16fb2df76bb4fadedc175fc24b52116bc098766f64af31fabae4ed1d9eb3db24067a07bbbd3fe12e85bd4c37f473a7b7752bf43e463fd0d1415c426dfae86c4bec2ef69c5d6b5fc80b3eeacdb1efd66b99accee20f62c9395ce08e42fa27a6cf30d4bb27360bd4caf3965c4fe7b12fdcfb30a8560676c9e178f3f5cabf81d55ddf7e53cbe0b8b7dc0dc0e740f8d91b02760e7448351910e891dfad0a2556a0bd6ebb547bfe368765b87d949a2cfd226777b976c20fedcda67feb74293699ee5ef94a30af22723374fab4bbe5e3c8edc27a2cbc05c9a18fbe4e59490f31afafbd7ca3cb84f973c793fe6ebc5f11fd5b8547779698d314bd681a67e5641ab69c568b589794876a9827e4fe013b58adbd4322fcf8b6d9ed91f9788ac69322334ddf9b6480f6dfb55a4f9df22dd35cf08fb6b14e9c43cbe2d98dfcf92f6ae3efb57815f89773f1a8c689c297ad927957c17285fa3b9193c8eb56271d42697b6b90b3cce940c3e581ce6725a473e4e4b5b4b865e36b5c8f951ff6a7397c086f9785e08feaf85f10e314ae7e74179ff45daa4fe8513b9b7af1b858f4079e6d46e72adb8749d6dfeeb5dcb93ca382222c79cfce0d23c5b6e23f7d0587d167f0939746ccc5142e833827c90d1092df7b91bfe94cfd262f652230b468a7b2adfa9a187e370be4faa4b9e6cfebb6725ee3bdc05cb96cfe826d225d8e670b6e2d94d2db3027a845aae0f72fe581c379b7886e22c876b071fd1e271ff4c7881e43f003e739a2eb4fcd7e6f1f2bca0b95ccf13f0511ca625c4eff6cf8bed09f67db1cde3c8e5b9e8d574c77211a53b351068715664ce6cef5a054e77de99f965c1bf4ffe0bbf7bdfd77566bf972dbe4ef3218f6f0aba53af55f449d3f3702397cd1dd6b687b8a08393c8f2d8de1ba98bb5c3f3c2fc9896b322712efbf562fb397f21f640691f9309ac097c19647f78bd165a186c7df29ac47f0b367df539adce2e691914bc3e4d909d428e8b5db15a8523dcc3c5e385f3f838f2765938c0c9cebf4dcb2b4eca4c5b3f31bedf591b1d879c75ac8f082fd69eedd16ffafda22d070ecf6a9e5aa4eff4f7c48ee63212fce363ff806c6f906cafc5db0e7b4989b575681fd7d101a7bb19bf3f8406f9bff791e551bfaee31f90655659f890432eddc23cb4de9762c1b44ead8e0d8e51383bb33b09ba21bfd3cff665c37cf717a2afd01c2d1fc73ad8a6e7f6b852fec64acc2ff59ea8ce4f64d5c7a8ae7b748c73b295f26ca49c9db94e6dd7ba8e51ae0da03a8b90d7bb107d6c9127e7ffd01ccba39cd7b3ead4b6c4cd37a53c1ca22f7d617d3fbeb82645be6cf10e63b09cc588eac2e23dded3b90509e47a521d561537fa5a4e36f7990b6b7c6de571c9f9c94ca7d203b50cec8ccdf98e7026abc65650fbf095b20f748e10ec0533533dffbb956fcd7c4b387bdacb3688224ffcdf9b2ff9fb4c3c9b26b7a6333739a6ff7bb155faeceecc85f01b9c599d9c591cddc647d71e15af723e14cbdbf593aff39a6bc6643ac4db7af2a63a39e50d6f00fd58fe6e0fcf895a3599c809de9321cd2d4bab4e2e6eb776a2de8fcb7778e991dd8bf6999ea7956965213e22abc95f7b5bd0da9698d9b768e79d9385b94986fe9ed5ee9fd0f085e54eab7395ea9c4b5a1b2bc8afafe61b49fb4b749ffabdb51e18c48e14f7f5b913d3f5ab3735cf68d5f0e05b741bb339d23b93426e1bbe3d2f2e902b970e7e5ed933fcf95352060f906b5a3d16c23354d7581e3f7defdebd6cf25589ae027963bf5f829f57ae6ff5df4b5aa30c36b24857830ff27d253fa1f786e221f0ba011a5b2372a4a13566635fa696b99d96523dc591bc2f7e2f70ec8a9c2d7fb63ec7adba7e53d2dfefd43d113d24d6f3fcd909603fa86f24f8fd02b2f6c8f5c81f2efbbb3bd13a3945924ea9c8434877eada2d81bfb0b3b4c97769ed43fbfc99ae19e9f2d973f947ecd9481f731b97ff5dc96f7f070ab924ac81cd89f0c203e1cb69391ad23d91f4cf936a8fc9effb6a19e04e8e85b3db140d7f586162db1c600e2b49c7388a79ba733a16d5fbefd62198e25d76e27046fe6b286a8fa9ee25d0da5cd06b5f3f79b65d13dcfc6db5cf1a9aade95caadf2176d7c43cbeadf0471206db35d1c7c2ab21d3d0cfb36b4b7818ccaf6b937d2952c873f4015f23a94cf0ffc4e185e5e0fb87147c23f43b6bc01880bd39a30dc54668cee202790d606730ff9a54e3b960e3ebf8c27cc0647f0e69b9ca591e7fbddfa05f92b9ede6c7ce5a1cfbc6de879afe3834de790e35f591d4f80acd1e4ffcb3ebd0385d5ad1bff3bd95c757df33ead3a475df8b70f0017901918f899d25d49aa873ade8b90b744af5e664e87ee57c79bdcf51daeb4f79d663cb96835ce5cf799bd5e80084f7c67a704b2b0327bbf8b4dc8ec67e30b29738aef38f25bc1ac86d8e4bd7b2c93ebfaf8733a87199afa4fb2af9ad9e157c84f2348a531259de8ac5b9a49a16d7194be73bb5cc4d16cdf37534cf33ddbe259b4c1371051207ff83162d7a957020dafc342fd4b5d3c63e8e66725e34f785b475a01e5dab5be7db919542bd81dfb10d39cd302c8839b70b7d49b66abd3421d676023fad7553426377c6ac2ea22f79ff3624f63c3ead9da05a03a685ac1b29f7b625f7984e44f7cdfe005b7ae50427e4e013d2243b37e3f68714ebeeec1fd8983fd87f15f616bb170abde275a3bca3bd63487591effb569da4c21ea2774b94292bb6ef3fea3db0bef49e29dca11fbd7c4125b7956752cb3e9ebf3457c8d4c35b1954beb4c682f3acafc8e076aed8e85581df91464111eb1fb725b9af2b5ba07d772ffa8afaeed0b4fa99cfa53baed0537ae434a12b8ec9340fbcc53c50ea8262ee47c37f382608e5b3bd9820aa3ba0ac8ba73fc40e7a14bff30ce3bea8f038fae883e87aac46b0952ba85f0fb1bee2fa5e3b9ed0d937118fa7dedf16964a93c7a5a96a6e3e930b37656da295efd9baeb1811b58b1f694db3fa6f37f01bcbe7bfaf6b69e09d59f2c26b45892c63f54291e5e6bf2797fcfeb3d43f1759eee159e5278abc5ddac41ae87b4f73f0fdc2df06c75bc4ea89009b47f03fb4f66c8bc2e0e287c61ef49cc8dd679b4b1e551756a721de03a21bf1ba62fbd4aa3926ba19e169db371eaf90f3cb5a75a5ab7db6d9f66197e8afe23769be30c35b6239c6ceac4836e6062dc017a613de00f8559017301840de7c38ff8f147ba86bd1788decf6de1c780e1bf59395f4dde7497c845c47a8c9d8b33d92f068faf038f4e7560d6243efd2be9cea5a49f816e43494ebd000ac3a5e57f2ba61f5250c5f41dee76039db028ec8d7bf09f5bb5f5e5b539bfbd5fda3f81ffad422b61be4adfe60ff95f2d29bd85cacbadfb7b5631f136734fc12bd326c1de6e31a241c27229cd3fbb711ebed7af609e62163cfc8b832e2f9dead9feefbfb2c8e1ec93ec29ca0f65cd8b7951e103a68e30634f5cfeff2d928eababf4c03717d27ba74067643185c1afc8bff3b9affe25c088df2bdfde21da7774641a3601ba1e8f107af2feabd7798d2f957d79dd2f355dcbb0bcdfd7caa3149d4f784d9317f6a4b49fb625f3601b1c927b33db7b39370b45d87e88022379f56a20e007114b29e13b15159bddd81e878893ed8ac4383dbf1c375e4ef898c23fc93e8f8fcace1dfa17d01ec83729e93bd4839ae4e1b6760e26154061522777e159cd63487be7a760c9c0dba3e7fa2a72525ad8966677d4876c4466fcbada093179b94c190d57ca978508542c4b18beca42cc05f9f6e806ece89e387b496b7971fddc33b2c7af00e699d738b3728f802c7ad046c3289ce584e3339db64181c11cb59176a25d939c9329de1d4dc22cbfdab8d638822d326fa7462b5d7de7fdfea67541882efecdcb1da3727da8a7e39aa4419809a7f4b189f221ea8f8ccab1c5391e8fad742b653c4ef3eb3385b2b67adb16f27adfa5e7a8f059be69247ba683f08bee696dda0888bfcb1dfa4a7fe4cda1f3794f182883c6afdeec47c49a9bb957927e8632560cd109d8cd679390c6376e2e394cd9b63da44f6b5ae55efd4fb77f6704b3138f13525faf0d422e3aff239cd431e644eb065398a380ee7278e57e3f6f9a06a1f088d1935f59db26f4c612ffda785a9745acbf1e81edbfab3f75c6e23713a52d85ff40772e245ff1d8b8d289eff21c9d1562d6adce225cb5afed671c7531cfab27f15e2f0e239d2da7a8a5f21ed25c4e06b1eadc66d94702645beedb31ae386cecdf7b513bcaf87808579ab7136c05f1a9cd2cadc6611adef22f22a0b299e51e357a0fede265f88e339d6b84f77f10e5af74df5bb2fdd41193fe0672ee3978a3aa568b776ebe96abb88f9dcb3a157a41313a79b0e8eeadf5944783e917b3ece20ffd83c24ce1523dd96fdbd143bf9cc3188896c16f16469deff38a7713c53e779dd3d3e0526cff147ea5c0d39cebfaaf9398fbdba9ff853986f5cf0770876aff558f5fa7815d87f8bd0203cb622b47e6ffdd38df998c8b105494620678453fd619741eeb5099819716818925f66d0e3ff6de6258e798a23f3924cb67b6a8fc8b94bed715af1b11f6a9f09c55015e41ecd79e13acbfb7d0cd5c8792067394fcba0be13aee31568f892277a5c9f635b67a0d800948632e7671e4734ef0e744a1de23b60c7a3707021f22e2df1f16d619ed3497d17a87e38b89e083f58870f2c563428d6e5a85a473ead1f716645aa07b73a37a9a97fa279432b49cffb45c7376e722d13d3eb5bf9335c1717f9419d2b43de29ed4132117de7aecc6f6b3f2bd0f8c31b196be2012e621f5efb57e7dfc571b76ff09c8d883cd92ed9feab7173f2623a78d8836d31b9823df59bc7ad86d7bade4ad4797e833c2e8ce7c5fc3cddf9381dcef76b22a75b360e2aed03c52be1b5c5f39a1678be1e8fdb3d8712cdd4f8d230ae1267ccbeb1b82a6ed9df17e077bb17154e9888ff4d7d640c5307ec7ff1f7d2d9f5d96ef5b9339f7e20cb504ef7b7d6f76b79c330d0781eed8ee594103ed163df0bb62ff37f357621f5eb517cc6b7c996d3b058a3fcefe98b2cc7a8c621627bf7291e71dba75dd308e053bd53ddad3ec30ee6a030463b0f86e3c99f10d802f6fbda2a8a7448ce036c8c031ab3715535af72eed909dd247c24ea136dc5d0bf6487d07a4d59f7a16336beab3f18b7a96f548e4d6cd2718f0d23c6f79c64e889362b790fa76540c6137edfe47ba66550720ce13f9ab7f87ecbfe927212f440f8bbe7a4e5e8a3be4f5571ae799fca7fdfd0cfa9e1a1bd3ac57f3e7d7e63343212b7e5acf42e4e2dea43a43e9aa02beb9f7ec21ea2c8c3643c618d8a67f7799b7eb82c9e56fbbf29dea3b96218198580e977e4fe15979c8d1ccb3e810c5e101ab1df2916997913f0b2198ea4f9983a7615875a9e313d8d6388657a7188f55cc08e6075dc8b96ff4c8d73f8aee295e0f322bad2cd65ff957064202ed5d2bf6e893ea0f9394f3dfc55d2bd8e571eff882cef46f11fb2d4ddc8b8eaa28e15deec4ce0cd34bfcf56f042497f93f9c457e3748dfef6ffdf980aad75f230c552c2b795732dd6a1d160ed6f701bc7ade56f6dfcc4b4de28add87f6fcf6dfd5619bb51603a3efd946da98551703f38ff86ca5e7825f6921837e9b329bae37f501f33d5d75f5473aa7907c54ae53efd3e1bbfe73b371a6ff9f43b7c3dadf366b622bbd3b13e1a240ef5ffc5fae894954105b2186cc531adfb6bd12260a1cbbce328d0d721b325da24b607d50fda6b9530745e649fed10f07e86eb6886a716b35f1deffc6689e3ff377cde44c74507047bc0fa3c3833c6ef6abf96742fd6a10139619d38c2c6f4d0c6349221e19df629abd7c16b30bbef48fe6d9a6ba6514c3caa0ff1de332d9ad824c3bceed5e089be7386f3287ec32f6da8255d8741cb06f2ce6f3d79f453cb54ca5ee19c953596eed343aea451079f889c859c3fe76a04d10ca3b17d937cacf6651397a307850e486b5b80df7c6e0f3476683b3fa2a63fc037947d5c2c96d0ac7f8722c1cfbf4555a20f1a5b8cd6a79d194e10cf373fbacecf138aec411c5e253ca8c686a4fcac5d6751fb056d9e937d11ec69b53f5859e3643dfe3ff749a98b1f9272764e771e8e87fef12d086e28f4cd549372255297c5bbff17ce40a91f701eafda8fcf74c5e7c5254f187ea27aef0745daa6f7c65f18b23ad6a3a0ebf5603ff6f8a4366a9fd45af03d25131ca47ab09d4733290729b2bc8f383259cd55c7677da6f569b3fbf6a7a82f2ffb7a5e01f6a1fc3ef45351ed4386334127f577de3911cfb8da02bdb7f1939a9a1df3063968ad7e41b2cf38b8fd5ff19a540f54f6e6ff02af8158b16a1fbec373441cb4c67fc5e4469bbf80ef7ef2726cd5f17c4eeb13df481dc05697ea207bf29bfe077ca7e9a9d4c1e484fa909fb4265ffbc44726ac4795079850ec8387b78568bff5e4573767c871365ab6ccc788e72832bfb994d39afc717e9ed9f26b8a7b45e892dc4b952f92f1444603126f54faa381b76ce2680635caeadcfae2afdf8b8bec0fb5a49c1ac20394797dd44ea03e44c96f30c184471f62391fa6b61fe2d2bea1767d13dd17e539f0f5063ad6d6761d433ca0e865cf7c643c3e7b9bcaf98cecffbbbecf4ffcf7ccb7db9ba378147c15e56bd74ff309969578de223e16e4be746dcf36e6d6d3bed77fc3b1b1e89d92f57cc17724edef2bf3c7677a7048cb794e6cea583f828f7fad0738b54cc0fd24f638e10369659e008367b2e51851f0772a77219677429679cb1cc0d063673a67befe96ed51cb6a43f49dd37a35399f83d7d190733f4c4b744eb74111ebf95e96f71cd3f928d6e74afa72a803de3ee483cbf13954c443ff9c9618a7830fd033a2c5f62f9e13d4aaeffc54e6737ccf65275f84d52808f6d1ffd4e6892ccfa6f12a88bf9d93729527437266d959f655800dd2f2efb01e90d27c693face9c61cafc379fe06985ff67bac538c3856af05f565844e28c6b39c9bc27b6da2c8df27ba0f3165d6d7067a1488fcf49768e36009a70ef200fa7c948abaaebaff6c5b0fe435b872de79930726d700fe412ec79fe701296473d3d3f8b9d5ef49d15b89e6a8109b77e219108b60b161c08a2f57149f4d1f5c321a9f657d0968ed68161a355e17b17f891e9e012e6496ba9bc77fea1a591d976fab0ffcb628dafb57f72b92f4ad068798ca3b3dd0582d6777ee13a23311d927e753101d8ef62be9e675ac23deef45de1fc00e2232d47a3cd371990c977a7b801ef1b18e0e349fed1df2f16eb06e67746ac5909bde494357e849b3fa8f3bb66fe930f8607bceea513efb0e26fcf10c7547614c69cab12bd60fe824e272b90e66354987413a9cd7739c12fb30bcde92cafc88c30fcc6bd3c45c1c799fcd1beb5f523d2f1ef2f90ef27d3e685f83014ec251f506f93df60e2d1e4e52de4639aa62da1740ac9b3b25c3f4e83ae8f0e60437e855621139783dc7a17f20cfa6c319b1337272ff56b48f78be2c6dc0757e95b161ce620cb773c706478aa960312c094a5345daa35f08e77380de2fe3868fb0ba25611d975c91f722e253fd05b444ec4a3dd05a7ddfa8fd033476a1fe36277820cf0a73c8897e25d811345f5fc0138ef5d1473a093414fa3cffb013f3a9efaeccebfeaa6b136f7b3a0ec5d23c4958a7757e4ed3bf4ae2a714b38fd0e02dade4be2fafd06f82cf8ff286ba679f25e392a3a8b8407d2eebe5eb8e61dc230ab3221e6ef3741254a933ba119a60b4cbfa01339f78f492fbc1cba0e32be779254ffb3c1664c2b3951fdc27edff414f9c897b8869fc007a08b7e547bb56565813f8595e16dcffcafedbe5eb526ce165a38a41746a8b20de219c6f8fcdae9673df8e39d4b6747ae598be801767c5a52bd979e955d5eb966253f5f83ea00e65dc9153b46e4a3893c951a07573d417ff16f664fcfd5c9926ef0ffa1d09670934b811eedbede741ca6ffda39e805dff9c985f29c5a96ee3da6e16755b777321b4e2ac23ef9659528f38a28f89fb910bb9bc1be653c66f13b27733c8cd9a2aea4f657da137a7ea46733c857b31f18bb54ef837f4a0075997e93fa57da778fdc4ae9f53bd4d5a972a065ff374b90f118d0bf6f53882188efbb4cfdf86426feaa149d600b29762f6a5d7263f7f74c9262fa023dcfb8e3cdfc7fff0bfbfb239420d4b137ba4bf2b59ff9785fcffbf278c3f2c581f97c9f527f94664b97fb9d6cfbf192fdd41df8612e26a2c5f9cf22595ef68de9c3dcbb3063f1fa5f71dd4c309ba9bc1e23473592ed8cc361cb7f2c5b82e3dc663147907de4386e2570296916c3fa99f6bc77037284467d02ba1574b9aa7bbe004316aab3867917f5b873e761d8fe2a5517b90e5a5d3e71b9cf0262796f62e9bb37e2ae625d131b91f5b713e42efcb7da25f19ae957d7a5b98d017d975ec4d320c200730857a60b2b62db169711d6355ae3148943d5a828fd4dd1abf027bb45a6deda785865ffdc16503d88d9606b16872fecbed68150dfcc57c359b2e56c644ccaba7350b3f1bfbbf226b821a6f9c9433c37566fb3834768456521d83ce406431edef09e74b75472cc6fdb233e885b497ff311e06479ab327ad413c3386fb8c6fee24835e1209ebe1cf70c2ca389ad598063d7be1f950b38dd87c687f9b7070d90481f93b188f7efb637be5076c7f9e68cd756479c1ca1ead9683d1781ef8767b6f529a73007e8ff6b9c5753f8a4b1eefe05ce9ba9d0fa27f024fff7c5f7d711f866b2213271e4ea38062483844861438d68f4437afd221d5cba53551de385f0e66cbc5ca7b0983d13218db2fbe14ef97fa989c93f26ab882ee19d47917e01711fa63acf2d578b45c69d85adaf8f76ae09bcb71d0cc59aad32c8aace4b17d7296acc710fd37867ec596b9598769a797d3ab483ff53e92f1e81ea414e71ff809b543021d459ed177261c3b21d10db2dee1da213c80f7790a307282ed9fd2936a3f5cace5bf168ff59d533ef32ef12953ac79424e0058782834dedf78ff9a9abe887d0476cd31a6315d766e9cef000fe3f820c29ca53b79489c0b5d3b95ebb4671a8c03f93618e2e95676ab7b60316cd229fe43de8467abf9ea6a47960777ed05f6c8147eef42add3f3a250ee35ebedacfedb934664f141c8475ba5a5fd8e56833352c90edbafe2708697e1682bf9bbc4df071fc218411259deeb52339af9db6cfe5be3d7722b9ea729bd174cbc22d68359a2537a598e47937a8c808f71fd4578f5ebd7e661adb681b9e0bcfdc9e3bcabfe3db3dbf6e2b7d9fe89fb42310f595d3695bdb3220bb37d360e1e623d60b98bdfede727d5003cc551b05b4f7cfbcd9961965fbd8f757ba08a75b0fe64ef7104b90623c0318ddabdd4e0bed849646a6f41c77fd3f4c4d1ed01d20bcd677d0380afc0bee4876efe32bea99e7f96b11b1bfb51c4e5217a9c6adfdebbbd987dc20f272f39c8fd49b64791bf47c4ae86bc7d9977b11cd7969c7cc8d78e7d731dfb3d9b044496883299e7d1796823c997038a66ac8f9b7948abc72b600b850f0c4b06783cb9ff45e2cc06097daef5fecb918d7d207659b2dbb67954d313cac11ae72fd45f61ef18dfd75cc7abe7cb713eeb35eb18a7037ed7fdb3fbe4d2f5b0bd9befb639c7f565fe275a5bc9f7481ca7823a50ea67d2a186fc9c9614ff89f60723fbbecd333da8d0a2eea3c57a3dfad427309969c9d0bcd4be2e8ac75432bb88ad77456c5db27ff45b65f01e87d7f72cbc163c9f3886de61b44695f71b64baf753a313b3dc82015d6b46649dc5e4bfe391fd20fc00707e62baf70d0fdc3ce4017d9ee8a24d1fc34986212f9fd8570b9e5fc7fa9935eb7860e7da3eef5efa13ea4ef81ec0737cbfe5b999b7b543f3bc40efa6dfbe517b242be8fddde759f49867a1a1adc34b1e87b3776a3f1a3b77927f107b50a635a3f69db4fada40ae546da32c0a491f97f27687d981e1234bcf00be9e821ebbb900b322d5577dbd12251df255514f24d64e2b7a45be431c546ddf9cdafabb3cfefd77a9eeb1fa712f3f1e72fa5b367bacdb37b43095b2778acd5fabc1cc9b6faf281a5059febae9c57ab9313e24e8943447370e1ff2449fbd67910bfc31d5f196dc5bc26fd8199f53f0cdd2bea1b50fd37a7c7f791f1b3345be0b8ffba20899a077b3f35c95418118b67ef7f7c02babcc2a2826697fbcfa9296811e84864664ea5aa7bebb4cf8ff15f49d9bef790f6f625b319d8bc6339ce24ce848f0a9dc683cc4837cbcd419414ee4d462bddd195f8dcb559e3a987e73426c117ce23c829d1146e346be4d153458c75d2b16cb68ee78dd1b8bdcc1a9651e79fcb1c1af56618a8978d8320676f224f439b88bbd39daac21af60b449071f8748b5f7420ec53a9a757828ef97dc8f5327e49438d931d1bd22b1192d97fe21051f6f600386e3d63b67a1b18d231acbfd6c4ce6ebd9ac69aca8d3d3b5fda3c29814d68829cec317bed98bb9aafe4974ef6fe807dde985f827f3ac7904c308bd8711d8f9013b1781bf6cc57aee6272af2b043d45e74ded1dcf89b50ee774b3affb41319b476b7a558ec09f58e3e585b1dc635e37883d58f70d2536d757f74dbcdb7e686c9f296f09925d2d9fbfb49f944e682d0eb39b1628b4b7a9169c10c465037d0eb660c6ec270fc761b706f30eeddce5e76a1a52e0d67d9d0620ee89143a8deb408d48dea3b38a3a28cb6fae63bfb48657d02199adca7a3c33bf5ce4dd54fcad3537182b967d4e79b7e60162aa259ff37dba80ba09b09bd6a17dca6ce60baffd28504f29e842f7f3e539a685c88745bd671d063726c7a9bff8be8cffda1d9c04a70c6cc40f8cc60ded8932ed4b34f7dfa265a1468ec8e2fb774b85f3d94fbbaadf711f8bafdcf76095dc1e5b67aacc0d1b34fcc0b79372be4fc93ab0b0d796f23d952ed2bcbf55ecb11acb59ac7584deebeadc3fb25fc688d5584b75fb4dccc85f52fdddafef758b467fb4e990c9f8f3b4e27b3a3aa5c339d473907dad6978d1de4bb3809ab2ddf6d0a7878be3c27db1693e98b0f67b392da37e6c1b44ecf4b3b88f80eba3f938b56b1fd3e8d7377460e86f26cc5798e30945d9184526b317e8bcbed877fd208ef91c74d62fe00c5c219e9d582d5f33f3c3b21c5972f66d7ca143aa711e46314a85f3deabeb1f5b7a14a37f86af2a9c31cd2b8298e913d58951898f2c976590595cd7376e905b426d0039b6b09b296ab3677b14cefe598488ee1bf8b770596339ef66665a06d406203c8df672edf4e5807e58825ca1b9eed0cf59ec614de6f5032d1eff1ff45412e203abba3ed1c05496103dde3ca7c3d981d6d810dd9ec93eb9060772e1643c1b5425ba06f9193446d5f8e7a7967943e12a776fa9f12ad73cb17e7f574e3ff2de6d7d9c4e58bebaf5587a1b732fe0b0402ffd56af9d7fafce89d2672ba6cb6b2a44fd8ff239a21bd07807f80a73460b189508c743ffd6f525493936b7ba0f39f85fec23f440986c5571bd936bfbd53ae4b5679476de96fb9ce505d2fec1ed5c77c03fe96259a5cee896ea986257d1780dc81441c7d836b190d1209bcc0ec859310ca29946bf0ff835d4976835d83222660fbb8f908f86168fefb3657c6bf5b96ad382245f78fff4b4a298f91dda07dcd1b67d1440ad7bac07667d4f652c019a37afc665f843dc31a4d0133a748e93129dd37286e7ec5d153630fc3cfd24df59b2180ae4c4c4c3f94702b100f0a1e184d210b967ccc70571acfebbdad0b11053b6dfb90f10ec0e99b64fae6d1e51087e95615ada1c2ffe1d7cf5807543f4d29a1fe6dc77b7166241547f057b89c8caed14e21e98ebc91f890e360e605bdcc1734a5d4c691085a8a4b878e6711d7e60e97ed5346b5734a78ee1a90c21265564168ff399e735b1bf36a649ee34e4e312fb34a4b140615ed0973f83dc6aef9c2c2e2c1f32788821ff0f6ad9f6e09f25ba589db7cd315ae23c5e980ba82967f16762db25bbf97feedce7836bf5fa143af7bcd3a30162af1f1ec2928ed6922d524e58070be4dfe1a5f7ef36f76fb5ef0ed2afe7b8b48fdc569072ca031e670e6e2be6674bf4878e1d01fa9c3e3aa285318c23ef44740d86d39eb963391f8ef1cf56cd35cd4f013cb58db941942ea0c65ce4872dbc80f744373414155a276fb71d63890a1c0f030df19c5bb1ae56c22530cb98d9984c2f877c837538db776409a5793ed72286bcac194616cb1fb4814e99cdc4f24f811f0d0a010beb9639a30af26c748e2724e78cc4568da7c07afcc0b8ddbc928987918e21bf96e50cfc0db8641d3b16f24dce88e35e31df3a9d8370f6d10b8b1d8d5a9897fd3ec5961d70749df8083acacec76f937947b7eab761a0beadfb7ba0654f7beef44ffa79069f2ef3ddc63aad67a635f6cdef685cf298a7e5e89cf0fc716aabd7b814e0f76cfa27819f808d23c55ed6d00f83c65ee2129fd0b86d9f701d8ce9762bb5fd12383f2fad7d13305c5b3ed832182e053f2cf860cb60c87108dabe02c967dbd4e0fee33e8d2f2f82bd29db5cc62029a98f93d86644efcf4243e3bd4deb7a1f3146b2f306c91683affbb9fa68f3a12a0b0dafc1fa13ce1e373601e4b8b67811bb83b49784f0bd667fbe6c63b4fdd97f75f02286c1316b6178b4e7831c7ca3b536419596a36a5e8e0649e91750735349b8e6ed9ccb0a45b3413281bcb792f7b66ce215aa7cd800f0755be3f4f644223c3a0bafb44661c3fb943677ef2ef6a4d01bb40793539c3fcbfb53c7c6fbbed3aceb1b67467da9ab9a873618569b35a34fd127d37b8f26599196861997a34136966cea681df9445fd7be3cd6ffc8af2563da91f352e914996e57c996e602cabe85ec903990a3386ec566db3ea8efd4f5f4f940d4f818ef9d9e7922efe0729dd8264d2d34e4263f5e3eebe5a78cbfecc81ed239adcae09a8598d0e22f59d7267689ccfbd29e671571db73b29b9d13c26fc8be6f8ad4c5b4274bb43025bec3f1e05a6b3e89b561a08bd75892a341ea009d6cdd093fbb790e7627c5b881bc8916a610ad6f0ac43ce9c62ff7bc3930d9ee1f508920172bab6b4960cc166632f91dd34926c105d158ab784ed426055bbb255f60ce799e85c6218d02dcd681589e401d3749245b91d9da342f4fb275a7c3e0d4d8dabe3276af94a9557ffc9e6232b6eacebee03777eff8cddb71759a7f8e5f8371b0586eed17771c2c56dbd1c275882ddeb9935053c26ca72fe514b07bf2f1229fbda02b89677a3f46dbc29296cebbeb67355a7f6fcfb74d63db56ff4db0736ed9b8f59ca6f25f3ef6eeb794b3ba94722127803d33217a49b667f93520875a3a2bc385a2be3f764718b6f73e7fe6f1400743be4e1c3eb09c01fb906ccc6d16f15e6fc1ed797910beff98bb4f80b37f487733cd7546eff190e800e4fc5647c17fa725d5e395e55bfe437382b126d2a86b3d5e5f69cd7e15937ba8b3bc5b5adbb9a5d8b3cd3b2c767e01fdcbbae489d53df72c3488aca0f765327b22ff167419b1c726eb517fccd78bc79fae73f9cb75b6ff3c77315c788dff45ac33267415eaedde95b51cb84c4b61bf990ffba5a7b79cea79f769acc40387b8fef291de5567db8b5125cf737b815c48b257cadc84ede5b93adec54020e71544903f43b1d0acec1687087b95b947910739c4756e1591b3e45b34e7ca93710a2e34cea8b8f3b194d3a5c26a6de642fd45c5219bf88c6f17d4075cfa07399fb7732e6a7ef3f49083ef299a69cb16ef57c5347a7443f0f7a443ff1545d9af868f64aa3bce78cb631f3fbe13977ae89cb160d310bab87ccb6e12e20d5db9c77cb80ee4b46d10d179c3600b3672938724d8f68f7beab7a2754bae3338834fd7f1cf19d8f53ff34c1f556bf069139b619efbdb388f77c1aef1dbc7d75983f1dac7f3ce89d3b1d3eff33c8ee337094eebc81e10bb18ed20ef91e58a2b65d7a1c5b32eaf4deef739a33d3554fc17faa4d4b27d21e0a3593496f6b2dc437c1fb019262f2adffbb1ceef9f6445b2a33e7f42fbeb101984374e37629ee1cffca58e77409f7ad0c3972a3a6978e270ede0235a3cee134bfbe8622932bcd5e851395ea85fff151e9896c1473244b8f1b1bb748c967d7d1f679bdf275c22ccf22b645b5daa37f4f59f846f54c930d8ad21be7c51e0ea817f8bc8308a715f99db75884a5603f2c3b50a5abf427459017fb3a131ac909d90035ca415d41dd373a374c4e8f07a4e868fa7a6b6c3c03cde83887e1a1a06c3f73d29e4e921b3cc611ccd4ede70dea2a52ba674cbd7b722f33eb1dafa0db13d696eb1d9a18df5f2f163dab5e5efc8c6eda59d9f56e7705886b887bd35a935ff6a3fbf78bca8721dc47e08dfa69f46de117eb3a47a3a607089710d69acb4323fe268dbe8f5939916436f0362cb09b53dad1c619ecfa8a8edba515cc1c0e0f53c6bc7067c43a65771ec41a9e6083006884c8b6637d7cadf5f97e3061f93dabcdf924bf7ec00b996aa430f5fd3ed09ad7c43d6bedefdc6e83467fbbf827d58edbbb6a28c779b3841914af6c3776ca976cc0f9fe625cdedfbb579bcf4db45b3230aed4a295b596e570c3909751dd621d9315f3f8c5f4835ba5fcd4fedd5035a3a4028f48b6d725409ed37386e820f69bf26746e1587e942ebf8469270a437b85f41f5ccf35569af1d657e50cb06eba9cfe8b7973a79df2a5f9298b7c5e38f520ff0266fb93f57b9a62d85ff51a88b677e9a67a53f93dc3dfb984c3aefab73a35ab5d9f7d655cf53a0e126cf3b2667daf64937ba9ba6f60b7fd517dde8920a1f1f59c7bbaa6f983ac74e9cff77bedffb9d7b3114d5dfaa7eba68cf2756f8397bfdf2e537623cb76fece327bed87bfba99a7f672f851822af09a5f1e30f4c74c3b8f67b34f79ecd05fc8a145790e81a19d456b1183de8bb34befdb87fd998e774f3787da6be838b50dfd4c12c67f55463259f08fcf38bd5cfd3ffad5c525916aa7b52f4f1dfdeeff5e6d005f368e0ff8a34df0cc6ab3f970382ef435db320e87c0beda3e5a726ba50b20eb4532dbf1b3fe7f77d5a0c238c62d6ad003f9de8acd48720df1b56134674a31bd4176e9a9ab5a4328bac1c1d90655e92e1ecb6a6bee31ab78861db7d64e1555b47e611b1bc40562f5ff74a4a1bbc195effcdf3783c44ec6ac867a3583fd06769cc64088bf7bd34f5b50dad6e01a36e2cf60423cfd6bde5cb0c67e3d130c14d4fb5568f6d091f94d0b13bd100230cf028b87f947ef7906a0d4f00fcb7d5ec9c94e880864145fd2f844edacf2870c91aac0dc05292e764bc27ba51aec36cc07a7bffd5d35380eddfc39ecbc3bae75ef900b5fbe87bf1993fc35d6b3073caa489f134f3c5970de86da5984f0458fbb4f69fd87390cb3efa87e72708fb735360d3b6fb1e08b4b06af2585afda6dd507a4e85d15ae7aff2fd243624af215c3bb6ce6226e42e402c86e2318fb4d7cde38ee7eb89e7fa15bc37de034eaa11efd8f1127e14cd3159711dab90be39b5c8395c00fb12e255d417dd8f8bb494fb65ada3d92cd1bd079ecb463163c43a8e7fbdafce17ee95daafd1dc7386c31a34f7fc197a33009e10c5a8b45ce8339b71df428b6e7eb7b156153ec1a62fb287d39b4a4f081e50381b7c7e3767ef649eb42783dc979de5090c922d3ea112f07e7fa7a077fabd63a6faec9c42de26ed5fdfd09aa2364be80b976c8c229d98c7b745718bf5d105317c2f356e5613bb4f775d9e90ee82d32234caa43230d4af412e4450b57bd8539f509aa3c8ab1477a25c8706add3698d1fe9c1098d6b9a875c8fa444e74fecd16fef5d3b7788fb03574313f07bd7d16c994eb0cdf334c95d253cdd5dd8d23d6ce90437a8ebb4fd43d2f6b1d03bc0629b78994eb67fdc63b1eb5fa43a78e0e00faa3bb0dcbb72347c6ed781d07942bd25c5c67a69fae937f85807e02942eeb9f06e9938b606f9a063fa7e9dc3c1f0ec93f63799ff84e684ab30ccbf50d7d9571be6a0631cf980e54cf111898d0cb6408586a067b5f7eaf216b0ba579be77fa9ea6f89bca33ddbe246462aeaf8eade65327fb6bbf315f0cad93dbc2af642e0dfb77d8eca6b91511c6893f010792d5abfbc81f8aeec3383fef08d6dcc6a9085fa4c4647cc17b357c78c251be989d910b48e41b481562c8619f5d53affcb397b94366b7e21f5fea0e704369c6417bcef55fb249fb1a2b6bbce6bbfedefee490b1fb3379fe775d3ffb7d61822fff801b11307976fc1ecf2d6a225c60f576b4a9b225f92d7e734faf7eb86e2ef709d6011ceff79ae5ae312fa0c0df1991f4a5dbfc6e96eee1f8f71b7757e41a614f5fb2aff077f4e2593ed11dc11ceff9b313bbaf17b1679ed35b01e3eb53c3ec5cddf3a3250d503923f4ffdd7b37fa61b73db6045a333c54c063b8bc8be43aae739e40bb0f77e0ddaf9395fdeb34b1cb5f6be9577a890d960038838f75d9dad9d37351ba40c77b1c9dd36680dfb0e64805c3fd9f023754d08f5abd4f775babb73cf043d45e567a175d2cdd97da59611e44597cf757d87c23e77f887e053a4789acd1c247d023047ff15accd5b3ac10b862503f37bab00d78cdcf131f58d19e7acca0fae25d188a497883a707f1ee5a7e74db1c5d57d4c95fcf0b9e7f75386e774c7dfaaa621b5efb1f99ea20ff7673a33953b642d2f7bd57d24f607c37b6fdd17f51c9a1afe5825ab953d89a5bcb5fb32b5a7deea0ffdaef5f82f5ff37336cff79fd19ffb5f957b28e8ed5fad3d6379bff15f0abba18737b1bad09580e54b69425d7340fb94b47cd432669eef0497ccc9fbf7558e678e2107baf697b572cb6f9fc54fe8fd843bf5bdd8c9176b3b05bff6576ce71a7755ca0968f2b43ec57e2b7ea7c3e08222d11e357f477af00076c8e465afea6f36b5ccfabdc60e13c655cea760fd002eb9d053fce83abc3782a8735df2baff99dae741737969fda29ee844763f423f0e86834bf15215739ff3dc603dd096e027c5c406fdab9d5346fdf0e29c58dd00f8721f2fe0eb6cfd9df56feb198b61a857aa719abfb15ae1222d838afa65ec41329977c68473b7473486ffa4e5d17036481df20ead59a0787c17b61fdbba677543e3cc2f3004ffd617fabccbcfd7fb4ccf4f3e2336af6929ae8b63c8abc75b3bf62d088d06cf6dcc7335416ea8b0b67e33cc41bda67747e86fdcf4e06bf5196ad70237fa5c47b770f08dfcdb0f0dc849471691ffff96ce417fc0d74f63ea757e764abe2fd48c42aefa026c8d13b20645c270b4c57c7985fd2ce834549f798b4c0c35a325eb7f15806f99dbd97c3f4fcc0f7a425156e7a7459647fb74f0b3ddb11c26d156b61ebb352b8dbfecb74c7fcd734a1e43f66fe89fc14fbd20fa34a5c726cf46ee4dc6fb58f6f41fa334ee04358dbb9ff46d6fcd9dd1b38fdbf4d5db238ffd5de8aff6d737d67b6358e4d21a933218063deb64b1b6638dddf3a4e5d2fd68cd53180b6c0c7aa680a74878cf6b7df68ba2a183b68f97f1e2e6efd4fe69cbe060653c2dc6f6abaf05e39edcd4affa0a7bf38eff3b76c1e3f7fd5bc20f9c25bd3bbcbe2475370adf94e8cb227c75b9cfa5bba8f07989be0bf19e0ae77a1f1b4ba095d78d794e1c860bdfe70fecdcf34759f711d74de77e4391ff353afad7cfb10fafa96be7f5e7dc7debbe123b00fc054bf95e7df9feb6ebd397e168bb0ed181d7c3a69a5da1558d41c0e4bbf23eeee368e6253b1fa725e0f612bb923fdfd3a3106c993a57f717e477d5ef337b6155eb14bd77c4617d3e9e38fdf6d1ba208b76acd689c8a23e3a770c9c0d6a5a6de848850d7587b6dc90eb14bdf4d1c409eff030d53d68f153be9727e1f79fd630b0be2479c2cebedde75fc9b34b41e711f6696a99929caeffbf838522af9bdd5d9c4641914c38dd18b5ee2ed1f0d3cfbbfbe43e49fc481533956afed873a774e29d33670434027d33c6cdba3ab15e61cd3df9e10d6fa33a3ae80299f24ca4bfb1f80be7ad4abc6baeaf729bba2ba39a3bf9b2065c44037f7a1fb95db1ba1ed2a18f9332a8d2aaa0e767ddc1e1fc96bca9f10a7ef018776fbd4e73863fc4bbd87f5fbf2e5beec58d6b1a55da93d083554b86104f3ad57ddfeee701b03bc1e478930fd63db77edd8fcb33e97e893eadefcc7b1d1a1a8a3ca8cdeed236d179fda36c9fd31fd11fc0f12416c258c9d0adf935d0a673c5e94699b7f0f91d2c9b9cfc8e4c73e0db276acba3435a065e120e307230a1bfe35b370f9bd66094b8422bfc9184c1764d6c91f06aa86291c2f8fbff63b923f3d3afd1be607bfa0ab9dbb19d44bfe50ef845e4357c6353f38063f3bb3f3cd39d7f5ee0d9afe546ceb992fb01b4698dd9517aa049feaf6f7e77c5728bbe93b723eac3342fc84b58ce906c8fd2bf6562ff97efcd8f8eb3d4e30ead77e54bc323928159adc3c18162deb0736238bd7fc61b826435c41f71393ac29e4dbc431262e86b182dbe7f6654a605bfd0468c4b6b5d3c40d5bc688fa8fd1cf0f4849e130ebea97463b177eaa2ee51189c11362b14fa078afb52a4ee56f12dea93509d137c57aaad1f8f89cdb865399714c79fe352c93d0eaa441f69bcd6bda97f7fc99321ede300e344755f615a735caec41aa57c1df937145e4b8a59cbe7d0db7ba742e10027a1c77a17ac1aec0f6754369861821f7853638bb33a1d8e77533fbf8923ff7d6d5df264e831ac0056efe07858c6d20bb6f23c5b753f131ab36af591a8fbc8c8fd76a8bf096d287e2f7230f42456f46ea87b4950feb867fd94680f85a6370def77d0c664e298085d2c627e976286dbc4fb6524917944b4871cdfc36d93cf8acfc93b5bffd3f8e48e595d78b3f65dcf3c0e4d0f87664f28ae93879330f888cba0c1a3616b7521fe009857ac5ead7916fa6ef1f39f04a7ccc147f7c93db94e51a41313033626ccd3edcc93f71841d1634fef8e15ef4d5e208aa9d4ed21456bb3681da188bf6c99c338c41acb156278ccfbfca57ac803a99710a72ffb1df2aa74c0d89368661dc674aefdfd901afac0cd9e417fadfa6ed4f8d23f5a6bfa6c1dac3f480678e1ddbe4d1cab8ede45d6fb8ce81617712e08ea2e7f123e8253ebb19a6e4cbc66bd5e32dd36c4be260bb2de68ced64cb1f3eade544dfd31bbb314af0c6a6abbf58f3f8096880ecbfa61b11a4a56339c9d69ede3b8c1faa239d55dccee272d9f56fbbfdd31efb5faf8f7b47adcf7cb595e3b017283f033ea1b5e9805ab3154f574867effd0037c439e93733853b81733c8f36fe4658dd340eeed0a30cdc0171fe4ec9c21ef94e222423efd1685de0055e6258bbc4b329c014663525e0d0133fcef66fc7d1e505c3666bbcee47127b30b0a67070418500c53ade9652be92175af71d6df9ae8d609e1110bda4307f645bf1ad437e50f62bde941063d51981c805a5fb0ddcc322d471f8c8743cc781d8e0669c5f7f3210fa0877a13fbe1b8aaa09b94782be1e93bd743bcf38a74b7fd0b70e8425490bb33afd7e3e5e27c9a75bee47169df789ef83af409df3c64d0df863eb38e66a0ebfc5a6aa3e7c585d19fc9fa41fa8338bc02cdc59187d312f8114e292e3c9ffb8df78ae1efa4e5ea24ce6725f70d7e67e31d521df0808b64c3f1e40d1d85c681d6eae3d29de073b6308b6492156fd14bcef337055a2d909e55086a4f836d6d1734bd8138fd6d13da07671893b1e19c99cdddc455889d0ebc89ded9975cea770c39b64d4f1c91265dbb89db103a42bbe0c8687a980cbd7f24cc1e323f675441ac8ed004ed29724e4bff9094b646f169fc7771fca932e6dad143f6423f68b51d7ca706f68b98d64aff89aa7e9362ee1b6704f8be19c7223d26fae81f2657b4e9c6fc9545ae707fa8ec807bdfd4d79c12ddc7a9723d6dfc1b884f0e12e7c2bedfe84022de23956ff689cc292d6d839f8d5c6f4fe989d78fa9bf8f6f73c049a8eb9831d4e6a8e397f53b2b38037c4283069341c82d6df281bafe27895679bef0aa659f8967d38f3f20fbb5000bb09527219d31919fe3461798efb68ada77bec6befabbefd794497e3a159ece9d394783d1471c990758977dd9b803752ec0e73ec13e5c3da0b5b64ddfd006cb45a96d5f86f14f713129be38c506a1bdd2dfc2d9114533d5f91cd28137484a83d0da1245bec6e2f6f768e5900e20078f634789fd044fcbede8d5bfdbef79746198c860ffd39aa4c101e47c99d6bdb0eb3eef5c67603ded1575480d0f9273a9eb3efda0f3abe993e77f087dc0e55ec99d7ec72b93c6af9d0cfcc96f13df439d1e3a2c06d58c7943d15c55ebc47c0e339c4d7c4c6b3598ded4d41589fe7686993bb8d1b3f2a05777fb3beafd69722814f310f68a3f67fefcdd1b2f2c84e76b79bd6ce4b47da4187dcd597399773796f8f453d4a54e929cbc1bbb7cfcd193efa2de8b1dadfb699d7b8d2fac7e47898d4c7855e186c23a1b1cc205e2b56eddda1b427b8017360faf07ea0f95c701bc9cb17d5c474895b3dbb56be538e239d97a98ec250a185ec7e73e32016f2398c511ded4f9838a38a1e00bfbfa5c56820cfc7c3eb4be90c927d518cbdaa7eb75f3bb24da6ff033960d0ea11847014c7b3fb4dfd756d1e79786bcb0a6df451353a1795ffdf92b7fb457818899d8cde1e8c967ebac37081bd98ec6621c489da3d0d96f691eff177bf6c8fd745ce75e505faec1ed83ba5ea0ee0fc6fc5c14279ff3ef39d707251b22a03e2b4cff46fba3669397167ecd83d46b9b63032875e9aefedc8a816438b33ef7bb8af946428f3b2223efd6ccce87f83da17e4b0d854dffb4f67a249fb7285bdef7adbff5e0e20a77b41dbb5d8786457d151c0f0bfa8c70da6c74dfcab8ada303cbbf7cbc409e8665b3e73e308a4c33013fb89a56e91e757b6edd8d894a3c5dc009b6058c0edbc37178af771fabd7197b508b09b44c7b81606297a3c823f48709bd78bad0ebc419e0241cd53dcebdde1ca18eaec8f6a41e8bc70ea99ea6cc55a03fea3a0af15b837b5863fdfd07278ad8279db732bfe7b3b3ea9bbf780fd8f9984929f4a2b2fadfa5f3147c7f5c9eb1bae6b41c60c478e627986b757d02c7dcbe971347f3747bfa49735faf72de0cffafaaf1b74facf74d5fbc883ff72772f982c2e09f2fc861a93e9ef7e7e663731f01b34194fc81f02f550f703266bb4f0ca7ffb41c0d69bd07eb05de9b1f29e5db0b71b14ff830d1b93b7c98e796dfd54598eedd8da53339dcf403b4f2e28e9d05f816e06b9c70fd1f62230a3f698d6ba0b00552ea1f9a7806f507f96701f7f9904d663871e2933bf60fc8328d64b8ca215780f696109f2d928df95bee07f293cbcc23f4e21afa842f0a7da1c53e4e8d8f54ae95ebf2b575345b64a141e4c46ea5071af4feeae01b48efdded6dda3a9713f4d8e6bad0aeaef1d7efe40caa6ca2de1af8ae7e896fab5d704a4a7c4203d19653f96b94fca585cf1f1c533df884b638efbffc518dbaba3717fd892c2fe9d8bd776930cbdc31c31da578a122460dc459887d8ff4873c667e0f2edb008b7ca1a27943c282fb065fa33e39cd3e0972e6abfaf3211dcc2e6fabe004f44f748005e82eff0a5e0ba56521ffd72a7a695aa84597e9b8cf0e16ebe1f9d9ddcf4921e7f7a3f6c301cece77f2aad8ddfb66be38ad91ca8a74301ba4438a6b45fd68d2b7cfcf1b8e933bae5e9e72a83962e3f6e2e67da387a22abf4fcc3faff3fb9abd64f9599d5e348d8ce43db9603d9d35aafd297db231d1afdb26c717fa48b679cf21d566451666fb6cccfac4517f91981f9dff9ea87298ec964fa810721be5dc4c953c6fd679d78614ea6984fca7afd578d4f15d558e499737c9b970ed33ebe838aca751370f47696f756ba7e9dcbf548bd7c51ca73808620da7c07f28efeab1cd6b1d8ceac10c7f2cd8facddaea5cbde6ae0838a22dffd7273a6fbfeeafee33b95d4733c8b3f123af4a869e053e7587c8ab80f708a418137764794bcf6ce1a08a356906c3e8f8b23cffa4977a7faf1de1195ebba9b28d957ac71d1bb2b757f177faa8f3fda27da194fce09b7368df4999df7fad2e56fbf86eeca2dfbe79f9131de096453388f97dd5cfe846ecee0b7ed71e9fa20a5b5769438a3c45b0e5c53a421e4f6418d805c37b7f607d433bbeabe2f31ce7cffc4fff6a0e2ec83d567b59df0b956ca4fe338a77d2a7eb379802428f08b1b6eea9c70674ec4146f4a9f0e14e7e4a5b67916b01eafa5555cc53a49390e654512c27f3e76f6227441e5e407f38ff10473e4e26777d4f423fb4d5e7983f1dbd4df0a1fe37eac61abdf3f7fd1c68f6fc7773fae91e34fac69261f4b058721f4f54d7e3b0750ad8c00d16010abee2efa27b2a9ee97dbb4d9c2be7bbeaba1c4d991ffb99ee22f602137bf0433fcf2ffb8defd4bad5bd7abf50ebd6e901267e83de1765bc6b73af371e93231ca3a7e9bdf5a4c80fa3b1d689542bfe0fc4dc590fcc58eed151d0dfcd20bfb9e945e94bb6a48a0e5afe76da838ec8285a1bd88d71f7ac4be88d7a4cf4744f6c698ac14acf12055aeeb17c816e2ebabba33634cb91fcf2fae62777ec9f69fecb98c8bb561e6ef0b5f5f7626400fd29cef9d33d50f487edf6fee67dd614fb416bd659cf10e8a36689fd95c7f03b42c3449e35fd151f72df19d1bc47907157c06115ede2afd46b7e7a579dd1f34a1bbdfe41fdc10e4512cefa37fc96ffa5ba87962e9b39a36536819ee3fb6776e7a2e0b2f9239e56d70c7cabde40aa5578966b46fe80b7fe5fd54174ce13706ef81a78fd83c2df26e48280ef15700b121dcdd332d8d2be652bc25f3aba3060ac76bfdbad7bb0fd3d82fcd4ba7739cd559f9838ddcd0e3cdec975fea6ff37e5bda91e68ad3ce20be04cd318b1b6d00303303bec9ace53b7043e30c942bc15f11a23cbbba5132cc4976782ae42deebf69d6fbddff8106d55ae86218ff7853e93adf1259c0c253fc482bf0d7029bb5868ad31efdaccad67692e9d2d7f43ac938d2c2f4db056e3772fc3d1261c339e3e21faf9e3f979b3cfe7ceec18431f95fdd9b5bad8db350692c05b5a6375fda772fe37fc3c6fcc59a27bb1cfe827ad1a1cf269cfb33c8f2773f02671b006b523b4bfa5b67682ca9d20a04d72feae733dc721e80b8764637ea0707026367c0c3dff46508b91d6752afcbd873c09a1d7084e2ba3a5f3ecf3454468ded8f2be80bcd687c63bd8fa69fc5783dc6407f207685fefe8254f75fcb10eaf80532ef5ff6eafb7bbfed7e9d6e5fed81ce2e37add377c90ec3c9c906fb21e49acaf7911eb1f05f4c56a9e3f23b697d3ba56e085d7e140be7aeb59b2af9d7d60f5a4a738bcd4b550e9d03fa7a5bd63353cd23762dd3eb15ed9752eb3ebd8ef6939ba410f215a7b724025c2809768991762f3c46186c5336de9f84d5e85e847d83567f96bf13868e9e952be085f0fe761503fc4fb9b4efcf35a0f4e340e363b20dd20674be400cb7b6ad75aeecf2a7fa15cabaee56f43ed2b77e389e7ad9039a53c7ed4ea1dfab5fdb8d7079be62d7f613e665aaea047813097a289f1f11ab21a4bf4f8b6fc49b1ad2c412f0d47a776fd2dc8876efe5b2f76593b97785aedff6eef833b0e8a58cff38cdae145bbff148b89d27c0eeb52e7de13beb70eb313f472075f0cbe66215df394c8a42fed77d3fffc4b73b5b21d91775e45ebf2900e396b84d6ea9a94e9c68c9abe905cfe026f2b92707442c399c665ae826f29e912ec8e71365843fe58a79f98f29ecc23f2fd0cd3def863d69729cfe3f27a8ef5e37f5caba03cc5190d5d67c0fa19d37870d289e5abe725e6077572acd5b429c965cad36d4df09b411f31a91fb1639fde883c2857bc1613ea60e2d0839eccb4077297efa5c3e0c66a19b614f3eb4aece83cd5471f28f4ce68b2cd11c45d9b3abfb4a2b58875eda84eec5456af657fcaf71fa9cfd2fc6bb192ea5893286afb2ad4fb99f6e6fd1bb776dfab3b7b0cba17cd9d9bbdaf9d609b8557b83bd0877482716699f8cd09dea98d7ea96d2fc803ee8ca7bcf3e09385b8bff0ee37e658f3a81a77d7e1f55333cc73c8c579fd1a7c695e627e46a3cfb571543fe549c476c71ac7c9e4b29ac7cb143d17352eef5362afeee6ff518c79729d0cfc7d717839bae3c139c6798e9c114e69ed11c5c8aceaba45e83d24f07099cfee58ff509bf2eb29f422f671bae9ea4281f33347a171cb222ad7991e744ef595d41b84da05db3c9d04155a7c8d37ddc12955c4dad4bc6a01b551738ec14a78a5965426b199b67fb4d77670e367b676464764c9b5e0754f285a9b20f7420d943647fe2579d2d72f8be1407ee15e786803757287783807dc1fe80d549998639e4d1b9df5bdc684a7b5539bb74553fbc7f237284d49f588f7e6dfb5cd7a633beaf943bf05889f3920b3bfa807ce2e32b60dd89ad95768c717f4c138f2b5389cedc9d923b0c3dc06eb64f74268bec8c09f66bf679649e4c33bc3d4a2fa24b927d47ebb81dc1474a1f46bfc87c7521bdeb325fc6d542d8479fc5a9849bbdfa8920fd95991960fb48eba1343aacf5dac53ffdca7d69663f775ba1e1bbcbf0e4dad3715f61bd1854a0cfd16e2f0d2ce9994d60a58ee34578cf001d69f69c57aca4a7af1b9c78f4afb6839a301b903b12053a8fd22f294d51775f3cffd0cdfbb2b8f7b3f2a2ec446484222ffec6357df36a318e262b854f0c1ffd6d97fee1fe9cf8953eba294afdf5c674474ba615a628d6153943db98707d693fa86423448984e86a2999656e686e87d549721fac21cfc04203fc076a57ddd3bf44573b6094d1d5168ff93560ff94a0fb0eb145a36316faf9b9f67446866126cc05fbe18413c63bd7b3953bfff88f7683bbf2c737df6357ed0dca3b1b2b7997a0fbb7c75ccea93df45ec80b40c789e316e728e8cdb14eae94187b9097b0836cb3a3480ef650ec7fe10e4a28e3a6747fd13b4d742dd0f3184be59752eb4eb8cde418fab783f3e56abaf6752dfe7fbb2c73fa43ad036c5bedf7ae72c34b671e41d38ceb69adf28f489306631ab0bd53189dee3d847883b4cb65c26307ed05e0bd1d3a0f697d1fa433e079e41f938b111209f41d02de55eda0d9e3fc517b63b32107c2bd196cd0be434c31f801cf1a33b9961b4dce7eb89afa593971fd36ab45b47fe3e0b5dc8d398d218ccdf69456974aae35b3a0c705afdbcbe3ebde85f94b95fef3bd0c2e76d7ce244872d264ce6515cfd05c337a27ee48f449ffdc36574e35391b0e17728f2d918977da7f765d30f6fb80e8d6d324ceb5c58b1af862a4fb3f1f5133af4cf99026bb8f50d26bf2fdfff06f7292afab7b7be0198410d56a9901761ab7a4ed53934f0debdde0649387a5f6bc23c76037e0eef7168cc50e4edd0aad5ab52cce1e07d19f5d191e2f4133d8ed5f8d5728dfaa45bf943f9afc51d4c119a2b57efedaf45ebcc5bbdf0f8d8533cfa4d7d1f4ddc64ae8f06c96e0efdab599d111f17eab9c97d68fcd4b21f83c887651854480f2672ce9b82174bb971aab1219ff8cedf8dda47cece1af2a5bbfef7e6b956ffd2bb67d6d63380c62cbbf71d452f334cfb9404e72c9a7f29df867da3431ff7f2009bfc00c2f33c8ef3d0f437853edb141785d5fe09718151c9ed64aee34d37e62c0e3f289f2d57743f297ed431d1edadd093fc4ce8c5754615c8c085097a102af18ed8c1cf93630ed82660b7ca7bf5baa1b6ebffc7dedff527aa74dde2f007ba0eb662ec150f8311448d8918013913488bb150571b5ff0d33fbf9ab30aaa8a424df75ad7bdf7fdfc0ffad7dd89425154cd9a2f638ee1f41bbbb955d703a1f45b4d4fcb970ac6bad8bbfa77afd33dc19c54cd3e28be5bd54aba63cf0c2f4cf755c50b5cdd436def7d3d7626b376df9d697bdfeffd2eddf77ffd7cdf23c7bd6ffda2eb00d62ae3c74a0c2b0f0bfe177757e1b12fe7b3fe9e1a1bcfe654afbbd46dff0cf03c1d441beae7b43fc3d998fa1e8d42275767efafdb860ee39f51ea6632f71fd48fa7587716f75fddba94f6a51ebbabcdcb15bac915ec7a05fbbc8bd6d80b59c1aa57302562af8c10272b3657d0f0ba44c6394d6cd5f6969ab0738855d899630f489875a8ad60f544a855b3dc1e8be3a4f85cd2f5d29e613addd5fa33418f2f1d4d9b8abf7275fd403fac8ec73434bc065f17c3ee5abf86ae6026abe7ef3d36a6a2cb233c0b7f6e113351cb7fcd347e44ee45d4bca6311a629ecc66bc318f31e4a780efefafa2268abdda2bea8f2f580ca2ab5346c69cfae6bbb885f87d294fc7f889872b8c07cbba6599fb030e60c843ed91970d353368cc5fdc63ee87c095823aaa4ce39de5800a4c84a89dc46a37ae3c1fdb8aa696cdb92b8af915f0ddb2df2ce254e99a87fec5c0592e0caf8df148f55a8aaf80fa7336d48301fb9bf4bec807d668d66190be85abf45718ac776c4d7ebde8fa35953dee1b5fe4c36bd0b555e4158bf5d9fcfa1506a4ccd155ec43bd7ea5e3ab9fade61db94697b25eb7f332e702bcd9d29a10f76c795648f90cb96f1d7cb82bbfe77ded0f581face868811ebaf0f954ba96b826ca3841ce3d89b52efeccf47c94ce03817747d0b0bf0ce56bfd707ae44d73ffe328e7fe6fe710b726c8a10c18d4fab168bfe75b27aec55fceb9c839351e44994b3e6c4fff7db8e77917b72687c8f60e61cbdd8a9f636b7f1f0693e5628a3545d0a9ed9afbd7dcdc0df33db34d8f4771ddf2eb637d14b9907d8324e80b59a705d4ffe5ef204e72adbd1e3b5fc51ecdaf7960460bdf4d18ee76077c476bf2eaf5bce9fbda7a717ade74b6ee4c1dbb99c6c0892ae629e18c48639b60afae4da85d7fc0bd0d796fd01a81f74ee70072a58839a1fe9b3847b8b61ba24f23ff8ed90388e53292469bc9d699a63b8ead99074f57c65eae656ab38b713e3f15390eacd3523f3e25a0e3ee030ee73402bde4a7e388d5c6a92da2cf12f9c0f55b9963bece4b5f9aff5e1e7be5f994f553704ef4cf8f4e8ff3fbb5a96dba0ce9bbe8ae95cfe2fa287da2a72fe7b9b7afdcc73aada6b3f6ccf506af93d969e97a83e97b13b97869dc01589cec71b9d8788745cee7d68c1d223c1768083d1ee1f964fdbd7528d80d651fef91174fea19a2f32acd0bf21cd7f650422febe8bdb7af798e3de3554c43bb88976e5ccb92b0c7f419153e3039a76e4876740776a1d7c986fcd98a730834e507efc4b566ebb6f9de35ad1919bccdd8d8e6fe19ea801f53fa7fc05100df9fcc1ff67894f6eb359b5cfa43d7ec3ebd379b63457b54b59976a7457d1ec12ef379fb0f7b8f0791f376e17b17e633c8b1d4fdd7eddcb86eed3bba7276d4cf65579ebf11e9881c83a27f01ef65787bedd1789fd9116badbe4f559733cebcafa815967c4f81a39cf927c6f92d71d8aacf501fe780567add1a3c15f77738e74917b948e7fe792fe41a76d166bc0ba93f09389bf49fdd2b903fbaba57f2d06f1ea1d653ee17f6331a4b01cfe6d531ddb536aef80b236a376caf114ed93a50e2ac7a9fe1e5101be407effb7ea9e69ea8ed5b87fe99b09ac57e8ef89662cee41c81d50c038fb859271738b3d8395c6b0b3affc37ba6736bcf14eb50a863f09ff13df442580cacfaa9df991335ffaebcf345309ef01c43f55af81c9c4346cd517d731fec43bfbd49ece5f2edbd417dc1fab3acdc9bc007cd9f97e13b9a5161db19f6b12f73b2c971e5b8da63f3cd39d0e23d2abacf70d6eea22cf1d4f1c579fb9404e36ded7aa3fec4067ca6bf39f738e386e27af417c7ee016e32da8c79cd7e0fd819fb4c70ffc0dc485cda21c35e2f821dc4c1955e0688dd8103fe10b5dc2dd670bd3de088ec0ec7618bda02298dbfc1ceda661d17dd12ea33f649c9ffd0b1368f103718ed4fe4e372d4d883ddcf02cd57c057676d821cb4568e36709c46f6b819d9c5dcc277464ace8dcd1bc3332eafe91f176707720254722af4bdeaae53e48feacf22962faad6809a1111736c95be526a23b186c8d6016064fd7123f1193646c04b8619a16b780b986ffbb44cca358cb8bba29ec9b4085626e4ee656c20d3682c62c96facef8baaf32fe43c94b84ff2d59ff7cbc5745fe57b10c723ad0f1e6fbad1c25371893a1ff0f7b897857cec1db9849a775c894d2b36a70bba140d81a7edca358473a9e05094e7c6dcce5183a2c089a8fa09714636a1e1e5ac17601b199d5f2a0eead67cdecf7f7deb5a355c98d77aac753dc2dd3a9f047c38ccdffa9d4cd777758bc30134fbaee0b492c03d463edd0363ce174fe6c1809edfeba8951c38be8271faa7b1a809017bcd4b93cc53f104d577cef191059f94b99d07268d15b0d7b605794223f4cf6dce2522e170ece62e34d286d007a2f85c98438d0cd0f738424cbc3a212f7d057f2aff51ec77c1efa0efd52f7305d77fa6f26e7de7ac55b086fc6c5573be2a47a272360b76fe73617b9f8b06c9241ca8a2d7a9e42d2bb96385035b3d334abefa86f459c57793af039806ec23d1f8663afce178077a3a9c83db273fd8b5f68e9d80cd08813756ee7581f36a053c74455fc6c29f2c877decb7d0e0dc9e61ce72d0d3c0b5c6b46e104725db02e06492f57944bc3ee3aac77eab58837d55b5b419075e8ad81b58ef79e89fb97e10bd4e1a41adc96d3bf6d781eed51b181bacdfca3940cea10ff1b1b20fe09927fef81371436eb7cad1a1dd3f9aef51fb2af700c71bef30f527bafd45fd86599c113a87d0fb863e9daa9b705a46adf26ca59f19754dea3faea81fe8d8d6c5b1c624e99e50df49c95f42bf988df8356abf1d7bbcc75e9907751ee9dc295c41ca589a5ff2efa90f97759a51e6f6c2c0bcb05af7af6113ea16d2baa9e533ed5a779c5b573885ee38abaff222de38ef4aaeeb1a2edbebdcaf65efb85cffd4620eee8fd345fc4b5d5ea552433d27bed70c67e1312615ffaad626963dfd454da7f4c3362c772c690e89b9c0f3db4cc901beaeccc1bb9a430ac69b5786bd8fb258ad0b40fe157541bc87d8f60e31ea7a5da2dc5c71bd05c4a482ede37d449c4b7097d89dc388d52a13dbfba2e7098d8323c0237afbd82e319a89ed5d20d7d11472c9806da667707387f8db5bb5a7761efa6e736eccb643bbb7776c67e73c37fee3f49a69622f0f914f0eece7b5f9c951f7291f8a797af471bf16fec3f2edb36ac3a25642e2965bd6e748813d2ad620bdd65bb7c16c2eeac0cd83f125f19b8ce7ca4c81c7b96b2e6b73a0be29d60b380616eadfd87fed54eb06d669559f53051bdf8a33e8358677009c0ae2fc8b3638186f9c6e4ddd08384d689c0b58ceebd7f1c9e1ea759e4fd7bf7fe7fc8b73c1df27d65fb65c37eff5bde95aaf2b9183bde45bc63dd524d8ff442ed1946be191033b37c1178c0d6f1f02d7d7a0c9fb4ea9cf4bcf1fd4d5c3febec46f938fbe49e62d9784f6b9cdc6302834f6649db7b2cf056a67e29ae73a5ac013b48b5a1e6244b81e1beaf96de7c1600d3830bb997ef803e2d884eebf4b6c10f063874cdf87c642b1d139b07800f8bf87d883b0819a6440e325b259f0fe82ae305fb675027fdb1f6fd9f33851cb04ad27e80bbe3e37699c79a001379f9a59e85b0decd53249d402ffabc0c8f0bd4af70ebb8f19f5c7479e2b9967d665e1a3ce14be1b3a2752eefab8009b0cfd5cd4ae3df35cf67cb35ea2a627d779248d5293ac7c0f4abe43d49b2875af6bfd63b596e5bebc37d53a3ee4b90bee48ec4b1bc89a31da78fb8aae10f57d7ba427fa0e9cfb8ee901eeb458b3cfba7ad1ef68188d6793d9d992f2c63db20e598e263166ecbd85c778f570a07b6a617b399d0ff4abc037855811f555c81ee34c896320e7d78b8df331c91f4a8e86abf9fbf018afa1175bc682da133d37953da93b37aeceb5e7993fbd5ee7a7dbb36675dc4bfcfa7fc2df84cf7b3e86a87144a67e3b8bf2743d52dee3fddc62934364b4bbc0c5e47bf4dcd887d38a5e9012875e99a37bd788a4ada1d639abbe0dea30157a2fa01b20d6d6a8ed9f9418bbb65eafb6d06595f2a7c02d9ea1ee6da9d121702c4831f34dbefedaba43a506d3ebbc576ae4c88f7c08339247feff621bf17fc19ed568a7ea70c0ebdfd00f440d57650f4a18e8ee6ff1447b33ab337b6f767a13cfb5c49cd8829ed3369cb9eb2418209654e432859e34733def9e968b8d7749ba26e83b3976fdbb4c8227d69b08f7969e45ab617fa7df7665dea4e7fb435b21ec49986756ff427ce72837bdd860b642ead5c35c25d80251f7b9b516f8b3f9b9959082e3a19fa4f837e0a024bd7f89db8dce63ad3d413f6e52dce7cf6d49e45bed7936e37520a906f84ddc477aefba1ceae3f4e2beffc03aa9ea3edf877fc9a2d6c0a2beec50d6d5a8d61cd0c65edbfb9d3b351d6b74387ee70c35df66cdf160b23e874153f5b9fe77f919229fea77d7baea1b8867486477361ef0ee7883280b8f4a2e79ef5cc97f4746fb121978fe8579c90dcaf88d48506a50a8b9be8a1e0a3c8f7fde858c332bec7b4c87b927f07190c3ebaab8a6b2ae257d0bcdbe9673a5d25ac0b52bad8509195893d9beb256316f7fde458cc7bbc283d237f385df6eb8b677f2fa03124ed34d1840ce929f6d6df673694e86d3d332b2c901faa19f7bbabaef09b0c53621f1aab90b8df63156f87010735eeee3a1755a85b6b74afc641306ce5f8145fdc25d1cd86d611f244c1f539e1f91bb75d03cc711a17f508739c635d508d9b9ca72f71ce77f8a0c7248680cea638fb65ae7e07caa4adefc0aaf2aaea790f543f3ef2b7653f3fdf631813ccf009fd5260d5943a74de76298309c44c9cb82e7c3dcf8420ed829eaf094f572b82ee85d94dadc2e4936ee3132ce17c64f4698e6f7e72218138cfb8097e2b4f041bbfa18aee875bd9c9eb7a18d5853cc27f19e6de8ebc6b17a74fe99beb66d7d2e8c3047ddd3f29d4476e7c8b48db1071cf8b326504f8c5b93e5cfcff9d76b977d3f6f66317dc7a055fd74a06b03fec0de526b1a376ba6cbb7ca1ebfc64fdacec3c0dcd3773aec76a22169c641f7f118e690073b42ffed33f060035e1af634e16b106363d9577c61786af4fd94b1d3b9f9213f9fb95ff86d12e7edbfe95aa5fb84fd6ec7b856e3c07ef87bd414f82757eb5b3d36a7382387a4e792d872f3d09f6d13d8e7c2beb699c644057b85f644c02affe76dfa747e79d6e007f8673766333696dba0eb6c51ab9d717bf99d3c9c120d7f70258629ce1636be43dcf72e0be8e164fb0bec096a630f8bb14b73d6e07386cf8a7b70c87affdebdc47a050c11e7630cd3b8053a7b7bc71e34793f7ce85b177ade832e7bb05ebe16dcd64cc70bafadbe7325468339aff810f5b1d378bbf0cfe0e708f586ca3b9c1be92eb2e978d9bc43ddcaa4efe817d8e9dcec14583cc2f861ad12c343cf8851befddbe9999f916d5de2fce9ef517ea5875af4c384eb0c51ff879ec787a978564e4fbc8fc9a1eb20b2bd7c043ea6d55c040312376af373c2fac3b31362c37e785cf813ace9e466a1b71c740702d74d8da672aee645c067ac1b8bee7ef59f2d30397bb5ee25e95bbd4d71cc7a3d0b75eea03746fe995e439b205705f543dc3dd3dc567fa6d5a689af70c8d4fdae66ecb2bebdf595bce6e017a02e7e6eb6c2ea399026dd87e57b0b7858591e87f9effd17a65b9112c8eb679d758de6f8210c8afa28d7d7a9f01addd27aaacb39bcaf3bb3a0e94e27b3f1683a6bf76bb4c2776126684cd4e8bcb3fa77bd1ebdbe865cfff9a2af08fa8d626735be474bbcd04e716d7289edce85eb015fd168ffb908c6ef73232561dfdbdff979f4e19a1cf312dff39d42c7af5ecb45c3a9ffdc58b218614cd7da68dd7e7b5fcfaa755bc15efd03fad6852e0fe73614b14382b68cc05724f398c7c6781bfa6e33ba5b4faed07f54df478d361cce556090cbacb8d70d0c403d6649e431e467f1159d9a5b5851ad9e75ed5ce9d6dfd5f92acf4cbe57767153e0a17cd670e5cbfc587f43decaf6f228b3f6a3ae097554e19dd17beed047563430edafdddca0fe7f98891c589151e6e44a9ea62beb63e31d54aeb36fac915ddc7077710b7a9f6b309a55dd61cd67f4f377033ff9c75aca703fe4212eb0b0b51c86822de90faee86b4af6e618ad212fb95ff8ac77ba1613233e53b9a7d0e67c1518fc6b1a98c2f3e93521c9350c2afef91d5dcedbd8dc227e57e7a3ec8feabbf9026374c681bc2feacff320493fa63afc54e5b92f719f4cc3c03cc69bc9f6ba2e9a688f34ba92d3eb1a42e25afa084cf2ba32636723aedd662e72ecdf31f6ceadb5a1c386a21daac5fe320eb5a76d9da64df5ace1f84f418f6d4d0e3247f71feab3e1cfa4de813fb1db7cbda8b62bcc1e6e69d4f716c1187a42ea306fbc975d677f1806baa21b23da53a1476d5ddccb2afa875fa31670f0bc468887806be03e7f2c793da1efb8b3fae83e351cdbdb81bf4aaed462597db04e439d69891d139b6488a1249759cb6cbb7e1b7c6f8d3f87fa5f582f003d349dc66694751a0b3f6c0357d5353da7820f4cd573aa7907c27da95fe162deea10b5e21a8ca0a0576be15cd4eb8eb1586925c550fb7adb5fe893ddd8dfd5fdac8dd9e00c2ab95e6a743bab5aee77e86986d9c35ee25551cf5ed1772bb897ebcedc1b67a6fe3ba206f91dbe02f63f967bb2ac5b46b67549ba669ef80f07a737de87be7570fadec9b13d230c066d7a0f96874d3187f2b2c4386722f29e003e17c7c0faafba1a0cbf0dd7cfdf050c30b3193730104c8f59af71cb75ef77ba3a299ba31ccf2e5157b73d009d81328fb8e5eb6094616e595d672c9fc1f7f7bfa705ddf30ee1153d68d03978dfcafb75faf4c5ed1368d7fd867e33f585aab64df0b1eb63b07be6b77a8ea01dd6d741ac0ee6a8b9feeba5febc51735435fe32e7a796b9945729e65a565c2757eb4757eaaabaf9d3eba65de524d561200a3e56f8fca7ee8c6992b83506ad17b0f7a56e9e1565c81b15624f10eb9f60fba62b72bc3e487b9a71171db0462fc63d0f126e3f046debce576c77e8f9d31875cd5df4b95574ec786d47d00813ec96aa1b1bb7bc53dc1fd067aa705ec735fac75775e5bafc9d2a3cabab6bbaf5f1521807e00ec28c3c70ce56c6334ced02e30ee338f10189ec4e6b083a72989b065dc8bebb0b03e76be12787a83520d7f79d865b8ef999651d14c7312cdffd9e8f4def333efecdb8e0451edde57c43d71fac058c7d193630c69e5e32ea32ce7cc409a6f3ac6320c7def802fa3ccfdbafe1f461e9d9ed07675ae959d1dbed4acc54e78f98ed59e69da2d655bfa28c0bd89c88da58ea1f8839deb792e65dbd0e7e31b73f847fd75e9bd92fd0d967eb0ad79d261ebc697b953d51fc5fe5d52d72c2d7b05bf39dd3df0b7c51736e6bf7dcaed2b52a8ee99e7820e439c73b34f2584f8c2e5f7935df25c70ed77206b256b3ec6b5d8bc9583fab5dfa4c4e3fd92efc3311b801f7cc5761be10700ee6c01b1a905538c5ba53d4321b0bbf994605466980ba328675d19dbfec9cbf1a43487bff3bdad2f89d2bb1df93ce57fe563c087c83fc3d629de2461e0ff5ed450d77fe6e4719f53f275bed99db1f44039bd9f29af3bfe46576beb586855af177f290b123e443fd5acdd6411274bf391e8837aa39648681e802eea1691e177ebb51839b22d1c625f11ae2a65f33d433d1d5bff49fbb52fb427c02d3b0ef6abf7f5def52f017255e6f89c7aa73a8d8b855bad5f972bf6523592dbbd0f0106ad7a57dbc6ecb982ee7fa43c75190f1ff97cfea2afea8ccc753d4f4d49807ecd9c2771f9ce7878ef3fc748527b7e895bb472be410b7ccfdc21f93213c83cc31fcb3ec7f2b7840de7d6bb3f05f96d1c6fb9a038f9b45e7b2e178f87b97c5bdc0d54fedafff206980417c42e3c4a9e87bb11e58a625833896011905657e7211b8c04fce7a529ad1c6dd455dec8383fe96d6b88938ed427f88fe9cfed94446fb309f426f4a0abda7306e1e479bfbc8e89c78afa8a0513a9e78e9cfd9da33274d77f0de68ff9c7aae355b5bb3e9acf33aa3f1f773ef84bc8d68cbcadc4499938c2b5ab669a6d4feb36177fd17ee1109d791277e5baccd6c55dca9d71fa451601e239b1c58cfec2eac7eafa24f506a3e9d106b21f2dc726d57d497dba12e9ed98cadabbcc04a5f26e8dd573e53a39d750bf35e33afa9f29c6327f4cf27be772a3c5f52cda57d99424fa497cb18887b3988abbe07da016b2fee75e469beabeea65c8750fb9e96da62629df8f1e858159f44d658eb62afa2f833857381ed2b1a07b6c5be2927f4810ba745ff44adc12f87f5ae25fde408677646b8b61ed3f34cc9dcd8434f879c237d3c222e7b7c8c362189b384e12adbb0b723dfdab13e3549eb82e78de653aef5c1c7c7ffffb49dfbe7bd9e7ffae93fd436eafdcdfdaf45e09258e065787b6f2cdf67d63c680eacc96c0cfb3a689099eb0d4caf47dede4995071dd709f4ca1e237acef07e5011a7b232d791e15d90834e7dfe1e62fc806780eb245b19f521b9bef98d31b198d4dcd1ef70fdbe1160a76a6b195b1a83ccfa037a26ae508baae4999c4fcdcf0f7f8c1c255c9b50e06d11f6d10f3e46f51df8173319aa710c9e4bd4aecb35667ee63c3fed189604fd5949f7647c2d8fcb73b35f731f6d9faa135859239bf129b2c967385d9e541f59c30fb4776cd091c843bf992efc8acd2a383f5f7373e73c9f9611e70ed2f8f675e3040ed98d5c4f97b006de6fd82521274cbfcf75c3957a33d3bcf20622be72d61f90d0269fd0532dd554dab1b33a2d856b5438e563c36b089f2f6bfa81a3d484f0ddcd331a0729e7a4700e09b886fc55e05cd6fdbe82e9a8c4b8e16158f1e3c4df0fd2d8f0e431afe04c066c590d57b42677a1e163fead9acc5336583da5151eeb8a8e5dc161a7e30993eab2611012ea93ab7c61d76acf6f75b5e79abe128c9f5d32f7e9b900da8224b2c9d7c26f734cec27e82115bad40312b75c693cdf78e65b7e43c91f66838e2e6a0d56f28b66fb5df84cd917171ee3d5d316f7cf1acee051d7048d21f19a3277d8d3a3639ffe72ecf5afa1a253207e87eefba1ed19348ed3f3296a6a69fcf315fda22beb0bfb0b34eb8b68e3e557594f87f54743fcf93330ac4b6c904db44ac57ffff51370a0b8b6465dead756c72eea9d94f7103ed74df9bd7692ddea79afaed5b1bcb5f7ea41be672fe5015dbfbd16aeadfacfc2fa77ad289b6c793fc77f650ed14f2e9e4ba9158bcf7e756ecb319f689cae3ed30fe6872e7f4ed7425faab78f0db94743ca9f4af3baaeb11deb6db9669d7fc66e547214a51f9518561eadc45e1e3a470dd06e9d4fcd4394378fb1cc79c273eccd857f5ecbfa1c4f3762f8bd987fb94fc7a5de1e312ecdf267f5e3e81ce6c6ec2e2da45b76ea1e5b36cac25dd47769ac24e58fa202f3cc74bd386754f9beff927b3d9f94da7ad187a0e46bdc63b471a99f846b781dee42fa6e7289a7329bfb647f75cf5d3d17cdd8599b852f13668444b6cb39f020f70a3c1b2dd4e9078d9fba1eb4ccfa0a7d976b42f4427f7ca4f101f5e7118fa4d57b90e632a1f735bcc6a88b3c1588d31f7fc619392576a75a6f64fd8c573fd3bd6f9fd561c3000b62bb2436c6f92230e9f3407e96cd6b33ca5c1252dfb12edf2e9feba5c68e30ef73c33a001f91a889829c251be42b1a5c640ef53a5ffea9c867d0d824f44fcb518e751c3efe1accc25359676bd2d8f318f2bdadb97ed18b27cc49729b77f178c758147fef064611eff9c3b1c734d66984331e33a6587f52d6cf6883f8f9e10d6c5ce8b79b91cfb43fdfb71c635d5b9f2aecafa819fabe65ba96d7ef95b4063ba673539c3fa5b604e8105ee6adc12eee4ff6053768007d36ab706a823e6bc18bd502ddb6d602faf54803740332d0acdc45198d5149c379de1e9d6ecafadeda5bc0df309d1d216f05da40baf8cb5172d0a24dab595babb93f2011e37b7e5de9d6da5307ce92e7c67f9cfe970e6b87f1a4dfde253649239bfc0883c1cf17ce9f27ac43f933ce358cc1951e61ef90f84d1273ad161607d6d733bffbee85f776fbb3bb083478adfd22d891f8737b0373afdd77afa3b5f383e590b0a75fede707fe81ce2fc85b48f7e3f517b325f01221ffd6753c6631cff3d68080be57a50f8a1c1681bb9bfbe7dd47e6e5c1a577404c13abbf697320f576efe755bc1aaec5a8e51d405f85c7ea507377b791e15e6a6a523c0eb717beb70f7b2e991b9d7c1eb8c798d999e1b49dc67d73ff51d670d2384b9aa015dd7f516a3715fff08eebcbb9ea9941be62fb4c040de67691ab077b823a5e8e1dee62e0a18377fbc9f141098f19ed7133de0c68bc015ac389cdf55f94334b5c6f7d973e1bf047d2b332ee9e966161a3e8982b3d206ff36c47e6ad4981e39bd1efd95e9ef4d7ba33bf0e9f912dfca459ec49b4951a9b6c9268e37d85c180f30762dd4db7bfec8424cfdfd84fe59a10cf7dad2dd4d98ad8f068fc26fb3c37cf4dd0527116bebb0efdf684ce11c36331eeb5a77da97f5c9c7b8c076c7d576d5ac5a0a9be1debb7d2fa76eafb0b8341e363c6f7b7649bf7c0bb669fdb9edd297365d38a4e22ee25cf3d4e8b35c9fb0ce19d57f534d9ba9a48e37cf8ced80aff45f1d34bbf7ee3ed6bf582e56bd56829d4fb4cf2fa793c3a9674ee531fae0b67e8f3763929de759bdb3266bf3067a6e25dc017f4cf97e8b22d7cc22bd7006d60d0b858997fd57193d6e1c4985e2bdf77904bd0ed83fbfd2be0f2fb71ab6e2c7c9eeb3f77e1b97ac5bee076f9de75b0fcd957ed5a5b3e17576dd095e1b8da2b589192d3959ea3cd2f650c5ea2dda33a7bd51fa3bdb23b87c4a267eaf8b2f09383cbe236f9fc6a5473df9053c43812728bc53963ce44bfdce915b1c981639023df6b2cec0ef4c5511bf9f6feb0fc685575ad15db7f972dbe6fed9897ea5a488d9a78effbeba03fafc4e8cafdef5f8bf79c13a526b89813c77cbed0772ed9e1c27fb2f2f0d2db439c7e71d8df2fecef89cadfc8dfe536cc1ec046fc9ccabdf9f360b0a1fe6eb471c5fa1f720723fe1ae236e0900f069b17c6e7157407e559569fcbd6f87f307ed6a704f5edd8f93c3723c089829e085ef3136b25784f993ba7980bebb482eb78a7d5a86b66d10ade49a7180b3f534a7f4cd5a3cbb1dfa3d07c4fe32cce8b5ca59093a131788d8fc86b40c5d98363666357b49c4afb9bc60e3e33f48e14efe7feb19f35633f9779d67103b45d9af5efe65ade4637efe5d8cbb996cf42588357cf6b787f8179c2dae9a3e07bd298b449c7b3a3eb25ea2b9af0bebb9eda641ddade017c48989bf88cfe769c8fba75ef8161c7fae74765cf707bcf63ebdd159def5abd707aedc2c6ac25ff1dc625c40787c43fefebe383661c6d2046a8d8dfb7298b5d74f7f9fc5235109ad19a1c267a7b51ad1fb2cfbd235f50e79ef5e43c3f725bf0c3f9ce7e566a4a610635d4bbec4bf59ecefdb587bb7bb664ed46e8bbf03b996387871a9bb01cace6f4392a3a97c8d9871a07d19acd41f6b40c83f414fae3460c9a4be27b4b76899d82f68f6893abb93fcea9c2c7c6d704e2ec8b5c66cb058d003a46eacf38bef4391dee0df3c9d66925e4820a3ee3856d19e1d4449e0dd677067d5a46a721707af178f655e472929ea15ff51bc22025f39627e6f0a4eba06de7bd23a083c4cff8b5b6ee67934bb1fefba87fa5af29176b9dfa06d00ba65d7b6867e13aa38c5cde41b7bfe87780ef147c0195b1301f60863d29c2b8e4581a6262223caf181b59ebb097ee42db251181b8ef467c53c9896a3e131e4a7c305e6bc86246f44744cd70763d5643029b57e2c9605d2c7cafe5d8168d27808733061e7e338de0f7a7656c3cf25e18c0c524192149ce353b92f403b94bfe2ef8b2fc09ecebc86813e80be9eb79a3785d0fd662109268c538b1f1f36c5c8c4bac6b664930682c6c2fe7b9f6f966bd8c8d0ec440824e1ae7ec7e8a6d2b9ffb0d3ede998ae9819f234ff772c2cf85cdcb321430dc821fb7471cfc78cb745d57e114b54f18e758236a3db19a7eb80b8378196e06c7686aae40a722379bb10d5a356be074c767cc12d847b31277296bd83613bb9327fec3169fe104987aa9e787f1efc67df7c2ec1ce8b421066ccf3effd4717ade7866b961d0e874a76befd97b166a04788d7fa4574fd21e2cf728be4bbd1d06bec449e035a216e83a70de7ad0d793fc68e01a233970b0977656a32528e944eee246b197601c5c0b92c7afcafd01b7c6d61ceadff4274bc9ae62fe51c01542ddad1921f7e22f888f3db1165bfa24ac079af1253d6dd9fb018d74fa0e59cfd50e7c1e5c47f2f9bce66ba2fdc4ecf6260cdcd730481b5349bb84e1c336de61d62287395d035d0befb191304780b3c17150db7c4e3fd46b949827e5dc1e3423326e47591523487dc508b5a9f7e53a6eab3561118f05784d015fc5ea8fa7bbf27cacd700359bf254c0cb023e54c2b5b3387befd89d13f8e605ae9eefaf762d8797e62c24517f4cb498f8be30cfe4f10c983c165389d82d97da8959e7c431ce6c8fff55c92fd1d81ffc4ae463e4da069a9e1299cfc4c27beb398764be34c0426bb9cfee889f19478bcc67e3fe7cb9caeb2af3f704975e4d2fba944f91e6b58a6bbbc1755219dfdd7a79aca74ae8f3557ab7eee0db1030ffdf58af528e498b31edfc4beb5bc2e357c7a9eb07a16795f04c2bbdce50d92bade7992a7d3d71be1392f48adeb47c5862770a7b771b0b39df427f5fa5d786f94a2226731de691d17c633ddb9721cea9188b953139ceeda5c4500ea47979cbcdaafd957b217ff07716dade7e1e90ea3a7e7ebcfe6cfd31492c7717f91e8d47b661f9ced1b64fd7955c335e770b7357a30f5ee6a202ea277817d4c2382d433fcc684c045a657df7a2d136a6cfa3ebb7e23ecbd29d35279e457ebe37064377369e895c86ff7e7ce83db09e663c87580c563e3fe6b282eec05e04834b22e600baa05b23f6f0143117e8ec8a3d6ba48acdaaf195445f2e76b2ce6a91799f890579b2d821ee76015a3b561eb6bc2fd4c5a13eb6d4bf228fc37f5846c6e06ffa9e6ae239c489f23c02b71ba2df21e0b3270cff4ee38ef7cc7b487a44d296441fc7cb423a6e21d6d2d4bb98cfc37bc21cba475a71669dd41eb1a1c696f1b53784bc02bb9f3a8ed247a1fe565adda39807707c71dfa9d7507b99eeb7130a9e34833564a1ee62e59cd39ddd3a2e32fc1cd60a155f8ddaf5b97f867dc59ef533329aa7793020b3969b53df3d09066924d777fe0fd31d48e3cccb479b311dd7278d87e6be9cf37f2dfc54ef9cf8d63ece617d14f7885710dfa7897f6e28e3cdffc4bf405b827571e0efc075497dcaf70fbffd59534fd09e57d7b954506b9bf5672befa2464ba7cadf57ebbfc482df3714b1fcd0cb50c54d96e7e51f9ee7b6acb55ab96f9503b27e1d62bf8afbba32995e3e3924f6a3e4cfc7ecba6f9afc57bc523879f4fd221afe2b96f72c34296af97f72c683ffeb2edf10d7e781c65005a7f614e2d03c845a5de730eceb717cca5894f5f994f2fd38641cb0d89756dc477bcda41c83f859357ed1e616313e669c55808164762d23793893b143ba79e736b5cc7515e3aeac4db647249b466da93827457e6daaf1652a6744caf00fa765c5ffc51c85782f6d1e54b1af0a276bb9d7e395700688da0f657d20bfe26b8a3e71cd79a5f2e89cb0df67161eb4f9cc5b3dd675dc8fe57857f3604cdcece1c06a34051f979893bec10d7693b7afc2779d8dd3c83e95dc5fb53c1eb53d44253fed4cd07ee639dbb24644ffbee8e70eb94c81f3aa971e2363bf0dba03ed7521df54776d6d0eb84e133d6579675e2b647fe75abcf40eb80132e0167222a3f30bea9fa50689a099fd3b63ac3effc2ee1c1739e6dd91af43aa9f556b49a04958a9215dea6a276f98773213bbf3a5be2bf4c7e8deb11a91d1d8b231a8bed0e77cf5adfbb1df6f719eaff4384d0daf4d7d0d9c03e45a127b02440e0a56fb6c44463352af1154f68099d2e7f50da1f7a1f1453ebcc661eebbeba13dd6e6fcf43d1575f7a4e7489b24b9f91e0693ad6f8c578156a717e6f018670438a2e1fd795f5bbab64a7e70b5ded4c9177e5cd499e41847dfcb43cfd7857ffa7d0c3e9d7bc0c85b077ce606af25401f1c8d4f867def30f4a5f5afb3c7f770a9c0f3ab3d226c6ef68b60dc08fd368937e351189044cb2f41d74c43ec6da9f1f92a9f83f89a24f66c3b37f4be02ae35ba3fbf5ecab1a89acfd772652e896c0f34026bd6e11d79a19bf658c06cceb6c8e143634ad1aec15c9308f4c7c7053e047b6f8b3c268dd541ffa5a8656d5ef6a2bed9ace4e017fac6e56b145a65be3b2d7c5ca1df77c4628f24700970318b78ee69edb59e155cea1ef88eea79e840e79cc7763738ebf6d77a74cbf96cd7703a9c44ce82e9154d86723c1be17e35ba06aa56d63d732f69fc78031207de2ece3cb18fba9aeb61df5d04e323e859cee4de3166df213ed2f4055d2203b8a4fa326fc65297b3407fb7bac6d01ec9fca395d846b68bde21cc3af4fc3485fe79760e0d8e917126739fda488839b5eb9ed5c740db7cde722bf694efdf18f4f7a0464a7d945e18a0fe27eafd719d08e8bbdd689e6dc3b9da0706c63d037aefd5d326b0ceb19321af0bfc7b15ef9d6e02f32c7f46b0b3e5e7e2a0c01d8c1bece78015c47f27accefb82d7609a44a16fad351807cc43f890c7e7b548c5568f5b0bee67569fb18e6f0234b0b156bfabfd3df5fb0a1fcd3aad5eebb8c76d2fbdaa1580cf82ba5a97faf1b09aca0f1df69dfae3a0059701576cec7c6ac68d9f25f37b6a1036724be9e3508bfa181ceb03f942ddb3179fa331a561b5e3e6ed3992d6f5e7efcc954bc2cc6a46fd89669e585c51f4d7719ef6491107233745a2d977f18f52434db387198665d4354b2df4eed306df07fdf9d366ee9f5bf3805c06b9097baee0f1f4271bcddaee5ced8bcdb47684ee85ebfdb499b58fec4e0b7b580b7d6ffe5d119387f866fe3371cfa28fcc70ba4f3f546e1ea5d65f9e9996d6aedf6343556ea39bd77c9b3ea58e7fe3fcd76864b15af3cd33ee9edece4abff05d67ed532ad6fceaee5f7746dd718efece7cdf779e777be977cef13bd627bdfe3a463cc1f7c754f77e05bf70a2e0ca7fe7bd5ef1f52aeb50bd5fadaf61930bcce10c733bac6f258d3342e21c313212beada6ef79118ce13e2c67845877dbca17be7791fc234d7e4ec7ebeb35ace9fb9abcba17e09e5b257ebc0c332fa5715338c5fecdd1ca1c47c660eef4935d649f96efebce8c69011b887302ac12f2b36e5eb83ef9f2ea331b4fc09d1416fcfd6d0d16e75b7ccfecdd5cfd4c9d4dabf1a72bfbe81206eeb48e4fade61ad23d3531d39ae3af191f24e48542dbfb8c5a031aabc971e4eff6fd93fa7ae622184f22dbda456b562feca6eb12133eb80ca750c3ec893f73b8864d97f3027e918f29ef4133bfe68129bd4fac8571eca394bbb98ec17c7ee479a843dc1f1c13bb03b861e779cb7f2edfc3ea001f21c38248713ff62e56de29d6fe4b2ca6fc9cf41c15df05ebe55175d4583edb8c3783f463dadec50da6bf28f46bbaf23bada927d47d1eb4e3043ca78005df8cd57c8412b7ff136b863fa75877ae1b2bc6121f539937439c4785c3b1c0828b9fa9c9e701b706d4b34b3c3c795d897e1a5d8f52af9394338e57668aef09b45c85b52e6236db171e4b31ac1cccbd16db2cc62e52ffd853c7e9f13dd5de8481fb9618d8cfc9dfa1d08756c1f6d668a090a4217d8faef39a75013a86eb04f849a51eaa746e8c7b124f42579a0705f322f53734e6c160130613a917752e8f0978bf2a5c1e7acd07f57974b599eff6131fc220e9e9ef2d682e881c55f82ca05b536b7b712c3f23bb738cadc733aeffa7ab18f7d246e9f85ebc07c835f6249f518bf1064d54e91d0d2e0c03819881ef7032fd26eea5a667ec3f453f95802b1178c6966fcf8de5b80b1ac19b3048410fee5dd2808e8bfe88d09f2c5f568d86742d0d37510dfe85afcd22c611b02b80d51d18da39df0096c7f63e93fe8b8479716ceb52f6d49763d2f5678873e5f8e4223de3ac99c6dd62efa0fd5a25e4a3ef922873a55860206070548e18e0ddf1ad13f44300e707bd6efb2ba4d79dd6e456ca7559ac17cc6d8f9f59ef9474fff722cf9896eb4bc58ad85e360fbc7d227117005f2ba13fc398dd15cf523bce3a5fef6c5e6fdc43eabb157ac2cb9e05a607e166e481fa7ecea5d71a3f9bfcfba91c8779dc7e887b4bc8c9967dc1d5713b74ff6ca16f3d7038dfe6d7dcff224e7fdc04ddd662ad908ba3eaf903efdc0372fbd89d66223c1b3beb2f957d8b676a55c3446b2ff8b3b9c12270b7855db4695ca1daeae2ba7bc9a66f5eea9e5d574be1d7d4d5b351339f6178449f80e194f12cecc978e56a8da0b8979837d78d0f721a62ee38b43d1277258cfef20d7076a1f4bd5738f7bd9338467d7df4bf3fe76a7d35f41ecfa3aef9733e3dd17fe7f0efcffbf9e4eed640947a1f008b2dd905756da20fc6e607b9c053faced85ee37c562968acd95eaeec0dfade986fb48658106c1ddd537de0e72361f7613963da298ceb0eb165a8bd43fdbdfdc21fef12b117caa7f6106c236ab2f4dde3948c31ceb3db24f42707c7028dff5ddc1a37c3e9d3e7f87d72aaebb7bbee0b887ed917f9c05a0fdd03723cd583dfa9d7d2ea28c59b6b353c9153935e738cf873abf313f39dde6588e3a0efe65718904b70b118469d7fbe0db820e04cef5ac267daebc86893d7fce6f76e62e48bf189dfa76b987171dd85939fa6bfc2600dfe582cedaff53d38f9a2a7d1eb0fdad0df05dcd174ff9d514764aaf8fdc0bde51de29649e606c916c0852f70edf05c719ff5c31a24fb98d1678471eeeae30231b6d360a7753fb3c7c805df4d09be07d4986031ed5f5c9b88c63cf87bb353d17067f3b0f0db69649faf68bfde5873c23b59185e3b6e3e9ee93810f72abcdbcc3d461962b886560772fffcf3a30db7e7eb9d6375528efbe1bfff9e2e27cbd965e430f7cffb0f980fd4ea082ebd9dd377b771d66939b647d72cd3f9d273dad5eab51438893a3d19dd9c31be32fa4c58cb6e456bdcf7cafa55f50cf30f3dfe34a3eb7288f572b6271de4926de13e8af3147e3e9c9ef85ce76c8df0cf1fa2cc7b4840e3ff29153e7308edce217cdfdffcde359d5ced3e2777ec737c262936a4eb85fb86889debb4b0e7b5c82f087175aac645b007eb6b5fff5c8fa2faa7c4fa9afbb94f0efc19d4b3b296574f5ad3ac8e551f17403e16e26dc383de88d83ea70b215e012d8fdcbc00362cbbd1eba89fa75ddc28f3db75fc45df7a1e02fa22781e4f9f36657e7db2c1f88a73c2893dd1eba28687bec1e332a26bd6f072d94730571f80b7adced768657aa09939e59c9a0ee8ed4939269b1ce2964be6fef5f9a9d731666b59384bdea6729c8eb131e44777d14afeddd5f7f1fca8e61ee9fe4cae7f67ab7218d167bfba86f9bd84ba8718b7ddf1ddad3e1eacaff7fe19376b19ef4bf37e0f36ad768daeb1671770143651b992c016731d46ceb1b0f0c3f6d4f0dae0734dd75ceb70efd8c93179de2e59de70ad8da7f4eb88e9adba3dd5364ab953814380daef0ae76997d580eacf559c7fa6c92adb56d43c077d8b4db2831e67dbbac42def2b9c9a6904b554b7cd78dd76a13fa1714c339c423f13e37821b3a801fb2a8db23199d7716876afbf9bf23c60b53baf3c0f3473a09d3bbdd672f33e1cb307e722e442e9bfe97bf828b443b74bf6fbe5cfaabed775bfabf6cc17ce14e13c85355ff8ea83c257c79fa73f010bcb3fbf6af3dc233dbb7fce396759f1fb3bfa3f2bcfb06763f2e8f7999e698cb128d389acf89f0256b0c0b20a3e9b92d738843dd43f52f53b34f532cc31947c106daf3f2062ed4c3843f4bd9659671d7aeed1b5bd530835d7f6e787e7e6a13fdb8686d798009e597f3d7d8ea07d0c6d6f16355c12432c4ced0f99c5994786f0bb5925a61775b1153f926b7b1f22c32523c61555cd5dc359cd3e23ea18021f80e6e7423e76f574aa724381ce331d7b3127aca6bc4cfcf62e0e8a6729b07dc8afd2fe9a07a0a35e37a7dafe0876bfba1c123fc7494cf0bd1458742126d3e3f9f9bb28b06a395b1f3acc799937103850648e737caef742a377f0df78afdb79997b21f1e605e777baae7091c52d6f9f74cbde8218f4ae4c5e87cce2acf335849c6c391f718eeb66385d1f22df3a0d6be74cdf4f0df77c66fb80708d9c04b0c4705eae09700682b69bb84f7ae13e6a25cfa89773de33ed25d68f2671dc336d53458b791dbebc37939f9386f53a69782fef3daf87787c58437664775a1303f86cf7916d097a818e523b16630dd68f394dd938240dc98a4ecf22185fbb8f46775be43bc23e55817797fa30d7aea7db1f1968228bf3bdd2f0a9eaf8e3a0eef37456f63ee64ababdf49a3f46e3faa03b80b18ab59297a9d4d3cc34cdaadcf6c0bf22f830727d027be8803b0a7419007f0f9fe33ad23ffb503f7a4cfc36e72182797823a20ef6e3d1e9214f328c87cd25d3275a233f72da48fae6e575f5780c0dd258f4bdd5281b1fa369a7b158753ea3bcb38aecce6a6434531a17c4ab0eea4b76db7fc7bfd757f099f497d0d749d7b4b62731186c306720d4bc2e3a4e10e078433ecefc6b033d00e8a30fc2675dad3821bade6996ab5a8ea6d003bb0b4b5f1578cbc22ef6bd38dd06f2af63ffb8703f6737ca90d777688f1b1fdd137b0635b7c1751d2157aed75bef177a7e136aab80c7fe59c642e9e68caed5c8274c2f197a5e8aef2bb56e7ad61ca37ec8f4b721377dad97f392d8de690abdb8a26e60f927ce3cb01d2cd6e3d7d4e670e45eb5b019d9e12eb2cf248471d5e095f1bb708e82e699f8ac22ceefb9f6bbfc2c6ad4c71bd77dd0629d77ff6cfd7cf88444f684ff9ecfedaf2170c8798751d6261ffdc98ee704e16760335fbe9747557df76bbc315dd92ef3f739b4f53db537ee89797198abfb7d6b695d9001813a01e45bbcbc8a3b13c7f1ddfd5259df39d6ee6a727a75bda2f2fa6fa046a0d487cfe2dfa72fd4d5246bd091879c39b35be5ba6903ef7dd72c72ea61600ec2eefe17da9987038b31d47541e2cd37f3ebffefae0bf1fbd7389010bf184ce08c2efa52e07bed0670e2d5f0dade7acfc8b9fbb09c07c881c1f53f6fe584e8fa186ddc6de83f6c318f7c2ae7b23627517eb7dabb7fd77cf39c4683d522aed789e45804ce079ceb36e7d1afdd2331af7736cd3c329abb18fdd3623f8e3603121b9d7d92cd703c5c83e60ebe70cdb5e95e20d12a55ce8fd31270e778b692f0fe35a69e4312369ae11b7e2dfcf12fc7ee6421d733e5be61ada6159b9be2ac6a7fa29f0f3aa00a2f5b793ec41befb0f027852e2afd3f3d7b0b5b027a366312a10f72dddfc231dda8a1622da07ab65ecf45cd997f5e7e5e778dfa35c3b02a3cff417dcccf458e7dac456cd54d8ff18adbc6f5326eb9cd309b1f46753d36853d677567ffe1c0af3594fb01ae8e8bc63f8e6d1d3e381726d31529df65a103b38ef2d372114c36318c1de3b8d09fa4576b447d02fcf3a1ef4a6756396f6d690fc6f9ed3d887e854b42abb24f0ea047de35e1ef2b7b8e8fbff41b35e3e438a3c8b7da73d0fbc5f806621bbe36611f3dfda8af893c826633621dcc63027588c12e34e87a3895f35c5b63e0fe41271fa2af7b3506add111d6d982fbce45e9fe336e2300d3114ecd4f0907ceeaafc8a94afd116b1ff5d7cb79763ece8d3b72b1150e88c24e9ff83bb9a1ada379afc51aa9e83096e765b98ef85ebf8f0fbefa3d81eba39e6b01788cdc8b9a8b7a17f931bae6b6e004116c9d84a57f969f47c5ecbcfbd649e0427efcd935770a368ee58a78be730db1b67a1dc62353f03154635d01db8ffc0debc8278745306e70cdf0621cf53c07fa67286aaafc396ef4e4628ef02d5ea76994b9c0d3a5e1c7d6e18c55cdbedfa9192f07abb0cee6608fa2b206182730abed56f40053a73f3e85fe781766e453cc7f828d13715602f60a70cc2c8f42cfce0a969ce12059bea531f1dd2f1aebd3f9619a516ace559ccfbbb94cff292e08cdbb02ec19e4a1801759c69645be7582be75361f34569f07837c1eac552ee07c1e10a9f6abf406713c1f3d4f390e54d373f7ef71604cfc87e5c26f37c260f01906660339025c12afcc167d96b97fce43df5a7f4c4dc2b4f177b191420fb38859d13d87c8c30f758e9ec83b54df93a3f9ec0fc72ed6c7f7398a382e3773c90273a3796d5c5bdafd7afbda55ea373d994f6951fcbb923b2de66371631eeaf435c47725f729d4eea7bd3077d77588b5bc45c2bf6dde43707defaa750e71cc53e1df88cf2fe7523b6fe5190d3596d06eeea28c5c92fe20153478e8d97210ef33b4ef1fd39579e4b6507b5696f375fd4c526a4137c7a9f81c3f17c1f8b9e861ee0a5c64fa5a249e579cab8dee7fbbdd8cec139cbdd2cfefb43152ef7f897762cf73777fa9ea1b94b879ae59873e11eb15d7c44c426e5ce64fc33f0c2f85f3e3edd791df597d588d03c7af8eb2348df354aacbdd38a735bcd4101701cf4d71be614d57fb5eeaf4dfa4776ab1181e7988aef6fc68bfd71772003add8a1213a5d107bcaad9f41fe7b957a751f4675ad19ab833e80e247c98580b8a8cf6fe63fa7416eb181c83a5fa74a8e50398915db401ffa6c1740d843e70b25f046e1b386aed9ed8a3299dd7c53eb03a3276edee397799c662c15788beb8aa61ad9c0f78aed4eaaffccfbf13f8774fc2d4315edebb3082b7e6559927fd990cdf55fadb0afd257d2d1ffb60189f0dda1bd05062ba06e2cfa5dc55fd7c4b3c8e05f68ccfc9bd9c3fff9cef5a17a771adeaab715aa1f3798dfb94fb9db836e4f9e758518d86cc4ed04cb92481798a5a03e8c9037cbc8d3dcda0dd02fa80d629ce1f965ed987b6a5fea8e06b97b5e702673939d4f55ad4c77d7c5ef4398a129b809ff373f72b32060fc194e5918297c3c2b62e62bff20d2ecbdaf345d255ec85c78297b96b7e2e6cef7341fd4dc3234ef7a5f5f26c55ce86a1adf605163df7fcbd2e7ff6151dc869e5bcac7c66118c19b645584396cac92b70275ffb9cb0d78bb89fe37e6b6ca9dccf593ecb1fe312fe713b29c789822e17c6dfcf3dc11e4e0e8ee5415e42d98b705e604f09c19e111a8783be72f9b9857fde81cd35e6cbb9d8a32debbb146b23306ae75197e7d28ee9ff89336c65c64ef66f9c5157cf19d0d82ad62f51620de8db488ff36c5bf1bb6aed92dd592d56d57ea8d20677560b52fab8d40f9dc27dea39e9b4e7c2adfbf4d02e8fb2308f8c06d8f75186bd27431dffa7ded707ce50fa5d4d7ead58a31366d791f305e6ebb060cfa4cbeb216e54b5798c1be39ef95b21be50d2adb01e41473eb4bd07854702b13acf7b298f2cea86fcf33e18f471631f4e77bda9cbe5019650dadb3c37e5a2763c3ddb81ff714cb007bdbd8633b53f66ebbdb2fff9d9c6de99aa9d517bcec01aafe66f8bb9c167c177c3f081129e06fbdd247e08baceb137e13597b5c5af8f097ae2ff9df140dfc3047acc40afe5bfb00f8a1ecceefaeefdcdae73f37eb0a737e3fdc21f131523fd2fafed629d0da731ab7d750e58d399010741d83501c722f1a9f1dede3e6a14a3df08be5143f21f39b743b5effa90f481b3e97f7e7d5b746daff7e23a0fbeb7a6c68091bef18ec5336894c1de90eaddb096657b17b1de07587fc08b00bd28dfdc87de98dc316f0aa618f6183d8f817bec5f5bf335f330ea325b8f7a40c5777c03cf05d6ff5c3b0fff4a5d02f9458a75fbe7fbe58e7dd22fdedd1e7bcc8afce1bdf923e48e665a7e953c0daca99a73bae5a6f1c6ed620db9a28d0218446e13cbfed2dfee7ffdf982fd73cc1e8d7fbed4623640371efda02effee49188b05fb26b858c98d38f07a1f4f4ddf8abc07649fe66ebfef868f89f85e6b1d214fb5e867ea72a1e40378cdc921ac7241a7a12de65f13ba9e34fdb48c0f214877710bf087323784fe1de2b55b835d62cff8bed5633b94f9d2f2de0bd79cfbaecc21e4a13eae7c8fd372eebb5f0277881565296036aa9a8e9a7ea56b35e92b7e393babf93cee9dbe8affbaef1ed7f61eda466b1daaef4aadc7eacf239e4bd2db7cb50e6678edc267c8dacdc81f90b852ff627908a69f10531b667803e0178477f2747e51f788acb50a7c0f6f9f8de50b70450d5ea3d684c6cd5c7b9af9f6dba20f13c755cbc776496c2b4feaf6273e63714f9c4f6e1375fcdb70de953d5468cb96c3fce9acdc97faf5685f00afadeb85070c6fd56efe4fd6d25709d8cc7fe5cc2ad67c2586c943bf794cb29960abab75b2efda467a2d210758dc0363816f624f6eedf38ceb2afcd63ebc166ba04f677bfb307009eb31d6f89b82e6d837e36cccb317bdd4b09ef9ba8936ded73cf3f21a9c0cee9ba9799a07834b382387c2d63df72a983b89ab0df922fe5368e557faaed17f13b4e5d93e8335aae188857d7989edf36e6ecc0a5b73b796cabf5a97713671e681ced93f901bd0e404e43e59299f655b2cc6c1fee83f8e9f18865117432dfcf63a0cd2b770c562a7e7878e5370b1e9fc959a5a3c5eafeefdc0b98fcff53b7be1ae5c03e6b37ef71ef7c5517f768fbb7367e53e2bf9279e1e9573acf6de7531d93f8e8b8398294de37cb91b303c34d691058d7ce8db53f05d05dfc98963b82e8e6d1dc22e700f5f2afc8795fc42a2c44d6a8e7c9956f7500dfe42db93f54fe48e594eed7b67ca5db9063cbb34befe3fe13f4a6b9df942ff97d863c891fc176cb1aa53c7fbb33578dfe7f9eab49c1b83b7781deee20cf44c7771e60d22bf49429ba489ededabebb3f4cf85efd66810d7e1868a7eef2a36a316b3365e8dbae6e77cddc9dd8ce4a0b1afd3872cdf37aca3daf5c1e645a97b55b07b13c3d93bf678f5de022de51a4c87fe7984392f75bc5635e3fe0decd8b0d42e2043bbd4d51aa1a62499facdafd07777f3c02551bf866780f30bccaa353dc44169f928f6ce1df7d3f6a2df87f965d88cdf7b3eaeab5e7203153c9dc06357d801ea3ffbe3c6a4453e23dbbbbcae90bf66641567d2436c77f2a407fbcda4b688c51d5cab642fbcb3cf047c52d0cd69b3e7f9c131723406517bfae786f5b9b0675b86199662f6ab1ccb32efa8f40c4a2dfb6b1e3c1de2223f5be6e834dc18a5367325d7075c964ee89f4f61e06c63a3d38cb3b134c651d7fc1918d63ecebc34ec93f7d0f70e9571772d59ffabe5d158dd02ce76de03849c33959a2abf67fd59383e26c1e053c5db94d87cf6fb69e12770fb5a6fa72ad784fe931e5d7bf3964b7d85f25cdb78fb08ee695ea29697cf0dc61f467f6e49f6b3f8bd80bfacab7703fe48e6197077b0d620375872e32eecd9d2053d13018b1fb897d03f67c8413a3e461b37459c11e433e13bb2ce8a7e9c0a6f448feeb73a0c327f4f0a26543dc77dcc9315f7d8d55d2fb13bc359232551df24f1aaf8fc819da77b41fb6def589d9f0526dd1b93d07fd849736737d385315bc62de81f6a855393dad4cf458e73817510f3189673831cded7e297fa67c058a55877aad6bc4b12dbfb4c7ae3f6dc38938a0ea1b2af458d15656ed7344e9fb7dce70f7fbc0f8317e8c7e5ef81f92a8863035c7f658e1846a91867bd6fa8f92ebc07cd33dea84b713fae983bc0d815780272e1b59a72dfd7e86764458eff73ee8fb7e134add8a151b7d8937bc7fa4a24dbaad33ae8bbc789ef02df4561eb34f5a0b2de21d4ec145b5960416eadd35cd3d38acf56e2959e1b743f98a13d297ea6e4f7c4dac50eb870baa76584ba27f04c45aef179bf5c405c76facbb1d7bf86b91e531d371fcfbe4192f2de6eb450353be59ee69f2fdfabff296b40d2ad98949c381e8df3cbcfe27e780f8389c4b153935316f8bc6bcf74668ff1bcaea92b086bceb97fcd09dab8c3e949d0d3d4f64b96362eebe4ae6f7d2e6ad7ddb5be6ee0644b437bb2556c6851a328c7715a06cd4ec1b137333c12adf4bca6953e49d5fee3dcfc6e8d4598df977f6c4fe318b88d02ed468b5e57a9bf57b183ea1fdc0f97d1c66cc6c6f27f605e5f6ed68eaee4a0fe649f8dc18ffc1fd96793efee33c843fc83fbac9aa7d1af8b865c7bfbbd7340bf761bda352371a3351f1bd7751f75f935f1cc836b34815f85c525d5b57b5a0abeff5f3ffffb73dcf40dd08c86fec1a8b17b9fd2e7b2bd7ca8899bb431c9efcf6fb36e7e156c761ad9e7d5dc1fff029c2ef6965c1681db64b12ed71297e284b9ffb0d4e7c55137cae923cf7351fbb2240e33cec570df3ee97f75f4f6b25e43a0f4c36aeda752432b7d98fa77c66cb287f9c6fbdf9d84ad916ca42ec701763a4f053b51ec4171bc34b683f79618561e328d6eface783f90dc2752d4af446d1b8dfeb2ec5795fb85fa647b5d0ea2bc5ebf511b3f2bb186a4afa3c97b14d711b4bc2b71c35bcd354759355651fbfa34bd26ff478c676af223824eac57dd97cfdbebe32d3566552d3ed5aefe6efea4b206410f3df35a0e3dd7a41a7a198b6bd7f86dbf40dfc7d477f339622f552dfb34ce1278df7eb35c27a83b9cc2f919186be492cbcd9fe8eb6b75b2fe72acce6e98ef2b7b17b8f59a5f3f17b877851e8a711418dafa00d3d1861ed62e682b37cde3c26f63bfbfd2d3a2ec23781e9feebd96d8a3d158bed0fbb3fcf23ceb1c23db4b357dd024dab8245ea3def4cceeeca2cd848f9bfa6c47f97d712d80c12e617955a9677316e691d134e97787306f022f1cabd384b6972f8290f51ad7d73cfe95da558bad0ba6affd96d7d716167efbb2f05de2d8bd65d21fa473e38b70fb867dc3857e269e3556d9af335a99cfd4062cb0efff340fc617e458210776b6d55da7d425153573ec73bb46238cebde0873dadec54d78ced25658f8dcef7e671d4ee91cb6adaa2f0a9a3dc7c89e1d22bbb3195aa7956f348ff3cdf280cfef25a506b74be28c18ec6c3e883c51839ce587e079bd039ccb0a5f7f99e790afb308c6b3e2bba089addb138f4b0fc733066edef560eaceac11b57bf2cfcf6fee45577780fa4023329aa07136012e4ce8759272c6712bd9315d17dc0b05dea8b26651fffdf949a70d2fe4f065dd62b6a6765196f4c4fdf4aabd76efc6b58b9e69b40717b38295443df8a75ca701afd44e1a91d1d8a21ddb9f8229e30b6deecfc154573b7b380e57a077ffb7d3a3e3416d29b4c1ed0bdf138edd3e3afd701706c9056cead46cc636e84caf9dbe77486cb2677b830026c998638f96721de4d7da2e3dcdefb8e6f13c9b013799d31fb7a36cbc8db3ce216a799708fa953a873070b7a17f863a257d9e21bbe6a44fed9ef55572689aa9c485c1b8b692c05ccf0397c4b979898c2671b866791012d4a171a186365c994f7c6e016bb5297532983f0b9c20fc33c0bdbb59e3737713cec3b671d8b8e8591eafda30d723a52e42d753b41917dc6dc57c317e66baceab7dbbee76118ccdb8f029c2e3c29f2c5f10a75d7cafc2ed21f0c7d7e28a755861011fc2c679400d02ac5dc60d2b0f739d9d28b9a93eeec5e669fac650eb9a9e29de7ae18fe93e042c5c78e9b1bf9defe1b0a1f7173ff332855eb9b2ce8b3feb54eb26555e703627ad85ed1d44ce3acd3875bed3cf3b9e0bb82a3e5a0d6d3d336825c0ff18f70724b4c927e877774d12662199b726e8fbf75f2afce9894dbe42bfd34c7a8c73a3ae8e84df3f149fef16f37248fce62a0c063a3dd3c682ce7bcb6b702e18cc2d7b0dafb84e7a0fc7206a94f9ee2e6e99c7d8f072016fb88b1bc5cfab3c1bc29fd02697d8ee5cc2c0d95ee1a9435f8e7187bf4dcd4318c44bcef5167407c1b4e7bd064d77f03ef3de3cefba8e4de177f75f0e25f7fa75ee43ea2fc779fb18ad51eb61c8f4c7ae8cb95af3afe4110a9d2ed48fd0e5e2147d2e16975e461b7717f9de310926751aa75cd393ce97f47fe4111f04745f4c18e7243debde33ef21e991b58813c6fa909785107f73fbfdd4716cc6193f2b7891a57b2056b1c9d63a7d1fa765e88799cc7fca75548b35003e7202da90de41e5b0aec9f389fb735bdb1fbf6aaf17c1f814b5e4de31753d57f65e7d7f058dd1d29814ef41f35ded7df89c98fc4ca9edbfe8370a1ba1b14fc5f300a778a54e4e6d4f5be2ff037c82613578fc276939febe3e18d4f8f07a60abd93a28b818aff74f5ba715eb192f701103a3f8ee06f16c4f9b92873396b9f5a97fed0f30eeaff2e973fe55853770c06a9c7fce99ceeaa7850da4b6b4c6ee8bd7a3b1fc2536c8265aa5e2bf8b3c669caff74e7fbf2cecd3e7b6e00f76fa8d4a6e56e06b5c4a7dc235bcc937ed6ec1d599c60e491c77d6563527d45e838ec04d26add7389778702bef44ca6d5ef4bde91cab536a1e69b9b718bf9b1b0d6c1a63a58996532b180bfaf3a05f69ccfd931623546236c2342acfd74bd2a76b8ec66dc05352f827d40f2d736f659f08f2b614f9057abf228f10b7c8d73cebec4b1d8f87e32837df20e7e5931f2c8efbe1f413e2d8ee315a250da6e3caf81690fbacc07009783d8607e5fca4db39f5a5ed1eea9cd96782b83af33309c6343e815e21050f85799c9edba6f1e8c21fbf155840eb7c407eecf6dae98f7f2d82a765e813d4b9c598630779107a26748b5eed82973066d886794663a88a66ee0eb4fd044e0449d36df392726c15c746501fefa34f68ac7bc29c66f13eb7f3e0e587ccbf276814db8cf745d71bc078dde15d75d1bf817729fedc3aade646e740e72c014d84015f175ccf83ae07f8ae6b93f56ce31dde6debc7c78c6bfe9d771f9997c7cd713bf207c748d77b23ac71097721f847f4dd895c96c25ea9e2d87bcdc07ddf2e63233d26fe79edd8e62ecac0cfe1fa1618ef651ec4144936fb3f4e0ff4838f4997c682de3e6a515bdc5987d003e16ec53831ccac0b5d934ef77119f91d1a977e857ef3186fd6e0072cfcf10e34e4d57159ee9bdb7bfce1d8e36d08750b3a9ef018674de8596371e0c591fbaee87ec1b8c277bf38d7789c63ffbbc8a581fb16b85b853d3e68cabcc3056e59b513f03e55dc971a8395187d5c5775dc6a6c5c3b594f9cc568d3b3500799fcaf59bbdc3ec3b357b01b984b0eed06d7903643bb21e8ddebcedebb7a390f05ef49658ee4ef2bf832e413ba5117e65a5732661ad79ef66c2df40a40ff4bc371784d9f01f6c87681fcad85eeffebfb7c4ffda1b961356363b6643d534c6f1471d63ccfb200bd51eb50179b509b2ee6250abeb17e82670fbccfc12e34120239da12739c831e5b6e1a8b60bcc3fe38163b74d7fbabf78373cc6a2676274ffc876562749a91ed1e06adc9326e792bd05ff50704f986c2265d4f21eb3f9c1bd4df4ea84fb705de29dbdac7c6e312751720270c75865a6e72e8c901de2e662beee60e97ea7d741d5cad7beb717fd8a359e2b2e19d25f623f5e3a85f4498aea1b48e808f3debd0b3beb1b0ad06fa06d8af18da309fbb3837b7217c1f38ba8eb23fd1d6ec05722971ef6414066b3e1fbafeb7bbed1cdfbfbe017a6f42ada65162960daff1aa6849157cb8cc16097dd35a6e3ac7ffd6f86ff067027e42b5b39a3ee627c587956b80821d5f873ef85be599f2be957d7541cf335239abfeb5e7fc9ecdc5f3754022bf638453bd5dbd632e8e89d11e8501b9d4bdf31a1db1ef8d13f89f90130ef448000354d8aa7595afa038a7a6a11fee511bafd430afdecbec14f87c1a5f07218936ae053acc9b31d4abef7ebe92abb0f7e1d3b5463eebfbbd208602de73f0b53683e347e6e93805af72f8fd7c57b4098b9c8ee0eb6bfbb606a9a22350e8917df4d7457e0efdf1f516fdfb538d9f5ebe03f89cc0872b5c8f9e5f0f1f3a9c057ea6860b3b4de386c80bddc9e33c6531c998c47db7c2dba0e596463e69890f1935ad7b2aff26e4421615eee8b6784f1abb0838da07d488ace46f06243408f8d053e9beceb67afd3a4e6ac4de2af7a6f359998351a6ce13e6e0ef78167abd48ac61a9f3c4318ac21835f3dd39cc8dd9f67aee02d7d9c2771fa8bf55b94f867dd3efc65c7b2fc1f7da85fd25f679771b672d8743e519c6a7c8269fe114bebb779ec59a813eff2f5e63c27c9461755ded69ac33f7db1bc9dee3bb3bc59967784cf3aea8975b34061a34a43cad46b38cfa08cada61bc06cd636893ec63cae26fc4b7d3711ce3fe1af45da8ff310fb06e45e303e88fc940dff22b325cd06160f901e06b0ba74f9f2fefebe68ba57b5fcabe796e2c8366e712437d6fb2d5cc4975afd1b8c5fa4a2aba2ee0db00762f776cc4988cbae65ebf3eeaf0e67a7f9bfb95ba6bf9064986e57bd3e693a34d98c61949a3cd64ebf8fcb3105b7dc2fa346607c82f4d211f3f28f7d5a4dccf9b973246177a71a216eb5102fdfe5e39d6029357d5bb28d7ff32e59faff78911cb71d59f2dc7c39fe73b35c666b401fcc4afd077ad289b40be3421b39bf546ea73be03970f687b5cca7e3c583b7abd6bf67966c3d878bd97a21772f3a2e140867c36f7cb999d64ef7156f600c68aaeb4ce16c499b781eb0483f29eab54bef635ad1b5bbcdf53c7919ff9c0dfa7382fb067bae91de37feac0de2acfd7bd302f87b8ef5d16ddb41c9be61c8e8c36b58df768c182ed7d9bcaf710f81334f7916294f547176b11a3f79ecedf95c7de32912f10be775abe88580b3da72cdd5bbb7043c4b5b195d7cfa9d86f554d22f0033d56db47cc8ee1ad6750cf17f301681b23f17d3d37ee59a72a0e537c5e7dade553fb5e2bef2036903f4418637d0f8fad5dff7f810dee9afbd7dcd4e2f8c4e7adb3a165fd4b38f37ade21c45a9fe1893ceb1b18db78e2a53f674df3653a1b5b41733cf0d7337a169c5f9e9f4e2fcfa85f3683dcc0ec10e60fcb45df6dc4fd971fa3bcb35904ee36f19dc3dce87c8d009b95fe1de71dc8798d0c72895b1e89f3c787f13be1f7c31e78cfcde781799174ceed8424cfbf17d731bc17d418b07eb1bc1acf157135afbb6bf78b9cebe37ee72deda7cab5219fe562afdc8ce3352a7c770a3e41b9b7c0a7a3d71e2e73a8781fef81ae95d860f858d0c6412d5435377083c3eeeab804ae67f0df697cfd9e59af3caf5193ff2be68a716f48711fe61ddb9f73ffbc17dfbfc809c663f6ebbd128c335c331f700eb69283c855c0aff9fdf91dd7e464f51c7e85d699f505f31f6863e2f11d7b41c7d578dffad53f231f971047028e0fded10bb353db4aef79fddc17b53d717f5ec7d830ff51b72ea02fa7ba2ed4b9f883715d3efce62a32ce3c8fbf8b1bedf47dc56b17fab1aa393a38bf702cbfd93f0735193a472406cdb67103308c7f384f9afd539b93abd333807acfbf9bc3799339e20a5eb87f396fa3ed6bde4519692c7c6beff19a08e0fb380764b9f6a256021a222a564f5c5f49d6d985dda71370f0da05be2876d69a7bcf98b635e05fdbe4a3ef0e427a66e46a8f60a7057506ac35199141d6cef313f432b3312d0bbda5f7bde01f483941c839e978a2741c1ffc9943bfcd75e0f60e1b87e0ffa4a1ed3a0bdf5d877edb061e540b3936e53ae3899fd77bac25ac2b3e61d44adb45bf8685ff1f62dd81d7c50bfe40af3f486311f3839fc31c18e402f0fb2aaf81fa9e91f3aaa8d3f95c0784dbd01aff1c7c2cd4363fefa356f29ed8746d313f2d18bf63bd22853ab43e3fcc72255eb24bec94adc3e569d485d8bc32ceea35b4f72d63441de65dd648c55c218d1dd15fd3702f138d46db53c7e93efe3d5c994f73e39cc6ad97e570f5b81cd6eaf6495ae577de23e5b50c790f56f61eb7cbe92ecedbc7c48078b4c3d7e8ab8ae9b4c9a55c8f18cfe93f53aec57abd7cf6d98cce813b8a20075e62749de72795bf78bb085e0e73c0ca17b82aac9dda12e65037474f8ce390fa97af619036a6fea4aadfcbee21ec57b009a25da67bcba373699cd7de4ae6c416bea77c8edb3fecb3f0f3874300da24fbe54f0d77c09df645ea4f16f41c19d7089da37bfabd392611d6c03af4f97ad168d95dd341e273576a5ed6f93fe519a99cfdc25cdcb9cec15eb13eee59796f4f58a3ba39085eea383ad567a8cbd718aa9d831cfb755c42f91dae152cdfebc63c61af275eb3f49f7f6fad88fa9d9539d2e6879467c9433f81d83c5ecb397df65c7a9dcd3f1e373fff67d57d59c4fcce6d5e3761ddebb8c9743e42cde70adf49f559d1e7b8671c6acec2d9d66beab3bcebf396db6c765e9febf0c3306faf2b33768af3f2b41a5975d72f38614ff59fb1d6a1edad5f57ea79d0be60ed62b9bbf5dd89d169469bc90f6e334a1c0db7ffb5cfc33886e1fe5150ffdcc5e78a7b293ca96c3d5e8f81b4ebbdcc49956b5df89960cf8b6bf7747e6b95e70ecf4df788f97a5d2e44ddab3a7d5f5817e96fd4a3d5f759e52efd43fbac8991b5e7eb7b9def588949cbcfea78d3190e8d248d62fe1ee97ed6e4591a0b6a67f24acf4704f17db7cd72718de57bcb6b804e667f00b959d85b107f88f751e71871e24930c843bfdd7897f88de07d55ce135dce4b7a5eb451956b5e3ba32bdce825efe8210c92f29d68c67a0d9f46c7350d5c12212703cc61a13d22bda3c6b2a8f1f56ae60aaf5bcd0917f534e97d7e39f6b8196f06349e7e11f2c37a7e27bc367dd641627b5f71f36b17b0ba67c92b8b79dcf7ecb1d41ecac83eea9a0479fb12c03b8d560f1a6c1bdf43bad824adcc298b55caf1a89c22ba3c88e6fdb235c4b8b9bd6011b85bddfc8fba9a35d86d48fbe81fb45fbc47f4860d4b8f915dbcbbbd63bb24eabb691ddf8ef059e69be11912d9d625e97d1d688c736d2f24769a47ad98711ab0feaaa25f3a4d9c1ed6adb1d787f572db804360f8f80ae69cdabbe6bc457db5196a10fa156e5bb41f53a623cfea3a61b75ded21bbf23c4e77dfe1f3f38ff954dab55a79474c03e8c4319f849dabc841d4208dd06f5e6a62fd9fb83e9ff8bb527bd701833df543168b2bf3bf199b71e699917d3e2686b71e4a71a0d6ce8ada1137cf34616db167ac727dd46037d661b044be897abbcaaff91fc7bea679817e17d6e6b4f65f77cdbab3ac780ea7d74c137b49e38d87e1f3d3be1c033daf98ae9fb69ea3e5cdc0fcb8aa818df7e4b8c3e7a8e51d30a6106d34f32beb9fa9f27df51de059ce342066e363821c1b05d7a3ee1d296bb5f65dddf53cea5c16ff2787a132ae51b75c83a369a19fa5ad634967e70d1d7a5c2be57ea3ebc59d35279e457e4ebcc174e2697148db79301e28782a16efd7d570d05f61780b15cbf5cc7eceae71aac791ffd7e2153ec7df8807d477763bde11fc86bbf9ec189696d79f6b7d9222d6bffa3e6bf71abf7e5b7d4eddf7057f43fa6e1adaaec0abcf9e4bae6f28df2dd762a5bf1ef890c4b5ba15fd449d1ea0a168eeb173a32de4305363d495b5c8753ca298cbf91d3efb9aba156263f0f97a78fef23c7bf13c823fa5d81ddd3b60e792770ae1ccc3b3baf05b0adb792ace03d7f6f689dddbbde650f3420decd60b3c2bc38d1de63ed768582f13c3ba600f1f3f4f15ce2ac5b7947a56d919cb712df88c60438e453edd2ef4ff94f57812e745af6da6d865f0e39e9f207fab9f53d0ad3ed5f873748d703c0dfa2f5e89a3e47e8b70dd3d3ee78d3858cda7062fdb3813eb087fec1f737f1df71360883bfc5e95b898f91bfb8add92e3072d9635307aba7341f89e70c677b538971bb5fea76d60f434fed6ba5843a3cc3ac5f6b93db43a29f426b7c627e019eba651ddb30553792ddda8bd6ab5bc84f38c7306d6e4adcab5c27dbb61aeae6dad3daed64594bc566d4f12d79905df8cf9637558c96efb3332da9f73e83514d7b29243e3d7e43e6577afdaa31ace4d91d3b89e77f50fd7bcbc4f67e3edc23faf3dc6c953e92b2f6d0c5dab7ec1376b9cb95e7e4daf7cfb98d824a376006299aec5f634ab0163cdf2326b996d976116c31a5dcd28eb34167e08b9de0a2614e75efb3d11d75b5c03f351e5d834effa2dafe731e1bd0d65ee15eb6cb5be0bf482cf7e38d669c5798f82ae53db23c7d6fd0fbe16eb7da236499a4c6f6f25be9b5aff8bc6edf899f7adf0fe341c88cab9047fa8efb0f1f6d173157b8e5c5203320fc647e0e1e9af795f1afd03da770b3fd9260cf7eaf4c7bbd09e2d17b69787d327fc998dda68f3ac6300d6c32617b6afe839da66317f3334cebb302324a6f7f1cfd45ee551eb69b980dead4133e99abba46bb622e361935895dee1cf79e05dc2297249c51b0f3975a626f5d7f2854d6d21f4e9ae011f62774ec03d885878e2f4213e3f26c16429ea0fc6884f6b461970622de396d9667c751791c34d837912f74836c09af677793974b1e025ee93691898c778e3f23afe552e8a12e77a5a7ee488b52bd678069c668ca7ceecd4d56c311fd0ced97d598ca2c977b3b30fed90b6974d8bcde5b14e31563d0ef2bf31a78051f807fd901adfa93e073407acca04fc28e8d1d3610afe3f3bacb5c3dc1ffa47ec7039ff3f847fd75e97bdb71f3ca6bd7d5d17fd9e67e085017dc5b05bf88a37ee537e97ddb7f0e7efeb7b7efac1b462aeec5ff21ef7d7a8fff11b1aadda5a49cb6ccf32ef14b5060d8ea70f9a9d346e8d77a1f120fdfba3d510fbaa904b87daa9f7ad5c87e39c58551cae64e36276df49911f56f7029e2391019cd45faf2b739bf4dd537cd91e47864b12e0cb3049bc6a7f45addd2eb2cfe928ebe461de21d1aae9cdf2ce3a32c697513321f35567380fc274668cf345603646cd0109332f0ffdf66738edf423bbb39afbe79fef453f6887e5863b8546d5ffdfd8d5d237beafee095c590d862f42fe181dfe54c6f40b380a15cf2c60296ab56a900fb2e02492311edabe9a12935af400cf540e906fe9b809eb40a757a6e3a9d47f4e87c3146d3ae3a081b5d3acd36397b9520addb7e91dcfa49da3f13ef4ad5cc5e95ec1c8c8b5c0e9f2a4efe91e90d83ea773a332f737e3fadf99077efe7806692c98fe10c69f124eb4b0d575f5c9b2cffe8973c8c2cf87c89f6c84c1a011331e528e3975ec413a37f6d8f7397ddac674cfdbe76392af978bcc32e6c1f833cec829916b6a429d75bb7433ec450c6d8fc4c08fd739a07ee96cc96af5c0472e7ce758e064edce7076d9dee02e13fb53b0aeca712d3a4e09d444e9bcde5c17c0a982fcd4f3cd7a3925e3b7f7559b737c51bb78655fbf1c90d35f3f86512ecd7f398ecd0be7aa5d47b999467de0b446ed2f2167c879799007a493b17887d52c4f4becc5e7fab0e7dd7cd526f1657e08bbed462cd4d9872bf3b280f383de03621d692c73ffdc08817b14f9c4a2cccb01b3bff13e19d74aa14556f40be35890538cc56e9ce331cedbe2bdbba13f4e93604cae7fe704f7ff989a9785dd6946f66459f0fc15fce10fc85dd6f71af4ffc27ad98b6b1163c790718c590d210e856708ed47766de827a26bf614424dabfdf9e121d7f0286367dbacc4e8e8d62edfb7ea3aabcb9dd5d462e5fc7d15bf2be22e7e2ea8cffeec005fbef38c5cd2153edde7fd3230eafb9bcb5cd5380a8cf572347dca017321d6189173ff2af641d2b556ce3ae5192e89411a73635957c7d4e732ed714a6dc8cbf3ee668d46d41f107e7f85ef5bd9d3686bb5780df63eb5fa2cd778c0efb6f5b579fbebd8936f8cfd568e5ac7d5a2bb9e7a1efe090681f76fc07954d7cbf82f3fe32909c6dbdbfe03629ebeb7479ffe688f2e8afd89ba77e235fc6667a7ced36ffb6457e655e1d42b624c0773e3f86eafbfaf7a0c9dc80165774ebfefc3a5e379e06e475933fde8a6f25ad2dc1fb43ca627eaeb0297877f316b78a9d25db851f9f7aa764af5098abe733a4757ae9ff8edcbc2265925aea8e33e29b17c91faeeff49bd15162fc0bb8575f6ef9e0bd7fddf7f7a9d65a0fb730955fead2aef1e8de9a12730de8c89630fdad4b6849905bc7d51e035985ec12e5a99a7c8b6a87fb50afdf0182377268c0d72bee8f730ce3fb7922b4f8c7447cfc5c8b77e85c10b70b0ccb34e63d13553a79b48da3003ea2f6613eaa76fd81840cf60442a63bf443970ccadc3208418ceb1c33c321acccf2b9f05fda55d336e4d700c53c897a798f31e188bc0c5f899546bc6bf95dfd163563f69ec1d196732da24699c3d94385fabb19cdbbafec676f17e865db2e41ca4e0dbf5590d5fe6b9011f92c57507f0fba7a68c096435ffa25ed75d1f8a35335deee65db311e5e62509a057ee52c4527d3a66e4efc37a06e72ee5f30dbc6f1cbbc874308073678f3c2e8516bc90c35863ee09d656aaff3de76d90e662cdc759aedfeebcd0d840cd1c733fc77ce70dac3d628e309e13300815be08754f8ef791d126a3cd00f0b9b1312b7429e6c6f918654c4fa1b04b7aff236a0d2adc80c85f6ce5e12c3c68e3b9fef8186f309e2b34c8bae65702ebd8bb88cf4fe30b6a3bc3821396733062fd2a6e797b4dcda8b5b0c9e7a26b6e22835ecfdacc7d72a0fb670ef5a7e418199365dc1f007f2edd1fa395f91206934d9c9bd803ccf3df524c27da12eb5fc5ce00efabd1d987d3766b1e0c0e12d6b66e2d1a9d3ce9c21e607536a8cf313cf18cf378b29c4239c7a395e9511fbe660f97fd291b786fdba1ff04b988b8e59d6278072fbc760863c53a1a705bd33d053957368fc085c0b9ab41db7e6a7e462db3cd38a76bf67a91ebd9deb4056c0e8a31c2ff9f32c1de94efd0abf230697d34dc0f0206a2b85f9dffc3f6631bf64781e1e07bae2b6aa4bd687313bc6e50e96fbf5abfbfeb3c9778da908bb18ad991fdcab5c801c4fb216bb9dbde564f5f2fb55c0622e67eb6a5e318759fce37b0153a5eedba9e239603d5e52235fc2f1c3ff207f10fc3feaea39a6766dc480cab7c5ad6f8ecd7749ac107536ab53ca7aeab77d4c6b66aafa7dce73e6698a2b4a2a5a5f321714e4b0db5c4b0f26895c60ef9427e9e0cf7673035cda44f7d63b3815aa7c02d0778fff2dc67d821a679226089c046b27c1c60139200b5b2e659a71965eec5e9a6ac9748ef67d2ebd17374b43227a00b426d9d9192b9b12f7082d0fbb81937462bf34dbe3ee8e2ade97ea7f64db0ab2beabb700e29f03f7bcde39ca49ade843a9e16b17fe64e8e162db6e74ff2dcb0ce0d013f277174eb70880586bf5bede7add113a26772710e01cf35bb06f87b19600e746beb7b3d0ef8fea176a85fbff0ac25a6066c25db87cd2fcc93a8f3233eb76d5da60ad720dbf7d7f66ea59eaee79ea4d7b98209c76b09386f769e5dc379e377b876c30f99aba20e73c46dd69db574bc47b916df11af5c8b5362b6fb8a36d39dd86f792fd5da3f0173859ad538dfa34cc062ddd476c23fe573955cf615ee8252bf7b1f5a7aee1b612d720eb935c745f3eb436c265c4337463c57d83c69b024d21a54ecbb72bf5acc06fa073cd7ce7aa38c7417d9aec7f6b390db2be7742462d7eee16cd77317c9f606eba0779e9b8f47c06bd0181d392f2037a819c71d395fe8378c84755d391fefc6d4c2b83acda40b359b55d4f20e617face3ca62fa633076a683a63d5b0798dfad9e8ba32eefb12d31ad41d7011df1087992400b869ec38ce7a36acf6bf5af9a71b4a1b6b21df1390dba0386b575636755c488b19385fbeacfc8616e9c9ba1ed5d444c4fd01da01dee7532e5e77f470639283fdbcf837163ca7d5322d842ebb4c218d893efbb718fb392534ebc56236a9c8f73c3da871ee7c33aad02bb9d8cb2f0ffc7de9bb527ca6cefc31fe83dd882a19f70188c20444dab91e94c201122a84f3be2a77faf5aab0a0a28d4a47b4fbffd3fc8757527ca50c3aa35dcebbe8fe1ca8e3d7959e540c6bce32b727795e7de307f5c4e333ba6b539a6474dbf63af4d838c07e47214ce9788a34cdf06c8b1bbad703095da442c26e3fac3ed009ea943b9c18a7eee32272ae2636bd8cd12ab2ce49fabdce3a68ed59773db5fe8bba77acc946f85d947ecab816b157f2b7b2e2a7e613b9f17f38d1d6ab7dcea7b97715c112fad38deaeb6980ef830611fa5fbd0c45c9542d61e59a37e96ee22037817d9ff0fbe7e4a86b86fc85ec0fd5dfe8eeca5b1e76aa0dbe7f6ac42679f5d2370f413fb7728ab7be223b8ed7afc105fbe35b82f1f8f66df4f3d17fb7399fe39fd4eeae75a16187ae7cdd14fa621c5ef33ade04ef35c3f5e3867e46fb72b3c5805074191b3e07a6a1db9dc4feeacc02395f1af2837d9e4512dce151176a8768f3a561338ed3ce2d363bd9be9b38afb43ba887566f1e135dda7ff2b7ba0b676d2c0c0fce0b0e89f6dd1782cf38e71609c13cf19ff2af942d9389fc8b99f227ebbe827d999ba0ae3db388b669539aaf26dac91a3c4914e4998d9ab886247614fd0ffcfb374bd184c4333ed1cfc4ccda78efeb9a8e9ab96ef5ee1aefe6336f2dfb686c8feee8df2f1f328377b9d251b13d3b0886d93178e9a835639f1030623ccd5896aa4024e7972860614b34475f5a95d1c07a3e6737375abdd49b027634f1e4b816b13bb770c9353c985a117bee6d5b557ff7c6bde8be39ab0851c5ced6bf9c5d03fbdaebd8f9c3399839ce78c2863822276a73d9af57d7d1d83c662f2aa0d53e270a0edde6771555beb9ef308f9f7b661e73efc3b8c5bd72267423ae3b5b8525ebf346ee19b6c5e0ff6e39dd8fb9706af667a11f13600a6dd51d62dba21974227a5f81ce062ef1e03f6bdb27edde0bbfef0cab1ad6ab438fae9cdd1f305d5227defc27c1f87b9f677e48e3ba681f6c4ef6963cf7dfa87a98f53e87b198c8fa61177a28176794d1e8fa03dd2536adcd84a1a76a71bcfb5a4307f3c8f64b3e33f871dffd34afdcf693ccabccee832effa86b51ac9fee7e873fc3972e6d298ea444ed6a0f1c4e1a2a16f46f212e533903b47b039c6f6821cdccbe3c21d5f609d5dfad2f8cd6f7d5ff29ec37cf3b7d9d73e0343bf84f9d3dfc3fca95d4b84dffbd5b541c6848cfd3632d238e893d8b3bf330dfb40f7705ef04d8bb1b55c3fb4882fb5bc0ed86ec34ec37ef93b9e1795bb26afc357e546a5bcace4bca9ae53290efbb7b957590c28e0552cdfe353c861c59e8962ea059f91f61f9e0d79edd6f529c4dba7ea2fdf4d2f93824bb2d099ee04726753b93fc69a87856c2b61bedc0aea9898532fb409954e20b1b86b1afb528772d74a71a89f92ab5ce67d290e7b77fa8becde62de2a1a5b93eb119f489716ae958639ecc76568a8bb77c7871a36e039b0a655d879d320d7892ebe6b1ecc3ed5c824e76066ef86ae760c066986f96372b68e8f6136df2fd6a3a3ef8ee4a14ceea9fc1d4a376b526c2e569e5bf6d3e318347a80d867379e3b867728b8781dfdd4f42b29878e63e73ed4662a7b4da465de583fb51ea90fd0336cf4a7ee5301af601d3ffce11b7ac7a3da7f641dddd1bb45deb1c67d18c7023ecb5fbedbccd9420d8dfa9a85bf7511d47a7afa9af679605e7ac6b424d283df99a66196cab4c67983c71fdf1375fa604c447e3ef1b7f277aeb6efca711c7660bd808e65756c2acf49bf2bf68b50db515d0517e8536218992e39574c03f6f4f2856acd604df74a4eb6c4c9eac5f3129bcbfe8d79acca7aa17ed146300ed02357f4d5cc2b369ef6fef05af60ada53c6632ea719d584c579465bf40ff0370ce2038ed3463fa478bf00f71e3e13f6d44f899fbaaef723e14f202b3ddf191f03c7b6838cf3bd0167097a19cab0d7c4d009b83b602c603f65142f49df45c4dbd1c6a5eee3b3823603bfd7dbf80805fbf7e2bb9326a7826c2b57f41eb1be6ce897996c2b1c575ffb3aff77f3edb03e43d0a423cf477caf4aeff7126a2e99be82dc4c6b7f779db7a7b5afbb522fa135fdd6be40d61b47c65d9447ff2d2da91a6653b4aea3b2e6516863b5d60e847cae6c5caf62023ed87833bb505b67dfd43a28f674ec17f508d84b5fd726a89c075f3983d81efe73e710d6aff7969f623fc49ba3ae168e0f3118b936e444e6240e57bbbe33296d2cf1c73a60db851c33c21a27ed13bec66579b3bec9385fdb6b54656d938dd7550eabfbf71aed8b27beeb1d5cb695f393ad77c1398e3f656c89e7ca3dda20e51943fd9ab67d21ea05bfd9f72df82e7c8fec415e172a16e6d45aec2aeb4fa55c43d80f4e9ea36d5caef581576cae7e4a585fc2b5deeeafcd393b8f0bbe931fa5ef04be2c9e8978161d6ed95fbc37f81b3f40efb9d5960af031f823eec9e6f61d3fa6d0dfff2d2c612b4fda1fe696a07acb642ce8b944f691782d4d73cf512e1ead1db4eb35349ef94360b3eee9f52e7fa80d1da62ae35435d1afd3a88f4acf01e613b66312904ba1c24d4a627bb5128b513d7bf4d3ae70fb71bac1e05fbe9567e9a6c29fd9fe3c1fb51889f624cd85b1c04d3b57d88976eedfeff4a07336ef9fc63b80ef363ebddb2ce76d1fdad6449bf6b568efb6daf556de5888c72abcdd6e97f1d4d178ad8f3180381e6ed7da425b5e7eb71923b4ad3bca1b476316711f098d4bd663c84531fcc6cb2ddfe83be36097f977d1fb733e65cb185435b70b3ceecdfdc763e540a7a5ba07a1979cf84bdcfb735896166e85125784f6b89e13b0df566373325706d3790b3687c6ccfcde20314c288d4fef73c641346960309adf85ef91f849b03f8571ee6f71bcc0cff3e33f17ab46fdc51bfe40898f4aaa987886afbd855b2b7dc3d5adf35fccddf5ff7c81fb7d811b671fbfffff77cfaa3266f8429ee6c373a62b0e9b28cad7dcc40bdfa84523776a27cde65df0a5c655ad71e53271ad7482fa60a95fc6395ccda0916ffeba6f4831bc150dbf22075e89c359ac5fe140a4ef78a868cb313fee0b39c5618ff61988f38875ffecc2f2b4c35ef5d9c5ebb08a59adfa9d14c3f1867a0b2c371338e97a81dae432f639da87225f5be3b1839f7b7d63f49584fb918da52befd37777ac55b107052eb5892114e7b9bf7c0e7e37c6c5efb15c36e4a6e9354093937b0e818db976ee71312dd98fd7e2d906175a3b67641977b6f344de8fbffe024fe47f17dfe17de7d0cd3384fd6dde5c47c35e911369e1a4ff279ddbd7ce8c2ff8e1be6c77eeacc5f1da765c9eeaaa4e9b98ff7916b7fae8f8ef65638e5ab5f158cf5285ebff5b758d1a3eae79665ed53dbe4befee060eee7eddbfb63e377a0e7c271f4dec75932bbb89adbc66dfbfa08d55cc3ddcf71e0ecee633afdbb409055a5ec0c93e4e03c3bb8aab436c425957655885366c24f4decfd38eef5a78760be369257d1fdce6a468f85e32603bc0571a66708d0db1733eebebd6d564984db12f7b50fa06ae6c1e845ad0c235d7f60cf803f77adbd07b5ecfad462caf6a4cb13736afe80b2c5f13ede23be78cee775ac369f5d9d5db3d387c9deb2b6b1df21b5b11377c4bcf273c775bdd057d8762ff509b575fd7b57137a478817cf539fa70718bbe44dce8a56fe9a72b9f455713a8b9c0da55e01a2fbdd5ae989799f6e125ca8af61dcb450e84aca7757b6f516d1f5fcfe5e3bdd85ab81e470f8a181a9e89f85315bd9ae7cdd2e916b84ed11a8adaaeff7147cf2aef7bde7d5ed83bcad3ff84d8dbde6939efa67b2f5377c30ced01687822a6ea6b1c39e5fafc9e5d2c7b531af7e670b894ef7eac8559d8965ffc1891f848361b31dabbb8ee57e153f2807349fd60f85356331cf6b40fd046d6d5cfc2aebded96a6adaea83dfbcbd4d515dab2d121c8ec07f0096eaf7bb47f929afb8ebe7ad1d55591f3e93de5c4762e28fec095ed60a4776a76d30e46758e1cee871bbb03fc9bc6b313d75a97fb08efc13029f7f44cd76c1a899d3f17bda78d6f3f9edd4b1f3553edc733e043732d85beafcfcd92fe7df9d1e4f6cc40fbdc382be278b96dfe387f868c3ff1577bfa87df435b81ff8f3fbc84cedd9aaddbd516cf22c4eebb72bd9740f49ef47cc9d283e79c77ef80b7444c26be33eb75236b50a1efdc784f415ee4e9f8926c966f88575b7a0ef1dde314f2039847845a7450f069d2fa61ef54d866c60f334c9efe1edebde7a434a479d3aa2f4d626a91feef3d7a6ec89f50c32103e635e84e37be6bb6d5dfe93b435e1bee3f5c4f8fb3b4791ed5718461a61f4259a7f622bee3dc415f0575dea1d704f005341fc4b8e32f8cff391a586dbd9f9d702df68f2b6321693bcf490f0566bb18dfeb3dc124ce991be778e1283f711d4c87c4af2abfdfda0b25c463dc381b59aea792e3813949f7c49f137329f4c46752e35db83e58d63305761cb531e9dc8b78a3f9f1a4eba2ad8f51575b70b2f51fe6ab82eff3e17681c761e3cae6ce7c3689ad27e3873e07f4729c78ec10f9ddb9ce9df18db115e3811ad710d73b713cec5d28cf192fc7656a8f64c0c316ebe3cadac471c0781ff7e501b87a28172c39132116043ceef5758acfe2c70be7b4717bd6b3e728d04357e06e8df4873fd3b23053f7a631de79eef842fc58c6851164711a666987f1869177287575d99c033f0772c51a6a4ef3244c0feb0476d048d33091b6beac1cc3acad671f7fd83bb7f54b4545af0bcd2b703aff2c5fc8632a8b9857806b14d9fe6bfb833e1bed9d871a0be4ef2bbfbfa5135839aff46dd08b4373358e830cfa74b7419676168ebe5bb8db94f8f5618fce0fe52d61b6fa3b67627b0f3ee4d4290706cd5bba63e05d475b7c4f7f7d03eff507706dc8edfd877addbe731e49c17a9a7bcef897ef4cda7b4a1ab60171d5ee0572ff497bfc73dd77a2fbf718e2ba273ee927f549599fe586ad79965b78011f7b82f6b08cd7fee27dafd75ce033dfb449f853c4a718e3ad6ec678dc4f511ba1782c2156b731466d75cef63debc93ae519b63f46e9e399f6df7c8c884f41fc5fecc7f861d2bf9b83ce5f57ee73ddffe5c76660ddfc0cce29f81f640e322b798a5d7972a07918f2ff0dcdd590f9637b88f86624ce86fee1175dfdbc79e6b7ea95d5df6947cf29323eab4287d9b71ff361863acc8dbea11bf769d65f3adfca27973d030d5c6bd167fc1d6ceb307f5cce1ce9c47a8b195f5c98d9e7c849739ff6a0be3638359ff6c809a881ef1f742de0e60cb21078318ae785ef03ffc2a9d913dba1f636ace05883ae75a1dc55529020c76768a81df27ce43c08062bf48b33d09eda06d9741b65e92a72f45d855b723d6ebceb70a6ad40fb0af456694fd5ac5a27c43845ef109f1bf4ff06aba5efc6dbb08bbceb41d7dafa720abcf4e4bdcc5e5cf08bd26baf7ce8635415d3b01f162e992b656d0ec692b7a6fa01c837bf158d0959ff5677b2bc51eb83b58a3c839823a3e37e899c33de0fcfcc38cce6d8df0de3378e831e39bfc97c99e4f93b9161e7615ed74cc667093295f28622773c7040f6b4bde73e514e8de9d6cf7c1207e2d95c6845e07aa2cfb0227e69643c16bcfa85ee87a1e6e1ef9f4d70e6f9f6e365d823b6e144fedd817f5f5a7861fac457f3d3703d81e782791c8c8fe6204aa1d738013d02b2073e1739fada81a11e175dfb24d2d62db449b977673d99c4678d323b8ff4e9117cdf8257a71d2f44f753ea633fd8f55eb2624f6a366a2000dfff11f4e09df407c50cb4d5f7210f3eaf633dfbd06f9dfaa8852fc05bdf65e7c933f5295e92e64dd9de9a1e51fb15f70772640ad64e2ba6e8f1086707f605c2fcd0b314ec17f17d0a1b6150ceb8daba6bb3e3c44e78ce7455e00061edc37d12df89b601e54525fbadc28d0afb426b3d3bf91c1ef539ca1c5e03df4af3dcb3d5aec8bfc9932267f79a93b3728e67e5db6ee922769cf835cccfb9195bd7fc97f44eff85cce973202b452f26b1c70b779a62dfb6b21ecad8538036086cd8d5e720e3cdbe4fc62894e363e49c5726d3149ab19cd2f818aeadd4eb4e77ad58391c6be435739bfb117b1431f7f095389cf96974de8afa6ba55fec0ebf0ff42065fdc2afdb42b7ec59bdd75f62ba08abfbdea1bcf74dfcc84ceb7a2ee8a040aef77da6819f25c4b588c7ebb63d116182c5d76af5b5b8cf5ce1ffba6d93be6b23c4f69fcb79775b7b20ee9eafda19208ee5ef587337fcdfaff9b382df55620c898b3172418c215d89310c7f1b64e8df5dc1fddc1127d29862c6628ab930a6f07bad31c5b57e80f6fc8830e73eaae6dcf3b69c7bfbf8de71c68e7dd75afb33ec5f5e5cd173ae6a237834b7c8fc9138f75de4a9062e13c8ab29c535c999023526ac3f65b51ad39aab31adf1bcf2eeaa31e1bc52ad107a2e52dded0f3f578afacf2859edb8f36ae35cb4a85667dd38173dbae3fc72a1f7da39efcc411407d4075cc8ca31023e731bf279a6d147ac23dc13f87063df98a6fe759c7381779842cc503b338af3bd3c87ee785ecd37488c6596bcf5d4d65c1d5376cff598e1805afb30eb3f856e31e870a69407665c9ccb51365f7a999d068051b365cac9f035fb49f7692b07c19d79985263b9e01dff0cbaf6ceef517d2dc34a7de7e14fd87a3217a839e19c59ccd7f5c8bb43bc0aba16c0135d8dfb18efed7def12ca8f4bd408a3e709cd39d3b384c59cdb603dee90331af5d04471d71d39719e9398d6427fefecd28e61467c397b356de2718bfbdc5a7ff8f37834f52826fb8e721a80bf44b55aff71c7b3507edb7dfa3ec7f9b8cedd2a9cef9b3d71a07701da7556ea3953857255ddb013fc3e009f6c56d7859e405d1cf96aa1be77573da7b517027e5a7d01d1f7c41ce471648c3778b64d3f46587748dd0be459c9b98f7932c8f992bf6baa3867764f2ef146ed929b63570ea1fec09d43f0ff17962796bd03ab4313bbe2ca238635f8f08539fd1be3c5fb2a39edfdb21f3b2fb382ef868cc981fa3e627f473857909ba07c3610c79f82eef8b2002c13cd43d0dc0dc3e8b6f5b6c0babfb2aeae9dc914ab503db3d6e3ed7b56f025e7be61e7be33ed737fbbb9b730dfe82d4319ea6dab85e367be6b5d86346e008eba9946314a29689d9a06e322e77507053fe5f3727d1077e8addf35df58c7bcb1160b6daaf0137236f5b30d9eebdafdcd5e455f2d1f21d6a03ad62d18b8fa0fc5ec131f0dec3a7dae328770c7bbc0679fc15fa6cf53d651aebf43b45938e7d4ec2d63bc469ffae0f79de9acef8f3c3bcb4b501c37dc7f94282d9c28577efec0faa8ff786b62f3777f2a96c57743ee818eef9ae7d2c7bea796029fcdcbb936ef9debdf8e01c107233e0b9fa39995be405b2eafe66b907556f51f6ef6b3b470aa546b2b80691932ccacade5a041be9e2a2fb7eaaec0634d6c9b0d1cc0b55aebda77efc41f7f17df8df769e3ebba2cdc6d8307a3dadf4262427bcf70d4af54dfa5f619d06b5f38911462bfe00fccd1d8459dfaa58203ab68f9cea856d485c44b2160811e8a9e1be03c7727500f0a33fb82fa562c9f07f1257fadd7a03b4dd977403faac89391cf5b29ada3147d62e44ce0f4defe36fb34270c3ac17896442ef0cdc791911efcbc3867b208623c560798165a57c18cea9aa1ee31399b12df21314f7a8c5ce474071c2de42c25c0d2f2cf7037b66d3d3dcefbeacbdbbd387bc3fe180b71a3705ee41477fd571d9bdb9a3fb8514fa73dcd3b116614f3cf132effdca8b3df81c39fd7b04d93821fa48e71f2ed26c6c9b7af629c589cbf5b38f3a5e758c0d91f522c318de9611ec2bcac4f2d06d34e3818fd18e66a95f3b3236dbdae750c65358b7aea9c7c6f2e8ff385ab7586727a09bb761ae68fe7d767af35f742d6bfd32df8e5f1dd584f2b7d2eb7672e7fd238e735d178ededa1efae302e46ec73ad2785b73577e360250e072b0970b0d2ff4d1cecbc92931bdf8183ad9d3564af09b0ed376c63a125af1d50938def352d71b44c038dd697b6610ef5d68ac6fc5ba52e0b36b2d0150a9c741d19cb65d89d027fa607d7e2eff570b746fd77edda2cbda707a418cfb2b649b1ecdfc148309dfbdb1829be566a29667ffbf6d679005c21395f168eaf5ced2328ecf6f77a0323437dc37d1ddedb27731dcf5c3cdf538d1756b037f553e274519be445b08718eed55f5bc780f51316b5c8d67cd221004ca708dfbbe37aa2ae7246fe60b8be17fd94508d14163f95dc9bb3d55fe6a0d38ac11d66dbe3c27928f4195e664fbf04fe5468269aea563409f9bea8c7bf5f2a3e45e19f5de8f817fecd30d1e66196ae7dd9cec31c6bbc8871c09c68983fad3d67bab2f2d3d262dc2c33aa8bda8b1897d0bae2c3e8e3143808cbb368e5bb7e1a00b6c53c048efa63e19c77de4c39865978f49d87bd6d8f8ebea17e86b9eafa8e799c65baecd9146bd25367bee3139ffae0c9f3e3543e1fbd4cdfb91d8ad11f8c8e858f2c17efcadb31782f9e6bde37ec8ee7a43b2ea7f9054c3ffb7bb3173430d20bf072bbc01fba0d33db0a1c29f58d348e0c7b27e89ffd4e8ff4d24a7c112705f13ff285a31fa25e9c2d5c2b9d39d21ef8d6dd691a0c5614d70af54b585fa58ea70dbd59be3b06ec0ee87512df9e9c95cdeba888d7077dcccf409612729e523d5cca092bc5e1607410703917b14098d96bc869ba56c9bf9114fdd3bbf277dfeadbe5f83d05bca4245636cee4daaddcc2dcf355b946cb67dc907d1018762edc87a5dd6d3c2bf9ccc78cf5333ffe6df622e253aec99a7937c83e1defc9b93f742c6901350bf4d1ccdee6e81a0acdd38c851ceadfe0dd2f34629ab61f38eb4bbefad9e44c9e1d7ceeea3e79f3416bc6fa45b9c7d18f1770bdcf696ff91fe27a7f03dbfadfcef56e8fd3e88b5cefc5b590f741d08f3d0e5cb9bf1a09f8dbc91cdce06faf7286ebe3b4998729f9522343ddf36b0f735331cfb7f03d4ef7749c46b738dde1d9fe20a73bd41b2b9cee648dfd7339ddbbe49e5fe074cf6aebb2d25ba6a491e4515d41afeac370ebb9f6b91d5d47b0de5ab43c2b1cefd7f2449cd679d10781f5b4366ede728d37f6459d9ba2c6f1d0787f562316eff73af7444ef3b27c4f7acbbbb5f257e43739f06a674bbd0fbfed5c23fbb476ae7d822e6d7267cee5067e3a1a5871b01ec774eceeea8b881ca5d0b2fd024727c3b89e01d7faf95b35b3ebfdc48dba0fc387fc8b7a2a2abdc3939b9c0bdc7bb178a1e0e8bc0f27f5b5fc37ee05be0eaa7375d0bea00eaa5fa983e2cf3dbd49d43edcc63f713687cc15ad8bae6a75d184e5f4aa7551b3a88b7a427cf293c0f6887f7eaf07f9c67d9a3d56f770569073e81b3dfd7b23486e6bd4419f88606ffea7e65f2bb9d49ed29e4fc4ef947a7d1dff20d2932b72b7838253e24ff4eae75c8e3217e428f3ff9b394ab3ba4f92aff4ea6bb4177b52f45fce07d63134ec3c1aac3637fc03aa6599fe000ed15edd0710e8fab79d73b456f5552dfd3a6f13c321c13335ea8155ee1cdf51a4c0a1dc2f6f1bc4cdd43ee3c9eac1cfd27554ab8915e3c8f958b77c29e813b8d77fba8b9be08b3aecc518fda7eb0cfc33f53c44dc7b7f486b403447f8731ce6dafcad33fdf99a685bdfb0c1d654f0a805ef21c32a685d8a4b4cb0574c494d234e43e0991a1f59dd93f961b40f2911f1de428f4a8141d392f7aa1ecb314c1e967399c4b71a68162ee07ad81744793b2026833c649ff68919ab75982bd7ec32edaba07db6867e29d77a8b0df8867f0c3f0dbcacbef24bac289773880b7c7085cffd0a56b1c41c7c8de75ecc1dc170321c1f21e02fc66fe120d503f43bdaeafa95efc2f70cfdf256e440cb7ddaae3bf14d6e4dfcf9c7ed3edef444f699dbb362dfe075c5c53f77736d7e652fd7ceb9facf6ba21d22e7bcbbc963fcc77935a9ade86a0aeb77617c2cf7731fb7f389b07521580fbb72de85ebea5fcd6d0dfc087f58db47e0abb76afb5cd5c7bac185f01f7446fe512d9e63c03498fe15e7e4573579b0ff81cddbff3667ff3df34ee7f43738fbe5ffc7a15ff28e7fccc47d377fc05f89efe5e6e6deb15563e65afeaac51fa9cc492b37feb7b8979ffe2d67ead4516ee32205fd11ad5a8d99be0be56fe58e379e80dbb4554be6cbf1ef755dd632b759e1532eeeffbdfcd797395b21bf3403fce372f973f674bacaf7db47adf061063d4cec1d180ebefefe5c5eca869cbb108fc2e7a3ff1d3cb0545b9ed6f61ea23efebf9d030d6b91a89bfff4ebe7ece97c070f2cd5d97f7a2cfac77265e73bca3a32e2ab3ef8cf5cfb8be37e0d602ea43d5e8fe3e62c7f2745c31ec6a3642c506be1065efd79436c2bfb0ee44f1a9afa221fe01efe1b419ea5584f37ea25f5dc5151d3b883bb5cb0df0b4cddfdfcddd59892bd57aba6c21ddcd9fc1a236b6ef47c4baf89f2c1e37353fe4205f8595e6a39356e7cfed55cdce5f52bef77aa6215eddf5afb94d3b8c1937f6c6a23db1747e6f7e9ee973b2bb89d7f30fff656cde335d1fe2abe8338a13fc6952c589f45bff6bf801f157022ffa3fca86c0f41ad839c675fe0af64be1dad3bdfecc5a163d8ca9b5ac6ba02be47cf99aeca5afaee2adfe9ad5e379eb3730e3dc0ff2bef8cefc9facd22e7bc83b8a6fafbdb7807eee726bfe500303377f35b8a6c48ebefeee1d568d93fe07b435fbb77473dabc92bda9647ff828d63b65a60e3cad86528c65936e605fad4fa6aff2d7f5afb599afbf3741f38f66ae1e8d06b6ae5daa7e73c00661e638a2a27cf77f4c9c8da11c56980edcbd238584f36a267a1eb0cfbb57a5a6866054f5dea81bf665f80436b3096c201892d264bd1757eba780e2dc87bc9eadecbd203e3f98be4b4b3e86917df9d5e8669133b55ce9f95fa32e421f3321f69165a6f1c6ef77bfe1d973b6bce33e58172cd2bfe5ef97cd53c5ef98c1c66f53beb10fa21eee05fe5fd1a8afbab6b637d213e5b4f8f73da97f0957b57fb007624f60e985d11c5542f33e5ef404e0f2f3ad47c433359516d362d727be6d7c70b751c56d0cbda9b222eb0a7bdbd3b5212c8a703c7f7b5751bf9dcdff6eb8b7168ac3be23baf3b1bac0f8971c00c5ffb0d1cf09bef4e9b386058ef151c7015774c6b261367ba5f380ab16939db9f3f67c8bb3fa19cd4666f73347bedfe11bf3eaa58649a37eeebabc0490f0be0a744fdfa97c1340e41f7e354c4de0cf34be242dff1e3c83977a6a58e5f8b5653a91bd4c0010f784d21e0f200befd97266e83f5d8d067021f15ff5d8f7b708df3311afbb73036bb8df7053edecc73ed5dd46fe0961bbf176279b3b2bfb7d44a84987043efff8bec43fa39b2cfcaf56b0b6d02e3d5d77c43223ec3251a507ed3a4c1111b53bec69b3cfb6dfb49a41976bbc7a97d6dd56c6837cc5251fd866a83733ac0e2b805386f600dce4a2da9c8d0735fb63bc2d8b9ae237ee57d853a73d51ebdf2fe8e9a0187a8ab499161afdab494d1b76a6ab15ed33cc6f7a579a0cf6b71136010f8ba7f734f824e638d6f956935b6d5ec1b7565eefb2c9f3d2b72c5edb9b2b276cc742fafd48f1bb50d3807df07abe5c7e0b45c1436b85df308f617d523bca2f178b7b6f0b5fcbae9b07168ad5bb033a825efc86b64173811ae1e7e355efea31adbc4272eeb5b98cf2faf69d7f979697da1d00fa67c30d12e90ad38d0c71d72660e53fb75d289b5b755a44fdbf061dfd414e5ecc1efd406598d03b875599d90ac35be9ed5b6d67ee63771ba853e29e36cbba651caec44b5b60bf6fd81e23938db770b837166f6e8477d6d308ce6f5e7b8470795edb9621dfce0f7d697e3ef165d547c9e7fb15634ac61abf3a2ab1fc4e75a38d1a1f2efc15ee56b64c406166356f13550b38a6a9eb7d61c6b9ac324167b2df737afa9fc3f5cefe3fa5c5a62a7bbfda485a15feed466451f82f605b23de93bca8ac46333e4b37efce8157dd7b5bfd57c5db116738a1ad0e4b3d02b5ef63a0bf57491935a34cf7c8f12f94cc37fc3776ae7cba5cff34e62f901f1a79f6286f5bbed2f9567c9dc502fa19c127bb30cba5a67e148db77ea0fbe265a9f72e4536ec6fe3294ed93079cfd731c6bc429024702f2ee23370bd68044f6e8f1681a9614f5b40bf16f9017c1de23a7789d1b815c3f3d903de039939d39b02fc853dd5f8296819cc6414fbbd0381538417cc33e002f8d7e4ac83ee3b91ddd9e25b0579437fcba563a1be71de42e323bf7896d9f57fa2ebfac954e7be9ff01fdefb46621c6a0c15ae3b919e93abc5e67879ef6f50a3921a1efe7f16802ef2172a8865d3b09e571be70acf49fb57f3d67baaac6d724c6786ad4e888ed0ffb4cabba3c9be05d0bfca8588f99d3ac478e96817f5c3893e5a8877d3e7ccfebb5d8b1d97b0a7b8c9c2f649f97baa66b718c8b3a5456a7c4efa7cf35aea60d8b7f86d80b7f7a83b36725aae96c3c775cedc52e7150d73058bcafc4c71b344f3c2f726cedf9e5abbe0d1b8f9bbe3d3fa777c41d3730ab5fd172ff333839e1f9cff9d23f67c5581fb8dfb79c85f47d1bf5df79a91721a8a5beb4ee8593206f681e281747838b889b0be20351dc40fd8cab9d1fc845ccadd35abdb7b16ecb67057b5af59568cfd20e6318c1bb9a86b4f5e5b85370169798f96d54e540bbda3323de63a7a52f032e97c4b6d51c228ccdf81864fed6cff9f76de419988da7fe55c94d3771a6ab05e6015b6dd91d39e52fd9d589aceec381ddf19de9843c73b3b7a57cbeb76e843c1d70064494732d65da06f0cec476bd039fe778e7b916a771501d47f413d443d8d25bc7c69ff3c398cda8ad179569eb70f9befaefd0e67ce16c6db7abf7ac6ff0011ab9a20df7cec2dc5358dafc9f91ac94fc0a6c2c008b9a5eae9d0dcd6b9c781bba15f99157f91245f38fbf7ba5f9e235e06b33d0cf2bdef9aefdf0fbf9c5dc77a4a3885706b98344fdeccbb89647c6be168c0704f6bc25aff3c573fddf9d9b6bf469c038c6886f2eea01ede726c5d442def68e7398ce8b1d9ae9bf28cf563f23db7a700718eb4f32d0b0f8a761c97fab3f483e57fddd2fe5b12b3e428107c7b3b4715d12d71f03635a39cbc471245b47775e03ed620533d1163f16b948e46804be7d88fd88cde36afe421d2e0e5ffa357e5fad862d2d31d8a258bcb41f0c934afc2812a746a87f7c13435ac688e2dc417b1ea0be47684c76439798e604701ec4be1a5e5384fb3c0e738d8d07d5bc029b2f1813d6a353b37f3aea33ff07f4b195b6e8abbd6c5fb291e5fee072b1c5febbd51757dad756bbf75fd50fe74a6a1c76c75b5f7ea8fcfbbddbe17bd97605c7d3dba6128b502e589a93d654717fe7ff5a2e147fae7387805dea219f42231728e60eb80f9b50eb2348778161af3de7ac79d8fbd3e4f613f88b4d3b59e15e849f97449b235f741c87032d0dd6239807af1a63803e0fde7b4ce23be4a872a20d178fb05807e2c085f3b0a379c3ce02b5c058bcb78c64bdcee3fb37b16d9e7c8e91cf7cba0d894f6a9c15d3d02fa6a176510ba7789e23f21ce1758b71aabf5bf35df561161e5e9bbfa73c6f9ad6b4759b465de525d1d2f70159dbd573f8a5dfaff39bff650e963fcce7fef2a3e1636d1bf781f7ef8e7ba6613f44867df8c2f37c06b2720964e24f9c8f7e1e437e62922cb7c3f5b2be17fe6e8c7d3fed606c691f3cf99c424c28c729ed656fcc5fa92168a5c8f13ddea286c2646975a146b9f5f2103495168e4262d72d89531af39368fac2454d73d0e4311aefa191e7f7f4c6f7909fc4b03f832ee4b63713ec477b784daa7ab3023ed3e6fbebd1c6771ec833402e9cbbee4e106fa3b695a1ef225957c21cf80672dfe1d7eff535eb39e30eeae942ae1cf243f5671a566d49392eeb280eb3878ddbb326e5b59fd6348fc4c57e8885b172ede827c5df8f34d6657fa37a8463b0af3ee499e33ce8daeb45afb9bff02c490fc344b34379beb464f2ce2ab159a9956ba566d2607a2cf733efd33cc19a60f7338db483310260be0043cbdd7f1bf5221cc7ccce2b5c9d5c2c3bcc37dc7c6e8ad8d677478cdf99611f0ea63ecd174eb4f65d8bf135c03b02ffeb7a7a317b51ec1b93f5b0f7b46675658b6a525932f3bdc20a57f45c06acc3261a4c4fe165731ccad334caec1dc4f189b20fbadb6d609ce361a6e67eaea64122d9f35c5d05f2f83294a2d44bd417cff5e382ef5ce2ea15337510186ae239e70f765684b9ca7269479693e3f0157fd3f72af984886fe94ee38573e66ceee6f89bb9802bb861d0674a3c67fceb5edcf07f3aee173987fd2d6a3d57396b79bb08bc8bb55c7150cc9b52c1a3e13ae638cf9d08fca57055fa4d1c1f4131a67f3227f99f860bbedf1fba9acf15e6a786155c4f4b2dfacb5c21dfcc3ffc1e46e64a3cf63b9c40d59a511527fa7bb9aafb712cc2b84bdc23ff4fc6adfc5be2ac9bdc2545bc2ec88f71bdf9426cc33f2baebacd5582f8658a3b24fbc9480f7e0778efafd5454bec86f8bb37b413efcbdfb09a3be046b1a7b0358ec367a3fc4c37740bff60de7dedbb53c87bddd1a350e531adf7c4b6e7efaef1c61d875c5fd83cb3b3c0b03fa39e427c49ccc7d5fb06661a6a36ae53414fae8538757d1fd56b756dbd82555d5db3aeab5bcb2d02a723d525346b9c8e238ed371849c8ec957347526354d9d51bba68e2ed0d4d1af69ea50de68faf905df1751eb696078e8eb184932ceca2972c79b2b7b44bd96fba8684fdb9cf6f44ca03d6d8bb5a76fe44feee90ffdf072a6353daa694df7d91c56b5a66785d674a3e74af49e782fa1e6e4b9aa39d96fd59c6ce3c308335ba89b56f850f7fa6e9f95de1acebfd1e25a2f318b0ff8bafa9dfd262cc787b5dd26df3cd67391fbfc94f0f81b3c63a6a99fe9523020e7c035de7af1e7e0f7ae56fe8ee7e3c4b550e008aafe604cc6a01ba4a53f5872a8b231785aa1f64eed2ce078b3b1be380d2c433a7aebb8b44fdfe2dc79caacb45a77e66393b20e9c5ea66e4cce72aa431ab33ae716e293b2a775ef39fb94e62356be4b7c0f2546bd657a96f4aab98fd79cc4d090bb3b04ddc9d2e7ef53d567a1f5c0f432078d39a5b186eafa3445fdbf573cefc19355d0f921fe42d035793c40bd978badf3b2176ed5a22f20f1f3bf8cf19a2dcf52d72d28ced81bd7467f23f68d8e18db73677f176211a438ec2dc9dc35303df89cc07b2058ffa57df69ce96a66a42bdfb00f50db2fc778c7f5fb91e7dd0af43cc8ef898d50590f5ed0c0f3d1988972b522970c5b43ca6798d9905303cc78afece5f36af815c83dcd29ee0073d2c5fe64fd7d2fe8bbc373f2becb37b03de539c16932dd7c37695f5ec3ee2c3f06d558e6a5caed2178af7150623aec08389205e7551befad28feba874717d7fcfd7cc0755b06fa1539ae1517b01bfaea85af0d08cfc58e2086d32e4d1dce58be5a83257ea6b4437bab770e51d7da460c2fc37056833b7bdef1bc536b671eb1d3cd3372e51fc3551d1783f9c3179a47e49f1b6ba3fa2a401c13fcbd18b3866d249f136a9d25be338e23aacfcaee4deb309ce632c568f5200f0c79987affc7307fa4b9a6b114aead34584ff8de2cd09e5b0c264bc44953cc5d66a7c86754f21df83d4df1dd7abf1ad5c730d21ffebccc3b17e3d2caf5d43a2e6ac397216309ba3a521864dc7a3122c86781f64acd86b07dfad252b72aaedd8b3f03593a45ee34f5f5efecf3dabaa862ba2e4eb7bc3ff44c0b7b0d994d28f7ae4ff5be90db617ee06c641d2f26da5b75fd588a1df8a3b6e0eb7b85e6ba866b8c73784c9b982b4ff0bc8371f37907deb518eb379e33ca17e4aca962e5e4bbb8f129468ed81dca3f76b9f7ecff661f7bbb8f9f023fc0bd39d1c699dad0dca2df8571729435bfaf18ff4cf333421b67f1f6255c8f96e1da3e98c6397ecfd21dd4c40cfb600ea6b9e72897d04877a8253c3d161a433ded12e4cc871d4bac2ef43ed3a04644ae374c1e0eb57cd861e14eb79e73debe67b655f6e841cc7ff0eb98308edf4d1c138972e2f45ae579c5f9545283f3a0e4378433a961e722da8f4ecec0200b593d1ef19df5f11f147ab5f47d3056727bd6b1f48f2157c7fe0e7939ea97097b2bea6b80f251b0e769e396aa616299169f5de0b5fd5e2b5626f39c74f7f24762a4c6b54373456bd306c440a7a03ba67112e848031e7441f912810bd21d2d917b438b8157aac603208ad1716ca222ee1b663087577121dcfea97151146bf31e9d267edd7dfd7ea08177eb7e18db04eb74ced69849f77a2b06875bb35427ae822dbcd587611afae1ddc67b0c53b5cc37b6e33fab357b62571d45b171cd167c7a108756f713892db977533ea06ee3e8278ad9e4eaefd770b0959a5d7bae1879a6fe9c2626f7e3f62cac45633e7a6949c827c3ef49c4d1874bdf50532ea6df86dd09f00fa1ef58ab3f3afac9ec455cfc3b4dbdb5bdc698aa583bf4dad1cdbd5289b7aef6d1ff179d1b985be2d60ae61beb76415427629fe17a01a2d71cdefdcd77e64bf3d23f8d2fd61d7b99c5df37f633cd8370ebe22efef08573da7cb7ce0ebf37cea947629cc1f8e43b63a8555630627693dfeadafe6ed8dc121b0cd85cfefdaef48655aedb8e49fcbdf7bf9a6787bed5c7badef8a90d9b437fc7f03759d0b50f342684fddfa65bceec01b18153c34e2227c258a9f0dbe835051a8db573a79a23bccd29bfa575aec28760bd315c2cc7fa6e0b7b02bc22ee78e63b05efe4d7cec54b8b6d297d32ecb5a638f177574b99a63b687fd3f92cfd63c05fb4f94ccde7e4fcc1965c07e0b617ee98f82469c8f31c0b7c9a0a2790a3ac9bf174eb7bf2bee76f9c3f1ef9fdb3e728706e04b2d5f19c949cd5646e99cf447bb4e89a6a89e55bf2a078def7f875ce6be496fd40640d55d719ee4fb767e9ef032df5684f7a28abfb720f4c2b6753c34f11f046b6c406e2383389e1f79141797c9bef52cb45fff97dd15697a8ee07b19f5fe8fb639c079c26228ed9220eb8a21f12642187af7b5ccef8dc916b5dcc81250589b6f3dced16307b729c92e7049ed9aeb60de07dc03f4f3cc74a83de6919ca8fc8753cd32e916b611dc35d2d3df837b9dec3a1c0877ee1fc2eb005fc9eaad5076eefbddf8c61924a9de6e8ada731f0410a38e7beb6cf44beda89f709f9da1dc522e97bdf997c7f9f408dcf46dd35d9ee705ac98d7b97fba1ca697bc3af617be04fae5fa86f223fdb75fbc4d5bce0fcb8ffdd191f834ff6c18ae22c698c395a7aee6819c9f62ed01bf518fa6c880162b9265653890cf50deb4461a57ed2c653d9a8a3a0e6f73972f4dd0b688b9b505f0a07d34d33df83bf17697ffb867d8a0cd01cd88f78dec0f23dd27016c7c39e96401dd9d53a8b1ecbcd3f90b3f039e86a5bdf99b035ce6162a36d64c49297289f81dc392e32fdb230f66990e9976117720c792883e6f4d1cbce472f7994bc8b7919cbfdae77f11e46999f8c3fe3cc7f9e5fc697653e7a1e6723c3ca469fd6ca93e7e7f1a7d9797d9e776ad73a2cd6a3cfb7e7fef9f5d9dbbf3df7f3d76762171e8f661ffb3a834c077e10af4bbe93cafe4c831cb3e75adb50267b90df8f30df64ddeaa16bc781f174a8d52404e3735a7a36b15d80854de6dd69ecc93bdeff8118c937ec4364a49f9e73e2f0a218dff8ae2e79cee9601a4f279cb7a7fdc878e27a2b6c056a0c0ef0be6cb96b1d781b3e976d563b0e66869e078e7a789f694bdf89c8bbd07dad5e3ce71cbd1871271a3cfd18e66a77e1ecb7c3ccfe0c1cfde275ad6d38981c82aeb51ecad3e3a23b3f84467cfa29a7ab9f4e1c8799740cd6ab1f70cddeea505d7b7df4c90cb3ed9c8bd1363d9de01c7dee2f87b916d3773e9bbdc725a7fd4ac60df36006c594f3b92af23b5921f1650a73d583b3681b513d8017ec41ff8c7ad5f97e99299533d69b3d951cd570b6035f09cdbfb59c310dada6c7a36968afde5c59f273ba70891db10f1159236bbb631aca3148a4dc77fc1d89e9a36cde183fe482ebb78d5f426d7b52b977df7e5818ba147627648eb781937616c00d845a9861b5068e387f129f31fd7aa32fc859ce8b78a9ea5f63ae12aec1cecb8cda7f9dc69265ce139e17e227bae61bf8c2f2ddb02ef25699ff673a77a9696881d3410e57d796981dbf14fe04c5db428f4fa7c0b0949afe39c50b19fdba8f57f90ee6444b5bcc30265ed2eabbd59e5bbb44724a3155f8bc8dda76195bd0732102bed8c89112e27b0d7b8015970203fa5c1f808fb03b26e34ffe063d0b80057594956958c7403ea79ea3b03a245bef4cd79272bf2b75dcd7c5078ccfbe883fe799bd9ebaf1c9b54f49ad7f8a3cebcc7722e2bb73f781be79ec05619c0fdd11c5c8433d270eb3f40275a1be728c8cf90fb317ae498c3b94fbc705c51f59b91a0fe5d5faa5a1613c06ce28472eb02f6cbc22b767fe6889d7266196ee896f19653679d6838f36740beba36be53e89e764ec15e67035dd30d34fc4ef11eee1e71df19b251877fd948ced53e211ffa5a507bbbaffc136313e6bba1ee3d0fcb443334997f59ea98aadd14f09cd2d503b89b82c3286759d6cd19cbeadedbd97d9b9604e8b67f5fa4afc9615f34aece936caf49def281d72a6452ed4a30f43b2a6b273fa6e90735411f388151893f8d59b3f6c31af4f7c9794ac43a87747c6e3f22dd35f45ef8d399f3d3b277e79b7790b962fb289fbb6b74fda7ae227c457c7feca657d6d2edcd192cc3b59b7e01b56755ec9be4cc959c2e9085dc96d9067c6753dea3dfd03cf38ee77b3a72339635eb9cfbdc8665dc33826beb6dbb3026637cd3ef0bf36d7bdf0b3854db8b64f9e71ffce97bea1777ce811abd913c8d1228e65e18caa674b31160fcb29fbbe6ba5e5d89271b414f0479c346f7986fdc239ef16ee38056c0dcc29f919a7c17a1a33ce19136d07d97f71443176e89fc3985ccc01f13d97cbc0497781915e7c677c0cb209d943a730b32f641d636ca6d47b52d97390b30ad6a4d7c3bd4f79eaf8757bb896337f91a9efd35883623b86fc78e796f9e1ae5b9ea58cfbbd389779bd5e96ff9977d3bd97a93b966b7d93bd03f4ddf5e2f885aeb72b9f499afd0aa2f525c5a12e85e6e7f6f69922db9d6bb687c48421edbf239f65b6377214668f69af21eac6843857b46f403a794e9ae35938a5f65c3f98467af0e47405f34efc6dc3967dce57aecdbdb970a629c5fc037e32ccfaec3b4b6fbd5a2e1cc4cb8532e63ca08683b194684d20ae98c55a9f1de4bc6bc53fd3382edfddc925a125e4591697264607b439e8b8417d6ea69563c8ceb9c1a878660f3030f621ea5a7148d647e9c324e01fd26bbd186603471966b6c6e2e29fb39adf45d727b7def1b33659330dcc55eecfd9dc8a73b79c9f4ad67ead768ebd4c2c37ec254f71dd27bdcef529d25d8575c1f004857df18d34a37d9b1dda13dd09d7f627f20eb5da0d16c715bc50de6084f10cd5f6f306e306468cc6d7ab85e367be8b38317f6d81cf8be7b422e0b0d39fc9b3406d75a6403f7134b024af3b3d86c969e9ad00b34be62b1966d5e717f1677973fc3cc624165e5b5c2b89393b154fe07e05ce81cb995fafb5b0fbd5fa22d8f5da71045cbcf1ed7baf84f7a6d75bb5d476e3d0ac8d23b1c390179cd19c61dbdf939b35927a3c043f82da41d5de90b9827c4f1bd6afb6dec5b5169adb787a145dab9a4712dba1893bbe10bf09f782be5bb85385f52dbf3be31df81314471eb916f81136d4b6f59d2fabf9c29d6e8299969139f10dbbe33bc8176b1a63c593cf5b8f8f7f07747c07764efc9005f832d3381c4c490c849a507dfbcd7c9e1f4633ede2d39a89f9dc97869ffd7cf839da99869e400e979c6f06d40368cd405bce562ae7a3636ea9cc5dc39940d6cce702cfa64e98e93289e37c6752e90de6f341d8f70e3a77cb05f13d67da6501f96fadebcfb463909d15d35052daaf9fb2b1e07347e4ccf400fb437cec8a4f5bda789a9b029bc0fe3d383f567ab30ceb0d9fff492dff0d7635e0f2e7987b36ec83df85fc6299f7cace6990459d45c1d1a6751746baf3674f1bf6f9e1ac23d4927a33d283efa08ea3e75a9f8bdec3725ef8e2888925f3b970143aa66785e2ad8ee11a7c3a96fbc1da2a8d774c43aded75b24eecc3c2d5251ff0ffe30e19dbea1a5404357c1dc743da33fdc488c661f1f573c56afb5ed2dc7bb02634dfe0fad0d7b00ed9f959bc5f88f9c525d44107560cfa0272cbf9cee667ad49a1bcdc789c6fe7a5b5bf717537c825926bb9d685f8fac160857d01181f1e8b7311636b961fafe5b2ae9debf5dc0e7ece34e83a1a8c186f74c777adfdc251d02e197dcc85f7ea395cc08ea550f797f5fcbd763656d6ec8ce9602e45f810f6377ae69907f6dd6ffa107ddfb14fe5de9c33ecf731584f818f6248ecb7ac1c3127009cdd7b8a17de7a1c9e60c1e7ba7af7efb1f2dd96b1eff6379e5dae4712db3b321d73bd53d414cc1e8953c579ed76feff2f9f5b421e75b2f6a6d5394e456b9bf3457fb1bed9b2df0a7a872bebbdfa79e8df64b591da3aa0e3017526ec4166e32b985f3d58177825129b26015967e5f342cf4864e8db82cb48867e299aeb33611f17f536234d816bc6f18f2170ede29ec3736f9afaee13ad159cb7d16055c743557ae790eb9dc4734a6d4db3f713e4556ecc6124c7dbc0982f5f8a6b74f65770138db5ef3bfae7a2a7ed7dcc730ad6e93e451e7fd0760ad8b80bfb69e99a060ed07c727e819a186a10903898ae75e0ccc375be4fdfed3bd7f81d39a7ba067a6d6dab355bba0fba3eabcd640bd7ba44a55e0ff3f57fc7be1fc34a1f1d3bc39553d07de27af5057aeff59a341f0f8ab1e45cdd9769b9f65bb106de4cb90446fae9cfea7d7ef136ecd86fe395c4ee25aa0783ee8357e7912dd769559bd9e81f005b99a5356df3024fa1cf2f3ed498bd99b8468d3aadedef53d3fe8b39fdf78a3e457936f445bd4d1bcf1dad46584bace98b55b4f7d09e3534f4c73f2359e1b8a18ada06db032dd8f586a6fb16feed628cc3e1783ae8ffaab9238d95c0b18e414f293f9b420fe5da77a76fbe73ce04fd89e5673f5b700f3ad4e936c23ea042eb94be43c238ed36cb1763b435fbd2d693e334e8692ef1e328f622359fcdd3e86dbe1cce9ef2d173ff815cf725d1c6337b42fccc4fdf512ebe033d537fd3bfb9be7326e74c8a350cd89f801b3107e363045c37a3d8d4a74778e69e160789b646bea6d392ece970ed6f7d3784fdba30d4aed9978e5eba5c52de1dd617df0dbad62faabdf137cb35419c32d3d681acaecc01d5a1a6b514cfb53aaff49d178369271c8c7e0c7315788922a7033d48c38eb68f64fb120d1003e1cfd404729f0ef125a42c827b4b39c521c9fe4c8a8344da068944e33b297d87fb2a34d6918e7e22edabf8c48e347e5b29e337531e65fd7cfc36f91cae63d9cb9672e84cba63c0426cf1bd743a66245691cf2be2afb377207169fd07e680fe7d38d3e2d0581de97e1b075df07f33c6cd1639168b19c9b37e9a869446467cf40790b3037c1ead77611ce0a8abc839a7c0ab94007f1bc36102cffab0bcef67d0b5d2610ef7b50257dbf98e54e69f138df66ecc976f8e9a38640d1811f1d73a0ba3f31762eba40be201ac6d44b128617e22eb39a67553fa77e0924c836cac988369eea34ee4311c4cb78193fe6039ea61427c637547d641e4f8d91def00f9af307f24efa005c689fa9952eccbe9271943cf9dc07a0b321bb81d839ce9c7b471599db8d812fcfc420306e331a691cae6da3c90b8d893cf926f947952320f0b87ec11eb621ae7ed429e2f3d43bf4cb3731c01be82ecc3a7bd39b03b0be77c8179d0e1df5be021ec4e253ff30edc5a39ba8652cd0bea945796d5c7d61c4e403f25946fb69147ff29cea3f3b698f14240bff814792136900b47dc285d134fd20bf0a7e8d202e2486d42799630af4df3edfc196ef6d3cc1ca4c7c83597bea3c80bd73a069984793e434d43d4f8b944ae06bc33a6ceecb0760c93e2fa452c36ec6927d00a877a8eda0db228f730af7d643669dc7b584e333537752b853c471ff6bdeccf342dc8a639f18787948770e14cd330d1a4d080eb007669968e9f61af309d6362d7210faf55624736f6754e058ce194d477a6a9aff3d88934e36d22e650fbcb0a4e3bd192c849777e4f2b7c693f4b73c03c18e7d8936d2e967edac0fa94e3ad272f595d82f200c650130a65bca6ef9cc9fc7683ae4dae9d0076d1b12e919176a00f95c4592ef117a30aded6ca998f788563a938fbc671648c37662f4e9bbdc9213b4b290fe06953f75b8a755e8e67ebdaadc604e1a1c4c343bf6bc92757f91b60e5c973fcf5c1e635b94f233732ec4bd41f1f7dc31e2f1c65eb67e927c5416e50b7b69aa7bcf279a637c1f0cd1d72b64f6475e5cf01c79b2d9c71dc9acbfd33fc1d451d811b37781eabcbf7c985421eb2d93c7a7d932cdded483f2769fcf1364f5f6773df77a5489baf14eb6d1596b53be27fdba744c0df4bfc907c0179baf111f8338de9d177c7078bc40aa05b61a574cdaf04f1adecb916f40d9098d891b0df019e53a2dad4649da6f4dfdc38b93d2b1a66dbe3c279d850dd9a3a4f9688a3b4b085ef8e2a510c411e39ca81e982014e939c01ce64e9aded6d60b09a48d137513e336ae6accd4114b3fe27e0ad2776acb107c1162841d7cec9f52897e1c1d4d196907d1e39e74e889f2367a81464659e68e19c15d33803b7073de32e01f1e1d8b5aafc29c417555f681c53ebedfc60733eeddb8edd577fbee9e38f69e7fc73b2d2476e872ca1fd872becfde473638f47531fa7a0c15afa7c6b627f22c7449f4fd60ffe20fd15c8e111b96e882fe77788bf10e68536cc9dcfa36c037c8e31f1795fea3583aea6bc26da251cd478ff0cfb81c4a6e16523e6f2aaf5afbc221ebfef3b96e4438dd0aef567577bcbb15f68f983f1a0149c9295b8c67e00adc99ef617c7976290f99bc850bfd90506fa62f4dcde99fdb4cffb68b49f7f57e367223167fd776fc0cb42cf4de06f033ff07c8c24d46b65bc705007ccb50fe2f707dd88c4e11d7f4e790381e753df9167c47bdb4c53e13273f0cc2dfb0a26803776e5bb3f5fbff6cc77f455d8b131475b7f269bbccbf432759455fd5de6991dfb8331f91c19dfd6ef52cec49da9abc4afd5e899b06bc3670367b2aeb6f4669c70dd54b916e81890ebd5f4717b151d357c573af63ce729be0b19f7b26783d8a5a961e70bd78f0b7e2df23d77fc4cf927b6411655d60a60f2dc71e339e83b09ff36ec691f218c113f36ac2784f8d77627e85a12fc9be5d75d73c7738c507f8c724cccc9df483cd7f1e7d097b2430e66e467661a840b8c2b84fce5c39e969135023a43644d97fdecbb663fc289ed65d0d6f01de5f3dd2671cb9c7eb6d438b607560a7aad867ea9cecd04c7bedc37dbb08379a33723fd05dfa9e56098969b07fee0b81774e3d4afecc7f9aeda8333a9fd1f7947f05e3e59b7cfa8397eded1184b0fd716d4c4ebf71e36735034c724ee67107c9ee560770d9e09d45914fc7e0cdc5298b3adebb995ffc77f2b3d8cf16d8ecfb1f27b3bc88a7921ebe718a4a5dd2a6ce1a062cb98eed30efa7456e9819baf0bac13d0b52671a5fa32cf4f909bf464e04e87be5eee5a1259839e33fe05f352e0c44eac87087dd0e49460dc6e754aaeac49c5b77465e4c8f707a3d2ffd455b6ae6b397f9df8f4eb00f12015dfb5e437e37c588e6f72317b52cde7fe5fa6b15afe04fc5724058e7d20715a91fbcfb5ed4bbeabd657d0dfba10ffc3438e5feebbe36061034757f979a87f03ff634ef961895fc2bedfa8dd808f517276353478dfbad181d3d863182e763d960b14d4844a1e3cb2e6900b87e66e6c91ce0c8f43e2342fa0c7a591bbabe875413c013e7699d7e4e6f5e091f876b02af96d5d6b1d61fe0575cbd79d64d8338f2f890ed79bc8eae9ddb55093b0177fbe60aeaf6bf68113c9f5dc6959ffee9fb79e6c1f207f8ebd0339cd27557382b3a7cddb3c9dbfcc4ec4d7c47ea1b23fe26fdf9976d9757d39ed2c067632ccd2e350467c37c42dee380c12e05c3fbe7039c22216c6bc454b5ca584512f9248ec1e02ee7cdcb12e386eee608a6b94ce377093753ba2f9c7b5969e3bfc1ea27a13e0878539773ffddca1ba413bd448051c17d6fbf1be615459afabe5cfd9d389ec03f3b93a4f65fd7fb75ccc76bff87bb0e7279f87fa2bf73d47c67506f7d2cf1ddaef1d8759b8a535d26db0b6a1ae2aba9e0df970e0ba28b04721f435e238e03b40ad81acc939ed7b507fce9ed621c5f75b887368fc9de1082c5abb66cfe80ea6887593ed4b513b772dec3963f71c74963e703c61cccb6a060b774ccf9218dfb1e765102fe5458d0ef72abb4e3147e921c86cc47555e65389c381b67b9fc5d0bf3284f708b7afd5e7c5da87a31c0a1e50eefaa2f7619fad5d47e5e640adf603eab92f61cf0862602356db5ad7d6426d4d153610c7a3f96cf8ec74ad17bd18aeb52eea266c0c25b45b8dfbb5bd23d305abde4fad7c772071735afc5be5d65759e7c2792173f27720a787975eb8b472dc93f4bb07f63e259e513afa037bc7721ea21c03cb630f59bc3318f1e3c4e12eed0bea4de2395ac564223f2d8e3fbba792be83f6019ea3957585b6a7f33113f7df17368dee15cedeac6bfd3f3437353f788eb42af6163db32de0fcad7e869fbf61fe48ce9535f0a0c39e1f2dad8acd1dad8b7c2572a5770a2cf85adb9b032df6e47deccb73ec99b5d918d0bed8d9724ddffb80fb29dc99fa3e1ad6fc87da9aaacf7965ccc8fa60ebaa18bf72beba0b475905ddf050b3cbaac9f70a61ed0bd74dc107fc900c7b169db3c9b2d0caae3cabf6c1c6d626e794a14a51c9a3b7f5ddf12890d58b3fe37d04fb0173f6f6aaf08f70be4bbf86e3a32acf79964b6ceacbbe7729cf51c53fb2876d388d505625122bb05c4b691b4ecb45e93f00feeda5760eb1ef52cdbf02db631aab5f2f3cee88610b989f33478c01fa687c8dbb1c8f21592386fdf0267b54fff4e9ff23f77e81de2785c49112d7f775a74fa5a9cc2714fa4ce0ef58dbc0c579e67ca5b2af7cc57aeed53c72c87348e990f8d60332cfa3a3ef8ef7c3e27b63c45c67e99ee64b9097a0075a4a5228dbcfe45d7c37ee10df3d94ed318905cc01e38b785a631d6b027dc93037fa74e33b523a016c8bfd10f59e54b3f7f8b729a91f73dd9e4d6df5e32551e97d18d76c799f97c11ef7c81ad6c733e094c93e489ed4e6b515eeef2c4f04f50f196b14c2ef947fffc4f5c3fb44b611a7816373d7883fc2ccce8af58febf6447eb77063ca65afe6bee31d4212e766e983ef8eb89c98f60958ac81950649f9590ff032245e7ee0affb893dd42446e5ae3fb02ffe5c4a03e771d3caff58d6d73f28cff32acce3bf3e66d0b3cf9e6bcbd6d9b0a705e5efc711db5f25dfe6cd39d303c3de13bbfa0276c4070d305e17372a343fc6c7d04881b793d8f377c3c65e9b01ea662c9cf32accec435137227352c47f15fcc9c59f5bc7a03b85dc50c8ae079c2864bc963cb7321dc36511e3a0fe40f90cd0c7e08eb9b511cf17e49de688c17b1f301d558ecf9d8e19d60dcb6b3972fdbe71843dc38de769c15fb0dc0df77ea86b7d0c32fb10f562c83f05b242fb06d45371de270d3ec1633880b3bbe6cfae400b9cd67bb81a153cd70fbce6b88ccd0a7b9b5e26782681be0de4520c15f03455fc099cd9fc73d6750c2f73ac7bf39ff98be2a633d3483b5617700fe5b995e92ce745c7a1c60586354da87f78c057ba5b2edcc93222675c4f8b41a328a5b128eeb18f620c700cf9bdcac6027405f0734ab1b6b8cfd1bf4db3a06b753dd75acd333b9b609cc4be57ff1bfffd2bdf135c13fa8efde3c29960df60653e1e9756d74afd245cbe264f6bf4cfad99ef786bf379b3746578c7959fa97924ebb9af5ba9bfd22ffcf96c772dd07ef4afdbeaca73bd54f9a0c1468e12c035648d3a26e342064d8e326f03ba39680ff397e22ca7f5baae767164ff18422d693af31d5f0b25c01691cfd7eaa4d665cef625dbd3997aa4d89713fb1be541b90cb3f2f3c372ce055cea4fc79764fce14a9a3d5fd91f6ebe39e2fa2df9cda7ce39859c4e7d7f72b92872a6312ea1303f55ea22de7a3c29f75ff95c5c5da3b0d9cc4697f3a520ff94a12b6f1c073effee2f3af603bf546c49fd7b10e756f62de5aaa7bc8069d19b55f61e47b9e76a27e49a11d45d6edab313b12387b06bef99ff4ecf5eee4cc77ca02817d838a73f77341744f146fdf1311ca4f9c2893651ef69e3e5abe5e8f3e93ccaa5a2ef73d8d30ccf19a75ea61e17f9693973944fc4cd30cc12ad15523f92d821dfc09e83a0c08c4d965067073f374ecdbe64d93d6db770c669b026dff18f11f4cea6805d43adbecdf2ad9f3e4fe7cadb74a6650bc022d1bfcfb43c90d54ea981aae6ef3386334a2f85df38d33a6166339c0fe68fb282c7f02a3f98d5e56bdd0feb9a6f83fbbd8ffe789841bf5a4ee221eaebed17ee68cdedd7e330d77aef330df0620b67bc05ddd6817dc11a2faefba10b67d3c5eb694ad09dd37e60f514211e681baca19f388d40afd04f03433de1bed212df89e3284b8f6182be3189fda006fabc390e653f1966523a04feeea73d9c43ee68bf701ef68011d1f93824ce836ef43358d1b1edeb9f25fe01b49f688c238e83f9b118266ae681ce85a5403ca5c3fb3d2f0cfb7321db799887db175a139cb9a3c3c21d17fed29061873aea616aa439f23ba32626cd6bb21c11b573e47cb414e07b30ce5b4f4e3bc0bb45f54abd01ffeee3256087283f263953701ed243643c22cfc0a032ff4b2fb3379eeb6f83ae7928ee57e638332f51f6fe4cadcce3d0490f4317ae037322c845a0ada6b8a7975e7818ca7e0cfd86ebd45db8d38d8df3b10db2e86d61a47b18b39253a812ebbce7506b5e7ecc68cf967e4a105b704ab0e62ea18d18ecc0feb31a21ff798ab963310ff2d1959fbd07db85b56417e775e89cb7e41ec5ba70474b7a3e30ffc30c64f5579897582d869bf8b0294ea0a793f7fa23f7c69abf16473d6de73bfa25ea69d01785fd6cc8ade06564eff9f1c239439d8a7f1e333925fc38729a166919f369a1990167673d76fc0beb7eb4ced9c3fa60816fe3bf9f3c1ca18ecae2cf758523340d571660a2c8ba9d70cfe0173837caf355fc3f869e5e566f9c647a07e2ab8cf1d92a656ea4ca9d857992be720cba1ad5f18e39ed543e47c06970166b547cdda226e75a784db071715e70fea5e3cf8561c37ea961ab91dbb5c486be79729c822d12eb708a3e47f65da1f3f496a9c7b08fe329eae315714522cf4d3b66aa85435c88ff010ca4de594e337d1b14fdfa80979690d7cfdaf9b69ae038412de6c43827e87ac171eb49ab40ee2c418b0eff7ff090c745a0abdaecb5e0d7f2cb60d736763ff8dae75c1e6f7c672a05501be278e12beb7cb97564e1dae3f41fec15db0798fb61674d750dd5f507caf54339e9eab13fa7cb67cef42a4ed0dedfbf9ff4ce5f549b8cd85cd410a4588b993bb681db40a23acd92053865ec4923fbb0ec6f6b8dd96dd177e334a07cdb9ceda3b5b1b3154ae83fcc29a67b9e618d0ece3232168e52f0d712db25bcb7915e6c3823119bb270c633c02ab8c0b727ee2f30e8bcf6af7eb7ed8c422c1387e546ec8346c62927eb97d971b767b6da25e05259534c14d54aad6a6770bd46620cc6264a2ae7a8f03e2c86b1a15ebf075c8be74ee3176e0f346339acdf234e46ef7802ad140f3962b4e87983fc2f33e51074c9783ffd32fbe3d174aebfdab6f6f1d6b7b559c7eebb92a54fe6e3f96caebece25559ba6537d9eaae3d9fc3c9ad9a35dbdbf873ddb6ba27136f58ac65efd990b1c6bd93b82fde5803bda474e67191929898b8a7ebb489eaf03e344dfed6119b94f4b6fa6713cae1acb8ba1af6ff4c9fd61cdd27e12c8517b94838bc659ac3770e3510c27f4353b11c3e1e791f3b05cb8d38b69d899cff0e1342e01bc3ef4c3aa18af801ebfb5f573b2fe54c99797d82beb2805e7aae74e9acf2063fe84e60fa5b087d8f485a1cbfe0c78f3e8f58b67401e77a8a7c4c7885c33b391b3379befd97bfbce8462f8553e3604fb32e99cf5c95cb1e7ba4ad6c3703a9f7ecc57b63691a6d65b4779733bba61f7ed99db91acb7fed99ae780c3388d9e9f4e64cf33ddf797449b03767b6da5a16bd3fe09acf3308c77397771eac93bca4146e6719f02af109bc3f5e89ee79dcfe612599fa3b78e3ab9e3f966dcf58b3d47fb51b879985e8a5e0c1c77c5774b9fcd5fdba04d1938aa14acc9f72116fa7bc8f2ee031b30a08193764027a73cdf66bee343fc4239c6d288f60372cf3802deb8ee04ea8cfc75f8fd16e621dbdb648d406d214cb48de728abc098976387fe5c39aeab31f1470f91ab99f4b3750dcb147b65ede7c0b0e3606d9f6cb2ff5c6bc6b0c2955c37d6a0ae5d9fe6ccf89a69833fe6faf767dac577a773f28e41d7eebc18f819db51c89ced17eeb4e33b537e6e77bc6db3fbe9786a5b1f6f7df5e75c2f6c59555b06f0ffc53ae3c7e352f824f3e2d97efa1c566be6f823dfd17ff9ce64d3c8b9b53d636aa5fe7a74f09ce98ad8789ff39b988d98b0f9d5a7dbc0b1f3f9da3e04705e2fb757cf5ab24e6415f28bec19278899a4cf01cfc9adc9ca7946ae730c1c691b0da6297f8d796667614eceb6730a1a72b56bb067e2f71bb199de7ac5fae9e9f83da14d873cc0e3d237d24b68a824c68e83f56a49e61835d128f738d79f55da844abefed67aa8fb17ec7ac51a9f516d7ccaa754f46a54f93bcfc7a0fb447317f67a01785cd6c33586e7057f790631df2fe0ade09efd157aade03d8f81314d439eab84d81be7e11bb618757722235d2d1c7b55e3d924673dd93f7dc09d66ca31caf9dcea753b35ccfc63b8b2634f5e566b5db85e857ad751e1bf842c3f7c004edfcc3e44cf422df2c21fb8a68714646ad77c7e5079ff6198e1bc4fdcc9152d338ec705faf7e6b0e6c878bdcf34b49dc04b21388312117722e60542129302cf98c27fbed020c0b8b4550b241b66a5ae20e3b5157122de374fd33430ec8e3f2376f83e2dc72a569fe794bd71aff578fb9ecd973f13d40f6ef4c4e8516a75fdd434b6c073eb67802ddf004e7ea6e54c63c3070e58dc7b618edc95c0e398d17ce480ecedf3aed973436cd37c49bebbc8b54f72462c1cca2f68a85234007efa15ea1d55def99e73ed2f1e33496dd972e1c23593c8392d174e7408bac4b723f1c2046d11e7bbbe21d731f0edfb33a8d3337e4538d3398e5e620f5641a91d44ed38bcc3d6871e4f8fe691241667ef16ee3415f845fc7995055deb933babe0dc0cd3e9919c1f6f99da9d666a6e1bf6251a54ed22f0d261af28f6197447cbc8458e17e0c718405f23ebcf4bbdae4ded6fd1ff5bcc29ee353be7af0db63e5373e40a427f0a3588f48e69e8dd45378ac36c42cf06dabbea28dba8a7418f59c9fb4335d2aed8f1c6dac433228739775429baeeb334fba9c8f5d3d6bd71f9f6da11cf21ed53289eabcc8bccfd639892b534bd7cd10f6bd848f01f5dabf4ab38ffb2f03dfa710c3d560d8e966b9f7daafa7bcf4deeb19b7e113c9bb929700889b9331bd898967c32fabcdb604df6914d7305908b2bf952f033b8576c9ae7b275c9776dda8fd769cd09409edab5d3c8b1575358cfb61d02c7e97ce357ff2fce135cd50dd5180e14fa8658aea5e56c143e3fc34ed69fe5babe10e244857d62b577ac6b1a959c419dabb9d8f671b37b81a17e2ef2967c2fe58ef35c621f512fc0936d56afc2319849127dbe25e0eb0bae46e13a003de83287e81fc36c9cda2e7276e333ce4b9c35ad05846bb1cfc3fa17119fa9ef0283f840bbc638014eb23b3d86d59e28f095a85ddc47f4196a9c4187504e57be4d73764935d757f3752e91a1e6fe4c3b478e2d115f13fd40d4dcc0deeeb443fb36d3c0d53af4bc4adf0dfb3372a729627bcef13bb1937d9a67e851aebb41b4f19d0712bf428dcc732d45d0db8af7b61fcf901faccef5149fabe43b22be84f9fcd8f2b9a71f625bc28d299c2138874397ee85f2fdb7904791ed91e7a6c7c89dea7ee6434f277f1d8625206bf4cdd015620fa78e9f811e6b055fb1bcc2dd1517ef7d4d933bc43df0319a018e43f79cf1a686e178c09eec0247f640ce974adefb8a6f077832760fbbfe1d0e3f45d7ad8063928c35f1019466af4bd52ee1fc563996d8f957af6195e7e5c3edda21e33e2873b578b6096a8ca21c6dbdc625fa0ccdfbf2396396379c17fe7d07f42e7777c4d43b7350d692ca3351cd383fc1f257459cc1e5a1cdc3b02b384ff532d6113cebf66a5ebefefe82cf08ae49f68951395366f5e744fe8f96efe29e75a6b56b9ceeb0fd8dfb5cd879e6f7abf699de1b6cef742e4d6c3dfd78eb582fd3f9785ee29a2b392daefec2e15e40479bbcafb9f132fd0258c3cadfc4e737f485b3eb318e7ff1f76f9e87657dc9dcf8d9c3ce34ac18b1be452e92696823ff0cf1351b7c5fe2ef88b4855a9e73c9b898593f2219e33a2704e217d44348fbe3a34cddfa3d8c03297e04f2aa3f679afe666b73c7567f4e565b7d224d1ad75a5cad652d9b3a7f1ce75d902c45bad0987f9075e21fd4d718d4fe21ef5abc83225aeb8f1f3dc11ea871abd6fc21f2be5dcf513a8d753f8f8f41c50fa0fe82d87724d7b9b287e2aaaf37abf180d27eb437475df933f5399095cfc8b580039bfeee2d72c727eca3d3f69ebb5a068e1d23478b0e7127609eb95ac4c21df3bca739adb911db859cb68e45fc7db28e56a62149c160ba0d8d734a63bf0bd58bed028fabc3f447d0a615f9169e5f46e7f3db4a75cc4a1b5ada66c94a7dc071531cc69ad80cf23becb3aaf3b3986e797daece36abe4a89a1cf0e4dd0dca0598331f12ea16940bc7e330b8662f26fe16e30e84bcbc39186f03c0ac01574e1a65c40f69728987dcf9c874b383448bbd8cc4b4e4fa93a28e45fdb722dfe4f75622cecd83ef465c6c85fe18d61eb8baa2c1d5ccb977013c2289379338f1109b5dfddb6cb533eff18da8de08cf5fb530f48b6950be05e80b97c89907be7024cf711fd3ba9b0fdc68b0f65aae6dd936cc31596b11f17de31a4e99aef138a67c4d50cff165b5c3f1c991bd477dc389904796faefb10ffdd411d428a1bf156a7dfdea3aa0f523b78b718bef4c3ff05ecc8747ada9164ece35e48406d611b1a5544308ee393d064904fe3bd36829b41cd1867d32ee09d4f47868d15378daccdcc9123811e508f4a02359cf03aa0db4701e6a36e5446b75fd2572254c0ea231aae774a1c66b3f9e8799748cc046deccd5bafe8c729e618e017287e4ac2cfcf1de6a079c3b8328b5209f525c7b47f9613ea12eccde8d72cad0b3a02da77b16dbdde51d3e378d932b38c1e63d20bf26cfb1a6e894eb10f6bd1c13bb5a5d8333d4ea6435538e13ae1366e9da976d9c0faece7bedded8d7ffb441fd98347ba9af79d4e9073da661f244ebf0a0a701b9cb48d615c40ce19e615c758bb50db62e68cb5f0386719a07dda725720095b96fdee6e17321370ac6a02cf6247605f70eabd9921856a44b84b19892465269dfdc4bff50d698c4f359cf69b59f0f24f656a4c038ddd60169c46bf51a09623cdc4b1ffa405b628f0db1d75c0cf131ba928bbbfadc827d597bbeafd63a5bcee46a2e943b8fb85a09799e7b9e9babaf949a24ac0f82acdf1a36a7c2977122fe24e34aa17c25e59cf07e43b1d6daf9d4caf306f08729d50a6767fd3ee8c259037992c6fcdc5f8f6d1d4b2ecfc0616dca399d57eb4a57cee208fa018609b1b5910c755718b7a9621a11e8e646159fabf047d8efc1d6b4697879a0d118a5a52ec2e3d2371ec15640ce3fb33f83aeb52a6dc8648d1c622187a9388b9f1d3586d04618be045a12b39aa6bd51f03861adaf3c07785f42a031a5dd33ae87f2196b58f562bea5aa0e47fbb940ce3bc0ccf0634dfc1fe452b34f885f02dfbcf03dd177b252df79286be78e48f78a5d3fbd507db72dd54a5b45b40eea65fa0afd753cf781538fcb1184f969e9cf94f5302173dfe27f557dadae073a6d3aad7da136afa9abb2ef5a8a9b6bbb4056d6b416cbceebf66b73fb99ae4dacc564884f1d22cf268931c067f2dad6428b3fe765762792ed34e0c6177d2dce26e8e2efceb3f9be388f68bf480303c7e7fd5af77819ab41fee28ef3e935414c3a9753db7058e7462e80c49a6d7902e2675caf49b4f969603b285622ed80e687a1ef42e0f25a91b125e38a7611b0787a87c54ca1a16e83f5b4cd0fc4f16aa9b1d4f3eafcf9fb3213d98da7b286b7d23baf896605193ef3bb605d7c88ae3f10e7a21a75fedadee7b4276ec7495f3d0f6fe20deeb2672df803ade4201d74806fe1a5aaf9baf29d730cdcb9c6a951bfa018fd8b69e85904f12a9fdfe17aa878dbd1d4eb6ecf87ccad5d208f7fddcacdd3b89ae7143a12df19f2dbbd4abe83e97fd1d883f58755d63c37f61403c2f893792e307744e3133cdf787bdaf0254acee8422f1131894f9b50b653d3d093a0eba72fa0358439049fc71873f19e20fecfab38e9c6dfd37783d6a0e487569f724879c2eeaa830caa3cc3021b58c58e670fe2fd5cdb47e8fb88f979eb3fbe1b03a720f6da7496757d0cd1f53f1a7a8ae067f1e3d3f6be9b3023be88fd406b92c7e07347d7dd7c8f58b1909c294ae533ebd1d2937509f3075389ee0b6ebe22718d95edebb286538c27b75f2b7d44c805a17e78eef8b270909bea85da612bf1283fb8f2e1ca8c9b0d35175acf84dab56e73bbc59d261e83e31702de47e00b390f7bdaa1ce3f55e5ad7a7a348d87266f08bfc6a01742cffd2ef6f885d27e2bd626e19fe109721e61befa369f1b8937ae6892749cae1641efa2b43fd59fa76d7e230e3b21d06fe0e6ace09802bb3aacf2e3e17a78abf788f13ddd1ee4e002e7f15a9f1ef7ddab3d19956b0c13f5d2fc4cd4bc26f85c652eb2d9a7c6d74b2cda074d6ce8c3c14b1eb0b631a33aaea83545fcc58a1fea75a792e79c40531dfd5bf01f596f69caf396b3cf9886bf0d8027e3568f99a08ed43b7135873a87309c47a0394135ae3393cbc5529ffd2134ce31e2a6b54b649098c052ccc1b8e3bb4f3cbf7fc773cebf5e136d130da6a7f0b2390ebb5137ca15a865478e958296e44ced421fd3b32aff74c693e9e7743bc9ec55d0f14e56e6135f560ab3b90ab5ffc1fce065f32c7aee9c4797a76e5d63e67a3f8f00e3cdf898ea6324c207c19e2467d0f927ab7b016781a4c66177bcf5e587cd7b5ee56e78657a4833a88197f5b25afde54a0dac91e71e66d36dd8d5769e9b624d0d7844ea7e34edd1afdd2762dc00955e7bc06ef0b5fe828ba08e1d17f84205976828e027e43edb788f826f017c426ffb9ac318b5e5f5cbfc4df94e8546edd5f121b6bbb5165ad6ab02c7de07971dc4bad87f0e7b95e262ec4bd9bb837a5accaf0ca58a1ec181f153bc629d89ac0d0931bea8418ddc6664cf705a5fa87f5dd41eaa1845d84b5bca455e892529372aed6351a5c028fa4312dfb18bde26c0ba3a8a12c9ba52e5c620f655adf0ad54b1b7d5f50ef8ebd23e0b7ddb88e59311c303dc94157e910435484cc34a89bf11caf31f0d1ff4b97f40fefa711c64300feb80d33783b902be5bc0b6c6fe1a3427b6b5b8f838cc9ff26152dd93c80fe9a721eda9f167159c23e51ad00fc0b73cb09b3e39cdf3a39f1c754ce39c461483dab4b580a7153d17e436a96ee736ea511d090372f009ad17917885e60cf8de02fdf0ee48c730abd60d604c3af57d4d79a12ae31f0bf70daf41559cfd420c1ee8b01df9ef420d0fe6a4e5da02ad574f564fef45ef27cf3537129f598df72b9fb7f93701f7494bae41e0c334deafec2379c439067dd6872b5cfb52be70a66bb2df86727c5cb8e3ced0518e4152e0a699ff7119ca246e348f81a3131b930fbbe3dccbd52d894ddf7bcadf21ebe132f03a93ec4ce2f011f97735373359317ec8d704f184432e7e8558f77383fa6d454ea2d44a6c7e07fccb1f984fb4c360ddc0b07c065d4d29b03e152d42accf0e0b6e3b3ef7ab35b406c9675fdab167359db3a7d23ef5f44d20a797a86fed889d7b33d24ba4f37c9e8dfc43716f86dfe3fce682ef99728402973ff5b9d7be3bad6aa7cda769288ff385ab750abcce0cb9b81b5af85ccf790b7ef87bbe26df73d417d7cc5f74356e6ac794bc6ac8bbd4e739e776654d1838e9e2e19aad9f9adf52b301dc35205e6be4e56b7ca0559c02d55ae1dea9aaa954cf5f556b5e655da7d53fe1ed78118fbe097394c84d16226fcba5b2cfb8b17b4db4f2fa299efb13ec23dd71bd5d3806ad9fddb3bdf55388096be1716aae058e5fa9652d80e640bfb2c6ea7bbaed7d36301e101723bfa6d7f0d14ecbc0509926cf8efa4146e49c77d487e3f80869ae87f827734ebb7356e89c94bc88e929319f1f29de12311766f2f4838c41b9de9482838aad4d1217c3deee55789ed1b7a59cbf85ee5775cdd5f64a1c871dd42db972bdf25dec4ea1b1c4f5d6f0cf577013d3eb6516e83a8e75b80672fd5f5bf769946b5487200ecd156a7471b8bd1f661ff89268ac39afec4bac25b0fdadd5f565111f64a4078f728335e759e427c0be26ef00f6116392fab8b5c75fc0112b88b9dadf392567e26ee14c5003b7a72d410fa87a7d989b29b9368da76a7f0fcdec89eaa5a6277f26bc4645d7291c8c1947ebaf8a7d276b9169ae1929622224327ed53924d7c771adf7bdd4c75874fd13f464f90eea8f7bdc19e9f514c665a3f23c1daea4127f63d59a5f038c2f399bc97c55cedce3b0a735f91d0ce0d82bc6a4e0ef11ef23e4a196f64c37efb020f152a67782ae15bdd6786d8219c7116c3cd6ee0bbacb7bc6e31de4ab9d393077a6a1e7b43766671a653c170dac064ebcd020eec5871a0e15ceaa20e9eccde787e5a8873ac0e62cfeffd97bb32e45b16d7bfc039d87231866258f6a0862172186746f02996208ea29bbd04fff1f7baddd03466456d5b9bffb1ff7a1466528c266b7ab996b4eb8f76ad13903f76c7f7b9800b6707920cf65352de9a683fa86b5eb42c48771ee022f0bf8a4e4fff0d9fb7e1d238fd3fae7db51fa6d7c484a1beafab5755353f721d94443ec77377411a307bc9bdd7d027b6c91c03e0aebae93ba45eb3096fa75d568b7d0387659305dd23f583c7abce09c54c5a4f46f6969dd882fffe05cce51dbb5a5e3b52f9a9eca2d0b3aa364cbf31b4d3c29fc1e8c5f8bdb4d3bcc19d463d57bc72828ce2c56fc9083aabe268ed8173d4dc3e58d72568f306ed0c9937ece73a99427793bdf15d3c49c81de4fd21ed568fbcd8c64d8bbadc239c3e0567e43cf44a823913f27ebee65035a96f77869eb7a3194571a6b16a4bdbb4ee30ef80075adbab7ad35f07ccb7e2b22dc4bc259110f469d3772f6071f6f58eb535f97149a802b62fbce5eae71a13c6b7b09f77a749f0707d0042a8bd62ab08f4bc6b50836ab9d4ced564d8e0474080e9953903ea17c88f82e721d3df2ff4b39c71a4e889fc3badc6d5ed71eb29f184949f9e18339f48d8475aa3cbf1a8fa4fb14cdcf00267680eb690c3529145309b5c8c0e1778e4362d7f6ae5138bbbb8efc7c6f0db8147686b7fd633a1c1db2c6dcb058afb4e6fa1e075effc7f2e31299a0a9057117ed9dacea3b35c70aa5be69b21f7e7b0eba41715f624c9af977f23caad852b57d2cad39e43585183c68a402a611eeffc4756e51bf8bf2a736f4d72bb9cf6e5600bf18b9f6794fd62ce2b3eceb06388fc8e7526e48d14ed46a0942d3fd74fd3ce20153f5a1947d09b8c07fdc303629c7adc7e44c5af0b578a37a2f3fa3e228e58c7e9f2faea2c7297c6e62a3dfc7c35191deb65c4f89fa897a0c81bfcb78a169a27c36eef675037c19c3d93e0a7b05cb79b0d86c8afa1fdbfaf544c76f38db2b3ab00e9c050af79c740e2a3a599fe5b0abb9ccfc867a800257a7e759b5b5778b85267a63ddcfbca2674fb5159c3afc9e940f7cf0db05d732bf4aebf1caeaf3eab925313f879a283bcf4e76f1212dad33e40debf83c830eebef9f11f2eb15b12d780223f21f7cbed6738046e614c7f466614c8ef220c681c76a74ea6aca6a79f374dba196e3d1c0b637f03f22c7615fe5a3fcaca68eda137f31df29f33237c79f9247f186df8a5dd5c72bf4dfd6c767bc8636a858a82fda74f4b70db652b5def053bb8a736750be59d536aabb9f7c6ef8f5ed6ba83da473e02126a96e3c1a6a1f6be6443de7e4a4ffd7d7c2837adca36b5b0d3aa9575ddb14353c0dac6b99f41fe99576b7c85f72e55c6bf3d0bb248b2bd94728870ebc9baecd88daaebafee2929d55558d47aadd75d475f2f9baec67e0c3805e9bce23615b3f854e0f9ccb73e4df92f29c2a27fbb1013b21e97efac738409d78a90d341f91fe522defa42fc5093757196f00fbadf4f7762acdf79109fabc27c6159e38452b5ea4fa9ea7dcfb715de6b5814ff7faf05ca26b46f19be867cab3855dd554cbdcddd5f1e1300d3ec40c501ed541017198e973555786cd45164f193b6aadafa6dfc1e229f571c64dadee0bfbcd3e916378545f8cd7348a780eb1537f86374fe19566f60fd55b47db87d8ed9bee9fca7ba216f781c752a5efc6b723fd8cb7ed4edb26b402900b857366b27e91b5e815bc4be9b71ff65ddfaedecb38817657b850789c71ad041eedaf8f7b60424d36e0a49ac6a9519fe9c1fd385f9ecced4af638b2e7b5fc8f2cb08f6362876e07b087acb6221732b9590e59bf0ab6c604be4d23da74de13b375894bfb3d267d6e1e2f7139fa4f7ab33689636d26e6d47c79db5e67cec098bed99b97b7ee75fa1e992f6f5363fa163d4ddfddfbf439bac7cefc69764f6fb113bfcf9ebb97d4217ba3bd8bc329bbdf3d2da717a8235958f715ad81f042db8882eb79b59b89fe778abbfe2ee38564430e47a887857351d3ba83df71fd7be67f11df02e276e6e83f739a3740ad31c0faf118257c4ffd48553f1dae237ff7a9ff8e35bab5bcbf32b7891867ae3716ce7a75fa64d8b6adac9f003ecd7cd3b52a7e0eed17fa0ccc1110dfa635d07d1f7a0fd9cf11b5e89c4f48d63ec3671f70ff6198456c77bd06e7939c6315be5633d610fa11f3a6c57dee9f0e645d91f121be39be9b9de0fbd8c9ca37b209edfbc0c47604669185bae66cdd7bc9f10ab17f55e712d38a92d6d72a9ceec9d9ff43ac79a8a5fe5fb596866b1aabdad6fa633f68ac690aeba0fbe1f6bf93cf607d4c17dd8b3b64f351d791903991d7d46f5f437ce5078d9ffda0fd0f7c2a0be83bc8ddd3bab3c6fe4bc2d12176b276146e2f2bc73aa4e4ec2fad33d72b08e9d9de9e5ea2f2e3126dac5384da8d97b43d7a9f98a8a737290f77aaa1f9154cc476c4ceccf7fd7a4a310f221fdbfd40ac838c81e09fc1fe215f03f9c801d3fef240f335bd8bfb464c27cca6b889e701e6809de6df701bcfa69831f13ce40aa73cfd4bccbd4af744bdf5b42c4c72b6809dbb24369661b39c027f067280df56615cc4545fde23b68b5f79e66915e68764273d0773b8a2dd3ec3ec2a5ca7977458301f94e32356817fc7fa1ed0fa469d429e03a4f606ea7fcd116fa8ec8935780bd4231dabd7cc0516da7f8d370c4b42e7f857ee876d3c34728ba21676458701e7b1d74fc85a6e7d907fb3dc6039c2bc702b3198a654450f12d6e3e46da0ee77a2bd2ca62adabbc8199686e7e0c579039afaeda4e038aa8ee7f8f7a83d3aa4438ff32530eddb0a1e4bc2e70357ee70447592a836e406b07cf7389c533d991ec6971dac9989fabd1cea25cda7531c748c24f06f1863ecee574eb18d1d9fe222bb0771ef1e597379b2e0fa97694a392be7c35e9e96f689cebf9acf295f12bdd704759e158ee438f4dc55e06de300c77ccce7e095e68caf4c8350b715bf72de89b1a0ef259f9b625c68ccdb17e352d70e390fa0f4dfdb9ec5ca14cd48a11d013e25c56829d7b4d3b268b17ba8982fc45f90fe7bd9f43077e9ebf1c39e55c1feb176db27c8aba35605bd8fb08b2cd4313ff031f343ef40fc3cb21f50ccfb55f8690ac779b80a3e8e7ed0a175cb57954b221c15ee40f08bbc991d3fa11c0eee30bba4e5096ab7d2dd88d877c71f8bde21325b4c6b87f87637d711f99995635d56ed196f27e222000f4a39cb7daa4d07da95c899eac8fe2b9faf17c967017fe92d289e5641e7ee3ea38e80a699972665a7c80c499f66d783f809fb1dcb01508cee25dae5731677f1303f756035ebd8dfaa0e5de874ce7198719f2fec8faeb5bf2fae1ba6d5a568df987e8bb5459eaf49e0b7568eb555f13cb89727fc9d5b5cd337007f3f9fe1b932cb1e7e079a99aa36307f9e746ff69cc0348accc92ff140f8678ddfa9f73ec5a1b74f4c8f3e7b7a06beaf36e4351abf23b6ec946254f4764d4afabc61c33de8f5296ac6730e47e15fb0f61a871f4e71064de81afb95e1f7d30dd4db1fdfe87d27e2ec56f54c6d0b6b1aa1dff303d59ad6fd829fc4bf68ac71eaa3663fd630010e8769d1d3df3dada79beebf5ddb3ac6c1d37ab2e8dedce7fd7adadf1e5ddb22e7cdfa75d1bdbddc7a3fc9d9e73e5fd7a1f95124efc775486c7fcde780671927bcb6df5a4f0bc09c48b543b3047ec7f497b90f00f628c43bd31bea9b65689b029724722d731c3eeb2f8abd2fce5969fd89b85ec094636d239e7d8764175f22d3661c0e4556fa67d7a1bcf66dff969a8509753ec1c73135145b8acd9f3fc7a2ef55fc06ab8b0cbd200a200652e1144e06747ed4e49151371d70fa339c7773b4dd111f59f5a7ec38078d2cf537e728ec5d13c0c0e687f4c6c65ccd5f55fd047a3fba2e7e2eea781a2b7d719ac87a9e98fbd5af411fe759c3c139747ddc3a6c8d3573c23bc653b5c6cf789a003efda333a66b83d6a5dd959a4f258f66089fc7afd8198077f7c473b5f1baf23d49d3512c938d5677e3c467953f59aa05c4b575fbdd353addf0b57863310058436feefab58feb7fface3fabd431ca6bb2713dbe49982eb126d7ee906a81862eb59d785d20ab15b84dfabd84cdbba6fe0b17c497ecbc47e17c4fe726b7555e0ca6e12b71f2bdd7efa1a903b94019ebcde612e335c4b9b8656d683ee7be784ef2358db1b0ba392cfc037a7fb62e41ab7eaacc8b9adf532c9afedbfa7895758c076807ad10abbb96f3e9f04e8acd5b0ce270f69e96c53573acdbd7dfb3fa1cc0039a1f9a0d72029b69e9d0dcadf29b4ea6f3c147c107601a7f2c7adca66176dd8a618f1d8e7fbdc521da56faded5d037b7559001ee8e9dad9acda2d8158aad52fa6ddd3613b917a57d8fe6de2571c0efa71823ebec3e7faff6d986d8cbfe290e47581ff4bc57ce04c91e38d6bd13dbebbeeaa7a8e37cad79d7ed27bae55f7e7fe5bd3e7d0f754f059d69b117c067bc1e09f668c81fc07ee448b5e0827fa16edfd66d35d4a4266b063033617b54c49fcc619843e083d1eb371dd04879556bcfc867f5ba736c0f0d3c68b7a4d30fef3cd9cd8a4a1de7907c96336caacecbcfec42eb755157a323eddbf499f00ec4fe1c88678ca9ff27db9f1216a58e6788d868ed15b11ba1beafb863ad5d71467d9d59216937c875ee97684163707de573b69f33bbee1a41ec6966240ee02873c0bf071960b752d3879843e6f847996705b811cce21c99a8192ff1da31eef23bd947d212f80cb14fc329e7bda0b5d2649c0aca6774c8fa50b3897581c1ac9505f6517ecf09ad195434f0896de9c83c9cdf2faeb33cc7b727aae9c3e627daef69db27e72a99abbbd570be4e4a0bb91fb1ffee50ffead8accef1c4ec43c615aaf531af2565f78bca25de53ba9f3696397b47b647501f1f3e5b2136e71c99be127ba03ca0da3e27f26beadec2f903bebe57d079a9d8749fc4d61a9e5169674dec8ce9d49f251d51ba2f57d6bdb66fb7d4780fbb4eb25da418402f768c831ce323bf1f614c02fcd3b0ef6e65ee72e9b77a5d0ffdfd17e313657147ad568cd72b581edcfba96d646d7e0c8a3b8fe18036e9d79f21ff4e89810c677faec21ec32e4dc0a7c458e57b685873df1fd9a1f11de2804a2ed8be6e52f374486d8a1960f10eaac791b6004b7348ca8ce15f7ee9deab7006781bb2fe252ef043253f1dd87fc6cbd9310a6777a5b65de669903e9f9b1f79dad67c797e1e835d21d5b2e37d273b32aede05f2a65a2eb57aef59826325705792bd9755f1e8d59a7acc2b14f7d4f9c83196bee4e7bab446ea747f977cdf2b8b2dd4b228356af83e1c57a03f9b620b5cbb91576b0f983f6127622dbce315117977e086b6e9b923735b28357702bb59738efd6a7ff27d40ca9f611e07cf627afe9ee5fbfa66714ce87a936a2c74dd6fe8cba6dfb9cec721064eb8e23d018da498f2684fd749f97d9d90df983e595f46caf8466c11137c347f001fd2c639171a56ea162d9aa3efa1a695546b29c50228ef359bcb9dfbcab18cc4f1646c9fa455f3a5eb881d25f1dfcf9efdb753910c817345e9dfd4cc2f59f0a1d4a673ac20e6d6d5fb2cb6c80db1e96c268061475c860b38d1d99f13d47269418d15e086fda75548fe86bafe77d0fb8758ca743d57e69accd30cb69a9182860cac7bb83e33fd6322f10634619717211b4f72f663de98715c66e1ace0d86499f3c3e6fcf207458b60c3f3b98af6e884ed9b10e381731fcfcb1de6b7286722fd0c738c80695ff44e5140fead60e08e4c8bad26be0fcfcd5003b55c05fe11356cf39c7228a0cd512ed7a24e83e9e92c99eea1c21b4079aaf7ab60b687bac7e1166af7517f62b9063b8ad5b60e47c52480df1b19d82f51dd75eb886211713ff87e71fbf905ecbe5d7620f6a6d40e037552339877c893cdfb1e39eb4b9fbc33e8cb45c1079d0fac5f292708f02ea37dcadb20384a94ba29ca814dfac94dda5941e6db84690a0e679764e873fd6bfafbf68ad83c6d9fd8e3ad517bba4eda19b6c11c1de3c0b83fc246c0bee71cee1315db775985b37b16f8f7d7b6df8adfd7d668b9bc8dde8ae7d1dbf63eda0dac55382da62dfb90b66746bc381da3605424fde57d1e2873e544dff794b4dd1399e363ccf5d1383c3957159c6625d7476b12aea921e6f0177f87fce5bef81d9e85c023a16837f1fd45aa77c7b383ef5f3759f3ab89cf57ca07e42b95ab8271e69bf1a20371665acf79d4da531313c3f887f66ecd7937fbba99f49bdb28e71546bc8e187182f3c03badaab1dd8758d2717f4bf12c90c31458265e2fdddd876d78d72debdf91640ff3dcc68df5f1889ec5f636098ab36ad75470623ff1b71e1b9fadf82d6b577c5905f3f5b4dffdb7f4ef6f0ffb6051cf8309cf323056b008673c7f19079e6a23142ad6e0ebef57f1b5f93c4d02bbe3927db45c321ed47dd29e9fd276869c50a8a17121fb5cd28e8b74373a40de1ef29e03e26b6ee8f924f1fab2baa4afda87e43db6528ea34bf131b34be22ccfc0f7bfc953b750b86b4dfc377d0f335a47c1938a3966e7a6aa7b81f6a36de9fc09805b1d2f7a69135f636612fb10f8816fabc0237dc538866689398a5cc76e658e8d38f80de33336f21f80699c19c9700e3c68d102b964d2dd96e9831e62ea1b87351cbed81fca736bfb00db077bf795fab0c71f0b597ba353537b44b947547c6ac58f001c089ef1c338e840bd36d4d10066bc20739d3ceb8cb105f0f5b7c0776e66c81159934bd6e7018c9388ab0b1e36f85ce7bb80750afbd5a4c43a7ee2ebd26bc1bf20eb266a7b977483b5cef5df3dba2fccc156baf3df33c7bad1e7605dbc7dddbccafdf44cb91c6a720bd4cf93ec2cca591ac6c0038ffb849a4fa07b1b9c23641ef17dfbafec9d823b9ae355c8bdd9f84b189fb5dbdfaf1741a4da15436277400d0519eb53627a87b82c40f7839eefeb8cf8197d85a31af8c526f607d37cf80f706539762b315be46c843a0f56c71143ad1baf9b03cd59ae5b083c6a4591c19e44f659e4eb9d84cc8f17cf98f0736e566483fc103b5e8131922ecf652a31802d62a7e41a34b2570acc4a773dd6753817bdf60a38e4897dc83945151b18b9eb7bdb04f55c407f89f1eda25ead8d5c1c8bde3131ad6bb59fbc227340d790bcef5dd64d91c6eac231e6a6df5a506c15f26bf01856535ce3c870ccaa3d8371ea28f8f8e2decd63ebe02bc8ba7bec7c9e94a34352ceeb7e7348e5fa0da357304d75450b7523f32dce787cb0aa13a4b51d6303dc0e1bf78bd4dd3ce08d6558be50a98b9bb3986ecd79fa32d9ba6777901519d5c92473335e74ff13957e9948da2ff07be012b3cf1823b55b154d1e47dd778033e5d6033d43d7a15cefc3e97a3c9c15c0cd82bcfcc7388ca9d60ee89c101feeb40a67ef93f2701f6b716daa9f6c2465b15d05d60970b637ae576ba4a6bd8b17a877bd54d7f67bd21edde260d6223e139ecdbd3c2a2d2393fc09ca85774976de21d9f934de4cd6b17dd4faee2d0e966bf7be36dcfef7f572486cb0eefbec59e25c778abbbcbf2d1df2efe21cdf645d03d976803df2e743bb0afd7ae036abd6a7c39c04ee1de4e768784e03a788dbafc1190a5c41f33aa4fb7545af82ce473c13664965dff25b0757e1ee54b980351d38b6f7ff54d6a1cc17e2d8771a4baaac3f764d3da6e32fbebfb60f49f7e3dc48b45d0785f71bb93d2fa9f940f357a9b5a6d80d5e8321ee15189c4b58ad2b457c033f8b25ce7a93ebddd27c1fd8fa818429f6e1b7157d18d57e77e56bc43ddf05364bd1ddd6afdbac9578da57f753ae15a87191cb79e3171d9324d5136bfc16b2cfca6a36cfa82374ac721048f3bc6e1de91cec5a7de7333b07c774de309e58ae45ad6277c8590b39c1718dc6f8432e769da74ff5639bb9d76b39d7e53c51a752a751e549afa91f1b0afb71c9cf56e4ea917ca99abcbb14876ecdfc31d4577a73c6eb9b94fe53466b01f89ef8357b539e7b75b1fd44a987b45beb453827b64a91845396a3cd155b4ee82fe4426357e150853c2ad31783d826e572829c2e6da7dbcf993f78026deac5769d804edcd37ae97c14c8c16de42b73497cd91bb1afe418278d57ca9a92a82fed581877a3fd390921d678163c1d3d0b7561b8ad48d66d9eecb63c7618f1dae52ee4265077282f10b762137ff1c0ea5a78fd1bee1954430f717fb5e3a6e00424ed9f610bf978b9fe45518ab822bc2baf33829828c48f31be4de3dad715f6c3e6c702eb8fd95ca09827ea4b20e76f44f987856f8931de91896b767443dedf09d3ea0c319682fdd0bbafcce2caee1ff569ecbc3d5dc7a1f7cee3ac4e7ec94c9f8cf151e0073a8708b0dd4589f90efffd47303bc60bc469727ee5a1775b05d98e8eed71159c0a66a724c3ed913f83d934c29702dbc175f2222d694cf84bbe128ea78a4bebe6951a4f8ce39d05bfa2bc569bd637c407d5da66ea03a875093daaa7a3e06410bfb0cc2f89c3fc218a1b5430e9b816e1beb6456b7cc53dd1d61efdc41a0adf4dcc8fadc807f367e599639d168e7524e3ba00fc6f6b5dc9d1e21902ef1c1a58630cfdc178fb6ebdd42d2ce55e6cfde1de25f74d566403f039f735b58c70ae0726f9de606d9e54f9626beb4768bc55ffed56aab1c7e7726d708cdb54fa4ee75aae59c760ff45a17749e471aa609ebfcc670b712286df92ea9d2f49191fe2b6a837d1f88115bc42852398f4f5f37eadc77b2a673ef872e4ec8b81ab817215a9368aa44f0563a5f13f2c41c369f646de2943cecc469e87aa9d5ffbecdadf2f514b748ffd20dbccf2394edf1de7991a6359746e31f028781c7311f7d762ae4a76ee231e0bc075d7f7819d94552dbdda7bb5fc730c7cfebe09bf6567876ef3487dafcf416d7dc35a917598f8dc35fdd6cba6a7d560cdf7d9469d0bea3a2ceec83f426c57c659821caac861c8f7563b0dfd9cf571d0467c8fbcaf848beb3adb54b9be1ec4496af641b88736777e2dae549d375f9a2bccc6dd56f5bbfe525c8bf970980fff5bfb46e77894b8ad457d6e9ef23345e1cdfd84c302d637e70d8d8153126208c805c274affa06b10df751406c4ceb142f7a984f0ca7eb31d5f183bc7ae815e90decb22271a8060fd8c1c4e6b1ceb45d77d4b7f50bb73f35a7cfebf5e4d67d9fbd773b527d17c64d0632d74a2cde05748267e26fa31e47c4ce3ea85dd888b356d257005c27e05c9ef76bc185a070bc34f75d51ff5c4d0740c9f151fb83af9f2acf76c71afba7d4dd089ef9b08f987fcc09526c58e09f1279ccd539f0ef867a3565ac854d303f03b7bf015c79dfa4f903799566ded9b8017346f51064ff94dac4c246e2761fd7a0fbb92892b0ef8a7af2e2bac11aaeefff19d358f458e6ce56f6c1ee05b14716998797945f6f55f3070d7830cd4793fd9624ec8f0e690bf2a1a304b92d2e29691fcd75d2fd483df3f57cdb16318489cc216d03c724d6510d471de4bdf12ec045b5e8eea46b11fbdaa0372ee1b0c0f71999c5197198e9d9b57bc738008d245a13a2df775490f9c0bf0f2016b85b051dc0ad8fa49cbe86a9a2eb14f44df87a04fe4aa98d8171dd8cfa1ee50a8931f6036baa6e2ecb355bccdfafe1e2fe1bfa51e10652fa9461b231bf180705e6461cfb9cb4bd3de647455e3469bbeb91c1f61698fb3bcc572ed5fca91823e867a8d5ed674cd318d6dae88698e31f8165d4e081fc6447dad6155a2f10378bef505be77c5f47cf1f627dbc77d6353a8b800d8f17bd731c50bec5a17f06cc799fc7be3106d2ef6de2609667a8ab857e2062940f49d929646d5a1a73807ba637c0746fe2454f707d8967430e0afcd181bacf2e1ceb59f7cf295799236bcb703e6ce49695deafba6fd2bdebd17922c75a844e942f6933e8cfd8099cabcecd29ce1015bfe236704835e1cd8476a5842376ac52ef3329479dcbfe99ca6f2ad56b49fda870624a984a4f39bf34ae4cea6fa66576d7ebe4645ba8c2cd2478d1f6121ef748cfbde3673aa9e27e4abf8a7a4ab52ee7935ac3961a531aa83c1bf27a516aadc4b9286b5c3cb0adba7b3768cc2350de9ee63c03cfaf21b778aeefa9984f23f31a310530dfc99a90b81594ba87b2002d04f6f79b19313b59e3b853f47f6af96f54eeb9aae6473d4f17c55b39f63d957584a4b9377674eda19ab88c6d153f861e598377e103f77ec661de22f342e33861ba71556dcb0a5f8a560f4ab5295f6e3da80f6cd6a6546bab39ef8ac4a32dff3630d1b793ae97ebc4a1961beb6828376ca5be16cede8631cef3b4a57294b058762a78f9909fa446bb47d4e0518d8d45ef4eb9d69177e5abf9a0a2b2f7b098198b9bfe51991fd2b8f2fa61110f12ba9e4df13adb62bc6321c35a2a7a49ad8f0b60c5868c7314b41ede93a1bf8d83b9c603c839cd65ce32c1ffd46ec9f137f66e58afa6e4d6e97d96c055b6aee154a6fdcbf9ed5057c5f43b937e4f8ebdc1bc5c2dba96fbdcfd03e6669f8fcd240e8b8773724563826c0e105f5ed547c5f34bea8ff30af6d8fc35de506da8e727ac1597f2d02f55de12a6f9c29f15d4f208485c6274ce316e1c56e782b5309c1be43667dc4ffd463e8e1a5ecf0ee3247c4ecc4e0b34268627f4a195b9239e53f5559027916be540fe9a710e099da28984354b916316b52b4dba17d980e9bd64c8a7c4f99bde1c0b72ad3c364d6c0ce9be645f976a05706f217d16745a3e72ebacb98da3bebb815a6cf4bd07c6252a72f26c731578a87f049c597365ee25a18f9c36bee813d0f47b6e31eed89fa1c9732ac88b4eec09795f1e9eac09d609923d2fc0fac82bef97b1cad747eb27414bcfa03cd3a29d85aa95af61b7c899f91e87b3fb849c199bcecb5bcbb3c396ffe20b3e429d2fbd62f311fb4bea4be92cc9a1fe9472181ddd21f298923d88e631aea07b8ff8108801ae02cb48a1a611f254b0b773ac3af637d7b763fd21ec5e814fa8e630781de8390e33daa73a97df039fa958af97ac1e087c26ac3724fb16d3de61b5427cfe22568661a4b6930de04bbeb94edeca86bdfbcbe6fb25368bd66ae86fa8ce2ce4ec57bbe945e56c9d11dfe2949a7e6b1258e524149c3f9390f5a9417cd753c4b16b06d573a9c75956cf0faa4362585bc6e936296beccfc67da523e6dce6aa708754799ca02e58da13f89924dda341534c7b3ee53fd7e31c8cc79ac51bc0ae54b890ea6ac07deccb05f5dd93b6bb8fdba33c2a681fb7e2f3a4a27f4f6305586f0ff59951702a184f74562e254ed4efeb65dbbf329d16e64f90733ea6fc8970ee0de83d1debd6b46f7c214e0658c07853e17121f35ff0d9d5ec3b525e2fd5b4f4f819523b5f40cf85afd30773655bc343c6b503a4f65dd77aff8fa57d80d8a43fdaad23e605f9b9f3fd2768456ceb786a34ad60b92f3aac669efcff71eeeb8b6b2552b9b0a567f1ba3d854b15b0b9be84c715f317715f1266622ccd11e6ab89793b7a1873633978cc57d37e879ac30fc83b65ce77a8db4e87a3226d2b5cd988b1031c0f8f49505ec5e93a2e8b2271bc3be3d256e3428afe84b90a6707d48d85d836d94b771ccb1dcce5776167f7232d4f754d7ede37b51ab034e6a1b49b8e8f340e75baad59910de47d60a98ffd81fe1e72ab62fcb97d2feedf80db26361e7b077c6efe701fd2ec2fb5cd0ab6b656d35bbef7395671b602dbcef5ac9b3ed7b0a37acca98a7f3f73bd70fbba51c7c65530405a7faef53662cc9dc5710da81f9bf898b75fc9fd184ea9960eabe5adf6077e5fa4ee3babd9acd69290f596505d1fd0e853790395ba60c139cec7bf3a3e757340d90b4774fee5c8ffb0d4c75dc4ade4b301e373cc6660382bcd66173638eddf46dd5be9d91a8e0dc749fe1efc72f9796803420c1634a2706fec5d506383b6518a8b493ee41f7a9eda5d549fa5be2bb1f51edb772b71ee7f739986593f63dcf1f0b75c9f3342cd7388c946619caf02aa85bde8cd22c0ee209fdb8ad6bf2af5e4bb2dcb074ab6ba8859631f4a381be3248f73c635e3d9fb69df7fa2b7037a8194b3578e2954b831574eb1c3f8bd758398aa8a7ba39871bace865361fb02f7ea80ea7acecf9c5375e8e52b93d8c6fe81f290e4b04795f62d26678d53dcb33e60edc8be7048ca8cd854ed9553bcaffa98a310cf008d29a6e5d1a275e6d4c6f8e0ef407c8848e5b1a1ed36f264e7236ed831f274c8306fb61905c511f92e28bf4a386d780ec4eb71eede45bfb136fa9c3b3847fe1dfab9b0b3aed2bdb6ebd737aa15805a9eaacdaa7385d3f92ac5f17e8933515de3f5bc6ce3c5957220d2d809e34ba49c6c8c33717c3bca7ea1b2270586c5e31a4a2c8f7eaec73cb578b1c2e336b51bb46bab76ee2e2ded0deb6faf7caa70c2c9da7c128fbebcbfc97b38c65e35deb94aacfe977d0876dfaaad4bcfd52a167fd8fa9c1ffd1f7f8fa6f3e75ac33d313d2afb67383daf4aeb0079dd8d41c6ae066fdfb354ce5e8e6fa0bcd5b47d109bfb2a7f0bc3e6fbaf49e19f93c032921de5e73654de1562b7d0b9f34b7c2b688758f778699d79bdf2003895180f8dea7b82d61a6fd72d6d5967e4c760ed93f8b6e8ba466c0dd8f1fb5548f76ffb9481bd55cef28c639090fb42bc47813cb3e45a5a1f1398d036f49729ae89d87181d16ae61bc7f81db9df6bba95b8b6f41a6ce49d56f4781133792a7e2cad9bc449c9d774daf600c74d6ca8d75b8fd5cdc05e49c6faad3d12bc68456bfd42ed86ca77ef156c3c5c476b6d2a3a98c8734d31cc507b5d83091bd8b7b4b43b93b2b853ed24f4b521cf03ef7a4e02fbaad948e503cdc952c552013e89e2a01047f588075de3f9ace59dae7079631d76f3d8615fd133a073485bf8ce6329975ae9eb4d7d9eebd1f326a591a77d356e11977acd82661f3f7837f2dbba1ca5ca9d38adf0486a393dc10fb4d07c9377d9679ade542d95ac409b96721b2dad52b44df77168ecd39e5de360768802b25f02be04f9d2a8eed4cab15a93e0e312815da8f005be4fab3a04bac6c017df51e3c3ec0ff6d10d313975312745a71ff4b8a70a1645898714158e1df40fef6ef36fb68a6d09b5cfd34d737b9643ffa6d432b3dffcda3bdc159c839a03a8689a299ab84dfe04adbd62da21e1a28113deb1cec9708bb116c7ba11fb39768a1b6a3dcf8ca8c4dc740c7a6511ab7d54df81f8d5b42f6bfa5ca90169b0afae426fa2ba2fbb35fb32682a33acc6c37d81e710c43a2f880f0e79f6bfb2c734714d556a7b6acf635637c339f90bcee7087a0f81df8a43177c36815f1a48fbd9167382500fab60a1aa353732ae6e93dd05df8ae05ed4f815efc90db819b789e9df818f877162049d8ec24329faeb0073c429fea47c89d754e2a0a135d477cff1df93f6286771e52f8ea145c790f963a9fb7ea43cb7de56c5d8809f7051393eb3c21d66500b9cee7c721e4a1c105be480426d5bd40657da2ce349b23c6dd947c8170d8b99a861e95a6e7f90f3dc7b93cd235f53b57964fb8af2698216bdd667dfe1bd63e933c6e31e411dc65c7a1fe93c603e24e63e98964842c7bd627b8d551d0bc5d685f8ad7dca006b0af34bf475635b9439c3faf949ce3b6bf62eebb39cb7157832ed9a7630be0ed4933ea743ffbea2b656c39e72a038e9566602df484be787e3fc7aeaf81f12e743da3b8b9262b7b664af731d3e37140c9c82116a9c43f29efe5b5c44b72ce80cd8bc4e77b3d7a450dbab6111a5fc7dcee28917d4ffb0ef583346de4f70fe47c86f728638a034ff2a3579bfb62f8b355dafc9f8681c0526a12656c9b54bcd3c5f051d888bf9601b212f5d1cbafbacb48fabc083f710f6a79297836be1778b1cea88d3d03fa48853e3f113a90eeb5813bf3dbace87ac8d00bff3888d3fd0e396bf183f29fd3b725dd66b4ecc54cd09b34673c2fcaae604dad5b316c64cb6703f588332b687f2df876f8feb7a651dd987dade9fe606685c9b71d03c7fe449699d7f04c6250ba7ff7a2da8862e8b31c038c546e2081e8fca67a08322ead0ea6a9230bf394bc4b8433cb45e4fa22ff41d97c08d48ecab6a6d12cf71321e64d6b69ae7304c13390fc2fe08fe4deca2974d2f75773eaf738b6df5fdab31d82a4f26cd1d1c137396d3b54af5f7951a3d873c538e4547684f9ca270c4f78b54bc2fbb2fe444f8bd9a721d65f7e83a2383d828c426a5f80db08722a62fcffa096b2cd7133d76ade54ef57767750b9fd5ff90f3763ef4ee93a0d82588b3877500f39ec6dfe36056a4ed599eeeb694377a7621efc2b842565ce3fde3eef65bebb8b40f09c47afd3b793fc4a58fdaab705634b4d78c828f43ecd8ada42de1664beb10f7bbd749bf97889cbb98bb5a9c8f7d268dedb532ff650d09dc5fb66a9d548d0e966633eda3a038c781f70cf5c906e2655f19d727fe7d8ecae21cf7731887499fd6382ea86f3ab0b731e56d60fb2d62dda1ddf778b75db3b58458278629aa7df619b0b6a16d60ad3660c2a57dbdb359059ded9861999558a7ccbb05e748110fa4df42bc0e6bc8e7a6755d05fe96e59e99af84b5c1583b551b4317b550b8afa036221bc740e3a6077e9d28045cc79ad74849e7af740f29a685d769d8a9aa1e28b70fba1f2f8ba7d6e47d7a9e2d448d99ec2704ad5e176c473cbf975190d1bda9bb63ed1a193a065b7a27ff94badbca3da4fa92eb66f9cbedee3951f0718cc8d9426b31504373768d03c67df77100de299bc665c93aa49cee58abdebb24c3a22436561ccccf8df68d2deab71a7d4c650c31a61b059d77f5f7b5760fd4103763b185d62e7defe7a4dd3bc42217c5ea5220f70373359cd15afb8ea6a7e0896b166837fb9ae69f88a5a2ce658def86efa87122d31825597fcc3651ee5fcbcf40ce12f85d811c72d5ba25f91e327ffe2586dac3ccfe3154349148ffbc26ce7c9d99fe6665162de4989803df2070ec0217d5753d0f3adb14f7d4d6e4bd2b71c57577d29addb94362fb42eeb0b572ecb3acbd326278d17eca3404781ec9b54745dcf29fd2fed3da3797bbc481faca5b12d8c7557828683c9df265811f8e79c2beb5499cc1457e4e0ab819ff8ed857aa3f7aeb5c58dcadae5f255d681dcf8b9c425fdb8b6ad722b1e5a97e7775dc347b5edf3b29ff16d314bcbb8e71c15a30326f911325d9f4d62c9648f7d3f564d37bc5388a0f784ce86f07eb705cc780333936fdfb046a3d7f7f8fa6cf2d22b3b8c73ef409ed1faaa1a0e647c43b326c8e344663b52fffa8d91fd91aa3759b0c7f0c7c9c2a57c3a3fd65c0f8c16be3d9a95b420d3c1f2b59cff2d37bf379dc90c3c31aa85d1ce6573ed71e613fa5f76ec82d301cb8c2e7a1fa73a367bcc6ba8d2967cb5b69038e0dc7e28ada0b38a76b6a78197e0e6d08b42b604ea02d61fa372daff24ff87fbfe123c19e48b1c69d1c79b0d47754fd90daf9487375bd17a6f70f67307208c375939d777973ac36e967d00f869cd3037b5ab1bd7b92f605f7bf55feb8e1acbd0abdf755bfbbaf1b27765f9aab48dd2dc66cc3befb4daf83d19e436ccf43da52b8acf13caa72ab414df5eaae726db8fdde3b7023d9d7cd9bd8437fe7b92c2f52a9dd89a0befd58e1d413ef6be429f1e70a9d0f0fc688cf517236afc299b24ede02fb5ae5d103fe953f55ff967cce731595f76baa77f4834ef163d82ba23670d243ee01f7f83df3fbc4678ff842e4fd53e0f9693cf924f859fc560dc7e13ad7fa5fdba3d5bd4ad2d796f775f23c6a13f9efc41fabb38b5e6aee93c87bcdd27f4a1dff1d71a9d6f92df0efc82109f1929abda9fb6ff4b1c9b975c8b3d2a6bad473eeef4a6be29c39d634696745ba05eda6fd98f9e0e4da67d2e723695fd7f1153af6ac38631c6c4e73d03d3666fa3ec57c73c805d1b8b274addc5f3c2670cf88afea14a81545798bc86fb81f2f6bbd28f104a8efba92b506f104d4f039b3fa53dc9f2b7d43dbc8e20bf27ee8db748ea2efbb65f601c357aa750ad5b9d9b0d7497ef0b80137c962914adb97b87fbd9931ecaf73332f22f354a49bdabdfc48ed487116557196bc566ae5d88704f71bfdde0d38fdbf163390ed12b0c1fa39e53cff28927757c33d4dcf89e39fe3b6b79fd09822e7ada5f88631d7f27c5acf163c867973fb2df2f737f7b97b98f4316e39dd742df779f987d0ee64714c977fa662c3702cd3b697307dcfc9a26b34c532a745eb131e2a9f723a9e8a58c31368f1532d3eae8e27c585e83c1d0f6aa9f59caf9c07fb345657a983fe7c3d2237851cc763fbc6528a3924a5d58a423d17f938c68671236ab74b1a67ea5a57fb6b8ed75c1ad78b7dddcc991fb9d9fe7d73fdadcea6623e87c873913d52e667a56b146ba2de6bde5fb1b7458da26297bd55ec12395f7060bab5ab45f7bb7abfce310e3abbcc59ffe13adb8a762d9ea1a2ff33354fd21c6fb4794ddbe177fa92c66e133aa70ef4ef8cfc2761c9608f18eb7c517f53dfff528cb826f659e573aab133178d35afbfe8d7706e57d9fe9574f06b9ebdb4ca667c22f379ea7fe7ebf3a02166cbb5ed94f3cdc8d3e65adfbff0de68074b584945db87d9e7bff8ceea39b9c56b00738a5c6147cdf697fa9c9ee3ed91f22e34f6d588dbfcc53d0e39051bc7fd511b8ad778f36be3c07f57a8ed619cf5884f9479dcf8f8635d8bd68ebf7b4cb85e647f44fd294fd15894e339643fa3d8f44bcdf87cab5fafc8ed98d4da6b51fd6f96568935e4da7c24be973e4703fb5a7b2deda7caf50ce787bfc9e9f36e75f6e4cbe6f1f75fb907bee367738af7d1c3318777c1317a4db775beb097263beacf95e8c7a978b746ac958271039b0e734577ce910c352023b59e826955d1672963bc68e6f451eba189dd8af9a494fab60f9f45fc8130076d0f77787cc08d7055e6eea4df536a9aebb164575e8731e92b3a75805f9fdcbebf0b1e0b234f873de09a5f6eaf16bcd390715ff9f764d1f94f7aeb9ca2b097261bf7e896c589d60aff5c059d7d1c8e0ed970364d4c0bf0a269699ddc7ed68d4a7b1307d74bbaf3cf99539ce285b58f838f6b1c8eee1393dcd73a24655ea465d1623c1ea33b8c01bb3fd35a60f7a4fd9c9279714880ff71aeae6b1ac31d817dd43dd15831f084af0283f735df6703ff94b4479d85530016eac7e22abe73acf788eba28b585ddab26ff192f33db3bd721e85de1e6a1f20d7d2ddadf83dd5f6f25ad51b7fafd62ae874266196a765e79094a9da5e1183e435c6ec1949509c570b83b661c934e44ea276477df62a207be108735dbcafbc43b2db9ee4efb47190b8137e697c790db776bf2be92bdfb1167190153f865dfe3ea963b7567da395dcc89a82ef2a63b70a6701e4bd07aca6d9c3d8b8d4f71cafac8ffd17f96478dfb47a1bd4d7b36e980f328a899917c990d88dd34b1cce4e93af718168639a5f562160dba06e58ead77d6216f7ac6f9c13f3898f67caaf4b19afc0c5b5bd576ff0fd1bd9d752e723470deea2b5e2eba6ca93c238d99177dc3e439d35f16d796eb0fb31db9c24bb95cd3dc0996c65be160d13d5705d7eaee1d17ee7ed91fc3af19b35b3a3f97554bf42a96d4da49a6145970bd708d40d621c13cf7fbe1ea575f4a91d469e1178826fc5be6e96a565648e7f9b2cf303e00b7785a8a1f91f1f97f9076833d4c599f47771d43c03c7b6b2be59f4aa3c3bac2e445c57a9c37ea51a6755ac046de3f3499ced3b7d3e7c660b56df571e1389db1cea45a1b6133951ae59303aae82e97aeef746547fed9a855e0b35e8d958a2c6a9d83f21d647b5b2a81d499fd5dc56251ff493e613b7f33a5e52bb7a068eed11d943e06c0f2907e56850e1508331e373b1e49aa98bc4b45a6f01ea78a89a99422376595a976c60504c692fcf1c6d9d2ab12c394646ae5d7f237ecfc4b86e647ea42c1c1d016bb6b15277f3a1fc262ded537adf032f861cfb4a5bfe5384f6209c0909e52e40ec847b09fba34add5d2d773def33967fabd45d62cd969cc3a17a3b50275fdbcf9a5ee850e1f290746ec4bdb8862ff72f680e48d812df04cf149f7367f17d47bc2fe291a94622f96fb08ecaa2857ac983f5cab1df5737c00c907f9bf1026a7eefc8f3de3b523d65d0a0c11cb8b06164cc80d0d8409d09d4908335a3d508011f12e6bc861ebd16f43040b3e3d51e15ac4ee495f2c6509c05ad6d065cc621738a5cd2bf3bbb035ae7c0ef7705fcf10f493b8eeea317c471f7da2bc757de815ecfea28402783e9fe462d6fe63a31fa00e4dd1cc1c325f1e4325e2ba8eb06fde5b090df01b8e0a205fa1bd278aeb97e19f459f73b5b93af1bc43e325dfe4921624a54bbf01c9ac5fd0deb3d29064d60789479555857a6ad26d9a56b86f994f37594279eae03d441590533b187abf1675ab7d93192f283cc478d0b4d9ea3e4fcf4cf5abe5b8ae5557269c8d55ffbae35b146b1860aaed552c1c376d7f23c7ed948b1443d072a730cf4552c43e3b39bfb593ca726562862d99fe853d0e7d462246d0beb2a80ff88ed670a7f28dff7997e3cddf729aec03bc4035a87a0db00d2d9e339c5f64dafe1ed73adad9fab70366373b6595b377fd45f15fe32d069317d6aef2ef7da3c91fa76cfdb91320dbb5675df923559a51ad4c7fda3d76a3ce8a3c65a678eb1c177ca820edd679f0e6ef5335e27fb5360e07e225ef23be782d5db2134186b3180ba0d69335e7e8983ea2c71c21d75ae5fca7ba6f18ff275fecd557575cec28ffd50e6bd7aa6d1dfe0f84ae7d9d3517d0eda1c2f9bde82f85ea8b36a9dd2a1df8afdd125697bb308f01eb9729e4e4a092bb393ed15b54dcc4fe2f6e1339f4f8dfb61ad2ec3e2ca7160cc7ef6828f027295fd7cbf427ebbcea73c7380d5c80f89e3dde2e0a9d2b7d27750638531d48fbaf15235534be17b70dd35cebf58c7c34af713e0716aedeb6a36594c8ae3bccc5991b6a7e43b73b2edbc7a03ffa7b7ec043c2749da627a4695eb428c6d5a1b73851a0e7e06bf6c7a121e757a4e4a6b2be9e8f0beae5cc7eb9c951a8aa3c41554990b4a1c8d63e834bbb27eef3deb7ba8cff4c1b4f53b46cd9c79d50efd9d3eedfedb1df2b8d03e25fb4051399b999671c3ba8598789cb4d1b744ed8ed93e0a3a3bd95e91f6807f71fd0c9adb936d6f7aae7dc5bfcadde70f3617fec5740d040fa558d3689781e6c0edc7a2ea73b138dd3fee7b0d681bfcaffb60f2d8ebed54f7f0063f44e6a7a675590fb0119ca7bd061bc1f10f2ce74b3972bed3fb32ec4325d71b85a31dafd3fab5fa2dc1fb615bf46cf2945a6fe423ef509d8afa3199f47b09726ab4c83a23bf698da10dd3c3437f4b5e03225e3143edf8c2657b07d756a5fba7643b08ac725be22d111868aa358ef604f02b68638cf7a435b5ff8d735e8a0f285c206cbdbff1338fef9db29ffeb5f348f8a135360cef33bd2fb0f620676d7fd639e443a7c3eb5122d3bfa737f25d747edb5a03cfb7ecb72212b5fdc3d1251efabc7682afdbca1aed5ca57301f8ba85ad46fdcd01e0710e7138fda661e37339b7e7022762d15a05f67101fee95abffe9c05c686d8551cdb64fa2d3f9c21f77249fc4c83dbb2ea7943f6a6e951e6ef7ea3ebba72b6edfc5354fa37a117f7c979e96b67587d1f359e65d41fd0e2452a56e977c6cc7dfe2ee53bd6b9668b89f9d9efa5eefb075bb7e2cc70687d1dd7fd14eb1d71894f6bdff9be463d93c13a6afb640d9ca4eb20474f3124a823eff03cc41fe2acef59116a77b6e2c0de628ca5c7f3263f6e3dbd6d50cbc8cfa3a181b586a0b584fa9cd36769ddc8589081acb5d9988357c6a1e10ce23a09d53c5c3e5d057111b58bf704704fb57b73bd0ea4d2be757d5d477dbc8cedf14c0b4d3ec30e5843fbc53dd629ca38987522d0c87dbcbf7e6d2e2b38a4c12af0d0c7edab9ad0927e2c9ba397644b6be517ba0d6e9de9b3146d3ac661f5c8f7fbaa2dd9745da38d29fbe6523bf9ef6ade817da7ea235fd75c2b4fb239bffa4e9afffc682c54de82af8c07e7489b1ff4f32b91786ceadfa7ea23f158c14ed60752b8d0eaf4c3856e0af1d99e1f9c91d25cfefc7cfc5ade222d89cf8c7ae5c8ebe1df614f62b148a7936765b1031fbc4cd75198e53f586ede19ac5373768b03ff3c69e21e27679e695cb37efe53e1a7461bf61487b37b1464c831db062e7ffe996c6be0771ec46ba56be16f257760e61877b4ad5b1c445bf637e8b0511f04ce12c0f874bf29d7bd9f6a39e31bb8af99bffe0cb1edc0003b8a6197143f4ec453e478562ef18dfffbb77d3ae0d0b06fabc03e67fd9c62e6849f969af9250b3eb6944b04cead573626cf4f6b7206a156b7ea6331bf4dcee5339c5cddd9c4f948c26ccf6210521fd5c58e6be7bda8e5f15b2bc7da52be6a761f71ce97a36362cefeace17e6db67795f348b57913b383fbb8a6a5cb3fefe7f738f8a8e1ba9b15891311db9ceae8814e459139f925eee77c2e6b7a5372ee8aec43a8bbfa5679b69f3a18e74c4dff186fb43db45efb07b566d93e266a4390fb8fff5d1337afbccbfa50e577f88df7adc4b6a5b89423618daa7d2f71e1c173ebb4658ff1a6738b03d497d7f906e5bd81bffbdb5efcfb13cceddf10c362f3993e8fd7016931a84ec16a35c6f649f90efae4a661b776b316e8f61bbcdd73dccbe7cdb1b221ac4ddd0fd924a67514fe01af5bf926d5b82eb946188f8f79f536a933cb2333c7bc25e82075a8b682fdbe72fce92a300e80f9781e5ca7cf180f927f3737d9398fdfe9759a64df5a051fc512f03d39e47a756dce2898ed63ff04df858bad8ce98067046d88fb66b2ae4d6cfae73814dc61801fb2bdcb92d699d2f8ff21216b119eadd5d6eaedeff7b01dcb8f4312144aae8cf64582cf68614d18d50648daae7edd33ee3fc73f9bebf5b322297de46063fcfaa817025ccdcba1bf499ce2dd1dd8f305e56114ef0bf8b1dcb5fdc55b5fce9d4b673cbc2fcd853af62d0ac87af76fe94d89af699a23bc4dca5851dd9f3c09a79aa616e00168fc919e2d15deaa35f2de6facc6da7d7aef87f7010c01f0cb9eacc63e95db43310ac46ec0bee87ea375b88784e2f568fb0f637effab12af8d43aff58369bbd768354f6efbff506d972572e655c72c296d7315646ccc88edb623cf4a02385b91e77b981d48bb234de3a049ef7659fadb5538425effb6aca7c2355130a712b07c0ab7adced5efe47c03fa5fd44e6b2537e93b6a73610e5edc0fff56f01e468ad813b01d47ec6f656c890d847609d426a29d78cdc2d95ec70d3dc8c3087c18e85ecd88af799bf47bbc1641d11890f8ccc5196a4bd8a3efbf1de3a8b3b720a6518086ed7de55846e2cc51371bf56bbf4b63f82fd7b18c6c383bc4ce721dc918021653a8b517b7eb974dcf4ccc62eb3e77558e63478d8b0a1c9d888b68f610d467452d15ffc57fb7ab7caf3d8fd912801dc0f1be89dccd64879fbd6ce4cf38ae43bb97941790ebbe444e715f33bfff2d716a400ebdca2547e65c657f6b25b76bcd7ae988fd8ecc4fd37fca1cff1c0fa77bd0f6197a97495fc151883d98d8837c9f66fb0cf12f45de92d54565a157c4148745bec73d48cee98176f765fc86dc963ef8450c3b3302df0e342516bd3bd3bb91b50624fc0a6882610c0d6a0425dc46ef900446113b0569ef11f22f6aaeff330cc92926ef6ecef752def750af1dcb34d13fd731aad5f992e3426afff338cd8ba22d223e1f5730279fb7bb62f3d25849e519cc1758a0bf817c0edc9eafd8bfacb62f0ee3a9c4a966095ca758036aac87ecc9db0a1f00c5fc8831ddcd7a69e9db69e8e709f52d143c7b555f4ba9c9abd6019e0a720e821fb39572f1e5a9f8e1ab189bb1ae5ff7c5be96f3efba0f9039df611d88fcbcaa5545b941fe7a6e41c2b0d11819b5b7c1ee60eb12cf292d0e1f95d645e4eed10ed3af617cc5fcdd86dea59ad76ef629f8effbf5b9f070b15579cd6c3d6f2bdbf5cbed7421ec29d99e7f738ad32a9ce3f78f6d7e7a4db7aa21a0d95aa3e701b5c1afeba4dda3dcb0badd02b6336a1b109bb1a0b5fcfcfa4e41ecd9f1ad7781f897d9613ed57bd6effee93ad615e73fe08dcea959009f82ec33401b06c2dfe17de19fa8ed2f71ded2771d3ddb89681b6a86fc68ab3a69f27d99af22c74beabed7f561318f7a523e679c3975fe0db55f8fb03e415397bfff41bbc73d0b3e5aaa5f392a62d37f4a9ff7fc19c29f84fb7dc3ffcff4d826bcafeae7cc3f404f59f117e71f4afea8e6fde19d68db5e0436449b5f0f7c28a8d9f78f8829ffdc7f4a00179d634c74d1f397db2bb60bb1f0c04d1c2df02c9f3cd0b8a1f7917c087eaef379a9f9b7fc73cae1c4ec3639a62c5f23e9111bf55c7362ac6b752ac8fcade15a93da27e70da47b2daa76cdcb46b48defc16f3a9f17e5a7e56b15b401d97d8ffa3da98eae58afb03728fe067fe6c8419cb8fe9b38cc896f20dfbbf8e140bd84d5f07bb9ef898d4a6d69882957ae5762d9e2b95bece76a7bd8e79a6e70ddb5f23dbed6a621dbe71afa68382b92ddec007c070bf5fd273bf93bd9576bfe8d7e3f3d164f6ba0894d2f8db9778f83ce7d855c940aff191973b6bf4975fc180bd2eb78704ddd898f40cee978a17268d0f557c47dba7efb7a0e6c9d539fbf1cd167f3981f9ef74d716ca67949efbf55b4ee33e0089d57344843533deb845e63718c7dd8a3b7d3058fa5c8eb8b9c67dfdc9af9c6e6c70bd51cd3e6b9dccfdf94719462a3f2fdc0a7a6f576c437d7da77ae9c01f89b3fe390d64868ef08b61fe4723b5a0e80d79eb0e791755a44b75c8a536dffd0f0ea27f4bbb68dbe02daccfe2d019c3c8e4570ef655a7b51cf177120f49e9d3b3907e2c5fa43c2fde0991bce6cbe5f48fb385d93465a5ed576b27d04b52278fdca83f924f4e5657f88cc4d72eeea7b1e680f32cd076fcf380cc9b944e7a4b476fd5bc2ef21d7cc502d8c7074e47c81344ec1be7fd9c0bbc93100e0be5f39cbb598fb3da855445bce625a14fe722bfb44c5ddc33df89bf46ffdbeed95e3b7985e1fcd69d11a0b8fd80b5b36ff9361515b3784b651e716079e11994b55f7097083dfd1065a40ddf3360ed7151f2409fc53629cfe8cc3ed3941be303247e87c9925541b3fd37c1231aee4f777351f446ce7b1586fcc273932ceef06de42326f4ee9d0ebcc05166b2fe1b2aa3c84cc27de4adaf4e50cfd5a091b34a6fbf4f4b941ab338cf36420aef71cdf947faff0d72bfb2aae974cf0af493ad9f955d50ffeeb3857f61cf0d7861277795fca91d2be011e30f91aa7ab6a224aef17f555bf3dde504ea47e9ebaef348f4af9c3786c1b78c0703dbefa1f29f0a8218f127c0fbc4705ff1c6ae3200f8b9c66ff9af47b9b2c9caf7f0496e1025f277227891c2feaa828efc3eb3e7b05cb83e2dac1d86664d7638dc4f989b871d41262fba8d0d1fc045f40d725cd310c6787a4cc8e7c4f72ec73dc5762504a9c5aad935c36d6d82a6bb8019fc4d641681667b27fac428fd553efe9fd7f0ddb44f15e0d98cb7a6c2a68327f74781da08c8dbd6dc1cee698de1a7b98e263c89ac1f9b5f8a4a6e7d77028143b851cc1af0b8193fd95b8da6fe222b6533d1f1dc8dffdb7f11138b6af9b1ef9ff7d157880097ce5b50f98df7d011dc5384fcb2227ef4eedd81abc7bb73126cd6ada38ee48aa15533114f30fb976a57a5fb463eaee591be3d670cc52ddef96d5fc4e6edfd7af36e54d7d7e5a47c10719efed8f851473eecb67fd9a7252fb77e9dcfe5679d68eef87b83fd8f0b71ccf3b4bbef451ff3de631e4f9d1c1fb3cabfc6512ef19b53bb5d8bb720f3d56a9d6927da10e89be8b5ec357e11fa538778f9e75e02ba9fd63eb3153a9ce548cefb6a6f6e758e17d9575876a7f2bed4ffa7387d2fe41db3862f59c6c6fa15a59cb21e3c4f141cf2d0a9ed671605cb3e1761d51ae2ad0f891ea94a25da1daab821bf6e80e6717cc6f512d12aa611685f35dca3595ec7b2ce7181ee8582a3611eab44bf60fd3bca1364f35be2fd9285d4bf7271e7079feb51a3b9cc3c47ee1b5de4a5c9bdb5874fe432e549e2bdf058fbe3a87eab820c97a24f77b8fc3d97d52fae76cd379796b7976d8f25f7ca1a944aed96681f2bb82b453d8a09d411c46729ff39af789a813666da7180e58d3c2fe1c2a6b5d6afb5e9bd3df3fc9ebf2735caabb27f60e9fdbff16ff1635ff2f1ba681b3ffff491f0a3fc2d5f04efc8c97e62dd8176fffc51abf4573ed855267a2e91124a54f79e496fbc050be03fbbc92df801a07299e21f3a96bf833799e8d45df0b9ee8458d866e2ddf79b71c6dba7913df500347fad7b9592b1ccbdd9ddcf6d14de349be7577d4e6ddbd6c844663da97f4fe175413487067c958eb1a2ee3272dcf49e3a7955ac9d1253145bc40a9fdadd79a382a71ff6aede539665c928b3ca9c5c8e9d8b992f3d0edebaf2f32510fccf925f4f6e1fce2f937296ef6f6f89da5785c35efd75043aad42e8086525d0d8266e7ab18f8dfdd97da51383aaf82ce6edc1fe8187af95c6473dc4ec25eebc752de871a6b95f12cae7c2fd7587ecd5657d731b1553b5b8e6796630cef4f8073a09a9c90ab49712dfc215f2f9d1bff7287d92171aeeba85cae5741764eda23d03e6bc041ffafe9675e37f8d53e66e7e4fb5fee5fb6a6fe9fe85b99a71ae29deaf7acad87cf715818a790e7efeb067193757df84ff593945fad8b13fc3f517fee2ef4da22c92fc698b88a6397b01e937e7727f9e83cae95deb471e1b5e914cb3af4a126381b8e2e89f341cf42c4a6a5a5754c1c7f0bf9d54dcf5c05b3c21dc645ba9be5e3c5d33a082cc3758af32af40e51f071fcb1206bc3877502da4712ef924b3526687cab05352b43cec7b97549df2f80cb28071decddac48431fe61f5b93934d5a1f47f85bfabe523f29eb31429eeb6fef7bf4776e8909ba67a8dd1b74bedef74aff0dc83a97f87aae1bfc5eaad3753e3a54e3f19204450b38681ce0bc3a03a6b9ed6f52d3ffc8c04f101c52a35b0d16126bbcac2a2ec5dec6838f220abc4352666f8963df2b9874499b0a735db37d148e7a597f7d1d2fd45c0bf11d30e7b7e79f8de9670df1ff3c76bc7e14ce0acc85e51bf1efab6c5ba958ebbe2d5d27e7c9f4f89254a759899d289a432a3603e336df1afa4779b6aa05da1179bd1a8cb452f34e6ca8b0f74fbe3be2884a56e3f2e9bbc8188dfa775a90f5e7153f065639764639c40a61cd76af4ade4fb45d9f43127f6afec74ff53d8fb2ad2763481be26a6758036def46dbc2b921c69ff43df3b37d7f341d4bfd5633e741cb31312385e7ac0e63f2aa6ac27ee3f845bf121b6cca85316ca94b75de6e638625d674b0249dc346ddab7f08bffd1e051df0af46e194727976bf33ee5619ab3de138478f6aa03cc06e573855947e3927a675853c455bc535f9a8e36e44e5c721baf55a49bb7b4a1cdf8c83abcabd8263056d84b1e271f02788d34db0f6809ca79b3898e558435fb4683dc37b143cedb27e2f8fda9e41cfcef715391bcd25c511cf8c743782f34f9eabee0034178a28981f71ef3e18691bcec8f7a43ddaa606be87c2a12738080f70be4a3ca49ce767d3f353d32fb3e0ba4e02fb001a7fc85558a46d5ae71a74b6b4fdc0df1d87ee899dcdc0f3399cbdc741274fcbe252a983412ed2373a1f799dff3f96bfd2e6cfa45f9f7f1a0bbb509e1f7a3b552e37e492a9e4822a3a3c1b8debe5c63541689e0b623ac079c862b2f83b452ffcfa0b7ae1c05f837ae188a39475ccd9e7c26e327e99af93e7ebeac7e4e8da27b88fac690cfc37b7adc651a073dc749816e53c0b3167a3e6c56af6540d43c0723ca226c85f26b75cc15e87fdd1dcf767aea293336c3d6acf220e7bc788d85fff5c9b169edf9bce9733fb17da35a53c780f7945148c45695d52e1375af2dc65ed843dc8f928e6e07b1cff967bff3a3f23ad8731becad3c8ebf10b1f73c1ca5e1f85f12136c9b9e95dc6aa8d96d3b16ccaf9b29c10cffdd6e7a3f4fc9527d9403579a292d8163e625ad5fb3cfcddc811bfabc135521cd25e6ffb16ecb500f3864a2eac727fa53e497ba78ea85752dbacf08d579e2d719aeb18c71fed16e01bb5bee3f79330cb3c2f14d11806ec6df4df75d7252abfe8439fa0ae064ab6ad245c9b54b3c5b072cc26f3176f72cd9ce4bbff7d3c9535b9d2bbfb6b73f3eecaf3a13ace77f7dc385fd4f9a78ff5ed37e7a7f2bb4fdb2e73e46bf377baf9ad397a53e6bd5e47393c59f56de6bf79b8a6a61befa8d42055db2c7ddfc8015a374edb8aff20b79bd7e7d6b55dda03750c6bc8b1d45fd15dd8ebf79ef47b49d81f89f5e583dd9eba25eb2f2f75f1cc536215a1820be8a99a020bb93e08d639c5d8e4b73888bed56b25c077fb0a7e593bb7a2c0dbbe397e0e5cb8c6ec1885b3fd589ec7fda3eadbb19ae666ee0a76a600566d39b0e661df95bf5730149ff9ec9fee4d8b4a6d30e79d6367f9b25243cc6b43abd796fe3571ec7705c7ee6497973a5fd2be6e62d34add8d5cefdadb25ad511e99c76fa2ee95f81fde91d8d1617f44bf3fd5fc2ebea4bb2c4fcbf983dfb26b3cfdf78c17b8f24e6f945b5be1e943fba6722dda3daa1df365fc82ac2d50a9691d15697bae6219645e60a7ae76b857a90d7d91f41ca47abd47796bdd9781b8dd58605eabbc9b25d7fcffd5bc02b7a32afe5773bd9f98ef7a8e90e71e3f2ae76f235f2dcf612b3ce67f630d60a19fe57aff9ef16cb75ac80ff2350e71f59cff1be2d9e123be5ab71a5fd9f40eb1d941ee58c4a2f35a721a473ebbb6c7f04739c427dade2591ae837d7e83f85b8c77281c7fdce7ff19404c9aacc93c465dd4b5ac41a4b7cd75ecbbca25c8b186cd31e9e6984e6f39d8524c1ecd3ba15e14e4fce3b2b8a5edb98c776cad1cbbc5eb53c2a982c745df85eba8ff537c836f9959b42273fd8b785cd6aeff199ec1659bd80e507bff3772b8ca3670d7aa8927fc97b82d143cee5fc138d5e165815713733cb37dd2f68f711f3128b0ae9e3fd87cf85bb92d788d51addd59971703eee05a9fa78ac5e578e823c787a2064b182f30a72e30553c477f26ebd40becf795ce1f5a57b3b1f32e2c8e365e74ca55d0d98efb3a9e322fd272b98e4aff3d0a612f6b252dc4be403e6338a5f5309007cd21bf0ced99af63367f8653ccf50fb3c275bc0babb989824e4baff9496e3d7286ed6213f631d0aea6fc8a64af659a2a503f9b0db30bcf73bf75ee9cd39bad0fdc97ef8085529fa3ea4a87f375ec14655cfa37c003dafee26d383d2b78ccda9a97f8926efd3c32d7fb2a5e5ac2dca91a258873a8dad852ad1ff0d350bc3be452990d75488d384f9c622baf4d7abf3a9e0351af013580302e158d628a7166dc48f47e2a2e106b37f0dd45be1d74e92af7936aee682ef2bb5aa3ecd4eb274cfad5dc146df3596863d768b0301d28ac99d3fbc01ae3fa95d61d5d4f0ff81e547f85db8602232bea178e641e49e3c1fb5cadad7ca015a3f9b115acfdf3bea6deae05b97dadbeef213f363b5ffe2bbcd8fc2cfd2d4ce63931bde26bb629b533351ed5dab3b48a7963dc8895b86d1347e2dfc13bad63ace4f363b489d66ea870acc89a4647b79f7e67eff67fb895ff09dc8aa86591cf370df3c67393b4f64fede721f805da7874f770a695c57bbce8997138ba478bedd9b521e77b657a2e711f73a9f57dae8c11d4f925a671c886f0bb03e0587eb9df1b74360603c12fe7e487d8cc8b74635c52c0c0abe72bf0580433b0f5e8994cfc1ce02a5c8571019c187e03f72f70d1e53caf58ab9d8136ee7615ceae896377de783ee0ba81fcb8d0e363f5958a2684ae19095c154acd1dcdfd630de521ecbb7f28b998c154cfa13c0bdcbc96071d66b728ec5d51fb92ef458b3888e0bca473b29d42ded05772afcbd22fab35f446be025dbd6c2ed5027d495756c2a327617fd4f8ccb03fcac6b2e6d62fd6a6cc4deb0cfaa1a1cb6a912b36513d97d7ff24bf31d6ddea7303ea6b37ddcbdf5dd7f795ba484da3a4622b11fb380a0ac0a82e99bd24c5dd6b6a01ca974daf79dc657b48d692abd1769adf3ad5f5e7a83ab9743f799e14756b007268f2df2a37ea5faa0fe9aeddc1b499d396accdf688f8f1452cfbf6f6a8882bba19bf532b805a1bf5b5095e56add9372ab6dbcab10e69db63b1b3fb78303dba550d204bc28e9033fa59cee3307f91f8c47359ff56d96ffd7bccb584b73a2fee5f8a7192f53c16bc887afbea6aa10eff200fe6290b69ada1d035fed7eba2fb31db3c3da1069475a37e248be391360b1d9f7ef18b6bbd8e338af4375fa3fb1a5d688e5593633d640ce51cc7ff8d53659c242ec3f5e157b9e845dd3c3feb947e90f9f8f5384edd582d91f3f82e6273bdbfee63913d6391737ca4b2ae3907cb48d82518e3fac7ced124f4efecfca47bcdfaf5bdb59ebe45e7973e60e9987d487c0fb84eed9bdf5f4f7afdbada17b27d21d5792b384ef65b16ab589f294ff59d3c97f2905b1a2e92cc09b44d97b27ef55ae7a5fe6b67577f2078d6d4fd82e360c57cc3dffe63f155c700fc24c455a9ade23e3f59eef3c09cbcafa11e25698fb671e8223e1ff499fd7b4cb59f282fc07eecff62bc558b9b6b31d7ca7a7f5178f3793ceac11a9663421a4f22d444e3f794a7b7019b2d786a782dfff3dfaa03a072ee0db343527a97ecc6c7d3484aaf88890d1278ea1c421f699738d6260aaea42fdaaba0b34ddaa9c6770c1a7d30a742c3bac17e6b5b37f4bf463fa39d7f481cef67685c372feabd3759501c11275db5af22f370073df6edec9204c625d91edeb43c7f919a2dc00078fe749d04645e7e14a9aeeb1e185bb84fe1cf3cd24699ff4fe509a6effa91501d41e2dbeb9fb17e2b52d3d0d61ceb0fee53f7c5fb41bc4879dfc0cc8e8939ca13fb0498d1f0eda47336dce36076494a2f4f77c5e37b19d74d1cce4ec4ef62baeb6f2deff565d3ebc5ce7c9d9036d1787bbaf30e91f951b0d8771ce6c4063f24bb29acc5d8f15b51501c5d27bf64f437b0874a7d3ab97d27eb09311db7ee8dd8ed71191729d895b46d7a3c7ce8edd3d26a57ea88f1ccced37229dd137385b416a5b11fd0b7a2cfc33c27ab1be6b950bc47771ff6473496d1cb29063ccfb0f6384f8047c2ebb843b21e3a429788fa7442876f64ac828f2df557200f2b7322e15c673c12de9ef855e9add74e4cc0a2b793f6e84f77383ac466de02bdb57a4d4a7dcee17e0de3eb8abd8dd54890f1a379dd8ab6a3d0e7382adcc0bc46efba96aed5f3ec471193bdae6bec4ce0d6080dcbadea09cb1c32bd3cbdf57e860c6bba95fccb0a9ff95589fb4ffaaafd4cff9ecad85ed91ea0df2be7eba4df23efb0175a77e0335d26b7e93a352d232d67e48cb9a6804ff2176fcf06ee617de3c6f006abddf49c04f635749e3693fea8f831c49c7becf86514fac74cc5b64b7ef65ac2d073bc0a59bfafb4cefc1c85b3fb2ac8ce982f51621cad281cede250d66fc23cd618f78703e8a4be1dd7ab45f77b030efe0fd7a9eaa5625c6976c9c2d17b5cd54b3d846f2aa78d8cbb079c3cd42db0dfd7e7a5de185e448da7efa370f69a991d8e75fbb140dcfb98dfef0acf18d76a0579795a664546f74ce0dfa5631898c07bace92419d2fe63d4ad357e6e67a40f4cbff500e7238debe31c3ee64bdca35bfa4f54ab711b07710e1cc60a7ea046c3773833a22de0e4c87def19f1fde9df227e295da3f46fd772071457c8636ccb7ddaf6495f3f278e7da7716c86f56676cf3d0b6abf879873daf66ec4e62373ef75215d4b39c3d2b6bf999b1f39b1514283e2cc0deb278c8ffcec3b707b9035c4f82be7b23d09d73ff06fc076ed678a0d3a827b22476b5afae52a24765b77b790fc36d789f355f051c47d62bba85c86b2ed4ade35760a865d17ba52ba7ebe03e7d181e6589ab08f8a4e8064671c5243b6d79eaafcfa4e7e4bda29d548f66f6969dda02e3a880f3f24ad297edffab395f7079c93ef7b7e160a3daedef79ffdee6e74dbcaf56d75fb9bdc4f7fd07d10b9b9b7792775a8fe5dfffb69dc7f3a4c4ce8e7cff6c9f728308ac429bec58b9cea5ca4d57ab9218b91756eac4e643c1cb93fc2debe2657fe73d2efbdaf866e2d1e2732f3db64e75dfcb0077352d1ee625cfcb06eb9c6aab4e6695eccbe6ee6ce288f4aff38698f8c64e71d9260795939fe31057d228bd8a517fe3b6af772fcd51763edae03b972626b76a3d2dec4c1f592eefc73e614a77861ede3e083bcc37d62faf764f1b57bd23c04c78c45b06667106be5efd7cfde61ad9a685bc2fa12fd218d19bf7e9b98ad93f4fed235a9f23ce6e3638eabbb4bf1ef9dd23fc323fae2a575c960ecedeb7238223eca933b6cf1df4e36d672e5f8a7d8e7b9c2db88ea92337c426acef26430cb213eafe65bae513823e70ece01f21ce133095faeeddd80a3b73a67c89ad2e6af7b98ec66c715999fcf039c4bf41c05ed93813578bbefd77160503e640f78355c87ac69b477c91e0e757e88a1c95d876b82c3b8ce7764bf8435fdddd7f87c5e374fe749d94b93cfce1c5e4f0179b23ed98b705fe1fb0570dfc58171d5f265a08744f1fd4512761f61f9c9f7b2af865a4a5a7c5fd26ad272013236bae9375e257fa0d7bfa48e7d8f4cfb3807ce36fe7e0749b3a9f9b94aac5ce845cd1bb8ebf81e674bdc7ff4ddd838d01c8b960b1cdde71a5f5eb55e93e57838367b1107d15eabe124ed23763cf97fa5de4a5eebbc6defee59fe5caf95127383bfff6d528eee6c3deab524a47fa71b2fa739457abdadd7cb2ca320e5fa5aec7a7dec943e21b6713fdbaec268c7c7eedddd46e154d381927917bf5a5f01f73abaf629754bb4a9de94ba0af1be61df85b85614ce52b7681de41a3cdc7346456a5ac7acf4b77ccf62b1c59afd6cec487dd9e7f6cba18a89ef5630af0fb097a47f758d1c059b14bf836646a9eaea8b7900d8277206b4f00c183b52bf60def09e981f661c786c3f3a885cdf754d712abc8683e7ffb4b93e2919f7a22772d18ef619b531e7bbd9c31cfceb42cbe7eb9cfcdab3ff3b673d8d77d2b37cd4a67860ed4c95fb9a5f6b629f439c309cc219c97d7dc159b91eeb79717eaf1aee81fef7ffb886f57369fb0bcfb77e8e370cebdc2993f6a81d85a3edb2f44bed9ed79a3d859f91cd7b55351f1df647db5518637d52a57ea3abe69b7f679e0ebbea7ea6f4edf25057cf817c13adc3cb4d990b2c8ec46c1c1a1348256d51a94eaeb95fd9f92dc5900527a2c45b5ccd85f7b367321e22a6d268538b9a8ddbffd9ae0f6cd747632ad75118a9e9f713d36a11fb2f0a7b6c8f5bffe4366f7a9e18de9ecc6b8947752734a66af6353ab779ee8261316d6a27a20f0b63be088cddafd80180bb1e740ac671c4b8e429764ad881ececdaf4b619d5dfa31c8cdb389cb5d29dff4ece1be49af02eae33621c7779e6149b84d8a8c01fd2bb67c3e21807f393cceb95de7a3b328659e002dfd784ee7793607449da1eb17bf3b46fb1f8da46f471f7b20a67f72cf0ef93fbd47879f3558c01d571d7f721ec6b71864a369764bbc8b6a47c8ec99aa2f53690c833896bc567556dd108f1aad856cdeed16d3c6a7fd6da3e23b338c5b7146ab7d16e56ef25d5ccff6478569f8c8b6319d4fe2cd29d7788435edfc2fa0f6a4779dfd8bc76b46af7707f9fd793e6643f90eb48b90e20b31121d7288db5cd7d0b693caee46ccbd3727e5a05c66ec475177ecbd6d1b831ea6c9e1ed6b09239b291eadcc4b9f04d9917e1742f8dfbbfa5f78318ff84ea2b48d77c13d75c957d89711a09ce641a67c13ee46b7d52567d9c518bf491374a8214f695b969dfe2019917157f026c9f1a1fa3eeace0cffcbfb3e22b67c5959d07b338302e72fce11f895d48366183df2fdfa3e91ab54d8e77c80af0819ea5392fdf87d864780fa99fb4f668b688740ee23ce5f64dddefe03c6376edede922e6b2b0a73ca730976daf9338fe761ecedc19c503d6b47d3f32d706ee1b0dbfdd3cfcad29ff16db32bac443d41a6ee8d33ddbb3a2d2dafe58a4077ed60fe0fd97abd03b622ea529beb2de45e4597da385d7a6dcde55fc924d6fb00ae3373c5fbd5eda5a1b504facd908cbb6bfc99ca295602dc2a7ed4ec5f53b5e67325079a82bfd58f0bd4aeaab8f43521ebff44ccc3b37bd6777172d32b4bdb5be64f843ce0b40ceb68138e7c7fdec9df4c124843c62e3fb8cdadd5d5ddf2d808f00eb213f7d46901751e015e9a632e60eb15f8063eb0b7d11933d81acf3cadc2b4e71cb32e370748cc2afcd41726e4e02fe9b9df47e756703c5f9c11cffc674cb49bfa8ef335fbf2e9acfdeb8b46e1969af4dce5155cf0e6d19880b945accb02e86748ec43bc93142f94c96ec28d966936db9d14eb6f7e29ba203cf3976e01e151e91de86618ec47346146ba63c83ed0bfc9a78a8f007a81a0ddc9eacd3c610b69cd4ee3cbd7d1a7344bb528fb5eaf130b02515ae8adf8b856daeebc0b86ec418e5ccfe937d6df6d9263698bda8708fd0fe1d89bf4dafc3e367426fe09fb22d772cf6c4347fe5338ac5e4002f71cb1bf9b7440e4ae14621f772e3c026ef27f6f767d49786b31eeb3e4e2bbacf84fd91c677013661c2ae0f177fcd0656cf66c8ad43ed4f2a6b61534dad974def5db9de66edf907edee42b783a576c9b6f7db5eb3d59478d651b1b3cb146adf600ede0cacd37146e42cc031ee4725d4f3409fd0ef870c77c2d63a60bc5297af7d7e1ffa77c1e29747be1760bb6b38089eb0fe79d06ba53783713d606de16763073685d0ab5238d4417b44fccde355cc2778103b025b6c0bebe15c979fd03f93ee49fc0ea8afe0fe82f84ed83ab2edf3269ea5d926babdc27d9fc996efafa21fa4fbbc81fdc09f335d059d3fe576b0b50c7fdb30b6d2bdd9b9cd7f4fd7ac2b5d1393fd44be869de9d23595f399f7c95b3b2ed2f2238736d7e5ddf05cfdc3dd5c37a336e0cc9916ea8ed6cd2af9f095e3bfaf5adeb3b710b8a1c96dbf8ecd8f4b54da649dfd5c6efddedcf07e7a033ff007d6eb9b3dfbe9b53e5ee75b7b1ab6f2d7b7d6e96778435e5086c5e1390a8603fdfa7d2036316acb1a86e9fae790fbd11c4b1e1ad6c25bdacfbe6d0d3c3f5ebeb5ace9d2b0866f03ab3f5f7efc5c0cacd78561fd9c94b37d1cccfef406339bf210efa43cd60edb5aa36ff72e70f65fc6c2eb58110507f5fde2daa83b17ed467952cef6ae53dcdda17f06dfceccf3a8fc285c675444a68dd873a803eda95a9837725e7f74c8b9007599b6747fc04929588f23e507a75a52026f82cff66e59b05c2766e7f86301f8f76d1cc645e25857dc2f389e12309e2bc727fbe125057efe88f2da8e6e51d0013e87f4d6bb674e714cfabd7d1c8e8a09cc4d7beb3ab34bec2cd771f0714882e2cc70d19969df934dc639162637acd120fe75029a5a4ccf4569c780e21b357e5da348dbb33c3697bc46cd1d7845567897c4fcb803370cf1d96f50637ac8fa4feb79f0714f6ebd53149c0a773833d8fe29f45d8bbb74df75ec58458acfbe44e6cc4837bd82d8b699891c1454eb401bb3eb3a69bbeb55385f6726f40df254f8f2b80db83e74ea584ca758e4faeaf039fdec47683c71bb83ced356bad3e71cd9338af2c782f2de608cf63d31bdc275ec4dd28e0bd7c9f3f4d6dbc4817f761de0222673651b2f7aa4cf4eaba09367587f3d98b796bbb8bf153ca3bfb10ec78ef46f9eb323fd02dc0564eedc64bb88cc0bcff14ddfb12e8954cb4ce60ef17fa370b6e77589fdde3941cd3df0953233cfb5791cc692b60570213be04bd0f84571069b8bcc2b7349d66a11054736aed06f9342e6a79c5d126779266d4eda2eb65d1a138a71fa74ffa8c59a89fd03e6fdbc45d6705e44e6712deba1a6c35e916cc8f8e1dac4f3df1bbcb55aeb68e7030f9aebf84f71303332c7bf33bc70147a74cf57fb3732ed3372cac1f9b221f32181bacdf8c0f52b1ccfa03c4b87046364c0678dbe9f34be0cefe4189778e81fe3058b137a6013a4a5ff9105c52d5eac21c6b4da4d2f34d6758a1deb34516a0d9ecea41d93f270a77eade53a3eac1b8aa539916b713c307789b990519186fe212d97fbd1ede9129987bbc815789764d1d1f7bdffa4b79463d4c8792a631f56e1ac1791711ffaad78a1e87457313d12173dd9e3d3addd1a3f770f58a7d6dd4d3026c538ae2eee80ac49bfe53e0fceb3704df6857b46b96222aea5e2b5939b91a765bace4aff969a5c9fb797ee46f98fc5ec9e3a1f87c85c02cfbdaa29d003ccd09bd929c6cec70138ec9c829cb74fa2462fbea49bee1e7d19b04190d3bf7f5d837de46cd7e35bf783ac3532868953dcb3be8c013eae5ffbbdf3cbad7770fb47cb7d1e1cc967e37b6bad68a0c2f3bd6485dad2c0f71798a74caf9da2f7bf26edee5ee6eb079c13aecb4312f6183e2997ce4ae0a28bc97914d8e62a20e72699bb1d721eedd21be87a431d556a6a392081ad988bf1cd5bc9ed4a63996acd0b8d6f626e258098f92129fded98e5f09e5beb118eb5e46f7a97a563df32889b74f799f39d6af37c3fc33885f3fde8f67d375ea06e6e60b4e45807dc57fe3d6d03f131e0bbc98ed8e9456bdc4f2f23c6d76d63ff4af739a48677990723588fac0dda1c6f253c6f427fd38a6f8969f4a21d720b607c362a895d41ee95981f46e62c699b94df42bda41774b6ec99ab70b64c5af626bd01ff947c6fadc6dabbd43d2373be1ff4f382bc07d85afc3a9f63dad57eebb51203ea54388f35db53d833e9b5423ba2e15969e91f233cbb8faee381560bda26f181fc56e679827ef1f1b9935def92f6251c0ec4ae8d7914d2fd4bf95bf0b0678e453fdbea35683027dd40f91d5b9f07c9ef67fb8f14bbc8f3d4f06e51501ca14e9ff8c7e65aaedd95fbafb64fa806700ebc7b0bb9bf6789f2de4293f4e43edb82c7bebe0db04744c8678b7be7268575417c76564f3aba3d9d47388f946b47776e6780cd26614bf651385ba6a57d4824ce58f057d126abadefcbc22e72f9e39ca9d449d4bee733d44efc8b6a001c268b56053747f622aa7127c64eaf91a035d4e43ba92f545cf710d6fe7bbcb4cef14219b3a3eb6c654e7a6297135f116d14fa7cd1972ade5c3d3fe4f9755daf168a5ea291f68f7f363d270bbbbfd75e32bfc2ee69a2d432d5cd7dc348db9e9d941ed9470eec4c7b217b7ebf75c2ff6fb575e89f53333fc43bb2efc2bbabfb0fe77b52eebd1e6de29abd65964ced16f50bd31dd9b758df8cfb76e53a328fdda066efa46d0beebd6c4cb94a391f83ba2f18c96eb65f0531d9ef77920e06ceabd2bf438ca032370f9755f084e78cf80df4e1cab1effe7094af88dfc6f580e07cb9c5e1cc488673a1afd36f7d8c69bd229e59fc1a38f7c96735352eec1a497baa26ae517716c3f8bb475739b331e6f86646fbc41cfda746abe71295fb33ea0dfbaf31d48c5b9bd5a66346c187112fad728cb5b1bc5e4ae17eddf1fb9f23d33e26fd9cdcaf49ab87de93d8b7f671ec101bc895e22cc476817a74d83b985ea6ebe0f5abd0eb907323ddcd5a13694c226a63441b49d709fd783e57c9bddfda1ef145daab10b80a0ef1a657ac42f299bb865a7c272fc05e61dad3c42f04fdea5141796688cd9c277d69fe3b0389f70ff6d80dd97f98eeaed4cf5827adcd27cae57826b605daa979aed45d8973692fed23f4dace21a5bc8e63d28fd27a72fbbd5cd7b78e36fcbc93d62759338333b1f5d3dd56c633ef57a157248bebfaff63efcdba1455b6edf10f741e0e625a953ca6a420d864894af7265009a6a0eeb2c54fff1fb1a20f202b6b9f7deffffeeeb8e38c337625d2044134ab996bce0d68a4e5ddbab4648c79a1d58b821bbb2e2acfd846b63469ad7a5f32becaa36ad712fb82f25814742da7181bb28fb19857b425eb32cdaf98691377ede3f6812dc7c6795108b59ff8bcb2f5bceda4b9cf143ed6e7c66b993dc29afdf47a5c13be15b5bdc8fd2c3c7ed8f527c77603981332373cbb8ed5f055e7f26738e3357d95f548f5729f6c09e722faff76779c56be1e87ee40c48f4ea03e5cd9b33abe5de4e3babea939dc927abe56ede806270ac969fea686499aff70afed6d2be055580e83611534e46bbb65621a75160cb44dd02ba77a5126e36199ee67d7389c9fa71cc7aa6041dafc15017b18225b3e2ea721e7b354b013527b398618f7d934c0c7956b98e6283fdf3b26fbdd99f309ca78c78d5c27275d23fe466b6b244db6366e7f85cf827f6b38dee5734b3a84686f72cc13d15e26fea5b4af404dd8ed9f7ef6740f3c775abacdef98e305ae6be3f14036aaa8297023f5cabcc6a4a30d996dcc927e56a63b88691d26a23e1fcb6f0db444bb5f33ddaf71ed4a7ea4ba8d33d8ef5ff6d3c7f3875b4bd7caefc8efc5fc0c6a0f4c57a3b67782dc443ae2da0ce49e42dead194f4136c982eb99103d881bcb8512fe18681bb34d5ada86befbefbe77d3f6f9aaee25f93e927f33ea1a03a486ebe5e4601beab371806cfe07d50b94b53098ff40e34d9cdf16ea59d22bf581483d7619852e709c23fb54e423d9603baffdf808c78a207627c4b6f0be59fc88b7f9de21b133c16744e3f7b0c47b2bb189d1bb0a75aef49963816f97cd0fe97a618de6e7aaed61df1ef52bf227f5c2c531ac86af8cfb4df78bb4e26da47dd7d0b434d37f37fc02da97b46f709ee92cc5bac4fe6e7fc7471c5875a4b653d61b55dbf5c802f7918d9dc30ccd01f91dbaf7af0e0d4de1395cc79ddcf30df84150fb7212ab46fdf0f26ff06dd05c22e7714e5cd4e7f937f25f7acd87780d7c734be6f06cd3e06c72da7c3ae63bb86f44ac8af02d24ae677a5cc4e4142cf620dc17c6e39bda06e5dbaaf34e1a2bd88f627deab03eddd17bfdfab164bfb7ee253ff03ac2ee01bc331f06c11e90e7bc0acf26ef02f13d3cdf88bf3643fe1a5e2bcc9341deb9f5990e7ee601c748a0c6fb83f0a6887d22c7bf5f3fd7581579e2d87a0e9a11c86644f6dc2d8ffa7e0d7c2fa3362d5688bb083a3cb2dfc1f988088738ceb5d01af0bd1acff3c7d9751a58755c23dfcc3dbf6d87b78ceff727a26553723f5cd0f5c6eb509dead80ea336028f6d49e34da39ae4e47d696d388d9548ed5ae983b2b55da26e61479b9af54f6abb3ed3f46d8d6b779e4bf70d99c3a06d9ec9767af779838f8d6dd58b707198993b69ae48babf640d8258fb03db746dbfb7c4a4beb7ea396d077ccd1362880aa707e6c5179e83e7d66fdead6a9963049f80f64fa7796e4ee79fa2272dccbb2fbdd381c637713e82733b48df8b8c71e2df09bc5d0b583fa47eed138e72c00c8ad88d5dfb794bac8314af542e43affe29b4bb43d399d41fccafb1edfbebddeed071de91c7f3e7983bcf2c5ab835d644bbc6ba443af8e1fe7a57124e0b85c746ccc35bfe72b966b978d1e74a9d6de31b89f3e3976366a9b31d7e883a2051b546be23e49763f329776b386f8d3108e8fff7e346f7415718f003c1228ff6bb3c0a9eb04f15dc8fb1099c011f50eb1a007ff70eb48f0896f893f1a16dc6ee35ab87a5a4252b7e1bbc3efc8ac39d3236091f1b5aa79578cfa76b3659d3d6b4b617728c80473dc5a1574efb6e99d8847f5bda53c5e3deb54b5759fac6a6d5f12de4effbc978fbc84217b43756ede708dcc324bff0b9467adb7a765563ed9fb487f9f36b7ebc6b1e9c781f79b38e7e50385e864a5e9d6249b2434c72d08077096779520166e798f465ce43aca7227c3718c3fe391d7b83a9397cc4e1026362ece77c2aed4179d1359f655c6cbb46075ed79ef79de398fb6cb2bda0fa80c2fd53cdaabbe2b83c263492bf11c4ca1ce9185a37a3e540b6a3d13974df82dce6e8427d2112c7c4eb35fd0d74a381e3764be61eb223d558f385db4f0efd77579c9ae2ffd769655d521de3c35681758982ac4cb7b95cff08f8b2de0de7a820eecb7c210967a0e35aa9241c6a13888f79941b4e8c59fe5d0e5016779a08eda1b1eca9f9b25f487a67f35e4a3127b67149c6bb3cd107257f976181feef8ca1e66cdfc6b74bda8ada4f34be0bf67e2d9a829f692c332c10ba967c4be97e93a5fc2cf44eb286b4e4bf4adf32d107d52674cffed82d92fd1c7346959d3ac9c0899759fe0338b3c8b564ee9d08c6701b05f35f0d1b99f0cb2c8308cdf52bac09dba1268e216c27bb5a5a0ffb50b7b01cf6e36556032e15e304597bd1b79473eaa0f156c7617c4cfafe03eb72dc00939504d6c041b62ce4188906fe382b37a1bba3b6f9743bb43741d6039ec7be8f716f12e60ef41bf34cb706781f21ba94547b57c9b5d2efe1b0fc471bc71dbaa77f82b9c1e3fafc5b62bf43f85e29e5c145bf8bebf7c9b1ad0feaebbef17b7c97382e71db587e40c8f1811d49b50fd57da5e117758f81b636b7e938ede3d0f353881f1a97b82aeb2420fb3deb935b0e39331bb4448faab65173bf11ea4afe434d15c6116c6643419713d971653c9ee5d1b2bbfd3297512b977721ac238cc30df579bb261be595607d71c8c66e2f9672e72a97609bcd46f76425e74663fef628cfc435603b3c24baf18bd84c4552cdcb84f14089e70d14ad27de4e36be70bf532e64716d331a769052cbc2d6139cb33c76efd3d8a7c71ab08332c538a384e320a4750f63202b6fc6cedf1655d2e4173ea61acc2b1dfc54256faadc933f7babe40329af1ebbd72e8faba70be095c7bb03adad6fe36964ef5a4a1838e0254deb01f5e7d931216fc7622a9d3aa3c8de0de743f45b56610e329687e57693f03c887f89cfaf36c11d746ca467d8a516075a774e14ff4ef283fc7e721e54b03155bf4f9a63682f29ab9f6bb15d791727e97b62fb583b3e74f719c6ff09b8a21b1cc7ef095c8534ef0cd74d96b73cd489fff2faf2ddb10ce4dfe43f4c7cdfb77af80edca0f549f9fe561df7e749887386a047cfbf333bdeea5b2744bb186acc057d3eb9bf85ef2fdb0e6c0cf0fb385de3ee21f2fd4e1abe365b37be0bb15e6ed36c918dce6cb613d74423eba3efd5513000ac7aa20fd6c9e3d0fd1bd7fb6dced38f438eb55606bb157f27f6bca432b44d100f5642bfbd6d91cfec1de37dc9efb39fe3f713f0a1b4162f29fd47bcf67eac20363512b52328c738addf10e31c80d9e11ce6835da2cff137c6b15b7aed25b68d0f3cf6da6aae762a0728da6bd47d56e0c894f7493aeea4fd422fd133fba0455cc5c7b4d284eb7747c2c95da6fafd98ec17e7d82e1f51e09ee265ef043c2df6e03a0dac531cba1ace3109ba59743fd9cf72bc2f017604f689a5e5cd57af6b41c71d6bef02f6b1efdf20276cfbbbe976b88e827399101caa33ea5dd19e9954e5b714ef2f7f61cddde1211b7bb7f471b84e75a815ed45a0f9af5d5781b18b918d1f1eeba9265e6f6c13dbd84ef55e91422d95315baee7d6aa9c5bffe03dab38b0d0da564e03afcc6cff231bcfaefcbd077fa5b0b641ad5c915419d5abc3dce526db8b2f719015b0478433cc6b6c91f1d49fe56bbbb826958fc673679b3116defb2bad0d95275ae0b0593fcdb136728b3e19f77d96acfdaa4fe717800361e36a506455b98f42ef9a6e073db08b828c681ed158507ec8829194f75b04835d8ad720acd5c6f2608063e945521e2d1b26955763fb68719999e2f93b8c8356eebf0a8ced26b8978e352fe2caaa374bf11a9893ea335e37683dc33e9d4172d1adf7f6c9bba7f570b1015f23a5390f684f1bf643e273667dc7ed4bf41cb73feca57a015ce7f132c53542cd73bf7f711e6ed3cae8a7a03d8be6bdff70d0b7a5b15ac0b6e358311d9753a299bd5cafef33735824d502ff7b39dc2535c41e25fd6bb95680cce9f17c91f4315f7bbc362e4bc80353fdc636ec015b332f51181f63ddd292be03ba4ee9ceda632e3e9c2b5de9d1c1ed213fc543e34bfc4e9ff609ad97823ab4700edc52b1fe7c40361fe18cc27113c1dec77575c8971c211b0af99f3764abe398a251903a33a8656c6015d01edb77b554cbae9cfb885c67f90fe46741bf98ff407f68f06daba49f7fb93f843152387676cc2ad0b514c686af031714c4e1ac8b63fb4f60f757fe350b67b9affbdba55e6af43c3a6e16c1fc03348dc764fdc2f56315d4d7114d87855e20ff878cbff2c7ba1ea2bdad4ceb215ab34e6dede0eba771c96ceb88b142729e81e60b32bd407bc90d8df754e77a0d51657d6ceae1360b3d8dc67cdbc6f1269c5b3fc760939449df7fac6de386efed5b598535713359b39ddbda610cfb7a778e03d69d2f7ed779bd591b2be41bfe2018082126077964d4b6b5d436a8afbe257d923359720e1b691eaec9f77dd5725707bc03ad8f6cabfd453608d339c0cf5b0bb816390fd3328e596c8de5304147fe6cfc2ee732ad9fd1fa93cf56a33cd58d738cec9fc07f504e711c2bf22f8e6d7d40ad1cfedeccd612f660dc1f624cc79a97f1b27b2f25757118eb0fe3cde0efd11ff612fb769d7de483163e0643c052c8737044f877428823f098a34d319ab4eed27fa07320ae352ad6abf5ad27ae4d0b7fe83a767989f47b0f63ccf0fc48c7fe63639198168c4bcc49be66f15daa630bb5a3373a4ee9b815e74447dcd7a47b0ab70f0aca1fd6d002038e17891b44f4b179ad3fd6a312e3942f45a45b173f9c97dec898fff37a6c2ffbc5debd66fd79996ec5ef3028e3c083351f3d97c465beaadf05f38cd6c3f3fe7931dae682780d7d57f99a765b4cd2828298d4dc417bd782ece1825f94ff58be145fdd97c5fb867dfe6da856b9c415838fedd01a1fe9fe320ee23a2679627a2df8abd5bc5c577e85d6621927a3fe067c32641c7955d2773f62df2de3bd5b323c90c82f43be23e697c1cf731bf7943810e9bd9bb1bba5f8ec41676c4fe2d3d67dcd87759bfa543daab96cfcee592a9f22ba57238e28bd5733de2ab6859f772e7fae39ae5d78a75f7158ce089651fc8ee271cc2344beeb46f7072b52ab45720e343699ffa85f74b97dc2735f25ee4b86d514c6d125e2784cc02301aed36ad46f1d3af0bb646c093850d05723788b66ac0f7d83d14aeb09b9cce2a0ec650d5c3ce61a7a31f89a5b129b1c7c93efef4b59e39ee4d9286fd2af38dc29dcdf1cbb43cee19886528a39be537bdf553039dc0f1072333277b98cabb10cba0feeba72bd4a1b39ceadeb5a15b767b29a3832f7e93ae77d8239c17a28184f2de130899e16ce77ca18b17f482f3d10c624681a1545aab5608a6d717cdd72b7c775c0802b20e8dd32a20546b51fa325ae1f26b80e59cf4b2faee81cdf7767145706fc1035c573f87be4eb111c07684211db59b8e753ee85c52d0ee61ad8bb807d63f8118ac7cbddde6d4bf97163bd249ae3791e9a0e609cc4f937a95ff6a1e95cbaf20f18f322f685f0ddfa5ebd09876d3873a1cdbba65d483908d702ce43c1ca4d616dda3530a96d78c0a5ee0f266d9c2cdbe11c63a691dfe25d93657e9ceebdeb9ae4b926af337d226262b758db89ae7bcd18288c5bad3def2d722b4af1cc79140c8a58f76bcc6dd091fb26367552f94f19b1df443b58c4e3719bf6964be74bb538cc566435b750cbd7b04d781d3ee7e111f23bbb5e9154d63e0e9d4b5b6c75223d47cc47f2e311c9c537fa538ae3937caa3fbca6f47d88efd7f00782ec92f4dd52f5499bf62cb2e3ca8b636565b43b1f39af07a957fcba9f7754797e60cd43eba3ed2f92fecb01ede1c85e14b1a98a2f78fcd2fbafc1177b25bed841c1bc0337076ae704d90423efc74a9c43704cddaff223d33a5730ecc4767b032c816ddce41ae6e638959fdf8ed1c2eb05b6c356303687d754c9397dfe5c669b3ce2d063eff01b3c1ab6a1059d2eb737fcb1365309b3d63e6f07ff300642e205bf6e3a72e9897e6acb8b0bef5c3472c00e6fc3379eefbf2bf790b14e6f226ea95473e5da1fe4d55d34176afc3d256cfd6779e8ee7cad2d736708f7861c80308f1ab619d428b1e78b369ab4067d271c5a3fbcd1f337b40638f61c73e0801de11611f062f58a0de7ce3ac3ba82b99f28bfd6405c7b36ba5fa678df2f70ee7201f5b168df486bc0abe831e0f0fd0bd1212cd3fe1ced032bb4dea231c7b022c0c757a2f5a18c82c5c919a3361e418f58a80bd492fae586ebd1c15e7fe0f3bc2be6333a5f927e2a6899b23e227521a09f784a46502329c4b00ba8e19271993b791e8fbd2bab6fe135385aa2f19a1e01ef84d794bd7b4dd6fcf728b89f96d037429c1dd7a18bd84261af7f9178235a9e2f1f679c0accaedcc5c15d8b70be9eb57f2a5ff75dc563c7b67fcaec9192b755d7311103c0d6957d5217e4994d5ca4cc95c1b47795f1fb076bb9c41bcabe2b601db80eacf25d7d8dcc85612faaeec70834b1bd32ade222d2fd565c1889f538c099dbb1d6737b4eb0a9917dd95d87f31916adbd66427cdedf8cfff0dad25ccce5523b56a9a186f82cadb5fb14d34e6d0da789633f3966061af29c77cbc2b6f59872aa9335e4d5bdc4268dd50ab8009c1f843e71c61c47ebbc027709d8f1aece7551719c7e24626acf895dfe427e08e126a09ac25c4f18f3b8113ff404f8da4d38cb37c4be8acdb425c6c5e619dd8ba0ce606df9aba5a96a6fcbfeebd7ea77a86f80d6a3fc3835796c4ef47b05acc2ff887d9de0c6e1389d176f0dededa28e8348e4d06eceafa6ce36c698c8f533cdf80270adb07a09a926a51167e03aa104ebc0f6cf864dd2e22fc098a4fe4ac34e005cff01f6433946c063206fdba1128bc7b6c7d4a478dce101fa4569335bab9598e3a481737b698f9554acffe1fe5fb77d987eab2ed47b16897d9fa2fd58ccd908f906f57b29b616bb2f6079f11e29efd5a98e39d966a45e39dbd17ad1533e53f17f807df19f327aedd87f28bafeed6d90f710de96c7ff3cdb54c40db67fab7f021fcee274ea9a8fd67493e7d3a53c31f8c6ce78d84bf59ccdc34df0944734c7b09fd1f597e6d179bedc1c3afea8379b0bf9a04ff1a03c9720c5d8a8fee506b4c9c475a4d78deb52ecf0d4be1768cc29ebf23f8bc137475d359674af22582a5a97dfb5cfe29a583c26f1b3e59a4316b763fc9d5188730829d1c5c25c14a37c560d18165cd41bc7b85dd62f34b70cf9b35938d71c3385181ac713e23d3492d6e0de69139ccb468ecfb64e681f88c73ba8af65eb633d3c12ed7fcad3bdeb1a0fc40efc60b6a4992d3d7f385bace796507f88734542bd8db0078971711abf237d7a53636ca70e5f4bf0f3da635f1c7bd693ea467cfbb903c77efb24c7729331adb6f1abad66c209e07843ef9af1138c698c9fda1cb03f1c5adf8bf535ad5f537d2775ad63e352ad19c7df58a87765f56f8d1c602376b04f6c631b057787e7d3e9d8f43bd766b417bf613ba2cb66f846c79ebcce682752b37322b6cb516e37f7d5947c5d5b6c83e5e4a57c42e5df12dbfa889705dff385eb5a71e1c23794f6c54e7fb375cc426d94fa3c21772decb71c67c6eedf3b0bf64091615e53f9decdfd7e5eb2586de37d602fc663ffe3c062590d1b4aaef3fb268e2df5dbbeff9d1a817f20c7d28d7db9e5aee6d6493f7bc4c00fc270a11f5130c07b221b0fcc273a26028e2dade9dae95d09ef18c35ab5e0243a6ab33eb111f77c0fc4eb4357bdc2a7beec3ea90bc9576eb1a3f1399fc684b3eb02304b129e7d9fd4f979f6bbe76b5483717190dbf17c68b996ec0f2caeff0a182e13e3dc5b732fc02b7d86bcaa5073d1124711ea2276f36b86f654e08cf0ca64ec152d75ff0ccbbed08d1eda4f611cbd621c26b93f3da6704232bba8886d0fc7f0470236dee2b9050fc7e64fad798755a376e31207fe2ed5c4d8bc2fd48eec84b164ede211ce5b08388c431bf66aca7308127e43c4e14bdcb29d7da37263b27ea8e3a077cd2affff9fbed8bb6512183a7ddf7fa23fdac6ed269c9b684ddce8feee77398c08e6fa89d553367217627da880d350ec0bb1de52a99991b81e702c36186ca17d358e1fb6da477bb437d067b3fac163637e98d631d55c645bfe8a838512afa43ceac65ccad111bd7f660f28fd0558d0f6f67fad8608c666f95840df9e81c741cd79086d6eaf33825a91f63565ba92db2fd6c748986ad6cf52bee8b37592ac4d4f07a13ea6996f0806f43ce07fee8837b5d5940935617c1fe97acf596bae5c8c3ba975651ddfdbd4ee721cc9bfd0f79b989fd455e17804c7c2bd6a22f73ac1f71c3ecb21f3ba1f62bfbc6d5ff6eb91b170794d8f50477fc85b63d68c134ab2cbbf297f73cea9b1ffd8bc12ec23c37c71ece3db96ff9bdf3bbbbec13e7de7fbaa06f532dff8be2bfec6f653f8dda37a73fc7978ec3d0e748d39a9355c6fbc4690d71e499c002abe7f4075f3a4f590acd7bb19d652028c0cc5ef83cf275c0331f811709fd4a2ce337006d86e9154e93761bc974905e7023fc99b54972effa672193ae6cb27fc76f98de2d2dd7ab4072c27e6acfae6986931c51c3584dfef5e4681d7e4d013d627fe0dbd12744730bfdd37d976927e53b8ef5ee439f609ffa2b3fc0affa29cf3c1ed1b5e923ec6acbd093573713000ce16f82e68cc620ccd2c0eac9d807d63638772bcd0f3db307184030a5f33fefd33dbeed1dda7c89e51be89c5b1cd2d5871f21da1aee49085ee49e1dd92b8fd7e2cb1a6421b1fa0cae3287009d21a9e7f3b68bc81c631faefe0019ce0cbfc3635870d0ec0162e0bc0b5b37962e632dfb2be86d89edb5f801e5f57dc8dd48d00c74954f9986f67393c6666f6001f05f7ed750a7a3068ef87354043fe5e5a198fb416fd9b97b33362f51c5403e89656eb331d0b8e5d6a8e2fd83f348ef1495cf0335e467cbdc459f8d1d4bd56be1bc9c7821e38d6023f602d4b324720df26f3384eea97bba8c72161a0d0da0d63a6685d5f3ae2f9946b0fe667c737666b3fd89c562b17e6ef6213f298eece2d1c212f57cf383fac29ace5125f0cdbcbd03bb3780ec5b7726d15c6277153b5d8d5dc28d5536deceba685fc6b3fd57dd0f8211c127f2786db86833f3966e6a8b5530257027a26f6c3ed52d0a72f281f4033ae89d78946ac4bc6c08a7b25bb06bde738e9311dd1651cdcaf11b639ffa826eb6f61e11bf14a4dc4545fbae399222efe136e8de56f9ed5c0c86765366ae0d3bf7d8e4f6fc5ccc33cf6c7e52d96b1f2c2719503b358ff0c87a5580fe0cac7554cf93ec57bdf5ec696f36ba47a091143bea4ba9d0301778af6864e5ede22b63d75cf3db4e0d38f306e155edb50e3ebd442871a61d64ef4be7c9d295ed17a9deee709e62e05ec4126d511887b33c65db7d86da4ffcd81648349f711ed84dfdf87f2e12de8bad9127b6a6252cc063f06c302cbcf2f1afbaa60bffd03f9234bc4593fbf9b9d7cd7220e996132b06681a565985f0c6a4133fb19eff1f6481a5b103358d2bacfec90f4e7a563f9cb15c1da3bb6778d81d7ccd018de9ae484485d29ad3da4f7bc3823ff29b5fd0fd0c823f92f8acda65cae84f34f4b40672f3b26db21c6845bb72d60c415cc8ddbbb6da186ba0daf81f710b12f04fe593c47da38b2c579d0c259d5993ffa3fdcf47f316e9ae87941ce658db9d292fe4b23ae423067fba4326a62cf4bfc60cd39dfce61e79a8bbbca6327dae6d1b2c9fd1ac91c9695bb1d169c9f959dc36a3d08d71dad23217c7505d7926a8fdfb4c70b3f5ba7745f13ed4055e782aec7b1c5faabd5ef6dc4e5c83cc69c36984b330ebc85c4ff8ed76ae40758c97e0e5c63a01919dcfb51583ed0be995550477223fae7a79fcb1e7dfe8ef22ccbb1afa66dabbcc397b0d34a6eb8a5662a6fe64231dfda97b0b8cddc6c035b89c608f75bf6f3615a514d90c56e0635a6bebe92e68a884b14705798cf6448ec10a6fb2ae8b116c9382b7e62dd7a998752e04150db4c7171748f8531dc8d75146a064e72ddc298e8fa9267bd016e58c0e5097942a2d1db4bf5fccafd918182e592dbc5791659fba55a85f6bcfd27f86c312fd0caabaee481f99af47b3cadc48f41e232c2bade960b69f0e8c9f887c5aaf7b297c66ac7badccd3f24bee38de7623fe1ad9b9a3287631bbe1fc7c955ac42f39d1bf833299ecaf18a2d182c29b6cabff340cd711b7f9067afb1fe91d73d765af0599fe46c14df9cdf1b63c7dbb1c654ff7225af53add85032ffd72bcdfbf1b605fd5eca9d8cd6d56d14a07595ea38e3b99804461d2f87751cdc8f98fb68b8fd29f13f9ecb381c82ad1811ed51c7a6f8a50230f96e3f2ed1dc8d816319ec930768ad96d046d09a96eb9806c81e286213f3546ef6a0ef25e8987957e41b611e0dfe9c3fc6fe635fe431adee45daf75c8e8ba07617de37e4ba8a061e5fc4fd333c84f4ac062e0970fe7fab2dcdb1b0536b8ca47b13ce9363e3998d36e1bc33d62e656d3f4bd7bd3634ad28beffb7754c722e0de71926e499cd39a1612d65340e42bc2fc44bca4303fcc7c48e58c83ae7101b74611c60fc9a75f9197a07fc6f5823f19810f54ad8de0075053cce664af113666bf0bd84b4418ea34bb1295c770ad810e5fa1dc773ac8567aaf6916caf7ebd46426e7b91d877b81fe439ac33f54fc833dbee5b6664ad5864817bda04b37c130cb438742b64537d5a730a31d38ebd10b707fc2ddfb6f6d83fe69c6f69e897e9be5cc5c1bd8c90adb4cdf7e06b2d45de751c2ba7984e510b98e1c5d035be57c4b866813d6f5aa1beb2b46cec1ea3bdafc5cb7c8f63bce951c963b3fb933c84836becbbe3c893dfe489492cfa17d16ef9a58e1fb9f678a87ca396f9feff5bad48c1f07b2aae746abe9038a1c81b322f920af048a466e31fc1722e7c7feefc07384e19bfac60b1dab1eabbdffab3ffad7613e57887e36a0d6ed3bffb6ded91f907be9e126391d63e11472a625970acb999576a5b1f5fdb6a32245ccdae692b02af7e298c372d0eee27e8277b44f2ba94d365d88fc0cf001eb39d63a3713aca71adce2d4f7534ded7fb58c618a2f5b08e88f6a76097e61bdbafc14fa916cce710f72ce63b6d876b8879e9968ef6749c1bf325bb126a29438689a77ce032075b5596a0d5bea57c4516bcd306de778e7cc423702bdba506ef35321653b55e04cfb985c435a1e0001bb9a78efda9c5f7fd5bb64dc7bc53ed69caef837c256cfb117c2b8c9df11fd687104e7dbc3f0ec4f5537daebc8f8ad72935219ffa2c5fc1b27ea91644f155fe0b71ab9fe5b3588d8735f4d75a4ef8e6e7b08fe13175427ec1250ed31cf8eaf63b9abb657a2d51e0812d07b166d079e7f74ffb5e11e9a74ff1aaed7ef1ffc0fa8ecf6b68bafb56a8b3a0fa56786e83a60d8e63068b2ebd85160e00d75a8feec385b6de2b76d549b62d3fe32391f74cd90ef85f549b38667b60b74dd6ac4dfcadbfa0d87bb7c67a2a6042168c1bb7d54f698dadb6d55128fb71230e23623bf0b8f3cac4be413f45ca5e06eb43ad68282d87acc6666a0e1f09aefbdf35f6e9b15b907d4da89d1b1e629c7fbac46c7f5ad3f5408c575e1c0bf6d68f288ccb285ce0fdd76fecd5478e8937b40dec87181741f7994de0631e14bc57d35cd611bd33b2e552bddc011e3f5ca0775bac7a2f6a8d879a4360780b394ef407b1e8268eb3b39e83ee770277813246db6b925ab0cb520da7a02bcaf7bc96ba8e86cdf0491dc76fe3745fd8f324eefb3fac33f807fc9e2e0c45ebda4d39747fcf954bed38b496b31a90aeb5bc59e75465d789fdf4291f54ac1b26684588f91f3bbb8a78d8ae3a0b8ee76cd45a34af55b526685d03e5c368e153d8d8fec74683f885a053d012576ac1f84f1e1aad7b68c400da6a36408719e7dc1817063ea668d0fc8d9a05f77574eae02a6acb337dde465513e76fd60d7cad4dad7a21ddb8f4e63724d8728ecd17c6499b4613f5ef158caca887a5e43e449d0fdcbe5e52e1f691d862ab3f2e6967b1fbef1a63c509ba31fa5fc1a4b7e0f8b574ef77b4ffebda56623d42c3df95ea0adaf3458ed935bf843a29538d59496d64fdfc293e5ece95e3e7c8187f3506d84b2a7ade27b51f95754bd1f816eb73da355dbadef3fea7ba2f5fadb5106a1fa45c9cba0e137e0bb62ffc907439318ee2ad05d3c7b557b8e607e31120b93c8e4d96f6ce635221bbda3a893961567f20c669910f2ac56dd9b3c00fa6bab8ec39dc0ff926fcfb24d4d0410d80584b00f5028f03db83c4dfd8de02b513869df45de42bedf83978ecbdb135e6aed4ce419d27fede785d329af8681253e8c0d746fabd48c29743b2bde5896df4e3d035d15a0c3e4d083aa0e4ef26a7f92a40b6fde0bc099e0ef4df5198b7dc6b87fc253496eb4565f4926ac170d7d3fa40353c5e89edf6c0f12a5603aaf2d4c071c056f13c26b663ed1eda1fea9f4b897fbf035f4bcee51c2714e7c7d66556f785319e1d6bf7906170157e6f3efe192e1274bd314fed1f73067f8d7f98e323595ec34af61eb6f5250ee6e6efe27d78fd8d7fc9c6ee31c63c209c07b8ed7715676a9df6d33acb64dce6e7cf6d398fc7d2785fb0394e6c761177abfed6d16e316729e14d6f1ded25ed68c5c176f1255f44de50a97f651ee54eae6695137a2ee374c5e77effdf82a913e2a0251b2395cc23fd490ca545d369d6115b95721d747ff99fc82d7be4f1e4f9290a7ab749635cdef299796b9bb7bc6f4d8dc77f699c46581b5aaf0dacdb448e23c1351207057f77a62149639daa463e1ac36d7c5fe4fc465c4de96fc0b1fec9f5e438d6bb055e6799478cf5f772f7152e3c1c4b946c06714ed1baaf96f9837997141e1545f3e03fe5b05e0a1a9e0216cdd529bf4c8af9e9e0b741273f0ee6d8e9e4b83b4ecd977d10183d673c3f10fc0cd5ab42eb92be093c828779a9938aebaf885c3899fd4cfa84e874400ceae59ef61794eb5ae4bc3ba6985793c74083fb71a3af73cacf473564a2e08ebec5ee27c4eb66ff50bc1862fbff41ac987157d3f8d4340e7787c9f27f57ae55e1411362e078af6d72e6400e89efef72eeec97f33a6ae25181cb4cb24984e7f0758be7c0766d5ab7c067e6a1b50172890cb39dffa0bc6ba43e508d112bcfbfa4fde16913cccb89f42eb7c679e21a8c7fc37d3215b1790aa748079799da76aaf5d9118fef49b9e4eedcdcef79dabaf86514ce7fbc57bd1ee4f794cf61fbcedb56799f2eadcfcfe39d2cc6fc7f3ca1124f28eb97ff27b84277fe6235b25ebde5fff18576e5e4da6ce340e776f4a69d77aa833f5de104fb6d6efe0b386289db5bfb4d5c1ee70894d898b8fe42de31b1ad736a168dfd048d5fb4c7cd64cc52d367305fce8ec875d236f646c6e23778aa967d669e886b5cf83f712cb5e1ca3fe51bfb0a5f67d7386862cff178ccbf497bbdf537701cc089de3b2641f941f54fe2a028b2aabca6db215a8fa18659ce6d728e76760f7b5e509dc70870dd03c8714641acc17f31e7d8471cdc4f689d6ec10eb5eb0f309e87af8cfbffa67c9474edbc48763857a6f2d8886358f1bf8fcc16b39f5a386824fbed5f3f962f37f01de4e3cfa29f1f376daecff6f5ffe6dc0af7633be6afa865cdb9a2fea37cc06f9ff935fe2095fb4ad28be39c6ba4cfbf3976d336e57167be0f10bd0c81b346b401f93a48f71d7e0f62f3b3d8c59d73c970dbaf6cc400ffdfe2f6c13971d02cb72e9efeccf30c98ebe71b8de10bb90a3c1e60ddc4f94b82f96ff06a887a8084bfa2fc09ba7f8bfc67fd99eea2103781bc289b7fa74fe2dfa7361f56f24fa4dabb5b9eda569deaa4e6dc94f141e47db653d3c5b5f13dd09d065eb109a9ad01fd64d0d718bc87a8bd80c9b93fabfbdad41c366b7e6ce05060f18e75bf3c47957122eb40ea0831ffd074e05949efbcfa19f4b6897ebb6c42af4c2b0bf56f26d7b3e44522e9343f2bcf851cd6795acd8bc4be1d927a7772c6cec9b1ad1abd5bd0d34e8ebd16fdf781ea43667a714cec753e318b8b1a7f7e1fdff264ab9d9dd727c883a3763bcb02eebd590ec0369a98bbe3b4f2ae49b53ea2e74ef750077848b7033d0aeebdb8a13701f38ae9a8a67bf70a6b508d7918d07fe1d8c7218f43b74efa4efebe3a09d7c6c7a4b24ec9b8c1df0631beb6ba349c3bc1fdee84ce25062d6ce41bbd1c4057d12e93d074492e69903aa5769c08fdbaf98ca3146a6cca4b14dc4f3f97c3efc4a747be9eb619bbd7ac1e96d3caafd3caa8df6a819bd36facb945fa714e933d1aab836312b2b9d54b75ff15dd1f6b03df8003c00be20af97853137ea7b82d03d70801fe116bab5bb72d1a53305e46fe7c6d7971a859cbf5ce8ac918f92ece65d13640cff183c119e3218a4ab68ffd47bcf6ab18627945237f2ee6d6938f53febebce5debab7f0adf27de1bbcb85bf6379b7382c3037aa840345f7c7b5987e38dc817dd8ac997e8f30d7c73b70549b85d017f96db2bce5b32d9a13c8c6f48e917e827c48e49feea152539d91670086219c970bdd3a2536acc787cf72d4c4065b6f900d25af151a1c93fb028e01f6198d6929a67043dfa28dc3a097da386e48387a5abfd5269c2f12db3a263b1a5f2de8fc53ea5ff322abac5316ac617e738e73648bf8258bef56e43ed66ddbb4d9f9b76df24a8ab590c33ae97b57d4a72b129380ba1f0b1f8767af8d6a429edd860f7042720fd06266f7436dfc41e20017e049b70d8df2af748e29f05fe6832470af895950ad40554f88c654e8fa8cf306d66dcbfb7b903adbc638606da6eb3f68cb6ec9735afa88adebd66d1bf69e7749606c7f9a3d3c6f413311d9ba0c979a3aa5f11e9a0e1d07d85e0e8c8f8d969d12dd2d1293e77d3bdf7f44cfcd1bf62b1f0bb4b68a61a9857891f7e9bb537c948a696a3cc3666dfee367509e8bdf3e633c2f139bc7d3c4bc42683a8d782ae7da83eb9afb161ff767644779423be09ced6d0b1882b19b622d7b6c5b401d7df0c4f250a96d1c13347f2ba3e6fd30847192f68745a4af2fcea8ac9c31e802f423c6f10f9c6d8f381c16c85e88fd7b4df00ae744f77a898d31b4b15dea9bc0ebe13de9e54cee03baa0a48658dbd8d6c519676562cfaf687c65f6731edbcf79aa3f5f68fba73d74ff419a9664ff18d33c221a676e9986fe31add607571fecd3caba6dcc410d35fcbab647e31d5d07f7c25c8fc1268c0bc2d75963dfe45efcdc97d6cfb1572660d7f2b14ad6d9ba3157da9f7b8e43771f2fd323c629dd07c4ae3b893a0969bdfb4ede2d7f5fdea17d685ce136f7dcccf6eb28f4b0edc1d7568c0723d789e310f948b16d9c597e755d6a71e816c8eee5eda07d7613724ede83f60fe162ac89bd8dcf5dfdcde72fc13f3bfd5c16f43b7ce5fdb17ee478f6ada36fe9effb098c37e05364e3c2af4a3d5a0ec6f85cecdf91fbea71e83e080eaa8e43abb709dd7262a697693f2ed3fd1c73d0ef67fb096f0b7e26f2a52aff9e05651d2ff37d526575140e0f53f25fb7de9de03d4ada6ff312f8deecf25b1c3a5f1c47b49d2c9f50c423a8af9eac35e34d6e737689fb6e91daf9056abe83e323d19f847693f503eac1fc75a21d572beda9ab3fb54427d7fbbc5def8df130a07f7fe0388575da84dea0d1979a758a75a3de84de210967d748073f18f585f67339f82badd3231b5f36f0b510ff49f9def5d37511dcf749df3d6676714e6b036ab929a6695a1d1f8d7eb7b332d1b5bfd5dfa486f9816c02a5aff7e26fec993c677641f334d5916de2a2fdbff11e3e6af3787615efb3069b08f7873097c85826dca4d298cacaa8ca4e8dfeee6565b4cb66d33efe5dea17e080f4b7b17e7793fdb09711bc72fa90c7f3746b8471e08e57a6d18f03779f8cca4b3af6358fe8c176f675f5a7eb53eb1ce2f74173af7bdce177783d48df13ad37cb6070cb428fe1749a6312bfcf54873511fe2dc490e43169aa7dc6f2ca8def8a9fbbb8769c8fd712bfe37b5abeb609ee0fe09ce5e349e4e03827c08de161bdcbb1af097dba4b2b6b9f545e9df45f3adb158fdd22d607bbb4326eeab870cc61b509063b2fb8979013b386571a5f6b8e31dcd6a98e6c15cf4a6cbc7eaf6d83e4d6d57513346d8e49d0f22de8bdfaf8f79676018fd206f6a5398ea575cc27d00fb64bd41658d7d3baf92da9a671f73b219fea0cd8d2856e9c215716b8278a93a7f754f729faf7cab60649dfd7e4ef4879c6bc635a61cebacef51bf3619ca2b0bc66e142ee435cafab217bab39a6efc5cfc0e865a601fcb8996d5dd4f5446dab5f9565f690e70fd4758d8cd1ea71c85781a1c7cb211dff516015688dee917c295e1b24bbd0e76db5bcf2e718cdf375f37be9fed6d36ed70cb4a7fd3a56f701a51d3ed69565fa539427d0016deba79cfa12c82ee7e30daf7f8bd03b4561732f616dc0ef36ccec7bd1365ed85c0eac7dbc1e405d7b5a1968af3cff6eed5d063db4febc01a7e3d8bda26f9cb4bc2b79c66c130c7eb1f356bf5b93efc7a43ab3b6b4cc1b72de9fb5795541dd619de8591d055acb3c26e7213bfe4b6d5c77de63ddb77a51e896bf6b133daffb1dcb335abbbff63dbadbe3c11c2c8e51bf65bca0b952d3f7c27bd526983f9a6d92d6ec511c0eeb3898037601e2b78fa33047c8fd60edbf7d536d1012337e4df43beca91d7d7d8b900db19e5f13b0eb517b4ae1dd947d46995b099ee3683e3fb22acd816b309cdf80bb85f7f323ab326c43dbe5478bbd106c02bf3fedcff558ebe89b52b2b92eb1edd76d7b28e967926b7495fd7820f4cff3d5b1bd321dbb65a45bf2dcb7e78f546887ccc18fe30a623f677651277df4ee7edf19e158e8c4cc3ed2fe9cbf33ae11ddf1efe9efa6dbe122b1fd22d5d784f7d4380197c298f90fa06b9d211f24c0ed71ccfcd9797db9cceb1dc473d09aedd883320e16f906adf7abf3a7df2eedc77b98a3ebb888702ee253fbd631599c17eaea3d1cb33eb8f0ad606db0a380f2af940fb94f1717c71a9ee2c0427e7d2f050ce11d72c059856c5cc83b5ee3ed5047be33d9c3f2c9eb2d9f994ffd09d4ae0d07497f8db9accde13133819f87fb15ca9e84fc8944ef9db36070ccc67ff3ddf4f935097abda4423ec617bedb383e669545fc9f17f27ddada7ecb93be934776a165e3e1e36dfb7c8d918d34f6b7a0cdb7348a641f171b7d7465f6ec7e7e4a6d2b77ecde351efb27c24f540bb19b0e7bf073df2115fc05c52e46f358beae3f3f26e1f01487733d6ece2571bde21a8f15d4769fe3e0fe1a857c2d58502dce5d7989abe7cef645f27982ed2bfbe74960ecb2e05e4e2bff09743c31ff3ac462483f6da7a6cbf20debca2fa2fe026ba42f5ff629fe7b2ff2d5396651a4e36181d699ccbe0f283f1dd194dc0277b175db26fa80f247a5cec7f351d00aa1c741bf7ea11b17b055cc17c3319fff727ac6fbdaf2979e6fbc4fb6c612c7430734a7f79ae8c8af2bb4890d1c924729de89f302c09b47fca929d1261673f9eaef8798ff9be9084ab537541759aa2b1163eb4cb79771d78a980b7c0f6ce32e757fe09823ca817914e28a2b824d17dbd3d49900ac37704ab367411d20fdc6223f9f352f13e071b6b689d0776fb57372dace17e3c59641b0765e08f1853eaee14c6dbfceecb24cb5fb35e9cfcbc9787ecd42f7235ede90adf8918cfd9dc86980e3eaf49c1783f691a07b99ffec6b52cd4814bafb385c485a01380649eeb3667ac02c0fb0014dc5e291f4fd3a6275b50483a0fb83a9393c0a9cc2d774fb72d82c31ff1ee452cd21b9d6279ac9b4cee3946f962709bb0418fe572d4f75a39756f392e82d1e85bc12d681e6fd21720380ceb1f3fa8475d1c0eff08e8954a7ea1529e44acebfe2b0ccc467053ad6cb57b0163c066f5b35f2d5605c2cd1772ecfe43bbfa36f8ff6feb41e5669659cd13c5dd86e1155fe69da777bd08e607dddd8fe29053e76a34c75edcaaeebe17ce226e8e1f9f6c53122e4255fa2cadac6c1ed9aeed1fa519ee3a5718883fb2d0eddc754f71fc9f26bf724b910b67645fabd48fbf337f097e8fb99d947625b8f541f1449e03f0057c7fb83ac2dec5c927b49db72b066a21b5adaf7d0beb3482bbfda8479febea4d7227bd83bc4410f7c91ac02be8a3dcfbd7a96bf2b5f3ddf582dfda3b506febfd3fea77ddb4fcd977d62a7f8bfc102fe9bea1afcf7e778b6873185d74d364fd78296061ecf83abd7f735888d3d0e445fcea7f9649803ebcae8a37134ad0f1f61cf58f8be6b85bde7bfa63db78c2037473126de320e2239ef6919807971b0de24adbfc4f509fb39eb0fa837abfc6a5ab98f353ab72a25bcb5f88d70ad19e8bae06fa441ae4bac9fbb245ad6cbc61e6853f37b0bef5a4b3570a88dbb2814cfb5a49a3e1c733000fbc59fef15aa6e0968c6e8de31db826e0cdccbb5e57b097a26ef1473cd353ba086ae4cf7de310ee7b344371ef1b2c06d32874968badbb4876ca6f8f8d3ba6da7e630752ad0397aac908fe0d363c2bbf6e831eb119a6ec6ebd708579ced7f247d176cb085fc4dbac6ef41f8762734fe937eba9fc8ebedf167e58bf7025d06c83f059ec9dec17cf985d6926930bf26e379ea7c887c99f8bd488d4442d7486fe407cbf5dc0a7b7337d8f92b187f3bbf88f45c1e7bb65b6f7a4388e736f976a19f039cebe635ad81ceaf11d6e41db23b90af88bfdd3c89f6eeaf35e4e3bc4cc1e47e24fafdd1c2a12e3eafa07b19ae53e278fcb4326e3ec9b3abbae10abf003c87e9b65838170ef6ee7826e0035ab88f6d3887698b90e749794b192f846cc51273d6b0f75e108e99ec29ad41472c75b63d927be67de8bc1e08bfa7c86f8b9fefacb43c013e951d9ddfbc16c4ba6d43d301edb44d782ce99ae098a77c130c604c4da467c23d196675a2eacffdde3e64f1d2c9687e456b7882ec54f326d5848a98c718fbfe15f513585db43914f410f9baf5b61d0aeb95ffe0b93e6a17def24017e632b28bdae7e6495ab7a15ee3659f54cfe7981dcb32ac4b3e2f32b3207b99ff982c4b5a2b8871348025192c937e7a89edf291daf7e2e79a6acfbcecd1da0f7b5f89fcb941db3ea21e937141b65f45a17f427b66d24fbf3bdbdbb6c3b710ecece29105785d14f5d512bb04accdbaef53ac0a3f4f5dd3483c790db9356b8fb5ca293690c48c7b8cbbfa90b27b522ceabc47ed43829d27f9ccf92ab38d3a0ab2725a19a4ae61c8da31ad8c0ad753369e7149f4b86a9e1f231fade3fef09b8aa964d732fb5de54320b849afd1072dfd0af5a2d0c612781e695e57d436decf28af1ff2d981436cba1d827f847c37dcd70b1ca35ade728a1302bf2e74eb28c4636e5a3f43dc25e21829347fd0f8dea5f5809c63b073178063a7f83588135cd36a4179bd1e68dca8f793fa2118ec1cbbd4d27a78052d1c64cbc1ba497c19ee677f77cc0cbff708c6fede79d5fee558e7efc2bda598c7d41c7e64e3fc9b6313bcd3b897513c09c13c94b10ed8d83a0e885ef358f63be87712fd51e55b739e11c02acb35cc427b4f808db7ef5be0e7c06d6ba97fe4b5b5629f91755c987f6903e3d2158b13be0f1a1b68de23fbbb8c4da2efb31c1662bb99f69ef9a2f2ea53bed94b6cdfa9dd56c7410658e3b4f277743c073ae14e027b476bd1df207c49a1fb6872eef0df60efacfc3d8cf3d02d294f54da3b0b7deb671cefd8da6eaa3f5173eed133ef178caba67d8dbe93f613eabfbd27b2f6b671f648739cc51c39e7d135aea22f8f87498b264aa65b97ccf2aeebca87fce502d92218d74c6d11f17ed41611ebfff62d1c748039f26db4b78236f710c7299a1c854bbd3c25b8feef9ad80bb65e3b63b65e0a75839053ba247d7fbf91b8d6e645aaafbfa918c3bf33efdaf0626c4f78edae45c5b65ddb33e7097927d8fbc3650397466def531c7ad0ff1c3b7a7e789551132d5cb40f0bf837fe5d31e6f2652fac797b95cf17db5b5e99d8be16afad5332e2d7a71ad8cd30e6db743b68dbdafb5479bfaf6b6e60df4f78d7afcec3b7060f2f8ec5704cfbcbedad1e1e9dd79b747f311e33a9cfc7b67765bcf3c275815e6618cb4dfa1be3478535af1d378e6b2ac8397db1be7a777214bd7247adbbeac08a8bbf77698437c72bd6eb6539f6aaac631923c6628b2ba29dd6d49f11c64b8df17b7f3416087658ecd74f70c1cd75af834b13de652d60d41e8db588d7118f85daf5d7a7065720602c42b75c08383b34261760bbec249cf0743fbf611dde017ce3898493bbe54d4e36f6ef2ae93bfff958655aa0647c6910c7cfa571d99f271b695fc4b513f43b2e834195d403611c33fc9f7a5f344e9ea62dfdf3697d3ec7c3521bbaa123dda167ab47c1fd18db9616fbec5ad136a7f123bccf87ec1c1193dc9e7bd2f038df04b1a86700b9338879f5779c87c3b61ecc7eaff998e4bac1b29d97ea7e9d55feced78d3ac67b4de2eac8d6b9e5ae0e363c8ed1e971e5523be293b52bada056568f032f24b631ab3374ccd3af4d039b5f08fe4451a49ad14f4a16471a4c1a6d84f1a1ea65b4f65b68ba2b7a6fa1df905d87d766bbac3601f0453f36c1e0036b43376aeba9e69bf673f9b2277e7d1d87f332ddc7656c65d7b4f260bd45fe7d683ae89c567e4b8a97eef021319e97f844022fdb300b323247872cce1d994477722cc6dc66a06f14d9c68dd48be5d3ed709400ff2bbcfb1572ac55b9c37cc507763fb73f635a36106fc6b94a6d63fb03c0d3625f19f3d3608ee473147a1f1bc05f8bba99c8065b433b48fba9fff280bf4bfcdc055d37f7b3fca746fd102d4f021fb567c77c13883d1eaeca5c23d8e782e64c4e0e7b67ce1f87c7e7b9fcb9127232a645af393ae3137b7fc068f7b5eff47b91daedc63dc95a984fd07d9760cfb1f76be3d04cfa438de0c690eff923d3070b3e9e704ea4639d24ed04bd0a17f284343f6276dfabc1e58ffc2fda861e8eb331bd606e2fb377207996360d3392c7f5968cd3e255cb9d90b46984e66ea941cd8ae0abd1fe25f7255ce16c7ce298a20f63e6287386f3f5417d6e9b0da43ee7c7b2f14e4a1f2b5cb81d7da4f03735fc01e283ef931acd0fff363587bb046b197e103ddb6dd2f735c7be5f81c710ebd19fb05e18ccab07e495ec75bef087aeb33aaa36271d07c946f70721c4827a25eaf389922f9b9a8d77fe540b4eddd7a88fc6f74072ff57c25db9fd42fed436fa49e5d71ed7553a2495b1e3f619b7f9f071e06bb924ba574eabc6b550af256834411d105a43592e6e7ccad795d14336ddd41cbe873df79a851ee672dc7be5cf315a1b7a507b89b9f079bda0db2739a0905cb34dbf2b35be73e40ba6fb7289be611c3a27c7a2b5ecb77c5df93b645b44fdc5c9b1f03da6102ba4e702c7c331a26ddadef2753f3ba2b6001f543028714d0be1cc91da896b1ec59a62f4b7a4b339f61fe8dab4b2ce29a991247d3187b519f4eb4a6d63d1e7fff6dd59fe2fd4cbcbc6f6eb4de83d56b671055b83e023be923bdd0483431cbac76c4cf340f2fd3b3117629e757c62f1408e1169ab9796b5fa855a68417b497877ced7223f0fe7af40d35cc8a5c2fe3f0d61ad5473a94c5b83f7ab774cf6bb33e72c52fb95c5e3ffa83f790e5bbd1fdd27192f3cdb133681ffb7beddd7f27a723b36c1408f42f708755b4a5f88bfe178bc64df8026513af6b7c8377146d662b9c47b6cb47c79a673fbc7966829a0311fcef2a5e5cd57af6b912b43e49c053f8b8d99928ef117b4e65d27dbf97bd81bfaeb9dff1ed6aa6df17208496ed89572296cfd7a6f8eed827100886b1119e33b31ff3a69e7306f5cdf56f78bb19e227fa760875bc6290e20d6dfea3b4e4d380ebe218e835a755a598309beee88da4bf11db3d7531ea2fd63f9f24ceefbddb10c645ffc9a287103b437a5bdf33bdf9b049f921e6fd7a6c3ef0398009acff25ed1da9ae803d0e303dfd264fe5d6b7f4ecd6102f7e969c0c917e99686fdda19b2ab9edf4d1c6f63fba065c0dfd34ae2c4fe84cba120ed1c10ced75d938785dcf313ee612d41ef39a2fa0a2edd231a75bc18a747af19307e1c05cb458f4bbcedbc3d14dbc07246a798ecc5c2f894f40619d705894f0afd2362133e3676798ac72ef067c8fd32e0bf954d1e9e96fc4063cce39c5e41739be25820b6e18071cefc298f1ceba78e6f905a787d27b59a94ff9be9ccbd6d87b0ae825d08bc83984f56e04d396c82fb2eadfc8b7a2eb673ee72dd86ef96f11ef9b6f93779df196c13dd38099c295dfc53ea75303ef875028ff1eb215f0bef38ad06bd2470cbb454becd6fc627e464e97a38f28ef1a8c7f4353af902fe095ed510b09617c6e92cd844a1e93c37d6f98f27c67f873578c47d02fbf3d3ed709dd43886122d871f191affbac8bd04f7c679fa3dd420e76d36a733ee417d5edaf7ca2858e09c9ecdec83ef2d7d9a47e14cba7e0ae3b3c985fa2e70c6ffa7fb25d71411b8652aae5b3fd91af01c8cdb027b8ab5f707e68957f05372de76d2be86337fa9c59ec49a2116b78d3bf6dd563e5ff9dabcc1a915f661cc885a1bd86f277b29da17011322c405395f1dae5ba63a7b593d1ca67bb7407b01ba6e82c606de1f318e12ef8df90f13dff7adc67be9a456795cd1be344f42eea30a7b353bde8a6521ef03b8abd67d10f3b65ca270784bc6bb0e1be69607709fb988af00bb60b2dc616e0c6a63487bf480eba90afc8f0ab7d181b491ced3365e8f77f1fe0ac7f63b5e6b201e8c353ae95eb517b833b8fd44cfbfd0da0f751da2c73b78c2bb3134c298fcd9c6fdb8627b1fe72494f07ec531b1bd1af421c6f2dac57f63e3926b03f277633eb234ce3157ce817cff4b9b5dc9f05a7fbce632fbb6a5efe91e23719981ae31e02656cafeb29f6b29f83e9ca74bb41b94bde81adba28647871643e3bab8975433761d68cbc16f6b755f4463ff47bc2d92d074b1865c655de21ec71aa6fa1dad77a983d620d37d2470afdb36a47823fe5dbac7e572f0c1d73d6fb409bc39d5549273ddf93fabe9685ad85edb535d09c13fb66edb1ff25afe2fc6bf8d355e65ad4bd4bfe653eedbcfa4f66894477d1f8df9b3701edc17c7ba5dbc7f8afb9d106b88cce131d9cf35e01db38dcab18722be58ea4bc85b48d7e231d9d063065eb38121d455d47138bf26e3b8f4259d7ca5df218f609c32e02a1039c2bd2b604e42b7c69a565ca78e7e27211e46e3a560cf93efc3ed72ca576c3f1fa2be5f43adc848d4ce467bbc7765d827dc7e64a79ca3e07efca9b44d5dcfd0774b02ebb4098fcabb165a52dff2f6670e550c96109b7d663c3fd49e25e3ab4dbb1a9e81318ffcbf5f7a4f6a57d822d63a5e6decf2acbe634c39fe2cb78c4b64536b8745dd8c1d2e1e8c378cf66345f57bd6443b9dae93d23d3fc475927d4ff55ab2460a9cd0222794f41e50ff225dbf466b7c87decf269ccf13dd3bc655c9b002348fddfc562f85b324d818e07bf18a25d351c0d74c2beb948d2017817c5d7aee4736764f8d73f7a83f63a8c59908edc3361fd4fe0e936a7e407692fa4e0acf17c574b373e200fa42c9bd9497a442fe1dfe1e04f77e4caa01b2d505bd27d0412eb2aadc533e3272ee250ae363ac5b1af79fc087bf26bbf96983710df45c764cc2ab57fe23c3da355fabeba1987feb9c3a156f7f683ab0ee2595a56f820ccd0dba5fb0e7b6e1d3c5fc126ecb80e69fbe4b7102ae73246376fb1ad41fa4fdc549d837d833e53a547ebc31a6482ea1c91788f31fa16e5c16c0d97f3a8afdcbeea37004a3b91ee9793eb1fda7264e8d8e37d01380fd90e60a26a6ca2be81dd2cae83b8a3e81829b20d8383ae6bd32aeac5e32f61669858f514e778cd31cbc22df6853634d04fa3bc3f38ada4f18a77489f6be96d906e183243cba668ef5d0a9a63a7aafd01d20db0ff88bf790d729635c87738cf4f34378b7827d7be071a3b93bb66fbca7ba7f8ab1ef57b95bc8239de27091b33ac72dc5e7add1f974dc18a1ee9ea260f00badd571e87d48fcc841f95805c66e13c4478671a1f83a73a7bc0ffec6694d72c976ef1ae39c38ce9b86732117d58217fa93ef0cda0d74eeac1bdaed9c6fac4731de440f06fb31ceeba80738f970586416d1156379da967d05dbb9f21aa66811207b3c256b13db236c1fef01b06ef2f94fe3580d4d088a9bdf532d9ae63504abfc9763fb8fc42e2f99d9db6dc239d4814e8341f973bc38039e7039fc2bede7e76835baff5c1a05598bcfc8b6851a93bd073931eaab2bfbfa27fecc6d1be1da1a21863930fe419f01782616c1e063037c01de31ed0f4f5158f29a27d395cee19c7e4fd7c9f6c8b8e3e2e5f09605ee6913cc703e1462dc34dee952de70ee7705561ff2acaff7e2c756d19dc376013c57fac6c80ed8cafc9db0877c3827616f2ff17972dd17396f17b5d5547d802e0cf7c9259fb0f57cf53e8a169adcaf5817ad799db2dfdd12db829a53521b56a3b1a96a253a26b661f939de55d19fbbc4a14bed1bd8ef675d7b37de9ffeb8266cb6bde541efb615df85eeb3ec3d684dd8debbd2df78db62e0ad6d892d7f32178c77ea73f01aecc12bf0db043df0f9a96d2b630d593e598ce91411afe3fef7df8e75a235a1b2ea4d6001e72cf08b42fcd155344838eeeb07d86ba77f0177ce787e8cedb51cffa331c5d67bb7f85566ab5628ab3710fcca4fb5413ef1513afc34e2bbf06f21eaf19c1cdeef9286b852b776a0ebb8a419518b9a11128ff941bc17cc2bd3c5f57bb2ce2fd78db48c1273367a8fc9f86c4cc117012e62298f82daf146da23ce2761ef93b1ef82dddbc2b3dba683f177fab10d5f84fc8943a22fc83d29a6e759cca90ac70fe271accf2ab795deefd0fa9d547d06ccad40e6e9cb7d0e63ad778b428fef6de6dfdfdfb92ee8a0567d34e2ab40bc5358e73eaf3b1c73dd4ed1a769bd5eb05dbf92938be47ca69c67243934566f5151bdfc3f8e1bc9bed9d8bb321c585bbcac8458da21e849bf511dc1937a0dc1b2aac7618f0d65cdc33a0e62f81d7c7429a6675ce2b551e17615497b4cf1d61a07549efbd8d8d64dd4d761718a462eccbafc24f8a709c34be17df7333b06db2f4f39f69b4f9fe410057b5078779ea7637ed7e7f93c51fbf8b37c21c36cfd3626ab258f439ed9066e4f553ed6947f29f01af9a7aef88dfb3a5273d3cd58c8b2786d8943bd7e1e1f8a7633189bad75fae25ce09a97927db7b8ff611c073faffd1d79cc51d2323e5e3701f23539d7025fc3ff30df846b6d31efdd3f9a771a4a5c1041cf60dc1a625be87115c3c07518706d2fe6f29a5de2aa3c014e458e0b1d5bf108365fcba615eab3a703f25d294e5ad1a11e3aaf98b7eec776d84fb1067b4df52537fae09af567b02f6cc2c53ead811b008d3d1dd98a0eb293c14e6af505dea230eef00716f7bf15e362fc0bee315acf7be9de25754fd86606fb16fdb6ecb1187368ba99e41b745cebda60b7bdd2eb5afc03644f16b1ee233bf25b475b449b9fde17f7d75aacd766bec005b4c7c2b85c08f5df527b5b7e177925906d9b55feabc06fd1a24d7ddbd2fba0b120f04db4b44d8c13d26f3dd77e06773156489fbbcac6e549be46e498406be78bc095d1f51cff09c71dd8fdcb9fe8d9a2feb45d3e16e41d60ad35791f6ec2f910b747f2b9b84d56aaed68d7734c751f6b1285b1f8ae8f98688e2af787fd39eaf33144d67db9dd63dc776a9bd3be3748ec4e1ff192d9cf8ace37f50585f7e6f6d049aef3227df935bc22f6c7a97fd8983fd80f6c1b87ea6f6b782716ab15390ce831fc5d191f09ffa62ce62be8ecd11c21ef7f761fd2f79ef07779fa3fffb5cb7f1d14d9eebfca87a56b9fa7e403f91cc3631f7226828fcb7f57fc4b4dcdcbfd6d3fb7355fd6715cd16ba19ad2c87617f29417388e353358cc34d6fd27640b6e74ff42f0b8df9c6e8ec1db26b89fa2d0fd2bad0dac9d1a7ad76988ef939a069a03dba9de2ba09e7d6b104db1c15f693d9fcd3e5e6a016743382ce61f51382c630bb0edc0d702ba54c01903c72e3c56955f27d6e932a90ffffee13f156f5beffbfb323f06bd7b1a86b76b68ddd3d0d28e533d85f9037f9b8bbb5c674538f000f70e1c168f48b76e71e0613dacd7e73c092c2dd20bf87bd23a4606d046ca0521fae2d0c7af07f5bdc4350eaf23704e51205f485c9785f5fa1b686d60ed495dda73c664ad7e3de4381f3bd7b84f0ae35de0d963ef7c4c35b227a23ddc1c1593e6bef4efe65e559c698d40670e97d423a8e350e5b312f63a6493fc95e8e56521d9b385b8eec27a4f3536153b01ebcb0bf787b62adae0649f42634a7cf77fb7c468c81a0c7bedc9c1c7143b01fa553cefbb3a9645ce2b8ec317b55bc106ad37c1e8ccfad2ba6ddfe46f53b9db61915665b1a0e7989ccfb08b2f4ce6dd51f7faf2047cc96dfb36f6edf8d816f85f49bcf63f8ec120df0fd773a97e941cc7fa7bb9962e2d5216d791ed8fd6eb5bb5253fe14e82fd887121315cd6f21fcf97303fa423c6c07e677106a2992b8d1f8c7742e352c61beb8372a54707643ba5b6b5e736c85c8bc321b54f045b94da3e9e98d7d636823d958ddd1eba0f8be5f0fdbb11fb68e4af5b622462dc34345d78af69c0d6e4d4f938287e91a7c44d5afc84dfe3d0e4b9af9e4ff5bf047d4961eea97117160b63d835bceeff06cfcdd76115270ef61a6faba4f1fb9b76cafbcba7f121bec7c8f774af897ee3fa9e784d6960e90886429a17382ec2ea02db30cf2705534cc7c449184738deb47dbe3a35e3249d47e1f0b609067bdf77673f42b566adb74b74e093bf24817523bcbe44176acdf87145dc22d50f7adb0e995e10b1bd1b7a46fc1c4127a9e4312b2166f14ad69207dadbe300388416ebdd60ec8c919f93e7d938bb3a76af443e4f3c9e7dc3d701ee05d9e487c9725824d58268017bd72c704ff1323f326c762561d988f65171043d100b3d73a1c477e198a4d1b9c11a26ab38f0774c377fef9fa3caafdd1adbf1e9d8d7d6ba5fc6e6cb37c7cc7f9138d488e427247e59da971e8c5b196fa7e632a6f573beae8c2df2f39cd1b14caaf331d9cff6ceebac766cf7980156d043f6660d75f77a2efa2f17d996f2b18ea959e07f9ba77c36cefb71b0e8cd83c57dbedde593fae590e2f778fe61bedc67dbddd1315f2ae775f81457f47fd1f74fef6b3de5b371f1317f44f7e8e13ca27a97875b76df7ffdf878ca67abdd71b2fcc3fbe2f6dee71f6b7dfe916dd17ea9b4b73759eef23f6e2fdcb7d8cdf4513dff58e84a7bd17d07ffc17dabf835bdcd5fe38f79b3bd8fbf755fdcbfdbf9ca2fe676747b5bb6f56ff4bbfe6598c00919f3eef6e5f6d366e71e1df319fa7bf6fa72c3ffefc65bcb6316cf6ffaf7643b1cb39add70c6c63fd167dac7a193d3f9848e119d74b486ec63ca99fbfa924fecf212e9f75eaa23bb700738cc24b09e2877e6c4f69ff8efa5889351dbf392da561d059a74fd8ab6c172adb5efbbeb9d3f9a6e873f92a077ccc61e6028081fde250b7a5be0ded7cb5382e334bd64bc00fe865565bd518d4cce9d3c5cae76e9456e8721e2f8d07a96cbb8b49783d0be961a7adeffab00f9b8832ab18d6bbaa59a6e3d1bdd0bad2913f0f18a40d5d955f9821cf385e24a58df3923a60385de87aeff796c1bbda8ba97c04d1eb825f2a9304fd71a7f635e3f7b73cce29854f35316ced15e7b04eda4d7d1a7df8c6a22ca385082bf1ecf213e1a8533faeeb45d87c9127369c7e15063f1ef103804199f3ecc15dbdf4d240ea6c355e817d02cf6e83bbe1eba6bb54c8ee720b6b2daff4d7e20118fbd7d6eee8736df4f1ddbd071fd1370139d9c7176d804f3832370816c42af4c42c28d88cf83b1c8e79a81fc869ad542219b19e3c24e71581cb331e175ecfb05ba26b37d91cfefc7c4a639e906a74873afdf1605cebfdc180e7e4ddad1d4c306dff9447fc77532f235180748f7eefc28eb5ef33c16c41b83fb928c830bd8044433d4d5253e4299f3aa83e710d7b6f596c27847e3ff92f41724269283de511ccc0127b9f087eedb7648b5ae1be33609ca47aa436dfbf137be96820b655cc78df541e0196ce3d860b18ea939fc6b6a0eb5361e32d016358b23c96d01ff15e3ce3235d01fde2c5ffe05b933533b6f1a5c5a22b6f1806c27b0c1138b694de23eb161ffbb4f56278ca75c0e8535c16fb69df8e4bc5d65b229b5161e37960fa2e7e01a3134067d9167bf716f7e0ef0ba2c646e46f95c813babd0541c66e35b0affc771005c37ce73979ff5a1c0e348ae0b1ec3acf3991207df5d6d83ba9ea3752e5feb452faee253ccf85a776cad48c6bb13de87318665aabc93b46f41ae85dc0b625f5d353bff3726fffe986c700a19ade354d48747f7e8c40ad3bd07f97d0ec7918ee6d7745cd69b203b64e6cb01d9c1b38f97fbdcecdd809f0ce36c6c3426a2cab86eea5bbe0c060447cdb1a868ada3fa13688f896dcc0b0c1c7ac1e081d6ca8cd4e7c35e3eeab9be89f912933de83f5c33cce38b6d41c2b9b51a95afde7ab0f296c36a1320bb83db8a896e688e4d35fda05ef91a53ce50a62732d4d2ca27e319f6b134d9669057a171e3169e8dd526e81d131b637fe49cca709b858b3cd107a79f30beb287638f72ce6142b9c0d6802f8bed92e01f4aca2b768ec3c585d727637ed3640b7b6e2fd58117ec8af64874afb43fef51aeb21830e4f76b6a63be9f3818e89bd0bd2615e132447d63cfeb4de81dd11e419e0171fab47eca09072cb5694b78869e619cb06eec62521b2df1016c8765b28f8f69655c084f06b57f7fc5817f13bf55aa5be718f7c931aab18f1e57c629b18d3ef9668f88d820687c409e603c6bd6545bc6bb37f283b0f74cb9eb3fc56fb97d3176f8b47f13784df87769f1b9fb9a888d790f35cff24be35de422c7b8c6f29259acc65ec5f0a8bf1f629cefd2288f488bfd53e21c9bc829c9b9ff180eabbdae1a73976c5fee90a7b1fd0bac8d681d7e7d11ec24917790e26046dfc9bf9fa10d1fa7fcb3da6be03841f76ea9bf6e729588ef67d5b1565e62db7fc21c29724e2209fc47aa13ae76330b697de6dbf665ef98623be22bd4b49a1c5b39319fcbb436f653b3a92997b469b59377417db984f527ff3551389e27ab0e9d7bacf7794dec35e5ce9679911b3a0d8347a2035721b627ed5e99f6e745ccb486242dfa467d11da8ba64bedec58aaeebabfcd02d03ddeb31a0f533b4f7df95aa2d359a67bf79a6e87fd08fb4d75d2cf2e98eb728431af957fd904fe2502ee65e07b2f32136bad45ba75213af2741dd5904d22fa8ad31a7c04d0ab25f31aeca4542f35a21d0f1c925938077f02df87cf1f78a7aaace3a5c8894d6b9b60ac5bf81d8a339af7519095c23732e0def6fce09805d453a99c6c9d731ef569e51df198b9e5ff4df3b496e6e9f62bf3d4f97bf3b4fcfa3c65792a985f44db261830deca2f71862a368aab0bb5d69d7dfd72996e07b8bf8317ae6389b5e138479899e693866d97b1f1207e1357386fd2f5aea685e6e76ea3d42be3b137ac37c140f3d9b8613c4a38df680e13dafe106ad7071f51b838e0efbe6bf2970a58d00efe52f69e70adc2d187e68d17c415f0bc0206c4c718ec659b0ed59368cb61bc34ee4bb4df57c07d6a1b683eeb380e04fcfdbdd486fc15b6b76cebe2d87e15439ee486ec8a4746ea87b09dd0bba6fd05683800a608db15e2fdc0de49f4017088a33532ad901d03f1fc0b8b25057764335d93ea3ee0ba85a80d50b7f48afa95e1f7a0be0ef42101b307ef37ce0e71e896e87bc5617c4cfa3e5a57ae6975c25caef4d9dbfc1801e7ea0ee23eb15d3e229243756cb7043fc3764b186768ad0b883d46f856c93a0a9ac7514034bf6deb03f32841bc0bd96b543f83e9024836f108d95d6e91f07e072e9ac842cf7f21da19be88bb146d8a1ed69ded9d37a1a7112ce5215362824c7f02ad51c06f08b55aba14ef43c7d7f4dbca755c0afeb49a5612ae12df87e5756f79d0c7f14d8e51e7b12f823356f35b9cf712da01baa0c76c4ceac53e4e92b624d1517b15b4261a1c8c0aa7605b3f31febee9d668fb7d2fe941dab43e7621c56e600ee23a4da13d459528356e344f8fce5fe8c639094a2d23b9fa891d5f1afa44b81f045fbf93ef42d4e997be8dbb8dd4638ccb86e070455e3bc62b86d631d03122b948b4ee505e0a86a1c1b58614037c4c35e3148f4a4be51ed884f31f89edb9de3257ead87b65123cabe343e6230e7ad7b42abfc54be97d15db0beed3ae4721d75083ee286026f13ae27acb97e71fcb9701d83c189f7005bfca760742bef5005cf78afdb518cfcb78393c6463eff6b67de63aaa554178dbe7d764f9fcb1b1d178e895f387b57b7b8d06b32ad2e7abd963fe3aeacff4b88c57e97d1eccead987fb117de4b779c356f341d706af45fe13d1e041fe2af261413f3e467b9c39dc27b6b18d82fb037c48bc16119f0a6353a7c1fd1a055e296a2aa36740aea43fc43998e5f023e9a3b575ae25e35d8ef6bba41e5e12fde99cf6bd22a9bc22ad9a3ea5d2cf2fa9ee979f60e3fa71e0de409b06d7e0d69bc0b992fcf839b18d2246eba45e3ed2be5fa6f5f37dfec8047b867cf3e5d04c74e31407d6653246fea977cd40fb6ab84bf4391ed7a6faf7a048ec1bcc0d27a4d70c8acc36b693764e45cead1bf8e7e421f288698789546b919599c56bd2e59a34f1b7d6b920699472bf44bc073acfa837e191f3149b0dee771ef346eded9d29d77146f3d3a2fdd68877e33c378c175fe05910f8822f69e897e9bea4dabbc8fe66fcdf04ffb44a6dff63135827a2c902638cbf53c178dd36415c635f5fe67b138e6bb8a6bfc95dc0f8d776c57ab5bebbdede2d9280638f302e527917fc9c22a9e698afe537f768f2887bf5cf16ae6cc1afea6f82fb89fb2960333d45ba7f23ebda31de0e8b08e39ca05f84777d383660887ed17a2131563bad87bb8cf87a51dfbda6fdd939e9bbc7582f31170f599b31e7b69a7f6a7e533cdffc35f97617825bbe6423ef1a119b795ac1b76af07c73ae8ab6dc23b4f588fbd9ed25e87be9836b5aad311643e5536f691be0ad5f3b62944d2e0bd82b823ee5ee06ff86e00f05beeddfcd6d61ae881c9bef24af446345a4df1ecb6030423607d3a2547869d0bbe0584261fe5c973ba237718c43e7b0093cb46e02674ddab4151e600bbd6af97435e25c7d38ee8d75b114bd6178d770ee263b885f737d085be197a5fa10e2f9104f1e1c639be937d4a42e463aa6f87a2caf8dce13e3f4d11ed960a786c647930b1d8d59ffc4b8d095fea33e51daf3ae9e6d9c27f6fd089c2d9dba04e56ea11bbd64efcda3f0a5a9f96c8bdf00eb7d611dafdff62f68df7da6e34ceeafc5018c07383fd04b550bf418c3bec0da7f892aeb01385bb8b697cc2c2d9f707dbac7b47261fd7cdb0e8f99ed9f83c7b0a92fca38d1c4f71f269bc0cb203fdac0f24b6331075c6579db0afc85c7d8c45c9da1e91c25ddc83ee58fa43eb3f70ac746bd22b5cec718cf3ddaa65f0ed4f929daa124def707f343b987b1dd6c45de3cc88b3dd2c701e7bafdd33d94ea8e7a656c9705ef43b9568ce623568175e3e7cc33367e57223f34cc1f82d5c771e5e96aa4c409f07a966ae5058ddb40c7ef1c2e07751cc4c8e7bd201f71529fbe37b0c7c29c846758da250b87a073996e8b6b541d8ebfc1f2aa6b01d5a093d652a97f3f0ef2df220f05ea73fafc8f431e05de0ed7ffac0f89eefe25ea234c967735b65a213f1cedb5e8dbccc4f55bc099886bb9d48efdec928efdc7068d47711d5aa95c97cc7f90ce034ecc36beb06080ec7a8dd431f1bdbe6b5d19f3ba38d10e62ba9ac1bdc4b665be2736acac7d6c5b1ad431ed7d8d68170bf35bfeed7d7ce3f906a679cf38d58a6c8cf678b797119e47d4b7bfb5ebc684134f1f7c281a25ef613f2ba33db247ceef4965a071f91ed6345f22d4f89aa0e9db75fe37c0f9d83711e78f3540e09cb51a8f14dff942ce41fd82dba8c6e6b836bdaad12ff5c76439a892be6b45c1fca0d49d629d7cee43e239b244e3c01bf27bac0f44df5fbaafacfb3134043e32c517e5eb3a1d63f4db489a7cc27c15b46c8ec97e5ea6fbc5818ca163373f92a86503fb2fb259a81d7768b9278c2b57075b6e3f69ac6739e3d5faa206145af34fb10d9a2c38be6f8f580d09bdd794e62d01d7ef1651751fa0b5380a060f8abdc2782d1c2f227e39c4085dbdbc80469599e6188fd72b31a765f92079d6d326585c1aba50a552b38fb9eecba4f25e812f95da3e4b41bb4bc12b92f768af4f1fbbc80763b5b27ceeb3fbd2efd469036f825898dbc437df0f0b5c2f04dcad389e81e7546bac07ebf2afd577a0e3fa168580ef7f030d983d69f31af3a9d36732bec2edf35f0ef090589768ef9f189fe912e3951cb351f3cdf26c3eae736cf28202af82bfa67827d1be85da48aa312c6aa9b6c781784e8fd80e9827061fc37d2fae755ef973ec816672ccf750898f05ae796df6a9d8ae69151f9331ecb93cc6b01c401dd6c4ccd2d0e6da9a6a2c40d21c86785bb94e7af3635265a738f4ae49e915714dc70bf0a5ece2303fb1b1b5bc81f69c925ffe40fe22d6c0ed5d715dd8cbde85b517d94383731c78c76889ebc017c4e6012d7d6ebf21fbe19204fe6e138c30e7ecf89c3adb9da0f300f742cf82dfdf7d5a2fca8ee37ac811cc55d06a5dae7d3aefae936dd7988f728eab50c73ea99dd68b126b8835d769eccbcd0f71e06bd36afe487b50772b7d573c16a96d76cba3fe5ca83752f96748dd5d7ffe5861cd24c3b145bf97e4487c184f308f26c8c6ac555b14cf29b807dedb699b313f33cc67bfa9ff2f5d374ff01828b2499b2d077623e8e7d2354cba37b72fbb6c2af5795cc3a4e37964dff0cc3888d1f73bf07eba512e6ee893b4c7e6d8d7ecd265633dfe48fb73dcbf6dfb7e8bfdc6e7943c8ff8bef7e9fc813980de47acbb207382fd4efe16af17ea675ed87992ef40bf31f611c87c14d72636decb6c24d840cb7c4f9eb79f422c03aea3fc1e8dbe24fbd325a55acda1a7a555b9cda09e2423d7a747957784cc398c775af78a14c746b906f8debb46cb56db4fe23e41fd3879404d5d8af38a33c9874ad13addf397abd71ef21b8a37e01bb91f1917837e7c24fad377f07d57913695d7a86d661bc564ec5f685df0c446fe92b18b7d7fb95c8bdcfbc564ad196fac264d2fab9fcb42fc4ec7c97277843a3cc89fddb67c3d80fdd94efa4e9ee8f79d332a2dda4fd31af991732d0a06db2cb809dc9ee8bb0a7be13fbb8ec1dadaf5cd3398736bfeac2a3ea6fbb9b680e38b56ffb36bdf57af6db79fe8b9c015738947e41e5f5b23c5b127f28a3f36c1609fd8be4678d758ed35f1b3f81eb99b830e0a8e4fbc90b925e53e8bd8f648bd31ec6bdd7121f22ee27ca73ead5c7b85e793328fb9afb617dab76df857f8dbae797c03f0dcfabdcc808f0ae23265ba3dfd7a53d603f55ca2f7a8f6155d93f13b0b5c677cdd133106fe0d7473b17e149a7f03df3656fc9e837514a49708cd1b93e117d85a4a629c2edd4b89bd29e94f605be59fb93fd4c2fe7ecdfb6a3ff07943be33c6e48afbc6608bf65ca2f97e62e35d8c67887e92f4be2dfec052c196fdde4ff82ec597a47806fd7662bc47b0fda5fc337e3f1693a9fcfe4adcfbd8fe3f28330dd97072be47fe6d80f748ac27cafe76b7514eef3bad885d89e3c3e25e299fb797f619c00d258de30d6e46fa8e4a4d8c88ff92fa06d69038cc7e7c212e46ede643d3ce10ea6daade351efb68ad269a9558fb5be67de98e43f33128c579595c87d9ce15b245c97ab2ec695190e6a0a5403829418f67bdd6a72ba1a6076b2717f0df6a91277679de00c6f809fbd126aef1f941c6f28f92f9a15a14645037e48cb36362dff228b89fa0ae05d953cbe12d0ab252dad34cab63dd936d0621d620ad570407b9a5be93148f12e224d2ba87792f185e40b55f12e4a382af09fd0f7dca7d4758834f5138d796720c1174a071fdb2fff06d6394e8da01df4bb4191b5815196703382832bfe05af17dd0fcc16d22e37186ec0758c7ad73d6b0fd47b4d67c8035e9fac03970c96c6345eadf894e5fc1ee35a17659ef4c7921891e7d99a9395c9a5f69ddd73fd1194f6ceb918de41cc967390fba6fcab163f83e45daf75c2916db53ea1a483e84c4d10dc88f8ff0deb9d897d2b513395f21e59ae45c5c8ff951c01d5ef9356025c2d979da9edbc7b63f7cd3e6bb431eb2918362df5a9affe23716f348a1cefaf87d83719acdbe11f5dc2de3d8c06f12bec32ff6f33bd6fa1fb45c0f71061a2fc47befc81d48f3655bbc37732f03919fad2d7ff8ded1ef782f797d69e2ae95ef16f21c09c51cd61373d7a8b95272af97b48f6b432696c1fcfed9b2a5a652f189dbc63ad5f16c1b0b523e78057834aa61c739ca3e687d08aea95aadcbb533427e8f7f49f575be197b5afa7ab84efb593fab0757645753bf695a19755c1bacce25ad0db4b69f595dcc7270db8c8770dfff8fbc77eb5214e9d6857fd0ba588869757aa9a420a86489cae94e200b4c417dcb23fefa6fc49c114104a099d5dd6b8d6fef7dd1a3b3148338ce98c7e799fbae02d8e5ba73098a9cdc09d3a83bbcc21846c37ba49ecac0bd9db116ebf502b1b112b9a5684d05d470810c3268be13cdcf869c029a7f436cbb6939cc63f5768876f313e44702864207fc8253ef76888a15de8d650771893a0f7359a59c42e055166cc69aad0ef153e61b843b53e0da811c5290c19003c5653be6aec358298e48c2fca218bfdd399715e5e4a9dfe982ec6de7ffa49c6311e96b0d9f3331dc539b5ce4f91420df88ad07f87c15fe86f04e885b523e6a695e441d94eb6b34569c2b8feb191efb00ab1828d8c5c3bf1a315eb5a7d07aaed8dc756273533f4f3d49cfa5ebc27f27e8611c9bd42a2b7f04cd11e2f99c018d97239f15d5bfa0960972cfaaf5d6b93ef3c77b52d6217a87a64ec7df7b64f1e215e4396d8f90fb49f4cec5b35c2b7a4f500e2babcb7072eafcf6e43c7ec959718eca0ecd0bee101bfb1eabf94edc07e2fb4cfd14710e29fef935b5ca2479c0138cfbd3bb91b6b71f2b9a276bb8dba5d8eef8d46ffa2d5be6427b9a3b41b96f9fe911df9e972bc694cd530879915627e8127b213f872d18ef6b8ad542deefa979c27227e4fa698ce787da2063fe8866df06cfe7aac3f31e9478e7e6350cf7fe5777d1737d81ef4beeb3c5ef1ee8622047604f887c945c467a9dfec15fb4dee9dbd0733ab1b1023beeabf1b25c14bf595bfbadf31915af27948ff999e6b75773cd3f5f3d963ba28fd5d53ba16ff59a9c4918dba43921654b5f53b392a5602788edd5d7b111876d6fa39e4b23b549652ed43cd6e42e97cb0f797c9a796ff45e1b766235a577c8b69177d582850abf13b1c225ff7ad7be03d7c8a893c563a2a327aba8c3e419f693d69b2c455fab9c8b5571ebfc5cb09c1a1df391b47847ef802ff7493c467d72ea3990df9878b682352789c40906f109e67b06db9bae49a7964ba1e99f71d7e677703bb636ef7b3dbe8af1feda1d8d79a63ca702fcd75fc5fda95fb2f285c03c43cda8122950ff803c06d2b8b6edbf77ddc512752c696cdcd7d2aeb7503ff9aae1b7a27b243637afff1170c3dcd5f6daf735538815daf758e17de7baecaae85f108771b0b34a21b6c86bad290ff4a62fe916624e50a5c79cb85e21d654b177b9ae358bc577e8a706ce99bfd89ed745ff106dd29dafdfce56f938f6efa96ced9d84eb2e9d5b1c6d62ca1901fb76181afa157567ac3ba1f59265a275d8bc9e22d81b99bd70e707d883b57396187da83981dca371ab5fecdbb294e6fe08e70ff206551b744f4b89d4d13ef17a79acda596cacf6c43e8b5487cc9f2571de8e0ecba5f2c2b9d8d75ed8abf5ed3091b92720c6433116db31e63c62cf8d7e80ffd5c819c6ee65bdb32fd1e7e9736de865acbaca4fdf55c28df2f2aeb2bedf627323d4d1d17851a35686e8b7e5feb3a6e742bf1ab19f9d426c37c4d3e5f5fc55ee76d4b57ed3da2d56f30039d55867e6c67846077b611da9bdd08b13c946c9ef9463a4aa1118133b0bfe56dade1942ad987ec41c17acdd08bd3962702d866fabce00f65162809cd821c627d4921a956d95c5e64eee07b967a82d2dd6c4e6bcdf806f8cd80c89da2fd7940b007373588dc450c85d44cc86c00fb3b577033d0dfb25ebc42cb79e7346308c45e48b001b8c3dc3380ba8cdb9a35807f7c4000c01c03c106a7b8ea66175126d788ebace1eebf39c8b6940cdcb26ea429ebf32ddbcb0f6fc7021e479087972d3069f6eefc2b808d7865b42ac427d455e840eee15a28f438e34bc33cba2c239f23a68ac773813dd63a2e9b426e77a30c7c794f407c7d86bc75334a04eb386bb817816cb6e98c7bbf010fa71ea92f363e4ca876853ef688dd038c983223956f59550a70a6dd17acc41c0fc0723fd1c8ead7cbd184e81c359cd3253cbb2b53a4a03afa706de299b2c069727753c59b40bb3b5aa8bf5890fb022b15f2d71bc6ee859bb48cb7611957b355d45e09bc17ccbd5d8ba845d2b8b96fbe6673c0775c8708bb1ce7a0918d280333ca75859bc5db57ffd582196cecad0cb04f0926b9f09b8a089aa5fa9ef751ef8960258c7b5cf2a6cd2241731a0e3fb1ef29e2bacf1debd7a96e3c9ff308de428c426303f5dd2d1e8b8d50c7c3593b1bdc7da2ef8fd11f5915583c33fa6cf63fef5f5dc6c077f57d59d27c7e98eb5cdeeefecbe36f42d608ecaef957f5740acfe1019ee923ebf67ef6fcb4124fd2173c3fab212f2fef8f83657e8f75ce9dbab513e73dcfed21de92bd79d1ddaeca1c8b7776cac62db0baf5744caed12967c2c925f99d70515fa31f42d656274eea2fe25e4469e62357ece53c5fafe598bf349b55d2c963e2c233529034fd9833e61b82f7c3ebad6e7541b1671a1ef2096a8f375298366beef352efabbb8d04f8db5e66725ad63bdab2887585fd89c672a9983d0cfe83a5acbb8981d618df3505fe58eeee9fde562a48f1cb7811f5f3c68f3c138707d9ddc1a3a4a475fe6ceaf95920d9d91bb90f70cd95fba9218fae75ae76df2314f3532966abd60fcbea3049ebdaff63a9feba3698477212eb88bb4de71edf57e577355b5fd74efb2e7dd611603af4fa35fa4edd962d59bfa1d7b35771d77556edbfcfd645fc13d1f69bd5de83b6ceeada8082f4ba3bf13faff3fb877f93bea3ab328c36559bbc836891716201fd00ebb2fbc9e567dc662f6ce7d45ce22daad35df1ab56721c66075c222cce30dd4931c4c6d9f862c9e3eb6e7644e887d69bebda4c10e6ad8cb47586ae4fe767c72976ed3c4c84fe162d825ba41e2bda4a837f40b736c5f819f8fedd905e63f332cb4649c1c880e1414f92e54593dbf500738ea8f96508b32072cc988e84ab45fe6d83e7c141cf3ea44c6186a2fe95ced9f633547dc2bdf06fd23f2dd6362e4d7c85831acb03bcd91de27806d9194813fdcc7f5fa4d8362851b2ebbeb685c324e9de27609fcf97db6c5bb6d62b0b9e53128a223e4ac2622ee0cf3788b754d93cda0947c13cdf79c891e5fb559f33355773adb2f7938c27e7c8179c8f6d3b33d48ce4885cdbf9bed637e76af44e73b0036c7aa5f8af9724be4de6adc9361d127faa6d89e544f56e3223b207e11e0cebd9a63f7bc86bcc9cecf782be4f9ad902f4cf4854eca53fbbdc5f8a3be684baa317bc01f8a358472ed2cb4ef1eaffe82faabd5d10efc18c079e24680e58431fc5ff5f8b284a30e7148228b932aa7712b705e483216f928de5bb8d2253e4e78af726bf3c3b6e271ead74d25a787db4875efd12651886e9e14ab0a3bc69ba781b0f6efe0e318fc7ed0af068e5e734fd811ae53ef0e71ba455a4e10034bc0999739de695e4afb1a7457ff7c0d74be5f449e1cf1fe819848ddc788be7d69dff49ff9c3ffe93af0f3b8dca32fa86cef97ecefc4fc0562bf89fab3073c7cab730c9c8fabfd6c835c7cc29e92fcc8ed7edcefd6ba241da8632677c538bf241067a0f1b2cd70181982ac01ac43cad334b615621730ec7aabebfeb2904bbf58fbe9d134f47358ab3be2cfaafa2f4bc85de572f2493d738bfcfaeb694e75c3dea9707a13e3f548fd5cd2dd8d398d55eee9931850759f2898d7f95e0e7e4f54a9268b615b2a5149ce24e753048c4c8ad5029f37724ba5fa1cbb1bf8145b8be8603bc05f426c643686b17399b6f449e2b07c902323e81d58f7da22c32917ec0978e01846ab8a7ec2493914f260f898295ed3315dbb1216289f8bcaaea2ed759d8bf0bc12f903797d37e6d1acf06ffe423c19c49968c787e239ba4aa48467c6c55bf3571a1170c300dff3a1e27fa0baa2a6978c0398d7c451dca126cef2e0bfe977355c588e4b24d833c0cff7297036525c2456ff84f97bd4b740f3f6649c9ec873cb10f0b1c2fb84b4b71d818f24dcd6387c8d11f5c1e31cd067258e8660837c614ed103bc257286e79b67f96383062613bbf782c5360d16352c262e8fcd836998fcb7520e8adbc695b14a03c0daabb0bf8305cbb906cc3e86078d784488f14d316f707f22a7465f591b80759f87bb9984791518c33419db2ff4bd80659868432df11d96a7ccb880641e69e457bec6e515de3d21771ef5ed20670760282aa67ee2e792d66166819a91754b2afc24368e1399ffd785eed8cb91d549c6ce25daf27ce0ff62d8ea52fb46278f8b0471a5181ed64af88ce88d141ba97a7740e79efae444fbe8edb6616327bffbe99f4ea16fed10432aec9be3e379bae9e1d8bbcae5279dc75f8867ff1fd318a681de8a0756865e383447a3742eac1bd42bf8ae827180e182fafcebbfd3fee077e48ecc43157071c96fefbe80b35ac7ba5ae23982358dcb0cfa08f5785ea8b5f0117762d5b543af73f90e7ed5b3335ac7a69a2f701fcd29d723f5ab5667df708b80d84f1aed43b526f7f752928d74bf366522f2fe393f9dd1eb0fd3b0f7a167ffc63c20bbc2fc01ae1deeb72377c565b2b17ff99da1bbdababffc727f59156e1674ab7af18a6312f3e2e15edf4aed9c4323bfc7c62dfb5851aed7c560b72c74b5fa2dc8ecb6f1be077ef8c6f81771ac2d386be27a881c6f55ada6c0cb36e89b55ce6a1677ed43a8be809c9772685a31891a77e98ddda5adbccd4ff24c396e749d6799da40c2f3a26d067ccec077407fdf9e2790f1da72623726465f410eef2c8b957e17b9658779bc737ad3c2ce22e3ca6390530dde7168d793b1169ad690437d208d91d53037db63fd4f6c6256fffd57dd4f5cc5c5aa75c53a9e5b6f82796c4719abb4c279fb0aefeebb5cb3c2dce41f867d4c80bf89ef2db8fb84f5146a9d2bbfbf84dd321670b5685e527d5f2c001340daabbf433fbf577167296e49d6ec883cda12fe4bcd9667b1cf53fe21e7e0d4f274719f09eb3b25ef96ec73dc67c27cf4306775d42f2680e3ba4d7f7e2ae94cdbb6e6c07c772fb5e062087b05d799e388ca98e54c061e40172cf22cdacd259ceca8e823bfb1e4bbee5da22ee244b6e59310dd241cf5cfd138afb8d916598587c96cd2e6fd21e95094f3907109be4bbf613a13e519f4bad5333ecd9d7f825b0bfbd1f4e96f551ad3f3ada489ffc5fb56b7138197776de82ae6a9f5d535729665a641fd0c42bf89eeee6b568a9f0d10d34bbf6ec8e7d4f7f31b389735fa5b2d8bcd1d3b73f334f05ef8f36bc000bca17f147fc3e796b67faee2bb94938862ec0770e7ebdba947d6679b86459e47c61c62ea93057def362f687e70b1f6dc63a80def6ba3e2cb11f40ac08864fde277d288ec6dd4ff90137c4beca0d82c06b5f7a0de99a8f91de3aeaec2e78ec5597d93ff16e2da0f6de27a5d0fbf03a5ba8ea840fcc148bd1d43cf11b903f77006c7d625326e79a833cea66b5abb9b6bb58622b79f24abead82590d71203eebdbb451ea7a71826307fe27e9c96af80c723ca6a8937127dc545a4de7e23f6aeae50ccee3281dc76c0d807bd86fb90c5fe774e5c5f20b215cfd600b927f0cc37f05ec8fb11ffb69747bbe0bcdcf6478edbd79779c06a82c838b689f7806f07f4846aad014baa659ee8f9967c9fe6a2ca3d10ce443d1f17f21babef49dbf969a26d859af87f9fb7dbeab867613f41ce84a929a957ba777fb9a7b916280b02cdbd07daf01c7aee16eabdc6611619f9569c17c0f246bf25e83651d7a29c19c07bf63b5c0c0f44f715f7379ed1f8085c18023fea94f2bffe292f38e38dc5f36247b8f728d686a76f976aeff8e156fb6952f5bfd187969abc46dda3b8b799ce5fe92be27d94df291f736573c2bfb9fe21b739aefa0e7b742cd4be336cba76f9219f0f7a87d7df61a9fc7cee405eab2ed121f7816f0d132dbd4e163d25eab8d718f8e7f53bd492b2e7767627d8d94abc496f225e0bb3c7e76afffae15b8750cd1453cb3e278b41397b1bdda73ee0f3113bf8688ec22c50dd4da4f67f4fb5a115158c4b03fd957191efd663e70eb82daa5b2685bbfde7bc2dd6d2d13ab4d6f57f91bf858c096bc311531ef2a99232a8f0c8c96fafc40e8b76f36aec15b74a1175dd73a8557c75ab91be7256bdd5aa6cf48df294887deb89b930adbea840d5cf73cf060e3ac47f16310d9afbc75ce8c0211da93d8eeb2c608249df51192becd118ecb440c8f19b12b9d5752ee0a3430e6db18d9afd93dfd17e75de8467682ea464470bf622e335bc6ee6869505857b9c76ad4eb4730e91b7baac0df748f67a5cf6f358552efc779deb86b4cb7553bdcfb871fdb5efeca32ec6d7c96f1323cf63e57689bab0a7c077e56bd62028f44de85d2ff10e6ae24ee1a2bf0fbd1bd4464d55f71e2dbed726c7b72e243b59893a951d88675e2f4372879534ff9ec8e53725f5bbce6535b60e9197032f313e071cd0bc36c9dc6cff1275747e77611bf48eb17b91675d22a253bdbdd2eff629ab63a232e72f66234ab65aa30fc8453bd586fb35f577d7eb5890cf96ee23fdba8954eb3f21e27dc33e62dfcbf85415fe1e70e7be1db92eb4463c4ccaa97b5a7e789d4da45ecf89d19f937b17f995dde4bde4fac3217aa0af53bbada4383b57f27b668bd37e1d4d233b4414efccd72c2e9f0127acace1b5117947b1ee7ccde23ccce6662b6394de8f72bc0bef20c63d129bdbe1401e0fe8c4f74438c301ed2ffb9efa74cfb45ffd6a0e07fb35d4c0a0de22ef97c17f9b3ad363063fcc11e3d6dcb2f1435b94aba8e6fbafb0e405ae8823f201d80a60248c158e891fa3cf6a279d476d0f9c9a907f389e49f8f989911fe3326e9e19685fd27df210f8afa93d47f5eaa9e09ba29ca64741dfa9e9d84916e339041cff9f0b3e1ea94daaa78979a3559d2ead89855cfe2ed476b3769609e20bd4fb73903043e1372ee54c1df44dbd5ffd1662ba37118f254f743ac7201baa39f7ee7a52ebd301c736609c5657c641dbaa9b34e6644079436cb0655632fe3fb5afa5f93b078cfb1e31645177a26d0b7cbdff31477901387fa04b0def899a2b819a553cb686684bcd41177521cfbcd2df795ba86b409e6e5c72ee0b5eefc76d47ba96ec7753099b25cdd6749c588351cd01701fc86b04e7bcdeae54ffa1ba0add0bfbc6738f7d2b11efc3db6b2aedbfb77dad0fd75afce2b897fda7cd3ec9b5614f7986a84f6fc6737d684ece9efeeebfccb7116078d6b9c0a6daf017bbb766cb63eaab945348ef1f43efe52f53efff0efd1a8e34e333ea9c7e3de3fff2d157f504974c38e3d5df9ca72229fa87501b5ca7da30a25c28625d1be563dab6ae613d6e46dae0765fae601c96c5c2991d417975eafb16ed098cbd7d8713a4fe7be6979a22ff57b1f6e266fcb4eeb7046ea4f01096db735cb8c466ce6b3e0186c17d348df01002be1bfa576ab9a0956e7637ffaad781fa5d160ba378dc9a8ce35b3f0b28c3ac3ccc4f2ecafd5ecd0e12fb924b58cbcc668c3b8db6d0b73482dc97fa6fca90d6837fd7ff8c63baa65ec755d6deed3e2dd85a39d3d0dfeed1cfe5501fe23515ffed2f7aa7c01feca9fe84bae1389f828f5fc20482b9e5beb625cbd962ebd691c724c628287f21b933dc361f148b75b6efc34c9ac3d6bb73dcf065d2b15579ef6c0cd53a3cbaab87d14c57e4dfc93e9a5f0ffbaa1f6f7e0d4789ca4dc15ec8fefa85f13cc0649908718b19e27c93b32bec612b92d78b3cc3e7427a8e9ff72dae0160cc70dfcf35f5559ac3389e95555d93c2e7afaa19fa9a0b7556fe5fcc855a48b9ea95bdaa2787c8b8d988f75ec575812307306c58fd37c6dfe31dbe775a24a39512cea186666c77626a27c75d7733f5ec63e0dbf7d09f897ad13d617866148b81ec5356131a754dc8bf760cb724b64e48f52d87e8a82e5d4bfabb2a8e40ff8df705bb27d00ea13aa159d939824ed1a28bc918b4d8ae7017d5ded19ebbd49cd745e8d93919cf0afbbc47fe0c3a1eae27bc5ecc11d841649f1ce2b2877919581f7f8937bd9da3dbc60a39dbef09b95be1aeb33bc1a6f31919fa3d56ddfbb4c28b7291b305b8f4b9ee3ad1b61516fc06da22fb10f2e1d8bcac7dfb6c75e7f0efc840df64a012db5a3f449b611e1a498e3552ec7d6d384b989b1ffa21d5c55bb0f6fee95e00df0cca5aea1fcc939c8e73d9c2adf5c7fb61f0df98f3e7801e28f299d0b82e99676dedf5b6c8d779ddc0da75ae1b8a714debee312e077cbb44961b375a8b47e402b1fdaaf5a4f389e76d27ac1bc34c237a15e2f1c13313caeff58d7de80af8577cff4d35c487a67bbcb2d1589da3587704f38bbf83bb0df729de63f7b6672b7b893e8b6b5ead0d1d67d5a6d8b7f7fa59ac6c3cb1cf426c15def1cba7fc710bc09eb4ce81775b46857e853cce51780cbcb889f340dfe177fa983b32cacf640f47857e5ca9bd2c1edbfba85b6151609eae4d74dcfbdae82bf3c22da2ae95bbf46c4d443b5398b769e3739c23360601eb98ec41b257c47568cc97d8f693f922779a2acd9790434ae43ccd6f49234fef217feb4b1a7816c6293b893d556d7f950f2e4127714da39313bd2d1ccfd2a070a1ce21345cf20ecc43d27a885934d2b7183bc53907fea8ae7b8d414705beda1c6414e3e2ecb2fa477aaf768779a0e659a40d3f031f79ea451fa8abe6c768d481bccf69deff55b56d8f429f9c2f9a379b4b7cce7cdd1b6de9561ea8ee21295c2a53c85e827b8de8ae77a71ae321527b9ccb18f6f7d842fec4e2e1b9237b0bce39d12f62c5c9495f59aeb62bf2d88e890c5cb5f8618697689c137de03819b5fa9bd9d9e3be5fd2b7f923bf718d030163e7cca70cb5ffd977fcc8d2fe6cc9bfb614f0cb532ed06a0ca6813a8224abc6b35dc34e47ff267f07f3734ae382da05a8955543cfc13b67159691daa16b49b1f7e4fcd5c2aab806982f5ec2f3c37a4376fe1996b6cbd6b4c5578f1c77ad9814e29abdd5c608f77f5ed05a70291e307787565c129b1c7d2a7837816fb413edec2c2cdcd8dc109d32cc836efe1961def905f3f62db8abc10ed07a5cafa36b03f67be0f57a5833e5ec43c017bb1dc2c2fdfcf06cc0700a380f2bc6a2aafec2feed303de36331ec429ebd86f5f04447851a22325e22c70c62372479e8bd005e33e42e80eedbcb13d52d4d2dbdd99b97fba4dca649e196b18a353b64ad59fe9da04b628c47d45d472ccfaec224aed502f964dfad80db365743aa4754361fe33f697d075d7317733f6afc66358e17690f3d92595fe18b887d5e7a803dccdf6da98ff4f7b88ebf5bf3978b67bce72e737be86cdd5fff237decb8ef2b45371cb72fec67f159f44df378712d8e21cb9e2ff56a566723c6cd44d924ae65edb7f6b379adbf6757e77479b6f6eeaab79caf42ddffbadd7fa7ff4fe6bcbeefadbba8cb3edd278db6dc0a93f9dbfb83fd869f372d79d82eef1be37c78b637f2c763fe97faf9f89ce80ccb38aef42a260ff42a7f96d8f8e2b9a26dc39d84b86fc3d75f6dcfd7751205659c68c3fc1adfdaf6882caf308e027211c7dcb0c7c4b9e3fb49be63e57c0fc02e91f4901ee400d66ac7cfa19f0c6383fee6ad23c454f89911f5892fedbeb6b594fc5a6fafa9a57ea50fa4074bc600fb616a09d46857b602f287872e5be3f460dd453f18e507e5b573557b56c73dc7aa5e848be131f4922ce86ed3c8c88bd0b37b817acb39c7a8d1bb24888df219781873419e604927aaea890bb72b7da70d87ab514eec70d2af38dad4b9f45bd65593f3952de4e2be3779f86b6bd7fcdd06f3186ff7a8c41cafc0cbcf8c233e041f62bf0b3a32d13f54fdf36321eb29ef8dfe0ef60fef14610fc31a7770df5b505ff5f08cfd30b57837590c7ecb79ddd9d7f2b47166aab1ff2c078043656a03c807fa52bf706b78736ffbd42ae3437d4e27d2d9a7fb6ed53cf3cfde5f935f0fc69fc4c4bef08d1e72d5135baf58d5f7a89423cab81542ed255d1a6e86f51ec031950545bf9368cc0759d95b80bfb33c00d75263ffa802264d619e236f75a131eb53e0dbbda8989da49c174fd04b179d7da4f67fc725e7946e608d8b76ed4f888b05e7d9066b5ae9b913fd6844ce1c82126ad047a16f1199bb459bd935e2a27fa2f7b4a0afeb77d31821de12b1df20e708e383a661fbcb056204069d6441fd768768175ed6cc2f87ba3ef844d6de4c9a7bc18ff71efa491e6f866ae85b77c439077f2fab79a17284f37d296b03f243657b80dc9f06f5d7520ef2b86ce527fcc7b258b27d9eeb7076c57bfae0bb8ae3ebb94eddb0dd5bdbaceb5c352c02986f3aafc02b4fec91d2349c0bb183a2a2af887eee2f6cc36fef1377f1706f086b28b647eda57198c73b1beaa7c17ed3d1efc5f80138e70de5e913f717dd0fcb79be4a433f3bc45d87f9729fe9815fdc8f6d35a28ff1761fee8d917308b95ed566b7d7f28d5bebd82579bb9babfa19d74ff43f7ce1c3d3b6ed77b191658936dc02a77e77ce6d72e939690ce9c1044e1888df88fb58d45b1e70f87c5b0f4f1feaa6cd78a7d8ce68ed39dc9ff173f1f89c3946be7505ce9d2fcfb8bc8eb57a9307cfb9828feb0f7da8e2e791a7f782c2adf62affae892503f74279647515b8a67e96075d57091743c007c0ef3a8c43228d3cc05fdbbed7da5af873d6ce157d5ba33416fcc7349f017ca1a1916fa73e9b1f22b7fb9d504d45ac04228f7e46865397ff949fdeca63df3d502c8352dcdb1077acf599e7abc9edfb808de3b9db1a16de26ea3a7b1ee7d1a8aea7ea101b5aef2037ee736db89feb12631b2cff1dfc44100f2532e9ba69aec57523ae15c419c1af0af716b485f7f5eafca149e3a6f87c1dcc9506dfd628f5350bfcdbbcae52bf6e80fb06f33064dc6e3dc94d433fc6eaeba3b1c466deff857a886301df53d1cb22414ef89a79accda106be6690e7490ef8a16cacdaf0843166298f1072f23f162c67aade47fbc26b55053e55c85931f2cfb53f4f9fc7291c2332f49de8770f0d57097deb8472cacad786aeaebdbe847b44f168f93885b8cd37622a89a4dbfda46b35fd6a2e25bb6ddf3cb76f3276fe2379c47248b1bf57595e6852fce3288e51ac59a8eb8f0ffdb62df946b1d13f7e7821dcbb58f3f88d9a5d23cb62057de0138ec931e77e71390f08ef658e5da1f530e68b3c2642feee20333df1f7901b5ed5e317f43bc4d0176cb68cb627e2e8547b7642ce14ad0913fa7a0ed45b1677d15e429e7bd70bbc2bd61537fa4a6bada06e8ef1d22367c8520df6f4b374426cc9ea79ac15039c9f2df5b72b379ebb2ed6511864fedd9f80b957e4447f7a136c529a879cd3b9efb37ab84fe405441cae9adc60b98ae48caf968af3f37d23ca4a7b1f78bd1df08718fd32003caf5bf6e1b9e53b8dabcd162fe9bc00fbea48732381ef39a0b67f4874f3d1eb7e065802af17f3cd3c9b23d21f7d833cccafa06782dd0779c2a0fb03ae5d5c0e7f4ede46884b2ccd83fb12789d6b64b814eb80fac0bb56161b29e55bd53b6bdfca275a72a69fb3ffef261c53709fb2799916fa16b94a57fbd962fb9720fb7671a15fd7da701f101d5925f2059e3b33dc06d67ee039dba5919fd7655a4eb5c17db23c52ce80de25a9da91fd08632b072e05d521f628d853f88edb212a8e22aec5e531262bc5805be158c45ad8d00f912767b77d3c2ff8cc1d31a76b734df10090d30b74761c87cefb24e6467c22c6873bc6b16602efbe980742f7e298e6da8c5d62d71de2727822f302791885bb45ae14e7406bd7b278b7855849847cb4dc06c6180b62ce203e2e99bbd37dba19428d225daf744ddad312bab762cc8385bcb92d7057066ac6db5c1bfd63a80d215f25226bda9d117979c4f82fcb01d615b61700a7561bee42af97c750cf837de063e6fdcbef906f4e738fe3ee3087bffd013d33f83bd370cf89d7216d211f29e329a7dce2a117166bcf3e84b46608df013954795c74ee94a7248fbc7ef9b1b8a6c1ce5580cbcd079beb00712fb50f791dd42ee26b05b11fce39367cfda55575ee884f9f74a222bf259e3b2373b9f0e63b78770bd71cfae77af788d8fc3b88bbef853b711715ecfcd1bdbb192e13432f13c092a739dbdc0e7c4967dacbcdd686805f15fb6e0ee74dc9b78106fb675bc5c5a13eace12fb43aa08331dc42dccb46c58947c611779d3cf01cf0e94c259f27b427ea46bb65d157425a1b1953cc44e62f841c3e15f38b04ec8b4de8655952e497f8739f82af819c7f62df7593b369b859a0a654a664c8e12df65fcdef1427e6101a6ec9f611d43813fbcf18c963d3869b8f85703f6b598e67c2dd8614239bcde56451f99965fcd08a0b4f6e5be20f3cd7d7a4cd5fe5182ed6c7780c9b17ee28c03197da1ecfd2d078a5634a3a801bb37372b423740563b9c0774bf6fa391ae7fc1d82fca4f6ed280dd55c0dbd973436f403bd6340e64e37437f6db88c3b49dc0777c82bc3b38e35a6554e5417fdd92f69ac422dfd3d523b7975de508ecf3b43d7d4d2dbbbb64ac342bf133d96eabbcdf1521ca0069f6bd1e94463e7c0efb6969c3e81dff044d678ed51f9faa6081cfc3d013f8adecb90d741fd20555ef727c3696a89d711bd97d78833ac9809abb17adba71fdd2a0797c9cd9f8b6124d49a90f933039fec41905130bea947f6a34b64b60b584f9073e99401d808f996fa0421372f2e879bd077baa147d6cd061d4abc134c6d88f3b0c236c938a57ee1b36fdc37f736e0dfc55df78e5cc2ae8ab50becfb9e1083c2daf78a939dddbf30af1659e7c0772ef1263d08b8d9f419dc973f17c3c76b5cf27bd415e52c99df0a0b1b392951dfb8093604b95ffb9d78c3f58de16ab4451f469103ff7be4b959b49b611d36d19371ff5f2a1d91ea7dfeec6ceaee1d38db18d6bd67dd83ae75080a575c4f724636708ebbc8c947ee4eea33a772107cb4cc4724caa60ef06b9643726e539e7ba5bda40ba3df25ba492c8e0ddab02f64cd0355bf93f1d0dc8c6da402fe21e46bacfdf9d9d4016b1f6bc2c7ee392adccfd0b7ef816ff584b38a79a85e07e598f8ae7192335f23fad6ac3c50fb25b9e7992ec7c736865ace23fc866249a24fd2cde22ed5e9c65027fd1917f926f4cdb388913057c95e227703e44e72bf7de51300397b5afb078a97d9abe6bf23aebdfe19745db2ffb304f9e68e91b4069d8ce842e1d8458e39b6e63cff7226f5cbf1f4cf6a9c2bc1e611f4d8fb41d80bc486cdb2a84872c450199c887c0e790e37e4e1c2bbe3fb3eb5547d1b6af11131ad80fb76671afdd2d412e6d7d9bd8be3d3506e9b9a82b93df45d28afad3c2263a077229c73c67930ae6a626bb29dcdcd96cd85d59de16f2bdc0e1817c8b3928c272f04db88e81d6588f34ded263ce368ab632d49e85bca073e7b27f611dcd9b4efd57e4aeef4b7159f007d8672a85535276c2f8e405f7c63ebf313eed2feb5f91cc8a6c7cf013fa75b2e3da2138607119b17f17404ce0223571e3e57f933402e543a2bc8a46be259c7b537839caf77811b89ea3bc04b00f2ba5a736a8b0c687d9fbe0dc733beb6bc168fda3234c70cf4fd44cd95b536dcad897db3191e409f27f3e1913dc06244550d3dd3b9989f67b2191e12d0437425c0b5ab30a1b56177ed3b7b739cec893c263639e8651e95735a02dc2e5629d49a09be3a794c1c170ff6f602f66fc6eccc1df0ae08fca9d3cd7008b613e4530e419f48bcce063037fc19e7a38a394642e33d118cc955009b658df99e59a4519e1cc12747e779137af0ae2c34100b7ce105ec3b3ea7955ebc67fbe44ee66fed3bc48ecb12a29bd25a6dca1fd30955c04713e613f5c1d08f41668afd17db9f0b185c789f2ba9cbe24aeaad671afa3604ee23dc0b802d88fdc5f718c921295ca2e76df13ce70af84d0b370bc7db5acc68c0eb3af1ac705fc10fe16f414718b03a1cb68f86a1e180af1c6548cbbed511bb48b0a5b3689c641fc49ea0773efcbe70bbe23cd0f6047dc8e942dc06fc09749d401fe6fe20e66b10e3c474ad6cb1cfccde47798bbc31a8c37873c1c72e8d7310031f06add15e91b9455918779d2cdecdd91a1cc2b753ebef12a36f851afa7f884c0a35fe7e3116f1fdbd0cf2d8caa9bcbf706e56c83391656d632cbcbefe04fdf9b518aed86fa3f196af0bebafb02e172ebf994fe8beaffe96f53559bee994931f6bacc8da521b58d49be8bae2f7cd75d484cf9027e8cbf5aaee36660730df28b131404f23671ff4d009d81c26e588011d7f3f590c4fa1efec23553e33ad6796e89e63ab83b99b74adc74986f728d101dced3bb3b916c30bd8d6bbe410ab626ca79a6396b7c1e659faf777e7faa16ca098b3205ba8af6233b498fd28c5cee99dd2d07375e19dc2f36b83f31e7deb4ec03e0247bec8354e6cda3bb7992a7944d64490270fdfc3d6f94ef3f241af62f311f8b32a2fe6edc8ecc934ea82fddd5dd3ba85868c1cd3b95d513929fffb99ac1c87705f3cb8c3e57bf0f93a487632afdf477d8defedefcf3f62c3bbf744b857241e720147bf7d8e5fd20f15f4b03eee11c44e97db95d716e28e02c608de553da8470cd494ad13bb6b5bcf079c53d067f7d5df8b27e76294e4e4de8e76ee2900bda65f709f01dddb44cf6077d797f253f6edb3fba7a677a5cffbceecf5b7bd8ce75a8b770bef84fe52fc7781bff1eb7127465f09bc6b6dfccc2f5bb76185fd035ce6a02303cf07f89919967c0d27b286ed58e10ba33cad303c2b9eea6f9c19b0f5a87f7bb05f7bbd0dc589c2b842d75502c8a39b1f64b9f6485f16c7269c35ba6f994f6dedcdb12618ce1eabf7c53cbe35ca0f5893efe80db09f89de80b1ff3ceec2fdca7500e16c7cbdef46cd9800e7c2040c72e7f2e03dc583f3f5574dc715ef2696e7fc58beb4ed0fceb506ebfe6c8d2dcc9f72efb4de6583beb13ef719d3be723bfbcbf349e7fc43a962b613dc0b875f345f3728f4cfb5c4ddc87d3d349fcbdd626c62259c4b71cc901745ecef2ceeda648e2f11f8461836f2fc87390e0fb19a83dd8e63689d33d9ef466459d12fc13ff1b5fefd6ceed410fc41b03ff2501bec03cff94f00f5ebe49cd0b361bc321d80ea06fdb3d4cf2fee8e85784f6c045f48f34e39cb3a13727499e393c89f89be6b7ad627be22e1e63b121f02c606f07bf20e32e64a4ef039f7a5bb83cc776d4d5ff02c57ba06b133709c1ee45edcdf01d3ee90052af887e85982b818d5e7b96e7948c6761e1941fb588d7eb9f6c01f81f71dd54b987f341973bd9be88c97b8c8a90df9c5be21674c75b7cdfd43d7feeb7da4933b21f42dd1b7c662d58ffd08ed7be32f619df6a87fe77d697f8ec4da486ac7f05ab721da88427c72edbdc87aaaf85e6d40ed631983b27e2e6381cff07dd3f04b71fbfd918e8f3af790e294cd2946b47e009e07c11f8afd0c2f502b8efe5fc42119cf7e48fb10e475c70a35629b309d6b9e262ac6dba80d748798615d3e8f9d0b397bd345757f98e384c68d687c08b03d6e92bc427f0f799fbe0d0dcca720fa00f50341de1bf331b6c4fe0f950ffb1bfbf15edf87c767fb6f99f8f635c47837cde50399c279862a6ed9862f3f453c5d71acc33c2aaadc48885d5239d1eef7b0f250cdcf3c4792fc7ee7e4f1b673094127675c4ecf6daeb84bced08ce78824e26fc93ea175d9ecbc573e50d463c2222fab580f8c83c52377954f35a6b90f738aefa0df69ee38e4f3c790b3d2eb99639803c8e5afded3ba6ee25cfd401bc3b123559cff97676bb7a0b6ed9daf9d98f341cf30e2d57dad1707ea2d0f7cf38769d8c7d0d3cba97e13fcf67be94c3a86ab90330b7995868bbc2952fc74f4851f49d2037fc618df629c4ca7d8b8814f98fab77f4e8c974375ce5ee0fc31ff24e46fd0b192bf037a36653f65efa73b223623b533ea7750373f476aef10d15c4aae3f95e9e12b9d302ed95d44f1c2851872b878613adc973e87b5a1dff9f9e5ef7f665b3844a67e827da16639b4bfe1fbf140f36bdaf570d17f20fe3d82b842c6726f20e719f725c63878de159f87f765c7d1df19964ee32eb07b51d13faf3d85c6cd933c61be04f76b9f0ef7edc9e322f7ca5fe628cca2b1dde3584e8688a3de7adef6816fbf93bdf18ebc89f0f7d37daeba0a9c278ee152d563236710da84f25efb7a0ea3cdb6ba6f36700fb5e5aa91bfb3a60ef740e76658dfddc7be52c9b7f0408760b1b45fc00755b5817784682f595ffb7fe86f19af3acb67013ffc86d6a57dbd6edcb6a1eb36e3be5181ff635abeb2f818adef012c8d14b8eabd01cde91a1698ab96a7022607c54cc0f83c70ffd3bb0e39e12aae8cc8eb9fd7be73897331ee6add27c23395bf406883c7b0247ffc89c89cc4e897abaebb8955bb5c933db09bed9bbc6a561e78b79f94f350e85b0fb916a518b395c7c62d0b54b005b248a371706a6363debb93030756a1031656b4b9d27cb594e5e293bd043caffcbe77c59879fd7eaec642f6ce7bc5572cf715fadf3f8bb510125f19592b997be2322d319709b8e8cb21e2f7237e16e516c49c0ee4c3b795c40b8b7721ff598c034e0b59df807c16cccfaedfbbe9cfc5035d24276b71157d2dd4270bbc7b67724ea4f6fdec908ceaf345e6a1edbeef2d424f3fbecbfea7cfa86ba12ea8b01831e21636e3b5eee3df831fa4edf7621cb7fa7d6d0d589de201b1d3dd6b64e89fe16258f1d319442e0f789d87e08b247bf09a78e625eeba1bee2f11ce5b20d61cb4ed19b6ff455e51d8874e1e19ee0e717cd1f742f4eac0e89f453e10713f8818c778a67a593c1e1e3f1699b88e2d5c411596a7988356e37c69ae950b7da2f6d8b596cb20d67a553932f1d8bdafb54cdc63472affe0ff620ea1d4de722fff9b7329298d5acfd67e8b7b84f51beee0bfddef33bd6fcfecaefd37fb0d3612f42f637e91238d0b373807b91f1031c6257c6499879cd6a863ac92e25da7bb85d75303ef7678e03bdcc95c0ebd4ac76fb567d243031793ea6a3f17956e82be33d70ab51a47a2a6431f6a3e5fec176282754daa67b1714f69fc52e6b2967cdabf2777711e5af33cf87ea07936420d1ec74f69f4695a60acfee702fbf0b57c62fea8c18e61ef59b53358cbbd8bd838194f4b68ac44ccd7d61c938930afb29f7ff515e7767d7d24de4ec69504b64ee744f7a6937c710631c628efe7064777c473042b5d9a8d5dd883884fe5a1ef55dedf15cf14c443ffe9be45ccc2198d11b0b93f539bacc153553d2bc759a89ff628b453610b69cccf61b6f2d342edd296e6e83fe51917e388a09beec5df7a6a9e7c836f781b7ab73c3156cdbd57cd25ae3d8dd54c17ca5f125fb1675fe202f7d09cca3dea2797f2d6e49ce956ffc07ed28e332b60f5d1be37f771157fe73eb12bcd9760be2951ceb7e77389ba2fcfbd02fba34d9eb1f76c919fa392df9093b0a058f53816c6cbdbd20efae10e80a722c4a7b1efcdfed05c847e2d6776cfeca4a986b68e2423f9bcd37db51b766235a5f7b8c4f12fd63a09f969903ff119a9fde37433fc196d8647e0a36371bef12c8d8dbe8277887e8ca06684624700aea77b0a17c313d65ab1dc523e2ebe76aed117e7f65df2e3d7e401b70b11a703c6dca26f9f02ef04b9a5c45e4bd415e299e178b609d47b803c388725b7552956a77b0c379d63a4f6afb18899ce7c991de742d79bad2bad4f393ea8e56ecd49e4ba947807717ba255df96e55625eb857c9d7659cff2a697c827ec7effbce0fe3dd27a16b27f615e592d43b38dd6bb88e8205fbc93faeb954afe57388052fd38ee7dd73daf7dbdf3e519a871aeb9a3fe6879479f8839b6881e54612837fcd3c2b95340e7427e2e78e7c90a357ede8fd4a75e3ff78758c11c76c773d05e31847ffbb333f8cbbac9b9c22adfeeebf3c0f6fddab7ed2a7f7f85b596dcc7d6ec4b2b4fa297df97585fa18746d2c2a72af6cf8e585f7cca092fb4d717fe46fcc9ae5b8445fe0278640ae2d34cb4e3ef48785fdc39d1bde4c87794c1e614e6285babbc864a38ef47fe0eb6cee2670f74d72a8700f4c9e7fb85c99c6a2ddbf51c31c78beb2d757fc73775e19ace96fe2c99be4963f32d18c48d7351d307a87caf6170a459e373e9fde08bcc2519269c83b5e7c0daae01bf38fb1972be6ec78ab69853304159c4ebf51a7b18dab8024feab7fb90ffd1dd4d6579ef1e1bb743a0aee09d536d706bc1ff8733b36cd345619e7a7f769fd3dad496fb5bb8b75a745923df7e207f0bad890e7556b7bdf07ac37867651f8b0c6d664dec33d333b78d738ef3fc42ceacfc2ef055f17e30fdf61c77119b7e027db9a6b3c5b6f5ac373840c6ec2e94d7f38ff60a6fe3ef8d27a1ba033b2fd39d0d7809e1223b84e3f468be8d0ea2adf6889bf9e91ddda5e76bf10fee698eeffbd42613efc977ee0f6073549333e29de6fa36d1772ef1aecabd8d31a7fa1e1b2ed4e7a2ffcbbd7e2da7a4f74bfc49eb76fb0cee23fa37db578f6c3601a7b57ec691737c4def1bb09134591e3eb78deabab2d81f3b5a0b7c36dca7229f75ca8f268d1ff0e2e97378efa0ff85ca819aeddc96bb76ffd21eab9e07597fc49acde295bdf7994e04b14e29e7efa9acacf889843c2191cf88fa471a32ba61db4f0b494fe90b7f3ff755b4ef7f3907a0cc845cab864e7a207735e54faad9e715bf62f5fb2f30aab41a87b846f451cc3504bdaf9e7f486df6eadf83df1375db904d42fed15ed8838fe5d1c3350e2ff1d6cd02359b617e525d9fb88aef3a8ab9427fae97f49a3e47c41391f512e0edfa7b738dfc51ed7dacfb77f89ee85a50d71f7a4c464ab286e16ad4e7429e6b862b5b5b2741ff60f3fc1ea9bd9f3c878aea8db27fe79a0a7e4971af3ebc3b1fea93c2598cb6d5bcd073f0d5fbea67e39678b9e214fa5dc0d103db7642cf8ec4936ffc1db95af99ade1b1cd062de984b757ad48db82e8ff293e701fea436f87487b9493c4650507bb1860714fbee2119859033f553cac9cc98bff2289e13626f34fd091c9bae9aaf27721cb1fe8fb42ef576c07891985fdf03cc0a8a8d7948783e48ef3edd0c356283af310e78fefbfbe3ffdcbd8167fee93e68c8cfefae33ee9b076bccef05bdb3f61d23f06da5216f5af434cacd735c635daf584f84584046e782b9000ec72389cb9774beb3f2c03b92f5e88a385b359bf9e1ba430e00f06308b874450ef959d12ea7f53143e4e4453ed092e659503fc6ed10ec2cc085a9b0c39ce3079d3f88716ed243a0f37a545aa3346fb977802b1ee2d9326701ea17536da87f408d6023968e7c37dd591aecdce3bac2f9613c41778cad6698d356e4b4ee9ae10bb49c81d61837c69a25dd676c77e22ee4a5e909c56e9cdc9574f6d4aff4388efd55dbd365d576c541d5c44b2077e24c43ce665677cecf9536f8af866d23c79069ce47c2ebb22d210e5bb399dada97fc37cf640dabdfa3f6868279407d59bf443c0589f3d034aa67c177fc363acfba6985f13176f681f7920658477b8038bbd1bfc49ae4835e86de2a0d0c012358cd95f5d8dd00c6e4a29f45bb305baba34b1d2367da75cad05b5d82c23d076a7a223273eae5e7a91fdea75e7fb3de74a09f812ee6805865e0f53ed78ca7c9704b728e42df561af65b7dbc6faf3cef77a1babd5811c6ff86f9ab0baf57e15e7c3edb7fb4edd129fff06d012be3810e5cc35415f3dc5b78c4dbedb0cf567f19e7c286f85583d71263ad829effe4ee20631175e6161d19c7d126d7e17de40ef1174dbdba55561bb2ac061e947192453b8a2935b62e81ea429df68afe5e94cfdfd7c3f3f382cafca86bee455db31eafe7383262fe3ac42d1e63270b3a47edbc56d8fa908f20fa21d07661317d5ee7d5e603966c1231f6e72aad7146291657c219fd8c8c1c728843a39fc7882fd20d883e04f92bc332526da20b9d4d9dfdbef7c0fe6d72524585e0ab4059718178d2ceba245d3b8f77b3b3a9db7bca39439f434cd05875210710b15afbdbc4bbe53f3b32b7fa739f9488c7483f6373427da80172f38ad88ba7598d53893e73e6efdab4c6d633f4edf50e51e1e41fa37e21bcbfe17fa6ba35e711267dabe43bc7a1a87c4fedbe14e40536b678272e1a3205fbe49e0e3ec575aeb04d1ef96c1fe715f1671876239e29818fb3c231ade1de2911d48b71fe21117b0472efc535a53e89433386c578db307eb3f6188f3672a509584c227710fd4d33df03fbdf6b8d3f57314c3926c86402eabf8ffc63351f57234efbd29a9bd2c837d0511ff6055de71fcdb990ff00b9ac222fd9d7b19443e5176373caeb56fabc868571a123e62cf3af617c50fe0eb10bde145ce3a5f4dd01db443c849675da07bebd473ca1ec9e8c6bbcf44696c56a0af918a4dfc4865a8fcd239cb74f91ebc956e20de7ed4e51a7db0a6701daf9abe5fc1df9d995dba89f4b99abdbb0f731d91f6f0ae0034d0b9bc89637c8b9f0e7fbb5e0a75f1bfa7dad0dc818f613369eb76b6a2fb6e97481e39f2c06bfa1cdeaee87cfcdf1156504da3c976817e631bd3767776bb3f6e7446e2aa197d09c6b26bbb92c83761eccfd573163b647b8adcdf7d4ceb9ac682e37d13f27e560f76afd97b359607c117fdf53a20ec37d41df3bc8a1cd75c372e1279be120f021a7b3044ccab195af17c329e933d1a189dc5baba33480fcb85336590c2ee6973aa81e5758b18f30481d328e733c7695a5a79f03327f34d719f79d53065e42fa738935cae38dd8de7bab7cb984632b0bd5de362efad76971a8b04825cecf96776c681e289187983b7c08047923e0dd713be6e7a2c2b314303e1ed5edbc31de9a6007fbff0cb88bc0775cc74f23638c4fd1a603e3a86c3c8ae1c1b14257e7b0445f87a9db9e23e29a505b68edd977c412eb64c029e3db0ad43118afa933eadb55db575a9be0662cafc355dd8da35ca55a40d29e582b01d8d3de6d8bb858e121345669d075ef8941fac9727d899ddac9d1f6caefd137eb5d4d4da93029590efe632c229ef71bcbf823140f08715bc0e647acdc4a87eed66a05b5e125ca31cf5caeb74fc5b80ed442466a6f1417fa4e7e2ecba7e45d45780ffd79db6f9689d1bfd6db6eadcf226774047bfedd217bfe6ddffc4c47f922e831c25eb788ae047d5c6e9d32ea0e782e27e70697715645bcdf8a2b15751d618e6bdc12d5f970178baa5e81ec17e49c64dfb5c5410669b50f410608671c9f7757db43c33756f9d2857ef5f8da7dc5b922bfb7fadd84f3bd5bf769d13fafb08ea63d06f1555fb67096bfe0aca3f1143ae7e49d0e916365d6d6d6dfeb476e2b5177f0c7fd58751db2066d6d35fa51cfff75683b9e8af26aed3909d646d4f6568d837122ed0551e652bb6bd13b847addf61ae6542e9fe382d804fa3de4f8dc745cc45600fcab876db6e9e5e4deae71e20fb3c477f64446ce3d72d7b8077374ca6235fb5c1ba37462e8bf03f03d82dfe5606aafe97aec28f178f6635af677441e259e099c21535527f7daef00f9ec29ff7ce7128edd63b8e8e51fc0a1e300f6a878b749d8dc46ff1331101cf16e1230bae3f374d37713233fc6657f1ba936e2c8715f5bef3f7189fb0acfb15546dde41efa961515e1057429c017c8cb7091eea69b978beb3b87683cbb701b739b9fc3e2f5bcde515eda1de68b107bce61f6903ebcc46ace71fe1eb509f9f9236e6bcea3ae7da0d843bc9f35ac793bea86580b62e0bd6e1abd2cf2dc7b6ce89fa18b76328bfb2f69ad4a9db72bf433252ef44f8a1770e6580d12b7cc4bea62bd1962ef77b06db0eb29cf0db3c729d7db3d81da25fb621a1dc402f1dc53d4b57ad45607ccbf8fc510debd06fc483ef6bade22ca45ce55d0ac1b43393695b87d865b7207d43ecba3622e73b68dedcfb8e81f23ed26fb8f903f86bcf313b9d61bed037704c8ad4ef57dad6df8dcab61e54adf2d5abec37133bce0daef9c4be2d9fb85d79bc7457f079cd12037302faadec7b5d7fb5ceb874ba47666dc2621364cbdaf90dbd4b924be9daf8c3e9e3f112fa89e93c4fb03fbfe1a75ed178c8bdf9acfd0be445dbb87fe3f3956c7e515dca3982702d80646bf3b2df0ccd66ab5247f55b8e85d894eeb6980b99e4f77c32c54ddb02d86c3d7d7e8df31a76a758e0d7d17bae9f36717e2b3db96676bbcafc091843140deaf82fa1ff5a6bfb2364f3097c0eb047e3427005b86cf897309ba8cb7c3ba84e3ed3956ed32526fc7a5e1168936f80d356c857349ca5e25ffb49e280b395787f4dbb7a7fdead5fa157eb75faed1bf3e7eb6fadba9b841ee41d7ba44c66d157507adf32de4a6b7f923235ce32bae9f94d7d3c085425f09e46fd5f8a834d06df93a087f3fd85f744f823e538f150f6a673cde13bdf4a39ba6ef9ba1b0d60aad6586f7f500bf9aeda5c5e054c90e319f469c834eebf9626d2227186daf6dbd45d964f03dfbe5fcc54477d2012f380b057cdb6fc911d4b7f3e98ee85a43e0ea0bbc84c60ab7e947397cf05d7a782fabb307cf15761615761e8dac4e505847ac03a5718071477af7af458bdc47eeb13c2cf44e3486b8b2844156cf7b92f45122239a6d1cccf1919c1bb83390a388f11a60ffbf9a5b66bb38467e07ce188fea3e5a73bf3ed897c446bd621eb9be637535e1a25596557e168e83ffbdfe2dbd7e27565dd44fbebdf6906b84bcc195dcc2397c7057e05985b329c8d5f4688a72b73eb6affb3d022e897fabdfed7b5c89baeee77a94434e7fd8b5f2b89e0729ff07f1778879152f628c83c5ff21ee6b1a787713d98a3951669a187dd0bf98fd417487e8913c62b8ed8673a1390c2c5eb35ffbb32370a01476cef40facfda176a33717e22aeef163d12297ff780fd2f3f828ef5bf8ef579d4397e6bd829f6894eb9807182a28cbecdfc44e36dff4963ebe5ea88e6a90390d8bfe4bfb6f878ff4a043acdcf270e76889ef28585f4fecbbd539d8b94a62803c2436fa0d73e36a7b461379bfb1762c5cf436bc2d62cbbe0d0ecf74a1b56fcf487fe7f47d4f7520e13e10758db6396ede0bc2395bb69f513ea7baf3d319bdfe300dab13f983f4638b79ec3f9fde8d5cff853336dd39595c2479c2753cbb0c14aec3fcd5aa0b08f342b141400ed3bfd9ddfba3d2d3afe9c76250fddb57a86c7ed8769b6d49eea45d84f204f261adf2da2a1f5befeeefb5db89b5f8c8cfdf0acfbeebb3bdf1ef9d3f297f5c057ed343b8a1be0711179e6202fd2c87efc4260cc81e365c0563bd7d09ab42de53502bbb0cbd5b1e741de430023f77abfe7a8976d426a36bf478af42bbe007a4fe2cb28fbac43e8fbaf1b9f221cccf11f818f41ddd17cff6d2a3dfdf69ffefbcff7c6d9c43acea9bc870b7e81f9a3f9c6bd019159e4f71890a3807df6cf3519fe1fee07a873976f28ff11c6b18bd4a67f830ec3c1ecfd3c56a75f8f764f1b0dfb4331b7bf6dbfad5dfb00f5bcf5158047b4bc5f7d39a8dc6595ac2e7adbad1976d26fe6037ad7039eca8ebde43d7bd4e1ec8c9769ba87f666b1457fb17f92ae9e72bbe5f9b7d04ff37c31c2cfa67d85b5dee27a6b5e4b0bff0ccb5ea2b0d392cd76508ffa1eeeb9e215657829f05e44aabbe2de73cd6e629d9879e7bfc43bba1e28ea6f6e6d73934ed7bfbd19e6e9963d46f17701f5572e1e119af7c154d1be0999dd86a4fecffc4ee0b173d8655e5219677e52f6a1b2f8d3be6d1d8c9647f92d8af9aaf4875157ab7cda3ee8cacfdf1a19c6336fea85f843b3ba7360c91f7bcae8db4bb66f753955ff2b0cdb8708fc2fb2156f9e8599cabf4873806ef3e4c88dddde89b7ebcfa8b473e2dfcef63b94f23fe6e3b9ab94a3a5d54dcaa4b352c62d555bcbb9e3cead3af07b281d994899ae5a1771b85de4daebf6eac0bae1bd5e9ba6bc3cda311fd4c7b4d67f7e04a73b4ded663eb1279abcb4ad58bc0b75ae4be60577fef7ddbd077b2b5774da7e5e0f44e73e1975effc7dabb1d83163dfdc1d9a2be9f2be868a1e11e136304bcd691e0a3ac9f8116d9c2728997d49724c60ba43b87c98d796bae5e5ddea4592567881e4f7dc8a32a87ef99ac01ee4d5e1f80bc9409c4c66dc0725e033f1eb60f3c938cdb5163f1ec1ee06e028e2a8b2d3dd2af503e6ee2a2df8d55b75c78bd222a7bfcdf2c6698a8ee66ade64abd0ea7f99fc819ac6f59fef292c6f343dfacee41d8b3d796bb1065fc54635c155b9657b28f8bfe295cf49781176671913fd2c3bede97dfedabe2fc5cd23b7f45e7bc455ff7e11c6957e60f39d033f413f12eed87fdfcd24fcce30f83c2da0cb26fef43e14ea9c7a4f8bf37b4ceaa9be441713a245a33f6f950366b3dc629826766743bc45d278f0ab79c68c909d6d1c775fc83f9fa86cc6167b9bd0eeb6ff677b4543a74efb1f96eb19f70bf1ed9dd3861f20b393bee0ffbfae7728dc81fe6df7ee37919f72fe5d92ef49d797b4c47cac728d6805566dec819a37f970ffc82159737dcc1491e7f8e84d8c5e064f2cf4de1f36d3a21fa4c919f43d52d6752ac4249f9e79beaf3c962f0fbd99ddcfafec583f72f1ebe3f7cf0fef01bf70593532bf4d1013ed11ffb7fd1ef96e57129e501f6cdb7d1b3b3fcc4367f688f423c9cf9f9a89f04fc73a16f47335d79780709fe53f4476a3d31c651ffac3177f05f2d8f215cf4f077865c570239909b67f70af0532a567796068be18f48ed9f1efb0bc0cfc6f11857467e0ed44c3c078fce88d43fa2ef81ef589caf5add6dcb7bb7a87fd5b14edaf681dd897716c4f3a12f233e1fafe67878880a7bef15fd4bb4629f7f79ef56efa6b9d2edfd94d724e8029fdd39d1f19d4b5eb3fc92c638776b32dfecf3677a0bfc27e87bb3c7feab967b0fff63f7db04f29fa98da10dfffa78dba78df511fdfae3ed0f533c5b1da29757fbf3d7331f72cb382106f6606e9ef93f9bf1a7ec991fafc5d67bf0fcf7ed642a9b88adfdedd84f5bcc01e49a8c8d27ad731593adf2a38a7093eee81a347c9b2e7efed8b7f9759b7954cc457d5118eb1ffa62ba78ae03553f07aaaca3d07eea51316f3defb21fae0da38fbf1fe59ed783fa74e4ddcb406ff8b61fccb50fa1da3b862b7ac7e534bed2f47f1c59ece55f88ef3dde975fc48de95d73fe76fc98f659c87d68bfcffe2d9f3fda3bd4670abe28fa37dc752067eab175fa6f9021f573c8ef271ec3003e678be167c8795364dcc0f3b4c79c63bc97d73e728cc4fcecb5d90b506bd8018e172db993b610df7b94c694b39aeb411b7a9edffa0fed537a9eac281f96919a10dbf2fe4cb6b73d8f3ce756a7553e3c397fd13f9111df6bf70fe5043dd7cdbcc1333923ff44567cff9ce33b8458c4ff864ec9757b369e959aefa2e2963b543fc6f1a5e867a9ddbffff33a9f3c37e8734f0f0c7f3b5075a869a77ce898cba6a17e387da81ffe8b77f4e398558bfe46f1c1f4b6efb2ba5e7eace93237ff919eff481e19ce05ea570d9b72b220f70bca212263e6b55c448acd5a61a5f1fcafc073681cc99951ff521e57b1c66dd44dce2d363ee44a88783e5ffa5ae839a3f18ce6f9a579960fb05e6b79ec3c4f3dad7304b6d7db36ef27cc83e2cf3eb58da186ec6bfb9ce7bfff719f0c9a372fd669dcdbfa5ed5dbae8dfc2ecba436f9c372da073f6aba627bddb8282fbddef6df9f23b94e08ffdba74bd52636dd9ddd9db8f75629f521569c44867e8d0d177034c49af69aff83dcf5ccbf427de6576e7bac8cfe21da35e579c5c581ff456a6fc9fc357fbec7dc6b68e80af737f17b2c7b8003f4b7f75c09b167dfcecd2f383ed97f624c3f50ab7cf0c4ebdd032fcca79ba11f2e86a7b597ec691ed0395808efa9e5279b86ab04659b2e26e498526cb07f2e67febc7d2a67a91e28f8fde43bf9515ecdffff62c8ff0fdb6a2ded3e8af1ec691e552d07b0c21610eb401916c0b4705f62a35fd21811d6a3a82ee813a16f296bcfbdb37a8caa3e86f3f1df4d63a800feb5efa48d9a3ca21f8c9d3cdef4efa1ef2821608873eecffb943c67e444c73901cecc6e9bc6aaab000635da0cbc5635f4b32cf28747e490d873dc517cf75cacd5fc0f60edb58c63323ea68197e4ef9b8132db29c4bea4f6d696d67313bb402f43d52577fa0eea8bd08f5f711fbdcdcb07cf96b646e33a80d7bb8277996f26cdd939b0be614d4f911f2106e639abbf3d86cd358d0afd142ef7a9a51c2e6be365f78be8b5cdb68fa67edcc1b38b84e9b9e41dc5dabb29a16fe5a1cee6a2770ebc4e3e61631178bbd83bd8f85bde73c63137b838685b4e99786e2b5e01d608db39c77d36f23c2e33d8376bafb783fa5536dfbcdff59af55e1e7acedda1fd227739cf09d989353e627d740fee27f0c5c35eddb21aba8861d9307e607f110bb81719605ec54af5bbaa461debdcdb380dd89c7d811f96255e82b53f639b9c21620793f3a2f0f564fdcd4f077fd1c49b68c40ba53e9df28f05f0900af32bdf9d81efee30cef4700d7e87fef650c746aef015644c08613c97c4b73e89fd556f4bc285e0cff5f6816fff4cd41e3f071f8b0c9e17e7ac561bc96452b456dd1ec3ed7886bf28f08c65816ae771d7064c26e08963397f06dfcf677344ec4a8a6ba73731405a30a31b7daae9a79477be05179271e121beff638e1bf037f73b7161e79e7aca3f5c85c8146c77f9102f08cffd5b1b1eaba47fdfa3ae5b06aa8bfd97b0c505cc9a8d79341fd437c6865ec6aafb16a9b70babf997b852c4ef37d927fe9f632120a63a3eb39dabfd63d435e16c7dbc0daeef9e9bbf1b6151d548d7f1a0e8f378b6efc9d83a4445bc837c06c3be4446bf6cec27fa79ddceb7c1cf46ee85c1675c241b11670cfb0c7524f8db1de76ddb4fcb2cf237763259f477536db0b3de46dbd92266778cc0c1b04a434f27f7e291df9b7ef619fa43859cfb78672ba656f130739f0cc58ec23ed4fd265bc80526fbdcec5a65a8269ba0d033a1efd7c0b7eea1e7bcf1318c8759bcb3f30539b77c3cc091a7c49bf436595cd3d93268e30aa2b84a30e7670137b6ff7331e882ef18eec97e696a761917c92e28449ef696be68197eb6ca894c6263bc279e754fc6e67eb6d81ecdb7913a590c5e7f6a8397c962f86abe0d5fc2221038fd5b62ec8c174a4be8bbe0decd03e4792732721ffa29e4d6479eae70fe33c0c776b7807da05f3766e7ba996e86fab488cfa636bbce8cb098bd0dcee628b9241a3b83fbd42a016f04e6b2213b59ff9eef5dc6912ae5f735cf05dd8b758cb5ea3ccb734c9efbeafc76c31dcdb7be27457c464ed7fcc878e7449c8ec8c83753d5be44fef0101915e70dde3fec7377157a9d6b44ec4668c356c97d1ca99debda23bab07b226727c1ba13b9de59bd1d824d9f3feb7781fbf058714af5588df236523b0feaa6932c34e6276a6b9fa2ca7723f797f44bedc11cf89ab54fc6cef57df37a49ba4977ba8b899d5086e56b397b1b5ca75d5b0d3bd70dafb51e231e29d19f7e2e86b159644a321efc9896fd6ed28dcfc97d768ebad66e7a1ff5de97dbcb076285c6669b7cec86bb1a1e97928c2d2df062590f22fdade206e4bdd5fddbc4d3a2f85c8e126fad2ca4b88c89d7db865e78880a198bb8ba37a477d431ac4156439b45be497c276fc7ceabfa4ffbf2043b0f9e3d043b57099f62e835dfbd04bd1730c2843664ec739c377acfbe29299f8fce294bc64eb9f6ac4e62b8ef4437f66bd8966def427d03f0a0ea5876f7a448f4ca7788985149a11f136ff515ef5aedb7643c66cbfbaf69b3bdce233920b5f908d3ab6dff7cb1e772b1cdb63bb9ca65c2f9f2358bdecb496c4af8708db65beb12184e27afa91df596137a76a782bf96f3e9c8f2b6f2e7eeec03d89a3e9147ad3875d2d89a98745cbe6d5186e9c744e0ad23e758acfb5d830c74894c2563137105ebbc53bb48ed6fa7daf0bef67a9fe162d8651ce5809fa3ba3d72672786bda7bca96a88fd6bdb372817c60ebd871acf80df1163eef46faa23d6fa8f3cd90c13fedefa8c12fa9982f154f745a8712463243298e83bf78f05adb321f67f6b9fb0be3652290ea4bc2fce911a16f8bda00762ec0070eb005787b47d3fb4f511b0d456547fe6986a2eb5432a3c43eeaf947edfce052cb539014c60f7d8d033359ddf63a10ef758466cbbc962d8fa39faa8e9ddeb56f7de449e8feaecb7ef47c4dc2b33a8b58cdaf8779ecb78719c97689381df00b0b637d734f1ed7caeea57c4d1136d63e712adb83f2c0b0da799bf28bff788581faba369d89b29e23bbf05fe90f451f0e53d5997c718b345f8f7fafd38f7f27fadefec7c125db8a7b4e284801cb86d99ee063afcce91f746ed0c05fef01a7abded5ccd0e9131df07f8ff073c6bd8fe532e5772375573dcb47119c66691a0af743cabdb0b651b662bbddf10db17f3559ab6704dce86be3314eff25599417dcf541bd6fb27f115b4e75ed764d38ef14d093ac6aab79c60dfd83e7886a9f4740f3ce246a98d71f7d5189f73c9515d84fa659af6b0c89dccedcb1a96b2bc9f62d555e6a27e92cff654c73dc7e595dcf92f786f1cf671e116be6636fcb2ffc3f383ef471d213677a8afbf1759197a21d1439ec93db8d726506348eca8e639a47e29e9fb6ff9715aeecfb9da3f13fb04eb45e536df1f70343c9eaba7b2fe0cf7f488cb8bbf1a3e9ecdeb7f10db6f9fced5fef5c3b70ea19a29a6967d4e168372f636ba4f2bdcd4a3390ab340753791daff3dd5865654a0ff82b5413197a88f6945eeb76db800ff1bf070453b9bd8e3306731c48257e97295af00db5f75cfe47c8645bf1315584f9218594e6307b3c5cad697b9ad83cfd458f1efcdb175012e01232f43cf5610b3a95f500c00ee4b33c780a38efdddf4611f585d97e8e6a0af06ddf9ae1123d1e1fb03d8a0459e45bbf97e8278b2590c780673c8c322b62de3e8fff0fa9d7833bc22ce917e320dfd0e7ca1fe8ce324427e12e20db0d8c83c2efaeada7372736c5fe3223f2746708abb4e8f8c95fb2db4ec1215b79ea9b9a84f8eed4e8cb67d1e6adb34f07a5b891bbd83ebc270c2932287f5888af012171dce69407355ba6b435700574c3de5a6a19f43f6d938bf24444ff52db61eccbf72888ab8be0700ab9bdc5d6b4f3f27daf014faf61d620a2c47a65801eeeb1aeea97995673676e999bca644f6427db634ff0eae4bc5757f0abc9ce271bae7b80b78bfc7484d0e4129715b6cd75e5884c0f7577f572f16f04e292720f9bf75002c0939a7711fa87da27f82ac9d82ad6b9d02f0e58f8ea6611e4d6376340df26fa22f04357f386288c7ddd939f47aea74dbfbe98cdc5fceaae7b1da4fb96f71037b9def85bfc9952e8d8dfb7bc83ce967d370cbb8e897a6d1c9e3ae9d85c82fbba3b6598d475d92a79433cdbe448573e0f83732474b0e7df8fc9be3617de31ceaf8ef895cebb95b7af91978dfbd39f7b7523df193e64e6fdfcb21e669c05eed5da24de7b4f67a87b0c8897cda863eb16b7beadab72e5181f6aa55d6eb40128a5742da08897e9086be5592cf00d34ed577c06d52cc816317eb427b59a40df7a177bb863bf7688e932c2e7a1817da24c2ddb1fdc2df09f349ee57f067796adbde0b5b388cf4325410c782639afdd1fcf2fd7e8e0bf71a19fa67b8482f963fbb84e5553a27e01f1631e18be4eea9d5fb27e529792f87fd89908b58c31a85f74f0bd0b952723616e2ded5c343a4dea80c8b5bf9e7e97a9cc39d053883aed19f03bee66270a3b639b1bdb71162fd7f2297b2be89baae22cbb0e46e528c1a22d343ce5bc0ce18f655d0a129ceeb23fc64a16d5803b88b2fa6ee1ca25dce7cd8ea6cf1a24c3fad38dabc3ec36dde845deb10ed6617d7c8cf1f2bf44b53ec450de4e6663826770ab16f028fdce31dcbd586337627a3ce9589b94876e0b3ba0aee8325fadf8962b5f54dadffe1ebb7fba47ce5f5cde0f771a90ef1a6a4d3ce2d8ecbe3765a721c7f65edf57a73b5df010efb8d8c2348e4c05ab72e09cde15a927f6bbd32ea121b89b771227d23e75c78e6b4f65ee476469d0cb0f246e49e4bcf91a7bff0ba70837c962d20074485f81a8c774af649e15ca265d36f9b90b9f5706eabf8cc358dba4385c55dd9fb832aaec5e22707f3ed957ffebe19ec2c9e2335bcc463f4cd635b9037fe17cf7da438d5d37268851b72170e21df5a8e698ea4fe4dc51c5adfb987dead688b89010e67d741dc313590daa8e75d0bf6626bdc43e823f76761be994b74923be9a3309f47e40e015b1dea8241e6186c8f3ad21d612e32e6437bd2df275c95a4ed319cad4f392ec9d7af557ea04fd4da051b3cb3f1d8555ca3bf701493af6b350fc8bde0abfd72ed2587a8d08f0baf774d302784be4f3807467e9fe6286fe322d94c7766758e10fbff5758424c66176c7a1526287f8f897110d53c07cd7633de6e316ab41b838eed0c29f7373f7393b7d175a61d781b80170f9f35da67f700e903ecdf29d329b1ee01fac5eef6e61c2565e039508be1422e0799dffe3519cfce61d7ca42ac8f5a7df843890f665abea68ed13f5bdd798a383da01f9681d72377ed25dc0ca399762deda59bc03ef55629e62c420c907c77f317d2999a475d621b3987c0bb1d3f88eed8b5817325327225316eb96958078a497e8d0bf7734df6abfa92ae0da26b323d15f551e0093772a2efe771497467b7e47785f67a31b5970ee653cd9077c0b7489b503f1ff8b3746de8c770c338cf887ed25702a8ede5b23b25fbbe7a6e7013e766e105e9da9fa789aa57b681ea6e513fb672f36d54be033f01d8695df2cec0bb95a1a76f3f164325f04e79b461f760bf300d624b5199a33b9755916c38cf148d0354fbf88abc2ba5bcb7a5fdc5d69f9c1b013f90dad7746fc4e94f6d7043fd41f86c81727f85f6e1be3a2362fd0bf52bd1ef82cde0156b0d8ea9f0599fc97fbc57f81836ac06aa7e5e22ccd5853d1d09f9c4ecfbc4b07fad3d380bb5fbedf85b88c5c0772c9e0ef698d187380a9927c19776770cbd5cdff70d7d4ace099473aa11bfdd2a21ffd5e8111b633f59c0f8cb77c16750dd81f97d69e4bbf5782ee55837f36f2b396afab81e6bdf1e05bef57b22e9a915574fdc09b3c8c8b775ecfc277c574c76fe1662675c6e014e4b97e815f939f06e16ecc7b767f353cb47266bd8f87ddb9c9039a472ec69fb2df35fc9c4b639019f55341eee83e51fb79b3d9a93f90e75ada870eff157fb457bbd00bef9dbfe32ed26dda4ec756765ef1217f1c5d5cdcb7ce52e5ccda6f75407fcd171a1df1359ffc7fc9d22d9601c8872db74c81d951e1ef9af26788795a6b64f679fdb9ea91de9dd14a793cda0f3fe16a79392dd6583ff986fa39bad6dd36939b8cdde06d7877b62ec12bb0df481aff6dab4ec3f88f9f757ab0dc4fd5fa61d4b9f971d7faee8e3d9e7e034fb1c5cdfdf46e56c39ba985d2b8f0c5d59fb611e09ef0d0db790d70f746532169407640d77283b278dbc5e78761177acf17c734d9dae4d748ba339b2eeab6da24db5e162aa0dc7536da8d5e696fe86eb07e5f46e76ec5a7e186d8fcbaeb07c2ded650d1795beabd217cccbec73d569e42da3bc67ef7d053ceecfc1fd7d69be90bdb6227dd1695bda6b3a5b9ae7f7a5f99760bf2e047dfd1a75e3fda46aefb7f93638cfde561daa73d0bfafe96cf3a24c96a77e4b5fc68ffae2409e42f2ac2fe396be8cff415fb4477d81351a3d9d17ada52fdadfea4bc5ddb69f692fe56c69aae4ccad36c031443eebce962b38874ec93fbbda77133e9b6f5ae5f9fd91ec62f909f5b3c6ef5ad0ebf0ee9f7bb7ebda1835732434591f863b79346adcf7b3e5e03ad9b17b02f91ac8678f648e5c8722c8f8b173598c6df52b7941f9b3ee093b6339fe4ed0618e827e22fc6d3e94831fe570ffbe19eee36e705e6b44cecdd499764d89ec5e8f6d75ba9b1dcd71f003dfdb53a7da307b17ee01b4091beba3444a764f729a0bfda5de003287f481ca056b05bfdf54badcb45a8f9df0f7a65e7381739436d60ac652a444b6dfedcfc161aa0def0d5d10c778873b81acede29a264ddd0ce62ac13be13a6bc8cf6abf8b7beee782e88f83ffaed75df89a45dadbfb9a99923b68ad0d7e9bfa7503312372d6c633720fc5e66675847c40ed48fa04cf588b9c3cf3a3bdcd309bd0e7ffaccd6bea6be66fbe77baf4ac2cf0fb898b3968f5bb2f31fa66ac5ebfd2dbd0973db68f4cb6bbf83b3e57c4feadf4e8aba0233f9ae7e15fa691c2fe8cb4de1ed6ee1e5cc9fac2be56af100f8cde603f1fa705b15d463faab3314a7f2d1f9ec923e344fbeed98c34e96c1effc6d9c439d25af69d7a15cee8f66862de617d9f1fa7bb19d9e7444f21fbfcd8b6cf23ad77e4fbfc510e7765876488d73c3a988d5a79c83dbc475a46f616d9577bb29f20de4af7565c4a7b8b3c73a4cfe4643f996ff53a46daa631dad3e7ffa84ddce7c7a66f01bf3ff89af94866e51f351d9bd8e05137becfd52c8b1b75d8423c94eee5d04fbfb197af69adddc7fdd1db65e877fb659533cadfc7381fb3fc43cb9033fc6ebfad0dbd9c3cdaff86fbf2de3e1fca77e62370b18d6f9c01e1efd1d134f46364f4bbf6c8de07bee8cf92e54de8a72fede7938dcfc1f13db467063bb3043d9febc43066adf6fb07f343f4e7efdb93c734fedc3ff43d4cb52119c3237fc2d134cc1f0f7d048b6b4af4a0eabec19abc96395b84aab5a4350adfb6b12782ac043c82c5366d608eebd70d5973bc7306bf1ff4b59c2c6a7751fb73bb6f3eb79908f752ab1cd959bba0e072a4757e63d045c97bb82c79b40edf7a2e68b6d7d025f1fb1cf3b1dbf696013531e7047872ac5df0f96d1bfd2f73dcd82b1bf8ffdbe0269dc537b36323fe1bdc154c7e829c35e2afdb2067f8691bdfe887fa553fbe775737e6ebdbbae71feb6bc46ee5fa9a7cafe2ff676f23e90e20b6eb64c1f5c586eef5551be4eef8a76d048ffb41eec3b4811347cf73b0c8dacedf1feda70767f88ff6d3f7dbf8463ffe5cb785fcfcaf64bdec331e719e89765c037e5e6373e79481d7bbc7860e587ca27e626a6d78d4359ff282f9949fbea715a3ac81af29f00c877e06e38e3b27669311dde14b9b8cfc1defdc7ce22ac8bd51e3be91751c5a6f5a936fb1ea7e466a8fd51d3dd2b7f38fb78cdd67108fa7f739e96fe61afd21d9c37f430769d5c9599f4047607a19c4cea57eb4d9b6bbb8d0b788dbe5f462ac3be273d7f88e9ccb6d4b3cea6d84e7fd6d4fe410afe5a9ef8bafe64ee81762538931cbb19d433ed188febb15bb883df327f3cfe69ecd3b9bf3d6f96e7085703d8ac8a5b17509d57cfbbe758285d7c942d55dc5857e8ed5f01217ca79e9e59f71d1bf476aa84c8b6a1e896e3269c4f94eb1b9431c1b9c2fa8fbeb131b782dadf3293637b73c2a685ddbce56e2cf4e6c6e4ef710738c247d74d2792a4fda753083c52bdbed6616bb5ca92ee432980bbde1df47ff1f6b076a81c518684b5ca0d772aee86fc64e1e4afbbc0deb9edaab867ea7fe34716f6718831b1496e8337a7b69e27ee27ea4b5effa3136b2cca9f2b052d3a37dd201e79eb4b70f7c1b7d80d07e236f8bd890f907392fe3dbab3827b426681ffaa94aee3e94512dbf7db3637303f356c596894cd7af1bb237ece76dbf3c6e1b3846690e70af798750bc019c4fdda0ef7e804ff67a3175fb1a7af621f000ebeb1e2eb0decdd72c05ce457798213e27e8d390e3100116b3994645ff3cf570beab757f80ab57e538529b06746bc016c2d810e43a1ee27228bd37e86e1f734e3e9c9bfa9e819cfdeb77b827981c67f77623c6c165cc1798412c8e94cb9cf70fdb40bf7b63af402df7ffc7ddbf75298a04fb03e807da0f0358f6948f8282a050e58ddb9b4035a0a0747b854f7f564624905cacaa9e99fd3ffb9c35abd7940a79898c8c8c888cf885f4440e3fdb6bf51c589bad53afa2859bd74fd323c8e366ee1bf3af7c3e50cc4329bf9a776962e2a746e21d5744d6fefbf17c6f5ffe537aa9ae1dfdfbf1c1deff87f462fd367984bad03f1ec7eadf8da33e9f4f18e3fd0cc787953f4fe5d9bf5813e66c7c8a25f4e91820cfe45f8ca15f167c73febef0f837eb5078f2bf9321bb99f1aff6843f703fdd134f6c003a8e15e75aab4acf83ba51bdbc1ef6faea1ce171f3d2edb7fd4d4d7db49a433dfe75cb5f5aeac0f228f267e2f963cbdf5c254911f322b9792ddbc24d5fce9893d0ad1759e5d92a182be4a62f90bbe6cd0e1407eb1e5a033226238058d7d4880229f2ecf5b0f09464efae4bdc1f6c7fded96f951dc2c4e00d7fd631e8741c6cbc5d8991918c8e4fee28639abb09713cb6d0b61fb14fc899a2779ef5b31dddfbebfb4ae501311eaef5f2076b4a6d55a06562002e579aec4b7c650fe27e5609e45954f1fdaba2d7f7aa943145e6f5cfe379e4bbaf3c861b6b74d8596ee6d0faba73a64da223317983bd3ced2a72be13fecbfe57919f5ebe39ff55e20b3269370a943fd9579faf81ab988503cfca1cc4117e358e99111139e1d8ab2f7d23dfa603d3e6b7d661a0251fb641f6dc7f370625c85d3b291c413e7f930ef7dd7fb817fc81987dc507e5fccb392c85d1c549932b6da36d57963cddc5ae66657d3c44f9b9ae723b3d182bcf5d89bd4fe833972fc1e208355cb13eb4723f9171faf921ebe755f9ea588f9b2b8cf82fe3c17ae2cc509e1b37cf22b2bf5c1fa6cdfc3bfb05f2d4cb1cc47fba4e134fe0e39d352cb1902187becad3fd06af7ad6e8ea09589b89ac93f39fd183bf79e9688f3581c877fab9917397f7c7d0f8ca230bfe7768d3d7f677c644f488c8fdf338c77eba403eae7cf8ceda048a496cd67f101fdabbff4e657bcffbe67def58e653bcded4699296f1fc88cb215f6bdc4bf42138c236d421f77075233aa1be7eb9db920ab99425cea73ad3600d7ca8550ab876e70ff3715de4af61a59b96fdb0b9764c7b10f78d7902677566dcd4c9b4ac911dbb6bb246661494391413d9f78e6c1ec33025fcbd8535786de309f7e6a8307a6f1f3615d1bf6f8891db670ba1ffc94bcd018351f5f7cf968e0b35aca5087d558851d8c2816bead44d9cb628f2b9d10030fd0762e21f57c3b972c83ef345e0fb874a7f77cc7bfc754d98611270d8a7252441add3690d4ca1f6bfbeba59d8deb76abb5d5d9b629401e623d5378f2e99e7b669fb6f4fcc783ea9f1d383b5deaecbd2b47f197cbb9a068dbdd2c5316763d74b7df64c7336606c652d48c8d11012c1b55e4287e656437ecf400d4b2cce058c6128b8b606391cc4f6a27b00f6d7f61048347f6de90d8c6267696797690b9fc5fa818b7c847b1ae7e6ab472d71e57b8cefe39c6d49ddbbfb31ec37eaab4bf589e8ab74bc68cfdc635500bcb7bb4efe2636897c8fddd4b993ef6c496bf6131b2969f3d9f37ded63dcb4ca1bebf15d25bfc7e2cd8fe9bd793c3ee9fb2dbf90c677f26f6eb6e70077a121911bea641cb27d42bb52f8f8fc5d2d52a5303736dbb33a19d37fd38ca1093e03e3bb87ba44ff3d6febb1d88fbf686b7aaddae96febe40bf713fcb619dfb5f53d3436638c53a273c3f8b531fd7dcceb92d9a12b79c6598764ee0f7d324e1612796edb1ed3c9171e51b32df28cdcd79e30c739dd693be4ffcdb6064ea8d3fef0f7725c23df4b593c8efebc3138eb92467e7419338e3105a47fc5a7ff87cfec7d3ce2a3e13d550bff4cefd63cc6f605884d2376f5a4d98ed7532f086df3d16fb4cb9b778a8d7b0ba97957d1cae929b15c2b99833e52eac3e07be434e30ff0e9198a7974abad57d537aa70457bf3f63eed3ba56dc87d7dc3b958e5af2c7963635ac38cc1aacce778bff2d933c76f3c1377f3154b9d07732b688cdbda152a9eb992b3bcfcdbcdebbf3bf19a28a36e3bf44be581b5edfb9dcde1abfc3d755f87ab3f3063b20673897bccd7a57f0e6245f0deb4f2758f7f30bef74f7d7e2cb6e8ce362cc77a64eed4d86c79f3bab39755ff3be9106ab1137ef60cd169be7a26880f4fee6475ea13c273c854464bd7d6f6445f76ac20a9b152f5deb33788bf737643fffdf51270af9ffc81bbc5fc998a374e0b492c169228f463dce39e7c5ae388dd97b52ff3ffd49a78d2ffce9aa01cfb7a4d3af8faed35111ecfd6e4fc1fadc9f9bb712715ed15b9d80c826b85ad3e3b9c6c498b6c497da21b8b11eba7749edd89b0fde27d32c6f94cf19e72ae4cfb71c35aebe709e71f840e8b7ebc881f955fb599275ce1a7346951c5b2193beb85ea4565debffc52e69381aed3aed95ec7d27df6eeb1ffdd6ff51bf7bf3bfda12a72e50f61f23ea9cd59f225e60faf981a0a5427ba2cd65cff3f3cdb883eccc4f13fc285c47c1eb8f099f0169e1b5af959283fab4ae9ab27f6a49b7b02f783f6fd5ae5060afcaf9d95458e70293ce105f08117857ad727e14d9fa837c811b357b78515159ec4475ebabcb0df05903b0839841493902ff773019839967c768551beb35727cfd62f3bebe5b24b65c1b18dbd9f26f76032acec0887c6f69779c790e35cdade34eececfc73775d6d8e7a1234489235caa7ae3103f938e720fb19b265b5eaf6c5e7f20260e8f6dbf2b4f707df9d57a2118855fe817fadeed9d8e717ea8f09d7ecc63315f48e271218931d1fb54f94c74529a8f4ef459f8fcb0a98f609e547519c8bb44ef233a1fd1f7c29feb2a671d6209c93b0d1c61463f207a01e80371d283ffd8f2a9ec4fa18331b4777d1de538be6d86b9995bbeb57f8f6fb158c7fd298d9841b025bafba78e876cc641aabc51c91cf0c58caabda1d479489e22b6f6cb0afd33b2365b56ba5c89f107eba96eb93bdd1fe35f4bdb28028b4ffce2f4aba6276059c5e013c3f385732cc018023c28ab18e3bc4c0ef47bfc2c07659b5b4a4b6cf31ceea47b08792e802b48d7199e6fe0edd67392a28a2f2a4c158a710732ba673d6adc4fbf96c9cd35a8d61a73da7be8bee9d81817c7aef3b550a6553c97115947e851ff9e5cd9df5bf64475269239cc15c05bf9ad2a7ce6c590bb9bb7ec819367c92f90db429f69f996a07e28e0e34cc6145b5e66fcac4607f7ae8bad5cd73ca679382faa44fe9f5c5bf76e988f268dff479d8cafc67afc97aa2cc9984f7a3cbea838974b39ce37d29ef4da9e63ab5f63b0b357fb9d14111a3fb93b36225fd8c21e849c23293a92f139402fd2c7399c93f526bc3a790d0da2574fc6d95b2ec67e6a46bdb5d5689b6e51b51993367da64d7d7f0e9da39638566f2db43dd6c7227b3704cc1a1f68e0438ea54be63b59fead2a5aee5af2efaf620777d2f8f6be1e0b5ff893681e59785667fa0f75a69f55e5fe4355ee68e31ef9fa0c50a2c2939b67006028a626d43b72ac97702d1b7a653796f8dfb3d50d650695315226fa03a8e554bcc58456103bf54416c8acbc2e8cbd18501952d0ff9ffb6449cfbb0f7d223e9523b5dca67204f14c0ad75e3232896ff9136a7acc917e84761decf4aa6d366e1573351959129e697e5b7d6ee44d5942e45c336f0df73b23b3ced4efd2d013d9b36a3733131d7c5cd17d21898f8524727db6f77cb60cdf41b71239553a377c1b8d6762c007e154897bfe8c347e2c0a27636b25c0fe9a4dc3c55abce399e484f3586ce36e666e1c71184bf99acfd74c9ed5a613837e0aa4f1ab3a516f7a7e60cedc31e456fbebf1459d8de16c9dc333e4f3123e1bfb67771de3673e8d934f71fdf59ebb22f0d3c0da810d73a6f866912344b92700d6e39e6d1769d58b898bfc03bee93bacc7620f71d2679c07e4d314f3f518f62bf91b64ac34fea5cef43e597c07acb978fc8b3cbf588b8f760c04f9bd8747200f515fbf166d9b8bc681f3ee06f3437c721eafefe1ae6dd7212d4e81b5cd215f6a363eabb3e999ec83c59af047eb8ea84f4e115b64a656fa0eda173ef399c8cdeaf7aefc6272c79fc92fc006e8935fd368637eae6722be605ce26d8dae812243bd87e7f2e4cf749c20fe9e8e13c4ff7fade308a53ec1ca38f4832e695b84a7a0ed962c451c3adcb7e3bfd4c9b8d227daed7d5747d2275803c8b198fbed6eadaa2e6e2460120759a01827d465fa7d9034ae397f8bb13fa2932cd6645dc737325f22dbdc7cfc0afb2b1f0beae44464d2131da1d1e6b16e53256de64c9bf977f41ca7d69d722277dcbcd6738cc9133da71d77d8a7a3b430a74bac069adb0e3cf0168b428fed52fbf0d227b60bd9c7fdb6cb7ac5a9fdb68b8235d83b7bbab421d7707784f661e1dc6d8a350ab880e992ecdb7e99d0f7fe667cff039b14b0c97cc1e458fb96d0bb79e6977e07f554cb92264e22e6ddd77b7a47e742cfe63fd14984968c11fa7492ba961fc57b4cddb3278cf2b912666dbf159c496003b4fc3cb331d4632bcfc2c59a9c858fe61e833a4844b7189f74a20328a067749e430c70e639297c004fc787dee73d6b0476cd6e3d4ed489d3f699917179418c67219c89d23d0cc8bf84f7c8bb76ab3d3847e50b47789bfe23e72e397fefb679b978c22a68d105ee26ac013947c9bfe5599d39f49f1c58027f7365eeef3e0cf78f1ce4495ef919d0b770643ec76fb118979f3ff111241fdff31190fd7572ed883e5be37057ba31e065ab21e2dd014e7ab4b38665cdb0677c4ef4aa75554b5499867a4ef6d2585015e3e4d85ae40c00df1cfb6675f75217801cad6a5f5539f83a8739f83d778350bf8cac6f73cdc5c89da8a7669ebb9a01de5419ff0df5d4da3cdcf39ee2ffc3f7fafa4bcaf50fdaf88ddb0a4714e8b6df2972ee5806d4c7db29e60bdcc1cdc49b3f3032277d248d3bbd269df09e41315fac420c1629d05e0ca4f00e77556ba0bfa7cbdcd511a2c83fc8dc7c32cdb05660947cc8e787bd1e42ff4b7b79223a3539a3b13d996def41eff3b0bd846d6f9ce1590dede58df6d6dd3b8e1a43159ebfb7fb9fe7b40fb3d58774a6e3d29af3dc7c5e3781bcb348b3dbce7a39410e23e640b5f75484581a5148797b52debfc0591293334a136bfd543c07881b09f967c14c8bbca371277bc84b8d21624d92f9515db73cd372d637daef87433c7f230924c6ef09e7da8a8e77dab0d11771731f1a12ecc397d63ec458043aa6b60fb5c6cd60f7631717e3fff7f764ff7b4e698b4c5789232417c77a94b9c7d177f7b121fdb37d4c69fb7f7d1f33e3339e8f8f6f8eef9338ca9ef9b07b5c6ef7f1bb775cacbce09b6d7d61d312bebdeed251e6c591af2677c4f56adbaca9bcf53899ec9d3f900d64ef137d5706dc41c47711ab7a70b087652df253f3fcb1863a4a07220f027b4964e323b0921c70fb538cfd099491426b449f30a6a9637bb6f29e1b7bf88ff7ece77be11bfbeeffc43eefdfb38db3471afef284e43a97ef902b59df55e21da36bcbbc633d8ada5f215f013f1830bb1f895bd58697af1feb466c60199bd78e534d7cdb8c3cbcdf67d6b0badf7e2ccab8c4bddaa979a1d2fc247d2dbefe94c6117d276fd518a0980b67e66efbd3f8c5c77cddcd390539d08715bea7b44e83b8995b5761fd37f17d53f9ea2aa34bbb7e487f1dcea731bda7b69fafc62dc2f6e7d2d3fbef12dffed4b6239c1a1b09f1eed76156c78737e64475e7568e572c2ad51a1e0dea5f7f72770dff78baf75727c71afef673d0cdcfae6d148b342bb0aeb95878029f94b57bdcb5183bb69139033d2c71b4eb3bdade3a087b4f19f1ae12258eb5bc798a59f8f9f0979f8f624f19c50b818f7cd00746e79da5d2df47352f1ef5ebeea8ff0fccb9e16f6fe4ff30b1aff2c51b98d7067e40f51df82722cf1af150ebb2c42699bc86ba34fec1fef67306b66cc7efe40bf70a4fbac5b7c0878077c7f83b4b2cbac5860b1d8b27f281eb606422165d8171218fc8b3c7c456a6b87d7db5031bfb803c973da92dcae432d571e7e538589eafc6063ea09a5ea55ffb3d1fdfd5c989f90df6fc83bda368e2fff5e1fa1fae142391c9bf2cf109c7bfdf894e49e94f31863b7484382445bef8e08f44baf5d5fa6be44fc2738c8edde02336cfa95d17fd4b59952dd2261f56fe0f7a6eb37a6d9ddf37febfcdafe93d9c175ff2ebb98f5ffb6b5d7e9b5f633f2d69f4ff885fcb3a12cff9157c650d1e13d4ab5f63a21a8e1d42ac34ad6f9279318de7aef0b5dbf51c20d6fc17f99e193bade97068e4cb9678dc0dbf39c41e77e2a1289634de93d7f8503096701e8f2f2cbfd0fd45fa627806e3a82aac4ca8d512de174c6d97398d43a798d4e05b6fe001efb7bc2a9dc2c57a7c6af30fe9ebcbbd0a6378b657cbfcd0fffbfbe71bf2fe3fda3fa01b6e7cbc578a76505b6d1afacaa8d8d9ab2c48b798e3919a47877eaec605f5f62388675a6c10f398faac332f5dd15cd0e1919efb7bc8af12b658eb6266260b6a9798801d4dfa1df1c1ccc85c059fa1f52cca3a20839df53883be3a0b72a7aa3137243a07d6919911bd2780769bb5d9c5ec2b79f00fcf1e8ac58b75c9e7157eee99e9639cc05dfca4795ea18f3ce25dc01d1b137953187bc47e0dac6df816c3ffffc95ab6f208ff50a7a3fa98a94491975e0ab4fdb2556099f9c75a7c29f3c3c0969b612d16ba5689aa2407d7920bb2463b25b9ba905b6f16dfd0f132b24f7d818c77f46b6b9b897f3c5c3ecad852413b7b827af32cb90814335f08d903c7337ca9e2687b75bc46ee643347a3b17e88a5dc3cf3cbfa43147b42627019ca756eadb9be01bbbebdde7fae53d09ccb7a0cff119f22cfc178dfbafa49cb76ee6dfbfcc93318fb234594166a4d8b1a0bfd0c58e810134465d88c6bdfd1346425ded78d4f80bf3d513972366b6bd82b18634475b885249e4bac6a4f62eacfc9dc331a27c14c8b5ca94f67fb67b29bc14dc73ddec303561b7ba2afed6fd3e3f0bf40e3e9cbb769dcbef76a9cc3e77007fa530877c04631ce5469fb15ae78f8b3e5e7e8b3497af2a2ffbbbd4dd71e6357c898c2ae0c96db38237d6d7f9b36033dfe06bdff6c9f3c8c6fb65961203cb1391c6b1879cae8e80dcca2cad3007e36786fb622ed21668bcde2c0d4bf63ce935904d683d6c063efe7110301ee81abbfe199429f747d7cff683fcec4c827ba1bd2225ce4d578db7a7c82791c97def66d361e05fc1ae313e50f88adaccf012e9cd33ee7314b8797ff51c17f4cd6c7cf993df637398f2b1a15e7b01b43d77fdef88a9c074c3b1dbfb434bc07b6719af7e80c9d9aaf0d1d434ba08e529f0ddac65fc86bbdaa5ee7a6fdeb0fcc73803ec29a1eb3c72b1b0bd0accbf1c9b936709e9e6b01cde7a17bb7acbb41f3b19c6bb06fc552a6880169f15c6b1c6dbf18e46312dea9c6df883f803afcdb705ecff5b2e8ad5bb8bcfa33b3d84951cfdeedc6a4fc646d2ba98e8798cf1cc0cd6e619ea07cfde2ee90ccb9a52f9a81929c77f66aa84eebf3d1a7b913cf7d7fdc056b88367c9c971dfae1bb7805fbe9b9bc4fd0ff5b9b9c479b7cd85adb20d6d74f78693fcdfa6a3755f6fc5e7d2667f2cab74ceb6235df8518921e1f54776c90e3db93c33197226287e78b23c651b982fa581c55882df5f16ea8fcaeeb1f96c213cc3b1e42fc39d200f2567f61bceab9faae1dff41ce8e39cefdea105b1ffe9e5e1d8c59c1fbaaeabb96df79c38c3b9dd6e34ea7dd71a7cd5caa2fec1bb80b427f188d3fa136e33635235791e39df5c882d9e1cff2ae4abff5e4f1ef6a8709105b923bb6c12d6cc40c71153355a5089e57e53a2f4c8f1326f6bd7eafba8b21e7ec2cf9e1ae313e452fe35d8e3ac6b3ccaaf82d6a6b95b55eebb654a5aab11d3ac743389783c972eb87666ae6685b8d73a217376aca425cdd2a72522a03ba75d13fbbc7c17cf562fa6cbf3cdab2da293ed95b3dbe9d3953e777aee80fac87f8e03d2bb93ad670efaec36ca1e879dff7f3f5f9bed88fb1c69614d1d8301e7c01640fb8f64a0f2c3ef352f9ea08dbd37cfdd893bdd3fdfef01bea6935ee50f04e6d671b6bd7920f8ea59d5dab8c5faa6ad673587bdfbdf9a979c41a2a4b1a9fa4458e70a9bfa376b5d3c0c01916aac227aebd0c4dce1057851aba03337315f3bcb386899f0fabfb17ec2bc95d162ba7ac271c432dd7b24ef93be2c02caf2c6603fa68c6474f3105d7ba1fd5598dd3a2ce0cceb157444f3b2eb7d323e4414881087f4b1cdcfd7b5652f842727521660a6bfb7b4a725848621648e2c1b5dc88ea809c47db79e3197c0609f95e1b18d947ba7ddabfa7c8b92b6ccb31149e259f3d09e2583337162f3bdb28109f07eb2007a97cde59cbb3aa24747fc854ff58dd98f7cbf5d4ca1aadae35e476582f956213202d9da341719892a29441e4ec27fbdeb151cf0994d7f0437824416a9edf927bbcdccabe1a3f8a9d9d25e4b32ff091a73c7cf5c8d5777152267f28f2c5571ec99cc1ad68ecd5b4d1e7c996d43d6298d09a3ec5f4a10346ce78f45ede9b9affaeadc5ec72766d37f12699af1e6491fcee0bc90f7793f96afa20bc96d892366af7f9495fdfd20f02c188dca22b6bfc96dc6fc9926bebf75ef9d5b2f5068e201ff584ec1b9ee85eb7a081e90d9f61cc15f67f6597047bc7f2f3ad22e79e0dfaad00b9f18accb926c8def2b753391fc6f6a1796563fa9bb6746cede2e743a437b1e39aed5f81ee5dbd12f3bc64e033e467f91e376b51349e11710f99beba6fd77a819c771ee357dbe7c2cb489d2cafed5a94f84e6f0e19dbe7d9b1b5a36bb6c745e35f07a88777d676cf857a6fccf897fd89d51efbe339fa7db974adf8f51e9b89b4496d561633c951f89b3f58f59c114116a426c4593929c4d097f1ad98fbb116cf3b38d3478d78abf6590267462aef7742807571a83e4131a6ca3b787a0e69912fc0bd524b9720635c56f4277bb4c23645b9f85e9d1fca63c8bebf4c1f91239c611ca6106581b285f3e08b7621063eb086794597f59fc8c1164dd70d7beaea59a32290cbb57d24739467b9ce0376bb07b26ea3728caccb0df31edbebc7df3b6bb8f766e6c1dd92f3eb113b96f1bbac69f096221ececff5a107231b7337b0ed690e318e2cb6543316e4e20d0c8e95bf5fcccf5763fda1ef0da88764f174cc556d27f29be9ab0977fe1092ab233c78573115c77a9c81372816985f6480a3fd6cfc88838f7859f05fc2e23a895fd35898bee89329ef98359ddd544e75c1296c490b16b34be6a5c639b056c92a95cf1eea40b41684fe03b1b51f8df366096710e8043f6c49abe4c8576bc0f4fbed3520ef399bf0ae6fcc0879e30278608ee5142ea1fd37e9bb501a677ff3cc3c1a17f21e9e993dd8cf98df873864f81fe04f7dce1f80d5c46095927d6e4eaafb2ee45f9dc8933e0c53f47968893fa07539e267b851f0ccc6114639d65219777c68ac3c6d9db39fadfd59a5345b4822e8496aed3b87f1c25d2760a402be08834df869bb608f93f717e927eb96d7f3a0fa2ff31e5dcbfadc26bc58ff7e84cfacbe007523e674ceefebf1fd2d173375d25a87f4917869c0eda4f1dfaa72f83dcf7bfc45b8be99a724dc47c797316cfd1ec5e4fc5b56f7da38b78d9214817cc9ec3686366262b5fbf89fe61a3fc9234bcd22908dbd37d0929e73bbf7fc746d8363b0257bec3fa48b2524c1539cff06a60d625db232a9618b75e8c1f2f73dfce0ef31ae35e80854e7223a39594fd08d800f7fae0f70b7af5a9ff1cf738c57a0d5b4078bf1935c3ee4f3e1677c3d6a63b7a9cf638dbab2ba211f1e544ebb697d1e22f6a1bd7ea0ac68fa145b31845ae6e6a25ee92a74ae5ff90f3bf8343db5eb9d8151e879893bf3baf707ee714165e03b91892093a0d649a706d322adbf67e23ae08ec1491fbcbb39215ea4e2bc808cad7c5a62e41d57996f9b4980facc0fc47f9413275d0e088d2a7fa52df30eb4a3dedb6d405cac25e7c44e7f8b455fdd0744961fe0ccae719d7f04b686bfa7cebd3c73198cf6646705e5efbcbb370f0edff83df30772351737dd724eb162c7117b8abcdf153846c0ae6cfe767584287115f9ec59a3ab3b29db31634768b53333e93cc6f7d618cf81650a3b6b7476ed25d0ea4d99e64ebacd1bb43a6ab7407881df9dcd3677368071c5fc6ee6de2c1978c2e880f35d25ce3e7c319af3e5fd74c8f9429278e930c2e7ccc810b6bcdba0ab11b98ac9d5ebacf2ee3e499c4d63fe10731f903d631bcc1a39c0fb4c5b274f203c257394ce077def0c75a8af53b7e50db4c82be9b70f52a3d59737d0ae6efab805829933e3128cc98177ad55e7595f48ceb86e643d9c1757311acff86972f185d195d26aaf6f964593378ca16321bd7505f7b6ddc0dd27eb86bc8db8a651dc7d866963327e71f67dcf04374f5925de51bb51fe89df26a1a02b1a3bde83636bbfdd81167d200da3376b3a743649df33895bf72918d427d1ea3377ed03e5a504daea3e733939d62543fa680767ef0b4e836f2116ece25801e04be1fa4738cfee73374f4904d70a72d73291e6fb2d6fa46aeef63c0b31e24229379c17a7e89bc328778428439aa9c3b78d9e3b82d1a1879f9a07666c2dde84fe0ac77a5c3cbab7dccd6168ec83a8d3dfc0489cc6f8a3d449f5979ef117c0eb56cd1fc6242cdc3efe181867c75e25f5baaab9bb5fa586e276e7213ca2402176ab39c4feb5d4501caea77f624f3f026b94f942c99fe2deb5968f6eff6ee6098f24a03424bce24e9a34742df3ee2bc9b5da4bfb29f7b6e97946b80c997d79d7152d6dc9f4c3cee28f7e2ad3f13b43637f10deccc6f833cfaa79137edf382dde1c1ddca60c78b89b43fbfc4877b69638472d738433f2f95ecdf5bdda90a9449ef8a97c6e9e532eb1579afc968e72a27f35f6d65e7d71daed1dcdfd6e66644e753636c67474ace4ea0bdacd4f5fb12fc53838c26adf684388886d32d82949292fd3b7ee197bf4840795f36eea4efc165f7764cac1b1a6bcbe6fc854662dc2fbdb64fcd26a83e1f531f9bddd07fcfe619990b38663910f6eeab4f674bd9ed0c7246cd076a78caeae9d1c5cdb479aec4538435acf704d1e7486cebe21f3315e12fc2178863ac292770ab341db9d353cecace086735a81acd21b634d046fa00d2bbaa66eda9c332b139dbbbb715e9a67c6230a52f3ea2a668ecf6c0577e3a68ed9ff0ce1615f082bbed3158767c7eb29f2c04bd97508f66eaab7d6e19110dd036461ea429d213cf3dca8a5839cb1b64c2d971c6b757853b642b34f88ff6e9cc764cdde9aba0f6dab3edfdc8d98963a70ab2de055d71ae69eb01aba58bbbdd40953c75ae67def54bc992e0b77621cf4269db1f60fb31fdf366242e4407f5be6976d35f82b5505a790bbf39d1991a7f00c8da77743e87dae7556a87767af452d3ec07e9b72f3c5108cc44d7bdb6c9f1583b749f2d973c917cf71ae659e195d3ed6159d7315b3e7d924c15af4156fa5eea6cd0f3cd501c5d69e79649e05e7568274530b3d350e7aa1b5de1f26255d89fc75370d79d7d433c8de6bec5b3ef2d3115d17f5a5c29967de77ad5516587c8f5de1088eb06aad0d9fb84ac27b564bc7538c4383bf2cf3b0b3cd8b37d0f63b25a1f2588b8c8dd9e231da9e2df2fe513cd3b51eea857f779b7a5e39cec2b5e406cd1c412d8c264f56cf76f40d4115de1433e91bab3f102147afa9278a29d103fb9e27f6b06f9bb75da5e32f5fdc89bc777ae747f5899996d073676f1453fe6dd2e0a9cbce5a5ddbb248df1c1e6f1bbfb97fade41a2846ee5af2a5b2e1d2b63ce5337fb01afae9a860ed3877d3a49527187bc736b27aef6e3967df18d7d5b1dd68978e1a67af4beca8a67d419e1b96e7a2de393747675779444ea5bfae52c36ac958e19105e99639139bfa2dfe6e1efc548eb11f377e53b67993a74618d75f8d73cab7789eead1667526baa9c3199b565f0dde5d4546211e0c766fcdc4c8534c4686d3b62c337953e406cff88a7c6eeaf887173755876f72a7bd8e8eea586e42daecb4d7e529628bdc5b3ae8ddb1c5e8c392c9daddabf3db720f86d9e83b016ca89999ba151fac2267df908f77d7d6786cc338bc4db685dba447e6a5e7f2ccdeeb8a1137c7fce03d6ae7bacaf4ee2a0ddeb97b83e0e0da5aed0f48d5bbbb119316cd593901fcd13a7f73d7d2124730229fec4fe551c932bdd0870d9dbaa65bdae28fdc1b18c3865f81d833fba87186fbe968e8580fc67fb17c18fb24d11b7d1891abacceaea5e5de2028eda3d8986c1f0d9e6d9d9fce26bc1bcd73a070ace1e1836d27753867b3141a7bac73be6ac99ba2f206df7ac6364e44dfa8f8616f266e73dc996b0daf545f8ff4c936d7d3c67a153beb21b8b68af429c4bdaee88dfdd37b7e5bcd3975e4733ae51dab7996d4f65da993fb44e71eb6e6dd39db41376b9ec5859796fa38919672535ece8c3bdc95084dfdde4d9d4193cfdbfa81ca19fb306fe9dd5ca5ff4db4d898440d7d3b504caa43024e769b8721e7282879375dbe38a97b68ca8a1560dc7ab5de5f1893a0d1465b8e181331d19565638d8234b9119943fd5dc9db446bf14170722d99abce18c58c9b7c1b9c76585f10699a747ff305feb62b65fede4c0daba9cb37eda4965d51ea578d3549224758163adc213662a60cc7ba24188f6346fee08058de96b1776da328ef2dfc5c1476d634749428f998a22fd712a2e443e6435b19d27ae9e6cb269501fba91d07d2fa2df594e43ea7bee2125bb015ff9ab9764f7e14839ff0918f8f1e6973333dbec5e36390ca677ded873f2db813d97b02e0e1c073f4b71faa1440cd5d7c4e6ce527b9e79d3d3e797927f704c6eb2b26e0827de4182ba932b1e725e6d9ce7a09bdeefd03e02b78f9f0e4d8c67b200c97b48e19f7b18eb267354adcf491f9333171e5cbcd129200eb583dabf5db170341e60379794d3c22b9ba9788000753490eaa42eba597b898148712730ac3d0815cbf2a7e2b0caa1c412dc19c42c013e2bc7cfc68e700b7eb1c303144503bc157e4dc174cc5534651204551036bb2ac15c30da34d1c4573c0a610b106bf54fefd12eadd381c68fbabf86ba785c9622af26f17ead1897c2089801181b864e2b5c2feabe84bf68c5cb078f38d5c8d1a27ef8a39b761077363671bef5e6a2e3d21b9067296f8e9ebc9835a2ae710e2dc41971ddf35f31ebfe58d3960fcd54cbb398259f8550d0e888dcafc564d0e1647db63729d77d60b606136ea2f4cc667ccd3309255fab839f612c6d4581709b0def840a17907827cf66687b0c27641bda7aa2902bca3bc86ded1bc38a99937708a6662ee0946e20f8caa0e4937e702b044ef8ead15ee36b90652745525c0d77859601e78076380c5f56dd63470cf5e950b2bde76903b8bb9dc18ab68e67e8a7766350f868436dc4e1a46ce513f79157ef98162f7d21a659fe1913118caedb12d6bbad15a88157e64996f9bb931c46e66bef0720c2431f2f07e7fd8d9f7409b2dd006626ddb6b49be6ff1fd8ad66274a0a6151fbbb64a6428170866e2c5e33be27177f6768ddd40e486d48bb3c0e49a4fcfed1c7b2247e6eb165e9a8ce3ad63b1b88741318550ee6ccb3ce388c6505df40df8e338d70a12bf9d6f8cf245f38e2b85ec67c4307a3a5e96c704c7ba9fd5c95468d36b939a892b21f621e0bf285bac1907f523693db39991792999c7e84a68bbb39788355ad3f80c71be10d79a14aa32bca9ca2a231a819f9af04ebd06b0f6207f74b35347a3081479bf1346826b6b29d10b681eef83c8688abb72338a65aeefc7033d1efd22b6a92f18f9ce16b98515dd829ce7bc9c3fb8f62a7106cb4bb94f17965c2cace9c555ccfdcee2234fe2cb7bf0cc4bfd8bbee6eeef2d7a3f9169bd181c656d4cafa76619628fbd5c77d6f0e0dad1bb1b87c745ec67aa341da912f780dfbb728ae2024c9b3c3525babbf11be28c674642f75355ebd057e4c21728762bacc534f415337704f31a28f2d1353b736cd54c7a69e5dbd11ce3597277ad510af28bd6cd2cebadd91262b279f130f3d255f2311da573c94fb4fc10aa1b2e5c6cda73706f7e8afb02b0df580c6b258a8214f3146a8c38ad68edd7bb632df3b9d2ce0da467613e3cbbd6f048ce7bc8f1598fff5225ffaee5e3dfaaa28744c7a27f77f4091f7d1484b70fae65649e259f4bdd61672f8f7ede3a0fe8d83bf2e4694daa97ced9e9c5e3d7f73560d4f79c15f0fb2f8ac111ce2186cbf4d5fde7fa80b76feef3068678636eab5b7b1d9ecd6555ee1d9962202acb5efad3f305e346a588ca213cabe01d8ad98a394f558cdac3a8f035bad8718843d6c0428e54a5c25debe6e723ceabeadad1d6e3cae7eea75dafac1c9f7a65ab12424d8b0a379cd293e6f2458162109957605e59b736337b2e7ea75650a98b2e72839c9d892b98b95f34f5a4256f6c6c2e7933a7e66c6542cc93af26e78b2d3f7c5bba04effcc3b7e5c7619e6fffc29a6155bd8defc6c5208d6dfda60a43deb3b4c48fe9779bbeb10ccdcd5693b754c7b3729ef4efcf79ee2f1893b2fc85631bc2f7ae744edef97bdcc6875ce2fd078b0f7263b141aa33311e9567ce5595c4a9873ac4deb1c1e64d282648b2b3c979a4de30462be3fdc192c60e133998e4ee5abc05f60a6cab45331f78b2e58d9fe676a899b4feda7cf2fa83c8b8798ebf6d12d3581eccb52a9d890d9ffd94c2bfde1222e7cf9df5c1fd9ae07e6dea9cfb6066461eeaab7bc0b5c8d9b5129780917a24f380fce588e6f35c3cc0c2004c5426ffe61e3a479323676f007b51e677b696b852a34d1b7cb8b671772c03f1f9629103bb19e976f714794fdac53a98fcc5b175c46919888907fb5444ecd626cd962b5333d6a6b1599bae6c73bc684e0d55cf294f204f163f091fc8f793bd3e9f587a525aff065a9be7333ef728fe9be7f09979027d6725ef7d357643fabf30f67f37c76e0e64539f075ee5cdb7b5b9fc01b59d7371ed5a81fc311b9f98dfdaf800b92ba89de7690d5f5f8dc99844797be0b52d6f68e6c1fcb9d9cadb25177671cfd320763627a80f4ece5e97335f7c29c2fac670d7f7b42daeddd66e669cdf62f1eada7eb84dcde3ca8eeef3ba7622a1db131e6de321468507b5f93af3837ac09fb56574b015a322d8f7cc2f8d8a80ca8bedd45c6fb6c966cb25d6ca1c194b7335594ff436cd4ffec08d9ecc4f70cccfdaeaac1fb13f8ab7787cb363fdaf39b1cf3649b4b05c71b175838f421ecdd791a74bdcd059f3e972cd2bb67d7efc5c1f4e5631bebc111dfa30bdac12fe6fdde6324d7a6dcf39f998383f5469f4a116afdd778e5cd6ed53ebeb33ffb93e1c16796b9d15f3c5989cc205ffb27fcfbf3fce3f98676f9f6fcffbcc7bfbfcd3795632097165e6eb2a0fbccc076dd5475d9518bb5beaf7849c1fc895141e893a2bf5aaf10d62eee11c2fcf9028718433f8477dc14cc02f003ea0c7cd132e85aa3cb21deac050fb30b0865940f37fe66873000e1b69c73f1aa1aac8b13770139a1374702d37f3d20475a1751b3b29294cf0bdad881c33c9737d7844b50f601ad57de957462e5d5d3b4a6a9c880e56798923ac810f4c5edd36b49e7c991bbd55cc9ce6970a6cbd78d40509ed5e42555e4584163bac4f5ff91488ad0735222d99f3abda00233e9881bf0d7263311fb6c42287d868f20c6084068ab90f14a8ab49eb9b92beeafc27a755efcb01ac7211ea8c5475f4667c88f9a8501f0d6b7bcddc91d3c62dffba2e76435f75ea78fa3a27c016cf446798038614afbb96cb2d24ff385f777e5bc31db6740fb51c718a37ca68e0dadac4b18da48b6b04bef3435fdd70c4fe2e7df4c823764f9e22935bd27cb615ef0f3e760bfc8a904ff3346e1e7db54c1df0f1b1815b7f5c1e3fc1eb7e568ffd0c355fe1ff74cdf1fe11fcf8e45cf9d9ebe305bd6deb1ff13e03f74258ad69592f5e9d99989f3cd31277609e897eeedad1dd4fcd0272f48f7ad3872898892f8990abc460e8323eb311efa5e01bc13c4afaccced61b755b166bf14075f08137d0f28fb518917729263f5b37066adb55b5ee26baa0cb3c3bc779601b1c4347660f95b9ed0ff0cdef946de59f45fc0191c5e50d77a57f74b63a39f6b2316f13b1ff068e7da0f50328b68ac4e200621d2cb22e700786b6047d9ecd9581dc6d2aebe4f3cece6aaceb4afec2fc6f4c6e3cc3fb6843beb5fcb3e51a536ccdfd4e31733f1f228e6653e67d861bff775d17d938014e3cd650c136011ffe5e613b3b02e0c2b77890d98750a712f28a47acedbb005d6dfabf3d2edc3bd53bab00cfc997661ecfe7f4036caa3f1a27d49c6c8cb3688fd39bfc4bfaa5a06ffe6f8febbfa1dfc0f9cfc719fc5bfe23baf49ff2df9f8feb3fa19f6b872f8bd47c712dbdc2ffeade993235907aee52fdfda9ff1e80994fdb36c2b1f93f4a1ff3da1a72aba376f3b650ab809977cb7ec1f1c46fec5dc2d4cd3d81575dbb9c27d0a76563e03f62dbd53512a2e4435edd2a1f62dd2ff7a45fa6167ca923bc36ce4b8c1920f64604b9acccbba39eb31d7cad259d4a2ce152af04bb221e261f8ab9aff5d14feec0faeaf542edc74f69fc7832d7e397344e9ed0f84b7e309ef043ad83547a514ee809b426b637c46c10ba60ae73fdee3fd8a3c9c7a4a3af7fba477b68947f4923930be779e9dbff2ff6c3f8b72af947625bff17eb40dad1721f30d6681fc5137e20b67ee57727ed98ca685afaece7ac1ceab6f97f663fe9f9ff8bfdd4b34666ff1ab9c5576ba4f5d1f3dfc8c51e7efcdfde8fddbba0daaeeac3abc5b819c75e25880555e2c5c0bdcda59983fc7a63f62862d248226298212d2e7e8e79eacd9ce9862da3b971159752be03b52777d690b6796ff0854a73e56d49fd614b1a623748229b53ddc03f68ead8cdfcff9a8f1197a78cdbf16c1df2b15bf9db153611dc770ac90fc49a69602df5e4f8e37d9267ebd7f23bd2763976bcf732efbe62e64ba873cae2c4963800751b88cf033142cc3cd54f6d6bb49d71eeaa34c53b699c0bded5d271a9f42e97e24974f627835b50beff44ef89105fa1ecab1e27f487731847ef1b2e64f136ba67408583c0b6d1ed933d2b240df3ece57bfc9656ebddcdb9efc43e8c0eeee614aeece8ee0d348ec5bab09521c8b7fade9bbfb933f3cccc81d8c714176f45f667aac5809dc97bca969c75d06663ff546d0c938f9978833a94adfcf2124313eec4b6fc7431d012df36333f357ff9c5295c2966bab386a58d4afb337d2fc5dadc1887b41afa8a79732b5fdc16efeca580b9d7f5615d5cdade82c89c46ad023ab775d4a8bf44d6ab1753717f195577a498bf9f7b83a08018e1a9f9e22ba382dedb0e76d6f0e00d826accf57d6c9079e9ea16e48dda48ed18cc5a8e1db98ce2f8e1fe89eff1cee2712d0197007049fe06ec005bbc792960d78d5485c86a2ed406f88c565c7c2f4d2ebe32ca0349fcb9b388aeae65c1ccd03d01c68df173523076523976adfbcd3fc23de2c55d8f4eaef5b8839e23980562ce47899f269ccf3d6edec0485aed43cca449f80a7c29dacd5b8f8ffe4cbbf9120f71247eee93396664ccfe711906829cd3bbb7721c408f851d447e3accbcd43f52ec04b897dd6c65c7e60d6dc50de595fc5ae8e6485a9bab9febed708bb184e3815ef89cbe0973c0c13ac23d18dcf779c2f097cf05674fd0228a055ff2d2d15346b1633db6501301f6f9f8185843ca63e641cbc77fa90a7d57465fd11b131b1308c9d5554683a7ef56eb3ffed1ed97ca2a2960f6ddf24874185778dc9c543eab9353f831a0789ecd5a3a49209bd79d2df3ee3639cc2b3ea738bf8209f8941a3ffa59b6650fe8f3e62873e5d14f8d6274d53193c6cdb3f89b9766c58abe630997e4c3e44076e33dede8ba3b1a334a378ff463634d32c43d65637b1ae3a5fed96952cc67e1599dd57a13eeef10f7f3ecd01b7ff121a18cd2696d19557a0dab9ae2104747cf891917bad683f0774f3d8810e93d0b414e7c50b9f741750d22a37a30d4f77e6a468162ca01d96b53f3b2b357508f8fc6bb55e3a5b8cc9197aece650c458597dc6307401ebad2a0d1755ebddf3ab79876174791f785f054fa047d267ef4e7bace097253a7dd7eeac6118d8933f3e6392556df63ad69a6bfd4cdbcd92af1e3a6dcdc756aa7337557e97a5563dc337399718c6ec031f9d010b7cfd2fee8dacb536b9c75fc16d2bf6fee05e06bb0738718e8e8eada8185f136f7d01122a881e24e895cd49bf42ee3b7880d909a03b3d557935e436287c88e659cd89819557a46eb662dcaea19dae7422aebbf98872591b9391b572e8e3a78e4b327751b94d1d59b25939d929c5d29dac3ff675a52c7fbd5b45cda5aeed887ebce3644ffa8451febe6f3ef50a7987e4ece777b3dfea12ac669673d0e7e6a5e9fd41f28f70ed19bf780ed735c251fb3e5a9c20095eb393bd6631f58901b3369cdbf21db6c5eccbd819bb98a996b740c100ba6982f0b49fc49fec63ad7eac1a1df073291bd35f614eed5723c2b38bf4a79e99033d45e250b9b9eb75635ee0bda3d5dd94b6c229b7f3d56310a340ec34f47c2ce227b673c52a5d75f2a3ffab995cdf5ca1cfd9cc7a3c67eb239f64c67f696dc3d7fe7724d033a6772165f213ebb89bf5ff303f3cebcb577811ef208f274d8380b55127f626da1f1489547134fe0ef9e304cbce3f2ead8e2dd9b1d4ef8fb1db09802a831b12a682e40d55ed98f3d8033f4ea5a7c16cc285d30ef9373b7442f1f72abeab788f63dbc93f5f1f3218d953bf4ca03da766f1c379d1f6987f3602e0cfd8ee4efd50df4629676d5f380738cfba8e6e11636abd8f74c5b7621ff0eb4c46dc44eb1f53246b96b010effdf3fd7777c36b9409d68d78eb82dd1a9640ef54725291669751e9de9bbf5fcfbe7b2afd77065efacc7799b9a7bd74a04d7041ce1a2856b0df159256f994272f6881e2a9859909a4b5c172257e9d8da72b4c41e23633d62fb8b2395ad6857b1ef5edb676a833f95d1d9956bb9dccb1b9bbef78649c037e4f94b2037c7d2ae1d00f8dbcdf3818d3b64ec5146af61c6b79044e6ace9fa88d48e8c6f6204d2b3b1a3cb54beb9e6d8801f4a9dd411e4b303f7a5ab64d97eaec76622b2fdb9ec8d6e9eb2aace4ce62ccc886efa995ede94230ccdaa9c12220786c2e2307c5f4dcd9fabedd02af568623bb833b31c630ffdc0b62a6d85d35c314e908b61ada49dbd2a54c9f9746c80c1bce1da743cab52f09c1605dad5ae6570aeb5acee5a19df5119c71bbb6b3152251fce05bd985e9c34e130cfc63c429ce734b9fa8355e25890b384fbcf5afec0773e3bffc71dd9f68c277e12bb68d29433cc9e6cf35f54d68ee8bba3a17b2df1ac8483ba62c7529feaecddb3da5a8b364621eb636ffa5f9b39732cffd80394d18ba396105b09cf0d56bf2bbf0f5b7a1c83f3c7caa0b4a9bbd0fdf6779faf91cc2f4893836baba58d71ea3f6fd9f37eb86f9e05ab2ddac15027f127d3e6c1819a28ab09caf8b096fd9fe83996d0d45d20ff10651aed6758ddcf83dfb28a9dfdbc5d662e180f5deb52c406bccd63e3a7cd8be6f660feb4f3d38d3d27e64dfda0a1f3da4272dd29664ef861a38c6ebeb03d316d9fd5f6bbcf7418a0a7c17bd6e73a8cde3a5fa96e9013f9dfd0b326eabfd163c83e00bcfd067662798658349fba7c36257a239e0f732961eda1e6d952ce211edebcc4bc03467a0bb756fd135ba63e3f635f30f32065ce1ca62fe76824fed1ade587847534bb58a8e1c913b4c2b5358195b79d31a02cbf776c9f26fd9240461ace7b653c3d9f63aa87162a91591c3d834e55ed3aa9c7b6ecc89aa64ce9d11d9bb8a3cd78f09fe44c0a9457e0218677aff8fd08cedf3e99a5c7ff8f752e1c6f673ddbba567b0d59ba5179dfd746f73bf0a900ce15f85d5dccfded7f4e01ac64a273184b33fab9e592d9e6604eed427fd89ca699f248db24cbf0ad3bfecff5da42bdb2345b29c96153d6a26deae9ec5a4c77d6cac0fa48e173bd35ad64ad57db93b06e41d7ae47fba67eaea3bb5f3de1e554d2b7dedf4d1bbf210f9eaf67eb4c6bed6fb61e001d5767df127db8fb1dd1cb599f24dcf53c79ee1a588fb33a79fdc2477beabcffe4dcadf619d0bd94d3729079cac3f4d2baeed5e7fbc5bcd2da526d1b0cef4090fed5da74cfd38e6feb4b5e58a4e05fa3cf8daea62dc21d6443fff942bfa13575a85c6fc97c853d3f9ae3a377245ff1de2777d55ff32d91bbec7d9c0af70eadfb8e965c6dfb79581953df7b3d59ff7faeebddbcf4315c825eb53cb5ec44d6af55fe5604b007bbfe8586aca9db27ba5a417484d2aff9731db1fa4b5def8cd15718de69e8829ff8ab6a5d90abdbd194663b7fa00b523d8b8e3d5e556b0c7737e5bc7b7cd58cbefaa3e13b2963129879beb1f4415d72c4f807f17e02f28641d745dfa0342c7d8593724c50f7b0f40d99e88b2bf5d4b27e885bdd7396f58a9665db64ecf142d2b03fdb88d0af89b54cf0fe717bd284a470d0f7799c53fc92790c75507e31777ca1afc8dc4e5eddb629b1dfa2bb833968bf16fc83c89943603d92450acfe75436df1d7b753295d1dab582e46326fa4476b5ef4a17479a4f5f636df43f87b230a33581e00cdb598fc456863df7b343ce132e897734b61ec7ec1bf0998c7ebbd6b03095515deb3ae99dc39579b6cc198233a76a9ba7f93f728b6e5863ebe258c9559d8951a084651c0be622501aaa3393a338f8b057e6c02ba7703943deff28db479909b4461d5f14cd69f4737b30672b335a963e7a261f89d6677ebda9531acba3988523c850079de8a97e2aef03f0ddd37a2fb3e016588f83aa107dd8cc032121eb1ef93331417e7d21e70de66356716065fc39d61503fc00c8f90c0a7a97cd93f318f39169ff6bb1f0215e50463bd9d62267b04a7cac2f1341cc39c69e737e2a5f7dc1bdf92947fbf14f36e6cef9b67cbfced7feb9334fc2b310ffad5ffcc16a48f8c5879c733ea1f3857c99c07ab9943139addf31d65b9986a41d374d5eaa3e0067a2511fad082c37ddd951e2e798230db152794d37c7d67f94efd7b4bac78b22e35cdbe0e67299db7bf8cb96d4f07df302355b167c190fb34afcc10a6ab9d892e6dbcaf237c4ae34f44df29bfa57e77b1a8b4feb9cdcfc74c407caf64473787fcf21c70c6a7179ecbded426ae83e3d7d3d1f07db8e8de71bad51f2fa8bccafe55781bec9d8be6aebeb31a9bf6c490b4a3ec11ccffb6d9170d97b1efef516877fbd612ee50f4af3c13c3f9cde8b0c739ba5b0fa9be636bf5afc90f91c66f6faf01bf332efd97c337aa5df9f209798e1cb9ff2e583f97c9a9b5c36cf13ec677d3859f9f9d73bcf65ef833bae8574cae6ebc0f712eeba4b47991787c79f929f2da4f1d1cdfd8ce63ffd2ae5c316e424e47255f94d58631ff65ceed87e25e7300fba94e7109b1579eb71f831a0b90c030ef0cffc4af68844365c5449fcbbccad7ab7b9d01b8855ad577c8e89bddecab99fca43d4674eb70eae83ad15ee7a7cf207ab7c51ef9fbaae0ceaf754aec2d9e121ef34eff27599f9ae3a3fc777a60d3873e01e2b0f987baeaa96dfd4b51e9967251cfa73eab1209ec7e84ef34dae583791cf884c807358f26f1a7307e7a76651dda595357da528a71862cba5b9526d5e93579ce96c251a3349e81c1f102304edc04ecd3aaf3c9ff9f3dd361bf677e20b4654e27c91fead420e9a7171a3d405bf246d23a7d81d0c1e25398be60507b9468b23d6d19e2b0999efcb02eeccddc2b597591d7356e929e56f104759d5a4915b38465670855a2f8a7c865a2fb343e8dac6deb145621717ae2df3ae35dcd76747798f509d4f2d9db61e73d58e7c7ed88cdf0375c6e41a58665fcc24d235355f902e84d72f942e7c1baf0ae47d4d5f2de8e6b56dcbdad49ece37df27e3277bc2add7906bad21d462f3a5ea77bef57b59a719757e7c46683d13f9e4bc4c93629757cf0cec1666d3166a47d3bcaa8199fb182785fb431901de15cd7dbaed04f3ea573805681f82bed7f62f963285c65fe0334967added7e3a3f6dc8f44e401e456019d4b9ad77b02631971bda2cabe86fd39847b478c6111737236d4bc0d6de7ae4dce5df0793468f9be2132e17c449dbaacd96de668c38f8ff33868f20b95770ec64976db2a5ebfdd56439630bc85eff7c926adc9978a0c770e888d6644fe8cd8965bf049b803ed16d82243e36a3d693d77d6a703fcfba3e463f23e91adf3fcccc4428b773f35d39d1dfea8688c3147478dcda1565689a72417c083dc9f1a7364e3b4193afea8e46b2a9fd967fcd4bc534cca72fd1ae329f9e58de11df67dc7063ca1cc17ce3f54691a319f5bedacc8f7576c07ff8658332a5756404be47da4f7217c8bc727a6bdf03d1f1f17f1e9a84e4ea1c65f3e301e82ca2eb3cc0f8c0ecc3903b5b4359efbfd0e677919ab935431575d5d5dbe7eac9b5849446e412e23b1db2d39c3d8c1611d3f4665b83ab9a36caf6a86b1d8381df9cf3b47722645280fa5be3125651e29951de6cbce36203f1aebd303f6d70d70e1284e8b97d29c48f421c27b8d1a729fc891aa6fe6de8ada5b4c9cefe917d84b6067a31d08fa7a993f4bf18f02c5bcf8ca230a946dc357c6e84a30b66fe948adfb40d2171dc318ed07a2475dca7ac9a39feb961fbfd22d8cb29f3ab62f97d91ab7551b8bbafef2686ed73660d7ef979c3fd7af3ab46cd8c5739a8f81fac9bdd6f5f2c399d189322617bfd645a1ed5546f42972ae133909f9c582139aa6a6953ce70be611ea4ccff496ad5beb9be5fa513db2a163b67e6beb9889971a375731cded2161fc50ab25f8f7668790ea5e9db82f3ae6848c953e7325f2083173c21bb12316c5ebde5e8f8e0b496cc42b39792feed4515be31df62205fb7642da5fdacb932e411dcaaa06a5be7120dedfb4017f8cc6fbd37d40e44397df659ce796e21ec94500778ac66f95d2d125f2387e09b74272d9590fd4ab7311ced960b61a3a15a6900c18bd7e0e98cdc54e31bf612bf05dde6dfdd6e6cf92be4b4686fee3b5f83fb40ee097421b8cd0fce409cb52aee48e352c104702e2bb2bbb86e242824e86328f9dc7b0977ebdfe2af0df5319dab7df416ed7fe32c0c74579d71e4b4e7d7374eda9ee53f931007f210972b18c892cdfbf7a8a797507abd3bc7156f4f6599db57e2ec6aee5de88ee52ca2dac5dff42cf8b265e315b0fb39a6f79ae4dcee16e7dfecd9e2bad3c8952d6793b932be37e4a3f700beba1cae92d2c2109bafeb4f068c7e15f6f31f013dbee95d1cd7eab929f69927f5615f7ec5841316764e7dc6ce6daf59c730d9ef604ed175ddb6efdd55e3d1bf4df8363af227aa7f50bf4cbd9a5953b558da9b47f8bfee7ccab238c0e780753dbc5a51c01bd89d9af6c3cc8b67ae6f4f499673550c1ce87b51dbf32ba6c89fdd85bff146982cfb23e5ec0a566ef11e99d6695bb00cfbd94bc51fa527a70406abd89b6dd8a2982bc4e6e670d79d76cdeefb4631f4b8cd8f735ae9535c071d31a9441fbf9eadc941b6de11d5ed9d6860bbda379f6baf1e8f4ae0fe6796574f1be7832c0a7435d7c78c01ccd5546ec9f6a0c956d4064c3b01dd3d4e88be844819244dd3151fd09e4dff877e54f8f8765db3db1529dbe7ae9fdfc3e0eef7ffd7434a0f20cee8556b6967b03f5a4913d5e62f7c8f71874fa19bb2e5b8c6f9654c49f4fb761ed7bac757ab52f962b69dd512ad57d4b953fd1c508851893a8a225b58ffae2480225cabd814fe515c83ed93f6a373f0e8f6cac9e2da9904f5bf102d11520cf36f055d411ae1ed65f87be169218077623362f7430366fbee5466f8b120b5748d28f7554de1b029d9c3e9a243d7c89f3afce126a3ff7c6cb50d94ed7a4b623fb9e7dce1f9fc794c21df74cbb053962b2c19de016f1b6e75240cefcc419ac1217eaa83367413c847c6bb4f3ee31da1f80d918833d648bdcc7ba4513f6fef7099f833e2145e8ef8c313e56554ee17b8599cacac5534f5d68ac0de20a7c89bd4ef5e42da5bde9ed122eebd95fb03eaa55def3e059172866114851e15ac10571d09fc64a7e8b274147f8c67e2bb137da3cdc3c7b03b82301dd7656c50a1d54650cefac13e37d130f4bfcb0cc3d1e4eb55c7bc2b74fe24c6bd9353eeda83f4897c67f557338967e13c879a3f362fc253160fe5674fc62af7ce76ca9daaacfbf976bd36f51d94862ed3facf7ed5bdce68d6dd63d3bc31ab78dbf64f67a887758358ff5e03ffc7772f75ff141d57ebd1f68dbc7f973baa2cf433a8f7ad696696bf569ae3ede9d631c409f0dbda2fe27f061a4e63140bb8de8e5b96b1b05cddfa2be25b4137a7c0f256f8f9af739dfb7a1e9fd4269173db5d3d07754e16a9f1679e42de2f3aff782ff5037a7c3c7803bcdcd8b6fcbfcab2ddf6f780fc6650bc13f93f5219fb5c914e8feb31b7350de13534c30f4a9232e5a907b03f3ae2adab0f4b9d1fa1e44a680aed2badb86bb5ecf3223efbbb4a37d54cfd49805d533f8dba8956b46c7bda5639422eaebefb173d1cfd8b06de7f279446847e8359792600e76eef888f783cb8796f7daa162305b45644fa03fe0927cd87ae8208effbdaee302d8bf6877d2d883a7b67e2ed3580711ee167a6885b6a0cd111effedda49d1a5d5392af14c9ff05a84e38e16e47d558a72778dbe6826d72d77d743689fc834f8adcd87a9d94793996b97b8d06887510ccb0870f40462cfd19c6bb44f2bfbf9294d4a6cc5d9e7f7a05fecafd453e4a39f8f4f8c7fadc31bf56f803d508fed68109b330b94447011fb1e7dd0c2e1d8ef9723f68078233a1cd295ce99ca98eff300b17da2be676a3e00beebf56b56edf4ee99723d98b8a2d25fbca0bcd5f069c826c4a490b3c415646e67bb09c5378d768a19d19a1714af0863e0eafb12f0c5e09ea43ec8c69d1c13b3b4381ab7c0d6f6ee7a48db0a6f708f3f798d6cf9fe17d99b95df036dcab20df63ef7b95d4b65cc57762dae5bcf3d4e897bb93985bb36fe32bd4f7b8bf1deac8513ccde4bfca0f76d2dacdf5ab77e8bc5d4015db98df15cddd7f4ff5eda7ec4fe479c9a561fb5dff29336f04cdf9fd0b665e651de9dd4f9bfa5cec4d48bb0579c6319a735d0b0c5537de78eccf8edd6805349e3e568cd9befed9b7a4f3cdb371c8d95588fdbfb866d87fafd57a32fee0d3edf5f0af655c7e08dc339fa32cef4ac68f8f71b79fc68ffd31cfe8abe9ff86aa0ddca967bcbc56c9e9fd9fd007777353f037d30860e6432ae91252441b94e4ddfe6b0f00666ee08dbacb5e6653c06ca8f1edfdd7cf2fa03753f9cd322cd6e3bebe5a40deec7f99afaedf27be8a68fc81de8ac7cae74e01a2382f0a5bcdf4d817ea78a273ee3ad298de124b2abbc0f29c74b714bdad8afdf8bdbf963d9fcdff358a997f2cf65f8b7efa4f82a7e91c60c55ed30ef977a027b4ff5a58fbe790e0f883d21ff2eef0ad1c7d8ac9f866b31ad70d9bfb5e71b3630fa20bbfad3f9845803c96b195f35dff0a3a7eb54ea1e137ec4b6ff693c96d98d1b7d72a750c5b5ce2b3af4d1b7d253a85fa0f661519d8ddde7754cd5840bc97aa853cccd257a6139e79febf1af453ea6ef63be4cb5c6150615eab34c3c58655f317a12eb9f46bcaf414b36c0de32c036aedf435f006279d73e6f576afabbc1178a79da784e99accc8178caca0fcfdc9913bb1bee9dbd819bf854f72ee94ee34869bc3779c6cc19ddb4f443ff277722dff38d8b4d5cacfa79cc45a6b2496be927e5fcd9d8ac2d7db6e4a7fadea3cfefd68dbb7ad64e6d7727edbca0ba4e0cc4fdb5ee69e2611deb013880a02f337e0de0b12bc632d0fbad38e9fa6dab7110bbd78c82aeafbd1e87741ea9927f7a2f4ee0a7a8639cce6c8c189c3b75acd0137ff1777c9e6d7ff167be77267e086295eab3b1f66b48fe09e35aea67e7f9f8385f1ffed2f86ffadb1bfd543145d80ecdf166e845d6a5d3f637f26c1a6bcfd259cbc3631fbd35fea9af87e8e41c79ee7d5db76b3730ea6af953c695d63e3d22373a7140b5fdd6f0ff613cd5a28c07a2f19d5eba2a4c21e176d356bb33ed16d8aba48ad79478568fafef62694e3f1b8b558e1763335f422f1d5d17368c6f1f40adf855a2ce82a48c07c07a138fc817c2d0b1ebfa4aae043e046a0fbd846bcba1f183a8cf04caa8eaa7f4d339d683e83d878f35ceadaad7baa63107d23d0c04f0495cb0d644c2515b7d4f68b6b30dceb586fb8ff54b68425fc6d9b18d531d8f9f144c8d588e893f82f813a78a59423ff642c23b8e9df542e7c56750cb1bdb07dc77c07e078cb65554faf5c89c7625ed2cf3ea425d27a4dd4212073b85f097e8abf108fca10bb803304edec03cbb0ae432943669fd4c3e427e33ef31bd7bc7b3b55a9b464c03ac3fd62433afeeccb077f6eab46ac415be96f2f8ea0b8fcc11b650c37261b1bc54d99b805d419fcfe87e29e526cb5bb85f27af234d3a64ef34a6fa67d3f625f46e6096d5fb687cd424face9ad661a8ed58c00df562f1ea092f17b7aa6fcadf5c657b469e1c2615ce44bf1ddff00b435d2bdb24748efc06bea978f30746e6a48f047c87655d05a8a358d5260b3d6574db09f289f02cd66264f86950c610539eaafdc84c4da6fa3cac740e885b7dbe665aee43ed42a031c8dcc6deffad4ac1ab269133eb5b766eb3969014607c62293fa4d2071531faf4a1b4057be3bb36580f05ea20507a1c77b69b787145072aebee1dddf9992fbba94bcb5755312ffe6c352ced555ac32cc6d811a3203c00f94775dc5e69570c764a42d69bd679886e9e82fc42f56ef4af5a80e142e4ee6fd73e10f95838032dab64732c2a647d5d3b8a3c5b3cbbeb7b18d806f8c01d6904394c8b22cb5c657c5615ecdba17dd27ee08e06f2bd14d1fbc845b80f24ebbab396c745dbef22f9378dd1af3136d68dc8fe5848550c6cf59d3ae38332dfaecf9ea8fc8ea5cd3b7bd0789de413ff5d44ed9647196398bd33364ced6f7d9e13d2bef76375ff7fe0136ee50b7ecf578118e572e60bc83b73cacbac8ed4b015a4d75f645ca0ebaec5bfd56deddb9dc7af217d1ff3bd59fb12655be58fb6f8561c4f37ae066da02ab68689d5a567e6ce82bcdbab2340bc52698bf5e23f96fe02863e346ef6deb1b1a87d39223456a588fa51933ed95dd30dc794f5d66beafa914e5ff449637ebf3bb62ead7be2a3cafb17c66714dee631932fc9f846602de99c16d2b8f91c63b3336b9e2d5a3628f0697c8f1779e67b69595f898fc859e20a643da3fd7c2d6e76d6f040f4dcad30ca7733c80b1a7b4ab2277696bb168db549f408e077df8b039ee8b1e5f98018a4afbf88eee829c93590f8c3ce36223cab86b7856d5e03db485c89171c5b2be8bec1bc02c1e43683e00af9e98a9907b364f361f1b1273c8047cbbd0ab82bd3d1c04b20273af18fabe176905c9c7474f66bacd89efaffe3913a2de73d449c8901d0f0ba53e4a2d937d4eaaaeabefbd3a4585943c88746bcf0e76df9f5f8359f33af90379dcab157e21536fc4d75cd2fb64eb63d5b5531250d5c06d87f2ee0de12dd98cd29445e1ffa81fce03e8b59a8e92817be901c3d62735a43d0251d886524bab37928f55b8cc5821a410d5c5b8ae9c3d13c703fa879bb94c1307eb62e6da3e69710418eae691bc926c5fb8f793d7fce3f567ffb01b509bb63679e911f5cbdc7f1ac792b7fa3ba06fc0d3e0d5adf4c12e3c00a8e1fcdfbc5c43b9a17f479802cbff9804f206680458067aff52689826b6b05f5bf34db875aba62f116bfde9ca379049c829976f3ac84f7d658cfd69746c29b34cafc8101b56c5dc52467eef95d480eef9be543df44405f7bb6c2583bc52c82c994e2bef861e5539082c849f5e37c73a6764477ef2dc8794d74c2f4f54278626107b983f1c145cd33a47dd933101ff8e82adbe35b83fe552cffb567afbe111dc1cf23b007f475e2e97219a7eaf3a5afe58fd7e95fd351bf1b1bb7878e2a6231501eb667abe7770193e9bde1ffc7e77dc0b41c2c732b0f7e825e2a57310d7037b914a2c83f600cca6e8d71b8bbbabf5145778c63cd5dc5ccf5b821578eaebd6acab02dd68f9bd3bee770a7373e3570bbcafaddd5386bdf34ac4d72b9dacc38e6f5df58eb7ba01d5c5bcdab7b85dc2fb19f8efa649aebc59237f6fecbdbda7fd60ffa165b73c5bf97c44e3a05b3d5dd2f4eb785a0f1ee40bf3a42947b029f05168735a707e35bb00f6f3bdb28a0deb440f6ab9c799351e64eb8429f6c8506fd901e704e94f8dae4374d90634720322b38edacecb7a7f0576f203efca3c169f9b0f095471648e151cb0f57a28faf2c79bf939ab8c89e62c2dd1d2b5f897c025af297b38bfe388cb3a6cfd6fc8cf8557d7b087dc5f56707ec89e03a9f5d460b89ae557ec83aeb60d6fbc89e2d8f8ea5ed5dc54c5d21ca76e9e5ec59c39b3f9373bf8a0bafc6dc576f037eab6438bb3767ab1c3192896ce7c8b90076e95c31739f95bb70974decdbd5cd8b034e55681c942446def110626c32e477600d4e6a8bfae96850c6653a29d20d630db5449d19919b6ebb636aca8b3afea80763037c684fce98f75cecd01de2bbd97d345b453ed135a47be80b23de4f8da4a227ca09d8e7742c54b6bc22a6465dbf92833a12f632639ff3597d05e51d2b7f0ac4c03f877e3e7e853ada0313e2e11a77ec33bdba6347fec2bbb7f7757dfeb2d877d6c0084a1c3efa3ce38bbf2470374ce7d4e21b900b3d3ad2157405298277f07eacac9954bd4be4e4adc69dc7f6e967f6b9511f2f628cf127fa5efb5ca9be1f8fd44fdfc33133b2af458fe6dd44dd6e7f8c43bd1f9156fd3ae370ef588ff31cd7e9acce8ca16769376f06f1a85dbac1993cf2aabef94b66b3341cb0eff3c15b731ca3a7b465e431b3d76f80e903d856ea597db29fa0c6bdad1544072b6bffd6f7c2a37c67059947745645e60325baf947fd873ae5f99d00b9954b3f950bc75a9ed5a97cf71533f221a635b9aa53d0474e3bcb28d46990786b515bafc5d81346bfa9ed0d6706d1038241305890f3d0aaeed011f351d90266dc6250c6bb8c8e7e2adf773337fb88d9bf39ee6d13dedc8116f94a24ececd3cd9d2557c7c2312c045a37211ebd103dcab5f5ab437d0758e3533e10fb0e7d79afe12e9505c736f67e9adc03462704dfdc54beba332dd9adc585631b274788a286bf48eed62b855ca299c9b9b61e06429410d9e9c7221708af218c675dc7c7fa98c3fc0b6b84423c7716a4e6f9632dfef284e44aef844feebaae6744be0f667a389f858fc5ecf098afc797c57a7cfa98a8e78f8d9a517a23ae0cc8edb27eab78db419fe459fdfcb1d13355e22eaa14bd18d263684887067f2ca8cfadf2ad2b4407350b8a9b9bfb02918f77fa5b559798d88519ec175b0f3fa47bf8b11623888d83791a505fd5cbc5bd27109d29b93af62af1732626501965de117de6ec78babebad27f24febd399a172735f39f6bf1455f8bcaced68a4012cf58c7a68eb1758411b105088f93f3f9b37686ff513b2f7afcff9d76dabeb90f8ed6e83e72e1c7440fb782b9f704a8790bb6059357d35c9bb6df6d7679c31abeda489d1d0a55361247185ddd7f393f431237ae65dcc0bfddda27501b60a01d76d63022faffe7735bfee1dcb26e9c0913634979b88f5f33efb84afca391543671c9bb031575b4c1a1cab12267a1978eb02f760f557120e6d59530f7b01b3bc5ee39cc49fa984ccfeaecf058488437eee1c7463da3fde866443feecc1d63be5ff49c3cab9fd559c82d247168508c0eff19cde4c7b53cdbeabbc629e93722fd3afbe95955d47c21897b7d7d0f9d02c6f14b9d1a37d772d39d656428eb8066c8238af9f08e3af5bb52ff1e696706ede4648cfe7e89ed48c186e8775a4ef34c6c1de913973184c39bb7be879ee0a6be6092395d038ba36340ba799679d861cc535f1bb96b1b8055f7de8c0778798bc7773666f16373a2b83f4d9cc4457e0a97a5dc5f8b11d001e8a23f983b393a77620f0c691d78c22fe46c9ee2d93429b1364e2139576c498bf4b5f8a2c23db818eb6b7148ffdeebeb31d171425d2eefecc6d59c9c0df819867a3cbe101e419c47f2fe78a4cec2872a917d42f1b315fd0176d744257b6aa8afc93be49913e1a96773ccf53246695fdd39416c8f0aeb47f4b729b631d1c3790e7dff0279219d43a798d2b82b15e260c878e7319101e3dfaaa2d2be01db67afd7988fb7792c4e768ab9dfe522e8fc94a71a635125a8ff177b83d5a93cf3d4898ef4ad3e838c21e756357662b37816e1fbe4e0ae195e857d0667704bbead0a6233d1dc2a461634e9c1f8b7095d28ae3bc453e786c47e1e9fe633b550272f237532ce68bccbc9df2fc3f73d171ad2e1893f1ce266ff267bdf4b5f9f9c9975ac408757610fab8457f36a3f2a53c086216bb0207c44b16b9d3df85d5ef41c7884a37cb507bfc72ce470dd74f20e7986ac3757e3aaa24cf06c11ee25fd3de5f9994afba5b18d7be0dd48077d81f0e119faa5bcf99b8cf3ade433887398e6c8672af219bc77c891cfdafc1b258e700ec1f778d441c760c7b188c7a0ef38e988db95ba96347ed018a9f2734e646499ff348f4522bf692d772373952db6fbf40cba33fad496c5a2085d6554ed7f2f1d714db95fc609956b44796adde4293deef0d4a3cb532af094fe0d9e22fcdd39aff6758d2eba2ff5eede60de999c6abd78fdf4dcecd937abc44b47174646c420d3e89a3b7b2a479016f42c2873e0fa7018d00fff96c37dbfe80c563cb1e9f07c7fc0fe766cb5b367cab30562c214f30a76ba34beab93578c69809a79afa11e8f7f5463269f299dd8f775e9e5ded81388cf49c7fe9a631c09912b01d19573d00b30c623f38e0607f1000ac4c5e58135dc036641ea83dc0be48a27333f17235781fcd09b1f8b4560691ccd4562e309cafb0dce1b1019b04a7ca5ea8ff715b8e33831bc8ebe16ecbffd7efb1c20e730d9cb28fb41be70e55e46b98eb1cc45603db8c51130044eded1bc109b1d7218091f92f3a8c692fb41bffb5d7f77081739a55f5d2fa1ec1be50839e3a48a87f6e5bad47d1ffecbbed97b5268bfc4db55e37b4c63b56e0ef509ad6c17f70b62713d022bc9dd75785cc42f3793aced4cbfb9ca684ffd4058f76ea65f7747bdbcc37986793b702dede84dd1fe2bfbe9dafdfccd4b13ce1b6885aa501bdad6124f91c146f6ac118f753f8777c8dfb15ec24030635700bc2f628367ce809eafe42c44fcb1429d019e13b1ab63a85bf7c47633d34470d6c319d8f7d2d0da59e660710c12270dceabaa7d63a4ce3adff5c713c3d81e1ad8cb53ac61e5e711a545eda7a8e41eca8eceefe518d630ef8aee592b66684af161cf181ff61206b3207384ed19dac55836a2fb45de4c4b1c0be24a30669fd987e043a869f9e3ffc3ddbbb5a7aa346da33fe83df810c31883c34804c14d2228bb33810c318232a77183bf7e5d5dd50ddd6c4cc67c9ef9ae6fad835c49149aa6bbbaf675578b1fb7de7d7eee7ccffb67235e4d71fc86ee3d5cb39c25770f7d69014b43acb9c1bd7675e0cffb451a19b75de02dfea6bd139bd7cd434f97c9b85f5c378e86c9790971492b25f21772a8ebfe80383fd7bd7e79cd7a704972f785f0ec20d73f007350ff4c2a1ddd809cc4bf1f8cb30ff2db4b64641f1ba97fde802b922db2c8703fb01f8625d5cfb02e89a7ecd79007ffd9a8fb502f88ebd8deaf5076258e769d48566bfcf6093e636564f7c470cfd3897589861c6e39c35a04bf26974bc2efd7c751fc7fd75cbb5b16f861f6ba13ffafdf6b7049fc45661bea30aac782bd6b5ee3fa8417567f37f77b110df9e7903dab6bae02c8073cfd607b558f6defa2317ef6bae3f6a96cbe4795cb5bcd6159e5d5de6a9bce23efb7c85638a71796430bb87e3ddfe15af376ddafad3b56c7ab726455f111c0bc43bf8539498eefb4ef03c86dc811b4b3f0a5405b19cf28f23623fb884ba59327837ee38fb8fdaef415b2e7d57c84f87bee9e424fc7f515d680c7e1fff2ecff6ce4f2f13950cdf53e4670afd86f5a78b667bf420e2fd43da9fb70d5e04742ff847abfa7467d161f60287df0e71e702fe57abc663d406858a725d0da27c72f68bd17ffbc66ff4e31d7e8ba79f80effdefc837f7deeb8772b4f954327e5e6c6efaf885114f07cb5ddbbaed1b3851b9f93110c67911bab10fafc3472cdd8b9e0f571fe1c509ee3c6dabff70eae3ffad7f701f8eeeedf7b07187fffafef03ea04ff263d196e2aea00ffd27e801fc514d687e3ab8ddefd822e01b916dcdab4f0dd90afba601f73ba0aabfbe1d7eea758f3f1dc211b7af9f735cedd8f0df067f07b20ff765d6ba68d9e66da4869f12a4301dc4ac7015fc219b0d2d6fb732c673f42a70be76c74a1b87cf43ee51a0d0117e012edc41aea8da19fc29d70ed7de317595f0fb0d850efc4269c39a363e0dd726297bda38f037165e9f7d3927eaf05790327ed12978a42ec3efaec5fe664cf7a8dffaabf3fe1f71f3ccdb47153928935782ccf922c19c3bb8d12906bee39d1c933d26b349c77e6d176e80787d04719baf46da2ff006e68349c1fe17db5d69e3e3c93f1d0bec4d87b26058c024f3d4f8d758b8e4347b927867ac5dc00fd4071101be76f7dee1c4fe3fb9db7ea2ae0be4086bce2d3f2e0ee2097f44512d6b3a3769ea763d6937bccf2e1426aef34dea5eb1d8e7cffa0ae3c94beb5db788a1cc99f19cf576269710cbcec3cd346699c276d2c44637f22ba7c3484de93d7c04b52de5f56d5ac37f2136a1ef3795fca69baf19e84da75a8e17b1937b0e83b9e4331b99bf3853af65cbfc6c64d99367a5504be7568f434c71c88aebdeeef9b2ec587be7e52cddc74b15ebbcbee69f62120b4dfd1d3b1159f31b591423ee36bf504fc6f43bf27e310ec37d051213796c711bfa5f1d07663c34e692dedad7d3fea7cae917d821ead7d423ea70d3dabb6c54cc44664b4bbe06ca1460fbc34eba8a13c27b9fa77e8a43d76ef75ebc9305703e386d76de8b67a2d12be737e871a6272066f1087f35e1a3dc7808f825d99cd72c6b7c4be620fdfc975af8dfe6fc7f6fbb4fd5dd89f6d7ba07a03d4dc59e5750b7d708d1bb3cdc0966cf6acedf2874572984fb504d7cb77af1d63b9b1f6f0bd06b8efae066baa5b59306cf62bdcb6b02a835c1d44b9ed84b4a61b7d00c0c7b5ca772bb17585318f620f3aa1dfda7043d676189f03cfded3b59ad3dac32cde6d0f71ee82dc24ef97d09e764b6e0e9ceed3f53e47a1972bf8f751df81df39f8f9ee1bcfce683ffe7403cf1d61af407fbe8d64e5f48e7d95c19fbc29a93e0379d77616efd413ea80a38ced0d579346d6260d0dba6fe35b110fed2ccaddb2da3b0fe671e0cf1d4f5b4d3d84f1aba861cb87208bdbbdcb39f9fbb38575d7ea272ef083bfa7e57366bec4a8abbe3cf7e196de379ef281986110f72de272748ecad12ef16ea7d05f424d02d17f23cf9536868a7e40a3ca692f437f51bce76ed7d8b8a6ac56756265a137b8020e937753cc09eb5f49f1ca902e589faf8f047a4cdfb2166e67171d69ed3ed7c0ff74ae07eecbf8e11aa24c5ca451bec8a2b13508725a7bc1eacbf4669d36ec59abb73bd3f5441e05bae18ea36d2233f3e47bfcad752fd11ddafd75613ee4de877a9978a6389a445f0bd1594f81bf906c585fda33c4e8a5cf22dca5fcf5c57b396ad242878c407f1e674f9c4cfd931bc74ebeecfddd2523393f8ec9d7ba131af76e5ae2593bd607aff919f4f4a8f428deaeb2fa6599deee19cceaed6b1b652df4af851e2dfcbc112303ec972e4cd62e7db4f519f443f9afacb1b0f7ac16a8dd1759e9e03fcdb3d389a9daa107a62d99c9e3bbfe76f6426ff54856a559aeef995ecdf43162ff5a32ee5b08fe8998ef61f258876178186d3ae9c4d832a94edd58977e19f67f057fd0cb70889830505343ceca5a979654d75a13de0076e6fe641a6ef2da21b740ff1e9c3a7adc226e459b773669d2be24b2229ca7b64e8f3fb3f217c80dea5b84d870b4030c3b72a6cee638bc44c6ed92c810ffddc7b97ea8b003103f98e97e7bd3001f6ea5d799068b4115cd7ddd4732f4223dd7f13885e852ff48f7fbc678831870efd334caed13f38fbbfe73d1dabf9e580fd8a7640d0c7538cbeb779ce5ea3996dd13918ff1d04ee3c3b225ab781daed65397e74856ee107718daf7c4d04b88135573b48b58d677645d51e7eb1cb7c947e0bc78f75193ae1ee0a0f036432306f0500ffabf870f25fef39fe886b4171ad0fb7ae30d10b74206fcdf31f483d6f6a7967c20e7e7de92e9ddf694f6fc29c40435e5147aa1d4698b398d7b9dd6bd52347c6eed3dedf7d6e15b627512fd7ea7d78ef58865fd335c57bacdb943afa1f295a39706df441e03f1d7cefba1669d93c9336d94f90d5a40da223c7411cd3bfa61ffd159024c8770453f5fc1e72fcd3dac7cd01f105b1cd845e4ad09af87b3b514e8e4ba5dbc3c5f0133037203ddd73e7dc284fcbff0b291d7c7eeb8533f4feef499b575bc8f66ccbaf2417d5ba76bf82d0ceeff96fe5aad53f55e559c65dc31871eecf53effe36b8b770cbee011d4377818607d0bd688831ed59f3fa30adfcff2e26e9594dff4d4c704432b233cc16efb172abb59a8f57874bd985f52c53c383ac63326f8e3fa73d6f8fc1d5e5fe430a1191fbd40fc5e7eaae3f27298bfeea06726fae27a6aba8187e273a01e7856fb7acafa7d7879d8cdab7bc7e87d6e984fa9feb0825e10b52ec0617ed7725f534af413b86d3f42ff383fb1de10fa9077f4e9863381d8986b22176fdfdafbd5c13d45951e52fb877af725572f71e573247b12fc20bc3d1ad67914706e5ee8b514ab9debd9cefbc6cf91ac5ea1eebe1c7df16e56190d937be85b56948717b0ef271679afb231e62eced5612cbba5e3297944df29e670a16a6cbea48872fb92d078b6af591cc6801d9b882d96d6ba549ac69258d337d5afbb28d7e50de80c6ae96b26e6a44eac56bce47d702b39fba39aa7f972843ed0e6ee46e7c9e4a65bc632f8c57f98fa7537d7af3b6e5cb2a625e32d31d4555a758dc3c44d453d5049933c3b04be7d89770ae0f02cbd04e45162a8f3689840ce542caf8f53a79ac765568e5c726d80d7567848ec5931e4997d1620c3b45fc74476771b3993a6ee690b78f54e1af9fa6d38cba4bfa7ceaf53751fd694a7886b99424d67e0ec8f6ff7e3797a08b3f8b08018cedbe0ab7106f70df4007abe4c0df8bb30b5de6b2fef79768a8c31bb9efd5f4c5f7efd98ed8effc79c58f2eb8ebf7fff7f66255b0f863d063872c3d0b3fedef84b42a75950a683c0d96f7f4fb83da4b5aa81c37a16bbe9d419fdfaadd77440e7df3f86463ea3bd87c76a4ee80dfb7d1179649d42f7ba9b024ec033f811b877e4c72cccc9ed17473b11d165789ae1cf7bf5eceacc993f18ee9b77d7b1d72aa145cd3c716356b587af0cdb4e3f95be0378a4b1f9318acd8cd1ab84e7e380748bb83015d6ac011830b4b75be059f748be61ce3dc517439e1b6c03ef694bf4255a1b85b6e084c86ab7caadecc92d25f26a6fb37b89be296720dfd1c612b1e6fbae9d1aea6eb3e3651efa0c12df021d1af3a5453f4130744b628b23c68318c7843e6539cdcdd5a1eef0dc818db98fcaee3e3dd573b5936ac2dc14da67da9eb775fac67cdaf7ac5197e76d2b89efcf7d09f223e03305f9f1cc72c4d7441f867e3698c74f7b69097900ad78a6fe59cd7d86ef416cb184cf3be6e8e339f0c1ef5c76d5b79a5a9a6e64a8899003ef339d3acf028e4748f66ee2ee66f9e212396a1a1dc27423eb15bdf886d22d7f26423eed22f014426725a517b4d3a84c6de4dcd21ed7fa60e35bd9548bcfb39dea879e3559696a673e9da8ebf1f1c6ee394c59deb3363ad4b1f8165d16624e31af2f88cf67e3619eb148bfe1c44a433961f189ca1fd88863628d44aea4d198fa087c8be1639cda790e647d3f9f881c9c43bde2f30ff30575863abf4358d3339fdf39e563b25a7aa658921d71499bc8b1435f9e9ff9d81fd7ec6387f9172fd23674940f6a3b866d1f5b736f9bf98e29f8a94299e536ee7bec67711d699dd439f06e26d34fe301dab2b33cdb77dbaadc1880a558ff3fcbd5f31a7d425d71a16dcfb547a2a3563184860df4ad58fb442ad89ab82d2c99ee18439316fa7349bf5edb3e7aeef23b54ba38e2d275d2b827a32f72e3d99dfe527e0c22afb9ffcf91acac082feeb1d12b3b04fc85d9428a86cf2d5f72a30f5a67fe0fd11da78ec2e73777adfbc9ec5c7b4247e239ea99ef1fac99385e17fd72363db70e109b12d7654fc68abb69b86b1df17aa0e3f7e1167a77357cf0d46f46f952d3ffc5f8c0a419f7e939078f7c712f1d737ec0675afe8a16764e975f74a40af13e0eeb5e9c27c32dadc79fee308f14facd1df6e479c4f62f438a3d13511b9ac683c9ba7e46bbc19ee8fa957fbdea9dc37cf6eb7358523c527de1d983d6333999361a860ed12df7e2b3c6f6dbaa8ed79fcc49720c7d228be774dc240bf6c91ceb596ad9d6d897bfb858c135ce5599e6110c883d1bb1f1295e71e82d081d15b12c35f7f7afd6b875bd10f0675393aade9791a79e37c426cbddfdacbdde1546007f8e66a07301c60eb1efa48d36ba87fe92611d95a1b71672b25e5be3426f1ac6c37ff0394d1dfee4bfd007a38c092f7ddd8971b319f80088beb82c9af170ee39e00f10726cdce6b56a232f253b8763e00baf36b1a3a07ead53ce73e7b9db8ff7a5ac74b858866fddbbce16c546fdf25954cfc82283ab15fdb68ce8e4e1953fb4f27bedcc9389b8c2e5bfa913d3be7717cecff2d8efe4da45e4b9e503df0cedd3e0828f3ade09be19ec970d391ae8d77e73203faeac731409bf514bf4db9f0e913f87be6e91a7feb0caebd61a325f04f4c6bb580389b74f0b7eac585e5c6263cdcdb3edeb64be13863fc7e35dd27a87e67850b7487dfe950fa8f291377da9f2ed12e4fae90fc73f4486ba0bbc6b7b7cde769f2c3ea2e128a37987bcdf096c3bb2fed1d0955ea90f8e5f1be89369b8699cc17e5e12c04f562ed170c48d2fd5cf77619fd93e76e688d67b57615881fe63fa384fe805e1bb593cb447519e7d62feab62401ffed5693b2d3f9b7e35da031ac75d737d2faa670d3e0be6e7e0d7e4e1b3006302aff3866116e5f625cef87e0e89436cb9d05f484b4f29220fe302f6c14a236f7de87c5ecee28ffa79037d60b34bb40f4ba8b97f19083e3fdc67376abd9776da5a52ff38d6408298d5b7eed71fbd7f92f4f915290fbc07b27a0d1da57cb00e45172d7ebdee561a66a34b34c9f20deae0df9907cbd1e818b3f30cd5f9dced79f379404ee085cb48be29619e9da2978a4fa902cfe0ec1ae0691fa25f0dfc16931a1705e255a02fa569a28df28d6f6571c9d7568d861be8b39014640f190e0160f16a6911ed469f44f6249e226dbcda4f3815eab398deafdc2b5db09ec385fd2df6318279b5ea45ea3d643e043b8b0f611a8db3fd2bbfb6a04bd8155fa7180534be392a126d546ebce49868a33491756596f13ca3a1875673adf4d092d749a6bb11d849713902bf6ac2f904597f0316e313c7021f8fc00b212f6687bfe9de9c84fdadec28ccad80fa4bfa77db17cfbd4f479e381dff28f2311a27a57bec78901bf19d337614d77cdf1c13308bb9fd3c4e1be7819e4d291a8eea7d13d747e5dfb1b92eed5a8d4afeb764ced7673515686bcaf3d15a879303ef6641eec7cbf3cf6fcf2d77291d6e459aaef53af1d9cdfde9a2efafd6a9432e727a5029f09676ed5f29d6652c06f1c1aaf23f00577b0c39bdc7a903b9daf05da577f1f291d09c6b5f20e78facdb7880bd053dfd69faf27c325fc632b147a6fc333489d7c30a612f281f803da8f8fa22c36b415738b672e905bae4eadc84679e1a7315de053069c975aea1820d2acc09f33caaf509866e89bacb1a7a57f1f7093cabaaa7e1785943d688d8882837d6b99eaf0df5f44e7435e37adc78cb6e79972f4ea1a79770ee3d759068691172ef45e943edd195ebd8e8b08e93f4c433080d8c41a7c3b8599ffeddbcee18c8ea19b08d731a23e7f465ec4fc7e7d177f10fda93bc71aed84fe4b9f758d60fa1f3fcc3d4921786f51ecaae641a4033678871523c235e071673f893c6f85cfc536b9eb567dae3d67eb3c7bf7e98fae8921860bba711f48a53ef71c9c55f0d6b10964a93c6871bcf9620d627cca3f2c1f8f0fd4beb6c1c432f3b6c108fadea6512fa66e5e7710cb708e5546ac98c5e19f8bc85dc4f6203bf3c9f9adf613ce908b1a6c61ab177f8614e92229cd84751cf07bf6e867299d8d7f46fee9adff49ce1fa7e27f7e096be135a7ff9eccc539911baf3dd13c6a141e7233a6111e7eba3252b078aa372dd4cb23be298f0d7c7051f6fa1791a4588f9af5c8c2539231ec9f64cafa9e3295c3f9e258dd7c425b159ac8fd019ed02e80f313a057e06fd9ec17f648cb7a19cc9a1f7b465e382dd5df585afb025ebe7225686cafc4de624396ebcc591622cdc2bac69e3966ebce596d8627e131752ae711c6323556239fb88078b2c99d845942777c468c92e89333a871e9c17e6ab22369eb4f19403c3bfc47e3fa3e3bbbf00bc9b58ce3e13ef06390b748c8fc083fefae46c28d0471172a6b9b1ca11f8d5663bc0a82b128dcc01f0e3686f21e8f1f517ac97e1e681ef9e202e9baf892d7d8a300797f900a8bfabd5bb867d3fa77b70a46b7aaae7bf58d5736af6d3c4f5166a1bf97e1463b78c73b59c6a09c5ec815e28836088fdf5088f47ec322b13739be256ad2a95cdd4f7f19fd3755d2f58edb53866e7b3d26accb5ec4ae09fa479931cf60af8ba561ed95b328e9d85b93e8826e86f87cfb935eca435c823acb020ba9e798658da7a90c62cffb2b71ebe319fce7d55ce8db935d61d7246b548b68b10fb9ad698eaf45c4f313f585cdbe1a8c4f121e6a8f2df05b9badf78ee7d29ab03c86f739eaf8d75bcc7b46f4e9cebe7580e2f710e385ddc7ad4e70af422ba7eb3c3e24a7bfbf2bdb17ffdd650cebf8a3d4fcf1bdf2e02ef56bce7eb9a1e986d38498ed04f505e6f3706d4aa1511c51fa667e507f5679171966c6e554d9441f3cd32fb52c57cb5bd88913a49d278b090aa7e333cf6fd034c1f16a747f972dcae0db78477c5dabb8cd81ba1ff8cf8c884f7e655ef79941bda288d8ce412e799b431eabc4a2e16c161dd12fbf67317c950b377feed606c11f922e0bbdddfa1f6b0c6e2479e4be4f9a280d885b704dd3ec86fd96b393288de1b3a445f48b3f89014b1bc3ef3ef437b272ab07e581b476c0ba80d418cdc5f44672c296e36e8f5c8ebc975ee75aa655bda93ad88fc51497b12003e27e577fcf32e9c7d9db57ce8222e03d6633469b8aaf56bc45fd13e5faf24fbed75375a0306d02421fa2ce1937248e46b9e9521f6ac85f5b144ac83da5f3baeea82fbce01d9f363b3ce6c56fedaae65a05fa0ddc853e590e6966e3cd0b7c95e14e16e748fe44186f493a4902f0bd863c436b614ec75999dd99e9375e6741cf29e9c7dc5f7abd5af1b4781dc69c491796639e3880125c6f2017311ea4b4a8697a6403c26317e6d6346e7cee8140de3cf08e25dd76d40714c01cf10ea4b91f791ff89bc61b58ba1d69a574e7519789f5a7f617a379cbf126ce8529cf74cb62ea19165b1b4b8249e22e4fd20efccee6bbaa72ba2bb43eeb12e6dbc5fdb378af1385f9d6afca83ba57b83e254233e23ec4922831f2b8d73ab4826561a1ff6e7d94ee9e8bd2bf013c80ddaf88b159e1df7351ab663b689ac57f3849c07f1fa466e07c6b3c8b54b394da33cc9422d2daa67ae954b22e20488356bf5f910efb9d73173bedebac9e7ec869e18a07cb242a3b633e37254e38b70fc6c56e1cb54b510cbeaba8f465f1036aed6ec1fcd6c5932062f3fdcfd3257f7ef0ec6cb1c6f59cc0ea34bfccdf722f25d98f70eb08559cd15c631eb3e961df8e4ad18e8cfaac7228d873a44ff85fc8c11e1c9678ac158f2f3e075ec1abf7ddbce09a4637e7deffe1fde6baabf9dd10f88cbd33c40c013a5eb3135d47334d903cd635f88ec03691e6ace77916c2b5cecb3defbc9e21fef3d9e69eb124ef6cc176045447ed25ea3e118bec37ade35fad66a5e03df9d3177af5a0fec6931d9833c7977ae5bec35b887fe7289a1420c8bf55086f8867115fabdccb4e7dbd411ce5bb76cc8b37392eba78d877592cb5c7d1231596e7cbdff5f0ff400aaffd9aa39be15517e12f6373840cec079538e8a50ff6a8ce5393c5897c897b6ef436277646a13c31ff79c3e077d83b5aec2f5ea8ccbbacfe7ec605f7e3ba39f904be24b8dfe02e8ffa073cca29c1fafc27a277b3bdf78cadfdc5e35e3e227f2bde335f2b804fd35061f33d565ef9e4cdee3d30a75a9034705f5e507d829addc1f58bbd5b1d2b56739f49c39435e5db3667e625f5eeb799d13e3175cd7c83b6df0edff8036203f755cd7dad03e2a612ee810d45e7baafa3e723ea03bcf1f82c9f61668d76d30d9df02edf993bc4fac8d300fb7a3ef03775f49ef2b0356833701db9dc5497a79a9282fd0de453ccf06bfe893119cbdb5f10683c840fce35076a5e5debabc6b5b0e4b4d3a717292e1ee323ab712c32d594f8924774bd37053e81f0d7ca3b64b224357a2a12b9913de76a5b8f79c8d1038bcae9602bf9c69959c28ba74e3aa771af2b91fd0f77c4fe6916a70bf20df84f957b1dcb8ac7d3e81773b4443ab488cf413f54cf21e449f86f7c11c1ed0e93372df47e25b90f3cccb04d106cacee8cf04fe7de7f28ceabe975e98133a63b955d57a19fa2994d592d87d9183eb1578b761e067023dc5b9fb893d9369ef762f2b7be653db14467686bcc855979c010ce03b9b7bc3d6a8ec65ac097dac73ccf286ccd1500ecef27a7ca2df998e5ec4835111e54a56d76b3ed64f1047ecf38e395ff611ec16d1577700fc12b26780710a310722a34eefc45ef19433f55b35796d114b288ff19a6567fe51635dea1e77b22b399e5280cfd9c87e849e0db448d7f6bc217a18f7fedf3c6f15bd225d5a19e469c8847e889d6965ac575c37bfb08b78486862ddccf912b147a90f9362127d40ee99eceea1cfb64cb1aec790ff7608bda590f718f8a3629687d4efc59e07f92cdf94e949964ce695cf23203614f212c82be1744db6a77bea8fe4f6187c92b427cd48a8e9e2d6127ba9a00dcf6485608735e42eecdfebaefefba13d807a73256f5b7e64cf3e848ed2e7dfe8d295995caff518aa2b87be7936c7e0f3184660572603d69321f0adcc243aec10fcdad2c67005de94186911f3f768b01e12f3d19a867e077e9a0f5e910737f41ce6ab66fda2ef0395d026996722a7649fea780ec50ac77b0619f45cc47e03a0ff6c0c370db5ba9716bc276f43601f8b9cf691ea983362be073eb1c9f5226a8e553e1f4137213a70970e4ef8984efd74f7239ce135d3611eecb537b0b280ec8bac9cde5d89ed3d2f173afdee9d3c99fbfe75d7a3337f4d77bc2f90e59a0c615d30be016789c9984e994afd8815a6fed7cf4c230f7d4e880d55fb722af90e310a72ce208716fc2e953f7038ca02dfea95559c9fe987f932aaeb8031b6ce7273f377274d6363ff4758d40dfde118c826efab6ef64c45bc00ea679b3a4a1e0d2d3df01647be0e650a7655d6b2d502d9a47618f5d10c3e41163a9e9dcca85c74789e5ae59577e33cf2348abd1d0756083d5a54f1d9a8ff331ed2c47886f3fab09ebb8d070d79dce43e137dfd2c27b96d2b004e9b7e8f87ee67e8d4f705a8efb139fd10fd39d42681f82b7daf1701776e1b020ecff79ec5f2add9f3a0d60d74e6a21167cdce1b29db232620f20aa2bf74634376cee1322b475244c6005954f52c3f717a1fb12f76d47efcd1f6a902afaa628758770cd756fc6ba6e133445b1e737ef0fe7da5eff373e7df0faf530a5ed7eac28ead6226834fba572c6fb99f269b3ea72efcd8c639a0d73e1e9be5fdbb86dac62a107497a7a325573aca61a68d2ed11ed7b3f60f3ec41f861a1bf40356e31c6b1fa480dd4a78cb19fde5dbda5f5e5eb7fcf50fdfabad5741ee3699a7906bfea04f6c7d3dd727563bfdbde9c23e36e873104b03fff6a1176c3ba640c79de5f43a97f080358bf1a5a1d171e6294e09ea8eeb730b7bbfbe8ed80d54376673527aec86566e7c637e70463a31e9a23c935640efdc9cf09cf4e307d5e7fb3beb5032ecc77fbc16953e4fb15a1aebf15f5a8bba7fc41fafc780e313784d3b66ca7c273516348b434c1f9f37d8a37515eb14fa40ec30cebb78213a7dc2f2ff6a5ec59e59c962acf76bf452ef58f70db1d178ffa8a314a188b3da7cf6df6fcef3ad299f9bfca7d629906fe373704fbec06d16e7b3cef66d9ce6cad72be8225857e20a7e3c9adf887ee70e1b3eaafa693059c36210eb1e7f3195319d343c923613eb929423c414f6ad321a9a474be6ceb8b687b80ecd0324ba288d69bbe78dac5c12f9a98e0554391735bd37e7cfb095e9ded5718a8ff69ca14eb51be7ef0c395b8675a1758a40bbd5677b2aa3a8eed785df0731b4cebc0dc4d22536fb2a778720175d1e4340819cab2057cbf8517caadef31e3fbabe473f7f364ab4367616dad04a4171d3904e1af8527df218722ac9fd02ee2fc5515dc3331781bfb873f109315649b198a83fe52dceb3c3c653c8fe2b957f89d6fab67927c62736fe82f961a0c7fd3fc3eb6ef2d7667d317726d6d99ea32b5e476af8bef83c9445c4eeadeb57ebb8fc7be3bc3c5a6fc04de0f5ddbaa6ecc199e7e399dd3ede3847bc42aa9f215ff81e8e3d2f43410f14f8528dc1bb7fc71ca023d52f990eced9345db403bcf14ced169eb763ae1fe8bd7d7c0fef65bab1dfc02c480c15788fa975ec17ce1174e9e67d4cef7d70b6d3d0b057d4c773e4e608391f4b1a3ba3cf603a99202fd833dc8995468705915f9f742d88bd80be0821f6df8cdb9ca08e10e648c77ad853a1aa9547b9c46c85869df8204e7412eb16f16cb3ebbb624e58ef4bec29261b19d6a8837484f12162b7b6b10c89ddd6a553f4d34b352778eed4e13058655bc19c33fcaea55fd2fabca8dc77d27362fc02bf6da3e7c79ee853804fd3b093aa3a76bebeab9b8e181e58454b55dced7b67f3b1bc12f2b3ea9c0ed0d90cc4f30e727d174df6602387867a0e9dd12ef46d2924fc10fae310be6129a21ec2cb2eec6527d205d31314588f66cd2cd7afb51ee7deee7d83cf1aa4efe3c6f3aa5a86ecccfcea40cfc379d57f62a63d97dc1a626d22ad61400c9ed376e33cff6a8d7fe76a0e7bed73fe992ddb09af1ddac7d0b790ffd436b7e83ba96302dbb7f22bde067d3cfb79589b9e31976d8fbc13b0a6b939412e48ab9659d087585f1f7e9c965e56c9de762e3b3fd623fdbfeb9c76f90ffe54fed25813cd4b75f8dcd37afc063f7ba5b91e44ef780dd64f547e2b9f20ab9af674777e3162cc18f85c31ff704ce43bf4e0b3caace77cf3b19f9e3817f5ef527df918f873c89bdbf8f61df24958eeee84c6d4b4519a4cec72e35983c4a87a1afe55e7a60fb2c053eeddb99812971b4d7b2df8cbb3497153c87798334deccbc525cac3221c424fbdea1d02f0fda3be3703bd08ea0261debe66d5b13ffdba833ea313ab080e44e7b96ec9b9a5f104ea1b20b432de6e203e9149550ff9ba1eb28e4d48751e3d5dabb4cacbe7f398708deb35e7721c96b97a21ba6374a0bd7f302f91c682058c693176c2d6fee5b40d731d708de9f91b6efc45d6ec7d2fd882fe02f3b3875611cad9197a3dbb6c2fdbbcbde2a7f43bc8d9d6aa186c1d6b9ddc7ed59fe33a025f405e4de45eca5f3f75f65ffaa0fb639d6e971f7a57f1c3873e40ae8eb1437feeb495dbb94ddfb2933bfa93c11c9befcdc53efe32014b7601ba35e4ef004f61f9714c0f64676b71890f56160f47972867f51f94f610c383c5358b3a06c99dff3a0f6d95a03ef66b4579089f47b7f16cac89c9b32c1673f54ee83b1c0d3746f6b1a17c91f1a72877b37032affde4b27e0a86a09f64a1ce9d293eafa97e3e9e796f9041ac1570121777aecf36b796ddb45ed58b600e5cd39eec8c63c465d36f013183861d2af8412a3da43a2b5c0f10eeb3edb464cfa8f10a66e5f37df6f12ce2f936b160011f755b9893d3b603bb8e61b6dd890ca8637d555e25b3edd348a33549fe9ce6102b07c4ac67ba1dcd9da9ea1980661e611e76fa0d3af00e3baf9b72f2a4e239b8172bce561071eee45b11ec54661b54ba2cea7330b73badfbefaa95c19a3179ddb86f90c5799235f192a39cd1017e5fe51be01cb9f860fff3683ce150e7a9f3b54f84d6706c7e2d669a18fbe1f335904764fbd0d34fa671cba23c21e79cc65e414fdd4e998d3744d9cde73d907d0cbd6b21e202d53151ce169c531afd61beccaf625fa8ae39a597483e1d30e729de06b29a85795804720678b084fe67cee81ec9b722d4eadc3cde3613f07ad83b488b4be88539f435fb78bece5fb627116fad8929c56c10f533d825a07724e5e82392dd3cccb30fc0e0d29eb68ebf24731dc432eb396e65b1e19eea7c2afb98f84d1d4bc900b3db0f3371de20b79568b826fcfa6f22c713adca6f96997f25aeb10b40670a20071073db507e9bdbd7ddbe7f4d802f854532d9ff3035e936fb30bf5c0bd74833228b1bfb81be0f67a405be7526fcc09908797490af6bea168d6981dd360c3df76c6adb2be6e12ae2feebc0933f2272fe7c93e871647da5a87cbe517e4d6cbdac5a5f31076db8f16ed09f82e880903b29ffa23ab07bd868cd67b1b31293e7204e98ac805ebc217c706ca571ae90f536137fd9e489e7a81ced375e9887be55af852bae5b70007df633ccd53290d75bfced521f33ca679ab3950558830972774378abac9e6339db93f143edc17e9275f1ed1469fb6bbab627561ad675a52d9a76310f438acad13d32d4a169d8e0fb8e8710dffc847af789902b4874cb5348e4eac43e06ded376fef5bec23b92359f6b2c0fc6bd437e08e69856f551757da6d2c4cba8f3c2c83b8967bcfc9ad7b05ac325d6f7d3fa1c534bf789b6a77951e10572d64ac41721764da346a2c9f7a0a67f3db433c0057b31691f4501dbee322b473ed1f569cd0eabdba6ba972a87be5522c69b95129e6b1a611a0ced4b7cd857bdcd583f18b1d6531f049ebd8e7317e5105703c96a0fd7be9b86ba0d586c80cbd325ab0e300eb117b220df36e41caba7c6fe1a58afc8c99dbcf93dd41276c95fec03c4e45a6b7cc05833904efb9ec15fd3fb1cc0dab4f10c763fcb657202f7bb77eda84e43c76aaddf6ca79e369e7989c5eb1acf044c9503e484b5deabfe8ec8e2bef143df3d01de7c45936ad9d02b58ad72e5dfe97a1ff403f7ae9b30065fe755c5fa40df43ffda0ce9baaa7b253a03cde1bb333f3fe175bcce20d4bcd663ac985f97e5bd436e9ec07ff9788248f35d6741d4116f821d56d1708bae531a5f9d9fccbefb276dbae9a19523b7fe021e21f2aef6fd36f7b930ff5a07a4fe26ebf23ec6da7d97fa869b7d80b16ed6be24867e5a71f96f98a3016b7e043f91ef12fb0be230347f11712d8117111dff96c6c325d67cea42bded35f1acd3c65b8cbeaabba5f53a58d744edde19c4fe13a8fd8dc10f9014c4ae01bc14c01aaf69281a5a3db9a9ca2531d63f4c9df0507d1f6a18eb657542d88b93c522f7c7a933fa0c89de202fcf443e018d515cfc64b207f98479937c9e27b50d3c8abf30b1b378083ac4a5ce25d4cf01f490744bb8d69f77e60db2777fdd8d2a3ae36229b7c4d3f7eec4cac2d5711bd73cfb510ef6283e58e9bb03f65a151bf937d7b6aaa3d1880ebcde069ebdaf72feb45a56cdaa3adeba3f05e6a0a9e76892f1ef406d2b774f7d0252e8a38d3923f7e590ef0b5871e66434880f70ed7dd655b358db2f3fb8bfbfc861677539bc8f12d72b91d302ea473ad7cda4b90362ad41771e6dc5077e08bcff51ade3835a75a65bf6f1c73faf4f176ac83f2219fbd622edd0bcb3d5696b3ff01936f681ccb551a3d0e8f76be81fc1d0a5f3770dea5f68d565533bfb92e4b4371ec31b076c0d3b9b5632e92ac83bc46f827934730f06516edf6707d67b75db8ca1d5398135dffc66bd80be0f27735623007d7d37108b433dba7e46d19db7de89cd41ced600ed417f7e06f9ed4bec19bc8f06fc5abdcfe07c65b5ce57e5829f81777819d8a871a980fcffed8cd2d0001f5a636c8ea77936d6d7b4ea76303623ee79bfffb4375f4742bf29f0eaba4eee20f67d1e887e56a007e59af88b239b47df1e8bb9245fd4f77836d16dd15709b6bf88eb10f8cbaaa6a2aef7fcbaae82d5f5fd467cefae5ae0ff77f776ad4b22d6f2f3b19dbf44316ffcce18dec3bde5dff7dbfbdcf0dd8bfa6d77ce11e81d0722b7b62c07e6674fddbde023feb20e0ae3e577e6e3a73e927ffbec13fec262f5dfe1fd5a27ef6773a6bd30034fd9436e12f0bee59962ad28a6a1420fee44ceee7c8f0aae2e89cd85d52609f4d21d3311f301abf5ff3875e6d76d3cfb89e57fc15e12f96eb84f2b39e0f653a447bce7ba9d635fafaa5fb9101f16e8630175f2a19316e1647b325fc6021d61cf818ac754fef8be3ee6b5bcb132229fa65a33afaecd939afd11bec193d23a3f87c91da27b897eb9eff08f9a173d7f9a18d304ac77aa9b71cf79da3a5eb07df7d401e2a0507f1ac49fcc2dcbed12ea42590e13d480cd2b1f1cbbb6538fecc4a6d0f7215f1bd5963b3756bf32df5dabe7aeaa3c8c4a57f6293edea9e937de788b027b0775f0380f9f81b14b9d3ee7bb3c6f914639d404a6a1b1a43d89ea1c27acff6eea779cad5fd14d2bc7a8c2f26ebe2fc3f4aee3fcadb9367df7c44efc64b82b81bfb827de20338de414c916e01646b2926fbc6480582d7c9d5413cba495c305eb51d709fdd17ebd88becbe7ff21f6acf9f2abba67d9f057bfee9e3fe74e3da62b23dea128572a5b81e5975439641db83b0ca7e883fa423f03dffabb594b1e97a3fdc6b7a477a753beb0f1bfa757eaf4bec37c1b101e0b3da2d55cd08b2795adc47a51f3356dc4f6855af6cefa3ad9955c439502efb6a8fc00dfaedf6ff918befd4e206388bc677c016aab24c44d663609678b0b7caf8e41d7780a220f6435106753af3e87fad26857f7ac60efc16add797bf63bfcb2271783afb5fd6fc95516db6cd67e77e73bb23c730e33a3295f451b2bdbbf238e6e7516369eb20ffdf42ddc89e741948570dfff989a746be7b373e76a38027c16bcfeba9d3bcdda8e9e9e4c628d1bef2f7998cbded43fa21ccefd2e1a5a4dbd95b705505643fcdecae2a1fd1afa498d81b34bf9fcb1efe252d43e06ea7b445ab72eef5a95fff041ce5d0ce7fb76aa6c985e9c0d4b8b86db2fec6b9009bb20579f56904fb17031a7addd47a9cf26e6e443d738d0bb30f06e02dd8a3a3aa74fa3dfff4cc6e95e37e8fb9c464686b9ae7bebf2fe050ffa8e1fb4a93f81ef3ccfa496bd3a21e7d16d6228608fd65c3f25de1af3231fd4a48a317ad0e7e58d8ff6091da341f3b5bf7a96ab57a0b1c3fcf82e73f15a3aafdf0fce0bd1f584f3d2d307bbe6d97cfca17ad6d7b83655dc513c5bf4ddbae88fe21a20c61a8fa7dcc12b387c4a7cce1fafdbb09a1f3ed76ff6c1e2746c232deafcde0735bc9ccce6f696f06c29e8a47b963b59d740800ee5dd4ed130e67d549053b1f188ae4263c293b0081ce6579f6f97eec87aa535e534ff848f299cccc96810e4b72290f4eb86b365392ce2633c7177c49e59faa3828b23d4f5b4dcf795aec3f3953e3f5d238f7be92d3e12ea1b0d9daff285948efc59b1de6103f9b42d3b8baf3d40fbae615392b9800fdf41fd9ad975150e27605080df26a5bef302305986cb6de80daee4cc71e7a0f6c93b4a111d16597cb059bcabc2b79c523db9110ff8618e7f1d1183f87609cbd199ef3355f52e35f69fb3b62facf66b54798259b33f13d145ad90f940d0d7ce726b41a708d9bb95a36b2467e7446379cda80b2593799d9fa049608fb1bc95761d3be424515fecfa47bba694f9f5943a77b6c51feb1a2a6ae39ce3dcbd87feb2e5f76d9df38350a743e3bfcd9aa16afdf8f8ef99d54ff0be40ee5ab593ef71fe878d23ea452c9fbf9663c971e3ddb2aebd6cc485ebb954e341ae3ea74bd435638029b1334f664f8f7dc4d9c275e3f2fa3cc4214da0873be12331b90eea6a6f590fceb503b8625afa446ca5f7d5f8644eb6e54c1b89762dc665cfef2f6322fb9fe61047465c62e1fb157caff47eff62e2fdbbbefb4dbc9ffb9ee52ff6e413ae433f25b28de1a4321dec2f535f1099029887ec1a0e5b8df6bcd5a5c8d0ef3d6b538d3d9d2c8af7bc967318eb863e227280b8cfacdfd63934d40fc41fac31a0abbecd5a1a9bf9027a9bc583ebaeca15a0e32513e8f70a727dc6ae2ba1dee8259215788fa97eddcd733b36772c0700d76ee32fc668778a38c9e08f10c7ab7b0ad07b03593f27b97e9fe5150e3fa17bf2ce7cbf7fe0d9aee13e615fd3460e63f97449aaef94bfe2b2c2c97fd8cb78e9dba7c09fb770f157fe7e1be57a0139fedee01a1968ef06429f1dfa3c226f709cb339ce00af2c32d461dccab7b95d820a1f7e3088267611838f2bfb0cbc84e5fe5c4c03e98262fd1c427fb9656b04ef0c1857551fc614f08a69df9f08edfeaa4f34f3f32646760afdc532f4ad8aae80f7825db0a0788ee92529479f81a728dc9c00131ffa341a6a1a1a34ffd050cfa18b6bc5f3ce7a0f6adc216e6d720e3f977c7f8a647d1f42cef680e604bb4f81ccf2b0d38261f7f3cf10b193c658736230fa62b97980718d79161ee249836ddbd14b9ad2c0b16b8d1a79be12e1b7f16094c5997549b8faab78a897899672dfdbd9fb04f1f47f4faedbf9eab95c68fbed1bf88499ce81e3ade5ec07d2b35d44867b5f1b6eb9ced56195bb81b8c6735c2bdb0ae19c3edfb8ef095d65e198ed19e2bad7dfdb457cb095aa07cb38db57df4d167f6ffc51168ef11ab15f7bcdbbaabc99ea3ec807fd3bf46c37ce6f2017bc41ad7bb29e42f160744964b75cc94139e5deaf3ec77cacaef25dc66686d7827f69c7f1503117f01a0d13464b5222ff3afb9af9b3594334637e69d05580ffd6b156ea77e6f6f84b3c77e1cc70b54894ce693d4e8561c29f8922827a1ff46153bf4d0b8f2c96d54ffefcf07c86d6fadc6d2383dc9130bfa56189bd4f01db4a764f51377e5b114bb8c7c48e02fbf9614c19fbf680dfeab0dfc6727660fd69d87b72582b5dcfc3fe89fbea99c2ff0f7310a85f3e2eab7a90419c5f597ceb23926fa7d05bd4b8c394ae38f99a26e4cc74cf8bf9e77e547eb16f60f1510c7b7aa6bffd2ce84b559d218aa7e6d6fbf9c87f33097dfbde89b94bf15959ad4ce4e907beff41cd6f9bf7662053ba709fa6bbd1cf480e7362e7992f40e312b14d6744b730283fc71eb798334c648267dd23f93680badf46ec187bd0213faad64ac86fe2759f0e3f2b3776e4b929a1bd0d9583ac674c9cc3d99736e49d3a790b8d757bae14fae689ca53ba4e3a8ff9c670f639795de354415fe1dc7d4ab4862e075879354d4cb5fd3690d55364b81faddc1891265e045c5b4a174b110bf971fed5303b07725a46b27249fc05b13b413e30dc3b94a7989b8e7b41d77b377ac1de4f837d240f52a8b790dd8fc4b78a44cc8f3a610c5867f6f835366e455f8e19e8062f47fc4df390ff047f2e906f59e05b5487dcb66a5d372b1167aa5fdfacf1a1c07e7a79fe091851822cfb021baa3a9f60233d7ed657581bc05fd222f21237ceafed1ade06fef59bc37422db82734de6e00d0eae6f9d9a781ad0978c3bdfbd38ac983fd5aef3abf134bef34cec11417540c7b39f4c4d52b1768ceb7580feb7f6b52f928abdc038ba2f95aa6fb68899d0d9a7c30a65e512e7d86384d66b60aca9c9678067a9c4f622639fbb6c6b9aa74a78c63a1ab07da238be3a7c2e9ed132ed9d3b9f635bf50c345c2bca1619d832fd63b6d649f047188b4b3cd91fdb635e519f77ed0b9395623f7bec8b11faa353e02db270ace6e181cda5a12b0e3ea538d73f36b2bb27fb1d0f3e5b73f2b99afe3877af91a17f849efd46dfff5ccb8d169e7bf51d676b0b7aa3278b343ccbe95c7509316ebe9a9bb05e8334ce3f2b1e523fb32bc6d35fc7cbc9e763676d31a70730da841eb310f7cc2e89f34473cf1f60038aeb7464e7adf379ed3da3fce4f6054ea09a865ac57b4e42df49ee39184f6bda10ca31f0176f89ac2ce35cbd86b0a6351f6bf01a1eafbc9f97383cfe7147ac80f5d7f5ea783deb3f3edbe3bc5abdf9894d536139eaf7645cbdc7febd89edd4fcbe8963066b3138ccf245190d177756734ec6f6352b8d72f5fc4e74477f119b22b6d667582a97282763033613e7c7d9b6e25e91a7971baa8b8b7939c093cbc04f4609ee1be098c29c84351663268d1c43b27ee778687d60ce2aaefdb7e455ddc39ed9aec716eedaa4b66bd91ed5fa56dab48fffa23c76b5f10b0e334c90c5982f598ffbb8ce7e62a589a44bd49664181527dc83ebb6d9bb9997b5c833b99e252f123defd9295c3764a938bec0e33b6476b30f0ff2b097233e734d7d1e1c2dfe16f816e6d1802f80eb3f52e921ecfeddf3ffbc399d7a4c2306d6b18f4d0c1db1af2ed1796bbfd08b24e840cd759b1d2afe47d7c74a781aacf2d62bdd784df6ef6996036d235f005e129f287d70b16ee52392af44ffe47c23d7d6decd0e6dfa9a695df7a0efb457fe0cf97db612766666874519dcf93deae2c178ce7ce7b9d51ba5d645dbeb3bcb6bfb9dc771abd68feb57dda0b52f31283a69d9d077b1ac9e12dfe6e9abe37cb4e84d35b5340d0e8b4b347125e1ec68bf3a7d8a53e7f9d79bf67c15752295f0ae35d91b869740d6b9675e5bcb1975f9d1843318d39e5d20b764fde4f2e76cf77c69fad2bae6456cb5076364ad31041dababf74b7d36d97bbeeeda9f35dfe375372aa3617ce2e569245f7f004d55fe36e9116e10e482214d65afd13016f836f623e8a6b95e1f608df587f9642eeb6d6d533c6ae82bf9cd39ed5b71dbd0704f81bf67757b20db6650e7a27cd07a74c27b06d1c466be964aeec4b90b3a86a8bfb47d9c0d1da58a91505b137a65474357eabc57ccd313d7473ba93c66c6b7d6a819db031cf1e6ba3f6de7ab462e2fafd342ff36a12f4d47ee40cf5c264911e5f62529953beb958eefde1cffba5dbc3c5fbf89b9f6110d470a62ae4b80f7d7c669055cbb172e5655cbafc12762d075c8933a5ec4d740da97e51073b145f9f4ab2d2b3309650e77d630cfccbeccf2c525d21ab283bfcea1d775c8189e4f2786fa924cb667d449a87e2abeef89e6169e81d768475e2655df012f6b7ef740ae41ef2c51be9dbed4b31eaef523de50db3ade90acc99fdc0f720a65151f77819e3aea30f4adb7f0c33c4655acb7f6594c8da7adb57b3e46bbe74ff3655c4c9d67f56d45f9d26180f169be8fb51192f77f4b72b74cf22c4bcad198e6fcdc314684b13cda9f12624f886d83582489ecee42f986f8e306f499fd88a00fb442e3b958b749efc77afae19c6166811f1cf8b5a196755fb44f16db853cbaaa67b77c73c9de619ca611c384795ccf9b438dc1d2137ba63164780eb1d10e71ae7fb6e2d0638abdefcfb7ee9a610de0dc90af620c0c7c5539d4de953df1e8cee74ddbb8442357b71d676db9eed85df98391beced4e57a9f2d1cd7b6dc3db11b9e655a7f7d8df3ec93c87dc4529b6f57467606ff0de021432f17cc2199cccfe618b147200632d942ae0de4b8caea89ece19bf37c27b430dff1186f42cd2639139ae7dafa7aa02e6dd7fabd1a67af0ed98717733bdd3d1fe7b06621912fd2fc6ed13a5745b8c75edff4d5da7d75b5e7bf4ddd2da2c3f23edfeb659cebca6c6f85dc7bebabb1bbb0d7ca7aea5c41ee2593e452618a68c7ed74b23d9993fd760af58fb74bbccb445b1171158d35c6df1af926e427b9c6b9fbb1f11705c5a8dc6f7cf733d64639b1ff9397d3a1d56f4e7bde5ac3308d0f19e6fee7eec742a3cfffe8bdfe023dda3dbd8876a91cc9285fadf2d631a718fcdc91ae1a71ae1f96d5fe7cf50ce920d851ba74dee46a11edb6075fbf9dad72dfc01ca9d6c77bb03e3cde1fbc2ba10f1ff25eedec5d1f5de27bcf7c641e7f6f2487de5c320dfd37a5377cf766ee10bc877bde78d8179b3e6fe00f171f71ee665186790dddeb960ca23c03fc5b22f79397e536715589ebb3fde0998ff753ccab829f4392ab05d41178d9793a81fd2dcc49cf5a9490037cf207a2fddc981ff49422eb3435f4dfc08b0df789e8f6b3a1fb3b96895dea9e991c9b6b4f80cd33fb782e5ecbb8857b4be6c8f4744a3fa92f238f9de5fa2e647bd05e47d51273ad92595e5c36ded3d11a90ebe3a2b526935119c949197852c3bf949cc4f518ed12c0e231c5eb262e91d18dde8ea353242f529a27da18177930df67bd712f91d7678ae7067e20e01f35660efa46cbd18f9987f5686db9538d754f0cb5041f39e00dba43738cfc6a7970f33077cbe9cb5806399a656bdb5dfc5e8f5dc7976ed66a7f2a1af3aaf1e511271eeb8cf2db25f06b3e389d2ca46868a5a1bc6ede8f74c9ddeb7ad93979999714afe1180fed0be11ba1d3f0f54d92229cd8c7c67847564b255ecbf7986f605a13fa5bb7e3d0b82fee391e123dd23d0396935ebd47c3aff77c6cf7f8811fbe56a7ce3b30c6db70e2622f5c1f302e72267b0107daade88fd0fb3e749eb6b69fc21e271ad84364cf51066bca5f7133bfb1aa6b443ce9aadfc47d5c4c45993477d6ca8cd81af53a2bbb77dfce58dd53cf7b55b69bed13deb9675846c3d0199589f7b4c55e8de4bd16d7c05bd4f937749f038ac7914c922290d7db20cf0ea1ccf48df6b320ff53b7dfecf1af1fd0df7cb2c8426f70370d6b10e66116ef4677a2efe2fadea0d6186a5cc6756f7b73e2de310f98cfb7421a65badf66e21eaa7ea79345073fa97d24449f0e219fdc5e7d79a6ea33700e0e9914ae19feddf35fe68b5974f159ee7944cf462c49bde6b9881fa310fdd640f95e9f9baeb94d9d2efe58ff70f7bc7c752e3bc7efca9fadcfd2536240ddc21e7500eb3e833854ca784041e327f78d8138dc80bded2997c44b8e98670631b0ede6e0de136d74897222c3897eaff4ed53933f75afe3bd4b5768f1a7fade31ca9d07f7093cb66bad5e3bce6ca37f8de0cbafe34d8df801c4759a3817e92102ba27f6d9b2a3e70dca32f479dfaa7cceae3925be5d4468631c221de5dad4484e4b59453bbb8935df96a1e4de01da380ac376aa6d062aa3dc8cd8c7f8b79dcd8baeb9105b88c8bcf5c4ba84432b8d9cf45a8dd3cabfa67e5a5ad780f61595cb888dca7d578f33d34691258bfa8a555e89fec774bdc38ce84bae7a0f8656167a0ad8d970cdd0fd9d707d0bac81d4acdd647b4bf87616e5d0bbdf0b7d8bacff88eaa6d4ce48797de1cccfa7fb5d93d32c77cf8093e2527d764c7556268785f550a88dd1b37f155f8598f589c357a39fb7eab3d40e3daabf160e7a59bac50c759b4fd00b895c1b746137505a041f12d581303f19e49bebedcf1b6fd9a533e219e162d2acdfdb3b62a5ac5dddb296995beb398391e3ac07963bce3cbb6b9db9778a079f34ee8ffd26108b91cc5f79eaa25f0e8fe3eec9551cfe6ff3456fdeaf74dd1f50be29de8b718a6a3d73e44d3d74c7f1c34554ad8b76dace071863c7f5ffd3f9e3fb2786ba8c86f3f37b277d529e59add9723b2d9f07182f813d75370ea5c98f465f2fa769e7543873d0fbdd6cd6e84ddc76df1c2a47a3c36210e7ae1ee5ea2094d35a76f5f1b1866e3ebd4bdb79e7fb8525e1a32bae9f608274d9a8e5925a762bc31ec05e322d5e3e68e62499bc8ed7b41d76cf57a8b36d7c3e5b91799f1a32a6d6e3e26192c6759def9ef5f2a758dcac673991bbd8cba3c2d64a8ac8b822e68c331ac4e5e86dfa322eb85a70c4cd42ec06e667a3cfd14faf1dfa02fac3092d9375bc32bb9ef51bcb2d360ed56bc157de55e7c3eb8e95ee47e9b084faf8d49c8405e41618bf2a9d34a03a1bc50afb9b7c86798fbd7a4625dfa2e148411d295b06be254dabe75d193d40cede177eb1538beebe73cf57fcac59bf49f9f657f4c9ea85f89e3cad3347f4d0016f6775ef076f6fb5eb64793ecb8f45f55c7efc66efbf368f60fd33403eb779447c329bb1f2ead9685bc2fcba743c83ab4d817ac0d69a822dd2eb47ef9597d4efbafb02b78c97f907f7ced98bc7b8d28d3af79ae81dbb8da7ec2bbb848cb1d79df55e0f7dc972ed7da8af77d7ea0cf4eb1a540fd843bf8423d1cd96aee52cddecf732730d7bef3a334e0f9ee1b3c7de5a19add6d98b2fd9ced26d615bb079424e234f2b8fecd0264d35731c9b3fa0477a4a0174b41ea444477a7fb1f364d7d0b9387a277a0ae6c95fb7fce79deb53af75e5c39be7c11162df547ece0e820ff054f9336a1f46a70e2c621209cf921b7ae4127ce506d96341ef63d711597d325fcc13ece73e9caf247dcdbfe7bcfc13ff37e01bf5d1dc77e74675d2eb76a15d619fdcb5b272d6c9abbdb67f833f0ad77ff08fe6b723b676b35f9530cf7d9ceb43cabfef78366ed66aefae66daf375a635e40ec417faf486b63ed090639f62dcb89bf70607c09c5947128ed7e6bb7d7d4d85be5f9ceff0f97fa86c3f6fbc1edb509469f744d6af824ce375e0f25af74dfe8e4eedd0da8d833d67fdfbffd7641bc75b9a73607a532fcf685c8ffa5497ec187c25970ea16f1b8d3df91ebfaff34cc43d7de9e9838bf5ffb466d2e4e280a31cf26f20ee81fa8f4df1244027329474e387a8b3e512f6afcfd57d48639ecc576943bfa514faf807f22d8d87735a5b4775437a3fe20e24b4ee91f5f065312e88bf62ef9ddd68b531f42bad77627d070ad4171712b92ff16e69bc13eb1a031f70ba4a73ac9fc389956d9cd12cf017d0fbd7d4d274238fb71083f73ed3a9f37c318d544a26a3fbebeed72524743c71776037392ae4196c643d66bd43fe9d382dc4fcbe15a78de5ec13fc94ba6b511dba5a972a0e0b7abb0298fdf1ee690b7d7635da8b0974f42a9e4b7b302d6e89a797a1f3b465f138c4060259c4d5d554756b0f6b261b3eeb63a34ef23b316089fafe96cd18706ca84574589e4c8c8d9ee81c4f4c8fc7f34af47bf6fd713b7368bc7332afae437b2c3b271a87253e167ce1af2bc9d621dfe98fe4caf7e3be340fa2eea9eab762b987786265819cdd3137629085463688fce76d8831153ec67520eff0ee41dd2f8d4752db1fe2670a77dd57b1bd3f89d1b2785a3b8ed6f17ecd58ec21f06d29ceb35de2db993909b3e03edf06aecaeb24c23bb6af5f92ebbbe655c74be13a73dbf4d1f171453e2e1b79bab4d046037fc8db17c2d872e05b0ae206d23974c67d138885432f0fefe988ebbedfbef3cffd4f63a78754e98e9f229e15bf76a8ebde7eafe10cd9d40e929aeb7d7e273c6722fa2ebdfb28213fafadb9d7e7a9da879d920679528aeb4be3f7edb8bd88e75ffb89799e7160bd7e29e63fda1a1ffc679cde78e7f1e6d1c7cbd3621ddbaae22578a66b5fe66d017cb7cd0f841e0a93efc55eb898a5d01be10f629dfc7d67be673c9f8f897342bb817fdf8d81f882fc67fcde0a6bc3d94e1d357a3f3b6bfab447987a1423c56f6308b33ee6556d6ae56751739607d35b03cab0f610eb8dfce6e2dc2caf7ac97af6f1b58b15ee01f425d7687c8edb4bae8e16f5904e3c71c1975dfb51773c36157d7797e723c74eff096ffbb3efe12c73d7e3d9be0979c6509bb6867e3d3f1afff33866cc3f0afd125f77e2fffcb3ab1a2eb7c2c82f427ffe037b4addd24076ab9a1fc0a615ef257b50beee2afd03eb496a8c273e67ec91efb5f615218ecf91ca0f662bfd6dbe8c8b764e82f2668fd7dbb70fe9bbf16ba263e8849fbe3bd83387e830e6c41a44bbd125f1975b8a5d9a424c9a62a6d073ceb09aa444ce3e4267b4db78c921f4cd3e6cce22d146f7d0733fe3b2ca13c1f3869848b4a6d6ddcf76a3970aef7e371ac432c8f4cfc4bb491b7f74aa70a298fe6da483505ed37ea7e99dcbf7fd97e3d2ff4e1cfabf1d77ee18ef0cb8c7952f76ff137546013f2243badcd23c4ef5faee8cfe823a3eecff2c6f3c7728f491e1e2218d38ef928b3bff1473f9bf194f9e08b926dcba579f376a781fd6fdf5c4834787086b52eb786e9deb3fa8ec1d2339b918073ef2f162b106e2bbf15ee4f318efc5bf8578ef377d9abc2f0df4279c1ff652e7be9b72b95ca67e3a34741f88e5d67a4c7c227a64233f8fc57b79fdece00bb8edffad78ee9f8f43f550c1a755c95588ef5febbe4beccc333f5d771eff95c71a25f2c25d13bbaa1197a5f599340ecbaea3f1ae6a5d847823e0a0131eeedaebf53ed35cce9e5aeb96b55a676bc70d7588094e1a714831ee0acffd86df683b2d9f6f309e36b88ab1c97f363788956692f0cec0d31bb5da34d6f927f3bcfb75ff6ed769c442bb31053af40d273d877eb2e668953fef8fe312df8cb93c9e0b9c9963525eb71b211fbc2ba652f9bac95c382c3b32865be32c4cecb2c2dfeca65916b704fd86f6beefc2026de8d25d71c386be5de11a3cc43d673da5315e29ea2eb9d5d2e13be395447718860e626c61dfa846ac524b400659353618c8f2fa37b3679af13be48d20d3d678ed1a7a7956b95727bee7fef7e293c8bbffbdf864070e62577d32eabe829e177aca3df1adcca6b963eb4a37e472569af3e7e2fa7df81d5dfaf054fbf517f7dd1e7c61ce15742dfcfbf9af19e19bc33eba257ab329ceff5b794eff492c0fef459dd41a07be9df6dd5bebd5188fb1f5ec75b91e58cb813a5eef757fdaae5de6794c03cba371ae9bf829ff666c0ef50ae6f329c3c6784d7f4a2267fbc4d89eea58efbeb3760fe64b65f992faaaa8bf258b9b73e6fd38daf39dc6448dd5581db9da95c52dbf714efe795cee4fe64b758b93f9b2c41861e6beaea56cb2dabb635fb242770cb5668437fff7e75cb6637564eeb4e69fe6eca664fd962b297b75f5f9c97c796ef2a542ac3dabb12363c2336517ed835ddba72f7eff7d0c49a8595ab5f05085fa331a2f80b859e83c6d5d5af78a3566a363e0cfb751feabb2af316fe57609a127ab8e989288cbf797696492359cb39cd86be02fee883307364c19e7ee3d26f60be243de3786be077c3af0f763ef28f6198fbb3bdd8d686f8d35cde5063c48dad30078d67643f174a65fd688ad8f4c4f65fca0239fb507f34c2d11977b5ed57ed498623036624902d60a62dfd13ae26b8d5582f6539c2b6964dcf83e53ace7f59de278c1da2632e4837f44f2203311630ffaa3927726cf9e4f5267bd4f26cbbd355a22cef467e0db5df85e54873b36e82d15eabbc05fc2ea180fd8d732f0ad3bd4ee535f6ba31fabf0fd2c2fee955fb507a797d634ae62df4d63c45215304e972ce63371817e00d3cfe171466abf5dbb3e5201fd66aaed79db136a80292d513b700d63129b3a922562c35d36e8ebe0fc6e558c92f526c3bc7e4d62be930a0b91f3275e377e9a111dc76f609d329a9989f1c6c6fdcf07736895a19cec825c4fad72447802f9ec10ece22dc5d3961ed642ea2ca686f26fc6f6bea39eb5d6fbbaf105c97c63d995a0872dd43454fec93bddbf2df4e8763a31e5e09ed7dda8eec5433145df56d2d69219a641bc7d63e3bf1cb7f3d5f337f0071f9cc52aa6d883fff8a7e70069b364fb19e6d9295c83ed0e3a301f230d58bd861007455c3fa0677fbe5d0fc209f6b576f714570771fed933b867fd1bf1e498d1cec422b2a1ec97230b3994b07fdec65bdc5f07702ddc8ffefe851c3663d0c34511f9d00b5d0e514e9555dcbac6e1273616d76f3939a3ff707ba6d7200f21f3431eb48fe481151d4683643c4823a203fa66638cf83cdba9788da6765d5fc5c4c9fc616c715f97a16f01ff24b49ee4f16790ebd8e716e726c8c02ae7d4603c8ecc91c854e865756563e17300f33e7df7d441a2810e2c61dfd7fd36c9b37be2e92742fb7159c5d3a17e38f4ec43e8cf3919437b19567356e15d781f5b3c0c0f5c2e04eaf2134bc05321d7a08f4d277a4039d36fa598fbb390c381758986cb537d2ffeb03c6d4f030cc3feef9deeef379e5224e31aefabf56c43ff48266e1ae90bc2efc1573c776e712ce6ad90fb5f71ad2a4ce1e638275a130e32e77d289dd89e6f0e8b23e288ba60db842f47a6ef566bdab4c19707b7880c9bd6200839d1286f8475eecc93213475f4350bf2477ccd2c3aaf177e14a8119eead71dda00696cee00b3f98fee6531385f23faf3f83a751b6bd5fe3943ac7b97c6661e16917183e7fa9af9317f19a5f37cfd44e68f67bb913356f1147e2f30c7a4f271edebfdc75a03217797fa9caedbaaa766e7bb723578ac7716f4e94e8aa07c1ecc76230bfa1373f55b1b433f859ccca57615c838b6461df1b78eb5aafd6dd53a1d706f62888b6fb733e779f0c53a73f766dcbd7bbc97f229ee9994c695e6e79007f8803ee1fb3fa04f727d46f67796eb523231c967f764625d36b25bd1c1eb6aaffc190d203ec3f768006b301c969f0775285756d3017a7bdc91ab4feb4e2c6ede4f73f7ba13ea7a0edb2fce4e7d6ede573abc2f5f0bf3fd3ddd9670de26f6e5cf9f6bc173ab1a1667dfdabbdf9427363f0ff3ac0c5d2b8b65b2beeebebdb6b53cffd6d93206e9bb67d1d8e4e288fdb8b0f6b1c2d9be3779269d4b2d87ce302f87ac4b3db73fa39f451ac829c6fa90e73f81aea85db7efabe376ceeee3f35565fd6363b87bbbdabf3fbbcfc5f5071cbd77edf907d8f493fd0ff3a5f72cb23c7fdee7dd5d9fddb5eed46795405f47450a3ca2539abdf46ed6b10fa9f1bcd8cca9bf4a237ce9f9ef965cd54e5b9407cff0e36be6765a8ed260680f02efb60a64fd143acf7f9bfa7537d3af3b723d27fbbb3fa7d74fddebaeb5afdc4f4bffa8cf2bf71e033c030d1f5ad73afc6e9ec989f4b34943e499eb5cbd609d04c321acf49ca3a817d6ba1247c388a7d83c6fb22b61cea16bb57beca9fb704df1be1ef3de5a9f197c826c713c3bf9fed9801a52e499adbee32caf176cbf2e5956f7fbf36ee033da0c1711ab4df4bf2d87d04e6beecf74375a81bd863295b7e1d126627b017e26b081cbd0078c35620754bdfc5be3b6e5326fa7ef122f3b115d7d596316367d08bcdd4ce7a27f04b27b853e5054e78739b579fe5fe88b19377a7e008efb27e2ed727bbb1b65ac4f4b479f148ac580318f369d74ae29df73137a5eb5dff7f32ddec398888bef400fb822d4fad6e04a74f37b6240af2e66731455ce33f66cccc297f6199cee466fc43e890f49417468beaf1debd7c7727f614d7277df7e4f6a8ff2b604c62c9a35885d7bdbcb23b17ecf5662c3bd74afd309fb18ead75d7d6e94d8dcf59d17cac3e8fad35c612992ed0be06a4cac4b72ffc5fca8552fb540563f63c0acb74e158e94a19e426d2487be75c75872e7f9543bcf3ca7878aba9f35d878b77de85b2fd53edf9bbcad9307b1be89dfe3395a6d3b0be742479f0cdaab9c8e37b18f81bfacf29830e748f95b3c0fb477f277cf00f3abb1f7e7754a63cce3950a3c3131d234d14669202fb218701c5127a23a6ad7b3687d26e6fd853ee446818d1ef9e0ebe678e8d336acfa5a09bc8cf6b34e0bf6ee1db6c55f1de762bb9cd4fd8e1d2fe8795fc4724972fdb4f1967def7e328dec1c0f6d5a078bb60ee10f90df5ef7feed9057c7ed0afa495ac38dbfc8c4be9fb4bfa4d3e0155a07df6edbd7a7cebae92e3a2e7b6518f6259d64d7d053f3ce335062cf4d5fb36a9e975d77fd3ab0201b698e967d098d5f3fc89ac5b93a7c2b990f28637e9f8f481e5c03df2e82fc4674e602ec4bf946f860161f169007d47d0e07fd6714e95263bc0bf29d3b68a05be76af7f8fc0fe5f988c718c43ebd5641e40ca187c0774f099fcf42fb84864497827a9ddab666eb13407e5dd2f52c4e3e3d411c7b8db16d6e5f1b79410c8799f2c629d2a4e023871ec34d7f11c87422a368cce1b0af725f694d4935f654db77ec535b7ed1383ce875dd35cad807e13b722c6acc81975f989f982c217776fd6fd1c3087373d7588bdfd14f9aed0dd4a57deb9dc05effce3b01fdb7e4599f4ca63ceddb3633c446bbf82eccc7dd9b862b630f492b23340c3a6aeddb273a13d45409fee10ede3e6bee07194fcece6b7a5f8b4688ce3efc43f98bbe55c293b3466ef131f49eaa39e279ccce1b7f71441fb392d1def89877fcc7efe29e43fd61cdf83fb51b20e78bf6d1bdc4865bb25e87548e0b3ebec027749a312c3aec4148eb0521ce5ce3d07de39d502f58826e427446f47774601c3dcdb491d26fd7b3de21909ff8d4732e197e4b08feea1e5bb72b7f1f7228ff435ab76bde5d600c05fa2da6a1ec02ce4d3cb433a27f109e6f8fd5059c094f91628cc35fe35cfd08fdc5bdc21035c8bec59fd16eb08f73f5fa1d7eb9f1946be2db8beab9e43c18eaa7d3f8bc873f51df01f4657642efdae251e1647b320dbb7f9fd09772851877e52fa8f28657ee3ec15a716d5bb4e20dfc1e692c760679ce29d4b2eeb05fa93b968ed3563c43a09572e32545b4a363a07fa2ca9b5d0fc209e6c82c8f5347f90c7cbbdcf829ef6f3a269a524407d037b2a9b62ff8b85d8b676a0ae05687936dcf9a3c9f313f0a6a721e8c43e6fb7c8e3c5d8af3ec49a0cfc9f2bcf1a0eefe1e3adba2cf8fc3e63225cf84ba1ab616cad3d479fecb9c2ccf41ffbd4a75af23dcabb07b99eddafd9ecb73e83cfffde68caeb343df5a2ccfe18e5db36ff998385a6cd539d15e2d74bfb647ea6f9366f998fcc6b88e863d38c15f479ed5f0b3259a52f9edeafb037a7f06bd5f3ad7e6bfe66febd50deed45fd8e48bf8f93a4c83a10d580ab1bc2823f976a234dcab1b607cf999f0cb7b92274e24ab5285fbe52e3c7b30ba6c3c45eae27d15dde239fc8873f514e9787dffde523a6f5dff709f915768dde7b0bdee49968c17eb95b32d667906b96fb1bc3e4e1d560322c83ac25757ee3e6ef47559f4d3301963bcb844fe08fb13426d19f5f71acc1f0c392a1f896f95e08f32a06f50c6ebce0f78e3df0f78e382d1f6d451385ebc3e92733dd3e0cc14b303ce674ae765e7fa4762a865f39e994ff6efba85dfcebee5a3e7f93e9b53ff5a57189bcad4383de48781b790124f3fad214601f52ee48c7e47ae4bb37cfdc5757b7a5df048fe7cedcb277c90f9e6010be4f9caf1887d9b47ac298fe078cbee2b5ffda81987e0625b5c1e3ec6d7f8393f5cdf667c6a8aba7a3b0e8473e0fc2ac2be7c5bdfc17efaf6aa9b3f6d7bf94f9b0ea01fd73fe2f57356130d75d1ecefff0d7efd9fadf99fd9875df6086f43598aa98745928fcf36cdf571112f55c8938acad109fb8aaba0f3103e56c560cad125f16da20b36dff32fa8f91a86145b17fc6e909b46f45566cbb475fe4e1db448dafafdc777e27181b867d798d844e3c571e3ddf6d35a97eb5bf7aed8e1b16f4f67e5afed2a57a58d172aacb76434b44e21f8c246f7481e6468d325e9c6b7893d84fd24a8fd30db55b5a195fd14cbee39d4305e91409faceff8da880d69f37e36f51ff8d98a28cf24cefe3fd632a64fbe0ffe3f48975606bda621beb2f848fc51117a4be051d1d02d03d9edb04b3bfc4ab97b0a3dfddea16f7d8b4e698f1f468f5b6b1708b4fbc55ef1cf3833bcc8a59c1691b1fc2fee5baf5f00688df9e8dc3c930347c1fc5f4df1a02ef650f70c419c9f5b86be59d057a40a53dbc83e4c431d2493d1a083d6bfc5534c2329c859611895cd5cbd3f8d65207e15b15f06c48e3e21a6c098facabee3b3d0f721c4824f4ddac09803f866fb7368385c5bd7a9f1502bdf33c3f8eae161b4ff2fbb7fbf7d2f391f7a6beff1a7cadb39883824b1a1b6e351f81cc4da5defcf74bde83c4f3dfa579d0be8c90c6fcce6b16aad47efd396c7c8d36d16e719b76ae9fe20f7213bc7b25b2663e65b4cd9bb9d3a7c08f9c6b7ee0993297df9105c0fd3febc91d6d8693c199173f3b231b253a855f3e8db6bf58b7822bbffbbba5ad779e7fd99bb7767e46dfc309ded591e2ce0859d799f26c4240c17f18788bd0898092ce7690ef523f1c4959a739aeec0872553dc03d68b9f9e47cc1fabb1abb07e25f1ad3cf0161d39825def51e526b075a9727fbb62a05c1e22c6c7589e04e57b38af6d611aee53e82d063d79127f75c4dbcad0bb6581bfe8c3f8fd225f106c94ea1ddeb0e714f8fce3c127f298bc2b6f84933d06c71ffee4ac1c18c608a5ff7a9c47f26a4fde17ea3d9af92da55284baf4ff23fde22b1985f9207df9e4dfa45f166ffb2efd52ecb706fd426ec73fa2df3434ecbe981a60cf70f800bdf65a4473b6108b44dd876b163336316fab8fa610132665f77f377efc3d1aa3f2908efd07f2b0ca47a63933b476bfcf1f41e421fae93d99d55a5379c872d91ef97adbf6a968eb5439dc0f7d67959d293ef3ebdc93ae18c6ff9e5e78dcc613eb92e419d62952fd979d2dc815aee38390f3017d7b72fd2374daf4ddf11eb52e88f970b49e2861b1953fe3f1dd39545fd42cd4585f1c8f17f213bfe6f1150dfc873cbe414bdfe1f188791051fcadff028faff693d59c7cdb8f04390f5a8a5868b2ab406f43eefc7d651713fdb37ea7f97963e8f7d53039af2716c44293c9fe48c69d7eb1cedfd8d7bf433f6be79c367f843c6c8cd774f1ab5e3f3bf7c3f2acd7b4ee41c031e1fa8df7c5429bfcafeed5ac74e7870873bfd6f3ce11a3e3d1bbb7728c29bdfc811f126431ea1ff3566cb23f761c5ee2ddf311edb2cfec1d6b4c6b9dab57cef167b1b67f66799ac6923a8cb20a634d99c2b8fbc779e6bceca43613e421713a15a1c33e9ec08df111788b63e801ee30abc9a8fba734f61ef9a9d21333efa0cb31f4b9a57513753f0fc751b89c2485f69c7dc453441a75592d86d63ba614957f304f9dd585ec7bdf3d317e7d87f6e1de1edaaf6dc9f6fa9c5a7369d9d50f796e8ffdf71ffb771c9a3f783727e89fe2f22931774b1b1da3e1428acb5a5ec7e5b7720d0fa16fd7b5e2d4ffd53c8b75eee4a7bf31dcf33a77d370d27f3ea0ffa1a1eea3fbb1c22d308db0207a38e483424deb92e55e668187d87e1b439711c715733083aa8f55b7ded5c865aef3b807c931f41427f4f4fdbbf3cffcafcccf417d775fcb122eb7d795d32ccaac2cf06ce56b3f37e393dff051d0b9357cc38005dcf9ee8fce4a8faeddc3d72bddb45a9356defba85d73da9b135de7efc6b0be18d7ade9fabbf50dca2531d63f58cf67f8f11429f4ad73e05db79107b5e27b73b2b886dea208f3ec03f45c4a5fb59fc4faee5959b1d87b676eda17f1a3476bc7d5d9a8bcadc1d1e865568ee6c426e66b70b08e8cc62726f36d90bb793464f56995ef89f5a5446c57b4c585f80f578b7ee4c66fc72eeb316b5ed3caa7177bcfb398385bbbceb5425dec5eaf2fc6b0a7fa75477ed7b571ed5c8b465c96e64840ede6e1515d31174764784b59a80d385b25a1f59dd6fedd53d2c8cb3ebe9807cdcbe8887509bec5b61ca973352b7ec1d7a9237d1ce899dd5d77d6d0bd0336cac42a82e1f240f16f906f4dac4b20bbf7b854b2e8109c577b756cbbaabeca82eddb4a52b117b5ba4f3cd4d7ad0a3b70d4837b20e2ef0472719f0d097f5b48332fbbcf0ea392dc47cfc239f2b233877ba29a860bb5e4ffd133729bd0f8291a8ea06e881f9f6207b5c7bd0f383a4ca5a9ff89356cabc1cfdfab4f9e46cfd38959bccb593e35dc28cea4a2da0ffc9f1b13c788ee83cc1b5ac99bff59bc1ecc53f4724ce7ceadc275793d7caabf579f75ec58ff2c7d47013e3d357e71ef7ebbccc4ffcf53e77699e557d55c3d9fa2b2c68af9ed5767ef3ccb2535d16ee7593e574387fc5eaa1c3f3a26da2d9bc13b3d9da3329566c6baf83db9bd05799105c36555abc0db4d78cf67161ddccfd0b7d220bf65afbbf175662459f25294bf9d4c9d194fe7f8a3b5aeb179e0ea1ff4ebce5c0d2a8c93f530fb0c72f564edc2d5bb37d845f2f59c18ea8ad06e9427ebc08b736bafee36b9fb916855add4b2c6084aa599be5022cfba449a22458385043ee7819d86e5ed6792eba7c45bfff0356b8134e0c6e6412a66e3afc6bceefc819ac512c5ac70afbbd9e4136b3756c7743e918adf646d0fedb59dfa9f45b8dbdeac7c9d5bbb547af3c8e7fb62f6b2cd4327abf7fd05ae93e0baecba8b64eb2f8a77a0bef995ee2259bb107e6699fa3bf417f43dd6351d4e963f3107cc5457748c2affcb49cf09a1ab1579567a9e1dcc63bcdb9feaeb281e8bcbd93813f344f85ae88569e2dd000be15d76cf8937c862c0385dff20f4c7d6369948c5ecc5cc4327c869fd3be58f63b58a7d4f96800d37455e7e01db7eb22ca29db227cf8bca1b4f37640df9f391f9be740ec83c357c9f99f1ab987267283e48a768a79cdfbcdad7309d2c8bf7213c2f7bf397b975589e853d5da9dc33b7c5fbb0aeefc275d107d1c4565fb9de19532dfbc9e5ceabaf43fedc2d8fa1738bcd5c8fcddd2d9b3ab70c6824ffd54523d5dcabbd20bc72685f60cd1ce518f88bb7445638baa43c62b23c85ecbcbd0c6233bbee66c6d331da29f7b7d5b8f8eda451c7f324aea7895ae352619d794071367e3bc23e10de708a76d94f5fb306844fc743bbdce0b53fa39d524e8d7541e6116a6946ce4c55d702f95669dffae6bf9d7df18a7b5392f331d7f6a7e83e38cff227429f3fa3ddb69c8a7cb8c0fd6463a4c59bdba843fc906a7aab7802d224f2965bcf354a9160aefc25fe509bfcaba6c38a961b3421cc0bce6b6c72df37ce33e373408fc48e216b4ae46d3434d5b7d580ff3ee5fe3f832fd5508177be0d88ee83bcd3d7cc1ffcdca60e9937cf8747774a333fb933787e5b3dff8c3e6ed92ca7d8e12f9fe769796267a67cf3dc28caa49ff14e11f8fe9b6f9e434f19449e5b42df5afff6cb5c8d4ff14ef9886485e2cf019f0039e56b16f24df7badb784fdb7817e4d389794e86569118d5755ff3e48979dec8ae4264d76ff1fdd2066da46feb6aac7be8db641c291ac21ebc851f6a2deb64575a73ebba92831fe2d9e1cf3bf08f2b8c35507f0b32b33d0eb9b76b2f3e60ae449fc09e2edbf98ba4bef9cb2231d2321ac6988baa5b5998bb44dffc08d76e19937dd3af3b5a134978c3d91a2e894e9f91b341ecbe0d60232db2507bfe34278b0191dd449fde18fa3dda2512d4d0784f4cc7474c098e6e7f7b3c4eebb5c9a78ed1cba07adfb8f5bee1afdf86702680defad6eecd5b9f88dc60bc4ca839756abe53eb5aeb2da19de445fd8e9e42e574719e196db945ce5c98678784d7632649b9f1edeaffdfcefe07c89dd5e03c9bd82afa1483ff87bd37eb4e15f902473fd0ffa101634e781422080e8920e39b402208a87d1ce1d3df55bb0a282635a7bb7febde75ff0fae73a250c3ae5d7b1ef8266ed0eb76f54a8ef4a25b369bcca9f5b761b3b69cbda2870c9d678a6422578f1bb800782bf93bf50231a5f122f4529c43896b8c8c8b3e5e45fdbfba3dc366f6186f8027659f36e8b8473f6743a0dfe922f4d079e36798a97e3b7fea52fe3d41bc8cdc2390db187ead87f914f3f9da1cb44ce7e7fc16c9cc1fbbf931d0c3ed547e39cc0077f99dcbdd12244f4ce506fde45e0006816c9c1d2e4c1cee94b8effc7996f2a91b6d0e1fe9cb19c17c6a3387a97e63a7f27cef4531a22d173775912eb6a7cf666a9fceb3dd8281f8bd543bf81cd4668fbf2757e093a0af43ec78f8ab9a6f1fce6d06f819a2b5fe647ef6b8e1fb5a96ce2e67a46adaf9fd5e598d0f5deb427069f1406a9fae9ce4403f2deded5b44b2d9220924bce6e9e4b45dcbe676cd9931c14724df406d4c3f1b5ebcb8e8c7e6a4dddf6fc2b9181f109f9d4d8cbd93854877f095b2d778cfdad0bdc6ebdb7f7115dc3ea2f10dc9f8533dae9d69b9879f8f77ed1aafb0bbb470444c888cbbe4bf060c923d727c7ec3c1dad298b58878caf24cea54f1eddf911e22402d2e385f7206452d2b3542f47a58d435a7df2fbefb6d8beaf54bba46d3554d57ac7cb3ed7790fc8ff82be2654a31b62daae8de6e113d9f72edb54c116f87faf3a3eb6cbb39e035bf9d1dbdcc21908a1a19537c061c96d11747c75ee4ab543ab9ab83afec1683b5ad6dd7a21005f2cbc61695df53b9f39ea17b7e566495f122d65722faee807c3244b413df3567e3ecb4f3ccacaf1deadae0e70ed32cacdedf415df9bf6c51e97c0fd7e03f800c3bd58f7b0a86793049908cee2b91505fd36ec17c59b7e423b946009b09f97bb73ca27be9c9c9769d1fceb39d7671b9e0e8da0cd295c3aa17be79742d36f176cb3dd273d636a21fb75f98862e3e1c8b85b1fd417008e4c57e6605993730afb6a8f2f7cec11f0821dcf9c909d7046686a18775cf3ce012c6e13627c427101c1ec0ba764e18460007748e27748e349ca06e681316a9c9d378ee71c3a363a98987e4ec7e58e4be2c9defe3125be240cf1e52979ccf9fe3c18d9cfd01eb4ff4d8e92d7452f388ed20e332d7af8c2f14913eb3b83ad6f0c19986a1976a4757c77703d664dd8ada7fddf04f3bf68bf785ced85722a06798e656eff35fdc62ef5a8bdfaeb544cf451ec71f5d4b6aea0567acff09f92c2d9faff19cf2be8ab7786d2f405671df0f685d178fbb25b0675abfa1f858c56bea6352df1f4b1c793f506be1cf9e2c45ae757bfb96aed10aeabddc10cfed7ab63c1f901d623e754137ad68488d57113c81677742b6b6d8d087fa7e307e8103f5f1e977d2f2bc8e047faa67e15c4c5833fcde9e1f8f6fdfdef0d9dd309fa0f7b3c3bd2fbe273762732035e56b7b26df4d6e6fdece3c7a13e6e8edd84a06949d8732e03d590af83b1a571cf39f96715f2e4cb0ccafc8e60bc4980d16b89710aebb92ac6d6d0f35c4536383c7142e7e2484f4bab04eb0aceb9a952e55d483dea375b9faf05ae95506a21970a6fece843cb58f5d2987334df97a0631a7eec11d101d126c6a2c3fd56f891ab9a58d632a1bc700d1ac2d9bccc430fb344fbf900e88ee32ae13c4235d94d1e4243649be063aefc236d56107c167b365a1864fc79dfb75ef8eaa917b4672b0ab0f4bf94c8d5c32568ffc960ef9a9cdf2b61ea7ea0ec98775b8f9517c742327f511bd949dc34c36f929e633ef1ec75e3d0ee9dfcb5edb4c61fbf3a20df4245276850df41a7dd27239d6bb798b3d31b3343efad10de8ad6d32852de6f2699ff69ead60fb1edd7b70477455f176f0768bc4df69aab7d32ee5f71324936dd8a91e6633f9edf03150ced0ebc9bae544b62a6dd59f76f5dbd4668e2ddbb4fc72f8cac29abdca8b36cc14c9b488b6ee04d6e7367b6bb03caff5eb6e961d7c5bbaa1cff95b3cbc29e2e8f52312448fe3197fa0658e3dda1884ee2b63950d26dac58b46af1fc9cdf776d7bfbf25f2af38da2c53fe124c10fca4ab2295f29318d81a03be3c09dbcaa666f5ce7aa231fe64fe3acbf81dba6381a59c116ece383427ce1d9d71eac51b683982a92fb2a53ce0ec4c2690f9f3cc263638b2876a2f45dd9cdbc1d9a9a1bf8b8bfa4338afc55ae21a6210cf1d26ca98554d515806967a5c5bf3cd4a4eb6ae35cc5d7db45f198951aefb277b1ecf0fcabb729dafe25319bb2a0a2292d5035190bc49bc99f6d7d2463089f0b3896fcbc3b7e9ee46febd6e144948fc943d14b40afcb4b299b9963a84985b6bc820dea4c86ee65a381ed7e1c2d04f836456d4add8c51b44f77c0e6269231c1f0771e721aebf9954f351759c7c8e4f834910e2d88321f458f6397ebb26b1b7aecc6f03908d8ada7ab8ffb69f8df6006be91a19e518a6af44f111c74a6a8963517b045b37c4f7ae3cce65024eca8aba66d0a3016835b6ab927a3c072f5d1c038bd4c142f0947936108bde83246e188f9961feb3a8e6033fb6097d55703fbcebc6b3f8786db9c399289c5c5b85be30fec48c3c39c9d7e27583e400f017ee4c067e1bc06f0477ae009f1987ebc87b32bdb7c5c59793c4cfaa5ac1154c8c23a9f307752f5c5b3daded657956a41ec6602df3a70ef81c7cb6c2517767665e9ae46bd98c098c2fca64719989421e58d87e5ef8ef5d5d483d0e7a9703fcc0de23931e64f9a10307e19dd049a12ef2d61b08433fc5fdad3cc81b5c24c53ee02e4eea385b3e53d67c859e146787bbb12ec4b5933846eacea173595b66519b9f7576d0271d6c780aa693b8475e151b4ec166d8b50745d385d50a49f48ca46bbaa01a99b03462ded20d4dd244c1576269a58c9315d4329502d51c879fa6b9dca0e78d58fa30a578b3629ccdd218bacaf8a4aee2e551199b8e21a992c1ce372b56ade61b270b637c5335033d937c2c999ba98d930f2d134434e62ae60d657c83fe6b9ab1dc98e3b78d390e25450a0423518555a2a99a3987f95686a92f99107d272ce364ae9b9a3ba360a5c589b18acd959109f28a55364b5d582e4dd5d08d85b91a4bba2209a691089f0663a0b58f95f1f07315271f5aa2aaab3820bd695e36baf1b259c56f1bcd74a555b2dc1868cef115d645d15bc1343565c5aa2b65ccebca78f1694889ae1b81628a82b2626e63cd44bfa912dadfd250e79a4ed605705bcc9746b29889c27869b082c698641cded0c7a64ecd33d70d49d48d9b6a4a313a0f45333545331558e7123e0b4337f80f65cccb681dab44d3d17733513056ac6ad0e39a4cb2d2f4eb6669aaaac1c039c846cc2f6838ae58d3c063a1f7920f18331e4a4b565357cccbc66412431705431f1b1b83e165139d556c6cd0def0d9992b4d173e8d48f8447f1b9130d60c69ae1bc3899109ea2a42ef9a144e2e3eb544b397a62acd12e887ebdbd2f5ef198bffef4543d067dd817a09ecd1e96b32df7c46a333e86222f9d70e7365724263faf644bb3a9616afade1ee231a9de739e213cc66b6d5c8bf0aeba7e649115f18f4ef07992790dd8bb75b9e7cd2a777b6dd0c16b69a78ab725ca8e33db30af91e3d63fc4267654b37c649f90c72a26d3574e584f573f43be2eb0c3cf36d96fb29f8fae6ab98bbde7f3873ad1be2259c5bcd7d09523373d3db25c8f79bb59cc4ae6c9e61ed3bd6b7418f243a2be89f18669e0cf4e9a888e59c185e5847bd0476b127ac2351308cbc818ae48513e905f2aa4cd49d938ef765debd78ddccb66376ba3a6e66d97eb3b4b4186ccc040e88ee2a93524e38f819c4941f3c6c1389210fb7800b051352b3c803fd74c5fa0a91b99d947fb14535a0d688f4dbab274bc30f88c11e269df02076191a3fca18d3ed7ee3586aee71373690abb324f6c157906744ea7b99bf7e44a36b8533ea05e4c4d51efa761778e25a2e537b8ed4212171a8af8a7c4bdc1d92935ff2853d2fc79fd941e2a4a74320b2a42e41891330a6f20ef89c97e38aecc91bec4f81bd48fc88cd214761b07c55e4e1c54b8dae71599f43388af8b3b94538eca5fc99e0198f9e9f95369c21d870aabfd99d9ff2ac2f0ae5b89e6ca6700f56e3124e8df3045b560f9e87ce6e71f1262643e139e30da02e387daf10dc4f75b803fc6acf115efcaabc1b57b51aefe4d8ea6e6dbd34c7cc706febfa59fa506b8dcd1c4b3b04f6bc7ca7bd2737fd113efd0c6f581ae7aa7d55ebf72c2973b9e4dcb9fe6d6dccf21efba914af6d336fbef325b2d023cc1bf835bc69ee19fc18f22de9db37d2351c5b3b0414ded1eb5464890de4b76a5fb214e3be652c3973e1faf5dea6e1338b82d5046abd91b5577478be1ad1674e6c34cde7cbf3ad7e1747377fb2a1f042daae39a017675764cbbe460ae7a6eeb6ba238d7b8269edc06470cf37f6eaa709c2bb214577bbe007b1bec0d790dc6ce17e5f1f11e404ec67d438d3d53dba8c74f2cd696617b631c82feee10b14cdb717099679a5ec4b1f9d3b6c9e0fe112a45236159993cf995b8f1bc6cfaf959e3beec237cca72c9e0d701fb8933f30b73826f11faeb51c276ef3eef619e481b5803a7cd36e1ad93cfb18fc6ab642d3cd3dd28b3cd9a8e8208e85077aeaa5cb367c2c0df781889e5a6331e793e78e74ae21e83cff688dd538878e3bd6823bd249b0befddc79afad61eafdc3b3c6633c05c38397ba9727cff8887b86feb3b511d9ec29d8d59e7d74be9616fae9f11fe39f8f6b523c5c1bbac3ebce330d3d126ff0f7a7798deae76bfa4ac2bcae659efbe77705cbae14ddb9f8b2b45ddbdaf0037ca34643fe7efb1be97ee6d87855c62ceb935af2ae2ee05a10e275e3736f24566291f89910b9d6ed126402c8e07e9ac4ae0ef5cbcfae65c62ef454e6d1995ca6911051f6c4d3421cbe28e210f7b1b5207e3bf3b8ebe68b2bfc01cc06dba0cdbcd69b51660f5ec412ffb0866d35327bc036fc22777d897bffd97332ffb0032f845f0a1eabe279d9cb00f49e4c38adad9753e14ffec0f92fdbe9fbf8bcb0907e74dcccb63ed1958e9bf94e7841b27e877c077757991c37144fcf4adeacbfb064bec6bd021f61d7bb851c749b6d4177833a27ddfb638f6ed6de23d6db8ea4076b014724438dcf0bf4bd959c693dcee1a4a3936dd07c89a78f7e2bef12e88ad36c94f993cda16bed958ee56fbe32a192576c95c073943ddaf7ccbaed7af6def76e713f6aef53facab9d87b87be4974e5c509bd0330b0b1efea231ae5855efc1c5e984fc3c7e7983ef8dc1ec287acb50b37e877e1fd6cbf712661ee88a3bd43d9aa67abf9799e8d4e0aa6e39b992eec3fb60aacbbd0419bb4fe6b32476b063854b09d9fe7ab3e18215c9d0f6ab0efb823d84ed17d4f66db90c2755a7fe55337aaad8b928d891e24bebcd0f05033e2b381f8dfa63ff17626f1f654fe87e62bdb7aec6f33860dc7b619bcc53274bc1d1587eff38dd8aa7addbb6c7872ecd1be16af231b451c6933261bfc9e78ce173e908e37bbf2c1669fb6e6cd5906c7c6d90a956bf102dfb91db167b48fcbd96917a71cff8d9f4ee63cf8b9106fc884a276d8c2b1852b82b369aaf34f4b0b0379fc4aea616f49cdeccb1ae9b0dbd3768d7b9f329fb6c9b811f3f2c1a9a1cf19dc02eacf9ea240e6c3e9c43cbbf662ebd8423295cdb3c341beb4ae1b5063f4e281ff239c1a0cff312bfc735c927e413c5d7c98ea275f89467fcf58887f387cdacad9e778d64f119fea802f1def9a5ca359b6df2a93c525b0d52d9a77f50e710ad96c577c077943bf03b19a07c76017639cceb60ef1bb5bc75eeed77a0cb1c90e273153e974b1f5f8bc4ef983077e66447faed1d4c67e6e3f2ff061e87909d3f11cb377f51b43c7ebbbe631b357bcafc4c2c9b5b483a3438c4f62e56a3065afd1170bf121bf6d51e56d5179f576cc61aa0ffff6b8e43cc53efdc3b77e4b6669dc8cad2777a0db071ae03831de624fd8a73f591e01f7123698ae4ea93750f6853ff56bc01cbd9cb97e706f6f04cf8fae35dc05f2e697971d7f17bee4f50afb922d8e0fac5c083eb821ebc9d7f0d38a53350a338b4b824f7d7c9dda2c8c5f8e29768fe7e72c83c62ac7b117de5c625275a77a3e7bbcda260bf1826ae4843e0b70cc11dc3ead97570f7cbc0b6f9e30086e7b5b547ec333805f31f673416dd4d319c1796a02be25854fd5cfe2c3b7cd1c5d9beda32f788dd1ed32936380919f33fb7ade4f2dd67fb0467c6de0a76aaa5d9c018e97522337f6b8054b723a434fbea66a2415cf9e1d5bbb38bbba6fb8467752fee08aa3ebe78ae1bdcc49a7f21b4fea721dbff410fbe3652973c97c685f3399e7a7fa2deca24714ddfbcbd587b7c032b32f93d8d2643e43f7ed835aff6c27b1aead0e0dce3cba38761fe2bd67723f7dfd1a30bdb1205ed41d0b52c75d2a7748dc1c3e9a31e496e9051243c5ef8fcf10eb2d1278c03c31cc1370c9d995f9c12c0e8d957153b59d1a7a5615cfa6466ed68c4b7ef4ced4d6b22ffb9421da45f2b3cfc19882591a268ea5f188a638dc06c7d66f59b887df78edbcbf63291a71626c9be5a7627cf4de59725f0d7e2eded24ff314cce425ef451bae912772bd93ebc0f4e63ad81aa25d472f670fd640811a3f005ff9edf0c5bd9dfdd44cfdecf8fb83732f7e14927bca5c3f06f3372f1b5e1d5b6568fa809e9d5a6f671ffa5d2c3c9f65f67e449e634fb9adc7787defa7fc73a290e7e6674f36cfee40db7f0ce6bfa7597299ed84d0df6979713fbff4302bbeb3068b60261b87a9cd427e38d94b886043d699a37dfbf9ad7c87da7f8ef6efe8c36b602ff6d349dc58df2d99eaf1afb579ca70fd1af6d7da5abefad1f0e08ab7ccb5dcfc633b3e9275bf3a36cb377232f69de780cead495b7be820a2ab880ece90cca20f23c75e249f5c8268e1efe2ef8f14fe3e3a2bf6973358e4f0b7c91c3dcb8cd7d6f8758df88c7ea3f8fe087d97db36f3cb4f4eb9bde233806303ce8e1e43ac18860da2bb0cffc525f1c76e5eeed9e2a4e05b4ff8ea4e0f6b790c0e8ed1a1e4a039e93750c5cfe0bcbc4de84509ee8786744fdbdf68b69a219a628beabb37308faefcb20b44215d439cc27843e2d93601a2719cc9943db62742e67190d73054643671ac615ef413c3fdde8b1e73083fb0bf5ee58aba8ac93990df768dde5dd09bcddbb9a12727f12ca9e29f11cdb738a7c4d9d94ac27706c7fa5f21766ac53255dd468999daca5f7e343cbb76c8185c12811e97f3e78eda8ec96ca29cbdd47c09a4c5c181186a1ff200909ce65ac3b8a8a3eae2b32ae02aba967bf153638f735fdd83bf5b30e4d9c34c76cefec4ccd762984c57275c5741c66b2efc119debb63ae7fde55ab7dc857ccfb0912b41d3ed726d4230b9bd2936f478c85d5b6596f6f25ce4e54f6ddc2b4b9187499009545cdf6905b18aba30f73829766d35287423059d19e9634662de48ef28fa0c473b6abe9d226e76de40c0f11019b536d13f20bc009b35e897c202fa33ca6aa28801e30d46bb9938da157052b32bf4832ef317e19dd1be371e6a1024ce4e081dee7802fe80f49388c771983a7bc47b53b6c55a1d7b79807d424c22894fabdf2121108711396fe06d3d787099da6ced6e7a3857077262115f4172442002fd4bbc1dae99372d73aac73788894477cd1ae21ea6fa90d4bd348b1aa00c95179022dc7165f305e781c5bfdcd50b3f171da4efe5be7c3b381c5ad7f5d6c80ddbd572562d9a7776c76b03ec4cb893682f9cc725b1f23e22f82b31c144cd673b8833845ce4c677bc2daa0cba8b336e91fb58f7e81e231d5e901c50ca7f4d792f1f51b2cdcbd94b17886fffc231874b5c0f7f373f7b29d2290cde8f28ba39f1413f28e69aeab708f38e18c9a1b57e64054fa9f2974fc9973d4777f18cf05eb3a4ed5adcd47281204612e7010ac144cbd696ca06b2b1f7a25b6271c3007277eaf30c1b7aea91c8bb44071dd235fc711ee7609193bcef702ac7fc3d39aef1fe5f8dbff710673b981f3e52e34cc7605639c9cbf29929954fde9095f98f015ed7a795f064dd39d2793dd9643ceea5c0b3fcd3367e4ff3d3f9d3ba21bde2f869a1f3880f884f1bd930423c672a832e72f4a25b3e13c7b7a97ebb7c9af3464ef6cbd1cfaee15c4c78a08bbac094faa7c186be785f7747baf883dc59d388af65cc7f8103cfbee7a726e771a79fbc277a321f3d7806f4ffcf2ceccf3d7f7c8fa19654231ff3dfb8cbd4336ae2bdb3a0177f59b7c4e7c2c4b535887bc731d6b8a7ba9fc5c7426ec171c806e081a6b7f020011cb0ea395a9e0e7966e7591a66aee5a46a62ea2b7198b9b67b597326c9ddd4d079ecbd68b8477235ba7f1f11821fe0ddd1dfb2c62c550f5ebadce338755cf7a2732ef46e0533d0d3664d3b14c8f1e5bff84e607a8fee50aaa6c699c88b04d66ce2ca49a8466e52c35f9ca75bda655696742d79c4f684e6e6219715e3fe652a26fcb7bdecad39322bd684e425aa0fb02d2a21855f63cd504d2d73526d6c8aa6e1376b45d0cf523a75af3c6920998fc88f274fe6435cf7b6cc298d5c1dc9c045dce218e24866167a3fc8a1179e35e4d6b67af152888df59528fe35950ddeb56f6f5f03e650e0dca7d95bd322299fe18c8237bc229da04ea38690bfe1a4fcc593cdb0838ed69f1543c8c7f1d2e0e8dadac5dbb2f954447abf51ca5bba3564bcc1ed6ddafc2e677d05eba710c7ebea75998d7e7e69430e5fe40d34c6e358d87f61cf5c8bf85c299cbc4ee517cccb9ab9c3955e94617df68d9fbf9f2e9f887f167a20f786f44012e33fe7bde474b157c7bdb3427aea1cf4d429c8226e3ed399a35fe82cf2f8f00d352f46fb624db02eac175e401f467a61a50f5e287d3804391e680f83e6ca901e56cc33b5293b993c476bde7ecae3b60ecb810e1b96fa2ab708904ce0cae611d71a4f3c076a8e82eec813198f9b8ddff8e9c4e12db69d1b50b3012527c65eb1c96ce29cdd343906b2994dc7452ed4cb61961e2e6beb05e13cf898203fab6e2b5815762da88753ca982f7f814d707bc866e922f77390ad9822efd000dab93c209902cb5f8bbd6b990c3ccb6ac9d764c9afb230813c08ce3cfa9c49f023e6ab98f2aa4f9d299b2f01d43835f65e161ffd1cd1205c1f8ad432fde5b3a7c4d69d34105b72676e716630d56f946ecf331dfad461365978aec91c3ed0dc0d5d66ad277c2dff5f5a36f36512d85f76cb3ead925e823c8464bc2ef9ca16556cdb85da39ca613659923c3073b596cd04d1a8064c8136033cded973013b6227611abadcaf29a2c58d9e1a81d8aafbdfaeb92577f063139d1b91fbe59743535fd0f4ae7c1be01fb86e494dceb91d3e6dda2e67607b586a6681a45d96651c9969fae92d5723f7f281f0255d5c702f42cdf01829f239fe1820fcb0d5a33fb8bdad756c4ffeb4967b3f4274ed0dfe9e22da55f8bfffccc701b694c57679b445e537f6a184ac979ab9c34957a48b7be9026a0b1b7142e724edf564f1b98a8645cd1fa811e765f161aac7bfa1a756c457f411d1afd41c2863f5e871cade1aa8c16c72027afe915c235ccf91dffa8305aed1248f118f061901c9b2eb899ab85bb657069c4ee6e89dbb328783f0bc9d4775f81af4f369aa36d8dd5a56857d548ddcd28e0d794e18d6d8a7d5cce11b57b53ddc347981b3863e2012bbb6d5c4cf848eb1a0e73ef19169c02371fec870d79007984a8715988fd20e6514f97d5b8fbba273ba80df8933ce6b99cf0311ddf197dfae8ef4616defa5d209f45d1bf7609e8abc6f8bbc6727377fc6327fabe21bc29b4bb39e089239715f67633f1b989927dd7c3f3bf8b6b8d94fdfdf5e2df6e53095d8375bba527f33bfbfa59b3f954e5f533d0ca6c9cd9feaf1dfb6743d4cf5fd01fd3be38243bdd640cdce067e09ac5325a7a918231a81fb31eb9b8b9d5ca3a9f8f2f7d4bc4668ddd37b354b90fcab37de8ffcfd2cda1fd46c79e95e43b9ffa4e65f8bf8afa9b87873658971568737b091bc2358002cdf0a9b892d5d2fe8f32dbb07c8b9277fc37700bf7d3cd5f9c36ca725fe00fc747f05ef7bf0297d427d8ee1c14bb5e46bcc835c39cbe0fefdb55eedbb7f47e7bee2cf532e7ef5a3d3a17666ecd0b745f479bbcc88cf0dea78d8ea116a173087d58a813c67c0bdb5e50ea7f2dba1f42b61bd9ab7f5f897125da3b5c5c2fd52241ed1dac44bb55c91ddcce3a006ebc849a5c8b5ae177f679e033939b93abf77addbd5b5d57cc699b9a757efd9a2f2cb968707cf162efe6eb9b1b9c2f616a0fb750970cd1fa81db4b6cc7c25f3179f2b6bcefb4a2c44381f9ecf02c8bb6193191726de4448fcddfce2da8bd3eca9314de84de7a5c909fceba240e5fe9be5fe54924f0f77c99e434dc60a1e38f7af7c96d43654f3dab8bf208ec8a0f2082501c963872f51e0cb77b3978b2987896741ed24d2a3c547b0c234acaccf85f35ea17f32aebd987a13f3e0beef376e2a21beeb7b3ba67c8fae3b8fde9965fbadcdf24bd354259b7dfb7bc6927a8ca97bf17741e8a79aee5acebe560755e2914e083d30dca8ac2b09e33bbbc512d1f9b50df5adbfd1ff67a99a1be8d934799949553d4d37bdb188b756cfb9c7c04a62fa197b80e6d042a81f89e73d3bf6fc58d51515683e568ea5ca128209ffa997faf7e6331bed5c39e1d46cf44ac68a1b63d1f51ea875513514f45b55d37352c1fe49bcdde3fd5c37167b8d2a5885450d527c7650734df09554ca718ed735a2eb1fd8a21a4c5727df4b2ab8fb04be682d81bd48e85cd002f653993a0771b4a3fb9fe13a9b2f558d56cb2dceb0d2d38af3c2f54589ace0ef94f7b78d2d2a27d27b13ef411cbd2aa27f22efc03da1ebe4f6e35ddbaeb2a4f2c367a2f0edda2183645e3f0b7f156707b205e4e5b8703edf901709b5118ecae454d458add5f35064ea5cedf99e86f14c2cf7f197826926dadbb5c0ed6956c1e8232abf3f601832d0efd9db415fd073bd6f8876f007c2d1b11398079d975aab1b0b77bcd683b4ebae37bf43f314728f2297f6c5da7dffc894236dff5224be5d532d0a2f3351b842ed6cb41799d458d4abbc6fc0f7c122c173933a87069fa2efab1a881dbf4f6e6fb51e12cfcc2f8e365e36fcb607782c9b7d433879c5f854ab557c2138c6e33ab9dd6b47f78eae6d6843bdfcf673b3ce1ab6c36f9b33f395c5c7817583b30b262aebae307e95f2c6bd7d015eb070773d320e15d385694ebb061dc289f67ad893af54f52d7d2581deb91debc679c38db9ea3534a10fb496059651e7f193e3a65d9be5ba69dcc9a28e8e0e7c61ec668e159c1abf014ea3bbab4c18c2bf473bf45b51dbb8e2a38bad9f26d740243dc8c400d1846d2062dfd2cc2e7e87bb82f5257df4f734dafff71fa8a73d7ca7738ba7f2fca08cd98333502f908b8e78d240457b21f9e62f9ba57543fc126211b15eb048fc9d9bb8a40e7a99dfdfaa03205da177842eccd7d622f1760b449b2c244be11e49ca792e5679ece538e04b3a6ebe2c9e556436fcd285b33758026fc075a671eebc9b823f32f99217893f59426d3e5c8fe37670ace1b6c86f27b9cbd51a22c1f506c6c6b3a46199ab1f1579fa71d96f0be68a6f078733cf486e73ec25aeb3f0bebfcc06c120c88621c482cbc6d91ba8bb19573c6be633e6a62e19f3c3608cd33c7ab9567d9186863e4e56ca78f1a98d8d8d6ece3786a47e9a7132d68ce566c5e0bcdb29c9939e4682b83417aa915d716eec98374d51b097a6aa2f8da1a11b669923bc8a35d51c279fab645ee650e33d9479d42ac999952c49d0357341deedcda3b675c84336cb3ceaa589f374719e71f11eee7356e6708f13c9c82047f77dc50cc73abc335c41deaf84d6789366a220eba6f681d7e0a2670545120423d1d4256bce97a6b231245337c6fc4a233d5aea39da90b30c79c1ab98ff9819cd5c6baa3e7db2485c1dc7192c6d017a6828929bf83b9c3b8fce471957e78c7dd7544d7ef9167a69c03a569028720071faa4b603a927b0007cf671ddf5d04b971b4f4e4e6b9bd46cd8cd1bf7a29c8bd4a4ff1fdcfd68ff77d59bf6ed6f450e8e1ea7869e28e8aee542fcd84c1410dd47fb49ca6731ce62b99dc82eb8965eb205b9b6e6e7581e15b9d1c756365f02d93cbbb8260df404f8d4853b353c9dcdf7e4d6ec77b0ffca049a8fbe2ad22940b4786d410db2b3c381ad41f0776af8a58f52b5d123c415af1b2782fea6f12ce1bf89ede1db863d28bf90dc83787cb3ee7dbd5f5db1bf63ad4f948f7bf447539df47f8abaea2687d7a91e6f5ce974c57c5bf57c8941f3d275f42b3f6a0bd6613c1385a8e821fabda27a1ad4e5225ac6c4efd47a890885febac2353c1679b12fbaff07bd6f9b7d837e47a46649b35e303acf1862c3ab39e27a1d69803196bdb1ef6ef399553850f0e82982edfb1ee968df1defd7ea41cd44ec53c26b23fd0a48ff01fc7fd005be6d4eca7d2ed9795103571b3d1e6c9647f2f3c1e55e6af8e9c0dd0ece1df2df77f1db74b2ece83583fb7713df0a92c90e48e69aebd70d5e0b1d175ac59e2972bcf91485f347261ca6d9b1b7870dbe7bd418ece9d0d7cba90357f302577f5ef71be924a3c35417186b20400f429f3d5ddb73b7fb0dd1b5e2dbfd445eeacf50f0c5b6f3db90f4c13fd661579c3d43f52e1cd2fe15840303c74a18d756707d5946cadcecbab1397a9cebc610af1b9733cfae8d641fbed1579bee7f680e14315c024ea07fdf990da2619e95e4ae1e1fa6f5de7d485eba781317e16ce65a80579df842ad390dac5bbac6fd11f724a60ae84e30518790e331d0125f0c772ed2bb5209dd431ca786ced9bab1681de84e2af222849a536298e03bac26b88e5a9840be95de3e27faeefba909f8f1fc3a54cf1655ecf765918ef22faf07cf87608a7444588b9f9a7960dd9859aa5dbcd440b4a584f914ea1a99c7401c16eb403a2fd00ea3663b1deda1af3b77e3dcb20f76ef18c02f663b6def5a2f7b77671e912ceac9665c9db196b862dcd1435bc803d9bc4eeb6787684eed2cc1473289efe0abf0f62d0a9eadc787598a74bf654507c9bd2a798559f583a9d3759e9eb3369793f2f157a34721f84f24d0617f2199c849cd23e4408a428ed654efcbb581b3213db0bcb9c46cd46874437483c40430562e051f55bff10de4e1000e5c01bffc7cbfb158e6a8c8fc95fc1f7e73a3ebe60b3d83ee6b7eeaecfd033645883b801c33ceb5d568fa3e3a806d6a87631c6d11f23c133f55f6733d065b55417f6abf45315953b3667f77ef2e457452450c7716db51db1febb92d3851fd1c108dc3f8250abb3e9e8c6450270acfc51d2a7a1ad0f81c44b57eeec5ddf1bce8ba091206ee63836fd7eaf5039ecafcb5ab1719ee53e81cd07aa9785103f1662ace6342e338f44cb36e19ee7b86f436731bd8505fec5cf52da27b2e05fbb5754b1431fc4678e3ef7a7b58012f73115f7d1f1f9549bc512384776053bdf8d211c95ca9f2ae20da30b458fa9cd500c91cde40001c2d7ec7feb100ec12df93eb662a86d0f3e9cb3c41af8a22e7c9d6f15c8158f0c7f8301347d7a93e7a552631a1c9f819a8b3feced0cf026ea37b30d5e3b32bf367447bbaf924ddcb2d41f83504794244f720de788311daab57ec438d46d94c1498d90ec75af7c906451ea02286044ef77bc9399c94bbfae80a799b484f781fbf2a059cdf8f1b07fa78f4f4f527766afcdef25591de485dd7ebef694edf81631147fc5ac067260a31d4e08984d4c1b14dfcbd7e75649dec47247ccf8a7abdd9f117c20d8213406b0ab8cd912c2e832df3e0edcce489b1071f9170f1c5110ffb805aade86fc857fd9eedb4eccb9e9f7d747f101f7872ecd2bef7deeeb5d885f3054ed9d990f1770992330b1c2b64cacd6734ba024d9a681efdfd4c1fdd0afc9d029c419ee33ff51187e5ddda77d914f3c56fc03b74d6609f4dce6077ebe9d7d75c6f79cf902ef03ec7738b124364297c2efae8ff2825cf70f0dd341924173356be40770568a69d15f5a4912c8cf1e42313d0dd0ed7f9b1a75760eb1e15f40168f92202ddb1c419e5fd8af912d97bf53d53f2ab80ccff077333702ed53d207b5403a0ebf4f73afe1e700bd70e263156fc15c94dc5bd7bf61c02e998a13dd9d9106a301778faa8bf6a896715ae6f3d6ec8acad21d8927fd0b311df1d59bdb893b89623b6b4d5dd4c14bea71d3a454b7e94f92b3a0b2b778e8a6c22f80c0bfcfcd6215725f4e41bc8aac01f80568dae75be47f33482f3a2b359e8f1a68c93c03848f3da5f451e0bd0018c437f157888784a911f48d12ec6df994943e72f7be779c9ed8c63b4167bc75619addb4f5ac903b80fe2f7da829a5c10134b8d7b74ad00e9f9df45cf8b8a7652f61539c81c5bd8eb46e718177f826b407e446d1900d7ca50d16f107b4def89eeb589e30df6a4def38d96d72ec160de35efd6e36eac670dcbb1ebe325a99be258a2ae77d7b294056393033939ef9857be25a0e749a436ffaaf0371b1de3485b62c3eb9a6be7dada3b3c27011cafaead347bb76f1bbf1f1539b878685e4c53eab0e24c66c985a1bfd324574e18a845d2051fda1748ea8b53bf93bae5fbcdd780a1bf87187ec7d618d7563b61eb0f0490cf702c9c66fae9b56bfedc9f40ff581c4327913c54e883cf2648d645706fc91132c4b6263e82e5fbf8d8d2f3b824fe8846b73e3c825eac85cf30127e7dd7f018df1913dd898990f809ce3d8275d46100f4ca4ff963276e4c547467a0ce59fb37ede271b7c8b1553590cd53f7fbd533da3bf91df75326be3d6c4bd538fe82ee24396b925385f4c051335e210f6c21f1a396bdaa8c43998e093e1918062b124f8d68a83f30afa47653a71ed1b38ecefee658ffe371fd59ec47c5b5dec531ffa9635cc2fcac587323175a446712e0d8f0c91cecad85bed39ccb1e605b6351d7acb1cebcd8a3c12db2b52d147b8ec1bf4cc36f121cbc54bb044c1d46fd7dd8714c82cd8dc19f4972ee49bdfe2be85d3e07fa15af487c384b09de95df5f37e013e2a49d6b639fa80375da110d1042873b852e6742ef6e07c96196b403fb2635d60aed7960862e671c15990dfdc942f0e564e6da7131dec9b1857c690b079d33873351b878f1ede2907814471f167f77f3f35e98907542fc341fba62c895be3a7456d2357206660675b4719cc73d39ffea588bdf8e1524e89ed03041fa14c490707ce65a78ee2a560472f22ede648174af168da0c6afe087784b053318df16d5046a52b47a3e571fcf92ae3e235dd7c629f94263d07f77cb2c7c5b26217783c45d36f1b438533f83d8e44f7c2e1addf3bda6b33fe8fb5d9cebbe6fbebef57deb6dd9eebb2d5f95b60272ffda720afeffc4e3f89d279b98f78d614fe8bed33d05ce456f75dadf5ef44768dd537988e8d912dfb3aefecb558f4bc8dbadfa91a07d2f4b5ccbb01c5fbfb7edfb47d3c31a1cfa6869dd3e4e7a302b0d5b4ef7f935e926ac2d6fc11ec7b8734392730b310d4003a97e5ff8b76dffb94de5760c52412367387e2ff3def7e87eec838976f5f3d297bdf389af89d4cc2f68c1a5c8cf99a5071cd325f36762e379a5fe0fdf03bc9eee3d4ec1a7a0492cc4a011fc8238b622f6f8613ffce24e985cc2ac8b73d4873b3256af2f851aa7a0f7a40e9659c7f3c9a2c87d5e3903f5e04f08bfa4ee63dfdc777bebf7d09a2216ab922dba7d853d3cbcf08bd462d0c0462c0f0bff18eba5c92db04c5543bad8fbe817e53b2b6dc3ae699ed7b6c4ba46326edddbc6d906d6f0e0db66a21bcbcd346736f355a77db6ecf7ea92b5635d6653c4e155eb7aaffc9da57e34d6242d96cc95a47d2f99503012f42f3f877ae94817a4e52451d9cef339b78817ef0d19d957a2c57899cf87f315d47daad6295d238571e58f557c9d4b751e02e3ad46c3c576fcd21e6f3efc588dae1faba43d5ebe10e78c292cd98ef1de47c30f63ce75ad4f7b5f328b3ce818cfe196c6b8737dcbed26d356aad4b1be7cbe72f28f95d9315e3c5cbc2f871f66c7fab6aab05cc5c38ef5094b4312e62ba9737df37cf1deb55f6de50ce6f9e8dab1be97e5763498bf77ed779e7dac146e9eb4c75bac8cc1623cee80df3c5f6e17d2d240b204c8e0012d83131e87680ceb153da80b9909df0188d9d290fe6ae2be41da4ebd78e6e2eaa766e84a38e7aacdcbc8fd37ddc3179207db3ad511e8b044749406bfc33e13fa77c2d3883d01dbfcebbf2b9353d3965ff172960f034e021fc494f0a19958c6161f95a27e8f787d4cb7ab3bfc6d7341e2a5c4af1195327e8d1fdadcb8df875dfa7a8f59e1cfaffca87dbeb96be993bc2f2b51bca5d23bd15943ed3a453c36603cdca33342f22e8e0956cbbf3f4dfc7c60ab47a2e3e6a48e108cf981e859f5373fc7fd191ff11aec8fb7cdc4df25458dbb7bebc3f5a0741cd3abeeb45bb12ed71a6e3d4e4b4c53556bb4bef3fd18af37797e8d2ee009f8b97c251afd56c490f5d3dbd2b1d5d0b3e767fc3bc451a7e8ffddf00a705c35c9e1b8c70f319ee1b8099ca387f4a3228e79b4af8dbb2bee209e1fe7942ff9828fd0eb24bffd78ff0ea9d16c0fb4cb9a33cff760d17e16afabf97d378c245c3b9ae5198f3b255ef46378a1b568a46e18ae3d97d1b0132a1c477883ce4d3c6e0ab84c33e1d678f7b72237d6d4923dbb6186f665cafcaa662742e738a9d34ed3568f680db6a85cdc01a2973ce3439fc9d16f4ce3886d89e4f73c0987e2aef0c42f49e430d35adbfb73902679007daa0f24c6758861a6c3591a1e5b5fe3137842e61be62ed42768c57f5c3d6e98bb0f7c6b4d7916d13c74977dce38afed05d10b368767e85e4d37c031277b5b54c918100384d7bcda63fe2ae2388a623e9733999565e63ed2d9f5cd819cd186e011b5a7e1ceb5b5b16b6be1daba25ee984dfcc102e9e18d78843b9f873e0bfc21350d7eb6f75a0c877081f8df34488231d2752403fafee99bc3e333be27abd37b61eecbfa7a12b4fddcf5774a5d1de73e95b16c0ee073a1df813f11e23e880e3c762d370cac5ba11b1f483c27c9bf2236a604e9b1ee81d807dfd119426ff2e2f718fa27425f7dbc263af7ca7cc1f657fc7e4bee91f8b0113385e927e4456b996bbd50f6b0e4e84ed404621148cd28f21be9d7d8a93774f4bcaded87f6c990581d819f812dbf98af112f86615bc6f72f21b6d13c75e9f62d5986d44da06c0168fdc5df9dba5a977e4ecd792c6ced4d1f42b1beaebb5ff9cd89ed3aa29eafeb8f073a7eb4d2a7027d6926448752b00c122d90e6813e905be857cfd6ec23b46cac5bc3f3bf65c3ee18f758d9956b714e74cc4ac32e45dd7123392359b55ba6c5f70bebfe700fc83ca310c9ddd8c68ffdc2c49e5e8fcfcaae1bc75677a44f5f3ed521360be4e1d65d2fe46fd2bbb7e9d3a368d77e6d69b16b0ddf295f986737e94fcd26803f85eddc93933c90cdb329f373e20b343c2e28ec2acfd91d2714ed29d74efa958a055f2def6ef177e5e3321a7e99d26edef37b8f7c51d809663bf7e00fccd093935792d37e766d17e03e4ba5d81ddf0efe4003bd64dabb06b00f937e461ae42ffed85e45fc4d4003ebf617dbc7b51e32cc67f073f77deb441720755c716e0c837b4cee96c08b0deab767c672a9fbf3788d755e788f7f61ddb4a8490bb253156702311da3aef8fde61a0bd81f3c6ee8cd25e60c3164b41fa92316bf8513f53d96ef3e231f1534f3e776b91a0e5cbc8979f2625c670f62a1a973b27221005b2a7ae69edc8cef58e1f3c6b6b8e2ae611c2ae6194f65faaca0b7e631b0d8b30e3ce789b36bd09f591a1e5c594bbc98ccb19b9fd7489f9c9831ce2b25e31bcba7e4ce82f6405e07ee3d5ee70513d29bb816b738da53f1f7fbaf017354c873c0d3e5d61a5fcbdf3bd65fd6e169f1d09baa89f59848b43fdd586e14c84da8e0fc9109fc541fe6d07f14c9bfc03b8f9d7e140aaf5b3125d46fb8cee7f336e8dcb5718e46cb1682e15a8f1b15432ad721fc0539c4f8b923c4e1929e7e4b729ee09323bde55bbf65550d768bab6062ebf1e69bc471df95977be4f9277d50c5feb1efd8702f7eca86c1a4b4dfd4f37a281a306bc4373ce06935ded5f01715bff5c45fba173f1aed895fe750c461ba299f7996c440fc03fb7603ba4b7f971f373607f91db575daf9b8aa579509df6bfdf8fb811f10d3786aecd65cecdbcd62f9de9c100c87a22fc5684fbf4b6af93de32fc1b19cd2355a820f2890c9be7c65db11ffd13d06b617a4c9abd6d80fe45994b132436e6d2f58c7ba1dbe52dc7b78164b19e21bc57b5399c2956858c62e3dabdb35d7007524d07862183bb6169ab21461d9a6360fa1db2f8f6d3478bf2446f0216cefd012fcc171a882afc46ae8c7644dd235ea8ad5bac377b8b57d902b7c04f91f6cb1f764ae652a65ff17eeb8cf57b1769c33f0ec9ea54c99b887af98de53d35e6574d9aadea147565cc288a225cab9aaa9fcaced05ebb0b8c71ba6aff4787e2a9d9bfef23bb0a373deb0ce00fe0515f79b2334b11c338367dee8dfabfa7188568e7f4f7be374eec1158f47cf65e792677352dbf6f223bc946257c263573969cd33bc9239effb7c7f826fe49c1af30cc9392deff040a8790d3cfdd9bbf8387e1f7f1ec7372f429f33909e3586fa0bffdb3b529bf3ffbff469c87a969afcaf79c36a679e9cd4fcbffc2111f05ad2e1ff562e6acdbbaccb77297f2531cdcfc2a6890767b73cdbba3e5a9f87e80ed193bc485633d7927e3ff6f1dcf117f4e91e3fb09be118ec52ef7da473947a3bd4b4ebb51dd136601a66e03f296c7caa8bf5d4da7877ed29fd63cd716e4c6bbc8e3cbb3bb098a861d0a8f380744da7d79745d99fcab85688d53f2ab276705317ee2cae3b363e53b1fc47920f50dad1bd419053f0cd8b779c524fbd6e2a79a798abc4ed6315e7cf3394dd138dddca8d9855f91246cfb3c5f7c732d6bca84d40c701c3770d5db05c5b4d973d76fa42c91ebb6346eacf1b387600fb9e2d93c1b10b9def139f30d58f63d78eb9c6b840c7775479f3041f6ab122547ecb4f6258497c359d0771edb74f8a4283c617fe812475a3ebc6e36e383e47bf025d2cfe5fe0c892e3596fb73c2a727ca4ed3b3311ea9e716b8b677da6f81ee77675ffd6f34e02ba72b9ae7bb48bae6d50ab3350d63568dcb167645f4a87b7b979912ff684ee4ef3aad1f523795e2eb6399003eefb02a2a77d01d14f7d01dd7490c68b515167e427be629c435cd123621384719e862735dec593b57141ebeec94b8ead668e9d181e43d3f2305e5b6e8ae9e8f0e2c9cb2779350d93611230782f9ffa5d793984ba39a676a1fd6e538a5ecf5224733fc9c76bf8857dd3682ff7e130f4c8b390436eebf55872a8eb353119d7406b72f6ddf7fe27eb7b52efa27043d1b1bc49fb29a674beb674cc67e2e876d7e6d63a23c80325758b86507fc14fa5219611c63f8cf5c09f3edfcf4f700fedf359f91cd3a1e76238f09ecd23d20d7fa2d7e3f7e8353ead0716bc03cb6dff1d8e94f29d95cf8fcabbf9a4ada1caa3ff037c0419a9957f2597be901a0d9beacd35aa3fb287fc0b78e595b21bcb54bd5db1dcf7740c0ec6b7524ef1e6d975b330db326c370e61bbc47cfb28bfbe794737e1b43376ed2e2d607e440ba83d2dc4eb06f22e6a310c6ee6716c23a62eacf86cc7fa66cfe46a661d3149777175fe135ca5e537880d41728acf99e7407c3eeeeadf38f3c5c39a0af768cd1d7d3bc534db94f91abdb1d8fbb160cd0f25bf2138b13f3b13e3276752e854efde009d03da5f4b8ffc082c36726df5d3ad7cabfb1f9d17f193adb11db8a86d569ffbfdb859eba3df9f3ad406fa03f9a2a6a73fe5335fff8807e00fa963847ddbfd7ed383972e8e81a5257e1652fefcf80fe447fc41773748934b602f1a7a7de7993575ff9fddaffbf3e2b884fbb68b7f733e900371bd68cade429f2dd6bdf67f729eed3b5ef5b42176c37f6bdcd095b572cc1fcb3cd487d086576582f8b87bf006665ee0de0aff76275ff6214d80bafbdde7fe289ee7ce670267d4b966b0953cf22374aff57efc41cf3bff91dc87f324458a47b4f4dc61552742bc1fa3d3fce09a244f8c2be1bb30d5cb9a64c6da6213e86d0bfdd5ff84b642fc19d4e02962d11cee9638b6fa477b79e833a23ebdf6a0dda28ca9c3b6b6a2be068e59f8913c7b778ed28eb8ffb14f15e3c5ae168b5ad5ff80d8a8869e4dd18b7f670e6cb7fd035c6be41c37603476ecc5de49f9d04f97ffd43e52b71fa5adf8df7c2dab17c756e359aa658eedd7eceeff9d6e0afa38a9fd02b6867fbacf1fe0016dc3fa39efe98ff1c4f0fb8f61568b69aaeb453fa73d7762c0eec77cfd9c2ffc0feee9ff2bcea7eddf40788dfb2640cd0c4f3677ae358ced01a98b447809f489783a77895e23f1210dd4f0cbe0d960dc8ad5dc7f65b51a53e5ff1fe5d1343f3fe12d74dee963fdfc6e4c67af1cf2c358c71dd21f570393d15b3ac5cf7d6f777c624fc443b6eec19df8c8d6b3f7c66fd801eef0aee6bdeb8b77c7785d1f97a2d577ceadb083dd5befbfae23935ce4d06724a59edbf142c338c731bfc356fe47191b258efe4f59aba11b267bc75e084d5c2231f2a4065c72c7875ef613beb30f1cfb063836c6f68f590afdbfd09d2e72025e2b9fdbe2125843461199cd5c87d8ea936337f28464ede2edb4ad63ab88ae3fb07d17b96535fdbfbc4fb45eaab5e244e2cd341bddeed25b0cc727ce24413231ebca663ea5fc8bd367e86565cf9a18b1e4dacce27335e6f53fcd4920f991b8164a51ab582eeffeb9a8d7477873bb8fa4e8a48f785a455b20bee6e2376ccc4fc40c5775d45b632dbcf55d9bdebf125f5fd54d199bf2d234e7a6c4bfeb634947ffae98dba791fce13a7a79d67d196355c2a11dc35fc1e8baf9825a9b00f3d7eafea1bbd4471f7bf5c6d84fa541175dbdc3a32e5ea2263e97bc627b28cd9336bde78e69c55dffef5d3de0d9bcb0e765aa8ebac154cc43ab36132d673dce51acf7a8481717cf162e5e6a9e419718b398063ea8a183e7a5e36fc21a8c3af654f667752c2dd6703edc7c6d2f18a8e11385506f07cece84ba6dc44eca9f8dd4ccd7f6a1439f2274a4cef75b7133540dbfaa4e1591234df24c7f1ec6c33cc5cef3a36b92d167a9b574d582e69baa970e5bf5c91cba2e19971c3dc93c7b16c48bfca4ae5758d6f4a2ea04167859c63915beb27e5ad0c8a17c2c5b1535a7663b35f12c9e730d5cf37445e009713ba29ab9f6e2f0959a90e7d8becb6d1af054ae6539a774f4a89c4b3f0bfbd6dfa68d98c7de950397544c00ba2720df49d7c89493936bdd0e1eecab571e7e62ece57eaa8f52f54efccb93f99d8f6d63342da9d7f27a98b7dca83fb7adfa866ae3b5a5993ec8a6cfe5f5121cc03ca07e770fcfd6c57b48fb76452efa33bc82920976e6d17bff71cdb3f65d27fce25b0fe91eaba57fe2512e3bbab78dfcc1b2966a6dfdf57e4bfde7a85fcb7aa9359a46cf71673d8f6a3191b5d1b218d86d8b391ff4d001fdff4f79df03dc5c54fa53130f8e4fe3d89d39ecb5753b9ad6f0f41fcc93af659ef5c07f53cef7a3bb56f5f17643249ffec9fdfa176a4ffeaf78542bd68fb6e336e7e9b029f7c34f0cdbb53fc6450d148daa6372c5f9bd1846cd5adcd7defaa2e2b3733e55a782ea0d76e271dc2886f95715aff4fa4cfceb47bf5de62eac5bef8db5d0e7c2c8e3a4cc154167e8d355feb4ee241dfbf04cedc906ad24f5dab311af34fa329574b35e5be6dbe6486fc1c97cdf588b14a45063fa0f6a8614ebb8cfa7fe9bdad7f76aec16ebfa073576eff3106c17ea3ff7a7d643c9f2c5193caea38361dbacc9d85d3f85d8e65a3843c5e06b858cfa3fa94f427a3ed6f1ae66877c54fff0ae9c5893633b631c1332e7d94fcd93377093a5753b563a809af7fb8fdbb23fe117478fe3af763e6ee7be60d87ecf1fe57fe0e7ca3ee1d57b64bd63e85d7054e445e8c9b7c8b116bf1bcf6dcb1ad93d3959ff764d187acd7f92d3e0d8ea0ee3e2e96e3c1ddd8f11ea01e07e24df6b7df4d6db1752e2eff683a4d682e84c0eb9ff7aab47e4f73fb0af6da99ae50f7d5fce0ff8d8c35a2d5837796dd98aeed476c7b23539ebd5bec29587ef609ab2446799eff199deade7d6637bebb20576e45975e1c2acd9c384e44d3768cc2f5c7be2daf87e81eeced37883ed73781e72df5b73dfab236173b78b3710bee77a88efb5f4d661577fda662395b4eccf75c99ff0119ca35ed781a9bca4062fb823a7f5c8b615fef7f2ddd1bedda33eecaa477724f55ece2ebe4ff59a30b0f685eca7fca9acd5f7a08e55479db002fe8fe3d4e43aaffd88888ccb408c72b9fe264fc67dc59afd64ba3f052c2bda613cfdcef372b47ac70f76df075de97677728d260cae99d3a7f7513ea04ef92aefb76350fda2901e9479dc0dfb2a093ecedffb6d1dff8a7d43fcb94de3ff43f5f7faf855473fa40e9ed3ad93b5fa2df5ce372ecfb4b34f53ff7b66bcb6b54b67ff22eab3b6173af4e12c7b5f998ffd24554db2a267d8a6d07dfa9fa5f44e89cf5ccb011e43f46addb59c2e1b7fe173623c8e473247660fd404e7f591fa9926fabbc3c65aab9b565be7bf52ef10d193f518f741007a8f7bb0a99a78a5fbb195fa063c2ff107f7fd1eff4d20a6dc4b1789568cd7f33c8907adf6d5b0f7d5d6f0ac5fb6eeeba6f7f8a3182eaa17ff84865395eb6a9a55bf89fbb1894ff8b9ff783d656efb0358637c78b29e00c65bec83267e8d72ce567e163e3f1bd7557f12c6c2c14334cb1a6e5da386d7e53c7df69c6e3a8573f0687c82f5f4acb5816b8ff0a98dcf383eba9ce74fd67a4f26e9c5bd0767dc738e5d77a1738e9e7d34fb28ddc1b5bb7436a1f80081618d671f5cf18ad605b51ffbcea4eca935c63138aeadb47bb3b4681235ef3d5a04f1fde6c58d84835bf5c3a6fa696877fc73cdf591fb29aa054f23b1f56cd9b36f46eae6933d6fa699e02b118bebc577c841ff369e35d7baeeedb1d64d372a99f11e7cefe18414bb946cd0db7ba4cbbed16f77bfaf1f12ff4159dbf3093da9eae356f5c0abfa2e3e1f2bb2ac8f538d417aa254fd15bbcfeb336bf6266d7d5ea9b3c867291bfa0dfb73b9171172c79e88eb2ae207f15a75435b387612e1b89962aeeb99c6a519d597b2ac2bd2f5ac54d69b28d6fc59c6cc828da0586b5567a93676b33f66d6374fa91f15bd2d9eecb5d2a057bdb42cec80cf73b97955bdf3676b5c147b42721c7dde4fe64b55cfbf3e579faf01eba81ed745c60bd7d630f1e304e905142c96f4d942dc03fd7b515fa68c0bcbf7144d2a63fd36dff41d6c9fe561fab88fc15d3b615fec6457be52ed0e3f2b4350fdfe3af58bbb74fc5e2e897af0d2e5be410bdf2bbad21197daea6bd08247118b4aee5ee98f28f0e6debb742d62fc7e9faca2c777fc167d7648accf78327ff1255293b6c62f1a67f45cedf3625f94bdb0838688d7e6ddbbff3c7ee689da41e31a2f807e1762c55f28ff4feb3ba2b791dc87a296d1e82f453a41cf6e9b1b3f313fb179b6ec91940df4e9de544ff83fb2ebb3fe948773fe2cb68bf69b5434b3b017af52e98479bd74f4643574b8e3e39c8dbb79f4a54f3174e55afc6225ff8942c37ff45c1c6a37eca5ccc5f5c6bc67eb34fcb7be1b1a4e68ac85677349007c9db26f3daceb4cd38ca7f2627ee6dba1df6bdbc6fae8d30f72882bfe47db6f2b1c78e4c3a13e7fec3beab8333fb143533022f80ab8f64acef5b9b37b42167a548ffea77ec82e9a59f8859adf57785f9ed71ff9a094067dad681b2d9b52639b8ffc98f853d1e97bbe29ead367ebe979a7077ebd765c02c77e3b6f09cf3ef9e90fe05a8b97a8f1ed3beb9480eedcc31dcaefd71cbb37aee841bdc17eb8fca05e65e11f23b1bdff96dd77b0b634665dc875bbe0e04eb4fd4c14f6ae95ecd693d2de5bfc7da4f26eca9eec943e960793a4d29b770be6cb22b5446529f719e06d95de5c7d073532bd41d127bb789ffeae3faeafe75c48bdce843306dab08895a9eb2b61b2b6827df0bedfac65f3e07221037e3c31acf235c15658e51a15cf4df5eb26e0921872c126186e8fde25cf1f9409ee038260d3776fefc6ea49d708ed0bf796a763f28e9bb5b57cedf115eca7b877c610c7e8698720e93c1fa4471ed198580e823e6399c7f174ffb566fed8c167a116d390c48a357ab1f4c624d17eb0bfbae312ddccb102f8ff4cbce72fc29f0e9ff3ddd8e52a6eb1c31ff6f43eae9dbcf481cfac09c307718df76ae5b67baff5c60d4e8ef77cc9f7d7d415a349c5a0407c25eec35ad40dfb491e16896d554b9db5add3b9070f6a60f7c668e15a97a44f0ef14114fd80215e9afaed418fbf6e1e7e4717a6ed1b40b3a8babecfea81a5ce0cb9e97d39d8ab639f7dbf659f2f6b3a157e511dfb9befe31e6587a5fd26ef6f9d7dfeb49d1aba1cfcbfeaf3f7e0ee50bcff8eec344cd7d60deaf4fea3b3aa74f49abd16ebd7d77f6cdf28fb324d8e94ad83b25fb5ed05af2d5ce9cfb1e4efd9b4baecbaf77a53d3b2137dcf6a78da6ddf68c3eeae7ff16e1c90afa488ff40cede2f453e255f2b1a5e459ef39071ace4ecdaaaea8a1bc477a096d3a3e75a71de75bde230d547af7db12d4fd027c3e3f8e312e9d9cfc4215374a9e1673807327ff16435f4e384712d36aff94cef9cf973f139f77a8b52f2038ebd4a29dadf884de8b289fe7bb9a67f9e63d3131f876d684d39f742fb1210aed3f9c777f245e81a4c548fd7f2bbaa667a97ff81ae9fdefafdbae9387f98bff93dd2bdca7a58451c4c15cf5de6ea69967608643eab3ddf91e3d2f15b77bc34654375d36407eba3fbd96535f8bcd6ebc777cb2bb47d9f3e03b8d3b274f05233d3910c3ba97a1654be76223bf7c2bc27eefb5e4cfc137e8f06ac8a98784477d2b5e577e47ff6e6a7e7aead957eada97ca75f855c9d2be56f792c8f75c85c5d3068e62f3dee4946cba3615f0c54476c70470d96869fb7a88984eb0916fe8a27f6dab197fe7cefc65d7ba68ed35d9bae9639766014b4b2c8372de749001e6767606648770fc4f67dbf1f4f7ce7ecc83d87736be695d2727095672cb972c27803e5a99a160dfda07cf7a9fe69f5777a6bc674aced6e6cae537fb6658f2d69df3dddf05f89ddefc873eb96c53bf9664fce32dd13f3a99a17c57edbf970057fe8a6bfbdfec17cdfff5bf6d45874dc45fb7c685fe533f19effc0f64ec780821ed5ee91f3743ef8bf999fde556bf74edcfd0359b0bfd6d313f3d4ea1d3eac2dd55b37a9564be3b12ef90ff6d488c1c8db79bff7e2706afdfb705f535c9ff9ad1e2353f5e87b58bb99b6ab5263585c1274c6bcd4f44a1cfff0482ebd13e7d0d2c75ab2504f2c128e6368fba148dd746cb394ae11c61bd35722e1e045f7e26c1ef8d59fc40d805ba577d7fa2cf7c361e1d9a28ac736af91dd9bb3d4edfff8276ba36a1b3decfbf64fe659d6e3a3f68d78a93fafc521fe837c5b79987c4d2abbbc979a2f8154f5bfbe93ebdeb00925b9919aa13b890bb9048dbb6ad994fb7aa6d7d631a463e8c0aedc4b1f6a7ac2bdbcade53fcfd7ead647ff277e971e593c5edbee8a7abeee3f20fe8d8fa85acbf7e4baa1741588c7a76a9c15cf1dca7dbdef0bdfc8a377091ce2cd77e59be8aba75387617516940fe1991e756dfba52daa0826504708d758702afd93925bb03da4db8782f4d27b39a64fda60c81eb58bc7dd22c756bfd1f785ddcb16d5ca36232a10377567ce1e783d8e8368f81a4b5834be7f9cdf5a3e5fd944fb6cfd0fe3162664fd49011ba5b52e13e95763a47bddcd6bedb00db6e5f2bbb9183fb16d4ed4c4dd96fb8e2bb94b2bce16dfddd5bee6abfcbee7ef699d47610ffda11d98a253ffd8dedbb8678df1681fc8c5e712423749bdc654bd0413ede299d7e86eeecc53f84ef0242ef3f27ef24ec17b7fe86fe89451ffd007d4e0998df1281972e90d160772d6457e42e40d34c6e3585fb9d7636ec21ceeddb73e7bf7547c7477eabcb4dc4343a7c2cf0c79a87353d411c4fd3bcfb63c047cace21c5a31ab45dd931aadb7591ec902e81cf329b19bcdc432afb2c653e8f1aa5a69bd35860047709ec07f511b057f0adf80cd25f90a6af569898beddeadfa4af0793edff3e87152bcb6863b90a72766fe11a13b77bb389676f0d2c0571ed80a0a7fee8f6a6ac668fc8e1eb364cc7e9b5b2d67efe0332eebc9b7e14ae6435736e36965e7bc4fdbca1808fe6c0cccadc399796553eceba7f0e7f93324df3126b150b96b6b2a3a437fe7864dbafc3c2da1f25026c1c14bb54b50d6a87e1c130bba5e0187843ff80caed3e95afd79319d6354eba07dc77f7e36cd8fbc38ba9694e990c3a5728e75ddaf2da8c5f293984daa9eeb8275b845e20fe615befd5b71a50febd33f5baf177f486d451a570eeea378be7bb84a7e9b89a3dbfc7d74edf583fea06fb4c70d5781b5d8baf6a23f2fabbf6ecef7d336ce7bf46a877541242fff57b6d9fedc34feacd96a466ce0cfdde58a3e27a56e7c37b7b4a4c700a3c09ebf2a4847807955a863fd4feab1503d7a5bf503685cf88ff55e1253790bbd34601d2b482af908ec9273c71aee024bdae1f87bf86ee9588bdfe8d9a64fd590a5ed9a93762ed47d24b6e1d4cc7c0ecb4435ff6bf9fd75e359d2d567a4ebda38255fa56d8e0dfdc942f0e564e6daf1919c075537abf8fbba216752ea72a5dfb8f1fd9fd64641b276902671511b2548a5636019af8d7a2ebd3a42c3ded4ba4fc40e4bdf29d0cbbbed5446adf6e667d6b9f676fd0cda4f3c608ead5a34541c5aa5f7366285745ccf4fa9f4c6c77b42e79cf219cecf057e95f83bf5e2c7a5be0f7b689e15c48488218c8be4c51e1fc5c3ba89841766335168d53c2ffde514fe7f44edefaab8032174b853e87240035bdf55cfb989bf5b207afcdabe070d7c5fed1bf80ff19dbf14993fc3da2b581732dc11fd46e85f89831e379400ae113ea33b75153bed8d748d6a4d4ee2d54fea53e3f57dafedc582e443830fbb1533f7c375fc51adec9eb5e0da2346af9db193cea649aeedcca33749e680873f949fefd544bd9bb7fc1fc6a2dca38165dc4d5f7f863bfef73f796716b7e23f7aea633feabd5cf9ced4c8eda4c15351a2e00b757b7e126372e8ef59b109bbfcfadf93eb4ffcf277c76fe102d4b6fa412c84de6f5f2ff0de95cdd4b1cd632061d980aa0337762d370cac5b116fde59a3958c73bf1e6b6abef8329f05a21017632ae3d2067176edf0ea0d5406f1a2c2de80745a2f528e4a14b048e7f3075ab6b6168c9ae3ba542b4efddbb516ccaca80361c2fa137fa70da732990feab35e239be513a473b913f348fa13fc02384c904e6f02dff3776602b610baee95c4177ce61de2f25bbd9270ed675a0e2ffa9d00cc64330be424f1b390716c75e7dacba332213d167444eb71ff5aac6396b97e50738fea75707607da1e7d8f73718e4427d5129f5b646b5b286242308d614f077b7544ebc89d817af027882e0c136f679e5c5bad7a6bdffb1df08cd83b322176edc5d64f932bc475a48b8b97ba0777606665ef62dce3eb17b119f8ca0ec315c9336beba53157dc9c7be0a709d31a6bcc47ebd4dc06e210e1ccc14b4db0bbb9b6ca7ce9143ceb7038af39733813eb6b9eae8e9b6f5de0e95ab4342dc735f0d0bc0b34063923ed62943212c8430787a5cf0ef68a7958f57d6bad6bcbcc711de905c2b12dc0b016cb80cf3a9079e23f8b8bb141c65a5b8be2fb3edcc2b5a9272aeb0c103cc12f82e8d9b6c813f9c8e8fb5adbeb2fc49b9509b36fe07de65ad216e23d276ae2dbe6c14f8dbd8ae44d7407b35a9de56f74479cc192d4284ca02e8a371074d796d8b5ad265a4163c4b078b66663b407003ff0c5c31dabcd0976da13c0ca9eef8a75d277eec19c1727dd1f886f87d872f9688d6552f4dbb9461ff4d15fe4f757b8dbc538effb8dc7a97f6378b11d6be8a243689ceb86e024e75837dce72ec3f11ae87b454ec87ae0fb4f273d24ce60796e9df524dea3f967a2f01bf4a29a3e82efdb4c146af7b8a06b240e225d5b01eba7503ffb95dcb3a33209b2b5add59e075d3613f8d2de9621381d3cb45ea8f95ad0cdac76a7102c7b6083f398969c74f4c68bbd6b2d7e4fa91a4e335168e0700523450fabba543a55a3cae253a571afa618b6cc1adda70cc7c841dc87817591a9748d969c74f6529ec179f1d78da3939cab4c08d187a6efb6a8603874ed69205c905e85e056bf53aa4eeedadee7cca31b91fc7591da93bd483cd9c1b45c0e336fe0e3b84f494ddcd4cc5ca8c155ad19cb90c2deb1176775b0dc38a999789170f0d2845983fcb2485c71745226a456a2186fd6b2947b51c028b29ab8d60bc9a137e36a4f555cba53d8cfc510e45f8f73c89a4b7fc605e325d2e570edc39ee72aba9a5ca329dc250ce78f48c85deb96a2b9b14c40f151893f786998203ee067611e582ae1b788969957f04fc2df150ccbfe6364cf4bee16fa03d22b4cba46d5590d0bfd13fb06628c8bcdb853a44ff9293f2071c8408b88aeb5b7457585fd0a42f2057da61739ac5b66597fb0dcb856c2ac653343b02ef473c4939d9ace70dd00de49b8be54cffac9d92c5887acb3ce2b463cc517896c62eceb306aefb5c96f709f2feabe6df7e83b4c9f567b04f388ace7a8c8e619fa1e147483c8053351a8f87611df476ac2b869b20b1a3488d429ad781bb5bea95ed13d8837a274b115e76c3eb3bbbfef6beb6dc05379afed07d17ac2b3f96fc4af6ab0cb219fabe44b06912b3a72d474cc1fb55acd54657202f918f123840f6b5bcba7129143c01643f867dddf86796934daccb2b7cd52176224e722fc726c75a8c82cd2910e5eea6f0a3947914c7d250a8c07f44abd78dc2d71ac97821f40edb2b5b54032c0d985fb22306bd928dfc73ac0db057a456642ea58c911e9b881fcb6f1643e74c521d0bbf2b9f178e3ca09c6e354cabe74e184f4a3b535dc2993627f8269c4b75c99681745ee7fbe9a9b8601f034989fb60360f958c0749afade47345e9618a875a00b0307ddbfdad8f05e6dcf785d6047c1fba2e5f8f28c6afd3b8afab4242717eaa8bcaf6573bbce4abfe20acbb1853cf342ebff94bff231af28eacc56f832fcc6729176b1d937d02b2b9d2748b0be46eeb4c1a7d57bf1619602cd2dc72c7a2f15b253c32e8edf1b13bb6a0c3523372a97c46a36fa5dd9de1b326c9ac44b0eec33bfa7f91170d7b517c7b53564669676f039a01727e80faf0bb92f4b5b5767598c0f2ca9ef36bccc6ce118d88bab3731f396bfbab2919fc1cf52bf27dbb216f1c4cc0bfcad6a811a88feb2b81e28ba134b5c4f41364387dbd4f16ca2ed1d7bb909ec45e2e373bfccb2e26c356c03b2d5c5da0e0f5ef4a777e38af15b1722a49fbb96742ee4282403a231c04690fae0eb0be43029df97ca35ed1d7bbe71ac5b86734885c8b5cc736123afdddb96ee1a16b87a54a4d3af02d648a6fb8846bb1e3be06e261536bc5257a67b9bf4e4896d4a5a58bc0b7a02b197b7fc1152c36e23d7fc3cdfa52e5cda3a6f0d7b8940fbb9e9e7e1ec5ae323b907c7fc153189ac9f5e311da66c4874fcb653d79bce1ef1b5163cc2674fac9fde02b007d662e6883d17d7a3edeaf5423d5fe1387e978ab76bddbfd2be5ee0696e0dcccc93983aecc5d1a682db1fac01703c49d11d41f798e0d0666dcf31af001e73dd3896169367289cc077b286cb6290237dc7e7cc2c407ba0d683eeb5630de34a367dd9ac06dadeb5d501927167222df31e92c69a763ed253768bc4dfb989bf9b6f022e61d622e603347e53e783ee54e8a54bd099fddd92da539d7fcc9ec48be2f915a7e6aead72aeadf69e0bb10dd765b16858d8463eabbd2cbcc0568fb679eaa5d976bbcfc0af4e7bef96be976c0ddf7fbc1eecb3ebb2cf809fa5f01535e8a8ea8ad7865dbc9281f0ba086c897fabb863d04fb6f2959eb17f5db84bcb1abe849fd0b346dfb74e9a86e8469b9eedcccc7b3fd5610b363b0aefb3eabc7e8043bfeedccddabd43f733e0a403910121efa27e0f417e043fdb0cd1018bbd04a901cf34ee476d5c77a75e3cbd7e37d4c17ce3516b059d13d126e0bf38d605f3c3d63acf14dd01bd8e1ea74d4bb5c4934dc6d5e97bbef07af10ce045d3b52770a781736a56f09a4a3fa275810e1cad64c7862c08f5fc8ab8b31abed7f863d6f61b75f13b123fad537c2c5710cf7b277ae1b1e94f417796c8a380a7f308f85eeb39c7d6183f4da2c0d60a5f7f397eedb7bc03c74bfc827ef61787d4ab9ba5ed786f75503cebd7e4e7fafe368ddf30cd76e5e546e5b43090c727351390bc7f46e7816d4a1af884eafb007c6fea04a1cb36e8ba2c31c1443d383b9371ed798b665732f829f9b2e7fbfa1cf119e1bd6649db7523d60cceb6811b753f5cc9c770be0935ee14ecd1a3a3525bdbc2833125a6c9d3b10fa387c697fc6cb7c81ca0416d5a05b27c693f15427f909c1d023fd0e5915c220f2f8128e42e929b319fdd06f682f138a60ef7267c45a9dce75a96f2da3ec580cce51f5a77bfc4ab217966c42befe37eb985d4d670acdb91a2a3323a93a5358c0dd2cbacfaad1953f4a377f745de4ec76f6dbedfc50b4a1af103febbba8f9b755a3a4cbd812a39d662dfe8cb8274efd61a0b7a7c675fb5f12dee947c994cfbdcf058b16bdd12a4939158b6ac25cf96320d2d1b6299da624bd83ca0f1238abef7dd871a4f2871d1e3702c4b4f2d91766c2da2854fea04744c040d63b09d52fbd5d0bc8c7476a5a23e6af55be3cc2afe1775d0140ab766699ffe51a33d70afefd39186ec51ddc78b4774917f02bb2abe8e8c3ba1644ce213accb02608fa9ee440cf011bc54d3b12c6356bf45755aecddb99b88f754ef0d2f5e4cecf094ec59d2d2b24e78c7fa2675bafcbdaad35857e6b7b8deeaf2eca47cfca543cc7ae2a5dafb5a4e8eae18e6b46da9a4e5d10872b44ab8929a3deaa0880df48f941d0afb8768dc29f277a2a63cdbaa875d9fd3642a3e5c3d5bd8147e81efbcf01bbe2b555c8138acd94889df6f55f23ae061d0e32127b1f348360b838996ad2d950d6488b9faa69f9b25b4bf70487c13cb23b6fd99b92727e74064e3b5bdc0fd8da18fbbb121bec70be2d14e9ac4339bf62d2e609f94fcf45ac83d26f63d9e0d7a0de0bf986358d371598fdfc135c0889fd2156fc5bc40d31eec15f098e46bde022bc95c6b89d7007c7cdff0a50e97f45a700cc570577f5ff3bd1ddcedf24cba62427acee5d7b77e6bc38dc637993f2f898c0cf460c0b461d678bef0bb205e428d5fc087e6d185dd873c0b312e67a39271da3c05649e53fd3912535ad11eb051fdc277b6a473387e31a5e87be758a55d14c77350f12d7e36ace25fde99d2bf809ef12c3e0eac5b324bcbd815b486e46b225cfc9d965b5950beabb2cc2f25ba46eac0cc5d5dc841261c2c77b44f1de3baa6b6fde9d80731b392bcf4e3476f7f4f8136ed374b8ebf7ed92aaec1f9ae5ce72be3a84849b896f98ba20b2ac25f747ed34878f706c2d04f93dd7aa2e58a7c3b389c8964d75899e07c38a2ef7db8b6bf59268bb1322e9e31ce8ab4485ca2473ad6027442c71afe3fecbdd997a2ccb207fa079d870d5876178f4209824395a00cf926500508285f3be25f7f574666423258ddbdf73ef7e1deb3bef5adb614728c8c29237e31063b717a37d782f3be15b680e9866c66bf3a55e0b1fe65167f605b5bedcdd1e48d33d5b6f676b5e1e8750fbcb4a9e34dcec583dd5711daf2593d43869f44efc6099d7eff6ef7acd477eee06750300fba05ba36060ccf4de75dc911acefdf3f20cf9a22cf2c234c77040b006a307271a0dc58a33c9a5a7958e41272698cff16ea25921892ced803377fd9b9e36e9f3cff6ab73fe3d7c7617c03e8cd16c61f8e30feda8a96e24cf3b72d391ba49f81b9d7714dfdbe594c68771fb0bccfc37d77efe05e3befb4c3e77b75dad1aa9d678df9982f7c6e480d43f4b1cd23659b595fdbccd13d71b55d3b96b916093f207235ccccba2651d8591f2a5bf7ff3d1ae165c1f098456db39507d7ddacd619bb6736fb347f0e75adead1e47f79acf43d81d619e98f5fb3d076ea74c70fbf3b5abeb69ce65cbb9477d9def26215721501de9599a35cc0fba36f44d35b3be6d4134dcdca9bf77ed7d6c675ce81086dacacadf8c1edfbcf5eac023e631a8d071b2d8f7e2bde91d1c8ebd5d048fbc6ccbfafd297fbd2267e66bf704ec12882f5227ee4661c3b6fb5c2baeb5c6fe763367a5a13c7b5d93aab8dd89e23d4d61fea3ba57dbb26d68b9b3ba2468fdbba8ea235f35e05fcbcdc8aa7f928f248fdcb1edfc563e0efcf076298f01a7f17e354f31304d81ed1a5f92d87da1420cf9a1808cc1f3f2269dcf89eb7e324709d474d5fc013e55190377159db517ef6698da76fdb7256e3c08558edefc635e5630db1ec69ddd376fab6f8d8c7fd99c930dcf7bae17dce07d4a26c8fadfd7bf32e8bcde17edfb6d6998f6d077d84b3d176ba5c8623eb3d90c624a681a3ed08f307827d52d3c242551ec1c8a97cc9e1f5fa93a19b27df5dfd825abfb5ddd78bd5b9469eb9475b9ebe096e84395a0961915f5015f276c97551295920bd1c22553906126e5bc1345c1933f6fce4b89b59e740cdda3102b57d047768436b34e4cfafe39090db8aed003cfbfe1e25436bd1f56592583f777c0439ae3b2d6c17824d5ec78be468da5f9b80d2131ff7d2f78d27d79db71236857cd912dd6f43e3471ff39985e521a98f55b70d75fd06c7b4509534809cae7b198ed66d3bd6e1ecc2bcb94b0953e517f248bcc3f3b3fbfbf5a279aedf9cd9b64f6127396312970d3e2ff02bf892267cdfc6f0381a7f07ef4b247974ec2c6c696c2de9b32d0b86ce0bd726d1cb25590c8b55fe5d3bec995e3b4dfde3a771e3643db81a0eeae917ad29d7b98ba23977b06eab00ea5df4ee9ee3a4a7d78967bccf1189179c1efde29ef8d2f984698fd032c70734f2ec1cf29527c99c9d7fa79e2be4bbf5d644ecbe47e9576bbfd7db93fabd9edf89c9232eee9caefb77fc79f87c9fc8da75ee2cf1bacecc71df9f043c4c890ab9442a89b58a3c330f2ba5c07abc01f27f7d0ea4f1e993c6f0b3b8f1aebf692826f8098f2631c2edd8f8de3d01d6a9237d7534d404f809ef376d9df37442e3e25a3a038dc16ff149f003119d89c5538f6b1b16ea593e9737989fa50bd5247ee79979255801b85dffb2c9e4a9e5c8da26f7498ca71ae1b5ca221a2b67d67c81ecf54e97c1c60e999fc38e0f8b542eb17efea986e5a248aed1dbb9d1c3f47abcc760b4e6752e8acba2ed7744ae56cc77b32856892f25798f7fa9da39902c31d0b717d0b149cc1ad69906beafcf2ac1ff037cfc73eb2e9c8b4ba5711c498bc64c1a57b8d826d74815a96fdcf861e80a8de317f19cce01cb891c413d0f7cc61fec1e27f214f05120771d63bde0d395c530551e9f50234bb8186a18cfdbfee3c356bfe7beb7ca21feca56e29d2bd23c9ef3311859b2a163db13e28207c7e1a926abe58bcfc081a3f79ecf93ddfb513c8198ad5f2be66e86ed3e86534df6c695ea7dbdf99e49ea5b3d94a8b93b6131d9ecdd0eafe4e3b3a72c26bbb30ec4af78b67559586c694cc6fe18fb33e66b817d6139add7b090af913e213134852c40cc2a39233952956b902a63cc778cd96a0cf5d1ec97d8ac26bfdafc205a07ba9384d216e2d60c5d29b16c0f0febf8534aaed14c6077f534bfb83b0e33340a56d7d849901a7134d58eb3609f17d52b3e4f700f64cc20869df591b0f5aeb15d74e7843c2b1fd88712b5e318f0be3ec0aec13ade88c5e9517bbf9679b55fecc2ce36fe775eef391d339e37c38c62632958fdb8b3118cd6472693f1dcbeec062782c51662de83c859cd69ac685d430fef31b90b18f7e3d8fbcf319e54f340e03bfd3acb09afcf35792a533627da1ff047defff935140f1d54b7b8b96b6e784ee38784fbc6c76f6c8e81df8187fd65ff78ef5efb71d76f7d9b3678d07da9759d81b18be7d0809c3f4d0c66566810db7f608eb778c0a7dacdf569df2d71d8f9dfccebb732ce1bad7af1b9c33e5ec0cdacfdba9e6ac25de1c0b84f86deef6b91cb5fc85bade8dc210e09eef12ae3640ce55caad384aba73ddab9e30cf3362a4fb99adaeb03e8720dd64d16482be24f5321bf80bd7b69dd63f5f00832f053d772416bb0a138d930f10b2d45eeed1a1e9c4ba4e76764cb47e4deb11ef45848ce23b09bf73cd5c0eb5ff33a4fa2f4aa4565a427d788d06cad436d74f98a7964cd0b3325f55d330f54b922714962be90923c9861fd6f7945deeabcf8a3361dc0f60a8afc4cd799abdde4d4f33369ee13f840bd25f8e89bf5a07c19f0e99c07d8c5e06b5ec75f36d50fd588caceb0356fccf3699dbcb7a6b662fdce242c9c470479f6f23190e45f61258ba1e490fa43d3a62628e4d3367318f99e79011f3c1bff284ac2625c0645d81efb749c4459335eb2be13ac63bdfb1eaa31343aed6f907bc77678c262e1c1efae424ecad977cf6c4e0be465dc1a84978588e58db38f742d0d74a7dd3ef183649d7ce5c667abb3787407ee8f7c2c1f30efdfd4ef2afe61258485b68f605ed8fec77c65729da7ab2f4f549c6de67c79d5f14a653dc4f9d4fec7cefd728d4f593845cdd7898d8cedf2322a480d0bc01dc47deab9c47ca8f46e9babfb05bc9a60d8430ecb0a6c693ea619716bd6b44b6a9dda9233e69f0da431dd8335f7ac7cd94ace097c56ed67df023ddfefaa660ccd77dc78db3e8b66bcde928b2da3f9c9a42de68ff1769e750c4684d7d639adc2fd1a8c5639b94ff64f8686793e5d2792bf1d1a05b746f577cd9c494db65bdaccd7025c514f35af41b63aeddcd52ff68cefadb01ce1eeb761af2ebe87d89a7669f3c8ad799dd3bd2812567ba1b643989eba69af3b3e8b350dcfb561da667a0ab1d7dbe7add746fb3cb6c6b0f3560a47778c066b1d8cd83fedf739fb87e9c70cbff48a650de0c7169ad49ce1711590da2df2873d3990b9e48f480dcb7a7de8bbec77f3d1b5b1685b0d16f389c40b437d107e7c17c46332633d31cb333207669b737641738757e39c625e60937c810bcfaf3a75e44fc8b54ca4268c1638bb44a902628b609b5b5a64e30f6bea7c59dbb15be3691ef03396c8e521fecb98d5fcf468b883e3aaf0b8be66b7b85ef322cf80bef333b3a3d2409285706455bea7448606f7acf87c493bc803514aa44e0e9e6ac4f38a9dbb31feee17a677b3c27c7e19633d3e3c40feaf0039a2878cc408eb2b313c98e0f76cefb132c2e7d550233c975f4fd615c63faf94d04843c8a105dc20f07f90fbf0ffe5f5cbbaebe756f89d3c59b80dc6b7290a70f6ddfa3e1c6ce2473433935013620762a5f1fba844ba93c1bda13b3df3f82d2cdfce14494e2789df5d05a6d47bf6e0d9ffafac7df6c76b4fd625f33d2b597866ba7009ef5cb8f8fc44440f2d3409f3d2ee7b981e094ec8b3f30a764243778dae4f312a4e07df334bdf16396c16d2e7609b7006b9369fbcffdef8fc1f6b7725ec3c0458177ef3b9c6cf62fc0bcf0fd35b83abd5e50754ee508c32f0c7b3f7de8e75dbdd1c3572b7d7e17b44cf167cd738f0f65eebd9a2d155da3efe7a3d05df354de2c79ac8862adc79bf5e9706919e3f2047d75d1f8662e978fbbefb6e487582fa5d6e5dbbf3257c364982c23aa1ad8c7595d2974e4c4ef5f4ce4e3c63de5b0f5dbeac491ba5d17c3e228eb737728bee4d93cfddcb6b626d323d676e2bd720a772b7e1ef27836092f27747cc6ff4d13c9f0dc9f523a38b85aae4b58f818db7c15b7aaa530e63d1717e67ce7e9acfcef2a2a6092e1e90e25c835ec774b966fd7e0cec51ada3f1fa25d443e7ec99794b27bdb5740a7c964c89e9b161497d16e43ee540f4aab56b026ff54716b60fcc4877ce8bc68e6fea0deb9defc07e18c20fd252907fee4ad8e075f7ac3cd89cc07fdcd886ce4ba43b17345bfea5fdc7de5b756dbc2f7617e748b9b0d36591c649e4e1c12a91b75a0692fc40cc6ed16ee95a3713bf704e8b91290607ab0cdced75a73b27aceb86959c879270fda336092677637ff1fbe12d6bfb8beee185dcb7b56d464a67043bc45be580c7017eb1d36fedcda1fdab6dc4eae53af47bc7f6fb69e862b2ab7901c1bce3db606713f855630bb7ed4e36f642be467007acddb698e68bfcc5a87d9e60876e77ba7326782c20c3ab3fb215b1ee5fe4490078fb4e1da3c0e2346b7ecfecc83a6ea6e6b33546423b4ee75e86236b1616b2184effd7eccb3414950ab9a8fce4edb0c36a8d9fdd79316f8ffda12ddac823e2dbc27d8febd85ab62eff8edd8ad765e76a2d9bb1f98e6f5763736fdaa4f73e7c7b3eadc743e7f2f80f6ce43fb37b674d7cec1ffaa1eabd73c55bdaec4bc26c53ba270efbbb5967ed1bbbf7c068d66ab5437466f277287e6b2393b989b4760f95e91cdd3039ae727607fbedc8d397a1467017bc70a32a1839b7850bb47e68dbb24c06113b1cf223dafca88d35af9331f77584a7ba520e3c063026c9bb0d1e543b0f82d0c5fa128eac6b48f86e822482a7d78ef9efeb14bceef4adce42fa60363996db01c72f4ecdb3e7a8b9e7a7b5039be7c85d795db3564b6da80b40ef0d5bbc8af3bdd73aa895f8598e9f79c1ebbdd834b9537fa533d6711f8ddf7e511df79e28af1dc7d43cf1f59f05bb8f1cc8f91bd40354e50bebdac81d676195f0f720c57b0afcacce7b68706b5b3142db8d607dbca78a8d3c880bda478c06889c11828ac449137c859738da6fff55df0f35bce1475f46255c3b0d2edf0ecb9c347b8e7b51609b4dc4dfe78073e18ef370846d7351409e09d82ef5bd5aada7698ff71470a85ebfd4c991f138e3edb5d3efe45f861a256635f961a8511a799610482f076c8f9892554669587eaffb9173d73cc3f114a8ffdcf0ebb04a383d707b3274f3c1e4ed8293211d1df0d4921b102b127132233c717216dee5790db15f4562e736cf9d383950986d5907b6f5c2d51aec299ae34b3128492e53d693c183b90ebd1858f17ed9e8f9239a129e06baa63d6ec7c2e273a2464bccfbac91798d3c85d38186f4d7de58e0ae64511dff31a60ade9f3c38acf25e2c67f572a7f1f7544f1bb7e22016855806e9f81f12ff56e233f28f315d5dc3595eeddce81861baaab2d82ab43d72cd6b209d4ec634bff8d50bc15ed07321ac940415a80cf43c892007856b4b83fcbd3a66c7d05757a46f291e44be47ee9860b1006fa239e753d174546e4e3aba46a4af0be4083824f76033cddfaced7863d94ab173ef79fdbbad5458ee004d15245ff0d356ae88e255d77185b62284859393f11eaf448ef5f043c1d718bc89751cc71c64208dd974295634e097dd2f1f4e074b6c2fc81f5e7d87b6f974c534906e8599d35851755c0423e314be89970fb1f5ddb1898318e70cb71af0d8f6fe6db9993c16b3a91cec65d626e880786c346fe90234a46b27ee1d693133be7d071dcc044998f762dd20fbb1da4feecbb7f0147d3f3e9a53627d05ae9c613d63be394acbb7e9ed5dbd8b1feecbbf582cdda240108f52c71880cf0ed38e5335e39c0a8b99fffddc6aac75931b67768a1edf8e73cffc345c5fb7c52cfe7e4d6add5a06d952f7b7314e9f9bdfac8bb7ba018d376b725f56f71fdfae4921e6812b73fd6c4febeffb39f95e398639e5f70b79c73fadf76268142d7c42f96323d6587cac7f3345f5dc779e95878506589fad7a3b5592ccbd33f44b743243f654f318cdac5bf8385e17d42fba3b2c2fc1c83c2c24ebea8fb07d0c792767a43bfb40b2f2301d1f235d3c7d4879a3bbbf61de7d4e16fa525e6ecefb0f5dab10c501e06313fdeaf46bee1abff019330bfccc2af036f06e1e1498af38ce36cb791fc8d1f7cc03b96fb61eaeb4c2fa12d543c6a191896550e4c5ce75b29a6fea3437555dc198e6e22d7daf1469e7adca08ebc3e939c5dff19861086ad82967e4ad1e501b41972b1ae304bf07857c59b85c5fba9547a99207075486857c21be1b92b344db22b9638725e5b15a8674527bcb776f31f1072031e0ee5fc36a1c1a0791d9abd30fefccd78df9c1ede571eeb1357849969e80d7f71eb98e88b6e88a7934ab1ff9ced1ce5ccd7f7ed9f73c386822f29c7c5b385896b1d8ccef9f6d6a8276c7217fd977edc33bcbef12e7df9bfa47dfbea70b7d597e8e5a1835b2bf3973f84660efcbfefe5cd7034387a56cb1670ece0de99a803c43f647f7576b26ea9dbac0b456e5aa150f09e311fc4e2d8da61ec887cbcd559f9efc34ffb973fd631bf772caf3fdc44c51f72c26fc59f46dbf20b510a7b26fe70c9394c5efbdcddf6211eb2614e74324f58b9d6a513897d073f2c875365c9d16327f18db3d34b8b1631ef1b53977d7a10846e61e3974bd3622e73f8073df5dcfcb339aa1384727dfbee3f9b67ea37db763a0a621d08155b5f0fd652b6dfddde245b69a240bdd38f955feb3857bf21093f751839103f7026f62cabec3fa62f81035f67744c715eec5fdd7ec3efdf2e0ec981fdbb8b5f71f2ec452cede85ac9b872edb6fe7d37c9a9d3ae32df1b33b6fb58e3c33a7f1f53c5f928dcde427f1f31ce54fa9bec3f9013430134ef6431cccc7581449120aed18e4c5f4267f4a90d79d2cd53ba983b9999c3c512618aae9f4b6d0e42fa683e1bffbfb2070670ed6215fe86bf973249cd043043ff9423fc9b46e7d89d284d451db88e9dc05f945f52f74ddb9eb78a94ee50fd780353753ffb87b88299ccf343bb1fb256323c87e3afe85bcac30d3e480f9baa71abfe877e542374abb1a03aec65c374ec8c6cf69cba13598ebdb12f783b473ee6dc4d4951ccceb491cf75ee4f3fb6a8cf4c5c68073bbdc08f287eb97481d93fccf9999077b71ff2e113c63f2ccbd68cbbf585e7b66e57bd911cf29d808b777497845fbf3795e9dca9d763e7b1bbedf5510d8a7cadb9cb345b13aeedc7b1616cee5c34d64dc3e3effbe3deefa194bd045b0beecbec03cfa3e703c2ebae66f781e56801c01af6786d7e0c345f8eff27d44ef130ea726376b5fde163447d3b7ef78cd7fa08ad0cfaebad33355660b4dbe46d2380ff7e57c51305ab5e42fa79d1bb449e15c969fbfed6b4c6819b008ca740177106542e8a3ee3769f0feeafe93454e3f1f44b9d537d14f1ad95e30ffda2dfdd808729d53a44f0bb380bb3bcc7f315f4e166993f7889f0d673cff53f2505a2550c3d9ce7f32dde753bca5985edf73dcbe02b5f88c7d49ff172a4f35e57acdf35b6a6ab7745e25a181ed04695ae2b986fa3df1a5ed71219ee4f75cb8a2eadee5bb4d5dcefc9c789e50521eb5feb0e5d0535f7f2da4f0b4dd8881b739f363b6895cbaef17fab6fc94f262ae4d6bba9f7bf45cbc89d6e2a05c43352edfa5f50562c0dcbbf0e14e7f22159fc19cd9d858c666148f40f61f40c3b5fc4584a641d7f8d84c7e36f1a896cc3e639a0847ce297a2b13d87787dae26f65ba80bbbde50fbfbad7faf97bb13df9242ffec77226ca9e3ee6e7b799ebd3f2539a7263863dfde9dbed71537e95b0b1377f37e3e7bf6373586e26ffb3b56bddb330f3e9259c398f9d8af745ece051af19ef3ca19a46d63ccd31fd808b99b4886de85aaf5fda2df50bf91ae84e12e4845e919a276c4ea4bd503636a41d325efceeb4440f2159be9d694cf26ab4f3acfd4e4db2b977de43ac3da9090f380e9e6afcf0250deba5a181cf806be6617e4bdf8b10e4910ff6c7e967f34c7386de0f75dbadf352f7339bb0b6efa43d45fe72f362ae8765430fcb23b2efc942033e8f6d91f443bca50b7c26447cbe6eb7f9a64ce7f6edfe2e85f2f2ed9c5299d07af6bd307ee1b9782ae1df940f6379ab840733f9b493646ee71caf3ee1b67e7de8cd1978974ebfe655fe13bd89892b9da37722f38a0fd7f8e5d849b6d04fe5bb14fefa70d647a4de0bbab7328d15afe51fde2bdfbbbf7ea7fb7d483ea5b1e311ed4515f31c5730a3afd93d71c55bba9e2a25d6e57ccfbae2fdf0ec7bf11b3f42f121f93f68edec531747bdcdef7c2a43a6324a992c9d9658967bfacbedbd9a1ef11a2c8a313e0bc7b99d5d10d68337a712bd89d982d6e658e8beeca76767aeaf4f3b6c87d9f7c3fc216ef1df88f2195e5eb6d603e87c5db2dc08ff21323e7862d81deb2a7e2cb1ce989f193e4b9d17eb39644efe436e6892c5b7903cbe18f3e3b950c7a2436e21ccb328af3bf7e5c8ee2ee6f619ec24635fee291d968d4df812a3518bf7bb8c8ff2bc989d3f7ff37a7bcfe1ecc37ca84eda924b8edd918979e33beadae3bc0df0e17272ca9d429d920fc979f8927643b8cd02e2d67ef8e958084496db1a3f5669a7ff8af62f4d89acaef5a969a323ab9877c1df049fb9cabbfc36f16d4ee78633b5957d7b5c216f2506b3f589d010cfd7cf30ee3fef33fb39788e37b28ff700d998c65a7657b3a6a9927cd9d98fc67ef28bf9f4f5e883be98241fdb17bc47d9bc8a132a1f5ebf74a3300b52ff05680bbecffee5a96668ec8f47f8373db375c67286d8bb76b2c67463aafe156807f32411e86a3fb733c81b8abcd5118f6feeb568c9e764f209a979cdd7499f67a64fef418f7d086c0cfb39acb372f2dd553ed726274f35323305ff10e683308e77c990b769922ef410af5536df9c09edbab8cfece7b64ad2b92782dc7737e24f7fe4549007f35642bf5f6dfd6137afc737955d7bbc8f3c13e257deb12e41629f30ed26738fe69bb15ca7e9f2b87c18776cab367c5f93593ebc5f4ce54f6673b3314cad321c29905b883ce3876bdf49aedfb4d635551fcb9e29ad25f4287f8623e711ea800d53db4cccce6263dd8ca20b6ecf4eef6628aeae81ebd8b436761e66e0fbbfe0b69ab538823fc4877a0dd1e5bdb8cbef52930bb2969232d0ad0ab92ff2a72426e15bd9d2d7d8f9e065b46fe78d0ec7ec11a2af31baa6b6157e975f33475ee8e81a66803fdef29bd4761abf17eeb4e4f380fcbd68d3df4ee45c9077de45f0ad789827bc8bcba39fe6f242277a4fcb87d33e5f404b4f7c48315b7fd24f2e2f66d6959ee5ceb81bfdd915859f2eb5e3e9f89eebbe1e67bfa44afa65dfaf41711ff7c68bd743d53ec8d91ba0cbcdfad1a54b6207f37bccf981b6fe4f0e8b490f0bed00b6dc9b58f174816d35c01df20c39da9cb97c1b450c8b562eb06cbff1bfd3bbc7a97845fa568edabf89e14881fb8f0f2fe3c7f1e5892b6d2d9a9aa3c9e626b7b46d365636daeacb9aca5f9b4cde7aa2b3b11cf9639bcb68233a5f8e902f379aac5a8eacdb8ea9596f62ea77e6ed4b784d9bfa987d1f17c8c09edec36c79c24387fc5686b4aaee09f8aea8dc08d4e4e717d6030fac0ed63d63326ea18744aeb8fe69f7101b7b6fdff13978672990f2cc789b603b8efa167cac6fca7e5abfcfd9abebf27dd4f64de0fe80d7be317d847c37df405fc9e200f66a6116d30bf593f5ec7332275fae6ddaae7dfe203e839daa949876e7dbd385d4c0c1bc3a2ecdd44f36eaf8e87bab3696889d1ce7588ee94eb0d304b9b5cef9f9e8d97ec1fb51d05e2e5c2989de0b133fcfecc4e3873be84b3f2f613de33b6e6fa7e679db27b1fcd9e8b9f1fd438fcb4fc9affd1d3b35fb093a2589213a637b29d8dc8fef92807587c295c4a8d5af783ecf1f66f42e6d2f3ec743d14164f6fa4f53b5981ef42354ef047ba45ef77b1814e02bc8a8afe0b0a0710ad84ef4247914144ef55e9cf179e67227593c0167ab76f82847476063607af0f7c4df35df9c930fafe5c3182d3419eb32fbc8bd43ad849dae5d90e464eb2217c24799e2df99fc71289ea26fdfbf6a19a3117d7ab92f938526e3f392fbaef50698e16fc7db426be2cfde89fe772235409c33966594d7623b77cde2f7c3bdd85abf28bd7f35fecf32f9e2f45bdf1e93da59ae88df4b86d7ab8ebf903783bfa304b0660f99fc8cbf6fec71ba73c7199341be9dfdc4ba2af1a74e391e6cb6646c8d8f5d38458b07a979fd4edf5f2ab6da68c5c2ed7bbeec419afb04bf29dc41fff0bd767b3b6fe5faeebd44536e5d1e6dfe19e8da8fcfbedf7cb0af35d083750d090d3c58ddf0c5667af21a3f09d1cb3c81e7fd67e48ad7a1fb877a6d380caff7c3f1049f3765b220185149586c7fb478c95e26f89d85d93e3b07c82face3afbfebd3d08ec7b93d86fca226b790d81d036d7e77166b3a75d3b8ec3c4f9f69ad07ee738a5c53442239575d9ae9f7ef1408db886f625777e3f59ddd5ccd2e9033e9a202e2bfc99c5b74817fb75df146eac7e412dad278994daf6dd00b07d6cb0c3c05ee5b771eca6dcc4bf47bdec85bc8e3ee8cff9e7cbab2184dff6e1e1b5d1b072347f8dd7c00dbecf1876de2679fedb363e668e6ecb14e34a8bb0eb4b72d9c2c725779d8ac596f7c3dbed0d653f9b60afc5b7f5c837778c36d903b4bccd7dae36035baf76268eca7d2623f7d2cf61a89fd861ab4af576386e5a940b00966ce83d433a87398c09fef1fcc6b345a016601c5a3a87f1fce516fb0ee3cfd056a2df8eeea88dcbacec26807f773280f53e510e8720af7c5de320e67661e4a70cffc08583dac999587a3751c1e9c0b6032d7dfaf84c835e29d6785019e8b6e5d696d40ccff7f414d02b8737e898da92946aa3242b67241ae9341ddac5954f9de24de796b324fc833cf625fd2045f8ac977c4575846aa5286e2fdb2a85ee388d6774644576238a590df4eea4058b9318b8e3b7775c46342b4be218b633474edf269b379df1f8b7412db1ed4792983c3aa44fa36f61dd257ab2643e1ec7d8fdcd78787ec4ac699e461a564c8956f919e9fa17e0cd4de5ce5e1c14ae03ec61d1f70bf61356e6aa152fc0aa4adf248b3cac075ae91b7aef1e0082e8c93ada57bee7be67687e5c9c81128162b6f8337baa6e4088e9e9ff1732d8cec41ac97f810d2e711e6132aa901456a5892da8e4ddc27a9a3d0bdc7a9e3d9a6ab1372b5aa698bd65267b9924358276ab4079c91bc9e3bd496a4b831b4fe54831b40723ec430e8c4acb7fa19c049a23575983ff4813cab5e4b9653cacde9f004679e9e1f6bd3793f6eade15bbbef2e0648abcde1fdc7e779703fbb184b75acb0adecc1e7a14e8ea88f4ff574dc4d2c22eb9f1f7fd3fe1fac696f1f693e1ab74fe1001e3ab7067dfa910dbdf3ddbfb3b683edd676d75b67dc1d9c75b15e8b2e9e55172ffe3fe98b60c5603acedb774533530c9ae7216ebd1fa7fe8486206ebbf55d6ffd17957c0946e619f37de48ea59d675ee9bd37f0dd50d2a0bedeceb34452637efc18aef3df3e53907f97dee265afa6d284d650cc8bced8e24862356535c977f313a9d9ada4ec3743bf27119641695d073b6be36225cfe85c7e769ea016b9aa0dbe47f0e13af37ab6effdf3db7aef495db436df809a2e2f27e36d089f8ac8c44e2d062cd3473bddb960398760bfe43372cd2b9a911abda48e82338298595247a5cdfb7490c797a052cc45b6bd18ba9820ddba206ff56c9f87d76a68bf6b9e94e473effc27587614db96cc2592b6b1ef99448e4eb38b65631dc8117ab5e2405e5059e5a10462c267ab2b7b07e9721e128c4f213c388f88d66c43d2fdea17da09ea63b33b22bc96141b0ae17581b3713f7d3a9dda162d1ca5411a607e1be2af055ca3cede7670f2e6fab6ecd5da60b85892764636a921ed17b2d49c8b046a3593ba77d3b8d63553885f267b4aeb4f061eccfde87b88d5b6ab753e76c744b11f0f244e2a3c197a7285d841fd3e3674c06cabefdc0d7d75c57635e85c5c1d3d43cf05c0f6d16fb5ccf7b9be682d8efedeff86c6ba7547312f5ca893dbbc53f7a48b214af194785da98adc7197171f0357ab7692533de5af03bcfd6323c47e4737ebeb0eafd7a090abc0d548bde322af021233fd203150ab04ea4748b910b92437287cc22f7a7de9621216e73c4cbfe1b35d190a71a0b4d6b787929d7b87bc09ca0b087e80ae0950fb546fe20f78bc8edfadc9739d10724f92677a2de5b95d5da227b79ebd4f72fcfbbaf27fbc9633abfa1cd857c677e9397ce07d25f556881e1d4aab0a7911e625e4feb923f3809fe9e39a5705ae96217d9c87a3556bbe3d5ed35bd7e4ec7be62fe471389c33a1b6a1fabc65509ed4fcc621f31901cf29483c996d8fb5454af94ebbd61fa91b4beac6e751a1413e5928bdb277b24072886cffdfe6c1bd756177c9c4af680cecf1efd7eaffcb7cd8b8f4ed1c529f18d3b231837a60a0f719ba5c303adde91a9e7bb67351813c8227121e9c13e48a137cc5eeb997c2aaad7b0cd857dcd91c3edf5d1950f3ecdfcb006237927877128b0c39c4e7a8c172b72adfcd093e19b68d0aed144adbc616af7df2244ebd7e6f46feaef325edc97949f32c5b7e03a8a33e76c2e918ea7decdcd5af967d4e3191d1cc4c762e60d0109c19b7bed7b6c8b87bf6dd60ee2869f3d99c5af2add37e7defd3e3bb24761c72baeb7b8b2df9aec1c6a6ebc1e35d1b3a89f5e98c9bc6840fe78d3673009c8cfbefc646d78dce216eebd007b1b71fdde7bb9854dc3ef4d781f29d013d9de27973f65fc7861ba48366adb2b0d0ca8060cf73b9b16dbcf000f3c83781ed4713a7568f273aeedc7b3ed7ef79d0abe1d6db3bbc9f647d374ff73be8d6038ce06e6e1bcfd5d32f9a53c070635e8dc17e27dfd0dcf0b3d4c66a3feb9c5b74e3d9e32a725f8e5d1ed0de970e5ff803fa237de379e07d2034bd28ee795044c26ec047d2e50f807144624587f796e238347b668a41d693eb42ad9f30df577ebf70f8d5172c031c8627d0c6bdc136471f6bda330f040b05fc8075ecd450ccbba10af1b287893378471c7fa4937bdf3eee61c9df19963c9f6bd5aceb29ded9a75f4ffc6f788c0f57cae2853db913cca0d6bd71d9a5d12ece78bde775dc15ac01e4d2321b96ac4fd6c5e9e9f21f8aa73d85fc62c36df86cbfb668c787d3e23b6d5d9361d3827f7b1fc7819eff42d41f8ff41cdb2f293e734c4f083bf53648ee30f523e85a1516dab8e3832d499db7175a8ff4a5fb5b42e881ac2d7e9ff97c695e329fb772090f840f3dadcb486b5083ad5668b750bf8f6b5d8cd5a7267102c4b70c34de60b7457a2e304cbffafe2305ec183c8e3df2568f4581f598e8416bacd6b5263b18ef4dcd35ae7da0c1b4d103b877a0ee28c98f1762b30a7fd2fa7fe770668d9bfa2090fb9f50fcfd0ab951fe399bc43b6ff58800639f1be781d3a5de84f873240cd4ff195f8311f167d35a37dc3cc9588242be02be313f0fd7ca20871c9f5bb20e9740926f9d395d8362953f6b239050f1ec3786cbfd077dd05adf8e12e877c85747ee18eae53f793e0fdc5c78daefcccc43dc1fc967cf83c2a97eff2cd6439ca66fa8c500eb4ad69b9f733d1ff3d1a3631d30094a63766aec0ced1c319d929b03c42ed43ad6601b350f66314f17e485318b673647dc5e62ba2275d5cbb0c2f6cf3a0e47ce8de4673b19adab47eff578fa588d500ffb3b6e8f5f0daf6645ea1872e3dfef74ab24ebd4921fd9ae55c3f40fc62ec13b4fb0e7c3e133ee8a4948b0dc381f4d67dc6f939fb4b66eba500d6c9f0881645ddf9b1cfd6330724e4855526c4fc1be171ad41bf0899d5d06fa9ae865f6736c6df331b92c3793cbd20e59bd88e17b551dea42527a22b5a0497d4a671616da6da776ea224ae303f99efdcb6a92b7fc52809d3fd7cb47208d693b37bc8e1972b07c193fb06d15d8372c172e3b91ffae5d9f02f0660a27a398309740b272676626c16155607b9a9ea14ebb808158e329f6fb8079974171de8685760925740d0b016c949d4bef3288acac63d47787d535c8a2caf79423bb6763f925265f6b67b612a03e2f5eb769b9d9082f50c32294b647be8d06f7ae7befa33c225dae10c15cfd2794e48b353293508fbbb83224a696fc06764c7bdfe292c76ada75f072d8ba2e0a588707bd5be0b1cd613d9ae7c657446acf769ffbfdb912564950c03d28a91dadd3759c310ca835d9a311cbfb267d11fed09a33e48acf3bb57cba63e475b079756ed5daaeeb5f1c56399a8e019383f0f3365dcdeb7d1cc36fa09375f54755bbf99ef940aef58e9f19cccf54a312f38b0eeed29375a2eba2937121e26b1548fd11c00d38eddcf50f838e7be7ae097f72f34728919a602d3baeae0941da5d145a46e77c2434e9641b7c76ec7189d45bdcf90e304ff91a10b4c603e8c13b7c86302fc37bd1d0ec85ee6363c755935f7329ebe9eef05c35780e7bb4e94a7934efd621815ac527a88ddfaea1951d4d096a799a083095e15eecb473c7bf9eec8f10083996457f504f263ed0b348c7af00ad60be8cf761e78e258897535fe275210b3b956005da987763ba9e5957f8ec9979c353991cec6365d1b3cd74a2cbae4ae83cd8fc28ffacc630870560c7e0dfad24d2a765177bb4f131127ae0ea10f2bcbb446af282e995bbc77879af14f95b39325b25355676ebde17be3fd2b99cc0061e59d7600b6795df77eeb71e4d947cdd914ded5b8418396c833c0c9d9ce1509a501e42d602fe06bd3ca7f83c0aabfbfb60f5851bbf15e11fefa9127835b61f6de7718c5d51ecd6dd20b4dc933f70dfff6c9ec0579b7805eebd2dba86199c4f1eab10faefca3c7fe4e03377def4641bc8befa8e987fcf2ae40a9e7fd4e367b21cffaef9eeea48ce7ef2f03d9493cf94366b1ec2723392251ed71cf6d7219f9b75a9fd9f76befad8a4638a291695e8901dd9da73cff3f4c7f59dc09ef2bc13efbfe56afb1dd505c0974b7dcf642ea06bd6ba24dc17ebaf71a46bbf90ad40fe047ff60c1d95c8bd67cd3d15b68d9412e9351d011ff4b5063716e254995ca86afbbbbbcfc780ac5fef1cf27a75286912027a3f1dc959e6fd47af57630a79308cdf502ca76d2df731dff1ddfb23783e671223b7cd335fbdc53ef0202b3674ed82b4d69c9fcd93d07f3dcf3ebfa6e3fe769ebfa177b6569c1e05b4cff2ecb8bac25406bc1dc9b9833a49f53d518b4e1c691b235d86fbc148d22e914af1edb0aceae83aa8c8f340b71eec1e6c47e2e7c066090a07d6d5f7ccf17bdef2a55c88dc077e4beac33cc31724be56a07bf63cd33be8dfc358d38c67b3fd78ebc963cee6aee373b8fd11f5606492f3097b77eac9e2415e88e50fa59bf754e9c81d1edb1364da0f22c74f974897b9df15b95fb3923c87744df06d52b71330d0681c4c474f62fbcf9e970dfefde13a944d4c0a9d1747974c86d19844e71261fea8e702f88986ed9c3df8e4b0eee559e3ba16fc13bbabd5a6033cf3863c63c03fb2ca83033e0bf7329ae55e083e25a7e27c4e3c5ee3b6631b025dfac536f6795bb3c37b1bb986e5789423770cf1306b7e8c9b63ec631a939c3c28e0bef68d9f6f837d68e508ebc35b7edcd98fe1eff3464e0edc577cd7df5c6fee2888afb53df6de1adbe31479d608b910cbfb08aba4c6506dce8e75758a5cf2b74486b5e60f383e6212a949a79d67b5cb06d7e188aa5bbcc33ab8dab65f91ee1cc282f8d03be3ce901b55c8ddf2ef76eb6b098188caa8d0884d376dadb14e75cf23eb63fe64bd235d76771e4a88ee9ab4d6dba236c6bc458f8d2e5cafe1b49b63de7e7e71585dc3c3fae81f72d777ef22b2b34be06ab739e60f9233a639414ded9816df32d9efc74ff5167fb6e440134bc38fdb1de591a176cfdbf9c5ebdb2b9c2eda1acb1172de86eac9f1760060b51ca15e6c079319729c3ae738c0cf794e471eb17bbbd43819037c0372e7304d757950f5720d47e67e21b1dfc7ff84d4c61baad9d63e57cb560dceb91a5e16a355e5577287ce7fd3a674bf8692539fbd4e9dd047582caffc338ba2a476fb78c04e18e7be44d66be7ae4a5ae77c688cdde72ebbc3929eebe135a431c0700e589ec03cad713d93405f8901e4082c6bdd09f407fc373ba36d9a8ee77a7e594870e77f0d53250d46d6716e839cf987628b4e4209bf9708d16cf26351c979908e473bf75c86ba93eddc29c1041c45e54ecaae2dbe63afa6e4fc3b5f6d1ae6f148959bef9949602b3f8382e9dfe4dfaf46dfad712348ce05cd13984539dc29d90a97b707bed8d639a218a0f11aea436a67637666baba6c68e75f3b779c7db8e635d293c8d02288fb20bc0a7451c6c33abc8de44484e44e216d8fc1c9de699f863a39ecdc9703395310b772f247cec9877a98f965e132ba6f8f99ac3d7e27ba46de1ade5fb4fad8c61063f1fbf7cba0c0fb1bc60b7b72ac7554358b11d0b359fad5d339623ba3352fd2ae3c2c2fece4c0fca08372427204b079b6f4791e07bcd6c55b7527a9bf6f7ba478284d9d2a687f221b6a02fb477c2011d0af596558475b06a3280fb355124adbda1749f4b373191475cc3b7d076c4ad216f57deedc31ac3dcf3f7b7320b5502e907f45cfd8bad96352d79ff781129dbad3cfcb1ff5f1efb68fc7d6f2df42ad6bb0e5a66cdf3f6ce51a79163baf6fcd9ecb15d32d7b7121cffc475e72a3b562baf454d3193d5f65f838c63bb8ff6cf3a001bfe8333b9ea74ff0515abcaed0d117797db92fa3391eba6dadcf33db8dda8d503f9cf1ae3c9a129f1eb197b7979dcbd5cd6774ae9da95d9467e46ebcb72747ea673c19bd76989edfd5db9ed0489ad071d2fb896d9e756a4508c1c84a0295f83b9bbb8138a163285bfa1a7ef6eddcf65793764a2ca3961017007125b00eed7881c9af0fbb1d7b10e9b2e0bbb778fe10a8ed44fca18b03f125c23925be0713f3948f6a7237de8ef192b313f93da6ed3dd16d65319ad6fa6dbddfc1c8e8ac37e98be75f6c9ce097179b7b06e2a73d3fb85a43fc18889f007067135283afed5766be87a64ebf9ec15a2c5bf4665d235d3b19ea09f33cf20ef8ebc7b5fff5bfbb4edff0b49a9eeaf579ba0ecbb7fe19ecf9cfa98fd6486fe9807e8679534b9febeb3ed921809a1420fb01b7f83d7dbd46a368b428f20b4ac7625064e71dc1f74c82c3f182f4edd577ef87a0926f916b9e76ee2a01fbf2b0bcfaa928852325f52be1f6ae8e6f4847a41fc85d98422d0288a32c087e79c8ee35f5fc1ceab45e934e62c387e5256fef2d39bfb15cede05da77b3e2d7cae5c51a86bb66c2b1a0751810d4de3539404cbb5edc84a7ca9f12593da8ba0cbdcc2c2c9e01e5992abb082fae28f1db9ab26f9a278dc4d8da44730722a5f723839adb07bbb1ac394e5f5d35811c6ebf0b8b29db7127c77bcafeb20317c7687b71ff1f87e27f75fa80f8f62db91585d36763cbf9bef59c7b0eaf443ea3d607b8e9bc3aa449298e035657ef61affc04e183e44bd7e48776e801fe08ef7146b9eaecb16eae3833dd4ec5586dc3bf1e3fc811e43f34a59cc1cc82fbe5e67cf7ff3076db23b15cc73c08fcceec3a04e26af875b57b770aaa07aeaff86f1cc5b72b16d13377294ca8b915922824b5d76eb72ecf49e7ef9f025b942107fe0e448ad75e96ce7b15a8be6d89859a3a0c23ca6ef1726b9afcdb959f0feded9aa2467543b05ea20ad40bc3ce0fe4a80370f6388a49cd2e724fead4fa05eabf888f41c303bd6877c1b49afdfdc4db5daf839ec4b6eb5d5b3e33b3e013cb6c8505f65e3cde8dd27f3f70ec8b35abe11479777c833af5457e1fda66d5f84c474102b2232fe3b1fed537ae9eb511ddaaf631dec56ad48c8b10f746743f9d1a6de4b4d49223d3ed6f19c84d6b978406def8f9c33b5998e0377bddcb83bcff23af93767cad29d53a46bdb402cf3b0782dbb71bd869a6c6a1da8e32f27fc28c4fc7453e3b5767fd75757e49278aff9db349e5794c738e791676757a851e16a41240abc5f99f8bd2116719587a3d595c675810c70475c8d4cb5a39fb8d64badc7c1e75bb79dcedd779e7daabdb865a233413c2e961916dc2f042313eb76d9a72674624fad3c9859893b4211e838944793bf8ff88ce6a8f0f9f9c9adbb9274728c2ae26befd2423f1fa97576461ee8a4dc9af271a95c4ef16fced594bccf786aff5e0f113a099a3b1d81d7259fdc9de51724ddf32dc5f7de4a09c46785236b8d79d8bc96732dfbee091fcf2f3b8f9c333e861dcb6877c4e4323f2688f5a1fbd0fabda933aad5d8b94c2696fc7d481d77ce6314b7ef3f1a3ac16d4949890eeb767cb8b6647d48adef9fdcd7b25895f9cc3fd1bb9bb66e357ca7c2ef27c41acc7559d8e94eb5e9f22c7af7b6c9e4adb539c60ec4e2d6181690c343ef2bf781347e008e53aa60be22ec6c31477a94635b0caf8d2fc5346f562e22dde1f37bb0cc2c9134be923b5c2c07956b38c33ab81187925c4450ff781bcfa7511eea49b910c658afbc86c5d99fdb2fb145f51652c35fbe18b3fc1ae1b5f65679a71f8af34beaf904ae36ae311df0b9f056f41e59c3367b865c4b0c899fadeb03bb21cf847b78e4ae2f86665d3bfdc0bdb7a1430d94ead3564c5312a80cb77234736e64ac491e16dbcb221db7ebeb410ce28ad232bf37e312a94fe24bb8b3b473c725e5097d3954f35a663f4d64ceeeeed4de7532220f1d939c6125f03627a22bbae22d9a6544e7e66b0ec2dfc4e6b7a90c6de72f6019179d7da7fdccf2edb7b45adf89537fc8a813d38ed71df41d52876b758d0aa7e2f3f3eafa79230bcb10ea1713faf90170574fe2b22212ef5a042307d304f80048cd6a5486879560cc2086be9df343d66044fc1db4bf5c88e7d5e4dec9fbb416076ccfc5c7a8ca9ef07c7e5e04e31270b03b3281ef93e4bac2df12d4e07e9b0e602ce03db40ec89e1ca3f4164755063abe6ff7f5c776de00e393514f7e75e656cbdf7a8ee9f01ca9bdcedfe93e896f5d9d82d12a87bb8ec7390cf3fbc59b996190befe33cfef15f5e39b41aa24104f548c731feacf29b5bf96ecdd18ee09033dff417c77dcbd48e7de80601ab3f894fc41e353124c5bbe1be5a47f6c3333bda789eb086b1946ed4db5b1ef693bb45de03709e6a72457d2a8ef33a06e9f9e70fd5059902adbddcc61e339072393bbf3b8b5c6bca079ad749e15e46092b95ca9cd70c57d84a9c2e260606da19e18eeb77dd7ddec41d5f8c1bbf650c8c5546d9b9cc6aab16fef255e17bcbe5ddd8de8039db51bb0d5491fbfb5bf2bde66c5cffdce1e6ee8eaa9ddcab7d9b21ffea6ed7fcb7efdcdbbfcbd4bfb8e8abe9bb3b10fdfc592b9b1fdff7b9b2aac636ada77a903ba60c5f4ccd69ab472539fcd85d33967666dc7d598c9d05747ae35cffd3b365655dba3ee6a1fb922b1f9483ee7efe7d179a7b54e206bb48c9d7fe0dbba76f125e7417d6ee41c93b30ab94f0b55c93ff5d529722dc8c75d6cb40737bfc6d7c4da69d12460cd1379a1d27bfd1626396085c71c961cd19ba573fee988f2dc1e173bf72e20cfe0ebd51ea3423bf1d887f86f439dca9077ec09ad35c4b2672b01c600efe3823a703b5d23b964c0ff56cd3ab118b2fa197207128ad45ffc26b4e6cce744b6d71a3024c508f3e79173869843c2031b1e52e78b83eed31d03b91700bc6f2b61b94badbe0f1437d04e7a1884adfc111d6cdcd498b5d7876258c1bcacbadd6dfc914e6e6d9aef9fb336ed3aa05bcdd5e4f9ba915cca1872573af39a6f4e314757fcbd58c5c9f18effa4cd2b3d7a07c0b7c33e7f39cf79cdefce28ab03d5e101cfeececaa0c8853a06b679fe994d58cf6fcb72321bfbb3cd47bfb3fdf87d22b423e1fdd8dae3c74ecf0b5a97995fcbfef8b12d5bc7f127d242edeac16dd9cbb7d75edf49c707c4d9c843fcfb7776428b06898ecbeedc60cf55e1fec763f9d6e6c9baf446ec68d0073bb691d67a6e502f5e6ca6bd79521d82f8e56621f85b51218b41c1e23040c72a769e4930425c316fcdfff73a7fd5d2a11b5fc288e90446931bdc59b346b6d0bfbfd18f9d3df5f994be940b9f9ba73a32f8a891bba26737df83eef267baef81e626e1b5e0f5ae966e0b9822b02f4a121416d32763df1d8fd9beb1dc18a6e3c2fd3ad8f5a78ba1b1b1caf06ecb67dc19f79ce9c4aa720d8b1ccf81c5eb5603774b35ed923b8f86bf0eeb977f7177d3d2af886ed8d249366dbdf8afee3cf8b69ff9bd66ab3c6ac715f2bedaefdffdfeee83e7d31c1e0a1f7b7a7eaaff3cd76787f5b8dff9e3e938e4f69afcb55fbeea61247472c816459ef167f7b73eca8e9dd03adb03fef9dfcf63c04fdfd1f302577bb1186db6e56c7d6fb9939c7158257056e776235be6edbc5aa8573828036688c44c50be06f7801dbe457c2b62f209fac33afec0e3736fa5c17f67c3772d5da06b13fd913ed1b4f9f3ff7489ffd325fe4f97f84f740903e24b987c5eeb50c7fc232a9c2a2af23caa94b7401a0bbe9b5f88efff7e426e1d6354e0f5deb96209d8f1b602799b0c9395e6cf54b5cc61fa47a3874c7ccf11f07934a6da05cdcc7c672b0bdf5b1d7d29490c354976d214eb0c92ef9e93b93db992f85ce5f19ebe5e91940bbb9993421d445b4e82034a7692d6f15d0dc71743ce6841710d795f623b868ae1e25f83c3b23987dc79e5e3ccbb74d0ac6bb3b7f3549921cf7ad479d3ba950707888b3e35b8e0398dbfc1e37b257a98bb1222c06a6cd9ccf48e05ee25cebe979481e79cbbf484f735383867bfc07b81ed5d2743d84e4d1573516c2f03638997b67246ae86f79cf825a93f92dce1b47cabb4861dcd6da3fe4b8aeb9a04748c8bbc43b7eae41f63caf5a74ececd389204f2b52a36bf97787b702e8093b039c69b2abecf9d81f6b4a13eeab86b16635d210f729128d665735fd6e4b2af84f0e0eca39953217b3cb4879350d72adf05bbbf6231a0731d70d6af0160079ad70030b55e20a6b0c6ae070c639feabb757f3c4e8440f5eb8cc561f17d30bfdfd01e0f7db7667ebe03c4c65f4209e251fab987aedf7ca658e7907f9f2aeffef6a585e1b748159bd60479f03443eb045c06c61bfb87acc91b54093e213b3b04a37efc203608f8bcb29d67767cf710179370eb1a9b50c37a7b20b6899284a3554efc68f205550cdb92cf271dda4bb9f31d3796b763073785f231cc93b19ecee2d77aeb5ecb68ea4fefc6cd92b55d93ba81c72edf6eeb543c56c380ffa7f57fa39b6f0aedbd272bd4b6ffa5f5bd9e17737e5edef098c8dc6adf608d1f823c0beea44381dc51cdd52c5e549323e31bf3b4f9bc80b8d8ecc9ba0931addbf447f35cf277225c4c72bdb65866d0dcceb09afcc37d3e1b6fd3f2d9da7f75f90b959b748c646c07664b1a2783e0ad94d8f60c0f2bc8e168e7c344871dd6ab00636225fc2ef7907f760b3552fad88dbd67d4e4845c242c54450846939331334b2425f8ef341859422009276316df17aa325edab7f8f3cd3819b3acc1166ef6959fc731d09d2282bb33f9b65015d6c7efda7cfdaaf30d73cc5fab506a8d917bff8fc7f9accd6ae746473c46bf90854897cf0b55a9bfa3e37e81b63653dc76056da759fc35abf35b5b730e8bfcb09bad21ae22046c86d61a0cb5f5b397934ae345ad06d785a7874b7d8743fe3db038fe27b1c1850ff5facdf15c6735ac38fc198acfb676ef27a86741e530d21d09b977d0cbc28ac3777573ac0b8c822e4690369c3b860a6d1fe9724530d8eada5903b9b0f56fc7cefcfb79884d0cdec9772da85b65e8f704e9561ea6f5beeca1f6a0ee0858f6fb50dbf09e47faf6d4c408b2ef1c75e7294978b0ca48877cbe6be02927e459f9bac8b11e20ec3c2b6ff260cd24203efb6c5de4176766e6d047a19dc0a7e55aeace1d6fc3c269de9981cdf883fecb8d21afc85d95b96ce6b22ac302fc10d546d732ac0b377d4715e0bf907f4f5cfc5d89de96ecfb47f3fcf8ba21f1e43fb8cfa7c66ed48468b6da4433f38a244df8dc1ffbdff16baae7f7c875de769eb90fc85a9d769e26a22d8cf944e396199e57cfa713d0f9ccf5170ecfe3f80f19cf3166f36d743aa2d336fac64b4c312eb02e42f79ff07b5ebffa14a8be7b10e200f40e5e776bc74847ba73833a3954b76163a463ba76f07e2e904ba5bfc41f2a95abbfc1f4f154d3c43646a0e759a76f8a2b744b9fc45c111f228961689f5d353bb5e303331e5775102329484176fd34d4d3af5d27b60755637c7e28464076821c8b6a726fe390be5e9bf815f31a3d7dff259e574ab950958ba1929c162c33df3bf161980707d238fbbe2d3c16d25e7f2ceccc470fac7b234f195ac303c13ca2f81a640d4ec69b81e9e5d2c50425f9001ab6b1812e08a63de8828cd7fc1cc219408f6fe37d7be7f919fdaf6b7e60d4744830b2e238a86995f43f277a452b477443edb52f5ba17636accb63601e972e7d37792a2f804f13a49357e36d3250e7e6bf41e71d7caadad703b1be6c8cc720e5e91ad379c86121c5374263ed3deceff98dea7b2f44876c8da1d149bf8b33e5e4c791c3026639369896de6a79d3d88c8b20fdc3bdead87a6dbb9beaf2cd1eeefb7dd17e52396c6364f17b39fd037cab2434324d30f47bee7b10a7360a2a668f907c00c4e52f527cf45a5e32be0d75b98770c8887d7320f8452d397f9cdbf7169dedba7fefcf1c9ed92006d9a58f35c63d0b989084afbd57ca3fc013f7800ff74f1feb17f2444b128ba0f47f1fe453c75e3d9467716b3d3f901e7e9797d0ecf7d62cb18c8bf45c40f60468bbc14b7c4a8f29a7dfd4b2d4ae94cb42172e35be10b977a372d061ed309f23d383880de12d212f24a0761f1713c668a596a70d9f6763c073fa5f39176cacecfc71631e7faf23d85dffce00ff1a9a53ed8be1e646e7b4e860e10729a91742f1b92e98fe965043443993cf9d78dba11a73da2d657601025ced31e0fab2b3c9e3cf6d9ead15f5b9313aa2186d2dcc51aadb83dfd9775fe2a5f65fd151f019f9bd9eb2ef633636cf1ee19ead3ebfe9e497a10b44a7e963c3b7e4c0cebec5bb6f6249fff24cdec8ddddb01cdf92b84d4687d4d7f91287232b0f674bda57f93bbdf512b9620a719d92df8bed24b644f2077c7ff2877cbfc6971c3c67ff159ebee1793895e5c077e2db7cf38cbf4f7fc3df799d00f36cac0fdce29d3d1cf3fe6c7ffb7a1bd852dff1d85958e41d2c53d0d300c39bc6e79e413ece9c7370f8e37d87b836d246cddb3a72fe291f23f50ba5bb180026e2b3f7dbf442f5034233f6dfe80adfd30ce137b08e54ee24a1315893e83fd40bda73817bb625a9bf74a63ed04ebc3ee30d24fe95aff536a4d777f30bfe3dbe05cf12beb579a27770fe5ff0e761db493f82add2d12d60ae3b7bf23fe47c9f3afa08cc0bec38acf3821d4674e092e27876759d7f8cb7172283aa8efe4cef78612cf8391afb87c734df9c5a7528bab56afe46c7a63e0c7ade6ef1e7a09e3d7958c057f3ec0fce1bc55c3dc601f16751fccf49636f359837ef84d79a32e6d3105f5ec8235ee6d77728dfbe2b907b37493e45ae78f9ebf7f15831afa7e3fd0fce2f7cfefc2bbdff8fcff2e3a99effefe90427433ff17ac1b7e7d850fd02af13ad59312c0b7899f2d4d6eb6224539953319be28465ce0f22734ec336c59fd81f4dfee83f75de28de97a77a4b839f823c9493189a13f5571ce3a0571b86c3a0b5998da3fc03cf827e74cfa3c239bd77fb6036ceefcffdd92079b5bd36bbe7ff3fe527984f11dabff5f9547db775aa639a3bb29fc45fa94ac9f13b6cefe13d857b1b3afe7ff039ed8ffdbf66afa5be7b8758683435cb20b7085ecdb0df40ad9f559574e78e93f090c5d10c30ab6abdf1dfe15f033ca4ddbe3364a72497bfb145ecdade78aeab367ef135edb76b4bbc74fd3fdfe2d8831f7ae45c485ca598447a7c097579347f334e58be759e2567e88dd72dd93cb9bbd1677ac1131d929ee7e67c828e4ace04d40322f78870be193db77930c94b082499d40b21cf7478e33d4707721f08cfa9c77899b6751f7adfd47906fcaddff8cd127896ddc9b57386079fa377627fa74f77cec4251018eed3b0cdc4ec5a1a0372092a8afd23fe05cd776d2426a7867cf97fe7c37f1fa2ef504aae917bcf0cddcc8db717d978537afaed1fd1b7aa70980c7fe3dbe2e55d523eb1d1ffd44fddbecbb193fabe879c374cd7f732f49c7c2be53fd0b04da4f0feeeae6dc4de07bde8b01290ab6544c7803a31d2ceb544a81d49f378fec047d419639b0f75fa2b11e433e6952fddf3efe989ae85b32a3f8bed537d0870516c25f721fe8abdd3f0d536bdd5eb0bb10ec067ed6c98b7aad1335f7a77be6590f6eee50edd5a09ed7d633ae1303edd339ede6ee39b7e3b7e81ba864c5f17ecfb820671d2daeb367c0e003bf982a6f4d98676373bafa43ac1b13387bc75ff40f6286bf2a55abc98af9fc1fc49588f68d109b9376bd605fa1eb89f907bf6ef40fb4bf5d6e46b32cc436f45f73d2e9b7607ce795d2f6630273e09674a1e14d61b19e7f618c27adc682e43e76ef03936db03cfefa9cecbd7aea0fc09eb65a48ffce93dd0bfdd1fffde80af1fe6f8ccee1eaeb5c18df786dbfc65e8a80a24a1ecc6f8047f878732f23d4b08c5951016f2c1f7ac1f73fd05db402763363919b355cee343f132d281bbf9e5793bb2aa408a9268768c43494c02fd768e24b90af475c7cefcadaf09727a06fd7ddff2c753a70643fee8c47702ae18e62dbe67423e765038259292341899542735210f35d2e55b20ddaf68947f3bd6502563855a5f8596eeb87ca3b070463b8fb487c8b8200694d17f1ba777300ef8823c6b148ccc5f9f6aeb731ae872ba90c4047cb769ebb7ba36179ed362642641615d0347263c6fb6bc84b37cd05edf5593fff9b095cbdc7e5a2fe91848f203d9ca2370b553003111ca2f5f7d896d6f1dfb927621b820666ee8f7242ca29ce0ec699727771771504c6afedcd2496674dccff1ef2bdf1d6781241ce676fdf988d713911ae8c2b2754ffbbdfd0f36ffccbafeefe93b04b32590c6175223a675bf0574b978182d7a6ceb68e31cebbb7e2157a148e4ff87adac7ccf3a2e0a740a24b99aeba72bd5b37b7a1b69e3c8ea83127f1fd7d7f6291ffa1bbf22c1bc843c5dfd48e223ec496ee82f1db9d5f68d438cdf13cc105e5785f80c72a67216f74d791f3b5f4057edb809f91aaa0ae0a70cdc055ec3029f9fc931d0b514ec21e2afbb20373fec7413301cb0de1e8ccc0ceb1c147385e4143b5c2eb63ebe621e19e83ee973b68cf1ba059e738af4fc16408ea27540a42eca291845795d1f84bf0b069bed08b4d68c61b56964ccf13ff2f9907c6c76b6486d5b4b9745bfb8e77315deedeb19350d92b5feb095b2e7b779baefe3277e2167e4e8af6023d2b37b090ae72552934bbfce70fd4e8e662b1b7911e605981e8f753b80a34ac607758caaf1d1f756d4ef0cdf9f40a714adebdcce7af3a3f1c93972adc796d198ea17985641cf21316a47aa8b34f57b49dd3916eff1b4de7f246d1bfe3833f348ca2b7cee090629f38be702cd171002e9350e5cedf269d758b30371ce5067aa0c683dd6f67e88dde731ffd182025d43c057ace9f5fc3dbdaeba7b31dae9f90991b5e7f76320260762fd60cd0946bf7641ba7c5e14e3fc73b6a67134bd986e824f25b23502bcf00bf2a26d50513c2092dbfafa057e91240905a29b329d88d2443940473ddf1da16b781fd3e2607b91fedaa7773de46bb6d635d006fa6cf919bb63fcafc4667c53c3815f7786c1cbd56f99427c01e0e86efff5a436023b9ffc593d7dffac68462477ea0a354f19bfd9e602c941922bc217208f9be46ad1fbb5b0521e78ff91bb8eb79af96e35b90fa3a052cec8b38e81643d1aac7e057818e65db44663fe39b3a6c1c849037d7b243cfa78edd492abf5859d3bbe459eb5c17d76f07b611c78fda2597e432ef107843347d8828e4168d194985e13c61f60cf2b62a481ae1cbfa793e35c023b760a58bb6a5d8baac15506fb3a82babb14a719fac5e31ea881376b743b83ea3a359e33f092c581f4fd6193f137b5f45e5a77c475fd566f59d3078d433f806d5debdeb59f16afd9a1c6247a9b401d0a5fba8ba1944b087c06c0b35e681d9378ae3b2fcdeff933bfc9d9f7125a9b45a9fd59dbccb19c6d6e5bdbf5c598cae79d670156588d77c7c647b1fbea5a5178bcd371b2491509daf46aaca5f5361bcf165c1c8c456a29003d2e0e4a158cac2bec35958b04d7d47961f90a2dbf60fdaef368745525a374f76fafdfd29e1c9197ec8399f3d87988e918ff181a99772b67c25bd2988b5512b8dbd8f796f1c6d5044e373ece697bc853048665b0035d5d16b15de617103794239dd0dc9fae0dd319ea359a5ad7c8354f68d35eab792bbf6adad0daccccc1a756efa373d9b950f3e8f449fc38c152bdc54b4237bf1b931814395777b73f9e6fde3df89ef308a53c09c03e8f92c85b3d76ae7619a81fcc3d1bb76a3f46148b11d90ab61b31ff20e369ea00aac1283e6f3c87d84d33aede9c53637fa5be07772eb82fc0440f1fc7eb42ca2f11b62f47cb8b4fea70034672a4cb9745e164912dffe37b28593c8c07e43cd1baea0b712520add6f5e0198ebf550b557959a8ca98f2a42ca81abdef13ea2b93faf1adf5b4e392faf3cfc49f4f9fb7ffee792217624c1f2f867ac2efff63cc58fd08a1c91d9f19f1c71eeb5620efabfa7e64a04ec427f0157af732d2aa488dcf10634bbf0b74f9309f19e56244ee8707f86b4f1f6ed57ca67c9fcd13fe7e6b68605bc829f24cc1989679509ccbe0b03c186fcbcad0cd32a239390830eb92249462fe2c13f93e63bc7b729cd3cff36a72fb7c8b72f4b615d1db549a93fb492a9b6eafc6dbb49adb596ca693dba78e0af61fddd35a86cdd93bda4bbc9c25fbd5c3bffb0fe3e15759eca5132a4b26fff3b17f89979b0cebef85f1a6bc342d521cdfa7639c4aab8d2fad24e3de1fe3f6efdbd3d70f7f6348ab37b49fdbca67bbbd7f637c3aca568f89b02a96627f7ccbbf6acf83b536c4953b15d07e326e8fefe57f3ed2c97d9566a5a1fa78adeb16118d098a007b765cef0d4f474d1d79da5ea70dc8017c535e969bc96df906ff3fa9054175ec461e0fd44e23e70215f72bd627e8b87a67609ef2329aab3f97be321effc67074b00dc3f8aca1cb1296e5a4ce2d9713cee5f1ee3c2b0fb03c977cf61cd8db8d4e22572cef05b07e5c316f62bb13f0b5815c1c39097e27d25b98f41f73fd85ea5ccf74405e574d92f060269ff6adae63bba5e3e8e886a7405a2581c6f9a8585d5da7d605805fd57298af6534b3c6a1ee40ae50bb1daa7710acb903c71f0eedda2b837733fbc85b098124da4c5f47ba9cd7b5425d4df031cfe1e2e4d78e62bea78dfedcd52dfaf5bb0770f19bbcb71a9be33d6d3e2f34de7fc3f4a709894795121115e84473f161efd9be07b3ec447427e5e4bbab7cd1f8e29bd880d9ea18b9a8809caffa338911ff7a52c37737730ad4e2edf59d50b950957f16aa220cfa00195e618d094ff396e8ddcc7b35392fdcae5f10e28207f7785ee732110ce21dd6798ad529f25665547018bce41e9dd0a573fea785734ec7e44a25e009d17ad2c1ce6961cab3774bc0e098ad7f735f4edafc36268ee174aa50c7e9e417dabe551ff8ff77ebc9c734ac9240bfa7bebbfa359fad9fd4bd87580fca6bea1a429db972edb0713d94a817a302f6bf50639f401c91c630c149ee2be0c88ca036c783f2ce24d2f3e6ae42d7c60dcec5e4b6d8fb974fa87184e76f8e17a96246aa32dab9f793a19b39e5c51572c56b0418e3b58d43f8d70ce5e161c5f21be89df398f8df3d4472193a351b9b3a828e04984994e70cfb1930fd98892f9d47be67666bc883d2841dd637b7f4fd473fc71ce87414256161411e8aef59259671161d135fe395d417914fc81e9f02293c7aaa496addea621ee9c915917ade59e33f71b245aaac03dd4942694bec010d955131bdb039639eb373c78f487712c47217088fa2f1f1215fcbe3797c04395f7954389768b69ab21ac5c4ff1a5ef05c876a3e37f9e19323aac65754f87ff25c417ca19073c4d7a6eed491497ae3e9d647aff75ed74e585f403382a341fabdc53b37ba042333eff1a4d6b9705e22ddb9a0369ec5b17f0f31105789791e1fa7adcb97f754392c0af9c2c76761391ee2f6618d507ddefe4006e69f332b0f8af58f7a9c4dcde96bb0276d064dee32d6316e740c05caf93ce56e1c0c6b2feed5c97e46d780e5cad176c3879f9c1d1b62b535d8c7e9bd0c4716f8a580173ee903afdd7bbf262ef0ad48d22a346df84da06fffd867b91d29d5ce1d1f7a75c3b476ee956f2bb7dd2c7fecdc5512a8ca83d8c6e1c5d056b7b0207545d99d5b58294224bdc67e21673bd7792c54e5e883ff0bf01f291f4e483f33bceea820d8e0b80dac37e47bc0d75149cdae60a4c0def8ee2d8e24b84b13bca1da61f55812f0fdac0b39fb04bfb2ac0692355ed47dc727563766a12a23b8ff99f13599a88fafa8ef619af6369d670ec4e7cefa78e7ea3f828ddedc5fc47c4d37fe195abf0562c360fe7cae237d86cdbbe5279d453989cd1bf491b279c5ef29a921f0c5eae772fe605a9f03ffaffa9e79c13aa23d7304a80fe5018e36c5a3be1f829159467a72a6fa458554521b03cb2db0135c119f81a4c9833b827ebbd3f3c34ebf8f0d827574de7925b6818fbe87ae3bd77a808f6ae43c287ee105a9cac1afa016c0231c3915f569321ba853c36ef5581c8086f7c8b3ae413aced16c7bf525590c0fab3cace4242c56c79d87f285849240bfdd9695bc0f1fd36a95ca49385a95481a9f892c9453ba06e7ddcc1116452204ee9d97ad4f64248f854df19c0ecb9a9e18fd9267ebdf498cfe88ea3ccdf780ed1115ac267d6dc35cc319c14823358011a99f4ceab4b258ad83f1f6caf50777f812c325aa6b6a707d457a9247fa14d39ef0e92939c43736ef0b3bdd817a6d03f4d58ce7601d916725504f517d79696adcbc5ea10e71135780e510b65bcf3b778cf95ee957b57d486b29247958f035f5febdf884e5267b5971f90635be7ba7be36890b089bb8e1697e0925a78ab4958079eb40cdeb32c07475b036918ef571ee5d3d7f6c25ed8c1ce51a4a34b772e0fd505c2581ebac83d18ae6c3868d8c6fe2e624561b60683f1b6c11e786744d408e26228fd499e76b21623d0879a640ea1ec2dd1bc49ad8edefb93c2ba5def3013a3971711ee47e5f5825be94f4fa6df051f3cb5ad2f63bc0489ddc9a719bd780e01d5d901711dc452e267040e6b375c77cb644def20789c174aa686a5e919ee76155eb1cf51d8cc1e3e7d13e59ae334a9512cbb65ace6903b6af1ee59106effd689df34e8c7c335e78b6b1fd9a7515431df34607e48455c8952f617b9aee5ff35c7daeb07dcf61c1e375fa60bf75624748ce4ce18c3635adf4f261491db0fa8e6d9c47c230cfe99cf5210c88367db6fa6d68f4f99d6b6d9b353ca7ddc633be338c4751d36b7b4e94667ff6e2f5dad86d5ccdd7a40c1fcf312a06f5641a3b086bb739369f3b798a742c3fc07ef3ac84bf7feee6503df1a9f0e784dbdbd7aba141febd14487906f5e4bcd5232275b32ec6347a633c186c2586d1d78ed3bdb4ea0b7aab37df5d1d9173aeb1a86d774cbf6b6cf4066bae139340715a43cf49d0db04ce78e4de5b3948b4b6c73d72b56c49f64e0cf41b4fd3249fe7a089bebb06dd1870addf9ef5b3fcae9f149fb9efda085ced41e433f7b71873b8ce22d61550bbee14f73e607d35ef73b919741ed635e47e679863dd3a56bd3ae2f51c287d539cd8793b67b5c58b39fc6333c8c8775e53db64d02f35af06f67ad3b791038a49fe348fa0e667ace61de1772dbf2ac8f5465e459e92f99e956f3d278fdc2d9707a348bcbd886631ff5bd63a6333e364e888d4665479db138d7bdfd1be379c6ebe6cb5b53aee5c24d8acd663eb5d450ca5c444b3b8aef557dbd1307e275892ba67903f3358efafd3ff50cdbf7acfe9b3eea81993d7e12d3ed8392dda22760acfbbc8d896d4fe89171b215eb6f223b939ab2799bf43e4f0ec0b543840236bd6a79a90b345fc16ed3d6ff9fc80dfd367fdc2d0ad121528273a827945b37e0cdda27a8ded1af794d17423bfc34a4900abc6f5d97a1d496c0aad5545eaf4d5f588c93a75725021a690c37eb769be2e91cf31f212ac73407ede27fdadd66deaf867a85b8de7706275b990be26f2a41dcf745d544a12b8901f067108644cd103ce36f1edef91dd8e4123b4a6c0da411dd46afc62a842cc30c8c95e8c6fc16879f97cebc8266c23b4df1d3f7db713530577c7ad7bde2483bb5f1d6804da9ea7f81c66bdf84372ff62d03cdd211c29588b7520c995a18b4900385e102f90373590a204fc78aaf20379e6d5e06242175dfc4d9d9cd5ef622e1758ffdc6f4b437d8d579b493f0700d66a726cc7cf71314e900b3bb9aca0f6cd445cbef5741190533436e4117aa63087b53ac21ece2bbc56b07ee36efc1acf8b39b90efe65fc3f99b79584c5bad6312876228d336c6898d6511723551971f5a27b67cb3f647198bf909a6eb3551215db389a45d70e8635e65b39e4f08dccb3efdecb4fe2efa1b4aa480830268df6f867e0cf68f444f548697d7cf6b19da71ebb3448bf7f05ba99a74a05cf746317318f871a823ea1bd2ebd1fb278fe10e22825ebdcf6492a7930c36b05bc28dbb988d4aa2736c578b8a623c1788fa4fc81ec5babbe581d6fe45965502930f630bd416d63dcae315b72b143518966d6918b53a9901bd5d844fcbe848503be0f8aa90ffb447820c12f2558d12c9615f84dc5d55a795a5f05513ed0e77fd006c13f043e1ab19a8679988a57948ab037ed7d20e78dea57f0bbab4eae1d7daaa9a9b705fe780975f9b138c4ddfac6e35e5bf69fb6d5a10fcc7358bcfe61750f0feb2322f12f9877fd82bee03c66ad5abc9c8caa8673839bfdd94a72151eb2d877cd6b4462bcb03cca224f3945704781f5f597d8b6952c905e0ef81cfaee58203859acbe9f7226756d1add29ecc534bf5e19ceada16b23dfcb2ec6b414c3d13a8e240dcb1f218038ce6d1cea4e05314e2ead4b53e455385a5ffa3c2efe4f791c93fbed78f2561c12d6995e441243b1bdf563a6ff6e8f9eda90703ef3029fb3458579ef2d7efc8a4fc6cc823566318c14f3f852e796da4a02ba03d4c08f4eec5c2ca8bfb977c69d9e0c67bcaf8ca0ae9e0378bba46e0dcfd36e3456166af5d11874ed4c733761ef787dc91c41ad7f81f1f4b68c23f6fbbc635f2c6afb04f2c54bc28326afccce7c46c34d8e740e389178ae01f5b9fb852c211b64075fa319fac1638ca43c03ec15697cfaece23f003f31735fd244b89f03de67e64862b96f589669a2ef99252a72ac576511cddda2b807343fbac189ebac7d53c3146c5ca2e7f1fa24d1f51c21921c2cb744125ba18c76eeffc3de9fb5a9a97cfde3f00bba0fbe886d763c145a101c125199ce043a600bea8e23befae7aab5aaa00a4abb3b7bdfc373fd7f07b992744351e3aa357e3e0e70adc61b6d4f7de3adf3916c18ee3afa57c71bdefe9b92ff0b6bc67e3e2907fb18e219787749f2d30bb2b77f2e3495ea036dfde3c9ddf5c8367c744fc5bb4ae6235f8b47ecb7555ae52dfa611e8d90bf97d6f454f8fe4dfd96ac7900b60b39572fe776ad09ac8b4defa733e33320ed275eaf88d41be49963de93768c54c0c386fd8fd8d2b31cb971afe9bca3b99639eb05ea2d6fd762303f17e73b6871eb0bf64e043c2743e0d4e76c71f029b4e592c44e22eb316dada56807ca9f79845fc2fb2cda1ccb16679f7a5df68d2ce1ee471cb7b44f0dbbb665c7557d034e21b9ad57eba3a27e8db819bc4f46265b2c5dbb259edb09dd53f50dcef740c76d3d7e6f55e5a9fc16b8f4f935626bfae899564d8e64dfb4fca39fde37f7ffd17df3b0beb8f2c337e411bd3b76d87ec8e95a0d7d9bd99a3dd80366f8341789c511e634a63b3699cfbd958ff402febc21f3d9f6667337fbe56e8da9bb127c3bbd4f3ef732dd88cf2d563d797b9f7b4ec088893ce305e3ee3456cd71c04679c3c73a621cad1aec21d43320a6754d00bb6445b96e6e97483d613d3260e4ba2f01d4a2da97c4eb6d91c7dfbebca1cc05ae1c8ac7f91ef1be59a805d54e815faf61e54332b7a7898ca3bff6151c427f16ad5d45a273a33f077d46741d3ba7832ff303e0b97f21bad59b445ebdbd42ecf045b0b39afcf9a44f645fb4313a716d85bb50a8cd8273fbb620faccb6cdb93fdadec8dabd3571a5c5bef7acd797f46d69b5fbbe043db427edbbe0fb27eb3f236b5eaebdb057d9525df71c56789eacc60deda2b7578be8662f825f91da39e4bb9385d69b36703a429ca7ed5b635d593fa78007e8d473cdf39e34cfcb28bd511f8dd4dffb283ec7e5983c88cfb19ca1fe25d17b802184e31d367f57b2dc046b94968d76cf89d9bfe25cb4de637c1e386601f7b93a0f806bf843c4ae3a20064f13ef14bf57fb48b9fd2ec3a17a72be980c1c0b67e64afbddc4b57c2e47c710ab6afa3db5466cb90798c494a78f8d55884f4f76e43e49f7d807ac7744f92ed4e457b5a496d778bfc8ef8ed7b926a3ed7e2c9527f8dc82d807307fadef5fe2364657154f8a21be7cb213d325b626f82c449b1be600eae860cc4aae849e22f561330e06d4c71ffb8cb99c16e467297a19ab479f6c3417e3b0cc36a19cd626eaf191cafccdc8eb89f65bdb17d2b0cd509eea747f3df273e0fdd863f7cd23bf2bef0769fa45c899e6fd680d1b818f550512ffcc6fd63fea53f9db6ada2142fc6bdb8e7f35be4f6c99e63a517b60117ab34ebc83bc60ac3583bd3da7f38beb5edba1c6351ed99778641fd0ee26ba16d46e299376db7ae2cf998f23853c49eabf0a7cb077ae7191c31a83be39b2b368d7b0f5702de01eafe33c57d83f737f764fbc4e0e7153d3286b5cf4553ad5933bf6ad6d3b366380f8ff5bcb475cc9c54a9fa63e1ec43f2c12e4c12ac53385b5ff7c0c1178859acf101d6344f36558fb45f5b3dfd806b6ffc0fff542ee4bea5f006c59e4ebe89f423f613637b32d8127208498b896c5cd3946bd380b5157efd33545ddb794e8ed1ce61dcc91c4bf5ecd9de80769c7f85bb1882db95bd9dd528d8bc68bcee85b74f6adb802d7e79f0b6ebfe8c774fadece4588ba03d4bff03b2d3b878ffb56b169d9b3ed3c05caff4cee2798a35de83baf20d7f50afbb2ea5fd3ff4065e73b3e2fb37d30de10f2dcdd82bf19e209e8c3e2ce2617675302ef94479b9774ee395b99cf29eeba1b0e87e590e82dfb9ef68fe572200ea3c497429fabf50f3837edfdc29e63eb42fe6eaf09ce291fb37fb4ff587bbc8ef278ad69bb82ee316ac7caa07ef0c95a4eaaef367ddd32fdaf9eef40ed9f13b2861ed41e631e24d81e787e21aef4483eb673c718672cedcb95c5531f9fbd87fd237bad92ad4abccb291614398f0ef24950be9ad0330a76d6e56d6418b732e9780bb74cf49a439dc587d75e0ff65c531f78100b798fd49eb2f67a9d70a165a1e950ff647269e5cf706733526fdbf9a3587cfb7e6fe4a4d07a9aa6afda9fa6a1f93d45bca719e0b7325b551a7395e4208ecdfe311c727a89cec783db3a148bcdc6b44604f0190be06bceadd1ac1314ce2129729aaf6bf7886c887c0de628527b2cc748d66616edf2eeda74b93b55942752dc10c877b70f35fedda06fbd4edbfe53f3bbd4a7837659bf08774497e67032da3162995f0a731f68dc84ae1dbb874ee25d0ffee24b5884f7d09f3f696bcbb755c99289902bd46c4b864bd358d71d9faf847729c49c5b724cf6eeb699abf4bbed83a6777ae12a7191e78cb7d3d295077e4658f319b917c8be89c93955576968f6cf76779e063bf714eb104381385aad7bdb9737fd05733fe0f9ef475a670b75ac8c8399e32d29d67e4a7ed7f2a5612dec2db7f4ac0c7da724e786f27c42fd1be6a27cfdccb474a71af3a9b55701c75c071c7349ee6f76894c8c3f63db57de3668e37ed5f34aeba4c8f90973940bc6768231ff32002c2d57617cdba1373bc4aa34a642e55e5ea0beeb5ce87d5ed74521ae07c6873de0dede92676df57684fc58acb9bf3ce8e7212a42e0bf0f17e8fbc71cefd5d93266343f7c96055d8807bd43cca96b031730ad0941ae3f3f277b84c5bb7f879e7ba57744168f0610ef88881df000176a099857553b8ff6d12e24fb90dc4b801fd0f2d7d578fed4f6005c401a370c8bfc05efd526961357b3d3d6191ffb7bc5be1f928a27fda5c61eaee5f1b6d6ddc24e0c39f95653bf97fa0e18267b7d7f35732e9ebfd7d6039a18a7e00be9cb703e247acf211cd5b557f44e03fb01cfd196aba115f24cffe26ae40e20af2b8e80aa5e8af7e353fb836232a20dd8ffb91894e34523df91c50cde1ff4a97cd4a7699323b7ca4f956062c87440328ea36512bded56d7f9b5c6383848726e514fa3b29fea61cdb1dec6626c03fca9546fa5dfc298636bcc9bad38371037c57ed279e5736db8be4e0f92bcddbaafac5e8dab515a703a51681a4ab0d0eec9c8ee045d8c6912dd8fcf99b15eeda165804e013cac9c3e0279fd8fb872b9b568e65903660ce86b23e0d3cd43bdc694a6714de65fb2a38d181f8038b9a0cbba774bcf366f34be4ec742cef5a1aa9b41ccb90c31f4fb50538c585cac36adf29b557baa7a7788eb506355839e7d4fcc7e197a73c47d00bd7f5af1bfc1ffb1d6b6957bc4b083f0fb642e06576b744da7159ecee0345928a749fdff127e2fe06561ccb599834db130e479e00cff0563868dfc6ea1ddbbd06ed54f6d15751da2eba3af0af06d1b79a42e3fa7e803647e706e3ea9ff0fee22dad6ec12756d7237001e07dfdf3a779cf9d3f9f6b91cf29cdb5b5de0c03f87f0ef94d83297b8207687a1306c403a5795cd3b15e790dab8cd6f72fe202623d9bc56f62ebe53d5073ea8156dd40cfdd5c4965b760187eb149b37a8a7637715d1eb56640d0d3c0f50335ff4cf13e0eb774bc4e5029f409690bdae6ba379a9eda93e57637249cebe70eea9af1ad7d965f588775a37d85d9bf9fb1af523e0cb4b46768f629d5daa3b8eea32d4c7477352eafa7ade97df988f54c4baa0735cd75d457eab7654bbc4cc37c6e3cb6c5bf72d87a345ec973a5e102bee291e393db156286dd97475ed0aed97d9bf2eea7b808bfbd4355c60ef8bf5df69cd2d25f7bfa3ad053e7cf0b750ac3c1887d715bfedcb7d5444cf393dd17b1fac1fad7f313b79e4f5cbb745553f9affa8f8ca5788e552ef8d07ba70ff0cb92b98f79a053be0945242efd6034c6bd5bdc7aa51b6739f6acc218865744ee23ad35c8276fdddc9884c17ce4c737e3f9f0334408c9f454face591e520985c8c45f04b3dd643c765632c5ccd0ac7738ef5fcfc7e69f91a691d1aced335ea6ae85b95e1eee3f3627d5635b7c7d3c47fbe9fea582eb7a789acf0c55a3e4b6f9f9756ff84330258206d1efb46eda8e3dd684e5da5cf6d5ab530140b4a5c33f405f132b3beabb8baf1c6fa61bea8b67ff367874035d81e8298266260bb79389ad2ba8355e5dfc3dcacefd53760de36d7cd27f424993d7b8dd4fc9cbc0e8f643facbd9e22c4fd31ee82328fd616049e7d1fb36717b4b6c1ec1fa2ddbc9cecb8d8277b77f1f0dd9ef8ae68a773985fe4fbdfad57239f2cd3d4de04e893d107b770a1a0ef1cd6f76533d1ed0f6bbe695dcb21f4a780df9f8cc8bd9ddc1b585602be6be81b9db56fe7633d3933cc7e96936b97dbeadfe3d779954b88b2b5b649e7451fe256d6e898bebd0ebf59af83a335dade7e6c06d789aebd4cdff710d37a5b5ae4777c5d618de55763555cde5e2147bf1381de91e85137e5eb7d69fd2a57b3ba12fbc26350d173968af7d2a059eb54eb3d0ab1af7b983bd418e36487791e62dd5df39994e26708fd3f63ee44f37eabf9e143dfd1437fa62c0bb7bb32fb77ca71dc900f198f532ee372c25a7483e833731a13e0c6f57a92709ddb59acba018b3b0685710fdd6d43f71cf0b5bd15867c8de5d492ad4f7854385cfbb2c242420e3a199e36eb1fe486f198f85c9e503b3e02b89ade02f25c795c752e0f4972cf88be746c431f5cc4366a2c8dc69dc8bef9a9e7ab1a9086bcc7f9471f2fe52a5d84de4c99ec681e8df8b31273db1b798c386721e20321ced2aa70df13bd4773771a3fdbd47158fece6ae669c514a385af578c555749c8feea121d53fcfd0f695d7a336f6b5f8d795cb6b0e129be4b32ad30b3885c6df643ffdee2247b5beeabbdfc8fdae5f6c4af161697f2972cb786d591ce4519b06fd59e9a5b2e474eb24faa7ca2ba0ea4f6df1dd35f0bd043596dc71e739889cd905ce2dd36c5f846afc985f4c9bcc83aaf8df15c4db61dcd33fade7c75739d46ede71bdac50ccff9bc5ce53ffc4ea82d0dd768e4e43ccb8f94e40a6587c94269e845df2f554d853f4d9765761e2fae15c631e01d17e8df0f175a81b9010cef0c7d22604f2dfb629b6676494aa83be824ba765d7bbd33d14968fceb3fcdf3f03c974bac359d14f97d65e6e7264e16bb431ab113e6e32f433f9ccb649c90b7b3e0f27dc8fec8b1bef273f206db890b575db5bf0f359e4d39d7eadba2996f24f7c1563c607cdf89fe334a253995e9ad959ff4fa34bf52ac4b7d7d217b5292276a3d1d5f2b67d46cc4a6205fb875dff5a6ff640e1683ffb246db761efb685b3ecdd192e761cb759951cae529ca759637ee1e69eb2f43cc83ac6560f33b78ae47db92cbdfeea3ee6a3dc4f30a477656d7705e2b1b212edc6de2cdf298abefa498f144df47aebb1139d703f00d866aae861efa4718a6d6da9b1dc22a6f8b7e9fe7ef53edbfc93dfa6b51639d20a6148dadf07d435e01090f95d5e7df9f144e1978c92be0676db46d5c183bae3656ec17d18fdf87d87fd32d02df3d22f60b60d77e46dfbfb4705850c69f42dfdeb570866aac22fafb58c897c4efccf227588dc4feba93f76accba1a47eae7827db7eed744aff734cca7827300b6c1fba0a4f7681377288bf16eacef4b7aa75a2d3f90c4ff43cf21ad9d2732e6f4f3e11a91fd82cf27857b8cd4d921196d4559d36c6ff107ed3dd11d90b7c8058ea8b8bb4d036ff60e1854e04fe2da7e472c21b64e1cc6d7d1328deb7a714dbd32813d37472cb79dbf906019916705dbf2f1f9643a51550ba857fe4b86237467bf8bc9ddd97568fec50bcd5361f519703f9fa39d83dc6cb8cf61ef078b1ac70f7ca479ebacfd0c8a03794fc02d839a068cbdb2f7295e82db3eeb5487f9e90b38564c0f64e7b5d1ce2a454cbcf010a879ce7293a4dc70ef1d01a7aaa54b9a4e1eab39c43d2a2c3ef00f0fb93936802b88d5cb22aea0dc072e9e8136d61bea979d3c2e9227e7197f6f332eae7fd53fc064c5431984e35179be4e4e0ebf2a69e4b965a8aef6f57a5d39ff0dc55814e5c975fa6ad53eb6a63db219bc4c0dbc9bb86fa22ee7a39dcae119d17802c880bf2dc3bdc62af2a7d03d76b74ce33dc15809f059567daa75030ebb9ae1d10c9a363ddb73327b1ef414bcbf19a6640f302065f9b621d517d8b8273be7d27eaeaa6be3db647638701137b0fb9ab652faa33e2795cdd2fe8e53d533bd2dad4ab79d2cd89898fed7ca4be67d89258f15826d0d997e756ce5f8fe294ec827eaedffffb95e5d66cb23af05d4ff543e98967d53e1810ef663dda8d69cfdfcd7e85aefb502cf21e36d177119c5b34aeef0e67b63c0239963fdbccefd7e47b1451bbe2bb617b83bfe77855b8a75cb825edf7a7ed17abed7f077e13edd54f5892f905f4675b876ed74ebf95efbf9766d4ead47317929e84e440f3a5ac671c7e683ddeb137db06bca37bba3b4f8a6885c63791ed6e6bae1787ae6a16f03674da563338c022f61f93d476be4def16e4a0e4901b5dc87c873ef89e95ea18685c8c1a1db416ed00a2b1b3105d49bcaf4661eb369ed1947cb24f791c1646085a51a7a2fe744cd7faf7d2d0fcd3c9b14fd322cfbddb5773a4c14fc8eafb2ef0c0e0dddbeacb887789ed811d6cc91bb3734f37b62223605e6f9f595c0bba671ed73ad744d5af7fd01e62a726801b7d6b28d41cecd673ee674a1c4cc4fa10bf64be3ceae6b40121aef11b1c7d0373bd135c4657d1dfc839a52ead3c5e75ab2afd217ab787dcd232ce508f58c97360fe5135f49133facc61f56d65e275f414edbe022d40addf93a3c899edd92030dddfd95b35fc10710e691d97f072c538a7bc0fa31a6f76f5dcbbc6d60c7852f9c7dae86deed12a8b9f2b6e8bd347c5e2aef2311fadbc4676cdf612adc6123c01b4a931ddc616aa3ae0e63999bc17f59cdda58f91cf5b1bdef69f2fec1b3a07b843df159c1df406b6a402e2c895ce030968439a9fd0f986fce9d817aaec5f5f84bf06b08b863c7be20e31b7e1aa839176a1c3485ee0dcaa16b6ce292e807dbbfac9183b5e77c2c8fc3c6aa71f859fedc609fe0bd0b6de2fbfb34196d0f13b593bdf1f9633bd0e31866f9631e841d8d9732be2f2f57d67e987fcc8bc061c18e2027987158899c83a3ba7dccadcc20af97bf1b1ec45971cf630ef237fa37ca1c232436d9257eb7b73f369a47f1b74a86818f38e533f23bc82b9eaaf3c67b33febd3bb1097f496428ed2f7097d57e8e2ae67e67d8af7c7fc6a3f468557a5095e7c27c9655fe835bb8ef89d92fa7c57cffa65fd32a7f94b6cfec40d9f395bd83b1736eaf571899dc9ca487760ed6b4c26ea479982cff9ae7abbb87bec3c5b55b3e20f9bcd47ee0173c6b2c8f604acf7ffae8f95eeb799001c80325c99de5c6d8e80babe3d38382c30f7f617c472c9fcf2e1b38b2e60c738a8157dc38475dc8214e133af78d9c8517118b3e3dbfc971e85f88fd41ecc426ee7d03dffc05fcbc123cf337bd07f8e54cb76ffbd4d93e4b051cf347fde1dbaadfdd8aefca31cfc57ed4dca1dc5af4ae71d157a22e19d7eacce2e062de0417076773c1f1ddbd2dea7c30c9bab3334dcfcd357ddb34b949c97e6a9d853bdb27135dfbd63843551ca27da667ec4c1fadd1be7196a87f55f68e2e9e67ee6e6b9f69b575a6abda67f07bef50ff6172ed4fce298cf97fe4ac4a9fffd67a1e7cf6fb8fceb6b866ff1f39dff53ede37ce33cc63638c83ff40df36836fb5bedcae3b7c30a607fde1daaadfed89ef3e18cb42faee37f1ddbdfc5d610c5c8e595e9fabc6dea7f810cd3d5fe7b309e3e6c7c1f50be6fd0bf94e63a83939e44177cedb50c7b5077ee965e2617c877fae1167601c464bb2ef020f7da501e5a6663c512b32e6c2d8858bec5eb549e544dc75376bcca3a0679ef25175203f3f0bd5d539525f18b724ebc73952c382e7eba9bf013c4dade7c38272a34bda87df2d1b5c8ff5bb8fce36cd45758de61cc8e615f200a18fab34005e30569359f306018f7dc9f00581f3f46c0d4ff91b6224e35cebda39f03af944afe279809f8c1c6b551e3a39a71cd71cd48d5de2c261f5ae97495d0fa1f1dc69c0e1a2f64b5a3b7b5ffbc003d46c8f9f07a8995afbcebdf2df439d39d43de46fa3f9b72aff7e744c6d15c7bd2c8c53b888d39fcb97d4eb9eeab6ef427c8ab4a3bcbdeed388c51a5d85f97e30a7a670776bc42ec8c321e3422336609fed2b9633bc87ba82e7dc14c83925c406f8fe226e6c047c5047ec9bdec49611f82ab9391b642873ebf367b7b91d94f5c8be2425deab8e6f9751d7dadb2ab73eb037887d4164bd8b35d6700f0c5381fff21196129e5bc0d78e4cb2e730be10aaf93d31dd32f41cb69f237ab67e90fdd6cecb48b3b5699c43f396b772e9c83cd4bfc3388897c03e8f0b77cbe482c7ef055769e4d6377314b22c2a9c63e8db7756b7f6c6cdcb0f61aeaf69d0755ec8cf9251c6c52a9ab954fc19a77ec5c58df38ff48bf0f3fb41167f00bc58d7ec2f28f79f169957f007d7fc1d7c7bf45eeef2fc72b1e08bc6fd9564d1ce59451d3b8fbcbe1aae0cb2af9bb97fe46c4fd6deed88fec7fe31d499bc9e22671bc84bedbe366b6ef3d0eb5d122fd9f3d802816adcc3e5a15987f007e78ecfcda86ae9aa3be189cf1dfc33d26f764e38a6612f8b3c3769e78060ae71e8ddf2c424f37f7badf6497766465d1bf73be2b8543a0ab7aec8f9a7279ccc8b9bf9fc88fb65bac7d077f2b9773bceabf74f77a7e897b8e7e732de13dab7957c4e1be3fb741d018ebb3e13dd4f9fc376eca6e897969e81bc5d539b0672ef74a1fd3affaee5c3e4e35aa0f372ef614e293fdfa053f17c9ef21a1281f313e26ce6ed10a8abfd7a714da7cddad7561e513b5fa99167d417625ccff6ab988b0cfc8fcd7c695e96ca7822026ebf501fd797f602c385e1d6e349ed505beeb5c70bfb07c632f7ed5d426bb05adf348d32ecba94778d8b836e06ed9c34333cc485abc545d2817a0af48f6994d755b4b7bbda71edcdf24941d6f8ba0fb83e4cf4c1ede1fd06f947ff7caf622ca1de5f0baf5744a03f737bae99af083ef86a1deda8082fd87f7c7e5218d7d8bcf5c6ad767bef09d407b7e6e7591cb2f24f563af4ab3447a6cd753e0ab3c8cc91aba5d2bf39dd5cb04fd3acd6d1c5bab8b8e877a96fc28877f625dea43b2a530ee16e4be6e20c782723f70e79a4deedfeb6d02e74efa5813fad394eeb3db9e3fdc69c9e770f7d5b0d3dc78fbaf616ee1ae3b823bace441fec50bf8f8f969e5c206f87b6f1447681cd15efc23c3412d48dabf8ce311d972701b301efddda9e589bc67dd94dceab917d8901377cbb6ff51162348dbd259db72cb6f2aaed7ade40afc3b3bff6c243e8cd8f88750ef5d80acf0b4bfa83bc1b5a1eef9c9ea527b1b519803e0fb54c85bb75895e3f02799b8e4b2db636e41929de61ffb90d49747be026a0bc38c8554cf34d1ee6bdd0dfe3faeefe3c57867c13ce675da7c1bd1b9f279bbe9b98f9312efb803f31290e77ccd111eb5c1d8eef9dcc6364de7ad648cb63f0872929e2fadfb237afdfa1792a596492bd922b6b5349839d4b71b3905f7fed19947b6ecf72a5cbd0eb6d890c8f370cb328cc027575b686444ef4bba89bcd8e6b2a0fa1069ed800880371277a3e59fba0d4ae956facca91d90b7a0a62a0018ec73d01fe90297055d7f82190eb456b5ce4399d6e91abc1a237a23946f8ec48a1751329d697d136dbb95c54f71b29c0e71ce7750d952fe379e5f611abb398e844b777cb555d17c1c7429bbfe373269bbf3b36657ae4192f1ef88486d7e9fbbc815fd9c9de8c2d70ac4e5f2da5117fbc879ebbb55ef7a9ad383960a979f999dccf648e2b0e7ec43939059e935b660731585087ded5f6c556e078a61897ef91699077ef6baf738d465b22b7607fc4a5a6ad86c0edaf90f642acb96632f51ea9e43bd5da66dcddf1adfecee1ef58cd0ec055e4f5c83c6d897e12806f8dcfb1aacf24ea2034376d04726d19fa8e42f62bd1b5c87c8c1bb157beb6a6f625c319ddcb6b20ae0f6a23849fdbcbfca39f377299d8991dde0e5181fad45b97d7d1a83e64deb24075012362ceeb9f0d1f3fe2633cc0197f5097c3febcbdee711e75cabbdf9ecb53e06741732eabf7979f7a3f1c4b6a987f35eb6879db561ff05c96a346dd9b307e2eb7e328d63ec9e704efca1a8309e239ba505b77460cea563d16d42c70df3bbfbd1edb18f68fbeb1697ec3927da3fcf36f6cdbe358cac6b16d8f63f9856f34c7b1948d63db1e47eb1b58d32d3f1b145384f767b76d77e6dfe66ddff467a9fd647a10f3f58e11efe34064a4ecac855e0fb82c81bf7705187407e4a0421e7e0936c103fb51ecbfa72206cdda73129c0fe9996667586613cacec09edd714be4d18c2846ce213494e619686239b6c6cef2a1a02d0e9bac5d8fd0ae5fe76c6696f7bb0b7de707e58904dcb6b1bee5f8d98e954cfa51366cbaaa3da17ef1593d9b6cbe9afbbf51b76604ac6e4d8639273b8b52992ec53b68d65d7ea60eaefd3ec43bb76e16a819e20399ee19f8c957b0a7ec0838d98c23f29b7fbcbed5de36f3f35af9686f933be928f303514c3367baf67ac4b63c92bf2745be45de0d78efc3be442ad5dd86b37de0f576a1d794e7d93bf86655f7fe00a7e149ed316dd3ffa4af47f06f64594473e9d9bf65f633f71ed679d16729e6f893eff03e09dacf458f8d75f5e66b398b39069eb36dfbdee57f9ec92dee3b80fbd0c6b76ddcc70f6a08a57f4c278f4c17b0f6e8bec033df39d131adce9c4c92fbc7aa7dd2e451a9ef07e68fabda247bf8c3b969ae0d9d07177c37eccec84273be7be8bb13dbcba3ddac13172eecfd85d723764e1699f9b7d09b73dfc1b323932be2981e63abb4d697fa6c9b3aa3a7566b5b9fc38fd65772bf3f9cffc6cf7ef1318a7f28a798ed1c16fdd2f18cf7358ce9b87f26a7eabdabb17be6126dd21d9bfb508f8f96d93f3b28bf5fe9b9da0ab195da47dac409e66b41e0cf78a369c9c8c9235f5368dcb3c274ac6c4d724f9af9b9ca9d3699ac87782487a3d8bb37f1be25dfabed5415738e21b7d93809ed20a6a89334bec5dbfdbbb8fce0db9b01b1eb72debeadf617393b6aef1217c87d06d8cdd0af0ed895edb6faa2cdb273cfed1abe5ca9793e195ea9fc0cd7d83beeb585932bb94f58be3bd7c6dfd610eac2a10dacc1aac6c6cf531357b5b633f19ce2fb1fe20cd17e3fd4a1522986ab803734b23b0c8b272abe237e0ee6d873f8d0bd0f6ca501abf1e3beb14f5754d78a31c64ed67a1799ab34ee3a65e2cd14e06f1f9d5ea68b6bfab61c1ead515a4e74ad37dd2947c4b49dedc14757d50c363147f73c8fdb3d368df770a15d0275d689cd9cf119b333db7c57c47235933c19f23a54b396ea81fe599f6b5ef7fbb3bd63402d5b0edc9788f7780c3de31e2e287f52e1321eacfb07fb67bbf667b4def6737ba8f243aa6131d61376e7ed26ba7689b6382ff34ade7de66cb4f7c35ccd7288e100772ce665616df50bcf77cdb011feb24ce3c830cc81e784616973670af0f128f6c147f261edcfe0ae605809cd38d4e77c1964efaefe68fc2bc8cd76efc0a359f91e8d63a8f6cbb5efec23c407bcaebd1762bb90bf53814b6034e5f77bedf36ccbf379035fa2c6d245dce30d60be1721d6cbe239a9ee98c0bbeda2ae7d48ccecc4b8bea35192bdb5307ff7645e4e8147ee21e4220dbdbcb4389bfd837d4ad61ad644be1657b2666c2cd2f38772ab7f898d0f6c7bfdbb44562739c4fbb9fa1c886f5718c376cf327372071f428ad54dd703383ed1d738cbc9fea5fcc54d2e74b216f2791df1790c42be12ab33cac3569d9f4c6681be53e786beefd350a5b6397717c8e643a2072cb81a27ac0505be0f453647a8fb7d70e6a02f44a7ead47d69ad35ea5c6dec922ad6083a1ab1d5a476e0c27392763de3237d8bcd5d5846aa92fe407c662a17aa31629f683decc29b1f5a35a8b8cf94a824f784641d3619cecfceb990f75bb1f50ffd8f0fee54d525fbb13efb5407635c4e807bb7d076c07dba217778bf0ccdfc0c3567adbdd9d09f24fb467a2e57f976a26b623ebe382f189764b9d6327fd1ea81cd803617d48f3cb19bdbf9cbad67062987f92fc5f8ffd01f08b8b8d55dc3c79b4ee4fe8a5407f08a3f71aef4c09f91730e3981551c42d7f235bd072b0c0ad3c9c3c2e844a3399335d788e83510df9f0b31ada86bb7f521df5142e03aa3f132f0f9ad9af72ce30bae394446da31f0668c1f99cb176be94d691547a2b978b44d3e0752898b7c17aa90b7c9ef5586af473923f9fbbdf91d89fe20c56ce8e54907fb8e7e883a7f60d9b5e15c5bba02be8f3560e24fc9f9e0733495b5e9b6eea9afac03d829854b7f3f67f14d9c1bb5974f28d6b630c7466b8ff0f3b70f683fa3ae7d423b42c4ea039b77a1fdf5abe2df96e43ed6323093e80855ae01edef0bbdeb7b5cacfc80ba834b79dda9ddb79bb6e64b6207715ccdda016c523d613c4a99309e667c0e31ba159a43bcb54ce3ceec7e39efca9e71d889b8d74fd62c5173b2f7367816d87ce1fa903bff435b93f3a5b76dce8ff7e403b989b59655fee327f636f5db09f9ad4ffc4a4fe27ae7d04fe6305fe843a97301957eb97c84b38bfd667182c63ddabbcbf966685f44bce60739690fb93c785eae8ce28054b653254f47f2f9237a0dcfc944e7e5c1b7868fe52697aff4a3c9ab268c51de8f4fed1509e66f1533177c637cfe80542701b9b190e8d2357e8f2c86e4dabc1ff5972badf91f84457e0c577d35f46d75edb95d6b4864687e263224f05ed2b5d7c9427555733e01c64e92074572a4beb343003cecb72cee4e191ece726d1a5762d7879bda168c4bed1efb2eb1ff445c1fd3e824667689379a16154e197adb74a11af7b539db078bc13ef04e1991734961fc0e004f43037c80f8bebf4cd484e8e69d60d37b8f54e512783d953c5fe567e42cb706fb3cf79d2391d3ad1c9baef0fbf37a37e5f37a7691e12a6befd6aad79d6cfaddd0b37791defbfbc3da5c3a6f0b98537aee46f685d8f111dd13dcda0c432f3c44e0579b1d225f3b860bcd5d2c309ec1d603782a557713aae06b20f64919fa56c59fc0d9e855ee0eb10de352cba28d76883ca831a1584f2d9ca5738d99e01c22d3bdaf4cb7744df785dc510ccb419a0bf36cac8b8ccc651e77b43cce9dfc6d0498f9426d89abba1b47b9c23d1daa790679aa8097a39d020ff8e272ca2984fc112c77a4710f56dc4da39982ba1a70fc7ce36a7e34d770168b95edba4377e977346395f7e7ab6d3e5bb88eed6e575893fbca6332e0397372e408a1771e8cd1d9d959a8425e273903dbd0b7f6220e12beeb4ade750bb74c4cf765a5661959c7ba5611fa299b338a8dd0fef9afd1359d2e07e58cf2b7b9c3fe7079dfa70ed10b100f766b9944e674b2375d53423fa3bebdd9e1ad70b9fe1a4a641a344f96da08fc9ead9e4b8efc33c1ce057c0ffe6709b95f46537e4cc7489d513faff0f3331f0f163825b839ac727286e131520d657ab769ee6daacec4b9ebae3d07712eaa36b29ce75244fc06e07abb1319278c0de764b8f66d8571ca8af5fff5dd1d99fd2c7cdde3df3a6f1fb6f1a300ffc997f8326a7f11e3bc64fad626f1c222044ebf80c9004eafabf56f3e3e00bc3aa04f93f39f4abf31e1fb56e7cf119b0df8df885edcec27c747ccf5a1f677c43c6ef548eed760f916a8abecc5fff3f6f588d586c0f7be35fecfe7ab97a18f777395cb6ae6797cdfd7fabe2bc8080996b8bb8a0be31cab903759e38abbdcfe10fac67e4ff60987438eff17fb066b6061ff0b278ff326ee0f2f43ed3cdcd979ac662b763ec7a3ea8c1f2de03de27c9f688757677952f4c8d952c355bf9def0c7e9eeb99c50b2b99be78fabe94b39d9ec9c6b3833e9109936256861ecc1debf79e8fcd457a0f300293c2adc7682647af73ddb84337700d77e1b8d78da51f611ffb5cce0be97f407415a36e9bfcac7eef7be900f7b801d8190cdfb3f17d325e1beec1a53d24df9ee48ee1198ebbdababfa6dbf911f0ebe1e7f668be1d4afeedfe5829f968b97587be6287ee7075b4ea753a072ae82e77c977e770ce3c57097dfb20fd76e367cb9531f295d05e1a8eb1da5c610e96c3fc87b33216ff4efbf98f47edfb4ac75e0d3bdacae8c3ff1d77b61a8b71dee3a448a0f613ceb0975f23cfb84abecbf1c627c7c9ce3daf3d386bb7f522e3ee8459e4ebf63df03a57c079d2ad745c6a877094258c8f8d8f9525d51eee9d031ff614cbeb025ba9f1b3168611e75f60f17b2d316f59dc616be9528e76773b6e9fbb0c9e2d7b8758710ef1cee9c9ea62aa3ea20ecaded985be53edffb86cf1d60b3902b40640cc65a9f69bfb34ef5f262728767ed56f6b74fb6ee946f3f7cdf993e5fc94a11796a13fdbcbe409b6734dd74fb97945dcfd80eae3817acb03dfc63b78c1736f74444c1ec19eba5d026fbe0fd5db6ba4c27950f8b9203af3cf85b68b86556d2f872f0bba0afe9eeafe641fcf81bbd87d4974014b88ae63856de1834d3044dd692cd39d45bca66b5cf477a073bf2aecdb552e22a737a35ed4099713e68353c265e3dc7762d59db3f6c6441f5613a2077067ee760954a3ced91be1f8c8d94d86fcefb2aa5f135d236731f3bb21b937f33743bbc49deb66a26bb15518bf82ae4bf4f0d3dc7794b8c83709f8aee9ef77eeaf5825f7807b5ea9f9b7d0ad7f9e00c7f30c7c66be6e1d2de3ba49dc7e75e6a706df86718acd5b1ebf1bb1b5b9a6be6e77fcee2c03dbc8b74ae9fb5c1f12333f86fe6c1efa7675d67cdd4e5a328c9347e1869747d3b3ac8d892ed5c105d90477add7cb82e256e9f96caee6be5d06fe761f99fdf72a0763c7cd7329de795f6aa79875e2ae73895686928cec43b02377c154e81bd3d521b78fdca974dfcde9cf6b3b442a2baf4d5f85bbda02c74e5cb6f8750e94af9e3d775e7b73c89df9c006abf56b1a8f405d80ec5d86ff45398a5cd79eec40ef92be03fcf8509b3d38b158c384eb4f4cf6677d9ee8793b41bfc7e5a0f42b0e6dd75d2c7abf22352cc0d7aaefd3198f4969325f4c8e589cafb384e5374f76c06df1d96f2af04dbdc3f05c4edcf7ef6bff90d7e7baf94d37a9b89bc8bce47dc6db9c8e370305e662f9accfa1d0e72fcc53b7d1e7df9fef73f6719fdf9ff539ffd33edfa686b82fbeb04637dc53f5f3be5af17aff6dbdce61eff067aeb52797f69fee8fdbb4f3c7fbf936333eecf7ed79bfdd3feef72cfff3f99e753eecf79de31dc0da49cedf2fda995947e01ae2fc0bec2e26b29ed86e958c45dbfbc89ea5dcdd476b68ac5cc3b6e7b9bb72dcd9afd5d05df81d6db158756c77987b0ea7fbd0b9647cdcbf19f69b6857897c9e906f4c75a2507595b9c0c739dd27def61c77ed774e27a0b9adc2738d1a4ef7c09f33c4cbe462d065afc51d2fcdfd6db53310308b27e5f77441fdc9eb2a1723cf135d3b46aab1450ed81ec58c5955e3b40c3b477f8a76485eb91823f54d4d0ad4f3d8d827ba981f2e8ea58551d259f3721cf2b985b93ab3df89fc29d23ad3d63e8b0bf7147543b6cfd87ee56b00298f96b017fe0b6b1f788c12619fa59325c5206be36fd6ed11f959e45bc06215db2fec968fed05709a5bd82f9cdc8e8b767c9fad111b67f3f927f5de1dac69edbd475dad87e72a27f62ae59a74ef4cc7fd829ed03c8f9f7be70b67f683b596f997f6759c1973562610674e5a31c5a870bbb84fc4fdd87abf3e63cff432992f6b4fbee1723ab780ef4b64ee8ada80504765773819ac70edb0d823dff667fab22477ff78141f2d93cfcda4fe59c80d89eb1a7513b8e5600ed6351600e80f8e999714b34f89776efe4cd6b3b88868b3839e7f87b542fb685ff9b5653ea6a1dd098b308f3719b1b1b4556e6b9edbd7dd55683aae75b44cf6fbc6bb5487768023f8d1bbd57e27bf1f7aab9eb65ce5afbee22ce66e2ce8eab46ebff64737721f9b6b1816c63156f9dc47b411a32287f55f7a06b11d5e6666a88e05bbb0c7aff7d132c38cc8fb89b80f44bf847a3d275eef80fe73bb68b47727776ee8f5600f4caa35bf56eb3c96cb33d25f15f840fd4c4b464eb9f6ec798439ef65e31becb979d49d1ead570bfd5bdb70ba548c15b917b046f89a4ecbc1dfedb8414ff75cc75875fa73c7b57f39ab9bb15cb93f5c1d30ec85754d1ab6d70ab83d1db23f047b516a1797d774ba40df9ab3bdfd9cbb736e7e0777a8e527779a3fbf4fb7461917466fb2b5434e7e19cba13b7356bdd5441f003efe4cf4477cc67ff557638eb7716174a91cbe539fdd62b1327e38cacd58913eebad7be46feb353888fc4e804970b10ce7a733fcfecd32a0ae7b178d66c7b517f6289fd21d6363f6fd0106dde3585a859559c55e22b62ebe6e5fe3c27d5ffb338c5178ee76edbba758d70aa23f24afa7d8aa7801b518b098593e41e1becf0023ee7689df9f3f372d35b5f2e3ac503ffbd1b96e2a9f9d71dd54e760a1d5be88ed3c157c13adfe547e87b4f675d8436bc4fb3e867ff97acd69e2eb767596ad51ed0b71744df08dfc51ffeeb47f39f71ef2a043fef078145ed6342f4118c7a6f231b6e609b03397c06b217f0fced7ed17acbd32bb4466bf445c48daced21e8e85f9181cad5158f962501f9e9fdf00eb591cb3a0b77ed4bfc5bfd5bfe17f4fff36ff56ffacff9efe95ff56ffa67fd6bfd151fe1d38e7e975a20f6e137d7045eca563facb15db22ff87336628e775d13f44806943cec27533e6b07f1fda942ef3dfcdf68147ee855adfa9f2768c533d3705e79f5b686ae84d4bcb347eb17b6665f6ef6cbcdcd9cfe87dd8c1fc4cb833d2c0edbf27fe4c89d48e56ffdebd3f9101f8bd51c34fbb7c2c9f22cf50662063c498f9a3e759df12b72ff39536659a1af88c433fcc83fb344daa67dd57b0e75eff896c4a8e3e97db0efbc2ed0bfaed780373a28c1b6b30e936e66881f722e0b38963c03b87dc295dfb1cfac0d5738ad4f9fed1fa4cf48132d93c6c07e66d4163f8ac2d32af51d77ad8a6a57f4f67facb61826b258f433cf91eae937d49204e801c430fd6b0751eab3537f3238d85432ecd64d317dbbe37d6a840bd8ce61cbd46eaad13792fd598a1bd554e74fa9749ab9fcfc7b32afa5dd48b71de84b6b8f921cf8d97ed3db6f6827da0f6cb08fde57deb757046bbb9298bda3ac26497f5980c9a6ed22bc37d13cf4c85117d083759bd77f04e423e16617c56fa403e92f982733d7e1d1eadd7616b7d78593e366797b8e8e5f166d0ffb9189493f781f4ecb4cea1de7ba19c207970b7f653a62b8b6bc0d5307f799e404eb7e7a9d33effadbe0dfe66f9517279269937e4048177e66aff98781dc4bfaaf7704b56b5fb8f7c23f80e9c9dbfe95e5ea2efbb2187db73fa8ddfa39f3ee35d798c4b3a7768a32793e270597b2f7b5fb763a2bb237eda077869426edfaa8543b62adc2b60c70186a296596687d8b747aafb0b3987938e7887622ee30df33116d99dda8a0ddf535d0bdbc48895d5df38587f53e7b89978deb1a691fcbfce415f73fe499a5ffc618da2dfadf3ee8077f073755ba31031a6a9df9ad54aaeb83c06ad8b9cdd7cee727e025c7233bfb3fce4f0a33a59a3f6c97eb97f2394db5c1e25726791bef9ce9ee6a5f16bfab81fb4ad1f9b1a3b1ffc15724e0b587bc0dfbf5b9facc59d5d121fb8812f219d4bba9e676b9817c2dc99b34be4613d4cd49da7e1cebe440bad1775ddd2329d4be4190749fdc57be8db0ad64ef6cbb59790352b437f466cfb77c6431af8da35025e2f691d4e6e9999928c06df2665bf9b74e3f35acdca48ed5de2b277898bf8c2b052e3ddf642737b2f7157cb83eef41241cee04c99945365f26ed19a9c0ee0b087a64bfa76947cb7b90e65500e90b7b198553e97162fdcc88e299e5e41e4e11262ffe101b0bc691d249e6f5ae7c172dac8dd3872f670f7fbc003eb879e3d5aeada86d65481af81e27dc531e56c8bff3bf3c1e958269d5b49f612f9d6037e23cce7a675e56b6f76ffc1bd83f9a04cfef5ae89efcc02af97852ac6cfc5dcf0970b3e33bf54726da7759261278b0a6317fa569567de6c9bd65f32dfa40c1392ce29cd3f479c8f2aefa3c28824e3c61c76fa1cd617f0f926cd3ed3dc6bd6e746ee7695e75e329c4cfadc92e6f67fdc5783c990876d4dc9defa44dfe039c9581157d8cc8bb7277cb3143b5c9cffaf70e492efe5a4ef2f70efb0fd4bf447b087fc29cbcd3f05857107be418a05c27cd2c069b9d1565823cfb87db56d047cb250277365bc8cd579ac6ae9af14b3b37f8e46db3429f27b42f153e2b2aabb003e83d07376423e3cc364c1fea763f63797375c73be0e4e584b4673493c22b329768299bfc7e5200d0a771ff8e121ea5a676bc8ee53e7f8b6d0ee0991875d5b21e3e7b141aaf1e85a1e15c626325d1d7098a04e11be5926de4ae4432763f66ec7a89b201f36e246a2edd6d53232af41779bd675f87da8e9054c4af576813ab8fabbd70ae376e594819f00bf3dcbb19e2c98bf186aedb7a1176689775388cd117ab7635cd23385d81b755b8b5abed571815eb53f2c495d15ded3b33c5c70b2ac9b7493b2f77b3db22f51d1bf53ee4b86795ebe2d58ed491fea5ce3f2fb6df23eb858f7d5795aad671fbe0b6396d46770353c1caf32c4142ade1d6e1ff4d9f910b8c647273ab62aa62a5bcf6f743d8f74feeb3aa61ad377c8e66d5ee524ed590ca3f51ecd097c459fed279fcbc32c1ab9a057f063e4fa0edf9c2e6e8d3151df550978abad6f604cc902bcd589216d378376ddc6ef469dfa3bc87b5fdd35569d3705b82e44ef087dabf5edb05ac3d92252fb4aebfb66726cfd6c941cc211f034379ea575117a73fc929a8cf63378d69e3fd38c2346d2b9049b7550fd913f437e37fcc433f573cf9f217f8c667f93f6dcc13997d75d96adf1228e2fda128081c0d570b6fac3eaba605e5a7b90ce2f60859fdafd320103abd597d679f06ec765fd9dbf7eb5bf9345e66d5a7d6b74eab7bf25ea1b60afd777f2ef5a5f805ce6c6bb6d1d44ae6b54ef5ec6c5e1be36f373a26b9d68476ccbf937163303fd56368fae6bcf77ee21321df06b3caac796ee893abed4d059d2c38f12b848c6c416b7cc4eb6565769b0a86a1b6b8e64a8450b0f21d443273c87503a66f5a9ae909f5bb6306a6a1da339f7ee626577d6de6d4b7d8b6d7c8e861ce7655c8525c5e951e357ed25789f6da6aa750f8be0717f36dfff5eefa0064fb146ee99e8f8e1eb1ef305164cc716ce4bbb7ec6ad7dc3520e42a97c6de8b83b595d4ed68c4fcbc67f6ee8b4d25c093e3799e9885c1bf44cf49a3f47ee3363f61ea0bf56097dfb1c78d7cf8f93af435b002f008b55e01fe9fdd2fac3c738bef24efdded7de81f7fccfcf939013d2c215d51fee5d96cf764e4ce3007e583d28983e4becb555d1bf240fdfc73f899a6f81d783d7633bf625eacecfdcef283770277bd333fe0eae72c25c7c96fa571f7f8fcf6569ddd705bb736baee7c8335ec6282f32b0b3372c07cfb1422fdfad47f38fbf09f95bc991ec33cc7721b67b02baf898dd774c0fd0b53d6df70038bbb27dc9cd7f24daa780d3dbf8d999d5f3639c2463393e17cccba8c64cfeffb96f36e4257c53fcd9bff34d5e277bbe87814f6655b8f740358e6d6cdac1be5e6bf45f4a75cafa19caeb97c516d4fdcdb2c874b7be6ec964f15fcdbba1b9aff05ecdcfa1d9ef4e0ae712505e9baa266fe51e29cec6ded7ed77f095f833f40137daa635bed519030cfa669f00bf80de4dcb26be06fcdc0e1f9febea4e02fd84eca5ee2c6238535f902b153694bbda7e93ddf90c4b41b61635a682718c64780a8dfdc274a7e6cf39ff19d77e850585f9ad3cb6899941ac90e6bfdc193654ccf9d2038a8bde6ef7d01a0b6fc7074c07daf2bc7b43e1fb820f1efb9205ea2c8f474e0bc745f22dc013b0286e40e8137d0bfd0e91efde13616d5fd2d0bb31cca232f4f1be8c760ec5f500fe085693dcdc27d2399d335d6d3705bc37d9782bec15f0b30c292fe8fcd11c1c892e1d779d0cb969908f62ed4f196e10ec91d09b4beeef7dba04fe5abbbbf667f9a730e3daf76c5b87a2fba189ed251beb63fd09ebfe2a4e38d9be00ae5e88c156e786c89f47e7c5e275e577c41a48ccfe36baefc95a965137fe8f65d473873c40c02f932566be89cc15c332ba44e63c4d0ab78c55a8fd947eef972b3bf3f847aef3331dd9aeeda2fb497a6685b150dcca4febe4184369ada365cc72c4f502fc5c8e9714fde32c67242ed1b613b0534dcc6bfcdf3bef20b3ff27ce3bc325fcd7cefbffc973aeb7f72df3cf71f717ee83163e95641f3fb6ef1a9854b27791bfd5d7ed5a9ee4d7cd43d921ded17f21ffad7309cdefdf1807d8cf92f9b12b8ca7f748ed5cc9bd1514b79ce89a44af8ed4dbd61a8579bc9b418de2331dec891dd8b47f3789971f43d32d39ffca47b6fd27ce786bcd385fbf7026b4c8bc5d922e62f845102bb30f4466d7be6b01578fe8f20ae0e902a612c45111ef83ce538039f6b26f7177c00bd40d50ff12b7be8d5a4c9aeb34c63dc9e7dc7689edb396dc411863065f0b62a53ec0ac1eeb5bc93ab57d329fc55f9b37386865b21ef9b8e4185c0c17a63527f70f743e8669f6491d2fe67c7a4ff1e44087fdc4fd2cf815618ff3e755c44d6cb4f9c0cf51fb79889c6d8dff910efd708fbf62fe0960c95c137f9e469e710ebc84c8ff23f07b7a3d8ccb989d0b59a38a9fbc643192fe7be8cfee558d9de99481179fa24d671b17fd2bc86315b8e258ccb8b24b3e213b0f8df82ad19768dc333fc723575956fdfd9ade8e7bd2ddc2787cbb07f93cde2a0d0ab788ba762ec6be674ae0db0a87b945eeba4f9d91a070776bafb7a038312d7defb17cfeceb8d9c43a47b5e642e6f12e2bece3b277888abc1d33a0fb605256317bace351ddd2aa633fad317dd51e7a34af899ae5905b51f30d92bbf510ab19d1952e510198f479ac43aec797e7993cbfa231d80778eb0fefd5086dd356adde43fdb8e5b7a47b65933ef24fcafd12a8bf3faadb7be8076afa48b87aa80772e8d3fe8f4d5ce4e75081f1ad22252c2395f4496afbbb8bc5c37985d83fe4e0ec1cca9902be94a3184b009c14332efa67ea67b0435d125fe0657bd77ea7fc20db67cf25a67b8a5f9fd805cd352c6c88ddbb661ffba32376b4bbdab66378dc1ff4c9e13cb17e913544df19d66b7ea083dde362d69a235a23d9f2db48c7a933fea5d3dd53c5beb4fd2cad3968bfb3e0daebceca40a16b23f19770e338523cf042584f43815acf9f0b4dfcf9eb27fa257e1b6a0343af737de623a56739e2f789bfe81d42a845e4da7bf0fd5fad78ee1fda87186b38224661ff5af19f808e6a28d668b68fbaee31a43c00f188cc1fc5c0153917d00e8371b5e5b35416520e9c10631515174eeb1c8fd2a335da3ed6c9b87889771f2256869e427dda9b3eb8305ff378313859afc38f631fee91611bdc2c5d49c7af16d1417a96fe5da81994eb87a8abf2b5ae6e55ef2091bb5f5db721e85e8c87c15bfb6136d9b29c1ac8913b73789c9467d645df47312b91a389f953a769d47515a29fc8eec88a3f17b1177362e7537e09862757638543dcafce7fa46bdbd69da463aa70ffd006d59534f2fadbd0bb0afc019fd2633c670be7e92ebb0b8e47cbb4c9fdb5e5f0fb1fef2bc88b730f6b4ede555c81653b86cec998ceba964dbcbdc8e2a38ff4f003d6cd2b69e2e58747671ff006285e7e50f43b51e1709c0e5fb94b983f1e79ad12eff91dc26416f40de55c67fde01cb47ce965efc3776a7bc8fdf43991e977c45e20df67fa66838bd95b7b6eb7d2853067f46299b71cfd06c0d9a9f0796696d9ef2423ad93b4eef12f9e11c4c46d9c91b4b556ed33c261e35638079abaf6679dc0bbca7cf54d9ccccadf47e506e620e8db34f4b33ce8ba888fd9feaec41f6c6cc3a1dc27cc78585a7b72f35cff82fda457f8460c43e1f7b895d3229e151eafa7f6bd661587e0635febd7ce19c31efdb9d03644f70e0d8ef3423eaece9a7219567d7cd69f465e4a7d2e619e3f3e97141be7d3e7b2cdc5faaf9f4b769f42deb86be7518b232bdbbee9d734fcdabdfefbe762b09f6ea0ae85bfafaffe0278185ec81d4de3e807f8b7d086963c582f2e77a3134d97b3c4d2954a8710db7013f2b37084f9df2c76ddfe96fbe85b929c8f8ecb6aa965b6d1433f10c469dbe790c66fcdc09b2951d73a5aa3d97b5cf48f91a15dd6e4ee7a66cb1b7c0e88760fbaf605f8c4006700f1f203f57688f50ee35013716eee6dff8d55630abd406e1eac9fd827c0cc2a2b3c8ed3c35c479cc377c8af7e1da6936a3f34dbdb1e787dedd9f909ba29e0dab4f6dba333d4ddca9ebffb4f654e43bfcc15a8d522df1e6f06fb29d14d4798bbe314c67b62f6cb873a66f3bb702e604efeb6f41474d6c61e782a3f9a67c4d2f7fd665f3e736e66ae928edf5bdf7e621b7efd2ca0bc0c0f71e12e421ffb18ea19f8d39fcbfcdaf72e9cf52fc4d631cfda5942cec542cef9f7407ed6efad103f242a8c63353ef9dc80cf2754af1fc44005cce7fda33dc39d6fc4c7182510075cfb53eaa36dfa341bef49706ba83e58637e7ef46d11e3b20c29ef55cce5ee346b9c1396e754e5d03cd813ff643fb5fc4ecd7bef4bfe79990f1bf91ac998fca95007416c30e46705de28cce11b5531ca9c9dc3c94693b44974beb013e9ac262e3c24c5b0aaf5587b2fc476dabe79bd2cf2881ecbe575b575bd962d25e4342df7e2ffbf32f6ff219b75bc013fbfba06dc03a88b207665cef88dd0f7d99281121d373fafa166b191f3f038ee49b9b92946afc1c5a77734d7f9a9fe07fed54b3c6218acb80fe25d983b233b835c2aa5c2797aea737dd087f3f35a871a73ebabb90f423e24b1479fe6387c4e567d282f5bf327e42b66f148236bfdba36f363c8f8feeb3c4be12e94b7971ce5f992499ed498cd7b5fb7f3b79196c7450ef96d81773dd1bc66c0097eb0168f7cef20ef2d0ff3269fc838d86b913fdb913efabafd4afd73504fbae639bfab58d60bd47f46fe94d8f0bf897d0a79603bfb927467e4ac40dd57b449146b34ebc423ed12efc8dd303ffbbaf5ac2f641f6da36e7c26322adecdf7a45f4fef011ab3b7ccce3d7c10176df936b9f9a96b827a925a9fe7670331d56e646f98e45c23d6d46c31eff4b5a5a159738a8db5547a86af74ec65ee2efd0efffba777cf2ed2599f900f60bebd19cbedfc4f622db52c2866c7d033cab9da3f123deeb92ec06a766e17cc41aae365b25aa467fe69982bfe1dc0b3247ff7ca09c3abdaf476dcbf37dcbfb34feb2198af81fbb1801c9e6ee06f8f445e135bf56d41f62ee3a39d5d2046e70f58ee1670ef10fd85dc9701b9afebfa3ed9b82e6063988602f33c4a72cbece5c07deb01970fd31fee5c3c78137ac921cad9fd716567681bfa1ae903e346f9cf93bd01fae9a4b0f350cdcf75fcefb3b9e7a26c627b02f6ef76f67339ec2f7cc5769d6d68acf2bebe701fed397abefe40ce3773ac111735db450f65f2a39a0994fd2cd77d520e4a2e071cfeff548f6ff94a18d6fef5ab35171413126303c4569c6e6a4c40fcff53fdfc73baa63c2646f6e18fa8eb1c428c87e7d628b9c405d9e3645f927dee42ac39518d03f21a028605e3c43cd77a7c159fb987c06b689c59eec3677231e1be180a392c5fcfc36cd57f3dba733f96815f89e3ffaff9796bae759e3f9ee86c8803e1b7e35f929c9132f4887c95f0ae0bfaccf39c8056ee3dd4a47ce67dfcc3eb6f3057c06d34dbafbddb76dcae6d7972ffc19e5e2d15e7e78f8d96453b62d300ce0560fdfcfc67ebffc8aed887deec770c32dd050e51565f8c39644c97a9fcde9413de2ea36e720f7deb33eb74883b7c3b9fb7fbd1e785d80e4c4f0acdfe7b82b50f15df8153e5a966b155cc32c012e85c37e307b5c0ec1e007dbb044ce5f7866e9ada9b200d90dfa5e62031ae9bd0cfae90afe2419eef71e2e37c496b3dd83ea5b95ca17afd6736f0ff8e1d58865ee792142b16a3049eee3a6f0af6e83df1ed22f06692dc7fd938c478a5bbaa31106479d42cbf3764f14d93faf7a9dcc27ea507cb745f426fd6417bb36da73e9321106b2b5b3e76f8de0779f98dda699ad753366aaa75a56fbd0eff7ae42ba9b9d74fee02629fc6916283dc3d15e28be73572afcbf6d8968c23213aa03c6ef8ec1e6ee6ead0f5c6fc482e07e8591b6853d13c0cd7ec2fd89e91e6b93c99c785e7aca20e95a38bc177962342635a1fdda392f500cede2b7023896da53f970a8b31dba1e15c560c0bfda9fd887f986f8bd6149fa3523b413e21fd8665f6cb8aebce9bb3b3736035449169105d9de828723d8d97efcff28270df647117f3afc859aa62ed94b39fcdc5e77284daf341f384f86f3ccd0f0afc19e61875188ebd22db1bff30874d96dfc1e725da3dcb007fded9a17162b7c8f3a4ecf1b9894a546ac7d09fc33d4eee93a4cebd3804a576497ce79af84e5b86d535e2f53ab33c70c8135304ac18b84b8b300bd4f67aff9f8e5793b1996e163fceff26df7b782e392e82fadc6d0657ac6d9571231c1ff92f50c6d07835dcddf258ec0319e39071107d95dca13f282f09d6ab1575fedca76ca69dc0615971363c8f9fd4fca80d19c7f3123d8ca573f3289ccd3647c4737d55ba1e4bc0c304eed9064e38e0bbc1cf56c2d97d2e8745bd076b4eccde85e19d31ac8ca86b553c1b61cd997a67777d00380d15872ae4a94b6a8d6a5dea89fdcdad01ca276e1f45fc1e62637f7a67e21fe13d617e287f1391f143bab6cf652f91ad3f78ce0cc69123ec9567fb8bea8d93525baebd1e8d2b57365a85db0ebcc10bed3df066644e899e47f45965eda1cf86ce359137e4bc9c1edac1f5f7ba90d708faa1ab2468b3105b82624f21ce06ad17bb27aa71b5f42c9f14f1b9c6f5a335b3943ff983ef7562d5bdb39cf9c087310067b6c0458f6deee252ab301481731b6424e5f793ca196e6dc5dc6b294748c5d7a28bfbea91ffeed379a74cbfdee259fd743d01ee71e0fffdb9d0fe7a23f616e0056c0143f291ef8ae7ee16787416dafd0dea4314e4f436738879403dfa46f3b9dcd60dd645d90fdb27ebb3360d356476a4809751e368b27d40ec96d05c014747a26b8744d7baf0bdc7350f157e5d5d97c070bce1aedf703ecaeda46d23c01fcad309f70de421be0efeb2cc6dfab381a5f4a31cfc1eab8ff36fb8f5a0f98c15e7d9033d9eea9694930b728a163daef6acf7f2f17b5bd97bbd0ff1269e62237dc2affaf4fdacb35e400eccfd796ce349ed20de294d5f24cf61f8e137be7ef65027fef4d9a3be41f455f74f6b1ff5e5b8c3dbca601bd677e3b33153fef8a8a35d289ed30b6091e9d7f46d41ce35607f3eafcb70bffc6e41eee531e57d14b86a45fbe92f4b3ffe5e3fac0dc13f2c07b8b201bab368ed3ead2f40ae7a9a9fcb72082705e8d4cfde03bfc4aa3e3bc861f8b4fe80b4d99953aec39af7f0e91e65f3e91e263be0b054a20771387cdeb97ca94fd5f35b9e63efd9b8b16698afabfc6cdd22bf4ecfde2763e5e757677bf269bf3eb45d9b31112e57749f78db23b73e47362ffff86c3face7a86bd363f0d5d6fa8f354af66b6fb6b7ccec1277eb3afbb537bbcb6adfdbf910499e0c9bbee096afe9bd92979d641f422da1b17d7b7cbec87da744aa73f901bc3c582f8838345a16312c55fd9aaebdde3d31dd2cc49a3bc4fbac6bf8df997f53ae5b376bd2eb7de1aa591ee5761e78c059f527710f222f5bb18e4fd8160fe6eab37113ba67382ec40fbe07b5965c7d33702d4afbf089fbedc3bd8bdfacfdc68d18c53fc7b6a0b144d0e7aa1a776a235869a26607a24f33ff458549db9ecb07380f95ef224f382c64d4cf67398dc5d1baa74f612bdc1936507df7b7cecf39f4933a97eee91d9d66a17a051f3fd49bd7fc714fef32a2c32e8b3e8bcb30cc9f2d7261bea48b1dc4dfc1d6a87458c89d428c80d08fd348ede51fd837b40ecc55685cf01078b7c35b6154dce8a19abf5b2307f10b55a897c88202f2df507f863c802776b004c7519887473256e410fadc7ce3fa29eb917d494a2db6b690af70007e2b88e33879a8bfa473d53823afe8ac1bf803ce06e8339bb48846dbf364f3927a9eab4cf2ebe6d9d9067b66d81f2eeffb34f17ac0536a997d88f3b27d1e78bd2dd1f52086fb60befef9bdf2e5b3467db7ffea59a3f8a39f3e6b0d2cd0ff77d6fefcacb5f156ffdf59fbef3a6b9c3fc19f429d05726f34b898cdfc8cb151a31775ddd6ef271bed353273e015113985655816e8fb7286fd59eb3be03b3794b51fe6dcdee4310fc4fc818d360dfcfc228937008785c8878cdf05be05b237fdd97ded25671613c5b8281b9f710cd57eb9f69d7d84b5757900fa2cf8c8be8c53f5a6f437ebc27d4f464a1aeb8393650eabfa9648b5ff0ebd995261e18cb2d4328d73a86be99b07bcc31c9fa64c1e5598fa39195ba86ba7c4a73965a3c1a7eaa2f97a8c39dd03aed9c7bc96a1b846adda9f07fe737e8ff3d81c01fa503711f83b891ef822e6f49a591697da29f0ed1dd1c3e5791c3486d8b54f287fda587de44facf7a0fe674cebaac8ffc78bcfd6670fce7ccd0fadc9be36eb7c9ec630c08f6f5c63f3d613eb71a4faeb156d5e32a7bd174b97d4072107c887f52442fff5ec4ab9f25b35673817429d50e7695c07b157781f24391b9467a271dee4be922bb3eb81439fd8495c5edec3fc6cbd073c59f0b7be4fc77ae7f3f97b751d4e1b1fe11fca4ba9ffd79f326ef777b94c449e77c4ff43be21999e12f0f3bc9a1dd79e7b4e0ce742790c5e45d9961e0209aed553fd6774fa1914873ce83a7d6b3420fb23b34658cb6699545eb13a0f537b0974bcfb83510e7cf41587a33f3d327b5f5ad3dfe2c8629c1ee27e99fccb728cced32a52e8dcfddf9563024f00e567fae3333529ffe44c7dffda99fa4772ad59dfaa1139f45b52aff829b936deb46a020f967efc5aad248cc7c923f26dca2bf3f0db3a607dd0b11cd3e902fa40eb48b730770ffcc457eaa3dc8fe14e6177c9bebe4b1680d7fc2c6fa8f271c42d9fe8c738c173dfa17a9a338fbad3963f8dfbddd11a11bd6b768855f7756dba9fc7606cbdf727f88b559c741ba92fbb44d77e4750c3619cdf7c678f7c33c60674b511d1ff2c8675704f467627e822471d72ca0dbe8d9fe02191f31d9b7d85c8a7b5671c815f88f9f9ea581de48b852ae6d0812e8cdfbb56390ebab649fc39c4c23e1857897585447f898f58130076d26ecdfc8c3ec698889c048e36a893d1b2b83b655807594c745635cb03f5a31ac8daff38d9687642e4f86ed685d836c49b8769ecbb794cf35328762dc6facdd905eea9725061e23cb1a3aabd19eddc63f4591ca17a5e8ab56f131b55908764ae597d61e31efdf6a0ee79bff6a7e7afe8b46393ddafcf7cf4989391403c1d6c6cc6c19e5b26e6055b66ae209ed10a71313782dd80369d49d6780eb636eafcd921da689ba89bcac7c3d7ae70f8c2b1d9bfc41bede778f872b0a0260ce41fe0bb3ef04b3f895309f92d9f8a53610cb479d629665be774f017d7ca9ea4f19ca325cc73af37fee01b0dfd8d6b1bb12e9efaaae577d1031cfcfa1b89773bb6f54481bba8259fc1f7023e110e371e6ac65769e88744a6de2dd3ce896c081720d7aab3b2f6519e70b8c962cd28adad587b618fcf8f6fdfcf32ff37ad21ded1fe6fae1b8c2f6a59bc9b216e34cf1957be5c42b37f22766bacba65c5374739ebe26eb89371d5d167e2a860bc6ebdfc0df3d7113348256de6c770796a7389b3df2db27b5224c0e50a770399db9153beb17f03c65db8030e5ac06e015c982cf25cc485f0a7fbfaf7dbfa9daaa67aa68665760d7c1bf2f0e9184d88d1751dc8391c93673a90cf7e04be5a68abff1279b7d8da6cb95c7ac760b12ee048df80ffe93df09df7b53ed887b8afcf4c1e61fde18a8ea923e754f79ced126a3667d7c09be5719929c25c50df20f6695be7d37628c729cd970bbc4e1e77b52c505d987bbb9b9d22b377ffb19ba9e1bd135b85c8c999dca7c48ede4deed675fa3ab89039f4752b7d333bc76837edfbba0d3c6d3f36df2f4937e94e7631e567fb5e4e5f07d74997ccd97563df711e28b7609698b37dc577aff74e3837e9c57fbfc5fe28fe3d29b7dcb832fa7b7ede30961f78c934f47a3bca5382cf19c7abbfe81de9cf256b0d6b788ebbee26ee3a2570808c9c2c546e795424a0a78dcbc1ced2e3745c36e64c3fa636fceec8fa7e4f3cfb9e8cac7d621abba5e99ec3aeb3e7d6bd8a89d173c8fc89e053757cbb8cbad6de5666595420cf21ecc105c570d591aff7c786fc3fcc2233df5aa3ec14bd7edf55df706bbed2075c9eccdf3b441c6ad8e3d8c707dcfd0e77cec7d5bc3774b9a1f373e9d6b202b86bbb3cfe77fc2157b1ec9c11db2bf0f28a5bfa17374e418f28dcaed807c0b383b9f0cd1e8fed0ced71e378b0067c5b1af22f74e769dc75af30972c0f9ae6cac5e62d4b4cd043ce96a1553558b1e99e2d33bfc75de0b8cd41d71c394a3c9a9273b5233673e2596722db262ae36feddfd75ee71a99ee3d29625c5b220736d6d17a203701c312fa40b9a791f3535fac7ac3c5aa37f21537581916b1292e6fdde37eb239fe67ec77fa937b7bddb9b6f644c643de5d25a7289e80773bce8b1c6b9b311f8efa08eadaa1b1d9eb4426d43e92f7f237b0db66ca5c7c97fbc6b5d9eea19659d5bd5b9de1a88da5b7a7d87cdc5e1ba4d690f9287abf433fbf8fa1fec33e44a01f26f7f1a247743f83e85f63cece199ba7fc8d97cfa817e0fda6623d2fcb95aefb3c8bd6aadbf397a7061e123e3f21bad7d6cd0235dd076a964545922f699f7f70dff9b5a0f7246b83b7bfccd93ef07abb70851ce2e311e072b07aba66bc49016c3fd9375c263f3b78a6d83e6bec072273e2c2784f868d7923f606e6691fadd69cb27bb9cecd7689ac805cbdeabd33da0f4e2faeee3c94e56fbe96aff8b3f6aab0dcea15f91dad3db98d17daf75f3ae341827668cef594ed3bc42ef0c9efdc25c7bb7aa8393af8fb48b86bb691daf98179ec59162b587b487902f7e345eb0e22cf23b6c3c8cea38d38d640cd0e9189f6757caf6421eada26d8fbd71f25d1b7af293913737cbe0cbd977344ef123e2fb2de1bee0bb16182aea345e64d5f7bbd2df24867627f72aa6b4bce98b00f5c7ae6386c65b67644ae4f21cf0efd51701f55fa27ac3fe86573c4973827fc1c228722d7bf6dade7e4dc5a79dc9c09318d6db33688d64c76b02edab473e0b780bbf8255d166e1e220f6db1f612b0f3d10f80f842602f9adf59ee32700d05fe2c67e70ef703f82f41c6d672aa972523723fd91df00fe23e93ae23f47f377db27eda86cc07b963e7dc58c7f4bb9e9a27135dfbdc1cca7445b2ce43329f9c1f76016ba2d56320e7b7e2bdfae82c531e0fb6b7f9767bf83b2afbc0eed30dfa7c6bed3a5161109d9d9bcbd57fc4b947f906baee8ad3130be39878ab73e4190a91a3f36dfec319e63f9c4edff00c6d3116bf7f22f316a1fe3f63ba63a32f3cb7f43152fbbf2df376a01c961b36d7927df183e8836c6ff0eb07b5ffaa817d5f9e5a635a8d6ca21b94c928afda40197d83ff2f616c593475157eee0f71678631679771f656efcd59bdc1db8a8c75755e432c34fb196e88ed15c37e9cbe9e1a672dbfafd49cdcf7b98bf37aa8ed905e9e949a11efec4bbc4977317d0e6c3b53e0b3e6e7afe2b626efc75dac93aaf76b7c68d821d7badff59e93ddabf27102962127e7ab1a821e2fe3b8f3f68fbf479ef5546edfbbf4fecdd95a2969881cd9b5bd51af3777767bd7c4273a87a4ad4d4b36f23a2c2f7f96cd3b9e1b6b956739d9cdf264c87d67d55b52fdecc8efe589aee179314ef4ef7a3e612fbb0abb57fbbed9eb37746b5867b0ab69bd77b49bef6baea3f6ddc3fa5a71640136add309d4551a8edc6b64e6ef5887c79dbd51bdf7ebb6d1cf43f7b0680757fbbac1c9e5f5d037ca9ddb9fe2de94c88e419f7d7f52a04c1a0f6d7bb975ece536f9e5b8d97cb5d90adf6f9febb4d597d0ece7ccc688ccfe650db94a27b8cf02365fb2be35d707e4725b6e7a77839d13acbdf0674b6a6378b53c97cba6097cdf7d59aac1de2e5f76e3c5e0bbf53af84b908723e9b9237681785f751eee2b61cee4e785d7b7fef1f7804f1a31b0fee1f9051f82c3ce217f3e607e1ab655fdbd4d867de37d19f53d4c75e3969cff480ed273f9b299e876169a8e01b9cac3db81c862114b03fd854b33bf135d8d7246b11af5d67bbed993b75718db70286d4bfafc53ff9fe76c1df4834e29774e0ebe4bea5774988f94ccc7ce3d4646cbbe977e736cbac7894ef3b6e13c139d871b037292bf06be46f482bcd279868cab67d0afff8d3607db1b026e86acff9bc17fd8b36faab10d5ff769dc75b6445f2036e744d7ca68893f734c177ef66b31f8d67c27526fdbc5ca257a1bb11f8fd6c83efdd86897c8746c67e5e48969bcafa90e3f46ff08fcbbf27555fd27eb48e43291fd74dd4076007e145b3fe0ec0e57b32c1e418cec40e57d1c7179e8557d767b2f7db97d7617f06b5cfd7b74fb6ee919bbd7b6913aeb50b92f5d6febb5cf9efd8bacc98f8d764f4ca73977e467c3d0273fcbfad6eba1f90e9d5b4381b9d5af695c28df20ff6e981bd55aa11d7d80f53244bf14ebff64679fbebc075da9ff8a1fc71fcf71e85d1fecd5ecdfe81f9dd37fd63f56bffcdfd0c7c6ba6679a45f59fc85e941c7fa7b57c8f79dabc695dcd99c2fec106e32b9dc005e19e0faa4be49b78c8b7e39d693f7c0ebc13d2fb609359ad8af457c68e87e79a483cd49f629ee753ddd45ea0bf89e1ff73b97da84548efc2b6b14d233806b34dfdb6aff6c9783df4fda3bd4f793c561f1ecd3b9191e22d3fd99146e99009e84360cbdf010152ef056b2d8ae88c303763bd62d0f67cb55cdcdb56558a2752e24ff2da303f99d1b4d8b0aa70cbd6dba508dfbda9ced83c5601f78a7cc32993f16f1d49391738deffbcb4485586c27d8f4de2355b900179b77ca687c8dd628e1371ff8e06b9c0c9e13037db6b8b7cdbc80dc153ee6a6f668ae4f0f9f194d2b3c4bb42dc34b5ccc72c7cccbd09b29947bbbaadb1debc999f13a8445bf0c54f78839b173b19dd14c0d1591d75a8ce3f5ef49918caa7aa0b2f737b5eb4a764f338e6d5e963763812ed1eb47d34bf3d92a9658cfc936523b7693c74e1c5b7c9e6cfaf88cde973d7f5eef1af305bc6ae8c37dd837333f49df85ba3378ff0cdcbcedf8e879d27195b577bb4fd4c6b3bba9a43da70cbce41c123d5397b4a52057df44e59f13e61ddae2b0e8fee67300d6a69bc590434cb14c048ca99774aede3067c49bbd87be46741c9657c66abbab3d1bd2fcbe06060bc5864eaababd31e6909c22b57748cc7ec9b5f94ef994ee347f791bfada21e83a884fe129d00f9a77b18b461597663db61ae78ab63938353169e85edf8f17da85c62690230079ff508678f3b3a44df09ba3ec18b4f0b8eadf5d694cba0f7ca0341f0ff9538afe3132fb5d9c1b2d03fd56cf28163619634ed63c0f0ba3138dc8b867fba89b9cc7cb5a4631ff3ded47bfaea5db73f91e1ca6d7689a060bb00b3bc0218db211f293025fcb806fd6ec1796e91ce2ae46ce3ee41031b9cab04330f704eb91ebb5ac73a0880d2fe62f40fe22e6b176ed32f467d748ed511e2e32c61c72e7d7c8a505586674dddf03ef05d603b8387c2b0d3de3bef66ebd6a4db85ca8d0c71ada90fa5ae3ae96076a5e00de5ae1e6e1689a8ecd15ec67a2dbc0dc1b491e6c9369832becbaf6dc77ca77f31e809d6ddc2df376898aa43dc7e477ac1d1c6ba3eea3964321f06d92bd02784487c9465b86de0af2119c3ad70271104cf725001b7c7516c75be33ec6e5e0db03aca5860cae39ffc6923573558c3d8a671f7839d9bcc07dc9d615ea34d49e127839d872800f8f3175b286f70999476f96111d46ba56350e54770dfb85e85aee291ecdd300f0e7dcb2e2d4a6f51b01d41b91efbca473ef76aff2c5617c6c5fbb77c9f74e344f8ec8911c73a65e10235a9cd7777e4c3f36821db18954a7f76c0e1d1acb16301d2b5ef05906dc9cfcde277a138bdd1b627bf42c6444274b8ad5376be49489b73ab6e45c3d465abf3227e76f17756da283501c183ba79cc46722f3118729b9c445aeac4d8a2de26757a613204f0a915bb71eab25a9e2f4467bdc92734b640ae08b07e8df6577c481ac6be0c3982077bdde67c92132afb46e2e575006bed0be18c7a0eb02cf9f64dc54be27f73a1ffc257584f343ee910ac7903f7f44ce170cafb181c1cae693e94243727e713ce9a1b16f989e44f68c880db9657d8218f27bb8720e71e1be27a6bb1debdb67ebc9be7717cf23c84c2a9fb71567a165b880e1188db6e2bd5b61e255d84e7772ef84fe0cf340eb3bffc072c2f9b58dcc7c13431ce6255da9dfdbb9a414831a6365f93d266bc030f0f0fe432cea2a268e7e389a175bfbdab1fea308c0afd613656c0313c47add23e67f85317a68cbe461af1379205f880cafd667ed937934280e3b729d2570c7504ee2c6ddc7f35d605dc12a0d8a7c17aa642df24bb2c03a483a9e73e27536350e0fd71f9cfbf788e80274bfad3d27074c398ea78bddb5899a1f231d382b73c01329f23206fd243f81fcdbb9349e39cbc81e4ebceb37566f1af8f6aec2061ecd24f755ae507954c4859bbf31b9dfc69665fbfb1a23ee10e5571e5cf9dfb3fc4856cfcadb929c2d46f17ed323af0bf2b9db7c7d84cbf2a64de31e2376e38ee93a70c71634d711ef917b027287e8a9dc7e2bdc02797c448e63fe3b8b056032b0b8f0fbdaec1d88bc217a49b09b63def7724fe6ff85f29990b62ee40c53ee4ff2ffcc1a0af1ae4302f288b4d957c81a436e616567a28fddc96d6db9727f2d56bd95e3dade7c754d7f2e06f7698353973f373f05dd53fbfe4b6ff373305c4a943bc0c95aebde05fb3987cf6b366cb9fa7b672eff93e3b412ef49b14f3dfe77fc3b54ee1aef899923f69ed02fe4ca20eb05359bfab0ff73a175c8b967fae14f41b7ee35db6bde91326e73fe775954e4271a3b5aadbd4ec56f2ec89cc22d173c2f05e5d94539c53f4f6bcd5733d0f9e29cd967989bc2cb2bbe7f7167a6049e7dc4f84a9845a359ce732e0336cc969b1baf7f86b856611c63551c6bdcd140df423e42be2d2e0758a8b9e36d0694f9911a1664fd3dc02bbac97fb76cff8ef2b97db35e0d3ebfb95513178fdc4d64e6efbcdd4ffd538770b7ddbf7515819b9aaf837246761636385aea3c4d7e1ccd9abb7dba22e798d6da89f763a51730df093f2ea1ee8dafc315ee1186778bf8f7448f3a8405c5556feab923bb037ebce2d6b3cce49014eed93285bbaad29122b5776f7c1fec6a22abd18fdabf4e36da4ff2ff78971c6275d5f281e118c9dd5fe5f5a30d42cf151907673fe3771a73b72cfa0a9181e4ee6fd8f44ad4d5ae15373efad5882ca6f98fe08bd8611fb02e00b079316f80712f7743c08c33b6a149b999c97ab8621fa4be3dbc237758e30df34a718059ed04f852e09e20774164421d62e55b106b1bf81a40d009849aa6b1d06613ef53ac93a27925f5da6f797c0357ca555ef1afbadcdd28c1ac87e79a5cf4cd1a0dc4531846aa22e129aa30f82877b5257b86f9885791c26242e9031e3eede1381f7133c9b042d99816827e96096781e150cbfaf198ef4c52cb86fe1045acdb6c63e17377df59e4cf6b72617f3ca77c0dd16487bc685037c33f279397a6d189d595b8175bf5a50dd98ff7a0b8774ce3bcf63ab87f73f46b4e76e4fc0ec4becafa5010dba2937f345f6b7f360f7cb033eb3bb2310f81d73b441eaeaf4b7da7d03e9119ba38af6d7c7e623fd37bf95dcceb6d9da9ca6640dda67596384ec5b599df3ff8eeb748ed9f96dd8ff70c5723026b3cc6b5f8685cd0fea22973daeb5cd76ce27dbba77ac007edb7380d04ccb5a0eb9631c48c84fa57c6a54f74a472ed8b5ccf02768d99e4095fcfbefc786dda7c96caf3332bb9d3e7d44f148bfea42cd1b597c968cbee8c1de2ac3daa7d16e43ec4135df3bbb80e0f38fc79f940ff4dcfbffd4aef98ed58d0b77a140fd7092c5d49dff40617f0a27747f97215e545d12fc2dd2c4f0cc05ee835eb9e993c69ca1c26531de6e7fee09c37796ac61b6d14facebdcee59bf363aef0469eee0b0e7befd36787b34764fb1a9e37bed66f86c7f2e4ce27f625f3f97cfa1cb276ffe4fc415e845ff942843d4cf4bcd074b3c8843c5105fdee37e4e850fb9db898e571d957c06ed909d838020622fa64faf7f0c33309badc547aef630eac6d8d8cceda9f674fcfa9d93f8bebdc8cc53fc1c61c699da0b81d82eadbbde7efb7f7fbe77500b35f848d3ba411277f7f8cc1ab5d13cf3eaebd9941e3ac67621b8d1b31eda0c62c6cea0bd5fe41fe5afe5cb2fa5086115bf559d843e38d8675b2dd699afcff787bb3f644996e7ff803ed835b3026cd61544010710081e24c2091d1f0b4a8e8a77faf5a5505059274dfcffeeff7a0af8e0c450dab56adf1b7c438071d2021b2709074746daebebdc46a6297a013a8ce05744f77c7b5cbf66f279eb40c475dfd7ca976755232e6ee3c91bc5ec8ab00bda6afff931c307344fc66e10ffca0fb6d3ede90b79307e204d66e69bdff0fc4d877f66407d38baf21c6dbd9496ec82c4a02513afbae72d19fd7becdb7edbedba1b7a15c5a220bb378ce168f8ed934d83b5df9b8b30e4d5dd87d6ba3e9ede527db4ce7f7e7e2d6f8de8d627745631aff5be8577fc1cb48adcd7463b57fe3f79fede114fb7376ebcfd5235ce85897617997afdafc783394c167e681e8c09e5ccd5e6eabf9fb9d7feeb353bfb2e3ff923af6ab45fdab1f9fc0729d8d598fdff0b5c6d2af8ead815fcb81fc681a4bcedbafe2381c49e3206fe34897b388f17482457d0fcb01bedbb671eadbb907f4a727ccea8e4dac63a7edd9e53af7f03aae785c0595c40fd8ae72416e44f2b9797c58b0b775e32b8016542cb74e6e91b733913b897dd1b92fad961e3879a1e581bd310cd98b77ad6ffe9b759ff46a5b0ee9a76077bffa20cf919a480c8f83600c70ed3df1adefd7e5690d794ce2feb31dbda3c317f8b1303a21b95ff7ae1ed49133dd49b6efebff3ff38c6b3347997f07fed893670e9e69472ad47ee5f7fa251ceff270762ca12edf0ceba1600be5f8edcb5b87cf913150ffd9c07a3472ff7bcc7df36fc6c0dad6797bc0cf36196e2d0774df6f7592f4c7bd06fb7ed0f6f76caf7e3acf06745f3cdf44864be21f6563fced015b08addbf3fcecb7fd9cdf488db401bc0be23798e4bebb3383b19eef4e3a602270f6e6013c934e8e75eecbc2352c1c95d48c1ea83b3f5827866b439c5874ad491bcfb616c9984dd57da6983b47d2ed7ca7ec737f6af7f699a63ab8bffdf368c0e60ff6124213aad4d4b72563df9f35d9b7b67b41f146f9da911dcbc994d572801f3f61aeabdd18e8507446fbf10e626c9ef61fd068fed883ad67c03ef897b439e44be0e7eeaf6d2f3ff1e7aefdb1330ef0aba9bf8ebe08f825d740e46a7acfa66dbd88138d6fe1edee4ab79d90d9ebe10cf3311d131c2966ff01fbb77383589b640afa803fd6318d67bc8ed79341bf3f2b89dc47fdb7da09785ee70ce0bffdfe3fdafcfdd91ef07ded92efbe0bf7978f11607f3dedc9c6870718f2b7671b96f02fe9b0e7a3eaf319923744d743877838fe3cc0eb4a63942cacf773f10bcff2540eb592f1fb58af960f100b65829ec5cb5903b215c10f18139c379ffb9e713ade219eb97badee609d75dac806dac806dac886dae06d5397c6f705beb5a7715e789c3c6d363a2e55f3099faeb1fbce46787c1dbef69dbda72bbfeb50f7d928e29cc433419f0153148fb58b5f37ba501be1d1b0a6e9c7b7f2338d1996294d64143bc0dd7e0df7e978d6866d5afec05af6ece2bad5c6c10df0a81ff80ec38ca0359ecac1da771c96c09e8ba9e8d33069637a0dc59cfa76482ef9c1dd7e2b77114c1dac43937c7763f6f49dbf956fc1c6f8e338faf2245703903dffafe68cd4832c493dd1f3d09c913aa43fcd19a917c2cd19ab8bfa873983da9ba42ea8317bfacebf9bb39fc6313c675c1dd5f35f7d8be521c0faec991d8aac794f1769f2a3adae1de04b1749fdb3674cb2b6f6d0934ec09d5924f63c8a43615a06c56460aff4749c1ea65be02a139a6b9df8d6b4f25de11a9eb2a3effac5c1354b5a3f6c8ee5c8a6ceb0e73c586c4d50eccea45e5d838bf2839e3821f8040b3df64713392ca41ba5d1f3736cc1c4065963fe075b249e035179ecd5fc12503f6263bf2df207ddbf746ee8da0cf8301b3d46cd2fbdbd3b0a4fced03b433a0ec8e8f8f9672cb727b9ae773e8f7ae7a37421310c3dbba3756b622b06e702e472e9ec2bb4fe512b1734789cdc9efa6aea710ef88f9b79847c6f528b82abe3d5d4e43406702e03b1ce583da5655bdbeff231eb613f377e8c811ae0cd3826137c0eb37103aef47df0fcfaceeffc176bf5adafbaa7a372ba45d736750d72f091fec11fd091d56e0777c2f3ea73772f3fafc91f627c7e90f9467fcb3f09de14a90dc76cd6944efaba48d7966314808120878572b2b3dd3d18335bf28de4d7fe9d0d026af8ec54a9eacf1d7f5e90fa04316faf7c5e7b66cb6b7092623ad7b42e3919a37318a899fddfda75b86fd1f3847d8bd4e73e58c3369e9fed19a4f6f99fe6a4593b6b685efea8ab5d91e83cc211a909487c92fb0657aa779eb5357e417fa47260071fb3730e14da2ca6b134805d046df23840baa8640cd7ad6307f94696ebed45168302ebcbe2c5be7996d66123f547995f78cf72b6066c317f13b3c1e37ef6fc073f8f7bccea0b0ffa347eda8bcf310c4dad634cd3c3671db11f305a8d185f6736a2af25c3651ae25b7f13b7487d1676e1bc40ed1557c8194e39c52e2ec33be4d56359a5d254a65fd25c279a97f2031f63780ab08e6c4e8d82d2208fdb358be8ba61f96a20e6839395ff40330cc780d4fe75b3ee1a74fcc40d26e2f0b30dbfa079c6d99fd6f6af78c42d2ca4d4f7cc07ad0948f763437bdfcaf1042795cd21c8be4f72eb1fe638f6d5edf3fc12dae76d193dffc6d0b9d8e7954417f8ff63affd6b7e4ff6e7a0aed19713866c8d641f367c93c519f2787427c6a306fc8a1467f2fde4b03aca0bb22614477ba4a9045f09f291a086ee746f8f769b7532d5db7cb3ed3170f7b1fe8d4ff95bdb10964d690c4b13bbc2c6e2ad8668ad349a58ca8eef7318e78cae5d786fb156bfb77d35ed82fd83c56b3ed7eeedd3f277f5f0b9bd047addf35eeaafef376b4a6877387e939eb5405bcf67ed4ff4deb789ffa057fcece789b0ac768d04fc3ec4aaf7fd673f9f79cff66feefecff66dca77b99c409dc88c8d9ed8b335d2bddd7ffe99e770b6b60ceb182127133dc9ef4fed353830f37f6fb3a763a238ef6d3ccc90dd01ec63c9f1c4d6db9f85e7c13df557f349e3b954ac4fdc8ea168de03b13eef499da781793cc63f3ed3e890ffbd7db6a1f3ee77a0ce797f2f7cccbbbef43de46c4e685d0bb0599e9fdeb107dfe9d411e9e9d6dff95529fe2ad61d1d95e4ff809fcd44deeecb384dafd1fd5843bd8dd9cbc8984d498cc3fdbd5acd5eeea44ef34b77dc83ba6d37eea089c1a36bb7833817e96ecca634e6a6de06627e890662b67f8ed37b8a892a285603ed47d8b7c7d2eb83df61f151cfcfff0d5d32f926df5d1bd9aa27533e6335607d39bafb1ed0dbc9980df2a9415ff1dff094f5801fedd91e077c63c81e37c82ffc851efbe22423b62c6ecf247d79ef993705e284f0b14eeec0fe0cf1662733effba79f6d97646d20dfddd1f360167376961b6f2ff9533cfe37368e1f692ac37dd7ef9c3daa7f6e0dc9b17d1d7b680dc6661a16d239980dc4c0501ef694eb332c4ff6e71cef6de8775010fbc44ffcab5bcbe179fd31bdee298f7b5a43bab76db606cf7b7b40bfeaf205f62ef1c33ff3f6be1c32e46b7ef2e3cc5a7c6a6ae71cd69d87ea3c303b0439a71a9da52b1734671cdecb4c1ecb089d4c581d14e637fa3bdbc478770de53ff39336df47d7832287ba3a07af1cf61f75f46bd267aeddb7a1716ffb34376ae29b7a7c98f22c2e36d52fd017d63f08260139ef1dcafff685f320fdec7c77386eb4fbcc408cc20472bd86f27d78bc9e9daba40719f495af0ee639f8609e7346b0eccce77ab2b9b6494ef9901ccd7466d0f7400f266dff858df26f6c78fc7e1b96e5ff9fdb4f06fbd7d872b38367de82b1997f473fd47ed797cfa93ca29d35824f04b560bec73a923af7b95a29dfe320b6b5179a3a22fcdefda156c3f3f39dba206d6c2c3bcb1bdd159f2b046f2bd33b589bdd9a376c1c7d9c4b3e5793cee33548bf8e81f8d2d46fc0fb619d806f81cce73798f303f1da98ff64814a63bb80ffd03d7b1fc600ecc76b035f839a3930f7cf5886f80c7f8a4767fe32adc13d6be26bbfc7d1fcbeefdc78b5e49618f7afff68f214f30c2c9fe79aa2e7086abca2da4c5eead5fda5a6584a77df55d26826648138ba607dd45f3854379c5407f7e572389921604d90e7e7c1783a090b225f2fd555a9c97e8c44270944e9b7319bea41b1ba303c0fc00e02ff615d225a3f966b8bd45b5c98d7c8d353c0391077398931af4b243a975074326d41f80b8dfb312d677b0cd43cf5b12c6a4d8b60ecc0b7484e961312cca55adf8e9cf57eb43ffa457ea63878b4feb3748d66d38cc621838fb3c1b2b84f1fc1d8b923717f8c167aee5ba4bf06c1c8bd2ef1fcca80677b0f8afc354cde1f46fa7e592da677df7affda8e1dcc732b4dd685835b674b6bfa4b9305dd51eacb3291c220898450dce373ec7e70cd91fea868dd0b596af7761c6a27b25ede4c2b0df5a57baf60fe55210ec766e98b93504bb273980a2d6e99724b42d1fcf25dc0b6b9e376d622af2beebf9095bf61fe4feb71251be796703544085da825adb5236581683e0c91e00d1aee2e47a2940186d962570573096ac784451e07a7ade4cdb4dfc8aad38d2dbfa1471d874544f070161c66bdb8fabdbce7c9f221845a82df8d1eae3082777d7702b4e038babe25585817a875a42a779fc69e8742957a56f6c6f88337d3cd833b6139d416a1eb694e70c6df53d2a72ad4d2f3312af2c7c1db1ee15a52855a42ec4f04cfc2170295622f88ca09eaad24535837727f720d12a1e2be95f91e3afaee443c78fa3528883d8d603191b67ca8ffa2335c32cc5788efb450302fc883c5b488dcdb3112154c5770ae7a335d3ab8e84b739578e951ec7486f7b8d87fad526dbc24f53c3a58d9c88a6343d5cee85e6786ba3ffb497d32d4e3f970cfdf883e7f93b69e7e475e06fb3d5225e0ddc6c9047e61145807be7d214f3f519eff30e6ab723ddedd3fbc2a310a527773a9aecec12c979048f0f2032b7f237b68720d32da4f75547e7a02d0b8afca9266cb67df9525e203ac0b648fe295557f215b8033c050f378e355cdfbeb823fdbe5f243dcc51b4bbead4527deb88af46957fcd8fff3d3d8e9f7df9aefcfab045993385c4ccf1f565c22ab43a7e5a7cbf3f02a5eaaf21925756aa8dbb36fd585a186e7c3acfebdf4aaff70ed405ea8c1d3e93d7bc3ebe843fff362a9eee2a547f67d301772645719cc835de56c1e3e5d624764589fac7e50641debb57d2c97765520affeb5547d980f438de38d7b6be63a509b39aedab99dc41b17b0d9fb34736de78dd1c85642d604e8e2735187dac9b91cc4c935125f2a7a06855a5ac546d1e097ec013fc6db4a41217f213c6651fef26775622cfcebc1dd1e57b33a5edadfbc83fbba207d0fdbbed7c81600a7a4870d1c2f6739cc69a8ca25c7c3624dcd2fda4269e617a5428d9c2af6302ff2a6319f03842cb22e9a75ac56769d2ead9cd56ca2b509626139cf444395f17c977e728c435109903022eb385312a3686aa430b9a81c58b38979af63bc57e9fb124aab74e36a173a9760eb0f1f5501cf93f987fa21ed7aeca5a8904a7ff67e5b8f61acc5c635035f199dfd879018ea51f2e7b88ff10859932fe4999b489cb458de56fcf5cdf826860af434424ef5e5d94241dbffbd71d12554e3189fc1fbc23961dd90c585db344e1bcf1fec2dd8eb7be8f3e19eff1ecc6b51f7a59ef802b2e2dfaee84464ff646f3ea6fd85407d3708eb13cfdfb27f7d45aefce52793bbef4658166331ed4416226d9da1ad59f6ea93fd046be60f8ffb05ef636465e57a2c489f9ed0a331a7d9ef4b0fe655247434d4967c03dab632bc560172607dc7f0bc2d601a01390efc4f9e89d71fd3e00dec2dee243db8cee3d383397f205b083cab1e01dd5bb548ff1fd37dc0efd917bc675b3a073e9aae451ff729857da0ca255e9f6fe801d37bbbd79d2af5188dbbf2e5a02a0f7b1c5d5accfeec0bddf35f9f0b25764533d2ec91e4b33de8923d31c4ab5673cc53f01c93f736eef60dfaba102494a0222ce4af25e5591fae2c6920fb70f5dd945bb2b147525bdb97cae6e3fa9737d3b9bc09cc8f46d2c66b62b6c7072c1b8f43be66e2af4fe596f0fa8837d3a48d2d3ce92edd1c37e68b6c30f44b6351325e7adeb6e7d98cf15aacc3f07ac7569441de82f5b0850ad68efeeed725d63ae32dbf39fb8f374a6f774dd530af7e442a8b63d9bfe1b95daa9a14a8f2174ab2f307e6c9dd67ce8cbf1baa562e3d41e2fbbb53497fb7aefccfb6807f9770e13c0eb3385eda251e27a6f3573c76e4093c5d2ac83a12fe28737cd816a6c8aa93cd5e8fd7233ddeec95e62c22734378314a72e081c81eddd6a2fc0b25addf0f59e7dfcbbd192f551d7f1b9f75fc77557a86951fe346af8c97aad63dc7e5a8778ee76f6dbe289eabe67a673e2c15d36925c17ccb79bcd9fbb12197f8ecad0db982ff3bf2b55c376714a10d59c263fe5cd4401f788db7855c42bb560d73f6e97469c676f1bcd489a1aee87c56f1d2eb8c0defad374bc472cdfb5bb4d027dcd875ee4c97f01e416e7dfef02a83ca5c2bf826dd7b76214b863009d6995cb9b9141b5e197a8bfd6d25af6e86538791fd7edbcd7d7a6dfbd25c4bd935c4aedd7719bdf608d9bb0f73b4a3d722955c5354fadc7d359fcec935edb69277f41a7b57abd732796efb78a7d77475b7876b8fd5fcbd866bfbed98b4e7a86b9b3eb7f7e5ed885cdbc9885d5377d92e721fe5d470ca4f6409af9e520bb80fab99c0c627d26bf2bab986d835b5b996f92ab9b61a37ef3e22995ddb2570addeb1e7d2f7dbf62eb031cbf41a7bf7beb263f25cb6bab16bbbcc21d71eefb79585af39b23922ededd28c3e87c767926bd94e6dae65beec29b7ca48dfab355daf6d1ad17ebeb76bd3ac83a9b27530e7d368996caf862cc59b7d13cf7b0b0b69148c21be60e88c38ef5559fa188fce7b17feefcb99163db3f079ba41d60472e5978a12838cd5d03696ef31bd4b31d345f678cf5a59d9ec555b86bd6517f225529d4734037edae483ed5d720ee37db157dbbfdbf795cefede8bcd5e3bfbfd7debae0a3d7dc7e7446a9c60ec9d7e84e3a8847a3d6dbe50b2f42aa8f9a629b7a4fdce24d4d2b2b91e8ef30a15d2d99b69af6d7bef6f48841a9fa156e8d740ac73e4c27b78ce326e8e6a98231578688cfbd6de5352a35052243ab76861ce584e7af8a8e28d8be74b5a05e3280f33330ec5fdd7d29a3cc09e621d6fc67c5fae190fc96f89af2a236461fd1ccf835ce8f92d419e5e72d7de9a9cf479c9e63f5e7942bf86d39ed7cd280d002fc4e73b3afdf13c4f3e17b5dd69a35def784564df3fcc8f393e40ada5b859c70f11e6e0b87ab47dc7b239acd17ccbad8b8cd73f59d3e74dbbe4ea679b6bb47fc1e72c5dbb77717d6af870198e26b19dc4c9d2ab7fadec49f2c9f5b173362d104783756ea8a8fc18935af20d7efaa8a189c7c606d925f95cdc1e6c0ecdf948dab81ad3c3f97a5e202763f9ebbb7ba4fef05ef2ed8ae8b0852084e39d138a4e2b37da42baa67d0a7bf59c302dd0b641aee0faf140249fefd5771ccb9e0b059577e71baf92a06edb4c4fdbfa96d38cc40fe9d7c833cf1f8e994732c4f4df2d6567dab32996dfe2c8ad47b42e578b8b20933af81417fce27bbae6c8c24a5b9842087980e6a3a921293bd9c123b1320eb3bbdc499db9b0701ee1289ef80b9a279c4771584c00db351cef2681ea845a3279846a5d46b338d49229a9cfcdfc29333e2f1778dedc159568e302869d886590d5ec86cfe1d85069bd345b2e3fadeccd15aa5063fb5736bf482de55da825757b7d26a40752d778e4cdf4c850f03be61941ac9252f9ce2d31945b82007fdf0cb57c747605b0ef5581ec5fc39cdcc7fd6ddf8f47d162aa849e5346f43ed8036742ceae79cee8a731329d3b761fd3683d3203948f24a85382693bb9d5c64cae0d550956cee84cf82b9e835c5ada558069201027232c73efdc5d49f2bc1d3a6e82090879aa746ce1789a076a4df04c04728dd46473f078ffdd5a24742d4ebbab0d38c7fa1cf380e52cebf7330c72581f2152250b724c4f66eecdb4b337d3f38fc52e0f8b491c281cde8ed0c6c6d2e78a40348550e4c60779a2661e9efc7cebd6b783aafcf763e8d19337d3010f281af942a0d6361aebb9efbe1c91674e826275449e330a463ed6771e1ad42f91b681aa4ca8cffc1e88f5a3ad2900f842807dedabf983e0c06cdbbf1da8b7208485a30739fb1bea16dc83fde48af7ebc18538dce341cd331fea58d7d760fc7e0c0ac9643506824272915b971063ccea5d2f2037e761b9104f0778f3c8dd6d001373c1c51f2ff43c2a9c3bf11d9869309e02bea4ef2a55a03a800b1ca94eb5174ddceeff7e1fdfff2ded301ec5f6b420048b5d19aa35a3a32af276a0fb029d8b58ef3447f0fcbfa509dcb7d9108fc1bc81d608a2fb09ebbd41515fd17ff11df35b5e86bf239d43ba3fb11edbfc2de2f3a0d9cb319637bc6f6b66cbe507e6270ec74fac9b48f8893cc44beec138b24355b9d03925f9eacabffe8640bf312037115d0edf5f7aa392dacd1c648faeae5087865d464ba5c2ba54b4b4a453473f54fc18bec7e9aaee4389300d39def4d6d2500efe44caf72fd14c6862db607f881362a370f518d309ec0bc09ad54b741720075753db7b86677e1d5c1f70bc43be2db12ec3997043deee4b53cdf3c17bafc29373263eb9fa1a2602c1613a4daf81aab07ae1d74095ee864b729042553a139bdc4be517f99962ecb1f7b1ee501cdc3a6fdef33af54fb24014caa050f018a1d652a0e617df9ae64101781f15606a89d19dfafb705b67c3956ec835cb6891819f2f9809f708bee19f0351ca0c977cabfdcd3f2fe16f15c815caa0fd0df1179aea5f83d3b622311a42ecaba5108eb7cd3311e631aaf9d53c0732c19edd174146066c5f723f121d5a4b3a3a7f78d32fc3053ff0d117eb49a81eab60ac437e259bbf832add0f5e09314bc16c7a0a16f9ed3013ae6191e7f81ad98b828865b2836be267be701b1f8910fb0b547db4bfafe0ab755ff0b5327095936f092cd60be49940a535e43d13e6865cc374b1c37f5778ff0663ed18b8cafd203a77c385f9af90a7fff63dad0adc3cd354210e8b2a0f1381e2424caf98079335145a0c87a4731dcb99e9419ce4e178750c55a5c473158c7582c3ae2a97606ce6862d1f438873dae1f6598daa0ea630a5c14b349b3e0eaa72eb8f11e2866602a5458a81ccd102f1c75639b1613aa7c3acd367bcdee5417488edd78dbe0c6ff77570cddf4101e709be7f3d88fbca579507c8658532d116e6282ca4dfbe2564c833bf586c1c771df624e6c3fd6b87422ae977a1ddc005cc9af3c1154aa885ccae83cc9e8f3eacf61ac31420f5ca853828cc2fe2db84df99ef9a57665bd7a0c6e8b6eae23393bf07d64e20fbb52e83625f61d91e89d505cbd4f89d836b5e7dd8a77976004c9b1c7cb886a7436c333ce3ed1e863785750caca968b8ca3954e31815cee8e0ae8e5122403c18e907aa0eee2e0f4416e708f72bcca37c82cb9322f7768ca02e06e6434ee1839d620afbc270952c4a8489b6c032da96ec3131bf18def108b5e066dcdeb0a6634c77fc1e88a0160ae64d02d453d5167115a893c7fa447251b4c5b13aa8645f7b33ed128ea7e783b7fdf266da11fcf64d9cd2b11357851abb3bd86d9bfa434bc5890da5be38855c7e2f3b3f9d75a146fbb32e94345a38205b7d90fc9357e4e9103fe95bd31788b97a94589ec36321ef9c306d84cdf3919a8f02ee7db043e333fa64de02351f2d955ba229b764f9d3193aa6f104ae7c090be716a84aea5bb183acda4556f6b615aac4b3858bef85c7288913632e6379e18cac9aea20efafc65d1a47e3f0123d569760ac9f8c873c59dbd995f4ab0ab5a473d6bf04eeed1515ca83c9131faa705e1735a63b2a5fc755302f1f21ee8bf30719e0ffa2ff426cdab35ff5dace5e0c11eaea367d69e407acf79d7631ca888f92ca2d78fd1ee148ba1f00b7ec5fcb2ff55fcb2f427dd9de27844e46f1dd7751d30ecc7173ddc7f34fda85b926b47258e8b9cfeb8df3afab318ec6d17d325edd27d7b008af2b3b9bac2d89b425c0d86f740d1f61615279987d83e8bbcc2fc2f4d560df5efb3f988b1b27cb79c81662644d3e3dc154b682ae380ac58eca26535b313f77b2f46967d2de131c7be7489b7d2ef9b6e07c3aa37c652bd26ce748aae5e8ca6e5e79dff8e1422d27b13e5b86a72c432d19a8afed7b7aa825f9afcf598cdf27312d6dcd10f980f995b74b0faa73df78551a793a3ef746eb02cbe135de1fffe2bb3a7c732b4a17bfc84f98877d2e6e5f8e285ff68513a3f16ecedadf16ca0889f13c1027c5c10da58fb129803e7e3273eedb5d9faa12f3be17b6cff2cd7e35ec6f4cb27fc85e2b894fadf17b3736bd7cf300bb6c4eed79affefc57bcb2bfe2e55ce37d4725c4301412b559eac14a19812dd31688bf0de5e79be7810d12eb0bb8ed04cbe37ae2875a3669df7346ff68b6fcaad9ef6ffea9feb55476d40f53e7784c7a82bed083f80097569d317fcfc61e49be2d59c88a93a585985d126cca1b516e6ad26eb99af14b552bd7857cc13243ef3ae60ba19654e9d2ca5e7d6b52459e39723c33e7e6ef1fe454b9717aaa4f4e635f46d2c65dfdb37ae0fff717e0f3369ebb32d4f25bb22e56af4b55937cebd94e68a8dbc1ebd47e78e6db87f38dc4fe4edbe7f7786d5f97ea1eb7437d902b89f4c5f9f539dfc29aea098a57b41d186f4afab61457677f2ec5048b421961d90c9d9c91bf9fd84b754b7cf676f97cdf8ac197b6b432f0b5c119ace4f1c6923e96b397ff2c9d2af4943af494dbd5b37e9d77b6106a1cfdf67dc57b6abfd713dffe708524106fa0331b4a196ff6fb7fd87d90039236a6cf28981f19ebffd9ab99bed7abf9eaacabb2b4b3a54e5b10c7077b6f7b813aafaa728658be14dd56f6bb68a84af2f3b7fc3b7223d011b9f7c686aafffcde09f075d3489140f6e1de7d3154f30fef4eef81083577efed7bf2c850777f7e6fec977ee7bdf789a13a7f1823d8a9f28f05379ff6fbd92fb41fe71389d2a5c1b07f1a273e27a23fcded353c457158ec3ec3c229b877ef861aff697e1b7ec9bdf730d4fcefdf13212619c6eca92fe26a2edf57b3fa3f2815948d604e0257bf0690e3a1e1f39bc6f94e00d787fba660a8d51fc659c71fa79c9b5b740ed43fcc6d515f9158b5efa4f2397035a91febd089ed50589f51d1f68561754af78efd449d24cb269eaee1a531e5f3c45fa9f4622954b9f5db9177de201623410572aa0ae5c2af4f55c1b2c8fb566dbfebcdf4a8e313ebf8f33a3eaa7823caaf3496ad1b5f9730bfe7b15ad998a7c9176f6c627d5f08eff91b9631c2f12e8e16ce6363bff3fac127c428a755b27121b7243672e9ee7ba6102cb6124aabc43841cdc3ae8e91e46f8477f2df213121289934fe132c0b35f71fa39afcd6f370ec9ca3b9902cbdd1f9efdaedb4731f68a77c8eb19a3eafa1fbbc464331329b6fd755be34f504f72067fffa54e54b00f16af52f1af759fa40df14435cf8b1bdd6bf0b7d25fe3fe4b63e5b6f0698a327881b556e8d8f505765fe996d30d647c8ad438df917553369fc84f92dc16737c4aa6399af7946ef3e43e3c66d57cab0eec0be75503bfdb123cfbc417c3cff8cfbcd337bca474e0299176eff3ccd4b3b17177db6636761332f7ef71b9083e97bf1c8c8308f869aa898b7331f778652e6479d845ac6f8f816e4c0a8c8b3ee5c44c9fad4d1cdc04eb116094d43ce8daa1039c7abb1fc77c17209f0042cd370b656a368ea35aec933b72f225361394fc3f2861a8cf531f2f46c5f3805e66d4b51fb8df9a637d35ec1269b35fcdf22fa0af3ff4effd38eebe518aada178bb55ada6c2c75c2f9886f983f3438136d3bbf11f1fbc71be27fc67b1f62b8220f64ab4f5263a7a6f2feada55bbab75a5ff394c615f3fb4f493afa2ed68b67da9baf4a6fc82e1f9198435c37ee3b7243de57def8c71b7f7741fde2cd3df9c6aeaded92f8051f02590711cea2df786f71b10324467c0e63cc7c5717fc91340e0ae76ea87be083beea24911bd9343fe3eca7029d37e2cb5f8b2b16d79d51391cdfcfd8fda55d651b17bdf929ebc7fe1ff83b79871ac19077604dc0464d727b78db4c1e63fd13afff52b8256b9043f717b091ed591d367cdee510e381bfdfb44d73a8fcd934f9b0a6446e176ec9d2b925981e60de9516270fec2bf7382374cbe2ae21c7e3b77f1292e54348d7a24c6d47b077a4488ccb00cbd55c3e84a6eafd188c3b3d879ab5e5f7365b5f6fa637750c30adb7f128749ca01f34cfd21ae8bb5e6ccb0e6c899df77b719d1cfdc76bb1f12ff2fc03f3a44e9c4e286a7dfb19ecab766fc710e302797dc0ff21e638d40a823f4865f8215f5da103ef23be3954482ff4d984c4bfebb1afe657766df97496edba7bc933e1f706fc5f718ec48a8c39e77cd4499d72b15527dfdb7575f4fd2e0f45f37ef0a6238889b4a046e6235ae802c80449271eeb8c92ececcf05aa232901ca4724befdbb78de24031db8170f1bf33a0ebaa3e2e7b37705389f648ebfd795d07df2f03d4ee777c97b868a247aefcda675810c1603e4f0b1e360377843d43611793ac46dac13f966a8511ecdcb0e0e3ae7576bf259482c4a2e190bb3f73cec898cf2bfdfc8ae8aee3b75bcf4046969571b5aefbfa1e3ce7c5a75622caa3c383995cffa5700f63e9c7be01f07db12aba155e13577915b0bbefd6dffb34fab7e0c3fd7ebb7373a839f036a6a99bff1feebe4cfcc889c49e96f1f823fcdb96f9cfac2f8a6efd679a4ee8fc8a912cf83b8f86ecc39f926e6d122f4c721dff23dfdd7e72c1eb8ae49119c7f59370e7791b7b2df4c893b715b9cfdd51bfb71b0707267a1c7780f85298951474927f68b9d2f09e09829e49de52c6be2db89fda08a812fcf85078cc386f842162f84cf7cc08084f37da6933a74587e2ae40b99337cc6c8923faf9ab31d59101ff8cf52d5c04e43e391f078cf9afd5eae9f62bcca84d032e3612b2cbb90ba12a2937132ca65b9a82443d5ce1f0d6fdccd9be74e4d4e4d3f16ea95e589180b320fdcb3ed770a6a437357ffa04789d76d1c425e9773df8f213ee3d260b03731553be989efc9cad37898fd87d73368df981d27217b1cc644e8daaab3c6aee76a978667cea5845ba357becd6df34c956e3c3d6962fd5c8dadd73f28998874dfa45477ea8f53fa109bfa93edfc16db73337e4a4feb6275068c88056037e4febc1c3c2f88bce140ae415828d9c195889e88fb05763689c6800b9db1b178d3a6cfbd98fc6da1018f597aa00b72735435ede9898f204652e99e3b988e2026c3e9e725346dce4096523566fba673dacc6569a85bdc3772def2b195eeaaa43a5a53c79c8c774bf6f79cc4cec21941cf0f64b131d6bf9abf2d5942f73c364e64be1bbe3666b941cd3ec46714b305e273fbf99d7bf6d6620382ae27a04228994ee32fc0d60b3157cd35c21f07ed95de4ca77c0d64b646ee42c937b675da1f2c2f6e463bba471a5b67b92eb4c133d99be9bd3d83e584acd0b35e1b0bb2368dfccc789e95bd71fbafd9ef7ae27334f7cc4f405eb686f6d628d65cee3b6d7ce5132ded5cad9bafa07e3bc6762e899e363c877d1e819fe77396785a9cc95f10e3e3ead5016225315fde827c436bb0d26bbb5f9f4d3ea22c71bca2d08bc6af90307ae2628cdf50ca680e9f4be093c67db521a7c69a940c6784f2ba3734ae7fa194d84ae8994bce4846abae86cf93a735dcb8ba841e426c1420bfbeb57a29a575729d9c695857fc76dd7eee27c73f615ce007a1b61cb09740cc749fdf333a6cf2e23a7a8146e39091053a4b1e667c1e15ade1d6e651e1b98e972eb3fd804edb3f33e8380779f7e599473fcf27ee13f397f4e9bcf70d3cde6e4e5137ae95ea8d4a6c64e6d7c1adb3b0702ebc9f1f59755f3e63fb0e640f949c2544fcd6ad0c71ea7c73c1f8f087284b4112bf21d0ed7677df7d69cef64fccb3215f2f4e367b1f7801f75cb97465feb78452ee7b4f6b1a271dbf1cd12dafe182d40c22bc1ef747839c0e2edf36dfd8ef6fbe5da74651e741118d0ef32a5fdecf25cab12ebc8339754527f2ec1196d3486ed763745b8b2b4c236d6ed7fdfc7be9eebfe7a7a42dc8216cf7664d7f9b39d4e8569d0cf212c1bf063989973676722bf95676c6f7fc597bbfa595b68d8d25df961e39733ec415a30dac3b63192261796b34e7555acdab7c83f74c836bb0ffbdbcd35c3fa7ca3d76be81dd17f34625f09d6edfc09f48fb85ef7ddb2feeec69f35374b05b93f7584cee0ef39a64e3c2f5f2b3f59926840e270fc0a219ef8057ac66b9d4e7e796dbc8064dae063d3f0826672109a1584ff6a233b2b858fba17cc5b50d39d46dbda6247efb24fa1293cfc440cc336dfe7eeeefdfaefc4a73041a5fe0dff06247eaedeb65b3c798acd39e036dee0f3e43eff91bd12bdafdceec8d3d1ed2c91942f76e0e114a067390ef4b9af7c8f0180e9e390d4f7accf273697e7abd4985768fcdb2c11cf3d53d031b1812ce37cf13928d6b72b238b1fd3767c643483e87ce075b787be2a9272c6bac9eedf772f524fb87584665f2ab05f608bc6f06e47d2aa7c05ce1be35fb2c35d4554c6c34e4fb9467533a115216abb1e9ca32b45d540cf0f798c89fc3bc1ff2934526cb6ee919db6bb79137b7bd7cd23ae9c70c419c9d4c6cd9c109f29da9bfe48f3203c82b2cfea095d9d8fa35f22fa6279a8b2a241baffa8a54e1bcceff1c7703f91fa00f0871a4424cd41f62ae8e57db55468799043898f6be0eb5a47e44458875e4af68b1bbad935fd7681c8d8d5348b1627edd57f3f79b3136455fb8254ff80d32f5dd8d9b7cac98cf970bc7fe89cf89fbdbefac5bfb25c408fe651b24266b84e7838e551656c40edecf6b9bfc457c5a3c0adcfac96e69b77a56cb03d9de2471273ff56f628c63586366bfdc8cf01c6ae58f6b9ebedf5633e9111511d5c748fe1e3eb77c373f0559d7cf8352e9efc79796711b43314d0c4549366e3f8eaef55bfd6463b41d731a2ede0b3d13ecad37bd1985f3e2bba6139cccd82f9c55209a7120b76d6f44fe3b0dd64bf931fabbf73b7162b3eff3bf97dee81579a35eec66731e52399cc5f1399665c9d2668f750753f4093e01d4ee08b3780ffba620980c08f63dbb7ec3b21991358469b27120cf310b4493e0d0cc260c435e095422472f21572317c1872f4c13a3e072e3e642a8a5b03fff87601b51beb9978ae52cbb44aa6447503737fc5a0216d2ed8af7db06e45af0fb431f8cc22fc39389f5893250b758c7280e9efec0fa1f3e07d7a0a7339c32720df327bfc8efe118eb95f9d99f6544469a574fed817c8a79a13bc9e8357c6e74be416daebd1832bd3973285e406b47ebf711e4d655a1172b62f32feab8ed1b2a48bcd18af80a1c960fca7e373a5a431f9f1ef80df28fc56ecef2d4b0aed6cd236ef639b349be7dda58061e88397440471f05a3fa1a89ce7d2b526c6ad10cbc99eef9aefe9be8b28023126aa728474505368ca5a8bd21a10ab54cb87e107b7fb4716e49e04aafb0eebcbc3f2639fe8eaa491f2257d3b4702efebcb411d6e132bed62989b5dc72751f77ee24235864fcfb5c1dd5f4efdab1b8daa24fed9dcc11f2f4d13a379365ef3d1a0b3be5302e6d96cfb3b46a5aff87d418c334c5da70482dba92ef4fe75ae65c7cdc86373a3b2ee83767a7d058eefa04615d42f1938dfb231e08d86d0e1ef8802f3417a4df5f820fa4dc9283fbd2e08c7c2e6e5fbeea9c7d6f976bca2e318adefacc261caee7cbf9fb67b9b548fef21d3adf9d6b4986fbbde7e773c7f09e30ffe2f0573aed52fc61524b6a9207c5f612f1f39c646ffc3e71a81f0fef61c725781e0d1f569cc4159588d875943dca0177a7a567bbd1c7e9bd3eee8d46706f8675c97489654452ffd3e5fc0847da0f09e58085d3d59749dc0142a9e0019df7d789d0a13f7c9f5b9b1c9e3b0c3e47d703f6c56c976c9c0868b8338fedb762f0a7174a128c75c8e70a4ed333f2b22312950bc4bf103d4cf0c5e3d15f3435809b1a09be2bdc2215f0ebf2a030ef1fde7404b99c70566f29669d760c5429f65527235800d373202a99efee2adfdbc5fcb570bc8bc3d3f618423ddafd11fa604d212683e4734cef810898de0f0df2aa9da62fa1e8e40792af99fb6ec5727662b0b3cfa60f1aab92d19abbac96cb312aa473e40a39c3cfd716510c340871ff4f799d6754ac483c38bef683bfd2119df83012e2702e79beabfcb65de5b6ce84389c75e91889abae3fba207e4d2cffacc7546f2539f958af4868cea489bc77dc17f01991f32c2b39df4fd2d7c57db5f71dab4e372ec1c040d6240e68de71a4eecbe6cc65fef5f45ca254e07e53794394b1ec910577d05bce600fb5b0ae46f368945decdf51bd9a6b228959065f15db17a5a1cafcefb7360621979abd3c5f319f48ec3fa494c58677c6e6ae1a5eb0b257cc3f1ffbf78e9f1fe216011b598138b39cea6c5263d380335e81bcc3a0c0fa558bb5037cfc9b76980ededa53342efe0b6cdf5f1f2ee08de5fe42e8caefdd38bf02dd1b7c930cfe06ffa03c888db59e03ee5a3f46e344db6872e93b63b21bffe71b4a05f20dbb87a531686b905fd6b32e8dc1bc505fd4ba5024ceae87690bebeec9fa71eef8ecd9bcacbb7197f9d225313d6d8cfefe82dc1af3bd0b59abcef305f8adddfd507b5837c8b03e08586180d5905f22d79110c4a356808949eae4e4671ff616a2b6ce6df941ce01f27d2a6bfae999fa2390d4c54981f5023be2babd9f0ddc4fd62292fc64f238000ef7e4f43984c9651f5f302d7dba20775e5aec9091e4cfda7d831e3486bed987d06712fff42078987cff0f73d6ff23ed7f752218982bc9a7314dfcdc1ce6ccf71612bbe25cc8e1d9b482f8dcc358f8dab8477cbe2710bf3416084e5e83e377c463a5f35b7dada92d0bda75ea0bc2cf3dc09e9b423c15b44fd69f8cfd48e791f513c69a6edc7ddbcfb9f0659ccc12412e6144714ec36ff64906fb84cd2b4f5714876e88de272ba07718db83f836481cdb0f7bb13df3ef1dacb4364e9ce535d865d2c5078d5312cf204b3e9c09198bbd798a67ed60eebaf21b9b5fd3a63e6255397d2e6e22d9cba4cf1c3fa27a0f5d9f59ded8265bfe2e240689f3656b48e90cecf812f1b9d0fd0ab4777cd35cada587c7b9c5b7646d9ec04fc7e687b4d18b2da47651de37daec974edfda7308fcd81c1d4addb9aafbbcb1c4fc8ef846f898616d684d1fb0fedfc6166bdfd95d1b5cbe817b098f3185acc92df2ccaf160f17cef133b2abd8384d85503c022650fb4da51d9f4c72848d227fd0ef40be13967b219fa130e36816274bbb0cb03ee975edd7ffa1f30078ad836380d816ce2f457362f4c44f1a7c5f12d744eaceb7b1933decf23a6d63b4bb764e4f6cf3d45a8c72fd61105dfc93c461439e980eb2ad3b491966e83773cbe39f4aab79956d54adf1abe8098a9135294301e2c2625f24bae17ebcbb868b69eecfb0eebcfdbdbce714cf56077c542454996735f100899ef81cde2df84ff9beae680d8c3c3c35730231a94dae9d9c5f40362dcc3ca4b95e6b51c663d9e2f1d3f747cb590eb1e7f80c0bc7bb7b446a0af1b539e33eee624065a1561691b1dcf81b3d044cfbbf11c59145b6f01b3daadfa8f93e5d1fb1c4eb750ed415a5fd2a1df6c7ec29a66d5ca016d334deb8785e7c826b0898c204cf0361fedb93498382f41551792d2ca23c5a80eff711166663affa5cd40c8bf30d6218c71077710bc449867983e399f9cea5f5e9c00706fec73f3cc7edab39b3ef40bd06c0d2859c3a55b9139c7e29f3ed32eef26b29e5e2cf2688c712b3ab186c2910735bc55c3c1ae0dbb678a2db3774aa7f419e5c7bedd2d44c68fa0ab10c809f84658981bcb49860a350594820cfe13efc906b023a72cf8f4cf19357922b8c3a7a4a48e90a599351309eae007758019b574be3a03fe44ddd01e6e784f86fc069dec13ee6ae933d0018fa2daefbc67e7f5bd9efff13aa2b6eeffa377427fc12e2d27bb414022d75f1f7f8f7993cecdb02b4138cdfbf9676951b27a80793478573067c5d5b88d7e29ee12adb1fb0170535509553f810327c0fcbd107cfa7f56d2087266fe817f6f656428f765e7d8fc9fc93b748956e36d47fa881ced6857c1efe5699196a773ed785768e304d127fe9239a97a9a12a172442cd807bf82803ef1937eff1a40f74fb7a460f21598bbb2ba5e514e2330baedd66de314fa0721ac15fcb362ee1c7c416ba05d963e96eb1bcda957fb87a37963b2982072fbb1edf38f9f68dbedffcf6e7a3079581b12cf30fa1b732334e44ff22b587267c4d253d28fc2bc87b33256b65158dc9706f26e8555aa1a728a631da3f8c792545eaeacb9fe56d9cfc9ddaa6d59504722ce6d3703e611ead3fb8788674793f43ec4397de01c7b9c1e626bc708265d2322a687d9959f606f90c4f344a6939159ef69ca186f83b04e3443127507364ef9f911b3dd60f164787befcf14d32d36db9e67487c39ce1bc9ff1987e6f1666cc8de3378c83f0b2f3c6336357aca2b578c3e7cb79e3de2ebe178fc24249a3a666619ce133d24feadc50c392d8008e983ef159f465a8b772e90915febb7f8e45eeaa1b0b365352c004bf13f96a28a7ca9be9ac2e56a8a5a588ee31c58922b5aebc9946626a45460fcd7b044f4de8e42524c102728d5e23bc3680254030ce9a76c67e4a73a9d9b3b47d6a97516e092a6a01b0f2880cd9b9e717521a79805940f2bd6daa5f3d5a5f26128126cfdd3c0af31c8c21eff33520ba42a19f485f90758b57b38cea49670e0b3407dfefc1ede7593849e0e6a36e9e05a9030ad7683bad2ff38be61fe2f5e860e1177a86a8ef4248e18c9ac50ccf8bf8fe890d748ceef50bbad71374af5f11d157a7e801b8e533268f18b29932d961c7628267b582effb5e78b45de566c87ecadbc376229c5b678bc40254c1d879f8eeee1a815c2409a1e808e16c3a0ac64e7a504dd88b41f31b3089c8df0b6247d55445f850a1a6c56f4ddd2501fb7b31bd1e489db914f6bc7b6bf1850af2bde6f7c9b9692a600fe641b12535fec6ac7da81b7744a43e096ffbee5f639848bf7d2fcf827174d1d42afff0081e25f91b7f87e4a8104c1e7cd64e8568364d0355c2ebdaf41589d2edc39aa69107b6d607c4eb8b7589c473532f9762f7e176b00c26b0dab0daa28d837dc674a9756253665880fa39c27c0aea1a92dae8742eb0fc2afad694ae9124fa9ec6d6e84afac5e693dce37ee3319d82f1ee06b5ef54e7dee0d05953bc2f46edb3661c2e004b70c896dbc7165e36ba6113d363a6e0231fc5e98f583c1caffab4b237cb5dfd847d2770ba573faec868ef519f749beb9104aa04b1b6b6f8f28aacba2f87bda2a41ee6fb85f96bf5d0ce3db9e5d5b76abeb6ffabbf78921d56ed9c0cc75a343c8ce3298ce7ad333d6d64bd277e44f704d47eeff05d52535175e208af5b5ace5b1de5896f73f4a377fad0d212f03bf987361a3a0ac67ebf2fdc3dc20f77786da9df0a723618ad657936c4bf7d511aa647beafaaf488789ee24db11c0ffc7d57fcf0bdde9969bbab67fcdfe7fcf627990164ab84f78f09069c9d5c3b86da8bff4b85357e66c9dbc813547ca8f8accc4a4395dfbe93433ee7029fa7123fe1d68bdd71f0f98660b76e68a8398f5b9c65594f377b215dca7a6a7470fa219fe67bfa6b730931bd99e81ecfb1aeccef456326df7ea0bd66fef07985d762a7aece9d71e0b379cec52975789c4e641622d7e5c6a9a107dd9f570acd71fbf2931af70dff3e91dff9af4f8a99d9fd16a7df76c61d5dbfa3b5d6ce8424df9a34b46fb9dbf3aef135a1338cadf153a19261d4f4e61be6ab8355dd5be77dcf2715c16fa62b6ecb9e4d9f8f89c880f66c3eae14622d493cb3bb023dc498cb0feacf2036cf54c8d13d4ebb340b3a2dcf5b21d6d9383960a341459d7b635d08722c6fc6dbb0c8af61918f3eb0ce7d9ade0fae743f78bb89d18b09fac07bf1cec7694f245693a9d597b442c7f30ab1e80ed4a2340a8619bd2f3f4499e160e4be2c5d36c4b795325fd89ff41f9aa3d58d3f29f47320422ed6264885e79c6e45497b980a2496927f2fe9d83a985e69c159d1d7552ccc6f089fd98fc1c657ed8a3af6c7786ff07dc6b2ebb3fed3f7ab3567f37e42ce66b1c567d713ff05d6176a4475c6c9e5eecb354793b7279a1439bd432073a1277e6a14bb3c50090650efccdea3fb91f98d883c6b9f6f1b59e162da1bbd29deec9514b0ad7f9edf3764037fed5dcfba76bd5304fdebe9e4c9c6d1d325c128ebd81a0c551eb66b603e57f0f5a69fcf88a55db57b26959ee73753303d0236ec7296b7b1e57b1dafcb0edde319ba438e7423e3f36d6ec555a1e74aba944d88af58b6f23fbfc632baa3624f782b6065b5ba41f6b6ebca5d36d6d1814f75ae75ebb238f4cc24360f7e4c8dcf7d70cf188b32fd5cdcbe3e8a95a4d9efe7309908c446ad9f7d477a2031cea17eeade8c03b54e906bfe5e2eb44be4822c9f04aaf36917d23d7095f37ea197c1582fa3457676005f2aefcb612eb5e174eaf42dbbb56a1c7266cb25d83de6efbfb66ec7fe85ef4f21b6db823a6a9cad7c25adec2aedd22cb55b8ca99d07d3ad68466b71dbe349cc37debbee367a1f57af06afb1c3ce667e5de7785df15a6c45cc17383adfef30fde0becb60bbb6e12ce430fbb07ceea75d5f45cf3623474fe3f2e7c20241fdc73a7b5e77b0996743ebcee66dfd78ffb51379fb24e0452ce8fcb6bef47be76c29d7f77ccb9f4103cf147a1675f692a74e48fc9db882f832d7a53128b21087b3fad0d18967bb74e3544d5c0f8d7b8b512141ac9ba1109b087a8ecd3bbb2e79968b39d341bff2a8fd38a90fc40ec2c7e8353147803589dc09c4eb70bfb7bddf70bfc1c955589d01e5b257ebf8c361314731c3ed1758bc1fd34d695b59c462a2325a039ce190b3b824e5bbdf93343ce5b7486df0f4b9f82586a90e5813dcfd164f9dd6e264cf814f843e37ac97b27e89d268dfc8efbc6e8adba1b8e9c37fe73ec42b29dd6bf2c03555c82355c990b78b699f58bc95d9c45bd1fe405cd6a2b37ef0ec1ee2b0daef873f8c097417a59127e79c3c7906fd89c66e7df73b2ca413d4ca6098ee0bfdea03ee13c5f23cb1782e82c31ae480679f1f4482bb44b0df699c97f2dd6fe711aa24ee6de877a4e695ef3937a815e070d71ceeda6c47ae0fc47ec275512158bfc2f36faf5b772ff667cc07ddda5ebfc969935649afc69e55e71b5709d0fd5c7b565db47ea6f397ef60de3319058203398e2c1e7829ee2f21d877f65f2b2b2bd722923ec6d32fac87f88a9efb62fe88589d928cc4a4af4f5512b93a3ea7b27581cecdbabbdb573fa9428da7dfd3e8dcaf47b8ceab0cf795e87fad9cbc2e74692d94cc3e9841beb89073bf51b91622c8f9dbb83ef80c910bf1b160636536256617d55a3b5e1aa8797ab8f3ff13bb57f33fc592029f1af7db66bfc753a859112eb2231a3b234d358568368d232f666de2bfe7f4ef0c1535bb9e056307cf55732f2c9413c41b127b973264fb436e6453bb5e1616d28dd903894d65d5fc7f7027b7c8dbf2ff8b80dd3f9b42cde440cd33b001525be74174263b551a0709d80b492d9a3bfcbde5fe1642624f74c2d974c8562a133ba3708d3c338fbc77761d3f7f43587eb4f8ff9d07ff3fd4ff58907852defe41d7aae1275bb68ead4e4aec9bed6fb9f71bf7bb79dff1de8ff87cf05d7a06585388b3db36f19ccc6ed9d82f313fa1f53c1ca8f3c36ce08d6df33b1bb1fc83cd581eb01f2f76d7c835bff634aef539d6d4bf060ba7f2f7dcf9f56453bddd480e839281cf00d310a5afc6ae0cb8f6e4da0ee6a8b1b9be1c3c4a7723ee6fb1ce91e7e7f4fd15b5c512bbdbd86fdab2c9df9436846b54ec190d98f839461b01ec15f2b7cdfd1df0efeffb765cd25e6bcfeafd2676de669da1dd9606a00600f77b437e9b80551ecca6d40f743b46aa74f201af7c77f5c5e8ec5b6cedc8f7225512901893f12ca22fdfc5b448fe1fc4649f63b955c996b35d6accb58eff0c158013c3c724437e2e2fbb3cd9e6450e1fffc47883790dbce995cf47e85f8bbc293ee3f3c13eaa66b6019bcff6172ab65c5eb19961d9d76d6c397ae68a66e6311a23fe99cc9f0b5dfb87e03c7c4f9f1119159f69bcddc3c9365e57af094fcec5c1fd543af6918cc4f2f1797ca8cd7521ba0bc118e9e0ddf8298717c030de0eccfe05f1514dfd3c3e5e7afbcf2a2db3c6563d7f7ff5e7c2c99f4d92833bc996cc6696dc6a83d3a1997d6f6597d9c6051da00c8a2db541d480d58ef59367bf187e3effe6f95c420fac332b994f7da36dbc93f685923a2338e6e59f9ea97bb687139525584dbc25f2ea5f5013d46ee21d4a7f56179b7d19af4725a97d4eeab02f9015e79ccd0ecf7b1914ca3958e46f4bb98c372ed8f6589d4ffebb5fbdefe6fe2ccefc193e937af3dbd824b3a7988d83bb7d8ad9f08b2de45eace6f514dd1b59a8d09351bd91e3becfb1a4b6eabefdb134b02ecb62e858ec561b0362f17e967efcb36fe5d4efb12dd7626bb3336cf997a5ae2e07a80b126ffc047cd1f1665fa54ba887db8cf58c75efb6de6d45f167c08fbd41f7eebc2fbd8afb9e2cd15896cc68683423b5594742bc5c9829d1f1dbb5a2b139d2e773ec47779c10133d4997f01d12d380ee7d1bdb8a8bd7dea5cb260e8c8fd56ee2da480c0717b31da9ca099ea7b6573f81fcf71ce2a09fedb5adcfe151517b4f2db5b83bc7a60d1ab3dd8929392cf20cce7e2ea6b2c1235795d306cbbd1ddb2a67e3caf28b5ffc7aa5e3e87f3b6fb14c987d29973e5d7e6d567fbd2e0331a924dea2d876f3e9322ecf2733af913b19117c3afd1a16e0f3a9f0798fcf42ccbf87eeed899cffaad9ef67acf3fb60bf17b02ce01ddcdde830ff8a57b33a09c6b11aa8ce0b6be343f6cfbe172f0093a17d6613163b18cf6eac5f23ef9db42b821c73d98a92109cb69d6be103de2ddab69b76c7dcef2d3df344df6e9fdf8bf11d6a8ab4cfad7d378afbcfd9a4be0f7cd71feba52f2b77df95dbdf8a7e8d483f4e619167fb421aefdc4946b1feee077767b1da5efd6b208fcfdb77b7745cdc73f340ac85c09d60999eeb8309b25c909b37e4be0c5d27b989646c980e3d5a3b0b9e2538a0e619b9c28d3c539741e1689d6758ad1e321764dd53faf7698a65c807bcbbd8c52837cb8f82d0412442cc00bd57ea41b1cb3fc8185f0351aa689fca40ad37a1aaa4a0a7e16b4a7df18bfa1a88bbeef585390ac6d3a76b507f68bf8b43318e212697f493d6157264be8651f71da18c48bda0eae091b186e3dd3d10abdcee8e99b5d5d2f262743e885bc9156e89233ac941cc992da36236059be4b4e26b1bc0e21e35989958ff792cd532fbb11e8d5865dffaff491e0de08860192fcc94d172fe5e3ed761cb7e43fd74577fb0fce99595bd1d8a1dd4e981ff1d4182da211d9c72c88b66f2cf73ee3fa97bcbe3ad767133c97d861fc7f0f3528273dec55d6a3139f55f9f04732df95cd4fff167837990f1d24205e9f7e89fa54271d392ec02e3b38ee5bad07e7b33fdf6a1dc9ef2d1027af62f3d525398e6bcf2b90d7f998bd9da4768ad07fe7c0eb564541199782f418ef8bd4e00f3079f81c22dc1f48d3c5a2b98e063019e2e1a9b8f1dbb97646f4dbd0885c7145d9d7d2b7b05bb8c2de4ac167a506c017709ec0c6e3ef2ddd1ab664f256351c561e1c494e7623993f0ce93d6f05072cfa950e1507e15dfc9ff79e5139e5682ee40f62fa6df934ff90da9cf04d721b792ecb1691c164a45f7db35f2f494f25288d5a3cf8f491fa6cff9f2aa94f5f3e5415e20eb8ee7ab8345c8306eda3af57f81f7630de6df3ccc7bdd6226dbff1643a8ff7cdbb7a17876337da7df38c69896038a25fbb49f92c91f6a0b03deeda727529c0bc06cd02e3ee8841047f20816b90db1d02d864339dc27c03c92ba38409347b4c80187aa839d9cc89dd86ee3648e3edc3a1f6e97d57f81fca6becc786bed93585e1dd5146fb18473439600cbdc20587a2daec9b758f8dae5e0adbe8bd78c8362728d683d48c38b015b868bbf79aafdd88d8324b511fd82d4c1e2de2b027132325c3f46e2be0ac77afaed7b96208445de89c769eb3a9ab9e1fad7b010e248f9befd80d64be6ee5707cf7c90ba82a45e63b746fb3735cf1702c1e4592819e0801498866edd38fc82e39b76f694b7f0b9b8d5ac3e04874bf10f02dd92e0a1efb8fc8306fb82e69ca1541803766fc73ff89c4b43f36404acb7bbe22e027da6e75b0dc5edd7d27bca4f1df924862cdeb8caafcf59fc84ebdd3d8b5adc848dd8fedd627a65acbec34fb5df9f73cd880ecce762c5b8df51e1f07927b151e8577f914b48549af823be56042aa4ece32976790b712d348f3ad6133f1ec02f79c61be163a2ba3690ac8f9345be91bd217b74e36d50febc4a593ee0303ec956425695f6714838ff28a9173007fca86c83651baf8941bc603d6a5dacce8d1c576815f2466fc816b24f577e65f1fc88e500aaf8fbce4ba4b05ccdb0fc105712ba4f205e7cdfe40cd2d8b93b1e3bdcbf210f6a9481ee86af35d8852e1dfffd19732e12b74f3849c842054aa5986014fd8a57f332d613f4a07c0dc6e4b4f5ab92e65ec2df93c6942f76f382acec95d51d476e7ec132e7c17d3922820dcdf4cd07abc545e27a95bbbf6f6979dfc4f9befca35932c5691760fced5edd6ddb3a9a5003ac3693ec95d412533af4f7a1c2bee3f6af2c31bc1003e2acb65f4bbb4a205e98e6a1c1d9664de0ecb4f6fe1db9429b7f04f12bb05fda3a0c3ff07bc4eae32b14ebe33e3907a2c9b045bec2c2293e5d3326e7c116e8018f01e48b7b4ef19b7b6d3c980da5cde5c0e340d684c33ae275eda7da0513ca779a3c18b22f8177420d8ffeef018c7f6eef6b14efbf5317006223bd990e7e25ae56408be72c3a7158985f43f722d5390f5ef7f4c1eba1aa3cc27184f54086cf45f0a1ad9cb5f702f942ae42efebe4fa42072c5c4aff0335f3f7258d257a857a00809d594fc9dfbfc027be055bb7966db08e259b8021afcfc0172dfb2c8f4476b206eb92c7f96dcf30ae46081fd7a90bd162075827dc994ae4deee39cc30283be77777dcedf9aa61bae26ad5ff149bb87be22358c6019e09323c5b0f5a2feac6d736a0786c97606ca66191df1a7c34729dea7fd1533e5e4f7eeee867cf7b8c61b34e604dff37f22a175ff72739b5c538fef3b3174f9000738ed29206f4f303660ae0df633dc79584682e3d7c6fb73f60de3776b8f3bed6ffd40e02ff96debcbb114dac1bdfdbb61bacd00e5d5a45e7dc6e707769ad94ee79d5c516e1ce09d02188cc7caa7fd138cf92e116f0b9dc3dfe64b472917c09177a1e15395e339be5c0777c4d293ef7e5375a13ece5e92cb33ab866100f42f1ccf05cbdfa8bfa17c27ddb9bd9e7a24e37109fd5c15b4f3899295e8b5a65780c471dda98fa3354a0e4fcfb93c832b7b070c4832b09a1d0e232f46d9f0473b2c6f26d1ca9c74b5828f85caafad872ab072a8d13e4dbe4cbb9561ab240ea540812a94327d3b8fc42395bc4f77441e21ef3a6dfb6ba3ddbc417f7e98d490d3a8a41a52177920550571e70d156feacde909a27d267486b947271b4b9aedc92e5a8ced6424fcee8e3e93895e92b23a623b7b247da8db3c3f3c4cb356b7145d7304e36ae19d8e22ec2ebe18e84ccb318766c1fbf85b3a1338c8605ad4d36a338df2d1679caf8cad205fa8937fb2a5b76e3ef622633a28710d36ff3b6f9e61dae1e5402eb0e76fb5eaeb4f723c6cd9ac63262f93fb05d186fec8ea48cc3cc8a31af24399a32d8f2f50489048707f2370b3d951fdddf0cf31562a35b4c9a4ebcf9b6c10932a98ed4c1cab0fa581972c77fb01e0f60b63c56a0a377be43e57f6eaf077601e324f1d6fd9863c677d45f47920bdfe05b8c616dad18cbab02375e1e8787af19d8c33a349ff406d4f5a1508c91d513c608d3fb02556e7c449abb7dae7ff8103257d4a3b528bfb63abec6ebf8d7202379735d1d5cba6cc15751f131639dfb3b55125051e7f4b96ece8c38913b3137a36f726bc48949e20f76a406d6f7f7beed87cdc53cfc746fcbc5c6f1f5ad828cc44338de74f8fb8e73fbd3bb24ae430fb5f4ebcb9f8f627f06f5eac03fefcfa0be73dcca7f75b6b1a09e411279bb5193fb8ff56dc00f9cdca2c6e6a930b9f4ccc90f44ae1990770876c428f6e7adbec6d7dec2f7561ed4011cc077a1789afd1a985ddbd520dec42a5dd586525f50527335a13a785469378f6197f5ea0c241b87ee87fb84c3e230af41e197fe7d723ba8cac3777796ef466538deb1b857529b58a812cfca4a74ff1eebe300391fdfde27d82ef76f714d86dee7ef431c413776bde56788e256ffeb7131cca6055f33e9091f20f0ec2a59dff394c3a539a354b07cc098a1b8fc3cc6f8fc7cdba85a65d8e7d2c17c17e60fcbb4cd3e053d027cf310abad49ab79956c38cc86b5a8fd5edef3bd3f8b53cc63204ef8e42440f380412d3f638a2b3ebfee58c74b69fe468335c3ea93633efb1cfbb827387b3fd3ca7d682e9716e437a45dac17a88d9963793b24182cdfdfbfd7c9d2aad31fb06206dee7ee03b64b8f46c42dc5edf8963e06c7a227beeb937a5c1dec8e2626a1f71d979dadc43fee005602a98fcd74c0b35b6ca92ffd96311db12f572177ff4565dacc9fb53288ae325ba58ce9eee0cf6ac0dc67b40239678071cbeae6e865904c7d7f2ef9feaca9e184ff06dd7ccbec0bb31ae2165a9aa33292fdfe86ec1ad30ee0a4401c8253c59e5dc5cbfb99d5383a6ddc558528fdfbf351bd16b7bf36581e29f400dd85cc0339c309fc04ff5d65e45dc6b3def13ce48d9cabcae7955d679b875cf9ad8ed28d8752f5bc83396d4fa52e9e24cc5f6b537ec2dc0f3b3137a43edd005d3c8418cb3b076fd5e707124aabd141cd1fcf782fab37640bf41ed46b1d8527278d54e96e64445e079b7bc7b6bc074c1c64e531e03b8ca47190f33eb63de4f92c898c9d7b56f60ff459a8720feb28ea0a30cc192e0a3da7f20ded3bbbbe71b7afdc7b105fbcb4d938f2c7aea91931bdd31ca9dc9f8fb87a0c2deeff1e7433c867cf36e28aabb5c1bffb15133b7c8be34731facb8da8e7ebc2ccd9fc1e3c137c9a88c43a404e45309ede7c772b2171dfaef5023f6f62bdf1b29443ac235e2355a2f59c2ad0bfc08ed3fa167a3501c9f786fb3b6aebe0356bd8c39f11655a2bab794f66730278496c5ee4461ef85ada25d8f7db1aa49db3be9575f34ead066673a1b51346f1cacace9456cb70d4d456d8b231c35c15fbf2d3aa1f912add48bd28e544318c5f799f7d6303fce338611dba6b934ac3d79323a14377f23b28300d3fd50ebfb098f52d3dc3e858292e433d23f1f67b49b3df4b63f117b441c67b639861fd5a8dcd7c09782f99e49c39e1f71cc950f3c71eebc12289318ce6658ae546df6bf7ec537bcc964cdaedd712d549dc2ef8c4ce9e3a69f0e0891f1f304c4b90a36c81f960608c7d3c25dafe6717eb88add5f339ce6c8cdc7887f1dd9a36bedbef02e64de499efcfe081fb9d339ee878dea85c8fc28b45e476f0256ebc8ad41b23ba7983e5c47e3718910ae5b7dfd72425df68f32b2097a36987d257f828695c248d5b27b65d5a27b01e1d5c21dfe37179efaf7d4c0b5e0726b930580e156e9f8b5a46de2e378ac935ba1f31fd0df245d6978367eec393f368afd5123ef377f709d62df2a0d84afd6f77ce331877c77e90766b2e6ca10e40b0c89a5aab6111117fc062553638551ed0da1bead6bc95fc59e73787c7e48c35557b0b923837d45587d72eed0acbc1f760bcbb927a8c808fdae5c7bdf30fcec67b678f48b48651d6391b496e666a14ce0bc4fece85acfdbbca7c0bf29b396cfed19bafeebf76f72eaeb40f3544bbb1b5747f309ab906e26d081f8dee119ab3ad4ad760d6e0a5b1b31df01f21b7bb8da11dc03b7b39c23c125ec6f7a76ffb2c0896218dbf50e5e3a1b1e9c13901df1d8e13d1c66bc86982ba6d1c3f3a96eb877cdb9ce89947f6f83610a5735b0709154373d2c4ed76639e33dac7b8333773d08d62523716bf5f633e92fb80e1a9e781ea605d5ef20b87c8c36a946ff621d8927d77922d1715b1cdd2bdb1b4ea2fdf1616cd9acfe237c8d9b34bbae7b3f3c1dd4bee233bafecd5799586e7d5438f0cb5cc375e1e438dccac9b2b3088bf7faf7ffb0d1fa6ef15ad4fd276a5cc77882f93c326042c49df16f8fa22eddfb270f5d57d89f737196bddf629075bc2600d033d41f141dc9f03772f7d40eeed313e14ceaf4fb5c267e4cb86fc5fafec17e920ee4b439de41b87fa1fef93222ca46a0bb17726fefed7eaa195862a617e8bb5986b583824df625ebe856a1c87a293ed0be784cf4c965b4a6afeaf5e3f445d40857ef6dded2bb1bfe839d4bbd9377ebe4e2edcd033bc2d07f8a33785fcd1a0304bfc0d176a7af7319f58be658beb446316415fb198cd067222a7313e6fbc991e7d02860f974392414d8eff629c3d9aa139c1cf637d7eee4fe36d73f786f25aba796b58860cc72bf89bcb39839cb0a15c97a7f1b338db53f5b3dde351be35b604a861255db6dd3569ea8380dde90ff3407366391ba22e19ea2e873c53d5b92031c7df0cb582e52ffe37f85ec41688f70cd422e9e78a79a373af5d87d63978fd57f99e39d826e7dd79e57261d5d686f3e3b3fb3fe58852aca8a49f0745dfb7feb7f32148c6629a6f2cb9eedb19427a3e7eef8326dfe0e3b60c5b8e37b650fa7c2c9caa5d30ad6e458805e9beef3636e7363f21d526d46f83c736273ea0c6dedbe66b76b108b9fcccc930d6d6a9c534e1edb1ad9d4091ba31457acef0c6a1a69db78b0f6e8b15d3892decc552d1b382e49e939a54ff343ec682f3f32d4c32f77c3cf36297339fc43731815d5aa0f54a387ca63b60b0d82d8e52cb3700870cf2465609adcd2bc625128f4f7e8b90e8599c1c39e1d7a1cb73b9f54334f634c26300fd7e92eb89dfd4e45e1783b17dcc0fd6977b04dfe2622d1766ded8ccf36fce0866b39f29fff12d5434746cff82fa15be752c8dd92edb3865b6715adb1b9641341b72d758cecb30dd37670b8f07457d3d9dbdd19c51afa4c6649c18053e676ac3f7f25f9faa0638fb96e84c3e17756214804b60f85e5692dfecd9acd08bf65966ab370af30b795aa1a7f22fe2e354eeaddcc6f926e93d5a63f679bd95efe504944cc607354f0fb37e8e0e3fd6e733ab3b37602bc573726575170dc04151ce2d4d40acc408d955a32b71f44cf5c5061f53f46de18dcaab10d3193ecaab6fd5587eba73beec47473fe7ebefd2fc2d322765be74b5d7eff0fb06cf21d86f2ca74b22baccd359b765399047947edb1ea5d972b01dc8c9a1799758d7fa6eceb95cd7573f15ae3e8d8f7b3a6fecc627957cba888b1724397ca1b8ff87ee178231a4222910f7975e9f95a0d892ba88a23361670bc3b9c1fc9b62b634fc1bf07407fb456491a55d159b7b5cd198eddf81c06a6593b8b840059fc3c3f7ea5f3ef0ad6fe7fc1f1ff6fff05cea89ff20b58bf712d8d1adec7509f6f72dd8def9bae958fe76dded3faebb6535415fe1ef6eed51ca37decba555171b37ca3b7ace2c2ea84f8ee45caafb7ffc849c031b77ff8afb111680957c6e631360ac05e5a112e0c42971b6048cc1bde427d96ba397dce378e3d6f9664ccf8c7bf61a35eb97fdb35435e9a0ee01870e7431d5c9962a9e9bae3cdee8a858ffa4df45568dc0776565af28657a50774f82cddf96126acb8098988db87f75c5fd19e582f469d563bc5791289d8331cd47033a849c0aa059b09d90dff4cc74c0ee62b88447609a86f75c019fbf248f03d3bc7a247f9f2017e4dee4728ccd7130d6496ec842871c089adb91234f4f697edfc8a76dc17ad26bf8bbe459e71e906b63df7520dfeeb38b51f24275ddff27b1927cec1e8bc1d5bc28879a868bfce63ba35776e6224fcf91d33eb7c2fd6c79e384cc37c9a5ffef64fc16436840a627380cff426e65b9fe0c3ff709b383f190a4c1dc60318b5c2db5217cda5ceaadc9ab6fb5353b10d8083a7b71426a1a417f582e32d845a88d0af3d50667623ddac5e03b1162120bc4c79e139bd994ed4343d6f3a138ceadb827b526689e6b277e92d4f16ae2a348ec0d8923f97035c008e563e13aefb6b27909395c5cbf091fce9f6a16ec0a906fde88fd20567d5bb8a27b273e17fc485aa70e63cfdee1d5bfd676fda36de3293f4a8ec01fb7257c6dea53591a8931c5308c81ee42f04738f76891736b5e6bbe959db7c55edabafb26cfb8139348e791e63834fc9bc62bdd9a5cb83df55d67bb7c29ebf9d2ca491cbf57c26f4395cf04633e2b0db98c97ae40b103f1d9e8bc59850cf230c967f6e3a56ce6fd7c66f28c7cb65519f0dabb75acf39cf3bbf3d8aca4def03d5e806c2a2bf9c6d560cce85ee3f98aa3c5bf9aafb2d97fdcb9bc03bf67b7467b6b538c01478ad4c1c73a458f9e485c2ed99fcad335667be8d72c927d2b9ef93dbab7c427da65b14f43eff7b124571d7de09b581d0e07edbb3619bf340764c9896fd59f07cf2436319961733ab75095ee60a7cffcdcc0e7c6428fd198daec16abd77e1de3c6874c6de62895b6241ea464f55ace8065db3d37f23f9d1b94d6b9d86e3c767f207609d17ad4f999ada56f4d888ddea3fef9bd93f3180e1feafe0bd310fe7b57ec4bff21ac7c9bd5a20825ab603e80a364b90ec50320f5e0208f86ecb392c8fc9dd8ff62602cff1f776fd69f28f3b68b7ea0f7a001db241c761451714041863a134c6454dec6b4e0a7dfbfbaab0aaa00d3cff35fef5a7bef7594c858d470d73d5e17ad11d85c91bbf9ede7ea4f169f16f2f8f3597a7455fa4d079ac305f75eccc38de1265c40cf7cc817c6f7c88d3bde1b2e147be2f538f1f323d4aa1c00a380e32780f942b90eb355a68e42e09e72ea03e439c277b1ba15e04c40ee0efa98e92162fb41dec406e1aafd3ab9720c396a719531ee7df0c168e3aecf5b39bace88c58890ee48be9b959c0f3c0c52f0dfbe0773d89ba360bec776257e36e4e786b90a7cf5fe685f07da2dfb70eef14ac336a686af87fa576c4fe27dfea04405bac0731e473dcb4ff4facefebaebe83cc3b1618eff10f65fd817b2fce8367df8c38fc717e4ed3781b22f509e6561467922b1bc85fc5b3523dc3b6fd18270c6f66a780eae90c7713ee84e831b71c80fea7a52d9c896eeabd91e7c2cab9943ffa2cc3c8c333e7e102a9b1ab9ce973ba5f140c04972b2204b592c3009f40ccb08bf89212a5581bfd7b5d93def11529ce67ca8cf2ec869ef3fcd9725eeefe63cf4391eb3e61a3a86cdef668c9a79a038b00f1f5d54206f69439eaa5dec9155d13cc69fec5e96d7f868de973b25f06b0ec64e615cf95abf1ab915d6c55387c6603fe7f7ab6f111f415bf7447284c3d132698fa98071dcfe2ea2558eea40915b7e754f2a81d79cd46df91d3bbd91edfc35345f8997e5d10a30b2c833dd698bb38cec9b85204f988de3b9f563e1f92037f8f7379ab3cad50e1d7ef8d6f8e18f961972c7feca5dbcaca7d7ab43fc61e57a92a92b9d7bafddeb47baaf71d7507bd217b9ede0ddd04733e05a60edb7917db3c5f6737555781efff3f6a3a6fd6edbfe4f2b2d1de5a03af98197393c9e399b47238223c1e2e45176744fd753b34e888febe42df998fd17e1b2c8a26036743e2b4fb3331763afb835b41f913c0db68628d65946f81be83d90bf7074e528bcd0b53297b08d8ce521c552235c1adbcb6d30778ffae437fcb5580e0e60349271a4186e0c3743c0b5cf64321fbc4d660327c3e1e563349837f9c2e72bdb8cbf211e8e7f09fc0c10f7e230e3b27bec7952db3fe93ffade1d1bdf2657fac9bb058c398609dac5e2cf2076c0f0e508469e5de079da8fa7d9c4b66cb15d09be1ef4a73efe5f6ac3a755a1011dceff17fec0b2ad05f2d53e6f019703dee32300f95722e07411e6099723ce61f2357a19e19546b19f0326871565cb645d530ee8af9eac9e576f7edd91bd90d30e751f11cf4d417dd739708dd1f831e87d5335dd026fefee0bebeb801bd9d87129f8a598efd5c9b30cf8e7e3a616c7a3faea0b7b26f19d86b4863954fdb88a4d8b700b3c69bf14480d9f7f618ef6049f9eaef5010cfb2bc1d75a507c2df01d5f3fe77779d1f2b636fc6494cf3a663855cca78904fec6b05bb7d59eeb71a2b4e3de1c6ff5bb30c81baecedfa683b22de3fd72a26c950bf280ce2d4975f5c3177dd60ce65142f6ac70dace1f6fb2e4f0bda227f3e7dbf9581c1fb287ac8ab4e5d259a35675eb1c276d89abbbe970cfcceef156d15486a3831e6abecdde533ce65bc56f8efb093b8ec7e9ae1e017790e4912077770d2655a3770713627b98deafdfde6449388e1cfc9e3b9787aae1eb7afa0770303fe4df1d9fce8dcbaf49e8fea786931be05353b9fe0a9c76843303789249dec94c42eefec08efbc0f31cbe865339267365972f2fbf0adf2e5e8fc06b28a9e1f47631ed5f341f5f538f8f1bd43e92faa4b44075f91bff5e4f9b7cffdb5659bc3675005616197549eb27cbbba98737df2ef178e1f3bf0dabbaac2c893bafddd0a32c021bcedf0cab8adaf337b896ea1bbff11a0fbceaed08f59492c0e1ccf8fd16ba86f58cdfa6b34c0dbd2cf037e1b60756a61e595e1ee3e068d68d84bf13bee748ea1cd2658c52bc0603bb040e6c3411f8f13b787961becc61dddd5a9ec192e510e1714b497b005ff14f1847a9e9dc4edbd12fdcff786ddfb6c0872ddfbfabf343b59f23f2ed45833d39a11c85f35fc576f40bbe359c649487fd171ea7bba9976d6efbe8d76fa3ce5c3c16eee87da09ee2cef04cef2047d97d8f5f6fe144c2edc4f7a6cdbd8dff14f670212fad95fbbe64d86a10cca41757b997be2c77fd9ac7c6e7c1d7b4513e21630a7d147dceefd54ad154d396aa95b2283ee755c478f97d88992c49cc79b2cffec27b6a92b8f6eeebe8ad7fd8b46e7a95678f6d56642b7d969b87061f8ccf0dfc3aeab3873d3a7d1d1adf548f432c46318f9dc362dd9cafd3fec5fc1bcfb07b225627c8f9a19ee2fc08d70ef1b23ce4f67b15674cf813ab94fb468a81c6f6a1b6fe86726e320cce42c0af0119c17061d65d5c18c8e3f381577f560693285ee99b00cda4e2737e8f96fae1ea3bb7c455f627cf023cae00cde4932172e8f2b838cc9f95a0441efb248ed6f1cd3a3417a1f5e9b29c319e5bb7fd1fecf36ca5ef73d3bb515fd3ee3fc993b11b3f555c357c4a2cde70a07575ff2a478ae7dde3b903596ca11f5378c675f8cf630d569521c66da2a39ce50d20b6174eaa2b4a243c2e1d7cb022efd598c663e6ffa331b305d7efbb972de5a917f08992221ec227c26be5a823c671a59aae937fceab0c9175901afabae8eb3b6b15b9fe2be74314f2b9c056adfdfc033064d21ffe437e0d497cf50578b6baf74c2adcffdd73b320dfabdb384a4c2b4a06da0edc4e7d5db4af87329dd3b040b7b0db77fcbc1a569598de2d0af2cd35182db7147f07b8668fba5a130c9a8a9d37518e1ec883b6768f9594abaf7906ff7ba5137fbddde0fa34e7e9fd7b55c8f155fc7c992f73433fe52b7d5d98a496fc05ff36dd7539109f4a51ccfa0fb7c5871815ecf954af117cbe71d5f2144fe50cc510afc5b22be2fcdbbf51d2b38d5214ff1bdba8ca0def96817f7912a5ab0bc39b2118d2888f014daf10fb4713011728dde68336c72bcd8bc94d6b9619c0735ebc225b4e28166e6e7aa768c5c90801c709f820426ca3347c1058ff3208a77146b97073573961b9f90a3532368fa17450a1362c912244ea71f3fe3a19f4d93fcbcbe23872b3dc984799a11f0a5a275c9f5ca7f15f37d83d9a931e3d82216eb84e6eba073ceed896ba305933c0c7d8f0ee62d983af472ed3c7fbfc8a9dfcd097a3ee431cabcf3729ca55b18e9b711c88f5d98cb7b4937f46e4a055fd378aa3846036f7f06844790b39695182e28cb53f0c7221e7af69ff77f98744d692fcf92eaec6a755952811f3c6798e1feaa7a0f21ddbaf786f20f82a8d3f6abec94eaee0db6c72ce03d757b99a8deb87b2298fde7b1c28b39af0d0684f6b4820a74fcfee7eae4661bed708370df1779a809b5a15a1befce37bcb744f72ddd95cec9ff364d5b0aa2f94c85b6471ed19f56c9ec67726e2a9aa39cceb9693bfcddfb46f24d6ec2d21afa769634d6aebfd3677ac2458a31ae05034baaaaea96b7b5d18761199eee2756dffe2e22d52b5ae393fe7745d9b53a2d7128c18ed876f5f818f8ee44ebe63bd64162aa01bcc423cc774f0a7d9a13e4b90bb8cc2a4a0fb77b5462e92b03eb2036ea213fcf6268bd2f17ee1fbdfc3cbf2cf4986f9541e728229dc1e5f164801bcaa127843f073d3591de6ea68cf726bb57d16609d26a53c78c093732ac8b5aa8def051e15bb20f50764ad6de85a2b77defb1df29f07ce1d283f376e3ffbdfd6d5e408d852f29f8fecbdc6b63c70ab1d6ed9077e47e67c1ddd3d96ed1063c16bf4d3aa2abc1f6ca19dcbc8576e0fe82bdcd629e0b41d7c77192ee27bb58676135c20dc86b54dfa99f90656534d21ed813806dcb369db8fdb08c7c8bb6625f8f0a6da18eed1675826e1f3f51ace6fa270be59070ac481cb751276c6f4fe583763797facf17b3288b738213c772dd1e75e1a1c8bf8fed8405f530ea2e91ada6be9ea8d7cef7a34341fd68f736f3eac1fe9e05cd84cb9b92335ef95c87bb3af5071487efc7407efde539e5ad29f5a0dc79219e96fd2bffa9af46db5817ef11ff45a995c4b7cc141a2551b181f5fa6e747e43ca2cf826fd0373279d616dae3ff24d72eeee4da8c8eb346de6bbfd3df0bfa9bb62ba1edb2c9bcd84c615d6c4faedc8e97bd9307e7e6745193ef80dc56c8150a735fb5c5b8c36fe4a53dd948301bb0ed95b6b2c87bcf5d85c823cfabdee879662f3a419ea5d8ae81f8984b6d417751f098779ccc1572c919be0df8a7409e1139d870a4da2acc25ea537a398cf635e09792d8d6f4a8cf6a92e38e7530982fbddc083ea64dea37de455c3a5bad50768b56786f3b6039ea9c407f1858cbb8bf490d05e4c981ec6eeb2469ccb789ab10ae3c3e96c8f2891bffabeb48fe81bf679985ba1335b11e9de5ecb2df83b1dd97837b28b97de0bb3dafd7ff9e3e6e625801e1af7821f8e56cff7916b31c77ea09b83e1dca5d61e3acf07bdbf5fe695524dff9696c74dccded16e26eaccdffe1d873e37e7859cf611f7fa04476857d5c81ba824398cfbe42056561d2ea2027bdb7b6180fd3a35b53eb105e1fbe0696e4fcb8fb43f79ebfce15bdc9556731ba368fe0aff3c5c1df297775332ebf89c4b0580cdcadf05e91a1d9be08dc262678c7f63cd2d526c6cce54a28037d9805f37de47e3bcef49a198f57dadc172e2e840309cbf4933e23f1e9acfaf2edb79b6f8d4747ddc9028d5d0f732b456e25f94e5fd6716b825e93097523ec3e6fb2149fcbe2ca43efb47b6d6c9eb9c2734e8932e4561a3cdbe6db77657d4a7e1f20afaf8db3ce4f58efa2f5a030a71fdbec94fc27f950aecb38b235e25b9bccb23e0ef1705efe404dcb1d7ce0780dd6691f876bb8ee48781eb56f22d35be6dfd95d43fceabe2d7fa1a46f7ff92d36176e63cdf84c69bec637ed9cc91ffa102ed83e0e068f8bb55efdda28c84710f1b5981f6c3674bddac512edf2b9f3350d242f5e97b3e0e2903e74aa2f273f0cd899e0af7b6e47b6ef631c8152f77d2d77db7ee078135b7ee9bc93c5efbac7db9a0ee1ddea9d8eeb63685c292f1ac3a6e8e0ab12d94a6b3bbac76f3d9cb40be1c10b19af28ccc17d6f0eba7a730ff29be716f136d7d440f73b7dfd2bf5e139ced05ca6fc6f1579d7619c0d5c43e409f48ba69ef2eef389cf209c8bd8f03e897fbf0cd54bf9b67c1bea4ba4a812cf81388853a7ab8f67bcfcdcbbdaf303e3d2bea3bffe45de3de7c9b9de9a687266585ec6d0b946aee035a11c86b8d122f37052fd448e3a3ec18c8b6ffa144b8ccfed56416ecedfa3414c38fb576558e96ba86b2ab6737c2f15311828ae12c32bf0264b0b799b7ba08c53e42d692dfa7b79724fd8ceb78fae7c0f74a77b7cc6e774ec198ec0dcb9e0bd89d513748f339f5eeffadcc983d132a3b585e2bb866a58f1f7e52d9fdb07e840ebd740d7d483bb7b0d5c4dfdd0fdd720d7d483be7bfdd0b5eb87bc2902efbd64398b07bd9291927d6d2fa77ca5111d9fe6e788ef4f0a84ac6a4afd56dd731b6455cc37dd3df71bc5d544a8b5d7baef46d9a79592bd719ee5a6733bade6456e5a92581faa917ac4f574fc822ed59ba16b5f0d2eca541ea3ecf68232a9fc7051f091a3138b537ce4fe6dd5e74d5fb2d8c447eeff361e37763fe05e9fbc654df17ef877c44dfd4322bf7e5a95617ab7f6da74967f5ad54a38166bd5a7554d5022bfa344886d4e9b7820b1f19216a371dcf0cf821fd95bf7b138b559be65fceb6e078b94c5f0f3ddd71026aeed3ab740c95e90bb77825c8e42e0652738b03bb69f4da58efdf8d7676d7c0ff8d0a7804baa315fceaed1793e46528928e62d8adf0bc06b719d00fa3cbbe524be0ef9c780a3e47bfb8cc530562d062fc549194781266781ab161fb9933aeef8f6e4fdaa1ffffd7edb9d3d8e8a93120e06ca7de04592e91ef8fa974cac6bb893fa58e0d9e8f41fd30f3b75632c2ecdea0fe1770f876d9f1b93ecd59a442bc3be2d0ced2ae2bc694edec1af3456f9460e2fcb2cb8ec22c05f8e07797394ed242db6527ab5e20acbd3a5a1953d6e8e7dee339db5e5f8efcd31adc5176efa9ac559581ea880c31df138dc6802f1acee5871f36dfd4af06db0edd4e9dbc959e0564516cca594c43fb42bfd1d3de10eba6f27d5dd8fa3d820f6b113e4b72f6aaf965043c28d9931bfa9587787b9dba9bfd983cd8bc75f1a98b369beccb5bfae19e42d2ffd39bb7ffbc4eb5b5ae6e6e1cac91f3c5e57c0c5b4ac68b5d2caf61ccf3f60bf7765dd82ca1aa80f6b38c307f17e7705e1df0fcf7bf00f2eae27eb5c6d92b430ec5b02fea10362f36f82e2b444937183a54d31adbe7cb7da60bdfbe81519d2e42ccc4f0332468e56daf96ad569694d22c3b02af67dc53685e3e43bf575d1f8beb52cff479cb25ad1bf4ed95c91bb9703dd99fa6e55faf92c39d6d50a251d4e5b856262695837a862dfddfc5e6955ff79b9539d5ce7719abd4758f75a6972ef9a2057472b6ddc3b8e6dbf5d83e9d5b6dbd6f1de782f6dc557c3782c138cd765891c7519b87286f40cafc15d98677fc23c933eac6ad76bff779cbcb359af2d76aed6813b2b0ff365118c96c5699e9687bcf7fe75303af1efb57bef95b23410db76a0fba4d3bb76b4b90623a744b3ac406e95ae6628373d86e3afa9e6a1ca4da9cabb38739f56e535b908b3a8c945705d1feacfdcdc576dd7bf1ad63d458954ededdd7fb9b9ffc376fd2ece5fa34b92ebe523ba48dd9c9d08d5e782ab8fdfa2f85c34b6b8a6e66decefd778dbe04ebc8bc7a7ecf84c38be69ec80a578bca999df88c7058c8041bcf11aeb841d3ede18114cf5014c07dce61687c256fcf638874f71d0dbe39b0777dce58e733818879c3bce3dffa0f8bcde3f209bd78f35e51d13714b438e0f7079e9d4a42e991e2562a1ee2f3cd6efc07d06271355111f2d24b5ab34cfd3744eb9594778de05be2395aeeeab56ee5f6dc52f511e16865d7828a6f976e23b0ee8d2e164c6f3a9e5ccc57ba28fe2163fd1d5fd57fc7c1ad35e11ac6c39c7f775b1e1511e323cdcc8757d1ed7dfc3cf246be257f3ecf5f4268597b6eed681f10eaf5b3b2d3b6b0374b4ad02f81a4d8e816f95bf8d96e707b06fb7cafe0fe4f5d4e7683d495f4fa03f1d04ce60c03b944f39cb4f6ef8b26ac0a184bda6b9de39e5580774141fb7ef2b249cb557df2ab13d5736fdae84c54a5fbff235a8e47b676a8f8fbae66aa3eb3775cd63bb4cb5fbe6b11e6da6dacf75a2dd8cc919db8ea3f52394d6f6b95e5b7264288b3f6bfb57b152366feb49fa7b6da5ffed8bb883057d071d5b0df67e1e4b3518bd3f0cef169beecf2bd625fc38a57a238f57aadec387c009c1f06f19de2fe44cb9cae6047a7206dc9211fe6d70b87aaceef99887ea87d2e885cc8f591e9590e56d952c477ca5cb97a13aee80ccb11b7ac8f8dadfecfa1e67a7120a35ddc73ce4f59685a117170370ef48bea4a7343a1ffe9fb6714f315de558c4237abf305b4de45f9154df2e05fb89cffd257690c6f870661ff3f782d56600df8b5dc586fbdd79395eb5eb946285131d66ef45f723e363cec01fff46e2fceb6f9f27f07dffab6767df9d57fda4cb8105d84dcca7dfc1779a35fd89e7826f37e34bf36e18ee939087f8daae698d97351c7f1dd3cf21dfe10bf5dbf95fa60bdc58357a48585e941ccf5d63afb15af7ce5efc10d7987c61b6d482606fc5cbd827f654dcd4c47375a7dddcd87bb59e868fcd63576da70b9aa791e17ec0ef500519f0b8c5d8a66736e136d7ca4059621d4b41ee7e72f4f68f6dbe2881cb8ee5c57478e383a65ea4c10bf98dea21fb647d071b4da92ea6bbc0e3f3d5adcd32bd5bd69f5b57e06916c6615ac410cb1cbdffc1e3185ed68c0b84d5599430ee946fcf74972a8fedda5b9794c3f6a48780a720f21a86144b7e2c135c39677f721d193039f2d9033062f19accb5afa0b57f481da755c558df39784e766ae35a8f23f0c640de2d9e874590878d0c432eca91bb91580caf87f53f47cd1c27b619c3a89bc9c873b2adb268b083e87bdb7c9cf8efdfc0ff267cbdecda225ae5dc6fabfd0e6c6fd1fff9f647abdcc951ee24a7f946edd4fc8fda39afa91f8af333d43356df46f3b3b4321c398f5077be42c59906ca383fbae18b1f5792ef862f6b6ceb7a591928b3b4addf9d9581be8c7ca5647dfd45e635c5e01df175a663e24311dbf5936f577fcc3b3c44cc477281fca90c4d1b1d225a5d9ab16df52d77fdc38fd99c5cbc18fa82f0444ee584b6a7f49b39bb001c1382a5987da1871cf7e7427619e0ba11ea36047ea40b9e3beb9270680ecd1db89f9fb342db61cf81f941ae27f9ccd0fe78d57e4b6cd8d76bfb9d940b7352254d9fc73d19f8d2ea3255cae1f2f6db38da5f005f6fc4b0ba0e429b567aa8a2763e72fdd7ad2dc93a352d3e57a3e6d36fb9e5accd4c966c95907de7f5d3f555f4b865cdf84fc620cf8eeeb8d1398e53bc8f08352e4d1b8eb09f9cd5e3a433cfacaa7b4da7dfc3c220f9adedf7e0bd612ab3f6d2f950e2be20e34962f3782cef2b5d627ad2bdf1254ff99aba660f6c30923f12f98a75e20f25543fe2f1809c26780d668bc596f850c3d9db2b5f06efb7aac7c9dbe0fe7ba003e363285e56978d1c623979d9640d87c97c1f9173fb08d59c1cb85cbf427d360e743542932a697c21f8da9cf379e8d0474ce6b673dc3bff30e6bfd48fa90cb9aab89f8e75faf231957f367357d15ed1635c62791a4ce58b41f9e13e5a5eb19ff81c7fcfa07c4b78fd7c3d28eb3ee271bf4f6a22ff3e48ad64d97cef14f7c77bf4e1567f7c7727c8c28f789c707e2141261af6ed1dd5d16535bf7e0db401cba0173a9e9ae96ae5692abf6cb16e856d795b4eb858be44eb35998d5c6dd39d7a9a8cdbf1a13599dfd429698677fb6d1e76ac8626f1adeaf70aea1359bddb4c3d3e64adfdadb1f73db6e9ee8bed3f8e3ebbe0e7f0bf97b124ada7e9e873ea4b2c26ba9e169ae9edda7933bd5dfe524ba599d240fbd25d2b4f405e9ede3ee7d4ef03bfc3a2c10eb46fbf99bd74ac2b6c3f70bc52b45d4921812e3997d5464679d72f6e5cf365567d813eca7de3e7547aac63ac631d9ae361ddd64ba1879ab5fbf25a7547c5699b87ac76efc5b032f523915f981c11bec92bde3ee75715e4824b6a6f07652dffbebac9ff267afcfcaaa2666f08d9de70616be538a93241cfb0e5dc74c37258a633de8113b61f3263aa159f6ea387fe34a1ceb168d66138bdb167539c0df9b655c4fdc3f4ceafbb3cbc069314eb7c03724ec676445fd7b3e5dfbdfd59db747c358b764c1eb7981f07ea17e9ea17b4e654ba6f95c59b6f713e8bb8f559a029b69597a715c1f6e7e45e67cfb3b257f13c93f93b15d9b7cc74d7ccbe68f7e61ea7c7b01f7d6b6b2502fdbe591b808343e38a1a7ac89e6f8d2d123368f4ef89c8cb54cdd043ba121e8259b4a278d30189037c85b993870f21d6a877f406c86def8fcd2d31ddf5154d20369498ed1c493ee715ef83484c65f142390a1a2cb981b14eb68f5f9487be2fdb29c749674f17f661d5afb306dbc6027f46f6b05d55269c1c4f715c483c26ebc75ef67916236f5198ca1e30ce487eeb355a7bd8a61857d00667939d664cd7efd706311ed68198877e74974d6d3b9aca73549f01bb72af87dcbe717845537981ea285de95a89acf415d9f288fc3e1478adb572568eb723ce2fdee1ef04dc274b98ab8961dfa87e7e28b612d17d1160b7385f21e8ab8e85bcf7d2779b7e1eca5763bafd40dc1415803bc9628387d3c598a425b2650dd5dc5e6cdf52f3105d0c7d57fa56951978ed7827f80ddf4cf82ad5b58d75c3664fc67b269b6bcc37d2aef51a304c79f9aefa75fafaa1838f18bf6349be7d577c5a55165c88bcdae76aed2b4e8379defdde7f3aa6fe838de9ae37a69e3e4ec8f762dba122f5ddf0bd0403004de8f78adf170bdf073ea49df87d71f37d69fb7de05715398a159ebfabca56ba5fa2bab1bddad8a4cde77a7ec3950c7b892a9378b87c07ccdecb9ef5e18fbf9cc77224873d3f5f08b937cb18c502478a05bc3c72983b4ceeb5f26cfa16f9b97f2572ab7a5bb84b3cfe25027efb5e9c73cdfb7a599c738165ae0df917645d2672bccac598f5567ece938d629e07dbff8112f981ea28c7f61bb2e5b5a12f0a535ae6db948bd54eaa94e3aa6ff20156baaf1afaaed555dc1db637b9f5bd2b4c6903f15564a52f3bd72fb6ca8271cee07ec8c18f9ab7b90b4c56f25cdd24567fe83cbb398eedeb07c5d0a27b5beb0f0913d9408f5b67cec831bee6f9fa90a3ad021c2051375760a5ff350efe4d1e8afc4fee7f967ba2a298e7e5eff1fe6f3afb62c4f5d16b777feff3ac0336f41772c792a36465305b66bee214a7dc21befcdacffd98e23e93b5e11dddaa3ce44e82dc4c410e8d0b50f9f0b7f73987b1bd3ba019f8ced9fa989d8a40af2ce46eb2a38732c01f98af0137fd5f5c7fa57976311b73e65bb5f2f0abdd179759a85791cff4422b027f46c86ce661bfedf6b9cf429049199109ef0fac5f21969b00ba436faee3f33572d1c33c3897edc8a1b13de6ebe8ae3b18cb679c05392f7f5142f1b3e9fc0995f08a658da1fbaa0d3988ea0425059f6f53f2f95ae681ae5d88631644afadb12cde917d9de935d6f8d6e447305d43f1558a0fa8216f89e711fd5e470f73f546c7ea2ff3c42718b7b4cf11d657ac2a637d3da8f7597f9f7b4871a4bdeed478ceb0f6ee2fcb3f019dc350abf3cd5e8268fd7a90cfeea112fd39691487dba17e2b928bf38d3e7df86e3e6f821196b980fdf0ed337a6b5693ff9cdcb184db1f00cf7a3346e5f77df2fc5904c7f4591bcfc5ea7bdb3e5b65cef620cdf4bda3f66407d17d77f932ff27fd81f514c8bb6ac67f192303d5e3462f3ae4ce3d803a48864379289bb547fd6b865551bfe3ba441660a5ff2fce27b1eff67a9636df1547ad3f7cb68fd0e8ae6e185faca65eccc3ac0ef3d97895670f9ad7dbcdd9d809f15e5b06cc2394746dc6bfcd158d609bb63a4124ea46b44eaf1e7f92fafe45f1a1ac55ee373d4fae5b035f3d708e5e06f3951fbfc606cb81d577f8395c6e96a37e9b9b350d49ce14e576309d7bec4d16bffdae1f5ed06316602712acda6f74c018cb591ff6137cfd2a531fa7f9b208f293855c1ff05eb9ba9598f6756cba1d5ccba6a67ac7ec5398137b37249ccacd71f9f5d34a397fbaf603d1dad185be0c9023bdf819f0b4469f78bfeab4078939e20cdf99f07cc8bd311eeacf7a3bdd150457f71cf1e33b78adfd8bf63d177feff14e73f156e23710f0ec175c5ddef0dcd0b02c0ad85c5c68149f672613d9f10493e8a4ab36e99bb0c1da316c355ce4ecfaf7d1d1db5f0967d2fafc21df6343ea63ffacf2e2cfd1fd79f5268b92e49ddfc2c505bfbb006c426fb2c0fdd5ddf72d9a7724e42219745d921a572e17311e97beb791f6d4efb36dfdc4a989ed62f04ded672847993fc2eba38a5779158523fe58fae2c72c9e4c65c854ee5ff7b825dde751bf5222c89e87f4b3934b92181c67e2c2d57a354cddfc04342d0b9f6241609b114dc68fa3bb2c8feef8d2cd0d16f39776cc2e25be2d5bfe425e78b6ddd99deb9b785b67dcfa869a60b0cb90b7bbd2dfa51fa72fdc31c24f35017c9518e48092c50189fdf07398ffee8c8ba5da2cf6b755b4afa33b4e917756d753b0170a3faff07c63fdf9ec79b9c1f9a256786deace4fd3dd0df42be401c7dfe29f719c3f2467983c6fa5efdefcc71bfee68c8cf3fe80ed6f4fff5983cf2adfbd76cfad139e3f53ccdd3248bc93f95f54c2e7c3b50b302c17a26fdd5ef0f960625e8b7eeef170b6726ff9f63915f01ddb7625f201d5784ee1bd17f2e3097f09cb154c2087e1d54fe48cf473fa0a729cdcaffaa28ce4bff1b7c01524c6b862b0db73866349ec665ad3476557f39da9e91eaef01caad31b569592bd41e6f667c81d6edb6555e956d9a98e1b5ed93357fa1aea9419cf6a385f970c337a95437d26f3ade07d4a3de88d0f047cac6c1e99aec6d9817b21df2f9808f68990b7e15faab70ddd2ff1de0dfc54429e37d1fd7d37fb42de7219e4e80fe5efe91d1fb897d4e290fea45cd19a6a3ad5975f0f9d13e680fbefe600cdd59f639ba57a7365a9c0f6fc70ff2cc5feb1dafe59e97e378f25fe9cdf471c2e29b77617aaa3e0b1e4c7aacaff87e6eabd530321ecf3a2beb92458a6224e3da7e3f4d656b8c8eeb1a12c4ac0aa061fc6ba005bb7edafd24f589d03db8f7b7613efab15f904e39fe972ce74fe8663ede873f9b2fe4376501dc53467ae6ce539e1f660f12a6e0e605b2f11d719cdf988533c07f8b596b018da52d75e8431cbc32bd4ccd031c3eb541813ab8a3fdd2c3734156422d84ef918efed3cde5a6c3aa70b8c69db8774edf69fb7951b1da9875fc4cfc58fc9a02fa1dd031335062c81c6af4562a921c5ace88dfd08ecce364f4cb4c5926e4df682f03e51ee362abf6754df263e94bfcc09d17f2fcc89fa1fcc09e0164b41ef369535c54f005cdcd8542426fb98ac64b98835727f824fd8b00b41c6d39ca0b66ef6e9bbeedc5ec5b0c741bf36b11c32bcea2dc81743f5e711b99f60c089b2048e15cdd8d77f19fb98bff7d060e53f1b5b34ff766c531e4f1f642ef82876d866639882e511f02941ff0e17f18dc6672866f2337ff184b7b3767cfd40ba8a77299b0b6d4d7f11711862e03f25d8008d8c4dc99c56936d4eb03aa1bf295601c3c8336d39f213f546d61c3e4ef65e96371ae6ced70a6430c196d9e62559e7341e3338076c5a973b69f7447aff0fff519076596d7f05b4bf60ae79cdfc48d9fc40137e7e407ca9d7e781d53e439c238b417c33b15640bb22abbaacf47379ac69bef09ce253d31c9ed394e53c4b2aaaabb189f5be49f5ce7291dab193f2e5257d3bb638a7af1f2407fed6e8ac97f487a1696a6055377a7fb14df16f5ecf87f757a677c66dbbadf428f870a4f258a79dbc01ada0f93180190cb933b6fcdee43d8c806b2d0c7289d741abae0eea032f3ddedf4315c551b5d2c3f283b7a9bddd8f602a57dbcb8ed3fde56a3bdaa9a17dbb998719f81b3e40ae9c391ef8668e26867e28032b1562f190e76a3539da63533f73f8c2e96fa3ce6ea6f70bf7c1d51d65a7955e165c7ef58d72d8e4862e95785c0cabcd8f384dd5d274a59713673f99ae84c7f2c6d785077319eca5c09653dac6d70fbbba36fca0d3dbd8a8cb6267cb2ff01eab1a73e3d162b11f802b2ce27dc33b3167305fe6d217f34d706bf59daed5f13625183b86555d4cd7bfeef0bc9ca7ec9b416698ca5dddd985c4db4e3bab92cc8386ed2bf28e5cadf7ee0ccb8fe7bc2530e65af169f1f10e716deca1a63e2c8f93aa647be7f1217ff971746df7ade7359bc7c17c654d5e433ec3593dd6240e6de867e079e7e7f671f2e45ee0e76f6b39035bfecdad53dc5f2a7a48f795a6b15cbc0ae664ceea409bf9232d633f0aad711a28e38ccc37f15ac3bb49dd757b9a5412bf6e4f93debad5e8ba9556738df161621d465cbb871dbf76715baea7696fed4a6c3e81ef6bd29d4f0b788f61df60beec2764be6c3999602aa5ba9f16377ebeeca778cdee5ef1fb402f9b6b5f4857bf10cfb95247d96abe2b567ad99139b8ddb8ffcfaf0b8fde67c31a29435bbed29ca0ab6165155dbb15e36f5ae9777efd56cdfa9d6bbdf51bd8ea6fd3d35e78b9687a5a19d872c5afdfe388acdfd394acdfd324fd07edba5e4f78af98a765688d090f9e057eeb66ed86609b0b750b617011eb45f0f800ce91ee48c86a655a48b0d67e7cd84545f6bbb4fc0fbf3322ef407fc2d489b0cef70c0f69a1c35c880c4fe2fd07bf3f5b192cc802d8c3e3eacaadeb6f7450a1562c5fc628177408e627063f840f326cab94c0cd8a7f0fe89645cb01f18fe3e8641e4eb246ff45cf6da2687bb9956d5b405efc36dd1db757970d1f0091bfb8ed775ef7faddc9bb1c0156adee0b3a34d6c9b02e7aacdbf1833c0ef7703dd6553ea453e1f3bc3dbb5534154d79bc5d5693d372af0376753dce186697d3b481b6c7ca5e7d6cbfcdaaafbfb585bdbfb5f9ca12c5d427d2dad111eeaf26b7d293559f5cdbe48c32fe033f66c74b957ff7a72bf695594729b1f106e70467f79d4b446cd762a5ef441b1aefd3f6f57a9c82adcbe621bb1eff7d66eb5e0dabba8adf8dd7405a1e459f5264bae7825b372456ccd9be80bd0c98f5a54adfcbcdab1d9b57693baf4ae008dcc0fad8815f6819a3f46f7e21d09de3fef1817bfbbe9f84ae458243037386e4d2fd2c3e94f595e8fbcd9e5040aea215a52bdde7c664fcf639bb9dfe3e5f09efa74ff3a886e7c70edee1e963eebd27154dc12f950be334f4be791b2f2171827eac469459e85b1f0ecf03841299fa6ffc52c8b3497c624b6139f078bbd2ef6b75e03a2dd154ce0c3a8f506f1eed8a6d1c25249f0eae3df4be95fa395bdf96a6c2b5f81b898e6542ee10bf372b1a193fdd2f8f4cafc0ba00cf0da1ed846b82899f1fa0e60af28168df3950737a74c78093d9cf0b98fd36bc1653ae97879e37b9de4c578b5a4c9a4ad4dbc03fb42fc2d17be97b04a7f0738e8f0117028cd58e8bf1b21811e7d727f96c9e4c62bbb3e8623acb8b31d1ee865521f4902d549fa3b595966e1e0276cc5217eb59ddfca4aef4d955c0dbc98acba755c5c7a9fcdad69f164734ead5f6335c3dc2856b4baa9b87c3f1d507c4039fc53252c2a7b9283ea4f4eae767a8edb5ac283a4eaa08305626fbcb6a46ea5f3bdc068378ea5b9be26f4db56a9b2f54435fa87eccf30d735c520a7edeec86bccddd773799e32c97db548da93d42fd16e930ee967d26fcbbcae22b849cf1b14472718a7885df698dbf802b7bf41ef98ae31cd2d646273985fb0849c0ef56fa896cfa31d8edc5e7e17c5dea21e0cc2cf5107c7a627dfd19eb290bdc2f806fa3cfaee4efb2cbd39b33ecc3e3248a8f93169789615ef9899c1c27e714d503e71e4d9b186fea2be18359635d6689df8bdbbbd2683bebb4832170a2e332bb72f93e4d9da005ef05ec92e838490b9ac3bd11e663f2ae625b88fffea34e301838df440cdc4f6d6c9eee39678affbda079036dedfd504e9458a705df9898ee1acb84eb870bbc78199a709c3023e026239cfcd8becdf76f9f3abe7e26f9789f3b6c5243e4d36e6b97a7dad8e4b9c83a79865c4e08cd85c3b21465be5b9961becf421a0b87ebad2816e2aeb5af6c043f91c00bc6c73b494c6392bdb6ff73321bf2101674ffdbbd929cb0ecebe4927c0a9f7286356b838bddd26f6b6dc1ba1b9f6b630124aec3643e79660fdb3291db6b2ef8ff66afe6f4a1f6995b6521bcffd3fb2e569c5d597c96ddff31e2ea7e93225acd89aeb8cd976a83a5a31757d33945ab8ce4743678341ac8f508cb25e42dcaa372561d45fb3a903cf0299bdbbb7c26f94ac46aa0ca403fabeb49b565f6bbcdb00566bf98ed7e3b4e818b825fe37b63d2e2407072f7b14e34d833443c8233cfa1fd8cdf88c75050d7d35b62ea8bc617b58c5162e23dbbe1255a37bc448c7f88720f7dcf3b2470dda8d701ee90f23895f3ad44e6e2d39cdde92deed66f325fa43f584328ddb74a21c8a4765ece5a3e9ce1dcc91fa17e7e09dd33e446b15c7c580fc3ef524d17ecca1cf8df74f59b3611fcad7572f82facbb0c8ee914c634371e52b5957fa976535bd3afc7a67df3dfbcdc37bde515f00968ad4453d3a42f86f006701f94c749a61ef3338fe3f7384e6f942f116c6093f7f3d94d0d6b75c5df7c98caa679f8c9dac3e6309e7ff1935caebb21f8e166dddc18e93839b39ca8c8f46efd5c5056ab2dd49df3c7689d2fe3e7106be7c57aeed67fb433a59f43753a3bd3d55e0e5379d7d46f72face612eecc932b45d8c019bcdde64cbdb4eae46c4f533707af4df5f08fc7bbe2d9b627deea29ddfceaf1f763c903b9bfd62b5c89d3d22db99ee02cba28870bd3b1d393e9803f658dbbff03c35f1beecdbf2eb409bcd81b5258e57faf61d4e80d9c109a89ae31756a3fda4fef6491f98ce2fd5b78b9de9b0be90236edfd875315b4ead2cfd67f52009d62bb502ef219df93ca27a1ad3c9608eac08df57d5c50420392383d81715f107afbf027df638cd96803f12e2fecd9df4e46e489d415377f45622888d09fd98030febb37af6b85bcf7e60ebf04278fc610e654d3d7bcc6401ab75972f9feeae53677ea0dc9a0d9681cac547c5ba425b66cfa6f8867c9d25f5dd4de58be936dc6abf4df7007297ac05e0197d56575e9a7aeb030c9ed4950fde3f5c57fe7bb0ae5c9f91714f8adfab9cfe1f5799ef9eb2305b6668ee24c85bc07b3ac74ae4ce2e1c7ffbef55ee44486930f1bb182acd7c394edfaee8215f4d572a5122a7865d5c1bdffe54be6d95fb7fd983f5f27eeee93faf83e76cb95c69cb8ba1df0b569fcec5acaf58c73f4e1b5ff37f5c9f7eac07ebd323ba0ef179f63feb1f0bb97bd9579c7a9b975fdd632b5de833ae9f999c11e446b1d266f81bcbe176801fa31d87669d91dcdbeeb3b7b97645938a1bf7f4f508dcb4904fa9f6f1bfca7c999790036008e3a9e6a6bb7b394e9a1ae7d725a9191bd2938acff9fd1ae6a1bab07f41ded2c01e96e2e3bcbc05dedc58c0e9508f90e309f9a01660ea78cb567ebafbc63fe10ebdc3aa12eaf300ddd8ebe18c445721d7d973aec6242dc15ebb30ec1061df4c9ee4fb0276b55f939cd8430e7e9d1ab9fb660ee07d89cb154f8fd8fe07bf4e9509f2afaef28e3dc6644d4f36f9751f9783bc235405b9a5bf9d51224706d4173673b7004c11a63b8d985e16d2b12f53644539e09ff4fa357bfb9c34985078ccfa7b9bebbff2b6172f7f29668f50378ce2c1fe6373256ff6c5ec96aff4fda9bb377eb86701cfeca49faf0670807d572f4978be7ceb5c402dd580bedf6da74f7d42547f537b584793aa1ddb968fa6337f5b997bcacf656fefa472c2f7248639d7cc61d3c376c4b208f21d5db3d576c563186683df51fa8e88d1b873c55c56ac339df4d9659b6ba53f5a6644762c4aa43b8fd37cf9e7c32e9295becfc2f9fa05f5f4d5856af7309838bb3c79bbfa89fc0adfd9e479332e986adbb7a5166537bf1cea56a88e04383c8f5e9e78d9c1237a7aff368ed241fc1eab6af093885cebe4a18b58c351770eeef2b380537a72cf5763a06e4cc486de5c851c5e5613e2edb12c7ab5857ce7d31b962368e099e6617635a6b337780ec3e79808180029cbe9eae12277f29a19fe37b41f6aa279bc8fdd0fd2cf45dad4ef35e74519653735bd21b6d106ebe7508dd7c4460a7375dcc1e849b18d0739583ac1540bebb4f89066579a8b9e434c63d4f868d4ffa8afb04cecf687dbd5b37f9e77caf9bab1356535dd11ae53d1efa9373ee5767e68c7c9595edb7eb999547dbc53edd4f3012db4fdd598ee4af0d5e3eb3bf3cbd2055fca5fea803221270cf6b5183857b97663bb70716575a0db7efeb850f72ee4dfb9da15f282399f86df7f366fc333dc3701d3ff38e16abf1eb2801b2060ae3fd4046af4f24d749a4481ef484d2ee440ff2d8e93717c74c7a9d1e4d356f8db93ceb819c4ae178eaddab1843538a4bb04be25acad98ad2d3f93043f023f7e763b7ecc2f0c7617969fec5b89bc64f9aa0b5e6718583ffdf522d48e617b31ae52f731e3fd6267342bef9e8df5aafe7ee72a5ad9fd866e0d76db3f14c793e84daf7e220ff7498baf31f4ce8e7db71372b0a90c8857fa3e583b129faf9cba8ff713c1be3c131b74789c62ef792c68cbcfbfa6afdd10cbbd04d5e7f1763a4ecd47fa739befba98bb11c4be3ca9d82a9b8b314d47a6befbb1b543bc3f8aeba0c1e4bf5d79fb6cab88bf4539bb607236de8ef6f507795f057318cbab3cfbf2ddaafcf06ebf8f131ec3434e3f3da9273b3ef2739f23e05fe1800c615816e96adeb737b7f9a1f4dd0de5f95b0fd8488c1f4db02da9ae24fa50c898409d75a3eb72feb1dc54980f40ceb671d4f303acf4c60f90917af9d6e647f62d7f82418b9fbd657cfcc40fe1e7086af77e16817bc6764d899ee0281db14e36809f63bad595f76951ded9213f68bee47c2fe852bdad696ecfc0b505e471258d3e34a467963c1ea0e1c17ca2dcd443f731bbf4aca238ba90da9c43cfaec53a3eee03dede34dd337c1bb60d8f93ead2ca9d7183237dac330107faf340306f3c7d0cf165861f142a67f503f02b5a7e8fed657359cd1d6c0f37b877db4c2b4f1e997f1447754fae69744dfa3bbb85ba036372ca9d85ef8ed3403fbc1cac4a0e1567ed7bd99f93d7e87bec38f022b077b4f6367da6b3cc50f33ff36d926bf7ba139fdc13c5486eafe7e23cb45dfb0ce5b04fa60ec95764efa6dc8919594bd94c5dcddfaf26d64bdc1987b9513c500dd74f396cc0d571428ef5fbaee99719bd661978ef19cc630f65963efb427af50c4b29e1fcc3494747484c650d580e78ac8dd92df22c5a7b30ede852937bbdd2a2ae2d03f168c0ca793226033840fde7d2ba14f2ad78bf791bba8fedc1d2dff660aa3fbd0eedc1a673839cafee9ed9cc0d6ae70de23531394c757d6eff647d79855ad0e4960eedd568d2b14d13c819fb1fb34d7dab7a628f17f1a74df097909e3d421dd6b5fa919fbffc3cfb42b4f660a5fd044cd6d647b31bf2d1449e27b1b59577e61ce79ba17d640b7922d127bfb70ffa21d858d0b579c9ae6ccdf917e7c2d69b959f591b1e9003a3e37daabdb6bb3ebf994f63f0ad5b556aba9b603d93f0fe9a601d6c2b39574317f93158ccf3a89c056caaceefe7fae17c39fe00bcfd6f758230c837eaa755117d488875ed69ffec6bdf1d3f8e2447adc7fbc9fc2a1feef9bab035122bc8408f8c4d778975b3769ca5dbd5d0c6c36b7b768b573ad647abc4f36475359ffd5379b6fe07f24cff569ea56c3cabe8c35565ce1731a7f711599fcad7eefa3d29e7768ea6cbab30a73a9c274ddfce4f57638eae069ddf9dfdc0a0efe478ec162f47f7ccaecd11c45019c67ed1c91fe6f56ffa9ec13987fedf9a73c9a72795d49ee0fd26e9e7d0def66cdd3bd5d749395f4ff9f92f73aefa17736ef9ff8b39f7a1ff27732efa3f34e7a2ff7be75cfb6d09ccb39904f940f06dad9f757d9c44dbae9fc1d3c7c3734e53af2ccfe6a09f59ac703f905f63f5ec6b677335a60caf8be6554f7f81cd8bdc2a831c43829ba57a93a5b63f54334773346fb2786575f9a6738ff79ab3de3bfbd97e768ff1bd3ce69be9c2b57cfe790f5b83abdd893abe51c05017fcbb344ed4fa5fd7a56f757db2eb629b6bd866ac453f6bf7ba4dd7077168fbe8697eacbcbd74781ab1dca0dc13ab1c707a0013e1735e25abcbfe8fadab23e42da758a73226297f1de4cb0e5cc3d9e803bc81c9dbb5c3d9a6faf13d5a4fd29785dde03b2b5c2d694cb180280f3bd3df4e24276f54bdad6b9aafd7e6a4366de06a7b62b38e7a7880ab897637ec2b9e6f2c5ff5d1be5babf87a87969b6ea6767d090e8db5603befe09e3959fd7e25f633cf9149709516ce9efa3bd3e24359a856bebb324e80439bcf4df144966f9f935933c686771331a61e72d4c93fbcaded5ff5c6bbd75b7976051c7d09afb71623e1d3595e0d4dbd826d7120e7f03a8476341834a446a48d2d8b18d4a0ef8ab8dbd57aba903fa78bf2003e01adb495b3ea7b62acc5c9b9fc519de779f92972b42487c86479bab59f93b1d668bd825ff1bfb77546701b59fe217c6fcf57e7f139d3e09357ce6daea3add1b199f1b5a22ed55f896c9adcf17c6179228c0f08eedb586d7b089e5c846d75c2dde22e008fcbcfd5f4836126c57ebe389c528631d0eaea0c7384e142cbbbe3f4166febac91852b7dc1c6aa376748ff92b9b3b6d76adb878cebb3ef73f4790c02ca977f9c6729debf91bb7b6971abcf913fc84bb9ae36754a70e409eeaed82eca0b4530ae35961ffcd324d8515f58e63ab46e88e3b880dc5eb286e03bde19ce0cf509161ff2fbd53c1429c8dbdcf9799af135242d96bc1f4bb7263f0bcf1baf4897314aa02e56d9e5cb7c8de7da04cdab373f2e7f7fba03df30c2e3d0f8edc99a98e1f7ab5753226d107043494e81ddd63e514c8746366af7ae2c71758899e1f798ec5d6c0dd3fc6c749c0e626c9b27659c857145e2d09d3d54c4c569728a551ea7cc75013783dac10427c1d51996069105342626ac67373f0bb8bdc427b2c66b91d88d1cae658875b711ad85b7d2573495ff1c27023e4b93cf29c88278560b18427d8e9b1e87c8aa8365b44ca4dbc6d646ab616ea73793f81907b1be4dfb57b19a30995d11df6907e76f6ddf583f139c050e3789f55f77bc7d37ed621e7773139bbc34f490135ede7c8f5118e23e8b8f56743138be5e82d53f6e78185bbcd536a783623f4661cee1ef9238f200271c8f9d077a51b5017c1ca27fa1ba4a8e14330311dc0ba8edf36da89763df533658104d7c8ad5def9841f2777daf9a3687cce395f73dacc6bdf93617f62b9f3b8bf905d01371fb2e58b2003292e93ff10bebd14e26f0f35d9e6cb7ca5afaf04abc8cf61df221882043790af776ae74afe64ae44a6b3b9187a08f84fec5914aff095db13553f117c3aa44e602af7e2edbe3230979ef0370326f5c09e83e5c3324611a94b94389c459fe62f6925ee47c37e7b926f3d8c95bfe2fbc34a5f902eb435efc421333a6778bd898ebdb8368418df88618a308e37326f48fc341b1883c5cf0ee76621e6c0674dbcc59e44c90076ee2b4ae429821a1dbfe0e59afff8bf52ae25ff54aea13cedee0958e75a1bfaba68e4592245ebe96d4ef2d0998e093cb8af21d98b32a39b771b0bf64321f665d4e1606238290b21a6c5ec4ebf9b1f612f8a95565d1a6c3fabda027e15fb066cdb5bda9dc4ac0ee76e1e769b87bbe8e0879f55d1174b6b599490d51dabc76953f77ee1f09bcb604a65d23fc47a0f04ec9efb8f600a58efa5615fafc15486fe1fc07a2f09eef3a20c260d0eeb0de4fd5f709357f35feaf7fb900cb594dfe0055f009f67b6f9f2bdf7c75157a55deee4c1689939b49e623b7aef3f43e443bc7c8739dcc52b070c9aec2fcfebe31f7730c7376f9f93e80ab1d079f576045be48e65e786cc192cd7abd2b06f12d5c708bfd674b8f60dd50d5ef84f82bbbdc0f75f085e53a90ef9f2b7ca19f21c3ee7d54fe0101b556f165747f839af24f478fb8b9e2031bc6d98e701c1e1fb3d987369a5a5a19fd5937e7afbd46e6c9d5cb1acfc9854bf57fabdc0fb4238ff1b1676f83f80851d7e83857dff9b6ef41df6f5d0d8ff53eceb6fe7618b7dfd4fbeff5c18d6202679185c9ecc536d5fa0e63bfc6b5fbeed0a2c07fe4ddf74b0ad7b7bc38660e1f5649be9eecae1f85359acf456eec11c6fb0b8cb12d51c16bd7bc77acef57f479b11b6e5ad8cd565f66576c3bf9996c7ee9aa5fa22aa29b603e44737f8237d8c51e5fc7284fd8c61829e8b955eaafcb7aef47b83b9897f135bb8fa0603e5cee70595a67207acff6092be18fafd99be82f713aaafdcf1fcfa67327e12ddffc295767b829fdf99abdfcb79e3af18fadfae9b3e87c4ff29196f5544c63f959be21cff20f89429dc6fa5e5933da13cc21ebe7ffbd4a1fee0e7e7bc5ab563b97ffb9cef2f66fd7dde6360f9b9a12126ab6f80e33cefea23143bdfba5f035b9610de479490e0dfeae712ea25e667d00dcc3aba0f8cb580b385eab163679bf77dea7cf63946a82efb57fcfa01193d6bb916fec22f3834b68cd707e4eff37645e96a567d7d9071fd9e13e21f7ee73fbb2e4a591fff758fe9ca7cee5d5dfce6cfa924fd83eff89edb62f8b9f5c6f607f793efc611cb66b6de3fe7d595faff7afbc73246bffbe768bef8fc3eb8b7f5faadb7debf973fffb3ed59c89bf85fee8ddef9f9dee89d87f6c69b611761f017dc3b725fa38b684797715c396f9ffab95f67ddf884ca2735d80e968b83fbeadfe602de6b0eca380ae79b6b30da4f908bfe84b9f3bfa53debe4a0509b4dc06843a29f24873aecaefd3ae44b511cea1f489b3cfe6ff01f68ec06eb20b30be727cb96315a903d785d42ee88e82b4abbbac856ce845a79963f7c9cca9701fe0b91e7a37ecec743eb859bfa85d585d6dcc490ffd55def151fefc47ab289f7406aff9b4ec4b092298e05f323fb803bcdfc72d49f4ccf9d09cf50b6a07d7d26bec141bd71d7f05a617964e93ed99f208637e01f136bbeaf474ba8efed72377179b0a726b7c1949c9c8c4b9b6bdbe4474caac17b18ae07fb6dd805c7d5b6cb9769f3cc56f79bc0fc64383c94fb695604b9535bee380f380ec9a39baa1fca406c6652e13ea83f1c5223bb9ef7f082fefb680de476377ed6839053dce8b889bc11b8a2889e73ddd6d1d5b47f45a62d75f909f24db22bb02e67009e06ac8f7c992c202f7700e7217a82f35018f6ed6ad6d1c5b4b4fba0cf2b39b09a8788f7053e97d3428d42b6ca519333fb39bf47c4c77df83ab9608bc781ee7cfa9083be3f1cf5ecb1cf19a7e10dcb9b1caf09c047d2a412c57ed5f35581ffb0add940d6386ff999fd1ce2c6319113a8ce5ed1436cd3563900fe7ce31b9ffe62f8e3843facf50f17283e836f1fb8e601cbcbaf9bf8211fdb1b5a5b6d3c88fd7d69f168aaac59e302c68ff66ab8bc1ffe4031959af8dbabff903de09cd67758f7245c4cf62de1f0c5c2205f00575a8b89bb7eb2fe3390494c8e083c392339057ef816bbefc9333af531bc5c12625f3bc0f2eef86a87ea3e693c95f4cf56815c8d1673077cd561f1a11cc4b17fdc12e2fbd7b0bcecae39c863e1e31b4dbc13f619c0b4cfd7718a6ddb0b977b3c6443fce0708568dca088db585e48d71e8df3b3f9523731860b27f32fdb3abb706397d07a59ee7b77ea4109af04a75dc0cc23f9352d5673ba551aacc5d93016cb608d747104ff349b8f6b216fd37fc83eb1cb9ab80f70db35bc1171953cab6bedf1bdb47116c81515c7998d6bd81dd78ce049d27a8ec9fddee07f2b07614c9b764de548dc57212ed3ac6d16331818ff82e54ff09c58fd3e53dbf166edcf17fdfee9b4635b6711377ed98ae4697063bd06d944627a0d2f82983395dc321ee797f0167575b45b235ff603f837ebe9f0781dddf4951ba38c8b49249f83fd207762efef03ba4b2beb08d6fcbaa7171ea95e487370faf1147df13cd6e22e986f3de9d7d9083504c937cf1e3e07cf066cd0669ef56a2cf5aa18c07862b1e5c1bc9076bf0e7f0ceda9a6772b4209f6c491ef2dd3f051c4ab39abddc66b9de6d5f3c7647cef52226bfd7a2739f7bb1734a924dfcdca6dbe2e41ffd1f8effcf9b2a6e76d1730fe329aabcfd542482f861e7e1dbdcd04ef9f276556a3f95af5e3ead2e8b679cb270fb616cd5100f93bda47e165cfe262d8de82bc3b6cafa11a304f4bd35d37ff0bf33591eef879a4ddb04655f0fb746aa651dce317bd3dd1cbfaba18607f2eb353ee4481a6d6b8dd2bdd57092f73566e65a647ef441cdb1af22c783d8ec7ae4bb16e66b83b154dfcea73ba18888bf9520f7ba8c9d1a23aa035a003bada4b93e3d5acd51b976754925c87a9f6a03a1bf0ef7cbfe7fa395d835896f7f1fce83306af11f44d96db766b735b3a18af8d2d33bd81ae7e74c7322238af11c56c6b3067b714839c8b0772fb5dd9cbe968b1f4aa375ede435db1cbf29634ca7dddd47447c3b87b5cde9b22cae94f77979bf64cb5ac6843306f715f61fd17f476d0fdc9f80fcacc30a035c5d44fde625d5b0dbe35b63fff84975314e6fb873759bc102c02b65702d675d6e7a65863fd51f56b0143be14e3f74d7f5d490e1e70a7abc0e703b93082ae997175908959e377b6fb1cb757503d14b8aff967947ecdeba16cdfc632735142de8345eae3bb580a0d46fe83f1a1dc63d00746429f509cb803bf1688bed5691bb717645b92b3977dc71fe75b3cde39c17021bc744c4f3a50fcd49bea132ed5a6df7aba37f4e341f53db93c627d63826daf86b38ce09f0879cd2d366b331f2efb3f4871a4a30e38c72f819e5e21cfd762fa35e547a0b6d177cfe4f05e9feb6d1c163367ff8bd836ad8f2531bc9bd077e0dbd41d90b7c81d2747d779905a2ef118c365257c7e03584a8f5facee7c029c311463ef1bfde6cde7723fda1c4b716c5b1d9ec8443aa787b17eed7561f47853399c519b5f9b6bd0d701e7a39b5b5d0bfa5542d77122eaf49c3ce5e694e18a3208ea54f8b5f58ded03dc4f9c9edc5f9395dab7dff60483591f172b5d2d56f3f762359f01874790a7ea406d9a80af39b83731993d3d909cb80bd657abb74d22b53cb8782cbc77f8861d1993abc87b7b28f85c11c2c3b76678eb1cb603373ef5000eec83e4533ec5812518bbcf7160ebef7060d73c0e6c22e2c02e8a765f81316c6b97b9670a3661f33fcd016d7367d5ada21602afee247bfdb46f6170792f3a7cbb833958437e79628b01cf646af035dca27f6f0863396afc010d86f5bac1b0f626cb22b8bccba7d93ddee6befa912fb0ad43fcb35e1137797bb61c7803f23f18bd337fec0b4ae4b90f75e33e60ceef1578560a6d706e2796a7bc6ddffd406e45b9de8bdc747f5e3f465289e2ea95f2b7bc30d9f9497268bf8cf94d853c8c11e136d9b2bccdb954609dc095a521399d7dccf7116e3b6de7926fa7e53e6b675b17f1bdbfdfff0a94f134d033f0777d1fc3df09d7623d3e50c609fc7ec80f34c9d440d9319e7fe20b9d54bff1bca47213d6f471f25e003fab9be5c66496aef2280a25751464305fb2f0b21f1bfab900ce90e7e7e8da947357894ef02cc2d3360e7487c4e39ceaeb3821fe92630defbc982e0a8e33a9447576197e76093e507f54bd19fa5afd1849c54adf0447595219ce39e859ce3d46faec0b294e1d8c9c4730cf6ce4ed97413ecec2343ad8878ad6149c494d41cb8f201c0f47ce3d9c2fb370b421fe69772ceddd7d417d9b9eef2dbf28ef1cc50b44e1e2b291c3f97b8dbccdc3a23e66f0cb28b33ae038a88f243f273a79fb3ffb5c4d4edea67d771c29be35befadec63c2963d84f90b7943eace86ad86a04f132bc6eacf4056c038ff079ae2eef72a89cafc709e36d4f698dc8f97c747f9e5b2ca6bb8a66b7ab073c43740f72fd1f28c3c70ae6e3257ed5c99376609d09e471d8604b2c6cb96c312ee48b61650da7c3875b65346e7a85f900fe1fc2e3b2d0b3af851e160b37fc3aeab3873d3a7dc17ea63bf5699e5e8fc00d77cf97f9fdf9f9499440bf10fef0d2976fbf3d9bf240503c683acf4ac37df69c345fe6273c9f2027c4556ea7de7c9b555ff4d970becdbb845c077e6c607f3e79582e9e015b1eefe3c194d853de6499faeef882bce59f93b7293f9c4d76d2b22f8859ccf61b9be6ab1ca76fd7600af9295f9eac5e4fba5c36b269525d4c37fc81eaf1a7a74452e0de5f5a9d908d2bee37f05396f02db61c7dce2bdcbeaf70ee3c8e93e84af2ce8a70c1f96ed858994a0818ca90b3f09447fd4eb8f25b6e0e218616cc71ff0dce53cad3712fb6ff07d69b3147d1339965d6ed1c5ec6a846c095762e56faeced53677dd08c6db1c536ac3b237c2adc380793b4f824d8fbfdf3bc0c24bed4cc743586bdddcd5bceb04dd9cd45f8f4202e551d6db95b4bcb385113c289fd2497c1935e797f5c9837feb89687d41ab77e22c14e8d0aa4ef33bcf76cf385caaee3f9db5a3bed2947b9c879061c05a41e4bc0dbe76d5145237e2166dfe5822f9cbeafa70324815295bef7fe402ee80109ad2d2bd85ec77c4574ff137457ceceee7084f957accf935a5ebe1dadbe88a66acce460eb53c9cafe77d0df939eddfc827ac7aa5edd64d8c6d8394ca8458bfd29531dafad698d3b35ad75c3f962fb2f8c0766d3f08ffc6a8ead9b63213bf6b3bd77c18e8ddb635ccda72e70cc565c7dea1acf51cacd912fd37d6e4c2807e394d594aeb9e7103c556b12ad0cab5a18da95614cf33643c9e398b6f166bc1ed634360cf84dc950fc19ec27d67f52137756196ff1807f45f0877dceef9103fcced9d31c8f008f5bdcfdcec30b52483cd37fc84ff94e90dde44af67d89ac3d9dfc07c37b677eeb8cc4e6606faa91cbf8e597198a07e545b54ece05efbb5cb8bb1effb7c85d35c8f3a86ce214ecc92e77ab6f0ff2b760bdc1c37d605819e1ff17ed11f04dd11a6c5a0b319863fa8a66b70d9a49aa9fdc52571aa79e2de7dc7ac85a0ede7b7c7451edbb7206fea646e6b5f9a36c6e7b936516b84be058daa650475606ca2cf5260b62d3f4ec045420ddf9233e7726233d8363ccc7bb9ede22539f251c576964d465b18fa3c8976f916781eedeb395424595c37c03edde432e13c1127eda9e3cbbe17d91fb9e22706717ac3773c7b0ecf9fdec99e458f587d4e70eb70b7f57e0347d84f7e80cf723f8512538f638b9cbdbd1fbe619ba03b233949be7488172bad03d74f09ea38bf75b90f9ef7e0c1c68ec7d45704151a067cd588550370e79c25f3b258a82fc84fbb1f88b4d99ae327514e6b33bd61d992fcdd3c7af2765f6b03da73ce9d93dd00f2f0b6b96af72590ee6fb22d4abecd3bee90669a3e2bb5581587f8c96a9a1af4b6fb2fc13a49b2be8860ee8aebdef03f9057c4d33dc16837de34a1bfcc6f2d9377eba2a706cd27a42ba8fb67b39aa395b50f707756654a76cefb962fb0dc9d22bde7b9b9831b553d143fd86dbedfc034d88fca5f2faeb34696c216c3b7775d3f2389340677cc60787f5bdc167123c84dfa00fead8aeefda7f4c278d4e865d3cb3c3a02694c95efc2cdac717c3939ff8f833ac6f4b783d7de8c083fdba77f1df2aa739587f1be79f789c0dfbb6a67f07e48053d29a265e7edd99bf609bffddff607ee77fd07f627bf04f906fcaa3bbf96d7a9bd4f0e4043832fafa6b22c66487eb2918d7207a4863ea6b6b6bd981ef7cfd158c4e5fc85b6a0dff199693b6a486901b1845e6611c1b24df891dff81d7ab3f5a16e17c4ffc0deee1071e6fbccfe07e3be9ce8cf128422eb49e29784dac740ddb18f87d0b4793d778be98f34d12e6d9fd341d87defcfcf06b953e7bf75f782eb21853e0aa0a3ad0b898dee0904c893f32a536ce13aefac9b8081f6a64bae117c3cbde332c166c8bcc6f45087cebd9e393dafd83dfa21f208f979b0b90ab45b97981ef3068e513b61d6f27b7928ede7b896c295a431ee3a6f8c84137bfd0ff55d047bd2233b0ed930fbfdbce80d32fc3e3e04a32de6be3ad320bec7c7f02ae5656d338d12a9ab3d7d9d7e568ab846aa8ef488db07d7bb696f2309fdd3afbd51f3f2f987c6ef70f578ea9fe0f7237d0d508642eb6e3adf4f53895d30159af1cdd7d16887b647472f70539063212b8818ed32af2eb961ffe38297f1b07ffeabb1bf0657df38e4730726a5f719ab62188432cb10c8a2077afe56bfd1fdbbb717b3a7bf737ef427fc25c6eda17e6ce0379cd3de4d8c889033793d8b39f7c6b8abc7d7474ab47d32688719d4adc6ec09b57ce2d07e9f3bd9cf28e9ec19fec933932b09f6aff6a3fe57dcdc729f89a05ded3273a4034a4037c8c4e5128b5fbfd36d62234e1d69827e13efadedf3ca0ab10dcc37facabc0bee77bcbcc07fdab881b3c543cd6872ca61ca6742e64c06b7e6ce7438d265182e50896ff47e24b7dc6237935dd3df89629d72babc3bd525d2227fe3dc2997bac07f7d3dcb05adfe451bee59e7debfa0d735391b15cc576d8cb3ff59fa1e45bff19eff3d993717fea0bcb4df9b9fc0ea650272af43bf861484d16f5ed42ed93c5def39dfe02fcae648effaff8c8f27fe323c336e0b04fdaffce279d1bb6daf59d25a073e79c0f328b22987331e40d15ff544f0279e592b54ef78c30c8ff32df2f11e1a9922af2b7bf3efe8473561b54b0b6a78cd79ee037e0f934934ef365e15f800f1edb71701eaf4732a6b71a746f7a1c385b7ab6df260b74663f6afcdeab2eac59cadb065b658df759c25f6f337f949c98127c4fd9bd9ed53fb4fdbce3f0459a6f59c07c9b74e410eecf9ce981149fcfba13fe95fe1affb6fee98875c294e88434ffb2ab23eac49fba2b9eeb815c1eee5ffc115d2e4c36ae9ba480dc222efed4f54d544daed813ec0eded701f6e97c5904f9a95b0b950ab9f21d4c85c1bc82c42fc8dc5dabe063e5f908719f2bc0992b1c237ea4f48731e0e3424f6a6a7d99fa3b62e021f98374878e2dc5c21faee7055e6bd33aff731d7c92367aaa83ed140dda85ed1abe0d5dfd2e313cb99bafd162c7a5e7ab4de2b14ff96dff195fec3017a45f577113efa4dcee88e025b66369ab0247c5401f7fa1a68ea1cc97d9e96ae80bdc7fd970be5d957239e6d94adff0fc9c50fb8638ff219f4fc571d4e17103fc9e0eb6218fc3fe03d64b07fb10414e2ee068713994d87ee85fdbe3b871aaafa1fb992f1489398bea7692b2dc196cef4568e2e7ed78b579d71ddc8f7c196bf77e6d055d9317077c997e5e659e3283b171f4a80825a1f604ee3734895b3f7e6558990df6ac0eb9feb6e93905cb67041fe60c30d1a4a357bd1d1e920ae79db57acad35768b7772af83c130762485161cc76a563a5e5879b5e9d49353a5a69f1093e123cb6bb6240bebd3ef1854b9c2f3c239c896a61003e9de8335f4f8b76dd406d71d77fac8dfe9d5f5d1bff93f5d68ed3aec7698c6c89f47bafb6c8970ce042d809f9c11dec21ea573a14619e5ed1e41ead2d1abf27583736c418f54ca8735ac63e7d67073b31abbe48ce2cd13979de676e8dbc1ade2d22397e7ed1e13b8948ce5f47362678ecb8f60de009f1f986747febc5f2baf557108be3e40e9a886b8f3e87e248328c5f967b79eb714975efa7ba773adc0fbb57c3c5363d706576d7716eda0b7cac83b74a6b32ace136adf4839883d81cd754640de4a852cc3c433f7c5bc7829f3b24cb51ccd755356d1ba8151e3a27d433e173ddf16abea99fd748f35a811be479dd4593fbac0d6079cdb05cfd17d85f4d1fed54ae3e341bd89b0673bc606cfab9c943f50a437d31809f05b96429f2207e9605f9a6401ecca3ee310e1fd16775b2839ca46890bbb36238aa2c0e87afeb1e2b430e633f7c1439d61f1b4e8ccb462598d23b3e560b3587b6d5c69c96c9ec6d1da703b56d7b152572deeecb2795f92c493cec00fb994f72ac73c3aab8dcd3ace1d5eed603acb0fe6fff2afdc750fff6fca63ddfeaa03cb1aafa684529f893ad8a972d104321b5ce6d0c9f3f4762fd7ebe707d21decde313627da0cf83b7ebe41e57026714d453e6583fecc830da3e8629ba8eaf298acfc5aab367083525f9ee6ba0ae255f26da9b5f0fda0bca66526550ff3a5f1686be23f5e2cff4c3f8f99a35ddf50de4ff64dca9d779bba2988fd50fe6cce794633025729bd7dbd63fc41c5dff85bf0ffcb5b87ff133baba3391e534a7e08d62ba3ee923b053c10727c859d302dde0f7c6fe7527390df4fe4995766a7e12dc169abf20e4fd77f71ea8a313e784f82ca17e4922e3aef7733a56fa42e5d7e84a4bafb65565a6b2c8d7debddee68b7c6da5a55f534e98b93c147b9637711506f982e41c5be9ab50d3352f0a82d5fe14f7bbdaa677c889c1f6ae61f9f95ef71b3f17d4c20b58d27c0da42fada7a902d8d922de74bc8c257c6ef439c5b2a0b1e1d93b1fdb9c70a041ae837d835c87ad023937fc5e2dd844a0770dc6df173f37c0abddc59f5ee42b7b77dfdaa737a2e730d9a77198e7cdfabf501c67c1e65edb5c7e8606fa64d9eb93ba8a97097e8fffa3abb775da50fa2dbf4faba7b66d58189ad4d58d0774e8bfe8ce56a30b3738aedc33867805df5b3c4d564b74a37e9a225acd377f4ede32417611afe61b096acf2fb318ebf19f9e1c0604377e72b4e56ffd288ee2444779939da6aa87dcd9ef83e248db0cff16b088a783d89e340760456adf1e271dea69b93d80c73584fcb4d4f4701ba1de41e0490c75a86126f31db831165f346fba832faea93cbe38dc6735f749e125835cfb505141c7a4f331363c39f1dbfc8b07f2887c0f468ed4e379a0be1464df54a38383bed79bdc35f2aeb8c1131bc23f291b1fca13dd87604a8898738e3bbe313cb94f77133579ee12c532a93355e4e14485c0fd406acbf22e1726cb89fe06a728a6bc6a31bdefe9fb696d99c09d49e5a158c3a39d8a8623b4c9d9a77291e5c10ce67c697293d7952c5eda9a0626030a5aa723f864ea8ded0b39521ca7d1e0f8a0e9536cf56efe0ff4ebf7583807d0bb586c92f8b2081eefa9f16b6597d64eae1283c493a255a67e86b913f9a3fd12eb98d86e09bec13d32dda5daeb9347d1e47535bc0cb40f37d3a26fb35f06f72e655da7c576d41dc7a819473fc17dd3b547177c4d7b8fbb98ed3562fe98204f54868bbf55f67fc0573289480d4f8d22c316f05a538a6b4d799d6fc90aeff3a37d1d8cd2867f653b623117c6c9b9bb92dc01ca9b3c9747a0f358514274c7eebacafe3ff7cd0dafb5c27fbf9c1a934c2558d82227be4fb836c89e208c675170b5756d1e6e4d6a71594dcdba9d37559b67d9ccaf7a9d14cba3757e00bfe2a8ad23a2f7bcf8a45e935f47e0abebac5b89f865dafc3ea8d31ac687bc36fe347e2e74386468fd17708b0ce2f8c23a5cb37538e47305dde5190e9aa10fe381ad74edcb93d59ae0fc675fb4feb3fc4666149f781ed4c3dce3cca6d9611da2ae6281273d69f3557da8e3eacecf8efcf7dafa29714e36756a055757d5e0cb88b2fa40c6b4f51d0b32528873b3f11fbad693a780250f7191ac956572f5d5e88139d41af331089e8f3f5fe6eb8e0f70972f539472e39a0c8d2bc4da72f4c71f390f63d2dadf5c4ca7e136e9e97beddcae078e3db602267f6f5fa1b9e7627e77cff67e0cde5b7674a984cac0eb87bbc7365786783bb8f673275f5ffd3a2d0cabff8d6b3b6d73af9b7d63716ff75cadd9733fbdfd35ccd5d14223391dc6fc705ddbfe03ec9a2ebf379f1f2e7fab6bac8f969fdb50679cfe5bdd407a228b200ff944d7e88170480ee0b747c03bf3d48760a59ccc659cfb844b79f3a812f3918e801358e452267a862da720cb39cc106e9fc2b24fe0c7e4eb1f2947327023373cb393ec75efa657545778efa298361d194fe26cc5a795a9622c18db91087cfb500b2ac6f35ebfcfc35b0fe16d7e050ca337dd17049fb41b7ffe25b7ef1463e09b69b1e170337ab50536e46ab53c8dbee8c315f815a82d1575fcb1af837827edb9419f2bd8a8c33ed7d74e1bb8f7a222bc6cbabeead73eef5773bc5b37cd3dabef536dce89b1cc5e9dcb3246dba31575b9fc4d8a9dd7d8a01ba24b509ea33b87dd717afb9cee5a9baaabf7cdde896d011c415ccd4dc2615c24dc5e95d01a6c8dc49438fd3b16b87d121273ff560f055c7b39869a171e5bb1f59b244ff8d2003fb23bffd68f2226beb20e56dfe34639027af3f51f5edfe6b60ec7e1356cefe2bd4c8879ac6dc871b17c6cc7cc2047187c525dccbcb51d0247939f14047be221475ba875efe297acbfc32f4978fc121bcbe916f7a9e03891d97a3efb54576ef601fef93c6654fb3fadfd14b103b60fe0044b98cdbe89f99a7abfda7235f6acd6bdd75771d6e2b958ef31d613ba35f1d477cee6339b1be27d0ae3931aa8d9af2bae667f0f75fa0baba7abd68695bd522c93beee53bf479f9e9c9af28cdaca556cd88545e4de1a389d3b5842fb412c21828953225b924d8a654d700c282f8e9545a67bf8d1e1e67be9fcfe3a125cc42f5f39947ef2f67328d76275798f207eadb5f7206fd9d89c143ff5c5afc74570d964e185e9b007e20bb1afd72d1d039ed3cfd041afbdfb1e605f535e8dc5f0f36bc80789816331c6ba32c474681e73141916c58fc9a86e3d5bfe09468453dd77b32f911f7edd7220c1ef0d1fcf8d57b9fae52b55413121b9dfa51a2abb42c428da517c1052c7dae2f0713e068ac1776879a18a3ef69a80d3c68d79dac160fc7fd8fbb7ee54956d7d1cfe40eb6202c6245c4614c4b3829cee00a31c85048de0a77f5bf5aa82023163acb5f7daed6dfff6bb986dcc0814451d7af5e3f31cbaeb43fbbf5b1f62b44893ab2f18558d274dfc7eeb74f9889b4163e7da2877c213d7d4804ec42ea62cd5ab403ec8b3c6f6d4caa08dbbd4c69adaa7cfc7f4417f60c69f3dab20d700625f900b785e53d928c9c9dcba242467806231e1daa87141f8ee1a6cd0677566704e09b6e8b4c796d169f70f3614e11761b0a8ea332add9876df997366cf1cc65fcead535b7408362dde0bb399973a3f6bc11755fd8395e7c9c6dc33f21c8dc908e41cd60fb6543f109a389d0f673f8cc994d6dc4c0af7cec798ffa0bc6ccce26d5d41ddfdc2d5826ca1709dba458eda92e92c82fd7421b2f9d283e37559289ce835385e4dee8cc221b9fecd626d7571533ced37dc148ec54db9b471538abc1e27fd7269dd8bfebfe7dcf3580e4cf8a6660f3bf7f7cc051c4a1b8f552b27f00672d8955a7238ebca613f352edec049e87e73abf8d545e795c9ff1c5283cac66fe0e60a1f7eefbcb3f6d9c25e6dcf6fcb4f1033386b6983e14cf91121061eb8e630f1e3e4eaa4ef6fb096c797b8672e015fb5c1316d61b231fd817513d03a5136ce48fd129f42fdff0cd6d0f6cd1937fd5d0bd0b7dc3b1b09ce8ddab6b0d91ef1deb6bfe94b31ab2fb17a02f6a5d4ba6fdc921ff72d7916eb3a732c77f223fb2e660d31ede26f6163fe1df9b6177aeae6c3bff1d76d7beaacd56a1d07f97cbc046cf41eff7ad707c2701177b0ced9f563b6ebc2991c10825155264c6e62b011268ff7dcf31830f108f70acb45d9b5ed7bf214888dd45ad32992bda416375ef36c8d07c9074c6ea19fcab16b8ae4b72df12135312c471a5e6d934f66a123d96110e11aca11d407007f5cc4df1c89d671100c3dfde3cdd1cb94a9af4de677ae62ecfed4148cc34239894e82aec98735dfc1ad31fd7f3c13ea30325c27b0833a0c3f15795f28877bc1e034a67e8cc4f8ce1b1e626d858b6b17faea2335fc1da77c0db9f2cbc2016e28353f5a4d6cba5daf5cd7c68ceb31a07650edbb7bc429d20495e200fd5e4318818ed7ad71b9766a5c0bbb1a1e0f8319e8897e427cafe7761dcc467bc83f877c751257ace58cad8b2a7ccb63be7a80f3ff73a855e8e6c2d7d8e8786dd4715d03b7ff8f0631cd5ba09aadfab7a2e7de42d53ff2751cc07c3de6dcb7ebe74c9e7bc5b500901f981f2dfe211644f2d2ffcd7c71357fa88fa33cbfb89ffd9c78fdfee887f8d9220d86ce7446fda0ecdfa09b81bfb2478fe9f75ff6c50497afd8cfc0e004f4e06b5bca10fb07c220c638f50c9e9c54ee5d921ff280c9572501a9c34372ee8dea17ac6f656e429e5a276ffe3d23f95c505bf407ae9814ea40e4062b6623d84827e7d81a684b9ac5aeb5ba798a3c24b521574f18d23a91dcb3463ffe791778e79daf86a01fd4f76f8c5be8a5e215d7a665a86f6d3f935676f3ca89ec1ede0fd3a480eb166b5fedd9982b928f492fe60dae79bdfb4a197cc2bbc56491ee727f302a6c2b7eadf12ae93835d744a4ff74bfd981fc1206ab2f62e7e181d7b9a94bd0917d0efe96d77e7cbaa6cd3617379bcfd08f73cb62c93e5e47fb9eae7983e8579346af6178b7bbb8b6c8266ceb371d3ecb0ecee4a730e9d197261decfbaebe04b915d1737de93fc6c78dfe57f1710d03fb971fe38dc375f2f4dadfc6bd59dbdb78e420f9738cad7b0ff5ab311ce94f625a34aed35ebb1b73981caa91e46a80ef997a83996c9bc8ae64f117d546ef329c7c91ce722fdd521e0a6cc30b4bc053801ca1e92db3ab61e0203b1e731e71ae625ce7ca16eac68f1af6cf439fe543fe072e39c81dd24df9b6e10f896d5e56b6f5f18afe5e0bac2f396063ced1c63a9ce76d1c7aa4cb8acbfb057c529f66f9639b5bf153a0dc7c843765cab198dbb4762d5aa4abba3ea38b59699a808de3b83a172ca5d275751ee922755ed3b1cd4dd1c5a1fddb7e537f434062cfcf79faf6389606ebe7f7f3a0c1c8849c1452bb2b2cafbe220fa1b67cccaed953fec9ad6acea326bf6e9b211b90f0d1a7dd35c6f8a7d21e7ea2366e40f8c04d35c6b95514efa8ae55123b31b2df39afe0f9469eb89118b8117f752cff8474dcb97ce15c25b95b5afc6a9bd9d53677f17cbacb5c6b992f26f5373378fdd84eb185e2eda004b9ffc8a945fa1dd4e3ba985ed87b749cd396b739c5137476ccc4b9c5e52d0e03ba5f94d9d766cf0707e574b50523f7a43272a35efeff093acfa00f800bbffbda18876091cc12db5c715b5a573411075e6a540bd916975299b811f7b2509caf8d3e1116cae16ba32fabc574976ff48fc2553271a995b91b71d5626ae41b7d591cd2585c49e5971b71fc42f645232cf7b40ec1a43513f21eb5ad6fac5dbe502e5ff4ba87dad33f06cbbbcf2df553b5acca8b1b71e572ecdf57f76db91eabf78532acef3f08316ae7c78d807308e952b7c574f4b5d1f7b7a5543af57bcd18743e338d452aa3d05c63de01f90be9678be9ac6ed7173271ad7f140725a3f7f36e84da76987767e2b29db73875aa13c3a71e58b33048dd737976c33887faaae89dfd9672a19d706ef07d723b8e3ff23560e5f3033712076e940f3adffe70ff433c5cf1199fa45a7337b531dd21a650cb9fd6783332057d4be7398e7d6eadc7e07bd8dc27b7d57d39588d272fcb68f9da6a0ff30e6546e5a46e18a36f33997c7ba3739e45737322baf81ba205d2154ce3e760ed56fee0763b4e6ffc4e5f16cb687fab7de6d3da6e8c1b7f673c5ca713b1f35d9d5c91f805dd83df752b57fa47b1d43f1e316ac6f180fa35d6bafd6aeb7ce65441b0181bf2b2ba552b644775e2786b7dff6aeb5cf597f1bafb12d7cd36b95dc6369da5a01b19b3d0be2ccc092357e5aebf7e06fd41e731c6a2be6da6c6d79ce6504c8d2fb44f0f69bd8e591d84e64c8b9f4a46622b5d6cf1a4d1234c3f9beb456b2f82ad17bda3f94de8fc223bd5a8eccc49f37747c872c82b33ec7f3e4df48ef8752ec3bf857187dfd3597a38cf013b067e7f9bcb7eba92606d99c7e96db8a63196281e520e7f466e736e2472546e231d602e5f3cf42d96c1e19a5f6bf705bc8e10d7b965345f6f43dab2efc370aed9e941c9c0eea1727d6ef1ddb17e71433ad6fd3cfab81ea4f79ad870022e1f720d5ab1a474f94bdbbdd798b6215643f768d1e39f12497ca9c5a7816ba0daf8733826c5e8e4b4ae0e62b7db0e37cdf6971ab732046c1ee9b7da13a42f76f96d7ec1c40fe9d9ffec9d7cd8e55a637c9fe92c5a327ed3e40df3a6f4c45781376ccbf8e6db759006e683437ab4e4544138d74a5c8f9bc6e9ec8cf4cf7d616871be9826f0ff585f6872f9bbf2fb33cdba392938bf038f41e2c8f0fd4d4d0483bfae2aea1bae4bc0b922fb1a23b37946ddcb5f747db3cf31eb12deb747cf09468cc7f212d47949930bd4c9d76d736572488d026ca6fb30d808cb579bd16d97d10be127007bf19fe5380fbadf6c8660f3003f1d9639bddf9cdbda30aa79b4b89e35a4b7cea1a2753f3faa5c53ac5c6b37dce8f110f37fd55c7dc4ee31cef369f2d5b565e64dcd2eb5cb5e911cc0b5448fed3467261fcecd4eae5deb1bc01eabf511d69ee8e5b9eadcb39fce726f30cb0fd318e92a35ae0395033be199bc166334066b5cdb101ea7b78af99d073f953eb9cdc3535bf730d57cd1fbfb365f285b71397e119df1fb70ad67e85cfcd7c6dcfeb3d64faf2b5de5e9b5d53d1bae085f1923f3a82d9974c673eba7c98f9f261cc965fbe318911ca56413f1311333817c6b43b1d3597c4172233fb6dfd3273f8077f0e91a32b76f76472f25639838553074c361e89ac398f2bcd98029b63b237b779b66573b4dae8e14d0fae17c31bd70b43e641d3d197ba8634b44c8df67c681e46a85c7c7f34aaacfab01d2db3f48ad66a3c3d9110f3aeb62b2a272a13043a6068ada3656fe857166606dd35cc2f0e9fa977a74dfb02f9ebdac56559cafb9ddd71cb81238a2ff807c368ed352c6dfb0ecd6b2dbb59d3ae6ad357f78df98ced79aaea3bd03ed39cafbe9309d0d3fb9036e9f72dc30f98e1ad67db2b945f3f34fe55cbf5c41ffe57dd1195f22376c6af4364496029e821934ba96a28aae90153bd07320d7e085e4e1e40ba2f3601ecee64c32a5a4c108d2b1ecf6d2e4ee2a466c0862e5421d495df3d2c9e305fcbdab6bad32c7ec3d0323b42ff755637f017f088e99702e8dcd29c1d7fadc93737bdff280f783efcfdd281fc35c8cd577fbfe5eadd3e583ee7b30e3d74fa5e6d58aebbc5779c5fb035c374dcf304b19469b2687e3d7f365b34fbe08fe213a271ef69da764e80c4e36c62e9f0f465f78afc448a77f77b498f80ec5af7acdc03909f8025bd71c9e1d13d76731b23b3d4ecb7413c13aefbd77632edfeab96ef405d1a1e783de9c694e68a70ece43ab39589a331c6a45e89e7af2ae6db376b5612d2b3445be3a4a996cf6413c9fe43d67176015d2becd49bfda36ced4c9d767e22bc33c70b40ffac15a913c553a3e4bb1ce4f22f8099a30fc3908c32dcd37d5154370cc9ba89959867de678ec4107d4fbc77d41f8768fd3328131d792b77e5d848fd69cf145fb4ac7c4d17bc65cb3538c09f41f8e39d253285edfa02deb51fb9e99fde38cb972296559cbd6d4f88b1bc69719d4d0667d6b153d777b7ece965f738d035b97a91d46f6ecd77cccea38938b5dc5178cbfb3bf38d2edb649b7b8ee51ff8033793e9e54cbf110d9e8d5729c71ebf1c7bf9cf13bfa17d9e92fe4da0dff1dd37b87cbe8e375c9edef9b74fb0ffa771d6defcb083fbbbcabb7753419aea28f2f3bcd32477a2fd7ba7d9b6bf1c591ca68a3903e984b66bf121ebdc6a6576d73187bca5ed4946da6f59d894cacf7b8a7e74f5bdeb869f68ae326accf08cd6ff9c5e2da7869967f0a361afb9a97dd4b33b4d6cf8b74c6fb8364e59ac3c981ea13317f3f8e3fdeb0de82f4a28fd7b9b2179d6a181eacd570a718856d25e0975828b60873ad7159df1c39617c9903ef6372714c913f4c50dba3f723f81062982727ba898efe7e5ba7fb6f47e2d3ceb8d5e7c81af0f5693b41e0a5bb027495f8e9fe8f59d9a4a5d8c6eec13feb3d9bd71ac428dcfaecefd39b712d5bad53f4e937c76e5d7fb76e739a7c756b4a49bd04e8f98dfc51c525ad7f8bda7beb7f47ef503b7a87fa54efb0ef0f7a47fca8775c7af50e47abf58ee499de61dfbb7ac7f689deb164f58eb0d13bd446efb8b7fd3aa6d45b432f2c690d7da35758de60f60d7a5e8d3bf5502791bae630f785207962dbbf19940f8223fb98073b57ec62e5b7f22b952c63732231565246d748b0b1765febc1ee8ba9797812ab821ae2b7ad90657605d89f2ed800c8ae4336d2a3debc6af466a2ff1afe9b31b8894b52f3cde008207d5a44e385ec844feb626dcc65c7b7d5adf31c7ed13a4f6a771bf78b05b9f7d1c53a8ef9c48dfec3f7746ceb7a4d58973eddb2a947f9558fe46e2c27f1a3fc292e4badae13eb95f10b7d52689053143fee278c67156d8c1313836dece6359b877c67f092a54e2e9a9ec74d1e15f535510c9dddfed31a253e93ef8bf4ce16f7be54e35e747cc0cb57c73c6518a3a2c8d7dc29d3c29e3aa4f490cd7b307557e31c301b1eea43f4e5ab2605abc7f735b865ddfaaae538ff01dec86ead84b1156dfd6213de4466afd69cfa06da87fb3bcfb9fae59bc63ed602ff85ceca8eefe4cda3fee2f165e002d7ba083192c77843bdbe626f80d7ac97fa68acbe586e8f8db5caf0bcf319996f2a43d74f39a529076c63e7458bf3031e594c7c8b75bd53c3cb0a7521a0a31ecd12b0acf7637eb3d9d7f55c17176323b66db269f95ec7c89935c9c42d74247f71dc4aad635a6b61f2caf8310a27e2ed3aef202ccf1be354b8633e446798a15fce8f3ce71fdc7a8c7eefd67af9bdb8639d7d84b9a2182e8f0eff00e41cfe12f7cd16e75de6982f54e67d6fcc13cb2b7f66f10dc93d0560b9b7fcc0b77f40d769e74d8a9ed4c99b04deeb1eae56a9afc6d9eff5797b521f9e56fcdaf77e4b19d67cdecf78dfe7160febcca3987f0f588be56d63da6f8e22627934c5e3f3896c00c056fca079f7d0ce67c4df7ec51c04fcc52cff24f389def919b6737636d5e4b60e2765dbb7b70ad0bb1ef3582f2f759e14f8a55748e637390ad5a45c531c4aa447e25a8cd0538ca30dcfedf6ae92dc770df6e73faafef1eae9efc152cf82e59487dcfd4fcab137d98a7e775e3b7b6947ef9d6e452f3506aa0c582fdc229563c825d72fb787fc156b4773b527cc7d60d7a136e753f4ed80e505b551bed4c745ee3fd6b545f1cb92e8d5e07720d803ed9cfdf67a9e9bc0d77edee893416b0ea6b17810fc8edd51cbda21c415ee5cb51e04e7b9e2179f5a82ded78387d7b62b21a7b5a99fc89af9bc9c91fcc6e30e788337ccfd24472e9bd3b39ffc337fbc4ec6fe902f9453330f523982dc3f29f85e28a77cae67993be6472456f63dd74a5a3b2c62f962a3eb757ec4623221f1b2a2706b5cd453e0029fe212f3a608279c37a1f8344fa2dcecc5ae9d922c94a270aaf8cdad485ed07452f8483f7c985bc0588239ef8bf9b0359ffe98bf31795f147ba3de6bbe0458fe44ff3d65bea2660ec504c298e62355c6b911aab2faf1acd18f8764817c0be7dac557c3d1bdf18f6c4fa43efac462bb2da45178b0b6272f7d3f3198ba27631f9f0e827c57a7e8f955eea449e24843df52e0bf91a36c4fb6f6f1be1f18775f31ae485f609e1717e1cb75138e98dc91edc95592b3ab181560d14f7799a38d383f351275bafb51a7a3ca1b38b9a3ec4fb636022e27d43f74afa324916ded7efc7084febb798a1c3966f0e329bbc40f479c578dea3cc845720be703399c637c73c02fb594e1971bda8035eb9a1970176ccd3873a5f28cf6379599757dd2f4a3539fb47c052cfdc1c703dedf721c0bf07b5fcc33c272761bf1b6ab0537b486ec307efb34fdcc974a69de57efa4e770aee13deca3f505f3bd981a2192a90f750624f7a1bd0efd7415619cef5f6bdaa7fe1ff3b11a2e514e3c98ea9fce68defe35178ac9653a97efaa297f415e6c15f010cfee95957fd84f78cf0a76c4c53d632cd88d1e8ce4d55fecb94434c7fcd60d039bc1c8b2917d6647bc8d6c5ea66687fa2d1afbf8015706d9dbd43e9888b690356776d76f8f74d0411b038de061dfdd711eb46d34f95c63f1e86581d6f7322a03c8c15732d1d662464755d3593a79f7cc2c9d45ea3be68b477af5a4407a34d86d8ccebc4d7d88f1dafa70e0a27ba7877c634ef2f6fb2ff05d6cbd19d8ede32237c7fc8e8c5f2bf7c80d4fed1a6dc82539a5b350369cf094afabc4de18f2d75c3eb5df25cb6ddf8b31fb021ba21d6b280c648ff4e2cf4e1ef918999c78f0154730e73896aab0734474d9665ec2873a2405c7c4cd311f30581721d2cddbbae7443499fa264677b5bb35d5cbf1f6057ccc117f77b5205cc827f83eec4b447abff17e1c4fc03efd250fa155f769dfb9db42d9a23e3c70c53be38289716efbe419b217e25fdef5e6e8438ad79200f6744af377311737cba7794463f33c37223a9add3ce266fcd9dae15968639dab8b451da9b7d5f894d73529245fbb83b78efd015d7bc63875efcb99fa66bb83fbcc702f33b9012c8674e7b72e96bb2975f09c25e086ece0c09f3af82c71b1d4cbeeba61c7ccf7d20ea6cb580c3a7defe2c2daebf4618c4413e2fa6dac6b133876b1be09f9065a603fe466b171dcf001dffab61afb85cd6265682437a98b89df8f2152b47138d15981e7fc68aa684c995af35fd6127f126debf11c30a5f80de3d1ef600dedeffc97dbca1f7ef4076ae6436e4ccf998573559eaf7d26ef3a1a061b417db5db7214c7c8981c7c9c07b93acfc7f17021af1e7cec0b05ea987ef76fcbabdae7e728efa79d926573fdf2783ea659fe1ff9b159fc9f8eef768173c27ef5d176f2c3a2f903ff489f4fb8f1bbfeeaffa57907772c231a9bbab7be7d00df23f4e5e7d4effb431ed0c7f3bc0d3dbea1b67f8d35eb1f648ded21860971468a092fd77cbac4b7bd7f73c6b7266f8ae8eb8e42e39562938ff570ed799cf54ff9561bfde395bc97f4eb21bede92bd3deff6bd748bf19ed9feb3b156222f70fc7e84be99b62d2ea5f6739d5c2df26e2cd3f01ea4efe56e94c310b826e49368b472c2e3b7a55eb63150ee225313d791555510fd41e6460b658f9eeb9e01af104b4e7bae8ddb72d6a9658e0d7efae3983fbbd1256ec766f0dadc295bd149b7758cf15301fc40d4ded09182f39ce0a5333c6b68ddea0745ae0e50effa7272aa04f38b8df9371fb0c1b7af4e357cbc5f2a132f7db8267be94eac7167f4fccd1d73c86e3f2f529cd7bf53c4e880eb5bf259e8642c47926b1a83e3b41cb8e630f6063ef98e4274a5e1d9b1767af39e9774969e083e29aea7c5b52f5887722bc28b6216573f056eb531c6984d90cdfdbd486524a37ffc18d724d5bc68d530f0d255e60d661b2775ee8eb52d2c657841ed3898af8bd86605ba37f58415ef7362ea9cb15fc93f276f2d9c03adbc905a3cf0ffd7f8b2d34338b72e590f06118cbd3fe66e8be909e2169f1177596a6564ebdc6d31d98a4ba9e436a65f7cd6b9b52a8be1d1f0ae4f2650b389795e83f723ce9b2a66a10df90307b69f56f93e9f9e445fba1473fd02d8269e55be93314c67d1126a575adf32bd659f117f9b0b45bebe639e17f63a3a577da968de836b6aaf1e9203835dd6cd8f9d4f26e85eca3d803119b484c626861b6bfb7618f3a3a3896d0c5a8f7ac07eb306cf22ba0c31de849dceab4b04b155f38664c2cbc6fac8d703c8edbecc42fb7bce017e01706ac1b774741cd227f0e1ef6b3c83b8cee7388cf9216aef20b5717f8ed656dc5a7cb6d138f0f57d4ecbf7850ef98eaf1bacdfbe7e0e3046fbfa7c2a90ec5d9f73b1ae732432e9689e44775abed7f7461ff8de68c4deeb7b047b7507f56332d22504674febc87613c7da05363a1fc739f143633c48c7dc01b7e83af50b9fd9477bd833fb5777cabd39e95654f5c99ba9a3737af7a34e01b76f8fecbdce7a6ec7317af1639677c08fe18c7c2ec7c54150f3351f8b66870be5681dd0fc278c5ee7ccf58b03e71d8d6d63dbe70cf82c639eb51b9c3a66379da0b65b78eebe6697ab1073ff999dda655c678e6508ba6f199da8dd246d8cb863efb5f44e89ea6c873b2f01bf1aa3fb1e90eefe7bdddb6033f0894e17bf1eaa07d99e1f193e3fe8db78f9d2f8b0d4d7bd1267a616bf995dae198dbb3fc404a37ceb6a018c69c7c61017faf26d2fa0b6da9c32666f3c50e5d649dc83e1f651ad1ee38ab765747a7de89f515e173abab6ffdbf772eb6485d64fdb4720c78fb530e3bcd81871a1634cc962a19cf2c56498cfd1781a7debaef6090d90aedcf2cd1b711f8ec07d79ff40fab78cc67381f6015aa746dcd603a63d368816bf1deebcec8c2fd2c60a62c066d5f901c56aadf7a670120fed3356035e4e2cab24d0db353bc5ff412e5ce2c73bd406e072cf4267e04841d973fe5e9dfaff7735c7f0623ac9e756b376911cfd34b799af01c797b4314f57a21714873b9f2d52e3ea482d5ffd00c953b40fe65ad9f033822f01cb31a8d90f47e5a60aca45cff5cd5e2d7cadab576c45dd9439571a5e5cf3253b546559d73152bc11ccb337d86881b4b1268f9c7ad3f2dd69eb1fd22ffa4771a87af48ea4bccea7bed8732d9b6b6581de0bbce224f68fc6999e790bc56f7d832b81fc41ba5431d7caac1d3f3b5d91acdf08fe6be719a47701e6946a416c9243f7cd42e7bc4981cfbdd89810eb3da3f70136d59817600d287ebe5038f190a2f92ca1bfb3d041676106391496dfd697a6e5fba1d189e06c03dd809ce968ac1a5d8ae841a033dcae9ee0a4be6070f81ebca631de02c6c802ec3c0bda6feb5104438b3e3f4776c04415b761cd878dd7bf86f6b28ab122f07acc68bf16ca8d79be1c34dce172e1c9338c27539df285e2ffcb1dbf6707a80ddf917603099e41fb17cd9b14101d6e5f78daf087e88510afda86c3bb63ed64b0c735fa6eaefdee548e1df2cef944cde71ac628de46bc67e9445fbbf3e57a006baaa547acab18f487038b61a8d9e9361cde0e163a772f35fefefaec179e62a487713e589c57919f8a85372913e70c3a2ce70d3ed0b972b707b31f4f29f7de6024cef5871ae556edb3af91b9a940b690ff3f51bc9f12d9aabe5e4a0cde4f39af8a1ced7d73201f1653bfc12a97ea772f1dd3e1d05a83fe4a30d6b4e6fdea0babca13cac250c41bbae7a088b7a3e9c41b6d12ec942de838c8ce6130716b4e06fbdeab23941b73c2f8a4e33aa7e360aa0ffac1c154d3e5dd4e67719ecfa793a2ef3c02bd13dda7abe80c969838296e3785762bc7b43bf17627a4ef3695a5683ec3d093e3070cbd2d8e4fd033b5e1558955d15456e2efb12027dc0c9c10adbff5d969f1586ccfbc68eabcd3f65beec4ff73ddce28af644e4d8817f0bee89c79520738617df611e85e53f96b6eb1b5d313a89bb623b6763080f5d09a7b3ce7ad3e2de4b897436b21c7a8bd90f12dd779e6d89f50e03a4ea80794bfeadc9f764d32c4213602e8ff821b89bc1b16dfeb30606aba27f9fa0cb5b2bfe354cbc6d72c740c370ca20e864d8cf30a499eac9ce4757ea69ce43046ca4434d3b855835efbfa52e36b8ee4b2613f7250421dd7837f91f559eefb633fcd3eb3617db13e9582724ca6cb682f00e7d313dd8fc4508259b42f9761f27e9cca5fc8f6f4cd0cf8dd1cc5cfd6badfc5279fa03e75e36d472d7eb226bb71bd1dc4bfd0de5deb6037dfddb089f3ad75ffdd17b27fd6baffea0bd91ba9d767fcc790075718699677788e4c3c562d7f67e536bef460a9d76356b9d1a56a72e5fe2dbfec1d7269eb5815ce1f75848c601663ccd29af7ab1323e9e0b7be812c6d7cbc2c2756172f985fea6a3eb79e62563798fbfae4179cbe3d60236a669cadb432022c789abb2c75712e277fd2cb01a3ee68427d696bde1b5f6c37b76d22da03deda986a77fd07cb07dffae18bc14b09377b399f2b1867d0c6b9018067dbced589df3e095602f823ad00dae8ded3c2f14f70ce723bbfb6c648cc9df0d4aaa93604c88d2439e4d857c0e09a466dcca176be2bccef9dab71aae7d6c50299437056eaba970663b32458cb382796e12a79c869f8dd0e8efe164be6382d7fc76d91fea35c85780ef55a13c821b143c8d70e36da0ecfa9766be54bcdf5cb0be6f59840be27e018540ff7b4782acc3068d56b616ced3a67a19b0bbe21b9e05d3ce4c7fcaba6aee8ea2846e1006f0b3a8331de3d3a373618d385d48827ef47cccfccbb9a9db6f12a3852c362e3fa1f63976fa6a3af0da97d32b4f8d51340febe6eeb7a43e0877ce2cbbfdd28b78b1d9511e0313da9af223503f9bc2b371f38d99e62fa90fafd1dd28d39470b42e058d33ff05962aa80c7b7d903ee436147bcea544188d636f1bf7431295a314c5c2f8efdb4fb347bb394a1e6466c5f7be6ab8f7bf529d605e00e76f913700cab27ff01620456f9ae313ea3b93523f8c90d8faa3306f954112ce6e798aaf73c73f198d97d79e32b3d4f5d29a0f80635eff84ab2d33a0f3fdd5f5d25891dc560f396c33eeedd86cfb337f7bfacb9061fb83e6e19c54cc5fa839dd98f79f1dc3add65c0ddd1c6847cc49c7ee4f62897e3fc09ae6b8dc395d47c67daf088db04fe94d95cc9cf0b657fb5841aff08e3f169f11bdc4bf55919fb309a1a4be6fdf7bc13737fcc4f9e5b179683fab7d8b3efa575fd743c0b9d18d797d6f3f3c5e0b4bf695ab05a747390d13ed2d07892f3aeab1736dc604d7c3ec5b1f467ed3dd41ea4dbdf796223a2ffc377705987af1372e388bd1233df7661bfad8f2ff8f880f789c7b7cb3dee805d378c1d6b967ba92fd639a480137da3dcfd3de317133ee32ecf7bd9d42149ccd85a3cdeab0d7634ddbbfdfb08e99f4f7985d457c085c767eb5b971f6891ca05e1eee21a6e6eb5e55fadf3321ec64ecd097ef183cc72747e0c326292b5c6c137fd8cac9f64638a19c529b0946108b8d85a99e07ac307bee192ea109e30fb2238baed735f63712bf77fca694c6adedcb0a9c7c1f8f72ff16c4aef03ee4b8c7b07e3df533b806dd707de3c96834c97907ed1c47355fde30dcbad1aaf3cc55c2eead33a011c1326b24cebd410d1df7531a1f621e5e53bc098c7756cd8c131d5095ac787fa3b0cc54fc50b9dbfdf3993fc74163b67245b1da93c631d685fd73ef8113f77ee1d7c5d8821edafd600e7356be610af2fb3545c73869e09d7dc90b6496a4e55d111629aef02eb03ec3ebc4788adaf923cf98f621fd2ba4fb5209c9321cbd1dfc2aba1f6479407eb3396e51d6ebd3fed151a7b031e8f07ee24d4df6e9d0d3aa300dbb0cee5a0f5133f761824b4f696cce711749ca9716fea2df1f8f903a3388c2fc071c0fc4df7b8e8e8178c218ec6c50800bf00ed53d7f4334703bdb6a9650b59fb4c151d851def7dd1c21868e733871bd3c96b9c91b0845c4d8627eb64eb1706a35d15cdf4f4976d6f5fed880f5cad359fb9530509f9c6c2d662b44e5acff7f2b7dd3f844513dfcbd7039ec9c36ab8d718fcc81a8f7dd1af8f15804f59fb2d717d1fc88db19860bec56de1a0fe2994a7638bd763331eff9df7a50feff3bdf441b78b7fe58e033d59a63c3280b930ef1bd7e854414eedb8773d271ddd89c8b10b8b899f6c847db3e7487c7a3d70ce14d3f33385b38272d0508c883e19ccb483cf7fc2636263ce6a559c29a71a9fb0a51b77f96fb561cd33383746d9669fc7e84cfd033704f511124e8ab8d0859388f6c4c69033ac8f2729da879437cac4e72059df980f82e1a68fd6c2f26d6e2e3b7cde1dceac90bb1f21b6ba2d084f13c517a67c351ad129628c051300ef396096937cdf632bffb6d6f3eb3de2a427c0cd657c2ee92c31909e912ffe66ed463cc37323f671c0bd323572625d3f3b9d255e584e81df43d9e71b81e85be306a3d40991eebfcd1ca94c890dfaa033acc2b870a8af04f39ffe6ab36caae03fb45528476efc3a9755b2d67c3cafcc78a33ef4f06f9efac7b7c3b57e6fee7719be20a6deb79937b4dec3b2bbb67b30e74b9007dd3cfa05e327d908f5192a9acac3ba7ddd13bb17e4318c718dbb5dfbfbfe1bf20e9d27fdf2d56fde57cf45df372e73d075897e40c6f985e1ab87fd8375d39ee7c97722ddf6495be59299633a4e3ddf4cd756e5982f1d59d0e450acd3c9eba7c08c5f22c27c625ee57edf8173e7fb387fdf9c884f6a8ce501e53bfacd9e3df5dab3aed467cf76625fa4d611e2d2346e0fd825fbcc457b577fbfadc3e04f3ebda32dc8853d300ab49eb7420071556732cb0fd3e53f7fb84eded3c6ed985bb71bc1ff4989dd7866e7149f21ac3cb253755fb079c46f509f2431f625539344f57a6fa0a26f0f7b38d5706d23cbcd17b2bedf531d477121df6297905cdaab2d2489dfc1d6b094e1f7dcba9c37e6a95e878cdfb7c0b98cf89c6ad64ddd97a2e6919286f5baa23859c4e75f2c523104deb4d488b769c2f9959322bb066a57cc13e53accbc313fc0fe511c175b2837a2a7abc5a7e2a3f928e678fdf4f8c7ca888c4b5f6d18dae7057c632b27abf98e59e814bd325c81ba95fe6be6325f0f46e7b9d2d4dd63d95af463a2424d46ef3591c587f2c67c41796c69de9e73e74a9ae70163229c086f7e8b431feb43693d97af6e53dfd3ce13ae9233c3a390b57cfe8a2fba6c3d50cd67e0137ea7cbb99d8b7a11f13e6d7489f65e3e416d6dc35fe033b1047817f56f9fd96b47f384d6e7f9685079bcefcabc3fea256b562fd16b9f06d2311e75d00a9d6b76eb1db5ef01783d56e7397a361cf21e3a23cd59e118e28f0dbc8f0e951b1823490a127cae75ec39ad6ceb573df2bf7526b7fb8ced999e7365ae95e9c644e7dc9ef27ba773ad0ca81f0bfd4dcede37268ed6d8353537b5daf0bef78c0fab3b2c75ffbf7246ff6ffb9b16b5bd3f29c0a7a2bf6736e63a983a6110ceb5f815fed6ca12fbf697f9625252bf029ac735fe7d4b7d04e7dace94cb2bcca534b9d5b62cf53933e3eb31fc8bfd9ce17b81f613b8c3495cd7306b2ceca55be770b3f144824545fc5c07a8cb70722f35e2ee7968f1a2b6dbcb634316273bc3d9eb9cb8dcf3e2549f88d2765f1e916aabf1e2b1f1834eca26262c1ef7b131daf2bbe36e6298c644dce8f2eab8e3cacd36969716176c74ee72b4eed4cf9fdc774a72873d62eede8f928cf44ade9f02f7ce7d9726a1633178c0fa47276e0c5ca8e0b3c3184cc6578bb7026a4021b718384ab78278f1cc84c3edce344f10391c83ab730d8b55b415890f988965b7e2d1c20a6ad9482e8bb2cf3f07bcb8e6cafcdf78b7e1a5fccfc11c92f7272d1cad632736ddc8acc9ed016b38cde89a012c4cc2d3007e455bc77c0f8bf4927cea7cb41e00d703c341c393eb8403dc22d7a90ca67fb35c2ae4377c96d0e73bfb95f2b5e0bee45eba4b3ec7dcad7e7f6aa49d7b1eb8bded88f6bdab9bd0773efa4b495b5d3ebbc7fbdb1ce1f43a60173bf5df6c6e49d3f70e6e0db9b7530f4ac6a8370f80b4f34b2d2b7d7faf3f9e7ce3a35fb09d3fa337ba23e0ed353206b032f23abf00f2183a6bca263cf29867089d1dbb1f3cdf4dcec25c9283e3f416d8da30f779c2b7c1f0dd7762adb65b6362ffae8fdb0c1f03ee47fccf52cfb09f63ca72664d58ce2cd436d449cea41d6d0bc73741f73930359c1f25c147829a2d3765e4cb78c2357beda37ae48ff4696e04c57aea9c3b0d8faa7d7fcfec3b8fe701f255d01e9d5c5dc100ac6e8cf712177635acf32d318f296ab3bd9f164abddf82da4f59b5628f0f9c6976678d40de46fb8c8ce67a96d97d7b2fecd6ab7137d487de7c3665f9507f4bcea26e1d9bc8f0fdfc829bff6bad6bd4af63f7f21334ef19b39c5dcb1e9c21becf7f849e7f88ddf5f292a17e3dc468268f5c9b80d1fb606b453d32ae594711d1d7cf971e9b25eff529217de3c11e4bd587df16d359e20f463f10ab3a2f5fed10d98bab9b27402cf27e84efaaf5f50e1ff7129dbdb1639dd0ef44c65f225ca782f9c99ce8174e28d93833320874cf86d393abd602e0bffd8dbc0881630cfc74beb86c716a07be7a5e717e8a74e06eac69923b778e67ea0a9bfc05adc6940e6cc6cf62a0fd5fb5fc88c942b171fe12be3fb5a3fcbcd14f6f8e7513575d8e166516ae535f5c8f2f098e3bb6f3206c416574e589b8174ed95207191e2e14e37d8debfcbbf222b2c392ca05d116d4a2bf8e9c4f1735e7f52863bfcbd6919c3a95cb0acd05f002a236387c96431e4b378625baca5fbd27ef7bcf5a6bbda7fb3d397c4fef3eb70b5b67f294d3dfe3b6762b6e3bc99b5876eb9ca8f3541c457d75eebcef457d3ce1a304cf6d4f1c4a39c0bc2ef549cfb59c5cdbf65cbb906bf69b53e7093ebcb7c0ef552b160baa8f7f7479ffa8fde9b62e06eb731d930e1632f035022f8f1dc1b9745e404e21c6d37ed4e1266fd456833c92de7c233e6de19cb430580eecfe86fc37b49e57558979aa43a841eff5c3306db6316ce4dd99c98b0c36c62a9b8f6da4bf537b0f63bdf6f94eee8c2ceae6e6caceb9956f09ed6e8b475e48b0f7ffb159df5d947b169cad97e413e7763df1f32fdf3af942e2a7f010ef79b57b7ce98b696d638f99f7926f4e2ebe42f6a682c7719d4eaeaec9dfe8be22fd107fc3a4b1cda2e1d9223a2ad8c3a65a73bf756bc31b4eb8767fd1daa17a3d8bd9d6d5f5b7cd987674f106d7b59737a4e7be16fe6bddff2eae2b7759529ba8f15bd4e721d5db1b1f75bb3d779ac43ed19d1a3dbe1fd3818ecd53cc86b63dd1c284aeed871e9c02d2eeaf38f5e49e27f80d6d9be58fd7db9c3be243aef2447ec0fefd05c381f0a73ec1e2afd727ce3db12b3bb5ef2f38c753bf89f6996f7357f5e46f121de7a16d8219f2644c2ed14651ff842f41f313e34d3a7b3f62ff7e347fce0781eb3cc6fdfc002cce4f3b5f15f024d8e7da78132c864577dde88ffc799f4d3e77b8499fd49cb471743af528f0dd8cbdf36c7c8a7acee68afaaf8db9fce79775f0cb5ca077805f7be1a5c07f4cf7e9d2b19cc41b73b7758ada7f3aee2c56470f0e89fabd04de92e1efeff91b0e0f53ede6148f1f70b69fe2bed7bc1cd1715a469b54cd9f608fa075dfde73caecbb75b6d6385c2a8b939cd27c64e7ce4f1c642fe2b1b8431ecf3e38cf151be9dde7b97e094097028e45c0183e22bdd51eec66de19db90dec4c9edd4a8d682fa8afdfcbb08dd4ff9eb48cc9be408f6f92efddb5ca3b96227741ec7dea0c91772bbd8d7f73ca375c19dfc88e473cae8520d3ff12bc987cb882e9c633c8c4e1b89d8f36d8deda79b4685f622399b987816d5bd66226028d4b1b5a14870325bb10c24df7bc6a004bfad89e61e7345d35a168a4b6213bc4e581f935be602e6e852dca576665725e09ab27ae0d15c8aee94e6ac2dc5ad69337cc82a73968921337ea27dcfc3de3310e92911c4d8d285e243be24c393fbc6e4d50447fd12b7ea8b815f84c697b6ed1a02f0f7b2fcc2db1c63c90287dc9b8673c85236ffd769cbfbc8ad82dacfc3602202466bad93494927f781c94bafef69afb5568ca3b9a75547c9f04afce15ea38d8dafecbe1bdcc58e9fe1011bbcedd35aa4bba4d639a00e03d7d7f8e784c41dc9990531bad9b096d76d9994b8359f26ed4bfc46eab5581f513e0b9d98dedb3d479c94d10f8565cded89e4bdaa6339b64829cef3beae53007fa322d7f20a6264a05f53fe67a2bb8f555cd378f75f71cc57fd6779cfd05918b3b5a58e7e493af99ff17a609c712ea2ece9c2ee005c8e0c66e62cb4eb5a112d5d66b6761b92baa6a6061ad94b694f7dbf14535deee836b9a5103bd8983bd1498bab3f9dfd1c1411c7b568ee6fa77e039dbf30b6986ff96a09c995f8e28a7d2afe505c7b1ad73eea97d4ad86373f15396f80eb970ee6f00235f45dbeea863fe259db84d7ac539f70873e514e133a1fedb6851919539c573eb7b8b74e3dd199eccbae6fb854bb63acd9e95a23dcff68ee0cf8ae74164d7aef9d8f4f641fb01841a5af86a30a78a0251e8f87c4df3cf4cd12dfc45cb591af86ecbb707ec8bc53efe62a45ad1f410d51c4079b7b2c76dfbb4176650fb605837f886db31a0f471555ed14d8677a36aacc371b38d6950681cfc9dc613acbed33d415f96a8a64c2e442cea80aad33b0db359aebafe66ccd1d700210bd614b62c4735c8777f1064e427e03cc37a646203954a314d6e3f8a3b023f1adb16db26039e55e690ef8033ead927cb7fd764dee39a337c0fed832eb0de729da74ad9e37a6fdb84ec77ff6f735ef3b8938efb3cd53dfe0e61619e06f4bd8069b63ce1eb4de71fe1ce6a98173f353f8bdef1b33f89e437c2d7e73ee7cba48c4bcd61de4d98f37d8520cb45f72dbf70c0fc1fecdd19fec6173f50dd8e242816d4b096ac3443dcdb24e3d72e75bb89cc96d4067e5b9730e7c11d9deaa235bdecbc04f0f04cb6459e38acc4287c644610f36f7acbc25cffd635bb333d90b77f3be3ad09a00bac63eab6d4cbf7d1dee828572493ef59cf8b5f9986256e1fce94bbc509afca8753a291e65551ef6fb3a56c0117310962dae7c9be0d22df525decb2d3d4b059e6ce0136d7365d7dcd36bc1a0e7b678d42f2ff6bd2bcf0bcc9100fc31383709e930b676bba3330eefad658ee4e5a7f9eff50df39c5e42aca3abb57feb97fef9de390f3af167eacf62eaf26abfb6afa6c9d59f1a48b6bc6e05b5e6fc433abc97cab496d057cfb3c051921fb20f692d6da3a7982ac50c863a6efb016f24c1bc2e8a0cbe23c2458c7fb38cc43f2714efe6c78f61bdd77d33856180ec1f4b52bfb564b5d1c3e11dc94a2f3de4ce39cec8da09e75a71b68c0bf6551ab7d04fe5d835455f4d3864db409e9c1d71b7b5a0bedbd5b070cce1f9a09cdeecb0f866b9584c6176c0726a4bb0829d78913a3f7eca91f300febfb1b70c39c6fc38493a97e4a4cfee59eb50333eb4c3209eeb9731fa77a1ec7388f1b76af346be8a797d022487d0bc68ccbcb4e208f22da4d86ae83e3b42f342f31feb7949677110a275a06a72b44879de9bee72b47f900c5075240fb9b75d3a1175136a4ea7b6de57735a427fc937a7b4ee7f35eef239019eec0bf010b7b8d29a36903c72cd21b201869fbc2f3a6169016e6668a794b76acd054157a6cf653f9d8fe5f70eff3ad27d976e78ca1780ad10239d69d6f30d8f9c57ff2917957e61e5e977ad57d3f675f59d958b0d8654bba6aa2d3b67878d20570ec1d6f2f9a2b2889c24eb0ae957e1bc171f45bd013eca80a9b724329ec6606b0e18a5103f39438077dc734f4f97c55ed9167b735b7c2a93e2a04c0a139de75d3905fa72693952222e26bb603131828592c40b858fd0b82fa697da2fbc0e27e5d1e0c5355f5e3b7c652d1e3c34ce0ef1276ccf89ea0da06e0bd950575bd837f302794b2fd9e7804332f00de933fe79963b8aa17a82f84deca757f2ad3f8714edbb24760c82d94eeaa8309e13e59d300887975135d7010398f714c3c0b923759bf5b7ed94e4ee2b32670b41e227b3c48972cbd6861ae8a1933a7f79e25aab1b60022846b5509cdc4b779def33a4cf3df1a5a49d311226a2ab2c81cfb0839942f2e5f199d98ef51b22790fae778b67434d11ef8749027e0f2f5d250fef61e2001b903131fede2957e0b9097e7cf08f205d7a1839d64af10633cd319dcab15659cfb8fd7a0de953adb9488dd44f8dbb4bfdf2964ac7fbec58bb713de638ff8bf60d9da5f97c7a413224267954d2e7bed3573de7ecaa841c378fe8eeebe8a380b521243f5e94fb6a341116d1e4be88645f0d4bdfa3365b6a547b458e5c413e3b7b387b907e426d8dd813785f3d73e8ec7df115b142fa1252cd76fb95b63376476d3fdcef8cd97abb2f758bdb6d2c6eb83164d1d873c651e76747732f1a167f98e993f2b88d8de32e4eb4dd7e2b7a4af1e658c1cd1bcc38bfaa31c9b6e86fdbbc89aed0ba8ebf7f22ae88fddbb533195c253e78c4bdae7d4f2dfb86b92f58337bf5795d25bc87c5e80bff2ebf87d63aab7d182be57a7c42e7652f97e35a2a37769a0326b22b1843bf02fe857c3de0838d1944731cff13999a977f486d4fd0f619b0b140b067934f9273b8489de260adb2fd20b976753eec43f9773073262f2d2cf3a79c8b048bfdf1ec7c3833edaa3c3bd509ce6e664dd4b5654f7440f091394291d9612fe664b51c7fb430df5db360f1e0a13ed6ae12915dfb9417e8bff7ce097e275f5e996fe569ee249b6fb6b57624fed695a9f5191af49fa15bf04b33ba40bde6c1269d3031dae83debb1c3f2c6874279066ec152ebfa517e6b97c6fee5aeaf255f4893db1cd9e4edf96673cb4372dec406ad93bef32b37ba346bfa6cc05960a76562092b24cf38c7806b8137eed3976a5940759c6219fd077662d2b51367d44eccc166499bb5c472b7d175b51f18e1613a4b9c7d723d28e2b88933ab1d7baac97fc53e9203b2d7f3fefad28f1bf5a5d4b91256f9ced6e9dbdaf3f8476f9bf7d3c33aa67d426b18e94eecbe69ce22be7d164517df0bd5420d0fbc2fec4ffe6057b9e68a9bdd2fbe979457d7b44ff3e9a8f28455e20f9668dd0b8b78b8d94d8ce36e3f3455c035fb38fbd3d98f3325f8a7a19fab53d4eec7c933c5f86096c9a219f7d3461b558e25f3ae354be6927f5d08ab2fbf12ef80ed3c35d0d97c6db70798a157f7bc3c431df0993b917cab374b7939a90aff03cf698d4c55c7dcc94f8df2602695a39dce8b508cdcf3f287d111aa45ba83989a371861ccd834bfcfaa18c966d1525ec285a4feccc3ecb455cadc16307fd81ee6687b3a441fd7a51e5f97467955a5ecd46af78cc66bc793b572f5cce48ada467d9d27f8fead20de3ead59ee0801a74a4134d7468a6dae123b157fdcea76d2cc61b4084781976e4faeb5bbab8a9c3a6952b8681f59cb2bdb9601bee2d1dd1b18950d395d62ec6823f45be19aabc43baf12471af1181f62c4b9cafea4ef93bdca7c97938a3cbccb7c391d942081f6c3d152dbaf643d59c92ad2f7947d7d5d9d820feae4407c71c57983d95055c454c5bee6932f88bc9fae1275baab1c738ffb1b8ab0a6660303cd1dd8d5f6607b266755ba50fcc295caef85724373407c01b02fd17994385d3ecee901e9a03f8701f0ccb5fc602a7bdf844ffcc12a700463ec2af2d54b8d82dae03ecd299d4e680e29d7b505dbd8971f39530f106ccc7e79e2a5e200b090a553b09400a7e046652ccdb387fc057246211dd5a0b92352c02dc61ff94251df8e16571c747e02d8d0e9f0e700b8a5cfdfd9ed7b7dc64c706d39e9d7e58064fb63bca0e150198b77c7c271636f607073c52ef07764993fe683c574951c64ca51bccd0ed2ed36d790ccf11fe4e4dcba941bab7d3ffe9d7b73bb7105615538a65c316351c27df7aeefb2a90539420d5dff9838a958d982a1f8a97c710c8813899db354a41c4194cfee2024574711078bf328f1c1ffc2834db3989e9a6b318c676129c3e1c622ebb01ab6c66c31cd9afbd3ce7751bf73677db7d6ad82ceebd58fd7f84246ccbb22b03dcc72e4a5c985e45be1ef7cc4c30d587db8f9be5902feb0c1eeb10dcd4e6d41bcfa82087295e82ebe9ae0fd6d9f673f87c10ac993d8138cbb171e38754aeb68b644f61af7c344beba268f73a962a7b24d3e5984a3956d5e12b83fdd2379121ca4d1d01bec4f10f39546813a1dfd78d32475d17a5492abaa888503bc8c48973bdc1d6b765f84a3ec30ddddfc7bf6b3101ca80d5e107d676135cffbfc2decc1086e8dc9f67ff8bdb6007676b13587b967623ff1ee3c43f6dc559df0810b67ab51391a92bf32a74e939f03e1905495c9c957c4e2d34432f60632d6134a64af34ef3d2fafaa127087e9e8be0edf7f9c54bd7ae6fe07eb0cdb4bf37c79b724358778ff639eaaef35f99903cc75fcdc6e02bce6819f3fd101d1b5ee5eaaf511f26c86f62e9cd556cd33f9f23f9263d3532dc3b6675ec41c214b11e93c3b2acb27982b7d1771fc62e28bcbf1e5fb697bcaaff2fb5f9bfd415c0bb70799f1acef7f9237b696bc2dc74388552ea3fdbbad43ddfbdd134047c2fa9d7c0b7bda391d14f9db416b511bddbcc12a077e0c6d947b68fda1ef118c04f2d814f9ea481fa8fd02f083d355eea5fec981f56880cde657a3cc350f195a6368ff418d4ab43f39e7d15d5592bbaa0c7f0e4867686ae3403ecdf55cd9e81fa8df2bdbda65c876f504b19a8f65795989e87ce0698da046786e75d3b8fbe0df5865b639bc3ae6add0745e5d9c61ef546bee7485b11c4fae9e30bc38d6ea6e9b8764d3ce07c8583f83caf2222b13f197359acdf5cb74634ebe77c407bbabcf6471067d18ec56f49d0403285f87c118f08627b48624e93db7356d88e682abbf91d45f0236c6a0ae9b87b68e8065d4b11539a839181fa7b76c7b87dacfa77d82bdd4e71fe0f6e2a716746dbfecd731d11211722ef44bd6dd1b9f6120cff58bbcd1b8b283fb3befc9bb6c621b1ac173c73e1196cfa7e19ed727ffda442f25d4e21a97d8d25b3e1d8a4f77db4c8acc019c932430c13e550bdbb84496ce270b65293a638a8fcde625b139a2b7ba9eccbc8f0e8cbf9af51f35fecd07ec64aecd936714b79ebeb6ebb2d0bc01d624e4b5d1ebf07ec871d2f386d748010e245cdb43ecdab5b07d77f49ae3f2b2d1d5afb9b2fd5e6af165a995d78d297b9ec1158788bfccef93c28ff8c01c3887c73ab59774167dfc4bab02a8fb9f5bcc354ba5d7aa85f2926faa008faf05e32b583a1f2d94ad7808e3d7b9227b8ecc895e5806a6c0a36f289c317f99eb74ec3bef6db5bdcce7267ede47cf0f1cfabc50d7bfb09cb7b53c9e89bff21776e31fe6049dd9d56182741ae36561aaadbf1ff27bef628473d5b7173b1ce6ce14c72af488f72caddc6c8ccb61217f884baddcd1daed7dc4dd17323e638c31d4631b806fc7b7f3950cac433373ac8aba146c5ad8ab51d1c5cd6ee5a8cdf75ca657ad7a22827b33c3f6817e136d2d59cd27ef503fce7e2be0bef570a26a61b066f193eb1860c42f513b9d3d6e815ce2f7c09704df4438c90d2969c95f5d0ad6732dd96fb4c96da1d89929c5adb39eb6cfe05984b3d039cf659fe29856d826d85f6c2d111fea8c2532d73ce66e32343b9dcbd0afc295c0ffa1031e55edeb5471ad368f315441fec813dc4f660ef6a81d6992ed7b6b4186e1dc2a817f58358b6caec5acfcdab173d5e14e8ae7d665d7ce37c4f909fb88df2dce4d2e3ec999af71721d29d8f5d66f8c798cf9fb071bf30f3920ffec591ec73b9fac13f0c52fe793977c163a2bf4ef9a6fe13792dfc8d8597c6bdef71ae6d6f3742e5812394cf6e375b3bfc1fa6df20b5fd259ea6746555e5beb58836fbbc0b9c8e09b1e0123402ebc69f2b6a7980ab22ada55a9e37bbb7534b86e98a9b36af2799b1ccbcb526f30449bda5b955f8e1b6e0aa62697e53d683078cf4d3def4edff6e667aef6fbfb91c43fcd882f9ee9899ab92b1c83adcfd83ff3b5ce3c934f1c2581f88c9f263f7e9a709f3a573e6b5b57c4c17e3acbbdc12c3f4c6371357ee297e586d8b695d97e2c9ff563eba722b2a71abcd867edf206b2cf244f112357c058204dfbeab3f6a93d3b66d66ad73f113ceeaff2a92e8ef37992ebc134e44fc5880eb0b75ebabafcfe382d75a47f816c97ca742e9ff2793746d3f2671f1226fedaccc99ee6e83fb135e4d973bb4130b81dc9e96b785971cdd6331b0befcda73efa2bceadeec6616b4e03adc1d5ad390caa7583b1486438cbbb4639a600d3523b5a8ddcdd477cb8c6d8134cae3270a437fb39e2a3e3f3fede6ccbb83b7be3c531573ccc79d4f5f93c7d16fcc90ed4b5c8c81e12cd67b188c18cf712242b02662ff5c523ea710afe304ee4da965ee3d769cf78e9dcbd335ec1c37885fde3f5741d0e561083399865b2ad6bc28abe3805c365f0fb5942720a7f70cc73f7c06b300b1d860780c17aaf86b16396c1a77e817c28ef6c5cecd4a8fa708d97e332d908db6f47cfe3b5b0142d69763d987ce858b33e1e05ea33fcc7ae861cf5adad9318f348e0f32ada1880db50406eb6b0141ded1201febd90c4ebe4e37b5e95cc1998878be9c379fc6a6b25ab93bc3a5ad957ff1e2da62b3417335c7f9e5d204ea60f63a44b2fceec353e594cb24cafca604ef2e936b5de64a7801381cfcb741606c6463865733d37b03e056766b230b7f95c43baf8a4a3eb2d895e37c917f2eefd28afde8f52c0ea62adf8d043ccb9bd8e326f60148e9ce48e59c6cff25bff60639b808743e3f8e8bb5a5ce4e06fdbb1eb67dfaa9556d93a84964e3c0b9d1e1dd84efbeb83cb5e5dea382dbfe7dd9818b3fe0f8359e04fd8b3e5492e91a132dfd4374e4b711f5d34a86185384193e3b048e59baf94c3398e91146c9cb21d7357457bc0e31c4b88cdbd7f3d8f1b7d54cbf1e4beb0469563ad12efbc2dd48913d882117a82f8bd9046332ffdff58bc882faf963224dc151033054c0dcc01bcd21d735539d6b627ce58e67628e2fc29cc3b0179283ebf4a6c344f929f93b65bb52c9e35e23ef7ec5cc7a7cf2eb684625cfce96eb86b30da2dd7da65fb14e942db6cae8ddec0be31f9db619a288dbe0e679186e6ee00f55dabe4201f023f1d428d946dae3247fb101fdb7f41fbd9f7d2fed8674b67a8e3a44c7fa7abcc35b9cc271868ea14c6630dfe7969c472ced0df0a4f5861bb32bc9de0b98983f42f7afd4ec6bd8efdaa12b25f3f325f3022b46770ac78f4cbf8c7a74f1ead51f4ecc76951bd9f346b7b82f581be45b99d7c414e1d6d347015e3aa2ab05fd15a4dfd54bca832f1fd274d1b359e1f6d77cad3be619bce9a5568bca06688c6d7e5e6f91907ef00ff2960b40016857157a74ee029496c5bbb1fffbc6cd6f53486fe7aa9c8c40776a88fe1a786f7920d63fd7139e0f57a52a7a3c0162e8123ecafaae49fe6cc18cc7858fbccfa061ca7c4162eec6f688e39af1ac11987f69463723d6da1f1d99e3c53ac1c6d141c241c3f61e309076b952cd09a3357df48a634fd5c9e610d491f2788c1e3314cfcb38a73b7d11a950e33efec047e9a04de797b32d2e4c72339f3904f809fa1f930e859bc2ea71cf917d6e4d5b5561addb78ef42192df1fd7b072480e325ec7f51a67e6bcf51c7d87f4fea34e920b9c018a7c3d4832f40bd69a60243eea1ff8bfcbdc1f60f9e60f92ab5d8d903e98c13e6962fba73aaf221ce55e383a2d4231b5897c33848473f17a19bb8a11b98251f9d5f0cb173eaeb84f70a63cee870a7d733d5e817f9e059f7a76f28520f7b492fe8ee47bb10e477757492e0bba66617c96afe4db0b3a26541f7bbc5f0c5dc0567a689fe4bdfb0f6df983e462a7ed77d36bb6391c3ebe43aefc541eea82fdcacc59dd5e53dff9d0870e4ecbc3f5bccec1dc8be93a1c01976dfbdd60433d8e07898b3deb13927dbf5f73709e67df3ba7abcc7e764d315ed0fae85eabc7ef716fbffee16c2998757f77ac9d655bb32b8381d1f73c8c1fe817202bfbd6e090edc3a9576edfebe71b5ce887f37809f934207fc35bb8a8b22fa22b8cbdc168e8a7c9d99d6e4f50d73d566f4b7d79f1a7b3c4178ceb41ba9d76a91c39e6ecc7138a429da07d087da76dec61af4e573f076b16213b00b87dc9fec5ba8a11ab539cdb0572511bad34637bf2942482ba74c03436ae8e04fb97731503da5727e56ccb19eb3d87749da480381bd1857ca86f1cc5483e410dc9393e41bcb4a357411e9986fbbb00bde2e58ce4ab3a057ca8e820f9f80c3f3f9103f5b908b2b5cef9dd4dc4a31e8b7b8b1f8df6fcea684c82d99e1737fb447474de381a5cb2d46551da19a2a219337947dff34457f845877ac37950b30b92799eb26772223f447582f7f5224dee5b6b56d9567c3a4e6facee719aa3bd1fd273bd59273ad97f2dac3f6dc8793cc1ceaa680d1d7e7ea373a7197f2176e9f684df971ce05c39736f7fced76a72de607ea74457300197e5ffe56bfdfbf95a21b2f37fe124d23f4d3ef4845b3a4b56430fed6169987a03b5b0ef7cb8e15bbf654dce7b83cd65496abe8eecdb52ffb803964a24d236af0e899393fc872b39cf0be61901628cbf3ce39c67812380fde5ab61fcba8a3ecae5d8070ce65ffa47c66177043c45e316cef54c588e27b7b5549e37a6facf9e9c8f50bb85ebd9f05a837586e605fc22a49f136ea19c7eff36a42fa5490cfe91ba9f71e1fe3e8e35ee39f3aedb42b9fdfa2edb5a0dbd74d5fdb672a995975fbf2d5dfd7875cdfcc3d894387ef9dbf3ce8f7f4676cfeee8a746caf4b95a4c3f7e1f9fa6cea6191f7d59f83a1a9ff2fa7c3e088ecb79955802d2f79875107d14feefeb00701a997ef28be9ef6bd453e4d74f664c566129fc3e263364737d37ef50cbc5d4ffc39a46679d8c31b8cc92190fbff81cfffa3d2c0e23f3dca9f8d47fdf0fb620ded8b95e439e356b6b6675fde92fbec5a0e55ba4b1f7e95eb4590eb3a8a92d3d349889d1fadcf86ba13e16638537be5be546fcb3a30bf5dd3a94af57f1e9b5945ef359cc0d16ffaffd1ec0c76070fd0a06c7f19bb6e545e43d53ea231ed5fe63f7e97b6abf117fb478d2cf6d13a39a1a62276e3bead459bda2bf373a277a16dff8fd62f9fe690e23dd843a9e567c6a2b880d86c50463137b3ae3478f29960b60d4dc0f269ff811ffdd6d03b05f408f71725cab7162fdf6358ec1c66cc59a146f301bd8d62cde0356f34beb9a9fca676c23f009fb3e1ded299de75abf99c6c5bbf315fbdb9e9c0f1b73dbf683268d4cde983efb4e9dc8f915aef1b0dbd76a5c23fec6bec7b55623b01739fe21760371ca3a1f7782fe7e3fc2de00ec87e2c88e35d2a97ae663db730f8c37d476007e48b736a6774db8ed584aee73f5dc223d5070cd5e3c917aad7e425e00276ecc40ec7c3f33bf4ffa91fc357e66777f61ecaace18ec52b13a0872e5c88003fb177d1e76fbccaeafbf78dee83ebfb4ad7cf837e37e98766bbf923b59af7f7eaf35ebbeb7aed77bbace9af51577c76d3f9dfd806df350dbd2fbfcf9e179522b4264c95f8c9bd3ed3fbb8ffee2fb47ddbaacdce7b11f6ed7c18a7df63d9634a3f5fc0fe7cf9fb8b86dab7cc7d8dec6fb51811c8acb715a02a6b733a0d71c7aed46aff916d427fce5b98731e03a6b9e436d2dc206df02da3d97efedb311f6237a7ff7f9efbee7bdbee7ad43dff32f7dcf7f5a7dcfdb796b9de07ce38d13f1afd407f0c49f5fd759d27c78f0b72a467598c64c2ee3ed6449b3a32518779dd41659925a507fd921958b83b97f4576ccc134906d9877d64c7dc622dbb7e56b9c383f7e3c299756dcc51b02bc79df32001311c99bad3e293fb540b0cd32771499f3066aedf7ee8b0f31fee2643e259c5bd2e8866c6e1dfca7376407d6b585f4374f11231cc77aa13e7a05ad157c9df197136c9eaedf7e0ffef20f116a09acd18f076709d41983ad3ebbdfde6d73f8e39d938b3730ee9be8e5bc6eb7097ddc21990ccf19ba6d3a09d457756200eab47c67e308785eb16faaae231b8ceee6a0b9c7d23ec48d362239b38d0f97f515b47cf3d2618fece159f5f1ad2ae58f2d60ffb22a15a75935c2bf77c7c958054eba3fcdab8fb32d819d5d35fe65f09b5fa01e41f2d13dd94cf838a3f61ee6a3dd4e60434d1c60952790671d8e781f7cbc23d8d7e89a3fd8e58714f53786e70e8a11b9caf0c753c4b36b1a7775bae26de174b2c1065f558e695cb16f02f0d1afb81e0d8fc9d168c613e9fdaa14400cc312cac40bd11c33980e0de648817f071fde087cc95a70f414e3aa8e5f4e2bede31f55160bc77c392db40f5e1d67a7a51417aa2c7e3b567cda681ffcba1a1d5dc118aae31b7e57549c2ce1927c6ac57767ce023f3ddc4d1e3f8bdab3b44ebff80bb465353104117c53617bced13e76cd5d7050c4aa899b32b532d2ed44d6d1ff7c1f191ce094a1b534c76395d31807c6b9e19fc7d9a85ce18b739d0f261d0eeb4a2dd494c419a4d111d9e18e398cfd8ac6aa6ee1569905766a148bc18cf720cf61ffe32a4681649e5f89892f703ff573fc2d44fb09309607334e95457a9e802fd81b185c2d2f9524f1b9f2c71b209bc1a93c814332f3c34ee5d0316f3ffed9c038c59a98396679835a1ac1b87bdadfb569492ad4e72179826b5f4ab4d6613fd7df271d224f91ef3ee0e91877f0d335e3817d9d527d2fb125fd56bb9f15ec27c91344ce1fec2adb1a6dfdd4485deb743a6af459ffbae0779983645ded27514186e1da909d6cc4c9786788ba66e4f2befa1055b9387f2ab7f342fa387b8a8fff35b7f0af2f70f0efe7747986358a7db3634fb8a1bdf0330f57478b1f19fbd8385a55f6b3a77637ab8386278827e9a941e50be13eda635f9c52e705a17909d0dcaa0a5af7c9d5a9f05a46f7a06f3e982b749640fcf1a0bc9fec744fd637927b803947e2522beed32c1347e2d933e0ae2a105fe6ed7018790257d70bd9a9f873003fb47cab6ba6907d3fd8a17339f02531f7072bdeb1963fcbfb7eb8eae4e6ce65b1724cbb40b2ca69fcbb3867ecbcaae769a38dc09fb3486748df4c9c34795930f15576eda0fd640d507b43bc763838a70a46be405b3345be33f7067e45e3411f2775c29c73129a6be8678ce42bd259d43a5ffde31f553ac4ae659f91ccc36dedda6d91f30ade259038990ce3f973b0b0bfdcb1661c92e3ba22fef8c23ec3eddc4e267f0b9b71087c3504bd85f92e83fe06f36f69f11b9583d8ef31aad09af984f8a77177f6ccdcc8f45a10fa3cfdffdb6926ac7e3c92c340e7c21f8c02ef0cb2dfa33217e7a9ac0adb5add496ca7beb69b18a6b65fc916bf9a99b1a1834f2a3602e0856af9f56795cb8f7e5c73c8b16700edbb3718115e4dd47f72ee0bcd338cfc8f1db34c0eca1eeb13d395679f67df7b05f0ee0e1d5de4ee2bf2b5f3db8f933a7712ab68faa08895a318d5a30e52ebddb0cf0cac2fe2b5211d687ce1ac4a76daf98ee0899e82cfe0017bef0efa59eb48844b74715edd6cf3857db6beefc9f34837a2f526a74d35e2fcb391e0f5fa78ff9a89f57b8293fa02e45cb4fb908aa9735e2587f1a559e764ac7aeeadc7108f77a7eebef30decb3ad7c8ba4355fb9979275cdac21153839b1dc55c7ef274b522f96a49ee6d528f4d3cb16636d7ebcaa92dfe8a74a92aa5200ef9f6bb81f7e456a90a630d664cf2339ba47e3e7abc92d44ba9d4f6411fa7fd71c82ac5a87bf5f9fa3e743de5743a46342fb79a72f3f3ec46c5a6b859c83c67d7146e7d9097ca0701f79576ffb644e985c0bc8a5a9e7559a8804a72967f6f2d59f1a7717f0ecc83ccbbfbe03df23c5344722aff70b7ccf2920f2a3ae516ae559906be49d3722f3f375f5f1b3a846374f91732ffc38db8258ccb04caa75bdda4692debf545e3cee6543db19e2714ef3b3a41a93a8f627cd5bb21de9a2c6cb01f56bba04bc2eb5b1abd85c90740dd8ad76d1c4d89b33671d8e58997c6f744d7a4edc4ea680c7f74157843530bc43be1499e3b99660bd518b612c8f58ae8fc1570f785e65f089719e903e71dea2b1b933b824200f897d8abe775c840b6956eb44cc379f9cf3ecc7d346be1a8f42db9c259e24560713e7c82e8420f1a6236443fc38d6eab2a89f5b61cc0f4637a5be38c85751449ec4a013ffbccb1d6bb5f404117ce3ff8edefa576d1a1d9d5661c6d9a2df87d60fccd715eb976d1d91c677e9bd44bf39b7da9d16a783b54ab68cce4375119069e4d94528ee5db4d68cc6778de3cb20b7f618e3f743fc65cda6ac0f9bc5a353a500eb4112acc59cf15754aad2e8468c5ec39ced8c4ec28e9156eb3757764db3fa15e0b958239c4745ee6d7e63db2532293562b60fde60163b6027f7dd5b263eb62ba98ec7feceea6d19e0e8854d1f5c45141c4b65efb9bb56ceea80f037fb2d68ac5c5366f5ba6bf31babb7118eb1f30a6cefba7fe7d6efecbb6f984716dafd2b1ba8d67fe58baf32ba2df8a2e45bc8ce07fdad1e77f9162ea4117aae1ef3fa3972e67a8a71477a21be2f009cc1ba1d2179457b07aed5f9763baa4fd238deddb59cc49266877993e783731e1523f20633245be36d5b577f666f658c4e5fa8d281e05db7754df2cd387fadbd97b3d6fa0419b7fac118f33b89d56199394e67e1b3fb3ebed1382c0c7cb635cfdc4e3036dadf3f8befbfb1fbe4cfcf5a90a372734c3ce674ce1c737b9a85f6d3f125676fb3a7f03aa07f178eb5ba83dea9ec125b10a14edf9930b2412a402fea5923747ffdb9ef66bd965a7387f3e0f7bfdab836b213ad5d52fbda919e71263504b036c5e473ba4bbc74779f4f2fe2a2de57b7c64fc9ae0b3d63d64cd9f8804cfb15ec4abc66c539631b611dbeb58fd97c636cf3a4c6dd57c4ab2f2482b3c7ef035fcdeff3d2d937ea1be39702ddabc11deac8176c3bd07cc9f3a31fb369770bdf4b31b01e7f6feb98adf7f4fa01ff233d4abe858e9208acdfbc6f6efac6b1ee8376a36b86aea347dd6e8ad706a30711dfd9f6d4f8cac8b9aaff3f3de7ff4ff49c5aff249ca468ad12fb60947bcaed5555908db74a685e27f6b3cd024739c0f9bda8b2c8e2c5ad61cc648b7fff5af00f393e9a63dad97fc39ff4f73a027c0ba31bc0dfac4ec0faa098f7b2fa17d31eeb67aaef95ef6cdf58ecc846cfd905e8bcdce8dca9c66b1ebf9f6603b02fff2f7d53826dcd721be7dd613d43490aafd655581b88fe26dffbf40b9fd1659fadc739a3f32ea48fb39dcab123eccfd4defd5fb70f6b7fc42c7122906d29b1797bedc6df6cc4794b07bfd5df8bce3bc0ab22bea3b6ce80d6570963ddd1716e9d7388c8feba8e22a7b639c13e0479bbc5e3d56f5392b16cdf47e4addcac9bee6f6c9c94f5519336de48fef6c9b156856b0eb985b9cb7d01eb0d5efa7eb1d3843b08c91de22de86f41bc3a120f71304720f9a4e1fb8f3a09f6fafe76da4dc415c62a1ae946ec93bff9e0531b65b6e524aab2cb9dd44930b7d8e87eb046a46fb8ce1aef87f71f75bafa51a78744558609d2c1c04f0e79f4c5097826698e0ca917704c3986dc5765726af855b634afbbce3f5d24fde3d1e2b0a49c1167a4e3d2f7a0ef07ae6d2ac7407f68ae37fc957e1533f1e29a2bebcab64bda7a6bfc32419ddb097997d628f053a3e10f92473f3e3a8f4cf13ad79a985af37e2c6f70bba3f7a3f411a8dabfd126aea9c855c93e2d759bf8395af1ae37f0591b58de20194079ead973883dc398ba80bd9fca915b418d17e702e6dba415d3c3f9fd353fd3c93345743e278ef472da09c6d5b166504789d609d2a9f0fe342ac2d1c3b98a4cf29bb17e8a746f6f1ad7186eae393cab0ae11c9ffeffa87bb7fe54916d7df803ed8b568cb3a79742045163222aa73b814c3082bada237efaf757a3ce45916476f7deebfd5facdf9a1da1a8e3a8717c9e973c357e42dce67d69ee12e3699f59669d054f7914c41dc0685b8a71775cafc678931c7f87ef80431eedfd8eeb80be526501c679837c40f4bc51940216de31c5dfa9e2c07ee0380fb251fc8f8d6516696d16ae033561e74d382f23ac635e93b10feb83ebdf8ea48e81ae7fff01fb5dd8bbe45bfc775c1fc1f0e7d13cafd8dc9a18ff7d09b16d5cc726ac8998df1e39669e8de7f8fb18c3b0e3dae75d147a05d40986de08fd1b62c3b04f304e36c5b9226b03b86830171d8cbd8cce36b151e7746ea75629d683a0df28f7fb616aedf2b7d51339830774a75731e01603dfd161baeca3fd75995ac5250e33e8d374391cbc6df13d30657a319c39b11f87293bdb879cdeefee785e6623dc7652f93dcfb13b1139b7ac2d5c7ff81fac4397a416a143c78ce64ea817d1eacb625e8a3217b2dec4cf059d67741e0b88214ca55890b8ced2b3c2b786fa1a3b87cd89c87f467da0446f045c077c9eacefb429facdf2a36ca368be07b104ac930ab18a3fd9fd6e9fb3865e218d99f30c6b64199a63c2d1e0835f8fc6d427f513d44b520c6c1cfbd5c6b0e99e14e2d662ccfbe93addd2f36a7732c786734eea5ba11e1d9dcd285ce47155d6545e245b7846d0794c86539e762519708b904c5c9a55b2351917853bf6aeee78d24db6a49e969c7f5196313946cff3c8fc80b11a83fa7d6996785cde43ac17f9eace843933906ee95ff01e5d1ce2ea49f1890e2e3efd36db93fe2d76c0af81ed878ac65fe4732fd915624df198e563b6ee4129efc8e8fb743e053ec08310931950db7766990989e10e909ea4da64b06fbebefb96a2ac4ee11dbceee84ed904dd731c784734ffe8becae8beb3680e00ac1f602ee23c385f948dc3d4b1eb28e8d01cb9dc778ad2853d6b1a10472458d60b678ef6fa1e6a84d0ddb99fffae4c92cecb744c79f0a81d097626f926fabe2473f0df99ecc0efaeb1edc5eefcb725795f3dd7c2f3ad7ac9ba5b26c1cf13ffa63960679ae44228f92a929c55cf3f9723f2d9d7ec73d106476d86c85ee0fb9cc8025a73c6b15ff34dd0ff48c63e7024bb23ca61e7775ce0f8bd5fd3caaf6796f9bc194fae49b03eb9f6bc88919db1bce5e8bcbba3f888f653d2cbf3b4e75d89ae41ebc63076cb92e816cf2ff52c981c91cebd09b20bba77818732c84a88df527c7ae7de9fd11a4cb467c27989de4fc833b18174b7811187932a71063df22d226bfc07d6b3bc3271ec7e5a9b808721e091d6b3e751675edf3aafcf2fa7f9c7a2e73add876b1545540dba9935ace7d6d393eb78c57bf872a43a565af98f2cb87770db2595690c37c6752625d1ef08ce105acff29c04686e916cb9f725fd691c1fa3d521df8cbd4e3a7ef931ab073be06a7690dee8a275fd81d6305af6af69955ee3e0e9ecfb2f576457a4f5208c03f7baf0cdc9ac4b709b3b831a78e30dbff68cfb35aaecd3da985f53677d9530c0f178ae427de87ce117bfbc91ffb2f0cb5f2b1ffc0c1883756f5eb33aaf67d6f0f1b284bcbbbb06c702e95dcf1bcc6fb713f0b50fe43e5882ffc5892f338bcfd722f4e6c84611f58ad8f14f5158ce719d3ac5e7f1cc6c84d6a7937ba027f6292e0cf6db223bcfb9ebce31de7bebeec37dbe0ddc51d70cecc1c85bdfcdc01fccd7f5f00f57c11a8faba713dd37abf0e5e842ddb8849ffeb58e01badafc00dc0e8188734ef88188ed02df52c6c8720397b77cb5b6a3b0e3d9ab911d879dee6a4af30505cc9635f926d6dbc1c6ab13e37e427b9dfa0f49fe285a23b2774779c6c64330a3a1d699f8172b64df00a6389ccf2c3489be3db840ed31e499b5e806f553beaafc9e302e38bf49352f130bd7b0a6957f4b1cfb235e9ae5bb533e320772d3505b0ff17c68f4fe27457fff13e6dabae591712fd1fef9c5f47ebea6644e457be11007f75352dff2d428ae59a72813e77e6dda0c58ef63ef5b3faf1ef5892c4dd28659c47bc8cbe8a2be805f82ea33d0b7fc40f4fec7c619f4968e7f4a9c9f876c3c41f7d0c97d5edf5e9e8744d73808bea982e9f26f8e77cc243fd17a105a13331d9ba9fbd167cfb996f9e706b79fbfd5c39f9be797ff21dffb3933f2c7db76f883e29e32bbe1f9768d9dd27823f3cce7cacc23514e7c57f762fb2a57742e8d1db0166c9ed509f21a091e481e8513bcc7aab80b75f60ed2afb2320e9ea86f01f65266f85b64f7a23b67b9f666529e9b74de443d2017753be59efc8e0dd1e01110e59c603bc8b92f520e32dcedfe39a9dbbf4773e9d0b714dc1dbadf5bf54bfcfba445f6709b44d537590eb8f02d24ffa658763379aa7c177c50a2ec167dcef2b3c8ce62f2357f5b0e6f626e99187fa2edba81b877f2a3e077fa53f6a9fb454ad6f693befd44779b72dfc97620c107f2aa41ed8ee748e73a6d82f9311bef4e60af37ee7dc08938a0b331b3ccff64e1bc83cf3e92c9040753b8f7440c21d7325bf60e60d37c7a3749f3b634316eb2320eb4760ba3283007046f4bba332d64bbdde4bb7539fcabf55bbe2eff8ed93f52fe5e1c2e7ee0b990f34cd09ec6be6fbf48cb4fecea7d478add113c89d1aad3b077ceb13338b7e63bc9f854455cf98ec43b073e4a96dbfc96eefc538c7db76c6f407c58aa7519d43c5e3dac26dbe11e7333027f07d6115b9fd7da8e847fd17b5b2d155ebc4ffad71a236def2bcb21749f7fca350dbd098b7920dd8760b1d275f8ca3e136a11b8fc17e3ad6f4b93d56245e11c6c00a8ed91f3993a585f97f0beaaa4e7e68427fc88e4e1cbea946f96c39f2db5297fbaceeeaf692de37ee11c628ae9d2a81f39862cde346cd4c2409d0ae8fdf47db96d2a6b5af0470e51387fcb8c3e8b9fbd13ece4296bef06df9836da457bc42bd22a2b33fbfc571c9619e4c4125c8dc03897ef7e4796b10c8b4cc225d3d7c3a03930fc0edd474c7ef27d29ac6bbf48c7e6e97d590096d50cd7e5501e35c15fffc519fc6e2e9430377158809d1a07ca9914d653c88de5359ebd8ee81ba07b0b62cfbf445f256d677d2edf4379af127e468aab22e5b7a0df669629e4b7227d7b78d8a0fdf53c44fb307fb328268b3f8bc39273e93ea33d2cd73ae17a28bebe4bf46dba37859c11613e2e1be0a02cdee26df1571cee8eeef313faf691d804c7642fe64d7f732f31f9aedf2bfab80cd69dbfe18f3271dfe232a9ca12d907ae535c13e384743fa417ee5c07f4b315c40682219239cc6740eb5552c786ba49770cf169a277377d8d8121fa3b27655c760e82dd8dfda5cef10179e9f5609718f3c7ac3729e3fdcb19ddcfb310b5d9dd2546e7b2197be7c49a73ccd7ba5bc7418c74a222757634fec3b1966b88d73e40d6e01803c468705e95c97c7853abccdd7176403aee7b30e88a31479a2f436a7e0856945f319f03e80a5887df00f6a85fc416c4534e51783c420c2a987fc42073c17fd1c1f7937d61f1284bc2bf423617f1f51e20be97f6d03cb27be7e43ac49f6cc37cd2f8091f777752c61f77d71f755f3ca734d8fdf3fc7498faa21f44f4e1337b89c73648be782cdc9dace65ab0114107c476215a9b32a9bc02f2429d7e99d5b8266f61d8e87ed845a17b11fe7de06d8b311ff16e1e36fb05b17cde1eda9fd978727d5fe647fe7e97c661904ec3f18796526c899d2f62ebd571100dde0d617ef79d7cf6e82bb6d951e73787bdf6bb3e738ef17c06ff37f7a772ac107616290fcdaaa9176039ea5d538c2bd6497ac3bd14fbc732789bf4bc4e627420a720aa069daca9bb917c3b8ce1063c90f8dfbaf64e711043decbc4b897f15efb4c9185de153f637733e7a7b65f113a8bcebd880caa4f0c07ae7d46e338b9cee49a8dbd6bb2bcd17e9d5c077d0fd712296d61bc673c0fe4dfa994a786ed3bff12e367caa4d2f6fb2371ca5bea00d67d01b601e85190d3754cc7e631a9b205b29793bdf7d0cd61569565d6c3df44ef09ffadfbde2de999b73874f19c3b835b4a73b81a6be35731fa2e92ddcfd8bf1d573eb22b3fe2a566ac24ef0463d39aa7289897446fd0e6864695fd887de9b90b92f559302f95fcf722320067963f6b3571e190fc235852456615492aac33cd7f25754164bd6ef927cf20f9426d146eafa873a4eea566ce51122e2167e3230a1707cd9851dbb077c3e5ee7f6dfc33cbc43e3992afa2d423013ef6a7cfa07d6c7788fe77cb836e87d6ea9c13c33bc65509b10692177089037467438c107063c1a788ec1e5f8e03911a8612e9e1b18f9fc532c3af92de04dd9b45ac3b5763fe6cdaf68c635799e3d7b80d3883d89757c2bb7b5a6b9485937216dcafb1517e001fac53569bc0afd3ee277d5d778b4df024f57515d8c764abeb077f36697d06f715b721f47507efee1b73bd95e276680c37a8d98639cfea0de868e8dff03bd8d3536750b3df9cf2023a16c494ed731c66d7b43ae529b66d8f18f351deeb749c7e6f72cc70bef75ef99b4edef4d2aaec108c5ff2eff6f14b6d438ecc246c7f87afd5da298ad4f021372d30a4fd74227be524ef875b2eafdb2d4fc8ff93efcea3a0bccc2c731b07f135ad7cd28f5b9ee13e9ee43efb6add3e89178a7aa95e67e6f15ec967aac6fb580c91f22bab773ce07550dff698fcbf1c37fd221f66a7ea0409de0f7ef262774eea781419059c21c437d2c0f1fe8e8f4f88af40df83879d4d61cd3da297ec44ff91389693f84eb82ce1befee5b7c69c41d78982b824fdfd538dbb47a18ff4f001c740702fb3eda04cf6fe19709809a6c257ba17b2a516aaccb70a51ce36b15f2439df7fa4cefd9859f97eb64c8fc047476db3edcfab6b93b5c2b2b7749d7bf18ee33e358e0d0d2a620350bd1e7de71485185b04c9008c394a6b3e890e623de52bc7ee23bb3d749e40f6c4817d496bf3886c7ece63ea013fe926e8a3f92a22630e6be28ebd3a0afa0f740e13c030fd32f6bf8f43ef250acb6b167a4bd4f7a9d3f4d1f13962fbebe9752be45dd2dad511e8892c27fb7d75e058d1569fd47d7b6ba4f7317fbc51ee3227ff21ccd585d6ccfaf837f6ecc6f101cf55ffeda2dc04d901db6bd8df42d6eb3faf1fc87ea3fb0cf0a6f2f7da0c917d9ff452199b623be8603ce5f44f16a7216d403d0ab637d539a46de1dccfd5215f915c4dd7a6fcbfbb1fecdf8f13b623bef2e70096357dbfb82486205b708e1bfc6db6f7ae18dbabbf9f5abbdcc5f52d098b55d236ba9d7d331632e825955f7b425eeddbd2c4ed568ddf34711bcdfbb579cd8c7e99eebc6bd4a3eb44cfaa176c02bf87b187e8d8863fd8bf09ee3c8b5970b9087dd2f848c4f9e7b527dba76b8cf710e1733e3e708dd0d375fa71f8816bb6ee455aad25d921e2e14d2916b9d33dbe2359bd3ae45135b8268e5f24db6149b0bf1fe439e223809cd42ba985e26dad4edc76fcfc7b728c6f34e825dc2f8dd6a6b9df96bb0bf703a879739abe6dcdb7cce0b88ed857ac7d8e3d4365fbac3efc78c5356b271c4f14f76bf958dade7c3562fd65e72109caa738581c5fb718071fc935d7f23f0067bf4773a6057cf86080f3fd21f7fcae9dc706e6574779f61fcca7320ef58ebe10dc72e0e48138bc11e5ab5ec6d7c1327ffeb2f4cf35dbee0fbeb12f571bc7de25bd6c9918837f636fcaed7d36afddf9210a90fc004cea839c2b0f3af2c45b0eef2f5007f09227d5cf7c6d14053a77eb6a70253259aec9b3a536694d1e6068c755798983c5be25d754c81be5bef7df595ba96fffee7991e654a70fbdd7689f8afebec69981bf497d44f799aae76a9e91f42683efb995115d367b5a5ff7d59d03beed028d6b3aa67ac92d8f8ce298380bf92c0146b9f70a7bfcb9439fb920b90b7d1ae1399a6ca3b6df588e02e6d2a3fe4fff9c8e174837e86c2cb38ac239e4ed2795ddd9409d49b7cc9ce21adb22f64571c3fe1ab91683f65b9f5304382354bfc5b9120ee4e956829f19785ab2700ebe35d023c83e20f864b49f64ed495d0ce79281f9e2fcb0c343aacc4de36c0bf3aac6adf09d8df613ecef8f8d539ee26725bee6fcd4c6d0d0dad31a263a57e8db51d02d493c14ec097dac8cc93ec8477f95db1f004f8be5398933e87955f9b40afc04f065acee7943fce321ba0730c65681734f002fbf17853bac1393f839c1b8bfccb67d228fc43c073676e8eb6c4ff62899cf5fe35b8ec7d93f24bd794789e7f760be96742e04acbe25c8b131ecafb17f839c3a1c0f78e033523e843aca460c27aeec536aac593ef1776c1498735c0776881b316ca16d1e63fec3b50a41f74563f63996a395eea7cb7e27e9dcaf99e1d70bc0aece8f9a98338bfd8b3a922c3f44ddf3376d2f63704ec77e270ebc553646f3cdfbacf1814b325a9887cb976d69721994796de883c26fbf2113cb878f79e704dde2133bc93eed49ad3560d365ce82fc7fbe0f97fd23700d8e06d514e9f723be86629bd3e5f07f681e4f2326e8940f41cff897e43eea0bd7d705cc80e6da69ce3ae43b1bdd1b928951752f679423b8ecfc701dfb91a2769748f7f3faf82cd9a7cc803ce222abec6382e757a925cd0fb27e2cccf9f34fc9b654ed0db4e7913c9f8ce253d2cb9c4d58cc63ff0cf563b3a07b4c7bf363526519be3fb8ed29d4171e651ba5bf63b575686fb2e73c59476eda2620c771ed29af559f6d07ca6ffc8cf1baf3b63569b4c3ebfeb81e21acfdff85de90713f06b9db35320dc7d83f917d440f3c644ef734a9b5f93ca538df7a8caa1cc972c20b56e2da8cd03f46c6b94cb7c303aeebc3b586388fc47c44418c6c6b7617a5866dc44bf39e056507fd9e18ddd27526fdccf11f74beb0ef67d2c53980f49ef99db3c1f249aeb37ab8f3aafb35ebc4c7f751b7c458a9c37312948f143899bb0d8ead5965a3dff649e5efd6c6fd8a6d0eb8c71e99e3dfa8bf19f3c9107dbbc67e69c27f54ba4cc7c318b8ee787e4a7a1ef82a415ff6190f16db57a963d718ab95d5a31e304f9bf7b65a729b11dd1199e37f648ebf633e9c861dd37aa6e1fe66779785b98ad09956f6ef2e0ebd32ea79656cffc61a04e053cd5eb7268ea5f3b37584bc6f2c97e99cb79d3169efa2be213d80c47ca94ea6abb7fd4d9f45ff1fde6fd2779fd13c6450ff8631481bf73eaecb875a8b75cfeb278eb6ad3f35b60bf7a561d924f1bde9c6b309e7184f64cddb10c7a4f9bd6d5c345e8bed91862e23c926de86e28f81f91f4fbaa8bfb26f56730f921c8a4d3857f690f42c3d93c0dd983e0ed799a160bc9278f066ffc2fe3d034ca0351aff230bfcc7ec913fe658de69d7503c47b33daffdc69894c37d5c81ffa5c5a6863aded6fc248d0f97cc35f65dc0797386cc6fbb26f201d73913ec6507e7904524e790f487b70d9ca6d96103fbd1dea6c6e09441cc8c8e0b6a16d13c0a7953a46602dbab80b91b55f72b3d7b8a1f83cc1baee307be3d78f6a4bba7700e5a38770073bc1a3c61ce51dbd80419c6b8de0367be1903ef5d53e79e55e52532eeddd8f11f532bab683b0c1f9ce421d09c712c4b87832fee518e390b76ed3a9f6a7c6e9c8384d5fd574827c53956e9c9b532d0c326dd8e98e3a6e82385d2b7ddd17dbee52f5613c39ee023b5ec4bc63185ed5962ef134e35f4bf4b623c9de3b03844a1ffc89c12ddbbdb2c5ce49101b568b4cefd0cf7015aefa08bd6f379dd7dc118a634bfb1c67537747fa3ef500c2c824980fd0218b7799b38838f4ddd17ee60f18c7a805901b53bdbfe39e91d8f89732f482e5b996cbbfe9ae6b475b332da0e507fae0bf11bdd01f9c6fc183b80e15dbd07f0f7cec6f17f45ba6755fc5b67fe48eb7e27adec4b6ac4d7b4ea50fffe2531fae5a4063f235a830be01cf54c7417429ca9ed39f6dd2dae2998f44c747e3ae49964d213e2484bd82f80399ec25d8ed627cba4fd8dfbd8db402e585124555662b9671ed30eaf63043f506ffe98ed333497cf60ef1b0c8fabda04f74e1cba7bec5f2b1f5e55d671105fdfb1cf02fa1e57e52973fc1ae3aec177e97bca78651f8690bf2dedc72fb07235e7537e5ff13f48985ffafc712a6b89dc1c656536a67144a47bcdcbb4b7c8e1ce0ce71d242b5367f0d8606ef43216f53f5e1b0e9c9aa00f04de3e5e9ac03f25e0ad30ce028a1bc7db9f3c08a6cb475a0d1e29e0f70e7a29d4824eba710fe288dfca7903fd43b903747632f61db2d8cf408973c9f63daf2f57ee63fa1ef086bc29f7d21732b3d116da5fc7b48bf1cf847b5cbdefb02c75b43ad241bdffa6cbfe2de9cd8fa40e899c3588991fa33a15e3f5ea77a83c5da77bbf6ccea9daff9d7a774bd8c3f43de8bbd590f3cd31129d81dc17982354b1d99a6325e33326d778bcdbff9bf3a4f7dd7e192f6ccc291d8724a33b98b34fdea782ddfff8769d069a57c85f598405927b7562741742cec141cc0dd3f8c190dcbda6f47ec6b99cb2bf48c9457bfbe8505cfca7493dfce15a597fa2e92fcd87020cef51b7c89cfc9204f693266fe88c73a6489d72d53d261fba1c45cc65caeb99716e79334681be0935ea67f4dc2ab09f6616fe06c48902bbb319758fc956f541e03e7edbf780f3d48fc9b6406d9f28a600fa5614e61a9e1fd47e318fc2fc90e07c23d2bff23255de6df3317afb49991ac56a1378e58ad7042b76545cc7e1fcb036ca5dbc26986fd6f77da949e0d7b1e12fa2c0031c01fa9de9d82c62c73b2655466b299a631cb1ef513c2f8cb9edb4f52b3fce2cf3d6f896261ff993fdefa495ffd8d8a0efd0bee9f29e790e8233b8bd6e8737cec53d21391ec2df688ef0ea90bfb09a379c9f8c9e0b195ffc377def617143f7a6ef0cdc289ca37d7913d6fdaf382c1f9a3ec3df67fb49198ffd8f7829d7986e1cfbb119758bd4a2f54642ed09fd4da80d21981e1a5bac285203edcd21cfbb1a9f076dfbb099e724dadf4fd70ce90de397abfed9369f23c967b22725c7b0047bfc3233bc6bb2ec7633a73ca5f5a0913fa4b3f18578dc676d09186b6dfd52ef3d79acb13338cf42bfb309ee0f7cfed4e7dbdaed22fdd77c473a27eadf37e713721877f613e6231c9cc51c77dd3c409c10ea43a4fc363a7ec82ddd044f3affc6390e27fbd86f9c7b793e7b74ecdd32adb272edd8bbd841775c53f6f0f123d96a5f62dbbb2ed91e6e19b3e6dce8c6f95ee3b339b3cc1a72b220ef5393830d350d80c70cb50a3c5793ee0fff9205dd47cb371af91ecdf7a5fda5f54561df85ff489cf29259dddd269c17d83f0871c633fa3be4a5e0ef5e93eae7390bfa503f3f0b08c7543807bd8bd66934e71df0ae84fb4af74cc164ef8c61b7317f04fb0d6407c335a6fb21653614974969fe56f3f7a66df701c9e144722dea79321783b09f5fb7b44f7d218fd263dc0980e941c7f468dcb72dfbb1605c8decdd7a58603db2df4d8249992ae340dfd1cb6f361727d79914a9e10bba97f72098d4030dce4a9122fda5c678ff4aeeee2f929bbd4b82c16e13c4476407639cb885c2ff436af4043c7c3c5f628db68a4ddbe04bbaa663b0f344be24f63709bb3d9cd4492f13ea8a3b348ffc22f8d42ef8b9541c13a94599509be921bedb1c67bff1bcd48fc69d42ecb291ba068b03fd86a4074b361e92a5cc97f4a92eddfcee4eceb9eec680e91c19f609e7a7e3dc54aa5fc871d8465f69ada7d82670eebd2dd5b67fe61383e49e5a69feba1dee494eeb5ee56669ac19c4ecedc6fceaec1d6dbe53530f44fdeb24ddc6df0f49cf04d993d67d9d9c11c789cf437742dbd3e408db755a0d7a9e6463b3f7cf9b00d763434e105abf9ada743be00a423a1fc4751cbfa2f957cc46016cdb21fa6e81ee636a8bbe2f410eb01ab7d72db95ba4f7fd4b3cf28e7115a1f7a9bc829cecb446ff8fb16923c34f12c7bf844b5a8723c8bfbd506fe59fa10fe172787691ee3b36cb7447748af13c81b1753bf9acf92dbaa6f83b723d34d4fd784e5961fc94df6a571a0379aeb9769d165f49431f2ac8f30ddc03ca0f7144fb748d391aa0ae1fadbbea8f00bc03cd3a93fdaefa662eb4dd25c9e78673f03c446bdad2fffe47e294488e879bc0eb6c709c13f6d08bb4fef312b0ce4aefba56eae8e2a0bf23737e759f5d3ab77546f6cbac1ed6a4de670edca2e3793765fc7f78dcaee35de3707e99f416b8ceb88a4f492fa57154bc8e5bf3c8f156a1c6039d53cc9985f612cd9f7006dd6c8ceca4b5188ba56d6c931ec6c41771ba91ad0ab25abd47ed333b7332671cb1f99df9690398c0f3e37bb5466317ceb847cfc2b9294fbc2409ec27c010b0a57df681d60fd7339a746d56c00763fdcc5fb6c3339db335eedf290efa19f9edafb67512f79ec88746f5e6a9d3c5b542645ea98d4ed66d9156be816b02cd6d5af9c5c6003fffe31d72f5f27ce394fb8d73873d07f26ffb7491b18d4097976517d565daee47ff7ca1bcb8c019d4ae2f606c84e52d0fb16fab9c88756f1dc0a1dd0506ef03e662a59c5f9fbf37abc89c52396289efa2f520bf6f3f6f87e1a1a9715182074d70ff6b454f22728a61f8d7b33d91ab029e3ebf8384e7aac10df4b0fd8ba477f167bd52d471847b8cfbc1457e4a8d5e141aec1b3b2197ae89e1df2598c7213d875d724e3a18d75fd70ecbbd2498e1cdef73de37eeef95ebb048eee9a23b5fb9e3391ad747e60c6a21cf50ce9d6edcbfdc678a394925dfb22ae3c5bb91cd21bfb3dc4b1afa65ba2f57688c51cfbba65bfd3d21c5a92cbbf18c849b44fd281f228f70d3679d8e27d7c8f01fb0befbe8b2da0d469e3fb0576584e33bf66d8b9e89c73ed6dfcbdb56f2b5e0be686a011a3a8b82530c3876d704e9cfb086ee21a8b30599931fc0f584d73675851c24d7e976215e53adf328785273fbf3a9d3bf6616606caefc1ddf17d3e513e404face4fa823847a317b1e7835b547a0e611d9e247c0c1df421b6aae0ac6191c67c08d81fa80da8ac1e70a7e647c0f611be002f1de6a704cb6f9deb5d2e374f5f95ab881980b4ece73c5e3f1906700e7e4d63877520e31c9cf4eab016065ccd09dbeedbfae3a9e1d76fc577f8b6dbed09aa0677659c0f8fcffc91af1baddf29e4e7a2f79c473097269dd681eb5c5b1d2598d7e7dcb271c9fe38b396ce000a97119ddb923ebcdf52ba996678f658386c3e18c7398bbe8efa5eb505fd1e092d4dd6eb2f71f71b0382784739fd455eb7de9648e13c2233431703f2684bf240efae013899f0f39c658c47f4fc157b9fee15ad919d96aecf9eae9071d0b96cd14777af183e3a2dca98fe09e058091fdc3b54f0c1b81ea98699d65a40dc6019f76caca437773cf7bbc42dc04fd160386578674f7ea7ecdea2c037bbf511f8c7d4e607b5822e604c5a1f8bafef4ffc427c9e2a15fb4a7c9d1febdfc515d1f75efb4b5df88ef7de52f6ee488b4e5b9fdebbeedf189c5aee43c35de16c4a4e8bb58af2c53e37e4cf68b73ec940fcc49d1c5b507c11d38c269fb33a37f9d85fe05cbe02e923fddc4f11f0226703781b587f808f85d887faf93f4207e079814f41c91bdd9f83bf597be6e877b5c339d621f12e0a608cf77ef975f24df664dc68ded196a6bbee42c3fd4e997c83e433231edf9479a2790f6fc6dea944f71407cb8c122275c14a53bf216eb6d1fe718d8c76b6274710e96615f5c677e8882fe1ef377ac73cf3697330be7f56cc2459e1a7e99842f148789eca711c33a279816905342f2be00d730011c5def08bcf1a46d829dfe90f25d1dfb86f9a927478c9d35ef467bf3f8eef8a7b4ee37f45bbc2f3ce68359eccbd1da760907939c17f62e7055495c9fe39dc04f25f9447a24aeda23399fe26fbb74ec92df9e2eb1e31b9b605eae61ceef4ba83182bc1c8c112de6e5f13cacfc873bc631d829fbff1c70c2d3b17b4476573c366b928b28c4da769af776adef897136e52e11fda9e72834d749179fed94f8555f94390c990fd8a3fe68cefdddc0cc31491b4c4795b84089af057c53cc6ffae15ee85db216ee1bc2c525fb2b99cd22fe5df4dbf2f322f485e617489c613c57e749e937cd6f10dbcd6ed9dafe88907e114e0a9affc06d23ddefe2fbf62e0a4d5c13278c3b0abc221d7b2a676a0d3e8591762cea6fb26f1bf707fb8995734238cf09cff9cfd67394b0fb7c97bf6e4deef7d7b637dc0b6773af6b77cad704d737b1f61b1c6f8fc998f3d0bdd47d897f4e38cbf839e01fa75cd2c33f885f8abceb49efe2f97ed9bd73bbf731dbefc439eff375c1cfa936e78b35fcc1bfbffb53c55a4ebbd077bed7aaa2483b835e5232dec2fe14f23f24797388c2790cf6329b171d5666be7f57386153a3dcc53e7c13c7d71bbfedb08fb937fc42be09fc9fc23ed5e00f7cd75749cf3ec7cd25638d03744f7acc6f333188bf6bc4fcf2f237c7d9311e7b07f06b618c22c5bf9836b8441bb95478df4bb56b54dea8f5939a77710e89a68668ca7c803ba10fcc866ac9b16de4835d4439e452be53c7ee6c82977d133b9a626750dffb709f1a73c0bca73edac943c640c6318e82cf796ffe9156835362e3b9959e17b052bf5b9b91f6bcec756b56496ff281ee79242f5cccdb776175d2c02147b9cfd6cd7986bca01cf595d437dadba41797540f817a9b5ac055a1f52ac8e6b6b97f83601e6872f49afbe275abc77c90fc13cafd0332c1192898dee663137865003e409aff72fa664d5b5fd24966ab4e636e02435c733373ad4e2edf977d72ae167f4af2cc3a0c5aeead3fdce751feba1d9e5ff43631f6ef88d86ff80c819cd18e1df0ba493e50fdcd1aa95292ed674176d2fa9044dcbb526ca78498d785c4efc4fe3cfdfeb825bb9fc45306c81ebf603b09ebff0cd798d6726d0b21fececef00fe823a9e9607941e2fd0f1c96fe05d618c969822f2ed4c7efd3b16f4606f8176b52bbdee062d6e8657feaf08d75fdfeb5bc35c638b386074d9bdc17def8ad9fe07b06e7496d1cfb112c877fb8567ac3398ee97e6699bfe8f7270ef97e79c67bc606cc5474d745e0d37d0cc1773ba9d3936b0f683c744771b2677b31d71d7cf85feae1d3e5f0a7fbece66fb599bae4fd046378126c3fc20dba379f807715feb6637f9bfab72df893ad09c9ebbf1799b37ec4d6f7de9f59c3db1473ba36e761bb6bc72e6fcd0924351525d5d96ff95433572f10af049ef0e6773f26fa7513fa1d5a2ec4c727b56edd9feaa007767184e31e44f7a94dc2a33eb9bddb78dedad6f2652bd749a07baced5b341f04db310afe05f667e07af3f005db801f6afeba92eff1b1b890d8cfe7f91c1f8b0b8b613ccea28ecd9e9da87206c77268ece112f7ccee22987fc468ad2a1b73480a7aa9eef7461c447986c8622331ca1dd279df6aaad31f3e7d4fd28785e7041b04f4573ab659c5659614b7919f17e33f45ecd8375c77d2d49fb13f12746861fef4df10fba7b13bc4d8926a0f7d694709fd6dfeaeda14187704ec8a4fde5338f4cd3a31e625d4c0047d63b6ebbf7923ff97b7ee07ae35426b87ce589d185e17db4dfdd4dd366ab5c8f9c0f708c386c77e0bbd6ef9a9df7f77c9c69302f8ee31fe2cb349281e45234ea4de59f6694fda40bade19fced3c0f9ee40fca39f1336bb8c7fedb2c9beda1ee45e6101c0bb6510b974b5bbf6748bf74fca795111d523e3f723e904572de5a62139961d7c9b648265d324f1f87dc73fc0e929771b020713e7c6f90ba9e87eb20d963435d7a140286e045e46e8d916eed0c907d05326dd299afd635e3c305def0d72dbf8fe03ea3bcdf7bef9a525ef03dc97f229ce1d49748ff1be6157ca230e729da83a18363551ef37fe23e85d6e483ee177adf23192fc4bed3d0ca1eae63f2331cf0383060a53a368c0bc75930a756120caea0b78b6bb47f39b980a53a29936060e03ef88f7829cf81549b3f427384e360e2bee7185b44363a03ca3bc77c4eb1500f1e6fcd2bf81de5353b26558af762cf2c22a3ecbc2339b73501a733ee617fda2c407b625013beb0f2ddb1cfa9732f75f3eb1b803783e614e9c73bc6b9d7de37ccff37ceea28c4bf719c7ffbe23ae525a91a312cea5bfd888227744f1bc0fbb4df917d299e6169bc654c6a77a3a07f043f39c8ada77db8ecff2731cacbd44af349bd13ecf3ae529b43b0b78dee3931faf47e055db025e714c9244bc50f673249f2d771bf0bb563849c555d9cbbf13cd83dcf0796eb91623e69e647e4f5081a3be0e3a0bd77059fa9c8ad41646a23ffe2d28c7f715e19292f90f691ead94c260f07ad7a1e9b37aae7f1b9709d6e91da802309edb5e60b6b74459daf237d1c7e2ba7b4c587fa83f599e789a031d780cddf937c6d5cc6ac0ef9377da0ccffcde69bd7831ea74b7d5ddd27e3a2b1dcefad5945f2ca5aecc05fc021ae7f07e73e497ef60607d014ebeaea793bc9f7963817edfb92e410287e77229b3f2066cc6af627b5de47fd8a71d51e524eb43aff68df28ba9978e7322e472653689fed4e369e1ca3bddf89437e66bf33b751e875d2aadca2be4b6782cfd33e86f5edd2dfcea29c9a087b5dfc7b28f0d4117cb17f2796d8528b4be22b908f06b1418a9de5d33d42e384fe05be1d2c7e105d14ff7d0c76337e57c1182731f80aad75b35d12f74773b43ae4efbd6e9aec3b32bef33f8969fffb71d81b9c111237613516e46faf04e3aea55e80e632686383641f0871c0661e1cc78c146b0138eed21739735fdb8f63e28b55ec46ead395642df99b6a1f0a7fff965da86b5bb6b7fc07e4872a76561c424eea49d6d1719eaa6a57b1bf7fd39e22cf2b710a8cb9d3f0dd6b6a27983f5fcedf267e6e9137c494f826982c2073427dae72fef65abc8fd536e56f8b770f6953ba579adf4167d78e82f941c18b7f44bdc93571eebcd65bcad153fa61f58bd8f1ec0cf00deec7b4e795489f9c5a1969e7b69f590266efb2dfc53ce2686c26e80d59b516f4c14ec33785f5a14999428eb968af3219d0d607babebfd1071d1e83383f7903435f37dfae652af3e83d66557c4d777e1119b9628baa73dae0b753d704e99de7a417971ece697ad984c86eec97e936677119a4d30b72e442b9e567821ce3b969e2dc2b1c93d8374ce752d90f6c0dea38e85eb3caff97d641b00d56ffad1c379c2bbe02ae64ff8274b8dfc877a39c1ae43e8d2f48b711ee882ad9c25e1a7c95ffa6bb3359ecd7c8b96dc4737b984f84d427d37a69e213a17de235d3d49f829ff7aee9f301701a70be5b06dffd2657c05b4ae210ff805ba18e43fcdf536b00b19f5f640cbf689fc37b27e90daf717d93eab6a750b73f3f885c85a24f07eaacedf3390abd8f8de3ef42c6fbbd63b5e1dab9253539680e91dd2dec831dfa1b92e7e97eb1a7fac0b770507a543ff68328841c247437ff0e1e8438a717ceef9d5f717fbc9fa87f33233d293c9f6cfc7aac2fa82f4f90fd1e194519b3ba8ecef77926717d1fe8ed80a345eb84704da706eb15eede9ae6e708786260df834d06f52cb44e6582710356adfc133d88d33f03b737b251f17f736c001abbfc013c34bdc5857247f0dc277c0ec8fb1d919382e5dd9177698e28fd9de7dfe131cd2a7a96546c02fabbc28bc1bf8beba4e57c2c1c8374060d5c83af75e981a8d3fc267627e588a0baa3c23721e779e870d5a57a1072a7bd500eb9cc282fb3bd59c4861f515b4fce2dc1f79aefe07c02e1f958795e93ff46fa3c223252feef93aa27f98039c1fab84e7aa67817693016c01e3d2655f64cf244967abc8fb633f17f82ed2aac49b622fa592bb6e49aeaeb3cf7f63bf25f69ff6e45e124d2613ca1fb7c1944f99b537492e0f63f2077005713fcd6e4bc9ac0c9846be4bc431490bcd2717c8cc3ec46b8bf3b1bc7bf104c70b42f4e89656e092e29b20b8f4935bfa67b8255510d6ad79eac57987713e7be325fc028476d44fbc97563f817cc3b8cdb8d00b70ff3df27956fc4a18bee931de0c6edfd3d3a97649e1f496d9ee270b147e3497bb036ec5b1bfcf74b02185ec0dbf0c882f5c51dedf2d81940ed2060d554a73c0afafdc4407a0dfe1e60b719e07779d01c25f04d3fdf010ff7ad64632e927dd98bc2dd85d5138ea0eee181f1f2b2431c4e4ae237c63c8ef44c3813c839e5392ff382d59f38e523edf9a530d6fcc5c17ccdec3b64bea6c856aa9f720ff0c686f5cbf3a83fb3cc89b71add6796b98a82b848abdd5183f5dd2aef5b73a2245c6c2c335deb94ebf6b38c8329c901bd1cfd3c7ffdaac720ff3e860fe0ebcbfabd066f12d694634d8eb302d914ee18ed03efea82ce33ffcb7586e7776788f6cd0efe1d609b74c37cf1100fe8c538679ad5d2e9c740f3ec9af85c42ffa45836afad005f444b2e3f60365689436b3fa81f83d6cb6611f635e87166c5e75ade8fbff97edce4dc1e5e215fbe77a7b2ff277efe5ebc87f7c326f07671f0749dedbd32859a795ee33bad85f17777ca7fe76d18bfeada37f6d65ab1dddb6a21d632e6b27a4748d8b76d6dfc0ece3f3f23e543eda38217def85de25a2aef97d8288d3878ca23c289c8f7d74de4e20059b509197f1a92f3d4cf90a7ccb771cbb3704879d78e696f01f5d304cff09aeee769b207ac4d921f989599c0ef0cd803ccae35afd467eeda58ae25c81ec418d03d525b57324e66a13f896037864ebf93d4c06df811853ee1f9c031355adb9d1a6b360611d396c965eb9667c67a0f6d638e0cd4e73a5e763fa2e0fe91059023046d858ee44712e6337b887962b3f27ef92e5f318cc76ef8a10ee25ae1b951f2f8795c11e905683e98bea2e49fe1b595fd89a21d477fcf836e832b5dd211d53c5a75ff8977c0ab8ce76b01ff0070b337da1abc2d8787a93d60f6cb44e53603de6b81a74e192fc1af2778e5c33f041fe50ff7d376fb80c72bfb1933cc492a636336fc77e2f8288f3ce45fb1b1fecc835e764cca0ee0be4686dd9942db7d6313cebb5170073e3622b300ff355cdeb4f7963a6753c8ef52fd5b68ace76cba1cfe68fc2662358cfd5b0c1cf4d8bf057e61d85fdc8f4ac7d3b0039df2b1a806bb77f8beda8e96f70174c424348bcc29c1af1419f629b13b3f785b6607dd9b696d76d3daec44e1641f870bae6f2eb5f5b7a067e1bd2af743e004867dadeed1b42e1a727b3af68ab442f26ad78a3bf84fef01cdbaaa78ebeaef6db6c6dfe7b5189ff22666fabfc943a1ee492d77623231c03681dc8b08f6407a72adf443e000f982af05e36b53ae16d1dff29d3dc8f8f657873c023b013826aef17887ed94e0de8b42e04a31a2a03c41cccb6ff061b471355e604c6abc148fbd9d2b0f705b9b773a1fab163f9e631febf0e3b532ba89734efc08dff74381afc45b278a1d817d2b4d1ea5d638303c2fe431505f2bf1c5f01a3f52a749ffcefd3d048b88f9752067b5c53745f3d88476867fa97eaaa64f4eac61e6f6f1ef60e6810ec878ea5b7c18366ffbbbbe0bfcdc277e0b9b8cad29475a64a3d456cb337fa71e1bfad5c0236a916f3abf4b437fd7d9abadf5cc0d1bacd1b76fd5467f8343f0b77938fe57fd5cf2396fda40d29da66b83e350c87de17fff5fe04a01dfadef0cdae78263776a9f6d59bb7314e627d7d1e01ef3f6ce187f99bdafe4a8a335c0b97d6d6bd68ebb2ee1bab5fb621ad86edc2f8deb4099df1cd9c20227116dc7bba69c5b93f9ba8577b91f87c703681dde8b507ba8f8d8a12688f745ffbe2bd52ec97e7c3476d12fdfd27fec7f93fab0273e39398621d70eca63a67108f4cde637687da2fcce933a47721f76bcff7b698e891d0d636da96d009f89b0ce1ee0d6ae809bd75bbf87a6c8237302dcb0d0bca173ce75fe469c0a8dff96a23dd4e5359c384f9fde35c009ad3d23580f50ef1c318604f5c21a7d45d7b7e11fdf3b1bda777fb4e9138a9ce7fdfe922f6f27e67e99906f6ddc8fe9d8049c04ea0f082d97e87b4fa29f0b62d082ec03aecc4de81d88afe463e3d87514cc3b713839a63def18d52670fb02ef89f09d29e41f17478cafba13bf01bf0b392f94cbb410fd08aee31de30afb1be87d4a3019f24dd03f664e59248ed9ceb9a3ee0fc9af20fb1378bf33965bc16c439d7fa2717f48f32f61d64541df4e8d79913a3eef13f8324ffb28983c12e3decd086723e54b6aeaff9ffa4bc5ba5b1d8628392b7e2d6277b9cebc4876fe2332ec5bbce67b93eae22abf8fc497579b3a9d467ae655e1cc53b8ab1a672a0e277a1c2781ab80c7d63575994679811c41a837863c3da283f7b3d76d3b0f565cd91f7130b926c6e98afdcc8363da9b77e3f0e5fab25adce7f6fdd2ccdf699e65811346cec5f94c9e59b27f4138cf1af9b6239cc622cfb0ba6fb9fc94e713b8461a5c4bba6f90ba6dccd5f45072191adc31dde2dd29cf59d0c9d1f7a325c506035921e095950f643fa406d8a0f92678cae3b15f925a8ccb3be42d77b731c660c4d82ec2bc31be40824df9cdb8a1200354fd02f0bf919c2ed2fdee4438a5895e62d7ef4b593e2480b9ae5b7352271df4775138e9531c099d3c99d4f49ed0b523ca0feccb127c395ba15f9a732dc9b8465e607bdf6f79d053c6ed7724df5e0cfcd81a594af13dd536bb27050b54788661926bcf4e1d075e3732949a2ac7fe88f0da7dae17585a3d53ba7f01637f8d79eb7de0df14388d2d9d3ec1799aa360feb11674cfb725e8d307318fc3e57d051d51c0682b22638e7573520705770bf07ec8b91e621be46f3c774df88d61d72bedd0bfcfc46f321d563b1ea61f2781fd44dba13865ea73c298987f833df34c6505e5bb116cb4116069cf376151c6b6d74fa5fbebf6c93e6375c51fca59a6f5f2140b56fa8deadc33cd6f22feb3704ec95c51ec0e659fe2396038d0ba768153a4a5afeffaf6443dbbf9ce52fb8e8081a2d385b91efecf7277fe777d126afc7c51d975d0f49968f33e7e337784c7199a36a624e33303e31c8bfd6b8de90047158d657fa18f4bf195f898f6fc22116c0f9e77d4fced55ee1fddef9097d16233e2fe518cebe70ee96b9b8d0af708d87e12a635d4e60e6fa406e275f171e0dc89c6d33eb3cc47169ad0478acdb6590f56eef36de03e8fead9d69cd01ad28de1f7a36a50a4d502ec8da46796c9f626634ff31c13a80f8c005765f2887a7e8ddacf802f7272890127cf3c66429ecd22b83f200e8a737e1a38df11d4687994cf919de108e76492f30e58a7347f04c632b3cc32ab7c9eeb827457a7045d06e7b00c6e31f03ecdf16f24476543b0baa3302e36c11df37a5832bea7889d1ab31a5d8f8d29737e36b1be395624c70b35e6751c409ed235a9cd320a27a7f7a582df5b958f2cb04fdc072be5b1123ff170a0db9bd4f7c0ef20413eea9ea7f2f399f06d021fa04970fc17b9d0877ceadc8f1b639d2f8c02dd0de56bcde73f760625cb67a2bca2cebd3f15f9ae47e5c51dcd0f4866c4103b5c305d1ad7a7626e25771c97e97e8764fd3535d630b72fd6f030ad7f9ea79cf3937105a5dc7e17393acb743fb9a6fb17416f8d4f896177887e4ab0d6097fc8fe05ef0b88e3f74bd8c30eb28f8b32324e798aee59a37cd078391b933d2fe2caae374b7abff681473cd9fbe7a8f26b7cbe862777ecc39a26e89c5ac3f3cbd2ece17c35c84b3bcc42c04594b9a9477119419b7ccf613b1bf629e018ba4ef71a55e0232e93d03f11bc16a8ad063e9aadf9bc41ba72b0be8831a715c6af2ca2fdcb016459857d213e9159b3dad4c47dfbc8f63cc58085d3bef7a6cbe14ff15b2fd6d3ede5d916d7c68982fb29aaec8f4d8d63a35093be030c64b2a7cad4dd9addd4f0eb4590610e19a916212f66dda7c3f4f9671191fdf8cbb12ff17872dd048be36cbbfb4f6ad855144e8e336377c91cff9159c5250ae3636cd89da4e742dd57bab3f70dfb95e2bd69cf0b891bb05c3119c34d737619dfb1cff40d5dcdb386f30cafc50f9ae3c7eb8ae9993de4cd7c65f43ce0c27c2b0f53ce292e3fcd6fd5e90b4d9fffbf8609fb654e9d5657a279c9a3499196f99779ad588ff9669b5fea3bb716fe73e037fc960fbf69af438e521d2f4d5c17e70c2a722fd21c0fe2ffe3f3ee82ad353a41be68003c769d98c461389f844f6c76d61ecbc145f76f522df2e8f90e3e85b78afa9c29dfc40bd4636d9c41bd41726bef158973eff3dc517b9ba0f6bfc905dbf499b6c4243ecb8df9384b39407f5fdfcb8e4929d6456a73de5bb867714cfe6d393c7c96efa4c405ae99d12fd31def2370a492ba70c0ae613836874ff3a890dd188f553c59a22bc01e2cb01eba9731f866965e3f9da1f526b94138efa14ff71cc13f1cfe80bb8d8ebbc6cfabed00ff8accfd23c63bc02e273a2f6d9feabc27b74547fca46ff4dd1cb8219bcfa97a353c27ef01a4b30fcfe85e64f9ef728ef0b7e5aba8e3837d68757b9ba0cfe485546ba0e0b0e9311cf15cff1adfc81edf5d62241fa86e40fc59e9de3b49dcd6e84e78109f8132a7e4ceffee3a225bba27c6b0fe97ee305e07b33ae4ef8427fbb76a8f6cd02308fede6fd59e3d52e77eccac7c3f5ba6c7e061672d79bb0dcc114d0c5ce50c6bb3d985faafa7e6bd25e46fb7c6b03fe1996cf6eb332e4b7d2e56e60c6e325723f35d511e47cc9564dd728c4bf365cec957fe00861bc4714eb4fc7b529e2bafa91738ba247e3d89e384d4d5f378a6845dc1d74d6857982b8957aab1d6e81db98dba0dab46e66c7edd62f92ff913843d80f99d448ccc9fb9ba4fbed326c56124189ac27cb1dc24c6bbc4e2da8cbb89e7b866cc6e18d6daf6978df6fb8df6b92f8f726f09b170e93771edaf22df20a9d3ec6d42ef63630d75fc7f42fed6bcc0f6e5e0f65a6ab0696ac03194f06cdf9f0fc29cdde5df560765be76fa3108f50abfc4da6b6752c781fd97888546ea8d582e9858672162d229b5e24faf1c3f49aa8f4076caab7c5e585e99b036142b59ac0b176d1dcc9bf5380b36199e4b5a13f91bfd94fb6235faa2e4c5f1b966ebe0fff67c623fee6facb9bcaeb9bcae7be56ee3f34cd72016e663f02acc41b49f94517012b153d97df60ffa7792709b49bda878f69afd5138231d7e3f00c75993bff38faf39918b6d43ce2d873f08cf9582fd2d7ccf1ae9b8b0705ccfc1fa73c2eeba17ca69db87789d9551dd12e3b9f6049ce992d58132f920ca5405bbe103f59dd57c97d2dab23d1d18bcdf120fdb789ef03ece0137793a96382345ae3b4196329e3d24e78eaff279699e3bbea7cba412cf9d88d9a4f445c47bef9ecf8c3fb5dbc9a7f5f020eea5c0b89749d901b98ec6c0ec1689ab6fa7e08437cf9d765fb7fb402499aed3bb5af2d1bee294697baf4d2753e3d15f73d62831a1bf199fd1b5fdddfa5e8dce24f92d34bfebf43d6d8e93a497824fc0f6ae5fe6768e4fda7c9d99652a3837024f18d72d71ac96603f207b4e952950eb25f8a955ce9e38e87793f0a5c53723e670347c34bbc4e89c29e70fc751f1dfe2adce67d4c65f2dcd7f1b47bbae7f483f2e920aad03e3fb976d834fb8d6ff4dcef22ffd38c43fbde231108a6f7412b0a5983cc7329ffd5dc16a127534e199a5f9e7af06ae9bca0329615989babc88f9d4d0eb45de63e1b74f6d81d6f61ab8533a1c4a058b78dcc22923e1154b792b226ed645cc8d11f5349e8702b5b86d6da9d85dda3c1505374b68bba5bf8d1c1db90fb3bdfabb8cf7f7d9bbbab61b98cf824c6860281b039ac7aece9996537401f126156bacaffcee3fc97c40ec4e7f4e8c7e270e8b769ed111e46f969ab56078aeaf2d7ca7a46f6d632892f1276b50d9279aa78ff6828cb57d17e7a881b7adb6abce7f5cd927641328fd56de6bdb3b8ca7bf713e192fb984054a646eadee13a19d16ce1ef11cd3b625cc91863c077f6a8bac2f386711ef13f0564e0c126bdc024739fb16d25375727ccafb7e6afa16bc8792b78ae655da67eade7a1f53d9c43060ff90ed82e10ff6db875c0bc09e597fc90f2bdee97f3679ba38ff561b7eae94cf26e6bf6a30c60343debfe0e745fb969d47646f34cf615bce9baccb30ec0325a7a710eb6ad43c5b8187f820e7ff936f0bfac6cf5fedfae0e75883cb2ff3215bfc63be5ca742f2675a73e0f56b2f734135b18807023f02e7e212b1b8f81e916dd3b5a46f3299c679940fb99eafcd7c64e3499139fefe7dd586332bdde13f249f2fc65f1bc87100cab92febc0b4aea251a3d08aa72cf1c69c9a5cfe2f47398e24ec5775adbe75a6f5fd7efd641f90bc218ad56b60dc0f8ed121e08b73dd80d46ab07c9be7619ef4dc3ca9fc7d14328e06a845d850cc1e2947186c0c99bb9ed71cbc69fd46048f4bb027e45aaabd774d2dc99ed6fdfe5793c31ee703f2f804c7c513e65cb219594ea7d569ef0faf47d27e93d939b65253da2a93683d54a7b55f381754ff3dfc5bb31eb5ad2d6d5e6647ffcc54b8d3580d2de5116018650dbfed280abd42bc0f3478d9e4d905898f73ce0ccc213ac13c9e0e9aa7459e18fdd3fb926379b01c2ebe27a47cab6f9ca96aa2f4b7959f4ee4d31fa1f1d88984f5ccf371b9dd67f8fdb42e384e4c87cb8556bc50e75cbe2b392bc46fd74dc6de3175ee6023043d6e37631f723713b92bd0b7695d3af00c221dc0eadc5f1bed125fdbd24c481ce85bed4d7a3be287cbf7629bba731e18e7f2ddefe03825b94b0283facf0e7912faa7cc296fc97827f26bb4d693ebbed1e24f6ac1ab6ce71116701bbf13dbfb3c4ec87341b4cfb6c6fbbec68e947d4a3d895ffa466a904a3166f4e5779b767ecb370847de48c079d2b4c730c2d776377306dfe83bd32bcc2cf4ae5ff5f7bd66b19313e5f426389da24f89c62f810ff9f76be585b85cfbba8af15db24f4eff269ead9a476d13df51198fe22271eec03722fbcdf43171ec9bd1c6ae152c526cf3616ee92feabf647fcd557fde18a727db9b9fc448d59cfae4efe1a9def2447f964f6a5fdacec9d469e9afdf69a9af8d4f9b70f8b771e13fc57a973815703d3b8f71c37f7f9363c44e0003d9ef5cc2defcaf4d38d461e96af19744ff8614a791f8bd78dc44f23940beed79ce6212aa3d2fc7a5be85392ff4e1331f098b7509be06f6774d1f4df11d99d3ecdea17dff260fd9291b35faf7481dff03f4a0c0e3f9b25de10c8cd5396d3be712a7b5e857117c71dcd7d0ea3f74bef437aa7e35e51b9ff8fb1cd58e6facc3d73e233857263ff7b5c28757dd8fa9981324fb872ba4dffa124ea2baf79aed7f6f7dd5f7e471a3bb310ebcc67da6f8b22f680f24bdac8c47ea5d89f51a2643883d9d56fe6e2df3a8721d5befef16f5f3469c85fb0ad45870712331c33a0e3c51863670d5746d6a62cb30af6de390eb1d6dc02a8d8cb3341f78ac0c2775e7b53d07fc73c531ed3473777e8d6fb91b286b071c8d3ff3c0f8f49ec276f67e52c6b638ae32039f90e1773ce2effbe46c1fdac6aff8fd6eeab8835ecbf76d01dbcd699315bb0bfa5e16cc4b8513a2888c97933b6ec9a5e1f7307a4ef8ceefea11c33f04df51e34cb0fbca9262f5ed7e1dc91fcfe5cbebd6d4c72f543f1ae4f40cae6d3e72e6e37d1c047faff8cde6fe01beea86acf9a64c781cf2cfe4806017e5af32363ce3b69801765fab7fb0dd3f2be405e8fc7fcc67cae25de0dfe19c631f92cf15b06ad34eb7006e75a75f66b5398fc2e141f685758b8de1f333d221ef411e0cf0b988e3a836e1e4918de2633606bfc727b978de23789819cfb98dafe916e783b80eada5338feef34dcab34bebfe290efafbccc9ff749ddd5fd3bac19da9c609e56f1a6526e64590bcf6df92b5ea9aca7e88f2b1c6b8ff523e29a9af16ffa63d83c436fa536dd3affc3a73ca8f28b87de903088dc6796ff062e276ef042b5369bf1eee493e21f61d182dfcfc827f12e6ebb318b4c45722e66f1ea4f595f43caec7fc10658774fe15d9f0ba6de84012f79ca4c700ffdcbded591e8bdaf27f37fc1e9694af25ca99d526c0bcc39b701e60decb790178a36d7ba4a6b9bdc31fc40f893175ba38074ab273713e3da9693fe49998bf6e71be1e9eef04b280e636fd8fec13a77f97fd59a0b79782be56ce8f31b68d3ee318817c26c956334ace3b6009b628f76d9da45cf17fe93b929c035df29c35796ef1ef3c77fb45e58b25eff76f59383f4c853d1f749b72235c0e7f02c6e427dcfaaafda2e6bd6d90ddd17bb9a463ffb1b104bf24c9156b8cd9efe46fcf9dfcc5ba893eb704ededf667f5eb21ce495af74bf4edf76521f83668ff4f0a0711afad87fe3ff8f8d5da3e825de06c42af83b129141db9a16bb2fdf857bce67ad302cf23e85c24d6adcf916dae0399e339baef808b5ff66ddca88df968f018e2da9073149c4b41a77d266b26ce09e02ebd54d0ef3ef6917b656a94509fbd099ef2d4189ce325ce734cebe76d3e79c9d3ca7fc4815d47469e03577d3891f32f495debca88e937d139d1d94e7fb8cf2ff9eb7678d7dc77a7c4c0f870a24f3b34eed7a4373c8486c299cceef6afd70b63faf4778aeeaaf573c9fe6de19c4aba497f1f878abeba92f32f9573a59ca7a18219c4f6f62371ca8f7899a37bf4d766b9bbc421d43dab5844f0bcae4d09d3039f89c633e23d21e65ce27f778e4a8e268e87546527c3b93f7a5d9fd8cb5fe85adaf552f25959ff436b82cf0bc9a963fd6738b61d31471af885a724f76b03be09925bb11b54f45cbed6f0dbff20bdc3b507c7d9b2a3db57bfd0da601f0edf7fba79097b9392daa6627fa74bdd596fe78395ea363027fb677329fadd68bec53931bc635c9565ba9f433c2a30fa4512f8d9ac1c3c364689b971c6936ebc6abcabeaa79f7dbbc9498be44308ef81af4dc81d1ffc9bf9862db541049719fc983f5c2b03b9f31b7c6c707fb1e7aba71fc4174b39d2ca34f48f688ccb20b6d1dd087cb7f6694fe351936e87f0a601dfed0f616d7ea5c6f99822fb1eee029fc9ed5fab53a396ba356660a8756b2db5582dbee814f805149b61acd8ede3973cc2b8d127f9dd46fe6b89e4bd1e43b719df91c7f1bdf88fdec669d4597f16134b93edcfffbc7ea0352f6ff1d27c63fa0abe5f216fd4b5cf422da5e413f9c164c7d61cbcd6c3ffccf0d9bf4e3f4e7fba63c03ecab94d913d56810de7ebbd36938de1f7018741ac6597e2bd078e0531eefce95a87ebefd4bd2d42bf934872b820e7f826f847590c01e48c181f10fd93e21d22c510c6677d0d88e0c394fdb177bd2d65a9f99d5ffb61be99c7aaf32b8b39819fd95c429e9dfcadeffa6bd4f7bef023cb7105e77ecd0c7f87d771a8f65bf95d3eb392ddd8fe5c332f53fda69af7e8d8a7c496db68e468ca6d883e16e3b7fc0a723e95da6f43b13ff57ae458b4cd1afd36f4713ee05a3d2663af4cb7b2fda0e5539474b42f6a8749dc49e83be34644b6b046feca799a646e1bbe7e797e2e71559e32c7afbfa7cb8af86eedfe41d14fa3f87f206783ca01954f98b529ef9b0bb2dbe31e601d0f546e8396771a3eb1a6df009df77999f65e2e71d03766bbfe9b37f27f79eb7e40f4a5d4dda367bc2ed693fba9bb95f5d3c8185c5263708a977d8c03b42d924997fa21011bab749dcfced59cd71e6ccd1d3a3b4935e850df2cc6c04c4fae954963996d4d3bd9cf01b307e7bb496315dba4fc9b14e74adc4f802d4b3981b83f78a1d83af839af1ad4aee33f45e86e76d627c00f86f1dcb680195b01aece365e029ece8e6078e271a067690e5a88fd3ce8fe9ed4b77cd2058ea2d4add03efa79267ca2a9bbc5fcbd7160ef66db2c9b55c7eb26783a4ceae17eaaf859d05e02bdd0f21cf43daf2a9f56819f6c823edc7168bca02386e89ef5b3d7ad09cfb9e37919075dc26b561459b5ced3f1e48a9e4d42863fdcc98c9f79144eea28dce559d0c7f7cef6e942f9ef357985b89eb1653fffadd807e03c9ec575cefe1ff1477ee1632c93eff8a0c3168c4921def027cfd3627e9af6fcb7decb71b69f23fd48b1854727d771b5324f5cdfc0b0a1de52fedb2493649b826ff45e933a3386d976cb29a626cd6ffc8dbab25d1c7a65d4f3b82e5ab7e49235f7086fafbc5f54ac1cf0a1ad597ea0c83d772258aa689fd631e6042f639e2b29e7f7e89f69afc36a7b5ef61d3e01e68ab01fdf5787fcc5166d787dae9e9adf2b8c8be0f7771a58f9b3a5794b2bcccf1d070cdbfa3113f638e3e815fca60cd395b7497172fe6a19a7c8edc27959c436799eef59e568019c03b4ef0113cfdf097597fd66deafd826f6c1cf960aaf80d5696bef89e7d9eaf28ecac722e8f7f11e8abb8973ef2f70de72198b7edebac98913f448ee1cc3bd55ce89ddb9607fa2a26b619fb82e4e2cfa951f9bc02b439d0eb2ef36cec1c6416d6a7140886dc4f3a2a8bc15f6e8250aba1017c1f9577df86f299e29c439db639a426c43573350b25a01ea778135847c0b5ccf25c5f075fbf88b9c68f68e203bda62ba6f1227a7c676d7c5d53579d1c02b2fd46eeca9deab8b072f82bb9427fab6d4c9456ecf0af7e949b9c3c0d7a4fd96b0560b9e832fcda14e6e8aefad14192ac7acf4b52e5e38ff8842b3946b5e8053ec184b352fb416038d4938db965c0f85fe5bb707e45878f9580bfd5ea27340f01036e1dc4cf625c4fcbcbd7f4ac625a945f77753b5be86d415f0becbd85c51385f90be511e84ddd7dfa0e3a4fc04fcde21f3f7a5ef52aef3f8a2cf8fc3976bcff1a45afbf6e393df98ccd884f3a570965cc2fffaa36d3d048cab22ed2aed0748c6ebfeee71ecc52df7b746a1d749ab729b855e29c80e7496780d49387f6c82ec321d9f07333ecf4536f6ea4d30e9668ecf7330b6c239b3b21d9aff59487feb8a67fbbc21e3993c0e6d73c0e66862803ff44ccfc72c60e345baa5764f89e799709f94a9713f26fbc53976ca478439212e71587466c1fd9854eb9cfa1f6746ff3a0b7dc0f08cad2eda53ddc4f11f54efd7d5ab933b0dcbfbed708fef1192efe8f817f81e5a1f9c57427cc2d077781ee2d1dbf44b5f31bb9b85f3cefdc6f105cd07dc774e7ff05aff26a6d8dfa815e0ba2de6b917f2dee5dcb1dfc1eb926aff4b8a8b602695b7da20590bf123ef1ad83bc9cf3023fc44697d63351eca1dfe8f726158ae61d04773dff158df209e9f509d1ee99432674b6bce4afe560fcf5017f33cfa53f18f221d036221b4e6978e89e2f009f3b4779f7ff231b7d60a12fd42b887a578b49cef47b93ec0ef44db96ec41e37c14eba891cc0c1e66263e13cb73449eb133014febaf8de04315dbfc35be311c72b99de141fc6f78cedae553f01dc465baf7469b9070cda9bcad802d03f518381fc5ee5c3680275ebcc55b2da610ab3712f00e7fb88e77a4dca032ce2d1f0f9141f9ab805908784a7c8c120ea1b0d705acdca68ecad619ef91fa0b3db5fe669e7f3dabb4d816b24efbe15e20777f75d6faf22772ad1af36bebf68fb09fe59c7a699f4b39f8c98b75cb5fec8eea5366357cc23cec58ed9f1cc36fe716a9e57c3cd9df38ff087a526c07744eb6cfd6f625b6f9dafbce200a96920c3935f47c86f524f07ac8b9aed4f77b72c767b97ed81ec0f826a4cd891a2b71487da0262e1c4a39a9c021f02b06bddf237b47c21c11ec53d8e35f3faff8773fb333c8bdcd756a3d3e57ab7ec7748f9d684f0fff7a5b9a4f7c4edbea504697667d3960070edc71a3f6ef5b3a26cc0bf601fd9bf5577ace61323ff83c1ef28941cfde3fd73b5eb76632e935e6764ff70e8e6f539ed3661c9ad7de717fce1735775cb76ee39c6cd6b6fffd3a27e0bc126a9c04990618f61cdfaae0fe76fb231bfb4562b15af66bb255eb80fb651c78926f19b0fe2b9fb59d8e2757f46c32dee59cabad5fc696798903b0c5d077f5fcfa36e3c6586f9cf281b9b4c0c77f4e7af30ec6f2283f5c35e70b305339cf441478ffc9c239f07544fb52e09a001e2f7e4e6ac0f98731e27d8bce817f2377f757f55d988fa789b32ac6c578def7b6e1cf9030bcb4780d2d381ffc4e9e77d2caeec441d647fb5de2d8e3369cec23d7c9ccffb23dd19453df3fe369e517319309602334e42e9e0b7c67227d45975bf289ae2fd4c1e238cfefd6b97e9ea721d747379f6de300f80c3ff293faeb4fb08e5bfbcfeaf23ee9377b469777033c84e8ac69df87989453b6e3333b763fe9f91a1eeca76b0cf137b13efb5ebc0783ee17f8842a9fe3571882dfe1b4fe776217dfc3b6966bd2bfca7b82fd12d771383f107f9e065f4f5e4f6f3f2953a3009f15e7756fe55b86bca824b03b9b51b778b76ec0d5e63af6c375ba45e614f34df0d48803d1ef25985385f55ba9c9d6f96bff8b35c03aec3cef2cd5dd8ab681be8616e7317764acd8d6fadf062e1ec842d54e10fad056e7c9ea6595fa576d1d2de9a3f44e5bedaf6acb5451707f7cb35ef7ffffb5b2bf57fb2bce51270ebd03f13b0aef7925d245d2adf80dfa3715878dfffd5b35b3634ddbbadf777a5b3673fcce46b88bc5b3a3fea6ee59cdefcabea05c1cedef88bea8e46fc540beaa556cec9f1f4d0c308e7ba58bf3733f7523de22ef215f838da5c7ba6fc1b6d7e15fee7e2fa74ca3efa9b191a6ce311cb896adc9d3826f2ab2ee6f60594bdf97e40bea3fafaf11300bf4f862523cfd77ece8ff6e0da77a066dc2df06b9e7e52d0e805ba8714e311622b71901b7bbf15cf1557c83f991851c856fdb0898c75df9a6c4e500be0729bfe11df84fd89942b6ca4d88b7f3dc0acb6ee8eeba3c4335e7b6a51e0c7ca79fd56c09f57face6af151f1d3070587ddf9fcd3a3856fb269d0f5833c07292ebfe483e404b5da78ad531dcbf2f53a8efa4b911937af8c3b532927fd1a8efe4b2bd7156644cf357b906f78cf434c83354d641c16bff4bccb720bfc11c0a394d944ffa09fb29151b4fc14f9f2da5bc062447b5ed810ce61879fc7ead8767e92c4a38ebc0b7a4aefb31d991f916f364b7523d2fd476aaf28162bbbf2ad89ce4ef8dfdf53eface775afaff7cc867614b3de88a704f1ae0bf28630bb0db8e49353f65683f63df4991ee27c81661be8ec8b04f518f731ea606f58dd8755a0d7aaee35d63c2ed191b03b12e0ee9ec907342da96fc38445f7b08f54678cdc2499df432ce7d27c85711a3133fa7ee65dc272e5f993e544db6646c1d015b15f3c4101e4eca8b86dbf064ce7e31ff8af03289724ae65a6ae462a9fdd361dd7ee2439a1864ae7b26baa78e69cf43fddf874b01f7fab7deebcbb8b82d36dcd452eb6cd5fe778f5806b58ccbc6e796d4a47ed55681f9a05bdb12ce39decbcb80e4ee4af8ba26c50e005eddd4e81689732f53d8cff645d9e7f4d913e624f5aec0613bce0a1af7237b593e2bd82f590177dc787e7caf30773fc1de2c1267de4d1cc2232570fe8a7a01f657cecf517067f6001a13f8279d7e095c44989b7017a3336b4479b4147554852b788b3982453d1872ecb6e6117fdf17c7239d45e01f86bc6b058b14d9e4e3ac4c9c5b3e45e7af7ecab3aaac89ef57c023c6f8a3aed3bf8a63a17c45498f732f4f9b75e1b0de2b926343fd3b53e0736dab6dbf513921cad263f37eea933b09f4662dfecc67329bf27188f7c88cee9d0ec8e973cb9938b7eb6d07f077c07851db781c2f71f0c4dbee324c51f085ccd8ddc5eed8200aee62dd21bb3f457b4b8f05f4b3fd8ec07c28f9b4c6df2718b57f496b649d689f170c8714dddbd6a961f3f9957d22be877314163046d4b6307f7fb5c881bfdae64f5963d2167d86f2e3eb71ac67159187565411dc39e5bd4287b54d6445037300e3b38e44db98cc1319ff1a3842f19cb7ea8a2def705e40a44b9a3f7f116e4a32f70d1f23e5195c41ee057f9ee60db03d42beb3e23148bc97969fdd41a30b8f45fffc0686aca78fb7fab21e87747b653de93e9f7f5fb744ba195b8333c785e563a0fb90e0eba2bdf026c5c92dd5d62277d117fa30daf3d299b33aedf32bd6b3637c81865f4fc1886038636a0eb22427b98ef387e03f3d201933b3a4f93c52d923c4db4faee6fd28cc0f685ce2fb519893f7eda7e94aaaabf87c8e9ef579d462fd39c48a95bdf1a6cd3b873cedabba766dd8163ccea0c1f0b5075c3759b6d85116700874921e7018603e33b9669d60317e65d3e59fd874fd46adbc980fa2b185982f35543012e8b8c8d9e1eda07d2a608684aa0da669230a73a58d8ed2061db39f69e7a4a7c9f1873345e33b85608f419dd66115949729eeff49388bc764bbc3fe6bbc77599ff8fe14dbb09fa6b8ff27f93cd336c8fe2d457cb14fe618c7c6757b513cab3b9cff40fd5378dfb7ccc1d9b507da3d2cfa295a65ac7f865828e64103d9fce77f091740176b21fe4eb34c2ae0a7ded1bc72f2f7dbc6b11f384703edc127fa7c957c1c725d4e27f9bd8e43bbbb092765da292b0f9dad9e87733358ae4796f15ccf6ff0d68e982ff110493242a8afd29c61156bfb6ff2a65d3fe383688d6d56835decb7f2a4bf268657322ee5cfda58e37895da1fe1b7561eafa5edcd57029f9a1ca71b40cd22ce031b54ad58ce5a7ef8af78df31ef735b9bff2e6f7ef9a07d633a9cd456f377890fcc26b96b7bca2f0fb93d18df8ad41901273cb247059edcb4c27e169a2bb309bd07cf2da23a6a1f73ca8fa436cf71605fd2da3c6696d989827309f92a7ba841fd888c4117b59f8d2745b29f57496f72867c9edaecc5c88685d82b89855bedb9186a9ddcc2189c193627e66c617af3aa370936e1a49305f689cf35cf4766f36621bb2c3ebe3bfe8ee93f583f627f576243623e9cf88c8c0fa5e025c7bafd41729e757b67da987715cbf11bbc2e9c0be12d2de363baf7ba5170b7f5bcf6e543b50116415feaeb269cbbfea8fb22f0eb5f153b40aea3217b54aef99038d6815b9ef9cc459e74c9efdee40196dbcca576783d22e63d95d75499d7917d91b97a86c5269c2bf68d67263b7e4e26db287783f2e155e5531c48f5f9185b4996650775cf4d97942b0ab8d8f7189f16dd9f45271b9b8fd7edcf6b8cf4ebb1bf9d55f36bb21c503be43f694dffed9e236350c7cbc131edcdbb71f8727d590d7baf2cded794115347277f541c2e2adf69bcac7f8d1d9f72d937c7f20906dd77f68b62735cd59aaef6bddd723e947666fb5ce29a68d8b723394622bfbbfbfc5d641b73fb768064696aac890da09d6b19fb50a8e9a4e3d5df4dc54ec31d25f89b5a3956e57c77895be6c4cedb6c2f9d49c1c681f993ce1569036c92696d3ec8beb8886757b443a5fad731ae6d7dddcab5ae422d15f361cb75c042dd9452d3ad9bb326d652764c2aef9a75e9de6ec93ba2cfd56dba8036f7e95fd34be4363c7ae61a7a52cb7342dfbea37f2ae71ac9aba58231047fc3faa738cf5307bdbb3e62b9651fd34eb15ead857b85fcde8ebba2ae477141ba23c3415c9a65329e973a0c804fc64fc7c0ef5fbc57bec26142eb2bcb299bf58be913bcb6a379b6e8de07df97cc0747cec7fd056a5d6ce50eb4711dbce6f975d2335bf7fc7b6df2bc8112e7977e89eb85b9bf1e49cfaf818f4db86b90ad171967a136bcff91189d6b1afa65da2379408f45fff539edbe7cacbbcd9af3411d03868d98af2ce7bb25044f2ba9fc9e3bea16a9954bba425695a0c7c51c277a15870b19277a3c29d31e5a3f8eb3ea5ac25c006ed3a0f602fb6363c935eadc8e95b025ce0c9b53e83bc99f3b89f9d77c6fee283fd5c51dc747a4ffe258058da5d138fe298f01b3056235bb384436a95726d5fc18032e5b7f47df87985040700ac2c963836cf67149f54771af3e90ac12fb2ae708d039ec17b1b310c78cf3ea55dc5aa1ce0030e5bb2276bc301f7be13974e6ed733613e77ddbd7dac7f4d9a9841d429eabfbc80eb0a3607e50705876b1c44342fd9579218cef10852f87d8f16f2aee2bd7b7fd1bf781bad82f160e2f31acb557a6a02ff4258c50726f97e9483fbfbcde0ec956d44f73cee7e0330cce2ec7a995e6628eec1a8ac17b6eb4c56d887fb2c74196bb21de6b71b0b86c1cfba1d9ef8a2e06f202fb886b8cc5c9e7dfbce2bc1d4fd41b01cb45ec43433f69e2c3d03910b02cbebabbb0ac11fcdb0fbddcc1390069e595b4de14f53bd9aa67712ed840b8ed38f0e6c27ce37c4868a710d7e14864aaee1bd8cfd4d4c73472fbab3a38c0b56cc1009b7f807d50cd0ba45b433f2a7f27ce4d1b3e9a7eaf0cf57dddf6f178287e3cee93c8cfa6e11de80fdced6d2be7750b3e035fe3936ae4c7379e6fcb3d977228148c4a353f5e7a56a78b254ef9603a80cdb9b1dbfb7a47f28efa8938f77d9b0f4c8dcf7ddedfefe4f3a3e704eccb79e73db8975fb4db785e3b17bdc92e0e27d27910e781e5c5379fd3d71d049083fa11cbfa31ed97f0bbae36232e12a7dc45a1578a7b5c1a27ad35e8e99fd58d310bfa47a4eb2cf63bedd884dfff1ef79fc4c9d7c801d0b5798ec3c93e5e4ffa2bb8b7b573a53cf337f05b7f93c7efbd36454e64d5c6d92546e74ce76c13f4690df55bdc826f8bb96014bdb5599f04f7f972dd0f16ebfbc4b307f66ae4cfbd757f1d76fce57a375822dd45c4fd5b067d230aeec758e620863c105e1f68d731b1cfddb15927bdf8183bfe6eb635d71bc7efbb4eb79bf61650a3170725e415b8ce28f74683b9e83325f762232765b64dc5be3bcb757fe28ffc5fabd1e06d6d0fec7539795b6f8703d7ca086686fbc31dd917d7292f71555ed03deb3a80552de4f648f5801fefc1fc142fd13df29247955fe2bb0df2cecbd81a11fcc3793f32902c288ab436b771e0c33732c7afd3bd7fcb1c8215c830b11690e79356835e6aa031cfeb289c1fc4f17823df59f8fe8b6fa3b1789355a7bfe2fe3885a7c7ca684d1a8db58877e80fd0256d52d7dbc6eddcbd5f7ead9a5869481efa957dda04dc6f9ad639bbcf40ffb60a1223a5f9aa7cdd059e9713fe3bdcf597384cf305c61b3ce0f77627d71efc15878c33e61760023fdf70bb1fa73c34cee5fbf22461b847e1649f76cff02c8e9709dfa67f6f7027d2fb7758c0fb75ff91185d15abb069978a36b63512f8ca21f790615708b6e6a7b122922322e80ce9518bd9c5fcf4bafae0ac4c2abf8e42ef9a6e8b7d1cf4cbb4b23b496ff2466b3c149fbbf6994ffcef6dcfe7efbd060e1dd907429f76acb603e7f36bda126b4a5adeddc58e5fe1fa12edef17e6771889e757ccdda4318e86def92b36fc4b1ca27331a857bc56670798246aad957dce70cd4a7b3fbf3b9e175cdba39f938af5573b4f7cbcd2fc7e36965a539735f2d6b1e9afefebb03358f8a3f26d55620ce3cfda795562a892bce84dca0878dc08bfbe94b7796377c3cce2f54fe2f9c2f6a130a6361c45b576cf69ce97641b95520e12c70df9043f7462506c3ea99e4b6b03bc6e914e2eee3736861f6e1b46cdc8b3bd9dedaf6cefd7aa6bae97ebc1ebbabee9d6f628d52caaf902ab033a8b621f796edbe3a0daeee27dfd43ceabbd4bb63a5d2b21af5de4bc9070b5458c2ca8a996eae5b0ee0b7de9713b5dc90b2be32a46f7ea73e2f845b2f76f5ed5a73e93068f96e7f8e82ebbbe079ab8207fee42716ba45816e761f8c1f2e124ac1fe0bfc57beb7190f6b7f45b5d68f7305efff9290eec4b26fa2f767e15e3faa183945f25f042487bba6ddf68f6ba50cf7315fec6fbd7f2bd54895f111c7be9d9c69e41f3cfe34de26f47c883d4db76125620ae1b12f75eff2331fa9d382c8458cef00fd7d1db7dd32fdf855c20f94c12ac5ea60bb6b64df3ad4be9dd5f24277d85ed308e4521dc2780590edcf9589fdc103f590c1c95fd8f4de03f5cc7bec496496c7c3f977d5f3faf585736cb74ef1d69be8eea7b23b660194bf71dd46eea7c37655a65e5625fbe4641b79c227d90fb34980f48b2e174fba9927c40c729998f75cfab372192c77e07b0a20c9c1724e9d252fe988853f3853fe8bbbe96868f52f6b3cc2a861da1f8103bd4c714803d036326b9fce3c935abca1daca7680b8fe757b4f651b8e0b91f7b881dd6147724367ca83148ab7e19db52bfd0b78ef1d6bc2615cef9d7e190e0dc0e6c5f634e45b348f63ba47f16a931b868fdaaff02debb985bafac4737a9ca7b16f8d6fbb248427ce63ea27071d0efc59b8e2357f2edcd24bfbbcae33d94fcc1589e7f52836f29f28ae2590b5837c2ef03551ec2b9a2ebbf16c7a1f823d57d6c7dc1f3fe394f30e54000befc166e2ac2cf7b3f8a3e7399835837ff5afe2e98b797963966b245c60baadbe7593a63143b0de3f5a1fe0a75888db92f9bdf27359fc05db16af39d0afffb8a9b20b42630afa1e52ab8683c46426478ea56c05792ba924fd6dcc6849b00f3b9f53b4476b3dc476cd767d7b43a5d26ddce65530d8ec936dfbb567a6cee31256661a9391d4325e798f967311f4ecfeb279c4fb1e15be4f796888f20fccfe91669951d93126a57b1eda1f5518acfa9f727d541ed3a36cacb9a60ba13db03e78b8dfd4e1c78ab6c5ca2b539231b7b13f4979813f3f3f6162c7fbad336fe8bfaecccd6ee65fa5d880b7fa73d1c5b166b28912e33b8c40692eb5eb181bc937e27a9cd2232e6d70cf603fbce23c2710909236b669945522df24db8c823c36ec80ea80733ec6e6aacf368efef599d15e1ca44e71630062cf391d4662f5e66a7c4327b5138a1756e480e3fb2a05ba6e5bd712fd0d85460886b7a53d7efc4f6c64ec02317e7a505979c3ef315af5eead8756af84ee20c0ae0fc84397b3abe36ee9e8e1a23a36dc13813e35ecef6e85e7d3a04b5e8d79bafd6353ac7749cb72db33b6af3230afa9784f81a313615d4fb15e9d83cbd2f399603f0751848a665654c7d82bcfe8eaca5f750ea114b9e8f3aa8254e892dc88f750232c73c6d823960d2d0799b5926ac3de138a13941b9a80fa03d24e671421f7bb0f69c2bdbe0f630f0688dc9ef9a7ceb88ecc9087334e578cce2ddf1b40f97fdff24685dad349fd43bcd3ac9724caccf20f74237d9f136bd20ae30ce407e6ce32ee4feec35b29b20ae309573ce06e259c7ba6779896ab39b3a18ebe7e960ad5ca7ec30fcb7e0de8bc2f281793bfda73898c3d99f5926cc0bf8c41ce075b9c401d29de645badf5d5cdb3b6c48dc92e9e550cf89ee81b89b10ee44eaef47f709da0bef4bda17ffe18eb3430c77ccbc9f54e03f3e44617c041fb9519e53e78eef995aaadd24dfba5f63e3ff63efcfda1455b67601f407ad8ba5985615976a0a824d56a2d2dd09648a29a8356df1d79f2746742302cccc5adffaf6d9e7d9e7623eb3122108a21931daf72d3e2685fabd94a3263fc4c67a1dd39c01624f759d917f05dd259c8a3ace68e416a951fc88831eab39e5b964b7b563d3bcfeb4da1e01afc0b0ba695b7d17e7cd17f5b474acf99efbe073e4d8ed22b3f30bd673e3d2ac22c3f7d9bcfc50e3cbf1252d67852fe758f751f0dcc6611cce5a696976d51cd0dadaa9e70534d84c6187e187ca9cddfb83daf386f3538d73800e4a9fdbe29a756ce3369d4b223602b523f5fe487c107a0e79b60975f7c0d963404d3fb11d943a6372eea4e41a6b9becef94d816a529e2790e7a47cddeb4adf35bd0bea4a5dfc8c7ea1059e5d3763cf9ad8a3d2f71f89d46f9fd5fb54f9a753f7751c4fdc5b018862d7fea2ddbd6a2f0de3ddf9d2fda4eb3fcd27550aecb7ea8eb8c61202e32625bcf9beabc41271498f20c23866161c2bd793ce86fde145f01afc369b08919568ceeb3e27d947c19fb4739fa0a96e4833a58315f8db6fe4e62494a9d1e72b177e34f7d2a35ccbd3d5f97635f595b26b3bb15bb7f655b061fe328700f895db4dee670565771382bb201fbade357f43ba4ec8f3ac507d1e788ec8efd9acdcd304367972468133d8dea5c86758fe72cf7c6064cc30395c74b713ee2b3d8b167fb28e8ee201f6dd4f81e0d0739dbaf82d99ee69f3d515c0eb636d272794a77e40cb2884e477147551fcc2626fa42382b1ebceb9818d921aa883e3865677d71c9c219d169aa2878a2f1392abfa1966b1598ed54ed233b1b18b62ad48d9b55c3bbc81a39c673f39094b34b4ad7a82e2f24a650c8eba5e33c19cd0aedcc7fc4a1dbb00eb14f9ef9df8ca7750cb959b5b93f72bda7e6230f7a028b361b6d59dea09f033fb7bc5759d7e45dab70ba8ecbe2486dbdec90d96ba6ab41fcf81005575adb3aefdf53dbff80760067765bf3ebd0b837d145da4514741be470d1c2582ba4afa951dc3361434ce9994ffa5c1f8373ad3dcbbb38b67f4e3b3e915bd718f21e672daaa7425de111f499797fed8e68cde1fb7ca6dc17597fe5b7fbcbbcb9063be1714d24ce9592f5910f7de438f70ebe55d73b6b3e205617fb1edbfe260bb2f7c4362fe968f61e563d93e205a9b6158e7d535cfd358f5d533e8441efd757e3c5791fe533c7468ef2fff6f919b6210fa81db729877cda36df010b1c7133a8be03881dbf878657103b95727cf7ef61fbd7faf7a6779b3ef7fec64fe32eb6b1bbd8164bcf37a78b96f9caf34c1a7d26a40d226f823a2fbbe0081f7c628b88f193e72bc22384dad50736e737e5197f875803a769d377809fd83b243bbffe7ca33ec278d5999e59f7f32d5599d9e02f0f0cca535a8f83f035fca4e8b20def38c7e553b33fc93239267efddd0be7cb761b7156f11a35d4d8f6276d35c5b67fbe532ccccffaf8c04f86fccc9ff59ffb96f579a37b45e68390316ec8f568dc2f6c8dd298e6d3fe819f967ed34260f33df80e1483c67cd2cdfe3286bf4dffffe01e5963b3d8237bdd6ff88e16ad5d61dff31dff81d4b76faa2d3cb4ee6f41f783e9d9f43b82e29ed9c54714dc88aec3affd2067afb04b5fc6bd2dad97edacc07722f85b8b37dbffc8689ef521d66c6c8a93d42d22c3bfa706e0d0eec9999074003f88f97cdd76b2e9e7d980eb9526703d81cf8fe805c6f180fc166d69077b05c545d3b951d7b5f520eb79a056e3352dcdd32aac71aa12d974494671a30cc33e15cd26afc5a059be3c6d8bcd9b7ecffb5cf5c728b680ed1569c7ab92ce56b3f7c5f5fdff344eaef904d65c7ee3f525d612c293fcefd8b28ce383dae2f7b4ea16c92e3a2fb6e6d0f34d6b51446b87ec73ebba21f7c4239feef5e2ba69f8ee4bb29b5d88bd1203de8fb3ff2cff52c56351cf0ab94e64be4363ee0bfa7d02f839423e20aefbed99e8ad89cef54de54c63cd883e27ee26c238ca97641b1fd2ddac25fc3db5b1c0dc395d7b15baf7cc62feac39c76b52d71dca8b67b5424afc741f85b1c03b8ccae2b80abd2ee5a9e03ec0e53a0addcd2af42ac07eb66797985c2bfd32e988b85049fbc2c7fad745f8d9e62237b4ca82ee5de4b422de8938cc8ba8e303ef84c82f1dcde06ca1e7890338e9f43a6bd747ef6279a5d26e50fc8f9d954d6cc721b25f281e665af5219fd119299880dc4e69ad6cab8531dc920ec5575162dcc0edf10a762ab13f892d9a897837b687499fa82c8c771ec3e05be29c07f55d46b79820bf87925bb3f3cf4877b1583ed05df70f7e15f77c50f344639f55732d9316f3bcf3fab4069d90b5e35d702e24e58b9a7eaed3d89a3e536fe7910e037d72ed26ce2ad12f963ff58adaeef26bcd755823e00abfc41bf4ecb7f41486e369dc881ddb4e8731e0fac5ccc73ffe44af91bc274de3c37067ec8763ff40ff68bc578cebcb46febb662bcceb356a724d9817f16d98938c5d8775d969353ddf98cb36d9f5dba9b1de2be3467424bb4b6c293bf9b4bead756896e9f89cfde22c55cfb2e63e96f125dd825f44ab958aeb313e19fb2f938d1ad7d1f4846fe5f661bbedf19946f306c9bd222f9ada491f69e9e799edbf4a6ecfde65bc99bd87edbebfdcfaef61b5bf08de5994df3a1eb033e4bf84ad24fb756ce2ae5f33ae99af6aa6519d4e5e263ab785cd72caef1ae7df439d92d728425dde2129b57d3d12d7457efe72e45e889e5de3a22efd7b62dc8cb85e172a74546a639bc7ac5ceec7f36e8b9c555fe9bbcea00f6706e747cce0fc880f49e96febf6836c9fd849e3b9be775a0fd763e33a93dfff136191437ddd57383949e057b1e10fde381609cebd53f90a693d11d55b957a53629766414db7e7f71f1d7bd64e7714cf03cd29cd0da2b5c07ceed8335e227de4cc5f26eb621fdf033514fed32a9cd19aebe75f6bc9f762dd53a3d8259bfce7fbfc8adf8bfb775475c46fe441a3f7615e46d4263a5715ee0fcee1f408e3be003e59b24faa2ee5e81df43fb2d0651823d42f8874c9f5cb46fedec053c8e743e32a6458c5cbe56d3aef6f13c3bf335bf39e857dba76e4b71b801529f23aa5ef538ef3a9780ba77bb6aeb663c8a1e969f2f854bc35f3c18bb9556a5f1aeb4539be37ad0d735b7d8c81f341f4e089713b441b13afd50bc3e5dea9757022af86e6fd84bc86b1b77be5f913e50138f0d2727949ec623351720e4cc19d46f372fcbb7b57eaf5581ec38deab325e8f9b4366e90f5b85c5f91fe51cc9ee32a702e4a3cc5605876b02640feebef80dcb3bf1d0f99eb26ebf82827f2dff62f3fc4f6521b578e7df7b76d097e44a55f756eb5bf6cb7812751ad3914788875deabefbfa3a18d54af937cc0b9fcd97aa3758fda9cff6caea59235939fac038913555af7789e325b14f27519b6be794a882c1f1e168eedb657c16d0b38e4cc4e647bb645edbbf890d832c78cdc9f941eb13105f6b6e0d01c4dc919a67223dace2562b1cba5a8c124fd8498660e79c9e1ec44dfe3df796e5a6698edc47ee53e76b05523ca657822b266b59b12bbedf836ef17c92e3ea4a579e6fc8c1847926126577140ec589e33853176955a355693d65897f5c3b14ec0ed8df8fd257fdfa05f93159346f920b1e8266c6f93f61a302d8f5c1686feedcc64a5f8ae86b5f65391a39659bc8dc83b3d5427edf6a2d2dac4c1f542ecdacc2e4ef1dcdcc7c1edca64d13d99cbe7f43ae0d0e098f880a57ac9428fe856e4d9d62af0ef0bdbbca406c277dcf63751e016c9c0acb2a0db5a05ed6262e445023e80e985ccfbe45b6dfa75eca5917f8f97b33cb16f9b2898fd4373d67c669fbfd218e2b25d24c12ffa6fdf2de2cd15fc064bc6c1f62e6521591f1fba5c827b0dab8c7de6ff967baf8a43cab33831f24b629cee930e79c72c8f4b7f416dc99a6ca8d902f2fde959c8305a6f9b263bd0cd0e4959b4568175e47b87af2dddfe5b05dd4366177962b1760a9e679823aed43ad628e2d711b99db4b68a3f2338715a49a7f7c319a45757f8111836f1a6b79b0e643d5ad2e9e79151b4a09ef7dec33c9f172247e2d0b5325a7ff3c31964e7c4e842adafb0a358fc8271f588da8d57a2b78c0a7696cf10068bac0f925cbcd635b56f5d716eb33ec741176ca8f879cfeab3fc34d9b57e323f1ad91347c7f62e9171b83ba3593b85fd067cb2ddd406ff19ecafb47a3a539f5197f3871ca2a557a4c6ac5a056e110fddae8643a3e3d802cf8a67fbf7a8e31ea2d2dfbeeeb67f81636b9599ed577ec73d482e55e133d17cddccde66fea61abf108aefd07a872e8be534e070617d6fd0886fcd635b08cbfe012ebe1ecf51f257c1efd5d0563327adf0c37d3b974d8d91d13c7f2207da97acf4fbb27670b9a3b9abb86fcdfeba5540f3a3b43a30e00b43eded5dc3aa56c1f014a3b98f76dbdd780e38943bb7da9ed34effb80a5ff76e75dd8de7dd7215dc5a71e868fa76b16dc429927e8aed6447dedbda73ec4991035e16dbaf720f58edc3211ec99c80b1caa7436cc453d2898bd7d06ba565b1c9207792aeed4980f683ed76dd6afb3306ce45ad0dc36f7deff92b8cf1a43c5c56c1131b9b073e78616360be6c25dff35ce3ef976b98eb50db58eb1baeb569dc3b1fce99f982f536eb6bf9eee058395ae3cd35af8fd6f474c379dcb5d8f177f6d3dd69e08d1371fe2a316ef06de34fc604e3c54f4ac0b86e6523f710edfc563c5fefd2d23cc6f3f4309ef7ccdff3fe19f86b9e7f219ec8fd3a14e79fa7ef9773669bd3a49315e97696a7068b11aa9c06bc6fe7158bf5d077720c6def9218b7d62aeced80836390ddb5777cb9c759edee96cab2ff707f2f1a640e6db374377dd867dabea7f93743b3947534dd433cd8d298dea0757be8fffcf8343627e38a107353e70bceb2797b1b87b30f32c771e06ddee6441f85befe9bfdff1fc07fb1ae1bc0144572057806d0df2a56acc06894b822cbf6ab6f15ef8ba5399c2f63d7f3dd05f2c35ec69b0379fe8f63491de5330c6b5a13f280bf1df4c4e21ccb9c71c0e121ed93be8d37fd5e6a5b554471f9c438790afffb7efd3aeae769699da41d21f623edebb07f8d42374fe6fd9f09f3a1bccf75ffd3ece1bdbfc3563d0e89636196580f7fd24acbe1d5da8c4af3023eee8fb6a9b729f421a2df19d98ed87a5a7d89f4b396168d59dae6196cf9421f8bd39daca3a44c4dfead0f6a0c29468d7c87ac555178f3c91cde72ca0704f9b60d79ce8fc73ded903dd9dd358d25f98dc8d1b8b395df8b6a9b306fbdbe2ede0c97c893220a9ed877629e6256c3d012b5bd3c7f58e8fd09f3f59071049b9b62cf129b0238bd989fe1ce723a0a96477de0f5db9f7d33d20f68dfd438f633b54128bf1ecb1fdd37d41411db9cdb2bdbfaf7cb73948e2dfe7ef3ec8b1a0cb0cfc8daa2716196f3cbc761154e455e0cadd338f0ef61fa66f7ee8c4e3ed4af527b9bda56614b5f3ff45c8338f5fe52c32905fb8fdf8bf3d07d811f846c7a7ced3db3fd533a50e31c2cae0a314dfa7b9df7f8ad03dc8bec7785e798c54de5fac0b151aef72bb82a628fca58b0f2fc27dcdb2c9edbd82efb8e6daaf074c9b831beae605134dfafb7a3f32aef380f0df082f2ef50f67bc3388d949c7fd937b97fb1ef5d6249a1b8b9d646bd5f817b4f8c1bd503401761dfd3fc0e3ea67a2d3a9f437c1d3ff7e07ead1d7d2e87fe6c697971d86afff686853d5ffaf3251e3ffb11b6d0ec9294f121a61cf21cb7335c85de3ee9f8ad25cf3bb78b226ddd2e4967568c799ec1a09f840357ac9970e01c217f08736af16b628c8ad4d95cd7e1c055ce2287f1e3a17813df67ae889b836f86e855dc4fa361047379f2dc029fcc2bc82e378f8ce3fea13dcaf354991e32977981f33888b651678963e47ba17f6e656c7759faa56bcfda58bfd5da39cb58d596ccdd3ad9f9c704f6a098c31fd29ed0bfd9fbc8e6ddb69efbf63ebf12dd4719032d4f0eb00f52c37f8e82db312aad8f55a5c6431fdb340d7d5838df1e8ba9e23b557f9f94281ef8dc321dbbdb4eecebfa7725f7dbcbe7735241ac5fadc393712d8e298c71bd6a7e37be8ef0b59c8c15ffb7c44d43eb197c5ea846468c1debc7cb46e44b8adf1aea0995be230e76a95f87d31fcee864224c70894384f38924ced1431fe018c93535e791fa8d01f3c8af61f11e54592edae4ebea5df77b06f77ea663117d7ebf95697b9ed79f6a3e3be1a3fd641fd771d7655e706fc7e787f607b79faad8538dfe343e06806b0b5cd56959b462155b4b6257dff7eba0caea31c1b6823b059c520a674df94471443eeaf5a2cd3e84d79a0f01c9b43b8f65fe9ef77fbe37d58ba8ebadf13e3daedb506f7a789c7723b9281af22558ff668968cb6a613f47d3ef351f5684fc0b69fb24ec8350e18bc4dff9497b5ade05e9631c7a3579e0a8b97c8d385cfa9e4d79ac47bf47dff3eadf35bfe5677246e881df9537a29fdfe4cc7f949fa2e42c0b192cfa577b3f1e575f9c5f382ef3789fb3bcddafcf59cad52375e2adc6b98fb9211f9e4f670d330dcb1615c7f4917e8a642fe40f0abd13cb61a49b11d9f100673fadaeeba0c3726d970ac682c8f98a876a3c03e5a46663394f1c37ea90ecbc02ea7a8c2eb1c1baceb0fbdb27b26cdeaeb2a07b66dc053c8f5ff71fac597d65911ab743b27b3dc57671077b63de3ec761de9a04b743c2ea88a3ceeb69659b9755677a89c37c1f85fe9ddaeced6d1cf6ef68eda071ba2ae7ef64d074465ca5ed63fd67eb09f9377ebd2bf5f23ee6b812bacafb48e24122cc37e1b7d4f215455ca4312f4cc178fc724d1219a9c708f78d3ea841531fafebd0f09f2087643465394cdc06b86abac5d77a8f8ecbfbc016aa63fa4a0c37c50e72ac5343bcab50e69acbc0476b7bfc97f128569ff8e5b83b426fafc5751ee8cc5d9caf25eb48743cc32f6519e8408013bb0aba45fcac3d2ff52c759d8fa69fd6abd6d6c1687a6cacebfa4c2f55cf4390392f9ba67a44b4b63ff69fc5a1d1de2fbe8541f5559d8f8cf5307c24592b7f49ca5b97d5005cc04f38f22e8e65f2fdf5aefaa2dcff4d99277d2f0fe44f93ef29ac73665c151f582316b3cc05059d9cdb1095737436bffe34e5123b76f73209f93bda3c07723dde9838dfe2230aba7e6af8c3454be6344d3626be0e39575afeb3f00b2e3bfe15daaa7126eab93ae47cf4173c4791f9c7ca28b8dd795d633672bb7c3db367700d83582314efb00fdf44737e9b65b7f051b745bc9ffadaa81f0df15ddc50dc292bb2015d5bbadc216b310e67c71599db80e72f2c4f49e93f658336b94ec73d68b793917798042c87b5b17eaa713c1e8e6b3672313fbfc0717b977633e45c478675f6c359e10dcd99e22b605c5f93d2dac6433d37d1d9bb1d22ef5e7718c7b519d3b5dfe1dc693c46ec51bff694d5f117e966bdcb6cff9e0dd2239ac3231b77813b0e39a2f62ccfecd9de19e4a856ebd71fe6ef65dff9ebcf98c72482a77564377d830bf22ad9111deb769ca07c5889b101632e7de785f02be35cf83cb63d4bcfef621c68478e6544391aaeeb956d9d63fb06e71cca1b5679d724ceae82dd8eae0bfe48167f60f14c0bd6215e0b35ff0fad0555d6cea434eb3914f62c4f47645fe8f78aeb5aee48564561ff1a079e1391f966716af1bd1f7aac769d2706394795bd46be97ee25758f76d292e8bdfe762ec6af673a769e430e62e89cc3b6c9e4fbed97c61744e650f469cce6a31e2ff5f6ab70fac91acd590e1fe70653db9d10d918f6c95eadd5a5ca39ef424df098be4bac0db57e52abd969fa46b2bf3b6e4eced578287e6fac21a09c78dd076b545d9b0d6da2fd3853654fd547b561fb75645857727628fc7b54ce00b7df2339c2625c80fd3b19f4f7683c5559f2c9191705deb6365f1f50c782f729cfe9f96fed555667c6bf1bf08dc5f9e36ea275362aae716096f83a8dd7679bc430a11eca8538ba8ccda1f67ea0eb3c678cf4f32fd6289e47b16f0f1a27ae1cf3c27c873d89731efef3778af5dab437c81aa5ebb491ebfde15c517e75a18f34ae6b919f593d5d1ad7c646cb3b7ff86d382fd32d92c034e2656d0defe8782a67c291b6f1c43829afeb6fad73911bd8bc57feaaadc5b76baffe5bfb42a94d7acce5c6daa7fb53cc416498e7ccb60ec94ed66600c75620f384d13d5a1d026b53cc57065c442bdb3f024e5165f2f9d8e91c445a1c89e50bf33c4996275cfa25cee1677abfd6163c07e384da4379ff2eb10ff374f77ae1f602699bad3914bfd1728f0dab4a4ac853e1df06f8aa8007aad60a5c32a35ba45bc93b8cf741d2c988ce33143cc203c9e7138733b23f8bb9e1775f0dcaf9ea3c3b1db6ae65bd29c59841676bf79274688ca9899f6715ce00dff6d5b81d22e344d7d780c98b413d0799f10f9d891d9ad9e69961bb5d794da5b6c70e694bf8c8d81e7f65e789f447234e9c9c9f7793b25d64b63589c32df879c47b835b8b8c01d521f8bdb3565ade6af7a6467e88771eb97e40fda3e349ecf5d22f7ddbaa628ae553e3aec7bf439e68434e764ad61de875eb9df415a4500301bf3dff5aa79a0f83722b47079c3f3da9f63ca769097a2d8daf5e12a87935ef71407414f3b2aac8b319eca574375dbf05663bddf43fe4da9418c288cf9ee66ab0fc11d2478a25f57a762cb226a1168aead3cf37a899496cab3bb977d7ac2eeb92c0773d61bb1d6a571ddbfa58d9459195147b2e0a6eec5d9cdfce2d56b665ac02b39278a6c525a3e7b2d883905f32720fb19101c68e9aebe2dfe3d0a1bf03de8149dfc138b2a260d652b0d5601fbf226c7cbcdf28fe29c55704ccdc2235666b07eae1ba8db9656f6db7883f6e2afff073f79733543995df218f2d5a037ea082e92bf17c3fcbcf799ff72f4981e6dcafe56cb1dc8057c81792b670ed3ea1bbfc0e5b38af4bfaa86bb9716a3e187ae623b18b8f55dbab5641b623f300f93c43eff762ce6a66588ccf19e4f4deea4ad602ac0f22d3a0b6c69e1e287e86d5ca6cc09d3b8a339cd607c1d84fdaaa7ca2b2ddbc64c3d911f21e46b4362431baf3c43089dcbaa4c6f2e858662b0eda57ad5ef69deec1d63a24674fd86bc8bf3999348f047e576a43c558c95c9eb3f03305afb53c13d79e1d57c1ec1f9fafe38d7c2ea2f2759996c52e36fc0afbeef4df646ebf571bfb5aff07191bf354e410d5faf1a1c6e125a673fba28fef928d173f53c70caf4ce178b6cd331b77b03b95350b79f1c49e30af382782eb230bba2e9eb9aef9659e888219c3f4792e672d2f4fcb8ce1aa654566b9455cf06bb990b1d466032e0db2bef7cedc123e612edf2783de0e8f83d4c5898c1b9239a2f5529c7f6fe733acc529c37bca73220323260300bb157055ad2a9e0386542ba99ed66ed5fbc71964640cf0fadd8fe7d7756ae4972cb86d016b9afac28a78d0cf21877943715764ddba4f730e05df21e8813be4d391756a74ccd1fb1a7cdb83fa98d033b690f1abc013fa01ab7fc81fe90ffc772700ccba7c1574ef63518fed2da3d0ddc5e1ebd1819c7176c6e29c1ab2fe0b35af465d4322af86e9c4b2be4ce7e1abf1830dacbf181b8d33cce8b2759e17f55ce9e6fe127dc527b2e73fedafbd3caf90de075cff357df03feae75fc4e772240f797c2e4279545b848580e32482e3e792961ca75eea427c3fc17e09a95c937a00e8d4c276024e9ba05dc4769167b67f7c53b08e24577e6c14add5c8df407c6b6e9651302ba292e84e26ab1d340f6967d68ec3e965fad1bbceee9eceef26f602d359c9dc091f29ebb3e6b3f32e11e54fea10bbcc13bad7ebfe812ec9e3bf3ec311663e05054bf888ecdc7b42b1e84acacddedfc4410c63ba64b68e7aff95eb493c5692d39c57e69f9f8bba4183c830c95f8af6eb602b78f2a3d207ec9155c074aa1197b3fde1a2d556623252ef016c276a93630c2bcb2d4067b3e9f9c3728f696d68a1d7ec709b9edefbcac769897c09cf2d91a73d8679b8d6ce546483cf920ead4765be16cd872deb6998cdcdeeffebf729397efafe047c7ce37448291e3babdfa632496029cffb77d0ab6c8bff0d9c4fe9ce3f337b93e56a6705f823289fcc1ef866f99ed163acf692ea1052165b59839c73068d7ba09d00af6471aef3607d5dcba2c9ef3dc664c3f14275de4fc55be85f918f85f443f86e888d43ce6e221fb3b0b7fbff8ffbe37167e7d0e7e36eb72f51591c694ea655ad96791e19a729d6d57fcffb4958abeb5aef12a3db4a3afec76a44ebad5d22af37fd6d624ccfc816b59a7871697e827b486c7f1105719e968543e401c6da607546e714f6daf20cf6e32087f6a3d2dcbecdbbc4163dc664ed6cb6e724b0ae354edefa78cbd8a2d8d3fe91ac2966c380dfd125360df85734fcca86f8dd77731eb84f53d789b13f518d3ba8b2f0ebfb6a7b47bdefebb97e88c7cdfbfe09a617939f1a4ea88243a6e4aa117de2886bc801a741b57fa4ef5a3f0f90cf93c91774efa978f3fd6bc8306c1efa3d759fcb42f57fd6fd730f7d99353f9fe607bc47415c78643f133b7a09ba3b8ed537fdaec6ec516c455be390f39a185dc03f91b56e0dfeb6065d2535ac325ec687a4f4c8b9fe92185e31c63ea0a189f298985f6dbe55f12ceaed3ef4173ff079622c06940f4e7dbd9c0be891bf57cb6b1098b4afdc375dfa15b77315fc488e4bb6143a5091164457a3b6a492c740ed7a1107d4f010b7f27b785d2bd28907e901f3de65c1edf88262cbcc67c1f3dcf0bdb575351e6ca9ec637b4ceb472538a86b988cbc8e43a9e190efa7b5b7e22c62b29c8d037eb6abe15dd136587d0a392be8339fd518502ec64b6cfbcbb7b05f40dd3af6af528c43f2ac9e6723c60efca88db10cbdb62ccb57a167271d97ac6f62ebc1f74e06e0c7e0b6f556f723612c1266c7f19ce487b51cd21e12ed3e9333320a0ab2e6c5bba5ddbbd572d9e9ba8d2d36de9629dfeb1fafa1ca914cfd1ff5fb6ea1964fe284f23b974d1813b69fa7e5adcbf7c857fbe245b5138b28748f6f3ef597a7ccf619a336c7353e7d1ccf793c9e8cdbfbbce4fd11f5e3fc6f6f8ef729ed9372ff5ebf57c9ffe4be074379e688e60fc64be67b7dafdf8c7bb4781bc13be99e782093986d58c39d867c243abf141be2b36f166b21875c383ce6c80720cfdc87df87ce72bc1689aeb96b296723ca63fc4b4c21fedc8ce106893d8ce348ad44c691aa05e8750a97b08a6d59fa77d8fbcf2d055f95f97efae9cecddfe6dd43dab2aab4b4ba5a5b6adc95eb860a7fefed178d31f8c7ec99efddefe523aab89ffe530aedcc18b66c97ef53bdceb0b956cdfe166ef1499349303681d1a2fc033ed47b9c78fe562d268dbf73d7fed6fcbc866e1585db3de8df225e0eb2e114d57cf0d8cfd4ce217e393a99289f4ccedd90ced7a42ceeea3b90ef89b4f1ac7d83c44efc270e8bfb18ded3681f28dc29e4f7c038650ccb998cd33f4d988e51d84f566da1cb1e6af8b29fe37e0a0e76df285a2b9e8bbbe5f9e01a0e103b8ff07a7415cc3c8885e0f5b355381c174eed778471a6b6cb6bd3d4fa30c95d2b31883ead85f6788d7cfd7e8e2d757c50d321b99a770f6a3b8063ab87389de16fdc1ee3c4446d951cdb50abc115671be4ac703c54f64ce3eff83d79ba732f594be25cc867e9384abdb9563bbde5f9e7e43c88cb6287c68ae71213dda15c05a93a56ea6fe29dee485f478febde1befbfe3788fc6113ff22e28ef7f1685bdbdde7f8deb5d3f4fde894c8c83ee36ad28166cedf941ffaf6a3f15ac30514722b0cfd4da07b5ffec3cc86b7dd2b8d4143cea1a56a05613aad5316aeb7d86ed61653e1bb0057f607c40864bab62ff3670b4aafdd570741fadf54a9d973a5e17e38abdef652e10d15bf8750da36a32e8ed4305a3d553be0ffca8788c774db89d9fd66a3f967388036e3ceffd7006f96732b3fa5fedcbc239abb17a5123d124a77ee8f51fe2d9fb5ead17d131ad39d6ebf35ee0566a3583c7da38087cd89ea9e913bc3f9fda6ecd6da1b17fc4cb23eb9e3fdf774c76d6d7b3c0d4f8e10c8639c514ce649d86521ba360f9d7de37d6e68ee113d730b6d9f5bf180fd6778c495daf0512f192978d7e86785a4d4da1f8d194b3b6bc1dd2e7cfd6079647bddc09285f3d9643357dd22eae4a4d978f74c4ff35fd5ff8c8de39be12e845b6d9ceac7e9574c8b3de210e67d3c4807c03ea83b3ae9b57dbcda3d23f4e3a6e1bea2983e505f9e48ad4685dbed5a67fdd287983f41ef04d20bce36b5a9ad74908be161d13784ee38c57cd7f8530813b3406d6f81ccdadd1f04edbdbc46835e433cad819d8eb5fe19e6af76bef277d9d31fcef791cc4f7afdb6b17699951bb50cff91c1d95b33badd0f7574f824ba1a10f027f09f944f1f5fa38f84a0e0aca09d67fabe3c6fa8675c886f125dd7abf17e0b7d09faff98cb4dc563a06a246b90df8b8afba6e86be8562ac2f45de3e60bd2c351d08c645cd0d1c644171845aa60d60bc428e5b84f1c58c1ee730bdf03c3e3587af7fe0f962315983e12be3329db5d38e47f66d2b31cc630638e6a04f1ca3b0b84f645d0dd8d8543fb9e580dd33f8f5c7699bef4bcb9f7bbef93ede986cfd834dda894277cb7289b0ad05fb0730963b7e8bf9c3541fabd4edd9bd542661b9c7cf39f0538ddc4b3a9a9e853df3090e12bff7116e52d8813d7f771b7425fc7ca31ea463fb3cb22b681bdb7a1bdb7a9ed733c3887afc8c9a8fc6ee6bb22be4b76b3a7703d6886a8fb031f91bdbe2413ff0bbfc919b273b8e610c9835f09ec9ceaba2a0cbf1d4841f87f9df554c9d36c225d264dc78a0fa5513c36ce17af1c6b60acdbfcaf316551fabfe0cf6b54acc1bad3fd3eff5b3d19e5473e54e64cf543ae64b147aad2898ed5fa94ec47d8e0f9eade1bf9ca4fc8fb8af5b3913c6ca58a8fbf745a9bb916b94e7f9d5652d9703dd0fe91b77544c2994a3fd451b2d9657a6e3587de2bf5fe7623f1839d1f1152c9a37bbe0759ca80d3f995a8add768f43cf7a78afdf6a5abb88674839f3f699c849d4d7eaf5bb3ea3ffc876e67e1ad00f43be0767fba4237d0e8df2ee913d58410e605b622b813cffc1fe2f31c899bc7ed9081b48be4fd3ebeb3ab2bc5797312f1bdd3f9235e32a219c768a5125ce538edfa3ec4b891fdbf88cf27b934c8567be87cfbf57dbbeae8336e0b8417f39ae9b8abf73dd8488934cf03ecbb9ac713ac5617e6075a8781def59ddb7a8ed75882e6d2c510e25dd7369699d05d62bad71e5fb06bf4b691b6a9feb75886adea45d6c63dbaff1a7e9bfab1854b3221bfa4f2be066cd293773030631ebfb25d9f27bb5dc0ca14b74799fcf1160da6ff7ec37e07c883b5cb755f9a1001f9fe6f70d13e36947f4da64d3ae80d310645a5e48fd6abbce8c9c72778490c7a78c29c37f6967031a1fc0b23ae908bf0fb48374a5fbca363b10abb094731462664ec0be9bf9ca1bf2ec89ceace01ec831039e1964cba25cf9e7fd5aca8e5a5e386fa342f9b64399572afc757adec70fa913a036592d17f6bbcb58c33a4f02b3cdfd37440fc6befd49f56bedd926f0e447a5d95a917d3922fb2303fd2c0abaddcccee1df90f368403d0ddccf30625b4955cff701dfd0b31edfa439a5909b3440fa4d39dbaf82db362dfdf3b8eee31338e1780f9139fd4c3eb3b5d9e43354e5d24eca148d1bb39b303c2d8a05d284570e31fd1fdcee01dbaf907e0284a507fe8fe577fbd4e8eb6118650b84dfc5efb3549c6c723664232f8f8cbc0f67445bed175f27632d1eaeea9f355c4a26235ef1dee2d7b47a7cf3ec812c25671f9e677c5dc58b27f22501de53ed7ee0de70eaed534e0e6e43e0fe402d1470a069be2ffe1bd34d6acfe09cc208e4d06b23f721cb333e4760377a08e3285f6279a5cd5fea94c5391ce03dacae59d07547fd22827d0eb9b88a5f948df50f31be4adc068ded7dbfe6f25a1f0724c77fc8bc3022c7bc42f2a6e031767ea07febfd1163fdb2e93f1c7b31b725c400d0787b22163f1970b9503b0b854c51f5e85feb49b5ff08dbe6abefbb56d8fef567d2a6be246f68ce2625e24fda797932c859fb57a51df0898b9c9a2ef5e96dc53902754e4477649c84643deca4cd0f3e145927b8c3fe31c9efc2fd16cea0f7c7b180830c6a0cb3b2b8af02f790d845eb6ddebfc4ac5e51b4cf7c8e806bb3e9d1ba98fb1ef824538bfadb26a57b498ceb91eb39e45d8e35bbc6c1ec10efe03c2d64bd813c1f11b6fc21ad10770ed4f9505e81c4b658be907761be146e57a0e769ad5a0d834ef1157649bbbf897d82f99fc6129b86e3e5afa1166fde07cc1eacefd3ba66a89bc318fa475ac788739bbc7d14be8a98775af58b5508bccc67568f28eca868a0e7e8d3ba4c315735ff11b94762ae13398231fc33fb17cfd9e763c2c74b1f8f3cd96d953913ef1cb23aa621fa468bd63d25553f4f10ee3cd4d06fd4fc035e1b05f1c5dd741d07059ce9135e4f8bfd302560e71c9381c2f3fd9a74dc56145c990cf488ae26e686e2a674b79cd37a15beeadf8cedd7bff86e16c7e03cde2a5700f5ebdb3dccd14df4ce63629b1d8a7d0f7d177b91ac15d1b66db533db3c9179825ce9d1761d05de9f2c9c91796fb99da9ea1723ebdf06de8e35c5b2a1fb311d30fe38fa2e6315f81d5ecf9e6e0417c159ee75cab981f64f42390e212ff21ecef37d36f2aee97d7f915c5ae47bbb97b44c855f7812c83cc788eaaee7d5c83b25839912976131ff33c699a43ecd36d4c7ac826e99b45599c2e3255fc914bc3e79dd343dc77a64bef26c80f0ef359e0bb24e12213329571ee207381399180b59476560c0e2029350e0e5cb5c52269794f133c07e6c479bee4762b42e5ee9fff0776e9e76bc7c526b6b86f3e3eb6324f45924931897d65b4bf1ddfe14e33290f259705788f3745fc7e8b49af238e0beb6c04a1dac0fce73eb5fccff79c4efaae1aa7e72afd08585febc1739eaf1c77e3d7e36d59a6ec0057f627ecc9bf60cd5875f36fd9f0c1bf3909459c6f044411f7b1ff4cf59d0de50be38ed799bf2cc24b6b58983db11785a16fbf5efceac05756e627d52dd2110d75b3f287e29f5a7c0991db845aa8eb1c00284e775bdfbff86effffa1965eef0f3ef73da2fae7f8afe0a1cc23d9579b6b4a75e36c0257df547c5350ea7b4a6bcea1ed2b65ba4a17f203ad9c4e2b5661c8b0cf621e4e8a6a57974ecfc9255fd5316ccf6ce687625eb16e459e816942f939c375921700a6c7f1b33d949ff9675ff582e4441778b7492339631a0a395fe7915502e1cb2b7d29df79185549ea486dfa27644bf9e330339379fe52f74af51e0013f7664a9f2f0915f4f958f68ed35eb2f906745be5ff8ba10ae127c37b301507df37615ba45d4f18e6f943786c73bb9ddb94b25ff0faba9263a48b73529343db1eeff53d6008ffd3e98f7456afb1fab20ee527d0874a79afe286ab447b2263fb2cd33f8a2821ee89d1c7f230b67447e535f46670a7ef2d4005e5ff83d79a4ef223f8cfe0d206307cde3bfecf48bc828ca3789cbc06a49cd5d6cdc60bf7de79daceeec912e9bb806c51770abebda35681d4e6c9b9d6493658f745bd4375c470cfd93b9b27d5c871d323cb94ad3b39a7d477f79962bf83f6501b671b463fc4243c52f47e6f390810e34db533dedd73a226726f33f8a7528d7d27bd89172266cffe2ed28e31c511b84e240063d2107643f29ae20d3f33559c7d6dc42c5af4f8caeb30abc82fb7cb1cf0bcefb414ee352c6ad80589be2c3ec1ee3a0bbcbec35f36d4e05973fcfb765cffdcb791e42be5862fb6767d05a4f893df9dc3b4c06fdf795e103ffcb74715c87c6a9789bf77e3996798c83a79f8e65fe1387db7fc695ea6f25f642da3ed167497b342f394fcb8cea3ea359026df9ad460c3dd5cf8dfd8e8dbc97784f6d61fcee279d778d6112e5ef785db93017302e0de7cbf6bc0a6773ce41100fba793aea1fdfe68d6d1c1deb447d310ad6388cfbe1abba4275ad437bc23fadfc36e827540f9a61bc6732ae77c1c7083988cdfb241a711d52f1219fe28e7bc9c27e6fba79ba4e3efa6bc7eefd52fd68bffe15319e65568b266401c88b01b3ebcae2047c0a359bd3ba131b859ce951d0ddc1be53fc065d753f006f76bf9556ed436c103bc2a77e6ddca70f5d46883c2b90718ff40184ad54d27995b5f7357981dfb79b12bdbab66f857f4995af60cffe451f728ed924fd32a45f19e0b31119a5f465d33f24da7929fd534d673d5da3cdeb42c6ad1d3b3e508c14ca715bb347edf8909079b301af04ada12ef3ad3f1a1fb741a6ff659f0047226f113d8dc83e7eeea2f152e22c69d5bf64a157ef4f981fb2ff695f642d391a1bb7888d82bc17f8f294381ae4a6d5e78bfb369bf5db077a59d35917c42da1dfa0f51b97c5599c7378fd50fbe3f1f8d03ce77a9f3eabcd93ef55eb471f62fee91ce15fe6d3eda370f69cd8d61de5ede9b5bae89ec6dad301d13728a63ef93ebf5c856b950fbceded891c21eb232b8bed03bcc95d1c7a3372ce512c9c7a5d2ee797a171979e29f90681b7f49973d9c416bd07b7a1e64b9857ca836555a9e1db896d1299cf63d9e724b02ab2ee7cdbbc329c1e05ab292d8bdd6a44630551e8dee3657c4cc8d924634227f61df35590ed89ddf83ebaaea7cf3877cbbd6423ef9200074c3f4f77b3c22b6f97287cddcb384e9b9c438764cbef6d6ae756c4bb6ff5057088b4ef69e04ef72ee9f31ec648f23a5139f1b2e957f47b441c729374bc5662b47ec8efd1f9d4e9ffbf87abf980e770cbc701e7dfaeb55c38918b87f372a08694e1efe0fa203e267715cb8bd6132b736d9b57b009b6b36314cec4fdaf444fa5bc29d72570e8164f638ceb33b8aedd4eff9242bf9c9d8a0fe691730db0df1644775bfe076d1bb28d09acf1a5f60e2463bfc4101372a696fbe00452f691b5e7cc73240f72a18fb0782cfcfd6adcf2b4333dd0bae43c4f5bf4fbd07b8e8fc6603cdf1eea981d72be348e114d66c8ef9035b7d28fc062b7627f937171efbd5dfddea28eff25dbc1980cfa373ffc2e59334a63a6a8e68ae68f05edcbf8337c5b7d9f022eb675a2fcf9bcae408919e29c7ebdd645d441a8b611cd3362b5e94dbc1c6c4f3470666e144edc5a6d0ccb89699a475cbf9f4c07d7f5b481438bd925e279d756d64153bb35ce2921df684e63535b6745ee29ff5139467393983cda4db7728d74e1f707cf723909b96f7cfda59587b85774f9a9fe87ce9ce6e7774c46234e7799b3901d18df009e23c4cfddda8da15e5ec77e61b6a761dde3796f47c6c6bd1f1ef48fd983d6f13a11dfdbce9afae30096f6ac7006198cd937dba4678fa561cb8b354de332aec1c731fdd13cffea5a23df146a5ce6fa77b3b1dfbd34dc83f76670ef1de979ec3dfa6e71d67dabade77ef6a2cf87c62df38eeb879a39cec43a273288da81b34bb28b8b147899c519b5e6753d423ed2b82af8ca71ed0bd157689e76a6e2668ab3923eb310ebf4bfc38ff8b8fdff881ff11405c5d9c5f92623e193bacf8398d812f70cf2728e3b36363b35e799611b68723466f82b4c8e56750c20c67dc8393ed97d931de5e8abad1d9eaf257c932aae089cb3038b73128a38705a75692e68c5b0286debcecea9fda3b61e9ee3b27dccaf368c422f0faa8cbd67768d43f7cef0915a6ebbf529b75323cfd840f7e928f25f39ef21efd1f05b721de49f8cc1b6e13ca0352244a6aaed74c9f5a6fb99fe0b73a6f4e5a1fc653cc13cae00ba18b13f2846827806bde33f19e7b3a83d45f925da77fe90fb36ad7d5b62fb25f02a36d568e06ffffc1e690f601981e595ce2b56e7eae475845feb6bda7afa0c4b4ceea34fd7c8dff7076c62a586f401af17c66ee532d7a57ab4e44796f2df40988f837e823008e4fea4b9df620d86348fde7436d74d13b602c300517251690eb39f26bb96ea631018944dfe8306db8ddd2ff2ab28164ef1367a15f697dafef778bcf9fbc381db8b4a6b1307d74bbaf3cf995d9ce2b9b98f831bec8589e1df93f9f7da0c078ee2c7088de2bcb2fd6a157a3caffc2f6b34f5e77dbd5613fb7d242617e9dba0dda2fe4dd5b7c262b99ff3355832af4d9fa749003a90d266c46b9530b708aea593fdfde910db21f02f59e8dd97469ea7f652f5e974fcd62ab8dd276deca355dfa7f8bbb7599574fc2bc5f3f19f24361cf887b0df739496663b1d8af5d38459e62fb6eddffeb2bbf496908bb9cb822ecdf5b6fdadb6464137f1fcdcf587fe10f6acc173dad33a67dbd07ff187fe7cbeec8ed8bd2277b1b15dd207dfb53cc088ce0a9ecff8b80fc58b57d17bb9af12ee457c5f801fafe5a4e3b82ed131b311e53620fb3b3566d52a700bc71eea3e6d3ac6e4b9792dd6f0477035b3fcb9a44363baa141f541d863feaf756614ad15e06ccfc8dc1ee339d9f7c4ae7573ca13d8ef2f87dbb3336c5fd20eacb3531298e76454a48c870072a93e896bb0b9031f2ae401c9f9a47ed578d3cfd53acd2bc3189fe5c9a69f27a3d985d5806ee239e35e80efc2e3539c2721cdaf517ded4f4ceefb77ea87ce8ac4bec239cee764326f9df0dfe3cde125e978c578b3ffe1d87d25bf97c52d73e0db0dbd32e9b8a74960ed92d2bc6776f1e1d86e4e318d51ac7ed377e34dbf9b74963b889b84337e76fed1e20277c8431bce16cbea0a6bc0356e47c81b305c22d7bbce28cb797e151973362e49449e51f7da5acd35a3b203e62ff4cfabd0eb4e4ab38a052e745bf1c14f02baa727c6ec9e56ea6f63c6cdb002be503f8f074feb79f84afedec7a10bfc125170e3b5b8253933328adb4ce65a951d25b1abdc76867208798d2ee85521e3061e28ed9ce36056a49d599e42dcfa17f82ddee6fdf30ae69ff261bcb6678bdaf80ef27d1c743f683cc4676b98e6f9cadc15bc16b79fae95d7dd16f342511e114b9d07ad06799b18642d762fd980ac6daf4859ce4454fafb288c0f49c7117d61f38bf6f7eb7a45735d211f2fadaef07762748f2ca603f916e1c0a5f2aab86ec8fe8f21171d6463ea70fb849c57a549e3566c4ef1ba4d2b98d71df09dd0bd4dd6308c776c806c38c581c56a74e01d05c353a7ebd3cee1bce5fb6fb2e9db49c76563ee3f45e4acb397505f1219d619f0840792371e720de6eab7a39c04fa7dbbe91af22842e035f981e726b2fbebd56ef6c4c610c736943ddd80a57952656d7b07e7d680ea83a27dc33c1399188ffc8ae56892f3ea3e7dee35dfc7d7098b6100461b5beb448fc77d7ad9f4d749a79f4746d17a9bf7b66f06d11d690ee47bd0be034ea1b13cad8227224b5bd18071cf50cc14fadc62bf9ef2ebd4b7f047aea7ee3dd3deb944b580a85f058e93be5544bfb53e88fc78d9f46e1cc387e6de899a8a1f0ed1336cf31a05b34336dafe709e873caf8de632a2ba056774d4facc73faf6b80eb5a1cd9e6c93e9e6fa987ba545f9a206f94f225b5f20164c7358796edd58bc4b8fe3f70fc947fbe72ae8828ef74e6446d02ec878ff0e4fdb8c9e919764d7fa971883416ffdd66167ef73eb5fce2017df0cff3ddfb6ab30e2b546e65be7a4fe3ee8ad279ba7b3be56e47888fbce934db771fe02f6fed0579f790fd57ec27fc3ed2e9993f337ce637ba9d5a35b5adfaf97d82e8cdf056eb730459bcfd78bf2fc47973d4ffde3e34d9fec49bc0e9744b78e21d765b99e0dfae0b7e1ba0b9cb3355d89c8097adebf887eb4d691d0cf884e91ad799f26f3bed0f3e2e095e5fec967849e66f4f9b79e1cbbb7e375a1fc3aefaf2a37d83c53ecf44b6c6447c8912f8b9c9d7de44c5cb39ce9b363515ea708ea7cfc35bba7aebba1d8383917c2816b09594ede1964c564d31f66ac168af1251099be039ce0da19d6eface03c9eed5741ccecbeb6d0dfd2aa8ffc4d4dba13f0045c605c640dd62e123976c03325e493639b253e5334bd95ea8036cd154c38f716d6af0dea3ba0f9a470561fb2417667df748c438f7cff3466f5a25170e2e724e5fe2a4d592380ce99f1282ba83ee5df95f3df3a21ccd8d67e35f25ae968fa63c27523fb7067ba12e4f00b0c9890e6fa537da2bbcfecf6d1e9f8778a15e315e3797f9f18e63fe3c501af21b207fea41d2617705c68685d53191bfae3b09a7322c702a33883bd3bb8421eec9cc9a470cefcaf3e7ba7ca59f4c751f3b9f07efe55dfcbbdf56f6dbfad8227f38dbf7bd4a2764360b6b3e7f6cfd9a2777d5f746bf2eb53f947ffbb4c2a905fb5dfc661bb26739a658a90a79b2cf45a2cffef19f24defed9f6396cf8dc76accb82e9afa4c397c8ea073b01c9c5a3f38ef9f32667599c8fc3d7be6b3a77a083e9b7c94272bb80421a79ae696d23a9b2ff6b0ac2f51ed5883fbddb86e0b7a19910d5d99bf1d5fd24daf3d7dee9fd2aab7a79c2664ddf805ec5d5b9e73d1604bf45262e71434272d3e2425ada7e1b1a7389c715b06cb88221e646b9a1f7a60fb8cc93fbbe07614f751ad15ee8991b7a77b3787da48a8690af38f38ecb7f87d0c530a70f8797e0bdf5fcc07c065149131c82fc0fb04783e69b2039f832ad79f5bf53a4343a90179673e9ced2bd297452cc0320f499993b3a8c5fd5263755f1d1d8be304d1dc16a6dfa23a6ef43ef55954832ffc28359eb0b0031cce184bf99d9e13e0df6e7a37e794005e1059f3ce6b27fd279eeb02eddcd5f701d757d06d79901b097e77b0e7e2306f312c0057ac79e927a2b6bfd5e02322b6917d5db3b5747728971891c7b4960b6ad22ce01a0915ac69c89bce594d710ef1db21b565193ec3350ac13662efe9024f27f5ff7577c059c9f00fe8bb9df5cb46d40df35a5d0ddfba20f6f4210a6e708664e154fccee6e1ccfb0bb82823aa638b7af9667c8683528f2d30c0f9f7d5b83c0e4949d6af75c4efe0be31cdafced602ff1e97f79bcc9bb5283c6bb92d5ebcbbc25db18e297792966f50fb76d486fa5e14c36c688be1efb3b1173ea221af7b563014e46f748e6ab1a855d025e7459e587016b5e9baf75f164bd3277df39efff36f0b86c5d25bbe36c702505e369ffb5462efa8b5fdb4cd1ff5f7cc44feb3183fcba4fbb2042c759413db33157e0025b64e9fd1f1a4551d1ff2eb86e0b729fd2dc3edb1893c653554a4df7a2edf67f7ef69cec895722d1642176ac2847713c413b90a9e9ab1df8705c556a1b8a50cbba87b1773b268a9735be79a6178de0df1a9917f7fd9f039f5f09a68ccb59758db9893a105981ac07566903d35db271d6f40f3a445bdde9e8e875e9bf0ebc262742d362678ad01c703be8fe7fac761fc4af702c5c467fb99ed0ff1fd44cf5a633df2ad12eb6efd0eba235ea33ecbe7fd85636a74dded383e4371d6fbaec7df48dbc0238ffded307f622f429fa57fbdde5fda666d3ca46caaddcff720ef93c4eca9b7cd648d9493a6d236c4d4fbeafa62dfe22de5592bc689e53200df404df67eafaff86f2627e9fd286f421f0f791f7bfe59c75f2373e65d485fb43d4fd6492be9407dabd873fc7ea895109c37de211ed2f351c722c2be42cf2eb60bc09c7955f91fe8ba64f5ad3eef3bc340baae1f9c43027749e8439649fb0c5869c25e1eae028fef2f5d4e3dbaefc13e54e4526d0fe2d8ff5fee41d9f6089d45cabe5b9e852c52720ce83a55dbadeb05b5f53c186aebb957ba9b7ee3dec4ebf9d3b54cf7aabbd8ea31f1f677ce514536fcd66503e44bc8b179201b3e950b447e93b6eab9269f9fd18fd627c3ff3a6aeffaeeba0c89ade6731da6c64b8ff697951d12fbe62725dd636ace14d31d0deb1c19fe71016721e24e1579cfad863d9c159925e3bc4d1cef3eb7e547d33a678b8811435ea27a06ecc46f3a770ee002713ff04462dbc83a3cd0e5c878d07b48bfb86e4cf367b87fa1a6170b9b94ac6f8e41ed6ea275362aae71003e27d16787f23ef1faea9dc6b7077e3fe57d832e5cc3eb87ebffbf91df7752d27e339b66b96879bf5f24df1bd8b3b2dec464f2e4759d04d61f887d14b8eeafe1bb07c2c6a0dfa0e486f7fe8dbef12c9fdff3be7eaeb328dc401c5748c77262fefe0fd166335611b7438a5a5e627d2deefc6b0cbe3524ffd47a00edf71cc587af6bcaffc37fab71f3a27b552cd61ac722bacf617e328503495d6faa0ca43215ce022de78fac03f5de11d9d3d77514dc3a51486be51579679b9533f4a3b9ef11798ae53dd3f1677952ce8a64a8ebfaeb43d3f9a08e8f223f49fb35f9cecf13e04be8b8276643ed1966dc2129d38362b7cdfb0519ab2fdb81bdbd3e7c61f3359d696d2eff16acce8bea8bcd6724d7d7981da6f13fb167882e4e9fd3b1e0a5dd856d060b7f6f039e615ddeebe3a7eb1f9f8eef037f0d9305ccbfa2f23217122b8d7da3eaa7f8d9e8072979de203f4bb8ef056489764df785ecd7a8cfd836637d768bf8c3a99f0f94cf8ed6ea54fd84cb29d26638effd70ac13c27aef12d9b6f586e66c519adb784eed8df1fcba569fd3b0e302ab1b953e70348a3a850f57c3a6a5bc4a6f815bbca2b694fbfd56edbb32792eca6fd3ced3f140e78ea5e7823853e18c53e6e0df38ef6a520a3fd50ff5ba72be9c938acfbbc8aba17119cae3cb7256c1c7297c2ebc5fc43ee1f88d11f87dd1dc52bf709505dd33c7525a85539a4b10f8396056f0f3c5324f59386b8515e4dfdce3d0d3f96f73b44e38c6263ddfa14e8863f37611fe81a61f537900dc9fcbefec5da1bf2a36fbd1795867d3c33e994aae5554730b1c5dc526a69ca39a0c54b86f792e67e379abc936817d37666b91aef32b5fc37d66fba87257c831ab8cfd59c1e47b3156b9eea8ccbfef91bccf5284aff790974ff800efce19e3bdca18aa3216c7a67d34d66a2bc4d896e659cd0ff4cff12067f928427ff98bb99ae571e92fe2d0e3bc93757e1ee4cbd1f7c177d7c6e763e26fff6afe98cdf109ffef67b68476a6eafa52bf48cbf892966d382b559b81617ec37748f9f552f3930b5c4f4d76c3f507b600b523d8fadec5a1b7e47a715aad750e79bc7ebe3a2330c7f7fa65d3fffa7c581c41be25e52f66537c2d1f858f4f935db1f42f7f30be8ab3c065091ee9179feccbaf7d8bdf5dfb77454e71ac6a651d3ee2e46ee24757f034b4f9e07ef60732f06fe591eafbfafa9b99af7aaaca4d1ec7dbe3f3fe81dcb93f903b2db946a98df7b95c54faf2c579d4f4cdff13b9333d37606fd7bf5de1457accc92eb86625e62f705264f6af873e85ba8fefa1ef41b7c31ec52772c91bd678e683ed84ea9745dfc62adffcb7e31f9fe8ecfa7cea3a7b6dbe916d554c06fd0ff95efc2dbf2e8e45f5278e91956cb216cd53ea1691e1df53c3aadee62caf59c4e121a6d98983a222ba18e42e83aee4090c15c8cfb6d07b4672efe13af0b439b7fa906cfaad389c514ce041ff0ef9d9a32c7f0ba7e4fcfa0762e9a42f80a12a6414d13d3bf19c7caf5c0344677c9b532c50aa333eee4b4c7556d286b0ed2642ee6af5eb4cf78b43ef455b0bfb48febb41167d6b9e3ef14bcc8aac6663eb676dd33d79f33a50ceded74fce5eeb83e6d6835d5665c1f2674d2e37ae73250781e19c35c68859fb353f714ef67556d2751f117b7cd178eeb4beb3cff4b91cdb14935e3d83da4a2c53d3911fee7d5d0ee9355f51306bad42caa3c87cb53f957aaca25677da3caef7c7323231ba4a5e881774b77abf9aee198fb08ecbf0b69518353f7b1bd7d63e0abadb84d80b0bd54790c0795fb7ffe13ad47a4a9bbefe1baa297ddeb31a246fb868b5cea077115d8b9ef9cc37a3dbb7de250e672f49c773a2302e849d3b34ab855ddc81c74ef39562ae40b00943b56f51e06dc978a1e76bf15f27a0fae3fbe8ba8e6db3485bdd4b36ccf3acf485eeb9e8b853562f59e8791129f6733f3ca3aeebe9e0fbf61d8dff7cf92d9ade4865435afae5b4fa620ead53733fdbc02b9524ccfe68de43a7ac8653a0e88b22de7ed7b993d47beb7a01f599cc349f0992c78fc742d1612603611b68f3b0fd6cbcb16fbf519ff8ee5c4b5ffbb7fc7c82b744d315f8f586d8c9dfc5f9e8f7a9fe5b7fd99d2ddae0e3186a767b23df86a6db639fe23695791caaceaf7225207c64582370afdbc0d7a13df7be0a9e28ef13ac470fc529559f5d68481faff065d6dea3dfa3b5d1f1cf9cdb047153e8efaef993f53ee3d88b364e22aea23f83e241fafb8ac6be1a0ffb5734f529c3be437d5c64cceda8d92a796c7b56527a4806368dabb58d87fe3946bccdfafb934fe7e5012f87652a1c104de3a9fa95f431c2feb7cfdeeb228e1cf42cf78f343da7f365e067781ce8d1730d35f0f259ceff5eff4e66b3e9637426720ff80c9a9e13b25f7d1fc3e2e73906e677ebaac7fa370dfa493870e5fe2eae9b89e426011e2db4a7602ef9f55a1e9ec59fe5f13ffeb7fa5c8cef156bd74b9dcd751d0edcfa9a15ed88f9e6f72aeb4bf417f9e5f03532fefadffa73748e445fc4dc8403371b37ea8ebd3d8ef7e9dc305a2c909c9997ac3315f15fb2dfe2819a638cb9b0bfcb2d43736b29463739f32790c3121f621a6bafe1902423bf78d9e01c32e11786ba74e04f157c0f4f342f6390a1330e78d1d1b92072388e1c6f9ce5fc1da44ef97a8e8cdb25297dc19f35e6f8015b748694e639196df7e8fd07c10763f1dc1cc1f95cf7954abd5e1923f2fbfb3ce71cac0db9d5aabe0eb94e90434d71506bb9527a6d3be42528f9d854ef61d8989c63146c7e3817a2f3626b0e3ddfb416454463fad67543ee89473e1de7e2ba01de509627a6e18ab36f21fa464cd63b60a3439d02600360ce05e06438c701ab8f566b793866d21fc7ce5bd9a87f7fd9fcba107d24324e1784930e5c0ad1fc577bba1856b3fbf03e1dfc6acd3ed2dbcb622af0a8455b03a8b10a57b67f76ecbed84b11cbd5a5b551fe9dc844fe3bcbfd3f279dd7756a5b7759cfad60870a5b37d5f80188ed3b2953f23e211b589dc24714426d4f3b357c62671fd3d2cfe3d176bd024c5def90963e19cb3c326645da99f23ad5c2b1c1ce38377f17c5e1a571b3fe3f7158f09a2ec641acd7fb1667c71eead769beb9dd5b47802b9da50a47803a76720e6db7a0ef827dceaed56ad2294709c70b0e5ed7917d2ade02c60361a9e3371e61ee0d7a2de87845da79bdbcb6670b3557b00dfea34979b87fc6bd41eb66bd3fe997f5e4ee31319ccb74316d4def7ef9f2bced441fb33cfa486ff1475c4c17c57676775af1c7b0355b2cbbb3326abf2c86d7d9627d8b2a93f6a5a5d7ba3f9d32dbbf6783ee9fb49a4da7f7a89a2cafade93d3d8c75ac645bc41d740ce2fbcab6ae38b624f0df9ef732c768883869a9bcc4b10ba81f50b172adf31bc4bc95771d92ddac1505dd8f78699663d9a6e0697b8085dc776c64839492b34cd445d2bd866af3798d05c77c11ef3a739fa5c22f2972cff76bea7b236b8ed6d3b39a2481cda7d5f589fcbe71ad4ef0aad7f749be0b516b49eb362703b556674cec5c233f44c6baf68d501f4e71bf654d8958ebfd3be334384415af1ba0f8146a5d559df705d78d431f9f6f6a7d905d9c7f8727eec3a13ec7b238abf5c1c7db6cd1377f17689f8d4e0217ecb7d429443dde222cf079b58e00a36bf61205ede277785ac750cbdc2fa3c02b2673ef27cbd936a3516b3db977b13c39bccbfdfd4bc56079fa971cfbfebace8521cee3660e84027286f741bb01bfbb2ceecbd2bf6501e02c1fb5e7258795729f978de7dfe22659504e4fbd66f6f5a7e4a37039ce34cf99b8a41b96ebc76b8a352ea455fd3b3789611e1ff461f03647b848ac2f94634ec76898f2dc19a2fb1d92a05dc47641e6eb087c48b6798e2b2ab7c57cd0f6587dd2eb1738124feb7910519c188409120edc63141eba3cd7231c384db5848c37cc176b262e8b0af05dd8da4e777ef11ef4180e0de0b000a669646bf679d93b3b4305ffbc5c85ee5de0336c346ceffafc713e32a851946b93be87ea0dbe41f453229fc2815b60fd3d0bbac7389cdd9d5171c9e6142bc619492ebc68a4fb0bbcb5ce9da2db3e7fc33bd288ff216432c2f581f557dcd177091c7286e79147465ea4a81e9ad992bb48e2c689f72e0dbfe5d8fd9a9f2302bf29c59a894107f34b8af7f34bc686443f31ee109b4351e3c970eb6d1183d539df6aeffe5f1937f03b4fd74969b664de438b730eb11c23b566193042e49e3d6403b126e9f78fa647e08132ac2ab66fa0070aec17b50ef690c0fa2e4ab6be3a11ad91df2be7a4c46d3942bc8862e5ed1d9be7cbba6b966fc5f0004087833d16359c3fbf37bd3fe36df792d9cb3fe38f3df42b2d790e5757ac6fe0ebe37e2c8999705c05a702bdfb9094d97a6288bf8bd8ee1d79be97a61ffecbb1c12e03ec9d94720f02d61fd537ace383313f3bc3fc9219be4139fa8ab3acffe7edf67ed574cb8f1a360ee532b4e343ba035da5717e210e50f5ab389c01f61de25158ffaef5b727fd79f303791f6036c7c48665bc91996175d9fcb278674ef1e9c08662582d76d192fa00e94351b2daff5632daea7b43e6497fff6cb128b6e972adf10235cad1b4d2f5dabf975d1ee30ca47c9ade2135e8fb593ecc57efa3f9e3dfff3ee0a2c4583972cf69b5d1603fb50f897d3ba486ff9118dd2d7aff1ae91852fedbfdba4fa9ecadf91a076e82e0b5ce3364c1bc9f80df4af234513cb4323bc6389e0575f3b42e59e33af9516b97e856f6e1fe26f551ac1bb6a7cfa21e45d5c3e47891771d2017a02cb619ad7bfecbf79c1057215a93cfcbeb1473dc89b503d845888b8eea4e2f801580ae8fda5ff4bd7752651fc7a9f4ee08b7c088825b3ba61cb8bcce7b2ddfdd5a4736b7eda5cec574f8f594e2c8ac2926579fe109f5e4993262f851cffd756dcc38b7d4e82439fb005b88beeff77dbf4e76fe292ac1af0663a05de363f96fea5f636d841a279f8c59fdd0f86af9755eef5ccb074f47af4a2c356dcff651d897f50a2c77edf3f863bf45fd51af2a3793525b0358107b86c17b8c692c07714f4dcf0969afe3ede1bbcb8cd6ae977ec7195a555a5add317f6ed3bb11fb97f1649d9ce7e1fa65d3bb121b8e716199cef390f360ad7f0f2887d64b4579b3c6d5518d99021f14e3be9a93f6ac8cd60bb9bb8cf109076dd2569135d671481fe135937c544662145be7b9f72d0eaaf7477cc581b7051f4fc7bf67b679aa9d51c0f72778f2ce8c1787d802984f5691b1e0a7166bd4fbbd98539f10d31d72c7ee6f89ce1c29f92d4febd7e0764c3ad99dc9a713c5ea203adc721d77dc9cd60ee91c3bfe399632e39818d921aa9ed6a8268cea1b23b26619660ed159c3e93aa2b9239c9389e89b641c8d55406c9dba3ea3e0298e380608f7c3c4c29706b29af90327833ecd7708e875a6ff31dec46fd8ec763ddef53b3cee79ec3c06dc4c8a11f3a6f8177f5d243ed0721d75663a77539194af6bca2fc9786e03ab5a551c7b88720851fd51c3ecc4be00e66f847d4bb92a51fc6ebd53f987fc733c488f44174ecae5d151317e284fa8943d026f06eb23b5b3b1c607f6b79c4e2aaf94c01b04de56865305f16c8a9749f6de2af0b7934dbf9f109b9c8c29b575f324f039de0eeb7f71c779e6cc5f7ccfc2fe35b10b8e330a6723d9b3b4a6888d3f8bd172fc28583bc60c725fa8ff56d8a0022f43d8ca35dff6fecfa2345bf17cffe765d3ef7ceee3e66bf3cad7f69a62fa00cee31574ce26fd839f4543793e8ce9daf8e10cf35612dc2cc4fd7d485ba8a684f30e0fb6eb09e7ae6de0cde2f57cff458e3311ef63b13591ef4cbf99f4f17620dfeb0c8117fa89ac678ac7629d6262a7483d67bd0a677d6cabd0f19cb5f99aa1f652718eede283e1ad959a9f87619fc13ab94406f82829e7a7c1f96939c6c695dbfbff5f91539c53da933e572a9316fbf57ce49d12cc01afed83974d1ff4ebb1ff608efffb5c76629ea9bf45fa78c9b746623f9233e889e860adb41c02165014b48b0cf197125b5a59bb061bc78ecfd70ae59687dcd219e4e642ed9262e753ec3bbac6cc0fea9fa718c21c5b48e0be705bbfae9baab635e3261531f892c54ca8cce1fbf6d3d85503076a0fe205f3be2d63a9393cffb2e93b99dd3eca18ef555bff29f06d25c6f5e00c38b77703efdc7f8b27b0418ea398f9c37dfd7fbbac1ccf7ba7df9b3ee87ada59c8ea0a6ab6eb5f7350b21ce7ffc7c6cda36bf47f61ec3e9731ff07f4caba0dfe17fbf8f3335860d8368c1bf03a3cefd76f9d16e3f0a178d454f629b9e817ea9fa55881e45c00ffb1e060f72e11e333a63e962ed82e4abe72695e18c624cd17d4721924ee2ce32a1758c0fd43f2c1392596d417a0c702f4df6bbe77b0834177a5b967184f40b92e3008284e0cf555c48c8b145fc3fa0dfdb65be399d8fc1bf0089d1383f38221d960772f8227c64639610d6d89b98567fac0b751cb3329303e55031699360f98d30063b869383e18e345c154797c2f6b93e3ab3c7cb76893e314287c0ac877afe6df54ced1915c1397cce81669c1b93c112f846176884de61b44af333b0fb94714dc94acc886e02f6e6736608f7513a8fda0365d3a9ab5e3c0bbe03df9a671af249dec1c876e48f48ca493b267b7e7d8f05b80e538f2891c5a0006f99cee75c042ecf8456c9b524e12db6bd7da4c06aec015676d0f1363467d2783faf77ab6f9417d171af705e27251f66b737ff97781af28b6cd0ff0c9d4de4ffbcfed44895de65d228a09b44d8c29daf3f1210e538af1c8e685e653394787e264563ed1472107b677195ba7fec43f64e3b9f9ad6f598d8a2b39df68dde0ac4575b7fa1ca51d0ff4ddc9ce2d281fe1729f163ef0e14f06bddd64fe7a73abed39b3cd69d2c98a740bfc707b39270ef7d5109de7928e0aceed544d9f87f7c9c2b94e17af476718e791e1139dfa9fc9a0ef26e59462fd131bd5be325e3eef0edc61865f6525d7f5f66b8411bc5b85de3e0b9c736498a78981dae47c2d3ce7a5b48ae823cfa7e5d0884a7f337dee19d34596cf9e9ddbcc883af1c7ba7a797eed4e3fbc325ab879fcbcbebdcccd7b5a4e2f19e0fd9bd5c4985dd27279c163c970bf214f00f274e01b4c850bf82decefe3a00b7a35c7ba9f6c4c7c1de690d67ab4ef4b7206db90fb683a03f32d09a7a7c9b7f668de4dedbc484a8ae7f216dc8a05b1f9e6f93d1bb90af6855c8fe819741f9eff249cbd46a14774de33ac81a07d9fcc69bd355a9fd447d071c91e667209eaa4e11c9bb49ff663e6cb4980ffe056253487e2570a9c4ccbc3d8ca7f05e16df5fe3cdb8e17e6af24b0c83a7d1ab3bf8137b9d32f681d1579ee5464551ebd5bdbc3ef6abb9d18db477212d70e1c5296934174ef649e335f787d2f38f3e13e2bad63162ca18686da4b6645e41f93ef50279e565dc88d1ab3f825e5b7a77c518253a8597ee2f5d0c8b5acf34a7fbd967c263f55cea055384373d2c2cf6ae3c1b0464a45f761bccf0c8f80e63617e9ceeb8afa085a63f39176a6c01be4de31b7346a3f44bfd39a2f8a492370a464db146ba6b7e332c9ad1a390de939b16358fd801522dbf0e9fced55f987fb4f71753f3b83c673a8b787d85e1cbaad379fcdb3ba77aee2f7f9f6a0e37e2e0cf74f0c3c5ea7e22d9cd2d883ed57d9687b9894f125ddfa7964ac35fee053f136afd538b2f50a18bbe23b02e354bca9782ab4862b643175c0f4e1ff1e9271d5319ad471dcb945129846eca3b152bff79f38dc1e70cd33c77ca47590c51def11f62d7a3dbfb22ec6f7d67a65f85d67705c8703674f6cb97125bef71fc7ba6ec6f33ee500d3dea9d4277666776770349d86feb2b67f90b6c8bff9fe1e57b45d47a9d77f1258115417a5b5d658b6e13114efb5ae9b0c7dfbcba69f3a9bde3fb5efd5de29eaae987f9af3e291767d8a1bf4cf6ff6fdd09e3dbb0356d18ec65d9a7400d686ce1157bc8dbc2229bdfb5ff2c089e7ea5c6fe66655fa1f9905b9a9970ced9755e0ff87fc6fdf699371c215ecfcb44cc8d1e37c1c2cef1c71b5c9bc3ec4cdff017c8106b1fdfcbb2673590ef895f3f2639bda6ce6f113cfaa76c8a0ff13613f1e551cc6eff2e0984a9bdafb5a7a3d2cae0f4532ffb3fb542e3c99df37484bb34374b165e997896d7630df5d069c9b441f04eec47b1cbaf338888f492745ba8d8845cbba1a260f201750b54345fc55898dff2fd8bde4ac967d8cf3989fa1f4acda87867eadfff31de2aaf8fa2c413840102b753bb33df9fec9a0ff0ef9a34c274bdb27899303fc38d97d45ecb04a6f93625e52fe3cca1103babf5603c36b3f885cc90cab8a2db78837b982b32170a14bbfd4cf6c58fb2deaf7f83da775b29392e6ea50fd1173f3ca3a12c4518eea5430efaff4637c533e887e06edeb06ef555e43247364bba95320d94cbf85d76fcb5a3ae047c675f24a1d3f3bdf510de9e375ccedbf9f6aed68ad46efe0d4afa9cf328e7b16ffae7194d6f80fda3a07a88853ec553fc315ea1e611f8fa67bac2bc51f7b987b5177d810a37dd97c263f5c1693bfae050782cc9bb8a0fc4d750ea88e678ee757155340c428afeb55d025edbfd6b07b650dd8c3355fab7742eb13f65d98b7e2a0bb4dab1cf6acfaaeabaa37a0f5f6a2ec0bff3e1e6470aeb8c0c920ef9b28b5bb023f07efa9a32a536609f74f87a2c68a8c8f581bccae021bc2867cf3b2416eeab2949c035b9011809f049c7c4bbea77b3bcac5f5d08f04efd1fc47a0cba33383fcad9e0d365b3b1bec6be1d79aec887e9eee668527f3d01a7d2a44df875c93ceec2e6c8e41a6ae4dd9c66e3c071e6ed5e6b0dba0fffc9ef7efd9c839afa05e3cff1d6fd6bb249ceec6735aeb3d590cd7bfabde6dfadcbb3acffbf554f7d7f03e97b74b14beee49dfc673c89126ed839d57ff4e7166d6f129640d88d08519269841b1c6a41f19ed778aed31c81c7fd89eb29c85bbcb6bf6e1d92ec4d4e96faf7bb753cb9b20e710e56d67ffe7babbe0641e0046e0350abd8fd590bd13dade367fa7ed9fb2e0466ccecfbef388f9a92603c9d92de42ee3de405cdee6ef799fe70ae1fc2c85ef7bb6d0f466769e11fd2c0e5e6b382b749c192608d84f33842bf9fa983f9fe57bf19a9c31e40e15bbd8f0ab46ac3deca7643213e75e8e2b3406b86f23667391be89bd25db9b0c7a0f72531e615c29630173ceed525cb30a3c5f0be6db67580c75bfe5e37724508b2cc771655be7d8bea11c1981d1bc5770b13eb15bf05c649f8cf16420ce9b6a32e84b5e40a2eb083e75215fc026563823119e85ca2509f931f77829d7aeba776fbf1cc635c9d61dfb46df4a42ffc838b8d671d06e83bfcb57f6a39594affb18c5a1d1bb8f884f9eeb06542e963e702e81bf999dcbca3ed3642439f7c879c5e723ddf03346f84e1e62b1f17779bcff738c31c8d7e95aa90d065fe027b688b0170cef92ccdbd2b6ecd4c6e65b3eeddaba40ba8c2a7fea3840b5fd36fa627e14bfcc12af7fbaa6e6dd5614babb3864b5890d72be79ec18769498a31cef1b53d5099ca3b3f975216d4401c57b8de6fd2dd849bb19c55ea4f91394afcc9ee55938e35cd01b6ebfd13c60b720f22cead0b54af4c249f54bd4fbb1baa023f99ea403f5bce4dccf25369a59adbe37475fe9d38823a45fa4c6ed90ec5e4f3207bf0d183b93e00639953487c7bf471df7908e5e4f71383bae881c30ba9749e89f2917769be838551cceeeb28699f9b74ab38c01fb292f202ef15c8f25211dfa2ffd15fcb999ce53ff9e30ff9f4ff6836db6918ff21087b3696298f798f3c05bd7cdabede651e91f271d9762fb06cbcbcaf68fe003afcc22355a976fb5e95f374ddcf6e08b00ee42626f7de9c7507461b98fa98d98405e99a61b0edd3c35fcdf59e957896d75eb3cfaa61187ee310a8bfba4c5ffbdd57c0f803d6bab18a4c267c36b9d2ffc1d69650286a0a7626a696d926fee5f52326fdb769e96d921d9b62fb15d94ab808cadc2c5ffc5bdaa8fdd6335a2e2f916e8e3dff27f28b2ec63cfdabab133d8bc64c3d931e9cc885d42751afe9b915fb2bbee03a15cec20bb9ef76bb7e35dd241c663e39aae9a5551d8277bf23e96982579ba732f595be36911e75c04e723b375c8dff8f79c63ad4421ecf957f53eea9fe6b9f329bb176cd3c27ccf3a2ef86762c084ededebd76b587c95766e31bd1d7c204deb619f6ea47f5e628ea8df3cd9011e98e9d8d63c0ea273d8363b29c55dd9c2d93fc8e13bffa3bed136f780e7ba8c0f49e90d17ad36c5181d3928fffd81de3d14fb85f94b54fb097819cb5bfe26f1c6cea8b618e391b474ee45e6cf51f1032c8cf74a7ef7ae490730f69f1966aff41bedf87ee1b8e38a3f48fb4df46f9bda26c4985f0df31c97856e03ac7f57fd9fef50cbdf7c3fee63d2819ce6ff04bb87b47d74ac53ea20cc2d81c7a3e493737c1ded9bdad74d48e70de919ec9e82ad292177f39feffabd96d94e0dff958def8ce814aba03b4b0cef209ffd4c26ad0f782c52817bf4f8391d8b2e09ac2a368af32230b7ab203e406df7976d5899e68bcba38ed78e825b8ddf53f56b33de10c82beafd9bfb39755f14c5b2c7bc6fdff00dd5317d0651382b16627f68feb24eebe89073d4f6ab65ddc755016ec5086345f5f57df003c756c6a313b1b3f47b8e6a9d0d9abbfbbe71ec0127a79ce5d920d7db3a27788ec81859a76c2c793fe45ad0f068000775e4e7895ae7cee58e6653e6143b7153c75b65d87a5bdc0fcfb65ad1fcb5c6ed20e4928ffcc294c782e3176afc1156457456c485c8fad15565b58aa506be74a56d72466a786259d8df721b8ddfc7afe9d86cf89eb834abc810bc826a7ff1b93b10b2ad9aecf075b51f889f927f1bab37d7ee4363f03d5d92cf19f5a5d3e76702030c8f1f976f304e6d2ed7382f10c7068b2f69392b7c3646e219c811a1b6b8b8c6f80c15ff3c1973724e5a6e11efa67b7d2dd4748e85ce714be53d990b194bb7eea951ec928dd81770560bec9881eadf6563fd83d76b2b72d298ede3c06b27b698db1f821b69ae9c618a6e85bf5f3f8316463c483afe39b6ad6a15f8f717ce1347e65bf81d7affa679e6afebe9a0f703f6dae33d45fd99148fe00467425914e96e368c422f9f94f92126b629c27efd5dc933f4e5f3fd4aeb1405ce95efac026f1b074fd4d72162650cb3b3160701bbec126ffa421fe7f91bc81edc8de7381f90cbe1bce6a7973ccbc24e68f4d9e3f17fd9f4af896d7d70bb1fe93920135e36f4fff21bae6b27546b0721cf07e405e4e8e1fc08ecd3ff21627618635fb1f3d939f9b1176b17af0f4537beefd5bf114f85e243fb3a3e744c8c2e3eefc45c34c542fecb63acecdf974dffa18ce6e3016dc1be5578ced471b6511c32447263fe20d632b054bd81729fee930ee5c6e131d9b1b2a7695c96ec0f7d8c1ade77a7b941d7da79c67367f0f9dba8cb6f85fede98f3ad5f7be40b137acce2f8ff90ffa2ceeffe97392cb5e7f55c168a67651d80fb9ec5bf62db3c4d02395ee89edd43ff8aadefc7eb3a0b6705c25c3ffe850f86d8054b848740ef6d819fab15856e6b62e497c438dda9df42f8e3ff0ff854b23c2dbbe08fe4e395195695408eb1ea236139347e42b11fabc4b81de380fa43700e4c167481c33e2dcd6362033686e65f127b08c72885bf89e717529bca2de26d7e496c961330f8f5c7699bef4bcb9f7bbef93ede986aae0493a7ee10e3a3081bfb7d1574f7c0c13d12ba1639379dc4b86d0183a599e31fe59121dd5ae99b125711f2beb93fa2a69e62a10d14dc007a66539c19662fb51ff2132f4bbf9cdbe611b04c77f43ae46336e0f2a7900b4df530ece7e5d7553e240dff7f57c7b3fe045b148f29c84e84658ae7a5eed3b2bb97b46ce7895dfc88975e41d6c3d866ff17be2cf19e6d1c80af849cf7029b35b67d585b0c6790f90f28c620ffed05e907c20f477f13e7d9ca2ea0be945e2f50ec8bf2962f0db2bf01e306fe0ff3675bec3bcc12f29dc259c1790e2388a3d06b0bdbcfb31270332f938ae7a96577c776db2bc0488b896ec8b005a7eb68e75e56867f7ed9f41f6249c62539dbdd4b621c19aee4eb6515ceee59e0df27f7d76ab6b0d264f3ebc2f00e3e883d9d56ac764ee02ad0d828ad95e2d83650df7a8e696de83d5e9aed6c40f72bc338e3f8a16562171f2b03ea57c9779d924e8c640b99778957256334145f3029cdd68aace302f2feb475c1e2404b367ee4fcdc025e3d8e2102cec604ec7d886d6f17a5057c179a1fb4e0781869fb780d9538ae47da28683c7f29ed118b5d7fd66250449fa7315a9a770b7f7b4b1e4f82fce479f71c8590f76e01f78875aaf52f5ca839d5e38125eea1f240be8bf2dbf27e6e196f20c8e47c1574ef63f11be48c418c281ee0fc5d147705bfe8ad3b1676cc958e8be07f698b58ef577e70a9fb809e56cb09e46beb65d34f5c83eab76e755dbb467c893afedd6db79bfddce2bc2896bc0de6efd36282023704f934c535aca7623b87fb4da5be8d757d8cf32cf3eb1a31fdff7fc1bfca7c090bc5cfb2e9823dd4f02da2566549ed2ae193d6e61a8feda367b6da33543e4bfbf9df7cbd38cffb07efc7b98ce6d9b7cd5d6cdc0a3c8749e15d62233b6a763f9c5d1e3f17c43cd27345b56fa4bd84da7d6437413bae1d1f57610fb50b7fe3fb885cbccaf63cfeb73e8ff83dd49ec53e0aa293d9fed3c288f6ae61b533fbd76e3ca73c6193c590fa08647ff0fbafff237fbad843125b9eef95c6dc4e7a8fb60f327e9ddaf11cef5e591399c4aee7f3287c5874ae3ef35dc5e5ed905a4d3e7cd1ff17cc2740ce11f2ef31f5b728f91a0aa7c448d1c9f763352709c682f269315e468aa30d7122b74af53cd777f25e5fd1917d8a072fdee5536ee1917b01ec23b0ad7a7bbc7727b57d76054ea5c4c87689bd54e308721f3ed4dff5380270847debb95aec80eb6466a32ea7eec5dad850bf27e474709f14e65781b5ee1af26c70abdebf9defe2e4efb89d0e35e3ca79906ce91984fdc589d1b51363d6feffb0f767cd6df3cabe38fc5576f976c7a146c74ed5b97024db9123d2912d0ff2aa554f81244441e2f47090449e5adffd2d3400129c244a59ef39fbfcf7be482c02bf2631361add0db451e23b3367dfe5b13e988ed81169255c6fef2f7aa1ac1fdeea1b2d44ef5a50aa37c404cd7c505eca671556877c7db8cdb46e6fb8cad6dc794d3c2bd9c7ed3df76586f12f7c5ab23170d017db2ac6e8ca62feb3b3f6723c42c4f4552c1e6d25be56ee775f89f333bae7e38aad55a5f34fe9e7c733cc8b5f2c2e5cc13f47b451fd5d67d9bc86b878cdf5cae235323d96cdf4d0af4c1ec8eef6e67b0e7e266023cda355c16f93fbf115eb24f7478faf4d2e5b5f79cc40fe3b8b0b62feaaf38f7c055df249e328e77743e61348241fa72a8f93f4f47006c243efcff6a31c7b5dc48865f33c86bdd44b35ee146f1bee17714aace8acbce9e721ffcf2cb6dfe13a30be02ede6fe7a91c653e5ceb042bf41bd6bfb8de9f34fecb79c0795744d07fc5b39ed1b7cc32bc461f9f7dd51e84f47ecae419aaf8e43712fe1357fafb89b30f89594e20dc21e2b025a382f03f704b2753b4b9fd7c6e2927972934d24c31cdfc7c0b90db1ef116b6846ff91f9f017cea28cf49f4c5f72727fb03978ac3f92f2bd8c53676feb8ed94159f9611db5cde4c70fc37d047b0bed33956c42dee649a14fe693ec7e48759da51dec17d5ee94c605bf3b72fe587f3fa4b406fe7e61717226e36b7687cb88f9e2ebbd21b4dd89fd32a1f389f5cb63687e3c36cc13b6869ed42ff93cf4261ff0d72fde09bacad6e65f2f3fb2df4de517fd559cfbd99a5f9af720db36d445d2671c3df35458671dbd3fb17e71b909fa3b29cdaf64187ebe0f5df3c10a593ad8a0e3cf0fc39a7d3c26e083d4dbdbfa5acde637bc637c2be6733a19ef2c8ec9d20ede373ad71aee1adda40df35cf4bdc6754b543ef82dfba20bf9968d1bd017247aaf9b9d1b7a3c30c71be6b596ebb1feaccdb5d1b96d3ecbda1cde91b779276ff3599676b8cd9f9bdabc736e9bbfc07a2db5795fbe1f26f36da76ba15ea0792bca91990fb1cbe22866fac5224fd73f407f119992bf4c862d9eb3c8f672b2fee9a67ace9bd142cc18e7d9c67737ce2f382b6caf5162f8fc1c7da416cee897df9dcbebb47d453df91c2febe6f95d08597d0be7963e9d9bb5c9ce2e89fd7a416616e57dcd63e2f1bd071d5f45f9e0e9607929df04fd57610d2bdf69c0edfe59fc8fa26e41e8e6364cd738eaec0b7b8e33e374e576a542ff88f902f7204f47b7ee7be667fcb8d5fbcfa9f9f37165dc77ac5771cff83bbfbbd0d90fb9dedafa183d72b97c471623598fbdf7f577bb23e243988e9da2f7475f7fb03b98dda10de9b9ad1874d17f9b1f5a47e8ea813fd0362210432ea56b14dc67ceee158b17bd7d979d55e177df822e82f6b7664c1ce95c2a8138e2ecaefe9fcf5bf35df3b85e3df8fcb089debb4f3e47a25eec9b590c91ec5eb3dc76b6f8502db3f716eaa3011d5757992e6d7c705c4973be304ee4f4ea995a3b3f173b7f077d00e51775f45da123cfcf769de5ef2762d13d18cebd2b6cb0ccef6697c7952a9e69aef8acd07127e900bc8acf60650eedacf2d9dbfc1c4476479ef00b80f87da79cf92dd8eb46857dbcc3fc264bfb755bf0d96adb1d393f5bee7bffd7cbeea4b21ef4b5ccfdcd2b76b4a2cf1e95a54016be2ac9c699fe05f476638ffd1d49fe99b92ef4aae89f77c087b3a247cfb0e28ccf15dce723ec39f7f919e79c0730bd141bbfc3cc2efd96cde361ae7bcb7dfbca694de775abef5b177d40605f0c36db1bb069ce7b8bd6be2055da4fee0f72e4fea91adf8c5f3fb5ee62c37c78a623b8238ab62b3ce7f6340923db9fe95eef8edf1b301aae0de76d653ebc7a46ff8df5d7c33d5d3f58ace83edced2be486d47cafcd079da8d17f4ecc77ad43e530f0a713587e7eb8a6ede837c90cce7dab21dc8f0cb611782edf83d5d13b6cdf0b77fde57c2436a4774e9d475f7766319c291dada43b2ecbe5bd075ef5deedc406c80cac8ec7ce5d191fdaaa7006eea766eb0f742dbd496a6ce05999259ad8f878b30dd79e7fbeefed45ff796b6ca0ac69f6cccf5194cefd899899259f12f0030179eeede19e64313d47b5fe18826ff33e7fcbe2aeca7af6ba3628bc7bfcdfc82feae77dbac8fd78367aaf1349efdd9bef6f097ecbc7c0ec7d1f1ebbe7268b75cb7c8fee3f9d4f7bd19f9deab3f4a0f71fd79f6fc297362be3ade1bca5e6c37d628e6e3cbd771318c94d0dbee83f04fbdcf7b7e4b3f7b6a1eba074874fd3fbb44fcab3df9fe18c53a97c4f8b8fcfac9ef27d3673e7be978fd162195e7b748e681d389ff82a62d8d276092dfdfd3e10e7f55f7a6f43d9a7694a6ec45c82d83f4def2fce0fe93c59f779b5d864df13faed3f3f37f9fe16193f9f87d3f79c978bb9caee5b2d9d6b62f7b382ee773997fcaceeee89016779b50e6d3fb8f7af5156f8dc1aaeb9329c67b07115742ec26ef8b37ab689db3e578664475e7cc8e7067e14e2380abbc9e3c37d5ab595debae6fbce956cc5abb29d46f475d13ecce791eccbff704ff977eff395c75a11657bd7c037838e85e2b99c1b760701c7b1e7e2b729cdf3c34d5fcfed4454f69e7e7ed8777adf8cab36f9d3cf07f0f8e42ba39bc7001775ceecb2521d32db292def5b4e9395d52eda4ea7c9b5357b61670699ef52f11c01f7234a3edfb90e76f4834c7b744ff26ae9bd6188f3b86f5bd93783df1d0fb17a3ff91dedf45bec1bcf5b9d981d393623e50d9f1f331ef30ae2c4f97a16b7e2d381fae63a1ea7c883847ea758f6cc26c568a02c4617ee74a7fbb68a1d979fd12c9ee97fb807bbd5bc37e4bc21b7dd656bdebde0dbe04795a7977c8e24de50f38e427ea10cfceec3dc567c676fa6a31ffc3ecaccbe9cbcbce7677af8debff04ed97751e73e156c5cb3fb5958f9ed94f13b7e679e34b640175be07dc315bfeb73faf991db75eaca5b435b2eff8695bffe1dc6a6d53b92ec1d257f4aa8d71df8c616fa9cdf2d51f42580bb40a95cfffc83d76fcce29896f96c136eb5fd743ee978aec4aecaec51ec2e04f055c8ee8bb8e3716fb2d8cac53b0c26efc206c962d5ccf9f9fcfcdcaa74fe6e24ea62773edfd91daf4ce6ac7bc7ce7aec461b38a3f2f148a6ef6c7d9cbec39d9557ba73d3f9c5ee9e8175f173b471cbe77fc4389971bfbfdf2f3f329bef5caa5b456625963b75386f7e29ebebad55e9bdbe7cafa8f9be0f9f8ae7dd981e10fa89d55bd67995df55b20d64b4b9eeeee0b760fd7e01fd9f45eb2be883c903bfc3a0d47f747f66deb1f24cc603a98cc21eb4b18a988eace7a979c7ce526b68d0c7b3ad7fe476bfc9a893dd9b24fb2d339ca6cbf41ff2fd2f769daf40bede16eeaf2ee5b3fb4477221654e53e0e6e6714fae1bcadd7a5fae67cd797d7fbf2fb4b7dc9e3043fffce65814d1d2f87724c473f6c33f355061b43891f089d4664e3d7e7adc9ee9f91ef2c16fab16cedfff5c0ef679274aacc462dcb0d1b4b9617329ad2dc62fd23e417a6ff917d278cbee99b0f9a3719ad783d86ec2ed5822d01ee01b71e3beccce6fce1cd3147c6957cae67f1a1d99391f9839d0b7adb3da67ee18c635d39601cf4de3af39abc5fa3ce3eaf0bb749ba54be0ca5b3a7d5b2bdc2dde233f7c9967d34efd3cf975b77c6ce61417bfd71f9c677051f92c9e807a1fb5924fb388c249fd771f17b077d4e38ffaa2b9374c62e5fefd8388e0d3a0f607dc8f6cc9e341e32bb9718bf75ef9f3acf2bf3e19eae3fb1e13c327fe4bba6f932b43fdf9f53b833b4a775413e2af9ebc0d9efb96c1f9365afe21d43fc8ecff4f3f5cdf904bd50b33f0a9b0ff93a28fbd83c9205ed4ffbf3279c7904d9b3e48753bab7273bd35e5aaf6bdf5fbb0ebdf768bbdd45863389783b45cca741c839af6e613c335e53fae6a6bc16c6dc2ee4fdaab7d3d5c9a545df1bee9f52b81323bf47cf361cd366778a0a39584a73558fef23424966f89333fa0d7be4e14cc43934c8ae700e5dfff9664bf74e0afacca67e92bebab0ef3ffacd82af1195799f08fb2befcde05e25b897e807c12fa07350d1fb3060b1d59e215697fe6ec79f2f3f7c38bf0132e95bfdde72ee55740cbf0a7bcf8dbc17ae9381afb2bbe8733fcc4776df8a1c8fe5b6514e7e22b57b0338a700fa827b895f9dd107332906f9c173ab85fb47b3b5f3aa663d0d4b369228d7092da4bc9bf073eeb1bfe21ebc177ec7b9db69d439cede1fc1beb8e83f3f2d3e16c5bbb67f86c2477863be6bb6d1a43323226e13c45806be6f243f56a5d8b52c66b6640f5f94e3f98b3b0c444cb6879b2d4a7ed8c6c79b6f3af7e127df4bf3581b743fec1bc9b0c273176c7fbc12e76f8bb1c207d6cbfbc0d2df6f5273949d01ea1a3db05faec4f9fa3c9efbb36f505efdb01ff2ef427c37161fff91c7c17eec9a23160b7ae1bcd27ecae24ca3f78165f46ea2cf971fab4ffa4e07e652d7e8ddbb109fbeb7807e3512e65b81587cb6ad31fab135789b727dc1067d3cc21efbf9ee469b3c7457ba63efd81d963c3604c436e7b17a59dcabbf455b2d1e7e74d8d96ccf6276849955ba0f42ecfd1eead7301e1785b6a5ab75b2fb055e0b7ebe257f4bcb83bb4a39aff9456ecbdff4d879638ffb0f95ee696077cc8a3a64b2f96fdade3f9f21761ffef861ff7edb9185fbd6311f6ee28fd184ca8d63f07348bbdfc4989a8bb47ee73f5f1e362236fef5b4c7dfb51ef2fa89b8d4de969dc3396237aad7adc8f7c241fc72939dd580b360e21e05717f3ffa50a91c95a2773316f10ca95c45798bf0ed9e3cdceccc073b421f7e768f1d6dcbc94f2d401f3f76790c608843cbfa06ece330763ae8e16d083e3370a7eca30f7b13c7b0e87859bcefe09bccbebe5fd1b1512ce35bf98e9f97cff7e7eea297fb06e63ca228d3f0f7d49e0d9d7cb0b926f9d2083fd8c2799aec5ed751e68b9f7dbfe87f9f9f8bcc68febbdd9157bc7320d3dff37b9f63163ba0641360f24cf90eff7ff339e999b5cced275d398fe9fc6bdf31d27b371dd0cb7ffc98513e893e2ce93d6057f0e8dafb2a62f597630094f5fa929da4b4f695e84036fe09710beeeccee77bc11602faa1e7fee3d6fcf8f1683ebc45b00ebae2fc47c5369eeb5a1d7bc5ecf970e6d86131b699ee1c3ddc24e8c387738cfad8b3cc77b0b3fbbaf3b629dcf32f97edb00d92ae8dfdc5c7e3869df329dc8bb413fe1e35f7ead79ed11173bd9cfeabc61742d68d3e915b57d255b8e25ed0e239c3fc5ef2fcbeaed239a051f1be0c894764319967ae968d93df2ff5f5983a8fe9eb4fbaa7b007721968dba2f77b71ff51dd188e738c6cef586d0dc7bea2dfa0bcb4f9bb055ce11c5d1d9edb7d9adaa264ef3984653627b8ab2cf351beb61e7bcfbe490c3837d7f4fd621f95cf649d1a1fa1ae6c07e225647db912e7e27a8b8f477f219d792bcc997b61d3b94f3f46dc775ad2d32d8a63a389bf78592ce03b699c8c6e5da6ff17b14c8cd27921b91cd93c2fda1c8ae3a4701e59ef3ffad8817b39c237791c96c7163bfb9c50b9e17772eb16be3b82be3426c57116f15844856f8835b71283a8f0bdfdbb686fd0c3bb6fa15ef16da37b46cd36fa2addf3f4a69be1efe7bbb7e5f3ebf09df998c23d8389de7bee327de8d098905b455a4fbcc9cbaa503611ef89b7a13853e4e83fdf5234327cda178b3cffe663f4c8f2eec1f771a53b336b51ac87c57cd0dfc2cf118bc14ce574beafede83dd3067990d4fb11663684e3be1eb92f5a69dd29ef054b7bba24f7a9dbd5ceb3026ffd50af26f2dc94d7fcb9578a13b42ac57390c7f48f6c3e419b4b793cd65494c5b1e2b869f358751ec90f6274a12e3ee8fae97c7c63b1aa1ae6872fd602799fca6c2266a2f7df76ede347c86b228b05a03fdc0f590c1838a325add9b76ee53b1bb6c6ff7ef95159db1bef3092e84bf127a4be3e4de6cbe8ba95bb835a9d5b3ef13ea156efacde31746e1caa5abfaa7f9bccc7f6273fb606f3117e451f3c56c279f291f031a8deb3c0cff32f3e54e9cc7b71ad94f540d2b9f7a3ebb0f0f728acbb2599867daf5e86a9ca514c67dd2037c9678b8fddb7fb6767e8614d6e5cd7e53bbab3b4ac6c25bf8cb6ebb8840b272373a7f7d9bd17d3f795bd00bda8f147f18b0ee9fa0ef1f71a1de0c17be30af590f3780c1e76e769eefb7c4ce7f7fa70b36367059e7df3615f8e9df33fbcebff3eef62be2f9c77fc57f743fb7cb07b8f497eff4ae95db24c907f4f1ad30df727fed78ae7f691dd3f9bd727db6f48e5cbfccae43bb80b7b91627b80fe503ee723f256126e673df6c5d898440be766835ffe1fe15dc57863529dfe907771df2dbac7faff7c7cd03f896591e98f0ffa3afb46f711ec2c86f3b679766e92d9fc6e8f737d1dacfdd30fe6873b7d7f1bd0b13aededfd05c460aea3fdff933eaf22dfc9b4e5bc929eb33a76649dde4cc807dc861acb7eff75779d729e5a3ca7333279ccf82c6605d067dfaebfc3f1cfe45179df96f34169ae35dc012df1e3a6bba04f9427f9fdb2d27b590cdf7365ceb5bc0e66dfe6698d771217d635395d6a87fbebeabd64a490bf3f743fd81ffa2c57d710f99ef543eb0abfa7f7c0bd5359fb6498c2fdcca5d80f592c087eff54352ee9e6f35ddb1a0edceb37fac3b5cb2debe4f85d4310abb674f758d39d17f27c8b8dfe8f107dccbcc7a4e38a78e8efdd4e69df62478b8fc7e16bdddd66eb475dbdcf7ddaced2f5c03d5e768fb5772186827120fe82f0b93026eef356efed3be8e38731c9f3d95c9a7b56790e7d8c1e07d38fe278a1ed5257cff37444cff6a27793c0bd89051d68435b8e160edbd7a9743de17caecbe386ff48d07b7765b8f64cea373fbbafe0a788d3739a9fc5c7e871833e3ed998af8b1b5baa6f1e376047b26f176334c0f9d045c6fb6f95d3c64055769f8e986f6c31ce2adcbd2a3fb3fb61615e64f3a4f5dddaf9ba32ccf51de535b2f4ee7c7d2b60b3721f95bdd621f978d911a377d3351ccd7e756eb6e6687235218f37175f2e7c146037baf8febf2f7e6fac8bef17175f2e34e460faeb5ffffa7261916815eb5f0dcf518817211b9b160e14cb0b57c47170f05df1edd8226ea82017d9494842c544e14af750602acbc07323ec9a4a18180a0a431c85f43bc45d7af4af8923446c4872d91739e6cb4548527cf17dd0b9b9fa72e17826bef8deeb0ebe0dae07dd411752fe8a0850f43abdee65b777d9e9cdbb83efdddef7def0eb55a7737d7533e87cfbbcf87241c2bf4c125c7c8f82187fb90813f8dc186f2fbe5f5df5bbbd2f1713d7bbf87eddbfb9ea74afbe5c6836713717df7b5f2e54f86cf7eafadbb72f17afc4bcf8deed743a5f2e1ef29f1f7ffde523b373f1bdf3e5e2d9a4efec7cb978918afec3de848547cfd88417dfafbf5cdc46c4a12579c106fdc870f8eda633e80cbe5c68214de95ff5be7deb7486bd7f7db9508bd0fef56038e80f86029ad5f65f5f2e46eda11f7ffd15bb7188cd8befffe87ce97ce9fcf35fb4bb57388006a24d76a1448eaf386e74f1e562e2f85e10fd46d1eae2fbb131918f200711f7e2cbc5d833d8c09aa3c0c2117db3e5293a710b34cf9e17153faaa2c8585d7cffc7c5d78b7f7eb978a15f121d090fcf18859e7bf1fd22a44fff61621fbb26768de4fb7f4845b43ccb53fcc08b3c3d5eb21f175f2e1ebc7b62e390be9d96f2ab4513fd8d854dfaf39fa2c60038525f31052e9a66cb8a6cf157cb535c3aa40a2007051b1d453854e8a7838399f47fe25a8a839d8b2f172e8e945514f98aef07de9216788c7d28ad1e2f09ad8c9e449896c9f01c3fc061a8e829f17b72c2d246119613ac94f8f2736a131d9edd081197d60423bf906093302a2404c4b57802de435690f8d0e2ec878258a1d88341fc15549b3f9b72a619a2fc011bc547b3371c766f2a090a71231cb8c856b0b94381199e02539604dba604b66de247c4a8a6e4f44b82a243f92e09232cbd61e520e9298305c835e388d8355961ac4736ce331c73983f503ae9c918480f727b852bd42d3cf5865785e761b7273d973e19d952b7ec879d9be293e26fc8fee2cb0576744c4b835dc333d938103f1514ba5df9594721eef7ca295783420a715190c82946b8951f2d4f971f57782f3fae2973909e7d9838d9e3dea1ad8d83c00b68edf0dedf223a149736a2255f3a51713a3e6317ff0a3ccf55a2c83690b1c2cab65784e8186fc9467123bf9cee05ee37c5c7c12654fe8e911b11bbc409f4c808631261fac3a4ffc1a09100060ee952adecf72b14ae2a9f363c631378c85899ba92d5e9603eacc8417414a6a32020b8c5fbf89c8f90751c6b7a94eb1ec7e120a0e3a20dce0b425f6f03e4f3ec306e45dc88092847a1240c630c72c33124e5e86d5a32c074ed390a0bd1120b21ea28161b9e6bb2e9740419996144d9f8f19746d8c60e8e82648393e3e81d895661848c03ed647bd6e1e113601319075a86e567ccb33550593a5178b0cd43ec4641720972820431d1161bd64ab1bccbd0c73b85fe574110d34629a222c3a5e0b0c80e51af53425a0159237b8b94f52eaa7c093b24f051480cc5f24c36db60c90d0fc2e802dd02a1a02040095fcd9bb15180f1e1b70182736e2e2d1c0307d8d46d646ce8d341389db8a5af2f5144564a1805b151aee6d24e5c57713d52661fcbd0f522b24cb21fc56c8bb897b47103a22b619996665a9e4b4b04a26d53166d01be043642b2b107929ae1b9db5668beac3502032a04974449cbbbf46d94588117bba6627b06b2cbfd580b518c3808a8447d081bbb648b8310d9975180dcd0469177f0f35b64139382946db75306eaf172896c4f59e1a0dcf405399e3e0959fea8b07f18605c5a9836a005f2a71110bfa60232156514558e57c444895f6d611b5131e460e94a9036af018c82dc4a27d5e2cc384011a90ca17a30dd65871172fc32dab36cac589e8f8c0d8e94c08ba3ea60f70262db48d9613df428ac984da518627881cfbf7d6907f171841212c7b771151bc36e32f65dbf3143310d3fe4f30847168af00e25ddd3e0bd6638dd8d35974a090ddf3c90eb955965213734fdc6dd65be0f356c82dda83550d921dbc691423b115974089926ddf69dff821063b30575863756a84d7173bced95a58723049ebbb4891199c83a912cc46e18b7698a2a91b2242eb249949c476d79cbf308bd687b0aa189225495ad0fd32c516c9427f2110a12603a4c4ea1b1bc30246d067c8982ffa9e1ab47a803e4af4e21a04bb0e399b82c8d1ca66239a7532871b43fa93e3c67eb9c45a49878ebe2e84fa915e29a787f627d89eef7fceafeec3095835c74223e46b68f715059b38e11d66cdf8e90e02820c64924ee6913ccf776a7c00314619b38243aad6702ec78113ea336e12a8e4c6fe79e44e3223f5c79273543e823ae476e4d1221d72aab61da50283e4a6c0f9db4d271cad0586133b67150b395394bb55c412ac888c8b6e5e25336ddb416209a8d3ee7103329f21cca1007db769d2e28e3c83b61e657a914938486b7c56545ca417a1db9ee49c56c2b1809b84d4e42b794a204de7397e494e63291156e4918239ba42755fb9c51748a18c349da4b3182e004218693b497610441800cbc8ced53182627b53daba560c109e88a89b7d88dcea2242e89c8c97d7bf2aa2be87018220bdb2839ed73ed972a4ee1e268e7051b937eea04325aa353e05e10192b7cd2046cb9c40b74e02d897d5a23fb81e7e06885dbed78381193096cef940f9d2c4770ba1396774eb1c33af24f618b8ce0cc1582135366743ad5c9fca84017e0bf635cd6dbb6215f616447abf4744270e038998ae58711b3399f48dc56c62f5131de713a219592431cb514928bb4998c7706e909826f91728789b58afcc0db928af2b7c613a14ea0398ba84e89799c3442aed1dc2b754407fbbf8ee0205b6e2238a3364046c55072628d64c233be1b22bb799834119cf31d6c63a3aa2f6e4b75d6170fcaf4cd242dbfa52363e32d9b756c198e440e0a9bd7e90c9744385c12fb10b390b187b77e0269d419f1eb70209cd7eaf4ebd0c219a70d4cd1db94b3ec8f73186e22ecb428275d4799512f0eb062611707c4303cc74741d5ba7494de0b4c1c60d329abd88f12fe1de3f8f8ac2ed204c8353de7f46f850724807a8a6815e070e5d967546c87ec4d8be16a623d6e9682040a7612c7470aef45a6b18e02444e22a2e55fda0704e10a0514ab3ddc3e3e2d322ce87edbc33d7d8d8d288cbce0903052256b3f6c339af6a32f236933f032f049632ea36a39dc8889dde890ea4a00375bda98c79b92e35a8e638176906feaadd181676cc213f0edd8ff918db98039280857c83ea831cfbc4f71d41647f7c16d714a641c1f0955cfd71ad069d3c4b751b4f482662b4506041bbf77bce2027874db502188ec66cb9b0007784965a2a3b81007c7942b32747f1c05ce5c1537973a64e21aed8667441c6ce23d36e236ab31a0dbada514da6a94d6384634a0dad5880e651cf85e659cf8cb10fcb6485929c933e8dfcb9a22f3ecaa7a24cf50a20019957eaee42b3b52e17512a8ec092ae7ed82aaa1678d8c8d8f6c0a715174e9979d3bd63a76710475660e9d0af19a101176fc4b1c0497068a8c55e54b02e7079e51712c28e72ab9cff821948f03e299a4e41dbbc15be2ea71b0c14a18aefeaa53596f6c1487be17468ae1c7c4acb4dbc645e64ad978c85d3666d0b5216cce15fb6fa633af2c91f5505cf6fbaa872d2b2ec3f5b85a5fb88d17782ef828563c493674df84a3f2aabb09946a67d84807074e051b2bef4096e210d3b4f10e95c76d86b23cc7f15c459c513800313cbbcc62ca90ca1c2b03985454c260cf24a6471b250e4a3b126687a659c834839ad99d03f478b9c4c1659571e410c373ddcb101b7140a2e4d289ed8884518051b940190148ae7a59179be75339f8b256879a63d8afc3b997740fed962d4d4d28a5ec5d5d01ea3672372bafac8bace00c12183169893afe59838a55b4911dab3c509aa051d0dc5d0568cd7ef910b265611b6c88f5e09a7d4c3db04dcb531ca1d50ffd3ab54e0b8296556c353c3934deb781d5caa5f5d0aaf2af19d7b23e145ab3e96800577c381a70b5a2693d36c08657368c1e42b6ac57adeb663d342c1f49698429c4057ed7aab1647ccb42839f71f5884405dc769e39be8d8f8dc1e37cb2c6d5bc1e73bc966d475b8603dfcdd6601ffeb0838407298e8fe37087ca7bb00a262acbdf5584e8d0cbd8b70254316154081274946bd4fa2d5440f41f659c8a8ec2b250d90c0eaa46e203602f8eca7eb1b5e86c3fc91421e51d5b3b9aa383ab48e61f98fc0e483f75aa6d097368ea38a155de3b943259419a4107669d8b2368d9a6fc00c761cd39aa1ac0e5517ec2e4b54b27dee3a08d041719fef197eec2e31818e795adca49c786ab2729ca88ec68497577537f06b90d4611a7418f232b8ca8011746a6572d5f84a9748d1de4ba555d9483a2c86542b8ed05482fefa1b27c12a2ca1e8866467ee0c5263f81f097381ff117de47d80d89e7868aaf57f7070ec11b4b31cb8e7b0ed9106f454b5935a1e7799e1f95b35ce229ba8d36b8a75f86c429372be4b343bdb5d9746f6edb2bc5f0fc24330234812cef72e539d824e5719521e83039f616aeeeda21bb24b139c1654437a33a0af1f0fa505e3d844ebea5173828022d47768ef818e6ea30069eab8b6823ecb2dab98dd0ca51e24668d5f9b7165af577ab85ad50b86a09538c8ab0d18c0db045c208074ac525ae050d1bc62793c118cfcead9f461bae50bf05511d4b2f03b72820e5dd98874212660b6aad25b41692f35d230eb6f87432eb0c1ac7334b55f47cec4601322887957e57ce9f36e3948aa2e800b6a2acf191bb5ef63a9d8e82dc28acac7595ec86c3bd3e8a6d1ddb36721270df31bcd8adc82dfec6aa3d1def3b38450165f39726592e6da22bfc6f0997f9c9715fe9bff28373b50e742d089aead38292fe5c45e5db06aa9460af54ca1d2ae3989e0ceffd0aafaaa2f273ab24d2636383a3af5e6029bb9d6279a02bc2e51eaebca2c6805aac96b16c6e48962d1ddd6e0fadaed4210e2c22fa1d3add4191b1f2e1ea99227245022f562ccf0fe96b14a37cdaaf0cc8a73754ba04f697ddbe62a0b2ca86a5fbfc120a3923302e4dc532968de94a68d4f8994bf991b7c1e56248b9558b0ae58891b10a144f5fef1bb2221cc2b6a3ee36890ac8a9789e572001fe3baed83b2250de8303dc6598847467d7007063c7f0cbb330b6bc604d7b59313cb3acc5d8223b4136025d34d3e65695b902b344611461c7b72b4e8cbb5512c4a18db10f126dbef6d7ec9ef6c84d13250c5797c8ca747b3662991ad663db8bc329d243c5c1c1c6c65180b1f4f31296504ae57d35b149c2afc64a5992bd1e2f4b899b44c781b2ed37242b56e0c5be2cfe833559f80e3753389ed904f011090ed0f36c4577f9425e070a89e51eca5374f3483e5338d4e5c3cccced017590bdb7e452ca5e679858c701f03814790ed312488926b1aa2979ab9ac48225e70846b20f37a2bc83d9d931460900031107e58fa7cc34554c51d8e8afc9c8397e617e34a132934d1300ef49b926343f45be10433d8573464fd163629bd24fc97f88a59a1eeb91fcfd9495f928400e1b068a8f8290574c66925ece1161698582ec852a1f190e3e90050e880667793518be5d3b981b36e67abb2561c27b4d365d35864d792b64acf8cd2207b27dcf4ebafd4ee35b0a02e941807c1516e61d55c54b52714d6ef68a23c5aade895587a202a76ff987731514387c903663b06d21870966875099407900949f713b000a7b9b06c49186e1d7c9b0bf4d18be0baacb6a1c6a61b852b245aa213fe70e90f897af6fcce501fcc6f576eecae3f7d2c82017478aee576869b2e41c50ce22a65ba933a48b7211740490df4f7110525b5ee26f070de95775e97ee0ed93724698b8061d47b0bcd66686c4b56cbcb489b5aa14344c42218d969373c9d70dd112afb0d0ad9781b1cb5c89e47470fee086199d982488ab730e30a0c614ce5895dcd82554ec82571c04b8356fd8d7cfaebdb87b4bda3bc1a5245f2558769b497e051c4dc9c6514bbc70bf69c6e72b340e0dbe836a89f67c3e0ddac0237edd5f1b745607132fb7c71aa84ac57de0b873e8299411dbb99c4472b447729a7c381c072f898d69239f00a7a2435bb8cdaf2a6b81b5b04bdaf61c71fcb6dd052ec22db17e802c07b504b7eff7306add1d5b1c84dce5a0199d1de26886705199251cefdf025c16b3db5258248c980df90049ec46c4e1267db244c6915154c41fed717e7753763d1533f21dc3c34aab203739052e2e883a8526bb278a13f91beb2b718576c1bbd4896d275ff942d994a9acb0ede340315681c7773ac7a0542c5a12a6856e067b2153113523845ea882b048d4546c962559999b10f925af784bb209700c1c07874aa4f876ece862a37d04a3c06da5ad9094053adc59fb3818f4e22d5aa04c611276feaa2dde2211b15cb1356c4944ccbdf0996c4de29acc98dd96c0d3d7a77e836e044ea6d9443671db91302ffa56d0dc0900191bff0c12c5403ed289b8ebea54ea9098581712cd31da006fc5f59447b1e0de12b482162cf0edd1d255292710b5eef79cc422a77e4418044e20a9d1549f409d1fd83c85886f391b28a453204720d0a8611246cc89a03d5a31bde848eb0a22073b5e707088c32183fcc2ea23b863fc8fa188776459e238a11926079bab8c6dd96e15b2a33cb2864208cc01724e2ba3eb99c591b543814b5c2bfcbaedc8c90972ecafcc72584cea5f7cb9e06670b00923d3c601f80b30ab7760e40f4b70c45f45702f38fda348aa7ee2b0e1087f330d277b9224776489e32b2c6bed83312c43209dc88fa0d064269dc26db0c82e24b1cdbda43ec506d2433929bfbe38df727828001b9694220ec2494978efe380388c9949e95e587ce6329994928bf37903c08f424ae421f9d9466912600bef7d39d5c5119c7591d3bc50a8cd65f5a05d7886ab4e0a54e5b77051de265121b9a44ec9d393d040366b627630a392c53525723af7e6c9f5cf388c989dbb49ff021e6fc463b64be2e5739d9139285af13f8a4eacfc27280be03757053804a614fdc394fd3e826100097fc75e844d3f206ec45d9f987f89081e21c791a0ff45ec1e91621a6fd142222f6c9626a9612a690a0a0d426a73e8f7b80abd14cf8225b83822a290816ff05f11de476297489f99a40ce3d50ba1e7d8af9058ac485ea8c44cffefb376a57f80fff1e77c53980d4df64309133742b4bbf97e2dffa518604f174f626689e7bcf6c26454c9e19d5c490fe166e1ba648339dc647b47de54e2597415e7046114f04ba5f3fbdcc3c435f89fbc64f99bc1080b9b0aa6d7437a76828c25e40cb1f0cc2c2c3495b511d7e8e5bf94385a76af8acfd7f048a7c5c5978b2d764d2f508e98345aa0244df92134fca1acb62d4e44b0380496ad26ad7055e3c901b21553ab1f40d4d951dac033734a1d984e31d30de9bffc606c1330e310560cacea284ea8c30f017bcaca6761039a50dc0450979d2bc7eb721b54dc8d5059d3dd082a29bc8fe240effdcf2f17731c46595c2237b66d969445226249aa67d2427effdf17adc331a988b822725225b4d383a77aa694a458de5766e07ff0def812fffda2fbb57b0d01c1806566d1c28e7f9b87823a354ed8bfbe5cc0655abcd2ff67a3943121f72b888207039649b82c6859772862960d7a9d6ab0b24effb2db9977bf7def0fbf0f6ebe0e3bfd41afdbfb7625072b5b223b3c1aadec5b16adac2ba295f5fbddebeb73a295d1329f14aceceaaadb1561c5ba5757d7c3ebc175b71aacac3becdf7cfb36b811d0acb6d5606587a0a7042b6bb89bbc1cc32c1f4012a21aa82c8f4b96c7236323928723e35d558c4726c71763e8d21c66b1baf229fe3fb3be32ef320670f17b74bfd17b5a077ffcb0270fab8efebefbcfd17aef990fddf0b7e55da387b7d5e778f00b02498ef7d1e7c7f36af2a0798b8fc7f4f363763371df3a9fa43398ac334c87055a1cfed4bb9a87debbd1e7c7c49abd0f57fa4f3bfdfc985c4ffb2cd8fe6fcb83209ebf1ff6beee84bf4440d92cb0acf316fe7e7964c13f3f34eff3fdad33e134f9bf1f9ee1bc39bf5f1e3df3e7f3ce48bdedb4d75de1076da3932191822caf3f1f06f1a277134d7b52a0d6d17567ba5663f5e5666df4d5edc2b9d99a3fb58ee1dcefa64ed7d7c990a6931129966df260c7e6c39b6b387607cf3bc4e8ad566a6a75a6efa63befdb2fea83bd98f51eb5d78f45fafe60eff4f7bb54bbebdefdea3d4fa6e9bdf33a3706dae8e66fcdd13ea73dfbd7dbfdfddbbcb75abff5277d3cb67f99cecd0bbe9f25f337bfafbecd6abeaf257a5f4bf5fea3ffd9b3e3df2f8f2bddb989f17b776b7e64e5ddd23e9cf656f6e27d46fb95e8bde7214dfb7cb07b93077bf3fbe531a16d34590faea7bd67df5c0f7efd1edd64b8698f8f09eb7ffdafffe3012d15dbb3bc4bb6affb1a6eadc3eb45192c168d6e6f78757370d96813e3f2e8b2717d7dddbdf9f72d1bbcd40d0b47bf57bf727cebf5b28094d7dffa83ebeeb79a95e3ff4298cbff5939fe1f5e39ca334b5a3ec63703fd7d6799ce5b62f4ecadbeee10f565b09b901fb6ee68dbcf073bfe4c3be4ededf9613ab7c8e4a7d659bc0f378bf7fd56775e6f26ce703b595fffe7efd15d347df9f1f3f37d681bce7d47ef4fae267766b2f8f8f4cdd1d0d793db683a1f5c1bfd4f77f27315e90fc354b0fc2772bd35fb667fea1ae9d4b9493e93eb441ddfeea67dadf7994c2cfcd00d7557bdc26c99b99938ab8ef9f3f66a9adcf4cdbe119ba91aebfd47779ade0d9fe69b2dc74159f1fbdefefdf2e81bbd9b70f1f1ecebbdc115fad0b6fac37de7f36562998e6d9b9dc72d1e77883abadd4dc64677329e0d26e4471fbd3f77d0b843b4f46d678e26167a78f33f7babceef9749e7e9e70f60b9c6c37d078d7e6c7ebf4cacf9cb6daa9241aaaeef2c757e1babe95d7f72a75a6aaac6dafcae3719dfeda66b75af25b7a9361a749ec6afd6d3cb20d5e677969ace626d6c7527632b56e7af034627d216f1d37cd19b8cd574ba7edd6be496fe4ea66b35515f6e7b0c7b17abf309c55a6a7a4bdfd197e876d3f55d574b6e07f4efd3e8c7584a1b4ed76a57a5657f19ecd5f56b5ef6fc1b7b753448d5b961bd935b3279f8f4f587ddcdc47d7417c44ab4f12254d7b3c1743ce9aa6443a669b55db4d1a0afcd5f2d6d7c1b3f8d6fbbacccaff1939c36567bd3f566fff4729b3ebd0c066abab1d494d6e16e3819ab83e97ad1d112287b86d3924187be57bc8be2b5b135988cd5ce746d74358a21b4ad2d6b96dca66a32e86a244f53d349accd37fbc958ed4fd733c0ab64d07d823eb1626d3de37d98e186d3b595d26ff37775d4d160a08e5f597fa5af74fceca66b6ba7bdfc4093d1c4fa74ec501f7788e198e4d778d2d1c82ed1c656a8ae5f935f2f93edeff57eb7f878f6260fb39b09f9a1b176dfd06fecb597415f9daba2ec436d3cb1d4f96baca577a954c7bd361a0c559a9795e12e9dae373bf505da2bc3a984e2ee604c3ecd67c9647c974cd7b743f99b2a19ec9e18dd9ea66944a48931a25aea7c123fcd6ff70c7397a8c9ed9e968fbe1bca9ae1661497c8ef1275a26dfa34578793f15d77ba36f66a72767bf5a76ba33f19dff5a6ebd94e2350f6014da3e5a27dadc2bcd8c4dadceab1efbd0e3536ceba4f346f3ea3fdcbc765864b0137ba4d9fe8f84d59bdb5d44aa56f26d3b53150b37169f4b404daabff34cec678477e97f632186af359e99b192e2b9b46067d6d6d58ea9c8e6998f3e57afec1f882799da8a341f234df88f1b5d7d2574b5ddfc6ea7a3364fcc682fa3cbd0c7aea78c3c6cd7841cb40db57f0920ca7c11858004e9d535e7ad79fae27946749bcd188d5f55dc6b734f6be1c076dfd0ab8a7f92de75f469f8e5fe887399fcb196e136b6c0cefa7eb192d47562f3ac6d474b29f8c27bbe97a327c3a7f4ef629bfe46d36d4e60b28c3d368b083b9bfbea5fdd7e37c6a28caa0517e0a7c6443eb389cae677b6d24c627e0689dbada7a023815f8206d0babaf12e06f7b581f685b8c8d84b5d982f64fbf8083fea16d61c5da7c41e75b77ba5eeca0cd5e061d753e83f26638e8e305e7b913515ea8979a1a74fde06db6e99e3fce66fbe99acebfdb4425944fc338eba82f8381b6de58ea7a126be3d7e1643c4ba6ebd71eb4ed0b1df396a58d29bf5d8832ec19df9770a3c18eb6ad36bea3e371c8da56a56384be7fa7d27acc37b19a1a30bfe81aa342bb64383af73bbcde3bd64f9b581b1bbc2fc5da2dd2ee622d5d0c186fbfeba9529d6819d4315ddf27095d43fe608c513e08f3521b0d7a745d833ea3df595b96ba9ec5da9af2763a166ffbda08703b263f18b13a363a93f1249dae55c103331c5dd3343af7607da4f598eca16fd998e8c3bc5cdfd131dc17b2c7d31cde97e3468334eb37e81bbaaea8bd27da1fc920a5f37e56c0cd6275fcca711b51de9e58af35362f3bd3f5a2fb076b255d6b87accdc49ab5489fe05bc073126d3cb3d4b51aabe986cb4d930e6f931e6d3be02519ee4ef09cec3dea0baddb04e4aaa7319501689ba83b956472147b9fc0ade9fa41d73568bb1d1dff749d017986b6ddfa750f6d9ce3689f0d39efdbb372cce4ef7526f79e35213f1cf4be0fe996ffb337f1d4f5ac371d4f3a4fa35da2cd27fe845cffe7ef9f3f56e683657d8e3b6472d761e3773da1fdd8cb653f3a86d53eb419a1fcc56232d89cae2d13bafe74b511c835432d35a01f9fc6b743318f38ae335ddff6382ed5d23b68634dacb3ec9b29e5c76c3c59947ff5b334e07f13cabbd81886fa5ab1ba3612f66e4bc82039ee65d08575337f17af13cce51eb4d97ac1e4e7b3db4ba5eb3bed132a0ff69e32f96996e66930c6871a5d0fd7543ecdc678e789b5692a64b61cf71a6b6b3a9fb2777541fe26b0eef69f3846a56b08df33a8f3d9b08023839e9a403bf4b474c664522a63d13a537950c8a93c8d972ba5e313ca4565e5f5a6ae8e7fb0262e86b46f9ea8fc99cec49a98aa54565a5b54beebb03eb4ba1cd701de0c7df89ab032187d2ed76738baee31f9df8ad5544d595f2f286fa46b62ef693e813a6aeb099b4bc0ffe07d398ed03947cb41d7333acfe85af79a421b26547630047fed8af26ac0c7816f76e57ad1f76beb0d7dff00e4d8d1b96d06f4b0de827c97028f4f60fca616ab135db3f2fd19c525dadc90f675744c2cf6a57d1c9d4743caaff277d1fde322297c7344c7c0847d93cedbb921e3fab0b719e5efd212ba0fb3f8f8bd63fbd2359545d4016beb097c3b7f97287fb59ee7ee1d553ade616ed3f55cec8d27b13aa732d004f6af4fa37c7e409fad17d25ca06368d329ce0f5a07909392e9fa8e9533197454cac7a84cba5e74f8fc48d56c2f7497e669c0ab7b4f734b7ed78ece07e883d1207de232578ea3f361d293de9597bd5cc73fe05f6a3ae9b27add72b989f20063c8f7b63b15c6d28ccae7f23a4779d55e4b175c97b0180a3980e3a80cbe535f38bf8235fc96cbd6f4fd6aa2b13601199fafa903264f66382a1ff539aecff6a1540684f14edb44f0db1c27c632dd2b8e5f7b79bda01c29e82be85818dff5cf6fb33bbaee707dc76b97b7196d979ecaf5016cfe51d9c04833198240f986b02f4c410e4dc59e86e3e87e645078d7cb60cf7870f64db9de4c964964dc2ddd8b26d2bb76d3f5eb4065df1ed0b1ccc758f709649449acb2f5357f9754fe523dcfe561741fd3e373a0abcd278287b1eff134d6ef777bcea3fa3c2f55a9bc4a659ff496cf4981a3ef9da45c5e1af2b9ccc610c58f613f006b04936f198fa1724c8ea37badd2bb46835ee59b192e2b1bf00da6f7a16d0e6b49a59e67f230ca0307b08ed0efa6b7a9e0a36a4af7beb41ec68eaf4b03f63c61f2197ba66b64cac608f06846bbbeedb367b527f35958fbc72a97f9e8be19e87a532e1770fedca57b76cee31315f638af740c97bf97e19ee87e16e4bc45ccdbabaf8e55f97bbc1e678fab1ee7535496eef03d362d5faa429defe87eb1c7cb27f68b3b26f719747fc6f78bb32193cd331cdd0353f93a7fd79ccade9381f4cd3dc8e86b8b7d93aeb9a0abc870b41d9227f95d2f83810afb9cdb581b6fd8de1cda70c2657fd883e4efcacb5fa9e7d9e38af61d011d02c8d0bcbd7a204fcead581d2f78bfdc727dc162a0b1bedc717d4da2f276ced2e8381ab331a6ada99c78d7837dde28ff1e9571b5bcad403723d2983ccaf556e98cb7b12ae978b2f1582893788fa80b1be393bc1ee7f277bafecf677da65b9b0cf8b81e802cc8f4910993bfa94c4a65f33bd8aff2313fd0c66a515757c04df65c4eecaa292dabcaf5a2f4fd771dada817657227e845331ce89da11c23da1713d6ee20cbd2f7bf0eb56cde67b8a1965a62cca779bda01c7bd057cc5f6395f6ddd96db6a0e39eeb2d695b883edb0cb511ab9328839a1a997e93ef3352d89fcce91e46cde6304ba3f2d72229bc8bd0f69fc8dfa4ebeb40cdc6c9add05d739cd84b51dca2c7f786bdca37a5346dbe1916de9595bf52cf3fd0ddbc2620cb8d285f9888bdc58ee9f6e85e7e92b03dc80cf4c0742d7c12f6893993fd9ec642be5d509ed2e13262c26d16ec5d30fe365de99b304e9f84be08d6b15719d701bd195b5753261bcfb89e90bedf127a5c81cbcb26de9597bf52cfb37917c88a13664ba06b3bccad196d832eeb5b0b783c9b9f161b3b8cb7b2f14ec7ce0badb721fa9be3eee8badae57a04d6df621fb79e51593461b638d8c78d994ec260efcb70548ea6bcfa6e0feb2bd771818c31a7b2de86e9c9721c955913ae0beb8bf23e3199a503fa76664719d0b5e00fda6ca8d17df19ceeefb96d8ace87f95dc2f8f406749a6063007d301ddf777cbddf743466531a3e8db339c271af94e7ecb9fe67cff9e28eeb67f8375f6375cc643dd847723aa6f39a51199cf3a25997eb307760e799bfc64f732b15fdcb713db065bec8efe27582f6daf49fd89a32a4fcecdcf65213363e40a73b5687a20cda9cae3d5456005b1e6d871d931fc55e85b6c36d5723ccf621b517c3cd37b13a9e7558595f53a1c787b9b556d9f8001bc96bc2d7bb94ef9525dc24d65295db056e854eb2cfd6ce0d5d7b799b091c2d2fb7db245c2720ea05efb7841e1f6ca767b7199dfba3fc3db4decc9e57f8de9eca88a007a7eb16c89d77b49c5cc73ee36d9da551d9b0c3651ef6ae39accb5c6653070c73d761fb6dfa8e45aab2f6da6be33bdee693bef42eda373bf62eba3f80b2e66960e350bbd2bbb23ab17eb6f2fa9cbb4ece17749de57a72a3c7f8099569ee84eeb80fb20cd86f587b303d3dd86e526e974ad85a27d2988d82caad4c0f6631bbcedadab37933a1f2126d97de13932be85cedf0b6823490575268d3fc5d545ee77556d71326af66389057fbf4bdfc5d52d92b753c738da4bcd4daf1f13be47a28e0892ad7d13f311b4dcaf45b80e3f62f95e99fc0c672c7e4b03c6d0f696ccdd8696ceca6d0cfc0ab6fc518e37b1acafb8de193847b029ec8c6b03a7f959e27f03c033f89cd80af03bc4cb7b1966e066cee6d7ac0dfe99e607c97d7e5cc7105763fb1afa1f2d29d6a311ddb264f1b6f28afe2f2f582ee27405600399dee6518cfcad3f8de3b7f0f5dbb66ddc9d888d5f942d88e3a4cdea43c7b31ccd36ef97aaaee55f69bae133b66f77ee5ba582a6b64747d2e9bd1b9d0d3d8dea1a79d2f2f88f6077b26d739c07acdf63a1b2133b331c6f6443dc637600c247caf21f84b86d3c8a0a78de477893ddc86ae5b5db6a6d1bd1fa5b3685a92a7814f4d8faf55f43df973c2be3f4bf2345126d035802f872877f6ad2193f3cf9e631dd0e98fd8de4e633a483aa725db3bf819505978cffd23bad93ccfd670f0c71817702326bbc09a0f6b24fdd69de02dcc4639077de15e9a9f1d1907fe2720f3cdb86c44e7ec265149c1d745c251f965d1113c4193ea05bc0bf415b0afecfe015fa26be79efd15ba385ae6458fef75982e0eea9dc97afd27c62b3399505b4f983c96e332bf05b07b421bdfc62af87465dfdc4dd7b70336e7a02d40465047831df09ff984dbe9f37781ad12fcb4e46f66b8ac6cb40d4146803d11d8c8cbf53cb7bdfa60d74c7859c66c8cc1d89ecf7859a86c44c7f2a40b3e452f6c8e3dbdd0bedb403bc0de04cabea16372c8ea087c7c0036e1119df3af1df019823db441f97257637666581b35226108b70fcec14ec2c70e8c75d085f236ee71fb665626fe9eac2edcef84fbf64c3a7f60ebd9d33d815a6c272ae3edb4b52ab5135dd340a74bcbd467b2cb84eb7d299fba1df0fd778e039999d993d5f12265fc83ca59d93729bf4cf91e7ac77c94449af04d616da58dc1ce48e5901e6f971df7979370548e9bf4a577ed659bb9369ea4ff86f64a685db9be89f35b9a063e11a05f62fa3635069d1ff069baef01d99afb4eddf519dfcad2987c2e64eb35938dc05e907faf93db4aa0fd3a791af38b11741ad833c1278595e965b0d75255b415c765e512efe2f5617d0f7c83d7e5ccb590fb0c719e9d2e06d93c023d7aa6af035d25f385798db574c1e7e466af89fddd3c9399396e16ab4cb732e46b3de57fbddc4f89eb53d68698830395f318e6ab06be5d7c6d98f405bf06fd3bec15efd8be20c775994c29bf8bd789ed9f581ed72d9edb5eb9ec2bd98c6979e613d966cc64df74266cea7c5f0c7d4ef7cf091b23b0c78531053e09e399fcaeee743d49f97ad917b65375ada642de56d3d74e09b7d3845e6b9e8dbd0ed76b0d55d1d6194e942d7b575efe723dcfded718b1c66dec301e789f814f9d4883fee17e24a08799b13d5d6af0fdf38cef7d251cf89859d2bbe89c32f81afeca7d3f5eb9bef18ed9e1195d17f47594a7afb94fcafc95f38a45bff43d29cd1af2b1c5fca4f2b28beff5d8383d9b67ed6879b95fc65e9d5bf97e99db54d4b9d8a3bc325d03ecd1168c6f32ff9f0ed8f04782ff301c9d772003c19ee496fbcedc0de56f52d984f3492a4774720cec79775a22bd87f949f68bdfcb7179b9a88c3293cb5ea9e3d9ba05f09132984e7e7dbb173a82a7f94cd8bdd8fe107cde0c6183e06b24f3ed84be1cbf8ab594e3848f2cf85c75f81e68c0f4fa77b19ade8af130c8db6bd1e3ba328ea37283b057ccc06f8bf963713df778c6f5ff192eb35da820df49f5e23e62dc3722a17bc2b3795732e8e6fe03828f58b1cad67bf0475165febcb6620d7cae33fe49db6cc879979cd661baa6ec5d74beedb8bcd515be0dea989f31a03c7b0c7ad51c47063db07b80cd42e5bec98b94fbf0886f6669a0fb827d4ff6aeacfc957a9ecdbb66cc1f8ad98a85dcd7e1724ba62b673c7bc171af624ddc673e23e3592ecf335c1f7813e7b34c9f43f7ce9b217bbfbae736dc3df7a9a66b27b31fe538f07fe3b82ed3ab82df1c2fc72d3fe390e3a0cd606d56b9dd49d40bca01be6699aeff8fdaec95fbf3bf0aded0a1f385fb6170d9fa559c0dc9fcfe616fc9fd93e08c44b607021ce54b5d907968bb83ae60c3f62daccd80bf33ff3d236b3315c641864ba76b75c0fd46766cfd506335b5b89fd4eb90efe9735c76fe80b6d9dd20af176b33e6337bc7f60767b7199deb1bee0f72dbcdd7ba4dca7d4f335db1367ee5fe20af2997cb3ada9cf93e3c65face5997fb4870dbb3f09f9b0ca76b43e8f792a739f71d4d67a99897dafa3595714c6fc87c48d535ecb34127c9ed4eb90cc6fcf3b27281ce829fcd50c1564deb33117e24bb3fb155ab84cebb8968f7aeb09f686b7598f50f5b1f13b007a4b7dc8791ae57930eefff84fb19e738e61b22bd4bf88848df84f9c17d2b41a737eb1670747c33dfb98ef45cf89e943664b284784f5ef64a1dcfb6bf525970d3e77ea5bbdcfe3aebe6698cd768fcdc8fca74a17dd0a133bfd2545b673e141c3711f620f1aefd746d2542967d127e4ee34927b395d07126e3329ff3ec5d1d2ea715bf99e1b2b275f8f84cd97925abae9ee7ea24c4be26059d4c92aff16a22d2a00f13e65745ebb5e0f2c244f8f4eeb8ef9a84a37b4da327bf0bfcc653264f3dc1b93e3aff177daec31f725d9f84b3b80e4b4d41d624d25a4ddb662cf62319ae037b22667be27e60afb1b00bf16f76c17fe20fec165a0a6766facc874ac8db33763e2ee1be50ccf7829f8f53077c1fb8cbce12ac6749268f305c97dba1f6ec6cde82951df82495030c384706b65aaeeb031b24d8c8331cad5b97f725b3df653a35b5073a5c22f661aa286ffac4fd1e980d41d48bf9b3b0b34bb0e7f8833d113f4f02e75a547ee68bd96f9ed8b99394c904946f4df6cccf7e315465dd40baa16b7822e4488653c18f4d7a17f85017ceaad0e76c8c081abe27035db57807d8901271865263f65ab6b75e6fc07f5f636d0cb649552e77b57e7fe0c7351bc0d9c8cc0f6b3680366232209c93807333738bf36b75a7b2b394fb2766c7cb70b4cdd4b93590de03edc1ce26c0794f7e9e40e57ee4b017a4b29e849bc5da7a3164e737ef064fe22c0a6f132887e07780a36d7037e0b6e10e6d1fb1f766df9b9d6ddbe1babd949f51eca9997d7896d2b10c67dcd6dca60ebe672af86f715bfc1efcd752f08dca7c2638ae279dc7e9a8299b7bdada1866ba437e064ccbedba7d95f3178edb4fd7743e81bf093fc77317ab20dbd339354918afc871c00fd209b7f58ab1688833525d760ed2a2fcf60fda4cf87faaccaf2a3b7b33ebf1f3997b76f6047c5c079c5fa55c164c4077902e6235553bd9796986eb028eadeb1dc193b5f92495fd3f35b0d9ab625c764006cd716057d2185f4b99fe88ca64337ebe4e157e26392ea1b8577ee6e07590d78bcb206b76fe589dcf7ae7f3abd7586573a343d7a75c7765307f223afeb99f9e9ac915775d6ecbe23298caf80df09e0c97d07d4166b3e1bef62ad32f76c19ec1cf7b729fc47de6e391e352d0a731dc80d9c254e11f9f32de2464fa8d28ef9ed90e66b13616e5a5f562ba4cd05dd03e591b67af8bdafad67a1afd502730d62c6b3ebaed018f64693bcad327773b19b7a3b8b63231dc69900efe9d57b198c80ab7248c914d521ce4f73fb0d050076f5c11d1a3e41b4ad8352bbdeee0dbe07ad01d74cbb7adf42e3b5797bdeebcdbf9defbf6bd77fdf5dbb7e1b7eed5b7ce40be6d855d8fd178d94aa7fbeddbb76176d94a5f5cb6d2bdbafef6ed9c3bbaf8e52aad2fe9baee7ceb7dbb1297a20cfa3757837efffaa67ad50a830eae0534ab6df5aa9543d053ae5a29dfa9d2fa5a100711b7f6ba15c5f2149db8051a7eff8af4517e0fcb3f2ebe5efc33bb88857564f11e96903efd87897dec9ad83592efff2115d1f22caf1ab022bb89e51f50caaf703da8bfb1b0497ffe53bac9e51fc7ea2b06fe45d31c59912dfe6a79703ff2c5f9a1c10bf1b74b37b0fe53dc35f38f0b3d5ec27db57a12c1653786e7f8010e43454f89df931396fc72d02cc14ae102d7ec396521550dcf8d1071213a39f20b09fc92f73c818713cc0340b1db2bb31f0a6285e2776b127f05d5e6cfa69c6942702c1192cc283e6611ca8a0952e819738702333c05965deb29c0b64dfc082e5d2da5c83781a2e850be4bc2084b6f5839487a922e42764d7e4d6fe3759f3cc33187f903bf57583c1903e9416eaf7085ba852716d0317f1e767bd273e993912d75cb7ed8b9293e29fe062e591631e445a420e9a7b88f357bce22811752ae06851471417b9662845bf9d1f274f97105579d678feb10aebbcec343c1c4c91ef7700d6416a108effd2da243910773ad84d67dc62efe15789eab44910d313a2ad18f758cb764a3b8e518bf3af602f79be2e360132a7fc7c88d4839b4bd1e19614c224c7f98f4bf72e0530387748156f67bb8febcfc69c3333681878c95a9d7c64caee6d7c680ad81e92808086ef13e3ee7231e67e920d6f428d73d8ec341500d9f5e8ff382d0d7db00ab61856b702be2464c3e390a25611863901b8e2129476fd3920116312e0ec242b4c442863a8ac586e79a3cdec1616464e637501f8646d8c60e8e82648393e3e81d89566184ca318565a4ed5987874f804d641c681996df10a4fb0050ba92bf8120c46e14249538eb26da62c35a41a8631fef14fa5f05414c1ba508e22117434096905640d6c8de2265bd8b2a5fc20e097c141243b13c93cd365872c38330ba40b740282808502242b63462a30097a34ed72138e7e6d2c23170804ddd46c6863e1d8443c08922628922b252c228888d72359776e2ba8aeb9132fb5886ae07c1abc58f62b645dc4bdab801d195b04c4b332dcfa52522ee812cda027c096c8414624884fcf2f7e368beac3502032a04974449cbbbf46d94588117bba6627b06b2cbfd580b518c3808a8447d081bbb648b8310d99770dfb68d22efe0e7b7c826260529db6ea70cd4e3e512d99eb2c2e5a8e245399e3e65c1e78e09fb8701c6a58569035a9e14b2ed10156514558e57c4d4c46767578a1f295d09d2e6352cb41b722b9d548b1301e35a81b3487165b467d958b13c16275709bc38aa0e762f20b68d941dd6f388ad7936956288e1053efff6a51dc4c7114a481cdfc6556c0cbbc9d877fdc60cc5347c11831447168af00e25ddd3e0bd663844da68ce0e0ddf3c90eb955965213734fdc6dd65be0fcda35cb50296af4e559069d26ddff92f0831365b5067786385da1437c7db5e597a3842e0b94b9b189189ac13c942ec86719ba6a812294be2221165ed746a0ba2849c41e845db53084d14a1aa6c7d98668962a33c918f509000ef58b892d634961786a4cd802f51f03f357cf508b508c5df96802ec18e67e2b23472988ae59c4ea1c4d1fea4faf09cad73169162e2ad8ba33fa566b7c39f585fa2fb3dbfba3f3b4ce5f080e127e06364fb18079535eb1861cdf6ed08098e02629c44e29e36c17c6f770a3c4011b689c3c304b527c38e17e1336a13aee2c8f476ee49342ef2c395775233843ee27ae4d6241172adb21aa60d85e2a3c4f6d0492b1da70c8d1536631b07355b99b354cb15a4828c886c5b2e3ee54bbb5b0b10cdd77d9f43cca4c87328f360966d29e3c83b61e657a914938486b7c56545ca417a1db9ee49c56c2b1809b84d4e42b794a2043e8b18dc92a068003c89f0f451748a18c349da4b3182e004218693b497610441800cbc8ced53182627b53daba560c109e88a89b7d88dcea2242e89c8c97d7bf2aa2be85814331b25a77daefd52c5295c1cedbc6063d24f9d40466b740adc0b2263854f9a802d97788186309ba735b21f780e8e56b8dd8e871331998085c03c8de6f4ce396179e7143bac23ff14b6c808ce5c21383104b13899ea647e54a00bf0df312eeb6ddb90af30b2a3557a3a210fa07a2215cb0f2366733e91b8ad8c5fa2ca22209e4848a5e410472d85e4226d26e39d417a82e05ba4dc6162ad223ff0b6a4a2fcadf144a81368ce22aa53621e278d906b34f74a1dd1c1feaf2338c8969b08cea80d905131949c582399f08cef86c86e1e264d04e77c07dbd8a8ea8bdb529df5c583327d3349cb6fe9c8d878cb661d5b86239183c2e6753ac325110e97c43ec42c64ece1ad9f401a7546fc3a1c08e7b53afd3ab470c6690353f436e52cfbe31c869b083b2dca49d75166d48b03ac58d8c501310ccff15150b52e1da5f7021307d874ca2af6a3847fc7383e3eab8b3401724dcf39fd5be10109a09e225a05385c79f61915db217bd362b88a30d98751b093383e52782f328d7514207212112dffd23e20085728a058ede1f6f169916141f7db1eeee96b6c4461e4058784912a59fb619bd1b41f7d19499b8197814f1a731955cbe1464cec4687545702b8d9d2c63cde941cd7721c0bb4837c536f8d0e3c63139e806fc7fe8f6ccc05cc4141b842f6418d79e67d8aa3b638ba0f6e8b5322e3f848a87abed6804e9b26be8d221edafb08106cfcdef18a0be0d16d438520b29b2d6f021ce02595898ee2421c1c53aec8d0fd7114387355dc5cea90896bb41b9e1171b089f7d888dbacc6806eb7965268ab515ae318d1806a57233a9471e07b9571e22f43f0db2265a524cfa07f2f6b8accb3abea913c4389026454fab992afec4885d749a0b227a89cb70baa869e3532363eb229c445d1a55f76ee58ebd8c511d49939742ac46b4244d8f12f71105c1a283256952f099c1f7846c5b1a09cabe43ee387503e0e8867929277ec066f89abc7c1062b61b8faab4e65bdb1511cfa5e1829861f13b3d26e1b17992b65e32177d99841d786b03957ecbf99cebcb244d64371d9efab1eb6acb80cd7e36a7de1365ee0b9e0a358f124d9d07d138ecaabee2650aa9d61231d1c38156cacbc03598a434cd3c63b541eb719caf21cc773157146e100c4f0ec328b29432a73ac0c60525109833d93981e6d943828ed48981d9a6621d30c6a66770ed0e3e512079755c691430ccf752f436cc40189924b27b62312460146e502650420b9ea655d6c9e4fe5e0cb5a1d6a8e61bf0ee75ed23db45bb63435a194b2777505a8dbc8ddacbcb22eb282334860c4a425eaf8670d2a56d14676acf24069824641737715a035fbe543c896856db021d6836bf631f5c0362d4f7184563ff4ebd43a2d085a56b1d5f0e4d078df06562b97d643abcabf665ccbfa5068cda6a3015cf1e168c0d58aa6f5d8001b5ed9307a08d9b25eb5ae9bf5d0b07c24a511a61017f85dabc692f12d0b0d7ec6d523121570db79e6f8363e36068ff3c91a57f37accf15ab61d6d190e7c375b837df8c30e121ea4383e8ec31d2aefc12a98a82c7f5711a2432f63df0a50c584512148d051ae51ebb75001d17f94712a3a0acb42653338a81a890f80bd382afbc5d6a2b3fd24538494776ced688e0eae22997f60f23b20fdd4a9b625cca1a9e3845679ef50ca640569061d98752e8ea0659bf2031c8735e7a86a009747f90993d72e9d788f8336125c64f8c75fba0b8f63609c57b62a271d1bae9ea42823b2a325d5dd4dfd19e43618459c063d8eac30a2065c18995eb57c11a6d2357690eb5675510e8a229709e1b61720bdbc87caf249882a7b209a19f981179bfc04c25fe27cc45f781f6137249e1b2abe5edd1f38046f2cc52c3bee396443bc152d65d5849ee7797e54ce7289a7e836dae09e7e1912a7dcac90cf0ef5d666d3bdb96daf14c3f393cc08d004b2bccb95e7609394c75586a0c3e4d85bb8ba6b87ec92c4e6049711dd8cea28c4c3eb4379f5103af9965ee0a008b41cd939e26398abc31878ae2ea28db0cb6ae736422b47891ba155e7df5a68d5dfad16b642e1aa254c312ac2463336c01609231c281597b816346c189f4c06633c3bb77e1a6db842fd1644752cbd0cdca2809477631e0a49982da8b596d05a48ce778d38d8e2d3c9ac33681ccf2c55d1f3b11b05c8a01c56fa5d397fda8c532a8aa203d88ab2c647ee7ad9eb743a0a72a3b0b2d655b21b0ef7fa28b6756cdbc849c07dc7f062b722b7f81babf674bcefe0140594cd5f9a64b9b489aef0bf255ce627c77da5ffca0fced53ad0b52068aa4f0b4afa7315956f1ba85282bd522977a88c637a32bcf72bbcaa8acacfad92488f8d0d8ebe7a81a5ec768ae581ae08977bb8f28a1a036ab15ac6b2b92159b67474bb3db4ba528738b088e877e8740745c6ca87ab678ac81509bc58b13c3fa4af518cf269bf32209fde50e912d85f76fb8a81ca2a1b96eef34b28e48cc0b83415cb5836a62ba151e3672ee547de06978b21e5562d2a942346c62a503c7dbd6fc88a7008db8ebadb242a20a7e2795e8104f8efb862ef8840790f0e70976112d29d5d03c08d1dc32fcfc2d8f28235ed65c5f0ccb216638bec04d90874d14c9b5b55e60acc128551841ddfae3831ee5649108736c63e48b4f9da5fb37bda23374d94305c5d222bd3edd988656a588f6d2f0ea7480f1507071b1b4701c6d2cf4b58422995f7d5c42609bf1a2b6549f67abc2c256e121d07cab6df90ac588117fbb2f80fd664e13bdc4ce1786613c047243840cfb315dde50b791d2824967b284fd1cd23f94ce150970f3333b707d441f6de924b297b9d61621d07c0e350e4394c4b20259ac4aaa6e4ad6a120b969c2318c93edc88f20e6667c71825000c441c943f9e32d354314561a3bf2623e7f885f9d184ca4c364d00bc27e59ad0fc14f9420cf514ce193d45dc09277e4afe432cd5f4588fe4efa7accc470172d830507c1484bc623293f4728e084b2b14642f54f9c870f0812c70403438cbabc1f0eddac1dcb031d7db2d0913de6bb2e9aa316cca5b2163c56f163990ed7b76d2ed771adf5210480f02e4abb030efa82a5e928a6b72b3571c2956f54eac3a1415387dcb3f9caba0c0e183b419836d0b394c303b84ca04ca03a0fc8cdb0150d8db34208e340cbf4e86fd6dc2f05d505d56e3500bc395922d520df9397780c4bf7c7d632e0fe037aeb773571ebf974606b9385274bf424b9325e780721631dd4a9d215d948ba02380fc7e8a8390daf2127f3b6848bfaa4bf7036f9f9433c2c435e83882e5b5363324ae65e3a54dac55a5a061120a69b49c9c4bbe6e88967885856ebd0c8c5de64a24a783f30737cce8c424415c9d73800135a670c6aae4c62ea16217bce220c0ad79c3be7e76edc5dd5bd2de092e25f92ac1b2db4cf22be0684a368e5ae285fb4d333e5fa17168f01d544bb4e7f369d0061ef1ebfedaa0b33a9878b93dd640552aee03c79d434fa18cd8cee52492a33d92d3e4c3e13878496c4c1bf90438151ddac26d7e55590bac855dd2b6e788e3b7ed2e70116e89f5036439a825b87dbf8751ebeed8e220e42e07cde8ec104733848bca2ce178ff16e0b298dd96c22261c46cc807486237220e37e99325328e8ca222fe688ff3bb9bb2eba99891ef181e565a05b9c929707141d42934d93d519cc8df585f892bb40bdea54e6c3bf9ca17caa64c65856d1f078ab10a3cbed33906a562d192302d7433d80b998aa81921f442158445a2a662b32cc9cadc84c82f79c55b924d8063e038385422c5b76347171bed2318056e2b6d85a42cd0e1cedac7c1a0176fd102650a93b0f3576df1168988e58aad614b2262ee85cf646b12d764c6ecb6049ebe3ef51b74237032cd26b289db8e8479d1b782e64e00c8d8f867902806f2914ec45d57a75287c4c4ba90688ed106782baea73c8a05f796a015b460816f8f96ae4a3981a875bfe7241639f523c2207002498da6fa04eafcc0e629447ccbd940219d02390281460d9330624e04edd18ae945475a571039d8f18283431c0e19e417561fc11de37f0c45bc23cb12c709cd3039d85c656ccb76ab901de591351442600e90735a195dcf2c8eac1d0a5ce25ae1d76d474e4e90637f6596c36252ffe2cb053783834d1899360ec05f8059bd03237f588223fe2a827bc1e91f4552f513870d47f89b6938d99324b9234b1c5f61596b1f8c611902e9447e04852633e9146e83457621896dee25f52936901eca49f9f5c5f996c34301d8b0a41471104e4ac27b1f07c461cc4c4af7c2e23397c9a4945c9ccf1b007e1452220fc9cf364a93005b78efcba92e8ee0ac8b9ce685426d2eab07edc2335c7552a02abf858bf236890ac925754a9e9e8406b25913b38319952cae2991d3b9374fae7fc661c4ecdc4dfa17f078231eb35d122f9feb8ccc41d18aff517462e53f415900bfb92ac02130a5e81fa6ecf7110c0348f83bf6226cfa017123eefac4fc4b44f008398e04fd2f62f78814d3788b16127961b334490d534953506810529b43bfc755e8a578162cc1c51111850c7c83ff8af03e12bb44facc246518af5e083dc77e85c46245f2422566fa7f9fb52bfd03fc8f3fe79bc26c68b21f4a98b811a2ddcdf76bf92fc5007bba7812334b3ce7b51726a34a0eefe44a7a08370bd7251bcce126db3bf2a612cfa2ab382708a3805f2a9ddfe71e26aec1ffe425cbdf0c4658d85430bd1ed2b313642c21678885676661a1a9ac8db8462fffa5c4d1b27b557cbe86473a2d2ebe5c6cb16b7a8172c4a4d1022569ca0fa1e10f65b56d712282c521b06c356985ab1a4f0e90ad985afd00a2ce8ed2069e9953eac0748a996e48ffe507639b801987b06260554771421d7e08d853563e0b1bd084e22680baec5c395e97dba0e26e84ca9aee465049e17d14077aef7f7eb998e330cae212b9b16db3a42c12114b523d9316f2fbffbe681d8e4945c41591932aa19d1e3cd533a524c5f2be3203ff83f7c697f8ef17ddafdd6b0803062c338b1176fcdb3c1454cbe860fffa72017768f1bafe1f094906ae2bd1a5835cb2c461f4152ed83f18a6ac8e40042deb7607372268d9a0d7392f5ad912d9e1c170659d7ef72a0f57d615e1cafafdeef5f519e1ca58a14f0c5776d31181c57a3737bd7effbafb5f225a59c3e5e4e52066f9509210d548657960b23c20191b9b3c1e19efaa62403239c018439726310bd695cff1ffded3be760666ace002ef3c6b327a74d0fbde3692c9d5e467f86b32baa569d1e2dd8ea78e9642fa68b235facf2bf3c15e4f7b34ed86e5af3743ede16ea7ad679da9a379e6fb30e034e188d0f7dc12fdfdded7c9f0efea7bfc74daebaed0fb20567bafddcff164f83936e2456fd5d59d3046ae4aa6b7b47cb7d6c46138e4aab1fe7ebf9bac3d6b426e52f3e1be83ded52d72d52dfbce20fd9cbf6dd4b5bdd192e11afd7c8b5142bf3d8c161fb7f9fbdcc7aeee3efbfafb6b74b07cfd326eb053e78bfed3c35d4f6534593d0df72d361fece8f3a5cbdbce4fa74e77658cce796fb9bc5a67f1f1ec2f929bb5d157b72a19ec3f1f663b6d6dafd551564f9a479ec82d99f6dbe36bbef1b7915c275367315ca46a5feddda579dffa695ddbab64e83cbdaba9966a2bb5d0ee52fbc8f54f27f1272d4b6aa48bb92af77963ff367fa3d4568e1d7f3ebc0da6ceaaa3bfef587bf48a6967b46b6db9167d0deaa2be3f6fd4316dafdbac2e90c7fabfa60ddacc2156afbafee46366f8347f5ea9e34547ab2b2bd989b9dcb61dd59757ed7e6e6bf753f77960d68ddb03fd36bfb3c7cfafc3f9f3cbb0837fceeada38fa7c7ff6172f37a1de33b71fbde795e184f1e7ff8fbd776d52dc47f246bfcac6ffed6eb58d29aa9a8d785e145461a0806aa0c0e0898909d916b640beb42f803971befb094bbedfe99d989d130f2fba0b4bbfb4754949a9cc9452d81e17ef53bcb82d3d99ef19f9369684ed09081f6789ef1b52a77fdaefa6f64cdfe2fd6de98bdf323b33069ee84f3e27c3419f7e738a2563e5c3dde00c841e4bc6f5c8296d8bc2983dbe5d1747f979ffbdf709af97b461539fdfdfee7fca1f1563ab614e0d68764babffaf8a4b4bf59a3f88f6af56f64be122918febb0ff2291efe59f27f2d1423f44be87c8f7bf23f2a5c65122e9fd1a8e4e12b760e16e80273c5905fff357f217ef85e57ffee23b58e13fd43da769b2b1c0ca3b8b94dd4a9f7dabe8d7f1ca82ddca11bf7b1fcb8d729b8c444bee6e3589c72fe26ef273d65d590a7fc5bf8e5707083d7b329e62e99d0d66a69ec46f6f80df62653851c1788ac5238bc078c5cae3f9cb2c98e576da51e49fbdbdde3f2be3052beba3cb9e5b05d2e7595af791c4f559b9bbf2f7bbb7f362f87c9b1d3fe82ccc4dcf52777553c6534d1ef6dc60d6a333f0c0928c1516bb534b199ffa136361eebfe7cf8b61c710d97e6f731c58c2c7027d6f47dcbca35932dfd1e6b7d56235744febe1cfab883fba5fefcb33388a4761ddb7d678b5da6efae6bea3f88baeda5b1be27963689bf9a90394db68334183a3acf76f32d7f781a058d291457ba177960cec4added8d441fe7af96a43b71fdef91d02adab2f19d0d5242f57b877d531446a75fc72b92b855efd7f17a02bbbd0a84657f62046dbe44bf8e97b3c863eed7f17adb77a7963c5efee744103b92be6081d0f73ef98d05b9e479329e9832c2afa2def73fc7a226a38137e34f8ef4def185db4099f11f7d193bd7ddfaaaffda4da539669dfd8dbdccc6f3bed0615ff7b7ab33d3af58d21516bcbbc74fdfb1c077c711b88532fbe823a06f8fcab07791f53e2b75573d99df78801fddbebb8ab7194fcf32bff595f1c9db7323471a6ae7197fb2a6483c0b1c56a648bccd8c4147e65453eab8d66eeb5c76eb93437e7fb3972f4e3ccb48f3263cf626fc87f5cd4d7f8bc222903c7ca9bb3a2b637c11d73d73bf5bfc52b8de52d6fb17713765e1ba77dc0b57e793ff702474d2a748c302d7537e092349c2ac15bef73245e2e5733cb1be02c98ddf7a6277657ef9f8363316261044f67378323fbf5d5fdcad3ab2feac2aebde45d92dcc993ebac8fcb5f739de38a271fd2974586b365e9a9fbb8eae08bda3c2e3b38406ece730d3ee78369ef4e7efaeff6bbc49bed79dd89f7e06c7feda6d2519b38e7464b5f9f0eafcfafe7895deaf6caa1f9ca01f6097e0b55fbb95248dd8d7f9f0a3ff4be84bfb2d1bd4d9fbb5feb87eee3ade14ed4d65ddbbc9fcd5da731b5346ac3b7bffb066fca60fd69a3533e67d6544dade3aeca658196f7d090df06147f9e5d7ceedcff89f7d78fb78998f5947f9ee48bb6f375d572b6847c861fd93ef0565b7647dcb2abba937a1cf9eb8d32e5277caca3797dbef26aaf2def184ee54f9b573ad2f63e248efa6365f5f311c0fceb2b1ba7d196eff906a7b71ebfabba85fc7cbe47dfe959d659fadcf75d05697fee4fbcd5186bdf89d07e1e449df1d3ce34fdefed609c68127bea7fb4c0bfac85186f815ac7be74f7ee3c808ff3c247c7e1205d192f46d8ad7280de4b69e2274b0ac8f90c46f5e826f8bdc96fd3256fdcf1deb8075cfff951fa7feb423e92b2c063b27618926df1db24e48dc5edd74b1bbd7fbce1489df50e82089bb780adfff56c6534bd295cd5e90f5e9a9a15ca3454f12a66769d863a54e30bf634fecac34d1bfbe2afac85184cdcbe4d4398be3ad23aea7fdcff5f5d75eb7f0bebb0c766d3a107a3835864d717d41bb4e1fcb6c443371021e94c65bfc853e2e8735ee076daa14db94f2c6fb872ea3bdfe49f90e7fae4fced750f43f533cf745704b829be851fd26fd5fbb606ed99e4534c05324927f33dc3f88bbc542e2561d89dfa4786e13d4cf9f8c97fd78ced017be288c5871ad794ac043dfae25a280f727a6323c39092eec8f6d30c70cb06cac7a9fe3a53321e9a38e14ecb0c62e968cad2beea6da5ebf92bacfc6613be8dbfee7fae24f8d893e45d31bed2f39d3b7e21aeb5277629232f2cf2a109e83346ba62f4d6578f5667c8a4f82b6eb26ed138c99c3ba8780d03b7df2bd8ec45f8239cefa4a30ec617db566fa735f34b6debebbb224eed914d7386c93495f5cef7571dd3becb8eded5be89f14e18a7fa5d68c60de4ab525e185fd6eeb2863f625fdcecf5d6a7ceed814cdc913879a3f1b4eb509bafa9febab4fcbf43357a6ab9f7ec7fdf33b199f84e7e47716cdfc09ad237fe92bbc66c97eaf2b0ad3cb5e58d86b6371968cc1692f283745c737451839606761f9d861011fccf90ade1b036dcfb99f32d7f7647ea589dd0507768bce5eb85a50dffa87f155daadafda2fe1e2c9e3ed0d0ca37eb8585f5c98f6def167fca52f0d7b3789c74771ad46eb0d99f7c463b0aeed7f4ac39e230a3d43e1d5571139f6e76e624a2357dfad4f613fbdf5f7df6eb086f43f47aef2f97d39cbdcc207bb019b5afb55b93b3dfe5ab7d61610f9a1f57b1a76b4d9775dce7bbd7f82dfcf3f671c956fff653b5dc7052e92eb77b92126dae1d2dd21dde1729de7d7e79fcf9de7ce9f6d74e9e6a47e9ffb1aef737bd13eb7f3f2f3f5f50ff6b9d1c6f6ae7deeeb4bb4257d7eeebf3c777bfd9fff161bddfc8eb6f5a64c07245c7571b3cb904807468626dcfda63e1aee82fff6d78fbffe1e6f8369476677c14ef0f41f0ab4a0a14043f6fffb3f52452c0fce1cef83ff464af983b8555827152ac1cfbfa7f6d17f6baa6f63b8bceafba8efba5229736f51ce73e5efd14eff6f7f49de81f8f944b79ccaa66ed9d07118e9862c2e9d70089d2ae204f5461c5fe2e71bbd8a220eface84b1d59384d0393649088f612707e7e2cb2ca353acb450a14f02b2e8fdbde1b392ce54c8a1c2e828a79c7d8c4f766613524776940bb015e71e58ec0e11813146169d907229690f0ae0d6e51bc87161ea0d9a0e524f2907324309dd9b2add24c20c5de9250fa13f56f4243fa71ed2ede568a09379a207e193e75e874b3de73e49afd20b1fae3db69f7d62ac13714e8beede8a4e58a57e467e2cf1737c835226e5e539931239b6c629b2734e3faaa6947ed4888b68fc181ac893637564e0c48f57a24b8d4f76c1ab7506012b86976014ae245941037edaa66930ae8bc9d986c2ad3112846774628cfcdd2812346de395b1a07d7298df1e30dcc2b5ca922b3b1e7261f04309fecb5f1821432758a899eb95b88de63f2d9bf2c93681ac2952e95d33c5fcd2bb334a6012b06d5408405b020cc7bc1b9e4fabc52a6630eb36e3a06d17af9d2ac799b693bf84b01c58bc8ea504a721c3a5024a2314398e0789dcd0842c0de55b82b34b6e102c8139e0002321aa110b65d35040fe52d232a4ab249e7bf55017621255cf3f41bf197d41ae462ec8ae466253ad671f1b2a201fcea0985f71b9510d30e5ca5c41e040c3b5fdc2fd540a38435925f7d73916bc30c17f05045230b801728f4cf6e87c0ea9dae808f01930c78b5bf812d4916d0107c98c6a2a74b49125d7a985050b740b04036c1bf8d151974aac6bc3fc6d3d658870e60ea58526b00d150903f9143cd5c24b622a1c808bb4f2dbe70fd8370ca6e47adc836398e4d29fe847365b4506894160238971f2b441a66a1a418990519315b48052b8b3320bc9f8de3ba1d36c333a5cd62a81762004e74449d57cb230f055dbf40c85c1a60c70be1f4b218cecd9762051d7613d039da1ed004c2f16c5c5585959fc1960a40420e6dc61f340c93b1c00364bee0fcdcaf1c15349e4b57261bf1e203fa9306840127a2a3aea5a47154c14c5192f8b29b9d72ab949ada67439489bd7d023b1c0287452294e298dda56018e4fd8e6d1a68a21a39af47e91f2ebbc55d3461803e602a5e4a68b243b9062906cda56f8ed276c7bcd08c641ba856111eb91dda46719566506a3c8567477037455e0c20bf03bf7c1b96a3839a1509dedc89652936be6a7ca4c6e217e46e93eb47520f572c335b9cdbb1030e59e1738307ff76ef97e39c2b70d381ee3dbc6108f094ce38091ec2af97bed1ac91c6838ede2121788980332006e190cbf48ad9ad551226b094db73a1e5409e13d21cc239af63183638a3b82984734eda3986729c23ff50139cba8a32bccda12044b30b94cf22e06a139f753309e7bbdab3e61ceb93a4a591d11a3c0b301ddff293575b5b8b3bee406f2da485c25546da334a7f0f7c5844f084bb66f0d24ed638e472485cb98ebe12dc3b447701bb81023bd18a0ab81ecde08eaf192a079ae625eaa83af96d1dc11903aa6691faa3d227181a1e6d5306d28180bf8d80477ad7421651ca5bb3e3c5c7bd572313437905d746eb9f8442406c0be839cf602448152018e2699201f2aa61d71724bddbd940d519b4b28ff28ce7e590cf27b1a582ab921b796a0ad6014c131ba0bdd528a8af025114d6a09b286c0bb08efe7a27bc49890a4bd141311dc21c48424ed659888c006323c78f89e0933246d08db5a2408564c12e0eb8f289181dca660a1a594f7adba111d3dfd89817fdfe7da2f55214518e94b2906d9a925ab0df95f02376d57d6e05d03b0e5121fa1c9f504f73572d545f2b544542628861a6da6b9bf73ee58de438a0b948075cfb44809fe708508898943f1dd5477cf47193a1bfef6605e6fdb865c8300bbdaed7ec2621899365434df710b9798b7216e2be3e7a81a422a57120652b203dd964272963696f1fe80f40ec1374b798148d5dc281e6b257de4895026d0fc11519912b399d40586dc1c95394d54dbff6504b5d37215c11fd48690056228bab34669c23ff8ae03707354ef3cc19f7c07e2b2909d6da9fee88bb5327d3549cb6f49403e99876a1d5b8c43ae0e9ce688f4c47a531670a102db2e32b85c66c42fc311e1bc54a75f862e892c5b098b021ab48196c61f2a812b0016829294c25c1007fb625468401bc9b2a95bc02e5a971ae9c97db5502944c66e246c173d3e4b43a33cdcff2da7460228a770351b3a9a89ffa06217804f2dd835ba5ea81e457612cd9c12f6a2938aa470075150fe03ae11840b1425118cebe0b87958c4d892404275707a3966ea72c19664edd936a669cf7d31491bc68bc177f15c4cd592dd6830d11ad555043c9d4bc2d456e35af27184d681a548add1b6299f9c3bf0eda6ff868d79040b63e7d46acc63ef53e8b6c515235e57e38ad12fcbb005cfd712d07dc3c4c2c08d2effaf079686bbae01366e1b0a042eaeb6bc45e0d415e0b53807da4dca9534f4da8c22ce5c05379732a46fc8edd8d3453a54e015ca5e9bd598a0dbada501b4159796384654a0dad52860e5b2185cc83a90108c32ca2b25c38ce0ef534991c3eca27a24c9a057e7e5dbaf90cf5c0a91c9d2a0bc27683a2fbe472f957f04f2c92257693e19c07db2f2ce1d47091ad0a5d16b894327930f949c205ca85b4fd0b69f64e0ca5ae14b11ceb24db9e05890cf4d075ba94159d046a6920f9a7d826764489e7d828ce368ff28535993586d96e9b88c6c794829b4dbc9008ac69c4c908ff296ca2889559cce8df6df54675e5822cba130eff7550e3b145c86cb71a5be7027d33649c0e1a227c929d837c14214e293cd143b03038938703250d6f2c1b3d3598c8e1405c30b2884928f502a8dc8189d51a881c461bdaa21853196072491d75218682a48318346f1ecdc8e2489844da2e915477702a0b1c99e8a134702914dc37822b7fd21d76f13c79b48ae525e179be40772f053a90e351f75bd3ef789c4cdac8e759e453586787f9230304e9a99d745167032b2650fb544357f560ec4aaa09175b529807f0475edeaeeca404bf6cb75c89685adb02196834bf631e5c0362d1fe050507dc72a53ebb4206859c556ec1942bdca50fe6958a95c5a0e2d2affaa712deb13404b361d15e0820f4705ae54342dc7da5036f386d13a64cb7a95ba6e96439dfc91944a18830c7abbe9bdf89685ce844fa801b71d67ba8561130f36cf9325aee6e598e65ab6e5b618c71483c8d7802df2871e24aca568e663e702f27bb002c6cdcbdf4544d4a14f9ea5daa060c22810f8a071d628f55b2880827fc1c4c948c0c90b95d560bb6824ae019b9e9bf78b2d45c7fb49aa08c9efd8dad134325796ccaa19fc7a652ce114a66ee8e88e9adf3be432c3485495a09a51674097b46c55be0d3da7e41c5509e0a9713ea1f2da93ee5da1dd46827365abf9a517a71943f8bcb055b9ebd870f124451e91ba1b3ebfbb293f83dc06c344a7419b918589a802e7b88a592c9f0b03e91aeac0308aba281db8ae4185706cda613882b27ce480c21e28c8742ddbf494f004c23fa2f311ff8057171a0e320d87b1a4e2fe4047f0a4324ade714f4727646a41298b26f424cfb4dc7c9681e2d0be4f0ed2f3cd4af2e9a1ded2ec606f8eb1c6c8a6e5c746802a906a3e69a60e1594e7ab1811b049d35b4275d705e09cc4a6db4f6eb0199580037b3febf2ca21c1e0a301aa8896233e47dc8479a9c7c4b1d35bc29e8a9d5b092d1c25ae84169d7f4ba1457fb752581882a60d8c910bc2463596c62684365370896b4143d9f86e32c2e3f1b9f5fb68a318c40d4465537a1e780636caefc64ce020275e504b2da1a5905400ac4ce0ebd664ea1fd0e8a692aba26941c3b5814cc2b825bf0be74fab714c415154832d286b2c601c0f1ccbb20c305ca7b0d615b22b0ef75ac0c312c418e83e71df914dcf28c82dd6492d3d1d6fe9f0066c12144a418703461213fecde1623fb9d057fa1fc9c1b95207ba160455f5694119fc8c02afd551127b2593efd0348eeac9e0d52acc554554726e15b992279fa04bc24b5c2e8c6a125d11ccf770e1152506d46cb5e4437543d2ecd4d1edf6d0e24aed405b4551bf934ed7812b6b16b97a268bd4906d7a8c6a5a4ef09a28f67535a024be5d0a6c1d3a5d1253bf2cdd0a2fa14867d0a865346c57693ae3c8257ee6a97cd73cc17c3152b9458b4a3023bab26633a674bc566491e03d07bff4368902482f789e172036fced15ec1d2e51de1307b827c777829d5d05c0f074d9ca8f424f35ed63d0cb8c6c2a792dc619601f604074d1549b5b54e646980370dc5434a214e2a2f9b6e760082d22d1266b7fc9eee90a8c9bcf388ef61407b9472e06347301250f9b9e33035212940ec2d4cf27b2840654e60f052ac8f9216bcc015d25ef904b3cf912b49973b722992181dfd3e23fb12647bec3d514f4fade528005905d431f663392112ee4652007a9465d1e23290df954e150964f4666620f28835ccd4328a55c695ce11f9e046d32c7c5c1abd2894a18863693920aa08ed428a45c1d261d22ba0a65d666c7c7185300c288d0ce7ffc464d53d91486727f49462a72607a7c54a162934d15005e51be2641fe0d5891186a32e1cc6886217a929f29ff219aaa98b4475211de7c0b5ac0063a65031a278c96283d499ac98c5812a70ac861d8c8f22ce2801886912bc384dbb5da5ca732d7bc1c5018abb424921770dc5e555e12b6ac65bcb2c69862f706132bc3a7a4e29611c4da850e2b430502a7a55af5b90cb0f59049ab3110ab40a782591d2a16286b40c919b71a90c39d2a100d0d135e2743ff5661c25d50595625ab398ec6c48b54457e323b90c47f58120d19578527c1db3533bc97261f544db20ab44172ca39a0220c5b313d8e060a1a00c9fd14b590d2f2222b8cd45e4c7f294b8f42cfe5c2c51972c04764792dcdcc850ead08365748ae8a045a0086f145db84a9ab8f4fd71898ae21225d0e702d1f5dd7e8eeadd4de895c4af223058b6f3349ae800b52623e6a898fdc6faaf1c90a0d1d39dc41b5449b56380cdac05d3b8a5bde8c8eeba0c0c3b9a9818a54a10f5ce81c7a0fa54b772e779134f6484293b04333f880300c1af90e78203ab485e3f0aab21658151aa86dcf21dd6adb5dc445b825d6b281aa8396e0f6fdeeb8adbb2309dd5c838e0f7154434251992634f76f069e16b3db52a8c871c300ebd52451745c62cf3ad090b8adf18d3d1ededd145f4f458d7c4d78b2d232c0f0ef81471744dd4313df131512e523ad4b0863ff47b8505665321ac416b419590ba37e374303b1e8807079b8fa186c3a5445548d6808795f9395b23257215251c1cf281e004d601a5fba1267614f97a28d76038621b795b6420653a01e3a6b3783895ebc450be4291444cf5fb5c5abc845aa116d0d5b1221e51af94cb62631146acc6e4b604ac77bbf116c04eea639b91819ed48a8177d2b68e20400e493f507248c0c2c20a1e8aeab7ba91da4402992689a686d788eaea76cc412f716bb153463816f8f4e5d95720751eb7e4f485474ef472283c01d24259aea3ba893039bf710855bce0a8ad4299006086954c7775cea44d01ecd28a6dbd0ba11910e75d3ae657172c820b9b0ba01d734ff5114321b96a510176986516d73e5b12ddbad40d6384796504402b30df4fbca68984a96b32ec03690a13a3fce6c3ad9073afe412d87d9a4ee5ffff5576806273661a06068137f016af5b6e5e4e1401cf1c3188bc11f26a5ea473a6547f237d670d2a794e40ed4e8f80acd3a5ac41816238084d28f44a1494d3a99db6001ce24d1cd7d4a7d0a652039e9a4e4fae264cb61029bd8b05229d141b85412bc5ad0463a9dcc52e9a6937d0e65b2544a22ce270d407e64525c13a49f31b8f93654e1d54aa71ad025675dd269a613a9cdd3ea419c7926579d64a8f26f0945798cdc4c724e9d92a4fb8e0c306d627a30a390156a4ad2e9a1374fa27f868e4beddc55fa17e2f1864c6abb446632d629990e5c2dfcc348484d7e126501f91daa0274448654f0872afb2d40d88024fcf64c172a968d0c37747da2fe2551f088741c89e03f97de23924d0b5b34931816364e4ba9610a690c7064844a7382ef852af45c3c0b9a6040174585b42d39fce5c2ab1bed1283672a29137e351dd273f49783545a24d3613caaffb768bb067fc8fc173e279bc29835e90fc6f10d1704dd1deed7925f8c4cece9d15334b2a2e7a4f691c9a89013767221dd21370b9725cbd4e126de3b864d153d475d15ce048e6b87974a27f7b93bbe21877f9292256f264658b2a9a07a3d20c527c868423221669ea9852548a56d146af4925f8ce71e3a2fd9e79fe43118167ffdd75f676828a6cd3498345aa0529af23a34f9134cb56d7151048b3a70da6ad20a57349ed4906954ad5e8328b3a3b481c7e694327030c414c309fe250763ab80f10ca17a64aa6ac445eaf03a20c768160d1b50850a4d0065d98972bc2cb742c55d094d6bba2b41398577238ee8bdfffe88cf9b44098b63f3d22aff2b239431b2e3d4472993c949d6ff6188b23edb633b9d3b2394bd76e20865dcff4a84b22496d84faef7da79fdc9f6da4428a39565db44284ba08f08658f08658f08658f08658f08658f0865f5b04784b206e82342d9234219f38850f68850f68850f68850f6885096801e11ca1e11ca4af7cb8f08658f086535348f08658f086577503d2294dd017f44287b44287b44287b4428bb07ff8850f68850f688505641f68850f68850f68850d6828ae63f22943d22943d22943d2294d5d13e22943d22943d229435523c2294d5523c2294b5237944287b4428531f11ca1e11ca1e11ca1e11ca1e11ca1e11caa2e44784b24784b24784b24784b24784b24784b24784b24784b252c823425933f811a1ac32f311a1ec11a1ec11a14c7e44282bc97b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b44287b4428fbff4b84321225ec7f394a19c3fde8280afbd297d91fb2e619a71f8da1cb4a29a258665c9f8d63993d73ec1f05313b00ec344631ebc651cc3a5114b36eb7f3f3e71f4431a365fef328662cd7fdd9edf77efe5b4431abb8b43c1fdc2ce1ab14a218c12c095896042aa38c1ac6290bfb2a1ba82c1d788ca273839b06f14ac6fe633aa81d8ef11cf1d7cc37b5217afb3de13556190f6e5fe8e759e4300bc65b34d3176769ddd7646384e1b0ef8bc2e8a80c3ba7fd6e85151ebbe2d2543fd14f4fd6572cec0ece724027f4bd2f638a257ec4829d880feb9e2f8e574b202c6c71377d15797c93f9ab06bf2d4fe27af82b4da78f90ccf51d65b7c25f5cc79250a70b84150bde4d7ff13db8c077f7b217562720f48cafe32a7876f7bba901846757e1fb97afe328487b9909d813f9edf3d7f1d4fbfa3ef526027665beef2bfcc853de5db40fcad29d9e15a177fa420b5dd4f7af7bbdff3cdb2dccbdb03a2b37f332791f5de0f0ed268f5555d615b45fab97d9fb9b331f5ebcf9fa14e07d91dffae49bc3c14de2ae96387c3b8a47ac7f09fb5e58ef5f32bff526c3ca364012df3f822e4bda70d35d690a8f8f797cb66c25ed662cd8fd6e65eda3f7f0f808b8ad1fbe6703840edef27d43e4ae187657188e97ee5eb85a22f7fcb2e7b69ec26ffd6c3f4d54851f2189dfbe2a1c3e29bcfa32ff7ebb4cbfe3f67e998f73df1aaf4eb361fe1ddaabc26f9f95614793786c4847eb280a3d56dc4d5e01bfb5444e63bf8e936779acf567c6f4a48c06d69e73b18c06ac38768fca6e7a93ba931799ef5b92b1c2b2d15cbf2f5d3b2bfad62f9665496857fca8d78459f3fd8e7cb44ca92b62195d8af50ccafad1b12463cb8adf0db8d102efb9be27be8738a3c07f581436affbeed697b9beff650cce80b4d1b4d826b4bc5fe24e762af27e49fcea75cff59da0dd26b753ef6b57d24f84767516f951afddb84dda66cbf74ffbdde965af6f75a93bc5905b9c83be918ce5cb044dd2bc6d49fad592f48dbbd7afe73de7c46366265cb1682c5f16ddc1f364bc384b3c3e4dc62b7f2ff46e323ff2031ef9e2a667595f61197590d45db112c766f1c3393b3f6a68cf7d24efddadcef2b07394b8eb593e5abec84db54f3a662fb3e1b3fff9ed5ea4eec252787c968e96b6371667691cf4a19b7c633c78feea4e43de5c5d60199f93fe1f1d151e73e2ba8a3fc2fceff27e9f09413dfafe174ad523ea374ed4c5a3cb8a3b8dcdcc4943f61acc47f3e1a050b7c51a57f1cb60df5d598abea9e8bf423bbb9972e4c75c5cbf952573648e2819f7d158c3b7bd30754461f902f83e47e7b2d111708a2f75b7c198a0731917b745305f276341ef9de9dc713d2bdcf654c293aadc1d68126acffb93f1e2b2179ef3e52b194f838017bd7c5da3b90372536dcfb986acf73b92be7c91f4be277ebb21ef99c760ddf9e2161dd95804bce8495d32e73a5257c16291a7cc927e7899efd2fcbe20eb8a78ccf7f39b27f2fd2eec2a96385e995fc70f76769c3c2fbe655c3686a2724673abc86ff5fd6eeb2825650ae7af2ed8ad8e60ec466bf175fe3e281b1714ffd10bd697427b829047647dcb414e3c4bc6d29539fc227e9b7e50cf2f324656d69e1b393361e40041f1be8cd5590ebff3ad07eb48d827a977d1feec15d7d49be32adc16010eb3c1bca0080b73262c282feda2fe4a63b637713771656eeb88c2820d784fd237af33a173abca53768ba06d6fa270c5fb6ef8ce22cf99cde345fd178d170def85a5aa8c272fa28e7db9bb74256eef2a637c11d70316b45973c72b53144664befed2454b3616ec4ce8ebb3ddaa27f39ba02e1565378fa2b02d5957c4b3d45d65e7f07793cc73812c0884a53ae108dfeb85f1cc4f3bca7875968c60fe9e9ec4dd24e2efec1a1bf6578b351629bb609c3c97d7215e5baaea42db776f6c5985ef7ba93179990f3729992778def6a379f25be87b0aaf3ad1b3206c35d9704d51c006182f5f42d9379185d7e575c9bd2facc324fbde639d1cb2a5edf1b108d28277de20b7b2e4eec009d60c20f41c20f4f04c983a12b7b0c3fabf076d13c890f2ad77023bf1550cd6fb608cf15b3d9a57965cbf43f929a9572053ca6335963117a97925c6e3050e64827dc017861b7e5fc340504c253717c534e88d3e1b2b0f7231960dfa40e2b127ae3b49dbbe93b62df2fdd13d81dde222117991d6f7cbef7445616a83dd32d86f74f69cea06f395c4f73b4a3436d398b2f9e1db71a5ddbc22cfedc85c30061658e2b7c7e89df9760ee5dea1c257f06976ace5e9e8f338d50fc737fc959d93afb3e3144be178fb16b023f1f83558f782fdc95eb8c4fb0749c02791bf06fb114de45796a4cb2ee9f777f339dbb75adc4ff47d271508bd8bb25be5f718bac4f502b9c782fae665be7ef645817d9584912f72d80be7875b200b86f523f27fb0b6c364bd3d8982a829c2953d2ccdf3279a07734947d617f85b185de480073adbf5f73bebcf8ea393f8fec67d09f3cb4c5f988ad0b367fae226fb3d77bf7b0bf6b7ffe7af7f132dda0f1d58f76bd27ed0fbd4a82aaaf7fc7a9f36adcf757f765fbb3fef55a7fd64ff79ea345ae80a755ae7a5429fd66723cd17d7ef73ddeecf4e0b755a54dd16eab414f4a14efbbf5a9d464658a25283fe3498926fc1967a72346fb361b0b46cfd3db7bd4d8e96343114bc3706da9e735e667edf93b815de719db338de3ae26e7e96f5adb6ef2e5d911fb1e26e6549c2e6bcef2e6eb3ee14ef8540dc5a690abf6583698f4e555365369c7a7ba183657ff222745867a27734793cb0245db94d8e265a6e4683e5b7f3bada8c46abf5f57db9d9f2b30f77b064370ed84c074b76ef2cd9d1fb727ddd2d378bd16c84074be183a4edd1d55a9e4603c04ec8b3f43171c4cd682086cfe063e26cd9d14020ef5d8019bf182c850dc913d1b513d0c20dc5c2539156da04f8fefbec6331587607efb3b1325c6e163c79663f1c899d9272ee37a3f71522df18ccc68b212927bf1d2c056548b09c3624cfb42ea3e5fa72599e46efab35297f48bb1dcc784c6947dbc1722b937208c3eb2afdcdc5c774b0da846d23b8e1fbafc3d94849b7d5919661914e73d7a7d16cb5bee2e566e42e6979bd2522d8f8fdf38f0579ff3653a76d58279ca9ffd707adff76331a6c7d82ddcff8fe70b9195dc3f7fbcba08fd8a08fe6611fcd9dcfa0dd04e53d6c9bf7d9d00d68ce4bfa8ecbd22ff66be61ba34cbd6eab0fc23bdd7c7fe6caf59e2ebbc22e48d91536cd63974bf8aea08d8cb00ee6125db7cbcde848cbbb74404293eecb6d9637b6a41d0bfcb8190df6b44ca719ef66da73cf06efb9d8094f2c06335e19c67d99f06e801948615da5d384d2c6fd15d26478e2c206e55d11de18615a977dbe2eecf244305ababef3a09fbfa794d76e8b217dffa847db477959a2eb39288f1c96470ec652ae8dee6cd7a05faf4bd21e39fe3cd17e133725e3e67d15b7e76af311be6f939b03f2e332c34bddb02faf997119b767665ceed2df5236745c66be15f0e996f6d93637ce82b925e48f543d46a4bc52a6edc23922c55fc1f7840d4913979b9116a4ad05c25b13faaece60361e15c66c4017cd59d9b141fad30afbe5379d13121ed9c73cbb3dcdde07c3e5e6c3a7d8f96d8932e36e1c8c3bf28ddd88b671773a0c793835c74c737d989a37b36d8cd365df6ee2be19c8e198523e425e1370d8a7d690bc23693f2369bfd18e603a6a615c66fa21586382799d8ca98933d1454be237e80b4d6ac4f2893331166765373d8abbc57bb05510851e4bd655f4f3f7647bf526435305e3152b8fe7c1fa6a80ddca548489b7e7faee8c1bf9b2b07d2e5b4b77fcb3fa89fab284af54ed371cbc066993714a458e06be285c35aada7565c9e8c8a1fa315603c04e508641b27d4403ba35a4e92915b4a9ee85e94de2ae1d85dfd06ff119b3973a3f6ec816392c47b4c57a99bc13f3972ca13735b73552893a8d7e2b3185a137620afb5abf6940e85ca4ee94dd0b3d36c4e554016f475117f5284feaaaaecc699ac8f7bb5fe8add13446eb11aa1e8fb43c45356680ebf5773c55c57e7707580ab7ed89aa89d62f51ed996a644a48d3969bcde27ec895bfba2fe4f03d41de617bf5e2f7d7989ba23266cd5ca61a99d52adf355e697b3d451f6e8127ef545514f28226eb8a15bc6ffe5ece6b0abf744ade6db629d7643888550093f7c933e5b354bb66d4e6f47db1da090d2e12873375ac303f7c10d551a88a2a7b375539696765376981cb9bddae656d4269b9ed51e27ab1ca7e36ca97f12d34896057dcaece22a738c97b07111f67d4fc9321519311931dcd8f540ea69a521d55f515e575ee7a2a962563de8b78375237aac49c118cdf8a3927679e8be8b3fcad6f9dfd8e98822afb396d1afcd2a758d4fbbeb88eda2265ea1bcac657719e2b98fc327301ea38a220b25fe8ad9b56ef2ae3a926198bcb7e370dde9da7894d17937725636a5fbc4f9ef7fa424be629a20226ae0089792d31954d927fde1c9dcae6f6b44990f2bbde6715beef7ea13736998743f3609c56d396b199b09a4f97c282985c233e8dc75ab9ea599ddc96fe173f3deea3324626af217565a065a466feccbc5d623eccb4c97163358ce55a536252eec8cc3b3d13f5fc3a55766adaace5e1b459aeba5d8b26b9d2767b37d550b59a6bab79389e4e85712ce97d762610b56e57149661fff6caca9b333f2eff64dca6dff101760bb22e88c3527e29c7be37cc593c357fc463988c8bb76358ff5e387e621578804f9b91aa78020c073563b5dc2da6fc5dd48459b21626a6ccdc184fc665663d4fd56185457dd491c6cbaaf199356fc6b25e68b2416fd4b450b9eeaa29b364595fd1fccd788a95b85f322a76754edd95689d4b54eb937120cf85dfc7719bf9e26e1ff241fcdd2f71a7b1a169bb4cfe0c4da2f45bb39d82f7ba6b29c30e2b75b74730ec1ca9697acbc6ede9bf9d3fd1c0faeeccd50d37d2f7bba935199a67528f61b58923e2b5c9f04d9df9a6bae4345fe23a78d65968a23ef2c1baff4be6b7fe7efdf67b46caf9e6024e6325e152fbaec9f0e7efc9877b968c5147dc4dcf324ae825a1ff5230d126f550137ad192c95ca552393f688b32f36e8196b4c594aced7a0f2bc3c1088e074e30e7c9a83f127905c76d33ae7857b51c58340f97c806a1f9fc7f7fccf35b4d1c0e58f968e96037bd29c3ce59441d16ee06382d77de232736bdb3697e9f705b2a937d17c64ab27ee9fdb3529caf58a9fbd6385715fa2c323ba34161af93596bead6a1f6ed93334927fb9a7277a23762faabe33762becfd72133efbde1e2fe20da97846ba111cbe3814c68063c9b3133c76d139b5fd5d08c9d9be3279d698b36a9326deff85e249b88a230f25bf14a9e4f52e6eeb23d67deec9d6fdbc4b43d577fa160dedd477da44b7c5f0bea4e4da255df8dfb34dbde63ba8f2ffd56b1dfd85a7cda8c1ef70d95d563b784fc9a57524efa3c65a5b2fe4df8266fa65717ef49df57f573e59a85e93c5fe7ce93ac153f7f4f78fc6be30fbef782a8c9fa2999eb93752f67668fc6a613cdf5ef603c3d4bc2e61cad7d33b67f1177532db506da60bc72a5fa77913570cdf53d79b7c5b2def753f4aed4351bd63c4abfd2b12f0ae2190e536b5e890b419e96ae79b47d257dcb4e3eb6cf327f3dcbc15e98dd9e446e13b74dd5bbd2b253997bc55de30dd5b8230c8bfc44dc12a27194720998bc7f78737debe6793d722b08c71227eea62c087824a5ff88dd15c2fd71e44e1eb9a44edeb592396a99d28dc4fb800510ae0e580f2cc918749452f9b1b9fc93e120ebc28ede886b43be6e4447b1266e8985fd4aecc217cbaa53e5b0fc3fff2b6e0b3a40c68f7eff19b02fcfcf6dcfff5411454e0b5daedffd97382dbcbefcf39c1668a1ff2567801e4e0b0fa7853f1a9589cfc2a43b3d4bdda5b3d7fb27b8be9a0adf71a01fbb82bb223ff281df41d2788bbfd0fc3abf8df4f94d7e9d45ba1db2767cbc4c6e037d7f1ba1c5cd71239934746127f293226c5e26b70f7fceed3bf3ef344631c16e85bfd0425f70fb9ea82fd3ef76c89a30ec18b2beed7da185f6254c9ec5f77d1a73daefa6f64c507c71777a99dce4ee829b3f67ca21ac345977b1dc5dba7bfdda11bfcde39cffb82ede27bdaf5a57cd4d851ba8c5ed7713335f0671b760c3ba5a8775cfdbefc4d7824eecdbf4333a507de47f0e93f6a67abb0d2de7fa94b8bf25f454de4bdcee5ee6c7c1058e3be6dc70abcad7053c66c535ee83f76dec2a9fff76b05682f1d215bb530cd7b84f8e81192b2d90e964c375f73bd58dd6c6aff701a774594fec4e3599d778591fb9e22e73cc226d2fcbda990c5193915ac527d61717db3f7c5160d5f9983dee8da926e90b73abe39b228c1cb0b3b08c2e47851f792277c585f4ddea59ea8896dcdd0632c08bb89be6dd0d1357d0e3800355df305c22e788faf5acf89de72f637194f5be238d592fdaeb8bc26a2ae9e219561d698b796c121ea54ada7111bac2e6f98e1e6bfb2079b21eb96b0e72c7dc3e5e892e40171da92bbfc8dcc297b8ab7358f78efbddf4341bd2bf137e652955c750f27d41c68a13f21fe1014dd697c1be889bf0a34ade91b9adf6b9633d51effb54efdb638376825c4783c3d8aed989dc76251e7bc0bf7892de3fe5f826d1c5ef582f76a9e62acabb5be03d2967b4afbdc434a9231bd13efd5a3ff6681d8af455dfa673d7e777cbb6cdf1f961dd8bf6f8841fc45dfaa8c51b3eac8336c41789df0e292e73dc4197021ee0ac8edc5d59a2710aea11c8d79ef26edd647e7414d71dace85b4f1a9379e479b68bf87073c9cd21e131ca2de91b653cb564fe8a97613b4c86493923393a756cc5df0b2b4bd9cdc9d1c05a5ae216ee1674b9b31db5abcc76534de47147be9997d4111656eabeb9e11870657d7402bbededebf8963a3a10da6588bbffb63f33563ed80d1c7113f1c45bdca791bc9fb84fffc13b426cd9112a52c761aa4ddedd9c7d8a7cbfbc1e61d9a2e324756d19cd09857ae4de2107f3a3707d95f9d149e4b127dec23995942b651f3fbea97363f03c797f53e7c3417efdb881807e4de580cfefe67566660c3449df3a131e7bf278cbe68e4db955f3485adef8fc4e8e77647c09c6e573165db74e957354f86e224b7cc66d7309ddd1972fa2de3f2abb45db353fdf26edca4ae6abfbcb48f4fed5eb7b5a06b2be5ace77996fb59dc332ebc3a928dfac3b7e28b3558f8192f17e58f72e7ba187a561d617a42ddfe4e5a6da75ea3b776c28d5ce051d757abe6ac3b395ef7a4beb5292f55e1f7514be9f8c979c2f4b6823d0e03a6387751af1e9e3c935e509f5aa197bf46c58de17e1b716c1da0ededbbd7fd3552c855f98a9a3d775efae3ad25d4743f4bf85a3b93565aa3b0ed55a2e4ab7ff6e7191b8de4d5c772c2207b69637b23c9b9aa3af647dae923b889d5063a3f17e58f71c5150b0a4af4ae403d11103793390d3dfadaeac8f2e5f1547bf734781bc2f7eeba6647152a6c9fb4720c3fe56760b1608628f9429f40d495d29109667e906f291b473a91e0e752c85dfbaf22db90ea050dee271223f2fab64e461224b6e0d51e89d26c3dc77d76f715ed47630258b67e56efa9c9207a2b9a913a4b794bbe27a85b6dcb0fef3b2b65167fa158b1c596348bba4cb2ff1239459b7fdd08786ec09b47e429bae236683b57d467c711c7abc73973aee951c25bc51fea2c76dd37d28ea570c879d9bc28f7ca575db76e8feda48bd3fb3979e073c53750cfeb2f85eb20b6153daf6f3e1363dd68e80df1e01373dc371bbb5b0fe1858c7dd0bd89b1d4fbd05ff71591c97ecbfd351b00aed4df369b03ac248b7fac2be70ff1addeaeb3f4fb74a0bfd3810f6d0adfedbea56ff6767c26eb23e3fcbdd554fe2b7b75977c142e17adf592fea8f3f5eafafbde56934987f501ffcf966e248e44c533f3c373018969c3528f8fe17cfa6e080e612d25c97889c69192c4e9466c1e6cf122983e5f644cf1ba0cb25f8bb8ece0190736827e7935d0c9682f2119e19f9a0e7763267a8c4e566f1199d535805ef08cf9224ef52c8bb16a7e960c99ad1d984dd72b398d23328719a48d3827a8cecf01bce125ded253b1a489bf01cd5694ece8090f76ff160c6f73f961b6b5a3ca3d227e55a9fe87998157b0acfd5c5df3b567cef7bb9196de979897dfdb9bad168b0dcd2726d87d973161b7634d8529c40cfc091effe8ace65acd7d74ea6cdc9d98b9323b365658ce917d9764ada7eb321efbc2d4fa351fc4e72b6440bb0efe9f6d827fd149d5f19c1d3243c1b167f5b23df196d8be5c99c452cf259d91993b84cefe23057a7d1727df1699b14df05833efb1e847c3e1ae6eb0d360bd26ed9be25ef09dee793f785636db199d0736fbbf0cc4cd78acee824ef63e9fbc46c3ffca2651e0d9602ed6f7148ce950d16a77958d67978a62ed77ee3edfb7233ea8667fc9e973ee9f781129e0b841f7372b63145e786fcd10d7030e47b789ad3ba0a6e787ef0fa1e9efbfa4c9f8d2a6b4325a0db85e70ebbda7bb14c15ed9e94c9ae2a13e1d7dd366c4f313c8f19d35d433a37c3ebb4dcd3147611f4d9e6345a15c6053d1f359d8d957772f68e96f965e92767c096dc243fbfac8a7c9a3bff973f474ace19e6ceada69f6939e2b6ded3f156388f286c46833d1df7a8742e4bcf8d7ce73d1e6399b96b24d279c42c39ef9aa95330de074af87de53409cffea578898e752bfb5d25fc6ef5fc95e3e573f89eccdc98594f326723172f4b94ff26a6fd18f2ec045d90a863475c4f5e82f51208cfded7f789dd7fbf718bf7a5b7e7b48ea43bdebebbb805d8689f20b3f19e087d6107519f9fab2ce9d3b3383e393bfef928a77d0b876f6a710f12da3d8789ddb4044beda7c3f945d4e7d7fdb11c93d6357ea1b7e3fc7b72138f9b2bf52579532729bd82c26996c26fc8b980c8a65af2ce9c6df5edb8ffc6e88b5f7265ef4ceb0a03ece22677f737b55b89e5b63765982a6f646f8df0a5fe326f593f206aa7233e39d57e8f055d75c1169bf6a991f41117f92c55f895d7eb79d7b1bfa81f9f0b19a6cee22576da8cef5bdae7e80bbdf9599fbd9e3947091fc567150abae3d8de14fbe981f74de8f7f496f2f72dd421d3d769fa8c8d3755868cbd08bd3dcfc76237dd8e19bbef3aa193f9fe0dec569644fcd853baa5b88c397fe5a27e3c6b0b8ee95267e2f4ad3b797f4bf9652dd8bdd033247e2b80dda2b317ae164cf9a64d8683e45c6596a7527e97fb8ba2a77dbd161d65ac9db376e5a49ea5e7f6866f6acaa7929b8f4533d5661536ec3f7b276d1362fbd125bedf9dedd497c938b44d67fc3843ff447e7b5a0b3d5df22bfa8a4fd9ab8b63d44f9727c71b9d7996cf4b7c87c3fa513fb76bc4fbf41bf1992a3f9b6eba40e89dc41d698fe4db297b77697d437b352ce737b7726ce5ec1af17ce95bb1ad20eb2f5e9c2744e1c3faf2cd73ca5f30b1bfa7c777c5f9ae065b58a18ed426ffd166fcd3b2a5c76fce4e9f1a2b19ff84c9fba6e08f4c6df7edf8289977fba7ca79a28226b2b7a6ca56d956a15d273fafb7ebb3926fe6fd5bebbe1daeb7a9b9aae20c74852df05ebec8db0d52fc96f52758d7cd2d314dcec7e039c54fc91570139ed8119239c9d8de141eeb30e42172752b1a14fc0e5ace19893f6e78967db1cbf25c1b9f84b2753db6b3a3b74bebf7111b7e7abc36db38e97a94c3d36b695b62a379b0786ea8b1acf93341ff84f7863696f43cdae8eb50d306c47691d2ebd373edb9be0aed3dc97999780d6bf6c52819af2dde1bda15c6e5325ae827917a5ffe3e84e9050e83bf6f2dc6e8fdb25dde87225db77b64e1a22cd5727ecaf95534d6a1808fe798d07e1bfaccbf5bbac42d3ab27fff9a58d9aed1b5ece8add9c7ebbb794ecff94694f04cfacc65edda9bf5cdf867f5c19fca1015fb9e129f8cd2315ae1bf91dc53916ea3d27b39ee90c92af702cd724ebe8d2bc77ef14adeb239ef7e19add63f839eab4a8de74466e6471d85ff5932764a7d1fd2776cfc1364debbbf49cfe9d7f85aacf851afe43e843bfc4b5ae2b3f71434962be303d2fc8d121f93469a725f9651036f44e7d24bd7f4ffe1bea1c667a564dd6c1c8ff19cf53eaad27364f77a7fa49f88fc1c9276489fd124fe0ac9b7896fc66ca7f8fbdddbcb644cfedea19bc89dd31f3e3f8b025bd0f144f50a7d61a26f97fac44cf805cedc0d93a953e8f791b47dce4f267f6f4fbd4c5ef01529eca98b3e3493f7c92577c6ad957f4ac86bc99c93d61564fa3c7dae2f23f397c9e89db44eada69f9bdbba457b26fbd9363e2e576d5f212b2667083fee6a4b20f4ece8fa7458d65eef25faab5ba60da3faa5f760e11858b0fbdd94bdbf9ea12f4fa95e6a5ea13b9bb7d0d3be1de7ef1b76f1bec585f519a5f7101bfaaee29c95f8fe0c5be84a4b65d167b4dbb1ff725f9e63c331c86372e2917ab450af1caef3fcfafcf3b9f3dcf933e71cea4f51ef9b935cd6cc45be399d979fafaf7fe09b1339e3fce9b947aef7da79fdc9f6fe2d7c73f24e38adfd4874808c52ff1c4635190919199ad06127f5d1d071e76f7ffdf8ebefb1e70eedc8ace38e133cfd87022d6828d090fdfffe8f541155533569ec78c93b3051e8d7d875e76fd4418c8463b54e2a54829f7f4fb9fefcada9be11ffff5535543474863f5493c4a3ce8274609f24e04287093e6dd76606ff2343657412723b17f1f6ef9173d2dffe92bc03890f2cf92ef18e924dddb2a1e330d20d595c3ae11006638d13d41b09981b3fdf3092c8b3e10264043581c0ca248441f593049b06800d12e095649168a1f10f06d04285b14c91a5916a87cf4a3a537140f200e5eca312454acd26245149a17201b6e2dc038bc3a846608c91e59220b7b99474e455e0d6e51bc87161ea0d9a0e524fa9c0d386128645ae0caf1a66e84a2f7908e338474ff273ea21dd5e8e063a9927aef79279ee75b8d473ee932e4e75cbb5c7f6b34f8c752241ada12ec1a034d0904d85f241f4338a7f1b3f4bc08124787a26e5e539931205c48f5364e79c7e544d29fda891d0f2f1e3d121e1c5e3678b0c9cf8f14a22b59328e141ede0d53a8380150f1804253fe86e7638aea0013f6dd33418d7c5329035c8d098f1094482f08c4e8c41626367d24ddb78652c689f1ce6b7070c97c61d4f435cd9f1900b831f4af01f619a1440864eb04e33d72b09379fffb46cca27db04b2a6484c5ca7da7c06380e8d9e5d0f93806d23d8e27de1987781da8c55cc60d66dc641db0ef8a20dceb41d4b6a030cc7593d4e43864b85934628721c0f12b9a10919cce86d5ad28696d9a2671c70809100d58885b26928743835205d2589f85d0f7521863a746dff04fd66f405b99ae3d250cc15486caaf5ec634305c8352d43f3d311e5db019983ee3ab56dee40c3b5fd272227a4200a384359d518d57c722c786182ff0a08a460700381c8f014cdb0003b3428791aa9dae808f01930c78b5bf812d4916d0107c98c6a2a74b49125d7a985050b740b04036c1bf8e16a5e8d756d08ebdf4610e1cc1d4a0b4d601b2a1206f22978aa85070337f7f5037091c638aeedc9f96a1eb06f188c61a2fcf471700cd345073ffe91cd5691f11434ae8d24c6c9d30699aa69042522a26d5556d002e112580989798f486a61b0fd6674b8ac5502ed4008ce8992aaf96461e0abb6e9190a834d19e07c3f964218d9b3ed40a2aec37a063a43db01f889c437c7c0356b3f7f06182901883977d83c50f20e07804d468376bee933727cf014c9f28dc27e3d407e5261d0802a913f651b592515485305134571c6cb625cdf2ab630068118525bba1ca4cd6b08860146a1934a718a6703171558a81c1cecb21d17e8561e6daa1832aa6901f9045dc6363db7c8eca68d3006cc054a8e19c0b2d981148364d3b6c26f3f61db6b46300ed22d0c8b588fec263dcbb02a331845b69c701c4157052ebc00bf731f9cab8607bbb1ea52318e6c2935b9667eaacce43a8a55b9bb4cf6a1f4084d6b60feac0d031425d8f6fdf90b1c089516d4315ed6409be226786ce6a5870602d3386024bb0a50ef2473a0e1786d9aa248c41c90013072fd3fa356cdc39f119aeef91e4205b8a0285bd7d31c8027e707720305b261c026f7d0a8a6e3a0360c9fa308ff94ccab0dd436b0b47b088225583715989746eaa968cefd148ce75eefaa4f9873d6ff888851e0d980eeff949a418602af77d61749166715f767f5543a30c09d780f600b42bbb0663511966cdf1a48a06b23f92e12e3be016699977be0367021463a72efeb191beaa60bffa0368ee6b98a7931eea23180e568e65dcde05820d423b7267181a1e6d5306d28180bf8d80477ad7421a5236b50f130b44bb6327fa45a2e201920bbe8dc72f189480c807d0739ed058802a5021c4d3281ddaa51f2c4548afc134a07dae7769d1e517aae79c7c82f52310a7264f30cf38a945a7a0918c65dc56c2b1845708cee42b794a222bc691cd03dcd95b503de45783f17dd23c68424eda59888e00e212624692fc344043690e1c1c3f74c98212936d59682454810ac98f00c0df78f2891815c7477dfdebdea4674d071800a31f0effb5cfba52aa430a07b31ed93127cea0eb2a046f7c04ddb953578d7006cb9c44768db3c207c5f235bb6a9435783ed763c21119509b079cf87ee962342ba3b96f790e2022560dd332d52823f5c21426272cfc1dd5477cf47193a1bfef6605e6fdb865c8300bbdaed7e42e2bc713715cd775c6a73be93b8ad8c9fa3a273c7fd848194ec40b7a5909ca58d65bc3f20bd43f0cd525e205235d7b2cd332a287f4b3c11ca049a3f222a53623693bac090ab7ba58ca8b6ffcb086aa7e52a823fa80d210bc45074678dd2847ff05d07e06a36a922f893ef400ce5a2beb82dd51f7db156a6af2669f92d09c827f350ad638b71c8d58153bd4ec738df85ce01e1bac9228daddffa4548b9cc885f8623c279a94ebf0c1d39e3b48131529b72e6fd71eae10a807a8b7206eb2835ea7936645468401bc9b2a95bc02e5a971ae94d5b813654f4bc8abd91f0b707bde6519da5b181a198fafddf726a2480720a57b3a1a399f80f2a7601f8d4825d152879d5525084223b89664e097b916aac5d1ba0bb8882f21f708d205ca020c56a0fc7cdc322c612dd6f7bb8291da1ec3aae69d7092345b2f66c1bd3b4e7be98a40de3c5e0bb782ea66ac96e4881865ba7ba8a80a773d098cd4d19e25af27184d681a548add1b6299f9c3bf0eda6ff868d7904d381ed6800d76acc63ef53e8b6c505fbe0b638c6959b39a1e8f95a02ba6f985818b807d3aeb652c44062e3379b2b1e011bb70d050217575bde22b00d0f814cd48873a0dda45c4943afcd28e2cc5570732943fa86dc8e3d5da443055ea1ecb5598d09badd5a1a405b716989634405aa5d8d025686b66516f8c43a38c46f0be595926146f0f7a9a4c86176513d926430ae0de4423f17f2990b2acc752950de13349d77b18b869e23904f16c001c400ee939577ee384ad0802ea93375e86490598570a16e3d41db7e92812b6b852f4538cb36e58263413e97497cc6eb5016b491a9a09c77ec099e912179f609328ea3fda34c657dc2c0732cd37119d9f2905268b79301148d3999c0385466046b83539d1bedbfa9cebcb044964361deefab1c7628b80c97e34a7de14ea66d1ac447b1e049720af64dd0cdafba279b297606061271e064a0ac9935598c8e1405c30bc8f36d8c524d5d370d263aa35003914d9c9f62f290c218cb03a85494c34053418a19348a67e77624d40e1d640145b14b46770290bcc301da4fc5892381c8a6613c3950f66ce4fa4fba875de4b83604f902c504447295f2bad8243f90839f4a75a80986feaacf7d0af6d046ded2548562f2ded505a0848171d2ccbc2eb28093912d7ba825aaf9b3722056058dacab7946a982ba76757765a025fbe53a64cbc256d810cbc125fb9872609b960f7028a8be6395a9755a10b4ac622bf60ca1deb50dac542e2d8716957fd5b896f509a0259b8e0a70c187a302572a9a96636d289b79c3681db265bd4a5d37cba14efe484a258c410699ef5a35561adfb2d0c4cfb87844a2006e3bce740bc3261e6c9e274b5ccdcb31cdb56ccb6d318ef86eb6065be40f3d48584bd1ccc7ce05e4f760058c9b97bf8b88a8439f3c4bb541c1845120f041e3ac51eab7500005ff828993918093172aabc176d1485c03363d37ef175b8a8ef793541192dfb1b5a36964ae2c995533f87522fd94a9b65398baa1a33b6a7eef90cba405a906d58c3a03baa465abf26de83925e7a84a004f8df30995d79e74ef0aed36129c2b5bcd2fbd38cd18c2e785adca5dc7868b2729f288f868497177537e06b90d86894e8336230b135105ce7115b3583e1706d235d481611475513a705d830ae1d8b48194df43c5f9c801853d5090e95ab6e929e109847f44e723fe01af2e341c641a0e6349c5fd818ee0496594bce39e8e4ec8d48252164de8499e69b9f92c03998c84c10972d29383f47cb3927c7aa8b7343bd89b63ac31b269f9b111a00aa49a4f9aa94305e5f92a46046cd2f49650dd75013827b1e9f6931b6c4625e0c0decfbabc724830f80ea6ad03976839e273c44d98977a0c792e2ea295b0a762e756420b47892ba145e7df5268d1dfad14a601476b0963e482b0518db5a18a1c17da4cc125ae050d65e3bbc9088fc7e7d6efa37534d06d415436a5e7816760a3fc6ecc040e72e205b5d4125a0a49e65dd9b3cff07e32f50f687453c955d1b4a0e1da400e66d8d4efc2f9d36a1c535014d5600bca1a0b18c703c7b22c030cd729ac7585ec8ac3bd16f0b0043106ba4fdc7764d3330a728b75524b4fc75b3abc013b98e69f147438602431e1df1c2ef6930b7da5ff911c9c2b75a06b4150559f1694c14fcdcddf3650a424f64a26dfa1691cd593c1ab5598ab8aa8e4dc2a72254f3e41f78769abcce5c2a826d115c17c0f175e516240cd564b3e543724cd4e1ddd6e0f2daed40eb45514f53be9741db8b26691ab67b2480dd9a6c7a8a6e504af61e4fc69bf3c2019dea4d239b075e8741919e4553634dd0a2fa14867d8f293c2a8f2a1329d71e4123ff354be6b9e60be18a9dca2452598115d59b319533a5e2bb25ce8906d47d96d1205905ef03c2f406cf8db2bd83b5ca2bc270e704f8eef043bbb0a80e1e9b2951f859e6adac7a09719d954f25a8c33c03ec080e8a2a936b7a8cc8d3007e0b82ed42d5c7062bc68beed3918428b48b4c9da5fb27bba02e3e6338ea33d0135d6ed6140331750f2b0e9393320398c0eed1386ae0d61eae7135942032af3870215e4fc9035e680ae9277c8259e7c09daccb95b91cca8b6e95969f19f589323dfe16a0a1a71ac14600164d7d087d98c64840b7919c841aa5197c7484a433e553894e5939199d803ca2057f3104a295789623c09da648e03aea9532d412a51416a3125695505a964c969c0a4ecc39528b3363b3ec6980210468476fee3376a9acaa63094fb4b3292193f333eaa50b1c9a60a00af285f9320ff06ac480c3599706634e9ed71a99f29ff219aaa98b44792f7075399056ca05336602c603b61c5d293a499cc8864692505b946aa7c20ebb0268b3820cae194578209b76bb5b94e65ae7939202abc976407ab46af2a4f03b216de2c52936d99d8ef74d9cab76404d25a40fa2a2c187654119f928a4b72e3573414ab782756192a10382dd5aacf6580ad874c5a8d8158053a15ccea50b14059034aceb8d5801cee5481686898f03a19fab70a13ee82cab22a59cd7134265ea42af293d98124fec3924ecaa1067f32cc8ba199e1bd346990015d46b20ab44172ca39209f8514a35067921e950b810640723f452da4b4bcc83a3f57a4bf94a55bb679f5f3198e6fc8011f91e5b534d341868ae10123552b14d4f19d481acd272792afe18003d460a45bcf033d83ba12a5d389f34768989190826caf38e60886a8312367ac42ae67a040ec22afa80518256fb8968fae6b74f7566aef442e25f99182c5b7992457c00529311fb5c447ee37d5f86485868e1ceea05aa24d2b1c066de06e78dd5f1b745c07051ece4d0d54a40a7de042e7d07b285dba73b98ba4b147129a841d9ac1078461d0c877c003d1a12d1c875795b5c0aad0406d7b0ee956dbee222ec22db1960d541db404b7ef77c76ddd1de73040712d3a3ec4510d0945659ad0dcbf19785acc6e4ba122c7a536e41a12cf70911e9af4d101c80d5c94c537f6787877537c3d1535f235e1c94acb00c3bf071e5d10750f4d7c4f5448649dd41fc888b40be6938430f67f840b655526a3416c419b9135db0c773a4dd0402c3a20aa85ae069b0e5511552322bd5001a122b7aad8342b6565ae422497bcc2338a074013d8b3eb4ac458d8d3a568a3dd8061c86da5ad90c114a887cedacd60a2176fd102790a05d1f3576df12a72916a445bc3964448b9463e93ad490c851ab3db1298d2f1de6f041b81bb694e2e46463b12ea45df0a9a380100f964fd010923030b4828baebea5e6a0729508a249a265a1b9ea3eb291bb1c4bdc56e05cd58e0dba35357a5dc41d4badf131215ddfb91c82070074989a6fa0eeae4c0e63d44e196b38222750aa401421ad5f11d973a11b447338ae936b46e44a443ddb46b599c1c32482eac6ec035cd7f1485cc866529c4459a6154db5c796ccb762b9035ce91251491c06c03fdbe321aa692e5ac0bb00d64a8ce8f339b4ef6818e7f50cb6136a9fbd77ffd159ac1894d182818dac45f805abd6d39793810477ccd25f782077f9894aa1fe9941dc9df58c3499f52923b50a3e32b34eb681163588c00124a3f12852635e9646e830538934437f729f5299481e4a49392eb8b932d87096c62c34aa54407e15249f06a411be974324ba59b4ef63994c9522989389f3400f99149714d907ec6e0e6db5085572b9d6a40979c7549a7994ea4364fab0771e6995c7592a1cabf2514e5317233c939754a92ee3b32c0b489e9c18c4256a82949a787de3c89fe193a2eb57357e95f88c71b32a9ed1299c958a7643a70b5f00f232135f9499405e477a80ad0111952c11faaecb700610392f0db335da8583632dcd0f589fa9744c123d2712482ff5c7a8f48362d6cd14c6258d8382da58629a431c091112acd09be17aad073f12c6882015d1415d2b6e4f0970baf6eb44b0c9ea9a44cf8d57448cfd15f0e5269914c87f1a8fedfa2ed1afc21f35ff89c6c0a63d6a43f18c7375c107477b85f4b7e3132b1a7474fd1c88a9e93da4726a3424ed8c9857487dc2c5c962c53879b78ef183655f41c7555381338ae1d5e2a9ddce7eef8861cfe494a96bc991861c9a682eaf580149f20a309c9849879a616962095b651a8d14b7e319e7be8bc649f7f92c76058fcf55f7f9da1a19836d360d268814a69caebd0e44f30d5b6c545112ceac069ab492b5cd1785243a651b57a0da2cc8ed2061e9b53cac0c110530c27f8971c8cad02c63384ea91a9aa1117a9c3eb801ca359346c40152a3401946527caf1b2dc0a15772534ade9ae04e514de8d38a2f7fefb7ffdf50d1d378e4b647818d3a43812114d9a9b4a50c8fffe7ffe6a1d8e690e9011454e2a8476e2cdb9a9a49218d5fc410dfcbcb90d97f8fffeabf3a3f39344032353661c2aacf9db6128a8bb8384fdbffff517b94d2bacf5bf384619c3fd38f4e5ee6b17747fc89a679c7e34c52d2b2388029975b897e7d79f712cb3678efdb3206607809dc62866bd388a59278a62d6ed767efefc83286671b92b029971cfaf5c732c3336a849bff7f3df229659c5d5e5f91067097ba510c5386649d8b2245c19e5d7305a59d863d97065e9f063149d1be234945732033c26859a51194f147fcd7c539b7c8867190d1c202cb0642cf084c79ea8f77d4918b140e87b93f1c01185d14d5c0f6ea2b051e7a8a77f09f3dbe2b6d0e67eef08c65b0ff8bddfb2df9baf378bd1375e8c66c6ea5919befd9e5d4c53e1354bf67b5d51985ef6c2c25e1b8bb3640c4e7b41b9293abe29c2c8013b0bcbc70e0b787c9b190ade1b036dcfb99f32d7f7647ea589dd0507768bce5eb85a50dffa87f155daad4f9e3cdedec0509384db54998d5c5d117a4785c7670969ec8cdf3812c2af13634bcaae8ca7d6bebb445fdda527eeb48bd49db2f2ade37dbe2f3bf321eecf78b123e90b52e7cff1d211d757ef73e72065b7c093f18295757c5486935765d8c3703c38cbc6eaf64b7836e7c78fdee78e754463ebedbb243caca90caf78c63f5bd09f76646ea3cadd950f84053b393a6616875f25d43b7df21b67a27fa0d9504bd541b560778a95f1d697d0403cac4fd68c7ff6c4a18667c3299aa04be65d9f3bd71777ab8eac3fab80ebf53fd7272779f7bceedd86b863adcff5d59be94b535c5f90389c389fe9f618e25759dfb2ca6eea4d788bcd9505d79545d2b7b9b2ecebca820b65f16bcaf28171ae2c665d599685b29ceaca72cdbdfb77ddbbb785773b75ef1e4946b69e525d9b8f065eae2c6e5d59a09eefffe7bab23885b2d4b6793fdfff97bab26cf85cbb18b57cbe52c6acf5f99d1ecb03ff73bcb42017cc531ab7df4d54f1bba3c9bad29184ada78ce79ec46f3db1bb3267fc735fd2b7ddc9c7c897f551ef93dffce7fcbb8f67df1f2ff3e1c9918fecf5ab3bf9297ebbfea7ef581276fdd9f748f9258c7cb1bb7545a1c7ca1dd7df7dbb2c184fcf8a3ff0c49dacae76535fea4ecc89deeb48c214cb68d2fff5dd61e16e80256eaf2aef3f91c076ce7bac2913be63493ad681b03d4df8ad2feb7d7fc2f7fc2ff4863ebb4bfb9386d225e5fde54fd40972bd99ded1e4a1f61dcc51922e5b33dd3a03e139e065f4f96da2093ad913f4acae74ec89c3010bf88d2a1a5b471a0eb06c4c83f95b53de4d158c57ac3c9ebfccfcbe01762b531126de9eebbb33ae73de1bda6fd9efbb12377d9e715347e2266749185912ea9379792f2838ceef2efcbddfa7ef36e6411ba32f3495be853e12466c5066f673d7217d01be3baf876c7f9d33fc626c3d91dfea40e8617138d1d2ed2672d7f35e1f39db608db8f50d89efa3bd70dd04ebc0179a76247d85c5a0cec2124dbed9be32c61751e8eb93b16249faeaacdcfa5d20f44e52577ea9fb8ef2de67ebdfb7c012bf67646eeb8847cb3aec442d68d35f9b3e02faf6a80c7b9adc5d5822f7ecc8b7ceafbd6ee17db08e705bf6bbab789bf1f42cf35b5f19e30f71b738ca3abe287cdf9f8d37fd6f6efa5b1416ec2cfaf676e04bdda0df56bd197f49f28d207d7526655a5f8fbfb6aef2c5c6dfd7657d8ba1be31f7fee955d147fe84dff761977d4dde2ffaa2b07d11d79afef9edd2be79679122f44ea2205a92be3d4dd047ff170919bd3d8b68b094f5fe335c5f4fa97ab25287ac759ee8abd61797cc0193f15b30aecdc3f8ea7f0ea721edc093ba4b75bf133540425c5ff104e17e6a2e50455f633f776e386e596dfe9dcc0db939c31291aa896b9ce407f8e1959de9a38bcc5f7b9fe39509767367bf9b1a8ad0c192b1ba7dee3a7dd21ee37d3ff7be7eb6fc27b2dec67ca9a7f28e6cba5dd88390cae3594ad7552c855f989fe304f7b9738ffb403e30a2369bbcecb940569adea0d0411277415ffa4293b90d928cff8fba775b4f94e9da850fe8db68404d64b3631470adacd913888214cad768048ffebf6a54151488769ee77de735ffb9d51d45286a3196f7b887757153abd48e197bbf68a18af5ff1d913f437b9079b55cbc867691c39e1db9a996b2f56ac921b5718f98dc03f6325a49289d8d2670df99c3ee3b2e56e4fb2bb7074e9eb3c5eb2bf83d78d7b51747c28c5b371fcb9e4f41f64fc570a60c445fb9c96b3d426bbb8fe5cd15db3ba1bd14fc9e96ad7bdef7cede1c169f199a9fb6df26d84283d36c94646b4390bde698fbfc98d736bdb7b3f915a672e68d7edf56a74dfb19f59aea13348dddb39684c84fadd275b6df41d25a67dbbcfae9e4e239c5f06fd7552de4cd41e4db66d6d8176a50db793d93fc5fbd20bcce9e3385b3b08ac7c55c0dcb9db3657fdfe6caf2db4fbdcceb59a56b4f73cf38e33d2eb976217a4676ddebcdf3b3d56b5b36a4ffff92ac2bdeff413a897dc57cd38c711ef6a659a8d47fe339f252740aebb1dce6aa17f9aa8556d83e68ee3783d8bc88ca96beaca5e80ef27ea4fd093fb933ab0f6edcdef07d24c89af13b6fdbb5b5ed323c87a3249dc6e31b5eef7072b93a8ed8784783c888ea19e1e823f34f4bc1b5074790cf63310a9afbe4b3753e04ecb704bd6de4a74b380ba66409548eafd6fa0bd93f6eecfb75280df0debf79ce54f8b29603df9e7efbea82cccb38915fe91933b5525fc1f772d3faff83ef501acc3d07ddd7e214796901bac3ef85575db206c13d5bada586efc1bfd72b5db372f11ec073a70f8ebe3438bacee65ceb83108563b9e7a35adf983d7471533927bf41f22a79f1eeb0e7ad7b43862a79736dd9d93744612dc1ffdf9ecaa6cf618ced86d569db587b73047bba618fced3280a84e6d8e7e932f2951b9c33667b589f3fd7c541af18b6f728d9eb26e8d1dabec57a22011f786b4f8ebbd1a161dbe273e85997ab6388777c66fc18817deb39c27be3dcb2f7e2ec56ff28dc56527fe8e983dcb307a75039bcfb71fe87e9c7e028225b1a84ab9e76f5b0ecb3998c10cb79ca9f796bb81f61d902f65de39caff5f16d3e9a1279a24f336c3f639918c4835e902281dc0febd5247f659be0770be2c11fcf49f220467243f68d6f9cecab7db769ec8d67eae61a60db599161edf11ccc957e3a4d36f837d7995e34f5eb58e0fd85b361d46bea3acbfbce0eaf7bb568f8f633e792627b9caddfc2b8a0b5c2d9f0653dbf9e5ecfaf7fe4fd86a5ef59c23b5ee7990a72a2c4324453fa59b74d3638bbceb27946f4c1d1b58b7ca6f4f320c6322e12ecde345cdb033f4042b6776af9b4d793abeb7cdc7c6c87404ca4e07d98a66e9968749f5f9a63e0e7a63745aeb34533c56ccc379edfd6b8b16cb887ea54747bdbefe0280a737573754499c87151deaf6dab7126373acc71e6c591e44b28d13e7fc3599e39db7390ca3d4d19a0b0fcd03ddb43416a5d5dc99a103fe4109377fbc073759d62db30b5901f7f609f48d841ac6789bcd1ef8ba62e457c4e67a3e4b05326773f0e054d9922cfee1f5c6992fb0ab65793fa5caa4db9b18be9f92a23b08dd68688f66a81d6a74de55fcd74379d29a61c8eaafd806ddac6799cab5adb67cce08c1a972bf6110304675d20e7b25acfb2b9875db65ef4be60cb366defa68d6910fbb018ee990c75b63e93cff31409d886c072cbd1d1fbce76cf1b675aba4e72dd39cb8fe0348dbe608db0fdd597dbb127ba76740d0f71406daeb69d5bdb811fff4bf47f52e9ff276780f30fe8de5737d9fcb484f8e1ecf390cf8d7156cfd394edd718eb7e3f76d370d4da8f315ea3befcf8f9e08af5db4cbfc5863db9119b6c30dc8fa686e7d0fb1d653a17d83f922f782cab78fac19d2b72dda918cec5fe797dcfac9d534c67f640987d0edf56eaad589e6ef7459ce0ef3e7d657209142b9919ecbe9beff9698b82dee6ecc7c92fb6e756276ad3aaa24cece962e8e9f8ddb06dfe2446c0edc12fa90fb2626df7336a7f976be337a7579fc45e54ed7fd64ebdbfd7bd4be24b03b0edf646f6ee29f215ec49bdb22705bba7fd9989a2bc77c4464cc3c2eb6992f8c46c349dfa272ff2159468ca440815eb12a89b43a80c0f3b678b758ee0615f4fea5fe8dfd8ce3cececc13d5426575732af8e329862df3f48b728883f04bffc883dfd230b15aac3f4dbc14fe5ebdc26e74c53a89da02e0ebe63ddc31196191ed294f1c116a9dd351a90df63fb1c09e799fe71f19cedd9973657ec67b27981fd33b9d03375bbb231fbbd6988fd8c793a405feae6ea42fc24ba32fb617314d96fce5a2a7ebba7c325c07b2fb592b93db9faa92cb80e3e57833b9645bcfcf98a9b366bad4b27f74042273f6eda0d249e7cb16760cb17c2cc11b2b9ba69c97db7d6abe26ffcff11de5b611909f3b1961b7af4bed70bc116a621d81ccf6c6efcaef6e0eaf7b611e84c04677e8fcf82de13b00d33dc8f22b88f2d5921de87d456f6d6cce61d1d62df96e3afd147e49198163e9be47eb196cd2766dbdfe6ed7381fa71d4f7c3726743f6bc3efd0815f9a2c5494e730370ce9dbbc8740dfb3c0bc40fe4a7dbcc4f43cb4fe53890ac324c495ec2b90b789f939c418aee9bd4c2d7adddd31205270f7993a10c7e11b9d737fb3c382df76b1bf4179623ecfb64677ba9954ef2d0c6f3548d21779da5b0b19747cf59de3d7b3bfab286f262c49e5b7c8792750fc76c6c5669c29c5bfbb585847932585b13d93493c9a72ea0d5561c56e3f193e9daf87c7867fcb965083799f9bb7312f3203eab359443556431d0966dd0f0d1e0fe6bbb29471acf1eb969f3ef41eaf7a613d75e9e678df86cdb373b647b3dc9f67a81e6a97cdd20ebd573f0bba4d3137d076930b24c79314fbdef20b122573a9c67ca53df47988db06d8de439b671520b72368634bd7bce54f2ec4d7bffd5efaf98d4c66afe762345919f86c8fb149bf167c943b3519207d5ef927ca79867c8ebf03aef2e3e8b5bd3fd003ed31e9fd1bd7ec8e6e34036cb43bc71b6dfbeaee596de942101efdbd3f5869808b35bf019e13ef799ae8ca99e56b57c6788449eebcd188da78fe5b5e3a6d33443b3c914cd9524f7f4a29ce9c515fcdfd84d37b679dee96093b3f3efaeb1cda058d75041c29791b5736a8d7786b13a42ce6231d807f13f5ffe0605f4b3bd5e60db280aed4258a5eddc5b23dfc07cd42cb8cb95fdbb7316c4d63132320e6378237e7d315ce8327cb6d065b43a6dc0479fc61ed2d878f13e508aeff0fea3b1e60b1dc9ad18b753e708eb39b75313fb8ebfc2cf8cd925592050bb52dd646b41c6fa81fd9d7f4910577af34f42b64a35f8add1db5c7daa4bf035b51cb8809c84d88d91adebfb41ee40687dff597d7f5aa2f0e1fb73ccedc3562c7c3bdc4fb608ff7eaf16730ff6952cac4e07189f25c13bbeed24f34cf458232ea3b5cf30dd57f3b53efdc6f2314851e2e95ae31c4cdb3180d325f2d3c177a810590fb68a357c0b47c577a0127decdc333457c4682759fb153ae79e13099e3d489c7bb6dd37c7b4636b355735165bcc201e5ac72eb3b5436554ef039e1988433e7699cdd3e937b6e7399b99fa1d824ce51dfa52b7585fedabe78dc6c5cc18de56c731d8f001d8df9b6b887d55c9129c123dc454d938aaf729998cb8450b3df9b5f83c973076bc464aff1a82ce32b998ee6f16d3fd5e9b677c46886caaefc1d909e63988b1bd31cce69fd3665ca6924d45c9fc9a9d21ce604f12ff15ec14ce27ea8c23386504b22768e505f4b8beff5c49d8ba7ccf95711e948538576eb97bbff0fe67368dddf3ce10ef9e3eb8bbb687b68a75777bd32c50b7dfc16991cd95850cef93366c3713dbe04e591ce7271aff24cf4ae7ca410ee201b595f3335b83993294b10eadf65a99d4f1e77478755359f4d30d19cfa7789ea7d3cc4f37e4f7a3b13c535ceccfdc2047620db3b5e4be85a381e03ad393e76cf7336e0df07bc398d054a0fb315aeb5154c5bef5e80e31ebee7d49758e99ada5f19b1f37f33773e5905763524db97ebfdb8bf7bb5d5dc7127c6142cf4f924e4f66d615b7de61db7404765aeedae8ca6c60a72cfe12079f64ad332a84ffa90c482d61ae58fd10fb4693e19b7fda3663568a253c95032af1d5e6a76d14a4210a27c3ac2bc649747cf50c66abe79a31ced6f7df6f0be2f773fb2861b2e1c95c27fc5e8a7490adf53ec1b6f94c77d31fca867acc9fbf41dee820a3e9fe6e7c3fa67efe500e4e9b0e19f17339e193dfc33c04318ba926b97f174ba27748ce0ee6fddfc85b83b73dab780a17a31f62dfea1baf69333f33e5d73bdfe9c5379363aed1902bdff81cfbf7577265fc4aae442db9729fab2627572e20274243141fe484ba68ca89dee20772224433b5fb3cfabd7f7d1ebf5be731fbcfcfa3dc388faed33e8fb2d06543fd033d5834ef37699def4a2f75e0c240a73d5bcf1272279ff96daf1f98ff952f68ecbad271e6f2db773ec450b1122ee7b0c7fe3df3d389bc906ff0ecd3723f572f27cfd960398dffcd03c9125669ff8affddeb8f3a32e86d583c8fcecfe0bdcbaf5f9d3639778ede3cbdb8b8f60539f74cc4bf6776c92a2d84d63a8b749dc107f95732af79bfbcbe1f6737e8c5f7eadfaec7bdb10ed95cdd54f937e60bc2fe7fb0392adba8d6814a22f33afeb56c1e5e3d7b70861ca4a3656b2979b34a3c4ee27fbb3dec7f6ece2dac528adfffafeb154f85e064212d6e9c1da13e3b51e3ec786afbec449dba6cae0c73572feec4b6ed434e8cb357ff84a301d9172537ef06c48aafc44f60f2fb269ba7cdb919ef3d00e60bef555e263fd8b477b9b68b9fcbebf7c7fcf4e489fc5d0ef72af6f7961b5f99643ecb594e86f4fc1432b1b1b5b719d353eae5e84b83746787629d23ff5d5fafdff03ae2f72e09a6a296b9d3d86df8466bde37e2eced5a371e781dfb6b3662f908e11cdcc50719303364a67bde82721085cef67b037149f0ad983df0664966867d3bbc1ff8b55e35ec8bf15ff6f098da72a077b2b584cf18d1ababf482667ae77e20fbbb2cd2b53e2ef0fbff333f698b3ce737f53da7c83b66ebf033ffc99ca6d3b89e3bff2f73e737e70e7ecbf4f0daaeee59c57c297ee6ecde59dc2c1ae0b972f1b9e3ecbe460c25ee989fa6bc4b9ec9bbb9427c3e2aeb397bf22274c9d3204ed8f5f7c6f59cbc6beb992fe9d1060824f31a4893d433b7289096e5cef910fcdef4be57b1ee42775329a29d3da07194ed7eae2e51f899e9e1286ae373723696bd8ef7c53f5fc39df17a0d77fabf5c43a3b586c6d3353c6bc65886fdf44fe4be62a180c66282d44a57892cccf40eff1edb9c24be710b3fc577f8dd27e07948ac85e5894675ac6bab5847bf47727bdcf7c40634ced1426de2083cb001f8d8fe76b8573f84bdf9880d0cd40dcb2749e1a7780f4787d8e775a4ae657315096b6729cc4653161307f90b6735d6005bb4839c8e55ae92489ee9c5a5fb5e83fb4e99e4be22f7b4b878e774e55b2716bed6ff8d9cf25e2d6a7da116c3af147219c3fdd8bad218d486c4a08ba1a1f4ff5d7c2dc6f36fddb0ddbbd7933717f06cf23a1c0dbe693c118fb38ac53ffb1de094c8ef2eae03f9997788cb1bd975ae80dc7bd38cc95fe26ffdbcda278ed0cc25eac5fed95c93bce826068c591a01ce2938fe2cd6ba96ccb790dc3f0e3fc5b799ea092dbba5dfb45bfa11cdd990b3f0293b780e6a9d6eddd6c2e1ed099e26f78fbccf46fd57b0bff81804e47c9f9cc17ecbf632dfac9e70a6f6c4c3396ac9e41e6fd36299aad9c2b9e1ff4e32886fae7b9b677b81c4b612b29720bf44f2ef558cd6adfe8618f4633c5631b355b2a8ae07bb89e4d89f63a4b8b902cce36786c715fbbd037dcec5a6b2470a47487ecc3946bd7054c4e188e607c696309f2c85f95816d6f6f81cf6f099987e7f75c6e8290ed40e05c04070d853c82f103f1fef932ba91580339263bbca8f072870acc8571758574470363b7307cf9e71881606de6f4b343f597762cb4799e72c01e744721fd44f3686897fcc6e7e9c748d073f1f9fcd0719c461804e58d735f0aca9d5d3940be41ebe54c8f5e37722f803c817589d390a8695c032dae3e325041f3386f7562361a6f4c176065901f92cbafe8febd0f4c3d40ccde8fb63bd1e3a4bb001be1484825e316ceb36ffc8d9476cbef4e4d72eed9fbf7a42eec7c9f379898b925bf31bd6ffe1a7f8bf6cede6756cb25cebd175ed6c7ddb12325e0f07c7ec5afd7d27792918af4ace0960e5d48b8ccfd69ccca13c57c1467c9ba94898e945a55356a7f3d977361993abee6953e599f0774e0fdb2549bee96d642dad7d712d2e56e1a79885a3e8331c25b9ee6ce49db339f3d7cc4f4bec7fe1f387f55d11da933cb8676ef5b98aed29ec27147fc246ae9061fab07fd5962934773f1e08d4a78a9b58eb8fb7998284d97829ccf1e746b51fe31995d10d1c22f5dfd6cea6da8b7bf57666ff071c08c331c71a5e1fbce754380f0e5f1750c9863fe1a858e139d9617944e772ed9ccfba53d90d9b705498e1a7709b8fb7c2da18e786ba912bf93db6042e2e6d605d357ba8e511b2f9680a63d4e284f70d0c8af1e1fdb26c1a7b9370542cb1fd44edbd372d65b167ed098eb981a92ee64a1b0f3d6962ff27d3a6bfdcc0b426cd1a3187e014f1590c4ec5b013abe774da325788231e8568a127f90e6c13a8bbf9a0e70d70d2860a3888653862f14111cb6766cb3dfacb7ac4cd67b10c474936579a71223a66f0239a71ce87bddbcae70086e27b6dfc7e5f7c56bfc17eb810a493e34e42574fd8a220451289c9f4f3e02e44b0e7ecf1bb979a67b68f43f23b9257159782eb6c11cbb707f7cb1dcf8d7eda9c677a21ae4d4f988dc6b7598537bbc99e6d9e35e337e470be7a53d14f26f78dbda4588fec3e573f4acff1c69e33cd6a0c4816d1cf3f3a9f2b0edf421ddbd696b4b18bdcef8546a84c04cf9a22d7dede9d7b96cf95c177a8a0f4cb5adebeace1db4e2feea13229c3c936f36d6bbf4a87b94bc7a1dbdbfd2ad90ab332cf0365527af640d8f0dfa1adb0e7f48aa56e64b71c44649d06536f32ccdd9e705e105d2e0427d438ef0c1f4ad6503cbacef6b81b45f79953d5a345f39460b69cbb789fab4bd94bd1d5b58bfccbc9a3b63d66a924f73d67e729418953ba69101fee8b5182bf87f8b3eb4c917fda7ef0e364b6188d8f905a3034c47b17e234a1f381e7f51e88782ec91c903ab9e97dad8f6f33e332023becf4727d406e51cc300a1322fb298646f7ec4942ae89009f118e0665680f3e02969bc2e3396db9dff37b75b09f19f96dd5c336c5520c609f2cef666ab1f598d0fa36196c7665dcce49fd6f1d036735321ee09a56bd6df9c5e34df443b687733bc97d15bd6f4ed8866863a63da151db826d9db4f1be9fd8eff224ebcee9e117674a14e64a0bb77ba2bea264c29ea8f6bbb9c4b6f4c9731672a88a9bf0b3c2bd5d4345de0429baec9c6d16a626c59564c27ce2090d5c0fa9c1e4e4a6797e925ba96d7f0ebb02384f5593b5a4c271c5be62d9246e86fd520e2b66432c20837da4175db91a97c4e127a2af6eb2f9288ab03e04dcf028223107ec9bab24068f7df7da67aa3157aefe883d73f5ca96ad3158ca18fbc477cb1e949e03b5dfc81bd339b508ceccd507997fc2fb6f8968dc72bf762aff3e9aa7f47ab3c882de16ea8e0271d87846c8f0678ddf6d11f3c79b9fd77efadaeef3ef52e27b79ce4474ede2beb687f83ba26baca1ecc711aae67a0478a0686f69782d05ce2641cfb0657e8c7514994b829733e5e73844f69c719dcf512ce6d7fd62d83b76bf007cb14cd8e37d85fde696ed0572103802488cc8b9937c6bf8c9b803f019ff8882d45a794e68d377c63e58a6511bda32079ffa78b2da0ad678e6e415be0edbf8466af5180610620f0eb699b11d6d818ce4bf7f3c1b289d8d2fc28ce52994c195fdbfae7f14e13dc8febc307ff38dda18e007ae52ef0ab69c48f37da7ad4cecc9666d64fb5d56bd8dece9836bf5de8e589fc3cf2a8f53ed991ac751ed8d261eb3acf099ec3c9c1fae1f25bf1ec671daca2c4ff072be2a3948e69fedfd55aff9f7bac668b2b3c7e4648275826bf719662f9d9e2c36e7f917d4a7996f5edacf199e6a457088b95f8dcb84fca5af6c6d8a97467bf0cfa8ed6d3fc361d33df38849c4f60d9debeadc52191735f76e499eb3b30782e74c8f9ef32138f787fd5eaf77cade13b0c3785f5698d6f6efda71a0698c75cfa511efd3b16df7798ea9cd1d633fcb3d5927e6371824aed5c035727e2bddc3dc1cf373dada27be5424d57754de41be537a78a7d27582a7b8cee67d6598bf509167a620affeb656900b1b21f61b566bffb767d1b390c776a9fd69bdd71f0d09319155644d0de9a106b9e6e428e9faa7210a47870cde175d36e144f8d9fb9a724ac66fc9b38999ad7a995063b507822f7e943b5bcc4205491e95e3b6b3c92d67936f7b0f58d90eac76259f6f1ed4ad0c8e3bdbbaff14cf4cf756e6a7e17e6d5dc21ab76cf5d8f9d8d98393731721decbbedf39cb9167633fa3c250276d6cb7a958574f41574fb4ae555c94da786b7d5c54cf62e7d099deabf88364310c0abe47ea21a63b845af69f2cb0dfff6bb86f646d1c71bb7684ed8735b6f6ec39a13d88fd9e75f5c65b14a8cb4ffcff70c2ddb7d26b64ecb6cab0227fc5ca0b418a4e9e64956cac6dfcf8ce597efa92780b9d2d59236ede76ce520fed019645273c5fa16295cd3568f8800ff70eaadf7461f8b7a56b2fe9beb0600f1989c9bebfbb927cf33ac6cbec978e7b96f8bb9d3345bcefd171dd1fcfb66e1bbbc8c2b46153b19cd47593c88bcecf91d5c4e693fad8e15ed5ce8bfb38abf79355ee1c8fe4f68f22a9b9adee436466234e93d431288bc95d95c486012344e7c473b65827ecd7d654988da66cdd903721fb63ee2c51a86e51106b786c90a3abf50e8d6761db72c474f712ea3de6240686ed2383d65989413ac92137c8625f9f722b0e767bb3b9b87bf59cd3f2e8f73ef05e24f73d6dd197baf9cb1a0991e6404ead086d6ccb2cb18f47e5101bff0579cec7878fe518b6adf589d0f8ccf971fd037225f9e2594bc1b58b968e3c645fe5a4ad6ba166eed5d9c636a4ed6cae96f5b1b7c6f27e3b9e985babc60aae7a9b2bf6e73c6759db04ce94c61c86f05b732c1ba68046c604ed4d71fb61807cd8346557f9b21603304801c844ebea4a0805d43774ee82dc257f606fe13574a09e06f9e932f39ce50fc7351879f6f2dbb72d7c7d8eede9994eea32987d5bd58224c3b69e699c356c87f07fff9b3a105243f2e239f8ec366b5b2c43b83dade76ed54d9d678e90d1ba8f93e73ce84dd82355cd91245f02d51240afb1b84adc3cff9db2224e72e2132dd13c45d74d3a115c291aee3f7f4735e6aade7f8138bc06127ac332a44bb6d17125ccc69ce985168ed8ff699e42dd901c823a8d5ce982e5f1a72f61db331298cdbd932c148c27f9cef1107e1f8dd46cb5e281d5599759ad4cad8326c79d30b97a6326e74ca8c16dcff7ce86fd98fbbd1005bd6d55b315a0f63e5e9a1bb3987038f9f7d7bf13bd703430acf164b105ffa459f7f574bf414cdf7c6efbd073df7546d6af7ec7bfc33d43fff2dcfeed7d2d73229b86288f37d616cf55e36cced5259a9f4007ffc1fb7423c9d750b1fad827dc3b22f2d525d2c651e5b7727aa8e73ad3ebc69e7e87ced6f2e93d3c7b0b713907f060a46eaa6517337cc591e9adcaa71e8d8b995e9c3dfd50e53f3cb6df1b3e7de4408e4e472cee89e6e9320a9d25e2626308e44e779ca03ea727aa2bd1b0b2713bed1d767ecbe6f99df176e8c9bafa29b643ab7bca9af1fb3d54a70376efca16aaeaa3d9e7cbef400199da8815d676d254f4d3013e9746a5fff57151ad11d81e9b968f4e64223dd31f7ebaad6c85879a3c2a03dabe5935ff7fdb9b1db6bfcf381bebdc5a1573d18cdf756db36d0df79350a0780e87e4a88aa1e6b46c3dc059356a4a4a6e3f7231ac240f4e20a31ff6d8639ce1a9fd7ba3e34373a52f6f4f9bb3668c693dc026f30c2109ab5862970c6fd94165f2eed9c5ddd33f205643f01358be6fb340825827893727047fe73ad3cc73165963fe6b1bbb19cb7c7c06e40efed96f91ec4a58cf1cce410cbfad7c8c80aba5d6c65392af7ee5372816a9abec59f780e0d89ee863de9693b10dbaabf5d283cfc3ec6d664f30fdd75ed346ee9dc60f4ae03d5192ca8fe0f6d0d8d30f6d7e4212e7bc8b57e68f537eac72afd63971d71067f05d6f73fe921a71ebf9ce1e24ab785aed3f6fa4e59e62c5a11d326cdd8ae27d58ed6e4eecd42cf5e3a28afdf97151c7ec8cec7baec839b3f3572996e585e0e9513473c492cc7d22fbbdca46792da31fea55ff5d3debac9cfa5a7ce9dc6b5c2ce53cd3f3d8d1a7442691f3b8f68e4f9ff167d688cd909a62bb97098ef19771d5f116a8d10d55e13cd38b22fc148d2e7f498b0b351c25efdaa36cf0c3d1606588dbbd35997e6c84cbd448f01e170ac7106223914d47dcea1b7339d7cd81ea945a1e4e2e0f7a7a6d7c846b7ddad2c3ecda8fb5292ea79ba4f01c91d902e4fe5df684161782dddb5c2bfbc298e27b339b26deeb9117aac5703641c2dab9c85d3c00f05ce267cb8b89206be4fff15c85f75d1842202f2cfc79b1deb27126537d6b4ee6f4792333b13ef4722acf2696b0576f67cbd9c85f3da1d2dbb6ba7988fb33bdef3ad6dd331efc71f6b9d0aea56d61cf1ef9bf26518b3328a231ab656f4772a4cf7da212bd134ebe8f475be9ce71f11994cb6fd2a9ebdeb87bb0b578ab64a6f19b7fc6c61097866e4e17b62557d7723c43686d5b88e4bf8bebdacc04a83d87f8019331d8c618e63be07d2a909f86c26e44f2f4febdc856d2f0cfac6432702c07e8f2ed10cc49118ea268463963028970d8018690727d6c005fbe8d8214a1a044512dffac3c90cc03d832d2b88a97563aa36cc45411c1340d10b69de7a3f16d6f83defcbb0d4df735878bc1f20d305c9e8e6dbe5bb450c55a1fa953c0eacd1f9f59b4f2b573ba8f1a39d1a9bae130a8953d42e6dfb89450df0c753d03140a8df96ff202713e3af1f72a3e973f0be3f78df02e5914bfbf1d7bce07f60f45ff44e38a24773dc5ba72565eb04f45fefeac31e304ff56dbeadb467c09d6f71536430e47d83618647e328d80abb2cc73cd80bc29fe3cd9394b88fdd33cfd086291caa4c4eb34b313d9abf9ac5afba1f9ddde5e92fb2be30c7f07f334890492436fe4aeabb1cc75216ff99f0d2cc7da1e3ec8b1c69971daf35f5c1f3e8358d4c33ae2b3d5e12715195e171fea01bad76dae8ce5c5e7255a2bc37797e3110beee2d59626e1ea4ee616db785eea31db177ce6d667f2422f2007e902b7c3c0df59820c3c13f8be7af1c2fe1e10feb6a3f8fc9a12c97e5ced4779f76c3f432cb9f8867a62ca2144f8b00eef7e295c564ca6a8a6ec5958a6e484b3516ff2a34c632ff7f4489cc3b9341fe2ea7b9bdc73a773f7546eb28f2e9963e404cf396adfd33db73f8373639b677f54005f61108fff557c2b88f17cc8d74d6a617b0d6199e42bd81fc536079c7f2c7b4ae0c168f0f1642dcc467bbf5dda325bb6c506a7dcb539d7fdcbdcc8335f31cfc0214872ee2fe279b06f1fec93e61827cd31127d427dd2660cadc60a5d0490b52d1e4ec067d13d1e7ebec48171bae095ccaa723d8de7848a59e1549eca03a7f91bcf361b9c8d0f18178ae97a859d31532bf2a0e6b640cd7a3ac020617ba28dc92118a4bb28b46a8b5195f37fa1f39ec58bbf7a2ff464c7fe5e35b9cf1fec04c06b303be1f3729debc2fbcc066ed6bfc6a39b6393655acf82fdd2960dcef2f2561948786d0589f9887cfe1fdba455beeba9ac070c69336ed88a2d525945edfda9e82728e1f273c053beed5999f759e7f176f660049839eeb3e079eef0cee729ebebea7c4570177da733fec35fc3e7c9baf15c7caead6bcf82efca7c211b62ff47cfa47911c0a755ef7d0f54b4d8394bc1b30728382db0bc61df31fef43aa792109b4fc7e3508af6f5b5ef3a99a2c0b1b220b5387c5c9fe7cf2aab7ba2fada46fdadc1cf43c357d6bb7241fc9cbcb451f9f9fd2b8eaf1aaf184880a1ede3b3c5cf2fdebf3bdb1b5438fae6fd232fb59abcb1f87b55c87dc98475706d139e13480ffc674c6e7e63f9cbd7ef3922e1d5d72bbe3c8be47e3ffbb769ec46e168b0770847bf4ad710f0b2e499e36ccedd634b39f38312b8141f7e3727b16e3ca6086a03a0b601a1993e80dc129efbc6bd1519ad7b1df7bf0fcfdcfda7953f662ebf437b20ccee42d13dae8165244b6d630ed4adb925794724ef814b6e1ce6be348d7cf5516680fdfc785db68af9dfd71ccfc446db60bbaaeb7772f5dec6f91c48966029e8e2d9b2188e1e624180670ee2c37d0979ad5b01f680131c76504fd2e6c1b75015837ac82f4c120fe2d6c5cb3ce23a7d9e33f841ccff791ea16ce2c27dc5ac79645bf9244fb1728ff0c766735a8bd79973d2ddd4055e92e6bde967efa4064514fe86d3a0eff5774e3fe2c3c0dc607bc2b2ab398ea83c647d7fc0266cd808a989d7b3e50335fd41c2eb06783ab06de7bad8bcdeb90c3cbdc9134b6da15763c2f2efb692cc21c7f3d9e61e166cc90a57521f6ad99fde0b113c29c1c1f6db79e1fbcec980e3de8f0759204c11be478d3fdbee5f7d47e2877d96433d93be2c6daef55098c6de15646def83d4bb623b197cd3e76b07bab2654f7acaa3cdf6cc265875f43af08ce1b9f29327438a652fa2a0b7fd70a5250a7a4be48da703a774c10ef395c93d1c4f8eae64dd03c94a3627b4c7f637c3f740feb88d47122fe899ff372b2fe1dad9e49ab3e9c629956efa2ca75aedf7ee75b8b1dcba511e32bc0e902fa17bf241ae9c96d9576aa6d3139f2f3efccf62c4ce66027c1c4d1bf583dab42f3109784ef998167074fe1ddfc4f2b2c5a35c7991677fe5a3d171b47c74d0718f588ef2c07840fe9e77ed09199613640f860f79b1865fd2aae5e7eb94613d3f8598b38fe216369dfae9a4fee72f78ad6f3f411023dfd974cc0f38a496ed861e31521c8e66cd633bbb9ef70ff0799ccdfbcffcd27f81b3137dca47b155ac5b2010db82ffcdce598e77cef2e6e3b3dee474cd027179dc295612da45c777c427ad7552fbfb2adfdac6c299e08f90b9b0e03d85c1e4818795c38be936e426338fee654f7fbe8675def0891d6d0de5e0f45fc2385539e9e5d9b3b7228979504e54eeb327fcadadf985fc5ded0bd5bf4fbaf436679fdfe7a70f31900e15b7ea976d9e199e67e72c0d578a90a75af92b4ed7276322ef72b2aedcf31ede076ac09dcefd5471bfbed8537fc7cf401ce039ce02e68cc358d4f95174b7c8fd2a7b00e6f293d4863d93157c5c1eecd0263e7ef2a5400d0ad472f9ed9a28c5ccf64e3bb6c3617a46049fb1a7dcb770cd232e1d72dcd59c09db2ce87d7c639deb9488d605e6b72e7c297d3fb6bf9f8da31d1baae69ad60b54f95f88ef530c795dd7923cffbd6dfe5c06d4b66afb7b7e0fa55394d5751f9310f2e715d60d9f73452ec3b1d57725eb46ebf0ae8d38191a629b8de4c774c63d2c36b88bb74e043502a4d670d0aa837c589f06b686ec4f86b580d8bfe6da83c4079c0a7a26ab2a5ec09971010cca17dbe77fc134844a54fabde0107e32db57886de247869a8a75c944f4a448a8fbe3a1ab360ae21991577fb43888ff5eb7b71cee15bc5f96dfbe62d2f7d20827ad0eb2e827f190977d5eb8da4cea4709195b17d21b4abe3f8b9335f74853766ed96f2b5bb0e39cf48ae18ce2abecd3a6c94b5df16f87281c5767af7c94ff10cb13eada2bfa5c7d10efec41c2f62ccfe16a8b28a4d7e7a1fa53bcc0b49e6394b37564ba92d54930f9883a6a813a78e2012bd67a9e76d6e83da06f88b338f8a92c68ca44726d9413ae948fcc8f3f6e412a27a1cde2bb5371671749506a2dbf0e623fa8d1ffb1ceebe5fe91606418f7079c4df0f392a1675c32da4332738c665f999d25bc6be9f4db970ae4da6daea481cfe56a2e0b4b60bd20ae8122dfb0af55f1f75a13447271804df9e672a6e56ca49d887c33cfee698a5c3bff35d383832b4dae9a225f7d3539b8a97908a1df0af87899a7980757ffa0f2d64a3485e34da0bdc134059fc7f181b373afda18ce59e62956a9a91fd00bd14f83c3ce06bd8c9ede47ade37d9a62f503a5c85c0909be9ac433e3f25deb3f629fad8ddade9ac61ef403c17388fd11af3c501972a072dd0a416648c37a9fc5c12164f72bb1ec0619057d64fc762d82b3f965399beb064d271b337fc3ff37c6b2ba67755a2af05e018f3be354f28ce7f559c08bdfc435401c81e414389f4d2d8658373530889cadb4570bc9d323e00969c472ec3ab6c1e9adfadc9138319f7b12d64d9f9dbf96c42b7a5c2f91e3eff79993170bf065843f3309b8bcb835a87a85f8106b9b0807b7878ea40f48ff10d4fbe54d1b697fc2497e7374a8d9be937537cf0bbcb71bfd77b07dbbbcf90a3a7afae136d38b12fb063b43bc72f98c72ad24ef419cff9991be4a0ff61eb6875ecd29c151c29cec3d0330425cdd81967b92c9d638f60c21aef66c5cf4e1ef061fb2968792296bc702af41e4439f57faddb11fcfc7165aeb9bb39b9ad97cb284ffd77c16b4fe077847280f5f3c865a384332e5e928ea033722ffbc23708265f371752f315464c629c1f802e3b97a215c6a74eca4d760e3190d5fd748cd562fb7061ebac54303b2ef17e584a45c2445cfc3325ddd64ab5302fd71c8f7c5153e4b05f8cc8a818b330f3fe5b56764134f4fde7c3d4233437e9b8d36e7f053ee7b4616e3f7a65c5a68ae34def18df404cea84ffbc1725453cf10579e7e00aee20ebe93a9a71793baa7d105adcd01c37df0e774e3e9cdb34cf834c87bcea1cf5ac5795e63141b39d82d6ad52c001fd934762b1ead9db35cfad2b4cfd6a78967daa216ae310f8e8df803c4fcb0fca97abbeac537cda345c0c753f3b2946bdbe47957ca9a23bcffa62530b76568f763aa57b09d55f93c41eca61af4beb472d74932d65fc293ccb35f3ef479a6362ef17b66aa099c3cc43725f282dab09d718acaaeecb17ebb228947ab90cb79ffcbb3ef7bf5760e88ef193df2d0907c10e161e1fc935e31dc319fa38c44b0e920ee4f6a5868af67fc0e750d93c0e7b3da7d40412e0b3325e1b12f193fa7042b9f00a6aab2fd9c29c8ad2e9e1e4f2fd6d8d6d0ed8a0f54fe8a2303ec0fa9f1d967b5bfc745875dd5ccff37f21863b1bd6785c63e38caadbf33c029f8ca64d0e857d9ac35be7bced6dcd922f27b9680e508e1b429a22fe83759207a76752c5749fcb3d90b62639b5d9c81ffebe98798c6ade379c51bdde4ebf03a7b1608cf792b55ed979dd2de4c46b6f363c8dd7caf9de41cc494cf4a19cbe1288f8d11d7675641be6b09bf76d62572f441e4299bb35f266ff0b751d79dce26976fa785cfe4f2841960887a1b1a73c5736b099e1e7dcff41b8b03d378bf87e7108558d7c2331193810ad15745cf75d05d3b36e4da88c8b59c9741df3ef081d03cd984c4f3a6b1d7ea8783e542f43c9ec37433b36558defd2fb6cd4c273516cb38a179d4dfb92f99b59f620f216e40f332aff27e64ce3af27e2c460a3e205d8b9d6dc99c1d07389e06971ac59275e4de49ad12c78503bd79d4364fdd42f60c415e9b1edaabb7d84f2dc973b4985dffb2672ce147cbe6a369e6a5bc1fa355721f62195d79eb51d2e0e9f16bfe7dd93f92f1ac050fade28aeb133f1fb8aac0bf4e2df07f5dc9faa86c253bc95ff1c76806d4a865d3d8033cdb36b564bb9cfe0d4b10cf47d3bf6308742dd77e801dd0e25bfc1ad7aae55a572ebf9c867fa901233ecd88ac31f446d3c75138b92047277d5e9fe18ed63af057373816cc2775aef353fd2e5c1cb56c9ec3461c076afa5bfec7b5e57fb4f523172b064e38885d0057527d26ebd8abd3ee9f90a12e8ef1b5055c87b97fa7dc80aa96d9220a57248e4a70674272dee9cf7be862bbd36ff5cbd95917c1d16f11f4141f8dcf80018f3fa04ec847f8bb84f41de36aa7689cac9e83668f689bea035e8f789e1eed1847464b7f78d40e2473ae639940395b4fb486db92e566bf9b060e2b9d9e9e62842157079cecad9c15f44d7fc4b636fb5a2a55bf3ae01c04de6ee7f7d9b6cd6ca61757aa0b2c9283e6757c88b878fec5739677d70ed15a9f2ac658761c61f96124cb89312e26dbd154de4acd5eb25c4ff823de33a1629ea97dd4ec394b6dd2c036e550c53e8a97fbbd209ee985eb19a2108e0eb19716df61f9dcffb124b3c3166aef9baab7e965a6f03d8f3e182f6ac1f7300d4745093974567fdff0d9608cffa3c545f6a456aeae8d5312d975a6a710db35a7ed7dae0086dbf2f4225a9b08cd54ed8f16ffbe682af6cb51b28a7fc73369483e53d075e76c62e0bc4c27b7402906d82eda6159c2e7e98c9a2fd3b7d1bd5db344fb64309ba6b9ce6a23cffecedd979c47c99475db3c07711e6b23e180fde79dbd013fdd2fc9675f3642beb2396831c4b5804fca73486f7182fb1ee721977708f5567c5447b25b02a6b4d10f82c7a6ae7a0bae3e0b38d4d05fe74f45996717091eeb4ecfff004f16892f67ac27b8ab431f32c6972736fa89c4f86ff1386bdbedcaa2aa45d69ca4e2500d3f6b0ed5703410768a759d71bc4bd89ef5a5015a935e3d8cf7ff6da62ee47aedb0efb0fcf6550fb8e9aa1e5d3abd9f6ae63e9695ecfeca02fa88879fe2758ed792d9308ed0e0a30f612d0647cfbefd753d5d097066b9163ffa6cc03b58baa9ae98e7a04c2a7c860be326bce99c1d755d633b471233e0964fadbb2f418c0ab13aac9971b9ce4fdbb367f7cf615c4833bdd0684d87406597eae9cdfac3701495a08ff4240f1d9ef73461beb2bbc53283f877e05706b6d9c4628d23eac324782dd8dc40ee05f646ba44fee8d05cf7f1a5e5f78c6f8d1e07cea6e6a13e6d9a6369e1aba635beaaaa23a235f36c0f615b09adcb714478cd93747a02de5c561f7777cac1d9751658aebf55dce723b0393cc72986db92709f3b046f35dcab04efdd3a67bb760c838cad395e9362a8835e9801d649e57a653bb4fee9f3f7dbcfb0ddecfaf11bc7ab7d9da95b7f3111b295b48c02c93c2c8e19d71fb17f2671c142b0ef93f0017f9e56f3d915fba8622fb4eefc01e3cec9d72e3ba185416f733fe0751165abe95fbbb53eb1b03d80d7aa8b4399cb53c33a035fa003f250c8bd27fcd1dcb3c15f9f93fe0567c28b0c7d193af9a169efcffaf7fa04f42160bf18bfbaaac96c2c01f41a8c68df9edfd0af3a88913c57a8cfc9f5ce79c173fdfa79508b4b9ec7b085f04ca87343c3bdd2673d3f9bfcb68f3ce1ddefa870f12d87cdd7b37e837df28e2701dbe9575db20641abd767d79a55d78a43a82b054ed1d4ba8663d2af0370efa7f6faa3f7203e148bf2a147e8f5e1394d4ed507be4822b7d0157a5e43ae58064c551da3ff68f6874a1fb8cd3b7e2f53ee9f87fbcab6283478de194e03dbf75ed95d330d3a0acfb962f50dc905def3b931663d56af753c3f12e69f6366b3f37dbf1e6ab875d24789d4b4d7f98b0c704ae9f2db4f9751d8f90ef2703fb98433c2619cbb8698717983efb5324ea7d88634c4cc96e4106c469dc437493f7b884714cb5102bdeffd32ffd3e8ffe288d8678f7ca5187cf548fd61abe630facb1a1f690d0087d967ebdcc907fa7cad1f79ec9fdc83ad7737dfe8ff953557adee35d78b92f0b6124e5b434177e88b03fc6d60e79733e792fa3dedcce21a8b51f14d6480760d2492579ae9095763950cfd3bc9cd06e89239906bb8901ad3960ef0957e476d680663f56384f534e3b886bdc978d0b12f31535ef09e4efedebb3d9c5c468e230037e97c0cf9951f72146957df9efc21bca605b27bdb90faf6f55e95220439b15abf50fce3f2bad6a72c1f17cf150fff2d06ca16fb76f15c89b08e831e752ffa27004680e76181da5e43beaee229f37763d2935926fc0ab486d6a06be494876c154fef9437a0d97f58b1867b05dd8d74b2025e7cf1f7d993faf87cfef2a481ef59c21bc4638ceccaf465a04cca40b2a6fe89f8c77bbdb877bd43639d49ff827a5eab3a6b1677f34ae08e79183bb66b6f71d043173795730dfa9f415fb76f2ffe407bb5c80261101931e4b804da5fff2d805e4adbfd4cfd8882d312e9f6007a60805f38c23e30e129f7ec81b0253d0fef04579d3d6020168649f0594aff6fbc8e7cfca6ab177f231f43710e71cd7923f77ce0637cc093e69e1d466e0f2d7d69db85378d4245be747c4efc2567d9c0a0f21ca87e6fdac5f9d729473b30b315bf6dc73d6a9ee1e3c377ac07e763df7dc0945fc036a8f600874fc59f038ec7ee3f9b9bb2aafd72b6dfbe45ebca2704b7cd38762b7e6a346cc995667f4c12d3eae72d1e6d122fb2f2eb1c09319673cca7a3fd45059ff0e172f6945973315b1507cb731b89d76b0ff329b7396f4be049072ee0c7e7603df42f39a3498cadc62cfcaa7a313d7049276f14bfc4db591dfc4035a6a6e666defc8883e661cc50b301b80944f14b2fb977690fa1f88157b7eaa982ede5a9e809f4fb31e94bd53863151714e58f8e79f94e74f6eaf83b77ed6de2d99bb7f6399c9f96f98ee0a9e8355b5a9b9635b85678db64ae4e916fcb12be9f2d0a79905a17bfe7216f4cf0dbabe3873cd38bfbe37c76e882bf72d04c045f12f7358eb2aebf78e01ec3ef53e5a660edb1cc2567c3a49f4f1ef7de6c34bd86b618b39c4da317beba192ec06fd7ce5a228be1e803cbf9126c2be37cd0e28bf08ccb8c9f33ca2b05f18019e1caf81fbc879ab5e2102ba1b1df4898db583f24f2e2f392add5cda58539ab637cac3614d6dd7276cef64c6439e91308bd6b2b1e318a09ef7dc0ba5b121276744d689fc34b4831e2a1f39140cf0172af05d1ed51371f13775e3b6566496ded386970ecead2e03b9406d5bd677711d5b2d73ab9f67260d87202bc0aa90971741dd6ed8266f7714639e088fd698559a84454163ec8d1b6fe2738e286beaafadcff651d1bbaf457f829dc56a7cdffec0c5958dbc95bf879bb917a1171e93adbf33c15a3afd1e13657923fa47f8b2943bfab6edce1af9d2e0a555f389029d826aa7af2a2f5fdf79b614f841dc8bec379312ad87332e0f757920b3ca72197fad05f716d7773d3fbf757dcf4957e641c56473f2e323fdda2afcf4ca8e541253bd05c99249e6225ab7450f1d7fb358fe3c1bd5fd0da1e5edbb263aef465bf1c449eb2459e0a3d5aaf6bc261c261c2e42bf06ad9935b073f6acd991e37f42adfe30f7c9427fb2cabf02876bf9679b6f95ed51683bd6cb5e5ca79a71711eb0f5cf57e657bd34482678b776cf7f962b5afea5e7395dc23fd32b06f5ad500d231b07e16f394f6ac31c9b935e959a6fc7939c7c9d9ead560dd9d32ba53ee30262fa6a1625d0201fbd6b25dd9670f67bcce3f0447da33b85a8f5be11975cf52127b6acae559f53cb3ea7313c4858fdfdf011ebfc1d175a0f71acbd367adde0050ff58f999eae60fcd433e9c55e617828c302e4fcff2dad9fce1b1b89ec1fb9a8cfba5cf9dfdf19f19c3cb57f793fd7044701f80e7e0f08dc15db8ad7a8ba15f9fedf7a0ccffccdaef255e8499543f67d65b866b5bf603918f8b53fedb541676b637a032f973a7a0dc9b58b7aaf6e895ccd3274dbbbe7453c0481962c4ce3ec4526c34dcabdaaf279c77a4bf9faeb5fb2a404ef04b457bbe2f402727dea9610f57fc78f8fe9e7378c3362fc789879a9c78037995822c7c6fd9419dfd2176ba9b86558f88e29beefdabdfdb66de09515dc1f4c7ff4fe6ef652f066a0fd5fcc230d7aed4e7e7aff46cf11bdb48abb45fd97e9e5e7f4e71346fdcfe6fdb7f88b3a5de489cf7f2c426a3b126d2ff229bc69e58e9126558db7e1db617e06b3e8ba76794e709fb07f6605beeed67eae39973f404fa9007925c712956f8e6d180ac93251c36ce16cbee5b38fa10fcf2a3f4ec49a22993aba610f9ab513b5b1b1de2596ff3478b9343a8445138fac882f2e33b7436075f720fb4c6f84eae7b906d159f981627576df2917b3670ca1d778a75dc951fecfb8397a232e86daedab8b247695efd03eb642cd3ef9a1a66be72a3f511536cf7516ec8cdc13d2507c396637ba4651587eec3da34633eadf561eb56eb801a67d0b6a5ae766f1b929ef47fb53bb81e384f7da2daeee0fbe4a456979df1ee19e2377061d1ebf680b7a8b856a85f39ddd39c3c609a7694a30b7a73e8dd3a77234599af6c2d6a0bb09ed08025651cadb46f6965d7bdb4d3d50db6d37dcf12b2d5493b2f8c20873e84f5fcca73752bcf464d1c7750c73073c8ab723db7fc183027ed9e5bd4bf68f5dcc2be751c95d46fbdcd580f5985f2bb29dbeb4ce9e3772ce7a37131332e93999270fbb7f0e60a57bb427c990de9411a65dcdec977aca645492a99b7b6877938827a6f365fb51dc6fa051a97ec89ad7f5e8c6e37e02303feda060fdd37c5c79cfca3f8ee4a05725b3daa3bea4cb99a05d2a334508ac895cc673d8f89bd235e3ca759a3dbbdd69fbfb1bc79f45947a40f0eeb69d3c8c575f51f62f16f47c8993fd795bf6bfa98ddb54e41abd6c93ff6cbb5d4bf2c8ee71b96e96b437bdf19c5752525d8062a6d29b92c90d0c0c5d8120aabf58733b6243156966f563a9f9d7db15cf127cb150f7cc7e8c82f2bc3a77eebacba5efbd1f573a883adf7c8b37d05674b0539d9b1968ffd745bb865901db688c297f727b9d15be82ccfed356fd6f354739a7b8d9ab345eda760ff89e7ad043cbd866dd972ad987c1d4d73ed7ad370d5c4823f196fd7bebddd684fdf0e7d16c973f5e33bf86cc7b1db9cbe550e89f399236efe3ae250c6385f8c927ca1237f3111e5b9ba3cef6c4ff8ebb9a17b029fc3fab7d63590a2cc3b6ddab2a1f609187f3a3ee7ffb06e3038625f401b7ac6a5a4319cb25d371820a1c11bd5bd770fb7f9e7efdc8fa1b6aa33ee057904677af78ca773fe8adb0f625d8b7b906b27c87f978164d6398153250bab7e35b47e2b9bd7d703b70c7cdf13f24092cbf061fd5f604b628a132f6f31fc76a431bd52d5b256b28fc7478d0677bf37ad7120ea26e7f778e73b8cb871d258444b86b67ad591f34738f75a3ddeb09f5b735fdf9d32b9129b3c5a7bd0db90c3a51dfb970560c95b7b52e9e70bca07b37784263f4995efcf9fd734d07dd2e08d006c2db60542b0c5d680036ae768513b1ede554bcccfc1bba73ff85eeb1a675ee1ed8103b3230770e67560636e00ef3b8802f523ffd2a3ebbca1375a7d5515f1c5b8a3ae985fcee27bad3c66f637df62a777c65378db26837c6c2b2685ed22be1f1fc32d02165c49b0dd063d3b9a35650ff98917ebb1a87a31102c76bff2ad3b7b1432bcee51bc76efe13ebf87c1bfe5e5d462c2c725b8b511f39bf3d0739ad8a51cbe8ff4d75635d6ff1ddbd97c4ca8d56b5b94fcf810633fcd952682161703907d691f70c6aeb389e778efea055cb7b307475fb512cf59b43fa7e750cbbf6cacab3cecebfdaf2fa16bf39ec02f35051f632ca78def68aea4f9d9f6dbec6d4b2cc3da9f1b8a7c74ed02757e4f64f4408b8b0bf73e994ffb7af9f518533cf687eb523ac651f35a5f9908863db9b5ae67350ff11c9f173a277efbbad3f2db875e90f535416a252179e77d7ddd1479aa75f4ac69063c0ee43b6a0b4faf7335baced5f0bab616e74edfc39c24be8dae3b67897510abb54df03d7879b7b5dbb88a21c550868033b42d21a3b6bd816dfbbd5eacfda310bbf616cfd727fe3fc3a269c74bec1febbec73b07ebbc89e0f7b4fc4be9cb26cde7cfb9f5b494c989cab0951f17533f2efef8ed7e060d1c76836bfc31276805dd31f9561e9eac5f776ef8213fcdf8881a9f837c964da9ca4927aeb38d3a72e267d7592e5de7a323977e415fcef2e3491eff55af63d613e675bf63f521b7fbf81de79f73bc2d8c53eb3a5793339e2b82673c14ab3afef3c773d07d43f3ed817e881b7546a618052372cd6cc4e31db02f3fd953df75e93a1df3f4f8ddc573a62782bffd116f13bed7ab3c74632cf3348a02c00043dcf2ec3a8bc7be0bbc0f4a7a2247afb8f61e636a5144721149abaf4afddea44f00d83024c65263346566ef5a154f097947c0688e0f6dac029ebbeb4eb206eb5203debaaaff9832b9e3f574a007229ca572a6171f9e1e95f387fa5e5e9f465120885130e1782d21e7dca8c9ad7abd3ceb1bd5e8f5eed463a2fe25e43cea382ff7fe751fdb779a1fbbae25efba4ae4c73856236665e6b4e65dd8eb09ad45d0b296bff2ee411f082e86c5bdd39ac51169ae96eb5f9d7b7a5261053cd6e398fa9c6ccf93d82cc5013ff25b3cf208553c369c7c280b6e5e92741a4f1e637ac9b26b2e089e4115b85a9e71c1f31555f3cf6107b99ecf10b758f7baf11554bfbdc25034b1139d63e4720f2726b326826b0d498f0cbcc7ab9ece05ad17db56398abaaf52861e6ad42513ce4120bc8ca7a3f989e6774cbacfc7d8369a923806e9a9866a7941cf29c13e34fba0d7351ddcf555ddb1406ae18b6b237eaf6a049fc6adcffed5983a7b513f9e297ace4fe49c27efd8e7f3e3c7317b7a138bf0a4cf57474f28aaf3b867e0f335534cf9594f77820fa67d1991b5da08d187918493eda83eebfcdedb1962f95fdb7b5d31ef46deabb2c9f7d5b969e5c9f64606dca9abfbefbc7b2eb1afd1c887557c56d866faf1dcde2f5d3260f6accf56c0e907c023f238bdf2f6443727318d335fabbd8a65f688d49cce15530e62aec7785ce5e535aab326fe695b9298d50d6aa5fdb8611754bed186e28f3dd00d09d7b76e72adfbf927727094dffdc658b16eddbc69291ef393fe5fa7869dc6f0136bbe07185d0b566bdae8a5ee3955eead6ce6d5380eb0c7fe87ed7836d41885a3e4d7dff2630fb28df52baff28f2d7f91972bc44679b8f70b5b87af937ac010ae7b0f36227e0786eb83b5fc5bdff76ef9da9d33a4f282da8588ef63f6f09c663fc5a2ca29c1f3ca038fb1cf82387af753abff1803e37a84e0ef470788d5fa31a931845e6f6c8f5736e4e0dd53e4ab6764e55c657a496bd4acc1da011f8928d33541f82cecfe5f7a0f74211cbff45d1c4794f7a00b2cdf4d07e15ffbfddbd0131de17720e7a4f281bbf29c1ceea38f6d0aa5e2c62bc767ff2896b35192cdd3edb79f9aef751dae58f5fe9f2b437967416d5bb4b691bfb08477529358e433c5cc5dbdf89eb37ec9644d88dff0379bab9eff0d7c0f31c30d8df163b9833f4b723d359b7c0623f4ee42cc517e767f2aa73674ad6bdbde886b9c96675439e0ea7abc26462fbc9aeaf43b50ac325411f5ab8b3be07ef9fa921ab3e5f3381fa20758bca35debccc78b6e9023a4cf990682750d6d11fbeeb18ff516ed7509f91c3dc1720a919e3e4f7b68b7f0d4c4d7f0e342b0a501a9a53032567f9f0542d5ff2b5be3777fc56fcd7424a971841a83055f6300bcbb783ff769cc2f793360de21af025c6bb42ffb37f43a025d4870932bbda07dca9ef6cc6e727671cf0aa17f7692519b94d5ed3464ef34f6cad9a7769b53bf89c611886d4072a6cffa5d907d2a74d8b7e24478b479b95e36d0ff0e78d2992f0ee7cd33c46bd7790b8e625573bc223d74a8afa7e1339571bdbb4bcff9c89f704df271d3bfd8e71c575d9b2780f5ff190f495deee4e34aea726bdf1afc18168f4fb1dd41f241e128c9b8ba46164fa86c5438b77aedd75767fdb321a728570942d42ebaced5adefa3467d17ef2be2f52dc8fa42cfab6f3e96e192fe2d77bc1e5887377561c2e4e0bd6b5d424e0e524eb18cc62dc4998eb0df8c383f037f1641ff5de8316755fdc1b8e7129b1d6af2682c402f72a8dfaaf3a1c7b9e2cadb38cab03d19aac03d7b9ee9c9bba647c735b6f5f5e44a744cced6fdbcb619e6c6ccbd4ff16cdf3fc2b9fa5bde4df2c2d18b13c955101b08fb29336543b10aec3c6df200ea05abb192faed51c29e21f1f720fa0bdf6358fd3e8c93dc037ed7b14cf23c22c85db79e2b66ef665fa989cfe737fd7fc6ec9e57362cebddc7cdd5a0f15e54b7cf1541f6eb35ce9dbb3898a703f4a582dfd95fdb42a5cf5725f88a6cddf138f76ccd354390bf2a2e04f4feb331021fd09fbd3594bf18d7c428c9bf3ec54b35064744754c4e96f99ce20f79697d86b1d3c6ed18d447a89de87d84cc3084875a2a8e0f10ceedd53b4dbf7dd6639fc8998a57a9dbefadf3ad8fb5105c2d6b072e8eeb7fc97c1090e3f3f10ddb2cfe9774415fc639263d5ab4c71af3ff8e2d0cfc63d85e21cfcbfa7e5c3cd40772731543ecfa24cac0fd49faf26efc23706e76c4b88b3f55de60b2bdae9d8bbc1206d7b5b51cf8f6f4db1f0d32982307ebc362cac7efebbec3a1e9da01e5c0db5e7fd6dfa18993024e2fc594adb2e6d37a819f323c67c3c58c090eb31dff061e656b7b9d37fd2a5afb85e575d1c033fedbf8f90f6ae75ed5bdfd28b7e0c7c5600663065ceb7971d4b2764d5bc078731ffae6376af29a6704ea126b5d856d98202eae80811ab929c76b0fba1c62ba4ecde1c67310ad1af1e0071ff5dfd69b3df8cb01d8d49940cef032f7ec49f9d2a7ba5fbae222db0ebe2e4eb79bb90f3ec8a692d9cc0ffd2fda48957ddc15efe13163d897dbb2f8ae9147f84c04f1219be9c4bfab7b7c36fc3c81e5b93dbdc8e60a932d4826733749bcc7b8c58b7833955b3c86146af9e54a3e7e911ac73743eab7b1d58d984a33defcc13d6b52e74368ccb9cbafe2743f703f827ffda4ce84c45a5fc4779dbaa7b60fbd638a9fc79dc0eefbcfe34e5c0c51a8628852bf2b56d88c2bf558bc07b8297f9097e2f327dd6bb7e95a3ba948bad7ee3157406cf0ca67e571f9e5daee3fc3e4631b337e8dbb6fe2ed7f30ce2a6ec7e6ecc95e7a59bfc0ed3536cf67eacfe57e737d4ada3bbbee69fe2267d8b60d5ee2455af951763e9ec603472c3659d9e54f7c47e136574cb9cbbe22b1e505e95176149b7c782d2c3fe1ccff719caa5c3b1b1e67f7676d8cf3e058f0b18a77ea23bcd992e50748c801af670939f127ce786edfbe2490bd6f9af12163d94ade19c6fdb73e3614f7b4385359ccfe6effee27350f8f313ce3f7d339ebd4273f9a3b8eef81ab895af72e12931d5d7bc14717342b81a385e88a785cec8decbd9a4795c5f568af136572fc0731b1c5434c6cb2a4f9afee9818db6b3b6759d5d9ce9c62b8a171184f1f1c7dc58ab07e83f8e34f383968fe84e59c675486120e18376d72c2403c27de48932ba9cd40d79db3cd5cbbc0fedd01fb889ae295be2490da629293e372b53fad495f36fd06c56cd88aaf6afd815788f6d4a1fbf33ff191fe133fcdf09c2df1d3accbca47c23f3a5706b6f7279777ecf760198f7d19edb5ff72785253d6c035b66c7ad227d311e5b97af9e339c99b6ef75ffb6308efd1a9bcb7848cd674e486d297cdb28553b1887edf2afd6c3e16af5d7c9c849326c9cdb42f6b275a87ab6bf9c6fe97dc200cab54c786baeb44eca550e369b75140ebbbda3e4485237cf44b9ef5c64b3cdb8b42bb103636d4e9557d311f7c1fce9ffd3fe83f3de506d939cb8daf4c323fa1ebd2f1fe806b5410f2c6e4bcb3ded35dcf615cdb9483ec712e954989f7957317858ef9451d7e5ba5a3bd7422faeaf6c3873aa6aa6f54d9399764edad079fbde267051dc7f9c0e86e2a45b4b307cc06ddaf6d8d618104d7999e80fbe667f8287c6de3b9906798fc80a3e4810ba2c242403c91d53dff93fb77e117b81a8706b6a0ab97ea8cc71f91382d023bedf31fe189d247bb9ded4b79b86fef8fe7b964d64ba8e4c745ec7dc8a7d7be008949829f89d7ca733ea220b5da7802a8970b24b3d1cf99cb8fb5ea62935fcccef752b09f3b72e94cc6fdccaf7956435bd5cad7b2a9619ffb3c7680daf9ed7a4286e1598c0ab276e3fa7be076ecaa75ad7d93dbabbad71f716cc66eaa59bf1fced11c7a8b786dec5edebeceee6dc357f59dad5a259e7393f408a7bd4c4de6837373c96109b8f346fd664366353d286cea73e07d6c63d4fca3ac7bb697836ca1188fc7e715d0cbbbeb1dd7b649fae7327c16e1cf4a001fa556f6299a2b8ddce11bf4d5ef4db350a9ff7625f9eaa5e8143a53900d849ffa2f72b42431aba7d84e72e65ed5dc7098bf0debabd5784f86910c583f5301b037fbbd7a3b3fd31f758e3869fae28fd756788f46ee48bd9d590f05c076124ef687b5d1476d0c4f65a7607be89716dff89eb80fcf0ec8b3f15ec8802f0aff4d6d56ca75d795b3879c49c366a9e377a9eb5879d8d4b97b90bbfa185f4fd664822a1bd983fcea2d9a3d997f0e7f48647d83f7b4b527856938336a1e6952cf52d72407f1a120982bdebe010eb97d4b87ffd1e27e3ceb6db8787700bd531b3c994edb3eb854fd19fccf2af7f5bd7616e71d7e4f8265fd6672da3544344fc568275538207cdebea19e17cf13910951a53380ffe350ac0d41767514635b74d71333ce3ec5f3b0a979c7acb51747d9cc11ed5a569ae097d03801f0ab7add320aea47f83e1cf8b9418c7d3e4dd68c31e013f978fd5fec487c7d41ae476ddbe1919f96ab015d89f57e813e93068703a9dfa1ee47aa987910277ced4b3a455ef31e7a91310cee0397eda32df290bba8721404475d7e3997d4ab7b9d94dc99609cbc15ce23e0de9f71ba3cd8234ad2b047fe91be657a55e5e2b2bc3d52c53d2abb247bb04baa7af2e4cafdf6bdfa2d9ce72139ffa670fe82986451c56ffc1e7063c2bb319961a656ea2bb04f1fd75b7fa27beaf31b2d2a2e2db34b3703972cf37128cf487d7f7392780aa27a03d6b4e2877fd1db225aa82cd60ae37db45f093ea693b7e791ff91abf5af7877cd33b79f2b7d47f8a187958dabd93c7681dabd55bc20a9650d1fdb959e7039f48ae1c3fcd5d8568ac996af3fe07938d0582b704ad5fbc4921997cf86f0afe7c15d7c7fd4f1a09befaeeda1ad62ddddde34a3752d956ddde1ebe59e3d107ddb2a41e719e7683122b10597f81b7900318031e8b7bd51f1d9fedb3d78ff277bb0e6f5bfd1b8982790be7e2f7535c3dc76702a111dedd776e60ff6f6adc22cbfe4a7353e184f24f448da48f225502dc1b3b7bc1c7ec6cdd3514fd5bdaf83e38b7ddda8bbd01ef635d9fbff87f634e37a6be6a5985f56f52f9929f4ff86f0720d49ce89ebe9fd377fb1e66a1991786af1bd762e475f1aa43b3b142b7b19fa8976f455aadf390bc48fdcb5d195c50a9cb240fec9ba78b53d5dcc9510859f19c51613aede1df1cb6582b5e9339bb9f60b3af4e3ecd1ef15b00fc6e787f636c1c284dd67eafbe55e07fb3914485d408b07861bc7c6de263b6663aa9bbcc643ff68cf13bddc157768730d36b8456fd113bfacdec7c6eff63e6ed7e6fcab98028d49e8fea963bf121b8461e6caaa2f14b12572ffde8809442f622a79c8715c92f3374ea7e9300b0d119eb53684f3ce10ef5dfb60a627359638653c3526dcc7d369df176b8abcb4209856ba0eb52e4d3afdeeaebd55d598b6c7215e0487c8fd08f8201ffc65aef6462f224da9fbdcf9928b7d2ebcdee2da1ed772542f6e9e1e4533bdb3d6b1136b35af7b275431acb61f097db6b8de117e5cad43b6578b92f9e5d0abfd61be93dcaf30003799c578cc1fc478fe893df9b378109783d5b97aacfbefdc2f1bf9528a2744d0cfedcbb99cb1ddfc18bff9bf926f79ad5b5fc428e7aad6e4a323fb8fe7dbcad6bd0ba7873af3e14c2efc2c27fe8cabebb52e7c5abbf4c8d9579ff79a8bacea6b3dc7fbdf2951cd910a3d70fb554c83d407131ca966fcceba62de4fb01980f10ba50179c65fb98af97aa827b9a3f1a35ca1cff9f3df7b066f0fa00ef9d8cd25b67be827027b6783f7baad277c8caa8e55d39e08d80765f2c3e3621fac5ff48cf407e8cc27901e6c84fb98ece71a97cc6af16750f3d58de5e6798bd652d513193062752c688b5c49a658c2e41770e3403d73dd571af43ccf27836dd84902bdda4295e42eb669479e8ed95fe34e5e838f36af01f14538d931261c797bf576366cc23bf72585e8450ebee645024eed9731d6ce7e08adfe438c33006c9f660e12ec9c66ed30d41535faa0bcb5645aa45994ab21f16aae8606bf89d7c52b5b9df3007ac333d92ffb1b24603d54f5c10dd0e5eab4fa37f23112d613d18f0bd58f8bc23f0ab7f9247ac087ee8d8be51f4517aeab31133c677e5ee5bd208ecee5ad4c395d0bd559bb77c4bc2c526b5adf6b2bf5b3cade1f8de5b5655d1bb9307db0777ae46f471cfeb2ec7e03e73847f29efebd77eea2ea1fb3f633e4add4a798daf0fa188be6b9734cdaaf5dcb7755bc67f8de1967fb0987a08dedcb28a31c82dfa4b70ba9cf217800aa0fee55dc91f4f756fae7202eae7385f01e111f605c73039ae3b35f26f9568f3e66ca30c367d2853ee36eeae90f7c81778e2fb09bd74d271c5a9e9ee49bd3e61c949c5daec8b21947a4af3d57d7f6046b7aadfa137db6e5767da6fec2c5d3e0176bf499ac7901519b1b1efaf219bfdffd6321aca4fe9f5989902d0dc206279978b9f27c840ca3d1d84f557fa58a6f89e56eaabe001eed373a7b90bfd53c4c7c526b2670bf23583dc0f60cfc8a5f2545d8268ab0dfd8e40a3ad47da029a711f433fda7d824aea71d8f4db225f3cf4c7c86dffa9db37821dbfbac76d2184588c39054fd6da80ffb43f9fcd8ffa6bb470de550057eb9cede05671a3327e341154ebec6d888dbc82b5f63f4599f97bd238633bd407b3d72db3a4aa7fdf1423d72da324c8bb53fe1a87862cf0ede1fe2627af1184b307effa066819c1f62b3100e94a0fd1bb07d9bfaabe677847ec7ed5e89733a5e6cdb08ebd3e4dac25ecb81dd7ff78c4298ddc7b7c5e705cdca3cc3f3e1e9c97b60f7e550155b7d203bf3a9246fc6c5aa9afa2fab7c08f0456b9f48e6fb838723376536d6da61356756bbd6acd16f92d6f201df1dd983c4c625f568c5439d1ae10c43e9acaa6183b969f460e4af6f7203f1fdc81a1c1408e4fde881430635b8de4ec0dd532eb1af35cec8f3f5e2ba871e1919379e43e4717d58e13771cd510bfd32f507ec47e3593b873eab6c3c2b83678d83467fcdbd5aec895f8ef8fed224e6aae0b125c4be413262f6cdc39cf6b4f3e2d8ea3f3a9974f57fa475155ccf8611e4297f9976ff6c33bb5c4fde583fd0007c7334dc4f6444c74bea839d6268907e86bfb03f0675283d181f956d500728401d52a32f6af6d0eff1b1f73dbaae2d765df20e3cc764af980f73352276ff4aeacb555f53babff66ab1a0fa624bfecd7664ec22d7b797e2c37a5cdd7155d31d9dfcf875bfb42adf4d6a71afac1657abf49dc6ce4a6f36095b3618e3644db2f9f8729d7d4ed082c5d3d56db9b6f9faa3a021370947c18fb01597859ee4fe49eb960fcaa0e4f237609f11ce6d8803d6be18addfddabb762dedbc86b4328e692d9c851876a1ddbf1f81c02890d080497cad57c931c39b307b97e389bba5f32c412eb3801e49a4b37e5e458c4f7456b60f619afb3b32d598d4855fb0afc2bf5e71eef771a638e4b78cc7883639bc5e2471fba6787932ff523d48e19e10346558cf3c07c4947e73882b12ec373aa6bf14c32df5d6972f7741e8f8a75d9140548885727f60e1798b3596ff36b2699d1da10fe78c699f411ee6d7e2df421b9a731fef68c33bdff05ad1ec73b769d2dc2e3797ceef4db970ae4da03fc2e6c6d5edd8bd5e0f3d7c7a15de597122d1ef3bdea582d5d3aaded08223f4d39e5d605efd9baee8ef8956b2faeb80db28eb190facaae35c0fa59d7defc635f5e60dd16e77ff6ce460ee01c24b967886500bdf32eac87067f5fca432c00e7a9cbf2d8e5830ee5f71e3e1b7135aff198eb356836f61639dfd033ad558b5fe4d807805e01bd6d19da4bc1ef911c510867e5964ee3f1f90b6a9bdd34d45b3840d54ca7a7e4ec637d91de0e3b7b700f094e1e8f2f875a18c8d72c85e0641db16daca5e8aaa91b7cc65a6399667eeb3c81fea2b2a5591bd31fe2399e297d796e8ca19608eb405b14f8faae23e9a739a5bd54eb5e256e295c5625d42497b6b40cd72d39b1b32e4707fa18117913c403e0b006de18e076b7ee3bc03b1677aac3cfee1ddb09ccaf494006731cf7bc6c029b6c252d2e7323a7f9372c13b7be2b021efc88e5fadc18e7410cbcfb0fb951ea4fa473e520b7b0abb5bcb98b67cecf6a7362206e3ef0588fcdf9f5be83989fa74364627f4171e5dd048f0f0df7a3c9358823c196bc70ae58be8784dc8f8582c8745eb64d64bec767a0c837ca397bf37bbfcfb4b687b763cba01547267c99c92fe041a69cccab64d8d6bd9f2d1ddcaa13d934b853a0d6b1a19750d9e62bb4c58e7a5d24c87e4fcbc3e698f17c3df8497b2b8f997fa8c53752431cdf622c2b3424bcd4f3dac9aaf2c65ecb76f6cb03f0f1823d3c9a421f774d9da2c0b1f0bcdf3525cc7d691af9a3df27a8b528b593a66ebfa15f8632915c1be5e0c3e878dc1f375f2a065e8a725fc1b294d4603db3db1d515e1ac2d47584edc4425bac960d4708178630fd302632561f73471c62fb716f98f2c89ec8e3ade59986202f4c51568db13cda98c51e8b175d94f7f3145d498c51fc764f87f3576f796bf7cee6f7c28bbe26f74045a13646774d191ffc7478f17bbf01f316a8d36f4fb5d85ac5a18d724f059c77cbcf15e5b962f543751a05f7ec1dfb675b929b21399924bbeef55b02cffbccbcbd8ee78aea8b0afb741097a4576b27c6493b59774fff801eb1d8be5849fdab87cfd6681a69f1ad5d3b5bdb8dbdba9e32388a57f0839a7db9b336a7d933d9507f0e31d69e8fea9c2fdbaf4159e3b67f763de0afa0a77d7014cbff8fba7f6b4fd5d7dec7e117b40e0a5a3be5b04565ab55d97326500501651537e0ab7fae8c0448503bfb59ebbb9edff53f9857a76c4208c9c8d8dce31ebfe2c09932b8ba6534185171a175160e16f506f2171462278c98983be4242159896b3db75ccb4152d58cce7d60d72af117767c2d26577d0eacf1431f15b1933b2e28e28767fd51996b0a0c97b46f736f5f43ee8f6f58f57290b663ae91bab83ff0f8649a7b6ae435da7b62cd20f3273b65ae41f8757ef8262cd667fed25d7b8735006e9188da1f1e7020b19808a8139cbe6d8cb8ed6390a4c553fe1ec92abe3a5ff2434c904efba2fff63e497cd6258be47bf3b40d2bf4e228c4075f2611d2d564f0232179c6d69969d7269a33a7b39af8dd5810f9cbc4ce01337962b11ff9eb99f10d3df00b05c9a87f8cc16807c96818e61947ee6ffc7b509fbccba3b3ebe5e0f5bc71d07e94c58194bdf9aed2f8a26b26e6e3f2673d5f1d7de39a788652f6f305291e0e01fb32ffbbb1c35cf00d1ef72450fecdbeee51ff30f791acbf00f6dd558368c6e37ce09a5df74b631af78fe9d2f8dcc7bf91ebeec65d135582b1049df3b295ab4b7f9c21f7521a9fa96f049c36ba341682e4596d8851ed3b6b1eea37306ba0c7152f53b6b15c9db7f08ea4a61be59708ea5111e419b77166e5c62d328859484d8eab757f7e2fdcbd4763ef6c8cb4f501a3b1eacd2181e250a56dfabbf6907cff419e8cc8dcb9101e26242b0b5d1280334f93ac52c9a7c90f9cc7f5f61fed9d3447b942e1e763126fe3bb3ca5039a930c96e0312ea989b5bb5ddd4724c75b0ebda42ad0fc46f3e0d1fe8aed8fa62e0d555f75a87c6b757686fa8719a9df4cb8f8d19eb0dc73d7ad7c3d6eecd3d93579ccd9c6f8f838fc7ed8b7f13bceba0e1bf17b8e3bbc2fd64bf3fd4fb847eba2dd07717d973d7f71866a4470204d0d90b366be0a73b91a77314526f677edf6f5ecb6666465a33fadca20c1713688f7b898f38be2f92ab6ceef74a5f040b8407ea879f859cfd83958ab7c38b07621f852169cb26ffdbf7fb638ff85d54ffaba57bfa6917d8aa01eeee4942d1fd787fae31be537c56fd2d71f88ed993df057611b5d3990d8480d3afa05fc0107fbe4e5760df5fb9d7111898dedaab4fc59e8de07f9e2b5467c7161f2a056999376fa15f8edab5a334fb19af81cd1bf8e1ed4fae89ed1b3212eb83eb442fb18d1f1766e32f13baa5e81e650b5476bc8d5a935e7b5ddf774795e205bc8192e22ba3f614d7cb9c647772ca1624ac80e747981ae4db4c98522487689222ac5d65d9d7d3786d866781b1f719d149c7bb174a04e51f625034ee5b674d282a96d0c589d277bae94096d2d1fc92a1d9e032c0fd8a8edf3f85a73b9e3d3797c3f5f191b9a89c11818df4663f07c232d2229ae8361b8c3386af02bcdc2837a61f3f861ffd879c6c73e9066b7b0fe88d13f85dadf90cdf83f91ef2d5ff1eb718e79a9cfdac4237bf06e08384be7f51c2431da6f6e709d919691c91dd179744f90ec060ba49f4a5761dd8d632f568ce6621bd397babe31f14172be0a5ca3d9ff9b38cd1cf5a79a4f9442973c21ac9b3c767b120c461c70c0e17da5f81c78675fca6ea154c55f1660c604251dc551dae29a9bf73e2e1daff427e89de79c6654d7a53b3f7b433583dae503e11c215b55c47b5dcf163cb0be0c25e9e2e1bb04f2fb0dbe0e139edf185ca251fca59198e1dc02d9c3ef54a7e5178c7bc86b4675823136df6f9a516de1ff625a7a7b3e50f2d94d49ae89e72cb88deb67e8ffbeeb235b4af7dd3471d9febdb29c955837d4a55721124797208558fbb72e2be8778cbe59945b50df48cfb3147dff481cd5c100ad8529fa7fba7117a0f3f962c577f95af14d4773ca6ac7b6d0a4d5d943fad684ef6cac7ac48703ea5b19f15133aafdd2554a7fcfff0973a1f4cde242721d4aa4a322598bf5c2ec46622ea57e502f81648fb7629ce3ff5b827258c75ed2d6f9ba2e9d2becc1f0fd64744d9585699692f9112f1debc5279841a48b3dbade9f3eb9de3ce5ce20c435789c11a73ba7eccb500ad7e4335df2ce1b6725847235de1855eed46a1ce659ac3b3036682c6f4ac6095152ed89de86f369f2ee3941fb2d6cf44d217efa79503bf989df151d6fde1fede78011f69311b26d706d9f09779a337d5817e100f03729ea03d6b3e72f7e56269eab169ec1df7ca7cabce13af345355a3af3b7fbf6d2d24fbab943cd81919e4f8b0776468cf4ad267e141caa31c911201c271043e3d5c48b2311f0ff48c78dfd01c6bf59c3f525943f009788aed320ef2fc5b1b5d929d7e553117233f4bc816f16fbadcd93751522f980ec9fa1e7aaa995dbf97d5d2d3a377f75f6dc794971dc813f7c39e0ce1eb20fa594592301f8a1f1f737604d4d9fe498fe4a47feb3457abcd5c75dfef77aa2266548bf13a2d9e9ec1a29b337427dbb04729a5eb5ce471487c345e10f5e8f84b3b15dbfbe384a3423bee8d2f4bc91d5cc4fd2b291439f39b26da785663072610073429e97f30464010f7ca9d25c88ecb2a2b145c1ec74d044b519df44b339c1ab47ddb7355adfc9d1ad47ff0e87bb429315ca9f31bb8583ec1024311acb5897ae2592cbfebec8f05e98169fc3f0c99e9071bec335fbc16ce986a575eb646d301899785dac12bded23ac4df41be423b94ef7dd6c1a0ca3b392115b663aeef3a808fa742ef8f58ec8edd509c96425494b73cfdfc0bf7388e2305f1b3ed49b785a4b81d84878de063766de16cb5a4d37ae977ce669e9813c17ced6c0c6b930384645bf0792bf1c9125a57fc3d7a379bd9684619020f978df0f2646dcc65e467fb66697bf81d6cdd7902b69db88e20b87184d53db92a9730f75465f85803fd52ee13bf525fbd51c78c72049ffb5343f90fc676c181aebb535624e9fcd0b5d4e5bfb5193e7e7c85d6416a9491626e90f98b419b7853a8ad3c2b9cd225de21eb5936bc60e72d3bdfd8ffb5c8ad6812eefeedae8f48bf4188ae99f2f88b779827fa8c620e7f3aa08d1bc932de1abf7cd823dff8afd78edde52face5af5c5aa5ebabbc7fb1ff936d1edaebf68be158dfea44f7fe0e3ab47fbc8556b24fb48de6df624ef96c837c0dd6748cf50b292d291e2892eaad1673eba44621c903da8d331263c171eeccc352027add4a4d773e8da5978c8c87a5c5fc294f8e420f77f2cf8c6a88a1cbbfeb21719e4474a42ad896a70b7bfb56d2b4deef0e5c93b804d46c9d60bc91f3dcd217639a5b9b881ef03ef3f73c1334e1c35276fcb3d5f74b1422fd7e4b930879cd2eb15fcf937fa3c57694655205b6b6b549f8fd65f83eb8a60ce105dc2998db7d2b4a9d1d4ec3dc956ae928623616b9efadf7ee6e73efa5ddc7398235b323c7b43bb0e73fb0c7832a3fbfe148ffb50cf177c7850914cbbff4ec92e716ae5dcd461d4a6f352c9f81fbf8b669edabd732b63ee7a6f68436d0dba0f4b635a517557546affd9c3fe8374863a7d100f89b77a5edcbec414ed6db10ebe70bff025bba6783f3e756971dc38558adeff33bdbf772382bf62b071d6599874b9e35f4390a76f7e52d1ebf6ad8b51acce5e921e23a4533dd03d3ff3d1783b1ddf9d43ebf8f3a08eb75341f85bdf82ba8b3978eee2b671a2b3269f045df6caaf0125e3f777b1405a77396ce50a6c1d5dee6a87ead26b87a791b15cd75c52473b9dd5612e0c4dc9ce23b1c5a77c20bb37e2edabb22fb2a5651d7573da727937389095abd6c13032364e74bcbb975b5fa2c16bf2995bc2dad8559a79c2fc11b753eb3368713607c8dbcf34ccf59b4568fe4e1b0e16e0a5fcd424c26bee2eb268561e833d97ac297b4a17599b2e3ca8f6c6500a4a869d35238bb6325e6b50435ee2baf532e1e2b9588d348cbbad7dc77b338c0a7486cfdc87988006dc8f69f1c9bd3ed64f1285e812a9f040dff9d4e5931a49f6e933b505cda8be89ed58e8b377622fef0a7db6129c5a4d907eed3b7ef1252aa59237ba15fa3f651bf46c4a5d54b14f82833ea1df0358b7ce886b6d51f04f5c13cf9d27ae514d910dede7421d0d66b53f43ba623ff64ee709217d43bd5948a7ccb3576277b6ba7608fa48d73fa2bf90ef896cafaac4b90215d25d21860c3aa6386afba94b5edb6630782d37131ec65097dfbb3d594a91cd8afa6621d943c9916f2c475e4b05efc7277fa85e22f7fdb471d75960b476e761e9eeba18a4ac407b4ff4685e97df1fe8d182a0cbc0fb3bbad3a3a510ebd1263fc27ab4227cd9507760485dbb7a6287a1b5706370b8c0cb05df79daac1de070c7384f4e3f2cb860f801be58cf89e2664ff81c70e760309a0452b6dfd4a4ee9b79ba513541900e7ad591fe9262bd0df637f1ce36bdfe649bb6fab81383adbf1c92f1da8f13cf50de945ce523797d0912f4ff751181fd7f170febec856917ff6cbecddf7e77364475d58ceaa41915b22ffeb4ef7f2b86bab428916c25b98db186e4ae589d754901bf2f99c7b99a74f68d2ecfd16fca9fa2945eede54a42ed9168be25acdfc8ab91fdfde83abe99db09c8141cbffeb3c63e9b6b20cd466693fb2f65b7681ad5c1d0be1a78fe12f97215d662b558da6542af2558d787c52acced7ce3eeeed6ff4612ea8d5b201d340eb05cb92919575affd09ea16c8463649078bc7c62f64e85b263940357e8f25c80d863279f909d7961e5095cc3c882a01e1d83a15a7ce548ff9e95bab443c7e2b0aed2960b12b0b2bb1732b7de366275a5d65981d7e4b834d1fe4df57d5343df4b5d54cb8dbbe074078fb5c270f9780dd704ae21b01ff7c7f14dc9e34b98676fc88ef09ceb4949a8fa47494ae56976fbbd41d9c904d3d0ff8dfa907fe636c8191d7481531cde8af4d13c0eebeaa04b68aed2fb607cd045e5a424293507e7852ebdfee2bad786431ec90c03e4faf0a3f4dc0ce6dad250e768ccd658be269f03ebec51b18b56879929e5170776fb9b2973ff1b1c10d49822b1fde487d8be3483b51624bb1b8b1dc298494dc2fedb3079e0af964f57bcaee22cbc157fb6785c0a1dfcd40b88dfe9520a71c428cf52df65b10141ddf36375f3b3bef7c9a605c87cb4ff4b36cd838cf4ebb333b0911e93b178bd2993fb131ed625c4bcfef61cf45d0fff155684ad9fb4e7ae9f83d73195aff7274898b81ee4af7d0e15162302b56f69de3e7bbc15a7952e2b8f700c579dc52c401c3ea431232607b520ff169b0fa15624aecdcf8e67fa08df8f736ee45e6c4eb2f09ac218ffb36654dc6f63b31bf787d8ec7d4cebb718160efcae52db87e4a73e78ee9af0cc3731abf94f312b0ef2fd58ec5d816bffed703e288e41150d7fd3c600dbd58ca419e71b19b7416357e3bca935d810ca51c901ef7842ebce1bae4e819471be81f49e19bf71d52cac3f0cdf99ed23f163b871d747651a5f82c1e9a6c80b3e8498e32ae9f8ce4667cd5d1f915d43ea6eb5713c8c8de46bdc165f22bd703599efc2dcae2227ab7d77bec3d77cc491f851faceec16891f03df556f302f26de2e92c63b2fb7769eebc71ba78239a9b4394a53340ef5a266f3ec706def13f01d32b56a0c16cf49eb351b647336f127e92afc84815d637e8be28be4a35bb97d80fcf403c58f9262deb18d5b108e3c35f3071992b923063b22cd99bc75f4ed1bdb01b8661d814732c49fe09cbfa68ec12ab7f360a866269c5fbd29e6b4f4706ec34734292007027875ea5da10d7c81e46ee74b73962d26849be869ad102ea1c60df202daf8ffacc1257bf9a3fc535d7a85da3fd1ec9441bdbe862f87e2c50b92167781fd4c18938fe451e2bb0afb3c2af7948a15001fe9f33cc715920fff42f64f732f70c54c5a7f7041f9323835f13967a830b9ac91cc0b5bf3c4ac1f1bf2d3910d2bd49a64bd28ad6fe1a308eb8f73305cedd01c6fea282afb63f2688c1429bb29d2e812891f6d1e899e2845e323f6277cb91c3ca9b147d5970bf68079c75c64c8767fcce500b9d62d17e900f379e9876e9e117de382716455c672e8609db99d9f83598a6cd7e65e5b122ce05fbd153d5d83e6af41ebb4fca6f6d61a3d1fd68364d7485ff4da5a8cadbf4cf0eab8e81d3bfb4fd75e3609243b0e0ef6d596846fdf7915bc86a7578c635d5e51fe3ac04fb4be32ec83585cb03e3ec3ef90ce6eab81700a9c8c8b243b65e61a8cad728e9c51ed3b1170a187387e47f735570ff4334784b72a7b23dca906b9b7feb2a0e6d139723fac6070ca820472f0a9da245d5f01dbfc44aeacf0fae7c3d9fab219d8983f37176a6f605363939d7c57b5025ee58374748938ff1266eb2c1cae6ffdf504e3e22eb268daf6cff40671e6cb76e95b3fdce7f282265d8bfe71928f5f36fcb7d6c0e6585988eb9850f63247d6edcd77d7d6c6e1b36088e6b152ce1d0be626ab23a1bd73d5e2095b0c87b58e23e0791386c0cff2330694f2bfb4df126aa987fb5701b0b4682cd319f42d4846753b671262570e718e3ffddd485cbb64bf2b89d9421dc4eccd375faf6ae29f694eb35fafb71edf048d2beafc6efc1e73be8c05d07bf259ea8b805f39f7fbfb1fad898145d5c6028e1434ce7b9f9adfe81b86d9fa621decb3990bc3752ed4b664df2279decfad87f1c5755255eadbaf0a5d5680af5797d52c043f7033ef17fb8d64a79153653fb44bf1a8353528f1d8a367627e438a07d8d9418df700e210a486a259c6414dea740dc6c2a6abb54861d65aac6c19def8989e4b610d718e33d6bf302608fb38851be07aa529fdcd30bec2e505642b7a83dd3132b23fc19effe3637dee2d6239b7e01d206fd419e35a9d06e61bd9400d57d88301b3d6e17333fa7ec2ebdae874af67fc1c55d83a6ddddaa3e6f23f7c9f6e0d6a50637a57e8f2bbe08ba3d897a8f994ad2fb6acc6dea02cfd1b9fc29e34106a7abeafdcc52418f0a78dbbe67c6755467beee88ba35fc9255dc2b5667e2bff084f278d151ab17a854ff443ee11aea1b1c97ea53b45b3539bff4974062e18aa1189bb9d999ab7448ee998ebef4ce591969ec907ae49cddb49c9703afb6e35f60deea44c5eaf901309d8c0715b8394aa37175338c5a6ee683be7201fd4ece65c38bc9f7361e2e58aab74734e7a15829a99736ddf83fa6ece15dd9c4bbb39d78d43bc65bfcd968d4dab6dddd03051be1b6e296fdfe743e1185be14bdcddf14b786ccece908eed3faa71a9747c76a992a4e597b163780b3aaec6572130e28b9e4f71ac1cf8b3ade397989673230be633aedc98fc4993c6678fb1e376853e5148cc7dfab45ecfc6880317e422f8f662f041d86ad6c4ac5a9bada6639530b74aa257d67a3e3fe23a0c7736ec5ecff94be48cd03a7cf18c5df199cfcf5ec38938553334ff7c0b5fb334a657bcb7cd85508c6fba742ddbbaa492576ec42ac598c2563feaf651cc91d68e13c983c37c59469ceab255e8dd183571dabbba549d2f2a3c86755ad2efbdace31bad57767616c4a69873cfde11fc2035ad9b353c776bd177fc4b98db8b6048e25d4615a3fd41338fcc3d4bf4fddaf72e60fe85c968afcda016c89ddf018d3b1ed7f65b901a0b8ffb88b961b19c5cb9abb7b931be6e495ff4fe78d1eff2dc3ea0c706f3d3c9bca01955e01a69e98ba41e437d578b13cba83d0f76792357605d4df86c8b6b721d3b19b0a3be1f91bb3dfc0535f78feb07fed0ad7cc7a7d3ab078aeda727b977e7a5ac607f1a8501df188001cfee38a18cec31963c8fe3906373cae81a9eb8ceda3ad8d89ce0dba782c1a3c96b41337a1c520c9e3f1318fd7936a73176234d7cc02f883152172447d646fc878947ee8fa4be61dac517293f34c61be07842c4e6b0f47d77c33bcc04e5d3c29cd9c8aeac6e9a4bd5f297adbb586f5857e7a53365e3a67ba18b2b18a393eff017daa7bf317a1847e010a03106e93970ec5350639c01f0e201aefb2e57fd6ff9624bcc3158fd98b717d415a7ff837cd3106a1864ad9f908d55f1375d1a090d8eeeab5ea58d7ef1994caf48270ef27516ee813b7d1f0cf8abe7aa193e87396415f3839d37d3398b651247fb8d94953e6a2ba900078a6434c68028a05304fbceff4deb3b0ae3bb515e3016ae1842ad5c6bfe2096dfee9d7593f762eecba3b9e7d1fe0579035e5e65ee408d236971f49db51d4a68dfb481fb4e9bbe0a48b633be3c11c7281bf9650de03e3e90ecfa331d098d3fd5002e34d8ffbe216f90594befbd7a84a7209af1e3ad187fe3fa388fead1a8d4fc607d868d1f88d20b1afd0f72b79ab1573261ab4a8c7f7647f2e8779aa87c1b4699688642e176d26fad06be31a8cfb8e14f5c8fc3d1a2f59735aed74d732e5fb1cec9f2ce74df70dd71c0624e1c86f783e6a369f01e58376278271a9bfa1eef6854f51dc617f84f80b3bcf5df414d2c2a3788e61861ec35f3fdcfc6a4eb8e9e0aad265c17dd73ee73aa8c967ba50c3224878167628a6433fcb6811fe3ec0cb2c8edf3e750fce3b46ed98c352dfb606ccc31ae5b2957e3b921c0b1b921649f87558c7d1e3ed4fff7496d3773c2ff51c5753397dee6609b8f52df55de300f1c59e3fb29e1113f560d06aac552e21c9b1bbac6638e59a40d1c7b031fa73b47c75aec10c832198e21d9357d7adc550ba40363bdd696c25c389198c38fd750ed9c366e5c0407fc7c56ee1d2b5d863dd442e310de8e55cf1e5850dca7dd3c93663736e7306df933d1b7590ed7816f7342b02ffe79ee35d6ad2e41ee17fe90a95941c5c6e0779b53bd35488c61a60896b84b4209e941f182bc77a219d5c7d27e3f2a878f46de4db18f382378a21ebff0c3b820e1737ea6db881d3770937fb7dc2b2f61c2d59f7b9c673cdf9f2ea0ffd448ffc982a0e66ad764f304039efbe31ba332182cbec3bafca679ea3d9af3b757ab95e2de831c0d8cd7c6f97d6d5d6c232d3d86ebdf3a0792b0df0ce727ddb812fbab7936f84b4fbebb3e0683f5ed291f00d88b2b9aaba1c9e567d76d72b76e7bf84f66aca93199b7f2aaf5cb139e4ae05e9052613e39154be9f5cf06f22f55d0fbe86f84e4cbe7e048e668abfbfd5b9f919a0a688edb5c871d9095bbfeaf98ba469847e3279c99c3ab8017b7327ebc05ec832200df83c937f1ef3f5bea7b22390ce37ee36b3daf2edee074dbcad7ab2e2b48afe2369290e2737c1649f1c59717c083a4cbaad0f0dc8509fdbd181c3bf02b31e7895f22a0b809ff0167037ccba616d256bec61bfbf4e11a546e2b8e55c54bf748e2c1e9cba6c7f7d1f10b57b52e8d8bcf5ff04ae09c543a4ffc48d5dfaa3afef8ba8a979677dc1890d7dada34c18dffb335b2606503f6ab0c701d87a7f6bfe772e89a5bff9a96e70e788239c82ff74c5ed2a4146a6911cec1265ffb8daadf4678f2d23f3fc7f6dbeb2f682e3ee14380dcff1e0ee1ac4b0291871edadf63a45f10fd27d16729c8c88dbb009e210bfb4b97949fa7d06756738d1d74fe092447652c4717df1bf7c320fb253a5ec1f13cbbadc137989d7ddebefae067510a5607dcf5f5623a27138f29706476bc37760d3c6bc02f06398280f37a3d2ad9fae81b1fd70613ed8b1fb06f070334cf563b8c2d9b838e172448c7fb0883e47da788fd7f1f47cf9def3c07e900b3f4cbf8487cc73e2bd23a8336723b55a4d94d91666745a2746bb44fb91f97007c2daf89d6d63a021e4ba1a96b02b5badb7eaddd8d539578dc576cceee94c44145d5da48d6ce1b08a7501280e7ca1e6465407cb88a54157e6e9dbc61b60f246b47f27b761b77be0bf2f12e40f70cecbac316a0b1519ab8f0d9e5053ce6bcb045fbc7c618ad2257c5f58cc8f320b71bfcf8f125c23a4fd717f723f5dc75631367fa61710c8676e94fa9f19835df7f2a2cadf2d97baa749c17e98ac13042df910bea0f8c1df9e1f950e383f91e6a1c0ed0b7a2fa21cf219f99e48dffdc5793d73f6b8c4f09b1fe9468c615634a0e0b0e9ed9c84b24ff811f04d6005363bdb1eb9ee68b4f770cdfb88eec38a312317685ee57540452d5aec10718189213416a4cc2fe9f1e31d7495b63826b6ba9907e39bc1f11ce5b36b686399d6d17b047d798d47f20efa80676c615548d7b97c8a8e2730018b24b2059e76830ab836497d8529c2932b1175d1ffe0f3674f281ec9a38483e28df729b8bceac5fb46e7de3c7753b44eb3618fa5978500b5f426b769647925d2b53fee265bb9de7ae39cf413adfeaaccca0bfbbc0998d805f6d6897a45668ac487c163842fd650066e65b913264a721f9f2ecd917e089c9b3d4775e774ddc29caad5d33ce8a1cc5cddc0e89de1bc8e9ae8d4ba13e259900be4779cde81b76ddab19ddc7d7e2ef77ee7c482c2f23c478eff8211fb6d1bf06d7c170abb1b2afe8eff12f85f5e12b6cce378c2de6273021cedcf795b11cfbe669d1ec71eb1ad75d351b7f9c3c2d719d4882b5b0c3a62e14c98785fcfef69867822ff846fbdb91bcd70fcd9cdb150fd60eac190fd6ca147401c5c4bcd40e6f475d9deb15c8f14856475f1c77f48daac27c5f55e67011d2e33086b2dd07588e01122b23fe95867300b826713e11554bd134e2ac79771df03673268609180083b5552203e9cea8ffd3b6bf1d2f90d5c5ed41f6cfcf118e0ddef9f5e1fd069640fb7c7c313d2ae6b40ceaceb70cfaef843f13df32d7fa96e51525036d8a83a38dc94ea8b9446abd553c92454b775eb2b2461122a3e2db981c9c637109467d674fa0f996abf9bd2c7206b4ef671d29d38c53e445e63bfc0dad71cf5ded3ce3a3f60dbe9175459087bb60e0a1e30d6e8f914d488e44b25af8832803fd408e8e1ba7c27b920c7b45e1d5efc7666fd2dd45e14b56a148fcc597acb332c3d83cdff83879ce2983bd3a67f77ce0e6a0e489efac76c160547e1968ae01ae95c84ffe86f41f1de96ea4864e88e360309f917e6eb735d840c7bcddf16a8babbe0db3d24415c751a096c8c756494e9956ab5bc2adab0483aad1ff0aac1762798febd48f136d607d2b99104792703224a10499d8b3b583fa413d8201e439b5f261c362cd0bcdd825b4bc857e19edfe55b82eff1bbfc363aeff27b5321fefbb5c3c676db81c630080278163b0cbb95740ad0fcc7f46734c165d4da72ee6a9611c77d75e4ab76515181380eb0904192fe8f2a257e701e335613c8733349e96d65ecf415df456de4aafe8f79b36e51a5fc119f2cbbadf32917917764da68febb8b1f7551ab2d95a1fcd5150288c0b60bc7fe67ace83a1525a26bf59f2ccb176be51b91fdb30b7732549df7e7846d1cb15a1c7b67fee517e135bcb156a87bca6aadcb45f694bfbf8d26114817b97ccd715899128c567f2dcafddc45f28ee422a2673cf2dcbe60557688f3853be4d76bf90811386dea7393dcf6ea623245f53c2dd0afa837f6f6fa52047774dad3cdf55de945976890c2ca7d01eb27146989b56b66fbef17ea0ae3d2812e0fc1919d7cadfcef6025b4c1d90be88212d2b89efa6df2e89cf36e79dececd7ef878d3382bd4cad95429f1e013b488d0b7a77ed19cedac418ea4e47dd1f778e23f08a3443cfe1c243067b44248d7790632046943e8bf68e57b477d0fa12b37f444335c67c2338f6b971d747df55769e33ba44520c7a32a51f5fc2e4fd60317328047dd63798ebe20074eef54891808faaf0d158f2cd3a413aeef8a048684e7e8c82a105be4f34172cc3cb23919ac768cdd85386d3a7d9873eefe332313d7f9f62e45b7deca3e38f33c01e90e8d822ad37b363f838efee3e367917276f72c769bfe2a33ced42cf17681e72be65973ef80f5785369d97d8bffa3c07c1ef62ca0dd612ea2b363972edb368b9c4c67a70ee39c3b387be09ab4f36df00ebfcd9cd6a742b643f0d9ff2f511be9bae1e5887531bd17a19ec0b0eae37676a7d1d41b239da8ed5249bdae31a3e97d178dbf70fffc7dcbc7d4e5eba0695025cd041f2cf3102c00d4b3002c0ff9d9d6a97fe46bfc00860dfd4885b3a809979946f25f4706f35d4f1ebec67c0b63439f580f1ffff20af8f53ab545c5b8d20f6e8b438229a2f8d033db13b07799abebb825af861529dd1bed56134a97db61ec50fd6e53138ace87cb512cd1b5c7b1dea9af6e66ec6f5eacc132c2af4e727fea6def5367c5b1d620fd30e13d6e5a5a17e3d92535d4ea194969118c71003302ae00afc1a72852e43bd7bd007fd3d5f637d6bda72c4ad9d2a03d905dcfd0dd75087ff4736ffc6e43924c7206e8dd63d87f6ec580d702dda4bb8072cd6737e2aeb274c05d451bd692ceea25f4b90d318dff67d2c01fb1e805ff529677e98647fccd9a976dd6aac9b53b4bf9ce998469864e3edf4c77841a633bc4dbf886940dc07f2d9088ea82af443547beec7d57758fb159dbfcb297dc09dd2e283f63f617fecf116fc234cdd0e9cebc01e6b6bac2b8ccf41f913ecf96c5923bb15e6da291a64dc46e4b00d96ec126da87c2b499a7c26ed35472541324029943dadd3c2bb9f71bd297afd085caf9ec24f5825eec77821e80fd323f1bd9db51eafa502588ae77a9983ee6be7f37107dc6db9b5536be53b12cb44ad299f329de3667c2c685b7be3623b3e6c6488b3da798774170e84936f7c505c2b4af139c0f54e7d1bb0201847746063849ebb3a3278b8ff4d9dc4c24f76cff1d0f43ec597d7368ed28b5b3bb78fe8f3f1b7e4d8fcce1560a7200e89e69e718de7624663887fbc3718ae00738973238acbc6793d62ae816b3c37a09dbb75b134700d0c4ab6274dac91f5b5fd2a1793c98d243af4d31c485c374a3907f53f6f9be45d7241fd91205b24ca674580b9c693fff31c5909e790b5f58d93dd60def30d6e8c9f62ee2d57475357a508391257efd5dd031c945b8d1feb27bb7f5abba9abbd92c0faefb818ba5c8f33f02dcb0af86537d8bf7be9f812ee724a625d9e0bcff0ff9a98fe018cbe11c74ba8c1cee2f471bce4b5a90314eb07ac47a0390ab8bc84a9ad03b5fa9606d46d65f247a09f22eaa77d8fe33f74b5cdc216bf3f1a6fb17f14ebd3e24ff87d815e73e76dc31fee763a7fc325d21cef63859fe65d8aaa1aa07796b25491665c24d9a750c66bc4877c1f880d80cc0c72e1ac3b38ef12d60cc543ac67d5d9403af950456bb65d6354fe66a948a34b90f0319e731f041fb7be2912cf87c3d56e23cd0668ed28cfbfe5aec143407e27f8c5ffafd7d6acbfb6aaf92d64e3d8905f4fdb42e9effc5a897a23ff7f92c742ad8fbdf054b6525842e13e8fb25bbb6ae2fd2e77a61f0702fb9f3e3fa57e3336e98b72688e2b6f74bf34901b77b55ad89a9248f7e9e12437469ce15a634f6de5ec2e9717e21b149f8adb8badcfd4cccfedda77467b6ade836da748711c0e5e0f91d8c4fdbb1a09104f16b95d38b4afbeab1c35f04f2dce2ad22d723b0b920ff0e5023e82c667c9687da66f3efbfe319b77ccce3fcc01ff3c471ed926c035285763c546ef5361bb82d211d9ba5f59aecd1e5fa71f1647cfe118cc25e6787f3a87913ef4fa456350891ceefc2838c6f58cf7bdb1bfdbf760e6dceab806bc4015b8f7793202f02e8ad3ebd659c484078e9ae7d30ac9437afc9fe42716ac4f7e5ab4f9f29d0d14df5f43fcf4bd18ebe7e05578f62e1ba3a27d4d805b22188433cdbd4ffce4f4b5b44d77e9ea50215de9bfe38e6f65155d03ea41adf87e8e471f6fdbabed9ee964addfdbdc29a3273cc5b44b56c74b0d357c19dd1fb0a9adfe952df850b26b45b25f4388e12f701cc9b56f9148f951d15e053e3ba889d6e3b74ffff4fc6a14f68df8198c3853133febd55bfdd3b3c7de5a9fc361c5d4ffc1f9432c5eeb33995eb72e57e8e87d0f4d7d935fd6f591b27f54d787d60bb1df0573ee0737e07ec7be8b6474863af5f2bce13ee1e1bafd0af8f561df13d3d2837ba6d74502fcbd676df25ee8d24e706ab5f08187abe3c0020eaf1ea7171e3b745d76b3f359b97180dfb808b90cf279c9ef38acd5489756ff984f7be3ac1a5c40c7c5d5d4c7a4f8bafc09cfe9075c1b3c9c303cc6e912fc58f67e33502f5fa2f2e68bd501da76170eda077cb11ab4fa27d43c0e73350fcb2f123f311cc8ef44d79d98ebdc34570f69e9de080fa0d4d5e6417bb17b1b271b67748ddc55f2998dcb2f9ac7bead15b62b7439fc91d3d7032e3090415c980ba5e1d0f1f831c53d78051d31a8af09d29f0383c7ef5df34570f8e02351a1f9bef286efcbebf2788e1b83e5fb22bfff6c8deab5e1adc3dc5f16c1ce17575d223ca37258d2f3e3339f1e81a3501a975182f6fceca6bb44174daa13d25f36eefcb469c757295a9eedc1ea41ee8b7f09737e02efc46548a76f6bbf84133ed5a5f02ff51c1e7177e3763057d8477b4fd36eb4e70fba9cdef35e1e16c5570e3c964867c0f3489a751c967dee3bcc6979a2f61f1e732caae4dbf0873017f850e4f1f393ea0f8d8bfb4cd45b28cdcec057371bff735efa8e7b0faf27dcff3282391ec7218fbf0be6da782d718d548acbcda88e0d4fb8cfaeaf63c713be436bef7e8ecbe87bbedecfd3e4daac8f860b3369728dfc7b6ee9c5a318295df31fe4efecc4d462ea9ee99d3787c5ab66c483271cbd87273cb879c7effbf775f280178f96536f9eb12b3409edf9d505cd7f9a8f0f8d87cef2c25e90dc867522cddab543be51d270e0c17ae1c77f99db3ff1e08dcb2f1efcdb6f8151199eb32e82dbf3ba9e0fc6f484deb38d15ec299ed2a4e1d97f2ffb1ca95f43925f7750635fca2eca8123751932419f2e8ebeb3f8f672e1f5071be8fe3912577e0d7efe8ee1fd77fc43f280126f1067dee09404c35db235485ea1cb0b7fad51857339eaa58bbeb770f6ad75e6bbef6f41b2bb2d6ef302f25e703d66ee337f3dce4d05c9d3366728bc15676d321f2ec4b4f49dd97e3341bfa743d897f3ac447623be2f1c6946856c88147edfa0d64b1e60dbfe0cc7f6ef030d7389401e26b96f488ea9c11e9ef53a4fd212cd2b7c3ebd225d22e4291b05f7610435e2a5d92d9a90fb90aee1ccaee4be5a33aa93e77ee07c73770eeffc39417a061f7f917b16a80dc7aefd8145ce233d852f485f46b8cdecbc3aa4f8bc89ee1f5d223c2e23747f88b952f1ef242dc37c7626ed71f3c9b4d0917e20db7bdfc4fd4663190e843a9aaa23d4d7c5e49d43eb29c8b32a726c15bfdfeafa69a425c13d356381c6f86de3b6f30b3fc37c2fb62ebff7dcf57e23c605b25dc24335463a7734c8cebe240cf50ce95c6c6da8ffae86d2f44678eb8ee89d3d93e878a0d7211d0fbdb7d5e8782555f367df72384b501f087ddf23f0b2ba73b46ff5f6331f38748303e86bb78d5b64fd1a41cc9e9671681fe0ff01372b7027237ba8bf1fc11ed43d9fe872787f0a31c77253bfe370c7d12c7bd4be326e7c64c71ef731e1709f227d960b12a5606a31a0fd2879c4dbbb8e7d22b703249b9214f6debe1c0b8c2b5a03c9d2168093e26bc26f817be2d0deff088fd0caa32ff1af7cab77fcab5ba3426b3ce9eb648cfe759823fd0be92f652822fdabe3ea8e8c1effaf9cdef10403a7bcf8f7eb7c312da36474447d50137f40f36c838f4aca6e80b9735609c5db9a3e880d8891bbe6d0de065c34929d7bae5d128ce26d09b63ee6dffd4cd46b986727cf55474acb8d6f01af1ff5bc37c59c09ba04fb5efa1fad4373def047fe27eb10f83cc8dacb9fae3d46cf427612d85f0c5fba6b5429baff4b8ea13ef9977445ed947e8deee7816f3d1c70e8d82bb2b5da1a56aef54f38d49ff01b36f60dac61aaef557dcf993e7db41ef31e177ad971a12f2e81d8729ff3b816e35c70788ae780f0123dabbfdef053844905b9989e7de25cf3d4f086ede0b741e561b3beaf8b9af84d1da9cbb28eb3a5333e87c38f384830de2118f87938b0399807f5e81202ce297df34dfe42fa7d5b1a68dc31566a592b0ccf7224a66f4aa2fc01cc8f416a3c8a84b3d91cf774408ae7589e179f2c17f2995e77617da72f66387689f3453786977b75f33c95f49b5ecbf3bbb5bc01ae14e2af819a6273123bd925cd38d0fd7dd087bae16270b81ecff5b4f71bb016d3877a7208b8105277516e73098330a37339add2abc15e2cbf06488fb14a6a5f790b920a6ca6f056f05b9b1700574bcf4f22e78304e437bf746620bf43d8d718dbe740cddd0beebb556e90dcdbf331c87a3915a204f6b713c3fdeda62df7f797516d97aec7ec7dde9e1fe887c5d57346b747f837afeef4dafebe73af4f73a55fa725fadb70cef7f8b86fc0c72d5e63af8b7be56a36eeeceee1fb033b02d668e91ba378e97e3cf053757bfc5dad52f3c4e9b9fd0a1868242b0fcffc9c77585ce63ed6e67be213038e9a9e7f94f1b359fdbaa88c6ff6debf99fd41b28f3d3e6671b9f26ab77146b7489a9dbd01c813fcde6e3556b25313fbd8e171c92296f79ac5ff51b556db7c1aed618c81ad31a460dec7c419b4fcaa64feacffdbe7ddee623ad3c76dfd8d3780cdebb55a9cf22fb0445d1c03fb1b7eaa8f0c7b10e6c9e838bec9dcc03165c9026c612466b89605a967f41b7e0a3c3ef779fa38eec68cdbbec7b5f684ab773dde8a6ad0ee4bd3111f386a16661c5cf704ef49d5c4ed7881d939eafd6d8e02dff156bed273068eb986f2ab3abf1da71e9bbbb31159df932e2b682f27f5405b7c22e0681a3ef68d597e6b83d7224cc85e2559478c4904dc2053ff9e7e962f3ee072c0b8834c73e704eb84b1a04106f81e16e728cfc1374fad83045fbf62ea1eb3639e96610dbce5d86f6409b9826b61730db6c01c78e89ef63ce65ca7e7ff3b95d74eafadf84ce1184ba8ad79b039afdef5be6fc8f8bd7c87bf46720aba6fe480af2cc59cbea3db67768a74d9069fb23fc5fe2038260903df55f34012869f0957ebd2e2e8b9ea0d6a2d4d05c0ffcf45cc4f63601f1db4dffa6aa776ed915aa6bad4f8fad78b6030e23693bbe35230544f1e6903f5254cdb733170a3023748760b6ec0db7d457df19d35cc494b9aa13de00dcd23df55e34f1c4f027fc2c65917bec3bd3575aefd7c5e7f4e941ada93a3cc774ea9e7668b8dbb3881dd3e39c6f31eff43f428f703ea118eb621aeb1c1e99970f5f7fc0178e0e4d5d91d7ee4ec374d5b9946dfdfc518a8bcf884f0f87475b133fdf0118707f48d603c569eab72617dfd4b3e08d2d1303ffec6e4e28dbbf8f42c74dd68eb63fc26f08ca23e43bc2befbef972f29eabc92cd373fb14caeb919a7831d4b9275891b5abc6fd63a6239c415f80fbdaefe7fa8efded4bb3a68d61f3db74b25be0008686dc03392c2af6777bb9e2002e99cc27f0edc7cdf14773444dbc233ad77d777ebc95e8df5cae1ea85cf861a31f78b926a5a00fe37a2c1670148687c5dc777cce1cfa599874e7fa6b88aeb7c7f2598e928d1329c1d0aea95ab41d978ebb90c25c78f39d572a0f6954849c5f07c322c3356c3b9ef70dd29532a1687cf14b2763ea9dbb8326c6c6e613070663ab5db5e92836993a31cd5c59bdf8623cd0240bcde1e2f3e01d7d237d38d6987fc216823ddf60c8d85c858170f24de1877377fe63dc3fa3a2ed409c2f4cd642c305b3dcbffe6b4ef608df447b84350ef7387f00732e606c29d48f6772d670fd116cd7d37bfa3bb5a7cf1a7cfd76e92ae7c011004fd9ea10529685373e708d2a591ad38ac105c93bd65ec6b549cbe0c66f69fe2ca83b2d59f0bd56167f01fdb2d59bb2f1568cf177e6668b600098cd66cea0398564c68749fad5eaf850bb12b599165bf90a6b7c63f2196aa73be7b5e7fc3d9ccbbb73d7f65c308173657bae5d276ddf1a5f08f4a7c11e74d7afdf02a3bd96fbca612d6c23b93875cfcb6eb6bd9e34b5f29bdf687db5e7da6b85dc07def9b6cd8b9ffb9897c5186d1bbbb37bfe47deb63bfcc8972ecce342078ec8d1369004a41765ddb3ab0b92b33e1eaf3218a039039ca8ff9a8b19a38b04b7d3197227c4b8583a7610eef9ad3318452e795f67a8464b87c1e6f7f6f610e4f457cbffb06af376ddc18a701c611edbaef6e668eb4f04f4de29e8c1b3751138d651330b24cfdbfbbbbd6487bf25ceabdefa13cc0f8f313631dc03185ca82d0a790709ac67593947845fc36cc6b4c1bf488aa0985356cf985a7fd323870d871db6415a3fca93f9cdca2d0b78104adc4f57398743fb4a701f53dffda87dc0036597208be2301f15411edd909df30326b5cd6b7c90e3f8307f7c2dd9d730b7f724a6b683e348cfbb1d318f206b0f2dfbf62e235ba47b4edd561f10a742988c52e6bdd2380ef275e9bb0adab7ce3ed39791e239a334807a0f58df89c4b4e3a8827a1155accb16e8d7c1e431af16c911ba00fefc56959f83f1b756e37e6d4c2ec135a71ffac5fadc658d9e1d631c7ffabd34d430c8ca441b8cbf958cdb2949c5dc339f714558c7fd63a56780be5c68373ed66ae54d1195ef3e7edd19cc22ad564a05b86dd0de3dba0552b6f78ddd5517b9bae5e391d21e1f98107d0ead06ef5b682e6f6af2ea5bc9aaf38abaee33794f348289eed957e4398d6d65151db65d29b45a0d8344f9d698dc8514f36e0eca42873931131ef91c1ee1c1b6468ae613e1279d97e69effd3e3e953fbb57affe379846dddd2cc4e9c8b64e36c7e6c7f03beb967cbb13c253fad3ba9ebaf9743ee078e75eec1ce9d766ba2677376f7fdb7362fe11fa5fd4020d7b13dc869909344ec41a93cfa26cf21b9ae9902e12518454bc77ac33c0365e2d6ca37d88c46faa791b30de66be9aeca56f6223d77e063bb672ad4be0418ef15d82f16d20932ccfbdce05439fb351477c75fdd8fe6e2d0aebd813ddeb67bc8b36b2c3437c74a525e5c69fd676e5cebad3146ba181fe68b4c7bc2714ae530a5b8a66f9b57786ef275c0de955e0ba85f60c478dc0c2ff78c38c363383e86d9e9ece25cc5549355cc4380f30a4b5f8c6b749d2ed950635d2376a362e27a6bcba1dad9e766d1faeda14d23257e9bd7c66f033e9b006ceed90d7323a7b99a4f89cf00644b8dbf27c93fc4ed30f974ec3e87f3e6e95ad8e4fb201d047c1c6132ba45ee075a57b7905b67689ff20618ef63377bc6708ef6d0f287f529103b75d2cfe75c72ecef7bcc435b2f1962233d5f56e3c7cad5bccd75c8681c4c70e0dafa9c5fc3451c38f6d473d337253b59c1601d7f191f7134e376e66c95e8d228fb92d7d479fe027593ebbb6bc0f6fb4cd4d497d6a9323b51e7ab381cb66df8bebbe07c574d3d37dd79ee3a52a695a52455e9b90bce1ed8d9e6764c1c0eee8914699dfad26ae70c669c6b7ccc6d5129c3c1ece45b76190eac3725bd263f709936b5dfb0fe95615d30c8d77148e45eb79e67a5ef8c520fe91e5dfbd47e5e1ec3247d09138aeb3649df42962bc9b87f36da574f0bcf5d1ff57c9610dede62e958278a9397c2ecaefeb534df5f82fd3881fd3041ffb84433481b878f4b54efaab9589136f9f84bdc5d75292d344636ee0afdb0e0bdc3820b210e79aa491db38fa5313ebab353e06655e01a4588f4596d568568ed3a5c7c741dfea4c98b9b660a63d311c6a6c5bd98a6b0580eab6930aca6ebe9fab29daea74b6ef5b29e0863f4bd9783d5cb565a5f96c36ae80c8471c4732fdb591404c3ca754d616c39e397ed74846411bf752bdfb133f46fccfc45c7dd6af47553ca85cc8fbfd03d5274d0a4e8e0dfc6c57258c9eb3a96d75cf882fae6bbd56c2bcdc62bb73a6e26c2d898ee5eb6d2e97b39ac4e81298cc3e1fc653b5ba0678eb66ef5ba9dc5e3afc3f1653b2b36cbe1f5ac19c241978e825ec7a1c39fbedcd929d2b22ad2dcebd19d5d8b651dcfedd9626cced663737a7d3127c27c39accaafdbb45cc85ca10fc272bd073927de7160337c95ad9e2684fb320989dfb4a7633579bd4fb9df31c78b1a69c03750410d8515ecd73cb2fb32f23b433a93fbbc1d0362443fe8214836cf81b3b9847c79cda8cea4edf30fede2359613fb0aea464d8f9a013152e0befaeb73a1ee11ab77d8fd7c1871847d77e2ee0273585e8416cf5dd0de8df975aad81b58479d1f85ceb00a5d6375f1eb6ba224e91bd4c9703f4acf59649a2884ae281c7451497afba1df93b124a797c7f908d369b327664bf3bd0cf6c0e3daf21a2ca5d73fbe517e6b961a84d929736dee25c47cb0a2335403dfe6a3cf830abcc936ec4d76f42c9fa1db93d332b8718942f4980df841d271b0c7fcdc415d0a9b1ab595211d06fe52751238cd2ce0189d6fb065dfd9be8bedc82bc6c68458b815427bf7df382dd7f81d25c279eb835f69eaa3f7847cbfcfc3eadcd8e2c836f58c5d41f90dc1b7dbaf39b9eed7a235adbbbaae3d6e8e32188c0e60fb5a8d0f11e73446328fc72e19c13e630007c24e984f4ee7e59ebbaa89ff6ffdb0ce429c9ff847735702335fa4631926697977bf589d7593ab181f0096b3d5d23dcdedd9fc4dc9776f81c3bd85c3f96e6528a5395b35c7f0efc931312deeb29eae2e2007d1b1e9f54d49f9856971bbb578dd75c7abf967a22e4c8b5f28d355a9cc90fc4c779b49710a8c8f0f25a9e6e41ad88775f1e3f9b507b69e8fd3e3ad207be6fd98ce4e9c6b54e7866fd21d5497208fe01bae73a10e9c19e70c216e6287f24716a68b18ea9fd8348ec31e6fc5d97939b01acedc27edac23f00762dff17165a4e8ffd71ff89a12f4be268e5d01e7be697124d6568d95743d257277bc1589ae02bf572f91d8da95956616b8362d65efe97fe9a74638e7ed1b9774790284c3948d452b6c6daca65d763d9079a42f0d05eab9ab138ed6e7d96fd7979344af09866a0a3ce08cecc3edb5355b6753e16be0f368fefae631417aa4eace135dfe88c3e1ea4d49ec9b22cd0e41ad94e1ed9878c6470eb57606f63e188cd2101d1fced175a9222f32b08de479a24bdc9b924f7781939d23e05445fbf231519d557b0cddbb991c13cf79dd6d24810f13a5dc483bdc96145f2257bd2949957e266aac484837554a5f5a91f3ebf80bfa19c27322a43bd64a190d43d21788f9a0fb17f87efe121cd647f4db6cfb219c232946d78ce01a39cb3c574974391b7d26689c3e46be33abc35aedd5fd78bcbf37e31ee676896cee28b721ee826b49b732e25b93d2623948a936d2375c63aef946e3cc1785e28ebf4f5e737758ca67cf1caefe359f8c13ff00f32c53f6c7249466b748547b7d792d96b0dfa46f509391ea43580b05c4ecf15ccca2c99d4fe21c89f739069124cc8361d4ad7df394814d66f2f057abd59b82ec3c17d710e8c5cc1b0e9dae4ef8639d895b0e6c8ed49141ed72fa617d312561e8bbeac473d13b6451cb3fce3ea360787a709c55801a674f6dcc385bba2aae390fb161bc8fdf71e6c82ae10d12b83bbd509ab5df2f18ae31d7440f67d1efd7d23e458dce81792757c80e873187ba7084e3fd6b689f37eeeacd37aa6b98679730cfb82fb3b80047bbcbd136ef593f2c2ee1e1aeeeed9d0e10ca6a110cd52292d3930fb11dd22ee6053db373d3ee738770aab9129626ecaf9c6a4eaf902b657e8cb7f22a5b4c70ecacf75dcaa88fad985caf4b0ee95fbbb337b08b80ece9f349416c20bf0c06427d8f7d58704c1eae71e290cd3ca73887708e9795abc0690ef9c09906e3ea1d833d5f76383aa68f79745f9f84e112ba8b218b5321d88f8fbedcf0d9561c700b3df7c3837f8ef02fbe6da8fbfa350be01c8e45d17a721b3bd4c4f405e20ab332f101b3571e493cdab6a7f31725b3ad15b6350b0de9a362fa66e6b34f762cd71c65db422e1cc9f1031e6ac5c96ee81e8df88694d4e703a9f291ec84358bc6f800f3e3fce5d87198ec600d617f3fd4903b47d20eda9aef53c257886323c82e0df6fc1e631e2b888d38b57af3dd55a2d5247ec6dbd6ea364e6c7b3d41724e49d26fa47b0609d257b1dcd7c4b4340eabfeb14233c03680f1097f333e68fdb36bf6da9fb39b3a26f6da4a40eb2c12b3cebf88740531c5fec521d3cea19d57bdba42bdbade0ca60674d6098fe519c4ff199ba487afc1312dc2a18a7d71072437d611e64943b26cc40779c6b95d2e73e127f177c32b1a4d782c9f6d8ee10f69df4db29898183a4ef68f412456a308f498d54597786e6908a13fab52bdaeb651a3df0cb98b2ea9f89c5c725b635c7ec92b41e7cb6fdde65ed0358b0377d1e5a8bd7f598fcbb58baea952575ab7c7ac217b0cfe4ec6177d2a34ed57fa6421e87535893afd0a9e691ed867ce8deb001d37c873b47a5c6e86f435ab6fbdae56a81de750055acd47f879c717f82b0a878d515977e7c5ddcbe7beb9267dd10751a14fd7a87f70cd129e15877a56a55fb769391f72057a37138fc95537b3e8ebf65ecef7d6606b9707cfe0df5cd9bacea7d3ab6e57fc7c624beb0cfd0daf73910f236b355ca77e1859de683e793fb9b22dada70b09fff5e09e75ea5d173cfcadf03dbeb4b6fc089e8f9ee356017ac662ff4e9ee14bebec7a715d349e0abf387047579eff7bc99fc2c87c1fe0e758d745ea4bd43505b477e02e9b9e0f8fac031ce33ae07d7203f52184ace70f657153f22a57f3d797605f643d1bd77820b36f9aec7348c75a0e7d8ecc5d2a065e3131e2cf1ce23c86ef44b32ff9fdb8c278ee5e9c74d6df03ff0dcfa57c134a56854a023e09ccab2bcd90cd717167d7a33b2b8bedac0ab55915696e153a751cb85915816f2ac942d7ad4257dc61dfd57d9e67497008f4f3a1b6d856aeeaad5c01aeb727bbfe7db7dfb27e9240b7af1777567da9e2f17b59bf1e35f4ed67fc9fadcd816fc59d5d533551908e88f51d2c9ba407baa2d8d71509af6186f59bdd533d8fd43247f3a0d025885541dcb0cfc586e60ba9bfb3c7ef057c7bc8966f7cad65230bc33d96856b985fa7b36b73c2861d9bb7b6bf9c0afb5f5f5feac65b39bbc3500893d1361a02cf5fe943be2b1c27356bb8fed83bf43c6ff404dff0f2b08ea548ac38b41fe2fe61be363d1362cce3dcd86e19a7cf6c6e69be97ebe14a981b55154db85a9fc5dcd29c97f670252cc44a89261caf4f4fdcd2f44a555e098bbada4413ee95add9d2e9a6943f3af38d53a61976c6cef382a36be37578b36cbc951a5d80ae95f781ceb7368be502174235a7b149f2ea7b69c499eebc16fa6d5aeb13a42bf2e725a98dbdbc29a3cfbdf2fab99f57baf39a2d6aabdeda19b7b41ec66e8b205f675f53215f3e8eedb6e79fc557283fdf1fdfac1aff26d957cb6f6d60156d6d20e02dc57c3454bcb77d37dd9c09ba7c3c2a2997e8b3127c12fa448d74515d20bbfa291f04f10d74fa5159e13a12a82df0739473f17aedcb8207be0022c7eca9e7ae634d4ccf8ded6b0d62b0053afd1274fb374d247ea6e47ad527effdb9ff1bdfef096299f2bcdff63912770979a7048d8192a4a5e7ae80770ddbe8d757cda816e83af48ed17055e8539e833ee1df65e052c7d0783ecc7befe460a3f385fce2180c55cecaed83ef429d22c04d9ae8f9d8e7f60fda52337f60bfe29afd69a14f554e43dfd7504ad4969271773203ad19df3ec9684f237c68a7391e17241f83e6bb367de9f3e43cf23b04498775eafa8671a4788f04d9d160b98acf01c1013ae94bd3978d590ca0d65adec7f0f21cce078175c1f9269718f9ec1c39b3facb1624df516bf2ff85e7aafbcd4cf800bb71867e675be3609f7d5bd022a71ab9dc8cf787f62d9a09a6ef7e703e60e1d5ad395870c140cdc24cf80c867e86b1efc2d47716f8ff89720e871fe5067da36c9c68469535fd70393ff33278f676e57ed42ec7c75ff0bc117a7609cfe4e179f01c971b5d22687b9ee887c53590323487b6680e06b925e8dc3a08b875b4ece242a16b73ff7667fcd895e785c6c17779d1ebaaf64d7e1e8955017f27cc5e77f1ef79f9b8e560dcc6fb9bf5d7d8057a2690f5b2082291ac1d7157b8667177bef399926f5d039614fb67e56a1ce456d1f8b37d237d51f2c61faebc29188f917a4e7509722b71ed13650f65d167fe9b3ecedffad7e84cbb36cb99e958f736ea44b8dcbd07599b0fc6c4dc48420d3e1ebaaf87c7f73b8351f67ff9fe444616cbe1e3e73debc74f63120eac3bee009d60b95a1f1a96d97d5f1ad4b4b9eba334abc3815560bec47e7fb02cc07c8b8c1f7b41c61763484cc0bb36637f83319f3e6a43013fca7232ad3febf23b4cb2cbd27d3f3a37359bd755edb6be8bd13684b15bb3cfb14fb5dbc4187a725993c625f8dbb12f0f641aebd3ebda067e058eed1fe0325d7adf8c6fbf68938a4dbcbe10198cf48f6c59739562728226a582e3b2f58d9e8d912e4d0bcd140a929ff086b98db9e3c6e4fd4864ea823cfe0e46156b46fab221f8181cf3c1710cdf1c9fe6c654581a71b1b4b31eeef9c978437bd9782bfef82e10eb31d9f9547a06f8aa715ec5e4f8e3b31f7d0f188b96dff9c9180cf1b7fff1d9ac9f9027f295aed5596e8cea8231ff8fe7ffda8da11e5fa75f2db21e6e9cb449b0464fdaa131b7bdf50718cc9fc68359838fdf1bb551306b6ca850584dfeaacdcada37e76598217be8355793d90fdfd00ec28c83dc95bf5cd3c7a6256ea27c93776975b98d7167bb267aa2941813a940fef9c6a0e2650fdff1b7cf23725f8c0b88d5333112e54cece86f25c15c634a0239cb1446ee5e36a06f17dcb89fdeed5b39545f4a727a229fd2928d073e903f0eeb2b08ea87fd2e953c4d70ad7a2f6ff43d9c4fd2e2ce9eca382a5e4dcd6705e38c9bf6880c5313ff4779f5b7f614e73557eff6b8bfddabb2355ca52aebc5ae080f338b35a07d8aa406c9adc9c96339b0b1fda5f3a3d017cb54af479cef2e38b03b1d0b746bdf20355ac187b98bbd3a861a27f758849ece8cdaa0f271983a057bbec15e15601b347e6aa3d2b0af076288e837ae57f55bdf72ad62992daa11c19795fd5c52df78909f264e8568323e0692d5d9594655eb0752efd26a722ac8fac7359e487dbee2d81d6f9eaff4e2287ec6d6b52c9a1845ebcbd7efecd41e7e58eae70ffc289f5fb4d666bc26dd35d8d652926cbc953f7a723b2da3c9339d91f8f366f8fe67ba1ab1078b4fc805c63118e5ae2daa0fddbef9f09aa5ab665aa74bfdd827b43e9fe99616c9b921fdbbd3bbb16eba46b226fbea6168fcff47e38eed4cd2a7c99dfd42fa9abefdf579f7634cdae40b9fd231dbb160c72a570fab97bf5c733f9e641eb0b1cd0f58034caee8bd3f39ebf203a91c67996762cc24071ae9d9173ab68bfd4cd76a4ef2db827db7cffb36e8030d9ef7c9bef48af760a8678163c2fdfd2dc0fb4ea14be3c76dd5f119efb350bf0ee760cbac2eddf88b9ab69ada334d4c3912a126c90dfa043c1b803dc73123a3ba7b4f828ffb7724123c9c5115e8efd229384dca02f4eebd31aa17a48650c0b7f75e0896eed97c81bc28f46dd76e7cd544f50bea45d7a37f0783ecac89ea18eb1169a347dccf2d7a9d4df82773fa7ebdb36be1713f36c63feec7afda0d9367edf6e4c4a02f271a9feb7cb0d81f6f8bbd2d7c25bbc479e86fdc35f66b5b83b8d917e838e072c28d3ecd74b4e49563245e39cd3c265aad7c4732f1374ede4ba75601e736cf38f49ca775b8c89800364713d36c6ebe5f1bbfe85cac022503ac5ba24fd6913e792f15bc2727cc7308a66e61c3b312dc67a5d706b926b9c6f359ef3a69c469a20a7d001e26a4f34a33fa58d5f830511b9bce87096df67c98f02c25a926915825680d813f92f44149aacf48ac5efbc701137858955f50c711fb1e31a61abeb3dffcdf352a1bddbb3a34f7a68f7d9c033bb0dd75b4341512836ffcdd42dde4a5db7274594bd961e3ae21be0fdcda39c65ab43e50f28e4f7c9f7634e3843019e1dc7e7b3d0cb875e10f32ce81b18d1b3fb1d88cdd8fed607b420d40f65cab39f1e73e6dff9edbaa9d57c41ffbad11ecc872efbd2e6fd3d17cf2fe36cfad9be692dc09d9cf968e8fde5342f639ee37e6696071e019ab3bc9f69deed48b099d3abbb66afd416d3ec18dc1c554f3c93bdae320674093e74c4e692496dc7cf2de724820db183896240aeb22cf813b658df4c859a3b7a6509338ec1dc738defe331a5f34f06d217bbdec611ab6bec1e299589930bdce452f8f26afc27c323e6a146f10cb37b228374e67abd3797e9a9105f31927b4ef6b3239b080a5d441cf6e6bbd114e8a57d82b43ce2f823c032e709c736b5b2baec3afb49c09c0a1de3b27af0acd2c9a3a3f18c74cf8f16d7b3d6979ab48de26dbefb4ec61bf92073e0d61519f32dd79ed6249c66ea8f102d85273b1aa3503f81d6c7bba987a50179ecf34c31a6a43e53467db7fedcdad466ea379518637aed26ee1bf35c93acd8df45b9b84df41c2d7d0d6406de208058d570f6f57613e11e2a513659a34162291ab34e374fb3cccff85f794f4051f2f2b5d9a0a61cd1f603e18e91b3e5ec54b775ee8f20964e6673e2e491e9c8f7fcf581b528eb2bb1c9b86eb2d47cf6bf78492d4b78a9716c68ef979750986ca51935767fa199a989e821af57b3cd48c92c672c7cbc9f425dcf3b1c6d99926a502d5fe696e60dfed673efdd7da79f06c737c44f7ea969dd1b827e25fc23c38adad58569a793cb2c7aa7ae900271af0687c1e9412dad817450fdb307b346ff078e03eea524a7ea3ef80fd5b5d4d1318d34277911e925e16ecfa35fb366784fdd68d9e037dd3f3f525aaef8f7d19e91970b943fe4d13d5a19254817288864a72ad5de39a448331daa7e07aa4eb201dc3ae15b43fbbe82fd203942cba804fc95d5c6c8cf16df65e72df3589ba63453810dce6b85db77b72732d8fe604da57a8f6ca4513ff3b84892e475cb36f4743fc5b97f8f6985d33f14897fcc67bb95cc01e1cd54a49de13ae57b2c87d1c0b24750a07760079858e7a8b64e53817af956637f141aa06d454c896ee290d86e1db5cacd26098be2d7a38fed5c07aa42b6d313e7a9406c388d1fdccfc6fd7f76ab23b169d5f2b3c8b2fe3fb09af87f980536722648d2dee39eb549b84ffd6e4d509d9754abeeae7e57cfb2cb7c9d06f6a764ea6e5a279deedbf7eceea3e6ed7f99f141687f7124d8a22e446b189f408739c0407fbe4e576cde257620eb86450ff06ebf8cb6d7cf22007511bd8c74ff42bc31901b602388699bce6757687d13d34f97e6c0d19f4cefaa1e53c6afcca481e678b61355edce87e0be4f92c27c35a7a10b36b7324e24c9f8434d723d7ecd11ae81c69b1758f4734bea07fe76b58c348ee36ebdc97f0b9be9effc85f71e7afa3decd74b273e3af6962f9b8fd75fa5f60175aeea2d6be7ef20c5ffccf3118dd9cb8c34820799935fd57daf74d13726ed69ecbb35bc033e7015f81c7fa9af8222b2fdbe3c6bdcc6ccead3b5b06dad427d3aa919b6d9f919d664e9bebfa6d54f346a6a23940c9549fc573cc94a41ab6764d0edfec112f2d9de7d57d1b8e2f82ac8fc1807653985f7fc371d06b84f1a3b53608ee33f9ce3fe2e525668df7db79036c077ebf666e9276d5e81996af91771b933f5358c487b204e9f8414271f498a726b7be580eacb33fe181e72948d28e6b6bd6ce1ba1b1c3713f219e92e1b9f063ff48bca3b3ff084e64ee9b5c620d6dd0b55c8ebf04f93afeb2052b72ec1b1c4373561a65e1001fdfc8764dfe2f857986bec9d61accd0d8e239d8c36a988e2528d9820f3261110c465b5bb6336873066d6dd707b57079249beeb02306e9dbd6740474dfd61ed85b5b8ad13d5b6b30bd7bd6cab104535e959b1cff5de3bfecbe9b5b7d0ee50edf30ece619856de8e6f1adb83fc69f3835f1625c5f66d5c55fa8b674c85bc03968bfc63b747b714c6aa8bd20591f248f74baf42d9a0867678875668c8f1831fbc457def31d99c0cdc92d39b45fddf799f80fcb7b3d232c3e297f2d35c729ec07923b0c26e64e4eb37ba69ff56a88618ece89306df507ba0d244f9e8fc3e3ebb3bff40b5dc3e68ff8cf62d7c8468ac4111770cd7e545da2815daf06b39b6fec0a521ff5c1bb93b895037ed2a7e71fc59eedbe2c613120a78d33721fb7d3c4a7c33f5a7daa35672c84621ccc73eba64f6691668cd0ba3d868c0f333bdf3d8fc682f4f7f57f800521b887bbbed27890bb3925c61712577e3ae6faa3394cc5b0c9f3bbb1aeffde269d8bb5aca93c54c77af9192771a7d3f5f119c9efdb7af2fdefb0273f62461ece8f3efe05ed7b683ffe0d7ee57e6ffb157605c7b5678fc7672b5f7fc6ad3c9a97f7189c5fbfc3b3b9f83b2cccfff21dfec36ff93feaf38fe3d4ce9f8ae584709ee0e66ec0b7f854f6dd617f66d9efb03ff7eb9e8e4bfe2c6307687fb81b1b0623f46c0cd876c0e7f8f01af01399ef7fc2fd75f80c2734b7b902ef51714df83c5afca00f3ede87b28dc60ce568fe3c91dd77b1a7163b43c9f3163743e7c224af48cf0c5df1f5a587e3f99d5cefe16c94ec35d1864f65fd530c913bbb9e97f513fcd2c36ff857fc524fa7f867cfa6700377f3eb098689de7fc8b3ca643bfbcd783cbd6eb1715e1b4c54f9543e3f9a03d2f8213eacc368bde66ac2ec7b14bee8f15cff15e629073bed31e6e9f11c3f47928d73ae29bc4fb8075972c6356b56f798ac677a8c4130486c6df59ae86d67aa4f0fbfebaf705453ecaffda27541261f377b800fc2baeb673a8acdfd1dc707c99f6df5dbb48b8360bdb6c3cc60aefd35d8028f79853579255812e5237ec01743c631f625f4ae7ca68b6a0a58823e46dae9ea0328ee3df72935c62ddf28c1d1400ef3679bfbdde01cf0fb68b7f0f4cc2783e57d0935bc34c31a7ef66a2c806d33b0de1ebf03eb2b75a4ffb2ff50b3b81ddb2e97ddc6bec027ef70977f4b643f3306aa19bef86691e966586cdd47d703b7ec90b5a7a2eca1ffecf97ecb628ae8bd14e36c12a45ba892c5e82248feb57828fa9e27d89d7bbf4b0f5bf4e4b90ff7787c5e5839d663ddff078c112d639f60a0a871227e2bd6ffacdcc55b9ec95dcb7ef59c05b7ac19bcda5dfb1847b5fe09b7756743ff629c19ac9b661e8f61dde2089f5ed7c374dd3f978cfd267f32f68fb02f103ffe3f7c17f67be8ff4fbf07f8179ee01787acadfc04bff8d057faf43b50d72c2d3f7ba8873ce813835fecf7ebefe3bfd838a387f8455582d814fd3dee725415c96a398e75c0f6e2ff379c350c3e01fb366e58b76ef99203d76439e617b77b0c1ea543673836dbe160fb3a5387b34b854d9b5bf920a6d061f62e8fdba3317bd306b38774f85b83f1dba0fdb4a925268d0b5dbad2d795f47581d85df73998d2b8bc1b8ddf8b18fcde95beeea91c7ba08b1f95e454b61c5a872be89a1ad4088738c55fe5c073f9fe6c5e36d8dba772fd911efb2b2c5df40b8cdebd4c61d7c99331bafda3317ab0fe9eb41b3f6d9795711bdf78c4e588f9b730be4e1d6f2753962b7736cb1ee52a038fd7617e048e9e3d1b53343a1ff91bc6af3cc212fe3dafd877d5c297b22c68759ab6afcdb7386d9c118f747b8cc7c075f519fcaef430b6b4a56a8a60b9ce8e55d6e79b0bc1dee08e9158425ecc1df79531da6fa459bd7257c7b998018ed21001e3a0a0bf04eb9810fe339cdb9def204f7c23ed709ef8e4bd74604f44e74a7c6e50b6e72ca739179f82a718cd665c9544e38bacaba98779ff355e393e1abb79d2c53b37127f0a87f387715b7a4c94e4b4f18d166f4574ba93d161891bfeb75da14f14fad937df595c827c7df76c43e24f0fe3b9f41cecece16330b46bd4fe6fdecbf8fd7bf5e7dbb795b418ea2238d89cefce8f1ad481eddeb7e3cac3ef8be39445a6896aac24d7782ea6255a1b4a3a4d741162ad10c36d38f1d07c68712be418d423c5b1ce58492a2e489a1cf669a2cbeb7313bb44738c8ab71ed9786bc9c4668de9ee0eef0273b07f6c503eb80e7d9f6ad6b51d9f0277715392ca6c8fa5787eae3bdcab1238fc2dac95d21a761856d467258d1525e34a87c2b66ea0c6e9e9fb199686e27cc6fc1fe62973f898734dae5e40ac4b79994f8a9aced5f720d77efa2ccfbef81abc429d124be27a79f6d9cd9a02bf29c45da9da434d2c15e7f3e7c07170dc3c8df30296d5a3f800ca2881fa9e6d4da1a531bd52d8da63e03ce42860f05f14e7c969be6fc6018f0bc50d7dd565d03f32878f1e9c473ac46ffa83bfe15fbe4987271639a8a1fa7fd5479021e83cf7e8feb8f8c53b28ffff1d532c7b008f9d36ebe4c9fc6b6a1053baad6eaed83a7a22577f0eecc091d74d2cfe1c0e6de0d3d126ef6508faa31dd8c307e765a59c93f3c6a3fba5b4a9d38ce3daf9aba0f3a7389cf1ff3feede644d55660917bea03d2840ad25c32a547a45e99909948280b20a1be0eaff272393566b7debdbfbfc837306f594406692641b1119f1be817262af1afdb869159b2b8274233ed1225e7b5ff843f38371d1f3659e96aac1deb44a7af8baf82ea69f6bf194a3eb08ae93d55a3ce3381ad79e16013365bfb0cde3e6f1ab6a933c0a1c27099c552dc75ca0971d8f19bfa23c237714bee14d78bceb55896443cd4b70fc8bd1e0a5aeb00d63136f8b31aee6265d164d2cc6e6bc4b157e8405905929e69b2bde0dc62c7ab2fcbbc1f7af41577837b3c13d2c372ef2b5a7979d9c6391fa64b3db412f691fe38e17fe3347c8a9f373e930e20c7b45ed39b4ff01275c8b85e475dc982dd703f0c39cca6ac34cbf356389316e00e372c96a36e66de8c5caffccc9988d7db9006317ce4407e7ab036cac79ac70e215f0ba87b18f172277819ed6727bb4bc5b486f9bcf7bdff6ab49ebe133ab0ce5b7193694f5591df0658ef62c056ced036ca88b7f6ad2cebf91ce271becadf307c175c367add7543b7da0f7e45e1c559af37993f9e41630658ebe4545b265ab3340be679b303f059e868eef8cc67c457194a3b98fae156399bb672975ede297a753d7833dff96277417b360cf46317f3ff1036e5b1c65319df94ecc06ceaa0c1cfdf264b70cf83efef89425df8bbe93f1993421fcab34606de96e269e2de068dfdbb3d4e330f775eb8bc8b919fe9ba55fc2e73d38ef6a29f6123f467a744a05e7f4977fa223b487bab6140771f93ab6c8eef3ec1ce32db3baf9194b89bc97fb1960f926a15da62217d27eb64bbd2cbd79f6f62cc6c0db52f993e01872b393cfec524d97d606b5b38ca5753012d674284fb3ccd912c951073426f9f026f3d3fc00bc1deb8b2c88f9d7c4bae1b8347c26d98be980fbc398d970cc873cc4a88b8f802f2af366ae3134f8246ecedeade1a0d598d54db3a7ef7f6a579761915e5e78ba9b75bf6713d7916e2f38af2e6242f428fd239627db6f31febcf993edd1cb58dacfb63771b9cb3dee73e64f4c74af02ac50617717f9f2eedadbe3ded9be613bc40a70c8dc4c1aea838277eb638235670f9a3d5c8b0206c77d23fd0095a139db96a73cb46780f1a6ebc7b8f9eed6ef63e2a5c119ad872692a7e880318f0d675f17ebdc7c63d4d8c431173d077c60d9de0e72fc4deb8b6bcfce9efe19219dee8b4feb904f6f5ef5d9fad8015eb46ddd42aee53a22782ce6a591013127f8e3d8f001c9fa678de4739fdf1e7d66567ce99fb1a77f0287a4c8a3f5f5f314645644de1589983baa79e7d164ac54e4232a143ede958abd12ceb4df4185c62d75f72656eef156ad54ea3decb866ee4d5b2976f3fd73e843f40d41661ef7f62cf3ab690c762bc7bad9935da8a46cd326bd18f9a8e5e38178afccba85cba6ccb4ff1ce6fe531a8bca83d38fcf6e0e83743b2ff7ea2b70767d75e71baca64737bc869ab7805f55c079d8f0f7f57999f9f26633cf6980c7eaa76760f74b0a9f9ff99e0e7161a85d1b7c9db0c5506630e77cc8954ddbbc7b0ed5f0e0ff0a4ee087499e85c33500642b1c0724afb69720c6f1ffe89de18acaa4acc4ed9e79f720b122b40e3ffb25c31cbaf9986b9ec2fed55eee55585ef4402e4c0a3c4fe81eb7d82ef5798b4263cd4f313e3feaa7e1fc4c5fcecf01f7535ce69ab3beb5f86064acf4f8fc48f9e33634dfc8dc85b831f4fdcd75dbe715b4c77b7b9ea5933d53d8623c6d3e01fcc46e2e95a9666d2f7bc051289bb337e049e9ad1db9c245b7b6dd01b7e1a96ecdba42da0de9714d5bb618b7a3ef737be76e64be8cc7b3316fbe916dbf7d34ee14618bf6c933dac7a4d83b639e57223f74eb5d2665e3feebe322e2f70ff7177a8455083cb79974ee715ceab0e776fa2a59b3099626d5f727769855ec9ec55ce156544f4689fc13c69af281b7088f1bcfa01f63be5acfb8529a75a51ca7934bf6fcf48913dc19c5f16eab88f647b2874be4c68ebf0dea1af5cf61a5d8bdaa1063e1a2f970f3d1de9079853f09304ebb3df377683e2e3ee7079efc3e2d4b8d0aa94d36f303073d5bc133f89de494cccf20f65521e965832dc3457ec33adee371104af27b5aad8572ae9ea06ff13d345e161f11be0e815b0a638bcf40a73a088f876850ac9f5e15b4bf697404f5b07a7584df2773a6d1b88ea08b9167f01b3da3703ebd970f7e9f92d9c6609510f0994a06ecf6297b0f33abf2b2f21e52bbe8cb64331ca78ac6b639b79cddfcc09bff099c2d60767b065d12db0325ebb343d7a621f86204959b29c692f856a0f454f2a7f48407fa8ab9474ddc2f564ec94dfdfa1cd4f8ac15639a0ad14dd3d92f47507fcbdcf16d9316df8a45079e503007a72498d0c9555eccdf3166320dd8ce875588b1a4adeef7a1c17c164ab896f5e4a2d5978b253c8eb21ee17b8bf9fb2645e9b6e8d97b8bc99c16376545071e57e45a95bcc9c63c9757a42e4dbe13c69f960d768eea6bc7902e51aa72e29fa8bb9396b51c1f2f5a9d3778cfbfd6677a0eff052a6fbf01d7736ed16d7d9d7ebdd1337cfdc865fdf8b68923f3c07de4f2aaa977ded6e9ff50fd57a8fe7fc4a9ae4ac33fd17e1b4b6f2557c3a4aebbe5365638b6f7bdd4b5df4f0a4db5f1f78a49af1573b714e3c79db4c9abb4c28e0a05c5ba3a8e153a8a89e4bf061b9c76daf41c1b2aab2246697715ed5b340db1790a5d265ff58e552c323eaa47a45afd3aec963bae9f0efd5fb3e37a3ed7715e88c60ade4978cc3cc3a44959ed982d5581ba3b7a8b27b0367adfbb699e2521fa465c67aaf77da8ce42511ff4deb7d1b81dbafa401bfc52cfd45de19665ef5d4bd217a88c495306d4b5ff3d4ff9925efbe26f74f452237d2dea8bfcea1b791d5433a0da21e504de028f413c977680572e57f89dfab2e5402a501e93f48bc36fdffb7995d5cb3cb83e6dd9240f3748374e43da3522f6e5515d573d4c780ef0a346e9cb1fd30febd8daee9ed3e1f12392738bdef3ae6eed7d8e456dbcc06bc6e3ae613b562073c72bc67f4fee7bbddcc0f318e6ffda6766734bb0d2c32a4c3da134f78235df9da5fcb05a47a1501aa13dcd95051b0468eeaf0876fc99ca1d41bde8d9ea76587aa97b2ed7ae23cdb7ce677558d2d19753caa13d9beb67ab382c57b437290dcff99c1bcc9a3a2c67f7f05c2e3d5b853260ccc50feaa0a7415091b5d4b85cc8fa006b29599f72d940f5807a5b96500a86b59bdb94b530accfd0a6d74bc7dae6072ef2ed730efc7b76555c1d0bcf47594fd07a24f927fa97656ddf550ee587ffabdd6afbae1822857e9b34faad3e54ae5ce0fbf837b9cfa85cb926f7e137bebfad54aedce2fbf837b93f5585615ced9e19c9253d7c06455081bb7baf97b4e6443725b3a69ead5e822a9d1f84b0779d14fe8236fc8efbb1706b5aeb5d838c15ea29f141c6f2cdde59df310fbf099c639afdf8e519e56dc398df72057a9901b618ab281d7d967ef1d6491680c72f979d6bae596bb051d8f527c46d88e0cb4d37792ac7b8c6482fdd4fe856c7d30cba6faf02bb4fcbdf8e7d0d81271ccb9e96af76bcd00d37de69c39873bfc7d76f3033dfb36854af9be744a95b45b45daf43245bfa357509515d9c722ec61fb1ac5f3552bfc70ff5bbff4dfd0e36f849563d1de6aff235dfb55e518dafe5ca8fbbb645f7ffae9c252ba697f8e0a0672ebbd78b8b3f41df28e67215450701fbd75ad9401f21bc26d876ade9cb7278f6fed98f1f87d8a1e69cc53568dfe2b19ee8d9e66d0f5c7591e681bdadc49828667a0bb9e8a62c000bae7faf7a712f877b03feb6792665ad3f4a3fed1de74f0a77c4334cecb78def693f0f0579fa3c88c6835d2f9237c05c61cc77740dd841188be5db33f2111efdee29ae77c807f9b8d8f43477f43c00fe027e16842bcc5f2072439f74a58a82802e6bb4e6be7c4ecff0f378fee4cfaed0658de42889c3cf86752c5f9d7d005eb331ec274a0699b98729c25bc097eec1fc2e53bb964282fb81313fc09711c776b66709269d070ce6adc46bc7743c368b679e7fba5f4788a7e88d71097453c01f8ed2eefec763d39e51f562d8f929c4b02ba0d79ba5baf8e8f10a88d7bd9edc55e3e3219fdc87cc0c7540f35907dcb4730ff7f5cd61921c6321474d5d53cdfabc213d6ebda20a3f2d6a472f6fa8ad904eb7b6e01e83ef85a1ac3f22839f5efc14b7a9d2f7d93e5d41e7d46c13f01b4321bf6a260d656f70d9335ccef2e134188f0bfad0f379c0183350cf658eff6fc1366259bb85d1fa3f007f51cfdfbaef43007a2ff59551b942f68120f34eeae958a9272a5205c27bffb4e6ac066db9b5076dc96e9969b3f6c21ad3c40993b8a6cb9ed89844aceb0dd621d0fb78abf09cddf8bd05eeb37f9f0fb55d13b3ac4d9ed6cff7209e119ba9c507197bd5edd9237476bc6b97859bad4ec04dafa3b190435b0ee60d774ded7a158e394ffa67bbaf7cd81b4c06d1a0538d31df47f19bfc682debe30d554a36bb87d57180930363c859a7a8ef35fafa13ce50e175583eeb06ff5de14df0b94779f13b20ced427697bf8535d5aa3c5e12cf1bb085e936c0db9c3b6e379d693693036218e3140edda9ca705271a7f3fe6e29a34fb2ae9f3c89eacc01ed2e26f70b3838b390632e99cdfb04f617726e53063dbc49cdd43bd209f15ae80b7dd02ee170ecf1738b34d01270770867c2467e133a9f173b06dbcb0512c7b695811d6a929eb40598f079eaffd7ae1394ebe83f5e317fd047956d89e644f9ffaac877d583fb51963859baaf8f6f4b4bdd6ec15f00b627c44dcf67ddf54529fd431e8a83b977ab0b84d21ef9b4ae24055e3f2d89cdbfbbf88ed0abf8bd8af482c38a4b1c0e6ebe25869fc1e11faeff4d1e5a3889d14bebbe589476dd9b415f8b4a85cb33e5297e13c60d34d46a7f278cd048c32f00de9d24eb66dec0969d31970a8a172b9de3e48ecc4a2d1ae9dc426fabfacbd83ef8398b8b6dd0caa5a93ef0bab7f3a0745696689147b306f946c8b9ef7c767ebe369d8694dce6a616c8ef09ede07ebcf10dfad08aa9256f847cb2724f3266ecb2ab9eda8707e68e69e6ddeac4939efce01662bad8aee9ab12c5c8302ae44340f3d7d26ecaa927cb345397a39f1f448f1d17a43b077bec81c094e345a5b53250d0a554f0a998b72cdcee14c67a73f4a594fe6aa53cef7c6748239344df83ea437faf5c826dd8bc32171f17d5b760f63aa2c34274ce5e5f586d650c0cbd3918e84dfeb3141d15f4bfc06a70bfb70439ab02a0b1cab58746b936dde3cc0a44b50db2432b601e7dac9c57d665091ca75b67c4f9fa55a85bed7bc79faf5ae7051aa64e65c15ca393c1be6cb3759c2fa156ab3477910ca4a4bac14c94c507f837db6e1628c971ac97224ae3ad21cf3ed4ff657481b47b5e64450761fa7afd7266c83a5f9b4ee9d681c0bd4ae83237e76b27f80ce8ae662bc643547bce9d65a73ea23a32e88ff48ef9999780ba716a7ea49ccbf605e2f713c2cfe8ed4773ea92fd4468bdef8eef4ec2244fdad8bb10c7913a43f179d1f5499c11a0bbab30971ce3b3ccf33fc6dcdd948d2e3944ee787d535ecfb81347100a141e2006a1a3069e1ac498f8a960f7e85f92a80074e287d076311423fcbfc92f5b93ea6575928598ad687a9c180acdef73df90fe020e236a0fdb3557bf64ef2cf9f74d8faeca375f10165120ca67179df3d3b42aef0ee37706713df12592f399b6143ad8a6eda04cb939e4d3f422101396bf46ed367aea97f561b1def2eeba50dfa1df08f614ef78e2bcfcd30463c2e37b46770e66df1ecb767cfda5805bf4a7e91f7804f744095a977de69688c6bb67af5e2b2ebcbc5f421c51e9e0767eb86f6026f99a2fa506d795cd2df6be69ab1ac003365d19d0db9597ad6c167169f8791b4d0de8d7da54d73a21bff964ee6c6b1a2d87f0cfcb07635de27973d5f9ff61ca4f3d9c27b50cf57bdeced1bb4e7e37da459effadf01bf7bfea4dd9a645097a0a6c9f98955b97a7f3fb250b98335d473a428a0d677ffeca5c1b9c16b55fb731ffc54893c17e37d85e8152b09fba5305611306663ff1ac637dacf7e8a2fe2256f588626679e5caf8dcce81e3ae2db8b7b178ca19877fb39f6b77d93b9087c21f7ce7a6be8d10df04ad13a6b8870c624d754a9a2bde85ca27b688f05be0e34a701937f6c3b585983b3d4219e6989d6db5211f01eea8dec74789c99bd585d62af6bf0959604876781d6fcb26723da0e7054812f4f27b8037cc2aa8b6bae09e6afbd5e7ccbf69c55b932827af026fbc545bf0e3a60fcf7651d34df2c6ba9421bf4ae077214e803299be1f1ebf97b8b02bb93a727058e6b42f2f792c8c3f36f3487d05ae93211d2eb55cff628f0c389cb3bb4339733326f76f373b5bbef19eb1654dd5a1a82dd6956bb0c5b79067d5704f5cdaf4b38870e4e345a4f58aff30b6035479a1ff8f91cf51f19df9566cf0bff44a70abf44d7b007427b0106fb6c7ee0cd911d23bcf563a489fed2e86bc0950bba2f92131cc20fbe005919708e002f0bfb8ba6b0ff198d3de078b11993c83b1dd71a1a339e8e630e900ed6c437a0df8def3fb95ff87cdac4383cf9830fb1f6dcec276c63a2b78db0515783714cf4e089cc4b377915113f8b64103737926b53255b251e772c493c7601f130993545fae397d15b1b796b14e73cb431105bf80d8f3377c029deeec183b5ca9a1fb04fc3cd611ecd7ac7e2b95bf67d0e2126bfc1b7f1f508cbb9645fd8c4e0d3fdfe07ce9066bd4472da50a63c7f569ed3e7ff2857d83fafd78ee8be71b980fdcb6089bdc17cf7abe8261bac057d68e4378df6f0da99e271a80809e6c624fa2bd1d5726c731ac8f6cec8b60075dd300fc0f52276a61fec0d7906f59d3caf2f9e0eeb11ed996c06f1e1f18fedf386ed4509faa65436e6580f37e80bf865f5f6bb3f602a3edb769dfe3e93bcbb3ab49f40daebf473bd93bfb3ff8c62a89ff970614ed4989fb6c3021309ae03390f817d228075c664c38ccd3deee321eb0f8cc186e49b7809f839feb99ccb82c8fa716ffd803659a2b6cba4b349b850e7f8bad19b5b3915efdbfdbc4105bc309f06f1693418e9b767af29b0dd0aeacd9958b56759e6b6a67b980d740ecf9807aa0bdcd79c2d94e5a1ef807c44465bd095026b843a5a2baf432cdaae1f87edc82d4bd9a12b255b579ebda23cd3ab7c86c632ead28b7cbe8c5d7bfdad99f38b78f6225fb05251f8acfc89977bbc95887c5a8bfcec1e729fb91f7f46a220a52ec39efd2c7df7eced11e90560db8c3fef41fc299914f661046cbbf893f8426eb1dfeb64578576cb4f83de5d8bbc14b94c710cf9f9717f568f8ddd45e13e277b3e3dedb9cf3ca8b0cf6b9059c5de5ec53e6f1e5d7b5df993752df2abc2e73ee320632701635541f519f9d9f68864d38049ef4816169733e092de256ab559889542a5865161fe7ef0ef04fe45f5e83a522af2bb3c60d6f7d091228fb11225fedcfabc1521592ac8accc73445c576147058bcb5d6188bf299fd7e0f7a7b3e7d04e13cf51ef62c5825fefde9e9d838afd1d5434bc53a93e337f221e7d9bad3cfd33f733efaec44f713844cfda8eb0dbd11a5d0c6d329578ec71e8e3383561a0cfb1a3d838163defe9744fcff1d9c047e29f684de6a4a61f218e736f4f8f7b473d7abcf50832eb84bec9e31e47549f9effedd5758ec7bd3dab43de8a3c6efadfb4197ad7d5b75753e505df2ef63bdab23a33bdb9cee7c31712e21f59464116d2f00e417d81abd1c75d01fda2b579cb5cf2162e70fc6e83e9112ef2ab4cf6703b9bb246053cb830df3127ef6a8ae7c92e0d607eac28cfde16a260d59edece01902f443e45f32075edededbff119466528361d7d71f3f8473e0ff37afb2386bdf1848bd0ff7eb0bdf5f14eb4c9f63f908e60cd6ccedb775f3f62dcd02117f5d87fbec0983cc71263f1b4f2652665f38b67150f07cb8aa966c35959ae70ab1e1f4fe7aba8a37149eca948a66ccec455e35a693d2c01c26b89717946fd2cda961fa4c0477ef13196c24d837bd400db6fc4993d8c5545dfc84979404929f8dbeb6261d354b3c7367828fdf157a863be796157bd2e739585bc558971e93b7a632f20986dfcaaf226168cb9a07a3c649d7089f34807ff21ae96701af8193bc1be29f8b7cc25ef32d39db71cf4f2169c68bfe15b5138a90ced5585ebf2e8733eb7d8ed0de67017eb4aecb0ba5888e7750afec01cb9cf9779234f8be9d03f23388b4f671958674a58ff2c76fd4a7c14d0fc11852dd8a7c016cc9b60b7213e8e1dc61d3f43327d7e103a7dcb66ac508abd16431bf316f57cd48d25d1e5a64897bb697cf24baeae37d9066e4adf3f4bbe9fd261133bd49da52ecbcd84e0e764e5dd75b6107b15a4c04f9f23d90362447bf7b01e85f4cbb4f307373e87fc6b8ef812e3bd9d9bc358ab7b308cc3978238dab8e674c40b87f92f3a7d23257811489fc3f6c483f078a0b9e5e9b3761cc03d6c53251c49e55ce5ca7b8b913e017b698b278dd3837d35711d38e729829a4e490c365c8706ba6eecf7505e81ca6bc60a2e438577eeedb2d83b645ca1772fae3d1c2ce26fe14815e8b57d0cb8ded80b6aeadbad8ad233d4df3e57309eb1fd1deaf83aa82e8ccaa1bf16bb01f02734fd1ac975f0dbafc61c512a2b33c9b75ae5955c2f2b399bb678124807750d88f5eb7177629f76df9e5e7af81071684b489eb98c64e13a78d22b3f731f63029fb0ccbf1ac5f158d5d897425b7cbc29c6f2378923acfc8975f3b8e355d57324bf633ec4b3740fed590238d043dec7ea156747c3cbe1037e7b2fb6b5b706032e0a49e7da523d48670fd2459ddd97e0d2f2c9af202ebe653d02dc35b48e83bc6f5db18f1192e781b76807eb7633b7308e1b70be447255f4f4e5e5b73fe4c638056dace505e9e72fb1091ad982f4291df26bcdcbbcda73b6705ea5e9e2b7781af0fa3cb08f3e750d39787e056ef2f8aacbc2ec3fb2b0bdaf4f1f18378131bfcd38facfe1bc4dd7a70f826990b2ee44bc88e9255638f11db8f5e13adf37bca39843ea122bab5d1bbf6f77d7386e1df24b7b3bfe396edd8f7bb263e36332d9bdfb067d09e2c80c3982674f6287bdb3c82a55e43bdc35502c7a4e7c05ef1e930c7ded047188a58df53856e6adf901e3285e5d6777dae318ff27ce07cd4ede081e2e9c61a231b13e7dfc46ebb1cc45b9cd24bd58ea55886df7c937f8f334b67ddeab64a79cdb954870273e4319fc6faea7908b6ed80727795317c063866301eacf509b88ef8a338a857dfe9ebe9c9076fadc1c6412255b173e33037ce3bd415d76804155ceb16f104b2944bf3218f7221bb982f5eaa18eafd853e0f10f6d4bf3c03760da9d83f2e9d5d3a31b9c7ff6cbd2aff90fdca1b70697a2f73ebc16714f5c89a3f5831eaf0fdd592eaa8793dffdcceacd891137dd441cdb9881efa7c56264bc0c7d135ae337ff3d26623fb68dc2fbf231c67e29b3f390cfe3933c8f5abf1959d8b268cc5ac216ce46e4119edec1c63674b27e46ee59bd845c32570d3793e2d50de63b774163b4372e56437cc6cacdbc264e4a68304d92de1e45fa6a4153ddbdb4eee66673ae99b4589bc087c227859851315a6b81df8473511ba607a1dd5b4e7b7e85fa4bf2d3cfca67c2ca73d6b546950d466ea1033f187d573809d62a557f44aa9eb4585f2e13457e16a6ba3ddb06197b0e32ab0e263dfc3d86c4639ae9cd14a4bb3791d260a2822f4110cfe880077fe8768c105c3fc04df9e33b6a1afaa8c59cecc54df76420e0e2f5ebfcd160a78ff6502678e68ee8f01aabde388133ce6e9c74eb785bcfc1fa0f6b42cbc57bb9bedc238675993dede72ff2a8b0ee0e79e57ec8d77c7f87f57bb628976ae6fdf1a180fdf2693c958ad0711204132b0e052942fb676f6c9271d5b6fd80170e64cc01be6583d9b57bf7f5f4455d5abc3aea2ba30aecbff8d19d4fd9eee5473e9ce65bf56e3f46f3d5ec30340f7b3df9355e1bc6ef971b7cff711b71cb87ec8cc6d6f07be351fb47aff0409bd83c8dbadec8b967ff3df9e6f4d1626e87ceee6490b54fe6922b70fb809d917a8cfa7e1abcc2d51a95ad356b02033c11609f21be4d0f591f8fc972fe72ac1a33b2f6b6fb57cb09bdd693519d47785c13d05170bc61d7d77940ed0c6bb5beec6d8ff2ecedd3dafa224dd3c78567003e46db2f5f5c9492b19c2b5c946a56742331a307d798a3b6efedc5ec4386339265be49aeb7e6777f2eec566bd364a2dc3bef52afe1841dd90a7c41bc78a87cbda494f3ee4ef80d2fb29efc47e5ba3572efac9726bd33f67c8a74f704cfb11fde35d4d756c3fe5d462f6d31e3fd64c4f3f657659c87ebc0d0bec10e6d11faab7db8c3506ed71d621b2775bbe3b1b4635facfb3fd8163f17018e8bb91e568f6fd998438c9fc36f7fcb5671135754ae5511c4c16d62fc1f62df9adfabc70dd21af35cabb6776539ab349dfd92397aee7045aed11f509e5d51df8ec1fa2a47cd146e16ca71ea35ef7af16cfd8767ce1f9e2df1b3dc44759457c555a6a937bbfeb86ef4c7cdd12fb9ce256f3f3d33f49f9f991589edab07783152f08c1703be649ab32d5c03ef9f3d5915eb93067bd79ceb35a8c1e776a453ab85b7c81b3fcc5a5952efd89f0163e61c8cfc043aa2f088f6ce7ae39ad38b3cd9e6e07be65c598537df30af33f51d2ef2bb923debde2197bccbfc92dd4ec4d69719c9e248be17630aceb45c24ab1bf3ab6a5c4a242f7e4d12e0cc03ae5a1efb69ca7a7e53f8e33bdab788ef458ef46fdfc8918c1f412caf9efcf6e3b26ef2e942938fc6f790bebc58a56a95139fc82497b3192b1b978b6bd09ba08d19d9e6a86ffd13152b3aec4f915daf42ada2cacd6959f835fdebcbc8bf83388ab0cffa34476db79f8817d7c2beecb25e4e36d9b542f5001ff738416d4df258380f7f6cf23024cfb5cd43e33c41dde48920cfa189495f50ac5f43dfb29b58babb599eba93ede88c709e49f131f6ced2ddd7a5dc8f3fef07e11187fc3cdedbd3a35f811d36d7ac5d053e79fcfc86d32685ce4c2f7e35a37c24b772b8bfd13e13d474fed4cf557957128addb77622355704119f61f0ab0ab04e8535e81a52ecd5b2b02dc4ce3e1263ff42f187f366f355de76ad1363ec7730b4090d7cd373658477b49f8863fe274a8a3d7216ea153eb3c2b85a7d5c7c4e2cc4781af7cfe5653eadc11f849fe65afdf1eec7c9ef1106e5763c6787e79a9fb796cf1dec64f8379611da3d3d075b531ca51ddf689f7b14fcaa4e80a9a51f73ec171075e5568fd8d091ae9cd65bb4e782bf0e6a33eaeac76d7f15e8f7686d6065c6bcca936d5fce000cf57e3e31017de436e23facfe80a93392a3bc74b0ef18f38b67d04980be17e45948cf79b6770f3238677ef34f74dbae1b8ccfb36dd2cb4f76439545faf5c89fa3463a76b3ce693add6baf04cdbbf7af273be2e5d1e287d597c7c8cf77f942efe8db61c8792dd6899ffdae28363897f36e8d15d19a7bd1f5285506e770d35866cc6f318e1e9e23e53eb32d2016c296d2204e5e9ccf4d8f265fa6aeb34e47e752fdb26ea14dc79e2316a2f09906597af7b8e426aed6a9a77f5e4261f7d8c4f37b73f6b53f23b993bd2a4c48efed5d1a54f3933209a3209be57e16d60a83c61f9d133fb6d4e3207e2cf27fc6b9c9357b5af827ba426bc65e4f0aa3d54b4ab4e741db75bacd7ac4b1d0d92cfb3cc99a6d3edb82ab32d21cabc2f221e0bce5100fea60b9af190fb271a5c6b2900c671378dddd3be57caf97b5147b05e6078b00eb5a24d874629c7c07550e9cc652ec25e05bc14970ee22c6e565789d7cbb3aa4bd137ff304f357ef721f73151f3c6e602ffaf671d968eebcb2ff500abf9a1f0435971d5a0ae259e69fe82888678f2063297f82745eb3d01db1f37d5bd0f780704d188ec8ee04f1a2ea8fd8b577e05b649ef13d05e971808db8ab5c7b4d89f1d016b875c4219ed94f3a9e50ce9f6cdb2b927628ebfe1eebc203fb9a53cec93be7075ec5ff9752856596920f489ad6d6e8ece607a1e743e68c78545f9d4bd9c44f245ed1f8cc047c70910c40cecea45a8c1ff157c32b7f06ace9667dec7e034e2a85ae41d6ea9fa7e13333909f9bfbf84c2d018e9d4b8bd108e728705677c167744d7cc4e82c2e83f7b46b1d4adb9ec5a1dfd5f319ddab7bf00e478d1dbd2c347bfe742e876364ca62c398803fe89fe83bf85ef309cc117c5637edaf7795147b239f1669743635c738ad272a52fb71a63007a76c13fbe2656911f256250feddd7d8ce8c8adb09f241923acac27fd7388548abde1be25e4d5937fe9898eb0ece14621f00097393eab9cb37625d5ae4da73bd28fadff1df441190513f0d7437d81645faae1b026cf5aeeeb80595d3d136c23f118dfdeeffc337f797ac1aa7a7ad36cd6f72caad81b341ae72013f579c24541cca46ce4ff7f7e9679946c977b997bf1743c165b1cd03ee71d47315af39d10ef2cbefba7c75535e6b1cfaf6accd553c49b6c3a5717e41e6e0394aed4fa6d74ca6fda427c13b3d69711f2adeb396ebba6acb8ffbea1ec663bcd7714e05fd0f771e87c08d058e99d9dd3c5c33158b496f4cee8d7e07ba05511a5d9a3b47a99f6fcbddebfcee2a5ff1ebbfe0cf19e60b2e3fb8ab0edfcd18ccb255cb4be9848ae6dfd325b8cd6134d1d8412c7e8f009eb0962cbef29ebb33ae45755b844ebbed47006df3547049f03cf9e25ae233518aacd9e091c70e2791df9b6b502fff0b88c08aecfb7cc5bbe4f53b9c6c0ff21af1c70e4e3e7cffe330d4f6914b5f6e667bc77f0cff4b35d14c4d15d696cce4897004ccdc1da6e8d6c5de02b19562fedbac2931c6d0247f65bb820671c3daed497e70af81c71c8e983fa909386f222c188f70cba0a39b49e94f3e77531697864fafbf27ffc7870fd3eba6eec709dac8ef63f47a20c06fb6ef7cf8046df5ffe5ff0fdf3f1f73f7d6f66dd3c3496c10fbd7f2e56de86675ba3d805a13d572a8206e3994f5890050c96029b1feccd73742f950d362576c0de385e468d3d76a47fe44f76c0a12d0d6cbd627c8c9bf34924ab8bf131176388217a6bed6fc49747e6b10ed1b31bb7facb1ef4fc04f47219db162ab02d4c9ed3fa5579938d4bf45cfe1c953fe29c0fc73a17dabb56a85db4c9f65dc7b1e23d9bdff185dd309d1fb855356c0f5cd7a1fe84ed0c68fd0bcedb8b079c9f4fe3286fbea93fae41d7198d13b4af8fee15ff66ae680bfa86f672adb5eb76366db446be9c5fa331a677e7be2ffce4d05adaf061b4f6f4ae3f70bb0fcb9bfc37e535fe6578ae0ffa97dbbdf4cd50f8f9df709621bd12a7d3a34ab37159edb9e40fe7af98976d3dd9e3f3fb5c33bc74cd5d2e413cf68da05f9e53401cb5235160b777ae27d04389bfd9269bb3f6b9d5f32a599f97ea8960c7d4242dd1c9c5537ed7acbc3dc30ce2e45783b3ec023675cf77ed39ed5dad47e576be6aef80650375a0a10e9ea18ecb265c1426d499947b45e5ae3393da3052e5d9abef0d031c228d6fdcb8dc7a9d99f438ad8765a27bcb79e760ac8dcdc2a53cc31cd703fbe1bd48bf3e7d501bbe5ffe2ef5b215ed0bdb77bf267de3483d0cd2e99b5fe745c845f731bf4cbbcf609c4a1c5ba31f738d37dbdfddb8a2f78ddd65d3ec4bc61f6d55df32c4d634980748066d6d5e60337c69cbeae953bd7dee2af35354de35383d1e5a15a58a23e64a15558af3ca6645958372208ec9847e44dff99cbe18a547fd083cb98f11b74ef58a5ba7575e63c7bc88997513e3e4d6f8ca2399cee3b747c3a4d7e272b7145780e976ece1a91d6d2a5c5b2b7a6f3f61d4105de56ffd289a185d8869069e7a88d36ad6e85e7de990572fcdf9e9c056d9f423c1d8ecaea733c0fca1819b3ed59e700677beb5a2c77874be9d5248d6ff9bb47b314edef755043613e5fc59f993dd1decdcc0dd9d1a06ddd81a9237afe1ed3fefee6d6cc17977d7adb56692f37f90cffa3ef6cff2ccf7faf4f1fbb52fd805ad13afca1cd88ced582c2c1dc6ef1e3833d361fb34988a36bd0b7b7d7e33e9b561d379289e2e180350a7d7864e2f77ababe99891b8c9e8ebe6bcae95746d98f465cc1145edf5e3df8c8bd69f5dc952d81bd173a5ba1c5bee9c94cde54a3ccaf13c17897da893c3901edcda2663247b89b1f8cc31e5acd5d6f748785cf60685b12a5e9e49cfe31e4e38e556e23bec0138b600dbe7ad1c8d53fcbef402bc5b9a2ef9627ccde52ab888297506ecb5c5a379c78c60b6b467a25f0483455b5078dc92fe68db1bfd8eb13fdfcf63528de18ca32ace7625e68e1e34324bd6ea63dc359599e9f73816dfb3136c6712cab9dcf91be6018dbef9986b1311b0295cc72ac2262e7565516e9d574ad6acedbb46efcb5bee54cb6cf9b15ff8fb3ff1a7063c5b877cabd7a5a37174dbeb4f36ed97e7c4f2d224b15443db3ed66bc1ff6c204f6b545ac9c295f26be2a3c17b95cf50efa140e5ad4ed9f28535d7489e985d429b8e200e493f465ee7b7f4f46d5d5c2fc1d3197e5bb57fcd159905197b6df029c631d47be8b79f64bafef97db422e755d458072372f8504e33582988a35f70f6d6f8ad08bbfbe6bc63fbfbc7f05bd15a9ddcf6827575ed59fe959917d1365bfedf265612ad7f2eeca5cd1cdf11bca5e1b7f94c32e20021b23b3fbf401c86fee4a714913624fb4aaf4d88fd03e679c79539c6b0eee38ba79a4d77f8e2ad2f457b1ed8f95e415cdbd31c60091e6a335fcd6e3d457b47f922cfce0a79f54ff9f0fe44e211f7c6534c54e1e235ffe5b98bdec6408d63a48ef9b3dde493f2abcfb3e76cd1784a45be8cfc2ca45d3b4c459e60b24facca75a0af6ee26a7c96d31f135016f103348f3efa3fb1228fb1ead7f166435c4412bbdb72848ec7d1787c81ad7d1c132458f92b99a8ed4f07f303f97cc2aab6592bfc3ad70cf72167489ff1c8ef75aef048e7506975e1d6eae9f8dbcb86e70d1eff341f2f2167a53263e6923de2a72669b16f6adf5f7ef9003c8fc59455176c3f5e9792ebed432579143bca37590fafacd1c506bebca3759ef9ab77629926b5cc6df5e29d098ee1014c8056ff1bfa3c0ee6a15ede301e66ef9c438f28d0c32086f9853de744ce46fe418ec4f160d73a6452c063f14f4fbce4e7bd913ff6b0568cf53d93f55bbfc5461f783c94c5321feb45816345c17997223dca33d0ba30dcb795969bb0d32308af5fa34ba46af52865e3477d32d5ece965241fb47c942d4ed88bba85d886ff97f52a5b8e6ed8835a3db9e13a05dfb2b19ed7c6d3fc753dc97b1bfd4c69f7ceb4f6e9febba8f2c5fb126c876f7552cad3ffdbef7b2a1bceaee03b9c8e977ee8eb6e5e357b97cbbcf92d8f7d57eb8ff7d7f2777edaeb49e165c953ff3467627ff9cec2659ecbe8e6c5df95e1f3c9332ffbe81cd7d393bff38f1e9e7fcefeef9ddb45091c9d7a7255c7f3f0bca25d47a2bc1ff396e3f97c1d8f79c950bf618eeb54f93c0670ece25f96fdadeaafcbf93f3fd78bc9abf7ec9df5ddfa9fded5d89aba583c0fe3ee5d553df95e572ffa20c36774dd1a40e6cc7fb1dec8f532578ce57f33f7bf35dbcb95ff61febf786fcf5e67b6b127231f8ac2d30bd665922b92213cbd44e5bd18a79d9dd0ebfc5e477138652ad774b1d7e964af47a9c29739eae3ff9fd683ebfe15fff3539d28887394c7f12610bf39e6794906f1a624ee25f379f61eb473a75f36d848477183d250dee3fb72d2f319c0d8e71d7f138963c763a52dcb9e6c7bf3603b9803ddf847bf311615feddf842e03ccd5a8875ba917f1877cc9d617d267faacfd704fb7c6ccebd7ab57e6179df9e59105ca27e3db12f07a4eb78b05b3f0e9cbf876d59b63e1ce87d036e627eec9f46f20e7c3a8e633ccad5cbf133f0bfeb6c674ff6b2b355f8437f7663545ecb513df2371f8d8fede56b827104f139f7704c6e4763b24b37eb301687f36233a8c7f99a03d6c9226ff730a5b17374f732856ff4cb7caca316c4e7fd7de4035f34f8c78d1ed462b60843bc5ebdb315b471848053d6ad236990adea83505efdf8187bf63496f5d90170e0ea06f38082f86bb7c350f8e59fca7c5315df80873c0973cc79d8c6314536330b95f33af7b375daedd3ad1fd6bb5fd3e05feca7d42d60d29bcb9883b335b22fe4ca300deb57433de7e7775bb7904f8beedd039cd577d7bade1cc02edce5fe822a95fa63bc7eb778479b6cce82ef73bfdc973e11c3b57df80efa3e58bf9c3e17db107f7b3fd0d73046de00cfb2e9bb0ce9e26a8b4d01717ce7dddd723e1f9e232dd077a37a04a4ffc25eff05a4ff8218b820ee9a03581484476e46f9b4f508f81ee72abf64438873c63c6a2fdf53d334c6be9845c159ba87d5ab72a679db6770be83650f236e6580cde077328d37590a18731ac459b6731cde3596618c6406f981afae061fad1ed61e7ce3b89f37fd3cc1cb3c34dbe33bf4713facc33e9666c825ffd18c8fe77c7d8c7a3e79f67d22734483bec3634bab97ef489ee8ca1ae0cdbdc1d95833b7f4563e7affe13e9c4d85dc8cc4c96c21d660e093c5c33a37b4ab3772f7b36f0dac173247b007852dab7265aa393dbc8cc976ee19c5b73c21e742fc94fdd3397a3bd787f24c8539f4daf669ced6c9fd667e773e7d982b11f818e18c39c0bc8364fe3d583f7633fff460c9fd7a6fcf4e5e4ff720f76fae4da79ddc24c623de88bc17a3df6060b13fd97f611dad5aae644a33c0ffaaea304baf94c69bbfe4eadac60837726aef2cec1fd79ac137194fdf8adb807bf1ad8e54f993e07f6b2f28a3c76d190f7de58cffa7c617d88cff97f6c23cb83f8e2ffa797c015ff5bf6cafbe9f6cafbd605d3cd1f7d1b7dffbdf4cd61fe08b1ffbb104935d149c77487e267ec3c948976209a727ecd773881dcf92b966e3fba13da3f676393ff0fdebc753ba4626e8f83f46baa8235e7cbadfce49fb4cd6f39bcce0729a58ff273fc2460f1fcaa5faf83c26207e800a2761998842eb8ba57b76987e71627e104a6fdfe0243571a2c2f6add5f7c6793ab90ffacdccacb3e74423fe8df11988dae863b1c3a03d7ffd89c610ce7b8c0173c24e063e94701e3969f4aea73cef83fad152ea31d674a84be5f9c82e5f37be2c22a9bb91adaa206327ffb21e1bb25efc757becb2e7f32e8f8cfbad2dc5418aebff8423b394f2c617ad8f61fadc8f4f7890ef2fce1c532c6f8deaff9cd77e99177f1fe0291b1329d9dbb3c85f9176174a69c45deff5753f05f3d9f88e5e569a7505bf769ba6c0f7dfd1cb360efe87bd267abdd7880d4ef76f885becf64ec0b86df0b2f76788736cd72d594f8abddee08be710df08f38c8c05e02fae5e3ebf7a7a82748f17efc55cb2b25ede5fbcb7d9a372d9b8be182b471cdf87da92b2a601778c9df818cbccfcb6cfd81ce934074ecce54acc01330ced03c2683cda74fac7b226e2df96d59f633fd46bfaf7f51acc138ce18acade39d143e6a42f9913bff7faecb7cfa4379993e6629c7c8b31f8f9e7637e7eabd303dfe5c547614f804787e80351a82c3e9e7c0777e3b3586e972b19926f1eedf97e53676ca3ec6c722da794deb31b8ecf827b9c0c61f5a32ff701973d4bfcc918cb6e355aa33e92d15a5c840da6567b0651f4ec96e3738947a92c466bc82a1ada0c9656fab41701a7c5a8bd47b6839d6d3ed946ed3fe4d7fb32d3e2c7bd1fb74dfdf23d9ddd94436d1790ffc918cb357f8139f524c7126e8d97ed0075a03bbb76d39f986b63f85d5277fe09be3bad2e543f6332850b76d2fa5f408c39d9e34f978b674c2f7e4dafc047153f6b3889efb25eee5f8c83ee9d63bfeeeca73ad153e203dbe202233d1873fe10fe8bc5075aef06fc413fc91a6ec7d534e0607a3a0be0972d6f4dc7cbd4dabf13ccefb67cc51744b083067e81e37dbce511d2288293c658b9cf1d2f63fb3ad8d36bb53b6b277551abcb25e4a852d6af2fce3b53f62b3e227dbe50b9c743e124b456c3ba28c64901cf92690c6732dc23467b16ece1315aff2e1711ebe27fc8fbf41cd6efc1f351f98d9cd2a4f9d2c5c2aea499183f4a477fc45ff63c2665c1fe3c4e87feab29d59687fb8dd4f79cc4caaa88bf9c1495573b7a5bafd765e174d4ab7480b186eabef4f20663cd78ba9e6dc4b8e4213e15d293ef45b24e2f0ddc13f2bcc56643d71cd8568aa68ddbbc5c6303f909b7adac9a39b137e8db135f044d30d0852d9a3fe839d8cedcc936df30c95b184737aca72cd9bd9133323fedfb01add0fd50a0dafaa3b6d29d6dae2c694ae670fb0fae9d245696698b4387da749cc6afc4c2ca925c594a948cfa07b041a1ed9bbe22f9a45059591d86dd39bd8b2935f64fe9615d93d86966dae386c172348c8b84ad3c3ebdb97649e4431cb38b3189c17ffd36f441b22ad7025bbe1664bbdccf5605911fb01c366aebd13bb6e08b68b029e1f2f8bbf4b0a62510636539bb70c0c1286c818311e3385f2e2a57fa62169ec5f851e1313bc6fd1daf75b09f36fc74a96a7c3c066525a1f0d76575fbf373792b2b9739e9ec3150b7b8b707c5b25e5a7bfd18a3671e13b4d8b1edbcc57981231c64afe6dc73941fb8b329c83fdab3c55ce167689cf5cb2d703b25857fde5ec451ddd17b5059b25e4668ccf6ebab2c96b9c2831ff6f83dc08985e779102bfcb51df35e2516fb493bde855d2516e1645bf8dd1c387bcff7c837978b902be390236567a49d966b4ae1a5f61dedf72f67942244ddbb9b76edeebfc3dcc9daf6867e41efc73ce5704fc03ceb7f5c63527b2202365830d955484e55e334d4ec35d5f87729420ef399bce74fe5e5501e93861ad275302f861932ec726f8779b8c27b3289c78535dad4615f894dbc1ff47088499ff6fc05144eda014ea633babf089ab6de897139436dbc4579d365fca29ef91763f9bbc92ed40cf5b7cce3ef548c653bff20f67a55c4c0cbbe40df2a2dfdaa89d33601f302faa417abdd8cb1e6dea61d43db5811c2ae7f97f85ae1e9ee1e3fc6f67ef6bdd518b3e5fcc2f249d4ad5db89de70758dbc6eb549eb65c8b04a3a0d385f11a64f0d66d0f71b1546fef82f8f3e58e9342455891b5fa0f75652cc2a908edd9f27685936d0e31b33d7c513d4b580ff50ff66f8b0197cd18e01d517e35e0d71862533631ab7fb6915dff689f3c37eb4e1b738364af31cf28ab39dbb7f68c10c7a4508a6d1662b68d65877e97511b2d9bf1b25bee38b15069aa1093dd12b795d49753fb636766305eb74e2d77cb766c0fb8dcc462ddac19092edfe8d6a025ce571e9a316f57a43ecdb31ff655d9b9de461c9c18b3ba37377d2c3f5dfd9e2cd6fa58b56bee107ba099075dba47d9d63fa30673c1b7a9fe5cc0e30ee3175c7d901142aac5a4b5e764ccb467e431609d1a57e09111e3d217cfc0f14ff639a98d576cda7c8483d0acff6d3a65b1a49bba05781d6fdab90e06eb3a966f20661ebd33a50abd1707e55765e55765eed77486ca32fb380bc0350eb622546f0363d63ee31137e3f0706e7d729e7c17947af950bbfe7aa03108b10968cdfa1fca243c30d866514938de61b186325fc403f7debd36cc4a2cd62b182b97110e5cab6baa461b5bf3f4fe81dc02312e6bd446f49f65978f525dfcbb32a19ee93fd4d3366bb9d5c30631b097e7366aeb3af9a7ba020ef9bfa92b2e77facfe59affba5cd40e1beb1fdb81f98776b891393f881346f3b837cfc631c2856ab8cdfc32c4b8d4420eefdd18f77adddcbbf6efa1fa1a936de14c809ff8aee9b8edc5d3f5d6c3cb986b46f2cbcfe6dfe8b918a7eb908bd0bc94426ee847ee33f3c64697022e9c419f42ee0818f132273e9458fc0e319f039ab337bfa662b31251d9ed590fc41231b3bb8c9fe5681df6b379e133f3a16f3cbfbabff68d273e6f9564594b35de8ccfa784f53fe55bf8cdbe0f31089f969fa58ce748b56b3f8e18475a7c1763890db2de3a3ac680319644bfbeb4bafc57c6de3c136cc5318c774e7affea6c01ef68ff35c0ce2c36eb1fedd7f46410a737dcdb0bb2b70fb83ef05c1b63d28fbe7bf90f3c27fa204e6c7cce948ddf1b0a34ed5710f3c91a8e5884f6bc87ad21b2767b0fce84598b5c7b7c9a79272a09e212e54ffd6ca779277ab6d7e1ba8901633d3bc1e921b687be35cf838cbd1a193bd11c295704ebae9c7777cd4edbdff0cc66f17516a6e1827e841ce4cdfd338e35da3a5b76cbe0f2f7cefad33befd2e0440ba44e5d3cb94197fd7ba180f4a3296b0b6293d7706d3ad5acb0c2ef4b6b133069d88a60c6b1fa28ad31911a9c02569fb4cf6c82276590ef841819cd5993ef68e379a2e679dfdea939164947475f0b7aefe33a5ff7f69495f829bc03eb13e9cda3bcc2b5c35a33491b613ced3369a3f6dc5e73bce6798b5ba55952d5b433c17865bf78dc8e21cf6a044b910d99f61ef8326a76d7577ddf38cdcc9b76bb05934f9c974f8a3f714c9b93f4ea666cd1f08b8b066d7cd974ec330f880f067c619bf59b7480bf82e4b18c4d3c3b8758fbbdfdb8eded591df0d629e466a7d059533e43c5b2458df157db98cf86b34ce3c4ef71bca2ac17b1164bac8cfb86f2a9dc30a829bbb3db7630886f166b927910dab3fc6b411f487fb6be119a4d93bec41c64682eef3047c686a46d6d889ab52369adca35890f534d2f7be9c016a9996597cec2f2aa41ea86edd334e3e9cd382f53d7f904d95a73d214f75b6717d0cc306fc67adf5ea0392bd2c7ad6ec9c2b86b6252ce2a6b927712bb2ceb3226591356b3804a6fc476cc7a19be8fcf0a609d01bb4550d3525b4f6277d09c415d6acdbef6eb5cebf68cd43bca47f73bbbc58956f6a372517dc833f7d533348e7b3618d622631efbaed232c993a039d27e634d0ba4fe2d0fbae6acd2517b421e9befdaa6d175346777c769c16717ca05dc84b3ca06d994b42dd61d70bbb4f23eebd973bc0e903d0b9e9f3bacc73d793e9243d8e77bbb5a73245c8f3e6ec5823e93b5920e7995fd22e31c9fa13d589f5c13bbc61eed7d9ac592f91f4501b52af67678f3ec9de84facaac1d0d66ca95d5b77abb5a939517b6d90b2774ebb8e5a3d7f77d69cf4efabacd1bbb696dd756f9f665dd20ef81e9c2fb30133effad65181d38cfc3ebaf6fae439ebda9f882fe3192d8861045dbdcfef162b4bb075c33add70e410ae34c05214f9d5c965ac3a60d8ea055f5a2f967146ed0926a067af12312e4f9ede9bdb675c2ef9fd77f515604cf7ea2b16616692f903f2c113af1bb4970efc8389e77c569ebd8e42de4a14ee930e18f3d84fdbc748ff5f39def07be7b1227895dcae6103ac74a8eb187bfc759bfeb7d89dbb3ae4e8ba29fb156721f850832c8574e156debbf835bdfc83bcf7f0ab97671a578c7b3667030e6c3369c845c0e1d53bcbcb6d661662eef6717ce5bcf3d7057f3495603546a9e66c8b1ef65a0eb86c42391763b168b803063e627c5b56d1c609c609399f158bbd41fb0d365f70a21e9b8938570d11f316d9a91fa4144bcaa8c66574f6a4118e7e361fe05a899974f7993275ede910c759d8bea16fc3b8bdd14db3cd01969cc29bace7c0b7e51bfc9c0db992c238857f99afc7d742f8aa22cdd9bef955df0f207857b9b2d6ac6bb8e9f341d8d39effede75de6cd42e6a7dfae9ea4ebaaac94c67792b4df1eb00d93f9babee67255e4017dcd1d8346632455b8289799652e194111b418997d6cc3f5a00dbfecf9b38f52332efaf82d238e0d321efbf6d57333469bbe0be8f5c59f48d4d8a7c3e98fbb7efc743bc6c9b908c6981dbf3beed2a5035fe3f6bc8b9c6fc05efb431dbef87f5387f57a6f4f513d2e7ed5c3e83bd16b858f402ef7b31064dc1dc1a6d1ac63b1e7e7631c0556e74a54c6bdb13b6bd605d2a1f507ef8926eb65737caf8f2fb1a033bf82bc956797680d613c0b62a1583d86fb0fd75953bb33b447aa393b0aea86f7e42dae27f8ddb3ba9d40f9fd3350cdbee65d9af5c2676648f7a588ecb3ddebf08e27df35cd5cf5f30d7c92ccacf71e8ac8a5c4674fb37392afc5efbe7bf81d64ccad8d3dcf56e1828e46f7894d9ea647f71b7fa3e46539abe6bd518adb05fc42589331711db3b4c278a39d2dd7c85e3dc3f9b6245f6f9cb2db6c7c0fc60d6b3ddf6fbeed9dd4b5375e497f5856af9e57c0bc6ddad57a7af7e81bcde829af61a7b726bf4ef2ef9df5d630e8d4c7e3e7ea3952eef169ea1bf4dd8fcb731357a30857e8f74d7afd45fc5bdfc5d3c7435d2cafe42f5604ec83bb392def2a57363efbefaa5e825ffa26963efd6c7617973be063ddeb62d1f8dea1673b4e2c5c34ae4e97786b6ee3835e8edef571550df1aad6bd77c510ff52b4beb2a76501fe7ac625de6616d2cb5271b9be04595a87dce07ddcb6eabd2f51e383451544c65ec3b8598ecf802e7787dffd52f54775d0236a2f94752894374f282b8f4bee0adfa47fbcf775c72157bc59aa8b3e3f6171510d8a25e73d70460cb663631e43fced09624752ad9250fddf55c2052f66b3443c5d6ae08735e671906de34d2c517b4ecc0f0e053cc6805b510f3037f0bdea856c167f5a7dd9acc38ce9e44925160b8f9976650337ea7220ff2919e06e802de2cfb26a539fbe5fddf05dbe3d6df6d4895f93b3ab6c1507434e8f955f3dc51ac2195fc82f5fd8fac6317ff4c4af5afe9d31ee7dcfaf11cfef10ed5b1d5fe52ca83a4eae160bdf09ef5ddc688789ff14372990f29eef0f622e9b3af6743412c7d9c43c92e79d8e8731ff893e48de4130b0713d1a3da3797fc739b16d7505f20c7cc5daef1cf1e8fc20934a806937c4ad7ec59df2ad39e2ef3de0c68fb80580370fdabc4d83dbbba47a5ca2bdfcb8ed713e89763309f08e463194f7279fead5fa3ef0b35b2c4779d6ff9c87a3ca917cb279b2912e1e8fc667cd43b202605b26ef2456f8e4d969f1ec039ede5fc4eb10be9a1fc673d5f95493f62b829a1e73b07671787076b98b7afd74d74ed4438abd88fcafd1ff8350deb505b9bf20f717e8fee3e257054bce7e7f1bd9fc62f27334de91ec5ab806f55004958558ec17bc127e65969ea1223d03b014957a95aa15a4edd91830dfa767401a4aa9dd07d2ef06360ddd6454aebc697649c9bc89394305b39d037e6c566bae8ce41acab829b548c97a59cb359de33cd7bbcc2f911e1e29068dfa6feb57512eeb49119c204fadd44ba457d69241956a8cde8fd70417d7a591616af4de660e05f10bbf46f4aea1ef2fb5597c3ce4f3f6ae1a5b465d2493a11fe4e7387db95eb88f8d11fc0eb939e41d7187dcff16d710e3930eb0da7f5a0b31f6698bfff20237a3e74b82752f740f9fd7c33597b6d818de60fca5b53c111bff81a2879bd1cef33d3387787fb4973618058413e0bd87c9f90acbb4f3cd8de775136b49b806fa79efaa2135b1923fd793cce12063693fdbc2581faffff2b09e0de6682ffe633e41dfdb618e0eb04c7be9ae95521f99752f4d838ddad67b215272667e0771838ffa84e1d23b2fde522a97a7f06ec05d7dc26a69d3a2be50171fbf711d56a9dae1ff8cb051f21f700f8ed3f56997aef53c95f56bd5c7530df9a8f227c11163475a481eab644eb2fcec7af327e14d14acdbded90286a2ec0ce35077fcfc15b7771f3beeadeb8fe19e2293b694cf83f5f17bdc7f92b1ace493486f0c295dc745ad1a266a5b46c6fcc9a37d7d5eaa71f28ee6d188536534673fffc15f7055c3fa4f70bd0c7bce1afc1ccdb71af84332727d5663592f3ffd9a56fd0a7c4b7285cfef9a59de65e0b4488a5d9316fb6c704ddab012734568d3ae515aab499b2e515aaf49fba58bc333d795353a434cabd73805e1f8bbdb354279811d8ee3abd67ec815715049a1ccbd684b61f52fdbf2051603d9e7ecc92e040edc33cdc2beba8aee9ab3ba3f9dab035e6de9f8355da2f6e89defe6cab29f674663ce91a4d099391bd8a8dd312e05ba27f1cd3d62c7d0cb7d53666bdf45fd6b93742d1fcaf07c5dcf86e3de171a9c93195e97b8e4beae52fc4dc22e6a78c4c93a5578f692fd9aacebcd694b2982fabe5e98856f5ca8b55e5e3627b152f8edbb7a728bb0cee12c4d5952efaab16287e7eeb3481ec821fdd834c06d2d5c6797879965ee6d3a05feeac5b210f5d54d01ffeaa1fd25c8962f31e931bf6e8239d0391c3feaea510e73047c94702c43c82f2f7b7d1605641ea0bd59737691cc2737d7512f6276c47cacc6207f82f33f06f90d9cff34c87f0e20bf771ae49fe1fc47d6af1fac1fcfeaa07233bb02dfa9bbe39473bf2e6fca59cda4b48883891a2b3c1b1e8412c94da5147be09b85d2b9467953320ad2810f170fdcdc7597ee08e902545e7684747bfe182bc21aa5a3bb745b481742795b48e7f15ba42387639e2cd1a06fca39c8a438ba6876343ff0ea5c33969027ac2454ee49e3a7b7107fd324443a324de50ad7a47fb4e90d1dd21728bda143fab58174fa153d3ff06e9bee0ba7f3b10f7b99397aeaab29c57a7a79b1eb75a8e9574a3b7d14fb554139065d29fc2c1afb27ec9f704497a338d33e27d1f62de497ef62d61bbb234e6b381b4663887b44633c1f9f593e6394123c4ee0d4b7212e10b5611fef31d5180baf2f719442fc9f41a70a1aaff0ee2dd8d45d7d56034f9db1ccc15f7314cfe3daedbb811bf6c5fe968f75da7fc6294d3a3e83b8e3def1ec9e7e9cb1f13eb34e2137e299e230474b630b97f547ec66ecdde7adc88f5fa54dd8904b8a9fcac31c4473d660a4df9ebda6d09c0a98f4ecc7d1af835ea6ae0e1cd1cd584d611e65c487d4366fc104b89befca795dc37505787c486eaddc26de8a5b014e8cff639c7e52ec315f229abf039ba9cc5d9b98ad2696f41e4c76edf93e5ac3f01abb6ed758b44e8db03ba3e17e15a1f10d9882dae2233f088fef51cc6ce1fe1ddef48f38c44f58bdc633d63460e7e825d24fd8008df19fe4248c4f55f80bba6edbb4917f618d5c47afec1b5edbdeabdaece127f5d6a00c730595942c101d8d3759d8cbb8398375449345ba5ec8e1ff3ed6bd4e44f73a11ddabd21cf32d04dc722fffe2ad445ea8b97296d2802f2397312f0afdb869f5c7b7c4cd0b7ca623c6c00d0438f7e2553c5d62b45e6b8ef5ea5b22cda069578f32d998c70af87c89858bef8dda63c94219bc9bf7caad47e58e74f4d7e5eff5223639f15be6a76f7e75bdc995e4e1f2926f9957d1bd935c49ebeedee3cdd5af855c49cbee9e353f08bbf94130dfc4740b3e70b25e5c3c83ad81ab3039b6f7c2055bcb93edb79850dd3d946e227e8ba94aee25ef62faf1d871121ef7fc3ad2ec55353aa76cc7a7cb2cfb3e4c79109727579f45ee596577f6bc40cf5d7b9768267b57f87534f02932d7f85eb6aa356bd7fe36c63e0726dd3e333b1b99ee57f85d01d5d905b6cd3b9db58871c3e8df5d3aacbfefb2368d437c4bb85e598d5effdedea31b3d57aa35cb6beb62139ddf26ef6cb1254ef492e43db8672b76b332d5cc94e4c3bef79a65916bf0531348fa277b89cde3b27bb641a74b8b6551cd8c4859580ed5cc2bb9c6df2b9132e0ec60a2b23af9fed67e69e5a46fb02caa59aba63cdab757b7bd93a79abd8a709a911f975db6f75fddd3d3b5669c68b40ea13a37f15eac6b27b80efdbdcca0e93d4e47f9545afb0d3f01b6690fef55c7fcb5bdf9b3f06ca48763df83906725936a7db02e72cfe62c72d1cd9fec7217d245291aeb019f52ae5dd632926bf8658edba18cfc2c600306fbf7db5cebc749fb593a6de326bbfbad4f571b2b793e0e62a250193b81f8c473922bc6433fe2ee8c7e7a73982ddbe75dc03e9ff8cc6887f63ac0cd4fb0af322e6ffa6fcac3f10b24bf20dec2ccaa0226bdfb272a56e369b5d1a79518973960bceb65a564de0d7c8804116cd29a99dff0efd554737615fc065f4c0b7e87ceeea4391f80dd88da4bb34b92b7b19fa770bd77d6c467d04569dbb1e231683feb7c38359b42d749e848d8afe2444b01e095a775ebab679a284d77c656d307bf2ad13a06ed6667eccd33e813dc1bca0bac6fe3f705145ae3b01f9ee6acab7e9d4d26ba07e72debdbf3e17bd05a74a2a7b8dc5deaa1b16ab63e9c0cc466b7fca3edfd19dc6feae1a8ac83bff9e94c5bb3a53b69dfcab757059a9b963dcb4341658333d2b9c667c596ee4fac9bc7c33cca5dd47f6729f5f915b577bc147c9caddd25c8ac7acfb385b7a0ef9006b01350be55d59d6f7bd0068120dd439e0519af1907fa6ab73616d66197d0a6e65c975b6bb7b296e97a67b1aa41ad3f8dc598976387b92174b1d82d57e6ceda4986691d8c25bbd89ae5c1a4ac8541cd9666fd433ee094789dd7b0d4f79f31ea315788189750c7864ba5e11511e3d2d44d1add6feb47bec3d8996bcd487646fb8cd4813c5fa3babe788fb3332d6513e39842c5ba3a8e153a625cae0d6a66ea837691584590581962538698007e7c9caeab84ccd3f2450c61fa4b3c5bd89689e399e30d33bd791cf02147e3f5a0afebec71fc1ad22581d7d21d63de0f702877acacb73e3eac1f1f4bc2477cf3e3a8c25c8bd793cf94f7e094b73c8e0193be7b4677ed3265144cb0efc0e6dcf046967528a4c5209db3a3ba723e59855fb248876f7c643d738df6ebf44bd8665296dc5c7d760a322b0a796be13333ca73220a73a9ab3ff9f7a2bdbef15f463241bdb7c3db4118b6b1ec10dcc286e7f644958a20bee6d25c5c6f9a20fef2c1cf09e21ff03919da7b80afb5cf9d79bd397adabebf3fb7b06f243bf153247b7da6c179376b304d3cbd6c781ffcbd45b19e75cd1dbdeff3033c1851207c165f8d0cdbe7f7ac5216e905e33da287f7f7eb60f4be59108f7b7b7a0cb97f5fd7902b2b54574f9fe57eb64bbf962cd2c5726df1013e56f6440a3567e70729950f7ca44087967afd30d42d3b9d324cc3e5f0dd8d0f785075762675d1f8a275fded3116654cc29b2948f780b7aa5048894f3970c4e61b2699a3bda8c1a2dceba84f4da47f259e13695e1c55369386b2f17848b1f7ba6dce5dbd7467bdf2cfd6d573a408c985fd368272405f9ef9417acd1d8b62c3d515ee3b7adac3e09c8dec748f916d640bbc32bebd7ac87f8e8fcd956c797327520a7e4c769962be8d8852cebbc8ab501b5cbf3d2779f71caa08b959140a3b34c70bccff15e53ebfcd219669781e7afad97e3be01b3e0ee7b2557836e6e7f0627837bc6f735631f66df37e872a3c3d01dc2e255b5ff67699c87a3ae438e7dd811f467f9c8ff81e29255b51a12082dd5139aff3afcc04cc59e5bccb431ec94d0f36d4234a591531ac47c0590de9628593a8bdb32b3c5d0a4157b659882786f5ce29e7e26995faba38c0f4eaaf7d520c1877681c1468edc1314170667ff2f9558db1bf4cec8ba847378d997e8bf107d1d5aed438df4fed299ed78c5789455045bf82c9aef2996bba89a553e848155a0fb60c5bf813a4337bb9cf3fdec56c4d07484e38ef16b096c762d1e4b3983409f9e3bb78fa880f3a1ac3b8fd82b82c14e1daaff7bb1fb76b7a2d0beae58b59df7d9ead3667347ed03b25682ff29b5550db4d76339f37b14f44f39b8fd2bd1d5ec2457e528430f784dd6593a9c5174f17fe597d17b3d67f78124e825b58ab377f229d955a7ca88b8f7b30f1cee299ca157e39de27563e6f11ffe4a62f1b7fd732c21841788c059975931dead906c92d59cd5ebefdd4f6ae3e437b518df68920c6b6ae712cf8102f0e5d53b96ce429dabb86e3fa389ceb3c9a1bbbc8ab2f317c635c92397365f6b635d966ec74138b0f71f171544f5bf487faecb4e7d3c25be47e9b17c9839cd8ecb7bfbc2c2dfcc525f6c1c75a2cbcc525368c8fa3ca1fabb5e056ebe5f1619d3edfc533cd2ac29572ede05d3c7f46218ff41c180fef5fccf65d4ca88972da96e2e2785b1ba9aa1ae25135d49b6a84c59a9bd21b9da29493393516cba9b8583e7c8e62c4857b5dc7e8fff2b65e2cafaa3ea554e7121f1c3a3ce880f335f469e686ede756d1af905f9d37b1548759d0d567e2e59e1372fe04c6ee51e53eaa35fca17187fb78935e9bbc0fd7d95d7aed9921dd7c134b37a4bf8b71996c6269ad721f8ffd42a4c29348e98b7fd31e4b1afd3716cb0a7db7723ad6fe627b5b1bc911da65f92837dc47b9e61fd0168ae11ed7e7611bfcbd1cd8b7558aaf7c6053914fd1bef1d6eda94477b1babd8b9c05fdc2760e98db697f2fdbc4cb87d2e75eb2a5c2332e91ca959320437a35b916a87c73def99e45b17e5c5207fbefe4d4e08cf619aa78a9d75612e8fb0dd6b878ba76f2acfeafe4d99ac8b397750c6751377911c0f9931fcf6e8d2ca954d4458993bb5713bbab81d22de19c09c9c42a97142ee4fdc815de65ed4aeaaf8b68df8803fab3f26c2fffe2c442cc56100fbf5fd03fae0be1aa78382ff0aee50afbee7bfaacf29ccfc2b5d7a92ca82ff00b86d89221cf5a81f0990609f8059098e4e4163065ee32e6456dda85b746f2c676b0b7be9681a7a5147b8d1c1f69063de491b7a8b7210ffc2adc9cafacc24f594f9f257b67fdf0f9d50cef6b48a7e8e34a4fdff668ce1bf90de47a585fe9079a97fe798b74d8b4c75db60d32f61154e543734c88130c9955e5ada4d48b8f97a15cd0f104fbf5784f2e69cd366fee79bd0d322bdb3b47d45768efab15bee3afd70c8add2fd8fa203c628f4f19f1945f14e1a33dff80b3461df83332592fcf9ad99c9b4485922d7359308b01e7f4b27d7e52b2bcfee2928bc7958d9c7909e25924eb114a9f6db2e950afca9617598fee0a1f209d11ce9ee4818ef0d17126ae609ed79abd2d026ed4fe067d5784cfbf5f6f080e3c9a436a95147b981b2e8e93888f138893c0fae21dce70513a7c6e8be6d003c997700fcf215fcca4da1424b41e4dc5f811f7bf11ae1d3576f432d3ac22fe12a202f0b2fe3fdebea34d51a77bfb03fd1703d8dab2ec46c94690b413504140790654f0d3bf579d2aa030f4ccef09ef62aeb19558e1c4fbdc47baa13d5600af4fc662ee0a0e38323e825a0d75e9c0933ace81eba8c926b3b2d7b632e9d1ebac7a730fb6627f7ddce1186786d6059d27bc2f6b35d93a6ebc38cdd0da6ce70ed90b1af05bcdf2de1a9137b0467cf4cc840bcebb33b1120f8f3e373c425e4ab8c5ba3dbffa18b7c0417d09656f43ed6b62452e77383ff7af6bf15fbc27968c639689675769286d0ef0b751a54bbbad53413ed8953c73bfc646faf8e5c33355f745f6d1ca50e514dd9518fae5fe526226d633a413e651087bf61c23d9dce4fb908c68785495584176e0c5e5444693829c3aafd605a554e284fa7d93130e85763c7d61f8af6070c835e9507463a9c0583efe8d749f77ccd3bd817c87ea736f549f0f7be7e276fe731b8fb0b97111884cf71cb24bfc1fe0e939ebd93a0f06df85eba4b84ed7500d7f806c90cdc535d9f3bfb5874ca47f12d04db338b9ac076a1448873e1f43dde3926a782a137f505e978e0235c78163a5868dd65dca87e0bb6d0027ec3af385cfadc1d6a47ba0faf130096db6dc996c4af0c98c99f1890732e523d725be9fcb7ee4a38e87a5eb1ccef8ff2f74af0bba0ff462e9efb57e9f816c78f524e8f7730932f1b2bde3dc38c46459ba3e3cbaf47b3633c097190ac374277f5f83d3fabe74cac893d653788f0d5c77e4d7d57d6bb3375f4ab39d993feadba6e7f31962e452826beca661ed3adf67e8ef8dc7ffdc97a50ae896b52d1eb7e097a27b598067e9ed3f88c16fe8b1bc00b69b7c2632ba0862904da26bcff13dedf509f7b7e9db477e83a39115a407534f0a534dfab8847175d14f41be97abcf90b3728f8b98c5f10bfae6f89275591c455ec75c7fcd39f9823cd71add0b3dd7c92dfc7838d0e572e0d9e9692baf4638260d9f7f6f8df67377dd04e7c87d5bfcd0487e007daf4b49fb19ed15c8354816af4be2ddccf8cb8ae3cb40e2593f5bcb4126deb69377f382b985b746f4e923bd25a527723cf48d35e9ef307f0b7e273267a1306c7fa3d7fae378c37cbc1b6f6188fd27594d7dcc17d9701313dfffbf37b79e31bc7bce5a247354d0f345e41f9261f7b0aded551d3c27ebfb227b2df7a13f812dde7e7a4f2a46c2ef06cc0feb9c67c3a995789c754732f9c5bebed8dce612b20caf4943df338603c7a9c63321f9ddbdcb26d74f21f6ef492c1afaa376faacd64f791e74b6506f7f7946caeb32b2a5d76953376d91351fdcdfaea35acfd828f871afd2fabfe47bcf43e9d75018e67ef2176390b663c0fd4fc6404a2fa164d501671d4351453a71f436be8b3982d1feff407659280c87c8c7f18ce1876e437f9c543f25a55f572cb26b421cf3b9cee2aa407f6f253cbefa1df79750ec69a6c6e25d73d667b059703f333138a9c0c161663ca320993c98e7c85754e4f55591bcdccf5687ad3d84dc3ad2cfd8bf482f0197269ef10dd8adadb43904e89da13f6f952a71f249b0c7917b9a9d833af957680ebb7aa13a8a34232f9675742731e66269b0051ad3a57dfb976bf077e8432e24234d9a8e67829b69f286d79d4d8e6ca2d000bcc9bf829a8f3a1931fcdc4df25ce33e8a9d995fb5818aece138b4d3c29b56d1ceb66af44c41967efc79df29a0d73c6e73069d6914d5e3feebf4e8d077b06df1efc92a12fb6e742ff0d94a637e6b0c6bd71efe5e0c20ef6af98dbf6fafce7e9d8ef74294da1c1fda5c72f1076ae2396ab8b43f28b93d841a555f4a479ea5467e56fe41dea417ac0ffe2c77a83876233b538d3c2fba3f1a8b87fdf7ceaeb850354aad5de1c7c9671023bb6776de1ac8c6162fdb5a014eee665c74934d895d57049955fa032f5ddbec2d945303fdfe07b992fb71f497f285aa977ab47b06e08fe37e0a7fffcef5ab770e6272cd9a4d17dcd0df5a2c9ae30b708e5a6588f606fadcd8e2419c76711129e16702f2c169db07df7f83aec978913b585f8363ff19fdf8716ec1bf863cbd650f13cf46fbdf4ad038a8b17751ed71b43499dbb266caad99a3ef7ad7f35ee9a8765d23f989d661f17b69a367c7ff74494cbca97a0db2751a24d8fe7b113feae1917703125f3e7e158d9c5b1cbff90547e7cfda9cd0ff2d4dc07a36f7e7a16f5dc6d79e64d5cb3ec73ad4962919791ec0802199cc14c85e82b1bce7912e7f4701e41ed2ab7fcc7ff049cb622bcf46368bd668745fa465b87f2f279efb9873c8fe4f900f87aed3f4bac07195937a0e9ade180d9fad34e47519eacfdfeb95235affc36b0838c075bdebc5b5a13e0f6ae07d39fd443e54c0f18507b8a0e01c0a45ac90eb2b82f25b2338124d484a3f4e7ee3da08887b026ee7cd73f4efe7b0bcfe92c7b388a1c7bc4c7a110acaa7d2ab41589d0926370ea9b58afdda1657bc7758555c6de61b87598b56ba5e9a4c653a4c383319f5db1479c56478dd61c73fe6311d9637d61b716289fc746d791b93e1671b9697cd292fac36d5de98f24b83e5f77a363f7bf6fcf77a3a173507c6f66fef7f71b92875b972ba6236103b46be2bde53bd7948b1be46360bcb937e0c9d2f857cd1e3f4e36d0c96f8accdbc030e40e22f9e995fb489c2cd8ca4807b0dd6917f5a8d204e7a3c207d82f637fc3dbfbbd0cfde97d7697044e74d070b2329b692785f64c8174e6e9a51e50123d641260ee13bc095a6772c9f9311f8c9f7007fd73d27fa9e5b0849f1a0efe0be0b739aeb5299ee9c19fa9b99438f51f146ee596b4685ec4bd6e536e4f855aecb900384fbcd812f658d74c71dd9c73ebcf38c99c749817c6f72fffb7c12e4ba8c7b7b057778bfe1027297f308f7194cf2dd80adf7f2ed1c1cd9c1d6060e918b533fcc85a3be58d7200fa9f97aa78f3b5cfc8b7a01c0caf7f0dcb635de0b0febd7dee4fbb7eb6075f19ce8e60f54268018f8ea3e0759fc77fbf09fc6e2090685c5b192af26065fcf1f62f08f35fa54cfaabf890b77756f6d2c7776d99ee61f9a71c0b1def8292efb14a7dd63bc3bc49b7e88d93ec69e9936c6e4408ee08f315134865b5bbc84546ec19bb077d0a7a7300ab2b5e1d9ee636cb0a0fdbe501852390aacffe9fba0b10f8521e73a6aeeda4306f2e4c2300aea2aebc7eb6fbf942c2da197aa502554cc3bc731ef55b1159222a062a3218e8d5e74413dba8e9ae8369c4febd2f658b76ee27eee53dcaf89f3e912359e661e6942720eeee3e798aaa1d071c7bb66e6375d1ae7384e886d22ef293ecec42bb476a6f08c64fd7ef19e509d96ceacc557ac381ef9671fa110c15ed3ccf2f4225e3841ef6b4856e4418ea739a7b9aecb7b75355c5a454cc5a363344e0ff9a508c7b999ff769cbb68e2dcdeb117e72eda387776436bf439ce2d231b62f532ceeda2f113d8b3678b8987f9be6fd43ab9eb27ebee6dd8d4b7c7b9f68ecbf7541e7b63d7bdc7c893595e332adf13999fd790ec021628cc52f41c051a1724ab17a7af02e35dd6b5677f8c9e654094e99d6f5ec3ba7efc5b2e6bcf76014b83d6fb6ec0143bee795dfa759534fb1d62001c73f1a4f41e4855b423bc744a32477b5869c68bc48bf74b9b29dce35fe44c32e84900f838fc37b657c9e7047a9050b8072acff2b184baf003ab20dd7667334d50cff358c9f5e986ca73dd606e950c3de7aa24d7cc7571f6f698504a195fdac4ba5cd2f9bcd14e66727d3a7e7b5e30b0e277e7860374eefb7bfa528a7cbf62c7ccafbef37df533eb124eceb16b00a7e7e2293fd7c8230730874ff7534e5ff1de480ac364e9bc4484740459e399cff10c59e3bfdf5e1fe41d0bbdbb7dcce7556cfe37f23bf66abca7b19c41b27b7569d6832e1de0189f5b0f21cfd98b7d56b75616dc7bb2e0d6e5bcbe8af0f82ae7a5e4ba9cfc200bfe24eb837f92e3e1dee478707e544e8aa0763325534fba41e5a0e419b22590ed0efba4f79b74433605fa2dc6f111a5a475890735a3ddfe5964875f2f6486a8cb65379ec73cd91bc9c893db7cd2ea9d7e50e26af594e3beb39fb0cfcc733473984fcf1846ddfa1aa2f7ce3deee3bc11aa4fc3664f686e2cbc6f469bba32439be09fcc7ca94fd5ab2727a3b551cdb6f6f0f7229915165a1f937ca14fa3d4b5c13edfeb53efea0fe0b3aa23fdc7f09ce7a885eb24a3ed80798b552636de6728abc3dd40c1f69a99e47fb28371fc212ab6b602f830caceacff702fb013d13d7429e17bf66d670fdf3dbbcad4d8ebfdaf27e45864cbb4e3e9660167151ed494a9e3bd948ef7531a63a23ed4f02939d465f6ec73feaf6d623f1e261af0ec29f10fbd88ae38664ce50e0dc8bfd72ff0d2678c7103bbfa5d2c8bc26ccc3adef6e334534f34f68dc633179563f28f588f11ee93f7d0374f98f2e1a4abcd0985043093f09b4cd6affd9ff90d3373d6e00e38823b38cf6b886f5ff4ece3ec76b88317d81de08cc928197d2432fae60fbe4136eb36d90bd067e9c0d37b1cf4cce9fb1a48684f289d0e9456e83e1f60e3c0336e725d0af0fa446ba48f6769ed3e3f3e20dff795ed876cd123c11bbeb2053106f3954e6f753de98f2babd7409ee16b0ebe6fa47fd07d2bf103e443f826cbfe073a2842fa02d76ce2f5a2cb1bfe01eb8ac69ed14f736667237fd27dd43909d14fc9ce68f40ff41e6d703ea725d22f68dce5ef34882b74adb33fa0f4853486b909856a08f1d5275d0d7e473bc748f73af7de31b1661c725d5278ade977634f7f3518a04536bd2099bd755667256662cd48c77bb10c75f9f0840372e35ba559c5cd31aac183bfde1fc76eefc4be64654d9df592fb003e38cf067eb818f7f3016eb81a7249e4b806670cbc7292588782325232eb82f4ac2e0d794d3e144efd1277c401ee489ea1750f3afdafed5ca3aa7dae4a17b1caf81c5f84527a533a3cf05117d40f9de0d530ee5c19ed84aa871f0eea0360a27ca3fa506337764fb33290f89b3ff0d2a08f2d19e0786f90eb72c93fe855bfb30ddc3ff9ec7d1b21a6f73ae9cd78628a40005fe6d7f375a3f3c3bd33d0e929cb37fea36f403c310aed8a21fb8ddf0da871989ce32083bc7abc37cb54cfa6afeae74b5d2e1bfb7fe4c595806cb445762836537eb5995a86c3f0d23a9d8bd624f767c2edc371deebe3bfc3702977a8ef21f118d724f11888c10c2f9a34cdd17e26f198626944e877740efa9f437bcd257217e91defd8c4660ebc5d237f15e413e56b2a857242ba19e3ecdb358463199fb816394732f91290da535d5e5f7dae62b6ced7c8ad87910efcc0b7c27566e4ef0697bddeec9c6f641bfe1117f810df6630e62fe961fefce3b8c1fb5d80abe441a685b89e00bd4be1f7f161ecb256712dbfa08c42a8b747b6387ff5e5751e0848ded1ba7696a9d9ac172bf1ebc6a63ebcb499bdb8b19993bfb099616d63dff475ece48e7c54d7b8f56227fe73ec2459d6d49c1dcfb19759a927a991cb1571939f010ccd8b78ca9a3a5697bfa09e2610c14ebb2f6da213a5800f848a23713f0e74631b0364d09aea636cbbb574df3a39f8c15b795dfa625bcb81e6e0790d76dc0cb8bf22d3f06dac1add9b139b0afd8decacc4e48605d1ab107b73eeff486f166e1367a16231582fe235b49d74b52a1efa9c458c6f57267a2f5dfe42eb2fc7f1a7079f4f845c7fcb2f827418cd75e2d46ee6d4d507e4f89db9dad4dcea72d03b6e27b8d94ea8c4469fe31c7ec420ff3e1486d41854cbc6475cf57dc4e5b25673fff4cd22b96fd63d5ffbdac405fd075f3a34866cc051b57d06d24f53bcee4e6ba46f546f529c7d6a7fecb0cf59e8820abc1e809b84636fc807173593bf3cc7244b5e17145abf14baa094f4bb22bb4031bff2451c454ba7e429bd88af214d0b1ff866a87dd7e8fd3fef9fb36654678c5998febcafa7b3bfdad766dcec6b584323b7ae601f2cb2558163d11bf47fe44df98b2f27c827ccbd497edbcb95fa4a06787575d12505f9c07950b38d0c2b42f0a5d3bb6ef7f6c991d411a1b93f225dfef4fe36ae0d52625c8b0ebe0c3b7e11fb027e6c580341c617caf1ad8edceb722979b695b89978dcdef3d3fe6d1e02cbf70074923b00ffc1290bd7c9876b2762907dd5c337f46a083ece737395b71c46a466b7d763097004e2c593f8d270d66990898c3f50466f6b1d62c021243ec7aaa164d5aeb3be22fb84e051ebe75a4e35f2b3f5d5efe1197bbe618df3d3ebab6ffc701dc9e2e033e4a6569ce6309f5b63483079ec67c70d0039bd7a162705c104e07c9e89fcf2791a6429c68638efde71f8e94b7ce44dbddae7586dc3f00b9ccb031be31e4a7ced590d7f04bed71cd7bc1ce1f9d0ba72d624ffa7b0c82e09f038e53e37c4b9c2e30cd92127cfe6cb7773b7e328ccd404f27177c8375298a44dd6fca6dc6738ff3cf06cf5e4c377c1506bfe9ea69740b698b5e3c19ce3dce1ea869f61f8c739f7e3433dbbcf908da6825c9ce49fb05eece12d74d673d71e461e67d5f8bad3fbe37d4d5bbcb876d8e44d19c8b98916b3b5abfbe2542641269efc6c5dfb832f32572b9c6bcdd66d0ddc46e2ef5ba7cd9756f309f0f8e5bedddc77c5c1fb38ebe916d6f69c3a36c8fbeb47c1793fc047f1f87d32be76396bba75d4d41dac530f8f39b3109e72c3f57c724063616f6d6bb038951b247343474df1736caaeefd45c66ff3c39b9a1a97128d076031adefdae7c2dab51972ed24d7e53075b3b030a5f4b2657bbf577373d6fdfe7c7e05fb9d3a1fe7b8a7ecdc488a90b3628fab4ce87f84f3c3d5dc74dbe30d9b8d3c9c47aee7c85621df638c6a94bb8319f96d9aeb228fdf05e6f136da0d307f05a9d724f3e8e68001cd42bc4fa5f44872cb2cc43a32c04cd7682fe2ebbab92ecdef018331cd5b7b7e7fdc1f6f383b8fc160dedde335aff8ca97ac08b857a0ff0d5f405e41f6d200af950370876529e7daf8fe8a70182b93afcbbc4e0e5bdb3da0b5a248c3d4b35787adb38a41760ebc13ccc386608d4ec9e33e62b6b27a0deb6fc007af2126a0e0ba5706f057926bcf197fa00eff8637c6e72ae4571d5a7917031691db3a5e44e4dd419bdc0e33e163a019dfb9177f0ffdc1068d57ea09df792828684e8e3ec79621f073fce5f322fd6fb3ac9fa5ccee554f9dc7f195bd3ccc448269fe22e3f8ea796e077fa01c5ce8b3f37d5fc4e3abc7a5cc56b6b08d63f011b2f5b6dcf4ea67785ef4d3bc0824f1a048ecd593adc233806bbee8e4e19445b60d9a1b229390de14908f1c70566dd8c3ccc7eb9099818eeac56b5ff9a28fd881b7b5706dfc5040b6c6cb582ef3169ff05c2b48e9fe59536bc1b5be6e8d7d5df05b49ec10e285c4d74563e04f1a5f76f6ec77645e11da69d2e4d01ee37350bbe4fc8c4178f641bbfc1ec1ef66be6c219bfffe263fdbab4302ffa19fd77d999777ebf77979647fb9767a21b9acd3d250ef2496fb5027347eac03ba6ae639d66d322ec757d88adbbf9557f57ec8ab6e85eabaac7b36fd4d33a89c4d9d8c02a1f34bbdf8559e9fbf84c8df83b86095bdcac17859c56eedd54831459ed4fd64ff0667cbf1bfccd952743984c7feee3d3bf186b17eed73243f3d8737e8fa9313dbb9ee62ef5f43d843380ec4e13810e65c7faaff3b06643f0d2f24efc62be614f9bc11cd51f184a1407bc750593f63af21b2d990af211d7825b33eb6d0d74c29bc09137bd89e83b589fc6325b3c0eec3c707cdf1e4f767ac50afdedc881ef06e0ac47b68be1eec535463c8fd901ae12d9627991a8b17c255c5fa27b8e72fcf18229b11d96e29f623ac2838f6fc0164b3a7aea39aa12432a133e3094741aa67e965c98d7f6952c26f85aa6ecf4fe78c8bcebfb38966e6f9d2f91a6d8163d3baf8f8de4b3f81f786ba15ea3b189b25e78ee07ad0ff7d9d2e9df24eee3dda3ac0c1856435b3e2c4c2c7b19ae699eafda32c91a0aeb5f08c21d88e682ec2cc4a368335d26b5290f165130bfd09d309b5163170c934cf82645bb61c50cf26937c93ccb4f173cf18de828c677cecfbd2be1bf4770b24fe82d6c85a4a133c2fab47be20cca1d3707759646ceb433413aa8607b33feee04f3d5fdf72be13cc73f6069f876b2fa1ae2214006f0abc92011e1f0aab43be8731dce0ff65ebbe18f48ebf6ced8f5f7e3ce597f62a53b38f6869b2373576cf9e09ebe2021cb7829bc131ce3760ff977690efc9f543f2bc1b727d4d98564857ef41fe50b80931cc7da9b29abdd87b3f6c53e601f4d21a1e3dbb5a3cac9d33e0a063581fc027ed0fac071ba0ebfbd2f42079189b4b28a5a507be06dd8b834d97f607df706f28265babb11bfb27ab74418ef730bdb88fec84ad759009ab0263faf19e80fa102a0ed6ed4be517f579e41949b1e3e0fc115ac3edde969abd9d5ff6f87dd9007a445aedbe7ea5f7293d8eb98c274c3443329dd8414b7bf3abe11f7539f1e272566166d647389d47be54c5ae3dff0d7542d07b68d570e6df3c07c7c4d6201f718f92a7df9c280fa15e2e277b00d78a3fcb9155a69e5eaf49a88b17dc8c5cfbee396b785fcf003e1abc6e338f276be0f1b99ee471db5f09ae575d1ed70196f74ad7df226bf3decdbb1f9b18e2832c46f3953f5e0fea502c35f58ebc1fa4ccc81e6c2eae31ccb6f630594ff939a9f7837b6946553b20eb537f2632c876ccedbb1802de06dfbbbfc6eb03d88dc191ef64c831bf376b6e518b68ce23ff548dfd09e1b73fcd232fb3cc97e378fae69ff43bb7e9de851b8ab01ea1f6628ce36c71d49fdb8cbf346bc2af310fce1fef9badfff2bee9c5aba3ab0efc9a1bf4fd26c8c44b80fc111bee9b68d2ecc99e4132dfb5bd74c3590cd61b9bf36ed0e8b8fcb67faea14a9fdf474d3d01dfbb8931424dd1e3ba436b7ef25af690b551b4bd42da7b6079d1f15087692842ece41a3a6ba8ff69d7637b0ef8a68667bb5dfef8f4c3da32cb14d6c2a4ed4372c379efe195ecc17310b73daa7e1aafd38bf1627ae385c64082b9aa310f127fb16435f24f735c9b9258c846bc34effd385fa1f0e3fdcf7f777f2bd164a53f57ad1cfa692d46cf6b91f0b2356b7127a5c85e24b54e8dae7e2d3b1f75592b77899cf01f8ec77cf330078f36527b0fa8af787d0cb1a3f033059c9879d63c0d456287bdc009746b719e86d361ba93d713648f42dcbb8e526affb6d721e7927b58cc8fefdcaf1fc09c944726eaf5b67bf32ef41c0771fa89ec374dfa00fbde33deda900c9a77b42fff348e4f73839eebed79c031f352e6bcc45f74faeac95ef1dafab80ffe612f92da382b5b0edee89178d872affdb8df8daa26f620e929203ec80f31f1a6d6c59b56793058a7c82fc51c8ae067d4b886e951b63f9f43d70cbe934ff6e0f55a77ccdcf7e3c6067e587b2c53f877a4ffbe43e0eeb48aca31cb3f3f0f70d7a73c1de7416bd46aec3b217a7dbfba6234874d7d19b06194fc5dbddb8fc5acd967244efa64b7e27e6ccd1cdfb1ac69fd0f6ca7439d839b531c8d60c3f7ed94667d5417e012eaf0e4c5d664cec08f19237f0edbcf66a32fd177cfb616da3b8dbd59b4fe239cdffece343606c421ec7582d6b929a5f750b22e1e3eefdaf87b4417533a1a5d8bd69be46fb007a9cf12752c91d970ad76ad3f616c52e052ecde1ff2ea7e0c5c3d0fefae14caf3bbe3fa06fceee873da1e9bb5bfb7ef0e71b7e77747c7b4ef8e8ee9bf3bba16fdeee46f7877eab3441d4bde1daed5bebb1af67842a4e96bee4169f6baee007a6154bcfe587f45d50ffa472cafb646327231072170cc537c9e10435975e38de6b9d80127459563dd67f11a7e361a7bd8ef0925274847f361dcd9ce166070d8a32ebb7d8c8653f2e8bb277e29a7ccfde3399a1955e90fac4b386dedcc11d207a13decbe071b0c8e6dfd2ad019edf15f85d71c2354ed5c2e4e49d19bcb7b3ed4256a2e27e46f3897fa2c51c792b95c9c52780f6b339c9bacb5b0a6d67469bb45180f457b9a6ed69b15bf152a4e4fe037c3d80ce5a5bd82dfcd742d6e126bba74bedae3f1ef01b265d3a5e3fd4d2efaa38ba729b566960cdadf81c4d7e153ac848ef9511cba59720e85b65e3947f66300f1f477b5b1bd7878356ff15fb31a7dc675789b5b83a785fa4b5c87779fdd57f9e2ef62f831f5ec71afafcc84671659abf37ef9f773ec93b8b072ecf77807fe0493cf35790dbe56281695632423783fe01c5dbdaf53fcb73903d347ce406e66f4fb776d8d7e5d15e864e817d0d69df663e4e27ce8dbead59709fe7902dcbf848bf876d9b6980135243afd3b38a9d1ce18b6b5b0f0aef2edec53f51644de3280419536997a024ee54b68b371d7b7b11dcf16e3ad39e585c4412e4d7c776b3237e823d4b7d93b5e9453795f64e3a25fb3de8b2de74bc85d341c81fca707f5c1c00939da71ebab9f6db01c201c93a158e65a5d863087cf5c4d4d0e8dd91b55b6c8787edfe71f018c5f9b5b4b5a3ccac175d68c67b3b750f866fcfa3b27188b549186573f66f1dfb6daf643869895310cfc24bd2812a995020e133555901fd1f0390bdf179ffb285d47ad5d273934eb36a8bfcbd099338a144561b639b8c6b7df7054eb193e3f94f8da310eb922b1692845574f80fef330f6ae51dd97c6f4a6cb1b643777f885c1ec31af78593aebb7d7de1bd5e529d74bec1b9fc473359a7f10d70825481fe8f29ad79ff813d2cfd06490fc8d960efadd7dca7306a7f4331874ebda8f870d0664bcc77617dc4b13521eed0d64cbedf01a673b3e1991df3bec5b0ec25e8dc751697278d5ecb86af0ff0cf059fe581fdde369c897a467efd6f84956fe588750e3fa83047c1dffce4433138f07b60ba7fc8e0bd350f8be01efbce3a57d3983cefbe675098eb9fad9fce1f731bf45632fb3fc62a05c5ce0830f733f5b5fc37a1879d25a0c33a44b29bb1a6afee68c125711c45fbae36bcf867ab39fcf213dcc1afe005f483ff70ec8b8c7f16cfa06e23e57b2826ba538bef06cf1f222e61af975372e413c84f7457a25888747d7f906ec07e4888e45e4d76e86df1772467b07eab2acf15eea733800af07b6bddfbf1fe426aa3bcea7113e761c57ac495c885c7fc387989bfbf5d8a2eb205d3d5046410d3c746f8fc3fdb3497ee2050fff23274910437ddad5e7aad4b53f62a527b721f6dc8ed1e2a47c620ce6fbf7059e40f4be29bff73924dbdceccfe7b4e3506c8d945f7038b7f9bc1fa1377897bba27b86f7f62fd20d1bfa7df957ba1ae2423fd83ccae33e267dd5de7151117c56ee9d9283cb89c84f611419f2b0996b57f79df1ddf05d1e5c6776f0089e4b91e76cc383a999bd7e10bc5dab57ecbf787980b1c4572f7363c7a82e4bf3ebd33f22ffa8d17bc56f8dfbc8717e07f81797213784fcb1e7a8ccce88529b1b869a91bec688a4ed7374cf0f7a0863afb6b6977bf6aa50e4798ef610d24f8a24626ca79c1cb6927857e48ed759118258e32cdf4f99df4a1cc49ac320b9f7923b9f8ebd77784b525b66b475ed1dc68ffb18f539a980778ccc51cfa789681b3088dfbc7bd6c51d308e07ad0beb087e57ab8fa707dab66cec17ffcec2b8d27c3c602f91ef090fd2b5e140da71ddbd1627a57007eb8f45866cbf0ad91b687e9fdeed25674cbf17e545733ade6daa3e93f8849bb62e2f9c800ec46bc1fee378751cae567971cc12c74024aaff8889df13e9c3d9a4bc2ea5a4b5f71675f1dbafd3dce6f850a7c67809392e37db1ac37b20615e68bfbe55341f5928338597a5f5837dd6f91131f25f607d11ae38baa7e5eaf33d7fb47b0e8e6c63e7d2f95b5c5f65cfdbfe19bd6b4ca6797f7fbe7ddf56df6cadf2ea986544bf7bd793748ae6f803e9b27d37770cb247a047488fc38b87d88ecf0157235a23bc67c0ffe8ef6ceba829fa1dc60bada33f70e9106c4487a93806839f7dc01e4e28c77ab8c7537af6e3e4974ff5d4f90b9b8aed7c4065306b7d4065001c2b265b2f07ca25949a5ace70e3dac1a8cd67fc134c17f27b267c2fdfb9ac55bff5ff448aff5564e2454cfd36855849a81cf3488dbd0838ed29be44ec27aef24536fe913fff8d2d592f8087f73fb125a116e0077bf24ffc3df4dafb6b9f96eecb52f7fb39579007db61be26bc57ef2c83644053cb15d443dccbce618faeb33e6e85a878ee93fb7dd1a45bbe776617eccff1a9266ff245fa5dfb1c9b07dc06d9f8779fab38cf8858cd18325bc9ba68b8a734ffe837f7f0457d5fa2a94b26fd8c3e7adcf3349711d2191b59bdfa767af78c3e960ebd77732de8f3d2ee7334ff7d3f1ed92ee87934698ac74b9e15a1718b21062e28c5632f8ad0787d3cc1d3c63ac42366e7666f90de39fc5f62b3480eecbfdbffcb7fc27029835e4f2fb3b7869efabdabb11b075d8e2f863e51131e7a0b41ac63ba5e9a987b19fc29aaf69b69e29bff4e5de2fc38ebc727a5e49903ee0fb64b531fd3e3dc9736999a6da8d825f40d19ef1b5f6900f611f48e02de62d9623c7b6de21a6b1cf7213ed175698ccf36332ded94c9752e68f58dce0ecba066aefdf8eaec2186f77effd3bd6ffdfa16ebc6aa52e204c9e0993f08e99e0ef0ac4166e11a71238a7441297d67562a6d6fe30dafb31f678df097f992c8784e55fb189b350e701fc65c13a3b1ed54dbfd649e68263ff609dfa946fe0e24ab0e06df291aef3043e795695847ee5e4cf2659d243a97909afef775ce4aac14c191899523b6a39abace071b2aa56ca8ae561cf2ed9d5d6be118d23980fc673adec3fac0f346f5fbb241be191170f76a66d9f6f0da72d6109f4bf128f6b99372ba5f84cda5e182e3c77bacb7aecb5a7ca7eb22e49fece55b141a43f0add1fca2b9da1ac92f3f2ef8a08e72cd28e245fc156bdcf8b7722ce2c549f9bdb493df4a7cc0dfc5c94139e6ddfb9fd4d4b779aedfb36586aed9f4f6843e52da9d89439cc707ac03dc63a0c03d20cfdf8ee7fc1eb08099f9bd34944f252e2fffd03f3b84c2035612f9e842942e9d92d74cb06f2fa4475e0dfa5ac27e911fbff48b6acde87c62cf78774c75a5ed6d7ba0868b5accf772d5f525b7cada31a6fcd21eff82cf268b8f7be875e0d76ea649961fa40c8fde051da3437f3690db9d9c79a7cff1bafef48f8f58926efd225db6375abecccbd21e8ef7d86795a873e2873ef0c041d0f2a5c80ad2fdaffb34b4311e9c770fb914e9e981e6b0bd79f34fffd4f77ec066420ed41aefe55584716a5e0ad8c2bfcb33dc3563d8c4bb3fffcc7508b1b7f34bf94e3840a8baf521b159013be311ee5ac85d415fc22a5adae3873e17fd3ef75067e0103e620b7c904c3dad8ae0ce82ad498f11ecfd8172599daccccbac9aea6fc92e8de8be1ccc2e5b672e84b697798e32ea6c816abc7db0ed4387c91f6252176d72189098fedf8ceb6d1637e330ad164663bbcf6eb3baa9e19f0e664653d730bb219b1e73a2ac3eda5e2ca67b83fe76066d6fb3512032b12eb9bc92966dcca4b5bb2c0663b1e9df388b710c8cc9b6b9c636ff763c5bfc6ddae20dfd16f47f839ef75696a621cb0056db17608f734bfb86645bb133d902b8202506fd166946b547bf05e8fd8e2cbba8a35a8dbd58c37baa26ff63bf72a3b25ee6a501701624b962b2b7bd5ce5d4f1b9664c7977508d21e6184757d0bd1c5f84d9e6ac1909d267e33df4955348cf8829bace792f5777ea3ad03bde13122483e3f7d81ab0910affd81b03a293d621d2839ec93318cf38678293750ca19f5ebbc6906df4cb17a20be9b582646cad39f3c116dbefb5e69447176ab38211d50be8d3857e52dfdce2d4caa6e382033be2b033f34ed61d9bf399ee7ce9d09cbfa7ce4f287f39dd1b8f7cb2eff635bd7e575dfef37ef8ebdc6240f21ffd7ce1bab101d05ea77c4a927b1319b4efebff4f3943e43bbfce1942bcbc8963bea9a99157f90bae96baa9dba1b1496d9c8eeee10f7dc49a5eea4dedc22ad74f7388ab689343a19b74ddb9baece9c518e2c547e86b28ab2cd4e4115cd7f3f7c38b6bb3a966dc62b4c7c196433a4e504dcf21d73bf24d9c270b32be043f3d56bf29fe297cdca91a235b7579cfadad53a99a3d64b4c978b4906fd5fc74bbcfe204fd36f125b10c240bd9a5e4baabab7e5aa7c16005f18f67fbbf4a35938a89fc47fe750a71ae369e21a46d3c746ff6fb2fec06808f7ab43999267e151c99db62a08cfd8e6ffc3380bec21fbccf221b06d77f7892f56172c86e4afe6f6902863f8798a6b3f6fdb4c77999ff8ffaed3d8ec3838fe8317ac60ffcccaad7127f243efb782fadaf2ea93fff1f3d17254ba610cb79cf03fcd46f387ac0253cf6f5407298f4495df19ec38cc296b7ec87de7bf47efd1b5ed37effdc3e5fab0df2ac088e6c8efc97c59b73703edf035d037ec049213130e2af1a49610f56856731ff44f6fd5c37095810784eccbb769ce6ffc8df45f26f8ab10d7a96de5738a70e3dd05f8c65c31992ef2106538d1fe71962cf27ba7f547f7e9b9cb91a7b2f7017b8ff75273790bfd68ef593ec6a9ea1ab679c123993f672944fb5d6183fd5e6aa0c7b487835bea3505ea7bef3cd409e439edf209f43f006e439635fda1cb63660132f2eb7b938d250f5e36fd26f00b00eb1677c53f886dbc1cff80be6b612878a44c6539e1d7cc7ba87c2f7d9753cc8a9d82cd193c2306f392952e6ac19dfa5e7accf3eb7ba28710afdeb9bb802e4e0ebbe9e83becd4fbd2fa03e2342cfbe1c406f605c67799a9d3d2319619dc2de5c474d29f9b1f207048b7ee49925f81ad55831a6c85ecdfe780edac3e8dac4fe26319b23e14decd7fcf57911dff125d23ca56cc0016e367fc811a4b4cc407b0bd64a177768ce15915dea0e567f29177adfd3f7380397bf51f98e41e6453af0a47fcecd1f04e7597cbbcf8ca49cf5e37cc92b7b4cdfe0ba1ed297017a613538e6a5a38c97f6e1d7034e37d565255f9cfa58dcf776d2aa953748266d1fe2ab8140d561bcc1e9d21c8ca133071cb6661c8087e7ed1cbd1f634ac6affbfd33e9de9c20c7c1df3b8642f2c3fb3dd54874e3674cab3df2f744c843a6bdfbfef8ec74ecd2fde1def3c2b3c5ba3737dd3ac131a2a7777aa79b1afdf36fde8bca11a3f5d2ef1d047981cf5e4f55e88b9ff033e8490118c6337a0e5d4a60cd7906bd0efb6b2d88ab5c337388af077185fcc9b4e951a271b8f6c7e52ac097faa7c7bd02bc9c90f30a8f9803c0abc1e7bc681317e9ba12ebb655ae8b6d7fd398c4cef71af06537f5cd01a96f3e005736c8c6fb0138b1e1f344019e6bc82fd549b1a2ecc24056afa1c483aed2b3280a187ee0a75d9cafa757a7cf7944a49bdb7d316df82f87bf3d27bd6b42d2c49ec0e6dc1a43f4dda76244f5d24e2e689c350363c016758afc4915d9f9414c7243d0d380eec3d8e68aae9a53e67ab639fb751fdba5672ec8257a6f1b0f9849c851e1182196eddd3da219ce8d438c89705b3ef9c41ad43a426f79e0070c81ff83e091a40f7e69b2b0167ab1e4b6666b736ecef71a79661cf24577aee1d9a1b893bfe85c3695030ddaf3fbdfe198277a1f62cf103f2faa970e85bf24e7b67f438c14d9fe4ca9c69eaac96b3f489902c731934f2a1f5fced0b98eca830f827c2d6b9e36f64f280c31f71d8c27fedcbdffb422f6da5597a62fd64b82f99a3988d746fa6976d6cc22d2a431ef1ac30b5a477a0618ce4f8283386f4db65edae30bc173e650774b6179a9382de092d11e37e328d5a524d7e8f936710f501cf3c531ed76dc4d91ea9f72cb77dcf4e21951a1392cb2f3225faa86f05d7ca0f2f7d3dbde6ee772ee3a5f8ddf7d09b874e4416c78433ef79e03ebc2ba6229be8c65637bd2fb28ecf6d17de96c1ef711cc077a5f4d56ba3cab0135a3fff13819465443cda984d7aff6789cc3f6307ca1314c21874bf5670a8d61866cb96e9cbfbb35b5c1f66213e3d49c158fed572bf74fab0fca562f9a9e9d969d5ec249835b8e52adc5a8f4f6238ef535e32303b742bc73d6a9f9b037dc53ca781b8217115218f3c54029758c653b79ce5a45cfa2c94a8ee547ffbb05c577ab9b5374ff1ad6c4b4ff6ed0af0c9e0962aeffd9738965edc071905378bb6f151c1f7913cf47be11ecc10beedbaff033a162082e7cd2c68b85eaa221bd599780af5c35711e9ce7a6f6cf14fb4606b91ef207e51b5a430cc60b017627a7e50415d77b952f6b6215784ca93c09e63358656ab641be574a6ceedfa4b714dbe4a137cf7df09f6cec2df09e529ca769c9409dd9930d43d5c03f6001fc18cf27f4d1a7f400da3b1ab1416d6e83eb0a2c26771ca6e71758c2438f7e01e3a442e1007c8ee879f6745fb1e9ea554d7f8af918a0a69fe6ce46eb55f007c8674d2f1e332fb6b67521bd3dcf34ce8ef4e71cf9f170b0b5d7cc561857ba14e17ea293fca267e433fa5e5e5f03f4dd697d0de06f15f7b8cb3e2e8477f83a33aad81fac199f63d0359bcfe8fbc2b33d3816f350a3f3e1bef0bd7e9f163bb3bbf6dea1e7f17bd68b756f5624d68d74379f79e023e0de7b3ade5f572ff3ee9eb356489f61caf6c67d865d5bbd6bd2a6e94f5afa71325e9a53c87382eec5dfe7fac3f16dff5247c99713a6c19aa5dd3825c56e701851cf3083f79313fabb8d3ff82abab1afce6d9fe453dfb631312e04747f6857c5d264196abd35fd0df03ea4f22516c9d539068e55a071dd909c38d2b75dde6075f107e1c573d4a9cfcd71cc7442f7c203ce9496771ae4d9a01a37b9c01eae8d5eafa2f21823a3e20ba08fe610534a5a5ee5f1fef998b6ceadbf17a67f79ed68636eaaee1a72c5408fd8c13af2b339c46e0c713d37a7ed33f431450fb9811ffaf9995b494cfc4168f81c8f793604aafe03c9de29c6536cb82842e3b6c9f86b2857e3a7e3c4f9d9b5d7d79055affe6095f7dfdb7dc4e911ec023a760dbdd8915dfbf81db225880dd7726f116cc3a35d7c5163ef5fb84774ebbba70b6e7d6db1f827e0f7355d9b4d49bd71fd709d7ae928974012c1a782639c6a1cc4c3b33f98337b273c6fed2ad57a98c869d57fcfa7b5f3abedfd0a5caed6782f28b1660c199fa9ae2167d52bc8211df2061744cfe3ee012f087b0aeb74a8590c9d75ea8918bb0031b8de3a767bcf62d72a83e35fc00b0d359ba174881d6398fbd93add4df94c83e74ff2e591b9f5af95f4aea5099181317eaff660ce209bb88971032714d973bdefc12e24e7bc59c7561f1b87b9ab31bfbf40ee3feafabc0cd15814fe00f6e3d33c6ad2197a7f86029e4f526f97efe5ca7b1abb69d09f47d8b79043cbb64ed4c45147387ff47d6d6aea613c380feab637e4feafe635c0efd5c3d3e3b9ad2ecb0df40501ce000b7aadbb9982f9a872b786771f414f63eabe8b3a85f3a0cf6fc7f394a9f1a13f6648bfcb6d0f8cf63bc0b301f6293d62dbfb8cae75093a6ed47cc96d46fee939c6dc3cbf6e4ed1985c5cc7cb3d0ee2c7108b0a12f1047d2f4eebab29f103cf5127ae33477bfb827480e7444b2f3ec4800fb6bdeb4e50b0cf293015f2d9fc4ce4b67608f55c60db38eab7c75917e0c56ad6ada06e822c4dd07d9438c9d4e469bef857f345e923d0510baec38efb47d602ff8699a2b1c8d4b468c612fad97a72f2b477908db99c7c7d523208e68ad4425e901f84e5af72a1f148684efc8cbf7858e7d5fae93b0d4ef31bf40777bc14fd1e406c18dbc541dcc9c3bd7c2b67c877b38a1ec609edef3e3e6dd37f5e5941b642e14f91dc1e9ebca65e128d995d314dad6400f65555acb828f2b330ddcb554afa14e39ea550a733443e704cf8a19af3296e00c0035df4d37714409d0d702cf0fddadd8ac7f59c55da973d872739e60fbe625d501b1bede1bd5620bf96b5faa11ccff1ce50715c4b0c9a1870e93a87c298b0a47f3a9bfb71a52f37d85e0a329ef5b355cfe655850e9fd93eb388f669a534be45ff99cf0ff2e3b92715e125bf0693f3adb5478f5f859bf14c28f125fa0cf6e6e47cdb433fcc9e5db97ecab14980394e421bedad7e3f7e1c17eb62e5384fba2a3c8781de214dcda57164e250e26f4a5c31e184899b6751e22a457f373d3a7469c82c0d15ec5f25ae6a38d6b118bf568aadb3e26de65c84e8f99c55e19fd6a12ef10c7065e23e2c85ebac78d28ba508062b5e3901de14300e4a5cb1702f89bf05c0535015e184cd71ad16f4a37dd947808e49b53dcbc432d56aa554e2f20af607fe1c852283fd1c96c97569ce2cad32a43832f350a8fce0b40e35e3dfbba72e6d7e431f1c8e67bacf22e300cf66e53b465278a715f0a62299176496e1d922e8649ce3823e0a592859f5a6fd5b4dbd8cafbd0d1b6d317f4489f63fe67af018cf51e7eddf998564406a0dd43cc4fd1f06419632b8b703be6ef39bd3d43acb2b7ec7e11e344d6f2434ef3ee4d8ac64114f6fbafc7d46b27b1137f7aeb2c77eddaddf8a7499b36a78d180074acf706f10dca79dbfc139a719e0b3a83e25779ddc9ff4bd2d7d6e9d7b598a6422c44bda5e4709f1a1e45911dcd98d267df47a2d418f5ceb00b8287fc2fafe09adc97548e307823af9bfa5f9f54b69fd2065a49cb04f46b0445735f6a2163f7f7faaffa3f7d616c9f9a6d69cae59d464b4e62919d18f7131cbc1eafc82cf1ffae7ea27e00ebfeb7249f7bd1a79c690fa1b723523b0712639c887add3606c8737d75e27d02f06d90e92cb9b0270919e97863ac4cfb2f9651cf34b285409fd5d28af46681f071324bfc9739cd05ab4907d73f4acb2708cf2dd6fac63b0913db042dd86bae76328cf2ecddeb6b92ad4a58077f1713f5ca3e296ce14b8887726cb2d6beaf9902e9452f4fec4675e8ff793af11f5bd03f101b91acf90ac95183e10c6b56e07d7595ced97f6dcdf8ad04374a8db9eef8b4ce9b265027d3f9de43a8bd90c9ef3aefcf68d6ab0345667a7ae3ea09fe374c3876679d133f6ea4969b6b5ad3a60d07a17013fab35b85fab141d931d00270d87393b4c62272e9da0dc816fc4f2ba44f26993377bcac47dc2209f83e325d740c6fcffddfe59a1bd46c75a2ecb5af53d49645c836d7a9c95a48758a81cf3cb826bb83314b0195b0cfa43cd32e94d98f6f66adb776c5885b655efac79ea4b241f212bb966207bcc3d035f8fd4f45d1836cf510431e003d357fb7fe900a778ed3922bb75d434b8e7bef2bcf763873e8649b3b513e5c1607d5fa4451cc86a8a6b7ba14f63e6435f3796efd751ac99e77a83f9cd9752461390ce48fd99c5921cff37b3744a64832039c986d2386ef577ac46a1b3be2a71174b6a8f91aad43baddabff7fddcf329145ec84eb24f486c888c996a808c9012fc5d270f70efe2931705591ae1ebe2fe738d4f12d4982b9bb2eb719fa62cbc851bf1e8725681b913e05cdc8fc75e47688d8559d3a74ebd86f63031bb6b664b630a394bf7ceffb06e0f38ee7502ec4ed7df52b2b8ad3d4f3752fae1d99501fd2c06d57846c5fa76935cd7a6c5d933f25a33f81af99433a11a2e92e26cd4d1453b29b93e50906f73db3bccd93592d10fb2f6b8e466708c8be49fed5e7674cf29c0741f7ecd26f95997bf782f1e0e918ca273b3c1647c237d5ea357b9494d503f941864d5bbdfa1bfad6fb248deee979b33923fbd9898dfe6f70f7c80798b064b437d9075ab18c920256be2a4addefa40cf691a4ffe23f15b0fbc0dbff57c3c64fb47ee697ef5650bd90ac0a10e31a13b1307dcbcf6b9aa30481c51892b11d974ee40bdfa528565aca0e4ba7ce077429523dd67003e3201bf3014dc6c0b39268bd9cbd515fdee3a98bfc5b9b34c285427dd643fec4118ea8ed2c52ba5e05f48cecfcc7309bd3de11a438855c1e7cd395333b80713cad5d8afa13f27c41d3489e191eef20486df89a5e818c8b722f15669455d97e4bec55961523968e0a8b0c38b86f46e8bbbc9ef7ba32ad4d8bbf56aa8e4cdaf37fa7ba90b87f3e6ce7eee8dd4775886df99e37886ec8c5829366c593aa0d314e819a6c495a99f705d12b2f77c9339bb31f293bddce5ac15f2677d11efd1bd7cab34f3c6cfcc71e3fb1590df1594df9e8064dfa150d0e71a3ee7e8faf471336e7556e232d16af5b6136e07252e4fcde79990c4ba38cb35337f351ebc3e1d17947edb3b263b5c72c16fe5f4fd41de23b539365c3aee2ff22cf1225662a403693f7569c07779e3838427da0e05ae6516b882e5b4f09c59ac4bd605e258c037ff55045214051c3a96d8c756586f9d75faa36dfa931e05acf2f014c8d6b7cb812e233d763e90dd4aebd57a2f5735ae8f1d469e24227b9683da8a9e2ce1c77b698cfbaf3ecb4eb677ac331fefe519b2553f693b7691aece7d5b6f95eb3225e78f7902789313dd5b32291afdb1c83617afe146a3ec2f5d26ba3485fc0ab2276bccddd3e9676ff0cdaeecf9119d1f64228e376529dfda0c36f0a827c0c1e0a8f735d819adae5a92bc01c811e010c4f3d83ec3ab7ecdc8377e75ac2e858cf6c697f685eab3d573f73c7db6c9a6ed75a8f1a7f7754af924809f40ebc31b2405a50391cea8213f356ded8f51e830c8cec975e9c731890234ff5093043cd1435fb23a5be72fc601db6c41e1bdf7150a5d2e9b5ccd1dcdfbfbe7a0dffd1cbbb67af7b98a057f511213d7f986d8d3229e56bafcb06eef390bbcb406f0db47a18cec4515edd3ce1e3cbe94a3b83f84b366822c8d43679dd26b6d57ab09f8774e6353b2bd3ebfe87de87d817b9bc1dc8e760396d7e514d9662db710f2595bfcb943cb15cc1bd27123aaf71f7cddd677f6b28f47aea77fc766a7f8b52a8c81197cc3be0aea2a871c04d1b5d0e784c68439d5780bf24581fa72dcfb70d63bc675aab18bfcde0df3cee6865e1336cb50bddd37ed3d9bb835e60ff2d220b380ff06b8a8b1ae5fb98efa60fbd371e771a66637e8edb2b6c5e35678eceb0218c0775c4de41eb758973e5a1e7e34af50376e407d114bf8531fe650392b50a7948ed05c753cf39b62e740dfaf3e676eed66bef0b6ce95c1dccca4be74f3ea5ef36390f1852f3cdf0bd79ece32f50431b9d21f7829e1e0996d9d3903bdd1707d23e9cb595dda3e0b4635245c0db01716a7127dde8713f693c403bb385ce77734b1b8ceef807cb45284127f5bc45dacf4c1ef88c3e77c7eed911ec59ac0c375f7e43e7b49bd86f2faea3b15f27fae5e7d7b9adb2e3eca33f6601d42fd3ec63c7ca07720fd9a9b5ecc05f4198c9bd8a0daf7cbe4f0855fd6d581ebc0adad327b3427027fd29fe7b07daf9dbcf64311f724a663bb6b67d5af93c7d8640aab89f78509639f231d1b799ce536b25097c93a100163d0fcee35bf3fe001ccc7f15e0b11e49f3086c46334c662485d12beee14f98dfdbc9839e83f33e4090dccb10b7da233af407a02fbea9ddf6b0b55de3f26f43a9c360fbeebbe791fb9821ed0be240ef752947bd23af5e3f105c9f850882e1a97fc0ee2fe58aec87351b1fa7328b145afef7a3ceff27e82da8bc5ade03d703c0ed96421374c83a4cb19ea38ef325a41aecccdf03840bc6b120a91856b147ae3bd0885075eca016d9b6d20f6003c481d1fc404e608fa61221f8869eb9a48add7d3736966cbdf82b123dc1af701da30c04def9a6cbe64cbab43f55ef2eb21b775e6ac6be37e7fb8feb51adb2c5398c06399fc0a8eb98fb93dab7b83ebc4f2bad71f355f0e6623d2df01ae6d9e5667cb88226493f4f39ae9e37e7aada3e555b1e370bc2214861f043f837d772c7be07b6db06af0265ddee2b4baec8c9269712532d37f06a9645ee42ec0d70c27bc1a3eefe1468f626c84f4817c5706f3846f2e6196de435b2c30bee3fb1a9c5650fbab3ff8c4c44e7ff49f0bd7646e4887d2bceeb8ae2f21b92fe4d756d725ed930afc4e130ebf147b7e0e32bef49c2a823e935c9a68c647ae014fbf586f0d3e6f6bf0dee631d3f15e8840a737f62bc81ae86bd67d6749fc0dd95bbb017e9f459614cdf32cb271b19be491c6e23a1d5d4e46c10073356966fead499b7cc9bda9bfc598a45e1e09e90c82e3bd69509b52e5689da367009e6b90852cf0bb79a7d56fdcfb1bc6156386908d47d6c3abeb18ad6fbf69f057bcd7c83ffa7e646d79069907d2c3ad3faf1db689f47e7ebac7ae7b5674ad61f34c98037a932f9294d19eb847f0f8f4d6db86c86629e13b99b0f9a34cf00c2c13d01ab4eae8d2caf6f61d3e9ede796bf2f9e3718be317fefe610c16c7af5c97a6fd6b4f9b7c46d5ed85eebb7cc92597c798ced3f59be327e71bf42d83f809ad9756bf37580617a1c99441dcda881b7ff0d5ada993caf84d0e5e4ac77be923d7b3750ef900d8e76ea6c9b3df4b2b38fb8f717bf2ac0fe3339a094909f980763f8ca9fd3045fbe10ed83587e53511d7d03de88655283c7360412ccdf9be6dede1a9b385e1d9d3f77b68c86822d4b163f954f7e268c091b893ac4449190af3103de311cc0f7e26b8d90a733c57803f3851184011739979469b637fcc4bd2b21d303a6aec49d0571ce2ec2aac4388eb6f703da46624239b25bc6e692f0f9a820eece7466b5d2c2f0ee654e87a1cbccb933e8ced16d64a75a1b9f4a02e7bf085d66e8d3194558aff07dfb2c6eb8f553459696445f73d3ea6b16d7903eac1898d0af544cd67380ee40b5a634183dd6c6419ba8ec3e43ad14d7e9dd0fa356a62864b7bda3c43e91acd35a69dfcb1a7addcd3ed29913153247fa246feb8207f9adfc43ede49eed975245e4ee5c288bfd8c672a06fd3aae713ebc091cb6f34292198b21bb63fb835437f87e35187df147eb6d61da5d1e7d7595cb14bfb03e9721a4b5bf762b377e533188439ae4318e73bc29d601cf374e9941f8bd38c606313241b085674cd2f38b5f66cf177c3b500394693fd6cf6ac1f0f871af7d1de676f969017dfde1b1e068b59641b7e37001cee073ab6b1437666ce3e1f3fec1d4fbde7e3f12d5eb4773c79a63d8951fa13f6ba640f67bf26dc5e930ee7aa986cd1e58a9998e0ac8a65ad3658d97811ab64cce9f19bb6e3e70f5623c8ab027f6515ea4674b1b979a8df953248cba3638c6bede91d45669159be2f323ccec916679f1cab3baaefb2cc157a79d3fc143ddb70cd741c3e5d3cc1833a3434164c53db8cfc8c22c0781e2ade88d6221dcb547e3de4a7901d7b456bca058c0df203c136a663aad7650d398e5b20a5178f257821791623f9dec450fd41831117eb9df118439dfd0a06ab5150038f4bb757a66d3fb4c2bdf7ee592c07683ddd0a0feaddc4229ce27897eba8435d3af4fadf79b19b797195a06b07929878b817c8ad1ff35dfd9a4df2449702de8e0feffaeedd9683afd1c6886eba9422bfa7088fec11ea1e9cd52fa5b7ef9551e8ac8a9d89e501ce9137b197aaecc90479ee6f273cb7c8e6a12e8ef98dbc3a6fe2a8d44cbe5c640ca933b63e28cce5780ffaf15dac685a8406f0ca4c3579d58f236756e6396a0a3cdd46f5b1b4d01a2ae9b8d1c88dabf6ba0be43f7471d591928931f0cae0787d6fad6c019b14f086f336d639d4e543ae1995b8b48183880d27fc609129c5e6ce7e42dc231d6339bb2136281710b94bf482998b9d8e60f7dde7f244e9118cff4fc74457b06263f77a35d1014d1c2669edd9d2a91b1d559ef413899f18d512e27dcf315912b35d41eecfbda3756c316aec2d1b59b2bab34be05b63da3831ae651467b99e79d720b122973bbcb007888d62956928544c28f66c10066c8ec9b85ac44c05b60b60b7fa189950201899538264d787722c4d7bb00eb53b3b01aedecc82b84a67a7cc713e6d5a314ba7042e9445ac66685fff4798a23fe46d4201f3ae60bca5f8220700b88c8b3398ffde42fd5b8f2bf8a2676cb4b587df3be0da7c137b45f2cbae989503dc54f7febe17c77bb45fe05a5e5b83b3a1f473239728d9717c948920879ee5dcb9bd377dec04ee856c56db75d41ce7aad0787cf59edf93abb1275427728dc21f84a93715d950e2571486e80ebd800d6a5cfb327eb8b456e710e7aed9bd7c3befa086cb1bef05f1b664cb3814224eb398a79e09685d43ed10aef9ea6a41d2325cb47d6055a6c71d909603128b4975396490afe6380cba3fd41edb038fb64dcb9ff07a3dec660faf07fc3890cf7be03b69e246cff122cce5d7d532e09c610f8b81d713ad4720fe50fb1cdf9b3fe8b37efa8e3c097a71621df7723e81f71fada96bc859c9cab1189fa5e606e70d69bdc62eb939b338016e2309318758b6b467bf823b5f84931cf333ffd98f48c266deec39f80b5b67556c276cd661809f63fc5d3ce1f62c6f6426d7cc02efabae4f0f1adbf3d2761b3b2359da877f8669dd601b6637a0c665925f40de93795864491164fc95d6f1605b34fbf19e477b23f52d21ba6816d36164cde79eed7a56a63b6776f604e44bf375f894eb78e066154bc631d8c4e62c1c1737a2f411d3e7430c9fec79333feaf2831c30f34c97dbf532f2850ae4aa9589f5d6c6f9d9e09e23dfa2f0257ee0d9ebefd0595f7b32087a61229bb6c3a3ba681dbfc2df413dffe609bb07b5fd9935004e3ca112a1578b38e31db6b83948cf995f9fe6bdda77fce6e552ab8b461f4d9616ef9b2c53984776a34d67b93e4d784f5e9d5735ecc56b2854bf9756a9e9f29ae9e3ec3f00dfad8b5ffcf63e8e891d8ff4d2b9c3c4acf8b5bc3a7b46d5cfa327b38292b323b7ae1ef7e3c88babc8977be37dee8db7cce4faf4c66fefbcba041e0774dd047092c6b18c6df63b5c9e227f2332683dcf40a64d6f2ddfb069b24846ce34a332906f8debebc7999a2a9740b6ee5b219adacc305c4e981bc977190d3fff5a2c678e79e3674235b519b639c6d0338bf31c75f822874573d6e79a917e6eeeec043043e6f4d345f36d977c08fd1ed1d85786e6b0c89711094729b63ddef3bfec410664ab47bf9fead91d907aec4dc32540d7055c020e73ec433daf314cc3ccaa77c60ff2445e83ada11909a963ed7818367736d50515fb45b5caebd2990f26e3fbe238fddc1e3f6e0bee5ceaa49e59c9b00f0ad8b0cdf4bc8d93bc198f07ac45b4345993e0179eb0c8c08f9af2f72d97de600f48fd1cf5d29a41bcc273e629f4b0c6b9bdb778c526deaba44c01984d33ff24f6ca08eafefbf9bb79f8aa3641a675d607ae0d45fef8f1abd899e7db1ee2c84d4c7f7d0d04ba0e14e9a35e9c9fd8b1483ee03808f2b77742976b0c853606537a46e3e7af7efb809d6bf308d856b6e9dad5e1c7437ecce8e7c786be1157d86e15aa0bb25d038e2f1ff9cdfb58fcb5ef59ccff2dcd6f5827d80e15693bf4bcb5c1dff8931dfa0f31a5cc133ea0d7b75b68fa68626ca79f89a5477218ad6ca5fc291df3fd3ee1717cb4c65f615b5e3c932e4d5b39f8c20f1ef57d4c9587182fd2a1d2a6d8717d3f18b01406f0a4cea1bfa28c7104a6b33a077595ebc0473ae337a7d519f98bde914573596866f9d20ef7538647fabbbdffa68bbbd2389316a394587797136fdea6c3ddf84295072c7d0d92a73ce6475d8aa2807d38d75e8dbc13f3bfc6acd0fe6fb995d2c493ac8b829e49783a360db879144856a21cf36c6fa47c8357d9f67070e49d71be1cfaae79b807e46d2b8977cf3cc7be2d423fd120b3aad046327136b26bf50987f58fd769874da9a9758bb9f29b1cf8a3af64f2fe4cb8dd1c3387bc04f0f9bcb6e398073b0ef8175ef5d5a26aea364d0ec6e6868c3ecdfbf51c31f65575733a9a19d57569fca18fe81b3cd993ed40ea2b00536df3d07b31b8b357fb2ed2fd7522f001275f457067cec1a01acf84e45f5ba37a5d7b429e7537388c82ba1a2e32915f9cca0fc85f98f97def3067e88fdbd865688f81feab3ef798bf38b2b9bebe71201e3643f2b980ffcdb2894bfe25260ee3d3fe06d3a79f0ebf970e6083fea646e7b2330adec731fb977a74698bedfa5fd3ebff05e6ff2d0e1474f82ad625afdff7afc739dcd525f95d5dd2e7cbe7823e49cf712d4a36f771528d9c052cc853acee1eca6a144ad669673e60eee49ecfd2c772ca4cdec30391315af5c7a8267dbb96c886f2b2ea1ad67f9617ff355980ae97881fd027bd1f5fcdf77295935a2e645be3f80a855b032cb8e166805b7b8885f89397b190e3cb58c8b1ef4b6fe1dc751a4a111afb078c7f34de4b0752d7448e69d697509dfa31e5af5fb3497ed365b7d5a7b41f111acf7e842f546dcdd522738b87671db903e45726bcf502b7eb9bec4b3caf736722dfa8e2a57538ef900d3761e21dceabc6b826ea8cfe2ec27736c233fe557c6b7f88b397f68779671efad8523c3d52f0cbaba3b73a94dce7d13f7f5aeb9a999ff4e90cf22f50e771fce6c1779003c265c68ff7f2acd9cf8bb65ecd569a1a3695feaea961db76f998f84d3ea6d84cd881cda921f22143b68c1da3e4903fa64f19f237cbd94c1aeaa2c27b9371b961cbdf8e31ae916dbd32d912389b07ab5f6babfced98b969736588fc101fe2273cb3ac59f86e11b322fc3685781b1d7b6ff0b9c2d25e656ae2fe328548d2ccbce5bc99091defca4c668addf1d57c8b7e5bc7097527738cb33cad62c7e4ffd9f154fde0e2846b9f66425537d8802e9e8e3e637b1f3d97756447307662c2efd252758cca5a1a2be4eb917757fd2d8bfce98077ee3cfeeeae949b98b574cb2dcd7bfead5b9bd28ad9a53e2d78e73e2e615c8d71adb1ca6fcb283d8d198fb67169696cf2dbacab2df0d751390a8299ced4d3f4110f4bc639293626bb6d6b0a6de597dd611036fee01bea09a9ef66181379bba1390f4e805d79d67f8dcd367935d6d3d6767ad2df56193b308e29b37442df4d99dfeb9aad43815deb92d87e67a0ef70deb1eded140c56bc2a44c992399cd742958742325a0bd54a9756bfac3a9aa3f335339f6b66096b7ce9cc197d3a47d7e383c1aadcc8e0fbdf9beb85ce8a574e07d8e3ee91d716d990d1a58a591aeac7e3de7207b05f3e1ca3cac2097b0c8592b30716b247cef86f96b3b90afd7d0b274ca249ab5f06b205c973426e7cb02abc09ef6812b20be15931071fbaaec9de42a19ad883285c3adf8c6ecf99bdf37add0729c3af000faea68163e54166dd0ddb1391de417e835dab4dbe257ee4b7da9d563497e4b31f6d4c2b0a2b08d82a648bae8c28d50c37fb4197fecc6d45f09b4dfe9de25ceaea5789bfd8e6df29be9106c3b3976f55678f7e610e8d133a770a5c6bf879c7bc0dcf5b4518ff05bd51ef4ba76cf03bb0c6617d138c9025f13724877579d397cbedbda27a2fdf22e083b08153e4ac097dbc09704c4c794693c639f0b4fdd4cf1df75499130ccb37e67b79783e88c53f626557fd67ce3a6c3bfa7b6fe6228e67931896c39c3de08145f221f9a509118bc6c433a0775d0e362e602f31fe8860f358fd94f4be077c9e995fa15ece187e2cad39794fccabe5b6f8b6d9a587291658563f010e21c2b198f2dee1be203683eed5726eb9468b496c75806b74d88a3e0f85c7f4ec5e1bfa72cc5de70bd9bdb8671c609815de6699a7de0c9a535e006b2f448d8d0c5cbd54ce05e3b1c91edbcb95ef403fa557fb6e3ede03cfef8f987be072c4bd906680a7eafa42125e47c80f29d0e31ffae7e23e4f4dec94d17adc7b3fde2bd5c1d66bdfad2078a8e20fe75da0a6b3eec604d9b798031d3d8bdac3f4d87d7cf95b5ee4ee7bd22f0acfd52ac8f872eb3cf9cdc81f6e7febf76721bd061ff98bb94d6b6feb12da6b871cf7e263701d8f43ea9b450b6a68e89c84d2e6c29582f60b012f067dc045c6b3c3e1a2573ffa80e59f860c7a4f2fe36b4d6ef8acc5da1bb4fab8c903b5fc9934a7a67f646e0bee631c4eca8b561739eef9ca465dbf8c39f45b6dc711b84c9f63853d196344d0cbefad3d2baf70cf3b6cb7e77e164e880d0035d8a497211dbfac9a3a6eba9f27c884098b7c764a1f6079dff6dc9b527a0cfcab9eeef965b3ccc88f317ebf3ba7c7a1d1f3b996acc52cb2e45daf8136a642f304105ee16b231bb7e6431d225547a24b7ced4956edd9eb7967fbcc4636cb14ad9f787f533b2a42cc28d7a527bb6804b197ce7e1bf5628466ceb4f1c0639eee8daa17c743be315a8f3bbb4a837bfeb97798c235592493ee486f63dd85f1039007e42cc6ec9ef5752fdf1ffd9d8f5f7e1ce554dd60bec83e3e7d0178ba3b7ff9754d31af4be3624be7da65e829f15c8b75673f69df6c91024fdb2f136c95a657c090f19c8859b7f1071ed73e644dbc77ddf2096a668ec6a4f1e946e83a9e91f224ef7a7cdbabc9f298076effec275e9eb7397709fa0117a164d53fe6ac8421895740ff1c5ec37dfd80b7676fbcad13c09849d93a3eeffd1e0721d8de10c3b0987efec0c03812c7642f4be64dbd695ca5ba5cb673b748de1d47cdafb4a162284993df79b3363e2e98b3a34af50cf6067af711f450069ba2d7e3e615276de93a5f3fe5f5d3b63ecb887cba3625882b7a4df76281680ee8da133d7b290778b7fe2b6c01a3674d1c0fe2ab783f64eb34c8acc4a4eefb5718a72e26f5225ed597a7bb01c8d32bc6ce791992e78be71eedfd7871d33f5b9ef17e1d7d9218e2686b5438b7946d0aaa17c92834aa6e7d9c20bf523cf60fd89b65d4e477834135f685c6a6d9b4f58f9a007defae41364f2df25d2fb6d9f47a716654af8884f6838b765f7479fd1ec708bcfb143036c067b6e392265ec33fc8e011ee7101bc781db61dfc414ae6d5c32ed66950b5e8c9edecc7e87de0fac807e315738ae69db639f8ed7b0cd2bb35f763cd69a70793e7d8b655125bce0adfd56187c210e2afa0f3e95eebb202b543d06b7da02648467b3d5dfed8c70aadb129c43cb74d5eb8b50fc7fcbbf58ffb704e79bf1e66c0cd628fe9f57decafef1b5edf4295c171684f98c50f7a0cf883f3a53d3dd3fa91d2e3475dc271662faebafa653367f7b8cf6cbeb7ad22e036872d9deb46feaac1547b07f9e2a4bed5ccbd479c4caf373370aab77db45fecf50dccb3cb5916a9b945be3360dbf74ddf57699d068375ed0f92c77aed42139222b833d14c66798213949b1a418a0f92edf303ddd0b9d1cf32a893691af123c0f6a0fd116388fcf965b3ae318fe7faecd91fcfd7abc5bb1a7b173de32feb2cad83c1ba79df4ccd3e2e3e3794b68e7a0fc5a66e386a6aa4d906a76ecb2b3e7056e71db74ebd4c647df9c1566344469f7a8c2e7b8c2eb18c2ee58c3ead187daa32ba14310ef4660999a555c46d1e41500aa5b71fd1df9d0fa0c4b798de5f4adaf72b0db9e5037fcd0d7d2a1b3b84f4c340767375a5f625c6bd223b04e337eba5f9f5191cab2b8535aa918f806c59bc6f3634060dd7d9c8d5589352c84387b8a6a5d7bb10e3064a1a371005f277b1b3887df9985b31badc0ae1e3737ee20dd81bb7046aba616f9e63c0fa6dd629b2fdb6369221eaf0078c42e49dd66990b65c2729e99df4e75c8ef973af795cd7477171619c6d2fc7055c7e6dce9cf4ad2675ee2b2a4fae64b8bf31d149f9d2882ec0f13c1519e86f7e427ee201bfbbc1269e333fa2733d7b1def0ce0738a9538b90483ef62ebacce686d697f57fbc4e827e4173067cdc07cab5b6c5f7c6e3baefe5f7e0cfbf1bbf3213667057074d3d293acbb3b507337b312f794c4485f6d33feffb1f75f4daa32ef1b28fc819e830528337238634092a264ce04464140598301f8f46ff5dd84c634f33cf57b77ed5df53f58b54662d3e9ced79579d12e92c74226415d4b830ff0cbefc1bcc04fe392755fd73137d2570d1ca7040e4a0cb9a4e49878155daf25eae8ea74f9a89ffd94cb5d0db5bd579b788f458d31b3cf1b0bf801298fe1f2804f6a1e4be00dbeed37e0c0dfb4fccf501376f86ddfd61c31a1183918cbd69ade8e790fb77663115c74fb53067e9cdfcda9dcd147911075baaea35d613c7b356e69124b7a86ffb7696eab159b60427b0d56a661af1ef142377605e193505a3e1b752fa462cb590b18559def83ce4b5be77abe0c25a1c016863a9b56475ebdc220eae51f3fa8ab696df7653aaae3aaddbe2df34e2f87c39b8c7af1e9657ac5f1d4b4e7a7b8c34db30eabb7cdb8b8aa464849fc303707ab4ce6fd271c65610cbcc6c60d7f8529266e1423b9cede9d7bc16dd1ed61a7762d04139ae9f170cd0baac3dad81138b0d45d1b57cc2cf778317498fc191f1855e32071aa1652aaed9c9d815942cdd238011cf23b5da5e33bdbaae6c7f1ae5fb04d91493779c18e563418236f5f5a917a0371ef9aad4e75927962fedb0a9e3b35c6d0f2706a6d7d74bc8e8901660ed69784eedbe706701fd9e5b5c45c5e22e4ba04151d01bfced4b8eb27dd324f5ef99c03aecb51a8db6b621db3d36f8517f91cad8cebe3403ec006b3b5dfd78ed46b0bd95f77b63329ff7ef0579f910d0d31f4baafd16f792e7ac10cf8777afea9c6de96e73ea1671bdd38a5c3bc9767566525a137b3f7362095f7fc730ff0916a7e3d56e6a93c40f37ca6fcebf113a6f1d12d3bbe3999c7b87de431d58275decdff39bc37b6ff237f601075cf1623371323975cc7e79eef0ed9e2bd7e98f6eaccdca838ddf8283b5fd45c391a659c5b94916b837580d627e6c07172472b66321fe706c4a87fdf76648b6f342785dad0f1940bc6dddf64be32f98daa19d6f597c5134c8e8fdbbc89b0e77b4f9d7bdf7c27d3709dd82c8f837131c338d4717eb377367962643f23bbb0d7ef48760773f1f2a5ed32794eec775ded491e942fecef27f976c1b878bf99fb48ef6fb0cfdebe06addff71de951d8d6015f496e3131ba3fb1b538ff9a53b9765801a7e0428bf38007de414629e3dcb50ccc43aec5b9971adcad4edec71e1293be4e89e562306651fb288f61fb9c2b9671135b981e83317b72ed75a831260b72076a4b4fc9975d8c8007732ee6edb9c3e2b8b15c0afd6eb0103dc6f881bb791775f246cc3c8c234d8c49866cc25a279b258f389a1bee25c7160f418bbfdbd851c312adbb7a5c43f526dea224d41ff23eab1203ec83877aa878632f6a9b11e7883990eb7f32fc3439b88c59dee78d8e227c4d1e2d53b09f9ff07f4e0b88575be668cbb3893cbf9749cf657748ea6a1717e33d31d2383e0adaec2c8f45e0c25931c5c5678c9dc3ccae68fc5d6bb573b4cfbdc77395ab7de25cebf16714d8ab9dcb73895f7e9ebdc16ab7e1678cab7d8668feb8987fb8e5e415f804b88ce5e813be8578cf51d2ae3b9f092f8155c4022f26c2fc13ad8fc41d77cfdaf0330afd8d637d6605bcc8fc74b79e720b81672f2e6f4492568424df2ef0aaf14922d51c677e6ae038fc781a7ae3f00c789cfcac84d82a9615948df3b7dbbe772dac13dcd95bcc94d8ef8b11f0b8631fc491d0db1224076f7535349795bd0ffe55a8a33216a8fda978501a5c8af7db315dd77eda077a1fc48dfd88dc7309dbb7e59fc1386e48fe77face3a012e439e4b300e5791116d97d03e2521bb951fe501ce09e8cd4bedb082bef1a2e2f2007f8c829a711df3522cd32e065b63c4119c931985db31cc05a82b33afb79cf0183b0f781aff40ac5bcf9256ff86fa9e22879aa276cf122fde617d09acc5b1c65d033b0dadcd7bee1dd8ebe17ef9b0c837d6226978f51a4c2b39457b5411a3f1fe457ce1ae8f8231f886d0dc075f8110156717cba23b7cbe0d922ffc14d90095348ef31fb0fa8898d10efb016b0ee8600cf6511e68452af32192efb9ff605fbd8bcff779d37b7100b7e5d65efdc1f80f59ebc7eae2452155cffbacc12d7b155b403a82345f711097d70a884bdfeeed751c99e4e0ef3047359c0b8379b4805fc540cf162397dace0b689f7493eb1480ccead9aeb7fbad8e7d112f74c3f922e9721feeed082f023b22536d6c4778150d3c9db5efb5e5eb7274baaaf7e2508cdc8bc44fb3079c8b3f738533462aa6712aa6c67153f36db85a91a13ded5fec278dcdd0b429116a4e66af44f203ef93329f203bee06dfac48486eee2772f5fa52aece6ee5ea27c85522eed6f0ef673e85b93b1b3eacdbdad4601c9f3d6b767d2003bb35333b25761df3542d2387dff7b90d7bec63ee30eac13fab3531b4c63f8c31e79bdf35ee25cef7bec1abc7d8f36ebeb13f726f4270228e8b3d3c234d86aeb542b288e4cb4ffca497e34d3518baeb0e172726635b2b8643cf3adcd5c44fb8f7ad8e713a9ef94dbf06446cb8e64995d3a4227253fe487ced03b0d7adcdff2c0ee592b1261bc73c81ef7f5e8c5c9b3afa633297547918e3fdc12ea8485bda2bc99a836caf962d27d69b3f2663747d1bc9e38d67b81b07797e4a6eb15b91bedef9c3b370ab1557bfc1d9ed3029df9e3ef361fd42f14ec4a0d2c7b1f8ae36d73d503989cbe696eca336646a9bd7d9c37c6eb09138550bcfaae53faca9bbc17a6c6394c80e69723197871ff20298263738cbb75ad1faaafc3d7de8d640fca799abcb8340c4fa124ee6f17c7f9673e07639e4ef648c42b0763fe7e6f06d1f64a80f6a5f11d967646e40fec5b4fac3db668e6d67372d327ff2f0f9643c230c6c682bd4af37b96835566cea02dffc4726f361a25a38b61b30b3d29d215df8755e47b3a7f8fbde9ef2102b8be496746d71d5f1e44c49ce8d89c7b0e9c6027c06d2af1aaa8313b74ca778ffaa71fb1b6e0d52875e37ba00bfbb93912e9691b16a85b8ae6c421f319735e1379dd63a78df5f4a639dd1cf15cc37c1604c368a0b92bcb0b5624b5cab63ceee0fb4dfe4ce9ea6d17ededb57d13326f5f1c31ac924340f494e843bbd40407d8aec963e7fff3180ef0d551938fe87dc0ae30288aab1f01493ca3715bd0ec6e150e657b9c318c79b3d2c6bf7b01a7bd9af8e61f7aee2e1982d536eb49d18cdfc3bcb7cbbceca66cd74f95119dbd5962e2e5eea666e95a1759c2d07f57b2a6e09dcf3c8ded4b39bf16547db29fa171f05fda3c1ac58a94d1b2197c349056388317d2ce3e88e0b341fcf1a9fc45093cb2755ebf344f7012ec522f7068b04fb04a0ee690236a7b1ce7c06af1d9907fdfcdb04dca120f1f7d9cdb5b8cfd05a144c82af1faf6d2cdb662b98fb1b3ec9ddb99878d1b3ba9dfc79edeb00c7429769dee1d977b56ea56b396f36d43975fee74d7983f3a415d586e706b01f8c59f8bb192b632e5efcb9f24c667ccb69cfe7dde2e33f6c57c329866ce97d76da22dd10c79d5abcb635d641ce6b1b38e014cc9dc3cebef884823d610afe9f8b17630e277926f47ee36ba6bd63aeb57a3727842d9d1ae7cd613194b43097e7a7cc83b15b1c51bb1dfbf3ea5ab31262bd7cdd8e49366dffc6f8244af7db8c6ff380346d07366add86e1c65e27ee18f8e189df2c8e656b506741e4e022d9c29dd7164b415ea056f4be6d990839ea0fef80f35396f134779830f3f875e95ac33713edff9dce1ea903ffec68ecde4f4da463acbc814839d6f5688e8b48d2b1cd04eb8d0913c003457b809d2c410fd544b5c19f16f6b5cec91bdc8637721ffbf44a4547f64f900097bafe91c97317ff5d19cd7a645dad386159225492566cf1dfababa41511fe7b7a5d9471fe859f5928935526cfdb67d29256cc5c9df6847491a375a1437e99900b842d0c5cba98d304f329c4f8da3a26a1bb3a75fcb24097246c101afb1de64922cfb8444e218f02cd8348ea7cc047aff6bd7c59466e33e8ef6b84f7402193e74982ae75757a0fb9298720f4d3b5e65ace43be4282677deff1b3caa770de3bf04611df53cb3eca4f67e7069b74c514e08fbac7bc9a42ae11e61c68654d86bf6d95af2d03e304fcde3f8771973a3b7a88ed688c715edbd934ac5398a7e2683b37ceedbcacef07bff0c00c1ee1f6483cb291b3ea6b1c1f03e8d3aebffd08cbad9bdf907fbb4c8d1cc99ab5c5c60417c09b931a67c7a600270f783d996e0d79e302efb133d8772e90831715ddbe7b13afbae113dccbe902adb9a4b36dc20b118b28a19f6f7fe37a4bc02d92e72772acdf9c6897496331753006c659e64748cf45fbecd9c1630ceb4f9e2d121ccb5a78355f66b66dea05f4934a72abd7fb34f7c52467cc17b2ce3ccbbc04f6ea4da93eae324f5f02a4833763b4877c19da4bbbe3688f857bf919b2d942b8c646ebc538233989f4b62fe0d036382176439737a27a8d4f5c9d565dad58e2f56c205d4aacd7ecf3351a411e535ffe976220f3a744b54fbdb9bf8c17498dc384e5ab0eed6fe456d1afdd3e620ed543ed779f7dfe07fd955c8ba3bbb5f81f74d3763e6feab5244f61ef489fc5debf90dce677b731922647e8b15f1eeb1799cc93fef8a0dee79adc872b70bb02074124643d5fecbf8d2713b818845dd3f200ddcac65e2e7aeb5b73d24e1fffacdb4a9e2f1264f3a13d484e3e5563f63933124e5dc7aebe36576f56f5912b339a6bfc8dae4991f87514e0259b34278d01abef563f3e827e3cffe0dc19e8c707d55a837e1c10b68387af4de4f907d48c0b7a9dd3412d12d0795bbc9fd77b9dcb1b9dfc990b20576e7f632ea57a1f1bc09ec53cd0937fdc2fb75a51619c8ae2bd17974c7d32f6dacbc5c5f563e0b3ebafbf43dcd3339ead9d8d5684f21cead6b1fd4b03e71e60e7dd603aa1359110baea1162f8a0f3e7e1cbb589f7ef06b7275d626c9354b586679be6067e0afb57bc9d83df7c6b0f8212eb75b73943644ef2b01b8729dbcc41d86bebbaf954b585bbe7fbbf7dfe5c78fafc2dda0be64a87b9f720ffd925e2d4f2fc54e711b63eef9cf00de46d8ec57cb1dff0661c580591af50fb16ac6be7db48af04cf4fcf06a4659ea3832997b6b8096992f8d5b1e5e3f0e6c5a8f3f7c49cd7e6ce25a36de7c708212ffd1ecf0470a0487f8ea3b18ff184228897155b3297e139bfe459658677ebea37eb2e68d7dd4d3fcc412f7cdbcca95cb046a998ee52f1d097eb8deeb8d5da6734f1f2f8d69ef20780b1f048b738ff4ab7008e09d02d7ab65ca015bd75b73c2804071db2f33bfd62990a4788ab1dea35dad3afafa1573ae9660cdc958d4e8c7301f45fed3ddd730fd81694a02eb5fe1bfbb65b1c39837fa46380cf2f77ec389267482eb439d42b3fe5ae7e457fbb753ea0c91b9cc11bf99a3738ab14a926be0db9d0e0772cc2af0736c3ad7f1a8e61dd3e17baf7e948cf806731ace131c1c1c39cdeb16bd5cfbdcdc7c6feafc8ee63c529e0d7b9c1e4bff34569d7423241160117592b07678d3f0873a1f8a9091c926e737c5e8cfc883d3bf63a0b5213737b21d9a79f2e62e45e1a0c5d0fd906fc28abf321ae3e5fb09d6e505412e682ec61dcf5e20e3a5de7f60607c043c33ebe66ac9ed932ffd28f87ed711c77e88fc3533c70ec2b68c627772b7c2fb25fe5b97317fbb0abce4fe9f4f99ab7eac049c58882dafd2022725fc70dbf70fc6697c5f0a1bd057affd37c4b1c07d48a1971ef09dfebe71e6019399023e68f77993c1d3d79ce2e12a2bebfef4b6323f069f0bbdc1dc7b9bebfd37526d81718737a02f3eb5b3558d0758cc91dbe2411cf7552216dda7a13339d70d4f270c27af8619503d69a9e515b9b3aba659c9b937eeda6d0ab7919fd714a76d2f9bfd88b9716acc48fb266ef805c96e98a33c177e25e9c8159c9d36bfd5bcc035bc8759d36902dbac2792bb9711f439d3856913be96cbf79a0d31a25b2c5cdd08fa0bf89dc1daadd0b8cda2fa6d20ae4bdddc53c4b11ce632ccb514fb7dd943bc09c94b46255cfeb6c99e6e0b3c4b9af1f8d4ff55b9e2d02492b3eff65cead8ef66ed79a9548c7d5c99c40adc55a5cc92992a5c61fa3c61abded07019f87ba24f21962e47e83ff1562ae1f6718632d7e83efaae3bbc618cb7299cf71ae1e7ffc77b9bcb470247c0bd3edbc983ed89bc8bceebaef847c3da33279eafcbbf75153f27dca765e28bf7a1f35cd75789ff0efdec7e447c168f94939d5a047db2975467aa3378f8f1d2e40df1788fa56d78a6f790a71eeb77f392f881ab92771f071d1e01cd4f1ec9ac74eff78f7f605b56486df5299606ce75ebe3cc81524cf3424cf84d42d3d866eeb9b851ad7d848d09cf997634360c20793c7b9fcc8bec5d8c75dec1dd9b1cae47456e7ab770feafc4ca82deac5f11936585245224da7b9ab5da380e7eedabc32519b3b7e2957e73c1beab5bb9a05578b7353a76b9fd44dfe0d653cd1f569227f00cb164bebc996bdc727fb4d2900768ba9b1e0c7dc588b6fd5103279fcf09ed46316b4dfbb07ef93aa75ccf16fd827b97514e7b23e0d559d76490c44210d816750007ea2d0447ba98e7384c0ffabdacd73e80bf8060626a59a0e998f9bba1afbd71f8495a4c1dfbc9fce0e751ec03b69375ae58bdade8abb483323eb62aae103fd383e7a656192fe59c29f6fb8bff0236eb562d8d8c5d8decc4499af63427af629f3a013bc39377c184154dcea306f7e5950687eb9f6ea2de8e56777facf3265919e1b6cb584d349ec88199671aadd71de18d01ef06db53aec32c9a30d8ff42b01e99cf5788bc116705da79c6e999cfc105b228fd0780990a39c20d9ddcb3df2a186a2c30ebab73bd9d1f62edfb05b9bae4e154bc6183dceaf392504d6f8f966ef48ec7efdee0ee7c4256dfccb9f8b9780e7606e3ce2efeff2e28a12e318ad0173ca4b4ea54df260005667176bd900af447f8ff5223696600f9b46f25d8d49eb07ce719dc6f0ec8e43c0b8becd0dece94cd847dbf25a4813a7043e4a6b7854b4f81de21c9593f56b5ca77d9f41abf7ae22ccc917867e3ca320267f585f4c1bcf4507b069e26fa85bb3c42a980b47e5866315e785b6fafbbdbf1bd7dd5feafeefeb69f37567cb9375a2d127d5f211d96bcf18242727e572d436632e669e95007fb58d637c64ae1589257b6ec6321817c9767e8ddaf53116b2e5cb760919e15f790ff8b0f4067e5dbf0cbe8019b285fd6817ada69f94477f961b8bce3047fce729b01790cbdbe0c60af3de79c6b10adad58611816774c475b6c9d96df8e8e8fa77952d038b8e5c5ba87188424a1ea3b110332ff523220612f9753fddf82c129531de8cc11ae27c902b4ce6b4cd0d12130de33175bac085f41b93b651308ef30d912bebdde40eb8b8461af3c8cd156e6342ce42c7e7349e72aa0dbeba92c87924fd5a64fd012d8f67b418b9b918b9a1507357612c8cc20b740eea423a5d60f4631caaa7c3f0c6331da6bcd16112753ffde36a54817919634ed14f99ca1bef1b2dff966cd1db6854718b5db431a9772f72522f6af78bb69e02e230447da2a4c579936b8df9f892a09f8378bde39eb8e3acd0e26798cc67649fd7e39ccbbcc2795191aad6c273b4f0229954be99d07b8be102995f11ba550cfe03a72cf0755a71b1eb1c61bf8cb18fdb3c5dc0c76d1bc7cdb84865b46f227d76ee702ece0f61552b403661cf7709394de3eb51e2afc04386deadda4eeecd4e575ba75999bf625f299afb386ecb4a7ddfc79eccc90cf830abf972d11aa19dc1fae24750af3a756d310b5233c6757826efa7dca9f69b1debfbaee0ff290bbc9fd7fe4ea9c559a6a0dea7bf0e9cb4beb772ed753dff01ab8c6c638af3a7d7c78d8dedbcba16f00eebbe8de3fed7ef80980681b950e7cc03c661af4675f8c7db37717a36da586c2ccda17db73e9a631b639e8b6cc7fd507f0b7e2fe463917db61cf4ce73c1b8dfa7908b8abf716b0fc4c4b116948663be67c72a740fd94c486799bab963f99ca07ffceefa49dd8e344882d902d941c87ea656a9997a03b1f5574bfc30078eeb3401cea42ffb54b7afd69dac61f3beda274e975b9bdecb09b7f507e6d59f8b893f584c5dfbb374ad45087d9504a19f221d1ab7d7051ffe82f6e79fa56b2faa356f5efdd4dcd7bc3fb6638b67b427636e89ddd9a6b92ab03fd135954fad13f40e87c1bc2f26332b3d900754a8cca9fc411c831cb33e768e269e6b19728b81f627981cbfb1bdd362663fd15376e562bfa394caa016ba01bc818b89c02e2631b3a80476a13947a5faa094bdc12e2606b334874717ead5294ad9c7d4527706ca3ea6c568f7ec78a5542b5a99f8e5a2fab8da5188e6c8b7b29f968b2a2e94bd502cc6f9d1d5af2345173271bf2a97fa8a5decfd72a91b999d1affa8fb61b1d4e24caa94c162e2338aaeb04a89ef596871da6f6ffcad5406ad4c9c6aa14f8b45c226eae4ca4a5afcbd9808b4a2c7ac52f9eca2be5f296fef4fbe5c7df88fba9f3250e35009cc72b2aa16fa8a5e1c28329e097c0ccf6be6e830e07767372d2e481ea13e970e48ce1767c0fce239da498b3b4c2032be0475ecf60a5d7ff506628d29363bbb3c775aa6c3bcf95bb3d7899fce286f203c8db3f97b3ad9ce8bb3348e6b2e1542f6f4390e4b39856fcb7afad114c96cae443627d2833c86d61c8b8d3d86ead55279d68c7298dd0eb519c918d75aed56e6a7b88c3ee1bba571bcebd5e0d9caceb392ca674047eae2b087535b3bd2eb2382a746e6e3dcabb0bcc73ee546be233b63f88f32c94fb235cc3680ad00df74f4a2bc00bdda5e23f99d07b35366eb34701820d986ec7faf2c12891f414e61e33f10233741368302791545b5999ba9fb60fc5a1ed8a868b04e30c655e387d0a7efae3ebc2e4beae46ac919f8c2537308dcbdd514740f8c6d52605e051bb851707ebf4e93b9e5d416e6c7fd9ed1d3f9ace17131d961feeb68572eb5f83d18a3bef8bcf8877575871bd7d478cc09bc86685ab47c6fb6d0e71e4f4e8daebd5bb7ed6003a4abba7631ea9d67ccb36b8bc0a7fed3b52b7bc17ae9826ff7ac848a90fe8cf47d8b69f458c0da1c7e99f5b95ff4c57262347d315c442ffb026c6242af0a556d765e221b770cdc3c5c1f534ae1641d780493cea6cdbfa581320af4d6aecd55cbf47c9aca9d8abea8cce8e825a71c8f7511c8fc15cd1b4ad2b3468fecf1ba3ac0f3a0a0f99103ff97ce41ed99372ef6929e95eddf047e9177a09fd8fa9d3d254d04568940ef3f4b136528f5b17b90ee447903b43f1848f7bf3cb4af015f0deb59ae2d525f4652ad2d16e9ca25e4cb828d203cb57f493d7dabed3249e7ca7bcc950ec3aec6180e3b5bf01a3960179809f64bcdaac7e7120ead6b624fa5b75a716bdff6e26db06ef4553b6f96984bfb2c4da6a552823d04f132394d2a1364f0bab62b8a4ab5a67f365a18a2f1b9796ff58bf732caf837ebb5b31b7bb11688ef859444d6af4fba989c540a51b79f08801583ec2f45e32855a74e9ac5a61b8bcd8279fc4788a8abb0cf9eafb152a47dc6d8f9608f2ea826ffd3bfd33ba8fef7d8e27ff445d57e88b2c5a342f22d510fdd5e2bd53cc841c757d8ecc9756e087585ba67d22f0c9c67c391ab63cc5a3f01cc5ad88b89bdb7dc5aad5f277ce5d7f10f907ff7db3e3bcb29e058478e26e44febf7780e62e0c43c2924cce971447ad58d1d75e9f3dedfc51f1fd52b1dfde8e73858d71ea317bf7235c2afd9c448d0de41acf1da0e4e6cc00378b20e7af31ec931a39000ffe5fabbfe3cfc4a9fceebbab81b6e59eaba64e291bfcfbf2526ce90fc959804e4b1179d32bb6f4b95bf7d4e3d0ea07fb81ad23d4e94c518df1b13639aa177801e12815e72d9da48af31873ecf95c10becf52f6651bad68c72cdcfd26382d2b1fa7caee0f7b45bff2225a777d71fb1bfd140d75272e2ce8c643db3669cae4d67d3b509bcd29cab85a53c5f9dd789f8b9a6e8999eacb706157eaea7a656e7e65390e3cfcff69bd9e2e85890df8bb9c6e62ba84b403a9dc184a1cb9ba5c4c7b983f1bbf38dc57e237bd71d88a1a78599a45dc31a831fc9f9839fce4e063f2b1d8b4e82fade60cc2a9ac1ca36bd3056e6da34cab68f2ba847443679fd2eb49f79547171cb3093f413b5998b97a0fc1c201bd91bf8c85e4cfcc3eae89771ee0f3a19ba41ebd70e29d762e3ba86f04ecf86f9077b31d6e3a474f80fb9ef743a08f89d788fe7c260a2945d4d627bed5f2f3a96a4adef4738fe1a8ce3dc3fd0243f64ee30dcf5cbc07b17ea1be04e9d2f068e5dfbb6cccfd0c73ceea81f158fa96dda83f2d6f751804ed0c3c8fc1a5079337fbda8c3c494ca535b038ce4a085e62c3f45fa4f6d5b4cc11ef5c03fe4a442326a7e1776cde528eb534ed5a9a3037391c03d8b8b4b631b03ae69196792bd3e02c7090f7dd7fa68bbb9f2197b8c59795140097c1806a9b16b39d5acd58eac8559461f91c420dd5ef4bc92ad3c3ed9bbdaae944c8a736c3af1e68ba496a934d845c01b468fb66371dbfe36a967b6d1c41b98b9cb0f0fc1f833dd5801eda7c6ce1b9894304f2e015a7b164bc1be187d7e7afc7517586ce6a65ce9d94a8725315f508e2d52c23cc8027eb71307e6562cc17f906eec5d2ef0b3b33bfeece114b5d732b3ad58d67ef0d6074ff4f3cc3c6f2cf7e2a7743717809b7794495ad2ac09c0725f436d8e701492768fc0b61e03df77746c37113abe8e589837cfa6de84b1f0ed95f1bb9f9c2e0d36813411d09e166e09fdd43fc01cc6fcf6938cbae1ca4ca41b9d2818b7b529fa869fc5ae8d6c6b6cd3e25a24744cd4bd81593a8c71f4a33a8f0c634f651e719f1fc5b970b347f4f697b980f697894ed12bcd28660ff698ecc51e53beda63365a9c6f7afd403f97839d9c1f2a5aa3a70bcca26cf4508159628c0bfc37e699437f0fa0ae48afffd6e29e0ee58dfb395ae0274bb82d60589bdcb6deab4aac23343ecee4cd4536ce61917da526e7f5ed83b3c31489630bdc462b72ec735b5fc02f05b5074502d83ee5ddb9836baf38e7fe9ea3632b9c7f7f3d60100730ae9d6cf41ef8cf6eed3f65ef949daee4546d8c6def5012e68a477fd318ab06fe666ef429baef83c31cfc4dec3f988cae4b4207adf5cdda77d9e6dca03d3451f9e13b6187511663064bc2972ccd31fe820f75a109b7b58d9b38277e9e6a0b79a0f5c7c1e5cddc057f6c7c7f8e3129d51add1ddff03364afdc1d476d516d25efebedcf62c8a45d69a0be7ba1bf607dac8bd70c495dfddd8ba8d3b24c904e514ae09ba1a13f5c2d26f9885b1d48d667bf5943d4a2ec7279e5b158ef274674db56ff81fe783f9f76bff9c62e179d585fa43d81ec0e9561bd5ebc908cf5959d8db78cc4a3632f8e4242bd79117b72eccf5fed1d8bd6c6379817363ecc037d109c21f6c09b6530ffd94f426082e079cc8cce6073d738cd62e466123fcd3d9c33d28bed22bb4de093b33007acc7b27be66f7c17534679edd36aed499be6f077d2dcb6b175fd3dd7bcefdda9737a035b84fa7b5cd3699e91cde2430dbc013887413acb03cb78f3a262e0a70905fe0dfd182a732a5b1ec05fc73df6bbdcda34afb07083c4397c860e735a794cc1ba69927bf36224cd01cfad89372477d8f49033fd19067c58012e10703834f934e0bbeae5daa26b88dc98163f87187b8c01c47348bec54204f8049d5f47078e4ac867799adb306673c034ec70e462d772332f3557adbf08c7bf33772ce45fcc7d9fbb3fd4066d702dcfe37e9b50c83ea61ef92ebab5495dec68f767b9ff1c59d5f4b43469df1d1f33713cfa616e11ba49177fe961cab93addfa28d42abe2a13bf58ea71b9d05783c5e4835dead337578b011bce3b982727354b343ffd4331120e0bd6b3c48b371642d51600471ce97bc05983ee39acfe91f529fa3f51748a53c64e1a4c8a877e1ac97eb54f258f7967fab58dc009bf7db82ebb1867bbb79232fbe51e49625e43dd733f3eba27e6d284e2546d77838b4fe03c69e07f20f63373b4e587d96f7cc38a8ef481aea61ef43a42deea8cd3e522fc1759a10b6cab7b54535ad2b08e483e67f31b1f76e78b1c283ffab07bfc4d6755ffc8bd0ae34d23dd3a18c7199183d5e0495262e49e557ef42e213d6b76ca24def4bc28ffb6b584f4839de13a9dbea883d55b8b93f69bbeaef32c705e9390613ce45da5ece39a7776572c274e76e3337d55775b36784a1b5c3391a9f489b2f5ec22419e54fc700ebc5e13f7fa89ac4f01dfb9c50eab3ede089d05c9d726a7a494f4fc5b6286237f9f671bcc7d95603d86aafdfc27c2c7f01b59675cdbf9a3c774abbbeaf16f74902e26508659fdfc1278184a21fa9dac05bd21c3beb869336643c2f6607f6a47e7279985123f7c1463aa48bda79b6bd3501a93f16eba5299f808fa443a02ff4517ff8bdffa7a94928aa951e70ca23d53387ac929b1d1b73ffdee7bff33e96f5d9437ebce3ee51e83ec980565f0336a33798a69fcbed54f25c94b81ec566caf9a809b47fa59057e78ec30daa1aef8ec31eb44e2e30ef39d9f55682d6f7a7af1e8eca7b3f3a63a25169304aa36bd2e9b38962d9c3d2b39a37b01676cbe3a7b03935a5beb836b2b609b4acf6500fa7d0ecaf884bedfe503c0a994533af350ff1f809b8e9025903fdce4ba9d8d29a76be65a346373ab192caf19ac68cee29b1c96692aa635469e4e87dbf9f5e8e8149afb17f920865e9a730eae6bcf7da6081d267f14f726f58fbacfa0ddb85f4ae010bfb8bc717435969134b6742cf65b061cb4f5c1d5301fd3c682b5fd639c7539107e274f7bdc4737f8b5fcf0e847d83fe69a9097daf13ec0ef6ebe2d1bff8365421eeb1713bff95191e37afc76fd015e381933066e8d3a2eb6219e27f3c0e344fc1e623eb40985f4bbac5bd30b8eb0bdce9e4e53323f3c3b159d40aeebe46e8fced13779117ba9e5d168fb931ec81bcf75c083c8a171f722b6bcd39f4b91f620073639bbd64deee7acd1a39cb497775ae74f9afcec2046ee0f7a70a17f5974e431d773c0733ab6c702c3b1fc1c8da937379365242e3c664d7bbc01759d5d0e5fdd2eb38b99a2fe10903d682fda7be4f909e791d6f604ae8b7cc85d90b9d1ae105303d95314da9341964f76a9db8ff7a1eb287c5d97177b932f84f447f4ef6cd35ce253f4c59d9bb9fb206ee8ef095ebc8198e09c2b8c21807d8ec3b38fecf51f6c0a3feae5ed3e1cefc6ce025cf2899022dd8ed8d743424e509245c45cb44fc0de94708cae4473fb361fafc71d67d29c9ca2b15ce13a65e0d625f6b0b908dc6efd1caabeef4c8c5c6cdb7763f9e7853dd4e6ef6ff5ec59fe38b525f3fdc89c73e00336719b5eeb44ff3a3f1ecf2d585f57551322991f1ebd88ad54a83d0bbd1ff53aec9fbcc3d445fd238dc5dcb1934b60afa016d6b182d2d504c8d75bbe5abbfc820d78ae7298d915cd818d16eebfecf5c56716a10fb5933d1d317be60bb98d1f136372f4f72f382389bd83b0c77ab528ed9e92265493e3a232cfedfb2e464f3dcf2103bcf0e7f52fcd3b61ee0126dc82f20fe61edead531c795e207ef7edb211915f9e91edc279e97623678647256afccd4aa3a35337bed18acc8725b8342f18df2606bede3a1fb7f32f1eccf3ad1fe326ef97e4638418c057cd85e702af13d249efed9e5fd4fd272a63743575e302707396295a5ba06b451df7b778f99a17a3afc1ae58ee3ff22f7dfaa68c8bc1326df9bf8f92561cd1ef86eb5b1a033f2781bb343a7f4d04b45f5fe4c3aec4bfa7df5ec90e24ade871bfc807bfbecee7bc921d2a113a0671fe9bebe21238604b9655f6f0bb9098d179338ef31e374cc91eebeb8ef05e5d38c13d6d1e8182f320f8e9d91d88a1cf87f9c612ce6bf87b77fc6268da9baf337c6e07fbb3c370279fe7682f5dbd09fa2727418e0f1ae7eb2379d5d8960960229bc836a3d15ef3ee8d77919772b16b2f127f0c3117d0d70cc6443a5f2e8d45d0337dc6bc0a11f8fc63973175d74636e4f528804e78aa5cfb23427b01e877347a569ca367c36f669df9113c1bf4bc359f94f5b3e137d44a35f732263a57618e22c0ea384a73b4cf60bffcbae5f28576288e2526de537e3cf67d8bf1d5ebe7b5b5e94bf48d3a3f8b5cebfa1c37674043ae0761c3ef556b78c6fda51c010f48ff7877f7c59eb0e353a296eaa85a0bcf4da8dc9dd047392dc22f8ba38329e03d9d7d0662c138a70fe7ba2fb1aebc3b6f2ce0b87f6f78ccdd313b90f930d958c1319864b19cee72cc85961d8177699c70924d1331e40f4e999cae2adfd5612e071fdf52c3c9c9fb9c439faeb67e3a003e2ff8295790b753b765e5d8503f72744b367381a3d73ffb35c7ae348eeb36261cd13f0cea1fb7b665248dad027ecdffcc3f36a3e4c3e212d8e2de05fcefa432baf7a4229c6ff0146ecf636e8e2f9dba2e07f1282062e55f503f52fb18759ab10649b01cd4f308db19a79bf7c6809daeb14d9d20fa06fcedf3536d8f0cdf36e83e64b759c959e7cdb3a41583865bbe39077d600678bcd033f1589d9ab19279aaed3f47631bd97cf4cbde7cdbcabc80f66c58937e89dab143e33a54798118d75d37ae739f7392d3d0d68a998ae4009aab5a3890a0fe30483afcfaf5f8cb486269ee67983f1f7287d1f762dd40a76704362125a7e225b058c00d5da5dc502dc3ad6a9f868a7e2ce4ea23ff9a086fb23ebd28e3826d8fe9f5b139953be54b3c7a9273e8415b4e5bb4ffaa06ceeb06fb7906fb77ee6aec50d28a2dece9edf9d9109f1788f3f1fdfd3adccfd6e7efefd7057c1eef215b240f6c2c0fa03df26c74de4c68b85736e179d93219715e09fb015eebb3cf4b83cbe497752c72be7a60e3d73e422d4c54ad6f2bf85198483a972c0fb896e4491f3de42974eb9c8f3b793aee7cc6201fcdd139a846d7651426f2617782efd4e28b5db20319385bf1359b49734d8cae61eb6b8e44eef87099d6b235ca900ccdbff40ccbc681f017c9403207c1b5a9e3d760f7e645ec509ec7e87f765bf3ed80fe81b964095fcfe2a5fffb8b012c7f249fdeba3afd566675c7e620b71e1d9b6e6ce1f658e2efdbbce0bc59f7cf73643f8aad5680dc3419ac8ffc706dbab11b1eaf590c63541d2b655c543e3fdba335b74e67a05b2e5b5f4d017bc29a4f4eaec55630bfa8e4ec3005edf2b55c9c2b6f823ecd1d8bcd3c6b46d5387ca1972627643bae6b4ef19bb6f5f537fd9393f9d97963d1385f2546e3867384967be3aa8cdbe7211d71e6d80bc016effabebf6f10edaf31cb70ceca2b1f926b53b99f9aa13bbfe3a705fe7a6ff071cf177ae30bf51ee723de5c83ebbaeef073f7dc1dd66f63b37631893b9fe36f6a21cf2f6b21d1bad34fa5ca1b351732ebf9d17d2da49f5064edca533c7d34ae8fea1a9f5ddfe7a3c7f519ae793adb0daee583b85eedb74ec87e0de634f088f4d731d4e5940b7df73c4797b46dab3666412995d3f8bf29ec0b9fd67f0bc01183ff56b2e520c8bc747d09cae257f1afaf419fefc38bc2b2e6dd4dac811810b5d409f6e5b5cfac9f1173e02bd4e9f78d9e95327f85f5d7d9c719d2477b7dea275413ab27fc7c4abed18ade6f2f021f618eebdae2cee6267225bd883d41fd6fc4ee550bd9dd6cfc201e8fbee92ca7a37a0d14a39ffc6480bdfd24eeec1f1a3fd9bd0ff6861386f41935bebc544c1a9b9ea5bca63e9b5e876ed9e14c3e6bd7335f22e1c78b748b034c3de1f0ab18f8d666ccaabd272ade1b3f18d858d837433db277918c553437a93967ce981be93a145383a87b5fc1758b315c1779f5f721bbf8fffc81ffe70ffcbd3f5078e80f24729d6ef1ae6e6b1d48bf11d5e4793a5aab9f6632ae5b3e7f4de8a4fd5ba7cf844d50a1b96f0d4edfae1dbf09e93a73532792e7b52ffeae6eb08b61b9b6bf0bc658cfac7d4c439937ce5f5a53ef0c7c5401c817e04d146e70755fd7a7c0b3a116b9c824fb14d635d88017d9bc4fd189ef9a089c1f35b5d47141d429b3ca9ece9e7ff322c118da42bb3e5ef2f4f3c3a3d4bdb3fd76a4432bd1f5d8be336afba190b45129d93467237d780e75023d7f9b305f1d9fc54c1f8da7c72cf681fd9901fea9d67cb39b211b051df30eb73542a7b99f2677b8f9c2c1ac5ced13f2e2909dd2e78284365de4b9d2c870baae6d7fd8a6dac7d1b5276dfc1cf4a5b9c61fac137f4257cd6f772066eea489f7b3a99f7227697e6a6cffb7aecedcbc9af0fc907bc037d78e4f5d0b70760fe2c5d3c2f7d6b63e18f8ddd3ba4d732a7fc1e106737ba3ed4245bbd6786b842d53b27b17e39c73cd7cd0ad19b519b3a9c7735daeea6141b9f6a7bdb1d6d4663c42fbf7c2b1d7473975738fe14a89ec93a65d705dfb9e8bc32c689f4f12772626ce601d7a6990bb3a0dedf3a3b08d09ebc6ccb169f7539f9933798a64bc98f811bb5899e1d68c678a6918b96cfcabe3dd5cabf3a974c655ebf694aeb59eb85691fb15757dbaae7adf2fbcce3fbba9f5aebf7f80efe588fefcc8a40a7254df378cc92e2311e68656fb8b85e8751eddc3716ae6e9ebf700bec4c6867158829f88172ffe4179bc57ded8b3164d61dd6242f56ae9c83a277f4f5d970361743fe777b5dd705f13455edbf4c19289bfa53269b01eca8d85f453dadb9814b96fa462149e313f69834b5daf49c6a4568c997b5316fac549b9d22f41e6676dcd1c3fe290cd087e54b22e1b7c5e02a7ec4fa53aa193e540009f1670c1e843ce2b13b0a7363a7d41ed57ad29c687b1869c47f0d3d7df85fa1ce6999ec2b745de40ac249e856ff91a17b86ee61067927ebaa8d6f45bd16edb34e3b6969923b919905c8a77185bffe2fdf3157a3705efb5a9b38374a7319e4bfdbc0df676fedc3d4b888a5ac77dc48750fb927adc969f94ac4fff51f50f885993631c8ca9c23681d3aedb37e64533470e68ffb706ab9362d29e6b52e7204d2ae045991723d031e766b51987ef5f930cbd23ffd2b364dbed45cfef87fc863893e7ab6f452f1eec7d8015d6edf7b3132555b3c062cc404eb9bd3330af1bcb8cb7f3e2e67bf2e67b988dbd00de971a5ffc1ad88ba3343f0d9787151a7376999a90bbfad3fdc8eec2dc7354a1eea92be8f9bdef5b0716639c94de5a598fb637ed47cf95f559d0c9dc35d4b4cb874fda6776e00b0bc6a85dc649018c9e9fee5f7182fe816cf144aaa60fd7f593b67effa6ada8bf7fd1d6ef676deddfdfb6f5ffcd73f1a4e843c8e57d3ed6f5fd1a55fcaa9df8ba5773f184e7e2e33147e3ddccad7fb3765eb4fffb97edfffe65fbbf5fb51fafd9a7ed27fa3b2fd487bacdfd3e50f7c98f7398bcee377305c9eefbfd00cfc96773f976ddd5b23715d1bae88f8d50c7891eccfbbc7bc72ff6b69fd7655ec8f3f80df5e983f95f8f6b5e3cdae3a07e62dee862182bdde0b9fccbe24e1b8bbdbc903d4ded78ded537b243c0a5ea1f63556b48c6b94a55ff78f7f71873be9dc39353299579465c97a1eb367a7b5dd39f3556dcaa19f7d2364f99adddcd9b52b6576787a9f9c80ebb6fd7a4bd8d0635d9b52dc7b212c3f6c600fa45afb1acd25ae78db954afe79d9f9a31e83d73e51bf0665ee9bd2d0e9a7975f919e51ad83f0ef87424a609d29326a74b6f3dcc82cc9daf8f4b66847423e2da29ba367cb87626a710f5616ffc192eb098dbb9dcd359699f071cb431c48ce64f7555229f12e7ecd7dc139997069a6b2d28c7620f1e6f1cbbfeebfad548cd7dc0cfce2e532477f1bd3b7b754d3eaf8dfd293fd93ce89a3d5ddb4f74f8350e7f6a4709be08f025ffd0067dcad576c169630d8f3fb4835534f4fcb8e8f697676db88945fed80e1ca754a2841c43ca3f242baf8e1ffd9bf5fbbf5f97e043bf5f7b7a8bc947dae9a3ed5c3805e3d6563e7f8d4f893af91c6df9b87f5c3b9d550223af7beffaf1b51382dbb1ae970fc6cd9e2806c8261023b76fff44bdbd612831666031f7cfeec9d171ebab0d952ed6192a73625f051fdf82f6d01e609ad4c62ab2609ea86e02fb2dd41a3eb70f6bac8b3a0f59e647b9a3d3c021a4621ca41fd79acc5fb91fd74d54ec1b4cc2176b00781f7e9acf4bc6e8f7d9a4a0412fd1e9e4665e64323fec5fab177b74ad53d1e7feb5a03ff4f646599fdecf9df48ab9faed9faf6d784f88397c52eee4c3f01f37725289079e8a9eae7df74ced746eb18527742edb06d29562d5724e4e9917847d96a9d6eee28e8b8bdaf8c87e9035c198ad6b3244d58debbeb7c5c49d2e128f2f2a491b1d37e32cc6f5d4f13ffe7ed4ec51afef1bfc24c3e28bc4effe4afceee24771b68cfe77ed75c75929a5ab4ce6a767c75a508135cb57f602f0ec0c883b8f38e0ad426b822fceaebda8546b943b1a1bba7c46a3f175a7c4395bc99dbeff146a133d86cebc74f4f6affdca3587bb3c57f2407bec336ffc999b17fe4cac8f80bf886b7502d873563758f9f7f2bfaf275c91eccf1feb09579c17d493fd4570cb21f0403fed61353915755d32ca139f9172e733f266b4e7d014e814f53d18037f42d39dcf7d4af89fe302eae8f1b59d9eb8c7fe4a2fda9d14ed7a52fe9ff7a3be9cafaafe496097034eacf7c59c922ffd1891e3f09f7c8b877a8f1adccd97fffffb31f138eae8b912b21f6c2a6fbeeb6b2244321f24c1e479ac0cb77f574803723d84649b5925fac1afdbc69ca6dff5581c6bd9def38da1396dc0f875b198df3cb79521386e75bc9b7b7d5deae0daeb719b3f459372f269eca7e1c4a8fbb4c3d621e25e84ec299256d6f25c8d673bec626284fc59dec41b6a3cb63c189f1ecc7baa9079e3fbd1da95f5693fce36ed727548f9bd3c08b9c173997758bdfd02d310e92138677ddce4ac7f6472f279d9582cb51c08e7c06233df36933ae6f2321f83ac337f96a782ee71cd132595c2db3212be092cfc40b5d7107f7994f702f5772f6242e8997653eb16b10ac4cd0726e69418b889bf7f84cd4f62dcd138c639668710c3d45816e92f5f80ffd08f5bd4eb32740ecad18b701deecd5aadf7ae59e49735a679459fd5fdc71f453f9e148cf1f88f321915cb8802fd0eef8df1b91ebb236e077a7f9c3b15eddd9ef7d079fe7afed29240e61d4e1917c73abff9b29d1747959fbe4bdaeebcd04ea9a4711755a78ef2def8de8ce38ba38fe07ea9a22bfc8c9c0bb42295ca3cdf8cf36f493fc2b56e145fbceafae43ee75b2ae337a9bbff88ec0c99571a5f4d1d5f63571e939c837198cb875dee8d59b6ef3f5f70f25c68e211b0ceeff11e88da801ac3eb06e72645bab96ecdc07fd6c407fbb17b3777ecf5c2b13f9ecee11f6a23098e9a84ac15bc9957c35e8c11d9b13e6010b04827a31dc638ba5acd053a5fd5b20bf8dabbbcdaaead2ff2b03febba4c1378fdf17beed75a877b5724ee61f586e7d5fae24f324a3ec4b99fe25c68741ce992b53e84e668e40dd694c750e81c8bce6ddabd08c9b43803bed0b9b977b5879cbf6d5ebfc79b6930c91abb3e031cad14da93e338994b495a51d6f9f2a4fd9fc80711bf136a0eb0be53b7bfffbcc3fae243bc06fd1fe74eca5101cf9d9631619bf3c6b9390e781ff5df982fb168daf938de3ac7ed5846f493f3d0a6c7e778f112ccd7174f3f9ef45a579763fad39a71d6ca28ccb54d65b772c22b774757abfb8631ba6faf841cea7379ee8a8eb7df00b907b7797bcf30439bfdbfcf07fbb4969bbfdff7b13d4eecff4c12bbd62c875c7da3a9af38d2cab8b8b8a95b213d47d97fe468be62bd6c56f9bcb90f6622c8f0e57e9afb84df638d75a8ec2b3579645b7803e10ded9b019fe41b7bcd76b8c843747cef31f4d563582477f5260f77b9df5db75a817312a10e7d17390c57628efb26e7bbb6e7f924f14be141be400fefbfc6ed0b9286af8fc833cc247e98c9698274d4d04b1749bf6639bead593bfbcca274ec35929191cd3c6c0fe6922472c88584abeb0fd666dd17996b2b913c3fd5b82e3f5f2bd974729f9792bcbb181bf67dabf7b11c14fd74567bdc3e24f65457b7e1effbb9ae5e82e3e17e44fa3f63c017f0a3a47c944f25f17146eee11b7bd1e244584c12483a87ebf46d11e2c33e70131a47493f3ec9d183ebfeb826c62f977813f0ccfde494d95afc561fc7cfbecb75a7d07aa19abdd9ab68c08e767bf20bb015ce1b0b7812ce0e03b86ded5c407dee58059ac7108bd968e159029eb184da58b37c63674d7c256fcf1dc067b3776b2ed71eb647e9a4d24d1d67bfd68d3ade6309777374abb17bc72a729c47562432e097d77849dd334b49bb4648bfac732f63219afebace740bd8b33fe26c7558bc2d2ec607e4044bfcb4d1737207f487d60790e3fb9a983de8e3993c379a1acbdfe28bbdfb8c49e975dde5adcf0efcaab8eeeebcd56aaeb2862f39c632f7deb7fe5ae70dc6ecb9cd2749c38bc740bd52532b142dd3868f59c848cc8bbbda13c6387b5d6ec1d163b8581ac76d9d9bb0cf2046e4a4452244719b23a1eea77fbc08bfcf64126a33c5758a3e5f24fdbc0b235ba675dd9c1964011faa5e6a76b930b5ee8ce43ffed7f40f9b04d493bee9e5bf3436129a57eb09b16f57986b30e62c9aca3df0638c463e5123e695b0d790b194dcafa810f4696d0a7ab48531e33d1bd7fbe59b097595f91527e8d3dc9f50d7e5e063e427a78bad75cff5c7dd1ee656682fe0026bf019c869971bb3e1b90bd496d53a17ea73974fd2964f5b8398d0be89eb09fa146af088fe4fc56816ab6548e3bcf085e7cf28e049f126f4017252bb3e5f0456416deccf1cf52b999fd3b68dbf6648ef876f314f575b63afde6091d56b3efa1a0b99ccef9e9fd7d0791c175deea7a16a756dddce0bccc15e01a64508bc45332ac7358870ec5cf783bdb1d7479d618939241c1dade8da0963fabf69e7d64a5269be186de7aded768598c704bf8fa8ebbc225ba4c9c5827623f9f6fbb1adf7290772ba88b6bd5ac319f64fb8899f9a480e1c83f1f37a0dd813dab8fc0ad612e9c76b6a24ddf2a646d25a78f5fcedb82af9c0fb322988a1b6cfac8f61ec1b879c87d9aff681b9e879348de6681e44f1bb6b1595ab7d029686aad34c571793bc9c0b01e6436efb5dd24f183b18eb5527a8416df92ecc862b05e9be8dde982b5196c82997ba8745128caf57492bb6ffe93efdd48dffa1abf593c6e250888a5462a84ceebefbecf35cb5c1be9da370882399df7ddb65c2b5eb604e734dbf34eb1e8f4dc26dbafde51f559f021e9dcb2795c37068ffde07bc19ebf59ebdd1124ee6d799cf2c2e5eca260ef8c51feda55d1c497d92e7e955d4631b432bc267f7f8cfee0179daac09e10d723280a3e2858cba89337b0393726db1f66fedc07ea979cd6964eb6b2d06407c51f627ea7e5ce293ab17a013021efba3f31817fd6e5f9118e31f0fb84046dc93f338267533ce92469f551eedd7610871a807e7b1aedd6b0b2b44f1b7b7672bd456bfba6b2b3e1f25042781c1391af86038afa43399571a3f52e5db2225f1d7bfdef8444b0703facddd53c78d76ba205b0fed99123ffdf6cbf8a24445acea0aa38cb992a857bbaafaf4dd8f7eaee5c55c9141e2a526b24712a3e64b9278e57bd15b43c55eaa767f7b6b0ce398c4d2e1e36fddf695a68d8ae5e423f72a3a950642737cef0d306696a3d347e278b5b186e838ce9dd5fbb9b3c12c7f243372af8cf387e7342177b47abfb2fbbc33483708605f3546247e6e0071efc66fb50b9516476081e41ee65efb6fed40ef2b1ebfaf1f170a6627fa47f9c2fbf81b2087d81979e433c10e5b78c198940b851724582eb8652317f0315c73e4ff07b9b0f60293caddf24e261c7e2b136a3e44ca1a98b7f280fd8ff2e0bfc911fd046d78200b2ed220ce64fcad0fe4c0f4dbd312cea74f742307900e59ebc3e9c662e315c6fc3883bd5cf57237483b04e9a925ec932d4e051b6f2c37756d31f1d2458279568cd77a44eda3f9c1c6b8d34f7c8c53e3d9fae937fbf959b50c64e7c6ae1daa6e04faeea5917bf5be96b7b986fce84ea7d9e8f0bd17e040af0a82ffe974017d4dabef1d4f8bc6e67674681fe62eab6d0257bbb309f03e06df925f559d061e4d229772ba4e16e00391f851be01be2a23f7cb18d997b50e06bc8f04cf1295afa7ae6ea2719f3ccabd292057fe8b31bda0de23daf6cf458c8f43c617eab67bc989b26fdb0f7cea90837bb14dbacd8b6cdf3f0ecf380f980bc8776fb58258afdc99b4156e6ddababe0ab7a52c425c7bcbee37bcb9df50442e886d86ee5c0c6b7b0cdf87ec2bf314f4be670cb58295a489a99f9a09c60b5a78de8c4ac583d1c400f29aeb84eec67a7895901e3f513855a76962cfa0e5b4ad89afa4b1986e6cb10ac6422646eeedb9cab590aeb48a24a4f3822ebcc8030bdbd230e6e89c3e4273e604f5021a55487af63f7b879b72b47f581f8528fe83f48bfff80e640b97eee373a93730cb80df35df51c8fc9453b4f8edb62d3e63ee3d868d81cfeb006b74efcd4dec0f001c0af1f1b9d4bd04b6486dc698e3beed2b7d9a2d1933f719b3de5b142e304ffd787c5dcbd3702b4ae3f86fd0cdebccd6f3c84d93d2af71319caafb06193d3feafa97384f8cd5b11dc7bbf3f8feb67f3aceb77a1cf469d6d483a07527e39c4b6cdf3fd57550dfac13c72a662e1f247a535b6219678f71539f31d1ba7f788dc490d78cc09ef522f6e05a2cf04dbaa6187ae9fae2696122a70ffce4639ad4b19e5c7322af0925ad88ef75d35d2469a7549e7fdcebbb1ad27777481fbcd361dc719cdf1dd784dc07ec1b428edb661ef0c9d5e34db236ea160fa26c30ac549d06cc2d1ff4fd57f676dfb6e8f8ddd1d8d53548c8ce7fadcb66d2bdce8dec83dc2bf387fd81e4b834006c844caee850e64717d59a76385f0fc7707745f3a01def4ac81bee9087f36af291133ac84589b0def140e7c8a481f2d01e91f9d1770036e2fdf31fe51b127abd27ebd3bcc7398df1d0ceb0def77469510f63db65a33f495a46d814492069d7dbfc1dbc2f1cdafec9a4284c647bf5ad6871260d569994b29ccc2f8eaeb5f8d6bbdcc47560cd62b47f04f3bb39d4c79400fde8dee779e37f4bee75a721e9d34176ca7bbd27bd09a95bba9611c9f345027c069363e41ec4047244f0bed35dc3d7fb647b8d48c67fcb97feda5284d894638b14c445c64288f428e0b6d07691c314a13f5040c608987b2777ed5d24003fe63a0cf8e9514817b9632f2accd718260fe6f8e8917d2b46eeedb5ecc36b35215399f8dcc811c0346af3638537f781cf4e3d3cda7b30a6fcddb31fd9d83a8774cecc3f2ca85fbdefee192fde77d7b6fa7db52cfc9f7fdfa3f701a722f8ff404fb8796783c902fe73c75a7cbfb01728827b21941ec7e1fe51b43e2f3b89616355b340b28bd1ed31cc53c73e8e9d0e6e70a6a310f60c47a3b8852e90392f27c7de1d91dcedea46afb95316a96af7f33a801f09635d74987bfa47ee825ffe879ca171de627a13df9d13c75ec98623960d754e2691cbd0c431647e775175e1af3b2e8eb7f93e9b7106ebc89b2717cf4ace1e8573ee36769634584f983beb950dd5da783fc5898668bffb1ad321e4ff80cf2b3e3998b303da8fced7791adf4a94c175cdf7a0732dae6625fc751afc9f5aa6fa100ff1914c6530ef49cc3df1179e54ed49aec36cf4ec9ee8d93dafc7b7179b7b924331e29ed5b63bfab39c0ce5d93defbf9c37947cd88d546b88eba8615cc0d7c8aa133a84f580c707e4f6d7f8d48dd19ebe609d1a9ddf7d07e3a6ce1ddf4fce41754f133ec3185d7b6c727b616e3618853fcf9d2ae0676530ebb7d91fac43ffb0769a7c79248b2cfdca39b0474db9eebee65d6c6c4d861ce13b4dbcb4be3f35cfee2cfe07b802a2107347a2eb6bec046f5fb0e85bbe74f0915ed49442d79d540be9c5d3918d9e391b710ee4c4b111f4e19eae9af919e8f445b686b937a12bd99abefb63c82d3b48159dd758eefb3a271af214db35598667999fe68156e432bf8318fd2fc7b887fdd5d76d76380fcf1a663283b14d1e9c67656b8acff3f1c3fbc9bc2a2f8a2f1b9c6bd9b7a7c6e1edd89f1c0d5feb5774b21c2823d58adffdb28f1110e874b91c1823d51a61bfa2d5d6cf55b6d9f8a730fe578d075bfdce770f38c418674b6387aa167673678cc6963b42ed954e1d89f953b7b9c8e4c38e939ab9d45e1f37d7a3f9e4d6fdf6385f13b816e3dfc5196ef66be873ad383f38ce4afa29c175b66ea2f2fd1c7ce068c1e7ceed39b2ae956ffbf626371dadfd24b8d5a5e17d26856397b59c217d28ee9eba2e1967e4dce040b8373810201f99557b5d97cfbffa96ca64dfe4f2bb09edb9332a15d31ff03ccafc7b39701a1fcdbed64518f9b0b8f887d56d3ff7302e9a1a9abaad7fef6a6a70ee6cef9ae677db6e22d74d3d087f647dfae6ed8b52ada66f78ae5ea17ea8ce1f054c1b6922fcf5c7a7a33c11febae5e928f3bb4c42ba183fdbbb666f1f60acea33907985ac53ca1d327fbb8f133c54f5e9fbd7a460087fe410708189b10a2aea2a4f0d243775a4b3e81555b8ba93af70fec11264e914af17c150de252d5caa16c6d95843df2fa89e1f7d3acc9bb8886b2579e34fc13584aef735a3faf54fe4b1764ec617258a513fbcb48bdd28dccb8775f96536f56a019953730c30062d9253583669c93b7cd7a495c97bf9e71ab8bbe7c8985ff161be9fa415a5aa4d0bd0072748c734ce01d29ff984fa3288f9a78567399dc59b8389e650bc3e98b9c7b3893f50fe59dbc5c88b9ed412e9f40ce46fc4a68155e45e6a567ec50eb6f3e2dcab47d2e98118b964be367adf3e989ba177d366d97af13dfa95d34b9cbbe6ef713e971f39a93435b8676d94a723ae9f4bce86ce604d3b56f1e90f3e1367b0d6a0b6a0045b30f11958c337e7e23ca8e8de37c9d3f8fc3501bd23d7349605bd45ebc56b4a15b849db71e4bb39d3c513fe176df32aeabcd0b25efba47257c8567c21ed87e7cf2f5e3dffafbc37b22533fac700bd42e1bcb21091ec01b98dfaa1d6cfb636c60777ca277bc6200ce0fa31ba1f5def9c7d862b83c7ba2a99175ed74b81df0ecd8fa15a52c5f2b0aa6325bb7fdc265763322a96fb4fac274de8779f0933f7b0ae96c929d8a2fdf737b20ec9e1dbfa945e5d245aabcf6b49252d3b425dc3649a7b7b90c5bd5aff9b9acd93f3b2463afebb1943ff164be67a6ebea7c53660d6c3656ae4ee3c7ef3007b32eefcb2139a9631ffe06d0e58fec5801fe4e2a5e639982daef5fef2e6409e34f4c3b73cbbcde3bf1b97a77b22f62dfdde1e932a3ab10067605dd764e4185b5563e3af0e5fb5c2793ce8f95d5f343e2989773279b6e2bc32cce5c3e2b8b15cca2fe3f7602eb2b59c31e4837294f43c94f89c33c7ec5902ceb9f5c54b8d96ff763da1bfe5435d6b4cadceee7cf7ad9a1f68de4ee574cd4a15bd920f09b7b5d0982e8ed24cc8bee8d5d9d5424db2e97463b1a1c7172c1c8b7638a78a1f42ae943766c3defa6a74d403ae3592c6e1abb955cad64b0c806f458b2f48877a511bffc37ccb0b493b16cae42393abe9551917796f2f379a9804702d1c9d1f6a02e572777cf1bea112fdb096aa692645affa247edd27fa14fb48f7e85b6ebfab2f5fd4f485eca9e7863e79d9de9fc7473fe54f646d230b4aa8ab8379f0b27ef8224daf7fa5e9f5027cd6f6029febd70667f558fe55f48faba48d0a65f2c9d5791bf87bf457dff38bbefd9f7e0ff5f7c5b7fcd5b5187f078c657c417f139879790f4b186386bdc88f36de0306c9126e20cf0dee597de8ff6123ff1f36f2ff6123ff1f36f2ff77b191a7cfb9d2cad94dbfbcc67b7035f49d64bb3fcf3d8e2dcbac7c667640fdba9d5f23e1d0bbb6fc17d766ffe2da0b708d93b556c0b14b725ec23c875a3295a2296437380c977b0391ebf1b095fd7a679853138a53edd51ffc77067ce63ed299e7bd36d0cdda6e3813541b639a01171acf95aa6564fd365e9fb79181bfdf9abacdfe7dca6feec3759efd36a6c0658673b54a8fe128bbc2dcc12da63093bcb9e68853faf71deffb7785d6455d63826b856d5c0fd2ab4d536674576705354d22d5e109cd62770ab2ece61eaadf4ff30fe0afe8cd433c4ef573e8c41f2c429731b8605e8c84a83fa601accd1ae300eadd92ad6a225b504c3756910b69726eb0457af5ce3fc9ba47f768d70838de615f5c5cbcd4cddc414f0e3ec499aaf58696c719f04fedf5d14fb981c0831fde40eb7f6d8b6587e99b47029f5402cf5e82f16788d641c39143d43937fb487d4f9c7b7decafbb7a619c83706595c9c740d16356d91bd4a25a5d977a5c48daf58a7400655c94aa3e851a4332de2946eed5b1c5ca35a016bd89171defe2a4dab550c6c9683bf978f7f774a94e3efef4fd14a7529e7c645d5d31f00323bda6d59d940864053177941bde5e22864be7a5ad73bf689b48b6edcddb9f1a8cddec411bfbf336a172651cbf91f8671bad384bc05712bf4b35376e30be7e4b038158bf2627cf837263af43272d926534bd02576b13fb4b936a8d6b1c13a2b620f32917ea1bd13c7dcad9d8e8db9140f20ca235d8ddafa1f947f5dea7592ce55a41e21371c28dbd10bdc33a7119b3dcce8b67181151e313bfd35388ef407b7be70f6cfdfb19e6b924da82f6dac32259a7c5c5b157dce3e3ebd176debbaef72d7a3a5bf6fb8d0df5c38b3e9baf907ec2c9b5af38988bb497b6b60ce5c37d2fef1f2913aefeb645b2b1d03edfce8b166746b2a9da0e896f6d0f6e39b8c55548c057e4a6b3bd6b2fb6b7fc94cdbb2d9ae6e4f9edbd41124c716ecbb3fb8479f2e03eb308ac59eed3502b67784c81743ca8bd7d9c47d4ea2ea49f97922d235327f479abb7bc7377b14142d624981b61d5d839788fe7090c75e08da322cd2a72d70a426fdaadf3b51dee5d1bd79b0a0d7f01211f3a7c25249316dfaa16d6dc0b31c46f1de6c4f5f94ec304e98675bf6ced8aa624c02c24394b1fe8d5582feff5e7dd7d9013c256687e3983f5c5dfd309d20da5a959fa29e43adc8df3562b22d53e9131f6b78772664e734b7a84d6ecd23186cfb9c0a737eb02cfcbdc2ed9d81b9891c79b864715172f0dc61b7b5ddd6386103aaf566ce5b4bbd6e4b9297ec6ed7ce9e9f01c70c6a1bd25adf7a3fbf9d1e2053eda13b13fb088fa39122cb2379fdaf44ff0215ef16367aead1cedb26865ebd7e4b6fe9bca83eafed85abf3f66f4aefba4a406eba1e6bf502dd0e35ace8d9bdf6fcd6fcce3fa3057296b9f85ecb1e639dddf6faabd3aeb89a9e8334e35e2b5a8c733635dd789087c1d2feaf16a75bc9984fd74abbbbd77df6000b67b8d6786b17e1a0c2bc001caeababe0fe0077ec8073619117dd293e750dbd23cfb2ee7aa7b0f25c7aca94f8bad4e8b53cd603fcda9912df7cad36f23ea19feeb3b6ff502343f55d53e4d3770fd22f31836f4a6e07f0ffd7406b81b8fd73195fb8c596eac596ea66609fca88929ae27d93be453a6c921b045426f2896a6512836c569eb69b25c99ebd9f27042fb4cbab102bab3d13f3979b67bfa4e4b7ffafccdb3e76df5937eb3bf55aebd567dc0be9dddad6b6cef2e061bc0e68075be7790ed3953ced6246b30d338573f457e6a869b8a38af67ddbc7a747edf9c3f92e75bdb7d79e8e9d627692c8adec10d3d3e89059e2b5d3e39a37d5ce071ac69197d44d260956d6d2a376ef8a25d7b463b565129f1dd7e53d76c3d99db04af747f2e7df6380a9a7e5021c6b64bc54383030776e9f9cba6eb58e30fefb9e1dcc3f1fbe1dd3ceede3d0dbf3436f16d33f4e60bc84d37792e776d1170575ade9e31f8bd916e9e8abfbd07e3fee635a6dcedbc39bc9a37927daa022601ec15244b1c6656b9daa72e27bbb73bacbc496fce747e9c7a3f5c328bd0678c9d51b29be5e1b6cf332ee0c3d21bf83557117514e2e41ca4b31cd918de408c37161b06bcb1ab63906fc258f80ec60927cf94c7ba54b598be92a13f8e3581dffdb5af8f1d8a915d76f2bb9ef799a43929791c1d7bd0d7f558dd7300127ad0aec35dc1fed8ce866fbe4b9cd672f8f1f3a7c9d97a840dd77d3bfb42df6cf6e337880b46d8cf75bb0e31fff7ac74cdf5e501b659532b7d8fa73881f90bf931edbe9f1a678823b7fd0ff395bc86856b741c6bbe1fef45ee316cf2407fbbed9fbd37f8649feae5787fd2eb317fd4bf9d1ffc4ef768fa56380a518383b8fb16a2ebaefb1ddffc3e7e0b511c3d784fbcb16b3f8efe680e37fddbec09382fc26bb1a8011f9a95e702d78e259abbfb3b1cceba26dbf8eb6aa7b3940ebffd282b1f8db7cb272d16d0b3184dcba50639a5c5b96d9f06f1f43bce247f302b83719848a9f1ed45d9f9d17b37fcacda4c171797bf8b19d5f89654b1a8baef522affaf345f71e8ff607cd2c187cb8413e0356ff7d0389368857c76cb7df6a80d3ee47b7397177b64bb97d458740d5f1de0d1913ae0d7e1c137429e83983ad622f1e9d1133d9af5bec6c540e6cde0c91e3ef1f859e53f9d979f3adc47f4c7ed3a686ad59fe9b8f5bca31ee869896a8ece2ecfd1487731794ef118f6b04a13aae615b89d77d8ae2f7747d76413491ffea3ee15e09993a7a333c929ec58c5a4ae3509039e2bc1bebeb305da6f9c20dd4f3e2c123f4d426fe6263ed6ff4ccdc0fc004fd7fee473b8b01691bb17f7ca5ea19d2a4816faee8af433bd64eff4bc1fdab1956336d40f70aff3fada8f2bb439897f68df0cfac68a5edb5acae167bbca280bb5b1ab56d5dd5ccedc46ae255c4ce8d0c8c6345c7b41a9baf0d216c27596484eff6a3e2577f309ea6b77a5a0539cab39a952422e5d76a71fa4dcd99bc73b25fabcf8d14725f0eb0cd901a0b71f949d67cd58811713610e71edcc4d719dcab2f64fdb0c79fdc2f0e875e20f569c6bd3dc92ba9331b5fdf01053b3c929ac73458b4c35944e466ae119edcf80df8fbf0dea593644dc70d3e1b14d88771d217f698ef33b897ab750d5e98bca8c1af9b875491e6e7a7d3179b30a26574ed98faecbf8b62d47d49637b4d7adfee35eb436d15abdeda35ff8bea60bb8af6dcf433ba5d3d154dec07ac0844dd46afa46ea5892ce6d1b9fa3c41b995a7dbca16b896b12a9d619ea1cabe59d8ea09f96b73a02b25f827b79c3c9d3e17ff713deddfb9bbe629b768b0f749b6fd53e897ab29e1971a21afba736e458a7cde57a3ad35ed899336bf6e373963ac53eb56fb7fa49bce9c70cf0a253377418b3b29fc9259c27787bef6fe49988ef5b5ff416af9a6d7217eef5eb01d273312ed5576d87681a4b7e77eb537735a1b17344391655d360a72b53743b9b458c847d6deb4ce3b366b0c6da14459d163a9b288da365f79ebaef5a1df1241c686a83e6435963a36abbc8b4d86f2fe5065ef449e42f7e36f912a037a235bb29d96edc7f920773b8be9b033ff8ea14fcfcae5f7e216f3625febed7728e2ab6af721d001b3414653e6ff221578f723948acd19bbdeaffc7de9b75298a446ba03fa81e0a1caae43155400527667813480501a51207f0d7df15110c01046a56779f73d6bdf7a15775ca14c38e3def6f431f70e3b7b350c31453e30d1a874a384fecc6b82c15cadd2f958f277ede668ec0377800d77cf60d1ec049f0399b674e4ba51be739d7ab12bbe79cdd09262b9afe5ed9837945751ec984eb48bd6993613eff31faa61e5e09394ab5de2f351b8f57473b5423ca58a86eaac0b8bac2dc781ed6fac61b631e8b7c08bf61f652cf6ee057e7be1c726c8b6fc419618d3131eed6f495460b7f91e74ece7d60f3833db07be6a15d575a62e737df91b47cb01a05ecaea60fb2169fb2c0fa9eb63fec23735d9f2406e845c4f89fefb57c990bdf22c60405bea98307d122c0e30b902e4fe478708559daf651117cadfc8869c66df15af10d1ffcdc2971b689463fed479ced0d2ad126c3be1371f7176778b49c32a1287f5cdc8906d628b4d0b317d3389068e2f17dff1e187fd317b720f8e2ea7ec04d54d61ac622affeb061bf9d01a2eb13f40152afc7d25c5f8eb0be0bc2faae601df393f1659ba8c072036729f851d43deec0f81ec3a28ef326c8a997ef87e7468097b9e1b33d1166db2f4b0e6e80af4b253ff8786e9b14753e3c7312a6ec5d7823b6a34d52b6b0419469973dbda29c234ded95cbb2a11f78ce6c1cdad1b6cd0f8b3e13b3f9178a2bdfeb3cf7b4023c179c89b13b25e99e654f96acf05f80ff174f2bda04e3f10f77882fdcc37a5acce657a7aff9e03eb07e4b39247cb7ca837ced935c51ce298f57b354d71c73bd00aecf8aa07be9f9f5177d5250defd5e4e9bef28301e428d1f3d8b29a21e2b280771e44e479765192f40efde9cb63f97caf90ebf51e40874af01ceefd6a60abf57e8c132417f97c13bb59e17bbbcf67078eef824a6798036d1630e74851f1b653cda4fd96cf5a018482bdcfceaf28c0668cb09a0eef6cc4fdbbcf75ce618b06c3d276a72883f21666961777a31161bdcdb100fe67e7fc24f72ff6f78dd19dbf372d2c4a9eb7cee5d390ab164bbe21685bdbcd38731f4d7197415b76cbe47afb0e2816cad741412bfadbdf75abeb7ca5d7d2ecf4f8dbc0588a7c165602f9adf125ab562dfe5dd64d9d89803c230033af491feadb24167cc4fe3dc8d418f17ddf1c2f1c27874c729a56e5b0e9c99eee7b4b1d2fdcdd5566143b5f33a0be3f75b3508d71ac7b0b2ea2e346ed93d47565b77bf8b593f9983b2a5c2bd1230aa4169a60aee5587aa41ade65bad7b4d546ab530a8e146e3989da42d364f6cd57183d7254f7846e11bdeef788833b3dff161896787ce32c4f704d7e33256133289fdb8c3df6d9e6144966dc6a806ee6ce1997d49d9e9ee75a75bb1d9e3ae2e2bc5562fa41c62be72ad6fc3d5d4171003c839d26331a23dab378cdd9916401f4fc8405cd29d428fc550e2148885e59c1d3ff80df418db1f063bc38a2d5e05f7c562e45202cb5ec19e416c36882926c56e1482f7e5ef0812c74f205e9bed0f1377e28dc580594b7250f6e4b70b3cad5970deca43555207b1389b5f10fe1a8e1d4867c2838518f9c0fe5526e963a3b239d6c55896e17e4b0b890a5535a35271a632cbe985de4ce9c7baafa2be72133372a17f71142d22f66a1ae3bb056bbae6d77999bb78afe79265e5da407fb73dbddf057d91593af755623140dc7513f5b53b063f057e09b110ad23e5afe579bc8e4c667efcf085de1df6fdcb7591b3e5c37ccf2bd215a4ccd457704d916cd43696ef25821c90d7885f423c65a7a72556c005d6a45cf37c1e07348669e75ec3f958d3fbbd51fb1b08ca8071321af6bbdc4d296f2907c95c3fc4e669119a3a9683c56b101bd6f1530fd7578449d8a6dfd32a7dd293a1c8052bf05687584cad79f68adca7f7f41538d74b75c6fa54b2951bf19abee6a3b345ca1168e63f3772a659b63bce81c531729ee0593cec6b75b574d77379f52cc82183faa9bc65933ef38113bf25ea2a942fcd39177911ff5a4ca7fd7dc0df50ac1cee8119e1fa4bfe7b62f76902af0b1f7aa46576a72fef03ea3ed877a2c51162ba3ddf677056c2eaac91e6de94e18dd8faf889addfd2710b7d5450509fc2225e5d9d5958b70cc69f88c6f66af4d29b80f245fe051dac79b672bff724f809d7ed51e8dcabd0e6ad714e2bc97202733e9a67ee641992e2f0da71a77365fe2ed13e21e8fa3b63b5b38cc50d7c7b7efcb82e27f3220e91fb940ef1265b80b53acc8f31ccb3278ce1b2d39fe44a16f9a73cec3950ce91f09e87a5a791c487bd9dfe1731cdde6b1d762b7f277708ae3f5bc8d6821e901e3042b5c99377fc5063f759de5f739d100d96f23a14a71ff11ed7d3a7f397f9852d3f164725cdfe474b8d023a05aa63e1474c5e07e61539924e59e3a216d792e29a595ce34d746d8af198eaac9f77327305f7087cc008fc9dd9ca434565d38536896941a6ce3b05f6318e05f97c3615ea6c01fd2744baab100d6251f6bc8d6e5e601f43d93b6e0cf58fed075f3bf97c06e31375361632efb631d4cb4e0efe98f2e5269c968975a46921f392b2ff311c0b7d1475f30be37517578e334166ae651f75709f424762a913a6f0dd967fc96b7d56a43318b83a7def3c6b81c46e26f32f8c27d67347004fcc127fe32f08fc36a783a62cfd87b42ef2e59e5ecbfd3e167b1a14d76ee57e1774325b16d7e8fc1ae6331e30108fab9ae7add0a545d90b37602f55f6aad2e3a5ac6dffd859701178d863e006fbe42a7428f85eb6913d1abf0f7b4706f6a2f81bd08ff3a06fc2690b757741be80e7e38d81fe168d792cf4067f1cff7215a22001f4858ded02f428a15fedb3a88ffe14675bece7ef40794463019c81ece28990662ededfc982fb339e83c53feff18662cb9cf85c36fcdae6394f85fed5e44ff6e47e4779174d1a6af90931798d9d0f6588f401231d91f584a0ccab83e7e258e8090479ce33fdd6372196ce47b32fddb8f02d293df3bc2c311ad5bc77358bd75f35ef05345bab99c8f1bcb3cd918d2186d2f4926d8e1fbf05631e2e8f14b394cdc8f6919c5130dddd92834498cd6f1b651e6f8e1fb07e61a3ab30af499804651e847da4c39a6f79faf1d3f68799a5af62b0e6668f4bc05ed9a7f69a983d2db69b3135cc9754ea24582ec1561e82dfca735cc364c2ec56414e4388415cf9b4709deb8c62396ac7f3293c7fe57ae7f5b0edf1ff5d9e20b4ab7915fd0bb167b0dfa3fcf747991f08cedfc892e1bf78de20f8fb47f17bee836cf261a0f374fbb65fe87ea62e05c2644043bc2a848f47b2711e96d1e18ffdb7f58fdc47e84ef2bcb3fe7fa67fc2ef5872f91d020fa1bdcfb66fbf69579c509fb1725dc9b6e68968cb95ba30b42fb243dcc92326015ef301f4d4d0ea71d4ceb0427056ab58067b05bc735dd8450a7babe54a36cf8f81fd7ddab6f88d85f84da11b567e017e50f20974d6607fe23fb5d82d3f40f4359b93694a4fa3ad2e05ff4774de716e0bff17fa2ef4ab205d625ee81271a167d8a55ec916d71e6d3d6304f5495c9fb264a04bb0cc4ec6791ed82fa0235067fb4187a2ce7ee17b2e428c175c070bbe041ebc67c0ece4cb03ebdd0fe520acadade985f32f811f5cb07be25247d4b1bcb9e34b9b9d26e461268ddf52434e8fc53a59a5ae7628d62928f5b86971cd29aef58a35b4a6f8fa5c68a09b63fcf5cb9ea4f78dbebd08bcc35893fa5aeea67424ca5e0fe8e3d833458ec77003f4737dfb059e15661f8c2bd32721abe9df77410ebe2c3f003afb69237be78d7ebfb87e72c675f2dd045d17322f10f5650c659302df75148d206ed12cd2d987b5bdd1a96e5e8668bcec61f849e2e3cf6bb8fe6ddf534b1ff99fb53531df1e9ffb19be47bf5702fd6604fa7de79cc35e05e8dabdb02de3964d809f398c6f8b751bf30a6c1957a663b16e975c7632b073ef17fb98f7f17950e7badd1a5f053939db533a167c0fde6bca01d0fdc1df8f8d3e007f7fd959ec09bdd11f274b70db02d81c185f01ef0ac0994d840cd827eac5cc02b29ea42f6bb1442bafc525f909739fd96bdf6d93de739b98a4e3e5d8b04fe5736e8f74cbd926ae2dbe573cf4fd63315c18af2de7bff0cdb3a534b087bfa9a7da91760276d3b7f5c028b7f56a7cef5ee37504d97db479e6daf67513c6559defffce973dc1fc76efdb9035daf80ffc9cf5dcdebf1b57ee076baf2ba9561bd74d5b355e705f09719028bcba5c9ee7f0223f26c736a8d13681369ed418156785bdda3a77b2a39072f5aaae05eaa0f8be4e078ca82ca3c5693bda28f3fb26f75bb83ca340cc39b02fecf0e6f25c3ee6a0b09bc0188e3b15bf468a01c11891674792e744d2daee4b2867b5c55bf271e767d6ea6994da1f87662ff4eca2263e2c62fe871c1f0bf275af61f753eb325e82ce1deaa30efb67437c9902634be40705ef0e3f6748e7567b2158b368a7af3cfb24b13bdd8dddd9f20ce36a484f0fa12c7cb0d0c709c731995f611f307d70357b9ee7041c254c3f62410ff218e000cb2bf0b2cdf423de2994bf9c0c7c816261eed04e1f9e949e35ddf140df9fdfe7fefde2c0be9a58fdf78482791cb68fe5aba23866b17e4077bcd858ef689857d9f90dc0f7125f3c7ef818661fc68f21bf8bdd483d0bcac817e5f9d74e8949f458f35334693cb7118abcd0b77cc3ebfe9601faf25266705df182fcbd6c4d16e7fe5e4fd40731c4de97bdc73b327d5deac8832ff04e61ca5e04d8a33dae7f73b66480ed653fe807d0ed45630efdc4564daed337a0f30bd1e8cb9dc421ec957ac2e54b6d1ecd7ac2b1305313dba769a1c7769df7da5923d973a5dd4ac7a1138d9afe9e2a5f828e39351895b65b69633f89f708b96d8c6169d570f1eabe3584c3244c59d8ebc6e6eff97341557ff82ab7213b784b390d614e30d8cb2a6f83d3b9f14609b4b5c6315399e564a10763d2707ce0bce567e408e87c8b72a1ea7541059ec764c1231ccc7162e95c00e6399fc1b58375c338b6d1dc9fffc6ce15ec3b2340db6df870f5c5c39d2d2016f8520e0ababab5f84106ceeaa56d67749c353bbb64eb68f4e5907c7efae209764c4b0f19c35ab3a206bff5bd9c3623e4efb0e4435cea2cdd31f9d8a1f31e4b86d529d76af96cc7f1683ffd68f80f9bbedf31417ea64dccc60e3f73fa3d3ff30cc55f0973f32cfebfcb0be8d04972dfc8bf9f1bf0ec7b964c8cfdc23a80bff2197dd39624c5d4f1bd732729962b45dd71fbf1ddb8fd134c14f80d4bce6d62dc3e92514ed67f62af2a17dcbf70adfb7e16c4587c330fb923f7ecc7f772cf869d7116c03b50be4ad8ebceb7c1cfdefdbe9fdd9b391acd5c37926f1de55c75d770b57219f2d845954f80f1a132d721ab7ceda51fbea7c5f684ec7b0732c8d5a94e5d1f5fe325864300d777fad18a27d4ef496fc53dcb1961addfaca7b4e47420ce5cb72357e3552ddc183dd7b4ebebfef6ad9ce78cab4c04f82cd98e837328ef23f18937f373dfe5970827f0fb3664851b9adbf66d3e04e702fdf64ff2cd6bfe7a844dc6656e454b10ebae1d97c47ad9c09e9e03bcc7fb6fd507b4eb9e7786143afdb10771352695de62015d220b43214bca7ce3b9c2a21c3ea5ea77b903f22dcaeb15265e282809d01f805d142f7cd31732f4fffbd9fd6cc9c99738995f90bd027332b38dccde053964b0de30b7c276823d6427e903e6a22bd47d9db1674b193040372a7342a6cdef23cc6d214b1238470ae974027f2f7b319b0f3a11e5f97d7ebcdc083456e692da5915c310f865debb14e5ac7c16b697cf321bfd5ec81fd493594f47fbc98243ff7f2fe82c427dc1501d06d46b79355ef7a5ecd3b8d01b95ca73c3b5857dda9e2d3f64cc1e07716d602fa05c8704765c5dee237d72d3836bc639a705e03bbeacc333125b9371f839cbfb3a4c803d687ecd115666a137a2ba4d250ef7799ee9be8e355abe53d381ad0a7b1584d6640c6905d8ad96313f2cb2f9973d49fc4536f6dcc918ebd708bea992bf69d08f8dce317b23ef4ba88f126b4a7ba2b1bcb8791d3ae0e9d62404d7703b36d81c3f8a75bd031d5d63b5b5781adf5c984f7a01f75fad3ce74a987dc4b82cb5a6f77b299f1ff5fc6351dfc6ebde81b1b3e105a38913dea7dc3932e7babeea41bd11f7ffbcc070190bdc08fa17c5fcdf9c17b4f15feabc00e6226f2b3e783181fd624874137f84507b097bcab8131cf335bd5999170a3283fd7d4897132c07e12465805f17bd920affa7ede3318b8f743989f3fbc11e8077a499a0dc213e82309b7f6d14361667792e50c31f40aaf7c2f8c135e7074b7136877ed60daffe7660bfae4195533ddbe2b6cdb5951fcc9faf2afb02c3a2d89be9f2ba54b6e94a09b2d5517dac94c370f5081ee294cd96c76d6f3535fb6b25485753e7b152969925538fa58fbe51d44dbcc0dfc8f7f1d0138ff3c1f2c10e56caf2be7ab0fdb5a20e56fe3d5b4db7c3e53178ac9460b03c06d4eaf1d15bf1ea65f980b1d63f6208eb2fde9c0f7b5d29ce7df5087acbc7bcb77a04d47a1af456febdb754e68fe571f9582b01bd7a2c7bab87d9c3e7f30a3bb1906d4b7fd05f2a876c3d6507cbe3815a29c17d355593a5b2a5568a49ad8e87e15271b2b532a797d345282a4b88e3b3f3a13ef5de3c086766e70f39955bbec02661b3e5634eaf15355d1db7d472ea0c963df5b29a5a882e90afe6d53b1eabe93c5d3d9c6c8dbe0b7137556eb15042692fb1e14cd624e50596ca03d6a3fb30a7fe45cd229e970fce13da8fd775eccddca39cf69ff8309ebf6fc1cdd1989b3e9ce7e33f7e5c97ac7a9fbf81f7b295d33f45ada5d4f2cd52c9f648ff96b8f15ea5385ed2184ee5560b85653a6b77f6ca85ff07580fcd67dfd16f79f85cc4643ba05fe67e3219e1c075e0e3e67db655f36af71731d01b738c8805f2af5ab13d9342a7ec53827c60cef1ce2c31ddd239967a5823af633810b01c0c016170c198614dcfe6d5eba71c3473c487829cc2bc46ac36e40a9fafe76fc3deaccea3fe6ddb07cfd7be1d8aa75a8c9ba4db3f8a67d4aa3ee26c13e2c8a61c80e763ab37a46d19eac17cfef7c60aa4d09d2e06cb36be5c62fbb07f091e57c2657c46fabe25d7eeb90a70adc213b00150ccc12c6ca807a0f1967f948449505fd70cf6b245eba1b8fa827222eee84ec07a07a475eadc677cdca81f27ec795abb1f62fc90d619fb5da9d7ff906905ab6b80bd38613f6796d9c9d02759cce126c8a86eaa3edf43c77c0f2fe78b689338fe619e6fdb9cef93fb5fcc17f61825cc971f408c3691bf33b0beba9a032d34f2fd059e85fdc45c7d91581a1a97300912b3b12f68bfb03353afcb0a3bd68cea583358c755e29da1dae7b320a751632fbefbde6fedc56edae249c4fbf1f7fcfd5e6c19cbafedc5f9ddbd70a62ff817fb8fce6b40dc0ba5a14371cbb399a5109b40f28737270a43fb94c72b03843b2b4561e2f21a415faeec713cdf1dad190dcf9500f73ab8a0b9c1381555fd7d867c44d4e15a26a642c7a23e82f266a70ceeb9fff9b69952772cd6c9573cd8f3605f033df8b26bf6310b7d73782c48f24b7f17e0e328aef31830cb49f73dce91baec64fa96db890f203349fa8070c2fb28b03f36c66ab49fd0dee6483f369459f16d9e8dd7c705e4ddc56fcf300f36c78f9f4b25a66a7e347fc8aa1ca36c558b33286dab52e152a15ee874532e1415967e03678817d97911cbf945c002d237c6c5ecae93eeaeebd6bbf1b3564ff4295d0c0faff009199133afefe03769fe70f7424fcec01cc5807af1cd1523cece04fc8c0ab3b9e3ac909e8b3f2302a65af33e8889f4ecfd707f7e1175c85ec77393f79ed9f698fb67bb0ebc638c18762041a7fef41b39523d8dd2db7e7ec2bb3bb16c9be30f3f6763cf8e24ce3e59a1cd3377420d3be9fd3787d0038338472e68f93c08e3a06c6a75abf09935949341c86d6aaec9bbbe7117f6d920edc1ab3e1b31f3acafdc4ed71ec2ec9c68452c9823ac0bd7f6fbb47b74357028260bf00d6893ed0c2b9ccfc63730d7bc77506619e0bf15943f803fcc7906c6752d793c358d056519abd8d40707874f3d3b52af733ffc5fee93a1fe3de659ebd937f60df66cd318810b629175dafd5a28a7e82d45f2e755b928753fd76da37c00d91bae7becc8922ff1bac77e095978d5fbf32f9ba61897bb78869cde84ecc288ac83f294aa5e7c9db5aa9fd922013206e2cef25c661ad2cdf1e7bfe6617a9d9f68dbe5e802bf26ddd47a6d6deb7992a7322fbbc4dbafff5de466bf8115733a304bec3d4bec1dcbffa1be13ee834adf8eb17e23be0cfb33be8e11a586dc8d3d2312b0b90a2c97cf6915b7fd54e8ac6b3e2f62d4d4c2b71ab5b38d9c82aa062a26c4966f9db1e5d301d88143211a5ddd8cbe89a7e0cf4e1ef6b131dfc4d301fda607d7cf497c134f4e1103ef6fcadf828b9d0d0742145c3fbf81e9a36666d45cbb26667d190b22d472388f564d31464fecf553a61f186ef6708330ce3dd883bf9c030be600b1ce1d380716cc81c1307edec08a23f56868d65b72aec82f09f87725add0d8ba2715add0479c56564ff092cbf8559b06ce847cf8a0d56b4d4eef8ddf1e869c9e36ba09d6f20cd7f208fe3d5c2c7f3810012ff3c19a1df2eb873f963f1c8a3cc55893e150343eae9f72badf807f277400d6dd3cc27fff38c5f5491c88a7a0da37c3fc63faf45ec0f74da7fe7ccaf44988e6d8be397f8c8cbe08270be8bd294127b33a720c8bdc83a158e4b13e20efacf28467db783f4bf739a662043199107e403d478c53eb3d9166edda57976be10f16392dc519bc15738279a2dc08c72b1beddbb89b94208735cc570dcfd59d5189d3ccab7f8a3b8f6377a0be0578ee19c4a2af72ff4c6087bb137096aa1c5c5d3ec42271fedfe97f4658bb977a19079ffbb65f0ff6e4a0512f9307f817fa520722cf42dc7d2152f3eb873fa8ffc19241fdffe7809ee90df817d9eb893d85fffe718aeb93f80ade6b3ee85838a917278b6f088360f4c79ed0b410b1b1d85b26bb297576b2d813f5e08f3d096e66930679934883965fd204a4911d9946cecf68a4f063587e5a61cdd5e994803507644e43af08998b6978cdbe577b5b0f010fabf528357ab4f7390bded73bf2ba50e17d1de375ee1db77c960bd7a84705f4a0e67d7202d863ff3fc4ab63fe4730e54e876407e60571e0d3583c05f137654b539700b2c523c8960741b634eb0c1fcd35b7b3d41367cbc445f986c6c6b83c2c63119b7aaa83f30dceb3a686ec13ff874990036327d2bc5779b0808f69bd3070f9c359908b1c58c083bc10f6e445793ccdf777f6e181f94db247cdf93a5de878ed92c2563d4fa6ad3cb2d8a1e0b93a0b0a03b18f147876aa5c3574a660dfa19c5fd2de2707c68f612ae9dc00f621d2911c50746e00f835967377d9e9c301ccdf40ebb5dae943c0e7b13c58708e02fc3bb11d06807724fa84688b77f1e216e600e01102e061b36dfdef0957d20690214e4f3bba3398171137e2cde6bad1c726e75530cf11f2a229539beb1a6276c07baa5c73746db829af953982393f8ba9e21eac1f0e5adf29cc2946bcb05fdb9b5f680cdce07392c6d8f8002f1c95d71406e7a7c37c7ce09e666cdd14783571fcf42aa29a9f263d1634f33247b11837be2e84f7417a300dcf7c757ed0783d46e40e2d3f911b69592b26fb6fd4b956fcfc9d3ad7a3ddb74207e6d6001e0874009447fdc2fe32dfaa69359a341d440b9fab9ddb856f61e7e77016940153a3b18919e16b2e4c82519d660ed1222ace717805e778d3a05fec1bde27179c05e55ea7d5efca9ab76dde4267e4aa5cdc6aded7c63807f0b7aa1e1c9e9d856f6584f9648dfb86fb177ce7bfa1b5b730eebc16ef96cd686e6c1b74c19e2bde34acadc17e86f1929aeee5411e99f3a61ff53d4d315e523bd343940bfb8ff4a2965c82391aa75568f6a58750e948ff154ed88b33c69eed636b0dafedb59bb7d6cc39b6d68ac0bf4a79f7064f0daf9f04da2ccf6b772ed02b3e5cf8e8559b0aaf662f6de511bed3b7f20d5ea7bc5173411a4b8da762f99fef9ea98ede4d5e8d7f6231cdbcfeaf450f3f9bf64a43a749eaf2afa937d5e9a1d29910af6dda3218afb6204e13f2a7237daa3e8e6851d541a0ebba5a5c8b45884f04f97b9d4627266e7f415d0fd69cc06bd026c97593b4c133cd73c3160b4b1a97d3b0e0a39b9a1e19d4c608afebc5b882f8db36ca377da5cff6d0f69bf6e6a0696b66cdbd71fce097c00f464df9da7e779034f9477dfd209da0be23b56783e69e0e610f85269f919b7b08c71693641818a364789445c0916a600ee5b2a58ac52fa70dbf12f43db9b13593ce80eecb3ad4864db36ef4c872a771d8a1071a3b5da276af7818765e378f8f5f757aa65ff1b9a7bd02fec6562a7a7961baf119f6f2aad93687517996f0be03c5598dcab3fab3716d88b0c590bd50abef8174392ccf5d0d630ce9de6149cf355c32c407ca735eab11427643794da98f159ed9a83cb3054e59738d2927e2ae4e2f6df526cb7bd0d5f1365ef15ee45bc0682bd76de50b2562b635b43bc17bfadb04f32702be0c78e757d9e31fd75de54b48b23121ee00aa4fe892c9bea40f7b7a56e15ea2f39ff8f3e919c7be84eb2f64f3643e69dc2b13ef1d0ad9c29d9fda63727a1aa5f10ce4612dbf33fede2975171b3c5d54d8063f6bde1330a2c275e826f959fe27e752aeebdc049a0173e73e675268bfc04f6bd3cbc77d4dc06da87c2d15f619f85de6b5d8ea799480e397cdb63f2c85a1d6914658036de0f0dcd56217ad7ebcff00b3baac3f2fde2dccb6893b09bf2903dfecdd4df489d4fc1c103fab4ecb1463c975b9283ce850accba84b5d5682bd4e18dbbfd7f503820d52f789d468b1f21d9d56a1cb49b762cf4932cdec315797e762fbb4fc2ff455f33bb8db668fe9011b11c677f477e293dfc131ccfd1c19ec6bf21fdbd8ad6fc2f80679fdc17a2cdec2232af42f847b15c3b8819a1dce0d7e0df4e82ffcb7dc57118b8f7989eb89ebcd05ce2dee7f14e451d6e13f8c5bbcacc26eedb0274b3cb192070beff7b6f9b7ec22187b41b99c29eca38d6247ffaa4dd46543b4ed9afc2c37f80153ea3975de81e9faff11fe5ad3d7efe77188490ae36530ffbbe63fd8bef41fec48f88eed9c80a4953b1012720768eaf74e496f9bac69a7b56cc69ba09c1bfc93be3565fa4e0e1253491f8df70d373a5b7f9f423f5aef53e84753fe9b2826d2e59f6dc5bac9fed990203fa5b8e0794f7df5b87f2d8331e896ed6129d47d5df77f8f301f7c88b0b121bd5eea6bdad0b74bfff7016121d7fdfa97caa71e94fc73d9b6094a7f58b9f6bd01538e47a61b3ef7da39f9517e4346fdfaeaba214d95faa08c629996c25cd7a8d7c475d3537f75f4c527f9eccfa6b13a6f7b4c1b67bdc28eed63359c8f55763ebb538af06f4c75f4a3cf7586ce7ef5c57a3eb91ec2da91a7cfcb24fa7a3307a07f482cadcbfff6aab7298a3bbcf6012f5ff2947fa557273fb87e4e0728af1fd879a7c34f77321cac23588705fbf37c4eeff9f521f9ba923faf40df2ab83e84d7e5e27afe3cb0316bd7514ce38d586e9347df1146662b96db8cf9668498ef03c67c73ec45402b023f02bcdd83f529b3b2b6f9621a87b39dc15c0b58c3604f8b1a673ab6fd2a462dc8e9b17a1f371090ac88c1fbaab3c09eede990decfd2e366b61aed275e7b0c321843401ac3108e41268d2148605e1c690c79dc5ce4ef3f5c231d998ff421e4f16a98b719859ecd59a1837add6bb2faaa5e753c5829ec6035d58ed654a5974776b0560ef7e5ec753da63e498da21e539ed2bf213fd15694733cdf8c307d08bee7b859121bb3e51f63e2394e763e8bfe39ff3b047f07629686b631a63e3588bfa1b8b3f92f911ec27b8d99f32568e94308b495ca4916786e3119250887427bac7dc671b2e426cec69e1369d76d8fb9d83afb4ba4eff01b22973e84f07e16b3b4e8cdb4358d456807ab9badd31e781ebe3facdf8fc677003235dbe9347ae6b4ccc7153bc27404e6f153d0eef18606f3dcdef6722ab66b434abdf366eb1ae59c42ded45794dd5f0c378634daa398ead032a8df72a37fbd13699ed5ceb347720ee513fd76a734259e16a1c3a7109743a42f8e1da69921332771323fcc316c30793284fc4ced4b19b02b2d1dc6b2a1ee292a2cc42704f4631a8be36e72f02595de6a5ce00b40fe4cbc78a31eae964edfdd59a812de13eb8f85bb31acdb4edf1e961340bf486eed34708687944da537b7a7655bd88f1c9cc939b806cef24eef0ddd1cfb14febf187177acd756a2f717ae20833394bf1ff216b50b2f6d6af7b5c49a8caf767f7bc8fb281e34eaa2421f4b0d975c63443669d477b8d9ae5daf41f06794d870334b672e96216505ee4c732f2dc343b55fac1bda3d3a74670b027643d943009e57a9a219b8dec224b8ba3cb3b4fb6ed5a713615f780bee12d67064106e7011e382f8969a31be5bc6626a1aabb0e1db00b61707cfa07c8837bdc1d7dc1f738a36567579fecbf6135f98ccbfd037608fb8124357e42e9421075f733ff0f7391f584ce9df662dd72feec6cd9f0c074236873e2ef11432625e5fb08ebad6fe2300366755a3a1b6fa661abd5a0d07d0af8e786d4c8eb9c3887c81fbccc4f669fbab551b51e5db871bed02fd26cb499a211db2dc47c0074b19beee0d46ce31f9127a83d8928777d7589d85c9fc3cf793403ca1b9b569bbf9be956d87b42bc8892fc873dc3f1e8a517cdbe983f3dcbffb80ce6c3ebc5a4681b1da5ae708e20fe7fe039d063a037587b92393e11ecd5b6aaf4f25a77fdbc7345b67c997ed87a1781ad34eef705e4c86b5fb89f3e9a3b902bdac460be5dcf033a85e771113dbfec1172710b302d62098c6026272b468a1865744db869c5e37ca07ec4d2086ccddee8550af6ad141616f4f2fd7cd6cfe5bc82e574157afce4c7bec2687365d196384450ef5cbd47eba66f4e56a68540db3d692877fc05884c93c99fb15bdfd933d2be54814bedca7b97ff0856c7bad7d2f6b9f5f31644e05ffdae9da03f0dfe24c3f9dcf6c7cb367e1c9ee0d5a67071bffefd63988d2d88eb402df87bcce3d2fb4f9b43a0378bf4d6c3d763c93bc7dfedef82e7adf37ce5f5183dc4b87568fb97e93566bebfe823e110f9e0ccb6ffd9b7c04d34f8e762f4d8adcb9ff6e3ede53194aa2c9a73cc3a012fd48ffeee2e530761931b135c9fb336235c4a51fb1f8be6a79b05eec1494f5662a7aefb9d0752da82b81b151b076dce1d3d89d7873f1b4bac31a4002be3d490714a35566e91c6569885f0a481f5484024bdacf31e5542bb17b1c25a0bea6b1f8ec3ae0436fc8b77fba2679fdfd16f2dbc9a17646817e0ae4243c6b32c407b8db7c4821de0131a36c68eb291fb01702462bf1861f015a89055d65ecf0121bf230b38c7102d655600fe89d1ad2f79decee2fa6ac2fc86956f03ddd1f22193069f1bad09009fd33a24a2793808ec633d9a73c3c02fddbe535549f5feccfac924f053655fb8c849180eba9350ce2376841857caa882f029ac36502cc176dd31e3a07802f0299b183387e23a68eb19dde808cd8c961b8d187f64ea3dafbc31eae856d85af6991af5fe02d1758825294de4c637bb634a05305c993eb29587ba19dcbf59cc680ecd20ad9e565a5cea3735987fc8c2ddfebd9bd3098b77badbdb3dfcb5cf7900b3c695c0fccb111c1782e02c4571c273b638bf8a89c66484f84358a1057b9924bc1c87e00b914c496425ff55ee8bee01f0938db507efd6b3ce19b3c09d1a1e784880e9df775987fba07e8ccfdd539006b58f3057cfb4c389176b779ee68c9e05d35fb3f99fbdb14f2af626fb8f32bfdeaef794e63fece0b9deb5f9071c9a7ee425f659397a31ae4f446e4e98067f05c66e9c3a9dda32f268c3b40fe9ee371d2378cbf3f363315f0f707e4eff4e5f1267fbf6eb4b7d6baea51f69d73ce0f309b254810df5efedc2974b68ed84267c9becbbfaa35f562918798f90546d47fb68f955c467ae2bb3c4c9e0c893eb2eff3b5ca1f25e7df51117d3cc4c93c58ca504e156bba037671be162d9ddc6ad8547f357f24b3ab67f4d5cde6d3305ff37f7dfd31bfcd14d7a59bfbb0913d0ae2bc96fce67083fe47dfb3b732bd3365fa972107372bbbfbfb09e43b3149eeef81dce70790c739c0364258e1258f738e690c789ce387d7429ee7f3007c3e00f2c109bfbfce9df3e407501f57db181e79ce06d20d9c230de3fb72067d66bfd546cda8db5fc4edfcb0765c31c7c2cd0abf1dccad9053493c49b79afef068e1bce53119883bdc19d727e1db2a1143cdf9f0e2f069089fe1b560ee63f23548174aa0291ab75828817310261fbed0dfa2fc2fe8831c0e8b9c2f88cb867c60a1780276f7473c3fe53591ecf905668717827515a39567f3454e0dec4751f44af06c5d65e6e182b64f10e785fbe457a13383cffb458cd7d6b587d3e34e9652e5ef387dc9337b0993eb1f14a03997e78ebb3e8df9ef605fd5ab413368ef68660ff4dd2656c6462db14b72feab9ec1b36e3df7a2f51cf4c99c569473d220ffdee86a6219d459321699dd077c446ae361f7305c0a5e2df3c3ea6b94f3f88ef81418a7a9a7452e49d9fff6cd7c2e62de446b8f0cfaff9b5828ec3916f9763c6aaf5c42975c53f31257c730a8c432b67f33266a2fa7e0bb8f1dcfd0362fad2dc30a9d70119afaea2c83f520f6477c920ba46b94785a9d610c821d866ea4656aa47966cf9b5bc6222cfa3a7d93a6c83982587db53bdb9ee761fedd09f8cd0a1d7f0c78fc7137199fc1b7e77e82f7c6f9393fa2fcd2b53ff7f31862087ba8d152e6eaadfa8e3c3efd326f0e7f472baf4924cdbf3bc707e6b8b763c277af85918fd59bc31c5820bba74cb136bfa00d3b93a85c3e8031126b67cb7922fcd5dfaf729000dd5906479b7afa103a7acdb77138086bf0f8d61adca1efad1517bf7b02e17b4255270c63750db946013d4232bc3b90e196be4598ebd9fc609e346ace6b57b3c7d00817570b90ccc2e8481f1474742de828cfb7bdb67382f31c97fe2274fa5ae24e9b35fa21d00b2928b78d25b385d848c179e907572b0a618ea718d19e33399cbb6aa1aa6742a6d6c3561f52ea6cdbe8fd346ff57ec2ef87e35011a66213636067ac72fcad791393e06e36b107fa63bff9bc335b84662f8435e58ace04967e6fbe27b64fd2d6e5c059a7f35cc8d6b594700d7cbffd0e19bb7e6c5d4fb1eb9965ac687bb66596332a714e5be69392364a28ed6575a84ada4291d495da8929c84a1b830ad71aabc92aa54db569278ee054a1d2a5ac0eb9ad36efc4215402a6f65d59edc67316b9f106dc5bfb3e1b6e946e2c436c0c8bb7bfb3572ed7a6ac82b9e310c7d91bc39e98f42ab47a742b5f3daf7168d706f7e8bb6b48a1dca03be1094dea7dc9d57b9abb9753e278349eb9dbbdf466f543c5d5e98b69b473d40b4c1a742eeea4bc5cce8ea4d2cfbbf0ad3c86a95dadc9c107fcc12a70e1fc80743ea07e52e2ef4fe60727c722c3ee8f1d0ada65c8e7e493be835f07badf16afc3805800f6a9a903ac6eb631a65d5e5b6035a3601f4858db89e357b5123b7d08f603fa0920bfd5e039a4c8bc0ae6d1da4bad96131fdba731edb228ee04f8309007783e7ce31ba9a1c1f35cd592557cb2ccb76ecf678b8f9f11f92145c8d16ccc7fb87ea78f9013690f574f29127d993de602e60f68319f23c223ff6eee34e28b78bf35c093e09ae4b8e8789d5bf3dabf2923bacfe0f4a3acbdec9cf7e4900af2fb39dfdd3de9ab5c7549974e965ae5c70ab36db29c94b5d7605f398b7743890ff35c716057dd5341199d9ff20c4087cac773bef2e0dc8dc2c6ebceb5f76c17d03c4731cb1acd13eed12806f6d526d0112e475fd0e3d93456cd735cc31aa9deb5209d838765485b27d28e3b03e6c6adec9e14daed1cab524e12ee259e855d31ae28bc3901861742ea21fbb296a0cc2dc46af9d13b773a93c90d7c13409bfbd9ddc36ad3bbc7e21fd23c67e8296d627e2a92de196e948fdf96d2d2177e5b72f225c05eed5c43bf80b943850e9a49138fcc2373da449805159f75b93105e49c1869a9ab7389f358b042071fcee90dabff62ef58be66ba27ca09602b3edbb746de524da794202e2681de6287d2ae168764e3cbfa179e7bb4f6166178946be5d045fe25690e9e57d04927edb5ebfd8bbdf33640679d0cd70acd2c9450e2d470c56d6969a150c32e99d2e43d4ff51c30de8a776a81d5d3d89d91d79dc81e815e3ae4684e235d72b8d8ff8e730a7d95c8f7ff92df94f20ff66a3d6daf5b8a592a6cb896544e6ee998a43dc17a0b75e78eb330af0f627b177d889ee9181cd5a53fdc0d1467fd9afb1f1760a7a928efb216477aa27bdc3bd71cea2ec08ebc60b5ddd2cde199c4eeb943b5af5d6c9dcb3e518f0da22e2ae9c320cf4578471f6e8cef4219da25348867376c9d9b573deed63d75d4dce3754ffd12b2b0aa257dc2bbb0da130fabfbf096eff296804becdef0a4f6b413e4ff53826f9a506b87e97eb80e84e34614637e2a8f2d8d26da0cdff1b791e7f9cadf362ce467a96b35759c173d0bf23c79ce873587a7c305f53549e3224fded4170fd8eb01e12bc23e3662de8f10f3f9c0be85f603d042e583c1afdb3eb84e679b28f8e91ce3dc57a3e5b96d6ca357da7080f5b8c1c7087b2740ec3e25b9cf158a11f811e31c87f1a6c7fe7232843b56fa8f7815f63fb4cb77d0dee7c4f3c4d932c6fbca5908cf47754e5a284cd833f2658fa0ac286524ecd71624f360e159937150f1daf1d1d4d3a3aba7a86704b0a57806f1f86878b3c3c5cd3c690f972de9ed259faff52932602f8910d651c03c29347fb00fb59aa4d9fc8fe35f6221aac5c76bbec3b98cfafad919c230c2d74990ef78efc2d7f39b2d283168fb315ef417b8efe534732743b62e175fd55470f9f7561b8585b1a0b1eabfe8777082be962bc9dff1e618b70a90495c537ebfec35d11e6bf8dd772c5ee3d303fa9a2da822876e6734e540071e7d3d268cebccf11ecb2b81f503f2706ff4919e62d023c6451835388f63aa9a963ccf45f628e86ba8e937ade7601db9d30774b9a2ecfe1cd8f9cd180bd4d34b9ece6a5737d212a8af3d3aea3872df9ddea50f3fc64f759ddce700e3bf2847ebf0cfe47b3ddff768f78694a98757546f6946b6dff8cda048eb54d9c72feda0e593d82b8e01dcc66829ec745cee37736271fb06cbdd6cd7ecb631bfda3860218563e0d4fcbf73854df44913976c90387e1a827543f92480e6887ddfceb69f6640e62f7c13f23ba7bf25f77a9b7899c80f1220bbdaf5b5e1a3c0f8dfc8ec5d9c7821260bae82918e30bcd0b3e307318e33d4984f4cf2418961877fd54f6b982cb56782e186a42b37e9c68e98ccd6b96467c4a1c633ab9d3e8c6da3d56fa7d61361270f079bb2f69ef66c3e0d9dbeb4b003ce77e8bc6f13aa8787f2a8aaf946f5756f3d2b23fc5d88bf0cebef20fef44054e8b8acb187ff0f7946f93b9479f9eff0bbf9eff03df9ef0ef6bb53fe1eb6e3aba7956745dabc86a1fdf47c011d12d25fd9cbd87ed0c51e659fc6e5b631dab8d5607d112d06f15e5f792ebf3a0b3c1b173d9acc664f614ec56249ec6f88651dc1bc2ab0969c1d49792e2e3e9e4a8fb1fb6d3a7885a55d8cafc40336daf5e110a7b717523b76787322b0b7e12f748ea0be92d34f3b1f12fa4ec2c26f8ff5a33196671be86a13afe839ad089066350fda0f6ce503c7c708fbea95f1d632169459fa2a86fd7602fa66f15a8261e1b67d4e93e1c5d42fa19ac78b2c19f6cabbeddbf2e701ce8fcd83f184d7adbe78e43dc4ba7ddd796da03b496f75fdb9a693e1fa6c2828e90df08d9d4287984e07f560c09744b6a687c71b1ee8a55ebcd107895dd78daf607df0e71d3f18015d4fe0214659b223ca172f347b17566adb4c6dda50db3d17713c7688b78ef9d888b23bf36e827299891143237b099cbbf42a4c16ac3481bdaa43fb641e36f2872ff458607b1f4499ba74fd07ec723b83fc07d359c13706a925534017217eabbaf78301ef683d2f13f846d4e011a11bbbbcb7b6fb8b0bd09b3f23ee3dbcfa82e6675b684f95f8ed28d7338f3f82fd4c1fd5bd7358f39cdf5bc455aed5b735d5a6b4ab1bc0fe4199257be0dd8929a70f71a6163dcd928a477391a57ab53e572d7f191f243986374ebf89783a7c6d0c88139a88a700fdbf9c26843354ea16db1e53e69a3ff52f90e84e3b34f12af23307d7cb6c624ac3f5e683589c2d99961e81726f43414e69c27bc17761cfd7cac61e458b88fd89fb90a0fff4317637c63c69fa2e971ac5ece4f495fe1faf4fcb687152c9efd555e27b6dff8df746a368715a7e6bbc967cf71c1fb7e5c3d19ee746fb99fad39d0c5fc474b7579585e3685d1394f8b6f02d1ac34cc163f099d81a2307e37973638ed9a683783f4bbdfd2c7d6cfa2f7c86c7f8894e15fc326533721ef5580e5c030eed1921172014275c5cf30118e9c8eea72357615eedc5af273664bc8ed827fbdfccb328f6ffeeed64dca702f68919ed67cb7fba4f7fab5702993e85b18ca84b2ed674264a44d88c03b0979fd318ea9126f26b80df87f07725863aa283eeffd1bcdf45f7ff68de9ff7ee18013d70d31b80fb21fe84f900bf07e0f721fc5d892126847584f7ff68debf83ef097eb4ee9f5267811ffdb0a7cc6d1ddd6321f31e1bdefce93ce2489083dbd24fef1bf9703695e171d3637f9959f025ccd4d16ecad0eb086164ad7bc1f5734a07221f5c3f15fa0ef1a42680fe0abc5df8ff43d4ab22ff1df6ff2d7e1f60bf0faadfa11e5ebc675efefe8c27e37cb89307d77a86d46ca2549c7064de8bf4c118af8927e69d943a67b72d87eb164fec38486bbbaaafe97de15bdee6381eedf9d16839312353b9df6b363089def39edece837eb813722fd89afc78326e40f7223fc0e5e66373fc0067fec772968e9cc7fd0e79e3f4e327394e34f855fa21110e9157dab3596103ab3f9bb1f6677216dfd7b59ffb02fbe928cfdd1ded511cf5b19f210c24178f7b37ec73abeec3cf1af630f82d16aa3e0838df0fd7d1a0e4efcb607b76201fabffb693ab7e0d389fb68f6734ee07f1dd85ee94090abacf248fa1b82f2eee739ebf2f2cee736bf8bf38cf2eec9801b0537e759c997b5be601b94cb6b9f0fd12804ed129dbba75d5ff36ff986cb3bdd1af09d82ee08c553a775e130a7d717261df42fdeed97d851e88f71fce6d9e116342fc233516279e87ce6a15174135c8c89f27f08304c6cde4a0f1ece0f5b3b339f95903f0ac10e568f3430ad8986d9f33f5dbeeb7e26fdfd8378614479eda3cf768e165557ce8e6cea8c4eee2a5443bb0ea53047d32302601d71661a7a1be5b65fc08f06ae89701d7f13e5560aebdf064074c24f11ab53c1db29c9fdef27aae1bcc1dd7ddabd2b358cbd8669fd3f94b7b3bcff3bc1539a145be28c461e503669963bab9b39cd719f34a36219e17163ccf3e8eeeeb48fdb19c32d7cdf1e3a7a807bf764a0cff7fa79c2f3b94ef8130e28c82770e30593707cf52d5fd3155bd0761e083bf9de3e0bee9a9a38db118ed275ebc9169680bba939482b6fd91be81bf2d88a73b4f9c237d139438dc4ca98b731c9d770a75d9c9e97523d3e06c31a2318fd7be770367cb9d5217db4faf1b7d84faa1f12ab85ebc2343e301df9eff04eb23027d734a5dc0da6e641af0bab3fd807fd7c622ea6a6241bd7dced859f0cb52060c180bfeacc80f18511f24ce91ba20cc76f4fef27d60bcfc80b1b3f486eec7c626a760ad4aff987d1cd47a98e76bef09b3ed08ac3926cff3be571a92ffe0b9f21a1daff3f7b9d30163fb955e22eac1ef7c1dc1b82834f62103f375a6c9ef1cd3f6ecf814235431cac8e6999be37b57b1bf8d05390e859a6e917f6f36ff61b5c6ee511bf09c427bc2691b0bbd019a2baf8e1cff9275cdc7528699d09fd7c60deb75e13ad321583f380fd81b04d1a6e3e3788e90467f2ea775fab5fdd6da9e2d9938574aec01b91667f5b98ed15c79f507f6bdfc1bde75039e03738d06b1d02f6af9e7230be28057eb85cfd5390e43a1a76258c9c16f17e8e3c616d19eaeb6e66ac98db91adb9fcb698cc6d6aa99a6e37dd1238fe75a31b8328fa1954bbfcaecfeeab1d387a72dccdfdf56bd73512e11924bbda162e92eccef023af2fa152675c8dc3786c4ac7b5c3b2ed3d7ae2ef734ef19d5629d0e55fec504f6e2099bbfb5f0de71bdbeff71fd441860b0a702f6dc30ef23366cd59c77cff99ed763143902f01df83bd1f8023c47f52e9e820a7f16c9970c8e07c301b58fc36ce183f38de2e11027e584f5f180f30067bc3687c1664a67cdd80cf4a3b34ce5a39c52de7292fb976774beae555f1e6cdc550f27f03da4f75698dae03719d6e20db13e47f8fce23ca68f5d3b24c8360e2ef8f7801c45f2167bf7247d1472177b37ac0b27c8ce732e5b132743b6516e3790e35d48afd9543efb2d33573e921cffec91fb9ee98d4cd3d0fe81f64ce7f9f812fa404769d1754937b23e2ceb8adfe9e7a7f0ccb1883b0832cb6cd4e02a691eb029170abd207d0be8434bbbb7f2deccdf23d334155cb701a329813456c3a0c4da37fb8b9bd35fc576e44ee1599da8d946a152707f6eeb2e147afe4b96879cce499c1a841bf5442566abb62e7cd4bef712fb97b4571271ad51eeaa0531488c2e9d30bcb87b39f5487966db5eea39fd564d5779264d23ff6e94decc5e85bd23eb439994a7f70e36f7c2b7b642ab6777fa4b909fe6d2a6309716d9619e3b69e272e371fd6552d44bab591a6f14f6f74e4929f1b48a3f2384032864499cf32fa453637e7201f988938e6b97a59c66b066345add5c60bb163c66e2e5be0c983b899fb35aef9716ddfa8706de14b0cfd07ae7ebfa4edf3be565dff1a28eab869b3622d4dbb1681d798e6a61eecb41e23ca874dd5f8e6c0c53cdc992afb21650a16f7a7f057b6adbf4e5212a79cf049e2d6ae3cab320cc54584766c27c108c5fd77b9878a435c16cc236ff30cadefb0f825d96b8c696f9a4564b855a891a152a92d259f324cbaa3b7f5a97456bd05edf52e9664b5d0c595b71ddf55e292785dbcefa2ddcffdd5db7b552d5805b4894d75957b6572e8f7f92afe8b4ecd677fa3bafa8bd9c76fad63a7215cb7321f95d3eb9e2de7c5cc0c68cb4606b2c4293546ffca24f445ecff2ac5638af812f7058ee8f5a7f94467e2cc408813583d037cb2c954bb6996dcbdc1c51617f3b7e753e760a4de9fd850bec69db4f6f1b43b21d1fe2be0ed73df56ba3077f8419f88d82bf89fa08cfdd0ac5c702f203b5cd03934fbf9c5713f3f98efafcb260fd7e59f221b76396a36546e84b55d5492685ef4be497657cd29409bc71fa519c65c2353631b3025fd764ecc970b0ee2d515f9423ce8f0e40ef0e00cfb6a6e903ac9d35016ba7a23efba72001cf6ef465119f64cc1c1bbad5375df602e101bf9b9819cc1d8944fef0b5d1efd7cfc9f9ecc2b55d5e3f6b587987dbf24433e2acee1342f53e696c77c6414262ce2c7e36ba7d4c280742c8ed2a2c1e95e17203d0be55e6956ab98e0bc77476fc14e641af0b1d14d826b03f7d2b065ac6fe81bc2d6400ea0b89f46d01616a5f6c7f381464ea0c7373600f764097652f75dcfeba097a00744954cf95d3b9a950d03e10f541eb595186760df8c64090cf6798cf83ee03f2e58c7289609c068ca7ecf90ec683f28707d7cf49f0078e1bf9a86241666ee24c654c99b9ad338fde4cc7a3fd4cfdb134903f1ec6188f6c8cf231803d80f5ce007f63b6c84e61d41c5ffc2d3fe6b3bd29631ccf68a0f451a6cfbe9789901706f1fa38ce69b4d4151776d8eeb1d5ac178031162427c3c673e85e92de0dbf53e6372f7399dfddef0dd829460c7193917fe3ce2c09fd270a6cd232e781a46f4d3fa0ff17d30b63d4cf1ff04d88efee015e612a69b8eeb15f421692df036ca402df7bb664602ed94c6520ddf177c6c9e818f03757a66febdee0abc8ef71fa5ce64ebc4488ee5f66161f61eebcb104f61c8df1e46b2ef762875a4db5eefcd54aa64ca834f7ad00fe5bc3a6b0e583af42ccaef1d93496072bd2fa16e0c9bce7d9fe07359f15d85bf783d31b1dea7edec1c1ec71571b62ee2cc2392f852eaf65b61e5e2d7debd771e10ab995661be523d929604cc168a3abbf777225af80edaaf74277dd1b5d3f95213893c04e84fe47e748c78241e7e79dced63de9f699799ea850a9a0dcefe0ac990a1d0a06dddff16102ce8cdee3eab569fc2006baeb1cfab5b03d3a5e02bb7f796c64ef213cd878a16b8cdbf3629b57cf2e07b1d0f078d45590cdc8c958e8ffcdf9200d64aba951893d05327795f7ee526bb1281467bfb77f6bde47ec05bf8471cb2a8fb71e2f84faad9f2678ae30f2d72d7fbaf270b089eed7cf697cdc94e7f90d3b0bf2003c56d36d9fe5f7b6e419ce7b545ecb60dd381fc23a00a7951b598f11c07a1154b30078335657929ccbb800e0f7b5ba92801126808f071788e7249f514f2154077269c89f6b5907220737e758ad1d9effb693833f8d1a89383f8765bc54a99f8d8e5a8c2a86db1d17aeeba01dbc9ed433ed753fb137715030791b62ef68f10e242bc69e735a789ff2f8e21a2b0ae2019c246fa7039b7e7bb079cd73fadb83dd1b86f399153a2729fc9c34b1a3e91acd94d89940c79d5eb20daf3ed3715fc84d88a39658da2513502e7dbce107395f09e21a6fd5dfeb05d3ea25c5117a4969845e5279aeba09ce238cbf431fab97fb301f807eb17c316cefd5b32917fc4a658419d049692fa7e1073817667e2e1ca0a3ea6cae07019d93f6f2be24e05cdcaa7bcfe0de01bc77127ca19e28e85ef4ce00dc07cf858bf4c56433a5709ffdadbe676ceec3bfffd8286ce73c9c52375f82f17850ffcbd039c5c67311601f18fa56cdb1361ee23935b3e6395521e61d3847d04f1290f5eaba9f22f7edf02155da5818fdadfb7324fbf39821a02b51e15c1863d32e9951ead69d1817e09bb1c88f62911f74d51763fc7f5cf91f148e11671a2506983f417e5abf74591ad0077155837026732feaa300efc6df9d3fbba5180de694bcffdd43f15d85d5786df2fc5ea7dff18deafba5afe28d9a2bda9d0c158d5b8ca13fe5bd6f97efdfcb6989e566f15a04e5569e77e1f261e864404f07df28e8382561a6252d1f681426403f6af717a1127bf64f62f7e9dfc4ee137756c4ae56edd8d50b0c0ca357e56137f193ac02d3b589b544af6459dd36b19468a7a76512cf512d6ca65e896d0963d9f9fd8a1a846cd18b45a5170b69026b9b23774aff06efdae95ca2455a06f3f8436d2175fbd314855ea8b23a6425cddba39cc66e7f994a31b2066884d54c83a235859316df7ba6863df99d67c66af89d67d0d8203d6b2b550dc2b5f4787b0d96baea3ec365aaddaf68da5263c3ad42a596443dc37f5a6dd4505a2881c4e91c33935466256992acab30efb5cc53eb9a1f86873dddf11cd8fb40cacfd313bfe491803350f533506b78b3af3007c09952ecfe822a6bbb2136e08a12c377e63664447e453aa755dfa997b19ae23c845defc2e6d6d43f9bef5b75bd63ec449af7a42719e9b9d8a117601d3d3b729376af420ce3434e5b7b52d83d7f11df39ba4f79553d4e3d8798c1653c37b7e756aadd1fdfdeedfb5bd4a8627676abe72b18f75cf6c2395f7fd6ec6f71ec93229e7f0536702b4699af8964789ed9873622f36cedf2fb5e61f2c23879d9c3b9b08b296d006810611875d0567566cea60efe6ec9d3fc9d799d27780786f3bded798036428bb5627b2685080feb9def48e38ef359c883b0ac05cbe5c7b375522226b3dbf8c7f5fe5c0883b38c47c33c75f91013d6abbc066c359318c728fcfa4ff595f6787b1aa59cb48b84f715ea94e51fc47305fd04809e35e9f6aff53f8739645b624c5ded3199cb96d8781eb21dddd0e55637e72415585cf1a6dff9cc25e7410d3e1b973de425d8e72e80d852398ecfc59949436112fc5c4e09f729a3cb5289c3c66f69d1d3155f23b5c75d2c15c59d4a7e309dbfb6059bf5c81ca146596bf71cef58b3eb77d7ccf6df5f33db7f7bcdaedf5eb31ce7ae8b9e3563153a81e4b93cfb12dfc72defe5bae414d2035fc94ca8734a5defe030def13c9f039ee5521f3d0b10bfa7e26f786f73491ff62c3d05f6428ef735f4ec49178f589d2d7df5a5440cd585db4eeebdbc25d102a055b0f6351d4da2b48da26aaa1a86b0aea7acd5a963cd5e84c94205739df374e8f2decd9a8c03bba73de6fcf0e64ec60fd718df018dcd599caf3389cd17186663fc9cf8e4f9221efa2a3e5be41936625cbf6a7e1ed90b05e5ced827d2778637276ae128167d7c4bdc1e07d276adef215607a942fc9e2e7a560938b1afe8daaafa5d9c889877c896217e8f48579d7205c35a2ebe5d3eafe2b88db8fc6ce21955e723af69b7232e81fdfc11cd98556d42650f12f7fdb4023c0dda7fad584e3e3e68cb211cbfd6fc9d27fc037f878bdde3ce88e70dcccd23d598357d40ee641883399b8674737cd41715c81cfcb7750ff96f94481be418ac19c27b1b869fb3ed595012ac567770b5f3fb447ec438fe10f61f1526b03621aec6a6a936aa6d8679a9406f35b1989689d7e9fb107b719dbfe7e752891bdf07bcfc4cd431b05eddefd83e5db450ebf94d3ef3e1a38bb729fd056b198bd88db4e09dbcbd7fc2ef2abd97205fc11af7b7d76e1b5f1aedbf398edc368675942a2dc9b23a9cfd833120bb9cc8ebdeeda3ee249f931462b59175d557753aabe26c429ab37b43d49b56d5122bb7bbdec2779b54b95c382e25c291c4f5956e2c37307e78ee80becefe0bdfe72bac5b308e4e8c4a398ddcc9f00168d6d453dd321690ff6b6ac8bef24b7e4e9de15ad7bcd5d4a497c7f960a548c725b4a7ada60f01d5fabef05b42bfc8e919cdbe8185d5fe768d5e5fcc29cbd7a34ef7b91f15fa9db21773e877cfa1e6bf7af19e15692de8f146e1c2d96b8c2c8db40e2b4d4d55597bf71d16e91d5d7eae17ef72d1bb9edacfcfd7633793dec0fd5a51e03b25eed7acf53e66ddf3a8b7f94b2fa5006fd901ddb4d3d7bdbd927c79db32ee51f6280848356e56cb4f9eaf471b13961179e99fe430077f93c36ccda462fc77522ea8d5df329f147db3a68b89ddd7ae16cf659feaf066f19aecea69d89dcb59e1d56e2386b623c9734ee11ae88cea494bacee9cd2bc4fa6e501bbd5fd07efb17bc39b1671807742ccd03caeffcd79d01b69bad85739f0e15e0db5e5939c584e09a402fb60a2d0da5a623959d7185953d327b9af88876801b794609dabb696ca1e048b8da60ed9adb6b00c7aa129acdadde34065d60a6d8d155603dfffcbb130b32dcd2852b87a7fde06f5db69c7841eb23eacd6bbedc762c4590b93ed3b347fff1b9a7700afe15d4a0cbae9fab91c19f780ae6ef5b7d75774f5e23dc3e23d79af39ddd453841755f449601737571f06a6b1182a111358da82b6f37976eb3dd02639b993e1b7cec08bb1eecbb1aa0cbb0cdbf4f4e279d43fe754acfd53fa7e313f68cb556b87f4567daba69c124a7b491db205de478b7e5fc480511cbd5a3f851a6ede3c93ef8cb95a43ca9d1af48a57e96fafe31d8d6b9bb5c7a0bd96a1e0bcf16e2943dd134186f69b189608d3aae2bfc113bffd365c1e2906c6d2dbf8ca6feafd632897dbcfbf93676f51fb7c6e9fed7d66d6fdf09fcced07e0b19fed1aa66fcdabfdfc3bf30acb79d9a479f5e87f362fd883fe9fcdabfdfc3b361a5dcecbe813e645b7eafcdf9fd79445f12339ddff6dbd8733935cd2f3efc819a35fea563e4937345bf4cd0516410723dec77249db9746bab7b44f5b6b2bf28bd6da96bea256bd20e1dda866ec9df7523685eaab5a792772eab77c679176b1fb56d8bef77eb6fd3a062fea35a4654ec464823cbc9a3a1d6ee405f251b00cedb24c94d3ca4332bca3658c513fc71cefe6936443f4bde6f84b9f1561fc83e6f8a1cf8cb0379f4dfde8b4086d9de9b57df9799ecbcc7da72725f514abd6f85feeb129b7cf0d610d5bf89304194dc2797942db1a23f00b4a5092b3f31ecdac6d7a459b3d8fb379143f24d18bf42ed6748f4bec1c8bb9eaa18ace80f1803dad1b31b8463d22bfa04a2ccfe2bc13ea3aff8fe15687f669453b9136358db167f642eab34ddb5d38ad2f79b13b497dd41fa549074dbe598f913f891b17384b281f581b15bda4a92a1e99ef5986fa24c3bcd6563e72b3163748a01dd53e1f89a5735907ee423106868c4b44e2f9709e782ffb560c60dd536bfefe7516563405719d73bf3b5ee7451afb6915927b4b14b80579ac15d60f867bbd2fb9ed5ef5f95ad2170ae20bf243d29906b4e021fef1549756dce27c11b05d5b7ca68a438e96b374e44e07459ca9a8c7895ddecbecbe93db0083963f1f9f1b81679571ea6e3fd94785fb50d1554e8b1e69cd49f2b519eb2869b788f313c6d6297f6b35e5b037bbca2c27696b3fb1befbe1861f203f34d4f7d07969ec6f68d43191097323c9be363dcf1536296aa1bae6bbee0d46cef1722debd66bf731b61d52390ecaa5f34cdbfe3d15e434dcc8ec7ddd5b00bef885d7958235ddcb5e1ff0539590b7f4ba9776896b89c6a5a6b1d397f618dee9ddeeaf6284ad3b6296b3ff5b729ba8d360382a0ecf3c76084b6b8fc5706b732d3106e47a5d065ec3427c0ed811058d9dc637a71742fa35605d3d419e14fcaedb866ebfeb5197d10a1f3e5c6e54d603bfa3a3907acae7e767b9335614a037cbd89e09fb7d59ca29b10742972e4c5edffc4cc91e712e802792f60be13d6b8c30f328414e374d3e0fce64f5f7382cf2b19abdcdc567bde8944b68cf56e19c0f2301d9654f739448798a451e644bc7903dace6a73a6716bf3d5bf21dd6b262bd145fd71cf18376cdd16cdeae392a729cf4e1c33516e1b6c7dd4d7d15bbb300d829656e5ad9ef51978232e7c8e8ead37e3fffa5be1613ce71391fe82fee2f0254df1faae0dc3fc943c6e3f547582b9ae36368652ed20b1f5ad917f9a3d1179984d708fd04707c3b7d08f8d6cb738568794b3a979ec54b639b6fe5b6bcdc7b4c1636fbeea7b047b6cca66d3a18bbb8ce224c82df4e3dc7e1b76060fb3f9b6339152ac465992b1fb86e83f7f227eb8093a1e7ccc6c96771ce71fd3323adef2ab17bc3160fa9cdb7e5bb41cf34651890c540de3674a7dfb69f7c09ba5ad2789587b13ddb7e006c87fba77c886b7d6108fccee5995a6d728e47f14a072af51b01d929372792c648fe239947a693160dbfd76bb5557f3876d7adfc04a05fd7f823ac357d970fbd914b8ee6279bd13c5adcec5e1a9afac0077a0ef83eccdf6ef66eff87f99f15ffba43bc30c02bdec3de317d33626e36af79b63f673606d81378adf94d2cf788843b72f09a732a6de412bf68c02cab3eae274cde16b47a59ca41136f17abfd43f86daddc645d0aea6701f61fa964da9b79f87fb11637424e7313bf243594b60e05e49f9da59e0064e08cc669eff18af6dea3a985dbc2556afa317239f017f37e10e64d13e61d5bbed7ac598d31de966c948fdff6347d60364c026c057c9d1cfa9280f7577a4a9587633ee8471d9b60f903bcd3cca84b9db7af6c93a612b7614b7f733dd7ae4efb96312ffbef5a3d2d23604d458ba8b1160d9a53cb9a4f9350437d20d7504fb8d65ae6fb1154fd33308c1c7efb6399d38c7584d8e355bed8c48b44858deb780635ec2a0cabd61c5993fab9b5fcc6399d34cf690af4a8d77cd74f21e61546ffd4ebbaf30fc29a396d3cb059736d17ae380b1abfad5c91a798a572e96d103ec4652353690d6f821b31eef1b29f2b14f3a95cf6c2836ed0d6d836682ab1b23a6d1131ee79e661696dbc93d2fead78e5bde6639c7805e637b687873becfda8b02419fa9d587df3d9776a3ec3376a5b214e01b45f580dd82f5392ef5d396d994fcaba3927d77322696af7e8bb99eb6cdd79108bd8e2c3acc8fd34f5f4bde7f86fe9da6b7732e4edfea26f1a8b609bd72a20ffdd733d5b362446648794183c1fe78b78f2973b83eb43d29bde8969e77a08a01330bf34c9731301bd4cff09cedaf66f723e5998f33945bd3f49983fd8bd720dc78cdacfee5e8e5556ebd1abf771bc32ce85f6320beb3328256228591f42fb9e844382c9a12b9443c714fb26f25955fd4e25dbcef116c0dc77a8cfeec6f23dd8d36f33fdc030b3164c9317a231ad8e4ec4b4fcc4355fad0ab191602eb0d233cf969c5205be56ed1b852e94639bd4ec3a0cc3adb9ef6bca29fc1e47bb3f1e967dcca61f0996cb7ab1fd20910a1f868e6a1bdcc9fd2e425c79fcbef42ac8e9acf067205bc2cbdf77877d442aff01a29b67359acbe35fd69191750faa81c3ec2da7682dcb7a86593a4238b21067b8869393fb518aef7b0dfc92ea9d0d6ca2e5f472c571f4d6bd41de73fae0b9dce58ad1f0d9d2c0df757c9ea67eb27cbc5c938cb0264d3d1dd8c94d7db5c09780f6ceeec93a39277c9d82d63a397e6d9de2d7ebc48275f236c0e62ed7892dd609d629d879ff10d35884c26c01f19076dac57bb65e057f696064bc87d1c13254891183ef1fc2e8089b3d655cee92215d6f90eb0112c486992b1f382eea553c49b77a4fc7fc9c4e725e15799e432f4287d73c97d78a3cb057f9e76967fef94cb22d196230967486fa9be3eb86f935142ee74fb98f527b632cd5fca6790ebf6c19e3d034a4b0c80985bd631506ea2d4a7f0bf88707ecbb0e3f02ac33ccf72fb30c0beedff335a8e39289fca0c087a71cb0df40ff78cc2bdc9f297d6de2adc03d542e10d712f0784ba633434e29bda75e9c906276065d5f1b15e5f6b7620cb8bf46f9a87c31d8fe203f0c7cde43b50143605384429690f938af36fc73185636ceab66f33ace1cf83eec793eaa7f3f6b7e9f7117be7976c24b2c6417387f9ba670dacdf2fd80b242e2b5d021c5199efb8cab73d68117f5aeec12bb796b08d6b2ea490865750d9b18d5dfaadde3d42bba6af95b382ad911f0985ab84d2101b7896ee336ad382a7115eabeeeab23e771a1819e61d3174fe86bd81c16f64ebed046a1cf44e1434272532ece4633ae0ef5881a0e56070d567df6210d8a0877083b4bf4b5c43e9e7e005ac91af56471ad9ea6ca634158c040c657f581cfcf0a9aaff96c6fc5481b383c77b538e926ebc3a33dd30284c737749b3e4bf0ed77fc948d1c3bf04cae2b7b88de5b7ef5621f384a811864d2bac6d38dd5c60986376023bfc2b2b4e4723f7e6c8ced4f4b894b9dbad42bdb5876c4bdc5de95f397bc9eb7ec53a8c1b380dbf5d5b9a0d2525ea2f805c4c997307be59d1aa806cfc5e8689409ca25c4f468d84301c35ebb58720a756b4ba36ab5e0e519c668109b4356c57f3fd29247e5bac2b775fd8919d9c7b4d2eda62dbdbf3eb67c4dbbc606e9b68fd555d6de8deae1713adf3cd85fc5b9b1f5f05aa3ab1731f81cffa8d37ec16ad1c2fd2c0d1be7383f4383bb20c3383683f4d3a0de4f0bd2bd3670670b022e488e45d853190dec01cf5d9c891736ec8902d732dbc8de75a3017b36f56ce3e36cfb77185fc56284b1a8ab5f4be502ec9d680175d38f58e4d51f38ed40b975a4ee829c5e37a80619deb7aef7b22dce74d6b2832a4cc2acde37063b630fea0e7b5d28170fea0eb97eaaf7465f024d81b5f270dfeecea0922a1e288516b0e3b47106fb0b9fa4d83296c07604f67c31ce0529f7546ec77b9ed51997dfdf16789e804e65c433f672baf85b3b5fd280eed3cac97ec737b4a8f0c02e243cb3af4e7c11e5591ed316f615423ec941757e301ba2dacb02a716bbef44baef23c568e14ab05b4adcdf9d42d7f88cd0ecf1d625a7f3fe0a9bc7c72f4023bba6ef24609612ff748f2b5ccbd91cd0638e09589cf534238cfbb26cdd3724dd7758d67a2f556716cb8daaeb97b98fc2ec2f42d3807d46d89db128f1086d1ff65d7b2a5784bc77e64e19dcc1ba60df05fce0b1d1473f96d3d17d1d0d707951ea4dd8fdbf5d1cf3774a5f114e6f8dcf657a7fe5e235f036367f7b7af184071d8bb3e5d74667983a3ed5e56f6ba03883b4d76fe5dd5fcabc7b9594034db7eab248be4846e45af7ddddf7ee83f138422ef0b6796e5dd87b5e6bcd85742ff4399c428534d69c1faaefe4b7b82f62ec985ed791c7d1f0772b74e9c746342d850278b69153df7a0ef6ac1d3edcd98286582e473a84be6e6e0c739b77f25bb9cd1b07e584c6766fb8b6fb925260a358fad61721c66a6dacd09e364fdb3ca744f276fab0bdfe39fd48b3ff3f27fa494e34d83fcad4c3abd3c63eafe9596fe75dea55de5d9993dad35ce86b9c746310b4c6ae4b41b7cf85abb055f2fd07d7b15e62ed9ce93cd7eaff5eee7267ae692d0f51321699dd5ffc9779b8ff418eb074ebc891a9f944749a4aca7e2c9d79b4eac83e225b0af055d7589d497456c31f9a11f22f0d20bb38741e9ee688a5453e629ce7d7de04395dbee4cf505febe2279ee7f43cc532fe5f9f5b7b368dd559ed6930af9498c33e9bb7727820f60db70a5d6e84e7b3b773423362ccb6b30eaaf99dda9809df7e92579b593a7d73dbe7ad7656818e6b19d4f973b68d4596a6806d2af0667dcf907da6ba93a0a31ea0eee745b1f1c5cdee4bfb75aff46186ebacca0bc575738d1f01d9f26519419e0b31182d2761b8d121f676e44e512e49574f574b1ef64c3da52de5029f71a2f0b49b49ccbe911fb197d3e8958e85f5c46ce26865768fa10cac8f51edf707fd7bd7d386ebd336417a96facb92d3c4d22d6a1d219c6434aeedafdc0f00e76e9fcabf8f762fbd39c778e54e5260b7e9684ef18bdc6bcbb3675ab897e133a26504bf5ef0d72fcb80587d580e83b6df286cd1a311e9e6a867787dee0fd82b03c537f5201166f3d63eeef27d843d5ef580d9419f9745ad7b557fd6b9ec659be3478c61eac7c53c303f70f91b38eb769f8e377a80edad7bdee96998fb08601caba8c536956a2f10fdc439bef422b67a5eb91fd83e557be1ff0fef0326039ce3fdbee90d729aa73d604fe534c398255fb6e24f968b807c9775884794f77967cbfc68c813b4d19790a55d741fed0c6f6c01db2808af4e0fe680347a5b627a05dc63b026c04ecfd71be2a46ebd4de3bc2f7c3345fad3b05853a0db25767ffe1be95bcbb38b70b312f0ff30ee24073196af7ec47f5f3f50bc02c8aa4de6d1f9f3890264cb0cf63d5a81bf5dd97be4d762710ad662cb389907752dd44b7f0bb1ba8a7ba0fe35a5e1f572dd228602f68402d61fea61c57b116f14e494c6c6962ce532471eacade7f29abcd3ddb33ba9c62214b9aa955f2021cf6f409c9fed7f6b7ec93bf353114da177cdd47c2c5ddf21ae4d6d7e75fe58d00abd823a8dffffb0f766fda92a69fbf007ea830d1a57c261a28238cb0c670289184ae5596a443ffdfbab2a869a4093b577773feffff9f541ef15198a1aeef9beaec77cd0d2be2afc2e690aedd81a834e5b7be35b3c84bec9b857723e5598bdae5dd429ae8adadaf23d7656eb1fe900edd6e97e2efb9d3988ba73a8b300b479279ee03ee27c0bce0f08f7c6f5dd617bf9c8ba07a4338788d3dc23304277e01a750d15dd5fd5fed53ab2c86d49a56d3eb14e1586f544b39560dbbbc5eefc33f0e6377836114fd71590d7d336e596ed8321d691b70f2bbda7e33eaf3a77bb2f64677755c9a4a090edd372fca5be2e6c41fcdf951ca8fcc5fadfd57f1fab7a056f7546b145b72795d8b7d14ef98ad51725b032e84726d1ce39e37875806a46e281c2ffddb57f9132a81e338eef07e8fd797ddf40061f5ef37cd9e5fd8c7f4eee43869f0ceb3d5cf304e71a947348ce57312e1cfb287fafc754c63faa7fd7df99d7f649fd9d7f31360958ecebf92c9f2f98b32b925b03e6fa629eb02f5edcebad8ee49a069eac4c197bb1c0cccda2fd5c32501c89f3a9683cd6ca5624ce82b7c2677a70aaf663311e785e89f965cf2971be797d46db75645c11db3ec4fe47f38ae745d4e381d7ed999041c53a1fb3a0a83d8263257333545e8bd8e7a82773509ff370ebef22545b55e9ffe789a72be1363fa3bf15f791752b0219258c0b72fe05b2159432a6678a721cf64ff167645999aa1c86c523390913caae755f1093d35e8e136d25f24f0e937f2a46248a25a0de5cdaf68dfb2d353bda3d8c926a7f0ae345147f80881bf681584485fdcef69823fc4d3ad748fa575c9caafb765cbb7330d1ece3ac9fe378d5a0398e43c5b5a04e12f484ace099bc5b3f44f787917e34d71f56c603fa54af94f0fdc2de5014c3a370b2a18f9dfee48c71fb4b3086b537c798aa8d78e4af17ae1f988e91b163fb2fe855e7e4c6a398046f042601d6a943958f3b14f6413c1a83c041f1909a2f88ea49962e1fd6e9ed217c99fbf12229da39e0bbf122628c8fc48bb8b1fe512ff6deb806ae83627955cf82271d576ceeba1147873907256ea808f3ac036db4f957c4ff86757ec565ccd5bc96bd696d7d832cae28cd51395a31b51f28a79e15e339208ed7c7fa06cf827adcf6776b4fa27c7ed3bb5bfbc6a09dbf367bb750039f819970b56c6c9fccc44ccf5147b9a2d87ed5eb06ff86311966fd9ceb0d43f27e374fe27e02a65a7d2dd783a3a5448d5fc1910baf2f75c0e0f5b836c91eed95321b9ca4a546e8a0ee0ad5624cf76f72d4d91c42f92479740f675b1f11d2db8125c3b92cf40eb7365cafd594eb3d9fa3def3b69a0cdca35dd630179ca608831ece6d729da09aec7f645ee11c56181ab37e9e517df803e9b2e8ae5ec22b9147ef43db242d65f197db356278a6d7fbd5d9f7e6a23e0a569f16b99a558d0b42d61e7ee6d7baa60ff996a21abe423607222caa7e3c909fed660eb65973bfd0b01197d548d5992d35e3b63aead869c1941d5a52cf5e49aad9728de5daf2c7bdf7d832987bb2613af69d6b2463690163b072c6cd38b1ea3cb01c6575e7f7e6f9c2bfbfb5f446f5e37e6ff5007f22bc6e76e7babcb8eeed018c70789db6b2f387b82a57fbd519addfbd6bf7f85a63a82c9ce1fccd4edbfbaba6d65c990ec7d214a0797a643c5b633b26efb16de0dcc1131ddb7a312e76dddbefd3ff87ba4f7e6def15fb7cdd16f38af6a9d58e15bf9d99d477dc5933fd0ac762fc89bf37e4304f1ff1f734e8efc1f7c69a325c233989b851ac7757de861dbe863feac659accd0f58aecd93a8636fe0fde5b9adebbc027addadd3a7efcd01fe3b3ebf826bd17a2fc8e7d67b4d743d2157c8e7bf8aae5d91cfb50659254f8d6aef5c9efd8e0a75a306cfd9624fcc53b1ee2b4fe638991db7f73bdc29dd70fb96d673f8b429f31c7a5fff1da33e16b846c697a101a843318f01bea6799e551dae8d138dde4094a2f1237f979c7b3cf6e0cd52e72a3366c1dc13f34c5fcbcd3d2f47a9eb1be6be94a9d4b52bfeb9177a8d526aeef15c5bf41a7d67eea32e38f93be5b8d8be6e275d84b372af0f578bfbf07c979ccf99a826f3d7773866dfffe43c8fb29f9ce75f554da92ab00dac93fbe0f8918dfd61e6dcf56b6f3e1461b1345c3b7a80c75099aa3c5ef337fab2f96f7a00dbd6d957d8b6c103f51a88235f8019750cb769cdc34b7307828f511e7aa86e1bf103c9a19657d89cd1b5e283aa381811beb5c973be53cfbd969cef8823ac8abb15bdae9bc0cd41cd072637d68f4d7e581f3211d4f355bc9ade49c8d3f2084e93a02eed148d1c29b06b9eab82b3fbecf3bc5f54ad108a05a89b63c53f235a9f2bd313e8adce81975c7cb7973a9a320e77f363ec1aa0e6dbaab841b2c09ba35e8c56eeb93b3546e8de9a9763d1d23b28dc270d188e2c2f6173cdd7a31c4e4db80744ef10278f087f271e607fa7ec5f24728b8bd8953147c068067d31248bc23ece03602c43dcaf887b9e44eb3063fba0887da02bc27597516f31ff0dd74d36d552f8ae8ceeb74de17325f77afc1d3892128153e63db0b62b6f0c7c369e43cd8b7441f1bfc109dcff361b8d617293c57b01c59163100fd56be00e0f77f75e0b87ed2338634d1852bcef5f61b2d49c979e2aafbd921ba5e4b1b4453cbd08ff8dc0c36c3abfb8f78e9993fbbdd5e55adf9bfbb4ee4b17efa7acee219eabef9afa19f7136e3c6e07c0f961beb3e6bc226b7ed99c37fdecef62a7f5bea29d9c841af8c5c51799fdb8e8aeeeca4a14fff0c432315625cccfebaac712576d0d6d201cc711ebbb06ecdbe6fe2e115728c99baa604c9ebd788c3355e29f2faee3833282e0193132a85711c73d8b2d4fcbbbdaee8632cc7a7d0eac5cf8ed649c1fd5ac0ee4b9ef1987e94e4edefb8934bda37b083e21c2777ba2eb8945d8b54856fcf77d0fe9174dfa295b0b225a9f59b12f5bed8159ff9be3ee1f9b7407f0e8f7de97b505afb4102380cd0959afdfb5597e2f1bce6239a7e4bb11b6e3dd7dd193439b9285f73956856314d57a8f41bc73ae5187ab8da5d6ebceb71fcb186a6553f439dba1eaf5bcb3dea8ff13e18b584dbab51713e3a6d79ba893f251ff04aa91aafa639a383827623c4722a7ad58be2b83061fe6318cc7361c016d7520e3d5621b7796a179c439fe74a265d274a7de10162f3ccb9cdf92f2f9d73a2f83fa5f1fe0f7a6ec370eab4c6371c9e037bd288c4d39a2c65571bd0af7f66162e637b857a25bfe35de06b7a5367cae726655ed01bcb7e606b4b6c96d62e6c7a59b7276fc6434cba6da4c899bd7f310f6f32bc5354bd436fbb7d36d723d11fd59b397f0f6922ff6b317bfe49615f5c2786f9790e791c8826db2e2b1f7f234eea719257b447841df9199cdf2b2b257280c65f595e72150036962366318133da8ed63e2eb8ba87d85b16bdaed3ea24f88fda62bf14de789794930c7bbf115226cf0f439da1e7f4facd399e5e12db91727fd7437de57b58982dfc91c9d70fd7ea118600bd668c5d358d4b550587dda0b9c83affbb6ef0bf23bc47251892bde162dcd3e5ce71875ec0db4d76dbea7ed18a25a9aaa4e9cc3c6f671efb914787a89d54beac6f28cdedb8bb796bd7823d62d9978228e0a78ce6bbebabbf5259d04f89dd322ec1a649ceb2bd4f2aacfb7c41d0e3c6807275fb19ba7d6cee904ded80c5cf5733d4c408479cfcb9a71111ee299b781bf857bfc1c985c7c4ae49737e95c0e63478415f190ae65c721dfd1bdc5f750b68be634ac5d2da31ddc07da94336a5aafad70febb6fedb53c348ec21dd9d46cabb073857026dae786e3d3c7fadd3e54f53840d955b689886ba0a9fee9a7bea14bf8fb82985523df345b2bf6438e1dafd19fbcc323eb49c770fb139e69e9f23e3076b341bcf53b7a1e7c6ee47967f58478a6eff201db287e1c78d2c1efaeb2a92aecf1fa2e5fd6ffda982fcbf3dec68b2ee48eb6f3b1953a96a38ec7561a0b644481e32b394ff04cfc105b91c551bc206cfd663ceb442f7c3478d622cfc9e282cfb4b4070333e5fae8d9b132d8ddd89efec76246b41e24fdf27b3a71edcd0708bfd75d1d269642e4200f17713ff1fc1876599c2eba1eb09251e6a6b11ef7ef9651ab4efe15615bad1147f1db7115ba9683ef1b15e1f9b1ba46e8efd7369b002b8ed5dd2c0742e35c61ac2c278cfb523e757b7153ac2104d239c236cd0de16a73f139d4979020d9b14f51bd3896370ee6cab673281b2df8bc70171daafaaf9fd866b8567254d5b1b271bce6585f6d1360ece0c6da8e82eb788672c85db86f7a7b7d2ff0c93acaa55daffe910dd68c9f88f1b8daf21f18d796b2a9d0bca1fabbeabe9d8a7abedf85ebf1682e7b2cfdfb75f2ebe57d10e573cb49673b753bd7d49d6f6d2edfd5c9aeb7caa6c358a827a8b9b5e4a2cf953a1f1ad63145cf6b71bdbfeb21ae6af6ef81db4b231ca79bfbde6b815976f9719c271a35f35c97bc3f789c9242d88a48161a70dd07b2c49fdbeaba6d08108fb712901c12edb19d6f7177b0f32b9edba7a2b7afdca7355791d7199f31bfbe7cfdf0a46783c3182278c905e759ccbd47cd5b835e22651ec6ca289e8f739d75ad70d59f58e7baeb31d1b889a8e793e50526f0f2147efd2a9bce29de9b00b8372a5e48f1b5581e3b189bd6d88fbf421b63c147d70440ff819fc7eff9ccc5dc6d188e95695c7e03b92e1a3807ce1ccaad73c0d44bb0dfa16b347784e3553d79db3a8723cbe1c8c8bef35cf6fb301e71ccda5bc43b285d7697074ab497cafe4b5c5f007d2540adcba49ffe42f8f0a5edd4afefa9f63dcf337d986dd3bfe23eae118835f51aabc4f3c8f366c3335fe33c71fb77cf9fc50a77a898639c73581ddcee0adbf55d3806a37ac674b42aeb27d2f2da892341dd3c12d5f388e6e1b1bdd63e3ef19e463d5972ac3944fe8fe4f7720458cf1456ab1a0f4ee53e02e1ceb8a0ef1eca4954e8fce0538c875ee66c0cca06d864457d4385815cac2311c7409872cfb3fe50597aba28f7b31b573d6e6a1a0c9d73302ad67fa4f33951fbe930437dea756f9751e9a8d501733bd03514d636b9567176a7c4b7de64536b88fbf1497cbcca96acc761b9ea65bac3bde676c781fb92c4e2394c505c13d55261dc24eb48700ca5042fd95009713e00634840bdb09bc3332c2d1e38273ec22b2fb9c030efa0d971a0bd44fa5c83b8df934289da17650ca84156d2f3deb8871ae706f34896bde918b71f6392e2fe2795c8b132f7eedf6494b741fe3cc63885f331b99e44f2ec3bf577c2f37acfb633ba067eefa3faa3053f7bd9a96c7e0e4b8d97dfe9af161fff2fec3bc59220e62ee839e19f1def942ce8bf5eca5ead88af11affa4c63b40730f7c5a2abfec91ae43f5983c8ab6a207d11e78cd35d29ef524f75a47c6ca52dfd161298dbc35cf524c5348660b1720cd59382a59dca6f4e531f8a273dbb1c3fe077fa9b398efb47ea63fd78241d5dd4af9624d17ef620e74123d6fc31823e58577f09acd315619483d3d5b364b247bcf26bc32dc0e386fb469d4bbe3bffed8cc689cfe7c3ff861c2f579f5be672d9753e0454ee16ad09dc7bd046f85ccbc6d547bd5f4f081b2cd694ea7b269efc1d4ecac7f9374c7d8b64b8f03b30c7135b433c11cfeb21daa61991e3cd16dd19ca69457bf01c5e8f8a8ff0bad414d984d08e9713699a967bde51fc8e2af99d4d8539a19b89c4da9a11d1871a0f4e20eef76e6b4d9143cd58a0980e1803df9d1f4cb8b7cd0da943be3e3cbc1f515f9f18138bda8f049639f49baa5eb2b5256df5ed499a6a2fca1aca8e9d01de870ad40dd9a2f382f8de88fc5b86f01af6a50dbcb94cb5976cd1d50b9d37cce073261ac291bac5eef856ede1ebe93c315392db07c07d50fb228893eb5af4ae6554de71346362537a85a3c6f1188c506da4bc24e4fca28bea206f6ed7894b1b6732a230636e1f66ee23bd2c17dfc6d5a63ec6df1b0ff81c657546e05e03f3b1e5bccd0c4759daa931b652d5361c45b3e4f17ce5acce01ae83c31caff51a2359de52eb0bc7feb9d6d46b74dd6cf5be7e447d236a4cecc93b9c56c308dbdb656fc3283de83be893d8e7a8e3549c5afab678eebdefb8cf9fc5c913fdf3f5ac5ff5477a2efcb89f7b55cfc590c7e5fbb04efa9f7070999c8e7984832b913ecc5c2f393db05d2cc4743f465bc0e03ecb49ac6d1046fda4f471e8bab663886d67b666afe223595ba72fa44b50eccb58d6758ac975aabd1c0bdb9ffc3b80e777527cefda9b9bc2180699332e3910199c83c0cb5f743301cb81749b982817c4bc6b73998e0e6717638915f65bed034c34fb3433f35f53b0c910fe2cfbfbe0f5f8beed05130b630e213fa5e64d3e04a694a3e7232e8984c00a677bd118ccef8a131063c9e8c836ae7102c8183ea5931e58afc2b6e0d66b8d6af5d297f0f394a1dc76fddc2f94d3bde5d7a286e2b9e47312ac1d94b5d97434538af770bf2d0afcc5a67bb11f20feed63947fc039b476ea02caf5f136a8ff3d9ab57294988823239102b7c7e2ec1e03333f931c2904eef0795afaec4c3d27e250a9d704e9531363075c1007fae0f5186d2f97a986aefdd7ac0fa89a15782e96da13e6e8b1e1dec0f9efc0cca18f798cb6f9d7743064b979f46f7125551cffdfe24a82efb8c51df502e726dae660ea21f957fdbd61fee05e051853fe919a25e1fec4f5465e85bf2f3a9308831f8e85931b98ab8edd3b088b7f62e6703e9867610c09543f33acd6a04136c2eb0475475acaac21c07104ec9ffe0eaf397cffeff05ac880bdf1258ccb96395beb877c78a41cac6bcb401dcbd50f135327b153057220bf1676f50cd94fdedb059e97495f3fe8db94e59c7a5e5b39287a0a9ed756652b5d22687ff491cee7f835a04e083f0b9d70e3ef99f6d19eacdfadd27356ca3552ceaecdfc6b6252f10cea9913133f93b1f78b3577ce51d7b9064e90841a486dcece6238295cbb51df849f0a58ec9e5e96d6ec2f240b8a9863997fb58b18ed54b38ff37efa8b9773943e02fcde7f22f511ff3ba98f5c9b9ba7705beaa3f4afc0ca7422565ee4b90db398637ca66fc3f2dc0baffb27e468930ca5f7919c91fb88bf47203b8b1886c9f1d9b0f8f8b8be97c5b446bcb6653caa5bc4036f74ae6cedf6b2b88f7c88ffb5752bdfec5564ebc72b4cf5493ffdabe85dace2f1454ef056f17b0deb774cb0fded37d475f1fbed5ebd46cd3b9f45f23c0bbdb7634b6fcc8ffa0cad215818cedcb653b030ba0ff4fe3cd07f50cd511b87e47fb61688ec1f83eb9dc72ee8f86e0ec27d11b3ba2680a9872b6502e6f261cf518d8155f6bf5d8a5ecadaa76ea89529ed567efe6a1bbac4ad2b6b9770cfe0e5c0ef4be44f113170a85bd263b4bd7f4db86daead61e2512d75516db570fcfe22fbd3eef4e23cc7831cf72fed8d2bd46d2d6bf03543f6556d870575dd26b72e536b788a07d49e689d2bd4df5272d5f163e0f230a89f92c711bcfb0e865beeb1f7601b86b2b1f97b538c333b6aaab9a6c6f23d79896ce58c9b6b418fdfa5b1d750dc47f7c03888fcab1448d3b4c0e0f814d586d535658d32d9e3ebdd6abe18769e9cc564f09a55e7e1361e96f32ecae535f75d4bf9a4b1deca39973cb50fe8913a7f8db19f7f11efc4ef1bde1947c3fa3c547f38501bbea18c4b36e6046e25967e8cf199711c90dbc34d7344e43a9bf30e8db2e03b75806c7f5c7d9ef93a7014f7aa6af210cef8bd5a3caafe05c52dffc11eb5077a8f8afa36bb594f9988935212cdeb82cc953f20ff0293957fab3bb2ef29237bb822c27f8f30eeeb31dc1e7f13fe55dde7cfeb8fbf4abe4bd16f536bf86b36ba9f6b29fbdab9bea97a1fb2394c0a3b91d9a3c7b559cf99b85f06eb5e91ed24ea010a46ab8ce41016c4d8b9fe57816d52f2fb30fd4277d737c35c18cd3d4acebeee5112d4a9d5bcd25ee33a66446c1cca403ad668bd3e47759f0cb767a1ff136e5bbe6ba467d3be8afbca3405e7ab8abce3a2f3d484b743daf57be1ef450d9fb0276f9449132f7f69ece932fd1d770fdb7b7657ef727d8b0ccf525cf12c09ebb104ba568433d186b1c2e6f402518f6527ff0a795e1f227628e8db3229bc208a6f9bd80322995ef63d1d456311e8f8fbb5666df24c2cefbf57174dd5d50978c804b1426eada12ddaa4dfccc77a9ab8b971e620f21c00d7f66ecd58394702dff49b58d1bcec12f9e96e2f6be383c078f9fe6e52eb7daedfbced7ba9dad83ab6147a26e219c1399c4a9ff2d853a68b389eb2a0ff768e5d791b40d9d8f137e5b7c173a30fa99ac7cd440bd0f9c4b877956cfcad6f5f4fba26cb5177b5f177f666d67ffb8ab6afff5a9aafd789a967556d561d2b12e13e40bbbbd15fe03803e81e66de4ec0d83a35fe7bab0f017df4b2b7667607775e602baa73c9f7c652517bf8733f073daba8edda36fb3545eddf7d6ca9669bb0ac1d7e646e24b11ff1dfde2730dece76ba3c73c7c97c3093fd5b027ed4bbd73704b9eb63fa27b9ebf14f72d77da3e2c575f77f43dcb6c3d6bd3a2f1f1ad5bb90853b406048d0d7ff3f14d7253824843dae9b22b6fbcce0d451b557ed1874f4dc6239b039ccfa3506a14fc74ed1f971cdcd05716a35e0d33cd473395a9d6d49319d21581843c7f7e4b7a569f7ec1fe1c3b5e337859e958584aea3ed943e10e1ded1fd8ea25ec2077a53021e97e0c8f9010e510764dec735837b5f37a9d86f21d3c1cb475f05cc5e79f910c553707e9fd407357e44119715cdfba4de17c2dfc26dfa0ff690b6e08e3d12f76fb1b174c2c662f77ba9d7eb7e08c199617cc3593fc55c904d587edf8c0fd678c84d38050ff5888afa65d9b8d9b76c88d9e0f0adbe53019ecfa5a57fd217c5016a7eb186d824ca53503c176ab41f7f455b847b2ab9fd37e43f05ee6a8374163e2b9bc286da36e031b17bfdfc2e585b32de6377d453608b75eb8f6b0c1e1c1b1b7712cfd1a3f11f1e97f19bf19f4f1a173307fcdf108f29bb07b07ce0fa5d1bb07e34a3c6fa11d4312feef67f636ed9457755611837c6bff1fc7d037b4830878f8ea76373e3e164d0e015d552ffff315ef3734c345cf7fb4fe1dfd471399bb769bd265d713f06437c8f8d39d11a6428c0fedac37de204c71caa776f3c9f552ff7837ddb5c1ec9823644e0f63eefe26cb2ef6ed0e3ae4806e0f525f8dc783dccc61f309fbd7ed0919d9b6e908fa239a9ae29675dc37a4d2ffc607dcbe3cf89e4c074df102fc47aa5715f53715f769f7c3fbef3cfc7763407d5ce3aa3b18c7891aaf8f94521f87359fb4911f3e1cfadb52b5fc2e6d8df1f61f68c478d58d6f7fa79c087999fa7fb39887620095564c76461a7e798f69ddaf5c1dbd37cb0bacc6ff1d67757f9fc53fdf477b30bfc0eab33fe9f00d5161820d88173e0c071bd81686f20cc4054b385f9fe3fa11f6bf33d5eca42fea37e2ee327fd5c76ddcf35790cd33ebf967e2b832f732562adb7b5066d3816e320f90a513c00c7022a3bcfb511a72acdbd2bd8a7b84f3a8940515b68a6c4339ee033ce4be7144f9af1f3cfa278e55a538e8137db849e738bfb6fe7b0bbdaf81de51c6b6a56ea685d738e41a1ffa0dc80f61def5fad0aee37e55cf41edf7d77d44940a85d366b6f56d9a9fede91740dcf958eec2c342668b7b2f30b0473ab949cbe9eace0fd202b1f4b6f954dfb097d5e2cb9eab52875ed64b4e270852638cf798ebac6354672465702abca793d471de7ba76d5a383f04ec157089cb1d1d2c347ead5861e6a35dc0720d4944b60e35860b8538ff7e3f0f34300f75b51872088bf08e5ed9fc4332c158c2ca9f788ce14fa08029f2babe39bd27dcc3841ef34d717a5d9cad41a1ec34f99de3ffd064cfbb2765c7b22faa8740ad31ef72cb661a3e3fd48e0d3f1fd0e1e7d2dc23b17cc1bc663952e8bce90e255f34d8c5b33b99e8067c95f6e478d1fc07f7e8b764ed25427311b9ca4c9adc4a056b7d135b9a17c841b9f0317df3b11eeb706fb08f5a9a56df98543d8c94538cda7b2cfc477c7b7c9688ef471d0e981a0c0ec2ff531965f04c67783ee877beb1ef6f4da9b9b508f41bf41a0bbabda05a626a7e0b1005fb56ca6ea12e9dc5499ebc2b28faae78367626e0e897c3939c7cc3e6fc4f5babfcfed8e93c7ae73f63b084793d63d0dfc1c15afc4c02e3093c81a6c1c570d0bdd106d87756db80bce6e1fd5655df5baef66ee7b89cff6199567a9e81b0826da53c13b8f6a360bb92267214891cfb736c9f7a84f2e53c3f9e152f5dc1219fff5cbbe0f3545ff8e6e52bee8ce5e96d6ea39bad6df175bf57da82e6f50df07fd2424c7d0385e94a599205e6cdfa4bf2bbcc932eacf1dc9adf6dfff229e89e3da62f759feb5f4f46acf16cfcfd8fad389f6c2d5b192f850853d52c95e5c2bc4ffbd69ff97b2b2e9798bce90e3a72865880f6508bd0687fadde8f7ffba1adcaac6a631d686cf36c533c1caf0fef042f71d17dca8cdfa4c227083cf61777cf2dd1cf94bec9cc6aa74d4ad6146f0edb26b4d6121ffbd35e4099b2f607bc64a1946e1ca097332d036a8ce9a94b376c6428a4abe641c5f10d7e61f26e6e5321de9c7593fbf1218b795ec5b7557a8b792cda337d806d94242baf133da29c7b09f5c512fe090190b7e5fd333d8b11c9bbedfedd63c3f9e255f71fc6c8efce69534f79abf19f51a9dc7db6040d53d375e2f8c977263fa9e4dccc44e1a6c616bef9c0a9b390bbbe3877a42b8f3f137e545667f54df2baa276aabef25eaf8093e8fc24ec17353cadefe8f6cbadfbccd5bf230957b6ff30887495b3e47c88b417d038df1c4d54ff2fa82e392c2df57739bd075d9776cccaac6581c9f95088c3b943b5a7457d53ee6edc2b2ce8b3853fdf418f7abef60f0231af62b8bb14df9362ce716a70bcafa52d2165744f679f94d8dfc20e29c13f4659fcc11f2f9efe4c591effb047de6b5ab5c712f24c6b2823ef5fb3081b25a78f6fff1dc16616757eb877b64cbfd49c5069ac633798c17a4d46b1c27fb5a94b3bf71b65cb274d37a9ca399125e9bf9397c93e6e788087e8ee8469e49fb01dfa9e60911c962e40fa31edfd94b6cfa3bff961fabda75cd279fcf3c3b5e4cb45936d536cada6cfb7da504dbe66f5d335c2401c19d110c4e9f141789367b89ad977cb19bbd8483ef7191c4755db854e5fe187956dc87b02ebf2f8f45b2b8b44b572c3f8554e6fb485b5d308ea3eead2aced309cd99c2f21eb0e3aaf1f66a197ba6f850cc4b82711c6bee90107387487f1b77c868757c4775ed5c9e94ad8797a65a8ed785abadaff30577d68aad71e7d60a6315306bd51dd36bf5fdfce3dddaab7b79491106eca4e2025e3da8778ebc1ddd35a04c6275f74ff6771898d00f10e86d8beab72def7b595ac3bfee7eb706ce81ab5ecb3e7b9c0fbe1303b3b21fe17ac7c25a7d9c6315c6f0345b61f320450d3e55af38b14e8088a3b3f1a2a20e7f8372ee446c5dc4d9c1cefd77784fb875c3f8e9362193480cf5fa6fff10c7c92aece4bda0a39c7f884dcecf6391670e3fc5b8e55c4c83c3f46a8c459fa10ce0e606c985568e130217bada874df549eafb88d2cdf7fbcad159cd7f942f66e5255933d2303e4e7f3fc0095cca0061edf4a3f957dbfbf7e75fa7d6dbd3ecf6da0d76010876aba7409bf5e637fd47f957610f0055e7bcc135cea5cec2394ed2d6cc3ebc15ca5b4e81f251acf5877793a18e3e30f3aad4e3ab72ee12c2baa2e62f2decf4b914ed1d94ff5cba768525f3de15ce5903c6a6ac507d433fc462f0bb4cce4b921d4b35c6f650195b40c407096ece4e3dae79cef6ff9eb86fcda1fb00be02574bce8e95a98347bcefff581cf46ecdeb83588582bae5262c6c9e4396e5c16dae07e6e2553ffadeffae5ada1adffb2ec770a3add3c8fd866d86a61aac87f5388579fe7f3c230dfd4357e33fd03f245dde07c1ceff54413058e5f3cf319869c1e78f78463447844d47717f15585180ed55b5affe2edcbe6550d7f8d04677959d3e0200f5dd58f2b9d59eb7457b1af74b4f47227958f982b82f5053a5c026f51c9ea37fbb3e95e4b19582b963cb1f4eaace4cdbf8b025b036ac86da1533ff6fe02d9b99764f5d3963d3b47ba33fe220afe555cdb925c6852af19e1a75ba0887e4639473f56c35fe09dde3fcdf8669e17b63b305d3a2791f73bce84c8eb98a33f83b9dab43aef15e985ae40a2b1afb31d2a1ac0d8eae6f5fc1f68d1ab3ae195fbad6fb8afb6fbbb03b3ee9da70e317cfd535e45f97d8ccdb02fbb4092f86f2e1eb7ad0276546d69bb7d65654bdbc2f81d99b9b766f6c39cedc9383376b08869e3c1fbba9cd7f5f0ace31b62337e1de39f93be7aa6b504655df9d85ec77f7931ddaf7fdd7eda4db50cf4bd7c3d4b857577d3335df4eb13797746d0cf4c1eb26ecea9be5a7b499f7d36d23cecca3b5dc2955bbf8306728af03b9befc6fd6727f032f5f5cd3d6de4b8a62104f67cb060bd3961dcb51dc959d8f0d55b14c2753eff4d64a7fe41b76f4ebec1380d9a77f9dddfcae6ff9dff50da7d03764f11afecf37fcb66f3873ed786909eccefff3f3fe39bfe76fcf95d739ca8772cc0dbec111da93942fd1c267fc101fb47387e3b829b7fa583cbf8a814e34bb29eed6ec03deeff9fa511c9cad4dc2b905479a72b9e9265e7694c3a778215af8f739fe4b320edbc83755d408173c0e67d667b5b6c97562d6753e0ce76823afc39f728362cea5928f25cdfe5c97577c60c77737fe0ab70fe3d608d690cd0f89d78fafe9aef9bfea357ec235da9d76ded5baae82ef177b3036fe685f8a11ab7f6647087b0b506d6ca32f729a8d365ddf7212df1adee69f693ebf0d7b8b9ff8d7a331ef5f77b9f951e251fe82e31e95fcca22d981bee2d0f78c64d5512e6bd74997e630ff30f32cb0e4676ba72c23f26c407b64a7a2f734f99353da365f469a73f53df4fd8d3c4b4db6ef23ef43fe2b5bbb83ede9cbbb537f5ff31c819be3cd41941a49aca983b0fb96411f321e49c768c761eba60d5c360cae91b87eb1ea6d40cf3188ba6d8c2bcec99086351a6f03647fc66afd5bd95f5d7fcbb0e83d6afa0ee2fd0311c639ddff4bd6c4d7b6bb4f7087127badcfe9af6c3a5ab1dc9841cd8d89c6d3186f44736c651c9699b9afb83041a001a99675c57ceeb977aee13988fb4c4c697892961dfb1cb84686b8e404f265b14deef11f6d1df82e686f77c752e0ae36b5ac4ea16f9b44ddd9af023baace41a1ba27d4379084ae5df78bf58102cf368b5d01bfb3a9d798c76007745ed76dff46a83f6b9d5df4cab4e9d202efbfe44020d76252dc478c753141fc1776b6e8543db35f1fa3fc8b8a3978f94bb4ed2581b63a8457c2762d9e57d6f7609e15032c7959d7c0ef995c118e7661dfb9b2944dacec4ccaf909c6da77e29a77b6c26363793619aed5479f7d0eacfbcf26f6b1e8b92df7d7b27ad5518ea156c62d05cff11ae542655b8af613c1d785d75918ef4e698c8cb2efd16b5e2be29b0b7b1bf109097bce74ed89c540a5f79c9770b568013b266ffcf231d2dbed5fd11c3b6f5fe108ec913e677acbeab353f2813cb5d5c761ae909abb8c9085ab43c1a524a87d7b61cf50f231ca13f60cad4d7c867c93f4ff1e9affeb544bcfb1a6943524a8effac3cc393dfb1dcc2f7eaf3d605f8dc6a0782fa11bd01efd8a52641325c27866573aae5dfbdc66bfb4c778debe020f3f83c6a224deb96db5ef36be0b6d4300a669537ee2f167451de7be5d08758506c0a4ec79e5fd6165d15184fa4474ce893da34c35eebe476debfb6b0764d1f31fa9d1806b54c82395f3833eac53c2f94f50f7096d9d1263ad88c7c2ebd8fe0b117e0dea81c825aa86a796797fc503de66095cfbafa0298eaf3d896c96693c5000d35f4e706fa6bf387b46cda465a7ae455a7ebe92ef2cf5e1b9e04d07a46cab78b347d2d1777f1897ed8ec134adcf9d01e75353aee4f98332817ffe233e970a2a0e5ad11eefce7fb0c7b9390781c5cd79d5d34fe91cd1bea0e3f7c7b89f7e7b5dffa677aca97794eb3b22f679bfe0176dcba98c56c8ee40b9c51fea0028ff095b5085df1576c7847fd88b45cf7f88efb7e394f810b2b0d6a4d27b649e51ba35634162ec87d6fe01d4efcaf40eb8f4592fecadac099384c738128f93ac67b68a3c13d4f7c8a67063106d797ee836becfa6f130b1aeb61ad1aab6b7ecbb11e2e8a01a5e1c57b5bb7770aa4687bb18e5846ccd789b865b43a20e7673e1635318c7bcb25da9f8f393902ff1a17943f1a086182151bb52f22b37e1fdb198060df37bf5c4751083a29f30fb20f1c1da7a51dc87f7f36e9cf6e4d01d83688b39e663cdd9079e7e60731b35ee188fdd0f6d643e17d2b49644de905aa717025b2525fb123e199c4e2ab63fe362fb546fc1a2c08386be01b2bf838e73e579d37f320f43c19967e540db3c50b5dd095f872c921ff28dc21db0e0beb35f7ceb2413bdc1ccfe9b87b1231538ae73e5c3cc8f81f57d0c9598d5ef0ce7620367dc2dee00c44d0d75b4df51e1bafc9a829a3b8c1bab2a9ddf07f279d119433df77bd19927505ebe6f7bc1622f9e4bb76bc4d37daa849fa72db48bd6b7d3a7efcd813e3a9cddcface9bc499ed9fbb5749f9efdfd18f8eef139d09c9def394768eb71983d35c638e143e05a1a7d8b7a67653e7629c215bd835756e9a544998e1c912dbd14d76296f6efbcbbf68ccf35e2ab23e661907175dfe2b927eeb11ebcc7a2e6fbb17bf6152ec3c6bbf616bedd6bfaded6fee3bf11f752304e59f99bfbe3cfd3fda6011716d7bbbef7f333dccbadd7a09a8543fb357bf9a1f95c71759908878bc1839e1d5ad63213edfd87f3c02239b7978e9cbcc17820f7f92384b2417896c4988df76b522b1e15b60695ed6b6eb4030a3bcbed3871135e1fee0d14f5dc20bd21d3b93362eeb640f4ade07df496843ba3c6b9e2d7bca5ff98c59ce4fa90cbe7dba104ce7e279703822343b03fd99e736efffcb05ef8dfb936e29e9f9143d70d9376a727d8d7777883ef8d77f9f94ac838ccf13b190cbb93065d49e15f60bc6c10ee56077dbbd9621cbb925fb7c1fec2f612e33f0cc9dec0067d56611290fcc3471df102137f6b3ac71d279ed03d84c4d8533c76924fb84fc44ab79b4c6f94297c0ff063324578cea490e2fd70b07df703cc527eac8fc66b0ec7c06991fded713819d599e3bceb0ff2e0c9a7ffb9927c2bea2e34633bb31ee4a98063d5f22adee90b6241532d00dfe54d9812f1bab2e6ad25f7fc29c08d4802750ca28e728c794ea53a3edc41b193225683714ee0df98fa0c1cb7f97eff0cf463181f5a66729e85bfead1f515b16b73be79517fbbe27da0fc17c703016519771de95f3d503b27c0cd9e72f574148e1e587ece303ea735cba69afd32fb54aaef89fbe92f52ce0618b7865bbb476359d636079e70bd1e895fce41f1ee7a3d9acf3a7d5dc92332928ec1eea7e76d735b68b6b4708364be83fff3af8185fa8876c277b53fafa88546df54e174429f08f59b8fc65f91e65c630d80e89a7c06e81d656d5572b72f64e29d18fcd62a0e70f2bdb78f4277cd7d8fc2f46aa869cd7f882b2ae28aa4395a84b5433c4e2deb3ba06f40d7f613846ddec4d5108d9c7b391a8c1de6aa17efdabb05de0ad74ca07a61615f802ce09f6eacdda3c6bb0f9270e4609c2d9c073e075e22417b53779fce01b28f917d8773f8dbe27d26eaaf06d31db4fb5677f16490ecd8034bb0f7285bce18ad9ae601ca09546f89f0a677cad570d5cf757f73209fc7e401cebe6ba4b8a632cda62341ef28ee2fb8d71f5dcc15819fed49077bb4caa61aed8fea702e489c07a09cc28e014215d75d33355b37bfa3a25a5584593c786dd101a51d227f059a732c7af1a4691acc2c49b54dbb3722e3ca6dfe30fc9d95c74c9e611fb4710c74856381e706f3b4a5c1d81d3ac38a1318d536cd3f7d370793c190c238d17765cc4d57961e9c23f47e2efe5de5f4781f5e38cf71bfa7994ea21ae55c936340583ef518eecc85d488eb43c4de4357490337c7359c9e4ecf8dc9adf7b5fa6f0fda696f3fb06be4e45d03a7d89557d1cef95c7b73e0ec54683336d7df778c063ea29910034737133edf29c6a6044b8f3fb7f4fe4098dbccbc54fd3c1f5107ea05b47f403d37d23110e33527d1ceb1c31b27936b8ecbbad6b8c43dcd42cf39d91db00f7760b776e749b837866b37ce30af737e25314dd7ae2c870ec2becd821df8f4dd9e646860bff6107e19eb8bcfe19ea2c6764d903cb3cce48af9e6b8b9473d0fc57eb8e71bb4cc07b819bbfc0be5dc1ec08aa0f6a92529f079469a2f578e31b6d2b8e275e2d7ce00a4acf1e439bc7e6608c7047daa560e4ee1783ecc3c65f546ac29650eb5416f485bc7ee4dad54f1acadfec01ea4bf63d95d297a1a1cc38e2aa17eae3a564cc993a525c3b169d6507943bd27b262c1fbada1fd171c03b106708f9d834e0eee3d0bcb27ccaba0a741f6ae39a9de4f8a3d2151fd64363e1f878979dc4e4cbdd065dc9e3af9ee09da69c0ef001eeb0ef5058e4b7ecc2d94d570dee1b9e67c84967c6335c7eacb79edcd17be8d64c6f7f78ea548753c5f780fd2234b09635247a83705da42197d2eccf48b9123bf62c4437dc7675267cdb15bab5987737be1cad5070322c64baf8999c0df10c6cf7b55232627eb8e53c9f109fc0dfb34dc7978443e35e28c5bfe8fcec7ccf27f3d283f3e6c092c0c2957e17df36fecff9979c2f8e77be30af7ec6458e090779c2cec2705367afe155c89bed1529ff7d36c5aec915053f693c1f03231d36c62e692680ea3fa3c717a8fd54796ab4aeb7e2ff1f7b302178a3b738fd64e81e928899bd6f46eef3fea4d30c074277f455da3da2b77ea6068ce2ecdce969fd265d95dfd82ba24fa598c67331b6d3afece01f3cfd565aed93ddfd265ff867c4e2c834a5d5bee7907fb1877fa307bb3c16b7766a5bdd9a72dcd6fabcbc24aaf0ff8a16980de5bfaa131678f0704865fb8534fd056fd18e5054fc8ea8cfee6185fe80cd87212f57b97d883f7e515cf54bcb3bfd9ef281db9e7b6e4560336f680f291861978f3af701434f7056931f4c192d075ec5046f6f3dcf75ed19eaae3a8a8163dfb30f3fd37f42bafabe1f7407dcfc5491e8c4b769c58348687f67fc751a6a300fcac4fd796679f9bce6ca07766b76177761bca0bd786b2a103fd5ddf9581a32948a659ae7ab9534b8aecbab5f6400d275c9b5100fd7678e68bfeae18a0735cea361cf3d807e6666ba4c037ecd5b6b8bed62f45bd43d0b10f3a219bf56d7a6c94bfd473cbdfa34df9bbbe2d310381c87fad78940b3903e7798e6478e1a7079a5de5376c793c3606d2a5a1fe4a84e151f6940c03374862377f8c3baac53ffe185dda7cdebf443c73d636fd4b985b11bd9fc72efa75c76f4c03b29fa6fb760ddc7986646c8a752e9f2f4e7fb5e499fffadeb32a9fd3b25330e4f2d0f05db7c67791b537a23dc0cd25bd1778fcdb1fcf33c0bd0da1fb5df92b2b8b2e10e466ea3ad636dc3ae8575928565373b412b5f559b85f9579c55fc55e9eafdd9e5ff48514359872f2ae6e0e459f77794dc05f83f8840bbb86a9edc4fea555d68c96bc1e53f2df98efe5fe38bcfce5dbe360ea58ddcea3e3c9719de03561e622a7df6782b8c6e9e47b328a7d23aeaf564fec3bb21050ef28384bd26355c340cfd1b1fcb7ef2501b223b9f9569fe8ef2bf84eee7fdfc3ef2ed622f3a85e316eef527320cc17337b78d9e5ea878b5c24cea598dd8a13a2054fc511f6ada37ad2129f17bc1ee27efe6b423eb788bb4dacac137640aa0f5e71ce6678921af94f1fe30c2c6449eb1c897ab2db39131b642e5e3b479a505cf2e9af365d53df2396c9f59cbc89be611bbbe0180c5be414510351c58eb52745b786c7e8534a66669e2d111eb481eaf3c3ae7e9858a7ace0a72be2f5c7d2f7fd5abae939dc394f31e21b1a2ae195ee67247a934aacae6462e609e615f27713f4eed76caabdb05cb144df676f19a5a8f7a95372c74e463aba0fe1aad7bc9b80c72db8d70fb729f88a7a2f1f239dab25becbe98ad6c0f8227eaff0762bec80d10cda2c598cebdbbfa22ddc9755ee037313d65845799103b8097a5c1bc7c7614114e3aa7ab9d2ba96bb7827fffceedde7d3d8d1c53ba8fe47e9fe7bdc87be03f5a5f490de95b13e23f038b245c781737608bbce3118f6107e86bd7312bf93e881370693fed809774912ee0cc4ab4df6dc46d7b69e5bb2476e7e5f4e14bad6d88fbf421bdbae111f5b66fd21e1338a7d9c40bdba7c000faa41ce49132bc3b5cc9e747ce7ea40681be1bbdc444deb56da353fd609ea299e147d997fda6b615f5b38b7396c0ece66fa3bd600d5352e7605dfb3dbd6e740fb86ee7e25b8aec09c13aee743b88777fdf3bbb6f59dbd54d85c42febd961a0fba76609855ba92cc7516dc0d795bad4881efcff916efdbf43b35bc445f5c294719f9c460c94379f1401eb0d0090ff1d7ffcc9e45b9b507e2d69a03da7a6b5ace77d5933d2d79cc1fed2761f6b829dae31aeb63d6f133e19e57e7a66937c719299f72d4b2779bec82169cddc67d38c036aceb95fe5db97f0fcd7b97b8a7e9dc2ff6c1d7da5d6d660f7e478b5d8fde15559c6f2981017142fd858b9d401fdcaf5fff7e7dbc5086d6d8ac711f281f1eaa0def09b1488bf8301ca785f20a97fb38f5dc3df95d5fa93c5f7f979e64e5c75d1ccb06ec5a8cfff0985cfc966cfa8ece647a61f19e1f2a4b6ff5d79ff8863fd19b81a056b15d6f36e06cfcc1b90f77f6b7cf3dbce7cfce7d357e687ffd99fe1d1980f155ff167bacec7d65ea1ea09dd4100b4cffe17d4bcdd9bf79df36e3d9d37dadf6a33ed29d7e4686cf85ee1b0495df6972188725cf517d8d75ba4eae95ef9f911cc4dfb38f37f954d0e383b931114f3fea8d08ccfc3ad5d2e3ac7fc927664ef1a7b07ec75a806dd2345f134f56447ae5d19a5f5c1fcfe98d47eae37b41218b624da97c3f6cdff504b5fe545d128349d9d8ab42e57009ec1630a9df4dc459b0bfcec789a8b88a44ca5bb83faada2d8663a8713fd1bd1704bea15deaf8efe5741ead93c65c34388e2009f09aa486effffbbf4f0a2532a618ff3bd79b8a3314cfe4eb170adfe427389724a6546096f1d5223654da3bffceb996fffddfcac6dafe0ddf49e3b80c836bd8916b2cbfc2a66cadf368b6a7a1bdc9d61fe1daf9663cd352c64a45deeda77d0972e00ebb73d7bfce06761eb8ce763e403522f7ea397a81999faa7a0e55014be7b82d74c476da677846b6972d8ddda61f4bac54eeefa0f2c3a9e7947ff3cc7c2be889acecfb0affa6965fd2c708e781de5d475974387c3fa82bd9b5abf6d0547b52269aade8fb6a8c640db4b49432cb929ece91a6225ce118e51ad333ee77407661f2ae396108241acb7ee85c23682fa0f8e9e91c76e3b33e8c41889fb7c1f71f36faf604f73cd49bc4d99072dd92140ff733a581972c836d729e58ca13c240267821d1bca8275c934bf4c67966fa4b4f9b62f528c6705e76138039e5688c6ab7639f696c60295bec9bae7562d467c56291ede3eb9ac723a8cfaeb71262ef4efad866d5bd18e0671b8768a7740b5b578df6e3af68bbd99238906b6fb609778aa48fe672347afb8af60608fa3a296bba8183f08dd979933c139438374f81253f1bf0fc8d9c6b60654dfae4f983c2a87bdaac5d28570028f077e15ec03da3f07c96f641655feb0afdf71e9aaf05e68b80eb7bf54c40e11e18def80adfa703e7bceef4bee2ce13c2c134c17c696ddff0fddbd7eda4bb3a1798f1cfc80e28df51d638a27aa6153b2e0acbdcdf8dbfdefbfe6ea2d9f8bf07f25360f6b6fe4e79e2d6be5b5caf4a59d117a341bb34f6c6808e01b5ce25cedbec026863cad1ceb94d3cb89feb7f2f9d534ce26d101c43bbf27d647febe47a3a4f5cfb1c946be9cdced1c8b9adcb5eda7a1eeafb1107514a735aedc6dbb0bbc1bd4ff8bfcb7ad28b8f78451e9e17063b859b0faae7db9525218f12faaeba0f02e13d2f501d18fab632175e70d38fc3992365134fa6b88bf09a72efe7b1d22bbb5680014ac75ec22ab7aee2fc2ac667a973f3ee6d0c7d71349e3ab76f8433201d63f578f3c8fc7cf58c39f38cb7ea19f0cc4e55ac7ba8381b6f1be0f7a8e83db967a65c5c96e0c5d544b894389781ec044ae771efa5f3c1a14760dbd7b18ae3ef49e72983fe52eccd0f935102a6059f0bbf87a01c91512ee75b63667c7264570da91cfcaf261bee1df7fb53fded0cd705cec70870d939bddc502b41cda5dd3e2eaab7dd39c542ecf3ebf177b8453ea41c753607f80db4cdc1cb7c786ee059ffe6770831e683622f16f64bfb377809a7a745eb3e5365b4f789b840cb7ad3b1c3c04c8fd127da7fd9d21a3eaf2d76ffa575cd8167846b473afa1692f12c5e003b6f5ff09c46255ffa036b5ee75486d9a2ab9772ea46caa447e40d953319e9d4597c68dedbf74ead97d5d3d9b34ed45eaadfcdcdc795d5170fef21221785cf6753eee41fd113940e8cb6dffe86464cf1a207bc0bf53a2547785baa8a01c5fdded374b43abf3b728b4c2fc6b73f15b6ceb8f08ff42323af7ec51d4686096c3e3e4f601f268e84e2db548c8bd7936df3dfc483c2ad8790bb444b1538f6426e737237025246ac61c6ca91fa4cf59e0bdf624bc7ebf8b9427d8f777483e81c5558eb94bcd888399bafc7dfd1b6c6ac0bc1e94a9eb107d62ba3ce59bd0728bda26f391b0b10eb495dfb2dddddc849837579214bafd09f11706e1cd796dc0dcc1ef57e5ee68fe30931276b4e16d736fa3b8eb1fe6af2af856bdca29fe8bdfcc8585767af3b3f046e7ef4b09f816d19ed89b51dc4d88c7d9efb9bdd23f53573b8ef8fe1ed817175003587e1f581392463111a7d9e163b47f9533dd3c8c9c3ea1d5676205f24cf965e8cecc3e2dd7fb34c28f8de1bce4d539ddebff9ec5c85fcb7e686fc6ee8db6702dffeda20379af4d776aa51eb85cece8799ab3f8f4755fd19a2fafd365d0be5eb8abb07d540639b10c7a39c6be1e76c033369791e5016128743d41a172b6dcff23db5cfccfb237c3dc005f3a6146b55f728a2de9addb8e8378d764e1abb7340c64ca17f30457d3da2f11ab25ff768729c68843c3b869f655c81d2f359e37af4f9182d7b2f89ed10f77b17a45747b30cc900cd56667d68b3afce352f698dcfb6d49e0adcade6390b5df577e0947d2536f18e02ab8d7e3f75b6262e3a876069bd42392e11fb80e5037b093f0bbc383c17a279e59e5fc4f98a78b0809b958c8b7805e789360693169f153ecfe67aee9ae2868c8dba7f4ba2fd1c44db5e37da015caf598e6fa8f0d8f5663e40fc4b52336792357434a7a93fd0cc4dd38ef5c6df3de9d9fa694f9e0cedb01fe1f52f0368e374ec73d87dbb84dd79160bfa6989f89eb2b4e425d4a5861dd84b490153301e1b52622ff6d56fc5772ad5758bbda14c8773304d95c59dfed10b9ae7e2be3bd7e6c5b5f87df7fa5df7f7f93cad8e7d5c75ec6cda4ff60c2e111947cd70afa6ade829e641b1bb46e2774eeabb3607d1a8d005fda4237a46dc5d6588e7ee3e165182f252ce4be5774dcc0bda67f196afc312e68d47ab97d9287f8907158e4695bb14e51af87806ce7379f209f19db3ef45e3fad177a09eee0eb35f2f61f755886182eabbca7a0394ef031f44ed0c15eb0e6e2defd794cb04f5e5f88ccc7803817b6cacd9619f43e2f910b9857ddbfc51ffae7dbbd30cd530f82ce70fda57cd9c9ba887b2e19989e079150fcdbdda3c507170f3eb730b5cf5ea77ee63b7d66b847195ad8e8ffbeeb9797f08b7899b77c1d8aa9c2c3b67847d2d61fbbad4b30dfb89d2b52b3ae651af276062c1650e68c1e3c054180d5998169ceda694d77db6f0ef657e98acf9ea7d842e381b3cded417b4f11106fa10ea39784fae2ca4deb73197053812d5583ecc7c21acf7dc81fd7a649cc2ee5cb23b2015635733dc2da2fb6c6567779c3daabbe2b9f6cecbc12bc54ff5e0334e3333cda6dad3cbac4ff2e035cef1e75a733ed75280b89c824e2285ae7263633b31ee2954a6436e8e776bb79792e3325c631fd8aae4ec9c6b2ce0e767b96f8b35c6b94c78af59f6c130be583f7d0e503fd8dc8ef60ea0bfadd8579faf956d4cfd9d88594efbe3ebda8d0fb1267f45ddd506db9aab4de02517a81b0377b589b5978dbf837662c98fa56fe2e27b1097bae6a441c7de96389f81254bae609f4f2d15c77bd41adf6bedf6c6e1ce00ef7d545b7e5d7a73a9c05c92113725dedb49b99f88fbf05eeee7e729b2f15345b786cf0867a5c6ac25aeebf5302763fa42ce35ae675a9ddf4d7f177d42bd3297a6e97ce9d83ddb70c6036ba80c4c391edb92f3f2819edd6b7bf6bf1e78f6cc92e65347029661223e846c690e2f1333cfc6db1a1718de5ff2660bfe769aa138aff08c9bf57a1ad6da3580d509acc08d511d681b5f5c118753032d469cf6422e259c5f05cbc11b9c8fdf33eb4909b77c7df5d41ae2ba4980f2e43da837e17f4f6e6a3cdda7d47565dc02da9dd86626b02bcbfbb55e1898708fc0b9f60fd127615bf6d36304ed39217f19da9bf77130bae32c405c2dc610d9c0dcb3e687c09dff3676ca953cdfd4fcdcc1de7e687eeb7807a86d1a29c79cbc29c18d2790d1a31cd754ec37e27dd8a7f837e0fe1d225c3591ec709f8e826728b85e44b8f71a659fb553525e0f163a98fa0ea358b3de578070b1eaf9c2bcd0f4b565cd07f74e7393d1df6414986aca35eea8d7a0bfc93e469703ab574532d8ee8213c92bd3742e1f94d9b5dcb5869950a7421b49b067f9dc1fd70b0c1a7a8111a768d90bbce83c419da185dd71d7f7c6e904ee894247f89d04f89d9386f90f2b1942d90c05ce22c252704663393037179de09dade72721b1c3aa3d5af1d95f997d28b04f504d657f9c85501fece759d43540b89bf7740d9cf511a19ffb6f700ea14f7cc3b1fbf438e3ce48b1afcbde4138cf2aa9e3e19c3b6fd5deabf00b822cdc513215edc79567b8813796020fe303086d31766f8f5a6c17939d8f5ca02353cadfa6f40529bf6a4e7b726ead7757427db482b3fb28de55dc6407dec3fab17615ffd7582427eb7fbfc13d7644f1fb7eefd377f36319930fccde29eac4deda330e853c3a84dbfc3aa9f0037a9778205f97159e855ed6fe97bf235ca0a539b6c3eedb57a829fb77db79f23bce05bf7bfcdf87514cdb9ef7f4d84584d3fb1d0ed01fe138e1fbd8b5117170d7f7209cc0d56f7dfb16ea7dfd77601eb7ba2a6d3f507d53329998f9ef26dfa9f4d1a0fff6619d7e731c13ae915a9a7a13e03bb33e725137b382b2987b4eb4734e613700c60e5ca3eedd9ec63aaed049b260bf4298c26b3e8677d7f76e8d6f8cca98e95b53ccf423c07ef695f51f030d5cb14ece33f83d157e748d29f615d41c566a5cfb98d8471812fa6050605454f73ae7f893fd1b929d20fac4b12e2403e437015f8b934420c8a20e80f20beb7b5606d11c21e5b8d2b53746d75b1ab8b1580e8beeeabcd6d49b55eabe2b902a7c07b3770b3cc35d7b73784f3ae90f73b85eb610f7b4d117bcdfdb88e5fc9cb01595a92a98838e7c893d03205bc9364034320e8f6284907625c64d0012e66e55ae88c378db3bf8de7c51628013b5036706ef0271163a3b7083b605b693f26bd1d7db0b915d43ff3ef14e60e9e905d7d649e1713fa898d8383037dbd8eda138b73e32be740dee91d5264076d39b145edfaab9d0353c0fd1f52d89fbb81e95b399cd4d36b1ca1a0ca4c3919d853012478e54ce65744d00cb057d6fded6a678dec29b4ce2847c611cea72ffae0e0837a58c7d7594cbbb33ef85f538be263887deb8070c0dea233eae56c62884e705d9c774aead3a7f5bcaef780ef0de47ffc6ef4a6e93611dbb9fd63840a2f183cadea9fdf461e0bd49ebd1acac5f6be8dd6dc4e64c02cd300357fd5c6b080ffb1013367729cf0a5b0c7f07c19114a568dd676b6f2e11b6984866559ce1b80e5e17eea70f335f09ed72750ca2ae732cf7596b6cd1138f8fdd63715fbcc7905f56efb1c216c06b40aed5c47a5266a6bfabfab4e03af493ca469c581765d6f777ba6b575c8988ab3c55af81ab967b6237c65c1592e9f6ccc09bcbe108efe30fa14ce4d6fd4e1f8f81b0bb710eef04a665cdba672cc28e81f724ca793ed5babb9f5c714f8b9a06f8bf25d1395b5cd533c5ab6e117d90ee13abc38bb944cfcc04fb188da7387f8735dda38930952a1f0ff9ea8cbee9bcb0faa6e2940caf150703e957e2de047708d786d045554de56de90e314619d40b459d82df51ceb1a666e17e7688aee0e5a39f9cd1370da19db63a44d714da6388db21baa6d907ae3be0f6348923dbd257c1c785bb581f5a843e9cee372f8129d277abf3fbe0e534b3b2e673d9ef3d2d7776d373ff9a59878bf04ca2b5e8750237ff12e092437d86742491b3f908dc5e47c8a3a16e8e84dfd46e57746c769dc9fe0d926fe39198c0b1ac6522e268a759d1d3dbc4c186eadeccf499fcaea56770bdb6c82edb8bceb09a4279e6bbf303ce59b7f73bc69f78ceca7d15232e11fb1cf0e70ec51b706e2d25e43bf2d540a3eeebbef5e09928f5d1bd3e9ff2fc14ba8c937b25b65f7996ad8e7db6533032d555867db1b9509e8aee4331c97e2ad40b505e0963aa7dcebebc10bae90ce54c392f719fe9052f7b991ae5cc9358ce8c7425dcd65c2f0d763fe64f81be71d52fae9373cac89b94914d00c5c1cb1ab186f5ac647b4bad013d17dd06db7b6864d1cef984ef2ee6e3aecd4d7fafd0de7e34def1e435f904f738a4d4b78a03dfa165d306ae19c9791e6aca27e6577f2a727b97bf173ba485ef65edf6b2b89f10b1e61ff12cdfe772d981f3da5b1d6675ace61876e638af034ef0dc2e2d2029e19ec02eba835f51d919239dff3e627e8b6fbc4e77f9978f38219433c19778ac7126f48c3887d9d27a45fd0e78fc827b07a78ca87b22bf27f350ad617d8fdb01318dcb346be3862bfd0c0e87c367f1291ce918b1d7818ac3260b77409a0c66953d5fefb55e88649bd48b97ee4bd39a2059ea5972d2743f96a946bcf4e6ca8775b245b8fc2b373f5af57dbc6ca7fc5a8acfb31ecf96e59be4c7133892128fa4a323e05341b8bf6ced101553803a78d5fadeb87ffc8d38d8057311ab52b2b4e4f134ed2dad94c008b186b54cb0de94a9ca710d403df1166af9ac7ae77e3e0e52ec43b7e6000a7eff96fd091af627f02c4959dae9d94a958541605a73f3d907a2316711c24c688e7f206c1a6e8d9ec89a0d6eaf84ae7315e53d8afa44d19afcab65bd1afafa37379ef3dfa9cf82605f95bf4db5e23a680fa892629abd8525f5d4f2efd559a8e6955f9ba5eb2894ae2f6a9b5bd6f0dcb08667760d8bde40818c13af6f08e0fa32cf3485eb0df539b13fefeae0fa997bd1790c8e6bef5564afb7ccc34599991c270b1d0f24e5ada480699aab06302a5dc7ad69b18e0db20fe7966b1cf4a6dfc532a785ff97e6efbbf0dc7882f3b2fc1ca29c42c5a73b4ccfb1a6d46b02e6bdd01d7f857d7e0ec9b940b9128263d7c4f827d5b5d006f477ca51b45fca733011e970e24cce3036fa8fdf519ea362ac522897fd28283623d4312dfae51898f9b98efdb3f3a22c3c2207deb44702c15976897a57cf92cfa2b1096b31493cefb63517ecdb58957e957247f4beb5377f8b764e72afb64bbcc7d40659af9edf6d5e1fb17ef46c706afd9e4577f57b7205c273ee768d18dabce5b7117c7497ba0e6c98df5f7f21d669ab3ddd8c5356d4d6d3cfc73ea1f4748cfbdfe4cc15d8e153ed49c0992bd6c5e15e16ae0fb4f1f83d26f02d684c1d8e4bbdac09e6ed91d9a15e17b17d6578aaecbbf93204f32ce0e2bc74eeafd11ef156cc370bbf3709b57c856bd391ada422be433ed7d7c87b2fdc9b981f5ebc373b4e8c6a1c6a5cbe64566300a11a6cc19c3c5eab2fd6b7f76af5eda0ea4fb8c357ba738e2caffe6ccbe2caddf739adbd73f2770eca1199a8d6200611876b2bb562e95575c51847a188bd1900f5e994f5112ec67c28ec363b4098593ff00bb9b3559f69fc8e37f21d67344f082fa23a0b789c0e39cea76a7c134ffe266736efa74eb5b4f1fc0bc658f9172d7325bea63b8e71ccabded7132da538535bb863085e018eff20e17968f21bf3b76b1d0728e6b8882b3a9a7d08af79321dcddabee96baa0d8fd19592b7d2fdf916c9db0b37df536dc6fc6d1c4f359ff9dbfc917539563ec1b0b4cb5bf652754dcedd5fe726e07c9d640ffb89944c0efbf9e754f3b30f4f7a3684312a0a074016e09012be2fdbab509e05a8ff91ee2fb8668ebfd9752279753e46b934b91e8fd026e6c684f69f7a0c893dc862f2e37a7172df1ab1f0be2bc6d1e3bf5be4eb0bfb50d07ac4aa84f82e910c84beeef0e7fef9df656bb0f112d30df0f806afc7b8554f57e33acccc5c9a3c8c03de28af8f1c16b943cbf0c091dac7ac3da11ca2709d347016e41ddad609f56c37acd329f0c6fb7b35b8c80e18e83886e4d6389ac459031ef4a56bec59bc0f3b4ebc24f725fc777dfea5fadef4173b3f455ce310f7abbf413f66c8e798f32ce2fadb689953f8ce075a3ea0bae85da8814bc3dcd0fe3b8ba5dc81fb6378777fb4f2c68e98338b39f3715c778bb1f81fc02be7395bcd9c8d29e7020cf36aae114762d39efb894f4ef04ed07211719cd6fe787ffcb6d8ea8853aafadb88593be2fd933ee23245b617513f5bea0854a78d31099c73d0df6cf5a1fe4bdfd2be3b730fc9fb7898206efc15fdb78673b8f2c6c017f10ab772d7b7e90bf51ab843ac2f983196fe6999fb6ec5b07e1cc39e9411c5f311760c77c6e0efe11e20d974b727189f69c9a37d60f13c32b6951097fe2778fd66ce9e899cb6a5d0f868db605b9ebb9cb69b1fc939f0dc13478e23df41580a4d3907b416219038bf39dae6385fc8cba72c92705db8d5e9a19e95760e5c562672fe67256be1f803b3ae71276d96c67b1c788f508e3ee47b621ba6712f899fd16fb0674aacde46cc086a8fe27347c4f34b794cea2ae63ec20fc7b93ce1b9f9460db1d816bd932f1d1aa0786f89c73cf3dd31b8e7d717f545842d9d56184ab34f1c3b0ff8f371aeb8ff88fd196e290cb72a7f6bf1b525155779aca9d7b8eabb247b35d5a7b29633e88e416049a7599dff07458d6bd147be3ad65c1886a8fef658cc05be5eb30f9c9f80ea6aa05ea3c7b1f6e67ad8c9b9f1459d0440db87e9253dc06b45e312e12d14cf6cb469a75cbcabf66d097c1612eb04107587b87eb3c0478cae8924a8d7c278707da02c24517d3daea744b8925c3d7155a75aebf6620e394c75baf698c6ff26d6ad05b39fced501e502656f89695dc49eb04de9557cb012e63b581d02a2ce27c2df523ee73bb89a646d641649c957a8d94ad4453da483951c1da87708b816a2eb06f1b65a021bc2f4e65fa1a64a81db82b960913d3979e2ef9c63839f7a10bfa75af7558195d2ccf5de3592688f7b61eabad815940dc96c704ac32e5d1f163018b9a68b7899bf62b7971636e0c6d0c015f7c4e21a547d8b6d9880e853b38b3c455d73267a6e5dd3a2e35eaf4d5cd554bf4971077c06e65b1a7bc86edbe0f5903187245cd3b21eba6337d6435372a6a833aaf0b747ba52fa0448aea0be30b2a70bd78123bb10f3a216e74e06d12e0696a66e03f77288b6952f9a049a51ae09351f933eaa45cc2229f88af67112ed56a8c711f5399ac3aaef3d2aeb9d9c1277b2e06a816787e8f9c6354f281ed85d6be018980920fbcfaa75c738a5423fa88d3f4854eb18eee2a66735f7d38becc9e2dc631e77d4733213d664a2ba75397947bd68ce3070e36be036eaa093ef2565ddea3eda3948d6b07de5f579407b9fa8316eeeb7c4bf2972acc55006efcbe74f4a1e9c8efdaf467d6752fdf6fcb798e9312630abe221ae758efb40893b49866bc087b5bce8ce25df1b4b06c205687ceeff2cadb168adc8fdc9e526a61a8d1dd6d6f75cdac96b0bf5e4e2fe6deb95c2a60b6f72b6e8bcbc4444ed4878ad6b560ad98eeb73c1e9cb338bb866f16c1fd70e95bdbfd7e23dc9d2d3a9fe510a0fef26278beeec5f881be62a9d1ade75f330a626b7ef6a3be11e2604b899084b4f209f910f04cef6ceb9c56ece7158ded993440f875df6e78c4350d4dcf737c9ac8ff70cb95f0839207d430e7c869d9ee4bbe01cc902be4d016e19b615497d5af0d3f6d5b2cffc1cef9c63d87d0326b695cf3ee66aa8df857909c91c12c2fb2f7470c11501e70febeba92690efa81e34a5ea8be8dad1729da07e776e777b8150bfce53cd158c7a6d8d64edf66e1577683f6dae67129f357e2f1139c97a6ca80e5f6ab229ecc2466db227b85ef8024752b4bff1fa21bd751f0b005d9737c97c717f1a2febb1eeed8abeade0166f97effcb8389fe272196f03d6269eb3fa80ee5f679e219c7bd4ef85e6f2be7e6c9e731cf714f9717f16732cbe05c77b6d6c474e46abe3acfe4efe37f34f73f5aa2057ff86e39c544ecd3e92b5e698c3fa4911d60662bb12d7b7517befc2f9a681998a9f3162ec692ec7671fc36d51e33a92457b1aca596bad097326959f5bfc2e4d099f09ee3ddc77827c8943c5e1cebf03f1fe88b868b99a46868387f24baf8d5c4b356e72e9f71698b0b58ff5047dac925383914328567d9e08ecc309c3e324c010276c181a3b1ddaae0db2ed1b387e0d76677b6dc0acae0d907939dc216a05a0ddf7ddfc0fd7979f9f290cf682efc393152c0f64e563e9ad32b6bf7d692bdb35f483fa24bf28aa1d23e508771fd6517329da3b286eb0746dae6f9df12744f528b89f6c286721eecf33093e01613f03d4996d367e6d9718f3b5fb847cd8ff482fbe271d2c386feaf8ffc9b5f7f74e166a700d7a59e8aa47644ff17346c5730c6f45f67f5571bd45c7f86238f74afd4def9b3ed9038164d81cfaa6752fbc084717f57f16bd514009aa6773b66d838f4b63ce717385f6773dc6963e25227681e3d09c2ed7c0792db1bd380847a69ae7fabcc55c9cf731dbbfc90f8572f554bf8789c39458321333974affadec8dfaf0e2c3dacdc164b422e37cd5fa8abeb5babfad86a05fcb049473fd1319ff9378b9e62853cd5126c31c4cccfc8dc3ca20fa5f4adb40101baefdab8194cca8f8e0fc2bde39d7c05d29ba3524ef1984dd00443b27b53b8e44c670a06f586103a0e75d5a386ed367c21efba39a89eafb3c43f9b04e6f225d508fabd1c6c922b9ea2d4635dd2b96dbb7cdbfa5fc1b541f57f6518b9fb503b75547e904de981993d09720d6c350a64355903fab7eb7da706f9bd6f103ee21615d2def339171d6c25e6df8466413157bef5e5c015fd7340ef15c31eb47ec592277c2cd0df65bb9399423cd4862cd195b7cae0dc4fd5e16c9c635766da1ad4ee1db779d33943dcb4fe93aed8f77f0df41ffede27b6369edaa475dc3dfaad7f1d32a5761da12c64615ae71736c4518a7a9f660c39e21f6fb03fba5ea0115add177ec1af13eb9971f54ab7cdc7a27c04623fa2ba1bdffde5d9dfd8e7a2cfb2188dcc767037e4d81e940e4b4be59afed754a4c51bbce9b153dabe1b6399737eb57f57f1477ce788b720b1f5e17af9b27bf28318ea79373afd438d6258f73827d336abdb9fb108e40d4857b7a2e855d5d0978bb17ed39bf03d2c0ed15787ecd7b50847fc1f431b7e2ad705818a8d76e45c4a6a8f820751e26548cea958851a922ddfc8fe4abc4f67a133ea450cee3bd29c0f08a46638e471ec961642f435b233f4ffa63d44badf7f5dfe5fec31c2a0867ebe8ef2ebfc8df0af925f2774879c4bdb3ed7a0bc77cd2a67e8cc2f72a6b4dca7d8fb1423f65fa8cf499bab56d0226e62541b2b8a8490deadee32a76cfc44d9ec3ed10f5c9ad52c5b152e3cd06698125ac93e7ed2cf8ae5b952313c6aff4e491faa8c667f6198e11b2aefd9a7e4f0675985ac64ace288d7207f96e352e4739e76cad04ca8f34f8c4df8e857e3b4678a7d6bfc2af6db10fa977f413a9fe56aad79df17fe59aabdc5576a8c6c425394345755218c763f629e6e327727b288f1a5071baa763b44d59bb8adbcfd1968a0312f8ce0df1bf917e5ce39c8f204e2f9027b4de827afd16786394af9c221eee121ba2d0ab02b957db8d791fd93e9a7a15f0a90bf1594a99c4c648cbb350d6bd14fb3de1f63b8e3fb0cfe3e631eea725fec5b9d4f95137ce626d7e986876f6de992751c7de9866af6fc9cec218aaa66b656728474c8c0d3db6e412f7ecf8ec7754b88fc6d3142c9ca1639ab6622e10af840a7d805f58d68d978edd1bae9c71f0c1ea156edd56c770fb9ff42b55e8576a4d188c21ca21c84954c893a0b46f7628a7816a84eed5072da8670589df45bed2b3c1612f238cb8bb3c03d59830f747614707a2fc14ca8f886a34efe06a582d79893a7e84e760ee7baf55ae9fc4b2af6b4ea8bd8a74378a0d5531318c473521f0d8886fbcc4e81ba1ff9f1e034fbe2fc3b40cdca9f3148f5f7b6aaa3311e4e2f4bf260d630db7428c5f9c9fd8a6bf26239d95d5e789995f71cd28b78ed8eeb9531f58e260dcc16f02042e247e6e9197e4f7626db3deedb1adbfbfe3bbb92cc2f2411cd78cfc8c77ea3176797cb9879e2f1c333cf76354cbe47be31e92df1e5f3b25c8c3a831c18dc1e04d9f1bf0a6af4bb7ce272fba3a997b2d7d00d2be9026058e01659fedec0aa788b0d18068be04184c1c5e14bb774bd983f0e6b03e03930adb4a2837be8391cc8df191d8bd516324f779b92b1ddf77b6f20e75dffef419767abbb51bcbd10ee125fec2318d9ed7f89b3a6ffbadf1991fd6a9ff47bebe702fdef3f5c7709dfbd8ffec7d457be31078e3736b1fbd2529f05d56eabc7c605e2a78ffc2e9e231acbdf91271f9770087d3cfd66beb856c9e7d4aca64b43a05e6519a98b6548c09fa3aa7b0d3d37d37dfd95a9eb03828858f83fa6f8bdac23a9e323895f9e743dc97c1e4b6cac6d68ae743d09e947890836577f52bb0186c60f76937fe9c29e819831ebec64cff9addb2733d6fe06c6aea31006f47dfedb5d7d36b76395f966129d55c22ce8b7a2e2de796e1eff1f297188dc3fe3d2bd7d8739260344e043d86f07bb761d13bac7f4a0a3a4f481fb1bd0efe4edff5e4d01d8368ab43dfbb176948efb279a8eff64bd4dc4d7d7f87e7d0a639af34e9a0a7f324dcf5bee23e81413b320e81f996c7ae9a463bf51cf7dfa07ea97852261897f6b7bebd6cf4ed094caefa6662ea1417f8f253ba2c3bf6bf96d6eb5f788fdabff0fcdabf02eb49990d14bc576f199ee7ee03ba5c9dedc63be63b19dfc8be36f7414fb95e64b5c0ccd2cfef788f9ddffbfe2eda16dc1ddb5e8fc1f23d4dfae381eff6ce6177b5a97c1b13fa7cf686d80f1ba857f491d10daf6f59a039e758039fbe7bd994bc867a5fff1d6ec95c161c03e215795a76f5f33be618e92da53198a63d75918ec1144099c5fde615bf791f1e929770ae790c0e8a3beb4d998e3274ef03fc72bfd0fa5cef73cbbde3f5bdf3eeb9321d5679d03470a19debaca29d720950acd8b94d866300c75772eb383ce652dde75ff8d95c2f4211a3676afdcfd80666fa0206afec759799c5c64a8d270e5b7c94b2f7d567a68cb5fe59bd0ff6492d59fa66cffa633d85667e6dec59afe6b58aeb625c35ecb38be77944f65dadee7e37d74fa5229e62aeef8ac37f0302fc37999bb3ca7f28b0f0bea6da90e04829f36708c3cd6dc489b5cbfc2fdb432aecdbfd08461b148f9a022585b284dc2bd5dfad97cba28c617455d9778dabeff6a4e57e45fffb36fc55edd15ab620fe67e2df7f4dade12f847159c55a94eb1ace8b56f9d567affb7a99e2ffaf7397dd5784ffee08ed9516eebdfa4cf43ecc9c9bbb1fc4802f084f841d078a0fa0fc78732e0ef3ec48a27134c68f0b3fc9725569ddef25d0d79dd5f2247daff326e93baab3226bb6b11d576386aa27ccbd837048e16f52c105b38436c074ab239eae70dbbbc5eef856f6a546db638e30dcf76f57685b4efafa06ea84b579dc2eb650bf566b7481fa756a527fcbe1dff4ed89973b7d787fc12dd17f25afa9e27f5395b3f391eef7bd3170b497c6f98a07dc7eafee2beb134afee1a67d41d4317c8f97af8b7491f899a3cd7d7cd45122faee7d63ac9bdfa378fe44fbf41b9c5b38c6d8f00c9538fb77e7a3beb6695ec41c54622c5ad133883eeaa63aa2b9ef1987e94e957cf7e94ae0d3f748bdc9f6b3143e61e9172f7c57c631914f194c77f0370373ff0c95dda4af9f75d24edaa23d0d6583ecef4b8cb4e43cb90db3c955a7723dd1e0f5b7be7d3dd17f1bc2bf1167a99e4774fff624a1b3d527aea9f3f4623d8164ae20e78ffc35d15a235c58617d5e250f07044759f735a7f2ab70bf9bbda7a9b73abff7095965c960ba4f4f71bf57cf3fa94fec3198ee89ef25d68858af1e5c2f32f7af9b14072c7cff6efcf94ae65dd277333deab8364c0d77ab4ddc01d2ba4fdbbe81db4b2bfb572bfaccb64279f42dac62f179bc87551c54b975d77d24b7fe2dac8692373d09b592732d07742f62d51bc6da9074cd436bad5175cfeddd95385b17d76e3276f1ce7942757c1c6f0d593327e06025ea4a99f7a408877c2087b3fee5b4b0d2deb42ff5161688c971573c7403f93cd59e32daa614f6f45d301702c70775989969c1e3eeb0bd7d8bd895ab9ebc8929e53ce633ff3c68cf0ab9d8463ae252fde07259754d6015e3fb2fab07adeaf9f05adfd50170af582e10e5836b8e8dfbf8421f01c6b20f6355908ba1b92c1a6d3ab2ee66e9096a3c092e8eb537067ed7004143cd15e7a794bdf3d4beb799786d4ad6fe55bc811fa39ccd1bd7f833c2bc138a13dfef7181eb24aa7fa831f91b626d1b74dec83ad97afe25224f8a31ffddae11eb4d7dbf3bf51675c03edc3929c1419486d73714eb085d55f23b9b2dc9e7d7d2838b65827a923c4b06823d85645cac39d7b5ab5c51cfad2db49f28ac4ddd7a3d9658d9b34f0ae7b9ca795658289a9d557d422db515d3618913bbca0a2cceb1050cd54ec1d2ded6fe5b738f4a4e72b21679ea3a1f8a383791ac7ea46eb9aaa36ff177aa332d09e655941f2aeafe05d77175ed65bd14fc6db325eda6725f11f8b0bff5ed0b6123157b8cc487e59eb7a9aeaff9269261e0e612eab9beea19511f48d7eaf611df4ffd2cadd691ba28672ce87368ae5d65ae13ca9c02bb4bbc4f598eb672bf9598e187591f10dca0655d55f14c7393231bd95405f7637c13f1fdea3154717c1fe1c315783293c1ebd1347baaab96fb18f50a258d676530cc04b2ad01b365934f87e9d97092b21e808afb8eb701186f83a6baa2bae6fed658d30a886b447b1c9ee1f9daed353c4ba8df4ed4f5829a1c6e3fdee5eeadf506bb8f395c41cade335e3efa89b43411afa6e8fbe81ee0d6da5fc24e14eed982c3eebe0f787b7745b51394ddf640bd76f58d0dfaf07b3eb2389e83f750d3592e623e984bad4fc9b24c6c8f2ad4beabe231a35556c5e88ab52ede6f065e00a2fd1c147806c2de42688f37e374809370bd28fbe8ce7792f5fd7d0ae704fa02fcef0d354bb8beb5d0f7425c4abac79ae776c2f71a9a738cb5e181b001d83d7f5e9af2b98ce9479fd0365f71dcbed1a7046deee792af10ea9bb0fb76c1720873e48537194c3a4fff137d16ef22798d509e8fc28b2c7992b2a9f6d25ad3f7a02c016d7284ee2f79e4ccd467b8612f35f4e0957b13db98420e5cd28e7ea076beda2fff393e5d6c370e0b5c9fcff69c7561af117acedf05455d0551aff6d7ccca24916d575e4be832144b9f8d703fa1b3b3b3a9ea70b1c90febe47071a0127f888bb9d17e12cebb6600d5ba213f1a28f01d7f5077c18de591f976dcaaee62d4de4755f508b0f85ce782eb4a144750c39d81b81febfbdafaa200f74c54afbbb30f1837d80113eb44e496fe2ca71616b540d8170cb01cf7a46783e52d2e748188834b50875ed4051fb634e72a8dc35ece67859b65613fe6bdbb2af5cb31dc6eb6981b16e11dfdd63fd133cb1a3616e7a8c2cb0ab7441d97999fa73b272bb8fc88fa2e59990e6376bf216ed007b07c4a0e37747da1ff46422e6a51ecf981dae6f5cefe0e0666b996644d13fcc6476a099a637a8fbd0734cc65c50367d6b5630fc400f0f3a97a334f3a727b12f785963d4e44fce33bfcac98f3fa3e2faba80f05730da3de58b9e486e5f8ea1ac66e007fefeced729ff3f9d4d174a7c8d4b96ad8636b6f5ed759dba21c21d57321debf9a5d6055547d04678283235f10b57d547c88ad01c53c6abbf15e17d55c173101a20e5af03db8d7583d86f7b9ffa89848ebfe411cd174bd62dc17f074e21acde3daedfd5eb9b9a0d778235c031c134ac6219827a15bc5e284fd2f53543740d81da62a4d77d85f8daec97962fabb3b39ec6360e6575437e9cda5693a5f5ac37c6ca5ce1bd4e54c3d165e7fa4df999c071e47d3b9c5fcd06e2f7db4bf035e8b64ece8de7ee7e39dc6b5f7157b2bc267691fd777e449d5cb70579ed4fcd2a6dbb37c57a672b9a21aba462eaf5a27959825cfe1f6f89be05e17eaae709b1ed708ff4bc8154b62c59c7ccff85c0fc1d9eea827aa3603db87c7b583723219e2aa206a10a34f921b444e626d7e107d6fb1cf32b79312b8636a3cd540b83609ae5a206544bfd3f583c1cf14caaca2afc4c0f529adf18f9a2755b82790fcc2be9b7316f4078beac1e9fd2de8450c9ab8df515e96e2cc3f537d8998c786ec5f51e85e965cf40d49a0897aa904e3bfcf45fc2ce021e6fa7a506db5f694d5721dd9a601e241c15cb519f3b71cca7aec97cf7ba189f8b333e2dfff1f757fb6a628f2bd0da017d4070d0e9572980ea082a632c3994066a28052850378f5fb8901088840cdeadfffdb7b1ff4d3958a4044ac58b1c6f72d6a9cc89ab39bf83bedb0111ef62191b606d907d1b6ad492c317a5f97d812cf6bea2b7be0e886dedcecd4f7900f9e11c3c1676d830f7a353d5f1ed8bc17a257ac68c6d4486ca2bce2e9edc02624cf90d4ba8f0319f1c2c73056395f9d766696db2476dc7cf98a6cfec4ffa2e7e995baf79e899efb137b8ee20de5296e7d6a0f5bc67fb1e1707e55a47ce01730925bb8cb79d31f9cbe50fbc8bab7ad0a1f7daaafffeef5971cc2cecbef5b6b1821bcc60edc4b1243f240cfa1dfc60baceb150b520fc29e6af01ced3bddf40658bf44e947d9c721459093c1a77aff494cdf7ce8f6684e1836e6b7c929d280a10f5fe2c6be0492503d4f7e82d15371e9ef63a1d12737a7e6fee649e2c135dcc2b5cc05c6d2a6e336bd461f69fc14a3b1b6192eedb3a7ec25f3516f15c2719b7ca7c43a611d5cdb36305ec755388fb8062fe7daf7dcb172a34086ac65e66a63ce2bc6a1df5fa76e6ff00df1d6f0678b39c2045cec73861d639c56b0f7720163ae18e3f1047b5499f2b1e477561ee9567cd9597ce81178468cb9cdbc7dc3262b88584dbab1b76d9f20ede861ba6eaca8ee61827ed108f93314ceed77ba392cd2cfdee8c71849f05c86323d13bc6288f09d677cea25f1d9b1723446609bcc57a5dd026d9d72ce1c2d7aab7dae55d577e74b39d0d5957ce3fd7ff28b3c447524f0acbccb5af4cbdb43db638cee57f54317f89a2b59cbe11f3bf66f132ff4715f590bab13c7649ed934107b97e8d1a3f05bc179f0803332efc20873ecf03176157dce5478611e435ffe60ef963c7a254e10e46dc0fbb8c2e52671b8977bb7bddf1b98e3c49e87ef682406dcd70fb0e2e15c97fa599122b8271bef64f3afe93cb3c4771cfe5febbd823c6b967bb7b449a13ce1f825434e833810ab777c6a0792fc03e56fe4394b7663d69cd43e0992a96929af5d386c4d0cdf2d136f18d755c375f78e6eec49c2cd3550ed889788993c81bee385e13b7ec8d3f754914665bd5a58da25fe9d5e07bf60af43a0f3f77a0fe6d9c636d8ef29ad045c5fd2f59eb5deb24608dbda1ab1eff5105bb9d49f8eb0d0676f4ed1c05a2eca380a035b3955a45b17b632789f64a3411f2859ee9d53d5db6c09a32f6906717302494cbde3eae414510aafb9f33ca92bbd3e4b06e119dc85b5da8c934ff24bb546ff23bbec6b7e3b79073e5524c83741ee6b12fb3fde4cb99cc0ade282dee81bdbadf785145f16f51945e89f71066cda05c49a658d5d8ca8bcf97fc700c67101863f5ff2bb20fff124ff67fcdf0edc15eeb9dfd2f0b3cbfac907e70fe4429522c2ce1d95e77fdb4620ea3856a4ae4778bdb33cf5fbdb6c57f38774f90627afe8fc6de9bbd0b66d1176fc06e28d5067ee4ff2a64cfdfdac8e795e63845934678ff0c187ac78228a9dcf29ff545044eafa9ff8c2cedff8c29654e522ed2eec0dbb877af9e97c63ccb965ed73b74f995158af35a7e3979308bc97a8f70dc1fd036c664fe7c1dcdaac3169e8fba7f9fd4032cf5f5acebcc7b67ceed3f80c1e7b9fcb4c2acef32a364a182b921974becbb37c71af5aa345e71af5617c87aa67077340ad1bbe76c5b8aecdc304d7a28adfc1f321fdd2cf0baa9e451232269e52d90768af45cf1e739fda774af11d51f55d40ae781c8bface65464eb07c2f603fcad319f5be0807a531de94acd3d9d969ace85ccd079398e05c8efd3dac07e4beb49c1e632ffef5424f0fbc37f3f7e533e8dc5b33de80d6f0c29e8f9093f5ac908fdb11e1db80f125cbfdf7c9d539f05ddac0ef8598e4753d6d638e24e3cf4a8bea9e4b53bdca73e67363598b462b580b5a73f2d2d734fad94ede1efc267a0ba67c2cb7c703ece849c875df2b7a63ae77895534a3f4e5c193ccd0a76aee9fc87d817f87f051a875ab64b773eddf1b3d3a70be6d2ed3a83abcb64dd2ac29c4ef82f0999b1cf9780d3361a5d75c3aa4bc616e96f6bdeeaebd3d81f1a27c248c7d857e621a5e415d0bf341b82f93f3812e2ac258b92f52b8eed373acdcb9a2630de38e35443d6a47b500639625e3bada4764ad7ae33d5dc821cc9ab79fe0d733cfdc67f8f58b1abffeccaa395268cc1c58afb504efcfea3bd3fefaac006338ffcd18946a0c13baa7f34bcfa2ae9c18cb3ffcd26ed4f57e629ebdbecbc4f6605e6f9bb17f8c683b6742f371be6ee7d0cf79e50c5dd676ceee71cdd5fab4b3f208db07a193b0f9092bbb85c23e307b35f6c1ff333cea3828f1a8b55c7575fecdef99c5ce123333310bbf175fbdd85caad3f40df8926e121f037b09c7f6b19fddbe6ceecd62f6f1e1fb3ec75286d77d69f9ee2fcfcc03c49d2f31a3ac65834b83755fb4e621f069ca5a94bdf752be8db1be7d2ea3c72f46ee8cbe968ed5357c590a5fb09413120f9835d632dfc81aebf3f3e7f13c92b657e75c3eb387250aef738ffd18c81dddfa4c68e34c97f7875c2a0cdb9a9eff1fdbd61d32f2c4ff494c41114558ffed2771e889b0be3cf57a435333b6cfb05c066b6b96bbbac1bbd68a5be9abde87fe0df1146a8c643586b95b13e8bb71ec1fd514f8bf5662648665947ebaccc0df7ad312a8737baebdbcbb8650b892d98901f7d92bcf76e317233f5cd7fab6ecb36082f220e0599e153fc2bc92cb5c5f89cd09edc7e93b90a9ea3b26e743892f3519721e27167e220e61be54177e07137c4f6990b95af46b77dc5efc9e50c01c3459cb395f50b937458a802d7785f86f3886f3d18b46defd9cca4596fa75fe2df3f7c8c6f0e2736a438eb614ac79ea2541e6daead58b602ca1137fa18c8d907cbd550d8096577180401a74f126ee6b3d65e4ed73c32174cc8aea0f56d3b24e93e6545063cfa0beff11472e1d675a12670ba14bf41989734f8ea7207be4e9771ad4fdf3528cf12dabda986867e3da50a09ff433876a69897d6c8737c71a46a624a88165f26c3cb5aa57e282b90ecebe24c09a7a79ce1c0b8c6f07d200f2d1823d51f539b0d60473af7a7b27f1f704be9a34b838305f1232d759d687603c21ecf562bec722dd141547f6c097c48b3b61dfabad37f1ef3384c989b8fd65fd54f1f47fcec721c1dbdf1a0f731d7305f77060ff038f39a6f8ef1fde5b63cb48e3de53949362f0fa3f9a83823d07b3c61c00d96de1865d5c2be67692592c24e277da38f50b84bd86d77e0ffc0fb0a674ffa11906c903fb420bc13a43ee07cfc6b87f5d3261e7a31fc81dd0afd49e20fdf50758942cdca07a5f4a46f3ef82cbebbe2be2f3a475dd1df569d0f384d78ee6a7cfbc7d5e34e31c9180e3e85386cd42e1967ef4a28ebab391b0abebce3207e722036970f28abced97ce6a5d13bd39b8bf9ed43f9bf9225926653dc90ce6f6e87112f8a650feba7b4e20f69fbdfd97b9b635167a43c659eb8df17b2addf9b406b5bad61494b97a69f95bb5ce7d665312b22f4fa27fbb74bc92d4ffeed0b7ecb36e1ffd62eb9046ac1cc803714e74e806625d4aee70c65e7ecdaeec8741d73a3cb329036988e63c81fdc30f70a4b70ddbbbac0b2ff3eff8f94d9df240d682c9b8d56791567689dbec6bff067ba8e1f7f69757af4fe1a1c0fc4f9bab2990ccf333ff186105af435f120f3b5badead21016e613fc3c7b7b5167a6b435cd95290a1f3aa78a36b71e1b3371aa99aa5bdb26b07672ead8e3d0e9c5c03f8a1b587dfad367b5f1636eb6dee4def10e835c992c614fc942aac7b39078deef6fbf9dc4f87671ff990ff78c78594c677bc2df837d0fdb9e7873ac751a40dc425e50a4e165639f9730ee715cc74e5fbdebfdf75fd08e4fdcd4ed9b05da37a710e8da1ff9f35a3e530d776c1ab96173c38d3a33bfb69cb8dd1aeba529461dcfe0858f9ed9d613553f0df9fe2ff5d3106bffa5e5717b1f799278efc2976bef0f19f200a05880a2cf52d6fd98710698ef7d7f90efa5759d6af1b7601e9d647d74fba86ad6514d18c16b8b6aec9b7b274575368f63398d9e2088a941e5cb3a631b403fb4eac9e28e7ab2cb86a83dfde80dbe5bb8f23b571738f9ce973dbcb036d8db47bfbc7d5b8704f172ef9c824926ac3422873f87b1267a1d708c90ced1316b72b09fb3f8992dd05f74d8029140f87c6f3b8d351617d778c0dc25aa9fb70cc4cf624569bb976001b1681dc80bf4685dca71cbd22085f5ec3697b91675f6c0d8b8395fc63f97d5735b16db1c872896ceab854b7086f989700d484e59228eb3e995f5c029f7653dad8d68e4a858b50a55fd408d09f5bf5d4fcb39d16b4a700c94f24cceb316827d59af65e124a806717bf28aba466321357b21cd9ef16f79dd0e8d05c6fae549947e2426a71cd727af6f66ee6c180789591889193abd70e1dacb589e90b52e834a776da6dc6d8378447ea13380d2b7606cb14fd534c2184e1317aecac34079e014021bb98ceb2f24340f606c8134fa76acc1b7c1abda620ececb73ec4ec69a624379f9762c9773edc5f7cede7e83b55848cbd8b506dfb06e64bebd34b16180edc7885f227fcb06f619d8ebec3d40fe6e3dee8a31bf787e77e0715775eeedb3694feedbadadae5cdb451c3d4d5d8ef078602febf7fd79edce6b78d78a14d1711658ebdb8c216ff65c216b652d339a1f19f532123d92e394e87b417e2fa95bef554f171def66f41f791d35788ece5f89faaeb0bd4facc4f8f7c9dc5e146996edb4e8576b9cd4bdcc9e912a132edf609dbbc375f08e46ebe52f966c1d45deb5971476ee5fcb92dea173d9f140da86807e7ed5ffd5b6f5a01e243f6bd9136ddf200b2651852b86736b27221e57783d01ee3b45320538e6c35fd8bf342e7585a9d8610ba53e679efdb93a6c70e2953c4affc3f17b7b7afc04cf211aff7c91be8ad70dbe372621856fadf5207ed9137eae123fd049dafb9cb2b5b4b811f7a0cfce11a517146946eb8f47fb79be1256d3f37d23cd6a0efafeea8f5cf5a318028a776c4f90ebed47eb62506bb14375abfc037d900796597c6a61aacc8dcc2ba25f01c31edbf4468d5c7af92c683f425cbb149c7bf79d24f09ea47e40fc9f78193bd6faa4013f1ed61311d8e7e2fb899acb79c0c95a7b9d28aea58d93a4b1d3df3ee539b0122325ecf88cb1870e14b6bb96273406fc231b293f6df4f7b7dd344f88debd13d1bb176d2c07d7f0d4fc322eaaa7e760cec85a733e27dca0df407e5684513b56a248375857ec3262089b7e6bcf4df2489156e947b26dfb15b6ab0b077c2e450d3b5b8b7eb936f0e3c26b60e5918ef25a9a6b8987dd2c8c7d303ecc1b47c53a61ed2a8be7236cc62926718b1feadcd00dad7aaa860ddff4fd302e55c96f8a300e4eab4915ab2af9b2163b2b38b9f6129d75f3d5e9818d94293a89814fbf03951342b617e20fa66d45203b1a1cd7b3de02347f27222601e7e391ffc63c439f9f27aff2a3507619ac339e7c03df29fc3f3b334b1f6d5ec7a9907f04ecebff7b5b8fa8ab2e5c8bbf06898975de02d64cc35c4b51c970b89a923ed7ac8ccdddebbedc976204f78e1801bf819c5e44cfd9fc473a84a775c8009c9bac33019c15d772ff11be721668792a6b51fad99b09817ede837db5ebf3ad3e61c8bb188233f9894d5befe1bab7a9cb07c56b6000fb32f3fa4c7fac6b9fbfe09f6d9b35af6d0ca152b798b01eef12b4de0fdef33e23f00cdfb15d5ce13bfc8b7a73b62fe9256f8feec7daf32e03e71663dc3ec28d6aef61d20efc7735adf290f5de2ee50b3daf1da34032f86a0c62be1556134ab7dc1e9fa97f87658072a0dd71879ac710e3e0c1fe8bc53f108b7abe15fc7d2c903cdbf25d649f73388e6c486201c6d38ab1336269a43ff58d798a6b5b9ce01b2dfde14b59b3c03adf5c2d6ae33388a8def84cd47e2c32423f4f712d49e947a6a40f8a7a839a7ee6ae0be7e2cea7849f89df0ff211204e4a69903edcfb958d54736857fd38442c5a06e74199df2bcf47123f0ef2f255be0de414c19f5f105f1f43b6b466dfaa7764c6fe4addf4347e8ecffd7f9bfba3b1b6bf1ec5625af55e949cbdda17e39a4c9df84a2d6a5cce01c1e5730dd0fbb17427c1573784f965c8455770f9c7610c73254a84f2767ecf3c04f3f50673ae76cea59f0cd1effea2ae4bd1c783d5dd8cdd83c339f7efc29daa87b5be85755d5e3278989b7ac6e9f54a6d986b0dc073aabd4863c873591be709f61bf58417f3bc65cd0cbccf7fe0fba59ef78a6c5cbd23ae539644badeac57ffbd900627d8abaaf3f1d73cbf28912aaa9168eaa2faa547c24c3585e9d61c8fb75c6c585a4e733ed83c077b25f7c32fbb8fded3e64742308932b995177e950f00f782df83f992c7389997bad7eeac9be292f31313635176e6e7eeaebd4c1d2bb7803d05c66a1af1ac932f731e36f46cf775f16bd749adbdf4bfce2312dcc31df6d4d6b197c09e68d8aeea7179f54c17ee03a72766462f4f1d1a8705f52f23fbcaf08f26b0e72b1b6173786f9c41dea1ce4d977ce9c1a4f25bdefc7df647b6d079b0adf1d81f9fc59c5b783dde429c79ebd013d7d9ce82750f9e1f73193a471b3cff5df340f342376b2ee1bbfb282f2a28ed5a0674e675f30276e7daff6dc9358e193530e9d38fe396f5bc8b638f6fde3c2af71969aba58cb132731ad8be2c16afd8971376df829288375fca8725863e791fb9ee93a179eeda5cd426076d3cccff0afc8d13895f56c6123ac67501b2ea953615c204a1d70ac5425afbae53475e4a3d5c5d0bce9e7dbb07c52c10bf4fae7b527ce8385b1bd850adfe1ecc21b58e77d6ed04e36cc8b7b8021986fdff30ce8d6b762523853de5d2adea4fdad138489977e76e1fbdd1c8d5cf5714af5a7a1ecfd53173627f3a9053a259db05fcbc8d34a8f1189ab66161f584a0c614c943b93893f675c19041148b64e65c9ff7833364a851a3c0ca4130cea217fbc05fe44eedbff4dccbff8fc6c3df5e8f858b8c58f8f2d5f1a78a34ca9c462f7eb86de1e016b696f7619c28798c8f5bda6dd45c986d7c5bc2376c73658a5c16d0fdd099d7ee9b8eb9374a47a3f86b53dfcc5759a0e519c4ba63ea9cb22fe03176a5b71f0eb7d85687fef191d6377f732636ce368c97d4b9771ec7445ed3b3c765ec59428f5d5fb1f89bbdce3c2fbaf73f7ebed6e677c92f4d9e2a76dcf5e19966d36bd211bbf92b1b00dfab31cfb29eb6cf3d84133f1986fe7c9c7d96b598e49e2a58e7dfc3b5fdeb789a7fe09b3da6333e4463305398d72fe3029a40f088b6ea06c1fd348465836dc553308950ff0dea4549c1783e9b7ba9f4cfaab826e33c3eedb4fcd1fbe1efd6b97fdc9efc7d04de838edfffc5bef38bf0aa202ed0f65908f16e5c18d73053b717eebd3edd57f43467de63e5da80fe162eb2d6ddb3a894b9f3b97a21e3cd068c711031c2c6675b9ad72519c6c087f0fbea876bc5c79db4bc06f602f88b30f7fd24d7c7013d54f615d17d95af3dcbdfe75f4a3cde185c6c68a62bda5cfca146f18766aa2ed0c7afe2bfbcf0be97e5de6d9f5bb9ade5576f1f95f1fc94917bb93278a7431cdbe3bc2aa71fc48108f3272788b1dafcfbcac05f60ca10ac97b79ee3cc07d22059ee9797c0e2f7aebdd86f741eea08f05dfbecff8b7314d5144a25c74058f6c61f2a9b51cf42a719af4e9647e39fd5b4ca8d241b6b85302d80fc01fdbaa77b0550edcef73f1bdb489de33276aceccd85f5da79ecd82e8c4b6e8a90df58df101b43d6d3a4ea9110d5ab619b31d06d4e9113584e430f635911be31cc3d36f2e2159e14a10be4e9ac59db68f2c20fb9cb2346defa86e5c576b536ae3f9751eba5e5c727f27553a41fece72206b6a6c0f62b5fe919cf2257cb639b7576be50cbef213be800e723319d47beba92883db70839b4067ceac5df30e78aff0e3fc56f98e35660cf98cbc4652b75bf3cdffe71b5e8ba6a3edffdd9f3a3d6f323f4fcf9e262f0aa16cc97318efd3fee739daf2f5f5a5efc6d8fecea1e0d578771b2ee6d79f7b0e8ad2ce386eed78c6b3d8c9d1ecfadf54ebb300244b0d655dc594f1b7c7cc01f227b5c084c8c99d737510e15ac4f0fc8f832b62ade52a2af04f27bac81cc17aef97dc27946a257254abf803d3e5f5c3e8d86cdf070ae3e7bcdd8eb47d2117be560bf73d5c7dbb84e329a58fff32d2b067f22654a96a8fa1e68ef5473a085746f4d899fba6fe6e3f5fefbff668cfdeda59d8306ebdac841376480e6286ac65056d036c0effc28aef9449e615cb4ac15023673b2b386b1315f5e7d09da7fc0f6827eb7220d0559322fb296df197c1bc4dfe3587e8003f7d1a7624c643d248c71bb1a1de36ef5c30b75de01dbe25a087cd9967d4ffd0ee20ffa7d60bfae910f497365517dfe0fb950709d4b8561f3833ad51771f26b1c86a950e25e3b605fb7e5fce3b825fb8b975eb2ce020be61ba96bc93967f1aafe00abed6ff05d2097eb9716ee20c79ac5c8fff459f5e42fbf13ff57bd6ed65050e6e0b9cbd893446e67bbb1d18b8f6d79a7f8c32403f27d95f93ed84f4ae60be97c158c1de0386d89315fa810ab3e26fcddca2f04e3295c2b0f0329eeb926c48d3e41ee76e0cba1d865d73543780df0c5fa411a48eb13ca4dad43604bada629317ee29d4d84e15fd6f3383df1ee6aeff9c7b11a37785e8dbf908819b0ff76905be57c70ec75bc982e7ed5badbbc10e793e55839ef6a61aa4c78e2fad593ebbfcffe3e4febebb72f5c7f3b13efcf3f7b7fc58a32c55ea41f787ed68727f333e153a01fabebefcfe75369f6e63cab09ddefac61cfb1f2d49d8caf0ef03d8edbef00bdef5ed66e372cefedb13cc94ddf6ea8477afbcf6a3aca3f1263b49a8ece2b3d8d3787f77f57fae956f65b7add381077d70af460cee0734f10866eab0e105c0fed71cd1a46aefdddeed1acbed77bd037a178e7212f22d40331cc573630f75ea9d7a379f60b469df8ddd6d9630ce8f1017dacc37cc2bce2d43c42bf6216833375406246d4df0907e0130753be20f944b19d9082b369611917d71679c7caefaba8c26a6d72cb4b8354b6b937af2b5e5a63c73fabd538c0fbceb98cba17e6afa3ed75827388bc479b3375be8edde2fdb09872df8b7dcdb5e9f6a05db0f41235fe8439413ab748e0bb74e299307a63da7236821c98cdcf90ce665fff0febfaaac71daf7dc519725fce64645b5cfd649b6eeeefbf1a7bbfeef1a6e45ba931b3c16f3334663087ccf9007efec515116e7bb7ffd4c0f06b8f2359eec5066f68c99f5e7137b7d706f6fdab1def53fffe156ed05abe97ccfbbd78c60fa00fcc96f9c738b7527e29f59a43d79d34fa9c754b2ce30549933bc7788613dbe40cd279ee4b3f1f583689d11f67bbd69ea6eda6cad604efb209ca5a7088eb05fc34240fc0c6fc68f1ba543d84644eb3695f76f5dd168dbe5b5c37ef582ae68b6af16b413eb41cf2456e6c821b67bebd0492d018dfd65e168e1d411e3187aad9815865574fca431fe88d0eeea132265bf72ee1582be416aa7f8f63ca4b94df56abfb917c481dbf113f21ee447c71f9b28e03fdae3dc77f65d723592fed94c6fc3639530d1a6b1dd6efc11c8ca048ebf61e6271f77325773f90134f1a9c16640d1ae4655ffd5aec2326dfc4b33e6da2beb4c94147bf1bc4f6dff684cc93c49bdfc375328639d8d9606d874713e71d583ca98d77d3dfdf5c3d6f716e97f911aef8e81975bf9034101afb51639da306c6507a7add9fd51ef22d90763bc4cb0f26b81717ca247772b52cc77d20d4deefda47741c0dac339bf78ec50fc338b720b6585b57cb9378f4351163e65906edd901d907abcb28f602cf37cc6746d462001f9d7aee9f957ebe6ea67c4c9f27a896a2ec497e3ee7238847b0dcbb65cd2fe2e828c2eafd512c9292b7ba469aaa3b6473d2029d4ff29735f736f319a12ba9ba2fe569d0c5b5d5d09dc3c8875c2fb8a7a3c2e20763ce33c71edf5d0bd509ff5fea732013ad3a7b620cc609621c419c5dcc3f87f53a4b96dbfab3b4edd99c5971224f44ee990dc5e64f3528db5a817d58cdcf9ab8760d9b1af6b1fa7beeaca05a9902d654c6d9cd067a9cb249b3bcc43fa0cf29c84751af99bd96fc44386bb89eab5ac397f8b8704d12cc79346b92ea1e8be69ab7785d2e1d6b9e423cc1d619deb15e27e05b2b12ac8fe1c87da66b618c38f1e073218e143d1f158fe38b9ca25d673f61cf74d94176f37c24f0549adc16cff4caf43d55c07ff31f9dbdc0c6e1d83251d605ac6f9e1433f9391bf87e2fcab37c5f64ff6f757f3cfa92066745affa19a01c94769bb78f800c65de0461c4ca5a1e42fe56fe1ccac539a87c62e2cc20f5987f67efb58ffe6ac49a13dcfb7bb57ab33f32cf3d3fa3e72b3227873866f8736897dc4e8d7323ca500e7f7c91a551c6b8f7ccb1d510c64c3bcef14738a188a73fbfb4e40a62fc290c5933daf101841d4fae7f7d4e95fc966c1ee97f5b1805057bbdc179be94305f0db2692663cc6f3deeef6cf5b490d4d44ddc18d6ba4cc68786af522c50fcabee5f25ced1311f40cc8401eca763ce5f2f8c9ddeb9717e6e7b428178e086713b5edbf0fb9fc801eee3c3783cdb2aefdcdccfdf378c7514b66c3aacf35a3c7efbefbd9388d1628ef6f842826bf7edf7d5d03f6ebfd1d9befd76ecedf7627fbe10b53d5cc97940d8a9b9dcf9de91e0c7e7a2aeade03076c177b8d35aefd9331a1cc3afbeb36b0da305d6b50b49e41693c59f5d871df583d83bd3cf7d167b777ac312d33c61f488bcb9c97fe9ed70ffa6b723817d3fc9e0e255b148baae68910c79cf5ac6fe7e216c6c305e58e3d28e07fcb846e455ee19580b81701993e501622e416e8a16666885a75371b369c0ee35becbb12d24a09fc737c8f535793f01590826d95e99bcefe59ef167b17f4f817fd8aabd0e9de3ea14207b04d75f8b7bbf08e3469dcd7420aca642bc3970b74d6ff00fd04dabe929ff48d0bfd7f753ef2331fed9e8efff7a8781e01f46f78fc3e217fe37f771305fa983d29fd7b2aefea2be6874f99cf0a972fccefc3b7f558ed179a70d871f04c6d572efc0789b5f34f79da77defb73df1e22502b7904aae5603d841f1422af5fb18d883dfc13cb82ea43802cf86b56f13bc16f315d02329399fa44ccad22cf38b5828635a3b3a562f7cf442b6fc3f8c3971d9eeb51e0d41919edf9fc52b41dd1f621de757bf674614e783969f689c3c9353259173681cc9ae778267f92bf7fe09df163d8e57e29061158774996b46e19c021f91c41048db7d7338c7232812f5db57f5f7c98b79d6ef5fd19751d50b371f5fba789e119e22c22747b6d1bab48d6a3c89fe98a3f9b9d430287103fe929fcb9f37b9b95c243bf1977ebeb1cfac06bfe153bf06dcff4bcba97bbdc81b71236bb859f7a1dee9117e2af14e565f0d58f78398cd927077adeeded3c67deee380e04927de7bed91d7356c1658a345f5ce41be653ad7d7590fc63538895acf20b19efd9e98b846653b9335190d5f29a8632f0cff61fb67a5417b9fb1969d3aa79c8f08ea185b658dfbee586edc31de46cd1cc40b25727fae16fdbb9aa689b71f963960bcdfb9cc67ea1fb45f9e632b8b9cc3bc07f0c55b31e2b65df6621fc20ff72943cf0d51df3c9a23b21699fb790f92c8e8415a071567a4b8a2ebc0dbfd6e68cd0b82d38ba59b4fbb32464fcb01e7f16bce4fe28bdbad4f55e5a85e21a7ab89af2d503c26203131e7ea5deede6370de20d76e777f5ed36f03d7ce5f94878885799bc78d7c07e4ddcd7284c9b218b1f770dd43d5d45ba8378adc0718abebb2b1178d1a266a0c9392df14acc18be339bec2f35ff5ddb6317da09c061087f55cc845963e920d7cefccdf33d7eed5f33a82e7357bed9f9dd737c8358b6bc3608fb7a5ea81b5bca35a8780b25dfed738968f9e2dcf1bb8958f7a0e1a3da1cff73ad8cfcff88017759cbceeb159edec35cc7139961ae1bc2de490f58b10c81896e180b27dc0bc953cb0ab69d3aef1a7b317f8b5629c977f2ff3d17ae3f7486ffdcf38b8fce97ba50b83c9f0b6aacfcadbaa8ea171caf13d6fe0d53d3c0bea7bd33da1f558a8ded05e5df3bf7e056f9d96bd76bd4fcea8f7296c2d6ffb84750d1031efa8ef8f391f85224588632119089f7d667df903bcf2a0bd87cf3b6be874fa0fb8f7cab3e22ab6e84fdf2f9f657dd2f13d578e1033e548e195f7972918a363439d8573728cb3fd49ef8bdb1b3cdef3f69a5312a1d801599044388632d750cd1ff9bef32d18038cd9f9fd2dfb3d4b9beef87e23e406d61badc87e3309c613926532f867a38f475f9231c27f83ffff8be31767c7fe3ec11cab7ebabdd2ef63142ff55a81f3e7ea2731f82e4467258ee5d76b55cb90961728974fc900e77141ecf5f83898b7b0605bf6718d7f94a75e6296f56a27abcf789ec931e56267afebdebb67f60298ffe377cda106e52d648da18c5552715c183fd342ae8db106e48a91ff6372c000992fed0319d8e7d37798bfaadea9f65762a4afb8ccedc08961dbb9d0b62ff3af70afefc8f728f96be62657f2f4133662b7ac4e72a43fb51ce76bdbbffd4e37382740f60ec0b59fbea71fc990f7a49c35df604d616d3ceb1c7a16437bc41b0fcfb149b59ec41e8e475f84bf52cbf8acc18f5c9e1b729bf715bc7f2f2d6d28c941b5f9d0472b314f8c7ba3bf7bb0b1499d778ee57aae81de3bd7ef361cc01e9763655b82cf8672cff84dbce7e553e309b98e60bfc30bf3757cd47b49e4d8ab35016ba126e201da1ef305d677a317ae9be11ebde89f8d3e4b96c908fc9fc22886b8f2fa4d584d9cc4bb83ff53d81f2516766beeb7277f0fcffab79d7ebb2df7cea9bee6fd2683f3f13003b67758cffdacec1bbe579fcd9757849d101650bec9dcd41dddd7bf37ee7bc5f7bd93f75550ecfae8edc35099afe0b94aef5ba063f9d09358f1957a6d597cd060de37d377124f1371136aec33d3b18647ef410d6d190f07b2b16ac86244cae25021656e42ca1cfbb93f89f9b4f8996eab695abd07f3de35afd2d6b59737d71a463b6bcd7b92583c386bc0d956637199287f84fcd471ec1fc7b197a8a9d33733c75ed498de4d1dc8b64bacf86275c7c9707e814f1b7af548d862da70c8d6ef7ccaac996dc463830b791dfb9c8e1fea5b72cfd2586031e2dda074e43ba123df6f1f9dd791baf49d38133be5a9ae1d61cae14270b534967b83dfde81f0c90e37613515be946818ea87d309bc4b5b4ee5c4f8033f6fe94c3919a40aaceba5e6e800e38cf69a3370ed5337cf1bae396c9f79b0ee12e8bf0a4335aee6233e43ded41646e4d83f2ec34fedbb9061dd619e959cff60ec76315c6fcdf0cb8cc4956918102f01f55a8f6abed7c63b6f4b5fe8cd3ff0d726475869b70ec1392978457e01becbc6869fbf9598b70fefab456fb214094e8b1b0cd908d1c887bc2d0b61a7817b8f838d35cbbc38cb51dd12d4b3756d45b2ce3ce07ff4d52dcae7d5fb45d6b3d34ee7ef2c8e33288b7a0e6ba2fc035f8d87b0d5f1b856a5dee7c1181d94b3b907d4de21315fc37463933ac7a8ed072d425c75fbb0d8585156d66355b20bdec3e48400f22db2f6776bbc74edebabf646c37f0067a8abdff20a33bc3edb38594f6bd96fca42ba21747c63bc35e7dc53ddec59e2c0eab6c14b5d1836fca1e337a90b076c5d887838602ce0151b9f29276cfdfd228f23a9976e2d1eff18c92871a64d66c2c61afceb1d52c2a6a77ec3b6eb8f4bc867e3d33569a58d5bbd0719fb20fcb2ea99a8ffa1cbb7591b5e7fcc18336b3eebfc09b27f9c84b4436bbdbf45f33ccfbb7e0bf4426dbf50bf7d679fb1e09c6efb29b4bfc3f94732173163e863a61fcba1731ebfbbb50eeb7ec3389127b313cdeb67a455bdc25c6d616533fd9bb36387eef3b8883868c44534322e1231e706d7e58e3d49b8b89c90b8c775dcd6252d7e5ed207e19ef82045e37aad7d7df37c86f6f6a3b3fdfee06c9766657dc6ddb7979c2c45bf77daf92a2723c4ad31c979c8c7603927b4bf0c1cef998d36fa7b1a4861e1f5fd6fdc5b51f8895074d4905cddc4bdbbf6f6db3d2eaf9e36fee5dacbab6295b1c671b6b38631ecff82b57edbbdac9fef1bcbf8bdd38450991bc006b92a3d915c771c671b9c032d2fe4fe8abd56cff3b3ff3d0e4a3fe3d4f0dd5f8e7dfe0c8f8b949b8d6590313d606709b0a797f423a6fca5a5fb871b6b70f964c794aa1a51f5b80cd97504548d5d875fdac03e8937d3f77f5d9dbb7decc3787310475fe2e8b2b3d71f8e318078dcb0b75fe760cc83b5a68124547d961d7ed65e9fc51faab9368c28fe508b6fa29f10ee8b3f8bfdfb5eee93fb0cd730f5c9bd94ed617d13e937148b74c1b42de2bb2609c5ce4eafde517d312e16b5e2624cbfa19bb7f6bfc65e89f3d387b80e959fb702fb11fa6ada0bb129987b69e3e474d654d1b1f7eef74076da2c4fbdc438b95a878fc83cd3918db9b5f26b5b4e288e7b71d588d37d4e1b3af44f30399d487b4969e873881d31fca1ce66caf54e12efbbd99aca951276c89792603c1353bdeaf0fc59a64123c6361cc8fa99b30fdc7da5a5af5c3f24e26c4ddcb6f936b523744e06f325ef25ab53301dfcb3ba2f60ecdd2e8611c68f313c0ecc7330d9d9eabd112f6bf2307e6ef4552ec7a38b2b09bc93e4b129092baf373c6e9398ab6a45f0d9ab48e6670bbbf5229bc3e63b4a837f368755f1285efb9cf7f83b43b8efd4de7b253f7a2c7d0dcf8a23ecab3deca92f7366c8673ec7c05756ee8b0cf9cae0ef08fc0dceb39eb71f3271b39f60aedf3ea7cb687598f55787d97d6d39dc4a170fabe958502accd261e45a6eea25e6d64f841b8ae79b7719ccc1dcadea913f69cc0dbc466aecd963d13b3a79893552ee49c8c939332fc10163e98adf354772df8dfd240f7d711dbb779c9384cf2cebb7849e6b2f33c71eebaee5979c0c608edf3e297e81f2da7726ce72f7991ebdfda836843afb4588e94773ddb4f3caebe0a3c7e4ea80fab5aae127b9189be3c7717fe88bc17c4d7926431e19e69c2eaafab8eaf349558375057e8e278937f06c82dfbaf9f91ef6220eff4bad23bd562fd43acee3aad6d1eb923b54ff46e14104925804d3762da07971199f0587f6676b7066c79f738a0b3c2d7fff7f8c1d01c714d0e389db6361bdb37fe4de3ce67c3765868929afc15a83668d9ec8413ca495defa7c92e5b09f9e7a5659b30c9e95c74e9fd67fb886855dbfd333499e28fcd930c0b540843e81fe658ab04947e00c3abb3a27ac082c1c1fe84bf40e350e75c5155af6143631b2fcfd90732dfea65ac3de4a63f039e2b85cf32cfa3eb9daf9226ba342d6cff1469a553e76e5f798ebd893501c48918ccc017e8a96871b69f0e4da5906fb2a9973ddae51a47bde5bb853448cb3d203b1976ccfd57ca39e943f2b8dead78a37fa7b1d87a9e4f27cd9d43203eef5e6edb33fb2ad7aae96fdb15b72e3c52476b02a2812cfc4ef086c35d64b9dc5e69baa713590bc6d4abd55e645bd44cc6a7eb435e7d84baeb18780cd3adf12df6dcbcf63e67c03df7e16b77bb7aabc91dd8b2314f3a1c674efda0b8c71e895ccb67540fd37986758d7c87816385344efe8c69e24dcd87e42cd815dddefe8d0bd92fd31e7f3e7e63ba03a4c661daf6b0d23428f817b96673e1e2bcfe8eb1cf6beb4fcccca61a9d63062f505b3fb438751d77d0c28d32abb6685ae6944e39c3fd86f58d73ee531ea09400e07ddf78aa99e0506fe09735c75fd406523943dcb17c7ba75e85c88075fae73d85e675bcbefadcf625bcbf98d3528ff06675746fc9d626edc58b1b702ca314767ffd0d4c35e31ac6c8a12d73b98e42546609583f60a52f70e532f8971af4a9435bedbe3efe606ec775e58a3f6b940f2f45d09fbb460f05aa0dcf6bde5ef4c424eee19d0f6562487d2f7fefe9c627dcf6da415ca43480eadcbd9eb03d6e480d72441e79733da694e526322b575608961350c21aeb7b402e742a248606e807fb41ab9302ebc18b9fb97ef7340b87279a1480eb84fe61ef2ba16e6996e9510ae3bf8ed4ecbaf325b1ffda40f90b97f9f62d45a551fe017ab0fd0fe2f1c4fe25f713c7d013f103c17f354863b6ba843bd02fb93d95825651c6235c9599c75555fbdac456fae24543524f039a83fffe458f105e84d5c0bfb5671fd637c117f0f64c510fc23df873c6e5a186f08fe204527f36fe32f6f3fe43cb0e615070aecc9059f635c163836d14b98675ba3ced6d5cf97d6b3c07e01364113b34c3c5fe4bb18c87a96025b02e57007ff6cece67b927d0fc4e7a4cd536c8c25e4c6702cb570509e113c2fab9e016b388d3f2bfd9c92efb6dc3be03d5245178366efb3eaed4c2efd9ae713c4ab22467e82fa46ac5e745e99f0dea9adc1785e01c6b0d3b23f646fb9a28b48ae30ee2758334a965ee46661d55c55f3d27e4601f406ca67c3bac5c7f1e706e6045da7c4ae9b2eb1951429129ec8ffc9d56aae9c9d56d5e59e57156f0e3ea7d05e3843fc6229f63c9ecb76e6f92a43df1b724d62dc9959dae0c1b1d11e0c2401e83c64f7d2b530ddd81af36d851341d503480361056c5fa9eea3fee80dfec8451c037f05c82ae2a61ea450df8825f6231903334bbdb567e92d87ea5faef471174e88a048cbce9e0e575cf3ce11f785d0fa94f5db9fe8eefd5ff5702795ee1e307b856afb3d763998a747fe3aeea365caae7e26722c7fb7872a1c3ca2e78caca944b97fd8433b60e5990c028fa2ce9b326a7cfad4f8b82f2da7eef96abcc5498601ebf7afacc5a754ad45ff295e33e45f35fe0d266d9e97e857eb3382f39bbf7a8930dd4962ea1d57b5aea86d5d8c7d09f77be8ed89d8cb6c7d0de01c2c8455ed075db05cc72e5fcb752b6e7321fdc8d59cefc48b86b5c0ff1b4ec4b8aa2bb2cf75cf62f91e3311e7d03b78076dae9183a0fd06388f9cd71bc658b73e88a3b1e67e2d28ccfbc29e95c8e89b7bbfaf163b6b787cd80bb4efd42da746efae05f7905ef5e9d81c85b18d6b965ff2f576f0ba9031063172e93a9e867e6f9d49b0ee81d1b70b7903fe962f19c5e9d5a55bc75a49f9fd231751d61ccb77c5e957e26e033fc7b5f2ab2f192788db57c767cf5e6f782ddfbfb40d512f407b3e9e9e170ff751306dce5d30793a1f35c624e40d28710bab9e47122bbfd40327963c903e5c978c33625ba2b76fe0a62ebde316dabb953c5ac2c5e34a7be8e9789af66bbdc624b64e8a7a4c30c79e16629bcbbc04899979fd710cf9049ef68f9d09cee80aa30bf8d625a749244fa27ff09e5bba90271072bbb2e265a71d945fa60e6cc89fdf338fe05c83fccc927081b60e517f0fcedaafeef57929fecfdaebcfce2217f19574ebcefd63fe63d51abe90df427d59aecd9d3e819d36339ff0f11a30f7d0e4d823e7326a600db07813c96bdd061f9a9380f3c7e6053457bcf0b5b1a1ecfed599c4d405403f1f4b3bc4a0d6a5ca11b1fabaa6dbb0db8e227a8a9af66315f7f92bae529351eb127360ef353f03fe003dd7a55e473138885f3812f0fe997a3d20bf68ef116b02e70cd8ba546fcd11eea9589146a8ff969adf9f600bb1cede67d81fa6a048a620cf637016e84dfb6cccb57a46bf7cdb0cddf932f48eb5fd0aeb7c090e69c334c7aab81cebb1fa6570e65c37cc0f535c65644c75db136f465f1d7a48ff4fb7e6f8cb8804538f6a4c8c5d22a45ebce63ead3c067e8f16094b3d16349d373fd4da0e3bef6cb580bd6656cc81eb081ef1b566aa9a6a0a2bcde097269173f3f935b01932c84d2099d1469be535e6c73af5ec71b6b3dc615543dfbcafae19fc569fc592650ad2d6581b3abfc81e7002a664efe80b7dcbacfa950a0f3b10ebb843e50f601e9657b9d17ec6895ad7a019acf52fc2da8e80b90cf3e2ced6a12fa2b5935b5ca92ff4cefe001389ca81debb7b67bbe76ea74519e19b895ea24e1d7bac077318cbba36c7975e61dc017d1736bfe3d360be8c75293eefeced09e22169f9c63bf06f5b4edcdafc72631ac36e4ef2d97a6c8882a4cf44e3c9353ad867466474f4f1725963bf747391cb3a177fd81cbf34c5a5d8fdcc74a319c3af6d645aaa71eb7c26b14754d3106746247e80fda21ac15a358686717f85131dbd8bcde54bdd881fcc03a173b8786dccf2a51ac75f6a244ecd99a075fdee4b3feb5d7921522fbd921baaaf370545a4b1ea283df3022ebd01fcd55e1e1bbd18f838acfb021955ab18a158e15776e2fdda7da6dc0b01eef57fa8df8bba2edcee11b2aff3601eb1fc2c45333257846d9833df6ffa9e2c6b5bfab7d78b2fe57c1bbd41a9e391ded63a74bc81b93eade5bd8ee330c79782f7d94c39d8ebf7f80c83b5a0acf702f6493d4ebc7f9fdf0ffea696695e34b786aa6d8da161f36b51e578518f551df82806b32fa231cfcf728bc4fb32e510c88b4cce359523609eb99db2a7ef2cfee64971f269b8218e4d74f98077c6b5dc66fafeef6a9a725fc0e660e5567bf1d997f2d43dc6654fcc735c28ea374bd6fb1f5fda3bacbdc994b175d71c35cf906e8ca6b8755de79ce856ccf989b9da597cfa02864e63cfb0eee93fbc67e31d5b36d623b9181e3dc9d477961a336226ddf617fb9e3f891333e7ec993f68f486e8b9c99287b8b251dd63a4dacba22d77643e0de76eb79a362a94fe96e4b23be3ef0e5e1fd865235867a3f70617d20678525f9943bb618f6c6335cac7e6e4b16fba3a92cf5883f35753b527bfe9a3df346deb27bfb11bbfc1bafab577c3bf99a8a62beacf9e83dfeda94d513cbecfc79cba4fcb2f78fcfbb54dfd9e65ff3fe437540e683d9ff01beade1eac39c6369dade9b841551354cba9290919839b6ae65a791c409ba3f91dea1f37370d4c90037f077e18587f73666a5b2edf6cb9b3ad996b918ca3fb7313f557033d3547356f5f5afe01ec5bcd182ecd6e3b73a61ab968ce1ed8ab9c291addbfff300dfecb1055dde6d58dcdad17aab1561ed8785306a6089e1378ddcbf5833b6b780b703dadd5571b75848def608de1ace3bb2181c9320bcbb8a5cf81b958874102f9eaae8a344b977b275c547c276b7d27899927097d19d664e4a1325f10b514c05e0c434fcaaf01bf0e81dfea5a5b74aff9b6aaf1db5236861a7b12ac093c39569e79fd60eaf58607c77653288b54deb8c61d0ba65c4ec43e61be1ec63667c3ab17e1fb5a6a859183f81a48bcff61fc39573fbcdeb092d1128bc785f8e25cb882397d86dcd5f95c22b609afafe64395ccccb5317733e62d21b03b1bfb86ec7904b637fe6dec8ae7d8d6f929b2e1a0dc66f03993bcd868b31bb42bade85fef90c6ff77731113dc454be0f7b1fc0b7afde651a76c13dcc31c5987d3d005152f6444d6f285f0bc369a184acbbddb8dc1a0853192c168e41f5932c894ddce1ab30acb8faea92a146b902adcfaa24443533785ad29aebfcc99f0b5e54271cb65e9476f843097f6e175a3cf1a1c008ece5f3e7ab3917f3887f29dbfca16aae1a5f65781e685bdbfc54091a2165650f56fa0bf58faa85cb3362671c9b5d3e859226abf1a6b505daf436e342ccb22f421f5266e154b866afbfc018e68bdbeead59b36f0b539e46335fc3aa6ac400cae68bdd2b9b56272b1ae6a51d779c5aa274ebde398c77d5a758cb8553f51615168b3fca3a75e3f7bd5de8cf0fd2b7dbaed0917a727f676b69ac2dc9c5dd72e31b8f90f15bf8a817ac5d87a1572b1c0fc8b9e08974a9f54fc8b541ea0c1a923df6724971473cc95ee879c79958ef15c9303fb95d4596fb265fc91efcdfcc7c37d7867f1c38233e4f5fe39451aa41bb6be6acf61dbe6aaf362159f9a00de41584dcff1b3f3c0d5607d385b976b33616300fda08afacc34548223abeb2c6fc8c064c8795ca326bec4f448997bfb07792c7a3d5e88dbcf20773c786ee7fe6d710323de14a853a34bed2b47f09c5166c38b12c51f9af994771e5f5bcee30bbe4232b840dbee15bf22195cf4d85cdbfcd83078c1d07961aacdcca9f6c4c65fe92ff49d01799c0dabbe33ed51ffcf0ce382376b3e6e7e621e7636c4505c7b3d35f6a8de1f3ef592f8bcb378885fe7dae1aceeade56e24ae38c6c285eba2c2fafef365639fa73a2768ea2cfed89aaa6873a26644a26bf3aa6b74dacebcf0c1c57f81abcfc0fd46e3be049250eadf25f0411fbc1390ff25b35669be8c9d5e0cfb09754b885caa7e3c26f0d0e96b03e01350f5ed62e48a63063e779937a9f87e10464f3ddf856bad53bf175fbd88bfba929929091fee7a4046e09ac6246feece5e6baea542ce74ef0831afe99e9dba9708e2b196f509e05ca0de1be37fd0b1bcee31b6eb2ae07e8635ab464ad4285c20dfd121e7aafccef47c6961fe6e511de930a86bd8481c619e2331cc3ffa8b7fc03dfd3d772ef529c4999dc31ada02e2a8cf28794b7d7e19bb73f3e2222ee1b62d91bafb9092b3b20e723325ea6ef519c5ab53cf31e2ade9ba4fabce986b60c64846ba79659f32d74fbd1ab876a94b37627ec2a1ab4517a7bf8cc19e6b61667760c09b90079f7c06e4f7a3e718e135994c5c82d7e797ec392bcf59717562cff5f74dd6a2666f0ebe37ac436debb3c9f0beb3d3589e44e7951651388d3fd8471c7b1fa11c1b58bb80a9631fc430ad61ea59f119f17a9a03b5c643ead0353fc8bdd36bf54a3dffd23b72d90ec6ec848d11a94b3d120dd514c646bc1c5ba66058e6587c1c271c37f8d020af14d95f0763574b8897017c7ee8739ae03dc7904716d8bd9a3500ef50dace5b46cd70664a03e1931f2f6d5e5dea86a9dbf745671cc798c55f3aef8a463c2a3a7377e278697382a59acbaf7577cc87198f7a9017ad7d0bbd3b8ea473c3ce7b7ce9e7ed7fb1e58cbfe15f11c7c096dba29e083576fbcb98d5c741c49707ab49ca291cca8319b318cce7a51b83b2ae57fce86fffa9e2d67a9606134e00ef0cd6cc9cc56bd55c7fad0ed5b5a38d867dbd78bcfc28624ebef3e03db79a29189ac18b063f2a487d8bc781fc3f568fe07fed3dc0984a8ead86de610174cb5081180731c4485d1dfe97b8dc83cbe7848f95e337c4e4538ed1d9d586c30f0afb4ce41c6b50c852046b78f01ca43e271e029a6f88e2d1558edfe0be0388d10ac66319974f12af647f3a79fbe1007e3e89feec34f837ba4e8bfe817b4e1a009b65e31c55be8d3156710794dca5f6961c17c7185721efc34bf95eb2764ed1dfe83a59bfddca31a2fc4c7cf523146f7832d65a36506c0872cb8177c798a618ff9ac63275609d140f6399e07a2f110acf123370d6189270073e7c90d0794d78fe4c6f3742fe47ab2990fb8c25f7dce640cb37ccf54eb95b89b1847cf6efb7603a60dca3734f5531928dfedee08b68ec19037c1ec4ae45f32935d6d004fb1dcdb92c19593089c05a36e717f6b054cf01df453bcb4de4f92283dc7a5067a8a99b388f7833303641859d78d9d8db91ab0bb1626f7f05133e96f561a52360ede8812be4a8d44dd1d9db23ac4430278124688ea5a64ebbeeb6855147fcfebad2bf4b790367aa01f4c0239ecb126f6c670d4eaec6730ddcdfc3e0b6e1c717255a6f4c6368a8e672aacf84a9c6074b83337e79875bf93d79968067c37383bd56c3327e4ae53c51fca4c6656ec93a07fbc45a6be9eda3b34fe0a0eef49ba018d57cfcbbd3ceb40e4e2242af0ba902ee1937cfeb9d0dcff1a65c3ea9775dedd36a6dbfb4dcc0cfdd9891a9d9f7c739af5257c3353cd6cfc6b601f7c4aea99eabdc554111d5ae357bfc0e73187364fcce2cef49c4231fcf05b079493b04cf07948b276341b9352e5f69c650dc9acbe7b10ab03745b58a55a84d5eb6ef60f24de402f9f073b6e6fda35be3bd60acbc8dfe5ed75d02bb5032b92dcaffa981255e82b979a6f283104335beb8fc3a7639ec17cecada0d8eac9304dfb3e2245147cc83f2c1a9671fcdc490c4c2b1f87bfb3b4f8a284c96368789dd5fe5eddff9f705f53bd7f26f15eecfbef179cef8bcc41664fda6fc8ef5bbfbce5263720d501f8008d6a68a3fbb063e3b35825fe06fb94308bc1746ac8ac07a59f26e3c0efd443cfb7712f3254ff13852021702c6d85d5b1da39a0d9177ac2117585cb30602f7c0b06b4421ffedc3ef37076e8078f55bf54fc07fd539b23e0cd72990b93b88bb9b7a4900eeb942365f58d50e051384b10cf6afc1c51f2a0feb07bef499f96173ee78cbab1ba3e652c13800101f6be51df8379d73258333c9daad2f8333b75b73393667f1468fab3a80eefcb631d43543156d5e358d68f80574a839331d9b5f7fc01a8f59ac9b33f163cb994f6b1895d9da346257b4a12e55454b14743d12b736a72e0d5e1debd15aacc6d5d50fa6e5cfe7e4412f99cae4b182f9cc8778408d7af2fb7b1de3b9cf883d3b233e5f34f672d0dac72826d08aa7d4fae046ea86aac68fc87da2fd5bbf73a337f4fe4ef461c491ab31749c46eb09a29610ea9427ef48e8d455f1f3779cfdcd3b92f58ef79546716980b9a67a76eafec3c7f9e3eabea4ae269fb787bd4e17c855db3a5789fc16d69f9ca0f78c8b3e3325739e8f3ce0e3d95de7ba516165d8fd75ea4a06f03737ae36d434235898d30cd6bb7a07a1ee2903eb22411cabd0df87b1aca74589b3ed586aa4f74d0eceab09ed8093b7cfe30a731b73b751dfdb5cc6de1ff039b836f0fda1ddeddafeb75b7e0e753d3e5f0e344611251fd220abe68c752e6b7951da163bbd7ad61b85efd1739346dff124bc28332156e2e552e542835557a14851194bba22cc58e8e3668e0e7ccee88c7cf695d0e2a9081569947ef4d7fd9dad1e76758c771f58eed6b197a167af5875da27598bdf9c9e7877b5b15ed6cbe15e925f643f5acdc507e3e105e6bc21d6d14d3d298f8399583805f04f577f1ae7db7c756efeddce67b3e6b9d913d77a8714e3e5effdc40c77f7f3c1b1d7f1425c03bb94e803a0ecad2a1e0f7952fedb33aa3e02e4a3d478a581361c306bad89b59635ec1f24ebab5f847759cb79e5183539b92b7ecf2ade9a96fe1db033e57985e19fd5f99b05c6f63cf390ef7a8fb171fb30e69139f78aeb2cc518d77f021443c11c3ae077400ebbe7ce9b3c9cb703ec7d9d75f00fff2caf760736491553a762ff31eb39e03dd6a8ee16d842cc7840a35e6da1bf67debdf4d7d5e2d33e5f3736032f1d715321fc3dc847f47e03b619e4ba9984c566cadd36f7d92faf68f23fc89a40d67d14b216fdc3b2db712f79a30f06d659c177fc1b2cf6ed9b57adf7f74d81fc16e05ea2b0d305c61ca3fc990cf4c991d0e3f05dd4d8c5efa625428ab03f607d51a7be69d4484fbed36edd5eea8ff5d54f8671bb26bec6448aca38ce8ff5a302f6e77e3850600c0f61667d6a308697555853553cf296055af4e6d7e72511d310ee9b297f80fc1a4526907ebeaca7f7cda1fc8e6b7ed7b06bdaf35de74fc17caba5bf692f0fc0f6f38bfca0c0d8d3c37d77e99e5f810fe6b05ebc330644da961e3ebb5690d3a429cb6d5b08713db0f4773af3f6c38d1ab9ba6a92fd8c82ae9ae3b11189866608840f1133fa12a83152f6223e8bcabd4bfb68881b9aece138c17a2f13e871d49ba51bb16144c6bf44de97d41f27969d5dcf116d1fb2cef6caee61ec138de81d9127b07690ea0f22edaa6d62f65c2b8763aacf9692ebe09d7e472dfa254b0dfb8ed2e9ecb5afe40dcc89847dd9a9d75f5e5c7bf1645e08ee8d96bc287392bfbd3edb18f191eef7d3208f0ff0336714161fce211b7d9177ec653bb6dec278699d6d3567ea4066d48c2b08079a65af3c7cffd7eecbffa7fb2af6ffebfbfe601e10bf9056e7e899e736d907c6a8c9ea7a5ff55ef28a77dc57dad9cb7bddb344c52abb7533b5bf66252f0b2d77f0ac14ff87cf99319f03717645a8cf1fcd178a9f937101d2a73c10312decefb5e3796cdf1b713abfe0ef34ef456062137b9ea1ab3ad710d911921961bb02ea3f56de4c992fea7e68bb119380fc08debd91ef69ca2bbc06d8493322e7604e5c5bedbb967929eb825dabd649e09c5a21ce85d6bdd01a2af745e6a3675ebcfef2ec5879fa991827af3887c0ee47790c2207ad8577b9ca5147a922dd047f9f5e146925787b3e2b7d00e85bcc087f409aa5b296271b2b02f67f7d5d4fb8cb732355a46f61077c81deed3799eb09b42873a7955f9028d277aaccdf2bfc77598a32771265ee9dbf35b91b02ec3f6f4f2b2d3fc85adedbd8ef6c0e9ec977ae4cf883ac9fbb6314d3d1e9c1d97f7c6843cd9d54d64f8f7edf7b6c83f91df66977ace0a9ec59550c65a51aae017c034587f2c755fc4213c40b01fb5f90bd355410e7dce553cbefa51fe9f7c5229884573919fd71b414c98d15fdf6f6e955e9af326fcaa77232f8ed68c2fda3bf40bf9ff21ce6c9387b93bc28794df033814f58fa8703c47307398a32a5f421f5f23da33fc153db5d2c9c8e1ae886dd6e438c4394d7a9634fff2afaecd74acbc386df2c193007eab7fb16a4d9f5596e462e063cc6ebb9b36ab8883a407e63cdae7e91671bfdbdf68fefe76c23cdaa5e19f7c0c7726ff4db9b9e0fcaf15b80e7782ffadde857dc4799530c87b04e403b377d75c97978de3a459479934c08d8be3390e1a577fc810d2f45cf398d9b76f44da16d49c427c3b4bd98b61d191bcd761ac4545a121853e81cd4e217cec1bcc4596a732adf20de6a85d7518d05e23739b0f7b4eae989b798f375a133ece2ffeedf2cf578bd5467e697299a9a1ec3ba2c4335c32f831b8e0d519869e6dad81ac3a95af73ba63ff66f70ed298dbff8231bfe497e72706bc7508da2e2787ffcdb7dca7c6f185baaed8fcbe724babe9877fa03defbc56b7f77acebb0b2b3fb2bc4595354f30beb41812d6ac0354075541527d67d9692e7147d5654357f4515779bbc78ef23d39e84dc73444e61206ba317e73ecb65edf6b7eb94e333a1b94eda8fd6e961acd0df57d83acff77c7f953f9cf72e5b9c7d6e632efd75ea276b168e40830fde807c8cb5bc366c54c4c3f4d7f19bd5e446d6f564c00678d9ff7dcd6f9ab8b61b7b3376bcf3b1df81781e1f9d4d30dec97e36ccf7bed26bbdb16b9fdfb3c4c1b66f1601c17f5262060493d36955d64ea2d8f8b35cfa75b567fa9cb80f2abeb0c6d6d167717ad057c19c238c0571d9593cef996eec1fd5f873d6e092fd0d6473cb9b9a19992fe5aebbe37844bead1b37049cbb955fa675707eb6f3bb1dff2e5ae739c43a6c9ee7c38fc0e24eb23e10567bb2aee0673138848f948fbefef2f7650c4f9e6fff4b9ceb953319d9045af4ebff2636f6526e8c1d7f207445bbae8b313eb227e2c496b930f4b961e81f97d7a0eab737c7cc1a653a77f3c01e33d9bae475cc126aecaf6096a8d2505066f9458904498dd722898561f36bd19889dad654973a37acf6e2e3fab4c16d3515f13de30f838b67aa2918a6b9fc78a9bee4710de1653585d8172b6f3f9c9ae6d252cd97eccb277d8862ace82e7e677e6c8902f0c374cd18ce618d0e2fac54e3d5f1bf0f56f3e77d12aa34c8f4da665ad37d128cf382b0d7593d6eadba3432a6dec0fc64d4c4670c5ccbc7fd741dcf716dee4d67f2c860fb04d7163ef3d5081b407035842be676f0a278073ede4cdf33ffd0e8258f49ae6117c7e1d49e7991e78bf4a35ff3286ca65cc5855ef35be1980e3c938d5320c2bab9b4aed5a06220d3c05ef620b7bd34c8761ac65d9146c28e95e72dbec97aeacb72ef4e83c9b000360b384764c8b72208caac9b7baa85ed36092c3771ed257a0fba7fb7513b5ce21356fdbea67af524b368f97ca47e85eb03d609f17534301b396532bb113520cd5e623027131e9c9bd78d153578303ccc9303c760d6f85932c1a100f92d6642ac44b9a8c65b58fb876dcac2ef13752a93888c61841b6b745e1dcee1e6c0dd3e7ab3b3a2c517565d1978966372d9427fc7d89266d718f3728cfe9d31c6f902e654893e91f34a3f5f9424beec209e951a933891b81613f152fc7c7cd9465fbc79d39b10e8e74c2eb214bf33c40b2062ce77ab9707707d6c1e8f1f9c098dfb6610a3b975f6d1fbb89279789e6e8f66e2266681f7c8933e9112f7b3c25533bc5e1efb09dce3ccba8e8f5eabde0ad6682e04c55e947a33857df8c71a6315e686f751e6ddf9b4d187da1bb0730445985abd11e444d999881f51d6494cf199b0d2cfe166ca5f3f7ab33f7289a73e5f092b6d266cacd95bc7bca710c763be4abfac01c36779c02907b9ec4b0cb16e7d59f628fcc55e06ba92965f69006b21fc7d437ee34ef98de17c156df925f150bc3b5740bc142b7af38aec8f6ce19c50620e889cd0c98fcf575bbb852b20e338b7e1d86b623ebf215e34aebdb8b806c6859d8445c969e3c790d3a6e23f84580804364130b995b1d3b0291b1df9a3220cadfe3a5024d1f30b2eb7b5bc8a5b376404ee79aef8e81bb0d739d0b873d7381df3ccffe53843c4e32a82f31a5df30399423cbf6ad7d9907efe8f6be5c0b311f6b739ddd9cb830731c0a337e7b88c1d2ba37fc78be6d65c8a1f099dab06fef317531f559ca1dde322e383a42d651999abdf6ecbbd13b2eb8edad8a9db1383972d75f7dfcf6c93b64d52306d12600bc2776dda2555cffc63bba468f0c9b0fd450a27519e44645e66b49ad23c8f0d0cc6595327013db403cfc6bd6c25b6651d63876bd3b44bf03949f60776d7b1317923cbfb21d9b44ce8cb3fc7c225e6a2cf9025e20c31252173c1bda19c3ce82b3b76fae534a6e91e62bbac99f8a4c03fe0baf43cec792463fa24bffe4569ca4b41e2dcd7f800c41ec17a1eca1ae227ba10bf59433ba03f1eb6b946c0de6dd98e479cf79bbbd6e0e4ed236ace6b99859c2ab41c48063cabfd3ddb3e66cd17815bf5c49f68f6c5624c6de61a336b51316724c179f1fff7366d69b7d0e722e4f9e537f6eab571609f11f70dd567a2965fcafca77f6c9e690d9b600a6c82db68631b6fde04d80403b64dc09f337456c602b6b1a8b3b2734f61bdfa60ff22ac1c69f028bec9ec2553c079c478ee4f7afbd967d9339c26fe829fcbdaa354bf322137711b078de0966f7328971830711b03c635cf179bc80d600c18120f0cc998d8cac592b1b6beb977fbcbd09742aa27cfef994746dfdbc1ed61defdf99aebe43527721181b53cfa8978dbcd57108b636b0d844f4e8dfdb97aaa64a70b27c2e6de0c8ad30ee2b0e98124ee9dc48c48cc73068f7ffe882ba1c907c4e266c79c9a931adbd1eeaf7927090ac71e9f683ea0019bef69be007ba6e202429c3d14e7cf5b30190e375254d6265f2ced3bfd9ae79c728cfec1718bb56387ae3c89ab38348c6789e00c5aee316f56ed23cf51ac4d95e2c2b5d69c6ba9a22b0531ead933c85ef518f13baeba311cc0f7e2fba9c921b10c9479c0c99a93b4f92676d6b0c491bbbafbb1bedcbbad9816dfaa0b8f5bfc9f230687e48cc121b912e877320407f35a83f1ca93a88bb32b83fb6b9af34d1fe4067c4bf29cbfbb967ff1a7ef4260023d98b73e9fc1cf21bf24998329501dcbe6d8fa4c1b0ec95e28788fc4ecc13c88f69d2a93d909d76d9c1dfbbb513384eb65b2d667b972fc4e37d2e8f239cf478def92f8ae4942b1b3d3ab7754436f0265eaaa1ca3117ddf78f405eea10fdbe3bb7cdaf9e83156657bdcd41c655e1195b535388650d9bc878d35c3b26ade02e9fb54f738456fd47b96fcaa45c85bbd3c90ed7c244bab72cd67ae3de67693908855547d4b09ded3bf9bbc5f7ee614d11bca956c4fee3e16485e136312529c42417f9b52322db6657a952ce3f69e11f19e21b9c2be19b2be65c8f53b2dff6d9eb0099b270cd6c6d53c61502ed44428829e58206eb01277b853bf9e7693fca848c8ffa3f532d06748af7762b8d9cf7516798621de1da3c6bababfffd212e3e259f105e6b46321732d17cb4c2828e27fe223d5fe0a673e190aca4cbc2851eb4c7b8289b84b5ee01b03e399891556c02ee9c435e4fd7910fa09984bbf9d7b20e6e8fb3fe51e027bdc77ec259489da360849deb8c6b3800db26373d2867e621a1ecd2f58e1a53631fecc1b945311ea96f3ce1a3af224fa07c846fb3bc70ec1772981a9d4c865906350123efc14bf4fb27e135c8dfa2ef5e26f32ce705ee9551c8135ef17af89c95b6243c7adeb087ffbfdb6d039c13be6a3d56426c8d24050f4d96ffa5d9abab6c491668d49d6207635f3fda0ee96c4c235d52be48e6bcc5d2c2852ca8c5939f632b668fc93725f5f36b81eb47d7f7ffa4e8ff5205c3e8ea89693be1ed693ff6eefc34012301728858d47f5e434e6ad8dbb478fef55fd30007e022dcbaff0b0a597af12eb23e9c2fec1f178605fccf35163ff1edff38d658ebea4867d7e5b1df84b85d3af9f25ca37b797b1d39d0307d7833d18967bccaffb72eadcfff11de232a9ed711fd7a9db1bc6ee4c2c5c6bd69dcf4ea06f7bf41233da82f729e3df442d2751bf795bed634199b9ec353a8eaf9e2472ae7962624121bdc6091b7b9b065258787dff1bd58773a745bce6fdf938db5966b498a398dd428aefb8d6f6b220e325e0f9181fd09784ccb1d5d802f2fe37f394c01af4d8efa3787d596bd7ed538267b37ff357eb94c4f7adb5e683079c57e0373b7b3d76fa26e7feddfa1c76f6f21058fc019ee134f673e3594e2f2e9cbe79767ae07c59c67f372e287777b51b97a792ef1557d5d4d43629b097abe7422c107affa0f7bbeeac079ca1703cd5757ff59c9d359cbe326fc4757ffb9c97e321f47cbf120f712ff8b970de9fe1de937de4f20461d2c19a75ed7472718fc1a7169dc1b980fb682bac3a58efa845d75a1ebbf551ad634bd9f83ed57db6d16f787fd4679b2a5a1893ef01b1f8d07ba4ca7d899e95a8711b039785a51e4cd242b18cdfde11cd279eff9bd7cbc34032772ff4665c3e2739ea23867c8810b33005feae0f3103a32cc0d8855e91671b7b01c67155a01f94668abdfa1d6879823101616f0dc2201c65ee943b79933401d7ec26d1d529f2db46fb3e075a9ac8bd19fa8cc496d786bfe4def6b72c0d2e9f7b3e568ea754eebfff96e78bea6fbcf699d70376ef1ac5298d3266f5a4fe61d2a87147b522964160d11b270fe5912f0ddc5f883338139a986ac370b9774e8ecea7301e9ccc92e53e0c37d628552411af215b2fd2b2320b31fe62a51f317f46b2a4bf83fde6c184f9dd45a9faffc0f361cd2fef596be0c715cfea43a0bc4a9100e5511a09a8e771913918e37107b931e13e2994b921c0fd6345e03c2ce408cbec24bc2ad22cf38b9c97b5fcb031aacf43451afd86bd5ec92c0bb4fc2e1f577f022de561af9641febebece2f88eb481c3edc97e9eff983d2bb653bed9c28bd5ba593c01e70ad61b4b3d6bc2789c5368961ed27cdc7d5c04ca9f6a5325f08b57ea830ad721962859e2fca7d81eaa1fb8beb6a7fcb514e80bc862fe4dee0badac3b8da1f6f7f2ec06f561a610348f87ac8cb53ae19c2f27af4be8d1a8b96fc0665dcaf080bb947c976c9355cf6ff8744ff7ffbbd743cd6544e4668acbde8b753c916eb6ca4650ae292a267215d83b106bc3bdccf60ae7f81bd45bcd39dc42440baa7bcee26ecb49457acd16fbfc80f1b6bf4dbd1f8423e1a997b00ff5f9d775a1a021de44dd24ceead7e3bc539911387c214c47d6427591b155866b05d21a4cf3018f1bc0059f903de5bd64677b06f64d40b1ca3f50667c7e8fed1ca3d184508fbc0f033532f7a6d6fbacdfe9c0baa73dbb2741785590e75d7fe9ccabd51e6dfb993bf4f618dff4e4bd1180ae0af7ca74a6f96057af97d84bf8ff0f711f89e2123ab2cd06201c7bd26dd358d887343ed99574f6f731e9039fa169e1faa8f9f04569cb99259747c0f6bf9ab38facfe20e2c2eefb716a7c7dcb5843359bbdfac55acf31630cf692cf99d9547aebd10bc23f7b6a5edcac815917f40f3b974d42e40fc58269616e4b6ee883bd7f9841eca996e8f66ea496a8cf3af90aba4ac2b60e37e5571d1d095aa7ac78b328b2eaa191aaab95ceafc22d3b4e1528f55d188e28d01ed252a4606ebc8bd5e3e747b022347d78cdd35f1a006446f2ca3d71ed5749c5c9d3bb3fa56bc03594f1691f6008cdd7fce3106718cebe0c0de32d69c725cc69e25f45c7319fb12ac6b89704dcd5dc6390f7acea3ae9ad6d16ae224356f9b59783d3586bd0cf618f2cc78f3e844e0c834eadcdb7d9b5dcf801c554944d407acbaf0f21beb61207e8114db984b25321d73666a9a216860ad35849306d6ba5deb75fbe88d46782e3f028b5f5698cee57ceae7ab5c64e51a87a5bce29e8cd4eb2f613d93be873cd9f7a7732fcd3ae79e3127ffbc32ef8e7663c90ecc8b55f85ee2f8eacde3a3d71ba2faabf90ad8d340b6aefe7c7cf57b318775f35289e20f72fe88bd02e3dab44e88efe67c99e23e7bd14f84c8b5d4a9d7e36f889f291f3eaa07443d3eee459eab50cf0522ccd373d67d19c8188b9cf4ed485bea111f93bf6fe23b6d668dbe64708e4dd8f80f046f051d7feda86db90960ad168f7516b316489e4488eb90ac5d82584b1d3af3e9feeed2a95146c465dbfa1ee554610d1fae9722f8de1a75ae248e0dd6bfcff65dd75c3facc5857c2f70df432e3e98e7ad72fcb7a2637eca7ece1bb245e0bf67aef67d03efb485f57eead88823e46f13fb8e3c8f310f07e28f64fbfa708e9ee29f613e8f92b30c719a05b1d7e3ea5e342c2bb0a767ce7a1ebd7f3b7ce36c87fb12705e28591e897a2bc98c95885fea51bc360dfecb8cc4956640fef89dda550f78e70b6083edf43331f703c1b58c8b6ec41f9ac19bba29585b235faaa2a06b662a625ec4d4e7d6531372e439890cfb0af270632fca33ada577a2aadea7cb7e82f32ec2daac46ef42c7397f57a451866c7ed679dee65a8c4bbe16a067cffe5c1d367224e5f9d3c66a9ba51c89eb644842f669054857e829b790e24b690b783de75beb6f498c2a68c354f1f7f936fd386ebf5b7501bb602a34f4f80e62a06ed38f7d48dd3f90ccd1d79cba8719ccf311f5eed230067baa7d0fcbde12b9ceaa673126e68a35a75de7d3239fb5031310d9215e5dd73d5a4f6af9043613aa07dcc27a40a25ea59deb487d1ecc2df24b557b79752533dac29c0ae443cc3e813d2819752f383edf556bd873adfcea4b26b60986b02e00f84a65ddc1ce1a9cb05e5fb8567cdccdb7c0fec2721aa4ee5c3dc930af5ed790401e84c3e23719db73b5e89f1d53cf5073ffb8664a7f87fc89684e87bc67003dc3c7c17c89381ef5734cd832976aacc0afb14cce3fc61fb2d4d4efb234e83af37fc00f44c9ca2bfc4013e07f209d9052f5595ffaf957fb3cf124e1e0d09c2390c3e7f3bfbcff9cca89bdf2febfaaf717ddeefa32492c100e4dcb37b4617d4111d01c7be127f559c9afd9aa4feb9b7ba727649e847137a2ba0e025f5bf160b56b2b6a3c009887be04539eab9f2772465f0dfde3b681c9b143395781a86b393bf6b740d8d7d017756db02751cdf4074fe54a600d587bbe489fa19a1b7abf13f3c6852b2db730170de7f5f8d4a9fbd061bed63b127a0e9ccd30179dfd2130fbf1d8a1cd07e77ca173c22bf3dbb213ef81b584fc9f650fb766039d22725e7fd1a887a3eaa19ffcd62bebe8fa64ed1da93386cbaafe0ef399c03ab6b6ecd4762158b3667e70bea8e4a42db748d7547a66a8ef436a3e9b5ca26dacd398db142fcd13c6e675e19e266ac8bac75bd713a61f475550444ad60ad7e2af6dfb13d68c005d51e09a5b846b7022eac8d1de2fbe31becd30f42cd85fc27a46556bf443990e57ff5f91bbd9ed47b254ffeed4d203ffd4f1103efc9c30e7e6e5da8240e459bf7f450f5bde91cb4c9cc30d24e1bcb31ef08b69b44d05eca1b23ec1eae64d3dc238dbab7ab5077d002198736f16555b9d5f9d9ec831f04eaa7d047e539e773289c509ce7228873447e58b73fdcb8b79d6ef5f996b17cc3578b79dbdc6be788ce2334c2cc83a8784ef2f7a4737f624e156e25d79899841ff98c0c0f0b14f017c7fea3988a7bcc3ffc5f30264faa886c046c63ef3d28b4bff8a89bd027b2b603da0c5df827944d63c8544cd13f60dcd0178f79d2514e89dbe51ffca4474e179c4231b5eb3ca580ce4896f708012765d01f948617d7b69d7a1b969dcbfbfa87b3da54870499c8f2a9e157cc05e72f02e701e6262fc28de154cf2b431369bafff3d476bebf4844b2089408fa3b967d53d21aed6b61f22936736f35e601d091f0adae6ec7bb9c184ac0f1dd4e703fccd4b75e65007fbfb19f29563966c6c71bf09312773624e6c34271db6278c73d53e24e4bd173d7bcc7d6adfe9866bc4d67e31e76382e6005c4bc4537e69da50b4441cb3aeec4cb3d3ce742df5e81a7ce8638c48b78ed5c6ae14c4251f73934f680c6474ec2766a8a3f1411fc4e2a28b1e091f2a8c150e377a64065ffad964d586c2f99faded2e7c21e46ba947ec9f54b58dd4bb4d86c89e980909ca690f0457e372b2760ef5353a895cf718e371d33cb9b52d6b466ecf24f9752106b749f5db413c8cd0057a19f523ae1c6b197bf3277d2c463557553e63579fc160cc178cd182eb8eb3ff0f77efb69e2ab2bd0f5fd03a68d0d8331c462308a851f670269008019415348257ff3db5010aaa50337bf6faff9eefa87b463645d5a85163fbbe447ef4a9b1ef705f5ce46656016b98915d5b79f6fc08f3e9873a7ed7ac13905ba2d7692eb4630173640a751ec51fad1bee12b2c74b7578a8f7c0bcea3ae2faa2626e443c7d67f029ccbd63dfbbdbf7f1ccde8fd25cf0abb6ef03f53a77bf15eed16a68acc21bc41122be2da826d7a16b9752922f1790e37a8a6afbc077e29c9b51e3f7a3f3b7dec3449d7de1bf0e5f6326e9421731f7b6748936068ff747ad0fe1df5a6c7f149b543c7d1f23ee9a69d18e790ab98f7c29fd0c6772e1323039506c01620ed4efc994cce29687f5d11f5b85379f40de6d33b3227714c99ea3a4ea4cc9fcb175f666d32b8a379b28de07ffada5f22c8ac2d94bac8e18790a7d9fab959ccb31ccd3f375fdbfe7c073d80c0e56aa2e56b7e5b0b35697d8cb04decfb6fb00f72ee338db1ecd870cd72a603f0fe7c4c079555e11cef1d0ba954096850fbd64eaa8ce3752f5a0b8f789bd7709bfa6d353f057386b649a398f6f19f8ce52588a56dfceba04197da6aace69b1cc043e9ce1dfa5f2acce14d8bba3d99304fae39fc7bd0cd68ed0add4fa75b022cc81bd6af6f76adaf445d4e3c31cd5949eccd22bac6335d1fe0d38709eaef360ac5158da21a3efb9ed9d817a59f433add6b3471c479841f995c4eadd9c7c7b92a5870873bfc5ef1b45a93b3ae1734b8c3dbbbc6e4702d0ffd750827d9817f6d8d747cf5e7ffd64fcbd796cfaa982dae69388de8c4e1e1cf859380e47f46f2c8d7911d47624388bd0be4773d09e0343fae957772fcaa40e2ae4c4fb0eed49222facb38fe6a5f0eced1ed641eb5378d6ca71a77f3787f1fa2b3e8f7b7d347ec5eea3710dfe9b9097cef8df461687f385bca74751232f9063e5126b581ff899705edaf07cdbc3335c6f3054ae751fd4f05957f237ae6972e9f05cb972c2c6313bb637f4cb21564ad726df19fc95f0772f4c7d02ecf1791d8f63db3c3d1dd2d98fabd753ba61d9268735c41baf63b89d1c3a61e3405e7a602f1a9c107662e6a7b64783bd6f89d8e06d6c828ecda67775c7908ec5d70fd6efb6b5e9f4b7430e62fa5b71de98e0e147f7ac5de7e51c666211c218639213bd37ad3db960cd41776fddabcf6dfbb035c54f80ac8aadcd919e38a76797a837edea891f8a9cd0f1eb25b380cf417ba8899d02df4125f10e87decfb463db7e0fca57c0310b34af975fe16c12058b69ea67dba39c34fa18c6a9dee297bd3c93bf3a31b19e6db25c6ccfae3385b58cea4c09fcb85b7fd1d8f93dbd42c6cc48bd82fceba63f8f5b66e22590802d03eb16887fef63477a8ad5d67705e733e7f338a75fb1e5f4c6d973dbc667db0669dfaeaf63dbc026203047909d8b7af46f8c095de74bcc9a843e0e4a6317d4e71faead403601d4b15a141cd2377fa4a5e6c1823ca3cd3e19f6758eab96370c8cf3e2da6114e29a85e65daff3fe3afbb2312f64430c97ad6f76af2f9cc02beaf8ec58af83775d50bd93f1f26b675caab751f2a5566905ce1458c7a047398c13d17e4e5edba1443d40a6c4516a8fd270a3436cb84e9ff5833e4d0787eb8e5f53840677791b9bcfabcf135feb7454e7239edf4d68071f43bde9ff2d1a5d82b13eecb115aaf645e8c4023e31ce78af6798b23f4717d26621e7865f4aab229ca502f6a3a6be54b6bf1fd68a97d4632b0bc81347dbb0a8c7d80e2bcf1eeed9a06213b3c975e7e429ec43a39f99fb87751a1cb446b6993545f4332fa1b3ad792407631eacbdf7937e10f65972a71f44b4dabe37566e97e0bc066bf60e7bcbc5c2c7f524c4f7549eb3e6fd8506cf148d3c237b7dae701ff7e33cfcfa756b4ede207e28e76dcc54508c64bd31ccf44dbb129cd75ca918c9493192f0c39a0b1f066f991a07ae0d84d581d4b530be70767801cd272f7c6c9c2dc40023e7686336bdbd187bcb3c827b918fd3ac03751f8ad1adb9e0607d227bc52c90df44e682d3f38e57d2606c15e15c0376dc672859c9801dd2620f89f53df03c256cf9569f357132c9ace7b7ad55bd35975559c772efad5be30ff4e3bacd999f59d7d02e39e4ab5031ac06e70762cb8cd3531d47d951fe446d7fef73d56930d5e0f7211bd2cd76b0b6233d9bf89d2aecdf8838601fa33aad75148ccc663f9bdc7a6a241328275a22e80e97be6d39610de6e42d8371f06f88b9604f74f4fd10abecd31f4db89d3de13de3946eec67b2566da59b9325c2b7d5360e2758d63cdcc0e78d14b04e5f6fbd3118f3f44d47bccea6c10b1bcbd21606f8f735cfbd781f31be2947b1d7f41cda26b04180ee43368804bf5378e4fb3e50cc0c72fbde1d4b75a72f739ea6ea4c39fbd5f43b74b4833f02b6cb34d939c8ef9725eccfd5b15caa96c68475a55d9f10febfe2a758ce810ccc14de47fcdafb507adec3bd534d81ee82b9306083007b5196b43c8076a019ab7a99a2980bb26fc079f101ffc6d2d937fce606c32d3d0723ab0ae7b5edb53d7a3ae212eeef6d8c4176d82db4933f5e23dfe24edca6ebb394b0eebcd963c84f7f5e0d63e2e17db5bf209c2d8499d3c1d0fb6cb1bbf01e4c619c19f524813da785b69804998831139febf86be7ef44add00cd5544dbe838376f41ce50ce450893dc6df9ff3cde8e9ef6d06f30b6ffe58e17612784694ab4ef9ccf8fbb76a3ca35e73348639cc478c9efe5ecde6c206d7826a8be4a81a42f516476908ce6649e07d881beaa541aaa4aebd3eea925579fabe89e3858bf05b96a2ef204bff06fbd9b52fc87f7756fb9d3df90476a27fd8eec199e667028af1a1985ffe7650044ad71fa615b3d7800bcefed8e2eadf7de9e928273d3d6fad39d791ffbee7a7fc519f048f479d29dfa1b3ddcb31c4aa6d6366c04f21c64cfe5b9d29b91fbfc408970c9c45eb89afeff3e67758f7b005f393fb07ad0072fe31b83fa8f381b2431add03d7bcf64de9f30fe55f18dc9e0367505b3f30f02c9c83d29c6d175f8aed477103f911b8879bfa970ae5673b678a533e635bd478b73918abe8eb7ca2fe67f02c4675701d2ca83bf7680c39b62e9e24def3e37e2736dbd4d193fe65c747324e67a4abc5c227e21b019766065cfffd65896bc6c978d96a06cf3d187fdfda6541c42aaebaedbd41fcb5d77981e3b2840fb12f559d791e143b7bf2059e45e16d513505ccfc20e11336b66dd37745d80b64de10fb1409c4b64638844fa7a54e618b33e2680dbe702b43c6a9b18d3c9c47dbe949d1eea32dec6109eadc27def31b47113a3605f2f7fbf3d3e0df62bc1ee69e5d01df95c4626bf1bbdb738f85d546620be118659d4bc56b48e242d5b1d4b62696c09daa735dcbd626a5c6ae4ae6d78ae573b56b52f871a7e7887e06e4ea2e7398bf7464967d94a0314f4f3b677d72a1fd3a4539ac31a30f02dab97c8b3d7b0bcfed26d69ac8c05a5318586bd3f06dbc7af6afa72b517bcbb3e29cd86eb8aac68947fb15fe86d664b122e7bd70f5a4700d9e2731a55422774be8aa887546f8b6557923cb78b779668cabf3ed6ddd5f57178db703bac81488fcd72f8ff239f834c8c254adcf2ae49ff4e23ac3fa0373f544fe1dbf8e812959eb09ecffca0fd9f4cb47fcae3a3eaf73e5db2881b8da3b9d3b3576c295bf7bce209d93c09e57bfeae89c6b384a3977b46f7d05dbcc94ecb9d58f350ebec1211d144729ece75fc83ff7cf708f5ae7b970ff6d3b3e92ffc947e41c0efb5ca7187cebee7afa749d1677f9463ce16f689b10f9b4bace4946790dd2573cb77e88b6ded94f47bf8278f1f57c1b5b4e7c3312382ec9e0950fdd9cbc1a1c0fde2b7c202ecbbb7e26ecd124fd2864b3461b834f976d4e1dd56a4ac09e9c6690af7836e0bbc549d17d9e39b496850c64da560a4f9f727e35857b4096ca2818c33e0fa033c1f57b4f4a2b0de7caea731bd5dff090eb1fd6bf51b114c875c28752f80d7c3c4db20e4166a5cc73e7f5c6b9d3898f7097e5efe596e938c361fba512381be182ff0966e999710e561be3a5d80dd8f9bbbe9d6f27bd1a1cb8e731863dc46a3c2bb157a95541e4c91496ee6a75e030264f374eb760d8f6f0ec5e7f8799557936ea1f1a886975f4775dbff3837561d995605f757c135cd7786e62ee502722ac7ddcc343d9dcef63389eb6e7fa13eb87318c9d548cd8d0aff095eff417d6719f0f8717a0fdf04ae6da283f9e38c713219c95df03bec6f780af116dece7560e160d8e66ad9f23eafb0d216ae505cc07b4fd5efdb197069995a85282eb76da5e5bd5381e5d76ac2d07df46f6e1e21aa64e1c07e8a85dff99ec7394e0ee407500543e10d6e76e87f854901c431ebba013935e123c8ace08f93ab81f73eee951530fd5e9c3fe1ca82f88fb7bb1bd07c961a7c6a083637b233fd4f01cb1f342a76f19d5bb1198006ee657f35ebe282578eed0775235485242610bb063640fe36fb274cabd9aec14dcf7a14716e412a1b82507f20ccef4e22f126c9797a47ddcf183e1b9a84f3e9c311a97c33f0be12ce9eb2da1e517c39c9e7ac401dfbbfb3dd47db01e36186b5558e3c9306419f376c05ce63dfcf45d661ec35989e20fa327960ff63f5b0ff0bdb6d4598f3dd8c7ef6def15175cfbbd5e5d9ccb4ebf8164deeae302cf4a079fe36c7bd89c4f474f4f85373e1ac4bbb4a4e75b71ddb6ce5b7a6a712c1b4c642b21eb2182aae5520cb2148c1fefc9325da6c225847805938fde18c1fab9bf9bb77b873d25d4f73db2862eec73909efa73365cdff63a07fafe15d531c33d7045f6168a83d4f28abfa79963033fdfb3fb3174d8235f0471daadd7b2cdbf56c6f1b4d2c11927d7ff1f81bf87b3c65e831cf6c195af36a3a7c6df7d8bb912626319cf9737a26f1cf2ddbff2d5e6faf2b7dfe15a2ada9aaf2bcfd9632bec60d756d119624fa398398c37bb557b36bbd79a979d3b867a21ec747826420c2455ba7c01ff05d879c115e6bb33257623a2c7f7b442cf8dbcd8cdc8de5ff47770bd776cebed5e20563eaa930f6fd7c93baba6b688d82f9f2e593f7fe07e5923ba469c19ab1ed731dbed514e78cb103505f84a9ab5364de097542f4779d6af8de12e6f23f3b9372e226761126759afde1dc7cd501f04c610a9eb4667fb7839938938f2f628c7fbb81b5b93ebbc00c571027ce1d5eb29df2ce4566ed0b99a6f3e5f20de40fbdc4bdc896f2f147f6771e7f75911cb33f90bf15f215ee64e1c3f4e62d5e189b8b89cc3ba56872ba839873dd262e1d3f5b2dd58eaecaebd4be235103e492a2cc5b0af23b29d3d41310773a0d6efe76b49f6eda528ef0cf1b18f9e9e9c3d47e45d58c7b3257b44d3365fc4951f7ae950ba90e89f7ca80ea36f1333e7bcf1831ee03142d7b1c646719cf6f88a587301b10786d603cd11b40307319a902deac29e0036f60099836bce247724c2bac27a5fb1bec7b5b57e4d0a812186e6a1c603217a5da03eb1a5a7babe99da73046f79338e6001c7510cccc74f6c18e6badcc374b746931a374da671d3b85f7a9f87188c6fb44e83f1bacf3d7d1dc6f9e40aea39597ad524e14ce77b99d7fe00a3e0b7ec00b9e9f19f9f06cf14a067fa1cde1b7dded6d58ca228e031dfee27ec5b27f9976bbcfbb6978fbe66e8b74be7de76ceebbebd9e6d09b1223b18023b676d78769951e3ef5e776eb0b3c8756db101ce1d6cad0463478f70fff261d562066413deafb987ef5ea7a5c158bb420ec3bbfdb6905b5778e34e346e09af553bc7cb5dbbec7d03138b1cda5c4dccc17eca94cf391943bccdb18ee322fa08f5237b521e417c6491e4dd823c6344edf90b814db32efcf11ae343355c5fbdf873c395962ab157011b6ae794cf307ee7c89992c19ea14ecff787d3ed69d4593a5f1c5897948107c83a0bc6b7efffd0cb25757e49e2d55c28df81645504e6dacd75629d6d03cf1196734a1e1a6c4152e61f393f7d29653d8fdec3bf396ed6fc8035023a3ee0e8bdf290ec2259606069a135f30fd6c992ac6bb8587da95742ded81c88be677118c773e0771d62bb41ec56668fb675aa1c1de1a80efdae5ec5cebe26e252fdf93deef41263fab6f5f2be949c593ab9ae6b6bf48b49cde997dafaa9455d4356f7623ffa3cd6b54145e08e80f380782eac47ae753ac6da0bb334f2e7bdf17570b6cb6795f1bce65a704ecc4a8473d67fce617524e6aaf0f4cba5e5cabb7d6d80f084bb73549f6d318a511267c2c0be985cd5aa28587b00cc05f3dc4cfaf305716a99fa843ecbeed9b08cf93bb074e4906dd2e8d9f2ce987e5bb7ddd1698fda8332c47e60ebc47bb6d0b29e93a173ed666f3c8a8f90dcb3dcd2361bdc0d451ac0ddc8908ee9d923d79a2f09f3c074eba021c6f0f677787e6ee1ed7e42bbfdb5e51b6cfb299a39407c37af6d1ccec3f5501f46910cf142c277b17aca18b21af4aeffd02fcce7deee79ed6318a239663d0bfbfa741c70d6d6bc91cfe8d6bbc97b305e79b6da6ff4b66fb5ff0dfd9a39399e42dc4df995dbcbf1895cd39c354692436718bb77cbee4505f741ce83de1a82f3f4c63b21ce43a631f131c83dbc227adefadfadc4ee85a82386dfdc60ba5232059f232c675a7fefb67d4f77b12af11a550fae4b25efa1fcce5e04a2c6128d7340ee34127bfab65e1b7c4eb32e4c5ef0de3751f354729b8a2bdf0eec6fda1cb67fad8c9c94a967cf783ef5fef61fcf782edf3ea7acf9fe115f9242f9ac0ff48dccb4a66fc41ee63b3bfb232d356cf182631e59a37350bd3489993acc4f9ac1fc25c229a2388eeec53b618d6a4cd93ad763fca7fbd0a9b1fda09fd519c13ef27edf281507a3df21269eb8bef852caec6f0ddb1840e4491ad00717a80f162baaef97f5fdcb6eee7db00639206b9021b63ed65f0d2ffdb4d8d5f951e803401e55c8e3b84398c0d5c7d0f7cdadb387f9a0e8b3bf57630f6b4f2617b2866e69cc893968f87f604c6f7998e29a8ccb65f9fad2f6efdb5a931b6a9fb9f643912bc2d9e5c25e0b9c57b488f560ea07b2e7bebbf797b027a0a7e3ae725b4b84f6c2395868577b44dfef909c2caf4f978fc52542f932a1f266933470acc85fac2a6d1655aa71ca3f16e579a9734d3e1ae51cc42ac8c409ac3dcdbcdc972eb8463b295c1847167c572fbe485ee3466f7762f82b219c5176d0d7ca385d37c0fea0f422aa4ff4f953a456a7905ed3b51ff01c8165047d9b6f7b2486e09b5d684f6c738cb77c0ee2e8bbc55e8e3af357e7cb516c9dc2d66460f3f67943c0735f92d6df49da7a1e42ef35bd5046afcf7c067bfbffda19c7d677c98484ec170c62c8315e0de896db3e0415ff7fb0a7c04678116dbd115a5782cb95ebe050b539568443f54f304ee97578c4e6dfb518a7220ba35563db9e51b4b32708ef10ee9df493a93b6b4c84597926f831ce38860ee5df805c48c92f4f12faf5dc302780df05fb89600fa841dd5fa97a026cfdeac3098f3bbb4c55c97c2672a5a70eef8d289e9707ed1bacffd6512ad7498e7e0ce45864e62488f7b370e53af865dbcc3c031de12d9408e28e89a714e2e08fccaf95c5e588d7a728dfc63239be4c499474791079d7d62a17e6d9343f883984a13f56425847683ffd521db9534b17a09c11b5463fe97b357fabef553ce3f7723ef0abb1cebbb387e07ad5734ed490537ad24735fecf9edeccd12f3f2ebe54dbf2fd94c3b5eedba31f235c410b9ef95d5e81861b7e4e630fd76758cfe704e75ed7cf3cac39d751067c50eb1c7e629e78b1e1aa4efd835be3d7bbf76d3353089b77c1fa8e413ced7a2fa1f789e73a7e16401c5fc22f45f71f5d3b3d9bed6f39b0651b1ec28576551dee97cec6c5efbcfbaebfbad0ae1f7aa932b1e36cf1a9cfa94af2df36dfcd9f18f31df9a1c887cbc3beed0bb975edac281d8b3bbf13752b9e31396f46e6df30aec1fc56c87f7b0f1308d92e382ed1ea3cebc91e6ba1a34f9e88ded21bd76ebf5616fc1e124ff0d9ff14d237c893cce6a50d1dad13c70e38ef3b48d0fab26a7cd7b76a7c6ff59674ff06744fbff6b682b5b7ddbf5d5b5966c67021ff36d2a14fc7a1396c781d4959164f1ce49a97606f78f79ed1248475d0ddebcf889b5ece495ef3f5e7ddf9c819f3f1cd988f88311f576a3e207651e76f9ca39745ef6fbca3979f4ddc00daa369b894dc8e1cf93c57ec5ef908cb3d7876b2b1e7e8fab115a2bed7e7d3cee08495ee66a1ce5f37065712b980e24ecc375d4a49e1ea9374b958d57d9c643f0fd06725b04376cef6e85665d6c6b181fe9381fecdc359745c4adb7c391349dd4861be12f70d71a35c3626e27809170aef67aba32a255f7e957cafe2a4f0ae38be78d02aa053d4597455c766bebccaf9db28790e666ea62e56cf5ed570eedcdd43aa9414c1ac8c968b55e15565a1eae561b33033e5d0c73323e670b196fcb1f2ba93c4dc8fa37cb978295cbd3c2c172638bfc0bf9ffdea37c6b27829fcea1f8de5823833dab100bf90a9fbc48efebccf83d2d5b78feb2b166e70a776189df52cddd0f60470e5dbe8e94bed61ca00fb79b3d876f50069f719a70af8448fcbc25311ceca6a89ea43a833ed2776d5c0d97a875fb6e5d10e17f2705de908f58b6d4cec6bbeca8d0da5ea9393ebbc1c5569e81df53dabfc43eff74ea33aa7d527c228ebf461182fbffccfcb15af43c39f047bdb809d6b9dce8ec173cb646219f31272d358a6252c25abda38a737cb2c570eef4d0dd112df0e27888db9b3433e40b8057fcbc654f8304e5cc08c3962ae7ddafea66ba050df21b01d7ccfe285e542ab7a727a6dfa2487b81699cfe2046047840b99f225610f6ebf27a4cde1dfef4d5c6c812c739b57f9573803762e634dae0cdcb8eef8a28dc183f9ebcc3551234060edce2f904300e56c86c657d7f6f7f32a8cf81b9247702edb57318431ef857c36526b6588905bc8d220aec6bebad5f753efeb7e0dc8524aa8de4d468d572d8b95639d7288dde668555f1e3ff49292313f132adf160be08ff4f766a7bfdd78f915be5eaab7f116d7fbeda396db0d632acd12169f209a9fb116da9ddc37f97725dc4826eafb63de07b9d410ff0cc4f47de9f560401d09e4e44cf4a942bc1a96bcf829f71fd8ff0cf4288145d7bb46080e3c73cef0be2c42a9cf45cd8acf12dfc109e93255148d8b4c47e7fb6bc739d6a9e95d067a94de6ff730feeebc7f64859b57eed2c7eeeef479b0f6f90ddcbde67dc99cc4aa68e67225f2fecae2be603d6d7fedaf53b4b695bcdf7e1edb7c583327c0af01f667112f59cfb6787f9532f51c15874338f8377bef3a3a89de8718dff255fee5e95d3d35287f0e8d4b0071188d5385fb745aecb3d8cd2096bb4962a52bcf1f4d0e12ebda19e4a1ce37fdb91c5921d04170df67e86fdb6e7f50a5d679a0fed9a5175067e1799d76315ae59ff49cd73536543edabf52f9e85ffdfef30da377a9bfe63b8b07bec1973a66aefb4f6a4799fbfa5eed68b850d07b5973fc399c2bad7bfc887df7d7ea35e7a86ffe7c2edf0eb4ee06b644f76f8c1a64623f2e0d5158ce1b8cb2c4b3bddccfacba6685831c46e03b24abaaeb79fd439ff39ad15f05797207b0dc0eac9e1fe0f374ffe6d929c91bbcf3630a13eeecda3cc549ecdb344ff1ce592bc148285c474bbd575417d491715cd3102ee4be9e9f7b76c9b9067759fea62d00ec7ed72e0b1c5b2afcb884dfd9dd2ff2dd6707f4b30b6a0f594dad068cd5117cb5352e5efee1fcdfc2b11bb25f6fd8ae033dde90c7270a16ebd4433da9fde735d876649c751527672f4b819ca2752131cfc5e2e274e27030f6c1411b8e8c4dc0380c9453c855a349e6399404586359f769b63564f0df390bf7ab2ba7777ba8f3804baffea884dca883bd7a64adfd5d1f76ca05637a5cc1c8e27407ccafc8e8d322eac0bbe3e7186382f83068df0ef51140ae292164f586e31e11262ff76c7ea4f91fcdbc6bdf37bc80640ca793cfc5986197ee1e249e31227b74a12ec961cd5e8ba1dacd0f4b736013441b221edcf28c9ea29ecf02e35aaec535dfba4ab647341ef8f7fc637139a21af8a478e49ea5ce7f3b7a0a6c0430ce52d52f5110bb99dcc3fe6eff7f3abcbf5adc3d96dd74b96137f5f772678e369f2f7f91dfb212b9bf71edda5d2c84e1ba78866cf327ce71f8c731d8c8be3694db25ed4f78fea815c45febf69b25a562249661898a6224c15ebdddfbd6990bdc2b95deef352363a356b83cecbfe498a8656afe9e401c9bf63909896b5deba3cebdb5bd88fd979b384ebac9d1f6803ee10349037a4931f4a87b06cd4a6e40f7bdfaa3b2709de9b5af6388b3206af9a7714f3a81efa9c4ee95a827ebccab12bbcdbd48674f4332ef4ce8f8ca61e288a4d7eda8fc0e4656f248ce67f8f9a7f6ff2b221607f6365b87af5d27ca7dc73afdb85692d43533980b653d1fc57ae65aea2fb4e87e2d11291be280ae803d2e0335358c7dd9cc03e36cc7f26e66d608c62469ce38125f10713c90f29d89274f2fe23720dfec9a24aa9ec7339ea01fb7d4b99caaf3446b98027f13f6b4f66ac1e478088386fff681bc8f26699d33a7faf8c8f92678c11bdeca91d9d6dba37fe39a9afc8cf501c905707247d6c058ac739859853f9e327170185c05e7908cfbd9935193c3ede1e2bc8db76cbd8662424dcfa37f70cf9e135d5c7b925892a0f8d9ba086d2dede8b5b1167630ee89f7336439f2a47e4fd2707f538d9582f2c50df70ad55f11c409c432f520b7f7b6c53032b5bce650c435674570e5bfd5eb1cf36e94ac7d4ee1a3a1ef5c876fa3a4737e873aaa3fda382b5817a53a4d8d568e31e6707d1becff60e98e1b75b1759e13aee1ea6ddce131b8bd877a3c04549f77975fa5e16c66cc058e9134fddb2d17437dd6b5fc07bdbd3781b5b9cd59dcfe7dd2e32c229ef9f3730f9ce9a12418e102e355b1cf2d5403bd08f3606489b0068ecee9b7bdcfdd398031e9be8c0cf0243e309710aba83f27645d1ed7fefd07f61fc47de9cccda00fd0f59b993e408365d3af31c3d8a9776ab8b1fc33fc03d7d612ba16979dc360f04fe2da925e2e3899f07e8b534e70c6dfea4d62c8c90f72632c1ff95eccc943f7b57657bfe701e65b205fd2409ca19de7de7a11b61cdc4fc57b6dd34964dd403288d1b2949ee8fcc408e3ae3adacab3c56b384f332b138b9dbd3dd63d8a04deeaa5e1c2d34b2ac6adbece114714f7942f5fe7300ed1f0dfa11eb51a1f9633242b0ac69ae2a55ee44b6952e3d27571613b5c4bc3efc39c792b84810cb924c27999bace9ad36dcf76ed3247580bfdfb5f8a2ec628630c7a87cb09bc23c7b83a534f4f8a801187abf7603812aadd283d7bfcb4f2ec751e8c801cf3df9e04b1aa3ab1b1e65a0ed68857fddf21dfaee9452ecdb5700832f1b2a37aac5bcc487cbe387e1b878a43dbdbba8e12f9ce4a0817e5337ce682fb151cfaf984751a8ae177909d723f0bb741667dee9c75ee8f266b7fa4a50c1d5bbf63ec8f95af9d3d39980b257547e915ea165b483cfb02e30ad4bb6a6c76d13aef1c91c71867f7ea9eba78ba10b70ed9fb08a310622074f8ad3dbd8339d7c50c5dc835462dc1253670bec09e80f2595d60cef039e448eee182c1bac162e7bc1c516f23c6245d343c63f9c6519a1835d6ebc0de29fc6b5d27d7fd4dd54f704c4113b3c37a5e8fbe9b7826937714634240ff953a4b8e603dbceef3b81e970c8c97d1eba6f03bbb4cccb1157b63250afa78c238dfd5c54bc475b63384fbdbe73b1cc0c7cb374ecb450fec41dc03afefecf0184afc7730a670d70bb7ae61cf9e602d268931ec57108bb18707bc3fba7a52ec706d6d8d9147e0fad7b5bd39d24be8fff15af5b16261af04f6c7c0de86d81f1fcc796c7a0b78370b2bd7991efbe7661f6fa6c10f6ab195213e19e28cbf8373d7c6b4cf04b63ccc1743de57de033a8bf36c8c8dd8b1d5a729b095ebde0f20cf4b7cf6ab52d2896feb199055a1825c05f33c5d1e14c8171a8cac4d00e43e869c50e9875e56fd3c4ffd7cc4879d62ac4682a3ec5e4f21e64bd73291889b5b5b7f544ebc11f4b584e542e9e7a6da79a4f3444caefcbefe56690cf7461f1a9990788edcad955d84e765cd2d2da51c11374367a6489f2108531be9013226d1da4342a5a278f8d28fa333ac3f1fd8bf5ee651dfdae9636970fb6f9d052d66b91f637e642493f4b5b33de923b76bf45ad71683b34efb0e0e49c3d70ce414d6d2db601f33cf32c48301f7845263bc5418b7f135749411c677076b98b75c87176145c7466b59413cda56cd3110a6fe884fc3853281f5cebd9a2db8b635d67c1541de9af64c467b1aebbe85a7a3de80c0a6afc13d5110cb471de290ae7f875842709dbee99eac5627abbd77a8b056148ea5f4daf820b15f9aef8b433b2d3c91d04b5504fddd3e5766c3a97e5875eadc83aaa9a37fde184d9cf99139fe9b61039ddd8395fb12c955185dd9675353ef0bf7b3c7c293aa39bdba1867ad0e8823dccfd17d16ec9361e399a17781f93a60df7f4c7358be8de5012c5cc805d060e1fa573e1faab78778c99057feb9f1213e1697c88739b28ecff90decfd568fcfebb373ee3a5a84b9e3a03cfa07b9e66f62e0b235bd5691aa37f25173a6597e9696a18d78015588e1c9b3f4ebf5867e1dd2978336e3c3bd476c3d7faff7a80a0ee8bd3d9f7ab05f60c8cf68b8bd3f87af69b8bd091c4f56ad85ffc9a85130f2fada4ead4a7d2dc1ebffd7d298ffbdc2f309b1d6336077af538f6fe4f51ec63d908389a7777aa68638542a924305e868024f15e667eb9a257521b3f1587468bfe0585b2a10bd092c5d7056ebbe1a29a5fa72c9da441fcb56cfa7baba23b1f04c7c067d52d8a89907cfe47dffbe6f2ff3806c7b2c7c2bf84c7b2bc8c6bc58ddaff77facffc1e8f661435ea8060769fde9da650a7539cefb37df3df2326037d8afdc85feae44206a33f28047cff15e39a28e10eebb83e728c4d9fe74ecd6536c7fa756a3a06a2c2c468d45caa853e29bba8b765de3c135ad58ebb9d3596bf9cc5ec706db1be1a27923ab227d5d605b7e18a7bc6fd3069985c6c28a0d892f473a6ea370aa7ea7e6ad67ebf778e27f75f553cb238562944a1a8cd6912f994766bd42d5e332917a7269a7e73a06ef8fdcbaa6a3573fcf5a67eef236969f09acd75f01ec9f9bf841ca9ddf5ff9b33d56c2e561ffddf062c0715a928bb0b2be28799e95f89e44f0d353e5e893c972ccde0f6dbcb991fb5f685f3e11f94aefdcc9215e95b92a4d804ce64aecd15cf9d213f4ed760e154781ef66e92273165173e31eb679bff69a55e7d8f3ffee71ddfe62f0dcfec2359847e4874ccf4dee07cb443080d1aaea65857dde08c5251212b33b85b5dbbf212b0335899d7aa15ddb7339d0bf3e7f26aef9e5c2b8bce0bb16d7e49a0c5be476b349853835f6c79d758a609f9c43e9855c3d0cc8905ee25e1f057224aab328b7472290bf13259b7af2df0139ce97520a6b47de63a20778bee6c0def46d61e401db5882e765624a428ef0fb9ed9b256f78ddb611aa484df48e1673698c525c923d91d9b222ca574d03feed9b843b55edd33ea968d6c3070a75a9ddbf418353a5447f1ac0fbda4f46cdb8784e22eb7307998ef226adcebbd10c2bea90e9e47c5f00b209f24635d1eb35547cad961deff406f8e9456756f0e034bb0c54bc331b19db36df9dd47d6a1b6c3eadad0bbbdc1a970f5ec10e7e6c22bc40692c46ae39c32203f377a68bee9f58a527774827846a1e8017f227da77b027f5af3c4e297ea7eebeff14db1edd4b6cff4e8d9eb2fcd9e24e642b33d47e13c27a2f1e7240bea37f6b89adab2cf9d647dee38ebec8953ce02b6ba643dd1d87e516a8f4ca286420c095b90b4ed3bbda7b76cd1bb1c3754ffe95d1fb7c39112c477e6532fbf37c6fc977f2df36e9fdd738d659ddb2381acf139ab7acaedc0bea91017831eb7bca19e3d4982c5f67bd7e0d8c9fb6001f98d3a73294b22e4a4f524eb499ec95f7e55c4f26b7e817c6f880f60487e6fe2cffe3f90dd3e3e791b5768b9ab3a7bf837e3c61db91fc6199c60dcd954f0ecf2eae9d37bfd561d79a16d20365fde60fc62b1aa39cf18bfc1be117e23cdbbb842fd1e9257605f5c9e3b7563c6a9207b38d17ebd85c319e5b0f7b582b5ce3ff299dcbedf237285c7f299fa5883295778fdbff11cb441dd2bd001fb4cc95cf0fe64b0efd95e0de1a5668e5e1e6efd8efade5d6137803f6e8fb470b9486efcbefd5a595cd77f971276bf318acb5c965250847139e96185b658d6448d910afbcc48bcd7b4c10355672d0fcf1d1ccd2e4ee9ac3ca84e59d7627531b4fbfaa1ad292b767a395a2e92fc962ef333e1bcb4a10d92005dd57d56cd4df9f225c75cac8e822f399e46e03e393e8dd44a3ec9f169a2c23a5ca16fdf21f9e5516e7e0097e4c13369dfe26dddd78fc7b66f1fe991ed48287c49bc0430ce9d0e8f956bfb0ea858debd1e57bbc3b9ff904efc917fcdfa16c9ec9ec137b8566f9fc143ba0cf79d4b4f842e93917fed74d6a3adf7d523e43b4b133f8811b6863d96bf5629c73cef7e8227db606b75ebf62f18636818c71cf7c6b7f95f945fa730901772cd119713b6400af6b46c13bc16d2530f8fbc83993b74a6b7734463bdc13a268c9b5ec7db8f7e9cf438648f4739c33cfad2e4db8f79e80b79b3e9673bff78cf8e846a99e13c07cee340ce370bdb6f55e4a3f99c84886b91da133fe9ada3bef9913a27e4178acd386ff5b7c9128e153b5cd1f2736929acd5a831f80f5a0ece097f2c17aed3d4465c03ca671de6100816546dcc7790a5879d3d897c11d659f6aed79a585eefbecb4aac639ebdd8eff8a534917fdcc702eefbf4fd679e76f6e489ee93139fdea9da1d3ef70f0975bfeb4493fefdee48a8fcccaab19ca6c14189def53da7c2da85b2c0fca139e107445e6689fec1fd63b8c49df378ace4de283dbb76b985b95c827b6bd3f135bb73e591e7b3c19f9792f9bc315eba7b48e28e728ad64596701c379e9e4267cdc99292e27df5b7e728df729cfc5ae973c45fdb9eab9790c04dc67821f079ea627b7e9f35fe56135b581e12324fdd910bf41ce237abff5bf3bcdccf526013c1b56afa10c07860fd01c49e30b6a6273a9cf566a582688bd3a991ae15839b7c6889f86acd05fd862f7da57433891dd2c4ef6fe4f7319e8d0ff15dc05c94e9f280ce111c273bb9ce1ee8b8a7a564c2b9da3538da90f715cc55e1e99309f4d99ae7894ff079b0fe14710e7765bf3c3758c3f51e392804e7211fbd2f92e75d6b437d8031be1b936f842b34efd4cf3698944d5eb2c578b224a10067b89fad53732cf2aea3a428f74bc4dc248bc3d8f7bca7ef23559a67ca61952f678a84b97763d7867ee4c8b3cbef4032f7a1645d43d87bb416968b35ad8bc9b5a7eb79badfee80b9e7ce6bbdb3eff1df8bcedf77f66402ffae53d7e3bf77aefff4c7cad97314b0b7db7a7b722d7aba4665dd6bb1ee4dcf0fdd9bdebf177c13f35efefe98e1bd0e57046376dc0de110d17c151d9c6c83e8b7e8e7cff0d9c3dc5b33b49fdee216873c58a4f5f9720c59674bab6f3efdf174529f2b906fa9d693af62fd8c46870fbd9f7e3e4337cd60fd2aa52f707c731823638ef673807c8f6338cbd979b53865ed01ca46bddfdf24543b3b04fe63612e34d6333b73c6ac37d4c17eeac76f274f2ad245024bd7b3e606e1e38b9967feb05fa73d6b090ce375b54cd7532db13e3473623b9ce59a73f1cde4d28d910ad2d65c9b062f0fe5bb7eb57fc7e3c1355176bbfe1d9b6779d89fc2017b6879d87f0dff96dcb82ff902e716cdbb537fafc7d683842e36a5f4c9b3cb575f12aea1a3f4fb9007f0516e73b0409bb8b976fd1d6493344851af38438fe5cbd93ceafafb0cfe8d780f7b7d1f8c37407fa06f9bc198143daecad11fe18a495b5c1114bb60e283119c662cbdcb18d33a7c2826d2e177f9adf9bf32e75fe448fee6c1b957755c737c53a7af4d7f54a641269edd9165001f2cc8faba0ceaf91a03265ae965b5d149aca9e93f9b639135c762a8ea9748d63bebd7e1a9f99fc956c30d2533d6943df74aec1e117f4ff7593f1fa3c21ae3f54f8d31f823635cb3c678b937463f76b3e0503e93be3fe18fe61f8b32a5fa8fa1dd9fe4983b883a6f5c5b4bcc11ea99f360cdf82d596661f19a47d89b32f85b511279d6a61fbb878309b911218fd28cd9d37924ea24a99a7bf07ed978617edf4f7ab0e87dff400e74b1ae3ef4920fe2c95d9f0a3e6fb0d7ed69bc7e2066118ce5226c6316c550cc2294ac533067e2315f3dbb04f39a7a0d8fd116d78287e70fe354d0f69a558031b1ec905bb1c4b7d16379bf811ab4d2314efd3801ee7781f1a97aecadbd7b58a7be84fa219a1a75c2cf46dfddf035b0e601d638f8349ee1e3759f52f93b759f455063ce4b6baa86b0a9172031b7876329d4f5b06ff2200bef5cf41d8ad3fc5db20ab8e7e722e64dcb7fb923e1ec65e9217494c8cdcaf40dc62bb95f6e7f4f1cd667d779f92986da0f303be0f3219f3d8c53cdb852453889d7bbcf7fb00f7149e1292a21ae13056b65b8b6976aadcf8df2c228e6750ce208f793270c9b1163b41e44de7394892a25c5fba82b3b6fd980ec70a71462fb65e975e7680ad8bf9d6b6b6c12bc17c1b3fd2a153e74f05f88b5f8ed49d6d49334c8a309e4985abb1fc9f1805f755b8e3f830394b5b32e091cb6bb0d3f132f5b6cd3dcd681d323b8ff9e0e74c7327847ad038f8cba6ee2dfd35445dc5d242617610fb67b828ab14a6205749146700bb1ee23f25134263ec46c22d6e6958b562d4f325d7bc6c8ad5235aa29b1c79b79be90714dc8b3ef1f348c37f154d0d7976d9d08c2c9af887a3a0e9cc59e3ef940fca6dab7c33f0b213c6b3b6783d0ae15ee27d3234e89bd5e3f31751fac030fc65a15b631d97ecf786fde1ec1c622ae67f48adf3cc7605f03fb7c6af7f996ea5785e7cdec777aa445866e9a868d0d75d0881e39ba07ac239b3aaebb6f6201d328c8ac33ead9316b3ed47a9e8efe58dbee9c28f589ba27c80b34c097ea8cd22bec8b30c5c493aca4c50869f700e68dc29812a8de4e959e806fcdc2d5f9811e62e252dda94b83b888822a41be9be427799ddd8d5a127ced83bcccdb479f89fa1916dc2f8fc257fd0d7e7184c308d6fbacc41eecd108e2b4cb15f4fa7f88f3168ef75fe2bd3d74eb2b6ed551a8dd9e611e62041b9d98c5adbc314fd4e3dc5cefba2ffaf6739f8ea18e30bc98f81655a77623853c63d2d323d756cbd739b40d28597b8ce73561c52b6fd55fdd8fbddea85b1a33c7f998eee02258d74adfff88fed09abad6603158d77af1299b809127be9da7adfb687a795f84a355fbe5744f10aac3317faf86168c9beb8d19e8a09c88c102b9bcb27b69090e58bacf85c33c0a28cf394b85b7f174b086263828404ece5e7f2d3af5d2d333d1cf0efbfe83a61e118ea5ee09fbc6bd935c70487ff971b7ae088cc51d899c3bdac35c0338f3653d827597648f80adb7b514b0c7acc6221b6b913b3a9901903b1dd9d70153b618e31cb6972fb77a383bfd45b6669035422aebfdd0779aea3077782bff5af3e041fc8a9b758328cf34bec1b501b9eee17b61bdcb72d1bbd6c2368688af596cf30fbdbc507ae4de58589c19e30ebe4382d79fe6b047fd59777ad79f1ea9b5e7101e438b19c49eb73df31b87e6e4477d3addfa312a3ed2c3b618ea914cc91e496a7dfb6bd6ab1febdb3d3b7b82f96fad6f0fca74dae180a36cdcb67799d1f39b08abd753be59c8043e66f2a53675f1985372b1aed485e2ef2c6e48d7923642f38d946e8d2757e09faad273e1c765ae025b3a66c72083f4943b7a99c33ac605add73a7df9c3bca9ccfd4cda8b4d3f618dd570e35cf09c60ef82b9eec93a3e97813f7a54dbb832fc56b3c9ab92fa3ebdf94d7d194763b8d3b74b63ada403f208b94b9b9edd1ae306acb1f4f467d677210fe8ec9ff5c9b075febd18f1b4b1273cba4fa6c5894b05b09f616f3185c944704cf76c880ebe128af5ae0999a1710e681b451c79a6f5e48eac0bc6ab47f6c603f8e7b7e28f60df6b23eb1bd81b8ff68034fa89eeffe8d7a392fdc8c4bc11f9968395999258b9360ffc2ce1432f47c127ff6bcb895b8757369639990fd5392de7eba9290a33cbd2cc3bd748c65cbc778d615ad6d44cccbfdf47eb6f3ff3726f6c55aead149e718c560bae304cd175f8a9ae996b05e7e7e7ba192a96b81ab88717de46617fbf0259c83c4791807fef8943fd781d0c01dc9b25d73d99358e4be2e9fb12ea8e198e8bc2da05d88b599fb955d0ca6e071ba5c67ab36ee092214c19741dc65d80b9a4462e6b2c242043b6c50587049c1bf81b5b9dd7c8596b97429e7588090ee30f83f3a47bb6c6bb232b217ba9a9f83bd91373bddb47d3c32e08ab65c24f6d51d89a89f5aa5b3827344f17baa5196f23f33f10e351e74ec0b700b66b38bb3d3e741eafa3505a1f55c81d86b0d03dbd87853e4f53a2a63f05fea4335e47616689efd23a0d16b8761ac6d78918d38c39f77917a7b6141a3b79488f1cf8c7f20203368287e2d7cd779b5dfdffe0fa9767c81f6ed7320db99371dd14c6224abcfc5deacf31c2cdf2a8187a63130ee34211310da083bcccaa0ca256b58361a097746cefeedc5f7ef5fbb4da39807bb5eea79dd4bd6e0c5c3c6c1f027f0ddaa747c4a9aba5cbc453ecb935af6bd0ea6fd0b2f4c9b3b5cef8c31633e7b6ccce98fb10f8985a688b499089e7b0c9c3690c7fb0b6cd15de4ba75190892798c31bb81ffb1907ca06bfbd1e94af0ff7239e6ba41f95aa8d579163497eddd25bed9e7e5c6f3de2afea71d75f6dfc72c74b3527fa8438df40a7399ac09a0f281b8cf13ec05fd5602113b66b8b6dd73eeb48c40b2a0a538db5c7205ea075f6e6eb2810d7dc7b1fcbe0b63c887ea6bdbaced4081729ead966eee39fc4a029b97d24177680b9b0b14cc81c336ffa00ff5b3fd6dce17a83e7b7379629bf0c6391d13876704eeee75481cc1907ebe466c01726fafce3a89f8fca95d8ebd9817c8f9763cd29b11bfbf879f22727c0b984bff5fb7a87f2b9ac9c891236fe821456140604596fbdc03180868f1cfa60d8068dce0dc684c8c00683672e853151f53126ccd153a664b77128dcf1365362e51cda7cec3972bc31782893f0b7def70e7267595cbfe7e540ad8bc815fdb9ba2113d0af25fa64b9fbe736bb1f965e9f55ef6feb70b9301f5c33f3d69a45aa5ef22c7da12e56f97231a8df8e28775eebc326c669f4e2996c2ecc9a931fd9c5a27ff0525f122e755ccccfc442453d0be632e3a3f759847b17c438a8228c63c247ef22f2cd71cf43e41e5635fec9da75220ff2c0e35a68d756ae355e9561a7671b611ab29e9bfb6902f151d4abfc5f5532ffb37a15d2b7cf178861eac73dbe60fc7c5f120ec0e65972c4bf5fe717b55bbfb5c763bdf8e3e0b8325e600dc272e155cb04fa39bac15b6f1ae2a21fece732474f67d207837e593c79dd5ad38f6d6a99d6a3f773de6a6b69e4fba12f76a7c6c0f0f1bbb4a49c5a0bae080f321ecf5ab34c51d7f447c78faf77d0336ef870b77bd65ee7d5875e6edc2c4f617f9b646510a70cf70387529a0655740862304f389fbca0b1c6c8de347b0475828131f40c87656318fcc732994446dca955801c14c0777d1b33b1587ec62f950a9770c115ef6c7c91417e21a6cd319e72f6580b3ff472c2a85183fb6267f3bccfc441ff47b10c6057ac77f60472b2a88b2d1a0bf453eaff07bafa67fc6e0fd67f747ade76cefa0d71c9f531f2d3f3ced172d72e21ce28f67bc89c50b5b1cd3311473afa710231f069dbb3e15784fd443bcc03ab3658f7bcb05c50b2d1b9965963718387bfff7d1b7d7ef987f583f730ec2e90eb0df920dd9ad2c536277b09e1b906cf18baee95159f0b6713622ea394b07f89fd259267ed03b56d6c1f993e7ffbb8154a48c44691cc32bec58f13b25715c81dc2ea27f3f6c07766eb11227752733f73d18a2d27100794b8f79efe68dfe330f408fc163e7a97d25368737fb02eb1eee5017a457c827a458fb8566ecafaff81bdfa28bec80ff912c8da889ae795c20e66ecd1a420eb3c824f3e5d661dee9afc6d2cff8721bb4dcd04d075a19446be94fe0d641873e8082cddfb931aeb8173e04efc9cc09972a8f8b9f036e2ff494ffae9b77ad21d45584a3c99231c96e9d17dbfe1dd91effa0d3af01bb29e3eebfb1fd52dec4611e2f8d1b5af37ead0ba18c0459d73f2464fc50e62df2524a6e269659c7284a120d3fac3591d7d94433bdba3e46b65710496b47c7611d7da3514510e07e8e19a7ba039dbf5e87bb9d8dec8472afd7ce42488ddec4ece520d67fd6bc4fe35468389c338b7039ac7b808691cd15f3efcce3a8f4eee498469ad39515d4ba3438c5a30e755c97779cc2ec2eaf5546cf03dc047276a70eafb7ef990377f4046f528eae7b1cd2c3d7bdcd3d1afdf398cc3f95bf2eb3e26bf5847f67d46a0235d863cefe9f30eeeb7d5beb77ecb709682bd4ef02fb4b6905b95d9b2d7b3e056fd787acedd98cfcfa5e416bb59f2ab3d0ba24faabec4d992182bc9c65e1501e4507b79f630a74268f38d5f0ef99867c9af00ac656d375ef904ad5d1b9f30e2e8a21aa7c1eff3f0f735fb66d6b36925069692becf9792fba7f7dac1a7ae19de6b21a31efa9d85cf4bef49863e71f3b771d2d727a7e5c2cd3f6a0c6751a886638dc0679f721ae2ac827af0dd91c93a4f30ef280fe968cf1f384fb294946ae39c804f8f785de6edbed7b2b400fb6f387fc847ef733ef716e81bda35b5a49d5d729e230fe707791abfa8a951b0c527c34e9300e17b0e9c5d749e3024f22ee4f7a25c827809a412c6ca960bc69c6199abb92d1b1e265b7c32fbe3d0f7b017d319cebf80e7d435ec0f8fff7df1ff7afc5eee6737e79be28620d7acee3520f77648f6f6df5b5fbd53bf77023289e411f31c12cf658f1ff3ce60f9adf161efd77912f3b8603df707f1789192eb47e2f11fc1812bdc837c66ae97e9e5fea2c68b1d8efdbc2f14b89f97c9dd7d793be6b3081f89f97c047119b7319fe8b775936fa7677381beb7c6d327b8e20f7d9df5368efa739ce1ef1aae6b22ded18f47a8c8ce669e4d1dce0de05791d84469bdf7920e8e51f39eaeff77648d05c8f13bb36e07ce596ffd289e6bba9e9078ff875e3efdae3fe42d602c8bbaff11ff03c821b69dc737782dc8fd8df39769c59c5f86cc7875edce02c5913e8cd39851b709cf2f16a6421bf331d9f9eb96b3a71b7f91ccd3ea664f71d2600a9bd5fee8c79327752c9fdf67c9f72abe807f4fe0bf75f0efe44fcb67fe6fc86748ebc347eaf1a9f5d839eb36a763ae8fae3d39dce2d65e31dffdc7f6063dbe07f78675807b8396b707f646386ef68678636fc0b50eae1df9161f94effc7dbcedfb17d087247afd4fc1628538ca502d02f5ec47e7e21dcd053db607e64273146139b7705e73faed2fd203ab2fe35e2ff7608cd520df2553bc4ce1ac84fb5473b6287ffa07e3e2042f0bbd16af42cd9b97aa469e32fcb04cc94cd8afe62f9223e6368075e0aa5e9e5b7f80eec7ee62c2a667cf59317a3ebdef205ba79ea87d77f014af5cb4d22fff2826e98ccadccf2c887ffeafc41dfbef216a2a77ce5af2c7caa7676ba6cfc1df6bae64c13f009f83ea1b1eb41b7a798da1e766ca81da6ba9a77770d2a99aa7012c4b563f9be13922efd5363bab7f00ad31e61b34f3655dff36ebc7074eb0f7b5a9a9b627695021be0b88bd27527303fc09f4dd565f4e06f5d60dd982dccbc6efea191fd923d4fd8fe81973aca0efebc525fe0d3dc35c6f9a97c9c0b9f4155a07e0f7a4c21fae3f6eb9981975770f8c09e2d4c27c5a3377f59efbf3f3668ee5163fc301baf912ad1e99939b5c416e46f5aa580c4e9987fb9f7f0b0fbe3fafd552327fcc0f83eb72627f24149e2d9e1fab517a1c27bee6cf216ab7f236e680f2f4411c454be9199c41d1c3634efb6b23d63c4e0d46259d3ba4d78318d795aa331c6fff0a31774f50257f03bd867bde911d0ed6594ff2e5c2123ab5fed73b72357b68be2b872567b8274a89bdad4aad4f1987b31e2f543fbf0fe4b41fb74f19f8f6745f5536d0c772dcd86edb57c577f7b42aed818df0a9127cb5fe02d6e1c56e267cfb9215f9b12c6c1ca077e139d71fdb6331f67bf22031f2428b1746deb891073ab64ada4de2ba52a56d11cc927c296942633bcd859bb6930bfb90b42838a47a6897e9c69972cb44586c79c1d0d2f5c736112c23d1a6669a7e98a9b5d23a79f4f44ce11b1facd3b67e6696a6754fecf2161e7b870fe1f76a44ba788c5b068eb0c2fb92b9f71deb1acea6b1a74fcffee8e9846c46b9ed5d1a215e27d75126e6c12a3ce07b3bdc2f83f2cf109723596fc69ae73b717883aad9b4783adf31fcdd2ccc66f85e84dd619d828506cec1d6f79f773824fbbce8e2fb0263f5a7d0ee033e7955f7aafa88273fd5ed49c3a76cd6369df484f0d817d0b7509689e55a734bd74d4127ea643a7fef5e8fead0b696e275af6ffffed6e10c4379cf9a9b2ab4f99667a01e7b9307c5f94d9bea9587793a2386bcded163dff99c631c623ceef4eda1ef6caebfff9d1f9dbfb7cf7fe42c32abbb799d65c3a9ffe8998470f679cc41dc60a2e2793cbb90f7be8bf7a92e56f9e07c60dcb48d630e712ab5762694e375e18fd70853697189828ac0dd87752049a6c4e295c0dd2becd1a5c38ba41ac2359c81670967687be9d175295df20dd7e149fdbbc3a5fa9977d7e5cfccffae997f467e7550df5b1c3b37d8e1295cddfe9e032f2ce754dcbef047eb08627da44d6c02ee8b9b18add8276931ba3056483689fc19e4a22731988fe12cf92b186f9bbd8563ff8a8ff72ac41265d73be46f09a9b314d6377464ef116cd97a1c180f3ceaebac0fbddcf47db0d09926c89f85f7e6fe68a2f899f7cd884b51ba01e22ab67eb6d2e06cbe22aedef69c25315326bc6f36e751ee39ab2f75cc15f459d4e4e356682de95ec365dda346c7697644cc8c0f242dea3c2749cf5ef65c8fbd959566add1b355bda4e23bfa789bffe3e792b6012bc6344b31669d75f124701eb71ccbba3dc9fc1a7b85715ee3b5efd41b50fd7ba2c575b8a03ef994e45aa96b3f9aba7660f35490078de8974fea5e7b222efc740cdab8f86fce4fd2e369a5e6e7ec913cb2d2b3e08173ce78f9e51ae537c6cae07db38915e458ff46c4b979ddd8cf68af37b5fbe99b0ab9e031cee5c0be5017d479da9c17e1acbcaa9d9abd88151fcc3b7840286766fb0863821fb0ffe1b9d2d8ffa30bd8db69131362ed15b83f2eb0d770d0cea37960c8bc26ca15d8fc255c2447d510bae75d46adcb325c94cf74af68ced5fd7e037396aac691d623ad4d7e0e6d7e06b1472411d6ad6c8c173a2fddac13c6966def8feb7bdf2d682f23aee3a4b589db5a484a37c1b387d0637f0ffb044f17820302f911b7cead381dd6f98fd51752bafc91789ad1e6305ebb398c2947f95123e11448c219d805746fbf7518c02584fc24c83fba1593df9edd9158f83306b61d8feb6093f4cde4d2b966095333b1a64bca17276ba2fe5d1ccfd697827beddbcfac73f8caa71d6e4a0ee1dd91b888c1622b04d04699541be7a418e95ad1e6d6c7d652c4ad318c8fba65e4ed747b72ddd95aba7594d4bd5fdf7cf5ec10633082f3785df5e7f3432f5fd93244d863f7df03fb30e8f176e3b5db8e2cddabe920e678e8d96d4f6e8d33f9f87c309ff9833a91f96f6198be420cd2830c7482a19b9ae870a2ae99f39bf51c4b43047a22de65100f32f16c2ff7330be3772b1cace303e3994f2a15d732eb376a29828576edd46370541dfd703d463f2f21e6645ee21276f392ca3fcc4b52f73fa2df7498974c9bbc2478279b4beff762320466276d73be0aaaa7833d3a39f892c5f9a3c90ae6e117dbfc2de98d09fadd18a371f66fe60fe835db8c9e9a9c13e31cf780edece9dd38aceec8900f6e294d84ba667e77839bb9b1430eab8771a5fdd6d68239c8b7d1e961d95459ebb1289f59b934704e53763d8af7b2c68fe70aaed56b00eca4d79782595f32433c0fbbdfd52de39c7398f73f822d78aa3ef4f2abce5790f34fed637c1632f2065c2f6ff005b1cff4a4f09abcf5f466ec15d7f6f47007814dc3a3f384a84d27ec38a097f098859a076e43d4919d76f684a8a96bfd219a8b2e3d9375254e35596fade8c34ac495659ac5bfd0ef856adcac13b794acf0fe374ffff7fd5923700e63eea9b958059938515fe51cd68c4a17146326ea8ce01a5ac5c531f816ef093e8387dc59c4ba007d7ec2710db2f614d63d9b546d5ce3a7bcfaa309e7dae91961e611f3f3c3febe76cd3adc81559f3b90ec796afb24201e72b4b327f0b9646dd66a5676ea593bf2675c1a7c14e877db68ff13f7d375693d7f653b12cea124e67e06d78bacef2dfb7d287fec5cd0cb6a63cc4f9e5ee61b93aedd517b6bed591c8e0b27e76094feede9fb7cf3f942c49e4f751eaad98f042e2cdc17f6580931d674df571d9401557a2e76a8cff49fcf3f595397b4ef20fc7a3f4839c1ef722c0dea1b7b64851b7b827824c1be59f08fee673007bdbc5b3f2f82f62623ef08c6360e67093b07b708b91ece70c490872b431ef8dedf2a472f8b8df1f2cb7f2da3e5618d6a18312f38f1fccf8d8dec5655bae44bc91556afa76cb3583572f236726b6efb1facfbaa405c2cdba317274548f2d674f5fa738b49ced6b37dccf11ff49a601d72b7dfe495ee49a1e2e26a7bdef6fb8980eff958be7429054c3e71759640fdd88d2bcc49bc760ecbf97710d7f136d8b393a83ad5ef499d9dab597901e3dcd8fb2210c199876a63b763f9e8cdca43dd07fee170c50d5dbfeeed2598b366d6f763bcf14e7d471d975c6c5bd94271c80ea73eb2c7b6c7204e0affca5dde46cfcfd0167772384f7ed5f639b9068f6caa59f43da09bba63d6a37c29cd0bb297f91fcbe3ed3993808f74eb5cec6047dd38d33d83a7ea953afa19e2f994e78dd5ab29a0cf7d889fa9b7b59839c2c3ea5d2772106bf5ee75b047b38f35705b66304e407b2e37f1f1ae6e0772241bf36e3d35f1fba6e5471fb05f04846f10471c927f6c63e23d40dab6ad2dd13f5fd2b3e7ac515fd66275f4607d77dbffdfc497bb72846ba77e5fce362338d6bfd585863852716c0ee8969ead4cf4f490efb0909cf08d9f7a5e2ee482a843afe3fafd3dc22d67f3cb3f38b3ff427ee2f108fbe0db79467cad648c71484eac66ccd5524ad0983321f766d387e40573996dfb71073fb32288bd46da39f7f0490675c97e502e099b44588a14662e7bde59317c68b3213c888dc14319a6383846e65fea03b61190218445f0806d0464cc8172d772c8debc7e5a5f3f20ef443e23857b0fe3a1b074e724751d250dc65abde7eef5140cc83fecd9f01f18cfc561e0d6a8b3a1bddbfb16e6bd69c892bf211df3635fa9958b88e06d195c1f5a6648dc882199797ad4cf7cc417fa7d1dae53dc24fd7d499db1ea2cfd376cf9dbf875a8b6fb76bd94f8e37aa9618efbdbd8621d1c9fba7e6ae0da7c7360af0d2d376dae99dd7b85302076b55dd6ebcb823c69c027b99655bb065cf9367a26f2d17301f69ab6fb0df74403dbc13ceef4b2b24742b85c28be5fa1dc11f4058c01bda677fb0f49bbd8ad393cae0d66c531484fdf0e7cc733c49f5866a8bea7d147b328578dd319db136d2c517a86bc3358bfb5f6b57eb92ca504f5b6fca93dd0f155ff87f23b3fb5f2cbeac179ac7e16c9ef6d99ece250dd96f5df925fef93e707e5f7952f867ef35e814fb27df6ba982649cfafbe00390f5ecb6347cec72f849c077d3987f61aaeffcaec91162e25cff766f0cc3eda63e067467e306b65debbfe5ce6bd6b839bd0c8bc979e12472f337bb44532bf481abe4f15bc53e48a9d78baa89043b83c6d1c97c24e08aa68a21aa7cfdebee097d2b68031483d295cbebb37fc5979594ac887f8d3fbe327e7efff191f16c67692815a3a1a0ba67f0df681af9b817924ebbcfa721154655fa7e5cbd7979a7f8aca8f2ca509b2e7a18db0ae54695eac6665c4d6fbc99f3bff173ccba64e6e632bb53674df67ae7b3b3704be368e9b974e8b8d0e65d6d7f731b27da607127f05f622e8d3b33fdeee83b1750924a10a252b91991ca08d7f7dde396bd177a6dcbbbecf899a133c3631ecd6ed3c5fdeeec63786ed2cb6ad7ddb4fff7fbe1ffe4fc5747e823f41c9e7237505dbe080deeb0df45363aeed763fc0de8a69856b053b6766bdde3b67edecc0f7dff635216e6d0f2f781b34bff59e6d5c041f8fb5f1a999397aaa160df5022d645cdb35397bc0c771d66d7c097282c133d41ce4651c4fb98d75c2fdfda87fd8e43926d6a2534dde5cf3a960e1477e1827f36edd8c73d7fffc08169ab014b5bb58a8742d2ea306473cc1dcb145737721ecdeecdfc4316c308ffeff8463f8fc9b3886946c74ae6562c8dee8237218f897afa71fe1c13eda63d3c1e91499389d644e14af2d03e7b48373d4c1f3eff997096b7f950ff7f9351c4f54aeab62e4ba722ad7f508662bc9df7603b33588d998adbb018c56969c8492d0f4bc0ff643eb13aed7c77eecad5b1f6f3567bdab87c974575711fe064b6775f0abfe608f71c3bfdfc13a9911df3a23bef3dfe1822279b4ea35a4f2cb0c7d80fbf92f0dae7bc7ded4a3b36a9caad60725ed6d6f107b7989f9c6283dff233b63e0ccb96d6798c1a1eebfd4a81aa00fe334ff27f8addaeff09fcdb5ea432fe703f83a2c3eb4db310f51abfe4cbc6e45faf48fd513d1b257213d863818fc18723fb37bcbdaf858ce8a8f0531add7822aca613c4c4a9b7858134703f32909d7d6beda025dfdcb8ffbd88e73c8c3fd704ce9a1f9cd1f9adfb68f839adb7e4d43096b1a68dd3f2437475483c0ec1be597b096a88d07b9d02f593de37b867a363fd5aac8818c33315a17aba11ececffa9d3fa85f301fc0cafcfc092e2da36fbdd83162765eff6f3866e7c5740da66a6a4378a7d952da175e17ef3463d56b0ece27c44b2d936e9f95cba87325318d5f042f2e0f9033ed5a5e6ef4111d883ea2d1c67961f41105f91b37f87d23f47dcdbe497a36fad1637098c2f8e2ec0fef35293cff60af4d18fbeac4d0591ff49ea4f5c93bd0277a4f9f88cfc5bb9e36f5c5c63047f661f5dae7ae0e4aaa47a58b4b6812758b89077b29bc89765022b8877fb3f673f54a725e833158c272ceff435c562df50febdccbd2d49b2b688c88f79cc695fc1cee2131d8676a27367db71763dc60943279753ff472c5e2ccd024eb1c8cd2ecddf42a1773bb527e2cf4dfb6ff5939e573f87a1156333a6ed67efbd37ee7acf67e26c0da6d79a1447e16a6f26c7f597ebeec97fa4bb9fc9c863281cbe775c6b012c20557d07352ef5166cca41f43da04590af465eacdbbf5031ee917215c449ab3da14aa1dd8679295743094496cca66be5361392f1f8f570ed61f103883d7b6dedabbce73fa9d3d0e059dbdbe77be879a47600bbf375c21702fea98531bdad64dcdf9426e793b5b6e84ea066e20c941dc5fefffac6644af2ace4903ff7fe0fafc6dbc6df047767a52d4f64e8bcb9bdcc1e5e5596bf6cd92997bfbee9ecc0cac29a5fb545a2e9978bcf4bef8493f14f5cd8ff8132bd80f75236ef9008f5d37a6392f199c5f65df4ee9e644700de5037186fed950a1b301caf3ea3e479a18aa5d5c2f205bf3ce39d4ec99a4e8fa8a7bd4c7ebfc338c61f3a0c0b309610cffe08cb9f3dc2decb9bad7a35656e0dd758f9a79183cdb696c59e0afdec096b51604b6ac637dfa529a78b67826afd11614fe2cc961341c7b68318c85375ef9d3d8c5833ec8ff02bbd83cfc6bf8acfa3fc42ea6ee7f082bf0d0f4364f0773000c3c6b527e1878d6268567cdc08732c7566c8eac43f00f6c492467db81e7b2f9f502ccb9bfd28554d553e18d131f945168df349cd38c7a292217f74ff094b963104f9e96f613c451667e5b557e6fc0397f484e10635917c8de7f23b415c3b3c3eb529a0babd753b421fbf5ad35efa6ebd41baf7eb97a9b0f0caefc7979d87fb97a9e434e48f0dcd1fcbf7e5516785d0d75b12a42fd611ce747f76af1e7f72a3863a975cd034efbf6b3c1bd093198b7142f527a257cd5d79d2482bd950cda23b0ff987a77cd2549f9373fc5eb678cef41bbc383f92efafe47e28662c3fbb43bd0fb02d9abe41a7a113853487dd8c33c0067960d64a56be3ddea4db424884b41f9b1f06c26fc45b8bf691c601e8d69a3cf2fedbd561524fcd5bbf69f69554126549d1acdeef3d2e0a07c07490a6c31d42ff2d97f467a06f668db3bde7e977bb0b2ce59e194cfbde7637e66f01df8b7055768075978e73dd14c948dc999037c235c01f92f394d31796d6a246b11fcbf96781f5aaa4cb7d761ff77479d6feba367afbf1adfc21c90dbb666a1c10405e784b190a1af86fd960aed5d6c471d5229c8c4fabc39af3e7b5c1f8c350d62b66fa0f674052d33937307b7b79585129f3df906f75f3070c87a6b4ef6d2a6885faab1a594ca1f2b8a9f6939b8c61fcb3fc144ce09df03bc6b1d8c0241266a4b6409f80261ead94ffb9acb5a96d67c70f05219e825d8bb3de5c3d9340faa29e78f9ef73eb0ef47e65e9dc95f37e76856c4b22472f24cfe62e5cc76b0b6accca15dae17b1aa2bc2875efe97817b8ff635852f81cf7893e4d125b8c3c91a1a78eee7c0ee9edaa230d7adb5b93527af9a25cc75d3931cced3b7e6eabfe12bcbae4acf5626163bbbc3edc22d09ec6c1ff2b7d0d7a823b390f57dd4e5a5d976ea8794d88dfafcf29dfa213d7dfe9835f9af38b43de21d4f9786cb7f14a5eee8b4f5c7eb3c94d291672199545b1effcf9d647deeb849ea017973bc148d790bce5630efb6662933835f8b4aec2d9699c08733b016e03c28cfea4c59efeca73db2dbb8bd1c9f06ead73d88dfa356f25e96ac2af804d716c7953e54ef8eae5f8e87d6ae88e5d974ed3a7be6bb5d922368e0ddb7e55460cfadce956a373f8ee470960a4b29a7f89706e696e54f476a4fa7d3b175edf9e3ce357e66ddbdc676b639554b5bef1b5cd7d0c1f54ffabd67e8b9bd7a2eacc371cd89d98dc351b2bcb8798ee7cb9948e9517acc1d196fe241ddbe2deaacbbbd3f75e63ac2bc13e32cbe876d439fdf07ae183effe8b97be4fcabebaf5a5c5476cd2071be258fd418e2eb9f21077a5fde5fb96865345cf515a3cfe7f699e6306acdaa7d8e7a6dbbf6916e4f929d8d312870ae558367ba50bdc35ada75e5d9108faf7b9690314847a90c677dd8e80ab1d6d3d873b4b1675b675952782ff3d2209e7e868e32f2f469e46710bb04e86618e30e25e15b5eac4fae5d16f26c1fabe39bf3f625c7d3289cbdc42a3f3f879200ebc1cdb15641be462945f93a58979a7cc9f14b2e1ff8611dc24fbf83517a4b87d435457d7947f64683bd9c1c1fdfb7ddfdbeecec1dc6f9a727854cd445e1710e622e20dd58fb587ca767b1defbc8cee8e88be85da4f505cb4640fc9ad0561ac0aabcb5675b591d7a765f3fd27914a23f01d7c96bceb6f0eb7d0bfb49a09f2ee25ee0060318f1174c72e073a13e71588b7bde49e2d5a8f106abb46a30f1095c20f5e7dc09b09e98d64b108317f928b6750d46e2e101dc316c53862c59fe098e1e73ceefc59a763096ea55cbb4f15f6ef3b2413fdabb6703dec602fb7c295707ae3046ca7f3d7bcd2d332df580ad6d816f9fa6c1418339eadd4106be55cd813beb7315d575bb4c5d4bf984ff7b7fd2fb0d5ff2fd47bea4f566a59d791fe6bae4a8986feb6fddcde1609b18ef358429cdf0e1abae8ed49ce802d6d7b3b5c64e2779d0b1befb4bedbea7ed737aecfa69905911e96bb672d060b462ddc9f64d5b9bb4c5c5fc237f5b70c576c07669b19999f55d0c0ef9cbe59e0d4ad6dea98952ef51d148bd0f6d9e4a5a2a486622bebe5d619d2e07fb615eb9f3eaf5a5acf319b5deb567fd33e5760fdadbc83c7b4e7471ed49b23d2447c61ea8f7f119c72ddde6bc1c033bc82aeebfe3a9fb8e19cc6d7ed6382c4105f472f9acd23223c8c6bc1f0fc07e7c63c7a4addc413f3df7b3f57770505277bc8d6fdb58bd731f9e035ee48e81fd0a7c4fe0b7b7189298430bd7842a29ec9799ed6342266270be0ccace703ea3b669e01aee0e7d2ed72d4b3751be06e27a6de6eef8d339add711ebdd3418af230ff5a3dfb06fb76cfb232675c00dfb968ef19039f5ca73a6dfc1617becc46d20762da517b1ae102bcf9edfb319c9bdd1e821cf18b0291d2575618f10a3a6fcf325530edbff78ba9bfd4c7ee138f7c04f0d24e1ba73b43ccc4c220e955e6b1bdc036397a2c88feb78947c3b46d6978b76fd3a7a49893d6e23999942d61713b13ceabc457e059c2f591232596afd7dc2af007b10e69effd8b889bd86d6420676f08cae0ba1cebba11c6fbdbe34f6f9a27cee8f83197b98b1e78cde2bc07ee162b37dd6559626dfe16c7a21c6f9989e6af42d3d2f8d8d9e89c5c0fef8a3be3dade3081b9ab0cbeed6f5f7f506f3d90376c97d1b9ddce7f31dac8558a3b1184fc2ea50b27a6cfeb37a6df177fafaa0dbfb7839326dd80765c08ff9143debc7fb62e48fd2a4b6f382ccbaf8638553678af8be98a6ee584bbd39e2a991e384b957ea7b983571337146c64329fb850bcefed8e2807cedec09e74b4f4739416b24cfe4af7056c46ff14bac568c3d522917d7595f3d7b1bbfc58ab435d395666e6355bf27b3cd79f4a84c21df8c7ee64f7c336ade1ef1cdb6d03753aaf62cd6a0ce7fa02e6d46f42e12f6bcdce60166fbbcc658c2be347d5e631b849d3b60f44dea22ea6d3fb4f1b5ae1d01fd9bb39558fa36110c4dbf598f03f3bee0fa015fe78ff898db830cde51dba6f6ad9ecb80f21fb52894e6f77081eff5a85d371dbb4ce45c834f3f8c93fd877a33af1f7a493d0bf62b3f8489def6e1b19e731b679dc9d70fc7648f617d0cf5bc9db37e8535d6c39cccdde7404ec4865b8818f7da27af23fb491ca023448fa5230ccf0e614d8b3182f60dadd78839227be6fbefd8545cf99679e765267c82f320accf79467d09515341d7a62cb65f2b84e7c558438bd390bc0c71a126aea3451b471bfade39fcfd6ead03907391f50ccee7597cac1d59d296871e0f6b85b0b843db247bfe20e708e31d8fead9a39ff243df79af86d36e7ac2c494ea096bf62618fb5c2cfc39c19f84b1a949fb1cc830f221acb3d7e2fb5f8dd1a478373ae73ae469efc793c0b37736b4dd38cf51ae5e5377de8d2f8133d31c5907dc2f4bd55610bc4b088bdcae71da07af79f5c7d6397ce5885a8c53ea3953857a963e1fae0f6bf318e0fbb8c7bfad14de780ac71fac5fdb8b94f4e6febedd990fde7be00abb5f77837a62eb184dd2ceef7ae367e584d607adafb6ade35759ab47024e38fb8b04d6ec53ef82baa037a6b49597fbfb323d13fc1140cf7b8c1a77de3fdcd7a5bbde7a6ce17d406fdc588f8e6c3d30d6cedcaf59cf867ccf3b7b926cedb2e8cb481f5b81d073d98d7b38d6bc00dda98fac3460ece5a11ad8ddc0f5ccb505df355a035beaf65ce11ce57221d736f3fd6faa1a4eb0a3ebf49fff7454e91a48185304e7951fbb996770c2c691a93c538f6f7c5887e96e56e7ada01f43c83bc6e2c89458ac7b7faf9d7d3483389c43f9f4e1de50eb943a7af97deb77b5e61166f49dc15ce9580997404f0efe2e7f91b6992f2544ff426fdde3285f4acf85ab975795d4e7fad09a346b069fbbabaf61e9a518d6b31c07f57c0797703b887fdfbd0fdaa29d3e7eff40e829844df5bd1cd02df6550937f67cf8d93c270455795fe77ef2e45c3174c9d371457e037bcf113c7cd46f98bbe5fe99a3ea77cec159f1057c165a6ff7649af68b8873e805d5253be5b367c0fae31af7e7b4629d3f9037ede1330eee1d99b043776def6d5fefb0f4eddddadb076c9f4cc9282cce9f9db98fd6ca72d1d961aec703b5b2625ae173e033c8ac2894aca92f95946ed632c87d55d1e77c8db5006d280ff8d78c3e98e1b3abda434e490f8fbfae35dcda9349ffdae1317471846c07f8d9295ad7a6a6a337dfc9fa3b84cf67f47690fc29625a417e1f92370fda425eee671a73ae5484938caf63db89ea0cc632d3ba4ed97286b9767638f7b423fce160641dea1a10daff1e1e5b27ee8c39cd42aa46998cafbfdcc50882cfa9fd9d313cf77f59942c5a4f9ebda6fa30715e8fdaaf987f8ebb53ab357c561c5630ae428f83615b1e1e8817e0f10cdc3ff0ae761eef3c3f7d97accfb0872f4ce64ba967df91c1617bfcc63dd01fb606f23ec3e705ed3f32e5a8cf2dc8913aa33dfb12eababbfbed01b9aff3b8750e301c3dd578b95732be417e1bec8fe9cba35e7244bff09b3fd248ccfdab6787b86e2c24ed1fc44d77d8c2ba1beabc25b9ce07725c751d042d63c8271bae07ade32bcdfe3baafa2562d49d767ab3f53606712f67d97c5b0fe382657fb3e4eb91187417a387aae354ce7e35a5fc7a5942f5baf227959f648db9590fc2a62479bd630fd5e3edfd4c382fedc9b72759892cf56d54a21670a036bdc64fab6bd3512dfc407ddf42f357295784627175d8f3f79378bbf53bf176cb51d07b5bb97f40df74ec02ebb7ed02a21e4745ff66fad9043ee082c57bdaf6a5b99db834158326f9eac0b5d006b0800d00f1bb6a3dd19cbd5584fbf2c2817a4b762d11f18efa2c6bf20f1f7ab9f847584bbfc32f370f2bfc5ecee71bffa6d1653fa849e496590ac60a73ab10c73386bedf9be7441cf8375977dcd41d1aa77499898937433150eb201f83017f14f9c97c2b4bf89b3bf3f84ac544d018814e9f25f49cd798df377b7dc58b317e81f64d40e9613e0ae877123d962d1fdf527a1256afa7f306d73f30b9b8474f2d26f4a2cd51e2319cc17f557c7f179be62907fbacd3e3017c2c7d1279d2f618c4a940705cdea881ee70bb16bed4f8f713af57b7b37594ca7592a387e2f1e53f915d7a5e1f90dd8558e1f79e5ce7e53e36ea02e244e470cd66609dea18773418e3f6c72ffd38f2a1e5456f6a9a68ae64cc29e28fe5fe6f05d0f39aad1d3c67bd22fa9145bad740ab31c0db7e77673b68972f297c4d9181af49f2070a974eaead95a7a6de7743f423f5b81c85373ea2749f3f2a0ba0cb114f0e1d3b24f0d3d2b64e4cc0b84c61e53ad323c47b07f209e6c8b4ce1e388ffbb5cc23b35fcbdcf02a7afae45ceb9cbadeb1332ed34a802de3c7645d383cab454f0ad3802bfb382f681fcc5b6e714b12787714c1eb55e9a9086fac2fecf315a9b92a5c5b49fd797af54725f0bf13383626773bae13bcc3ff35c05d5a10b25cd75d1d5add81f6ef1bc60f312431f6603d2b3ca749de7998bffed04b978aa9c37af02db5d67ddb16c54cd6df6166559e8d641bcdd3aab52b81ad2195e07c6f78addadf147e679709962d324fd8d470a0f505eba7b1e69c2507b7eb079cfebcb4787d70ecb07e0dd6afb4dfa3e378e50cda3079304a390fd70dcae61ad600d4352bc6c8db04b3a802ebfcb128e16fdb9130f21c2585e7d3e272f463a4c3a18f84fc167be7ac73881d83de076c26c8516b53782fd0377af5c75e1a6458c6e077d318511d6cc33b7bd3c88404ad5bbfc760dbdf971cd163006d7eb8c7c0797e636c60effe8f754581ec12586f05f503ee7339833521f5860ae3fd32cacde3b19b230b3ca3969bbc3b5e624de7ca64ab47e7015cfc16d3113f579592fce327fae3aece05b20afc065c130aedaf280ab8da1e2b08fc5dc89105e76cb990eb3cc10abe77066d1518b70f464201740d905720f7413ca9f1548fabff8fbc37eb5214d9de873f505f34605a2597e9008ab3ccdc09a409024a170ee0a77f57ec082098d4aad3bff39eb5fe17bd3a2b5321082276ece1d9cf330afe267bb47dbc682ec69ff19ae4af6dd86769794da2f362fbf714f9dbddf687d88b664dace28b95358772ad299823eb4fd7cc33bfa0ab87bae5fdc39a2fb1b0392611ebf62d317705f8c9d95c4eaf3837125e733b02b9c7f67552d8bcb2872b54ed9e76dc4ffec0fe557b83628729cfcdf9281c1c3096afb04fd4efa89c9d807ccdca77687b8af68bacf765820d3ccf4bddbe10dbd45de6eaea79267b4ce3b3463a20e7a0f2a533600b1c869ea700d9542fc764e33190fa5398e340bfe31c0b389f74db6bc9b7c28dc2f05b2eb8ca6a5fdd6992b25357aaacf26bb40f72bb5dbb57bc007d048dd1a2f0b187358eedca4cf9ccb5ea1a6bfc777ce9e619f04e3dc02bb833b46efdf79bd3c81997f140114f3474c2c9bc923ecdffc49ffd3ddf55e3d76c233e27bc395279eea0b34cdbdd088765675da0c3bf827ce2ec89bd572613f0b11a7e5cdbdcc9453d26d7970aa93ed83c2e2834b09cde96e8d87f60fee8460e40fb70a7c001b6c6753c725ee5eb199fe3ff919fdee90bbce9a3c3fcc9f89cadef65dbc7fbd7e4c200b4bce19ca7f77338388c3fbd8d429fdd604b091f9e7672220dbda7483a6dd1e7c67bb92f29e14e50c395b0657792c27cc4d5dc04e8a57a66a425687c687fef8d1519d76e6305fc7d8eb5338bbaab45f83fcbf70e7942d5267a9bf8fd20fbdc588fbeab87494bdea2592b98ee80735389008f82ef23e4e704dcef31a7b4485bf7ddb46d8dfc0ec77863fcefe0c98c9263bc3bd6c63d39b8afb48eedb23a6dcb3073c1ef66efee342c7b52954acfe31dc5079621719df98d10ec6cb55e31954287d33237d2c6f9198aeb1e15cc5a796d2dbf86c0af99c639cc3891707538ebe6442cdebf4febe4055e2bcaed5991a3217aa879fd03ed6ffbb48aec9e74a9e340da6c96ca69a9ab6bb926268331e2afc68b7b2a9a589d724fa3b92bfca1135aabfd07b22336eeabf772deecfc3c6ce1e166e6caa5a8093abe1939758e69510b25dff4b08f89b1f8600346de15fa44944b456ba8ccbd0df8e5f872a3736f755eee16eda1779fa5c60deeaee7e2007481d75ca135e51da6a957cfcfcdc549bd5726b4e0f7683e27f1420c887d9fc47383857884aa8d3e5d2358ffffe3ecf869bc38ed6e79be4e6799785ed33a44e7700dff846c6526f9d683f23bf1cf1321b147151e20eafe3846a7f30b4ed6babef273ae6b6dbecc27185ce967373050da2a740c2dc47c0a2d794e19f27f89dcea2be1be45ea19dec10b16b6eb20a7b3860608b54715434b5c31acd47bdaf61575065fa91c61065a82c79479c2659e515ce6452c5a1943351e21d72a6da3e2c3fbaeecc7bd6c46738cd5a275caae647dc4c88e3c7b472dbc01d7d67750d96f4f78adc93cb570ecdebfbade6f732fb76ab3d4f3c78d73a85cbff5badd7fcb26af90ffb32767c17f7bfde47cefe459ca77aa7e60cd1c644b21ef3de1377a1049be17d76d1f95d78a0f4f6d5ad3a6d8fefbf343ec60dbfbad7061166705a563d759a7c1ba76050f35591fad67666bbd663aa3cf07646b2177b2976be79af841ec7f50a97db5ac47ec474eaa7dd56db608f6c7b3be9451ff68f786e8feafe6987aef45deb6d19ff87f3fd74cd73a6ccc2fe5dbb176a4613b46f984926ffdee3a7dd7b7fcfb890de99ac7f3970efa51d4df09ce15ea7df1bfb45798c6595bc13ed37e391d73973e794b8f7fb3bf573f6d1b7897769b823538739ea1fa755c517d7a1d72bee6f13343f49a08b755a33739a439725bf631d877d3203ee2749b105c31c111b568a0d4d748f799f3f25935e3f99cb5f912afc7183f1f23e53bbe1a9f1dbdfb2e0a5bf87c6c42f862fe3aebd3e57beeedce4ec4f7886ee5653e92343bba5ced9e7b9d51f671365db1e609f6e60fdc5f4bc5b2509f80f3d1b375f5fcc6795c5927cfe2a4963556d7706ad352572c4360ad82736d8bd773a965fb5e5c508b5ff27791e30d6cbfd461a5fa64ff5a8eccc839de990aaf64191fabc8b7daf45a7cbe8efc77bbedea1863bbfdfa1dfc53e30c7c07ff244f0bdef1451bb688b6910ed7f71c6177b3452dc33c1054cf586f95996c4bbf6c6f155aa5d67cc9bbaba789dd73151bf433c2abc5ee6e2ac7b34eb40ab548cb5c313c5a46b3c72eef1345bf7fa113b5704766348bfaacad4ba1e3cff88d81e605fed6d055e8d0d5038ef345b4f26c31efd74feb98aa2e5db3706eb0948653ad5f4eafda1812b746922f5d5d9df52d63e66f1416fc79f4f7861e0389dfed167d2ba7fe3bbaf7b8271dd5e9eeb1d13f5ae715d73bb0febf35f2e87e89077a579ac8279621114d4c893f289745b3cf0aad130bfaadcd7a0db6cd6f37e87e3ad0580f36bd525f79a14c7e503d14897364eeebde6c601feb3e3cf6afb016cb20b741d053a5a2314dac9b13c2b8c2af91172f4495f69d6ea49efdc0bacd446337f36e7339489663e89fa27b508ab14abe8571bce81c3ead08e73a932e44c2d52e0e6252d76bcc15e00584d5d53486a2dd9374cb9018cbf87ee95b02c64a548b3eed1c534570bfa163689e3d5d66bb9117ea5cdfedea0fab6ac76ab61d32f1a6dcbb685caacda521b2e326479d83f05996afe653527e31b934fafbf0ba193cef4598f0ccbc6e4bb2a696787d6d81264e8991807bd11857e0bc867e85ddadb247731f13fcfff631d3fd57cff5074abd95068f63590bc83ff3d302fee6fa3b2adfe54211dc39e4212adfbb2ce50a5e208f71aff5d8c1d22e19ee9ba33029655f976447bbf04b40f6b6ef39681fc0393bf86ba3001f1189c506bf9672b107e2b97cf796cfd770fbf5dbf2bf14bed23eb207c259a66fd554dbc969b681bd13a0351e6f72de026c077eeeb14e028d997e58ba7375c69f3cced36fcf759cfde2f4996e747c1ecec5e0d7b2f9f77bc127f09026f3e996d6a627d79f5c916f62eae9631920ff3d201a60b93d10125be47bf0ccd3616c47ae6ab3ab9b6b48474ba3d6abbebad9a75d6c9fb4b0ecbb61d28301eff456e29f56a19555345799b972b93dd99b91140d06b68fd78d9da5d946afc47259dbbb039de437cfe22eece8bb67b93b6512f93fa9cb34f7e93b75998573c2f7ede299a8e45da1de4e381dc6777e2943fd0b9ff3f4fb172e4c9d5f02fb519f419db392aa2d3f9c684562cc9c3b32e517429c6d8c8ba204c2d66087f24e5d492a136e949017b7ea4a55d85937c763d6d4336eb7b760b3f23d57f44d90baa98a39b71a3aab155c3bc68b631d32db0f2a3150c576037e96890ff23d68f70dd0fad012abc9edd9a81f5b86c7803681b0433e4d134fd2725fc0f1e46345b1987ff796a3d7e34536c739d2387e3352917d140406dbe38077fcbeefea566419b3f37214c40b31e417a3c63b28b456d486cffcb2065a7cb7e01bd60adbba246701b23fb7a5326cbb775143d5406fe0397f4ca30e8e73a8c1a243378760d4713e4bfc28fd0f7c06153877bd27d535c3189bc9f33a708fa17392bc2ff9fb3ec7788584c47980f1933ab50eb54273b3389f27f97e7d8e8b32b2fe6aab79072d10969aaa2636f223b98f813ba2ce58e572a57cca6c63ec904f54d17e7785cb754e34d108075eb83166b4ad0ddbd6feefe05b9acfff06be65b4cbc87dc106bcc38b9ed7cb967e00f57d7b84fb1501030a6be133c8fb5b508cb5d183620f133b40fc8e01de73a31de0cfa99ed20cc52b1b7d507e6f2a419c62fb41826cb354d1c2859a7f621aa1d28837fe2d6d76390d377245e35641b1c536121e96be6bdc17f006e57ed83a9176dc1babd8e6fa2b9bdb119c208af13ec0c7d0601f7ec7e01b8aea751784e64edd966b4a99dc08ce5031392101fdc5e3ecb6943f98a5a2fe748efd10c52296c266d55e10f695a660e10336714683169c51f18eb03e57c4c6b6ff1dd05a510a606952ef4b6bf81be067bdfbee200632586cafde9cf7cebeab029b9c73a7929eada8efc1bb687d2e8fec212fdcebee19f09e2447a27161806cea5c0efe41cfa332fda12af05b35d0c6b2b69214a67fd805c2589bf032bdbf34e8994aa38e7d563d37d1be40ebe844e6915d85b6689ef16799443f3dbf2f8cbda1e352f00da496ccf40f72ba31a338347bdbab256a11e44ba7129a1fe48321db1d387eba77f23d2b08cd7e73aefcf74c2c75fbbf7adb2b5aab36e1b47a9a17d0b5062f36defb383f7498a68d9e6cf0074234379fbc1bf1b135fabc17f8881355131aa17358bd1a2c8f6d2bcb1f36c616de256d2f376aa1e948ea0fea197d17ebb21436b9f13d589ba715e39cb423ee0151134b6ef1613066f7998f857b4da127ab7bae2afe15c6450f6d31bdb92cac93fb5eef9fd03ab391dfc7693ad6a45cd17db9b1036bc982fd4370b3788d6598b3be3efe2775dba73e63770c4d6184f1bd214f0c3d23f5f7df12d3ff871887aced197fe7acad7ff79dbca985be673067793a8b1793b81bef65acc4bd213ddc2a3f3db2af17747e987a9fd91bab87a94ab13b5de55c5cec326b7c76b437768f0d85dd4276d7869edef06407da478e5b3d28977907671f7cbe1b1f3bb8da227fb518188b6a33bb9b8b628d526ba23216c01e34f85685a005e797f7521e1611b9a6b6bb29c5bda0cfa58d3feab18bc2cce995fcef068a8374f66607f03d9ed2aecec7a6ec75f7ba33bcfb468db3c569155b5c5ff89a0ef198dbaf53e19c27f72c7bd347c10f78ce7c9e2778cc961cd0fc27cdfb67edf386de617edde67858cf3eed62a7b7f2b651c8380ce6f2806789fa2c6045f0e76e4e6f87ee555b43cb737d7dc075b2342cf0de1d73899ef12bd2329b496f2ea765f87bedcfb0189bcc42fe4e97a59ed4f3353d0a625c5f6ae85d74f309229f6a3c015c5999cf2eb929296eee36fecdc3224a6f76e4c27835919fd83dcdb709f7a27d64fce5f8f3feafff379afd323214eb48c87e655f14fe682ea7d946ffb83a3dcd770a8d9b0f2aef6756e26de467b8baf4c8eba8cbd13dc59a5e9ffebc37ab5e673c4996ca2c9e67b3b36578f7b9dcfa990cbe2f24df33ff12ceb3d9b781b5e31af6e277ec67d306bcd3931d67e4bec80f1eed8d7a4ea68a4d5a8e26fc7cba8d96ca7d60c9c1df4be57c27df7fe4fb0dd66bb337a6f41dc61f7fad1489acc13874227e69f7dcd0c96dc9336cd4c8fa6b3efa4e3763b48f9834b77df649bbe47655d1f9872bac628ba9ede1c7ab1c28734731f54a99fd748e90dbcf163283d73f1a2bcca714437d613a8b915f84ee8d358b4206c5618e4ff16c881f3f6d3ff955c6a39fec32c7264f7771d75955d80b387f1bba9d4793219adac4b7b1a3905f885abc312e63b2f72bb9821dc18baf4f97a3cda118df659d48407bf0c74c19f20b01d7bc6d11f91e4f725cbd5d5cb3199e25eec6159bfa9ca321db37cf303cd651f0d31d15ba4021e640a1ebef9e67476e48b80b987ddd178cb48bddb3c22d6d6b9b6bb0a81574ccf5f56b6446b8c654b7cd38dfb538d13c2adb1a8f538bcdc7d785fe84af3173b1e4fe07f275bf14f8b95fd3e540f313d6fa9e4aada42773b298eef8c5b4f17e48dea8b9265e7346569fbb6dce4d7d1734dff716fc657b1a5073b112897e3475be57af4fcdf7315faf052e81fa5cd1bf6830892b067f9ec3ee9aabe7396c668ffc4d3db86e2bef37f7c3dfd3bacff7eb22acecbbe7da4f53297e1d577acc5e4ec3bd9ce782faaf6d0cda27ec37a9fdc559f3fd80ef6091f539774ecc4f3baacf7b618fbaf2ed159f451f15bd6a1ff3a6df883f23179fe9a377ddbc67e7da7832ef1d7b14cf41c537a77bd9ab9f0bea9f43efe55adf1bbfa955dff8fe3bb10f5a47c47e64fb069f388d8f5abee249ff59c1093d58e6a05cb2c698c8be7c8a37c2b9b94db127642f5c8c3fe379753cd7af515af67b56f4de916f75a960b11627381b1e2dd785dc65fbdf2689e387fc622ad5f7f95b9ae74e63bdfdaee6f9b0f5de6fe288745760dbbeff8e8dcaf639d78818c6adef8aee63545ee69f9fe4976a1ade9c94357aa9d03db4e46e54b8a8e10cb3971a53c68d542eb2919b1985fc9a0beb73f1b0f4346aab6dbfccf9651eb37882ad38c869fc87fe45e9a39d48ed0b9d33a54df59dbc4f17f8b982cadc919a0de6ecaa698275be1fbab643e6991a43fbb833748fa18be6dc017de620b134e0a07df3bb42f5bb0693ecf5a0c1c16c1943cf89b4bcc7f28d1e9b7c7eaa3e25e933e41762630da0fd90f74a52fd789d790f2a37f679aeac5119c5a2d0af099c21b628f495dee7196344d2106bbd56383ac9b51acf893184cdb176737511bf89d607394cd336fd6a52dbd7829948614b418b26bcba989f0ff4cb1aefe3c9feeaf2115a70866fd7241afb5fae721a61ec5cdbbac1b9e7cebee85c534c676fb857b2ba4ecaf7f359d407e6a2867311a05ffb2407dc3a6fbfe153b6afcf57f63ade93fbdaf97caa7c57cdb06ad7c430269cdf58e395f42937f0f8302eedbaafe71ceb3d4de87351513bda3823ac33b3e582aba6f6a17799d8c61a0f626b0f46a9735a7b36f23cadbdd1e4fa8f2f9d9deca1be2f85eddad2ef8d5b65c315e82f069abc53fbe39d4ce623dac5a07516b5f5ffbd3d7ed0c4d96992a0042ba1e0f812f97ff3dc25fb65e8363808b0cd0e0fcae5d6e63fb6ac876eec1fce315c3177ef2cf71791aff3d3529a76f19dfdbd20f55ae40b999cc098dc77d1ef31939bf87ed90f6257f432bbe77cbbe34bb631763c7c56ff88919dfbe254bef92e6a3e85c034e7484e99b9c11e4d6377dc8fc8398d79489b6338f2d9fab4a3f0941abf10f93ff5e3906fdffa6e5efaf65c88ef4bafeb571a5018cf71dbcb38b7053152d1b3dfe8d542e362eda8ce71dee80dbf35defd280d179355bc08b5b5acf26b88cfb8e05ad7b178be67f9ce3d5be737c9afeff4c2cb4e0c415bd16ac1f0bc3fee95a5a83b691758821a68eb2da3e6f311bc6f73bac75fb7372446f3ba62345b6ff8d2c7bd28c436e8f5691fe46f7fc45d02d72eed46edba1abfe684869f929fefaf3440f07c97f7e9e06e7dec223edb729eb7d73fce6de3584cb7f8fbd3edd584cff5317615ec309398ffd199dc78be77ce64af88a1a6ab8a2d9f01574805f78ab9a6ea5c353d0ff972acd5d018d2384bef636c4a8bfe10f4b84cf0671ab194a82596b10b778655e27b1b1c39bcbfcf75b2c7b397359b166edaa4d1cb40f52d58f8deb807c7d85e77136db9d37642cb73874f9e8bb7f4f461c9c3d8f2bf1f2f7134d359cb9aaf636b84166c0dcd3f5999776611846b95d1648de25224ef316b7996b836bfb783c124ae1ef05f0cb9ce38fe69723c3ac34fae21796694866b7f723fc8e964a7a68236e9d21367f9756fd596a3086d5163ded1b07723edea0a980f64a3b00fe497e07b6afc62dab8f6c33276134b4f4357d404f8ee24b7075d7cee642c2a9e4359ef0796f10d3862876bcbcb11cc47274ea618fbcd8ce2b631820d320d297cd6af807c847a8ff2976079f6540b37a24abdbfc16559f6807d689190b8bafa9725539f7f4c7eb4ae71749dcadaa95c8b9e7bb85ee5bb8fc98f65e71cd5f7c46b0d27faf307397d34728ec07bb60a9d3734a72ae35418dec1e7aeb2d324b5e3da8aa9b321e166eb8ee5c5861e09de57235a83075f037da6f87be73cb5afbd97cfd7662b5beff1e659d2f3dcb67979c79773902f37d5e2d2e63caf0f2cb16d296deb73cc59f6465de0b19753b6ac0ba48dbac041b9247f9ac336907fd6a8c5bc517b16d38213dbe41abc27f9fa69d374aaf6238ac2237fdeaae6b5e7392cd11c0d4a6d89aa3e49f5efa5165cce75513d836db1c1bf1cdbd12a71f55d31e7f5ef389176b47b52201bab1bd47af4464d37c78e359eb3f6b9ababb34d5efc128b84feae5ac68a711eb48ea0147ca998b3aba16368ac2636d70fabf3163e76227fb534f76ce9fdad13f177cb9024fb04589c7f91131af86d695daba33dd5824227f648f9103d2934393eb3284e4fe085e65ace4e7697ed0d2b36f5ba4647334fb1103f12c727fd7a6386dfe81f917404accb0badacfeda05ce47fc5d13f3b60d2d3146316145bfab810b503ef3fe40aac7f3bbe085db171c077dd6269c2b80f75726186b0de35423e904fe5d7c98dea1a6ede4fa723a7daf215fe20f26e9414e8fadb902b2761b3a152d3c85ed7ab0cfbebfe31762ab1f22e15a8c265921b50f9bf9fc729fe0cf1b7b51bbd263065d99e63d90eda0d6ef1feb58b65fe7c42466f33c7950dca7843b11dfcf8e84e435778e5ae7ccbd7670e60286a9e0cc6de3f855f2ded2b0a90753d1019cdc5fad11dac636f5435ff92e941d6e9db3dfd25d7b722ef4dbd6c0ab7adf77dd16b63ebfb11ad93ded6a8942f6f5840789ea5f83182cd79fa3341b1bd721f37935f53bd824644be7559dc737be23b880eb6bdf67e5f78b73a03b3f6946bb7eced559d53b9c75ea1d96dfc15a8714d6dab7a621d6306249beb2657e4d7d17bc916f486c3fcdf2f8fb95a666e34ccc925fff2f685dce9f9c99656ffd8ee6d2f696729010dc7bfdf754ecdb67edfaf84ecb5ff31c231d850f6d2ac56e147a0dadc2cafb4b0773da3634f63ee32d47947e54dd2ff01b7a9ec436cf30cfe174dbbe9e325a032c055cc282705ebdf86cb6184fe2dafcc7854dab69863e3f0bb73c3df6366da8391a57515f4d5bcea059853b34b75b1ae785367d8e8ea8b590fb74c0555aecdbd8614a9d898213a91c5fcbfe5e824e409bef5d725cc2f8727ee9a62dfd8db8a27956bc1357acf2fbc60e23047b14dbd5745c9f625c913d5159cf15bfafa62e3de6d3edc52af3b8d1be595fa6f95a42a8a18efa47534f1332ffc51e227177530f3cea6f48aefa9e73b7d0fc5fd08726f70f385ed9dd0c76c0bb58ab8a9e5b5ee1a47fd03aa2b927312f067d2634be87eccfd5e9ed32176bd2f116703554ce91bb13699093d915cf509d7f3952af0ec767a5de3e8ed99d2ca8ea3d289f3fdd715afb4cc90584b55f6b35fbf273c02de08e829f953c19e86058adb995f928207afd2d3901a807b17c6bffd13b3a64ff49ff63ceb55d79f765dc069c47a290e5b90facd9446b6231f735a70e72ce66c8454d97054fc39a53293e8a820baaf81ce661508b9e492a7f446b26a37572b48cd523aff73b98cfe3fa243f7386fe27c06d00ae01ecd37c14c4e6490a4dfdc21f742d7138f51be6eed13d77105bd5e2c71abfd0718ffbc31b796cb7b7456b625be3fc490d39edb9a57e46d6d2971a37f887904f50fd5d56be3f21b0722ef0e92c014e4a3c779e25e61a24e81c0f689d9ff6f3feb43cdb5948e7c77d33e26fb6a879f633eea49089a4f0f3dc88c9a72ef4ccd7e3f2e61ce6eb64d28ceba7cb667d89abcf05df9c0bb1ecdb69990f6fdec47eb5e86e2e816bbe61aff41dd6a369ab0156794d482ccdde6cf47dae1fe25a543fd74828b5588415631a1259c31eeeb1cff94fa633aa3fa4e03fc1f720bc5aa61e9c6d3f457e8247ecfb632f839611c639eae155c75cc6b78267bfb46b800b334b4c58b14f310f4c713db2ef58ef4bf886de5f13b8229b7384ec99c9690f87c9eb94c327faf7e59ced0b7efbbc77f31bf3388d2fb78da8b6f356d7ecb39d61ce3d936862803da6721cce83f5eaf7201a2f749ef96ccac0b71dbf5823f49ebb52760ad93ffee9fa311a795bb4e7d22735a992cba02d0756d3257447edba8450832a75096b7b07fa7dabbc65cf6a797a65bdd76b774d1e3281a9e718b28e1c43bc3166458ea1d045cee74e4636eda375edfdb7fa3e6d645345af13e76eebe175a30daeea8457646d2769817690d5be28ab7d491328bd325df8409f53026dba6d7c0ec5d5bb78635c208edd22db2d0a587be2d851f733989ffbd69c381bbf91dbb8ecf53e8f9eab157742eaea2ff20fd4b53efeb28c745079d6e916f9c8e7b65ca082fefe32a7c37a5f5326693ce369776be519aff4b7b668d0e61c6de5f563dbbf431f35e1be2a9ec734be9325c6dd37c6ff3bebaefdfdbc8a2d3c74df602ff79b6be145df872386fca2b077fdc0d2add88eb43cafc8ec757466a23db52b39f3c5465d845ff7869df5d2e7d8fc14fae8f70a73b67dbc37e6dc077e97a3e0b6f4d3db46f632b2667e393e5e2b73799051b8d778230efe5e28931f7ba57f2b6a9c7fda8bc368ee414eef7f5457138b98ecf49fc4640668e631af347bdb70114ddb1a3255db43695ac2beabf03dee425b61b3ffb1382f7575ad81a1ceb166b4fe108df7021e59518d1b5afadcc7d5c5da53922b6a977975ced15eaadfff77b075f5efbe83ed09d1f70eb287f9e9a2262692faf7378aa39e706e5c910d5836703cfd9b25aa5905b7d5a88d0d5b6a63b4e6145c23adac9f880f2c65c6db7e55a37267788c4569b4e4dfad8fa7c2e9fe3fc0df41341a409ba5a985053919fa0ce3155d60f6a3fe05706423bcbf1680cf406745ed2c27f91bb05fd32db1716948ce8fb675f72faffb060e02af1599ca5dc2fb9c5c1d430b9d5350e8e12d9a180afc5dbffedd59e3bbff7fefa72fbdb38e9f58bac09535058deac1916e76af51134f20573666ee07e5d26fd40bf0da519d486bf42f34f250e5bd138c9bf7e245007590313937b1bf4eebf94ce93cade6b991f658d038e93c7f374e7e56f080856e2c8a87a036739dcbf714d72a8a1c17dd238ef330e3cf78cda950374167847d6443e4577fb5601f2196eac002a3755a68611895f92db0d564fe332742318a44f260c3a3a9f7af766ffb6d46ea37f2f12d7dfbed8a836f9beb1f2d7918bba3e1d93496df66a485b63f84fdb2d7b560e6073f1b7345e9ac5b5cb93ee76dcf741258cb90fa1d3d0f796de1ba37b6743e3cb3399ec9bf5b7ebe6dcef03b5123fed6c0d194bce6f47e836b37f674afba5ec933632d0c6197593aee4b6e3edf30034d34d8b30d3fa5d9e7f3d43fde127b57db27a32029fa5b47d806527ad3a11b6909c9c737f6d25eefc7ffc6bc903d29c3674621bf9836fa61886e081ecfb31aa48df7cfaf7996a2b304eddfaca6d37bdd289f3fed635a723d2b97ebfcc16414b71ecefd8cbc6baeaf9bd764e7e2c7afa5427f97a73e1b931e8c824711d90688c58bb818ef7f0eb0f6f9f7487f3efcfc98c458ef96e815192cdf31f76fc72bcd75fd8e6e7d5860acec6edb1c23dfacd4e7daf16b8eadbf3b0e745627d857eee2a0059f96e408e638c6bcb4f9f632fedc1b3579f4b915bf101be379f75c5b581adbf6fd77ceb64b810317f8ce1cc39e60125ff558830fa1411fc2ce1d05557b2c32e75950e6546722cb3ac416ab229f7ce9eecd8e8484b6b5c57da1cfd48dc97cfb7b85fd59d4ba04ac096ef7ba783d9884d4ed38c04ba1b340d4684d976edc32dbe88bc9f5e19f738c8b02937339e2b17b718dab92c2d6a1b389f86668af9da0dfbb8ffd2492afc0faf4640d3189f1c718cff86ab47eff1d4d5b1ecfbddc572cdd85774834775fe605bec4905f8852bc20b8243712923c074d6b2c3dc7810e7b7b8349cab87017021f785e333fed406fcbe082c48c8298c4cd1f5d3d290687f9ae2c63f62e77c0c1e47816f6e411f8033eeafb9e8e039f704a36afe7f78fc05d5560eab6e792db84d2c7857abedac46dc8dfa0e7bd9876e4d3deb521cdefbf63433eca5e12f7b50d81fd10e6efe749cd10fb43ee28e4d73db7f95c5158c7275572fc96c22a84f3096b99032fd61f69eab6e3642a39ed5c571d78eb7b6dd81fd06c69c9e1d0bcc14be5126ea65b4a6ba15adfc4b6c5bdcea73bdb9219e8fbd339cd05beaf221e0caf73f1e3ea8c3faf5fc0d1f8992e4e01d479f2f8d234becfb6dfbf2fb19d01cef92fb96177d1d9fdb00c89994f67c91e7c4fb4461aefa225aecc39d55ef7e77470aa35f25039cfa5adb7f2f7e13eabbaaf5cd470d199ce3e90cff6aa1efbafd54c9bb63d5b88416267ed6be477fc24f74fecf7d42dfca49dfe464e08eb7b75e58520176b9fdaf5856db4d655a891ae4ce393ac5b8fea972a3139582f5c62ed32f6ccefc13a9c46e1fa7621604c75b085b1cdf565574fc38d3ca170e0426631959e420adf5360563156afae1f0418ceddcd66acd0253ad3356de2d83e616e831ce7541bafe7449aa74e774bec23f04d9c7cf56fc8bfde38fefd0d9ee5f7726b8be98c77a6dbabc2b863835d892acb8f14565bef2682ac6bbcaca9a950e6dfe8b92a737080c7d0fbb8a75a61afafde99e3a785a6a95de66fa0d68bece16ff5c1bdc927bd68d4f069cc3dfd5c41d773dd5e3d972953cf95d59e0b6aaeff5339ed18e35a762f31bcb65ff61c56726d24a68139002e367c76e2de268213803a2ae8b9df4c4e28aea970ea55613e80875c96fbe59a93cd682f1798d41b68a3881ab2731774269738728a4badb64fd593866c790c35dcd3aa716ff42e9e609b8037bb4d979fd4c15fefbdb7fb916bbe7dfb18709e683449b1fef43b7ba27d9fd7d7ff22d7e716577143034cbe03de7429073ff7cffa12701e20c77ce4cf4174e4c09e2bb53e11f0a3d07e6cdd6772536f9cd2bba99c210d9e82d36e70287b98906dbde21e7fa6ae3979b5e4f4b1d1fb83c348f0a8f7707b8ea928fa6601cb83ce6627abe09ae0bdd5b1abc57bccd7ab219d08260c343a5a72cca546476f98ec0d820f6a722b557cc1a2cf0f6338ea7886b08e67a8f8ab7ab8dc1bc8ce088125aceeb61832040b02fef493fd02637b0fa75eda9172dda9b9060aad7788b57feae76f5eefc69ca3551b8c75ed98eebf15ef29d77c8571ab35ac31ccd5b37effb2e61e62cc56ca503f67c8afeea819747031b5621d2aebbce37af5fe05ecdbbcc428b49d5d5acbfb6df36ddeea3f516d8e172dc3c57d3ed355cbb5d11a6b396b086ef48576e2de7d6667db7b7e8af810ea04e4def3161f7031dd2672cec113841bb5e28fd4f1946c4d3b75d9a5d55889515f8e41541b63685903c8de14baae5d7deae87c2e726561ae790beb076a8cd0b3457e3f9753691168a636d16459e5e5c5a4e01d911476d68eb3c5d75a173d98f4f5944b48e9d55cf3fe9112138fb55a151ff85dcbd858c8f56ffb32e1a1aecd47759ced58e50237d69597cdfd1f8c79049eacaa864777fcfece3bc4fc5a55dfa6ec3120f72e3492cb78c02d783eeaba7be87d6c035e5382dd500d83b6ba265a13951a49674e495d318b9314da3acf599a143a22d84412a7006f58877628c63052da7f83a5dfd06f861e084de46fbb48ebe5d7acc65d39371b9983311b623fa9aa4d88cf893ed6f5821add2e6c9defda5a9d97317582e603ce3295f59c51ffee1a5b52834cabef93e00c6d3f482c0330daaa73d2c239a565b93932d9622445607b47c3ca5ca378d915bfbf1d2ebc5a5c1acea6787dccfcc67b6ff8dc4fd65081c9c9732b8d5eca37d74f9b1605d98f1c70ec75d8e4b6dc49e5dd4d3bf08af5714e1bfe745b6db9ed6c7bcc516c54e307a374571b3d78396fb93baae5ef7ab38efc1de8a7e5fed04f4bbb5ce7d90534a55a72a7652f524503e9e53ce47984ae73b4a8c575e62032ba7fa9e1e734e2b3d6fb676deb85ee69ab5fb7eb0c6febcfc718c08eba358509a8f404c377086f5fa367d13e32fc46add8be52ebb6a73d2cb51cefae8c153dcc5900b1f9dfaff71fdcfb47977d26fe6ba72f439f57cf9e1d387375f6ee421f5b43f736afd18edd51c1e7285bc61034bcf3fdd9a14f8ef608d1d82f71f99b7153bfbe336f35eace5b3921e433496d3baff7aa89fd60afebde0a9e6bcbac8cf974067d7f80971707bc55f06b4c4a5b3e9dbdb4e5d4bb4ef6727a9bcb349ea2922bbc3a530dde9fd93c5ff1d92e4e1a36b4ded747c5640979566911481b4ded4fb69a6475e8f8d0d76ae351a0b5fa28dc19c1824c008376b6e420d92b6c9e27f1cc484b900dc26b02b80bfe06dc29e18829e76e9bd87ef083c4e7244f98c75badb8a757b1cf739e70d1eaf2399ec5bdcf351d8d5a4c5deb15207c0565af4015d71f16fd0244bf04d73e719f449e8fa2e7056b077e50f16ef57efbfafdca7e96b8b537e1890dc4b926144bf299354ab34e3fb50d67329e78dd759032ee6abe8bbad600ad09bf2c7ddc667c82ec53f8c23ec167ea79173b029dc9dfcdc1a773396d5c4b3e01262bcfa714f10deec92bfbe3ac7a9e687261e64619f340edacd4b70973ac0ad6bb57ebf920145356e20f38135edd73ba0be97b6e393eb1c5a2b7fbd53db5ca3d912d17d3a2671dd94d2aee6c9b737a9ec636972645af74316e2de7156d7c5f37b6311abb13f13dc29129382709edad4a6d28af652a9170012dc84a0db33ee6ce38b532bee735d8465c59e44da017006c02d56756f4b2959880463c39f2aeed7b0fe7859fe9deaaa56f5dc9c9e4babbed39ccceb1ffb5523eff2618329a4fa75107a27be7d17d4d6d98633a6eb9c68dc19539f0eafd695f0efd5ed8e63970bb877c03b80ec4bcf392b7eddef199f67a88dce60b59b11de133f70ffb81dbec5223b6ac9fff79cfeea1db2e467bbd4ffab30aed18fcdc74debbb52ef03bbc9af5efbed33b83736f1d358e17ba4fb88f90ae895872f07725e7a0c4d22208d779ae84e092a7c8e7509bfc62150ecf3d89b7f6141f9543f893d5a9149a5cf8d8636da900fc92466dd321bfbb3feb1deccce5e5f53987688b203f8f9c2194ceedc7f999f62d557fc6e3a970b74cbab95b0ce9843585b16ddccbdff7c5741b577ab48f7fb09ee5f4da8209c836c6905904fc74cbf2ca2e5c1d4aff373ca8a1b6dc41fede0d5d619859fa2a76b81074f62c117c45dc3b8dd6b2b6bbe55abf2defe83c9783bf36ca671e0f3d8816d2dd3576245ea2ae9f9f05edf78cd7a7f7de0fe17cf983f7f3845ba7edfd604eb1da6704fa3329e136fbefd598b9e0c9bba8707a9eedecc93c291ffc72cce75a0d38f683fa0bae6bd2d79f8bcfee59c4b8afdefdedd9bbaf9c2f8fb779db912f0a5c48046f1fcfc79f28bef31a9fd1e8cf4c123b4b3d7486afd90697139ab3a113b9cfb42e1a6708ac8ddeceadfb0e80d1165af9a2bae7aa5be329233a1ccd773aa6b55fd218de69db5c53bc45c059def6198341b6fccfcfade6f3be83e1530a0cdfa489033e2897cd7f825752fe04af3401bc29baefa5ae9741ceb6e7f51b71c5747063a06bae4c63b8714641c55ffd5d2cdaced826ce91b9af7bb3a73eaee3973eee5e41712eeb019f7ad3d7cde632c9158c26fc460f2229fa20fc0841d52782ef167ac6c8fe90de831a0fbe1e4673a185374394c0e76df08a68f87d29ba70577a9f71b52e5db793c3163b29606eb0a2074ae5edac9eb7edc25dde79b7ac6327267028c05c2573e552e071cccc8c0a3e892c2cb50ca62bfe40bfdf0696385fe3abba7e45438ffcb7f9c3abbdb739feb0cd1f2773c36735bd28d1d4570d3e5687d6b868f461ba99690ccf0d1e75a88fa4b1d3db12dd46f7ba68da9e9b3dc5799306575369eba026a288e1c31d976bbee13fe29a50d7b54e4e24dcf7f9f739f58c31c0c2b5ae0102badb63366cacedffb1bece3c57a8e9fdd831b4b08da7a5c1ef44700530972312c318026bea6959b3acf624d19ae8612d9f9814bd3f548e1173c3e27c87cb850f4bd552571712e89b98decf79acb983b9a8e2bbe6323ae7d3d8011e8c22270cbec74ed4eeaef80d7c9b8b287c28609f808f2a2e6272398d8b5e22c0ddb2a113a1e79a157e76cbfaa4fb685a711664edbcc22ae035d652bb3239c8d124bba976b7c510e2e04237a69d1fa5b547d2ea499e23620d455c7fd4aed674796e60ca7bdb0edba6f2eea8b46dc53b15567d5b2658746325d921d99f787eaf84dbb4d0de02fe43b46671beb7f8fd4c9900d75fdbefdbf325e163cb016f4e684da4be329974739ecb4259e7c9bf33a235e6720d9634b6230decc0dc48076f7f8fb2456db9f9924baa3cdb9ab8c6345b8805e7d5adec5fa5f2de38bf36443108687353ffb6fdeabf1dfcefd861b48b33ddf5e7a3e06f3ae76e1b43e64bcbdf9557f5a12136ace184e4effa67d2e79f29cf042aaf53dac951db793f68db4717cb904e96b6eadb2ab6150d3fb0ea0355f714f16b70adf13b7ecdffb3ad71f612aeac5170b5752db3384df9d2596c77d0fe69abc518ab31d640d2ea3a72ff1a9f30aead15f8c2321fe7173d5e67779466737902f5ca9de61578049a7bbafc5968eeb193143a62ea999c063953d3183e2cbd0dffd77807c559db717efc491fcb4fdb073eee9b2da69e33c59cdc04bb4cea932ac1dd619b5ed425f3cf134c05f4d9566b3d25de7082fb05dadeab6b0c03647fa19644d622e4fffe4fd7630b1f15e46dd4d2960316a67a1ea239add59ff03e92bbf2cfed5a544dcc4e274e38e748ec133dc89a6d856bb6e634317e49bbee0d8125b9d4a64e79b537aa512b6bd4e62abe47bd56d676cfa2ffa913ff5ae829367da5622e9c69812f39533cae47bb37ec1778a6f1a4cdde96385b4e4bac80604de8b87c0475aa7a6ea23c5f34a8ffd57115c95e06ec74235ff512375bc566406c4573cfce944faa86579c57f5fc0a3dbe0a96d76a8c49a0c7a438621a17f617f9bab5ba79c57fad5eaf7c67b0fed3c7ee24dd6c75173ad3dd19f65dcee11921bf4a385a6add4e609ccfae37bb9a9c179adc85687f7a6df60c308c18775bc923e67b9ee6557cfffbe55ce07d2da6393692fc1ddb2059c7cf8b793e4b8c12990bf0d5739f716b48a1a9e65c985b8aeff2a59f792eb0f5c40f77f49a8ea88a629e2df00462bfb81ae7d1dc10792ecae6d27e1e9f911c5f8e5f81dc4305a32d78591e9fb6dcb7b54f89c2deb5c58459ce3d41612e73ee00c3c9eb0f2d3ecda2f5ec2d7121edb165403818801fb72b46aebf7bcabff25ae62fbc22bfd5e935e35aa83babed7f031c6efeb7564c7dd7da6ad5e22cea9f2fea77edf8b58a2dbc846d7e257a8fb578116205bab73ce71769f1bfef39b6eaddbe856a4e16f694f4273e4b3dfea27b945af1e172fe5cf8dc7647790f68f9dcf59e7a77d4ce2f0afde5c5990eb5d7377a373e7e3f66e43edae702eddb12c7d88a2b221ce099a54fce58536146788e732d9072dcf351104911f8d7b9a6f4c60af87b5e63a0e764394a3796dc9765d59d69e8de0dfccd77ba98f0e12294a41de3a9c836a1fb3b84639f8a63bde5e8855fd076c6bce71376fbc4bf1b8757732b8536171a0bcc33f063c1dcaea10e02fccab3ab1df199ad0b49ceed4dc526f146f9fcb957eed99a0b7ecdb3f05ae64ebc18e2631df8608728a69c8fc2c1614a5d5f0c2067035a38c62ccfc324ae3839efe5e06fdbef333683fbcef772f0632e6a0cd127602df9db73c0d7875cd2792fc3bb5cee544b9dcb77dfc2f99c6f9b33bf9589266aa3e163afefc299e8794e36241c49c081047df67bf27cd66856e418e8b5425f7f319d35d652f5fe353cf648c8e879a9aea9ea58d5209ccac2f6dbe1c2c0923157931df1cc4c94424bfff8069e1f31f46c31fc61e95b1ff250f59e4131807e4572ad24e708a07065b5310439b7cdabf59bb471825678e18dea794ed946888f6b712c538f63a9755b8f5d5ac752c16366852d6de603287fae3346cb5a39e5b0b6dd2424356bd05c6cc745ff1763ba2266833a7bf8a074c948feeca3dc67e3cf78936bbce2b9936cec3b00973e396b404b23af913fff1ce86884f5dc4731aff4fbe9e216a6f21fdb5338ec8e21275ea973b1022d60f48c2d79fcd24f6cf555fe1bb8188d9f0b2be487d4b5b63bb0b6258e1eead184638dc4e9f9f945fb76e0bb6cdfd4692ef5c9f2fc5e3838e0b9c7b93de43395f53634e6aedc5f9bce7b02cf41fc35c8d7897cee8795d8f1828328ac62fe4aee7eb4a6a99e0d642b49ed707aa971bbc45ddc2e653d4c009e28cf19c7dd35f55143fb9ec4f5749d6d9bc7746bbb47bd03b58a21041f7dd43fee45edb867fa373a2fd2c057627dea763d6b827952196dac4dc28de2873cfcfe846cd84b9dfb2656df4807585ba3c8ed167c17f4fbc77a1bed185ab4cecc9e04587efcf7b0c8b9b7ebf2a7d0774062558881ec9ed42f71fedbaeb51716fd292f70bd68aeedde10700fffbfbdab76ed71b447725b34d943ad78d5a55748e56bf3fa5378b1f4fe83ec8da4e4efdfc5b6ae5d31c60573f82f94c94fa7e7c6aeb83ae3bcd7ca7338f5bb4d777d1d0d2a9cab8e0f3c033edae7fbc7e5681aab7046e9c0d39f378defeecf0795e7ff613fd86ccd49c80fffb5a6c6d358234a7cabf2bace923dbdef441eaffbb2271fd66f9e67e8d43e28e372e8c129e607f6501edfd07399f7c804f9fc5d964a0c5cf9c59aefb25d187f3c744e92f7257fdfe780d744fe2cdcbb395fe3cf1f38ae21cf94f7f08c829f584b25f96972c2c3923fd375047d5db91daef247363f9fd53e5fe2cfe9fd21125b12bdb42335ac6659177a650bdeb60351f5fcd9002f337f473fafc186adce96befaa5443cd339ff4493e69d3d6fc9416273c1d5cef3b22a7f27eb06edd789ac5ae24e9304255809c02f06f3143ef2f5a670561363f1eff33e310dce91f1674cfa011b31e99cc2186fb166692dd6fd481c1fb427fe0b9c34abdeded81df723af951b652e067cb5173a48ec474b7f9cefddd0efe89ed88538796edb4e149f3dbe37751f33caef435d93ec1bf07534250837ca312ee672afd43f2f0d0ee200bde70a2699b66f35dbf6e45ab3488a06deb36bb5d8cadfbede619ac6b3b7e642aad4f5c8f955f7f1f825fe3d992b265b346d3fbfcce0338aaeb295fdb451b6048bd4efe4ccb31a1c55746f6498f79fa83697a2b811ec569d631ad94897e3b37dfd5abd660f82d29b95794e4e3b913ceec93efed69ea5c7cffcced82db975dcb9fece873b953cb387f3cff0b70cea8c3f95a8a951ab71d08f73d5443e41b1a41dad4285b3ca5ea6575c7ce34bb8a16a4776a4f5ec9ef4abd02d2eb10831c9ed033f42a5366d747dbfd6dfd2c2f5a8725aeaea7016e17e38e5f3a773847c06e6f3959974dd9bfd9a6721f0feb6e5429d9243f961e9ced5217a90cd1cb297cd1f93cabb5f9c3ee95a197cdf2ade9b8afcc541f97c2fdf6d451bba52339ff4dbf0aaa54d6fe271ebf8dfd8615de89fb2c3ddcd16b50c30a02a1f55f8a5468d5e8ab77b65ac2c6c1b67f835dd65e8fc863a81e1de9c2879ce0b3b09212f99f7f495fdb490f32eb82af1dafe8633ee4b571b5cd93936dbf6699e9d66ac59fa892c3affe25a1f5d86e2e596bdf37e2ea0fdddbdc21aaf4bac71d8ad6b44cde9339b56f039330d2eeeea7cbee6bb29afdb6312b9c1456dc5f614b85febeb11e2cbb6dec736ce57eab908ae97c4388657e151c17121dd1fcbdcd7dcc7c0929f72b45c910d7a75af16ce96eb1cf7fb497f8af3fe3aeddcb6efbfa37323eb85cecdaf6ebe5ea7be0e029b49430b34fb4bad584be4e5bdee9edd31e32ddfe0f44567d441b9fc6a8cdbf01807ed25a1bdee95736051f63eebe49a9153520b48b3d2bf6452521768e040acc87a58c6aec04138e12536e434d3b9e017f289f33addbe8eab87be83556c89da4313f9a9a5f7219fdcaa2158ccebeea6885ae4567a187637350a4ffbe996b7daee43eaccefd4030b1cb8f8c1abbdbc3680d665c9a166658ddcf77b18ae5eae395b7b5799972d709e8fafe6202fadba529037e7acc8e134a6e0b779194babd7af11cb2c4edf89fd60c3c529b860deee499e23783886c4ccc5e09fbd7cb9cda3418c35b3e378c14d125761aff3687033e534d9c85eb8387dff72477dd0a25a884b1eedd52ff9c20077ef6386f395e51a5f5aba55628c89ffa6665eb230d4c4cc2e0fac790738ae08c73a5eb96f5829b6b812a39c63b3d1f7e73df47d96fefe19e39d1a73f73bba2bcdfdf5865dd873855dd856edc290a9f8c9add8f8f46632d0c38a6c76f36f2496243e6e9eaf78d4f3152d1c47b46ff2dbfeb93beaab0a930a6a20a0f8a0b05baea83d72ffadd429d8fe36ff6b372fea5b632bf603c5e732d91ba4af46a3fc2bacfb59c3ab32bcce610d7483f2e56d6e25624ee919af7330dfeb7d89c5004c2bd6617ddf9f5c885dd711fea5eb48bf751dc360124d0cf82f76b751269abcc5316aa776a2dad015944247e4b30243d8a17fb3cbfa37d7d8a2efa2fd97d8feb75fe0eae421c9b16ebff7390fd4e8f3329b4c7eccfc8bb438215b9fd765fbca97cefa36773f5b5a7237e4e0d7cc1f8ed6feec972c436db9d8236a2fbc98119fcc450dc577f13c9b7d5b8677b7f41563e9db1f333f39dbc781bf97673f6691eacfe5c49f89c2d19d6a9e3d3efb7326001fb6d837e1aa6febd2cd1e79219a67c82d090dcdbfd861316fcd6b0ca51058c22e747abb2d3a2f2b76013f1bcdeba95ac68a51a73b0a1b08f1183c5b89e7aa62d6a02fafa10188f3711ad88586fec12b9dd56a6db8d95b1c229fc1528a7dc4a07113dfe24169c2d478f9f2f81ee603c794752dec518ecbaf8c9ff0a8b5f0bfe56b6942dbcd8f04c56f3416facd3eeaf7b8d55bb9028ab50b7da7f4ef7711f00d65256f64a5e61fb7d97ee827365ace8bb0c0e6577001f3aa4d236b39c98c12a34dd93ac95e864c0b16224866b2b025dc34153e9bc6b5fd3a6f51a1715aec8d3c173b9fce92e63ce1fa7273dd56f6cb0b2d934b8cb17dedeb0ab852e0bcc4677a89d155ff69e13deb384b80ff70db883d8c15de7fdd36b15cf76a4b6e1aec0b3a2b358cbd056c0fe3cdc5fe97a5a1f7d6c81bd21a2d59c1555cb7cd0587589038a7b6f9c51afd2dfec2ab18b4e0eaa2ec74ab6dfc0ddfab31afeff85eaa486c32f8e1f4be7fd18f019a55f7c79afbc873538ccef55d6407add2b6a0d8acfc99acd1b2cfe78d5ce193fa0c5dd393a6331a3f1d7f45dac83456a125acaea631a4af0935d0dff93cb56ebbce2a2a6ea8e219549168c64d67b06e731b0cbc74c22e5e84941f213fd7d759eaea65757aad8da38a01f251729ceea4e15357e2c212ab6bf7a47ea32f95bbc4ce04d7c036f224a5fd643477509f3296f598bdec5f12f9ec0bf03b455eb7ac855158f5faf52c83f9b96becb7e21a822d9233a419afd39a6fc0d7d3d4b46ce65b9ef575db545fb7d3ce5d74a5f0d38f3d17de49dd3e924eb34aadef304d4b2d36146f4d766db1aabfd7fb0d3e9eaa1f51f4df527c6c95397cc9254e614fba63ed899658c4a7998b1f80812e7c81f127cc2fa53d57f46e3771e7d0e3fb77c7efdfa937439cb68ee0ff3f3aaf83b5fb2a5870e4d335d7d2efe43f1befe89dfce7644fee8bec8c19d575810aceb82735d4aa2dd98941a3bf7f4ead971cbffa866fd6ee873ef1cd087f613c477351e49b01174ff05ad473a275aea3675bbeac0f377aec85162d6a8d49f6f5fa53c850b833d80b93bdec4d28fc16ee33c575e0b8313ef26eca755eaca1eefed81a7667c391b558c3249758c57aed3fc46ba93a7fffa77a158536dd4463289fe74a6c10837bb8e1e710fdfcee7b6bbc23a1e51d694c623f1aef2d319532ef51bec309e985819a77c18551fe3c8817a2c0e7da464a534f9ef2ad862ce98f79343813aaf6e26d4db8bddebfbb06c6573a0f965934f9e02af7a5b9e06adfcd9f1df9142bd0386477b22648c24ee3d70ab3130c66355427c258d676d6fa7439da5c3fdaeb2eeb44826f8bea0f14831d94cbb2eeef399116b8fa2ac439e1f20c7bd12358f4a0620c4615936bfbed985ce7c85e294c6e813952475eb698bacc5ce1e3fc5c72f53ef26f41e318bddff56956e7553c62be8780777cd0c501ce8f7d3daf3b493b6b73db5328d8272bb445fede92076fe6f0cbf333cfd9874f6abe31157bdf0abc5a7956add15a5d730382d7ee73969ede9c5c8f24ea7ba0ad43ce1c87d38e90bf1801472cd11a0a7ed87ea93bd4e4ffadfa6985667aa96f7976002fd99823d68ec29b1df077570c2f80ef7f165f91da46e7334c67790db39c6f153f971d0949d143a17fd4f5c5333ae7503917653c861c1f09b1f449bb14cf16858017df8c99146335bbded39d5f36f31ae4f9499e6a44ee55e4f73f1a386258a3f598eda45dd1df346315db91db787678a7d47adbcb4fde453d3eacf9ab6df6a49df7f3dbc77bebe33c978768bf9f6d6efb6d72c235ef9798892bcf16d3d01a0d19970b8f963cabf6c4139f11fadcc0676cc5a65675a3eb3183d1752dcafface92cd2f5eb754b4fbca97f9c1531b83eb38d73b9e9fbb6defb6ddf775b6a2112fc44e73e004c7febbdf91a2f38b6a93afbd0a652887c8fceb5057f27f5fa86bf2ac57624645f1afeec1f7275b6e970d6f70bf2253de7146ab056d17a1e7f26346fffbb3ec29b9c4a4d7f2fc41ac38ecf5ed19ea738b596fb46cf23ae4f74cda9ca0991257b3139aff1d8a7b38b7d64f8160d0cbc3fc39567452aacbfaa9d0fce84efa96b1cbf9672117717185f772ab176b43ccfa7b35fb61fdc967e807ca05c67bff25eb1b6527a9bcbe9235fdbc8469a86d4d7c85eb7e4f4b67862a3c8337b8be912fcdcc65a3a95da21e49acff9be890ff5c7fe8172c9af81d64cb8815e7182778dd46b6ec3d0f9f5e2bca7dfcfd3dc50c1c36e6c2329a2ee4d7c76eaefc0f782f1f441f97b5dfdbbc4d917fc8bcdb3949c2707bc26aa3c18d8ef199abd1d6beaf7e7b92cf48e22ed81ce32b3b7536d96eaef9e6e8b3922b9a8ae7b818fd5ad495cf4f2b7fa8938ff5bafb934d6e7b3fb6ba0a3c2685737d212bb376c702574e82c146b26f745f74a030f38fa52cbebe25c046877ddf2e72a6339a95fda6df56cfb24ff56ead7d57d8278210e2a396112137973398598b288b1a7b3d6e7374f5a64455ad6b69fdea91175f3e9d6b8004780b5af63cadbf31ec015684596313b2f734ddc7f8bff963a37acb6f1bccae708977021f6ddfa18dbe6f6b738285b73f4af3828d3fc9d669601b8b9a32bec6e8506d7a9593b4173a9a2bd0f9ce2d439322ece3e81f49c16fd08a04d4dcd1b3eafd5abc3853f2cc827e0b8620e3d88af717ec5f87caf6fc97d86b21904e780627ae287d672966df9fdd2f6aa7fa138a01c5791e73859c61638e3b16d6ef145aa755b8c37861c7850d830f06ff4e7bedd738df84fe620a71b338a43b3b7bd5aa216016e722a213f2d7345142f78cb3d8aaf73eca520b5f19dcaffc95a531b98ca77f4f525b4d6d07d5b62012a7f5dcb35e1bc71a51faca5b7b1e8fbff93de468c6ff7ff5fe95fc3bd5e682dbaa33ebadf5c65f8b51a699e256ad946d5a0af13d92f395c6d94d0cd20a638b28a25a7cc22009ebbc434c28d3366c77bf4bb10ef07a5f7c9ab118c73846d9b843e7372fc276b768af6c8dd37583e7418f6664db5c4926709b2c9f654c3781239e4c9f9db9adf989db487250f890fb1f5d7dcc7d5c1f3705d4468dfde7daace36b18c5dae7da2a2f53bf3efe7aeda93d3dbf17339486cbf1f201f7516ec845d20688ab03b28ec107a51d46c96ccc5aedee09439c801c6a58fbc703192eea6befa051ce4227fc567d1b3efafeadf87f5e980c6c5b3ef79f5ef1d914f857c72b39773093dfbfe0ebe4f7c7a7621debbea73677bcc16ef17d980bdee5e0fd3f4196e32b18f4c5ac773157ec1f872dd4c67b8fe4469e8ece5616c37cee9cbd590c3e2fe0d5d5086efd9615127ec2fa295678bf733682ecba04f66ef3586b7b44b6cc815ed7d7efe427f615de1d45d56b005b388fadb91e1c18f07ddcd1c1b644639ee888e2d168095372357b88406e98b40f6cea66236dbcfb978b7b96d8a245fbaba3aeb5bc6ccdf282c3cbfcd99c8e6147e4efe6c5f1cc4273fbad6bc3b3223e7f8c153df05cd9c8d61ddf6faf67b390acafd79da46d269673b7ef2cb90d3c0e6fae1da179883c1f2eb5e2577037b6d6748195a079632f0f37aee4c0c1f33b17f7347435c4fd0a5c4923ffcb52fe5182e3aaff1bd2f7831481d58df5e677ec85734feebf93d59a2d6e38cdf18e8dc831c6c7e0f788eb67782f586be3dfa1de4fe8ee3a7d0974bbf13e46feb2cf313d9669c73fefe399f92b983184b1b1c44f5b2903fff5aa2b3cb9f9c9d237b2bf3cac1d542b641496253eedf5d63856268c05bb8ba1a1ff49557f6ff06fc17a7654ec467ebd38e3fe8168a5b127b1ae2fbf76691e40bd922dadd88f6d175a30faef95a407ba018bb3888e9efa375b79743668ff654368c1711becf81e22b368d4a8dfddca8d76a17a8cf40bf91d8ea7f138d9c2dc167f68f26f2b56afce796c6c4b40fe94e19af81eb112ecc2248855db8e59702c3cff0cffe62bab3dd11e1fa1933a9a1303ee147c9ffa6688234247fcfe0efec4edeaaf83307d9630fd3fbd955d89f944d0c16d326b7438557f0f47d7147fdc889f8cbe2f48d7977308e9afc0e7abd99c56977ab7fd67ee4bfaf7ede54d8781e05bfec2cbe2da64bdc0f5ed6a541874bf2cdb3f360ceb61fc7f3deec1f3b0b6ea61c24cee37edfb0979f5fe3985944566673ccf56b94f6c1e73e49375beef70f721a1a4afcd81c277febbdcb07fa9b2b0e8acfc1cf0693581af323ff3bf9eec7bcb7fc672f57af877e67f7d0e7597e213a4f6b8c5fa3982138f1fefcb485fbb86d7e2295b3ff1ac13c63bee85370b1e47e9f8a1d57a6b13b2f4ec39b9b79d7c57816cf199c9b7244be379fce92a51ff28b69ab760df51e09f61dd7003e16e8bee3061ec743fec5d2f7000f7390d3cb93f8008f2b127c27fb46beecc5343c135dd7d6c3ab3e0afe41fea6ad0b1fbacc328b888ded308891cf6634fb1168ff32b3f41d0b3d7562779cf3c5a1eb7dffa071442efcbf6f2e44351f4302f71fc764acacf7059cfeacf7257c27968cc73c9753f43d6b1de47dfde1158f3dbceac01383c7be10d1f7821f34bf00796e0bdf133d2b8a8383a418df49bb9891962d0276a80bbcb2552dc160a0df75bad366f9f8d6e4dcbb2a6ab836d8d570176807c0bca9aea0faf9f8faacad4ba1e3f7575bcd3ba88c20ee341e7a5e778c2617e32bef292961fd9e128fde81d9a8635067fd744bfb01897dccb93fd94257b6e0af8958c05e6d8ccbc7faf8997c29e7fba1e06e6475cb9098bdbe0ab79c06b596cae7940be39ceab5bd021b7c29708a720abc0645ae3f13627216fcc4bc04f999938f79c0ef65c0c3b256c187da1c0bdaa7e81cf91a758f77710af0670c9637398131b96f9c6355d89f16f6037eb853964767383a7fbe0cfc4c7bd98c663a3903319f11eff8fd7c9d13de70ecc7813e4ef97d88bfca9a917ac5f791f8bc66616b16e0c54c4e1b5b10f3ceae5fa3015f9fb73247f5f4f98a1c9c9df30796e75a5e7bbf6811c4e647cb588dcc88ffc039e1b4120382bd5473bd83f63c26e8011d59db68befb18defda87fc51c534152d5804c3c3beb63df8c83f79bd7a4f26b7be83d11ffe2a7e3139f439cc03e5ec0ff858ff96fbe473b43ef7150798f38d7d47c8f7bf9ddf758cfd3a2738c2d7bc9c09e93f96ce7740c1b5aa1d3425b15f91f9c657833cc51a7c6244e86f3375f1b9ade7f98ba55cd37c3b954cdffb823742ff87e3567cc85cc7e22794e8bde7b056356d44184073a7724dfbc6fcafa09fafef54be199f5099fc35fa34bf56fe4ccfe926bbf375898a36aac04fcd85dfaf3972d19c3fc817bc26abfefe3df87fc6252e8520416f892dad689f83bda3b288eaad635eebe43e674e6a73f2d4e63d651473cfa1bf351b3b73f9a7b1b734ce1da11f456831dc639ff7c2d60cd7afba45dacb2b7255d88ab9b1d59b1d523718a72f6965326fec3e71edb3dedea8e66c917e786eeb883e3aa58ebc5331535c7ffcb31e2797e7b6c3087ffa7e32176f7d55af9ea7de7efdc87f78a7ccaba2d565721d4b5fdfec7621ad43e1f3cfb7c1f38ed900dd7a9e791d356bc12f0cd576b79574b773d570cb9062eb2693fc81a2dce968b697cd67dbbf27bc80ef8787f7e2967f0590f0613432ebcb1df419bc3b3220d6baa8f3bfdcab33b52cf054fffa971cec5734e8d255d25fe83d671af16bdfeb65e276a3fe6588ddc46e8394697d318a8f5aa58831b5dc7e87cc661661916de37ddcf98d7c17b7b6377c6362dd77e2fc73e9f6e2f4b5c87acbf53c050a333b55d5f9b8e730836ac3c03f2b3e754f4448f3c66fe98c0d9f304f3de9fd79f7724f998ff23bc5a8c74fbeab42b38365f882ace2d1535e1868ff4d846e83a2577f1ffb26fbeeeedb2af8abecd8c37733ef5d276c60bc0db951ccc85afa95c2abe72454ffb44f25ddce0fa3506fd1f340f904f213ff376d6ff98cb298ae5ffb27d1c1fa1583cff19fbcba0bbd2df881f2446c27c9df0b3c2dea01f1ac5d84aff8a63ad20bf07fa19dda34ffb6128ae73c7a51f6619eff8d36add9f0e9ff8d34ce18721bfaadb9fc66b65cc5e0f06f129f3cfa8b0ce1bf167977f4ce6f39789626d78f74f3f8bfe9e7f16c59a2fae1ba0cff6f335f5fcbaf8b3bf6def4163cb0abf261ee02f685b60157116c667e3fcd88077477dc6ee0d71df3b600283ab33d51efb917703bed5136823e0be64ac5d8cedf6e8fbfc24a7c26f14f6067580f1046b81717ce636be53c5647cc9de6d31ddc60b2338db19fa1be4de602f9872fa5888f7c4f2d33385abb8d83d2ba4b5019ccc0b31b6a0b627c52dda93e7b99cde37fa968e4bef795cea8cd9808e4ba938e7b4313e8b38652f1767d05f4b58d7137eaf5d628a832233e4f4b1d1439bfaec05f0d963f6b4104dde8df8d81a7dde17684e8eec6371fafec71ef5fb0b6379fd92e36471fabea0b5358feec88ff6d0df1db407b909fdf7fefcb4447b7bb01cf32cc941feb08e1ff74dafe062fee1ca549e7114a077937f365e67c0ef72037db2f2dd9fea31977d7c1e733923339a199fe55e9fce786b54d9eb5951031935f6fab58cb93eda622e72f649a1adf39ca5ee58474c63d02537ea5801585315de789d65683dc922ff5bfd5cc0bbc205bdb7dbc698fd5a2a97db66ba2dfc5dc9b7fa73c0990617c09e4d77b6cd32f14661eeeb2ce4d0df5ce17233e4e02fd7476b30000da0bdc2323ac7bbc83ecf1f4c0a35423cc731f04fe93c85c1ea832fe18afc9d7087fcc73937c86f2a681f878303fcccf0286e927c0bf96b03e0db18f3cc3ad2900df9f955393b05d360ada1226802f2556b67afbe55536d6730f06e0e32eca586fe8cdedb5eb7278975454db47bd2d15298bba1307ee577f22c213974e48b7bce11e7ca81cf441790df0dd75144fe641a12f2d32e7b7dc92f43c8b5df2c4ec890ff64ebe1717662ced6341dccc52dffd52bed47ddcfcc6bb8f93edc280c6ffb3857608dfa23e7a431966add9c6815e6d77088668fc509ccdeb0a0ffa7e0fc143f0adec0faf7d7a73c57d27c4fb44d5e8883c4545af32c0f9267b917bec454e59d8cf2250c35f725d80d3afbeabec498650b5fa2611b4d7e8ed67f6e93c4e5d992cb7bcde5f4bcd14dda669e8b5cde988d9ab9bc2dbf1f915c1eb2b7c6e5638decd8e812e01801d9afe09785e20405d9b621eb70df676714f2bf5563e2901f548c05f339ea66b5c694e53526f3dd1a536d0c1f2fea5ce8be024b8d21dbe0b3a9188353d4e8968d31d87e31866b7b9d8b3917b83b7d56cd2f655ea5366567c53bbbdaba709f8fbc27358c0be496d6a76de28a831f44579b8e2530ee683ae39d91775d4ce95c31d48f4ef3a9642f05266ee1e629b17da74b50f4a62b71bc986ad7bdb1d32dc0b9cc7ea09819aea331d7af118b79064edfc0e5f3a59ccf8433a0bf30e05ed72f39b899a01b1000c7ae35d58e96fcdcafb0e43e3506e427ede29c536cc3a93fdc29d889c0d22dcfd553667d6ac7feabbd5d867c0cab177ccffccb759ecdbef7a250d49081b31e630a426b34ec5bc6d6073dee4a9ede29f9983167c406d91cfb940ec05e75f41dd8bd21d1be1ac6e8bfbc9f7de607b4a6890f3ea418a09f636b0c672b67736190f78e765ddf2a31d750e776222d75f53003bd07822f22fe7a45c775a6307c1e2b765ddba9e0c48617d758915e09e13a2b7231b378dd9b4552b0048d48143b28be57d86ffbc1fe84985739fbbb48f3d0dab264147b953e02c43c197a6e16ce56f26f98938d3183f8a63296071b1ea6e9cf038a9d220aab676c13bb57a92f0b1476166af2eea8dcb718438bf105b388e68ad41e8031984aa16368b11369f0be2ab513cc3fc95018948cea7d8a37c6ce76083e9ff22507abaefb079a6772dfdff9d9a90227e1f066f9436f5668587d7cdb86f67047c3b36958e16cbcfdb67bb36f5be7334b1e6eedde2a86e73e2dafb5f1de8087e091c63a1714bed142115c6afc37183ff4dac29acb70be94e1212faf2dcf7b2db91bc01f130e0e2341998ba1bd14304f4cd71a32abdc6ff9f8512cc4987a887c271ccb9f96f97a6d8c11f96168bde2fb235fad6b0eadd839a1352a5cadd13031d17a158637870b09e64640f3047a2e9621b07b03ed45edea8e3e60bf97be9773fec2b9f71fb3b0987b1ff292d41a41e70af1472a581235abf87cdede58ad4d15307939c6de437b5af24d8f705762dd1b8c4565e6558cc4a6a17181759b697cd6cd39327ca1f13cad7c7f8ccf43cc73d3f99e206f03362ac3732381be0de1c72163c3da4a4e8435195f5cab662ff0f7d0ba447b62359af01b83f6d34d0efae129fc912b7a99dd73484f353e63e72309ecc24c6459077479d46f53fff826f308ba38abd1f0e6f89f5c6d6d318bc8ba39789f3573a2f83995f79f8bbfdad3e0dbe4f8ab2b0a31eefd42feb7f498f9213f97ab6b4229b8319fd9a03068b33b68be160af4bfdbb353ce573a4b66519e0793dc05e6fbf95038f35c60c79e3ccb5edfe67bd1b7e4a157cc958fe66ee8cda6c57d62929f913a73b1e105d77846fdbe6130c9be8939c0586f39050c469e9fa5ce00612e24674b61913f9ee8c067c4ba5837066a2fd25c0e5de09c1ab3c0775e399b856df56c2e35c3191a0f58f8ea72fa584cd5c41ea54714d32f47e979a37c26d618303468df27ce9829cfab2ab6d607ee96517adac89268e902b219e10cfa05b6897b64ef9bdef66ae5df35cadacbfa887c2314cf0603f778e9e3f362c9cfc5253f9327677b5cffeecafed28033293fe37f580f9ea1cfbcf5698bce4fbfab7f008feb7ec579e7e06f7bd43fd1bd2ca5fd3fa715be0f344e8e19388fcb853ad70e689e4ce002a1e799399b0a7bdc70f772ac51183aece562287102f185c27a8bda194b70511f1b7d82c7a75c1e2e17e23ce591f1906f45db5f641fbe4666340beab8fe197ad71f9bc7e78fa59c7ecc0da2a580c7f7a3aa8320919cf9ec87257bec42fc4ebee4f4b010919ff1fd6b9ea5877996d4b413a40adff0ec18e3eb97e3407eb7bf8e60fe72df80adfb06e87e7a4f729bf7bcfb8aa125ae18e663437bfd43f22d18cb0cc7d78a3b055e5b587f681e8c2cf955d3d1f0a939f941c6be42bef15ead5ee3d55849ef7bdef38dc75de4c9d88870b586f3a9663b216bef3526d98fd2fe42182426f20347c9af75d67e6f7afc8b9154f47dc05a35be23299afd9af718fa592af3517b37f81e5ab94ede7bb66f6ace6bf7f73d7fa37c42de7f39bec41b7846a6dcc7f8d9b17f250ed0676e9b721e4adf45377fda59f26baeab6757bb64867689b1ff929e17d32031b2d447313a3c939ffc3a68835ff31e5bd50309ba70fbb31fd8bf9ba1fb671b7152dd7b145ed2f1935f736d7b36e5eadec76b1178bb8a39b5442d32d1bc8ce3f6332ad4ae7bae7f73b98f6faadff35b03fb82ce0a963f182cd8905d5bff7c113ba9bc65fc87b113e609bf3b9176dc1ba09f43b40aab7606bd474bee5f5c63e7b9790d8b70956e14f67a98a6b1c3f43dcc4f34e0d6115c27ff7b46fd3d9b2b83c7fa344b66c6b6c33f990dd07bd89f5637fbf8d111937dfb36c9c9cdfc4989f5163f3aafe94ca5d0e442d0fcd9f8b46f35f92eaf4538050abf60e651b8e5ac6b9e3735bff6d9f567ca04d9da58f2ad3c3e857f03de75cc426fc8e234f49cd32a9c4f6245613eae0eb19b7bddc27e63c1f35ee807dded9e735e2a9f4985c31dcef57ba35e316bef8da462b1fe15e7498b1ac87541e584e74ab5e607fb87fa3bd11160d0fec87b931de0ecdb9e71ae390ee7321f1e808f619038e0ef05893b657e567cbed13b3e1fefeffd16bf9b60b8f25ea27c6c1b4ee55dc0e3d6de59c1575b6a26388fb8e22bc09c50ffae5f03b4ef15f6e967904f46f53235f9d2c02f50cbf11e2791142e734ed5fce7d490838a06025ab72db15088b99bcc087fbfd99b309b6ef36bffec8817aa7392bde9bf8b6abc10d5ae6baeed6c48f86487b5ebcfe203b53e6713a6e883ecb61912b2cbff38e80ceaf0fff31c2f89914e65ff6aa55facfc7da1ab577d7f87694abfdfd83296f45c763d2f353e2aee928b3928fd6091cf6654af199d27aacc8b30abe25efd345b88416267a9b751ef2856a638ba26749c88d6a857703ec35a4a619da0b9b1c3e46e18e900afb109bfd1fb243f51ac598fecad07d452a72a6fd2b53ee5f2c8f3da265957541e25d928939ff63865d7dc1dd9886ca30bb63d6252c2d96adb02936c652f034d24ed92cc815b2a880fd3b4b8eebed237b4a4ebb68feada99b468c0f5730ea92be6ad1af0ae00bdc7c8d6639e88078b793ea72a8fe7214d36c6f26267e97163a81793eead1d333cf03c64c13f66c69cf732ebcde53841f39ce3d4cdd3f26c8f82bf725b68ead2632e2ee30d77ff6b39e66f9b319b49be956dc6ec637d5a0e36c62c924eb3c1461ffc301f1ff70d37196cf42092a260b031d41fae72e7f7b219ed953b6fca218fd7c039d93dc3eecbd28df46c55fa952c85473122eb8a02632971b87e91e728cee66e9b9b75e96376ef5f2f3c4cefd4b567c009dd918f7d6e9371fc19d7744c723f2b8f93f0755a3e4bfede7ad6cc456d70a0f7b20f1cd735df2ae4714f52003d49a576e02caf93f955dd94d98fbdc2cab8b7ac1a8b10ffba3d76a2e2ba7500fbfd8af6d94e178efb168cc23eef6b02bb11c4d057d37e3fca9f8f97f02ccff23e792fbf7671d7107b778fc16a19c3422c6aef39eea1eabf87b8e633a3b4c3dcf1a53d7e3c915cad71e1d7cceb39a1f4bbff4171e37c34bba0f3c2ce806b64e3727d1a1f19ce8d74302fc7cbcce5f4a6739abb9127f7dad85fd454bc0c38cf29ff1ffaeba62bd6990e6f0ed451502c407332d4fc956c8273cbc7c1b9e9b7b0f102ada7d305f639f2b76b79e41f7b83f93153204f7ddd64de539f65a307893b0a7eb899476a1171d6c8e546251eb0ac79a0b352f2ed1ee4b6620b780967cf7a7f56586f70c62b68bef13e15e793edd9f1d39fb40fbf3e429ff0b5fa5cc0fd53fa4ee36d4c610c80370ed9a19def4de6e247f2d51b6696be8a41a3f278c6fdbbb567c7fcdfb95f7c6f72bc965a98e8fd6e1728de6490dfde972d5d082c63867b03203edc9e7723ef8a7c5d53a9fc2e9b43bf18bbadf47bb769e766a947d73eb15673a91d89b185716f3ef2302f30d573aef524e8f79ccbfd9e13858c257b8fb91cf25df8058568d16f94a1bb91a5b5dd932ea67ecf7bf8a4dad8f8a5c6f0b3a0ce5326f173311e1c46de3f685f16b1cbf4fcbc070cebd7dcec48bbbac2ea6eeaabd88e1c1457d23d669d9f5bfa44d7551c746343c54a3f01c145e098e66b44f428c401eff8541d15fc8419704cb8821542edc04f1f1b03b8f5125761a95e33ef3157d278d35bfed8cba4afebb48a2deee3ec6441053f0d98a7939a7c29b1b73805ffb85823dedbe8836efcb1fff998e77d60227f5afa5e7e8fd439a1d82fb8d924b6721eecad5e17a76a2c97f9747673474c0a764c4ed96aaf05e1362df199d15c40f122d69ad7b9be0bf161c407680f3a21eb2ec69807c7c6bc2e8f8dce83965f05ffaacecefb0cb86f7ecd016f91fbe27df0194d4efdb127fc528b29ae27edfd3e5987294ff5ca27e6a37bcdecc70cf492028600cd6f9463cb53c67ec48fe2df27c0a955e6f0c999c1d819ee4dccfb31913f4d7edfa77e4ff74786f348fd65fbf1f5207b2c7a2f1807a0929e4f962dfb44839b3d4afb6bdf638bbe54b9e84b8d175cca9776a09c2f74bd85fe7dfd1ac5c7c534c03fcbf1f120a7f82c88ced73a57d2c180e70e893f84ce84873bea4fd5209c18ec6aa7a982bc033f7117ba45feac0f18c44a4f40be87f2be28f6121a32fe1c68d3cbe979a3e23a1679cef31797dbd6b8584f85bd9d329d7c09e83997687e8e438c8910b77c1effe279f77e16f98853be36e93e8e2e0e8afecfaff1f98ee66e3965f1de69f0c3e49c7e9dfb12e24c4bb83086dcff384ceff4bffb0725f19ee9549338eed1c42bdd015fbd88b4c0e2d03c69d78293520e92fd984de81eb4fd28ef41fbe6ed51a3072dd8e8e6b9c42bdd338c11dd611dce071ba0f8a889f136f9398a9968cc5416c48b69c0bb34c6db2830defd8d613671590adbcf71590b61c0bbb2775f884c62a2b3f1c81ec0e78c56e162facd1b591fd62ef277cafd7fffdb52e2ebbae7d98e80f64bc29bd05b42fe2dc3bffbe8df36606c98e2eff06f19fedd3f18ff1f757fd69eac12f48bc31f681ddc809ac86182caac2833673624828092800a7cfaf7ea6a4635b9d7dafbd9cff5fe0f7245a69ebba6aefa157d74494e5d4c0fb1ec98808c76cca84f874eb11c80f872f641c66126456ef8a193712571df34a374b971e3543aa9179759e5880b1979f83dd875e6bdfe53cd483d27b0f70edb50fda50d5887efe6b6f1b5cc476d48e3b60df9431b04b16b831f0dda00b6b843ee71717eb73649be81c62e45cec196ace6ac292596de4d2a59fca42b1a801991143e5f26802bc03ff8816470867db73795f64c808f5fe5aab80ecf205de321b670e8eb036796edfeb0193620bedbdb5f78e83b05e791246ea7cbd11ce8e155e1cddcaf1a59ad5d8f3cd6bd9faf4774ccaa0d53224437eb11784273adc3f50c5f7bed7a6c9e7bed7a6c7cdfd182beca35d849b24d957f232e0965fe960de6e8de9726dfc379633cef635207febe5531e4dd90bf46630087e565bf2a32c7287219684e9cfb51ce7a15d852ce369304cae900e7bbe4778c7fc783fb71775fe87df7fc887d46cb1fec709e3eab03deba0de73780f8ff35e5396f83b3defc5b9ec419f1d5b6729fb19a79a2f03a01dad4beab1a6ff8ffb7662ce17d850b0bb9a64ad998b26bf0cfde5e3c7b7702ff69881d1fc4f01ad40d7225acdcb15d3dba156b43cc94554c30ce5716d6376b356e7c39166689e54deb01777f1ca7eee9c9abdbc6390106e2001bb6b3f74e4b72363cfd47e5dcf487b30862d7fd61dfedfa5c5a87463faa45617715b1ce76da857b7bda9d49f8d534ea724aa45dbeb8a4b3e5982dcec06a2a2fc42f1451b4b2781be6efa9f6f6eae23165d2628e5b767209166ad5e69555abac1ae43a3abb7699b673d0e4b1fdfd7d677d3699e4c5eb64eb75b2b76fe7b1efe574984fe98c7533539092e0f8bc4d28ea72787dee052b474be09bcfe77794972ea4115f9a7efac35a787c57c4ed6ff44369f46eff5ee833a101b8b76dbe402c8bf7fdc93c41fd17f5817f67ddd4c5239e0d83854b3de933edf370967796073eb73e962d56c5eb9eb1669b486adf8914a1f19f4e7fc913d2c60ab7f9c4b08c3c1c5f880b7401db75384706c80565d5e32b77e3db637336efeafcaade73e575e8f784f70bd633547d7e5304b5f96fb28ab1bcaa5c996b3a552af55beed6983eaa735417c7813f460a36df283b3a3ac4d7c06f19cb3d8c3b779b18170feb928bb26ef8fd59d6cb543b81cf33add96ea6f0877f10e0cadfd83d375857f6aeb69975a0d96b763056b122bce55e55329a1e86f2c4cc945ac4b4eeec57454ef27552a41f2be0839f1a3f7f75aa3e378c7ba4055970f30fbda4ec5afc72682a0f56792527f36fd5a2b20d23ce11b47dcb3a55596876e783346dfa183b7a39697f93fe923a873e2c3b4c5329138fd90a8f19d84ee04ca0b3fb199ae99f3fb872a20850d6ca69dab4d3e18cead5accb428a3c433bbee1f1ba69a699238336b05cd2c9944bb0c157f2e93d50966af3fb0d72d31a47327f3ab425c66d91dab6e8a42da914c798efdf3afce69a1665e1900755a9294b958c4d9c044d1b25dc5fd928beb5e514b7e9a499716e1ce96fb93977371734f4c1a3a9dc6a7f5780458a658d0de6fb78ac467134cb2d9eab259eab1d87e76abc276d6a1734e3bd74745ce67bf0293463c5e1b1c2f756c186cacfc3f573bfb795c55b8e2acccf8675df7ea00df34c5952984feb5846d81a5401734c8b781cf5c13ef81ae09bc73e5de84e9f67086c1f3e5d7c39c6ec1dce3556c55aae8a40b3cff9b6dfa3fd7bfa635e01a0010b5a554e6bda4d5bbef9961b7d2e45ca4f9310a541def185073efb962904d7ab1da3475ef2e49b265fad3b5c1326579a9dbcb774599f2b39cd9ce71f477ab199bcb15e556a9af5966f6bda54789fdd45e5563345bc1e5e9abde4fd909b2bdfebe5b5dbab067d519c6deed774a5d8661e6059d2d9828c87afdd9a0ee574f9ed57590df1717a46cbcced0b71e559d3a7b45285a19cde0abfcae8a1beffb1c828b90a733955f1b354d6b333d6593d3d3fbb7a962a8ef9e556f1d71eebb0f7fdeee7f6f8b1a0bd01bec4a73b89595b9fcd8674c0c27b8f063a600df38143fe7e618d2c8b627755086bd9b25a5a64c2feb5b18cbb8a2f1f7afcaa57e1909fe5e372d45ce5caab622ceff9a711f0ab2a58d0712393949aa1bea2a4881d834e6c260834e72d47497123d7bb40b37d7c7d82ebc97ba0d9dbdc87f7a99b2248583f6455c87f1d049a81e76bc473337b32e2cb8ae7c440e3640bfc169f3e37aa72819ffb3f3c8771c7df576d0ec081dc4495093ae2b6b5df413ec5eeb9cc6f739f2b4f0a4795eddf68ffaffc5ce2cabd66bcbddac791ccd0fb64d067f0b922ef2fd9118fa2b340599e09dd4d20df2dd5d0aa1de10d492a73cbb37d9cdea4c81bda3765c5f2336d41db77f7a980a362d9b8b15604f1d48e669e736941530157ee40f6e7dcd4043df22d9512f08939ddc59e26c182ba29fc8cc2b4cb3f6dfb3663396059241f7a28e3b6ca467109164fe445cc03390af0b065dea2343b41b220513233a364dd7a7cdfa200ff3600ccc019f29c5d0065637a3e1c6f3e19603396d7604127f8cf662c0af38860415f6c86a51cfd16da1c6963c37baec1aad91f294bc924b730be9ff5f7138af027c2e3649ec5eda664c070b6c046112ca8426dcf9a2698b61d0a157821dbf90abb4e3f5eaebd8b2d41ca5c7b7642bc7946936d6eea65dbc642853fbc1ff075fcea27c56e9883d4b38310f1783cc330e0722c9b93770d3a0cb8b294ab7c14b3d7f5bf1d8bc99a72f4d29597e73c10b6a49f27b80734c39f6c8156b4fd6fefef9d2d9167aa240c165d7b20e76ec72bf4b0c66b4ae1130aef6dd3a272c558e2fd5e072b2a6bee0d72bb5a27d72e218f9c8bcb8f624c2bf0bbac3fd9e6be4e158ab08631277a18dbd807b619f471518cfb118519997b3c76493f9fc0d3493fd0641774f3cf11b948b65754cf73eff77b4229ab658ee7a9e90bac1b3f2932d2a72ec76ce231ab1cf4067e45c9b508fddd3b9806ae28859f215c375e178ab02c141dd66a162c8ab19e34d985787f7916ccfb35e09ab501f4738dffef7059781cf118edad62b47774c69a356392917713f464affe301609b4efd3a1db398236353a8cb5b767945a4bad3fd398ee0916d006246cef748d35e53a12b5995894262c5f03670bfe6844c7059e820218a39252f892c27b1d09bb2eb779d0ed15ab1ee43feee97535ab035b0a9b1cef1ddd1e7e67f0d6a5d3dfd23044bc970006704d3fd3832ffec48adc56ffe57ee01111e0d6b7fad9606cc5bc89d17ff917794c53c4b398b7ff86f3789597035f1561dbe13812df1573187f79f68ce94dabd5021dcfa5cc4c33a5deb1b2b02d7a99e2907b3addcb1c7afc355a1f2bc8eb9849cea33efce950f90753241fc6391aae77312a1bccbcec37dce36e5d0ce706ce69fafa73afb5a70b22dbe392413e62b0ab117b64fe3a94e96c58c72a1b703425192a39d7aae95aae42d88792a1e2bd0bf8a0ed77e0c36f2f13b5027fa26f59d87eab7a8caf8f9a637ecbfc12d3237c9d6ab685104de57b4c5b705d3ceccfdc011bbd855c9ad8d3ac2aac403f49307dc0f4d3055a4a7e8701a6076a949d09af915add8f7c436814fcf657cd3744efca64a7807ab16ce55945e81874dac85f27bc5fdafa9bb89a53d7c73bfdbea12daf1ecf12fbdf689feeaabd55309037d95607b9625b1b40828284628345c7eb983b3bc1d64f2dc69e78c1a7139cf77699c8821b6ac6d3360cf22895194a73bc3f4ec31cdc7b7b86e700f383eb20c7fb27e293cbbe0aaf0aafb636bb59375f78feea22d356f1c8c7ceb68a0c742427ce3e6d62b3047f3c902de2acf5170f16b4675754b1b768f65fbfd7fb205ceff607eed7737b4d1b77ff64ddc33cdb66bb5e93514ec1e17b8c1568ce361bd739e65d3fed4b65e4a3d8dad93b3974a0fbad55cf9e3ee0378de82f0deb91527e7886d73aeecfb3bd6f33cb6f35a158143dcebb1f3dcc7928d7cb7cffb81642b916c15efe43fbbf3543cd5d87661dbd44ed589173c9e7b4fa21eff5f3dc2980bb32b4a1dfe7e1d498fbfc29d9fe67dcf76975e7877e9f1febcfb87c29d824cb7c6fd0c900aff3fa93bd11cb41b25e86582f718d32db30cb5e07115496d095e28ae98f6be139096bf0a9c2d73a6e3b5d017680f380d37695616cc1671cfcd1077ed4c2384f7677ce54a008b7d52cfc63cf13f77a96c9ccfceb2eeeb9fc599fa7ce7e4427b27e3eef759a82fc597a8875fc4c8e42acd3670f78c844270a1547cdb42355abb57a5b1fdd99baf0ebcdc2a7d70bbf5ca766a1d6e2d7d067d4d58b5a3658fcdd8b3a8e49759fb4afe3c73ee4219be7cdb972ee47c9fc53e87c615bcc0daceb94f20083a3c9af3bbfabcbb9af4bc17ba59b4713f3c010f215e874adf02a8b227cedb27e84af0fec5ec7d75b165574ad086fac5b65479971bfbca83c69f6e16bcf15b19c0e72b40ae697ccbb5f5e45dfe4749b29f6ed4be6d5e6fa90c95548cb27f31b71598ee7c1adb258b1ddaf3df7d076f17fc52ea397b1a6dfdb62de58995f7e79114dcba99ac9e961e077b4fdf2b8e2269fde4731ae7ad5d3c9e65cb352ece95c33c4d119d9dea02f72bd7cdd1b37d63f36394387b187354dc1b91cbfc47bec4afc6f62f0cdd68ef4458a3cccdb914fd381962e5f6567877cb06fd2943d510bc5a25e835551133acab29e5dd65e2fc3e0baf138559b0ae2462ff244fc473b2ef3408fb1ac00f9f91d6346ea48e8408adc18cf03f44b2fe17e60e1ba2d04f12016954a11944593fc5970ffe258d43f50dec40a1cdd4d25c88136c5f50c69e55173707954ee1db11eb60e36351e8fddf563627ecb137ab2e713ac27f6f5f26eb6c1cf995ba138e3e76885dbe592b86dfe360ff4a4f1e9cca10f815ee6b283c7778ae5243658814c46d94c1968b69afb78beebe53f9a7d2bd0717e6ee734d0a1ef4ab71ef91b601b6ea2f0fe5e3efe2661473eeddcf6d1a7ddd9218fcc59027308fe583b84128af54fa3fdb0bf3ffb063bf428ae60798f9f88548b263ee6cbf37d4e9271fc0a373edfecf9f3e1d6eb51f1e0f7a11cdc2fef73286bba180d683fd643727b527c7b4efc22027eae65a2ea57dda7e1f1f36f4d97d662d4e73b68ebf858bcb1fdef252b4fb6b918dd2292effcee5d63f0aeb16465c61cc9422e535e7dc6da629aff5c0e3a641f4c1f5bddc81f5395e445793226bd6e09e33318c3ee7e95b3627206fc054568c706e245ffcbd8a8cfc7e66fe3f1640c1ce9f8bb0cd8fb58cac216978fe9f945d38b0bc9ef6ce2329b18c3dbedc7d8c6d43ab9ce2e0b52f3e0a7ab78ef5835f86edf616bc2784e06631553119c73a7eb30e0c24ae1c45c8cc08ff8e2322b82e1d3fa5136b6cc7e9ee84a36a6a5a753cca7503e7b67a6ea74d6be230fe715eabe45f244fc86f164205710e47919ccc3fb701e50748b144ecc06edbde0f6aadcad5416cb71bb052cdf3cbc9f281c2e73d8bfe9c37cc2778bb75cd56fe5ddf77ddf0dfa71ac866bd38eb3d11ac47acb64fb8b2ed2ca673fce4d5ff762b0570cea3be01efad98f7fffee0cbfebe9b7683f7af7f08dfb1b44e37b7ef4f01e8ca71d89a3f5ddeca71fcfc41ff596720e6b5218c8ab7a493de49cbbf315919d226cc6370f0667ca9a5504ff4334b18d6340f8bea38f6c4b47c4b3b567bd87017ff8b1af6d9bdab8acf69a6059adf3bdbd26797c07e38720f66577fd85460cd6441b2f52500a6f05e3f545daf4239dbdc7394ee6bdcf405b7e9d810fffa703581980e5a7c039c19d9fc340462318f39d9f7a263fcfb1f37fa2a72195bbdd9445cca8dc8d5617ef81b220b1101093073868b3363eed8275314530f1b3ba39971ead17513f9cfd9afaf6abf81f4d0f2b4d2f2a428f4c569e98580f39a39afa4655fc0bc6c9ac8d4f2438c7823af015da25885fd1285dcd86bab6cb24953bb18a163bbcf509daa5e5d575b6cc7ad99ecb8a5f03acbd3eb6b8b5c79c1adffa53eb23e4e5885951ebe3aeb1051f2a39353b2c945e1fedf6ca14d9aba9e6a883ebe4a239627b3d23cfcdc17572d1ecf9c07f639605dc21fb71bf9dac9bc7af28ef079dfe09de75ecd96518d8b3f0431ff8e00cfc7c509a5072db87c960bd37cf7e962b063e74443e641feb2c2bcd9ef66346f0d2c046d6e4d41a9ec1f7b9a3fbb9c83bfb75bacefc744d23bbf59d57d91fd7c0bdbd9ceff7a252ab5f6a14e701d8596facca9547cd9e0f62c9cdb95b17b45c53b5c2dfbe3543ec7d770cf10bd1050dbe3bcd6f122fba65d528bbda13f35b4da8dc5fd095cd7881c2fbac9f1429b185baf8f7d9d1cb99e648684f6ca105feedad20ef4f6533e45cca3dd28ce2bce51f0b7aa6d87e1ed47481af7706fd89afcd9a8ee454fcfee0b2a9b29cb341954d64cafcdae9e502b74be6c5af9d4e4fe5934ff48aa50a677b435d7f5bc573d5368b0d97509a1ede648602bf20cfa0ce5e557ccafabc1af93e2ea7acaab38bcd64cbfa5c7edee999a138872fa38abf8ca84c34dbffc6f51a153d91133593e319d1e3f4f761f9856a9b53393647f5c8f52ad970d964335923b4a2d8802b6b9bb981bee3353e32ba5e7e2babb7dc5ad08f9868cb2dbbe6325359de58b02927bb405952cd6f18d357b73d73275844ddda358f14f8a70c30df5ee5aad0653366775cf9ad99b7dc5cd06b52c7f90cf5d312a6df2a9e3b35ca4c472fd7ed6fb21e5648d7f3ca31e810fc70acb7c2d0cbd0a6e26f95a658d72a96a0eb9ab7623f19cb3028dd257ef4133fede3415ab93358b054630f9337a7ee8cf8d2e58ee6addc75ac8bebc439c95d3e381baab0fc3bbdeced597b7d856bc1ca115786bd8fddfdfeea73b80729c127f46be009d741ec1aab0e62dd497b876769260bfe728e38da7b68917f637ed1ecb9231ed7a089e311f5f0a80966e75bec1da9aa8d47f2d2f20a65ebf35a6ef6e7ddf9d351a95588db70ad2225e71a2be445b00f4ff8f77e05f9c8429b39c09a69e98b9f5a781c2b93b14e60abe4c2cea70eeb9d9f43df3221ce91415f6d663e5ea3bd6f5ddfdf2aff76aae4f5c3a00b85a75844179f4e8bc3fda46f7bab281cd2bf296eaf9b50983684362302ddd81914259f624c1f5afa7ef353966046129f9cdaa61a1a45172bb95e07b2511852e4b5ef579e3d8b3d47323c3b0059a1f9ce00196bb506792018e6b7e54dc8cddbacd7f3bd4c0eeb3996ae813d8bfd1fe5c47fb9ae17f7b8cceb4e27f8e0e9acb3b19f92626f4f477c59719ebfe73a8762c88f65bd24f89b8dbc27732339b51d9f856797f9ef32656b576f72f4dbe61fcf20b2897ecc5a1b38e4b56bcf29119fdcba9c9f3d265a4530bdfb9cea5e13e364f1f3b34f64b5ca263e86239c6d3f1a600ae1f70caca74a68af5395a3bb2960bef6f74a0762fca72560951b5435c217abf1f57cbe378aab5c5395ec4808d114e04edaccbc50132a954e1242555f26aaa812b01df4598e690c692fd807f137c4d76232cab39ca3c93a3179bc6f0f445f4da7a3b535d419f01c0c7299f77ac349bc207b55edab510cf601cb56c35c5b7bbdbc8e72e39f82ea69fe9526c7e7a64a3abc3392f3c962483c8935c56b98e05bbddd36a9f94416ea64cf1c7caf08c6513b3f57f5d8c4982fc49786d65d341ecbca10f708bee2aa2136b84f05db9cffb6b25182f8b28ba3273edadb4bb0786351750b036e46a91c8993f39c90d28cb82ba7dfc773cc0762cf39c059555be7068f5183b7bd31cedf3233cdfb72c43b6cafb7526df10230cde4c49721d6818f653a906f29dcbe667f12ecc5de9634eecb2fe7ee6d3e7a7246236c1f74e1966e6f19cccfc8be54f81f68d513daf72fce16dbf57455fab345cc2f4e78edb80c1b7b7a53afa0fef41cec129b1a62e3c316c3d5afe7e7fd609f93b39232533a5b1bf94e36cefd3a6868c8804f0ddabaccfdaac1ca1f94dbc4cb5e817e8ccbbf82cec7b348a5a9b1ad256de33a66f5df6c6f1d3e370f76b6ac3def4547ea1b4531abd9d3543a3dc82a17670231399ded198f49200cdb304bf676707653b61af2151f72b148dfe3d8e306eba8a1c90a1fdf634ae6fb016ff1a3d9c44f1f71bd5b5f8f4d9d673dce06601024c1916ef74c874faf2e32c0929207fe1f2e53663ed6e975bc761adab1a06ab5eefdeb347b7e7e423f2e9e9d9cf6bc84f5a2b3a7c799d2d58d7595f8e25787acddab6b03ea3e9358b2699f73581fd201916e31393eed2495059575f52e3e33c4bafb5dbbebbb76578376e78035596319b3c3ef6b68daf2b649894f275a944779dc86ba6f4383ede99803ecbe662c8d8e2ea61a7f18d3c5e3db982e2645eee84b36c0729e53cef13596b74583a66dc6fd562d7afec9cf90ccdfc0ffc5a5a950732c24f3eef79ea32a59b7cee4bbfc8cb8bc9675eb48cacbcf5e549c1563994976188c69b3ff4853856e9cca7554d67d5fdc115d746da90a9c774ae62432969598ab4735ebdff75fbc2867d5015d561f696fa52eb21cf3666550afbab8c337598835894f86e7f41d26cb413d9a2ffddca8b7c7e7fe4bc7fb0c71d2f299809b3531a5879ad011f34cf84edcb6af5617d9507e6bca50312fbc78d101d6b3972697bdb33ecb0bf5261b6d9bd57a9312cc184ca347d82cdcac0e78f646e4b438ef72afae0aa456b76a5ddd6a95bbd52a4d07803530f225c1bce6f693cdb8c79af9590ffa45cf4adab83f820b31d6bb40cf1afb882d593f29a8261779a1828fd2f2014fa4f565b0692a0f0c3a8473c5498375653ed18588adaec3b2f2acbc92d33250780bebabb02fc0076262b2816ed69a4155dac42cd46346933d83f5f1f64cb2a0353b418145b30113668837cf01f8012f5329a24a78778495b51ef90f121af2b30ed0f92139db543a829fd783ed8ff853de7afb9dd3631a13993ec432fdc8c6a6f43a42d8e5b325b2ffc856d7bd670fdf0b87ba0494d7ea685e7fa606b2e89dec8edb9ffc80df7279d09fabb2d28ced5730e0432829aa867e55602fe8fcd5d6f9de799710c41a03ae0ae1b709e4d5b9d813a20f92ef300f9f213fca6b47eff26191b9588ebebff3b3823a78b049fe1493d7f8780dfd881441044c384550f1fa1cfaede4ed79ab5bd3898dd758d29ca1e3df16f81e0ef4d02043ccec88985d22f36aee4571ee2da8db86d9ce03a3884107b1216e9575f1d8d92e2997d9050aefb29e55c47283b7b6e7fa5c56ce444a3c26b9a2747df578f3ec56652aebb70e379ff8c11d32d7a06b88efc3ed666eedd9059615b24d7a636d46cdbd847a1dfa2af80bbad3ebbcbaff1d1cfbdf1f46ff1bf5bf073e78f3212636ab19d4d95ffc28dfc178e33e28fc3cdf737126db209b65e864b531b59f9a1d9f7dee46c94671d22c16f0168223fd09787442cc3a745e812d123fa3e991ff857b2479a308b62ac5cac2db582658ad138fa11374da9e493bc0bfe7acf0f34cd613c81bb0b76734e032e861d4b5454fa01dc8a023828be7b36e02ed60345bc23267dece4117b783e9a94de6cdab4a46d6cb508abc7a60bf00fa8ad7659bc70c0df0e915fef607716dee633f0fa2f8052d6884cb721c3ad49c81bdb929ab91d1670a0ff95752e9a476f2aac358b1c7603e47d63be2ca7c782e80166cded2dd0fbd2c6423cb35ab98293c1d80bcc5dfb2dffa88084e60dec8e6ffa9afc4766b1e063eb05d0e0788bbed728f027dfb1eda4a2026b47b9e0c9fcfdae703ec1c34b2b3f434746067b9a7c983f71eed313fd1e40c25d4c0a7a97ce42dfd5afcdb3970eb9bd5c9f3833c1a599f4763d0c7d697adcb11e25d7fa0ede12056a71efcc6bc73fec9cf5f379c476b55186acef65be6a745c0c55ff288f7d089accf1bbfbfded64a9ec52febdfbfcf50f4e3f7198ae2173582ef6bcd36bf65412c3c7df03df0489ac2dfa308fc0d3b3b307916bf603dc1d3f3ce2f71345fce36532ae29f38d089a78d6d2dd3aa90d2ec65eee175cfc7bfeacca0db1ee91072236199e9071a4efcbc12f609ff1af0c89fcfa8873e8a6dbe74bc27eff07d1a7c38d0a99ed857010b2e87b3d5c6d700725255331a9dd6e73de47d5cc13b040335cee5a1cd4090ae047735acedc9009bc490024558a3c1592fe19578fdea04ffa5e14d0dc6ea0af0538734e581d70b6a36c2c0d0cb56771be6c54f7bdf77f0c726bc585823b72279176d462d48fcf76deed6454eec8226eb453f7f8b608c8a56eea4a5c84bc11eb0a01fe85aa09729a1abf15ddbe2d7f66ca9c39168ec11f8bbb14d782417c219d778af1443da839f674ddc3dfa910efd48d7fe0f65cdd5c80e5a8fd731f0987f41cf1a396c512480ab7bec62adaf031ad4d3a6c5207783ded92ee94d6ab2eb4531e4db8d0eb67df10c8a01fcda21bdefd730f4ff5e5f5c1fb304ec8480db9c5c02dbecf4555c176088b73cb719cffe1c18c6edd1c6b8c0651e9e9539c5656ef49e5634fc251cd1d0079d38c67d2b37cc4076ea746f5c97396a23d607866ddcdb33acbb6524ae640e76f0bdded8c1edd5fc935b3d5da780ade8947359102ffee49df8aff031894be69799c2c770fe4c6c33e20083a2890d6c73161a6faf7e5d5603bb4b4df662eb434b9dfd2aaf64ddaa46f2b81ed672bdcda4e1195c1556f6641d800d322968724e50d09d4d7f45cf3f05a9f1df25f702c05e20ef819e42be6df638e428edfb27988095e85714ab46c373a471ac594f0fff46b73b0ca556ef68702560cce66aa3577ac66db44e1f787715669a3e9279305fbcfa513cf72b82cb31dae790d337c7742293f5ec223b7482847522f250ef3f7dbd5376243bfda55ed739fc522fde6f0ff5827cae1ddf880c236cff19f3ebfb33d8fcbc37a8f3f86c6c9b29cc34d30495e4761c7d5f86444e50d9bd1e7f41fe68427b49bd8baedef978cffdadde4656785e2fd9b377f5b66bc566e6b96b8dce828672f3afba6a678f26b993877bfa8f6a64107b3bf2e7a9c517954be632c1291cae8f3f6ba043d4687eb4fa80df1fafe5916cf3af6227cf5d7cf9b06da7c1bc2ce6d5e6f8967d7261a20d79d3714e6d52f39fa76d02b960c7ca58373981cf0af1294dde254590a82e7702cf4e46f99af884faab1f37cf3e796775f70ef88db6f91f06b275d16195829d9d3133399de69e5eb4f84b57d0596c7c7f1634781875c095f4dffc1aef31b006f826ad4d894213b1c1f230cf5e1f7b95a1260eed2996d22067820271d0a3384192bb7bd19cf78e638a073691798f3b756a728df6fa6767fb0f78b6eab0b2aa7bdfad21f6898ad75117ff1538efb1ebecfe83cfe25d9d9dbfd961d0bfe4b277b69d0fd9585681673ffb6f82edb28f9dee6da68069dbd959bb7c634d2e0de28f0239f488efd8389eecf7785c6eec6386e09ca61bcb36e75032ca3954537587ed6350959c423ea11cd5cd6fe233126a86f8e559c4c646302bc28bcdac02c59ea1bd45657284afe19cbb404991117e489d49bc277db19924c0fa134a480c217c47708cfe516db3508db741ce8d553fcfc63b4bf2de0d70d4f836a7333d5aa74f704f47ebef1e97f421a72be014ce6a3491a8c73cb7d3e11a4aec5afc0a5654416cccb3e05328c93d823704bf111e3b825d3eca1ddedb284af01570491edade3f62d8c7e449bfa33bfdc8a051db8ec6d67d21f640f85d911c14e217cca505735b7a3a356d7d6ef642724393ed796fe5b5a3d319b15125484da8624ff24ce42ee0bba8f7e7f8a126a8af72558ce2b0032e4c9ab8c39cb46b496cb455fc4aae5781e658040bb57fce065857749ed38416b340e6cd26e6d73ce03de5e13d2f74f868396a72948efc395a7deb3956c01ded199d5d1cdb7dda602cfdf40dd87abd76fe4e23dcbe1fe8cd10f3a0b7d9f6fe6923dc9cf82e369bd05c6ef4ce0df204d6f4806614378df7f1fcdc0631e4a93d794bd49a62d5237b530cf1c5c76bd6c81b9c9312f92baa3be3d8af0ac6016cfe10e2c57dc8b3dfc9e333c08830e8e3a0ce99c653b8ce996cef904b1733c7a2d80fa3388efce5223775873edd5c1fcf31c28878c68f166a06d8a3fced3cc4341ac653ff97ef4631ccf57ba0d9c4bef124fe18e175ea12bbc7e35cd3e0077924fb27442e9ddf70df55fd5661d969d05f2c039e6d069747079af17617dfe15dfd94bd2026fee5bc6e1cb7eb75b1432535f65ff8bff31de8ce37f43257e06ca23c2bfcd0ff44bc041329f49fe5a4001d3d7f959df564df60f02a27c02a64db73d72e1fe2e2eda5c97dd6ecd5d199e2005fe4960f7c40087621f1e5e9f5d4f11eeefd37876790dcf21c184fe86d343af32f87be0a5e14e69a6336be43a1e64561826503e5b4bd69f6ed1f957be67ff4eb59f944112c92a3a7b33df8300e508e41e79a3090bd8c652e3adb4bb0588edb78ecda383c2b6eea5f96a48e7c50c7b2dc9ca01c3c0fb567cfa8a1efc10fe7f56dd9518313778036ea716faba8b31e2f490f8f80f344f02e0667f9eed3f178564f7f26be6436a9cbba984eea60bbe87c059ef91f6c006f728dbc84eadab6011f91b0b61997f5a2e6ec97710bf598a5ad1e7fe72f5275be1aa35c21abc83f59b7803b445ddd51dcfb251c47639082df6d723706f5d887c35bd0995d8590ef44ae979964f73edf0e595f95666f43cda0cf0ab782ebb14fc8131fb77e3caa0d57c6bd4fc3e105e60dcb86a775824edbde46658c7c0d42f724d1beb03d8b1dfe35a61f6ce671efa40dbdcf02f179e1011fe4f893af48e71b61fcdffacd01eef4ef581c8dacf53f86cd7024e7966d5ca568d0d4a7703b7b10071763fdbd935f156339c290865890637e1ef8bf126c667edae202fca3196fa974825cb11729f22007fedec83374a4aba1dfe64807217e63bfda4b5bbeefff6fd1d5de8faaf5011d62d954f664177c0ab73078922fafc5ec918531667397af7f41530aafb2903b42a7e94606cfd528fec6f750d4dc03191c30f753b0d9ade0bc3d1df88fc4983eec57247e0562391dabc1efc1df15159c3737f740965e34f9c685b7b90bb62a95f5e19c1febd96bb45fd067c95059cd10ffec39aadaa4e057dfe4796eedc4c90033efc0ba567176f4b8c93b1a9e01438f67717b611cfa388d30905b3cd69384797411580d06d142cce409603437f7a05e3c2673b7eaed52fb1ee7a7f367d973b84c77688fcf87ebabf529fdb77850ff364ea38b91ea31a186785dfdba1ccbc85738b731e8a1edf7aaf14b8263dfae73882d623b5c45bf2eaf1d16a960b26a9465805dcfdfc8efc91a726b219b653c6b7795f919e01da0c6be0bfc7de0876a3325f8982082af36c40b6adadcc601c09e3a075c9c7bba9b7a9dafe1217b36c6663326ff76ac7fa06be5af74cdbaa76bab607314f341be594a9b3438ddcbf34b9787a29fa7ceafbbc5ee1afaddef8df2ba61e2611c5908fef624aeb2b29998c49a70bd4faeab1709c941b3bdb88e7404aca0aa4c008b1770a57a39578abccb5f6215c4e0975885a11ff5affded7574628379de7fac6f13bf8eb11f28a574b1c26105582182d4da3a867c21d48ce5ab8bc7accabf5dbdc7eec1fabbcdacc8ba6c627a6541423e0d3885801d32c416871c657d4cf1f92f711d04b7abcf5ffd537c25d117177ff739d705e2734e64e15fe767802df9ab6db88d016ee729d118f35faecb9f6887f8b5b70a4a3e52756bcf826bf00b521b5ab0fd56477e17664f1704880101bcc8862e2403ba50812d4c90904be639bf8b03a9210e64a2421c88c29b97219e05d8a8233745d1731a31e0af5dacc0bfd2e5c6394cb3ffc7f11f77b6c727711ff5dfe33e368bdf7419f35127ef73ab9f512f87d39b28ff1ec676743a52d786439b833ec1b2e4e63490f14f6b0a4dde206602d63459ef905371b0a69fb5e1effeb5842f5243dfc7a64f4ff6c8f3388eff827bf61739f8bff38b34a1f0bcfe8fc9d5294b29fcf2a7f2eabb58feda31ba78b2c13e25632a7352bbd6a2bd3d3d7806fb349665cc4b63ac03b7df012dff29a67edfd84137cc72be37f26f9959b6f38a6561e45ad42ba21bfba66db679822a455073572fa93bfcb58b92ae432c23f851592bfcf22ed69065e566df2afc32dbc4f731fa245f199c953f8dff0adbb8afce36eb576593cfedff49fc478de5b3c0a0af909fba8fd7a814c11cc76b905891335ad0f4cff11acbfa89fe7dd4ec5bbb1706b159871c45b3a36b9739961fdc0a8fa7d9d5b719fbe2b7e5832f7e3347a1c2ab20770c6c0e374c43fc7a6c3369746aea2156c05007b104cbe9e37373104bb0a49fc412607d857e124b506e9ec6122ca7785c1f630996d3be0f62f91f620980d7422c41742bd7faaddc70b74ab59a58027db09e301d1ce07a3ccb71d9e6afd27489db5a6b698bf9d543de3b2adad192b45bb1866959ef666c469f7a5807423997853535ca69c997f8bac9b9dae7c7825ca98f79095fd6c63babf06bea59bee4567e20361faccb992c82bcc226a65979c035f7b8309785825578d8bb49df96e9e0195eebc51131f40d31334cbf0c9f5f1df7f6ecd4eb3e58cfc2f4802d7cbcceed19654ede4397492e5ecdfe945bf1c5871c4a09e64115f05efbe93eedcfaf4eedfb90dfe5b5c9fdf5e2476573e691c5011756b233907184f379af9717592f5f7d26ccbcd3aedea4719f37ec799d5d4c80924a787df5b90399dd74939a970fae8c3f8c2c514e499343d0a3115f5e3c675d6fd280920582fde39db60f39448779d749eee3fb5c7d7193ab8fe4c19201bf25eef2e06daad555497757949aaf901fb6cddba7f7d8a8a86a642da3a83abfe52657a822c42f902f4c8f733f6a7ca88562ba4997970fae0895539079c2eefcfb7be50cfeeb45a8a421d8e00381ca14416c7d185f3f1659a89c0edfae3e9beced1db5ffe19bbb1c76c95f72d85da5c80d51d5e7b04347920fb7cf61376de95ef69847cfec72d8797a9fc3aee74b22f111b59a33fc0ad653be17fe328f4e51eced99bb89db9c5bb3f5d60a3f4d6ac5ef2c563292dd6a4759bac2d3e1c7eaf0623439b49498968c8435b6a6b772a864632d2d61678939b2938b6d649bc0a623cf112f86b9721d7afdbe8bad4fdd9c993b3358995159b84ee80debd4cdd9439d9f4641f9a7649c3bcf5641771fad1f23efc675c3ccd9bdfe90f731d4ec79cb9f2e6ecad208f227071c9a1c5e5d7d0663a001cf4e2e3647fcc5e0f7820e9594ce5072c0fc1e7282d98b59a5a4301ea91485ed6f1697e33aa12beb65f34d3cc73ac0de9e79e0cfd9fcd6ec25291bcb2de41b4f23f1e2535b6feb5e4d6d03ea0e3f56f1ff7fad354162157e774fc347783c8d4fe8eff949ff9e97143924376fa6e9e1279673fe466b036e46709bb07e4e49d70f017fff90df3119cb9ac4f71a72d2e1f29731e440feb1eda9f95fda1e6a8e45b53e107b3dbe04295b216676ddeb21fadb7efa0fcfdfedd57f7d0e1832adefe6c0ff24ff96276a1608d26c84b16450781d75b1436e1586cae81c93c4e62afc8d0df4415e54fbd6e6458573bafbbca8de91ce5bfbc48661914f532d2d4eb15ee532ab46df4d5ed1917ef51ca94213f125106816cb5758befc7008ad409c9b76f591bd84dbd2ae8f8ce05810f93ed093e1f7e04bd8e3824d2fa41e698c3d0eb90ffed53a3c7a24e730e6fb19f042e3ed15d510dfde8f33337f1867d7a0ce9e311a67b08d3639adc321ddf35bba3781b8e97bba476b10df0774ef35306657dc7fb0b3b6f87580b5ba0e1b3d22fb604cf683b12a3f65abcd69c77eda5e86d2558e84e415da395153295ad50d1fc7f4ef82e9597756a083bda495f9b3e1f770a6a627d45e90ae41f59e2829a9e773988fef44e5fedf78569bfbf341fe9883fc21931ce243b9236ce50ed7a0af0f72c730e6bc8d55edf20d773aef4d768a4caea97233185b621b07bf84573fcad9517e46c105d925809c9fab2a581df20f23a39513c9d5613b54de3c4f50ba73b1dcd2fcf63e892c3f5afb9ef1fbda7775bcf697fddac7f270355afb9d6e8baa87b59ff46bdf7cb6f62b8589bf547d4a7feae569ecf3782f7bd24ffd0e46e7ca231e1c826c8c8ef427e63d633c96bf94c553ad6c8dd7601c00fee2b33c1fbd1d49662cfc3ea6e917593f97eae21dfc523fe14cc19afa3c5b0582ca06fa216beeff86e9fa2a8ef2c6c7d94725d158b7f401a37f4d89c73e87fc939cda94a6b3f147bdccd7023d474e5e2a8b1dfb29243379317ff970e24c9bdcce36159e0d676d062b2a7316cb3f9fab42453c6bd849b0719c5b64d3d3c8d1cfd1271720270a0239f2af5e55269acefa6e74f8b3498aad61ae575b8b4626b5db3ad66e8ecb374127f2327752ae31df0cf855864ee502ec3ae92aff5c5aa13fd9257e3a9b6f9d5deeda336a6fab99c8e132d7946bcf62d791e2cfe52efcb0cbcc6342ea13f25e7ae1de2eb1be9489ab5d866c0beadb51b4f9b9b2cc6d159fb53a438a5e040ebf7b5d0b54a65589ef46ec49e1a7ac42171f8a5ef8de7259d80975f5eaa13ed5af051233a5e65ed4c46ec379dc337cca70fec949752048b84d11c4a780ce55ce15ba8c950ad3ea35d17f84db796fd015d8b11b9d54d66f67ff48579f4249ec50e0939a64e8046370f46c361597bb30e0adf92717b67e714bd7d92532c46195994fcd42230a2bb9a78126d69b77644f9fc538015a8d75d30663b1cdbd71d6f430d3ac35e5a7c9c5abc22bec0ba6a86d26093e8532fb14caee9e92ee122f5dd1587706bf493e397a986f2db6d9a6922c6ba9be88111e272cbf4a82616d9b6b3c46618675369f29339731cf6b887ba24295bb4578ee3691c86a060df93ebc23be1fb76d8c355bfd23a64112c0fc8a2ff09b131b2cc2edb71893dcaa0e608e022e612c57d2d27562728fe013e27b6b88fde1a440e6e2fcc368bf075dd5f3ec55252680294bb00bb93cd27996f64f2a296735efcad9db333ae0adba793f6adf37211e6c16fb555347d7463a437c99f977cf839a3e6af5db8b1fcd4e9eb333f7369d7ca4ecc533d9d43bad13cc6794a5c982dea59786e698673f8a73a3a65fbd457653f85dbc4997679f8b730f7ecf2f7b63394511de3fc9c6b5e9c4a78b93a397f16fcfe53a08149e7a09a2bc5478bac065e2df782c904dbda06a96a946785152fa8a4ebbb391ae0acc9f8284ca914d17c8c8ae4a1a971b7e7a41367b09f8b02d9b91eb65e5e8e5ecc3c88c669f9c3ff47e2da8519c7f38097e3e53f8c30bd2cd523d9573d510f33d8f75f4b0908c65f529dc2037b4bec80a65198ab88d488f73c3c83e9525bdc6d74e8565992c5284758dafdd28ced1220b65e190ab559c1bf877938fc9075eb13d7f70f312af3745d8be20e356aa47b6eb4bc0278567ce4264135fc1c1f85178aeda7100ecb8bf7e2ffdfc3de447cd0a6db1ac34e6f93bebd5601e4e40fb9a31ce69472fcdbf7e9ffcf8fdc4d1cbfd2675ff8871b0b638f1c5ade79165ed16e2f17c3681dfcc4e98de605a00321d6f62da80c408cbfab31b9c9f803cfc9ebb10eb35cdc548c4face8b2cf8ffa88b79a4e8e28b18e591ac17a1bc58de54ae89d148bd1c316c35ce93e5674aeddee42e4e02b0c127b26e322ac4d897c626c923c054c6f4971373319dc562748bfc741b395671938ce54d3baa7fd4c5f9ec7366a92ede0af8cf2d59d578cbe4d35ba21aef81b2f25f767ab9d9246b762023805eebf365e8421cfcbd2ff948ee38ecede9c1a859cd9eec02ac83766b9bf813343ee95449705a6816eb2f43fbbddb9cfd34f23a35a0c9608bd46c6bfeb9105f07671773cfc8b36041452a277e8fce97c6793bea27e7510dffd85e3cc6a276272b47ab24711df14cfc1f822458927d0e348a03da44bec17499312f3efe0e78499890f75bfc5deaece9edfbf159d67346d6cd895cab831ced83366099f0a10d37c25398e9b09ecb7d3d28fab59e0aebddb86c0bef4127bba2d4d2bcd4ab3d88f1a04979448678c1ba8ec17829ae0fe6469fd59eb313d1c4c2fa67d3c7f01a38522d7371e147ad6d386665de2c50145fd7c7376ac39b74bf86deca36d75b87738975c3e1b98d7e2fe3923e7ee88781bc3ab65dafab38f79cd11ce7f73ec22da645b09847e0a7c3892f433b38be1fd8b3d8033dca8ac5e339428c04f1dec0b3fbfcf89436e97f6fbad88ba46e7313055cfc476cf2108bc7ecf5539f51886ed76fa3b309dbacc3315f1c72f0c73eedae06cf4e3c475ab8ce1a7c0850352b5c67fded63fec65ba9eb5879b038479877893c5d20fd3df6b8f719e61722e60131bdde9cd6b51895f51ecbd7647dbc882975f53876f6a18b39b2ad78ef5805ac23e31c617e25f2db5c1492d98713470a5f5e511ac07adc4452f1f81ce483f639f051857b7f7c4f589fd14422ebcd3847fb45b636f477d3e2fa368c9e1959ed57cd73ac5bd1782de2b61f5e0c937af127eac15a6d0f7624e67b677d6ddb0fbc52c76341c71e479eb5e5eacbeedb48e1931a51203b825cb189241837c5a60bc5dec512bd3df5efafaf6284e513d60af835f4b52d13f381cd09fa886581c2e3b7278b0b44bdeb43b0972a31f79cf0b677a4c4a7c2c4b577891f7b571ff38b66fe140ee60e9771207d781f94f1be174f54def227cd297af9a4ce9098ac691489b918d3e0c322263bdad3f1ff20c1632026bb7380af63afdac3fd75083c017f97e2fdd47cdbfec6df3beb18cb880a27399ebdbb0caecdbd60553ed37ee7557bbbfd6e1de23de6f1ab9908b2cf40d6c1ed8cb390b4d34b5cd2ded087ffab9bdf5c9332b3a63f198d38784e7b15949ff870cd427cb018cfae01bcb74bdc0ade0fd1c90afd13b493f76ca90aec55d5f42ff4d3f519f3c0adf35eeded1b7e67ddf4490eec59829fe9272b27efaf686f62d5cd3825beb04b88ddbca99f6723cf11f1b71b34f106cf7689cb10fb1f1e83a18c8379b28bcb3ebde1ef4204bfdf0b68138c1fdc7f37e0f7fb5a4c68b6f52f078c201deb383fe481e059b6b533901c3f661e7031e85501374b3e84f7ab7fdad59a23669f58c7fe41bf164f56ede9efa0b3b9936dd4f38be959256769bfd8dfdc541cf87a3cd04a66a8b39be0b7ef621e925a976041279f46467d1a45a2a44bf6d7fca20d2d9605f11238ebc4b0ad0255f1d87f6734363ffb44ef7590212acd8ecfde10c3ecc117083069e11cc48fdcd487bed36c531e2bebe530bfc5bf1b5b667af148ee94488c7eb2694f0ffe04e2e65adfe58bbc58d624870d991354e37b6f80bb625752e8e3bd90ee329f594588b76231a146f2945fddf1d5d32ef428bc46cd264eb2ff16f4716e76f6532b55887f08e53ad2c973b6e0230d3e9e802fb1bd2066b6c07aef1efca1b797805f45addf74d0db56b12e5b835e07f949b79740486e9e5124c4879cf8b98906d1fb9bdfd9e0f755aba410f364f7645101cf42cc01994f95fd98747d79f19c063f3c95e840d861da38c6664b8a575277967f0ab7417965bc77d6a19b9689b7c82e9f7a79ecb0df8ef7eb3f3fa3533917d365d4ca213fcac2ce6efec98947f1085877e02b8e602f62fd354ea553e32782f7c3b2b32760b9f3a24d9a7880d57b8526efa1c7ac9a751ebfb4bec6ae53ce5d9099fa336d7b52548829317f8b026747815f16dfcfefc02799726da9895fce2edaa4a53b19adf061e5d9eecbb08fe8c8b6f3f9e24765bb26fa770c36ebcbbe45ae2365ae4ef7e3ca892f78dc7aff4529418b33a68f2cf1719c0f7c50d9cb167486fcc58bca2b8a8be4c3dc5d0366fa802528466f507fc0cdbe3d0772c23771565e824ebba5677b61609790fbc2c3f347f6ebd169f20d407ebed4bbfaa720f4d39dee416ef49fe947c0cd42c0d377b6178f4f6ad79672cfdee2f5fe680f1de2bb39dbced7ff6342bd8ecec49c8255f839dbd239252d920f07ce609b73599155174535c2949f88df72955c349b8598654f9f6530974b3695f969a61da91bd8d8ace2d2e66e1be4563eec1d0af0cc641d72069ffbba57b5cf24271485af01bf3a81be6c6497d11a4a135611cc4cd6cba366b25183675429e93293f91be07e7847fa48708a0e4dcce08c72ed006483815ea9b96996b893ed1955b32f7f72c864fe903f6bcba75ed20aefe658aef78e5942fc11e36c3331611eb06efa017cd764c5b8dbff785c42cdb158e5614ecb8bece411e627a200f2399631c674b3f5e7491bfbd3b2f54bc0fad2f6ece937e0ef3ff2214122b13bffb2ee367f198a0e1dbd5f472dbd5f02bd47d1ec22f373c07d42d18152b14e6ae0e72e057389bf31c48ce4cb3cdc200ec4ca23c4cc56904f05cb2c297bd9917333b0d32a9c744531c13af5ec6d7b3d8518ffeef76ef82ebe26b266ba8abda575f19665e64f7609c27250748b5c88b3d8559e3dc5df1c2117e24a4abc48226b429f85ff71df756dc4df0faff7f6eca4f0dbd13dbc27fd05e66dec65e78459c095a78667ad3ef884826f04b7fda6e94f39c3efb8f62eded9b3d8e0933ac0fbcd117304fae8fabcb7cb18cb2fca6a0efe6b7dbfca68b01732d80bb80f11d83d87eb9cf6190bf7376b6843a6083edbcb38e6c5d5e3f307577eca7ab97a38ff9ff8dd5e95f91bbc0b729f5e1a8fef76fb6c489b205797147953255dd33ee6e7a72de645e70f6e760c1cf057ef70428dfaa1ed0bacc3bae9eab8afe2b35985172c0ba184ca94a5daf7839f83acb6655639e2a5d065f24c5ea9e73d17e7361306b25e6e06e37555b0ac646279b68c5c7bfd2deba121f3db4c5915b1a3c7b96efcb51d78ad237f45650a9fffb51d5e85db11e0766cffda0ec1c5ed60703bacc7b9bc6fc70cb7e3639cf3a0fbc66de99ca05e3cbdeceefbd12c94f5f0fe1ad392749362fa25668a50b08a50746b7c13cff36e5fa756bc89a783ebe4e2d5d902f35258ff8b4cea7e631a9ebce5c3bdb049f3fcc9ba7fb1b8f282985d62e2769c0ef9605fbf8c647f90713ad9bf18c9fe77983ce43cf1ef7dff04bfc312ff27e3105b404f37e9f2e2ea10f771f14c2bf76c824b8a86ef110c682c47837eb117a807ff14c0b5f8e11cb191bb3385e4d738faa91506bcb5400ca69b21250b05db95edfcebb2ff25dfb07adf4fc20f68b5025dec222fb6f45d5eeaeb30de7120735f1afc7dbad725a85005ccb4756bebbb06cef6518f3a95f39f30b8203e7b603b4311390317015360a0bb3a22f86d69fa12ef4baac759a163c4ac895f3cd78deb0a6460ee10e9abddda585a0c395714b30d135f009bb8b927b77eec609bdd65fee41d6cf03b90f7b66053fcd4434ae124ca4f57179f49a05fe0031cdd4295f894263233057edad389b8a1a5b72810a4109dd6198c2f89d37d9c2b3c96e0d3585c51ba4e36d1f2f6f9933e09312365e23a12d89ed0c4a28087f34b88697862fbc67d0c65a76863809ab9fcd11fe07eef3cf47f275895eb401d91ec947331127374a41afcf1615cff21428e1ac9c6bcf40cf5451dc88c3ebfaa7cc622f9d821b701d695703bcab9cac59d9f07aa483e655707d9a46bdb5e7fde363237e07ffef4fc59768a1a6cef101bf460cf1fc909435b0199cf3269fbbb37dafe4eff4ffa7b91f52c1be15c09e67dcc16b4473ced2ad79ed5203331b365e0482169af98118cd327f30318497144e4bee5c3190b8a92571475ba386094911c1f874c016c549087731415156060fc4b991345b318ef29acc729239f8e116ed495c8da23db5067f3ff29c7d3bddd06f3103cffc379be7f67677b295ceb877bfb4832905758f0275e1514c49b39637b071adb3b32c06b7fc28bfde8917fff6c53327bdb150731adbdac94ae6e3e5fcef0380e637930ff5156c57fb4110dd797f88017e71fbbfd04e741a6205d039e85d80083f1e69f4f64e8a14f904303962d8568f613f26b0a54d6dab48663b86fcfe02660a3e8eae865a596769b674f9f9132e16ca48b7fe9be2178986bca3f110c7ccdd9e67ea3237fda9d4d2cfccd26b66f723afc3b3e9b9fef63c19ee8757776ccb65f608f807623c66d9e75b61988ad0a162c35f0ff780904bae56d95cc4fcfebc57622133b5d7b3dc5fcfc9ece0fe7d535a868f09cd83484e4063e2fabf50cd9d215fc2e4fedef713bcd4952b8299b2b6982f53a821bc5fca80ff4fd13a8079bca60bda452240dd6edf33aa5c8a31ee6d8a0d8e1737170ad9cde2b34d95d892d6e1ef9cd7df1980ddb05fb764c6fd5763f907c3b70d60c7e7f179701b93319f8fd800f9185eb30890fa4cc490bd79e5dd0647b207ed9efa1c8af73d759d722bfaa457e39e43b913ce635f4b33c08e06f3ac695bbc855dee7d0b72d0478e6d12c4127abc073e3a665a23922e67b580eaac086847994b1cc7d92a73bdddb01eda7ab08f1262b1a6f799797384d305d203ef1a7a0da3b3b521e91b33adae0f156bab76709a60f3e6f558100bcb002db925e56f77207e21e733941cebf93d9c4c076fb3bf77412b31be8041b4e11766319a67a5ad6a1d93b7f6b63a208451bc37e5178eb82e96933162f782c5c86bd7869720a9ab1c4b29722f463d1c8622f01a6bd067db96f9ff7e8af782f57655e14b6b186994f35719080c5d7efa156f6f925861b397a093230d623f0fca23e5fc4eb834f32c17047cff6b203b166cbb37fa4ce904ba0f3af6de307c1f679697d8efbfc4e712edad6fc939f76b643116cba319161b9f8b5f74d36b30f2686f5866a9a7ef44b96e69f9d3d53edfc913f85b2eee31e0e0ffec8fb7e4f5e877ec8e84475f2d91dddff6d0f4b08ef053e89457e4505bc55f8c2f610f0f383c75b988fd2ee04976f1e50ca5e149b8c215e17229f5cfcc92ec4f2ba1825accc252c91550eac78b2baf5e8ddf30026c1633cd118e8fb4b7badf05b76bf60cf4a3a0b83343901bee591e4fe56843756e60fa9941ef0bb4722136c73573f446214836f9e0b3a6e0cb948e507d90be21a669a2ed108784d72f1eced982f2c43d330cb15e2891fa6568ddfdda4cb73a34fb53a72a6f0d483bc36a2f7a7ed6540535b1fb5544ab12c32eb7d313b9f9cf8cff3fb876c93e2f12a596535ffb9ce36ffa5b34da514cbbd31ab39efacc28bffed1b83663e215fea4f3c6fa5e16b2c33b731277b674df6b8c13eddeba4fd4d3da7075ed37c93b08ae0ffd7b69ea4c80d3f003702f04e31cd6fd7eed53f526c27670954befbe50c96f8b32c592ca7804c41f24961f93c95a255eb0f4b61d9c9ac7f2ce7ceff05ebeff19f56cfffcb3888d69256777699905877b019fed8de6d456866dba6ed2f6d229896d650f628c81c7a14c9c99030aeb34b004f18b017a8dc78d491ff45796e1870909b210bd215e5e9b37a4f30275865f9a8df74739baeaf7e6ac29e44e41c2edfffd21f7fb29b21deaaf7bc95347226d4ffa997db5f6cb7439b0ed59e8b123a50ce45a0274b924b2b5a519d4f22c77e3882fa2d7173909badc75882a7baf6bf59bbc0f7743775e1ac6d77f6ec29eec3f259bcb107f899267b47dfb1fc0658504fb10f0658e663cc8477826d44c66280afa03ee6098bee68e130c66a017c39c1b29b67944fcbd930e6b75c2554c74f87ed60acd1595ac0cdbe10935c644e8c81af181dff1fca8f036c64b1c76ae1e7e331e097aca7cf425f78cf3ff410729590b39ed9d1b5d767cf18e982b5cdac8226b700ebd345e8c03945ab8fc639aae24c11a4a12f27c4a7b84c989073c719ab2c6fecee2fb1247e6add10bf3a7afae12aaf8a77c5ca0259674fcacff15991a28bdf0137a310555e03c6aab610d37fc8dab33b6549fdb77a39da0faaf8ea55bff99fee906a519780672d5f784ffc183000ce9d3d582f75cddc3e3d6b1ad4fbed01f6ef8c42b475f3f9beed32635efc8915f9ad1ff062097697bf952746dba88989c9b7bfd07313f30483a536a7edc565c2d08f5714f87a9c7657cb79bff5fe81f137e018d85dbcc55985b3c6332b422c4a5ec834f5475ecc5ff09fb32a637952fa0ebffd7256b70b5c37f1213bdb0aec2a2f1c83c5cfbf65639ec9ba98ef8e4fceb4073aa4c69b7f1463f9122c6689562f5f5481cab7c7ce9fa393f3b17eb5b7838b4675b683d09fac338f995e5cbc3fb9cef69f3d60c70ce35dc77b3e4747aadc30d3f90067e71545f9f700f72fb1995930cab3ed88d928d6b9b7677c7b4e52835f370f39dcaf1a1f0fe8c11cd3832e867e6f1557c72828bcff34474290a760a41b942f3fd3f4708aafb5c996f87270c9bddd6638ceb63dd9e2f5aca249d0af670b7c91b24fa17ca2bb1cce6b925fb18fa1156e93c64fa2c31e942237122b22eb62dadad9ccda5c330655ae8ffddabc2f53ab300d790ffdd33ad121873cecbdef600518c119f8b1dc3f4fe079d53caf1e9ed3f0bc26cfe317cc3b1a3bac844edb3329bba048ce622c474fef9fd7e4f98e3cc77471fc9c26cf3d782eeb2522fd95824ff0897836175d2ef1267f8094789435f5b943e49ca4939b60bacbfa0e7738e3bd6657d4b763cccf5a7dc6fb0bf6d4e7aaf43d2ef31d6e46f6980ef1622bcfa2915cd18146e3e779a65571665756a05589ef08ea97b22a7dbf3aff7fa0dc987cfb3f5cb6acc77f9cd52d93383153526bea116c02d02b5104f19ac81962cc0b22e44cdd439e9f78ae19eaeb5eef6902aa091e3fc148141390756d16a171de2db0afe0f71abbcab55da70d36d21955710eb980c00f7dcea26a5eaa8bb72ff568d2f0fee27dfec9cfff81eb962e1c8ba495279a18d614f12ca66f57596f75d1250bf9fa9d72ee2779d5fcc7fba1c67406da7692509b875fa589cf1bc4a53a6ae763d4c5cfda33b45e51a3733b92bf3569305dbbfdd59e73d0b21ecf55a19c07c6b47cd6f6608cfd983cb7838ce3894778dae3f3cbfc3157c8f4808eb71b9c7945390b3e8fc76949aea9e6fa562ab5fb27e072468ec24471b6999c4e5fd0f176591b6cb249a773359ad7da64fb0d98a15cfc252fc4ab5ad117593f339bd38e6d7d081ff6741ad668f53fbba7650bf644eeacca5a8e0e5d5ca6561dfe6c805fe3778b39f0e5a4f495847c0b755356e258f9b762517f1abefd47d61324595446ca2b61dfc9dcff00dfb7f2c4d1fff7f7b25b35ebf18e9e13dfb138d3166f7fd0913aabb57b53f4b742d5b38b64a88ccac509beb749a7ffe0ff648d98ac0af152e545a9a97a7d7ccbe59e0fb4ebfc887948bbd6fde314efdf7eff90bc5257cd58de540e62556fae23d59e49b0c8647e4df2e51bb7dba75066da11bfd7e92d8ddd6bceaac6dbad3b17e70017fbaad910bf06b6084c3beeda756ddb84ea69d9e7df9c0ef2268b904f5473cc3616be023c0eee50ad0df36bafc7a37cb5de91ce346e4a6b0cde03cb6f3f8a5ff67a512976fce547e519f020753add30cba7e5212e3c2bbc9ba3282f955acd00cfc21cc70d029d4b6fe73d07b961f13bf45fde29547d5e63ba87697897a79f1ee2ed586ca31fdb9a5390f3d2c97b48fcc733a472b79bb278cb21d7a25d662e6345806f91e4d51adf3f6ea7ca42a4d7164562aa9d15ed39c179efecc83b067e47a5958558c23bce8a760d2817f73bc7ed75f432f41d2b049c397b86bf2bd5a30fcff0776a82bfcb683f355fec5aa4eebe8d3c3b3979b8cce316bf4fadf55ba51edf038597327fb2a2c93328abda70b7726360b944ca5d7bfdbd49f2be7f6919a2747df6ec5d8878fa8ad22dae8f86f26a5cdf1bd4d7f49f7cd7b401df0bd2e48a788b82f6d7877cbd5073f52832f8b99fb21374cc906ab8b4b2d856f80fdf0f1c29ff70822b62a0ae4a8d6ee566b1cd5543c5e51e5d7b9704bc04d88b761dd3ca6249e33eaca17f6bac33537e6ad13e839f2fab75d58c0dee0f135e5d86cddd662e543c17c61bad2cd41b2e1b4da4102ddab1816fa7e43bb642a997832c9cb675c31e2dd78b18cfe7a4f9fee23349beafbbf1a500d38db4addadb748d9829e917becfdd18287f92843016e3798c5d47fa76d392cc17acbb65bdb1a8dce357d59e59cf5c1b9785fba0cec6cf822be277093a49570ff7c73850f8f99abb956aff4ee53a31ee07b3d1f1f8c5b96ab8b3b65e6f22255e57fedb4d59e03eec423f2d4e7e6acdf09cb6df288b25d3d75d9c5dbbc8f0f30d1e1be3502b8be56d4db7cfe9d0831cf74b5c77bdd1effbc5e67bc74bfafa0f347c5fdda8be0cb672edd9a95fc74bbc076e6ddbd1047c3f6368a3a1e664cfbd51ed73f05b833519e7c3ef7c6605f144b0366a35570d13b7ad825ce2b8dec93a71eda0f26ceb0265e3f56c1ca6503fddbd03ebab9db7752de6ebe312e6a8afa70c03de3af9e90a8f23b5ae6e938d7e9b7463d09481c7e00397b1f0f3751de7eb3a69e700d3aa32b0d98cac73e81fa32cc45b5f869721a64c8066199826e1779625c4a1dbd6cde793cb609de27e36e36b25beb0fefeb0db758ee73f2e5b9ae6f149e14da410b78bec9de56daddf4a7561e1b665088f0f5957cd7d13f618ae1731bb93e7482dbda8c9fed9b6eb3ddd3b52e29e24f0c1b7ebe564c3ddf09aadd72b2af7d2f2eaa7ab3c60c22ce0cd8e0e91b9dde2394cd1444afcc90eafcf04f653bd6df6868ae73e0decf5d9679290d0613327fb0db73b80bc996eca5608c6048f47b34761ef066734595383ba615faf1787b6ed27c4947157ee714993fd72b70f8f4bbc5698b57eab614d75e328e2fb408bd56388bf6bc7b0b977c8f13bb89eae6fedfd15949378f66ce6d9658e263e8c9ddad0bdf52208143ebca2d49a79bc35e9f914a14ff8fb3dcf52e3f540e66e037d482e1e9f84e82425a40f78cee30aff617d19a5bbcc63e62f76edd3b0c60ca0a55990b2d547cf67c85c41791d7d68daa1c2da035c6f7ec5104c5e118f710de30f6bdb845ce5aee311ac774c839df5b91fefed0df89c05654c50daef51f508ebab22f351260872258699977a5718c7a67d5017ac618275d2d15dc3af815747b82deffd73a041b796ff0ee728077f7dbea5cf62b51ed3f5e6f9606d084982f8f21a90f1bf75ed31fafabab5725c962003601e6cac86cf1b7ab9a4d6306eb83d5b6a505fb3a6da6f972d3d20cf85f70ca579bbafcacd42c4fbbeee9faf890cd08dd99221fd96ba36f88c15f6ed502b65017bb85c0fc6cd678a593fb62007ddf0d8ae8de13b23fa58aa06e6232a83793da6b3884f4e7b6157237e45793dbd29311f536b17d3ed61bb29cfb6f2c17ce27266309f83b67fd8568e7876d2af29221fad615d26853794d1da7b3d2f68d68f99b7fd4029dcefe893b2106bf8ce5e9d3c7b46b9dddee864a6c275a42b910f60df373c974e3c3ea191bd2a037b85dfc950dac81f11a953357cbc3f0acfde65814ddfc963407bdb67571fe209b06cb59caea3db74ddada3a61ee79df64fef3919abed44592c4ba8c74806ef8cf820ac03cc9f5463590fea6ae6a793972ab5c2fc00ef47753a7ccf075b7230a46d64dc0c931abc77c7f3fc0af81d6eff6237685bc3f784865e19f10cef172c63c0dab19318a5b07e7ab91dd326bc760cbc1ee80c9d76e067867a19bae135301f993fd9cdfc94adefe4e84a3d62fa415f5dc0204e2efd5a02fa3e859c7ce98a71edec7acfc7d423de6f3e1ebf8beb78b36efe084dc1b402703d4899588e86769135c5607a6b8ef94577df8afd7415c13e5af8982654ca026469cc4f2f1ed3b5a15c1f9bb58de5e034481a3989f0112ceb9167ad6c55a906a631cb0ae8e38aca7d7e957bf63dcf53a7d0cea8a103c27b88606f37736d60da2cd22aae1ff2d1c3f3bbb95e4e88ce7168d7cecdb5cb4ebf68db49e8046e0f91657c7e75739d24c463ed7772bd58c39a31d6b8aec4c5328160a55ecf0b4ad089302f10de13ff04e34364995acdd747f86e4c2b0d11ef333c7737245805b405643e97c811166e0b3bf178ab1ad321c21b54322e837d274e07735f7976a777119a2048577f920c74a84606adb03cb586e71ff6aaa37930af20ab8915e6913eb38a3dbec4b216c437367238e8011bf2bc9383c93e84f54be698595d3c6150f7714b814cc3dd66eb043f1ff2802d03b2bd7e9bfeffa87bb3ed6499ad0df482be83175013394c501a014541ba33011504840454e0eaf7a85980859a7cef5a7bfd63ec7da4224d51cdec6acee781f160ccd067c2c4136e77fb0dc92f3ca6cdce322f5e0a7e0192296335ba51b8bd4911a4660d3e85017a098df14485e7bdd6276a83c66f688bab06b291e31b9c03f77dd43352f7ae147ed7ee7ff387ff279dceee6d089011e2f206f9284c2f236fad0ca9d45380fe1fe8a425f6e16e2023800791bfdcfdd3636f1f058289fdd3a1bd017bba8150b53eadd3d9ebd512b001d8d2b137d76e1daf0ce447f081226e68ffccd31e9334788e20b92c512053d1b3eebe7b6b4ba8a0c3e03f264c1c1be62445c82ee4df8c764242b98f761fb2b1451c03f119fabac33287ba8fff1ac923c27eedaec3f2a8d3cd848d432f097d7bd02bf757ccda1ebbb0ba68f6fab263cc09f0f35af7fc344588597556e69a28fd1cbb17fdccabe31e43b7c7774b36f5ce326349dc5c25719904dc67e9d81fc78049a81df7796df7198fe8b95214bfef8cea4262126975d8f3ae580c1b00061becf5d190abe5b6c76523874fa8eb06ec4f933de895f9ff997717827f7f77cbc9ba5a72c8d140efa9c739197f23bf2b731fe7bb9d3f133fc5782650fb82f3830adfa0c545e48a4a8ad622fb532d01febf3ee6879f79aa0173a53f4faf9c471c0c88aff69f93da85d8de925a5b93dcb370adfce6bc083d829bee19e3e178f153b30a2cb309e6fc6567d1b84e23766bc7a213883d62acd24c49e9eb3e5924be6d22bff6d34b9312d7d34c043fe54bf71ea77dcaa7d901e753aeffd246c0d7c4fbd4c74bc098d18e49a8ed6f6db37fcc5dcd94739038699907fc6fedc5b8016dff953efddfbfdbefd762dc8c1fc760b44e17e7dfebd1022eac640ed7b7a8d6b6012c348c1b5698bfe49a591ccec9d26774a5cc0b7665488caadf62cd70e825b245f98c5d1aea58d5abcdbfe16cbfc6bb3cfea3ea4e4aeeab3d72c63c70b854b6912b8a28b1dea90865cc5bdee30977f8b9b22db17e94c532d371df985395c034f3cf54a1ff5c0bf6329f493bcdd3c58093e1b15dec23ffcd9b4ee281ea592c8f365355046cbf1f6b7efe675c3b49d6e7cfc8c276aacdb6b9cc6cbf03f1763be855f2021bb76fab7afa982c9b39ad4639ce6b186d3cd5a4594598bce4c4e8b133a82c0bf8e28639c33f81e323e042caeaf8c44d2ab76daaf09f781b0639dfef1d1f91ca5518373a9a5707bdc354a6299283becffbd1c377ccaff2a34cac3521fed3f364b5f5e88ebd9879cc2659dbebcc8f8a6fd9c82fed3cc279dc671a783a0e7a950ffb6c58df157021396fd0f9d7177d4cf2f001cfd58a194f899c92c7fc1b0ae7df6c59d8b7b2c67ffc336a67fc863f51bfd124077de1d86b68b73f5ab35d6eabc3b0179f610b579f8c1c7b71514493d2ac369fc782ba93ab276c2f81b8081d665b78e29afd174cf6e96116dfd4995fad8cb85e1aebd172f6315919f3c219ad1f7315bbf685aaf8ccd931f8ff0517c4605ea2eb9fff6715f1f319e77fd4e144033e200ffc006dceac3b7a5e7f8f75b9c1208772fd0efdaaf3d441af9817e37a0e38c807cafcd1facf637f432e7414428e32f2e795b4bab6588c34e41ddfcfa7fc1472f572cc599bbc78af475c3ee0217cdbb7796f3d2e1e17bf05351cfb399718e382a03ec90274be48159efd726dc2bc456b46d3a568355a7fcbcdad599eca446e285ad5736a71dad65a7dac96e684d29a70dfed833ad624f6182a93f52c534f9ffb6036ad96a78c928d8c9207d87ec76a19c56f524445833a569b2aecd19add8fa8c2f979ee1cedd18655c4f0457fb558954f796a839a46b28f2e83752a4af06cc07267e241aedc837d99005fa330efb94c49cc1f2f817cb71adbbc449db735ff13f0e8bf3c2471cc0f3655044ff3b4add72374ab7fa20798a0ab9184f980a390b2468b006a5520bf757df1479f786e8852a1425dcb38477dade854be1a51c5e669ec8153abf185167f9423f1471356e15f71243de4a1441867721b85172447914eb01813f939dae33a2238d6a05edb35685d16c685abc7b9226e3cd7a458a4bbd7a3f563bd4948d69b18167fd3283af41f75c1a036748deba2313f5f117071c70f78f098c5976697648e0ee4d858a38e637f0998d1bf70503ef2f3c13dadd126809a51746c44f2ec6f12e49ffecc6b993cf167da0c1bed9292b2090e86e7fb2e0bc0a17ec9697a0419d9dfeb44bf1f06dcff6148f244fedc1ec226b21fda36b85ff04b9ffdf27ec05918178108d8d8ab271dfc30a66e9b97e5d721ce0f17d7b9220edef39e573b5a241837b6c39169b94999e4cd058eda4e476e3b39725931e35eaf0266d453dd0ed436bface701bd82e7c3ebff91bd2a74b534c77c956e075ce0c08172aa48bed85aae8bbcbd67e80aebcc4bcafa815b783877d37b0d5787c5fcf3fce86b011ad75e4724afa8636de2bfe0caed38c1af4e9abd63dc7bd30b78c80f4c603d18f36edd353b3b4fd0fb90cf7105b370ed4df21f3f0bea781e9ff5317816927b8377028c09e9350f279285a47c7851c7dde6220ff8721d5bfd85d7f38eed4bcc8d5e560c785cfb79f1af9cbbd00f2feaf5db784948f653aea46eee899bc48f8e4f35df641dc14ee01bc0e906ce0f627c52b6de58fc69f79fc943caebeac4b8f872bf475bd34ef0032af3847aace1433a4de67ea9ebe397c93326711ecae83817e71a8dfecf5701577dbfd041fd5ad7f479f65f7295e607b17a3cf69c43ca0d7d5f5777521d6a83fa3a172463ce7ecad2fe0c73ffb4365f0db6e6894e94741306c23c5da4bdacbab8024f39faa4f14666ed30db57ff7538187fa4964306309b316f5f24ebb7fe3bea571ff01abbf370fe5ca73b7affb85bc77471b38d6e0eb635029d5e187dd63bdb456b85dd33cbc9eabc2e7c26019e65a84116e05dde5c7d123bf6263c88805d74f3462d96cc294f94f3e7b5c3fc40ffef67d94d1163a89d706c93f268ccaf47e0348681bdb9ea82097ba38fc7b7021f030f5793dfb98c30d7229a5f1ce4f189cb992798a177ca4255af8a9dbda45c6b92f867f5cda22167e11ad880ebd8046252b8468eda5de37ab5ed1bb21fdbdab5d95edc34aba484b8f9deaa121dadc9069fef5ac0fd1de37aec65826bede0770818e256953823c059ebbee37aed33694f029e7ae15a48bfb475f13a9f28e7ee7e50075e78027bda31fdbd0b8f597ebbd61af2389c7491b83378d7b39ff291d3d68e0fb92f27c47fe6f4c0c17dc8f30b5fe02fdeeb6b6f8e35b940fb8c69d472f7e3b976ca4209bdc3fddac2b196d4ce76210ea0b47803aeadbe614eef84520422be77cadfef18b9b967eb55155826ec4de0d8c3f2e4a7c05784c78559d6c059374373abfb2f9c1e809f13cf79182fe18e5d87c7afcfa36ceb9537b563bb897f5e86de1cd787adcee81ec8a72ecf7ecf25e4bf49c84f4e17335c8fd65e2f2ca235c39f768269ec84240d66f9706ea76cbcdf2eae48a6f94d770dcbb8f6a270eca49da76a5b0f53158eb548bc797ffebb6355451f676658da27e2ce81c0d72e6352dd6fcfe273afadc33ee855887ce780badfebdfae97523a7739ba933fd1c3f14ef6445d7d731b23ee645b4eae71e50cfc858fc758958b8bcecfda0167442b23a2c904e3fa0c8f69c607706177bcf3aeb559dfffefe26f5334373b2eedc4e589670a7336e0d0bc1d6790bf6baf2ffb94bd7ac84e63e28b2fb02d5ed198dd8f8e6fb230bdec393a54cec75c19a9c5dec832af9e4c146b7ed9ebf115d9e958c66f598ba6def75c9828693fb7736db4456d397902dff83007a719f95b06deb8e139ca7979f384849239d6f7ebe20a982977fbb140f68fd3d034613f169aa0be7bdcdd8f754f346d3155b0629c741149a06bddc84977e473523e7631ef1db625d265ed5a3ce56ecd72676f28d796b2ae867337a3d1ba025977102bf48e8ddf94c0cd139cd799942c934084757174f4cf632b278f92b098f8e879f56718709f4957a32f09f859d8de5f66dec82c5cee3372f54f88154a027bf1c4f8183061e2459fa1735e5e3dd1a45cab9a48c2247118b3f119bedeebe3a3c46feabdfe4979f527e0df044208d84ea8ad3e1326aeddd56a9ba1cb8d23b9dd9fecde47168eb9acdf86786ee76a0adc95e7d69748cd2610d81aea362db3009c1d719d49317f91841e57e0e8d96613e0f700ec6fe4cb4ac2276007faccc7d11b4947a79547ceac38ee2d9696c4e5cdb596b99b2689cb7d1ea508f9038ba314252ce4afeb9fb7803b466b6b7c74bbfa72eeb30cec2525096118a45bd4e7276fb448247191b8295a179393ab7f865eba06fc2ec7a29340306bbffe041f00eae05fc4af095b91dd338bd46f724a4917a93faaa61260fdba8d226cdae39bfeb893bacd03b6538f95d7e263bd077598a0f92e6dd11a009c8e04b8a6ac6dae9c17576fb4690e62d57e5f179847d4cdd1da554409c98718f2314177c6857fa2eac7bd867e4d88d5d489c28b6cb0f52a1da37b458007fc809d2cdb254bd6447b7515beb0732ece08f81013cd84b6ff69eddf746755b04e5c3d7e73f58ad64ca4636e507be53434b207525c5f7c84f8933ba36e8af8d1f908d17e1bd4dec8bc012e7343df3a3e63e0a7e22698b3b9ae90dc7bdf1b1561bb9613025fa7d4eca5b737a9623fa34b254d62998bdf3dc07140f7db66ad9cb904d6a401bdc48525c60e5ca47eeda4b2107a7b9ec2b172aee53116a04e38b54621f2b9f2830dcfe21ff720bb3d8f809b44ee59fd13e8dd338ef9ea8c6c0016de6f67203b17b70d6c686e12bb67b5c5870ebd9d49e524a68077dee4ded94ca453997535688a70ebf83a13b9c5ae06bc18cb45d717fe8c3e41fc4e8c7bffde9fb137e5bcbc06f60262b2bd7ebc63aedfb4d1c7a5d37f3db638571ddaf83aabd91f040e04b2cd604f6f221b6c09f5f8e70478190177ddf8603503f0692e32b29fb8eaa008eb6fb9ae80b3f4be0788f4d42d72ce8bc4b18a08d7e2cd311ec07daf91f89fc0c8019f6179f5d2095e0f732c53b01f961468adffc2199a49f6627a10d797ce0640d7b5ef94604c7607fb8a507712e78a7864d55939d60489c0de3ede6b81459f7592726ceb15afd9fec561d88b9762bbd7c03e4826ebf7f522ff58e7cb530ab2bdac2d9611a93f6c07afb21b7d92bb686e35807fc0936b7ec797866d575379be653750bb5ed15dbdde0638ee618e22d99359f4f2714ef1b21e170e5d1ab6418f14c1f5b634c5ba50df5854b24db3abd1fa0d74f1ac68eb07ef71e44ef76e1b9a4773dc1f05396050f0688e630e7ed42f81905c020bd953f739beeafeefc63a5d20fdf82d89c08bda8ffb1a385997574f00bf01cb30bd5a21f9609caa82900f2b423e2c34abf28c0470394e16155f76d63a934deabd5b23bbda49d775b7ee8b5c99ab5d9f2cee7b5393775fe0a9dd2c7f6ac3ba8e0b17d737bd01262d5381ef82392fa6c02faaf01b4ab3cbc84fcd10f9769b3441be95e15a7c8decf8adb8ceb0cec930a6a8b049fc1fcfdbf4e71d8c72db8e2b6b8aeb0beec30db59bbbb97f5e525bc6040e14f47cd0590dbd05d9637f3e9dd3fabaf360468f032e7cf753f67af70d028c7b3e7b8a5dddf7b66ca847a8d1bbbbd6fa4d327856d62b3598d1efae907ced464bca4fe74f7153901bb60f18d6775e2e626fba2951dfd51ec352abd4f420f78a697de114f66407cf75cda2b6edd63615c6ec465c630e8f137de9f4ebce40dfdb77e2aa50b3c617e21e48dfb5b1d72dbbd3ab02e93e3f7ad67d7e04b2efcd4f60bd9db0be73f07ecb0c7460dce954e79c881007e18e39d2832e37c1b6515d9d356bdd72dcaaef6e3da1bd944efc3448d6e7f81779f1492969d218027b45f7047c4e12e3e4671c9ca3439714d6474970d0abc9ab3d71f21ccdda169e3ea17d886f988b40303bdc9ab2e52fbbfe0b1f2c039c57367013030686037bc7d2d427f68e1d62ef783fa36f16b30856ccd2db7358eed9063dee64a4c7c57fd4595629cd076a1b5ebf22608ff57df0889b4470ca619b27aa6a4d0f436dd4f5ff72eb215bcd40361ed62b26e44e816eb8ec30667e83f1827dc08656f5e9adc78b10a5d77811a2cafa4979b5816b619bf975fc2e0bb7e9ceaea69235867dd79d4117806550277daecc9e416dd8be79989f845aa509f2354be5bcccf7e936938df16dd53d835759afe71eac34cd76b26d1d17eb863648db63c79733dba035653e0d358342fd47e261ac345345fa0badafc81b2d328f61d1b5c377173f72650e796a0b6d7ecf5d5b5131819151b046522e6cc0362ab0dcd5abadb6dd66dbbafa96f56aae6da7df2637c1ef46ada741147e637b2dce767535071b8cfe0c34bb84b5b24ad402c6c9c8b7edf8b0646ed19ed9e4ddde80294c9f644d67afd9785ff9768f1d87948c74a681f34588d8736631db5667d0ac227e8681106ebde6c718fe01e37a7cdc6d11719d633b6903b2abc704b4b605f0df126343eccdfea37209ece17ad184f6cecb6c67b914f0363360efbd13fbb629ce0b1c9336ee15f7cf365784c7e36017c3dc954589f56a2c87e4d6b620f65dc01f77ece082fc07a4c70e7ab544f27c375ad03e5386deb33ea0347bf30b96c94775300639242ffd010f6cbcce1f801872e70fe4c35cc929aedd9fb7b178c00399b35e0476f12f799848f66ca704e6c3bb8bf7c273370aaf1663060aec1f422c9bd8cb4773608be63dad21bf0e5d63b15e60f67b1f8d2ff0232f0a2fd60830a28877bdb17e3469bcd1827a9095784f9ce4ce46e363af332f6a656583daab4e3d5256d683984761314be0d570a33e6e9ec9d80e8c35cb216c7cd059c85f6890ff0f1cc17518cb7ac500970c4f157b83be5a4c10ac46b0377046f2c9d127a56b2fceae1ea6e85ca5d551b288fa7c7adf9b17fc42853d96fe7dc203f2b9cf6b768fec9711e8e0cecf387b0cdfc7f5ee7afd97f9a357996b9b3592193b4bfd791f76f6c902674ddac7a0ab831e176b1bf9f7bc81fae3f939adfdd1e9ec518cb998cc0505fa0bb0f827608ba0f5e34513687fcbcb42b60bd91017c0a76f9f8fe68d174d46ae959c77e2faddeffc18c2966ced89d65f1cfeb7d3b19fd5cea5c2a9917f2d757235d3acb8fb1e831d227e60bf1bfbe2cc5feae99b355a773672e9f36572b713902f14b3f7983505f7b7f1fda357364410757a19f55d0cbc2ab0076794912c4ac08de2f2656a1bd44d113f3d3741fe5f580fd68d782c0234ff470eded7d68fb976fa786fd76aa1d94eef673b0d5db4f2b4d8eb93d8b5aa2410b69953c7455017df8aa002aff6203f660ef1cb62dbd0b9329fb23bae9a6926eb1934f5bed109d9cbab79bf9fbe55d3453c8829ccd03cc13e35956d1bbab42836908d225f37f4c1a2a6ecb6ee6c98b2f7293abf41323e900ddb622a6edf5cbe3c415d8dbdc9565d1c6ef41906cc187c39e08a17d5b76044b32e5d9e6c830ad519f94e63d61be21976f27381fc25dda85684bfb420fca56f6d3bf174b3ddebc3322d73ec658f310af6d03c8965a1d3e971ba888ea13faaa6bb1aef7bc9dca28f9d633c4a35ef7dc419fd4dc624147ecdeeea7e3f2f03bbc0fc68ef3d47d7fed9cef22dc6a86bfd5fc881c7fd827ce41e7b92477e67b870b95085789b1578064f75efb6d4ac8de7d0d477a087dfb2518eb5ed0dcd93ccb1d56ccfc57f0ca38a2daac239ff7ca9da06bd44f3d2e029d6d0cb509eaf7345a0e1b7c7550774ae6615f92a0ae13a6d4b157e7b9dccccb30d9a93513857e6b797d7814eede4e4198d9f7969f7adc02682fc0ae3beafd7faa0f7dfc43c38e8d557e7bbfda51cbdc714d1336d2a57e62ef2b5524f60272e1f84fe7999e17d97df6b1ada18faa4d5dd5f01d7712c8e2f5d5b5a7949c431abab664b85d35fbf986cf03e24de9fb0e697760fb7080ce4fb637b5c417af4aeb761cdcbe9ad78e6e923f2a56b821b0dfb2dd92f79890de42e80de0499d9e62d842759af6e90c332ab4eabd10761ebfaaccf9985223aac2c7e946e1d5fbd59195b2364bb3a8099a9351f6fc85720fd93bd4103be71c71d8ce494f7e258e72b913197075f8946be9222faec9e7bd2ffbc661f1ff53f5edff59cd5b67dbe80a1c131e0d34fe5f916f89cb6755ec8d4b4304ef415f957b84661e3ad69ea1f0372e3e03b6b44d5c4a29681b69d169e093ec658d66fe1aecb0598c7ac81ee45abef9215a78b7483e44c7f0fddecee91049aa9a27b2ce01e688d107db6035ba8987ab3f21bc92dc27759a3b1d9ceaa6245c3d8dce521bf66b75c5ec84c516c66d40df91adeac9c13724fd5cc8f2f8f2be7ca9c6277f0ceeb77972fb7b65ec61645079ab041eb375d746bddda78264f7dbb7cb9b475d4ee2ad0ec041debe2c5fa6f7c5c3ffbf521f62198edc087589db11f81b157933b9ee7b92465c5cfb920a6d4c54174f023ee6d892d668cdebd86fd652c631eee33bee3d9b7f7d9e1dc46c04adc71a0b3913e06dcff1d61337bf5434c8c1bd61dedcdb296d3dbf720062e6c2f43acde63c73d122aa28af70c87f74432a26ee31f4d6f9b0ad37c3582dcca7c5527349237fe899e582309bd6f6eeb55a859b417e879218fd0fa512f9e65d62eb3cd1ca467ebdee6cd6451cac9bc5e1fc95c9b2ad6bd5dfbdfc4c8e605196743f6e9fe0cfb4f892754a5634d046fb488ffc54e453297fb6b996b8d2ff04ce0709506b1ae56df9ff6c029737be99b611bab93c50eb233ba385686fc8cbb6fb66e6dc525856c51c998bf7bb0773bb46bbd1adbbcceff28eee536f4e99ee38becde1ffacec27cffb2b8eeec1802f7d89c1eb80e1f17f3acdccfab121973ce203fe9c77d8636c6402bd11ae7a683dca5596437abb3b2d484e3bb47e45f3b27e4c7d381221ed9200a23d928a33ed655c77ff66d9c44333edeeedfe75795abc6c0776a75f512d5b8f5fdf16f91266c691f38085ec4c5088cbe3bc6a91fe1e7c8ccf4dd31aa1cf36d01cef4a56b9b1f61db12e236420c5c9cc18c0e1521066e5b7746a37988e36bc0c580daf081f90a8df9fbb6a9b215ad625dda50a14adafe7388ab699ae0bf1b84bfbb86583e1b28f331bbae097da7570b6dab92fb59c5aea14379aee60aff81fa75053128dbc9743d7edfe8e14a997d14ebba5a2bfcbad8d571b1b3abe9460f17edf1adc27f14bb3a61db38758e63ec258bf527a163e66bd4d6396aeb86c8473066a8ad9b00e915831bb455d7b6b7415bd7066a2bb21533d4d6a5ace3fe57e60efaad77bfb10ecebed746251c44a4639d7413959f9a90a1f94dc9dc42f453feb6e33e4f1e33a11c2bb9f8f5672809930478846d3791ba983ef779da5bcbc2d53fd1bb1cd7a95978021d7a110db2478ae2c29f817f01fb17bbd1dfc7dbee7bea4eb607bdd5ce0fb1d533fce6fa9b6de99dfe77b56c5e5dd59a1d77bacb03d96f4befab1677b0e75426e33d7a17cfe9f50f8de60ed20dde0cc9325867382705afc116f78f8cd9f148bee58a30eff6192f68adec86b13edcb74dd9edcb168bc8cd95b379f1993077cfebcc43b2d7a04fafe373c0ff89fcb4956b056120248c6bb6e33b5f4e1ca64a56e78fc24bcdb3636ff220356d1c87d8cc60ec6df5cda2b13e33cfeb0e03b0f1ed0525cfa45ce19fea783a3eb19603b07f977471fe44f34fc1fe9c546e479b64678dc9fc903a40bf810309e6e7a5d58747595cd24e949cf1dc950672dd3fd1176497031f6302f8c257c0434d28d42fb87605d90650c35cd19a356ec788a82d616eff005f0f4795bddc6d70be10d265186b12e9319cef2a0b26c42434830e17919b584c18408edfa89aba26c42d58cd56d3456a7a3b1e9f077c0efabde6c4e36e956c1332580039116be296d82b58137b051f6c6096b16d9437a81f45cf6ba6193e46df88faa8028e9968bed3a16ce437ab59e0f36b279545d373798af591cc1112ec6bc3311abd1b9ae72c613b9f010bbf19f0189dc1be36cb73ff9e5198584c1068d69cb41fe9835e99bfd4c2c0bbaf98f13ffea9b7b7f30e1bd24dab2bfaffb9de2abfb7858bdf5d8376815717e65e5c7811550e31682b1162d30cc8d3ba9d77bfe6982bff69fcb9296bb426b18d68727bfd77ecfa9dbd543d86bdc9c03979e7cb23d60b708411f64ad8f58bc398b9c7854bc7de64caf9f31ad4ed775c7b97cb3a8b7fc7d54a8d6e35b249fc866ecf710b8f616b5988afe6799db7f915d9ce40e70df8abfabc1d1572e9a6835c3aa7a16bc8a51b6dbb3d71cfe3aa8b9226175730c706e364ce40ffa2712179c807ba38b787732e6ded970cb761fd1ccb173f5ec4f7fd17e7393fd6fc75fbc0eaacbc68428ceb533127171bf0e5c5063b8ebaad46f154b3e6ef7b6c9311d776f65adcda6b9f9e6752acd7e607da0d6d065c7853c4edc567f09a97f52a574435570489b5ebfbfa5b8d9ccce7aa73975bb89fb5d7f2d3c2afd1d85423cd342959f00b27aa1a6526e5abd1f1aef766f4e83e579c747fdf0f98baa769e69ee831319732cd3e164114de14619dcb467ebf767663896bd3c5d9bf3f4370d03a4f35db276cf9231bd41583dae572f1e31e6b9753d8eaa2e3c5b3f8db2f3938473f29619fcd063e86b8d8360ff7e02006f1746cddd03170cacf613c579ab026f61ec777193a8f59972f57b65e7d6bd6c43312ea5d47326cabfed9de7dba6fd9c8b5bbaf58747efb908b85f4a1ed751f871dd478ea93d41b2d78c75a668f7b3bb25d5eeecfd8420e2f9923b4c1fbfe9023f4cb3d5a7ebd0d6023a2fb2c2227dc801fdcd97738c7d08bfaf74b08ce8bcb01d9bd66b9863836ff911975121031845360afdf367a75f218fae63113c8295c256b64a7d581807388552337206ffcbc69eb19a43703d983381f9492905f672f2969261ddbd8ddd1b1716ea66f9bc8bf8f2501cd9dcf27fbc0b1aab3375ae481109652043548d56b9d7297b1fbd1f12de0266339dd7e7bd164ac88c8cf9a4cdadf1364cf584fb99ed570bfed5c8e57c063732cd13d649d4dd07d90bfb7d7e98b728e7385016c17fb67cc81c9fb7e86f78ea10d7c5141ede0fca99e77c80b326f65bdbd09bd9394b97a45c97a2bc393cf85d22c58655e529d4ef004f6ac3e71333fdf0f9d077b2e14f17b26e507fd16ff869b10ccc637ad99bf05b3db4daba96a75fa64153effab77f0477c1d70e126686ba020cff6752d7667db27a8cfd1f8b53a76a2d8ebcbde206b6ff38b3c92be00efe2097361a0c71292974241f29eabba7ac3643592906cb8c80d0d35c5a45dd9d7451b650eb5887c99db064d813dc98cc9ba4e561137c92b3b581125223e71ac145bcae5eef3bcfe56a32c5375ba96f5bc4673d38fd0e7845504f3dfef87e6e77993c07c4473f77c2cf05c9772986b02f0334e905cd9a36bcf71e1e3f573715ffaf92fe68bc58fd1b35b1bacdc59e3cc8baa04d7f02f1edbd8e6ad76f9a1eb9c588fd5ea043a7da21a3837673f93de14a33d76ca4ac89711fd37a4f7d1fc1a72b3ac2ffb19510b06f3614e3eaf3d477a384702debafd4cfaa7bfc7198effd3dd63d04638775eec8d39c80b55afc6ea294732a056c4b85ee16b8ba0698fe17b16bb19fa1de3df06ffd4f6a076d23b1fdb24039eb2b38febd9cfebcb6e86e66542c80c78fe58d5517fc1bd2b453cd66dfbbe036e32bab7077e67a8efe0b800b22f83fc422179398f406f9c8f552f3face402f36836071b1a9e7dea6c461af8e8e07d5b0edfa0a107ef0f7d65f4e7e730a7509b810314faacf31d4bc73ec2bc54a3ea82f3ad8f2cfe4dc33507bdba3ececfff0b0c1b123707f735c522398bde4b6ee804b77b5e425d3bb4af68fff759381fda7bacd079bb194d8cffbc0844aa70aced4f5838f7985af3bf7b9f3b07da1cf99b5702cf20d1ac31eb9fe85cb358d8e3696b2872373a425c9ec877c95d83aedbf3201f12be9b836ba8c76b5a3b28d42c27f3ea1b251b65a2597c97d714024e8e28b18e89f97de03f12cf1fcfbd52b3dab91715ac1755780e19dd5848df9a2da1ff47ed5a2fdb35f234871490c9cb17731f701fc6aa013aa66ac718748cda8ebd666dd1bdf198832e8aeb1fe67cd6ca9812ceb5a922781af3418d70d8aeb17f5c1dbd23de1f97917c9ecdffc1efdd1e83f3a4299ca793e74953fccec479069c37199c67c07993e179f0dc097ec63c83efc604e6adac030707e8664f787e87c73c24901d333a59446ea2cd70bf609916a3e39745e45eb4764d1cf4eaf442df90f72b5ccc29deca9fb6dd6995e03143fd52c13800c64dfab27d851f55b9224c0ba7af3186fde16fb7e3ca136eec4e9fd68aa0b25e8d3e1dd68fe89362cd5bbe1b95dd585bf27e17c5ba7d073a1d628e8bb250ecedb7a357a9c2cd2b598f89f57ae7079144f5bde38e45d7c8cc8ff7cf14512a9dbaa4156b5eecb8aa9619b50cf432fcbbfbaf593f2a4fbfdc9f68ff9a6c7ffc57f7173f0ab7a1d13d4ac7c0dc617e43f3ed58b532cc2f501fcaa36de9e8d55911a56fa7a6699999179231cfe5612cf3eee73565978bdcb6b19a6836ee0b1c93086f9a1d2684dd530451355144d4fe3827ead56f8bc8bd21d9a7cd68067fe7d1f7498f839794376c7f7f7aaa4907abae3ec81a7f7b1c4d2bfc946ddfa1edc70f762f0cfab1447e381a97873e4b17e74f24e3fed12c0a7f37a9a9664efbbeb4469f38a70ed9fd6697a325b1ed5814fb198dc7bcebdf193d1ef6af54ecb90af5e7435f3aa9cf1737db18b34e04df2bf47d7fb7213c1fe395417fd86d5c2168fafee6351b8fd53d5ef7a2cfeb8aff973e1ff57d7ea2798d7ee8eba40c202fefd77da52aec71c11a3a54c49ebba6b337919f5adc6d157e2c0be36207f98f039ba3c6ebdc19d81a7e545d079c9c3add20d984e49536a30b79a4a68b542dfde6063805ae7163dda86c0e7a15ff5bbb81b3aa9337c2edb1dd21f0ccd95bb29dc896ba28c21cb51f8d433ab4c1a4c2afababacd3b4221c1fdfa341ef87e669bf56f590d2846a7a10d7ff38a36aea1a557a10ab444b011bf3f617edef7437c4fb5635ffd3f9dd7957d476bfae68a5cd355484e33be61e5a03369366f089626c819b5431a4918cc6a5a129592f32579fb2986f2bfe9285f115f9088ab5fd72f5ac066e343d0c35fdd8c8e9b874f53c91f5e944d6f3504ee7dfb2a85e35634bc97ade284282d61af2e552cdda5ed5baba6aa78f3fb2706365c8032adbf8e8b2f2cfc0c9063c514ac73b24b02399a30b6536bfaa75fcd6f6f3cd1bf91097571a35477a421654d6afe9bfb9d7e9d5bd9cbabb17ec65b38ae57c7b5c795204e75bd3c34266d45c69a4626716946dd039c4e9753a25e670bbd7a222bf11c9c742061d96782a4db16e54e55663c235b291653bb3a0f17d968009837113a67f64e1c8fa0df2dd69226e7c2cfdb67dab987817512d30ff52057925c001c5a13625de92a7d81db2e10caa9485e3b71bc5f92a0a693c6e74d88e15d2bbed7ce74fde48cdfc9a1df46180e4897064d5281f1c77f418f5c50ddddf8dca4c8ebb9837dbc8221a67f8bf7ef93f17d272237db5fdb6d6f5b83b9ffaf9fcf5e3f9c806ca543dbfa039b8e4d067fcad46e873febde4f25c4ee3127fcebf1df4be23e9cb8f284a3e4b5f5e5dd4e8d3af0b4a4ea75f5e4dc1a75f978d7c568b15dc372ed51adf1f7fcecb6504f7fd566b7cdf15c403a6e87f74bff65345e75de5748acebba2fb75f75946b89d5e94878a35fe0ab8a296d3f86ba7e3cf80a3438837b4f75b429c61faed4779a3d8d2970be74d71fbd3e997abd38d9c6e0bb56d2fc45b18745f1ae2167e945fd1757e54d672ba2dbd3a4f14713bd897f33097f249333ede9de6c6ac18f55b33a4bcedefd039ab59609627b9e103d9b855ae4e215d425bcc32d04ed4adff3ea3aa45e4163dc7a0599e6c3d7eef6b7267f3fc5eaf78bc0d73eb1d6457c58af8c12ac6bc702147cc1fe4cbbb75f12d5bfd7a8375abea74613141a0cca45c4ec75d9c068ec97a8e3f517ff3e5d9ee7fcf8bdd6cb0be2ac5aa3c97a60a358abffca8a821f6838fe5720a9f5f5e5db6d7e3df7e5dc51a295b04a70cb85b2deb25b9e79329d616ddb7f06763569db1b1260236de4db3d6f9eafcc1ba242eac48152ef3abdd7cf7e1cc9252ac71e1ea740ddc926699a3df5e0dbf69cd5e2259f60578387a0998acf2197cd0c29b215fef339053f0fdbe1db3a86c3dc7fe9fa022ffef66eb39f075cb0c8faef9f2f1de6aaa59ea9753b3843df279026ebf599e6ae7ed1f595c973b3dfe6a3f81bbd1ab911e81cf378fa3d3835e313fc5b648bc3142ff211d42a3391a0cf0bea7f56a043cdf3877cd9a786a94d3d877c5df65f069b7dfeac3755a1d5ef1395916e845259bb00f7db11ae94b46e7ebf1b76a52486e0ece53c8fa95466a73d07efe1fd60d60c7822d73459fc8eff6c465b26ff7f5fcd3186331cdc6ac37aaa6fee9d6febeb1488f11b5b7efa85ffd28becac2147d7ec9c21cfa79674c909fd7c87549f8eb6aa2467356333e59457c1d63029e60bdeaed853ebecb55a787fcd90bb99fdbd7a803ded234f366bd2ea11c6b9ce1f9c2362d0e6f83edd08f3f1e57b077593ead57e98d45be0b794c36f242b355722ea4849d05ba4ab16eb922dc731d902d07c7c40f569d95374d50c97178f739243f96684edc6c83be2a689c8509feade79982e7cb0dc62b5de78ab0ec7f6bd6fc8ac6d74b90def840f3e26bc79530577c9efa72b9b87068f4df672037744d5e2b37749befbe45be559f6f6c335b647794811ebfbb27ba74f5f02cdb34cc0b49705887c06e0ed2cecf71a066f345dc6d88ebfb64fb56c5c35852e45a907bf94fe26b4e29a40be41a387a29ab597f3934c489f0f71ae441add91b6fc9e52719f339b3018f74aafaad028ec4f07e8a31ff230b537c4e149ee4668ed70fdc23cbd03d651deedb3c1c6b65dae0586303bf34dcefd6dd07f8411a1af34b8b5b16f349777bf70ef8deafe6bdc2cd914e2ad0983a503b0ff7c4bf6bc8d148917c24710d0f7a7578193379a851edc6623806c75a3edff73c2067def878f7877d56af46780c70bf4b5f3e4d157ef7bd6efb4a5c9373bd548d69b633f039b2a87eab7a1228b89f6a390a1bd4ef589f67ed799fddff55df57e29645ba44116eaca28748b780ad3db077c5ed57a097859cdec09f0b74f684d6a9c7b1a715c3a379d1d8067d9119e7cbd5ab10cd1b1ff7652d3347f2588dece187f3d0b557388fc098766caa70fe22b644c42c215ee9ea14ebd5b72ce0a6ac174d6bf0d5cfc02d7cd56ce9aa4625b28b1364c71cf46afc1ff8c29e17d194224aa56b52c8a6f690fda5207d4783aec532f00cfaf81bcbc5bce9742de80d52df8e4c42dfc6857ba24f72aa225bb690a390c6f7823afaef00eb6d1aee65cdbf1cbdad433ddd6e445ca58ba5649a0ebec9c09647be81521f6b3c866b167ca4ed604f3095f5f82acfa42f8f4376ccc097cf14610d391da40f8c6c39a84744be2ac8be8f760fe563aa1973c0e868f3516eb25e9d5b3bf2dcda904c6743ba758c7d23fb9e97fce2bd269aed92b60ed4b60549d7a77c20335b3297918cdfff81f30c38bfb20dd6dbeb55691b397c2aa2db8d05beeffd7765eb65d29d67db5411bcb6dbc8f86942c4332e07b1ba10bf136db47e43fabe8b6d008ed3e9fe3b98b1c92a9db0cafcc73dc7d77a7c46538a0531988b62afd17c0ad16fc0c5b2a6853ba36b64a3fa33ba81df0d9dcae9b1f4b91cea619c1ae9c6f597c75513cdfef8726af43fce93c498bbf11dcbc7f2af7bbd3a68b6833e234da72eeaeca3226cc5489bd1e522724b34d6cae9e3a6ea4eea9c6eac5d3ba9dddc58551fdfd4193f3d88db3fd668fdede9f94911b6e833b60143ef2e0bb0df1c4c0f33c05361b4510071312faa425cb736ff6331f3c2a7a9b780011d7a51841870707706eba1feb28d7c8463cff3c28b62749f8b469717455c405cac8d8d19ff498c8688b9142e57dd707ed463ded39894fd8ca6cf6f2b725fd69a223f011dafd0ff434c70a8dd9f68823fb07120f7c90a90ed31b15b5b766f82ef522b023e8eed9949ff1df9b13b5cfbd168a78ffb589a2cd4022bb69aaf981b0b79ec7a8feb556856407c1f93b6da01e931bb21305d901ea3014fe1a459157af601fb12f83bd8e8fc94f4f7ae6a045c3e193e27cbec1adbe8ee8c069d2cf353d246c7e7f1ddffc8e6be01ce8d2c6eeff176bc464e4aeb6f9271e245e4deeebe2bc6df81fb1843ffccf8719d77f53538374ab15aac13d0a97402f15de4970c656b8de5f902eb06c88bcd6bdc7e88b361bdcb90b50dd3a9ca3929b27b546b5b2ef5b8b018ac0fbc3aafb12e071dd2fee603249fd62fda4de4722cda783699177ad1b69304b003f46af53736e72087a3918a1dc6a728bc067f3a06d5e60fa86c9b53d0f9749d1f97800d877db84bf71de687100fe2b63ba8e3b8e75be27833de17f786f1e62bdedf568771dababa3cd6f7abd13473743ac7f6b074954515f9ac850bf57bced43f9529e4d4b6b6950b3988452da76e20a7b7a2b3d1dc086c9cfb779061ff27ed07bc038da32a99acb19ba1f61e517b33d4deae5d3beede2ef8ae179962ccd13b0ef364e6af7cc5ce7719b3aace52f2898ce1c1d827ea896235e3e3cfc09763c657f594133951d2bb1f15ac3be87b78e741dda41ae514f40ff24b8c8a5a3173f0f3356bfee545489eb1686e84761fc35c5e7dc8abadae60b3ebf0ae9dad937bd111f9c9c43a625945285fbee7737e0de45d5c9768ad37eb6205dc039fffd1b5aaf151b8fab452b9db58b6a9c27cb17f4be6a3ed5abc608371539f31a92ef60bf79bcd69851bdf96107baf463bc08c6253f70cb8d2c4dc3956eaeca3504e122d9fc1a7a5fcb45a07ddb9fce7299865177506f97173d7c0f5c7aec097be905c5cca0d9dd1e6ea9fb2cb8aab6e7e6a9e76f612b5f70d644f54e58160d62d5f54b33a493795ab3a8c845fb01d78f6a0c785216cd9fde83374195377acc9f7bfd429cf818b0ab89c00477ad8c6083059a066c961920663a6c680914fb651c118ab5d1beff5cb097bf3d384c1bc65cb095a6faf72cb03836efadc725ccbdcd5e69f347b4be4b081edd4fa43f77c7177369ce72ec4069f6b86dd86ca549dbec8c8a7121da4ef194d50df83e821bfb9b705d42ef739b646ce97539713dba06e07fbd30b128a55c93ab21f6ad8ec862ea0860de73d3f6301e8d55833a72d86f731ea72c33b2e3a2742f6609f673242fdb1032cdb5073e32496052957e65b36d0ef39e6bab5cef61ce4105f657e9aaf988db7d1f3933c0a02b9a10d45fcf4029afad6cce5a08ed8403a8551bfddba9a2119b16eaad38a52db58e011ea5a7cbe9cd97a32c055c079c7eabb11b57d458d515f01a652878f4ad8321ddec2e9111b49476da4d477972fbf6d838e2da60c94d1a7b7a6a96f7744f435ff51982fc677f3e29801b5cdb7a9d3942a92db266011501519af370c740e35dd19e512ea9f89ffb6484fd112ba5e47ff6df852b7213f92c0e183ebe7e89ccf87faeb2ff4aebb53755a3119918bedb06bf4ae4cf6bee1cb4f5b2f58972f055bcfb7169307876d4e01ae02ffc19a5cb5d5b66bf46eebc1334fd44d1133d4f76f304f89da77f344afad511e28e6c6db27d4fb3a2a5833caad8395a4f25c9afa51d2d5adddb1fc52feb27bc67022f2609fb106831637c7e44b9aac7f08b824e8b0913af9f7ff1e3b6f5e385675db09f337c003e41789669771cb713d83fcb0942f76f66662a46ced59e87b9eb8aff098b698c770f513b64dfbdbebb12a877c94d8ff5e93f8788339b3035eccea8a6b65e7acca411caa08a0a6628b6c089aa8b32f90ef10981489d5f21e70185347b36e7d9cad959d2fdf19de87994fddb6d604b848a1fe74ce0e8fc585df54a992b2742010e7892a3aef1ad89bf6fe5bd8bb85b8dde0faea0a7b539673f14626e5b65cc90466c7fddc675e8f819fe918d3dbaaaded07ec68e43f93f863b0277ac7dc539839e660bbb7f1177d08fe6ba3351f6f323fcd022ec67bf4d61043006c9b3bbecfd5af13f630a84d1b62f5421c5c6c63df5d6e66435facd167b01aad711df98c3eb7738be9e652d74f6bc6044e364f4828a8ff34ca58139dfe7fc05999d18c428cd78e2fcf3deea07d3f97e8f3bfed8ff82ffa2323fbc3e512a8817cd9fee7f1fddbb505f156a85becb1a3a6e83b6943d443ac2815fd1f7ae2678673b2002bfa011321cc5b7c8f70a8cfb7ec0ed785b475951b1edb176d4dff5f61d17e52ca7913fac07974ccbb5aef1de4eb8d87b8b482fa1fdc93c0fdf9f59ecec0e6d9cd0635fd31922f3e9aa3828fe6e859136e84bcf291ee8965640f08780f76888b0958525387c07ec336d1c7b7664d33872e199bb0f3f74cd2cfc141fe84e014aa4e37b29e93fbb531aefb22e48d910ff77367f3d2afe32f721fdae7aa46b669b2366ea259f14f7542b977de24fe7979c7508800376642f4d101b0f25bdc98fd236e8c398577dd9b65347cd7976d2e5fb5d9ae719b0f46a903df4943c3e72b798df497926e4edee9e773ee7a6c99b8b3bf390fe9bb160fc0da620c0e260cfd94be7a6972c21c24af74eff1771c24bd6ab16631b783ac575fae41bf3b4c75f519f3e2dacb662017b613cc832c246f803ffb5b8dca960779a10863e443648ebd283d66923b35f63d48dc0e577fc44a1ac8961063bcb5fbdacf3abce865715a5df7d6c676ec45b313f8c223f1a1ced2c0eed8d914ac6775569e86f5c9ed3edea076f303ad4b1ae30efe58d38c64d7093818b87b7db3d7e25700668d1e66b82e19ad53e75bb3c67f549dbdadce9f10c396058755753685fd2d5c9bd86896932b02efedeeb8b029a11f4e9ec036c06f33fa0d1ff083d56cf58f3acb902e6e3177a64fb89dad8df216b4cf42cf0df84e7752c58ff3e2679eaf4fd20f6db158fe7dfcad2d9291b567b1979da5c27e1ec6cdea6d880bc63025e322f3de8eda59f9b73fdad48e7eb74f89f5510fb012d3846df71391bfda3e07fbac501f0df1a1db008feaa16eb8e5e0485299e34f3d8e49d4c7fa53cd9a5fee9877e6d6abc3936c940d92db5a33bfbaa73c3d10b17aaf619bd5690ebc232b26473ef649b3e0b3f046cbc44bcdc6a7968977ded48e55e5811817bb14e9cce5e5f7f39295375a94e8bbcf98f1df9ebb4fcdb8d5fb4267f7df71d7309ee50b3c6c0e64099a838c9978299aa3cb817cfb971886308c611098d550c3d0635ae73d3fee00630d63b4f5983fc49806d88e2fb01dafb63997cff1298f07cec64411b6ff38c09fa0b2ae9e00cfc38f6b4da8bc00b06f3a39a1fe887de0d3656cebd559b35b0c40a3a431e6c0f88fcf81cd7ef618b3067be6defe37f49f2f9817e3057631211753c027e50675e8cf1841c33e073cb80e57b2c5efedfb09dbcbd077b7bfc4d88ce17ed6c6734d1af05dbb7c35bf7ec857b3fbfcf906f2d43a7e0bbe646c8c6172b2462ee480ba708caa94e613bf9bb004be5155af628b31e11cbfe7b7d8e6ab9abf29a959fae206cd891e4f780f18139f80ad84f793c6dd5eeb44d6ab9c8c137b101ba0a681594e6c52160c6342b4354a822e2ee4e893b36b6f7a3cc9f53959b8f8dee33baf6c39d62c89c4e43e0cf2e2676cd4e3730bd3ccc618526f76174ba33757599030ee721f4b92b23d17bfdb0d7de8c6d2e5cb836d4c62d43e79e4636c379a056cb7bd497d077575e725217c7ebb8ea72a706be0fd1ebb86f937c447e7a7900364d390bf5cc07dcd3290d178a0ef064d3ef7849f0be77f3b34ea4f7c4df78cbd1ee72fe24bbc667cbc6f8c0afa98c0eee0099fdbd06cd3db9bb4b731a96e4dc5c00181f757209fb07bceb6867e31ecae7dcd3c57840df04174fda282afbd8463c019a1972778be50a163c47c491e626eb04eba781bc9e93243ed35e8b2b1a865d0fb7fc607b63966e585ac4b580d6d9115609ab518b03ac4a7e2a907f5fff739a9137372d7d085454d028b4a8215c57a3b9a620dbafc86f760ca4061969e91505ff26cfe6dd0e83e096b4473249b28bbc5c95e446e2acfc7c58e0b57b25e6ae87e32e043b7f15452c68d20f6c7c8629cf775297619b9f666e45ae605f4cccf98e22f625171378ebd7ec4bc3054f1a05b86faea49b724a98cec204bcd09bbe8cee5ff88b3876cd75606dd65fb3173f5f8ea20bd7c9771a592a2ef41e25a13b08d1eecfb5ffecf91bd531e6cea7d8df477aab2f8f3179d89fbf4addf7fb0c39b634de24dca9f0281ad5727a9d85993d41378caddf67b12b522d0b4276e04c75a52de487a53f5aa74ec70f1b827a1083c15888bdc399b14602531bfe0aa824cafac7fcdeb8298a684e64aad0984dd7caf554facd12278e0f9be1cf4cafd9b9cb187daf777ccd5ff73ddbb17156cc09739d4a72714b9beae8099d45449cb694059ccf4cbd5cb1ad7c9b7df75f602f8512f6a235f707e0f62d79077ae5739c48f8deab262e2477fa36bc3a56d436d31f1971795d7c7f8b403bfe753ef54860ff1e92e3feed2e6c475f7686cbd7bf7f1b763525fae5986e8bb3fa85d5db0ca3cf8a9ce7ac0b71edc31976ef8bde6e47b519a69429e891f55c9a06649a40affbfe83f5c43d3f75f22a7db96db7de1ed4c6a90f30ef8063aecfdf6cfb500c70ff693eb835e393fe5aa0cf7ec41cee59a30ee78e491afd7c60d30d7a22c6ed0f307710315d92151dc6353402c65867c7529477e6287030558c85c08b85e72fc7c6e8f7fd4e6e0ab5c551358fda17af71d4255a40af375fec2334610910bb962c6dd7e50e89ae5c5b6ab296006b53a00fc5af3febbcf2d8be644ced2fc76d02be95ff21f3a3fadc5d23c428ca03d96f4f13b34b706189df12f3c767982e369e02fdce3f3b3321cc81bbc2f7eb518d3733afbc0a4586780c10e35b6041e17f0987c05fa538e77816c6cd0dba7aa40febc5c27278b71efba5c6c7309d15c9d0db8c033c26689356be2ed304fc1d562867c5d6d1b0bb7c1ff111853fd7fc189b65c3d8c1521be38f686f2d3240a6cd4b7f1bb439737f9bcfd7669ea5bb39dc2a1cb33faedf3e8b7cb4a7fb1c65bb9fdee43ec70e3f9519ec8a345a05913561620673a57d2817ec9153e49f07f035ecb09e6e2823dd509e4b60931e473e8a8bd29e68af49b22df1b54a822bf7c1b24f76798635fe02feebcdbc7865cbdcad5c34611b7c50ef64addc2b13749a70f65b4c6f5f0a4886ae171374ab6aba92cc680cba908d4b7dcf4b6fb5fc9018ba60a0f7c9829d227d7c77d4507fb2a9dfc4d5af93b9415333e51ebbcd3278dadc757d5da36507f9bce3b9bf2628d96816c600e32472730acd2b83ba77eb4979c211f055a1327d437ae5ed5a41c7c7cdfc735aaceca64281fb6439ce99f65482219502f6f23ff1df845c48de725548eebe981f7f4e4eae145990db0f5a8831e1e905da7335b76cfd0a19f96d7205e1681bda45c7b017cbc3a1a176b59ace23039e8b7a77ad6c1dea64815d68bfc67f21cb276cbd5690ab07c7ed24b246f099d2732aec3619579fe93ae24f03806b54e175ceb94b08ab8b9fc829d3dac31e4125611ccc7f39f9e35c425a976ae8e7957000b211dff980f3e9c03d3d79c9bb331fd1b9ffad2a4fe90d7598d19aca24da200c6ee3d6fbf5d17a166c599a357890c7b09e3ccaf63724e5c6501f6066bef44bfbbb679f28424762dfef260df3ff7f76cccaa27f6725fcbb71b1a27d4dfb2910f8ff33cf813fe88a71d7b91b8739376982a778147fc09677c882b244cee79c5b38f424fb75077e258930cc962e70197f1c55c7ad9162413ffed1dbdf43e7e6d8e6082e6e3c12889367ffe867b4cbcc79c7522c071a656e705e08f1ec4aaf6a2491258cb62676d12c71ab7f5b7db74910236fa1fa7c5a258a5f341ad886cd3b5971451dfa71c4dde27b20d1addbbf16d33f45333de1063ab888b0b9af381c5d7aeb521af63fd747c793d4e6d3cd61ab7fb23c59b1a5525f2877cc6bc0037b4ede681986c77e222f199f0ea096b9c9bc5911c145944ce33297ae527cd9ffd249a2a02c16c82397d75852de435e0df38a68ad64bc7057ed0e3c2671ed72139a7f84bcbdd407ba71f73a9fbfa754d5f7c1b9619c3336a8c01affde8b77de2b1fd650fdf4f90ef1f5ec0c7061c6b957549ac323c8f492ccfabf22f1888768bd18773ee911cab7e926303db83c40fdd3df04520fdff980b093681f1e833401cb8cd516939ad44a9e5b44a30a75587719094b4adc79720e58bc0da161e5dd2c8f7eb700e80eb4a9f308e55d1ee634e2ce08a6ebbfd8106d77410b641cb6de59fca13b21b7ce0b3e9f22e17a1976e80a35c065eae65a05890a791cb0c7cbe3b6659d806dd0cf8a6f4eaf4eb1c217de57b6e31e415abb3b219fae32a119fdeb201c67ca014c1f4a0960ae908a3a43501f2edaf9abd457dddc80f3547ee6b1df3e8d7796ded29e6e9ed6c2a32b60a75cc134f46b63f601df7362fdbd688d65d2c6f90af8afc5721fcabf905b62d69c3e018c2b3ef276e3c3fa1085b07fbed3bcbc906f5df7c59db26f23b714c037c3a637221fda5fbf881bf14bf1ebf617d6f1be3b8b4ed43fe276056b96659dba42f78af910e55e0b8781e0b2297fd719d749ccd3dd6ead21870263ec55a88ff72cdde786d5fa49ec0a2b17e9edb641d9f49bdbb02e477030ee0aa4efeab7b7809c4675ec58c1fe339178b6183ffe61984be671521f8bbb9c5dde31484ef0731283f2a607d49291d7a691806e226f422a97061eea035372ea4b45cbad6e6bab3368d143dcc6fd17dd906ac7f87f12490b9c02ba60ed6970feb8bc81769f3d888f1c732d25e783e4d839c1ce08a2465639b25d4902b29f58095d0ee9b720ffba6d6b33cdce913f4fef5ce5ad001ec3ff47d75c2fed514f565f8e05777be37d9b75073e0d505eb27656a2379a9e7b99292ba7a8964690698e67a5c383a71ae5152165305380f6e7a7520c69dfc753fb7738d22da736d71c5af387ec80604a63979edbdf6d890ae32f28975aa226a8d2f8f7df2a21feac77ed833100319e4bca9b332d30432e711f8bd1bcd362f3da705e6662ba05ff4ea82f31e1e630bb7c861e8c4b126686e168141d35e14b6bc1998274111179e9b50859794199e23039ba990d265896c2cbf96905df03dc08810d52bea0f19c6c4c56362ccf19808f40b9f09e79d10b5ad0ff1a3f973dc4954591fef31bc3fc619097f7b9853d5ae11e2ff7e8da0f531a85b13d5cbae8edf1fe5ec4ff7eed68cf3986b604d3c8f7f7d6f621e7473257c5e3fc41eef89ba29dd3c40f768daba97a43cd96699bdb24700dbc79a780e4d7b3b7e102f8f61eecdaa46498b77b76d2b3acf45edc5f78c6d9d4d0fd6f6dfdadff18dc1bd300681e9f92fde7b380fc9be8c1fea06e777193eb0d5ba5cbaf9632e5d8ef7df07713ed49ec7bcba50e5aa09d463454eba37509be9703f4f28d75e84a0c7cfeabb6c3bc04113a463e41b850a607c558dac57132f0a4186c071f07dc38b8ce76ea39c91cfb0cc03216176f666620a61eddacbcc63aa18c7af1c1cbf12e36fb9b9d7c1384c45034fdef93117a8f3f187fa1aeabf8dc7fd89c937515f4fcea506cd13c72c1bd88f37867998982796b425b7d83eeaead88429ab1873f2f905c8cb5995e0dca3fe39452b33692c93271d6774826c6fcc5f31653d2e46f6f0d5eef9b03768fd0df0da3bfd42ae27e092b578c87ff6a3470e7b384ec61fc2831ec2b8610cb3aacbd3d3dc984e3c6b91f8e765b6b33fdebc33cd2a3c7bd1ec12f962a1f734060456eae92147e5f49ca3827c1df057846927a3c087198c550d63456b76c9ae982debd513a4df28c36263d79846ded92c9dd4aca513c56af666e20be6d545f6c07993f8a34dbbafc8e6aea8fef18431e0ca29695178f5501fcb461679cce20bf513dccb9a67ddb3da3c30b05164837d75efb7dfef9d172dcedd6557a373063a62281fb9b61e7506eb0f64cf8e73527786ae7bb5fec839dae778137314b8f368ab0e730dd9383c95df79e097481fa2f5791de83461faa4077754af07dfa16d2f65cd14c9da3311f76734cbbdc8803759d1b83ef108b1de20227068990187e263ff103554e00b9c6dbd3a3cc8af890c9cb54fc7c6a8fff6b36ab21a810df0ee24e5f8718f11f3d1fa53a24def01aca1980d927264eb55648dc2406e1edbb6f4f63c057e994da3fbd2709e322279d36e2cfc077b2b343abf704ff4f537f9a77438f2d6a29105b5f4b878aa59eef4c08599a6cf6fb24d63de16735af87479b60dfaf294531025ecc15a7fcb239ae0b8a30a348eae80e7ec6f38c70ff9a9f98b9cd46be7d7fa0ddd403c04787a9ef50aea83fd086a4486710cb4b68db269d7d312d92c5abdb804161db9b61421df2f10939b6bb1a924aa97a758d3a89acac296955236daa5e629e024ccd9f3eadc3afee3bf58cfabf327ac01688b1ebfb9067d031bef5977a7785f07ec8a7411b9605bbcdcd7216d11b077d653821faab5212a4f16a6ec0e6c87bbcfef00875e95a0e70fecd40799a270837858be62400fbfb23548dfe146accd33ac4df103e9eb825c9b2e8911cd2cc13e719931f2276e36e0c53eda27837e62c066385567e2b90c7aae8cfc74741fc8c97f799f5c13e07938876af41968d6b880e71af4d91ab9c0eb84ec82d508db4dcffacdcf0f369d0d71af4c56115c7a7fce27eb568ead52faa208eec933f2d23b5385937631d5bb1c5c458b413c5711aadc4bcbd065b66f12d4d34a85077a288b0262fd4a51450de2af601bf0b13bdf245e8ae663503b1605f15317c909717175478bd0db6e125fdc64abd34731e89726f76c9bca153144bab7d95993b327dcdbe0306ce90bc08d8d8e857b0ef9ceaffdf71f7ce7b6ceabadc1b71efda0aaf8b5b659609ffc2a2297b818d4900c7327698b3183b64ea4f8a5d684b6469b00b8c601e7bec2b951aded13fccca34f815f9796c91e78c0269e9bd01ef685a9f7ddac6a800bdfa053e427edb89617f0bcc9fcd46c76025bb858a6e44a0a31ef747156ff41fd438ef741bc458371d41fae3901b63b81e344c4b25a8c5fc005b160cfbe7071ae90e79874b062d6ac940ee64d8439592725c8cb5159b8964badce1f859fb675d675f5edda90c3f8edda09bb3a976d2c37bf296737f44413f3d1a7cb30e0c273774cd687d729e2c6f3b9b63617c900ae22f736cf5d0ea502588ea6d75e1768d6fa953ca01ee5c1bec7ebd9784142bde3eb017365026366b0579893b32cf2ace482edb2f8e209c965c7f067d798661ed4af7d5c768c39b1cd125f67823f7ec3df696fafb7ed4a279e5be3efd628c6d7e8183bc34bcaf3e3f9481fe0f5d48d67bffeffb4d73c3d4311267d3ff4cf30aa8bc5f88f6dc4f165eb559be27c954e5929a541eeb4e35decacc9b76305895687afdef9cbe726cdcece13997975cffcac9c97f93edde64a1ddedaefdf6edd5e6364bfcde13f1e174efab9237e747b07f92abd65fb6eaf00d7aff573acc5fa7bd556d47793aeefeef38625f3b84bf09d8cc1bc2989797340f3c63329b837ae6b5d407eae66d0785cec6aea27e501f8ee2cdcffc3fd5f89b5ebde46249f33269e3342cfd9f3dd73269e4dd35e4053530fdd1b6aaed01c92d8a04e58fc3c3a3a746d837af723eb11fb07dd3cc76314b3fd1a9bd1fd9aea6c2bc9f86495f9703f5c12d759cf2bc36c81c7afeb738de9f3bbfb63b291653826ea02be948c7dd834e080cb2351ce0ba873e8fe6be548e145985b603bdcc73b065cd8ee75403d48728ffb4b11ce31efeeefa4ae3ea9710d43b7e722b1707d5a25ee199e81fcc0c7e7c29e9792f2b1cb85ef2ee6917f935adf518a2ac022589dcbdc9de5b55c4b851495f9c11ef8b52faec739e6c4f51d96c19b1f5514e6b05abf7935ceff3ac05edef8e2589b5816cbb39fb2b43fcb229cc7ae460ae487cfdff6a3b60ed2c873456ceb2c67f9b5f5b300dbe27ecf3bfed77dccb6dd7a6af380f336f7008d3dfbcbd83ff4ff1d032dc7185353c8e571702ce301276bfc871ca78d35eee708e09fdfc7235dc4e665303e35ec3fe6840eb9ca7ae53ddb62f3dcd6e337d5c0cf73fb3d45f6c5b97d1fe4f670bef25e749f2f3b1df9abdd9ceadbddfeae7e68479c2ba2f4586f7b954d2a5fa5fd73ff58a3a773ee6bc8a4dec8fe9285f8611e5315ce6324d79383f4d3c3dceecf7be8bf8455e6cbe798efb076651053f15ec454fcd38f1c3c51eba35d343bbc58ccf6ae47877b3fb8cec81a63b972d7792c5a97ae4d759cbbf563acdb7bce2f236db82bc4400671863bde96f2cc9177cf8537cbc4d6d1bb50f96f7bf03b93d883c7362ae448a235e037b017dbf363c2ba68ed4762fffdd17e7c6fe7c6db2b1bcc8f5a1b8c99780e4dbd59f049078a806c97fca4085896afd225bb62f8168fa02a5a0c82a2dd1b8776e1d8ff27fb22a7327ccca97c8e4ddfd8ddac8c099d75236a6f6e9abe885d6b12fb297bf653bec4b132e9827d1736833dd6d9b4529a8f37af0e438b09835ed70bbce7f214a1ef8f6d2d3eb2cbf2ab2cf0deaeff1f639c39e0d39236418cde35b33bce5b7109bcb53be0b3ad6e9ab8f4763ced05263a07ec221ab879adf520d6e9d615a30127e5bcf0b80af221fd287e0f4e451e9ce8911785a122dc307eab2811bae0b7f79f666e436be85acc81215d5ef96498434b025db019d8494eba65c619c6c8062ef937f909db6f4e62fb854aea5efdd80c1de6f8585f0f7be2416b1f0477bba08d9306c073ea3ed771f4e373004ea0ea7cd0ab9577a2df774292f8295f3b4c983b0c5facbbf839b2339a7ce64555e630f3b73533619579826403258be56fb942373f3553d75e24ad8f5cbad626c7fef126f4ec4fc861544ec7e239369255aea116c8967f3caece7ef07985f2273ff6ce3dfc9b6f2a2e3cd7a420aff03e1f682c9f8838e9af72450f13e5df7dd45c16c64500dcc03817e4a057eb17790fc435f7be833568b0fff7fc695c75199c57137578919306299bbbdc07cec71de4382e028d19dcbfb68d9cf069ab5ad3e7d90ff994d4aff9943c951fc4eaf158b133a850165eb775a9ffd6563390ed6afa94a3c9fcf0def56ff75a068bc8091f8f211f8ccca979cafb253198012b790bfc3f0177e71257392c2f02e0dc6af7cc21fe1a3feeb943cdef90fb7c0edce78e7ee73e079c6b860f564cfc67672f859d35c903619bf975323d7021fca7e92d0623d273c051d8b739447efcc1c6dc8b3ec3d601f7c8873dcc2b0e383a41f2e6cea5bf1ec4bd1ff24f68a591063ce30b430a3583ba69a38de7714525336cb08a503b6fa5aa97575b2fd1f76f8fa672a559b0503b056b866f6301db3fbfe233fc34cf7f9d3bfce33caf6c23bb29c2f8a75ce1fab7b9ad268fb9c28b6045e4dd28f71c1a643f252b663af54e6dce7dc7ed807c499a7a27c7d4018eb8b0961b3a5404c8d322e29dd27587edb42e46887476f2942f39b42dffff2163708c32d7aceda0b6accbe7c67caf65ee536eeea509e5eac8b676525994863c4f35d4170deac1baf9e5d8c79fe4f1a07ee087f950fd3a1f9e72c7f96075fa00bec5d7fd2ffdd6fff553ff27d41b110f2dfc53b7371db3ae31a8ef6af3253137ee8a499a4d9a5c76f626918529ec47fb432ed12bf82d641ce38ce7980bf895ff413e24ce17a35ed60522f924cc3b3cd8bec6ef718fbee7bfb2269e4f53efae59027e7b6052ff386d4c2f002e0ed3dbe939258f904ea0af98ff4dea622457798097d5e5b792b943b7b6b670e2793c0d58c91e4f0df3d4e62fea1bc8b5f588c7dd0cfdb8d7981c3ffa719492f67616f880caf9b3762d37f153f3e230db77e5b49de2fcf5ed54b5ab29e6f3eeaf397ab6d904dc67ed5893b3ab23bfecd353b931ad701f95ac8f8fd23cb806b3ec28811f3d3939f63a73ef72bed6cc22f22c33de813d7843df21afafdb8f68f7200242d6d7ca7979f5acedaf7852c04f7aa672a4bb37909bddb63d19bc5fd7fe08da9e6e8f1ee31cad1a7cf78bc3f0948cecbadf39eba3c5e0fc7521457e84b9d5275f1e935c644e2a244eca156e1148025b4bc2fcd8e51a28d1c771c3b0d42afa8864fdde475e14e7c88626eaf44eb84e0ff03ad3219e4e5b4b37323d37b9d7e9b9a7f2a2e961426287ca7a9e203df180173ec81be8307ebd16e3d74fcacc6ef352562ff6235d03fb8baff60bdb9c8118c9679f7320aeea727922c37e5c799185db70af07fcbd8ab6469fc8b77edad35b3131bbc5f911c5c35c1dbc43879be11a3887e0ff61efddba54d599b6e11fb40e26a076cbe16c948de016657726a0826c6435a8e0afff462a0102da3d7badfbb9bfe77dc7780fe698b6420849a55255a9ba2e2f2e523581ba3e7ebf2d6e7dfe994ebe5383893ac4f85f268f714e2745f0fd7d355eea90e0a58beec1607a3985bdfc2ce40b8ae3e7efa4fe1c219f11ce8b872b69f77e80735fc801407bfed11c0480e3f13227a12ab7bd7ec76a72bf3ef94e55946fd1b831e3f18ec21bd922fbce58b85b967a1792e7e042dd54afde63e0f575718deb10131cd52e4603b123f526f72907aeaedd84b96b22e0c2ecd03b1be49d0d91e15db698a0f934442657c5dfbc6d347f7f7a71f3395b9dd9e5aa0a66abdd30df9ed9356adb10a2b7dd643443fb92be65d79d399cc2f3a6e8791b01cffdbaca6295d9f82bfd546ae6bdc507aea2bf913cd7bf6bbb61a672f4ef5961321b7fc99136b8e2fb36b8c2d776d1731b5ce177b0320896abb3c558ae871e86ab26429ebe8ede6117e231dbc50c1a231d8dcb5664728b2df416df1ae9d8d35d93787717a277297d552f17ea833d9aeccc5f324cb1327897dc37b7b6eccd64ee7f3b7a31b7eaeb98d27f8505eb6c3116ac6d141fe4d9bc3a9916ae308a6c93bdefcd51dae0e4615ce9bb36650a8b2d3e2c3dfaec5c97b0eeda80ba8ef9d76d5d2e5b1df747d58b9cdadffe768d626e75f6e80b5a3b12e0a49c916cda1436ad82c64b42cfd9c4cca7cb369fff9a4fc6e5f2fcfb7dc7168399f96a1da13174fcd54ec9f761ceaf533673c2e06fb017c260b03ab339bc6bd4c9bf2ad0feea3f18fed59ad2b6d36ebda10c7d3751df0dd477d6ae7392ccfefa37d1df6c046b756f8eba6b9505bb2934590730914d3642f36a5a751d2d6a4fb713fc3fb2195fbcefa01c1fc2fc137075e50bf807aa39ab1c53fcec60888a3fc22f7865d7c52617fded0b4566e9c5b5f9bc051eda2f6b5ac0ffadca40d54bf927f50786d4f6496b310c9e6a583a3626c48049ed3c9d2b876be72bf093b7704699a17174ab1a6769dad9afbc07d27d25dbf8d424b799e258afeba428f925585c389ffdd6cf67b7ab1cea804ccef1913debb2456ea1f5f318b160933f58a8efb2ab18f70fadebc182e6a1da51f535309e5e581aaa5e96608b88b01fd92b91b24558c88d2b4dd6704d64e3f66aba0cb46fb05e071fcea0e2e4fa84954d6ee1fa4661d5d809a8cf35279c2ed88967144a9bc76ab806dbcd63d57bb96106953fae0948bfe751a7cf15e08c6966b5f157d6bc7f6e03ef3213d90e5f873e60f2ad34e40f9c9838d8d719ede4d9cd93c414afade1db461ae6b6f5fb6d238d786dcad6f1508c21d9f8613d8c490b309dbb3e4073deb92639f9658c6dc1219aff0af01671ecbf91c7c300ce29e8bad6872aef725728cfaa55b0482601a34d563e575b9c73e18a0c7fe0e268990c7357e207cb64f8a956e5d9b736a663cd18c73a01561db1dd1b0e1a4df2785f7889dd95ab5fe1cd26f115e9218f335a9b7a9b03b67a93472044bff6cd3cafafdee023f0416f7cf5ac285b26de15adcf8d299ef7bd9813d4889dd96b076b96e07ded27e87b0ad7967caf4a6bde81f8d0fdd77e92252ae8c039e1d91c625b5b2f0364af1ee5fbc586fc32c8b7bd35f85c83d39b2b94a365b2cee1bc779b5d3196edfab437872767cbc790a79d9437bfcbcfd17e5f95b1c911acb9ede5e255010b9cee42943b50b733cadd81d7894b50dfa36b22f2b99e6bd4f731f2691d91b9a2f906cc657c0f3de7bcb2fd9d77c7b18ff330e5293d55cc316728e6c88318a53870c35386ec20db60ae07618a39a8d822b0f4d148d9b2d5b28a1ff578211de90e7e5f541de39bc03987cebc7b8dee1cd7985e18074e879ccbc41dcc44db5c5c7abedab589699e496e6b32c2eb6ddaf8c8d7bd39427bf183c6b35a0e7657d7342a87037ccadc0b7ffa0c2253dbfef370cec04f9f876b153b73f1cbd7478563cd52e0956af03dfbb1d50e47dd756f2de62e87c62be6618da4ed73f63afa0ebecfdbb5b6433e67ae49eb0c5d8f64f5b82d986fce9a70fe007ed6d2e53668edd67195ebca5ad7986457458aaf8a648c8f42007acbab822bde6f0dd78d99ab3d301823312a5f32862b4bf96bae43ce431b17ded5f9b990e7f300bfe827e32019ae2f76db873598b081d7d313dd339ff5d5e10c66639631c4c5a6b3916eaed13568cc287ce405eb4f700cdcb6fc2b1a434d5adc5cebe3e62610877bdb5b2caf4dc57fa6db419fd7382a2cd5fe1a6ab4e85c1a5b0f1e046b29abd712f2e91c5c83f24ef287dedcb0447ae0cd0df34f4d32869e54debcc48896e1b43cea25a3211d38357207c71585c32e8e006fe21fc8f2b7b242c9c5133e0f92912dc37b801f3ac4fad12ac736f2b575a403473ec6b5c17d463a17deefb5fe7b50faef5aebbf5adec9efe45c14e978a8db065dd8c74defe8b107cd5910d5ba08d702b7ebf3f5384af70cbf47a3ef63647335f98f44373b56707725be72cc35e85f17b80ae7999dce62db2cf8dafef3f51ad7d2cf7ce974f131af23ab256c8cf632559a67cb4113a34c70aefdf8ea4871e22446e5609ce544b53a187dffb36b5d9a5e006703ad37b938fb9017559e5d8ebdbbdc0862d7cb74c61ff5f26ff7ccbe1fb7856bc8eb7c8bfe59eb7c6dadf34dbace0fe93adf0cd6f956dae5bb6497ef935dbe4e76b9ceed728b1be6db64886cb2fcc0059963cd2e2e57be3996f2549b0079b99677f1db7e77cf771e05b3b2889d96e03c041aafd731f2d2b25832076dfde4d6c47547f696bd69e9ece60ed6c806bb75f1fb6b3caf325fe9d372c94d912d91ad8cf1c5d6a35fa4e6b2c1ccb775c02fad73b9020a77bad6894d5cf03060debd07cffe60edc5d43c416dbc96c48f6dc247c8266ab030213edc62dcabc2f48ef1c2d61dce0bf27db032a3c2adcac7ca1c17fb6d5eaeb66cb0e286bfdc0913cc27d97565ee207fcb7bf0d58abb23b97ef3ce6cbc047e4011c9c95f737c1695436d8a5e9e019f166c09f24c8e8fbd14b0eebfda8b817f01bd0fe0e2eb80c709ed341c7c428dc9c6642d2fb20398b8e6a0b1cb99677b30f68f64fffccac6a46a5ff8fa39cb4167adfcc29c29f4d8ed2ac8ef3af7c62519f2c8b6b1d92226b93dcc573af8bbfeb47b20e0fed6ba80a9e508f23cb65942c69a79651ffbc2a8ce69049e01f0cbd0f8919cf3fd84457e31eb2698a3c69767c1debcbfd5e773472c67799bdff941f8639464960c33b4263d820fb1d7edc40ba7fcbec56938ed912f6ecd302f24d9e390efaf6c59f4ff15fddf6b1bd918d9ca521a9c83bd558e21d70ef26b880cd439f3cf6724af78af795f001f8bb1b6c5d9e4685c5de0eec3dfa58bcbde7418925707e38ab913a360a507d5ca44b2c6ba7383c956557036011b6e0178190dc6fc373924be30e51d385f28e1fd96e9627c94227e658ed03b9fd11e89da73ff4d7b905f30befae6e8b197e2c41702647fdfb4d4b87a48afa6ebcb13d79dfc1bec13e7d1d6b93a0f3652a5285b3ea6c1caf4285f3bbaaf609c7c772eb2d4f88d2f9e3062dd7aece4dd6bbbabaafb7542b669fe2fee413e22ef40ad42334f74fe64da3b0b001be4dff4cd261c07506bf45caf81649ac2e845faccb83ab856f3a201ae7cdc7035d4beaf27dc8339f22d6496d7e4e2e20e3ece5ec227be88745516b8d12ca3b94196f1ecaa49016327f3b75d32ccf7f22624dfdd3c6951b99cc3189258ed13f1ba4e62da579f74f6e778763deae5bb4faedd0d3695cb8d52578e27ed3debb7b539cc7d79715e46e25593370f9b9be3efbebdaff7ac48bc1e0de65b9db60e83bfddb0843cce7a0d6f92e7dc726c0f9f025586713cedcd51cd2b7073c20f86c2053dc1790be44447ef641fce9c09131a5210bb8918bad2ee36d78777edec859a5ccfcb26f0a51db2d56bce05d6959ccc954a13e727b3f5f97d4edaac1c3343fa5b774cf1e17243bed691759b2e37927cb34436408eec3f8c9505f7dedc7816efc9dce27d91f4439edd0e72c41f069b8b630edfc8f5cc5e32ae5a32cbdc647dc1dfc5bc26cc285d00f91cccc1fa885dce3e0127b43e3adb66999331ab9f9dd47deab617f5de6b7db591cd2004301ec8d65e32ce554b3f2a77b0b9410de6967d77522347bac9fd86fb6c9d0cc933ee25ee337ebe81f313439c4757d6cffd9acf633abbd6ef320fefa19718509bbd4b8cc0e3f8ab82e508bd47fc02bf8eb26d1bce26882f6e9221a50787fd79abf75987e407e64a231bf710e90737ecce676d9f9890875e569a30abdf0dae3f24c33a0e71f7127e78009b1dfa267c8569d5e71a43b61b9159e0bdd2d205635b9b7865ee72c0afddb295266757c281c51cf5f2addfb66a21db0e30c0d05a629c2d6fc23385d9cd8d1af98f1d414176437fdeb2e519cb5cfdec59e8b4f753e381e6454bc9dfe22cb6adc50df023c5672c1ff2ae6d4d38c6e26d6b4f072de6921b33efe45dd17e55e7ae747980e8f3d309735f0eba75b7be40b0d044e6e28531bfacbe59535b1ef26096c08bbac95cd3b8f9d6fae256f73be0c28baf3173e8b9a365db0b890f43e11d2ac08fd9601630aa49e2291cf0fac490c3cc213bc820f669f4eecbb3d18183da834ab5d8b36d6dce388f85b20d40377dc4cd3ce03c1703ea19a4283b42ff5fd7149158448ce6c30d41af60b985186acb6b8db96066373bc1b20eb169f0f7eda48efb63dbe6eb3176c398f1d2187069b414e9c0116f732263433c918ee760fbded11b7d857ee7ff309e956aeeae8dce12e0dc1ffc8646ae902f37d85407aba8b46411b8d2fde286f7cbd3bc111b14f9f4deb9a96569fb82f620119e2b7ae9ece685a7d0e6e2ca1e1839c862bb179d6c2e08f6e63084bc4f32c75fd4356447f97ed9e3b8343d978c4ae27ff458a13ef6c7e7d8f849bb6bad3f5509720a76680e36d6ac42369382de3d19dd7ce1a372d07a959d58913f2a9763336483fb5cccec858fcc9717b12bd961b33f24e2ab3ca5eede3c75ae3d3bf68ff8e754fe1a3ed303be24ba867808f89e5e0cfae0a609f9e77e8bf524958f1babb282f69a86339a3a6b032cf90e2e74bb675448df38d4f99517b632ed85787f5e0d942bcceb8bf8a55b7d932f8eafe1d1fce3eb501f8300fbb54cbe498668ae1e2e5772dfe1fe7e3fb63bf28c98d7a6681f27b2f3afe76ad8b447f62ed93d33a16f8e22c7743237417abfb3f6d65ec2177b6b11afd8468ede36c930f7cc2ff204ebb1df45a4be8809bcb0e549b3061fd5de72c06e5b87c1bb23d7e7e1c03dfd38929c7b5c7f386e62942b6b9dbbd5e8e1cb71ee408c67c11ccc323ecae54d4b160faf2a6f784f9b31386e37cde12c4312477b7394221d01b82d127fdb734654ff6d5b1f77578e3337f19a7b707d89f1f01ecc1dae69eaf28d07a9c7bb3ae92c70cdf66faa761ff066dd6a84636c92c138c0a5d86d873a6fa1af839afe86230cb0eb005be486cf70c6603f78e966dd7c8f3148e0bd7712ffd8e3dc82f1512e86cb647a3dc0d9d7f47ab0183c7e9258f9221ebb95d9b4b78571b5cab12f100c3232be10dfe00c666d8e32d7c439073bfa1e1dd93bd0cec8957619ce43686a3a1e60f348e215f8919ae77f04ee997d3f4cb287969ef2c316fd1ff3a41dd4f6dee5f802dd7b4878c0f53ad6b825753e2d60d60699c7e6778be45d1ef5d276cf6ce9621b8d7107488e77c85fb1ddb07ca7fc8fad2f638c6e5a86e9bc429b7a5f256572909b479faf10de917921db24ceb96ee4ad93f7d9c4b646474f9e657e22328e3e0adc242ec85a78873357cb887d7387f6a8d2370dd6d902071aeba5b3d84dd7cd3943ed0b6cab806a3b82fcff7afd901c55a87b3224fea37dd668ed727c0eb547f57900c4ba829bcb1531f8c4729b2b0ccf1a30b9279541974beffbf168796c088602f249381fed5380dd80649d5e77d087f423b7ad7a6dfece89cd5b81ff85d62f9c4b6f6e9efc81fba9d77e20ea7b7e51c9df47bd6cf44007a7ba7356f7d4e72bbca3195f9d0193633d11f5e585d8a8cf5cf3dd78be78f7a4b2d64377d26f24e74dbfd17a73071ff75a7711bfeee272fc27c400c9b853faea2bd93d917b3bb2e5c91f79fd2e9e24b2488fffab77e9ccc9f4c59ca0715cf09a8cdee7f77fe919bd79179a79ae1ccb47fef19fc6a695b5ea74570107587cf89273f3523ff0fed9fd25f65fe3e205d774b7def7f5fbd6310a58172b6e07f10467308bbdc1fc6f471f457e9da776ce703bd4da51e5f5ad730de0f4b7bf3f714bf538912979cf5de02a6cc6fec96e273eec2fe24b90b57ab920ffa21e17db321e10bb963aefc1837dd0df9fa9fbd0fa6ce41c30b7e1fc3677ac4d8f3fbdcb130bbef0b3bcb7fd43f29e181c9c91fe5c5fe5584fb763e1e82fde11c921f58e73bdabd79ed6f9b6c1327eb6cdbeb1595519be237e75c9408cd9523212d7bfaac2ec0ded974a780fe9fd5309a3dc0d4f21da7fa9dfd636f82d25ba8fb22f945c79b223e03aa6b1054cdad6477eb93286b509760085d51b529c6e24d680ee370733c032d8eba3ab6db2c0b3d0ac6d6293981c8f39cc691b0363d266643c47ae64b85eccf03655c342cf4f4796d0fccbb39b6bc68f2fd727c5b7dfd9b3067ee64b90ff941db845e071bb10db7dbb7099ec78371c255e22168e357fc767c3f9bb2319896d19b93fc9ceb6b58895a49563e5fcfc9d23286f4e9dab42bef328ac376ccffb7d7b9e21fe018973757d17d52a1855a8734b306e85290d691b95effe6d449a1820ff8275cfac8dec273486cd77c9087431baa7d91309178dc10de1ecd31c14b5fdf2cd7afdf86efde554bc36e8e02c4d786619c3b90f1d4feeecd5f6201e1ff1f78dedba3147819d94f13307148929e23a773a8ef8cb0dbfb4c9aef6c0a8bcc4b8527eed5ff3498bf101f8f6921178b1c83a96117f696b487fca41a1eac4285f783558bf99830de1ef9d5e5ee8bdf301d9f0d81eacd78a886316069c37f6ec1d3a9ff60a383d5d8cea2bce71c7f1acce7853f6b196e2f745be1095bf8af764ccdb9fdbd693edf432bed6ab4dfd37ef589fe337f2a8ca45e49860af329a84dac5fd5ea6eb0ee69a6331d932c5f6cb11f053cbe0b013af7b93adf7df1fc875bf363c78dafb912d7e944b12a327fa73675c6d73963b9017c0133b967a36f295c938fa42d9b109e8bd729918bcbacd9ab1a7e7e947f248eaee6bde242293554726cd21551f1cf1de99bf2e63d89b5ef9f9f4dacc6d1c0f78ac7431203cd4b7efd72b96a32607cd6c7ccd267f62b5532e870183f1e4f43be4b16e09062cc68f9a0337675387d5b60df12acf1c5ef618f78151b7c5c3e76288c7d5674324de4ed95836e4e050b10b7e31f98d7d96a4952fd52ab0be4f17b93bf0c265dabbe7fcfbbee470aefeb2de5f901d2a286f9de79d996a3ef9e0f1393d7e361903dec7bcbd6b2fe1ef1e5366de607d69f664e2cf7b8339ec9df660f168e731ca515bb59de10ba3ca811cb559ec881f37e0a0c1ef40f0be59380f70934dec254644d908b9fd606f5afa11a035a14936ef5623b04790cfdf89619c59db17825c93ecdc26715f5beff4e16e9b23e1d0c8df89faae8c60ee492c017f8ff69ed39b238c862a7722b18ef5f5a017172d8df9a35563a8ac91cf0f39cf68dd6909c61375b0fc04b3d0015c0e65cbde1b9b007287fc98608fc65e8cde2fb86b89913bd61cf924f81db7457d6f5afbb1a85fceebf74bf6d6bac5d4b5d6572789194d8ed098a17994f6d6c6dc9bc6c093f8ca17020e3f6f313ecaf6d5861c8f4de626bee00e4eb91fa2676d22a8bd69fb31a2fb71d0e1ffa6bf2b2b223195b67f3ec40db29bcb314dfe91bb25ef2fa2efd9d8119dccb1fcbb3b983148fe701b5163a7badbf1c5d5f1331c734dceb7a04dbefe5ed5cb02e42419c58e40e45812af2b93c1f30ab174d24fc04d2b790acf28f6ab8fd20d03ccff2faf335abf3ddbf6dfe9e6a73345daeea06a94895efb1fb13b881ec3386f3d9d1575b94970fd4dd5e7e1683894307f28ce756bf608d8fb50db1d7fb2de9b41eec967755bdc7a7b0ba349d35f8701b15bc2e9fdd86097fdceb01f145de89a716c5bb35ff9f9dfededb50f84f73859e1691c010ac3e9977bce90dd01b872dfeda1641ff9e1f877388680c7c70b7b3c3ebdfc7a2f06ec76ca06291f2b73dab581dab85c5ef32ed0bcf13e5dab3f611fe6c0f03bf1002c1739bd7facb6bfb3a3056b29e8ce571d0f645d4b8f40cfabd297fde14d96e9f02c6ac9e8e64b7172d04fa123cf02bf52b23a6e83d6d481c37878dfe4b543ecfea897ef4e12c7aeb47e5312b827d4a459467494e8235b7972091d49646c5dc96db3ccdd812feccd11e8ac65382d3549847a971d6730be84fc8a4b30d7cbc095ca9bcff8b12f6f20d6a56ca7b9575fc3189c638e98653803fc3f252c1f8eb561509b863ccb1cce8fbd74513f1fe26b5e12a70e67549b64b444bee7329c35df296199b926cbfa12d8909a63c58f655af09a6cdc51df1d03cb15eeef2c466bd5d9013660df9fe49bdf8dc5d3ef58f730b9cb8db68ef59c3381fc07db7cfd5b33f65bf03318552fbf8921acdb35238d3beb8b3a4707fdb1e2a237c89b93e7bcfbe031377f82f3a9ad2a8855bde1d882efbc70d49f9b16d702e311523e06d4ea545a428d99103c300f00ad470dd70b47c9de347247645dc76032adff3c76f1fc3c6c8b26b350acb4242e5ccb60c086de219b0ff22da95cf139e85b87702c377d42f324049926ddbb35ec847b84e66370ce655def4fec93356f1b45626dc9b9730c6d45805322adbf7b3fde0d63de0b47ac07d89306394bb193bddeff0ef885af44662e7b1d7250be9677c14ef6465169e9a6da9b7eea5833c98d46816b1abe2a2bd7fe1a522d16e775ea1fc816aae02c985e8f15d807941cfcce01bfcddce5872dbb22790380a9ea5501f7726c65bbcb8d0035b2ccf84073c7b45cd5e9ca725c6fc28e4c8ef52dfd1e78e1e8697d9a830f9f8e471d204fe4d4e1cf3808adcedd6cd9c01c04fe12b021c52b7a3f75ba037c940daddbd1d8254ee698656411bc723446ff87cc15c9038033b66b5f9fce422754a55d63c3ed008728bae2fc8751585fb7b11cd8a77655fc72ee37f4dc533e50e3174ec7ef3f58e3abafd7389369539eb2ed621ee792b1373f31a680e9fa14b7a6f04588ed74e0f03c51fb40dcdf73fc7acc23e7ba4dc40230deebef42faf77a4f413abeaf4be66f07b075d699f68481ded45eb4dc2852d4d1b9947df1cb3b67ae17331dfddaa9693677576ff091efadf54563cb875a8da1d688aaf16bf8d1ec6d1f4387070c1d387b347e5f7c3d82dc6e056a25d9c2b7366017e968adb2056be97117334728cf1897bbc1cc19db0fcc71b3c7b589f43ab952eb84b59ad8dd07b2e1dafd16cb5a324b676ee77bb20f5b7a70d59257f24def29bb97bc50fbd7ba997aa735bf07eeb42ffaad97f7e79a3634c7840745fedde75c7aaf314a3cb148ad6d1eb82f7593e3433da75870edb8fcce8ee6f0da97b759e85426477f4fe4d4602ec0670b7aa28b6f856d347cffda2c33db5ac41ec3f77986e97a9377471f058eb499efad05e398a3d83b036f7ce60d36319cfbe0bc52ded14737372c632d35ae2e60c318572493be89f507faec724e02729a18853b70e22db9ceb194dcd1db3946d738269be1b39f8f1b395f227924c6ea35a6e2936f4670533a67fa578f03ecbd3ac78ec6dccae7029d230f7ea3fc9cdfd3fa221803b7c94177fbf5886e38ba39894d7245a28b1b023e31033c06c856c1671a0d7e10b2b797dcf00a31e3f69ebae685ff417eb5d5cfafd671bd3bf101766f066abbf67de1bcad13a7b4dcb013bb863a692a3e4fff0e7e92262d72c714ab1dce39c0ed73656c5bb30df81af08c4dec4ae26819fb572dc19f552122f1dd98ca2918c2fd2fbe47fd78f8127f8736e0ccfbf705f3a8a3f75be4b6b57838d6979c36381ef9003ba1e3e7527e6507231be3d676e3c7ae243e3cce787c5fab45e18f37b54bb876d14dd9216043c9f78b3f612ebe5c8e9550817a56382f12786f57e537a78ac747b1f0bb350d0ae494d7fcc0bab5863ca92f39657bbe28e696c5fe277d5ee96fd9879634e397bb38afa0e6d9639e78f6088ec0cada005f2fce57d95df792f850251bd910500756c7278f169ba3f775272c4b3807ba6734e81d20a633477213788345ec3d58b087482e76d0c5e953286cbcdfc92cedd55a84d1d5b73ed0be1eefea78af3e8a5d3366546186e710b8180d1e73b2e077ffce6ec067e79b9bc3f9b9b3c3d7036618f2b3f5f2625b8b09b4fbf8fe1c1f7c244a3e48dc2d9e854edc8b51d4f381c715e7cc332ee7a7ae64bc7c16d681206b80f509e73f26ce0fd5d872ab567caa5ae518eb18caa67e114fc1365bd960c8032fa94963aa8c910d71ebe1873d001b8f65b04cbd7e9f7f2a5ff91ec94d12045e0575b011aebf34c6475941fedb6555052cc1f9af7fbfabdbcb4531c935c9096c755f1f458e09e73517278c729cff11e58a794f6609c44a3af5d7d04f7affa4b0ca5fc9dd5effa9dc8d784d9ec5aec973b52cfd3bd99b22994850bbfbd732fc7c1e83f51fc81dc6fbd9f1f3f3ee8e73cc7727b4966bbb893adbecd44bd8e6265ac33a9d63be3ece600c292e1c9367fb78b1aa5540ee29fdae35d78f83f521bf64905d857fc37636abb921d1b5cc08e74aeeda6b1c6b8edf49d85c57565138d626587341e09d2fa1c9969e62949e25cc3c4b587896b0f12cc1f02cc1f12cc1f72c21f02c21f62c21f32ca1f02c015d3bf22c81f7ac49e65993c2b326a5674d58cf9a8c3c6bc27bd6f4c3b3c4c2b344d6b3c49167491f9e25179e25979e25b39e258f7c25c475d1369cbbf0d576f0fb4d39b3634bbc072bebfed77132e48f9372bc9ac077d1ca2a3d4b1cf247b1f4d433136ad2ece672e5ca9b5c424bbcff42df2bf89a5093170cc6eabe8496a05c568fccb34478c7b1c98e3c25663235be8747c16b7e9b0d4ad70a7d5fd52fa91296359fdadb3e2c61bc9680870e1c8f63c017209fe9fa601c1bfb08bc4464dc81f2a6c4a5e75597dc12cb871a2a68ef7ed89c71752411fc26f8be52729b0b3288ebc1f5f95ff5f7dec0c0f6327ec74809cb864f0373ca9550130f6302edd7b5db187f6619ce3c4b9e7f6adb11fcaf84259c69d435da5037bc25fd78dc8b157e7e78dce6911b8e38db9a65e0976d99509d8cdf90acf815eb1f85d3af658cc6fa1eaad5e6aa256cec4be2642f89955a2999aae7a1266cae0d5787be01fb03e604b52f289f3369786db021d1b51d7966bacfd7efe8efcc99f4bf2f5fe638404dd099ece5f89ebeac357e9f92de213f879cc733fdf37807f899473ee9e3cd6de677b6f2849c57d2f2b7121631d91f1878d7a7eb307eb52f9cd0bb67807931293a58d84b6ef8a956d1a57e9e5ae3354cf94415944009a3bf56db8ff1515078c81b3777c92c3cbd7ab7cf953e837584faa55acca5b66bcd04b03636ee9929b569765d6d914faef0f3aa8cbd33c368d2a85a6d77b9972afc222c33efcc0c3489af56db536e5b0abfd4cb877766cab950b2f0bf5ee6f07f589ee1ffaa4cd0ff0ba1bcc0ff7a19c1ff617987ffab3245ff2f859283fff572e49d996a2e94857766ddc36011633c2abe5a86ca9bc71939a9b70c3509db7bafec551ac384bae702354772f1407b983dd8dc90be5b427def3f6cd7fa49bb75dfa166e51ff717cb33f0e7e4fd71f0cd51fd2c8829286159400d93647cb30f8a8cd6edd3eb7e27e5cde60aa861c3b64f10bfb0c9a81aea51ee728bcfefc6d795f8f39e83bab69ff5b3e9c317ef9fc48f3d8ccf8ffbc8edad4586c60a730995eff538835e3e6797bdb9891ce05ff8d9fcb77df8a28ff22c7001b306ce817e3cffbdfbbe9823bfb2cd59f84fd6813398057632fb724c9d7416ff703c035f18a55e22867662445f8c671d4ffce19c7f308d8df3951c25f1d5e3e2e81ff4b1e9c3177d24eff0cfd62719c7e01b59625d323ff6cf65941ad3efd6667bdefce371ed9c517fd5df7fdaaef89376ffb1ecefadc5fa7bb95f5cf66619b99281fc809faefdcc63e8fb5ecb3fb1b9fe495f277b29cebf5a4fee6076df43eeef4fe7297e6cc93d5f8ce7d5e546372ffdb8d83fd5533fe827cec103fc927fd26683e902e3cb22dbc6b8fac2295b62de0bd64b1650bfd49d53c889eae0a9d0f7be1c4789bf793fdf8b328f296f38aef5724fce2057efe7fb46e6b1f53d5f8c9fb960f696f3c33d18d6237a16f7557b7b7314a071f7931fea246b7dadfbf085dc84b6b9f804fe3e7206f5f3bece029bc39c7d38afc0fb625d8e6eeef3b53fef7f229ef79c5f010e089c7da1b1617d2d5ddc3c24372f7224bfcb9fac7fd3b6d3bf3724ae73d403cafee12ba89168c709b0803491affa1875546c06b503f8a2ee99b92fb9e1d8b5949ebd1ec76615302b93ad88cdde8e530c798cedb8b7e31c1f21be3bab56ba7251c2a2f04274ddef6f71fee977c1787ed96d6f0e89ff9287aaaee40759e1bfb53513e3ee4a2270ed389677da2546bab182bb8a7c7fe443d67e996930f66e71b12de55309a3501366a9123ed5e5f6e6c5c0b5b3b25f7d51e3cf98038ac3652bfa2b73c46b53a35a19c5bb4bce0b09ef64a8c922eb58b3d1329cde3579163b9c315c8668bcc037c57eb080dfdb93f8bb6f9610abffb64ed6b42f6e782f5523bf5bdb22d692c5c531179f0ddea65c409dfd32ceae9a8c7dd765a8fc4db8cf7e79e7ac52abd9434919bc96b951e09abb3785e03b286159faa6511db697602e949563faf16192855e58deddc107eb4afddcb90673b8e1f974c2e0aa4da6383704ce5c82d8e68a478bb10a67326f7b4bc96b9e3dafdf9f248e5ef705e208e77a9ef7e61acfaffc71f3642387dca8a7785849637e26aa34cce718abedddd14748b6cffbc1bc8e3bbf63dc93ece68565cd9f3cf4c2a052ad7e1f297f1fcda165c45e1abd015e4062a480c11b979e169e488c81befebf34ef895835f39e0615ae85c73ab6914f4964ec9d31dc5b0b06d9245ff5db6421f653cb2b15b3c843d540bf659e2532ff8db18fbdb0c467ff93afc67e13f892382171832fe416e2422e8e5d9139489dc04b626c0b574ad6f9ed393642de931a03240fffe9fb57984713e38c8d792fce4b4b2f83953573e731f36e6fd9fa8ca0afe30ea41f0f528ffca984eb50d547f14132ceaa34cd56dcf4ea0d8cd01b6c2ac8f39d4c732ac7a598ebd19b278995c719922bf1810fe72ce5d7f2946e2a4d227913489e802396bf3b2456b34cc6cd1ab65fcf91e0727cfee3f949484cf4d5d8ff4fc95ff862fcbf5d53a3de188c7b6310f3c4c6b8925c41129f4676aa587da71bd01aebad33b8f75fc8661deffd54c2d8b3e4f9df9658fae89ff28f75f71cf037bc186a1c207f788ef3872be031fb46a77ba992d7399e0759819c2677f011d7f164b76a742a5ab70f67e7e42e27324876fb7aca4d8ca12fe23df4292e4d8d23da073cce68e287dfcb037536228ccebe35ab1c73c4ecea38b5505690676f6e5267b740f62783b10409ee02b2f7a6f5f7c03bd6e1e7a3cf929b5cf71078a9ae6d2c9cbde2fa0a521f262e589217c7e37b80371ae2e26b8e67dd74cd7b21e056004631b289ebeff7504302d89213d4377fc240bd78eb236da8ef372e558bf6a9b20c7fe088cc03ef26dbdb27bab1f83fcd41fffa3fcdc31eed69e87d27cc1773d1ce55b79f4c0ef92852d4ffbe7b66f5858cfa9692d7fede3255f21ac700d6b15e0e3cb42e26bf818fdc173af3f0a9566546ea446e2baba8f7af37936581731872bd7bdf5376f3ed6b1d53569adcf08907149ff8e3a847b93f502ebe70bf6b48f7c85df954ab3cc7b9f58dfe793e23413a885a235d9b14ed8bc6ff35f3e70d941c9f1dcddfcc8192ef0df67f71de9c4a93463747dabdd97a7975cc38dd4bb39b777e356f8bcefa6ae237f22246fb846d816f4aef8f7036826321dfea708cf38c39bca106f4856ea172a57aef2f2b4ff3b3dfb24fbe4e9763ffabf10890fec5f191499669128e632dd3d9ab397ad2a920cb988387696b12365bdfc4f5799dbc5269fcd46ffb45bf3579fe749dbf65df6bf95ac6857fd4cbfc592e9eeea3e473fcb57e49951cf8e227681d634ef8653aa7ce42331664a3b57f79ca16cea9cfbc39a8edb0b83aa23db8fad2661e211f4a837c9a2fd68d8cfc0d11d6e832993767b6ae8ceef32bb4aee7984bfff5d85bbb2fe7cc95d9863bbd37ae97e7715d53eff541cb4bd2c84b12f09dbcacf0cf63e5080473b9bb47a2b57fe9d9a5b1c72d6237d90410ebfd7efd458eb5383be628b2d19effdfd589fdb1030c446acf2ee6c6cf74a4232b39f0785b38a6b6d7cbce7bfcbff5f8bfbf1e9d41778eecaa374749d99da30acfd1934c4d58f6a5cd27e49f9a5412ec7bfb59c74f9ec63c5a1945ddffd40bcbc04d163160e79cd1daecac9bb7bdccd27b42d2ec090f96f2a528dff2c1465ff733e8ec8dcddc401c9d8ff6a69339d60bbbbfb5db7fba3f065fec8f807ff5e2fb0072a6da7a38ce174ee10ed9dc26e61a06cc2f894f14b9b907e350b7b1da932d289fbe30625cb6ce2139656a353b2961942bdbe9fb17f31a2fdbfce6be1e68e40ad7b72a7cad77dc330ff1836532bce2b92c2aa849b7945f6e3802f95d998b6a99022ee7033063a4fa5a36f1c2f28a396901b3e4ea729b18389f75f83ede9bfec54ef80a7203c10e5b00ef4273ed03c72f904f6c6d0bf11b2e9efed905d6bb533edc9f5fc53e0a387345362b9debbc1b3cc78c693e708df03e903a5991aedfec71228b1e70bf95c1ca1c5f4116c12e6c732add8aea6318b5fa5e98f25e15bfbb67f6a1a171abca6a654eeb5a381ee3ce150cc6f4a5e2331437acba2d422f3182fd80e55bae1a63e8c9ca9ba393f38f4976d524bc8f7921d4c0047b13f056de7c99e5b5295fadac02fbd67fc297928648cf656efac1fae2263ec86b1efc5f8c73f2a46b614ca55d0753ef196f98e62b6ef29b0f90c355e1f1a27d70c7f8625c282ebf4e1db1cc5cdc307a5f36357511bf1b28f01dbdf7eef5517c903faafeba35a42056e4f61c42917e87ea60fda9241f99577d646eea04ae1447cdba24fbda5e27e720c2e88179f34f25e1d100fe172f1cb5fa47077c4fa4af719ef41630ec820ea60cad8f4ce01541f292694270059e9ac4286c33be629eccfad9a79b15970f355cdf543dae65857012b2b1c9edbaf63a57b7bf7badefc2e0a1a56decc1d15fd92bc0d7d58945387ae76ff4fb93dd00cf7c8a4174797ae693825d51f2b41ceca85ac93bef409d10e6a27861d7fd3517ecc4edfa797fcd29cc7e3f5d5f94787371f48ff64c2bfc38213d02ba578a1f8a145ffd44ccf7e6fa6427c61963757d64be80f66ae3a148b39b2f9d4eb6fed1bea3d0692f7093f5c9368727cc6f46ffa6649a50cff5bde3b3afce53aaeed5615461b6db4bbb177b461eda424f36a5596c7380c977da5beb936f2d62affa287cb364f670eefb016342cb39e420a3be3c4016f34ecc48b0939f8dd526f6647836e398ebab227c88cfcff988dceae3ea0ed6275f123fa12f89037b22f05e7141e0263eea2fe3561f0f77605436b73bd9e62852ea9887f081f791ea2370d24d0c631c9277827e8891231991267c20793a79925121dde49ac04b7df20856bc570d4f8a08f31928123e7bc19cde507bde196bd437989f8677c0081ce17e22b9ddc09fee23ddf1a21d97b3e9f91fec25e3aac8f1cdb794936d7ddcd1b8f9687ce439c8d15e12af0ee45d231b01c7a1a0bda7f71f8694ee0be63293fb12ff15166993e3add4fa3ddddc76449fae39f1bc97767d3ca76bdb9e3f41fbb3d3a93d597f7d16dbc61a7e29903bc6e43ddc621a97e904b58bdb71aa84dea7a3e7e8ff37ccf9c0bcda431a5c5585ac014598419ca28bd15ddeeafdc6deb29596825d9d7b0ff4999c810d16833dc64a0f1a7c1d31bb2e53520369ad2f5e4573d1ee7ae727bf73bf7b7ef26e73229229c63b67353e4353038c7c142f1cdd3cccdb7bf3ceedbb9895f2e90a05f2152f7615652ab743cffe54622624783e273755de6a7bbdd34e88fc68e54a62eb6d7fe31ced5f17278c3ef7421e5aba52f72ff6ce59e7d94d3d6df7baaa7e0f07de833ad7686cfb99dbbd1fbf8323d0efc0faca998caf1457cbb4d9771fcdbb0d94b7a6dfe13c5407f3ba0f01dd572d543ebd07694bfea89609be7f2f53f74bd105edb9244f07edb59f6e780a57a192a91cfc56c7cd6eeab6ee97dfb4e53cb7d5fa3a50af9783ecedf5a0d2baf102d8d749bfb97aecbc099ba9b84629f1710c255d99d0eea3f695710cd0e6a1cd14fba1e83bca87baab55706ff3b787f755a59c94f32554c2e8d3a90aae1ecb83458f25f0b165cf390bdddc89d60f9dc58e6c201ba6c7b90adc689d5a36b50a628c676527b84664fc4b09d7e1325442552f2a558a72ccaf780f95103099792554721b6af6a70477adb5b76dcadef61ea43e8a43b6caf813c6ab2a699b246b78569a1a9c69324b9eda2de680a130fe5ce94aae084ad6c7957ba10b918d7e3b5a4cbe7ef21fba67ef9a140137f5ca18e3da97072b026fa2bce3ad0ab80e738c0f3e079c52e70cd89d0d2e98f3320f1ef8c56352174b725a4ea182fa8fec0668eb37e0a2622ec860e584a7702d28d9eaccdca15e78cb023f80279581cded2e4af43bd404342f25e164bb5f6cab1cfb56397631d64fb632c5f1519e239dfde94f905c95b795ae842a37cc34e98eb186cc08d9bb8ccb94379f33aa35c8fa0972fe5dc0eedadcb6123f70acd904ad2be064021f1b6392a9672644bee59e7e6f690cfdeee397cd262fafcda95aed82aa657fd986459e87e533a2c62bb8353e55ad4fc8b53ec61e697038f17a56fe52ce59823197d135a36bff592b747f62134e0896599dd9e76b04e50d64009f258edd73bf0f77befb9c3b4f5d1339a613205b0ef553d98a6d2d9ab9181fdb7d3799250ee666d5c54ad5cbeaa8974bef658d349d1f07360b70a26ad3987096162ff29dbed01d181b77f49d1faf5b33d717709cc1d2eb5c36e0a59d7971b17763e669bdd1384fedde5df79be42f99a3f1511a0267bd9640ee1df0e4a2f730b9b8b2b6dfbefb77bf1dbdb8602c1dec918b2fd4791e25d827e87d5ce07dfbf62c999c6b53316bc25b079cf2296ec7b6fe553b6dad29d237a44f5efac7b6c87e8dcfb4a973f81ce3ecf6c7f963e2857ddcd8aefc989ce103562ce40d441057a9fbe3cbff95fe2c3d8257847ceabd5ecff7e88bf96eb94d89ad04ebf4b55df34a261a7b316eecc5f3386ced9969e04fc8f7e194fa5e641a7d14527b73070b7bc31ff5cefb6447bd446b22f6feb426887db91c74c6ed19735b98f2abdda8c2f343c66ab0f8e358d1713c3c5e986fdb7c88c069ece8a3da57bb605eda1dcd074cf905c82618e67be0b0282a15e220f1f828e1cfcdf798cb85cca5f3a7b5fb0931701c93cc313fc6eeea2606b2a1427730bbb81c1fa94274f538bee8db35dd1ccf1d9d0b4efab8a6da52883d538f9df1b3be353c9c805bde7072aaba9dece10cb8c92107cc8b369fbc1e83f21f3f47c5fc6f37dfdaa42e6754c0d59f2e6eaeb9ebe6e176db8969fed859e890766bdf13745eb3a6ed2ff45e67be292e08d467a86b4f6288ff38d6ecf19fcc4bed1f377b085e2f972fd64bcbd188c7bcf601626a1e1a9fc1d1476dcd5233df1f3f9c87ba06a09907fc2c791603aee99fe781c8343eefecbd5ff4c3f7eb9e4d36630f9c250f1c8ff9277d69efebf527fd617f681faa1e974e1fff597fba7e57775dfe5067b4be04d11b64bd633f8d968b6a6ffae4bdb0ec1ffa7b750f570ffac18ad73ff4a3d9d7089e41d3be9e8cbe5d5b107b686c91086c36721eb4eedb79aa55100ce8f8eac9066348c6d09fb04ced3f7d9d6b5673a03ce796b53c99fdfcb23eb7ceefbc39f396cbb155050c1ad7a676808e5b5be5589d821fd5e06e3bd26603b9a17a409f47d6e7901bb7cdc3c6e7fb12c42749dc8bf58f7af466a3316871b02387e40daa3275865c9fdd46546e7cbae12d8bc99671a74ff8fc4447e35a8e6b1cd7bd097391110c89374f5e5f94a81747b48c872f7c848efe7146f63cd4a7494ee572ccc9d63feabcdd77457260ac91af8ae4c190157e07d827b39b2ff1b89f6cb1f2c2f2fd9bba1f9af7989f4f8a78d59b9b2547c7d4091e04705443bc10ad91ab26af69bcfbfb913aa738ea65cd6ffe038c9d5389f3011a7f2d999d21de1c632ef42667a8fd1d73b677cf32711c0fdd77f3c2983e1f4c1d6b23ba12e67e5fa7f1cc11826edb2ce0f7d46b06ed41398e4d134eac06cbbfcfcf4663a3e05a990eb60ec551e19dd9d8e44618579fd8353e8d95bffd687db6adc8f7b15fc07f49e1bced82b11fbbdc68748de51c7273d62d37b434c475463fc32212547153114eba4c439ff173bf7a5ecd57439d096e787c1f60f8fce93e325e01be2731caa771ee619c98838d7fd4cb9d178e1eb6c9c6446f7d5d73daf40f9f85cc423bf005fa6fa78ef7e0f125fc803e6a573865e459adce79e6daabfbd559476a55f8c87e2763d19c77ac0c18d326b644e46b0ab93c6699afad593f4fa8c55933016b6ced81ee7a1acbd84f904efc8e237e776d7403d2b9c46edb7f838785392b3fd01e48c71dc998bdd897bb7316d767ba0e60e493fd5886fb9eea57bafaa9c68be8eb27a841c3e7c25bbee1be42fe0b9e03e046cfdd10ef4516e6cf2471c391af4943c201f4f5fad3241cb37895aff582cf82ec217d4e0bcca1f19ff6913e033ed23a572f41fe9f640578f761cc086e597bcf72507380100ebededee80b5157475371584a86f82e2e979da898732d5e91779b8b0c5c03f55c04ffc8b19cd84ba3ef6c3806ec1d06ed8d6ceca61b6b6f6d2ec0bd5ef3f9038f7dcc6b92783d188be05986ba18d27f78d79a03ede1726cdce7b3ece5995c6c6bd1ec23061733fb691ca9106bc5be00e957ee4ec5cad9b5392f2ff6e0860fca1e44171570fd4ab007ea395cf638b45ef8addd7afd5763fbb40e5f8f2dd285cdd85a4c6e733cf2cd32377da1136a5eb59aebafb357824eeae48b7439eafe1c072471abe77196d79d713e6e8b29c16dfef0126359e750fbd6ecb1da6d30ce6c7f1eaa12dd73b1ad39bf91952bf59e39fadbb144d636ef7cfbb9c46da520670497b6acb4295b69e2ecfbf8a7d4e5a0f59a731298d700b0b0c39225f3dbc943f11e7cb0d29570198d2f5e15d5f6d0a3b3dea4290ffcf568def43be628a36da864dae2525bd85ea2b1fcec079b6be9a6b2416e16813b5d04684f589977c0e640fb88c789393ef730c647b9e035c9e66db003d9b3c919fe512e5d0b727567508ba3496bde898b4b2707572ec7aae4b87b11e7b662de79cc5d8ecf48a2ceb94bcdadecebe515c7eeca1bd4494dc53a4709f9de5fee5526c1199cc31ededb8f7bbc006003d2d873b57f3e219c671487cbf1152f595f3ff638c9b04d30fbf219e07793fcce7d07b7b08b17e7e877e43bb4f61cc6f82363b179ae6da7716c01bfbfe51eab73b9812b1572ef46b16b7d30483f2eabcede56a1bdcd3b971457455151b87bd9ca1c01ceb0a3937c7e29ca8ee69077c3118debd2b7511e9e240e004f5e98de557d54fb0a601b00cf90c9dedc888a477cefc33475eafdf9e8d9dfedde5acf813cbfa8db225ee948ee01033043be301a638f03feec4aedf0bff5fbca579e1404aff4e4f35c6ea24d3d7fdfe733661e43da0d4fd8064f9ccc953731d87c1693bb097fad7137bec57520e3ed4b1ba9eef7b7b5f649fc58e3fcfe0bde679fe606e24e68ec96f1ecd57b747c4b9365be9f9bce9aa2e6a78b07d93c13f8bd2745b692693c8208f0081a3c46c8c58c5e8cff776b29ca15ea394a18e51e1787ae145f9dc10fe6b65d53575c1fb1a91c7388f6f5ab3b58d7dcb9fdf5db62823c71d9d19c75604b814ef385b8272710db067fb0e671ebf0c6b47d69c60b9e4be3c47ccb37fcc36763cece7ff4ec3e4f58879f0ee7bd42fd806af5b063da187493b7f452bfcac8a759ac088eccb71cb1187300d9ccebec0bfc976496b475525dfe5e3cf7c75eadc437f8ae5dece0b65f275f407b4e17c7773e29aa1595d7ba1c28546c26e2ddb8a8a00eb9d947a27cdf8f2b036e895178f266a462cee64bff1ab4c7d631abae0cb736f2777afbb82da8f7fdf8db6bea84cbaaab1722ac171e0d3631d47bd4f6e45e121feb3607748973da4e19b297e693e2d1c10e1ccc29bcf41def8bc5c3da16d71517d57515acbacd8259e840ce895b95ac6ab1d017e02c68315adf29de9c4c4b918c3ab0473a7a90ab7a7923b8b1b996c411ce5d9826b354b920fb4493ee1d1be648d985cad4a9a89a72b02b901cef5a9d9175f65c73f8d53acaf7901f138dbfc945af4c2e865a6b8cb13cae6de6f1117864614cc09ea2e56e9d2a6dfe0ac4a7861d3c256a0fbd7e61cbd471eaaa1e1fcc0545747218f39d3191337a4c845656a27c43f5e5b813ab3666154cdd81ff1c83abfd247d7ab1ad59ea63df86f2c587e52c7468ee2d0ac77de1ce0d06f5b5ff1d65c7a3be629c78e8179a4f8bc9d7905747f0d545e3febfdfafd9cb7eadcd51b491f8c1d739f74ca022591c607f8bdaa3ff9aeb2d3787b26578fa3dcc87e8ab5639ee7f47f97ba003305e34ccf59b0767cb684e69db8efd6873f2360f4d08e6de995d7867f61d3047b680230fdc1baa5c107c0f8aef29893196d2335f13e110aab9a23ca803227c26db9a2f05d734d7bc3fcf7c520d3f0adbf0a73c08df04b4f727ee0ff23cb9f3bc57dc1f5c1c91be907a6ea829accf7c710d535d8789633f5d5e18743dc47d6b0c65ccaf6570c386436103ef14bce0d37a1abb3f7159f5b937a07f4ffc1f8fec7d6f92bed7b5f3f08e759d3abc63e3d3c1f9d8331fd61dd9671eb7a8482dcb4b79687e175ecac4c31ecc2006f99fca05fd9cff8a6c7cf5fe640e77dd71e8f0d97c351e4edda77471f612a8490a35b9cf07b47b531a8e2085febde53813be94b9667c096f03e48b51dc3955677e7ecad126fc9173ed0587db07afb63c3fbaf7d3f17a3d36edb32c26d3a4f8dfd9ad1d7f06c6e6ba3737fc518faeb6b561bc333bf7884c6bd3b26a71d045c697157e2b2bdd354c626c46aae4a6a5e486a5f05b4bc937030578b2e9bdddc3f6d91771a9272e146ceb77b0fded44957638afb4cf5d29d8891b767d01c56cf50db11dbaf6ac5042dc006aff1e6cd61d1b38337e68d214d97ac14a1a537ede94b2f5e6bccb1681b5cd03d43fafa2f110cbb12a2b9f2be0c62a1f5d3e88197fb4e87df0c3f6becff9ebdbe32de71dc97552295e8dfd33af465d6790991cef9b838daf4ac36c39a07987c4f191cec3b280ab2056a569ee8531ced534a7b47d591d2d5650a77ea501e7b45f39e6eecd7bf6edf37eae0c8d57e971620135674d0ecf2953b7e36a7916817fa4c57aff59db545e57dd36a36ec7e5f2fc81f94c28bcf8652a3ec50eb47ebe11950f45e2af70d63edf5eee38c724cad76120e3b3eef8baa9db8e834a156accfa5da87dff1c6605f87d51ee9ae2f05fb791d46dc4579d1a3753562e0aec45354efefd153f50eb574fca18e23d121b1ca6ed7da43f90ebec0c307ef1b7f321afff72207e53167b73b4f2ad4daf4f3ceb4b3f6e6b5cb7655bc17fda16ee17d2a553e5b21928f961b0b9f992983763ff6d2c93b96b0d5f38a91b06dff04b3f39561fec1562b0cdd875cf4d1de4f7d6faf4ab9c7eee45ec57f83aee8b9ed7f0c55218df949f96f5fca8860b1be9bec3e0f456d7073bfa68b8e276d783c0deb4f4f43607fee9b646f3b0e5632d8d0ab71a8dd05a5b56e899b47f198f8f98bf28d0d253323bd79fe3f1517a8a573df6529cf8421040aea91401be8f2fc7428359cacc6e0772560038ac1693eb8005d3ecf52d1777f8d216ebfefe6c0bdcff640b343616356e7fe467155edab4c0b9827ca46dc2337bd319b5f6216d53fcce71bde706f3b6c6797810945c49a3d0d2cbd0319d9b9718f22b4e555f68f81b276dbd2bc6a8058ce6f6fe179caca01facda3f263c2e37e0007de68565b4649379e96644c54ff0bcc90b5ca7a7c3f3feccff6aad1b2c7b98e36d7e315285372d645fb4634edb7abaac649abcc8d0faf3c5d7d7103e5f05e9ecffae0d38cdedc448dcc12cde0146d7b34e320624ce204cef1053ff822fd71746d1de9a31871d95eb86b17f1fa42608b08291fef71abefad14b7e1db0ad20cf2d26e7e4f3abc7c539d44eb75cf7689f7bab73cadab5027aabe52e9450ffa3d7dc903896f60e75649258f9d319a9a97fc901decf5de8f080237d44f2bf326b9b5fdc077b45b6c95e8f325c4fc4075afa3cefaa34ce96c9f4ea51ef85cffa94ab036388b1119ef9be99fc794c9ec6f305ef51fb6caf0a987a5e3d2ec89ca7f3c26ead168efd7a605fa848970d4e6f1bc0513e65abc1fa7a985cee9a1c91ef22fc1dd821e57565eeea3cc06416ed2e902f1a9e2ede997dafef433e12b2fdd0b55a8327a2b4e768742ec0b6008e71db9a31cd18d1f5b5d218ed75b7e79c983115176ee6ace171a3e701732317c3653abf1e84a2d2d2537ed8660f2d8d3ebd70343a420c75fa5a36f5e8cdd63b72c9aa169b6909e8352267fdb3cc05dfea061c5b7db53eda7b3c3aafb2de93f09c6eb3239aff59e8882ace5daef39070cc16da82339ebc9127d437c9a81c73b36efa7d7ec58946fb426d5d03b5a60003544bb39bcb31b8a6c152ae1e60d947b9bd6507a86fabc1faadf6a13479ce776368e598fe1bf92f90fb8afdc6eb2c74aef439078e199f028f8a73bb213dfe273a272b585922a3ca3b7c6eae971dfec215377db38d82b1480cbce1649d14f9b33cdd29799ad7f2945bdb828e59c62b6ede912d5fb85f1c9dbd81afa3f399da72fc438c73163a677aadaa62c0607d82fa1bf347b3e51753ac79731ed3cf3bc35cbe650018f306b5dffc89d70c723dcbaa9b7f53662b8bc8dca4e92ff24fe9be6747b9ecbcfb2c744016918ec479250b6a8f6ffc439cdb11f67d65bc1f28669313f25821dfb9bf4ecde9afce79fa3683732f4dbaf3be6e2754cec75f985bf7fe8e391277bc0fbc94753e97cddb0f9eed8cbd10bd215d073625b21ddb31ce5afdc026947e281ca41f9ee42a7adb3fc9d509c9d5e559ae4e1d6e73225717e0c935a7bf1ce1d5bb7abc27d8892774de955b99debb53a177fdcd7b22f5ae72c4fb67fefefdbbd2fcee3b782ebdd76ad2eef380de498fdebadcf676d2bbf6fd30c9322d3d7d1ef4d110e9fbbd3e1aa983e87a006c638a6f58106f4d5ce8dc3ba71f201b6254209fc6a5f6d195e154e83df6e688a93f37be82e8545ac22239cbe9bd92bec77bb0a647eb8b749e1b29c4935a9dc8c5577f02d7219f2172ac59ec88bde7a4b3d89544e05fd8497ce6a66b9eb493dbd626f31383d2ad844f76a0e43359c94d6c3bbeeb03859fc1fecaa0efe93e74fd8be75cde2e0651d2723cac137e88d7e0b09beb272b484fbeb91c5f10bd7dd5d20fc8a9d0a431f855733dab542eba1e80b372773d4c94bfbd10edbfa71cf0c8d2a85453e513cda726efd03da37948ee697cc8d1fb61327d73ab72383f67812647e5329de787adf2e6ebe560994c0bb72a2fcb745700deaab0a9fe68a777f28ba93379f38b731ae1bb739a0f7f163add7324117037bab6221d27024e4a437481a307f900b876eeabb3d95545ce79dab33ac3139eebb6308e53970b85cac9eaf09a2e811bf8797c5cc908dc33f0825eb564163675f9a42ee52897b19618c5deda7c401f079bcc49a38b92d43e97921d713c03faac6e33b29fdc238a7fffd9577bfcff3f27787f78351ff1f82888249fb3f54bb618df16ed2d5ddd82eb2c025f80daaa107373103cb91ee6c192a3ce6925ec03e1fc8fd7f3e6f4f32f08467627ff405678056afb4ad6917621c68618dd3dc27daa5075449ab5c80e8075c70ebc745db892183a66f950c2e84a30e3d15a7ef7b938f2a5d31b9a077792315afaf1803309fd14ba667cd52c3f73e4cd05dde7498e496ab37307d99ee9faeac9f87c451566c5de1c16a4bdc24ee2c0ab58b80ef2809238ddcbebb76e7fd9cc0dd9c1dedc307b810df7a6f8d02c8ccd81f12c02c839f52719da8ff257cfdb4b06b9bed33fc61dfc7ef5ac0be4b7caebba7fe8ba50d5cbd01d6c1897637e724f7d6d08f994d218e9c7b0a37785e07d6f8eceae6c44ceae0cecc4c8bd475669523d77c6ca4f8cca95c491f700df9bf53883e8acfa8c046256ed7e73ce41fedd6a34988576fdf97294ef17551af38781d7ed7bfa72de2ebd31acdf2d54f5d1dd89715dd6518fae87c994b7d13e6c8eaf7e35ae34698cf43a7ca772d4775bb86e84aedb0bf57770dd085d87beabe382c0314dfa85fc64275dd7b2f8aea41f438c33105d890c913ac111eb2631e35576b2d7474456469c6dde4137a8f29c9f6f7fdfd5747eebfd5ee77eb3749b440ebf7d6e738d39ca7c799ecc92f637741f70118701bbda4eef73216335aefb7bfdbe9003931019164648d65e3eb796612ddddcbceefbd6f3433f3727cfcdd173db7b9dc06d6a0ee63c7daf9df08c2ff14553e35fcdee0701f027e9fed572dd79ef4efb9321609fd80fa69c4f7eff6d573c7d3f3de6c9ca8a2ebdf92890ec6af23cf7f528df4fd8444b66996d2da67bd34920e7391c810ec07b6319834e9f6e3227b1736fc28e54a9ffbeec4d4b4e68bf3a03e68ff5fb0a6b94c1f7f867f64e9e81f721920bbf91e2c43917b19688ac2ff16bdbdc800df48a77489315527fa2c4983775588f4f9be3d6cc65f31bf81af57a5a9e7fbf7b033f039f1edac358054466281c830f6675feddb9574dd76ff31af3a0196b1a3f69f7d77cc2239b2c31b06cfded6c2ff71a0f01f2d2133175741a1701e3f739dbe17dc50d29fd70b9f84211abfab8427dc6b82ca067fb7d44760c7a2eb34a76ddfe26bbb7affbcf0607e18b7e0cd67f39dbee7bf893ecc57b6d62271159575eb7ed4c3ef8a31edcb4d4cb914ed4e48e8ebbd7f3ab609c654a477e048e04b1cea2b5bf77852f8d913eaceb1873471f05beb5b91978bef8ad2922992e6c0b3049079ad45bff7a1968e9895705f68274e06132fd74abd1701e16111a5b4dda5d6dcb605ca6dedfd8856d219d88c6270099eeaf7ddc6684da4ca1cd2db4399a870587daece68545cf1c46dbdf90f7866df6a21307c0f33926fa54e11d9dbfa9e91adbfadcf86f5f88f203d7aed5650ae711b5cd54d7c1e0df9218ce869f722ffbfe6b2fff92f8af15709e98119dbbf7ee76302e891dc92c72c714af508308b511c0079ff7ed32b43f7e773fc66a7a8eb3113db67951eb4d9d3332fc6a3bbdcde5720c9f75a6d41ebf7fcd271973d44bf5051e505daf911d064ae1e8531eb0a892a870c3fa737326457d1eb69f2d85fa1e70a5182d3d952b7337f685d170bee563b4c71f26d31cfe3eb3d50afe06fe31746d85d607dab781af3a8dca153744b6c368aec3dfd5ca8cfe82bfcf3cf0331eb60a6a6bb0b2a09d02da059cfa130fd7852cb4a35a4cee4bd1b75805756d8eb3e5996554e72f427be027a2b571982839f611910d68bcc056837cc7a6cddd60dde63aeae575ff8c09003c3bb51f406ac52e8e29361c9f4d6e26ae2f42b6d7d19367999f888c433089bd14eb144d9e23fb26f0d2d9cd67893df35070fb9023bc0b714cb2d5356e98879a29565ec20f346b71b1ad8f98b2c5b34335ab315ec0ae77cfe38b7766032d5d54367b426b917c8eb26538abf3d97ad76e525facaf459fd1b590f77075cd38322167847c6e623c3b6447e277611a1feda625b8aff519cd512edf312ebce1ba31c3fb4671b5ac727c1830ef2ec81d5b69d63c77913c20bb027f06f95307e4fb339b91cf839579075972b12ce548965c2c4b3996033e56a57b3ed7a35cc7b9ac3992734dba23d9c56d87e8bba85231774ef51fcdfbb9a856e6f017cc93aebc29a1d2e8a69e2c807eaa6501d7a1efdafd46563e9504dbfc607b0f369551cf715bb396fbe89da5794746145c375dec2531df9b3ed44f38c89fa77c325c4bcd622c046e887c97cbca3432551ae7f573c93e15e2b3e735ef98d1c5adee21f10195dae6c73848bffbbfdb4a585e318662b75d5357305741a74f41a55633c6b102463321f716f94cc39edf3102ac3d7a8cc8bbbac8efe7909f19757c104d82f593798c113918f7e8f8551b5ec233368ef5822fd7b94ea8fbc6b3be54662edadfc9f8749e279f5ece859df0952319d56b3f785c69b2f7c57d1447a9c0d236083d2ee2ca5ce7bb077bd1a6637e877caae99cdf20fb0be48ac9ec2d7bd776e3dc7bb0779519e7fe964db5dd3c77276caa32f377e4d33b568b776857b5dd12d7f61bf6c1cf59b0b27e17bbaa7cacacdf3decbdd919d9c58ea584cb64ca7b02bb423ace138a551f5f8ff846e43a68eb7337605bbcc5f0e9f9e0632fd31def54aca84977de79f430f99205b21f622f54defaefd7eb67e37be3f6ca7c657a9f1b8be56d3de7fdb06347859a7cca34cb2be661f9501f2ca7326c007ea5290e5549c90f42f4e95779a5c9bbcf951515b45d6787e550d5d981b6557257c8f9835e3cb5ad0ebccf3989d16ecfecf528df43d714333754721d7c2bbc6e6a1daa4939af1bc5d2dab2339319f9a053b7c527debfa7f9be02ddc96a520ebeb657959f783fbea3df062b6b5ed87af9897525cbd678342b934966e10c6c54b21662f0478c31ad7f7263d2701b1e29bb3a999de11c86fe0e74e64e2ec7469d9b395df3bb091feff520d3d21959fb8dcef870131ff32487d19b5551eb6a7aafede5b33b985f3642946fb7649ed245e686c154d54b7da507813a9867da43c9d75be6e2eb45aed6eb40100bf56732aeafac2799a96a9f69776683a3d560cc25b53fdc60cd81ffadbcadb76cde97fbda8756ced9c7ca3278c267f5f777b5cb87c1e94d95d7c5ca503235ba17aab42b56bb69a646cce72e2c47cb74fdf7562f6235ba7faea136d7e6f7611068f22ed3a60afe2cdd334dbea0cf0ff85eb4f167e99e2db969e38beccde165138e86da54b91e84f24d4b4fb9118e86aa5e3e563b4aeea736fa5d80b32874bd88fe8e905ea9e51bcd89a4a551be0e47234dbe5c0f7a696a6994a1b54baf910dfa1d3d4f47cf8bd0f346aa8531f1cd2dbb54ab99ee0ed6a126ee90dc3b20f76c5ccbbd51cbbda113b91777b5dc1bb5dc1b7a23f7462df7da14db8db65eb2682f75056c23ecf5516e9bb3d86df28246812bdda9eb3a763ee0f6f66d06aa9e0372e4becaed51e535e450aadbfbd8d1f34f647f409d6fd3bef2b9328710ef759305eb480689f347b917e63cd8274d2cd7002cf72f7e9bc33bc9f34cebb699fbe626de227d139118e3ebfbb7d8aefcbe1d83e49d6e499c58d5cb4a7db0578c1750c73279ceb166b96dc50f9cebd3b7f5a91877b36f535845028d63d83d7b27f16e9aebbdfbfb77dcd4532cdf984b7c0d7574dfe34c365c6c04dbea72d7a40db2dbdf00b3a4ceafb6e81ab9a6bd8d2a17576453f473d8a9b91fef219681f5cbcadab85e987f5adbecaa25f01cc0b0755396275ce32ee052a6f09e17e4fbc0f84b43589b801395469945fba9930f5e93c497b8d3e49c1e634976ce14804b93b6a96e2b3d6870915603235b2671a64abb0c63f718108776b9a8c65eaedab32238a7d41c2bc27990f85caf8d63433e39da9fbfcc37aa9fdbcbeb6fda875abb4e8d283ebf99421e9985eb6915cb181fa53b9af3f1518a9259823ed3721693df69d98a7ea9f202d7f225c6d936cb33e68136f4f6dcb6b63377d9b31ea0f0411bfc85b2b1eb9f6a780711c189c06d6ecc11d4f63802927b1bf93d1d9f44934ebc97c0fc44bdb6726fc276ea7735c9ebcf29b732d794af1ac199bffde03b673b766d9398c6d093c4abc7411e6946d9006f98a3b78f3d48c939e5eb76cf4d369937f8c86d6cd3e3356631b9f560027b508e5d1d63d4a982981ee5b2a0b1265521ca66a153d0b896e83b92d7736c6a01a01e7e8ecf535fe8a7fa8ca4dbaffaf7a870071f81cdc5cc4147ef8cd729c4b60103993a031b38b19794c141efdaf0b5df4e6cb021e4009af6c5863c8a13ffe7b39871a5eae5bdc5eb2ca93da2ce5182b9ede6287153deaf4643c887aa4623f27c1163fa1a8c63cd2c1c733f812db57b00fe2eeb4b46a593d8b92a44b7f9b950bd30b820d9b675649747bc57b15ba4fb6cbd10819bb92ab62a9d772179bdf1c67526aa897e9b27b3504ceaf9d93ebae3680f8cca4f7605191324170f5f9e99046f1972b65a3b25beaab27df506b3b329941cb2491cf194fbe18871061b1be9c68e4df3fdb5d9cb76f5fadaa8bed6017df8aaddd7d7d6e357acac53bed719fe20c09e39d4a4f1e7ca3a659a30bb2059f425f1bcafe0bc65558fcffac1725a1204076bc1d8e6e273276f1e60eb4ee7c9ec0cd74edafa20c26d78662718a30f623ce47394bbe7e1c583df44f45b13d3d8023efa90f742345e231eb5b1df0e2feea3be366aae45feca928b00977fb58b79b0a784f2aac1bbb14364331c84f2a60e4ebd5c9c59e85859867cc7d596e1b78372ac207d019cb648c7b12f7e5fc40e87cff0c14fd9f1e3a330636c2bc8f0df4d2ed727c521b26aecf464161f9218fc4562e3b36e02bcbbb96322dfdb78db9b46a59cb3cf95655febbff118f7fc59ce4871eec03c24fc14a12f89c3bdaebced618ecacc4d8cb52f2f789a6f6c5fc56d8c5bfccdcf27c57a25e5adbdc0fe6ee3dbe29adfb3c51a6aea8df5f520c078f286301aaa0398cb9d9646051a5ff85d2f8660e34aa71c7821308e335f8f3b199b29f076d1b548dd9cb739c6dea3ea89e8df61cd9d904c4d213f370caad5ee8eec8d7aec172b73f8ee9ed90af5756bb170fd7e8bae8fd0f537b85e6faed75766f4bedfb237a43b7629fbc7f571acf5c60b9d320b9d14e9633789901c321a9cf7af8b86b3278cf2fe6ff5bbf67e6be2aaaa5e5ef77a70d1e475ae34f55a4aa6eae57916dae1c134b03c5a9df3a3742ff10f741de52fe235bcedea38870b6ede605db89c93789cc168562fc6245d7afb917f71070b4633f9c44917b12fb0a3ce1eb1ad75f409ce90d67a7981383b77c9f710ff2c3ee0b7adf2b90f63cc3539b5794718852eb719d57107640fd8091f1d76c42f1ae0b8adc7ed2e9bb044b212387a206932f2f1f8589dda107785bd4c1af27b1ca3ad56e60962f3fb2d7bc131da31fa6d340f5b5d6823793595dc0b8b10cdb31d46f51e29a07e34fbe9ae8935475ab32fc7757e12e0642d078b589d2af95e8872dbdc5dd66189ece29ba307823699d6edbe41bbd86f21f7cfd118747d41f2cef5fa3d00e6d9fd97faff11f76e6b8a3ac9d7f005cd4103965572d8a2a2825b90dd99800a02ca34a2e0d57f4f4666428258d5bfffcc37ef413f5db24d721b11b9622d29e0d7d635073e2dadffb1d0610f27f3c127adfefe589cb9db421b3cd4e90ef00daa3ebe2fa482572f9e08ff27277121459fe4b9d47e3bb7d677ea8381fe08737c699b714e7daf79e894b49f524d7ac067cacc3831485e1fc5979476e275f779f63d3b6c036feb725ce6299a677ce91132e32765f309f638bebf8536be80f61eb4ffda98a0392a3fe8e314f7d199b8b3d0ba81fa6694ed71cc9fdc1795f83e8fb986af9f979ce8f13e3e1e91f778b02fb997fa57d8a78c07a8ee507fbd56fd553ea1fe9aaa7220221fc813223467e67632a738c0bcf1db18de3dee161f743e50f4345f5bcc39ed11b82c5e9be5e841f3b73547736dd6688b1dc628cf43e78c71736dbfde4e66e602e779688cef4ec782b5f8e5cbd1157c8997b1b04857976d8ab9ef9ae35ac1fb9df5f3aafed37a4f2346007677da2a673b46d09c930d32578eab380353de568c3399a0fefad9ac1fd0c964fa5cf53ded780de82eee12916bf5dbd7f2bd7f06e9fb86e6f63654c3e7cd77d8c9dbefa0ebc3647ef791ffa11539eabb6e08fd36c77b511ff97e84fe8e4ad5fcc80fac5e8cdc875c8db575abdb81e8e6638e87e67a47f82cdaf344ebda463d36cfb5e7039cf3f536bed37a5f138f26b5f068532ef3cd48dc9bd115c6965ca46b2be094e93255f42cf2daf8b7b7b863cc530d7e5993b398d1d6a972469a3e341d9f5631a8f30fd87db93e5e87771813dcca31e05a1c319c7a319ece0ee75fce433ba0bc5fbeb58ca95edf41d8e1795cafb0b5d95e0bb8b5b51d1cd1b7d7f90f609f7b21c14c77f8f92c47dbdff20f41eca56cec3d3ed7a6982aa065b6136dad1fda11fe869d2c3e35c1e8231b1bc75d3ed86f49e6971df2cf82aa6c908f1a7d614ddd65e0ca4bac9f6acc6337d9c65e62443bba772dc5b4bdbecbc10c2047b38aff3472e4cec83fb69f30ce687edc99c98f4bd6d6dcb579ee0b8d47472b82bd1624aafc017c5ab0c7a50db9b5c5eab96c7e7942f4e9ca3836e5e83cbaa7e6a36c722cc7106b86f56a876c2998170efa18d61cc01ae0b9f483ac57e8fa52c19884b2ba4f9fc17dfeb3be4635ebe7ed47f478848fc3ba6834b1ea787e49ddc497dc5ed08d5367f2a4fd11f758f5362fbc7fbe54f717a7e2c8dcfa4decf7aeb106e21c905dd73ac89c63ecc4677dbcc36eabcf356d2fb0a5d6268c6754a76fe6e70a6b1ebf9d7b47efdf01fb6ce7f7e7a99f80d6926fca4262825bb456bc2f4f02f36eeb9a263ea2e25960ebd29a976ecfafca44ed2ba63c4ddc059f85ae1947aa45391be6fecfd7523f865e5bbcf09f3a269ffae309e452f9729c1c98f81f60e2487edf1c6ca446ff1c76f0c1b7724818fe8e568e1ff09cbdc5d617299aa35e340220877446f4f27635d7e34f5c9f0ca61e733f403c1a7823f7e837ce85acf271d7d6e6abf96d2736367d3f5a685d6fe58f824df286fb9f604dd8fc8fd6fa35f4c76206f9404f9ea31a518a1675e487f69f58e310d7c3dfe4a3ffcc31007c86dfcedf0ba9f2d582b771fbcbed63a1038eac50a7a71263cd6699ff44c7bceca08f2996acbf00bc5954aaf2091dbb1e2d8e7078bee2e599b50af66014ad954bd35547dff709d63608ed68c2e94211a1fba17ffc3fa85b642f3672b6b522386a85dab09f04b09fe0987de6d517db4a82ebebfcb2719dc36527e2c77a77c33966640d6fae3727e2d72c53557690bf94aeb56db91296e9da7490ad4a718f51c7be28b2991ea0892b4c9ece0eb8aec48d06da60e86fd0cac0b8567c6e06f8ea41a8f4905d357c38d61ce2773ad6f6e7e83c8b39bd388225787c733d8e6357d743bc7bf6fefa4679d97bf921e810e178397058205f7d6fdcc8b7182fda430d2e7f9cfb9aa3f9a9b13703f3ddb2dfe42469d98298133baef291198d95058e83c76d5ecb063f10d6c48e5ffb2bcca9b9d963dbc0f08fd3c76355f14cb3f8a94dee423d4535365d6ee1d5488c94b60b830107ed535b9864760f70d3f1aece41d4493c0cfa3bdd8742e5226b34d4b7651583c588d5dbac7366eb3d280378516c217667a4ed6761573ffc3fb5576ef7a2aefdc52a3f8c60fb98fafff8e5307d4491a23f0dec5732bf7b68dc55394d8dfdb43f8b3005ae4f8239bf2afab53842bfcbc23a8773d3dd9f0daeadffd2b4fd28f76ea3bc86eb4bfd1cea5b3ba5caa5a19540723a818f3a35cb793da780ee779ff7a6c3d88398b8b1f6ad6dec457f59d73aede3757f81f667c6db77e539eab768af055f2ee5fa2378bd23b2d1e5e87a1008cf5e950f311715ad48f65affd199cbd1c52fa715716b6ff5abc559bca9f3a707d79ff867d469230f1a8f41be6aeb5f34876007faf971ee3c9bb9761e3d5e36fa4cdacad7eac6115a5ce624e837d6e6a7fb7c3fd681ded4e520b8d0aba265a582de5b9509f86eaafa75cc2dde637cb19f5e39afd93a25edd8fd7c9a232647a29344992344e24158deddcbb6748502e7564f179f07c1efe2ec61bfa3eac71e7036fbb13f7e790ee161e7218f04f365567b52ffd9bb262fcfe97a1789d5a0791be797af2eb7cbb75c4218ab80e7086b86c60bf25b685c6ce226db07bc4f4265e4c58a1b74fc1fbf83c68c5fdf21f3e97ff86c888fea661c7938171e73605b5ce62791a80b44bb3d016ed7ab2344e93bfdf49666eb656fdc62e0a7788b3f69cd77c07bd0e75c1eaf2d54771bcdc55ecf08d1baa88cc6e9510be2865ed404743cdef911afd823cc8f8ee617f8f6d6fa8e759d081fb11ba23a028efb5c4da0fffcf227b7f23f7d1fab3d4b783b4acc9981f957708e3fe166696821079ca2f56fb6f5fb3bfd83023866e428f342a23143e23260ff0a06a758dce7ff2fdfc194d5b336575cde226778662aee0286a79dad670ead31871e97aad3385def66d7438fcbcccb2cdba3ef9123d42f53d4ef3b7157d8b7291d73d9b705b0b14037b3910b3e11d3a696e5a4c1216e27514b838ebfa179d74b44ceed616dbe8310235b05f43e2bedb37758b404f3c5cd2ec0df733e98cbccd13b387b6aad2b54c773d7e463478ed17ab7f112f1619b7e00d7c74bceed0d1f8e59694221dfbb747bc3c01126f0fe5d6f7b47b68353691cc5cfad6c24b66564fe6458621edd2d3a7fdc6b45a53f300f1db426d2f3636a1b56bc08449b90ea9bab7579ab6b77d3790c9c66b201d829a7f3bd62b8d7d3e35e8b2a7e405f02cd4c78ee5ad889fe286dbdb32a27e084c8b7df010f6ff603778ceb19adfd6e6f9e3a429cdb6681f9d5a896277916c34948df9713bd4df6baace2e100cdf5659f7e6f1d47aaf942d54a43a3dae36fe68f87b40c4c7cb7796d376709cddb43b698b57cd8e632866f647ed79aa4933eb2f1e03cf95b61da97c68658cd8936e7183db7aece7596b7cdb7cb7e77836b8a19fb2c3f189deb9831fbfaedc0dd937ce407a9e237e9c36fca7762f1740c707b9347633170addf555faa8f0d07c7f1167c0c37117b60734f5ffbf90b27321d5f1ccd79dd6e3c329ed1f8b393a869d375f4c7556f93ccc18624e3625ce5cfbe3b7e05be37348627cd71fdb67cefc77fb8d79b1a216a22967bd34fdd649211fec92f525f4f5f161fbbe9fceec9930bc9e7c165ec280bae43988bdecf55e7b626cb3f9bdfeca4d6ece828db15eb3d76cf3dab584c55397e36efe9ebe8391e735e33f99b636e53f0a1bfb996dac707391255fee36af21fb9a565a93279e4ca68f059fdd607915a16bdbdce7f799611b8729cec4d64cf8837e0bdef9afbd95c609d13c19fc07d738973698de7dbf545071c72e490feb6054efcedcbf5982fb3c8202f8a037b3c3e4cbfb317b7a22acf6327114b6767dcf62ddb52b16ee8bd892f1be5d6e4d357ed1f2eb32f46682745fcbeec13340edf68073571caa8fcaed0e730ee1bc7d9d5b191ae7762b84f8cb32ff5ff3856fc54a67eaa68858eeabfa5e5b2de6bedbd1d56ab62c1eaa824f30beb4f32dc38e0b7896dce9bcf9d80f7c0ba9f37fef5a22f513dbfa0da9b93fd7bcdddc9deb8e5967eabb4d800d31ef383e3d44fd1ef239d5b410b107464e3e394d1b7c6ed4dc7131a379c63f663efb2001d1baabbea9a31e12ce51e24c766b4d7f975cb06caf4e435cf58adf501335b8bbfec3028b1c66f843190782f056bce84c19dfc16d7e6e097ada79202da7ce8de285db15cc54ffe43913fd2b5f0f1e986fda72717a92f9deed674f1472da3ccd7b9c7aab71b34f6e7d8fddc11ff347b06e532de28f2a3c25d022e9ce8ba2ad380e29ccf80a995c644d3198dd34766f3596169c5d97ccefdb5b074173147ec975a0310e73edd309fb0f97d2eb62f81162fb651c6987718383f99f672b42803dd5a994f1599d8291ad669dfbfe47f30da3712990ba559b0d6f91baa3ff8a6a97775c328856f1ac729b291d1ef9580f90a1b1a3ed6095dfbcb3da7b97a593e5c39e61449f4bc32bbc37a8e7957cb779cab6b6beeee0d922760fc06ded443b5bf3120fabda7eb418ef0be933c66380427eec2e0325fe7035cdf93babe4737b0ed35137816a856fa5395213ef6f4e4c9d9d153bed6e748993add629fa8c2d0229fafc8158bfbda08518e6c31f4bf6d6e235d8e9f3e1ac356279f36f475b63df5242276e92b3f7ac7d8b8139d78762c526da32faa75e1b0f3f633bdab53187f9f6e58405cd1031cfdeed30b8bc23727d9de7452c79a7deef17c99ac9289083ce5359f4ab6d7ea3d47fccdfdf82df74a9b9f36699ccf0e829853fd8ca3568cf65aa54db1a8beebcca3e37727b1dfd4638b87e289b9965ee624c0f6535b97b6cdfc59eb63d6c7d4cb32db9b389f819d4bdc27b5838ad4eb6d6337314aaf2c9afb6d8d7e28bab6c17da1b6dd6b8f16175ca5edc9abf2838cbbe0c968b897c7e92354c219d62fc63917e93cb44335bc42de8657f699763406c769cbd607ae46e0e20d7cab18385a9f69e739c4426d6b1e2bd345ceda1bea749792f765c769f1c47aa445689bcb3fc059d0887b0c72af37c4f5258f017b8af7000b46fb8ccb302f01c5c473c5aab7f817e4dc95dc4d31c757af6ceb152e4575bc4c191d90cc1d33f5fec245d7e642a6f7d5f728d2ecdfc04d869e0bfc781b18af951e4d27e7078dbdcec48ef50f73e132daa06d2df2baff657fd4e9e9ea68a06711af21c615a179f8ddb8bf2bd68dfa5a39f25bbd33ef1e04e21b24839c8cf38ccc6177ea7bb27d005dd7f0f7e4ba2d57495fb4c0b7aab5249b3ccbe3c6987399b1e6c56053a0f52e65fa2c2d03f4b9bdd6ea9f72f4d23fdd761f966639e9f329d9abc173b2069a7d79dbb655a69bda6e91b0be30a339e2ba7c8d1b76343bf92bad75c0a43475d6691f70882dd5d075d38200d9e2b0874a38d7c1ae959aeb31e123c61adc890d1c5da8ec4e08b958980f2669f4f1e6efb2d61bfc4ec314385a81df31aab462a8ee70cb86bfa2e3d4362676085a375376cc57baedd305b2afbec0f6b86c632f8231d4f98c990e7acd3ce401bcf3c1b4e2de153302ed3c9833906db618ecf5db13d906b6163c1554f7c99cb793790676485dbf686e0cdcef7c5a093433b94ab3afd93e744eb8ba25d848a83d5395c5e1606efd9b4a7833a95fb79323f1d003adecd449e2d88b0033137849a7b6ff0b9f8e3f2d060cb74e154361e229c00b049a32066e370774d6f15ca0832d14c46dbdcdf6fcd59cff670c4683e237e783e37483f58daa1c0b3bd99401f31b8dc319b1bf82d86b9c8b7ff62749bcd5d1203646352f3347ab723c457fca65b630c95c791ed8c26d54fb6edf730931b139f63b7fb961f5ec4f78363b46475df1d41d1997c0150ab610b25d6c6107d8ea7acc2ee34d0303d561bf002600d7872aef9aeb2c685bd2efcc4007c337e7a12befdafe321353e66a0dbc6ff4001a3ac6bac8f4f913ec4b42ccdde24575b26dc7c3d9e700b7f75ae8c77e39dc80f6b20efc5863e423dbbd796c5b5b5c8fd36decb56336ff091652fe6872f7e8b79c70da720eeaa752c0fc9e89e0e78cc554990c53d4865d9a0acebb72b66d87a61e177da7a8ca5ddceac58b5ead0138d8a8d22a6d7f33c10b13ade7d867bee3aa687ddc0fa733c098bd6a08bcda35ff833275f5ebbf2863db66fb3ff78fba5f74976be8cac582b1cb3a353590aff23f69bf04fcc21238cdac17ce7e9837feb7fda8f872853ed5d37c9db7ce94ff19d93205d8ac9d7376eddfd3b8535b3725c73e3cc610b8319757630ef6d8a9bd80d6c137e393c5babedbeb2279008d774b71dbf6c678fe84e26603bacfd25cd325fc5c95f4dda37eb3dcb04fe2ea680d993c1d6bb976c360bca7f6d418d9cc37acbdf5b3f6fc5fd96c2c2f4097debd636e2f8ef5b30efb5f636e29e740a7c6fdbcbfedcdefbef5bbbd0e31fdb3dab7209ad827c0edbe1e2336f58b0642d3ae261c92c8b62ed9ba58f72acde652d1d398b5bb2bae1e01e39857974d5d4f80712075d8a573027ba68d9c84b45597107b025d12ab18e858b3a8b635d07a3319828e3ddb56984f1dfca2109d6bfb172ff553f9957f1f1353e4dd2f64837bd36176d082589ddceeb0671f73686d47f62b7a2ef8f06ed87ff8d6f2aac803762ecadbf3927a593e6ccbc77b3372ffde819d219a9e37a23d635feb7d21a6af367347e26a8faf370c7c6cf3ff3077d0f8613587207fe36a5b8b2b6841025f1fe90fcc1ce274cc27b6397fba42c157b82fc221fc9efba58169ab747cb726e133069c26c6a5e33643751523dfb3f404e3fca6ce8ea41f54364e5bc785a9bf5869e887bce92f52bd1f5aed13309af090dbab8b98cbfe32cb6c9d4fd7bd19d1d32a9e1077791677a6ee9f4cddf36b53743d9efbb2355cef3ef2bd938f5a4f9ea96bf7c26507596cdb20b5f63729670bbbf905e34ab31365ba111ded23823aaa73b55a7d32c27c38ddfca41d7cb59bf75cb5934e9eda1c6b5df75387eab87306e5c6b5f6d6f6aa99685ca1fe57d503e05058bd188a49f1c228db6b4159ad37725f5465e0b57ed55663f1978d7c31e41f35c65aac861bc88358b5f7cfebb155761c4b3b8eddd7d606f58b4e7fb111c7477de50c78ef2ac6d59c93b6ae1773e859f76e8ddf0df2f5aeb6b59cd0f1670831b71fc791228fd3b510e5ae6994682d72cbe8b3395fb15aef6332e68a3be6c61ca3798e68abcf52757ac3ba06c947a557e085a00d70055e63ad081cb943dbeefbfa279a115d5a12cd718dfaecaa87faf2db79a35a6391cddcdc2b61dba7af3b6691602c17b1fba4b7b9861ccd359c9167ece5c91374e78431f8e9a4afded931eb5db88cd4f93fa80f8cc1466317733775af97be44b4bc34666d1fddb8b5f991d77aefd5d87a2a5254db2cd3597a6ce45af2b19af08127157758339e8d7e7867fa6180faa1cb439c3978d70f31976c84eb68baa8dace7fb125b33f2b62c3fa0627da5a91aac0f1103cd5e92d46fe393ae626dbf8304a79b09b5fed7cde4df8d84bfc78d3a5a9d8c05ddf380bcd3dd289d5f061fbe2cdb67e7f55d7ea7cadcf15f623c72c625f06dd3da6ce39b1bd46a8fa18b751d38ff8d742b3935987161f735f46f73eba735b896e771247b4def60627d6fa6fa42e279ce896454eea32a07589ec155297dcf185cf9b2987c6557b4fbed9bf39d6fce2ecc4bc8d8b403e11ea0f8b09f77d7f6e717d556b805494808332270fc0054b414e38571a391f642ea07d15d9adb9231b1f2febfbc520739c31f4d1ba41e3874c1ff9a7ebe73f1a83a84fc118dcfd3c0691cf6afe8dd62fc1b3b1eda005a0fbdbc0d8beb4d7bcffbdbe717b2c72c54ad8c15e91a37137d4b60ae94f8ec131da878d3aeef42f517bfee8d71a37ffff6093a3f52f5e43fecef0e14e210fdac57638aa8f9453e441b6d78a52d16f39f5616cb6af03e700c14777fabdcc3ee4998fffa68c684d029e85f8965a1af60998be991f41cffad415a3666dd0cca3fc29748fb5ace6e3f4ed7c6cc6743e7ea9175b436b784cea659ca17a52f4db737d81bcbe726d2d32f7cc07751bf6bf08671b5ad3f19c71c118f64e0d4bb6aec2a25c63be173aaffdb556bd3a5d00d77db5ff21ef3253c0e5054d3cd08846ed1a217bba247b744fcccbc6f8a73da22572996568ae5e257dc078e86624ea72f4a59b51eeebfc726f64e1519afbeb1d9f9ae5eccf2ce6443867f601e789fe767b33f8df36b7913a46d7cd3dabbe27c0f7c4ee2ce4420b3d53eb477bd3491c6b1ebbc93246d7b13a760dbd96115cfff4cd39e7259333f98dfc9d0cde7dc6659c87d5fb725a46dbec47f0ec84f18720b604cf488123fab28c6d7856eccee20f5c3e230b15294beb729f6e8a869faf5e967dd7e4637f3a4f6dd08571622f31725bd8c13bbd5e7c73400f06def1e1f666504e27e9cbc4d612f16f3cb76d930f72df36da9263b8ccd4ff2ad073ceacaf88cf4f424f58de5deb37f9d6377e25e1d2eae0b2efc0edbfd7ca6431e55e2b6f9bcd3b3a847cad8d21f191630d216fad1ee398571aebdbec28efe12ff72c72ea251de3eb4fe9eafcfb13b4e1a6dbbbabc1de6b5cf19f965cb10a310f38c633114e485dccfcd195e2bcd235c48ea21bf8b078ad245a91f57ab96f62eaeead9c8ebaac4d0eaf4fd5c4ebaa6a56fb6a8cc60be060189e9f41b13a0f45ba7fedc23ac8df1579877142448395c96f0b5614aff1e6bd0c67e4adc9177fbded017b7caacbc3ac7d989764f1cbc3f962775728e660e7203bcfdce59e2cdedd317e07c45dc693740d73ef7c629bcbeb3bfd6c1be22c71579c80ce67195db7dd73c35f4b695cc58b09b60af669b9ebeb3c17651ec19d93b90eb8ecf07ba2543131175f87ddcbb9dca4f49249bf1d6761d6590ed6597987fcf5f83536b8433e7bb5c74eecded8d2a226c6748a713adfe9dd9a3cab5f5cc79ae8be2ad6efe64b8a75c7fbaec8dfe61ec84e5b8f40b78b5b5bb33f98abe4f1a8ee11760d7cd05ee7b99510fd8be8c20c50df44ebf24a88d0f7e4adef495bdfd3f0d1918fa84e97e92179bb17786af1f088aa6c143f69849bbdad5f613b1b313f27f52ecb1f62634b7731e107c75659814f5a9e3cbfc1e1d277b7fc8ac99bb218376fba7de93f357f32d6dc6db4e994cbdc44cc1d937ff8d3e8edfe6985cbb186dc0162edc5d3edcd5ff75231de93c4705bfa902ddbdc97c5a1779907843fe8ee412edcfbb685bdfb29ba6e2b1d8c744e7c9f1ff04cf8b9bb244265fedccac6c3974fedef6ce0f5abbce2863fd1cc9ba5ba3768eda1eb848363fff59a6556be11d525fee5571ac5d87ff084f8d3d1602df9261757cc5749c1a9fa44643009945326037fbfc212605df143b48dbde9f64ab4c5d3c6ba55d75153834b1e670b9c8bf8b541ebbf3939ef47fc70aff5ebb9b59c74e7bf021fe93676902f676ec255790a7d34c79b4eea264684d7a76ddf938dbb130ef583c987aef0f83503ce5423d99bfdd891669fb616d073a9a2e11c25e658beb7b6b1974c38b7374b6764ced998b1bbebc5373b1133358939c79a07be2c76e4dab1b9ba8bccd1f9ca3eae7c6e96135dfe1017521d1bece0453fffc88b2e7f0cbcb318b3bce82ef0a25fafb54d50c7251cad1f01361434ba8a18d9bb5ddfa636f6a95efbfd5143fd3d16954a1f3125fc6578ff6d2bc7c8f67aa2f27a5c17071b6011e5bdce7fd1bca6c63daffb770cdf59c0adcd3455181c902f4ffe38d6d2f02618c3a648514a78f3ffa63c2fb94f4dce9ed355d16ff1dabaf556c947ee97c515fdbf9f563c5af81cc9bd7fe18c964f9f349708e7fcd31c7bc8d1a69865d01b5d48c5b5a9774eb5f86b8d5247c31aa5e8189a03f623ae80b6d48accb662f48e0da3a9fde2473634ec68dfab3884fe665f74c235f934807307cd130dae22f7c9c76a62648eb5788969b7f73d1d09cff9ebdde6ea864580f164785ffa80f3133e6749111c4c91f7a798436816d2ef05fc10c6f9219fccc4f832efc9bb965ec5126358cbcc256a53d93697688c27f3f33858779fcbdc762e3e5e7b7866dd01db64d5cc3f29314f07b5a1666dfba9b281bc18f2a9d3b5b540df8ced73c84b80bcb854bd440d9cc2119ebb10b7d24b9e76cee4953c09feffcbd788f6e077ed8fb9d6fea0bea43e6764ae8f0a45d881ceec8ae1285a5d667fb07e02b2cb520eebc9675737ecf755334a95cb563c6a0199f327a157065df59aaaf223f380c3b6598f33bcce94b6d97f229bd4a5e5d7fac8efcd3d54cf0907180ed4dfbc0b68faa6542f8cb67d2b7694408ceadc88c3248ced7d5d5b73d789b9cc19f167453e654e88e37815f64feb076e12df005345fc53ccf539c9f7261ff8b241fddaeb5e2a923ac6fe5bdc4bd5bd50ff875e9d0bb94a369933354a72ee93794fea0afdb10f7331e499c6b685ead06b5f33c1c77d118f175a1e18f7748fe151f3cd9f1a7cd58e148b44f73cd95b952d7259e3b841358e94e90d9dff3c084d6dfb553278e5369382b3a21515a7c62ad9d59c143dee7ff1bd9706bf7e8b43e4908877d4af58fd73073838aa3121747c3ff0a8a06fc1f7a3ef83f2a3ffff17df242816ff720ef5f12db2a15ee6831647845c04078a5f996e20374491e674ad40fe6274d0401f92fc0d9aae803752a637c8a75e85afd7d3757b75d9a2b57cea629e66b4e6b2dff7c47b453f94713abfbb66fca4381b45eb737bd9c895173be4a5fc80619e8505f042b9bddff08d044344f288ae212d2be4bd4aadb25b5c5af599e98c1923fda7222f8087d249626e1e3a1093f2a5a05ad71c861f87c9cb8e498e3460c9719f09e831789e274f72781e70270431fe1fea1d706af55a378f6d73dbc7df87ff861c8eb76b6375fdcbdaf85fafb78efd84eafc0ffe2eb11172d79cfc7176a4ec5280f305a79bec2040fd7e92e7e23d7d96f3613c4f197c5ea533ba363f1afc612ee8a3e3d811e1c213f715af2de69a3b4e0b97e5eda17865b4f6b8b00718fdf2ce69b93645d82b73b420572cd636187eeeb58ebc5f6bce818ddae034fc60af91c87d80d76ce80d4f9cb48a998cf812f8616a1cc65b5bcad1703e017aef91e519f9a73c57a47ec12eb178719b4439c515eb94936087c6031fec056341fa1a5c57f5013c9f3a9037fd8326d04ffb6c8453057cde26e70dde136cf38c29ac9f2f7f24f3cb0c63657ed426c2be9b2fd5f97484a75067fbcc4bde3ec6de654edb06fe4eeb58eae25ac6cfa7bca32b6487c954bf1dd65aa267734ad7e5a9c67a9138cd0e8d1bc074e2fd4b9a5be7c8c6d31650bd4d08eea1c67710df848d1ba0f917ef0bd25c8ea41fdbbd6dec8c893e8d84d7927a0d0a72458ba89f53f9f31d78c71cfb6d383fc84d8cb32f1bd116e303c1ffa8ee05ede1869d58edcf12de30dc26affbcccd3dcb06ee60d92739c3af3c82d2e935a6446d4be0970c30c71c133b6fead8129dec097d6e117b655d8f8041247bcc2dacd0973fe202459abc706a637ed4777caf584ba281458b97b12bdb57b6fd707fdcc69eb08cdd641bd0366ef7119abf001abe0c66c13db3fadc6249f0cc43e88bbd6dea5ca2eb8cd4e52c8c3ebd90d80e12d5b49c619ecebfb457deea93e91ce4a432fbf46757360237ee9843dadc6c04774ce26e5df345dac047229f417fc142c68cdf90d398bd63705f6ef89e371d72adbe39bfd6c6855a950974fc288634c75c4f051a9bcf8a07f26d7fe7024566780d5a5812d6e66d7317285631681fab302f98db0ff8ac082754ea8441d9357ee6a19353ecbb9a603d78ca794ed72fe0c2eae0f3347b5bbfc3274cd742f4e9e862f53ec0450806c7f21fb9bd618cea12cd2d944be208f618eae3f19994e107bc4fcdb348ed938e7e92cc935d2306cbf07fb273153b8e73867ff0971bd6fa35104fa2bc9c2fe5350c3789b9f7b1b097f59bee6192fe65e480293137cd394b1759ad694ed1fa3c790f29f310e78a3439eb7fc2a4d5e3eb6fe7d6d6386a701bca1fbfaa71a2511ec00e1efdb0e0149d2d77a73dd1d87bea286ffe0fca8b79ddea3e8dfa4b8fc51cc27e536f46b015b174b08681d75b509c24b20703e46bd079ecfbf934a6314616db88fea6fd0bf68559ec61d52718eeed756f066386f42be0e771d09c6a10fd2579806c9e2a4e7db4de961fec552799649eb06be66cb4f8d02b5dba2e7f9c60fb199c60471f18fff280476eabd9964f387083806defb7394ec63fb02b0986ccf961dcb0b832c0fad4f351b597b9eac85f60d695bfce2560721687ae5c903658c65e19dcabfe5369976d4007b6c5a1c2c6c002d08a68be3760defb04ad88e67bd9773e816b82b4f9b18de122f9f41b6c9b707bd3e937d6feaa6d9657b7e7fdb46f7a467d8dd5bb54a5794cb11c2cb7fe5e8ea3e65ad8b13f972c9f5e790a1d397ee238c82ca31a9b8c1d113b8983ecdbd44f8cb5274fce7beb759ff3ad3d214db8efe78fdfc58ad9e77b67cf37d65ba2dfc8c475f3b6ee2c5a47181d4e88b3fad388c53c907eddc07a547a2814834bedbeb5f0d1b001f13afac0b150569b4f1e8b8bd12d58cb0326b63d86d8f65ebb229f39b0b41fcac66a61616e5588fb76e6d012adc659c317fc76ac060bfd75cf55c53c8724ffec8d4dad376cdd78fdc47bda6a62240ef82ab1e0ecaaefb92afaf5b17ed544ed680b668dc2f9d317af8a9dbe1d13c1cfdf6c27336d527f6353f7b7f51e5f6cf1671975dca2c64175606fdfed2f53ee1edc573bf0a96ed8c6a7d23e19e4804965dbacee13c162da88af4c51391b78ab44fc43f4ad63e0bb156ee6de9cc0583a4e0b7c1e7272aaf2aef7bd62e04bfdfbfef97d5ca4ce9f021b90627a3b7d869af7ec7793ef06dbccf7efc63bb6d958fea4e8150360ee406ba37e0fc68aef35065bc5d4a1db2b0686195d09a695726d0595968a56f06b735c715cb2f6b632c57a6a33531c1c2746aa4c17c02305f8c92768570f8ef207ce3b0a4fd5bb7cad40be3f5a17087e6092aead3455f0bcbdb3cd5becf1c66387798d42f57d0e64e8d0dc0c09f3eb34b420eb399cd517a69ac43dbadf0adf6001c601ea5a91e2c1916a5425f5de2bc47df59bb3d7fa5cab8ca291201b6c1bec05e36958431d739dccb2ad105d0f82f867759990d804b49dbdd7f9cf3d2aa359c49ad9877d74bc9e7cffbd6ff431719eeb74d1c0d3cd2e4eea0971886caa9739879cdb9b4573ded1ecc4034e2dbc476b089178806f23bc03638c0bb5cd25e04e67619bef86f1cdfff3f77f996694ef9bf583eb3a6997a398025fbd907d9ac0138cd7055dc83e0d21c2f9a43bf18f91c401ccdd7a5a606e95c2016cac40b0adc904cfd9df6235b0dd89f102f558022d7ff6195acda9aec9a41e1323738cba5ebe6b6b3f899f7b346f6baf7d9b9c4b5df9453fbb4b739b5d5f2a5f721e3a059e27a11ed4bdce177bdcbf85bdb54c915db2361c342eabdf6c3d6b7267bdaa4cbd5ef7c055ffd1a99bd0856faafa8eb5c9ebef87bd7e07cf615463782b114d63da1f9e1baa773caeb489b3062681ed9b640dfcd66f0f4f41cd4d0b362e39ded45ba6f1d0babe97bc777162d5aa625c14779acc2feff127b0df3689533599f73d79f2f49e3cfa6664df8aa649cbb8cbe0ef5aeb63549d7fd1ff803a6bd9e7d5b537b7e7c49bdef2b936e29a9f8bf841500edadf7428472ba684db700e9c395c03eb6c2651731e90bbb52ad8f8918a319e30a61604bf567159d5366d8cedb248748caca05c98848faee2d1c29c7c8c0f391a632c74958b62277618c0b3eadc9a017ae6e3dd33dd92f5ab4f0f82a1aeb5133bde7190ea77347dabd6b52311ae23f673c597d4e689f098dc06bfe25859faaafc10d178c1f9409843f2382d78d6b6034d1ae6bca515e7b5c56ab1804e49b2378dcc997001e830e23e4be6b93eea43a597c491b3436364c7e806124de1cb3c75646388e609654a70da8dfd743b998741b636ed6c66da2ff192a3f940e75fcaed60fe219f2913e8225739a653e089c1b194d6fe86227fa42be15469f654b145d0bbad78af084f6694d91ae8dce278b43c7ee5fd68eee36df1fc994558b788d46df7da11b7d70e8a036fd62d7e069b8f4af468cbbd097892d89537902308f732315a97c969732f7cf79e035b4ee44749dbd4c47be4feda4853657ac375017c9962aecaf8dad585b6c32663fb11701031bf55b92eeb061dd7d346f9e19856101f077346d66570124be7f7687da1dc97a86e9cc4cec8bb3fab3e2a153837b73ecefecedafd1195b37d4c9d92986a382e8e5a2cee4c64ab91ef0ae7992b2cff38e62664bf89beefadcda34d281716d69f118abb2d6457c52a0655ac4c2beeeef91abab278de97b30c7df72a44eb1a5c0b1a3badb25cbc6412dab036edfe5979ea3c15c8cbf0cd3e3c0bc75cd05a36014e2937c1f507c7282ff194cb5ce1e37396f8a56dce53e712a17727cef91ab2cf995db8549d4c52c0fda0b6195d434f3032c75c72b8fe604d95dbe76c6cdbbcb6d55b2c40ab6e7b464e9f557d4fbbec97650cfc381253cfd531d02cda427f23f5585d2fff57eafa89ec7b9bc46815664f85f601b6fcb3b0407dfd7376697e17d4afb44df19e1c3ebed6b6a9ca5c87cf433b858eb9f9e7f6566b1fcde9cd033b99c7ce946bf7c5da4f91c5bcfe3de1a02dabbe8c6d6034e776f60f7992bb757f46cf79d866bfddc7aa63684ccc65f0052a3fe0ff625336f26f89ef50d9e809d832998f6c81776ddcd49b6ce773bab0ef45b8165a7b81dfe6efb4fc73d65eb8c37e9f3c16714e5b3fc7e36a4b74cd4fa93a5d888bd1edb996c70c267cc1f0f2ec44dbb83d2dadc8d09a4f7559018bffe4f91aab5fef77ba89387793e5dd35e3dce1f01efe3c74ce988bd64e5c58cfe3c1115fbbf6adedc5151ad766f45abb44d746e941188833fdf757c58f6d8a2f3c1ceff3681ec1a291dfbc036e49c7fc7fde564c9c73f0be8dbe8981526e4f1c072df8b5b568b4913be29f8d36a23a6e8298ba8997cc2fc0d99aae81c391f02a95515673703c5205d6e138b705f1b637fb17b67d94ba0d9e449f07e737e1184d3bde4e386c825c95c60f16ffede0bde7dc7d7e83376a7027b772b6491e8487db066b613ed9bd8ec677ff7243c0c75f5cc12871fcf903ebcc0b3ce68e23f98b849f96dad1849f3d6bdae4b0a74ec7d1e0ed3872f97a1cedcd0dbcc3140aff387d5cf7c62db3742e584845c9d46166c3318c9d9d99e3eafdee99bfbfe56f9aceb299fe3b6d710a35316dd3792bf7b2a1d9f4c2898b73e8080f40dbb760b406f6956f31f75f7c086bcbc138687052452f7632637f777e07eb2feecdc1f7e3b6d795d3dfe278c1fc3883e3f426aef8c1157886c3205e5bb37c2e05718bcf8ae6bdc7edbcf7469f300dd7e59b1af88497acf2d16cedad7f1650dfccd73a3836e405fd8e379c3a8f7a0ed080bff4ed753436ab684502f91df2e45971d64cfcd49783b92305591dd38daa38c4fb6b2b9e589cabda2b064e18d3f90fda58b396ba972c810f1abe858b9f86ec53beac5485772ce71ebf2c91bf36331729e6788e73ea5732cfda39bd0db24713c5042edfd4bd18f1d16cf055fdb03eb43091b2d81e1f1cd5133b08cbbb23c725b151717ed50bf6f2cd9a61d13d6c8a41437d6f53f11178618b8f80d9e7b075be044e0276df65ba106d267fced7f9e71bee1bb41604f477a53b252fc4d67888f1ba53d05c86f3db5c0673497319ae1defccbc111f31b97c97b5b9a9faa53ab5456fc4896be4b7271ef044abd348f4754e5c5bbf9379f240c72eab3200ae6ca6be919d3e384a93d7e361201ca7455f697295bdf280feb40eedd294e0894a633a0fc0bf162619c5f47ec787b818ddb8975ce6de067299bb34fe2107c5423ecc3270c74d3ca63a9e5db524ca0ebdf9dded6d9fabcbf60e396f5cbd16132c23e8522a5a81ca2c602cf3e07a10fa77bd5af37c6c4f3c89df2c8bbc2ffb77c79a3f57f1bc5464033dfb5ed962f43a69ceac93b3549d2e795b58c65e6f79f72e8b4f3741efc1cf821c8c70fc40f636b3967eee2eb3ab63a2ebea72d3eb66c4ae40e5988551e64de7b1231b67c75a3edddefcb94afaa85c69654f3ea95644946dc240d96bc5979b805e6ae8f6e657571023f89ed7d838b39eed603dabf5ee6b0dfcb77b894d4e2ad84f54ff47361b1aa37b1817bb5fee28e557424b6b28a9f810cf386658d41c99b037f8caa754e721b76ce3e926c5edd287bd2b3b11cbbd2cde1d6996aaf232737bcbd819b7ce7da7b18ac75b0edab4f2fcee25c1dd1536e0e73a32e5506cbfbfb87bb291ebed76fd11e7df2e33d63955b442d96b75197c0b3f6f0de3bc7d0f5c7b7665f1e998db55f73d6fea01dfdb2abb41ea88ef38879f598f73b2c6eaa9e685afb855d277ab7edbc25de58493a08d77c4cfb40ad4a7091e617977651c5bc01cfc51061c1a23316ef078ea690c7da15afb015f433571fe8b6524cf9cfe2765a4e305e628f2cd8b4f0fe6a709e74f679ff57740ec86f0c1a37915d9c2b7c09f6ecb5538a73cf121e41c6b85a48cd3549ddef0bac8233be704731ab23d15ed11e2b57c091c91680e23bf77ee13d55190ba65f0456d9c5d6f7eaee73eecef1af22004ad01da0f84570cfcdfcf69c88ef878b1d15b7a6084c7ad4fe21c3366ff3a6a62c8ac59a70dfbb7fc492ba19a9b82ef6cb0f7f3d06b5da03a66f1fc044f036df29247dce41573adff03f7ac17325cc9e0f3d6fcb3b55d7c4a5fe6de5a73e0aa18681efeced7d9b57d1dd85b55a539bbbe103c07eae3c3c04b26992b1b19b501d0f7bb02ee939e3c296d13d90305599360fe66ec25b256e13e7a477dd416c4686fcd715d8faaf5ffec0adbd46be64ebcf6576b7877318ee007ec6ec52159e916db0dfd04b4de4562a58b01e3bd5a9f3f698e3d5e6307b0efc76ac0eeb59ad703cd357bd8fbaee6836b956bd0d2b5a1ba1c759e02b2e7a39adb0e6b11c7ecf923d5be493057494b0bbae646a9b131ddb8808e3a580903dac7aa5c2cefcca7383639be7a6141ca334fbc32f86afa23e3cc4bc43b6a0b2f2c60ffbdc54bdcd020b1b52046fecb11eb9dbccd9d70c3f80bcdcf9df64ee2dcbdc8086ce1d41c83a027b7239ca41f587b250902ac19528f1da265065cc32e3b6e88e64fc50f4b34a915d065dede0f3de0f9efed65c0eb325c741f0f165fe7f6383467dc3c59ccbb307f3f68eb933589e7716cdfa87c69fced8dfe8ffabcbb98f0229abf34acef53bdd7e3c484d810ec3da44f4eee9dbad42406d3d8f3aebfb36ce5f134b525632e99270dfdc992e03d9bb93f0cf6d3b1bcd3a6b7c9f63a172c488e02f1cb63b67ee7a1d35364c35d4c38d0ddd994f59e35dc3bba35e29b687db275fc7ccdda401c449dee98bdf0d397f72cf846dc4c7e888e717b5a7ac5d79411ff12f683c9dfe2a1c7517cd4796d3e309690e05ac97d67358923c55c205f58742d88bf3158f1cdbb7806becf2a06940bdb2efba923458d78042eab8d3548e41b07f98cd2235868d1975bd258978dfc02e0ed536428477a3477a2db63b83d8c9bbf6a7124811f5eafc9e837f2b9d9f8d3752d6fbef68c8e8a37e2635308fc3a5f03f001c1bae6f4b9acaddfeff8aff379e894649c5ed0b72b38af31f7048353642f43be1cf09c5e5a7c4eb291397a0af60de5aa6dacb3134ef4a4e2856b57a9b59819bd17fecb310bb44611fdf9651ff8fd05839bc990e7fda2f3ca704205874bbcb4addf55bcca4b8cd037e3cc19e37b19ddebcfc38e0fbc299779d5b331876ceb59a04bd4784e9bb3a9c9cff1723fd6a859728c4e42eccac653fd47ba63c09d5b42bf94a2ba2d920fcc2d79998ba83e8f5a91335ae76d2e61117394db498553b2969cdb9bc78a54e1551ebe740a37daf0ec0a05d95314f399ccf35e6f73dacb13c1d186c10cf9ec89513a66ffec6843ce2d916db33bd98258229f01f8b59efc1fc095313af8b639805c7c5f16b18e7aadc57bf61203f5c9ebc69a97b61535ae53f4dbd32dfba97b5972367aa7b1e4bc24ce9db77a80f366f92fa89d07747dfe5663158fe7c95d69e802405e0afeae662e643b36f42eee84f3332d5c0ebb17fd745f335e4dee637293ffd9fd8c56bc179ee87754790f8d35a89bff0db8cb5a3edadb32e8952606d12348404b2a70cba03367569ddc08e720e648532f46beb726fc2baeb21efb684db1cd41575f3f1f68ee93347ed03aef9ceb47dfe44f8fb87016de2a9d7e76dec41cd1305772f4f99033489f3f9ef7b5d6be3ad8c5e4996d2eb916cf731da76ad4139aa3fa6023f9cdfcf35f6ed8c7fcb8b4ef567df523426bdf9bf2e13ec5f051b6fb412b27a5dda71a31e4da3e2a58ecd2bbf5e65d9e3a9aa7a0ace81b28b736e9af982f7c2c26afda65557dfedd3bbbe7c71fdfdbd5a60c26429c85b33f3e5debdeb75d8ef9430332a6d2677b2c75e43f56f54bf2fe5f72086a3e216457776a1754fc212c46922d278e0d78a037017c5432e42206de652b41ee39aca11b52a7a0e707fb534a752caab542437c8ee68eeead25f80ec867aaf6680956e1d003ce68aeca19aaf60c20a706ef81d178cfa8d2477dce43e739037e40ea57205fbdbe7fadcd42a507b18b6081ea8dfa8da88e34c04850bf03d996cc3b609cf2c8df041f5d1ee0fd41e0871705c813d4c89a5969867321c591cf92183032b84e8af3dadab4735dbe66663138520d467391cc13fa7754e5491da7c5193451299e7e5a0c1af97fe8be3038d73ae9c4e6a3c7d1f70bc031031a156ecf8995e98d96e1d326dc27689dae38ddb0fe21f33b001e5bca2b457d53a7c93d91630dd0b8f2b5fd09d82eb4ad8279e804a05f1cdf720bb7d32fc7b8a596764a5709ec9d5ec1c763f6a715695e61a967e123a43864f2f7d397b1bda1caf6b5c662916b09d609fd5d63ab36a1a215e8b9146b15609cfaa385ad62ef013c16bdafc6f991bfc9b5e4ef2873c25348f050d5b3f1ef3881fcc08b9133bf49d96b4c1d94459ee44c392a5c13c301c4a9c932b3ade5d3b116449fb2a0f994ec39cc8d60f6a34d82b5d3abbc44f36dbeec756dddf0d8bdc49c329dd1b19d31fc5e9f076b73f542b69f4419e110fdf4c23ee485795251b5df0af912a4fd1ca9a0751b3ba3b45499b653a70d4c1d7a56a3ad54b9b8dbc20ddf9790bfa582c53c92f757bf33063f86cea1fac43854e078983c3dc178d2bcfe9570aaebf2c985b333e9efa05558f5cd92a9e3bfe39e9099e7969988c7efe68ff214b955383b21bb0030fd72003cf160b35c9677f7b2f876ff11f9d80e68c6ec5e62c00eab1b53c5800d9fac395785d1346e693a527b2f7bd17a6f733a37397462ccf1fc0ff5dfb4febf3d41ccb1fe0d8e17ec7b1baca7288d0be4b7d372ee9bfa09955dc9d8e767b737ecafadbafcd8a69cc7c033f58a0564eb13389fd6daf8fa26f6f2f836f632e1d2e3b4681fcbbcf37f9b3b83d16430235af7c1da1c34f8a980a3522b78dc260f71211567747ddd1e8f81fdbc654c1c3c010d8709f7e5857632336d66cc9e52e0050d59de75f149dbc509a34f5fabe31e8ac5736bd42f0431b785090718ff0a47d0b233497eb92decae8ef600be515503fc12f2ad2bbe94375c2911b2fb1c83c3f883461eb3277a126b876cd0188c6d6bbef39289e058f3a76d1623db5c5e8107623a1f1ca7bf996f8edb5c08171c53f2ba634ae3ddd521b122f81fdb1170cf4a30324f30c056db49c185c69866c6a0bae7d01b728a341fd926f243456e262f4b07382787758efa14f6a34e7b1372e052471a3efde93c7513efa4ed36275b9afdc1cfcb421bf670815f16b4baf7669f772c1e7dd3fd9dded95f94e5e998cbbb9b6c4e753ee5b0077b61e3783c937f878a00f5f36796fc466bd615d9a875eccc108f26aa0b12439bda22ae2bb05123560792ce5d079d7fb036c84aa0dad5517e90ec449946f90173b7d398505fbd00a60bfd2f523c9dc36a6036f184b7b5b9c9ec33ef327b9fcc1ee3dc57a727d1ae3102998f6c4aadd051dfdc3d8b8f15cfc430c703d18e6fbaa515a3b5e9bb3acf7d6db560047b49e385e8f0b7b5a5e3be6172a2cf947b749c3e42c8d9dc2d7e29d3f7fd01d9d250d73d1bd5f3c94775230d79f7b27c38e61234c91de977a87083549d7a60c7ae92377eb0148c20e6f7cfdf07bc7f07397efaf224f7f1fbfeccc2215acf464a393f01a7c2b3c634fa65fc053cde0283dbc27a122b347f75f8a9a84f52bc53aa8e23d12d81b7a38ac96f2e31fa860b8b43d3c3fed336f9581947e99afbe8dad3a4fb2d3745bf5ef5b00b1345e7330ebdf7fb676851e6367d625a66510f8b5be7fef7889f1faddf104f589bb0968d7ca978107ff109fe62587c61fd984d4674273e619f8e9da746d017cb79e8dcd564123993ed7d87fc7a29889ada92c8eeb8fd594fd93539abfbed64237afced8fa515e3b5d191abafdf26ca7853f927b83fd7bfc1dfe098f3c457d047fcb8d6222f96c45f09d63bccffa0d33d8fc9ec5ddb2e08178ec6eebd6dabfcfb4da53b46e759666c0fb19f791577e72cd887f57ee1aac4184543227d45bea239075dff50d9efb2a89d7c437e47b0eff1ff5e9bd7fa3ba558dca0f13399bfc41f80d74dde964e8d4ddc295ab16bf6075237235ec3398be3eebc7e328e8e780ee71a7b5fac1d33b64546bb0bf0de4cfe60cac4e3ee80631c8386a6b41edb75bfe0180dcde955dcc637c9d26f9f0dcde2e9e37a08a10d02572e62b7e6effb619dbdb2f8a71fafad30ab3f5cab58dcd57ea3b1b31606affbce746f776cb37fe71d588306a7e136acfa1d3afeb90da39cf03832efc57cc61e87317ec02b86af91e0bc1ce70e37bf1fc6f5f976de21f2a9dcb328777238a1712ecdd2d56596cc239b70ab9e42dbdc4633d69697694c95e4ecfe4dbe0f83b382fddb465fa5cfa13e429c7b421cfd4d0e3c132bc3b964df3d97fe7ef7dcffb28dfeff1bbf5d5994d8fec6f942eeb3858502ce4816873c06bfb1a9a7bce9c6e410ec0fbb9f8a713fbb2bec1d6971033b8fe3d54d0c512bfe7a867df5e93c76c30a3713b73133be16c4a6d0f75b3cb53c138bcd911f41b9f72dfd16433faafb20e438ba9762a0c8ec75900fd1d0455f97419d1f0139b780cb7862ede0b4c4796d41ea60fd95868ea13be21eaabc10596ca73b2ace2be1c1ec37dba21bdf324bbff1c86f6962c24f747fa8ceaf6db41dc16af57cd0dc7330b735f0467af12bce17f6d998f670c89ee337d8e32bcd55f646a037c0d6f7a5d232d471ae7bc579a705540b336df5b5ebde2c22b4d610fe1aa877b6fc2dced16a7dc5b153649bc491c7df4a0becc5dff9dedc42ee07ac99c826a11816e4a7a3e74f17b8df87fd08783677352fd20673073dab6fd58a186c18da4f764ee90afcc615c44c99ce1aba4b3ee076ed067ede67306f079d2fcd9e43f06e5157fcf986fc877a1d8a611eb09ec877a8b1b8783ffd7475b5a20fbecc64901d9af921213ce7057f85d6ae135a573fd632a3d3d03b31ebaa87fc840f4bbf45cad443763a2aa784eac6958d6893189f7bd32871aeaaf7c3fa1113bfca203ec84e3c68cc3aa56730776debb9229927de758bbecbc29a58ad3d9d2a76077a2ea41fee9e6dcde75a53742534e20fef6d189db55506a88ed6eb0963937203c6975a883bf097c0fe1b35b541204ff0efde59db6e984768fc21bed9eb2d15fdb6522fa0c37555f48f07d6061357dd5c8aa4af6ab37495ec9279f451adc575bc3a6af45d4de71e2b2e1a788cbeaac6c4eaf64ffe6172b1bf1276c93cc95a3198e28f7a311ec81ea7fc1ba8ed6b6eed3e599751dbed7eda576aef9b327975e053a4d876fe2e6f92fae29b5ffee80afb9bc70ebc118b4b66d7525faaf66018aeaac1d597189f6fba004d3fc6bfcb7c9d67f716deeab7db1ae0ebd93da3b7d77a65f4a54c8dc1517e0096b0e25c6ec57515eb965773941694aa1c9138fb2b4f255eef44de975af317c493378dbc039fc1f3389073b0859c03a723270cb8bbeb390db830800bb8f69545f876c94e147950d9d06b6b912a169f33f1d02be640011e9ebcdbd684be14567b5e982fb4d5bed4bfa37d8cb6193ddedca75c9bcbc1517e9b7f76aeb9566cb1be67f1abf2f392c5d737ed436dda97765af536ffa89d686c9d6d27a7a9c79e434cfd8d3e369a1319ac35d967acfcbd04b437fe2f6df182ad5e8aeae4f66f372c666e58a86e588cbdb0187a6161786131f5c2a2bfd78af15e2b167badf8a2657aabfdc5eac3d11c36bcbf03da7fb4efbdbf9f60b7dfdfbf7005f1f1bdf6e0a2d9c729aeabb966d7ba80ad75fba815a9c72f53d71a663f7379c64fc03a038ed8a9f4f758acf7ace66f6ae2bc2daedafbfa2f7029dc7d6b281eb562b8d70a790fbc4c8f68af15cadee0bedd6bda84c1d32d0b8e70cfe1779b03f1204ca28e9c1ddcbfeb391fc7625e75fc311f77cb6759630e19c899adf7624f6947fc25c5fe0facf3f7a66615b3cecb63d18b6f77b4ced75ad9d5be10c64d56f8968f6caf517b677742e53e609b13d9c2153608f89b1bfcc0806d4063f083f01620df1eada9f09bf855692b36fc5c5b1bb4deb890cb6d6421b90fb863b1ad37f7919fb1908a646d3e98ef5b0c9cf3eddccca12c5c9b871ccaa72904a43f9cae4e330fe30198cf271f31bed7632d7b5f1eb346f8675e52a69883d31ba5d7a35644666fe82bfa8daf7c26d0fe68d69d5f6317621277fce34b410eb1a0761e0e934be9588085045ba4533b733c001f0cf701dc2e4d4dfa1dd6a427f3c1bcadd92e519b13fc1e91f83399dbc6f935f2da370d7b44b536b92f239f105d9b72eae574f3a57ee22531b91f1d739a7e9816c4aafc9179615ce1570ebdd3a7a3f53f94de2c77a62734af0aab6497fbe1ad5493ada0241f59f59e731aab976dec5e96e879997399a7e4d9e819f5bb2f750ce4206c3f564994fb6111f9e794c379f10d7f1af2e11b65827b3e987b3e20776e6deeae6ef8c8975a4a6c9131e8c8a8d207af5c66995b46a0c98e9f57048a56f06b7d7c5f86d7eb5eeb4707292b15d813da7e28c2187d6faaf416f03fec1b6a034181bc87ada03c67ff46f68433b5ffd85a3ff2c3e88f57c2ff2c262d3fc0da7bfae343993e72ff8c7edb7f5c09fdee8b5df9fba82d1dad806fa01821551e675e59f06bebf6b10ab9429dda9f0ba9e0a8de22e54163eb1cec852987ec3ef0e9ec27f750655b5c98bbdb9260d41d9dc71c753b27738509e0be8ed307bf18fdcebc73ebdc7486ce95a0276fc614b793f95abf2ac7dadca1df755b9ff912b583220f448a3b5a9b51ba2e83f3dac2dfa968d17daf5df3c5682cacc28fc742b7bfbc279f2bd3e5e038dd65d87e237b10a331aae70f452bceca932b9661c16ae13dd5cb295d2776328ff8c0974fa057ae4c17b91f46ff72ce59dae06b17dee65566666ff36f457e307abde3f4381afa473d3d1f2d0ef947e7366707d6182a4a8613e287f31c87d603f5fcfbb1d08a60ad4f6255f732efc9150b09fa6641faddd5d7407ff2dcd66885b5781a3f1c534c6663dc4e8be71c6bf2622e0fae1dababf1e70d2e67261e66a3352a598f365f4a794b14334e14699efb261f3ad6acf94e3656c8df12cb2a06c8a6b2771f8db8a42938101f9c99f1739bc4a001abb4ef6d71f0fa239e6adba6507fa331f077ebe684db4bfddbde040e8302b4aa77b8bd5d7382d6b06c81f181ac366eae8e7e337bef8b5f1893deaa332de0153dc5b92018837df5b5a62ebd23b575a87e17aabef8b7a3654fe5b26dc61a5faf7d2ac9eeb60c53ae1963f39afee468f16fbfc9cf2c305a5cb4ddae0af0da15b9a2a59cd2fb4dfe8efeed4bb70b1acbe878e33dd388d1a764cbc43ce7b2f9b308d38702fdb57e56b3bc1c1ebb5633d7056c1b3942fde6cee444f695e92c030d4d865fc66638d3bdf3ad5475eeea231b0b6b6bde1c2dbadbccbae85d1af57154daf1618c8fe05765f6c7d1e22bf247d616f25fd30c3fb31977b4c32056a7336443513ecbcc47b60d7a8e2c7ea139cb0f037e6dcdfe287274f3c2e8be080b0ed59d6aeed2f5f9f7afbdcef3abcb4cf4eb5c2c763eba2b7a3f9887f61f45780c905f5ddbbb46a32c07a9c53d339d8930cfeae3ccd6795ed5c75f7b0dcd9de3649e04eedee0066b7387ea3955acd99fb5f9f852353eadf5fc519977b7fd04b4d6ef8a1cb87b2d2b2c8dbf9a42ec2ba84ee48578d0b0ee80db58b716ff5a9b835fa0a7375da4ab33603eceebdee293d69917de321a0bf3492c8b699b09e0599e388e8d793fedc4051f683e384e0657268ec6ce9169037bde2b065bd8fbda8858afdec9d1b3bcb348cb94ae9fbf3f173af289a35f0b3d15900db987f82dea9bdcd70eefa38e5ca1cf798998ed643145f3d13bacbfd9bb7dac2e9bec00f9d5c5d76194e6ea34faf42ebc4f39cff427173a8291631d678372ea5e67e1cd25632bf362eecf2c8c4266bdd1d5cbf6beeb6dcbbdd9bfbccd35188ba23a598a74acabd319bb6675ac270dec35b4b92f45ffde63fd3c51959dfbdaba657bb31fdbd6ec8d4e71ed032a6510abd6265592bea8ca46e009bb4f5b185cd5f38c57a58f42953eca2560931ea1634e9e8e86e6e619b96653aaa3dfd9a279feee5b9b70952cef0a3a273df2a57eca16380f1c3d1fcde337b76770b3737a76cb53be1ccdde5ee70971ee68d5fb7ae87dead9e396da235f3ec77cebbdadeb177d640b2e9fbb4c3def84d7efe8ba6703cf5e8ce01e5407fd65bb4c961180ee395c0fd73c5670bdfd81deb728ebebd177aad684b74d5227b83ef3e5c8ced4f3063f5f7aad9bd63ddc5247cffffd84e7c3df11df2e97dd33c2bdb9a0f7f0e43bd03b045c07e37ebbbe5af794f8d9366af7277a6757bba9e692b793f85cb51ffe8ec712ea60c177d473e19b93d2afeaecd4c7655b409dc1dfe7598afc4adb5ac62ac4a3daf78c51fbe5abd106d51bb60daaebe3bcfb1e8ff49771afbb4c71ce5ccbd7ed7e227fdb1d6562ef993dd5d1187d73f9be3cecf5270197e777eff57ae3c39307b41dfa75593c5a572f7dddb182875b56f5d3c76599bd2b4b7c980eefa4cd0a158fcd769d9cf7d6bc6ed710bd17d57784faf573f1dcb5eba371fd62e4a17ef0b140f7e936ffa61ccd773c4f30cf2c70ff84fb97619479bd6189b58edb79c2600fd59c750c9faf930c72574676f2a4ac75a58a7b75df1bedce6fe7c5cb0c30c247ed1192b172b3c9fe147c438bd77b2f0faed59a00314d286b01eb18cb3d7cc679c6ed6f70cf557c3555a8ffd0d6511d217bbc1828c8d6bc60bc05d64133806b12f01ebd19c4f2dd27b189c9758a3c4815ad68c6b0c1de867879656bdbd6e9ea96053917a52acb516d6dc0ee6e3c1fdbec77d0c445363960bac5a66d4ceaa6917758711ad49cfbc72983f7279cfdeb0afbb8c93dd931b1de4d31a0f78396438835141cad0ff993389f6efb5cf72a4eec4ff63dab96edee082f6d57c5ba19ddbc1cebf8a644a7fe63b01889f95afffde99e3f0aa8933357d038a4adf30f8cd38e603f07d581a31529c1754d14799cce4367a24c172cd7f715304a3806806d02122fb3812700b82b9b39b8344ea7fffe724705cbf7c1e29ccf6b73e2ba132e73cefcd3148a66ce749d8f13ac4d9b89dd0577451e64765924b86ea2af1af37c4a693c92c54133fc1f7c2bbe2310dc7adb370ebc106bbbb0586e5b6fe66a111e38aafb9df93ae8b070b635e70c39be39a80eb4a05cf780ef1af80c1446f38e684b052aac6971ee70f1cd931f29bb47e39571fbbcd8985b0466bf595e644e585ce1b99301b48bfde433d8ebb82c63459a139d7d8ce155ad6d0afc5e255b27b3cc2b2bfd832fb2d7745e5b8b2fab0cce8a3eb83a67feacca27d1e4b9741506c9da5cba0b83cbf623feac5e96d9de5cc6ca6896fea40baef4b6221e9b27965beb9722cd9f1ec653e3311402c73b69cf71cee8b1436e3f5a33d0fcac99fcc31df1890bfe7cadb189c6862a9f52454f3bea52749d98ec47cb9bcc03bebec63598fb7dc411bfb11f559aefe741b10a835cb576a92a34ca95d9f4fd50bf683edba07b1f5e225ebcc4787a659439a3c7632d6cc4c5288dd667e05688d6fa98e690217f2b776423b3ad88d1ee1fd37cc04d9df7530870bcce0dc25cf3a8ded05c84e648593cef05ac69449ed507bed65e7c57642f3f4885a05e307fcb41eb7fac4d9f3d9e3952f150b4283b988095efab533b3f6835be1bcd57f5f12252a7bf41c7b591b7368d528233beb1df619b1f997de603ac915e7caccd01e8a7ab53af8adbd9a19d78e75b0fca670eaeaed6ff50e5597e207b09eae50465a88f5765e8bb6570532f516687fd3ee065a7a7fca0f317f6b88ada9e6a1e53ec803cc9013780eb6bc29479ef0ae24d9dc0f8ff84bfc7758c71574259d7b4ac5badd03187d1006bc5eb7cee68c11dd6a91834e3335476741d2947e69668dd0be03d0ac63451cd5d781f2a972a05bde3b458131e177a5ed89b46cf93c512f65171d947a4ec7d97e84e6d4a3bd9b0f83ae0f169c4345668fed6cfc58899bf57ccfc3d5fef96ae1e73d9fec9cfd5a41fb8e62edb8df8b93a81befef4e549e913ad6453b8f9ea78036d6448c5067f6781e626aaed9a3ad6d235a47e6e9b7c6c69d197dbd059201a2b305f67d9568a45e69b2b2d4296ffb831de9e7ca4cacd35f6607e6703d809bb9e2bd2f83adbedd0fc35384a9309c4b7ac6230d34e01b27f6626685ab06bcbad7b6d69e7fb46b44f610cb954a48d3544e773d5c45c0c4e6f1e7bbdc5bff7ec1cd48a4bd13c2c56bfb6c9a1de4fb16e35c64436718fd195d5db6f9795702f066e12dfc83c97db3dd43e8029077d33f47c17d96d687db94c78c732609da4ba6638e76ef0a21543d6ceebde743845426bba9d541c2ed35d0b53f8c219d0c653d27e7d5be8b7780d18cddd4dd5e22f65f43bf32737d4bfae78df7ff970e5f8ec68a707d88b55b9b8cc7ef2f73a5ecd152b61f12fd0d92cb95bb5777be6efa6b0f4d17ae8b0f90bfaed8adad1ed0d1f8eb9f985c6bed71be2b5515e802fbb97fa575710ff38e606d50ffafd70e5491f623480f93935fb8656648a7cca9dcb3c704de3a968d127fa0d9a69689de91583bdc4ae3b30375ed5cb30b3ad18738f2727aafb8a7fa3f3c9e4e1c945f55ed05a217dd031b783a3cc43fcc4c1fc57c8668a55d9c63155d065a9ef07fe2fb60c90a31365ae84dee394686c03d739195b7b09cd13c6631e3af04ec7fa0d18530738aff8872b1b1cd541fc6fd621e6872a625f867acc28ae9fc154514db9ba0f4c8b01d6c5a979fb8fd39a3bdc41cfe9f18d98f40c62a8a8ff8d1bf8159bc1af78e05ff55ddbe0d2953010dd5e31f07a3c1d1729e5a95b95c1fd382d78a20bdfb0991cad9fd7f8946d695b5e88fcc855b2cbdd5ab335f292490fd60ef983e5592b31af19d6d799e17608699cd44e00bf90ef4d1ecd219f061af7649c437e804ccfc13eace5868d3902f222c9efd81935ce039e4e9531f676671931f28be0f938c760eb9b068fdfb18d51bbae623f5713fcb782fa09d847f190791fdcdf711c95e3e9cbe2039e0163f33794cd91b73b9763be211ede5de1f1caa947f864ba343a3bb07ce81b27c033c4f2d791326c98795297c5fb0ba751af839784b9c7e3e7bc9bf4d118163117361eaf3f3fb791334cf58cdae52675d67fee2e46ee26641c4bc51b1d5c46b7f352697897681e7730177ae8a0f93b3134cc8133fbd571acc56187e3cb964031245caaa23a488cc4edcde31de1e1d9213fa137477670ec95cdb22b0dbcd1302679ae3f7f6b692746f9cac3579545c3784fe0c4835c202e3bc803f1d09bf0900f9ac4b11701c63af092b6ae7a87bd416228157f882e56bc5af3d0a17f832692274c6e8eb18d0fb04f1f8baa6c08a09b684e385b08e2b6963c8dd3577c565abff0cd49b6379dd4b1661d18d2f9e038dd104d7b8ae542b662c0fc8e8097cca5ef6c9c43659a44ce18970b6bf06c9f5d7aed8077457d46de31d8c8ada8cacbc0958bd036977f3690b36a7cb4b8145ff71faab8c12ef72c2370e538d99b46b9163e6a2dd4cb563c6a45ef3bbd0bc0cae822ecc1eea6b32b68a64fb96c0b182e928bb9034c20e7b4f6345ef465593b8f89e7114c21e7a0ba9602e6f78c709589a9320dee84f7286575ac91bdebcb46f91366af99abc2a7fe741b7b17acb1f453bc91d1ac077e7645ebe33a9ffac06b047b906d3df65d917abd6dec26adb2bdee1b3734c5817756aaf50d75c8633572f45e5f2a7ac8d650606fb8aa0356377db1b7969c63f681f3fc073eaecef76dcc22abdf39073e72aa3fee0afd36c6eaafbe05dd87aef505d0b5c8dcb0f1cc731307d9b597c668ee032fed29551311f98cdd6d20c3bafded3cd3554eece7627fa1f9ac06def5af9f0bfcad946f82da1c5067f4fb7971c5a3f51bcf0d1bb3486d6b197b9c982b63e34ee3943b01cda5c3dc797ec3713ee2b9e3b4f83a6a1d5c4fcc1aa45e86b94338c2f697613b86dfd2fa6b8e1b86ebad8e594d3730571f7a5caa26f3cbdadae476e20f8ed2ecec244e320b911d953ef03bd1f702bfd4c3313d71077c22c30bf1c9d7ee93ff42768cdb33b81fca55e3b6c1378d592e298ef8de0d8d6f3799dc1ce0fadde58e15541829459a23bb08f645c13e6cf054ce2a0da595108916f0d81899632dd2b5b0cbe752fd7b4563b3d626c77c91223df7e9681f11f870c40686396d3abb6ec200da4b9ddece073d8d81b7d25a7cee315696e18de58103514f0627af679cf7d2909619b815dc300b6d6998400e8ef4719a8db7a9230dfb6e6f77721211e6fad9747b9fc9f10dc74186a92f0d0337d99c6c79d9f765f1690b9387a3f5794fd85d15f3f7696f6d7ecdc2170ec613d4a3f9fbe45ac6d39786a1a30d9f9e6c9c61fd3437275f1e9c5c73f2073819c10fa3f8751c87f6a69beb2ca2c787776f8a6d0dcae76827bb93d71bc6b600eb5584cbcd077b6177b2b5eabb016bbee2c4bb9ad035883c73c4af215664de629df4a5f50e5d47cfe331b541634a2058fbd7f987e93b2fe300db88789c63acbf8c6c24b0fb72359907bebcbcea78bca7b640ecd327fffe5c0fc64f6593b821792ec905d89b4b12db58bafe84fbe13c3f38d2dca1173ee7ca2620f60ace1d769a3914b99abc3cb7d6156e692cb5ed5baadfefc8c6d39fceef0793680e27f0af350f12bd2d34af26f199da9dff604e62d688066f54edff31cfad6cf4d1f5fafd792e98591b3c4797c87eebdf5fdbf3652eae743c9a75b7b8cef471aa4e3715cf55f735bf912f54f7a7e70fb9010dec3bee571b41e4ddcbe65f8b29973538f2bef779baebb3cea1ca6de0e90a46687ef181dba4750c784e1e0fa2914efae6f2ee9b7d0ef2d4e8b109f595d0fc58f105b634160aee9b31f475c4b1dfc63b9432abec098657ecef6d5134e7632e1dae559769cb06a1fe61e3fdaac665a4dfb5ea0afcabd76f2ffbbc276f035f36f46aefabd5c799b5f6aae8b7b59da4b1dddbe47bc1e8633eb53775043a26efb9d3ab1c0ae9fd1c42f4062a4e0ab4d655e3b61d43c17870f0fd5e727f645cc61f3553486c8de583abec4e644b252cd763f3d95be00079934742e6a8d58b2d8fef6d6a599cda5a592f75aed47a8bf95bad45b3ef7a31e4d473a600f9929dfc317b2d221c76c11debc3c05cb8729ffc872f055f7b398e9c1dce57d285be59ed618caec1422b3864c3f8d63cee387773a1bdfb923b35ca55382e5499bfc33746f3ccb7e66b4f9e9cf7d6b6bf0a3f1e4bad78ecad207627387ebea2fab3521139d6f28f2f8b0f439e3c0c39281d6b797585225a9dd1dc28f2b610ec6c6bb8db4fe7b127047757de7caea4a2b7978dd89d2c21f7c0976301de751e678e6c84bee9616d0021b8fb9cf3002d28d07188ef6b64cf624ee09ddbe9b7c3bec1779ca90ca770bf7e16bbefd0f09bc8b5e77f30d732ebdd512b12b7373f3b0639f6d373923ab7cf99ce031f34346abfd113e2cfbfc80983bde8bd89e78fbd95c68db162c6dcc6ec477a1de344ed961e2057b2faf6d44d626e57cf317fa597d1b29b99ba9ea13919f6a914bdc1eb0a7b27cd9c4cffea9846b6130cbcef6e39a93f05dd634e91e60eb25909a7f7d341f6ad363cfbd6927305eee40b41ec988f93d7bc379f49c31dfaaed9d44f5df941ed4f64fb953379f2f0a421de239c1ac80f40e32670e5a23f9ba2b27c9c7c8c5740f7019fb7971881ab0d6f7b7319abe1ef93698afc6cbabcba3d2373a4e1792f4f7247d891fe37c45ae0da30f112f48eedd5d18691633a816f16dc4c1673771a9df6a67d42f6e74c5e066e38bcf8e6a4b4cd3ee798f09c00ec71f901d778e190f740eb6cd8dba37a9c1ac836033e73887769c3ab6dcd235f9894c8ce4676bcce2f4eb620e64e125faabdb070187825ad8725ef5d20ef1e7d27b631b48f90d1f558b910ebb995904b67eedabc0bcc78c1f96c6e18946d9b06f5edbdd94f91cd4fb127d8e687efcedddee604e7e53870e5f8e9e8d713e3d7307d6a789a619d8fb38d35eea17fa9d2fc34931dc04ba9e1708ce62a5cafce1dc7db80fb3d75ade1ddbb6c901f73b2cd7e349387e783b5bd7bc232f0e45dee5b90ab799ac931b72e6729f2872b9bd5a8c7f8b71a1dcf1bd718d3f47e6dc6ace780f9ca7d7992bac44626daf938e747eb1fed5e5c227f18c73b6f152706e1f961f735be147357c76a80c76973ad385208af10e85fe8b7572e1bf24d84eb0a8dd99b6f610ed36a7d9a2eae8ad647f3dac436db6b64736d6dda50bbdcbb2ccf1e5ec3815f03f519b2c74e7f77ef958e001f15ab09b3e710f60bd8ebd079d742feb005b1221a1b7faf614ee32dc207e64140df0cf313b2e3c5c489bbe6ea4ebdb8bb93d82fcf38eab739e6fd7750ff056ea4ad1cdfe8bce83d79749eceb9641ebda1b5adc1ffdf15ffadbe6102398bbf70393e226433ad22724cea379ea348d127e49992186dcd3f8ff501da3cf7508f44abeafb39ff23ea687b362fb2e6dc6cc52bbaf5d18a98683d7d6baba9e1e6553fab112bae73a28f5ac4e2f13964a7b2da5dabc41055e955effe1bbe899a33fef9fdf750cdac9d60640ed62fe81a4b3fc560bbdfdde3c59570bbb33c266b13fd266538f37fdcf2232273ccc605bfa8d8b94f2ef4a5d9d74e1e903dede88523a3c9e1847935dc16e73ae81fbcfa6595d6f8373ae3d4f68d5534178f814f313e4cb74bc7da068a1c518cdffdffa3edcbfa13559ebf5fd07331809a84cbc428b2b8826c7702511050ce800abefae7d3d5ddd0206632e777fe17f399c8d2f4525d5debb76accbc262fa9fb0ed18dc2abaa9777a8d785fdf4903f8264911a93ac2a43c05110da7888f0bc9424ee0472dc707b86983458251b74069318b1d15d95e2dcaf46f1ce72d3ed4cb9fab379b64c7fd226f802932e068a2e25c04f77ed5ab0ed3af1d248d4a61f5718fbb415fb3341fdf8ae16538de565b5b1247dd4f7c9267353f7fedd3d622fce56f6fab71c71912a6cd1da55586f4952557a636a89bdb5eb8d432d6b8ca31418dc6d3968e351042c1ec5277fb10626e4a307d382b70d4e5c999bab2639a26bb2bf0f22aeb5efe4ee279f43bce4ec23715bf3d23e0fa106f3ac7c73232775ebf3f99dc15e3ca44aba79db4b875ffe27df89af9abfb860cf78173d88abfeb8b9d666eda7e2cdb5156e679977b5958be98bf3cfe2b49abd33f9f43ee005307323acec0fcfe5b9fccbe0051a07e619106bb15fd9dbdf73a3d8af98788525cf620ec8a297147b822d9458bc18ac0c4e3431de7f51e3545a325e4bc9acc0d7cb17e45b66a0ea09c515ba5b8324d8cfca623fbb9d7dbe18113cb390c6687ce11af98ceeae783b93131dbd0cf77ab9f6989c2db4e70ccbe41ce3db78a3a616c44c16e548ce771d5981faccd78390d3057304f8b251496b9a5fba35cd1b0c9e91e7f1dcab1fe5104f4730d8af7ee4a4eddf682d37c79d640226db8adf5c979192ca270637c0e02fcff61cf08108ec4c2dec541ce7b018069322f932f84a9b15bf5d3b7ef1a3b2e119135883fb32dd22de7d0b66f10b8ef16a6a2aed6d2e473cda154caef6e712fbd0f33a22d80ed160f8b57192da3cd1bcf7d671e97c8bda9dc197921489cde480c26fa39d03f9c533f2de098fdd85bcb618ed8bec115b3d66e8fa8d62ab67356d0b09a5ed76dd7ae3fdd531ca6b67af3eaf615c415c63bd672d611a2c078ae7572476d2e0ef6c1c241e1b5a3f85f05e1caff587b5a0beced69c04e3d1c3da33b88a140366e4437d2d528fb98537d21e8b9f907acc96e9f93ce0055cb4d30789e70cef2467370c748c132b5bb7760d38a84d476243efe22bf86b8cec8ee3854cae8e1b15cc186ac01ad9e333c6399ccf78c046068c007b8bb13466b8ce902f9931e4c654a3d48b9ab8506fccfe8df9298e8173292f477a368da5c7f5d6490e492d07dc79f65918a32acd2f6e3ac27925ec3bd2305321df748e786112c4ee05e7da6c3316db9be6d1efa0861fff0acf1eb37c6f509b3d5effad34add0bc6c295f9dc5672f2a79552f532d1d255fb3b5e845a31bd169ce10b31e8dc02ea2442e7de6e29c929b632fee80d745eeaf2ce7e2a5e630188fa22ffb036a2eb8102b43e4d753c1ca1d2f3bb4af106df6cb14cf31d45a3c8bc54e033aa2fb69b4c1983e4b1c7f58662bc002a6e34e6680df82f81cd4d97dc44ef05bb12643e0655bf63ce2c210e36396893683fa6b381605f327cdb5636a4baf31fd5ab54b8d49bd275ab84f16c5237acf8327e7ca72208b86a0fc8374242d853160dc8086c7d05c9cec792e0eae39d0f07dd4cec273784eb4b83cb7125e64da4b21deb51d17d08a8be8b6e325800322ea783e9979c135914187b70193a733f7add8947acce81c85ba15665eda06cf9138869e76a7d0aeffd02edae3045b542f63ea9fd324bfaf361d73ded3ba1aebe73535c6a3e34e9a566b418cdded14306296509b987e4ba6be4001ad4b702c2b665d04665d462b5bf102a463183c8f649b768e14479fdbd77e94b68c34b2f5325a996f384f4c2f87e86f826f8568320fee3cb557d6357ded0af09bcfc6c04dfc9392b9d2f65770e7f780d92784ab3a265f47f3c835b10016d7e4c3419e852f7a7a93e3466d6f1b821bb832509be625b0f8fb4ae0eabc3882736ad4b29fede7c69d37985cbca93699a3b6792f4d38525b2bd2503f2c2541f2915139a96cc917cf36f3404a6e9eb4cdfcf1a1981bf270350ed39539ff15dcb3a9aa3ba97bbc95f3e3a1c66d71d3f20ab6aa280e57069faeee4ab2d4b9f3dc78af16e32cdd7fbe67cbd4c9bfc671be1d34717beb41f9e656e1a7363bd4fe7f17724c169c4fe600dddbb378f09361aeebe5ef955968da340bb4e93ba2aff54a626a84f0ef2d7cf89d59ac011fdeead03bbf09964241f7d904e39817188316fd6f7262305b9f37d3bcb4f5f237de1b7c6b4fadf470b9b2e09d5c37787846fb946f4bc32f1786fc8f11150a8329dfde8ff722d1d232745233df4849e173203726c1389cb3d76bdb51456244261cc6299ce691274d23d7ba45b65e3e7d07db1347b963298937a9bfb1c031ccf89d6dc37745d75e9fbdd3fa6c802d892f3c61348777c7e542d5e35cb6e7741fe918f7b2646a50f0f83b6325d026b70bee5f39d9819d6241e24c8ba6e6ff167f1fe6d23239752a43dc2ac5cb33f0fb46cd1b71df2f788e1657cfe2af5e8cdbd0a6728d21b73678c81db6aaba567ef193b972ebfa6a9b7967be3e70dd7412b739f9ab79fb50755c4bc2afe5ddb3d8e6f9f37c73e4ff2175c4c79eb019691359dc45b896f83a152b57322b6d7646d720d613f892358a758b0f5d619b9bf07e8355ac4d63f4ec6d676d73d3e0bd4d548eb5d93937a3d2b5f551bab34aee218eb86d4fab63a6a0ced34949dc9979747534ffa5a757e5ced661cea08fcd1a6e610d77d2f4be9592a4e64b669c2a09e01f223ea12991eba2fd221b9c689dd83ca489d8d9ab440e2771eff8babc033bdc83aef9dcfe8cdffbfc9a6d60bd90eed959036a87be33f446f221b79496e15dc2737bf74f7daf97c609f6575d6bc3c4343265784af34c1f2dd6fda171ba3d7ba4e9738aced4f6b5f6ba942d1da747c6ed3bdfb1dd262a2b2a3f42ee13d2e1fa746224dbd9323e5391ac79e7ab6e1edb4ea7796c24ff7bb615773a9585e748cfb95a428ce3f44cc835cab1de40f3dccab49b7fbcfbe422ac8f2417b7921f64a5deb8f24f1c4bcec6ebd567b42172dae923359b7c74ecdb7b90970e8d5e6eadcf1ec6b78ac1be39902f8e10268e506cfd3439b9e0c7831c731a8308f1c5b46ebf1239912f2509966de933a37b6029f760269fe7e3db1df2294eebb39c806f11edf703d1410e2df9a682f8fa832b99373f358f389f6478902775cd1c90c382d9bcf6793ae9f4b813820ac70e7e649e353db9f6fcb0b3200f2974c7c348c5f80a55906e0bf25d9acb0f6b8aebe9b358a5ce594e95e42b4d123f92112f48a8ce469f855c0c5cbf2bda49d3913fd8848e90d3768546665ab7ea72ececc5bac60fb7cb3706abf9aceaa3cce729b6ef2153713e6eb6b26a5b3fc6d0d3c384dae5987ee601e45ec7902be3da9b84c9f96769b3b62d6ab3f7b3aadfc239c623cd701e4e5bc766dac857d524f46afd6f4e6ac737cfd6355dc6e54d1dc738c7290a9bbf41d66dfab7267ae61fbed1eabbd7d23f9f7ca7ceadeef83e110dc69bab2c8daec118dac85c6178a8f7e0600ef19f6ee3ffc035992488f53c7a038845b879c228de59a3930c315093038c491fc27bb89ed3fab2833c22886b3d3bf6fce0a56fcd77aa0f242f36b43f8b210e96f218a8f1446a92e1189b8f746781effe204745a6a56ee65a658c9e538dfc10cc94912c4d0ece348f5421beb890a3b1fe2d27fc41ae6b3f8a158e452d33cf4a3879b63822fe86af357e1afa5dd21ff25d1847ec5a6ee641ddd0445c0e16831dc43485596de71e27af8e30bdbbfa4708d726303f2fac6d599bc562d32eae51178c0f911621b98a135d52e3569b02fedb7e356be46625720b6a6bf60cbeb0068967f37c007537eb1c7b8eb1f9fb98be89cd69a38785cad8083bf4c023f9beb1bb88bc5f7d609bbaad907909216699c6f7e29c4c2483f0899f26c72e3d74e77019bd47aac041ad2f34273db492f9d5c7c513868577320bd75632a78a2332066c5f3af2f5fa1bd674a85974bd378b9d857102d499436a61cabfe69fe7b3a7b3ef2417551723d5b8dd5603f45c2610ac0201b00a66f31ae3859c1143c4d7b12e672e76d6087489e0ce679427a27e806e329da3b5c5bc6fcb675e027ac98a7ddfb143c09658b7de4f2ed61dc9e343f6fdf06b9a57b65e2a44de101ffac173bfe646d669671168525ee39b77dabbdbc65b0918b16c7f782edf7ef21ec1a72167493854ab70a0d9874c3d399936c1baa40ff535d6e76d959f8d8a37543d1354bd6ce3e04ce6bfd5c9b05857f13f4114e79d7615b50a7f6bdb18dab58de2b2b20bcaef5e5a3205b66b6694d7537d7a3b2eefc14c2167fe39f2d32052c7f2efed34bfd97a1e69e3f748e53fd03cff96a31be2196b34bf6a2567f289a738c5b027fc6a44b1381f6d57483765d733cacfadf91cb7d710cdc5521876cfaabaffe6b8cc1879e8ac42cdad43d8c259aa0e99369e944b6178a9f925a2152916bd23a937712f8e8ebd486469426aa8658cfebd7ece5f26b786bf4c38c45f16abc99ae52ff325c7017f313ef9b9c56d3cc36cf19770b5bda1bd52c7d5fb208f6ecf94776b935bceaee16e1c67da787a61ceb8133ea726af5ed4d8985716aed3ba141424ebfc5e0a8b10f8913e4abd6386f3688ecd7c6b93498d4f81c6eb2514cb28666ccd990e7104e4dcedd898c5755323f183e99f00b91203c01f2f5a58c212e6f3fe698eceb211e19b1dac857734178916d1b30ad69ee17966eeea708f837a9de318eeedd01909efd7fc0e6843959ed3d35aefd0138bf93a8378bc4f1a7bc7e244101f4085f97b8ceb32ceeaf1d7b131f20ccfa94fceeb400a1379d6d8a0e5d966e44bdb2ebf6fce70c9bd22191bc9b9e81ead0d84ef257759a2b190eb4c8e7a68c24e00c3ba97f6eb7c818c5eaf63f696273a9649c96225adaa306bc96bd6fc574b9efacc724d121b5dc7e033d5c88e2be156fb045c6b2dee8cac2593ed742a877db07af0858923f9df6db0b8f639d4e82371f78fba7605f17c95966e32b43e4ccd1a5cdf67b6606ae0c97faa1d97d31837a6fe7e9fee785d6dc568979ac7603cfaeddac95d2578e1e02b93de9efbfd78ea2b4b3c9fe75ed95afaea6c5bcff96ab06dcd3f3edbb2cc1a2c025aa7be8e55eceba3c1bfeebbfe98871a703dfed6417cf16c9383bcf86d2323f6d5d553894f985e37674a48e2a71fea6d77eb7f515f7bc7f793816e3ba3f578ba5857cc3e8c6a7c2bf05936fec64314b0fd88f80667059d078dae9c3bc6f7efb95619426df9e61d1cbba1b73177bc7ba76e6413630258153ff4dbe4ee91ed4f7854f5f2bcb24ccfe1b1bf7b57fbccd6e26e3c42fab2a0cdde45068703fbed8403f6db7d66a926f9805f111c6b1f41fe6570a5ab73c25258a3736daa4a8c3d01e99ff1f6ec8f599bffdbd9bd43ed603a0f85cbdcd7668ec8fe5607f13f6e15bf6cf430aefd9eba936ef4f056ffaedb246d5835a61eea6bf31e69eb6bdc6eeb6bccb405581a3eea0396534c24134dc495fd4e653e6f3ee5dff6d2baf96d82bdaf6ec3ba4f83fdac8c9bdf0ad800fda64d24970a2b6b7df1079b8afa6c3509f057ee96b008d0f7987b34be1de3a8b4b08fe6399211813ec610cb42fde3f45c7df5a3518bf60916ca4dc3b5da675ed4ce9371f5e4d53186b7d560dd8b9be1e831c698417cf0f45179029f41dea43ee27692795121ee92c445d26bdd5c93564c231bf71abe121bcb8b5f950cb65a76c518c0901bf6dd5ee376169f79a95f30638ad4daa65292b85a927701583831eafbcd4fc56287e3a245558f2fe8bceece4dabce5463e7b8abb375be6370b93a3908351e153a375afda5581a10e34beaa2f43d53219e5ee746e1f867cad3ed39e289185fadb71e1ae681484678420b25e5bf5ddb5d5f0c08c6292f594c7512e7d1b67942fd77c0b29934b997f63c554ef333ce457152af0ac3ceb777c64081bc953ff4818dbb84dc34b2478e3bc93ceef84db5b38213c10d20b899b7a7d883f26c8de63c738520f14f0bda0751d56fddf5efd66f1cb131f05fc48f21138c92ced8a81cf183b1d11cd6f67ab06bf06d9cf0898e5fb9d39a8e7b3d6ebf03353dd63fa9939b439c0fd48ac4f710ddac5371d8d4897cb491229ee7dae55bc7167a512227aa716aa309c618194fb3be3e1b82bb6e6a1993764e0bc092edadef98ba573f3643c8a37b989ff537b51cd77face508f82e7aedab39bbd6e2b759d3cca38c52d7afa17347625898da9a541685b6ac18d34edd66f498b7459fa5f3d3fbac4d72a9279bebca2eda67c6f3bc329ad7ec6139f910a9910c58f7fbd92d52a333b14de3b82bb65ea017258f7517663df1071553f3b56ae2639ff10f8fe7a8cfe0ded5971db407c6939b6a14772572ebfa547ed5ae4165035e0895997bece0d290d87cb7909f4d629479ca8bbf70bcf600e3fb357a11ad83b4b2b6affe11e9dd4deea4737fc89dcc55bd4ca196c3b13c32b25bdaae43b5f0dc04625ef2a60e1593d76dad3126a8557a861e9e55936b631f5b75bce4edc1be302e63325fb7d67cd5b5cb316635238fb6ec398c0d16e3a8818db0105a3ad7c0e9c6028f56f686c6abbceef532626cfc43341f5f6d5976c8ccc714c9b25f532cafd63597a673a8a14a63d0367a9d7717ad2cdedb34ba278d7333f6367fa2f34162e8d7b0fe4cacf3971e8eb459c2a9138ce3e85665a544ced9a1f16b76dce812932da1cb38db5b7e5d03afadd3d43ae508e9944dfdba27b1f7b338f7f492f34f66abfe963be072af8ebb31c7d4ced78bd9236c45631c266a276e75fe5954ed7562eac84b31d28d913c7a5d59ed587fe24f8673fc9b339ec612dd57d684da7e31f671caf324d606fc9bab1a7fe18df5395e599fa3571139adc6b07e4b95f4add165abf05ae36e5bc31a37d0ab1a9d81d4dcac7fafac61a60156602d4f8bfefdadb67b7ad1e81f4f482eea58cee528c6b5324edb5fccf5831cc52f72849e2d3bebf890eb902d4f2d5aa36b76de11dfa736eb3fdbfd2acc801f43ec1ccf60294d736fd2c89adfe64e7d2f2376d77064203ab6e738d66df628d73ec13bfa117db5ea0d36b931af100b89639cd93ae621b3f7efa0ab9a1cc438f6d11d890dce181d97a7b837d85e794b95b4b13b31f1b5b43d8c813d9be77224c319a0498ee8f1054ff3085676017af1322dc5e5e08ffc23d3a4396a83e8cbfd7ddbdbfc9fe827f7a21a3f90e2246c59991dd3c95b1ecc141ee2066d2e37a437f14b08926062165b217971b7c9652b2543d72aefdfe670563876deb1928b6b2b9f884ee5d4bd7a27a83df20235947be26556033c7f9bb4bce2fcd4f8656e73399bebb91e2cfe06cb04ec457db9a2bbb193ba3a607e935c0cfe16d89bc42531252c367d9d43657ff08164c6d4bee4ea713b467796101b05c665d2263c929550fb3acdc1a5ed7fbbdfa42dc95384bee11815b3d95f84df601e0de76f46e4b82009a64a18f0640cb3754e3050a00f8e1d90dcaa3f62f36079ec93e770cc6c276761c0e53bc01b8ddf20769bc91360f65ec6ecbd6b2b161ac78d6636c42f9338677c2e34b46f12dbc96c9d7b24e700722f6b7e0ffec1ca12de6a9bafa39795c57167fabc0ad7580c0d452473a178e926f96ad6b2efec6bd5640cc68d7ce0ea09c41afb09d7830d18ffda1919877438c080a3b6481dd67242ede16c3c3c6d6f3ee5454d426b88d7ef81ae9e60ba75d68ae69e3f3b5b5ffd68147a5212faa0ffcba21f8d6ee84c0a668bad47e325b16d19c715e118a526463f6ae112b03a7b7d8ee25ade2476b62a79389f9bb312e7c700767cedeb636a314cc0c6e7e8358e7c0e39df50b71d63a123fdd1f90663311867f91ec9c73db97e4c1d30c4637ebb36d41518824da1e64be17935985f5c1bc949f18fe3fd9a18a879b6120ebf1c7d5438f67bf7fd4e3f1c4473774b300362df6ac9086e148650a72c7dda1edb9f3de4670dd6205b381897eea14d722fc4fece1a5b82575b752cda63446702e45731f8af5b8c89f49cafb4f15fd0394d735e93e7782f26da5b544fbbb66cee100fc6ea2790c3775dd9fed9ab687e37e3976bcb68b51cd5f848cbab8ace47a89f30823c3daf4adab9a4529dd376071cc7673596714d92cbca5ee7fdfb8f60ec456d1f4e37afc28be2dcbb23fefaf6c6e84e5dfd36b30411f2453d9adf642b9e63f26ffb99e219e330544d90673ab2c9b6d67f55a3c8a14e3ed1dbbc1636b589c73d195dbd7893b8e994f766ed3c4e5d9ade774f3053c95901363d5adb55936ea2178dee040b9dd65fbf033ddc5bf47047f4003ada914facc122d0287fd5c3b60f6686e4ac49a6ea2dbc42d6279279d3fc661bbcaa4a931cfe46eb3dad733a424d2abd39e06293787a2463621cfa26a6016ae9bebf06467965fac9a37e02df4b1767c7563e21ee18c92ef81b3ffb2e5397756f73af86f5f62cf747a4f78c54bc6c2433756c33efe45bca8ebd38135b828e64639c833b8a3727e5ea6db3fb233eebb31c764483c33706ebfed58b184cf123cf59c228d0f059c1e48aa23d2b535def6d3f932fce6001b97a0fb48ee3c79977c3acad6bce912e705f4913461798333ecbade898c51d6a0159a21798905f74443267a097793b2f1cd1b45b7902affac2035ec4031e26238f41ed73d7de6c3d8eee05c09e4b700cb07971274dbb80510adf7a9cebb62cb5162d9ecb6b9c86b4de67733adfae416d7435cd25c02bdb7c15d79d17cc40c35887ec5a640fb25785d6a7101b7f70fcd41fbc338bd0368aab3598d77216c62727fb02ea1b90bce74113d7b73cc9bf90fce0f10bce4f3196e332528ede4049e4a8243ee0ecba6f639c413dfc079a35491bcf702ea8ff80cea3f426a2f32df86cd5ec0c919ee2b1f5163e470ccf11afda69c13ba705e74761737d8cce4aa55dd7ab3a645fc2506472f3ff9fdffc8d74fc3ad698b99e2d2339223526ae200fa5e6cd93a688175ead4a0cac2a0bd46979df8f87997a173d35e13d8de7ae6e758be4287e5d5658d6c3755b00bbed6a27e55d8dd6d73a3ffd5ed7bab86a294f30d9c42f7b36ff471d1f7e2da3d19b3d9b67eafd2d43d7ec597e563fdf5eb453e9fb55fc7b5525fe5e7fa398123c9ae3607c8874699a07384e14af9dbd38bb96c9c9333857322ff55fe4295debce3312e04f843b0b3049af7eba85985672061f9c137a66746dc5854ad38b3bfe88a0a6504571583f32ef783ec85171558d82e6e3272bdbf4e653629f966e6200f97ad8deec0862e5eae023c8551c339504d5c7da8fc25cd51bcc193acead5064244f96f40fc6737523d297fbf9a05b604fcadcf107b3cf983e4668fc0a6e83e48eef2433093ea1efb9aa9721d2431ff369e7a8ef958de4561de2cd44e7cec6a4403dac860ea23fd381fbc95f1ee96008ebec57e797ceef578de43ec9d8eecba963c5d809098d1106b90ac7198ba92c29b9272c7e2fa30fa58e4f02cc283e0c661b8cff25388f71f5b318e34791582659c2f5bea9dd926251c9527259829c1ae7ee910be79ff59a572b6bd3acf9ec5d7471bed909ae271c8b27dbce631f7c04aa15d7f29f3f2e4faaf176ae6b7fcd0ad06d96a777886d5ca681a82259691c67cb287ca491664c2ff2a48e9d6a8dd595cc94e0735d21960bd37055b74be40e9c8fb0f8bd23b1566c5c576b8ed9782f096c40879d357c91c7f26f3f8a73c49f707ca0937d099333b35732edd4ec3155ba65ac8f2140e7fdc079db31e77dc09cf75f067fb6066eb0146238cfd5599d7f3102bd6f9c888e7e606be1654807f353b1a07581ff0fce5c83ec355cd305b0133238df96d5b41fa3d53ae7ee23de06d51d231b9d1de33cb2a7e55d4d4a5f9d22de783e5b7ce9077ce96b09f75b35d1b5ccb7c7712c9fb8dc3bb6da6bc512a995f2664fcb813a282b5740323af7cb9ede80efa27f56c5fdb68db7f3ea7e3eafee996f4bebdffb69e9bb63d4fe087eabfae1d73229a6aec97b6ac5072b1eddcfb355156756650668ffa2bdac91be92b63c4d2f825585f83e7a1fbd53a0bec4685c5a82db803e7066629bf96f0dfa56c66a15ff52f5c4534cee171eeb3987f988685b79a1f2dc2f3a06786750a2befe634f6f17d206f46163998155e5856d88782cc65ba69a7962a3fff1bb77352aa1ffffd59ca87a8ce638db4be1dd9b221946f4edf1e13f9a9738fbbfe8335ac7ffb3b9d663dca7ff9c46e24c85b94ddeece9ed68dddf8ba53529dc78526c12fe753ee07baf2f4e1c533b5cf9922324d72ad03fd81bd3c2b767019ab74025b46d4f6f745e2275b0fe2d47df5fa7e394a3e2a2567246f7f3e3f55ba68c1511c9ce56a57c05b692b7f77ee629fc2d426bab45f92fd5cc4ff65881b5ab7940748bec28c47519f475a48d952f74aea2bf6da3f8c7abb02dcdbff3af01d45ccb5ebd93593829e0c9de348947e7c24d9be11aaecb48b9ef25fe2e4765e6d9508f2a0ba6f5bdc2af507f3f123f5d24de69fdf22590bcf4e3399c8fcb029d07e87fc73ebccc8d77a65d39e96f534e101f43679623989740829cb5ffa6dda82c02abe476f6478e7150b8fc2b352b8f132fee96b6ff643e243efcfa3c97e43b48a6bc03c68a5ebeb8b6723584516290f7fcfbdfb5a1493cd2b5325f2a13d2e605da63da5c9e0a6a9f7c918df7dcb3904cc295dff40bd1c0d2b582309012c1dd2697e0f359bf924b209927da7600324299f883f90bc42dcf9aba96cb5391a036fc7be6c9279a8f27e7722a563b2bc8bc4809f0b737c91663de3ef926c64258264c1ebccde5de93f13ef44922eb757aa00db0f5225917f087c78f6b4e6b8706a9b9a4dff8531b84de409e7606904f44e606b020fbe973c6e54e9ac43b5b21587ba3d09bf63cfff43973e1d849e49a4ff757e849e535e09bfb786e94cc95928ae2483a560958c23d74d9a5bb3b7aceb0a6232735d7aead1c5d6bc4f5d2def13d77ac32f70641f31c6e23fc9292fb86f97e8b66d2f0eaa7c90bf6cbdd107fca5dcbe500ef16d1d149c95c21647ebb604f7284698e785b607f0c1c5b013ee74ae2c03b05a19f029f0b037b7395131ed16be84a48ee0f74d72a31fd9b9b6b9b7683cc9d6dcea89d9d64c237d1df8eed267e3a3db93aa2693ef322f83ffc1a035d472e1fc87f331f2c9d3bb6c9799512f4cc7be4f21fd7c7f599e69e240eb694177ef6d3b3f3dd38d3e4e2a56605e3b446476f66c6aecedf1c6b83f334132e67704328fd9cb6a97973ad29d79e3325f125330cf03a91bff9216adb27cf6b768cd6e2e2557ce5da1f8963af235befedb3b4b3113d337c00eafea0f9a67afa10b575841891e8c9bc718bca1b2ceec600d14dd2a1b529e281230ff215519fcdbbabf3473f3563b43e3b6b9afbcfd6835be43bfbfd49ff001bf5d9b83ea9cf19f23b3eb357d71af19e3d7fb12a25f34e8b0cbdab8d15a8f7da3fff8bab07b62bc095bdd63c02e24f947beb7a0f3db869927bedefde3da1cc603fa565e6a566e847fcc94fa7f1ce22fcfba484ae9484de98bd8e69de13c4bc4d074902f3998ef07e9394ab2794f7e7cff48d11fa41fd354ffabab906b34d42fe0e7d214c5cdca77c678d92b530bdb5d75be18319f002924f88c6b528036b5ab93a190b8e7dfd17df25d72d25276d1d035b11688c43a71f75deb97c322fcec9bcb85299b863c433b2ccb565d4c7b36327f7409a1e77409b8bc415489e31da4f834de558c96987c7c3397698e1b976d1de901c8bcfbc59fcf2355012573087cb28f8c2b2aa5fc8d3d297916ed8d169406facb8833dbd45b69e676a14c7ca00d18b78a1bede0eefe01cabcc1cb28e7eca871e3eeb234f4acac0dac2998ddf0f929d159c3bf47ef1064a41f87ce40925f06d2715731c477c43ed9c76338cc12c1f27b7396aff2893ffe7e4ff35f97f4bfe77c8ff07f27f0cff831cf889debddde79feff9e213fd46efdc04f87d47bfd13bb7d1fcf303ad21e02a6e24f3e80dea58fc76ff855102e70e8e9b00ba837e239e047b09f6325cd7eccdd94f45de150e302f186f10c7c2b9a95879c693b6711e35ce5d83391107f56f38cf0033d7f6d32ebd8faee4fb03740fce44abcc77f6c77d67cf9b3e4c44c1b59514b56b0e94d06fafd16027259c6b2f6e8e85bfef58a3512084899f6e993694d0118a13cef1dd183b697aebec1f38ef1d6b74f2307fc37b7006324de8a5410ebc93e4016b367b9d9519c3d097b62dbeeba7e631005cfe32c1670df4a1ff7b63be7bfd18d80fcf1e037b5d74db7552910b24b178d27ee40d369c2770e47edffbd3ca4fcd9c5d073ce64db5b3bafd5f17204b36eddf7ddb0c7dbc9e37743e39567005f9a39eb30fc41f4257102f446e193e3c6385c997343d7902393b0163df4d5acfa2f3355d8441ba2ddad7c3c49f35edd37eee24f316346d5ed1ba759ff18405d3df4de8566cbfe9ef05e760de17efac69e109a3986d03ce1f4bbc50b98fd0cbd913f80872b2d0b392987fc177300f6ee2fa938b2394bc2b114c9ed9bc45438dec83c6690ef1b398be1d1bd14ed047d39c6bc17a707e9a3034dcaca7666f1222b3647ebac85d9d7ffeac856515d8f3cdda1718a765c1fb2717f383d4c4743298f28ead60da1292ca21f4d39aa77471766db7226b83790a9c138816c5c1e651164877905700e7cad91390ccea633e2e2577c87d6acf418d5d0ebc096420987b61672f32274d72a801d396f13357da249816dccc1792c82373fd153718571ba0ab436b9de81ec43c56b9eda4e905cbe5487686f9bcfa580678d1812787103387e6a923fbf181f486c65838d68877887e89ede241478f456dc25ca2fd85cfa2544132c0d5c3633d839f4518b6e541c94c83ee7b447fc16b90f17eab0ed95fbc5f8f59a9cfa9e5a9a0fe1c2243610c912fa1c654057dc44f912e7f7871a16ec5947374c0e824f5f53613c7de84cb5351e75283ae31237244ba3dcbb49e1ec628890053525854a4ded86b833d00f267e55a41f2f59925ea58b93b035c7f498e1251931a9c93677df4a203e03c6d9a7ea27ecd7fd6d7e159062c95c7fea236b77feef34545f4617f18ed7ebb97876fa26b5837e0fdf456cb5dae3d7ff1a3127c519e64ead0ee04fbb968dc37b6139815f0a4bf7aeffd516ec63e17a805bb3c15e053c2b1404447c03ca5d79ee1dfcf912b99a7fd4c0911efd859fccd9392e3cede98f43e92fde513955d946b204da90eff688f99cd5fe47493b883b272103f811a9465e6080967d2fb27fcad3eb907e87b80bf4178cacd13ca113a5bb6929879a70d1d675bdf6ecdc97beeda6ee2c56d1d8ed8998ab94e6c847ac7a683f4246b7372b79bcc07396401f691b6aeb649fcd382d64920fc75936876630fc3fb1c6a794dbd7483e3171fed6cedbe31b6cafdec63b897cc622ffd691e3f867254b6f47a5f48902ecf79150ffdc23cd3e47e7a5db3c44ab330be5dcf338cacfb78bdf56e82f8430267dc06cd9f0134877dd3904fdf17e75b63243535276a8ca4f7aac1695062d7f271be1de42b3b29a129c01eb3ee1f81123940d7906f877396532552602ec97ba56d106c88cfc94bab160bc443256ffb31fece8a7ec72edfc87744fa9da550fbff9a368c29c4a8bbd614f6f2f25460de2299c0e3ed28bcfb9867675d3f9e1c155ced0fa03e9c31f6f9b5fc7ad8a67f0c2c2573aa5a87fc17ed9dffe49fe058ff04f80c7496e6a8ed0064a8d01740364ad0bc6a5672c1722f5a3f1ed7dc65ee69b8562c7dafd859c30268466fae213ad300bb6edbf32e7fa7f448be9179118f74fbb8f3dd02c9d16ee75bb8ed29ef58dd7e2d78274d8edd369c8119edac795f3fc83a74c68264f713db363c0bb687eeb8ebbed80af7389ee4c23e4f9fdd11f98b79968e35f34edd3199431fcb3e6c5f92afd9c7b5af0dd70e6f5e673c206f569d7e5848c6ed9f939dad1c312f0c2ac7da64500fff990df8b4b96a1695afb04ca7d94406837b65e2e231217e53815da1be47df7b7a1decc920474b6f45208937cd6e64aafa5aef3778aae3d1ebd0d6635f717b3d7d86b6a94d0ce719a3b580fc16b02d7c7b2ed4beb7a6fed4f33805362789f2caf77245f292e7803969beed3fd738cfd5e6c5659d535e609f552a5eacd4ac7aea313271dc21c541e22826356a0f702b21eed97cdb8f0f37745f899c9b8c736ad1fff01b9eb5412e197d9fdbb50e57960935d9fdd9660471a5a4c6c637f8286b5c875d16b73837b0c15b8a9c54c6b9d71725722bc4a3bd3bdff83fab325c9905a98f70ae7d501ac62d7a41cf21995b9b3de66d2fd3f882c6c3dea3f9cde81eae0d922c3d6134853aab48ef11203ee64586fa47ebc24f458ee8040fdfdc36f772266f9fe4d7030e5ae89d1251a331429182fb6af1a19f06685f235901c6b94cdf2e4f7c50ffb6edd1ffdab6ad977776ee290668238b34ed831c3a2eb93a8f9023fbea9e655a3abdb4e7b6c6b1c67db61bf9f5a14d46b6fd6e8df77af9d84f1bafa1674d2b57482e9a7d60d730da599b0cdb8692ab974e73f083eaff720cffe1bc336b4af08bb7059e5ffeeaa6eedd456776330ef0057e3b373887d163681be36b8f298eb89c43feac915d354cf73fa6398afb4dfa5779830dc526eab4b9d19b7b3f9de3ba9fffa7fba6338602fd4667eb97ce8c21edf7d5fe9426298e744d93829bfa82c9b1e3f0ff487f7ca04937d11ad47d4f3d61c469961b7a5692b7fbdbf23ffc742e707b36c56a69fac6fa1e7e3a667867cc0f5cea1f696816be630ad89ffb97ed01bdffddbc3df275826d937a03a578e4398c2fe06fdb1d28a1ffb09fb04fe0e7b482f77a909a959b96d7a0e289dfa0d3cfaebfe0c7fcb7e68b43cda6fef5ff6d3e91dce9413d5b7eb0b336dcae35077fb51f89de1a26546e6cda21fabcedd6f1367fe27bcebdc5f7f01a11db626b3ec9b5bf5c236a6f64699b5efbe978b18f98e59729f62bf7d284bd21f3839f69f141ec77ee9109443e003f2ed20f3e424748b816af3865899f8a2baf8eb3e96b83f52bad0b82b1c08e1b8fe3f4481b6d7c73fe4a6b9fb37d7f88effa733b4d6cc4ff48bb0eadfb608937c75a64c12c66c7f51037d6b32ec45f2dffe5bc90effe477bb069ef917fd37b247ff92f65caf6dafbd8f7f7200fafd9f5992ece0ed418f8abfdf44f60a3f3d5cd1ce1511edc9dcc7b2025e9ce5a6039e284ce43873d0f932005acce969ce70962def3ade7cf9a90dfdbf08d7493f903c068639f8d77f6e2e649d3a7fa4557f7f84e2ff91e6b8ac6f7d5e36cf974da7c2cb9ef2c25f324b4c719fae1b3958f6b2e3fd24ffa33ba7f364ebc7747572f013ed2c77ffe7a5f791692d7b3ab27f0893be6a95c0235f4bbb22ffbde57c437bec6311fbbf647e72cca188cb14de2cf36e7efd6afd37606380063fc0decf36378589c5c5cc91c62ccd669e5fe74fe4fe762073eb2967ef218173afeae3db417d6ec5e00f901e8d3a67176fedfe90dec7ae0388af04be77f745e31cfff8cdf3fd309f0d98474f41da217b437fdcfd699ce60180d0b268f861d6be37f99b5f866eb5d7766567dbafecee25b34f604579595f932cf325bfba08dfb8aee2717b7627340d8f924189303b4a6bdb5dfeadc136a0f69d5ec30de8a603cba215e867daf8733ae974d739c51df5a7cf3dc23a337b1c1df9d437ad9adcbf6e20ed8397e3cdba05e8ef9279930ce77d2f4bec3326eb5b336c9320d5aba31c401b4741ea8eb84e3037eaec7e373cafeb87ab3e40434847d5af7d6794ce319928febce1a71404b3f95b7d37f213b75de8158c1714bbfcba0ae50331fad7a55ff86e776e42b445bc79d60b6ce602f467bf6899cd6edf300621513c0f1196caefe98f08ed3bc67ec8b6fc6d2d8aa916ce30dde0b1a1b0ef97fad7562f3117ed8266b076aedc37e1b79cbd6244d6397d43e6aeb3b0f31e13f95b96ab956b395c493a6a0ef68f6e6da1e27f92edf3c63623ca69f7c2322f7c0a7e090da6c1d7911ce820d73ff4fbad6176b634a952b9c4fd1cfce8bff4506ffcfe4e8a6cf142b97b5ffe07b0996add178bdf6785bb4bfc3f5e2d831f07e5adebfd96fb8ee13c43d8b775fa0791aad3e9cd603e5ea0f162b349e9d35fa86be93c2b182e4a7f3e90f9eef633296a2c1c5e213f0653172b3cbd539db1083f48371de3d4bbc0652d8954b4006ffae3fcdde1f165fe3f6fc6c25f1bb39be7983fadceed86983b537f8865f10dafa6e4f76e3fbbfe9073d6f0b3f357307725cb605c441b173dadadbe2377d6be2fd5b734162fdbfe947bab3bbebe8662d19e9e1ec2a33bff39d35baf6cd3b8190c48174e88c2d907f303f7ff30eb58dff2d4d34efe93def995cee1c597993892969cb079426ffc2ee53eb29481607bcf060a070d4bfe2571d9e49e2f1741a23b9a5cffd94bf812ff97fb5cf81df99ac69e1a449e857d497dbe1bb5b3efcb294a4ce8bf9b1bcc4f6938f76d6f4def886ffd36ff4d1d9dfe945e05ba7b64ada57ec6ffe8fe401986f9afba4594ae6d8f3a289bffc5fe6830fb4d981d503487cfca3fd086cbb2487a2357e6cf3fd994e889f85b8d6b66f21c9bd16ffc0b64a4768dbbce1fded22f47b9efd17764d6247dd84be7040fa3a174866d53e6fa98cbb78fa5e9f1fc7ebb367e0b133393bfc1dc737e0797ad8ebe8dae0719c3d327573a6b5e5ea1bcd6f437240bb2d1cc3dc6b2704fc7492eff3bddef7788f13d36d83873ec6f14f0acd73ade782a93559c07cd8e6fd5fd9069efb64933ac6af751674e2ff7eee2fa17ec8ffb65d9c3f5779c28de89cb0a689ffbffab87ada7525c861ba38427bae9fe4b3de7fcaff40269c29570fd1218c9dfafbdafa33dd133f3eabea3cabffbbbefb8279f2f05efc8ffabc09bfa4b8c0f1387ff61d77f377ffc2973cdce93cc4e368169c63f1ce861c98634b67f9bb731d72d79eebc2d3e1ce5e4c9af9feb19c93b812d24398f8ddea61ef4ceafedbf39fb61bfa27e51a54fcdd11a66d5ded6ffd842d3e2d229ecad055cb1648f2457eba0fcb2bd82a0641e2daefffbe9d86af31ebcc034e8e66e11cd77f2bbfd47109ccfa68965b790257809dee2fe9c9d6cb011b33e40ae1d51fac1ff4bb1ffbfcf1fbf539fb9fc6f0a4c1d91b2c38cd1253f7b440fcfdbf8cdd39ed24f11efcd8dfc907da64cbca62142b0cf45c2715873ff4f9f6bcf7f736155f3073caaf344bb97efdb58f93e24681ae1d7983c39ffd9dadb5991e418fd6f9c8ad7e684342fd457ab9a59cfe951d897dff07be2636dedeb543c48fc9b77fb44ed7c0dedc77d686c4a96d781fc9bca9ff6359d6d64b636516c152009e97b9db56eee772654c046d3aa7f544189b65923c1b5ff74cdaeb318bf5b95a199357e37e1377a0f32649cbe73b19be1a55fe5b359f7c53977f1b551efd452c41f6b4ff4fda2278f1ec5940f4ad8da8eaa551634f36fa7ce6ea5ca4726fbfe588ff97367482813d99033ea77184f8557c3ef11f956bb9d99764de57665ec72642be8695c49a4d793bcec7c47226c6b470c73c8d4d8b6ca3606c8d386750b3b1efa245676c8ee48ff92069ef67744bcfdd073d8e7c5b42d7f726774174b3b1a6c7ddf8f050f3ca8846a93750a68eb538b7ebb2b5b0d012b5920b5c6715d74bf5a1a620ac05e077f6d56b5a725d9ac92e74fd9ee9127b9dd6562a5f9bf58c319db358a877deb3f511c9d75d9fdda8bc69d22177c7e54093e6b9372e436d36cf03bd14345c4fc5d02439ff1a979fda649b6952de6e7396cc10edfab3b9f82528c94e9a0a3b4bac96a993b7fc8cc7eca6cd708ee6ce2a114dbeecc665ede35da6eb9c9c952f4105f9b685278c708eed6776d4246c2bda4849e1127bbe7fcf724de2c39d553f176a33428fc4b6b43ccd732a2318d8d7f812901cf0752ac65f46266812f8ddc6e47c78f9d2cbd63ed2b1fdf8c5d3cbdbcedabe6c2b261ff8338b485ed61ce9d5cbd381e47b619a5cc6f31c30398d6cbad7cbedca823d5de3196ed037ec8f25a24dffcebfee8dfcdc3bbf13c00f7ec013de55f1f7f5baf88d174c3971c7179cfd672c7542a7a6a8ea714edef98ece9b1a3bfae854f79360c3033e3cce0598c0b821466d7a77ed392b2740ed0c9cf75b36b8fcf72656fe0ffa5a4b77a0be4f537afbb31e79fa5ee70c048ad7d3eed7b73a63ab4d4417dbded8e2563f7b62f5fb7d74b59db2d59fe6bef2cc0fd73b8e3fbf87ed80edbe36b1184ffad8e4b6ccb0afd9e73757b65df9c4d333bf5b4347d4ff8e46d9b37dbe32de5f8dcf5261b0a3e70ccefe62b54d3c63cabdea66b1a8ebd36c79916943476d6c8fe584694367daf8586d37de36e1f2cd91572c6e7269e6460cb4892cd2b55fd35ae412a6799c8fc9cc47ec8a4baeae953656f512daa398d3eb132faae33847bc00f1ae1eecf351a7d6436b8eeafa28937e2c7b759c78c11463877ef75ceb1b8f756f9a5ac1b836465d1b82c1f66e7fd766d7b1ff1916a3d535f8b13acbfbe4792a53bfc8d1227625c8b1fa567758464361a1df7ea41b2c23f9e858d310f011be799efa8696c749fe44e67f91532547e709c63ce997f197d1b0447deb93e197c7f90d709c9ec8db6c9fe79fefb76e2e6d5bb66f7f737edce2bce613e02c8e5c1bf2ee48dc9b29b8507f0d8d6174c5796dc0cb041a37bc8c14ce1bbc33ef84a12725270fc6cde20d601ef7100309cfd5180addd8e99739606f00065524dfdf310ecf63cc36430bf3dbfc93ed4f133bdcacd57b5f1b8d9e7b3c97ccfbcd7ca13526efb92c964f84e787e493929c203606bfef7e5039f63b9abf069fe759dcfcf11c054298059279f7013f9d99033606fe781e2d8d78d4f4bd5f4f61e984c6ff3ed31bd8b9eaf81d69fcd28b7cea62effc21def978be317da4310becfcf7dda77ebf97f9f8f610b74ceba542ce11c5d77a888f26fa014b4ba44e979b4e8b9d55a26f47ba64e6416a728846e5c92809ac6d2e4fc2c49bb94920254747bf1d7c617af12bfeeea2b3356ada61fac1625291f8cfa0a6eb36ce55ab56d8cbdc700826200fb57f5c0bf58fc91d61e787cd3d3b9e1becb8ef72d45acf7572949e3cd78acb35ce11f90debdde0b99c23c47f3d82f556db010cd84f2f30ffc407ac593876157da3c15ca9e34811ad9218d4167f78d12c1ca30a73407482652433fb9dc9b16ad11193df86afd7b96954ce24ed3ccd59c37be169dedcb0db6e4f3e16a15d6ab3247988881ea3dbf31c2b328ea7795ee34ebb0f7983641fa7108b983b76ccda68e0dd9ef8589697f6c6e22e8f931bc62c62634319acf6369d3d8d55253ca67d1f6aa6c7bdf7022929403e656413f816e2e3d6b4221859fdb180782e3bfc8ee50bf168095801bdf18b60cb064cfac76f74cf8fde78a6d69c3c8b53c23152571c2305676c88def9b2f86b80cfe73fc64a6179e4677150cba88517d9dfb6bd283c414472e5c545f2408dbbf86d6cd38b7cdcde949eb1b69ed39f3fc7dacd310d3fbb1ff7dea7711edd38251873bac80390a798f8f287f1d7b111551d1b05f824882f512cb06dc1c6513e8c95c431e1b57f6b7e3fd210c433b13241e7fed193921ba1a1b88f866a19272238b58f6dd43123ed67be3b237bcfe81263d575e5e0f7bc270e91d93725fdfecbfcfe9e93f7e06f929783f4e61c8d93e07e103983af317b349be851680d22aed4c6efc55cbf1de4f17bf76ff4ef208fe199928c136c6c18bb82e02544980776e6898d7568f9d340e6ad5a180e7f8cf7a598aadff2983fc4462c2319f608b5935199fcd1c744f7c2837f889e518fbe1dc083a8f701cc07a3d33fd27e1317dff411d125c1c7c55872e80c6fecdad8a6105475def66cdeda87c4a67c61e459d4d7e7f15acfef57b5fe30be75629cfaaeb5e29e9edf6ff0390073fbab526e3b6b5bcb6d1857741bedf5d26bdbe7f9d72f2111f77a57ceaeedd524efe11c3969193a42deb1ad24896617af3b9b179ffa0b2896d7f13d69d9a0befd3eeb1fc0b56996c7a968eba3cab536bc236c7beb3832f692cbca98bc7ac7e7fe944efdb484d8c1d95a50d1d7a0c8f63617415d672966f2400ace1a28c1ca6ad7cc22366e34ffed78af236027e43b8cbdd3ce336ded3b128bd473a6537d92e86651606f38e67a97ff916ffc74bfff2c068aeef33fc6d71ccf1cf0adefec91c7f385d83c1e63451eefc54c1c43b43cca378a09ac917c9d6524f388c63bd70bbc5f1a1f3c9a1f22930e77fa03ffaccf1db095eb9def46bd986818075967ce94340cbfe03d6c5be98dcbc23ca21b6bf132d76fbdb112cb482e169f266074a1f5f504f1a6d98b816b9970ee6a467cc3186037064fe469ec4147defffeb9a63df3e2125b219cf54fb0d69a767ff63ca1e1d8b1176724f304b34d026b9ae482f6b9081a7aeec4061ecfb7164f7bf4dfd5fc8be076f6f9db1a1f38e555d17cb434e2b67d1f7c707e932f449fc5f942893b56fec89f9a9a4ae07380be6e674ae2a6c9d0b5e74ffd7a4c1d4fd18bf248d3e5df6e6dc7ede74baa1ee7c18ccbb459017f776abef6d5447da8f15ed75ceeaddfa504a4365da69d1afb71ed63bcf319f52d3a069fd01aa99dbab0574d9a644b61e4793c27fa03a646e46c8df4e99eba9a73d18bcaa736dabd5e828fd895981acfadda6f7ca71615a9434b6ca9de403ecbc70c7250910ea2921a965f034c53cba883f3ccca26c6a39ccfdab65ccb4c9ecab4c2e288f1c67aec4a36d7ae1736c6b15f7244eb7f15f8d9cff37dafc7ddb100af689ecd231c8bba656d42352efbc3fbd857f4c2c84ccd9c547dbc8fc57eef8d1b7d9153910f66a0d7219da7c0fbbf65f3f9c1f38aa8b6ea951ea2653d4766dc1a6f575761ed088633da7cc64fcee5f772714c26cbb6ddaacb37baedd4f610ca33daf6cd89b0dcae478f710a7f6cb7d859eba2e1ad9dd882567ffbe686d4aaf9cce8f5c41dcb99962eee7e15be7e47b76b6e319d6f9dd173da9d26ce3d4c167ddfad7d0fecb71a7b4ff31d05db42600f34f719fd95ecaf7e5b91769479247b11fe12d3bd6f109e46eadad53c6e6f603eb549dfc4af01aec9fc88cf06f54c9b7ad84c4d7e270a13554f6a3ff34e273c6d0bd8a5b6632bad3688bf19f13b7167afcfc1f816c9519168d2f0978c6d1d29a60982d35b01ee66b59fddc2f92727ae00cb6d02f876fea97cf34e66ee7d72a27f7c8b5c49bc04d202b0d3972739437c16f507f1c5b5303deea46de7b7f9b69f16015363fdbab2179e6372d97e763b7b77fe6e09d36055d7673415cffec84d615a35b5a5cb0a9d2baa347adb630c615c2bf188fa2a674ae4a07646c138bcaa7a0cb5c1694dfa959d70aa84b161026b9ba97a79ddebe5c3fcfd703d5a7d6ccf3953ff90c1eedbcf4aa81f694a612293fad5ed5a8eef914631e2c721a7211e84f70abd966863e5204bc95d96ea5a93119a0fd9022c55cabbc395519f83a9c2e483cb0687d604cef0fdec56c714c804bf10d7a0dc9c5d9dd470d53ff019af430dd4037ebe247dd824fe4c491c61cab9d61aea66a331a802ad0b99470eeabf94887ba390bc8aa5d5db431ebc260d733fea9cfff7825b6d6fe7604c6278705dee8e4cb009107dbb7a7947b403b16264bfc8d65bc6d472e73de9866b83a662e68edf6f38cfbed94f98be8b3a3683d0d3959535b4d95af42a3c87aa51d7dbddabd2365b0ed07c87c9cada5e00335c3f64f4196f5c1e35c911291622916352b553671fae4bc354890e914cf12471df458c0149fb3ba2f1505cadafa6dbdc392537a7ae71b6416713e76e95912f4d2906730f2fe96f8ba99d8f64ce8b1c014ef8cdb5d62f7e354abda88cbeec8fd01fcc5fbc136e57b6cdb7fd4c79db4bdb9aefad3e03449f2183154cea9e9af08edbd4b9ff7f2bc347341b93b17bf32987e6345f5950bb5777ad60fa357b3f237eebd89b503b616c6f551f255f927944eba0eab4466ebdb6e19cacc3ee93bf6b296096d7b23195e5833195ddb35c9b2d383f217311c9912a6c73cc27cd78991e72374d124f5abf78b8f62c330fbcf838a6c94d899cc8d31b5c63445bce9dbfb8b67fd8a6e6696387377536bf34b8ec238c693c8e2fae1d264e85d62bcebe307d34746d4cf01c46a3a62691fe386e17c65d63c393fde19098403955a2695ae748f5cc9bffc953f91dce2dc4f31c3ee76c9dd40cb63fdef6b3f70b9da386ae272539874e6ddeb945fbfe68ddcd40c5f59a437750beb950df1a68ec618cfe787473c99ac0dead9adffb5979d34ecd9a91fb4c0dff669f039f4bdf311e33aec79ba815e5ada36b30fe08e519ad690c18fa891f7d44aeb508037b91c833e091d7c0dedc027b7df0d3e9c515b6879d3d3f402cf83d3f801d228538c38b5b7d705ef5712058cfb856ef98ed1be195b387f9698d09cf5398d27869aaf70447fe46cf396d16a37153dd0c3d2f207a43f3f145b0bc83242f6d039d9909c6ed3eb9de3ce1106d8eacbb02b41924f9bd7e86e7dff6e31a9356b0ee8b603fbb815c00cfe1b396de1fb1f7bf4cb89fb1f450d7083ed17acbeb5ab775aab29917e34ce415bc06ee67166b929bb956192fd305ea3bd987b836203993254f12d17979446351f532dd5966ee4ef8f0eb332367909b7bc29453a58537e791be8ae7ceb092cbf2f44e6504d22773e1d887977a4e3b7b9dd45abe30f8f8887f317b11cee37aad3cbc26c5cadefe72f5d1dd97ca2c181faef66cfe5babe2972fc0d41593655224b65ea65a0a71278ba63d27f51ade92cc114f35de1fce39c62e39589945a04d493c33c4bc969f2b5d8eb4c950948d49ae1bdc6dc9c56f4cbbafbaded82a7748af66f6bd67168a8de49d716b9cd9921b8ac6a97cb3abf037a547552f07344e7b57cf619c1b15a9b98dfb1baeacfce24b2e5977f177836fb37d61dfdbd6efe517520f21d326f3df2b3d5456c7f75f72f40ebe6b552f7eb37b87a94b9d6aa706eb59899cd08d460d6ebe1e0eb4e93c5b09d0af17371ad17a1153ef64164ae42e577734e7fca0c1d07752bb0a07689fa986f878969e02748eb5ced380477bb1757ebe60f923eb79dfcf9bb9c956adb3299e37677e3aac6b446c073cae2b3f7dcfcd7139e9c6ae31f441ed3388d6a04e0a13ef5741bc9f80691cd76958783ee61589facd3e46f2d8e33ea6724876d9db7c5bee2272891b8d68dd893a56519bca22d4623812fe77c2b51c109f320cbefeadc27e79a8e3807893beb29ccb43ed8d0ac9cece85a9739a817ca81339743281efee25b390a31cf5ad5bfbf3977c2a7d7bbcc53467140bd4a7b5c12fa8dcb7013b3fadc1af7ca963f9f72eca23553f442a37f92d47f12f658cf68e8365c7ad0b7ccd307809f1affdacd4559b4fbcd92291271c39a7bb635c20febc58997286e5c7add8e185681f663e370a0d90fb9cb4250347238c135f3dc8c268be7bdf939fbce71a7ca84dd6e7e6acaaebdc229936dce8e176656d916eb470eccd594b112f162b75bace509be638fe566627df2d76d610cf17e2bd5672d9cfca14f67b9a1c83099f799193bae8fcb2f07d15e9379d361cfb80db48d133d361a78df06bccb6311daa8fba02acf1fac8ff597e8ee4dfae9e9f0dbb7c932374d6937a2431c7ecdf91c8e88f94aea1be30d2d7fcd90174354377523945343911575beed73a62e4226bfbd2faad2bb72fac132e94c85dac88ed11e2682d1e7257756bb4ded961e2cde66755cfa0ef72cadf49fbe83c237f831c306678b308cf21597dcbfd728d73e91af37f109f861a3515fdae836bdc3c6ba3a9f9b15809db1775fa8ef4394c1fc987a226efd7b971b881ae1b6d011f0dcd813a919933834fb4fbe4361fc7f9fac4133ed1d4eda167997984f3cf45e79f2a6cb1ec4ae21151bb961ebfba567977ed22f506f219f3d0ad68b5cfea7fb46979574fa5ef57f955d5cb19e2a19b7b6932bc73c6c44a972bd3f4363c57eb854b216ee7a2f045691ba245cf4a5f8f5f1a3975f25b4edf41bef4529193a5c981e8ff070623ef80f56e390399e4f31dcda7c5d479e9f05bfeb9ee97382dda055b90e934fa1cad2774cc2c2dcdae3b6b7846e7aedaa7074524ff8beaf6d383f815b5eb06589f3d67667260cf3ca7ad8f29952bc867392a1c38732b39c77f4f99bf15f47726473d67ec8cd207d61df1beaf6b4475cebb395d437bb5adf99acde8edf6de6a62b4f54f9e6deb971b8d98da34457dcfd64b0dd18c7e2f658666b48666dee3aeceab4f0bcdd6197d10eb4df1b7e77023bff4d5bbfaa520fdd538c77dfa2ecb97f61d3b455b9e029e7971ef3deb48da7ae485ed75a9cf92bb3851c7f10b9509f039ac5c59f9459eadcf2ed1f1653d04bd5496920bf5277a827308dae7089a470e6c345c7c76f5f8974a742d7bf051ed6c370ca4adf8252c46604311c48aa9312bee75e2bbaad789bbd5ba5a6ade5d7bb3f5b8ba4ed159d5e3177fb63ecbf1e440fc1d07cf36efc1f8e3ecd86e82f62f7c43877cc2c44fcd8b236ca186da57fa26ae49ce532089d85634c8aee81ca5e3db0e36155ad3ae4c578ff744ec8b2768efe20865e2d872cbe6a6b2fcad2f87412fa1de8933882f751c2b9c0fe505d1ad77ecce497141b40bedf0c5c5367801ea477ebe33f546daf6f095f19e07e311ce79b2c3da67b6b20b519bad317f9c6c323775c935fc3e8cc71a4d698d44bf0a136d3cb9a97a997c9bff55d771d920799c5dfb57a48b81cd73bbc9209f449fdc34697b71ec0f243326ee24416731a961cc85739bcb5442177bbd7cf1aa51e5da8b24986eae757eca83dfaf9b93b2c85d6b5aa9e3da87f0dc87383e10fbc042d4663867da4fb7623717b33bd7cc182f2c5d5b830d922dbfcd8df9d2438ed024eb9f7bf826b6cd225900fa04e768f029627b660a7b6fed472107b4d3f189a855dee9f3c2f3124efc1a34be4790a55a799b193ac3899da8932f93148126e1b868c4b73a7376f7efdd35019ae048bf7224bffa69c0137a071e330719b0b167aa0cbff78ed89ea7cd6471fe59542b4ab7b4af55a353fb4cfc0fce77657dcca057e5de9dbf58d4866e22fed7c8e95ee5a4aaf4267a49b150256a674f02552fe95e43f2d655895c4a5f779f57784fda9e77b5effe2ddb5b66ee0bdb03ae57d48cabef3d5cffad4ce06c65ce6ca0d701a10dcce344e03583c5bd9e6bdc461fe62d9dbb079ba24bec896cfc01d91b741e8bb951c07bd64009baf1042487ec42f7e6e3330bcf8bf05cd8067fd1a4219947a40f6c8ebbf1e18a73d243df1de7597f8cd95ba644ee85da38c05ef6c03f4767c75eac7748be35de33f80eb18dd27986bea5c4b6357d368e5b48786a65b7fc9c4eda7386b5f7b830ac73e8bca81537c6ec09e8d3c56df12ab4ef9bb5de5521a71a22573f3bdd5c09f63c1937d8ade0194c3fe4b9895b7902affa02e6bfcbe4ed1c8ce35439113e0efb77146f4ecad533890c51019fa07c75ec5523c046d14f8bab77e47b6a6691d83b2c2b8d3de82b5b938a791f74d8f2c2b6db7b963ec4ce306debedf7904cb1d74b6f2bbde51be92d37d03feb2ddfa66ff9da7acb77e95bbe49c5e0db738993cf5fe95b1e8c710c0d3aff891f0bf614f93b5f3fe6afd778d894ff6913a52fa7fabeb27b73ad9f3d4f73b05bed7f6d219ee146f253dbfde9e4667f3dbf47f400f7bab20b7ce6766a55aa76c1d5bce884ce544ccf5077ec64deb09deec0fa5af1b38978f3d34470ec4da29d6a7c3b249f194fbe43f32a1fde67dafe8dbebb12b6359f0bc6a3936b8d121fed7393f60d683a5b9e0e88c67fd5f284c1b76938c2f2aad6ec87de676bfac2ede6c1387e693f87db0199a7192bef437d62b367bc4ddc91679b9c6329b9bb45673a0ff98eea38be04f607d844e9de566d5ed4a6095a278851f424f1b8bb3fcc617326306755f0293eae09e42e89b9272c7e2fe93c3cb9bfd2276130c67c006ad941dd5a744e29a19326e9d7e35afe6d3f780f30a195cc3dc52fbdbcf4e19b5c28db6b22ab25a22691761a7c9cffa65fadf6ce7d670bac4760d5e7011a8328eb538ec8c819d07d9dff3bda625c8fa7f27077ecaf1d1b1cc8096ceeaf8978928ee4919eeb0617d1dab47214e79d71271a8b2794602c0f75ac404c1b89db09496d43a69d89b8b2376ffb71d8f7be18d43274226ab38fd04b47999706532f9d461ef86c9fe68753d94944dfa4f631960e7c697af1d0d9c49917d837d6ba975e7a9eebae09ef0b66b5ed69efb91cef5e77d6fa80e371d6bf7a68e1699b7d7d0cec45e2278ff3d3dd6f5fa97885ba06ff4d1f217713f1b38d350a9db44cdccf5ebaee79aeb3e76648df56768fcffd0ffbeef4accdde3ec27c5b8ff3d35debc81b8406b307ff135a745271b865f6db1ffafab40fddf546b4dbea57836f40639bf29d5e5e57d6b4720754ef2ec31ede01fb60d9d49abef6d49abe35b5a63fc2a5b008411f31b2cc8dc2bd2a89483f677cc61fa135588b1e9fdf6c13fb89822abc82ed8fda819ef4a3b327b28e7efcea1fb9b377e4495ba3a126c5a2178d46da647bf623f06b87dae920fa519c6ff4305381e74d2e5f065febff5a6a163b7b7d964f1f215ac39d650e7c49ac82b19ced2da572ade9ef7a8cc70c621d7ad6eae658a34b8bfe189b6d1d0f65c1dc2019e08a74326dac0c316f5ca74aa48c1a3e399d826c3abb9d1db3e06c881dfa417fedae8d62748573483f44419a24c1e0e3ea438c722da3a37e8fbbe71e2b9b53dad1a449eedf5bfa751ef4c85e481ff48ec5ff324ff7404838246b337a63f6d5d0d900ed3b1cdfc59d77067f6fd67f22ee74bcfe5e05ebcf6ba7c3ef95f596a16b8e4eafc5bf57d6a48ed9702d3e0bc68708d19c3c7333d70e6ede40e1e428ce96c2030d542b6b9bcb27eccf51a5a1087a115d3f6b84d76f26c3fa056671b1f51c6890cc47e25909a78e959b6321fec6ac0be35725cf5e3c2c1f9ce553ab5f39d5e1dd34e1faea0463bbce90eadf27d7de483b7b6335f482d799c4acd1f5ae7ae58908f3f69535bcc0d9a297155e67fe02ff47bdb409ef74e633ff7e5c3d7aae1424c1c4cd8269f35cdf78111fd9e848c7ebf847b19c23227eb9b2c959d7d8ecfe409b4efaa373aeb6a30d731ffbb9f78846597bd17240edb4c35895e2da8e43f861b5b2114dbb886e2e5f9f13e66fb9f9db60ae1b72c6e44e70cb2abcacec623807acbd43a9cde212f02d8d49fef529235d70388fcad1fc88eec7d55e8f2fc11daddfa1d2d0ba7e4e722f1a9d618d0db9407c745efbae91ae9320f98dab6d80fd7a484662235768fcfbd92d0cc6a3046a3aeb07d4df0bec8fd99ad6354172ccd81b1cced4e7eee8e59d7e83e4429e55bde4e9358abfae8eb1adc93578e0952b61fb321fdfc29dbd583adbe1d987fd3fa5fe6f1ed1857f1fde94c8e557c777f6de453bf9889fd4efa27940cf7bd16800cfa6c3cbee7378637c354003cb7422aa12fe6758536e3706dff6599dcd8b799425aa2ea2b67375b66d7ea7874c35463dfa031f7e4db3ab27707d3258e1d8e18e7c335bf5c886489e01b9c6e8d34df8cc4ba0ed170778fef0e56b707841fd74f4331aef70ae17400baa1e5f119d2c119fb426ffa812a287c96fa08728ceb4bb22ee6d5e04bbb920165b1c3ff75dcdf147fd1c784ead9b30bc67fd1a7cf215f4372a93952d63df7e73ae4d31ef7761cd95c8e5569f7cb2aac20b3346b4d72fcc7c8aae1ebf3ce30dc1e70dc90cf5fcae842133973cb78cb767179d1ba7969c9c2ae9f6ffa1bd523f0b7c06ec8443f26ec29cb3885f90f5fbf7f263d3af8cd857a02e9fee58a393ab87af1ec4c06d44241336fdf85f74da7a0e5f084db26b7efe12202e8fdbeb09e6d3535227f039afaef5568819efa10d24c3f911e2c5c3dcbbf3151e23973b0617ceb1ff965ce35b3a10c84ae89931c87a9c6a889795bd7e092abceef89c1e618ca871d9e07b31754456c256f421d762c4d4a741b24f9c2d5312eb66af2f7e6a5e5cc9ac5c6bb36e9ea3e7cca87201fb4549dc69d3b6aab7f209f0f9d9d1e39831649a3404d9c23b8e2a9637f811cb0b86d96a26b37bbf62f7ba179521e2c11b3d84181a0f7c06228d490f57906300713d89763a64e4d9443bc5594fbc0c8b8b56ef6fffce67da6c2b7a5599afac6113973d20b4f0790ee76390332f480f958d77ac9f429c369221b2d7afcf73e18d455e8da01f855f8d86aa5ea0bff32f83bd17a37b237c2f119b38b4d12bd679cd98e0d3a1b9c5df267c6a990e899e94d4bceb8136115f6aebc35d9da3b51ff1383a76c8b47f1f80fdb391c758bcb9f63c8f27c097a89ce15aeb5fc083094fa1fb81ca2baeb586f85d2c878d8660eb91a68897a3f31ced23a4ef24e4fee8518f80f622b50a13429389fbf916c9680e21a74cced44a3ef4e90f7fd22f54c2a7f67ad9e8298fbafe533b2e9a2f442ffe11ed8932835858e90de25e1b7e700883471d02d12a3a2b88bc0ab2cb65a54f4a552f91fe007384f6843a93517b99369e5e900cc0c4cfb36d5d187ae7c81abcfaf792395bf9b7fd6cfeffd8b31aeda77ebb88785de993db12681a9f517e5566347ea85e133d81381cf0178da757224f1d21bfdc2a575eec863bab4c5ccc1bd07998f4f1953ad61cf33ba49f4dd5d9f6f2057a4b98d4b463a36b6548e6093fa3b79e19c1337afd4cb89fb1fd069a61f5d0ac893140b29773dee9240678acb474d7b62e1666edd8a43fe90d71e35f970856dff10f74067e73f26c82faddf63d81def0c44e88f4bf3fea727fdc238c0e2798dc1a6a25625be033fde687fa343c6bc3b9c7e8819fc59f6477a8ff83fa80f441aa9f18a81dd827759c4911d81bf8d6a6155b82e5f1f918ec198dbfbdc1cce0b414e375a0feae537108b8a0743d080e0bba86f4193c7714b784f1179d8ae1320a334d0f935a9ffb045ff853dbe532dd662ac80d87521d609d4ad5df2a6d16bfa8d25be1eae7b38fe45bbda8906e0432f08917f73697e318a1b6fdb42543fd977ae4e71b5d63666f84af706ea1711fdfd17978abcfafe354ece1b599c7c4c8431d8627bea4165d43cdaa45e80861b2b2907c508ada0c703bbb63c7bce4b38f5f83fc0331418e955c5c5b7e65f3f35bdfb0dbbf91ece31a627f7c8775b8e03d2216fecce45c8bf80475ec136ef97fc17655f39f76cec86c0ded6c1bdf26c9e1817c3a91a131921f9f255abac8013b694aea0e229ed46007179e64a6c0bf3ad701f36c067ca0c68972f5d1d103bc948d4ceb0e7ad181c527020c5255e72f98a710fce206af27dbdbdc5935b2d71a6f8a697f6e73d95e2f69dfbf8f5fc23544ceaa3ec2cfcfb89cead65d5b725706c2711487acde9f332e77ed10b0af9fd8a17b62d4b08cdf7bee1319a7893151122fdd247e6ac61bf21dc427fc23fffaf5397901f9e87352046324378a89363b544b90890e9566afd1397775f572343740d71dcd75740ec699266cf32f43c6ef1b327a7f84dedf33e7801f8d06480ffdfa940b1ff4e4b2d2d28308fc2242fa495c6a3345d4668f7dfcc35c909cdf4306fb065fa36b796ecea2118c713e86fedf606ca735f4dbd5cb01fa1bd129d2c9977c72d530566de51abceb5523a81de1da726e596fd8272a94574728969eb049fc3b3cd3f887abb2fe1d58a3939f4ea39de58e8c548c01eb9cb6d1f2ab92d86ceb4dfc12203ff1c514861717f220c3579a6b29e3bccd4893948cd87da650f7fff31ce167e5dcb1cadc1b04e31d3923701eec34f72471b0154c0ef2f1eea04fdc5d7bc301ef04cc5fa6fdd9220966d0feb6a92f80f17fb16e50d72990bcb8a93f8eafc911fddea6fdbd8e6f1e72713358734b14dc6d336e3f350b6fe0269ba7e3a77d5120075666ea206cd2d1b2a9538eafb5eed3b11aef79c7dfff221b1fe82cb83b80e5bb382f93e0427265cf5f02c9bb8b94fabe1c95119de7baddd3e2e8a753ce110ef53cacd3e4e236f3407268e81cfbd0179fce553dcfadefd46b6536f57ae8daa336ff347efc4d2e687df3c9f82bd702dc61a3350fa7d63a3d9b8f84d2a32f2c2a1c4f2637358662f7623475e7f1b588bdcfd2188973a171c850772f1197bc79d5d22917cc64d1b4dec81e294d883fc5fdfe08669b6a659ad74e9f492c75707dc44a6fc501e4de913b079ffc589d411c6ea6eaedf3d88b9c5436e7672f8a5325999fbd24bfd11cd0953502dfdd92dae3ace12f2f1aed9d4152b9964f72dcf2b37fe4abfd0cb0cb52e5245f9c01bc5f69e962a4211e38d854de203ea3f558d985486dbb3b03f14b25018c317b8e7868e55a804d78dfcf4aefff73f72eed8932dbdff007da8306d44486092a28a0286766022a082809a8c0a77faf5ac5a140d3ddf7bef73b78fe83be3a0814755ce7f55b9696dfc0afd37d13fc265e3839231db6c1c4e8ecf87356314f9d6d0eaec7c92a5c508837d926cebf91f839927f0329298283c9d2f5fce078fb64fa6b99f8e5dec4789560dfb85099ad4e32db8aefbe85f4f67967f3b196ec366ceb99dc957285f431c6c6785fe4fbad1dc80b6b0c04417e859df0ca0618281a1d2b8cfe46e63db96716ec7b92a0bfb023d0ef1d1eaa5182bd2331024788de90beec8e3ea9bad64820f19ddc5fc7f806444c52b6b7d614c4485de43793a632db9ca448d6f7aa1472de6db39153a30cf6b0960698d62ca647d8772d1d793b8ca8cce51713776450b50d2d23e612ef29ae881c6b4d79093bc136a279e6262cb5379dd4663086b347c432a0f3dfd9bcae85a352b4cc159d5decbc88d78d9d691007e19527a063af6c88621de3f1223e8078ef877803248fbc88e3e8de7ba197ff26a664f0bdedb34e11653fc713a495c821de39ff39e600bddfca0319fe9e5a04641c17bc3f9419cae8553c17fa5ed13e4fdeebda2462b6e2a7b6ba382467b2b9c857b0f1bc8e954aa51a8385182f693b0f9a983ad2deb249e6750ca0d1cebf24603be94e0deafd40a50a33af6d6dd7a2b34fa62311d1007e7113553bc1cf639b89a8b1eddf583ffbf1d909f1ec6473fe64257e71db9b7450d7157ab7474659632eb9965a14be69d08e96ba968564f345b56d31b576b5fc760d648b7aaf69c1199d771f8dcf8ca1862e919bf0144f067d7c8a096b9f1fdaf953f78cce786b5b06ff029ad3d6cf6021bea13fcd31b6491171a08bdc6f71551a3ec5cf9fe8a5a3a2b312537a472bae2e17bd2f5fc4fa826d849b542e43c7e2624bc69e082ee4fd020ecdcde783d8c5f96b108f7a5403d76ee232619f7674d1521f4fb5b25a5bca02e2eaef908b6250ef7e9b7fd29edf6495b431a748c782387137d922be9b0d7800c62862f4db13cd833319b5b83a8efa83ed45cb077636276de507a4a7f1adef02f1e911f6cd1663f051635b73e0f05b344799a3423ee575d9f04a01f8f564193ecf87a3d6f6b8243e630cf409d01d9ccb83edcb8336efb6b9adf151756ceb9b2f6ecebcb391b93c1b38dc126a2e4980c1887ec3fc03638c2eb35e0c36ee47ddfe0ed7a610965dfbdc09f0ae20b7b2abe37457f4e515f12647ede9a4774fc0e36865052e7a77cb490cb94da63ecca78abbe782bba84e4adf1c5f458bbaba657fbe442b87585fdb5a515b7392ba265e630db03b4fa92400962ce2d760f3b6217609cf7dbd4677b015e067c25a26417fa7649d197f463d36a3ed744fe041f85c97bbe29ee9d41cedfc0dda6fccf8babc34eb5bdc448b2e91fc45ca658a91fbe47a76cf438d36c4f7d19ca7b84e5651b8152dd471e7943b82f8cef76d18146e59bcefcd4953b34a835cdac4fbc9ae16e21cbb152bf171a5d772cc3fb0c141ff0f169539bc51f9c2ea7e3007b17b7fc8b722df3b825eb1887e1b1f8cfb907a74bd665cf48bb411d7f4b88b356ad67191fb104f5ee7550cd684cca76865a4dfda15aac627322165aa2be9cf43b4d2e7d9c7eb7db8edc66eb4360d92973436efb67d88ebe17af34f7e1bf6b32f601ed6d2ad859ffa7cb0fa6dece7f3bac65dde20e4e8b47984061353fb791c61ba5e5c1c6bd7dedb5ee27ff39de7b6389c5bf79a27ffc1eed6f3af07814775b544b09d65cd4a7ca7bbfc933d4bc8d5b7bdb55ea23d8be896579e20a67cc0a3fec9791abcbb43b24b04b9443c7b77fffbb9cd1d6b7571d45ede50a30bf3904bf1efdaa7dd848ebdc4c7f9279d8fe8ee5e76c11ee938e77fb25ec47b0da6a280642196762fcf31d6900b57fb74c95c4bdce7e286f809b17e9977a66f52c23e6afcec6ead0d19e75ec5f215cb1ea06f53752e2cf03ae08d73429e8ca0e675cda31a9d3c563b19eb04796da4cea858dbcc0d9f641938bf208f0dfd0a205be8482f49fd05412be698b77a615112b6db92c052c67a32c67eeced5bac574f439b59dcfc64512dcf69bf0da2ae23ec4b7e51fa3f8dfbd2e4f72c1b59ac2717d4eb16a2678f1695f9e62447ba88ff643befe599f67d1a3fcf3bf5e3bc0bdbe7391bcecd85c2b4b8ee6bdb37ec2b6525bedd273f9ee30392bf9ecf472be3000d83dcbc3ff84af931db97938a12724f5ffb119b186faa89efeed6695563e900bf20ce69871d09f6826a982b384e0f848ce3611c903b8e0798b3f22c0f14a1f3396e987987472dc8acbfc8030bc70e35f881b7bdd9dace68c01319c9b53d6e923a5c9181ac07382b35bf9aaf26aab9bdfa6af4be3772da82389d07b6cb70adacf5cb6d30ae843c7679fdcde58a2f8f616f9bcb9a15b5f4a694a80f38174f31c7991736cfcba9a8a1bd5e638894310b5826ea27608fdaa3e8066b159ed225bf0edc04b0eeaeb639895c5e3f1172e9c947bc90473229c4e1ae761c60a4977b7345fbbc1e8a161d4bc92272b8a01435024b8097d15c9e157e4acca54c607bdbac4be7674b2dae8a69832c2cf15bd60927788ccca9ee63108916cd429c9f70baf6d73a4add32a0485d0be9631067ca776b6c6bb4bb4ca09e6dd5e2eb5b7268a94505985715923d5bfc828ac06ba11573e17a3495b933baf71d7364f89bd109e991c92a995e5daea0458bc6dfab684cdff9b6ee22f860a4c4495d6187ceed93fed3d20133767d0eed9b536a01b6c08fb566213f524ae24ae71765edc7fa65937c504b295277033d88ff19ebbd9fcbb3bdd94c90bafcae74901ea24ec017210a79834fde6073fcb3767fae611ae3388a768eb9830e32183a5f57a8e30c799ffdf11cad6d438f7b7a32c8a5a08b4759c737b12d62153a4ddc4da068f4adfe1bdec7313e41731fe8a6c7433c0fc4f2410c14c4088c9bd8a86475d9d67f472c6e0fdb658e4251c7ba04385606624bb6356d003d0cfc3662fb5baf766ba21859d8c58442fdf026760feabe3ddb0d97d9f2479b22baf76c37849a093fe482d598db3fd8fc507f3afb1e3cfb64af6b9fe9e732aa2b5fe24f883e5c01b7aba50f27823e6c5927ceaf9696b7f19526b3f357a113a3ff4561e73a0b8a8c0f427ae5cd21f902c4c4d00d6ee9fb51cb82a5b5fde59134a48d0fe9c7afb8e6e2f1e2bc917a0fd02911e76abf89c207a9cfb35866f9edd96df96243c311bfebf58dce630be265c8b6d7ae6350ac0978954fbf3778019494a415d01da87f1eb531513d19ffc9be06d8aa4d6e7127f3701dbf10d5e251f33d16c904ed1ee65a7bc80562995b1f01e1ffe65ec5a934e7af6f3f4763c3fbf2f91e6affa77be8bd3abeb139d79907b1f43866ba1f678dc6d2c57693b1dba89d57799c380e72683f2f1e3fdad6617c3fd9ddd17b90fb32f1b926ee3242fdfd395fcf1cffc60e8fdaebe4408c75ee913231ec993d1f478e0ef5d92b8d9974793c33fa222541eaf0c6c2e1fdd8a3d89bd1c599a17eb575739fdebb34f5770dc58dbb783a584726881db3d09cba5ea19fc4d44143eff857c734329d3170ad44cb497d01c69fbb78dc9c2b18a5627a37d76461acdba4a0bdb0781c2db4ff177729dca5ce8c2edc97ba75e1fae634b39369b633a799ce4c338d99665b669aa9e634db33d3cc48a699694e33c3fc33368367b6d80c3576417057ac3cd95bd88fe4f031d4e768fc4e6d2c4e75ad64ae38efadd519fb97e799335aa5754c31d4af857d01f50ad872739edfd6959e0df25a5aff9dc42fc047a1d5f5293decfb869a363b3ece619ec1cfd5d4e233e4bab618ee57c2de7d4126daa383031fe7b6f980fb766dcb81d804b508dc24ce6b9becdcb7eafabee72b2dcf3eda67f13e5c00c6d8a6f5a1b6efc6bb3a1ef0553c6287effc09b12fb6b99b106d807d89b8ae6b6b3a772fa15ee58a747197805bf0cacf4dd4dbeee214aecb04f2f3229f0f92bdb5aa200f522d96cf3a84fe4fda406364370c815b36cfefb81fb59daea595b50f6311dc25619b1ef5bcc6e4d8dd01fb03db8487f85dd856cb156dfe7edb1eb60b64b8c6d87a52e7b482fd59c218fa37ec3b3ba57f259b5adbdbde5a6f6bf9ef2a62ecab4031a3ccabe89b94ec522fc13550208e1fd353b43fb2a350e7d1c03e2b3e1d3ea5bdd1aee6c1e387c43f582fd1af6e88689f81e344a8d5fd30636fc358cfcd251fe3f8a5a8d89c3f32bf42ba4e17f3b99fa52519ef79ace349b512d1d8d5dd1ded2a518d2990e1f05978aff523a4d78d45befd3dede1a3f1183bd939538f0d634fdd7052ba0c4b91d84e0e89ed04b41f7fcf641c1fe9375ef8d20688f48373a3af395ccce2dca5be0e61777a5c9d1f4df613b53d8ec8df30b63ece0bf44a34de6973efdae849b59ef350cce856d7d9b961ddea946e46d0dfb3cb142daf41320a21a35e9ee3256b1c1eeb13c923b51d8a0e0ef35dec8c56b1a3821f2adb23fefc377b0edb902f5e62c422372f44c0225f611a0c3a19e89ea96851998fd665644f3d8ef057a0f530bdab1fc618075988600d5d0d6a5285aff07e9afa2607238f2d88dd8e5b996bd38e0f7e23ea56c53df94b447403e9a6429e227e7c98a53789c7f59d3789c18a16f56eab93d0b9c8d7c308ef91cd65dbe3216e3869eab021deceecad753acc7968eaa1487cd4ccfdbdb6e565b646dfa5248ed09ad96100b947124fbbb641b188d61efbfa06c6079feb482e5ff4f4764aefe4f2858cf4f685a5e5b949cb583733e8e951f09ab16b8d1ebcad9eb0a488b3a4a3f9a5ac0e47301e6208b6b97ca6e1ba31f5dee871de9945735b4a421e39d627b59fa51489f5266ad76b83a96e3388a63c0a512d6e928af4052ad3ce03ecb7173eafc3d0e7a5cb685fb2d23c7a8563468c6bcc1a0ce0f964384e3d8673e558ab7e5cfcef758bd4a3267707fcbd76b2070c31fc7da8a7565139e2cb8ad5e8c6ad1da3fcd18e61ad1a3b86e596012d6af95dd1e9c0e74f18d3989f662ef8793ea93d47e44ef36334af0f9f3f4d15730af91b509fa7c6457f556beec53cdcc07e29ecae350faacf443e31472bdf64621fc7893f32bbe6af47a483f3d36f442b1c230f6a1b19e4b31d6bfbdb2a7468029bdeb5d4620bf8908bedcf78887cd69d518bc2fb9f9ffea5eda2f76e2a6af937e92bdf346764be65f7e5a4daf37102788df307abaac15c5a7ce09ce6f923dd7193bb6fed2e2e63947fcd7f05e0bfe01b12c1ee14ddf6fca2c27eaa2825e557838b489e56e70b52acc6c5ef80271ced62bfa957c6efee3ed4adff6cf9f552585ff7a643613bda27ae97c87f8422d5ecb92cb4b9f169395f057bb348ddc43ba17db437e9c0e53e0392bf2ff91deda850fbe27c30d799a38e4fcb8581fa76ea64954e56d8849f947731629bfbbcbb493159f24866da7dee46f26d1946ef36f83473f668d11bb1a90934a710dd82b14ac9403ee66202c319f019d51e7da3899a83f339a26faad5c6ecede67bb00bacb19d1be20daeec569d8ca4f912fd7fdd50549bb36d5ba7aba6165fd27c999278c0075c03d17c9245c1ae9976363fc2b77a88c1be17895cec937e794783334c896a735e8b1be4c92410731fbaa3d5d565d808c7b5530f74e6902c8e6884ad2139aca5110141232ac59c20de50e3a8c868af811e087b2d5c54035b63b24aa6f5fe9353222f0cf5adaaf1911bdb4d7b4edd194d4b09a6d5122fb37e33867e4e68b60a9de6ef736b2b39d3139359fb44ffcf0ad4d9084ab1a23389b1b33dd4aba059b2ae80174ed9bd46d738f37470e04e05f0421ce305f81f689e44b5783347f5fe3628d60b8bf2a816ce2b19a1a57180674a9bb8ee53a313d4389d6796efec9788bf012f4e018f74017cd6508488d887c06727266df8d2658d74eeaba946d9b60c8c9e6d7dee810ce3698857cda73e892d8ac6afb7bc78648e00af73225d908e1da4ce657bdd9551a685a75eac8739a31ed2c2437db2fa7df2509fec1eaf1062d7a03bd9475a9c1ab968a9988fdb6136ff76b9c948aa96998ad6e5722a44e671db73d352e2b6ece16f6b95cec96fa27b1d86cb518d32998b08da1cdd5c9c5b7015bbb3bb256a085f1b5fa9f4b32dae3e57d82755f33d24abc6dd9e9d22b9a5b4babe20398bd85b41265dbcbbc8213a04b1c0bf56b3f42eaa199241d6c0ab7b7c17e6e54ac81bc0f33435cafcaeddd40d71bb72c84e3a1ca5229392d3e0b7da67d6ef132dcda9da471b9736d3612ad8154d8b97e5b7af52641ffe23737682eb04b5bf4d154dfee5abd37273fe4825de66e5306db1f9a551ec7a71b727c484581b7cceca5568175dfda1b65d747ecf8a364f25211f6fa2d3b75dd6ed26ebbb570689a816934d9475bf235a1c06093ae75d8ef8e94de5b2eb5ecd0a490dee62354fa56a998ac93c3b68d7ab17a2f94fab2389d75cc70eaed09a324eeab7f9e538576a73961f123fd43d3bdb06d84fe64d4dc80f1c4b8cf6a0be4b5dd3c075f42feb5553cb5dc375f3aa4d382f24610d75c6ddc4e76d8ca7dcd96304a8854d7b551b8b9a79a35de05d769f6ee2678e762da4b3fe55f39cadaa1695cf18b1d7c5ae66368eb31dedad758cf308809e9036a4dacfacf76c3e60c7118c12db7bc66f6b8d7c36bebb911100161fd1b7d65ea4d732ccf91506545bf7e941c44091e3bb93fdf78555e05ed6893b5a0d73eb0798ac067bd472e27b9f7b38c3565edbf55bdf36c4da1fd547e49605255af47e105b76f32ec66d88a53ec8b3ea62fa300ed0adc646af6d2c46e65832a217bdd87bb48f7dc89d5a9d21376ae4a71ea3ff5a9a80d34b43de70b2063f8acfc495a3e15cc1f61ae24397247dbbb9a36dbf56b0063181688da1de25e8fa0ce47c36bfa77dff2c6070958e1ac443fb8ac2e8434c9db7c3e854e09864c81f1b6d923189a97345d71d9e0ec4f3d18a25032ff04acc0bdc195d4997a8104732e605bcccf630124cfde68dfcd8b13e7ef5688bb624f63adbe1c8cd523436a8432eaaec80bf77f29d84680ba2575c714532d07e56106de45742068a149375f70b44c7709c68cf9e0ab5f78a87626e6f7e595cd0fffb599ef4e9b99d795c71112da82d1128ba8e7451a885ef5b32c68fadebb06f9229511b912a94eae38dc4fef1cac95512e49b5f467739a413724cca790efe4a1bf257768a9f18a5cb2f1e481715cf54219d3dbae6c94cd33f9b612b91975389bc9e7da4921035f26b85be6b97514e5ecb5c94b90d3fb9ac0b249738619a4865c08817fbfba0a613518dde077c3097f839e99f2ba5da070ffeb57a7e759e059f00c8d635c6adf3142f5ddc88dc6f32f6f5e2f2fab71ba667310c52a59abfe1b59eb2b6dae32125f05d73fe458ecb0ba377927ff86a7e9784e8cde5f2977c4237a7999afc865708bd7ebdc9ea9816233cd7fa3ccaeabd4dd060f2cc437bb16719a9c3c710dbea63ff40be3727a0f3e9b8e6f0cda9ae85cc15033b29418f077b02e73ec2dcf77419d59c9c5dc1881cbd08ecc4c8200780c801eef811b6ad9236f9279f4577efec323857d44be2f36f308a701d756c134c8f6a81f174eadce8dfbfd7b327a652b563ff0ff333ca567fc7cf0ab1e66794adfe999f11f63eea85bf2086b8bdf3ff9c7f950d9fc4b234e693759dfe8e26242c25724ba8df0876833042b2f57fcfa32ecb3e8fba2c873c0ad104e051b68a79940f393f512132f39a473d40d7b22ba447db483f4afa314d3611b370ca9c197d3719c7df3027d6c1f992ed5910f96d2af18f46377b6f6af3ec6bdfdd26d9a13e4503fcf2c6b704f195366340ed28bba2af4773fa8cd54df278e103f5f7d1ebefe883e8afc7ba74fef8d9d6a1a71b46eed936ecb2b848172f73cac955b4906e87f5d4dfea71bcded4d2cc7daeaee188ed67445f6d16f43b820688fc14789349e7bea51639d4205d509955518f0d3d9d12b172ef56d9f95dec339d9934eb636c388ae0991f693d96c0bec85717eb21754d493a6c6b556a63d6070c2eb0f96787066786873ee78d9fc66e7d0a27d62e738cdf13c17ed61afa586318c62f6c52b56ce9b17fd0bbfe23abc542510352170cd01ad8eae40ad823d62995ca80d001f311e285483f3ecc7a3ae4589aeb3dbb948ef6f57c8af689d2d3fba92961139391ceab586ab119e0a4fc8dbc367b25af49f388dd9693c8e083d8e7e7ac160ee4b7b9dc93dfb0dd54fe1bf9a7b10793fc7f25aae4f5e921aac5b6918b10fd17e7512b17c135928b16db562ef2ac15250aa7af0337bdeecbf45ba43fbe742e4a3774ff7c185ca189163d932e4b562f0b4dace831ae0dabdf1c6b41efcd5d0af59b2edb9edf613743ebf04032ea1ac9a89a564c0819754dc8a82a3a079a41ddbc909637d4b6f7fd1d07752265d40641eb3fd1f5b6dfe627d1e6176a736b50efb0aefa1ce910b2625e6f5e1865fb70522afa23d3b88cdd09344bb4cb83bd7d0e3655aebf7fc0a64a9cef2bda439ca516a6625d6fce627775ac5d202d22f6104ecace1e761ddac3de1b9bd721ce0d4b2d0abcef087d58cdaeee795a6c420ae9f8a618eb9939a3df0fb3b412e9a8d98b6777245f3d35ca0e5a4a13bf6359508dd90de5b8bb12fbc41bbbab6204ec7f61638a7f6363a21a9f5c67e7725cc7a05902c7a9a6cf46a058f98b7ca1530af16558c678fabd17bfc1f5e23716b6b5865ca9673b0092857634e2358886ffab180eb2cd7877f512a3daf36ce6ccaee55afbc8bcc448e0b7d9b594b9a28d9f19c4cbfc28dffebd8d6515b8c9eeee9af15b1dcb727619fae13293d8bdec3a1a7dde36f2b1ea589fb42bac4156fcd10f335b3ed6b380addfe9e4ecf336db9bbbd8360bb09b6bcd3efe5196fda8e40b95413cb26e64b6859e59a7fe203fadff6db93caac5cd8167fb314372585cbc64c1ecaddd64739e67eec5c8550bc9af508f33833c013e0edcc52e76ad8f37d9d42bc85f618a9e1d4a3a471389a75337ae9fb3a877a23f273799e31cd6814da4cd8334e7595787e1451e648df7743427c15fc7b73418519dfc9be1b3b49eb45888557e43baa13b82baf180edb7d44086a5a4a4d50f9255382f961ac5fadca4dddb383e05e7251eb0fcfcd6e5ad62bd6e19160d8ec39b7ba15269b100ec3d05b71539e68a76aa564f2d6d24b7f2633417efba394d561788c34bf6e624867879b5a0a40bb147553bb1cdf9b5c578e02356054c9fe9704e685b0d4a89d7619e971ac679951227f539882b4ef635f668a39f42ed14ade78f2763a502881b41f444f88c1da1983a1a609cde7c935e81bf1a704f8b401496f04d2f9c508e493f1c6b15a0bdec001e07da2f9f500fc7b756b178d92299f5eec21976025cafea81dab8f9bc917b3ce865b497e8531fc768eaa84d518d5969806f215a3817b1c6d2bcb534ce2aa64b6dce0ed638754b9c9384cebac8ad1a5a0db164cb10cd3bda27b81e578d13f80e7b50bb3ee508139813ec206e06b0c71cb388bd9288a5e223d663d03a16352ebafedade017ba348a1be8ea023de9f019623c88cedbe6af7a8686501790e91ee4bca102ec4253d9255329e62ec58a774acf57553c69962ceaf3ee22f6af62df1e36fb1ca33a50c962217e57bbcd6249fd0f7c22af698e0eef25bc86f10d5c242fa80a85daf071e8f0de94f2217a547a4bf03c69f81658e599e0dbfb91905ddde294f4ff505104d7bd25f81bffda17662efbc7f343487da431ce1b6ad31e6f301f0d17addaf4fd8a5c459c7b869c58ffd6a735ab53ff50d785f4060f635fdc263236a3936383983335ac7f70ceab49be366cfc510a75befb936b6afd3a9918efdbeb7d633e07b889fce52ea75ae28e4a037e7a4c93f752db5489dc5eeae42ce598dc1829e37309edf5e9d547b2b8dd1b79cd12af0f84073ac2d60bdece19d407729bfb4adcf2baec958cff31cc71fe3dfe06fa8418d74f416134ee8d313b031f779586633455ae7ec02869dcf91586835dedebc8e05446327e20487f6837f117f480de20fa97efc61cc4afc9c581f3cf76ed2e6fed7754d4106a6157e4ee8eb7a5f8ee61fac6de4b4a51667f0e7574546fac3b14cbf76dd457eb6d43aa640a3e95ae7a3d13bbe56dceb3d82e77ca4f7f2b244c166212f4d8d7eb283df442dbb6a33fafda846b7bdb5965d66fd8dcea01f4eb2fa6f342e19c9ba8a65d7f92da7706f428ea40cb51ed1f8e7fdfba4ed474332bbf549a9e696f5e89c69647269fe2073934047d7489cedf884fa41e06e9fc203b74cd17b5e477f1df4ddee7a7c5d5e22dcb7844d1cc01939219a4c5c47f575b39fe804e9e15ab3e7d0757242d7b96d05b6a2f7be678bd4a3b147dde510b58364ac133be87bdeb6c74d4bd467c045d16899c41737d5bceb47fb5c7c7b7e8e7e7a0ec9d91a6f24fe8c1e605ada6dfe14813f09f8b21a9625d47adcfff43ddd1d7db0686d3dc6e05d9e0d7c2e60bafc920e9f12f077eb3e6e1396f27936572c5c17749714771bc9354d5eb14ae25d2e53bc764f723c6b434cd0d3ef29e0f3032d5bc59e80f817d05c46d4d257cf676e39e9d3c7263f73fe4032da6d8fc649e13801937aa06b5fb10cb6b60de2d861a819fdc14ada3c732adab51a1b18c472e853b7962330d66a4e133a3a2309119ccda77ed0f8ac36674735b76dace441037f594d73315f3099415f47b16fa993f39e8f334758c56e9b476a436eeb260cae66997d7b0b0a9dabd4e18a4b6303c3d7516353ba4b09a6f53a63506d3c7319bd3bb307ebcddab1e48a19b80e977d5b6a7154cc417f18da9784d3ab711e7bfdc4f551c6640c9e68e52ffb7068e3966b1a2b9c8634b61de36191d396d5d8391a9a3cbd11fc6df86e6bcb734bc0ba7cec17885ee474b3be76856433b917ab631336cb5d1dab6bf0ec0a622317f9c864d6bea5e5f726f6c4e05901b79d2f80a65bf470ef803cf062ef688ab5727d83cab48a7e3f6ab90274d990877459912eebbb6fadce8edebfef312ced256ba8e3a79513a40f5d1c6bb77266b4d660432e2fbbc04bfcd8e7964d3cd04c319788a7a60e6f042ee6f97213c383cedf2b7d595cc829e6f5cff7a479739ea1ad85cb2f2a9f8fcf48e71535f6f5ef757b2ff4ec4c7d9ef7de1c586af1fdb43fa9e9cd47678d3128d5dcd57666f44c5fde31a9d85fe2f687ebf76da93d996eab987120cec1670ff3ac9adbfe3c73c55d540b1df5a5db873b575f5059633b7c715e569696e550b7dad836fd539c3000be2c6a59aacde83fd307ea41d0969d6fa9c55c2c33dcffd7dffdfefff3bbdbf2caee38a0d1b137da11b68b15ab95cd5e6b68023d93e653242f07e8599b81dcb30df6a5d7b20dce076ffc320a593bcb1d213976fe03d662238fb301b6833d1ee877220eb0542ecbda47b6fd25435e0ade1b47b5b8f765fd4f4a7c15cb6f46bdf5f6621c9f29697374de711cf59c4d700d1b3b9741b6c3f3a731f6d50da3b6eec481c17ebccd7959cbeaa737ef4291fb3050b48fcc43b46a24a3f6bbb8428256f91a7d37476b5fe21fec1ec998ad7e10008db1c1af375cdbc29792f5756f161192fbe0cc60ffe299ac0bd8c8a010b7c28fb3bd5a8f71b1bbeff03cb8c36fda500f90f6a1b64ad76ed2f82d6bdb01d87c9c7072c6d8175d9cad836bcc9548df16cb3c10eb5a7d4732beac99bb644ecc1dcd4afc2278151f4acc298e11eaeb29756ec0403fe18a14e253b482eac9e74c44c8e753a83d33386fa9a565183fa2ecf1f17afd82e911d1a7564e87faa9f79e9cd8f8891a7b947a4ac504641e42366de3444ac08a60a8aba8a625b65fac5fcc432f6ee309b35f028c8e53b139cfef32578ce5f33597d569ad57c16f93e6b763af9ec24047e370bda49f62f87b35ec9ee78e1ad0ffb8e567491c2dc318f1e054ba9c8a2ece27be897cd4d439236577a487df0eb365cf27b357a15edaad37df484f542713b91fe3990206383feee929a25aa0dfcb7e9c51743b68cbc1f7a31a8b01eab1a5b81e1beee75e9d5c112d3968cb1cbeabf6b103ddb0b8b7fe53b0a50dce2fc4459332dab82f3b1874cd079ffcf25d7c39c6af24e600fa58882a9b223dcad7a8abadf6c6d3f4f58efadfabdb7059d6b1656989de3d00de49548823fdcb0b27d75e3d9f593af86e31010c4f628e8fb0878d3fede15b87d157a4841d86b0fd4dc1f607588c408f22f23b15f8b4b9f9a3b63f63df0ee4986d7b987d5ef813766271ebb0fc8af2679b75fb7c6bb3ae7d4b902be7f23ff034665df3b22873601c51e683bdbf8845b598d8185f2bc73129546633cfed0cf3a1e4597e5384ed6bf999190ffc844ba8ab4ec8d0374b2d52887f6c64401efcd577858fde5dc497cc1ed6cb9ff7ee68e5ba34ed03fe8b39fd96b5bc426d0d78dc5fb5e3a176b4fc6aa3bd2de8191e3fe20bce702f11f6419a12abe597cfa54f34f7a816d7d736c0a2c47c2c407c23f704247b631fbccdd00f7f1e47d887111338722d2e518a6b3975b608c9daf6aff929eb0cce5eaf76591c61dfb01925ab33f81bee508347a3135b4567b8b82ba61388b379dad65fd4e8c85671fff76a71af734202e5fc9136784a22ff60bd109f9f2e36220d44354da532b8b43efad1a2f4b9201593e8db2dd3bb88e3e3333199de9daa6793cf245e663d1ef62c3a8f10fb89ae1df591cba85d8e2ac404fd7e42f2c05832e5db812b22c5b46f07953e4b9728f366f4554c4edf0e974612ef0de2003ed2cd08f71d9ddb671b02e221cff60669f4918ac9e9ee9405ad988f2f87632f479c534df2658ab03fe50ad4fc9fdc9dc4a91c6be7481a4dd7b92495c6b3e73d836bbd396afb8c2d567425f1facd659cc4630cca5433d657a15659f487bd756bd7868fd039043b9664d6f502670db612c68f857be82ce37b504faf7b7fdabcefb4efb7d84cd3e67da77d9fe0ef7b6dccca9c9db815a21d6c2fee74afa6a9c84cbfdc327a93052af37ea2635d1dc8c13e877191fb1a6a0475f5478a69935b896d75c1f4389be3fc7646477bee2e31f3cc053c99aecf753c0c3a1b53f7524c89ebffb8e7e9d5e52663c55a662e37992826dac3105b966ece1f5347b513499b7ff9da83f54a3bf1aa07eb6bed3bdfb60acfe25ad3ccfccb0da725ea8bcb456ff26c1283dcafa6b432a3ab55e854ca8ca69532c870bd6a3a80d86bfcdddc56d39b542def8e5a64a2767d28fc38598541a5cc2868e328149572a66991f8be5ba6317ac70d8b4cba44ec5ecdefb84df83e6023a13ec318ac62ea5563d657a35f22eaf38c2e2573fae5a03130e3b61fedf893829578ffcf3234ce11a66afdbe968bc784ed6549ca7618bf846e78c7906e2f093d7b0775e05ecad46d8e6dff5d52f79704f9d5bb8155c7bff7f69e391dec45b4de7d9a3b90b7893a58c6f488f59a8cc8dd79d86a70477cc7e5a2cc39c37505f4eda267683d5cf047d0897439e5763919d7186b13a0796af118d0d796e6896ad1d15e9e1d89c2b2b1c734f69bdce31ea5a8b24806216d2a449f1b3a6fb34e995ea5d14776d0e88b986cef5e434b0488cb9fc0fa9693d4a3206f057cd022d2d11b1ac665ac1f22ddb6b5c57f2b56944a823ca49f559f7eda9957f6e8e744c435679917b4f0853f157ca99d3c42c41cba04d603d66f3abba3c94cfcbafe68fb3ccc0bc60e2369e4b08ed35d0ef1be1be88c77f9dce37315ae8d866d1835de2bce232574632fae756341ff1bdda722fd329641bdbb154d0f64e740b1f4beec4cc85fee0c7cd0d3bd966784fdf1fc777dcd33abd123b8c599e471440ee81dedddfe393ab136f06dd2ef514483bd9d8889fdbde7d26b2d8744ca799e76f8173ac8a7804da4a689c46c330770fcd09a022ed1d79e63a30d23f7f6a4c715e7de9e34fda6a6f1e4e5fe6af0238cdc9784250bb52855aaa873316fb5bdfa665b9f0f5788905ed6df57509fbe48c58a7efa9df00396ca8c4e3784cdc08df3522c31c6e570de5d9acaa016e593cd6601fbc62b8736f7d34311f4561e875a97e4d9edc799678a45ce5971ee5dab4502b18ae78226fa9f107be7fa377bc737f204ef9d536f7d5caeb8f6d747cedc38fb1699d8572cc375629a25e8830df62f825e28da27d4ee735fd8007fd27308ff784d23b287c205e9ab71b831959276b1ce16662748c707dfdfac8dc7477a7cbe37277657b7a648318659c476317d51e30b6cde6bfc33041f25ed4b988f42deb77afae77d158ae95e25d73feae42f830d601cddfaa7c47a20d9b61f47a446effb9e1e72fa869a691cd40625ce770675d324b2ed19f5e85d6b543717333a7db63dd475f8ba791e3c930f9e81391df483ee6ad7116bd11f43f4bd57db7a6c999dccaf7b157236b08fe9b77ba7a977f4dfeda1a5d9f3cf2359afdfff1975ddd7b2bcc8d463e4a06e7bff39ad7dce699f539be7f01c29663d8f686eb16f3b23c6cd36ef4b66f33ee824c79f625e1ab9aeaf7b6dbf7c2e8fc544c7b65e61f91f378c9b9a50ef87597a132fdbbb1716934d32fe7254b63c6a9dde02795e60ff31ba1a8de127d2bbc3d7f6f8ae1f506710f22d91eeddc32b28bb75226c442d1d1d0fed063e600eabf3a2eb4383d141d77b28981ea14e3b9a4fb40f3f0367b182dc152569e639c2eb09cf9f5a9d4c049bd322d271ddc8ccad702df3ae4e7e3dff4231756a7a82d6a48b0b289af54beb3abb98e6347a1c9c9dcfc09917b173f9a9fdc5d8b470fbcd9ee9f9f49b31a8e4185abdf2e9795cabf92395b8de3ca56e1cd7f314e3b308f3b4bb7bed1822720c4e3b06f2590ed6e201368c11d2318b9bd8e6727da23d3afeb3acf8cc3f117f8738280dc944d1d425654195a8a351d13793898137bb651bf3f22e0a2bc06af2e23cb0ac620a989fb53fdb2d9bdc13c059063ed47cc77bfe0edaab17c55ab97b834a0f8c773bcce62cd8da790fecd59206f6f68b74890aa5fbbb44b28954f572099a18a20bc1af495f73a698beeb1bd4bb534ec603fbf645ba9c0ac881eae945645c4c94c17be75e2ee9056cd983f744e6e9bda13dfd82ede9fdb81ff4bd260f4caa9629cc81d6b7d9435ba0eff6626e32329646b4e88b74f158e86f48d763f36e7bc0c38c4ac944edce33afccd0332331f16e7b81467cab823aee831c8101ae602c5dbc2f479d5c256b7bf34b8829ebb0277919c98e4876caf6c0f7b6e87aa8cf55a29a524f7567479d6ea136755af15e6efc4f248e544aac2dce67e23db427d3ce87ddc448784f711122ff609d3a3e65a0a7f5e796cb58bba45fed0f47ace8a49ecbf468cadf8ae9dd7cc8b722e2e8160d9e8297edb97abe19bd8769d7e6cf969d6e807d295b9ccfa61657e5f281e851225674f49bf7cffd798f4146f499f9ff0c476298d7a477b911c53fc2fa6cfadcc45f9f498c0816f1a39bc7e80d2ee888c49cb01936eb615074b1724ff90947b5803dfd2a6f0472317eca3339eb8fbfcf5131f8bd59508eb5fc1dee670076c1bace4f97c30c71bdc4f5aeb4cd4985f6afabfd2ebff7333e0ef21f76e6eff31f7c660e38b13b737ef384d5dde759ea60a1f3bca2dd21f6dce88fb9b838c701cb1f357667d4dacc3176d8e4ee73a770d3e8eedc1262ce31fe03e81148f6c234876f7e27ea5759abf885dfeed7939f75960eea077b6f6e48c6db9ed0755777d8a21a7f3cf80ba424981e9bbf2f5eda1f43cd3b171d4df0ea3a92481e7cc2e3257d81c9147c9c072dbd237a7fc4b9a5a4ad2440324917572cf7654a7efee59693abc44c6f7e49e0ee5cf09915053995f847ebfb863901ffb97747ef8917747f588f93a8d932a35832de80c478f0c10e9b933c8b96f847aa6834ad8c74d69fa59962ed5889b7ff71fb888f0ddac758402fdb07f9b174477e85685a133f8873988b4ac1b410d1034c770523772f72af2e0dd237daf7b89856cc53e6cee888c4217d7a764691cf36399af1de7c5c6d95a5bb7a0e88ef34f2e5295925751d3a739ba26f4882deaccfd931e34ce4e777b78f81978917fd3f76130b207cb036f86b3dd6094fe9a60c1e92364fc5c4fb8f62ce7fd9f5f506c910e8f7cb07fa3d5925f6d529a942b468a2cec4e9dde5525ae1e7efadfff04c9f452eca0e1a9d885cf42e0ad1b7ac465ffe79ccda1a9bd4d76f76193062354f8f56131789f6209b498b290b7b72a437754fce2e338910bd77549c9b2c73c551413231ff220f96f489821d73d9abe36613bae56146a726b3f225c1630ffdda5b9d0e7b6e71f84750f3a0997fcbbb1d00a31ec99114a209b783463d1a1fe04ea3c79d5c4ce6ecc957478d321d6c6c83dce8451b439c6915bd902edeb75e163345d76f7b2ed7364c1f6fcf550b45548b638fa72fa6d9b68cc95cd50dce557d89dfd9f28ea53e7197899c2fc39c12cb25fa3f869a99af30a0a917cf6a14f01f1df0d440269b0f3118c432d795339d21bdc480e720279f95e60fa81ba021399ea27aeba511fa827ea65393a27d693eeffb6cc340ad6d9b9f50af82a8f7bbc5677b7a1488fac6fa1cceb4d8c6c75cd9c36875f7abf413685f599c5de6f1b6c534a0aec142e67f5ff1fb78af7d015d98a1be47d77d88bee7657bc00f7ea49b32c6f7b9ec9ba4074d1f158d62eb77526c13b9de903c82e451550dbeeafed46d44efa289ef8b65f6ae2d72b5cdd735afd9be1c3e1fb347f31f63ceb418696e589478ecdb9bdbd8a3b9787a140678d81d7663207775aa65025310cef25e8d6f35de722626d4b7ab4e4b91c13ccc3b23bd14f53d3d8af4f42e8739f0343c676d7ed54a5c7c64069a071deafbdf1463fbe5aa792e55cb6f17e9236a512ac6c79755e6c7fab789ac16dff57bd98e2372b080878e218606782711ffd8cb475eacff8b7c647a807d0eb192bfc13e5f0718fb9cfd1fe486d63823677c7f33020c92f71eb66d53bfabcbf90bbcba8e17894dd28be1e9e96da7be2c02f823d7478d1f747baa3bdad46aece27d881cc4e7e75eb651e72536b517f1337fcc6353fe9bfcba06fb688b749b11219b117a01aeb741ea090b327ffca7fceeffb3fa81f687fce86dad1f68c9bfd60f5ec49f417c3c45ead65e19f5b0587e47077dee31889d2c48dbe6307f98c016a607df24e26b7fc865c7b6d8c95842ebc04d26478bbaf6f9d9296d7064893acc83ef400de6ce074bdea3f3b85f73b1a9d7b6f309db6fd3ffb2c1b4f62ea81fc49c993a41f72342f6447fc7cfb80df33820eb82fc2daec1ffa5ba1b3d9acfe7bfa7f9f318d37c33ffdfe10170b5ae2c2ca1ae84cf3de5753ec523bfc8eb8c07799df1b0ae04c94bfe121b841a6283f4e80911db3ad0379fe3b32f4bd057dbd857aab6fd811ebfbdbe8ad59612c4f75f60dbf173d61cb57523eb9ac2bbab93c4a537da86121fe71eff78531996256a6f36356ddafb66d2bf4fe25f2dc32275adcf6c73d90547b578c7f539afa1cdb095a32eb3bd493fdc597ab32d2a3b3093c035f5b725c6d06ddbdf990bf6a9f667d36ec4f6daf52087dda0bafb93fefd64717378366fef27797034fab4dce07fa0e5d6b6c9357faa5bae689fd8363fdf0543d9ffa816b2fd9437bebb225976c94f62bffc5c789715d229c3adfa79edeaee7ea6ee654dd9e6e4eca89f67db1c9fdc84a596425def29fc44f400ea1a8a16f56ef07dde82e5b675e0f26bdae51794d3d5638e6aecb0b71d3fcfeabaf1cf75a17f18ab58e6acc4c73744ebd0fbbd5ac13fd62f06ccbc07e2e11a7ae7f279d94445d0ec45cd9cb3076651a239d19920f078c3c2f9b5d79b5c16a563faa937dac55ed47be6a9bef100bb3540f3ead3ebab6d7dc65e0578ec4dcd9caccf777b753532b72c8236ce07c7d5e7108367ce331ffcc1a76f742de2b8c054ba44ed7dc885b944cd7d02cb5f9e420dfdcb76aa587ab24a1e5388174cf4a962ae59b0f73dc735665e58a484df886af02501cb5358a692a90f312e335ba3ae5dac31602797a29ac7c3774535bd6dfa76b52f3784dc0744630291896e07886d7ed6a171ae4e2feee3b73555156dd9e505583bd73628349794c9ccbf65837aef6a9f2eaf5e59d0f57aa4a24ad6a660d921368adf8f3d89711f08ff7a3feebc8b1d5ce4370b3074eb9aa921924b96b743ef7b06e4f1ffae3e8327b439cdb55d74994a97cfc4c0f8775f3e3779b4b9d209debf92b53edb66112f43a4673826c6a3bb9647884f27f9f632f3caf8dd2a830af058703ddaca42f2c7222f2d0df829a68d9765e6f16cea5e76d526ce72e93ca7258ebac9e5e3266b7a26a9e34ae2c6c55a7da0dfeafbe3ca028ca402708c9e6586e22609cbcc568b8acc0513f9a8a90dfc7099f8e60b72e68659295e64b45f0391e4938213d76dd1a285e47096769860d67d739c39c22af0aba1cc0d7b9fcc51496b99f5d68cb37d06ad63d2a30d2b44df456ef5709962e230ec6d194668df06d0871657f5e7dae048677098c5639320fe23a7472daf446e05f832cbb07847babccbc791837405ae403cfbb29f43fda6d4e1f537e7b26dc615f9047eea264163f3036f965e7d814a2541be2e2fbb726f2e6e0e5340db3face3439a7d64ed354db3188f6585e95cb9ccfaed00ee4a08d891189f36b793c579cfac69efe2f4bf73d9de88e788f9859ae5a5cb145b58e759eaca1cde3b96fa3c66372c222f598c86fbc80d8bbbc4cfb3b656b3a0b37bb5b6f55f3eef7ba83f55dc247e9ad96a04b577b1ac37f83ec4922daf2ed4312f32b35aa0b38ee9f54f7ba0de332003a8b007688997a1cebf6d7dfc88bb259d4f5f38e7a59d6724d304187f8ea61c530f25216ff6ff9b597d6432479e35aafb7bf691c90baa3d9f066fc4e4daaeb947f7b7dab641d7e73597ce3b1fd6a2dd5b2ff944200972e6b7b6bd07eb96c1ab33f32d87298dcf35d4f17df91ceae3f0594287629c3acfc305bb587bc6cfe87cfdee3c4bfc9ca83ff28a8e201e3c4da5577b84dec50d4d72cbe8dd51fb3c5e45f22457bf03b5def514f50bf113621d1b193627f63c5acb06b3fb0dd64268bf596ee2ecd1ae67b34e3358a37a7db6349c4d746d50598f36bc9431e6759fda1a29015a879a8f3fdc9107b1f892b5cde430fa1efc3e914c1dfd3eedc56b73c10d728cd4e8ab9ed3663c19c44a9c7f47b7f5dfd1ed44b48aa93dfa37ebbad6bdf0bf5ab73b9245dc723269ead93658ea6232466798a0ab7faa338d69431d5b7dedf1e55ae7ebf3e382922e9f2dee886dad4a77e4e51e83646a3d145b1cd9e17cafd9a3fa82f68e56776f24ff639a61278bcad1d7a53b5a571ad2658d4fcaab5297d87b59efef8ea6346d5188c77b095b795491ba89b145dffed1f67d6e68ef2af018633678efe631b8c65a5d33e5eecf3a9ee9c6596569f4cdacd6be642d3337ce687c6de0ebcb7f7536fe66df22b99b7c6e38deab1b1695a816f51981efa42291cfe383cd00d1d2477a148a96bed965cc4afcaeb42d6f3867f57eeeeb0a3fca286a4113e7e255ff02f1dfd336e6892f95833d45ee3782666159e7a73334a6e5b33ee4879d2d60483bffccab52cceb1b794066f7c45a90f4ce2b5fd341affc3d1db45fd2c1dfaf25e42c5a7f2d47809eb457ff1fa54dbcf15ad66cf604d09379276fd67209c8317f233f5b7fda531f05aee98ce4df75e19b8bd25197d96154f3dd8ec63d6a39e8d1c94332d1c7b5df8cc9e1e3c035d99bc3bd6c871c5fd5b5857f43e3fa7d7f3f7b735ec721a2b97e38718d237ee9e983b55c4e5736b3c81c15e985f8b976dcc9faea584ee932e3577ca193fdf1792de0eff0f168d703fabfecd64833fc5ab7f8695d6e1b6da093bedc5fe9dfed2f440ba0e6f22a50acfce125ec9763ae29d59c502eddd5047f658b6ef1196a7a78809a01f81c39497c73e620fb077b73127b51839bb1bebba355d4626ec6a007dc156be5ca06e09d96668573f470ddf6f115d3dd31ae11af9e3a1936ceaea2b0cdf76a74b755ba922ea7541ae999c805b1644e538999e788c6882a4b5b682fffa94f43db17f88ff1786c86bdf9fc02d1fa721b2dd34ec67a797f68c73abbcc84b2cdf8e658cbdae68d680661cbae633bf5c43843fd497eccee39a83b0c3890beb58b9d45bd2f856dfa6c6b226d1a7dec3517d72fde7a09fb70ac157530eabd2e6c015760afd12589e7269910231e8ab88611890f977b383e3d841ad2837b18a715ea4a0fda5bdd7d617777d1f91174d60b4fa19db0a5c31b65fdadbc3b8b4506ed26abbb073652bac4b67bbab3cdf072bf0d6b77f77af76d56147a6d84ee6847b90c457ee729c656548b88cce16be26c25e103e7cff21e6bab79250936ebab79260910fbdee0fe5d9d306744b5c815d3ce3dae382ae63677ca2284f875de487c2e4fc5919e1d66742c5d509ff34064e4f73fec25d66496d9812b726931cd0e060db65b3f59647b7317f8bc31ebf6d66a56e725ce5c862d1d613db3cdf5d579f2fbbffe0ec47609cd3999c4b6b58abd5157f7fa07dbd233866ae2a46eb2db38881f586b6a6716b16b62dccc4e7e885d7901980b3f3dfb83dcd1d01d6ce36d6cc15e55cbbc38f70dce0d8cdddced75862d7dde8876e0773da55d7d10ba02dfd325bd635f4b9128685e46b8466b87c9d0600742bc24da5bbfe4f3f66dc34577bb2c22450d4aa53abdc9215c3f06d71788cd9ff5eac3300d0d85789a5eede03a46b0f3c5be43ae7b578384aaeb54515212578083a5e29c8f3636cf2aa68e565c443546cfa5b5cf3725f9c121a4cf2dbe2c47d735493bfe56e318133ce69adb1d46455ed75924e414a879fcf7cf6b18139ae0b56f92d9e1db4a26ae3d8c785a5d87247d915b9e0deb4fc3dc01fe089a532372183ca7f01ba2bb8025505ceadac58162eabf1c2dbd6c98163faa8e117c9075c153c582dcd2269e2e5618fdcd19f5728f26620f5f6c7c734706e5582bab89b54532ad5363d0d4f7966ddcad9a9562b2cddc8a2eeb9a36695d7fad874124d6b522c1b6604e3b7f84f9b81db8fcbe0a9d4cba44b9af3d58b4268ef6605d6e3211477ab2bac84dae1af6a7d07980f9509d57c82f1e8e1adc4483bad94c10db4c5edbecb01e2573b56f057d9b7fdc0e6a44f041fbea868f87a83e0259e8cd4b4ece4b8d794cc42b168097e6753573d0d86f7f92d3c0e615fede2e5fef9bcc99d1b4542dbff71cd481436b705134588b1cc718635c01693165f76a83dfb7c5b9959775ec3034a2a9d5f24cb180e587ce9cb19b78bc313d72abca175601e651cb3a661af00ef483f5191f8547b8e717136fb40b6c260b158cf705988f06f8cb7bbe8f10b56f9b45e609bb4a124eac3ccbc762254f6d223fe8c065ac1cc2d9beb63a6e9c8f2db508cdd1e91be4a818bdb7f2257ee51eb8acb254440fecc49b8dafde99befcfd7b514ac4713022d0e0285b6a9f6c17a78b78b1f1b6378df28739ca7db3a0f6e62a3e2471ec85afe7c9638cccf9e11e414b5ecd21c6eb3ca3f716992b7c525e598c118d387019e080b673dad18bb158519408755e768d9d2c34474133f6a29d97b8999775738f6aee81de5d46c9eaf2f11f5158b21edfd82056ee61d1bcb768de2bdb36e9e6deaeb947ff3cd71fefae46e74701e9ab35cea55a1c15839d1ef9a8c5b6a87303468a39bfa1eb2dc8fc7e4d7f02b0994b739d8c19a8dc9151da0cd2ff4f6f6ee76f85da0918736b7ac3ba83afa1eff88b28abed61e8f9ca4bd69ff00e857d16a4afbee9d7322cc6443b0b37d9d950b3aff91e65dc9c7ebb9433dafdd8ae6bc6916435f3b0cc0eb3f42e2574ea2c4e389f00feeeb597efcddd6ffb8adb6cb150ffb6cde77e1a0d36233ebbca5c27f2ab4e9dff7221b33b03ce9e0232473dc74083adb54bd236bd9cc07a89e532eff4b820f0483dcea0b26df567ba896b324d6f431f5ebdff47d242bed563cc0ea3d39b5ee2582fbd9c4c8e6a319378246b380af875b07d08ef77c1cbf47252fb568af7c32cd56a1fb4265d62569acbd99e1bf28b9a8e847642d405837a5aa2105d5d35ca0e6a7014d598d4754e56d9e51bb7ed2dd65487fdd6e33fa138941bd13c913166fc9cf56679aa58cb5f5e988592ba7c5b8680d337c02c6c6b665788c6b9b86e0d07cf086bd7bb14d36542077b731c5ab5cedaca377cf4bd4c70cd468237d53c268ebd12e85e7ffd7863ec7374ec63cc79b48e88d7988dbc45fa89ac32b84b9755658f5681cfafaf12b7ca20a76c710a918c8ef8e5cfcf44f533f6cfcfcc5bdf66093977c3b15d76f141d8e62e92e399f82659437ebdedf1ebbd9a35e3437bfab237c7f941edf9dd91bc55416ea139cff75c31c1b56997dfb64a5f259e4272fe4456e94032b7997d863ab5a5c8ccf33acf3b21722586b5a947bd3a62bc0d74f1e7f8b8c9fb6176bdfa1cc5ba5cf475e0a8aba352ac5d465f7e097ae09bcfa52391d1bf0e5c7e3e5a54a657f442e4bd0ced61adfedb0e23744617a210e1dfcff86ff4bbaad12e3a6b227342e7682232db6c5b5f6feb6b2dc4d75a585fd7f735b85f631a773e9f1511db7ef2c3e056cb66446e4e118b828cf1ef5e3fcbba213a8b3aebab9314d78c5ca073c5386a44ca2d63c5d2c9da6fef8719c46f8c25956a64bf9162198827befb25a1ef68ec4414bcf4281421fa7f935057bf8ca7477e49fcff20b0acbbdf3afe42c67b003655eccf17993b8f6f1023f893de4ae482ef55f07f35f69adfeb8f497cf379a3b4cd35b5b79c581264d02707b5df29891f93396838b78b2b6ea25a9cfbb8a43af079a79f3f1de33379825848c05cbd6c595f2d26b296c68a296787d9f2cd3dd368ff959bcb92752e540ab9adb33cead5a360b644dccc076b1b7964e118dd07e0f5209d403db5314a4e453f24c07f1ad2bfe07ddfd69fc571f6b84e6d9bc78a31bc704ddaf4557dafa31abdfba67edd730583e4d1a5b98e45c146bc01f4935ae7ba34b95af5de9928d647e66af4a447b71753d65527a5c7ac4bdbda9df77d7c87635373d82472dcac7252d5724cb20a1799a3065769316d6ad3d9c4df8ea8c660b7db9b13dad1066d2748662172aa0c24f34e2213c68468e229b3ca490cb2cea2b917a5d8e612df5ada9ff464e2e350ee752d23f3f93874ac3475ac25c8be1629fb5ac514e9282e6fbfbe97743a35c8e6c6b3fee2983ed8776a1ef4d487a1fe62fd567fa1902e077c416ac6167f52dea898c25a61fa7f731b3fe8e0f7ee5bf9d617d01ea702992b20a7c8af8a9090df478dbebfd768c017b5e37c64a98f00f397ceef8cf47f6847cb2146763fa2c7abd0a9da3a0348be005d6675b52da8e37cde97cb603817abd00ebdd1aeb4b1ce1e2e5fcc775b5f4288d2239193e38d68569a2f02c5ca917e7af6cd22f079a3273b7acfbe187c1ed5ceb725e11af054bfde2cc1af059d5d264170b0d6946daebf61cd2d9958733d7367545f5f1bdcb72beae5bef37aeb5e248afab4772a72be10ed7ada7f836f39338ad4fb7aef637ea6ff02bdaa9c746b437f521e0d7e8314b5d7df336bf023b860dbebe641177695097aedfc555b48cf7dabbf33d48152523e6f7420dc3eb639ecd0d9068c3599d4711cc0e3b36444e3d17da6fd5b2d12d1d4592f4432cb3a7646ed786e8a19e55e3941f3faa8c742e6c39e8f42713d0a4574148a1653d09b415fb0de5be5b1622d739fd7af1e8eb17ac0b8854f77bda032e93cc7be0595a61c357840fc95f0e9227dd45b201df47193dbf3f0096d3925ee977fce517f4b9bc2e3ae6ba6b3aab0bd82dcadb5fca36a7427ffdcfc8ded563ee4c17aac282cbf5da8915f308a1aa422334f31ae87ceba255d424e8c4a239914ceb8287cc0dab87cf1f00539edf092a6e54a437b876aebc81e34eaea6af4837c4654a972c3e8acb7c8734ba51fe628861853740dfab9f5e91ed4acb05abe13b12292313bbde42e43ad52aaac75801cf39fec1fb58be5aef5f408f8ee2dd62fd2bf33bf2c16527f9c30675e3939fbc2aa6fbf78316ebda2ae5a455db7557fec900b5d2dd1bf77fb5caf3bb58675d760dd73cd521f0f512dc68a8574c14f775b82fde3615253b00ba167603cb38f54123c16efaf7c869f61a12d9da632d9d4f33517653badf98edcbcaf88f55ed3a1ed47e1a81435e0f38a3497dff1385e8e81e8bfcc6a25550ebf2f9db7938d16a592706afbd87c576bc644e33e75cffe3c1ee9ac836ef0e7b6f4f468eaac5fd2215aff9d4a8f8f6a80f7beb0bb34f1014f67462df033f35dea8d3e6dc5d4330fdb16e67b6bfd30914ec8eb5f80e9c38febff6db0f7ffcd99009c618dcad19a5ad5f3b9c0f3ba827dea1a14d00609cd2f0deb9e37fb5854eb3a0d02a661de6875aeed4bb89eaf462febfa0f70661d8dbe4b967cf318e382f6ad39eafeeebe0feb7753cc798fe6757f93f5a4173e99836c8f8ae95e28a68e504cdd266f603e667f9c93591e2be6b4a68bf946d21cbc8e2145e1351fe7728cd6314a6bda53efb371bec6fb772369ebe61db47f6f1b924e9ad39a4ece6b3af99b35b76876432d82177123ecb66fbb6bfc03af74d341ac17d94e50fbfd7e73cf2aa690ff7ba66fe668fbbd0c1f279c0bdfc57f7897622a0a7d8c25327e47d6e49b5c795f3e87e622cae473948a899eb931e4d6674b6ef9ed1814eb015675531f394532d020bfd8a973cdbaf87f8c59d4e0156c7fc27825715d59391ce406807cb073dd302bc83c81c3e8f486b1e66296cc9b762c9add27f33a7681901deaf89a276c78a24f0ee078e9bd3e39245ed899a64cc600fcd081ff0370f209ff07d60bcc88906bb2aeb64c57a79dcc116bebb843ed825a5756ac7cbc21f345706dfe3732d7c485d8b829dbd6822773d5ea77f539d4bd68fc2280c747d6e776713e1b99ab72477b1caff7bcc6ce023b33c406486dcda98256cc79af9e1ff6ffcbc3dfcee8b9da9ed9fa6989eb2bbadfe083415d4b9089babc3fc457fbfea26e7d256b15387c4c7b65e7ff94aae5fb5e1dc8895023a791b36817e3f3c0b86e072e3d8b978f6f5f9d8c259ef0295da2af3d973ec4917e3b404d9066ec93b198d85f1e9767750c5a33bfb7839a46a82d979b4cd01eae652956e4a3d68f0198b20c79bdf245c01c8fb08c89b11f6b3a0872e477ef9aa6c0bfb85709995ea37aba1e6a8bb8266bb5563ecf968e0eb2fab689196aeb4cb6755a89dc359da4854625223ed1c6dc19a44e54d70e039bc15fb68dedaa64db478bcadab3bce87c783f9ce56c506f86c453e9ec0b1cc4cbc2de44fa848431f5b15decb28e317d9e80deea56742c5d9c18f0bba2c9dd4be8957b71e0b91acf97d88be0a7ce1d1ef6dacd668c8af45f82be47d885111f8518098e1e61feb043cf432ed60fcf457babce43b4641c6343da9f0499881b6be957e693f6db966747ef6ed8df33ed770439843a38359fc7749cc0b4a9ebe9b96dcd53a069093eeff5f78dfc6ca1f30c78d5bddf22459be74e583c14d3ce1ca4a382dd8a2672cf41870c94d1f26daf227d2b1f6f12c04dfc72b81cf008c5cb07a25580312826db6f8c19983e8e1ad421c7ba58d9d5523c70f95dba9cbef65cc1404e60399988381fb7db5ff3e2ee8e3eb775ecdf0f3980adffe177fbeb0e98d67c5c6ea1fe18da6380175379c97aeb8ee4a7bd00f624617577391ac71e3eaf35ad58f22f34a6662d11ed2072c4b3411c46e632ec433277293a97f5bcf6ecf2f6a00f2ecfde3d8eae7cc6883d6e60c33fffb1bf95cf1b0fc902fcdc81af2a226d056c63e7da3418d3e618d1f964335a26ab30b82ada07f8fa5b6c81199d497acbc390ae7951ac8fdc2ea7a524d8acc7e56744030f1aadf9c22a7513efea72596895cb6fbb8cdef71d8633f8a4916ea730ac7b3028569e5dbf45fc37a2a1ad7ea61879205d4edfb23aeee779f25e2a26db2f11e9916556886a11a0fd443e877d11af9e7bd19e60ff5d7bc3e7207e2c0dea18adaec6f4ff6a0fcff294b4e128ea8a88335ab6d8e6e49eb6358887bb008e5c5954406347abb3013557f0df2adaa7a67ef3799f324a240fe0bf550ec902bdfd0b365b2f6133c9c2f1c392b5a61ceb23c75872fdfdb99ffde3f31429e6e91792817f384f0fd89755bb2f1fb02f2b3a6af6a57f06cc634457720ff622f8c22792a5dfe50b85f6635dffea94bb1cbe6fab50ff01eebbf83ee96b60c0d7aa4ec6a25a4c1a990fd3761bc91d13e912a5c721de1637a6a5797dcdb317911b3f6435ad2017a3e78b38ddd66a515f1777a73cdde419d4a9805a59f668573632910bf20f753ba8d455566b0cbbcbe7dd2f4fb4cc3d0ae93c2f45755ac8b38f544cbc2f51f8a8f76f7a84f7b87ffc5e08eff5f7b5d6c6e4e0faa53fecebf8fd675a3ce07184ddf7a8165fb63a49f6e624dad676d49fe58ac676dbab05f813fd0f605f03dd654b2d614b578fd175e961d9398658301ae25be06ca0fded58abaa9191b05cf2f847f2c5909eff131a2d41dd47f25b4dbee723c77909dbe177ffe6ccf5e41a44e357a1735528d2676637fd276a8c9d9e7e13b56b81647fe7cc26ddb9375c79411158441ebbe79a380ab099328ab57cefc5186934a3944f714c6f84ff2673cb1e1fe8c93e07a8f71b4d9d593e21649f5c51d1d9a2e31af7aa1b4bb5fc76c3e8cb2eafd7bd36cd65ed5a005e5e57432054d41d25f254ba19d998ce98f62f2724e8d228f637898c68cfb5d16bd06f0d1d3a74fc2d5034ea6a5574a910784a4b8d62bd191b8a97ee3751638f9b84cafc8a2a24d3cb761a7d911632bb04dc2d3d27f4361ca73563abcd45871ac6754c48210236e0642c87e9a2892d91d57424d2f2eda02dbf761660097436cf5a6fc7feee39d2b5c6d27c7a3ba888d7465f070e30e9db3369f08bf1de6872477e53cfc3dadeacd167b9b79cc0e7f59e0efe3b1977d3c478aa2bc6b156d4de5c072eb7ccf6a03fb1e5de4a21c700fde622399537125ff0032fd986489e5b5e3026bccf2c4a875b665e45850ecf8edc4bfd8c80641de3d1dc7767bd737f26f86342f0c72bc11f23823f3e1475055853881f3671a4cb703e8cbf85f182dc37da056eb28e7bfa30ef0de28177c1818fd0d92e1bda43d214ff4c5f24217af90e8e6f5ba6124fb1cb50877d725027b49bc4687c47c5eae549858a319dca5c311ef497b2ad2095b0ed26473481ecfb20d76aa4581fbf445efede73d15d3e5f1fd25c67bd19c4ec47486fde9c3f32bda2335c7ff301b87e1a5c47f85a9b67db977ba98b7d57ce1fbffabe7e3a96661f699f1f6fbf1df5f1102d2ad3cef44c5cc8995f42fcc74c9c4fb39d1a65fb8a0a642d0b6dcba05cec576314a6ad6717d817f9aa85d17fc86b558d7eedb5b4dc5c6cf43c7d140a067c76d5f4ea547429f1a0bfa79b8b1de03a800e83ceb76d155311d13fb5f8063cfd065b882b74c5f4505ba534dfb2c68c5d6da271a6cd685da1a66f7a59ac81fecc1fa9b458b24b6dfe2ef219a24339c47258c574a906b80fa59d68b3c7a3e993afa2eb717bed96fd6b5bc5cfa336c4f99615e714d8bd5b3b57b208bd32988b6aa1d63500725163b78a1a1c95d9c72f59cd8f9b789a8ad1f64d9f21baf67828d4f64de6a26fab4cd7f5f9fdfcb9d6e327f91d4ad48af1512806bf8d7bebb1e36256e2afec560db6a25af08a3ebff6ef473979ad73b53d9d0bbe8e42c1432c84b1045f97d1dab397fd35e7a2a962da488f796be438db5c55e2424e95197d059b95695fb78d9cbeb0595ccf6dfeed7288de820ee428f57e3634bcbf374c4f6737a54594196161f47c56c2b5a19b82a20619e8cf0c6a670976240fda3a15d2e2c4c2b7ce843e5dd1aea71682b438653b9a6e6ce6bdfbf08e0ab5ea4aabef13b27a639d3fd058416f53dbb82e581345d41eacc34d31eee7c26bfa2bbdeaef6ad6f4f7fab2bf2bae90a4c53553bbfea64e182c5b5f9b465d719fc17e5782ed6d0e6d4d64b5a0fcd9cbb9dd49f36ba6a3fb8bdfcc03aed9d7f7192e3afb78dd7621d21fdfa2f0f1cb09a7a51851687f67ee65cbd67359e2e74ec33edc903ee7734509ff37fd68f002ade6fd7c2b96c14361e4bb1ca6ebcdf9239578966af68e8d9f9b0ce76d6f6d3377b4cdd0ffb6b5f31b3b892fac2606cfcedcd1aaacf30b91bc953a8b7fc7a75fc4d0dc48fd93a8f51683ef9a061d336df8a3ceb395d4e9a316616f594a485f502116d9423cb9fe7b89e4ebfa993a67a2d34771beb19e39672ad8a9c1ad8b418aa7476eb110f931115f545c1515ffd68f2f38a547e181df6ff298bb77a2e61d882922daad638c326f46f5dedd0d9e7b8a51d0e4af26cff145dcf81f736625e1ef72664535edf9a37a38615c846486bdcf05500f484ad69497d4b6ea05d28907bf217d4f000cdc2e760be9d16113df15b34817562c7bea9445ae182925d6cfb7fa2a8eb9980c7e2b2c8b82d8672403b6b1eaf86fe7a8469955d1b9c27b997d8698228835ade33226a295878827d53c668c6d90c36fd2651d1b3d1813957b21c4598f063541c6d2e5f475e026637174ba1dd4748cf4792477a37ea2dfa511d4d346bfdffd11856417329610b03da4397ede0d3bd91afc08d5f20b624fa3e9ab3e7dcb2192dba32f6d04324bd6c43f7a8c71f6e745ea263a81bd856394b6e5642ccde5db01c93a5a3e51ca60b8a6ec533f90fccf5daf4e4933181fb7d78fc1f30bfcbcda3c1fbdc1de26e759a3375dbbe945e207eb0cf79b76d24b9d57171d8502c922c7c15aae7e58cbf4a7b5dcabb096df83b55ca1b554d5c958a422f4dd155ecb0f581bf4bbc464a83df4fb7d3fa23263f66a2db73faf25da27f1f6a7b5dca2b534040ac972e7576bb9af7d5807b5a82441cf76687fcdb7cd5a1eff6e2d3f9ab5ccff6e2d3f9ab5cc7f584bb96bf7e55aca5d3bb096e12a74c87c5444ef9afcfcabdfe98cb52fabf5ebbd8ec1d37e8eb9c372dccb1ca7f8298fa99727a5bf88c52c921fee9176d4a7b66bcc8bd63769011676930b55fb33307e34a695dddf8ea83dd74414abf9d4515fc41dc13daa144dbdcba9aaf573f2795c4b5527d608bdb7f0317e8bfcba6dce4e9cd647d9c4023fb70b357e7aedd6be4f2e88c97d067e7f351ffe565950032f6a6205de9fbf89da81f8de0ceab7603e49b4d3b3d3c4325a2fed03e214c9b688677219dec77e5c87f0c37a3195e17a6e3ba873d6fa7347cb6fd9a0d24d1894e4effdd81d3993ce7af3be0db15b3cd9c60aaf01d926fe5ef7fd30a32cf5715bab51d78fa776a02fc3f7aade1ea3f352ac0c5fe2c6b4d8c5c5406e20693b45fa9da3f6e2877bfbd6511bfe0d73dfc46a37eb00fb16e41c83eac6ad06712767e5cdda7d13f83bc43d52268aee6bae59978815c933c1d4df51092c19e25e5f869afe7fd4bd597faa4cd32ffc819e830b5013394c5010c111643a13888280b28203f0e9df5f5737d0e090acebbedf67ef7db07e2b3236ddd535d7bf183a37e9be6694decb9b94f406a9e8046a071ed260fd4d79f3375ea7ceb583c09b7c665f681e9afac7b889673ebae7098d3731d02a0e1ccf4740df953e0ebaf37d2ed7b0407af416e759e21c84116083d7795d2ecb7cd3bfb706ce41a8e90eaf23c9873d5f815f70cdbb4c2e823da196d396cd82e34777e3867ccd662c2cfdecc0d29a75a7c764e35c4d124b989f1c73febd4ef8a2b657703cc1b2ade9656b0e8ef73e0492c364ad915c7c6ab7381ac17f67aa1e629fc3dd7873a2e83f9d868ed8a249cd4ed65abd6ef579a2f7ffe36883cce5fca363ae45ef083e99b7f6b1e97007eb9e5f1dce8f9db1517807c8afe77c611f622c81cfbd1ce21ed38a107dcbc9c77e2b89a55c634eacf6e87d15e6902c891747f82cdde233f585cf14308fadcfabd79ba77692c7f2647d95315ed345163e3f1d2965bdde6aff65f22c9a27c40764623bc83036ef22d79895b77df51e45fb0c6c6e7ef570afabec4bfbbc7a21923b9bbd6df6f736f410985e6c6b9dfac966efe06fc118fde1c7de80bc15185ffc35f98cedde3a7684cfd03183c04fe2ab6fc97b9f0b628c61b1d9d7f54612f8b5f7b63988e4c9fa849e49f274f638ffe0f35af5ef514319e3a9d47901402ba32a1ef9348faca1196483114c083bc1fdd81bfcdb6eef62824d0e5803af312b22fe8b63036f945e1ccbdbaf7aab0cea85ef70925ae3b8b8a678831c4521c03daca9dcc0ba6794cec7cd35a2afe829d4c8ec34b43f57bfc0a863030f706e56271ff2d5a3f70ac7026acfa43eef26464f1ecf992a5f08c6759cd7e352a53eeedb511f1391dc831c0d17eb4201eedd0d7d37cb16a6706f46d5466d08366f9e2dad0dbd77331bf7546f62563da3f093cd99f8b6295c0be8b51df8daa0704c16d106ee3f70dc5c7c49fc76acb9e1e1be87b1224429f65f50f51ae1985f9ab32637469bb26e82fead33c75c9ddbfae3fc51fdce016ae93b32d7eee543e27fc7bf8bfcf48b67b7ea3f00ebc4bc35b96d930fde15eabcb5cc41f25b18dc5c8ecf708f6fc8cdbba9c7cfabcbe5b85fbdb04fadaaaf1db6f953423f47453f577d1d38e8857460dfa1574699bad0cf09f1696b75728a1cd987d75aef2ca2549dd8555f0d92bbb3495509e2629c9a0481c71a17fb685c1c298f9d11ee7d0bfdba2736de37e4dbc19f5cfbddc695ac64158b6df6dea48ba55dc576c7bccb9e190b30a023f0a528c856437445e267a44f7e793726a1a9e5f50adc0701681bfa038a992b1919f067dcab20213d534e4f7bec859f800fb3aa9e3faeec12e881902e1883512633326780e991b8bda9689bf353b7c7298d09578dad9a7b64472980dd561d9f5fbde3aa3bae76ef8ac9eae249fcd51de3deca8a109da187084d37b8a711c91b83baa0ccb1b02fc839b08706070163f2d8454d8727d27f24e9d2dd32d977df5bedb36869daefce813d414fbd09dbd4d5543ec3924d3a382ca43e99e4ad408cb57d1e6a5fe07e8f77c2c1d5b7d6b11737bd29be74729ed937e7232a6715d73883ff7169eeeff0645471589d97a9f314a64c1e426e5d6f7a207e49647783de51e1ef9b48cfe5485f72820ba348766a412dc88cf669fef2de7d6ae9e7524dd6a917cdaf3ef6edbebb095ff8d2fe6d26e43dc79a338bc34786f8083916dbe418be2ee85cd3fc26e7ebebc979f2fb93a763ee7ec9dc163d6f58d366a77690acbd8e6bd2f2d863cf3dc06330e6af74b76c55b2faaf6481962f5ef2d8cd43fe3d42fcdb97c4fe56c3bfd571c4cba67df138f1ec68814ed3be42e48d570ce81cda48ebe4854c4327917586c73c6fd6e279bb49fe801fa1bd31bbd89c98d93d23b3ad75ec8c295f11f4b56182d988c40d4a367ce817845e411f972f2de7d409ee130dbd9b71bdd1aaa24fc01b3cb0dfaab8e2bf84564eed6c6b0e6205dd83fb5b67ae96efe09902922d518678f97a44f6228cb1cf1b423e83dac007f9314bebdc9fe9e937f0d7c9be58c46be2631ebf6d59a8eb19cc0ee906e9113b2d9f57f9e8d4bd37f0f98de43707e363e48b237c23baef087817a2cc1b227a16fb0dfac8788c7edff06fa4b39cdafd4cc7e33f2bedac29b19caa631bed6b0e8dd9edc9e0e75b69f960114f79752c53e7a60bb7373de33c7ffbf225f07fd449f4b60e0703954b797572827bd50df865078b48be7c4d98f7baf7546d7b7cf0f26673da86f17037d977b19fc878cf505739233874cd3a423d7ef79e0ddc23aeab7b60ed1b5a0079d1fa06645fc13ae9ec1b92975f1cae2faffb4b8ed2b2eaed561f13f2686b4d476e0fe3c579c580fe9dbda65de8f77cb2adb940749c375c175affced01e31cc41e89b83c8958c6871c4fb863ea64a90b7f356f39849252fd2a33aa964437ac3c7bd3757cb21b6b4888719e46a942907d78df76f5ff8dcd43dae2f8b6805e7f1be4857f87ecc6317c77d46f1e5373bcc6f6e6f0e98d08013103197af910cf4ac6bd013bd3f3ba47388774ea202ceeb22c611a4e724065c6ae817ace338e460a6a733c88140fb24ba919ebd323a3f98594c56e5aa2d8ee7fe226425ec0b3f9dd7388ed15a63728d505db37a704d4307681ca7f35788f16754eb047d4c48cf5573b989fef1f5b45c3043d2c3695ef7515d1af6dd31753ca4f98c89e52ef08a4cc73214e61ddd5bcf7b9817480f75c241eab1559fe67dba9be409e8565c90bad2eaa458f9702bdc5d736a5da345d0a35cadfa3d4f408f0bdc63ac03b68f44ee797adec6ef3dce0317f013a2649ad89d5e96e003c079898d1d387339fe56d99e8a38cb8c30efa9e37eba482057e4b44472fc3e8ffdb42972539d78991e466f773eadcdac7ed7a6ce8d9ab7ee553006542dc7eaf788c80e89efaeedda2c2b64b36cfa800b4174fbda27857daee3647a841c15121f713297e38b46afa57d41cddc6ceaf7aca1d6849a9b7491547351631790de1681ae8a76e617f9421d47d0bf97d8f81767d25c837d68ebe2cb585f571c5f400efdb8c6eb6c7f33f629ffe86342e352abde8f89f149fc78a70df6ebbdaac5d1c93b9ed7e154cffe7d0dce836776ea6fc419b6bda1268e19ba0555a707357180ed54f5a78235d1a81afe6a8e6cad8ed11c1d6bad577ad22ffc282f7d6fbff1d17631593bf3a33960a74cdb98bc6327c0bddab1bfb2f6057106b3aa725c9fe43bd07126909dcff01da47edb7f8ef5bf4e5c69f00c73efd2c1d9bb3cc4d60be3762fd962f0531fb2938f74b064dc8ad5d0df0fb6eb864dabbdf26fd7ee5fad0bc4fd37150ec3a0fedb627912db156c9d7d774df1e29b62b636079137596f5cf6f3017650ab4eacd5f7529dc8e8d89d9db705bc6764a71885d6d428021dce08eddde52d37fdc25c476bd71ac07ead6ba3b2dc3298665e483ea553e553428cda4e1489c7715af89d168a760ba71a89231e8dcbd6c27158c091c5f1d42bf8f312c4ebe0de6fc0e016727c1cb0e6a2ccedb1940fbe955ffd6eeb4c95f3b6d234dc4badea1550d79be29876a14a11f8494c0ebde34ce375058a9696aad4bf7cd5750150630ac7e97ae5badf1d6da3f69abc96969d3a59a596f6c8ce806f846f831e0713f896cc3700b300f236eff8feef705b2a7f6d0979acc487a608317e3ed4ee55b5a1fb14af33f882da3426cd785feb1eb3eff26cf173d83a1707e729d1f9bcfbce3d954df9ea9ed5b3f73435321a9b78097f564df09b77f2843e9ebdf377f777739013dc074bb548fca09d7ffc022327e2fdb0856573c6583624f66ec58fe2ed03551cf29d5cb3c1338ca62f2b1fba5a1e2eb5c6872a439e73de47efea60c60e085fae73cc714e74de7b80b13350c5196ff5f2a17dcc875f42be5c9a2c1a2fe44363feef65abbb9a51e2b3351bba9543c0a05b2e8b29e259e5d65cc7aab5be5673bf8866f57c6a9ddad20a7badfbbc6df9ea796ddc433f841cbab96d0e2037c31fb1237582f56fdd142f980faf784d835c1c9c7739625dbf936b82ee69e58218ccbb7b60c3257be6e8d83f7d5f0783e237d7a1e7be6d84bc581a34f66dd0afc6668cd8deb26737b1d1e33cdb9af358197d64b3307a33b919e22d07f518fb0baecffb25cf5171cbd295e283a305dc8358e619df7f43f767e87e246b8c090bb27f6b0eeee61a7af31771bc34ce07646fd9c56060e9e7269f741c5d7c7390fa9359dae044b0817b340217f336c690f8d59710b048df6dc5b713e8559e3ad2e6ec4bc33360796159f2ad981bb4b76a7beae57d103fc3f7c13eea198cc7c591a3b18c5bb0b866c1e40bd524b89940dbd93f5b9dbd2cc22e8d81bf09f6d8b6b093c76364af5ec8623c4b01f0bdd07b4f5b1de7dd02a63560a06c785bfbad1cd93c9123d55a4799afddeb04f5b196bf17cb826d256bb4dfcec919edff47f371767bf219e394de2a9a20b9e52b24479ed5a1cd969b55856f4afccdf99c3a56f998b3cd811dab04d7d414f24fea1a077c5cc2b050c736af437eb40cb28b921f80198a6d239fae1f7997a13f02d086b064c6e7e5c67e9393ba8f041c47baca4acbf8759dcb737af8fcadf4e0f909ee71017cf6c06baacefe5984d382e2c96fe8f99b30e3b7d5f3459bdf709bd316d788a5e0d713cf9a6a9eb295c64aaa287f6fc3fc53ddd8d9263cff51c7e3ef759893f367c9d2f27a2f921885d9f8a4fb358e93a9b3992a6ef88db53a995a6ef942102b5a94ad4b76ed0b81a38a3ea38876aa6879be34302f5d97b901be0a9d35d5c9985f1751668414a66e18e37b912e1c3bee2c869c5ad32ca1f7ced0031d71c39b2c3e67c45969194cba23311873c42e1d0df07d32bbd3d7ca63cf89a50dea5e49d057845ba5aae8f13ab701cc1b551adf611c3b31737138f1565d8ff1856c9ccf3062ad8ab7c36f1dfd1631afa770a4974680f5a7b08525cd9be07bbd3de58d7a08bc11b0370067a3c51b67bfe58da53a9efd96372e086f6c7c7cbfe38d8b5ff3c64dff1fb7648b57bc510f7fcd1bd17b4fc8feb0c1d73bfb17bc71f6843756720cfcc077bcb13ed6e28d608364609bfc0d6fdc0c7ecd1bf5aa6e66bc477af733dea82e37fb0e6fbc45d4b19a379a0756a678e39abac651c7275e83daef35b3d456d75998c73ec430eef09fb14f88eb5339065908bd7680f71bcc921d9f97d69a5984d3aacf0db601ad55320d83b552b28c2f101e260d1888675075748e1530aa1904ae141f31d603c15f28a699633a0cf129304bf6745e6e4e6f55fd62751cf11d33cc78ade6c3536669cc63a5b566b96b86aca28ae3b38fe6263c77fffec67fb3e4efb5af36744278c39479c42fb7d68ab78bfcea8f803fa6bed0f04cdb5a011fdd5aabcce8ad4ede7185f866e98fd8ab8ff162037f945f7d81f0bfde14fb5f2653c823b1f0b5818fe8f2d8e48d2c0f725a3d17f0a48eeb8aa716be989596c5a4cbc99c213cd9adcec3ff2cebd7f8481383596ef8186300e741a736a234b9c0578f902f02f814be107d7b4294b99355c55b8b47bc752b52bcb5f7912e905e4a727f9766ce54bcb5ca2dc3c75afcb5aa45e17dec9369786c954fa9b3ac0f7c36d7d177aeb1ee4a7216a3641a6d40c727399c385fade2e7cd799c7ba8f39c9a4c0307c70d2177cd0f07a16d629e81f33218c85bda105b665de7a175f38c2a1fcd86c739454fb12a4a9f8b199bdb9ffec6cfd5c95f7db739b18b1dfb56f963106d385d1ca9baeea48b778beb5a16dc3a7612917527abee731ef467d874d62be677649e0c62a3fd3f3c4fc5d379627f314f0cce6ffdd2d376de2fc49198ec2b19f35f3de69dee2d6024e30aefa485efe61deeead3a0d7299d1be3d7bd3f002b8527f850ed392538c795bf16e3350cf9d9e87c5d4e56d4f1e9751b7f1ee83cf205376c72d5308614f12d4cc147bf91e690376be9e7b48d75175cb03f69003cc88da17f4900582147f9e4c6b08771cf5769e042ff630db0f1f8af645cc51d70ac048dabc2053a3ec0d3a8e8a98571915f206798caa1f00eed3a3d8cf7b7798c1d4dfa2ea9adf375df55dcb70c72a4a74476dee1b6e1fb1ffbc48bbbba0c6bdaaec5c0bfbbfea0026a2e9a77d66b4172ba695cec74a97fbc6fb58c5d4afd47bd6852e845633801a9c3cba09f6953bf51f90652558abee76194eecc17f9e696dce0059a8fe7ac1e9f1421da4b95723c74c3fbda8505177d2f753975ebbc3a520355d50670b14feae3eada802de45033ed31de6152d7630c9666bf8bfbfdee3cc704e7cd1e1a8358d50506244f03307330d671f4661b4806b3feaef5fd6dac4d0aeb1fe370b344076dd733367d0529dca0b61ff269efa95439925e7bb47c36f07b765afe666b1d5efa288e771f2b6ad535a17d79175f2ad0750473538c8325e253adf7402ec50cf7fff82c5c2e25f875fde732a2f5cd4d2f13afb72e0cba9f89f17172b43ab70efbc0bbf5531807a757e7b2617e76a272d7b09f5c1223e83f50ec711e6537e6d2c5ba7960f353e3bbc3ba79a063533d56f2a4db9b6c3b62d37acfeb8d5c74855abe119d39bd2cadcde54b60af6a299fbd9260cf97e7836dcde34687aeae3ba3ebbea9eb22c77402c4af16499ff7b5417f67cd7b5bb04182836255cf013fc99b776059f5189d6d6d58a8d6ecdd3e4e63dbccaa31d576c1e2083e9881c28dafb3f05c567def5ab2149e15f34e38a87ac8f06e9827b52da3b3852ad5b68cbd34fbd956a8ae8d782ffc054623c4e5aabdf179732731a6c5f13a754de3e271205f709d9ec56486397e85815be10030b6d93f391acfd0b9eab311f41a4ca6497f08bd85088eb2a2e5979d964f6cfd45edb9096bc8a847905931f4d61306834593676bd85a00fd4476fad979b29f1fecb3c1d3f8b57a87418973fc5b7458f925a421ffc5b1a9334a3b987cd8aeedd0738557faf6240e53d9ff29d2e3bd3a6e43e23c9d7734318047bcc0e0b14c1f42ac7537c9af75dea2950fdd265f37fde2363cd653703d17e2dfe46f67a7d7353e77fa9717c6ef7a0ffadbd2f639391765f539fc9d19ee5305eb1428747f248c338c64785f417a11dd17a93937a871054b16ad7941e376ab1319be732dc5a527227b755cf3c89565302e53f74fc2bac86456f59262693a9011efc3fd3a19b47f6c2e88a99e70f5b1450b7b186a1caed013b3c8d8e5447ea4635c41c7686aa690bc2ca8fabdab85f5414ab60fbf719dfdac5a9f5ac6bb05d1cdbbd7b3e8facda3eb9947d7cfc1ded95479f6efdee8e3cdd6f2db4c4f4b75f2512c8e9b8cd8a8e36d95035ce92690ff5bc7ccde4c167a59639e007d331fea664806a4947e89f6e4caeeb5e68aee1f963cc371338f35867b8063ba751e94eb0b032a6e47c5710c26f34a16bed3c1df795127abdbe22867fe68fcb6d5726c2f035dadde6c9d0f2a9b1ad1962f9c83669ca79b2a557fa7d79d7e66544a17ac6c00af88320a97fa7b69f23ca59b9e40371de531f5fd272a3f3a5a9a86bb1599cc1bb1b1c9c137bc7bc04757177a6d96d647ebb7d2fb68f219b41c5d9f39c2e03613f2cce4f67f6c1672431fae05a937a2ea9d3ca4a71e97d2ec3cd3cf47343e270c2255caddad901e14cef79bbf3da857dd6a0feda323c6547ef04e7c5fbae0ec93538db1381f545df455f4ad23f9d933f135a371ba7bb05797a6c103660825bf5caa1f9d57324d7f2bf0a9f5718f57f67cb1a81e6f34cf76c32c542dd2738d73120ffa60519857946ee2850fed7062dfa4588f68f569a98e353877e49e3bfc3b8a8e0e908740ea3166421e2df58fcc1b31b745ef63e850fd4b3d0170d15b6bebc4e772d9fb78a3ae3bcf341663f1e91feffe213fb668bba1558ea2d5c1d2f45afbd02b796e91d0c7e89e02e3b31f039ee60dfca5ad77db898f63e9cfee8535da8ed84815824829d9018591fc3f4b331fee2426fde266fc1737bf2d12afe155a374b06b7a11f1d0cfa088abdfc0bfac923da8c9fca64a326f170d2f51277b5e916ee7ad105da99eb0995fb2a17a5ce5aa295ffcd147b6d6d972c9c1dfdf7e91f61709fa7b7c86bf990def269bd34cc84544b3aab4e11d7373b20ad89b3bf5f891431fac918cf1c81ec85ee2fbc0fe579dbd38dafea64ee4b37af8b8cdb45b0ebde3cd01c4bebd30bbcc461f397ed718de55f949b61af48b8fab7eb46e985f69dd6dcd8d4fb696978ac53c1b5f57d7a5732bde1a5aaf7328de1ef9a1283ad6d5f1305be13c4f44c7df4beb813c15f215a2cb8d90954b8c7b562e8b6004b9f8b48c633f7da2cfd4b27023608c19fd702783570ab15f3bd7833f79113e783e979d6721bbba97ad19da3fab27eff956f5d57983ede7cef1d97923b2bca2e5cbe526ca646d7fd2b48cdf9480cd3352c7fd54d1fb3c60bfb21fe01b207acc0670b636c3546567efc688d084b8ca665a94393fd350ac1ef748b7ee133ca6810a58f87980b17b900c065a49556e9cf93a7b55b97193f726f5f9ba6ef430bc2d923ef89848bfb662d993dfdc300d20fe795c217bab548e32fa7e463d46dfbe96163b8b39c1ba8b2ba89945b4877e2b16dbd117fb4f74c53ed613e9e36391f5251ef748d164f4cd29f4ffe06e94de2d233b96caa7927f6f1b69b903f1d8c967f6456cacb514235a2f5ffb0ec49b27e583cd641a3b49dc77ccf5937780ee40f552b713a53db6959718c9d60a6267fce0fd45c0a842d367b8c1efffedfbe93e8f8061dc7caff15938a6937e4946447295c75b13c987f923fbea05c67f5e5435cf10c3c4cfda385650d35d6d6f3db069efbe17fa360ebbfe128839563d2a3af8944117db126272965fd8d6c79d0db734e60ce08851f660656b18bd69e08db1de816329462987c856ce87b8472513fae81a1ce30d96e5f88dc6aca47455d8b7ee08e9ca551c9667a1efba905e91acdf6a95ff263f2da15f09c96d2d0216fa0a85c115fe4f6eef5d5bac1e2fc11343fcc0a16db6da9ebb85ed58ab8c74f104f1275f08281dbfbeae8abfc233b7c2cb67fecdb51087d2eaf543f26b56d1e3d1b108fd8aa093bdecd7d3f2834d64a8a1570af92c1f4ea11ce6698b1626f2f7135f5be63ef665315e225e3c641f260c5d8b1874f78347f74f9ec8ff2863fe8eae2a9b19fd5bc4f77487bf8da97ad63479f3a1fc2e2783ab9b6cc2a5ce5e7713c4df8c9b27213e80e4afcc2fcde13f5b9d4dd5e3fa6a589f37c79a8e90dea908d19b9ce4579f6b5d8b646c8ae8cc97f899dbf3632f9a071ef0a4a8e9cbfc7a1fd135fad53e80be83d5faf83ac5ebc7e7f84b93d3762fa24d324d1adb1eef377c1dc6366d72e7edda0f935b5e22de569c78d84a4664c03aa1e7523d8dc0af38bfb952cc28c2d4c3f8b8b387be4dd714fbaa857dc81d3e922cb569e01ee3de56320a923ff2884600b3c241735cb03d34363a77763b027f42b4d478d79acc3d5f976f3369ea2bc510d980c9b290c34528efe5303f221dc829f38cd2c78f943ece2dcddc7558c0b4ff0bfe69a7ea117f1f9e7bbbc1cbb6ec8bd7fbccb6d6ea24a3394ad2ebd6ec9fe4386767878f9b1d227dc4e65d8ce5365826b3561ccf2a59ae9e6709c97999974339fb023b653fb4a85a952fa1e9dfe497ecceec05be3adef0e04f34e52617a0e7bdd9e1f9a6f4bcaaa685ae497822d77251a9f8e7e8c6db251f2a25db537a1f6f8a2427d3645ff944425cc7ed7d7b42ccdb21e2d3882fedaf567cf63c967c77cc7c4f856155430676bf1dd6384cf5313f8cf96774a94bf1c5b166a12a61cc901fe837db0a833f2e175f2a7a6deb4368cf7daa8e1585ea64d3890519992bc5378f8b49bc6a46d5623fd8bf261b7c09ecc3388c5e3288678e96da38c739224437a16a3f1fe90688ff6db5a8ea2135dc14cdbeddd27e8731e0a12d9652d4c4c4983ec4612187f9f7ebbd54b8d8d563e69bd06a31875c1b4ce7cb789656768c5e64fcd6382f2c2d5f40cea6d6b64b95f10cb09c295fc308f157745febd9639eea8b1df3aa18939e7378df6947a3f4a538d99af300d7c4bec0bebbe7217f7c0bc91227b539b1c6ff6ec9a7c3c3fb4e0f632d551d13c6bc46ba09edf78c096e06d3ee575d9d9f1e1ca8f396c345af8e915cea1809c9f55c1cebebab3ccfca66ac7ed77904f53d0f720ce4641e434e5b38adf4ef9fd6ff953e5040dfc4491be3d66d68b6d43803d914b58e4a9dab7bf955747f770e7cc3a0bf16263768f7d5a3e5b514d1fd2928bdd5b9bac7158d6d40eba25dbd357139e8b772df2762327bf85c2711cf5b331f7469a7dbcbca4978aa2fc4aa3b8eac333723b41e2b4e4432ad04398af72991eb208346b639e06c6b0ef84c88cf101acb14ebfcf2794b737db57b06f6c724f3c23121ce9339c05f562719c9b8a313007efe2fdfbd346f4d9d20ec937d384b5661dd53f7c0662a89632f389bee8fc7cb89187a1c9ff9d63a96719c0ed12e2f87cc60a147036f82f46b1be94db7a5269fd1b185f5d9876b8f29c6471931a1aa8ff175495c6ecd698a64e417f434882347322ef87a1c5f76aca9e8e33a65bed2f376e6ec02eb34423c797070b9c1c1b65627b7b88532e2dbc9fcea26f3c01702561590fe105d6c8e47bc9a51a471261f3ffb9debcab60f98f62b029e5b475f223ee2c90795bfe051f84e36ef89e0ff1d2ccdd9c5358dc0eb198563805e75f2c32873eb5ae279bc356fa7afdac601dcdf60c1ed5bfd305d2d3f295a1e2925bba3f8f14929999b2aadbe61acf1f962e9ec3b91356fc85e2274fce64c58c2979fc54a37bfb7255a354e508b48d9ed8079fd8fa365a1aac96f48e769db0f41aa1495be3cbdfa52cdd3335b67af743cb0897d4e2f2e37203eebf13fb3515a4c431bf3f01e7e06d1418325d7aff6d2a76fadafe4dbdee404fc2385db5b23be8771a6f4e16d910c1bbdd66232d31c3f92e9d8af62bdc843c235778021beb5e6902b0139c62fe66ed193ebb192deb62fea9d71ae1b60954de4baae4fffabfb6f8dff3f8c322fac62a3954f04c70e0107f4d91c68e067a962aaa1a2c5556d6b6eebecfb4ecb6d5b07bcea9cd8ab8b2687bb4b634f723e8e38af9baea3c0fadc9cf527d3d886de1be0e782ba52c0f0a2723c9623b9bf9be40cdd97131d53289bc994c4e14e08008fd0908258963e0fbeb506cc781be70eec2b4c3e0f8f7d6f73e2051df385cfd0d1909e6b44b22432f2647eb6cd3c9327481e19a53c995f65e9b3f3acb8942746e998abfdd61c94be64040ee2416210e0de12b710f7c123f1db43159b8dcb8d24164806280225478ff7f300b57d09603150ef2675ba563e948f5388bba8d6e37bed9ec1b4c70079df9093e65babf39373a16d4d8b2ab7ddd1f978114e5bef27b8c53797cb070ec75f481d7c0b779f92eda41e94adafaffaabd17d62a8bc0862ef419e11c94b06ecbe6fc7f8bcba93f888e360d1c54dc4b3d3eac35be52df9246fc94fbdde1aecfd6a0f21dea4435f29e3e258d3b255a75dd1ef6455c9dec39796c7e87b6c8ecf5ca9ea6bb8875ecf0d8ee2c37c8ccb521b9fd0bef2cd6eeca99f4f4387eaa1c4065ee2b355ec696630c81eeb1e7b27f8af6707ed552d600013d9a4734d912d2ab77a097b61638b6e7596c1d8be43641bd07ecc60690eeb7cb7058778661edb669f97f57186f4545732023742f275803130474c30037f74ff6227808b56406e4e82e6711a42bee3647651c2cf686b4d992fadff470e6fa717fca2e241ef5e18c480e3a60dd05c87553e9f127e86b639ff767a84eec353a8de63ce51b647957f722e146993c9fa1863d8d578b4d4ba4951fa053a6e44e540f6919c323c690dd816ae64803ee731cec52b011f3a734cf152e52eb7758e31d22982a5b4a1748a31a553cc78c7003c597669cdbab805781d7a33247b80df02166428b2d53b91bee7c2fe3522c42fbd3028b1fe43d60763819488c7a8930d59cf01d21b2f682f3be60adb8226e4daa4541c2b837c90517ea57c3319f8668afd4d9578d715995491a2ccd162de0d7fcee976701c8781f14979952f785208fd3849ce7a5c7087c1b0b18cd837db3246b1cea922e09c7e371c840ea2ffa4c26f904f5bc08c9fc6e87beab1c49fc5d6e40ba4f73a04b36d05f210fcb05737366e8e4474f10d7c4b7987715a04842ff117c3fa8c901c5dd7cf994bc856233ce3e1f3d6c9a0dc4d72645355fe19067dc34f3814af7024ba7b89c6497c444f8f686787ec43e3ecab5204b9bd2097ab988664205be9fa651a11da57544fd318d7a7001e269daf8c7389ca9c69e50f357ebd00faaab390cb12b4fdd91bde2b6a3fffbb6c8e29bd2b1eeea4fec96efa66635ca4048e35f88d5a8c74807a8f2cb571ae68793c0d9dfa18e2abea711abb26cf3926c660aaec10e86b45d7812690a395d95644f9c36d24fb300e1aaeab2fd5c42fdc9e715b72f5da068a9e16b53f4d83ba5dcc43013739e61fecb7f46ebfe1393b2ccd18ed398c5fd9d13db10e9e9f905dd2ea7dae93781dd22b68dd2fe1a34a8f6ce5e487c141d1900d0872d75e9afbcb9750ff76e07773de82f7fd90ebec10dc476dc41e689bfc612ccb621f8e17f05f8c76fea33269fbc09d11735b70aba147e58a38940fd61bb185c9addbd83892c77b0295e377606fedde0c1ee07e992396ebe0b8dbaa44cee977e71c74ce977c86be0f63c6e7478cf909181274cd69e614150ebf5d61cd1c2b8c719fe433a2e7766c0baecaab25f6007a0ed91f465bffb7ecc7f6850663c23272dcb61dfd27b6c4ce62f99d96cbc836f0091facfcbbebde34b011ef1d636cbb0edfc6fef051e3cf8758a398ea6e6fca38e61ac9d712fb62910eb5ba389369e0601c6646853dba2e6cd3ebd648c4987fe1fe132d8c66ae4fc95b9957a488f7c5f305f1e0a7184fdae0e825626857f8cba1987674f67f1cadea8b11a58ba37cd99a83b19788475d12078e25ffe30b8308fdaef6ff568bde7c01ed85ee71c207aab1b774056aec528474858ba59f1915cf41c567202760a7e5a98bf468296ead8719cfafde71fd6c3d5eaec3d21cb0ae94f3aa8468e3c95a756524f6a30f7782f8f2d9b48e46ae1ba809cbfa9218ba58cf2239377b88f1adac69615b11e269718513bc4930961af12905e8bbfc047a6dfd16e318300c6d73ce6c2d07c918c0236efcf2f39363aeb71b8e2f909c5c039e341b57f9153fd0fea9c182def0af9f79a6ec179657c76764bbf00bf6acd95afe69038e592ed850f3913bb696e7b6965b36da83067341f4b336c503f43be9e803ab30506d2d67409726fec0a934e6bf386a4dc7f1d936fd077a467ea17aa09175c2d7e26faebf2b754df188f41cf4bcdd247f47f4b8b4a6ae2f627d624bd9e95b8d5c8fe421c7de5cc960902d4b1d0f1c698d7d84e31cec3737310adc5f5e8ce410f266d36a2c8b4a57d782ea9dbc179f19cbca875f3da6be6e690e62bff89cc23bf4f3554dc4c8191b1ca2b3c61e944f72925f6d7315aa523f55a5e1c536d7d1da7290fd36db5a486f1ec45eb80f1da8cb913bf6c73efde28617728e97f54f445375dd9d9c203b62fc261fa8da3f6150fa26e49e419dee4cc8032a1ff03e66ad235b1b7c1d573599176e6f5eeabd69ea70f105d9e068cc48362da19f1ecbab62dab185d17bd6e85d7718fbdd5eed64df5dbcc9f4ea4b3cee8940b069aa3c1c05f1c55eb55f73b05d218705d346b8257ab92f4454ced5f0e222bb11f280a2935b90dc26360dd404c61777eb26696c2ce263075f1cc4ce39647ff2bddd2487df8ec41f88cd3ddc4d5648478b5c6e8e6d696110badc7ab09bdc4e60930880b11c033697b9021dd09fc437c7e413791c6cf44d5ef3a369e8c4b2145faa5eb12e67ef35713dd7c7b50f9f8ef9f3507bd1336e9ec417fe64beb2ad7989780da1a7b2b1cbc1bfc678c726475ce7a650c7a55663433a50ef33f68eeb813239f3aa30bd55cf93c3fcfdae2f036d0f4811b2f532448f3b448f64be9eee81e33af67aabba86c12d62dee6449c135cc4efbb1fbe6b69c67c45f3348d3968df4ac3c616004c4971a01ed1b7adaf30ef5a55b308b1b1ac4d5f119d7782f4ff97e340368a6d6485a5b3ef3627de10ef77489f0919f7b2bdaa93cfc0ebcd91ec7893f571e6728383a39f829985e8b8f26dc417a757f7bf79aff2ca16c755867424af4c839d1665ca64f5985f1cf3a12f0cae6e18d534ef0b50470b7c7557e7ad0ede5dae8ff8fc431eb848c6197a3eb556e85ad8638b44447ac0b6c2d8d0ac39e8240e8764eabd9f96b21593e971d5f53320fbed6a73e7d811a05f0c836c1cdb9c86b639453a7cda79d704eb4c3fbd8bc4c6c00689cb35d2ef383fb0138cb788df732f97110f53315feefa02da3ae5ebefbc007e25f67d9cc07fd0e63184ff215e54f79320762ef82e066dff0ea9bd96fa4febacdd186aaa633531ce5b6b75fae2f8626bfaa99b8819a691d59b17e6c057d1da52f6dbdbd662000bf5011f6cc98ead1427fef81c7f59406367c75a071a670cb0bf1cb0c954c78a79c88d6def454abe031e7b553b34004c77a6c9eb079b11fa47d88903ff0637db1c5c2a5aa07d905bc06eed27d3241aba943db605fc5688d5a3f9bc985cec2bda20f518f0c99367b7b190a7a11ddcbdcb3a17386703d71fee2a3d6b82e4ed07b5de535e95bab57ff1fb4bbc026190ba11d2affd996dc531cccb047c1577b9b02fb15693b8047d30aefc8ff839fe0ff582686f1b120f7c63c1416d33d43b029e4ed8f2fbfe3c1eb25fb19fef93073c0f44f3a33b9a4fbfb83eef1e415faa6d25c47fbfb47dfa9416f4f305ed55d8c34c1e7c9906c6bcd6a87e2012d4085cdc04ecfdd0ed4d4f2ec723bb0ac9d0689dc419daeb2ffa8604847736f148ec176ebd03f7891423475c5f8137e27e80affa92b048c77543acf33f8893d67b018df5597f24c03cadfa19691dda39e643ea1ce2e71b9741bc1cad03158745ba0e378fdd641d804e2044ef77cfc2fd8c285d3f08486fcc47fedece75b8871bf5fe649ab4694d3d1a17d7340a34bf684e7618af2b55a53de213ef1dfbf6cd0dbbdfcaa4ea64f50b9b88c9ec92cd54c9eef0a2f81dfc6a9315c9657868bf9e94976b9a05bfd8ebb56d8f78c8eeb77ba9bdb75b34ff1f3ce79e47584cdd17c717062c893b8c88dd38a9c60e7663b1c73dc3460f780aee0f5fe9397177ccbb494e9da3f74d04ba80dd8bd05c9f709e09c1ae18e31e0a54ef1b88f301f6aa0538fc407b6e6f7adb4ae2058d8fe4c55c2aec79bfb917ea92d1f36cceb8389258e1d6979e24f6dc781ebb928d7e573cefa2002e311ba3b982381345b3be806c8cf9c13107914dfc0690b760c9902752f9baeb3e482093ef79d7b6cbbb26f2cf7be928bfb4c17d5c9f0471a71df407bcd361aab5a06d14e2cf3068dbe357d7a9c934f32da41bd3b94622a20f8eca35bad849cee29e4ef90df79a796603815f06c74db969e95853ceb1e4cc2919e865e1984eea264604fdc72ce8397b75c24fcd815c2e63691fe7b1777462ef70be2d8b80a97def1b3ef438a3f013a320b6f9dcb7d6389f306ace75f679dced65f7d26f86e49871be58544f3522bfc02fe18531f52c8c67b29cc82d0c932a5fd38bcfa9a5031e00d0942f8929f825ac33e6e1bd75e1f6c04755d7e7ed4056e538ee755c075bf01d0c6eb8ef029623a0f33e981335a9fe06fa3eb8dc80b1cd18e9fc178ff822713e63fe6e43af086c6f2cc2f10d629cc7d5c54b8c23d820d654403602c1586c8d5f15a6639d61714e47629cdd9e133b829cb57c67a0a7ac9a7890b6a7e3a8dcd28cdabe3644f702d21f0605a6032cb7d5d1f83613225c033c811ae0812bd134c2429f41dd32181bf4e041732e0c38984b12cba268f1e2567f6b4167aef377db5a335e1287800b589e901e86d7e4388d1d0eeca86255d97845d043f3e4f6bc4c3e4e638f8bdf1c4dcefc30ca9c828c3931caad95d2efc77d0645723db586cac406b9f8e09e1763aee775d08a4fe339edf8799b755c71798a6862c5f1572f5997c44787e6fd5d7e50cf047ee751cd7b98451113cc7b8cd54dd3e8ee6e8ced383ec42485c1231fd3c9d16ea13f9906ee9160af248083947d6119f7f41edb047f208c19f17539cc072fd62d560590ad5757ba85ea2402fa2473ff9b3d70a8f22981af6a1dfa27f1086f328db14d5ee7f69e68dfaadbd6efef78952fd43d569eae1bc93123b85b114f30b6ae4b136370d9c8762ae7d093d2d1068cdb3390ae542eb9cdc59778d6e602e87be81850b315ccb4bc8a2f964fe38bd6dc7589afd63bdc78bb181c5c2946eb6f4f43e7a026f36c8be645dc0f9796fced1676b2d55bd739edeba2e1d28cbe6d44173ad896ad9a65d9a2fa64e8633a969374f92bf4d56b62bc5dde17615b70ff4e74f613aec78edf213fa579ef6969eedbf7367943816caef945efd7b472767b46e998ebabcff5bbf92795ed70463c13e37c7d160ef6078d2b5c1ee80128ec813eb712f4d21adbd61a7239bd091ad306fc75be3038217eec45e037bef85c90da1ccc476f2bc587eda8f1cf83dd2e45bcc941ae07d014f47faed724f6ebda42821105bd8a5827752cff067d355b38d290bf09b8104dde53cea2f5c17d0c0631e2115e6f4dc56b822ba65b1efa77619fe318f719c0d8c727b81ff42efc4d9ec4971e1787ae64808d81745b5233ffdefd7e17e67cb0727b33de2d201f10ea91d692c8d8485794f89e1bf9707e8beb024adca7c23f6d914e07b2ba75cfe16bb2c6f88712d80437c27b6f4beb7cf592f8b83507814b7ca48b6493815ea49f42bb1730be24de306ec52a54274d0f47e85795f015ce18f4bdd859ccbb73189e9cb0d2d9903d023d182e8ec9a6be10dcb0aed01a5fe4f6fccbd2b421cef8d37586149f1d9d39e1beb790178b7ba48aeb14e9df0fee43df4ffc84c426a2ea6d66b81f08a63501eb414e6827f7df50d505d8603fd4fe3d6cff61ff9e64d776af73ef4f69fc9f2496619b39f67f8ed2589d406f9d375fc81b0caf43fafe354a31bd4da237c08ab5587e87f1b14bf43e34b72d9f9f16bf6f472c89a1fa78cf1d9b9ed3d81ea874e47549ec8756de5fadf358f265dad1f75bbd4aa54ddba79a6c3a63b1131c13bef39fa2e740dcc815024e9d9c697be36d3b61689a392ac2146c5a17ea62a2cc0f5ffa3d98ca17e914fbd041eb837b4fa74dbc12fa7b409c9ad0089af3726b4e336703f3d6ecf7922dee72bab4fca04876f6c55176e5283ded90ed140e62d78c1945f24e32f64f5d71fd57f7b81c42dc0cf48375615bbebc85d8fb147ae5c9e10dfaf03e380fe3c6e763becb3f803f1cd8e49eef025f2997d6e68ee7c23d31ec1f5e91c04e41f7c40ace85de6c4d16f2c2dd304854310b5d93873c62b41fe5106ad01b1e214cb9d6f998c91c8c3fd8a163a6da53fcd2b4ff5124d19d8b0c3f83fd8bc76527fe27b1fd56684f7878fe013fc9ad71627917e330816c4373d3d3a4f8e20bfbb0a2c5fbb9f44e8a16bd3961dbef4a62298ca503fe59978f30b6f57972b93c5a71e2c5e60cb467809fa812e45d15c09b4c9ef585e0e9bdcd35d1bdec93c4db56e23307789971f5ad15ef01566d754f7b2f125f73f0f439e3398ee1b57a28f79fd0ccf9b2e4fad59e7bc9a3008b410aaeaef42b9940f3f5ffea73d13ff0c9d5df8bf82bd6a7158b0d10bd2d4d11e994a4b7530e7898708c8563c04f15ed16cc5ee8ea752cb1d68b909dbd79a617ddc91fdbfa44fc32de4df24a676a62a2a44eccee45385ff0985e5d8e413c865d1a674ab7d967904f4074514bcb0f38079de4b7410f4fdedc9a460f628542c0e2fd669078f5fe6edd295d237340663cd535326f74a7271d71fecced4e877170cc2b7513e0a325a96b68c9722c8fe38bd303df77ebfe6adf22dd1462d8251a1be0792ed03e73ac3953eb504270c0fad8bca58f55f68a1fe603a86f69f1c23cf07aabcc2aefbe1978962ac9bcc9419fe3b3270296db01f0bfad4fc02757277f233f802622aa561aaf8b8971c33725db538e5ea6c371111f3718e8a3ac30c33f7a79a7cfa5a437ed663b41f638da2f58bf595a36bf2a617f478e35fff625fe6648e2cd90023467c07f66478ca1a41fd802d1e2a2077de07fcbeb6e8a7e4ed1ffaad43f3945eeca097bf5ad39f6ed6872261f9dce1e99a2676199d5c88243250b6c220b88ce317de00f88f09a4d8f2b122fdd400c115fb3b49cebd65ced67c21d8d958e496476e20f77882e7fc38392e9f56b8231e5e4f04e17eb8c1bb0806e66b9f697faf88e9fd3740c73f6b7328a6047cc4aec936bd170a3ef23fae26a9e52b23f7cdfbcef4b905ff780c7ce2b1e7ba8f479abe477953eb52da237bbd663b247b65ddf1f03fd1f49eefddd9c209b027a14231dfbd177c133e0f770772f47912e0f7d6b711cfdf1b957b1684723b1e8708aae07ba747bc66fd7fae93b97a607fe33a720f333f9d9b6c27c127dabfc9bb580fc21aab7d6739e4afcb9205f841ce9ff819b0c303f06fd9be47d26e30bdabb5efcf07ce53b59917cd5ce3aa5acd76becca8d245ea85e5f8f6549fc79f5caf30a70ba42c2b70de083a9729c655ffae90473adb1d05f5cd1d272773fe7505b4f72916347fcc4f9e6956e2f7e807e68c7d0cbb184f503ff525aeef4339e8b683a50c48f54ad79c23e84b5e87d06502b7baf3b5334fdc9139ce42a5f7bea1ed757238963bff709799b949cb65589f2556831b57efb5cd659e01d54ac6a370dedc02aeef201d07aefa6a1b3236b89ed4db486f1f0d2e491e0dfbed9b15dc5211c77aa5825eec17c24bdf54e5f9a9db86130a0747ba47bb67837ec9117fc5b953ca85568c904d8e7482620bd0ee610d6f1e573eee61e6435ef1451661571c5eba037898a78b548e9249181e78cd89e7a18e3396bf204304697649fbe04f43cb2578569e225468cedcbbc5ff10f39710ac7c4b85c2d7b3a59a70ef0390fc9ce5d733d5cf3e459cd39398c5245cba710076ff6f3c3b152f6339deb74b28a7a7f8e979af86c7cef6b019ef1938d49eb32d1d624fa44e32b9a2da1c6b8eb2778bc4f90bc83f86d2f1fba42d05727e74ece098e519067cf811f1c3ed0febf11df86a84853e00bd01705fd6d30609fe9daa0af946c087433662e5f5ac6e3fd9d8f95aa6e4894ef6d1cec8f8bddc93a58b032f457d9008f88aabf730bf7219fabc7fdf7d280f767ba36182825ab013fb2580afb046adf3e97933d857d42d5be4927fe4b3c7fe27c76882b4f3d06cf0fded7c11fb4bedbb0938b1fddaa1cbc3f8a75af9fd63c9e817c0190b1ba3028b7481f3eae75c895128279ed6f10a614263cd1c3c29ffc0a5d3da4923b623b0fb8ee4bfc900ec68e9933e05f7df00d6bc9c87c491ceec4b3bf2871bd55e3bb1f9e9afa034c07d0df8260fe60d910bd2992417aefe2b5827ebf353dc43cf411463270c236fdcb2636c9e17f4ebbbbc92db0b541e8f602bdd621b901251be3e14e1017d3d0f9f7b2b5c66c79a6b37af00c4f122f6e02ebdde26db636407cbad83c3c1fbfbb45b07be60352481ecab3efaf74d59fe43dbeee13fb6d849ffd36466f75da3ef66991ef4632677cab63609369e0430e48adf700cfb40a3be9ca48cc3b490e40f5fb6854b231f0214ed8d451835da7b344fe7c823f00eb1e79ba2c82583dce19b7f7b9f212fe669b3e8ed98790735522bb6a33995e3d493cda56ed137c18079986ced3f808b253174762bf4cfe851fc2326edd7ae3ad46b097ba7a77951b8ce3988fcfe11cedaab73689b78c7f88a744742c26a5e26329c1b569689aeb63ec9ae7b67c806d79b1135bb9fddede2eb05fe49eeefbd976846cdeaa5fdaeae2e067850e43e8c6001dbcacd65af97b9fe2739f1eed8b1b815efee37ef1133e75848f9b2acd926932bbd7eb46338c61d7e621752c03cba115ffc80edab6ed20a4e7c56ef2c8efd6e925436c52bbe40fb59f5d88dedc4a979256a97acfd75a3118aa66f191ad9ab66cd5c93af004b995370cfabd51f97f45f0ffeef4f361c9cd9af8919e5eabf1790ffce4c8fe22b9d9783deeed0c127fc438b9dd98d10ff6f845996c32b368ed53f093e338ff2df4898eec5b1f2160ae4f1ef5ed79ae9b3df7a919d183736d5fc81d6f8f4bb0c9e3f509f238b02f15ed2b5c930c3a3dd4c47c57df81bf811c8b996c5bf718faac7a0cd13efe6069cee1bd745cd491e208d6e0471fe0cb6f853d0df9c3453f52a40de4cd55f72b6206e3f5cd412d632c2dca5c81eafffaf73af2ab7851b6348777bab2a2e5acacb307fc2d8f74f507ebd2f85bc14f5ae5dafac82e68e77c56eb0b7621c19679e6931dee847d689beb08ed273fc1582b6e41f3e901f41dc335e9fb7ffce6f9603b2e7b9b0b359f27b3003b9175abf10a535fd153b61ebf10b860034e5ae74fdd35ab731db5e8e7e76bf9ebe737b9312dfeed405ea98c644bfac09f43eb5f957e7bbc5fcf80c1588162e68ee3cb2ae1fbca04fb6b3cac4394b8d7d61ce915a902bd27883ec30429e0a0d563c763c1b5cf55ffcc0f8831bf1abb2a0d6b7f66ed534af83ec9237ae07b8a7ee6a1551ddfc4fe558d0915370b28398ffd0b7af61734160c77d2f03285bea4540eace4b5f7b20075e4955d13babd3dc6ba93d652550feb87117d7deddf4173d3c8ee3bfbe6077fda8ffa72fe77bedd9f62bd589790ad39d2ad715e569716d07eae68e1073a6f72edb01e41fb81169c7d728528fb02bfc8acf187217a251867aed0f69390f97b28972086daac119ec3c7cf6ace6972aa6831bfc3dfcb3ff0e5931c115cabf74896d7fec0c7b2fc81ddfca3bf3ebfb7819ec949af7ade333fca8367d13ec5fbb1d0fe0aa8fdbfbb9f8539d9487cf96c5e487c6fd25c93a33d8eed0e4c133b5592b32f21efa9e22cd38b7ca48efb99a6e5dfaaf89119423e56c7b7bb3a069cdf86f8c0bc70b93c43f3b591c4630743fef0457a737d25fcd5d5306eae0b3177b097ae3fc42f9fc63ea1a79071867c02e5287f6fb5419fe463fdf1c273aa1e63ffb1cffade3ff5524e3e8a6f883836e498ebe10ee35ab5e3a2d03f347e66f3d1febecb73df41ff95ef00cec39c9af77e0137c47e01f3e1f91a97e9ddd1904d8765c35a3212db32329fe4eb39b5fe6bc4ae985e5d8e45f2107c4d80b1644d2127c4ed198c72777d9dbbf0e059bfce6ba86d239f0b62c7ccb72ec79f5ff1da966ca4ce63cc835b3e87e3553f54a8578ac03f6500d645f5f755d56576364a9bda91a37f724c2323fe2a077250f198c6d53d3373532e92ce716d983bfa2cf38a13eee508df3f8f498e30b7b5d6037534267e2fbccf75938f708dd0eccf529f95750c5b672f4d5e408a31388f9f57bfd8e733212f153d0b1dce28c18637e727db1c1c2b8c3cf508b654320d039cd7585d67903ec9b037d3583de2fe9c507345def5c5e5b19f1819f4194b0cc03f73ccf5aa1327ebe8fc1027bb347e6f3ff67a6bd64b8cc31670f808b69f3600fb73594c6f5b7370d84ee09de122ac729cf337b4e672083d0e9fe65e77ea063299ac971ce6b3962fe9651efcfce0257ce63ea909b8e37338ae0658475e5cd3341a4b3576b46757b6e9c79d7c9fe7e7476c59e55ac1beea622e3c1b07d41cc8ec0cd339a547fc62ae9ab5c17dd59ed5443ca219522f4ce5ab305047c9aeafbe393fd5f278920f9ff11a2c8b3efe2687fde85873c8a5b1b92070133feefabf2aff966dcd3790374ef3ebf18de41dfeed3c55f12c8379f8be46e6bdf0933dcb598e208e62f7a25fe627d063b98b595fea1cbb98ec45441fc2387fb10fba750f4d0c30318aff7bbe17c712bb368c1b5736cc80d83071e547c5e31c33d926cc3f55e994ad7fd1a79ce017979e35457bf0a25aab5409c9ff4550a8e606fdc6ff5b4cb6faf99927376419453b91ffb39317b231fa0dff137fdaeff91bde5f75bee59879a89f3dde033827c3d5909d15bf57f9f9a4a6e2597efeeff26f1ee4e9fb02a9dd18137d34e17b243fbf75dc31c502e9761ec68f45320bbed1b1c0a6a670f57ed017dbf7b5e9efd9392d7adf223b586789ef39467a244f64d9fd780c26fde27ef28953752ae00f68e7033c39e728fa3935cb29ce4fc4350a251e97e8630ccbd6bd85a5c5efb87ee1652e425d3f033e89b64efde41cf8c8c116233e82d42c0d3c2e03d7b7b4ef157dd0d9c83c55be942dc611c63438c6b58938770ce893b6952a7aa87c69b4ee53c50b46cd3e988ec89c8d5c8e2f9c09d4bb4e979681e7adcaa5133f78df80fcbd0d9c6399cc2ad91774c24e5549e6dbdff649cfcb795be4fda5f9627d3751e677df61d0f4c67eabe3153f1bdd78886395377e23d809fafd25d8c9d7a8f96d8776621f6ebc417efb859df8e58d37c85edb8ed8026c8810ede30fde0b07a033213b6353b292220e333bccfbeac44bd5f1905f85416def295abe581ad94919cf78b308764a6f9faa2592fff2b75f44d759cca4384f717ff912a2ab27dc4e2b9c9b73528f51aaf63eb18d351e0ee7d2862138162d7aa26a215ec57c526adf91980fd209ecba964c4f8c0074940683e8b4c5eb9a429d9830be81ae47f54624b9580df6863e3c3945277ef2fb3c31c6b63e6b1da92b83b6b51f2daefc685997c7117ecd3b45f4e68776e287edb1f9dd7a93ff0363f343e8adf8ebfcb5d7b5417115cb48abfcb53b59437af7127ff5a331b5300c6bbf15f878eebf038da98a5d77645a272f71fc7bb926e41813b663533ee1c7c54f3949cf74e105d7c497ee78ab7e6ef217daefbcd53d7027d18bfdb22edb756f48ffc53af05a670768ffb57a9f6cc05e14ab783ad48208cfe9660dba659bf7033d4e66fc17c1b5c4f92f34be52202a5a9dc334ebd6cc55eb57d5cb3da9c3995339e8ff411d4d94adbb318e2298ffa6fee92feb9d325708e6dd7a277dc2a48a9e1e94f1a65b533443fbd52b02b192879ba758497f5d579656b6c2d6a8ebcac48aef6c42523b9580df3655c7cc3ffa6bbc19e6eedeaaee4a4fef9f0be7d80bfa66b39862baaaf3ae7f5d53d4f906aaa608d3f0af6a89ba71907f514b74bf37b818b0640d4cc773c01ca87cd3aff424a2ab933ac76faacef1a1efadcd4fabfa19ca8f70ffbefb5aa49f7c0fc53807bc8cdf7ce3047caad8a723d5f51d9dfb5ab1ddcbfd77e0395049ec16fcecc2d447b6d52399a6bcae03eae8f0332acec6e4adfaf5f1f8fe1bb11f83f2790156ef1fe80b7f68e159ff518a2c5d19e73f96ce5e4d2ef59766ec6ee30a6fea74a757223bf8d177afd946962e8df31badb37f85540d10e0e2fe3a6788bc9bd46588f29ddd58e189dcc9d53a3f08ecb3e2be8ee9ae3688ae69ead2dfc5ed79a48755eb38a26df49d852acd785b6b74d97b99f859eb9650ebfa6bfbe7f385fdf3d9b67f7a601bf05bc057ca4b5c3716bcb27f4e7f659f1a2fec53a36d9f826ea1b327cceb20a68cc6f5d83e8d917dbaff1bfbb478619f161dfbb4845a17340f38d6cde27121fd0ee47884ec90277b68b2697453824d03fa506b0da6a173ebf6bf87debcd0f7c31e523d78dffd30fb564cdff56386f7d83367692c6bf61cbf8977767525ea3bad4ff88655c90e9463946d462fec428dbda16f5c702b7e559c574afcf13f68adc9b337b6f549d562ad0ad00d2732c4f0eff450217e1a7ba97b85bf1af726caf4d763fd069f50873e29ba3f6b5aaebdb0611dd5ccb295ce0a8ab8ca74219fab22e9f33a1e5ff5b2cfcfc27e31b7f2e14aeff3b383ccce461fe027befbd63a16fbcb3cb79fe56e935bfd3bbbe8714edbb1aead29ab9cb627baed3f4f655337b7b4ae8b3a3db57388ae9a2e92ba16ed8f62617e82f6c2237b46b1ce7f7e83d350e50374ed3fafaa9346df8cf3e4fe9bebf1cc26f8e7993d577fb79e06755d59f8f43958877b645b08cf31ef1ee83c5d0c88aaaee1ed15d6473ba7a7b699ee6885ae69fb3ae0dcc07bfb93aa69bb1f5b53d3f6e4dc7fa9a6adacf4658fae697bf2cea575cabed037fd854fe0654ddbfdbea3301908cf4cbaf20772dd5fe4e247e92f62d98f737c0f6cd5ef25abfb505a7306ea654da28f8fda3af80fba6cf0cb7542dff3d46773b7671fda17f7b5a56d9a5ba74ee587c0f9c66955a7bad5ec64268cf9a5d9f4ededf4ea02bb6a5904d81fad0558e7ea817ef1edb1196369d1755660ff1b3e2fe2f32c9c67f1f9e88df81d78b297bef19a623d42d18665e56f5770ff2f74bec4e78de67cfcfc7ea51c133f3973c2fb149d9bc358e60693aae5ecbbd18f7f5f7340fb63eef514d127396fed388614471bb22eb836a4ca9db8af0df9a9aee371fec6cf751f4437fdcff7c32fe6cbbfc399217ca4c29881ded5af73d7e81e3706d2f1587be8d3fd4d58bba9a91223de9fac5d236668bfe0bbd9e1ffaa18d1fd4ebabd4b78591779a2af1a77bcba92ef638f57c4d58b5800e851b317ba1ae851bafe221620b053b0c39eea6a106f90683d4cd1f27cb9f1ae1b8c2b30aeec2073c49c0c81dd29453057ad7daa68c342153d5e19dfce76989d3621db53d09e0c7379698e9b9cac71c66b429aabc20afa4291dcaced723340fbed8f2664917adc671b9d5dc01e8ff6df53613050c727f09da89becaa09a7931932e8bab32944df66980f1621abaaccfe8f228ecf70bde1a50a2bf2a0478a9b641a6fe8bad5ca0ff81b9a7a77c280f17fe1d3fbc9276840ae69cbc7f930ff11d163ebb8866b841fe6b21736fabe765d31e7207972c5b5c56be6594de8ce1c5f7cca76fdea416ec59b56e4685ddeb4303f0016ad992fddc809b6661e3b22be06f7e168e48f7cfc4cdd647ec2eb2ca7aa38e3d745be5b1aabcc3eb03375b2e7752def2d0d396bf96b4aa8977b1c87fd3bbbf2f6c2aebcdddb959fb45d99d776e5bd9f3db72a8cab5fdbfde20bbb5fbcb7fb63daee9fbfb0fba77f6ff7c72fecfef8ceee6768bb7f6ed4763f8d03d05d27dcdba0add3455b734df4a7ba77670c7beda16e9d5f1e9c03dde82ff22a4b9f8b6f8e51e73022ddf7dfe8dba90a7a61554762bcaca943b2bacef1b3566dac36ba178364308a1657d82cbfe23bd83f36655ed55b83cd92dc4efe64957d716dfc65825bfb9b7aebd41fb1ef5fa3d30de9eab309ce11596bc111f430cd4ef0dfa24fbe21f505a88b3e92582aa31ea3efa5e9434cd53baed29f78a122f1ccbddd42d5f1923a69b7b7a6eab279068fc14e1478e7fe7b69f24c7b0ce41afd0ec7e6612db30ff5057186e861c305a9735c9db6d62aa5f85a6d53c804c7a4a5bb55f51509c138a975bb07742e36cf02fea3636c9e0776d883eb4572bde857f8c6edf7c3373dd42d712d99417c193c83eb9f9993db5bdde7c6d079e0afd6c7ca8726cba4740db50b78ae50334de826bf22fe8debaa813652453f556b8ae9456432f86d3015fd90fea9fd9363ad87bbc9a989d7480f307ea8da368c09d4f8edbb768da2e531f431403ca18d4df1b6d4d98b3fc9878a4470c185dfd9a05063876d50f6b7b6d5dfd8b8d4f37f6fe3ded31ff052645f57f8dc95ee4bfb370de86b3c47faeebd2f91e8a98d4f7580af4b1efb4c9ee5e228c4a75ff77918313cacb364301dac91f43fab771f9e1c6bf5c4cfb3c635e950e3ff007ff8471fe2806005fd5c7ffe637c272475633d3ff52463659b830bd8d845d060c740ad26ec953f76910fe06f83f963f798a798328a9e4624cfa12317495e3dee01237c69c1fbd7281d28c90cd1d04a49e66dbd0eef79a40f86d5fe5160adbafec8073cb15b73f6839f52d1a2bfd4b3fe3bf1951de9b5b3d43fdefd430bd399538a2cf58d3367e96c897dfd1d9f51d1aeeb941f635334ba4a81afe9ae37d58be027bafa559cf92f7daa546c39fe17313e526b2ec8d9ea1eafbbe9cbf248c68deef2f86afc428c75d9c7f5299d5af4dd5f8d0fe3a36fdbb90c453b9ef8706cb84eefc9f8142bbb2d7586f7c286ee9a3e83b886ef79ae2bee85f190ffd09808749cf380e66adedb5a9f71ed8f297f5d7f56f5d0c231d2643e20fda1abb867e6deebe0103bb5ef63aa75ec14ebe7f2e31c21e907fbedee3eca7e7b7e0ed96f196dbfb962c77e6bdffb2bfb8d5ec3aefdf6fc5c942eb89cb6dfb2aefdd6bef757f65bf1c27e7b7e4e8bde5d91b2dfa49cb6df40679f864efa986f77fdf1a4ef2cf4357dd15fed472c87bcd24d32a29b645b9daf756b5b8bdebc1ac7618c711c5ec451eafccec7380ec56f701c5cb1cae5c8abf854bae4eada8048d1d3b2c1998879ba0ef97f219730ff41466698af7f76f47bc0f6e9d246323dce2e76c2f737b5ef9ebfac4dac5fd53d083b7caf5d8f7e3796061fa06cb05bbc115b7673e57c01b09c3f5d299fbad1f4fa25b471ec5df0abe757f09d23da652127bef607bbd82743ff2e3abfcbce6fc6d2995fc93bafc14ca4e3239886a587f4de8d6b6575dd0bf18f28faf9d6e84ce87be514ad9d33765277b28ebdf0be8fd15fd7b86b51da60103439bb0443b4d2b55275f27171131ed1f4cd9f44559ee0ef6bc131bfa8f491677ca34b6fe95f61a7fea02bb6e3212ff253efe4045df3ba0fdaf77efa74ade77f2f3fc0ebe205ddd517b4f25dcddaffcc2dcde8099f38278047f0a8f6f42f6af1d509e0eda66d8c41e21b96bcbff3334bd1733f33fdacfadc26045c0ca97fda6ab95bd512d598344ff0691ee1407a61fe60df21fb27bac7297ac94373eccb24b2e4eb353e5456c952ba5660c1f54f5fff3f7d0f89139d9fc58968fb7b26326722cf764b93f9e36a79f8abfb0cb82fb7b4bcbfd4829dc2c97fec30fae36b29fb204710d9d69963e06fd54d9e83da4621487793bc54c3d5493ea4149f927f87878368929ceb62fb3c9b1b45cb299e04fcf109268493b67b0456720b72a393e971dfe4888aebc013297c85914cfcd9389e816d331bf1273c0fb8ceb96cd7e083de017515de037c99edeff065d21ff065deb6dd9c71ee17cfd5d31f9efbc89749fb12ff22d77842e1554e3c7e363af796d2ad89adf6bc6fa5880f66cff79766eefa2ce4413dc7b018014e63f12897f691def508c3e2f55ee893fafc27fedab14fe7e102edfd98f7a045d9437b7074039f17c6f2921ff90f9ee71eb5c7e17665da735b853e1793b56ee8faefb10d22e89f0cb66ba7c7fb92ee6f28926fc0fa5325ebde604dc4e7583f5f5cfd1d6f50875ac7f26a7b8b3eeea89273f59279bc388cb3adb946c752278963ef90a2efbc223dc7b1a65347c86fb6e9c7e6088e070e67d8ea04fe77a0a79f241e1d23cabc448cb69651e2ebfcd499ac4f6a2937c7f514d9d9f1d6f44fbe302cd4c9fc00d8bb318cb7b47bd3d8310776733ca28f3beaa4ea4b8a9e4ffe9eb0bc2a467773f215567ef36ecfb469ec4f8cc23d9e6362f730ea04cff722b6a1d729ee9d1af3aa78dfbb9bea0b162ff58f7747cfdf287f570c3dccc0a6877e67171cf34273c4a7ee711d7b511c2d716efecde5705f71cd5c35bdc72658c7fb0a07a527e5a9cd6d4e8e76cb158be5d5b177df3b5aa0faad59a78b6b8ab717bd8bf7f5f51306eaa13dfd692f6f52578ef11fe8f11a884ead7c381fe1dcb9fadb808f1b7fd3b7ac7e26e08d878f7adc8dd177923cbcc7314413f7ba9d40afc031033d5dffb2d75e3d0eac6fdccd5f5ef5bc36e87749a7ffe85d36e9d5d0add9873d8dde63e54345841eb5d9ba80f77e2affc1fbaa9e0fff668eefe80ef4f60dff150e920acbeb1e8b82ecb5f03356497e538baf74e9278a23f46db8be6d53ed1ddea7e2ee4b03ef51bcd61ecccd26c4fb157caf55dd9539e6bf383f46738074988dc4675fa68feccf07fdceeb71e29efdb8fe4ddf227dd49abbbec8f0e81ac4afbdc42816c7f5696bcd323711cf0ee26913fc4d5e99c6aa0436e05bb77f37d5c71fbfe3d83caff5be4d7cf6a41bc44ddd497c74b97ea8427fccfca24ee46cabe5e47ef2ce22e65509afafc719077f9ca76eb279fa7e551a66365d1327ce63458a32b7e83e3727d808884fcbd7599807d02b9b0b629b3baf80a646777309580a2a7e5e40f39d2fe8b59cc7ea04e6ae5af3128f07df63961f99aa8bbe2af5a12ff14e3faf6d6d7074cc41ec21db646364ae14df3c6ed3ed57dcf0379c170a357d1b2e083cd0219afb9eafe309c9ed6c6b7d96688f803e573efdbef4ab47bea3c2d9b1649cb760cc4fb6f5196b267b7385a0a2a7c03537599b0e988cec8312e9f9ba145f1cfdf7f3f9627d1bfc05b37ff685bc5c5af2d9d1cf815ab2a93a995d97e690e4466cf8167e8634fe636be75239ce3086afc6e4d8eebe0d67425cd52dba16d963d037bdb7a969c92c08ee4632fbf6851bc1cd480f0a67f83b2d00da2363bdcec27380e9eafc1fd1959d5474057be3aa4a63e8a18ff4ac8d39be389c7171ac69e04b86063dc3c57a5ff10f7aecb77aa3e23c62b1f01271a08ce43f8e56eb9aa93a91917e5ed07d9ed5527ef720065cf78b2a94a39cb965ed677b774bb67bcf79a60f0b250c0aa51ca78bc347e6c619a31ca7fed234dcadc190dff2f7cc6078c738a74a2956353301bac66599333a6e697909bf0ba8fb8f4d2e42f764bece120caa79ee1d57275b4b03a537fbe315d17bfdec98e16d8d675569e0ce85b450cab9bfb466579fc2e07eb4b7ccdeda5fa2f5300791634d4177049a9780e6711d2b5ad3c9eccd0d73d0831749b7f76fc5dbe277f28ee67961eb7d53d7facc14615ac05a0aeccde5f281c3f11739cc5b74429e53bd3bdd69399631c739b2ff665b73103f1f07d0112d175ed2a33a99a55f545eacafe519e8ead2ac4d4352bf5e7745cb93a539447cf5b434c7e8ff68697cc60af0c328f346cc6dd1fb18ba614d73d7f9e87ca37ae41e017381f8da163d9b9f813cfdf887bae73c3b9c18e5f8719e85f971a9affe784256d4f55696fced84e9c52c577f3c91c95c9d4d156eff07d3c407d08e553267373e7396965e4ccef75573e0fa21f467b9989c07d7d80736521936f0a53dd23b2eca18ff6d9bf3ab57043b451b168a96f7975674b6d1fb7a8eaf4e3cded5d85049aae7e5e2d28abee13c7a8f38e35ded0ce71d44cf3a89158e86279b3d5f9a382153583adb57a5b9dbfa6e83e17dc8679f237abea9fad45f5afbcc66333c1ff83cf9fde92f379bea1cecb34d89f7b05eb217b3677fe31e5f642ef4f312c6c532dfaba29e87e14cb013653cfcb3d4985c1dcfe07f45bbdd649de195c986ff925abcaaaf30c33f8e90f7146686fe8f14ad95df9fa9c74fd6e3f627d2a796bdef6901bde6174b6946f193d5bb8e7890fe112c75e6e4ebace8e07eff443ec07c2c708fb4d51f1dcf7df57741fd5d5a388e9dd23159b7ca479a60ec161ff7e5857cb7164673d8b295a64be34cf902595f95b24af6dcdc9e77d2e01b59461dc9a94268c993f89e32867a83b3a3dd100dad96faf87d33cab3664cc362c17e5039e7abd6735d312b94f8d357ad55360ba3effb73b0def8f9fa79b31cb1dfd3d0c6e3d1d9cc2ce53f1b91c93403e229f8b70073f6bd3456e9ceaa79c494fa3babe55d9b0f513a00d2dbe627c79c7f6f40175afd5e67937ee05b142ff24adcbf7e654d0bdb8a4ed41e49d5c986778b618164bdad0da18e77236d4e2063813fcdfed8457e82dae9514eedb921b3e0f654ef9455e68d1a19877817daabdb11dfdaa78bc3ea0ffa5f9556fc5c484f4a29d7fe7f2f3cb3684fa1e39696734b33fa7605cc9bb678be074b0dedc54f1ff69e087bf1866421fcc6d79c97e6ec4ad698b1cdfe89fc1dd81c5f2a9328554b3955c521ef14ec19dd87f89e7d6039d564fe54cf53277bde29ce67f29ecc2f594ee1e07c8465ef1c8f53677790e70bdf22fa4b53ce3cc443923dc8d32f212fc9f84b4b677b84ef8a4b73e07a78bc7af54d0b6603cfb7b4b35e7f8f7ebb215a5c6b275ed5c7d9a680ffabbad3e5d2187eafb5f4a08e67bc1da2fb66b00f691ad78b477b6a46e8fdc63b615cf71c9f4d28595feb55487662fed1a5652cfb406ebfd0b7a680730ebedf96af61ffa3dd251fa757df1c44aa453d43437c1cebdeb4be8d740678dfa4f5be774a3f7fc3e3cf2fb6c9c68bb0d6210a1c371c1c5d691352b6dcc8d1f68c3afa48ff5b365da53fa1f7b76dbaffd086939cda866b749331d2790e5bc9386c59fc4d3feb3b4057e5d23cc70a1c8f321f74d859f32e4d1c383fd203cbaa6276530506d1f805fc18c238f8d106b436682cee4cb89d21c61dc6c39db00f64731a93f1b2ea6493b9055ba8a5fceda1f79911b2214ab01927b793ac89613d3e74bd34fcf6900d6bcd325b6353725f3da6c67e80ebaf4a0fd9246ca94ae3efad86efc3e3b8bf56b564f26efada2855b408ec5755140335697c10ab9ec16c1288a380ffbfdb3bb3f1013ea06f360bed9ec1fc722f1c7c6b4dd3f54bbbf7feb97266737c81c6ad57b187c33eabd66b11cd6365b4ca6642f4bf6227533c65e45beb8d97c4789cc627daa7cff01cebdc34fcecff8fba7feb4e1458fec7e117b42f065013b94c501101a372e64e2011049409a8c0ab7f565737d0a06666f66f7f9fb5fe17b39c28344d1faaebf0a94fadaf7e3a49fcb8398fcaebc632c0afb1b1b7e8b346f6b2a395ecc61a7f3b4887b7a5c283fa34d2b75777bc3d81c8df74d14c8359e6f95599cb5c9cfb55816ce6e6f31bd96d5077284d4efbe5f6c51a19c55e2b7358bf4281ce5ef85be692401157d760b9bb7ae62a73b990f9480a561155f43bab5871ee54cd278b6cbcc81bed188f6355d772d1b5357abe539535b987fccd66365a83ff855c219cd33cd9df94ff65cd068b5db5b7f0fa3596bb5a16c7df6a94a17d4f3ed13e457283f50073c64d8e8ebdbd38f6fbcd5bc6678b65726ba45eda31143a3fb72adc18592b6be5b4bbfa0b3c16ca697df3c4e4e86a879b32db66ca1230394c20f20519db8b3f7acff7165a936ff91ae3537a63346c03e9ab0ffc5f2ceefbbfeb65e8ccfd0bff56a146d9b3b548c9bcb88b0520bdeb6fdad6a5df64ae8ede6885f68a4a74bc813cedb7fd4ff34c9d131fddb9cdb5b6453561bcd13b8c3792ad94fe70a1f641f6b52ce97b9a79d2704c28997e2ddd46d6d74a4af6855126ee69fb58a6a6c8b636f37f92a5d52472ec55e55ab79fe522691bf2f2890f63cb19e7b570bbc9daffc897d1f66f51b85acf87f15ffa2cc8194ece054a760af89d4bc1b5b3ccb557db60a99ebd28afe4749efbe413fc60200387310212f3b2cc04f0f4a75d834d6470ed23c01c30b88e4afc122cf2dab619c82309163983733876deda64794518976b2dcebd239bb8183fcf3458850063159afbaae63e956579853c77dd3ed70cbeb4db05b5e5ff8fdafa9819ddfa4e0ad216aef1ed42dd02e3f2099ceb87dc8b261365295d3e01571ae7e43da12df45c6fd69381e7400bb16c9be3f5ac2c8d33d93764fdc7395c93f6cf03341f3225f7b0dc8ce97da8bbc4de8458bc68a0b543ede755e823dd74be4a3ed324f193bf3a3713a506df25833e1d9dbd28d63447f6a4cc4d917cafd099e4cdd80ace9b9a35c8bece14d1e19d6a72762db4e7771b37756bd7dee6fb197b6ce2c23ae7a63e6732c8167490beb25ce5467bed6eeb8cb6bf03a1bc6deca2952b1f49112a4be3db8dca50e6b648070b65ee90077767ad5aec0524cfd5c2c59f79a015297576e2f126e7b76239b95fb1313ebfd9b32296dd998c65cf8bc5cdbff74299235dcfc59fb927b0a96d3394ac79a3cfb5cc6777571f7339dc7a675a9ad4a6c8df300fc4db605e2799cf9067ebe4dec17a40f76fc93da4a6e33f9f598dec3745e30c7a16daf3b67ad98b263ca39b9f1bef5793d1deda31fb399fbaa7754270fd7f610720dbc1e8c575e4d64732bf61ec7bd2c8fb61fc097cf97ec454727afbf11ca3fc4cc7bf957bdd58c4b9fb9013bce55703d98a6c76242bd03ec0324ee50997390bbf99b0df21cf5011d5c60755ecadf1d9abca1afc2906b6c13d6b3196c569ee5731da13d8379fb2991785ac22de32b4279afb1dfb700e909e88f3be8e9b19cbac2297d9ccd87415b9e7cd8c4d56919b6c662c5da7cf939712ef5548e7389ff73a1bca5a512b33e9b72cc6851fc5b99f30b95b3fe5426f65809c1ac55ac818e054d7d98af423dbccdeda39b058c299274e07f1a43853c4398ff49e4ea6e667c532bebd2abe3ada0dfdbf80ff9b2c2f2f31c7978fb175373ccedb0cf0857fc200cfdea61b9c3f3cdde80b5e263e49b7975f9474f13336bfd9546c03704c4b06cdc7c649b3c4196d2f7bce9cf8557844673d603d66e599c27ac4942ffeb6b1d6de7e51c4b689c795ace9265fafc1dd9d9ab10d8eec0d9d13ca32e67d74566a65b1b1df3dec736719570b396519e79e569e481bb7466eac22f70bcdfbfd5e7abbecedb580651c93ae5263ba31a7d45e79e73b1fe5bc7cac4f35ba35cf7a69df86fc9798ab55ad88ac650a1fdada163e65fb4a09c33f8ed512596763df0f7dcf4f7126a9b94f63ff3fefd76964b3ab31673f9a563237075fedce32cea0e71179a968e145a9a56f881755252357f4dfb8a64277361974bdba5f819ea56e3f268bfaf0dfc4621b3ff3b7ab85a0b7a2beaa5156ff9d7c2f33c5fe7f3d235876881fe8b581f728b2e7af2ae8b963a4af802f488db24ba747cdc3d66e591457c5bae58ec61e15715a7842192ae2f4bbf769ad83ff4b3f52bb3fa93a203a6dc7d4437f2ae66479e813aad9d72f0ded21f8edf5dee66b311290d384edd407f899e81005cb55d6eeab39b2bbd51cf33edc9dbdc398fbb9f3e976f6a51495684fd6684ffee9d93d1982ef639afb94d3ba0cac45e5423e22edcf7ad026966f1a25231ebef7d06707bcda776347f46be06cbad73f1a9df3ce3fadb51c92978d99df94d93c57b5db4d99a1753c877fea82b99f2b931acf749739167bc5b937e37f9b03eb8ff76e9bf8ba2cac6eae35611c980729073b58bb617cf35dff70fbfd79236780685e027181714db0768c676b877ef6d9b5c390c4f9d19c734fd70a9e57fadee63cf8fb36a87eef45f3d6efafffef6bdd0a137fb9a39f3dfa9b677bdcba37de1fc2bf8ff793365aeee001c6e5266b65b63192665e90fdb772b503ab9098be318fafc8de7674e6b2d6ce67b5ea634bd65a9c7d70f3df1b7d7e59eb3ead9bd74887f2ebf2da8bdd8ed46fb94aae562dfdf659e6f7c69a43ae9a7c52bf5513fe266da8bc3a2beacdcc78f5abfc5bb657de5ac86a1bb8efe0dedc07dc02dcc7efcdb68deefb84e171dbeb4059e2fb01e762f11e3aaf706c4fe2f514d9448fc6999edb35e3009f84f4a7b5cbb99611298bbc50b55b01fb5b602e6aadd668bfc31e176ea5fd705e7b6be9ec716c0431d6a8f41af9a01cd55aada0dd12dad3c6b55aabb96a326dbf86b101ec8f7093bd688e616d1cd91fd7a1c3f117875b70aed6db43b80fda78b2d66e8572f4d9566e1d6316fa823e85f1680d328d5c6b328dcc6337663b2617f568e0b180f119576bf43e02532a3334273f8e2f03bc314be35fcf1fc8010b707e46e158058511bdc344e37cf2a8ac36daaac51c299af41d0893df484f92052996a24edf92c531d66fd9a2b2b5f89777cc92c7e31b56c8c6014e5bc07464e106e99d169b9822af617d577af983eedde4261a1e3a5ba06ea3711dfc364363112c99bcc94718f812b3cfd1960f96e5d4397539f42e899f7c8c9aba510cbfb18c0b5a3f90576c92dc17169e99aea23051d20587c6dfe54cade9177a9f0de443f4dbf1c4451d2c1eb55186fe68f777f7cfbb6b5611707e015fcbae6b9387589536a95c7bc1baf69a71ad9de8839f177c2c49abe3c7fc0de6fda4f268ac9cd44cbdd12a3148fceadeffdad457256b4f34eb60b9ba7e5a906f0d76df46071bfd160887c858ae326fb4ca82657cd8dbeac14b794612c933d3452e89eed58fde23d772af7e6a36f31fb59c06ed5e5d25482ea2f1c7fd5e879e58468eb5fef6ebe2d260873e39f7f271dae67ef7dc1717f2fec6179fe3ab612d4f8283ecec64e0a64cae7e9a309f1ae600d85b7cb5b77793af26ceb9dcd5037f31d8403d3c25e6a91fbcd76ae65865eea48be37ea4e67b9db97d70f1d4ef302aaf7b0dcbfabdc95cdc747cc6ed32af5ada72c1346da91ec7df867100fcec2db13591fe0b3cf75d4d5c32afbac85ffdaeee5ac383f9e8375ed2df5ecdaa376e07c2870139b38180fab366fc949f405b1ce6c47380df32048e0db997671b82beeadb66e28f76893b772b07af65c861de73c96d775a213b37fb1ced6a34be92fe96fb51933f1bf31af091777d969754ff47ef301e7e15b77e9a40b8df23b80d6a7f41dceee93e679eee736b5a007680601349fe485f0e117e8f46166d399ef54e5b7ec00349aecdbf7bfbdeeeee33459e71acb2ddfbd4bdb42ce4bb5ce339ef556c3356776dc8351b2ac0677a2797780778429ebcf3f3b1c258e75ac2eff548fe349ccacb666ee7786efb730f7590cc2abcc8c003dde53ab8b67a9f1784657fe6a50903b92b5a79f16b169dff373fe5196f043997afde496d3930766d1b937a63e6513faf4dcaa5464646d4ff93dd55821a94b0b6678e35e11c7badefed2c81efef62fd522e415c8d1fd17130296172d497bd35c982d9e3f3b73d8b38e3e2356bba661905edad518c6b58777232e9d5c96cea1cf66a671e304fbed8daced5c63a5c5c913f06b86e59bed7d94a49c3c4b1b6b9573391cdf25fed3f6e3d0944be76b8c5cd35f93a5826b96bafcfae055cdee1465b7dd1d73ba384f146eb231a0b9ba3fb21415c85f8082ba42750b5a0844f238965714afa3a46f315faa3f507f89ba02ea839d639e7ec6831c6a00eaed968e14549d768bfd73a5a737639952229932be9204545286bb7d06fb07c4b83f7a3c9d14f4da43f755c8fc20abf9f26651f23e3b2b7b63cc4ccd3e482741a6db15beb33265222e9dbd1f2485ae6079a3b445aae124f5c00a7c147f5ce4b5199a17b7dceac823939cbb49055c4f8023252dc55ae0539dad997b6aa0374afa5422eda1e7363cc3c8ebd05f62e71176be6d32a1319d9b068ec16ef95377a4ffcd36e62a68b3cb08c3e0f6114a7ab938bdee95d9a5373a8bdd3b53b0f7b71514b4bdcb6d4e3664167c12e73aaf7d04bb7079f9b1e1c6e7191c4c93510d0b96b1c4c233eb876c8b8d6a4c6b2f71dedbb9b6baff24f4dcabe2c83e20487ba311d9773cb9f30a869367bcbd505c421a32696e1a7fc6f435c337ecd7acaf10de9db15e8d2c76daec0a7932b471fe9e0970fdd0cd05ea1f9b5367601359a3e305f670e728fd4d35644a8470ff2adf93d58ae32970b123f66afae68bc90fcdf8e2fa93e87aa5682dcd95b8bdc1017978fa420ed017f40a0882d8fd38ba42f78d4278a3381ff1cbd5ffdd13a73d23269f93c495db48fa408beb42e1f0cf27c75f69570c634fd6939a63ea279a92ceff2965f2c8ebc2fbe9eea5fff3b5b2b7fa8f744c669f928c77ffb02b55b537ed47fff1f9e89e6b6adad9a797fea5b339e783cc899335279accfaecfde2810fda5cac33922f2a3dde9bd86b116cd28b030e7866bad58b72a13250d33573417ae18243ec35f286e2774dd796fed929db53bb9f67ae3251d0715e60936c7506fc8b8bb8f417b00cd83ce4d288ea6b2add36e70e605f695ed22ddf479ed75d1b878160f7b659b96acdfd5e943f7141e3eb7046f6956f08e295f399c191b623276ad5243fbd5abd905e81cf47755fc0bf894ed30f116c8664caecd5a77b57ebbe88ceff52142e3c65e71ddc0551ed8ab8d2f2e8ea8bf77d7c6fccdb1d6e81defda3597abd03bad6f8e8dced4f564a3cf8be135fae83d7438a483df3d73fb49fabdd1e7d0b693bc8f0dfc5bf5a933251ebbe4a25b2bd51b05bbc05ae458a730eb8d8e74f5498ad693619ba12726cca7c146983b0e6a4203efaf3b77af68cf77cf95a0ce0fd4e2b7d7df81c8df4c7171835a0cf61aea950177b068d6fbd1eeea0f7922a0c6f42ef13988efdfd5e4f9f9de8cf9e1de8ec7f08e9ba2e3611bf695e2bb7ed89727bffd7eca838173569bfa6ef3c0c673e41d19569dbd810c6f727691ecb6615e7fb2e99e5c93b4f65886f4c04f6e71d95b6c486cd897f5eceda68866ee1aa8ad75fd71546f483e2079f6b95ccd5d7bfea21ed135e5c44f76633fde25be7e2ed748762d93ca5c8695c115993f3b97eaec1d64359577fc41c7eee4c6c66e39057b7ade83dfa14f2ce805167f811a8a22f86e6a594878459c00263c1093f453bf8b55373adb85c43472ffc8223d67d2fa8b285b1cb0c16972d9dbdb086ae3cda651fbbb26851b9d6536d5e12ca58bd81580a384f95ade900e5c78233791a04ecc6efa25aca8bfb7e9ea245d909eb0e5f8c217c1f70c63e257870cddef897c48b7f789e64e34ab7e7bc8c6c1d7c89a937ad124f34e2eda8b31c420b8c5712f9ab195acaf50a37f0efc226759bb4514ff3cc9d387fbff500ba2ed17bcf72a722258b7a0b3cff17b456dbf42d2f7f37dbfba3cf32db121b61c7ff5d35d8dfb0c31958b92a2f5b83e6fb9c5254817b5c1252f2ed649291d38c63e899fb8341efddee37222f8c8077e012a6e43d7817cf1a2ce569705f83bf7b8458cf3eccb8b5f75bfffe85ba80b2c9346bbca1b2598cf4528b1cd715a2339f5eea549e1600ea1a64f8ff82418256db83883fa8e5ba25df3db8b03ba7f7271476bcf3519bcfe1b5e8c597ef6a3c9d54ddde9d752ba34eb18738aec54d8bf78dc5b6cae1fa1b95a54ee48c59c784bfa192aaeebf6b30fa7b9e6ea25e6cd15715cb1913dbb14d9959857a6e98fcead6ad75e71ae8debaf3df81e3dbf76381ed919c7a62e8a3fda4d3cd1dc38a775e29f702d27e0ea45368ac147605740bc7e97f9c8d64a27c0f1d3f0f5f8680d52d7359ce0c3ef1fde9f96a1939af9965be40eb3cb822861fc53f24ad98d1727e5e34f9075c0dd3cdb8b49ee02e7f1ddbdbcc341dd93f35e4b5ebf6c6207db6bc9b516b1279af57d9c97c27068a5a75bf35ce3e6f94a9ce7563acf0df477ba0894149dd96688dabee37c60a4b3775273e05268e341ab7aa32f12b59a72aa50667efd941be430f047f7ec73a5f17dd3d8d723f68d617d61c1bab699a0b3cfe04c26b0dfb24f0ef4d232b04cd645f617bb46ef78a338f6ab8d15f7df43485e1fc8ba1e2fdf83df7b3547badffd73539714f5c3687d439d8e206be595708f125f6a32fd1277cc0737be0cfdc4030e967e5ebe7140eba8de58e3673ea33cd0d15976ef0357c41bec31a7c6679d929a637466c2be101dde8bc036ded2fa6c2b6744d4dff1c545fa281736fbb7b59f0ddb4c90ad2cebf92b55af5382737bc69e156b9efbf03905ff69a09755eb37107dde3fa9852cc6bffcfadce09e6e1bf0bbec12df70d1bbccbcd19a91533f734eabc4b10aba2e4686fda761dcddb3befaa3edefc02ea7ee6c8ced157bf11ea4016ee7a43e6a877ae6e40afe4d06b7e3b7d7e764bd3ba4cdf9d9d5ca541155ec6311e6e720a27163717b1f25af27485e7fea2547c9e80992d15d8eaceb7d021fff8dc6de10df297fd98966e90a6102983f6141f84491dd66e66ee37bace0f7dc8dca23d20dfce800359a15717a761bffbbc8d7c3b389f64d07428f471a9d0f2cf0f32de9dabaf374756afc0d737e63a17300fb7e707d179eba0fea22bdb8a7edab5f91dc9de5b63d7ff7d6aede9e12c5b563125f5e33ed6f9c39d9a57ca559dbbbdf1cace7a07bd520bdddfdee2ddd9ce8c16dbc329817c9a7ceb6b911aec8273e83ce9c04e91af9deda858168e2be9c28bc1f92c58be215f5e7235aa13db372976bd11b4991b274436f690eb1f6d927476a5583def78e64c9ccb1c62486132481f09eb9c27b8ece5612c7c13e3db1483ec16f46ce79fb6e9cf22eae93c43eb39a689c3981f7134246d60b0aa7584ee5969b2201fbdbe7a0b63460861471c27f6965f35ea12bee56d876833ee401f687dd61d09a5895a4637c6937bea83f904fccc8da2474c52dd446a79e11231d2d10cdffe573489bc6f059689e3e028b8d5c7bb5716372cf8fcfa4f324dbf9fba5ceb267cf063d189dc39f1c5a5be728b0df41df4573a25b8b9b8ff421b8fef9331b7ea44098642ec8e6f64cfc76ed44f446ab950b7e4c349e90bfd05fd31acc3bf96e87ce34c6359218f60e674e64718cf3ac709b83790e2bc0e1dfef39bc56800be0e11c2aae9dac913e087cfb295f4951c93956c90eb969e8331fad59e03f6fdfa1483e0dd49724266b38f98777a1c7e7d93a40d7488ebd9eed019765c6ffd8d7bbfc207a8c5c3c4619d8890d26c3dea17d4af8e1da7e643ed3c899ed73b97197e78cc6270c7d667d76acc9c9b57622c44921ffe98f726cd807f0853b9847f83d10fe624d925c31728ff069949c279497163788e46c55561bcbc063b1dcd2b92615b20591ad01bc0223f0b7d4681d07425981bdd7f056004e6af5b8af3fcb8821be61f08e61226b78efdc8fc5d379c8db9ae9dd5ea4e675b807d7a1c38509599b4319126ec05ec1e3f55c3e40ee4e45cb12349e689d35363dbae7d9ba7de0e3b85fa7cbed650fb524efd734fabdb1c3bd088d2be43d7dbb76fc22a5b0fee01d7f7efe70ed7663e3330bd8270a6aab42fb6cd07ef5e31c0ff00c3db9379cff33daeb78dd8417c86fa2c6d4efdef387b9073cc205f61e9203776364d65b2c8ba9f3b4b7b6ea9fd716b48fb1d03fc9f2d3ba5b5b4b09dfd7e29a1b9b19c90736f497ef9997068d6c7824afff662ffd306f44166bc3b96bbeffafe76f20ebe9bdd4979fb43fe9a7bd7017031ed1b26a826caf051a8b81dd7519605906e386d6f838c338966e3dedad09ea430673f1835ef18f677c13937f7ad662394b6c5dfb6fce017acf77f2a8d77f03e6e402726879c3588c4ef63dd1a530c60030894b06d9aaa15fb3afad7d8ee458f37f4dca81bbf3b43e3a5699a0b5e98d828bcfad43c0878b61e67221c41cf6f60ecdf9796f05e736d6a0ad7865b9ae3776c8c8cba291c76d5cd1e3cc7a679589367c27b43e70dc71d4f28db7714bb41631ce0f8ded36e5c76d4c87331923e519e2876b721cbafb16ab6bd0f8a3490e5c73efde5e5b7b1bc7253fd235a3888bdc13f911c4c5ccddd88f619d675eea43eccfb1cadc1b055b88eb9c76c6e77205eb0ef5a9ad2d7887ddb8df5b1fdc98e64fe003a1bc34f623cc810d7eb716d3eb8f54586fdb28bc003e1578c7f8eb7e64de36d62409aaf7ab5f8555b767cb4a497757d75e2f3cd15c0df7243ed3b13f6647fb68aa43f6a595c82663ef70254be07c087d0e301aa15f9539597346131324fe867bec0aada7d4bdfd9b40ffac80e8022a7fffdd7afab52c704c19d60d7b6ae43b70d5598fbfff5a961ee4ec2ef19960a426b307dfc82ef98458b5b9c36bff676c8a92c25e2d5c72b6820fccde657e6ac6ed9e1e3c5f39ad92404c2ae0855f163ca56b25b8cfa6172cd8e9d70262dfcd38b6d88c47e3f8408742e384c7c8c4fe37ba3fa42ff81ded720af6a5381dfa0d4187ea74218805957ec512fcda1a70498a58d6030c0b927586c792e7fe21571fc6873327a6c83fedefa3dfbf9625f69f9239ece4c2e33c47cc4f02f2f6dac4909c661ee99cafa5ca432d1dadabf514b4f35d5e3dae60fd19f16fdae5b4c1a606a3eefffb6539dddbeb0fc7189f5d6d3292eddedf67f4b7646f2f419ad47b52c3e46b897dd51ec6139c652de9e72b92677ad524f4c4f21a3066ec72664fce804f294d6a9051d0e6adbb9e7d0f915c09163dd9057ef8bdbd2672ebd973c306db0abcecfeb1c9635d277beb76d646dbb35f6517a85fb194a68abecdfc2353ac6774ed11f53f1bddbf7ce8c8ee91fea35677cfc172b0c9913dbd5f83ea506199067bff2ca7b7dc3db28972f27f7b027029c2fa3045731ccc095625d9213b6bbdb740be925cda43d860e47cd6cd7c2e893ccccff7e87df11e877cf4d626028c1ed457119cd417fab13117f08d6ffdb318b0a3f3dca770114ada3bd763934be2403c141bfbed12e0ff67caf28de207c79c20ee8c3d6e664cb5d6a7d55acfd0ff59753665d5d9995585ac37174e35655521ce9d7a5caa3389f95a96e9e638bfa9478a771cdb35ad2fd77b2cabcf2e5afb47f664717ec739a803e7c353f9e3411c603d7138322f4bb372b530564407adf1ab922ee24ecea26794a96c33afc1a99cca4b8777d9e244f1c8e15c09f2dba776c864ade45abe79db81ba96ee02ffbd11a17e0bb7b1638cb9edfcb705f0c03daf2984e351a0c798b12e2e22d72af53dd2758e684f87bc224afc5e73d2bd8efe5e80beebe371ca3f67b8ee0fd2b71cc8ab4f4efbc582456b2158c67950f77fa77528656ef07e94971f8c31dde8eaeb4eeb38658d9a651bbfa03237b0bf7aa1669f1c705646e8ccdd8f581ee7124c794f73524f9be4c0a50dd859e95bd5f9a2d169b677b12587f0879b63525b62a4596ce872c659afe875bb0ed17af7ab72a39c0eb92aa04f3207f369cb23a02cfbf3a1ccdeb02fdbc635928308f251a05dd03116bbcab126359a274f3b94e87a55b891cf38ef5d9fae012f05f97942c82927b376ad9d0d5c05c2eda6884e8ed6ab5d851b594b661007e9e2045fb2c8640d66fb93ca0df7aa09d6718ce6fc02df4681d660909ab9a2cf334564e8b5f4b1b118b41f38d7babdeac749f5c18c0b454b361b6bda3f8b84f6fcf950445833d7809bd40eb7003fc376586f784eb0ea16d455190326bc4a289ee29cf723a6fce0f2ff6c3486f9e072f45cc285f9c607ad9fa4fc263199ad6c17ab8df9f6dac44e20d6bb989e358de25510a717bc96290c289679b9a6171c89dd279fcbed25c0f8a51c6af2dfcf7786d600b5a6c8bb8639c43d9a331fe234d478d3f38cedebb322cc4bd8ebd4b3899d7156353e5766f3ab375c2327bc9e3cb0e50e45104d589f6be56caef66ad4bdf1c01533b8a6c5b7e919a788780d7c9ca49c3cfbc5134acc8f31cb524524f52d66d95159e2fdecce71ccd7e0c26bc08d5ff64b261f3ce3bbe186703833f3843095eb038c1ba59bd58d5fcd079e98cee786ce07459c5e48de762bb377e8ec122709b2078228cefd25d68dfaf66187adbce3fca178445dc8cd30a641c7f1faea825c7a647352f3b82812bbd5097b675dbbae9e720d119d0c63b9899e2594d5c62c82060bbdb7d7adbd82eeed7378c7bca26f5ff7fa8d57eb22a3f013d78d35be3cf2c5a135bed7e257af7252bfad21326d6a6af7df13d709a19e37e7d559116e965257b3879b773ca94b95f79322b409d74ab7ae0af6891ef00dd7917508787e5ac79891dca51473bfb467ab69327b7cce9c032de1dd0e8720fa295f346739f129a176094f646beb98819880bd7e3f37db814e43e4ed6ccc2b47e937e03741fe3a698b01c0f64fbb2e493ec2a3e78a48a7f4d221e6e1919d856cf5816da685547d19c89fa0f7d8b5eddb6c7cf910002f92b6cf63f018faf59857f5b75fc1687b76b59291a1668dcb7a627971ed75bdc57bac96ab02afe9c676335bfde5b93d2b349c48dbbce737bb7f8f44d6cad607d4d8ee1fa38091c5711e3439328d5da9cd6f1fd45e857abc29c6dd601bb4bc6ef4b757af2ea97af3c595da0fe1c64a3c8f655efde8ce471682cf146a5a63d927dbec2210c25efe72b0686dd87b9d518b9bbaf68c4cec33c7dac5ed7afd11dbd7b3877f9c7b596bf6eb187c1eb4ecc47cece3562fd9d8dbdc8b9af5d072f0849fc2017464cc6335eeeb92fa5b3ec4c00d7e7bb09e989b02f91818fbd6cc698f0fd35a7cbb06702be1ba4771a35b859756a7a2fa8e3175ed19c87bd1e488f36e1a7f7673d61e2235dd46e87ab2dfeef5f047634fada53fac53865ea73ffa4df0b5197049eb6545adc3be5cc6b97e984fbc6af72bef6a49df9ee8d67e89cebebb791acacafe6f8fe7696e32b238edad1b5943f609ad6f980cc16ba7de6855c833c8dfc6dc0d9817b0773dc14f03cf840c3a6c79ede6744acfe9086a178b538c73c4fbe58ada6b7c1a437dec3ee7f2617c6be8273a0fe7acd54de745f269eeaed475197d1d391f91ae81ceb1ccc6fae455b6a68deedbe3adf22a6277604ec1ab82ebe2b575fd901cc373b9a8e52a47fb87f54538ff5681681638e789d285a19e32b4f1827943172364b328299bf86990e0be11fd2c3572f04dd5e75211c15f9c7de95d5e2c70e4c03bb061eb336afddb77670f75c637f1d3f2d2c447dbf15b603f948c6389c94f3e3074cd1e38528187b695f14aa343cce650b71df088da21db1cdf5e1dca0ef46b16bdcbd517308f3b8e39001f1ff641da50af3f776af6aa50b13e1938ee9a7921fe8ba4606d9dd4e71316476413b5ba669b33ea203d02ad270172ea21c609758973592f06efba3d7b429922bdbd7b5619622c2d797f9bedf46e3169cf52f075196ee571ec5ffa5b7b634c644d2f16d3db03c46fd85db7941ec682f73a7bb146abe0836b6bcea6abe85042fe19f63953d8dce9798f73cbeb8d55e29c9826266cef124f83b33269e74b9c787ec290da89509712b747d5bcc475c540665fbdb8f52b3ccbf3a4aee9ec844068f46e3e757f6a63b43d3f6ca7d3d36a90bdf3f6b7cc4b7d7e6fabe74f6e97f81d7691cab5389790e7209ae596e3eb6076bea8ba81ffb6dd53fb9d56a235f1e1314dbeef9af988c61345ec6306dbef1ed648ead782ee62536182e37b257e2feb9e177158f3479d1597cd727bf1b8c9bc59ab548dc9570feafbe4678ceda663306bcf4b984c26b1691fd97a56191b8fb9161a8eb0de59dbe4bf53758670febb459dc7359b585c1210599a3b70cf7cea517d1cc889abc52d02e055a3e26132d9fb48cefb5559513e4fba0e40a8a277a1b9037eaac14de934433c6ccb7b202609894590fc9305ffd5e08fc5f5bd0dfac816a47cf3488f6bf33e38e08398b8f60a3084d8e78579af94d4cdfcd39ad97126039c9962c31d41db5d508bb6cd855774e34672e9bef7244edbe445818f79195668fefd9aad86f5dbf17e5f835d195865d29d112b52f313e424bfd7fafc0bb25de05c3e744d679bb73ab55f8509ccbd4972756c35bbeb4f3561bde64cbcfb2de165edc612ecf39067e22ede83f69617b10d1f071d1bcc3c921b8afdd06fbf5c0de7abfb4d7dfb597637765fdaa3e7aeb60dc7c4de02b98a73911274ef5b46cf6b13ebfaefe35331c12bddc9b33370cd9f54de19a9177fb9ba06220ff5ed1531ac91dee82ed55e6d1935bab16a1517aa5ea47e85396474e8a7f4534cb71fcb009c9ed4b47b74ad249797db4b00b193321bf88518253dfcf622e0657ac04dc8867bce040e5d523395e4e3ab0dc76bb8b18bcc9d6567bf66be652eac57d6ae56c455f471dae644877b71b5d69f5551feac4c11895d526757456c75dc17122b98353e3759902aa8632d625d0df204ad32f189eef3911481b244f3a1bea84b26f76b36a474e63cd099c2d12691134dc6aa56e61b0dfdbe8a94535c52b660ad107f39b289d198f8d584f1d3c5c5e74aa8b10fbca95a197e69654ace77d5b193c43fddc7dcd139f1d9c75ee0dcffdef8ae27ca29bb7a1c6022ae1b5bbab86952f9a3ddd2b5b7afa4d67ebab75775300f125ccfb86ce26417d94a5259082f833955c0964e8d4cd662889379c3389918ff67a3ab384e268effa34677f1a94aa16c1d9dec1524737c06e79b416d50ec3b6874e9dcaf4a16bdc39dcc14cabce923d48b994930be4ecdb216370936b6e979098e47637e4689e8ffe5ca67d657cf7ecf5d7b9790e7513e65f5557a944335e0166d3875fc88f62996e1a765568085b1d71b1fe624b9b8481e02f6fc591f8c7e1f962a1f984502b5ad960c9ae3a17e09f1009ff6b12f25de8b0ae6a36298cd8cad56915b2199b78a9cd0d5c24ad68b4aae5946d60bfe838bcfaa16e77bed50a8fd78d375635175baf4f9ab5783be71553486f2c3acc10fe3689dfdba8a5c641b1ea1a68bcd74dc4c7d9eaa84aa3b78767516c7c3b5f8e2582ee3da128e1bf6cf1a7857474b5e1d9dad808ff06f7cbed69877b00d09358e1dccb99779692078a303cef93b1dca8eef38b9c8e2f8f2399be73eec693803c6ea91f6bb84e89e0af8d46718b312808d73a8140bdfeb459389aaf7f8922f4826c03d1093195f3e75a96f83a27b22e067c7d8d4f4c0e3ef58b8f7cbc67e2665b9e2914de66893919cde7ecbe2fcb217b25cd6c7e53a35b88e4f1463fa3f5a7f45e3bfc1eb5386fa93a41e1ae8f7737e4f71ba3ac0c9b24b3ee73cdad7995ccf5f9daaab81e157b79b02fe6664f71a679a43c78535b14efcd36efa251a97bd85ceb115e48c3ae8cc3fadcf7bcb65c06eeee4e4f50bdbe9157d16a3b5ebddc7db295df8d0d476873ceeaebedc3cf7674ce855e509f2156bc8876b7c3927ca97c3c1fa6099fc53673925e16f7e9a70483e29a7153a9f2027541119fe13bd971560d91c139f65cd4e9434295c068f6be38fc16bbafcda582cd2b7619ced2a396fcc298eede1357d96ac70fa251e2e387fb4cbe5d958bbe997b038ba5a78863365e93c58bf7186c647160fbc1b85afcd387f44486f5ca401f080854897b88b9ffba372eacff84a39e1b38ee803e7bd5072b29e554a0a760ec659c5cd9a39e441545eb0cfb1ed33c9217232458477e5f74bca665eaea75f4278db60fbf4c5813ac06e670f1bd80fb24bf98a9c078d3efc23c6979c952dae4eb326785e1e72a43fa8b3439f979867aa8bc58973b486a3beffe0907dd46fe1466743e5e4a7ab23f97f7a4857a9d1c3c3ac22e7dcc79bfef09e42837dc3785ecd624f06c75ebdd1ee8ccfc229aec32fc624f688d79d4bfb302aa417f4793794e5ae0a2ce30fedbe6544977c7826fd85df2ec77a0a60f3e1fdacd10e9fb5c2e2d2e038e95a7e1dc7f79c3e732aa4b73676a577c7ab563436e505d99438a636c53a733dbe511cca65f35b1bfb11287b119f7f9d7f8fc80aaa1e6245e417797e88d7ea5fe82cff4f63258eb3c158bcfa47aa8ee1aca870bdfe5eec04fc3e68ed2afabcb5af699b1cec6b8807c678afb2f9cd060c88e93926937d7253ded15b2c06f84837b3b7ace5e4ba7b6fe9bc6ff8e028bb9d9cc521eab7a397d9707c496c1172271b9f9f633268ff24d648fd86be8c1ec5671bb913671fdcaa72adc5371054e1bddff8605b9f99cf2497667e1ecd0735c6978da19e83457eb321a789b97d8ca49efe00f591adfe7837322c581415f6878e7fc1fff58c81b940ef866c176b7ab147efd5de76917e7ff1215e02b9d3c486b83f2f36d6fcb2b7d813e97f1f23ba34203e1ce8375e3d162c7576e51b7bed0526f3ea019f56dc62ab1b7faf8ef7b5e88d56e4dc22b131f1d6f8c2217f68df606f96e514631ea6f99ee0cd917cd88b0baed56d87581cbaa630b625128cf130a61b5d22f1f7210ebfd1935713d247a4a3617d24026e08ba1ec22bb43beb70431416939c278f63f67f8acf1299ced0b563e5bff1b9cceeef73b5c9d9b1dd5646c8428ccf06e2636d7d2bcb757ba6fa55c828fd5c0086d45d7d75b5c77b90e4c267641f3cbae6ce770a3eb4560ead191aa78ef608e689c239d492bda5e5271d176e7ce4c0eb80cf7f3afe3bb0cf164562eb058e1781ed43ee69f0b58463a17d56c345715a25be58860e87e7b0e54bb4df73c75a137c52f7de1b6d7e93f53e9e429d15d986aa63fdc1c5541dd829ef2545666b932f7fb9ca8274c1b8daa4f2b975e5d8bbe35e78a4e7155738d759f44e38062177b2a8722d37f3d26eddb571cb479c877ddc78d2e5d3741897569f39a9e740b80db94fb14f16cb808cf04cde3c7171243a01ccf71e38ffc347bff3c0bfd4f981d0f8464e847564900f5adcdd63ab7c20b4721dad038803c8da2d6ce2097ddf2f3a8ba6d3fbf8038ee5bb5a835b6be57bde5c6b717c20db4cab97b8d610e3b6d3c8583fc1e474d86bcacf58b8f6ea4462bb4d7ed39f7c9e8d9fad89673ed32fef72df063ec01c733ac2b947e2396586ecb1bdb8a8356bcbfb11e48daddc6539fd1c3134e72b3d670d3f2bf94c3c241f5ce190d99d4ffcb5c30221dd8fba46674275d9f817d55f84d3b4f4abfc1be3077a712046d6e297f69a9a29a9582f23e3dca8948e93fd8cc9eaf83630e731e841cd585418f340f6ec6cdee8d617e5b4ce3e53e079e8e1a17cd14cf655c38939bd1b272f9adcbcd1db59d669dfd4945ecfe92a9da2675c2959530fe58e0ccf22fc371d1ef3da9d35f7cfeafc23d39eac531a9b57885f1d0d9f312d96d068f416096a5a2b621ba7060c0de8c01ad6a529ce61e074c27372008e108ce11f3cb777aeb5efd3c6b309cea095ad7e05e758e82fdff34fb23f8dfef89ebdaacf51ddc48e808b88aa55e49ff0fec1bc3d09de3f497f8cff10477974a6b432cad6f03944cd2b8967775ca38d8f43d2c26a337b075e91ee6c8bb34fce841867307b707e34e755f5d41e69f635f03e533a5feea0b5f550cf9b3ed5f33eb879ba8ac2d01a6d1b7b2cd8d8dbecabc3e22059d8f1fd5687563fbbfbad66b37e8ee17ddd152a0ef64af1113fe4a779f07b8f9fa6fb9df0d3cce637e032477d03ee9cf739cda7b3b1925a5e16487e74bc311d5fddcb5affff4b4cb6e753a070f1675c5f95709fccb23810ca7a2ff2ac27363c37fe8b33dafe5fc41cf34f7b751f735cbed78a18d48033e3ba3d232dddfaa17da3bfbd7ac732a1cede0b653754c806f41206cd7bbeb72689294ecf7e3419838f12c9778b7e46523fe14acf9fc682bb3d0271e08ffa8ddfe86c467270ae849f0a9de386578557a853594d26b28dcea805ebc018ef328759b3fec985fe79a87fe2f8027980a743ee47703d35a7ef05e8d34d5d3ce0000b322f790fb1bcdca2b13fedadc9d6b177e701af59b5b18c1fb8dddbf7a9e07d608f2617d7dc5dd1d9f209782924ff1af93f06ae64ab7ec7d75a3c07d72e55746d8dae257673b6d1e7af7b1de3167b5833649f9b805f7a3e56e93af746ebc4407a3cc68a1e3d91af5d13def93c189faf6e7c9abcb2fe98e03c2ca8e374c16d621e33c75e1de5a6fed7ec2d572392bb93bcaf00efae77f3ad8873de035f03ea37e07951bf43d46f479b4c7aba7a532f059f795857c7b5565a9e678f2deac118b0a8ad40fbafc620a2c740b651bb8bca01fe22f47eb79b32937e13dffc56d36ea1aa25bc3b42e7d8aaf246015d53ed695e8ebc7caf817f62a9024f30a9ebf1129cd45c3a7535a5146b153a5c710cec15e76ad2cba73df8ddde25e87b0f7d9fae333f5de7aec6326d6d714d7ab147c336d795375ad7d2312bfcaa3ceeedd5d1138d17e704798f5eb0607912171843be743fa7e1a7ba6fc07fb6b7d7c01d290bf1af26571c9dff50f34b1bd65e8b5fe86b707edff01a246b5b7f33e805fac84dfcb40c3f1fc9ec3ff5c100dee8dc018c5499c87ac3a1839fe18a41d2b64f6ac17e913ac90dc6beb309deaffe097331ff5c0fafacdb9a89adbe7b6b78ce8658b484e4f6dd249de13d61325a454ef3ff96a70e73a7f5f16a2ed466c7b53e07351b8fad6fe3c8d6f2d2803c1da4fb60bdd0697daf64eecf8ab8cd7da13c294b27ffd4ca6263cdcf810618c8af8d758358967364731cbb3a403f95a50f7d04dd1bfb408ae6b93b9df497ca4d27755e21cfdb9fb10bb46fdd1a7d82ced08b83a3be10de43b8dfd5c242d66ee7e04872c9e649e1b2ebc2e37834be17b7025b64fab5341efbb871fd8986ab406f7229a8bcfaa6e62ff46f3f6375e81f7c260d57db79634ed177d1473d47ef9ba2330cb839d220f7b855e8cd17b92f86508fc1e5caab932ef2ad55def6e29cffd4b2149f75b0f6569eb540ebffa89c5a1c7e8bb956447436dc6ee8b3c9a5e8ea136ff3bd50c6caf29007559cabda1ccd29e168ebf76363c78d7faa687c27de680763ac58983bb0970b25b0374560d1d8735fcb92c5dc1ff7638df39ada71b95031a236ef0a78336c260f46ead33c4b75c9e4bbc77c025d2eb8d0e5756e49dd3b976014905d6e8cfe9bfb6f91cff1ac9fae13294a7865ce3ff413f7307a9c897d397352574f3490acc5dca58284e4c66ce8631ce89589929aa90bb5f912ce355a7e6df02fe80f301e77756d8043d4384b187752782dc7b69429a7f794d40ef8ed6a93c44d5dc07605a9d9727ccb42c27f8cc246fe619bc3dafd80cfee6ab5b7b2a8916938c73c76ec5d48f0bc0d468ee46194f906ecb6556e2e4362f718b953b3b582d65bd2e670278ae8f050575c5cd1f79fa16ed37dac1efc7c104faa7916ea26daeb2b7090f673565fa89c7390a97b4abeee8509d27112e5d4e552cbc81e1716155afb106f5d4a99dcc6c2df209eed43ce3a60cd4f0d3703f6431eb2a731e37415bab896ea2b1ab33f9c2f6dad4d0fce942dda43f976a466caf22d5da5c1f44b9c3f8901eeb6de6845cf5f8ecea6bd56c6cadcac95f9a496b5f2063890ca49e5bf6fe7d8b6b35837ed84cfd69121f2151d777521561ce7ae506efcaafcf02ba8b33cc8a1dc6d82d4ac909ddfca0fad1cd3b15dc201f9689fdc63624583f2f98e293d52e25db3b8d81de7cf9dec225c73edb3efe6ea411f5a5f7d674734b923c9d3dc11cb84dc115a6fb97b16e4df4e898ecaf2caf26eff62feeee7b5b11ff8c38da7fe7017db1957254d6aacc71db28ef7f0f17c03eeb2c2be68e0255a36f9b1d8e7415ffb433ffb71f9146a6b5c1a4e77223f400eb77115b817eb36fb5e5ee314704a1b31a6de734abde79cdf9bc5d5064edbf9c549a557e010b5d54b503969f37f6243f472ca1dadcd5dcafd0af07e35d68bd0bd65ada44d3eb471f8715e972abd6e1a3d7c45e9e148ce3cd2353bdb5d9b9f1d7b750a48aca05b67e37a15b94d0d16c027f4b8505926fb5a96c3ef90cd1bca22c5a34ae150d6682c08b647020e80eeb956bd83bac2c3ef1471ca4b5af884bfd5f889bf95b5913e270ebf2bc3963b1fd9974fe42dc61d1c426f544e5d6dc2351c48b28071327e35891c6ba7eead49b28adc466fae9574917bcb77c6af9c54b2d0fa5f7cc890fb57e6fe12bdd37bd09d07c6ab1739a98cecd2a8bccfdbd6d0dab8a1cf89aac5595bd3d99afeea9de569ab0744b236215c62e752115574be25cae99dd4313a44e067d0d86b739e4b517c69b8be54ad4cd179e493fa3fb2b0027f8e62937a40ddb5f97ec6f6da253a267afecd4d305f9c22426c88ea279c5f85c32d6e745bfe8ccde55445ba3c7c06c787359e2fbdf9edd5b8ff695dbd071baeb7066eb69edd3a9f0bc991b30e79e3bfda728bdbc6dae60e8e23e9c17275dd73e813bd6b236f0037d7d9a1c43f0035caa9f9564427c3b5d5928b6bac437fc644cec9640261c53fe00f417232fc836d593ce4e417c7fc937d7cfb711f2f985fc3f1fa48fd4ec7c07e8ab36b2d62ca1fc60f794464bb0887e720e8ba0df703c61255c07142c6594bf9cc3b324dddde88acef68a3ad26ae8deb5ef5d74f70f6466b865a3b20b79da8d94f8787d72b16e4992681c08ed1bdbee85ab047b4723458efa7bdc8d781c05e892d570cf4e27ca7f7d7bdcb85577f34d4a3c9fa5fa8bc2f640bb4d6fa7c11d8ee0aa25097b5b29017ea233b6aac08ec48b6590e622c90b715239df10bfec6dcff03ec379c252c3a4be09c171faca3873e105cab91c69d51188bbefc68d7e34319827d04208b9f61cb4de24b0ba1368af7830c86bcc0287bf6fc9b63ed20b76730a7f5604eaf8d4ea858ebab27f215dddfd6678de517ef805d67e66e24e1985e4af8a5ecf7e46b59669b517f2fb76bf7f4688f4bb90fbc1ce5d54fa09ec6b76b927e211d11c922adacad7a1128682f260cc6f4474fe48a38ede48ab0aa3daecc5c64370ee61a7c97b3473963948e4478fd9f618b1ce0175781bba9f5410de70e6a0bdd9d2db163afcf8afd1e06cb5de2a7e3c1990031ffbb33c11517f5bedb77bd7b30debe8d8da71b6b7cd923d9111da29520651fdcf4e2a377265c9f1a674e56917b554ed057ac6b027f22f8ae7ec962ccbb10afa57e47eb06b01fe7f35e6713c219087e6c3546bae9e486fe4f7430e05677a3b2df86ce66b20dd8b710fb3dc0c73c47e321dbebd11ef0205033f5e8d8eb444a77573446ae20bd38383f07f4891d8c45e8a91ad4c87e6d78f81d6e51bbda0ac6d7b5b6d1473a075f950eeb6e17fadce1ec613c77deb63327b26fc61e1bdcdb07b70e7dce887c8e070ee747ed5848bf83dc8d458d71d39dbe43bd4bd2f7ef43bc978e93e09cb0ce6f0f310c459c7850ab1bf2ce814772e2831cc2fd7252f3656f999574ccf0389dd689273ad1474a7e6feb0e6ddbef3cdbcc0331213502a5e823a5f07633a6fae00edf6addc3419ee59a6164242b6c33047d594c8edb11d440c17de542e8eb5ec84b5b2b2f166a03edd104ddbb0ee406ef58174d3f913c86dc76baef2e87cfd6f6bb340c3fed35e358eb6fe9985136c796578f452cd7f31e6ed515725e8d92848a595c2c6e077d73a16f095acfa1b234201f0deb2bc679afc52ff4df243fafb72eb1ff62b0561745007815b021703dabbd88c648fdd996b08ca7f264af33d15e5c4cfcd12e74b83c22f88304c92b7399dc5cbd00ee3fca467cf74fab6bc0411d52fc2c24f34666e57046a42ca5368612888b2a58400c2f847b585cafd082d8deba72c83b10df1dc8d89e5d45e938d86f708b3c2b817ae9c43787da2ef6d6ce819c1b2b89a1ed9445bae32998ffb7edafaf81bd3abada4fed3feeffde2ea77f7a061a1764eb4a116a0bb7b1b326b1250cfe86717af41e6d2c859e8b3fc42e92062391f9cc24d4a1467439c57e3486f74f1d07e41eec33529fc042ff27f69238456ba1c921bbca542e09e121607b67bc38fe962216cf7dc5d61053a3f4306ccbad2e1e3721b5be8c0ef3aaadce1e57e6dec8bfd337bd288f140b8f8962b99927de28fb6a1a3929cfec05e9454ad16f2592e3b953d3fa5278912ba9c0ebd42fdc34c93d81d20f31bf00e593c5b6c8409f390ff599477a179d33833141737edfe6bd41bdc89327f29163955043d61badb3403437be08b5f9d15cbeaa703eced355d48d09d853a3722ad3f1082c7febbdbd4bf4d17b82f638d473d55650376c6f4d30c63562af01f087ab1787e3736fb412f756991be47d03e156ad7523578f06abcc2476addd4a592b6b9c57cc57c66857795c91fcf97a6a8db2b8ee32ce812b734574f2406be387f95f8c03ef36e386fdb54fd6c3bd2ee95744d78b613d74f6e2f21d7829fc059c2337ab5e058a38cfa871b9b7317fb88796cbb8cea041f4433577a392edfced8029a5e5038e373fe41368c6a80c95a5daec0f56116fcd9e3b36589fc026f1f1a50afeee87f162b4cfac38778f80e1466b387767ecebe72cbb2acbf8c5b11964f7f7f4c7669f343cdaed5ed3ca13cdc942de85701e86980b6ee9f09ed0ca7f58033edbf2b5b4f1cc4f9dcd1bd967503ae3c6ba35e7c996d2f320df531191dcdaa2f334b76b7662716cc791614e7fc94b039dbf5f683f438c300a917cc2f9da0bd083aa9d50c27d48f67c59eef4ebef74a7e366e45cda9a48c0b753be7ecece373486ea92c9552d7e0988bd80d6bc5b9535c46223c0d5d1d805c08f3b687d72668359c914d1e0f742795c45ced9d5faf6245a0b58676863a87593e38f7390fddcade24c115629dad7482785b873e4a4528aee39e0bfa17e8f8a7413b80ee9f21fa971c1f2f090c9da2dda8b3cf08ae37533463228f2464816a2bf2764bc404721dc6bcc3988260560ace760a391eff9eae338cf942a3c6e38ff45c5b9ef3d7f8367250cd21115dca7563f0aeef4a538772a8cafa438174fca6c7e75096eb18d85124e82810d7f5504362418d76fbf665f7d6e91ba0615bffdf35ecc21a7db2eb2cd8cb97d2dcb2bf964c9674e3e8771e13b4c01c48384f64c5f79a09f25916bedfed497479cd1988b87d40707fe9f9a055c4e00796d601f0247852cc4974686c29ab66e985b097810c2b6161bae01b9051bc63db280119252c0b49c889d8dce50468a6e1191b911ce773bf04e155e1461057563dd11e6fd50ec55e28b6688ebf8e33317e94210ffb3c64d5c1cf5e9063665c34b859e5f33959c8e915d1903d6a2026e4ade1572a8a9eaa5a49ea9a59ebde816412d482ea8009b21b0840f90ad5c0beda584733596f1aa413ff4e9ed23f5336519f3fedfb5dbc4ef0b3f35d11acb82d42802711a29c28ac84aa44bc6bfd4597692c157387eaa93db351379109f813aac0fc7dbe1caccbf1fbfe849ff32bcf668df507faee434ce3f678f9fb5c7f191c2a770177773bdf4d1998cc717f28b484d1f6b672b7303f8b1f118e17c61a7e1b99cb535b84694bf7ef1b5bc9d1fd4b00cfde57be2a5bba6866522135f61d39e097a1ed6d7be9668ed123bbbe180c57d69fa26011f3a595fbdebe70d7763197bdc9a25f92891c7ed261d37d4fabcb7ca58168dacc1c619353b52e6537e87b13f91639b687d85cfe6b1f1cf0fd649ba8a427da349c99fd7325a03e6656fef6abc76f93f3da7f5dfe03593711fe99fda6ffdac78ad68b73fbe5733a6c37582ce33bd66a2d50f6bbb77af35c982a50af76eb81ff7dea3779b3c79b71fee8973f0939a6a93a3b021dc0491d3d4188ea0efa96caabf3746cbc35200a77bc4ebca32beea559cebd599dfd6547e82b03a829fb4b99fe83edbbad0e5233beb380a166379e95c8daa9c28cc3453e6d3df1b634d78b4c7bc5fb19c524bb9f664fc880d8074e6e273b83eb4f2fbc97a223a37d8076334f69dad036bf2558f725e8a0cb0c7347d7a0e225697b5ecfb23cd5b8ee787f2bee7e7efcfa9b2d8fed53d3ff5c598b57d313e922de1aadef281c64ed038e94fe45a6f9cb4bb715affc5384d1ef56d27747dd367d3f3a7c66e642d5b7fc4a42eca42fad33b4feec6693effab7b7eea8b716cfbf2fe11cf734fa37da70692391f8aced6ca7c5b6c6c23071ecaa5c1abadbd7aa6edd5776ff97e7600b33bc0a659129903a7e1ee5f7956a07b167f45368b97fac06bb745360891935e3a853e7e0a4eba3b4ecf1ee6797b70df2d44ba23dc2bc42fd229497c2c87c65fcb5284dae03fdd2bb4f7e6523ab952ba08da9367d99c62bcdd691d0629e84545df97cc0316796fbf9d07e387ec8bab924eaeae68627bce5e7be4fda9daf4c85e4d02ac13a23e61fd2f88ca09c610e2b6a1568538bddce9a524ce093c9f4b3fdf69e58732dfe646556e64adfc6a6b478f76571ff2aa7a394b2f50ab7bb44a901e8cec9b40342b2f423ae921fb186db1ee4ff4be8d7dcebd6a72a1ebea5b1ce69007fc88d9d8f4e3cc267149889f54c8d675f24fed1effa947e51cbf27f86d480dec7e7c5d8f6ec54e481eac35f6b73297d2553a7d8a05dd45189b6800269be9d59e357bb88c32a3f0feff1d8e615087766d322f6bd80ff7d8fa36374034bebd0ad759a3fcc6893c928af6fb27b911ae56540ad42d83cf6fe23769733b9aeff71ac9bdf8b99defbd5676cfe5e22e1e4ef7937cffc4179f34edf49e4bbd17d5cf32b01631f649ad678085c7cfc9a11e2037c5fed921ae9f5e2b36bb6db08880f94c9393cb99952986a117b399f7286f13f354f4ea5835b6cf67ca5fbd7bdecd61bdea7cafdfd793f1a2ac821a1efa90432dce3aae89f9b91f5373afde695b601ed501ae532ffb313b2bb9287676f53836710536f5b809a3d8902bd98bc1c978ad0ff176303ecf319f1d26ecff08c3d3710ecd18de8f12c2a1eca4d21f6ae2b8148f4d83b502bfb53e47f2b96a7940a0867b98d058368a677280ad5944ae758b9a5a3bfea89c4ab6daf80787987916eaf6602c5ae45aa51c80efd4cd1c0efb5391be0fd8018c19cef7567041e765406ae96cd345ed5a103fe5c1dfb2dc5d3d6dc5d39c1ade8cc5dc894d1ef2f33cf536be47ea0cd1315aa8e5204531a93bd4bd73838156acee9a3b6c10894350d7e0795a965359581cbf96b7d0a91a5f1f70ce86eea99c4a96d38e1dd2e781df48589c1bff39c5dff9da8e8955662e37e6a5748dd66702f58aff305ec4478e399e8ec5057c6133f6f20093112ba743a9c0675c221dbe597b7b7d7a6e30330f702f37cc710db92610a3073e87286c3033b08f9ab84d872b6fee233857a819d0c6c218c76e6abfbee55e1567b29e3d68afccc8ef0f3123ae009811fc3ecd1ec735222e41eb1b7d9c57dbd4a374a96bfd86a31164d0aecb4905de3c9a639db97d70e326860572a7adf931c833446b45ee6af8f6aeb5b849206b1ddf12d47aa4eadab8545d5557675fdb9a2cb38cf96ab9fce9beaa4d6e3ab2f9932faddcb65cc098df1dfbe87fe2ef7f8ea9ac7ec462250f30950983f39069cc111a6f81257f23f9be66fc165f110ff6eed3b3e05b3abd8fa508737153f1257c06586ee85949fe79d7fefc61fb01d7d8d2e0ebab1abc945fb3970d675c5ccb4d5d6bcdec6d37d15bacd42193d3deb3316796f504cfb834f8c7390c26f303aef1b75f95f9e01d719c26a26371ea9fdabebb07ebb1fc2598b1955c4907292a42f29991cf6b87fdcbae7b6bcc4b276c4f4951b3f6701c6947e9c38085063ea132076c9058e27550b571e5a7982207638a8ef83ebc7e022de195c53b5dcfe01df2fd7eac41f11c1b84d6e38633bea588893e2229426b8ed63ffc288f702d0696f8c751fb1270e81ba0d3dcc85959be93bcc37ebde974c10622dff8d623c23f5e07cb15b639c136eaeafb6db8e98b3a3b475eca5f882fb3b76637f5dbcb9ed265c89eee64f5c35a891dd6ffb9eea2fea4bbd40f7497dad6caec07f9c0fc241fd68b7bf9b05e30f7183a718eec61ea6c2feb8d15ff7a9ed313bf10fb38dcdbe59460d71bbfd4e02c87797db4cfb2cf6a55385672c1bec4313adf2e1b0be2640d769955c45beed4ac1e0861a808abdcb15689b738440ad42f71607d385abb3e5c29025be54cc7ff88be84cf380abfdf724f0a4e2a61fcde791539618337702a74e62e1a5c420ab802bc9feee53bb17ff72d4f37d20f902c1b53ebde1ff6d76e7c9960631c07efd9fa7af1ef9fbdb10d6f72d5c83f98f70cfbc77a5880a227c7966fdfad9c426b8f43ba7cdcc7db2da6c39ca368200bc933c3d013939347cbc4219e963c0bf39504975eec7b146481b83ecb0bf06b441b6d75446b1ee26ccb03ad8f658aa87e6fec3877a39cf7b41b60b66571cbfb477e587785c807cc69ff717c033d30d0d9a322de78f70e331fb2b8bedaf6e2e3bccc4416b750375315ca74a3bf65caf2d0e2cc0291bf49c7ac8fe1eafaf982fa1744d36a889b73529e0944be908e592ad72c47f2f487586232ae7d5fe0439cf0fcf1b9e6a49813f0e179a895fa93e75d8127386afdea3dfcb25e3fdccf83b8d97be88abbcc4bfd07384cff3feab29c1a35e0ca179be35b7366cc36965ae87551075c82ce09c06513cc62ee5a2e231db399a2b3a7bbf1e44ca49355cdef4abd6a7dd06ec4728a31cd359d3dc9b5f45bafcaef8ded7cab51b669fb2350b5ff041c63269891dcbcb3451ebcef635c30dd0e3ab74f4e3a3f4b5161400e4725e5f8ff0beaffabe6ff23f9a47e4b51dc60dae77fb3367cecb743634e9d7539607a7602c5a12bac888f58ca36ec0ef834b655f9a1cce37c5fdd2a52bf2bf3c412d7e099abb91e952b45cc316f1aed7b33df79243b1fcca70a7c387d0c4eae639eba2e0e2f94da1fd6e1bdae359fffbcdeeff34d30e79cd0c4e6094e4667223f0d22473b4432bbf2d405f32d4537fc7f93fa7f42fecf205d308f644dca87b86fa32a991f30bbef8f30bba83fff8cd93d6defb1b6f53647baff705fb822cf3a699948c7ac3fe6335657ea6dfee8f90f9edde0c41ff6d7d6127e30b6f76b4658c5dec88c3ca28b6d5bbfce9937aa6985f4e0769de0baa433993be77a54fc56e671a146d96f45cce11373b2dc6150efc77e5104948faf79ef35c8f6fe9ae4f56553fbd5b9cb1768f495c0de915ca607183b8c111237c7379203df7ba6286bb72818ad421ffbee1fb53ff2d35e4e53b387848db96664719e373e1413b5336f7265e13935d1715e86d7e235d2d719cc23928f526ef56a01e1ebb59359076292eead75d8f2a3eb9d3cc67a358e7f58c0e7d7c865a4af49bfa4b44cdcd316ffaef347b9660ab73e53f299e13726f82de037338a5fa8f3128d4db4a9a836cdf89753e5bc623a2fd2694570d1741bac25ebe7c84f718c14b08b9103f1cb4677e8fac25a1fd1aa2263819ee5225d00b5ef5671266be5b8dda3a7ddd517d0f9cdf0f25ca2f9e733f9741eee8ff6592dbe9c3adf159d396f3b2c76a16af1efcf13db61b61706afce0a73433de78335bee52ac1ebe9d4ad57e217122cd60c30560ffcd070ce3cfa0de91f9f2716c775e70ece73ebf629d17f0fb9539569e7bf2efbdfeb39e857b83637a517096cfc28261268b7c2c3dc6b4d3ee9bccb279d5c5df1e77c52c02dd5cf7340d5eaa75cbdf5831cd07580ec99e736d8f6271b8c7960833136cef5786683b13fda60e6031bcc64729aa7c5edf95831de89b69f890f95c64ec1f9b6d3c2543941aef442169dcb27f185fa0f7250db3c1ee0f178e3fd9a7fce0d01b9a03e1f68501b14b07f3ec13349fabcb1431a9def2ceb0560f93b7c545ec927884f245dadd14386f4b14fadfc177f69af16f9406f18e86449e15801d20172bb668bce4f23615c2560d5171379d1713d211940f276defdd32afcd4c2af8eb330ce839ab9290be088d237d47d1f2cc511359ff2365be8b656ce36d6ca33d8a666d99cd72b2795d2c9d54b0dc035ea359c1bb3662e74e00b1ce2dd485c1ae96ea219375866577b8a9d3afa295ffb1c8f645de6453dec952eebc548aef2fc7351e8b6de70d934e7091e33793ecdf5e836ac7b912b3d5cc20eea18f9a35de8d96ffc0ef6ffe4e28d7c92b363167b1bd95fbb0f6fb4cbdc537c1ee01a22ccadda9cbd43bfe3004786ce34ae487af6a5980feff9d1763106bafc60fc1efbfe84d218ae336fb48a5d5b2a30f65aa26daaa19ede5e4bfa485fab3ebbf6918d279fdeeef25e1b1c2a91b3ebfff3bcdee4ed35c039cd031c7ed9d48cd31ef7c1f8dff521bea13e3cf55f9ad8ef097695b2d881ff12f813ef6c068c0918fa9bf777f129b0a90a5fe4f34f2bb87a117bf3b8049d21f7b6ade803875d4f8621392c942970ece1791237b67101dca4d9cbfd630926e31e3f3e97f8bdbd3d4ba796bb0debd13aff4eecc5df4a0afee133d8297af6ae08522473712e45d2b71fc5f9e791152d86aacd689f7fc9e281ff8c4a0ed776537b39901beb907d44e17998c7b84b0ac1d6d9e3206ff12cdb2cc83073987b8fe3da1c15d74e3f381ffbf6ec62fc717ccb3ff5f3ed4b83faec7d0cc7c87880e1303a0c87184ebfa0de1ac5c528c6d997e5ff6af422593c64c8666ab0e25f5ae90ed7688fabf27fc811a0fce8fb9dffa477940ff48e127cbfd6edd2935b802d865ad56ddd854fe1695dc3ffc9f9e27113c6b1920bc69af6ce97109dfdabc88928fc60fdb5bc853e60fa938bcf250d5eb8de70d36fb9ce228b5b04abc81de39a8b5dcd8f55e4849f8b22b4b549e29f5657d4862c4ebfe5aa645bacfa10830eb92fa1e7980cd43f407249b6d9e1d905b538252dbc42bcaf8af33d70983d1a5bc8ab68ea3b10dfee017818958531e43068d6f893397ffb69ce6fb6e6a4c375a588d367b2b3fc51769a43d9b9083e4e20bfcf8ebddeee718d71b40f9bb184efb02c877acae8b71370b00db06281768f1573b51e562c05eeba6832c1388e1838d477c35a0d0dbff2ff72cf89635e9ec7ff5167fcea236257b29625681f6afaf8b6a9df5ed4a3c1923a0b2bf0056bcf72aea4dc87dc8571a688cfe5097a2f5f7f20f3c41cfc8ac437d2f315edabd62f3173ec375e4a576cb0dc46caf2ceb793b57ef1f9b6f53bbb22b22fcd18fc3a777e8fbc54668bfbdce214b5173ef53bad855bf593efa7f143357e9c877ea826e71b8f5797472cc42ff4dfb276a37c530cbf31b6706ef6f954f2ab5a77f5313aec26c807b07d908de2da18ffe41d8bbfb886895c117c1c1792ab07f159292a4f1bca07d5cc71fbb7f097797fffe29bb2595e591cee38505691dbec47d85f03fe96dc25f9345f5a69dfe95ada80a76c41e13d9a9a4c15d2850e3cc1a3def9a3081f091537071b456a649b563fe12fe1dc14ad07c51e70f808430e9f3b4e95c92046b57fc6a9f2403fcf0d9ddd13ddb8874bd1aa5b2c6be55a5e9c7f1b429c9bd1215316f1d9d030b6d688c2bd1cdf32653947f68a49f843575f4b1c4fda57716e69e10ef34c964b79317fc4b1a2280213cb36bb96a967f842f38cc39fdabfb5ed0b718ece9ae17b2816d21f6f0592a5b256dae83a0bea618fc137d4d735b7c093ea0a93898a73c61ef1d03ecdbfc6f903e1808f90e265eb734635ed155d8e53dfde72f47fe27ec9eff070ddf5f7d80990b1f356c67a47f6027931839c323a6fbcc55a75fc59f04e0d0f8c2cc4af182b8365902cc4df6a94b10413d3e462107f86c9f7b01477e707ae254ff4b6bacbbf25b504289dd6af2658df58ae1207d9d310b3ec70cab47e2bd7d26faf2a33fcd9f9ff6401e389f7e2a236c42419d4cea63840436663ef50dffa5c916918faec7be636bc0de8ff4ff2f964bb48369689dfefc8560fc6fdb5e1fa73b5c9f1533b009e02ef67c2d943db5862927498d132dcd812f092c3a78673f5a95cbb9cce8582fa9375afbe258ee1d652ee422dadc739c7b238e755f40cfd2d5384267f697a21b90cbf9ceacc7b1565dff5f4b62925af505b6aef5aa5967a3541f733a6fce00ed38d85e45c926c691d733e7edd0b9d8eeece1e8c8d267def853cba8ff73598ac26defe36b071df33576322993b7c4bd11f6396b9fb685e9e3cfba18f221de7c1918d957a7e5367052773ce7f54343e4b875735366d72cf3e75a6548e06c56b9e57728c738a8c79fcdb8dca6263c3de6b79dde593f38ab9a377d32fd1f9cf465fa0cfefe0382ebf96b7f3805f9fe0b129bef7a54a71c7431ddfa3b28c734f7b8ce5fe095be5631fc30df32ebd631f436f2f62df7b4030fe3ac1f8eb041b6988c9d8b54a0df486c73a715b17c315178c43e113b19edbe3da6e31887eba4edcc57bf6299ab901f8f52955c3b7c55a560e67c6fd3ed07a16cc73e6a5811e887ce59a747b3cb2b72f0167467b2e61f03a4e2e2ebb66a08604dde6a89c06c2a4f0469980d61d92af06e47a983ddc3ace3b66ebbf68ebfa17d7443f3feb46d5c20e477b6b127b23ffe28a26b7b7d677eda95a7c75f1fc5d7c7191b518cffbfac714078f91b775e54eefe1deeab0a66dad13ba2d826d055fc14f7527711dec64634dbcbdc96454ed6fa4c3a13e541b6d5e76b509bb3a92e05fbfc7ae5e94d33b8bf4761772784c5e99037706ba9f718da072ac5d065cba204f4cd11bddd768bfcb51a95a6cfd40e69635d44b6a39570c24934e7eba88f7e04760eb40e46f8d5cf22b5aae19bc177572cdd5903ceafaa7d8683dbc51797293fa3e3e7b88f0b316397d2fc87d5bca70ad3f1ae7d4e83dc09b4f7883cc8597eeb0ff0f743015fd4670d4bbc16f0efaadd85bf47707de3a6dcf9e00f1b67863668c8c6375afb87e0f197b7315ba62127af3ae9f941f315769fb7a4ee5628a87dc1562c2fd6ab61c248eced39c0f2fb84e54931b88fae5c3f8223dc8b576049781e33bd4f752abffe8c5b5979f45c67537827e439e802f4cc6caf2edf2a9dd6ef0299437d477baceb45b951cc5e10e328dc665529c1b17e544b88e0ca427bd5f71dd9f38f7e037c2b334effdd61f5303ecafd08fa9315dc6a85f13e01ad0908ec540bd193affc1aed97033a2fc947a76c75be01c81cb2074c55de22e5addf1aa46e518d70843fab1196b9dce72558f5d5c9d5edb777c05dd9816ae98548081b6f84b0f2bd0e2d1a605157beecd11d8e9d6a2a2e7c8ae26636531bd7c6a2cfe14ca2fe5147f7f0a777e00c6ab58b4c7a28f14d727f653330c44137c088ebd5a76fb38fc426bd3ae261379049fed33eef9ce7657c5c29881bf6cf7db89a08fb85d4bc2cf79d4aedde005fe721c485b781c8a08f7f9e13844de68c7781c5334b88326ee8fc69f7cf7eff3d03cdfc663267352338677b81ef41c9095dd3bdebdb762630cc31ff700bc2f4bdeb718f7dfffd99c35b92f6c83cb1bcee73fbf7ff3becdfbb773fbd3fbb76ba7fbde13cd3410fe69ad366bea1bafff4341fe2e3e914d85390caf77b5ece93ab335cb767e5986df50f58695f9ff8fb9375b4f95d9c2852f681d4c404de430410504ece8391388828032830d70f5ff53a38ad626f9beb5f6bff7c17c6644846a46558df67d8197a03acb33bda46e4b5a196fb4b3261559ea1623b46f4caa78963bf838f9254b9bf4c25fc6ca559aea67458db256fe6089be6be51092cfb3dee73a9730950a3115c3567e3ccf92b3be9183b68efba41eafc5f189cff76a4e9bb924b9cf3a8c0dd5af0117c34a5f203c78e63d177c3f6f724bf4af07f85faf74912a97e53ecf0fea0e6ea10479d8b7501a88e47304f9963b355748ede64fefeae0163ecf43e8e3be913a72b20eee7591f978c7cde19a6ddedafb3fc13c8cabbcad877347e60bfcd64ba6a507dcd5f5f4715a7ab1ec9a9be0b10db435c0064a719d484cb067c1e784c6afd1eb66dd18edff50b6c0a7fe4b99eae57dd22969e7c338f2cb7ad45739a4bf972dadd79e97f5238f30d0fb588004a330c37b9c782f37c77c2c1e895ec9b5f56e91d4ab12fbb033def7b8e55e985f7ab5fae943ccf74739d13fd41efd205304ab6b11b84727f068f017bde6332ef20bf0a3800d9dc33a054edd29d84ec8368bbd6891c138a06b837904794d7cc47a718679d5ad39f012802f13ea0a3af635b16bf48b6bb2202feb24a7bdf87348be7ff7c15f54b56114faa69360aecd1183ce4c8f3ec77244af8c69bcd2a2b96218f3dd3a36f84d64a816355a6da6863f0f1d4ac4d89298eb2699d34ee2001f348c05639426a35f349dd5559d5daea3dcd06396337487df18f3dd6636ffdcd0f478c705c1ca52dab534ec564d03b0638a34c03ed51baed949aa71ae318a0ea40d847b6251d903c081d6abe1c467640b6fb9e2955a57d83489512c19bb8a4357fe3d76ab66a127ec43996fbeab7c7d2b738c6b0e0f6d7b7bcf2a93f369c5eb9735355b1ad14cb3a8fcd3d40d552fcf2774c6627e84badd68cc4f961ad5ef74b99caef3d226f44116f4e7ed6a7df7ac5ddb09b2e1f763471dd573b0a658438bd7d8d7a706348cc911f2ed8a35191be06e9d5169e57f5e99b7cc6ffcceac5d001f16c63aabef89aa3acce6bba62f57a998dfbe38f1dd51b1ffc8b7e6b16619993fa172999f8e571af0bc3e6d8fa38ef48d11e886319f59d4dcd844ce4c879c9abbe715686c9a314de38657cc58f8664ea1ef9b3153fede3d83c39883649eaafce94ce61b5e32b5fefda2da170a0770e0e6bafb9cd785f863e6b10bf961c17be5075bb77c22325ff9d0d2abcb506f8e9a27ee607e70cccdda36876f6e48b030cd3cabf85f96e1f4d6fcae5ef76fde914abbedbbe7c1aff62a4958b3be908f6da8af8f2e776dab38ee316e67e64e2bbefebc68aeb317578871cc10f337675bf0e775fa94617ba06e6fe0861d3e932a9f007c4aadfbaa7efd79813ff18674b76abcbec87559d0591b620079067805782f869cd66a4eb5c4881d615171d966ce810e5ab2b3726327752cffe60ee614f04661fffdc5e3e38bcd04a94bf8a8b63cc4a4a6788fdc14b6e91fb7e6e8b813f2403e2e065beb33d6f9d9c54567c0201fd7dc6147ffe498466626ecd535e38b530006413bb702fb92915c45f3ccb7c43fd8b709be26ce158c62994cbb67409847a8bf4fce85cc9b209b21083c0ac7aa91ae08713a4b21bc5ecffbb3011e68c8db3a89fdfb00eb1c72782177057deff32c6d33c183efa186f0b432f7c93c9cc5983ba4ddcff9cc4d66a1cb1b111a77ff708e77c2ed64237d2431185d08b0afb420f59e804750f19143becca4ca1542679e8bf58a89cbb085232c086efe1ef0095c7346d94c509d8bdad64a6334c776ebbc00beaf23e194a602e0721481f35a09656e7a7bfc3d1a378f7c0fd8f6ddb6977429a93790295bedcea9c1c767c764699fb3139bc991ed0839afeec0a024be3fb79bd4358dab6fad5399df437e1bc19f46631a6e8ef3c0358d126a0ed4d1d98e9cc236e9d82b29dceed63d529165dd7b6e25e679a40053aafbdd2880b85744871acf0e74cb08dc29f98ef0ab3d9141169e833ee3b92ebe54cc8946fa8ad6d5a23d1e55dbdbd79a71a4723cfef5ba9d42ec999f953e690fac5dc8e15ab8b63a5a6ad46666a13e71f9c164a6179d32948dbed02d6abe326714dbe2cb3caf2cbd8d01ba439f6b5c1c5e64db79425b8d4d97f138fb426bec88f6b83de03e7e0df66f5fe0978cd0ffa39d9acf56d6f9cd65d833badfe36797e5f13c5c1ef7e01784ff214f037806416e8c248efdc1e7d53bae3b98d9fa201f6fd4113c0bb5412ff0df3b219fe1368c86e4facd3687972f01eec77fab80e37741ef978ff178c77b683ddec85a7b35de57c8612a01cf28940e74290bdee58b3bb15e910fe463f4776529755eba8df3b62aeeb4adceb0854ff8c090dedbe1f29e3ec5a0fa3f9d8b133cb3395bb8dd80e37db75e712ec4cdb6d039bf18b56a5a704d5a0b8f56fe0d1eb9c9b6cfecbd16425e5865ab021e9a5de4c99279be6676424e112edd5af76f6279e7e0b7baff3ffffd465debbebf2a8272657999afd121d2f3edbe7ec5e509f0cff5f42b493b9dbc12f0b687f271ffd7a9d6839a463b35a757c6185d3bb47f4bf2dbd0f5c7cf4cd66995e346e60ae90b670970a96f3799fc2f01bf41fb2cc536ea8a423289eefb20b54969bc13f2f6395d00b7da116281079737022f9ec7f6607d5230972dd445019e743f97a7c5858edb88f19a7d35a701a7e7416e8e5b8c86320f7ee26cabe2da2a9b99215b39c579c8c89e02acee97fbe24a851ca084e4dffc74ef4de666ed7bc8391abfdb2d7d9a60fdb15f032a7b70fd622722ebaba3b36f6d023bc9e33627a0a48ec22e47343ea34117158cc2d109676ac31bdcf0b03eb44da717636ad8c6cc5037466d97fa15df60a3173e91f1783333671b438f8c46beb5f31cf2ea66b8fe0ce9ccaebacf810f9ebb91ffa34c551fc9c1bdccda77b608ec43b80f5455b394067d9ba6d2395ed815738297bd72937c8473b1b0fefed47628eedfb353a34c9ac238dfcda5df9c49ecd700db2e3e398b00571bce351dce17c865c47d7e7bb01754b666fb3b62e76f58491d9dd133206f3fdcdf645d2767d63e95a9ea3cce47ddefa2e63b8b666dd8b3c8dea44e73b9af0b901c916d49674d8c7b0332a445ec746350993ea11fc87f332e4beac7717adf62cc0e1daf673407d44951f1de42fe477adc9f75117c635942e7788dcddce41f69e9b79c2c32c79c15b876790fcfd85418d3e87775cd1bc98b9aad5917c9e5608ef9c5ac4db93537c0af4fd6d3d94ebc27f54514d2890b9c1f6750389f9eaefb2a9bf3e363fca3f3e37395cf1ed6cc6cb828db16c417ff8b7e5925d2b540f64e92765ea2e78ada3495f9ac3a1b495db87e712dac0fc9cddf23f43791cb6ba547c90305bdaf92c9f675782ed6f349cdda0cda7626f2d8fa3b6ab5999d91365ebda2ddfef6f53a1efd2b1bb4bf27f6f06a14a4a7a2b97148bc5a036cfbcfd44d16a7da364d02e098dbe03d30f292d9d1616a1bb5f499f8e6189f819b8c6a5b97ec97832d6fc42ed8f6f48f7630e879f899872f7514b8497c46679f83f6f79988d6cc09c921c4dfad45afcfce429e4e5993a6c0cfbe36d03ac63aca4a9d1d5aeb339927604f06d5ba70cc0def0ee61dbda8b99f86363fd39fe4e9acd91fc898937b6367ea5cbda863aff6ec8a28c3edacf61bdc4eec0ffd7d3b6bffe9cfed9cead14cf8653bf1bda49d785fc4e3b913f2cb4ec891eef8d91ad74aeffc4becf5cfce981fa648ff8996d4f0b42d69b0d3b70736a8388c1bdf1e399704d877171abd996bd488d3664867acfc7b2c19c3f4d91e4c6cdcd9df5531efe8e0e221adf43124537ffa5ce3958f635be42b196a61c13ecfbc22575af8838a6dc5b19774b98a1ffe067380c7f6d138b6b84fa78e39a71d1ae78278680f9f8e2f80ef25cc03a7c03ae056c8c777b628c1b3102d113006baf33f1aef3af31ca55fcc09e345e9ddf957a09e68fdae85c1f7ca34900ef877c5fca0e7fca0cb2f93dbc5eece5fd58e0cda609efe885d3f55d8e4ad46998ee5e19eb79b8c0f1e9bbc94a7b774993ce5652fd1deae61fcb3a32c28998639032318f302fc28b80e813742dff4d7a45e92cc1fcc5d2aa3b1e403342eed35c9a23303ebcdd38bc704579f726e1807554ce609f459dbe8f96c4d6f76eb88b5d1588be610d7dc4c2bd9cfefe4b6e75b48e5099a1fe02dccaa9c1ab3dcf8c4c77182dcf308af9de69eca97b8b9fae6e244f6ebd23173c04473130fd9c93bb07d060d6e6f5df7d93abbdbef954da463d375fd6f8b0b999cfbec6ec964ddfa18dd6ecee77b8ca133eabf97409d6be5efbbba217ac7fe5eaf80b85b16ca9cf8ddd24b9a7e31c3b39db0c3fb989ed1e0e4302ffb7697bfdfca4f78d9d68779c690cf907f776dfbfe5c7efaf2ddb5d9836b735fbe938347bf5d3cb86fe64b6a5ee1be7c0366603b8eacce0b879907d28fe3fa1ceba895e7f17a4e6bacaf7f3d47cfebda8dacf89d7c3cc219c3784948dfeee003fd5f9b2fbcbfbbdc2874a819c6ba30c03f55e2f1c43ef3e73ef518e9ba486718b5f45dcc8f71803ad3e39ae094eae053c2ef46ebb7839bf55836028cadf844ff7fbc4e7ffa4dfe2f7ef368be3bbf79bd2e7bb8f2c806b0e607690a751d1cc9b77cf8dc0738b357ab40f698d8aa17686c13898b317e847042fa6b665b0b4a4f0c82cd199f49fd1a9ac3933bf0794f5092f9f1947e0d4e151f0aa96f0edeaa79340e15563acee19126b3582958f4fdf76f7c0ecff665f05f721fb7fadfc1a37b6ba39f53027e4e71f251fdbb2c4a9d8c7187cb2c077b08e40bd7fc8987e9de817882be5fa91fa134387d8be1e7d92b3e589113bf8d300b45deb9798588da5e285cf47eb746517fca8f4c39e868fc6f92dadb735bdf57f51bae195fa4997d5d1c901d1d65cae123dd61feb5273efeeabcdfd73a6ce56b36b5e73e0003e22a7dddb6895bffa8dbaab98063908ff4a93c7fe4936ae50ffca8abf56b3b9b9cb1dff83f91fe7f0bbe088747dfb7f0c06ff3c05715bdad8b8022be8ba09fcfd1f681353e5f821370a023c0266edbd71597c703df99173ef49515ffe8dd16f5ded1c5ad7cdcb631a1666bb63f996a6e746dc2aeed847da9b753dbcf54d95144c7040c50930b04599876ec4349cd1fe8a2d38b27cc63bf650baf74883d60bf62125f1caaa3739338289e37a4336a6d5f36e6b3ecc75927f8594684b1387a313bc2038374fc17714716e4aa8e59eefbf83dfd77d6b14ce2b368f5c98836095b74da1d77c758fe27f6ed5d7f45c08d7a3186ac68da593f4e7ae72be4faf3056ba320790427c9023dffa6004fa531de09fac531e9d4e7f6a1971817a42f8961ccb67379354b61bf188c87e032f9c861d8cb2b3e7cccb358e5724c592f1c17b2a0b05b15e31ada8971dc9a23c04f815af01f38576c35bd627d66f8ed15e86fa8e56ff29d049d55b433bde21bfc29b914df7dc0f9e8f2a2e067897f7d83cadcf05c4a09eb2a614a4bf899b0b7b80352a383b151e0dcd43146c67fdd7f59d0591df0bcf354bae39b817849b766afdd4ffec62a9373d6ede7fadd6dd54ada459eac2c62df4ecec94a83bc956cc5b47ea3896f0b2ecd644dccec92a2a4e4f6ad1c888f7942c71233fdebd2192525b92ff36bb61a27f41b09eafb3e58d9645d27a6febaf4f960a9f4d564ec6fc5c09fe11ec0466389ceb009dc3020f5a8b3833b504e1ed482009ef349363df4bbc452f3d1ca5c9f1d34c7f87999abd12789f1c87bf2ddca5c7fe3ef15f43da97fbc91dc13cc91037c4c5adae6b2616421aa6b1dd13d80f1c6539955e434e067be9e7738db6de0f0c65844bd5ae287fc2c30effc94ccbbc26e997f30efdd5a4d744e9e6d5c971978c902f30e01ef0e1dc884efa75dcf49b882ae68cdd884e3c756f3123f7756d834ac07c21f34cd1c95be425cbbe8be4336eb77e0ffc93b5a6b0aae57fc578fc6704dea1efe1f1ccb36ffd2f5c5f5ffd5b8b69e4b3f795f7e914d8cabd0e515ae396627bef5df8fe1bfd887cf6e910d9f8e91b66fc9418b1b8bc8a854ee9f70544dcf4beed9f3ce77cf93cdf1f79283dff59f777efebc6aacb3e16b399d155e62643feced2dde5ef1aa8479b032a1aead5c99d0067a6542dfb29589de991f5626c848b23236b184b17fb2ed844eaad89956e184f06bd6096baed5959338a56301467e22270bca4bf2b53fad38513f0f3e979efef13c0a4ae672e7a837aea5cc2b67877bc1f52528df1e971f6441f9de72f9a1f77b5a36f799fd8a2b4cd0cff8f77a661774fffdb4ccdfbe5fbf1f7e9fc9827ede7279d66fbfc4ec33f7e7f66772a7ff3d39b0a84c3fd69ca0e5d61c9e205e62d5d7e0ec02bdf308f5ebd986fcbf6e7eb756d531a570f91be4b13535fcef5f4765dcaedf5f0ed2522a69ce2be2bf1e7d7ef368aaf3eeafa392ca53a734076969353c6657af08debc227ad7ac863bcce5e35bb557bcaad520d84bedfd113053da3244b07d6297cf534f58c4488772cc3cdb5a9f65c3818df61224f7243edcc625d02aded4163711e6dd26ba908ef771a4cf70adf1606eddf1616edf2b7d5e4ae6987554ba9492b43499dc97e279290d94bf9be3c27567d4df35e1ce96067a7d4d3f2adfbe9aa271cd2c35fdf48a1be4a4b913b67d165c657e0ab846cd3e32ce6c357abfc33fb02afe4fa75c5967b69317368bcb3687d3ca5a5fb698877be584fb50e6c4b4a9b1ffa4e4e382b68f0bca0b83582a913dd57e965156735663d4f5f1039b67c5f27173059fbb61a81a175c2abe3f978fa92f356697831a6f9d921396f6854fdae76a0e81d0e5d950b63e0b97a1538fd1c3e5b1a9e9732c6fbf417612df962772a608f3d117a35f7c9ee5d033242ee8d7ffd7580c2ba4bf72d1db560df033ad7981745a31f92436bbd27a4ebc178545ec1ed77b5bc57585a240b0f4f8f822f231e515e8777906b8748598824dc30fabb59f01ff8a451f304f4b7095ac732af163b4be91be40b0bfe699cb88edfe3ee01f6c736ba175cc86689e65a18b97bb26be16891fb67173538213696ccd11b5acb07505ccd9a34cced755ebfe2533fe968a383519d6c7b52141e0458babc31b9f3eea438b730bbf1bda7f3207735f16ced497f5192f1383952cea645acac90bf7a9a4425d52d5dfc0637466c1896f752d18c8ad7892d4a8960774efe280de1385cb64133bc98c768575f31b74bf45b3c6b1a947abfa7fbfef3478ab1d3ef0aa8ead8a6372fbb0f27d746b326b3e79d6e7f24bab86239667e78bcc0f013ba4a909d8874ab20e258366e59953dee55d11bfcd33eeb5a6ce2eca5cc01da6699f875cef99cb57587cfb544eb00f746b8e8eeb841d423ed1a1c61c49dd64f322c75bc1b281f654c05e623bfc946e381a485a5a606c24a8d54d20679ac2e788cd18a98bd679b24f97c7ba0e6b26c1193f1b12ff53ba13f2fa5aed4f52f3b2cdf9d3c1f600ec6ab0a353270cba79fec7055a6fb164467f81bf02e701666e019cc224bf2fa75bdfbdb7f00b823a4f7642e572f9816c4ef4fffb46457b121d7c55f800902370637d35ed5c97992895a73a3ab7ceb615d4355610972c695a3a76fb2933e354e6515bf50ebfb78bf596ab74a0e99d391befb82085fc607efc77652999af9e5874ae6299b5ff91cc3a21c9a799d0a9ccdbed3aa8cc0947043fa8b987d420b5bfab6b9adc02d7559118e96965da8fe51ccf550ab1b6648c71bf1ee67846c055b8fd055e9f58614aa8704616e2a1c6606a712390f8f72cd5dcc19c72cc0d5a1f6585b95ec9ac64eefbd87017f9b8cfa5a39ec9e6f0f2a54dfffa10a7af73446959d06b3cb01e2f6a49b03c5af7ef7379a0678acad2929a9f7abc45f5bbdc703452d494eed568dea04693e4ff3938aff7261ff77f7d351f2d8f1f972f35a577da999600ff8cc4b5eedf7304dc9102b0e84ef55a11f40cf58dd4067531080505fc0f9dfb27d3abafde507f5299bf1b3778876c7a80c501fa1bd431ec7fced756e79103f1b611e1af20f31ae6a76e3d38e01c1dd1bbbd965f7d8bd68b5add7b3b496acc36fbb383f7d9e3e7c529eff07feaf3cab0206f9ec8cfe33d19ce556e4ef074d91bf024595486ce99edf1f378bf67d7e7b6e1150155c94c3feea19a74e0303a70968b097e97cca437c784e7933a001fe9746d9ce5b96b7d66cf6dea1cf4c6af966ed570d954ba784797227d07fb7d56e9d5d8ee08ea7a02991fa7159e4383addd3aafdbeb82ae70af89cedef13d02e630c19fa8f9a76a9cec27ed5221e637fb67cf0559e167480ee306f3a27a671bbbef593ff0bd7aeb39afc6c51e18d4c377260bdae7e8a2f18b3c1dff87fe936e3f1b7d08e39ad00fb0086bfcd716f609c1a0ebb6af5e07edbde0279fd8b3f6d8d6bc70ccdbb3be71f8fbfcc13330ee9a6729ac3150325380ff2f9e30bffa3c8bf5c78e4de3970f74a3f7aade7a85e4bd8afd9529e8f56b6b5ed856743205e5beeeb888b226aea8bc75f92682528e169f5aec7cea34abac8d78a6c74a2af3d51e318a1d73535631ec65d2e1a3b0bd623459eb23736d2c76da74e66c8cb926a9f97d8cf2513beb18e56265e823bdfdbb3a0fed57fd8b2b6e97cb4a15cf151e9c6c6d028fa34f486f7579828343720b00dfac8a83931a0e858bc22553d7c65763dcd227c51ff512878f19a493b4302e481d42359ead5aff4affd0ce711d3b7e50975ed5519bccc85f59680f6ce1651da8d04b0c7456a57ea287321f5dbea2f8e2f0c670a58a3711ad618c8d9ab83c3b58a9f3d316f0b386958e43f070a26e6d2317bdbbc528f084cf18e9d45b3ece1cb42fbc6827d2ef7a6dade3305f457b5e8c123828482e8c78a8b94e3331a4cfeee074f691cc8434c9e95987cb503cbb26fb269b98af44e6e6b4c700b71ace85e1c4b78acb44e67e2703cb90e4bce07c09c8b117c35bd8e2c8ad3889eb67efb473340f9d483ea23ecc3f1d06cd3bc182e0f657d75aa48e95535e1247c866d9f180df76dd626cf3c02cc4b36b29675c03bb3fdb157e564cb175fbf9992b929c3ed99c91737deeafd4f9c5654631e8bc0d4740b9d23edebd327fb816978316170cc697edca236394e660e1afcccdd526d8e50d3e53c3b32e56f71762da5e23ad7cd1b2c5df5261019ec4c33c12c328d398f95f34d772728ebf2ce56493baf28d3943e376baab4557c9da30ce94a5d18139d8f83b354adb78070dbede90159359e8316ce65b9b98600fc4fe7446f9c23cb58f0605d8d0d0663a75381138c9be4ca48b9d4b496de318a4987b60426be8b76ee23dd973e812f3cabc58b7c9ece6f1c6c5992e4e5b338f24a45ff377fbcbd2318dc8a3499d308c231528165d3fdbe7d95ba553b5b03b5af811502f71d716c75ab8a8ed244705f23cd6d606c966e8836e3bc7b260c69188398c478e2586128dce84d16a33054c44d0cd802bff91eca07be3c54c9b1a1363c6721a1df8ff60ec91cc76f267a5a2d917ec841dbe7c2fc993f887ef833c00f41e9c5f5c63e3b6d7d11d4e865764dfd26bdc1424ff91cb2c30e74183f355fb2f246e5ef9dcc28eec3cc885f7e81ff055060bffd95afbf177b5ac37b8812b751ed8c7c5d515d0f889bf79c60f634e7e178adf5ef14fda74bffe644b01ccb1df3f03e3856fcd3cf5858815932075f84dec86803b7203be30cab8d8e63c73cc352b6a1f35b6a697403df7e1a9cd733c0f97214dc947efaa84f908fe4ef657e548b3326fdf616a347af7fa62d75c1f3ee70e706c14722b3ab8d7f3ab23c41cd67917acccf7f3b6fecd33319fe21adf5bca098df48ff18ecf59c068fe5f3fbff26358f9d815a8ec957d8aece9bbda4e01f0c03b7ced848f9a8c8b82f6d8c2610c6a27e4d94ecd9947fecfc656365859885e63a659eb3f3e9785323aeb43b1feedd760ffe6a8a3a1c4b4b06205f1014f758f674088d0ef463fffaecb6f8dec04f707fc2d1feae3da9c7c2d6ef44935b6a3f7af495a988ce1a3b678f1f9620176c0b8b5af1899636c86681d915a31a4dbd35e11c4b2703e3ad64676eef0f9dbf2f1609ea09e149df154e6f06cec5146e6e81d0c8e87cfac71b2fa7d6b7cef81849ecfe45107af7c06f966a5cfcfce1ee4a3e85dce9cf6f74d1cbfde93fb7e86760e51233f7acf1f061c16e08f10b529fc031e0b1eedc75dfff432b133f0f7629eca14d9f6507fd28b71376b02cddb09d98fac83aeabd1e56b32fd4632a88411d9738218f80719fdf2a589a95cce2bfb27dea9399a37d51d6cb0cf292231eba7ef1beeed2248d01e275954669b79e60efc99c3fbb1210405ae938a2f4e7982bc3997cfaf3efd197809f07954b283f6e937519bb1151f3b3927333bc9f52f615ee154832de75bcac951f377342e2a638c9e73037c3edd6b0806b4ec58ffab39dd609ed1d6fd22ec93c350e6c7291957aeb3574dd213ccf90cd9f1d8e7a7f36cea1ed72fd64c7412433173558c19083cfab37dd8fc8df6839c4273d1939b2a27e1e9da015f989a5f56a672c27fd73ee1d4c35ca780235d73f808eb5ff1e637feb50adf7478f99a5067471d0dfa58a80d062ddc73db59ad18e83dcf30639b79ea30c3567d46dc60db0266eaf0f2a5c1bb4e2f78eb2ff2316215816ef94747acccc7a591c4e5169df35acaecd428fb9a347ab5c7e46123e33a8e2b0a4629f17af6c5a0b57c8ebfb4e7ebe6c13e5ce1722b782ef1d82219aff25c6a5fc15d8e4be36febc49893ae6c135edde67e6e4edea9bf92d3dbbf92d33a1e51cb6baf7f20b7bd6bff5c7e9b39534e1ec86dfc70eefcb26d13fdcfe7aec24dffff73eec83bd7afe6eef8efe68e609073f5dcf5fa0773d7bbf6dfcd9d533c9fbb8dd6cc9d2bc4c5dddcf10b3477e05b70999141f8edd0d84d6c333f7845df4790a37d69d7c3f76ac58a83189d453f7c3ffce1fbc10fdfcf5e7edfc91f1eb2cae47c59812e5be51d0c5bbe1991758cf3a5affbc8099b39d3e73cb75e38eae0fb42bebdb5a06c93be919c0b8821eaf73a789b2302b52d5e414e5fd536e0fc9ec98971f12c23f6cda66f7a62245b73447c9e01053a26d225d5985dd263347f53c79ad18e65c4d24c49655ebcbf26ec1f5cf3eeaeed8c87fe695629f23bdfc14afbc84c41c1f9f72595cbb3da8fc12ae143bbbe7ace3da6e481bae1dfbfc243d2594585df3fabed015fc34a13a15d1ef1a1ab3cd2ffee74fcca16b954fefed639dd70ed013696f8e6867dbf72d74f6fd63e1cc35f997a1f371e6aa5e1dcecf98cbad887be5b8f274db1ce1df67ae37bfd557b7a7ea29569b03b229faaa0b0e2116a2040b61c4e84fc872feb3376197b8ff342e7d3257a0e70bdee0b67dad8f0fd7d09f49e161e9acfc5fd5850df0ff0fee43a2baa336a87e7b9e11bbfe3c9a9f77dd12bece4f1b3362cc814f84ee2b3432fce2ec35258bf7e200f3537eefab28558aaa1b9267b45cf7613bfc6425c0d7ef8ded4dfa4164f8efafade8cf0e460fe52a3d5c6d6983838afbbfce159291937cce96afaadfbbce77e07fe7fd3efe5f1777d269c3fd7af08c7a87586beba83cd0963948c008fca11307f5015337f7c0f05ebdc3567df8e0e76d7c14b8cd8adfc548fe698acf92647718ef6f81870a1cd35f0b24b5cf71ac8b310df1c934dc4e9a3f78c43741638a693ba09f07206d2a3fb8a285d3143924ff7e87bdcc665b83fb9877fe2db8c9ee68e412da19abbce40c9be0425532d25db0e944c17946c23289986fe594a661c956c033e4ee7ea45466033fb5e2ee43afda2c493292899cfc52cb275703ec1b95c19e777181fed043e6d82e3177f099bd83d2e808f67197f063b35afefabeaaf1c4b0c65a4a7f1c6c563e2ab7b54deccc1f9629b74bc0ce7382732cc53c8518837f00c37999dd133ec04edad62b635e99b3b49636f40655fcc28704dfdad153fa9becfbd01edef0c2a9b633eaeccc4f9ccef6d8c3fdd521ee0fb0fb36dd74704f9aa3eb70fd7cc0cad9fabcf7d168ee9a7de60137be1e75e0ccfb154ccf7382f183e53f05958a46eb28845fe03e3c4271f7bdbcc919d157da99ff1171f97bea0ecb726ec9bb1287c16ee60738571533f033759efede69da1a37e428e0bc4bf78e382ebd9000b1eeaab31a7c09ae063f857f9d87a9e718e2db5d9a7b72ae850825b8c6e5ec252ee6033f278c3750c8a758f34c97326cf66f2baaebef30e7ef69b7704bf7847665bf1d5b7c8faebf2745feffdc5845771f009d7bc92467a3f3a6733970b70de00e4b37a277256b46c9178bcabee69f93e56d699adb9e03a3e91c588c470b3fb678db2adb5a01c73147b47853569aabaa759c3664cf9bc51e03a9729db1d0b9d6d6277242e08f95d6d398832afa45d4bcde995f6f1ee6b798b17fa4c4b4556c96eb6b216ae6f50efb671ce20aec7e4fe4ec89f9da5d0d79d4507f271816c15c0bab2d551e19bc33fe4ff3e676dff9c2f7d7e56f8d8af7cda5a0b7619ce5acf7302f938a7dd9060380f3681775cfff44cf4de9a976f57ed3d987fab3d76e879576f7286f7b9838f87fcdc7e9ddfc7de600c8e0af1db403d558d8b557332d61c7b3338ffdabf71d4f8373607c4e7499b4e924537bec0923d800ec7df885c466fa4cf319293661d6c801f4d0c89cc615c47c877f3127644b062ebcf7d6ee06e3ed282c5b8498b1fee533abe667b50e77d242f72d4a8fe5ad9a9f969659d0387dfccfcc4b8f8532775cc3cf2cabbba23e012a8ce9095b5063cf82f8d067fa9cceb751c62656d58999fd3760236ef13799ede766a8ef1605fd9ef3c9afb18e9c69cc44fb32fa68ec79fb7d686722cf1ed07f96cafffb85adfc4bfbfdaaac189e4ecd56b42e6ffbb67efd4fcea1e1e8cdfa09f2b55bfe724a9a3fabea61dece501cfebcfcf4930577cb326f32b3ad7eef308ef650a6ab005744eee5319f2507a6d12e631d470e9399ca7c015f14f9f7bbc7f06fe5db37ebcc4803a5a8ce71f974807014cffe4f59a78fc1ec0e5afdf05b9f39db9eecb1ff853fa731d376743446ad5bb63b353a3cc608617c77262f7b8f974f918e2b11a333cd92ae4e65f31ff9fbe071cb30a9b14f29be19c4ee6b55e05dc24e833d44290cfd5d911adf4b494b879c5af107b21c499c12e96d4fcb632d79d9c3acc23983398e7b175bd170b94ac73847335f29184c7346b73fb4b6a7e7cf93d8ed98d3a6762dbf7331b83fee4d5be7a91f566e75d8f37953169d66ff17aa5d26c9c2e19dab5688ab58f74abe67e8ff5b1303e9b83c05f598efb35a3de3dc83f877a07be5e3f47e5659e8d8bf36bce905f73770e7fa2fd5e6dc6fb337219a324ba1ee8c0241eb6b785665ee550fcf6b90cd713f16c5537d43e1743c9a291ce8ee463d4e2067524e17cb6ad8fb7b9a0645bc6187965ea22d9b4d49ce086a6c54e8d3b38d8ea51b9935f430dde5d73765b869b52e621e7e8cd1cac33c7a059c96aebce9f94aff66b4cefdb631ebbed011f6e4c65844be86d6b51dd5a32dea0bb7c524dcef4eb6742fb70cdc6517faa8728c00f3d2b9c41e56fac39ddfea847e5625b9f3757884ec031cee58197f834c97f4f9707855d6974fb5aad1face85959cb3ae1e8efc8ba76a290fedbbed6e87a6cecab9033987da958ae65beddc6e86da13d6fb72fe8afdb4db0033d617d12a3caefbade133cd3128ffbec603346e9159fe59739a26c6b0fb9e61b66dcdd0392968d77a02fbe9acb5e017c2133db5c9c1ed4d4519ddfbc5857e82cc076db88ec43fa056c44c8f989cf1e7f4b776a04ff88fe52f85a572625e2c312556c07887c0cba293ad35cc6defb5c87570c9deb54c52d5ecfa5f6c9ca7c4cafac39dddb9b525f1da5ee11f29e0f8e8174b4be0faaadb7cc71dcce5a9c1cd3a0c423956d2dbdc632bbe7e1bdd3ef5c729e5473fd2dd114fb35a870ccd862795c67687e3cde287c3e8ed19ab02caa3e1bd1fbecc1a27c55e7d67bc799d453ed706c1bb7c38da94be73dc5e8e65b8b9324101bffb8aed7b4635184b30e9f5d3e8e6fb4f66191f5b93c5de96cb885ba8dd1b763415d5fabce30ead719d639b15be37cb5a02e6ceeda06c6b1c5723f65bd56cee63a1977db4c9f03c023babfbe90f869da3b57e8a6068ca6e504fc11995dd22596975f8c4972abc7c41e50e9ce6ac5596b9d22ae732857664ccbc9a2f48a1cc9d9116c4fa42f3ee6b36bf2dcb17ecab905603ff575912a175977e99ab339dda9f08ebbefeeded1aa277580d35a1ff7e4e5dd511b2c978a331be7cf88c0b94cf005af5e98a7954ed1c8eb996a70f9d802c9401bc7c72dd13bc7e3addabccf2d5ad8311a0df5a7802930589480ab84f78ca089c377c6bdb27daefe3dff7733761d1fb88dec16f66b4061bf0317fdc1be3fff8ac668198ff1b5637b1fd67bfb7f85a7fbc92e1996863ce8fbf757762aa913e8d9c44c9eda8c5ef942da7b7ca6a8512747c347fb3a1f273e175cfd0a83a573be746c075a3efa818771a9fb7b45fb0c3efa50374465ee40bf80bf8ac1b9f44a31cc97ea3017c3fc5ae720937d6f65b2b41c63f9f2982076ac35eb1dc15f1e7f099f57efb829d13d3b35eafa79f8e169315953920a18ef73d7a463878f910d8be4f761ae9788c655fd2c21bf72b0ae72f58bd65e7374accdca67466b2f011e13eacb588c5c737e7591eea4d12b3b49637bd0d38981e3891db8313a0f3e63efb819a1bdaaf6f174fc3a306ff8d97a5c6ecc119aa7026200dab97d5e05788dc509d11980afabc5854138e137272f6107e4bcd2517bea7af4a8ee57e00d16a9c30cc1afe8262c25f2f358e41781cbe7b1c37d0eb6d6e64462047b7720ee3bbeee760df3b47a269a6b1ace6f8f670b5f50fa7a15e51dc979abdfb5a33967b529d993d7d8673e23e766b10f6d737e1009e7a73fcb684ba34287875a041aec9c57f3a68f30cf92b04e015fb5d687a7f9b2b36fd1ef3b35bfacb48f77f770cb95c9f9221559ea18596815e2b73ed800be9b9c3885cbd0932d3f2bd60c1b396a70910c8a750f98eb55994c0ba55cd38b83375caa1067ab65c5610c4a1bf817bddadb847889b99b82585247486fbdf7c3b7721eea3cfd24bd6ecde1490cc5b4d39f3adff2ccb6621e819d2cd01c1eb77cfc77cbe46737616f9e352f7d4ebc7883cf6c6bade1592fe30183b9ebcf28d617a854526f30270e6f240e13a4dbe49cb9e6e8ea09b3c21b601f6ebf26a1f93c2b3d263eba6180c6bb90d4e8b24dd8d40df7a118c6accdcc80277ddbb6f9b519bb53f7e98aba939f477676db479779805b33853a497742e54be6367eac5f9f33f0a5b664c22e3e5337fcbc34f2d5de4f018f2395cc7a3fbac8bc02b5dbbe713e581a7d3199854f6a990bc93a972b4b3cb9ddfa9204c99b73e8f87413c2150d581012ea036088418d0b6d0e16ae13d3feca1cb970dd009da139932c9a95f9fbface4ac77eb446914e291e8dcbd69ad19837fc3c77b8798af6cc95b519ef84338b6bd81757f7b8b862aecc5981e6cc4dfcc2b63e4f32f97f197e6ae01306fcdccfc44bd8b32838b107b1a1e15ee186f982fb44fb4aea590670846fa938b2b9cfd42b3e23c7fa2c1c7311f8bc11c9717e31ac452cf29f67dfcca9ad89df61739f574fc0f6e9d61c953e6f04ce2cbf88e12db4f8612873f3a53bd8c44bf0671985a3c2b30357585c457e71b2cdd1115d73c34fb42e02f46cb40f6ef919b335d962197ef2d06e648b179f579f19ee1db0453e8f5e32bb6d67f9656b297b9b612fc0c961cdd1de49b905c4682eee00303e3a6d16f9f948e46bdc89bdc4c33adb3be6e648da47bb499cfba69eca682d0aeb8b6b1999cfc7f89d139a92efe6287aefea20a3ce3b41167bd7003353ab74082a6cc9413ff659ad3512cbd0ff3c8a55403dbc96e2bdd338fb327fc33c4480e168b30a979ffa3afc8afe7833b83c5a59fd3eb2af73b32bdf211fb12e373ad9d6a2bbd7ab41516107ec847c427c80e8ec1cefb8203307737fd5f0cc5d57eafc430cb3bd549ce1bbe500bf4362c699a39eaf6ddf3dce816bf3a4c5eca33aea16b60df151b4752e389bcbb6ef62a7e6373c6e1eab8539b3d287d997462f659e429f77c4970ed8fdcba397d9e626823573ef4f476d7aff6a30e8d395aea3b53dde617d34734b7a067abd900f24d0ed14d6e1aadf46ef6e58d9264a2af3d3d396e0bf612e603bb1d5e02a0b4a1bf3e728094a2626b3c8e1905d06380225dad71d13eaf195ad39fa5e46e3daff0a9c105aaae17c6ec89b7ddbe0dc3ccc4f402dae7e3fcfb8e3bf5f905c705803e59a61e9bebfbfada3bb616513049ddfdde745133b09c6aca327ff81389f39faf6ca14e47d87b962c19741fa73026e27383b03e873c5b7f0285fba92912dc6374931177394cc9308f09ab603259987f3d6fc02275a9dafe3864d8cd53bf4d70cc866fb8c49d119b3d500578c9c31d9b7c4b4f1de36eeb6b2918b11ecd9aab946efbccc43a79078c3758b11e5527164016e42fdfe40116856e2eb76673e975fa4bb18c3bf6e53666bf495e85c73076a10867faab62c93f1c539ceafae1e4730868278728c73f0ab365a5456fb984026b267b9df994774bba77ba5b04ea16fbc8ef6bb02d9afad5cbfb177407dd3539f0b2ec8e6855a008c4b467231f5b72f158dc3a6feecaa39c63b39f4e35d1160753cf0a16992b0be6ccd35f8be602d5a54b6e56725d92f26328fec93ce9a23eb73d1d2173f0b69364e3b3a443516c29ab58ad1d53d74ec93b8b33e67e34baf6fec9746cfe5d9f8e298a3c8b03e2388b79b14bb2df2e3ca1433ff400fd1f72e33647d0ef026b18f7436eec502e89d9cb0979569b012176556d9694758c78ab8dac702eb76795c673613046ee2c706f8e8d2b8efe7fee2aa58d8c7c5138c72cb05ef2e5edb945ce90c06d8d8e0bbeaf8a3617f85bdbf8d31f4c82e9b79c7f9d50bf7a16a8e707e3ef7896b40795cd3bc359d14ea44b5f348aa38c40491dda85dbf8d77189f3c9217b83287991f0605d46de3310f25357a932a3c2f7e8cdba7e607a9c8aa7b03875fa3fbaa3ae082ecdf45a76f804fd4a9f772fd19dd193bbd68fc12eea1b5a771b34bd73e894e2ddcf10bc6393c9764eda65fccb05aa32cf8ea266d5d3e6295c9395d0962b3b68aec7babc62b4998a3bd226dc53a22c7cc639fd7f7d037353fc82a85fa7d9121c685ce26886b01679ea87d76b93f717fd09a0f5ab98d355f9da3d129decbb14dea68b7db5d3fd1f97e5cdc5c3e3e00b6e0649a367e06c07caaf659f0670266d47173459fdb6b11e970d5fbbc909c434594ae0ed40dedcdd518f6df25f363642fc42b3342737fadee93d4e83f2b0d7095aab1c636a0b9c0b8ef481e0ac869ff719cd64537cf4e6ee414c6ce3b02974ff59eb4978388cf832a8f42a8efebcc6fadfff1115bf79f3e5f881f36ed9c0dd61ace509f67c959a1b7ded9c6f741efcf7b7caf686fedc409e6685f73c28c55ba31ad6f741df099d52091352a47b691c7d5bec7ff289c9d4868bf4b62e05fa9f61e8713338f8bb2d6bdacc275f7219dab65efe7f3462039cd7d1f39e876221ad7a283c55764df5e18a750fb86cef4f85c20fbb125bbb72e66e3ba750e0eb10fa7a5cfe01833e4745d9df093924cb09d2f18cf504f719e4d00f930fdf378d9e4db9d1613bbcb47cc47952d0f72e434bfade20eb19c601c0e8db1d3b64fb3c1a76c380e90ceb532db793ab89dd8d793174b66f8bdd2a6d05ea813d0708e5b0bafafdeff646dd6992fb75e03383eb435d76c830985d75c85b95fe1e4e03ddbe83cc756abe7acab75f08760fd7ed731035eaf313dd11e897489ee39d4b14faa9ceb5a9fabdb85f719c83326183b81cf4f5937ac3ec7d1ca9a77dae7abf7b922e839955f4ce2a26f31ce6967b22f9d594e3bbc422dd58f50c2589a75bdb9f4affc1379dc3a5fde775a53cf6923399802efe17223ccafde5dfd50a353123dbbfa1c402d256350a0c31bc6bcd29f96cc98f5c22090d4dbf33588f44966847d1d9c9db8482f8a71de9bd4f92eca5eac19c889d90056027946049c69a7ad5aff9dcadc735b00ee8b21d70cefe9f05ef6d6b481058e1113f2b9373ef05c038661705d9923d7e746a933c33c196e312a200e632d62c08ee38dccb1906ed2dcb7b3ba6b57d1a6b8a6e909ff896305c0a3d1cfcfaee318e89ce4a7e0a793f91b703dafb48f6c3ba16e32bf06ee080ffeeee7b4e7b18c7586649ec0e7f7af491acba69d7d6969219b012ba979b232f56c3ba18b0775ec989f65b0b97a33f0d7070e43b0e59e5c97b8e8cde7001be4e09839e79bf310387fb4cf0735f0f1bbcf611e79a4d76d7823b1816b18f20e1f5c07bceef38bb80a83b1e4a6f90ef802eefac2fa423ef619b42fb203993c5fe64137054ce8ad695cfcd93ef39b5c16076c91c38b18d704620d03b4afba038fe422ad3367323ef950437d0b14357a53f09e79b18f06e5f32cb21b498c9462fb6dda09b7ca5f15fad6867299e11f89b7d956bb6c19f2db9b76cabc823e573575e39d80e6687e68f0a1f2781e3ac01d0fb802613e5a262003055a6312373fbb03a3ac741a19d93848e7608627e051b416b16f7d84b2b04f65c1067f89afd14dbf5bd8542e53c72b49fe6b9ead2c3f7593cdd52f46ed5c7ec25fe957f7fdee7913fa2cf30aba0eb54455deac4bc6baf2f9edd47cb8eaecff6bc88f7034e045bc9b332f1c5d9dc4aefb0bb96caa98594574f71d1e8b752a0b4ffa55c56305bce7ad2c3db38b5e7f277486e6adca3799874e40e2ca838efc422e28e4813fdde7bc227e87ba7deb5ec625f5f13a731e5edf436e69759e13de31b68e3fa1b3f37e3dd4b16d19ebabd5fa383d591fa97c44fb866143fd0bfedb59150160687bfcece818fbcc3dd0f57792763ab5e51fd7cd546b364a891dd05ec7dfcd38b4f1a5e65747882e1eb3285c26cf34de487ceefc50ee9abf3775ad890c752a6ce64ea11e1db7b169c7afde69a03367f0506e9abf6b8ed175f7776aeea233c1b2a893a346d956a3af381f78caa275edc5d9cd526988e561ec8d2cc79f67fe4e3b5fd099ee3341ec98f9d43173cad6d8583efa27c734b20d6f643e3fbd2aa57d5b263ad21f29db8c33b9a046b2a09cc8590478f99b6edc3d96ac2cf00a3b71b47158d53dc1596e4617fb38bffa8345ec1d584a4e669133c532d7e4998acdba82b6dd4259f080331be973b6b9893638c753a9eb09c27db899b20bcd64698f31347b30bfba7cfb774a320f6731920bf1e8c776724e7d0ed64c2a27f3c21df8a563894887ac7cb1241fbb95235bed89161e1f31cc07e87c018e993ad7f5415fa2cd4ad3717f743277f56f71bd42bc5373ed156e8c84794052f46c93a3e3965ca712d2db9acf67476dd685a466a7ceb960eacd73d4e86fe7b96afbb911da7756f7b92b71224da62cc683c6b8704e2bcf0bad7df067b430f031be5c80b1c1b4f311f7ad7d76b5db54738c235ba620e71ee50e8cc396379ab85f6367b17a11b4dab270951995b57f43b8480b62bfdc56039195b5e99b7b18dd903c78076493e625f619805ed47f5e6becf311d4f2b5fbd4f4c5d9a1f99cd097ea4cfc5221decfca53a56b1f70688d9c23e00b8373d541fb3969333973a7d599dbfeceb820bb183dbb3e83485b6d6676b119904b0ae34655dc65108b8891eea2ddefd5689cf317e35ceb363d7df252cdb52c44d057077c548ddeb49db43f47995d82cc602c005cc3587ac9a2d94b793d99e3dc79340709daafb60295cafc66bce302ccff56e920a4cfd599ac9133d90df76135376eb20ee5a992f67fd31aa789a4c62c9af7aebc7cfa9296bd903d3b91daf30b31299c63d97e862c74e424b7d428dd691dbca956ddc7837dc6dc5c7d6618ca3c8e6f3edbf7c83b88ce24665a18655f0c7bd1b11ef4a2b643af6d5ca851c0f6d38bfb87ddfbb11df5e2fe69ff7e7c56bec0ffd9e0f1ac7e53db57fdf8d6aff6e9def85531b5df8ee13fd7fff60fd6ebcf6b795dbc5ccb1349cd672497e9813db9ce31c704fc5d4a6a7e257f3fb43325ab130368fb13c0cff528274be287e98f3e36f08f51b50f68c9c0e78e8de785ed5cdc8a7b7dcaae2cf18f246ce07e2fcc63749e9accc8477dede6b3ddf9418aaa5d2653f9f4081eb04175f36abab964944b57f952246f441053e28f23b146eab664a2b11736399252714e25b3b2a5b10fbdcac96dd75f823f4f58a7754cbe88d907b975bfb3f7352a5726eb7c3151ca05f613871ef121f5fd89f3d0a124139dcf6b7c3e77f6ab350b6bc6facc6c73114bdcf864d2c383a54657a7b885f3c93452543195d4db88ec7b55bf5347a36fb6352f013b0db0932ade9a7d2ea9b77c114698e701cfc540ecfddee783c21d78c735c6badda33ea33971cc35d48e6c796308b5c0091df8554e9d00792d3160cf141fa158881771aa5f9c62b817cb8f9b93d837851bee370c4b55bc30cbf0e3280dd6efbf68ef783509c6ca41a7493d50e81e8db35dd701b5c714db11ed5892f34b9f9c57e42570f45a9fa9cbebac1bee8b852636710d4bb9d880d71f678eb1895d343710eb1b9e94834ed5ebfaa0d3b0aed5f9c91736b76538befa037f201fbd524ed8c229c68532f9b8c98305e31462666b54b815369437395de5813ff08bd1402946572ff1ae8a168d962a3b049f682176eabbbd5e7ce2596e34b2e9fcc96b5994cc21fbd8f6e9e3f96e967a115c658881b5f2db81fb8abeb9bc51fa8997b670203bbc301e139f3d3e8fbd8173c4fcb0c38b6d6d28ef409ff0df9f37c71c452bd3ce5c120f59996bf437608cadac0ff4f7d53d20db7b08fbf3ca54b20a43446758da4b1631b2d77b715cba9f6fb8136e48560ad82fa1be02e2e43897e4d8898964adfdab55fffd441f004e23ecbf93f951d70f5e34b92ccdb8442fce3ae086c2ef56f34bb74ec8ee60b879bddc7737bcc7e046fdec3e637f57fff4aa3e48aaf035343a5e31c33b5c602d56aafa1b8cff900cebbe3dbb0ff31da5178c49dbc285d5475a5547e4f7e2480ed7c3217c98f3383e41eebdb5f9f40524f773dae70d24bf81cccdf19a2ad393971809d1c15fb4639a89c700c7db93a0704c3becd582ddfafecc3617cfaa082e32e6fec6f8f4e6086a82dd307aab649b60f85e7c8166eb187375eedec5fb86ed7c13fa618cace29d15f46eccb1961985f58d7366811fd9706d9a7a17f11a80b3d82ed94bb5261cdcce008da3c42b991376e28d8fcecbd7b9e8b04feed365f74cbdd6b95deadc53b8ee7ee7e2b8758561907ad426c59c0d46b4526705e84238b61b6d318745ec70628a7d4dcdbd15e788c5c4a5d6c9cfa302d1122f5b7e06b6a598d0b42b6c5267300f3c7e1f4a2af8b63bf986ed67112e17da4d00f7a7dd9e03e6ed01fd31c55c8f70ce60be8dfa19189fb2e601e66abc863a8f1362393abe6f930c592f041c75a407a3b3b392b9b479669593b9015c4e0d63e1f2ee812e301f3dd47151b59c710d0e04e48758185fa4bab6054e83aa2f484fa96beb31aee704f2ccab761f60df11e631c4b51e5d8fb3d09a7c8416e4a737efde9ac3ce7b3d611e3b42b72db8aefeccd67d1d2c687bd0bd07f24fd1da383eba8ec7d12be9f75d772d07757dd8ec1c5b1a0b38655291bde1cf54fe282e2959d959b636ae63d0e31dbf895ddea01cf593ba8f63ea751cb3cdf32a86e2b7a3e6c14a15438921f16888f98fff6357f7090aeb96e7ebca9c66b64697ad9c90ab54ccbdafc9472e86e7a0f93b3b79e128f5e8363e56904ada18c67d9944bddad35b37c64a721348dbaef76d8bfed3e6ccde6ae774658e33b7a4839d453806ac33b34ca2cc2fd36bdb9ef642243f0aae5542e7b09a97ddb6dcd7e69238edc50ff3583e7a99a38ea0ce4cb2e86bcf66c0f2abe37ccb95f691f5b0492e1663440e634c902cfb1083ebd779c6e5868f0ba2fbfe84eb81d6c6b4de7704eaee7d5b6bb1e8e42aff8457d1df9f1e3fb3598f93a7b862ad3db3d97776c0b9d1193374560a241ffb79ccac5a7fb097dc3a3e83def38ef7cf7ad82e8c5ffba07f48bfa8631b904f4bb0425fb40fe49deaeac248d7f327fd3d6f9db630719eeeb12ffa07b96d2447f747f968cbe3b367bdc0862baa5a93defe9c3e9a4782ab5af665acca738467949d314bb6660e9818e4f9b83dc53e95bbb998f1fd581b674fd88c24618d64b6ca01054ce8fbf9c4b91dafb06c969d3e3ba90bf814a41e2e011928252eca3a353cdddc8d02d6ae49df7cf075e2b3e275bb489e84f53237a3536fb8d51eb517d717f9dced1e2f216ce550696c8ab1fc30b632bc474b7bd7009bacae637edae67bccf7de58603d84c83999d79c92b4f1e9b1de3ccca1b6a223670ba88faa31478ae8ad3efb193c27e660e33fb11b507fe3e5f14e27811cf25a27091b5f627faf6ab7c7e36705f8f6e17d8dce0058e2fc067d076d6d9ff7edefc4f87613631aee11b5b6ae145fe0991d9de2b370cc4d79779d61697f0679a56dbda6f4cd45732f977d3f5afb157eceb33de0151e51670ee933653d9065c8897e2017bd757bb2eff712b0b3eecec13a560672799f0752e1efe33d05eac19eca5c9b5bb6f71c476d7cc44857959a337a6527298cab6451ef75dece03f97ba28f27f3b06e4bf50ea881d2892c7914e6d9813820c642af736c1fc99d2c88175c3355ed4bf8f74807c6792c77f9ebb18cf9dfb19e8c6b88d347efe9c971da7ad7dd19b0adeee187a9dcd239ab35e4c6901f7cdf17d0a7614d675e388a01b742102f8029d2ccdbd5b736af9e5f7d9fddcd09e8e2f8f9b24a77e4009f979b0738007db96b8dd723cc5b9c83fd70bf789697beaeea828545ec739f159e16f8356df5f3e232c3b3ddc8cdbeb6fdb44aaee3d268d50ca373473275a4f7628ed22ef7742c9554281eb2e0810e7e91b47385d77ba9640b7c51669c48fcf0657ebdce18944f7cad12a37f8be167e0154d7f5cc626388de2de47e3cdaff715e79cc84ff7f6203eb8bc8efa4572269b73c769738592f9accf1ab5b347ff762dd5b883b87d1b72963cb207cfb105f9fa54a03cd7bb76b5bfec38bfba0691116181fd5ce08bbbc7f5bddf379a356b0e7a762cdadb0d1a6a01eee5f2b14c563199c7f2d8c3dfeb8e05c1df9bb22bb38dcd62b00ffadeb6a91fbdff5e4609e7b23fa1d367e7eb83f6b5e78422f9e8710b63aade8b9c2a0780f47fa551ec56bdc34caef549ecd722f9c4d559057255fd66e402dfccfdb8a3b338068c1e862d9ec760e816cea511c139f943fb1fec3db4cd2c626fb0b87ac7fb7ae2ce9987f6d38171f857ef4946806f6b27bfe84fbfff45558bd07bdfd1b8109d38ab712ccdc5c1b116a53b9897155fcb035b5271ccd90b3c445c875bcf5ddbdee5f6e98aac213416dd36a695eedef4b5c0fc34955ff2819c137b64bebcb78b3a63837961082e29f8c284398db1568277a7b1dfdf1edae95cdef1e7353a6acff6e6f2c68737499fd8d3d17bc786ae7503fc6c89ab319b1a9cf6faecedea323dfd81e080ad4f5e1825f3446fefc7053a9b31bf614f2789d9187c7eccfcaf57dcdb238e0a35c630be80f14d9edd5e93f2d14be7a183cfe229f05162fea2a4fabb834595023643a7d661dcac178c85539d51dd3ad4b69fdb9a8f777ca71d05b255b6551d9720a6cba38863911a9b426d73323e79e1fdb975a7071eeb318a9fda92903785c7b83ad3a01e8a7054404dd9131bb2f15580defa7fdc57b169f9317ff055802cfcd65781fda34f7d15f0ac97be0a823bd4d2255bb2f870bf055dcfbfe3acebd8df041327ea60c875ecef23d26b8d03c86e4f07ef61e9a56d7bb78a65c178aa706fe6a810f340eb19db23906f1665de914adb58a10f7c6870ff13df0bae8de7a3cc2da94051f3b2633343ce5d16ba240fa217a72ddb79e75e6127e2d10e011fb21c239929e5a39d391afadfcbdc035d56985d2f627ac8364a7b6dc82df0f54e6fb8ce72cd7a451e3fb8e7d2bb565a6afe181bf0203e7a4fd17a4fe64fa810e9ac32af57fee607faf610d6877b807b2f550d945dd2b4d45af32dbf6d56d56b903a4c12dfa9ee6dad5341c9eca2ad7f8ddb7663dc8a9f9426b3f091ae46ec4de20f17d19968b4f0f64f2eda53c3b68dd2892955b916187f616a145ec2161207dca080b3816412e9ebe02337d7159ec660cb1b1791ef9f511facc8a375b7009edfeaecafb00770eedf9d3e1fb7f695077d1cffd96ae94ffb4e5d13d3602adf4e4fce5b121b6ceffd6bd609478c0cbc75a381dc6073245e62c45f897e72c2e8414c67e1da34c53a611e487d7f0d60af415ef5e94e4753f3769f5362731c2c8d4eeefc3b77d75b31032efb969fd9aef87c7ccd1ba94d9f636932cab3f1eb60f428332a5d1ef57f30d68fe47ee17af1037d1b72cb7eec47fa7fa71fafd7f1f6a14e5fe77cffbf3437b51fb97346d2e7c2d2dab92638276cabe275b255478307fe98eefa1dccfda7f754ef803cea276b47509ead9d3b7fd2d61cb98e41bb5efcc017d4ac25f4be4e3b883e72965ff8b9b7e66876af6f3ce43daa7db8b816b225a39678c138944629c13ed5e401ad06e2c549e20cb0aaf907ba60a726d446721183ce9bc48fecf3ab4fceffdfb5b7f22363dccd16764a5b87ba74f2d934b61d1779e46b6ce72c0f90cde6009f570ab51ffdf1c5be69583fbfc1484ddd08df5be1ff00ae4a0bb3c5c5390907db5a57f2d38c09c9597b51275be3274893f54052838b34514a49bd859a39bbc1b9d6ce31b5e6bf788e385872b0ced0dfc3850a5841f8ef22ca6c721ddde391eb4b64cbf5ea835b399e6705741f825768adff2893946a639c01ae436593f246e085fb745964df8e965f96459b8ff71c5b6d1f1c171438177dee2a18fb8ceefb7f306e0ab283f4de7e4dd6ba46a7f7dff9b13fa1aff7d783c02be9e0ee3af0bed2a52c74f273e87f9a178bfdb46d9f288c5df17cecb26f89198ebdd04e446d0a796624d73873c39c92b4acbd76a9dde39ce9975870f519928c68d7042cf8bbbcdc5548e5e8ff399c031fc9fcb81eafb4e8a64cbc7ca945c5425b0f16938fd112b0fb1ee73eddef23ed3c707d84f34575a87322b628e05a82bdcd8f59b4e78b49a50bddb7711eda81cf61bf1ae0be407e521eaccc31d44a377302755c60fba239c618d7f97d6c58988f481ba9ea195e62e4be1917e8d9503f6dcd68748649dc9cf6f93813c3e8027269296d1d63bce3a7c93c995ea07e1dfcd47662aba3704bf88d9bdf37988868afd959d449d27a79b9032aedf28ae41769b2477b03e18cfc69fd47b7263737c2b9b94dbedc7decac8361d9db6f1ed55771b302fbd45af8fbed9a2ae3ec77f07c43c0e6ab7033c18752e32162dc95641ece7bbe2c31589943ecfbc1f83d975fe638b7c661ca2cc26a1f9c3268ef73cb2758afc7a69e40b51633f7689c1d6b0e5c65323f6de15ffab13fedd61fe883f86c276c86656cfae707ae36d8034c9a023bb37a2eb655c4930d737cbbc3486fd968355eae0cb5b7512a59d4dbf65e86fee13e7187b5c9cada34f30e74dce4e9e72960fcb5732b0f79b12c62ca64a26fa8a700bc8dd6792cfc6a9e064aff9c7b8d7b4d55be22ef586148af2ff631a61cbd6aeb1d4e5f0139a2f8cc011faa8739c3b3c7b214ffd09e5af69fe6faec7e27a3a5529fd56baabf17bce41de1ecc423fb2fd2ff9fedcb8d2f725f2ada3a051caa1f758a9ffa4fe643a572991fb26b6b5ed85684f3e2ad3496ba7564afb8022e26d2138c0a8b36bf3c3ae37a9c6e27e5f0817123c33da300162275b5b8d1d89a65a75599ba567cf62c83fabbe302570c7d5f52f77f96e1fe8f68dc72c9387f59b3dcdfcd724f0ea3bf2b1a5dcb7db9c88395ca7e5982f777ce8d5ff51fc607e9815886ee31a5dc4353ebee4f5abcfcdcfce29b74e8586228021e9f1d7a64ff10c329eb223d20995f5d268f6d7348eea97c60349c815b7c0e8c775c10c8c74decc19e8a3ecfae9dcf55ee3a3a7349ccb7de6f7ead934e8b660f55a8655f76eef00af28bcc8f331bd959559e13d61fb307983d57f06d9510a72bd1df981b2d7a978a33bde26fef35e67b49c7e6c0f097cc10f098dc2238481a7b591da67f7c2e38c8fc10bde38ab147a2372f0c4a9957d2653243e3549a2d1c2a4ba30f6d2c506ff09b71b06f3fad4d9051a653a3056deaef995b2dbf2e5b39a4feec9c02b781a99feccabea8b90dec6e4ebca5ff01fdc6827af14212501f8727afc869498dd28a07c12bd078cf5a39eb39bb536f8fd75531a73d46dfe35a9905251e7eec67c5e15dcd7385ad56f130dc71ca3a6a4c93bdbb8ee96b667c017c3ccc4b7270ac4f1243610ff6c028bcc48896c527b40df814f9d1d50de9f3d61ca54e12c70ef7193996bd77cc11b3b5e65737c1fc3a4ec216c8167754b437e799c8633fa3c8d3b13758040ea3ef6d731489fc2c72f818de699bb7fd9637320fc901f739b0ad39b2c38f5e310ca52ad7a1e2e533ce175910b36d256f34c6c75d1641af8f01f8603c3e0f6c463fc98551ca8cd7b5b73bfa41eeda45f66d419e4c94125f364bf85b8aad39bbf8dca7b935d90c738d0fc35d952f21e817e738076c748367d7eee08355d49c7e7e0665a16f2d6251803a43a46f776badba76f5c93bb4f426c6a0f496eea431f69f8e7e346bd96f3a9bdc63b376f8e676440fdb59837cfcea39102b5223c81374c35124f17a2626d3b0eb0fe8c6653077cc2f6b3598e1c5e18258e6e681187675b04e1d548b2b9cec91777867edfb1b1d4fbc00c6c200301dd3a666f69feb6a0fd620de6bd53c93a15e253fc9fc3af3b8fc280b76f6a5e6677936ceec03fdfe3539dd64217a53049c87f1a551275fa30bd9d45329997e4b80cd435f24352da52238adcce15f47a529e928a632d4f75027ff40d352127ddb457a95987d3a0fed9ba851ec17b2c90e4316ef55d17f56dafa0e2710723f4aeae4227bdb1ca75232fc96789bddaa7420a969211541b432a77fdd824ea5a352bfd39bd099745c7f3b611a4bccba7e27b2b5bc0979a7e9fd67a57d3c7c27c1f83baf2cfdaf13d29994286d1b06ced896ad7d5e4d3efec82675550ee9592ec54ce1f2ddca54fe3a1c9d48c93eb3c3d170a5063b749f5550b7653cfe56b8e8ea029ed3edef964363b446f78d9edc17fe4ad7d1d6f9ebb387707873a38163ce8fee34463613456aebca561f2919b045fc4c354737df22b57c825263e3bac0d7826bd05ccc531a009eb540f85035b896618c6b7ccd39d0aea565c1e39c913de0bc285c3e5a1e3e59995f57f841e79536cdac92fac6b12058138fb0ab46127fcb4c669de1bcbcfde56bd2c1cdc9b6dc0873ba56181816957d4dee39a29ed5cbdb0f6ae92bbca43b6c232e7ec7183ac80e9c431e043a27d6e4dd3ad8d8fb74a735183dcf7011bcc4005d590cf381a4e60389c39c2daf311748bdfebd1e0d67f0568ddf5d35fb9e6b1ebbd228c00ff18b7d2af314abd4dcab7ae61d28a4ab9ee4e3be8bd385b18e139fcb4ff231ea627699c38bcfb337990be295f571da72513a0f9d08d6a0363e399c9d7ca94120cfce9185ecaa091dcb82c87ac77cfca50657723d5d2635ef495cff1efcfdf5bded67604c7a352fe6a173843300e791fe88cde3f0ecc00dc507fe6dec2397f931c68982f1b993ab33ce5f7728f8ae83d514a1ef2877f091497cc49a03180b904fb3fcf45745705d5911d2c9d2a7786580f9f004af8cd79fd426b3358f18c110cb7e791feb8779b432631ca349ea3578adc714f2699e6378b818b788f6b8a7e359207b4c6240ff99dad6265e32ff6a4cebfa308f0b4e920afe3d242bd1b2088a9571beee843c92858d2f19d9cd02b9f925a699a9675f6a90cac678bc987cdce6a113ac18fbcd2ea0d678b732012f859605a8593c92bc31f4ef44b868709e131f1f3c7a7e7507eb53cda58ef63906cfe3c61cdd71c30227c70bacd579e85ce523d275f73dbcfa809579fc5c8d37023fd1ffe973839f9ebb41ebe4d0c73cc95ee1d526f3a352f9e53a35d850b38565c5e86377fefc4cfda7672edc81d3c7e047f6cb539c39c0f2acf1c33b58cca71d60b2c7873ef7c28fed4c9ef7dde1e7d91a38bbeef1e77f98a7e4a7795a33b31b6a7b9ff317edfdc0a92ccc638895c03819a5a32f024f406dd3fb7c0ae48ccfd91edecf43fd6165eeb3eda4832d10f57159a0c6f7b848bf12bdd15d001b8f2db7d85681b82fb9a713d7fee2e87485b195c65e381a4a0cf6dd7fa9e83ae081a2eb238969e5bbf5b0ab3d2ee8f9c6463507c5dada4cc819b67607800b17f56ad98fff6bfcd04e2cad17a3740a82b3d96dc3a8177fece169af3bbce415beb13f3b5fac8647b4aa87069e94f658fd52cf2ca42e57595ab5a98d33f8f88c20fe68b39f0b09b64c7b5f7e8e8b84dff51c53a7d273db1c3935be4f73feb57383ebf57e3c5fdd439aca3c9b3887f40a7197dfe00f71f1fbceeac4fbde5d66f8e68639d217d1ffc0edbe4c1e6202bc8815ee2b8c4cba953fd5db6bc8b936c8c7628347fa8027671fbac98cd99a7ee0f36c2186cddc7f313576e09b188a59c3df770a156e5e6135512dbcd38b6d392992717780ed552f9a1d3196e4e6aaf1ecc0b1e6931a5358a3ae9250e115c6ae38bb5d2d35702dc1bb586a96cac528fee28d03c9f3bc4a3cb439c0fed8e1dfba3d61f4c72c3e3d99a64e269d0fe498fa965488e9c536e020e463b908ce1e13c792faf1f41e9f1ba17ec45f53168d2de430dbd626b5933c16c368ac7076829ee30ed2d4e5f3ba1dabe2b3f00fa7d673a33fddb6e7aed5c6a9ae3122d318b02a855b288639e35873e0d65d2686abc4f478c78937f148b312f7286ef74b1fbbf691b907ea86f3f9d68001d3c9d53537d72f46ff063f23f90ee384e617a9443a169b38906fbab97a023d803a0735a8f32a09f6d2d5499cd2b1366b92af9c3667db886078fed758df3806c347b5fe097583040bb4b2115b67f4454e5a3a4ad8e7e4c698f22b6b9dd9ea68b86a6347727980ec97168ea303f839588f98d8d6275a1fb1c437bcc22b93ad70b1dbe7139c456d6c70c0f1abb1c1f5cc56319702e4f757bacf23fef0b0c1e3d61eb4a31e97499deb7fad70bedbf93b102f4f003fefea615cdc0aebee04e70ac45146d8ded0c1dee8f3ffd5f18b6d2bdfc5a5cfa99cc491d5c1d4b113c01fc2d87be82c466331f592d911f51db099db5899e6f4f285e631696366d2817c8c5909f859f76c175b738aec8036ae278c25b647ce103f073c750abd13edb3f7fd7069247fa8dd742cf3461b8ba21ebf07b874b7a738e7c55dfdf74f6742cfff88f754f01103c6f098358bf9d92bc40cd97a5fa198b5305e3331198768cc576af72c101f9d05255bf915dec463bbbe0eb8296bbdd781fae3335acffa169ddb03835a26c3cc6690fccd5bd7462c89c5502bede3dd9f00b7488dcb265a22c989304a7f3abb6c4d3a807e464e017cc745f6ddf87aa6488628d417f07b5b46ec0d369f6e129fb1bf7ac47b04fbc264a6df62fce21e750e35a715cee0da1ca5ae89f5ae0df8b975d68b01f76342f4af87cfd809397e57b4c07ce0b3d7efdcfdd05f885185382fc4b116d4a3763dab9d92f8c6369654d04f611ed039ea1ee8856d6d4e7242075fdcfe264fa68cac06b16c4629e46fa076310665f0f1d93159daefed2f680f9678fddb0d619d757225b61a1d4bcc30730754bafcffd8fbb22e45996ced1f742e0a503393cb1415101c99b913480501e52d1cc05fffadd81140804366bddd5f779fb3faa256659a08410c7bdecfd37b35a7e6c7167a6ec95c3d78ff7b1d85eed7de53249e40f9308ff51a2de7d11c7cf5305ee7462b4a34b748be2e52bed35f03ef9a2cbf592745ec67aab43a229b60a3ed3a76298ecfbf7a4faca70c7e26b56cf40b70c8d8c5073ae748a628805950d5b2408d63ee453b76fe38eff01da6629547633612b22f4e27d79edf1c2b4816515323ef428dfc3a43f634e1d787fed716b72f707baec30dd8e6b59d97d07152934be240dcb531c1c721f4ac3539ebc13bc4032167b0bef8f07f90b9d2fab8488d7c239a99cb8520479efb18dfd5cbe1bee667bdbf6bdc3b00f9c9c09a83be048ee374700904e0e86cc9cd9a27066a1bc7cc428b017bdcb9c3006f72f5389e4b389544838e139c97b7f16f0acbe232bb1d8bad7e4aa691f3026fb4aa3365431ff8ff42e027a13eabec8e1b559b55717392fc2f7016bc6fb5224736a073632f50bf22ad81b35b3dccaf8011ca22dd3cb8217fd143fb5d3fc1f574dd05ee7db8b7497c2104dda96845aedc98a28a0376b8f48e4104b169c02fa6f98fdc8ad34c7480db633362df913fd78efd105f0773a8e5343fd1a2a9bf3bc3f7845db6e076674f9cdc8231d82e3cc4a25337f353e3281fe68c6b7fd66b8ceccfa5bdba78a32bafee3f0b6add52a43f91fda2880eef4545b2b4faf94618a4a49eef168813e4af47509fab15e72dc55b6934718be7f8c113e0808718c7562b6e3ff96ea50b6cdccb5af5815d7c0ee7a16bae3cd1c8494d4db74e15b8bdaafac0169ec9680cba424d215f9c6fac751888a6b04af93ef63fea3dbef27af30cd6e62eee57db9e6c53576e50fea45b7a1c836c3ee021520fc38b5f168c77cb12e41fc2ef504f819e85fb402127d2dd0fcd3a5d482e45f07abb639bc7117808eee6b0cb45ed9771b35f3b7a11fb5821aef127f5725badb86eacc1433e4f743d5a1b7c260699cf0e332f1d24ee880965cbe45531c13d9a66f5f973ace887f781186172437ba61dc7db61ae288cbfbcdf8893b3cb99b11c15e86c36fb3f5d677e0fed17f4b76a4d1fcf53e3c3cc495f7f9004132233da31cf562ce81e87b19ff97ba6e9d18bc674ec32597206da0f993b6ad54940ad60cd5759864d4f9a3069f2aefb53b9b46264a353bdac26eecf91e699679bb963af2ffe3ebba862d5b3bcca29f900796cca5f835ccc5dbcf2be2efbbae0fa1faed6c24fa66b7e80e76c51625e4524dbfd6850ad0bd42d2f4b642b0186443a3d7c22bb106a93893c255c7e793a3d38c78aeb4ed1e237b9eacbd120568dec109a8f12e98ae6bea95fdfb77dcf98ba67c27ba34a87e11e5fd26772bcc3ec6cf564cc3d97f0c4ca56bf15b775e97eb98aff2f2276493984fac9b53d2dbd9e7c94d3e4bcb1d782c7ad078a10ef026e7203fd2c16895be3259be70d3700ee6dd081da30730599eaa396e958311913cdedf5243602b5c6d87ea839119bf85fb268e393543636c6beaeb8166b7fe75a563c0cfebe38137ebd1a13b0e66fc37d4417b46f2bbe5a82299db923fe6671cde7b69ec1efc0613861de3dcc0b76f5904dd0d436b7b8a95d9b39fa51fcbe01ae5c38dfc85f59b87600734ce997a3a325bc827cf712f2c6f0f795bd3a6ea07e2889979691fbec29b175f6ac8a9883e5b99cc0b8416a9adc0c3139233b9260898681384ea7c03133611c5a9e21fb17f265ced18bdaf27226247cdbeef6db581268be84a2de87a0ab25f8b98a0fd57d57f00ed07b54f5b481cc3b7a5107cf51c218c19e86de83704922ffaac5c759d9c273afe1ed5c07aad8e77df644ae03cca36a5e759ff0dd619eef2616afe8a77dd5271d98751ca2cdb92ac5c7565f91794a489ca5d503e5efe9336c1c2b1d8b394561ffd5f689221a784f09f1bb1f39a9a7010e0a923bd934724f8a1803f71dd50fc75a9c01b110e813247832466f88f9fec47ed6c1043db5ce19c64323b82d839363cf6f4b6b0cd8d13ac12647fb464f270b3436cf9adcfc327ed6efbbc01cb96007ef7c2ebc045611cbe214b07a6aacf3a88d816c972dfb04f0af161d7c6b1fe3ef54e3cd548c2943c72701933bb00a88959358d0a05dcf2533f3b2dd0f857cc8afe775a22f6b73aafdee45bb72767380cbd38b76c54c37aa1a66762e543d5a2b0e72de5ac810aed7779fac915ee57ff6b3ab2a113dcecc2faee5a68b7d98a8fa2a777bd3304813e64b3f9e665abf54a5f5d1b5d7e122eaf75511b8bc461e67a6eefe789e8de43c1093936b824dfd36dbe31866859b64d866e84ed6a56b991f5bb17f9ced673d452b6ee043926b56298f7cafdb562a60de661af82c148e3a3c53f47ad33df19bcbf94806ace6c6df31c9f9ea5e37cb084f5ce61dd609bc9bc897d5b3e698d3857a1692090919eb8a457613ae535a419d923f6243cc3de5f37e191e71cfa7c37b78cf0c96b681b1d03116d376699f228f5b67ae3d7bdb0845115893d894a689ab67cdfcf7666fae00b63f03f5a2b78c51253c9fedf84cbb3eaaaed713905fb2a3727bd8dec658d79fe70df2ebec29b34af97803bd9cc83f324eaa9e67d01f3b4172313e6fecf96a630dceae055c3448f65dfc748eeb4f399351304f2de19336414fac53be7430a649fea5557fc318270bcee0dd862301e72247a744d59877c576ce01e1fd56c43592d7d956db3572d59a1d374281e468e659a61e88e6b5d5bb5336cf027c76ada875d75d6eff9bd8009a972f6d98f9e5b0eed5c2764593e7a7f2ea792031b963ad63f89e3161fee6f3aeb5ff143d7a76350f4e2797bfabf47d42debbca853e7ff756efcbaecb870b7699221a1f3381c671d8dd7140633bbed967d3c83dd07b03c7dc0b5ad7bd75f994aa9ae73a4e25151fc86efc0ed301cd37a9c3dc55b24c96d617cca90135c88d9d1fc9d9a2a47b24e81838606a944b8d296a1c0c8287041826b826f6b2dc33d725f7f1a6eae37cd38a43aeaaf90f918c25febee1f5d6a107be04ce1f77b97ceaef8f86b8c602d91fe6433faac644a3f4544c711b77f683f13faa3efea5a07175d64bd63fb3c581f86052e54f3fb5035f701cf960cbaf52f3168c0749c036b1061ca785398018c1d3f7161934ef07f5605e91fde76ab89e50d6c748969e9d94ef6fb522f30e6ee88909c885553cbd7cddc58018ccad0a7e9c9b051d9fb5d5e746f3ef58c62f455a9d1bddc626aaf479f67ab85fc02fc3f7e66f59b2a5305b91cde4a7136e63af0718b7d4649c76fd4cbb6e84d41654358d813020dfb97f66208649208edf5c9ba9704632ccbd863e9ff06decef90018e52f1e36897716e3fb4255ee683318e0e60fae05efaafd11838626bdcfc435c2c91ae1e7d56d821fdd99e3d6fa5ebb5c2f3f8d2718de5ec615fde77f9687c0f879b9c8374727bc2915ae9f49a374d11a67bc71a708e3d8b6a1c9274ce7c11fc6388651ddcd02fc1bec57c1176c828825c2279aab6f1d7982f1d7084badfed6dac35b3b9bfe7d1b592c3465af13fec4564a14ef6077979e42fe8d684d908839b6f4f19455a7f6c47e3eb6cbfca96a3eb15db76c565a90376fdfb16d94efa67ab861aeb7b64e35c61cf29e22c754aa650b4cad79e1a1bab48fc72787591bd209a7da801d386b78d48702e5363e7435d868cf30052705123b9e2bca8e3b35f0427089d3b198d09e76dc89c766351382e4bfce7b4c2860fa418e2bcc188b92e7aab8fa01d3f6114db4476777bad6c26affc8dfb5e904ab74d6aff42a6793ff431f6396aee6ab82e57c48fd3521f67b8b7a8aa5da07a0df4cfdadfc2d867a406a2257ffd23f8de680f6845687185e7b16c505f3b62a9ef1539f29faafa0a5b67738be30355aa73eeb90bf939b23ef6ac5b73d7c8181b5fbbe2f88b9fae332f9d30ddebdb327c42e277c5c5b1ba7c7915af7e183ee446935699621947c73c31b656f360e1fd7e235882550d719c9c1c2b4880e3f776ba2837a650a519b2f52f7e6fbef4d3e4b0b1fabc9c4ece1e371840ad4329e73ef004c3d8ba386b57a811bacb097d54eb7e5b5ad82e73a0ae0acfede2b0e617bdd9b9deeb06c12dd8f7796abfa5d32ee71ec17a073b44928f5e94658a7e621bfb2fe1152a5f1198a71be1a861fdd45c609b631a2c38078db7afa6ebd2b183a9674d0eae162630171c9f2b698cde19d93c7f6db402f970992a1604e37570f3d359ee9810db2f1d96e19db2e89c9fcf1cfa176de6e894c50dc7a58b1b5c7f63195cabd0e431daf9cf5d134b9064ded54c86aa7103b919d8d3a4f2c917a971094657a423d078dffc883f63d934bf78a3ac9c5a834e8c6685d6ed6ebcfe8db9aac8873d98b92775628a80add8aac3c6981d09d8ff97c05e41dcc92f737e867c73dc5f92a9d2ec7f66fae72f57d8658b94aa79c7b54acd77852b331b7d66f7b1a4566d116bf556f77b26616a7d85fc6e88bd3c5873d0474271c13544788d41e71f900cce206fee4ad33060f019c19c5783bdc75dd11e60aaeb5431aefb02d1de50b4e2e9b85a325228203ef3ed7512fb933eefdee2950e7b84cd5716a12acdf2ba7f6ccf944ab42b95d8cd3d6ec2cc6e53cc5ba80d04cb5c4f0c965fadcde9766d1413dd3017a6703237d6e007d7c5f966c47a3260bbce335cfb373cb9d63a0b2cf62a8bf8798b52ce65a4bf0f09f24576416aeee7c270ef71c5c5dfe7912a4c71adabc8861bab4f6a42e3dd17fa5ef4b993c520b71997c43b8a8b1f7df2901317f912df9b896c6df097c725674598fa5e2467102728a761c39d65c07367d130b47b2e92a7c9d76478f16ff0fcbbebe6c230b439fa19e67963211f87a9eec3dabd39b28f122fc175d072748d02e867e54b4f1b9e1c7bc5c892b90da469e81de6a9d79b9efe297341d9fdf288d90526cff8e9e4ec73787c4a34e45c6bc628e2641ba46689f621f22fd49eb9f5b979e95ae6d9e0923757bbee6642ffaa0a9f85baffcc16f533f07ba37b3b268fc7160d42270d9ecfb7f4c9cf84e2407a66f1be31a6ac9bba891fed8a7994a58a5670e4efa227f261309a9515d6805bc6f917f1ff4c2b3977fef6dee42ceff5a68379f54364a3f911f8830c707f57b12f697a413e85a785b12a628e79e8dd6c3e67942a0700f596fc9ed412014e14da47ad3d03b55f93ad833926d19a75f702f98ccae56bd300f3f49967c79ae6ae49ee5771b5c593d24f270345fc38d36bf6d3ef90b164c88e75b5da6e1702cb4d5d5b865cacffd4c7ece2c7397fe1fcc789b37ad300c9d12fa1e0ac9efc7b66825e1ca852e2f9515eda383e08fb45955cf4d90df213875d1e24a752b9ad83a5d53f7f69c5007d7f6e32b80f0deda90393576ba4633ebb6eef4637ce96b9d1eee80b79a16859ba4cfd0e4e48c76e18e3f9591dccd44dcd5219c97fb9e520fa82e791983fd6610ff764806bb91eee49647b627cd5d5f10bf9a87be453828f7058da6b7e8bfc6ae9f337f117209740c58866988baf6b3f7f021e82227d823dac4aabf3c65a7df802f4c45ea7919ba1b9f6a584f0ce0e43ff809e7fe594035c9bcfa3ecaa8e1c648354f14183920d7776a973037d95e39e13121330610f3fb24d6f4b7b857c1eb02bc1ff97a68997ae137fdf8d0f3c3c63899a4e915d51ef4b571b0c8d643ab44c5e300d575c9b32e00abada20c2d74cc78ebd0e15d138afcca9b63293ed2a31c5756c6aaa081c5a63cb180c752319d9cc5a5b997ea68a50a3b307be7374d62b996cb0213a375fa3751a44e1453dd0e7f38afcd01cc6d8c8fad285eb5a673b27f80ce8d99c6b4f919d567134ae904cc4587ced73ac8e6474bda88ff9a129a0675d6f3fd7c7d72b1e57e7fc27c3cb06f7a71dbd929ca9e80a1c63a631d0352358ac8df5769524c61abd9ff047cfece3f502bb195f0b38f08399660c264679bdaa23f92f5f00dbeaaaea135e15a7100f34455ef453fe1cdcd753844bbc4fd3691a9ffd5e10fae48c1a508f1d72ea88c81ee1ca29e9389f47e8fe7de87d7534869f69559d845b7a1cf48a9e374c123f8f774df89f61f7f883577dd9748c1f73df55f82405ab8ad7dcb9317f30b73fb5af8a7469e6912f4d13874b6ed8566613574c58cffedcb9c84fb357d8ee4827e597959cdd12ebfeb67d84e36f9e35c9bc08f71529da10be270b9f3b972bb6ebc33474194aef637d02d76c3564536717648fc84971962362f7a514cfa806cfbdc91d9b63817565f73a065d473f83b29bd0df4b6437b56c151d6c23d64b13b0a3907d148c565ddbe79f3217542c76b7d4861d3dfef9972cb989735b1d1d93afceffcaebcdce5f527c094cfe86749a6b0df48d9d25aaf009f69502e39777b2303c78131ecb8909c813f48c8e7d3178938563e7dd586f3641ff987aac64fef0f789adaaa693c87db16eee08eb33acc7925a0ecf74e72fa78c739ffc7d8df7d66d56db1838d7067a756266dea1f337c9e167ad3a533eecd4538550eb6b8d73efc6968a08fa8d47728bd82a2b3fe50f7e3a3929e22e77b10e607d8efa5cc2b9730fc716671e37c775be07e05a44fbb1b5f7d01c34f62bd8f01dfb177f46dbe772c2807de85a03c08b33c9fd2afedf4aff6f1ad98fd6fea7df216301bb22a1729d959d0cf56ccfeaf9da18ac2047dffd49ce28e9a0b2d1aed66df59717e585ad33276ca70dbdb9909d95db34801e4e78efe240aebbd1f6db4f6d066f847ddc1fda0c21b219fc1bb219ae8dcdd07072ddd755eeb1bc0f22827300b668c14d23975bee3f01dbd1e1f8eb97d1d21d0775b4aa7407a31c9c7c0e7592d51cdf3f4bb1f36edd3dd8974104f6e57eb96763359d0e02d19c55fcf20dc6e4433fa754d23becbabce2f9b83b53b09ffb8fcf147028635c7f45f4c1bf42ebb6b4fae80c33809b20c47910e53c89c95e3d71b277cd3a5e983d885bfe9bedb5d5137bed8aecb5fc1b7b2d7b60afb10fecb5ac6baf01a60ee6377961afc51d7b6dd6b5d7987fa6bdd6c88297f6da9f3cb398e17588fd74d223f2fd86d6c118f3533d59ebeae8330fa2e487f6d0b8987f8be358c72a49fc222b31a6c73fe5fe399d43fcea61f9d2c2bda5b101463cb3d88f712c14e9fa830c9c457fdec740f57c610c9d7059c54c258307ec3be873c49cccee3dc60d9527045c987d20c8990a36907c940fb8df428eaec54c88cf0ed211d12eaa7a2fba9fbb69927b829ccbd1ec3a13c7a5abef22e4cb77396eab7e94ea7b5f02f81b7d5537a867c711da6b5f1ac3426df64b6e975de489c9d9d5e8b1cf193fe57f83de8c6683851ec358fcfbb1e018a64038d785697fa6e1f1285afdd9807c36a03eebcf22244f3ad7e1cf0630e6fb3e1ba6e92798263e370f3d91d4534b4e1baf488a3bf8454cfbf7c947d7e6efe4ff99c8b32648a7f71541fe1d68c8a603fbeeaad6bfcbbf1df2bf5fe691a2c9f43cd0b62af42a6c6de6bdcd75b9a3eaf460ce39b76cd5c030f079ea47d41c55b2377105b674a1ae04ea3e90cd1c7f5983d0b392bd8ce543e84b43a40330df1ca9b1a36a7ea2a57daa6b134de3452d3ae44958ba17c1d4eef12cea3de5549c9fc0eff9a8d662f70aab83aa897168aea0fc612c05f7e3bfc0126930df913eadb930a461ee58f3447f3cc6a60fefd1771ec6b0a833457f479c262e979c8d14fa3ecbaeffbad590fdb0d6f05acaf77a9cd4cfaf3813f4d7aaeae3193db019b9319aafdbd23272bb041b33f30e433618b3a1974e0ee8fe5e5990bd5920fb4f73ad6beb995e549414be7f63bb9a736bcd62bda6e0ba4752f73a3774a82d19d3f148dd8c03ac73855da6a644bf4f68bd1e929e17b3f43903307936d00f8e7ceec16069cb80d3b481bad575b9b143da563d7ae520f340ef02a641a66880eb96a987ddc901f9935dd4748cef059fc7e8f301fe7c957be520516e2cba1efd9ce29fe39abf5eaec62cec2285fb383b1d19e09583588138fae9a2a6c66fe483a0ebdce81b592001a7eecde1267967df913a11525b6f194d5c9b752543e433e80dd04f68ccbc1f0dfaaa189fbf808301b05e9fcd737b9d3a735ee13675d66e8ee77c7754b401b55f0c64cfe0e76af119cb60e3e801be3af85639d4170a785e550baecb9b3e876a0c985f08f74c7d648b9ec17bc220447bc81306892acdd0ff299153fba5363d55e391a353aea66334dfbb9900ff2285bb9e5d01cb62f47db22eb99a3abfe5288e6899dae8387a8ee41cf9c42ee10153b482dde27ed62498ccf78e5524dd731be84cf193fb52fba868f6cf67fdb382f4aee813ccf8865f64630db207713506f79a9967778c7941a1e775f27154b4eb8bbe46c0e3c1dc8e35ded0bd3f86b1f9d1bf1aefa5d21d09d2c98eb58e1fc8be0e260de48d09ce724273c851fe2e7b061c35b817f217e71ef4224d18de8f0aa6e2295e5b4502f54963ccf1b6dc7ffec275c573646f0b2ef802c6117fc7cdfcc39c59012ff10a6aba1c7b784572957c7624bc68c887ca5d6b72730de8cbb9ab67ab6a501cb6aef93f839f7a3f2f679a67a6be1e629793d81ddffba21dfb18ea8609e75746e32b51391c1ec964d25b847cc3bcea09403212c9998e9e877e189c8320b815f73a8ecec1d7f75b707ddc4b52f76b547bacc5ab5c5faf607f14f41ae1a5efeaaf069b5ec258d69e90205b2b7f5af7d2d460e6b857c0397f8dd8047a14ab7ecbc32e0fa2c100c9486a9ece5f5a71043ed1a8205c15607735631481d7ffdb313a258c71ff8331eef118e3fb31421f0b03b81a04d384aa3faefa30e3dc231828f47b04e207fadee9c1f718af1c0c54e913eda3812a32c8cec3fd6476bb7f7363cd6f46ca5f1ec890ea4cbec64b8bc264d983b3fce6ed59623b42dda91ea481e671fcf39a5bd16cd5516eb43052b422daea1dbfb0ac31f4399c97ed1f67faf8f614e383c202598c6a2cf962b61f032ea417ed80378770e50c660d57ce601e418f03e694104027e19f35a863826b161af4269c95d1ec3ac3350f70cd82605ac2e71a8e9d2a23e04639c0986f9f2cce79c3cf1cf425c0bbf868de4e35f6fd04c6c82e843877f073900f987f8df0f315c02d45f718a3333c413fcf47ab4c9dccd0f718340efdc6441657f59e0f871497572047c568a94dbdbae773dcac8fadc9b9be6f7d976043afd1f7a6c089ca249ece32bc66e6ed67400e92896c9d9d5a257dff76ded5d6a6c1d2483c39395d08eef46e2d4e18c77433d70e0239b9bbb7e0713c92c5e767df751f3eb7132b7971cd7cbf7e714d720e46e1377f1f7324c6f268fc533a96f7e81d746b727df839a9f5aafea6dfdf5b73ad60f2250d1f3d5777edf5c3cf03dc93f3f06f5f161b795cf1e86f90a75a8c9fbf07ce8b87234f9c9c7cd18c5fcc09ce79e9eef379edc440e179daf8aa8e3beb0fbdaa53f28cd3e8fe3e41e258a7b963e339821ad76f790ef2dc100a431dd775ac3375ccf033cd3dab13999f45ee591d8ff9b9e09e719d6f8e64e16c69ae7e413ff4e433378562ace8d96f05631054f87de1526767541feb8cf4b8f6316f03d5df8a9ffbd7d2626a5b6913616c277dc41ec0a6132673ea3b39d26bba507398831c5def59e80d56c732bfde33fcaa577cb4e68f33cfae8dfbafd6b53c1d04f29ee1d77b88796c3b6363e139644ce89efaa1f880ff7bc5c72a7252d9243ef7f8ca1b87e263b5e7dfb77a367830666dc93968ce6fcaf80ad8868b14701cc3eaf7ad65e63e67e2fa6123f1d609d3d84093d52f57cfdeb7fa69b6b4e13ea23a06aeb1f156ba1ed7247fe54795cf76e4d7d06bd9d89f5f94fdf9b53f8d098f4ca28eaf992af9e8ba5faef694e704f9c133c02b16424691e4dc8b8adf9873b718138ee53707d9521ae0793dbd8f2ac6d917732531fe380f04e0c3ce376591a9a291afdbfcd4d6d23afeaa7a1a1651385cb2f22f77941d1789fccbb8651305f777d3fad5da4a45a23e7a2eebe0fe1bcbf4363a5bdac81f2bc399fa621ceab8f8195f189da7d2a6d5be8b5a98563037303f151701bfd46b5e82749a1a9dd8f0e00fb179c8f38d665c1d2e3ac663812fe1ecdebec763af383c829a6b8cc6b523fc5e42970f6c5d7eb5704cf3483eb07bc75e0387b7629ff86d7d2ee41fe1c7cf473ed8375dbc28ffd0d43ef95158cd632e57583a4d5e6820b7f96b8f5f3d26972339ffea41efcbb79c669b1f71fac445c55b36bf7d56765839132a3bcce843ff29d86cbb4c95a0a7b637c37181c7bc5e0feceec5777844d53eb03e486d3a137a919362de9d225d6a13e4c3850e70bcc16747fa33d972d2e901f755225b6f2b15fbad54a45ba938424e6e84f9aaaa5e3c7542f65419bf019efe8dbdde712bc23a39e05304421ca273205bd7860b4c72b2ad54c4c8b7946b3c03995fdaeec75644e7761755f5f548660787e2433e0c43e4cf60ae3df8fe117fbfca4d92ef0bd356fd5bfd7d9ce75c92de0b745639c52e3efc32e454d1cfe0e71a7bd9a1e3d1d7bfc379d1c2d06dc5195b1806475743bef48b3c4e79879d4ff912b3dbbf98a7f0971f0daa5ce95b25ab5569c63b3a1faae924f7447e6f5a839b63b949dd1338fa76ae904e4edadc0f183ba8e981e803a605c953e7fe9ebd2d7bb3a317c56fb88762757638fe5ce16ea17dd8e1b1c639758dc409ec3fe52dfcaedfad899f102eba3bce51d72e3e14d1a8f9c7fc28ce285e3ac07059dac0a7d9f629ff7ff37a0a4506b8ad37e0c6c01c9ffbbcc133216372b53054a1972046baf56271f16f85657847a3b0ae45fecfb185abb3969c829f613fcb5c257b177aed0317b3bd01f178f4f37cef67685ffe880bf1c677cf18c52d68f016cbbc07a33c038e24c08906dc311e646c8be79179737ec06d78ff3e7ec381a9cb6c1513403ef02bf9dfce67a279fef829b75e31db3b551c01e9ac6f7b39ebb8d98d4d3ad8f4c0a7b9e43edefc28bca8621fe6e7a7ba5e1191df3fcb5461aa23b97cc72f7af8c1fca1ef27e05bf5c9d9fa1b3cc4e3725e7e9fafafceb8ab573c8ea4f65a47e789e8a23d8549fb5436158cdad6493925df7e347f33dd671f9c83c137eb49e199b5f28721ad1bba9c955ba9b8c03af74efce2201f09afdf4ff65ab9d020de55db3c557e078db71b93ecf2e034f6e3b01bc725384fc80f49eababc2dc6a969f3bd024662dbd65a5a4683258cd7a8a52b5ad7da557f37f03dded98bded333de3abbc01d3a2f7fc2893b2e675a15238ccb2646e8f731c7088eab7d6f1b5673108678ede4b70d709215979f732a1adf7009d29ccd6dce082aaefa2b1865e5cff6b453cbf6d96dcc35b250ae64fb0fe45533264504dc9f5ffe3ecb14c05df838badaf5f6c3bd7b9be97125276f7fc8274971c223db69f0b115308e3970d44b45f5f3792b5dc38d86fd69d9029ca85fae065802e934ed87e81a5cef53df9f51a5d94f3931fbb38613b3443f13acd1feec5b79879e876bc06bf93f628a69dacf9d1b4bdb0f699b2f13fac4c325f22da2f1d1139cd4dd0ff68fb84737239605dd8ceb34e2a56d408f529d1f82de59ba366247e66585ec18b2569f6073b9b8d7835bea72eaed791c27d967559c0ae3c248068e47607efc3cd0708f8bab017ff96fa5f7f9e1dc6adb67806c1f7fc2e49ece26566f487ae0c798bb72f2c17b233e544426ffd28a2bda3f8150b08a9e858a14e71efa0ccf238bf14f423a66b62576ef56b100ff36f30e66b2e07ce079720ed3c4b14e3c7048901819da1b6e876fb9b19f77a107be8c01f8665f3a70b67c6ca5d9f10bed17b18ff60df06e3672ce69305e80a72a798739d44f919f9ae1a6c7e2b89b3644e31c004629daa336dcf3d4dcf3fe7bcd338c73d50f8f79a3a9df01b738f8a1bd52e73d6ef8e70ff27397cf70dcc2b142fbc2dbb3d5596396b7cfb7a08b1544301b6c968f1d7b1ddaec47d597fdae94a76429f6df159be04958eb5891088e9035eef8ef93d81db161270e033ee5d28a7347bbe7335f5a1f9dd8ede46ff91eb4ee42f755480ef007718c1fdb9801f024ae0897ebea6f7141fec82faeb980212f7bb67aeb6059f3aed1582be6c756ea7205f7b397fe74db6e2c7facdb283e743992df30e7e84fe42f7a4acdebde7fa543eed6b29a071bfa89f03b48f28fd675a1afaaf3d29bd5786df2b5b21f704c6a46ce96dcc4a7bead5985f7a3fca32b9c31e7c61c5d1d383372f08f68dda08d0bf07347c5bee112def18116261657040d3694c337714827c5b26087d613cb95db8941f27833a1e48be87e6c85fc37fa8e73e3d345340e157146b829183e187d5c17070a03517352bf0cf7e87f470b8faa38c378908493e5855dfb1d1efac37dfd603d0123a88e73a726d418fe70bf36b691beebff09ff3a3daf1b0dcb583ffac7deb3cd6df493b310d7fe0ab6e7b0dfbed067ffa86d77c1b65dfc27b6dda0b18bbee32ca5b11b084f36e01dc6bf282ef9da775b24271aeb11b8a2ba9c267e54648a7dba58e85c2448b685988303e75772ef473cdf336493def90994ad7c9bdde2ea9cff919f1fe8ecadf2191ce0439f942ee1acf2cbfa5d3f66376a3f34f635b2e5ceaa78fd31d7ff7c84ed6c82517472ecdd4fc64ad9d86cd6c681367e516b729ae959a242ed44bb7603eb7f386397f63b16e152034c197e03359b953c63f17d242a8e5702077cb89466ef8a6d7a8ec9f01e7b4a146e122cb831928ff473f2a551f59519bf671af9ae68bc2b56517d376cf1da4c3026ae2219992ac9c7aa3658053ee61fed137656ef93193bd320f6d899dfbf13f324185f2d1ef9965f80f6e36f45927fcd00e3337ef7f7fc45d59837a53c5d9662fcae588021790c26a70b60e6429d5183b7de9c23a6f8594c69fc237fadc3ed0d31ac69e43eb56bee65b1736d64d9cfe3748d5ee23d5b877e92fc8f6229f53acad76fb0bf280cb6873194aaffa3ae7b26b82ad0f711909eae0d9cfd273858f6ea1c44c80efb40678d033cb9b2280946321e27f4805d79471bc41b7bce00ff8d7622be5dfc31139ee174afb34d7aba05d23494c5f5c5b5673b2fe51959841c03605d02b7a1ed26b268c62e67ec020ef798f8657fb74a2731f9fc4d16e4df909b9c04842fe4b893a353a6e8a77c29c96717f878276787abf0ccd799df5b03dfcad2bae67e84ec763376ad79e2f7e6177fcf5e881f03b5c33e6720ff31476b88f681876b028fcaf3dc3843f3792c317edf751157bd3f8395cecea7e638b1d6263fd56377aac78961e927c0115edaa7662ef5ecbcd50ab6cad7a37d0a39753893bb77e4df6eec2c518418632f881f7ca0d5f59cf38dd53f2adaf5e8e8eccde2f84069add3985f1adf8c09c92fe8cfa7790dc29c8e8bfb3d069d2152a303f507b977283ebcb228b752f11cdf50185c027b3d71c520f14beca36e1bbe94b28a513ad6805146e3a7dcf99df3f3002b99f87fdca4f4f7807787e56bc2ff76ed64eaa5ebcce1ccdb12f2d9ad738e644d97f322fb4a8d6e5cb379278c75b875ec6959cb4989c9375ddf9033074ff324d1b01a5fe81fe4b3674dae0ff6173d8fe83d789cd78aef73ce2ff30a83a363cf8ed5b8d1b834e0119f277e5930d0abd5193b60b2f6a65920c54ff1a51fde0ff37175e324adbc60f3de532463a8673d7a3736f3f60f782c31b70bc1a184f53a3618861d39944c58d7361359c2b5b46e5a5c824ebf123da6d98481b5db6a45d6890384aeb87ac537f870cf111e45dee8ad31f63992a7c2a484752bc3b34ad5e56e7496de17c8e7cba81c64a3831234cfec05cf17c47fded1981787554ead1d8d157ab6b97582e3f6f344113f3255185f9bd8fcb878f0beb48cb9abe720e3bc05dce4aa3418a0ed732134d8b9c1a8f56e675fe4af4a0b1fb1aed37e388fc0adc79903ea6c1f5d6b72dd58ee40017b6ef56cdd90dc2fa16e5e7f517f6157f3744abe8c04e994bd4be3d0eb83d63ef1127aef3ec79e87186673dd6e63cf762ec99ff8b0f72667599cb3fe017830e96bcff2f8947ce9a0eb18a594773a57c48be833526879970027efd54f938b9f26cc979647f278900437f85e82fca217e3e6dd663e9b79d2c2f323b9607361e2d8c3cc3d7c2f17601f887d7e16650cc6a0cf0be015189dce4bd1a0b0a19de346c7fc2768dd36165f6eecf560299adea6251fe25fc0a92bc9348f0ad2f7d9d2323dbffd5e1fae79ca5af3a2f3e522051f05b80ba12f828c15705e40f7c6d479a9df15f82d1ecf4773a6ee6c2ccaa6c6bc51d49a4590cb07ec526accef101383f8dcf8e82527649ffdcf723f69cf8b24678b32699fbf2a163e629307fb1fbfdfc37edceede27637b781666600f22fb05fcfe04f934271cdbb33e72fc3b9ba9d2d4f34ad05701e02a24a70cb8934c86777fe4ebc8dfc4459abd36138a33c6dc8fc1e6c5f50fad1c64a848b3ea3dd9a595783ecbf05f1cf099860e97bf013ea6c8f7704f4f96a822c6cf5ea4c66fa587cfbe175575453390337ecfdc2399e4737ce997e1ed1b3bb192f5e8bbd9924b60dd09c7eb7e533aa922a1f3508da1c51bc3aa485f71d0ef936f005795700e0b71b6207941f5cfbe9f7bbda0e6f251700ea5fe0c6241f533aab9bee60e9edbd8eb9df2a5d5afe437ba676e134e58c79affc6180935677daed83507f00df20f42fcee95643ec519f27f693b07ea98fc729701a7406c860eb7ebf2c9020f248e91c77920241f5b9c33f883b80becb12ef738e5179d7824bbd09edae8f0dec8a629d5148f27100637e0e641e36cad37d96fb82f8a8cb19fdf7193881fef955d0675c650573480bd89f6a36b9e6e36c6e9a49fd9f6610ec045067cc00d5e31dc03e454b55f715ea8282b3bc9d5b0fc23b56623af6742af6b8783e042d7877479d615fbd4e14d8fd133475fd63c770db3ef70e695f4cb5d80ffa595b7a7380e7e521bb2df75f24371755d85234aed878fdcd5928fad105e2ccec4b5f9e2e0632bcd682e847a4e1dc8d95eef38dcaaf8aa1755185a646f454eead77b17f2ef2f638ef85de4f3c69e136c0ce403e11a3234be863b12f95783cc67d619e0318866ac0831f2c96f81354776c8cdeb4d6f10074fc1478ed0ef8a3600ce62eca38f31efc88d7d6f63c10f12904ba291dfd540d75c5661e833150fd0535b46f2d3c975230c638f336fb2087c984707fc77dc2f88fc74a86127f327033f1fe633f3a2e28673df782e9d9fc5bd7ab8f68429d4dbe74f6341ccb20c0183201062c0ecded8c507e4be34b8cfaf99ee0fe6376730bb8d6ff3d18e9bed67c55c0f92d93e2e95286496a3cf5faa3e7e9b69f11bc999fd0a46c7eb628ffd8e656ff5f618d3fe2e777ffb26474fd7783ccb7166cb1e7a976ba1e899f782179d7aeeaece33cc75e7bb3a135c1fdfcacbf5d36934c9489e14fdfd63dbe6e8031bc5d58619d4f968713a3dc8f59eff9b7945c036923b754bc0ff075cc19d5a271a2b01f3d2a4d368bab57bd8f6b1d98f48eef89ee8ccfda339cf605424cf6b7da7accf19c01dbbb1e68cbc6fed855e531723676a8cfb1dab9aaf851043afbac3e5adf886a3756b818625ad1b5b3ab3ad8bce8a1883fca1e23a558d711593c9baf2afe1a01bf37e34e0207e0ef52fe35f7e34e82dd231dacf47c79e636e306996416d19ce47613ea0c3bce615f3cbe21d383284c1cd25b120a4b7abcfbd28bc613b84d822e47d9e700adeeef3e5f2d9b392f3ea101f5d6d90e0f7eace05f09e01560a2debbc68c0291ad8dc983b1273109ed583df8a612bf88cc018e9b509b4e6fcf81165034a740cb15bef91bcbb1ae1584472fb300dbd34ff8dfb4712fe875c10b9bfafe2bbe1bb2b26a56bcd19d75abdc9fa84570003881a83995f6dadd8d79f19b82f1dfc6fc088ad78deaed06351c51e1d2d2cc1661567ef8a65f07e897f07eeba88da03a2710ea2f89757e2bdba88d84b539f03dfc9dbb5dcd39fc4ca99d9ed756d43cde7dce0a9dc488cf239360bcebf24b5eedd3fe9e538ac2f55cca6e99f81339a399c715c08579c0fa9ee1b5335fa3a7b9e46ee5d0d26e4a9f7ecdde76a3a083dcbc854613a77ec4fac2f0fc5879ccc93ea7e4b06e79c487f361acb9b1cd3f92e7cdd56ba5eec68f76b9198d9761c03f6c6f276ec6f47636e3b9a958ab6fbb588e7b963b157d75a65d57da7c2c73910cd5b20846705d7c6a2f5ab7b049ee7a9f228b0815789f1d304bd7fabee077887d3f1531faeaefb90648cef969aa9d2a9cbee5eb3b6dc147ed7ee78e91335ad63297c2031993a012e8afcb9ef793f7e571b844b6d7c940f10334c37d62071850e3e0fe10fd84ad7b0e61248d71787acc7b3cf1b4c453377814b79f534ee2d1fcc9bab0d614f3bbd55d4b283ab7ddc8e13ef3d7172f39922f37bab5fb23649c83ecc1d7b7ed3c5e486b1ad078c63256788c9435e6fcc2fb55d84ec37a889e68ad0efcd178ec5266a3a0d7dceb41cabf8d876fea66839fa4e46734ec9d167a470c66ff8df66cf6aba3abada357234b96d7fb6b840a7fce39e8dc7ebe3458318c964391d476d39df8ab1d3bd89d897d01ee50e085e62cd8b1e962a9a77739ab8517c94f54fe0e67fbc4feff65f6b2d027b5ac25e8071d4e3aae4cdd18f003f74e2a62efa3d539ebfcb1d77b3d34376b9790e464c38b35924f33d1b633e37cffd1b1cf9144604f223daf604e48a93541121de46d574e2f85b73cf068709f0d9ed53b638c8b9373a8633ada8f5dbe2706ae12d04935369573d9462dcdc0ffa3c5bbf9f912da5a657f097375aa333a97af3b39a323c70c9a5331e72a9e97dfc1ee7bffbe74a776da5a2d607d5d937a4e9c517cd3290aa1aae53e21dcc936b4f014f7511213f3348a0461af671ffecdfe1eee551600d62d772332f356364d7d6fa69321f78d6f4e2094e5af5b4d0fac714278769e47e372ed2277f3d07225ff5d31b8ee5e7688f7b92992ca2e9dce3d6ac271a11b2bd9ade9afb1e4c74fee484dfbaf6bcfe8e2a9d38c72a58573f8633894172ebac1e1ee644902d5f4c53c8c732e8ec414dd96897ba4d0df12e18c1750cbeee711f2ec6f5016c9fadcd9937dde2e3c02a5a767d7dc6eb335c614219a42f36aee27825dac3eab8beae5a8f959ff257d79e325fc85e11a6e8f330b00a468e8a77d71ab09e6596c07180de5d28c83c64e86ce7b3c84da69113f964bd5a6b2bad32aa762493c5e48c3e031986390e9fe74f915f63336707ad0da93d57c5386be5660fc83f1b9c5fe4f8814bd966f9c467d88b2b99b9abf34ff392782f4c584f5af34f7152d0df5afdc58d8c07ce671bc67479591bd9acc15d4dadde0bced4de6efa4e3177d1593d7cf232602e225b7dc6cf85845726a7efeae0ce4f72cc0fae938be7582edd6b8d4c117e527bd33fcef6fef31c77e7dae77d262fed2dee2eae2924ef8fe2775e3920386141e8a703242b46c877712186ffa2d78f6bf74c74f0e6897e1823ffbcae4ba9b8bfea9c6c0c7cedc02f03eb3c81bea59b2cd59c8e17ff30db557e8d47f266503f22cd591fcf53e20ac3e80bf285c6ce9190ecfa3cc1b9b3e73b591a860e770a5dce38cb13b0a3e08c438f2cf00a8689c39de8cf8e8a3664bc7208fa4796d647d762cef2649a3880c7ce97ae360c0361780ca4f575117d5cdc14f99ec605ad878ae6ce9aff566d7a1c33e8872379e91bb1f379394ece68cd36d6e41c08436b63f139e673e947aa34ef7064196dbb426231677a6a168185e667c507a3da977977704ddb5b201491c7f1f9e2b0c2fbf89631aa58719ba19fc9f91b610e61c22f8a7ec6ba087d2e4ece5f3afc0f3e82ce396fae562415d722dcbbc23a833534d0733352d3b1770d3e5da44685a7d93c734c3ee70609b9e7c54bcda59be07bb85a71db8893abab67892a9a7dc79a33e8fa076bf6e695c5937d9c65b46de14503fa7bbc17412fd84fe338adf8909ccc272b763a3127fc5867f985ceaeb7c678a21b2c6f68e344b7195eb3d964699abcad19c5cc66a6139b71a7466c8ee56731effb679e55e8198a5bf52f248674069c8faaaf8c6047a969ffe8951576d427a9091f9c1569d689a15fe93d75a4f10c909fb0b18273a7aee7aea776a69f92a5f8b0a6f4ddd5f2df545d4448613d01f73ea50f4bd087623fab6d9176eef2e8d8f365c00d28fd5cd987fddc8fa08f99c11c4003b04929fb0fe966c0d2f3907d847bc4a9b1cc3a798d593b8f2d0c2e5e0c3decbf0d699a04510198f61e37187962b2dfb0f3de0670328ab2f53983e4f82a873aca03b9660cfd41c8d7c3f8a3f4e793f9d5b1fa9883a7fa7c0276d88dd2b1ac9a8eebbecb1a5f50d8458124472aae4bcf036d103ef02f8ff2617d44760cedbb2da269e94aeb959f9a9c1c15f5bb2e52935725e3ec680fb9556fbe3839cb11ee7d5385a91fe8f275768b2392477cf5fc5c914ec43f0539f8261fa67130a9e651ce1d8ecf8dde30f4f6d94515f9f30a622df99b776020cfb5f9fe198fde71e1da21d37ac7c3f4cfdf911ba377ecec19a7d563a2880effb48792b2f1e543f5730bcfa1b6df37f63af1d309e3f5e45f4ffb59a4a6d777fb020718d9ce3f1913890bdc0269ca3abdf5c5df33fcd2a4ff3ea67e6fd96cbfa8f7796becde350f719c76fcf658d946d00fa7850c3aff55ad26c6dde9e49fb06dd070a2739333ae238598dcced186784f95c310fd93299b498edaf15a577888ad705d707dbaa6e4dd8b1af9e5ef716d0a7032b6fc00b65491ff6db168ad224f343fb6c2b85025197ac5dd343904c43f843ca430c53e8336cdbc6808b1403f1af4fc3461f0fd9870267cef93f9d1e0b76bc7b8f7a3d5bffad98d071d7d1aa7863319838a6fea9cfbb17d60b3d27d6836cbe37566f9edd232f2406232725d7b5ecb6e8e62926ca56b54e39d410ec741ba0cf979cf7ad693650f38cbdfdcf69ee11a7e7a2a0765af3afb649ab8a959ba6077d4394ba89391c530f4b9fe211086916b9967b4e736f63a73ac22f33933960566e7f7cc2bf0d06943a473ced3de6ae7a466e245d81e742dc036a0ed307a8c834e2e6f40f9a237d74672b63a2fe6d2ddf38d2f7fb72ece733cf3ce9ab46215f7f72135117767f0f4b0ff82e4f296cc4bdf18fc953a9e90f6f307be319223e9c60a587c2e0ca8b1097ad32c10abdf87bca267908f5b5afd3c9058386bf65d2caacdaf47c5165a18a07207b7abea955a5ac64b5962e035df215fc74fcd5bc50f1ad87346164df4ddc48f8691ab0d4117c8225fcae298ee0fc37817b4cdf2002741118d749a1aedfc02d2852d799b21db230f2cb0a129b9f06c4e87fc16e27d4eead7be31ae315ab4f344cfe27bf775b5c05f45e48ed58ec318a9997aa2b90fa4e24336d1592bf03b52b8180a554f0a75af93c7d7a987f9d1b1983bdeede77a0acd6f38a0ee7f5df4dad86580b9d9a9cf6be2607e1543d05ccbcdb17ca572304238063c8bc929b88f273319b26dd07c57b863ad33a94f78cc4df02c568b6bec5449e6bf705e836025d531d201e95fceba79a105d7e7eb796fe9e7d5d18f5ab62cf469915eeff3d2965fdabdd4580f0d565dc2a3fdf3287e4070dbde374248fa96aafe84b0da4bf4fd1bacb10a9b635cf74b41cfe06c74ba2c45e3dd2bf3df8a35f03c96e11d7b7a08c0965b431f0335c6932239c76004fd0248e7d7efe6478507efc732b0bfd0fae0fee13897131ec95d585739baaff12171a7ab5f0e2a4ea93139ab184b505a533daa06bfd1ae476fcf7a5f1cd4e4461536b31cd5b1c06731b5a7b6bb2b26dc139b75ecd8c90df98a2fec5db02d6a3bf5b93dcb6c4433740539c77291d4fb1e08cf523c0883343990f8c351d1ba7f5f875f469838d63af10fb3e337767ee471eb4133265c475acdd55a9c0cfc7297dd3fc3bd78bd35f08b913e2a5ccf1e4d2bae908563bb19f40b815df76cce492e07d7af221b8d3c07fb53ea01f07cf159c73cb4b987f9583027145d8ffe6c3ec559fec555bec909fca7e771529c53f6d1994827dcc60a2026adeae35c4e59e4131efd52ceb65ae39b18bd200bc4f9f127f7f4b9f012b0e89dfce3b3fbe9a9d96f636977e2bdd5dca4f53e4894d1ddf86e0197300e178e3c6ec040ec27ed9f3d8b3f07620858054a2943bdb97a481207ec28fa3b858e7caac5dec87df27e067e87b7af720a980daa8d6d0a799f3d5f33322645407be4e13e41e74676ad09faf9f6ed3e79d117e7a649e9f7e01c2edd24485c2b47ef84eb8d2599e212845cdf36e0cc64c3adc32f7b3edf587daae6667757ffe125f9715e9e4aa5cc4fae16277396815c35baff560b5fbc7f7101fe0d03c9ab313a8b0f7b873af542cf6307e22e52a513f227de02e194a822c913a79393ab1f2357e47b2083706dedf7674398327ed4c819c05720f797697962cf2255aa6cc8875cf1551f4125a3b98d65f6b08e2f607d1caeb878d0f733b805e2a40cc63cb25f4e687f6e04cc338df3e1fcd905ee0ef3ec76af9164de624f01e8fdce3f5b2bb2bbe758c089b20f801383dc4782186fa6a6eb8a672446b25bb30673fc1c24d35a63ecb996f95b8ee24eef724c3f2b74c5d5713e9273395d4580f9a07fbe6fb441e633c8a6e24b570b2f8a9e670ee0e58e7f2b65dd0b742fbf915d087906e87fc0182870c6db3e8d1f0d4e8efdd9adb7eef885afd7bed28f7204f6cadeb15747af1c9caab95085e9568e624a5f434e87813ae567fb4593f3ca367e592f4cfa161af968e6b82e6a4d647ecce3f1650cd4d0a56c88ce816ef263398a7319d6707c22cf8a1687d519b8233518379653169641484e35f2a8f9ee9765867e24bf05c260e05a9312e7863e7888758de15dda582ff6bce60371b5f89757e6bc1c0d910db0f4c4158c6163cf87ee01e9c7f0ac68d003fa7ba9c93b3f5d333ab2afa238f72388e1643e3b0f3dcb38fad13572c5c940c631d28b726322594263982039c1016f1a7ebe0eb51c527bee3c8b27eb8adfed4b9309ce463d3ec3e3f0e76ae7bb1b7b6e21dfda1de3331108f1af8dd6c453ebfe92de3c09f0356fd47dc71b7b0eb60db2598087b08919f25e5974e463679f4bf4992dca69e422bb11720d0ac135ecda70eb94bf042f6db9965d01be4a473e311b8b4dd6295f7ad684f6b19ecaf21fc576456417ad7e12df2d7f6207a2f96c6c97bccb2742ebb3eabd6e1b91ef99699204251a4f7242fb66ab217fb4d2e97efec07e35d07c98227f70b922819c07ee91392179f072eea0d78ae5b726934d233756c48edf0c9c2e09afe0f71c791c7b456beb1d569d1cc783faa8c989f4c6b8b9c7f1a5221a97799904ed385adbbf53a4dd7f63baaf63babd7f674c77adfd1f8ee94e6677315de3f6af89e9ea3f89e9dabbef63baccec514c77f4bf20a6bbe8c47417ffc131dde97f604cf7a44c3e08be3fd413adb0bc473a28b999e924df10bbeca9af5b717157fa5d7fc437fe133dba8a308e23b2cdd7951d50c5497fdff981e5e4719d79b70785dae7d3c8c53162c0b96b631140cd41b37ff5c01e26c8cffc9286a50bf976a4af58d6efad76ae95301b648b88d384e08dedbc9e8c6422fdec7b3cdc07b56f84bf8296ebf917d789311e4e752d9b2a05e5c65e53358df38b97ba99dba3f68204b5a6e87df54a6ee03ecc0ae71d63d23cf5adadf65a83cee8d65937f35ac76bb7d2357c120bbd8b233fb9eeec7361e8b5314c1f70ba52316f697af99228bc4dfdb3cbad81fd8a67bc1d25a95578120757b0ed9b5b2c73571bbd4576907645f35df171d03600aef96de1273cf0a371fc7f81b9da01a7a9e1e934fa15776317dbfadddbb3cfe2e4a5daaaf92890ad9678d23c91714f48e84bc3fcab8a61b4aea5c63afe6830fbd17be07872abc7b3c6311b9d7a558c7aa3b57ce6e409a619e085a27357e17b015ecd0dd9041f1fae7eba28659e79c9e962ebedda148fa570fbc7f17185fb0849eea07eb7529d604c055ba37cdc08d62bb291ce01feaf79027b5034631de264bb4ead7a88fbce6adf807ccf5893b34bfaa124b68591a60ae179699e3a712ff9693ce5077e7bbcb19d487d549b31ae62802feb25b0ada3d5719f1772384c1c8bf267b01ff030c68bb9715fdd0bf4ce4f7ca3973169bd8a61c2f3fe45b1e72a464adb1e4fc6ef94c57b537384f485f313bfed5c8dd9d576a799768d202e7198011ffa5d0dd34fe2c387f9d1eb05d6c6327b8a3085d8c63f2dd60cf331bd614ef4bb9a29a807bc8b254772291f9887fe7cb5a64fd78af2158211eb21f98bffb1812a1afc6c744a96a371b9e08cdf4a99ac482fd493f81a89018946ab2e3b10fe59b1b42c791d1f23f1a887ef4ae57b290c92a7f13149e6e9732fef09764c9adcd6627283736ead495c3364a04fac8e2bad339f039f2996f759d2c4789eca43e8a7f7a22a4e1653984e2fce8c06dfa9e389d0e72738a922c9754c6c65cd31ae5cc5b146c7fd5a31eeacace37a54fe81ae3d736d86f6cfdbf3d7da6fbb5f9db846253faaf9ca900dfa3cae5dcf43f79a1bf0e1f6d60989a7a5d3c337eb48c5bb1687d7f1a04d958b037e15bceea668f6319e7b4b1e627c02b2c6b54e7ba4775ab99497b141828b6eb46c384ac7dfedd9204d928081efb662f3aebd3a7e7178fc8bc31ad9a8e5d2ea23ff3e86beb4b43a27711dd3556ee3773f624ef2a85f2c30776ea2887df2f7b06c61adebe3965f42cdcbc1b5c99998ac932f69f5ed9c406ee2d93e6864c8d1859ade6ece87ec7d69ae6f44be0c84f05cc7a1a55546f214551fec71265c6f8a866cbc30f4e3090375c187f5c5b487c8ff1b011e9810ff76b5c10de90457db1548ce403f7d8cec90b6ffe04571beb19923e8ab787ef1ece1c5035eaf766f9d21dcf967c972b4fa154cf2abad67c972b4433f1736f2196fd3760c6eb26ac7e026abffc6e05ec7e0c6ffce189cfe7fb9ae72ccdcc5e074fd5f138333ee621c0f6270e6ea0731b8f1a318dcf07f410ceeaf4e0ceeafffe0189cf81f188383b3b6baef45fd6f5de50fea2a75edbf7595ff1bea2a37d1c3bacabffe8d7595da9fd455aeff3d7595a2321eff795d65daf80016c414e6b8df4e23fcbc63e7b8023cf4c7b1300bd747dc6391f59abab6c01e429c1eefbd8adba860a8deae6469c5b922f679abd7f187a3c7b5222ddbed59ac285d6701f8dded3a28e4535a247eb2fde7c4a48eae35899fc6a4ea5a41bcd7bfa9b9fc711da893f2f197f6a40e34c13198ff6f7130e45f4ec09f77899ffbafaab54436e2c378d5dfaeb5a4e35575ace0047d667f3abe99fef96dfc4b8e64ba5e2a97232652a8d8b3abe503c0567f100babf6edb3f830e56b576b06360fd47cb0752d67b2344f9e0d182385679b4c0e3846faf8dddb178c72437aa9ff5b2993378c95c5324a8d41d9dedbf8fc87e7563da168fc63758c925cd731ba7655aff8700fc3defb935819d87f4d7ca5dabbb9bf671ab910c9efc49f6fc548c8bbfeed3819fe7e71fe4f887191777914c3fa87e253f49eedecbbef731aa3f155390c910e4a34242fa4e7b1225c97b7cbd4dbf8aaa2efd1b154904df73aea5b3df28fce4315d36c8da5156bfdd97ead65ec13ddfc0093dfeaad030a43057e5ff41ec7dc1ec7ecfacf62767775982f63763d988337c0ea1263de8f06481f2d912f426a29a1b6f6cbe0538baca1721bbf6fb456dceeac000fc864a0732e3ea322e8b1c60f334f0c60ea6ad77046733e579f0b906b2571afebdf8e7b7dddcbad64399a51712fff45dcabd34f3cf96f3ff137712fb78aafb462c6fa27d24b09c59d7056ca9cc2153631473bda6b148e13b2ef5b7eb75d7cc8fa38f7712d33ed2702ee947c20f2344dceb22463ee99435343b1d4c65745fb164faa047c74ad28911ca0f7927987fd199a2fe31f87e2e32576a930a0f15101fb7f8bf98493cebc4a77712b8cc15a6334c93ac39b11e1bca5f7038d7d241a77fb0d6a6769deb90e7f10f2cb5c1bd9a4f3a4c68bc17274b71127372f0a18599c26aed5df6dac41168849e889c9cdb5563b551bde706dcd2ebb8f4d01e64ce20a6dee8f2df4e46549bb0674dca9011d373cf48779124ca8b884c1a7546ce7701f937a7596e8f5e03fb6e317f781ef429cb08d4130d9757948eafd061c3465ed1bb7625a6d8ca584c80ae03daee2b33fbb1e6a4b30ef129c9f34c903d12c95fb5a873b3cc7479cfe6bd1bc39bd69e64beb8b4f6469271ecc2b5a9c01c61ae463ebba8c33e6d66c70a9daf3e463ec55ba7e04e92dbd78e86393dc6fc3314e625f6d7fda0c961c5583c29e125bcfdeb7fa2999eaf22f4ba8e7fc88f40760093ec3b547e79cd9919e8601e6a7d5e26c11b7f6441b0bc558273e372f37f690f17ad3dbab18e3c632013bf7c7737f98414dcb22d91ddbdcac4fb90ed01a7f8f9d37fee9fb00c77e526103d3d863b48cd4040a83b7f12780533618f13fc1f2ab6cabb32ad2fb0cc757bb3907a88bebd4c96db5f82d201c7faab4e6d75128d01872a4d70df9282d3fa4931ffc716d802bc83991d97c8563abddd8f78dc8b3fe61f6f6c5b199b73f5e55910dbf46c7725616b74034af8bfd84574536f30e26e3da77d7b10b8dba4e9a27f0eed237d7a1fb8910ef473a32f66fd9bb6725e7c5fe33f7ac497fb18f07f4f55bed1affb7def26fd55b9affadb7fc5f516f593cacb7b4c7ffc67a4bffdb7a4b0afb0a782f1ec7dde9b3896ca46183f586edbd2e8f8881d6b685fb97026f04c6d813c73bdc3b34db39f6eceeccd5bdb0629ca9429834b598e4735cef50edb97083defbc6608cedc33af32c73d4fa5b595c80dba5d141bf5d3bb929e3fc35df0cc77bc184e1cd32b415097dff847ecf909e0e26ecc7563af124467d416755457362af93a565e0589a989c5c7318fa8735d2c1777180ad543074ad13bac73f18eb6e73ae89067083d41c75647c771c786013606c7817c7829ff63113fee36c1a399163b1574f034e86721ab9e87cb23eb73b7e1f6727b14acebcd2fda21b2d7ed45386b96a44b33438f3ead8d310f8210e4c2eef8f803fe6d631c7551db7c23c02d03b59a2f5f213a6e2c4f93bb80cd0d7f667b80cedf8a7269aa10bf6f19fe028fca8dffa75ffc377398917b98f7a0e71fe23811e3ded712f6533dfcf7b76bb9c89cd3e9c1ebd9e59122c7b661ab975fde1ca6057bab643fb0df98d4717fdd39842d18c6216e505ee8b35f8992e67aa300d3d7b7892f70ce1530b93a5c614c85678d57bd8c6311f0ee528eed6f4d1f57a753fa31c8f23457f855bd0f41a3b9afca3bd57f139be3a07aff721e00a3ea9eb9e321eda37dc60eef5cc9b6bac2f01d77f7bce7bdfaff8caca608c7327c0650918ecc9b9e2c09323d2f38f31f358672f477ff39c115eaa290ffedff7587d8fee2104623f5245feac5b3ceb73e6d8eb05e796cddd8ed39dd514f3c2f98735ae8fe6904d1126d896afb81165c82f6cb56b644b4639b7a67b397a7c16aab3fe0ff415e33ce8b77dc54dec1af6a65d7cfca0bef0791ef42e3ff94f903f3fc67e3c4673416e6ad46f7f5c9b0ef80b32e4dd0beaec757035a05fdf14c91926f28c8ec33fda0b7f8443806d6d7bfdb1058ead291b48eb8b77283e489dd5d939984c20f2e7aaf686e851e0f1b8e3cc3dac2f2e17401de817d812ab63e5fb6d74f67d0b58b034cfc4f4e24af1fbc63c9d6db25f80734cec37fdfa9cc9a077c4b81575dd31c8447fcfde5c1beb3baf6732f7dc04f279630d087fb66950df99625de1869e70c78f9059dc2058dac0fd0b3111c23f83640be36a21e86675e45ff1ffc675d6d4439f405699e615782c44f3ecda72979776ef8966e82760fb5d021b3816f0fb446053248e3da5c617962a25bfc04eb3011784ced960fb0de24b74ae4986faca408458723ed33fc1fe837cbac573ae6172681da8b1420d7260cf93c0fe8c54e02d02b964fae322f37bebc44bcdf2db7b1cd69700b0a607e87c962ab9a7690f671b1bd99483c487bcf407e07cac6d37f10e6bea6fbb883c97f505f9d5dc66afee11883ceb7061e2a5e86ce3fdf4f07d6c96cec3321e171c30de52b272ec29f3bd6c7c90dfc37bf64ce21d30f78bdeea7f96fab85cf65627f4ffe2b0fa8dfeef625334ebb98bc8f723e447d0f2bbd9d7c68febdb2b9fceb112e8250b26606f233bf5e61ac9b9913fd8f6061ed5d1f8aa6827f0175cfb93d6b7ffe36a83936303bfed19f9119e959c95323cab5a98a8291b7e09c8e68933757244f2e7dcce2136bcb43fcf1d12bf339d6410db049ed73eef8b93d2e7cc29d20b64afdce0ac0297e8b59809f1c9057c1bf34a730200c7af959c09e7513d6632fecc8bd833b2d9ad8870de77f2c0b4cdf91d5610f26dee7522c8804abed773abea804d0ffc4ebac8f7a81a7824cf62d70e21f7b81130de4920109f42a86dd34c15b02de9563ca904578860ad3095ff23a775ac2d52b42be6d9b18cd673d0fd3acfb9b9d6fce2a5eb9b1cc5793d5eda364dd0fd20c7567de7b4b18a7c63d731bb08dbe8c503fbd9a5c63739f92213e1da2a6affdbf3a16e0ee7df63dbfdc0a6fe669e65711cdde7e261ed403ef84f756e0bab9bac0d552f7838e1cf6ed9865a3be0a740fb32b0d709f9db69630dd840346fc87e559b3503ac3b2aaeb969af4d01b92032df70ad672539ce45e16b16c911ef013a3e8ade471874d70bbe0ffa1f72c4e372594e434f93dfe4c3f0241f5a3274df609eacc71b6b6d62fcc257b2ea751dc2f29bbfc31a0b2fea1b283b82ec8543653b18c86790665dbbb67baf0cf94fb4cff4605f51be979356b288b21da83a337aff3cc753831a218c33e3fe6d9c192c7f93363e7e9fffe2c24b604f6f8bfd98da6fc7928eabcfa2a2bb0fde663d26f7f76ca29472b4e8c9753e6a09b126e65db1655ede7f464a4f6ef167c1732763de8b76b74eada9f2a82e1d784d21a71b42ccd13f4c13bf3744fb36f3d2a0b6f19738865a421db7c89f5d3139bb4ced2b547c60601b601db20e37d6e086ecccc5377f576c5c9f1ea0f1d9abdc3bacf8762fc21af3b44b2b1ed9814fea707e2bbd35f0f0f88715e66cb6f1ff5e6fc55be594f17ae67e2321bd8bec8d6b65bb9cbc9e9bc809d3e6dbb457dd1805f8408b8eccf37a2b4a8ee13cb88b630de7a57dba028f82ed268b6842f929c3d2c5b6d4b8ca0d0107e6a1cd7119b463cf47bff7dffea76fea40d840e870da1b9d186f15937f957facc6d170c6d39c52afae3f421d9006357abc1f0dd28d5530d0f77257e77cc703f728bf3e76edf9de4f936b20d65c8c9dda145c3f5f71d3abe9e4ea8bc500f36250f95271d0ca977ad2ea5f9e07477e189d43560564f7becc236f832aaf9b9c121b6321bcfd41eefad78b7eaf0ce9f640287e3cff7e09f5aa6fddf7f84fcb853bbd15ddcb132ad26a87646d204ece0e87f3a6caeb5ce9c8b10667afb7dae13ccb3094492da92c4e6e773d3aed339806ff97fb00c59079dcdfe5a42ef28ddab20bdb9951f537e02b64daf75b33ad9ecde73554e93485d83df8012ff36bc99cf521976df67d09e9f3393ef3b6790b8461b2b1d747d796774e6aecf0391e5efca8dbdb19bf77dea5a97daa62855a98903c0f95872dde3b79cdb7ba9fedb0eaf4a93daeabd8da4ca6825d39641ef543fad2ea9ee3425abdaccdeaf218756a331935e1b7c4eedbda373651897e81beafd67a05cc7ff3eaffd6bcfa09eca2fb3eaf53155ba172c1c4d6389d97cf7aea2439a775982ac6d9d632739f3390cd57d6fa94f471d1d7b6fa55ebb8088ec1b4f8c10f77fb35849ad2b4e68a46671ad97bdfd6517e815d7ad7c33b20b6225ddf0db9b38e9c40fb2ff15313e981ba4f138ffbae2f37f3d284d95813f04b5ce1f3049c7b3867795783097a423463b9c5efddd64b9edde9e71759e63fb88fb7b13dfe836aca1acee30a4f6ff58afb78013de5243fe01c567cd36354f4831113790d464e0ffdee0236bf9caf6d742df29f8d489dcc19c0a5d68a653062bbfd9bf9aab7e28d1e709f253ae7822e5226273d10062d0e40451c9f1d2dce0dec3355f608f29baa7a07f41d825911048a562cdacf833d1e03d605d587bbb402b0c3dab52c546c48a27c6471ce343d99716ef7564774a67c884d127e777c8e19c21f51d5ea8d1cab48bc747ddfb748c520fda88a53e03a7212a3cebd3dfb4ef53fbcb95a2b87dce0934b9d1c9e9e956aa72f655d61518b1dfc448c114df768e4ad1e4a74af846ff15ca86283c1b438c867bb07719145831b559c3c0e7cfc37471b84aad4e4d8f0f5cdef5bfd44f09976479a7f1ae30627ef0e37b9b9da300a4619cdc7d8aa855cdaab4eafd1b37c6228a8b0e6f310c9ea2f69f546e7a93b983c7c207471789edef7377ddfa0f7f8be6b7132a0c78a7e57c5fe19b0910d926b849e5ae4a33479ff0a3bf9692e75f281f6e53b92298e6de69db96ae581a1ce9a33993a2f8cfbbb1239027fb0157f7d702dfc9dbe76d5ca5dccd09c3dfa1c5d5fe704d17d01bf1b626dc6d33a8429c94da033559fb908f3b334d8d29d7355f1e7129f5341b67f9d6f33e87ea28cea25cb37c867a8f3bbfc7985eca7de34d1a97e4be8b7203918359db3fe618a743aec63bcfe713a3d34cfaa79d6a177d547fa3a23be451597bc7831856726c6387f48c544bfb8f6731629f6e3eee604c7260d8f6193400c2f18af1bf812de30bebc11a922c1e4bb1d890cdf45aa8465fb22c27daef281c9d409cf2852c200dfb5303dbb76c854735ddfb392f3d43d2b3d40f0e2de1a1e9029af6805d28dc8e6285bfddd06195ba77f93ca31bd9a73243b91ff4be2d8e6d28bc2bbf3833199a07626a3e4ebe3de32fd94593d19ff8d5d5f74cb6436221f5b9c19d85ad8cac9a98775e8a367611f7c1848eb72634d59b46e5d3e0005e7bb0817407283fa220b7a1fb2068389ce57aece813829d1f9c3ef3361908e730e2692e3f04e8ec6367c14900f8cf34d8505f6e7f7c2eb1fc5241f5dd5087ff05f3d0a7b3e4df80567409dc1b20c2f77f5233adb3a575e89f4f9900d26d89f4336815bc913e9b12caae49da215b45d4a9fcfab6bf5f159abfa0cadc13500bef2e633b4a63e672ebd848c5170523f1a6cc9e7946edeb5f2f61e37186dc4c9d9e58093a3d6b38a16bfa1efd3fddc7e3468ce077b4a6cad40e32eb13f89f7ad227e605ea8f6b9dae2fdd79cff2ed7542796dc9c83567d583dd7ef5e84b93fe07b5ac12cf79fbf9ec91a34e70137292b5ecbc5a1f5fe8d2e37a6a1c3e547d5863862b7e6a2659f7807e6e17b3679f36f6435d90f462787a408c94f64f8bb979c185b43fe505152391bd8775ba9b326d2a99b477af3a282aa75cace2dfd00fb6b6dd5b679531bf458ded8583e62595db4750bf2c1d32041f6e7a3f9f27ac3c4039e736427a03379edd6c2946a9adc74745db4cb1ebc1bf229ced817683f1b7fe781fe4878b4cf6faef1f3e7023fc6e3e7165bedc1775b7380cea081ce0fae09d0ba79bdb6de6ecdbff6440726fcd1b106b1279a844f996703699eb977fa85ae11a9f7fd3bf63d862c9113d5b8e09da691dbf2911b19b46ae44c8565da33199f4b62e0577c226f1eae3b3798c2f3c7eec5e999b77b7990bcfb118ea768483e8905ae4daee73539fb9259f50ca1732c7ac87e00bf048fa5bbb714e1e13c5ebc18dfabdaab8fc6b2b1c096f993f15472350f84b8c59955e9a7658fd25587260688e32a18cf50aff865442327fa5faceb69716d5e65a76698b7078fc3ac6a016c06c9cacc67ddd013935811e25f8a18dfe7b6ad3ed2a7944c606999007bd33fe07ef3ca9e423a6273b7970d92fbe8ea85f8ce276ccbeb39dacf07a81f4b2bbf6d755474febc38bc3e1baff7d729f9c275bb8fec2e82e953c8e42c958ad4d5b3151e3f1a637d2fb4a6e9748fb158d54370dc58f3239611d57e98e75e6f9ee8dcc0702c1974b5cde1cf56dc2447be16c634801afbb6bdc8f1670d3f1b9fed7bbb1fea0a21a634467b769dbbb64cdbdac40e69c9a0cce1723c6e180b3ad383fb73dac8a1cade9c5671aeca4e47329eeabb3842bc61f24fc4da164f4cb70e96aa9718519fa3b15c6859b420b5163647e6c5e8c8299be9e269e37d22ec5ed54f3fc7fe9e0c33873b257e34e5bb3d0c840fe8194e1079eed3de94cc8dbab5b8f86c537d2b792084e8df3bc67e3b460160d2cadd7a78a8c1572da82b283deedaaccda1c16fd15a676b077c638f9e4f645ca64a275e954e172fc632bc99fb7aff5632b939df55fdff03b9ab8afc59e3ccc15ae47bdefefebafa6f2d8efabb67e233d363b2bbbe9d3b2e2c7cdf65ef9b756fe3b077718bc93a864cb5fef767aba8dee5ceee807ce9d35e133cbeaa5fe0c11e02dff007dcaa8fdf3fc1767dab5ef12e2e558ffd419c2fe9e2fb7665c51ff21716098d27f4cc57a27181b18f5af1a70df03cd8c507d837642c4417229bfe0ebfc7e1c2c4e14e86057e5165d3e11e1734f7aad889491c20368bf114304ed7dce3706f5ad31b56e37b925afb38a77d074a964d9b31d67fc7f5de1dfdbc48fbe934ed37f14b61972db9fe5b8511a18a6dbdffe819edf31d9e3b7bead978fe0e4e73f6e03e60437911b6a514d178b8865e44cfe3333f23ce20af4adb0934868d7e9a06c2ee608a614261ad5ab56d63ad762e9770aed5dfc991ffdb8bf2831c0d33bf1c424e3fc0f73ccb13f3b6b10607b9de03ab1d8eafe07e4ed79ac46ae4d7f930e84b112a7ec1dadecae8bc0b157be9e223b5e6bf8a6177eb7db56aef8dffe87c61fede317b21bd262dd9a8a6e125b0e5e34c88cf550d1ec6bf26f576c2eeaa689d5a4cf8ac5d0fdb1a1f8e03fe747c0fec5aa38d773be2a9bac52a9e86f7e122365be320b5d884d3faff71f7275b8a3adffb307a41df41016a66324c513ab1a38799402a08289fc206bcfab3624700019a5955ffb37e937750ab4c088220dadd3ecfebb86e3a068aee0b35f19270a4d730ee74ac96bcfdd5e6850e65731c77f406d863dd5a18f479cc2c48ac83e2f4d73189fd86f839e0b67d8af1eecef23fe601186aedcbdb44a3d617d95b213ebe271774df3d0d4f6afc05bca90d56e6b8d88cb680a3a62497ab9617b79d333e2bc967b2308b2b8ec52e79f89b1b175a279b43ac648be386e5ffc2ab3bfecb9dbbdaa07d7621e038f00ef30df4cc5771d650fecfe79cf8525ed9cbf73e964e7faf823dbf8ded257a06e88e438e65ac073f63b1111f9289748c6ff7caefcee26e2ec35ef9e0ff701ff854e3485a9d17021f04f36aee1a1fc5661431eb26ce5ce8c5dbaf9424fdf5256fdf488c7c3f7f334b9385c927d1ac1845f220be7cdec3d4ffb7b3fcf1b4bf3dad07ca5e45e28c80ffcc69ce708cdddad8be06f8fec358f8792f4fed5ff69de580dbfc3947a29f034761ef827d24437a3cd84d995eb9b392de13c04c92ef89727a19bbff7fd3de6f723afedcdeca5292f40d622f1275281bfcdcd60623bdf1b1e19ce262286f815c07f3b93ddb71bc69e36ffbe1399bf61dc219d6cf2d7a5537259bb4b1f69d5cd9c3d644f2d52fdf281345507e0747346efdbdb8f11537f6dd1f721ccb30c93abcc91153060fb6ded4ead05692ac1395f2732bef3b1bf8b6fa39501c1f75b6982c8844e60cf175ad7ed6b3b3f4f6a740e28f9e53ad888ffabbb16be2f59a58c3412cf7b4de18f175e34c3ef6fd3cb1423bd98cf7e0632d9f23b9e1d8d4a5418e54768c44f0cd14411e16eb7c7cf5a5ec114a55fc65c31cdda16fda7073a47f310413b00c9249ba7357f74012271813a2403253b1cee7671273063e56f0eb8cf42d921f21cf1abdb7d927b00d10ef392057b6bf0b4deecdede34eb28f3b56dffd65fe716b1f7af52deb5a645a5de0a4bfd99c580768bf1d551f101f70d2dfe03c2239a45f59148739daaf43c0ca33dced59e5f4221c4d4bcfcd60be3a397ff58d29ecab8a1c1591743890b907f26b24b4f22b0b7c0292ca46c2b4894bb8ee4ecb03e84e2ef4e361e72e0f98c3a2ba798e9ef9c2f8a4096a86e39d943e7f524e6138cef5c26f64af6fe73fc1ae13e6fca0bf3a1ba831af9e7486c72550dab1534a05cdab5ac138dab82fa07f15ccd74dad7154b6bf97badfc71bd70bf7c238233582dc84ec52bb040f41313fb1fd8bced7c9ed13e471e68defd67e809f2f217a26e65822bfe790ab4cfaa497f3d3d7ed9af26dbe6e3bff1642c60ff2e39fdeff8f73943a1b7ef4a73d619e3cf93aa95ca2d73e8c9e5f99a1d7e102c953781fca16f2b6fb6d545735f1a9351b53cfa5c0518ef6944d1d67b0cfd4b09f831e0c7b0df0366d5fef29f08cfe86def7ea7efbee1fcba46fbdb60b69c3c5d5ee2badef585606be63eb850e3fe1d7dcb31e4fe22406bee331e53bfeb34d64d1cd27da6759ff84dfabffb08e5fc54a0ef2c3a09dcff9f7dfcc1f7380b543f088753a276d50b7f637dfdde988f14210216e78a87fab89ffbd9e3aefd94dfe95a7ab87cd3df0179075ca6743df50c7b3f1642bf815094ffcef3ffa7cd6b9d5ed3949cb67d58b6bf60daa2d8d9f29b7683b165cfb56f7959ecb6eb8e76beb44495ef4336573fa4b1ca66fe2f9683d1dc9b0ffb43e5adc9926be861e779b9607d0fa712899ec4f79b5745c2dc1d0793d0e9d0de3d97ef057634dce94814c778e8417f63093c76bf70586457f9fb2f98559a89170480c07e649e10b58ce55e4691c8e56992f4c99a046ebdb3a78f2aae12780e73d617af15dfd1c70db37243763cc97b62f297ecd1ffa117f7b2fd66450cfc0effa236652bb1f00570cd179179255ec5d3602fb8a11436ce396e32f90ab89c6a09f0baa3ee5c9197d6e1a9af327e2903ecd8fd4c41fed9c491a8c421c43cff1a56f5ec05682742a90334e48de031bc715704604e5bf4552d4be231e2381ede6ac794e16a32d92c5f69110af23e19ec09e833984901cd0f2f56c47dbf2692da62b467b65fb348b59245403fb2c7bf325ebad8b51f6ce0ea7329a1c339a1c31dadc665c2345b202d861d6d98ad1607f5c12fc19fee19b8589f62ed48718331ffb740665bb589b61f9e71844680f8c2ff88fba789e6d2e1e778ffef3dd7320078e3c574de97747ad8d6682edf819e4c190bc8daa39cfe19dcd1ea8c948b781f72401c7979af4422ec7dfd1ac77123bb3857abc9cbf0542d58b49c56de2afbec5e7905366c441ef9de20a306902ae8a40bfa3f4d57f7cb6e70326cf925c82ea55dc2a197f9223348c9da6c711dbc6ba7e919f743dfafb89cf8bbf36b14eb82ed4ce7bd9c5ade9b1d7abb3e7a3a2e742dfef36a3e6419f03ffc575c27b497d4b2f96fad83db3277122e669fb0d373f892f3a169b48c0fec860b4cad6294f38231a1fbf8ad7ccf3f566dd34cf37fe51f2371577de3cfb628dfc909fcc0fd685e039abdf4d5d2fd70bdcebd98430775a2f661bf8c0d8485abe29e67ce0675692c60f85715a7b72cfdbd7882175f53154d6a70bff34dfbe8b1930a7fcabf986f345063190a8ad4637ff6c494c087e6c139b318c9d827a7afefbc72bbf418739093a5b6fae34f64da544fa7e8b3d35daf2dfc63b2655ad49291f099ddd037005b11ff38afa762fdf13fabc528e9d7d353cb2d75e9e1d85b1a5491ffdbc7da38b370e8f547ee011e27dfaf91d2d3e5a7a7559fe16b9fa63e7e819e1f16963669e30757fc624aeb58cdf7bb88e4d53677bb643aef227256f2b4d6c02c987c171cb3f73f0b5b6fdef62e4fe889bace5dfc48f0cf282bb9cd2a8f6dce9dd77741a030364a29d51268a54c51e7781dce01df9d6eda00f1612c6b15af4f05da77930520ee8ecf738e008bcfaf5b41d0b45c2ed53c8b3610d9c803fb41ff2b80836aed5c53a7dd726c0d1c7fecd3099ec5d6e509fd5c41fa9b0374279a3823126f844ed9c35733e7de2fda362135f8c732f7ff85b1c05f41dd84fd66bbb95db39d253bebbb71052c815fcb65e8c41fbbaded1f7f716429783bf10e7579019e7fac6b42648ce2ada3ecaed2be45c5b2d37565bcf5fe4cdd2f3350db815c62410bc5c7132c6192957776417bec8a03eeeb0421c9bc1f2e8768809076b2a725a4cfcb4975b29474590ebb7a8fe611cda3293d8977431029b218d71d6e8790cda97696cf0575c9fef7be39e849288e63c07bc795c943df3e66ff9868b32383ee5de51e7e11fda26a88cefae18ab791fc194b346f63d04fe68a5c4d802552be387b90dd828af71dfec079c4fa35511e5367e9fb86243797a0b4fdb4493c610631ec990d75b68526fcc78c83d7eca999b64b81eac03ac890e0cb8c372f5b190b73cf01519551d8917c865db397af41de6f99a6bf3e56bad67e785794a785abec7642118594fd781f7ab6bf32392f83bcefd14913c83e61bc4128723fd1662f9346ef8f206cf665fd2aa8cd0bae25675c055a5978b8059e09b2c9255281cc7ee7797ab3639065286dae6ee1c9dd9cdee3cce25846bde5eaea87533e97ecf7bb83d05aad390ecc2e7626633833cc87287ca8969f1226fbe6c625c307690d5cb27073c911970b6c661d7d7efc4ded66110d179ebb30b03b9749258b7fba8cb525cc0cc3912268ce7aa27dfdd121e9e16fb6a1d707ad6cbf968f76ebc971b4e744572258e3358161b93e17d893fe23c6e9c67f2d3f90f7ceac027f7addd1df252a9be7ebd06e56d199ef4009d339193a5ae51e19c035c3ff14b2860abfddb7dd397ecd277d139d95b5fdddaa2df8773e62106e4db7d909a73fdbcadc6578cf70dd0cfdce5bb4ff922f6f21dcd5be02cd124eb5bccf03ea63035c77fc0bbf48d8ad124c83302db39f665e8480e667c63dadb0ff62ed3c4921bbee3f1dfeb100a9d870c6523199e85feda408c645a8627f6b671c6e5425678cf48ffc8ff10d43ddc8c361fa9c5141bf0d06e5c05de497332050f7296986cdce73feee1f6e298aa26c7fa25e7b0c80cf01c8a905533cf59f56497a19d7be87b1ef453cf2e3c906b7ef9c3761987629ddb3cc41f53efd4a52c351d9e0d4eff78565373464d7c7add3dc7b8beb2bdce3b4efc8590c25ef627f9eb3bf911e284887def4fb223603efe20876adfcbeb4d8cea1ff58a01de438bf1608fd43894a7993fa7cec1d9f9a0249762512b8740128fbbd1907be15f65f3e92394ece3cef10bdfd91ebc537a882046f13b597d4af8d4c243309a42bf6bc0b1d262a90e65ebb61f5ecade903fffecc3fe6e2fed625abf9753b1fe5bb1da777ee22779ffffbded4fef11a322902a3bc859e06218eefd64de219d1af0225ee8fb6738b78c2696fb0927f9358e38e45a5b57df8d8f816ca7bebd3a86395f06921a87c90b1c1de0380159ab17db82e4d316b725a90ae0dc903e281ca14bf6e512cc34c02153f8e5ec526fa48f0e776ca4fc5ed4d975e3f0419831650f6b551a179b237347e74e836fed7093e8ff85e7cc33ff85e70c70adea8df9f91e1eab98e217ac17755904473676466a4462061b6cc0ebc21cf34bb9fae8708a7afbf2bdc3fcca1e3a8d816510dc1d795b06185b96e067eb41903134d759b137e24c13cbe4f5d8a9518f6f57de0ecea5ec61e576ec8d7a3afe2f8cd1e0d17146e80c780b00574bbc87929d82ce4873e5e676ae49e39f6599a6fc0f65a00e67f2ddfc6eda9405181bec45de5e8bfd720eeb17e7834170878d2ade1bf163c0e9d98bd5c15c184cf26a9d917db45092eaaa0deda90ff69de810808d123e8aa0c100f721df03623c00cf1be7a16d13d7a85eea06ebdccad5fc9bb579c23c957f907fdf943c3b05395ffb06dbf8656e418ecbb6cf1a4a19ca2ad6c7e62dd60cd8445fe935384f147d3b70c70056dc70bfa2e75d17f7bbfc4572ee71de537d28d6279dd764957fe6dfd1998534a639af781f73eaf56c80b4dd65cdf5f05efafcb40ecd93d4e2d2953b9305dbd7d6556bcf4d218f327830f735f7f1111e2f37b4c6491c1b8595b80a0296d2c7db7cbd2ddfacdf0e9bd12a1d38275611ecf7f90ae901c03da0092a3a1319cfc9ae38c7ac97bb83d61d60044772a71fed64d4075530e49df88bbc997fe3e418f018d3f73459cdfc269eb8c377cdc21333cc2b3aeea4acf465157297291fe8f7f9be7f89671cd0eb12f0b0a8d890d32a6b384bdabdc15633ffeff99de971e9f040305770199c5e7202177be06f7cad432b27fbe11b5312e7b74dd62d2fedf8bcac01c7e4ba9879053a3383e450a36b1e5c0b0b4d5ef24132b92ea479a1c916bacfa2fbc10cdd9f179ad4dcbf179ae4a1fbcc5248cb1dbe7f5fd5cd1ada96e110d389c26d8c66ec4b3c504db2781cbf4ce2e991fc2a8dd1f97dddc85b8ced88f9750718a193888a73c8b4dc2f0259cfc2e4f09c1fdd6197623b8eabf30ba47fe5761a3948767fc113ffcaeeddb39d7f63df4eb32bc98b41eb9eb4778b71318d7b839d780bf26aa2c868eff3d1dca47030270f4d98d23ef45291f89ab4fddac3456b6425936536dcd3bcebe147f7b0e91a3943a8ea8d03f23dc96b88af8087627ebeefcceabae6522433d50e9745bd3d8ebd142ec4aef531edd0fee61b030e39e050056e33d45634874f302fcd4f6661541cf9cd2e8c6a02bfd15969b28192f3571d78c3944413d45b90628e2288b949ee49c04d44c0f3079d0efffd25650cfdbb29ebf5f242d0df7111487aed3b6354770a9c2427c0b6447fa33364de5d9b90981c35d2c40ffe8b8bb39d139da3199cbd684e1741a6df424129dbbf53f506dc2ce819392a7c593fafb33209501f72d9d594ec3ca2cb672ad8cc948ce5fbd863ca10ef23736af5e6e7fec377b709b5e733ce631a6927fd66bbd33b858d5fd065b413ec5b195ad70b1b70c1f798a7bde359588c288c98164f16e2400ac8adcfca3bdaa7000fe6cf65aba6ecde853d69bc31e2b4cf9917df70f96de92793233eb7aad273a70fc8617c5d2ea5cbe171eeb05817d2c7d533d2b32f54b996a37e5edd02a98a43197ca009c5a17d0eea49bc30e25493bcab67a0b9816420f10e7e1c2ebe45b55268d2b6d0e4103003907ca2c92d1fccdbf2f179d724ac5799cd9c3c823f956df42d93cc47785602393726655ecf35b348f646256e9c253ab3f3c6ef8c7d262ff6aa96671fe252701b92ead6fb1bc76fc4fd6b768af6fc4898a0f535deb9dbd23f028ec55577e32292e09914b885e8335afc40cf50e76f3542657c2943fb03f0a16a738befe5123d3e921db10d2bc762a489800bf6cd5aab361b97f2c5d8cb5fdeb130b5f992efc63885318e84eab230aaf5c6e8edd53cbd57eb262f2e84f44d372ab5b3b3c5a586ce4d8bcd02e7a378e6236ad7c4fd858d166262be9c2a739849b431943b606461ec96d261c625d2a734a9a4da7bbf2239dd74ec4b50a7e7278c8756a6fd7ce68b6ce3c1d58737526f8174a7d7fefa2fd6febab7f6cda7f6f7f712ce8e3441bd7f090a7c4f50035e4d6026d50dad676bc676eb4798b02167af7c87bd2d8c277ea6cef72e3c9fcb381e282b7dfbb2764d9c4b81dee719edfb62f43efbffe47d4c4273449a75bcd6b0ed0cbe9bda774eb0ef802f322d23d2b6c8a836da7c122d8c6afe7f32a790de2e55e85d3970578997b526f911edeb6de7969c5e77a7d57861c49c96cfbb7d5056608d0cff46edf08f45a64962eacfedab4ff916d6f9e1eab94cb9add3f26bc4945fb51a8779166b8e3d0ec14668a7cab1986927340fad5fdb7a5204c702f3ba49ed99fd6600de447766aff3b2a4f79d75f65936e7f43adb96f499bd4eb72539a3c13ee00286805752e7f64ff18c07af069c0088d9a7f018f7d498d630a6c3bfe50be10704bc861e8605d227d1d9e352fa0775bffc1281bf2889b82c8da44382f63c33f172eaecc93427be8579f686e5ff7bd2f86a086ed1bb6e4c861cdf7cf4b8645a3ee77597295f72c4d52a0b6715c4b6ad18e5d8e52661f93d45327bb534e79dfc7ffc1c609cce9f31fc0df51cc9fa3d7c9c6fda08dbf977a725d2ff4f1aa7dfbcd1f2e66399f7e24bf631e0d099333947125b6e389081eb9d235ea319932c46db323832d59a1b7fbc944367972bd2857da3e495c44732d1c361195e492e5990af6ebe64db569ad1b6a4f35017a0d645623ad9b5b11d633bd4f640da7a506ae5772494c9ba9e723b775544c267b2e0acdf0ab151633bb38f79bb1dfb1172e2c93700d71cfa19df9fdc8284bdec9c49e1e759e60bd3d477bd83ef4cb89dabde821ccbfca83f9bbaf0fbd58782d690308d7d492f60ede762a9487116c8d33c72ee87a8cd835a5e95130bb8fb61d2ea1ac40e1fc78b9952afeab4c9ed7b1039def4dd6d1999ecfbbe1fa75b36b86a5e8d65064d5a9e513f6c39f18ef624df509ef0d19bb2448f6391acb871ac329a31f7f568dbc3e08f84f2f7c25d02bfdb42b281cf98c87cf9c6983f6399bf880bdecbf7beaf06721c5bdf451b4fd0f95cf58fbdd08f370659e339cee267df8e519d3706ffe53c8aa966177bcf60df5cd9ba2fe7cbbb6657ec72369daf32fcff5a60c3c8fcbceb479ffc7fb840d9d497e0ff47489e598e7491fc9fa06744494fd1330aaa173d53a3faf0ffe499e37caca3f7a4cbfb12dea34aba859e59de97b3f9c595edf98a41efb1a5b5f909cfe8a93e43cfe8a92ec133962fe9a91efd7fe85b42cd18df353383366e8f11faffb19c7de2b63ea0adf572b692f07b3f99a5c8fca70a1fa5dfc90d03fb741c874c9fef43933f21ffd47f3cad1daecdd59495726754374d9a77fe196775f4dd291332104f9c79cee4b131617e677bf9fe801801b7fa58e11887c6861577b8a036c8d41b57f9f65e389ac61e67f1bb967f8d65c3916e871c15078471bd3b3b16f63790badbbc09ec6beedaf1f0703cfc9b6fdb8639636f1436138ed971d87b24672689dbe63dc2b1f4057b4c49ebd2071f70dcec3a18d98f40ce4c8cd331c9c234b64ceb7e68b18849ecbd22b5f6ed19e4f6414e667645728821ea2b53983e22777a07ae28066c8168cd8bbe443838ec3627f4108eec3be1a850be1cbdc6f13313d773d52be8873296ad9464f208a5aa888443a22039ef279ef611e41063fb94ec9d23e17ed78033644b386aeff1d240ff305e9ec39649331fb65c0cba31d6f3c5a3c7d9f748608f3b8cb9c12819533ab54acb1009e8b460bb56234d2c939dac5f8239da7b511de8fff63a13ceed2a72324e49eef86f81cd42d72ea2448d7ec8ebecf13422bd613dca02dfeebed137ee15fe463d58daccebefacb16d19c710e90d0f07d852c25c3cf95cfbf72394ec3298afcebeb3fa0d5c59247fec0f6d9ce0b306ce34587fcb04bdbf7ac5fff75d1be3c8d56f566e73beab02cfb292db63248fa233d7caed4730b26b8fb31f560e7d59a3f34313d41cb0b8ba6f80f9e7bb2ae75b62194a71ac64ccb73129488efab22f8c4b6cff11d2d1674aa998f3321208ff31ea5f615e614cbb7be23955198c2209ddb3b855ed3bf65591c4c79733392a92c846124ff0c1a6f89ba42afec23e6f26ccf932aca7addc88d7945d2b925ee06f406baafdbd453262e4aa99e14cdadfd47d03e95591646f03499c78b978dcd553c8b333731ee761625c9ff3ced153b4e60389bf85c2f41a30eccd97edd237a6d780e4e9416e9404582007c81975576a905745905b077406fb73fe1ac829faddf43ffa8dc70bfde656681f4b157995790e5bfac01b9431bec39a1ec7df7d43b986a369b973b7186fe55fe754fdcf73ead8ee53c93d09d05e266577324f2e91ab23d9a654a89cce7f9f2bcb1272095ece952a50f2551cca48cec5eb2d1845d740e2635f50a37fdccb981ff73258e3d5037d6798f3a3b086ef2abef2665d8bd77fff36ef87755005ca49bd452ce19917d407f0c3fffb77b1e4bbae91c42f835194852960f09f17c68bf792bc83c0646e0e7bbfac33e6ec70f3cb57c6141a17f6fc816e3de0ac13cbca055e1bfb8ecedb2df0121c063c3fca6bac0b6372f6dc559fa3cb88b385c94f1cce8ed698a3e97d21b5b1a7c5e601f9c585768278b037c555723539d4c08d4bfc296ae29d95fc03e460df2eefae5b7d2829f5b791a267126223cb9c871821b9dba4fe06ee72f91977baf906c0274373a6e57cfc410697ec8ffd13be33c85274bc07fabeab9a78602b0c122ca774b164f36a3d6ab8dd63da0743b8207ab6bf3772ed41780a93f5a9ade74ef81812c8b992ec18956f6d6fd09f31cc11c03d387ec44132893d6e9585b2fed836cf9c1afcfcf94549e6fcc688198c573b9c6f9347206547df38dcb59955604e1ea41793e7dc6db1e63a9f7817ff2af2fb16bfa3aa0731ae850ff80c54df0cfa71e1b67d752573a5f8223c14cb47d17107999723703acfe877cf611e34bc152bb3e38dd8b9abb5678dcfbe91927effe4babe9d16488e31814ba9fa589a936c4fb511e249a431929feb8581f1bff0be9396e1a9fae8e653fa3d97a421a64dee8d4ff26e14678bf15d85f8aec95bc008d80913885147fbc3868b607f50cccfb7853c6d7ea37da858b80cfa9676cc61ee1d792a7e94c6c4476bb3c09c60f3fe754d5000db6b6116c56bd99c671c2e7d92cb1b9b277eefc703cdb99d81e7be9a7889722caeeb24067c7ccfd59930cf1274c640fc8851d52fafbb68ff5c655ae71bbc420e0691e7b754f9856415eb24be6ecc25bf3199f3aedb5bd0fa6736d01e2f277848d74dad24eb04beb50ca19f067d614d4c1c575b5dbfed2be0394c8bbda1c2ba0a4edb4beb1790c472e74457aca7b3099a9b81945d7d631a87b998ec9ce50572d98d29758f7deca42c8f84e9d1733fa9ba56e5cefdbc8492c8ec84e93190b2bbe6aa6c205907f0f18c94cb0e6c95ea3de0aa98e87ae8ccbb85095b60aef0e92d90705c8ae610fff269d93e8fc6d3cfb312c71fc2734dce25e824bec4a377c4e81bbd5c7cf80e967d9a3824cd417d70398539cf06f9f680ea0a04f6164ae271e7ea1345f28b40ba5fc213c8553992b57c8125ef6affa6cbdfd0bbfc5cbcec9caafd3be4b237789e9b309a0b67f8c573f4ff2277c5b465463a5ae7c79dd096c3fa12b9dfdaf3dafb11f6830ad3532067f79dc042fe9d2245e5973b3d6b0e5f43ec7fdb7f3ddbe7c1e7aa49281d2ec14885bc0192ef708972bb8ea4ec88caec24bedeb967d4564e730feddff00c975de19ac3c63e675d9a58158c43596511c402b00fe81b7c0de605e4ff3aab5b003e75360ef30b2a97a1fe0f1cb1de7176ad396ce10bd38be7aabf7d57b99058aa035a3f21965f2fa1c43f762e8913a2ae23bddae32e579055e5698ce618ea0b88a391a77190f30fdf602a459edef0fc532e24a6eba134f9b7e0abc37330382139388e4369f08df28a09469f1732170f104b45cf059cfbf9dbc771bcaccf1d7a6dc6f6e24b164931d2d74f3b0162378f3b6e9285a325dc0fb84ba6397a0cef87f8008831b9ed38ebe24be26327f1b90f3a6e771dd6a4b38ac3a76b808b48d5cb16a08b49d965e76ea9eb3cdabf8a08e905cd3517fbd01559cfbee4edc573264734179abfc1fe3c529b35ccf86ecc682edd97389ee2d5d84578bd963b679269ae7e86d8b5dc7e84f04c06766dcd510b5f4a51d9c2e3f8d437d81a63b0431926acd93b8ca3c31ca2848d03797af61c3543f35891bd0bc6b78776709a93a5bec39fc25cbcefc8fdc011999d645f00ff91134b45f633e01b4cd8cccfd1efed01d685c0c6beec5dbe8c29d29118bcc6a22248d8317a263c6da9b5911e228eaf7d815a0398130eed4d97c041df311d074e750d1fc5188dd1ae9e8e3587c43708ffa45bb5360574768690c3699d03a3da2fcc0bc8b3adde255925d6332aa6c18b463a013a8ff7386e0db7e551c4de486731be468cc6e7f73a176becffb40e5f121acbf20de9bff01df819e0806acb9ff42292aa8cfa1b9d6d89765add0329631682725092f4471da6890f04de2f775aa2b3752131a55ba748bfc928fd26d36673a2df109bccec7cd346d128aa27a3653db98579785b9ae9646df0a4bf95feb78b65f225b1e53a57414685be70ee6f019a3fa07fc5976056c078423cca8f7a51c7a310e6f63d8067e28b267e14dfdb7cb6a592c74c247fbe69353f8a46e1357a109f0f1baf4ce1a35a9be958e32631f846a0cee76f88243131605d1dc0a615e6fc23649ab9facffa5cf54ffa9c514db4131e6f0362099bf1392478ce5c9430b7732521f576f3ed4caeffc3d86139127d7338528ff8591c0ba8e462a38f60db5dce4e9b1cec7fb67d197f61a7807fd88f8873b60e3ce402b12b71cbaaa22df2aa99e9a2954ea6a6b8daeb737e6fa6bce5b2b6a9dbfcc6ca78df64edbdcd644b53e405dde625c356455da8461bd3bb2fcdcf8736b7f8d5f1b35acebcd27a30dc12e2ffaa0db93fd6e64b7cdfdc96e611df5f1b958aefcfef9a5492fb4a69cde07eb5ac2b0bdf57eeda7c4bee5ba549eeaf926a45ee579aa8e0fbc743b935e17ebd36aafff0fde55d9b7bf8fe63fecc81dcf725351cf6b99ab55cf17930529a7523501cf2e8fa7bf4608585a09238e749d6f88e94242d75b377ef1e8c54ecdf352a73632967e584fda75aeed79e13b5cf99fd3a1b9cc63dde9b9502f5e736392421f6615e5b79d355128879a1eb3e35b18436f07519fd36617bad1bc37b77fdf7b6f145ee08e66ea1899ffdf78ed05ab7af684f5a1895d57fef8a0d47d32c38ad3297ab8a70b44d704c04fddd100f81ae2ffbd7abf8eb94a2ebabfe75b50cb8d56fd4d65e3bc01e086d30fae5f9bbe78aac6f4c0a1f6237e6bdf6fb929d444eb48f64246fdb5dff4ae75eb980f3f3b0b1bfa2713df6faa9f49d28f646d97e2765a90f38cb198fd7dab9b48fcc802f99b28188cd5cf2726b945dbc9c2fb53c43ba471c497cddf3c58be9ab9855f097eee57bd2e0ce60fb4197d7b5c139ca4f39fa5d9998d9d85eae9ef4c0ced88fbdac074a3afddcb93ae026062325718df45734c3b11c3d1b9668757895544cd7579231e109f287ea60d4c5c02edc969bf94ac9068075ea39abdfda09c99ecc79614c2eb8dce1e64ae3b3229ccf9ebb3d2ccc8f4243e7eb91055ef0c646a59cda58f5c495c6c96274fe1dc9d81fa53f9878d9f7db553d3e7457ffd8cfc32ec73851dee199591b5b497ceb933b3a2f3d57cdac918ef4332bccc5a36f5efe709f6d3000311736d864ac0272025fe476416eddbce1c9cfa878c89739fe032e6d8271252f134dbe3c7c773b8cfd1dc40b1c700caea0de883f74303f5b4eeb5ccdbee1b7762f30d6df70889f7da30a5c23e33d4e04ded6c8683973f9c8655bbef25eceaa10339a78893037ba5d869c4dface22369d43b1775618c35bb68aaf11d4c5b43620a39f1fdbabe3451fd36d0b8f2cbb77b7808f4d5f87390e98b85eaeb4b8578378050372548fbbba1733536c5c0bf2413daeec64e7ac82bd247810ae3e98ff8dfca98601da6fa539bfeb62292e4ba37a6c9c2e774d33e7ef4bf3ce7b86972f67773eacbd7c675f62d798f390cfc632ef0b7779d14c1cf3bd7ecc3f36ce3c578f9f1f1b77f9ee19cc45939717cdc80a1f72be448cebca5e1e2ef9e625d4257eec678003f75838fa0dcfe1f94533eef74dc25cc251f531786fb79ee03b2f5037ad0328c9348e041c238fe42345121945508abd1b9d774e952d66bdb6166b0ef6dbdf7b97e5fd3cbb7a4e557eb91719b070c958622c05c00530611c58bd4672f9c699f02d27b8bce5a319cf681d2eee1ae303558c96135ea2442936ac85b14d12b517fbe2601ef496871870039cb0b5a3d27651db00de4f98838ddd74697a9d4d55b4ce4a4acebad6e63a7f50b6537b21a866e4aeeebe3381b8e7ae9eb45f4fd69db790d72e50656705a9bbb1817f56743ba3195b01ef27de43e26567c7ad96df966b733e41d66ddf75a4ece6f2960fbb3eb8223902f4eda4ff0eea7b998d3b873e85780c617e5f9897d687d99553927d9f4bdd6d71935ee48992b3f24fb25f2f47fdfbf9617fece9fabedb0b848cea377abeb43cd566f73daa14e6e289e05e35f745eafeb6911d9b7ede76f6fac4a2e4bfe6be49df27318026966f9afab754fdf41c6bee5b2fef5b5896db3b9007f3fadc90b745388a0abc3f6fafaaa037fdd2ae13a39b57e757b85d4a8ae33abe6424379609e43d9d2056ab568e64adccc76fd4babeba5cfb4c87476c913113d41925ebfe5612f0af713b07cdc7f69b7faf4f3dfd18ec6a743ed1c6b19eeb96ac6bd0b43b51ca57dfb3109404edadbef991b47caae87c4d0e24ce304dd6892ad131fd4ad2ac91e99c5a236eb706dbfbabe1fd6eadb56596eb1cec15fb501227d8375c817fcae5b2ebcedd92f3b157cf19b0309ab31670d158bebfaeaadefe680cf7476a4e7cbdf0b1119fdc3572d804e66f8ecbb4f2ec91ec5ddd3a6b9ee9f916e93de4a5ef2c51f99eec3a2f87761c98a3dd5863df5d90f3a90fe36c156ae225049f12cf7761c2044c758bb8cec78bfdac38aec5cbf931e66e86f9577b8e5e04789fc816bdfdeb33c5360e346e3806ca069de4928527c0257abedec36aead9da34f06fd13109c7731b5fa349632a3f3ecaa2793fde4d97ec8737528b50d66f611233432c91bebc09784ef5c65092c5480f7c9b2132f5f6ba93c4473fc73d253eb5210e2ced131ea3fbdfe66b0480b9b2fd531924f736fa7a0138e09ccde01867b8d7e9503fcbd6e067fd427b4aee17fe88e4ca9b80df787a215b77fed0369f1e62e68abd513dc9e2a0cb1d9944492ea86d8daf92e4c66db15cfe57edb3d1da41ba5a12002ff1240b4ef605e9905e5e657b23c5b85fe29fb824555ec3d8c4dfe4c22abc9228bf01bf06f2b341b6fa8d63f807b811c2648fe79b0d3ad08eb36b9cb7702f5b3c2119cd179647f21cc63fea9de7bb0e075164fafefe6e7f7e5e1380eb12fb7dbf789b238771b109eeba9096d0ff140e24f04fc90a6fd431b330918c88d7b1ef6c7f2927a4ef00df48ee39153a27df5abe3c232d1780339636f10a67c0f7efb8e2988581ed70f45e69612cc9672c9aa17e0e9c50cf78352ff1eb663cf5bb6874cf82e677c33e75acb7f5b8d59c15b373fd2e374206fccc24e0f4497706f4f03b0187d697b3c1de7a7eca4fa4fa92b261a46788ad35aaf7360674de96a3b8f906dc4666fb5d6d6e7557b67b1edb40e77c70e4afeb139a2f0463d25509be7fc7b3b7c53c86992f33fd381d596786dce34d4c824fe56510fcfb5f4aa2bcbdb85e369c308ad9eb8b5fbe3169f7e9756e5d5ff4c37b706495368ec369f1ea7f75b8f40570d96819dfe065d404ab1c72130986751b4bbb3e29cf78d7f9b8447a7d24abb740aa327f764e08b763128c70de8a4f6210f6f23d097331dd391fbdeb1bae6ba3d7f427b11bc177377c55fdb59eb558e1cdf3469cf5ea10d25ccd957324dc93ee9a52fa242ead87cd70da3673afad77dde4415a8773db67065affa84da09b74b14b68be246982f6502f47b2265a8bcaaf05e670b8e2f80b86e22ab13ff672cb5b126f9c7181b9dd9ab1813d9ec43d90f8669381bd3448d07ed33e4baea5ef3eec2f53d817c2919d044ec6e077aa2047f82ec40fa3f650f13e538257ff4d4c87a092ef467aa1f5f27c569af625e9af9d8bfb91f44f1924299ad72f62d30ec953fc7682c62b23eb86e87273e8fbe1ba281a5fcda6bf2e7235efe6d28b3501bc77140e4a3bb737c63ca6dfd3aeebc1de1b927902b952d826f7873ec940ce7f5966c8bd662805c505d59b638a418d29ece10a92679a31052cc9bd5c35fb5bbca1d68d9af86d0c1a358f5b3d77cde13904e72fc1e30ab38eafa1c1b227b9b4d7bd5c65448e6d795fe9f908f89ac2d398f1be8be634c4b7e1dc62883b4ac99880ac8cda01fc332fc68e570cf1d55ed5f16174654b05e32b10be448ce58cd6583f96b2996bd575e196fdb5eb58b99a814de11671932c4c29fc4113ced98fbdd0c479e198a8e17cc6f2edcfe747cb1bfbdc5ff186ec01e41b9efa93acfbc137f1edb943db537646fc4ee73b36e7de1e64f1fbc0a64ceb057d59274c26b32e4f9bf23bcadb67aef4665f76313fc7e2c132c4a79a41fc5ebe3aef9c2a45faf2a29d07ddb58d63159aacf773c8dced53ec6834831cf33bb4fdb4846ff749ce5a875991f2cbd9a5d848e30ec30be351644eada4a89f1d2e8b5c136cf8f05c7064ee6b6efc817d35382f0de387a4fc777b9a2a28bf23f17275a9f382fcddf13609737ee3e0ef75b8494473f66c9cb4d024e08aefee77fb84d9d63163b05c88f67cb76d2f9a2f0ad2b7010705cea5167f83a1f2238b455de2fd4bd6839dcdb46b17c77b76721aea935efb8cf95d932197fe1cc239849fefe67ebfecc248df9bf311f4d9b63cc1d672601d651b17ae177ba78d3bcd5a7978f0cd7d396bc5d07e99e65d682f87981a57bd45eeaafcb25780afd8e502bdca814cab1e0e1925673ecb8bdfcb96f43afbeb7dd51dca8ff693fcd8c96d10b3dbee3d04c396f0ccb6ef2e7d381b87674cd5c855ed738d9cd56234363e0e697e5e9bc0f584cabde4aa257a48bc98cdff8774e6666d2d8c97fdfb80f97064afce631aed1d3447d9f61cc7f8c2680e03a674b6775fec9d26fbfeccb972380366536f1fac9efacf10e2f64c04fb83f55ab668f1999d71ae2687665d5d1743aeb9a4e35245674b1b234bcb1e2dc793ffccb50a7e8ff1502621f389bd026f3199cf2191f95e9f31cae00cc0b1ca74cc4e24d9e368dee4bc6ddf7d13cba27f7136e56a426c908697776b79f8fd569b9f1bcd983fc6bc402e9aa0943b79cb7f1b23f450eecbd9e72d1cf927e5d8f3c5a6d1933fa58ddd7f447948d9f570def93af9b845a368a49dc28796f3b55f7fd4cbd9e75d1bad38bf6eecb8eac573f5b372ec6ce03f7e87c0af50798d61e3488a57a6a074fae8ec2feb68fb62606794a7cfe778eba3803ce5efbeab5a9be9441bc5903b4f748e5f3eb6c9befd5d5fc333602f0b466ab673a2abd9da554136faf57d3df3c9da4c6f5f52cc04ce3d599f741cd320458c26fb8c2667ccc688b968c6bec6c892895c48e2ce6d5b55218e5d866f2ea8fccf64e78c0f919001af72bbafcfd86ccd61bf2df85285f814cdd85324571f14b6f60fd87269d1af8f4936f28af31fe364c1353ab4bdf19343a19df49b4538801642fa5b39dea1ff368982f6de53244cf29dab3e900c8b641a8c1b9fd5e148c732d4ac2c200ed0616f516ee36b48f7ccfd223cad900e52045283eb79004ceb5e7d754630b3ecab4fae013e2afd0ec089bdff64035a598c780f052f37edd534943fafbe1b671e6b5f434ecc7d0b73a6e99d0cf6ebbb3c9ebf7cfe07ac1abf99f38061b13ef9437eb04ba7f3e378081aaba8dfb7f86c43ba0fd1554acf6dfb34578f4b9075b47c72f325dbeae707619d788164c59c4f7d9bdee39ef652de2739ccee68cb7f71e275e7b03876386d6272d0ef156037611e1cf516022f5276f19c28c3b87ff6cb7b16e08e627e1c2fc771df06c4a8db045b1fecca49308aa540b2c74d1d5f73bff4dd580e739e0dbb329b30d78b20174b7d84e4a24fc2dfc39791c35eb71c605ef7ae850f7836efea6eeb1d517f6f83d10a9dc91cb17343798b8b6b8893edcaad7de03eea9733476aeabb0abcd71fa9853f176bdf99777f8bea2dc2ed388579965a393fd29d498aeb8dea9da31bc128324349bc0eaf41cedfac7b764bbe8b2a370bb88a0d9c8918e45baa0dab5b20db972083fcc157d719cf55c998f9682eb8be939d7632ae0362d4ad55e939ec1d97a9d0da537a65200f3f63be705fe0713f92dfa7e9d973260f7856d6632f833c0bcc0bc56569308ac8bd4205dc61fc8d6f01c75f489b8a40aa364dfc7e330601c7a766ffbdc013f1740d62ededb9e7aece1ec61bc51c4d24865ea7e3f567bd67563806ac2a0227c3fd03b903fc6fdf6a63f17b75d918e3e60d38a62495d9d865627376b2e308fe9ebb4c34415d05a333fa7fa3644c2f8ff24ba66c3214f65c2357eee53bed3becf97d88ef15f3b3d74ab2ce27e89c69fd8aca30f710dbf3b2bd5ced23e165ce25b330bcdc1de9412432bf1690cb65156d8c9a59648b5abd7f09fdf89068d4da1f699cc5039c7148bf25584e5a1303f63adff3baa0e2a430efcc98c27a3e249ac12480c9e8c68059ebdb4837adea8559267e5edd3ce2a3041ba334e6957cf50819346f4488f56cf3b4c4cef7b7803cbcf40df45c932df66e8793b1e3ec4958c7fb48f8392ede3b6d7fe46540bacc0262c8e2384c456631fb2c5e6094fd86b857a7e5013d2f81230c7c8c3c1e930e1f09fa696e331b273d7f01a7a75d44920deb676f54ef9eab661e5e0f901f46f6d69a7099dd023cefb3c051331fff3e93f55b040ee6466b7809e137674f7ccebe76fb4189f701c766c87bee9eabc6015983184f80ac79f0559564fde336ec8d3ebeb0d5cd2174f635ff8b1160497939ed0be8f4c4491397426ca63f626e14af74c4a5b91c015788d9d727b55c072e4a3883b86a62613e86abefaa8a3d679743fdb3670f7af19ed5f1b36838c8be895bfde33bf7f23d5e08eadee5b07c8ad6d79f6d0569318c49f58c03b7841887acd7afe1489f04c0e1d3c5b8f4f790b6cceb3a93b418f839363d9947602a22cf7478f3827241726b2b477d135b041c1b8f973a531ce4935b9b5be7c648376be2259a5cc47b98f3f9cea9b236b6226ff3038fbed196c7f97c8e1f7b9c75813c8697e55936ccd3366ec3cff96b24b039e49a3a2dc7fccb3ab1ddb8bd77d9b9ab07cec3c3b98294fe162f5fc681cdef833e9e117db28b2d823d578fc33cca883ff311e6ab16e3692fb77c54808b189ed42c1c4d6f01c857911d721d1e14d86fc146f973b98581f17d2261720d383d038c5f931f7216bd3531cae669dbd8f8d468c612ccbc0b437ce6fdbd01cec8ce5eba83732a7b8e6debafa775f4d24ea68c97428b1586639ec0166f03e7d19ab3301fb33329908caecd816bb957466b6391aa0cedc7fdf8701ddb2f988cd97017f8a79da66c0873367ddb8d30dfd63acd988ddbb70febf2b6e15057db381d79cb1bee16e964bf23ac17fc8e666cd76722e8da055a6338fe76cb03f7138583b01e6d7f2fea6c1b0971065c5f2edb7baf296f9f700351d9417cc28aace592704ff67ce20bea7abf3f5406e949c4be328d66ec3212aaff089f9b04fff7f52421120e8dfd1ded016a2410db0dc80417662fdfcfd6697b5e18d51c951db4f3ed8987f9698ca998c9becd18fab4c30c4773605c0ccad74fe5b9311f6697cc352fccfad4e20da0fe247b47c3c15052b15e0dae7a876142dd9b07233b6971dbbbf8af5b90eab708781d30ee3a85594795c13c083ae641787d3d7df9de153a3b7d0be9f4df5db7679e3bc55839eddec85f4d079d59b61d0acfefb3dde94fcf108c5ee56d212bbce2525c5dce16b037c22383cebd247275a6c927819866a1c1c6a83e14c2cd4ee248901c4c6cef4d9c66f5a1409c24da17ed98d8898a8551311b43ac9b586b45ded276306663cc2b3827e5d7b1b54132e038eaef412f6581e57159a17544c5801534966970c27ba47ddaf28a89f3b7fc26bf04ed0922da3b2efc9af93156ca07feef3f7121b23efac63bc45efd25dfa192547e24a07f69d9e015fec43386fa3d1c6d134dcc18f48fca89e1d03e87bf53eced4976cf5756159af4517a46f5d0e4765d971b0bdbf2079c2f046784c4a349341fc5fdb130710c1085cd7ed5a43b15efb96cf1ec026ed29c1b47b46762993b8239a1c9627356958e0ce354daa3f64c53a219fbde3e7f2c86fe4919f63da1aad079b677fb3aa131fae1db99e7f7dbeef6eab9d37b20a76743de96341ee830e692c80a5d8eb234e6c9b9c268b958124c30c637329c3fc159d7d6d75e6710a3d2f9de498e09d82df5dbd7e333de98cc79697ed62bc2b708b9d292780a6b8c2d423f0f6b8ffabbcd838058c0668ffd7c34f1369e13fe6af075fb674cc1b4b173b3792387e01c05ea9c0f1cfb1270d99befe8c41f43fba2b08fa0c38e6188dc43f7498a6583577501775ee7ffa3ce08f063ede42c0d511d8efe632cb1e576b28e0ae732c4d731af7597c378318805324eddf38a1133dff178028eb95331beab5e813b1bc71d66b45e03fbac64f1a41ddfe84fa80db4dfd18a310703cec18b64b6c7bd1001cf82f5beae3bfc27e042c27bdf004f292d3cc86b2c49d90f7e674c62c01ec9277144c73041f98f018e12730e8f6ca1b5b2735a7ca1b3fa78811cd09d33617d97859cc7dd88857ca0468f033b42c3abd2e001e3f71f898df686be01deff005b45773e8822b390d24293b7dd7d5779be2f59efc183bd69a755e1011e43c4bfd0abaaf50c641c1897ee5b208ea65b4bce98df010ecec73bed57c732e412f6a7c864dbef5b8f5afe5016db4cb2f7f0017bd275e3409cd8adcd3f82f3cf22b2cfe581fde80a7adf15bd0f8fd1858f4c96a5bf05c7452f5bccdc8df34174f7ed7b64363efcc66f4fea95c67c50039e4f5b2fc8fd26eec3afd112308b50fb50d99d7969c68f859c332e4bc07e392278c1f52b1d603e5e1ba0abe23eedad71e8d757fa6db5363fc9381c009f2848f01ef3ed98d1677a0279728c8ff99c3bae1b6ce7fa15cd8a6c0f7a4dfa2467f4b0a8dded7b33ef5626f8b3ae91249ef6f29da3f649aa0e8b7031b673b9b555b473e9c8669a64f17e37b781eb9bf829400f5f38782e34fe1cc5a1fafa513671cb595be7a9fa807c29fcfdb88e27b919de49ca4cd0efc7ce01fc9153af6ded9caff0f9d38df18f7b692459afec92e86ce8ed21945fb8591359233382af995edbe627d8f3baef643b7d9df8527cc72a83dc2ac3dc2a77e83767c1faf31c8b7758a60cb936be057ce558f745df86cf738f6b7880d83814aadc27b81aa623de3529ce36f625d2243ddb18ea05e47247bf45dcf81060799a0d8529138cece34e5a011f67d0fe6d5ffde6b78c7d008a24b25f2de7a49e04cdef1693473d02dfa8733f84128fb1a072fcbef6ef937d5724bdf69c08b0837c598dfd5153bf5e07a3cf03e16e245833132837b846300ea7bf7d177c045745ba645feeb4c65897e8377a0f91f301ef465783d3948d84e931184d278ab442bfef9ebb6200870a74a7e91163ce00d615f67f49483602dccd870f783b4d6c621f0fb7978b2e4fb33ef671e7fbfbe2708ebeefe89be05800c774d0c8c1c06f57649ad47083835c7cd1f32af647cbb7a5e97f044985cee08ef37b56149a4cec37739af76bf9e68cd46860ff39f946a3ef76b8809deee9dfbc91fdd83963da5e758cdcd52d72b7c9fab46ae6dd7b73d612fd0de3d712dea1f65934b65c9579ae8f74b976fe366745832948e622d217eb4ee7c3fa6030427a5a517ef76c37cf788e7e37759dc5f635885581dc8a85645ddbfb69962e9a73e1d1f443748be839fda48f56b770a4df032e039e068fd2abfdfc87f70c6c29516e0d65f7177e1dbcb7406c273deeb0077dfc82bc0ac93ad338db8b36f6e9594e05ae5123ce200e319f00961d92ad17e6f91c090dfffb6a027a9ce5979e133df633b6d6480e18e600d7671d179bfaa064d9424dbccb929c3514f7266038fac6e41eb9486f027967100796653d99d32a6a88b5453a1967337d9b3bfaae2ede49c5311fbdb838b40f437e36c1e8c3380a7aecd7e993dce79bec2e12e26bef3c95b7572faf6e101b3de7af80fd0d3171d302d6505ec55887ce6e619e315fc67dc8a972d34e36ce6bcfabcc1da96c9045e8fca79e89017f64e7f0f5ced527da0bde9305e6c6c1ff204fdf3ac0773d48ec6e3eeedb1bf37882d65d2451bcf0248e117255241ee2c04d6ecce33ac620136cb8613dd45e9266573fff20f922193fac07aecbbd7de6e2b7b93bdd980d9ea3cec9f9506e69c77d0bfbb05804b95d878ff2deb355d654cc1baca5491a702cb145607e91efe6b426d9c152044ef9c1ba7a9e474f3c78dd3abad2eb487b9a33e312be0dc92a80b578a074d5f9bdaf97f25917a37dc1fd677879904c52dfa9b208d6f8806722b75abe3a2237bc2f67554cf34b50fcdb31e0d89a3f8f491bcb4c74da1dcc75eacc4ad2424dfc0cdad7c9d394ccf4fd3eb17e7c7ebc6a5b706417784d0dce42a3621abefbc15958624c5e9c730e7116e4b9e13e817495a7f97a6cdb9d692724dffacc42c8dabc25d077a97154133fee8d6117bbfb805841c73a871ce4bf9e3b79ad8b69dcb8101789c694257681f62ca4f76af0a7e56cb690aa0c63bdb6725ea149ab8cc6ff7239abd024ffe95a7f4f8db3363674d0074d1ceacbb52c5437c87590f80ceb591fd708f3cb278164ef436e75f61d9d0d247be639c08b7bdcd5717fbf6326e0db0a446a7f93d40c304c7b6d8cf0bedfe3d581b94ec54bc5687d959190817e3798e3c5d708dd1733e0f3eaf8a1c9dc22fc390eb56f70e3df8bba8b1ff0304fe67b983cf511f8b486d79b7d70efc07bdaf10b392b574fa8cf5719706275e7228be6c917d231604fa2e68653a1b931f68d18ad7d666154479fc639939ec7d937d2b289d9df49c3ef4acfe1913de37887b4bf1fc17a871ccec13e85e758a3af2d67d599eadf26d708ced100ea063cec5e1deb3a9bf89807b3c3e6edf75baee6716fbdf5fc598e35cc897cdfd33a71767981e3964558a77dc6b7736ad5f51df5f7cedd268b911e6d0c75d4fecd5965909589e9f06f4a72615c93413228fa9d69d204db6ec555b6712f71906717afd343de503b95948a7d4b94b2f7778af426a5d024ea5a4ec5c71d0bd1370ec9d69914805f097e807bef6f83604be17b69e951f708a6ea9fdb41e2b6d0f391acc6c169457893ecab3fc36db0e9ebe8f90ce9659346c712837c9b2c5ca634390b385eb6f8ff9efdd9cc3b8c2b93c3fc4554fe38f81089bdd0f4ed0be31a3ddc0fac031bd57563af4859585319d2dd1409cb7041f20de63bc894d32248a6332aa7f940dac107d8cfd6bd4f6673b49ed177fc658c6c13c3301c63386b943cbbb65c4923b45fea5920d9489f347d63329c3b577a1cb5efcb02be2bc1f5fddb67883e4c5f1b179aa05a612e5e432e83e775c0cbdde278e2963baa6ae48b83c559d7a7b9224c18ba8e06f7df702c1e8dbd92d3f3bc99fb976c634db285a07ef75dc9c2a8b6bec9aed13c7c31bf012fafb9ffdc26a5d0e67a46b01e579efb599a52cf0eb2f2810b574c82910ab1759ea3de50bdda3ccbb47ebb609ea3360faeab747b35713abc8f632e81a7661507a769e9b929e0767ace0478403067ae78c51c1e2d9e70af8cdde208a37ad03cc5fde07131c4f7a03a7cb969c76446ec13a88e2c70a7cccec19c1abec3de2329c33c1a395a9fea2494f56fff063e42780ec997c0df92619b27dc079b3ddce778a6d3a57b1c1aa760a46f1b1d98e64343fab187eb2c034ec49c1f121fa377fa92c8786d193df3e7c007d096f51dfde2bb7afc5c8ecd22494c3d578fdbfa1abb54f3b7d8fbfbf152876fee89edbd197d0fc6cac9086e2ce01b01f72de6b3e14fc0a984efd50117617b137a8eb3b31dd73cb7ca7ce7d23c87d6661990fe46f31bf2c731df09c6a4cab7b81cc610827291945d7cd7be63de185416b873ed50825cd0441375341f7b6b536f9ee544c2418b9e8b62825d9cb8fdd809a3b505f5e5a557b980fc32a170e920cfaf2a36ae1e044959219d6263a8e80cf9bd9032a457a133d9863cb0f64cbe143d2e55a35a620c88ed394c0027654efd8dee970b292d9d910a31288bd96719d41336002c38b5f46dfe1a8cc2622134f18d62b6310fbdb369479d4d4b246b19874a3d6d0bcab63cf54da65a1977cc0531233ec9c467683c88ad63f14b735b2e317ec61dc97a8bd9368f04ca5e00ef9f3fb4d9b6c5cc591eb77934ebce9f25b61bff5ae0b235e4de1fc93b1f0aaaafb95769b365bd30cff85da82e33ad51db37750c6d5e2259a9b93f53d8156ab3f971466d5d1bf77a657a6dddbec93c56e681a19e1fd3ef5ecd3e27f4f3abface2c672947bf7f359b8f57c779b5a4cb25541b5099a332599a5b7675fca4bec52a7d237d5b1dc36a393b8c57d027e479e1cead1ef3fb7a76e05642fad68cd1f2b1ad9766385a1e0f543dcb72692e99e5713e5a3d9431fddef5ec935d3e3eb9e5c31b53dfd8ef5ff373b47c84ccd23cd42ba1fb86a571af96b3f0b17a6cabf54c013b18f4a15031835821a9b39d52b14248f6466b8d017bd083cca361ac106acfbd8d15323fcb9dc920bd0ae9cad9973c45f32835d1deee2e4b0ff0c09bbd01ed7db86e4d06eee7fbce999c7c475f7ace240b1fdd9c0ceaacde381fe5ce64f1bc36b16f4691bab91d3c18aa7fc31cfc9cb85decc6f9c8f7f9fc1dc6c1b57e2d6485873564a4b84ea319a3f8a11ed91be8a8a44c58376548aeaef149c6e7830f12ff7f9e91b6f505f5a03e778974e27ae314d9425e02f7ea16f213dbbea4e2a83eef705d56f820f1ce8bd9e7ffd0efe5637ed139eb1c2669b1797cbe2dcdfb4798a41f9bd9bcd0cc79b96c72f972f039d70d67ce42b272cf686c8205b6e348e9c7c6127b7ef93523661b87e89fb80fc04e051c0ccee484f677327ec502eb85cce03e892ba932f5c8d6600b31cb626732d566763f0747e6b13458d9c7b6d9323cdd9b7d1695ffdf8e9263c3536f5e0ac4d6d6df678c98d9180c3db759f5f43c5f1726cfac8ff3fbeab11ca1358ef7ac8fde9a581fa73d5ded2b6f75b51731b67decc46587db48c5a57ed61d4e23858708630d7627c737609dfecf37d262332ad0997187f57cda76d88b33ea3d33067fb3eda3b29365423f7b803d289a356d397cf74eb24f4eb07d3c39dc9bf8313bb7ced41e0875e37857865d9a0ad8d03b8cc7a77665b85d87fbca5cde57c725b716ba3ad05eb53a1e98e5c362d0bead49f62bdf3e6a5b89ce9cbeddd02776f32ebe524d58a65f266b6c2ced398fe46317e95de6e7fbf231ff5f706cb884898d5ede1634ae5fbf3e9bb65532da09f6a922c823bc278deebc6f52f81ee61c738813f9a6ddbb6a8f0f930a3d8f9e6df739b43e3481ac1fccf161ed1c360beb2c406759bb4e6c866fe2df74cee24da443089363209f1fcb23c959cd57e5d771593fe37575fb09d845661f8fe5f1fc581acc39045b447a7324fb6329641f4b992943a7adbf0cb8b074a4f6efa5795448ac5d946d9cbeadcc7657599862fb29dab72d592d82915a44725a1a4867e9cb3475e44cdc9dab9f7be5c0b6fbd9936d54c9eae3439cf48f3dc4cfa66dac8ce55865f060ff8b66171c434b30ad4c777bde018f04e1c972d91cf876a46af255c7ff4533f6b670ab8fed09e3fcf6f05df3fe7b0dc93adb9c555a8e75f5f2ecea13ac108de22b1b9ca3ba4f7374117bcf0edb6d351fb0760f67743e6e889c45d6c97d2389598bed2078b966ce3f7ca9e76742721bb371a719f1ef945d5bd3d273ac6b28db0ff07992b3919c7db78d55d03edb611cef6de1a4b99a83ad12d5d5c4cd401c10c106b82ccd2ac579e5245f41eec99aa45d1fbd36119f52dc5b77f0ee97dc6fd897dc608776fc648d9fb6e8f1b2c9ab6ce3fa8d3d92aa232dd17c7ae9bbed702259df64396cb3ae7ab1dc9ad0f1c10d7cb79dbd4eb2f8089df560b7ed7c9c80f3d6ecc3a756076b9ec73ac8832db4ee9eea5332b4c759d790b319e8c7dc3a835f17ff5dece56a38f7d0b7f6dafb9d3e4b7df76de3a43dbf2dd85f81af27be69b29f2dc01e1bc1df689d109b79af8fe03b653ade83390775f58a9beedde7604da175380f718e38ea2b12eb312ef68335680cd660b3deb723a43b0dfc57465c802f15da94b5b171aa8cf680f429266ed7fad949bc26949fa37d8af19cf0bdf3a9b2f1d0bfb79052de396d917c47cffb62cda58d8f9092477b75dc00e31bb8d878b486ce848b9892c1706c2769c7afa01ec448517e42c399e4c1a320df317cf747e3a73e37df8af6b84e8fd36bb2ded0389641426cf52417256af9f7aa2c3836f13893ebab5c94301f37391ad720a1f005f37193af01f374e3d868aef241d2eadc483f683149c15e278d7f45d2f8dae2b3a0dffdfcec12d64d877d837d7284733e4cbc3cc8c0d6cd6f1ce08ac1dcf3e49cf64cb6d6dc2d895d44fae625dbccd8584dfcab33522ebecd0087a6c37da0dfefbe01cfd2dfc4efda78ea98d166f30fdffca8340a4b66700e3c7320e597eccb5aa1f1ec7c3f39e4e5ce024ecfb0bd75fbab95f5dc264f129e41635ab57e71247f9bf3c7c22c988d63954bccc5477294986a59a7e5f2a17c40fc7f13073ce39f645dcfe96197a2354d7fc3a3f1d3b77c8d7d6c9beb6bdf1615abd18b379be33c58cc31bec7fc1a3ae622efb8c7f78d6fdc4072c68cad1bee718869a7f8cc835cc47895d8eedbf1a037f95e146f791b6328b6f79abdb4f826ff37c63e4a0be929b14bea763831da00f6620cbc8ee86f7a9e906f2842a6c581d986c4c7eb3b5bbecb314c290c98694de4c0cc9ff1058521433ffb463838bb18de8c60e0987c1c1c8b4790343cf0d903e3d389a7ce96cbdf43c94e37ee8af4df8aa7f191069c09e5d7a86dd3bccdbb1be2bce26f6df3f22c59c5b10804338ad803988dfb72bcdeb1af0ef86bf073f316b7f95724009f067cbbdef4937028d6801f7cb9424cdc80eb64d82fc4ffdbc454123c1e265e1a69f9a771f29c31e0f6a27eebf7e57888fbdbc41f90beeffbebd7238255785a31c1680af3cbc3d80937cc29fae27af287efcc492ce35c65bd5c2d21064a06bed3abc7d9e5f664275e5e6518b7eb2fe684235e172e5386925d875cf678ca8b1931e5ce5d6d7d577decdc15f0bbaf73f1ba37d2b2c1cc08a471e971e3d2cfc7e54e1af35f1c896b90622497bc2d852a891c15e90c8ff5f1b36cda4a3095ef9a0cf65f3392c44b387bca11a172f1260cd295ac911e07eef4633fc7d88141ce8f802f457abd7696425584ac5e47d0feed1bd2797c69cc47cef8bc93c685264faf903f8ebe551a975f23bff0dd103d97faae1eef9c3b7aa6d0a4e8ba71d1be37bd2e8c8a0b8e6cb1902f3c7a5e932f0f6fa466be33f1d037369c410efa3e882545fbcf01d5790ca40cad2d1fca49e2c9b7e13a9a031929cf8479a5f96e8aaee3d88cf925fb827b62d9fd06bf4153eee4bbfa2ae0f4c2cfb316a36c9d4eae9aa4b291acdf82237a86fc3e2dd133b5ef54315ab336d977bfd725a70d361a9c3590e724411e8785e36160dde661ce5f5a5f2389370947eab1bbc683afbbfbbb000eac8063db1cdaf509704c4bd47ebfd9b365a684bc2a9ccfe37ddf4e15f04f03dcdf58be00ce0fc8d983fa9dd9f98c630c7d8cd79c03f6388921c6397f4dee0c60dbd671191cc16e790c733b0bb2c3c5cfc7d7768cd198f6eea7fdfb46fae671633e90c63ce0a51c596661546590a0394bb5cbfc76ee27d4b7fb8dac100913ea5bd13b263c607e3b786e47f9b8d02416cf59828317e5e3f28b43eb4624fe533f0b8fe73be6e9e37b6543580b4fe30c6b616154497064d900e988680d48315a03b40f11ce7634c7d11c0be5151acb2270603fb8879ccdfa12df8df9710a1cf35fcdba34e2f7bd519d83a47af7b8aa0825f5e6b96aaa4b22e3fdd04f4f650db500fd1470279eea69f2bf9fefb92cb427e29edb03fe3b93f4d9dcbe6edc8b1872cb3725b51f1e27de7d43292dc062b113cf55de94e433d1e655e69fb66f4a2ad661ce8f4cc9ce2341296df7b3bd66bb9f8926aac049bb4ed46908dcf7f86f25a9e6e83c68af33107b9e68733d0b66e7446fb0d593cadd39e33725e54d25a956be3361d749c77f61a2b96228e5d69ddec3c739d936b1e07388054f3411cd61be44755adcaa0eb8aa3425feb8ab95d274f837b0dd9c701c94c1d99375a2da419ea5680c778e5ff8ce36d91b95191cd9f7f5ec9c6c73f1b81b611c3025b9a3f296e72889369bd7d02ec98ec344299726f41ff85b95e45ead8ee8fd71e19fb6a8eca8f906d436741fea762a067e9be7c4924416f83167ca1d95f5dce9a369f7f218f6c666f92063325b3ed689ba45fb2ef4fd6cc9347f939ce172f9b0a05dbe807e7b6f4a1adf0207bd6739eac602c6165d1b77e366df95e4fe406ddb829d333208876ab99a7563debc673543efc990fe5fe332e85d4d4c04ea1fe82f69897f3fe037f4db9c81df35fc46632dad04f8cdc16f5c7e04bf71f931fcc6e5d178486b280ffd26ada1bc52419de6278cd3f2784ef4e3bc427dbd3ca271f22afcee2d7af73a72d825e6e6bb57f01d199943f3eae671251a937a353b27a663a3f5c86b73b4cf5ca681bc7d5372729ea139d96090cfce8937d2eb805c3731b64a02182b16be46e6c69b4262aed05c544efdf89ded90af15cb7d831c834ebef08dc9cb337443ec30a6c3a730c75b9cc5985998e718f20b2dfe0a980286972b8608f13e7d5cfc491f276dbeba122c00b5b78f6259e2373ad387f83a90ff254cd03d2a96dcbe3a04a3c77521961eddc7798f997ddd39487fc6dfe3638ce99eefa78bd9557ffb6e76273100e48c077de05713678e742ad86f8df457bb568f8549707aaefe49bd0556a7d382bd0fd78bf3581aec74a4cb41ae3ac965a1af9bbc09f170adbe6c03cf9fed4c0a5f42efcc72880b399e13e5c494c0bd0cb21060d4415f838cd9cc1f902fbb3902f79caafdddce2928a766a164c7d1acad0fcba752944573f6e6e3773798d56f26e0e6b73afa33c747abe753f93bfd6fc5fd09674985fa09faed07d9e65ffb92b63b80dc1b7171e17187ff7fda9a000612deb7a879023c37a87d6c28f4e70f9e93e4db8e531ece4de9f22c978c68bb281a0fccf18dc6a9e1f00799198dd368c58639c812e083c4e78f585a837b3ba742f21ed631642c734772548423d00bda3c178cd382c61a74a52270c4faab39e3c5e90bb948bf45ceeaecbb4bdc061c136e91fc32a2e7e038275fec958d03596f647688076ae7e50f73f6e5fe6316ebe004b298f54216bbb7f60ccc61f4063857928864afd496b20bd6bda60fdfb5d380b14b2c5fb6f2ddbcbf2ff9a8ced4772ac6b37f9a3f7a16c87aec089ddce54b761949a2b74ed4d14eb2b3603e2853a3b9129d7dc72ef5a6ec710afa1c94fb41de2375d332316963faa6f4eb6ccb68684e7371e63bd5fc75d939d11b3e2e9130e9b5b9d72ed0a7f06fe0576b65c2eabab1cb89369b3fb49932d266cbda35aa557084184d2473d1f97e243703faa291474b2b6fb8462ef04c17d309e713b6174a1d9e3dd263d03374ece7f099c61eba75c6bc9f78b99241eee0abf7e76a221a4152fd47da7c562cf6ba972b2348bc7c3dc3ff2fcdf9ff3636e01748c191fdfe1c982deb855109c1f109e3e6adc58d7d99b3d7ec69adefe5029c945675d5f20ccdabb1c9414e6fbbbfb45c8ae8599c0f9ad0bef9e531c5bc0a943d96f88ae8f3afc5a5a2f24abfc91bec725e5e728f99e20017c91feee92f79f408ae4b637f28f01ce8eb33580f2138105896f0491f63dc1467cc038795c413bc3b7c6e010e26da3f5cac8f0167790ef951605fd11c7cf629c7061b4f2c084ede05f002f0ef065f11e3404ae2231c45b790e06f22ddd227b8772167c761be3a131ccc8cd405fa08b9d6b62372d5125f8b32df29014fb2977f3a8f86f80db97aea71b50dff7e8ea1ef6cb63d4e37dffc88151bcb53300e36f3f68495e3d87d2e11a78f9f6bcbe0a72a9733e0635885499c69827a0bd2d519ce2943291674fe01608140ac6f1a00265e2f0ef6d8fe263e5fec5fab5a2cadc6d6b6cec765d062cda88f756e034622f6ddc7d7162385ebf6156a1d2a645f9d818f6ef6d98fc3985fae2dae88783efb4e4a70303aff6fafbca05f7b3ccb79fbedc3fcf78cccdb1d99b7859fc4796357b59c7183f943e2208b2bc462361847833d90c4e22f82369e53af374e775fcb57b5ef888c6fb567dd59c9f5224a94623dd26bf083ce450638d74f48ef82f128706eb5522a6d2e7e992c8c6a11fcc4ef2debb596f3573cbf74de72c6bc914f48fcd85427dfbb0b8eac0e389d82d8717741ae1ff90d72a7fdb19fa51f3feeed035ea510308d62b06f39d218ed958ce7accec4fe7e56721eb8e3318f4d46cf3334bfdce0c87a8d0f7050f7354c28ee32e2c723f6b2a1cc91abe9e5ba10a30ed35482dc7f1857b4767cf4aea462b439c6bb072c1c2bbe6a52c12c5c9cfb4ae211fa711e2d561b15dfc1619c2a6d0e586bfcd0b71c9e940e63b65673d4c7219735b2f4af8564d70b21c56b24b9a37ee37d2345fae23ff45dfad6e49ae3fc6e82c30eb851fdbca09dab7418352d3f47760b06eb05e93f48e68edccf0ec38b3adf70df773e58831b9f6d6ec893c3d7833589f10d08fe57a7975eae0b69906b278983679f30c6da3e78d516bfd987e455bd31bee76fecb829b3c7a6c3f42ac247f18c334fc584b59845983309f557a58db64867ad34ce2af672c528243f0cf335d8bc26dbf5c66adf41fbbf5ef13cf5ec0a81acd018ad0f12d740ed87731cc7297c831f2aeb0d5eeb9f38fcb326ee037f6346636236b964439c5e06f362b4df86e49ac7422231a714770ee4f5757ef91739cb0abf9c5dea1edfce48f9bda8218e298e5ca5e1aecc346912841953ece57b1c8e9473245eaece488d5ca3ca1c0edd63a345bffddff99d8f647fc1b85b237cbe3f61ee0326550f639fcaa9ece349fa27a59f7f9754f5c659d58b2e9f92d9989fefe191e0b7e0f88dba8f2b4ff859dcedef30c1b654623bbd52f9046534bb638e8de3981aafc93bc82366516b2dde769169aeceaf012b8d65d6a7e67b95067b05bd1fc91e66830583f49e8dab5c83dc1e4762832f14367815874866e17ef8ff63ef4df653f5b6b5e10b3a8d05181369ae58a0808a82543d81181050f6c202bcfaef37c72c982066fdf7d9fbbcadaf958848318b518fe7516635ee339653df45c7a047fe7b89be87f75e74f169cfe1d3be9a9e17b0b767b85f77be2198d9777c7cb284bdd61a239c33a7b8fc19ff9d21c544860cef9eab22bdb5c6f6fa3961f52da72597af613dfa78ed26d3381a0f8f8124c2efb78dfea3b8f537c02034a7e7a5e5e57f3f176a91bbf57b29e84dae96349a88cc27f32d71ab8dd30fe8cb83bac6e191f01b5f0163789a29613ebb70f6059acb06af5079937fc0f5052c2e346f36c512cc9b98969ec7b5eff832faec49df67646b820d817198e220c928ce4766d8d3339aafbe6b6a26675b8c33ae0ea063d7ce171d8e641853c0b4c5fdebddcfcf7cc87c8d2de646e6f406d4b17c27907b183fc5911ebe33ab3de9bb958743723252ecf229f675b2ebe0f91a77cf5d3d2249aefd763caa20d779835a13678a6d7fb80ee67925f76463b775b605ae7965fc38a790f8f2ffc02faf96d6cf7eb93ef71947ee97bba0355817ca1baacfe41ad9352d3f48516bae4e99d6235ff513e9d9c4f817bf82849befc979487a97796ce2eb3a7f835a03df55a7cdb997437822f57f13418e4eeae830f76ba43376665c6bc06b4eb145f99e41e49fc648e6d4481ea0751426e9aff0287ed0fede3019f6fcae821ee4ce77b320dfcaebd30238393c29be8529c64f46ba499b2f9e9f7bece561f2ccf7c77333ed1d7bd0c67e8eb286f30cd73d68d083ba3a070315638628f4fe4c7ed77ade3936aeb04d29e0670c9321ffb9247103c3cf7de0846ebe27bf9f0b65e02e7235af6a4d116b1dc9e9f9fd1cb80b394cee77631cd7c64eacb57956834f9991671e3ff99459c7a7b42806accee1c1529f12d650af4fb96bfb942755d64ce005a575545298800c35a1d795d4752c1abc2d863dd5fc951f18938afc257949983beeb3453f633cab5b384fbf3d644f636cab3872637a4df43fc107fe4cbdbca2c7d33676f027ad054e0946d7ac0fa3cb7308dfc8189d2fdf296e575383fc89e7ac267f25193d4f12cced9a6172717f917f8474efde01deb7c2efe27aed308618d86e10bb5ec2ff3beeffc8fd0d7f6df737c53623bfe7f18d3f71ac0ab0c128def0efef50993d2265c7ff154389ff5bc55fe6e71d7a7a7fc23a4bd99cb29839ce01349fb79dcf11dc9ffc3eb3ef0bc0eeb1190e19e080eea8aff3497850d9df87efd87f7c67f38dfb4fed74315f895e2e16e8bbc8512f7b77f31d29b2e849317b5ef279d2f90c386be4ff19f73fc55ac35870b4c776ee033f8cefb0679330bf8cddc4664eab7ba06482365e7c2f92b45c8ed372073de3680d85785d356b4ef0dd053e2690bc19c189fb5232baee66dcffa5efcc24dfc4bfb7143b8ef21dfebd045860e45af87fb226a01684cebde5c8e8f7247e096b14ffbfe3fe775abf37a04ebd5903f87acde755e7f32d7237dcfa80ebb2b947e786dc5ab0f0e78737506f8172ff0e496dc162bebdf95254fae6a71048d1295076746ec8fd71ee84bc0f8ec58fe9dfc5351c7c967b77735e24bf13cdbc579a5999be19af7cf35e6b3c77e83c46be67b3f62464a3addafde85d2c3d49bc337bf14465c4ea16b89f37da978ce549fb58e47ea61ed462b471f4f47954233f231a2c465f4877319f2aaab5ba2c2c85d4ffcfe3da1944b56bdeef9a75396a630eb39cf432e8b3b2e94f7041aef3739ab8665a7af53787594eb0ea922a68e1cf25f7769f432614bab28418c78ecd2dadcba882565f03be6f67ced548332bfccc193b7789d7f3a2746afe7c7cff2ece1d7af660fc3216faed610cf967998c653189d775f11391fce98db174d610bb37af33f9eb777516a75718c6e0779323fd2439d1cf571895bcbd737c215f0a5db9c39c6c721bf8fc4c12b746eba00753123d339fcf28491c5b6d62999f7138d86678bec9b53b7929729df63e008c8ad678ff05a712af35922f7e35d693d63db206ebe00536e6fff1fd396c82fcc5de56b8189fc262714f7a3ceaeaec8e4ca039b9adbb9019a687c23037be7b3036be39cc0cb6271a8c8ccf2cc857f597fb2920dd493030be7ddc6bf9ddc6aaf8ecc1a5c0c788adde6b27ec9de16931e73022ba7abdd1d7142be2bbc186f86cb02070ddaf48701fbea31c78ddb2461e37f80e5d7dbb1b2c3026ca0cd90a2ddbb30c06d087c36c2f78e771a37b22453ef952f52c9fd15ce7ab381ac73364d7b6f34e729fbfc5fb9bac665b770886cef122e8f94a0c4f10efa0f593729054dd7826edad2a831af0edcb80c485cd4183698feb972a647b635f67be2cf4694463f1f176b07981d7fccdd699f710ab684270f74dc0dd273e660c7c2218c3ff3760f87b75261fccb8068e06ca993cdf602cc0173d15edbcd18ac58d7d4b60d81210d36f3011a14f3738b6b8ada15ff78b620ab8db20c884720f31395a5bbf80d825a949cfc2d3f2239a14ac078c3eef9a704c72f78b21864674af0eb88277d9b32eb16e0af49e0fc35503cf16cac8121f7a9e01760fb27f75e52e87f5f018b92ac4d858dd34f4ed2fd177cd33259588b10bbc7c6f0e8b5004beb5d827319ddd607b0be79f993ffe2e28aef462bef9b0068bf3deac1e3a60e38de4c8a5fd5d10978ad17879565573e315375ce03b199e23bbc4ae995ef7b85ff7ea49bb3298a077795a8f65f840c71b7e0b7d0e38023735f18b9f7a07b431c3a5ff8e2617234ce2429f2f313ee043140fae089802cebc5997d14474a371e591f5e736bd38ed98add58dd91ec51a63bb56b5e16efe2c32f9e0915e87c5f172d5f3380e6b1297986d6b8ca977aff5f114d984573d9fa5fe38ae594e749a217b90f6212dc99c81acd1800bf8fb0a396c45be68e3f41a29b2c5f8e81e1e87f7d2c147562e35ce4f6f03d35523b4a7a2d9450d3301e3b5d71cfe5d0b13157872ac10f0c09667dfcc4687d927bc0760d68f2b8aa9b8c139e529da8b25c5eb7bc21e44bfe57a7ec9ba2e0c6b33e27931f89e63ba67d09ae5cf711edbc89038fe10b1145ca8951ac901c68d497aed699afbc235172d9e5635f1cec1031d930768cd3531da16b660ad265eec9b5ebe1b2c202f83fb8ee93d890f0139932687b596b291612dd01aac49bc2e365cb5d09451817146cac415478956c79951f318c8e784ada924fdf04c3c17619d01bf3df455ba7779354e4b7bbe203daf69e9235bdb1cc6beb2398775771eb6fdf3b0ab689f6da6591cd6049903c312e4bd35aad7794afba0bf9793a230cc6dd6c189fe5e5a4561d80577bca943d95be2d677c5abe1a4ed1e76ac7304cc2349f203e37b6c9f209fd7c6464f28573839aee01e098ac14c6ba7f0794817c605e93faa8d01bd36fa2efd158d5f70eae0e7f96078d38c4b71f5d8bb7eb6ce3359b30a01f6f1f4995b07c6773cbd6b0d873ff4c242ddbfb34d71ee96edf30cf610d4f1213b785544f9ee7def0ac5faf4f3f90b6bdaa98d68cd2ff4b0531d14124c25dceb3fcd011ff588313996890ff99206477551449302e780288f401fd7d691eb693d6d631f63e4408fa7e756a315f43a4f393db6f81bf631cec543bc381b1d26dfe87e8ff65ef51f1dfe3ae8456cb810b25c9b6c70cfb3437414c7c9c1b8f82d3166b8c6f39dec994ddf35c9b98987f91df2b911c6283947961877faa78f1ceeae1ae4fe4db35acf2e769e5dec7d76ae47dd837b301e03c2f7d3e0e0327e13da4b6ec631c6f05eb6aec3b828cc58349c29604f237db40239b82bbe90cdfa10e3b504735004273b5bccb732e8dfd633daf20162be0d27c4c279c64c20794285cfb747908b7d2bd602e6b35a0fb6f5977bf96c38eb32d9cfb3abe754e5977b51881e1e63fc66e189d79be2a205755518bb95a0296f85ae4ca18683d95bf3a5bc55085601c5789873fbde5d72384cdb2bb2a1a2492f8765ab060fe3e1a2b995afe8bebc8dc49d4feaa18b6ecda068ecb26b17539fc792082602f9bc4cf4f94e76a5b72ef63fe767e2f3bdbc12c36481ecc203c35a66d8fa6a86ec4cdf51cb88c3ebf71c5ff05d15c788d173d9f2d373798c170feda505e13527bd7a34b7577f0aec7cd77ef33a5c7abea296dd632ddfb3cb3f0031b54ead231ebb3e9e82ce311fb8ea1a7e513e26b2788f2c71f83c3e101bed7028406fcdfbdfb916ecb7bdbb79c5bfc05d3fea702dc0311237e0ef23e335e2884f73d18929b37b72b1e4ee311caba4f73ce19825c5fb5c9f76f24ee9aead4fd5b7c8f9ca2523d7fbde293b3476c9d3d8cdb619ba8efd741d95fab5701fff790dd35829baeef4794e20b7d2ac557eae698c088d931b3fefa557782374edbdc2a96caedfcd37f4705cb46b6f9be36d6ec6674e0c78f74e6cf2f978e4fe8671db4b041b5959ca04ab4f50f35da12b9ebc7096c8f661e38cf3c3d5d97096bf1afdbdfc15d665c2f350627d513cd6d212e425e783a6fafc37b20f1a7ced09f3774f8619a786fbbb68e93dcc990c1c553ee674a3d8d548479da08f75229e38dbf90c3636793e4d09e5afd3e61c8eab33c6f55f52bca06598c4775d094b7f9c169a99967e534b7037dcdf0d2f9df57be4d5ad3ce383e419450dfc3e86eb02383c1ec3fdb96484cfe5a12b8dcd173e8ae381f14f513b29044c24eacbb66510ab376bc790b19f516ae329b2633ab83d7dbf81b5406a51ab11c5665c219bccad460b332e0de7ada707b91a0549a7c7798c7c839916267109bd5f4e15382735c23533f6e8305f62ec7cc0fde173f3e9afbd75c6c77b7c2063b0e43022fcc27723742d56db43eb39d6f49a75251a752c1aeea2e4f0714ae3e77711b8be8fc2108a5a53eec51aaf2b786e729ddc30b702fa0eec19a8a1bb837da3269e04310ec23308bf9950fcfff41dcd21a96728918d4b620b25e52df61ee23048aa93c1f1a4927c57a22bdf720f3f6a194ee81cef3af9079bd4cf6dd07eedce37ad0d44f7fcc3eed993a3d8a3eb4b4386ffcb722ef3df7223b31689665639a9db004cc9f051647b331635b34ad971e74e8f979a7947f30d1c565e1d9ff4f9ef3f8b9ce56544b26f0a2ebf9eeb68cebb733711535d09e9b8a2b5576898170e6c66afb9c719df83e56fca9e7ba4bad27b8f1cddc3abd3d23f8a277dbecbd5fc8e7c1482a3f32d07e3ea6e58bf4b7f221e0d77f7e14f2ea961abb5a6201ffdf71fed81f36ffe4440f245de4f2ea7b514cabbd3e2ecd769e18fcb3f1c2eff5d77361f9ab384efd17dc3b170e1be4f75f7f787e67cc3f7fb715afadcf7706e4dd714da5f71c3890fb2d03f824fdde63ce3e35747fceccb02ad3b7c8f4c466389e39a989f867ee6fc03514dfc4fe4f3e8f3651999d591c69c18f7c598f3f31c2f57d359ad29d3d287f958960beb37e6a0ef70f5b258de5146eba7d69a7ef582f838d0630ffe19f7f9994b20859a27bed7213281afb708145cef14d6944318749064985bc26b8a3979b6d21bc436209e97bf15d1518cc323c599f3e4bd4b7002e7a91c9e5452e78ee4d192efc5803e96f6733cd78de15ab1d5d977567fbc5c7ec3327cc9d57ba9b1af64b7d671cc3d22198e5cb7e2290992c39e1c25b100787d965c0530575e192455a159e7f397e9e5c057345f026e5d6ffd76120fd1bddc41547beee7bde9014e73f594628cae39b20faacc1fa3b11d8a81a3523df320b567b99a6702d295dcf76558436d8808dca968fc9ee7bbe47c24ae6efd0cf3f2656610b309913f09cf4b9e4741fea49dee5ddcaf8f75925f1b6e0a756661d2d4983df384f16350a0f386e15194e8f92f78cea89f71088f50abff646b06380f79f19da1d8f529c016ebf10ddcc102f30622b96056575d498b27aeb4def86381fce353d8d833cfbd61e47eb4be7e9dabb037616d507c1bdc97b20a924c589f7afdd6fe5a0182f9e73e84d7394e6a8ff3be5d4f3e779d8de457395a9eb3bbff79583ef3bdff59d8f77c2df181ab1bc6f9875976350605c41f8204f6db01ebed768e1463b5a7efcf3d0a5ebe3c2e680d22ebd943fbfdc7314ad20fb7f6724d29ae203fa451427847cb405ac5c02d94c47e70aa463d6344b90c90ac3e18f58be745fbc61ee56a9641cf4c608935d4015ae7b3efbcc98b13c6955ae4d9559b6faf869316c6607bd5c9f1f509fd0f6b7b42eb4675345e1007c5fd605fb81facd667a36ebdde81d8d18320890f4d5c1faf755d99525bfd03e3726ddeddbae2735fef5fae50e88af0cbad87c0236038c23b67075e0cdbc7311424036623d23b285e34c0908c2fc66e7635a46e8c89c3e384feaf1fd6678331e9402e83efc364fde41c76f0036311e8a7e8bc775667ca93ac4d5518337dea5fd935dab50bacb792d438c3fb82fdb3f3af6ae28f83a38c65d4a9c561cff1ca03e6a14cd671a79799f575f81cae61ef3bb35e9c9d88eecb7a598d3a160cf47ce3b40cf23719ad1f0e5b11f768022f21c171eceb7d6d7ceff6734f7ac715f2bf1af0e9921e7217786749af79363a28bb6b839f813f37181bc05f48fbd249ec7987f107a1cfb702ae5c8fcb9bb679bde13bcaaf3bd82bd971cfc52477836d0d5cb618e769b25766f5469253df8cd9fc6baef8e23d7beaadb831d963eca63f414dd6534e711bc81a00ce4ab4d62f0cab8e5baba4775640f37e65b8d8acce7651f6d5dc6866cac681626d227b3b92defa6b74c66ae23bfe2dcc6dd64bf8b7fdbd37dbfb3b3ca1fd9d72fb36933790df47eb55e8f6312c435657c0f3b33679ecf569c3d5f62ede7db37ace69e7c376eff2546cf2f97cfeded9fd59a41c7fca7c01f18e2636b2f968b0904541c7fce13cc6e907e6704e894fe937b633c8fd540e6a664f9f8387f88ee3d9589e8509e04c63eead6905cf18d415c4329af8c708e21fb0bfc1665bf0f10ff44ce01741ffa1bbe1b8f8d95aa9db793db5663db15c2fd733b7f3f6f635805e6e16cb8fa05f697746fa107c69cc09796a6149ce49ed7dbb37ea336cd78bb4f94d1e62a66732b2058e9423d2b3c4c0b52e1c67a09713ce743627c827d5e73be403f0be11ae17788a4171fc8aa697533e721a738479443679771e01ef71897cc6c2a0be13f80785a0296f655003f7620c3c7b18dbe76ccd17e700f9c5f325e06dd25e38b406220bd6c0555746b00658ac09cdbff286fcb007e8362477b93c0ace434eb9fdebffbdee3d9fc99dfdf52fe8131a107cf613ebd91837f6318f955ad43fead3932d448accc5e7699f0c8d93b23a7f1abf8458bbe7aa99677298d8e62cd3f3991829b2023ec2a0c5c9cd3fbff3dcefd5ba66d39738f8c4efd0c4d1aec160750cf3ec4efb76d0792191f1e43cd6bf4839d6c3dcbec2f54ef6c56be272afcfa3fd904fe76dc1b60f73e46f54c31dc68a45f3b4b0a7e2925f73601b38c313ae555d955ff62a8ba6d915709467db95c5f9e57f3f777870a558089c8af4d4673ff6b286922d00c68a238bd1447ef82ec6f947fed4fa447363951dfed443aeac4adf99d5dc758e80979641dddc2d7237ef4d9d530b2301cba6c754eef6e819834d175b595e248bf7b5857baac057b789afdaecf533eeb7546ffe9c70438c3b3d90132159245dfecb59dd70337c337d104d2e02be57ab8f91c774e09f83e0720bb8b600e789339a0b3cbcc22098c5a40e6723533cd93df251c5a66fb2c5cb6bfdfe8826b4fff3fb69dcb83a244107ac8c29ee854eb01d08be47b2211811c3d161bc480ddce347f2b438beedb7390233dd1449ac647153f17e42b664a6d51719c6fc0458bc4530b01fbb86efbf6bcb62bc8f01f4eb620ebbf9827238d49e334c0349386be6500844da7ff8fd5825e935847ce1eebc4cd2d2447e7626d39a28650ff1894da20971ad8fb7502fe50e909c5f095013365fa68be4b208936a8fd6b12b52ddc3d518d0dfcf66addf93fa8a873a5efc31e78b567fb579eaf41ece2e7a9809c4be6cc6cfe7ebfb95379867beb7742dbdd15edacc70861097473ac4112eb54be2cfc111d98cb312e2c439f281797ef1e111fa8da92ec69cc97cdee54ae516e3c5b163d257ccce1158fdc05114c8bd9bf93b5ed86f0e3c2e86f306dc2c019aa34e3f6f67ee79b90e9cc63ca637e0c8c0f889a3c37c8b731334864fec0e1ac38f685ee9387db43f935e5fa837a1be55a7c71a3041b2a606825cfb30bf4b4673ad1607395f97b21e407df36031c5fc7c9a323d2f1fcbae5d7bedbcdf77342b537837b0c1aa760f6b9e76d7d116ada30e7738e6b1c1b8ea99e16e839dab46c41fb77c7783396be01a5961d8974857e4c230854e3fe6ac68e1fa9c2ecc9e4663d5968b2b7ceee3f7ff0412d4967175c21b79ef6441206591ae648523c9856b512c7eb9d04da12363ed82da168194fed1eaaad8db97dbdec63dacf4195a35bb1391e2ae947b4bfc3898d5716f89f1de8c216fe7e7a9ec39e979614d0b5d890bc3a93a358e5b764f6eef81eed39b181fc84dc2e115b7380294b4e1db1bb7fd00a8454ac0a667b2c2c4f999abe7542bdf116f7bb7c8fc997d0d9cd9632fd929eeffdf328cd3ae9cfdebb5a6621c02d72fdecb0c1395c8d2bd59dd0cf72213ac8082f2b706e205cd4de64859c4f53ad7483f12fc26fedd0abd91ad2ace550fe3602a668123175fb99ddacef0e2b9c0458e710ea6742c3732f094fce5f7d6abf1704685aec8edbda1a46ddc36a5cd8d4ee51a1b8b19d8600f646bf375a2515bfe9cf626b28b5785a6f8c8977aeccdf8b8ef70bb47b02f090e0bf84fab825bff901fdc9b99b09fabb7a8fe9c61eece38d62653693d4e8bf5c02ee037c04b6fc3bd804ba4b52fb2a2bf5effc99f110c07621dad3183de6877592e382cc60e36470df59bdd35336ec9764e3f8d80ff203c8a2f7ef75d6890039a9e831a787f81efa7670ceeeb71e56aa48fdd76867f821c63c8221f8a5b87040b1070a95ae31f389db99f6fe4bef50abed15fd79c5dfb3d6bee30afcabd599df79678dc9bbc1c2273077d0474ee7c7efe81d3a66dcbc9ff702ebfe33079b16eccb4584b6fbfd07b7e3974fdc5688dd6ffdb7734dc4d194ae9d9cfd34247325d59a1eb8978cd578266a6efcdf7dc3ac5b237a11c2dfa1cc958c2e924a5ff88376beb3c9df7f0a438f3e776e9ef5671a05489e7acfee8b355d1e5ed625c01d2ac0c1435f6a4b2b49eeffbd82bb218285b7fefd8a53fae267b4b6cf3e00fd42c74ed2c1c6c379e935da371b57e3a471adea2ba529f8fc31ea0bd089b30cf6e619e095fbb2a8b72bbd495cbd3739b8e78f19d6d81e69c1f8b9df2f4ec7628d9f50673b817411e35d737abddd3b3f4f1f94fb74ff7b71479c0dfd77abeafea2b55ebd92c27057ef15d9ecabcdcdc48e9af8d9476f924647d3a636b619fa734aea0ec2d5ca7b9b7c43592b1fabc280c6b96ad26c3f1de92d77babcbdbc0e4003e7fa7168736f6a24364358d3dabe8338b3f2b9782c34d1cae692c7ef6d93e3e61f569ade32b9a6b9b768e1fe9f1aa7dbc159fedb505a177a3c3fd476cae9ef8f9241d7271de3f7bc6d598be71c737dcf101777cc71d97b8e353eeb8c81d5feeff57cfdfd86ebc2c7630be1e92050ce38c9bb7f9de7c8eedf2bfdb3a8d7eedf8e38536ceda1c5a4e51703c26ffda5b977f31b934c376eac18e8b2e7699a3a467d67796a7bc4ff4b937b38f6d9e02af1fe18292296e1bb5c5374efa613be9796da565b7e618fcf2c94530941dd723bdf9a3d58dbd097cfbd6250d0697abe1bc9da186c28d904ecdb4a6eee3aa111cff8dc3b8b28e1e5e2bc0ef487405f3f9360ee4353ff7f01e0de793f6005ee7d9de8cffeccdaada436c99c39e13fcc230a7d5c115497c282a0cf7fbbac37a6542f5df269f099e14231d92ef9db0edf72a299f7f1240ffb6f880e47b58b763efd816ddc9849f20a3f16b9e5f28187c3e3497f775ec20c804f0771c691891feba3627e63346a34e7c0452db754f9b75523099b5a3e3dcc697d440d688b3c2b0a187859cdff6d72265d4f2d74c29e57c960bb2257534eeccd7c86456778cfe67f90b8c4928fb1d4cc4a0e639c1bf7bf31338bec3c503b05d7146be14b6c9098f67be2b889fd1e1991b227f8ec505086f6eee9b692b6eb596dea8cdd9f08ad23e3fe0f3e97cc7d713251ee0b83d9f937ee09811eb6568db7df988acaf32853ccc8ccc07993b2e5f4cd710e1341d1ef70eb6fdb93163986c740e90df43f979f5bc192774dc72a6481e40ef68f777e4fe1d59a5de78ccc19d033d64e81e316000237f1df8afd19842ed14c5a3edc450d1793c0730c43200c70cad55341e86d5fa1ef915183717fb5eefd1b8ba79a755169efccc9f22bdbe7c47f301f8b5395ec77a9303daefbb6bc2dc169adba7137ebf6966fae1e4a9eca3fd640e53dfc5bcd841be2a7c77297f49847bfbf8bbec8edb3adf95d02ba1c868aeeaf041b18069bd06f4851518476e23fb568b4be9d0f4f0e21a06b2cf8be0f184d37c437b07f3e1925a117b26faae9d19ee2541fa9062e247e3e1a5f1d1b17d8eec7bc0e9cb670fdf26bf27b96f5da9e270b01d7b8057837beb49fd69194a711ce676ba3e5d601dee9de1a9196f3bf773fb88e682e6f3dbdc7674ade35833eddbdfb9761639bbd23787a4efdcde468e2dfa16abf3cafec13bf29fe9bcb4dfa1c12c6c1def7ddfd3e61a28b3473455e350b26dd20fcfbdffe64affe7df3b1a0f333ff7336fb07d1c3a3e7628b1f76718843cdf30ceffceaebe5564fa7c1bfb0fc0828fbf9ceae6391b523b521d3da72abd7c76dc3fe87cc15aea1df3a819f3367726f62ddbe36da60dd73c9137f41d3573d8ccb7c4f6d5d5907638673011b3359a27b2ae8364087b5157ded8f704cf8a70378748b6b665a132eaf6173fad6d1dc7a7f89c68db7602acae37e8e703bfbef3fb06f396d9f137caa5d9e13145364cef7a41d7f015997195d21c25c6ef2faeb41f1e3e9b55897401e0b9a1b9352bc173c2f72081d86b192ab32160214c8aab7e62735d7a8d1f88ce6de6bc6ecb386e2e6e06f2171f62bcce47c807ba62393e2d8323f4f9665ff32dcb7373b1f3a2e71a59fb1a36c54846fe574b660547f1c3031942b8cd4e8b2bfff9859c29fa65cc88db5f8bdefd1526fcfeaaa0af549b3fc91239483299eb0d14d05cf6ece7c290fae7d87040a690f74776fdb0f4dcee7b886d9e726575ebe92bbef5c8ba8fbd339217d694e7bbcdf7aefa2c6f1ee20de9ed279935072eefc71ef2101ccffea35b0f907df49f4772e2f8194bc3dd95de432cc9fefd08d8bb73760870c72d7f7996785c9f96745f1ff5f9520e485cd6efb5d59ae761b8e1cab7ac299eec274f32a86f9e3ef6b89f87e53fa16e7c22e70c6fb63d2fc775fedd3c9fe2f55d530ec6c8f763b52231e10786f8e07e82c61dce2735c5d503eaea8fe2d170ee646d95c8461571ed0292db640c2662dc9201c45e0d135fc43d01c8de65f7042e07ff28e6547676e4498af64ac07855c277d2a3cbcb8ef895ecf0ccd7b243b32ec2fa446277c8465542d9e3ebb42d31d315c04639419ea9a6b5b5bf2be8891cbfccb59fc38978e29e09f9b367c3fd4db189535df92e2333e56b5bd1f71f7ced3ff6e997efe1789807caec143e84cb6af27bb8aafdbb9efba5e7448fc3c413d65c2fbecfad0fdcabc4edcf56dd427c379cf0cac6709cfe0ac778ac346553eec795a859c55d73ab11dfff1f997cdfe737f5f1cefa7c573cd7fcfeaed7797633cce9fde08a6c0fb4e7047385fa7915fb83d5c8b0967563b7424dcd4dcf99fc2b0c6974f51d3ff79d95103ec4c0b385f788d6d928d34263b824afd75164fe77d7116767e7461d1f0dc793fd71551ace77b1ce618f1359b229914f14713201e64999a2318173b4273b3d160d67d4e882c67ee07adda772447eafcf993d426ca351efde8fcceaa69f800f25f3c78d6d437de083d3bc13e99f3a6be837bc4cb044b87ebffe589641ddab33727dea3f0e13f181fcae00fba2725857829e37f16d62c7cafb8e3de7137f91e56970bd2dd389bab2e3d707b50f59de9be4c4a1b6c2b75af83e5917dfc7b729be4f13bb5e4b2d795934b8d8cd39546700f66d5b46c47c3dce8b7cd27069429de0c79eac39828d4df2bdf10dd966be1b7e8709a94d97863847715233ffb46c73a22ba3161708e54fc0ebee4d0e12c05292fb7c24cdcc4687563efaed17b25d700e67075ced7dbf339cb772497856c9fc12cee18e2ddb5e4b57dadbe04b23f94bca1e96238b9883fa25d712e6b97337d79e5c2ac40654e06448714d985965c109df7b27d902f59dbab5d6b0b6708dce730e66be6cf007e6bb336095382b519b6f001709f93821f4f05c6e9c2c917d62ab110c906bab0e116227a32b276f64185becbbdc34b3ca2388afa69037d315fb1a821d659bbefb597a4ee307fedfbd0bf2c7840aedf7465e8a99ce632a74ea50406ed49cdc7c8857cdac441cf31a15bae2a37b957bb3aa3557287d6758810db4f36f61cedbc5cf3d0010536275a5a4a7329f95e183f94e6504398985ec0d761083de5be223a863b04dd712aeeb35ac45c9e7407c3e9e84eb2f8af6de86fcee0d3f775afa2774edaac639b436d76394f37baf42635a7a7c5cfdb56ec6be27578ba299439afbe2f6fc96caf35fd1f8c7efd13cde74655aac9359a69f3eeb60b0bdb1de356707dc219122937a89ecb19bdbb56fe33d457a57ae489702d6be83eb59c304fa8c4bc0d85246ddba9821896d960df70dee99da432e1df99d3bda134672f93b6e6c285744bb8631a8f9f919fd0a1e621dd4f14db3cee7bd25de018fcb92cf7bab68e7789591accd694d2cf8b7f5f3fd9f6b09c224fde5e31878a159059e73525bef9bb8d617f498635f02297bf79d2d93675ccd16ce6177aecd8e5b7246f3c634cec4c5826ac3896e7aa736c9c0f1a2be3d2da3f5f87f51efb1ff8feb3dec4ecebfad9b22244fc838e8af6d6bc24bc0d6b8bb77aa7297db47dfc924dfc6b90535f171dd8ffb09f8a0d12c2a02a5327d6795ed5d3f23b58267cc5d75ffa1de7577b577436bb3f367aef4d7ebe56afe6f9d4fee5fb1f7669c3060e7127968ab59a854b1c77cb13843764e48627d146f8d1f5b57ea8c2d89f93cd53699981f09eaed95945eb3d71e80ef733b0f1fe239a82b1c7fa59c2f0ff1a9ce6a5df7f3c82d9411af276e869436fb70d2ece7e0f1d37e6efd26c5f9c751a199d511cb9d37ac57cc8a6156803dd2dda73fccbda68c64c2bf3bf55db588985d6a2b612e5fc81c622c0566678dc02e62bd2450b3fb64d7167f59df7fb9e76a74f8e1f77bfc7b2bc867f7508a6fd1946000511b1cb8595fd610157a66af77c24cd9daf2d33ec336196019fc60d73eef4f62cb01669de1b07556bed6819f45cffe5d0503cca7f0fa1e9bf3cffb39fd697ff2d7b7ad6cf5b94ded83c7e93f5bcaca602ade22672868e3b4c4dc4dec7d72358f90bffaca3e3befb9f548fc92422771b300d908f345f1b77df8b7f7e39f77ab64693367b1d0c40d0481dadb5e3e9237ae5a7b6e7addbbabcff0a4c65fed5ccb1bafcb3b7162816079e41aeedf7fb5ae0435f15e714a09343eaf6732e6c948587df2d3319c6b7b235866bd39ac21f29f986d9bf032cf06fccf85bbe8c5a55d4dc232827a3e8289682e126db0e9a949048c035ec7d7bee375f745775fe373f21d8c979ec90f8cdf1999bee301069c21e1efd6c9f719f9ca1dbf07fb4780b3477c3de841886f10436b8ecb5f03a1e0e212822151def64f5c1b9adb01d4e3ce85a2fb1c7be8df13319e25eda1799aaf9e713f7e0be0b7a2f175deaeae843164facf4d01b797efb1ecd46d0e9adc38c4daf85ea098e7cee999c7c7d2bc278e446dc84fc247b68d40c6bce058e3f054198798668d9a353b8f8a48f9c678daf5e7c722b97479ce909dfeaf40caaeda7851029676adca8b63817ce9967ede3ab8aea015db30633eaed1c4229c1d89e19038d884c3683a221f0dc77eb624ee81fc6fdfc4b117ee58017da7385633c3f112889d74cf2b83a7eb519e4f16877ceb70755d893f80e79ee7eec36b90d6cf70cf5d16603f237937075cc107e514e36a3e9ef19b1b9e3b5cc73ac1b6b8e5ccee5c7f43b6ae337e6ffef15dc0f97cf8c0df089f4bdf4cdfb96345906fb32fe8c5ac907d7d0d696fcbe3f26a8d3ed54a219bdb7677b4a7f3ba7786a9ef7ecbcb7125e827d6e743736fedfe2065746e72277c2f33e61536dc45194d642e87b990498f34c38e31ea18f8d6c87d0b4379fba5293b125f5dcacba4ba6a5651e35c25d605804b9ba4efc1a9f56ec071c6731a5279876b4c5af7c539eae67a4fb67e64363da27caf4453a3628f0e138ff4df6f63ff313a6bca4eb607bb337071e622f01585495ab05a92a308f281c8ca02e3b53e7fdf1ee37bcb2e7e21d7333da71854d89625f81020cb8dfafb1c1ee9fd88fd5ce3fbfa4791d39569d9e065be815f86ec5a346f5b782f5233a4bc81fc407f436c53d25eeca7f7feebf5dbfbf2d8cec7b5f715e5185be15807e98d697c9157d8a604e7e2e978cf6f8bc0fda4e318e367c2ba7bef88f740c1d8cd18c3fbed97866cc35d2c42afec7878c13c64c023c5bf63066388ebcb60ec48cd11f20b4687d92542fb8eceabe1c2fe6cc7905bfdcaa3d7e35237e382e6dcb7c42a029985fc08f47ef8f77f79bee7ef3b3c876decd4ef977dab3ff5aa363dde7166d891a88d178926ed9a71ec798e2e1fe8538d52e3a32179cbf262bef996aa737a6f9a13fbe46a55e3abb18b442477300e5285b9cdc1cfc5fe39e5f97a7a3ec793bfb02f4531a10bd817dc7c06ac5e77d7e06e283bd99cefced09342f6ccb32cc0b69f978f0896797af6cdb4e0af11badd6b508cf3ce9ab22ecc3e39b83fe82b65d3eb877331c65f441f116cc61fd7c04ffdcad76e9fff02f0ba696f1cd6493aac0bf42cc44e7b15674bf838db1b5fcf7cd5934dca7c645adb3c0f9b9e6f22cf0c727f62a7a1eb5b86e4d1f1a0b28edbbf384eaa5945c9cb2d1213a3eb6cc66365c0bac2380dbfbc9ad33194831ef2dbea4d53de8ac3bcf2016fe6a771ca3d3e664b71a8c85cbffd3cd7f3dfad78ef5ff673fdc35cd6dc338ac01b00fd4f80cd7ed55cdafb794f16c9a5c6d8533fece5f982dfcb35bf97c3e46f7bf913d75d4ab6c0637fe37197afebd302e6ba79a6aaeece37eca7f9a277bef74886826c48df81b377be216be0798f2f94255cebdf7e1e252dd83a00fec2ca477fb931ce5f8f31e14081ffd38f48021bad7ec286e9f49c694a5a7a26f0a6b4f130585e76496dc0dc70a6a5ff1063c3fa5d46c7272cbf5c4dfc93315f3675e7520875e77e426cd6c9f064d4b164385ee933ecb4027de66d58b8ff9725a6e8d9fca47a385214e1bc7d0b2f64a8b997460f426eca93a384d62a5c707c92ca8709c176732a9c7773b7603fe17ba4a56789376d0e6371a2f883800bff904bc34ddfbdbab1fb0d372dbd8738d4d1fd4e22e0a4111cc0673e68e5edbc37ab5c33d158b59e3f673ccd5238e27efbe1d7e51fcd697a0afda37846cf198a97936b5622c6da8963c3199dfda48a7525e47de8a321dd65ff581c793bde4faaa3e1787c9d3a920968be73c35de067b42e7df3c7d9f19e1c8ee31c781bea665e08c731bf77a5765f389a8761ea3b5516d19a36980f0fcb5f297c8f00d30cf07ce4a08e255d99967e9d36f54ccef2573011a575bee4d68a28a1f589e69cebe5c8d5dcbb223f6eebcc8efbf1f7b99d6be46d698873098001647665a4877964089f10c53776cc58d4709d502bb6d5e2285796fd311beb77a1b56b2ace91251e71deee7e8e8053b9270661ed2aadcdfb931b0edb9727c35da2fd08754f5facdf5960b516da386deaf59d305793d945cfb7b720df7d4449f9a7736ef12585d42ffb9fe8383a7f59e2a9c14c4ddfe173b3b6f0d8cc46b23f8e0b5d09cbc0a4988ca0935a35246e9d7d34738a9e2546fb89d5e41c80ef9fe133a3f57c785a4b26dc07f848823a3e007668c2af15ef97f7100feb9c972be201ed57b746e395817d15009ff330e3f52cc8831aedeff673fbb4776452c6f477eb81f747abab8be1925a16e8436df66d60e17ddb1a0fbc771f68ef06b0bebca25597232de5c02af2960f0e58b9ad1e9323d9bb27b2774f9af56f3dd75d5342a4d3245d1180eb2b72d03aa7f824bc4d257465e649cf698cae199f80c62e8ec585e849a889d414a10ceb4ae265aa7f948f8623bcfb5c2cc57004a4132e2d1c2724bf5f73feb4b00c604dcc37c501708b561c37773b270ff965a4eb683da5f9cf723f6ae2df787b818f310435bcfb07e03429508f4b7c6d8a81a16641923219f20f73c6188fb7ce980d14d4af6ca0cd3bd1dd47c319111ffddec2480f283e8b726736af5773984aca9dc4a9693d5f081c1201c1b645e7efd0de059ff4deecab3a2db5f902f9905063d5633b75fd39c1705b5899145fb4e901ccf173fa14277cc6c69dce41f185eb464a6e9f14fa38ae0d273d07e3ea46fd37e20fe5861be3dc05ae53a95bfed67c83c68ad50b1e5c11e3748e1b5bc287b8d0bd40e31a8c9b757b7046d87744b6bdbdfca5a1677067a2d63f165cbc60579275d3373e102b8a2c711e99317d677a7ed9ac2fe27b367ebed87d5fb4de35b312bbef1b991c7ffd7c798ed0bb32bf85ada792ae27ceceab29264b8875b60c98e4d88700fc883021d827a7bff2e7e0397d3edef3dbec122a643d2898038eecbd9ed80d59a7c8967f5ea7b50e354c3fc762a289583775a25b995cafd1530eaea7c19c6adc7d06d0cfb080797b9e97d6f5391f0db8b9288e3589ed77e4910cf861fd7d5a23cede1cc98b64f187c3fc93c3c4cb318fce82c48862220b9b750cf8ea47b1d0e6180be1697f24e9bba6bc91778673dd7ff28e9a593d18af0df8b723de9f39f13219ce99a56774ff666d7aa46e690475c858267a7924d19ab37b12419f9d5f04b99d76fcd39b9a787130ce38dc618ca5f3d5f07f1179b7a8298fc872428f4d2b76ccdabdf7db748bd2463e37914bc857e6eb9000d78bb72fe07d3399f48b59c1439c05f577bc1ca7a5258de4ad33c2d831d315e0a6e8d3e1cd706685365da17dac060fe8239d04755aeea51160cd6ca4511b6366f67963f88a73e0969a04756f0de760356ee15e7470c0b6b767ec3dbbd094cb8de1874cb31bc3a3980e6f3a7e4ec005e170c8d878af2d7e6c77b2a6ec003f2e9056989773ca712a40cfd2ece2bbabbbe7ac32db56d5f5e993fad3e52259147dbc6dbe25dea3719c41ced7fa2679c55d1b0bca2a32cd1c5e3d47ccc2c167ec49b6bd4b338a7b8f7decd336f6058cbd7e7057f07e04a3621dd44ff1d1695013fc167cde636fc62a9aa7504acf7b69d4e13eabf01c899f37184f0ec3634db1dceccf1b8c298fefa1bcc9e17c83631564cdada51dab638c9cf46c3aa3127ae09df46ce550e7d1b9b788ef2d64fcb565d2237a46cf6be5238ccb31cd6e8cf771a6e2b538f9dde1779ddd1aacba98e67e854e9e8b60d1610c3adaa7c07ad2cde7fa814e0df39571b2e07a73dcf7a5d8e72f675b03ff02f08934d871186b6e06c716267f6ccacba08cf213e0e74bb9e77baa83e39e91c487919ccced3898cab5afd835c5abc37cad9ea0e62ca7f5f29e5c8c95e8253496ecff46a63abbd2079c5edc1fcd73a1e1b8d10ee3a8b27a7bae571be37471fed0134f5ed6f43e03fe31b349fab159777273ce106a04a92ee1744773cda493ab7c81c3b7cf470cb723a075f153f56698d3aa830b7aebe268d9a7dd7965567c2d7db944be6f32cc680ec7c6b65ab29ddacbadbd9d6dc78b92e5cb4c75badd55337b6a4f1749756d63e488d9537c9fcb33f3b5fba40f8ce6ae7f69f34d3b2f3e7ece8347e39e3c78d307cbf2e0cfe70d5b39239bf5a95f5eeabc9555707d9b9d7a560ecbcab7848aacfb2bb2c16c52878bb96fdabc13fc791692d93ddc1414a79cf04d084fe30b1c94d4fff0de5f3c534278259a1e39cc0dfc38ccef8fa7e76db0ac29f6265f5728fbe61de95ed62fb57c143d58d7804dc1cb7a9ff474177e128f83bac15dd8124e487e5d527c253637a4776661c699e1ce6a8df6de72789ec0a564fb648da72dec3f9a23d7ade97d79dce511edbb1adc6bba5748bdfb19ed2764db7fe523f43f7018e263b0bfaa10e7c3716f1e913d5436455c3fd7d2fa5daf4c9fabcb5a949b7c84eba4d1f53afd2f36ad1b8198158fe1fcc66347e4ea71d7e023d65ebeac5bd88a15ff795d672d7ce9b554dc0cb78da5b895460c4b31c2182db746762119826cec199a33267ff0b3a6e47d7e974dbfe78e61f3619e4eee5907d56891c799e76c1a2e578cf1da7cb67dc2a5fcac373433c3fc3e96a8048f0bd28fef344fa7437e6f71f6494c6ed7f830f05ef479892e15a82e256b8ad6c1707874cf759dc660d3d69d9382e40ffbecc465b5027c34e617f661d096be25dcd7830dc10dfd7e23d895cd5e6c631e02f7009e8f06bfb583f7fab1cd4730165466f263c1c510782cd81473e9bee56a027a9fda0e893a21dc17a0dfca3f0717d665fbba0391e91d860531f56f681d1903c0e4edf8a5d0af6d313f8af112b03577efe008ddb4317e2f4ed78d013782d4393aca0873def1fb491a9d592d11870b64cce21bd71b26687559388a1c4433e1ea0ea25b985fd420fbac032902be033bb7eb50ca6ee8d8de11e3f0c43067bca0c941c84ba28f4d65247f8d8726c1a6a59863d33db2c9dded71afd8b53ebddcfe015e4fa92a237939aef64cafcf66b4a7bf349bb1103c8cd795c1df767de7d503dcadbe5aca45d5ad5d0bf3e913a64207df12aecfe3e02e27972b8f9da426fed500fd4d73226f7fb43ac37879e877b3cbd5352bc002d2dad76dfeefd46279660b87be0cc8de55217608e30375f3af7a35d0774f7df478ec328a1d6358bf4b5319f1b8a5ecfd193e3eed7d7bba8fbcf1ac62e7811ff7867babd07c98d947f010ee80cb0fb6a31d83ae194fcfcbe3ee7f90dfde5be33899426f96f6102a7d5adc0cbb99f7672c116af3c52ddf64ab4c914f76d5304f34c347f09d298e9b74cedf4bd392ef6dd939ad78ee966226e8e3ed0dc62a1fa17364a7671dbea8ddbd6b269f776aeba1409a9e396cb08fe731a698207c6f61eb18190f726c8efb0169df0dee9d25b503564f9ddaaeb8196271ebeb5545ef1a4d0a2d78881ac38e7037a599cb1d1c98e9b9bb7776ce88c6ce05c346d76f610870ba4714908e79f5deccc6983473c1fcdea6a7570b1ef23ea87b7cc314dd1b6320747ca802bd9f6f56dbe0817c50741fbbddabec6efad729cecf09867b79be5f12c3f5b41e3fb53387e87d5a1837186783cc5f36a3bdc90447a1aac83ca3df55e4d8abbeed97e301f3ed6eded1bb9bf988f6560b5cec490b06edba492287781e83d735e1969c411c2fefd44b3ad316ee18ac19b3ba82afc73034788cafb717630f32e24a7c2713b0b35c35f3676ae6cfeda3ef2e648a291c1ed19aa90ac3a51826a44f17c9cf84c7bf69c50f6e5d6c1dc6373f5fca7b626bada5948e1d5d5f65b34756729890b9257217f030915fd8c1ebe8e055408d8de1906b8f71ccb885c74239bedda5ccf4a37297f718a70ff73f00ee07600360def7f1f6a6e6cb82e4725adc22da7cc772ba867bc1d836c7dfa54778ded6f9fd4affd7153bf625bbdee5761a39ab2c3c16a59e778e2555e639511666b4ffef7ef59dd9a9e1f2eb605698556d38ec1cd377b6a227d935e89f89dc5c9fe142c5b5ae34cfa459941f91e4bbe93be4cbff67efc0e1ed88461d3f0c7727fb497583fccc891b5fc72b9d7c447ac85723c35996db13fabb928309c56ae9c3f4b9e76a4ed687d5d4b244968ceef1deccdfb244b6067afe3e5bfe30bf371871fd76438d8ef3ebcd704648f7b6d67264563dfb8ff6a4a92c5fe4483df780df6e8b70f01947caeaecb6fde5d2335b7d2131b2e3741cf723f2afad67825e2ce265b5c458c4389e325301ef2d4463c1e65da47aa4c6f1c1ec112ac80efd2ef79678e570294adc0bf8349e1d7d92165fd2f3fe26f778184ecac90e641721df3abee9f365b396cdea81b93cedb7682e0e20276cc60f2c83d20f34b741fdbf9edb9bcec7f05abac5c35c64ed79873ad5a7f123b641c0e272c320a8abba338f47cf7cee95f6cde1c1976c81f916c70b926f67e8fb956431cc5719edbfdc5bc0b3340806ea1fd3196ec25c3e010e9fe867e1695504123a965d3c571d76312c8cc146de63cea4771253b844849f13f91e145f521fc782617ea741ed0b18c76703b11ff43c9124d77b21bbeee6eacd1fa859385839beab3ed03c01f6b033abbfd07e417e15e136f209b755bb4e64777507ab5be4aa47c08e243acd81bc2f7063659a59f16b575c8e3b7178c58f7b70a80ac3fe7c746ac55e60206e9afe31dc03da9e87a4823a93d63c989568ec5ab672194c44513fd96c8db4eb2c5a78c868fe0b32ff800d8b7492f39845bae2c9c1acbcbbd6a544b608d91fe7fe5ed62a359c6fdca35b5777c3c175923b691887f3d539186c4aff219ef513195feb7286f30776124aab7aefa8545f4ac806e5f3577df62e7a7effb47cf7c7d52318d8b527edde7db37a440ef0d2175ebe7b0f4f4219215f44b269acf5fc84ad3beef4ab4ec4abae6cae61fbd965efc1ecfe5b779de0bea355adcd97d0bff735d8c84112a33d419fadd0e7ab5a53bc12f3a3c747c0b9986f303e04eed9ed5df7878928a879dac82a011fc7f9b8f41ab836c1da5633cf21d8a77555e8c0713dbbfa5295f1d75a73f99cf028b6ce835cdd7c597a9628ac1fbf479ec5306944c35a56fa2eca34650af5124beb3e8aac4bed0cece800f855d3dc7087e501f085ab20407a6dae46b84ec17ef83b1a276fd7eef1f53e617bcc9e7090698ce469cec6c8367d9ab38f68ae0e714d497b2ea8dc0a8fe231326349b32e859e8b22c135377d6746706a5723c35de47b0e7f911c973d6946ea77b28f20797a27aae76e98cf5f28345728f4d9858ec9234ce2bbaebc156ae2a3ff4f3ae61740ff9f75a813be0386c2d780e9368a4199b238cda48519da675fbf87d2b47ca117defd9350f0fadd7096b2e94caf5e9e5dfd714cb18c712e58b953db5f861a1d5e27b11886277bd2f4bc3731f60bfa4d8f6e2b3bd83bb96656795b86c631d797d2d483e5d333f145a8be6af7d6286dbf05fcf5c68f7eddb73cc7fdc986bb3923f9d797b7843c1eaf73a1160262b1997e62b8a81d5cd67bc9d92a74fe20d7b3cb6dc0a8f59d2db3a3d7a755fc3c9714db712b6be6909b7b51f5cc61b2778629cd9d3b39ce11bfb0e5848edebf7b2ffae2a289f801b1f9d3a6f4066a86edea5de92bf6239aabb72fabb8eaca360b0113f2955f2b9c7d4b447e6d1763f0970678c2ad7c1ac14f15c0e6eec6c1700f4feb7c16e34576c03a6fee89f9ab5ae7e29a83560f2b709901ae4834399f4386d1b961fda730bfec1e8be79e5617c9ef0ee793347de211f992984e7e8fe642096bb26f7d75721e513e6dc946bcee9f7fd7e178e9b73d1c39d6c6e9071a5b8675e76e40e73c3fc767ac4d66237c0dc6cb47f1a3a0df81e6fc9e7954a6bdfd46f0ec16b21f393c2f77f10bc70f8a7acdb03ae9f76d9f9e8b4fc5863deb8b7f61fbfe21c63a9271836d1d0c1aae53c0a53da9b1365f941ec6947e683cef1cd403c07e80674736b2e6c2daa5393824f38a3e3b2444369b5bf1bfe3f7d8e1391ef339f4cc6f716979e56a5cf5f488aaf113078222c6da6457ad92bba0cf9f7b0abf946907db18cfc56a7caffbce8fa4a7f37fc2a0f985ed72e4db612cab8eaea3fc02c5c14cdf5bf855271e9fab751d3e862de85d9b8cc35aa198809a559035f8d9e9659f7258638d2dcfc52caf6ae2b7f0cf0cc09a97af48876bb38be0b2e7ae2e9ef92de8934519491d3d0839bff449e7ec704cb875cc6ac697e6e4c1375e4b3b99c7b3e4f2d83c5ec4739c72f0dc3316261dac30b4be955d196665e59ae9af304376fbf9dc773dc3be08ba6247505bddaa215ac5ddfa0bb277b3d6de757674ef66bc5ffeaceb3b316c8611ddea77ae61dfcdd560690b85315083e54c786fd64adf75c5008daf0bfe5b6bbfad9bfd46b0b46dbf40b20f736b7cff4f701c0dd793e2aa3ff9431bcc9961a6853eb30b6d920e0ce5edd7da0adf83e4deb5efe8bcea413d14c27c76a57cdc6b01f0ea6acf19126ef437796911ae8ff177bc04fbe21b8d7b11e4b33298671fa634ba4673350e4e84e7ff285e0fcf1cd66a9f9fde879d8731f277ef7bb38ac933bf072c4ed6d88634bfd48e9ff5e422cc2a86d86f0fce31c4292df9c6b0c71fe733877f4d63a331fbbe06fb8ac3fc1c81bfd1e19c849a63279769ed1ee003ab891fe3e3a3c277a672a4400ce50372c45c8e19ea69c00ff2787f3b3ecceff0bd67d2ef799e16e1ec59cc76e8b3a591bf5e7f351cd13de792dcc17c277b66fc403209fbfca3e798a9332d837ad81a7bc3dd414c10733567ac0e8bf91ae3ec03edd706b790e2725e6203c97267c671f515755057c8f79df098f59e898f359c09c3589f73fed9849da306ee6716e63361effa9989fc1ea5ca9af3abf8cb91c5c6a662bf031e41769ecdadb77c5a46ee0af9b779f33d5b77e4badbcc3bd927c259c27eb355ecdc079db075a0efc662f7dbb5f61fbb0ef3e72c1a1fa0d7b2069f31f2654c679b05a76de1e759161ef1f538eeaa2214865924aa19d6155989de6161cd647df6f94fc7bbd5dbd2b1036e102fedb1299cc1a6ecd71348666f65fc7e0d1f4788ec7e3446c4365d67321983ec122a76edb9db22caed05f0debec4e9fc8f75e7f09fe8ce176be7a7716aae0b3a55c073887442eff8520e7e6cf3727d81af742fd4056bf07c3fe94a32eedc7aee1f47aa0f5fdf1fea558ef2555376057096f4ddb7934b329c1df537ebff9ebfb9791d1b703bb1815d16ebb95a04f986c4d1ab7d505782665641dff3ebf36d74c0fbd3f41defdd97c8dea7d757d8be4e2227a27bda227b7aea3b7e86fc269f70b17470581b6e6c671b63bdf726fb767977214765235ba219fb199a8baebe27bfdf3de9eb1e7d2c54eb01c87ecc4bfcb3eece0e38d683f646199cf07ab55be774b9e948ee1dbdcb785a010690bb457610b77e22e02eb6f2cede9a6fc16e42f3003611dd1f2c2e48e3ad4f7ba56d47b46325dffd6b12c93cffb13e5d3a31d322d3e7ab2c9aadae9efbf9d82b72130f98b3fb0bfa7c257a27e0ca4f90fc3e9855ee9931f151aa2bdbdbfdf2b93d6648af4ed55b538f81eb3a0ca7bb4e68fd73d9f4d91d0b539f6f6f3b828d80f601ee97b40dff58080757788a13d35c4034af46681e16d6ef3248be93f0784eb43a76c3a4fcd3c3275e74f3052b3325fd8c6fb2af4ccfbe99b5d72af8d8c27999f8501380f177bd5c9b15370e3f0ffc47e47baecc27dbf4aa8dd57a9d2cfe68b3a8d6eab2d04fcdbb6a93a5a49999ac3598d0145f0070939af5b645fe84bc382dde174979b6078b3f5a9df23865e7e5c3831aa2c33fd69bdb7faa378d273be5a4de3a764af2a39d92daafec94b7969d92ae9eec94c8e1ec9493dfb153daeba289f5d8b1365fc5740dffc772cd25d783ba0b1bc982323c8a99f398f1dcca89673ec59e693ef6dff24d42e8bde5f9fb9ecff5496c3f9a01be1fd187ad73bafc9d346722227bd8436b9d9369cec0473ab289058c2be107f97526636884caac8a1c5bf515fb1a2959be77ecfaaff3827403ba36c75fba77576bdf8d4cdf59dd827c55048a5daf93697530aba96789e81a318741ccec2c8e27f6dd227aad673db3d8a647ec4ed311efbeabc6919249fe2e8e837c5bfa563123efb5f4dcec16b94d4cf48be84862eb4c3ca64f89feceab66ed1e0b897c4f6b965ee5fb4a3217729fbdbd935edadbaff020c9f5d23280f5f919e9f305d2c595cbe9132f9f3ecb54c66bd8d5a197a7b56b58539ccf41fed13893fd3cbb2279f1e5f69cebd8f2c14c4b67b08dd0fe39f4fa09fdb9a540999e43695aa0f760fb2cbb48d8566ff2abd14c945ff9197be5473fe36ff3122cf1b5396ee0ec61e5f66097dbc7401a1ef74e9585c773bc7485d252a67db5bc06c62cad563df5b66627eecf7a8fb81a3dc110e49bc6f09d091652b6ba91da77dc034f8eb76348333e065dee4dccfba09f888d79e4309b01538e8b11013616d4a5d686d38a6597410dc75bf5ae9633e5f0055723c39a963b521f8cef0db106f2ace9bbd65363fbccc356312c41f5285c56d674c07185e4863b44b2ef419eade8d627eff3691777bfdb93c5f68e07b52b5decf99718b6f1615ef99119c73c2f0ee1b461fd2d0ca399ebb12358c67198db0da706c6d67ae24535ea6fe463cc016b8ef6a8332c22c07d27986923869946b0654bae1f84e46cc8ba723705603e121e871560b1e1fe7fcfac14ba1e3d93d64eb7fa6b63c3a5fc9f1bcced61c6859a8fa0fe636f8971cb87261886c02fd2e193c3d8c4b3da37d35fc1b128c3243d639c6e2f8767c738b8785d26e9afe0b4a4b8da058f5979980815d4a3d8b6a829531e1f91fcb6125afd720aebfb93a30e56faf6e7f542383efd3204fce4e7f70c9334574f1b8c0fd0600113fb58c4b5dcc4a60c6abfe0f31e3e8d833d44c64fcaaded9b6695a4e7712a2d1fdf827a627d4a2d0e536eae9c761d7cb73f568d7b78ebb3a67e2b229cbea40e94c358a0f5930b5c6bd85713d2c2b0db2b598aec8305e991877e76b71a2d389e73ddd9667e6ed7ba1b159112df22777341bf6bf0d2c8efcc8cc516b5c926a77b4033b3befa2ef94b82fc36aec5789cef07b33a44048f91af5dc66bf9bb5a4ec2c7eab1a9d69385a0e62d8c38bef6fa6648231c13d8917a0e05c775597f00eb352575200fa175ed17b5661ffc35d7a7adaccf648cfb36a6f83b977ff33d5f3ff33a7f63bd683c9706f063901a6b5a7b11f4d74632cc22c8db92670d79bca8195b6705ae4360e3d2ce9be54f791aa2934abeaebcc52b739837180cd198c90dccad4d6af3387d54af3bfbddeeec77766fcc3770ede31be0ecfd9be16c31f66b9d969cbebcfec7fa12380bfedfeb4bc7791a8fc24f623c162c0f053d7c1f81939e219789f93049ff30c84ab04b300739d717cd73d838bc3c859e511e4398ebb5e17b1f9ade9c66cc16853ecfb06d84f9330e411d37cf8f6c17737ac7fb9ceb05273d0a2c8fdd793e7dbeeced455f4b538a3923537ea108741ef34bca604274fc3fe2bfb8f3ebb934a4bb1ce6a333da4f01e6b2c800674849cf4192feda2be9bbc7f38e8f1bcca320f92b3f45e91f851f72cb3f7349787fe392b02ef9617eff01b36dfaeff1a7fcc02be1fd03de97c3fc7e0ea1b7551d1de6d0575a024738d46b225f6d81e456d9e61ffd7e819330653c0cfb31f08a804debe1fd2e0216c7738d0fd41f87a76a84393bedd141f139bf653b3a28d9cda8bf7f9813e04bbbd335edd5b0c65fdc2f2db5f952de3b32d895644f3cc0f61e57a2aedc0bcd1a9dfdd38f9c1ff17fcaf9d137370de7c74fef3abdbee2d750133f7ecd01f2fd23878af70ff83be0fa7f7f6fa847fb81a7a4fd8cd36de1b3eb436d34ab5f014c98e49f8f4587bb236b7177981dbd4ce5d30b7d1d9969e9355c3fb5ae346b3b42fba2916572007d34cbffe6b322795c516ece2f69da705f61bc809271a39bd5a3b3cea93d5a021637c50473765d1cb35fe1a35880ec243e5358b7de196a23f9bc37958ffb495b96bfc0913b47d6b38cd778be3877f72bb280bf48d4ac42a4764264bdb62bb48633f70ad8b353a40f3389edef9d5f079288c7e0519ebdc74fb27cfb9fc97233ebfebebbc75fefa9999a79928d741099af1fb960faf675471720bd847b397c264ba13ef782e522f2f92a5133ab027abccdeafc421ec78cffc9f92e3d82df8b7ebf671c31bffbe5ff6009f8bb87797506993eaf467ecee9e17935da23bbf9272ea7b1976bf34f2a9753cc77d17f3fcdbc9f83895804836a14e5840b42b9a3f73cebf3df6564a68551c7c7ff40df523ec07f5b96532e46e0fffba7b2b07bcfbc47d6cfe8da8b6bf28e3fcbda1fe4357dc6bfc975c6633f5f94e118f0d5fe3df9ce9eb9eb6b6cfea693feb2ffbad75b88abe4596774e7bb2b879bb9aa1ea416e7c9a65513fffcfc1da9679ddfbb7aabfc792f47adbce326b7f360a066ffede7581e77d2bfabf7c2f16bbd178edb7a2fc2bd95ffff78b7c79bea6e0ed7a5e52fde30be3a8f6f6777e2cfd54d732fefb42e704dfd2feb37d47cad8e10cfc1f7ad692fcf22579359ccc56190ec3f104e8d12b0fc5a71b24bfde4cf4d617e197601e5a70f1f62ac26de0f73fc067d535bc5ae913ea2e3b33da9b76087fbc49afaeb618d6bcf16addc7d6b1ccd76bcc2b3a0770cfbf813d1c27e45135f257ef04de3e3b7f68acf053c20f66b152c8f10d6f4fc9e3d40f9cfccaa3386bf5fc665b652bb8fa3cb1bc9db514dde4d96f6e6f71db82959af546357f5fe86e1b3d1cfe93be59cf1dd18d9e8ec9acd3977a8e1b429e7e233ce694170202bcfac3ccfac5ccfac169e257ef461f3e873b4c6d421c4bcacf3fdd0ced5e83d359f25f45b3ec74c6f86adb67a0049ee87ae8b7378145e60d855236dbe90f91c453bced5672f7839e410ccef5acd4738ee51c7b1614eef4dbc64991ba620adf8baf0269e86718e9ed68cdde1fd4eaf7e4ef3ad97d1613c8538ecde1cf2350731e44366dbf3de5d29ac8e60508d34451e1968bfceed429ba9377d32cd031e83deddfcd25a3911fe7e65ae6610eb815ebdbdc9633f57b7ceb925da5bd14448713df3a60ceaeacaefa3bfc750a126a6771f99cab444eb7381c6ce51b3f09977931f8fec6bfe9979836de64fab9be76c777b47cc8c3a160c13ea3aca688c64271f1bede5116ec786f3a1fc2286bcf04c1ea766f958593b613559d6fa7c03b8c7c151f42233fe8078ba754ea23c036c41df5c945c9c1f7a649a1cd35b539bf2229f12808d12f7e503603ef696b8a57ba8337f859efb8c5b1b8f05f88634b779e3f24efdb6fdabd834acdbd1afa7b9b58ace7876e3f9687ca79d183eda2378fd5824a67ac8dffa7bd476710c7c2c497c35eca2898193df23bf81cef96b1ca2b74eddf9efb4932fa63ddf0d4f11f78c5cac3a33dc0bcce33a51cf7b679bface5ba22bcdb3ac735bd69b7aa7a2e5cf22dfa6c174a6f98c3be6806f63041aceae58e723d9c11c4c85ded43495c191f066017f3de553aa6e6d6ea60e0624cf0b82711ca9bebce94a1b9bd1c9fb7b9e9adfb4faea0a0edb1c3d9b1d01c63d1b2769efc2f7d922a99ab57a44722125b94f246f77242f05988b57b6efdc459bafca018e38ee5d486d3f2f8b61ef009605ebad6bf8df28a7de375a6ff9de55f91eba9e9e3c2e7f3011af6dbbecb92e80eb7127fb7dca8f1bf40f743964c287c86408cbf175c78ab3859a311b1584971bd61fe4cdadd159c3781534e7d1b3dede9ed79bbb2cb9dc720cbd2f2d2cd094e459da389f41d219c3f1735fa367d25e89ee7c806df2d739a0e792b515ebf365c1e3981a8305e588043ec010ef0fc0e2de9b0ddf18e707b678fe60fe5ab2f88de7e3a8dbb2b9aadbf9dfa2e92fa23d1a833bb38d612fb6b1a71aae03e0027ae3f0587685aed837c0ee23ebfda9976ebe7df4f802b4f6a24f6770b8bad35f7d768fe15e8a50005b64e0b96a1a3e8a0cd970b87e1a8d4163d7b16322faad2ad84a7641361eeef1ddbc874925784e56aef3b732526645300579fabe37ab56afe93a97e57512c77a9e3d3660d74471986f91dc43fe25f101549edb3366f5364ff7476b7a8ad7eb04fba4706fc03d20ffe3e790f7b0163bebabeef45cbbcb9edaf7ddd39ed19554c6ebc8cf3ca73242f46c187787dc1ff27e8d4f91b474f55533efc4765de4c856dde5233e275568ee425e9a7e7d9840af6ee3cf1e375c7f50dcf28588fd2aadc60d06aa6666c23a2778980d76338f6f4ab130abe5436038a67c7eb1675de56a8ad77e90a41f247f09d7585bdc35767de7f0cf4ce514ec1ff27f976782d92c1fd867c9ae9183b907239c172d18c6e684725571f638c701d4c5896bea7b86a303b7ef08fe22e3da580f786cd821f86f3d38d20287238d3160391c69f5285480b745edf6f9a2e06c858cd81e85d61777b5288f19cec1367c2829c54b4efc5cae236956fbf36542e6fbcacd37e00a75b8d0aeeb166f16c8f316ff2dcf1fb3c178ae48bf1686f306f5debc2e6ec61c7ad6214fb6e770c05b7294c8744d495bd7e8c85e6adb0821f2e9c7d30a6aa92046b2ebea278ab34a309255b0819fc703db0b3f3e17c7abbcb7ca4eed12f4ab14eddebe94f7ff3e0173d9c43dbfc46ee079a390cfc5bd6fda7a5f34a67bb32a0c772b47f3e519e33e57578a138ef197da58000db7005e0791229f7c777bf6dd45b23e6d1fc8375a585356f7886539eb83ffe17a1c57412f7e04ee87e0fa817a631f4dcdd95b4f1d18e4f452df05df3f0bf255e1bb4bc0dded1c2bf4a9ff3810fb00eaba2638de15703610f1278a2e861e7034319b086335530cfb7ebe8c658b038de07533590578d1ca1bb63b26dc5a9a3fe37db7e24e980fbcb13d387b8097290c439ae108df31773fc7b7456c1ee1396ed2f62dd7d2f39ee2eadbd8b3fdccc5a93ea89d03f1c49d7ad35cc6610ad8ce7ba75a415d0ae566cae3c257b659902cde7d82ffbc77ee3c3f1cdd8f1cefdbee83d33b5997530ddbb629e617e0e43a87dbf80be3c86725b9f67b8fbfd09515c74042f6c9e7c37736c91af40ebe46075be847f9d9919d484ed63fcb49b136249bd6b5328cecbd737f7a07faf989f37c52d44fc73a18e7fb7f68cfac1b4e5ac67b41f0e61bce19cb7ba718f42bc691f29b1d6b786a427aecadf9ed821e1b36c7365dfc7c8671cf71a6deb93c34d249a73de0f2b5ce7f70e703c709f08228c807078e93e3de4c4bc0a7c6bc401d6eedb42fc60a73c8e734c2a42fe65ad5dc1e64fd3d64ee5abe0ad5a72ddb675e8db469043139436ae5bfdec364c8e2abfdf90456cf48c67df76e416d4e83b7b65346e7bdd4b22d31b6088c015f0f3d6dd70676ebcdecb885c5a2637b295f3435badd5a856a79fc6ed5872edc450f9f073f0fbdfc3f12e4ed065df9847983d0fb596ddbb9dc425e3a2dbe068ba7da08eebd19ae6a6f9d5ab31f6a47b8d42e7ad6b91aa87335027f9971dba9e9de9995811426eb74586b63f5e839c3a3efdc1318a7293e1628f2c3371750d7d9913f857f52e3c0d925645f2481a4fe0bf9498b23d94f39f01aa78b63b10e93ef2450e4d81ff75e4bda3bdb2ca8e95e53e3c8d916e833e538003cf6a95d77f1d8add3e2bc75d5209a097dd7a55863f41d333c3ffdef1338217b97bd23c6bec4bd9b925df7f5e21ddd6f91e3fccf02d71dfeeddd52df053df3a0e300b68e04b1a55ab32e94a38f8c59760de7361a4301705be74b3a174570f2e340c9d2dedf9d5659a040bd0ada7f8768a0c6e1fc93c334407ef26a153995b0773f4bdf3ac70b77790d5cbb8c94ec1e28b6fccfee03752f313ab63816e28fcfe88a1cfefbfd7befbc7def069b73905404370fdb87619d3df43c8e43411e009efee0330b4fdba1a6dca1be3d78880f47aa227dac72be28c4dd4ba37ec5e936fa152658a6119977c579a611c618b3cb848b7727ba22479a757ec5c57d5313bfd6f1bb6359e90c052443301f1c70f4ca4edd7abe12be1385627dda5df7caec610d22c0c60c15bb8ee6e9391873b817f05cea2dc856c73097cb00d71d956ae2c39a09a5558df43d5e7329c72df9c67ca9bd33bc47ee2659279b7398a46578427fab07e17ef9611ecfa986f6bcb212b4f9e2c9360f25bb6cef6bf94e6a1bdee95a67fd2b93f30ff86ecb6b200d2781921df730660bf4f9089f1fe2bfc224934388033fd73bd39831c5dce9d65ce05a769be7dc94c1a777463c57daafe051dcf45c1e04b95d6f15f918613eb412fbe43eae499e8829f07f9b293b8ed69937508b708eeb7883e308700183f1f088c63052ec19e541d2c66aba77bd4433d3ebde195e7d575dd8537169988b11606cba9f8271ac427d003dd8f768f296e894c7c5116f516e4fb0cd1e0b5dfe18b4465f71c9eb79f630062f9e49792bbfa4ec01dce8ee4ad6ac337acf52cf5768ae057fc7b8e1ce4192969c3c91193fd84404dec74666ec7e05e3e1a5912942bc24b6dd570eb66449fe87fc33d2539a9916eb53ff335a19d87c57241b1addb525ba6b5186a4e6007c9336bf91a02b77d9c2b205c9e46b63cf6f0bcfa96e3e93ddab38c85759305e405f05395606831592c78266422cecbfa6eba077e3d1f05d327f37cf52df19b1eb79ae9deee133d8ee37c3fafd113caa599834dce5415dfed176c35a9bdab523c9801bb596460dbf6aa30b0826ea93be7af97eff0bdd277475dfab77f5151bfc80905ee3b4bdf9520439c757bf61b2ecb41530af239ca7d1fff1b364c0afbc7736091e8bf63582c127a9e52a6e8623d3eb3cd908be53417dfefab4b9ba83a8f6dccf3bc32db7c48f489a3dac66cdbf2fcc59ade7a218ccb745a840dffdcd70d2f3d700d920d507e17c7ea7bd8107f39f3d2fd8e5c0a3384dd6279b7fef4734c61ca93d7a56e0643bc7f33b92c393682139067d73d8873a1ace88f8b24bd0c71ef0adc4c75efd3b5fb2be18ff281e9dc12a5a83becdd0dc21b9f03006113ca79fa4ef8b7c1b07799485b92c865235dc49b66072f20fcbabe52f6ab76b8a27fb4739d733f9b09f6f2fc18462cbfd46fed210de59f18a75f2a4f71faff5bef74b1baba0f73d57cd3cc2517498df13cc5de441fd2877ed17bcaf5eaee622bc1bd2e3f07ea79518ce3f81eb87d914533bdd13bc605b9ad501604ec03d1f6ae225e1c0be8773c0c25e109fa808a4a1ebb9ea156438d47541cf431cb9dbdb36978f91bb845a24c0cd9af7db0e619db271f4132f5fe4f275476d043cceb98a6d5ea4b76e8172c76b8ed91be8fd16489e3e74c583dcfea1898d70f293daa3c846d814fa5c25eb12ea6fba7b891ff777751c2319714463fd6ce73636047d8f30a15ceed0cff5f0dded673447ba4e152365775e9c3056c3224173795920fb81ecb5e2277b38eae8a885dbd261cc8fd4a086903e43facb7337e7687c7f3a3face1ddf9e766fb8ef4efe76a3ec36ba7232b90fe6c7a7df1fb74ecb3660fffc01912d4c35b90aecabdb3fa43faa86e418e3f1b4e816ceff73089c1e77dee41c8649e1713f9c3dd7396d6e28daff76bfbebde3be6806bea043afe6a614bd333c469e79bbe3afe9a7150486d5ee6560dde7cc1c7a8ffb9cf2dbdf5c50fca1f7c6ee87becf5b9fb7a7db38b1e66820c35e4393ad7c6d80c26e546ebf63ea4efc05d6e7e0f31ff429b43719dbf5d834184e4e49471f5021e07c6fcb5915e98c23321bbbe60b691d28e7518eea2e8c643d78c8b79d9c4ace62bc8e5e0fefebe7af97b6f7d9a51c75c8feb5be9a3f79a2f640e53b20c8e5087dfe4aa26328f5bd6379eed3aaf14c794d639d737de8f735f03ff74c2d7bfb5eb319a7cd9ffc7dc9b74a9aa74ddc23fe8696cb0c89466a605a262454d4f2015049427b1007efd3762454180649e7dee7ddff1ddc61967a7224510b1621573cde9a48afef3f5792e1207f835f7c6414eaa3d8f7723797b557335afe47b37468083332ed0afa5f9955021df1aeec95ca03d00fa178c0bf432a0ef05be1fd498afd1b9713d4d5705f53cedaf2ba5bf88dd0ab07db437b9da95aaeef7d5b39fee2e6a769c1797400b777e594cfd32ce203f7829465e1477f5dee09a14d3ffe4f297d3fd63396ee0f0d2457a2b97adb9d585af6ce5320be4fb338c8d0cebaa95e79bf6ff657eb4d8e819f24faa83166a0dbca016fe3077393d4f722ed0d3afba31973c4fb6079c6e5cbdbe8c33f86d99947e1996abf1b468d82d3ca735bf4f34df98ee668d69663a9f659cd15c565d63e3ea2893d79a9d37a175b998ea3ff3efb5b71e17f57d71f862b48f792ffdc1645e5c489f8149b9ebd4bc8d3bafe782d2aa57d2b8bb85a72118af576eeef6ef91bd1910bb4a75961b7509e0f886fb8fe21abbaa2bb95fb6757d69eee8058b436a856a9b6b9cd72ea6efbb6ad544ff2ce7ea2bf6089feb8e6b7c45d5e26941f7f09287edfe8eaf41c277ddfa7cc826ca26e4ec5d6b783e58267fbe86c62eab49bfdc37c4f67c7d11fd36afbf23f548f63b1c9313cc65d5d55fe175f412c0d8746a0bbce2403b9e376fcf47743edcdf87bec3797e9ca7d827b8d661de9d5e92f825bac7d66795c8ef3b78ffbbdcc833671cb706cda930ae282ecf423e9b0baf35b03a972f627bf42c16098ff5de8fd488c3decdc5369e82cb61e1dad82272df90dddb2666f5e2a79d77b95f09a1da5ce79df8debaaf123478aba5f552ff47b624c7b62469e5cf1c61355731971ecfd562efda7938ea4bbeccdb55bb070a6aaf0ae92fa86b87a45688e21d8645dd72e3a1c3feeda48af5bc3b5621b8f6e28efbb99c70978edab69de856bfe2effca8698b282704f020b76c02b59d940f438d3278272b5b41be31f07542af687f1ffa1782e1c6efabc1eb51e3e3bac7d6bfa8571237e535e78b50a99521ae27bb4a8de2773f1ab6706da3ab37e66bc1353686c36ae4c8e768be3b627bc7f19f662df9f9c6ff0ef279188396bff8fbd8a723b8b0d1d53bb3f797d73d2f04ef1615f4bb263666aeb4ed70fb5db5ce15201b5206b37de65986f495c6a079f8522f1e1749bbcf22b0e2ab918e72bf1a158bd41ca9e76bb1480de01e21712fab0dab15adf92a9c16f96714d43e4857edf3c596c37e2bf3b5ff579db145e444b58f69dc5ce074536e412f110eb224066311ad0516fff811c6e176f48ee7a456de15fb88eba82035f0b6169654614ec326f681ab95179bcb67b69cefb0ed056c50007ced5cef0fd12baf31bdebc9c7701db9d0cfc030ca9a20a893b88fc61fd9af601cbf357d401562c7bd3cba921a777ad0e2dcefc557a71767ab5900fe688d0974ae90df65b8c04e1ddc7233811c40ed7f72faea709fa59b1c27682deee8338bdc7b5f633fabf88b98e9899eaf877c29641fb9d8e85f8cc174c85dbbe5dbfe938fcecef1e4ce2174deff59a5d88572cdf9e6ce05b8eac9b1355eaa695b0ba93987660c4b83f9ff0816465322e019c45a9af765253a504b9a2b528d571e327d463f8a1936dfbb886707cf47d00fdd6a0bdf8b497e590e122fc59cd95eea9f802baa97bf2963e51b345aed75e55841b22c17be073538585fe743adb157e761dbda6432709b66c726af7fe59794bb1a3886cf5e6f58793db4df525d3883e59b8ed63a64f5b7fe3ac1f6ca7c04f6abb6199dafde05b40424df9a4a6dceea86fe388f85e76204ef4c628489013519aa95bf3e0386086357eddd1df2d7d6302635a3ab173573333c27ce9af0cfa1dff2b6ce8b6adc58fdef1a03e64505e172ebc6b87ae706c615e79c27374e83b2811b6bebd8324ceb71cee3dcf139e9779b1ef8676c8e35f69d1a4b76e7f0ad70cf9c3f26ad6661d8e22a6eebf63c5af907c2c30038bb07b6d7c93bd69fe2f353c5ce2bc34d33574030efc06f81f7a35febb8e948d280237a04eb09fe0d6b4b050dfb56eef5e1cf71cd15fdceebefd0bc22391e56fbc8fd4af4ec5f72a55e2566cbf94d5ac9a31c3d3f70e352fd18e413cf15e9a085ef47ad2857f35b8f7092324d18e0ee306fc1afb58d7424f9fcfdd9eb9feeefa75c68f84b2ef497fab3d2aa3fef5eeacf1823e9f0588512f37a512c2bd1a78f8657c75e6f03d0d4949eaebd10beb43085dea9f297ef885fe589b7d4c67c7691dfdf0f3dd9807b7559efd2131f4334f41ded33f3a2cf7c693d3beb010ec9791de780b97c3f6a71ee25b7d0d68548892857d72276ace1c5b5178fc05ee75fe63a09a609f2894b6db65feb6318d7148d218f8d00ac54e4a4ffb2fe91fe75fd033058aff50f74cd9fea1f6e14fff1fbc56889d742b689c26a6baf47c7d92d586a68fda035e5b0be4582894c1539b92bf5da3e6fed85e72602b63f131a9f898f6d4f429fb31a1ef2637fb88f74910247480e3572f27e1d2e2784ae0f38b2cb5af8b28a04ea3396039f790c973b8539e78de3d01b77ce1fe01b754a2775bae7177cbf9487a3e318f9ff37b416ef566f16a03d7ad99c47e7a5a5fe3c8fd2c2734c013dd319fd1e3f173af740faea03e734fa5e72c45b68d73c7030f7f877826279a2d79a423f23ac23f5fd2fe722dae3d26d199eb796fac7298747bb170a9ef5acdf095a231329efa81fb238168d17ae73407eb6738e3865dc55634cf91aa3f2c2cd55d70d95172eb5eeeb2891f2ed94ffba8ef82fd751287663a91ce4a3d2f97d46e7f47a439dd606b764bde1fa3cc320417d1ef29bb02f936733d173c56f3f70249d60cc597d4945ebe3be18efe9f7e8586ddb531b1cf6d0035789d5715e78b61673f346453e13e04f5ebfaf6d27c4784ccf5c7defe24c74bb72e336f201829f7d80de00bd83b2ab864675e5fddff8986641e258b7b5637ffc317b667810c4d09f64e8eff746bfc19cc33b9768fdae1fcbb150e07533141ccb97d412f9429fe197553c1c6b277df5186687ea36f2bad1646fe6789da3e1b9e6f6179bfcd76200bc79661fe72a34a885a277af421d6f690bb97769ea55137f1930a5c836f8bdd175a54f730f78788163b862ba64368d2d7fe62a24f11cc6dcfeccc5c3f73e272b5213867e017936042cca44fc89dbbbf24be091407eccf5a02512e188001f8faf777469bd796d3eab1646f095030ec708603f7f1bfbf267df0663dd58fe6ce557d2caafc4bb6bfb27a36782f6cf414e2a5b8bdfb4be7a77ac7dbc9cefaf075bcd56f375b59c7ce4ae16d3b521507cb4d3cb515c92f96583e7697ab0f61387e1e9497d7a7ee38fd149fcd4e001de444a74c47a167732a6e95fac0bddb577785d88eb249864e8efc6ba38c0ba68709094aee5b474e48dec1fe64c4234c36a8d443e7eeb6522eef7637b59c273c6909c0b3ff7e33a56fcb1ffe059f70b4c3bfa0f9492c5ef6716d3436e443d1b3dae46c5f3840a1c476e370f75fb73d24febea5423b7d93fd0d406df8f5dcb7df8a949f9ba90cd4b283ecfe478f7025abb8ec30c6c2dac6dc0ee95a00b9c4847e4c33bfdfdc2bbe0fe12ef17bea2ad556b9eb0fc4595b5b4414fe55a77389e2027ddf7410b9f8f6f0947cc2c035fc21aa61edadfc939ebf1673d2142fd9e7c9603397669c2eb4ed5e6cdf579bb5dcf85fbbf9e0b69335f4f6b4138bf68a0d8f645bfb75d6f2339ce6c69dfd03a477b00d604eeed1f386fa0e23a73e90a344ff8c5d967a631dcdfdd6b8d61b15c8e13a9d6eaddb35c0ee1edc98ed6fff2bd53fd5c7bf78eb5d2b14630c9110ab8b733c6f90fe4bf9e59ad1eb82c9653515cca038cf79c1b28a61330b6572c8f76703d5845b29cef207fcbe5c0bb7a7a04c81ff075f1c92ef5a27a3ef23d22dbfeee277ecc2be9f9bfaf52ba87632e49921b01fbbfed757060627e4ba609d0d50302ebef47bebab0ece41df93f58b34b2dce484f265f7b48209ff452377253af0cef44832ee3d678a35ff187f982f35e73c689d195a7aa825e82f519eb7c15f29b685e05ad7d81cb5935f7fb66bee2a4fe72ecd1721f683eb958f7b43d5fc45fe70b3f5eb80f3c5d9c9b73e8eba25ce91c68e9aed25ec9146b0040ac7c5d6a31bd768fda99f584da9669d73ec3f79d41ccc4cddb7b67df7c44b41bb89a1c5727c1f8f073e76feb9a22c646dd89de45cdc1d5789f4e1af4d01a8d33c08ab3f711d776b3aeddd476f5ccec6a776de7d25933e9a92fb59280e5b91b3d9ff6ee9de629d73a9f6f65fa09f726261df283c952fb11c387d67fb9223981a50678c73a9ed725f45d42f440700c077d05eba727cf864af48cbc54babb9a922b69826c4c19c8b37b3056b2cd45b963fdc122fcd2057a1ce55f28db7372c3f4c9bbe6da10e37df55bc6b487313f17ef97a0f59d75c69d8d7b8eff1c88763efa9b6a2502371d608aebefb67628347f5b40ee9ce36ce8515b89d6782bc74d7a3eb0ffbab58c3f4aa4bc35752529af7b9d0b5f4e944aa9cf992eceb4a68bfe0ef89ed78e796e8e8ef200ebca34f893980d41b1646d4f183710e061ee351e06705699773113bcaf92735ad43eb90f3f3abd3772e5ac4f3a6ff729d6b96fc086d5f97bec4b32bb706fe4dcf973967cce9ffd3b6ff67507cd5ad1dc6df45d7fc9719b6bb6912ff892639c97ed89b783bd970fd622f113f3eee1bd32c3f5a6305ba5d27dd7936e9e9508fb34895c7b617a29e6d95eca8b0cf3ce50bf7e947df545b627b85a732f506bfb58f07dbd7fe39b613fba895b69bc732d04dc478beba1d644b5a1d7a7eddf0036eaa08b25a79d8fb16ba4eeee96058fa5cc00e3417089ebb15b2eb564ddd637f1cf6242343333e4c7310d6364cb2ec6d58f8a075a57780e36fd3b0fb0e9bbec68bdec8dc8b65dfd12d9b7e78f311ec1ba356a4f5ddcc0ec1de2184d585d189f58177658a8b99c7ff0637ebb46c7180077a82d366b2213e3ed005c166d8cfb87b0b9b03da235ef135267df35f6495a3be0f8cb08ce6bf723ce2b18ff846bdb75e3daba70d655e7774d9eb90eee07ee1eeab54fb9c8daf841c2a7d1c865d93866afb5340dc613e0f68b11cfd7739c3f05c269836c6ce33c769fc4fe938cdf8ba1ee5ec78a35f682d5116d786f3cbf4e4270eebfc5764f14dbb1faab7eab6d87dedadb018fd288efc4cd85ac61d04269ad17e68fecde3056e9054b9bfb672154271d75af4be7bd16e85e55dd69c51ea200bc2911e69fe3b83f8b7519a3714c18a70cf167fe2feab2371ff9f3cc8f443efa8072d1300ea2a3d5acd1120e927fb9bff8ef6b8daf533bbde63e3d1d707f535ea87291b231c8eafab47172f5269f128b17e6c5683de17c3babde8b15d9f88b3af81e6adf8ad6bcf6d226fb6b47bca1ccf7d2d156fe38986f06b8d33697b0c2f9a8226972407e467cce95e67af1daf1f3832e885ba23bb2c6ba59f0fe0e5a226cadf84f8bbff7adf5f7fd80314a77a767e4ae3e1a74f52aac2ea05f7727fd08f01be4afd2d810dbc518f95a997759231f90e4940c8c73d0afd70d1963be2f97c47d4fc7061c25e66ed03acf7147e77041e769083dee5eba67fdb20d1c34c66fd29856f37a12c177e2dc10e8cdf15ae0170ec78df6165a1b06fe5aa3552b8e5f7114b6c2f9c4e027303ecea596e0fa1bc72b447a7edb1c2b90e7db9409f7ae215721f0fe56433f6bdec19542eceb4a8e258857ecc5e83881da4b89b59ae22c9888d9b6df8a832fbb16ee3f81bfbd749dac64e3cfcfef35bbafd2d913f692297966e871fcf763c43fcf3f8cd1e06fc728e8ab5d381bd08a027ece4a08553da7b62344be8157891c27d18df0d19dde5fede2a89b8fe9fc912db97dc43b8b8fd63ef278dd4714d024e2f62e869babf39530af811fdbb192bb6b2f165eea3e567305f4b9d86fe7e2636b8d38bf7e2429faa754c7b031dd837b84cb19fbc8fddd1bb7df565b7b9707ba98ade4a714a031020e13e4e3ab98db95ad99278d6fd2c519f26939793e8645e7703939d46f6b9ed11abf8c631791c63cca7cf7ba4f8d7fdba79efc3e9537f0437683772f6f1c8bfeddb52f8db97d6922e6fc1cf3cfa32bf2b356730338d2f8fe31b073b6dab0737ed9b471d06f62493dd7a06b06d97f15ddd3cdebbb09c570055a9c6dd2c1cbe7ad6b324d3f78c793fa1db7b9c50e1c2f9877063e5c6e5efe38b76aee666e0f04ee372beec482f1f71360db97f1369abf8f7f7b6ed8dbf4df71663c6fddeb3c89f97992fd8833ab7690373fe89c3d8862ea8b5cb1f64cd2e4c8abe739f71bfc2c3cfeacc1b76f331bf53f13b75e285fd94b2dbc593fd318c720e4f2b6bd168f2ee1c8673a8073858b1777efae2cbd834faf9daac545217978cc8902bdb1f65af05369487a5f695d816135f83d186b399e308fbdad60bcfe5cecc3bcd0c212fb79c96bad48cf5ef3b07cdcae615ec906379496407cdc5147e330aaacafeb4f9796c6e6a210ec1fc7cd84b9945b3d12381fd81d3f715cd0d688f67addad725fdaba58aea0dfff53a4380bc083a433e08ba0bd135ff66752e337c572950e430ffa904de0fe00ce048cb943639b6c8d1a1378d085e7a6178fbcb2e69a3868b9a4321f53953cf196d9a03f2779072d2f6c3d6fe0d6fc4aea03d700b25fd15f617baa6d3f817b0b004b52f391339e001bf077e252cf227886b21021c7c371f8bdf6a967777c1faf3c364d0c6241c7e5373e08f01fdb5c4aab4b10fa02d7d32d0f5e7923b4618b6fe997be7379f4d277ee45af7de71ee93b87ba9b360dfd88eb6bd79c7aaedbaf3de6dbde0c9ef7effbd1b310c671dcbe4ed1f8fd56bc059b4889706f52221d5feb213d6e1dfe751fb7dae44e23358a764f2ad77bdddddb9bfd524b265c72cd7af8619ec47ecddb58ffad435f73dfd5c27b572f2c578329d4f38b2d2af8eb37628c97fc95932e6749b5b5b36c398e73b7afd63a31e367a88e59cded64f4497eaaee956d3de3a70e393abda3ff96d58294aaaea1703d00e41af8fa05cf27faaa4162ff656d65b626f9b13a8ff3ebbe6419904b6be3b8488ea1c64134eb2e5c5c8fb9375b71aee4a5665f915dc271ea3efcd80cd15edbc0ed03b683c452c6425ca58bcc4b699db3c01a46bd016028d1b180bb8d86a12befa0ef19eddb07d9bc83be581467472d6ef71b6c6b0cc92bd608f7dad6bdaa384e7aed2d6ae9c3c4ae150eddf902ad9178c9db04d627d7d59f54f32503af2d7f0e5b8471def55549b766c2613c3cbb5692afa6c36a6b9fee068ead2714e3be87bad34c707a61e247c5c2afc4c12a41f6752dec28efc214f36fade45bb5d53f7203ed2f785c0d96b39ceee13b7dae4aeab858fb95181eb4d373a9151af4e44e672c4f79b8c03132fe7c01bffbc29f59ec7c684de91fb969ab92aa8d9e9b1ecf871f54cb71f28ebec3fd66b9a84e3e712e703eab56b3905d0be3e3a6808f23f7bc62d718ef2bd0799f65ec78c356a58dfe916b17c0c4e6c1dc80ffbbb651d7b275e1b99a2f44f63cb621018eae6fa06708f1f76bf67d601b102336f183c67569737a0b041bb119bbdf7e19ff81e7d2af3715f26889b8ed25c83f12b19d69625a9cbe0179574e1bbd04ce3ce883003bc969a37f60ed67c261b01ebb02af6dbfd16364f32de871ada66feaf9c634dcbd3ed4951f812efed72f49cf971964abcbbe74ac6175008ceb20fbaaa0de1106309f6722e7ab5a7e255928a6a2fca6a4d7f94d1d433ee011506d4d5d1054fdd453f569b9b80cc3e0459b224c1667e186fbe489c6bc6c00bff87a321daccfd3428ddcff04e3385dd93bdc07ab0b03558fcb255aef5cef6430c1cfbbaa6b33df50b33fc703d29b2c6ced2c594ea6e54a96907f83ff9eef5a7d4149dd1f82ec26d9cb367a5cdbe9c954dcb0cf4ffce7cffa73c66b3b5cd77bd369c3720b318759f8283b7bc2269fd25183fcda23d0e23c68e2e1d280d3c7c2f9858f917731b2baf709e67219d0ba43239f7d12d1fed988cdb450d85aa148f289bc163fee5b13cd84e274814b12b83400e33d062d0b0dd7158097230de03cfb39f063d37a3dbca34d35c5589d0abfab0d7b57643e4f4ee9a1af66dbbe2b423e2b0a63fcac03c2832f7e43ee1d6c489cfb16b21fa0d788e7d06407bf3fce9fc30dcd7f9de321d587e6fda2409712343e3cb6d3d6e237d73608ae73877c7776fda506f64d68e217e898fdb5b607e4c3da180dda637e9c8809e0f6ed1dc9afd535639ebb82d5b6a6f5ef563c9745fbba4c3387e728a07a22b586028bf3d81ef9517175ff3fadbaff5b175693cc4d1a5771e3b066ba53241f57621cb059115e01c69d003a4b97cfcc4b83843ee34a1ea13d37f99a7f66c84744e30fda1eb69a835e54cdaf4c3819f2e776aebe53cc48a00b95aa8973570b912f926ff5e9683b3772a7121f56df0cc0ae8e85023daf53f2f638cc171705cd29cc69223fd30360a454c9d58affba5a98334de1b3f8e9ea3738df569f3eb71331ddf6d46ff56c3c376767b4b59c3f4e998baeaebeadf419cbd738155a43b847cab5c3e7c15e24dcbb45e7af1667f13fde5c44716db9355c588fc097697e565b615f6dcea02d28ed2c036b26d94ad69e67e8fe752b4e17c93a5be27cefdde931de1dcc6bc4d54f19865afc2c0f96541eecfd70ab7f34f89ab96b50dc187fce9d9f260f3f4d842ffda59f10ed29eb83e6a4462fbe7a5122a9ba81ed0360f2dd173f90e7f2d959f19fe574966dcddbddd68aff1e747176d0c2ef835638e8fd6ce259b6ba7c8a3e60d440136b7dd0e23755dfe16bf406d2be175f377a9c0717e3eea4c9dd1d87b44e9b2df5ecbe35820cf8e4ff629f5075a3ce0b71fdbf1b3de6e3921a27d68151551bbf3bbdb7b9d0379317eef40e0c9ac1ed2371ffb52eca38d639ace5c770cde2960ffef74f7e7feac8bb576bfd0418c3a32d802feecf3bc612e304d8fa37e68bcceb2fb2601e4b6eeb3bc2317a6ff9ef4f6457485e350b74e1a66ac857433e87f0647b3fd93f965d35e74ae92fb5468f7d3dbf05acb109bdf2c8b7c39c78edef0966b5b537529cc90f6bb2f6d7c4fb0fbfa558946fbfba7d633e3887e5b6f6b671a5fd64c877273c0953bf2275a67138f781cb1eef45502bab728ce311d6e292e99edc18162340fb15f89d85b8b4c1a62cc1879a0eab0616bf2cbefd4ae4391a0cbf92caadfef1b69cd5d8853d8e1bcaadb9a89866919c558b18fd9d0c604f987c34ea532ade9f498f35e4a8a0efe7c0783c76cdfc00ff37ce0fcc7dd071ebca0fd07b18483ba899c5e043fa6751aff7f33857756c27e9bc7675f1d32f0b76bf2b3920bd0a71eece61bc80ab04c5b21b9edf2175332f4daa836cc6664f2a0f581b908e6313c7896c7c9adc0ff6faea5a8c3f88f43fbde49dbbd71ce65f60ebf900eff2053b53e15c50fd0ccb89536ef4a9b0d69de7221d64346e57f50fd042b56cf57bad7f3c57381f4234524e30967b18c7e77349358fa0271bc5f1318ef9ed35c1d690672ae3d48be210cffb5b0e5c1f807f49ee6ecfac7d906e1f203dd0bee43e605948bfff5e71ac61ecc98664d9caf5d07fb5357c2ef268ddb01fd9c288ac2780a9ba30df727caae315362eec3961ede15e0fb307bd19c4ef38203ba4e7cfad3c607e0670cc603fe3bed46f0fec67a8c0b3e527b7cad6e2ff1c20b68a2514877991231d5389f4f18bd96a327d6ec7e11d78e8ce1fff813e508893c5fb521fa1cfded693d3739b0efea0ff6fced3e766f2f11fef3c2a54fcf710fd0efdbdd195e7e6bc4ed46a78df56e8ff5741ad14f25bb55427d762a33bcf65bcae96f2e0a1ea710f725ed6007a03fed5b8030eee1fc65dcfbec18e77f59c77616f2a6588f39ccc6e62ff728ee767a7ffa20b92ab4bcf401b46076b48b1d6352f48d35fbdb4fcd504f9595f17357735473ac68b0ae6eccbfc04df19f9484f1407d7731ebd4b03fbeea939f0e584f68e028f11f8a4b2f15ef715b1b992400d06cd1579f01ecc6e771bef71703ffea559bb0a2e5ccea0997be8aa8d57ead9a75a4553b20e91bddda1584a25184a7abff5b3b8c075c8f287c6be42b182d1a71884bc65e771fe8f7e4ff7431c4f62be2ca5e37b15fa1318bf1fe995715215f36c20bff59bf27305e35aeb84f0b0b2bf2117340d4aec7fbef624511fc1d5c5b10bb1358e89b6e6ba8e7bb56741d63ecdb1deb7c6aca27bab0a396283f2a237e7a23ca831784d1b6f7bfdc537eef9a15ca80d1d208c3fb48699df0b99df8fe617b1ebedbda7437b29a9e35082a93bf4d577bc974e09874cdd27b1c49a919997ce726f9ebc933807edf577dcc3c3c7d72ddca52cfe702dc0be419ef13811060407cb71048580af3a5843e4eb0dbf2a1cf31ffac03f88de05f16366309e2dffefc8d669dfcc9653b15a4d41d742c5f987e2bff0ff167e0bcdf52fa1a8b686c8fb35c07fa4db6a4b37b311cbd7ef63163cfc34e7f561d95e4ff62a496de4c75f6c26acd3953e65bd1bc17828207be0f54d4143e7908b64ab09c56a66964bd2bb4fe37d73ae664c4b6cae766131ef9b92af15d7f56c3f6ad5b3f58ce3ad54582d93e605181fdf0c7a39ab3666cb8f9cd4edc5d717fee789faf60f1c536ddf44dcc4e2a343ff02edcda0cdf4da23a4be71b517cae3d43e2f8aa104af0c5fb5545ab517e065b2c52616dfc4f81b73ae12edb49a4f86f8c019e4ca8da2da5a19ac5103e7be3f6bfc6f566d8d45b535dc6aab7fb6705146031785fc74865337f715c58ed7fe78c873ae4987de340fe46923b7e29fc583d7c17bc9cd8f92cd0fac475a901a39870b017fa4c626d7ba8a3c2e40006d7d88174eb107f9ffecb135678fad993d682ce05a539cb3b7d5dadebdf0818a775a4b21f9256a27b22f71516df569beb321bfc26a149c3ee21bc715943b7a837308b892035d4c30eece90f673e0e2e434b13e840d706e620eca9a3ff5570e53348e22e671a05a148d9e67f1772e1ce31ec861e2717c33815ee7e6971325f54bcc43c7701fb22af965639f7877aad1b583d7f3dcc5ebd981413fffc0134a794acf340f09fd92bff0a5fe846fa7f52bf74cf97fa7694bb3363f4cc490ebc388f17bda49aa0eb1ed9562f4b03dfb900e1d3c809ba646e47369ed38ecc847b3df8d62ddf0f52e5bebd4c52f1537fbadfc264f76740ae9e77fc55f3d9ea54b5b049fdea5fdf473073d4b174ea5e65165189018d74d67eb2498dc86ab7416bbe310adc7eb2ba730eba3efb1e35a730b8d219d5b80e31ab7784ff9f5a13bd566c27d563ad24a57869bc994c4cb2ac16b3770062d6edfa4229c14c5ba6a8cff8d716d4ca6d9a627c0b9b6ba9207169adbc56d69a373d1dca750f0d8ed80c331f995487be98e80bbc4ba7ca1d30bf9f981eeedb82dc39763b6d63009ca4fd12f0b91fc5b77ed5d6e97c3cab577576f5c884b2d66fc3730967343b2cbe1057f8f730a7c0d61351bddfd9e292c51bca1c5d96a3cc3fc306558c1bad670cdda2f691e4a91f6eddca33c427e46b5d46ff9eab2bfbad6e0ea4445b4b4c52bcfa5a24ee2de4a3e31ae6457e7fb004e68aebdf001d6b9da53b6e91b128d1196331fad77f00596763152e2e909d79a7727bea75a89e26f25fae462fddd899cfbc473b7aec69f5160ef4e5e3a3a71ebe8641af129e8cd2a658e7ebfcedc3449dcf1d0f792e2beb3f6b1224f4fdbd95af4fb9f897741f182cbf2825b6d705f9d07cdfb91c3cc85da37f02c0907d93805f345e26a9f82577e3efd5402ad3b745ee02a01ace967e6a5fbcce9cd04afaf9cd07fbe5c844ecfbc7abd22766de514c8a313ebe9d406d1d21644a5c93b5f2e019f35ab9673644379bbc6f242d716deb8daa42329406bf8e53d1ae9561393fa7de2f8d29347d7c3b8c8318fca08738bf46a9c2ef387d079490de26b023614733957e8dfed3e596a171c61919e58df049acbbf707a0c5669900453e06aef31bb6fb8a5d713310e85c7f3dbfeaf3d88c18f3c282dfe957e31528c5b45d6507f09b1e4eddf8edfd92fc3ebebf8eda5bf5927472311914fce7a1da746f6d533a43df82624464d9bbdd9c87f6c7221c60d2c2dcdc736e28fa9292ed95eb193f40bef3fd57154f373f1db69ea3f7c3b7a26b47040bfc5863d9683364cc81543ac31fbaca896c31ee79c93e39ce4456583cb2f4b9df9e5439d5fce1af965f906fe59eb19ca467eb9ecc2a8293d556b60d4766dec8a7159377c6dbd0f180d5eeb9de4aff34cbf18e81d35e3bfe91ac69fc73493f82b5d44b32dd4afcb64136821bac7e6b5483e86d6167cc016b763fc4205bbdf816b851c68ab2f70c5735b0809cea7257b8839ba7cebe6b3e0e339ec17e08639bed3865f8975f2c5a49eaf4fea3b3cd79313c70113bfea269cc5cc275c13fa5ccd783c0ade3b43f0e1894f52ae1906dac8ea5c0f70fa318e55be07eec5d7b48b11c97935f8c0177151a1bd8b606884453a60f89966bc243c575853fe85f3f5a0e7997f794a07ca17de2fb236af3fc6a573bad251b316bfb517524b9f02f3c040dce172dcca0d5b27b4e311922768f7a526ede3964dbc6083e785e7487ced91269c9c8dcfdaba0f2ffa1359474fec8b3efc6a321df1bc41bc9e7bebd83f809be0ee99f445336e7957cf5ec686e45e9bfa1796913578f99b73f481fba779bd9201af79f15c4ffcbc355f9bf8409cd36b6871bcde43dd4fdc8c3713a9d503807b6459ff0b775f84b3c404cde1f81dfeaf8b02e3cee1f8cf977aded6c3115b3d8cdfa46e4a7059048753db51f3a09d861badd8bde6cb8b8469473773e6bb3a67be7f7c097b11388bda7ba79955340ec1b1e06eb0486fc80feeb0ef6ab92e196fda1d737d37f3a72d9ffeb5964ab0072f7957bec7bb9d63d53f72dca7c4e7663b31d27d7c7f3fe225eafc5bc46cc7bdc3769404c7d2c6d0a5c714f686f6e7d241831e7cec13a7fbc6bdbfd41f403fe51543b2388b78dddaa6e0588bdc35d17e5dd72ce01ae8d9d1357b45f377b8be87fcb4d04b03ca9f543574efabd7da58a0ff560319d5359009ab813c965a71c63590e7fbc1bce536c6627ade4c008c66803fbba95af1589cc5ff387db1d167e5da06676f77a90f7cb1268dc1802bc4b50d14a7e4aebd4fb0c65e5d0b59cef615d4ee1b75ed385775f42e09df3c97776ddbb2a53cf8077b3ac8310f55cb86eb59b9b5066f5ddf71be5149f10f5beb56913c7ba546c5c2e778afd9bd5f1449eb19b93f57ae7e25c67e74ca68fccf38a8d17a863e8b85a0a4c95d99ab59a08bef3e686fecde7c140b437f06bc3fac15312e122f7df96ee6a57b89d6f7035c5f15b75a28425eed556f2d5d5c0cbe172273ed60749c0728367b04e5f3ea54a20831c78cbbd7c84903cc69a9d7d71e5c6b1e32f1bcba2c401773d7c37c265f7d4372ca61e8a5ebabd75fe05e0679c47fb6755317c5fcb93711cfabd47d387db32218b5f3d65209f7d39a1e47ea2906df6b987b63ae77db665cfb93a57da3185abe5794e5c956f209e6b63b8179fd44ebda8575ec487e590ce96f5d3dab73c63cb64ebf417f7e40fd226b942eb03fd5233d1bc075769c3faf8789982e7ba36c3577a05f9462da1ce48395c84770b8673247c771186f2de7db29e31cf348f0df039e385d56ec3a44978ff535650d4c22dc4f535f795326c3adede4c159bc51ae1dda3718e0be24d63f4a7265a0e907d8e4f28671cde05f9c24378a738c317ba68b28ff762136837d113d43c7bd809fa1d31e420ed730dc6a616f6bc759b3ffde94d07d1e315e1c7295c7f9f30639316b87f54127195b3b07b24edc39e35162f320d045f1382fd8b12a3956ed3876775124f4bed19c74ad3de8376f2e6a4e75c291bf6fa4c86e1b6f812de45a0ff0eab9df67987731c07819c707eddffd83682e188176e2e25ab5cd67e474c7626a856bb699b89c85d56aaa6680d937c3aae9bbeda50e9fc5413110776fed7bc2588b4a14b898cdf1eb3ac9115f07db625c379ef616c908ebc7a2fb69f4183d232542f65b192c92113d4784cfd1c0e536f61187e5614f9213610ed4da8f3ea58be8f44baefff4e78be4f2967a3678e1361d2752dd5387621815df1bd311c98e7e19a271ca2dd06b64bc22d54badec97635753b382f168e4650b18ffd79a99226c927a5c1767e1a6ea1fe5faa586367daae7d35beb5ae8f7e2bfb89eb089fffad801e6ff017fc26179d3b92f05ad18f60bc5dc1ad71f6ffbe9e29254cbb99f1dcd1fe6e7ff0f731f38ba26e2d88f8a686bedcbe538ceed4a1cd07d87aef1d55c95bec68d3d56833e4fad000e74bb7452fcdff011f486891fefd1ef813b7611b9573f0a8f1ddafb7797fd7bcfb4e057b311f0a630bdb4d24991df609750978fd01e4e6c55decc879f24bf1c22db05f9c3af89182db567d4b04df877d1c11a9cec6a74b5bb7c8a891891dc39fbddde1ac65b430c03f974f7ace4be9c9f72bba47d9bf51eb3d4afd7af897075ce62c7f3ee4747b91e17e4ff390dfde02409fac528e825685cfacb57df023dff606b9f08776f7d7fe8bd05ba785c5df6e8bd4fbcde5080b14c912d0f84c3b8e837ef9f1b430db437682d83d44fccbb3b91fa9bb8f91b140face646b61acf06c89f0e64f3ee8e9d34a88615a93f5468ae0465d1dfda46b69a1b927b41efaee883febce596cbd90872d401e86538c866a2f93868fa4afbd1717eba3bd6f07c90a512db4fb48e889f6317a3aff18bcf0475d1552aa5ee659d04733826457e9e5f63661fc43f80f3b77c29f23df9fd18fa81d0bb8c56e91ad93ac135f13d02c606381ab1bfba9c93fbd20a91fb7dfe059cd5e22348cd4f4f2ef09a01decea2bfbda87f96f08cfb98ec99572782dfa0779800d6bcc47edc4a1eddbd9e9b423d478bdf96b202b59d3dc4c8237aed47ebdaa12befc93a0d23c8576b71ee9c416705f3ad4cc4e3a67f426bbbc14db12963c01e7df17e249eaf58d3607e63dcd09bcb29f764330d26d96045f503a645e2a2b9254bcfcde574f7893eb9294bcfa346f2bae39f73f27649de1bb629e4dfa76c351b49eae476dccacadd4373afbfbf6ec4d1f7b28c61bd5ba2142c39deead6fda0e7c95dcb1556e8dd5b4582fdff21d1492f0cafff818e11bcfea704be8b3693fda818fb675146f110e54de3f39d60736d05e734912f8efde1e3d6ded5fbb419560cf73035246ecfc2b8b9ca49f71ab2732a5a2b4eabd68ef6d36c3599969bb13b5bdab788d58709d6c7a8903defe0473755ea676c615f68d65f183607dd0fe10a61b87de72c6eeb3dbec6dda3cf8f3f739b9e8c4ad297b2926d92465e383adac87782fb6cc4a1c7667cd2a841a3e7eec41056c0aff3df4043fe463159627fb2ebdc943f82ed27e89c1bb1eeeb34b0ce2060cb690f0c8fb5d95a0318d3c55ccd1673dc036a5d400f760f755f1267e25a059e0badf79ebceec93bf091ba3429579353cafb34c806edf17ecdf17dd27a434b07dc22b820e85b35f8bea1b291d71708b602f075b78afd6e02b144b9ed431ea20c74e91e68f9f706bd13daab6aef405311e7ab5ef8f10607ed57ad84c14103cda68767895930753327354b23951ec13811fc4bf2decd09ba7878fdddd549e3dc8b181766be3e637e9635e651aef1512caf5d733eeecae41df3aaeea1068571cc716ef6eb39467b7c8389a8f865a1703c8a1ca721df2f988c8e1823d8959b8498e68be76d6ddb82f90e6c018fc9dff44d91c723f97d14fbd2bc65636e64dbfe3e01df6fbe1631ef8a296eb5e973a95f0b889161cde3ba868e79b01ccc21fdc3efb89e14de46519d75ccc11fa78b740f3c75d82e917e49c0ab433f7c0c5a40b827fab99a06d97212f757e3f0276d8e69adbd5948c02dfe931fdba82b41ae17e6f8066bbcef7d6e5c37ba3f326cf5cf46f7df0c5baddfdf6c566df5f8b99a99197a06e36270daf9d3a2798d82d52bb50bd3344a00633ede836eca8268bce2fe2d3f6f6b00725a8e623d4f84acad27a0db0c8f27044c3b0838d3f3c57c8de6404c3481e707ed345c97cf2bdf0bc6f780e3be2182cdc598677e5e6a785e36628c835fb25a59a892fa7d30110f44efeec0d6c25ff537a9053f97ea1aaf5ad679f5bdb8e9ef45ac19d7ac896dfacac88b6a4e1a3fe23869e458f2925b69833f39f4fc282f6cd0d58b398e219c9be4f87425a61df58bdf81e22c648390af51f3093fdb63f5f8e19961fd1c2ec6d52b017f46392f25eda2321e80df9eefa08b77abbf0856f2089e7159cd0282c3247da362c67c51fdd67c3eed7ff09ee7b8278db3a78d3c30970f11b1767b4b5f798cfce066ed0cdbbfe70072ad6c6f0bc50e7d5fb1e9a730fca7083a10ac667683fa33c6853f43b5697b3ff9bef4c01a619cbf55605d1c5d0c499d18ed799817c92aeaf549b99c491fbaaa617c956941df5101bf23fb88abb579e43391e7c0e6396f97c60cbec33d0b37d287d0ea4deee8b3aef53fd55affb34cde7736d6b4c09c24b4df05f2508de3b87a10df33fd4f7a4b546b02e2cdbd6c9607db65b8c7fd65f1f00c3c978ef39fb9a095b9f2a285b1c37b32f43cd07d4eeb231b375bf9a071a75efd08f03554efe90cef6bbe931ce0f82d84a5f62c481f8988f52562a80f799ceda37d7707d0fe78229b94a17788fe8d8fdf833ec801c52435bffcffd2b3e01e849fb4a2b0ad6f725453feed631b1bdeb4e77263aed7dcb0508fdbf566e7836c703943255d804e00a93bc15c36e8b8bdf4ba1f31b7e64bcd6f910ef2ba07d4b9eee76aea45c0f901b823e0203417688faceabaf0a9a79ee3623d317aea187a7ad0f15314e7adf58fe7f602fd2b37cb56ff7ccd498f9f9ebdf9fda7c4f53db6b971c7753f465db36d72eef29828f78eeca6279b02ee757a32ce0f75cc71804c14c06c070caf1aff7175a1d89c19df49b2d4a564abc7500730816765546cceca1be9b17d60de1249dc5a59c55fc74c8debfaac0c557d27aecf1fe9319544d203946cf55db1d177953ad941bcee9dc5bca94d0e9c4057facce0bfcd1a9c18354f44739cdeea795294c8cf38c8141b2b0a2bac1d763ff4cc21e0d6b14658ad1f6fe3ef091fa344be677c8df4789e6f897c86356dc8ef59dc0d7d1d2cf78eef254dd0bc1c403d999edf729ac7d4dc0a94eb3ca1f7fec2a94eaed9811127e76ae3975f8e6ff1a9d3ef615f2ad975f17e26a9ec391ab5583a0e6dfc0c39b66b9fa4e769d4ece979f2babe4edec90be77c9397ddbc18945737f723ce2795016bdc9a178d39e312cc06f30d97e329e6a402aefefd03eb7f25c8de09ab34a9282f548da9dcb5b8c0cc170c600b9ff6ded423c7188b6d09bc6d16dc2bd64480fe65345f31cf3dc657bde82ad9bbf69ccb99ce12d3262c5a1a2e2d6e31f47da34623424f7873dc07198a933be7a73c20ba69d09345ef81ead43f41eba72b1700b8a026ce877247b5e718d1bbcd5f31603bca514e301605e37821382cc083d418b49a97b95383a8ead69f6b6aac109d06bb437f00c6babdee5eb8de72acfdbf4f48afebdde925e4de5b9f91b5497a6d31fee672236b244be8b3ae645aef257d65932ca96bc0e4b3b990f33cf8b08f305c14ba36b14ff6ee7e4076c63ee51eaec9517dc2b656e69c5f5b2b39cebdb2e6d6c49c58909bc97ff1c384a5893194580b55286adf314997e35aabb6e9abec32bf12440e07c1f27dc198e2c03f754e0faa08b49a97c74fcd3bbedfa2e6119c4edffc4a18ace404e3755b3540bdcaaaad7eca0ff65352dbf5baa9cab83c96f39d846c92aa2bc075bf9a84a343d7da35d43c1893b58aff4dfb831e2b8639ffdcd5cf100a5bd315979369b5c23a5d680fa56b6f0778a4d6fe63401f25ed731de58c777bb6ebb8df18dfaf1c67cb177d44d1207844b0d55e5908745c0e1cf7968575e8328201a7cf20bf3e8322f0cfd0beef7df472df75ff7a0af3e2e1a419f099b6e6454b5792e38e887631d370a1b9e0e900bdf342e5b41de873693a7adff12b67b99ce3dfe8afbfd94fd06fa6c26befc0a7bab9a892aa3b39cdb5771cb38663ce0a8f5fe9c2c855ea98e6d04461dbdfbd71cf0f3a199c7edbd5d5615fa97e1b6fd83fb1ed967c3407b8b16ff5fa162d3f8b5d2798a0eb9cfa2be046014c633d5fa2a28595a73dc0448fb8ff323f2afe3cedfb3d34e6c7a0cddb66f331437b9eaf21a6243d94b02e7f3c8fd2791ee4e3a2f38c1b1c95b5cef65912783bb3496e01dbcbc1a765eb1cc5e8cd1cb77d7be128df5cbafaec0b865fdcd59af66f64ffcc3cfb93da9a109ee59c21ffe5e6cb641c65cceb75d48aa49913bcb1f7d2f2a1991ffa722f9c7ffdda8b8f3f6ff483515fbbae9fb47ddf493d964ddf3490939b6b4962300d432fdde72ec628befc1e6ac47628d47e3ddd179be7ab796ec47bfd7c3ff074115de11fb8bae8f74900fa4cd09b5e6dcd24594e3e32363e182f8adf49c21d33168a257d8e0e7c288b2f5ef96cc86f4491f44a6aae356bfbd484cbcd6c7fdec2b4d2f7d0818165efb15963e19fbb8d5b6d3f7b8d895d3f027b71760d33747b66a991770058047926387a479fc578cfcf4b9a4badb6f2ac7409e6c0af79bed3c585ef31e58e11f3cad6a5d04f038c8f9caf3d5514de08f72eed4f7ae774dddff65af1edda84d3642248fe99f86191122dfb4aee70eb2f1817afeb3735f283253ee97e8a31ba68ad36b946ac561c43f3c1aec6f7c68f682ea3da5a6b712903561af495918d72f58cd4f37658b73291d01e730ea6c99df8f7b95f62aea0e3fc5970fa42dd5a1fb81649f3b3f756df9df8d2777731a4a053b718ad3db65f262dcdb5e741837321db9e018ed36e71627769b84e6b3f5db7ccd2ed9931b1856cfdb33d5636a5a30df7f6730f9a6d649b7e972e950f1ce090efecd0c8f42622cd25625d3b39869ed5afde40fab262e40fe5c01fdfe8871b4801c7d5e2c971575c4835b592aff9ee0fd5af00bb660dde5c6dc8ed01b57d5b8d918d5d3f96326051b29fb4f5211ea8f3c1655d7707ae2e8ab32c71ff8cc1d9c51c34f4036b743d68c0cf92065a98ad509c54c6b9df6feca1fb9a4fee142eb1ee0d9bcfcb5a27a3c9233eb971fefc8fbab71ca751cdb9526bb27031aedd5c6bda85d5a39a3abdf8fe5eb9c0791d447bd7d2796dc4fae839ca2f03d947e3bdf5b7a4528ec87430029df1d46c69ededf3ba2647f96f9e8427bbc5331ab35c7ce3d95cebf9aa9b44b985f91e4aabe68147d7d6fb9ff07fbf04fd35fa7c99d71b6efd39fc9fdf6774af6f964ecfac683d17f78d0c703f3de74710ed86fb22724295f49ad57c73718efdd313edc32373f259e29877d4df9c29972de63fe66be15b0bb4a29b3ce851f1f0a007a9102c312b6de81fa839690e7d056b75a1f89dd3b009da38a10be638c335a39da44e6ec276ce6173fabbef25c7f781fc423f016edbbbdd0b9260e626fe658ddec9fb4117414fdeee93bd8fe22727607f6f81bd0f9db4488c9e24fae93ad95bb38b6b2f14ee1d4c1d7b1f8286c9dfefa31ef2f76dd0b07a796f33c70a123fa69ce8c9c38b91bd9dd6756039ce8e64dfb77bf5fe01788689786fd6858639ee8364b5e6ab62ef47478c7f13787cfc227286c4676ee0af54bdf3d8eb86f6d435f0f2ca09ef07bb1bd153bdf9b294a1ffd7bc11c64989f8df621d8817adfbf4c9edbb05abcb7815b77fce160faf8ff715bcb7630d3a96ef90a792570e8f076b8873665601ba6c98ebf6e79aec41abf32507fd966dad667d9dd6fb0ddbb83a5afc4efd4f34d6475b3c605dd4694efa7fb99ebcd1af1a718deb70f53cd7064d3849d14e21d40726a3e1b6fdae7414dfd458cf3d8dcd2675ff20e93b20f14842e741d2ea93085d6d7875ecf56730df97076b2106b271555298873772ef25ba770574b3d1f109af73f68ef98e2157886306ccd94c7189543fefbee478d1b14e8299639eb122d9f66fcc966fa2e9f3a8671483931d35acb9b2fae1fdfe566fafdfadf157ef36d01aeff61668a73606a2f5be053ece3fe1f334e7f681ec051c0f5ef97fe033972f3e73c27c66ac2b973e419bb4c3872cd509f890ec3e1773eae7127b1f25926fab2deedff6fe65d05c42130368ef32e861e9e8f5267dbacc47c2b9dcf5e828bb19b71f643af0287d501df19ab7411ea47e14679cbfbb76707f47f2e2f7c64108b5c6f9ec070eaee2b1e4ead89cff8b7c5f9a7bc916917b437fbf726aedde4c797475e1dabf6b9abdfe76fadc5c9496c609e97dbf609b586ba51ba466303c727ebb78d0c2d5412bb25522b1bdd744fe08f09aa3fd8e8ee79eead6945dbc622d1d948efc79d2d27a08ef8bd460fae2cd5c7ffc47eb4dd95cd944a188b9ca9ec52259f07c5e8dfa228af5397dc56cdbe3fa832ba209a6df7e3cd7eb73c56f58cf5aa05cb829d3b699522c22e1c99d38c2e2b2e335542147cef5d826dcbdbdb3de6ee00fdab77b9bb3ee31845a2be8b3a118de4f394ca51ce33d6052ffddc5c5b5d40af2fc85e695bcbf5e944cb3bddfee0ba67d358c3faee4f9b95d8dabed4d17611dcf8b9cef5f6b641e0d31dcea188f45b89252d6ef5d322e26bc26f586b65c7d1dd968617f15f2ae98b659dee010009ee3462d8c8c93d1a97dcdbf1f156b75262f35b2b2c8b6d61ef97fb9d38b1b1c5d5e0a6bfabe043dc0245cb2bc6451aee6bbfc80bf4b381e9662f553ee5b8ef9dc77f62b4f9a0c1a81c023b4885cbe3f226be5c989be1be69842e3f0a3e6b6fca2c747eb79c8c69535dfda08ecad67c557885df07b7c608de99fcf4f74152baa27c5f325b2cf7589693e6e52b2bff446a02745fd2c3f82de93a96b2fb280f1b399b29f4a37aa93f74bbdaa5a44ee13c517abb992fb2570e567ace6672b92db1bbdc424c476bee6622a3159cd24b43720df137324cb86645a53cac50fd751f48fdc2b61ad909c8141f8bc3e7223e58e9563cca18d7307100773eb94cbbb386f0738a65993daf4776fdc7ef7c2cbf0c31ae0ebdb12bb977ace96a06562191ddc2b31e8c41d34f0adb2601c5fd1bf7d7936041ea931d69c821a9915e75e2592b9c8e718587ee1176cd3aee67d98e17a23e8f680ff12d2f91f12ce77eeb9b15f8cf302837831a7f300b03ddfbc5e908af15aa0cfb2e7f219aabe976a7cf5425acac0a72c69327a56983f8fda3e7dbca178d8d128479991036700c7f9dce4a33224cb6abe7fac25fd5a9b52f5293af7e7df9e7b3dc992ad95f136295b4dc36c29c7145700fb41f3f77ba9b3a761e2e407dc23cae191b9f9c8ed13bc6d8639fa6a4fd1f8c01e49748e5fea4380f3efc56f688c21a6d3604c18d77bcd01027e11e666c5b9d696bfa8e6687c03b20ebbd60ce0d8cf52b689c36c898ed1600d36b9e1a7d43f545e3534795ea939c7c9c3f1e5f3fef466a2508ee9f2a735f5173ec29f0357e3a5b6d22158d2a5569ca98da3988ca5f6bcbee88a626e4baedf08d645b6b4c10fce5bbe16ef635fbd0ab4677fd12a043f46f62ab1f0610ffa072ddf56cffb4ace1e58035b1c8396ed18e313781f0aadeb83f6f7f917aae54db54583715b5b34be7a952858bd24586ac363d093ca8390dcd15c72fb8bc4efaf2dd75e54d0af395f649e352bbf74747cfcad9a426ec9239a7f79502d0aef2c6ee15d9075e847d427c0f67d6ba13838cf38cccd4d2ddd7b6d7fa74ff5bca3fd2cb58e38de77356e2da1f3169813d890980f3baffd3357bfbd6a9f4c716cc3f168211bea921c5c59c71478adbeced7d13febd192f9091a193c8663e69664cdfd61fcb5b50ff45844aee54761b9924758db4c6bf06f66ab7946fcd018f651bcce55bc876a8cb78a3cb3f3d691a3e79fb5e907eb2a3746b7dadfd5eb98aede93f6e003b89db59306bf7a8eede38b4de4b9e9eab961aee1bc640d635b9d30dfbb24fe06a7434dfad4f57f658f3fffefecb1cf8d03bbb7ce67e4e73dd3819b705a3f751d80cdeb0e9b7ee76a763fbc6b1433235f88db1f1289d55f7eda2bc09febc28f81e67e23d6167f88b501f34de26db133de9e1b5df1f683e3afa9b096bd21f9ac8f9be2734792df57ae01f239f4d17373fe1cfd969ff423746fb3dce99b39b2bdbb5e1862fcf4220be6ea9f7ff89e5ce7caf3c7554b8d70db35df038e3db8b5bd889cd04df97829796fef271c4e86dab3a6ee9b16c23893f98d7964b51ad78be202aefec7712589e22b16af592bf2c6c9bb0fdc39743ed6bd0e4e25e62ff83b8effcea948cf83cc631304a2a387635ea71c3e9ccb3af12f2e1d4fd057f8c2da7e22ed7d5b8ec333e3fa950729688a607d75498d0ad12b437125ab68cd899cfedd9dcf89600ea0171dbb337f3c5a7b70ae9a031c7d96f3c7d47d1aaae4907ed5238d59e6aaa4ea1f8d7b0fa86f8f7375f8df18cffe16d46bb231ee7e99549c0ebdd8e8519dab52c0f1c9f9749c09b7e6d266fda08c4bb39553011e259e2feeab6fb0de04f88efc7b85af45b5732afebba36d487e5f6436e8a071f820b27fd7f3928b0f64a3d622ab6d1997972bcaad163ebaf6d165eb1ad8671880cfe94761b6b5178f25601e87a2877c29a82149ed3996bde41b66ffbc5ff0791eaf129503f13bc93d77d8f2383fd0fd5686b80e7ec37232689f8b1a3e3ba7e5f92973b69df8ee1d7e05f25d6b3fbc5857ff6a4ffbeb7dec7f3046aef32cf34f144b64db3214a0cf5486fa61069aaadab458c943bcaf4771fe65410ea9849e9f3a97003a41ab99d9cc298da7cf15d6a8ead4d776ed3afff64ff9bc5d5ae75e8f5dfd77bad163f9372d9156b2993771f5c312fa196ce545f78f6061301e29913286f9803adc8ec524980b5fc85deb79f7e78b47204b783e5ccc3ba90b4aad1a0aedfdfcf1dc189bfda27506f754eb64e3316df7c3bae6ede02782c4fa60e1de8c97e7231cfc4c83079d07adb1f5b8807e98a55608de381456931d9cc34bffc539ce7ea14e4e8335f2f9012b14e781fcbc06e3676f5d4d9f9bc9a9b71ec7d9512b4a57efcca3148dbebe9ad392f4ea0c2487e8a0b9f83de15e43825df0a2443a6a45d63e774b133c598e1369351d0aafb548c07871f95c5a675964dee5530cc60aa923ece0dad8960eee5e3abbb9da33f2d3597cb04611d553c575649ad3119926887716854d6f70f7e519f857b83722cf709cc4f39119efb4d7d5c39a1ee59749b9f2a47287e6e098dcdbec76772c31d96acab796acb77a3424f8f520732ff15589946f578bbf17a2e861dcb6c0eed7d67cc8fda9935bb2057e438233e81935ce60ae485e724b6c12ff53bbe3a3d8afbfb8915a2dfc9beb2fbc43fe15738486874e5ed0187a65ad282cc1a68dc312d7ff45a959cb5a80ffebd88bc4d194376f4ede41bbe644790fc7ca1b8bb5019b41fdd1385da43301bd6f459b013ec19bef335f46f6c4c8157d9a1d6d21d7e73be9cb3672dd6e6b4877d6eb99aee37a72c3bdce2cae30b3e5241e405f4b430380f52e643f6a26955d9a49426ebcd8969c6a230f31ff2a5e93bc7d68d6bf4c91b34749a0df12a6230dfcaa52b9b766e7c3b8590706feeb711bd3b91e6d75056a4b6d8ce6aac1099148e83fe82bb685eb522b809f00d9985dc718d775634e33f3dc1adbf90ee7f1d304ed7df9171d07cc410e3ef7be0fbc4005e86ad9a24462a0873711dff7b68b794e939b70d08ae4a015f7835618c1b898c27f5af15e6385afa16a8bc1512b42f45b744d97f06cec2e89e2f5d78286f11f77a767bc691725772e26e83e61ecc2f5b99a335cce9b729ef657e78fbb1a2939ad87b8f662e758eb6fc70a121dd914fd1a51ac892b4b37e522e47eef297df516226090317ee8cdb19ef7c6b5b4a247733d9b7496af2eecbabf5c2b0bbd31dd1717899f7c864eef16ba3d7383ecca6a4e6b7a6689e20a374d2ef8dcaf9faf64095dbf3c58fb4493a5c7416cd545fae87e16992b9b8ad793be491d648a7c9e4036778ebdbffec3b19a8bd68bf5e3b1a4a72a236badbe1f528bffa76be1df8be8d96637d7fc0c03f94431ee956bef75a28f51b906c183db0afbdee985893b3773d724b5199dde078b9da7077bfd047e1ed92c8dd44c3797d39df6f8d1b87b0ffa1433c101fd8b02d9885893a52a98268051f5d275b2bb2498cbe59cb5f7d316ae9168c01b9900bae7aca7abd9d37bd4f075f66912b9f662fc65840f1fb0afc86f1f9ec93cf9fd18bb18fdc4a141fc931caf9ff6efd6b2d75f68aee596aebd66efc5ef01ee5cc418f39fbf03dc13fbdc14d0b8faa9591da62fefe8e2dadc38c37390efe602e1cf8575829e3371c74ad8e0d112256d6fcc26e64c9aee4dd7d00549354469ae4fa5f1ce288e1a0ae744e9c86cacf594fef63718b73513bdf130f3857de6f7003b172f22177d5605f6e7d3eb2f045fc0b687f4bf47075d84df78b83e7bf57bcf6c3547b1979933fe8ab98be68574b48cbb2d4afade586b7b737fd48ca1b137179b9d51e8b6b0dfdac2706bce24d310cca32e2e8e962199b6182cf46971dcc5e6711f27daded8495e0fe28b33b251682da1fb72aca774b0707d1ae6c8545a93decf0e7f2f64bd449d5cdf986fa181cbe38e1336b5f6c1ddee235f016c30c54961eed039872db60c1c93ff92770a980decac81149bc9295beab74efd8acdb8d892fa38f4dc603eea46dd8972374ba4df7c099a895a4c31cfcdfe58e4c36bc3d49b9bd561b61e7ae92b56a9b54fb6b8d807193f5e180774c39a4bb50e1d3ff6942b5e68e9b263ec22db676fdf58cf18f924e07327ab94e239dbf102c153e1797df7e0793bf53f9ec0bb59fbe9a5576bcfe6aef60c55e4efe131f9217efb1fbc96c6ae257aa9f808aca1b0e3382a76f69ef4e8346208feda42f7b577e0ef321f469b09bf603d91ffd785c7abef9771f9a37b7ee12efaeddcac279e629529afd11174ada64ff6fc75ce26227b566c12bc855f89c300f20726ec234e5a24768ff23a7e3efccb1ef94bbfc56319c49bb291abe782c3faa92c0ee17022c80eb7f1807f1c7b71215ca095552d02b20764c7f67df589af92ac45e7b22f5dcb5c7897fde3777c2ae913acdfebfdd739c5f303d9fbd191b73f3fd8a96e0ea15303bbc8638581fb394a24c871a466e9f7928777162255f7efea7850223fb1735d940bd1ef1927bfbf2f0fa06f48fb99c4fb72322d542dce0fbad05327d3a75a168fadee3c55fda3b7e919f7fd6511ba3de8df90d6e78f429df8686ee828c674fafb35d66586e307e8bea0ee982668cfc5c7eb3b8657c6bf8f73bf826b15eab810f16fa725ba9641b498fd9e417eab324d45fcb7913be4b7ebf33fe02f90ddb4160f6feca4463fb939a994af52f751f7393952e3f3f32ddbc2fe8fdf535d73df45986b95fbee42e6f75881dc243f46e89e88ef7e77ebcf23c8b5256bc14f9373301501a3c31f4bdf8ddd83efc8f19fa5d773334f46f3b3717df6b912c5b9a38b686fc3eb7d3c64da687ea464abb9dab80ecbfda37b9f37ef01c57f416f56ba33643b1c7acf4cb3ad790f9c965b14e768ad73f700f554b8b7aaf179eed8d950891209bf8393f40bee49ffb2c4c8eb3dd34542dfe5300b64b374ec3d7a5f7ccf4f8c6d705d0f7175213accf7823f57df5625b1857256ad52a9744b29f67aeb6ad5c3eb6e65ed13a787f65de57e98ef6fde44cabc8b1bfa6912a277aa443761250f2455bfdd7fc032bf7b51febdb48cefada6a4c82ef9e22dd86acab76b0dcf806337170b7e1f59f2e7116f779bdf1b6231f3d2243d5866acccf0782b32be5765ac46cbfeee5b39e7a7204daa83bd3b29d12d59960ad42394f9feea6a9f29e49e6431f1fbebd0ed19a08517d8eb847c7ff77a839b6725f783e566aeb53bb9b2d95364f31ea449e9f58637acc187c6939e0b5fdf2f3f432fdd9d1c6b1f1f304e21f4c69f57d72a9eeec5cc957910fa29f247836a152d24aaf5f9d54b2a1df2a3fbc49d643f70174e0b64bbbd0be6b1d8a752e9f44c1363578cb7d61e27ad90ad00dc9fa9b9f667ee58eb84e0437e3b5687380ec767adfb10a595ec4b5f7de1bda1ed1b717c50a48f957177cc5ffa7d59dfb28fe2904abcb05e62ba779e4123f7d9ecc38ae13ef9eb7adaffd2756da799bbeee69941e39007115c53f0fa98bb0ce22b3cc65d3e29d864a6a30bbd3035ef461b1faafcc4a360ef5e7c70777c1aac4127aef54cd190cd17a3beb72b1e2fe072cb15c62dbd4f90ed59cddbcfef3efc749d50dfe6c5b7fbe59aad395a5f77bc48bdfee2cc72019a82fc9261a31ea18bbde6df785fb62bf1d63a0e7448bff4db11d709d6827fc1b9e0ad25e4c007df7aa6a5561ce1bdcecd126b02ad1b7eec569b3e375433c1beb19a3ff6a10a69353f493a798fad1acad5b1d7dba037845c896b2f842fade86fed1bf42c2bfa478ee6df269a3e5733e908bcefe72bf2e18fac174dbf86eabcb9c6f6af9c6bb95789ef47ad08694dabd68be634c02c83f4cb29a7834575e9304617c70b0ef2a52ba85fa666bad40adea74c56e92df982bce954c2b9f2217a8e0c7cd531e98f81fa569c2ea2591ff48604a9ef2550f34bfccb7eb89c2b9073f4c41bf2a713abbf08b81ee64edf76a5e37e2eacbb6b645ec9f33988775a63c6c71422ad21507f68672f4ac78e4117c1a984e7a6a78e02fd765e9679e6cd6e67bbe52f3b655edafaedc1e31db65621e15e16270dc635773ec19034c795f00761de6ac25d54263c8efb819e9b1b07918c43678ffb412be0df9bcb2e4731f3269de2797351731f5fffcd2b8b23d61752de1cae07b3c5d7a737fb00ff8ea76511b90d7e1674ec81685ceb95f0b0c7a3ef55cf6fccd15dd98e61fefa5ab41624c07cd3a5764e84d6bbde95b3106d224552c74aae9caff8dfd142aa635625067fe4b248b0b6ad715d89b9b4498487dbe2b00d78be5cd9f4829908b9f8e558413e04e42a967a96ac2efb8701fee7f0b29ca8bd1667d9868b877287eb1fe49ef7bd236f56217befa4d2c393cdd08bf067c739f416d39e17b246a09fa2a9973d4e804399ae03bf1f643897a5d27eecc827f7ac9c091e0b8db9b5407eef1b9c73d2aa11a5527448718da83edfeececd4bd6eb7dd0c939e5113ed71c6b7e075cbf90a38b21e6768df3602244d87f55fe28d1205a0aea35d0806fb15c4d67a59fce86c81ed375eb68f19fa53c403687f583403d9ff574637f66391de54ab44b57a5922d4b057c6a3d0a436c2b9f9112fdf2cee77be07f66f8446b8a6ca1be94a760af9cdfeaa597bcc69e9fb36c35c73507ca1fb592d13ccea03ee09e33988f6e5410ff24237bc667b59a4958c3041d93907f5f4469294f732fcaaf8a358579789c17e2227245bc3e04694b3edf964ab4894e9112dd426caba18fe4e9c9b3b3ab85dbd5588917d1285a6a790463d4df613cc9e553f47b2734ced96a32c5ba53c0b9aea031c7b88a52b92be7ac5c96ca9b12159ffe65117e69c3cc17f0fb827cb9c5f1c94e909d7d3630b8de38ffa6ebd7a9c412bd771ff0b845b0929fd9a66f7c6f8dc1d52f710cef944558f754fc9a93bc3aaf3d07afb97d7b3f3a72fd392d9f8ae417af3fc6c9804746f67f76bbda76310a6679b49b7ed67156846cb8c4fc021813da130b9a6aebd0835a3f8a0185e7a69c5e31a7dd30f99aefaec0a5847c0e3dcf022d9774b417235f0a630bb15d9155c98f6e93e55ccd613cb5226c71b235ec2ca7df936c35b06539e72756aaf68cac1e5deb9f2437bb0f607d5ac69fda0e7cf60ff6feaaa0b96caba7af52f9663e4f0a9fa1e7ba1f5229f3a253b41a7fc03c3b6aca9bdbd42c169b9c46713327c9f2425c4fc87cc7eaeb9628e480efaecf0736d7c7ebfbf7354e7932c6c0e79b1f34341f05b406ca66bf7c7ea5bd2544e30cad47c0fe06b6caeb0943aecaef9b7930b9255b8bf0d8d6c7022f27e417edb5e8cd7712c65b613dfb46fd19d913a86b37ae8579592d4e2370dc3abfd63e7f222d5b394e574bdeebdc1af8f6a06f82ec39fbbb12cad59c7f1e31213dcc803921d88523d4c1e666c5e7ccb9ebbfd358048e4dcd0af948471bc66bd7e53b6f7a3cefd88ec700edb8beceba368f9fa32be6a9d4f3b4910fa4fa82fb89f8fe6bddf09ced562477b0a3b5ece902ea41ac8e7bb9097e3abbfbbd04ee7573fe945e7f83759736a9926bf65af77a6262d4b5e44f781fa9fff6c5f0c1bb37459f492b7956f9bde4e29db3f2a8df9255ccf99df6ede6d81f6f9a56a01869e658ebeb26edc4e42cd0bf5f304fda30f4e79ff99716624c55232783e60acee13b5827f2ed05cb4078f4554e7b5d43f1475b53a1677c2ffbb09692a356081ed9175af7cae7b45fefb7f9bd0079f679e1d9b6907bbd61fea5bfd46f013363949d75847839990a6ad9b03dc211e7eb1bb17b1041fe50f453b3f1b907393de96808e6c4884dc316928d3935353d9ea986284d7551dae8e2fe689aeb992d489a2d265bd3946ccd28545b58cc6cc15d18b139dd1a3ba8017ac8b61b2c57fa735d86eb5f38ce0b3e6e105ef3e0bbab7a76fa2ba85733ac4db99cdf24b49e497c001c09c118e2b51cf61cec838860137a64deb662c52fbe36487ac251dc81b940b14e3a9cc3521a7db3adb8125d13d9b110f69f9e817d69e0fb26fa9917ca85fb1a57d1188ef952edb8aac2b19e537e66805bb34fd4c6272b5945be5b18945d717878c61820c9734441e2f5dc5cf376b65b3dacde44caadde3ad8a4263a3e2336eddce062a8739c37ccaf8aeda65326ad5872c073be175b19f9e9759cea9444a76a0ed748b7fac7bb7b2ece9b9ef3bd2c93dceab9419303e2962eab45b0e98d1a987d8ff506fd184f520c30e4231cad285dcb79f34be69b3e389f54246b87d6b26b1ebf0ebe92968e37ad2d93fd8c68fe8c43616b377c67e4039f1dab38075601d73800d79e19efd244004eddd94bcfc55b302e8e6cfecd701f878a7ce899846c42e258fb89d7077cd273053d4b6e866c32c541201befa3b1acf10d19d413c871ad7b0cd13d300eb3cb1ed619770e299837c689e90b6e0d83ff5c467b87d75f0c5f7368c4bf308c261e6ebee36d19e30445b603d79799565ce29ec5eebcf1e5750fc6bf751ffe2508fd74afb996f38267a5eff3abacf3009b8bc1b052681cf079920abd978355eb2a6e4d35c79afc59c7b376c650e7d54c7a3a76927bbd59bcb9dc98dfb18984623563fe06f0a4d9bde47eb0776f07c849937ecaeaafe3b5bc8ed78a33b2ff8ebd483697c6bca5d88384ac01d1ef9913c635f9dbb5a24f63398eef81bd4e7635471bc901d7e7faabb584fca3d6f194630cf7f7af93bd6c468115d0bea3d61c60d763dcdd1d7969b6cf9be353b6ba98956b506d15fc6ca4665cb94672f371ec9305a9a938d630f67ec236748c876689c81687819cf41846acce6db267d2e5d9d0eb9b9c7ef85f8d91ead8c923b0194f797bccd7ae253efef25c706c7bac8dd48c036b9df8e797f7dfe0a4e5cea3b9d65e747a6659fb6dec7e7e5d77cd7338e8bbfa3e3a6b0c9dbf25fdc5c87782eb320ce456538a753978aece4a74d48acee751d03bd73e2b5ccfde459b3ed6d807ac5525de9713a554617cbafcd33cc2353552d71d2b2c777dd08ac74a9e124d1896776af6ba211f3a954acf02ec68ba887ee98b6b1e7bf752a9cf78492b987380c1c658bd5b0b97317c04d50fb633faac56e9f01194a78cf64d7dd17e4103de418e7bd3f0319b9e71aff9cecc23ba8f36cf54bd4f92fb1cc7378fe4cf5a79c226068b68b5b6f56f1a398d29ad69e27dd44bcd9ccbbf106c0cd3b8b86e1b353688c59a7ad044a38af229b6702f77afef5f97faedbc1c4f9fb8174925bd164c67116b7f603fbd72edbd7140be70df1430df579cfb1751daf45f7b4e6a5cb6fac7ef998249b986c761b99a7ce4c1387e5bcaa08dd83caf7c42e745362beb5aebee597cb90fbcc647edde94b3279ba18f79811f81bdbbbad44671efd8ef858fc02a62cb4a124f7ee96fa975ce50cc05bd4dfcdcc3b5b5fd65117a96a9bdd4d7c6c97b6bdec55b3bc8bc74ff08ca61e33956f30f89ce9155bace5d6b56b231c3bc6051007a256ee6a566dcaa3f22ffa6f27a3576ceadc4fe01d9f7be8ffcebbbd333f39d35cc3c8b701ac23d1b4d6e96e639d9effdd42c02cbac82e9ec7eb044c26fe8968e25268bc865d75ea524c6192f0c14bb2a328af583ca45f7234b89df1b5c82f127c37b2af345e2db66e2f7f79f5e9adc083780ec43efc9e0a45bb36fb05ff6026afb8ebd3b7d5992a8c8c0bf7a72b4cfa7d72b866e9ae4de18e2898727ef133ffa8c50cce5f7ccd22f07a75fb012f9c11a7eaf087e69657f3ebc79921eac22f74b256bf1d135f0b26ee9a40ef2217b12b2cb098e614f910935d2fafa8abc7fb8f6fabee8ef4e7edf7cfab25406e3cf33d832abf87ff2b949acd483deb839e5bf286e5b0df9722369ad1511c4384d7b521d6449f4e4bd7bb0ccdc9dfc68935fed7779cab66731c2f5d0d6fa79c1e1fdc39a433e6af5f19f605e8c545d11b7f3dd9faef7e4e2da361e7313309ea7409e7dbbb68ac7b7bfcec0cfd13e33efb23b39c8eef7ccc48b3e9e0a8a71c61f857a3672c091a4ebcc4bfd938bd7d409f8366cf5749093cb413601b7e2588313ba1f45769f7ef989e6c8dde3e7848cd674fc6657c213ddb38ed629f07349e87e0b57571fc866ae6d8169fc636ed8d73d6335f741a719ad31f57c1b604cd7ae58a512f2b52bbf37bbbcf89a7c2e4117877c2f4dd7fbdaf4142918df8e04733b5ce25ec86c8bec05e0f9193e87e06de3b7e5dc01cdd42faad357ebf9deb97da60ff7dbdfaf5d7b5d395640b5e8b3953c9498eeee59009bdcf6e596f66db8b57779702946f87a1f7950a2b1580b3a7d76c2d983fb28e3b6ff8beee5b6b576d7766e2e18879d63b1b405e80f3d62ddf2a6bf300e6f4b0daf9d566d77d6a16dc46a2fc198e97a022739e41726f97bcdd72ede57faf43fdbf3a040cf10cc6ea5ad535e683e0714a78bf3c768578619d64b486a2ea3fedef3134172b542b07ac30038a1ce62f97b0dfa93cb6f01de5bb0aacfa0eebdd837b54acb460d188eddbce6a99a7a6cb2f45c8e639c438ee8f77b4f9d099277be099bb4a9010acfcf8d9d7f2e32a69b2b8f2435ba5efd282f96c87ec95334560fac033afa56412b72eff922ee91e073488ee6a4ea6438c1f5bc38e3bf0be8777323877ae71c8f6580c6b2bf0eb6d600cdcd6aa95faff8dd88e16abef73c5190bca828b7d628c3f55f13fbd15a83374b5c44ce731b03e7c37da9c519a79b2258fd45b0b58d3c98dd2ae0639e2b92df17259e0bead8ea3d68d670d4ff8fbd37d95294dbfe001fe80e1250336418a234022ad23313504140c9401478fa5a671f40408d8cefbbf75fab0635c89506cde1b4bbdfbf3d8cb327a4f3eae69db74b37d9c67b0670841e7f776cc935e6f6afba064624997abe33b738166e31067f8faa91aea5165f1b6d91e90d3622abd072592c80a72cee400734ec1befd59b7d8e7524357111a59dba7cf1ba8b3b84f5fd2e9e7aaa95c1b2f1b1e118e7c5a5c68229712d097dbab194b4c55e24a6175505dc920ad14c15d76b42f2729d1788652690c7d4821517638c135ef76d705e666dccfc828071ea882ea9f74063e29e7cae97c15a54631972d279e1b27b603abd1dfb32745271b1c806e3b922fdb2ef13bb34b44cc6734e24cb3058e17cf729e4316fe71047d0d013bda6e5609fd5c32017d542d918f2450b3bb81ec667b2443486fd7c517f43ff8f1bc6d303af24cb901dc4a9af2eeec8c81c364e1db3884426ea9cd105ad339d5a20d55fe29fb945ba273f7b18fab58ca26f8ccfdce397a93b5aa63e1fcb8ee5c4eebcd525dff57b0a35d9a8373a92fa5dcd52f957bfef64b58ec1f6af898b71ba0c9d0dfa5f62858b1bb6f88c706d4d7ee23d003ebbcebe60e247ecc8fcdad51f32b41e6a1767c5bc27cb24ba286a91e13c9b25d6b554c01821d17a7768017900fd81cd5c3efee89e4d2fc467f350c7096d4f6430d48755739b3946b74e8b3ecca558ba26193b5c0cb9535e12dfbc2426f61ac6baecb6a571f4486fd729a257cc40ce2326372f210397ed7e4f1e7e4ff1121ac9addd9ac0fd7648a372ac25e372f46947613c8b477bc2b0bd462e7f6b2b84fc13880b2842db5c7d35351487e3c3b1ab71ee9b06bbe78c938feb940cf54bf9c0178b037fbf6873a8d75d8adc257d91a3d2cbedd39ff6f75b595b7f969ffdd85f34583ac3da3c6f6c1d2ca201cfba33d4219c3fcd4f8b3560b4b5e33e8b75d2e05f34f852f2efd65759b5b14c9dba643a6dd4fe6017d12652a11ded3957ba97674e2ab47b269f757c8e051bea37ebf0fc4ea3f3b2b36007be007bb826a56f4eac9db5bd74f7f10bfbec8b5a7aafe7a3be4734f7565afa3c2f67859647fd79f187f9f99cfeb37979e4997e631b1ff7e2e2ded890da31beb307dadd9a1fe6e297ad11a17b36ae766294fddc8820d8980ba8396c5b504bfbbee116bfbcf21aaccff26f5b232b09f86b8bf9ddd0caeb531dc139c4ca952bedf31943fcacd3b2f639922b8f90b563d9d9832d9e9caf1185a329edbb6d4cc73c25379a11cba307969f3f273f76a6f27b57665f12f7a00feb649c3df3a39490f80eadd6d240e28cb1c7c50d3e22d885501f6df54a4a7c5716bb5cb12d6a526dcaa02fb7cdc9405ae817156389b6f18658ceb013c0c4c2fc03cb02d4f4226ae90a63e2000f09244b4e4515e96a0ad2994b7fd1d4b1d4b3ad1aacd1dc4b8b627a586ca70726e8ca2e80b3f29c9fe697b635fb8e9e36b28edef1950de859ad1b18ca873127e35a4e79cc3df37dcc4427c753df9813fa60912f6cde2d0e049acf6aa30a77e9b440ffdedad77bcfbfc65da9fdfbd778631ad30307fa557ee0a1a6232d9cc1b69e3be5c0563ca7459da0d7809b725ec5489e5c9fdb5cb3ccabc8b2d18fba7e70b79c805dc71b15d3c175a837d1892d8398fb2616478856819b4c6e3e3303ff9dc0c19a5d04de4f7d2eb8f9967274b938df8de4a36d4e228183dce54a086bbf37b7a0e5f935d870535c1bc47ac482afcbeccbeed46e70d4e056e73e5726c5fa0d8e8aff32f6fe18ee4c25ecc48a0cfa5df713fa8331cb5c932504b03dc6108787cea48071678e48dfdc59f2d135e3caa360ded3f548ce6d731b611cd480049d86d773876309a8ff301c1f9e87d7e3e3eeb41ba2f12179e4da1b9fcbbc1e9f03b5f1e34808a12e72f632069f59122e819e79d484c0b69fd6deca7b097bdf3133587f6c9322039f013b13e47bb95c1c49e18c7147db8bc039a54b914b87c1f94e3e47c36f2fd18f98efc5a583e65dbb5652c246ce028d27bbb8cc24f112faaa9a4ae63213e893c4dddbb97af0e5558349526eccf145d616a5d8d7f3d2a7d821eb39bf13cb5a882ed2a5cfffa5a68575c57bbc4a91ee89cf01fa6d11804976e08bb771e9688ff8cc247578e2a3a7e33393c8b6b6418d750abf71bd2a34de6e8d3183c6b8ab7d8c886e3cd69eaae71cd775a9e7bf803984b80eb406ffc5f7bb3153101b1019814d0520d789bdd82f1c6bdb9cc1269678a7424c160df85618f30862d734b4dfcb67cc1c2fac694dd9d8a9a6179fa9f3ac17a9a611e3bc8961df990ee491bc5ae37e5d92f1453e09d45ff64a20f242deda639349ec8d64fced9efe3b7df28fdb6a50423cd268193b4d4dfcbeee1e0cbef502fb00db0806733af499833d4db2b6ae639034d46e35d9fbf09d47df261f384f44cffc264686bdc69685731adef2996e9c0785beedc78e39c91d6b55299491fbfc129d7b62afa5a9c4d5e3d657b17bde96b6592079f5b73b22e99ff0b776de34ec375e95b04f3af7fbdfafd7720c71638f339cdb5471f328a3fbcc64f88c63ae4ec0bb93f8047a1a3c27e3dcfd671ad15dbf7c685395eb9a3a7eb726dea9936fc40b102bb9817acc4d2d32e16ba32d5237ccb05d55c5b4aeaea156ac4f9fddfa82fdfa576d3c492db3689fd8bed78d8fe6c6dd78b1123de39da0066fec263eb19b5f4bb1220ad11c7f816d3226f2864ffca40fbb7e1d7e244f74dabedc0f562f0ee0452c0cc69392b8c5234fae89556a6ce798af857642133b90f5898b83fe59c5544896379f3b8622cc5b71f329a35440ee3ea622dc8f7377641075cc7aea5664dacd0943f73bf7f29e9d34a1491fe7e0c46d6c2537891f71a4c7706b0577d467c7548e76f71ca8b3c831fdd231f523d802107fac2ec79d39ce040eb53bbb79e12c041e19461f6e45965d9c93bfd0d5be3d35417a369603444ecf77a692ae29d675d449eab048260ba05e31ba0e3493635f9dc3743ffad15a810d18c7da83edf5b6d11b3dac895f6bfd3099ad912d5db347cb186a32363e165e7ebfe66a417ed7ae3b7fdfee7ad4c160c3f2d8e52996982a5ce0c32c41cb3cc426ff84975deabca2d441632b8ff57c1ad3c3a2edeb9763c59588c6d7b6777cfd7d96b86db425ddc333e1eebd5c39f48dda46fddc3fce4ed754d4910fe3ee598f3766d4f83732ef445c64f54a9a94e18b2a5da1ffa1361a798d2db53821ba605745f038bbd99748b5f90c978dc9ba36497cf8c6f562a919ed91e8ffb43c983ad4a4857c45c447d48cf60df4ffd0466c6319c5b8822ddfd2887ede3677c4757071cdc6bfaf5f27cf62672a1f300ebc1f033436f01ff32bd731daf50dc0efa47d668013a0a1fb4283d90f75e63a634fdbd81d4bc83d2a489db3724174a89161fc57b20b653c647bc06dedd774034c1b2b0b86f24d9d471298a32de47ddac695b0e06fc317ab45e685b5dc83e3b8e139881d36aea4a56605c45c9357a25e17129d49f44ca7afe901c920491c891649ff1bf9b7a53761516e8cab2f71d17767f73b9ad0b5a9fde09cd2ffe69c56bd73aa36e774da3f5b6aabef139dfed6e7374aa5840cbc17188e8fb31ad7b9a051ee24316070bf927f6bde789555887901b91763d5d6fb8d294af045d63183c3360631a384481940335cd8c764b9397dfe1239fd2aabd1cd3b5d067808f27f75ae76e82c6bc455c6b950697b869a3dc98dd3f548e8d1a0c617ea85936ac7c589cf1c0734197855ecd47d70cb2280d8d11e3d58f4741a58cb7976c5759c6374aea1561a9c7533765d92f892d5a26cf6bca3620cd4ff119f7bcfc3b8e977724bd76ef4a01540239ef7954b7668a30ab5867eb05ef205cb007104f97e0cd6abdceadad7353a752be5f975a86ba4a2fae8df37b206ccf77aa44cdd1072c46837acbf87f722f1ffefbd7fbbf77a71f891634e2aa48f3ce773f56238ce4e8da3e6112bc05813bbf415e705e51b621268a734dea06f530601bc6ab4c2790fcc3195ca2017c32097b4452a6a97523cffe0b9377ce449c7d6e489a8fdd5b6d2c4f9665e09180d0fdcae5a47f419b06366b65a5412afa707be8038e91de4bd4619ac232f67be1a4f0fbc7071318e7ae6f4da2da65e08b27086bfdb69ef4763f98b6de97ccd6c731b3996f0db5171be80cb19037c9ca0c1770900e753bb17ef740b056ca146e08d94a3cffbb7d616cab1a5a3ce903e1cdba36dec30503be368032e4911fb9c7e7446cbc0437a91f6e0db3876e598d6f52e405f744f45bc2eb32f37c4b9c88065562d908e08d7bd30cea11e4368273b751238dc56de99932f11309cbb726b4c4bdceae65ab3ccb1b6b192c477db5a123bc0adede5b282be0ffa95694c0f0c9b1ff822decc67d303379ecaccdfecaf10639b0366db593edad632eed85f7361d16017cc6e4e38ab6dd138ff0bd136819f05de799bd6eb57c7112a473b81398b312ecd8cd8712c3a3fedfc615cfe6977fe1a5dba99a7babe1419afa968eaa8d71c5ddfa9f1ad6bd704dceb6e4de31191d9099b615ff096d99913dd4b8ce19cd53173fa37f3d3cec1b1f5757174f2d833712e70483785f8dc48e0b74837eded8f8da55ca09ea54e063e7744bac3489c0b99a3461f6d8ed659e8d8b08fc5a3d61551aca9f174a721bda13d37b78d39ce6c8d28c5649a7915fcff2583acddb1f5964500f5e8fad7aa6e7d51ef4c641ec712bbf9b767e9feee2ca926e097a70e33cb7d930c1d3466ca3ed63e84e779a8c7e585b0e7b19c39ff4c1ff865fa87585e73d1aae7036c97401ba146c343c65da273917ac98a7439b6d43836c2f9652f712f89035f109bf9e73bdbfbb2b1af431daba77d2ea4ebc61664629cff8e1da8d3cfe35de215242f666ed839d3bc92c9614a20fa2e71135ae2fc7267f6f37e6b5f13d416ddcc597c66dffa4c7eb227e11b4ff4aa7fde5a2cdb7819da05ae0fd0b1b195c3359ad632476d6fc36b55d6181429d8c9b4a2399f6d5c90175e5331d13fbcd3f8be0c9ddeb9b5d1fed4165f3b358de18c9c3e936532edae7d20f1c297c845685eff385d1f05473773593dd3c2a27c9a4fc4a74eeff9c25ff632e00c39a365eacce5a7796df96c45128d5f0fcb357ab23cc11ce7cd1c7b9d39f68673cccb7d7f1c2fa0390e06731cd7738c6904e02b4da7ee09d188e943c736177f1c35cd25ee4eefd4eb4d4cf42f5fbbe2393ecbdd39ce2498dffa19907361ad06bea32215cbe006724afd9cadbd798e9afe7154b4be4421a2b54dc65dbce1eaa016b94b60dbda3fa7c92f79518fe76c4ec451661ee716e91cdff0e89a46d6b2eb90cef07ee0f3db4a87dafbe8f76578764b2c2b61feeb9dc6b4f3f6ecae2e2e45434e976bb219606472b32f9b191f554b39da149bbb094d081ce2bf803bfbe09b2f69d3ece8260f7e5acb5db41b1e4bb95252e9bc0cdc647b73d5e076e0ef848cb130618ff6fda27abdcfee5d5f6ad0d06b7c9665ba1fd31e9452257c217ae7009fb2a77685f6a09dbe6cdb926991b3bf6c358a1da893d5a30355f3ad1fb585ebb9e510bfb4d8de7c739939ea31dd7051c7b6b6f8f02ae2e284d74054db3a73d1c6aadf031ce6e2be3115743e2f07bea87db7b84f3ba688eabaa2688f677d7bf0317dd8b5e09c5f6535861ce59d39219d7a2cebd1e787682ab4afe2da5fb8e6e927edc03bc1f4c0ddf31dc756f539bc489cd2ecd9f3c61cdce3e5744ddd732f31aeeec889ebeb67713097d0ef6e0d719ec86caa483dcb88152a2e6daa782b3b7e2737bfa38f8fb601cf02e8e4f07b4258c782ff0bfadbb4a553f16fc8e5086727978b0bdf34e63b6b79723990b77afe20d0abb8087c47f59e4945730afa0ba2451217fd47c675623ab277f4a7be8f784d870608031e2f603d0ef842478f43fc9d177ab630b7c164ebc443bb2744afc7537f8e65ba9e2cc48dbf905cd8d4d791e7d77cc32b5826ea603ded34ac4fecb482a879415fce0bafb1c4455f885f1eac3e96a1a3fedfcb77cd181d9528fa34b6e95f81fa8fe6abcb87629142bae5f5d53da45f7ef56973ff5d2423ca611ae37558d2031f19d40f03db4f73ad9c240f3c805739b4717f2d8718574886e4854b07d76d180344acc32ba6ff90031c3ff9192167868b2be9bc8a1d442778b2af0777ec4b35c66ae59846b78639b1d19472ad2993d5c92bd79a9e8873f9be9a0be45a53c8d529de8bbc02757d577361b29a47d4aa12262b15d7f07e755dae6462a57d8ee4937797d931e487889550c8276f226b42296b0a9269a79bf9a214559b904f11b1d6ec917c8a48d198109bd3f83fb216a5a29a55ab4a19ad4e8b6aadc9f53b7aba3cf5fa9b8a954caeb44f4aaef442d69cbd3fbf4fd76a948a9552aeb4c564adc9a3b5e6d5efcb4fef5b6705726856619475e768632919d43f982bd50acd85ea10a23a2d57a72321573ab1d29c815f7edcf78737bc13f2337afba684bc7b8a5c3ef09edfda3b4b1c3736be34fed6f718b342cd97dec80ec98af446db9b6b343c7d16b91492f721eeeb8af3b07af68b99be887ea3338db1ce66bdbde595b3ebce5a558051d8395740abb07fedf710d3aab691815da995a52ca5831bbaf8704fe3fbba24ae6e18a71bab195380cf34d23dd86b6a41be52ec6facadebc644e6b360e7bc49603b8c3e3ab940c932d12f3e9bdd2d35a6257e75f14d27719f3194712c10b65bd5f453efe6145d65ed1a6f4e9f1f924ac6a239a6bdb0e5c95f18639ec4311f3cf48986f80de8a7e16fcca8875b78b008b09776b187dfc452b7f462203be1730f3874db853b324297d32fa29a024ec0cbb61b39472353ec63ebd7f7db21fe9010f40edb4cbb98b867db322a8f8a03f709a304fb69205ee4748ddcd135de68c29ffa1cc1fc6c399ab493221619a42314f95fee131b53ff03343c99d03e60e3e8177f3ea691fe5563a2f53055c4a8b68b8cd8d2678e57394c57b6b5bd48497173205e8726c497f19e8ff84c5c2b40a1beb7896219a7934b9ab994771162c04f3ebaa641ec383ac2b187dbd8e397b14db184632ab9c0ce32c76491dc0eb50a8c24a66c7512fb09e0e6a2b395bae715e1986c248451260cb0f48679693e33b9b9e7478c6773cd499c476d065cff3b7792b8745a5ccfc9079a73c79c443d196e80ab297174be3e2b39d4d61a6d6f1ec4acd18973263ae7dc18fbe8dc3ee19d37fe026160ebd081dfd6f5c9e49d85c63b89710d7c3a972086eedd77ff95cfa8ad45d7605c430c8df6c017f7b929e43ee2b3d4c8e3885eb7f8e3b193d8b417d6cf9cfd7867fa177ffe2e767d966ea8e8b7fc7ebf756968f9845f827d03e013f02c2370e69fbf6b3bc02f9f9914bec946b27629710c104d486796b44da55c9fe4c17b728d8b440eede20db6c77dd0c67d638e5f7c8bccd72761d0b640bba74b856b0c634cc2fa9be077fa26263add970181eb875c69519d9cbd84a520be4b5d36f2e1106b387746cbc0871c229a9012bfb42d07e2d690bce6331362c719c4fb5c821901d88dd63640fdf7b920f6b9c56fe9746cfd486e78a45665947b099b3b1c7d15e78bc97aae00afc17af011b0d8f0ef08e263d0ef15d85b8047b4e390b83bf826ed0a639adb6a91e0ba9ff0dd6c3787588808fc6573f2dcf50beda938f728a3f417cb9bc3c5b1573d61e7b53c6aa33732e364a518c1c18858d9d0f5cc3b91eb7a1e734d676d8b74661a6bb0101750cf8f14914b2da64d452f8c2dc4043cda52f549db96ddf5850356e602f3c5f9359654e2a383cf023c0e72b6cbc918e60478dfe4ee8ee47caf5dab0d374e96c0eb65347fffd9018e5b447b6594f95a5142acc4892421be2899a2676f1b4b6f7008b28d195dddb0386dcce9d53b5db34d22ff02cc3ceafe1b74194afe70e6c45d6282fbc6f40097d5e58cc487b3fc997b497cdef10ae26d77e98ce80a59a2eb7642133e475f37e63443fc1eec4dda9896a1f630dc8ff61a1e5fa39bac29fd2a6959ea8701be6e11990375d9e89bffb6f6c3ec7e500b12e3e81b8c4b6d27185b5f7f83df38ae6b0e4fd13a6468cfc90cc40365bb3951489c82fe3e6fb4c5876d64774b23ef589e3a7e74e264a88dc9ba0e4b647b8da4a4647973f8e863c710b4ac16915811456d2bb86eac08b02dd6a3285926c42f9117e87db37e0c49b46bcb458feb6a7b7d22d5b9e06e4562de7b5e15de59b978615a8a54f467a7421ecfc53b1117477de6fbd2494fa54a873c6e7128afa8c75452c7a4a84e499941fbb5cbef83523c0b5f3b354dc1df8df6d019626d2baf44bc830cbc917c13b9e91fb74c6fa25a546245e6e259c8ec32a3dd304d452dbdd6fb8fc2cfaf6c6964d76df4c7ee8793ab6dad2a53a5eb67e5abcf34f371afeb744e1b3b57e5594b42e4853fd8868d741ab4af84bf8d31dda841fc2cdb11f94a8d6e2bed33fb6e9e2526a0a4f33275a880902c1b9f0326bab955916c4a7406f53fcd3844c46b619cd30bcc4f3245e7f36b638eff78617182b94aa2741da236319fa863a1ce16d477c0d724ee08b9de4e99d14816f6c39a7fc039675d8724e8c7b5e282f69ec47910630bb51d305f01cc4993f2fd8dd55ecb760c6ab338433cac5a34dfac5ef4a31af423152d9268ea5f48e7e3d7c6929bf8b093a34e2662459e0e6a71f378c8b9aabec13e2536e5f13d8f79f0253406c0e86cf9961a656f75fc867fc13cd9f4e3ef46178d7eefa907cff3415641fc2e4d0e16d9c7e2e5bc2e16efc5a4b67e4fcf875cb186d737f5d51e7cbea993dbf2f8a636773db79d774244bf3a7fc35e023d0eed25f24837d74cc024571a5a4c34fb12f344fa8efe6f69b0f689f619b131c1867493b800d12ec09f17cb6b24f17d5c091ff3c41a4b74523ad62ac6763bb9891f043c9275c99ea424aeb62679f7f9e8226ad92336db94db584cb722739c1301bc2f6fe9a5695fdc128fb99d5fa46bbeb8dfd6f2280312d38d22c0ffb776e56ca3c91f0e47b775ba5ed04344e3519b25c89a0cfa56113b672515133b73f0bdd01d6d099722ae6e3921dcd127baf7e137b479debef3b5630ab2a1d31b730af32e524ae6223e609123a8cba10659edd7b9d46d6436fe3faded0e388f8cb19357636b649883d9cefd4de2f5ee5adc246e9162ec16a3b649d9b4ddf29862b23117801b239da30fb7acf79439ade9d335a8e96dd6dc33618c985e8bd4a2a1f994c4d5ef9011dd3eabb6efffd9373647b437d929e4cc39a643481ca2cbd34656f8b2cae82687c5b8993389f7e07eb35fc5d131952ae1c33f4d4288b355814e1d36a690d927f2d6ec75512d269bb307350f45c0ec3ed27e598c50bb6d5b759fb61a598adc3473d5e863abd1a72676690b98f1978bb8d069a73ca6a28afbbc31a6d95685f5a7f74cc1b6e7cb14d0f5668fa0efb1f57ea56db548f1370a5604fbeebf8989aaf5232c1fd5b4a3aecf84f596967e60bd096848d1d20cacff63da737af5bedc7f1faf1d60b33ffe5ed9481eaadbead01bdc0ea6398fbf81de3c9e6fe7a66db3993b6df67a3e7ab416d7a1ac6daf04e0001857bf1d0347df55733b466dbdce0da9fb886bc83eea5de1f98c07b6e75ce2c63d7bcdc6baa61e615c3d7e108bc63ce992751f67376f11477b9ec8e03cf6e335faf92a563d86d136b0a9abdbd4e67247b3a5c307fe9a1aff12b9f1a3efdcb8edb7a8a5bd393147fdf9b0ea5a4fcd3c484cf635689f9690ee3894a3012f6830b7a7cf8e8da4df67491d8c9b2569895fc61e6510c3f9ea7fff48cbfc7f179fdac8a7b6b9ac906e8cb1748ea9c40b8d5c18d888ce32938964eaf9be9767309ecaa67e5d233a7bba178e4a8cdfc7c0fda83f1023b73a791d5fee11fcb83b8dfcd8cf17bf65a698c850c7fd58ae4f9fd95e137ecb7cd7ceb3bcede7692af16dddef37f69e4efe14c486605b465b77e0d4c6abbed651d1fc3c74d499c9fe4847edb415af9bb61a5dc851896b1b7fcacb582f859cd6b8d2b918c9e0d1a60caa46c6dfa03dc42f633f6e7459b9e14934ae4f67503afe1bc92ae8bdd2b11ca5e6b9d54307eeb533d9586d3be9a3cd238ed7e5c634de7f880f4659fb7b3eb9015fa91eed22fda5e5e53cc8cbe5ebb6a3ffd875ddafb63d35a677ea648c643d898bf23d92f1ca2295ce51b1b1846ca74e26f2890c0e6a8165a9a73388de59d0f09c06985bd0067e8f40faedd9b1b68c63ad082d3146689e700dc5f13b1d17e9e33744936d8db8634cb0c71eead50443faeffc5af572f4caeccb2be39b589180b7f5d0d3165f359e57479e98766df999ad76ff0e1a4c9edb460d72e97c2c446a8cc686f83beadbc50d271359bde6d2392a45755aaedb18193df74633c871d5dadcc136ee74bc4ea65fad9f00c943968e648ac93a593c5f3f936f7009c06ef8ad5dba63cb22579057447e34f5fc9ee363f41c631feaf99ec139c65ec29e156cebfc0318c36671b329a4bb4ca0ee6dfbbcfad7e727078be8d2b38bac2d48514532898e68d787c32f038758dd1cd349d6e1f82e9f09441b33b35c76db0d2d1563cbfe8fe62317e7f648541bdf1b7159a1f5e5227a3f7a45d77af1f531ced7c679e4d2797b03ac59b5dd4f53794e13d27975072c07a2b199a571279724a8f3bed0b9bfba612bf7568febd1e33ae4d9f5ec1c8188f64c9956a2866db77e7dbec5c6eff7da96506d20e7f9bd2dc1d7fab6045b4d037124fff1a00e47adb358fad52d8bd3463d065017833212e75c4cdbdfa7fb1decc3f559a8d7f0777b3f8cfeb80c4d8a899efb940172d69a1a77f66146db651a2059e2b1d7e05a85e84c77bfe2e7a2de9e44cffd6ddf0dfb2627fa75c5141560b324be5cafe5eff57c468b6a914a6c160ede092566397c1ef6e9ee2778222fb08c5b5b5f8d6108f6ad9a1e4a885f75300d212610fc5f72da91f106b11e721dffdaeaa9d827c9dd6947a5c95a8e467a62ef8c8b159989e72e5d403aa313036696b59d48e7e86b63defff8eac37652ef8dd3c6827add994bad529f8fd0bbc9d335b5b80cf6f3494ce42f274c1351bb5e3627a8dd36f8e691b64bfa22f183b6343291282c4f396a3a7c07e9f1311acbe0fb64cb432bb2446dd667ee6b634eb39d9af564332f8c327b70cd2d1fb1a32217fdd9a95774265369b47a9f3f5fc713617f819daebf91d95ec486e40a92ab2197fbf5fe1ac69774750b34beda9652fb99daf886568e79731faf712bab37fad1639e9bf75a5d0be9db1551f4f38c8436877119da0fdbd9a06eeea6ac7dd9e723fd8d9d6c8ce8cb7e7e69f5b9fdb73e9fe81792afd7276c53fa6bfb739a40b26f3dfef7fe284effe56897fb003322edf2a556efa87d40750c57e6866fe7ffd6bedffa22b1cdb2b585353aec634f63ec5f6edad37f371a4bbf881fabb11ceca433fea03ffe695ddb7732fece17b7073e77fcfdd099a3efd66c026ba675d6ecf4dd9a5dd09afdfebf5ab31ff421df50e3df3233f0615a57f0d7ac93716624b82eb19c28bfbdb080eb32a5fcdea985e9402c985039f3f476508b7c10435139d656a931a56feecb789ffadc76f48f5617c77203edb7f3ded13bba3a3ed8f80cfa39be03ebbe43ec9076cdadf64c21393efd877d1fd4f06e74a423fdd0ad413f6aed1c7ddda83bc6e8e18fef8ef1d41be3ef8d39a1256efa2fc7d8b475015dff1ff2ed745fb22f6b9abd8dbb8a0cca3127c4ce742602d7e26c411c8893b099378a8e6d4d718ead040e3fef95b3ca379b5ae3511f43c0c842971a237924d959cb5808efa14b39891013d92376f2213be0f84fac5f414cf0c8cfa15e1767943e1f5d1c036af4bfcb6fd1da7e3cfa1f3aea0cc7af70b896bfc4ccaa9d393939ea2cf59959e0e23a4e13810b02af9cdd1f98579f6721bcc6482e114be12c8431d4dd5c377684b7b595fe9ebbbea7e8bcafef603f6a53bbfd9bd8b977637fe0ba62ccf66e7c1ce196300f81c0756b28446dbe2bcc6b2fafac988aed75d245b2a3dbe027f1d70e866c5a4adc8ad8cfd3f480f8324f64687d9fc756e7ec7d5377a49b93e37c8bfb81e38cf05e88ff3a5f0e67404ea1c019ae1b134d7db44ebc7f84c78975fc0fb72ad23e8ec534dd19d79ba576b173a1c670b24c22a44b643b73158bdc34ebc7536fd1994dbda4ef3befd656477a1ada5f6b9cbf95766b5faea997f5dffe23d7bed9baa6db80b6acee2e1723b9b7ae99de6de35e886aef7cbe1d6fbd97833a3ff9c3ee8ebd6c310c032959117ba628bb71f83ed825036290bf7e739bf8295ec9d11ed9983afc8ff3d4e3d2813af0305f99ff92defd4d9f06190ee2b91cb5f8704d766cce2f853c17088923833d1bfd96b5cf12e952105b1c2e17685f780999ba495cf95c7c12f8daf6680256d7d135d9c8516757479d456e39037a2c9c894e9e5c0478dda83d11d7c8c772d2e275dccb1bbbe14bdba0b478694b84b89efd8840faf01bb97cf2b19fa77953fbd75191cc15d8a25a20d9a0cd09413ad69e8d2077d99d13ef71a3174ff4ecd77bcc82f4e3a016a727dad8c1cbf101bfedb5dd7a3f2f62e97c2c6a1cb9b1ac9104b649a37b1374af6cef9d3af734f45ed4bc37c1ef45f53df45e54b6f74ef8de410d3273a4e43b73eb83cf4f2d92214f6e63135fe441805f1ff7f14d2cd322df6b8b77b6e2008de5adbd18f7f3f5be78818560975087e8f2cc93568f79e78941ad93875fba538b351eda2e7b9801d82eddf89f9365780c6d731b610cac716e5341e0267e6ca0bda3d1a7d6ffa246bf1f74b870dd10e37c025e05ce23058c3e34a742c246356fc8a56475b1cdc9d931203ef8d78e09728c5999a5eb641b437ebc3aab4c6a8cf12e4b186bdab3b1bc9eaf17d88101aeb19ca0b55f9e9afa904258a0b3fde19d8dfc39eea2f5e7c41e73446b50f99c717febebe2ec8ba8de0399c7b1585bc8af0c547496debfc3d212b74dbdd1ece6514ff1e038ee14ad433df7d05f8bc876d60a726d1affc1fb98910592a5ef3b7302cfbfc28ca86de6757b0f7bb9c7c075c82bfabb1d5da70167487bd0291ce79ade454e6f71e3d01ab815be86f13e631acdebabef7f8fb90018591f1e608d0848ae8f91beb1d748a88de771456053c6ab3177e6e67d2d38d045c1af685f1a7d58d45212bd3fcc45f29881dd84bd129645f6b047579a0276de619c671ddf59acb4cff407f69b62a5094d3ba3b51a7daf23d432abc48d3b181845267172e684c505e2f7b463e6cd4957407a8eb94a013b219c5d1d739bfa2679173827732996589742269c9dc03bc75063c84f8cd38a999d5caab879a70ce900946d2d279087c13bb15dc9473fdec67b7e5bd747a64b670ecf916e12431d3d815f0518134228b7cc8cb446eddf77fcbd361fe0e8512ce05778a7e542e08dc3e3efc507d23b7c73023996ae3aab6c13b0354a39528ebe413ffe3efdf8fb553d5e8861774d3675435c17455467f03d81f93cee4cfb28f28eee58013acbb142d1372f51f27df8496fd4cfbb1446c73d6a27fc3ca2e71daa386ccfd8efe0727429cc89a3cf1963b4171d6db9107be3facc84576df351ba6edae489e3a31ef0e7e569be99c96f614ed0c27c9177fb2d30b3b3cbd25cede7c8dc9170dca833a2f9961c2997debca9f7e7b56426e3bd1ab56d1ed419d48710b838119880329a71e9ab9b3b5a46d2f972dc68c4510ec7a9c0a37510604e04cecf2cc2296dd39fc35e0a3f69816fbea5975b26e8ae4b2931b3176d0713516bda9cd102d762387eb73ed57fb73ef23f599f8fd7e344e744b9c8ccfd88e618ff1f7d083c81f6292dc444be4be8d40d8fa1c58d43512dce48e7b6ad2de12571e8237e0b6d0847dba029a4d73a56a0b82319d6a5f75c7d8e058e3dd823a3f239faaa74ee7bd5f06ce076611f8c96b1634eb49d95c6c373e99a2cb182b3b32d6d7352c119d4066d35dfe68d83cfc59963ad14c75ab673f78ab6c8e5f33affe44ca235ecf010b4affb7d533fff34f33e98b3db70ac12f3799798cf02efad65e27274e0239a375ae68e0567e6ea52d0cec9b756844b91339fdf963b7349fa9c5149cc272185f88c384971b32de508e3d731963dda5fae494722cc0f5d8aefd6a6fcbc09732517d1393468626716b147ce62af3d933ade734933cfdbd4e58c4ae78c524fe811fa4eedef4073d1de6be7577dd1476395ee13fdb8513f0b29ec7e7379f3abde7cc03d44477c93ccdb31e13ed4759ceec7cebaabeec87bd55f741dcde923b7cc2ce2ba06d2edf5fb712272ab9b974c62afa1b9a7cf077d797d3ed13728c7944b71fe9909f3056eebdca5a5c1638d11cd52c7f7c71e7b4d7f8056a07d1b1e8bce9ee9d2a28b4dd1a59b1825a6c9422e330ffaf39abe363442c03482c1ebd4d2da1f8f739109f3cf669cc0ab876310980b5daf43e79cbf6897f9fc42bca2b7e6cca5bb67303f7e1ecf446032babbd66288db819c783c5faff9c6634f34ff071655e791ea2c017585cf06d43a944a3873b76fcfc999082d75f2c7a562a40b786e28a4126f431e31aed7f859ae98fb1d6226b1cecfc15e9fcb65536b7f75eae4ff9dafb8de78cf2e764ff7d49476b16ffde23280ebd8c69d896a916f2cb9b57fe9fcf2e68c9681ab066789079c1a5ca3f9711dd751b2e41a7f8d3ed5353a2a911b6766b90cac91137be76dbc6767370fcec73b7a0234fce05148bf37728c4980af0146f17985e9365ac7ae1cc034efb5b217d0f92e7f7e7aa7fed62bba2fc4041e6723bb692ce061bc7a16ea7d70d3dc312750cfc3488c12f1e6665ccdbaf8b8367543d37fface4bfa8d6d3ed3768d9433d4332f4526c6f181540c6bfd171cbed461d2683d8a211fd7512763c952720fe6bc9898d4f84b36081ac7e041fd3b7486b2bd71cdc56ae96f34e58fcf4c0e2ee5241e6510121fbb6e985516c4801cbf7c665201afc2d7094b23ae8e3a990cbfb132087ac5a48414d33727712ac752bee4e6de9b7eadc8a65fd741bf82a77e899550df8bfd0d7a87198e65716ffa268e06e3d7d86fda5b946fc65ac8e4bb795ba07920c4b3925b149d38e755ec3359d1bc87e6028df7b91f8ebf51d1b7a2a76fa1b9789abf1191357b03ec47da53ae1cc4dc35b9aecd7edbab0525710aa2395f1b6dd1ad8b0df5b5805e72710e7873b8b64e6997d1877ba2bbdfa7dd70d2fc863a39ed58e7c45de2f41cd12c8769debf5f9ef2e03bf3ddd86bd1ef03e4ac10598bd1f27a6c14c4ea8701256944817396e368c3dbc9f26cff07e7ae29b9375a9e96a1037e31d7a429a87780c79379e5e4e48e66133c2fb162439e12d86ee0cc48bcfdc7618a08eaa3f2cbb8d6e9dbba253bd318e6cae07804b5332eab332f3c9135f1684687ce3de3ad1da15eab7322894ebe1ce68b2fbee7ce4942e264da518bcb46057b4be980dc220ced3937e96c548e312b5dca2f6d93b8b821f85ec21dda1f0d7de1a6b9622c55c5880f4a6c70dbc850250e700772bb7e660bb537829b14b1aa1eb18e452c8d6de4b07a584cd0735b365e2b3ab954487aa147ac25aac56519da97dd9c0864b5b83d72ed21eeaadc5947c239db8816125ec2e61ed4372632415b640eee632bcfcb093cd79795b97b669751baa6a6b93fa0b33a47a7ee791b7b756ccd8347dd4be86b546c1443816fc9653ae4b5b912c7fad6581df485a15a84216f7592d5625cf7dd2d5b7adfd06e05f175c05be6f5fc35ffbb17ffcd77d78897f7d71530da20bf878b4b9f8f3a9804edb96e799957b6185ec446fbfcf0e745def3d18c94543027aecf12f9ce5a2d76e0afb41337be12963a417421f513a3f6a16da7078eb8e07b05216ad7b8a9db5ef7e5225a242de2b98abc841dd5e7ad42fbcc60974b459ff0dac2d0a4f967b60a534a7ccae9223a38e09300ea51b77e503b41ed3a6611fb9cd18e1162681396d8594edcf8135a9c9d13796b7d0b462b9b5d44ed7a9312f604ed77aebb64161a0bc3365843ddaac2976360b9c14ee2dc613bcf95137d6b04ba612c59ab5a2e246e8ce50bce18ab26193814d8136e52bc654d766be891719023b48f8a9b142f79255aa03952b7c47286de33f489a6eafe7aab6f0fb017c07ebc0a5ca4ab96309f2067d816d400271c6b99c29c367d35a6e516da7e7c4fd359de229ca5c66ed159bd4951b1d42263a687ffb6bd78fdb2bd985ea9c66ca518b303fc1d199a81f7c019f00e1296707432f53832f09ee7642897a5226fb8c2b995f342116a04e8e08319ae33ae6df6af70e45bdbb1356ad7f5b7cc142d3d5f9f3e33e0d9dae56d0ccf66a4fc962b2143bc679d18df60117f1b07476ccc3b8e15aee54705cee8367513ef37e20f1ecee528fdc458a07305319a357d5e878b42e2f039ac6d6cbf119db1a922b6ad25b601c54ee0f246bc3e5fcbf5699139d5a59038e1b7ac16c1fac4d207b5f1e10386c449e2ec6cc71491c47f664e59501bed33db430c3c419bd5229399fb1d9d6199b917f5fff86fb5bd7e97e6ac2fb1538c0f70021c80f1c6bad250ab7d44645b8d4c11add02bf286fed7be890fc4d8f9c5fcd9eefcc04814e7f25dd694f15a3b52ebb9879e5f0ffd705b75d2f058bdc37b2eae1a657af9ee5e4c4b8b68583ff3ba31b26fc6de9f23a8c935cc29a3f46499004e40b231c7b94fc591cf1d9b18ccab6d1d2f8edac85d5b6b676e891d732f44f0cf8df31d87e38a9b3853d764c790675def5fb5be2fcd113f97936522e77e12c7fe086ae35fa07fb0ce51b655eda43337c06745cebec96171912a2195583959c672dec834588f0b12a912b21d332d91dcb4a6c6b44fc5b9c3d12329d9deec3a5ea0a5bfba91392619bb67e522b4b4adc59c5436d6b5f501197af4e4fb79f8e17ca87720717eec831fce30d46799b1dd3b7bf0911099fb5ab6fcbeee32dfc1a5594cdb78b4435d6fed357eee37be9e4e4d26a56ae2c35648c7cb6c73f54efe7dc4b3cc5fbcc3c5f9ee193be38199da7d878b738f3708cd6473dbf463ef949612b78c1d2acef504626acaa1fff0a0022d52dfc8991390cd233df7eaf7d159f63176ad06b27882e43138bf619d2f90bac9557709a774a909f1ec337bf892bc13c9621c49fc2c8c9588239189d059c6ed91dbdbf6bcbca17de543eec304f403f0d36bb82601928decf85a5a6a11422d7973e93a0691e16b93d49993681ea04e8b1b1621e07b201dc3d451bfcf506b700175c4622faa7dc9034ce29aaf5c4dd02389523c2b3727240a89235d595bf91b6d7105bc3dea9869783e5a2cc5eff4fabd9a7d49bc402b653f16c60ba1df39c43e426cad9e6dd526b6c2a8b19485148dcb8d09da0b8b5113a7b0b184cc3b13598b5daa7d971f697f8965516ef4691fdf8817f29da9406d7f8853ac6d14a81f5eed97df580aa2ab4d9f306623ea134b377d1a0ffb54db8532a0338991bdd4838cac9063e26ba3097f5c23bb5b6a4a48947dc3bf0bb40695a512b41ca657b3327c31d16f3b8686dfd202ed5b22f3a85530c445ebd5983911a598e8f99ea113495b64de8928244df803360fead8cdbdb86e4cb4c64b5fe285faf7cac7ebbef40153223c169285641d7c4facc8b2778d25fea0b9728d8cb4d40ba2336b7120fb83ff9b9940fca3c82c4bc75a9d6cb3881d4680ba3ae03786b1cffc36a78dc5cfbc8d09584417512d4ea0af95c714e6a6898b1f3d74586c374dbf10fdd859fd7def357e63c82d223076170371b195632d2947df96b6e5a76ee233bee9248e05797c298e775dc5ded989b7fc3200de412c49277162ef440432b663961297a13e2e613e5488194334650e79fc4c908bea3d10399976c3c6a601b22d21324b885df49218f8906ddeaf3e65840e750f252e4a45f551a743885637df2ca21a1b307513b497d90cf14181f5633bf265299c698e695cbd7296edcc6b2cf0db8ba3ce422fa147483613b8edcdb156f972a41cbd917107d99399a53e330ed7a31a2f9447f3b0bdf9e5247039a3f499e026aac5ed50c7aabe90ffd05c9da4649921fabb45f35e0627295ea90a49cf347626286a7192227abd35e895aa4f0c9da4353d5a1d14bd50d405f0feb65d919373252a582d52ea1a463db9f111af6729f94bf99192fbd7c32090ce4266ab93b3c42d723b2c022959a48ffc6ee3bc33270def18ca50a7e6fbd02f82963572d9da212c62b93498983ee8ad7de924aa052b9debfc35ec03b838e1b494b8e34d0e418603fbb8c8c94866f9465ec1e74be89c8b816c7f5e86ce59e4c629b6b1a031af9ee33ba871b23c2be85f8b33ac00869f7271a17e7c5ce9cd5ee08c270cba16abf45fc94d8f18cf65e8d4f5f75637c4a3f63cee934319840275f98db1cf1c43a483205dcf358ddce7d84cb2fcd84efc4c08b1dd0bea7c50c62b9e94ee47516d6b8bae1b6df1885fb6fc2636eca38dcde2db6b8827958e49defca4e6499cdead0f806bec00d67131a9e531c8f7db5bc5740ff86ce356067bc4b92cddbd417cd831ae3d2535bce84c76c7f12626a7b119da8371042fc6d15e437bab19478d3dfc761c54771cfeb998faa737e33068d78f890f8b1c8c232c40767a65871439c45f2196a9b6fd2dd7751de0817ef1c03ff6e7e407ce258a7e43cc18e41feb531f30f03bbcdea0910cf401f947e618e48adabf9def011b27a271ce669d1b114e2612a724cb04ed77a8c1ae756501911b673ed3ebab5cd7297ec63b60d83a1788beee6a3dc0236bf9116a86c79dfc6885de8f202f67b23ecd6889d3077f37f981512f3fd03b9121ce0f8c68afce3dc5b163d7583a1f215f5ce2f47caf11d71de2f39de77c6e9ae17989dab9904cc8b543b2ee5de485ccc175e8d9de1c34d7ad4667c1356476e6aa7ac650ebc9eedfe925185f6e84e63dfaed5424f8f97af16d8d3fefb5ce13d8a59df84cac6d2ce5a3e38f265a6ceba8e685d6aca63fdbd861c647a5c1dce75723dbfa3c7a54103880cb4fe7354f4c5c3ecaa5707c344d8390c2252df1ab060b1eed65244fbfb085c31e38215a26ea3aedcfaf6d9c0fba5fe72b841ae0fdc7e017c474cc88a47036b7cd49ee02eff5038f99553b8e8d30fef6f8e87301c4a5ecd5712e8533c7b1945c78c89a606b56a8224574d7e068be96f7c12fbc33274876fd162b0bed1da859723e62991fe285b1bc08b817d411ef1df0491cafb5fc9a4a14c87e19e48ec1bd08df23f1bd9541e0f72c25df3317e075c0b7cf118dde11c3e3b5e667c4412d3af674128f81ddde9a7161bf3a922958c2b1e46ff46b05e72e9d8f376c038870ff501fd4e945328fcdb5ba5f29c89c22d5c8c00ae41c49e7e80f9667afb53c5ec03c618c90ac10d514f8311e3bc8c2f95e8dfea0f14890f3d0eaf7337fb1ca7668add9d96d881329353530fa7a772fdfef81073b3e420ecdbcc95becc4ebe8cd37b6b73a9ef6c93fd6afefd0d018fb916fc4e917a0e578ac3036b1f36d7c0feb461dfe0d31effd5863fda23351a6437df44e4ce65c6f62328b9526a78f984ea5c1ec2c569add6076162b4d4febfa16c40ad7b2c8c5b94ebcaa2bfd5c975cafa0c60cae3936fa1b56b0cf2f273dfcb8a7d87d4ce387f8288e469cf71c99b967f9b73772ce1b7579f1f9ed7d1d4e6ffec81f49670ff184d229a7a53cffbc4ba315e594c2b17e87169280f0f9cfdf52498ffc9197fb959cbba3e559aa84bb3cffbca13685d0cb707d4232f0b9d54564e8fd862d466239c5757d7a639fa033d9a98ddd3de72bd23eaf082f84ba06a9580a4721bcc6f5ff9dfb41295ae4bb9a264d4ed9ddb6964077ddf38cf4191c17b90ed1df757d253eb8baf369285a04d836766a8074edc03baf62b079182b02f3c6809018f04d11d228b8ba8c907665c9ad59d34a26a66d8a256ca80f08b9829003e6bcc3c47a8501f5724cdb8d66e07e79182bbda6c50fd957e096931ab7e888e41a9f03fb6a172bfae671462e7071e58d8c58e082d84bf4e38edf121e2fa3f53defacedc53785dca6e8ab44b1b99fb05fb64a573b1c0352f98917620cc4d7fbb4b1f7f94816319dd44d8c6820f72f348254605d2ca195d7f6a317735ea5f9411be4b02f3af370262e6feab7ff08cbe327f53c5b5c29fefac61ed95f3fecb386fcfa61edcdf89bda9b486688a1966fa79634aeb989eb6534f4501a5d3f4466fcb52991ccd7af733ba8137f03fca4848eea9c8c4e0d287a7a9803bef3ad91db6c5c5786c0f56656979d5960bb95255f5a3d1ee3479cc02e80f94655fb3e03a82bad15553f3f6d917a61509914ebe3da9b7122d6df5d86ce7b7ca9b6df8d4e0c74ad1cd2b51d92e71b7ac38dd3a7dcbc061faa2253b362a10eb6c84df31dc8c9c106ed5329145289335c9724d235b5f865ab4deea49cae9305ed18d79ba591ae470ef204caa0f1a1a279306db3201dc811a4fd8355fb5841ffefc5b475ea4d2bb9dd8bd9ad7127416f584cfd7eae6d209ad1c537ae01f03d349716f9549f5fc27a4b6b2bf219a895423a786dd3d6ee5691e9d3bc71d39e6dc2e5e8936d166bdb2463e07564565818b7311079f9690e37f3cff45dcd168fc2b224f0096e457ae7259275b37dbf5e44e55b33f0dfa1f73d9c0f0bb1143b7372eef831c88db584f5f0359a6cf00c5d26faed6b64698e56fec6b866d6607e704d6ea4832039b9b326fa44abf355335b2d00f7497c8b5f28b436881798f34ff91e5ed8ab717a714f647ee0ef1787a34f3eb637bcc1afa73fd0f57512655e42fc7647c4ef3dc546ce3c0d247e795d9f57508bda4bf03e937821f321ae467887875ff6ea855464f9d0ab61ecafe8c8ff79ffd13375be6809b5597bb579a3b6662cec69066a12b1901fbe2852b43f5c88af696aebf5f0335afc0b2443ec47cafb750b83e61b74bf66f803efbf8e0929dfedefb6461a6f548ebe0a3ceceb86ba532e5544aa0ef5a0302de0d8d36e81f3f1456689e4e82f9c2fdbeb7f35ecbfc31904e21bb8ffca4548e85c809a4ae36f6adafeb0fe75ed8bdea8410cb56130967e665bf1cdb794cc9b9331c623c63ab5c47934c6619a10b619e78e2564fe8984f8fda6de8094e0b81ddb5c413cc1812f9eae497c440bda227335229099e2b0511785c409706d8f639b461bebdaf867edf5e9336b7caf26e06fd4b6f7134b4b0b9df6c2e0e3d0c9ebde8f96a47beae93265cf6f69155391610776128f7646c5f4b5bd10f04e33674e4607be008c96fd6888d17519cb0f0ca839c6b2ba948e4a1007354273793ff005eccf3d05b6c4600767263da3fb8e3ab9d8d66ae35313e5816f700c1bdf1faed52c8722ea3bf7f009d6d76941fb4cd7940e7818cd3dc094ebfc7de0ef77891bd322ff89e8f8ddb7b62bdb9c040e85ee159588f63eff991ed463dacbedaeeb95bcc34f7154f04934f172c93219f4e3f4997672da9b78a918fb296a3bd4e94a002eb7a97472358fa984fb9afa0cd497231e725250db0ab3547a9e0f6ca3edd504cf2e061365ea8bb1d9ea04ed0134d7102f2a840527aa05033114e531049cb9524871ec1d7912392f15d13b11d271bd619d735c87836962f0903c6ea88e79879c68b081a951a6814f48af6baab4df40ef42ed7ff45d8f5a952e5564420858e01744831fdf2f2e5242e77afdcc50ae6cf20e0da83bfa99d575dc07b5d271aeadc644d93ec479da888e0849eb870d25ee52af43047b4c1ad6740719c27ed85f299bf6d5a0a109602bd8506f7c64eaf1e2430d81682a3351b28c6424d7ff56ca7b2533318deba4353ef9d798ab1e33e9f9e3c4668d792faffd90b40cb9a42cf9223777bc51177789b373a81183f383517ba46bbe7cb6806713a3f239a811543fdfece1b7351b36e0bbaf7d7ffb84beb93a4d7e53e3c11499c51de938f8d9387feb6764ed8ba0416e3cc42776e26b86fd7f603d8c880ce2788deded950fd8c375485ef9e52f7ed9c6cdd892a5fcf1cb4965532ce259235c5f07ad457475d474249deb35518b0dc4db0f6cb4efeb06cdea678b606f7e3b4fd1412da29db5babba3d5932f76af012ff98de65e09a1f60ac4f0d43ede749fe8a1b4b0e11ce2eb51e68493caaf71dc9ff3cf8f97a14ee9800fa6637f2fed640b322791bea457cffadf0a9d2389fd44eda1339a39cca41d13ea07ecf1da4f86cefe412d6e03fe56f3f5765e58c891ef62b18d5ee0be0c6b0635f3d07b6f1047caca7d9be6b9b1930ce2714e3485f8bec319638db22f3e13fd67a37dfe1692e5cda58ad836873830506faa278b211ab91f7d0e7d9d17512de236fe25c2755097a1731f5e7bcc5dc79753629e82aee96d5c4d5f0654cade1e3b6c3a3c6919da811d16709e0583eef717f666303d30c1e115ad18c87acbae9fd261c0c75edb9697b13d825aedf106f18d32cadc1392f92763196c61c74254a7a5c40bd8e6ab095f3e3399c86a74934fd7ce393c22796d84e3dba6a5a406b9786ee9e21570e41ee7d9015f5b13db56095791173ae79b2c45b5b837f2a042817fa0546a4c038709badfedb52baac515cd475fcecf7a36997afc43fc800bce2388104d7ad426c5fbb637f73ad6f3f01ee8f82821d7bffb5d5679f5dd213ec2f0bb6dfdf4e177b7cfdf6d9eed7f77716febbe21de8e31378456377710ad02dc0e243f6e175ec29eb5685bbaa34f885f75a98906fbe8094b19c6907a04d823949d39c9814e3340475acc08d477ccbf05c88ba8e3a41a19e6550df8c6af1761ff376effe19f0c20fe4bd4ae11d6ad5fdf073c07e69a4be7e3adc32b4ae91c7d818f73d4eec747dfcaba6ff18a70479f433e1649e759ea465876a9ed2d21ec2f8b480ffd33b6aa6309709cf9028dd55f6ff9e5cd6310cdc47855fdfd2174eb4b424d0df02994cbc0e19410d72a9b34d8233a60e897c197c88d536971c7b920aa9d201944d42e61a37f62fc157d80bf32bd6838275081f76b9cfdce7c57752de30bd4fbe10890c150bb4dfcc5cb76d1b30b9c97a2431c4fd1eddf605f2e7a38da3e83715eb04ded31666cff7b8c59345fc8dc31f84c3b3ecf637ffc10fbd2ed67fc8a8e2fb06dea91732b347129aa50cf4f0f73a6f55f1acd9cf070fd08b5145ffb34758dd86ed6e16cf9f0c12a47d7d403e1dcdb3f7f0671936d3dcf271c1e4a871a446283c1a346755d035a85f1240dfe8d9d2868cdb5eb7ac877b6e83c131037367fe24970d68fa0073c688d7ec131cb2ff6317f79893de33042b61bd83c8c9eaf8fede2556748de58533806c00d3bbc848fd0df17c7841a278039def8d3ea38ebbb3bf22eb23a26245ef925a9e3721d8ecb1ee658430f34f2deca8ae0d37fd68f6a1a1176e4fa8e8c6fd0076d507fb3f5af2963512d6ef8b73ec2f9a0e08343bfabda0757415e2e7e1ebd9bd5bfd133a7fa999ff9f634058df105a66bfcf1b02db09153db82342eaea0f6a5d560dcbeb26775de6d72f0f4b7efff373e9ad1ce9c44eec8ebd4c310069888512d47d2f401e70ebcc6bbe9e39e627d822b52fb94e6e25c46b2446367faed86c76a5509a9c46d63fb6c9cd7c9f8b29acbb0263e1767ebf395d899648caecb273b95cedbd435f50c9deddef56472f3b9f8ea5844e62746093838f03da55ae15899bf632b9f3e87d8ca1fd8677dfced85132c9f31c51f0fe6627c912b1b8d2570390f8fe324a712efc4de7985f19742c86dabd099fca1bdaefd9e1b1e0b593bf6dac3df587c63fbebee457dfc37df72679d2f3e737f8b0ffd16a3e8818b7ab0a86de073ecc1aa2027a5a9df82f4ac37f8a8c3bab9c712ceadce965ec24e86d8b11eda3f94fe23bca406a3d52269c413028b9c66ee8904bb712fd65a0df2cdfc136c3bee89e862f15f658d8e21de8839a6eb24ca11ad72196c3796d5287bd486c179cb8837ff645dd673e16ff8ddb54c58b71fd307c4ff6c833e48dc9806db35dfab5d8cc6f0aba9e1bb4e0cd78d4957365efa33867b7e2c877fc3a06abf5336b573baf38a743b4963ff17dfeae7dd0ff75559a41b4bc0f1701d3eb2d3eef74d79fc121bac379c0f9e373e2273a4648e41a4a296e62615fb66c5fa1b536ff5db1feccbe2bb73d4627577d669886b8ef3dd88fb3fcfa97be82a2fe603e2239b984ab1bf277ae70f9d1f9ce33bf9c735897ab6a3a73e20fd0974aaff75bb17db92dfb5fbbcaf70ddf45c9c2f8ab58a6bf089f3452933ffc57eabc0ff930b5c0cf5a0dc6405b68d87af7541bbe1f0f963b0b38aa9ddade9a145930e6e6c30dc97833df22552e3660fc31a42fed7338d6d30e1832eb6ab1b4e2abc1ed80fdddd03e81ec643c036d51fcc2bb5669a791546ab765e85492b4769f61de42895de5becf556c73e1ca530fba550349ab7d2073cf3a567a9ca4de2757afbd8df7d6c5ceefe88cde8d1fe02d786e068cd07ff8a97392732c3310bf4c88dd1b3b3d83b6f271277a4f5c4386fade02e32cbbd10422c7ce072f78b13464867b9bb1c7b72d4e3cd240bcf0a955c0cb35f2213bb164b7e1cacc297282f13e2c25b327628aa93d2b1703e98c8d0cf3e1aab87c9904ae1e597389fd2165b7822134f05ceb979e1672e56d3cba6223d8b2d7c51a5cf122344b23afeb32921d629127e4c831717c19ca273313d80afb4ae878bce93465fd66719c947b137522e36e0b8fee8fc90ab12d6b98d5de9afcb94debdf44fe15a34dd75f12ab2dc8c84ce355fb74def77cb9b7ec6f76ecd9af94c51619c9d2df6fd432c1cfca61f6dd6bc555ddc0fe60ac737f088f6904dbc48f068af976785f4a97853b7e79ed23a075e3ffaecb5fab61e4b4d335eefd709e1924d2cd30fe52f6edcc8176f64b0214f12462b5c7bed550d3562a3d2ae154e7cb1546ee8fb8e295fbcd04ebc70f2e55831d2b34b29b9c67b4bce55dd38e8ec72632ce8e98111c29e8e369f86fa28beda099d89fcaab4cbf820abe3501c29bf8570498bdfd3d7eebe0d76aa9decd4598a78d38fe4d74a4ecd7279b0a8d5cd4bf4ebeebc3a78541078891159e434b4063cd93bff37f9ea4dfc2a41fb73baf15ffd065dfe87ebb16e79d0b178e89c8bc98f6487464e6eea32746509eb8acede659dd432054706de3c45f4ffe28e8ae94e8d32446777e6e4dc3cf34dfdaf6e9fc7f283be030fade93b92d3a0762dfc2e2374aee1f78a897a31238015fdb0615e657456b13d82de58ca2f799e766bbfe3185fcccb4e60c3088f2960186b45fea8af273438c6cddcc43e13946635f3257ee9ca06d8f9c8c199c3ed9dea9a3c5dfad5e0106b64fa7ccf8ffd39797bbe1e045e45064fd7019b87ac067135e48f6494f29bb3f25a8f42b4b4a94df01b30c5f133c0c7dfd617fd27ba051a6789f8849d3c727386323e8d717a87353241462168479b16ebd367e6fc68cf1d71ecf3a306c3dd4b68c21d81cdee554d897fabef81adfd21ab8d69c7e8621b8f438ba43397da061e151cd077772c4dbac9367610dd36b7070bfbb4f2cd08e355caf3343f3ce4b8b4952b00b3858638ce758d6df9437df7ffb5b9e8f0bc564f1434a29e93b43f969faee3b7b6856ebeefb31efb464ff96afa8ec68ec6b4a93e7f239a82e616ea3934f33b07bbf72f21a60f2e87c6b9ba58883750c1a16bdf427c629dfc235d8ff86b3c7e8395ddd416e295b4a531c3ba0a9df32a6964bca9a04e6afc5fe9818f5ca5d77e58d3981e986e0d23323ef0f7d0abf9b8702268c72aa65d5f2c7a668378ed08d354346fe09f9da7101b8d73a4fe37f3d7b339c1fc1484a87eab473ed1d2d58fe58ed66691f94cd4eeab9fd969946fed34fd5cfeee58c0f65ceb73d79fe8665f8fe7097aa74defebd3e21fec597bd2d8bb573fea732fbf156c623b35803efd63fb5f83d7f688efca372a51488ffa2720738be535dff0ca87682d6b0c45f0813ce2eddfd7e7ecdaf5c7ad5dbf3afeb806de4ec5fc4d881ffaa9622dcf3896755b59aa40c3fafd631b46374e00fc8f7fdd53abf9b1cd33924f42936754213ddbd6c88f83760dcc72e9b6759c16185f57ae9633efbc0cf606115a1af9f299d569fbcd3371eecf83bfdc5f5035ae982fc4046d1b5968520d6f9a2dddb352c911b6cd5aead2df98acdb9d53c3fccb37582375cfca58a18ac0b566b1b3f85b5bdff6c7d89993c1bc403ce9605c9dfa3ae4ab71bfef43fded1a5b61f9aa0f8c4bd19963b2f9abf701dfcf7052c7f25fbdbbb0ad6dfcf23dc8fd79f93daedd7bf1abb19081c7beba5ec76dbe7ca76efbd57bec32760863fcb24d7615bf7ea7e643afe69af563dbbcae6c6b066313b445f6431a7e437f2f4327edd57546675a6503730467d7ff994fc4ae443518e4e814cddf439a52fec846d6ea7dcab7bade50dff419a48f07b1c4451788b7faa18feaf1bde8deea99a7680c36b9ff952cd9e4def04ab7e6d5ad5f5f0d687be69e48d7d27a35b62106de67a28b90ac6e2e924dceb8dea1102e686f544c05534f96c9a2b57948bc9ca2f574c34e1e4ec7bff1dfc84b2689b153b01eb5a07d26eee69a425f5b7c43345e889b36aa1dd3e7513fd36f1ebc58d604f29fec079c7f81e7d4f999ddaeb3f716d4fa07b6eebebf0f62d9539c57f493b3e3dd1f63b35bbffa6a1efd9817e3314eb3ddcfc647accae882f8a35c469910815e6cee4c63f4642fb5963f911f4622923bc0b77c0fd15970cdb872d4277fdc4fce7dbf6f7143db3ec3e19abfb14b35bad16b9beb0bdbf64f7d869d5ae165ed8722a4c139c4181bedf98a97a11d363624a41f3c748cad2bb344b24c1ef649898118b578cf08b5ed7982ff9e032618c47c62bc0d749615c0cfc679b8dfd661efacd3a2acedd168adeee837b64bc9f75a4ec2bfd5c62eb5187d6b5b197cc3c73144bdf9588f56a39db53ded18c8ef3bd9d62afe561638a5bd3d2d6a2fde49e89bcb1901e2d5eb64157894fe82ff0bbf1f3660582b5264ae2fdbebc9139defe31cc071baa69ebe31c0c38dd17bcfede29a11d4aa958584df36c5568efa5e7e7c311e241f16abe86f6d7cdf97a10cf9e23b20f7ad17abcc36c9bb636efffaacac397f7fa62347aecf1dec4b5ec9dc30fa781e0b96b53acf823fce7fb16e4d7db99773d291979eda525fefabc6bfd5df3b1843ee45fb20a7fda49f8d9dbfdfee02eb453fe20fc25fb00c7a742fde80dc36096becb2747d565a6cec2eef87fe32907756f9fc92b447db9b170650a7d23ec784a337f8f0052125cb89cf194d4dfd977cad834377b378efcf9299feccaef68e96f24aee5134e9252b34278846c736d8543bbe26c072672b7f81e923ceb57dfc2d71c63ff1d3818fadcb2f5abb23837872f46ba7d639c03a9db4f7e63ff5454ddbfa9122377df8a5d4e8f77ef4a398924ad6168d9e3beef9e34ba0dfb765e8dca424ae3493bd4bbc4cdb1a9d8adc225d9f85015f5ffd805fe893ff955d00f5e72ff6801763957f34561d6a3ffc7f67aca83fffdef631c04f1dc48f43fe6a07276b877d43b7877e02f6a600d782053e1e74fc4495a4121f1d7e1d9823e597575dbe442aae6bf12e8a8d46d06e18dccc91e14bbc9eb96594dae72592c3e8c75efe0e3bba6b9759fc13bb59f75e2e71519d0757fbbd3a78640237c6b99310b71475e22a01d72bede3de4c69376ce346d0de8937d4f437606456ad9c0831d622a7ffb255e2ba0eb32f5b2b6eb0b6da22d868642af22bd73688cc568b4ad4b2811ef513f92b2aff011d77ad216ec63017911790bc0ff818f87704f264ad6335b952dfc447767dc28b8e0d50a01e7ed6e35f74ad873eb81bd8e865ad17f7972c13c39559d29563e2975b06b159cd7cf03d72f575834807f5b3bb7b23c7b6f2625af328accbfdc8defcd9da06d1efbfecc7cc0d8b0e8e079977e4fe6a632e325f2302b78e61c2367cf2811114b2555bbfe07126d1bc04ddb3e7cec9dca4587ce678a4b317785ed8acb0d405bdb1b6aecb6677cb207e0b6a90a179aa75ffc75ed7581aecc3181b64ea555933eed3460db28d3941fb35c5736cd33e7b3d5910d75ea0b9c6b8a7aa9db86c565a2acea1697c58908f11da89a00627818bd1b9ead82b16c5c134328f32eab55768c092e1056c0f2863bce7e7e44dc4b9f027bc5e4524b698171d7f93f5f96ba7061789b333b92c6e12a7a4ebf367ff7b8f58ace0873ec08e4edd891ba884aa8db1aa04b289555f6951833b5542ed0c8c3b356ee2d45715e2bb36fd8dad3bdbcd89aefcdbcabd12a7f4de6b6400f48e37ffdfe8a9f5be3d4bbc9deddb389ab6e6f46163e9c00fec1379dd50c7dfd8375d8c37c6f4d76e9e56228efba7454ea0ed13413b273a5a2742bad1c8485ae8b4c81fe9fdbcbe7e3ee2ebac0ccfeee77016b465e864d8ae85d7d8055e143fd64dbb5e212f98f768b47771ce969d0856372e3e9e1e98a0a92d568a6a713df0c5097c96d403c3c2290b4ae2a3749d4ceb6b4267fc11e60deab15826e336174cabc811e433b6314bf7d022e99197b0778fc33e4d512de61b5d4f96e7cf475c32b33c5823c8cfbbd7fe6b8cf1b2a0a787458b41b3dee8d35f2d468c7a447277a66ae47c43e9b99fb0996fea17514bbb386a93037fbfecdbda6751e687c15a5a44f558a2b4bbef05434e9661f0f44e075ba319ff3bf9fc87fec3273f770e75a77825fb895fb8f1c1fdaffbf09d8ff107f1483d1c3c8c8f4db6f47b537dfef6991e4650bee1858f0623cf6701230ff19d2e5dbaafffa99f4af31e787855eba722576d5cd002e285b0fd452e574c94f9f87a057144f36f7594d3c6bcff72997faaa334b8304586b14be20f6fe4a70d9ed1fed9feb1406b622471ec23fd3ac158d058676c78e502f1fe706f6d63adf62b1cf8568fdcd4b5b902c8b1ebe99a3d7a0135aa1add55e220debad16b5fd80eb08da4a933d2d3b7d119e9ebb09d6fd77de68ba980f817e265b5bdb8f9eda8d1ff43db97aca7aa7c6f5fd0196c40496498a022027620dd4c20090828bf60035cfdf7d4aa020ad4c47dceff1bec671b449a6a56bfde37fb2fb1a8db676d7347540ce1a2882746154fc9dd38559dbfa2625481c89f1d8b4d30460c1f7ad616303a3ccbac7c6e7a70b10d7672ed45e55841722796a5bb5630fd98bddf8d1b6d49ecb23396b3b5b0b2b6df72746f0eeaf80dacf978656b3fc44ee09cebca98a4fe1e74480c78486396c598a190c38779c235514857bc51f64fcd0fe70b3bb1ae73c0b2df2d5b0c4bb76204d738959f63a654a5af4696b93587cccc111c3d8c71cc7e8dfda6662fd0b186af4e4f803a73eebd1bef59f38b3725fb42d2289f456b7d7e83119c92df3b56912b9027f8598e3c9b934172cddbb3d8f6c07c72680c3bfd0b34265e1f63c58f92572f41f6a419accc53a9ce36c1a71e670ffa1b6e39d8f731c8b707f5bbb7b5cebff843143f7b8bf5664c522f2a72ec5fc7b953b139e5e30247ad6c404f52d6daee68ed6c3b6b87aaad485796f6ea46cca9a99594be046f7a4a5b8cb6ed9f9d0835b649b767e92bebd83836ae8d76c76c05359010df29ae353729e407c0a75d231b835a1bb0a7d0316165af9b752d1b6faf7ed9a96fa9eb3671af128d99bd6759a8f9dc17fbb6e63346763fd8fc6ec206aa04b56947fc5ee145b1e1fd917d887cb2933a8b91bd8eae9dfb65fce29521af4a0c3a8631cccadab60a697caacfd52046ff235b2d546671ee215d298de01a7619030e141af33a8e101c8a913273849b3ce69e11766222e03d8ce6cca9e73dc27dce74ef839c7f0096562fe7c0c9c2ca0e479fe2e4364f9a625fe673760d1571de8b7dce617e15a8e1eae2ec37791b494ee7a9fcb5b3f82a90a6678783fece681e393deceb16b3e34374d20fb4760e0bc6b1f83dceff009ec561a54f0abacfc46ff8e2b6981b86fa1bc925f7a9baa5c970d1d41faf7fad1ba3f6019d7b4ea83d75eef8ae159b604cf2095a5b17db38c1df2bf37451a549ee4761a8986c3756f484eca0fcf44adb7f3558c1cbb1df60056bc8662258c1cbf1baf6d98a25e00c5fd1e7c133bd70dd387c9cce0f1a1adf3f811ee675eef6361641f01cadf8a6578ef69b1ddd491d03d7517a25c42ab2e5413eba7a11aa632d7b3256f46b1d28655b66746d78d3bf7120bdcb0f9e736708e765fa642cb6c273a3b2a70f3539f9b6c97c7f4e0b4f198f5e1491f9634beb6ff4d91679df15f36c552623659a477396c914f1ebcf32fafa239bd752314f1ff6b4083ea785af46f1ff5665e26b51e2dbf6f5b8aa98e3aaca7cf550f8165b048afef567995ccfe83ef6941dcdc53853393ff72ae6624faf477b7acd56a570406bc38f6e3184e83a8566bec76b8ec25d28d79c10bbdb29a340afaa9bd43d6432f05eafa9bea630bb89bf619b39c33898f877fe5ec85a1e84edd12bafd17c3c8914233b23fb97c4e4924ffd26b71f3e370f3fc753a97c7589d695d2c7156bec803756c3b2fb4c6c04928b2e120763013158ef0356c7deb11647f7af6b36709fe01d5cd5fbf8e7144fe1e7ac00df4c36d8a42f5be52e4e7a07df19f02fb666e9239926ce915d9b3818fb3494a9e7853a87ba7e9dc6356d7b7dca9545d5b8954586f633e1f3c93ff4ba4659ce96873960e27b157b56d345e87061423060b1cf2ac59d5a1f62176435e7a70379f3e9d5970abeaea9f5a3b8dfc3b4df495bc123b6c04e2f42a4a7906df4d9ad85257305f181e34ee7c7f0b75d8cfc28cebd039ba9317ec6952df7eac49267f224833aaeb634b6b58c869819f65f49dfa22dfff1a34ead54d3ab8664b65f09957ad85c6affe2093ff52bc0350418ffe45e4d8544d977049fd92b3b3128b4fec06e524a39c2733401df8ec2b1ff13e8ad5dbe8ce488e24c019fa73977ff86f4fc791e3985ca6d8595cecebdd4052ea60f6314a9c65bb44cffbe2fb89713a9f70183e413c46227545cf9b97d386ceb99b4aaed379d546d3f92ff4b6ea293c7443af30fe879349646963d5dfb6d684fe7d6fa9cdc748d55dd4f717f6cc97cfddfd4ecf5ec05d0b3e1ca5e776b779eaef59299a6a6dc88ebfd3368f78f7c6d62d2e3496ddfb0cb26260db5899d98f4ff8daf95b4b57c63a41f299f06fb5415ae157570ff2bb291e9de888eecbe3eb48503b1c69b30479fb32de9b7d5c8ffb0ae285939a57bdc6abd066b8de028ddc41dea9e0c2abe61b8f62680de0cca4fab39ecb10c80fed5560660bf92c2206a7d2c2fc27d96382ee850f33fece42ba8b8e0bfc026a0709a09f638f8f5d5e37825b6e1916f32c23c3bf6c653ca5366ebd02390ada4d1ab620da13f409d6dbc9dc9e43bbd6bc37a776bc87eeb51809c34e421db3d827c886bcf1e2bd05acf3eb8a1e0ef4747e0cb83fb6709e65cc2dfff4dac41dbaf6b7f816deb03d6459bdf81cf15f9fcab7c7bb0febfc8fabff46a7641f6ad0668edc69db978900fa5d724aed5aefb85eed50e58db3fcd1a3d74d7e35ff643e07c168e273f8f5bf3786f8775cd8357dea97d68e3857f55ebb11837b51ed562bc6efa3716e3eddfd5621802aea53e3c7def62398e33459cd7f3f7b775a6247efa7694915f34db96daf83db6a705eb8ebfae9ac8faf6cc8cddd44dd1316dac9163dbab56e1636eba2dc979a96bccf179fbf7989c576a5273ded5350b3fb0dc4493dce0796c83f7738d5df0b81ea5ee319a7b779f5d97737fcf44165bf881f15669e3b713791fce4dc833edf131f43e70cc90af6e7ddefe3d75132642732cc3f9eba1c62df0bd243775a2eebdbc0add8b8763cbf1db5585f7dea46e8adebb0857ba0cbe22fe7eb187e7b236b16b38f819a40dba5ff651cd05392aaa7befe5a07b9927fcb9bab9078bef718c9481fc2d1fae91c2c5df7214474a29ff91a3226faed99b975529434c52196cbf15b17e4ebc2e908f2c47270fc73417819a66979d353cc2f5f53c5274f9db134fac52ca99025c1a8e2047c87f96bf2d6ef4ed477984aeef471013cdbd8439ef5221f3a2afe85304cc8b4c8e8ae3ca243d26c8cf28d13330e4f993911c9d5285d37239f56fd6facfb1a1af6ead9df1f6ba1379c6b5717dffb28cbf156efbfab7711f6d3fa172628d4f5168104b86b80f83ec549c138b8b06536eff56c77cc03e72e07ba89f4f49ef46a64a5fd8bed29faf6386fc03c4f7df0477568c30764431dae13a0ea40b929585fc862b70d8119ddcfebe6209bf653f2e3914fcb110af38c86d1f96c92958a60e8e3fa5dad12de33f3b1ddb598a91bd52b9dfa33f16ca653acaeef8f4750ca2b59b755c1f838fff450d90a155ad6fe7b432d8909bf8db1270d33461a7dfc65b68ff00ea95c693dcd1afa126c6d99d7847f5177599c83fa17a72dee079fcbd50aa6952ad3901d961cc76f05ebad63476ac79ee1a591d9f7e564682de203c04101f96f53044f388fe59dc34f8773d9cb0aeaa804b18cc41d4d809755ef54b1b77f279adef597f6fdcfd3ef792fc8aec3b9c837a2ba93c2243f59d9f71fd0f8febabea6b563f5d13fd668a7f9330546eeabd8d53e0b97a727fb7bd990bd8eb38e74d7c9eac83637fe36f812d19515838913a3bed3d8e4f7756c0fae934f2a4ed8b6cbca171653dcb2cf1fc1f917d49f87a329c0b9a05e5cede00aff012d9e57a222cd37e8df2f4475c9a0de0a5f2676fe03f57db6cbc21bd49d509bcdfc395813d07ebdb9870aa1e66aa4d6a4c66b2b043c7f76f2466967fbbc650403a91b645fd3460018775b6f0b4292b10ac5874ff0e4fa263bf5fbd59dcd479a9121de37ab61e9de009825d0d9c7ba4b68ac20135008381d8de5047457040b51f31df7af7cba1e75942f2a648716d37b681915c87391f0326e2755573d946c91163846b8257517c9c92f3cfca90af5a1317f605d71040762f0fdaddbc71a08707c53835d773e03e0407c6c238bafe984d562c92e3ebd7609c418dc9b2ccbfbd7191b63938a8bdcb6dbde0710c31e41423e3f0fc3a827728469a381156b6f327d81fafaaf495ce0f904fe3bb752b8ce0537e86a743be12e9a3abc5b1017010eb09f0c8ec2c9e75f57766c9e15a265213ca2b7a11d7b1ea204aea75b257666ff907c8aa62a4cc805f22c6d8eff8dc0f8c9f4f7a089d8cce59b94fd5e369ec2fd802dd7daf4f5a5f6c3cba2e0fddfed49a53497b1e23b158b6b537d5a28d5d560bc379a2269496495be0e45971a366bd925c4bf6883fe8f9baa735707bfccb9841a7361c8dbb6a4c90fe643a3c720379b433f20cea3da7a7d2c6b9aabbd8b40fc6f6b7f8258c17653b96781fc7c2a339457bc6df171959cf67c01345cf46c7666959f6e49ce318593de7716b5bc2f189e0474eaae9c2459148bde134cf55e33d50f404e94b61654c2eda5878e87392ba57f0ab96697f7d3fd0253f60153d1743fdd927eec58f0187a26333f6b02a2cce841a8f67d69cbc97cf9a3e1cca777ce25b3e560a93c1f8ca3a7c1710ebebc474cf9e35bd421f7ac393d88d21753025458c1f0f7a1d73f35d1d7b0e5c5e2e8e05bd06fb2cf9ecd4d0f399cf02b67abab3f8c415432cefa4515d9f2978c8cfb83d2fabcff391beb4786665a1b524009f649fe7acdb97cb9f1cfbed88e6dc9502cc93d1cd2376f07cd4d48c5d0ee7fa77067e07f5e0e44185fe0f04ca8e00dbd7a46a2f15697bf6d2e9c9d5a1863623f56080b5ef586ca2e8c59ddf0c33e03faafb9a90adad17195e0f5dfce46030cf02697bc3c35cc7bb3e38e10aef74d05e3eb80ddab7fb403263b4cf77f662b2b3e7241787d605cb7ab34de6124ce600b8163ac7903db4f738f6ea0dccb30b786760eb9f7c4960bd740d5ca564adbce0585481c7b8ca203687e6fee67d67eb737b7d18a7443d605ecc952d9f1daeb878e916cd17c6d616bfb26ebf99099c498eb57e380e6dfd207ff167e87bbe5274be6a7848c490a9efd9e546e513e0326df7c06dfe96db42fd1a7089427d9793b735c7c0ad53ef03cc17c699cc96ac5974dd202a18e0e34d31b7ae02b56eed7d5d6b73f8e9be1bf4bd1ea275c99075c9a8073f877567a039426b0e8dd1bade5324a6fb53bf50779d39788ecf609356806bce2dc43877a5e47fbbc182f1d3c90bc435a15e6493edd25315cce6e11ad972183b9c55f402eddd783d48f61e70a1c3710e1df7248177a741e81f1647a7fd0de4357d66baffb016f9ced2082638f277df2fc06385b9a8e079a0477a364fbcc13c766d9960adbfa173cb9dc590bf27993adb847e9a85182f5dbe020fb9245c7d4e28833139563e894ff12b3653c3a7207c0c18243f003fa2837b2fc5c0bb89f3d2c37c87f700e03763ceae06a321c3f202d70906225f05d662efda8bca1bcc21a7ad4aa34c9dc967d79aeef19a46fef7267138b342efe797708d0b9291b49c6fcec75cafc0277467bd0916cbe4f5bea6ebf87635a7ac54afade7c64f6beb8b7e1bcbda7ea562cb3cc5550f9c41e786f7a82bcf499e23f13c96116a5c067c3d26536727e1491cd2b61f6bfff67c6e168d6f9ae48164960aa961fe41f753355ec3e273762d56fd9e2d24bba56945f67dd2f66b31d9239be19e1df077f6f58f63f3fa89c6c5a6ec04a3334f3f71429718efee8464b8174c592f983202e82a8243bddcbf0baa14b75c7ee2d7ad0d827c356b9bcea310ae87eca7957d8a7736a9ef33b225c1883b6f2782a19b9bb9199b9ffa9697f42d3f37a78950c7e520cef8a81eb753df353c0798ebe58f17f183653a44b2fcb2b2b6d0b7e82727c6364f996db0af2e70574ccf0eb77df1cae2ea239bc25a24fe6071f1f719f22deab8e0e37b77700fe78053f9c3d89ea9dac0d2e2f860c93d1ec3cebe644f8c0debdcf4bc8481be5ea82d9c69821ff1ed98eaa74c4da9791a682347a7bf7752459a9ca97717fcb208fb326965c5c0a1e94a269165325ec7e49f3a9b0bb0e6ec62b4d38bf3e7ace8db6a74dcec12d89b29b6ebd0774c56f3a5602e6d1cff7590ee1d4f1e737a7464d4aff5118c7f485e011bc366f74e8bad0171e95b4c757e8cf499bb35870e6762fb2ceaf65890faa984aa41bf9bb3beddd76fbfd496dec3e1d9e6f201e9d375f4a41cbcfe55dc00e3ef24aa38bffae9f6d97bb4b2d6980ca938f3afb1aa66dd4745486243101f074c59d2a3e5551d1d9c537b0bb8d9615f5bc33f81c80f90ad1c4448be013e6ee6219b7b161ffd28eef467ca0623ec1a7f6824107ccccb4a024ed3ca1acc839535cc031dd9bec0c75fb97a5822dd84c604b8ebc7983b0ae4e8767109804399f2b7a5c9eb1d9bf4c62f03db57e74357821af55f641fe4743a362c9145ac9a6e126730c77c8cf4fdccfc6aebd76b532f5701a71b8eb50deade90af6cb57f7b25fbe00ce34738b20c2b3903676184b90ffcb2382b7a12627e35ec6f79515121b9a318386688fbceb59a030bfbf993a6ae708e7177de898ff09ef9e5fbd91bacbf1c4e387bb5df13bd45ca609d2d394d908df7c667dd601b1bc96d4a4686391d53731eaedb3c0aec4522cf203fbf0f44b91bef68f225eb02d99a754dc442afeb8bd6c5a2c9a5c99c02b1ecf9c9b18aec23357507b83671ac763186bd80399b801fa8e1483af9b30dbf4da7e7dd402379b735f043b8180f0a6a0e7663f259078e67fc3902ce66e00e82e3cd73141ce9c9cdd41873213e8d110a9867c0d7110556b0dd596ce6a5fe1fb7e4098f917f6e388d808797f09f8a72d736a27db8e82b92c5f728b092dcadf95209c7aa1c75d7ffa39ab51b9f70e61c3fb8aedf2b1b6fb9d3fab42f689d002eff56ebfaa074ed6dd7972cd5944dfc344894d94950252637a0e63c06dbdc9792fd0efd3d1d65c4d76b75f80f7bdaa36a8fd6656dab83ad81f9b0dbfd7b061f403253c736f360a61d8d12d9c072a6cebe32cc29ba488269ed73627c993a8ea240dd14437c8dd616f9215ed2c8ee9dc18e1b9f15f8fee2573236a09315a8a1e24fae3d079ff5532fa6ea6474dce9c500ee7778cf1c2e477f1b4aadff255380d8818ede737894a3b72fff609e0d69ca7b0393b99dfb3cbca313124594bf64f1edcbb3a6dfaeb9b83ad622d9c05edf1cdc6d113aa999fbe5edfa931f624f53710be394a88779e8a5a7cab5df2e2b43be9957e2c73f9ed7992cd4630c3c7a03f9ec5909c463953d53aae27c2f47136165cb674f9a46ae555cbd81760e2441f30641e2c70bc293e7a48a38dfae317779fd5cf1ce9e8f3ec5b9688afde350174cf8ee7264e3e58e354f3c89f47f8eb3524dc3646705c7e0def710b3489a3952a52dcc912c223b8fbd04a969b8569112191b75d7ce57f6514e6f7c8227d75d6363a90787bc934fe11493bda4c3f768eda03d92bb31d22f66f539bb1e01a7b87d36e4df66aad43dafc9b770db17572ff0bb43ecab8e0ba2f72f184a1637c7b10ddbe8d3660d3ad68277b82273eeacb79dce9781356c39927524f7debe64894f7cb466d280c81938ef763c39ed8cf6c7bdf940bae48eac0c15c93f3bf662e971fcb889ef11d98a6becbacfbfb378a8f1a4f7ce7636bf7c4849f2dc1e92693d4bc6f24edca1833bddc89584d47c9cd54390b9b3cd711eb9e7768d76f6531d933e079843e4d5473ab23a1e3bdf95f1198e976c89f7459ea995fced473c8c992a6d5f5c9b79754be0c89d04167bfad8d6bcacd7083f177bf55361f8a1cbf94ebf4636675ee5e8f11aa86da18dc55e835942f4fcedd879e2ed6f3de05a4ece2e83e7484d1780cd1bd86f77d703f490583cebdfbd96507ad634dfd95942ec87db6b0cb43beb715af95c72f01290238b9dc52f1cfbeb99fd5d73685c9737ebe041fc89f6bbdb7d7d46eb404de7380e986c2ebe887cce18e426bc4bc5367a72a7f3118e0dceb7dee02d23f39cef74fee4d8218c3f75edf6baf1fc12cc36174fafd748017169cf9a0e319e78fb7b908338e6dbd8096aca861f53b897e0dacced38ce68b9616a205fa6efa53708b37f292f1fc5c17a790d3c2eae1ebfca58969d7cb487677184f1a6f818d639d227944e5753e8e1c57b1e8ff1b91ecb0038c841e62feb5c9082631bf7e4d9c54fd9d09390aff048968d1ec9321253aff7e2e2e858c9f9defe09eecadf4dbc4e85d295cc72cb99075ca77167ac81cfbdffdcf87777e4687ce73933efb048fcc3e66f75605d5b7f50d339bbb38a18d93bae3d5f38f6a6dcd95f98df89b631eee61489ec34de7e3b37a77d573a97b7e4466712531776fa09db96ed9ebd205bd2935c1273b9cd0f3e9299a063f1ba8bd4d909db1fe32ca9d7562ddb5589c875fabb46d617209f97e9a8de9b754e2053cab76f851be6ae817eb7cdb1cd74456b0debf01993cb890098b878ce6a5e8bf7ee3b0d981fd6f034de1dcc2a982c2e688c76161f0692697cd80bc6b5983bebe9ebec589bff05a43eb3bfa65b4ef1db757c4f76fb0d8f3bff5f6dacbf961998af1ac609ec33cccf3d3cbb33f3e4d971279e52cb6b356df470a91ebebe7d9a67591a21db92c7758dfc50b5c027a66ccf5189fc4f2ae7758679aded5131be2b7f903d47e6feec4b42e61d36d5ca3cbd7e8cb34ca9e4ff39faa8028ee712ea1fc9f12d3acedd1ce726f987915dee9f77a27e4f5ff7547d9a0cf59cfc108dd387589cdbb51ea377e63f1fadb34647d43a09ebc9df7d9fe4f559ffd2adf1c6a00f37c95d744f34ff3a551f79c7b656e8d83fcc09ad8f21de41f9aa8d0e16bdc186f138066a3e1a793393713db3485d272e12f7b0ce700f63739f128d9d0f1881cd3575bc4ec04f3c075c1207d257cdd11d3a07ede897685d4dce1fe8b95a4eefce395ec9f3aa159f3f743867b882f34f8dada956323aceafe09cd3995e9f9ff7fde61ff6561e39440fd5bcf1edb8b6faf7deba7e6457d2f69c7a30cfae34baab57038b8f2197d7fbbd9b26c3c07e07d967603f73ec7142e9ded38fffcd77bb576341b8ac705cd08baed18728678a5d63567f459e28872b8c01887d7649a800d33bba3d4e7c3c2263c0a6e9f9ae71bb2f67ef17bf4c6afc985cde6767f5f075823c0f5e4b172d3a35d7f7383745b268c9cd4bd79a7ed7383e7e24bfa075a3805dd4ac99ef9b7bcfd8477e33eba59bcb9a13d0facfbc74cab8e682f7079bc4d3eff88b220fe7dfb90ec98f164827119ff12fe21b5b828714f16b835dcccd49626d4c616ec4eedc8893ada517c8ae40b2fcb7f872ee55cc95ecf3d62e9e698203b6f3fcb0b3f8e1e7ec0a7dc8d4311e1debd6285dfbfedd905c9747d70bc47aae0b16eda59d64662e17324b6e5beff1d3ce02dcd652b5b50bc463f72cb2a98e60a7432c4cfef6cb11e1e766c340fa027f4291e2dcd15956251861f5f51cfbebe89545a80cb6172d4a84bf91b79e18d23a95e4bbfeb36f5c12aebbb32ace877214a7f314ed835aa730825f16996ab0ecedbd7ef5bfca9eff55e23db2cd41771bec5fbe4373dd0bf50ef8ba941cf14afeea7109b2d1efe027accf1f2223b81083894f2baba9a1c132a4c4320478cf91fc37eaba2b18a38b2ace7918a308d9b2e8f775dc71d2e8102f621365a0e58edeea0caf64336560dedbbfa13f58642ec783acd62d9e71ed79e55a0be6ff576c04fa3d8d6ead1aad775d9de73006311d13f3b32517b73651199e21174bfec61c94c8e6afc77ee1b59fb5b6eedb98068a713c52dfe13a913d1ba2df7b659cd3bf0b2cbeda49491a88e1414d93732099a5cf99fb603ac798bf900beafe86d4bfdc3ddfd18b12fbdd0f6290b69bf88745b225eff56f6ca647b1db5efd2389dd6e71ac3135393cefb82fbd1e57f5304f8214bdc3f6f8835f51d73c113d7d374ed891fb9f3af0f593f7c771f2c07e8f1d1bd6e03568f213bfae419cbffddbbc4427de3684ba1ee8cb207f2f07c0418ce4055a53c09bf161b0997a40efddb139cf0a5def02bfc17a143898f19e84fd5defc55dbb2fff4beea2d93f1eced325d4dfaff4faa6e5d13d3983de6f658d908d9f816d5ff23c792e464d495c556cde058d53ab176b9ba15317d9be6be7dcdaf69c3124cfd1f8aa0dd69855ceb1fd09f14812abb417892fcab9dce62c22559c37ba189de759d3d2e592f3873e078cb28f4173eecb027a7bc875c6c752138be61ecbfdf6aace9adcc28b7cd844f281c9ed8af5e4b45ed78bc48f9afbd39fd16fd0b3849e941cbc08dd5b46ef40f4ba9ccb8dbd3d0fd4d997f031c0e3b5dcbfe58dbedfbf0beacc47bf3bed2cb49686e89a033286f0f9f67ae873d7b6931326df18ec6b9d8701ae42aebe07fa0cf3f7a289453d3fe8732f7f722c9a63c8c6ac8e911fcd0575aaa1e7a36ccf79d0b17526a33bf51ac8de78b7a0b6d4d6909d7cdd598b6f829d98d7fc1b8a4de766dfc7ddbcd5a957b34cef931b8c00b43f120bf953fd3c93c908c18c60273dd5a3b47dbed71d6a46aeec73b52231d7e277343d92fca26cf2eb3cf88ef7b147f2c060abfbfcfad73b1856b8febe87235e736c9c34bd2857d696ea89ba0afe7e58ae38d3d312a6e586c73d21f93c722f0aaeddcb5d332f6cbdc8217f3793054d8f29ccdbb687c469b0de002373afe8c511f772ac0537eae0e51e57d2bac188f3c76c6a7161a04abe104c4f57dbc8bbd8e2c0af1d1ed4d9c2f3a70c92636183bb335be73ee1dfc7bf65f7d6e03da0eb23602df4e6d79b3d8373ef7384ab6ab0286f7a529fe2a7d2a2b6c6a2e5eafa991ff4474e0769523f63d5e17120d8939843b47e06e0c73dab632d437e06c6372ace3ff4b5b2ca6ce105532607ce7f9b15b00d71150043521ae64ea7befdfa8f6a4cfef8ec8945ebc89b322fe85f3d77cf61d74d78aa0ea56cfb037dc2a557fb39d3e13375a184fbee71ef10e6d4abda7e48a658d658a156c31df1471b67176c1bb463b31abf219dcfaeacc9d12f4fac3a7e037d8ede0bb0a2c65aa6ce9ec4f6d9bf3dcd9500f57b306fdb44a36b3b6adcc0bd90a8d6f0c5358ecfd5e25514defdbee973e2708f2d73b193fca4b0ccf5639a5f55230955cb0d94727dd92159a50b1f9a34f7b4f1b43ec6e26382a789ccc0d6f358e5007fe8ea201b739b9c835f386f205e9bd63e7d174384ea5b65084e5a177f67c28706c603ce089e7c9dc3fb0957a8c1bc5e0deade0373e54680c3fe1a8cd90cd9ca2b0e30bc5e5c9bede28845139affb97d168c91c7ac06eb176500d72929aec6f3cad6908f5011d94c61e914a3406fb11156dc156ae83d29d9bb3af4cf9e5795fcb214e317873e8f41ef7efc7e8e135a03acf01dcc6f5129e56f7c4bedb8af20b65d640eb73d6a6281f928ab4907bb70a75f23398a5fee3f4beb8ba86c51a9d55fe048d8f4dedd9e54cc4f598fc1d9e1c2d08fa78095dbe3597952f76b14f783ff349fe23ddcb57aee6b0e49f075eff76bfcc6e953e7d81e623851fda57f82e92941beee5ff2de73144726dfbef70d0fe30f7cdb1d7b2d5959a3a3ab5f0117e21ef6c44e07ae9412f7921449738ce4a6ef634adde88baac5abd5868ba66e717b7dde865b63dc73b2ae30075a7151a538fb790c7fe7e0a6eef1cf73b897da70d9be0faf45f10dce76dd5fd27ebeb567767fc76d536a80935bf7b7bed5981dd5721cd798b9c0711bb4762aa9ed7cfbc956fe6aec84b24855c0add88618f710d993c35e9c68940724b7b39b152345faaab961d0331c814b0ac70ef24027bc3051716cea6e070437de72feb85108981401ecb982554a39223c174785c6f7a0ed4aa8c95893385098a8b36dee02e6518c9eebc93e218aa361df6051158b4a6b705016fb6d8343bca81a1ce241cb1d2337387d9a113798340be3abc6a4e1d01ac175b1b057af588f03bedfa1c1f79b39e499be327586fb9897c6af9c5a688c4eea74943b51316cf8be2a9623bc8bc8cfe43086479c6f2b76483049a7a4d6c95000bbab38ab536467525c3f9391e0ec854899f9f906ad5b3427780d0fa939c9d7154be383af305f0ac595625d8f1b3dce7583098dc849dd289c2a7af1bdd2a74be40be8ba93ba253ccf6ab5dde6c6a118e97631da5542aeccfc6cc58c84a0caf6f567470f078a91cd57653806bc86c948d8e9e154152757458f5f76d5e8b8ae00736e8564da86e0d22ce39160b1cc8b8fdedd463a1bdd7374342a76a0ceb6c7a08cff1815cba3fb2cd335fa3b9d47d323fafb737645e755ca649ba17bc0f56d768cfc960f11e3b46ef462a5e8c5a73219a1f13aa9929c7f8871fe21b6b8de1b1cc3c6e33d193d890fdd72f62f8d499fefbee533ef62b0d27c675dbe219c0b613cb6c67d2b7264dbdcc1cacc9d8a656b7c9986cff0096c3dd91a619c47f13e4fba8c318b7b388a1d5cf20e465f07b3c0786bec118fc2b3b9e5c98ea156bc8723dfcaf887b8efc3749e0efbb8ef48063663e145b1b0b2167fc92ffd1bb7f97d6ee9bf8d552c0dff2fb8a4fb3d6ff47509dfa035a4e20e13c1ab86c58ae33daf640a9b92037ec55e567bf98f97e425751cdb83389756db3fff68a5933e1effc91f451a9d54bd086939e3974ebad3431ae328f7618f86e1ca1a8db44aa8cf7d7130be4ea64a5ba1e5e1dc66047be2d2e2b56c052f3995b67162e791cb601d5494c84fa7b09092a7fb1f0d8da17a395bbbccf8998baecf694f8dd59f96ef3ba67cf3bf7b16641736f8cd7f671b137cb3ba7754a0fc65b8e62f36d78dbdf423d67d2f26099c3a6aca5f82f23e0fedad6f1c0fda777ebb2a37d865ddb8671b67105e3f8d8cd86860cfbefe3d5eb6c6b7b6e064b8f8954ffb5e2f5bb79641edf2226658a7e39cd413b287d75a0e70bec54d8d7fede5ebe3cb38987bb4eac420675be163c0bc2ae5295ccd349aef30b1b869a04a1ae989be427f8553e218e44e0f59551a1d3db140eb73df89f53d25ebbed856d63536dbb0e53597f90657b9fad51f42f6135bf3d801a60785211e8c694ca62b60f33a1573046c62242bc498e29d41769f86c6e9b8b2d7afb0b6c489b043766a79ca57523b46ee98ad1409626e803de8ed31d6b9cd0a5887b3c227ae7bdb201ddae32e813e8bf873768d68bd8ecf5fd3fca858878a13c18d5a2cacddf414dbc689b2d998a33f66d9d5607b74cb2246767fcb3306f2f50a188865fcc7ad32882b7b625ed87afc07d9531f0326fbb4e5e34e2c6275f606362fdca313c37db2ffb389b74e780abb9c5f3c8f7f7ac1bdf045ab37a2380fc43c929fc3b063b4b19c29fd3e547bfe8c9d766df71bc8a1cbb3b1c2bbfdf0786d86b4bc7274a4379b581bcda310ce23376b7e033dd243c1311adb1c74218921d3f6fa19e7e7b7b96b3057c5c8cec866f630563c7d5eb8e2b6236f3f2a9611532cd3d1d1815a883aaefc0c463b8e053b9c99796251fe4d6c98c41ea8bd381108a76fa948c3a3226d4f81185f1429197d8e2799a25faf8043b7c53c71ca4ccb9603eda41a791698a7cb6aa0bd20b9651b2ca3ced6df2b8b8a8bcf9ec432ad1a1c63461b6fdbfc5083b30f6ba042e3791b13788441cd7bb6d1f2bb5398e8adceda0f8b79e486701de8972d12ab9a068a21242bf3142cd3e13f5ae4a40e8de160421ea8b475d8cfe83cf8ce867a08e0143ebafab550f4c2b3efe9bfa778b5634a2e6bf578302defc004f411ee475dc35ec7f189af263eb118bf0d1acc7be30d307109aef533181e09ad9f560378a71fb04b018ff5cf43ee018801629c0cda1e0ba6f9d5363246b199179c9bca3c87651a2e31d598bcba98932c0ff4f0a2d4dc73d25a00fece3bdc3234a6fa07b72877f626f1d324c45c42b7b52154fcb0a9f1d8597cecda5f685d1fd519c61c5a1e3602c6636de463a548b7b1bdee35af8d0df02c56d80f98d934ae3fdebf225fa17d4eea59f09e9c9ece682f42fe91e025d13c76cfe1a0ff18dbba6bd7349ceaf6faec00e69559eeac09f086ab693b0f2aaecd6878c5039a2b1a3899639a9319f8ea3cf694d97a115a5c1290584b4ee543b2d59e6557dcf5c5138f4739dd243ea701c708e0f3944cb1dc4f7a78ac188b59b5b6673cd7e153fee7ef7ba7aecf06ac132a3e5cdb00136165af41afe17836da0f3066902fc1d87a90e3aa3abfb12007defcc6853d8ef114896dd8e43d03a4d72c2d9d4753c0e15da5e6e8539aa4f38396ced32b3acece2327742097eca4c817f480c313f9eac5e8539c5edab17d2b489e1072cd4e7dedc37ae4dac5c841bf8d9cd4433ea805319ef0735620ff0fe29c9fb36b08d71fa0eb5f331a1fb1cd15bd3f8937ef808ef89993b5cd152ae589deab3846c23da58f860b9dc203f81503bb87bb3b2b4616cb00160afadfbf6f2bfd6b2c484a7e92faa7c6660e210fd16242363960e4a7af38d3f33bf50dc323b235acc13c50671abd3fc28732a29cb380df0af9bf0523ef3bf908ca5f9cdcf8a61f8339ebedb3477d86913b9827aeb5e1eb1a7baaae2a74008f2cd9bbb6fc0773613db4597fc29d696affd443406ab25881e0863fca3b79b65e407e078d3df2d13abc576518e27a7aa853cd20d631bb1e7726b2879850130be0abc7fcddfd9a5181c5381a66a548931b9e34eabad0fb1f209fa1c6f09aad0987373f20356b755cf4cb4b4ea1ddc70e7b503fec95718efb1dffa24fad5bc77ca7a71aeaf5d1b5068e3d8f0dc0b86b7876d1774dbda73b863162684c1157e7072af4020347ca39b0f8ccb7cd44b7d647f9304f8248aeebe772a8bbac6ee6eeffa4bfa1f39c22e4bbeafe8e695343daea4c18e3809b96ee04def3b5e6bc95a54e9d694e1feffd260f441a87617b0eca02702cbda828914f00b18aa7e2552d66af16c5e70dde4b2daec9d37a0cd786ae3981f50eeba3625c054dbf6b5fff803342f07da489a0894575d3e7f80b460ef4ffdb1bdc53335be71f03e725108bcc03cc67810dc647c024bf87d3f1a82698ee4ff02222171a9c47c8515c716d2ce8e2cbca96bf77c6e94cafd340e439bc2f8b0bae5d6b7d3065a6a1754efaa5d075e3b3373019a562b37e2d8f224dbae796f179670dbfeb1af7656b0741ff24bab75f9e4205f94c291bfa3d9cb01b9c5dc05b85fc43a85493d70772e1fc23aee0607bf4c4620f7d7a35fe1019f30f8ee0cea4c3dc3998fb1d67327e95e5ea2c4bfc5498bbb3af1767c036f8600ee663ff4907630c46f0f94d8fc2d53b21df0bd993c8dfc2f5795fafb76b342776e9d7abbf674315d983b69904d616bef3cb2656552a0d1e928c6cd2d8b5a7ac6b9b8922c6af8aad519c52f1fdfda027ad1f3ddb0a9d67dd9fd8d5feed55d5591678af66b2e09a27d6d63bf7c93eb858d8e9fcdee3f8bd63af8ff4f3913c5cc3ff4be9e8ec13faf808b680343c37635f1667f5d08c7dd6ab23cd1d7bc3b8d6f05863ec7ae20f3e11da9b03d2cb696bd0a300b2b9c4732f1b6f0d769b7307bbad532b3b6bc793c420eadf5d000bbee532a4e3d69dfdbcb3f81a372e530f4e5f9e97f7eac47d8cdbd4f459f811cf29c6e982fcfe063764e0bca0e3eacc47ff0f3e75e010be04f6fab4b262e47be27550de9733f418eda08fa33ba63427596387cc701e01ddafd35f298db225374132a0736fa7c52de8f519c6d0afeb74eb8959ca973f83ad3116cec8ef590d369e17e177f3223ef3a25362eb7ce21dc89a045cf68d47d99968df9d5d8b2f02cb6471ef4fc6403c2435cff5de7ac06b81f622d51b06f209e7d5c7eceb27b21f1201d9c10cb22becc17be9da0ef289304f682254ae05b8fc893766994f8b5e4f3296e322ffe9cf905dc07f7aa9390cc66c734d249f6d0ee939fadaf5f9adcd848ec16fc5ee3138efd019d78cd68f32b90fc6fc59a7f3684eae0d7d8e74cd5ed2c3853e03860d9d4b6ee5543f8f538fd7ed988845428d1be662d0e159b22eef23d879792fafddcea9f1b0eeeace3cc09c5d914d03f92c3206f3c82d31ff4f33e6481ed6e39a3473427e8bfce0e6fb318be78accd1bd67a5b84cfae343c9e035f435dd7d6e11ea469bb1f222f0ab5f157b5df72e295b4658aa35871b97a41f48c64a71866b4e87cd6f9bb14df24819ac1b2e29557c033e2a5b9f3ff433e58359b9fa7b85dec519aca3e57dbbadbc89d3dba732b086b7f8d91d1c930deb592cbfe6c27067f1d5ca3c057fd5abd8eb15567bfd6b5e5984680c83a8d3e71d2a3ac1e0c13a70a0429d746dd36c1b1c17a76afd00b78fdb3e66d32e66098ef3ac0c46f0cbbc68f6d2be897dddd8e3489e6ae2f55b1968af7e55e4c02952c2df991b757bdffc3dfbfaa0372469fbaaaf2f6e44fee6e6ff5ba6db1c631365d527ac89f8ec589b7803780a4963a3ca0d66869ccb8910cba083186165f57ba59cbbbd526efb191dc73de6c847c6184604a300f0cba89e9576fc7c49a830de556baf3ac03979aafb6b5edc88279f37822a69998a7313179ca36efb9f30564432de49d3cc3b347d7e67c259f3daf5592679a017af4dff4d8ade0f7ffe84fc64a707ea59ffede1fa7ee8cf4545798b7f20637f80606191fe8ece18f9c41740730d359003b9c6ca001ed05b3cef6d867b30d72d6e26754ff5f07ed9014750edb79f86cb837cfe100b1efeb7994c15e7704fd5c2cf85e31fcd7dd17ac9d4c317b21386aa149f3f0097037a2f091e0b5bb6382c71d34f8dae517f56f422595943b4e6a97ed3e4677ff2c7584f3c54743ef738fee0da0b662b4d999d58d76a4cae6d0ded64f06bbe6e10648144fcb536e603f2c4b5e59aef2bf290cce5847257b2d5ce62af9e640ee57d56615edb6e7f7f20c11a3f05b379e2eaf2cb9dfe5dc0f8de616c06887f601b3b6fb005ea7753ed77e4ab45cb74d239afc16e1ce367f8acfbf98063ad835d5b616cf6d18fdc9acfea050d7239383fb61463c00e70b8bcce93dd9b97aac1084da7b95b22bd6a62dc8e88f04b51df79830543b084ea9a4c4ed17932e649fad1c5c6df93fe6e0130d0f422a4eafc01539ff0b982cc76b1dc4831776dfcea1aec01eccd32e1099f6da2ce9ca387fc70c0a5ead85e69bf863ed0b18dd7c60fe2576f0fdcfcd0bfa88cdf728a3beea4f56df79b3adce13d1d983fec9fad3921704cbac6c42d159ddf07f6a6e6063952f5cadd7c106dcf4a5ffd584e17474d6f382a72af82b819e8e206f34bc2f5cab4ffe460fe154136ea3c0c7ec69d8efbb7fd8a0d9b58a8d8edc7adfb8229dcdd5e5c40ae9f3354675bb4564a82f178061eb1b150aa07f0a7306797a4219bb8ed4bd9b3a0dbbdb23852ef81c6aed6511867a4cc05772f1c97118b6be660cd6ac80f3a3af682d23b0d9e514ce314806e4b176c50e7f106daf7ca72fea8d6fac59db102c64258746ab75db1f65d689eb7661d8db4c84915692bd0b831480f287a71c5312a26d774a4e73aebf7da703f4bd00fd1c80baf6b4f75716b019f1ee6fb06b306c6499a5ffc03f23bfbf6dc88e2acd8a2fb0167c50a7875b01fee954556c771d0fb79035f70f4a252d322f3903c29f3dcab84aa5de7ec659936185ced71b13877d7b27f8f5fe1ecfe8a9540e7e81adbf0ec0c4c86f0a28cb419d3970b5c3f87be436bf0e0804c540ffe2be175276b2546be3470fd006e0cd8b443e44337f992768fc750a3defe3d01ee54bf2cf62b7d522c07dad99392d3eab085ff01bf62ccb268fdcb50a708eb31057ddef04b6c7fc42a6873491ada4b27f46e7d8c4c0f739f8677bf2fd1f7b8eea0cb13959cd787f8e8463fe5f1474717ea4f6ec698a7d66e8b0702e346c6afbacd0500e64acf0edd410c2946e3fefa09fc78a037d2ba3ffa87fc375aff9997ae7fc26ba2eb3fc306db00f9a5f55ac5fdd0d90ac7f7009f123035eabeae1b1df124ce0a259f77068d4b50e05e4eb45eb87addb5f24e051c8611ac1715b8a89aeb810d047518044fab3ea694e165c5c50df6f03262333565332f2d92baa6b1aebfece4abf47bbc21c3b3270983d518728999a73ba9abf3f9ce6246b85e3939f562177b55d2ce3b8bcf824971099822f34c2c5bfd8a8ddbef166c306d8ea7e8b8c34d7387698fafacafdc01b93aadd78ce096c55e45f3249918f7d96039f45bd70ef73b697a7639eceff915cb3fc565f773ed68db73ff1043fa24203b461b9fba712090af58ff213fa81f1374b830f3a44de95ac323eeab8973d73c5d6c837d45e3bd4c27391adb653afc5606ec0ff9bac5716715315abb8a48ae732f67d7b59fe32ee6e62d1e4827b7dc59c7b4af24443be04bb9ad11525bfd8fd62f92b59ead1724e6d0c372324f675b07fd82c6a0249f4196d2184df5793b8b69cedb594cb6e462c1db9f626f70029ba8c54127bc0835f792cd0e00a3440fa10f1e7427bed73f815d8cbc319f585c12e0751e674b6e24ecf0fbe2f118e747881d377a2dcc143d4672f6b22c9306677a47c9d68f01f8072f4e2786dfe60e15113d63b1778cecf2d9d87f31f055a8071ff7469548766c8e756d8cc34df2c060ae687c1cc81980beb92eb921d85048a7115cedfedcedeb78d8b20cf39535f50293c96488a1402d3cd113571af3765463282fcb8455cafc15fa446c0df99ea0e714dcf71b3a255937e313bb922614bed004f711e2e7c0f7d5a1ae95c2f9bd0ab7f761436b600648be7438d7906d2202ee17d21dacc3111e9e03b24313e0ea7dbe8fa01b53ebe5efeb5c0bf0c2077a91377909c819507b0f6aafc18e6d39555b5b16f94fb13ba1b11f3186aacdcd193982f8d64fe744e81c774ce130e21c6de5da9b75c3d118153970d1d2f88d633685f84367fcbe60fc5cf106cb51d8f5ec48a7bccd55dc19975231e8dc4a9d4b81bc6217df792cf4fece4a5502fc9ffeb3fcb973ecc58f8a2bc4d508e6a22909d7153779d1a22c54255f70ca89b0b2d67f3423ab541beabebf35a843a06a08a2624fc7ba7cb1a831665edcb23823df7867f107ac5f8e21b229eb3124b8a5b12a7de51f83a0c6b5bdaa12d1affbeca0b638efa08b6a5e6ca5cb2578f4c464f4d9bd6ea24a0e75dd237ddd4a19a0f76105c5660907f315edf70462729d1a8922a7df4fa3decf3b30371c94fec13c2fd3477aef410cf330bf788375a4ce4e822ace3ffd54b804a29c215df890cbb25f1f53f3bad57ad2eeea4524471ddd499d0e775a47ff8577ec3bd0411ec48431b60dd4f959c2d33af496370fbdc7b5b9de27cefb870d86f84caeb1112ae0ded099027ced28839c7a3746d9ac0ddde30486e0ee3d8f5546d7293536dd51008c63b20783db7c0d9d332d5d6bc33ab846e161ed4baf1f2651063427481b1b86fa6f6c6fa07dd6f741294cb09b7b948a7dba107ba15267dbdc217603f6b93bf60ae825d0138c1b426fc61e307df79e6486dec1bc3e5cbf5d8e0fca076970f59afdbe85351c533538c8b62638fd2cacf7ff30575d9980f7ec2ddfc4bfa8e1f9496f95607be96daddf7dacadb73a6f11aa52239b791f7326e401f0c79981c54da0c6c26b74158eb737bca9e29cc86b3952a1c6257ef5d8536243bd1b9bdfeaa12bee19c1f8b86d9e60b6cd3d91ca13eca748e6fd1c27fec1beeecdcd17ace14e2d00adc7875d3c636948f47adce8f579e476d6396034b47894a12a0266998eb93ae2ec839b34faca90cc34c0fcfa61ab07e738266f9e48dd0ae11aafd810f67842b0f90df8bbb6cbd07eab56b3edab529e2a05fa80af51e73e22e497224f946b5d8de46de7bc6ddae0a97d3a0739223d2655534ff62fe3d15dccd7f8af71acbdf23fe2aa423cbddd7f77621697be9c20b9b6d7068316ecad06a7befd3c66936e3c6b52e75af9958e6cd2ae5fed97dd9cb97a807b0cd13d3f30e6a9e0f6d6f7074770e9c70f6b4f3b7938d8bfdc26f3239ef198e2127066b9865cc557b62ce739c1564e006739bd46c8e6c77c8c90e378946bfb37f78a02f1febdfe0bae39f473fc7fc1d9a5306adb1c70eed0f8b3d135fad0e50c7a81ead83ce42df2c89bc9f8fd7427950ff31c6a3d2c73f4297efd271c77ffbfaeffbf7c5fbfecbd2fe060ba55e77df5b64ffe3fe6a9186d4ff52d011ec8847c6e304018c0dcc218200cc65eb9ded4ac3a35d75d37ef94dee31bae6bda7eecf369ebd01ee660a89823e6a21cf7ed9e07f5a4b8be8bc209c5368557b121c1f839ab5037dce7e7706f72d935c73785354f7833d8335e2b5b8c7d218dcec141bbf32eeba647bb9bd7b93336bff08e404c8de21b51896e5959bc50e3fa3e1763d3c09e063bafacb1dc1c9c7b821a912051c693dcd5f342d1af515bef27c3fa7123e8af6bea605d64878bf81f3a9faac38b70bf20c6bf80bcc34ccb68dd8b7cfd27f0d3af2be32d772be6bae4fcd1629c7f2b83b75c294f07c53e1d95d95ba2ed85f3329de4beb865567ba6c4f7d5cecec144f689e6d849e2c76c88f6cb07854519ec59b08dfd327e0df6450ef1aa8a017c753fe2f79e249cdded2671edb723dabbde98e5149b8d21deff5ff4f673785baf50df42e72d7e9367f5feeaf978aededa5518f73816f03efd6a6b50a35f6a50db3d00f123741d52978dd6d355a1d6c40eaf9d0735d1bc67dbad1f0535ab87055ab322d47addd693d0fd23edfac738b8373996c77eebfb1938e439a8036e72723bbdc5ef5b72a6b73319a1c5649974f2504b4ef01cf2fe76c3e57e4767f4e2653be8c720b862837fcd8fdaf13f76fadd1e25881b7fa4c9b5c509c15c92f7e6b88f1fe182ef0d7dea77eb947f96e9f2d9e7843298cc79e0278135d1af5dfe21df78385dbd81f6b2334f897a080275d6c47d3a79c8a696099ef51af99250c9515b0b0d3d0ec6295c492dcecbb24cc2d5f88a8e139b9f2995747242e7a90685b959af6509fa25defdc33cfcd0c3eaf15a1e7e69389795434fc5fd7578798eab7c7d869a316ef21a98a7c4d673e069a8f3f0d41c034f956b0cafcb3249e606e0859f958a652d6efbad994ca6ce4c0ffa7d8cc93fabfd34502a640fd7e379ca3b7f8bd999ece5bc17b3ba5747dcc86e6f8fe4a48cc6b45c495b6aacf36f3f4aced067013ddda75235a6d0b7ed270c5d0b7ffe4b1f9c012edfc69ef1297be6279efe7786e00854ea6cdbf6b45adb6e7e08c751138a2f3677f7ec7ec5693dbfb2c5f0d98dbbdf133fafe9ef53a5358ec741ad02c4ded39d5530ae2ddfd4fcf73001916d9fce239701be6c5863756efc4d00bc1ae9dab761ae7730db31ef67d7f7c6bd30bdf839f2d1f138f11c8e37c7afeef474560f6eb0b25abb75a723bf765a7e588bc43b6c123f229c11504f3d1176e0a3279569f1b16bb999979ab1228dcedddfc47f6e8e419fc83cf40fc9de052e0839f7ca66fd0b4e5b93922d23b4a73ae70ab7f7c82eed1a3ff5affd3ffa7a6a1976cf6d3ec7f4337cafac49237fc0dec23c70b943e933b74236c51bd8144ff005dce5e9080e1ae64791a64c2001af1f3a8665d3e35cfb976b9e18db10126bb009903dbb3c6cda1e11ec5f1c54a9a90de3300e4ac1927eee1470ab239ef37bf2dfe29c1c8e97c5d1c6f873b9ab430d5bec5aad9e73e975d5c4c3687e03e0864f5cc9a4ea379dba6ee744e5d913f5f05ebad6267138b3427ac52f43c2a70e3957588b4174bb163f6757f40e9163cf7987c3396c643f0651bb96d0f3df9ca3875c7f8d50bff9fea86dffe874aa6d6f451f1de973b428a6eff3bd32e6543cdc7daac7fa2f719688befab95794ead96939619b9ee5d66fa2e3d6b7f660071fa3c30141e7a33cdcdb53db7aaffec03c2dd3ed19fdaf0ce476ffa471cd97d87205a4dbf67bea5ca4ebd5d9a90a2ce645138b36e732a3f4c9e1c42dd36dde952959866c314f1732aac6aef9fd8e8ab1377d5d701df3e7dce66f3dd8bfe03650beedeba7f1b0d7ea2eae453d575e72624036dba7cc4b3709f46e1bc7ab2a25e765720a705f66e6d97ac1f955e60522cfd97a91a177437a63672f4cf85d9a9c5d0bea793afb4181bac5b82fa399be8c6ec7704ddb2bf76229c9c3584ac73fe59b67259f0736c454fa3a659b7dceeee99a18f77feb7c3b2e7afe0d753d0393a9eb07f0f805415d7bf7289f66b137f9b41f30f193575727bced807515de7bee9e9e4a469fb3e7e6c3d57b32eb763eb279e43eee0336de727fcf5c91ad54ef2dd0dd11d89addfb1dda73d499fc8d63b7646f028f7bbd9f009b096aa47afa37a1eb5a15645bb57a15c938a4671288bba48b8b972ec2007c2717f74df4f4bb170925f4fa724d6d7d1e887c8f7b6c7bdec16f635cc76599a5cb99f14a9f5c3fb1bf947ddabd5eb26ecd63df7e827ebd7acd20ff451b33c24a6770df5eb3be20b742fcc121dc03f7b4ae691f84e68dbd7a8337c2874fd663d9af791b9d7716d5b7ae7f015f9157deecab0bf4168a05d443d1f873b5df46db9d3f6208d9eb66cc60fffe606bd09c2a5639e7fc52cee5348e5471de594772748dea399313a6b643701de10cad931b9fbf533f88e6b81967f0f99ec23d2b5a1e879bb8e5858a5b52185cf1abdbe553025f9af06c268a1e9f77c655f0f679866c1f983fc82bd4f548c83e427e7efeddf5719ec42f074eb16919484923ef6f6524dd470c7930e676bcb13c7330a6cfd12f8b0afad66bdf1cb010c27eac931ef3131a7312dfc41c6563e6aa4a9aa089458a7c4f4727984762785ce993d0bd8bad42d71177f6f2ad1c2b99627958f7740d9ff47ef74733b2e38a437b1cc9bdf8053d27e007e19a8174658d8e815e54aae4f4f7c8bd1a8614fbc148fe34f82d6c3d9f209fa08ef717d928691dd908185f65c8221fca8d08f618c6d26a70b33e06c83647cf5784c16c937851c8429fb9cdbc3a25e080f7f56eae725aee8a943f54d2dc279bbfdc135aa9e83ce639fb11cba7e38ff76b101b9d4de1001c1d7b5173af227b92f5d2a4082c73ee8a5f913dc0f52c684c3af5f5b8b601d6ac6bfb5f3b3d7c7538e1e44b02eba5eb17d97817141d72d7849b2d7c855a987176f9d4635cdb53f7024d004301f3c38b7d3ce007314decbf3dec797f1473dd5139ff3bf5ea4d0dd20ebdef4cc3393de84134479f33ad53978774886b5c05bfa479f2d15a98c0fb19755f825e845087346deb23d59939fa94463771488be303789ec7982b09e917c9d0be0aaa0c639d404ebca99d269cc2b7368a57c6c04d43c59642ba460afd96ae91ba8bff239e2a0a3b04fc3abfbc46cdd894382788af8b7d8c9d5ebcf6623255970779e3b92693f7e3327ed9e3409e9e12bbe682d38bc7984b7f11bfefec3b0962a960e37773823fd702abd204e325b435b067c53855c886d859ce51c13d50cdfaf2cb385b9561b8b204cf4f98dc634fa56db095621c8f8ec1e2787f19e7b8ce6b22ac6c8dea4dc7980faedeed21f5917ca958ccd5fc10c7f6d79875ab839b7e44903d2d877bf2f5736d787923b7ebfc48f603e73fae5bede7d3078bc4178bcb133cff54ff575b7ff6d8d7a6755d934f6e7a3f21be6afc9e03ece63762c12b4f995acd71dea0cc859d7e3a63fb293e06b83ea83252e1bc6e6465231f991b8c0ccc55f44b5e71087daeeeffc99c533a46acb1639d5ecdcae4377fb88947dc8e57d1f4b1d5bcc9806dd4e7958bf8dcb11750a7fe88cf6f777bed3d55577c270e9ea4caec1e0779d2d1213b8b8fd179b731afed3d997c3fcf45faadebfa00157aecbf04772fb46b2d6a62292f7e951fdd4331c27c5c5788cdf67a699a3e1b07bd6775837b7693afc65c80bd585f3f9743f522d0fcf3b847bd79be57590fc395248c3ea5af11f4804971db677db833a698db02b00feada3d62dfa26747f2f548e437e174e56fea826e78827a7553682de11abea26a71bfbb6340eae60f4807ab48d776c70cadc57c6541fe30efd6f8e3f9ebd7b3dd1b53ef718d49b7971e64497d5d985f529750843826426a030e1ad29dac220dd1decd5bde53f6d93dd6c4fc0077a2aeb97d840fd4efe59dc90da78e5ceb678cf74dd7afd7f34fe18dded93333395b7257aa3e10720e6ddc710ab1e126a6b883350375f321cc17b2d1602d8eb24f2b3e423e48a2b9204639e5ff356b8970413dc2f581fcca2aa56d84edab0bfdb743c13fb04d6ec5e2cc80f49ec1e795055886992a259e973002b2713b7126b1b5250053c6e0e97aca043814a3e2bcb2ba388390d79e61fbc78bba35724e5bb34ac94ea83300dc4a156a57994779cc3e9eff1d9c88bbf9e58b35d8042b7b9d3b909f601915f33a123d73cb437c2f4651c7e35463f2440ea5e6506cb957026a6e295b6bbfd2bf8e41b70681fd31eec19e181be7c9e9de9b4cade4dc6d38f2dddce38452913490d5a4bf6aef5a498e8e2d3967b4b2807b34a530f4598b7383253785b1417b641eb9c96ab6f0dc2993cea3694efaf363ec174cd17121108b10c6d712e0771e7b8a6dbd485636fc2efb6cc7b8f19954699aeface0bc4ca742b75ec9a1fb92c326de8fd7087bb707add383477006b13fd4d660cdb60ffccabb71b7ac574f9d0760eb917d8eeb709abf1dc0d563aea42fe87b656feb1ad38b1635f5c2ac2ad21cc272a6d88bc1cedea075cdd2982dea6173312461e0daf3b1632f083e1cc1bf10917e654e418dfb218eca3eee851fa17358b6c103a9e602eea177f0f359c33f7e753c412d20d82ddaf70aad3922cf57dcf6251063f4ec7ba5628e9e5863cf08c9f2b08675e694b9e089ed33a84d3dcbb5e166c6751171d6607b4848764e23d72aaede40bbe529d693067743de67d5cabab6e3b83f457e6a86bbeab44763221fe46879d004953ee740e99487efba103ef5b0aa710e5dfb2df74bd21fc19957e05f7960a3ddb59749dcee495bbe5c593c928b200f1c9dc6b494b36e4f350f7adca7fde012faafbafe6d5994ea84c69cdcd6bd85993a5b8c3ec76f48d7662bcb6ced96167f2227388ce1aaac6bfae79a6bb98cbc3fded48e776d16ad96ad54fc7228043ad5938d7135eb386586f911e557c54a908ff82710c312f9873b13f98a1827b78e7df911f84f672a2e0f63043e05607bbc5f7cf18bc62bdedfc94b5758ee6fe9fc23a3e8adbdf1236e7b675cd7b9cf9e12f5e006ca60dbd6dac298426f0c92313736839ace71af3ae872edf83847baedd7299d916d165868fff7f1ed3bfe1e91f76c06df2159adf3035b6759aa6609d9120de7b89abcafb64cb2d54d776a33c97213274bdddcb84807f66cbcb36c30c26fbfc37665a79f245c192cd432a231b38d5a27b1e1871856c8f640b2b719b381b96f73ec7c847d96ed8d4ef6ca3b790316f4796571bc174cd9e01e8ec74ebc19b312c62bc675626d4fd75d9fa8f60b9781c546ae2d9f8dd89cadcdcddc8ccd4f7dcb4bfa969f9b53f0399b73b613c1d06fcfb9b16b74a88dbcb1794bca36fa25aeddfafa580e86d0f3ef47319299e72ec6ecf6db2b0bdcdbddcd599d000304ebe8b36a611fe72e164ab35e7be346ea3977a48e09d7efc17c9ffb7107ab9cb372748d5c711edca917ea9f9ba373fde8e6dcd6362801bfe8dbd18b7c656fbc80c857af8bbfbfef3ef3355b9661b5025d83fcd4c99f9dce96641fed1523bba875dc45d232ccf50ed716fadcfebfd4517d43cf1ee48ce2dbfaecd9db4d0d64fffa81c8b3fd7b10fb196c7f9a13dae2b677f8ff59a44b9adc9f1fe1dcc9fa1037759590bba3ea581549f03493f9f658e038b96807f0d97a58eeef179fc3b922eb51ff0ad4768f1ed741139c019cf343b614f07700df29e07260ced59bf8e50f6be802bc25fa9cc5f33afae3edb3b2e6c0f04b8ca941f5e5776354d31cfaa8907d61ebb73152741cf08a08f6cfa3bad43eee4db3ee0083649e04a959c2dcd8545d9d341114b17dee3bfef9cb0df69c5ecbcb35d8bcb57fb5d30173252775f5890ab17fe1128845a5a6d8f656c57989ef35cc9665f3399d47615ed7a19aed7ef92117c832a47e93b5b8d137f225bd19b1f98d86c3ec886bd6e99c11d28bd0cb7e5566807b4ef5cfe267546c268758ff14f44ab1e684b39b169933d854cb74427f5776be3b68b9636de2f6d8fa25d08ba3632fc61ec7a79e94ec837196ab33b40e3699c34df3b555642ec703ced332d5f29d24943b3bbb78874de84d1617cf7e0fc9fcbeb851117a5272f0e2c505d94d3b8b0f03c9ac96e99a3cd3e2e45845eeda0bc6c472f91dce4fd9c43bac5f7662113956117ae922591e9ee3beb817cb06ccb698606f777302afae64468115ac402fa3677adcf7f55b1c1bf7bf94fd9cd85beed9661e48099eb731e9a107fb94c4bd6727e1dfe4b5a03790c67c97b6f90747301b5364cb16e75e0e2a01ff0ac99748febeadd3cfffaeb70af783d33dfb8c7a70d01a1d402f3c3cfbf4e4dec39cefdbffbdba29e41f7d58662947a76449ee51e7d6d4d909636344f3cab1d8443e3019ee7521b6e0839a2c1ac7a7f3cc68dc060be6c32a926534cfbc839bf9e55cc0fded7113637a869348debf9d97e290950fbfe5a8faf993fbb56aa01bb684c356ec71ed82ed1f863e230cbce4bdf406ef689ff22a8c5f97e794e26c333e2c36f2b8eb9fed203939a9902f0f27419546c24ee7818bc8b13717ff508ce4f8fd0d73114d196f2047b86e980ffd417276988471ed79184842f939bb46ebc9fbcd713982be220a8f38d83a5630fa14e76febd9e6b28577e50fa6343dc85d1c48f65ecf5add2ba1d6b94db37d6772fe2bc13e7bf1a222f10ee6093d8b9316803ba14ac84f72337760968e35cf01cf422c067e9a30cddf806fb1f15c931582d99cff186c8f1f0326972339fbb41621f8e853c0f9ff2d5642e2877c2f7673a5b0f2dbf5ee622c297a7efb5cc01cc41ca2e242ad873df2f703c8b5767e8b6bee5373204fe2239a4b8bedd4f45fd44440ebfcb2e31ebd47bd4e9d073c8118970f622684033290c2d21bf8984b6162967e2a948a389fb9165fafa1af9dad7d395651bad634fed0dfcbc0e291df7990096f005ccb7ec3b91b71ceec66f34b50422c3a53eccdd14f85812c8dda679abe1d1552c7e545fcc9b537478f5b0bd03f984e4bb7622fcb96230bf0d700d3c00ad0b89118435b1f609461a8d67dee338de490005feea0580ba4e732efd0e109ab3e31e64f84f1bb658ceb98b249208517574c40067b8735f2f33f7d0eb001c9b39d0876c9cdbbd2bfa7c6d869c6d8dfb357e032b0e707241f5d29a97c69ca385c38fd9016893fabed313ef4533ffbb4cc1ce25ef5b8613b06d994cc4e12e279e4a2678afc83790dc4aff6bc888c6319bffa7b366e7a70acb63714f35ecdcfde607e72ac2bd87e81ce03567b83bd04e32e9c5d43b82ed3af3cd0e1b91e8febe14430413316dfbf883d8e4f9629b98ecd0af281ac075833db337039830f220bbe58b463386622326e513d66e87cf43feedfc57c780eeefbea63b6d67288f10f145f1ede672f72ca5ffc940d913d0c73715803769b27e2bed44f9bdd3b387eb9a57aeb5ee1598d23f55c683d64db4f9b85fa5c642bacac2b910f8e201f16ac3f784fa0ae63ba601c7bcec851715ce9f32ab01757176a5737eece3273579473f4ceae1d26cec064f0fe2aae2b7dbef738c003665c6b1da9927f834313445fd9c7a087672826af5d19c61c15fb84fb2aa623b846a0879faa34eaeadd8e7dbf39eeec055567250bad3c0f908d527a83cd05c6652ba4eaec4b70222775a23052a4fc88e417faed87e8a41fe0b30e01ff868cf55095469043b52b76d8f48d56ec493d50d73558aef777c355ef0ce689636f12653aeae6be27c075f86a9573c25f706de74c9cd7ba29b275cab6b98d8f107df693ff83c6473bdb5c720e52e11b7a2b487df68d3f3c6de38abdbe49c807a8486ed1fb740a9c800cc46dbb72355c192cab1eb0ce68f37a786f408d9cc8937d48d581454e2aa7b50ec27942b4d73dce81effca8e6c7777239113e1d3b0877f63a520c21417e9dcf0979906e8f6ec47fdadc74e05809a3e83cb393ccf39df8e419c9163cf6e81d26845be41effd1573b37b335c913035766efbec82609132feaf37427afedfb02c7e011e383fe84033a3c3672a8f37c8900f90c905d750f52fc1a4861e697fce7cee2398f3bf5b114c126e8e2d77cd13605f818ae7ec39f9fd5584f7e84e3dab82f82e27db4e23fbb7a8ca551ee95f18b07fce69dbdbe225cdf3486736b1326a756a64e194a2f915a0ba9a35b05cc45ddee171c13687474539f41d998e77a5c71bd7babcf81cf0cde45ce894e135cbd20cf1be71d5d40e9359a57dbad4e3feb049c17dba2b5bcb1e725b229e4647374f5f7760ca2f7d8e3cc4a96f84b20be239b8bdb599b4496265ff3017e8679f95e3f7744e7f0dd419367de43ce9d1e5b4acf421ebef33e31d16dedbb74c7a6597fb5cd93119d79563106f101c9b695c5b39e74cdddaa899b66c40e69af5b091735dd5cbc74fb4791a0afa374ed05ebcd364be46bd9067ba9e34498e38a7092a47cf231db681ea7e5d45c855d5b067a109ab959e9cdbeae9f3b019ff5de33a3f55a1d8fbfbc37ec0f137448637fd27347de650d76a8970a8c2c4dcfb2d4c8b24cbdbb868b430f2f67dcc33d45b6017af717e0e9b599574d7fcf900f0058053a8f6d804971712a9601de64fd5aca527296676be046c678bdd3dc9bc17584609a97b65e246a3a4d03a89f14f62b7be3692cf827a02b907fb2b178c64f93a4e14d90b65d5d31e9e6e591cf50db00e8fbcf59f1fa09fd0da00304da9ea1b1bf401f00969470f2a5228171d8f7b07f2618db88c838342653ef807c3cb35a99a757f4bce83d96d1bcf43881910f2cf04150b1863179b7e61dfdd4ac5c7b7d84dec88e0d92c3bd30d71885733f3d5d6cd23b47c57ccf6aba083df0bdc8fe7aec1f93b57ccb692f5b4965a4d325c464fafd93528c79fa3b7873ef600311bc54e0eba5b8a25e09d7596dc330c09f433f33d96768de775027c2830dbcd227852a0d3bf10ce2f70a2ede3f68ff0a107b3a507522d2a4deafe1672397f8577c2c5bf774c19ab6dfd05a074cf8749b633b1ef9ca34166fdce1685a594c1ee8e1401591cdc957c16cce02561d92df3a70759dee7df7a1c7f987cec73b7b71f5a4294f383159456272bfbc461bce3cd7f1854dab0323dc8b94540fbe7f88c3f8d33ac0fc2e98a7cd3f987b74cdd6ef9b84e06b48c02dcc7fce1e3f1bd27b80650e3e5a117e6cf9d0b3ccd12760ea4d4f38f7889e9f0dfd347fccd33f69fc7ec03a6dfd7d73e5ee85c696055c396a2e0c0ee2db27c5381e0391ffb407d806b6d991e0e9058bb1557e1a5b8cd549c51728db7d817c79c6d5c3019a03fc1e53e2bf3c88851f4e8ddd87b9c28ba932d53aeb4741cfd53b866cab27fc0bf4aceffd58d4ca041e041ca3eae60b492ca6a8f13709b71ee417906cbeacccf7d2e3d8cce71a1ed3ba86c650a4eb91603c03deb447f77b806db3a0e21f73a993c733847099923d0918489b2360f43dee27626add1c34766a16127975acb98236782e5865e6dfccab0c1883e1e0495faddec38cc712aeaf527efcbbe474216bf08bbea7adcfeb79f976ede431e6510ff30fd9ad800b616d5b2e25da0fe9e5a8bafd9f5f0db725552ff84af54627757d048ef5c85f3b6bf815881d1babf6054a6c1720b9c7849a5e9c3f3bba8596b72cc4bdeb5cd6caca73bd1b9b133eb89e4c89e39ce8b91bce32d06f589f622e38e32d277f632ec0f66fe06f5bd9c48f1ce09893ab137ec0e61927f5f9c0dfe77253c6257ce9b5cebd639f916b601bed81fdd1fabf9361a68a5346b16ee7125d47d1e74c6da73b5c18faf19451c66f19ae91207a1a9eb1382bc0a34ef4ae78a2f86a2675be19ad55a8cd74f54450670bc61bbcbdf470607a63407083666be19ead82f91a219785ec1f748d5b9bdc5ed73639f1a5d1deecdad2e4da255a0b9f7a013a0ddb81e6d0e1cc2bb6a16ef24dc876a19fb789f905e39683197ddfaf8ff671be9baaefc231b895def8fbb95f62df09f0d0b0dc10d0ef6efc2dfc1de51b6d33559c843b126b6d7a64ef8c5fdba7c7144b6ef4cfca006e579ac714bfdf61537e6c4db48e3217cd215bd772dd1b7bdc938674a9a3f3b5bd9dd17cf2726a9e5d512618a593736d6fae6a3ec8037012b6b111bbb1bd42648b34363a60a8414f0289634c72b96b9f47049f819d476ede99337c8f9143dbfc652b53767a88de0ff208e8d9a09fd0b8fbfb7467f1a12715f00e945d98a17773d3e48c9eed630bd7175caba8909f8a9ee93f3f0fc1d4c631f869dec6dd41e74dfdc31cc9d5088daf3c5b30c84ff32cf31c88ef831d5a3f039391257c4d19e91ca91ebb38fabf78d74fe87921b1ea5e4dc52dfed1bdb5a6d135c1afde7e2868e3fca45a349fd41d19c79ecec4b7c8f0f5903f771568f94ccbb09d7e8dbacf0e3d729d77dfddbc7beb9bd735ab9f367b41fb534ef1dfc44e1d7d62fb99d9593cebea380e8764a25736fb63b4b2b6e93cdd8e56d6a8378ec8761d11ffb6adadc0fe7f67ffbd746acd615f41ec9451a5492d1b72af1ad57aea5686d47a05fb1e979eaf0bbe3df96d1b9fd6c310d932adbfb97db9937b85bc0b1d5f0ac43aef40d62cf259edf9a1b5dbe7b846b624fd0de0f79a77c792f8c47f3afad626d78bdad82f7ddf5559afed39e758cdda203217fecf6fc6898a6d75eea5cf132f5d478a718cbc54283d6b9a77758f93ba8d0e6cc617d9ce874fbd40eb2af3b9af1b9b82aaab4feeaef392e281334ec96acf5c972573eaf0c9ddd39bb87702c701e9b556313d9e5d7c4f6a6e91eee9c42540ef582eb2df41ceab135c33e7022e1f962d3738e7d4be77efea98eebe778d7adfd3357b77f77d52c714da7d8fdf89ea39edc5466ed7a61f3539b13a0e58129b6189f12828ce729baded0a886935f1c834c92136665dbf1c6eca38dcd717c67f62af8128233fb2b5ebcc2473ad22ee8d13e673b76fec14da1e7ca562b22f047fb413075ca6c31cd61bc4b4b2f253bfd2f94f62bf5071bf7ace6b5b420a90dfc740eeadad9fc896834df9819ecd0a122fade3ce7316f283d656f00f4d3e2d53ec3cf2881fdaf3dd0f9e24448e556cd173acb820f7b879e84d9b98d281f2c9f400788fd96465cb2f94df7b940f32cef1dc7f96af95fe8efca9a37f9fcfbb5f9bc468158591577dd51879e5ff63efdd9a1455b67df1ef52afbbcf9a8065773123ce436b098a4a952009e43ffeb143a04a9444998517f0c4faee2772647253cb4b75cfb9cec37ee8684bc9242f23478eeb6f8ca7bd12234f7ffe792d6fb911a30bf534fb59516bfbe91df247296fcc9e5c737e161be93866e59cce3171b4dc7522aabf16f88a42dd961ef4cfe59d92ab98584c96435bac22ca9f0866f8d8a5ffa88849d116b88853a9fb0740472b3133017fb994893dc7ccf257b3b787f89729e41c161880607bacf3071772e50daf78df28ae6c050e6077f7d6fe5258bb53f150ead766c47440136acd9671f8aec9f544334a0760d7a9f2d5181e76f4c35f0ae1b81bfd286348fa544e8998ce7810c577bbbc13d9585bdad3bb0ab66ff995d12cf0cef77e761895f7c53ca9b7a36b3babf491dd7bcdf740f5d2b335e7afd15a1e826ef83a15c97b3f23afabbaedb3aced58e66cbd9cc19e64f1204aeec74a7ba85ac98bf4f884a79bed304f139f50994a040c847a4ec9bd740b3a5e8d5f1ef900346f85434f25d18061f56dfcfe641ea84f73aca2c2fe28fab135f762793bb2192db87146062ad9fa2d0362104724db9af6e39ce72e427b37b6e69c3e179e6aa503b5bdf31662c8ce4c87db438cc3401545bf3599cf5445c266271c289b33f4ad05c36e342ff4efd162705bdda6652fbb1dcb8cdf4b35acabf3f161598dfe3e3b27177805e0923dcafe02f8c6d3bb6ac5da0aeafe6f79fc3f939be83ed9723ca8dbd49d0df8ff8267715bd55212f6945f1eedb95c8b1739bcc44f69539f6ef84e1386c3c575d367f94765c716bebf49a06b7f07fb088f210b944d32cc3701ecc1f4444f2ff57e7aae5e62597e6fea494d3f6244c02634b327b5fbba237879e95b249c76d8dfb696527dce5be9826bb797d86cfb5e44b6549fc22aca077d633750354a9f25ad8eba9dad273d6e5cb61ff3e26ef4f3ce26707461a08661105b73d7ec7ccaf7066a71673f2e868e58f14aca57fb603faaf904c6c77696ed259efa6e66cdda4a851dbe0fb15120f30ebb75fb29e42782cf6304b5d78f7500f22398f2fabe0efddd3db1fb40cc4e2b7b023de719fccf85df03f87419cbdf257229b332fd59acf45e0574ce2ff14fd0a17beba05bdb4b4aef5087e312bde8a117838f196c1003b53777a52cf45be3b9eb8ce91ed6de759e4f9cc487f03bf818a3d85b66a43a178c2f57fc05791e117ef88b76239e92d53d6c8b9ecd69d5c99ee8d9013c7689eab481c87922dc7103eecb1ac4643be80f8adafef9cc31587f26d4422f7d18857c60f5b59dafa23ce847bceef286bc41ee8f7809473fe5f941355bb11bc39ed4e37f78ad1a6d8179ec44949e976b004fe37cae737f205f926782ae1b07fdece9d233be8452889ba1ffafb2a7402254ce685139a6268f367d21b1b2f7d5acddb4013e95f724c8df444ea04e5e195ba4a7d85672237e94b12312161b4e6559b40b9cc9316fad64077a7fab4feb99c9ed61fd46bbd45f64a11f0722d880a0ae0e7b0f52c906dbb21874093dbbe0973201238ce9c677bdaf4700d38bf2d0519fc5da05b648bc957118f2da577e543d033911669b7d4f6a732cbeab3d7bea8f9800c6852b653b9e7f927a79c386bf0dec768e6d573efede8f51dce8af4b7ebc9bd9ae497750b3e0801bbe627a579dec53619fccab3d24119f1bf156da8edecf67cefdf1bcc1ef37b38d14a3e23b43c35df0c91c7d3f9131eb5ff462b4f56339f59e4f6a1ffc52ffa3a902f4e0b410acd7c4d6859983096053969f8f75fb639a0a05a06f3523e5773d1295f8ce53f1f4f76766cb00d9e2dc789fc503760c8bea825e0b09cd58b439f07a4792b7d518004ff2dd93dab53604f2068626a5f9c7b5fe3c11e9df2cdf836c3c1b45339bead84253065bf4ea32d801db59ac2d30fc7fd2d6b9cc4ff8b8e85c34cf1609564918a8e8e99dd150acadb81e0ce751dc60db48a8fc41f7c49532e23a5aad9d7591bf3578d7a23c5bf78ef56c3b669770e3d23678f28c909cf88b9e2d91adfd2d3c9c9e95f4a836d179ec24d05b79edd5fa9a95fec44596bc329d93e17498bd6c54ca2f3ae38ddd4cacc5eeaf4e7cf80b37be14134bcfc14bcb92a1461ccb8b2fe9eeb5657d0fbafb852d15fd436c1ae4c039cc9ef9e3dd6cd7fcb8056f050c971de416e7d11ffef2e4ac131edb65018ee8f19990c6f42e8478c763d98ec5e600869830b5d1c1979415d48602ac6b1164264bd2f399d311fcbc169341756290d5e5ad57b49b367097765e2c12bfa587f8287f81e535f6b27786f9b9f35b864ed7c0b50332ec0e16a3eee02ff0811ff5e12d32f2ee08ebe1543e3af3dc4e6a6a47e7c98a068b0dcbd986dc2963e799f364980fa201e0bd1cd541871c2659f4639d307bb11b0f56a54fbd1143eb2dda91eb18a1b670f73c6612fe1ed16755f43895dc35d820e2f17a08b1ff8a00589f2a5942dc70e97f8b9277d00b9508f79084edb63055c921a07a9633f823e8b643ac1a4a10a36dd0cb12bf65809d6bd8d536c59a416c5d97ea9709ed4708546539e37d0dbb5a7d0d172c2775201fe7839ed2404886d2633a58ac17505baf0b18a1e53e4da490cabec47b3ebb17028fbd38f3fc86edf96a923569e7f4fe827a95b06e443e1e33b763017d8e1767c6cec74c79d32096e91d16e23e5d5745c0b6be66f8535ae22d3a87323ec64229067965b21eacf4a51f13b0d7be4ae7f5213faff18d5ed9f6c7d1f9ace7de5f7dd78bf4b8f5a436cbbd7198dfce85b50bc8b1cce2e6218fc5fc647e65ccc084febef15a98ee43e2a91396dbbe64bff378a0bd4f69aec7ea5b305b373d6bc9691e5cab215baedd7cbf6771f099787a871eef6bbaa8ed23d4a2abd917a8ce51d04e2d0e67be182c36c2d08c9a7e11bb515ba62edf36f18458bdfb6da3b68af4f831cc09b1a576f06a2b396e21c897f5c5cd767850823286c8d9000f766365393b2402e480509ddaa9fbdb64a875e4527d066ab8471fc3969006e699fb702aa6a7b966e44715c7297b81229e604d717f713874ceaffd8b84525f42257ff6004fa2c8abdf84506f1decf6c7776933eeb49c6b9e6d0b3f9a7fd81c028908bc065f6947e4583ef3f1734286dde887bbd2886ba71cfbe667f6125b6b8fb03a1347bfe5d56fd916626da747b838cfe3efd80cb710e7a1b63da8e34a2087bfec0b1738b5cf49a96b0d3906e718640451e6b1b6a5fdd5ebf25ac8f4fe714499d2f891ec239fc84ecba74bb638e195e904df83e70464c1e1a7320ffd7f22e80b8825fc14bf1ae2d4a6c71805c2999c83f33e7f2aff54f26f67ed9671d41ac1f6e3bc36d7e4b82ee8b18db6f2691dcbf677f40b18084cd6f060ed1a345cf33936693be8ee79dcc59cb5b3e5a7f7ae02f146cd39d6e2c1964dfd6074becf469ed8407d64df577960e438976ca0967a5ec153d37197c8dcbfb73ece5d2ee28541c7e7cfbe3b4278cef6e52d85064f6cda5c1be3ffa331efe76457f92a20cf5bf65a221bf7a53e8f75ff67f95857fcee566b01986dafb622bf9bf322b6521ca97bc033770f106b17bf9a42d6b473cce9fc96da028b5497e3cf8935db2ecb619264ba5602e098c42ec4677bdd1a767c3c599f62b8ccb9cd4e2963318267f13004dfc61862c79af7c4bec6f7ad1f25d6d3544cf93c003fee55a5bf59b1b6421e26c2d65f417df51f78296cc666d6e8e7dd29f30e962cd6fb5817867845ca4b8ed7b6160f75aa2f17f4ce7276144aef39a577aef3553a6ce587ce5fede37eb233ba7fc47d5603d005ea74cb7d59354c21c6bbf8fc84a37351c740e0fa09f0bf3460340efd7f820dc37dce5804dda1f237e7ae033585ebb6d015cb698c58cc846224ae741a775dde770dff55ed3eafc749982cafa06e97aae8f1316bc4422e293d3f3e9d7f96d95f31da6c4753e5447e70a69bb4ac4541c755ccdf8cd2b1d9931b74d4cf96effdec3054417eda1fd9a0f2c07e3cf5a1156bb868877ebf93be9961233694af27ed2f19ad8c245033aa1b2de85de14b281f2cb2641453be1e1cb033005d6e06b62a97de3329e007c481f48a36c1488db60ce385ec289f82b62b88e74d3ca97d00ac4b35da42fc7e9ef13aeb959ef26afbb4bf9d47752afe19c72e7bb6ac277ff27c8e6d7117c4a8e3a9d978e6e802c402acc6fc1d68337326bc8f4e8e1dc8b9ad9e5b8a2b3a26bfaf1126d3521e834e7ef74a3d4b3b13efcccf03d904b08e807f66245eec9fd2e0f99cfa52b7afb5ad729afabae833bb38bb2fe11d7a0b3f1fdb1bcbb8a3dd60057bb39ca94672c60670fedea6f404f533c75b570aa39933b83c8615dab88efe71ac6b943cebf9738c974f31e14cf9cde98f3fde95ec30cc273b9c6739fdcece850f67da79b40f3f372f766f8389f0a1756588bf18898f7b97a4fb312abe7b82ef3c31dd8fa64140fb9901d66a27f4573a31edb630ea8fe546ce6b25a3116d81e1df28e2bf3f0b7265e771636c66e2aba915b1f18bcfed67a51dadf083501e5f7c8eb5954e3cd54dbd67f1f0decfc4f77ed6d0638ee2ab1643a84533ae72359ae7bf660bcae23a065a0d0b7533b31fd3cfe9a6938e22230c208f456e0dbba489d90cbca9a60354ba58b5e7a622b0d8c6dada42cd70adeedf821cd3a63ce99772df202e6a1337f6a57e8f092c2eedb3bc0aedc07df18dbd09fa67eab437c7dd883faae667c8b47ffa7bcd1e57f8d503faac5bd9df783df14ace9cc6ca0bcb49a0eb17d56d50cd35a9e7ac71ffda5472abdc104b8ec1b6f2bc115e017f2bfa039be962b04cc8bb0d79e00786cbe22f060d9b6c3516c88371267f04cfeb0fd60fe8fb7b4f559618ea000f16c3b25eab48ef04e2b7984c5093bd9fded5a76da0a2039343e410ec8e1cdf7cbc8852fff094bf2ce7c9cb6a507feec5b51ebf0f5bc6355fdfb66e872d30c2477dabac89037efd25c8896dd057591e7c7d3dc326ed5cf2cd52dd092d03154503b557af2db638aa61b469e2570e5288eb6dd5e5ab48aeea90ee650c7c87eac69dbdd78fd68045d8945dde8f7282d2576792fa8723df457f9e62c0dc953760378e95a6de5fc3b60279c9b17e1cd79a607b0ff14cfff5cae29a9ec6fdec2958b871d015d3d7a5b86bca62f3754d668e863cd7d25d1cc58ee5208b1e8e74b5f55b373b8bbd05f54fcc908eb1be76d22bd80cb21dfc66ef93e134d9f2b3d4986b901f6143577161e91bd5f7967c8d00a7a4be1fbda35c5aeb787ea9b71417d096cbe40d994e8d789c6c26d23d2a30c28bfe2126b4168befe46151e353aaf1ae73eb448666b619f6ad7acc6831277a671c0057f43c4d242355a9f236554bc67908f182e36eb61faa8f49a1530d6c88630bb10a77c4eed50ca55753dbb84ee8b83611c097af3e26af92bbc679b8052c4b05b01e92f7fe7e0ff5fbe3a7f46d2a2c82be16ceec0c78cdcca6baf413f45ffbfefb9b19a506f87cdb4b7cea1f2ee617b2f9e1133d84d57e673167c1544c5e9d71b997ef66a68c629c068ebefe54fe68d0fdf80f779ab4862ad311473da835d9d4bdd5c7b53eb520e7ee7c8c56233604ec332f9ffaa61afcebc7718e1d8fbbaef85a375b8e54379d75b368d4ff99e23c9346fd28f5ccecfda5352eeeefd853e59dbfc8f6752cd391da3be733aecee7734678adafffc2d3a7ec65d99147eae41c4e54ea3730ea598c348f1764180e4b613f34b3e23ba0add9540ce977afcf3f3fc38c4abd3266492be2a2b62c279f48d81c14718645bf39d07b3dbeab1bfdf09659fe929364a85a69a06c76afce783d541f3f00f7754182e174bf7f6d0d64ef906c5feda78ff1b456fbde6c1f7c15eea7921707ddccf316d97664b78306e6b219a5d81152f7931a43d559e3f1740c3f72fb6af712b09fb3dc467ea627e9b89b09f51c2ac011029ccacff0f21e537f598b9fe0b14e457e32e01a2d45a1c8771cd562ed5ef330075c01454801bb602a6e47ca13d8ace8f96536fac7d4a7fac1f3851a4afdc195790e64e8dfcc04fbd0095e6d2b75f250183dff04fc0edaff991a2e77f43fa9d59cc0db619fcd099bd1d3b8cbd681f267bbc5bf4702d4331eb1e7649fa4996366ef7cfdb7c59e06d3cf6b01b29cdf6cc7e40c66f739b7f6c194c726535d782aac9b78c5f3e44d6276a2865d89f9400f75ac81d16190bc1c7e3ebdda8f7fe069b67d89adfff296e9fef559dcbe4ad6c7f090909129245eb7c282a8dd97e9bb59eaf43c0fb3913f9bd46c10f92be0b5a71f43fb51863a556655730ff60d6a95346af588ef54b6ba249b2dcff107ca0bf61bb05d9861ceeb2047d8095fc1bf6046359b96c0e8b23f009a8171c067ca538f75e7669cec8861231d46ea9ed98acb7840c024817d1a9821d4c429e5526657a9c5a556b1a49cff8880b90458cef4de19cb43754f65d5d2175b6fff223d3df987cd0ee29e97626a4b723052dd35d462571feb6b99b03a17e04b6bd4167d3733e916f9d7cfcbfb6135eabb9fce793cfdf9179eee1b31dc45cc22d46d29f36d7fa680b72ec939d4393bbf2e3bbe2ec9ab2d7b5edd3e0638fd541677e5a13aff7c8d5ae327bcdc1ce81a79208f859e2f0ae9ac3cc71386e74ff906b3216e872cbe8af13635a2f4baabf34fa781a72bcbec9c591c3b39e3b628a89bb9627a52d6b847c6cf7b191fe4e5abea7f770fed153b83fe1fc37cb37c59081b3727526993eb326ce67a9e7ab01252ef948f1479382cbe19f8c898f18032ee9ac549027fa3b2a402f6bfed6b6cc5da6a40e966477937952d46d3de7fbd2e15b8d35e722230dfe313f09097062625fd9ec823e5e9b6f3d2b79a63aaf35c3aa68a6e289f2323f549867a7dc0ef067f6133cd5e5a83a7d9344d86fdb1ec2fd26c38857ce370a83eae0305788b60b77418fbb0c0efcba314fa998a82ddd2027a7f8c17eb359e8af910fa3cc6d97c4a3daa07f42d7e1e043af7233e5bd7552675ac9aa5e7fce436f79e1c3ccbc24b5ce6c9b35a0d07d1736af914451de1571b7025f65eeba7ecd17b7ba5115fcd4257b2e459b7a83b1bc2ef7841e92a24aed349f02a92038851417bac2a02b688806d417e03da6b437c237674e1d5f6a14e952f89a1a76654b7968345766ccbd99fc8b54d1d7159e5080296701a748b9c7e7de377893ce27140657c293d4f17ec3e27fd55eb98f0d89bc6f8b08d3eb7fb35fad2bdb1229e8e0770588c7066b73fb7a72e840c7cfef57dcb595de2b71e8b9f3a33b61c3b9dd4b5f5d398c36abeeb2fac5fb5ef9f62c795d80e7cac59e5b790c43da5e123dc95ed8cea3c2a89df4e6247ab7bf8cebd117dd508031569818a3617d6a07df71a70bfee6dfb3e966df1dcbea38ddf37da9fdb8c7fd6f20d59bd9a9277f74fd7cf97c8f7d3b8db8a97dcda8f2b65802571aca3b2d8d392f7537e0536f3a01b95f33ca24f7e0fcef70c6ffa647f044f60bea71bd7b126bf9cdb13b2f525940366db191e724ac706e50367cff369df38f7a4b6c0ebc2d5cf02c1767a869695c3c9b3b5737e8e07f87db873ceed451af405564387dee7755dde0c7727b6d3cadeb9f68fef897a5d7033fac3af7c6180adf8b21a24effdfdba69937c4a8eed039fda054eb1beb7c3e75e362eb05139963dcc65eaeec7d39f0766bfb6b6c64a0bb104b15db2befc998d9ffdf406acef58237adbb3b59dd76d533da5aaa1841adfff984dc5dd10725e95259d9fa732dfe36011a5d86cab7eacac200eeab9f15c5c7edf1d24ef4e11df34d83aa23c352cdd3490f16e5a6dcb40dacbc4caa68e60bc3a42fb152932b204f43e15b577db92912306dab497bd4f22f46e44c434acc9d68a51e8b68ce7c0a1ef6b0bd356b0c5ce20f50f157e6b934ece60a2f72df94dda903786f99d63db056c7e479421ae06f0c115f9bd88d1a47fbf376db9e919597bc77c94fbca5fcff00ab92ec73185b80d6a50d6c4d8cb83c5e083ea0df5dfb0d9fec04ec46a4b9883c550b2b63309b5a98c5ab37d019629867ec632dc5fb69b50bdd42f7c0aaa95fa0bda8f229e5b8b617fc0f05e58fd6142e5ab029783619e1904c78ae8f5213e79efe704745b9f61f8107a66cbf8288851ee1c864e1d370bea1b037616edfbd546f4ef4abf59a591d6e734ba4c92519f612907dd8cceffbbc7f7c7cdb33dbcff90ec468abc0ba436f19749388a75d15f69c45b19f2bb6d6d672bfdf1d5de53fafccb6f8587573bfb4a4d5c419f0e92634c9da1b3914f63a3c41dc39345029294dc8bc9160b7ae84a2179b521b6f8bcafa2dbc4760dba559dc7a2961ec323ef51d9bf38a3071e8b58c6604d288f019b6c07f607725d9df19ce5171a906fe7e79d68e668c46d19e99bd949fcbcb3f55a93b9df427b88fb02df85d6a67707363b737a7efc2ee389bef473eeabca7206f1ae8f7344d78ced33f841289dcd54b49c89f5efe609cb4984f88e39e0eb9a8f737a7671b7b3f15a1a19a88a30504321e8fffc3ecae5d85db437d894292fdcd0b573a574d318473e485e8a38b4fe9861e54d858569b725d7d11297f22505279e94859cafa77eab19df4875e6fafdfeee00269b891d45a4eb839f45e1a5aa39cbf276a7893052b59d27ed294d020f78594da8be0935bee033f7fbd1cf3eaf63c03e17351526a96bb7dbf03fc44c9057bc4cc8482d637369df257f853d84f756f9c653c9fd4ee996ca09f577f2ef775e8c789ff2165b72ccfb20a3bebe769d0ec36a74c2d06d4de8f3a77b46cf55ff3c1dbfc444aee958db11a9b713b7500fe3135ffd60850ed8ec806fd16d4d164d3c03616109e8d98a9055bb032613a44f1dd1189848bf74172c3e7be7bbb94f47dd7dfa85737f807bd67e5cebac26d776f8ec733c86f676c86bd2f2fb5864f56426800fe52de6126de3429b813034b398d59eff09f544bd05c874d12b4a17ee4a9ff8318a67ce7c01b897aa72f08576e8d916fd3bf473aae3fe94398e5acb75b4c88a517cbeae5d41af936daddf94d5d9d553d7d10f809b09180793adeb406dcee2ae5ccfcc763804ccfb49f2223d96f10143d5ddba66b4f616fb85172b921b2bf9c8d672d76e4783458111b497fd56f634ec5bdb595f2378f9b470cdc1f7c14adfbb36f83f4fea750cd539f0e8a119a6a312c332cc47712f191eff0d7563ac84d58fd9c03d8021bfaf5cafefae394f00c37a51d699fee1778f314385c594cf6102f919940e61dd56afcecf3458c29e41bda0b7693d761ee44fc07b28b0914ef1486b7d4bf2365001f784af0fe8f0efb0e7100f6fe4d87ea47bbcf0c54e8e6d9cbc75b560a40eeedfebaa3fbed7dac1a27b1093474aafd57a47b08f41377b1f4e37b57a21610c6bac3ea583b81d06b116fa0b71e94959ea3a9d03f8550a6cb4aacd6144cf73b52ec9506dd412a9e8aa4befdf7932ec533a2a7379d7547e1e9ae1f1df3f66f6e3f781390f03277b1a3816f0081762a1414f0f8766f6e3ddcc7ed4e6fdfd94a6e60bac1269b0c8a83e14539ec7f2a4758e53f394d6db7b2ba1c4d47f91064798ac963c88f8ba44face53b3d0efeba4a8c5f3f62c2e467d1f78c1f8799e8c7a966ce7f57d1da483c6f983bf21e7c18fd17640cf15d476ddf3334f7f97b713d0d7d2856366d357670c78c881a4e458a172de31467da30eff110d3c317ce7eaacd0734f7942398611b34fb31abb545ee5fc013f8b75fff1f235d7168163089ef4b87889c729e880d558537c38c34f7ad6757ee2183b2c052976aab8916059f5e5e76dd197d033d523010fc00c3743277b7a6b09f49c4a740c48955758cac84879928305c85a21d4c5e8668b1addb680d64feb09ecb505deb35a7051acada235afc156e279b92b24042ad7a56cc81b5955f8d89a18f40dc8b9aff1b2f5284e0e6fdd688dbbd7e9feddcc56056d1734eb49ed674f25cbd92161b411937064b35a5e8365928ed41a5d4d9370d865b121a3aef2ae2ddc852bc9a9a72a7b5f42945737689e9eaf73e7c66f75422a33bd49f5bed78b01cbe15fbace04f66e649325c4b638b5b3238e3f3f3b84efb139482dc095c26160678049ecf7c77259a36ca1599e14ac3cd59a53fa9831ffeece5b6832e743afaf689c4e0ea237a8d139d434e4bc02ea71c44a3eb315aa7ba683585bc1ef3179841a275ded10d0756d459fdcbbb40d7af45585ea34d09f27b58b71d167761ed1a99cb664fd577c612ab5a7d8ce20a6cf31b3971aed2d19ed695bd7c10bd7196cf81d91be0980ad4765b76df0bce67b00b5c6b43bcf7e49575e979fbffea63a0bcfebc63cde4d26db34f905956b8af333a13c0030c729ed795496853a45da6aa4529ed78e674e48cf98f46a3f52193571a54d7bd48f64c06eabf11c07dea31ce81d578f75710e4fc00706cbe47dd49fd7de0d67b705751baa31a706d40e90b7964465665d182963f6aee2beb26abff59e4eee3f6f913d0f9bfb72e6fea3e738aadaf6c75b2a2b321d4b0b5d294d4e735eb92fc4424fefbd5a7c401937548f118f522b77e337f05d157e9de0e9bdefaf07d31eabefab6c9491324edfba59cb011b50b566d3bc9d7b524620d690aedda227bfdae0177a1d41fe3f60f687414c56ae53c6a0319fd241689ce5299c654eebdd41f29257f17fcd1c8e31edffe3d51c2c6a710e1fa3ee60335844b5bc8a7159bbd27a3ee1e13ab6c5ddf0a85649bd06526daf8f715b4e621982835cdc4fdf837c1ebe01a64445cb2fd1635a931fbe0f4ce5f19dadedcba83f4f03f18acca20a5bc04c8f49849d415ae2dd939fe965f923144771ef7cdb28bad67671833ccc64604748a75456a5f7a0747a17bc99d9cb88ee5b9ca6b8ebc683c5a0daa7de633a58088ba159d102ee46a94f9fa3e7dbac3ddbff998cfa6eac2d4abeb9a9d350b088520c79af38795351d468abfa09c7204fdeb95c6e9ae7f83fa7c167b0c595bafccb424b6776b0a67cb2769fbd96fc973eef08a979411e1f2c376414f76af8f4cac197c8ca5b84daa8bfe9fa317d6fb21a29fc8e9a26afa35ec5d35f56f314a9500fe185cec14142f2b25fef46f9785ed806a7b6b2f755b2c52232a7cf423e8addb67b18b7c6528fea11ebc06e7f507900f0fc7ffeeffffdf0ed21997dbcad360f7ffe9f87d768fef0e7c3c3b7077d16bfd14ffffef7b787f962136ebd7ff9ebf88fc57a33236fc1fcede38ff93a0d1771fcf6f1e71f09d9ce17abf48f60364f778b743b238bc3dbc71fef1febd5e66d15fce16d1724f823ddcc360bff8f65fa87f4af77d96ffd68cd5afff2c3ed2afad732fdd768d0ede966ef5f9b0c06b258bdafe9ffc1db66b62029fdb86243bad6f8db43ba38bc3dfc297eff2e7f7b88d7c1dbc39f8f92001fff7bb3607d0892f4bf84efff4b12a7a2f0a7f4e34fe9e95f3f64a9f5d4fad17ac20fdf1e16e97f078b8f873fdf67247dfbf690e63082e7b7ddc39fdfbfb744e9dbc360b57ef8f349105ae28fa76f0f3a59aca2873fc56f0f637861ab253e3d7d7bb016c1c39fa22008df1ed4eaa3f3dfff9dcc02e1e14fe1db8311d03e856f0f666dd01d12b1393c0af277fae7da8fd2873f9fbe3dfcdc2c623a12f3cda70fb7db4fc20f4916be3de829fda6d592dadf7f3c89fffef6303ef7e4e353f16439db7f7f7be8defea8f3dfffbd5d6dd3b7e0e1cfff4ff8267c13feff7f530a09df3e607de8923dfcb189933fe2d5e60f9f2cde569b3ff63342de367f24333f9acddfd2876f0f8338597f6c5e679bb0416cb5279ed73efb693afb98bf6dd86763bde69fc6b38d1f3efcb9da12f2edc1a424596e15fc65bccdd2f58a3dabae9505794b8ba7d9bbcb3f9fdf92f2f3f42ddd1c3d4dbf3a6a315e075bfabefff3c02770e578c07017ab873f371fdbb76f476b04e31baf83fab2cdd7ff8ad701fc82de3ed2054c44fc97f804873181971627f5fabbf9dafef633faef6f0fc16c337bf8f36194af8785f16f647386365fafdd3c9a5b12d9e2be46068abef3e350f4f7c94f7028daed03363bba8926c3e1e269d85d3cfd3598ace7839ebef3fb24678cf627f4315efecc5eba9d21b627732429822fc9dbd19c3e4b953db405a5a20f89cc393718d37ee7d3f23d3fd7538b5843733ff72544ba8b9ff359df10fce7f56e242504f78330e8eb3b6fd15ecd1c631dd883edcc7eda71457d4b15757fbffe6bb45f0f47f93aec4660688db00a0062f3a94db6335b143db333654645237d33c56706180cc2ea9c5e2e9e4d0ed819ef26663a1f9b8fd968d99b2335241e03221b4e2479ffe66809964261d00d9743f3673e7eee1d46d3c17e3c9dccad5849f1a2331d2d3a8a1707c4ebebcb99aaa45ef7e7ba9a0fda624888d7d7ae9da5202099d1b05c0b7b3287846e6700ef1ef4440d753be399ad136fa59341375c077d63ffb278da79ad0efd6e1738da129bed9d1ffbbb72ef9cf10ed67452adcba0a791b798107fd159068e26e106085ca7066a3bd836f7b9d3776d24b83618e4b7ae83226c2be26871b48fd3f5bc3ecfd12a486612150a8dc4e5e30b24f2313365dd44c67b6dffab312a9a48d76e646da8a21c0efafa9e251975f6b33e39cc6cfd502f243b506be0ba8bc7f9c43642bf4f15824eecc7f266d0c339d0c7a2fd979fefe76e7d0f7b9b1db61fe79358fef81be6f2d7a0d749cb7d5334e2daba30e8bbfbd17240ff0d07ddf59cd201b60dd153510e4e72c9100bc03608b68e934377f1f32ffaefdcd9336265896d6de749693ae891ad9b3fce41b15589e0e79d10c738f11880d3819ec921fdb7e800b0f1a05fd04e67e9490619d0efd4cb67b6c61b62af85b6b85b14e6b0603ed31e7936acf6d4303bf1cc6600a8bc3d2bdaa51a891fb3c2256f660792658ec622f831223056ce77868b4e9d2799cc69dc91c6537f3bee3ee6b0367db6be23dbd879ac604a14d88c4646b1987874fff7e5fc9fbd56a7edc76435eb4fe6541119f470e84a68e149f2c7a8dbd1bc78bc1d80a2d34982fe78eeda98ce07409bfcfc91ce15e68b2018a373f05a2877258bd2578499c3acdc7bdced885449f5d93acde9b9acd6d99ae3188abd3367af1a12b6d7993611d08b25d0df0903f3e4edfd58de05ddd241b7f357d11c12af8ec61250e5c684b1eebaf3f56eb858cf27b5f732c7f8641e2c7badd1f2e776ccd6863be545aad86cfc15da062ad9e0ff59d3dfb0a6ffb386e7d67094f7e69e2d83c103f8ddfcff19a5279e25f72b3bb451a1e47c7f7c6ab705e91fd1739ec4dfa7e794e3fe44d511a5ef3fa4ff5177fe47ddf94faa3bf4a0556ace5bae419e038b635b1f465d8db31c74182c136fb078dc8e2488cd7cf76cca8633e2e73267cdf2f175f717d8f62fb761b1c1dddab3f9e376d4d273379709c4dbacc6dba03f5e8cba83ed68f1b41d2de4831f8f778163245e7fbcc352b67363251dad8cc360b15f8c168f3bfacf6f69cb11d45ecf0ee5ffe79e9194fdcc94236c53f50d30e0cf3fc730220f2349a66b94cf6c83b8767bebb50cee33690b67e6b0f45a1a19498ae049c2d979b84e2719491a712579834d71e7ae74e2af30c1ddb3fd89814a529ff62b897bd7d1a8587eee391ebf236f3cc9483055593e5b4716bbb473f9957ac39c8abe634f955b773c0f630e1c836055d97ab12c707bf9c5717992766078c55a8aeddbdbb90e123ce9faf36cfde505c4e43235f562bfb84fa8ba9cb825aec0d93987be1aeda01e4d1f6afd9f7fb724e7d894c3425db9791d1c5efff92c3d533ab66aef36786d8c4bf469103f26d2c57562632de893e1dd5f787f712efd16c3a7b8d027e3059fd30fac65d0d74257faa41fd8c3eb7d004db434f1e23392bcc53159058ef6c9fc805f90b7be41bcd8b8613dcae773d7397f06d9f871eab5fc0bbf93438306ceef67b956de4abf89ae660c0f7c899d8e30722ef0c992ff713c9f85c879d1e7e3f06ce5035bb79fada3b30e31f79768cc6f75ceff5ef1eadabbd1c6757ede71c674f2c9d92ef85963ef4bf3e0e5b5235852966f76635cbc56c9c577b1b8ea8bfbc37f935076f9f75abd8ab36b4befa0796d9d64887f74247187fb2805de1a430ccdc6e7b18b23a7301d287bbf7bfafc44d520de60d42a6b37ed662a4a7d15e53ebde7256157ac9fd502552f1a2f2eca0f0b163f23ee79ddd68dcfd4c68deb74f6679effc9c7bcabe413798ded6c4fe59d91840e9e49651122cc6c259d3909f12383e0986c31aac5b0c749b95e90eb81e07e153dd85b3e47076adc93a02b166680d0efff3c7d5ee8f039c87951ff6a2485c4ebd3778d77d8d1379477f86ad6365444f97418a828325474705b5ae2f78d9dffcfaf51514fc729ea4c96f52154a85bf7ffd678846ce7b5747279df982f17629b193f8cb033dfce56ff2cfd7353fcb36b67e984c5625f1c0356e5cdc83ea297962262476b1731195e4beb78eafe623f133a879611faabc92eb023d68fd00e83a88c37bcbfbd6884eeafb417a8cca08cb0137d71ec90cbf9b5b697cfd44f4abb81aae441571667e6e57e67aabc9bb58abd41076ce19d1feb04399d08f0fe2fd165aba0296de7b58c03bdd3fd2ea315c010ef05b9d7427bd331887793ae252e3c4916fc1695437ef2f9c25ddef76359f4bb5fec4334d6d816492dfee29f3f3b74ad1c834c587d9edafb9fceea8cf4bc6347130cbb2dcd1c86a1eead8e65f4d376857c801dad0b9899900372746f9fea6ae07e097a0671576885586dababef32582da4e42d56402fb362b49a39bae0af88e3333ceffcf8fe3ed57bd9dad2f61329a3faaae82b46eedafac7cc6eaf2692bcf16c79fbabfd5c6d2ff1d86e74b91fe4e88917072aabc74bbe337da46d623b0099f344d73da317d33b255011602ef99116fa128a78fe5ac2623c51e8add01e813eb149bcf8bccccdf416b2b462e6c239374f3ec74325e39eee0993a9aefc2e54bf4fa086a9bc0553eed9be580d826bef29cec2b9b955743cd8067dfdf1a41fc851c109e6340671d54db934f178dedf3f2d27b2dc5a142155e6d8f0ffb8ccc1e4751424811a0e3c29fb4fc83d558d3a64ec58fd3f329ed962125ce6e37fc758b69ed4d6aaf1d0fbeff29dff77d045113bf98fcbe8adcece6fe909d5a72692bca57763c0642f93c750fef3f721bfdfc0852590edcc31127697a0e89fd7610adeaf8b7067fde3ef278729bd431d4cac18c510c7d8a3b229bd4bc17ef74f9f97c369dda1ff84ae1b123f26c215de754176a4b2acf80c398d02d9fa7d247c559e35edf63e70b81cdabb4d6f28d720967701e4152a7b3e37cd5b75c4423ebe4c6f4688c1fe9925ee424e3dc9087de9b2ee77e1bd5d9eaff3d5f6cf508bf6425b4f9523d7d1d794a6cb9aaf979e2f5cc292b863d80037ed75e2523e96cbe9cc1e146768e949edc3d456b6331b5fe5efc51c6736dd4b3a6eb228e88ef65de5ecfdd278baae7345b72f698e8d7f248951293fc5743cfff8b92bea8c40de38e5d157e497c89384cda9ad40d960e0e7d65769ad9093c16e32a97258bfda9fe9b5fc2bf60a65e5c716a305d00b2ed37af12eb073947b76e92c07b9eb74d68cd66e3fcff53355c5acffcd77544b2358026c7ac00ab8697e17f8275689842422cc7af5dcc7aff2753df46343f3eccbfb79898fb98e1699805b8bf23bcffa67e319605bb96a5bb836a63bee82156d3b53e9e78be32e686ce7b4e8be7cc556c6732b20d4b6cabbfc2a2d58aabcf75a98f851485cdb20576cc417ec3a9d9daf82afbbeb49576cdf17c653f1ae5f1dc797f75ec5368a58ddab5f9375e8def85057fbd25ae02488154e3fc981ebcbd2ccc1e165facb288f3cccba72e20bdcb7dccb9299f4651e0fe3756db2bd75edb8df30617e5471c5ec82c59dc3fca237d18163e4aedd3ecc983f79835bda2ea8ec85b5dfda5f92f92e8d13357ebbedec9675f3adebeb5dde17a2bca0f287e91810f28dedcbedfe4ebba711cbf954c21aaf63bfa3671f74a05be72fa1f695f3795e0eb18dc87030f156b5fa2c97df79b69fa27ee1efe8aba8fb72f9acb5d9f9ecb609d4deecdfe6f7a9edfd0a3bc68beb18497045063ba617036a7c2997cf51c50b3eb0430ea67d59a7a8c9301195f767ce7fc4577978b3db4ba4cafd7a1ac41779d7c1b5313162b2c53de3756ad1bdbfbcce67fd61524040d7773a62a0a2c86a196def4bfdc82d2f46392aeac25f9623769e291ecbfdeb37a7b3c6761b6261ee7f7fd8f6591a8d80912ebcd9d9159fe6d931243ee7bd3896f32bbacff9f3ded20f379eab0d76b41536cfc4f79dbeab856d6defdafac748d2c4999d4533fbb18aebbbed9c10fff27c2a394d2cf1f66ebd1bba818de36b77e8116fb0dc2bf2735defb03866d53f6fbb44db3a1e19bfcba81c6a15989717c774135fe0b28c02f6f25dc06c5fa0fbce6c7498aaf2cebf72e75e3a93862a2f59bd8fdb65ef53bfac48fc382080f9b01afff3b66b1564b543608b1097738b6de7efb11b831fa18ca5305599b6fdc7c731bb970eff96fbacbdf3a22a56aa884bfa02df5d1672f81519ab1e5bb0f624f9a3a40f47274822a9a7a0ad67cbe22fd13ae278d7b66162dbfd857ecaba2fbf72ee7674fdb17db90faca22cb09574241989df9a94b29a675fe44d941604d7d184510b25f7aeb7252931bd6bafc669089dbdd7ead0fdfecb2fe369c18650f8a4e97d00b64a0b70c95199a6f3853ee15eae62df913081142323f1e2e0d95309959fcdab36ac3bfa9faa4a1be2aae2abbe929fbe2a435cc26c55c6f6329b2de5df45ec2295c99480ca05bbe0da79b8a9bf065ee3155aecec7c7ac6e3e450c490327b219cdb5a6cfd8de7f5d6f9f6a02de0a1fdb67dafe2bba7419fa457ec7db7aee501313b9452e062feaef156f7b4f1dbfbb65485e112d33e7ecb3ad03d9363bcd249a074423fbeea3bf9b4dfc659b295c48b94c799a3ab7e2c6f7e033f286876e33ac6fa17fb68d17b7f7645d7fcf40c95b13e4c96b2542582ba65429927f1cbeb6700e66f389dd906b9c9567f7dce05fe95e50961e84ba1ee3a3fbfc843d036b0c5cbfad1e7e3a9e7e9801c76cd9f727d1f289f65586237d8c23e5d7ffaccccc60993674a5d9af19c2bb2e1e76b25eeb04ae299cd643eb0c1d4ea0a7f95ef36ce5a8baeb59e042a9a40adcc9b74841bd6b447df2d1fa88c8a18ee1d8bcffb1beef6c2de60497aee49d965fdf017fa9dc44a6eff96bb9d1c8a3e0b9efcdb78fcdfd02fd80a157de9c772ea157cbeff459aaec74ab6283fd1d3998db681a2419cdc6f904ba81c49653c8e7df55bfbb567366a811de0f78eb7e749bae8fdea3a5471a405ff79c5313e60c7f82abf2dc61861c7a0fbf51ac428c771f66599b4c927713afbea3d723ad74ee018bbdfc05f1a77cc4c255f96959a73e572d217f947a3af165f9388f7f9d5b3d8bc5ff650bf0dea5660e2c72ccfeed7ef01250d7a5496fbea18cf9c6d492ceeacdfabc3415bcee77e970ed70bada99595b2fc2fde51c53aecfcd8207e54dfbf5f940554b4f05a68eb5eb1317ebe4f45fc22fffd8b725479e7d828c712ea72ccdefbe3055a378ea399a752d935f8f8aeecd391ed04ec58a22f21d39364612265576db6e7c78e0e1805e1cc3154afa5f5a68278970daaec87eb18d35607642f5f04dbf284d3d6b327b5e3d915fbfbf9fc1f887748afd95e2fc51ab8f62fe4f5007fcaaec5b47f1ea7c07211f81c08bf23bf1c470977a2a72a6dd4d7122c055769ee86f8b7226ffaf2bd0de755de067d0d7041215795f1094ec770962ece2bb0013315e2353c0663578f43047bdf6dfb94253846cb375ba7fd6e20af5e5584abbfc7e8565f19d477f024e13e1fb4440e4685d97bab6f6ae9b53aeddbe2dceaf128753ce59bfd6650ab04f76eb1df97ef7a0f54f96ade5f50d44ac9e596eb685bc8cdf9e7fddd30afa94a3eaa1c8cfbf2152ff25d29dc79d2e650e3bd0ad393f5d053b305f84b2fd26f27f75a3f37b53cffabb415c444726d164749ef2f960b1410370ac6a35640dc38b8d51ffb6eb58cf05a0e6b8d2e21e6632229cbd915ff78ad4de8b7f49d2bb0d8c96bb6df5abb2d8bdb40cf2c06f6e6f751194d779d4ecf758c5b63b9de5d473fccec605be4fddd132b32b9a36d20a105d48ccae545609314ab643b2a7ebfd5372e9183795f1c0c8c13d9edd05f5d8945afda24bed8a86578e3d802c26a9ddddb0e720015d7d62fdb47eb7b162b076c05d7749ada3bf4d06f1993ab36d8065d80aff5aabdf178ad2d2ad7dd3c2e72a8e2d3d033834bbd390696de4b1fb7c46abb2d22782d7de93a1d32b28b3ef476a0ca075752f6d81423ca57aeecd9f2cd31763e5d4bd5da78dcefc4758e84e10bdcf2cce5b816d73108c4bfd88a50e84b8defee928beff3294e99ec0fb586eef00597f2fb84d745f9aa7c1914725ca4e55e2b38604733b17d5d1fbe20235a7eac6c7d89801c8e5a5a78836e72539cedd518e8f3be76a13e1ec36e7fc55f2ff831596109e52c1ef1cbf2f3c958a63c36f15a2cd1659fb9bef36c3109fa068b57b95d0f3ca1471e6f097ce186f8e8bf23b7edbe5cb5dbf03c6a7c478ea85cd1fcaebd9c5d89f13981fa5edc14c7b6c594fed579f1ffd765ae229f8ed2a7c53e4f6d65ebda577530883367ef0ffff27396efcdf2eb263bdcd7422cb5233f96afe4c555f1b1504753b27e83fcd809fd954e26929c5e8d0b95c8c6875aeb78f5c5dc9f62fcb7dd9382185ec1bf683edb63351aefbcebef9141125fe0b5af6fbeebe13714a8e466199dc9391bf276c586792403f39ac6d915fdf664fe13a86f7d6b1ba8298d785cbe26e218df1ccfeeb23cecf01aef3e89cd8ee57cda0aaec48e1faf1fbe86c354cb11d249a0dca62b36e4656143aed8848ee55dd55315e17a1cfcf15cd063d0d788e7a0cde576645bd5fc92177e2cb77ce93f91db7da4135857f2ff7f517eab6a526daeda2d315d2315e5be84cee39cdec8bb91841686b007fd0e4b19cf6d66fe8c2b32e4f9fe4abb78158f13dce0f73ccfdb0b7f405bf4d4ec37f453caa59a17e3dd17f2ac10f723c4f4be32ec8c30df23bdc308870cbfbb4fb6e65d88535f79bd5fbf8f8b3d0079e78a2c7879bd0212f4200e93ca993bef9a5c13b37e4631c3a12af5a79beed8522628cb488c567ae2392865a5237e81c6f97af8d7e3842e9f1195f22f744dcfbce59c7502350bbf74be9afd8c6776fbc3ea6b3bfadc959c8b5bfa7ba17bfa1bfba3e3bbe2af387b261c6c6bfd697126143d0b6ce56beb1e1312e4f22188833e7b0759de6a63e677ddb3a7cadbdbed4138c736ea7baabc70afd8356a77b0e0896599981bdf732f7ee489bc349ed91b625ecfcdabbd137c3f1d3fbe31f7449497b07677ca578e0465546ec15faab561f672232669701507a65c8b43d0478b3be5a5868c7a73ee1c6bd7f1d46c841d72bb6c5bd80a7b4aeaf5ee92a5a7d77c73b567d1cc6e0b2f77fa52b80cfd253fcccc6e27414f4f3da97d5bace5c99a70bff98df44165c15b751d1ccbb971c7f3dc3eab56a59a6e7dcf5db4cae74d0e86a38877f016e23b28f4f8fedc7cd6459d04f7eaa1e05f4103f7761a4d7c91d7ec677994a1cf719c6f6cbf613889e860b58c7c66eb2c6e5d55728e617dd35c03559ef23aa937fa46c3d017c8cdbacf4c550e96aadca16bc3bd732b864be51355955bf94ae28b803b48e558826f1c97672b57ec3ac7b47abbddc38f5114d8d76c6f55ff804141ae63c1d568e5801dc3f218bd6df17d32804ae5fdbb7c57258612bb67efe4710c53ffca39e2b20e8b7303db9492e25c8e6676f20176efcb7453c3202962b014c135014f74e7c7447833c52cb09178e51c9df4e3dad96ad432423f4ec22bbcf0b3b63bbfafeffc2bf695cfe67f2dc7b2dca3960138a8b36b3958d5bec477db3db88f95fb666c5e2be1567b4e8863d4bfe31e073bd3f40ace45132b490bbd38dde11885be4428efddb0f24fff2076d5afe709ffa2dd45de78361120873f4657301ecfe760ba761bf912ea4d85cbb8d09fe4df87bec0b095fe5effa02c7a2ba3c9ef010b1b71dca880b8ab4ee84ae9aeee6f2ac653c6001cd63b435504ecb0fc5aec840276b4ad6befe74e5763763765bfb8b3ddc693c05ee40f1667c6763ad73df8199ca2f6c1a98de1aef176c5c893c42fbe1b87ac9c1acb6d466a987bad20f1e2603a53c9a62173ddd52ff045564e11ec901d90b57d51276e4b6bc60f34f61174e83da5133f9721f67e1a2bd2cc0e4e73754edb4910ab9fcb3dd72107a63fdff4bcee496d61d6d7e17df57da8af3dc334c6097682c34824c475b47bde01b8cb179fffdc1fbcf3623d9dd9fa87d742822f91a8f4df953e6d79eb02feef661738c66106b196cd38bb93b9b077c3b8beea37aff0c5c310e4b15e553ef5ab7d4ecafaeab7e13b311c3cfdafda7a459e246cfdbe469f2df49acdb5fc3ddedfce95926a7c9f944dfd7c5e3a95e9d9fedd66f73b503d858d61c0df5defe393b28e77da928218e56007bddcb6f2d3aeb49d6727074f7abc2df6b2b09fae8cdd6ca5ef6ef40b9f1debc4ce565e4b4b0235dcf8b9bc047b7eaca4d7b17b4a3b6cb3cd7d36dc665b7686236c07f9351cabca86acd3bb2077ed2c09fa11c71fd748d00f08b6db5b7cedaebc3c96a5a7ca07c0116add6ad33e371eb47425b48592d512b9a6a7ddb24f505b84e3d25f8961bee89f48e83defafe83d7143be7eb556b512d3dad93bf5f6b69f9f0b3f56b637e36e5e9e27c4a9069292636e3f085402f9e5b7f88aaaf3d659bf397ae2b6c65b5f229bc0ce386e26dcbf07ff16db40d99722bab6012592ddf8b6188dcfda7ad7f3cdab35755088fb468e6db4a0fabd07b5a38c69a05e8dbbf9b40f5fd443cf46139633743bdff3d5b0ed4b60673f40597715b0bab88ea6ed02bb1d5db143ddd8173d8f81eab5aedacd6febafc54b990bcc7ff58bfe2a8e274cf758d340ee6e713cd6dfd06f2933c4727485ef9c9b3b9de766c6e294ef3de731acb79d856fb62c066730782a9e59f891bf7e8f4d4b1f22c35477afe527dee24fea918d6b0784e5ad51d924c8dd2bf57c6e895d376d31c457e4adf3fd5079d82f7c66b7faa928fdeee99c83d82f72c9280f4caed94f9bf14f454e1fd4fb3c5cc5f23c6d0b75376776469c96413ca7935ec5b491940877459697df15d30a8ff1177cbccccf9763e0b7daaff9cd79fe3a8f5fbc226714f1c8f7c6917d29eeec96f5a9c529653bef76fcc8b4ca914050c7e6767f1d602b3cbbb6bec696413c15ddec9769b6bd2726bede2ebce64b3fdf0e5dcd2baedbe2042a6b405da1dbb1fa0e70ff0a77ae097f97215da97950b333fa900fb3b9c7f7c2c626deb106cc16aef9429bca59d27db9155a18884678bbddbdc0f53376ccb7732d07abe66f7174dd75f48f6bb85fcdbc358d982bfdaedc1bc0bab82fef66e33a1d4eb33ad420bdf55d26fc7febda01d6cc9d6718daf4b09d913b7296d6f4ff7be87446ffefdd735e615cf7f8b26b6b7c2f2f22075342ed7b7c878e54c5ebdeb30e9eadec27f7fb4babb9ddc3bbd8b9edf82d3dc1b7e772b2dc2b8821bb797c1cb35aeff871c07039aee960a52f4617025b535d3b3bdc997ba5f922d84ba33be3388a3cbd2fc463f0b8fde8761f70150bad6bb7c6073812e7b377b783f899fbe3a82579ff86387e6dff9ef7d5e353ee68c7ea709ed88b2fe67df6b59d6793db6984cae8f6e69e3c38a8d33ba9c787dfce3fb633c0d08198a7f61d38dc452c0ddc3f27f6edcb7b0d3134568c568613deee9f67efe334727b5da0e9dd310077b549fcafc82377b5e17143168f63bf922b529711784d1bc0dabc2f3ea88821c8843b709e992fd756047ab7dc19b3a8f9821806eabd39a9456c51d6c3f6b5da5635d913f022e12eeb60f5ae788c2fc8efcc1f6c49f2b51a34b5360cdf75b222b7e366b3bbf6467ce09a4cc8d6ef95d78dbe99f772fc46bad7f7e57ff3381bbad7d8d1ef8e19c2f7e91820872355be2b17d9b3d1c693c8776ce990bf797bbc116f779f3cf0d5189f817bc7dde51775c0fb37cb1b2cbfba6c47ee3a636c9f6f3f273347573ca773331d94e7eace382c1817d208eea39b6397fd3bf674e6e8f7c5e651bd169e0fa63327b923874e5fce6c72571baacb20bb9db8d2553b7d4db747db99add3dfef7917cff5c53b3fbe6ca7ace469fa9e2bfee3a6ce5ce674dda7ff287b5fcd6e8f19067a61796af7eaf5be14eefc95f17a0d13fc0c7e447273fd067e0e4cbbbdf4fa28ba5bf701fb63782d2ff9ac4d657a7b9e1f8f99bd1b9b84d516b6c8d6953211abe80075ddee959deed03dbd58dedd9cfbcad6c2fe52ec630b137fa55fc52a3a8d1904fffc57e20c6fb1c59e8f6f64767a2a7f5fd58fafc7788aa1a75e96df3fe90372d846b6de76afd798fe641e38f55a241a3941e8aff4f575fc8f137b76e8a9fe6ee68c372e1b47e27e651c5023d960d87e5f8a37ede4d896737c3516fffcf8c13f7ca5de0dc327e19894854feb36bec773680c826fd56121374811bdfecdf227a3855b797859178c6c6f95e52057a9778bcfa3baf33c01725c5737eb4c2d63375da18d1bdf995381e83d74e3bd2a027ec7c6b35164dc1d138e77feed36a3d4756e8e17a7baca4d7cb31a8b18deea47e27cb97f33cf8758e7fbb0a8a65f6e83ee91a3135feca4ae4db677c6e30bded7da9567a5c0daba9996a5ab316ab5f526dbc9adf85852fb1a067125a7abe45aecc849cecaec1a6edcc9d9eb24aeb4e9de893f708f3f0062f6efc1b582f8a4db69b1b00b99aedd5edda9abded5c697e43ce869f7c9da16bbd76ea68f424fbdf75d3cef0a5b22bd77125fbd5643ee5c5be5e04a680b751d6ea4bb80caf60e22e6adbebe5692f8bd9b6a461cefd56ce674b85de78efc0a4901ecce997d45ce6bb409726ca3e8cd14e36bbea1663b230cd41ec39dbf3cb7a63cc2b0c9d2ebfae819fcb69be218ceb56b93a01fecfc38dd14312557eea3c698fd02a7df3644cf16db239bca9f576bea1ccd1b1d02a035f1163c9f465bd736a291ad7199533c603bb805bfb4d9870478d409d45d34c5c31bc4c15ccb1fa9ef379759efdf033e6ee6eb18dd24fb9e6dbff463f9e0e7e2d26b5dad61d35cfb96166167c0785a573c04b676f71e147db8b192bfd9109f7bb5a6ebd931c4e8e04999844d71e949edd853c9f2aa5e766e1f5a37e4ac9ddd3f569772043175281fd945fcdcddfb116275b2f15b68c163fe361cab28a767e3ae39b56a9826f7d3d7be8a199517576488c69e60152d822b36fae6386fd3fbfd18d5e293079b5a1e5a85fff30fe20bf990678222a4cab7f8187f6fbe1db771b19afee10ec6fb0fcefd5cfdc5a94a36b32b32dd6fae05195635b9ff337520bd58ded6721d4d7c55dffbbdefffc5fadebf992659fe236060f5f435beaa47fc3d6b3191b2f05a4e08c355d20e23bbc4934af02ada79b6724d673bb0dc3191609584816aed281d9bb6b8c1b6915c8d9b6d75724fd289df1aefdc95b60b5afaad982adb5a9d8a9b7212662a0afddb70c5d6d856f69cefb3cfb7e4ac3573cdfef25bf31a4fbe3b5febebf998bf3307f3f3dcc33358b4ed3088b5d08f34c0e7ff6a9edf3456242aff4c24790bf854bf3c1e1d6a22f8fd2b3ec01bc684547985a52b7ae00dfd407b22a483b81d7a363a0c968937880becf1413a88d123e48ef7293d6b39761471e66884be13ab84fd0f35ef06f4f7d08f03188f517db7f124fdc3e035c1e1790909cdbfd967a48609acefaaa8314adf1fa49ea4855e977eaf134f75d97b58bc1dfd5ce88df433d4adc28ebef463b20f543967e364581c957f38a2cfee781c410df3d6a2df2b53d4b16c24772ca2756cba0611d22dc5c08e2077cd083d233a96380c19167ad8a6eff0d52c9cd9ed2236a1f0ab166325fe0adef338a36bbcd82f3ca9bd64eb8b452f86b54dbc15decd2414c1efe0dba1bf376a45d0e7626fc1be2f7c7c33475fd336018b9785befcb276237fb6313e58ab3dcc3be7ef90d0163b2c87868d4ffb8bfe5fc8b8945f147b8c556330b38d08db6d8889289ec7b62ec05ad075ee418d1cfa3cf1566853d4628671424e1e60d1d0df97ace64b20727c9ae377a833bb1d7ac01f7ec2f3dc26a4f19c9525b6e5d8ea6b94ef2f299f67eba76c607d5706c403d3fb8f7eff56ac291a4b539be5df076a58ec55e20b68aa137ae7f13d16a06e60cb2315165851f31d6835965b5e04d851b43d607217eb10a8f2a4ca058279ad5d1e47c27e57727a16ca3583779ebecf50d1c16d6989dfa77cb73887f0ff81ee17b68d8e17b77781aaf09a3a459dfc413a20b5cf71119f65105792b93ca26cbd5816585e24d05758ef0bc606fe1fd439f9be799ef647e7e8033b51418b12e511339bed8da68a3b7735a7bf750255de94fb859ed8f36287f0bac8c88be5852fa13c88d97b1d4eaf9318d1df5f5dc8c5c3042b4fec4cf3bffd95fe4efbb5f8fa6295c498e0d0eb23c2faa0b288d171e1ced709ee696dfefd2e90d021e815ef45b9d5823c74e8cfb4a84c49249e473aa5ebc1c7fd32158d77a4689d89b0d1a651f0cecf79772aec616c5ea4a1dae7d782f6181d5535348b76c87ae27bdd01df7c3957e0851a01bedcd3d760e7b4279c1e943ce86910b354ed91b22a72e0bd3860ed63b4c5b5e76a384d7ccf14c19384fa79abf64a6a77b1adef3c1b5563ead1be8d143b83627e94c63618a1ad2769548e93b06d0ca05e8ecae6e83ada6a0c732fdfc5726b639df87d63e049f2077d6e2ab4df27117a9e0aa24279b025201345a8f7e958607ef27612a3a5278904d9ed5df3b7020f8b8d83d225d561381d879ce681e7050ebf7b628360a7a300de57f137f80161dd018fc3a7ebab66fcde62cf7b7108f5ad7dcab3577077015dcc1cbd186fc917798c759d8ecbdf668edea9dd01892f00f63fbb0f54b9c5d613099ea0703c014623384639a63cd242db99aa6c5d89d3578c5aa8ba2f5e51844c2b223dc3acf309ded7298fd8f97d96470defb5db5b0fce08d97904643b46fb658d2fa0e38d6b6ff8d9438f80a5cfce6c8855d8fbe8f8def62559a4b4c0dec1e4d5062f5c9c1bab417c49cf674ea7b8af0eae8dc9191eba623892193bc3306fe50067bef7695fe559a8ed45f19d4af761525f0b181fdda7e04426a9f4c36c170827ef296406e8f3f339977526a3d3f706fc0e2be6543d7bd2dfaab8ef8a7e4b9e4b75e713be4fef52ec68c2949f6b8869b24ee71038c6ee745ce57e89812a9ff65dd6469f94b47ddac7e774593f37a7ed4adf3daf1f841a67b0ac49579edf9f8c2e6d1c067626182a5a7aad4a46a2bcf58df30c5f38bb76aff573e2d5d70b69049f8e9f34f845dce86b3a5395f4fc7a9043732f9ab25ff337668b39c7830a79e8f8fbe20e6d8e5f17fc155a06bdd33df0548363719dcca1477935c73138d97bd00becf61a643a47833aebcd3da1b251c5c78c95b6f3ac93f72fcfed6d79dfc07a693b26073e31fda1f65c8d27321b16cc410c41368b1a73d15d461f67d70a7090ec76d4587bce633edd2b52e913aea3f7dea8dc6b93e5a7cf53fecece2fdb0b18a3fe3a451d847aec7eacce9371e1ac81be22baadd36778ccf5a15c3fb6a77bae0f42ddd3c0310856986cc5781bcaa11e73c94709d769d0e3f1773347afb03d23d0419fcfe80382e7745e5c5b24a7bc50a9b565fac69b8a96744c137e67b0b92a5b6b85b61347ef61474b0a7992dd33fa8ecbac7960b701bf9ceb60c2ccc66dabd561b2e18ae18341de1693f9a03eada1a27ce6607eff3d15fd74fcc65ddcc9b1833b201f88b49f4a1ee3f7a3c83050f40fd80fc01983f9c199e732e833a57d2c012667e8af26e518267646ef192e8f52bddf38b0bbb6d1dec4b612f9229b07cc9dad09bfcfdaeff5bbd6b48d77a6db327fe0e4e87bc8a57534a1bece54ce677dd4c6637119d5d1152f9e301da3b60e568c42dc2f7fabaf43f1dd3b3d4b8dfd3cdbffb85c8fe3fd035a6331c5853c4d70213b73bda3267bee0afdc1e57b54d5ffd1d8baaeeaba8441eab25560b7e99d917831d3e5b18a184f43d519013b3bf8e5db2410eb7d31fbac69633eb7a29eaecee86ba577401753414f898a7999765bc08eb6c470ff6a87fad8998c5bfd3ea97dcfeab17119a0773c16aaffd66bfbd3ef287f20f19b75fc3dab99e04a681f285c6fb10378c68f6abf55f605a613a0a7937bdb94c8167319db5da1551117342d757a8d6009f623afd5658277ba8ecff885904ca702dc070cefd39263be177bc031b0dbcb99cdce51a1db15639ad9ed159b7f9b0442c1f3c9168be5d9d6b8ec8a2c45b6a6a2dc9b2043617481b66e2c8b5e6cf4b0d3394c24c00584fe2792226229140c27847d2868b9aced15a368b222857e50f056aae716df9981dd869a99f49ea1f32fe8afd24961ce07ec1874bf8b76961f2bcb725e04ce1799da7204eb19b55fa791c5646549def33d61d8c67d760efc1865814d72ece8cc5e5bf1ba0f6ca3fdc4ce922046ef473a19a5e194f7171deba3535b69bb71c9d322ae43ed023b8b26c5dd6496bc93cd81d286a0efe8597deb9776acbd0bf87b655fec0e71b40d972397c53dc5ee7754cce940e5ba62bd5d07ad667d4379538107146b29c07b05658b4b191ad6aae53afa3470744e4fec3df5b9047da837c2ef1b141dd9f1969487014db2f327fa2db07b70be9311d729658b422fa7733a040af8db4a5e579759a8cc4d797ac16302528c55db4e6c6d173806aaf157b80f4a9b4a250fd4e4373d0c1cbde4594174e63ec9cb3daaf53de1e71a7832cc73c6fa633c97ea0b2ae0246f5d89109fdf05487d0219142fb89eded8672421b6a6c57ac077d3dab93d3ec7f0b72ab7b043f9076ad59f6ddedbecfd30ce2997fb997c97635bdc0571655fe07247846b3622d83388c33d9a17e7099c16b8fda126179cbb9f699b48dcb924e4b50eb8fc252905d66dff547725074fcae00c50ba2aec41d831003fd16b71193ee6677ea588d841e09facd947c29aed40f408f31f54f237e5f9136ee76cda197c0725f43c356455cedbbd086a0ea533bbe2b5cc67a095f6a082060d951c7cc08f330ade352df107abef182fa8ec8427fc91cb6b254e61d1bf25d1fb15fc235121ff58e05bade41fb65769495fd5ef8f757b5c8d4fb435b015547641c6076d74f02565c5cf11bdbb775c9e8d668ebef75aec5c81de53cc9bf36c46635ac2e51fe041dc1f0377e96445f76633f124b20d4abbb1227892087ad3c4d1568cf6aa3daccd3d3f33f783c9fdf7857c55ff8dad2fab475ad2c34a23e09785bbf19856c8e168dd3a13d1d0f89ddc41c8789d58ba655af20bf88b7a489d2034468acc9f6bbf4f234567f6a842c667f866a7fa2ffbfec40676c6b6cd6c126c9c13764f9fea4585bfbab039c1fbe5fccde4e72222dbba2c1a404e7973adb95ed158efa2dffa3e301d56de33d96ecce50b18ebbab07f52fa9838c6ce6374b4603cad92474d0971f956decd8ee5b548192341c156ce6930c6096ea1fc88679cf293153ab0fa2761c2e56ae2f1da4393c63ea390f13ec83dabe182729952b9407f85ff40e57c32aeef17a3397cc66ec77c7c70f68917eb6d0498da4c36c510f752e3c12d62f93193b98b7856bea6a5bfcb64bc92d9ef2490e3538fd343cd8fc96c519fd00c3ef29fb92de3b13863bcff1566fb0af202c87025de02bb3f3d494c7c09f8c3849ee15971ef9631748cc62afd5f17b0d3d10a7f00e303ede2beccb10dbe48ae27cb5b6385521c93b4e07d2e9f6b731c24c1761661db688cc1918eec48ccb796bb76fb50a779f067084a8e4b7b8d1279dc0ec43087988d83dee33eb321ac5d465f11c3c7a9d76628e50aa875f6d6378807f1689c1fd5749acabed2f0431ce974cccf8afbe07b2ab0d14afb50fd4c31fead7c34ed7985bf32031f9fc5fc624d7ec4de31b57a9936112ca623f48c0eead56c4ac8c85da7c379aafee25a8fd56f16b38df39a60402f801d67713edfb441f11a8b4ae4d9644be7e3d7ec1a5e2bd81677a6a7a2956beb6d90f9d9bd4c697553d765b91da2b24192c2c6213fbeb1369037634aed5d20b5c7d86eaf02357c2ffd098cce52acb87c3f593f7599fb5817e6ef2c6a3214322ea9c7ed78ccc6cae365b8ec55d030f8888d6716235bdc49b2c4e59f42768b981e56c608f075e3753a992e77f8e4fb2d76023e57a09b65e068600f99525a6919eb62fe261d2bf7cbfa2ac420428c0caf55c1640ba713b19c1556bfa2b1865216d5fbc42a4a03b5c7650e267bf276ddc0c631a7f1b43636dd75aab6186c4ce5bcc31a6e50ad1de052092ed341f69e4a96d82202b645b0297862639f289d2778c5eb4721fe3ca38d037c36390df4581f753b0c1ffbf34c252956d01e57be53de6f54ec0f93812424709bc859bf44659f056c98c4b533bb464794460b7f1fe08131bf5e279dd9255fdd7b2a97ab8ab9a32009d4b0ea7bd5117d09d6360954b4e1ba0ef3d5aff4f5ccc602bf5b0e3395c4050d323c6ba6537b2d666b030c20b346a366a147f0fa5acc667c28ef14aa2f0aa55d330eecf6b2298be889e774526c953124e5992becb1ec5e1543bf07b198606be5bc9fd7c34cf93931445742504f05f454761f2fdd162a317b1bb6dd9abdf7d85fc0f7b9835591ca86107754ca6a2736f48eee3ada07a7e58ed1035aed1956a6709e9994b193205354b9ed4855568cd615c16574b476019faec3f40109b5991f5b7c2fec64dcff48f5b176716e0dbb2df88cf668fb118f5b107d15f49501ef53a1ba2de783c56f8cde50e1c734ea7f7f6087d4ee1122d4636030d4bd2bc752c858b1d7d2a0d630d71f72cc686817a82193a922ee8b58155852a54c34f15425f1227ecff6ca9814aaafa4aeadb37a9a3dde3e067ca8c2ee2ffa71198b2361b071cb857f83c5bfc72832a0860d6d0b585426d7834afb0dabb1ca6d9212a2f40cb2283b8374fe83acd4239603ce5b4381f914406e011a6bea903a8131c71bae77eba1a766804d6dc48f7cdd27655f3c67f4c4a6c8efa053993262f872f47b2b42fa54c4cac9180a9f4beffc3d8b5514bb0e4a9bbe30ae4bf2189f52ff6cc689315b8fd3a1bc87e0667b6e672e755cc052734ab9aa718e40666ad8b624d4f4cfb25a8675fae4f73ac4292e6a3ee742b62de49d5de0181047c179e6d26b694d9927029c8a84dfb985edbb92e3b8fd8fcb77aff5fe8a7baab063422eb3753ab75a3f4bc035b2cfc4f9555849d199b97f1a1758b37b1dbfabb8efaaef2d2a7b905a2c5211ffa5573c87dd95f5781a569fb0a6339cd1fb2066afee3be634729e8fc6653cdeeb84e88a45706712658a2328a61529d81134644458b1883c355102346db50cd18d6afe5fbbbd06db24c89519c192b27cfbf48ea5baa31e729f14af77d7f0e7c37793158a718c729085ccd3df19af25277be1d9ca635d479e7279b51613c3f43e5b13717527c2ba9e5f1ff02516fe973d978f88cfc604f180953f016d8396c6f922e44ad6e6a73c97775f54ae395dcbe2ee0c6b9fa17e25b633f035c0fc89fc3eb5e4aeadc83d03616b2ac8634b94fbd39edc9d58d9bbd9935f4d517ee7b2497bc07dc77eac305e65b7a9cc96733eb4e5b2307dcf6b20b56bf4dab80f628e8706f2c79b2d9c6f732666c3ef77d23736ee223e76eaf7a90e3f391f4b5be8ee84e5bbcd78aea31f9dd650e53497042a093d957ce7e37b07fe07984d2c36e0ecd9aec55e14f119be34aec92e16e731457c01ebbb884b857c1c5516799c391d4f69d77853f534b0f93db5e2b562adf2fe647a478ff98f8a98a4220694d578e5fa3b9fa7e9e8ca71cc2b953da6ad605bff7c148fbcf454e5e00b3c0e9bf900184fce395d16ff8b658c25e8dab5f35cf8c1fef224b2657afb69ee077ff61080cf12fa79a6f70d9705989cc5e2b8147fa5957257ed2cd6ea7182ff280ca286ad9ed987999c915099db7508f8efe9bb91aa2caa98fa5216e9047d236763468f1c4387f9511c9d4c6345aa788abc9d408e173b7f6eab8caf4db82da46e67853d60df43ccdf36e8c95b4b42559c2eab53568d87e8c453d192dd81e04b12e89964f2a22235c74e0e600f7330296d5aec0c2e8b76f07c9f8e29233e8f7b6077d5e9f76ed1770fd63367b60683d978e0de3ff73dd83b199629b3cb846ec4f20a8bf971bc75f00db8b1b29c15f248e58fe3f1acf2dee7ebde587322e7d8e6b1f76057ace1ecc0fda18941dfe0bc97d52628ec9215de34e856549e2879d0cc4687a92aefb8ae0431827cac851cbef66314737998c99f44fecb6f013f5750845e90228f0c44de27c8b0ac821eb9cdabbecf9ed4a63254cfe3e710c772ee4a083159de6272bd844cae0b717db1fc6d8b6d14f9a246702c2f03f083bab536f059706dad492f2a3904bdf60eabe57df50234c169869e0536361cfb3c76a88a9f015b2ed40d6f7ccfe277536c8b84ebf6072a5b9567177c3b5abb983bc45aa9ff97b37feb4f94c9dec7e1b704d8ce67381cd382e137a12342017526908c0985eddc46a3befae7536b5355a07dcff7f91f25b2a7a85adb6b5debdb592b027df0a747c73ea31f8479991caf0bf7a09e02141b2e40cfd31a97e77a46750d989f825e7f66ed3adb50576859290f92e3e2c1eed0c4d995e2a327777cd6b0cfe6fff4bccad8deb6b2e3262b3826d13e3acc5d18f7eedaccc4b7951bc90dea040685eb6288aedb3272dec9a9938916576dc762bc49cb378867c0bc6daf4e9cb1c0be67cf8c9347fdb29381f50fdc67a138fd755b1df43ade3591dcb583dad177d473493483bbc6d7a48350b7aef7e95aaf872dfa38bf9b5972781bb4ccc05a9ada9129129f05becb1af82a685da8ecb79e3b2339b6a7f78df13baea1ee43ebb0671e7bbea7c1438ec612b9a93762f94d7217f5efdfd80b8cd3fb097acfe8d0ec5c58197a437b39b5e3be17a77adc539273541b59ca9bcddf991cf18970d29f4d2c764d1f79aedff1ecd41f6daa54b4813a49cc451f6a3f811c03f25d52dcc6fd3d683d25bedd3c28c7c26d9eba63d97023ce6892d9641797b6df39c723d8b6c03965ff37f923773f63ce3de4617da65a9c35c7dc7b8c83e39c053f65616323b08f73475ad63c35d05381f3bccf7db2023be02c3f9cf7ff7031f418370079b2641b20c33abeab9bc3c76d231d17611de0c88776e62ce645ffb8fdaae5838c306f8ffe94968fd6177c788cb0d7694af543db41466f3bcf03b5a3b1ea652cd04e836fe69febfd2edd56bb03f96c5f4d90fc2862e411964bb479b736df386b07ed1b932e19c4ae59fa4aeb4093b38924d513f8b88eb41fe2f4287c46fc9d57630cf24b56d9ef26c88c2d45ef90e2f6b57b8cfb9c5aefb8bfcf4dac7d29497285f305c94106ea549717f77a27597577c71afc3aaeef835d03c0aff02dcbccc41a9b32fc78a3d8c9c4e685f1635f5d56c938f783e39db4be3835a6bf2ad8e87f6dabc586fad1fcdbd619417e12ea86283ec7fbc0aec0fa63c45535c15cdb18134c8763d32c6dcd98cdcf5f766f85f13de19af7710688a520cfcf0039c8ab8d013ad7e7bc28d98ddbff257be0d9fe35d205c67fc55c3bdc0bf28a31f3fc3086cfae8b2a788c27e5f949f6018dedf3c7a8a64aa53f8589d5658e4cc658f0260e8ffa19d8eeababecdc143b3dd754dbb36d0af93cc0b914d6b67aaf1fe0571d8cebc3fd19e5fca107bc23134927c4cd0c704f60773cd89fcad23fbbdb0d2611dffbd3ce93f5781cfacb819e3b6d82a4d673ba1b949e8b23db8feae66ecf0e86d6c16ab1fecba186af5027b091c9dfdd94f3ff3af6985e838eedd15deb32c1f3aa34260cc48e6ce8cf66b698e3d8aacf3bbd3b9ae3662e1f1af4f541ae58ac3d3d933d6edf0ed107e53d6febbdf5e928ffaf6d4dc23ce1ff3047dd5ac5627a4ffcbef79c1d1467027b25dcb57bf2e7f1778f7319e70ec71f380fd3558bef669668dd8abc0bb03647feeb3be05e4bf4e92be0b84c0f90bb18d5bb261b59657e8b71666d5f286d7fd781e3175b3b26efb4ce03ff03b14064bbfdaeabf417f5c330f5a1ee7d9e2775b646af0336d3ac117b7dfd6d22b495e03d08db9a0f62269c9ad26a963e3c8ef2070ff7557e88759c149382be0ba047339cc733f1413c0ef84df533f55656b25ed0ff6743786d0ac633cfbf3bb4d10fad2f774d6cf0ff49b3b7bf8dfdbac4df740d37b69034fb85cff6b4307e38f3e7828ff9d4fa8efddeab53bb125e364bce1dcad0dbb63a98b88c30d834135b659bc5e220c13ff05553fef3ee19c6b1031b03a9cbecd0a0af0c63500fe10ff409912f8d623cd09b4296e81bd03c607fc0d8da8cb5213b003845d187bdecba55a6a8d60c3830599f341c4fc77908b97bd245df6e3e44eb65febbc63cd8b7f16990afef83f398b4df6f0675e94a41d81397f7cdf852180f50d6deeae2686f75d6fdfe6c29ca4d9146959f26652f72f243c80e5eecc876f9680707f7b64fbfebf287cd537d98589c83615527d74fe16bd64178747c0dc05badc779d11be729005b45735e56589b3a39f60073c2d48d730df7bf3e46f5f84bf1d5ae30160a7d09467140e5c8df239d37f79b32a175af6e99ad55bcb6fd85be3bd5538ed68128d6579a13834f71fbcbb90e22c2ee10cff5a8ee0ff7e7b3448825bcabdfc52f639f2f8eae60a778f258971dc5a8fd6fb2e7fc467ffb322b9ae04bd1f7e26d891d1fa807b775abc16ed7eed317594a2f9fb12d36f79bf8e29c6330a4513b2c69bc516ee4a55e7fff196dcb9077cfc4f7da31069565cf9975731b607e538ac5aedda3ac9315d60237a5b6abb283c438fa550e2fd75f3f9fb1d623106a1b64bbb7c23fb4816feaa9f5b77d3456d56c31905c25b9c3758e11e135f5fd53edbb9be7d856e9af66d6e9f97c3071408b0137ef2cf8593046065cfda45f3fb665f7dccca8deb94ae37608ff41f116874fc1cae17c88009729094b4ef387e69b7f865cf27d2c9df3e209ccfda0d3f609c5b2c3efb782f087578c27e3f513c435ee8d1ff4e0da7a6ec0b3be6fab74919721f001e60ee74415606d35721e84dedbe0f1f13c97dfdd185b15386ba1a77b3e3918498c352046a50807696a64d58def8fdf3fbad298dcf09cd46f57c09b74cb62f1dd0ee29362ab555d25804d36f98b55a2ea80d7b3fd0d3556da2e8f2f8c35bf4a8fc67e8ffd0bc96776af7f9b6c5305713fe2fb3aefa5b4fe51af52bff73efb9dcf929e383660eee5b1386d793c54a2a4277eb44ffffb3c8af55eb5ef51979735e0d6d08f53edd0816d250765e739fa59f6b986f4f7166b3fe0388c9d859f75c99809ceb3a7bb067c1cc2f404d1972c68dea36fb2243b0f6289b02e2ce703ef037d68f6eda11f73d4aca8de5ccf8d72ded71573d8c07c3a7755c676ccfbe4987fc82a3967833ae23c76e4f63edbb5604f13aeec89e572aabfd19eea003ec6b23efac0713aa876086f220ee32dd58bb42437b52da66d468e656b79079c9b7e76de068231fb30cfb33fee27fde0c41c46db233cd6d6ae70cd7f6664ac88c3bf687d7a20f75107ef64ccd80f9e13101b3c36017c3fe8c5437ee7573393eacfcf68e52afad1f7cfec8e81bb3e65b5fbaecbf9481f6ccb7900b274696c6b8391c9e3f024a1779ad0fee3575d8d74d9b109e67bd013c548afea7995187ce23e53542761f4e6fd7561ff8b885ef02fd8a9303e2f39e6e3ed5f8ca9be378faf31d0738a76b5e0f97616d5e25bfba335e177bb38fc6bbc868c3e5cb2bdae6dfde9367bfce81b3a35f1d13c0f64aafddeedf2c1da578687f5388ef3250a30d69003515fcc85d4ad089baee5038e21f91d146f83e330f68deb28c31c21f246c1bac851a6a7faff375ceb57091836154861f4e66c5b65bf9b99f08a9918d83ee43e4cac27bbca60a3dedb01fa846b3f0e6a6ac876b8e979689e7bc80e72c03c5913ab5d4bb115bd5e44393f744b3dbe98dbeff46fc2116adb1a623164a77581b8ae838830d9d939871a26fb3d5d5e61b8eeea85ed728feb34f5fc843c3be3972271623f6e0bfe58e6f2419d601e9597c3db207a1bf374aee3da70fbc5755b86da2f64ddafd7bbd0f72f56c9a1992507cb0ba4ceeda028a687be2b9fabef75f7fcda568679cc39ee8baaab85640ce75b297646467af2d80484cf08c40165afddd6c56172877f5d6a3f293dcb2af9746ae101272e97137b1be3b9caca1efdfc6c0b7c29592dec5c088497fc5c92be98939c373246ebcedba69ca766df9e7a6979c4d5c1bf7dbafe7e3c4e14a7c6b1c5efc176d155969de2dc4d03bdcefe7371febf3affbbc778ceff817b6e17ff73744e17ffd33dd6efe27f4e8fbf4d7e7b93dfcef13bd1ecd38334f85c94efa00be93de9b8573948ceed6919f7b98d70ade48e2d47c7c27700df197d7c3abe3bb754732ee36c03e3443a8d74cf9ef082642fd331cc9b06f2006d4c6bd30b3c46cf2365afd59573d506e9ae1dcb67fc364b71ab83e89bec21ec2987b6ff37e01ff7ff425be62762fe53d4238e0e8c7a4976d69dbe357ea03ea653b2fc42f92becb3559803d36300e364e26c85bc36815f18bdad42d0c9652116984bf75f73953da37f1e15508fd5ef5e85009b27dd14734138dd3c2bd2d7bc5fd3f6cbcb46a4d1da0b7f65603b765156804f5b6585f877b68c247e3b8ce5b15f2197685bd2be5317ef6e05f4a65adb75b57a71fe4ff36d1c5eb53e9101e21dcc79f6dbf2b18e4d6ab8605ec81e499d6b037ebf7bfabbe3e8be4f768c0a3f4c7215c6b99fa46b31d1ffa37771e798b93e5fd7d9473e4a816342714e770c28e731f1eff9781fd70aeaf6fb6d5bf231788ee3dc2eec7839f161acddbd1cebabd14760974ff592bd8feb135ccecdd0a577df40853718c3e5fd390d5f9fc7cd3edb7b33da26a2b738e27a28d539f347bab689f19b27c7406e279ab79e3a397104532ffeb7f7c76f99dfc90df38deee7a6f31d30fef2709fdd5607feb7f6c70ae2b4a03e6deb6d293e49ef824d5ac44ad58189e7fd90e5e818d63d468752cca3e88270b92dbb431729457e0c6218abcc1cabc768033e78f45d1add6bb80459bf7dd9bc81f49bf862efa5c7782f8e8dbd07c71c8458a6c6d61422fbc9f7d3ff4fceb9c92ad3c7c75d7939dae79087764f7e9ce7fae9cc1f9a9dd1ee90331b3b11c5da637f31dbbd15e100d7eb411656b2147f110fa99225c8ac99dea6e713e98c9bb9ff3e51ade75ce36372cd0fbeced7ab54e65daeb24ae13e2686e43e3b1e3ffa5ea36396a6c68f7d2973ad6a669ed9f53d602d397e30c9091c3bb2e1cd3578ed6583baa2bfacdc67e7f9618e07bda8e788485fad3f4dbaca8d49e17bc15c74d613d7b7dd1a9ff7f718a38fd5d045f61c1807f403ccf7683dffd07c4cae6df5853dee3a3e262fd5c9d10ff638928f8ff7d97569fd221a4b317ecebfdbef3cdfe36fa4c7ab4ad32dea78738cb3ef91fea8fee61d1e5d23dd96f37b5d33790f9c4fee7be11a68ee9fd7ea4315de8de71fcee1777cefeeb7190c1ac957d21bebcb38ee6a74947b8d7b1d133d9c7bef4da94ee2d1790fc6c33defee5e85f8519b5824c83fe77b58bdc66b65bae6580fb9c7f09c78742cafb7e93ec3e9f5bf9ffb91de7a38d7dd39f0373aefefd6d0e4fbcefffe7cbda6956bcfa953ebf8c92dcdd766e8be79bfabffb64bd726da9d3baae7dd4e6c25ed63d7ec630ffea1d90b8ff425fa0e4b5fb583eab725620aabc0fe76c6946570d2fa8bd4e4330867d606e2b309e63de1afacffaca05fda17c519d639ced52fe0bb8f15e215f78bb3a937bc815ff9ddcc5eae0fe54bf1f0d958569bd8bfb5ab46390ded63c3783c3b783837f68afdaedc582dea38b28f5e39c6e3da90e65dc4bd5dd78ef5d0ae29d5716b70efe197b6b15c7c615d25d717ce7b61edd8d7b69c1fa7b190d13307bb73334b47db1a8b47f82f3dcf4e2e9d5cc0a06ec6b6054ee274d760fce7dcc4ec03306625219e0e8ce9009f8ecb8fce6bfdc1784a534b077161e7fe5c03e56e8b3e6ac43f685da99afde83938e7e26ef39a6ae1fe865af77c34f69893867cdb60b864df1bf3bb9bea7d779fb5915478ee0671957a3d8df5b7827a7dfd3e4baddb1d9b76886edb324dda20b4eb7f9ffdc39117873608c12e642e91c6cf0ea62ea24abff341789b7d7a1ec98920b9715c009f4d14e0b77a3efe2d32fc2b52f8bbf6f0f7dac7df39edcf697fb1c4df4584bf6bca4b20d650e5b9c3af67639877f159e88731ca47ae0eee7ee02b24397086d8b2cd77e971c0b806e77f383fe581ad4a3566dda219b2f13557c0c3e421e63189d7b7e71f2f9f5c9386b94888a3a9d46b39a7b7cf7e179c4f88a339ffbf8d43df390ee5a4a0dffb54c1b844fc1bea597da8158b85f50156896a57c959cbe8d6e7e7415f601b8bcfed78ee185dc0cfc0395a0747a2e7f227d6260b374e74aef7e9286eb42d2f872e8eae6fa33cdedc6f46bf775f77df588c9e13edd432736ac353f22546ba634f7e8ad6737e171b99e65c977be8bb7e147c4fc2954853e30ae7e2717ebb87b5bfb4fc013dc56d3b8b75502160c829e7699e65ec03a3ffd3d99a84f17e9b17616e7ee614e27b1a0e048b47103f5aa89911e33cf45ecb8fa4687cc1719787fed6a69c0f8d9b9b74e50ef0868e7c08eb17c5e2ab7d1ad9f6af461ef1b829e313ad32b807c83aa889b4f5865a367ee378006647e5b9ffcf1fe9e7bfc0de2c7af9b3b273e1b60d94a993e19c81cbddd0c5a167f2201c371fe5ffacbece06f54398fa4371ad81fb0febb0ad4fa9ed18c27293dd607109bed1ef0fe71970d7d93a3118b351de3551ed4ccf015b4f5207e1153073da4f7f1acdbf1cf671cedec15a64c08d83780359a51e6fdf54a9835da0fb069265dccd5c6f2cdbdcdc047cd7d662e1be706d212e09b80607b3d6b5ae4399f474b7be885bd670c7813e75f3cdcccb69b094cefc1f63d8085fb3773174ec8b8eb6ed50bf712f5607e380313caaaf6779a06ed90af80e0e4d30b7e3b687dccd735da54b59a68786b1fed0672fe1b1245f5a1e9b20625e43ba06fa4d3cdf379c039d6cb7f786eb2dbbcaada9cd7cb7ee1df407e6452f5d195dbb9838a7f6915f5709d79fce8cad30b08f7f343129b2df8f4dace83b627eaa0afc43135f0e23fb196503ed877e9c6887edc587c3933f79e6e8a3f52d3f586be728c4f8e0fb235f05731c6b197771fe277d182256017a4b60ec85f953b6a5246e5135c83d63c4163ba70ed5efe2914e827ec5cf4eddd703bdf0bb2be77f3dc87330c6cde083cc763cefd8047385fde75cfde69f652c08f7a67da7e2c3e507b4b6f937eb04d033eefd212e07fdb90ee76618e95cf633dc6dc00b4a36a7b9c73610aa5d8ef425fa4fcba8dfeec58d7c23e6d1bcc71195595fcc04d6f8cc46f7deeaf77e36dc07f8dc220e5917deecf36545e3a17dfd4c380ae77ae3e3c87797ee58eeedbdb671745beb7514cc955c82afe98ec1016283b07fe7154114206f8932b87dedbf37b1da6f57595e5752db66305645b03b48ae77d0bea297e52242be19ae096b9d77d856a998cc312da33ce271b9b5cbb97263cddad674e3437a0e170e56bd0d44d206ffa45c80d60bd92dd3f39bfb4910ae12752ff5b3aca462ec45eb650739305edad42a0f5d6c30684fb2d4fef8080bbf9031d717658716f0f0863f5bcb48aa9bc9be5a537b9bf5265f6f64daf3a83f12dd8ff49b8b435437ee699fcf8c6decf20a19acd7e63e5fcef5f185ac9cbe4788e37cb48d65347380198c485d653ba17585dd76e03a46e0a52db5dd90695bfd5b96c6aeb3db7b37aee1cf5dfc8b8351ea31cf68f00f8c1ba17aa7906d192d575ea5e15a419c95ebbf900fef8ca33849aa8f87ef5a655ae69fe89b7c362b71db5692f100b4deb53ef6ecef08f180c0f7c9b202c73c357c9280f30aaf6bbd068c2d04b8add7b687badc2b73ec67c3e56cfcaf189ffb6d084fb2c854b3ca08d709b10b23bfbb00fa751296c5c1710ce96f92e35ee369bbd095d3800170d79dd758dbfad0ecf537a3fc31f87666fc6f5d29b9a6f21f469ee03bbbdc21166bc378ab2afb1cc7809cefafd7e22c1b1c5ff07757fabb6650ff208c8db6837e91bfef35de9cece4b9ea3c8ec718dd7aac69fde4227d2f966253f94e4eb7f7f3ca5f44850add3c705af8e13a13c9fb66190aca21d371fff45e7e2ede21b7ac3887bbc679396407a8a1615c7bac022da35016e073153c37ad1da8f52a72e52fc3c1f822c4d39f07d2e496f4b5c67e89b6a7fe436330ee9741b8dcfec5e859a8298b0d46d76291172e7e1afbd3705c87c752db53c833c19c1e5560b6ddb62c4bb13fe371947fa992dd28765c253b8b9f9f6b3942dfcebdd723df01fa665ceb62c49b12b543f4ab067ecbd6ddb6a887c4d65056c9ce5e07ae0f18754777985ce9f479f13def8e7f97709c934bd1bfbde8a3de276e3c18c66b5d261fad9a1e4befeec6a8f95ef03e9d93d740ac857eb6b589d7d96d763c47dbaeed80184bb2adf4b880cf6930aff619c7db1d1d0bf141b538c892393c80dbc3cdcb9ee879dd6d3b19632e877ce4110e93bf0beb518e31c2dcf61fe7e8f03adc77d6cd836b5936f6a7a59bc79ba54933cefb25851762eccf5327739cbdefa10d427b4f73af3fe533d549620f963d3fabbeeee49ae83ff884a135b54b704de63570620689c195f2d81495f653d8ae8079e2e479c4b51670dea318368fe3d2c53d3fc8e38cc60f7237a53a75a6bedc6c73fc9c91ed9a3bdbc887f34ded69097acbc480f76cebdab96b6a3e58a6594cbf3ab0ad8fd715f6773b08c20981ce98604a9f5966b932428de4c3483698fcedcd7c5f983fe3f965e4f0786e9979f3c779a5ed5fac35d2be877906d4e946aef56ecc388bd2626447935f4e18bdbdac58f748e0bc65df81d71672771026c3535f2dceb533c50020a6eee40e93a65a8ce477118457ae35195dcb70a967f75822dc5e8df2d6d36da39caabab9b9cd9c6ab9e4e3dc3df60f58620ccec5c5374367d68d9679db25e1cf015396fa35f2fa33be7127631abbfdfdbe7a9ffe9425ea32d73767dc0cc6cff5988d705c85b69bde1cbc8a8843179365fa7830c6126aba496602d6967c9dfc413ca1aed27cf27b1c9fad5288a1f1353233f6d10de72bdea7f5dc6f18dd8c6cd9d37e98b3dc7f05fc6c9a635a76ad9d5af04e752bae57cb7eb783b86de3f02899f7a24c6e5dac3ce859a1fdc522da37cc4131c24d63fca68dc35b3e88fd247ec3f26533c63f8b4d33736ac4f7181f819e08e31e157f3abfd8429f786d2f938d3dfe7ddc96fe81b9e2a40f3599b963ef6a59ee5c232399a1bc6d94fa72a0ba4d92b57599dce89b4fec6fc20260ac35e798ca5be99bff69bd70afe0df4d959a7d78de375d17b84f4c8f922efe27d97fd979a37d65c797446e57cbf931fa1ec28e25c69bc6987111efaeb24a7f3701ca9b4d94a5f94ff19ef594a35a464526b2242fc47bbe0c7fae0b783ee82f23962acd44f8927be9228f42c25b66f9e3f32eefb980b9546c0a1f62dd74fee83cda96223f3cf7f6063f6dc97ec798ef2a3d37dcff6e96cdb95f2f73776df41a1b7381599e17a736bef243b787f37b354bd8f705bef6977ec46fe43187bb89536adf976b94f6d9cead1f82f108c4099e05fc0ff5d904f327c6284a7dae8937236fd3b6cab82e3290bead49757ba471cd703bcbae4df0a548ce1e1b83dd0eff92a23bc815cedb6d2c20ee4373bb276ce18fa6bc9ca8c747bf09c4bc1ec25d3b405ee9dc79d9b9c33149e5f24bbd95c9b9ae927e8d76a2e03aac3b8e4de4157e7eab16bf6d2c38d57ac86033b956a80e76f077bd77b93070ec6b8c8deb397a6e561238844c1db54a4c6f53ea1face472cca9d406ea1f52b8dc49297312aeda21fac6dc47d4cb65e637a53fcfb91f09f5cad6f3a835bc158637abef4affebcdf6a9e2ed5f75b5dbd4e51c716bfa5ac479cbdb5aac81636ee9dbb6f4bf1be8a7258cbecf66c9aec56fb3b7cf287ac38b417574791c7d4894174ac6d43f2bb0dfb829d5a989d1466fecb137ed57f1f1da476982398ebb96c14be04b41bcb3f6e563e53c83bae5d36d5adf62cfe273ab3ab52dbbdf944798c912e288ccdb7beb4a8c993633e16565e6f647ebc127b9bf06ec631fd7390779f4f7a942cc0ec5b64cbdf7e2bca57813f1b2dd085b893e1bc67d3eba521de5f2b27b2bc5352f232dc3a91e3e9acb2a71f89a4c1d0a7c5bdb6b240c6481f5d3c5109d48271feb4ab1fe3d3541a6609f47b20c64b434b1e335d4a289ab997718473f8c6aff63e052631d7824fbe3bab59c546cab9d25d5da7426a68bb88a6c994624e7365911fd14ff07fecf6d95464db5a0b58cbd15a0a68de31594775907d1552ed517e629532d3b9e6519315fcba796179b58ec24f48919f185fd1ced73e57a9f1d3a957a6fe545c96574dbfc64fe44891cf6c89d63f83eb2580505c87fd1afabf439fd30cff2d40458df0ecf19e9b1a5fec6f01becc5f1b6e5e5d060bd3b3c9fe174c0ebc54d1072bc0f9fbff4f7885bb9602c078ea3bc23e2d359f7507e0c395bf9b9f4f9a0fb62e535ccad513a3aa04fce34675fb6244778cc9e9193e2cc3ec2ddb30cb89e9b5801af9fdc274a16ddb109b88fb4bcca52188ed8565f0b64ebe2dcc62173cf202fbdd57f14efb07aa9459e46c257ef482eab5ba1b29767ae132aa3eb9b70b8bfe1fec92d8bd555ba3d1b818780dea198c4dd816b7107f72ce2f01b3040767cd6cd6c01f81f777c8a65b88658a117c6994a23f1c49c7f0bcb0bb6cfce4d70f1b628ab3e1ae26490acd723c3711acb52f486b312e321604bb4c4dbb35d655f4d941edec8af051e743b07b46fdce7c1fc483a72d70cd44b47c94337509cb33a30ff3ee509a3938cc3af0df53c627f183810579c4f4a0e24a7185bb79310d7f6ff5fe1615f23e2002a9c7e849f901f19a2e3b6c2f90875ee6e5fa5a153a37ee8207719cf9cec1bc23bd44377a4bc44e43c971397cfce4d81dc2779199deab2538c4777ce4deb72be9384fd13da77c0ebf4ed10ed9b21630e0be01c31765744391fd3f745315720e40ea1e718f46a81777ea92bc57ef3d0cc924f69e619ea61c13d94803fc5d45ce2fb2e23af89238e2b7cc8e0923465b49705f4fbd13690d68f5fce7e58b7c52a39cb59823c3af4ce20f705e6146bc43ed23db40c72ee19a590d3961b77bcfc1d71a1d039b8d6b7a467ab191e0763f86431f0eb203c722ff26ee8d00e8ad5673be214e41e51e90ded91dda1668e9da1030ed051ef07ada74a1fea2591ef21e13972eb508f3eb543386b037135d81ab4cb77db724eb13079ec4ae47b10c53ccd7df18bfb0667629798ff8b79918924c97bc4cde42a8b8ade3d4efd425c0dea2c87ffee1db9b6d6d8cf310e4f9c97aa66d9efade157463e33e0ac5ab13fbef876624629f477319c66d803cd3dce3d97f0e37e33f8da17f3f2601ebdc58a6c34e0917b6d7a7b8dd63917b146e9087fe57220395cb5d81bcee13023bff163cc1da6d74296dafe34dcf70478defc7b4eaeec607aa358be3487fb0bf80d8007adab5ea6f7aab6e5e528caf997b9df90423f90066a46a6fcbfcc2322ce5dc59c273baa49e6ed5477e78e3fe462410e47cdde70ee986d3cd6dab676c7077a43dd0ccfb8aaadcdf7ae6d14eccd0d6b9a393391477a99bde614a76b866c997bbee1c46db087e8f4f762727d8f7b20b6cefc017fbd0ca99e39ddc941402cd6f6540c4f19f698621e03fa8dbc783c876cdfc979a1f506cb45e6a7a3b94e3de09db948ff3be7c36fee250a7d92d087001e0b672c6f864778cc4144638c79e52610b77c08bd4d1c71dc467fe7d7b6b73de2d82ed6cf3ae9a58bdf84f817deca44e58fd606be5beff25e637f1f6bab8855b2d3ba007b453ce0cc22cccac8a7efd1976f07f2a7587f033edbe2ec10974ef5b4b81e807b31674c8c3fe69faf0283073bb77d3858fd9e3ccbf2f24def4e9caa8899cb63f517e11de0bb65344fa12e1e7bc21ea595793d7014ed49dec7c8eb550505c92becfbb42dbf94e18e07ee3ef16fee17b3ad52ee4375d852ff17ea33792b66e2bb8d9db87230ff94023867b0a735af79256eb2e075a3fd6de44e9ef64ba6fe58683f2cc7f382faae598ebf20fab6fc0c86e7d3f4f0247fe7ace58d79b662d48f8d7aaefde018e77f1d5f12b917cbacd236bbe1958c558f9cb7c2c9d1e2bbb43e70f4b14eb6fda607d1138738adb9513d11c517c2414efac910efc9816c0fe843b6ae927d57fae65ab66fd297e9136f6252744fe447e4be9ff06d93d69b63fcd47020d8fe49901f1aa219f733323d0be2d0c501dcde4abf6838f6e973cccbce9d0de34b66ea547b1d7c47e89ba4528f7ad92296963892b62b8ee7983c9cb7a5f8451544b7b772fe29e27025b5bd606de05b5d4a9561afdbd7bc30b118570fbdb6e3f81de055384f2c23f433d14f497d5966e7d1da1fb233e296c2997e872c0e3f3b7b2d5bcbc636231d2702a56d76e4c651c2f8470de4fba01f36625256ea5bbf27ce2bf061cd1c77f7a16d60d71bc931c05690de26de6ac757b71870a737c7a85716e908ad2b3d770d4eb86fd35beb1b1fc6ab2bb8e6735da50971a851ef98947afa187fe9d6adc447364447b2538676102aab76c089c9dc203216868f197d54ff0c3d76d1fff501bb45793deee9827e7fe4d5421e24f659af6419fd9597d1b795c56053ec98e3aba07e19cfcc3b4873bce59e93828f4d9df33a55975f695d2d381e891829fdbdcdbc07def7725b8ad97a8673dc6272fc5dbb04d9e0ae9f6fee6779773cc414ef8e9ff1bbdd5fdf79c77edcf706621aa6e7e6dd351d1e4023dbdfff8f9ca55fdb72ce18b2be0952df897f9fb361ce36d3559672413275587f3c1bfe2dcbbf1f7a0df450d7d798f6f97174def8fe07637383ee8e984bdae068ed3acdd6cd2c7538a1c54d8aeed0c417c13639e987d1ef0e3929ddbe0acce36cfa09e44554575e16e5cb48569e9fb39db90e76e0d7c86864b7b2cc37fd19d80e5c1b5c59a69a389ae7cc5f178851bf6ceb7b302f89cb430d9ca0f0fca6cf7c2c76ad1a3d8347b9d75e56914ff9a6a1416ce507ed13db72eefd7230faf55e79b270eb05908fb7fb49f551be5983fa99732d931dfb506fbbb7f597a02bd693d892962b4f261fe8a547e07e8b8c3f796806ec8f53b8f5651813b842ec18e34a67e0f344ec9392f6dae4fbdbb8711d5c0e5a7f17469f13b636b2b913c6456f9c1c0a6fcb63318ccfcb88ab08b026da4730f1b0b14d39d24987d6db157971899a5818bc24e4e39693e3fcf4775d66e7ce4fce0d8e49be8da3be99759b2608d17e217e6713d31bf7fc80e36cae83b18ce618aeeb337ecc360e6fb6af37c86bcbf9aeafe3f028b77e063d6ec63a14ea78cef50cdfed4ebf3edc0edc4cc4cb679e8df2747a6da5c7c662ae8b762f0c3ebc70df3f0edd18c099b0d46b7c4773feeb83ed87d6d3f697181acc239cea4a1e646071f46d20aeebb2e3e36d2f561bcf572d612e995bddc82b8c7d693944bce785639bccbdba54c0cfb8063c9de9e795eaedeb6aa79fedda04fe74fd008f18c51cbeea2afb9d532f33c451504d08cbe018fac79da48b3944aebc4333742ebe58bdad16da762e1a6fb76b831de7757ed755fadbe8dc4a788db5039d67cbb87f18f2a369dd395b30ef40a07d63aa31b93ba72ed34ffc8e975d1de03c211ebeb3c4dcd9b5887786db8c7b2813c6e6b7e1829961df8524b6e7b5808d5df6ec0b35b36eb4fe4cfc77f562e3de5c03bd5a28edb3c19a371c40d9410e4a7f73835f412ef269dc3bfa41f1a6efdac18c430c12afe535fec3ef60b086f45beb61b0d5e81bffb05c6942dbc48c1bbe5abe70b2cb00a76a71c598ef651946eb8efc6194c126a6fdd9c44a7f9f67ccf1addd6dd5b6cc4847a40ae2312a3b6b7d29f5ba1a98cfd28d99ed0ee817ffcbc4a3e5b86e4169fb8fb9d99bd98262d35a57da6fd50ee2d295ea2a4d9f51ac7d6e3d3550ef4f836113d86bc7c68bb5bd5c65f9b6cc6c8fda087abb6a7b1ce3a9668d648c15b8bab90fa33ff6d843c7e6f0467364dfaec4a20ea0a7978b8dd9c938fa363e19616046f5c343f64db508aa1bd4a7148bc35b2c8e05c4ea417f5f3187cbf74b9fde8a6c5d7c987e59b7047b8d532c857ae0c5d1ad7ca21cb7cf79e94c9518873ac858488c65139737e94033cff6a827cd6f15f27cedeb2a35b545a68ede1dd359a2e4e7dd779d8cd1ddfef158a9d0c42392d58371dba37fc7ff634fbf8e7b42683bfaa3639c1ef03ca6dcbfcdbde7ad9e2567c277baffbbc75c6565d688fb3f1d7f21ddc2350e29f454727515f7e3e6ef626d2d3dc7408fa9c29183365fa6ed756de38af2b12c357aaeda6a1b74d6e5f7ef7301ce6bb21ff6528cf8eef89882d6e9775d76aa1cd52c3bf68e9f7eb643786cb48da7d846a46dae6c51e11f7d71a7bebf9efc96264ef1600c118338b917aebd7723cf9f32e8c7ddf66c7b507dbb677289c1b64afdbabc804fd7321e92e3e565f6b2ad1cdc41949dd7777624f4c773ecd70cea3673e4c372fa0f5d0eed6aa1e5bc6b7bfcee62ff68e515ebcb7bbb55c4e1b7fbdbdaa368a33783b8aea1ce1074c94f92d3e63a7a5df338baf352588c107f7b57de435ecdf87dd63ec7ef19abef167873cdf60fb4e923ea150ebdcd9e46db065ffb4cceb9a36ff7f9f7dbc5f5dede4c8fdb6af18d3d68707e9898da3ef5d68fc7fdf3c1b3efea2075c69d3058c548ae6bbff3ab09e6b52beb4afb5e8bb7d8703179fa5af75c170b9b731dc9b489ede0ee8b51ded555c2bd0db9876f8f76ff9ff79bb5407db246f6ce7284991bc9de6635fd6ed1f1efeed3b28d79e563c7783c33def7be9ee95939c6d7697b80eafe8abb73be9b19720d4fe7b9f36ed3732c678837faa6ec2b582c32e29fbea9efed7b1b7c1ddabb6f32fede75b05375f065edf6e9f78df598187b508feff4dc85bbad9d2d541d20662c1b4cfcf7ded6fe9b7da379305c0e6d646d163c77bc8d622b98870844bfd676beefcc4b8bd7d276de5596d954f79c21271028efde16867aa01f2df03ffefd3bb9cf4d3d98945c467e17876bf415b42e98fa09c889327e268ac55b9d32c6571678cdc93b3836b470e4017ca31bfb40c4096ee2f86bdaff6c71f0f1b6ca3c944b635d5e050f63225a77420dd9d46edd5669897d4b53ee57a0e79e6b03804d4b63333abf0854ef62c4281719485ac3f85e98c76be2907c0a79e856a047eec7a672ed00b01bd9a7e69e768857817ee8ae5dab6eeb723e87e72980ab6c4eb299fbab1d382ec13d3727b2d3fd2e63be0de3a7e93536eef3d13a3e89a30bc6cf4cb67d56a59f75b550d3e776fd1aeecfc7b65b313957dec989511f87937e6eed8f016730f9495abea00f8871676d73d4a6ded91ebb2ee77d618eed8ac6dfc967cb4bd053dfd8bebd9b6f763d75b1f0b6e493b9ff3f3ac6adc37fb46d5ba5806f9eceefe9b14effb12f2d1fed9c8c8e38870af28d001319706ddcdbd2700c436ddcc338c6dd3e8e7ddc6d474e0cda9e3366b654a709dfc10ff7b7b1b7dc6338265886fdb6940759254ecfa64c75f14eb53df37298dfccc971a51ce7b8be5f85e3b151a1d611665d0337c5071d47358d8fd6dab3edf3fc657c099bc3a41863f6da2a6d1f65daf61dc542b6551a6fab9de27af669ac6d5dce47c73793fd9b2acdb1fe9b395da2a314ff71fee7be89e659dce3a15731e0691d5bb5b1e37ca3b812bc977c1ac787c8eefab6df8562e025d82d9f1cab431b19d6da322be4421497a2f2c2b558aad75c510c6810c86162e2b2ac9b2ecc59fd17f579645b649ab3dcdbdfc92bcb03bc869327edcdba43df2510275961cff9dcda633de5125c6ee7d198fce19a5a5611c6c570768e9e85b85c945c3af132d411d86b79991e65199dba6a11d3331e5a2f53508f30532cbbc17775de03f82cf83e6b07f7590717559773bf75ee979572d07a9672e488959ebc1ff7787e26bc503b33dff04b56c95e16c9dcd426721c241e3d13f6e2dd8bef0c7beb9d9a20e4ffdf59764e628166fbfd3815ff6b3fcfc75bb74a880f383c11bfaddbff9b6b55d6388fb017b6d1e7865bd3896f0c535c457233f6dc13e98c00726cfdba5a7c372b95772b7594c04741b14b9291db325aca4afbd1ea4396d9d35b315e4fdbd2c6d3d64e1ce5197b1e1f1a531f1179c0afb917842163ecfc64bb0a69bd3cf78fae9915fe5a44ea3d2fc2e5a690492692fc99fa69152efed8d1c963bf816d81513e056c8ae99c62bdbf29e7b72e8ec8dec39e4e7fd8d7d7b3e27fedbf9ae7b5b931961116e765fa3c8dc71bb180d3b508f8a3017d9af42fc47ca0bfdd559947b1c543eb99f37ae7982f59653bd31fb5bc981ef9b55ec34bee918a3c2fbc0ff12162707b3bc23b81bf991e9b99c1db409e691d5cce86bf2a569f5b3fbb6ecb6eeff4f2c6395b02579c738e19f373d3dbeb324f3c1dffb3ae165e471c97a6277de4d66777bb7698b34ce01c6cdacc98038e7ba77fa937413dd103315f079c1f335c6391ed39cf73d83f630f3fc2221563cc12f712a2677d41bc11e15dcd35bed45b25be2758a8af26480e4d0cb954ed873d6b5fe26e5d63fed6d447ad39b734403cdaf4bc174174c03e23d96b2e128558a3f0540ce2d60417ee0dead459d131900be0e3c5ae1d2e73be2ecc47735c7676d69093bfc73c93d157587bb9363ebae53f7b777579b232b6d0ab89c5fe793fd9a9eedac8ce4eec727c6e6cf9143857e4e2b3e4a07e98fc39e5e16495ac47791a5ae32e575b07f5c124437b1ff9f37af0398e845938439c5999319be293c779729f8f8358d9c8b6aaabccabcbf4377f0bfebd367c13f5e4f9b15ec0c173421d98f31b31b5cbf1f336fd8e6df0eb642d3bbfc5725ba54ece0d9ef76713873759e0da7e76fbc5037e89fa2f0d513fd25fbddcd1fd3c17bb4af53e8a6bf170bdda1c1260142718db76507b1988eb7a9f9c3b7dae1e77f60b47d8f079e5f645ef46f8507192131c621dec0e0df46e81313e34c35cb54edfd066547f13fafa199dbe9e2cef8d6cd37e5f1347665db5a6aec5f6b1055e2fdbe756cf93573e6fe49394a9d795d1718471855a28882b987346cfe9f4a087dec398d7fcd87e6437a3938c6e4e5eebe1b7f127615d6d46f950ec953444465f5633c666627e5a8fb5c1feecd3cf6d2cfaaebc28e1e43e9a1970a699382373314f643fbc4f4ed818aa6d5672e9601ba91edac837e467ed5dddd50c582fede845334e62951c64c0752a53bd157e23f7c19817a930f54fe149c4e15e068c2dd473205dea67a07a44c5dfa2e3fbf423bcf96ff8460af3d623795ece3fb9e648db723617a7e5b57926b776d1b9afb635c34fc2eb9f9b3e391297a7e1b8df528c84c71b621b235d29cff56cfc4dd6c3c5276e503a0675a3eda13add4eb603bf3bdae266dd3a6be6dcf4d36b8527330748c667fb64272d67e8bba4fa29c655918fc33df8dfbb38b418c7826c9d6177b076a1821a1ee664c3f5919da19f58a90c9ec3f690b3b8ca2e886ef0fcac1f9107d7b1f1f09b3af10f37073eababd4e4f4b53e69628b7bae02eaafbb7ab93af3ca893398da75833176fc1fc0b135d8531afc685966e65eb553172302756c96160f77b72f4a541d88036345ef6a4722c4d839fe0cd4d56b19b5c11cffa92e2f79a365af5e334b79247ce5df1f67638ca7ba5adcb671e8ad01a3938c6448e58780636c077103bfd4e9672a82e8da588e53a8492b02617c569617307e811f77e5fc936340ce37833a882c0e7de614d16ba28bc3af82eaf59e2dffca06afe5617e7da57de80bd760438edcb92ed40cacefb77f7655ea35816f6afcb655fa8b707770ce46eb41ee2b476b877801d7d0479de3ad531c396065d50d78ff5c4e69c4f18866e05c0fc82761b8c100fbf5e8bcc7db8a99faaaa94eb20afe88ed043ba809fcaf6d9579c063cff6cc6c31277ed4755d25138c4efad3d635a5b3ba5ae0bd81ef1f63488dcbc13baebb038e3259ed004ba7fdb17680f11ba0ee10f12fbfeb52db6fe9b566ae5d7bbee9bb8fe7833c2d33911499d8bd17de6e912dc5069e17e55c5cf4d12a2fc42f1185f966192d33ec61b6eb56d9ae0e76ee758e77f583dc731feeefebb1d835a5e05aa0974d31ff77e5a7c55a64a23018617afe5e9de410be34414b391d41f5e3245746b84f8b23de56996aaa346946786c1b032bb4cfab8fd938d7823883f9ae711387bbeee7cbd5d90698cc2648dd3c93df0c0a70edf92c59742bad77136d4739fdc825e23cf4da72fa0d37e6b7e18be1f3ed3d0c0f98386d81f3d31fefdbf3773639ca9bf32d6e3c3f9a99b8d681ad35d802c7d2ced41d233e017f1771a4bf93627b75ed8569b1542f990873b18c0a81dc28e01fae83e8731b1b8cd6e7d683389ba90dac832fadcb55373ac6f66cd47ee286ea53e9f89cfca01c8ec5fce33bf47c1058eb8f7c50a99e776a1d5c989fe9689f47b8f774b7afa4c33f45db9e894fd0ddc6cf7022fe999fb85e0ce6f1176e676ed62ff50658f0826598a3df3a55ef17981f0c2e73cb79b2d87531d686b783485a5f1c1cdc0bcabf99a94b00bb5bcb412bffa0066b86f303e45ea47d2ad77759c371625707c86b5657d0a78efa6766678e91b4bc6d5037b38d387b441caeeb8a3859a8de4b96f699b44f6e79e5b2f38437d6f6f5c59e33aa855e4478bd96ea1bc8e6217cfde2b5f054b11132aa3cf52bebd5af8dc8241e7f31b57a95df456bb558acbdaff74cec8a4c24bf80b7a70897a2b84495ff4faff2998337f319c3b5c53817d8a17919822d4f39eef72e107a2c3eb77e68f078936b2436564f3642206e7c1d989b145b663eb376107b88a310bfc45b959db1cf2571ae951dd684f5d94ece1295c7d19cf1f3f50c7b81f0b31316d0d4fae35c207e0683414fce989fc11ea66f39d4e8ff403ea6feead846cce5bdcf03ece7027c2edc3f1675674eb54fc0d95204186fd2beeed64f15daf0c9ae19be965baa89abcbf95fd2f69c333c48c087525c76f5208ee65e868315eef5529789a2fedf1f357297eedecad0ef9650137002de28ca2f340e1e7c0d3eae8913b8f8985b1767f1b6bc389cb7233cd701730ac057533978a1a353738fdfa8489e60dc81574724c435f6becd4dcd928979acf72a21dbec53af175a7f490335b8dccb374b9b20a3f7a5f7747801d0dfdcad09f3312f6283e739e9b50939b638e41810f1c76839a3e780c3df82dfd1e11498df36c82bdcf3f720dcc1695bfa2ce376cda0bea02e6f5047837d2de78786b95ac75c697cbcbe7e545729c735803f82e2b25cf7e049aab56f8794e47e82f66a907e76d5e240f6ecaa1db0be5ece12e2f1d7eb686131bbf8dbc5799deb20f5db58414cb0867c73477559fea28cc2725d5c4486b621f62aeec321a7fbb683e8d7813812870360c3647939e60360483f9a19e5edc86e279c9acd2b58dc1ae02dea72be678eaf7a0639ca05e06166d906c60a6d03bf892f2787a3fdbf1dc45d33e8d5d8687f00e5e2b959a933f024a18d74dd9659ce35b27f73ef751328ae9f3f6dabc89785b599722d33841e33880f060e0fc54f69ebb587268e3cc68c6ccb4cd5e5057899dc7a62198bdb167247d10dfa994489c1e8b471787c2bc3af6d393f67fa7b023e5bc4da6fb23cff0a783d263c7a6e6d640ef2d972961fba58517f6dd4d73017e2e4dc0ebb7313e036bdce90d3dfd73ef501f8a826df14e4898078ef6b33885fe63ad427b3193287ef8bbef91da7bbc95d2ad7a792b1bae975db1067476eb9b628c6ead4eeccb45d9cb873fad692ef502c7bf22b98ff18fb4c642a353e0ee17b5eed3a88fcba84f821e3404e7570f125eb14c8e331d7b7baa27e93e7ae4acc1ad3be4be9febf21bc7ef41fd44f03e967c44f809da3fdbe06eb6213986710d783e7ce9f4dcf3ee4d2b95b5f2b2def2e28cbfce9bc4f774d9cfa102713c283fe442bf52a15e0b44cbd2ff4bf5c71cd42fa97cba1c1fc93d3390a3da914ccc5656763c3efcf869b0dde8738e8e17faac18f7ab98cd0ae1ba057ac274b1b87637f7c8bf181a12e53d5fa86bbf767134737ca875eba323a52dea168828bb6b7b806a26f66e2a38905f45f6886ee89fbd137fabdbce4d0210fe8b92b13d38f6d53ce075c27708d7fc07b2af19247e16bd16749de735f6a47c70ed111c72bc23c3ce556da41ed9a48aa16f588d814306f00430a7342fdfe303973e403e6fe46f85eb764f96c30e0c8f94ccfa5da4aec9ad5cb2d7bb2c76fcaf9d6da2b11f4d4e1f584b9ca828e871a9f9f5cff85358de179f40c2aec5d1d28e2d0f419d830478b0fdffe29f7c5af6c196de09d7a518ba5d86c8a70437913eb7fa974de94c919f9ac612c00d7972fc355755b7ed3b7d9bfe4582bd2c411f75bba523dd24edbd075c9fc768b6fc3a1447599dc0b3163dc9513b75b73ec22d81dba58dcb46ca477fdbdc5bf478aa19cb695c38f0cef05eba4105ef84e7265bd11d8b73e130b58a385bf78d9602fee742d76ef459424b9cadeb3a55a6d0473600ae06acabd3970b6155e9a54defc55446154468bd7bc8798c1cfcd32da4cf66f3391bce218e11ce0be6bd8cb5e0d8013040e98eec0354b75d99db655e633b7e1b6929cf3d913af1cf3a71c651ff564375ca81605d7865353de0c62eff0dc6f65959ccdf9caf2f31a1f19f1acbb6649f6c3a416ba89e5d279a6be2bfd6fd727cb87e8175e8bfb2f5d867c8cd3d532f180fddea8c7cac0fa3b1d711f403cadec9cfc01dc3f6f2beab7e0831dd0d755a2758ee7d86b7adfe7b6989fbbd8e2334d2fae40fedcc6ecc30bb39deec9f5c97ccf830ce67e637ab2a83dcd35b09705ca9675e5a78bac17ef7a6e6d8acb6b8e71f12b609be91936e5bc279efb733b001e1ad759af4e32163f5c5bb4d573a40f872c16decbfe3f5747bede5c7e3601b26b69656d105eb59f543bfce2235951a4e77665623d20db64b5fbae81bf6b1ec8f2726e6d1c40924c185dd78917a1ae2847d71c731528b089b887f9ee8d6a9eb4bee3fd75b543ee3d833f8eaeb234efe4d4b0e97d3b65eb8aa1470be925bdcfdfbda1cec6dacc6a676a53f2529d4a7bdca151886f73b82b19731c987c3e8d8b88c384eb9c9f098b487c709c33d935fbf4687821b0b7d02f6ddf729cda3d9eafbb46de51e27cc33ceb5bb550a6cf62e97f772b55b8dbd007b2bd7864097ca15fd85782d73ffa806ba87b406ee476505f84fd837337864bce57da1e19f187ed1355735eba8caee4df65f0aeb38475aded23198873530a8fb881f5d8af64197ec92abbbe59ee89ff47e33bd55b9feedca27a3fb263c383c91ff13d06c5fd610fda7770f813def178b619d4493fbbc3fb00d784ed952bd3c0feda3327591bec14d79201e736f1906b1f7f5b8d8edd9b772cef78412d568c7d13d36b0e9fa3b0efc6c7be6ccbb972e34bb6ff20be4b71d71712af453ece7ddf48317a5ebe4f0aeff2789ffd6ec5dd3ba16e65d9ebc1f83bfc15cf584b8c363dc73f7f37337194cbb9a258daae0e76cf92f041c077b2273d45dfb9d5dfb4bc101e9af809e19b513ca29c7b05d5c16c115b779205ca4f3a07737d8c979e2d76f4f783fea2fed176606ffb9e65cb50ebf104f8eb541aad7db8c732f7efb6fdccbdcbcba698476bcc11fc1a1f9325c4e5b8ce3d35b9a6d9e75c237927fb2ccf8ab4d814e12f9659a82f760bb07ffd5439f954d35765f3600cb0175bf8dd0497b39ca9bc2bfd2fae05021ed92173e6a5ba010721cdb1e751dd85024c471b389c9f9853f4a17fc4987f127a8038f254dba1bf3accc7ec99e738b3b6ed87cdb32e4c4ebaf51edc136ba01f7e3788c1eea147e2b9ed1f3d2f7163fcf93d1e3d17c6bb86ecdb1da7cd03fd4bdf69b47d5d82ff92cbb2b3f86bc077851f1dc4e0797c212eb71cd511ec13cfbc97e26f9e45cd5eaa26d67a1571cfd4a71679c662edbb65e71c380a7c9fb09e5f7579396a59b729e78b7aefe6a481cfee796c173c1aa3b9aa2be8ff391d8bf1b10afcb95f16df606d2ea8bf11fced303f033d7dbd0c7c25e0a2dd67c7e6e3fe7db43db20ea067f018638bb249cb9fdde36f6e6b3150ce66205b31fe4071538c8f12ff5a7a6d66e90df81d82d0675904b6a07ee765782a02b1b7355229e4e1c7dbd48dee95346aa227dc9cda07e3f5e7e3f981b93265af61f49a4f9c772fb997fe5b782acf90d333c9bc1df5aa0e05f26e4e8ee92f51867e5b2ea264b129ba67f1646c5a25ad9d656b590a1857335e760cd4c9d13fbc765eb0cf25d5147be94f31deff3ab273ffe6db14fa1b428e5241dfe6d68e937916e61c90633bf55dbab68b0af3a2574b94f5c01b37eef9e32709f9d41873f2c20d70942e455df98b572d8befb67bbec8a32c29965a96e378e67e526c8af93213bbf75c1f27d2a2e899eb347d2d5496e47d169551c8727eb329e6ab3f5dfb7f5c639d7b1799116ff01f9eeda52c3af43bc6e7aeb2224c33916dca227dcd9717570fed1d7dffbb2ee77b594ef2099eb511514f4c646b949e5b3d5f4d1e4ccbdb51af88b13d581006da9fc4af4d6c283bb7c8934a3193347a8b2353c36d9f65a7cfa5da9207db9791f39c746d6fcebc6a80c532be811be3d5bff7e22bbbb337614eef80af19fb0a3a712dc85fdfcdb5893fe535ce58de1f43fa74a0fe61dc837f081dfb5afd448c90a37f2c6f94832f2b1c5f4c7c6e2b880939f918abfb8c5e21f9df50fead75d70af6321fbddf368e6e39f3056abff80fcf98cf92a5ac924337604d089e179e32f46d4c4ec9e9ebe037f165bc7dbf40bf8938fe501efa67f933b1b5cfc8f7bce13c6556ce7b922f7f3c86e21225f4cadc67d62e72eaa791133af129869336c1fc2c06e89be9fd9fee5184cb1715da989b0837a2b8402c292be64b9429d9fbba0f45de678b42a9f742891794dfb8b6451fbd64c5bca83cf12b8b5046555ef22a8af9722d1259f989c8a9bf62eecd5fffff38fe35f3d2f7c293f91ff61fb43d46b9971dade739734482dec25848401c5a186fc46dbfb8ff673b135759a43bc86d10aff9daf2e7009769cb7168c30f3587dfb5b177c32b636100cb84b500508760f492220e05bc76dccc9219f44799c67afbe4201d9efbbabcfc249e3aa8e782efb622ec29eb76eb2f7ac09b5bce0de704d4970ee21b7cae92e610f58520fec68dac16e0cbc908fb618cfb56e839fffdc198aa2c168a7bd866b0be2f1b59415c9ae49d387583386abb19e3aad98b2ca35bb79c8fe234ad175ef5b36e638bad439f127a562eb755e2fa775fc0f7308d1f553baf1d48fef6e14b16b31c84f9b1a15a1ed3eb15721b84e51538866b5aaf66acb6919627263fc018d0615bed16728f98a83610576bff2710c79385e18ebb368079161b1b0b02bd035c12991e5feae9d295e9a7acd21be5e0b027672f396ea3a430cfb2a25cc70dea3ae038b4c505cee7785d5cc8f6ca36a228d03ff4e6c5da8b36b83d95b9089de3e077512881b1635fa59597bde62afbb91689dde643ac3c2f0bff3d7f32e72d28f6e6e6b6f3b7d2ff6802ee4be5e434948d9b0a1ca38b91cdda7fdcdccb69eaa30d72f96dc4c53a8dc700cf9cdf0867eed2dcdc5612fa00774b8b8f7772c5bb76afa67cff0ea720e118d58e7d1eac53c0d893349c3425e619a17632f0638e575741722af6c44baa42657c9425d57b0c8e1c47597f1763411d0cbac8c445b62ec616fc0d7b9d91cf441cebd3b88a3e1ffbd8a567c357dc7fe135edb83c7c16ea63ebf8e7c0c77062b9f1ec70723bf1b1bbef967f583f05c61665e27f715ee378e7bda8c0eec4b99ae462f19209276f26c238f793748d3992cf6d1c5dadbd83d836b14a76b5e1bc57a707dbb1c7869641709f8ec7f6fb8dc687e31260ef19bc28e2729a7dea9b1adfc8f844b66f18cc976ce3c4ef73ece3646d209c133f1e8e531168db50b87eff1ff6732edfc451ee64e506bf4586f3f600ef99587e9e5f5de9db5885f5ef3eb127efee99e3c5d85b77e741dfa359b271e707c51accf69c6ad7315e0cef807dce638cf537fbd46bf78ecddefb49deab5414febbb6133645f65e786a4b9811ea335db0ff2bb41c065edf223d43be9deaed60fe0ce16bbbb4366deef42a011d3f8a2f404ec0fa813d7e7bcc918a5cdbb1c82133390ef977cfed4ad967417fa1df321f5dac1c6cfab7d9f6b77673991dbae8ce4fb73d8cecb991be16d4868f39e2ce9c93c2355998fb3e9011fe7d8e96fabd609d03f7f7e61a55976310d68fa90da4da788aad7c5788b161ee01888b19fb488558cb0fb6a47cc9bda8601f94f277f146ec226be3434f38bef60f882599d88db0f123ceb5c4eaaba37e8adb521eea20c21e1581f21c3961aeb9ad52c41cb33de23c53e5a749de7768f7228732e70dbe9a59ea15502fa06ef45e27cb771a7d49919de19d0b92fb7b857ad08ec3e7ff654dcb1166ef4ff373e4db525fafc4df96977e920719f97b4ececc6b7c9e77738bc7df67e7511cdfb31826e0be0119e660c19957feee9e26bf707c2bbb73d38fae833aaa7063f7ddf819504fdeddaf8b43d057758572c7799f71ae037b1c595f7669653ce1897fe07c343d8f22c93d6bec78b31d31f6c17bfcae99be1ff71a18c63e753d103eb4970a7aa80ce27eedf3f9b836eff4fe5d3ea5ff439e651ce77b9457f9bb7cca2fd3c3e5415cbb1d44df95a9e2796f72d84e8e6b8d3aeb03e738ca211a53cbef44f24296802b9e499b93b5311bfc8dfaccfe5e1a3e478ce129b9747a560fd04f10d7a6e189d1eb36013ecaa60c6f8677488d731718ff95a003cdb1a3f5463d16b47feddc0731b6912706ed1bd85c076cb73d60d02788fd733bc39cc3bab2dcc910df31d85ab0ad4c2fc7e97bd9ebaa5b3684d72e88aed2d63bcd1b7b4fd3c3312799d5061df5c6d3e387bea434fd362ebbd6c876f00f63e8bdfc84bd9a5096c375312fa2f54695101e5171ec1a707f84ed46aeed25bcb3fb1d55b3a75a1de01e97079813253e6f6bb8f579bbb155dc31bcb373ac5d8cd85b592d0cbe5e8c385f4c9c098f616ebed9625eccd457168b6fae11b0d7cc54bb62fc3c7d5bda667b4e433ddaefdae0c0f0bbcb2ad5ebd4be1bf25c9beb8d734591d6abe6bbb5685bd1350cd6da7937c3b57d7b9ee0fb46e3a91c8c5679394e6b621e6ddf94d26005b6556ae2ddc8673e3e1f6aab07b1e3ff9bbd32e78e8f67ae098c7de663eeb16361e32c146300bb694db1d8a3f53d46f15fce8d50feb77073c116dfdefb0ec773e265317306443f60ed159992b344b1df66c72efc663e17a747eabb95b7e1a1f576e786e3fed6461be971cbc5e2faab662ebabe42d20621d6293f8de4c1c8e6767abb12878dc5f96b5fac7064b299b3c2d8f77beec764af7797cfe7674beb6a87fddc62b1e7bec68827149e0c4288dbc8b2bb4aae53b5e361f8055a7fec2b6ee2f068b9e50dbe8131320fefe71c875ccc31e16cf6d9d9d81660c7dbf99e97d417f6c1bb73eff935d55462bf57ff00b8faf202e36dd7ac7f68faf177686275da7ab62f20f69f4de36696a45bc4ed1fedbdbb9b3dc7dc83e35d4a3a323f1b8caf93342a51ed8ce63eccb514b9284b930ffc8975faa2e71857154c651ee4d303db17ccf91da5cae0dc96e35a91d139867346a563d988bfef9eb5ef48678cfce9a41940ff9e684e8fcfd92faef7710ee40791cbcb996b73d92f9184d16ecd7ab88c63387de2f41fe0f80bc84b13afd173d1ea5ec6b08c7a214ce3e8d8230ce74c897623e23073d5625e13e3be11bdf3af66067d8aae26cf6ab8984d6de05713cc9febf23214f165d70c36cebd89a323e2ac49fe56622701db85f134575ea17cfbd737fdbde0f8678441a17e62338b4d7f7671bed33eaaa8a798037bd77c62bd5f8db9fb5e56bb57698f336be00e038cfb8d5d548c9fdf60461c79f60f7aa743abed31e0e6211cce4c51cc0d7a03a684c57f97e3f50d38bec99a7f97a0d7ff33baa7a32bad9ec07eddeef5f746e72e33d5acb29dab138d3d467377fabb40becc1bfbe5c6461bd938d948e7db1c16da098c83d3fb4b9c33d2fdeea617ded3e439d097505bc8658c39f2267d62b17e98704e0f6d882153f55eec8b113642dd9c98aaed6908322e3a36cba96c243c71957d6e97ea843d451ecd3b900d91a9f389c54757766b83c9b5c760ef21cea13876efa69ce7da1f9ff60e66b931b1cf231e471bcb34cffb17c72d40df2ccd58def4ba469d74b9adcb39ea34a7c76587d809d44b7be2768923edaf5f65299ea1d6e03a7e06d0bf9ee97bcaf377aa9becb15897827e89d58f781fe3f7cd9d7b615c20c758caae716c0b1b1f31e7a17d374c6421da43cf342e1fceb6f7ada9ef068c9327116b559931ac0ea417f43e9fb9d4488f27cae97ffd6f5c33b8464cdd787f6039a828be90713c05fa38729e54dbe115db6d2220d9b2b532e9a23ad275884706ce1e96f51f5cff093dd8eff615a36fecd6a4253173fb636e2cb7ef03589e26165e13d83c5d17a30ce3187c3d5cd48b3bae783fe2af1a73bfd2188eb15a03f12447d9b9a88432dc211ef26e18ff7b30381beadbc2fd6c2eaad6cf7e7564bb734f378fc29c16c48dff6e7b8387305fd966e962f1e59e437635f88aeb20faaecbf4d02156dbe1d49cbf664bf1bef6a2f5ba481311c1fe13da770ebe6a95beb6635fe8675d414d26d57c6abfd6fadaf55e70dd2afbb95a867c3d5bfe82826d4ef79bb45ee4e5761e4d7185b79c7a9350dce959fbaab24a5e8083ccd6369afe4b96eb8ab851a7e383fcf494d73472daed5de69b63f7d827b045ff2a1751e2e977b03d867677b96488fd8caf7df89bf7e1be14a3f501f924a1e77976a883e858049703e3c0fff6fdb02f91e5a58e809b90fc40788760ba8f7b0913f6cfd40a122f11e1d50572eb5712b1ca84d32b9133f1f46c39a00edd2072b7ef08d63a39352a3163afc57e847fb6b1931b63e59c1a0a381e39e4c3cf2e8e4ed66e57d47b37bcdef9fd9817a33e963087b977929e33791b5f0e93d8efedf92ee796dd46baab787c3ce2a5a2ef3618d54482fe70f6e1b72d38e7fd7f3956fcd07208f80b2016a63e19172a637e07ebe398f9315b1cb795b57f24f4e984b8e4ae5da5ca19dbbd6397eebad8d46218cc621e801c7439d747f75d07e1156d8db9229eb4dfd47fc77eabfde2647c6693d7897af908af4b32ccda5e80617d050c19dab7faddeff0c777713f6b9f3d3afe363ab6ccf2ae4ca8c6a023fb08b1f02f986730dcd4e51373d098bccd773b84ff657bc8b52b9dda658bbb140bd512e7713dd3eb067927b7e55cd23d7ab76600f29ec077e1cc47e4ffbb754eaeb829a31f58f702319ac9fb725fb29d7462cb8837f71cce6bcac14de7b85d7f12ea401c1efce766961cde06e0bf3cde5d1bfb7faaa65a44cdbebea06e165fed529c3af47dde990faf8d52256fcb07dbb0cf3671c37d8f622b62146ffea2f9833db6382e4a7e4eedf69a56e16112b7cc657931bdf39dffad2fc5cfb47af9c3f6748ceb83b1a4ba7fc4fff5eebaa31ee3d76e39c6f38f7b6277e61add60f3dadb383a340a636efa9a5696637d37ecefc549323f8ad61563ee1f3c06ede71f139cfc2f136feea90ff02c55d2736bf70c5edd9d6784b9522473fd733384ee7ddeb78e4cdf96d94feaa9797564745f38ba816d9ac9d85bd9c4db471850882be97b6b9b50514f50b3de9d6fe0ea66f7397ff13c228ec56b13a4aa9da50f65c89aeb898c0f6e65278e6116657d24f2287b2f84586451b2c855f65e788278a8b8479296ffd137f6e90299f1732d16ef05e005292e3584f0ddb957d3a60f935c851bc01c723ea7ca800fb729a94ff952c46b215e4414a61b916d3211be6c0a3f11ac437dc0881da5801812f5aa4f81f7655bcab92bcf9c6be59bc25fe74b159780834a0baa39bec92acbba32eadb213a39f3c48999debda73ee7ff35813a4db6a5d377a9710dc0b864fd6521102fbf28a230d7635bf4587f967bea57e5f98988107b45e3f4940919e52ed666996a1963c6133125e04f400cddc68a0f5ace2267b78d393c1c238ca9aa2fad23a589571b2e8a3f8e0dd52e6a7beb655bfa0767addd7d1fe607b3b52c226af7c4f1a0d8e6b13e868899fb4dddb2581c25c7305588b8ec625cbffa3cadc942fe27d8be29e63877faaf2813604ffd1285ff5e44595ef9d96be5a5cf5991fe9bc693f8ab8c7f873ed390ee0ce714f455bd704f11e77797d780ef218e797aee22d8515f7ebe8ef298a714ed1c8833fd6a8239dd5bb872d7bdfecf26987fd695643fe9b3092ec7ba5adcb036029eef8564c177676314100bd3df88ec74f536f1e7f2806bbfc24db654bfd6228b2a2fda147d242b3f93c5d2f4d7585bdca9e8d1c7367d1503ae9f83dcc3caae2153fff387fb17b84e0a7cf64552f959921722af5097ae37227c15bdd8dcffe69c0fe56d2aee2f107d76b6b6fcb5de673ed5f81c9c3cdb8939579b21bc366574dc5607c5f927fade34df12d5ad3a453eaed7f87a2cd48ee42ff495eda84f3bda50e24956d94c96e294cf12e8ff41b1fab5edc1b1fbd95549606d82cc5913e1b0851aa96c816b29f2f53853cdda3bda530a6bef3ceab7bc74b88754a8fd12135fa882c4970afcbc2fd25147e229b8bd3cd15ffe6dce6fbf8d2e653b873884e91ce6cebeb00c666e2ec4d2237fb6b60fea200a6461c71bfb61a72f39626b40b754de25cad54836a7e8e78771a6d248cbf0ace852c08ffb69542ca3cd5a6449eecddfb33efa2996c813b129e6f9a6c8a2cacf44d1cfdff53c11504393fe0239bc54b95846bfd69e189db7f6c546f4e2ff7c3ce60cc40f2b1727f617f73519d562691fc2a911fbe06da1dfad405e3af328d372007a6c8a15e70d2047afcf8db4ddc45c1612b9b660be101fa5de46fa48eb02ee1d9aa1ac060e3690dda0c78ccf38a86313834d77353cd6da5f04eefd8b3dd6f86d915fbb6b9edf75f5629fab4a6e933182e7004ebc719dda694bbd5527d73198ca6da5fd0b9863bfeb2afd45bd78592eaab5f55f96d6b6227f6199faed5e3a7944b1cf02717a7e90975dcfc4b51b8a87dff3d1be42afc5e0a2006f52664f5d29075925b8be89ab8175af80f870b2b33d6ef9dee0cbdd9febd4b46dcbb9e29efdce73401d1fec1b6fe36b39bc9f898b273949cf8e898b7b757da935c7f566e243ce925d4bb808900b284b3e6500f221e6bc6bbbca7e8fbf2dd8f9da7ff8a83147e97edf15c9c4a32ca597d91ccd7b572da04e421f3f8ed1c0fe27ca3fa04f1e63bebc44fe3ae63c84f9e4d651d581bad633f155bbf59b55a2ea3c5d3af1a2f316e5f5a1e9a13f3161ba32f23ba73e71f2b4ad1c9f624059b71e14d4de923d25e83d0fcd7ee1237e81e4397c37f104f17de35fe0b7317105c0978cf3e7cef706dd0c3c9781f175a3166305c89f05fd242ff3678b0dc09c84c5fb1e5ae8b981cf9e5509f83758a30276c9f16d3392414e8d3dfa6830676dbce70edf2650cf1fb1e6149efbc2f68ac31df85eb3af49baa92bd1d6e16b4df2565adf03df31f2ed1e784d638f8bbd5327eae203d48eec46880b71ac0df3883616f3deaeb2a4414cce3d372cda6e585bba877af19d0c228f6c5fcc27ae8c4d02d7c06da9965937eaf331c9759bbc977bfea31cb4a9e5e2fe8f5a4e520efca6f56e1b601f10670d4eea21271845f30c8801684c7d0ee2950c3666a098a0c9d1615d44c33da411ef04cf934dc6b3f0d245decf41ef677db8a93cf56bed8529e37f2bef92e4fd17ec17cbf03df74591796192f7669e6deeae4f5866e410a771071debf47712e9bc19f12e12b71ce12690abc0c626b76813ff97dee97c5f2f7cef83d83c3aef435f604371643d7f98cb0f6d7fc23f986f823940a837807db0462a94ab5f345fffc045a0c2dfcc074fb926b0c39873c2e2f3edbee9b6767cace10d70e27befdae794e56578c439d0ecc5d7743bc5ecfda6b0b1ef3f1e238873615a3b8f76f6a92b7de00ee33a1fb14a0edda076cd431e05755b97d97fa187e834c6c1bcd88feea5ac8c7d3c7ec9a358a5d1c1eebbd1b83adfe5e1b97affdf7345f428d3a4d105dd38a665f0b211c6adc9f76a06f013b7708d8f8cb9a676e3ba6871ea3e3107d8eceb3ff36cac00d38471a70fa7d686627ab2daa9099e2d99721875714ffef7e5a5f2e5228fb0fe4c9626cea77d608ab7a31db19e721468df29b0d8a8114e4e85fd14a341314a93efb0d80c8877de9a007b7d185f957b2018fe113ccfc63cb8fee0c1f83f8ee599bc86e12c58758736106e5d91c18366b1383a790dc6318cd68b936b80be69792c76ed2c4ba492bb26561413ebceedf0053d581fd65aab70d6cc92bfa05607f23a2803d0c6fb0fc7b42a3ec6c57be7a5b62bbec99f4eb54f2f9a415dba52d81c0e62689def8998836262475a5fe2f176aa8163996f71eb9b51be77326f3136ebe8861b635e5a8e1def2116a1e542eee6515a5c33c8734c63d206e9ae89479ca9c6172e47be7026396e55e039bd9be7a37e2563dcfc206c2dccdea97309b877f424bebc4f0fa83f987b00ebf1a1e67b9595d49fe061ec97ec843fcb1aea73083878dfce253aefa7893755ce719ecdd3a16d49cf6d7a82270719a8535d5ed6cc6dc2b537b466bf5fa6bfc5e8f767334b4ef65b4403f474fa303ee34fdc4f1ca678ff7c5dc8a8f2c42fa1800f7191abf42e56e0f2d6b5be73cf6124f71c3e5091eb35dbb2ff375bccddef8c7e253d9f53073dbecfe2f0168b23f4c49a71ad88b6eda14fc9b72c330743d53bf99d0c709aa37a05acd13aa08d117a45ac7e48ea81e2f6cc6c8339d51f2d0ecf8c470c32b52eb3de6048cdf9846da69cbd91972afcddccb2f5b6da29e422cdd4db72cc6f8579cca8e7b8afa4b5b4fda3ee1ce539fec73134af62efc3e154c37e2f66fdd33c9d0197a367389cf730b61bb09f5d5bf87fac0397cb6a640fe9f19ce4d5b8f6c3d9d7538c6dd70eddcad40acf08eb3ab1bdab59baeb0611bdc5a9c2bea7601bcce11a98337812222b4cfccc5f6cb2224d0a4fbde62a5c6e8a2ea1dccc07f9fdd887d7e5a7c29e05d89743254aaec427f6f561fd803964475f606fddc2e53537fa7d228be9ba3dd47c1c9a213a4e651df584447ce1b83e8c9ff9b5355809c33d80b995727e682ac2e8b8fcd3469773dd1fcc8fafed387632e1b2928767e67d8c165e66f429ae25ade3297f6dcf2be4a15991fee8fddddbd23fc815d554dbbc86cb5163634765f4232f156334c6cfd2ab836b5bdcdd777387c367193fb98e3858bfe21eafe53ca3cb0301b9816285f78377a7358bba148ef9c99cb6dabe6daf0e2e7748958c26f5815cbbb3c4fd82eaf3a6f5e40e77dec7768c75bbbe595e13c4bf13cea22bfdbb5e6fcc4f35a9b3a518837038afe606b3cf3cf24e0d4bd20cf23cf1814758f32270c685f8acdd5c33cb41137ff6a24d56801d37db5a4e6888e7aeab44d59b87752ca36be7b1e52e75bed9abe1181ef7c3d9d0763d0e5f14c31bcf11cc0bc17b193ba65427676edcd9dadb72fea7b9f893eb3a106b319e730e76ffd0f4761f7ef7d47d1f679db8cf328eb16643f4a9fd833fad8bd173621de9a867c0df5d7bbc6fb43ea01e46fb9c773d84a0cfa9c5b4189f3450c06b32b95781df6641f205e792bc51cc89f22badb30e2b6da7ef53c8c9b643043ce619ce072d039612e6923c60cf658b73f9832ca29e2070ce3cdb435f8411cf7f775743676318937759a04e4219da98fc56369d6baa2bd323f62c983befa5fdfcd4af55aa08b7bcdadada4fea993ec5b86a398df6e8e459a6f337363a1e736caefc064c30c5fcae6defdf287ead20efd68fd73b1c3340aca2df96a9c14c729ed9e4d5faf1b3ae517e9699489e721feb3f30df9525859f2df23e8df4ff592fdf33952cd6576bc31bdfb298ae25b06b2cffb3b8b3cd2d1fb5b30ff4ada9b7b66b82ce313af511c7248e8902de3b8bad071c028c4b7edf438bcef1553b4b7714bb12f46d698c79cc71eee0b8808dbedc1432ae3cb95917ae0f6264f7887b2cab76df5c9bd0540bc2f81a3fc8e536231fc5e09c99e37134beed20be9b99e1b7a43948cfba8fe059df482fa27e8d8e773127c60c55e94fbc87384907339107f323f1001efe36d683fbc7f12a3e676213ebb9383abfb7bc2a55f0a564b5f8ff606fff6079f1f7eff188bf54dd63441ec6fad03ed036f8a2892f0f9f11ea5e03a1dac7e37c6847cf35e22b7e78cd6c001d7d75630beb723e9f3edfa3e3ee7854a1de946ba0d16694d54ed533ea51ff380666dead24f94f35d05e633874b3512c624b36475346df84c5feef966bdf9fac4d46358736df6f7c0ce2ccac4c0f23e4495c5a5900b6a18df9983c8b8d8717a3ed4ead4fd1ccc4e7d6c6a98f107777626a068bc3dce9139e41c4e163dc14e779cab8688ef7bcca1eb950dd1ac7f55e2dd0f6835c878d013aeff588bb7813930f493e88e1f9a4f191c4736f6a1e31b654344eddeae4395ed6546fd1ad40a7fe6a82b9adc5a4fb38b8e98abedf77bb177a7cbfda55369ff842efed2a51905f19fec47b3d07eef567e68dae52d5eea1afbbe5c12479e45ccb9c43bcf0d03bd189ed532f6de87578cfb5457dc8e5105e9b3197847bde888b63b4d6dc9a4091aab612caf54f36e55cdb20639fd2bde79f38c547c7dce525dd67bbe3d370c7c1f28bd81caabbffef387b36265637dfb551766e627175eca05b3ba46bf6b7182b86710b75927e762ea81fdf0433ff3ee11dbbe97326c750cdd77cd76a7f4b515ce6c9c43c8ac6c63f263910ccc98feb177645e3eb63ffc53a6001d8351f6353d497907a5a0aaedd20ecede140fed0b5f64c6e3bc3f98e589a224aa2b5a772bd1e2b4f2ed67ef65a7c8cd64f51577fe07a53787d1ee3221047398e47c098fe115f5160dd5c57fa168f3bc20518bb977adbabbfbf9e803e5a4f75a57d601aeb71df209a0f0ba3c35b1ffb84e8eb9a77593276ef99e345dab706bec067ae9d2efd73d3fbbb66afed9674b71e940735e046d7f331c9c1cc33e8b1109ea0a74b2f7ed8fa283af6c3f02d476fab85ed69b4175f6b3a3767ae146f726fccb3ab76085f9a59a75a7b5faff1f4dad33ebccbfbafef9b104634bb8e9fd9d6865741fae9f61a69f6e0bb50cc657c3cf9b7ae8f53e05a07dd63b14bf42ee6b90775259bef4bcbe9fbfdce18f577dc2f665ce178ff3f0fb6f556ee605d16bfef07f7731acd012d9f01d3e2d4c00f660e523c4cfc621dd6023fc9a4ff994a655e804f1115bdf8b5f61003a56dea4c2491f639d057435f106d799f7de8dfda877730a73bc210ba3dacdfa1866d9f59bd13180c40606221da678d01c3104c6ba21aea75b929e6792692027d73c66fd0791b9b0bfbc375b46c7039c8a8060f72505137089713df70036cab14ea809dfa72ce35aa2e16789e13cb6e5618bf6bd91ea71e2be3fe0d89aa81fb759c4304ff76ca594fbab81eb2b9630b68f9be6c82398f27f2618aeeb72ce74ebed870be24ad979d9b41245239b9eba7bb1a6c8377717993b7556af1238e0e6cc79c98b69662d8e11aec792e2e6ea3f94adfa6bd8e6a0e5eb9eec570e258fbf01bd7f13ccabce8619f5989eb1d7313536e5ce6dfb0ffef28e78a3876fc66f3d6a9c9224c2bfeff6173906ecf9b8ae360b1d875ec1fa35d6a6b40c94e8535f0e4e432b9d695eaed2d87846fb0f550b38cdf3ba07a13acbdc4e735ba88b83a4c4d8afe76dd00bdd820b72e27f9828cf261b5eb8b186c168cf7af7684adca6c0e22400c29f036111ea50afec82dfdde55a972795325e0af7cb0e5201f62b94e77edd0b9fc5d1f8f783300c3e267e7c693aaf39df819f8b918bf70312780cf13ff3fc6deacbb519deb16fe4b18cacf38bedcae181cbe37ec6d6c0bd01d82d42641387eca71fbebbfa1d54882a4de732e6a54c03402d4ac66ae39971c83a3fec0f38f6bb7774eefda28c67c20e31aaac11b8fec3fc6a4b91b7c83e5803ac6eff02ffe752c2ed4ab6b9c6023becdeb5baef1efde0d3faf870124bb19793527fbbfcc070e93fbe7f663aee93ef221ffa06f5286f1ddc5faf9b9a83f4cf23e158eebac2a979cdfb9fbf9fcc9fd8c6fe1f9ac10d73be56b7155188bd23687e4f2fbf6db413cc85f4b0f66be027d4c97bf1ef18c31a78da785ecb0635feae65e7dfc5bccbaae5e4d6bb8b8be7ecfefc4d8bfa41916238e31f663151e0b7523d35a5b7e66c81d78f7fbe3b95b7a768803787ccc6fa88388dfb079f379078013d9d67d7ef16320d6d0868b7b7d1fd9ec2fe3fd2e06eedbcebb504e78796ef7712ea8bd34037001fec3dc722ab0bcdabf64b2f038b5edbdbfcf2330f67ec27f05f8ec32db03ff25e9c5426ee7c06bc0e2dd8fff94e13426accf664eae8b292629ff67b712dbcd7efe94db1c4cc67cab131e39375f7971eba9efb0475bd1f4ddc5bd8d7ddb30ee659c839e3b3df74755665f745c04b6d3e78d235b09e7d749fc7643ef1c38adf3b16ec9a30ef5157138369f6f7df566dc17c6bca5ccd1be122759b8b8a07917d5c0b121e65bb218d1acf171d2381f202716ad99224ef7fb5ec47fe087b8cb229fc13b75f1a6236344d5a02f4ae7cc5366b5e23607ed3427882b00752296415dcc8caf8775adc5fca8c2f91275a5afde3505707b7cd1cd18c755df8c2fd11cb48073dedc7d0037c2633681b9ac1770af1ff84ca80df70e5aff633e19ce9dbb6bf6a8979587e2b2d5d93f3b9deaaae0dc75ab5570dced8279d90c9a7d27b6dbe61467c46b51ec8d6b0ee8b7bb04fe52e416057dd2204e72817a627920b618dbd77fb3f624c4e2f66d8cbefecc1fb39f9b217e90cd64e309a0adc43ea0e596108f0d73a80ec01db16e86f85abb6dffba83996379fc8b62fea80aac7368418f3aeda81e0c7cc067a7477af4ea2776e69c89ef31e63f376b6329279ce88009f7b4bff34bb372fa00c437b26aa11e2473751687d4ac11898a887bb9f76a84fadb4586f1bd2ef30f55e877ee876d2c5dcdc1618af398c17a4c3e15fae2a11e70ee253dab9f131e153b7fdc2e54c73eb8f6b45be0e49ec582350224d414b838d8a68f775bccdf08b3febd3c52c7e13b789cf37a1180a6f1d05a7e9e3a894f7270ebda767a3ee29b3ff6a1666eb08fb6b801c6a47d73db96378bb6c53a25ac473753c9edd95c83e6726e0b701d600c4b9e541807d97beeb5bbb33894b6205d108a4d72ad04db6d2a913e67e43bd9c0efaf7e7b017fcb98abf851af3ef597eb05374db92063afededbbda729d4cebb02fb82eff461bea5faad9ebe9ff7fa936afbfd1f73a55a538535dfdaf512d8ce903600f519fe25afb22069ff83521dfeba03f2b1c0f735568bb2e12e7f97b5da6ef6d317b97645f3e235ec77f2f7709632a1de98c95d188a3e25715de8e18b382f182714ce48aa0bf4963c5d89c981b3476db287edb0c02d6f24d481c9170efd6ccdfef8cb12bc3ec547bb1518a61061263a04ed79e7d7877ad7795e8eb44e71bdb0db92d1df8fc6c554836995ef4b2b8752dc49438a70c7dd3c3114f6b04bb79932c02ff99b66bd6978defd57ddc7f46752e07d089d78d76bfc3fc312cee2a9c5f903300ecc3ff702ca24df4a72c8f17358827f38ccfc8d7f140fbaefdc4b9eef3a8869cf8ff665d137eee8c7d4e73b9d9b6f925110a5dbb3a92ee75bf18ecbec3b2434c5e8e9ad1437ffb1beb25faaad4c07b4fdc73bd4c883783305e2a9c07f56ade29c60215b34fe4d5d3f357ece3cfdb9ff6f9dcb534e2e8da24bea32665376b0e594fe302b01256670674faf37dbd3673644e7382b329b7c962d6b83ae06715f1386ab52c3e577521071a7b83e5cf1dac46a419db615dc4a7ed3ad5f82ea9e600d735e23eccb7b2805c21f03721b75ad7a9213f01d614ea2a883b3689cf32b9e91cc71fe159edb13f689c7e54c5bc5789885f131d7c39b7045df3dedfb7219e21c09e2782f1b85a95c0a5a405e64a8e9887669c65d6a9e4366e036105abc172b3bd838f51dc2c9798c57e43cc91eaf0061d78db66cebe2287a08b3f829d17b6bae947fbbe69d78c6d62d48edd1b7bc6d3e3a6d8705ecc662ab17ac094b75f5c2d173ff92218cbcc8fb89e769a6bc92ae030d1c0b7edf102023f5e33007fd65e119ffe2ed19ff46d7ea9c1d6b89963b6ac97df86c6375944e9136a27bf964bad42f968d12ee6ed4b357cf8db03ce03f9bc49c4450e5da08a9b667e0375607f2f0b6c5c8575107dcc9e390739adee5ff4f60ecb5355e8f32e4c815708facd3aff54d6eee75abaf4d80ed626393a8dbdec4298ea07705694d9872c1063435ad37e4eefd3d850cc215887629ea32d6af7cb95a47aacf8bd261c8819fbeac9cc29b8fe4bb3f63ed17e8ae1c9126a3a9fecbe21eb9a44079e76ddb92d666fb27cee5f10b7fd306ba74c3cbee464717f39e4b326e1dabcc54945e9c3fb1b3422fc636a8a3b9bfffdfdcdd0bed13cb1617e1f331e15733c5b7dadc559eef5639f309fededb42953ed6d5f6bac29b9cbf0f9de422c05eba81bd46cfa688bfdddde6f9d9dfc76d018f26b343b98eb8b94f303981f2a856ec38ed7c2ae29910fbc021eef59d7589f2ffe4fcb75e38338527cd83ce78daef7a692f81dd78cf464fa679d88be2a6e66ce47dcd3c09a1fa60d22ac0b33bea06d6fcdb08818ebdc0cb7791b2e2e3c1f199bd59d9b7d5425f0e4cd9c06ece21de3f98cf14f197b746986f9a0924524cbf48d39e2aa707107dd94e4447128fdd990fd5145ba236dd1ae193eed39805f0db339f1dcf55599fe96e1e22413716e8645ef8e699903098f8952e6a0b0dbb41e99ebffae93f877edb63faba2859a4577bdc5a92ea59e5e079e7168bdb62dee55d811e7145c8bb9a6e1f8268c4f8a31dde6f828d315707f0b7f1fac0bee5dc3751e309f16e3e7a29cdda119c4dc9d9fcf9a433c53acad82e7fbdfb99785801c7a4ddcb4b25c3eea487bef597fca88ed786303b477d274eb55981ffcef68d67959a4f7bac87ee3f6edd20cf1c9ebcfc617d24d94031f397e5739abc2ee5123b6ec001ce7617a6906d490ab93c5a35db71f35db12e61ba39f785149aed521a57e69df877b07ee1be1fd0e5a432e1e7d0d639bcd6522229c3716817b0f80d9ebd4c1f27c9bed03dacc3ab43a5161d711bee854997595351d865bd7928d69be5d831afba7aa6ccf5e9bccbc7e5143f661ec1b8a519c509bc1ce09b49dc17bc458256858bcbf1658a748db0715de7a59ccef2acce7d271ebd0f9f6ddd86dee677c3ebf33dabeb23f44db0f9c37bc36aec7fd958ff3fb0eef9bf4573e1ff14676fcdd402fa489722d8bdbf41a93679af16f9f72dc8633bddbd1b855457c57216b568bbe2ec5e7d7f974a665a267cacdc79fa02355cc2e0d7ca38dbfefda9629cfffbcef218bd8ebd774bd723a86edfe2bc613bcf653db5a632797e25297991eed1ff44525c2ccb5fd33f1062ad43471efabd0e7368178e0276d1b7be06efc3cdc5ebc5761fc203e937355caae1e16519d309fedbc6b114365c6d7a9223e5115de38ae7351890e25709f234f5f035c0d7bef6fcbabefbfbb2bd4864de6e826894ffe3784ed72326f1d969d4a787dcaf9dad7aa5c76af456cda8e3880447455d85d5bf2179a44dc5b3cffa8302e7e556bac7f69cc1a44e393ee316b0ecb13c70f490bedd244daad8587f4f25ac427778e590bf39399f354d4529d989bd79b303ecbb57ffe78cc34a1e81a4f8ba12ec4590d2bfafb165abe636f4cd13c3fdd3eb096d3741d68c239ce7787affd6d3ad6da04e79436e19adafca32eb340b1c67138eb5ad46f0eda32bdb5c58275dffd3525aa13811af607376fe31a201eaa58200fb83f17f3dfe1e8dd04b6cedffbdb7c53895c531ce7bfaa6111a1ad170fe47bdcda423cda557cae8b19c6f47b79b7ba62c5e23ffbffcb316d28deea5007ffb7e314e02ce319e42a50ab0231b087b453388f5c6509ebde2762e8e97b781c81db55bcdb02379300fe148f73ef7923b2e77296c5f93effb5d9dff6cfacb3bad2c637057f6feb6b2c871de31dce54c705313fe0832c6e96270372077b385e379e1e195c9be2a9781ffccdbbbe6eb0d602ae2bcb97fbb3d37ef5f04a60173e010e81fde532fb18d5e1e2f52c5ed7e3ab7cb46baa450de3bb027ef62c56e8cbf576bfce66a08575a0da75c0311a9fcbd8348b3bfbdf8891d77f0b3aa62dc451e21c3754c50dea39203e3788bbe2f82ec40ce61647dc96e2287f5aaed1a02e32cc93ee176ff520dea9963ca8cafc58058849f57db932ccb51ce299225e01893c51fd2e226cdbb0b8b6b1ec2c7f3b6807434cde8ba31a1f25bb34cc5d9788aef134e0a056619d6a39e81f589308f817c4f603afe0f22e0b797c4d44cf381cca476555f917fa633d3d0febacf236eb9b0ce46b47296188f21d8d7bf33f5ee3e0f1a441fe3467dff4d00c8b19c665e2599b2ccabac829f608dbcf102bc4b842d796f9659fc4fdc8372c9790fb63aef84d78d3e403dc1b8f4b127ce07df6837219b4fda95fb9969deb817f329eccf8e296b3f0a4c2ec376b663503722e914dd955436ae32c0df892f6bc0e74055c4ed0cc1db456a48f2a4abb3641dfd9f883ed20ee66bdd8381ffbad2a32e393c0335afcef903e5545f641beda1b1e2f7675a207fc26e945aeb5af29c0dcb9739f535ff9da2e8465a0b5e7b3a23834f181f9c770ac19f4ad9b50bb18cf617921ec12fa6887e38530abef6a3dc114143ab098c283be5a3d618ae9edcd5a38e0bba906493c028b0be7a2d4db86e2efaca981dae475991d899bc7d62655e1c2f8f7ef13beed7715cecf54f3f2933008fdcbe034c4cac8ac772f7d75d06bd74fd3796ebe07c6a3c27aaf998fe06f17ffbe5d54f4173c5bdbe3efcd3ad56defe1b606113a4c41c66b43d80623dc836db787cb88b6545fde0c22f87a1ce74ec44996d9403e3be88ab64967b9e3aa327daf475a281093ddc922be57e89ff47571fcdd44f9bdda4fe62a738f509e2966e68ea358fc9fce6b4301363dc5967e9b751aeb18e179666a404da20dcec5c72680f7c871605befd670ededcf917e126b6240ee693388a00dc9f63e649f1570f9793a7f0711d27b82f72dd08ec19ccaac3d125fda4315b199971fd35acc326ab5c54ed8ebe70faf5db83e1c24ff6fdb5fd1ba2b7dac028d9b36e9185f7e35fee1f87d83fdf7bb3988471d92ff77109f3eae05fd69789f84631ff11d3f64998bc97631fd9ddfb1c0d839f086d9f82c716729ba7f9d88593398e7c01caa6b2bce27909ba3bc1bfcdd8ffb441530fe30cbea629ed2fc4bef2ca77849bb035c288c51e9fd8df92ad0da5a51eed1ac71c59cd720b3a69df11d304e22fec47534b0314ce2d9e7b109f941158caef36813716ddc37b263bd316b3fd6b450dbe177c74f93c48f9ce3bcb1e9571d1dd7ee8857321249cbb1e8fe99f9d1e3ecdd7c4b8e9bbc16795995e9a34e40ffe70fe311bfbb4a167319b75d73409e5b9c93e44945ba17617c6f903f77250bd9b5d4177787ec46f14f9fc7c88c0dab6747dffe5863ce11b0c7750171f1dff51bc745c48f5d2897cdd0c69e2eb7bf0d380287eb046c98b1851315a5fda49f9975f821871f7df6cdb1f85cffebf94735c80bfb0ac8a1ca980451a26d913fbd1619c5cce733b51f6b846e8bf9a09c2e3e689c99f6d37c7165df1bea1d93f8ddd79ca29a50d32ed215e2636cfcde616a413f0df5686a734fb4a9a1fd2f3887ddab409f25c6c10219e5b6be1eea4308032029d7cb73ad3bd7ceb3e6dc95d3c9e98ecd0c39a79e49771f70db789fb3ab81a5f96e95cd2bcecf1fb25b73d8304f10f13aeded3ceacd2b7759cc4877a9f5b09bccd586cfd150cdce963881a96e25a57c48d71c72cc3921b7d6d5b419752d7f20ae6510918f5f54e11cb152b138b7893e51ec24a8f6232d10d04ef27245aecf419ffeeccc9ad468632768c7c95632f6e7f637bde34045cb1de75090f310c703eb73d5c5fca92d737b8c2af47913b1eee9b7c7c23cc3fd77d2767eef57c6013bdc711fd83694d9ce625668ad33f3704b7dad1904f2141bbb1cf129ef2dfbed657e9665861c34c27bff8425cbb693efd26b6b6f99f5bf2d00af37e25f6822016bcbb3e5f6c3dfb03f90a679b2d8fed1c6a438aa2ccc1c8dc73b7d53e4e405ff68975ec71822e2e084b9de8c85bfd856b8a26686d9b7446d8c28ee797cd4c57c839a5fd94ced09e3633952e237591e8fb24c97b8e6dbed4dbb8a5993e337e313414b7b58a0ce43d95d2be7b7004fad8aba9f7e1dc1f7c7c078226d29e6afd46719a49757d460262ed9a559c738bfd73511d4258d8f477bf6ed85fc08c2f38fda2a4b5ff380f95bbf3e4f357e8ef4bb631a3c666b6c6ee2f4f6f17c560b1778c2908f16e6c7c2e2ad6298d3b08ef60ffc42c85bb5ad8afcd8969e3e9479ee18344111f723806f7ce6e18c3cdf13b67ddf13c636f0a7221e92f029c81f3ce28e447f1dda89b8a4bca2f713b4c9e293f649f2addebfc7abdfb43c105f6bfc2fdfff451632601c5f31c2c1e54f840d92cf136e2c7c57d9b119688d33e7906ef7976b4df76fa93facf38b12df9cf3a7dffcf3f6a3f68ddec52e1143bb022e49dde89efa1660748abac8009f40b9801fd8476ff317de7ea36dccc38f71d5833e6f06f19fba107731e877f85618d7f8f102eb56fff0c7b94816acc910d445f613c7f033cf0f907fac8b396b0ff56d11b08ecd5ded3007fcb2437bb70a178463599cda413cb5458a1cba43366bf4bf34bfe27702fb3fce6e6d11730c7bcc0d2346bf3d9a027c90bd0a080be5340a4e76ec602d2fb4af5eebeb3e421f4d4510ffe95ba7cffa5ffaedcab54d4da87b4fdbd0c77ece88eb0ce626e6dc1961a286b46bc63c2fefa36feef70dbfbeb810234d65d044a5fa55d0dbe39a77c1f126d6e11bd54bffd7dcd7e33f3a510c8134e1c4bd817a34aa6576e3ca7c8b3bd6ad620db4b129b0ff66b3e600353ea4473aefb1cf7fb31fed37fdbace9997c98e7b35881fe3fba2de1ee824231fc059625b26fbe0b870540fecee8def79f20cf41ea5bd2fd5af60bb3d0c2d5e9bf915b19dccbd887145e277271d043cdfad7d45fecfe85c4feb4132373cde83b841f4392f6ea7ba5c52fec69b7b0f18c769d1b7b5dad1ae164d9ff7984342cef5d271084de74e7eceea0b27acd3d5da85725faf8973f9f02ff48fd71de3a1fc71453ec0fadfdb0be6c27fbca0ddd9bf3e6de8b79e7f9bdbdf761be24c8c7f511ce0ada4f84619c233ce2a8c3fbc3d93462772c9786b88ab37b3df76d2f7bc6fecfa4e4173df37eb62af66de98c3f5f4434569208bf97798fa4e1556ff1d6c249c5b84f916415d602e5e9ab50fb807c4b92ef3bf65c8bcc6f9231fb499577d6e47983328067cb1754d43dcd705d5f50eae864498397b359fce43435d3a4ef6c9f57fd5bb8abe6376f77c2cd4025b399ca69b0fdc3ee4d103fbc45e1fda563a5f7003b16e71428e78e0ea82f80dd78c903f4963836c686353ac3c7db5c1d831b78dd550889764332c3b198a6d55cc7f4f7cd8be2a66c01330d218b23e7f83be5061fccbf84cbeb9db0ec6b102172fca760dad395599dfebd27295cc5431df51ae086c48e847c83d78a99c2f4ab18a36d832afff90ebd7d562e0f8a47a7fb1b1ceba5890ad65fc52e0f27c7758dd0ffaff07f9a07dc4b1607a0f840de398e6e607fd0ef9f50dea0b98b92978f56d74af5d9e96cda52df39e72cc84718d7f80afeab4f63fabb2fbc71d473864d36f7a9fb39dfedea39e4155dcd8ce70f7c4f974d626df9c67759b3b5fe71fc6fc48a3dffbbb0a63e4900f04631f8f50a756704ec4dcabbd58fce96c41f1b5cf5f2ac2f5b0e17d87ccee831872efc53e12ea7b381ff0fb7a423d5033d743dd35cdfb19e1625c5fa358e5475502a6986c20fbfd881b1f340cc1c7fcbf7c43d44034f34dc46be1ac7b5d61fccf72920e32b2e3bb9ffe063ef2afda8b1bbadfbcede0cbb7fce5f5438ce9278ba02a6e53debc777ca6ecfcfff86ccc41d2731caeb96fc6f13cc417beb1eed11fda17d1bcc3dcbe4fd0a72311c870a109470d71d01d8cbdee4d45e9870a17c4692d398f1962bec2d61d47a45b14925f487a4d737826b4e329c63ec077f91b73da375bd7f5a7df99fbbbc2f8a7fffc23bfd79fef202606717e9f3715f86b7c0e69339658bb7cc4cdb50f8d0d7feb1af6290ed94c710d0d613b5aaaa5205cd1a7623cb25e64a33610561c74cc0e127216d8ff7fdc3d3fd76fd7b10900fb79ac423eff05e3ad0f6e77fa5b45f249adc563843d2f36f7661cdf78d46e6e7e51e1e2ca3c897bb37e27b74c45d2d5dad2f5b89fb765c6f569dfde93723a9f156258bbea9059bc3d707f14e903b832b836defa2fb93dcecca7e3e3acdd92555edd97fd361847ba507cb2afbd3c0e8c2fd2db77dc87f81e70ed177d5e8a7795e85e3206ae88cf7512078c5fa9c2dbac89801fee2c273c75aa10419de058c0b8c35f36eeb0df4ee734d22534fe0fc49075f02af28f66108f3a211ce201ea4833ce0fb4903bc231abb83e0a6cebc595ec33ca91a79d1a8cbf3c397698f3fb202de6c551726d6e123f1ac627107fc2869f95ea1e9a501fd4606da18faa947a57c450f7284bd04c0941cb83f2a7d816d42c68ccd8ed536d6c468755b3f7bf43bd4338cb64915fea22f7f4f732fe965715e5e6798e5571fb5b962d1d4b737a443168e213dd589d2067ab484f5b5b26e2ac42e44860ae558a7b9f310ec0b9c09956456a6cda8f9aea0604e68e66af87e37c13cc745530dfdf0bd91e2fe47f668fba686d6e93d6bd7f64ffe59abf377ebf826ff599496bcbce751bb86f09633918bd3fb3ce3ff13b805870b878b09d5b617eca9f1b43f6efeb303e588ef355aed560eed1deab82cf99f7cdb0383443fce9693f414d9bb10b37c5ed5895761dc59c2beb09db58287d8342d3f3cc8eaaa7babae107d6c08536a7f04ebc33bf658975717528303683b1d7935a651fa67f1abbfbd9f17facfcb6928f31b431d54db838dadd3bc7ce57a4776e39457cbe913ad1c63701cc7505988ac9b782da4ea9cdbc2457f1a92e62a7ad08f5c98b7373df708c3cb0e7e37afa5117668d31fead7eaf8adb7773e84715aea6df10716980c9f1b88686bc53e5d2d662d4c5fcff610d23fc83c5f8f8d74bb5245db9ba989b35a097fbeea212b67735e14505f85ef437c55d68cee879ad207db3b2d3aa5c9e2ada2e43e4c6ae0a89b1d0b5067c5185f9228a09e59f0dd78160ad15f36a9877ffddfbc6f6853768dffef017f975ffd27af5efdddaeb804d8a77e42fccc98fa0b67db01f71632d46d679ac772beabb1fb3e9738d759491a7d5e78bc827efc0ae2bfde858638358ff09e3ee3f7ab2a58e2fbbe7d1baec7344498a3fbc0aa77b65de0bf527c45f0ddd5196c67ebbfd4796e9caf52dc4b037497657a10c4412dfeb213e6f06ede15c30bf251333dead7f8f989931c6e4ad2eb28bb1db5823c1e145182f9fcdda78c48d7769cbf45deed92fc43a40f2052f6dd2e9a6f7f2e494fba31a9259bb66ffd83f86d7b4710ea98a4430e1ec0baa32fd6f05fabce9450ded09b81db9fd3f397fb030fefe7ce3e1657c9c11e71f517381f87ecbeeaa9205c76039270979b96de1f42955383773bdc7f584d834057106cfafb2b6bd9b478cedf04ada902acc7bca7f5e6492ffd3965e0cc37fdf7a313a771a3390c3ad93dc8f7fb25f88f615fad21be605b5f96ae3a3d4c8bf1055c5ed37c789f97f91c447aa8fedebbed315c5a5db220d5484edafd7f91bfa7a5d50bdfdbff449d2d2c3f787b1b335fa52e67faac3ed9ae1d829fdfd37dc7cc923c657f4f3c40f5964336b3f1cc4097096b1ec2c5e7a1080c9dc0fa2e31a2315ceb7b238babe33c8994ae491b071bd34be176b791a5f93794530e67f7ff6b96bc582eb42efcef6d39f34f706969f02cf25ac18e1eccaeca2d6d2acd727bfadbcdd0e31e9aee558571c11579b5e9a75f1d8847bc2707a5865d459bbb22f8bdcab296b29c5162f69fa1b6b3825b7eed5c617ba8b0a3fe9bdc4d726b9cdd95769d6e94502fec871c700e75cc9fc11f1a7cfe7e4f1d341dc7d92c7a53eefb4b92106e761aa29ceee6b72d375625f97ab5621f22155c5fc28117b06d7619f46248ba5c369ce372a44ad6c78eeadcded5f5d9d81e038b686fa51ec235d13e5838a52d0d77c464cf2633f7a778e4f48fef4da0b385501eb27dcf7607c7d3ec7f81ffa2cb7b83656f4fc9c13421cab3857457a72b112d1353a9ec9d2c68f4e55a997132cea0338abca0cf1c4fbdbb10e599fdbc696c04f33ed6a02cb25637c73c24b66f3bdf5b130bfc3dba81136d937e8401c2c9e2fa9cbbca80b1101361b317216df5f0c8b8b192362d0ba8d9617e277f88ff996f63b14660e81bfffdb16b3ab4816ac9bd8a941dbf75562aedfd842908ff66a9e49471ce27536574efcacba5d4ff605adbfef21cb3c985ccfee135c377dc81c8722f009b40759a689eae78cf93caa0278458cfdfa3fb2d4238d054f0fff4d16f2d20c62cd3599b46db16e4adb187367ffd60bae4bb63c2955897550b558603d548cff97a1fe4518ce5319b27e02d517efe5511afb1dfdaddfdc4ee2b05caa4477c67f20dd73d445462d4ef4454d9fa63af767e45a81eff1ecd5867fa98327cd7f33b7f3fca20afd907b3b4f2f1bc2e3ab500e9b323d8cb1af793f5e732d9f44e7e288d9c9f87cb2ccf83d6a958827f4ad2db73fd472ca15c5c65073fac498e536591c409b16ae4b9cad617b707532e66f2120263c504c9ab8f7ab627e007d2a8c39f137c2fb634cd3dce7c3bbf6a72cf36e13769da71dd4a1762b69fd0ce9458537fa3bd74d98191fb173f99c14d736c72309d88dc6c71ac3fc268daf61b1ed2a42be4ac2e442dd83148c955f30d7c9b109b5aff50f7e9ff13d384eb58bd26bcd73422226f5de37b3be50be39d32ace2f8417fe72bffd200e92f31689e8543fd36d123fd5498c6d218cb8c5e6edcd3bccf3b610c45b287e540570189fe5cccc9758c7d98c707ae3e31baa436992c5b52d6c4df3af661043b6653e942a7a26fe3df96ef9d18797ddcafbfb99e3b28e8f13cfc59c22fd9dfdf4fede7a7f8fe36abbb670b52584ab9aa1162bf3b7e2b33f332e4c78cf1ba5ef2269310ea7170fe4a2269e4ab2e3313e66d67ebc86b2b1e4675a13a11d4f75a24f3276d72e43fcfecf844982bcdb13f36c764795908f9d64f906f1923c6fbf6fc2ce7bf780937eb89cd1977efd0b63854e4fd0dbfeee1ce6331eddb74d16d74dd8fde6bfc55a5f6d0d60287eec887317316ee253ee4d9f787e1b631c612cebd7f5f23e3ab6f0f831c87f27deb73d636c6d6ed27b87f67c81f5734db4ece8fbc03d2c46f5905fb89ecaab21c1b181fde5248bf82ca876d8bb0e6983b8f3f17d41bd90c7a9836bc0f4378cbd617b45b2f079251e2dd684bed758cb1f42ac04e367435d8893e41aa701afcdb11e63dbf2df75992578ace5d378e483d62ac9ff263ffbd8cc64a7ecef99598b80c398784a48f77d7e6957f67b1d9b409f6519737b1ec463fc659ed915715085acc50a732b9f73db200ef0a78db584338e11418cb971bc4fbd2cb37759ccfbca72b3ba7bb02dba2f8526cd02b0cfd49b5f8fb4b8e70771f63545aa62a64542fc5cc322a88dbd152297855bf72ab661969c8b97c5ed1fe634a913fd18f1b617f3f93e64cdd6f8a456f15deee780ffad069ae787b9cd21313786cb2f71bec1aec378dd323d643fc7cfb38bd298e3525c0b45f527ef50e3b4efa89ec75e0b7d0dd252e4dc9e1ab0c68ee73fe00eb7e33fa5750bd71d77cee2de245d47180958f761fe5aa75c3772ac801f8b6c8c61419a168b7b5ec4eff5cad59f8d626dd0772a9a13cc1c9d197f71d72602ed5bd212aa93f8b17173f5e39b7d5e3c016c8e710c1534e7f13d4cb737c5bcdfc0fc9adfa906def826b179a779c25c1ef2d2f450232d2c37126fafe2b35ce59796b912d12ed9f9356b6cb7ed0fd9bbb13fe8bbf1b1cb768de3570e14ff72dff0bff81ee2a0e238a6edab3dc74c8f6a10941717495bcc7d1dea7315de6632115efe8bfca43de7e4117fda0472a606c7a7c7b974e6b7a98bb99f7b87d8eb38773f3baa7e92bf3fe49736894f7e8ebe1a04d4de381fd6d68e9c65d96e14da6e8fbab8b1af705149cefb8d4d16bc4e70c2de1c7e259daa8bea73e4b422ced16d28e663ceddaf3591d4e7eeed5a63ac251267b9e2f79399ef4db5e3fa443832df0f77f726be36f2a17f3509631da7e7cdc7fbc3ee2827fe11f59f13d5626cec3d10eb7fa5f7827aeb5e1f3736954ae2a02ea516c962e3f1e7585d5c5c9fc449ee9c56b877dc1db8e2a0a601ea49edb5fdf315e831dfc6ed1aa678737a4e8749f7382a5d3b3d0eed41bd4d73fca7b7514de5ea1bac78313b02566935bfb489cdf7c1387479628ef37b7afc87e5c3c5469683a73d60f9f72d0733ebfd87c2ab2d05ec6e419cac77a8ffb035c9f9a5b16b37e380f9b7f628d7f9c766d05d13e44749f59b1e5fefb1424db019c519faba9003e081f17ae6778fe74d0f52632e08c79ac6dc7bb9640e5c7b6c9d60ddcbf4de788d9c38e060ff4f15e501d5818dfac4a8ad8271f4addfde2b7296517efb00f1fa9f3687b44e2fcd0a9ee189e25c960711da3ec3f983d694735dcc07dfe7e7718bb50a8cd3471bb6f9633d378f7f3bef71ad38c5eb693fc6f07455e427c671004f681fdf05ae33f766584422d43dd740364356b19f40f8dd03e3d265945b6c2562146747c2aebe5507ea5349deb50971c61357b7a71b7135fe505d762be6116ba2fceef5d50fc819e15c147a7fa336568c7dedd9d533fbb87d3ae65fef6f68dba7b145ea628ef8d5c2f838fa8ccfe6b089cf84a3414cb5bb0fbeaff4d20007a47f7fbc0fbeef5b5422b6e354c7ff07edbb21dde0b3fe4bf627d4b8df15d6e3901d3b1aa7c69e43adf74307fdf215b197fe39d7d7a7784e75f63f5eca9efac9bff757f437afaf4f29e562d337e603d8932d530de956715d18afad9199479cb6809b5b5c1ec3ed039f8778d85f46730b6b30e1b7be8dcf1339d455b52b6fbe424d9bd1fc67e65ab3c6d1b9135e8bdce788407bb198d4c4acf4678371fb591302fe43cb1ee2df6c67fcac603bfb1fe2b102fcdde8be6566d681ff91a5de31cf87adc117cb4b13705e5c3f7258677b2f369b1f9b43ce7185f7aab8bd63dc4078354e5e8cbb447e5949b94ecea74bfaaeaa88cf6d119f72c448593d80dacc97657655493c675cd964db72008c38140eed7355dc86f137f5bebde9ebbae171386c2d0e59fab1c98f666dedd77913e55d157e5a7d2ea867c5795dbf0e5a379a392e0067cdc79d5f4ae20f187edcd9b628a35c2baa75a3bf713ec73aa8c32b73200c8b9eff1eeb0aa46f7efffb52a7542e4f64170e9b21fd879f4315f151e994b44828b729789bfa6e4cdb833c0227e7cadc9b9f6d62cb51ccb6eae36017defa3d3d1fd6effdaff5546f54f3f5ad8d50b18d30fce8b3b19f649f0bea1412fd990f738e2d9b75e3bd2a33bd1bac9f67e6a2bf2d8f0dbe33b71d894096a9dd1e5d63f25b93a05efd96d6627f9fb7ae1036ba7375f4437641bccccdc77c937619609f4e13fd8103d655fbda10e6bb58ed47ff3a14d712b11af2716d60ccb96bb33e795a7614fbcacdbae96c38d31ed6549b5ccbe9973fb30e24d4764ef643fccd6bf321bbca02737ef67b30c7f0207af78df46063b3fcb770c74dedd2ba905c77ececd3913deb6958e05aede52a525d45fadde60e809f7e9e54c5cde5bed6e2ae747e679bb209bcbce604c3b08ff24bb35e327fdec3e6ab91ef1d6ac0261862b35686a883ccdc61fa0075581e3fad829c6276655e32e05916595015b32bd9129766f5e7763dbb1cc656162dd5bdfb983fe8ab3733e78236347018cd20de09d7c735f646fe2db46b1c2f02bd26d84f312be62138a92435f324f46d1bff233f3237363fe65887361177b7edda667d3f8a7dd8b9a7179f7599077e1ea5b5f175ebe37bdf3a9e815d65e666ce290c12f40b9a41f7167f4935549407d4ed81ea078a4fe215ce39a6e4620de3fd17aa6bb1310295dc5c9e88e230a01f213ccea061d6a983e8d40ab88f8113e7996b196cce287d6cbebc3bfa1e14b35551fe21cb74d91cfcf722ee0e7f348e4dbd6c27db983b3fb3ee8dcfd36fe603d04f74985f5b478e38e3d13731ebc78eec5f771ce600064f7f8ffef663648b2dbe3be4aaa80ed945814fe5fb43f85dda3287dc8de59fb09a2e575bb3ff2298bb847049e16dc7bfed7ea2ddd9705d70f22fcf057e7b96c421fe68923852dac6be021540df3fb1f6872a84994fa956da6ef7bb247eb436b706790a73fd94d6a16f7f93e36bfc43fdca72c8f0bb527bc998e02bc57c00635517f1c9b3b38d5f91908fdfbddafbcd8e8af1f0833c13fed7f98a5fdf7947f9e7c76b3103cdd5ba403fd6acdb561b3bd29fd262a3e5d9d76764bd5c6aebfb17ffb1481fe09bc2f31f91ab23ce6c7edcc37bf6b25c06f5caf8ba15af5be6ddad603fdb0a7bfbfb7f3c7ff6a2429f3bdfda14d767c719c1fccd0f15a5cce9f3c09ab28dfd7b73d0b5cf2fd30c99bbbff123578e6fa95debab2c1683805a9cca8f03ee5e8bd99b6953ebe7cbc87f782d16b3911e536fb1d5a3f1d530672d63c68a4fddccc475eff2206f559f1f15f535bcee080b91311f36fb06729867c43be4717db19d9569bcb6f13bbcba8503ac57608356f639cc73c627b60b1b3ecfd5ae3c36c333f939d687d83549fc6e79c108d3228bf86139c6076db12eafc3e2a2c4b2537d7c467cd4acab43f15295fa627166c89366638215718be1fe712c957edb34c322501170a17f7b5c63e6c59ef8c389877e97c473ae3db2b1b0f5b38b850af489bc1828eee73c4ea2875767fb907f0deb2eb5c17e378e3f78dc5836ef6ee7b10a78e3e61e9668d935876ce49bf9fe91b23c46ceb782b5321167cf2f224d4cc4684e38f6ce6d61e62afdee1d3fd92784b2dab09e9d37befeb77e64552eaf6aad7fbe964bc60d80fe0e3c9f20adcb433ef7e640b85655b6de3b20de41e1ae6b355e8bdb6943bc6df49e794da77b32be02748ede71be5c40bfa7e7e79cf13fd0874bcedd402ed6c5a97f327f20f0e4ff1efb34e20edcdb31f02cea696eac49c43b7142fdb676f77ef15b0cba73fc43e224456ec6c143944b184f763f714c54669d2f25fb3677d24f45becdc8ea1b919641fceee71bd5f0f51aa6bf833665919e3c5e96a22e21dfa4c7edeb8e32c9356b906d0e02b423e48a7ce9b771dfd844d963f49d3c6e3dbb8f8e71e3ee6534d7b6a136e3689c73d10ec7c8b926b6c3c9ceb59c87607380ad3b191b7b7b0c70ee9bb51f740f7e7af91b91457599bfd7965f12b452ef7591fbd7042e48952c88cf1e7cd7991ada7b55a4cce509c7b4c59cb91d797f2f4bb2e9c88668c86ea331ee7f53bb76b43f4739a64e06a0cf06362473a13791b3a3256199b798139ef01ecd2f3baccf9becf7afbf38cb7d47f1ea859da75cdf8f0f660c6e13ca7f1d327b0ce2f7b294ea4cceb26c2d87971a08d76c7916314637193bdc1762c78737e90f946bf6b8e700579e434eef99b982f72ac0e33cfb7baf66c0abf8c6b9e76d9931171a6fef89c78adb81b5ffc94d2bc2524fdafbae42875fb2637d17ff221cd1bd423e2d637f1c25697d48d3279eec7e7c563c0e9e857cba5e86fbbb74cf756813dd5b5ead90fe1e16d72619b701d6941234b44d1f7e54c5cde5560ed9ac427d5fc6070097982c46fb3cdc3c6339160f59e47f5b0d25c0e4509e91f6b5a5abefa43ad4decfcdd7096b3700c7dddfdf9dc7b10fe6bc6b06e0413c8df9b5269831d603440cd898937305f54d631c7f38bbdab80f63e5d719ea1ff5a0d7e473123077683ff167608c32bf5f6dfc21ce35a35d4e78f75bf77ad0ccf9759705d616584e693b17926e7cc11a997150611e11f2b8b466155571db99f585ea173e6491fdde47669c583ed799dccbb38bddc84ead339d0f7317530bd3ff9621e4fffedb84ccfd0363977d54e4229c197b1c7cc5f757411861d6d341eec2911664191a7b67c5f57836e6c07f8fb01e43dcdb387d94525ccb7ff68dbf56333fe3551619ce7331adcd16d72197cdccdfc77cbface52d4e72477982437694636c6a421a8358938bef62af6664876cbfd9b7e73a49c047b89a0fafe6a22a6ec07ffabac718e4e8fd510c4dbef9f68eebeffb411077fcede4626f31f868b2c8b93f8cd757c45d587d29db978a9b46fccbf2a4a6352133632fdf4eccade3ded5e8fd4cfb3e5ed3e6a68d4d6cfb0acc69af89e69a4233dff9db6fa0f584f8c2be2af38ef8dc8e32ce2f1baa83f4f392d23f96e244cd2006e5b01d3f5ff7ed5d458278e88e0fe30b511de07ddcbf99c3fa78a258e919f16462d720fff776fba0b8026e2fcd7ca95c5d5ca2a2d471db1d72c07ad15c3180aea7c51310d77d208c9f3f235cb5b917e848911dd939bb4d9feb126a563dee3ca81d0c3d3dcbbe1d5d1becbc03f2a1a03d0acfb5eed87608e57af43cdbed63aced5a277128c5a26fe13d58ddc8ae89f25f8d9723343ec1de6d077531d36578eb9a35f1301c96da8c6775c89f4675164336ab06fdcedc58146fb47f2b81b927257afa9feaed04e69e76bd28c56af17719e87d2ed2a558e97f761afad2dfb968f7bb60fe8b344a5f76b325e859ee67e267bed2c55664a9f97d1fa7f126d0bbed7ef1f777bf1337fbf4fabf41f7bb986b813879cba158cfb20e6230220b64e9f12f0eb74b556e1e2fc4873ee5805782cfc35a209a4396a441b57c211ca14a467c609d70398393f1a19e8977b24d802fe65aafb38bea918b9f359b302f1eafdb423c9a19d7cb126793599fad9ed6ed7d1fc69f4d627c00e397d1fc35e83368b147e24d263ae4f9a1da635de0668c05de73ee41ace48538c7d03739204692b93e1dd694de858bb1edaa62c67a2607687760aeb519c5cfbcb6ff6a409f9c3013847335b601eb474fc638f2a205be0fc37d1663cb559939dc1de8b8a0fe6e132d9d7e1ae45762630f213603d7870ef3bc92f822218f36f9ddab718a8d2ffc17da1143ee6a708caf1edbbc8c698f96ab986abd9631b6aff1ae931fa99e83dbee728b148f115cafe5d53be1ef739b0f442dec8d6d0f711db8d8d2d0f23ef3fba8b609eba2e607a89de1f8a5b61cec9f55d9d9e3a57d6fd7898f96ce1bae3da076fa35579453d1cd2a66adcc73ed622dbd0ae7dac6590e302639367baf8af992eb72cad0c5f229bed141ac75cfb129d2362cf2bdf109721b7f888d1d7977c7f11a44587fc8f7f8da1c96437c149fdbfb3556df3ce72e595c38670dfc071c6b42adf7a34a6eab6688233f67c379b6bd99dfa3f4d8265a4ff1367bf3ee7efaf900c839439b6c9d2fe4066ea4433cc147aeab37e2b9d416577958529cf078b5ff17cdf8385c7b7fb489a759efde5de0e5c15c4c0ce3697f2be3270dfadd8f6d2ae3ff15f2c85aee4d30aa41eb515b7bc1d883f31faef1edb5e9be5eed0262dd9c6fe9e27e93bad70f881320efed3f4acba32cdbab8a52cae71a9f5ddce57e719ed4957d2ae489fba9d6b416160b78aecd709b35fd386e55979d5631aed1e44b3f6af3ade2bc6be22f7c2097b6c83e44125f45d2dd65997d707d7b1b765a16b7dd884f846c8dea201023197697369057ae29a6ef357bf67087cc45fdeab76958dcab903126cfb406206614ec1fd67c465bc7c610b10ec5bddffddaf8a0883972d806e038b9ab488fcf03fe12cb1ff4fe5aa69ab55fc0d772b1025be704786bf445cf3c7e9ea99ecbdfae8b3962bf00e3f6256f6dfb79465cccaf05c79bbb605710860ae2ec8031d0afeb3c935407678e99c4546d4ed6dbdf35ebbfe8ff25d697e3755cbc14eb618fb2c853b2d1f85c8e41efcdfcc57cc6f42e8f72905863e9e37829e6ba4d4638088bf9ab0be1f1eb2c4e7295fd6859f71ab947dc36e213210f45f79c55c5ede9759d5bcc1361a7783d307ea7f1ed786d7c7f5d5bccf27355664fb46d7c627ffbfd750dbf63ceab18edcbaa727965dc22e775011310db78f491f93b4d1f6d7af30c2efe479821f31eef9b88eb65ba807331a8b1c1cf4cf903ef77c480c2bd3c0de4ec07d718dbba7dffbb727f2d11630a317cf2a75ecba59e7e43e7ef9beb7ab68557df2b130135c0367e6e79f86c8d31fced72387367bf80a6aa4c941ed5b007b97d36af8f0ace61b878ffb3a7b7e2ec346ab7876d055c29f972d3dff228b575aa8dcd699046caca6aeac0b1db247ed4141b9085ed6f5ffab23dcef465fa1ef6bb622e84cffd26d7427e34b4abf7c7dbba31fd01311a937dcf5ff78d70b4eddddc5fcc988b260b1acdf866ffbdfee59e95ebb0f4e260af37e03be4671973a5ce67c029c4d7455ca3c35de0589e1c23ce6d317b587f11f9e4fe76da5e52ef0ea86907fc6589b6bab455997dbc307759f82fd574e173b28fee7d2fd27b041cd8aa2e66160fe9ed239f7beeeb09d9bee1b6491313f0b7e36fcbb53a1e1e98715a882975fde9ebfeadcf3b8238d2fdb8af305fc7f45a5ff76f3d5cdfeadb6bfd6a7ee653dd28e00973d843c8d3fe5451ca6bee48bf695bcc3ad6ffa9d15780f31d8e07cee7fb41dd021d4735fd5fd604e0a3b3dae638cfa74de0d9f0c3e25e17ad9d7ba0c661f6dd71d2ccb93887153168c0f2da2d8becb7ab67672e87c527d711b6c982d78dded8a96d22fcbc23c447403f6cbd847c07c536cd1c676bd12936e971b0633de0ae887f78bf67a45349d81c9c039933b87987eb428c47ee993fb841fb19b1d8c4758f1c4095e5e27179752f1ffacb8f9d72ed233fb31ce65b59daf592ea8fc771d83a14ba59d13bb6b1c8f97c6fd629b653849d437abbbee0f3df5538b3dfad4d16f66fe05bb2b51760bfad985fa0225b5285b60e956b3b897be079f4fd1867ae666e3d81d8017f6fc23c8db61d8fc1135cdbeb2745bfb8834dfafdf10ffeddcbf5725dc0be19f44186f85bebf8137cedb1808f6902ae73580cfb24be0386a9b851ac866ab4a37c0ebecf963871812bdaf3f1a3a5ae423dd405e9df514c153085d8377eb55e7f6892f8de84742cd53037ded893a574df086a3f6e17ae57ddc15c8cb5076d991fad1eb95b3f9d4d42f62b71a85e5f1d36b603bd813e7b58de97fd480fdecc4fb6c6a82e330f1bc06b5736ab0e637ba0214c2df9110f8711b05c1de3ebf8fd04e354acd908f154e06ea65a00d692f4fa9af1c33d7b17daf27075d51d8f29e2599a7fc54f18bf3a8035cc7fe6806ca1872cf3bd0a46f80cb033d590437e616b7344164bf9228bf981eb5de87ae86385e204b594c3ed52859fbb16e78a37c83dcf52ad9c7dbda438131f636b2665715b8256873907eb72b6935a713e16de8bb99f795f90db117c8f4c2ba801432d426e1be20dd349bb6c9df419e34974effbb4ad576bbb588e3db041e73ddedbd3efb47db2e2b97bd960db67cd7043ecacad17995d55a2dfeb32f7f02b3626dd71de03f43521cf4d360ef184d4a5ab4dfa720cae3fe75d38d7f0ef203e2be6ce1a16674fdf89754f21f6c9f30a727c5aec9ab1a5deec7c41f8e976107fe3fe67ea0fe9b18aecdaf356179cf7245e6ceb4ba747d62334fe9de90ba02d54c4f36a101b59228727e5a44e2a6ac7fb06cddc1c66feee546cda29b896f23fb0a615a9de276007516c24fe81b51fa99f2bbd56450ef5017b576389ba72437a1001f4f33739e37a8bf4dbe3f683b8ca22a6b6b549cdbc3341765751f6d879f592d5d03e29d25d86bfc3795015fa0cb92ac749e2e2b91ea648a14649c7dc255857e5d5c40c8b73bb929d2af409ed2c79513eef136e97be5e8bf1ddf344bcabc8cba5a05f473eb8bc3443608f1511f1ebe1316083cbe1766967ed9d72c670dc6688dfeb106cfab38cb38faa5c7a9a356edbe3e0486dada55f8782ba9abb3a89af143b80babb7cd08c873936d1f244b54d216283f4897152afbdabf3f5309fff41ac6537c2a8d707f16813b3ce65a3bc12e126bb3659f198262c606eed3255c4d77d98dd6daef020eeb48e1c494707793110f3eef9a9e24ef560e85f5a5d4478bf5bac5fb3f5be63cd111f633e88f36eecc710cec46a27520c3d3f4ceb37200f10de745ecc91ebd98b7f71ac7d53a6686fc09a65f3ee87067409c419741f79ac7bfa484d803a2436967a38ea665898f5aa96657ae1eb5b3b15d7f24e210649a356f0fca27ac75bd0443963ce03b265f138f45fe96fb29d0bfd679fe9e7575f86e2d4c63f3c123e1d398e615ef9ceef84fcb4d564926167397deb42fcf4fd9a9dc5c908afde14fbb3d51f1ec70f2e6db9fc3e7eb0fe729c671751cdcc2cbf383b19b95bddb67966bf86c4c5189e7d4d81af31a77b55b6be5de2c74ec876cf9dbe20c78cc24ecb72647b45f6b956fa910fb7aef562065bb336c66dd70c3f38d6ff6ceb5ee11caf1e1fed4d9b47223fa29fe0d667720fdcdf1e6f0bc5d57ebaba6feee7a84749e3c1d83f9eed0efb19c363d6ed198e6dee9b759105d61f83dcdb0cd6b76d31df404cdcfb768d8d9be0fb83fc2dbea7a0b5b9468865589bd98b97423c773fd66f76ba0fc54d13a79b99b3ac0fd644d9b6f5f0afc68e413e1abb4e18dbebff639e4739b5715c7c3d7aa6bcaedf068b9fa558326b954cdb6d7c8ebf473c27faa2743e6f12cbbdb27fa57502f5a2019be0e74f664d88bc79dffc061c78c03b57cc016b49b5100f59a6f5b7bf0da00de7dad28faed73543833ea6cd89e41eee217dc3f9fc7831762be0a6b7a37c33e7239d568dcd3f5a3ed113e496681c907e233cc78bbd76707f668cfadef2a45d2be0e790bdfb4d7675c1cfbcec54ef6d0f1970eea8d5e29c0ff15125a2b76d39802de5711b602e8c304a6fcf631e87f8759ddb9a0e8b350d5c5d6c558a006c00d0ffd6c3ab57336bf3107dc63ae777cac7010e89e7a23a119dad79b3f13de2f73063dcd77fa77ccca85609b4a5ecfa7d5261dce760f7380ca62cb816707e6cc758f6a357db7051c6bfa13a3be0a1c7765f54e2f2818a30fb360f045ca688e75143eed711b8714075d1fb417472cdbace63fe014f6b68a686995953088b9ba7aa3f3ec8a6e558ad5f7b9411f6f117fddd9721c6ea2c0e90b1e3eb298e0c6a2e201fc7182f5f6f06dbede9e60d71a842dd736d31ae35b3ee35d19f34ff3c40ab94b44c3787d43c6350afe4b13964815fefa08af8475dcc3ab58a7bb4cd661e866c71413b84f15160e76d55b870b9b775fe41313be47939e89f9238a750bbd8d5d4342b8b1dbd3487e54755cc7d4e21e2faa66b0664eb13f60bedca8ed7beffb625ceffd0f6e436a7fce451dada4da7e56a9ed1b34b8f6ac83ec92775c70c22f28e614cb85f9f746e4aa169adebeb22f734ee6747d40e775a0e548fd20bd2be95453ef2af205ef1a7df8a9bf6daf240fc0be7c1c1e73d7bbff3bbf4da4af1aa28c77db1f53151df67bcef97d516c6b8643ff9dd695f887f27db3dda2aa06f9901a794f33fbdba559c131e6d28086f9041dca00d35d6eff6d4b7f7e407508ca9c5ba867798efa2f64858995e249da679a6678d43b9ce484728b57159e402473c5bbe123fc5be791b73e0e730d7ca329ed5057dbf83d53e84beb91fd53e65178571837b8d581c5c4b3cde8f4d08359967f0d303ff79604ef6795bccb7f8dbdabdc471d35afe09a7ed67d72bdbcf4853bd4c1fedea16aa55d73501e8cf406d15e80313b6384f8cbf12b3d6096d23f7a34a44288b2be55ef0dec4f7e8bfe35f64ff43fc713a3721bfb68771d153cc41aa25704afffbe6e974d898073cff20ae6d71b3fc11e0bfee21d77a227f17fdac02f060c72a646cc2dcf471e3fbf9fa36c65f0ad937456d54dda918f81a703d0817a7a986992af459303784592bc7b56827f245ed7c31ad1d73bc87a49d52e8ff001f879f5fb7efa2db4c78acc887229c0f6095fe222d16d3ee2568dbb5e443a3fe42d6199bc2e2b6dc3eab77db10ee4c99ebc629d5b0c8bbe5460885f1cb0103f785f73ce9c03e70f163af06cafaeb3e2f8b99eb5137fa19f39f5d9374cc3b867a6c717ec961ffbffe3b9d6a703b3c65b1b9032e7fe569d1bb35e4d8041007657bcbf8aeac7b6fdf7b31dda67a3a095ab56cd7e55bcbfb607e8b738ea377c06fb1cec96e836fb16e86f88af187e5afba70dae92569ab60fc65717cfd69cf711afca01974f363bc1aea8a314649eb18698fe398b5dae3187bbfbd237e449a77fab209d0deaac2d8b5cbfe16ffaacad1f7a06ba0ae01c7f29b50fc44dce6edcc5a414d9205f4eede593fd3abf584792b475c8fe510a82288db21e6692f2fe619682eeb5492cd14e5b28ddfdfae75a2a2f4ddf7c551af43f8fbd9ce9a8e179e4726ba675e7c44f35a958e7537516ff01fe29fb93e3b7c52e5fd2d5d2e82306fa82574aa090be1f1a821e7c6d3f3646dcc6e8443c2ebc60e2f60ee5bb87ab253552e5983f7eee158292662b74ff4fd113f7280e71bbc5caf5723bd18243eff450e52522ee3a812e470746309bf11c53d3feb32c7773fc21e10d7ed3a9d131758d70c8c2594a78ab07d340e0265d6d0d58afdc65ee0bc776903d64de9b62a6acbe93a421cfe63bb361ee986bfab70de1b1f42323716e674d7cda07bdfa6ad427122ffffd124b7a3e55c2918277aebb82e5fcdec752e9b7071b2b89bb5f8a4bef6a01a6c8c6744d927ad97077b2f6ffd87ed318f8c56c94db0ce5ccbfa8407e2ed1f20d7b2570168e23e49d25330739f2ae2b3adc11e32cbcfe8d92ff00cbb83b9a76f6bf8b617d88b1bca45f96bda554559ca6b0470ff88b1be3dac2963fe45ffdef0fca0870bfad9eefd437be2713db41accda46faba497757519baac2e6df7f92be4e0731bb19c6ae291ff006759909c50229afac3c5e34e4b071dfe03546de348a29cc79ad7c265d1175c80615a59f23fe9e41047be25b7239c805c76021be2b93f82e576dd78cea2f29b618761d8d53f38ef89d7aed366b72fb317a9621bf5765f3e5b9212e87f143bad7848b08e7e5a0211d5db447f2bb8a9781ffb780677d7173d43adb13b768d00c7a636b710acb7b658f23ee15b2cb498fdbfaaa5f78f98c9fa637517a69a20c75a7e95d56dfec233fcdb7d9ccf7a7dab8ec04b1ee98b9d4b5d518663d372ff78cc79a7d51da7b9839fa3dfdf9ec305b3e6e8d79149f2d6738e5a884addf476cc096ecc3b6983fcc1a278bbc9c6c3f3f3b9d7baad785b800f06434c1e2ac38d63043fcad7b16d087d6c423f2e971089bfdd6665083e8bcba4bc0841246b2de875847e2f804ccb9cfd6669ee27cd13699d8e803c6e5bf1c5be8f33e8a618db53167c6befbfb113b61d7967add78eb9719174eb778f7253705e7ba7e6de3bfccfbeff0132a110e9343bc9ea41b8ffc5d4fde733357fa109fd49ab1c2f1ddf95ad8871b3f3fe069a5734eccd3497f3443863985c0d36fc6e362358cce33dbf299348937b86f09392aaa8590ebec5e0578df4d31677d864ff31c32cabfdca771f3cbb519c4d5ab0df1dfa3cbb910179b8aa0ed3f5ed05ffdf182b5cd73da9ed3f69b8a3ae2ff40dc5845713fb5f2c67e9f6e9b9f56abe9b92a21ef45981bfdf06bb9ea32cbcc3a51175e5dcda01f7be649634cc6cc72f43c64d13217e211e702acf5aab146f3ad795a221fdde1af2bf1e95d5fd0467e6b9ee2b99dfbecf7d6efd48ffb3cd18f06e714f38e819fb098cc673e471c7d47ec6f5e1e64a3d36bfae430d0560bbc98f75b8f6fd0e37afb18bda74376af38d70ddca5fcb7d9dfbc516d64f94c1ca75bcb4df3ef1bf31efa5ae054cf8adc6aebf4520f23ad75df661ff529f647bfdaed8437fcdfaf455845ef5ae873ec64d1e23c36f339e5965d5da6d6776e92c583d7827aa29bcffb59931b749df7fa0cf9c0907316780f413cd6bc9dafc7db4d00364b847e74c37e7edfaced77eb647204dd3cb9025ebcc0cdcdb78b8a96fe778479655b66420da0517272dc9629d687b096e63a3d356be863d40f4167fd0af95b8cdd9c54089cbd77e79f6791f3fd5ded20fc3639cf9b2f8cffeccd2bfaecfd067dd2e36f077e72dfe6816b2731db9570ed4a330e839edfd7cf429c41606ca52aec96cf636cc1ae5da7ba4db20ff425b13fa08e5bfb41ba7363fd7cc032e19ce1b70bf3e7fab18f5a973be47718b71407c5f330df6b7ff3ec6e170f439cf3976ff069fc34ff5b910fc6b97ce40636fdc5e3ccae218f17ffa87dce442de3bdced34d10bf986b6c578bed561cffd9e97c09bc65fd2dce755e6e44ba029bb9d7eb6decb6f3d5a2dce976b9efe11e621fdbbffb2df3fc94d9df237cef21ef5e13bdaa71adbf5765bbafcaeec87daa8536e633caed066d999eb765368a33bb63e61b9bf339c076da04730dbc84c413636c811ced5ed2c387f9e82ad7fc3ff1cc16e98a303dfd2beeebdb903986c50fd49dd601b7b32eb342520d2871e33e64387ff17cf19e8f85387599ed55b87802ee09cae788647121cd58e6ee005b4b05a8a52e9216731d31dbd758d7be8fd2f7eff6f3f16578434c0cdbbf22bb93c6ef89ec9a147903047384fc7a457ce70ff41509d71efd4bfcb13d6df7bc4d3cf2fff2ff33fa3fa4df69bb0fc977998b64f1a422d07208b65c87148ff83befd5ccd957c6fef07c1363c3a14d43b56c72154fb639c607bfb186d9675dcc9f9a9567f3f99821cff7229dbbe5265a7af6217e1bb8cf2a7ea29ac3b3347fbbf1887c227bda3f8e8fd8fa932a5aaee8ff17fa3fa3ff37cdb0f82faf9b1bf281b6c53c609d06d0e90dc57bbbba1d29a7f88baf5786d975879c02efcd0af5591b6f9d35bfc39af8c6eb31cc279b7665aefbc3ce0d8e9f35f7d7e7a54a6e6cdb20063a9097a6b7984858bf4518df9dd6deed2243d0f9c23a5f9c4f63d24b056d6a35e29a05dcccbe621e275a7325e50609237cad0a7db7fc24ce5e99c660d366540fcddc8df380f4603eaaafeba0d9e7d7a73fda30be3689e89b243e822eedf07fec3afa4231cce69005d6d6d78bf7b64c471c5f6548ed998973c57c533f2731c5224fb1a63cd323cead21fba72d73cb6101f614f707f8868b59bbb6bc1fc6ee32d739fbf6c7175b84f9d822c0e38cec1ab40d311e6cf5289ee25f501b7cf8eb4ef960b4efb51ba3d05fcbd4c3df0117f59857d8da9219f0fcd2b6572b0d7833370704b34ef5b88fefb12be233f4cfb5c5db9ab6645531c76b5a5bd39dcb350655b474f3c4c1f92e88cd5d722e19f9c0f11e7b35437bbd259d32b5261b2cf997de2b69536f9d0fbaf5ec418acb0cfbb5c5ceee9ac2d9425591a6937d184709780e83bec373d883f0babf14faa7bf8823ff975af3ff3dffce39b10fd24a0e498bf0833509d1fef5e6949fac872637f4f7b4bdbf5412bf99e7db4771cf736319ce8e4a67b79c3189235fd469247bdb660eb75838ec73e817b665f661ed298eb5b0ffd5c701d574bf31af78658f4d2fb55ebe539f3af1ef138ef83ff91810bb610e1675b05815c0a8160e67e9e2efde7a81b93e3f5e0afe27db9d708d6d62e648e27f49c40fc0a224fa401ae1a0fbbafb631d18c4e8107b09fc44b9566bc2937abfd1580bf6948fab0bdfaeceeeb2203d1b3f0eb7b2731af22eb8b5ec0cefc9e120ac5f84630931bc2fae5663f4bb1df3ee775a0ffd3c8ab1c59777151efd39cff8d368a30c196107591f88fa9759df38061e9976917e28fe1fec47f7ceb40c721cdbebbfaef4ffcdef3b9ebfd1e3f3488d3ac95257817b1f2a4a3fc520debdf74e76047043921645a7256144f3447f4ad214707a0c1ca7628d3177ecd73cd39fae0373abafcb716e8b198c27ae7b6b8699b193619f1f13a01ac22ffb9b0431616d94768d876b5245fc03754cc08e195402b19eb93dd6f8362b37d7b7e1e22ed799e3fe3eb497c6f8d4565393343c8ab9165c3f81bc6d741df80e918d851eb2196a86b9fd34861ebe0de4da294e2ad157c0f7179cb7cd5eaa320b3668c37b758ae0377b7c093fde9c4e1ad79bba6fe071a76ae07d327d6066f5f67c5ca487adcf3a75901dd75a9b6b6dc2f85405fefe97bb1fc31cfd1e70fd3462153dee5f8c7327e24e9ce084955b3077bec63a0bd2382de2475ba69eb6ddd77ee68d833b6998dc5594732d0cad17c00de9cd2b5fce9dd495bab98939f0689e73d7c0985c84fdc7d88fa2df4422d80fb42621afee4685b7b924ac29ae199c7b16c67f129867f5b86d479cb7235edaa789863f68e792cde7e3e29eccda41b1211a7b8bb320feae1caf7daaa22ca17564506bf1a8e329b7acc8db42cc1c0f2abc7bae297bc25ac789bebe5edc1b878335be92f7bd607dc1f7fb75fe8498b570f5afcfe87ffd45fe1ad5a3ed5cce82b079101f94f171879cd30ea728d769c7bcc96ac8ef942f3d3443fc267c5ec3419f73732c6086987f9b79334cfb47f9708effafcd75aac18bff437fc0f50dbe7382f5a4cdb0783401d4df1e8933f3bc4b1684f9d49f55d1fafcc64755c46893f7f8db336be40971afc5d2d839886fc0fba1467e99996b5c81d784f92957fa9127c8f3d330efd53adb00aeaf94da1f7fdffdfe4c9c53a01113b93ae76d99ad9a213ec8d0f2b8f27e7a27763f6051a9bf30970de5606d2d28ea0fd83a41881deda87e7ca5a296340eb14eaa2ae667c400c48f26ca3f9a613193383ff67cac4c169162ed4dd0f0069f21a8d79807647b635bcce13976493c67bf4996f85d85a7775bd373f9fb482f9eceb7f6632fe3fce26a5c32ddae808bf68d31d6927000cd2cbfe4b67feab31a461caae6b8d54827d43f7e8a0f4816f726f8da874d1b31e7e3df4bde6521e8fb7de1113c7ce9d3f00c704ecfef6d1789607a2fcba318a55da5a9e6046319a7b64c97949b5ba970168f79ec910fd9b6c39ec39a7d52ef4a11302fd0a65c425cd1dbf74f75c874739094e7e8ba76105b5902cedbfdd6c757f00575aab1866e619ee5de728ebc1401e35bbee1a7f1396b2e7ccd6787ed78619fa219c401742ccaf427ebcc3fa34639b5c9d6319ca66d80bc6079d4bbd0f4c334fc8eaf67132e8c5dc2f17b8f0be77fc9cd7ada8ec4ed94c2bccdc7bf4d72b77ad949d0b6303611fa022a126e2d2af3175897578b33ea5e7979aa43ee6b2cbe73fd9f2cd3b499f9fda203ffd961d4db8f9af3b311e765ec1a617ccdcb84abc9f239f3fa210bd2fb86b9be655e772fb70bfb6d4d5b932c1ea8518ee36132163e611eb131f919cc2fb9ad9544be98aab43a07efafeb3c262d14ca455bcec84b1bcef7356b86451d8e9fb0d5d2d9099e0e0bd768880957527eafcaf6b9b675a22d8f2bc06835ee5dd0b1e85754e512f2ca9b10e68b93c56324f115f2d0c05927189b628fcfd7ccb189f8139c33a00ec5f2bcd97d23cd14ab31735443feb7f92eb2cc82f118d70fc01af998d5955da3fb570fd3f54235da4df819a868b9afcae5be5e0396f3c2bae10a6bb190c3636ff56a0f0af838173f55d4659c23072ea888e70bf449f7d026b0ab31d602f8ce9834439c3e2bcf9bcf8843987ee7a3f70c8093a7bcb6f6f6076accc180b8ad38fba80b1958bb2570beb2a79d42f33ef66359dc88cfcaf4c5bc73756f983b76baa1372dc2c54c25f94fa7674dfcd8d0c7dbae0946ebd4f0c2fa73efa4293854f7578c610c2f07d2a2b3f99afd976dc20640be4396cfc8238a5aaa4ffebe2a5c9cdb24367ed8ddc3b4f8f386ef2f066db848cc9c2acbf441ef36f5f883a33a115aad883390d6f42a4a2f2ab911672269c220e79aad93f2f6c138b59a1488e196deeff8de117f4ff7f3be1561beb9afa94144ae0e0aea0266cd40f1f8d872327e69a300df9931655dc7f815db9f7e3a4e398afb3ffbbcfc6db2985561076bf216f053378e27c33915cd05dffd26319feef60faebe82be2bae07aee64857a5f18d691da37a5b816dc84c1bfcf6a2ed60e710336f42bee22b5e46740dd688c1dc4e5ceb30e77e33cf3fbeb9f76ec2c979ad8bf97b6d350f2dae0f9fe7e92f2f9ed44eb488f1beb9c30f7ccbe787735575a3f96b601d4ef99efea0dfee54bbebf0aabb74d790ff0d5c8f531c3fbe7f7fce43bf96df5921f6d07e3a56c69eaec190738da4773f6c9b87010b082f6d711caf9cf73d904647f1837857db6393086b87d3f13fcc7b90a47fcedb5e4eaaacac6fc0bcdb109f826bd2b7f2d63fccad301f832ae2dfc68665fc565de4c686713a65ee78c6a01bfb05b56a93f830a995c1fd945f424c7af6de0c42136ed98c452d0bc42ca396fa027973bd31e2dac5f71e717d6c38c6e1f90a33d08233763cd8609b512c645b66998a0897ea9ec7d68732f7f6a82de8ff79d8b22f18465b9b9a17b7535d2e1feccb63ac49947e9e4df231fb8ede15d5d91473a8cd35feb5d519f572053b8829f235092767ec48e0c0c67a887db238bd162dd5cec72735ce9b12779757c3007132b7fdbaca35c533e7b9f98dfa7613e5823894489b5340beb6c17cc2bb8ab2bdd5ce1db2eb0be61bde9ba725f5f5bf6ed4d7af2fc42bd71cf20fc272dfdba423aeb345646c98ed0433e3ffb68fe25905ba9ce37ab4e64ffb11d36de343dbe93ba5fada369ef02230beba141d68bd848bbbf9ce3e36a98abc581be3c8befd165efd32b6676bee5f79b1e5ba88912bd8e76d2ebf1cf7aea2d4fceed757b87eb037cf61ec1e8cab598c2a72d4ffd818bf096bc77ee4348fbcee53cdbc22af7bd600ca2f4dec6b802f8236597cee076b23bca19ef7ec45923d55cd1893f67d1bbce7fa5941ed32b4e9edcfbf5b7e298b656ad6cbbb8a3ae00d967bc88569b5227d5cd692dd61ad3ada5358e75c45e0ff3d19dfd6d84e9c6bdc85726828d6d0068b411e58078772df71f78f1ce4836b7cccbcd2fc642c20be137c3ff1bd19c46983f7d9f85aaa98efb53ce4a1149cc3fc17e6ee576cef0fe6557b5d1197da41739ddf9c7900aa70a1493f8e7011e945451c5b326b30d5371673aec3bea8b5d4fb5274c6de6d13c40bd2fbd8caa2753cc0dcbfbddc5931a9bddfd87e007df83ee99bc66f98e4a9ad663ffbeb7f7f8399e5ef3e8ae1ca4477aa589c27d88fa02a9f67238c17eae1fa63f6a806f0af3dec00c67efcb1db26f1c1bf0ec612f7be0fb8479fc1da35bcdfe34a06ad19b30e6ef99cda69fa3eda38d5f0de67f61a604fe4e37d7759c63309ba9c79d24c3569c7fa7aefa4f3fe260b796906ab6bfd5415b75335c4ef356106d126e36b585e6ed63546acdcc8cee56399cb5ddcda423c3cbbee5187fa9a1fd28eb9d7d590dbe7dd681733c69a7a8e8f387d3a8b15b4bcc1cce961b54efc7d4bb586baee795e76664ee7780cf82b62357ba1ed872cd380f5489f7d3ebb7e666be92c8f3ef99b664e6f8698f0d1b30b7235401c2d56105b25df8d305afb44ff90c56d0bbefad77390e728c2faf70a31c9239eebfdbaf3cf7d33dbc0774df5bbaad0e75d91bea8a8cd016300ef99c608d49ba0de55bbd65945ef177cfe026a9ab229a736f8a3ebee9e2702fdc2b5be7fb7bd0f3f8f0dd7b186a0ef7adff8d8271b17698fc045dfbb5c0372b73b4dd86fe2657fcc1b28e4307aaaccf165e6b42412fd30feaab2f91d3fef951f5bc40acd54724b9a7566fb9f4cc4606bf6a18e5d183f6f075acaf07c668c09bda7ef4ee7dc787bea17497cff53dfa66b8796c79cbdb7e306d79f56bfa4b0fad59b2f1ce678edd5487be400f1a1650b5c1a36b6dfcb324e303fb970f6d83e637e20f3fbb21dcc9cc4f84e71db0d10338fec39a80fb69265cc7a64378a97da7dc07d5edc7afffdd858520cf806e353635e667fbba8f0734675421759821e5aeac750ad9e7f913f3607cd3cabbf6509759129639cc05e0fd2f96e2d4fd82fe5c9e5c3750f5a184e7383afc3dca7a95cc98be3ff8d7bb9d27d3e2ceef6fea1986f93f8b109bb4e0dad86e3b11634547e1bec3db94db1e531f0f2469c9ffa1f59ea8c717be67ecfc4f7e31dfbb0752cd427401bc6d3fb646e6ad356cb036b9f579cdb44df21d7bcb738ba8e634ae37166f98f75cb3cc7fd62d816f9c37f17c835daddf7a0cb6139d1b5cffba0a2f6dc403d19f218d745fb61ec0795704d3a72a0ba3a398a1194ed28e700ef6da4ff6ff3eb8e8f4c8ff5dbf7c3c2e61bc67617689c59cd43c83705807ddabfae5378c74e97957258a815f5e5f73ff669f76c5623c21b233077d85ccd5a5ccd3c0a79db82e21cbdd86fec1a1b3ff87c78e7ac8520f03ab84675f7ed4fcef9ea4f194cfa619c6af8fe45be976507b5f17bf79deeedba0b1a1ddbdabedaf83e363669b971bfe496cd3dfcebc832b6edb4ef66f5a95f457ef18ed3c8cdacf72af8720dd63a76f81eea5fbc0e717da27d5e91bd57c54dcb18b13954674639ebecc3e618cd1a66dedd8ad6739d7f54c59ced62ad92f1b79b8e11ab41f1cdef5e1c34785da7397f93679bd31391a0ed6610efaf45769282fbcc9ef387f6db3c73edab572b5b27fa509bf5d49b13a01ea5484f722fef149724ddc1d1bc70e3fe0ad7706bff5696abc93815bcefa206217c4e33b03d0397df6e906bd8d6873e3bddc4adc523e2da39fa9ee87ba7ee5debc5e9e56ddca71a9fbfda6a7fc03a7d66eea1f19c35e16ffef637bb869a35833101bc068c7276cfa473e3b494a15ecc7e1f61e6159ec3587b0ebec1cc8d91038db9f1771e5a33a70ce2d104f87c64331e9586fe0b9afce84b66775988f3268c4d5fc3b179c87fb4d4bfea478a317cb46741978cbedd9dbf2bcf35fefae8dbbffe7cf44cda1d762e023c03e68bfd79c3eb7fa7aad4c0f3fcba473e14b471f5bd89f2b52c5dcc73eb7d0f63e759dbe690fdae7dbd04cfcea4f9117881dac2d3c28f53ac2576dff4ce9aa7dccf6c9fb19a14d0cedc7b2e9e5ff1b75ef756bbb09f2d8b7891ee34eb4f5aad6d8aad7b9813d0ff73ef8f304773b65fbd39e285da0036eb0e78e653aed50f14f2773247aeff5ec9aec0f7bb656e11a70bd7292d1e721f3f4432bbb2ddc3f58ded409ca5dc7f8bd975073c36b4bf901c0735e382ea1849471feb5fbce78e4f66ecee92f83fafb4f6d879a598112683c615e9ca5aec9a8f3bc039c1bbae5def53d57bef96d6106aaf19b3784eeffa1a624266877d38bba828b7eb32ce55e42fac46e3ffdc168067786c8bb9ffce47e3dfc397f8182daa9303fe4efb8d51cb01dbcd75824d72ebaad05bc3fadb9cf59ee937d60fc3b1e6e6af2df5e54f9fdfaa9911f6bbccc8d605fd7fdd943696757aa536ec07715549fc3e1a1f1413f0ed7145cf60de83e3f8b3ed83356f334bafec03636c06f94331e643757365fa68a996bef1624314bf424ee2838be18944e8c935fd780bd4d77bdb6f1057d2cb8ed657ba5fae25e1e8ab50dfcdba23ecf5fc76e577c2c33fd99af903e66d45b2f8a719f4a12ee6c07d4e1afd8f1afbb8e567856de2d820dd0a63538cb4cfb1bfd99a7378c74e7314fa37c4aa46d7a17e2f9376b21f74cd7f8cd6f0913dfb83c7eba80d0ab9b7684dca3e55b808ac2ecbaa3da930edd42a3e3549d7512c3ba077037c39aa6877aa5818fb81e7a5834a16c6065eaaf5f2c3ea30c5c0973be601f6b537beb613d60e0fb7097af623ec267150f85c1a628ce1fc7a3fb4b947efc0c69956dd51861dc43ef8b7327aeead16f4707b53f1f81d37e1edcdac3ddefa16a824b536bff72dd976b073c21ef429b96d63ffe5bb6ffe05e3f2cd35bff9cde3ff83fd387f7dd5963dbd969376f799ad45c7beeab885d957873862c035643df7fd994a72f0ff777eff425cf8780c806e1462c330bf34d25ed372909ab02f545b3dfa1dc68ccda11c4083eef7e41a88e576b6b6b1d977ed3abdd4a1f030d16e5ced4d9ffa69f7318f913766bff21a8c9f13cec3f686c07d6971aaedcc62a569bcfbbee0c6b6773b2c0843da7ea8280bc6d71783c4fa9050eebffb9dbf871ebd6be31bc0b379754de6b9bc7763f701874a447a29e1edd2687ab75edd584536266b7335e6da64fb6f134d763beadb3761b7a950fff03cd9effbd9d7cacca98887661bdbdb07e3cb5ce7e3a5df707ce385f4f11fde37f3debd5fb384f14ac7b90efefbb83f8619c6c7c2dba51ae213d5763f6ab3be47c811c7f30d70cf44695217b793c7090cdf75f385effd5bbcfc836a5f3fa92e97386accbad579f307c730ed7af609fcec58efedf83a70bcb22603da5888c53f52dc24c2df60df19d796d1fc0fdf96b53988b3b297a5b9b7fbee8da713d024710fb8e1d9bf9ede02722bd0dfcffe7cb1096f47ca5f7dcaf1583eaa0239ab2cafe79d8fc35c2ecd67703de67b46ed6dcbb554795a24b0bd4fa4d53c9583f47f876def7773bc9c9c2f27e7cbc9f9feef874d71bbd6c4c3e9d6c47614cbafcbcc5b2fdb5d1bea00be2de61e3ab28fde595ba109e3017060659b5abcf861d9b5eb5c53dd39ebe48fc697347ddcfb66c626a3ba49d23248751559ee69b37e8ce70a88794c6ac25669d784e2c4757150efe86c9e4046b9c78d823563dfaceb890ae77e3c7370dbb61e3368cbe57ea2c738d2137b76b5421e8f036c2755313b529d219de373162c666df2751d5291084897e2a2a826d5d8f0c4a9194c6c914b33b47b5b7b372cee72e6eaefb07eaeb1e76da9d6bb0a3f0f840518dd9b7990c66311ae47da62a9a79335bace863995f03a6d45ff4bfabfa4ff9fdd379447955cdfbed5b75879cf8e7521defc65cebbd9180d3e23ad09fedaebad0f783f78d71ea7d0e8b99c66d278bf5b97ed756d7f8dea44077e7d639dc427a9e17ce274c9ef2afcf46a89a0edf0bddc58b031c5c9b700ce34a7c355a6a73c1183e9f3e843cd676a8ff12c8e5d1377f99b0c2086fa452bc5c5ef85af0937d28a83d806e0b666a41919dfeb70ae4953eded9b7e7018aff9a4a3d27bdf10c711f12bb8fdd5d0fe43b819f3fcd3f5eb01f9aad5d7eb55436efa28f340774d627106c843e5adffcede7135d87e2c9071dfb2943f1dae18eb2871cd85dc4aef9d776ec2ec5e17a9962baf5e06eeb13c72ec6c7acf26d17a629b75cdf0a9c9e6c6bffbaf36e56670ba65c646cd410f63326e23edf5d3e5d1d31982f8d544b707b128aec6b883fa32c6bbe0da1d3e5bacacf8c1beace927500b033c07fb6ff6892ff9bd36146f75a8697c9bf51974a3f47739e4d71ee6145c8f92c5fdffa7edcfba1bd5b97661f82f018ed7787c786303361593d048346734a9458270bcca8e63fbd77f43734e09e1aa753f7beff1bd47555668849aa9d95e57c5dde35b206d32a9eb40ededb9b5fed76b2effebbb0e6e5fe733d9ff5de6e24bc7bb085bad029c5b5d0f3cf953090f3859847d85987538fe8ce255079c77aa697b5118bcd5e3f566bd3187bff50dd4ef24c7a97e58610f2317fdf44e8dc3f08897da5741b251bab2e2529b7865400619ef9fc971d883b8c7fe2c8fe7dff068bb808cd5cf783cc79a3c8c4daee8f200f6c34df988c9ef1665761266d6729df93c2dac902743e533b17ac9acc497f7656cc552b67a89872b6762b5e6ac0a121efe4cfcd04d6e868e6b9b589df88e19ee97b21b8c9c7090cb96ffc2073f2bacab9b339e32f399e4fb8a050f9241f62f7ae56cc976339e6f5bf1bfb184f78cf3d0d7df81317bc062adbc990e3e021e6b3e71eb4ff91698a741361fe17f92bf4e3dcb779f8c3d80f6a8b33cbda91a48edaf84753d71c8d318642317588f3cd571289f39d8d6943b04f521580fb095e7848af7d4f972dd2cfaeca1466696f7918cfe5031b219a77af7d99a98f19f8b599dc8b91c10cf9ae22b604349d99399f74c67b8dd8e1c6dffc0bf77de84859d0d2b2f81d84de4671edf707fb5ceecbf1fedfc691e0cdf80ce99d986a213d5b7f1ff19e77b931377eabbaa69d3fcce8f3c60fa9915d7f9f9ef9d7c27e825c8074e39e07f88d3dadfc483e2b1c1df2a1d12f22f597830ece78bc24789c7b9ffaf3bb851992fc91eea8f15e13f1872302a071c6f65bfc7b477a77589dcf1661e592775099e5c4c3ef5ea409c468b1ef12151c77cea26ac6fc8cf6f471f6b24b654bb34f98d7ecbef91d7a09dc7e59ed2fd6c296639e7d457b942935f3522ff49692797ddef398c8fb992f73a7ffaa6f3f1be5fcff29b1f7911c85f763db6dbc8f0e7cc72979f14ee2f60f2a20f1eb99cc6bf751f81d767dc3991cf6f354f2ef1478932eca3947b10b1cf72186fc5f7033191e823e1ed8858348d95f45de0733680de7d35fd8b50b314acdef1fbaf178ca5ec9c0875bc6537d5e2d1df429bf22f61ad72797e629df9f49c8fd2e2e673e92c33d7cee31960e8a51fdd768ac542de17daa6df551e013fef840561f76f46acb9c9fda7199643ee3f51dcbd78f8bdd37d184c9c01f96d95e296ffab7dc45d451d6969e87d3a5fba2cb00fd8fe90ff3cc501403eff9effcce7f75b91dd817d9ca08ec6e7f73fe4a0fe97e7507ef0e4b7d930e409a273728edf0c7609fa0facb270778db71aabc1b708df606a13a60f6e3a431ff8b34e15b315c721f08ce9713e807fe93ee78c425e3a8a6740de30d66f85a67f6e9667a1ebce267fbb996333f7d57be1e56dad7df033ae3af59cba88c8afaf726db8dbf998a7b1d3f515d2a6b4e5fdc7c9a71fde292671698264fddfecaac659f23fe2271c283ecce6713af0696e23e0645335275df0f7adf2669c5a58cbcf297e12fcc6e1b5a8f2f0570df192ff7addb9591cffd76b5ab2a1ccf8e56c2e07c823c75a97d9fe125fa5a5ed0a819c57138e8fb41793a2b71496cbcec89b966727da31caa6061ff34d9e6b0971cd29be28b60d2f1d720b5fdaadc2434f260c8a61d94ff9cc604f7c6b3b794176692eac0e7d2216612e481d50f312b73a7e84bc5e9a97710ca5ed6e212f3fe59342be4932bff730bfcedc87ada7fbf7adb0b98a85fb62707a5859be1a3a8d4183ff9ff090ed4bb5e5a78ae9e7c8fd10354e62d3fe44ddbd883eab9c131e11e41b8fcdc4a117b616f0e58976c259b0e45a569c25aaae0a78ed98b47da4dea2b907eedd46f1e7242a5eaf6233bc75f80bf2bf624e61338a6b9703ffe3af34d77108956702389f109b3478f05b2bd2dc5ded82dfdb40da2cdc99e250d5a51db8b4df346e75e384ff00aea2c397ad252cccbb5f692c8e345f8672dee57947399764074a1be7f4aeb8cc53c58560111f4820be6af5ffdcff85d79f29eeadf8b885c6fb469925be149739f0dce93ce3e8d28e1057f8a57236692f7c348b106bb519dd93aa3c497e936ba2ceab63e91831c9a23f769e7da97ee363ed6e65e17e328d0be90f882f74a2efd27a19cc83927fd0673bb94c3a9cca23d2f7aada343de61a13bc888cba0190bf728ca41d661b794efb69def5fc419b8a25a2ae1b82adacea889b45e84bdd38d3edf81c3d370ed5b833a173da93dcffa8bde5a5195637b091033e4c73327f37ea47fc50e74b134747ee5bf3b7b4cbf5f5848170acb0b651aea353e650de9edc3fc3c3bc8850902f5fbc05c27a9c4f3672cdcf573aab1bced779433c66a97cfebfae13ae9f7d6e9ce551ae79b6e0efcaa745f9248a134dd7034ef30c369b313758339739953e8fd37c69f0c8415e19ccd7b45790c384723461fdd53971f2415fcdbd0b7c42887b32248a1b1eb17bd8f03ef1b5ebdf974660ed2c9db3da96689ca596f152bfaf72ff6e7c93b25d0dec436887fb0d7f19d4e467243f7653ed73d808f7d638dd4de5f8b581f82a9d1eecc84ccaa4c5e48b281d7e8a0f5ceada827cc750ff9c04e28e676c32d5a78e545fceec8bb4bd32cd25386f4f82d5826a876fa535cb1b1a1a27b2319fd51cdbf9fd1c39b32e8dc255d8cec611bebb9dc6e193eabfb18e9477f20c51eb0e30880dbed8335ea371362eadaa175c443a1f3bcb5776eb683c40a173108cda34396f0fd70d559128be4f95ef94517dbb89f5a36adea7fa205c5fb766d1dd2b03dbb304be99683adb7df7d88cd127d4d5b3ab68c6ce9ab8973a4135e323e204ec6ee67c9a35e93baa37035e487aa6b92e1eee5158966a9cb1e6da9fe6445dcf1c7168c6ab48e45e74f80defff5bed858f765c519cd9b72b47af89bb3c8f659f67bcc386af0ff1beb59ff2d214ee51f6a3028ec2096ba431f7eb21722ad2e3de20be75a6dc7a693f846bc2a4b877e33c475ebf2b4fe0f9657eb5e6788c3ac7ec85e17b8ea00b179143be0169db92aeafe3076eb74da45cb3bb80d37dea9c82fe1ccb03b72ab6ccb4de5724563b8af7ae484426265c4af4116a1fba79afd2adb66cf0e3d49ffc948523ee09f1f2d3f9f473e24a40b9a7ae9bb0dbf13acd97e41918661ed6a3158ee6fcc1fc2b8a3736885ffa51cb71dc86827e1fe9df6fa8f3424c6be553fbd92ef807b501f6a8946bb3df06777c9d2fa52e4f794172bf08cbc0091eaa5cce15ccd16b2bd438033f22e5d824878af9b76a1131a52fd545e4116f17c59eab9f2053ed093f382ec2432b750d950f00cf59bdd713fff76b391ef5330b07c66cd231e85b0cfde2ab2a3a5db7319d3b861ee9882f553fa8ce9776b67ee47b1153516351213eaee27dddc03c4c9cf238fe36f25f747974e7c4939105bcaf14eef356ea0326a7aff8aa7c7aa6c2f89aec78e4e1e6e013017c023c53013feb2f7546b496eeebb111a5f205e6c6792bc750d5a27d538c70a3fd97a3ddab5cfa84ea741eae55f9d2e7b270a92eaaef956f46ddcb488667fa3e467a3407acd9d2e1f776867589712713d7aa2e22b49716dacff585f603d464908f2abc9585086a2943143ef596bfc7d03e98f76cab22c9de72fbbd71ae13b7e2429ccb51f183f9b776f497339fd5e8df75ac47cb27b00b03f2b5de2a26f73e172df0b8ff47b7b1e0dad7846f60f435ee888bbd2ea240ca56296b34bef748cfa676e573ae02c0e31493fcf44d7be5d28cc9842732fab7cae46ca49a4a1eac62ea1f70c3a2cdbcb2a4de9739b0566ec0137ad8a9fa77ed6b229b539ec59bb2702116504d7e5c3cf319da24b1e39f9a20ec4be764fced2acaa2127ffe1b60583d9cd54a4f71ffd80e7a1160465e212e89e3723d96cef9e1fae4bdf1a2539d47bf1ede8d35c9a396c388794258183b55cb4cf74e358ee2abd3f9070a33897c7fba7613ead1e4be76f17ed00114b6d7c3f3fee5ba4324e74cdb3e847502587055aef35a901b32101fad1d5e089f743617c6bcedabdc7734379da9438e339d90ee97f69cce0bfa6d2cffb41e66ba36e99973dc48579e8f47790f60e52bbd1479823ea65a6e294f7df2b52ded07dd4ee51e797fd67323bb1d3507e84757842a2e7a6c0eaefd702ded67f1d56eb935c38c55186a062f29d86fe3b29f30a0c2bb5e2753adac7cfed02c545d05ffaaa4ddb5055fdfd3cc26c89780e920ed3ca3be1c38eea7ba13888b41fd19e5d0603f0e55df107f2aad0da8cb5535e6cdc2357e031799d2e5d5f8197f773fdf8ae8582ea2ec414fd4ed756e43edb3cacfa4673cb6637e5feedfdb096b75dd38c991fc1cf7762b6d3cc5f5b2029e7ae3ac567f7f8c9b411dbbe648c17ac5c9d67796b80f3cb27bc9ff590277f584175a02b7b8b2a704607c699b4c5fcb5f9a453bb3351fb81231079deaeaebe2282a2fbc289e947fb947b6cf319fe67579ebb95f5b7cd5f6ef9c8dc8b1db4f7112a9c30ecac7ad7d1772bc558ed7f046be0f699f6abb5e7e7b00d8104a2fa33e4f6d54c73ae8fa5a3ffa6e478d6d756c0ae096baa8f505fa8363c82b2d07b48f0878b1016f2d082fe47ba01a403d7e30e6fa1ad91e08a34619d6f14b5574f08d0f63dc574102ed71119bf621b44d6b52dcd1474298b9c0232762c057c863d397a5c7117d9dba8f5663e9ff03063caed9d6bcd76c3b97e423600bf7a6eb7e8a5edac3b31c13c02bf1931b7139aabd6062dea8b64de3f0b15239fcb9f11be505c4266771383ccbef661b62a54d5cb1ba1fd44fe4019e645fb50895cfcbf84df6e3f49e41e586e9b93bf87699274cea7e28af7e7b3ef81b8cdf72ed3e519e82e96bfbeef2509e3f6e1ba85ac848b487c49431b379379ed997f2bc288813cde038061d7ff29fe875a4f75086fc0ab28d70e2702fd8468ea76ab3a24b9557632d7574a3c69b072babccafe01b98702a676bfa01132e91f6f79d01be8259cf9b1cdb43b2d4187e9a435ba83ab894e49755430db2e6a0efdb45b26f1c7fa8f224247ea793fa0df11f92d1b523be2be0d20bcdbc50bb5578f65bc8231295cf6fc4c78bf90f03f66d47b9e0bc084fba6f981b7056be111c1371829ca1452875febe9b30326eb5353d6b564b5e500d5cde11760a8cd34b97dbef0af312be7b2e1b747e4b76e0e752e9f6b466e7e3abf9f96735ce948f43b8c2e1bd71aef68cbf1aeb2d2fa5e39ff0bb088f40d954e319c7932d2fdd4dfb4a0907847002adc8a278e509ea76716c6d397e8abb4df9855bfd8c259e17640f23fef03476b1102ce1d14fe6f1b4b0ae6136802c5ee73cf199bd8a21978a5dfd8cf117be56795de77b82fe108cc7d855a67dea0bc39f0f7a46a862f887669ee3047ebb765c1dda9130be285ec8477eeb02fea4fc2f86ade65405cc95e6ae93efe7f9a063302a7fa2035bc688298e09d40b18fd31da1ff8fa478cdf5501e09b9d94ae56e54be00348f2256079639ea3ca7f275d9f23376fa53883c6a5e8ec87367dadcecd04bbd6b42b631ea631173f556ed9cec88fd0b8c5435265831fa52c827c37e486e05f356020d9515924b7baf8dbaa0ea03fdbcd28a0be7d8fb91a0a6b50e7aa770fe33ec7fbabf699e5436e1b67cb2c65dd4bc2929fb07ee6f545fd1baed77dca963e23bf2a70ec06aba0d55c0b1d607b3faecff97a5cbe26de84f1de5ab4ce306e94b3798d2ad8d1727dd4840fc4bc55988924c333a53a3ce6f6c93636ae2e84092c75c607dbd0ffe8b6bc6f66f1feebc9c44a6f82ab11ff407db6cbc549e53861bdc9b4be1e6d4c88e71df8b1091255932df7d7243786b90d0b7bcce621f9836e150f456bf05cab3a15b50fd46ff247291b936a77928bbe4e9fede698e8781c4ff1ccb6ebfc3ac7d5423be054e69198f447b9e6b1ede17bb19e77d2f9bee05cd36d8fb63962f0cd72c6d08e9e7ea3ceabf24254dc4b61c17c7705f05cf595a3f2c300e7e1849883fc34fb76bbda1afcfe906fc29113ee8c7ba9ffddee385480eb86b215e6c1e4b756710693e798727ca33cb1ecbedb86c8a720d7b1c32d3661cca0ef76c22c31e2a4c89f66d41929fcb2b96f1231ce405ed35aa0b9381775c0217668e8d559377669e3ac2cc31705f1d3c9cfe5df5b47f12f811fca6d17d1b172966143d85b8db39ce77439abef37867e33fd9b47cb260f2f5a3758b84bed67b38cfa84fc7a8298bcd6effd13606c1751a86c24b9679b60457cec3ee916cb63e7a9be08467106b4119deba519c147ac6a378ead453949c8538cf114cc05f8a2b138b476a2380cec668cd4332ff89c44fdfe80bee46027b2325776ac1c3bec0ffe165693fb77c59f0cbe417a7f325e7b85519ea83cb751dc63ca67a98b28e8f2e587b2eb41cf5a13e78fa8fa664bf80d07fe55dac9852d92db548be3df2b0efabff2e17f564578eca63a30b7459be4d85a3aa7efd8dadabf0aba9faabf239fe8a909561f3c5fdecbbc52b6dddde0dc39987ed5147d53c01b9ffc36c730b7c6f7a93521c77c3f8d2ffbdd0fdb6d41273562cd90a768e68929ae7aa1fd7714b735db4a07f28335369fe1e3457ffcb4f6554e8830fcb2616b71c8a59ce674de0ee7d21c3bab873ef3e8a2fc3b739f393d4fcee74dd9e6fead0b047128f9b77630e3902babf6ccdffead159105f96768bf4a9b3a035e6a47f36a08e5176e8d35d42c924f236e0b5cc0a5c65392ef997cc8ed544fe456818e29cefdffc0513a3d9fd6e3ef6b545e4f7baf0efcfb942b2bdbf55a80f94c03dff4f34725fa28e16f59ee9b7ef5b4ca135bdb8f450498775d1e894966f81fe5829ff1dc460e5c85312ac7a22a42b71d8d3dcd23d1f9f3feb74e7f690fc92bc5d4282f48ef05d4510dbc58d90f1c63d259a4fdbe088fdd5698185543e5708ce91d2abf39243785d7d32ef849d586b6339ff3126ccf725c11964767dce7deaa3c1110637128cf29e01f884fc54c3f85c294ba75f9d2abf3e3af7691dc48f7f493c1e7999ffce4160f13ab678555f16c40ae45c09783584d24f4de068c65f141bad3cf8777fe6c171dca61b1faac72ffbbce2bc23f06fc04c2f903bf8cdce7e14ee5fc58720f7cbeeb7c0fad2bad168dcadd392497761b29fe8e0de05631fe543afcdbc03bb8244145f91a2be0b699f438dfa9f3cec425bc98b662ca9641ca9621f707b231bbcf6ef2d540cc914f7cae519d2f33a9f7d4533cee5e0762ecfcb09fce6b6993479adf05d71c71a7415e5004319ad697f299cbb34b8e2761add8dfdd56802c9dbe0ff369419660de3ce085b0912b1979ab0ab9a6bbbe1d97e047d2b505803562e13a1b57df70364d39897788f74ef9b8591d88339d296955f8b6c661fb43bf8d3dfa5ad1b9aeb0aa29eea4ce59fabb3c035623f97645e6543a37a92afa9ece75e4dbb5216f11fe4e9cddc7aae85ecaa23a56464e5ce32c3710c7b0dd5b55e03b9b0163196cd11dbb8070d7d575d652d7cb53bd34d667e8dc43bc47da8f6ce1f6948bb3a88be4a38638a0abf085a7bf0f49ff5644799d73e475539c692abf42eb74cbbe1bc5c1a86156fa9f57166257e5fea0738549574e027f39d70bab4bb350b8f230269e3e17f55a57eb72b500fe1bcaad7863c2aa72fb6ec4165eabc196b6fda7d2d133a78ae478d46b83bf40e789f0afcad33e3bc23e6c1fbe83fce58ab76bba7e280b01b69ec2a835795d38faccf5b7148b4874d3bdd8a7ed34c66a7cb25cda86fdfdf736c5619e1c5b076be68df69f1a1bdf917a3a60154fdf0d3a2b8e8bc15d093ea02c5fe97c973ce77d7bf8bd4fd80eb2d2917f83df3a0f09e6acd2f52de63d5467a4b856e6f7fda91d725354ae997e66b1d07e8a3fdc338d07f5df9015a06362adcc36ec27be7c68d7dfd92ca4ed14028f7a9ddbc06f0de74bae31933e7e7b06e6eacbe7c49a8be3f0f01bf14a217fe3711f602c29d1712fdc0b808722d458c4cc8e33c42cf9a2fc32cd05877983fe4dc57d357f4bb03a00d76ce02fa7fc59f185b665849c2a13cf5ba86374eb592c9be2b79a170bea93089bdf51dccdc4f33afbbe32b7bf154775e5a38e358f67541083dee9fc0069a72c2d23e67368c6d54dda292a1e513aab9bd4e5e1da80b897263ff8f703975fd615aeae7953f968ed21523a9950981369be24ae1e85396e70704c18f1f87b8aa5cef047f5f3e738e0b04fb25cfb6758ce5df2412d2f156253c07eed545efc00b1004b61167752ced9937c863c88696f1b7245f32129d9f213eeb5b46c56f2e7b359747acd4f397f72ffea3862d02cc273a9f2b0d0f7ade2ffe26d9b4c7bc659ae09e35c9f61955aab73b9ade21caf8d98bd8bebf649f6b3c6b24517f417ca4d8778b7a1fb5f5aca35214effd746183c2f62451cfee0fff8aa02941ff2ac447f0ca3f3741a9b645cdd3ac7270e57b3ef88cb46bac3ab7a6fe32c5f7feb039dcf99aa71549836c175c647447ea0e9cc102bf89e18f055974359ec946d79afd8ea8b07fefb6ec29a3982ad05b99638a731e691a0af9af87ca7da0fdc3f99c2ab1f575f74bdb2097eaab53bb51b5cf524a752e8f3ccb7a3d74025e54a7e0d215fc19faf55bc2fc921170c31492fcd40f90be3ea8378557e36ce12eff78c9a01e35a6993ebfc0fa31dfb7c7aa75c3792a9b371a43c0af041f7943b0df9a4d3f94f78a8fee7bb89410f3a86a5b1e96771f449ff00fcebafba488e657e8531999e3bfb1b8dcf646fb652e79c748187f7cef411fdde49f75239b153ac51aea7788af9ef1bf4ff698e3f88c9838c30c6623abfcc3d6f35f69c1bad059b32b2e459d22a2c0ae02d724f6521e0bccca51e8ce7ed5fe803391665116a6ea4e6f7f8a85507e20ebaf756e3d74f3c3db2af85ce737c18dbe8a2f863a7f90ecdfdb929f3ab3c4ffb76884e2a76adf54fe5bf1090ebfa5de509e27f3a4b759efc447b07d7676c9c5173bd7b65775bcdb9f6b370d46f4e7f9ff1affd2c9c0719c1f479a2f3ee68df28feb87723cffa5fde89fa4553b89706ce289d03043e8ff93d3cadf2d23cfffe2cb7c4caaed13f23e0dc336ca3aae83f9a2d1f2a4ef9db41483ad8e3b7ff7e86574aaf63a61c9ae40de231f291e4a43a97559f8fad8df6dae37c148b49ee684e733f14959907c91f7e43dd89f8aaf2e4c12e057f1b3c2b637e9a5802f3b3613febfc6693e37f926f23ec25a3d68eea300f4a7fbc9ecac2bd2b0ca0493f34ee337c5e10ef0b7c558f0d3eafae00fbe3e13d7e4fb6ce07d49bf0307c1ca372441ec292305e507643db11db8e3dfa9aa1ad2f9d48b4dbe41e8fab0bf05b13868799b70e9807801d8379951de424469033db06fc467831df2a16f636e5a4df4b3ccbfeaa384fb3f52c7f19fc02a61fabc13e7d233f2a7e6b93231f1ee14e421be5f5ef5a5a432d7edfcfc28efcd80e7d0ef8c389cf86a59bf9d1cfc45bfdcc86152b6c9e257cf5cac4aaca6cfe935b629ff9ab75c25741ca433f21ec31d40fe1990bec0b627ebe615ffe425f14f62fc6776fc83f056d095e17605b076d293e2fc4369c830caf7b2e092b1adaf079afd026dc9ece10d106fe4dae27a9a770c87580f14df0ba159dd7207f526afb2e0ba1f9a8198e2dc3bf553dee275c839c7227cc3cbd5661d880fce4703dc767a08f83fcb8397e5745eb4ded9b8d794db120f95b84d28eb10c7c7f7966ceaecd69fd4a7b16e50eb6533d788fb5ff1c75a58078fdde67ef9ef36e8f1d5d0b31ba5bb3e0f7662b323c6f97d20e6319fb46f98bb6185c5f63fdf72f6cbbbee35ac47c426c434c8146ea5c45f45de611ec4798431eb9ed16ed8fb780eb384516ac3ecafc3a974307f77d37e5f57ed6f9d5e0b733f4087c77df8ce24cbc0c2a167084734ac7e9145e15d646a3bce72a77fa867a9edd570ecfa4fcaed2dfef317030df9b451f34e46f2fc7d553325ec59b07b83cdfaa2da35c99c66c7756a72eb7bf8c3cca513da7d2cf6875bbca8d51b8c8d0e6f4375dc308f72c05f8cf88ab1ddb0c7caa4578ac3cff56e1be3ab4a318d8b85ae8bff9e1a5b308676aec6e759ea4cda2cb5a857fa2aeb1a71a277c667469b6fcacea556bd023ae76932f558d14bc2ba66fd6beb5f9b5535d1fe2146d9ac03f132e415f0a9d97b1a8f3e4d2a14e32d6f9f534c7edaa4e8db31a1ef12a9b853bc7f225ec37c0030da638e5bcdde059d398b1f651aeab2610e71af5c47b89bee7f71dc55c1ee4feb9ca97765d2402734fc03f8db13d872f2b0775b5cec1586287fb6a81cfecdfff68f3db902b6edafd4bbcfe08d7c7b817106f7d88de954f509e552ad73341d9e0e335155c9338d0b6c336dce729f6e719db709f67f8fc576813b83f594eb295f4d104704da12dc3eb707c385e97631bca9e1cfb529784030fe3ab3894df13922dfcdc38e2af2a4f0c1999887a2b06e01324fcd692725d4b5843b07f04fa66aa0fd4ad904f0fdb8e1f380f848b8fbecb0f942fc4ed8eb91418fbcc513fc7ebc253e344bfaa3c7955710a556737d999f89b2d8077ea9c8cd7be227ed9b2c05c0683d798b015d06782efed3e48f67d55dcbdd5f9eaa6f160502f94baebcff6c0bfb823acda9f5fa3c746d90a9a0f5e7c5523d46f3de17b906bef0dbfd92d1147e1e3b7f73880ab6a131e86916bc22136206defc25a825dd53cf425c6eff2f0d91cb9fd8c5c7acd156bb4c93d33c3d135fe66e4c65b98ff2166cf49f05bb6f8be1ede97e2fcfdc0b633b46501629a611bc6b833ec6b8cb691ffdb3834243319be83d31a11c41fb42fe51853ce5a8bbc3853db21b2db858b396edeb56f283f13f8941c3e6472aed1decb719df1af2e404c40f37ab9ae084b66c2f316b85e72fca60afb8f6b3cc43665c7e87c83d2b9feb5bfc3fe7b271e8fe1f17ba52edb0eb8de014b50c743097b1bf35f28071d6b6231ff01e7b9c633e0175e47e7774e757ee86b221f682fed5465b77de33388f38bea2edb91f7e522d1181bc54261c4882f55c727f7928acfd5985f7b271f2ed683631f9ff0f92a07d3b4f3dccfb288548d016b0ffc3ef1f4609e24d542627edcc49f16414ef32804c4f7c937f546b89f5d91589a6b09f2d36732dc6ae6bedcb3ce3bf6ff7ef80de3be460c978478d27cabd4798e78de27f8de5d45b892756e63ac74c255116857f161aa5d71ef55c18787befca0b571aa0bf7bd71fc5b35717defb11f36eebb2282396770fef277f23f69ee55aa574a750ef6a0b9f93dc2072e28be1dc97313c6b770c94768d44a0ff6e54d404eba85b634f18a0db8ff339c4f9770fe364a5fc6f38bf87fc5c4b1cf705e53fa4eb50659a57106a2bbe64e425df90b7d908f7f13279a2fabceaf16f249270b733db6a0a362cd2dc73952e701d690abf8abe281f389871de5428931dba3e2c73b75815fee7ee3a3471c2afcffe7fbf37a371077f8a55c508d70aee20cfc5ce602b10102ffde2eba0bed378be6e4d290ff99de29edac4f83b75adac3fd8cb31b7de4590db9ff68bfa67e12659e40ded0f9daff50715a2e6daa6045d88754d3edf1a12ea6ba9f967cff80b5319d03f709db50eb9d7d33469fcd229c619c30e37e3a573eea607533710c2af0cb46d37df8dbcc5daa485f19b1af258e37e8494bb4a9d05f43351e5423ec77c7664c289fbc431f0fd5d2d5e4a3af31c7eb17fa69ae1853c767f55d915c0c9ff15785bee09ff5363963dc0a63f02d3ef38aef0eb10dfbf8dd8edca9f395ddda333dc9c16bb14f6f78ff12db8e23cab912e50eea9523ea91d0e6ab7e907c0ea7ba3b5b34f9eaf836f281e7cb735980ce44b5d7b3dcf39fc502fd5a145bfb2af36b54e5f605ebb5ecbe75cea2221b3056d8b7200b2aec0b7edf0efb27c69dc654ee8f4d9068ac46d46bcbff93778a167818fff4cef388fa4389b20ae71ddbb01f318e9da11b3911e44f34de3c7f98e5940b7e885096f195c25faaea9c9f284763fc4d1fd3bcb788978b7e8c12e5d66fef06ffa8aa939032e8d28ec232b9b5f8effd089bdc16552000375edf833e92117d1e25caa4c7f759d74b67cf75c0fc0fcf077c8cb93e51c3b3de13dc5794c349be76e2f142bb18db7ae28882b67fb0ed7c40fd0cd6e2a6038eeea5158fbeca0919e9fa335eaffc6b2dea0f58ff84b963b8377e1a31c2c9e780d7534ef0a49b75418bb2a0403daf192355e784bc41f3757f9a74438e71eb91f258a14eaa1295172a2e0179d67c37ce52e79274d88727ecb3ca0d9838c328274eeb22c49fb62e31b6fd50370d7991666c026c63b2ad14f62a6287e0f8fd85e38776ce141f956341b8cd868f2dc67bd6c8411921c7258e958f6d158d39f1e30e1d9e1bf88dbfcb16c2a76b145f2e6003e8beeff099029f41b6603371eb62debb39369a2f0bebebccf1c9b09f6a5f1a719219aed4b1b55d1bb9aefd8f593c0275169c5f7a2ed670e0dae36c99c5acf20bc7b8479e1588a52f00db768a11bd92dff185597e90f0d587d19f027c22b9f62bc5782daee7c2592d54ad45b1882cac89a398800871dfe07863ad3d61eba24dcc9f3acfc007a69c77f31a8ee3c4f19d95e26ffb56768a911f55e035b87f735c1b35b4bd27c48f8a3e36c264c53c26c45c3d60db74b6cce2674525cafcfa0a3e3b38438f88dd80983b67bc7749b963887354118685f19c6fcc93f23f71afc375768db1f545b3087fa588137100df8c0d350752f798e9771df657ad07257fbdba88be819b857c731d3eff09df293ed16e803617395bc24fb4a3a1cdc3361c9304afdb625b3fd506187220c5b1fc81d79c3f7706ef3b611a0e2af796387da13ee38f6dd31e43fc7a8a273ef8668eedc2ed558e5e86fed288c64feaba39d8652ad7afe07426008ffa642f0f384fa8b72dfb762bf539caf1cba196e3588e3ace9735a3b4677aac9519569fa8dbc3bb137c378e63157065537ce2ba856b385e53611b8e75896d3827398cf56ea815be5b3ed72bba2212696e7f235ea170746c13f380efc8e5b7b267fb08da119fd9c8ef801ca72a877c2c5119e70ee42561cd8c517b0af80f36e90626ce927cce6b1bf852b685550076cb58130fa2a94fd445f452159d9437177966a95c8d0ecfedc735fcda394b33f77e9ab3ff22974c990a389001d6df1ae7e1ad2a92db1bd367c8f8afbe26c7771a470c3ce88fad55cd742af3bbaaa2ffa65c21a8a5357041eec045b0e8fa96eaac556c9c3813344603d97dc786fcd1757e8d3486a6e32bdcc86fc5fbd28c13e6c6ac66d5c0d136c6c6abf36403f280eccfe90c9872a7b9c3fbda267ff49f746d3ffa2a0b579e51563cf2b15984b333accc3f519eea9c81d5b9c985958ce2bd2a42de8cb6c6572a1db876200c27c4751a3f51f6425bff0f9e21943b3cae2ea4d7a08f11e5ee3f28673e51ee223608b6e1f3bfa1ede0ff8363ff89672cfad3ffc179843607dbba7fb06f279495d026fe4159f989b212ce54c4a18af11d1eb6e1372478dd16dbf01b527cc70f6813e8bf48f1de3d5e67d37b75add6641716fd77adb8f185e957d3d73ee8cd09fa18b11faff84ef71fb4033ed13782fdf807e5d2e73b61d71d01fbd597b6f969de66e89e1c9f01b973cd825b29e535e1faf9447986f6e83c975ce038e6d8af9e6afd30b614205e28e42419185c64131307aaf56883a706eee96c1fb051e79f81cc9ef01c35f6dba9819c7b8571ef0f15fdde29fc61f2f3426ccfb1cf759104808f2934a6ce88dfd0fd7a903560cbc97d8eb636e25c74e45f60ceca96ba5f02b5f5e1ee0df816e07b740e51adea44315e80750df89c2be1e32c89a7f4d2cc73217f7b0fe5be4d3835beeeff8d6a2430ef2ef0ef26f61dee0d78e7678dcff828f3eb47975fa5ada66b2ee351503eae293757720c6fdd68fc7dd4f59339ae8f0ade6be2eb748e5e7703c98cf51b03be9b106dbaa58a97da70e64d58f7378da92c5cb927a41ea17db86fc1697ecd20cf9fea88b6c5841f9d06ab4b6d4ffaba91abbc6b9cd52fd44be499099c401a63fd5fae4bab7cd9638ef26fd719b9ecd3fb51378cfedbf3f13ec06bf7cf061e3caef322927ae67dca77c21c47659f2681b8b701d8a8721d8b6aaa4dd9358bc8c887e2eb37561d559d0b60d0790ff3504441b3906776256d46d26175fce65fdb55ad694b394852b7adbd597f216ea5fb0ceb00da9753eda4ca5b273d8d72905bcbecf3d56e9d3e7ba3bac22e5f9e21463fcbe1f20d0e0a73fd86a05756b9ce9bbd3f9ef95ad600772ad6f83df84ee09c670bfede6d435131f1d5052b231e07df14b4a37fd0b50cc06d293e10a7193926db7135d6f915cf3b41b11daa3d2eec959487a3fabfa193417d38ed8d9f109bdde237a44594358e2db44e5d842ec853b45f63e4487fc8fb72b44e86395819e6d975417fab727f30720c140614d543a38d5217510efce9732eeb53591cb1d62be767c03f1f6cd12e22b97741be34e4379ae95a88d1823e5eaeb16760fe1187c5bdb487f84ab2fb5c15d15d73fe07ab7be7a977e0f920ef336af5c4dbd63daa98a011b3d07e26e4f3fe7ef433a97952e368fe0d7ccf75beb42bc69faa3cb20d9dfac17fa66abc7fd703e6f141f2119af74b5ba8884452f4a25c70ed7b36ef839cbd07df607d882ecd3061911257e6039e05e47b3dd6c163ad5c3e9b77c4dc5a9bb9b3933eda1591a5b0a0c9be006c0a3cbbb97cde9970c51fb033920b1f855332ec67ec00a668df04c27a9be5d99e8fe49717a513c9f57aab4d5ecf01f08904e6ac472646d9a52b12afcabb5b952317039e732b954bfe5fffae71cd193d1f73428e956363fe982390738dce6486f5a2a25d245ac69779f4d1116e1add0f7990cd36e979b0aaab22046c62c47d8ce41a567859dfedb892f2f86e62b14bbd0be35688258a584388fb5d16bda7e245157216285ee4bed29814202701eb331ec577598456adf4fcd13fc1199027eb3a5f6a0c27e0325ff0535984fb324f543e1ce4e6eca91e03e617731416a5d4376cc87b399405e6333723f0b6bc378bf03ee114019eca6537e537a755d11ddb098b50da9e9bba90ff9fb74d7959d1a92e7cdbc05f81fcd56684dcdd2bd9c45ba8c319f5bad0f82938cfbedd2ea263a9ead9f3e817d433e09922f5b17783231c63106b85751523ee78c1fb6a0371cd6b97fb03ca2cf8bbe6be30301e42c2b2c2da6d550beec0d93fc382abe57e2942f04f92fda2b8110cde3af2317be2cba845ffaa88df1dec06265e0abb72339ffbd81f5cb31ac38bfc9b266e75ebf4c7eaa0f1a3bebb22fa4cf30473cd0201f5fac4d342386076df2ea21265bf7f6fed41f56356efd38c7c31bd17edd454e739ad4e06c61ed8f40fb88130beaa1f6db0fa56ff4f6763759ee150239797c24c216e04ed8f043f4439f9bf089f28bf5ea65cb00aded12126f277bd1577856dcf812b7b75dba38c023cb13dc691f30af143ee95f2d714e103eea2b44fd4b9093c2613068d89c5f2807faaf08b88f340e57c824f7367d69b3ee008aaf6ec01cb86f24ebeda05bf296e8b19ee21d612119f86b44b4cae870923e6b1af991143e50e7faf9cabdb05d75e61873754f31ff384b141acb98155c5fc30cc986029af7c3af38e707664143ba5b3c5b46fda398ed060e0d8905f6df55e6bff59282ac06ae9e7f85f34b671919cca22d27f533e118cab2569cafc97c4ba524d5a229a805b1557f8698443879c73b3e79780fd3cbb6ee213bc87de8e38078933eb96a0ff711b0fc8dd54157d5c1680f32be70338c2b8c74beef334e1ab2866ddcf64107bee21d654e6899784f9e9e375295bfef1bac2b243e6d92ef357f03be111a3f3f00be79f4775e19ea91670c2a242ecae9fdd0c638df08e5978aa0cbc67c8bd465b12b8fc64fb1c6be62a4a93bf97ea2709c3cba81998782634d611ee33c22242ccf0075fa0f1f73f6115c13d333c33d49f78f8077c279e3285a584670bd916865e6573f3bc69a1463fc94ac73fa1fd00798b885f74401c48c0423331b680fbc1e49cd11c6426f69d5de742d58562cc1930c6fdb33cef49af7887ba3e4f636f646c887ec6ec1aa71ee6c86703ff29cf0bcea39fcc0e3785e5ef99d7bb3b03d70df6ec70f533e4c9df64d6f5d5e4ec8c07c1760a6b95ecb8cae0fd49f3843536f96d0ccc42f86ee4fbf8426e913f5e37e705c905e28e2d22c5c1a4f4f509a3751b5eaa45d84f386ec8e9512aff13c9ddd97507435f650ab339b9904cdd34ceea5605e2abd472c7bc1ed72597b621f2aafe7efdf81b0eb4833cdf98e336d587a8f8b07f98f18de4c9901979f226df036284519c0efd348a4bc3cb2c5bca8fbbf2234c18cb8009a3da07a5d3ef082b2d064e18f1554d587c37a827fafd6f8a67067cdd98771586d99084d9d0fd4c781f235f6adfb7e4573370d8e47b3733ae8351dacdfc04dfca6c1d1b6af2d550e5d7f80ff53146cd0cf0cc681c62e21517dd84ff23ffce7ee782407e9ac6b10dae09a6faf7d806753d53fe2ee102e8df06af0437de7d88accaf32dd001f13c42f9b048868472a5d0debd0e29e32ee64a11ff479084094b84bed7ccd3437ff26df7c0dfa7f9360f131f99ae890dc45fb43f95fc52386c73cc0f949d143bf08dba2fc032b25b8543b4e5ef4d203e4c3f20c87c03efcda8bf91633261452b6e6494b9c7dd035f726d639bd265c06ed4f150cc0333df0bd82880d3dda55511691d69c22d36739c0163778633571791f9bdce1cbf63b2b10933ceccf53a51fe28eca3d958e877e3fdb3fe0690f7fdc5839559470ffc5184f7a1396f758db191f3ac75a0053fabbe9ae3fe067c372b1bcf95e3a571ec70e23a7cf41174a2f3e65c4ec4c7085c7cd407c83135e766fa3e384bcdef98f18711dee771b69e4cfe3ec0b0219fcb633efa54dbf1f5071c6e38671eda16651199f8cf731bdbe45cd35c15d16f3c6d4d80350e657ec57c8322ba374e14cab979f3541e9d7fa4f3761ff3709bf095cb44e8e67c95a5fce8d3ba8a30af8de2974cdc53f06569ccc1b1cb971f06df215c938d53ad8ec6b622fc331eacb26ec2a33eb696e28ee25f8053e7286cc9d5ad62c7bbc61f1d214f2e6bc7e8b942bc9630e1ab980d2b96612e7c4fb90c9f65117dc6a09fedf46f933fa40efc7bed7542715cb54ebf23dc5bb856e1f2213794ff3df521bab45b61e2f9015f45e5619d0d0ffc036173922e3fc30fbc1be344d872c01d34e135205e605ae59dff867564789dc230247f42e32c916b718641377f563b026fc741737b3afc096b8ee85950cb8fbe0d857d47d860847ba4b0e4145e2172a74dbfe9ef2a6eabfeae7fa32da674b10ab8ee1ef0d4607da9d830e0d7c0d969ce39f8c3a58e26cfa705e62795c6739b1ce20a3a86d58cab0df9fba41c255ef555c43c6927ace298872c65febeb0aa7dcc3077aa2d78dfd01c9a3878069e235d43b619ca09c2d253588dabf77a98b0139b45f2991691db1ed0cf578e478de3d805bd89e918b696e214029cbbbbe21b92baa994a3725ded0843302da2a21dfdef96f2f6e93df33627fc87e7cbc5e375bfb5e5fe370f56d31a3a20c69c8181fcd1384bc04156cf35f28864df4d3c78f9fb01ebef7c6c275921ffbe51be4bd99f78a1386380ff00300862c527a3e5e984cf87787d6adfea1ca90dd6f8938ce2502bfe629c3f3ec624c0b77f235fd845e501767968caa3b3ce915d234fb1f261e93d32975f88ed37af8b7b68135e95636d644b35cf937fd1bf978e384ebffbbeb5f9579deb3c7d69bb42cdb7bee610020e21cf97c7d2d17ed77b8c1cb598eb7e88e43e796f70efdf9351586f982f2dcf91af876ba5bc3936ce52713bded982df5ae1f675a1388556df101ba2bf670bd7e2238de521caaa02ecb25b6b1b72ea108a591f0957340bc42f03c352ea3b06de1cffaaf159c7d6c2fd08d7cf7c22d1b7b4072aca0742accf6fba07f27b7ae48750d7ccb89a149f06e47761bc436360f40dfa0b705f33f1553a57bb9a63c685cd189dba3c11addd1d69dd6bfe11d2a9b01fb9ad302c6ca5fb01f6e530e158e27a563c96a55e3bc0a7e7fd769d3c575f76065e0761a3be527efbad563a299e658b56ca6083630bf8cb8cdae22a10ffd4902be9bbc4e70231f078213e1afaeeba88dc127e632d9dd4899b45a87c09565984ff905ffaa32988abf8405c0493bc074c428dcb71082f9d85b1f166d185a4ab409cd8c0c5b875f9326882d5b2f23b69337e4a1b8ffa70a4d8c51278966e461d8297d84d6e2fa53e54e7da9f7bef204762d285a56d1a535d347338c642350ed86407ab1a478a59bc7779c7eadc56fb5ff944a7f813d593a00d8eeba3cc9717b98fd1ffc92836e17fd713de84f2c143fd86c27a04bf21ea6874fdd26e903f10e713ed7cb0f50c4cf0972eb71fdb34e71c9d6f724dfca9ede15e68337ea31f49e9d6c6374a9dfc57eba09c6b90bbef9b30f1e16f55206ec6df2e860d722ef3b3a0baaaa05984fe23ff1f8ccb30ad63a5cfb387f63a5f828e093ccd0cb9d5a51c7ed3bc2de0a3fbea08b715d771c88893e95ce790db435cbbb83614d7bdd2a3ebbcfb62d296b5ec6333d83d7224d0bb64fb6df7c0d5471c8aa06ff52a5f1eebee8d3aade91b15a709c65faafc3a1abcd37d151c6daa078418bcc18fab7de58fe3a2be250bf838c30a10e1b172fa998da4f6842147ec66443db11ac55357b8e6fca0cf686bae511c0bd22f6e9523be708c14568ac600f7dfb609f0369abe298843b2c7b830d60811fe3771fa221e9d9c6fa5e37623bf69fb7ee40efc9dbb17c0f3b3aa4b2ba66b8c3195728638da89cb1e30a58cefa0f58edf3ce37b255caba9bf20638b48183af3bdc2f5f65515ddb49786689f594bbfb0123fe1eecf64b8ba09c5d994ad4c31df13ee75de53ed1af88e5a8353afc5fc1d5317d3f91035e59355c69932c9e1e402e39877e4ef492e09e27328dde90c392381c13fc8e5d963695b2f1efd2155fd18a57d2075235f6306a745f45acab315f3ea6f156227c2b9a77034e351ca5aca2b97ba556e8bcae3b333b01d396b477136eae26e15ef3ea1967ac2a8c1f3b3e82dd9f70efb896d8b090339cbf98df6991a27852daffc5eb7d2185fb5eff13e6ef8f6418789aa223c400c1ee719303f12b221811b24f08fcd60e83023d65f9938db68cfc5ef06feec0639b20dbc6aea079dbdf82d06b633d3dc78d5a92c9207ddca3d96ce79fd36f55be92b5f55a1796209ab5ae7312abd6953511d25ea22241b712f1f35367931d976cc59dd3a2f5438fca0d3570c79f45bcadb24f97b9f5f237562ca69d4765574c39a79d193af0dde5923de87b4a7362dda9b847584fd6b2d039b1c39eaee49c0a58ea3385fa12d53d8f7f49b8d1c7048940fa31bfd535a44a6ae29df19b6963cbfc59781751eb6d6d2265d0a7fdba100bc12e597231b4f7110e0b9457c0bb37d763cb69eb966880f61d03a9553e6d7bbe96f871c903c5926838fbcc223e1952b3d89fc855550dda76b081b71c257d618d0f27ee38c3f97451f2adcab374ff9e780abbc009e345a8b5d1efdaa0aaaa71af9adb1c4f036fb86d02e9d33d971a85318b5175ec22a97b32b2becce4f59b7e3fe2ac81466f6c3379680a1c53f3a7f8e334eb9a1060e39e4e51c556e57b1d0d8cb3f5bac79fed2f955a3e60c1991cb357c9dc5bdc7df75cc4e843dddb3d07ac0689cff741e00864420fe32787c2fed280ec6d93256b97faf21874b637a7f554502b539cc1167b97fde545c7bdb5ddaf19c512dd213bc5bf18f04724e90ebcc6c079f9283f5955dd083ce53293cc5515853ff91dbb05974fb3ab751ee29ceab5158f142e176125756c0fb6ee4a01fec084b8ee22cd0d66adc077e83f39738aebaad81d3eff8a7d28a66588a4aee4def33394bc49dabfa058ab5ce9e6d3ca72e22398fba7f2d720edd79b0021cebdd84bd6fae67e2059c3f4beea1589d0bc16a91110639d6925d8f3a7f0d7333a63570e88cff43bd85b13ea2be1993633561231ea58c699d08b00e273c25a17d381a135ace19e9db8db3327595ef66013991c0d9d2292cedc0b7ea09ebc0d1bc07874ee786290e68d229be65fb94d7e25bb55f4ef3e02717d479a8a6d8d09bbba03fb6263fddb8142de47e767a2e30573511ed36f924bb455d33e5ee2ef8993b90a7a538df0f53fe84d26927fe90cef1bf11d3aadf19f3f987f6e4956a72a0c6ae3d4422670aef325a94855b4ebfb50e59619fbabef5fb6aa7791d265caa72115eda3947d90572aa72d295d7739baa2a42c38ef487ca8fec7254b987bfe155bf03f79377eddf727ea3982fd947d35aa8205f10f2613e6bd24f3a878bf60ff735661fb68a03dbbf1b1c124a07376a10812f59eacf3ad644b2f73bfbc3f3269d84df3b2fdaeca61a5da1ec1a926513bf109de7559ee4642b2c1a0bfb1f3f8eb194b187e413df8d18d85277afe97b77945bd6059ad78dfe0eb99d0ff5cc930e08eb73cae15bd0bac9261d335c96469caf1df9bd71ae0ec4eec6ea542b3b65b42fdda8fd52ef2807a679263bbb6f0fe2a33231c5175cd9fb52afb309ff43bc6d5d2933a63545e30cf81da4d3b542ff1fe2505cc553b62ee8d9c67743eeea1b2f8dffb76a8c6ee5a4332acc52a50fa03e2bedac51d9da945bafe27823702efecb9844727dda4dce79837b44fbf73b69132ec229bef6f8f703c5b528264e711ca5d783ec30f2532fcd2289a56da87c59dd3061ef610edea0fd60a093673ed4d53781f83070e2cddf803b61acb75f7b9cd38f325faa35665c139a761abc27c33307710945242a0738b8746e437df7d0ae70fc2fa36ec03847b87a4f5f211e04f66fadeb2c8093623f3c8c3bf4f169da0324a3ba22f95475483846b8a7946f603ae77e6fef98cebbfe92f3564f98292ff05be79280def8d086efce82d5a576fc4f752697ceeaab1aafc77291dcf99497a1bf65a7f904c1c7e636813834a3cef7ff9a387c2bc245b91e2b8cb7c2bca8338dfcbf9fcd223cbe8d909770a2788481dba8e57f46f6de536be0a625e6ff27ddf95e152e71ea906fe050e973ade3ba360ad709f1009598cbb56e82d5476df82e157e98ced7f6fbfb644bd2582387a1b215609d3147ea9e5779ae16759e58b5e79fa4fea2eb400efd5df16c81bee5ace4997a04cc3acd41280e8d407f108ee39235c0b334ff7b968bafd93516f9ca80c32e9ec6f97d7a9fd90fa9e72959d84c3e619b38ca107b186328434d3856b4bf746e5593837fffdef9ddb1da269f860f17cf2f9d7b84674396fb527e3d1967618e310eb00f305761401ce7d03763b22aef54daeb935d5716d1b2192385d7796985798f7f7fcb971fcad7433132abb1157641d257f6ec1d5f902383bc0217c825a5f5dc6dc36516ac3e5aeb7a6cf53a5a598da5f1b631ce36cc7169ea7ce934ce1971131dfe45f563aa9e6ba0ba77ac611c3ad110f6d754eb817e09e35ec48f08b8f2270c8db31452ee77f955e5fd9faa893760a8f22b607b02b7e4829fc83fd2bfe5a148a97fc9fc9e8dae6be1739b0eec38ac21be6bbee3a9f6cc7f0b00f35873749787d06e556d761e696ca8f620a69a65e3bbd982df5be26acd732128571efcd7aaaf59cead3a40dcb744e7a3ae6e130f12bcdbc8f70f275c588131f9892fc25857903bb0b234f710e171523ec10bf9698cb5f6f8acee9bc61ffc1fd3ba0ba3aa483e1b07edf5f871cd621defad71ec63ebf0b0295cb49fed55df39fe51d503695ceec927706c161c721e9a5cdc0dbe84b0395497dae1c007a5c62bce97435c840a2705d6cb949f06326ddf207e21e4f9f36db8047d037d5052dedecdbd40b6a49c7775df0858b5c175fa7b5ec9f1557f97f3ee63ed8e8e33dcab2261aafd4de5f7607d8a9acba31eab61c66b71ff2ff37fa8f265d0e1d97b2e0bac472e0b29e32906b910e4a38d7ed585cbaadcfe36b9b3e4d9c146fe21ed3a94518adfe57a21ce96bed3f6169c973a2fb10efc7b82bc0e27c29655dcf3c677ca3671479d20f96c47cad3c13c72e0d530f68089ed7f694568c3becc35d7f911f119fc938af34f186d943be308abf6facb147784f509dc96cd140b56d8b45f1a0799b03548ee31551fbe9b72b403e295205ef0cae0f5a033e5a06a52f997c6e11bed7b45f9648523a4aeab9f9de64a7e422df0b1c9b98a1dd88df90cb1c2670f465e9e58a9fc47750ff54b9c9b9c0f753ef16f550ec41e6f696e9fab3c394e9c5952f732f13792be75cef7f820888b44d5bd612d6bb31569972f81ab21e6f25af053296c3bd64c7a0353d80ef2cc4bf32a863d40b214ecb245683127bad53ad6eb5eda4512a97a47c879916bd7e96f8db3bc109edba50992d76698d5404afd98b70ef0965b59ceefad43fcd6a3aec794ef1feb82724a87eed4382160af19cf3962cde3f5c466759628ab88cfb637f24091ef2db8ea3e63eedc52341efad6400f09267cd696be7787b99a507bfa56e099501a7977c469706a7cc04f59aa33917c607feecf41cf077271e6492665ce7c1d23af32e6b4cdd7b894e765c14f90330cf8a7daded298ecb0bee66beed6e5cbf93b340ed884ad53211796d2a70843ca888bc8fec839f4e66b87ee33382581735ef160d9cd80b51250e7aafbcbbf3ad4056fd502ec4f47e1e84cf602d4cdcd79aba6f657e0f0a3dc545d83ee287ebee488d773c0ea33634abb1907a720dc6a3adb309f5f737122b650f259e3ba3e97455f94b9a0588f384b3bae9aee83f89d891f86b5ec70fe69fc15393f53bcc3eedfd4ff21262a34cea4d2d7265d5f8eff831f0dfbe0633db1cac3ea2f5d7e1d5243df83eb7874c431030cfa9ee216563bfac70639b8948ffa56e536ad854e7fafd4a59b05ff2a1dcde94bdfa673fa4f1dd5e2eb75ea45887d3ef6a22cdc6385e7377070b601ead6b55caf5bd756f99cf0b72dbfd75bf762dc2be71d6abad4de537c608d1ce7b15367c257abed1ec57925c62ed0f8acf87bab7217283f13cf61c813aa48776d476e7545f8a531cf817fa1bcee082fc6e047fda97498166df793f235813ebd55757e4bd139c2228c11e0bb6d0e89ca9b40bfaabe967fe9ff1f306edf129ffaef63037d1f27fefbe3fd4dfd8bfd7b298beabd2cc2753bfa88550c7c5921e01437c1b56fb738aed9e83be508754d134624e03ffba0079bd770e2a59bb7295c497a3ed5154859a1f5297a5fe62c89c361e663da685e95d478b737f1ce347feae3007927d03fdd2f6129bf17e6f27f7cbebfdcfb6dcc3a3f4eaf7eccfcd7f8764d62e6f3f806bf9367cf3a4543b8898be33a79fff76b5ebc70936ea2f5f3a63ac5efd72c4ecf7e65859b678fbb31139b67af3ded87d08d8b6e13dfae76e2f9d19b179f32e6bb597a0d63e687f1ed1ac52c2a9e83f33a667e4eef8b9f836e13332edf97c5ccff78f6841b33db7d0e6c79dd773c78a7d4f203fefefd2bb17c2f7dbf6e63e71aa4eff0dc28c16f7b79f63a3761de8959be8b7d136e6c7f62bf78b779f63b37b6ff73e296efa7efd76b3cf82eb7f6a7ccf2376c7d7d8d19fff1bcf5e53b0bfcf62896df97b0cf53cbe819de199e91e233fcd8a9b6d45f1c0b1e6d9ebd951be7253c3763fb53c2a03f1eb417c9fa792bd6318b54bf8ff100d7baddb03b554cded3c23db515eef09e7efdeccb7ed8218ef7d329917df63e4f350bdd84fdcf2995e3cc4e705f26c7874571b6be1ee3c17f8d71fca34c8d137ee3317e87f928699e2fb1f80ff463cf763046710af3718885279fbfc9f1b96133ec4e6f2c743b2b4c9ffdc88df36edd583b78776aeda16ff5b0833ea50c7ebb30562c72e17bd8ffc8e76fd2b57c3f87b6c4f35d1c5bdf7b0e7c37e6bb53cefc3059cfe6f855fe2d29dcb57a2ff55dce97ec9b13bf7f7fcb79cda0bd2be575e9745d85d7f1a7f8fdfa11b3c4c535339c4ae66fe2f4da431fe5fbad41ae239fc9b5ceba1f0fefcb9235bcef2b7e97ebc67f8ed32bc7b50c6b7b19c3f74a894c633830189fd22a4f09ee03d907f96d5b7ae65ef6252e22fcb685bbc675257c5c57be7cd75d7e5b85efc67e3271c6e744dbe7f579037df0b89bb24f631fc8fbe51eeddc78d1afe7ebb5853d9a5831cc7dba86be6c495e7cc7efd70adee50b1893d6823daec6e109d79067c537ec5b67852e3cb7e87dd9bfd47ae8471ed1bf3efe5bf03587efd92f9320c631bac1b8c8efdac46cbf880fdd5abe3fd9546bd88f19bc9fc7ac74f4380ffb5369f9bb68807518465658cb3d93f29d7a7f8fefb5d7197e634fdf60c7228635db0c7cc06bf6b0761bb63bc596bf89ac7081e310d3fb18bc8f333fa0f76d23f97d41e4a6d4c734ebd6f9bbeca3d07ba4449952936c71692dfa34cfb19a0fd9df1a9feb27a95c5f4990ddaebfe2c1df6437980f940b6c35c2bffc3fd0dfd60a0f381fc3725a77287f18edcb76d8c13c679627d7bccb607ffdebfabed1fa7ec5bd21d7967013eb93e40d53f2e68a731fdde21b5c1f3f6fa3b57c9e9425706d41f36ec7f22c71e3fcbca173e684ff46519cca7f939767df97b22e80eb2d4fca0137c1e786edb03fb572ec0abe89d36f47be776feda53cdee0da5bb9d946ac9f83d53acefd587d5767e138e45296ea7d0063e8ca79936b1aee916b19e49c67e35c7b17fc771aa33786b28e4db29df696bba1673ec5b7eb42f68dc1380a75462c69ee59c4f6a7da8ad4f7f929c9e888e60b65f8d997cf4b3ddcd331ab701f16b81fa48cc86ed76729ff22ea4b99d2befc4836cf9e0d675772bb1e5ebc68d37a576fb6f733774df3f519dfbe6ff2ac60ebf9bad97bf86d6991a86ffb27595f45ccfa18c6cd12bf12dc4f8758d0b870bcf7cd9367de19fb60f9afa95e939e1a37946dd3bafb150f70ede66d4852927b055e03eb6823f715ed51da8b7e91e1bf2473fd1bedab173cefaa38b276a7d48af628cbbd5bfce1d21aa88c3520e71ec6d96b59f89cdea4ec9132f92cbf3178f6db532acf8de1bca57ea578cec7a78e856e66d999ea27b7fc2a4daf6739ff0d0b37520ec599bb79f6418f71f720bbe1ff6533841bd4073c296b7d78dfdd97e3f10befdf9d9254ce71f40532c7823956fa5408e39b1fe5f5859469cf1e83bd500efb5365c13e5babb646ce259efd36ccaf053ac6e63980fd93345eb4a17ef9310379bacff9df524ed4a09b5891fc9e224fe5bb22b97fe5dafb01e360093cbf99277518e8b79463319dff2cc5fd0b7bbc08d772cf32396782f4322b0af0fe4fd9be49198e559c5e0f300ed67f795e16ad613fb1d06d585424d8bf9d9e5b39d71c749befd8dec1b8ecbda8c0318b76f81d208f33fa378ab36ec3deaf459c779ed461405fc177beb277f8ee583ebf86757a765b96f48c64673dc4b47750d6bee158fb7a6f8d670f65e1f11fdc3b915b5b708f3cefe4f77b318be5f9e2b656744b402e4656bc887c584b45b7e93c06cf7cf3e45915dd928dbbe9401e27d764eb6e683fbde27e1f4896f9ff806ce3a887314f2c4907f9f1ecc96726af692af78eff21f750b2e55ecc4ad4458750aefb4d3724f25a6fef2561b6d6f7caf98fe0dfdc5ea3aee77fc5c3007d94bf93fcea93beaecedde2d9433d07c6bd08d7281fbc6f2d7be4da37c69df4d858be07f471397ff955dd67c534eed1c37d097e134fa63108e5be88592bc7ba24b9b48c87bf516e0db3fbc3bd85fa39d81dccbf4bf9953325db79ba97fa3bf33789e7c1751cbf2f547a37e82c5b778d3a15f7627c6e8132bfd27302e760deafa7fe7cffa93f8fdfb34d275dedf9d98f368c93cea8742cd6a97fbff15e76a1733d6c1953faf916c710e67bfbe6855b90ef28bb5d6923c2fc4afb8ae17e8c2da98b573e9c8bb7d5a6c4fee07ac8aa7523755d630f57d67e7ecf3df2929b714f21ed08a6ee89e03c001dd0f7bb81c9fdbf79f3a267fc16ec576785bf683c5c79dea1bc93fde64e02f6cbfe1ebf5f2f60138cb68feff1d7e94d9ff1217cb745f2d0035df015e76a99b41eae7f1c9fa868197e13cdfd2b9e357eb1b750176a3c98ab6b2c94debbb3c876f94532d77f01d9783c259ed2a3f4995f3cfbd173e2e8f3d08edf573497d121c13e489911e1de96e76fbf790eba75cc922ddaaafd468e6d32800db94dbdbd5c9b3b1c67b14399473a299dd37c7dcde4d865d600eb3acdc8ce65685fc66c506320ed96106d521fedd94c48bb49cac367a9bb30432f4a6f2b9473ec7ca039aa50462cc1364fedbf71ed31d4b7b985635dbd83bcfbed3d2f0cce2937bd571ba923c65cadefd3857490e78ad64f8eeffb8ac1963897b876c5806741f4a1ceeacc82fd9381ed8fba91afec043d07522791df7317342ef63f244ff5fb6a92c7b8b713b7215952e5ab1de90bffd03a70e271e9a1ccf4708e70bfa3fec063b96e22a50fb60c9f037a04d94b245f9fd57864f91175a22cd2cf051dff76f6400f279959b350ebb02833a25ad9e50ddaa71b9aeb4d9c773eae273f7cf65aa90b7ccb71c82cff120fc2459d265cd3faaf12f4357cc71fa8e7b75618e2f77a56fce1c3b35a6f778ddfcf1eae57eed65e7b62f23bf3d5fac503ddd1db33b21f39bf926cc8dba1455f0a8e5358abf5f50eef74a5ae40bfe5f91dd6cae691ba88057e9b0b3dab6cbd16ced53716aab67fe285bb45ffca27faab40f78b7624835e23af556b0a6cb0ea23c2b10918ee0fa772d56fa9bb94168ca157adbfe5f5db0ad7cfae4aa1bfdb0af55ff95bcac5d766086fe88ff03fa2a1547ad91ed7f6df529ff2236b774da40dca2bd8e725ec73394eec49ca0529f7dfbc2aa0f3fb1a7f88602e37f617f4bffd5fcb8d2dc98d6a2637acb9dcc07ddcfe7fbc8fed92f419d405d3d546e99c91b4290bb1ae498e67f680fa9387b6a13acbff1fde7d5436308c53bef44996bce3bf2bf42bf0bfff244bc826106a9f5c63f1f7ff2a4be8bd4f2833b57fec8b7c33a2b1f0192c3fa2ac2aaa7533a00f03cf2db2551fe789338b9e7154fa7fcbc292be7f49fa7c44be0737753a928547f44965d5fa196d6d57da54b0f633f47780bf07ec00923df77ef347d9c3a3429dc128b3c45aeaff95e7491dfb1a0fe2e55f64cb4dc9968e8521faf7a4cd84e7633b844f7f942d85bf46bd3cd9934f8bb7e45fe507a9d3da6e6c3da16d4972e4ff5f72e30d7505f45733b18b2c26e5a85bdeab00cfc1b3f245ed9e03f46bed5929cfe017780707db84cb3ebf78e037cce27b1724c283b97b63e189faf251a1aeb591eb60d6971bc818d2b3f80e6d1c94218994019eeda628df42b9e773e6874c9f471d9c4799e53fd3feb926e027f796f15de9082787fc38099d97cfcf68cbd0fa91cf1848a6e1ba6a514fdfe6ebf97b98e5bfc27bb8f2b59cc9577805df43c2ec3dfa57393c2b43ff980f36c080bae51b0bc77f5bcfadb7a73d15bd56b8e7dce7b57c5ea7e4c22e459fdd26f262f45f3b70ef8f0cf4c4f3a6c273f999ee2f2a98ebeb534c32b8f142f2317bb7f880b2d5d0dd6eff8fbadb7f93c1af313bff266323ebff5acefd52fe13fc3bface6732c4f741d667969f90ce72a139ff463f128fb2359c9178f6e7d58f96ec84fd109e62436f91f6d2dbb07b8a6fdf4ff1e0fbf25b13e60789159f3a2b7413eb6f9abf7efbe2a16d9fa0dcdb259607fb08747007ecbf3066bc6fd0ee235be5ec2699bfd17e4d752e1e8ee8fb718eb0f663f63fe0e395ef977b3e13a013be4a1d16b850308eb0c3b3b3df822f0ce64968df324339c59e7da9ff7abfe20f17e5e66d0532ee6d081d9265a413f9783ee058ba99b35acbfd1ff3ffc8fe6fc9ce0c5b6fa7f49a10c61a6c21fe49367b54e1b32286d7f71dc5189235f8828ef1483a1c7cf3d94d73e5f314181be31de90825e82d1c7d812ec949d788656c62b6b7e3431f804d98efa5ce0136d58b17be28399ea55711b368e0e0af9032e6ec32de9fc83efdfddc622718fb372ffc8be2310b5c23fc293e745bf4037fcec6a4429f4341b66f89369eff83fc77d798640f837db6bf2a3bb7c63de5e6b9a03dd9e399760ff15fe65d485eb8cf9b0afd71a38d366f26cf2a1bce599cb7d511f7a23cdbce6e22cf327886ff8dbe3af319ab87671cfff08c0ee224a9b473d1a71e3403c7fb0abe463bdcb7f4b3c15fe81f62a7c36bf21ee7338bd62a9ed5c8f38bad04ea26ffa1b3dadda8f37b4ffe3268c3f9db508ce717c9f3733c7814ef89d624332c8a7bb88d1579a47b787846f11fe46fb3499785ef4a28fe33df23fe22fe40df6f3d840ed986613798eb9df446b692ebfe38f9d2bb1fa47f7dc7efd35e92df8c710d9cff1875753f5dc33918be79259dbd720d839fff291e9ee0da171646b0ff9c84a3de764e715c7d87f6ab073eca5cac2bb2f3e5999231ff07f9668a38251f83e5a9f5077dde7b7b5a57de35bee9367a2f9cb79b343da38c9636678a71b416e2c51ce2c5a4035cd4daee8604747f185b69330d3bf836531f7e93739b779b4afb35d0c6de5be847cf1611c4ab50e6444e82bafb211ed49a773d38a39ca58fb22f39e358f0af245da1de33a2ad9c384bbfb2fe86b59206d896e6701fe9cd9d9bf2bf8d38203c7ffdc240efd874de5ec7a426df4affa319f6a75aca64e6a19f244b42b527e09a8caf3b4f7ebbe7c443d2abe796eff8373937728d475e78495258074e92835c7779817b26e1e192ceeba778943a94b78c3fba35f8c9b37e1d790c64d4b3c53f9efde8e56dd036f446f979138a2d250b17f51de78a7b898933c6efc8475e703a87a2af78b4291f40db067fc503ea1c354bf039f9d14b50d6db098e95bbc733dbdb7b9145e7b4155b609f2b1f9ea3747b8ca7a973037d6872ef93ec4c7e58ad919fb1bf271bbe337d6bd1105e506f9167418732e7f67ff2acc84932be7df0d35dfe8b9f4eca353c8bb8f70be3e37e047b71e17a7bd2d7e90c58c4e3d957bec88ca15ea9fd8ab0fed1fe64e919f57b66412cff4dea7496fd2b1e78a17c942dfaeb3ee33ba79861b7d9d39c4734e76c4019565b11f9ebfd6d6781bdb5ad075cbb69d6a1ef8573f44fe6f077b761d1827cfcd2867dce98edd37c1fe27bb4a53d8e6b51e7aeec2cd4f97c3bfe2019ef2c3766bc326109c4ffb95dc23d7b6fbf4cd6573833e305c5eab88fb10f16c33e92df8b67bbb75032351ac8df92514c51eaaab2bfbc1aa50e0cba9bb7a3b8e5f193e252d7785072fd4c679058472cd67e7bc88fa1385533983e549b7240c495d616f98b13ca3fea9ee2b10ffeb00ea733c5b9caf3e8c3f43553fc4bffbdf5d8c39a59a1cf9974ac72bcfa7ff02367d3b9e5e198b125be03edfb69bc5056cbfefe45b92228b78a6a9d16aea7e29a15c9ece45e51db721d59206b97b1084fc91a62e70b6937a7d296c8aa0d5f445b1ad34d477a4b763b433f222bdac1beb9f34d02e31b5bf14d8e057f421f891f914e1ed6b8b65dfe4ef922947b03764d2e500fcebb75e3a17f33bb937c253d222e222fc567495903b224211b59ca21b9a7d281c93db88f3c8817466f74ce64b40751e794e3572aff04d88af2acef203eb9da7418f3725b2f527ab207b1ebc2df903f2768c9775e59b8bf924385b1717684d87abe49e03cab48aec7cc2659263e319eefe773df28ad4d6b67e427f9766ce3beed747c94f67371f4d106fd5c60fce8baa66fbec707f54e4bc5a4fffbd883efa3c3b587ba14f6ad70712fa5e769dc53cc4b7b1b40bff90be2fa521667fdfa4d9d9b3769ff49ddedef457cbb2e315e0a36965eb74aa7d7babdeccf5dacdf989253d05fef6dd8e179b8e877b9f2a7620c641317beffec41cc2c443f77e5caf59982bf986c75be7f4ae1fcf6cff187c039c8f4b9877e638e6b28a6b54471b2d4fc1b43bdfd486b3afc61fd4de70bf9d3b3488eb9d758fd47650d4a4ec96fd895189f75609eb8ff839ef1bc47fbc38a171ce6ab93368dd379681f479f20f78a6ad3603c6221f7d88b574a59f614df13989b3779cf9dec28eed9e84ff3bee383b42b6cff855dff8ac715cdef13e402249ef2b5ed16a46bdc29672b7aa1bfedd5b8f34f69b348195b35169e43ddc07e912e9574244b993cf399ffca3eaa8d9281e433d1b92e597ec57edc85473af3676ac4e8b4ceec503e48dead7f908d86f7d2b9006713cac934eb42436efa2a2649fe7b77ef854792eb4bcc4101db07f24eb8ce1b3a514c23fa4cf1bbfec271112ee5bb1c52cc09d2b1c3d28a414654285f7cb57f495e94989774fcca509efa712142584ff979fd4663d678e112f4a93bc82194756ca07c113926dc8d2dca93c3bd89f99bb4b6d0a6ea6e19aeef0fb4858f6bd28db6e463d8a1dddc5ee34344397df20c97325bcee549ae634fda00527eee5954c179fe81765872f737c95aeafb7f7fa31c1fc0a6cd99f2d3749f3ab76b3ce339617f5a2a8f608f63bb89b384f2a7fc23ea5d2b9dd788738edf55d2f994672acf70b049a70ba381ce5fc89f91f219725b5ed3f76b25ede758daf13ee52c7a9dcb17c93ab248d7b03cf4bb676e88f91dbe93adaf9758e5cdcef2a9bee16cc807950341b1a88c64afe53929e5ccb59ea5e26c141fb3e4b5762c400fdaa4346ffa19182bdac4851ba9fc60ca47a37c0590379b6ad031251f6d4fee72368fcfd65678231df6297e87fc9e4d5644a4abf31790c145b8a63e5f12ca2ba1fcbe3bf9de97319c5d1dee2d582b748d251694ebe326ea5aa967430e4018a87d887d42bda06394e70cfb548eb3cd701e5176e4824939e1e568bbd56c0dfb29c0df5d9da4573b1efc1dfe16757283fdf3037f9fe5f545ccae957c66c68f90ab9309886fbde6027d01dcb9ae3177b73fc7efb85f6b167ea38ceb2887307163e567149eda8f28f3c166f61649d0ad5bccb9744b15d3845c86ce8d17c7cdcc6776e7cf785e803eb749de55ac0ed6929f81ff27712be87f043a5b0a3aabf72bf15077dd832e07baf59a727a2eaa6f6fb8d6376951459447f78bf6fdbcff904fc5d51c27b4d64f494a7ecd51042ade51a9fcb491a1ee23ed4aca99a9497e3603e470dee5da8ae1ac3b834f46e749489993b9eb9a7c9d7a9cf2f0483afda6c3676dd37119801faa38fa69be82fcaac8e3a991eb893e51cac78bbcf096c11ced172aefbab52c3c0f1c7a9fd6678cb9581cf7b036fdbfa58cdea6b988408e4fb9b7a9b2db7365ffce75d5d7ce2bd5f3c16fa3e2e831aecf795c2befd635e561b42c7c56fe5cf98c0ec6255ac4c3fe9ea87cadf5b58a332ef59990f6fc37e928efd2e66190d7bc03b995d8dd5f09fa5baec91a723837114b16e93bd81715e80ad6f11ff4c978bfe243a5ec56b917fc676b0f739b79fff34d368afbec2979e607cf018cb51f2ff8ee3900b952e6e359c5ca6ccc01e4909b18cbbdf8ae738517c6ff3f48b653fc40608e24f3bf28f7cdddb312fa03eff13b37b1712eca3be54ff2e84b9ddd1dca50f7458e9d9c8ffcb866efdfbf62cb7b8a85f20b7e624c8c89538a7be5b922dfde0f2bfc7c6ca35a817f608de5fd86c9fd99db1bee5c03789e03f6ea33e563bdaa3d9478fe5de587751ec5301cfbc773003ecfcff8a3439bde11eb12d7afbc9f838d7723ff38c4cef88f16ec7ded0b3c25fee7a961a1dbb1a46ad827e6dd423f1395fb174eba800d3148cc51abd6bfd778c875843e90c8c33cf1ce4be4fe91ebf68edfc6ad642bcf99b39b1c30372359245ee3414ea58ff9347e4f76fd87ca53e4ccdf94239ecbdce9287fa4ff4c215e267e4cf512b2bdb3c86ffd1c618e94cb1615f593abbf3d911ffc4ae7b25b7bc91d75cae8558ff3dddd929d72c5b3cbaf31dfd0df34e8ef705bf2ffa2adebfaecfd2ae282fb69e16f558d009eaf94dbcbbbefe4dd9c67d0e9d08f2df7b2e54f79a3201387ef54fb0556933e9677ebbdd41f2df0316d62169de243f703c63638a3df3bbfae3bcf923229a85167d9361ef80eb298f514df12a7f8a3075bb1f6aa4fc8972ffc802f7a884327ecff47dedf75278e34cd02e85f92c0ee355c8ea004c8a8ec2aa94aa03b405e832d61d386b6815f7f96322305b8a79fe77df7de679d8b7335d3361652a93e32232322295f5226f74aee8b70f26080fb3c7c642fc485dfb4797316303fcf0571cf36d3fdc2a92f5bd741c6ba09c1b0f10c83a1c633300eabceeddff840ddd9babecb5e8eafc67bfa1baf1473fef2ea017915cdb17cb479a05ab1dab77b6d9c2be1f936c3a5da934eaaa07955a554670be26946efb249dbbd3c0be207e6be1dd2761e32166a0937ced557fb799d8f075ce7f1aec7e7805f94c893972ef9995de65462e69b09aded3c9964c561c6632831e6714663e6ffdebbf67ce73de82d53cd2163eead8ccf2f5c139cda4dd65e67156c12975d7dcefb8caf477b1bb42607e8a39a684d7fe7a32ad824ab607fc3d95da90071ee866395e27ed8eee5cfeddfa830d26a8338b5eeb0e88c319db9c9ab69fb8c33558d9e7d34ab444311feddee217779d8c664fa8bb011e247b5ffb56f76ac4ee0e3bcb4d75eb7cfc15ceb2f13c4ed194b1cf1b59b1ef99d304770c17163cf9c231a4f93db619b77b7f1b476ac3369d7c38cdff768a9923deaaedff8e206758076df0207bcd61cb317aad36765fcf99f57fc72c6517bc95b4ef5e53897bff7c3c10cf9ce47c757ef1df9acaa251e656ec3a3daef0bbef60f133096dfae81ee5aaf9af368aa4111af07da8b98742c74edfe267e565ffb05e2e2365758f1da1e81a31e5541f7cc770635031e33773566077eef7466baeeef3d637f2360b7231953e6c23377c8b9745f661d47fcded07ea633c242dbff9feb517e8e5370e7e5beee4ced4e176dd781c6247584638c569c27631fe4f17a469eb1525ca331f35d57cfc95d1c2de60dea4453ec954d24b9787bcdeceaf3942bcfc107f4356914ecbc1c3247b7a4f32d0b763fba9a27c535cd3d38f16dfc75e43a948e04a3e6984c27882f55f6a6b1673601702f4b7b7aef385cd553397bdbf9f32acf560e39af7fae53f93dd5cdd23a01c64cd808c5b1d7cfbf209c4c3e435c676fe656b997af762ddd5b557f64d9b1b4f36a0c6ec2d9f4370f381790d337523bfd347dbcf339d7f2db338ce662bf8cd72ea5f132c56104dc315a297d0497a6bd47ae8be61ba9fbde831f1cb46b9ffe76de0c1f39afa5fc79417bf926edf417af0db08172f8a8bef03ee36836f143fb321867c4a555471bd35ef366fdfa9c0fff2f7517c53186eee26cfdff03ddc57c136be672bcd9667d62de819fd298ab3a447cc739cbdc0f97520740bdb78de1e93c674ecc0e3adf68ad929fc47574fe97798b13aed7fae82a9ee3f9c17bf443dec6f7854ef87bdb388474497de46b1ccbcd1bc47289e82ac1a7d5c367c5fca4d475ebea0bf73eabdc17cd3d4fe7a0ea99de7d02fdee0fd38f948cddca25f1b34b049bb997dabc9d27ff79ee918688755ea677fc4f738f6264a90f3f2abc9779c3f589be1d22578a9eddf49e9f9dea3ced7bfc8f732f0fe2593b7fbecd5bc5b5d578924de2513b2f69cf977b2f8ea3f65ecb201957b57e33e792e7e3d90f9feb9a34d7451d8778d70fbcbfd4ed1c063f2222dc230346d2fd9cc643634eefef72d29a91f695f2ceaafe6ae7dbdc81035305ac9170a701f658d26ac4c01a923208aef50d1fac8f8c35f095479a1ba701e9ab5357712c5057f3655d736d9ee750f2e878ee65c469155d822e10cb3e308ea34e66bb43ed0a9cd8a2e1f5e5694e3f911e618b9f39c59862a03afe21e6f7866301fe777b1e78473c426b5c9574f1338da1577f5a57aebd97388e2ab5d9d2fdcd9b69561c3289d1b8a65e4dfe10a7eb25e7fea3450f6771bbef393e5b797ed977ce71bd4e819ff9be1d7d7b777ca61731309210985e09ae7a3cc6ba8d19dfc2bfeb98620b1be87d0e7dc1da7db1bea0d8d13d675bc6b7bda39ace0363823a5933661fb1269bf922eb7a9751dc32af1e682d70ae72dfcd3bf04619d7a01c5de57904ac7bf0423f2fa6823dcef81c44dd2c2f1f05e359ab80f73477153fb6b969f72eed0f43f983e733d7d53d9b91667d6472f06d5d8818239e3d701c1bf9be1e22ff38f178a83371d9c6b1609a1d7f35a7bd8edec107c7d9f17c0d0c37eb27fc2e734dfc8876cf17ecec21605f817c38604e970b502b1c3056eacb2fc687c225e5a0b5ba8326245ad7f5f5b931a2f597fb1969e8b2c32c9b7bcdfe0bba87f799321eddf4f38c7577cf183b93b57b7ff9c175b64dfa487e04ea942bce91f83aea5f70fb4187db1bd18c31ce44b89cf5ffa0fe96cc446b0d9ebabee0b4870362f114755ec6ee89cb47f357f49fefbc5e749d0aaf8d39b7e9a37a6fcf62c563ef53c40dd19275c35d7ec698e366c69cc263c0d8c18eee2d0b8ec85b8ff4efdc7dddc11fc3af037a8eb81cdfc78c4dee3eec253eb5266f74c13e081f79dd4cda715ea9fb07e2590783645d07d7b99107f659405b38143d8fccbd367e69cfc5653da0fc6a150c92627893bfede12d51b6e712cd739e5ba73c249e543f0fea9b7c0cdf61da7b7a6eafab0e91ae079b47c6f7a36590044e6a6bc0945774feeb9f3efe9b31a682b94a364ca2d9448fda33966283207e620e948e2c622a53ec8619f3604ad4a097ed77b6fb2ff3029a90f7349d19d6ee8e2eb97f7b8df6ec6ce349fa2caf5d4fb9fc1bf6ef68012cda0f8f259f45e17015708e81f918b1a7c6a177a9e1747a0f8d5add952639167cfbb5d34e37ac995a84ac936e6396361775aeab9b7ed2792f7b26e3e111c548edfba2d88831880c7cab9cf67039730fe08c505c30623d837ef8fe3be2caf219f270a9c5309f6e1dd05997405f37e1b364219aef13d6cdbb79d3382bc35f88eb971c9336c22b4ef89cb6a4b5b65ec7a291c2b5a28ecb096d14ee65c6b15ee7757172e0caae505f2e3a1c9b62b387aee6875a1fe379e006e471f77b8a9182e6644fd8c3b96e83fc69c135eabe674e278fe1d86403c53a03f0b3f97c11deeeec5962be3c1ac9fb9ab12fcd24439d5dab9a723ce3888fcffbab1b2cb95eaadaf54f7bd8a373bf7fceebe59507c58463504b9c015d276daccb73eb52af1caec1c57c764978eb9da27f58bc6f5e9ff199639e86eafccc9d89cf167b6a25f854dec5ddefc03d7519bc73fc334fa021d412dfd2da6bd7cd3a989e118305e63599f238d27a8347c94677b9e53ce25ac03c19b2775043ef3753edfaad86b8feeb55bda68b43d39a358eaeef51dbb7ed1ab537ef98b1df1058aaaba0cb95f333e7f149312e39bee30b98c60bb82639731beea33480ef4c1b7b07493bd65cdfc8a3615ad33a9f578c05385963c21d2d83e911efa58dafdabdb88bc116b91ed1dec17b39e7d4c411d289c6dfaf02fdcef71bdf310ff9902cdd5f373550cfcf91acf96f94436dc6f5a125f8dfafc31ceb1d98f6bb7082a8966f4fc41f6fdf51fb5ff1fe7940acff9ab30ebee6b3ee100be694832f8cbaf5d980a35b290dae6f95213725af903686cd824ebb90e0ec7ac8814ff35e27782f73d425dff0d847c0a3580aa788b1b49af27cc995c1cfdff25af50fec9b11622f1d20770ce8fa7e78530fd3a8157fbbfe9afca190eb738d9bf51bf4591ec7f0017a81b3e96d9ec0bf18c1abe3331fa29e86dc63a9ca87a533bc9ef236f60e657f7ab375e7dd231aeb067ce7183ce2282f5013f96d0fbf8da9ad52c27d12cf30d4cda6aced0cb8969285fc4ca57f172d43fbbd35d70dfd7286f7678aaadb2b974a7ff21976551f44bd62c1ef62f45c8b0f8d700b07356397f015415cb2666e9e2a869c6b41fb2f9a283a7fb380bcb0e87d2d7eaf5f1e6eeb97e4abf25bfd7285fae5021ce8e73a09ec0bd51b27dd594f1c79ce2b56017f6e59835f37973c7310806ff372196fd487286661fcce0657eff205fc2cf66718cd02faee762d5d3c5ab60defa57932ac98a334124e5c26584171e8de41fb19dacb8a81e00c6fa61fa5a24f58055fa42de3395a4a2e7890f9bec2de55f05e96ac45e32b5c5e5e9b4fe00acf2c7cbe1e55d263af1c756fdefce36c1cc7cfb1658d4c7bde1507f01ca7fbb4cd818b41227a73d9e79023501e617db5077622fbaad4aa132d713ec7dfb305ddd32eb127be979513acb4445d56f5ec689333aeb8538f1e9a0bda97695e444bb997bce4f3823835977c46bc73fcb9c905eb6dd77ea6c0f10f0ec2cde69c76dece35ba9f31ef595520f57d703f62396f4cd8f1bac507e193f24ebf8bca9039479ef1608333f0ced3ba28b38a799233f0b0e8f7c50b8db5d2aeec2157614f20daa3069c4fcd9b61c598cc6c59dbbb3c43bc7a35a72a700eda39b5e678abfd1c615bcb40f7b15fef4d7fa3797f0f3b4ec323e6639937dfbf2f592b2bd7e9ce1cc4fab199379a35b21d6721020776f85c531e3c5a81db9a416f6c3b9d8f269c7419e8c885f2f753e83ef4f221a0b571b5aec54790d7649e83c3e7488715e9baf31d035e56ddeca19d5f44bf4c656e131e1dea37f0469df0f9c0f74c2a271a48ce1796e495777546f78ec29bfd127fb4b40ec049e138c7e45acbf376f1138dbf4e8ce8da28eef2c9b7382e160c9fcf26c2b05e8d6b96edb8e93ab9e68afcc49edf68fede4977d66407c6630a2531e12fe161f1f5e2047193ce2ef1e327ebcf94f02a69ae091ffe015afd35e7519395b25813ea4bd60d791270fc389bf1e7db73e9833d4df427e2bb2f70e347d93c1a329f4303cba83268be22e0a89fa6371832776ec3ef3ed81cb9d6c67855aa2e5e0dabfa2fd45ea78825fd8ff6deb8b637e870e267e6148eda3de04f786dfb8cff47f50b1727849bf1fb7d90fa50d561cd71cfbc6e52f864bd67f5e1608797dae7c2d57cbf61f5c311bf313e43d73da994f9024e76261dad3a44d9c40e53ffb7d4fd4669f337713788337cc13aa87e6aa45e19d8f16c9410f6b554c9a2aa1de3178a782d33d230b24f60f410743ffb34f582af3d8f87c49fbcf5c51a55b57e909a29befba50cbe38ef3ee1bb431b432ff9d9d545fbd1701d10ff2e5ac8e77a16f55b27d7da8a2e6c79a963eedbfb2cdc4d2d76cfdc9eb82ffa1ecf9ae5495527ef397b574abdec84bd5ebc5922605023ab1684cd2feb643b1b45ed793dcce68942de7d77c143e3685d27597ba6544192acd83775e4fa91e1eff8e273e8b65ed45e4fb1a65a476b1a23159ae6bd1df3371334f39b1a7b3f31c20f5804f14ff2e66acfa2a039bb0e5f224c2e704360865cab1b429b36fcad7e30aeaef6a7e00bdad3ebf8ec0df1d904fcb23eaf599f488e9f53decb7bf0ba9e5e6a163cf7aff2c10b6fc539c9fdc12b0d08cfc3df35a3760f580506e799ea533d276f54d1e698c521ce8aca5cf367b27969a4b6d4aebd360fc902f17a1a3c5cee4977f9413eafd827b0f0c069e393d47fba335f3e9b2709f2d9d96fd8f57c031d39f889810ac00b1d9979d4f16238d7e9deff41f656d44936ed39d09ebdaeddff7da7b348a80eb3dda0a670b87743f671d4f5f488bacc9eeb5dc1a779dba4edbdac5495d1bc9ac793ac389859dce18954f3786efe96ef7dc57974351fa4166009bf13dc2b6be7ea35ae433ced90ce401e67772f3cc534e69cd267c70f4339079d4993ac6fb560623cbe4d98f3586cb2b752cf26d5a83df381b144cb80f717f0f9e5dc8cabb8f380b2266fa6cf35f9bfed3257079e3930b9f67f4bbdf4db337a8e03b12e895bc6f365648a508367f533e79a2d69534aa77a99fbbece2497abefb1de663afe1b9e4ec43f218fe2dc5df21be6aa6be6f6169b07f6cc0b1fb2b935b2d699f7110ac7f617c5d5f3a8fdac3573ff90159505bf4f33ff409dd84fa11aadebf097d91e8bd93864efca1e7c198a43d161763cdee3b54bdefdcb57cf04f1645d4f794ff715381207e0bcefe0ece937cf397c3b170bf84c0ccb907d9b97f07fc88b2334f2f1017953578be45c59b84ef7c5456bbd8b3217bf39c231da3882b59b8f6e0a9e4613431fde33af3e169d85568ef666ebde43cb35c0bed91ef0fd87e10c7e0dec9b0cde6efb2cce4e67aa51a93a52edcf9027d4c6f27cb87f631f147a3733336f661cfbfac48aee9563f548432b7c353767a4cfec7c0b0774b65a9f043c07d549ee61164ca596f9c1750cf1a0c199141cdff317d226c1c7ef5e72c01dfc3b9b657d078e21bc6582e623eff42a3eca8281bad2f0899fdcdebc45c48b59b9e495d7ab1e1758233cced5c184b47e1faa5a17edf7e62ef6edb5dc88b9473e674f840ea780b7edda2563face397c23c24e030a5e5e058fb3467c35be181f541fa677cfbf235d36710d146a947bdbce67e63564abfa8e6223cbd84394178347e8cfdffda50632a77afee998d87964040f5c7ac639d81bcb6bd4c41ea92e18407fe3ee682d58170638170ea471665d1bfc08c24fe0817df31691d7919b94e44b919fad420d4caddd5f57fa39aa6db14ef5cd3e09f6b70cfe125c8a7c23ecc43ed1d9e6e96c8bfd6bf2249acfaa26cc71d1c6f8ed3dfade2006e736660ea50da13befd979f374a5a3232c86f8ae8c8db4395848cf3067ed771ec48179b59d5778257ec5d045d95c6a86c469bef81086eb0fe86f376bc7ba23f041b0f67db456fb2b7da9ea991768718a58ce30bd124d1473f5e3954ade6fbfa712fce3cdbc1ca0570cc52745c327275ae4d1137014c53aa7f8e4b39bebece02b3c7d544674210fd8b7ce78af35b40623f060d4b2214e835ab36e375ed7e66439ae9f717de4c0794ba1ee10e3df1377b6fd59068d5b1805fe05b101cfc94d0abf345d4f03e003bf789e84e69bf6a0796e1cd7b102702acfe0f317e9993560b162fe5084da428763dd633fced7ecbd77f1b6eedbe1b52fb656499b5734a6b7514bce91dafcfc0e78fdb212add0dccec8eb0eda44e6984efb5c0f1ec0af9dcf934c05e23f91cc46b68d391f575c7b568c53733d35e3786bba145f3bc7b8caaaf3498fd8832968c2acf345a5dc5ab4b039f388a221ced3303f5d7883d6bd07ac0d393e913f8f8fe8ba79bd6bafd7c6b6d6c20bea96c3cebc6a3ba6b878627a9b6bdd5b4cb9216ae48847c191641dee5af431e05c38c4e10fe0092366799c81ab999d713df0a9487b43677ed333fd926adc85faab5d6ba55394772fb3373f83267fc8f124d50466571c78e0da8348ceded2d965f6b62b4497538578dff30d62e3b2cf9ee73a6af35bc7da5759b3bfcc6b1bdf36237e5f345e1fec4711731ce5f43bb0708e910b1fb1d7107cfb7dfac179af3a99b71db4299b8b769f627ccb98ac623d2c69f9696c14d7eee01d5de60969378cafc4236e225e086d4eee5c3ccd5f8e93b54abe6c0d5d58eec7b2e7e701f3fdb15e62d11ac9be929f2df69c20e4674a43f1eca07fcf9311e1e0f378f410e83dc6e8492b7852b2576ae75f99a21eb1e857163828afc34e13b0e39ff7528e15bc55c2c14be169e672cdd895f0e6e6b14ad99f5f3db3c75d2cf857d63b16bcceff61ad661116122ba17e72070d30fbc2d7cd0f77bd6f52ddb6611c8f78e4f1b05b7b8c8d95b457ce9351c53ef6137b126f69d67be37a6fe6559ed90eaf6a36a32c2f2d302bda9b161c2f5de38f8d71fa49871d463b5bbbe4cb16a89905c19dcb70a6c79ab0c71b1f15efbf683e17cd10b542facc3a4852ad76c4f5725ca77fccfc9a7d1203f685a01a41acf1fc5594a977d4c69a53c6f5e487ca1b9993938b1714f505a0fb9f85e935263e5a08bf8ef7b231744d9fed78507ed4df8c740d0e039f0d753b1659dfce0c9d73b4dfc419def1c38507f269de34e7141edccd221c56cddfa29b0bddf0d8b4e341755b6f05a354e074b5e720c58469ddee338c4b78f27d39409fbe29d2e02f1e835e337ce01a7cbcaec10b7575c09ed7eacebcea27d48ef75d7d4071fdf411fc8147e97d20f335a09c6e6f7af7c4db5a06ba6f79af6bf38d765fff945c9df0b9a21ae99ae3ad12bad592e74fbcaad37d5a3751ee797f33c5d1f1bc2b23c10d323e678eec1f7ef19e5cd7c99cf6cff96628fceb07c1bbb381d42674e6ff9118e760eadd7d8e9e226ba77f727c44fa2ee4c70bc95f3937c239d0f18773f89838f14b692cff7b0d9f8de00bf9d8e34c0d92d485c4e537ac9b3fa2a67e32af91998dc376af1da54edb15f38546c52b745241fcc6b111e183f45f0d0e8dc4cc1a7366d1db789cc1f0cd0afbf07b3a9b1eb081221c3e8a076f3d85b7810ac1858874b0e03c5bb887c017758de72e9cd41fdb73a1244c24a4ef1f676f1baa9b648eb81d845523d73a9ab76e1f1c5631c5a08f2b45dc6d9fcdaba1f455706deed6b7a3a2a872d15da49ee3dca28026f81ce3fcf9ebc4bd56e2a3d98a2f873afb61e7e1975c7987b631a67c36c675684f5a23b65cd7897feefa44a066e19200f1897ec09e9611ce378832e6e68eb379ccbd23d84385e65f55a30e3bdf71edac6886ee85b5886ba785f76f968e30dd0fb3bd1fa69e317e8ff527de231573d0f6e6351a2e43233f83a64db7f73e72382fb33c99dcc43dd9a5ff05d5795f757eeda965ddfbc99dc0cfeded16fc1c3a634fa38d7af6ffb4f7d4c85cab3aec3e7911ce357385c223e28ab3794b8c6070c4db28c4275d3f5ee53b711a982362f9cd337b22c3e34907e093bd2eddd76d8e23fe2bdfbc1f2eb8c57ff77ec8c4b7a1105ee81d9fb7f3a8400dfad3332ffa8563ba4a57c0cb728e03339ee7341f1ef2b9f7729d768cf3bc5ac8bf7d7bdd7c039f5ff051a5de95430beefde51c674efde333e602e72d3e79089c78f6c7c88bc9fbb5e3fed31ce7b3d4bbdb1e39d44f467a577575e20abe4bb45695e1d83196758f9aa45ed7f0b9e973ac63d59efb8f9dcba16e1634c7d7b5a671b4b5bb07cef3085ff944b8444b3e2347d05f3d3d046b890fc8038fe772f570734ffeefffeb7b6af7e3768dda51c39a04770f9fa686b9216ef093f7409d626e8a369d7d93c88fe74079daa2cb0fe26489b3c7b337eea80cd997063125f811f19673218e95ae7cbd678c77a1feee3ade2ef1818011ed4ceda085147ff3f8a709ee88e39ce39a3c7ec7766c4a531c478efc15d417ebc2a8ee43b94559c7a82937c3256a075ee257f70ebf69cf1a9a73ac440fcf675ef2e1699d5ad4eb2ac925e48cd3cfd8a32d71af365b8abf82b0e4b5d80cfd507a264c432fbef1acd78dd69e3c8289e36783d880e3275e6ccc2390f8473889bdfb29ea12078e8dade53d79d3e5d5a47b2d8ec5750da552a5629e606980e77db2a751fcca6789dea621fc94cf097af52c10a36aca51176d8e2bbc9c98e382fccc3c7f8a85c82bef2ff62b622effef7e4571335ad70d3c69f5b18007cb0af38af7319c51b4075dd5a8690f6b04d361efd5b06a63dc2b5fc9f061cdbee2233be7da8855e591e7af8f2ad6f08f0df97d100683bae7267aaebfda359498ec40639c735f87fcc2a5d9a04e1f7ff15a3afc104ff195e758b8bd0737965e26719e82bf5406c94f7848492f2e8b31c9a0a9119e2e5f0fba1337443d8679339d9726ce0f5b35dd1a4af84c1c5cd5e5e08fe7e31e7a9988b79df4766be30fbbaa938e57aa9b1abc0b3f9639aceb05d755bcbb670c450776e413c683d50def4ad7775c67605d09e9856c509ff397a35ed689124fea67c13bcf9ef1fff0fde21d89bf2f8bc3347b3930565cc43fb0c7bc3c3bb3cf8a45df7635b00d7c293430b1cd886320db67be64f8d5e5c32fe22fd7e68bbb2fc2d47dc29ff3bafbdc2ae473883106ffb08ae9bb165590ee4bf6ac2ed71cc7b571d15430918c7b8ee454abf4ffc07ffc6f78ac11efef64de2aaa49e7842d30e66ddcbe5d0b9dc6543c04f3be5fa0a66238c7db7d156dae990d86977b515fd4b38c6b644fabb0e61c8df4da719c6d37f3f63bb4d37de288168d5a8be758af9ad379e0ff661f859aeb3cabdae2b303b556fa54bc1ced2cd61fe665a0dc5c3f8996bf0cd8f3473beaf348ef8fb545e548746c6bc6322fbc9937d64a9870d7cf6e7be84537d856e1c7a8c51337bf648eb1128f45dae7da38927c5023ee49e2582f2e3ccfb5679e478e3e4cccf7ebf614e4de8d02867567beaff5f0fd4eee71c635bf8b67917814171bd681714d6bc27b8de4adc109e777c3f7f70f78fe0bf8f602ab08f5cfec0ff588eca61e11df1b3a0308f3474da6bec7dac8973c07233fdea5ecafd17187dea1993b9a7ef944bf03a7241bd9d1da539c3c5b2af26fcf48a3e67da2dbf8abcd4d7abb912b4270f0d407f6811fdc4f91e67c9f6bbf1a5cecf80bbea6177f28b597181aef1dbd9a88a38f3a1d7ad414ce74fc50c1d156fc990b2793bc5bf453853d0b5e0419e6d0117c5a6db9a7e752346199f011db38d371ef8f6cbee9ea0b78cfd1ca4defbafbdcdef37ce86fa4f7de19636e97ac531bf9d78d0626ab3a1e757786859d6755863c675dff731597c6730b2d9e79837fab17aefa0e1e1b7ca6ae032dfd1f0268ad7bb20f3fd7fa9c11b7cf3facea80df5db0295701f2ebb7728efc7a27f935f2ea6e5ee399ff0f73e7f65c68e3cbf8cd9d8e7aa9d2c0349c433f3bfd937251efb9bfa4b7331943c4f5a4cfcb83e61770d2d755d7a3b1868e01fe4af0dbab380f6c737f05ad7a6c7be1507064dbab4695d29fe6ada23e6576bb412ea4424f6783120d4f54729e0cef94fa836be27153f9bf3bfe5c1ec429f6fda72c6fb22e7f0fb4913ec66b709fb996a7375d2d2fd6d1d259857f6f98fb52fee2bdca36940340db96170675cbf4682fdcff2b0fca06b915f3abd33a3972dc487db2e63cbf16c8e9e577d2d756c3db2e76c829a275908405d7a3d9ebc75589463ce8f20de208e6f9fb1b7f673fe93ec731f93c559cb3b9de20e735c55e1d79987cd1b31649c3d880c63384ef78df47738e5147676f1ecf58ba33cc994a0af4cc6df3ac767fb08578af5d3d8beb9ee51d639668bf66ce5c1e713ee4f5a7e37ab95bc78c0f720dd03fac43f6904a5dd2b4716f5a278b7543bafa24eb0d36c2d5f401f57ebb675d76bc609fc281225c8b6a09d5286dfea173f1c26d6bf3133acf23f85abc142a157e5c0ecff69df0e7da383875c17eed2e5e1995f866e4916eaf85ebdee5d9f10d9e16d1b30bc47f24125e1ad6d20cfc0d999fc019b906637d74f2e267415808f62cccc7a570488bf44a9b4bf74bb5c3c56b096d577a275a2d5edb764cdccbe24835dd67e29525096b567482d825d1e1025e513837b2c370097f9eee6798874be6cfddb5fb4bbb87a775923caa005eec742e9dcd6bc5fed3c571b8acafafc37d531f98d71481b74e733b27bef4a060eddf71c83cee77f614276fa07867823f7903f1bb97737da574269e31146316cd90eead28a36540fa4de60b525d59fa030e188f21ef13d6dd8816b5e27a51fcaca67de667c4f6917d9fc625d75e27cf2a79cb3aad6af20e4f9ed93a5c701f12cadd9b3bf60f384419f565d651d6df0cdb7993bb38adb8c78b7ea6beb18417ec3dae5379e2373f1684590dee4c53336653dccfc1050b0947f211d5f9dd7c335cb49ff5d47fb9cd7109135e743da2abed5af4a2bff91259d12bdd5bd59c99c7cede4a56c581971a2af164b5e851e51e23e2e5e51ad7507756356facdba6beb3ccfd15ef5625b55c78311603f5bc9d8a269f7b94a1eeb396be3279f422b8db73b38636db1714d31327033ac140bc9abb3d7b047df285734d1c13f653b7e80571e18a83b786d8210d1de301f3c663bf145ecb17e289dfb8e3abe0bde38e734d863e4bdcf175403e6aed731dfd4dff0c3d91314d9b35c7aced1ce6731bfdf563ae1fcc6d5cf23e706f5dc37d27c3186399f671ddbd8c7b1b0f405ff8c3f4be7b29082ff370f4ecd3d5c8d9ff0c3de7cae96ecdc15fff17fb6caad092762e1c9aec1067ee9df2244fbda5d333eee3cbf4060f573ac428cfed23b894efc5f0761e816fcf9a632fba178cfd3c9631fe016fbffce69d1683e1551ff6f886674f63837cdc935fd21cbdb2f8f35bc2f5624773c7439b89dc85cf91b301de9b724d66e42e98297b2f23a7463fbdd12230bc5e3b6e7d22f1aa62ef749fe23b3896eeb4e4fecebc258fd7fcda141a87aabead9101838dd86f293eb2a75ffa69278986e7f21deb2a6cc8bda8dca79dc007aecdf95515d9d340613f9a3e70ae95cc029b503ffa17eebd9b9d060a3cba27c7f1e742ce2df88b725fb77e345c710fa86871f6fc9e0b13e4cc47881c62f0b562ed73311e3c32864967cd181ed7c48b657f1eddd5fa33f6daa218f2d1bb1bee1d738de15dd3db29edc4bf212eba1ee0e4295ce1bd06d2bfe9d5735c2a73264afd5acedc768d8da1ab48aeb464c3efbe136bff0f38b17e28eb3eef612e657c66659c4b8ff15fe95344679d274c792a7bc26c1dfec37c4ce21fe07aa81dfbe2be8487cde8599ef3bc29b8271261695f593ca5fa4be536a465a19cfe8c3346b8298ef1c1aa0e691e56413893fa49fb3d268fe7171f132dfca02e7f7996fbeafc33701eb9d896f053cfa9beefa10f95de0dc425901ecbf3e7f89fdbfddc53df0caa8b57ea260f19996237bff66f5a07c90e989b453fe98c7b7cc581bc4f7edf7b9c23f0e3feaec575cd19fbf957e7fdd8b7e84b78f8ca5fae7cbf8a58be936b5479849e79a49999501fa5936885687d077f3e2bf6373aa3b5d35f9cb7ea9fa61f3d5efb932d0af8967ae97d9a38e6d4a08f97d2d2835f72468abf9675b324ac601e93960fbe91d88b1b604cea0c0f04358bf568d944db99f26a19469334461d41f4b105f76fce71bedaed807f8eb58b5e7a9334b8635f0fce93273a08385fc937dc6face11e90b6cffb51a6fee19a4ea8be7b3446595f17b44f506fae76bf603c2d676e8db667eddab99c73aeff64cfec53e6c7863d27eaf8abf38f83d68873adfa948987de2b7c1b8acd30e57ae78fec2d426f9bf221cb934760fde07f07c215dca401fbb9503dbabfb3e5cb31b6a3c8da73b490b30e9fddf25918c287a5148c99e761c0fdd5ec593fb26f257904c7f65c7ddbcfcb05c56641f51f63d067e69f27f68c189471a099ed43bf27e317509f82478e3706138a177c44f88873d584ebacdcc3ca6d39de7241a5c02f018616beb6eba318f3fb250f14ac6de8dbc467aa4ce1955e06d333ea55efe63579e058fec86b70aed3aca89e44e7016f09600ef1cf6f7132f798ea3cf66d54359daf116918c5a3323b9705fab2f5918375d798b1762ece5efd58fcdf1f958fecdc8fd3f0ef9b7dcab69fa1f8f83db42fc783add53967ffb98fdc35bb2c03a79ae70afc88e37c86dc0bf538f1d4e8f631db69e5079da7ae2dd427eef5f778aad820175c8b6fc74f73e3d7511ff3ec7fefd3bb76297a39b147951d225ec8060abeb197b5fce689dfd7c6124bbffe164b98b31f92bee5e12a66182da017fce6d9eba197bbf534ee57ecb7e3fd1e1c6fe2f3836b4578d8b3170f0fe49438b7acab7688e7a5077ccd5ae17f3ebb1c5c34d8dcafe91ddc8ee837af30c436b9f8b36c372fedbea3837bf2c7590683a8d3d68ef9cc2a100f9a62e780097e65e83fb0eed1deaeccdc6e3a5c83b5935f76a237bcbe98c3e45eab976b6c35cfd12f537ca7e6e80d9a6f86a9176e82f4d3f61f5c7f54f716d8cef318beec2e911e068aefe138aceac535ef4eaf804b3ad4a79f599b11e573c4b4583fdc6fd05ff1e5e8ac7f430d74271a51e11ea7cc5922ad3cc7569199fdee21d6bed358bc472ad68ec55ce76826e2859a5ffa728e18333f50bc6327dc33d752af01c210de0be45a4bcf353cae57540f8c0b916769695c28bc3dbd065f6bed52f4d9fc8e13fe75d779ba924712d7fde06304ded2ee98b5b189dfdc53fee19b5357d7acf7e27f961baf1f705f27f3d60c67e394f8076b979ccd5b399c4dbc22fc115c32edcd7fbe371f1f0ac658bfd740f3df6b9989472ccd1c1bae735ffb501d2f35609f753c5dd6cf1af4156973c9f64cda9b7ec3fd3e8ab0e39b3b8a5f295edc8a168c6a109ef6dea76c1bd25a4a9da6716aaf99d61d8752577f78177cdf3659fb7aaf6b7da9d1cfdbfd3e1c8a06c833a70fdce241247d11c88bffad22bdcb52597e4745a3ae78f272dfbb02e3b184afa4ebed16b7cf3468f35f8a859fe139a503f4a4f79cd371cdb3a29eafb98bbf649eae9dede645d5d4c0d29af23a36476d3e00c7fe213f91564db5df457bdd9cef9bf789b840fedcf5124fdbbc91f5c02aefc7e56c548e8cab0cf09e9e67bf083a33e15f6edbef499b769dabfbcbbd7adceb2e59370bd12cb2470178019db763cddaf6eccacf91e25ad140f6fd82e3eb23b8fbb4bf4fb22d637dcfcaf33bc9937859278117df7368ead7f024120f4de67a496ff12028c1c74e431ed305fb4346f0e63b159dafa02ee5fe3cef81ba7d761dd31af9b2ed9a8c9b68edca6e4e3efa3fee0fba0ac1edcae30c58c241f6c155c7ebbf78d730df33ca24ff679edfc65f79fbb24eb9684605eafcc2275876730cfd507bbb117abdcedb584ceae4ac753c388e07ec507430da4defd947e890ddf2f3a987ec847cc8a4bf3bbd23a9a36ce6ff3ac7083fdf8ce001dbf99820d6d999edfdfcfb98a40eba7ce16878d698505f8aeebeb4d4941ff09c43591fcc51e3bccacfa3f14cade93d2eebe4a7ebea1fe8278ffa87e5711f5fdd6bd8decf1239b8114f04ee7bf0c4784dc3bd66cf5ece95367fdf882f7beed1f34f301af0f324d7cb4f47e8bbab778cc76ff7453d25b847d9e52c860fe3d225bf7c577390be84dcc3d9baf0886bce978a7b10a0a6805e641bf14d6d90d32cf00c6fc01a73707b37f8f7abe820c0f78b6daf52e2b95738d5b771f2209c5a8e818ef0b5d2975e363c77f6e4ef096f26e975eec9ef133a1270eef95afe7f7dadc51faf15ffe95af33f5d8be780fc8dbffe1bfba7bf717ffa7ecad7fff5fbcb3f8e8bfb5f8f8bfed3b5f2abfb121dc37f795faf976ba1fecd9c44ede533a70163f379d49ef56dfcbc67cfbb43170b57c13fb23ffde2ba767adfc53e8a63c9959b068baed7678c6b1257307ede6ad9c74fdc53277e64be6edc6936f3abfe63f9cb9162e132188c975bacb7dee16516b7bf577799daec17f2fd05716a4e9e6ad6cc2d5fe495bbaa3ffa8c73c8d8f71b23352d1d12cf7c94bae40e3d870fe4d1413985fd6527f1fcaa6e786af786f6ff8bb8642e9fd7e12243fd312c67d77ef857fef93ba935aee2e9bfd7271df338335ff573f1fa9e2773f6ba5d84174ffd903c2b787ef807f13dee6a8bcda55733fa2d15377efabcffbc5ce6e195773eff6efbdbefda18b699eecb40b7717159f614d70d31f6cb7197932fd17bf68c1ac39eeb52bb21f7cbb0c3cca97d915debeff7f7d0faa45d7c075e99789f67bd6ac39e19dc7f6f5ddf72955db1db88ff7201ec7215afd1434c720f9aefac6d0ac5174dcf6f38285efcda122fbc4aed1637f760dbb9304a86179c308ce4f93b8ff6ce7f2b1c96ec59ca1e0a3571c377f0ef6be3919f1dd76e287ce2419406ccad7f543a5935eb6b4eb15ee3dc70bd7b3cf3e18debe1f1d737bce0ecfe0ff002ddd528c4d33a103c22076740557c16c6556dc28270da12bef755cf8e07a41dcf269e6b0ef35269f8dce5d433af89ac5fc85ce4f983f5b05649201c178dde25eed5930631e73c20e5335c27ebe0a6cf517ce5c9d10846310b2cc519cbc027f0ce407f5efb293d81d64a7f66d44be9aa0f12f5730887e2ffc7677929e3a7ae6a3113d2684f2ce17a8c9f1c22db2f95e841d6c0a26cd717dc930649f022a93db46b8ab8681ca7a17fb57e979e99153c2cff337eeb2313b0b762960bf6f8ce79b6fbbd67ce9a71c5493617ec96e66a92cdf97932e600ccb2e290c819203ee397b51efef49d571cd573d215f787d619d50d0ec4ffe25a36f5c79b99b9e69cdadbe821e45e7f85682658571cf11ad3079ca99dffc4a39f8a9f0c735ae05f5be4c9547896d23369a9a627aecff8258dbb7b6fcfe19e0df91aa9aaca67cf9e2ea8e32499f0d4b6b2a76d96a867ecf19c3f6ed659d0b4315a1bf7f66d48bc835d1637096b74dfa52f1438ee8449b1c748c3f9634eb590263279033d16ed41ca48cdc5378fd8179739eb1377668b3ebdf5147a6dc65fd6ac051ae573edff077875bb8e34cd69e61c37ec15134696eaa5c431d999ed66c6d8604298bd0d9a3e63bddc6724738d7878f31c0a9a0fc624e239b8ac6949e74498a07ffa23d7510689ae5d7b8eb8b2dd3b7cc37966b07bbcf48704b63ffc03b61fc4a70c7d9052d59469a3f60be635be99bee5fd711e8d5601bdf791c923aee5f8fa86f7dace297b391b13ad84874e3f8fc1771997d917f71be2334577fbfd1c9adef65d3107510b9781342781da3f0489f4b11ce505382bffbf793f4fdcf78af60d9de5654cfd00b7b49f9682edafdd3f7fc4f62b75f8a2f8238f665936180bb6cf39aff4103b7c781e4f27f5b555ecfe88ddffb61e5cddc7fefb031a90e5b2ab93765810f154759b4fb6e3911d6685eb6213aaa7647955c839c958a38effc091624e5b719f3aa95bcc7d76d5db4b9979b9919888df6be797db637ffb98f68a6775a47327ad8fd443c35f9ddfd5568966b48d07f5430fb8421fd72ea6e261cdd8518fe3fe4586f360bb99721c520d673161f471911d26c21d443f773deb11877b54a2decff3e89f0f5a6b8e3167ebfef994df3ff48ce4b39cc36e77dbf61dadeab047dcce79a3b3e2b0157f23f8046d6f346dd9a101eedb434cf222eb80b1b70a7c4045fbd55225ef19dfcf1b638461643df5fdcc69bea1b75f9e0d6a8ad77b86e708bc1dda7bce8258b116cb4f67ddef0ff535ced69ec1867806831af7b7477ec5f1417d7f67db7198fbc72cbbf1f8476f5a78f6ab7bea0590d6f749ba5512977d58d59e3ffe4570c18cb959a78eefc3737c67facd2bd721fde333f53a8adff2a0219c9afa14f03cabb35c773e4fdc4fd81637f129fc538b9a39ded9cb6072bdaf65dbe342345bb61f8d66c1019a9570845ea79f1d265e882f42d5d03abef4fbd0e81d93df7e7e014c26d932e7297e3737fdde0f47f47c4de5ddb3f7079f5525730d3b0f9af2857ac6827f63dbf9f469cec9cc8fc32dcd595ecfd13248994b716e38ff6f7309d674718ffa73357cf4e4452dfe345fe675530aefc4b1f69ef6049b37fcaea417535ff0b6bff15dc41b8c90d38ed64a0bcf84f3d7a0da95d0aaf1dea83ecc6bb3fd8e93b2cff0f4ae645ce2b5ab4f718e020c4e1b8e59716d8e8d5883fc2fd76cd77ba5da79ae3ef390eef3c3a9a6bd1fe0500df2f6b8e49e21d33e7231cfbfbfa3315a06c2c998b2aecf577be8cd19bf256e1d7f37782e73334fcc2c48f7dea92fa79a4381799bd6cc315c2b1fadd5553ce7595fe09897f744b1bb8f50875227db3b3266d13e33e3ac7bf88a26d5d88033951cc1a187e7a8f4735883277864af1c8e0347d950e26c3a433e0a1e8b05c76adddf34ddfa08786eb1ef21ea57c5e1e1ba2677ab83610e0a6b547582be1a9b55c8eb62f1161533f4ac862e95ef071c11e0da743f55fdcfc96c076f1ceb53ef7ec29a05abe3f910a117fd4d8f76784a5fe1572fd00f096eeb92807dba157b4370ae497c96650fbc1ed6d5720fb16d75fdbe15ef1387c0d4d007729f59f10039c3e7ddf29e61801147b4876421e960db7737edf896ac7339b21f7cfcc3f4d0cf770eac741eb1a72bed15f40c711aa401be67439e25af9c37e5c58e6bd835e116e4e5dec6633a60ffd0ece5dab7a3e9f07d5d38a97f969d3754a0be4a7a8747e4f3037cde271c771c96e279477387d7eaa7018efaccbafb38e31e2c9adfcb2ebaed9ba3a4aefa74f57e6d7655c7364183fe3cf1b8ab2f516f77e4fbf004677c438b06041afc01bc41bbbc92eb61ec39257c28ee37c7dcc2be79f90a80476bf8f45ff31632ee232d7e12df7f7e58322e4531dbc97bea55d4f3aed92fe0654e1862de78d230164d91e5c9c3ad0f2a7ae4fbbfdb7fef3d7ac2fabafec8d8d75ece60788c35c325eaabcfecf9f2d387c42ffff47fe4977fef3d1b9fdabf29031da5b1b7979ec2ff25a6538328f53ea3fae85c178e7d5f83f69eb3407df9701d7638eadb6e7a85a3d2f948b598de66e3d0ef6055749a177ab6753098adc6e61bbe1927d9f8f882e7392cdae7cb630d0fce6891fb6b6c33176c33a31eafec01be528c6daed4bf619bf12fab146b29fca6105fb1749cc223588fe1dd486705e3626d4e55b33fb09a7ef817c6424d98dce519f5ea963efec7eeff4f179d451504ac1f0bab13d758fc588bcf01c5a13a79e633f7a6be485811b4e31ebc9b678538f982fb5c6b2bdabca587da47fe1823e6c677811f34127d4696fbe2aa56f8659a77d25c544152ea66f17f974fe47e489e9fd961c87eb75cc7ca8a637c938bbe56dc4fc693d7c72867ccfe13fbfb97419ce4fb65c6fb0371ca22e90383da3eadb195d23f3866f7a3ac681ac622eafdca719f15ce33ca9fa5682ddbf3be6f87cb1eeb849e6b4d7bde32b0a439b9ea9da75641da5ffcc661ba9c4ded59b172e2bbc5f99ef8a4ac15384863d6cad979241ca4f18af1bcc95a59f4008b3d61af2e8e99f37c4fb5539f6be09787b3f4ab5c0243422df90cec6c6fe077d2614b7456397072d90302be3fb1e8d156f5d7fed25f442f1f82bffe67b85b1fdce49e915cfd95f299c2fe9eabd7d40f775282c39d31c728298123665bd69796c0528d7721ad4f1fdd71af029f2cb97ffd08675d29bdaa7fcfd72bf63b18c7d15a9594ef54ae4cbe7b09e752876fe7c26fd86704ec3312ecf313d8e757877d6e07c03e23b50c6aaedfe671c2b1cb756ee9ef24c6130c37eb1dd8a3043af7357ca897f0c7c9e7d0f7fe77bca48f775f0b6f75411c645f9bdff89525f555b23d2b78c92b8f9515bce495de4dcf0a9ee5538ec30dce7cea559907f1a329068b6fb8521f67eb11738bded1aadeff1153b1dcfb25262c7a5e4eb95e124db3b99fb15f5b2d5e151d87a072ff7a5ee934584087269fddf73ced27d467786672df5edf9bec3065fce792d367144bf84e7793939f1de5cc77bc8ee239fc0d690f269f91ecd0e159fedb6752c7bcf8ef7886bce3e70b06d0e7fa2d79993137dd75fed0f1a5c78beaa197da93067fcfddf64b61df56e74f180fc63e5cda0377043a5d7d67c56384bf2f34e72846fd8a75fa013c897006d1bc98ef123a17037597b9667c1bd300c3f17fb739d227fa3b7c6475dd9e951c1785b77cd68e87afdc352e94ac7bd5ed7b903ed92e795f7c1be30e8b9fef46acbf03de12ae3b1cd3501ff46eac0f18eb2de28b33bc63caae9f11c5a4069e4cc956746d5d5f429784c047db35c5bdde0ae211d11c643ec731c6bb88645cf3409db3d7866294323824559d723d90b57e4fa6d80cb362e36ef18fe416ff985bae5ffadd7901eed40c3ec2d8eb1f66e154b080f6f7f365ed443f9ed0dae771fa60bc387e454f885fd0354343c17564c6269a651bb795dd35e2337ca047cff5f4beec7c513743f096346b82c268591fb9b7bf3b26ed79b268633bac0770c07666bb9bcda4afbf6aa2aafd9b717b761e13adde45a729fd3db946f4cae787c19998068c3b3eaa63b282b743d7e349d5e2d1f164b241ca9ee5079d913717cfe1362e5ed521ddf33a08939bb91d4e85dbd8ee4fdab5f320501f26146f09f5279e36cf4dca67d4a709a7b46fa57568e95cccb5268d6d513dfab3f69d9f1bb8aa6decc0752bf21218e9e05e553d273c84a0044f0471e3a709c250ce42f8438ba69c7a7278f4e4b07e7db61c138b3f567bc67ae3aa7acd7b56b474ba9d9be4dd926d77a395afd927b7d327abbe3d1d1b7003be586fd96995635354759bf7b6bf5f349baf6b1ec0b2995ed5fecd8513905b2d3d384c6e27b389bef4f0479f0fd209728fb709f4c8329ffbd24f0e3fff62fea28fca9ed9a7aa7deee8d7a2f3d265cf1a3c7f2dde7bcc9df251f7b931fb95a29e132d7ae8e3068fa3559d64b371a84c5e0eb379f57a5d0fc8fb9bd7efbaa214f5f78c7aff5698f383e8d12519e1044533caf2a896b8157aadcdf71a9af0fd5d0e1f8b42faca40439a7bf6967388c7bbfe64ecdf4ff5696040d93c9efeefb57a84ad8c88e7cd1c77b5620fa378ad248ee834c751d66fa08df23fb8eeb140bfc5eacb4eca11c78203d4cd23a56bc77d0d784fdd74be785c2b870eb27993be794b45dee033de9f36e22355e6dc2f282a6ad2074e962e79e575b643ae58c10b28927e4867f86fe54bc55e7edc2fd8a307a01eaf382e1ee55c9748568aee4bc11720c9691e96940fd9e0f77a5536e17a55e6ea7b7020fec338bd9f799c0ec92a609f2d4f7de87d948f17a83597b426f39acecb27a96b413bb4e1f34d8f73f44342be5ba277d2bfc6cdb6b7e11ee90173a41f954fcae0af762f9ef15cda2555e39867538423d11938e20a1cc8f7ba9d9f8f8cd7c7577d63484b255ae1552f15fd75628afb31c5317939cee69b18fded128a015f0ec347c5fd7dd6f0575f2adb132c4eb3a7479b7f5bc118ad177ce3b2fe84538cfc37f63d89130ff70bf6cf8eaa607a2c2f1e999336de4ab7ec996ee6bb06def61fc0129633e0fbe0439327369ef5556ab919f174391e8577037bf391e705c509bf2c6b06818169cfdf63c4b783e31b3aefdaff2623f6ac8a793ef7772ae53934052f9aef276f2605d5f4aa6956549b9b9e3367f87eb92ff40be838f4bcc7bb81e02535e98508dbbb6817cd6dfffa3362c940f679ecadbb45f68d57d0f7afacc75267c6a8d53d732438cef50a5e61f378feafdca470da679ca6e3cfa86c783c18ea81df509d2d77f1cf4576adf9f79365d179863d99f92601369164f3847c3d33cef3a7e2d5bc248d38f887edde4f7ed187c814c909588be4ce573a6df66cb694af544dc7cbe8a5e00125e8c3608765cfc10fd3d7dfc6fb85fbc2b2af7d8e3a3f7bdbd15cfd5cf01c7214a7c0f306b9d6076306eb7bd34fde3bcf7af67a0cba5e16bc271d4c5f9ee97e8433512d6be91d67df2de1c5acefee7a65148df4127a070ef1c2ba8cc11bb8d61e63081d97ea31f6aa7f88e603f7b159c35b7cd18f193b2c76dd39965dc5efd27f53c7efd010ef1af0aedf6f382905f4d17eb7e3bd418167abd193806a5009faa7c6e4edccfb7b60cecc95319e7c93ce84394df494b929ef3df61a8dfbe6b5c2b94efa9a98e6eff640b1900e0e5427addc31598eb9ef9c0bea768f4b4d5e72af54f88eb39e876a359fe5b0e3adf2b8a0debf784b86f0b67fb8f81b5ee539f2fedcfe4e6a7c6530fdc4fe352b0377d1f4b771c0ab5dfeb73979ad9b121fd5e556b023c6d9a1019f72bd4e274bc4a55530ed2f84ff8579f4e8928f123d71dbbf7d5661463c97a279cc1cf77cb441f370199bea32364173e2eb555d8faf45d7436320f1d55b49fbbe3a5ff7eab1ecef98605d2429f7b08c38a6a09e43ed9c941c589e35975e15dff19f757dab196ccf0c9c2bfe99b59a4a731ffc3606ea41e78a3e31d5971d1ed24b9c53519cb3e2b825f21edaf87e32a1bd76ce3ae1ce9fa0bd968fa8d6ed8a45809ac4a6644f878cb80f5eff326fe584d6b1e82e64efe279c5b88fbb3fe1ac79d2cc69d3ab1abd8ad0c7795dbbce0f40ceb3aa9e7e1aca13e2543c8517413cc9de12f1e1fbb49d06bbfdb7fd622cad79588107895ea5d132483f30dedcfb6b6e47e42537af46d91c9a4ce6acbd3bcf75da551827e9987ba767ae31ff7f3d5fc877b3896c616ef8a433f421c43e920b97d48f984b6a3b5e5ef586b3e120fd05852f9ccf23e41bcc5529df76637096ee2c6ba3a247457de467bcf70d14e5493dfbcefeb625d5986daf6ccf699e4f21eddb53e64535db750c3feede80f7dca219d2cf823849dded5cd4c1e2ffe15cacb08f869ff031de88fed20ebbf3017543f4f9e571793234e6d20b4fdd23d7daddd4d114f7b42d83b4f37d702efe6915f9821dac6a7ef019efc9db60165ae47da1cff2123c892a61cc2c465dd6a32eab9335e3e393ae3ffcb8eb0fff897d77d6e6bbce71ddefc2fff609f79340ce477d37ba9cef89c7fabef913f6fdffadb9bca0b99c4cbe61e5f090d94cb89f9e961ad78779dbfde9fba3654dbef1f64aa7758f7defffefe6f865bfa51c4162f344736fba9e78fba74a473a585ff8e4813a9aa09dab2a30e04b621f0e8ab8cd73d447a19a36577ae5391547f64d0ff3cb7c4d2896eaf3f8184fbe89b8c7b8f364e3ba02b46fae3966ffc31accffab79d8ce0dee61544daeb085e4597aaab0cf7ea48be9956765f0c57bfefd97e9c7ffea8b615d700426b1597639bdf8c2a833f36e77f01b0c93760de4c20ba67c15f53d1e8f067d36882fb8e07d69c6786dc5fca8421f2f7320e6f88c7282ea048c3f2ba1ff142e073d5fdf0fa1790e0df5f13e70af02f0bf981fa313ec47139993596ff07af51efb867d307e8a562b9b47af5739a2e23efe5556724f6c70c67442fd59db5c6cae91ef524f7ad2e86a45fbc024abef2ef5ede23842cfd9b3f438baca3fef0df7b816bea1e48581e96f08a77b763a111f98f5a5d7ab68f69f9053771e4b3ca606bc24d737f55fedf38cd1e763a283df7cf5fe05bbd9e8f6df595e0dcb60ff5d83f050d07bd9f7cd966b9df988eb4d795e0dd3e09f2bdd489b7fdcddd43cb5fa733d6d555be63dcdbdcae6d1c3650dabe32224cec447a99a907ba7fe57aec9a98c896bd22fd5ff986bf2a3fd9bf62cd4639bac0bb3e77c55fb54ea56b73565f155218ce93fbea34bbd13bcde6acfe785459e563d91f6a3a638696283dfb41fd3b5ea3c6546b79e34f1ec19b8aa9fef88eb90bdc6c4b9cc820a7bc991f2d4dcad7be01b53adde067186da6809bced01fade5dfe077f1ef2e452d22f07bf730adaff5b6ece7a5c521da52aca64dd33a2e7619f98b1e881a89e3fcaa9ff98171faa19ed4db18f9eb725f927e8719954055dc376d7d87ebb46dfc68c3f3567ec2fbfe82c9a47d4e33f0b5440de53e2f3cffcc251f1da485f9e765f9a90470ff49bd9dcc2e725ee7c042cdf436e5c2871d942b878a58b47f9b682470dd7fc73d6585f7aee8dc3a1f19d17b1468efcc9b9ba0277d5c16ba2b4146784d41ff0c9b88d9da9f5d16c773fa93f0e712bebcf05ee1bdee19dd77ccedcec89915c8aea10ea833c2ed04b89f760b3b779345cf676c36cee978409311f23e75a70193d8f51e32c48e743f8186295c06c19cbb79cbb4d849ff12cfd7d8a70b492bf27ae5533224ed3b566d5a7a7127890e9478c43f5cb11f876bb72289e4d87c804e86d2b7db6fbd1701d0be785f68b78299aef73a771109f88b01c326ebaaac57b282ec92f643b20dc2aeb6d44db7e2fbc15dcdb53d5338c21cfab615a5cf4d9b963be177a9fbda1567830db23d72a4e186bd7ec6ff8c9e1fa436a60cb20eda33609dc09dafba21a963df687295e109b05347ee469935dcd5be2e09f0e4a3c36c4bbfeba370bc65bf021c91f7e10aed4db1c7136264b97bc81ffa11ff12eb3edfdf0a187f7caf5ee492e7ab5b0229dad0b2dd58afcd8bf2fd9d332cfa84f701899a2fd7bc29f33378f76d0243f708fe8065e61f1d96c496fc79e1bdb5dfbffd42f02b16bb22c1ac403da20478fb9d739bdd3dcd6bc1e2936a658af4a2ad261fc17cf1fe0a45dffda067dc380b1aeb9bf64f4a8a6d2d740afe053e9c9dfa18a4cde28c19c6c104f4db1630d4d10f7ace4b0e2ff032f5e3e4f7c52154afc62a3aec6c7be54a8fb9452f7f90207fc89ebea467ab9f43aff02aff679bb3f0671e25e93025a2dbd1c5f611b2fb47f2ae29e912789474fa7c19ef9389d07ed181c06c5fddaaae9b2603f4e2ffd998b9bfeccb3b4e65cbf7253f194ef99d784e33ef7b5a773b1a886ab3ae989e672d9436de2e5a6eff72fd44dd89f2f68cec267c83acf41bae7007366231cdba5a2b844c127956b0b2e7e5a07f0e39f5b99ffb73c0ad205773c0a8a6399e7d1be2ffd9d3b31bae54e805f7e1ad41cdb0ec236f69a8d0fa376fe437319b962f770b33715d3fdca51ec32a1fe18dc0fe7eee2058cbe6a81ed996b2d3df768248cb29d3355adc72be7f6883109777976be873eda39fc79cf66bb4b583bad876b689dca229475871ced8098e948676039860ea0188c1e5977366af3866bad8f0eeb76dfe9b43e9672ba92754cc1e62cf9277316cc1ff6e9bfbe8acb394ebd4a347aa565ecadad1e9db9d211879f761c36f41e72afaa2dd7caaffaf11ee06370306ff1654f160ef695c6e09b46b3eb6bb082df0d7cbd3ec47fd61521d717e6dc8bc81487b8fd6c9b5f3c3abb935e95ac230fbb3ddd497fdf7afd6f7e6513e151a1bf5a94cdb5ecc7edbb9b20a7fe89fe78ef76789ccc623d5ad79b32add977baeb57ea1bfcad462e47b92f69247dd76b8f7b782cc503b6e83c5cc5bff4007d27d75c1dbf67a93fadd047be0ac8d3a67de62feec77c20af297888319f109ac54c7422ec9b75422e9aa186010dc8a0abf7b3efa6f0d1b8374b368f782cc87396fdc68cf40568e7f059bc85c38378acaca417575e0e8139bcdbab31a7be97341653e9ed9740ab7f87bdcc3f17ecbfb452494ff88fa8454de4394bf4dcc82ef1dd08bd0c34e3057cbf59d7a3ac894c6f016d0b62d342b767fd8e7bce749aaf27eec5c239d0e3855b4cdf2bfe427ede606f390eab2d7aa9f7d84fb71bdf3cc2d9dc0cd70e7ee57572e2334f9dcce960102f8eae709d18f863b26caef95a7ab48457b03f6bf64d65fe6e7ce5691677fdd8421a5f7ddd4fa5eaa1977d7118a64535bc9dbf0e9e135634c7ed5c6bcf8a257051bc1ff5615ea36de7b7127c5b0f54b76bc8835e63ff5aba447c1b7f9ab78463f33c193d84dccf7fc63e3ca36c5eb25e2e8fa085423dd8d97b3b671d8d9d27b1b9eee53b6f86dd73136674fcfece1e4c76159fb5e350c838c43fe4bceb7a66f6e12d0ccd1eea262393275be42cefc8e32cd5051c6bece1a5dfc55115f4e9588753ccc72fdbbd23ead974c2f7abbcbf834f6609cc4bf54dcdf3b522ad6a1bff68e66d06872362cc0cbd37ec52ddf17bd8568fb2c6bff5c7d276140db3d736fe23dd0bedc7d086c529cece3cc75a3fa3c79dab817db4fb7b845c25bd93d89a7b9bc62f1cc786ed1e7236afe417102feb8de0af3dee8b17cfd3e0e2cd026d18f74f7a8de025833e621eb56a1fbf718ea203eefd6009f7f1bc87e09c8417b3ab4ea8774ec0e5245fe30c6795eb35f5b7cf2db916025d93f4db79917a003c01690f650d927c867b3429f814fb978be64877fca9a5836f1cf71211eeb7d49f13e4730f823ff3fb625c8e6350ff221edf19f7877d949a2fe3c93bf46e34ec21ed12c118da9c83f73567a41f5473a5079eb4ef013abf1afbc02fd680c5fb5b0f95e6004f9cd7d5d6759a50ee77985e3d17f9387aeeb5d044b67ea79a77e66aea69dc8e316219e296c26740cb1ecacff57ef96cfb3e50fb670c320e4d4dba9b69ca6b66b6041609be53e4791f9c4b0d9bf7d603bce8a5f791169f3dc4df8d9c91919ca7c0d7cee4fdc731c6593435c5c873ffb59c6a6b6d3e809ef6ed35ed7b575b226dbe8ef8bf952daf73bb80ebb1998b67c55b043d761322177fa8b6d0120a9fa308316f77bfcaee2ce5da15e6b1f8637c18e65f8dc48bea8a372139297bef4c6c2db109bce146597699277662292ecd42a913c69827f10f7c670d0ed117fe6dab31ed87aa206cd077de2025cd5d9f70ecd8eead71b8e4785c997989b8d883f350461cf75451d56b88bb98ab9de23e4feca7ed14fb7d39c7fff6ece330472d015e9e4d2a6bc505ccc5bd3a4ba7540bf3fa2197da2d9f150ef96274cb73d9b03eb4deed3046d79f4fba783218fc64eff16a2ade369d2649301ade5314cf39ea13651f791f7b302e659d00f79e137c89626f1bfec39e28742fd42fe78c9ea22e6d16ec73302f0b890bf2807b5fe5413ce5f77380afe720644c5a7ad9ef1113c7933573db22c41fc02fe1e738f7c3b2c7bf173e28e31eeacb767ae330b205f3ddadfb07da22d2a7eb9570fb6f35f6098f6319ade147ecfaf04caaef88d368dacf13a68031a49e8ddd3e46fa04d6afeb17cee1e0e3985725e62b72645ba7a2a59857d0bedfdf71df7a7d6f5e93edb7b301bd2ff5c5679ff18337fcfe27e74fc21d88ef6d76f137cae71bc62bebd832272a56d293edaab7619e09fe85358f3c3a6973fc4bfc10efcc592bd1e73b178f2a95fce05c206e24e65f492fede27e0a2dc227de2dbc83cc9de9ddc3ebbcc25c39c253b81ccd94dbbb40f7b28674edbc5f6c392ed63c979470e05c0fba4c6f3f16e889c17928ceda3e6ae4c1d7be707a930d49df8dfecb4ece02d6c3c0e3c2a12746c51e4a71bb2e881314ab4fc903b07edb33817307ee030ddff64d349be891c9edd4490ed68f3fcc0b79d6c44e29d234b2de5a53ac674ec7c4bdd909fa8c7e9a378e6d6d08cfdd3c32b351a2a8ce30d6761554266dfe669c8179bf0f4bc5de8ad6ed4ee5cbb19c0d0f23d3df3db897af3b73897172e1d339e09b6e1e63efebb824c912f5305a273ccf7be889325bf31c892bae5d730f427836b7d75e07c905bbed6d8067353f1073faf576014c60d3ce5de2b5ad83249038aaaaf591ea65dc4f42b4411efb904d159fffc0bf3d38b12759ffcbf141f6b75d7b363f531dbb193e6f1bf1baefe3bba2ac6fdb676f8cf3811d8738030fbf3a5e7bf08ff872733ce8424befa52fcf3cc878be05986fa81f16fe07b0d1cecb40708692fbef47d8d7647f4d1ed81b29f2d26b33178edd9ef361b9ce3c9a41af0f4ed666b8f28eff361bc033547db0975aec6701f2401a27f729b806ea428febf86fcc033bea3448ac8f66ff73179c0a8efbac6820196b216fde36ee6e80955a78a4ce96e8fb94f776ec0992fbe1ba162cc88ee03dfe6e5ebd7ce7e7c51bb419a6c4eba37a7de741d8e671c467c9a361cade16f1b2f6efc05c6d25bd61fb38537cfa87fbd677a69f287c6f4cd874e1fba2af9767e8eeb7d7b479fd3df77e9a9ec1dfb2cb9af0d1d9b2c67c6ecfc6ecab676afdd3c87c380be7559dccab16dc427aabf825f290625e716fd9731ca3dfe8289f24d33fdda3ebfac96bee5b53b3df6b91639efaf5997b06eb9e61ed42b4e837f85df5c3f25ef9c3d406fcad48feeec89a5f7d320de67e3f86770279ad94d4e71f67b46f7319e69f9fbd688051b3678fb6bbb3cd8e0773a271894aec41699c8aa6a8bf444f1a279cc3792ce354aef03d57e333167e14c680eab6cf2e21bfdd679544cf5b59ff973deb39fe07de747671d37b3f47ced4df8c563dcc3977f8c2da8df25e851a61f5cefde7fc0fb3edf0a7d90cb1a129dcc7127dbeb213f1a6e7f0ccdfc967357d16bda9652f727bda8b16d84f690d9f2516ed7a6dcf32f2ea488fa646fe77a6fa89e73ca38a6cef387c1ccb35074ae600f346622bbeb73e4fa68ccf8baf333c879c837ecedce4ebbed8edbecfd9756f034e33784d673d42bc3ad29ef513256329d1ba9eca7b9ab19784de77cfd0dffd044e669f0be9017598725ca62737fffef7f9d5ee5f3f6d6ef3eeb3ccc17e9d856bf69fe7fcee64b687c5e5333a326114887f6f1eb096b024edcd753f207f963dfc5949df2cea133fb154f75547d398fdcaa57b5d2723d343fc10f0f33dbb24e87212f8b25488a7507b29aaadf44d9a5ee5a5e959f8759d56b20fbf4a757ca79c3cd8708fd2b91f69c4b46eee399722acbd3d0318f7f26f657dc17b438e598378944a6f966217636c8e9c8794e952ce043e5bdd4a7a6f15eabe1bb773d900d3ef717fd3751ff1c36c75f1d8b939e356c0aa7c7ff300ae438858eaa7e9274f3863ef654ff0fd886b6ebde4001c3cb798d37c4634a2c718e920c13b1e404732d82176788276625249ef81f09fbd75d6b1664af5cc6bc70540fe5bed05ffd4bdc3ff24bef9e8f8abdbcd5eea378fe3ddb0ab79beb1aeddce23f4623e7c66a76b3d44d5f5cec2b3eecc6bfc7d9c7a97710a4e324e4b97045cb7d0bfcc36444d40c7e0791dc5ab847d68f59d79ebcebf4ff40bf67abb01b73f3e9a372b3aa41370283aef325a0bf6bf8d73f27c3dced9f16095ffd9ae953c20cdec9c3189f8d25b7a5eedba7e3e9cff8c883753800741deb84d6459af38969a84e9cec12ab2ee4bc6eddb78d65d2c044f2aabddbbc464a3abfe62898eb11fe6e8b5eadd27b053d45fe359f719ca25fca5273be1bacd90f33ce2c80ad631277d8768854ff87706bcaad3aae904da89007c3f83fcfd67897ae4aa80ce92fd3846d2535278f559b19961be308f14f1fc0afefdce7de1dc3e0e45074e796b815ad96930646e839eca7b975e5cd989bd676d78f1e4a49803580f3c3f12d44f12e294c4148b7639e92a303887227eaf7df42c957e72a43360ed11ced351c1b84a94f74bf150384113395ba20e687cbcebce5f3eb3128a2f7bddbcba3c473f216fc8ac28dfe46fbe8dfde5fec7ede73bbca4d3d93b873e6accd97c336f1ba9f93f711d363d9b5e233f9b5763e17169c6effbc970350ee5bc1e81a7b75b393adb26c590b591f9b0aba94ca81731f179b82e5fb6315cee476e784cc8ff2f8c5eb1569e64bf97f5811c49f451da52ffa8f8133ce41134db1d0fc2881e7b128f8c2bef889f713a9e6dad3baf6fcf7d252277f6128bf8a5171f8458eabd472f3d350af61a30de87e8ffa7b1d63fdae79c8de391e9ed62393b52958856f593e304fd65a5ee15905f6d7b8eb6716c615f8e7616c723ab3856b5e36668c51f81ce564d18cdf5f9ec7ac79f57796ffbd9e9a39ab6b1c0e4517accd4493453ebfd2ad0a36cb21bae244ef1357c2cf11cc0130a1797da4d2f7d2aba7af28072b9bcb67be4dfd06bdc2be91120d7cef8ef52abc8ab8cbce96db7d7ed94b9f103e3982553a89705cc65b3fc3763c20e83ee1a23f4b4568c0578d18cecda79c03d832aaee79ebdcc9d8d05e6ec7b1c0ba5cc1ba279cdfd3fb4438c67d9d37d4735301ba07f0df69e82710ac738ba0ae027fd656af41609beb89f42d0c50186e7d05f54d37a668fcd28f7e87915c0d3ce57d2873b443c6966a8819a42e2b680fd236bff267e8beb2049f1f7fafbdf2fb7877ffbfb380d5c4ff093bc984a8cf4ca1815e119317974be96f8ff583b9c1b1c4bc5617b0e3236aead5c5bfaa230a7a2cdcbde3bde29c5700deff3d227cc4d22b9fe6bba953989de7e85decb33e6c5803f97dba1768477fd30db10bcc032bf8cf32032016aa641a9f173cdebb5c6fd268fddfdb2ce9ab9c0fd12679e1e1be13d763d6858a7fc5c4323707dcd204eaaee9aa1709577dce79a3029e61db177ca280d9237ce29f513fb58b0afb2c913a9bd5aed69cec5b29fb949f9c85cadb80fec2e5ab9e42772fcf8315e33dfaf5f0ec1676f9ec75d2ed2ee534fe4d7c8be90a375b816ee653b975f781fed343ce8abeca957fc02b541e2d39e23e971fb1375c45f8c9b36c99271b8a9852624e37ec88af924fac330eea3561cebc5167ee4d6799c2fe57855c3838de2521f99c03f70be50f299edfc4fc48a3debeee89e2a8773a28b79e3f27f90374419780376fc3d6f50a11d6f0cea025c072e0672fe6e1e8bdff3f2aaf9a7f320823665267c5baa010856550c10d35677e875d1c570f97fca1b7cfcdff2866821bdfde0d193f71a3cd7e027fc5b2dce7f8a7b2be78eeecdef794ea83b537f01cfe75a9f2d8e0a3502d943e715f5dcbaaab938ee4baa037de6fe50f14cb77b0ead5fd1dc77efac1dc7773903492b431e23e991e3bbcd1475b7a755c7a7e0de9a8b9eec63c4a5d2c22b59a9dff6b03626dd3c08efae77cff1592ff944cf9a19f888f3c7e2feb767611e8ff49dd4078993b04ebeecbc7c45ce433d7f6d68a57e6185e7b3a098439b8af27b1dd8c69e0407826f14c7aaecb954f25829c1c037841b3a233dda84d7f7447986fffb6b5577b9d24fd14a1276738e87cba0f3743ac1c740f69f51da8dd5ae468c4cfb64192449ba4de59af4ce962ac13d0f12eed5711c4b9d9d71ccf291eb53cc3fb45bae39dbc0d3de91a13f42569725d76962ecf355ccb9e2669c0fd933a5e09a7f8c18766cb7889d03d290b7fb71cc7b9a1d2f48afe619b377ea6c6ad903d2b07cb9c12822d6c8c4afbcc796e2d5f5663a0f2fd6f867e403617f22f79bade1f1ad9d7dc75cc9b1063f25ce5ee48df4997ad25b78d0f74be6424287fe1ff2e24face5f9b37aff86910f4ea8a1eae70e3baebed0c3c3aee05be102079f9a18fd3c62cb9cbef8bfe5b4ed1ca3fb26ac3b4f86da27e18ab96ad1a3422ce1427054eba3e9b5f3c48f8aa619010398739c885e7294fb5cd5fc998734aa88d362fd5acecce2d0ee23dcb386e3f81f66bbc3ef9aa1f4c9f45c831ce9363e43ecb6bcc475e4636ecff130e5f36464df229cc90370ad14d76f1be1ceca5e52dd717cef7be2b5bb0c92fbaedf782dfdd0ab21b0f80ff30a0dbf5f9f51eb9fc0eb33ca73e9a7518d112748cd16f10ff1a7e9ec47def25de3fc616af44f652f8391f492cf02dc9f9b5e693753c2a5f2911f5541029c47b7cf3ed32a3d9b57dde621a96ecfdad748f3cff563fb2ceddf94e4fbbb0fc8d39734de7a28fb72a5a6fb872049d3402f2b7826bbb9d448e318cfb76bc72d0be81a23ccabd75cd6551d50ac00bf97d14a999b67b9d552ef84ebf8136bccaeb077e5c520417f947be67fa421c6ade1f36e237ff37aed5ff45c8b07548973a7ee4b4d25ad99a7038fd77196378970d690e793af82630d642cb911ea7891fc3bbb3acb8bf94efa5b4b5fce5cf4206bd7f5c0578cf758e923df30a7499f5692e7f749abd2ce8f9af7aa2858711c3172dc636ab9224e4f45de25a2415f61cf35ee705eb9e94dfebb52c457649d0aeeb79c4b5c1fcfd63dee9db90cf49d55b2b69c784dd23e5f00c792de2bae7bcf7ff1dec398d3a7788f006f787597bfa33825e373e827f0a38369cf645af3f7523fe31e6445f961847f8a9e8f85db138ea083aee6c4dfcffdaf66c639991bda5ffc06a9b6b31e2f04736e6ef6a962302c861c0b54c0139741b2b35c63e35a54ef5e2d2791c48b5f2b8e03464efd85f3661a4a3cb1461f254f7a16ce9fb93fb67e5fabe935e73c4de99d0d224be73eed1d73c44a0bd46fda1c447c45c19b0d8769018ca51f8daaf6dd89f715fb05b6e7fd1de6405c297d5c43e3737d9fff3dee097f75b106f1a91b55b16fdd2fee0d427e8678471570c472c3ef2ed9779e34d2bf1b3dcb6c711c155dff067de105f2338dabbacd95069403d8791377fd80e795e04eba1a87f0a97bbfe6d6a782b9b5fb7d362ae5f31f667be1e6f2b846dcf3d92de4ef37d77f4f5e8852772a0ec3651763f1ba222d449bb3b0573ad782a51e2d3585e068bada3aed97fa11e7fc06fdcedeb8ffc8e2689be427c7710e7d63abf1735dbe3386fd050fb77d9ff71515704f737f6fb703e8b3c3beacf9b5f25d7e235c02faf7391efa36d69957c32c1bd488490e1c27e97455b32e21e77e18b37284f3cc355fb286985fb6f905bd47948b0ea25f7d76b543d40f1e15f883793c9aa97abf72559cbacd38c579a2ebe48b351631d715bdff6927e58b9cd9998b9d1f51bf8ec885f437ce2be69bb156c94b6d356b7fce5edd94c73e116ee323c778908eb05e35e339f7ddcf675ca7feff70f766dd89725bd8e85f028919e5e58b80860809cd5a28770a19650231566225eaaf3f83399fb9c024f5eedafbfbceb93857352a76b058cd6c9e66c17f3f2ad1edab591b32e4bfef55029efa3aa01862ce7fdf2aa95955eceb1bf0df4be0dce239e30762d40d6255a9cb3adf46495f1bba3fce96f1d179395da3ffc53ae6b195705def4f3915301ec48389a91f69f2a93a279ea0cffa63e43963bc000f149f8af75bc5fa6e8b7ca91187c56fa8a99abac51a7ebd1bc9eb095fafa92e46deb8d9c133f39ee2c3f80e6740dcad1fc2ad6adc77411ea0eca7a8887735df3437efac2fe1bf26bb90f1f1c5781ab5a8972b8bcea5aaafb1fc553d2733bade36b06bad2f3136b07e791400df51c08f131c961c671eed8fa36d20e706e6afeca53eeb87458ccd71cae9e659621ed6714d77fa09f54c87fb70545f0f13d55ac9f3117dad187c8f5845ea27f7154636d7b074fd5b72efcaf0f7c69ec1f770bdba443c1e816b000c450acc5d25d8b74b5f489a4f36b801c192e63a9fabe0ced0d9f05ac8fb899757399912cdce3173990bf02a4761771f29f9d09f034ffb3fd03fbe390fd63de5a226af764ae8eca5f46c0ad54acebd86764388bd68973c41b31b358787265cf03c201fe8ac9873ef3365cc97972ace03747660ae03cfa720d509ef295c4bbe499197ca9ac71e30431eeb76b172c6dc81987a9e8176f386f8f5714efdef31edfbb97538d2d86a37a2f5afeb1863b764bdb7e090701cea022b91029b13c17fc94ba11db9811f53098c4165f1fedbc52b15d758516f6f4fa9a73df6ab79bbc25c31f372a5baf835bc2ac56fa19f97e0a994988fb5c5bdd401cfcc7ab153d68759caf5e811e69eaecfc0c16b993f46f7c6e2732235dedcbd4e8c06bfa512dc1ae6a4fa342773aaa1d45799f449f2c0ccb5eeacd6b331f4a6693e738f7a1e48aec63aab7e9ce1acf416fedbdb5a6dbd8d1fcf562778ebe6e974e3afa06330315a281bb592f8324ed421e3f552ce58974007296a1188b10e49f3c679836d6a2f4fc89b901f4b3d5a83c3af4769865cd78989839cce42f873af0c9683c64b74c8a145dded6f349797a537ec2767d0ab62ce41ba8a2c25f9f29973a8f431cf8e31f5d746634ff0b2260f7dde7f487fb11e21661aed3ff534b7c5b735cd25b0afcab2f36ffbd2f149fad2157a24abbc840f957da5a577b50b178b0bcc57b08dd053d6e778c6f824eeffac9be4949abc7d457927736f634bf0440f88f50af494f53998c97e413c9726394b0d27650f9eb6460eaaf27088970a45f32f23fe6024985cc14a6c17d0df5815353066ec5f91128665e2a64d8bbd18d8b5e230bd13ff9de5de60a01ea47fed843ed6d516ebec357992cf06fb54ea2723e657ae80df59ab83970a9f85f109bee98f338e85f9c0f3c01fe8e2b387a5955cf44ee57315c52e71544e07b165016d8633e9427aa9af64cd488d4df276cef969edd2bcf2b233b424e13771277bda722f9e4ee24d5d128ec376afd28bdfe6f33d275eacede6bb81d630307194ab618ed367ece46d63d639e551dc3bd291f4bf63aea1d56ed4a4a64ec3f5ef9ae2d9b59d7ab195bc330ff0d03d0b2fb1147b593d0e7924ac0db701768cfb0c84cd08283f12ed0ccc5fe000cdbea8d01fe35e11c713a8b5bc9afce624cf88b0841cd7489e0f9f79c575e8ebc167507f992086b30d263781b62dfc67e09b0aae5ef6f5de14ddd3847ca672df97da7b3fded2bf01466b8d7d7c2398b7ccd4c7e6847de3392ede3429b4370e3c661174a686f7ad8d17e386ef37885472f1ff857533f0a7a118632a3d1dcd7a00dd7d198c26cf9d4a7abcb88e83072ed6600ca371ff19c225d1ef64c5d6e3f79327d696fdd13e46ddb8c67e77dea7d7e435e813deaddb0f02e26277f105ef550baea11c03ac31c18876afd989b367ef16c63c7a0fe83545a815a12e04cf0be26ddd94e47f5fc795ec59dc77645e28eaa299b31daec76efd2f784fb08983bb06cea0b66ec6888b8143d616c78ac425ecd78b70fb389efa95ec8c96acf8614b0c9a737ca15f0c76c829515ba65aa9a6bc6657c23baf1d8353c7f89951227e984ed2186d7878201e46e6356857d17e4c7b46eb66342ee67cba8147f470de2f68de17633f670c0e3d93ca4a43decffd3fcfe7a5eb575c5f3ea673aacfba9b26b506d763d66e9a33e77b6da5ccb3ebf6a72e0ec826bc17167bbf5f9346bba67b1652170e29ffb2ba3c2b7663d247afddd4f6654e6c997bd99de7548b72d2e6e52d6e4277d374ef257ca9f1ecc17e6772213ae74f478e0346f8b7dbc703e630c19b823d390877dfcfa394b5a96ebf9d13c6ff90d7e360bf7a33dacab4b6d45b7e3aee532b981b8c208ff91c3a5a5fef91b9fd6f99555abcde6a8ad7e5b374d68c503b5db6d3eed9a7b67b9dec5a9aa759e05be0b878d9e9784cac5af1fe6e39c85fd8dfc17e317ccdc5f49025560d4c7624790fed7d31b00e7c1e339f927aacd4ebd4a22bc4be44975e93547bd017679f925a3ae31f698c53273931bf52fcba8d4724694b7cd03e6172035fb873fcac30f673ec5bddbf1fd018907ae08dfc3672e3a56015d94bb276131b7ad37c8f31e97e3bc00a2c63f35bacdbc0b534e947a15782bdbff756e4df1c9ea172b6002b476ba5eec612fb25e18c02d699410e53f87cee43633c5ba257c4e3283a08d83b4553be5b3bfe887124da6091ee647f282ed7fe03f70dec74c6fa14b58feb514693077af25cf7112ed6c55806b5bb266d8089bb408c2fe796e024646fc896eee0ff41cf01a07bd06fc9e9d3594a58d808dceae1193b99425f23c0197c9f68ac57f3dd5ccb8e109768131bb617f33c133f5ed2b4225c5f90fd7dfc15b0ff5b3d67ad959f17e36be28a2e767752cfdcdff3d8976b54f054cf54709f79a22562e2cf987d6b7f421741b88ced083a78034feb9a38768801e244b52fc9ae462f1c7a5ecae61ccc5ef5eb7f66df254e38cb876b95754b113fd5eea0df3c589f5ab8a82d9dfdcb765aa13642d89ee596f676fcbf5bf38fe011d0dec27d61d445646c0bd684841611e946a619b8145dec1c3006215552eb21ad957b73ffa81fe1ac7f1ae02ec8c324235cf596f29a4d83b94a98c856f2b32538e591f885508c6335ec75247d5e8a1928fe6a39dee8d600f78a4b9f9ec1136a410dc50b85fee8af9330ae8c73313149af1982bdca33fa6a27ceeff8b9236f95ef62cea3c474e43db7f6c35fc82f9f06f715407b3d2ca6c3fc2046ed600b5c28ef2de28dc173c1c4e454e7eb3dc1a271aa5783d7b8bfc2fba5f1965df219ab65bfe65aac3218079ecf67f0e8bafd91d77623f14cc6eb31106c94120fb6e2609e5bf73cf433f9292e09afee95d3c20fa285c14ed56eeea4e81dad242ff10c5e5229d45fbbeb68ded35929fec0616a3446b4ab45f3a1f76263aff9518ff38d1cd61fcf96fc7b99fff6617aaa53d63a251d02bdcfc4ef398266399dedacc1ba141d11d5e38fef8da68be0aef2f4c360f6b9cf7d239e9b99ea356cb2691fb3e47938cd32782c37b47e8374a05fc7f872f83914a2cbc8fa44299d413563ed1917829afe3fd081b8b9d4817804de5e38b8d0fce17be2de10e90da1d69e1413a91d5c716dcc1f216ef41e981b6cbc2953f110d9a5d3a1ef725e1c2ca9076de697af89a6e8ba7b36412dd88d80f849bcdf1efa754a7da8cf7524f8da0b6728145c8cbd321ae1f4f9d7c42959b3e32c9e526f47f5c839d55ac5fbda17cff108fa0ca97f31a6ea00fed515d7cfa4ffa20ebc9e721dd4cfac45cc7dee3a133d77f060c16dafde65fe15f023822e02f262deeb35fc2380cb144fed18bf05bca368a0d4afa2c30a1cdb425de243f6d0c6ff9d70fee60333106c1aee65a7cfdc174e47e329c78282df6f7f27bbfd33fb8cf17bb2d1781acd5634477260f6f3823e57266a8ccf4de8b7562a48f05b29fdd62c7015be47f16fed922650788fa6f774fba8460f56d7f43d0f2a740bfc56c1bf759fe83dbfa7087e274f9a78712b7cf76a349ec60d7a20275e476b2b9433ffa9de018fd3730296a2c7bef6d397047383b0d93a0823e6d226491e006b40bc158fcebcb34bf33a9d31f63c2d08d3f294a812b8a3fa25619ec70d74e7c3b51fafba3d5e8b8e47bf4eb60f32179b1bd6585da22fbcac09479b926707e71f25343095e06945bb95b0f315e57249eefa774bd293f689d73daf6de09778ceb1064c97a79689da87b9d1c69874e3036dedc84e04cf6325141768ce11e67c1e8c491b5c91efc3400b47a1efaa7cee2176d7c1fdff94f7d8f13461ad2fa3272a3c81157cf66ae6f4c09770bbec724df2c32efc71ad6e488fb78b03e39d663ea9fac1fb9776dd854f35f58502e63ecf262783ff78aecf269605efa3f605534febf094d87ca66e547812bf948d7833634d56e2cfa2f5097d50b722cc45778686d010b35f251e2badf051faa7acfdef9fa117e5429b624bf128bf9ed37ed8a086c6bd28b7eebe9f72e7125a9a7c9e9456dcf2bc0cf466072faae51e1ad5edb1bb3eca5b077a376bd2f69179a8a4f647634bf347347be499e65bc1caec05a381fd67f1c997669fec421963e855c571e5c49fd7debed707edf6a0a397198c10622cc6b2dc082e9aface569026796bc37fda6877ac4d4c82759307d34540fbfabd42acb0b25167476d6261199db931695248cd3bd06e1650debd50d061c4997b5d0153074dce3096be511143c323b8927325b2c2d75a192d328f78b7dc539e7d198ba7181ee541bc71a417d5bec87715cb40c6f494cab3efe229d2db4cd78b99ed458d7a87a6b19b17f6c8ccf327e2e12d12e51f397f8be358f6c2a59e8a164b6cddc0c3d73a999ae513d7a0c81391f46b2da945ed58b700fa4ea4fd6a49ddec983c81479cc797b58aa29ede317ec02be07f64ce3999233aead78dd9b3be6a5876fb33f7ea22e822a5c83f633beb63011aab87e79bb7d26addcc0a9c1534ed9153bd57bdceeaa1d79932bad56fd0762916b343af21aeda7d8dcfadb8c72c5eb4520f5b98fb511f18d737c353240d07859ef2f40fbf370f6689faf99a3c1fa0e51b703f5fb7b76b93d7db538abf181337e5b88a30d3eebfbd9e7e8aa357c551cea2df143f15f69462d7e2384d70de80eb28ba38f79b25623bfd0f73a845934e59efb26faaccf8f7753902634dd8272ddc503e6093d618f143965bcc53d68185c708ff9f706f07f15adb55c8cd34ef4947deffb4e40cf1a6110f330dad2257f4aeae578fc783f2837bc699b4d08a8ec7c27d618d90187124e50a6def03467e9d71a2b4781ff0beef85535a1396ffb6b282594d5cb4899bfa2fd4ab977d0a79e139d9955e77566b70d015f7425123b5450fe40ab17042bdaa65e921367c8a1cf8e62b7b574183a662dcfd3c5107f12c1bbe6f3f789f955cf69ca437f494f7eba67b5612e36f4557049e54419687c663bf9bc3f972bb955a6dd673de6f659fab51f7eace7bc2225811e3721af2c50933aeeb89c719f70f0bf4e67a7ef9f037f1de385c234659991a65975700ff081e654ef997ff913c8fe70bcf65bef3f384bd74d9076891158227e7ef03f7fdb13f6bd9a7bbe0d845df31aecdcb96f5169c039c9531b0917c9d193c747a3f91da55be6f4353babda82fe5a8e56bd2f8dcf63adafe7bf2843eb0b58226c9fe1135a70fec6919e7ec8407470dada698ae6a42e690f19a6c49af32634fc8e81978b8bcedd75f1077f1cffddd1cdadcfa1fc25b7deafd9783dc6d9ea809e53579d366e247bc7a3cee28cecc63f0180f67a35d41cf64928a4ece6a59be1b5f1a8aa350c334f95470eaf505f6d8af48f771deeb685ba3dae801dc08764db3efae688402736459a273bbe3b1e5facb8a9f3d8ff923fc8b6701e927e656709339ae5c678458fa54e1375767da37e81c5f9b98475f756bafe0bca4242dd5518bfeb99e9b35ca397c90edd200f986837ce32339f3199bce809f5bba5e4adcd1f21df9c647e2d4738369ed628e29f44f0517c0f37149fbba4e43f076e14183fbe798644bde25cc350db2a778cbbd1a1dc633f885c23326a1da583daf76b1b907feccd6976be99edd8ab4b5bb799ed8fd336edd24df4e6b537b0c461bcb78c6b2e62c3c79a25eeff45c0956b468cfc6176cc7fda3dc9773efdfde570fcec7e1fb6ad12bf848283ea2f7fd2e48cf28f0920258c07ffdccc48bada3f06a62c1afdef9375cc3d63f9d6e7e2ad64681f635e12be61b3f31b1636d85fc3c9ced343675337a9f1f219e4fbbfd8a6b75f752032a14c74595d4d2f85cfac5bd27754c4e26e71cea53d235e596e037d223e3be0967f00ece4d20e750524c8493bec4f753ef2a3b4353aea8a7a5a381a19e78fc0c272f3c1fc7ee8567a6165f85e47d75fa38654db75700d75790e714d7d6a856040f15d12fc559f130dff2d9ae576f6bebe8aade43fb4af400456f071c3fc4b0fe15d720a3632a799dac6399939ace3deac3d58c8942bd2f4e2eb0314bd70137ac58cc263ec7898c8f37cf22a8b977c139802fb5253dace9cf6a8fc695f0925d9e5923bf25aeda423cca1e14e65391be63ff937a396b0ab2167399a80431bf961e7fceda3fe9cb0379d9a76ed67c907f45eed423a329eed76e16d4e3feffd55ba5c6deba491789d1d6df467c9d3e72433be9637ce6d129f2f3a198c05b3d02ebdbdd13f2fd07ffe6159afddbb5453a29ef197c8cbb35aa47fb05cfb5eebc3e2c10dfbfe5a40515c81e1a6f66e010ce83e97a7444cee19f4daf38085ca9afe5e09125a39a31afacf1e9def92179e0e7e2274275d12e47891fe5dca3e7017f25ce6f58a359b482451762ad7a8f231aefd111fba1ed999eb64539ee9c6beddd5e631dc143d495663d2668d6a0f63c76492f83d79e93ecea2ba91f45ec9d2231cb3a7ae61afb831f5ea1d71d48bc542f594f26b5ea533ee5f5adba9c436b9ab30a5aab6b2b7c073f6bc9faa2c12a670cc89be4e80a31b0eafe9f1df33ba5ae92e7d6435ff66921fb00f8a289b20f668de5ddde49de1cacdb4bf86fdaf3c577d74e08cf14213f406c37da7ab7d21f863f02d7a47d2bd9953cdeb46f8682093b74b119d5358a31adb53b5fbd27edcdc703b88b950a397f5f8653f4b5447b1a7c0c8a97025cd793c91b967a9a5fd63a3876b56c8ee3ac72c579339f37ec4b69bb29c5145ad6e953a25647e66990677d99a8c33e79aa177d5d4f937eb268a73d40c36675e9ddfcc1fb1871c208db0d3fe563b2db2256f9e8c6f2b156371facdd133c21ef39258cafe57da2d0921771cd0e98bdd49c45a29d16090e915e5f11376fe2ae1affc370b61e2f342ae1b5891e8c4a6f1953e31b3e09fd3b1c4bb3c7eec7c84beef8dc496f17b33648d4e1f60ebe21a43b805a7bdd84d79cc3b1c7f14685c69722eed6c489e75eadd219fbc2900781cdd8da7229fe42a2af7de197911d50ef51ef9ac7fa77afd5cde343b54feba7a5a507833368759a985a9870cd17bceff858ef73e93941bbfa2683f71f632d52d21c4b4725710bb2991a7c36fd9d16e54b967d5c25cdf6ba9b53bc0fd5d3cbb1dc1ecd79c5f7fe82defebef77d91739acfd6b889dea2462f12609cd5d9f05f5be4018b48b4fba96f33f1f2992f98c40fe8d47ba8e3b919d7652f359df2147a38d640832f0d659d9654b7d011e35a7aae5f7616dc286111e6f0d7844e787ccf3ae1e954ced9f588e3f1a2d88b3fc53b3037eeba61dcc2277d2dee6fdbd27fa3bcd2cbe55eb8371b892fd05a38ed3a616c7e36c0ca16adb7160c516e6a800bec2361d5ed617c4daf2be6df1d921d3033ca164d40f4ff2a7b25fa86ea27f3807d2d1a608bc85e896e1570d6f5f503c79f81f6dc14f772325e43a709307495cd9a5f3faf92732a9e2c74fdd9b90dc06db4a13fef29af7cebdf437c365cdfdb18fd292f9f0e7c60ad1f9668d7573873d77eafd14ff9a1e82fb29694ddfbc852fd8d71450ab1209dd341b89138b68b25acf277b28346dd32803e8bccd11e539414ade0385dd1525197ef9de7b3fd8ce2aad1a546d4c616cdd98f51a6b66169adba7dc54a551bd58dac932db08dc1085a655b682ba974a97186531cf7cef3b506872f784f5903cbad7cc915684ee4c04de65c3b064fa8db7bc92f97c728b558dfc07041b1371bae7bdfeb5f452627b9390a862e114d1fe2181256e6287a01911967e24fba05e280b545feb861a29a31f5b4ad78952276aa1d6812e4e174e1884ea735821edf085c0ce89093b7f792eaaaec93c6bd66d13a5bc692fb283aafaced09e3b14bce750a7c396b8a151ccf68c61a7779f3707fdb3d70cfcd2db38f51ea07f3487ae8a32de19f535fbb3c8762f45db61fc953992e7c1da47e033f8b5ee305e7dc6fc12fd0fab6f6b9cc9f94b9b5e058bc1c6be892c6dd33664cd649fea687bd70d211a69af5b9167c531e3aa23b6674b8069aecc2bbab245fd0abe306ebadbac00ae82bbe5e1dc01be8b431feb25bf31b91f4ebce253c7b0f1ff9099a32bb5ab4cd027ecdf006f6c2e9276c3df0520f33f000ec7fe43ae6a97fb4071e4ec0ff33ae8aea63acd3ef27452d7c74e8d2a0070a5fcb529107cb1cfd5d139777b9336bce80d304bc69c1e702ea3ed8070afd523758efc59679514ee8ddc20f559ddbbb2fcf4b411be9ac57e08b5c15b4ef29079c4ccac14ac11a29fb37c6238e8b156a0af68a70b8e77a3a78966ee487bf0b68d7dd5a1f6f39d525f44bf2a4451ff220dce3d20a471267a78ef0aded6b1ed3a36b30f1bbedb5f02ca2f95e728b57c46ce36467b83df3da114c618839125c99dfc8dd0f893953e4c70f73ce75d391e887d50e7b3bc5d14aeae1bd36df800f467c07f233903db1149c0aead0257aa3b5f8b265a2d9fe03fbf1f1dcade5dabf79c5b99a3f98f9d91a9f84db7e4f44dd5870c5d571b006898794e68253635dc9c2671c787e2ec75213d8ccdb4b1c571389aec5225175b37630e7997fea96c2f1ede6e7e9e394ab38a99a18f892edf44e5d190d2d6d057ae3a72378bc91668b0e92578adf35fb50e94034f0fc11f3091943a9dad4455fc8e23eeb84ffdebd3fd06e6e535c7ba767e3a2bbc75cd3b8de3197caa6f33e0fd2c346d15eb9505423dcabe4446b3be4ff97aa82271bf4bb02e6c694147fa558bb397329bd9cf78540cd5a78e9e853fe68b86de48398ce42eac7822fec2739fa39ba0e84ef879e8a8697cc47f27c04a7f190488e583086b9a5f3a17d419cc7f8cdda0f47c8a316c8f1a28deaf9ed74ad4f69d9f720290e1bf3bc8a8b4d70f39f79b7b97b2b7c5ae2d772bce2ae329adff34d03dd914239f923f8f3cc036fe2e6ea4d75f14f9bfe160da15a85479d0db51d036fdda4a2099a56b6d186ecbedf53f3542f02ffad56a997d9a923df4398498c23f4b3dee1df66a7f36d2c9c37650576d2ba63782d7d24bbf09e630dae6ba9bcf56af6a7607e8f7655cc1a1a5ff8f56b8e9d87fcfa45afe578a0799977f392fd44afd0a7a3bf672dcfd78c31ef33eda5418f879bb8a97aebc662c6dc5a9d70ce3d869f2c3406edf4987ee1d6ae04d3da26aabe327d4460484a15713ea77dfe0ed68d819f418c7d35784f76698cb967e7c2bb7ad28ba1b6c7a6497b6d8fb37b2d7bc703b8a0dfe86e5c70722315fe2ea766be7667e5ac665fd259c5e7dafca1097ffd0dff760d1cacbae06d4f7e19af3ecc0df33eccdb6efe447ee866c57e2e5ccacaff71a147ba218dc57aa015327144470c3a98a3ee99d03a83d753ded2be63254e0ccc906fe726af98d07cdb30ffd9cd4675dce34b638a8f2affeb1846d0a6e37e5a7c9d3c1f0fd2a3e13d71fb4e3ded62e2e55e79d7fded4ec563a3bd685d498e774ff176775ffc8c7779cf5984c69bbb90ba502cd779165d2cc250790f4d481ea8d0712bbbfc7e63bfbcf17a8e1f15fa36773ef9cb77e34b1c2253bf257d51d7c3da7422657aed0b8a3b9f7e1ea5e672970b9684355037fecd6b8fc7ff71ec63a803615fcb7328fde297a8b9f8de26124f01ed9f455b13afbd24cfcdc9f4bd8cee15ff66397b3b219fc937dee56bebe66654e2b578b41a7ee7afe4d992fac0fde6f3773e4fd6e2115c5cdc43fa1ea1d7b65afe73bab83f279c56b9b9bfd3e7fb2bc175c946db68f85bab5d74128e6dfde9fa374d78164dcdcc497f5d8ee7cd1534abefef8a8b7b7baee93a485365f4e93a1e6b7a06e4cb7bf5e9b5e778277c9837a7ba7c068f0ffdbd5d7f79769e7ce78fe3e7efac46473cd7c0124d44f35c9f6e04979b46e74fcfcebfb122e85ee95c9d3ecfa57571231ec08f9f3e47f7cc3e0fd5e07376175bcabd3b8c673ddc6d8853de76eb14b159fc1189b699a3c98f31ed7e0f988fdc62ff059daf8e84879fd58b64b4f78a193cfa96f1b48bff0771551aa9f822ae5241fa5a7e8e9338aefae073cae673aa8fabe0d1c6bac55a748b0baee166cc77b9d5a2459c4de85a527eff8dd1a4596e190fc7ef9f757fd75dce2a7a9c728659dba3f4c6cae99733ec1ef5922eafa3fdaf604ec7966bf73c3eca49c15919afa8aed318cd975735d07cc9956d718e388637b53e72ce67cf44db44e2d40cbe3ef0a2f40c2e86632eaff2e357ee25a4d08ed056b2db0b6fcbc45f95ddfc4b4cc5b1b3ca5b3efbb5f0c70fdf6a9694d9f02c6ba7f0b95f8a6fed97b3eff1f2fd6bf413d532150d19a991a6460799fb78ddb9f6dac573ebe660b4d0bb7300e7227bca3c8956d20f8b3c68f27aba3a01ab6d7849ec3fa7a7135f785a943b3795e437f3240fa72969b1fd788b9bd65b58a1aa909b96193cbea0598bb306f58143af799f91c613e1708678b08d0a3f14f525a85effbdee8a75c55aca1669602db807b3f7d7ec4d37d4eaa6ba78c4b8bf39ff7deb4b3c58fbb46e03fe7be94357690e5c8897b276a297cec13ffc2ef6ef9e9d2338215bce65ae03d9e19b32efabbbd89979becb749a14c0cc14c1c7854f920aec42bc24789ee27e62b76eae187fb4ac693e640d7090babd56a20768ff43cf6fdd84d6f06fa9152c3047dcd2879734639fdc15e7b8c1ba61ffacd4d2b4e633bf847f5b30caa177faa0e81a66e96ecf5ef656e0201fc138a633ce71eb1962dd7bde2f6a75d18724de4bb786c35ba99f68e2c08a7e1c6bbe2cac18756f605795e514bc0658d35627af85d45003c61d6e7ccb78e1e5ac0f0aef61f212d654e37342aef7e7f0125cc67e859a4ced73de766ba58c9b754aae3b6b60380a7d529f7c0d14f3c18ec9f3612bfd3c9a2bf9768a38ea7702df9907f8f49696c1090dbf67074fb6d715cf2568b5fbafc95370c77e5ef0ae531163d3d5417cc7eff8bc3a7e8dc1998f55f03e558bffec8aefbd9d56e20d531c33bad733307016f17417b28eb445670be56785eae260e2f69f696fd5ee1ada8801bc73fc54e606d656ccfaebb37c4afec3615aec93611e459e8f2a08d79c5bde0ac7245d32ef28679da4452a58ff82637170a5e3eeefd0bce3bce8f978ffaf39f973cdbf5f40dbd349a71b13eb1ca029743c17dfe634a48d223d8f78fd0c7c59d1121e217552ff16bcccac18a7c259cb49b7cf4ebbfd7365c527f124cff23605b6fff727cf91a0f2434bb4374d9cb164ee3ee5ebce9ef4ff8a2e6655faf37be7ddf3d096e448fab7f0f9638fb16271b3e53c3827ef11c1daf5ba0b6a823a81efa893d4b139e6cb686e1d3e5007cf1f0a530bbc66de517c4a76f11a98348bd76bfd1bfb7b7e8b5a85cac36cc08727bec08af17463680730fea48b15f2c0ab1a782a8f263e6a5f1ff29d71f3017de31a7a1ded48aeafcf05e2d788b1a9f392f6ac788b75ce7bd0d945addf3f26a32ba3bbf3c5474547a31cfe58a473491cc0a1d611fbbe09d7065ed39eec4ff96932fbec07743b02eebdd0571ada166bff63f8f9f906fe71ca89058ff1b4f6801f23bd525a571247df57e7187d97983d078a03b070b157d33c60ffc1c8ba31bc67cea9baef39ec590b578fa4bfb086ae51d6c750749d667c257fcdde8e4637e61c88feab8cfd90efdacd8be741ed392c858f2d1eedb9dcdf7e2a71129f0325f8cd3fc1eb81e78e45182370a589ebc07c443ef3bc6e3dd3bde681b7793263609ec3377d07d1b00c6bd127b1a041c2f70b9c3ae10ca04938615ca9d34e815b3a268e7bfdbfcda7a8e70d14bd9e653ddf625c12c1f3a65c83f21dd1e6665eced5486a21ca4971a63663eef7c4bd76236336bf788895743ddd78eb17ec315eeddfc86f8471fb020f1a0d0e627d96799fe5d22b178e21f520598f9ce3c73962a1fcce139ccde4457015b26ecaa1fe936a4e325611efb55ebe0b643d2cab9df80a56785fdc2cb027a7d90138acb733f0464197b3642a28d7bc36b32c77dfbef9ae2ee7f04a7823a5057251d15455fa17c719f57325fd465d9fccfae73a5583783fb865dcb4ab736835287502af73b5e09cc38ccb5af8795a2b8c8f5e0cb97846bfcdf8897a82a301dee65e6ab5e2678958003d79aeb9a7a37d70e1fda53e869ac037175c59dbf58cce198d4bc47907c7df8ff033625c92bde51a39b42ccac6e81a7571c20afe5c25ebe6eecdf766f8ded26804c4cfe801b8e255b5267ee9e1022361b070d833b0772d38ae3d1a2fe2eefb75af37447cf78befb7d8576dc8192cad9b23636c648fdd0ece0f7e8e9a7143b3081cb0340f0bc4c16f5cb7d2d143ab2e5eabacf01163ff5bb4c01f02deaf502b78451ed8605d0671c03dff35bcde2bffe60217a8c06fecaf39be4a9ea08d57c4c29f5a54cfd02c566fa78de45dbaf7868586d287f012c5a7957527483ba1bba7d5dd0ce78f757833fe8a850d7f1175c55afac17c6dfd246dc4426a28c673ae821682f13b8abbdf54dd737d16ef2efb91e68735dee2ff6bc6bc8d4bfc3f144d63acb5387b84b757d3e0f7281ef4727849e4fa2730fae325bea300162ac2ba8973aec96df3cbff97744f5abdd37ad26178a7f1cc8b0363baac125a8ae8e538c0832cb7924fc625e3fea1b7e48f9367d17a3dc2ebd41fa3ceed2fac2be161bf56a61e405a0b73c468bf932765f4ec62ead772ee159fb5f183319e598ebb84fe9ff8abbfb2e66c992cccfc4d0b7e3eac199839a17ccf3bf469652ecea5d70a8d8827d6688ffbd813df9915f0eed1fac0b9c6041e8e63594fbcd759bee0e9ef6bc36f95f9dc9d3dec3f14893755514f230d7ceaa87b8eedb4d7a3abdf92d198e67f6ca549cdbc7e3fc963c153c7eb46cee554b0832a7204cf66ff32de8d73f6fee8fd12f58eb160f123ef9dad85b5344b965aceec70fd64f05667f6b78d57b127f191e0b4d5b934babe9afc9e508715aee1679f0e47d66de66c8189897f0dce5d8e2b0c37e380df694fc22dc82837a65acd496afc297364e43bb82f2fdf411a5b17319bd165a954fa0cbc0bf48e2653e031dcbc8b3fc5ab8ab5179d84759b5dd10ca83fedb91aff66dc0feaf7b95c62a1d85d702ce125f9ea2c7fc3fe46de2bc2d1298967d87a11fda6ff9e3407c9b9cb5b78436756c5f1e1e838c578cf812b71370af34c1de61cd7a963f27c141f8757f16689d9c7dcdbf837e88107f3187efdd9197b827a7358ab43afc153758bec201e4f8c471d1da78853e6cc15a4da17fd06f3c3f57a835aece0b30bf3595c7f0e9e28be6bc1bd44bdaefc2f9f5d3376e83805ff6fce98924017b8b782d6b8fe953c8f83cff79db36eda5bd2a2366ba11e685d616cd9d7ad9c875fc62c175db516f3cf86d790f8b75be4e710acfdd0c2ded93f339b6a49dec60f1123d539fccd32dc17d5dad2623fadbf8ed76ff02fdf12f1a1ebf68ac70bbcf32e79664dbe74b99d2ec447bcff8edc8c1bc65c430350f091ac0f559bb1414cef89b743769a987de2727d37afb2be2b75f3be41df35563757a809fbf94c7444780f49fd2b3b3235d44af6d07db2dbbff3bdd61fc9532abf378fba3c91f5ed47c0312d8c772f6bc686128f625edc037bb65e5de479b4875826cf6b6eeca8116c576b0fb19d896a99cb086fa6a4b8b9c25ab98f38ee775779281a9a67709d297ea0fa37d795bd073fbd8e94f8608623ae9dc57711ed9b94bfed6bd171461ebbc29e18713d214cc5b7ba7963dd2be50ff7246fd384bfc57f656dc1df3dafd033347dd079bfaf3567a94b180fd3d30fbbf74f99704cc05ee6562c7860c44dca533256366a8857067fbc240e0c61612aa907806f99b1966b207ee0b51f9fb0bee2ca52a4a7988c7ce001f7d686f75a4f710fc955c5e437df93ceaa2e9e637f9bf78d3c43f6cc61afd02e47cd2652f3c05ea045b7e62a967851e677d1a6033c52606a00e71463c6f8bb8ccf6fd232c9c9df0a7c09653b296358bc7c07ef1bfedb81f766f4b9799f0d165638122d1ce0aa565c2b6d6d0d7e45cc3180972cd9d32ef3fdb1d4b0e9feb47bb893dc79b4df2517bec6c627e9cfb9b3d157085e8ce71ef3c7aff99e53d7f81b73ee74967ac5bab971c44779010f8f2e2f49ac20d8083780bcf80e6eea1ff7c859dc1c1ac1b8b7ee9aba3826b9b55efa7e0ef5d83136e7f8d1e0c888cbe696e27db4963c4a4d7e098e07bd9dfb8df4cdb02e2be8f2f3efd72fe9cc606963198f87e645307473d1ce4c97eef401e3f7d5075a7f24cf63f19b3f94c8fb639f7e2b28a7c09a5bade1eb712c1ffc027fcdcd8b3d6a857a8c9c25def8522b7433e4c007993fc0d958bcee62e110128e827bcc166a18fa2379d2b2ee29ffa07810bd3d78a9cc3784bf243e845d8aee86fe09cdfb9b33e7cc75c21e776578cb3dad97b4f15fc133275fa0b4184f2fea8b453dbdcb45bfd8b6b187788c83f3ed6417067fb96e8eb1f181927d478d93866b5cabbc028f366eaab3fcde01dcd6632c35e2580d3dcf7f880669be311e91d1c9e06d79df1c0b6f62f53ccee819e5e974a36f50030e7f2bd6d65d81af754c46a41bf53fd5d06af1b1cab7635c07fa53ed2816cfc1ec80fac6caf810a0a62c5cccd99de028cf5bf11dbb421c1d944f356a702f57266f11ff3535b9c25e18e89d7b87b3e9dd608e38860df493602bdea0af32b943cdea9d73e8c64ecc7b0e8e683a68d6140acb2725f898c5431e4f17d3c3149aa982114fa93e7fa6dc8acfc1a7780add0f27798a3e80a1d16b1f9cb73369d0933e689c4313d3298d9e37e391e90c096b533f5d7d0c70ea940f8a2f36fa0c61245a63bed10dbc32fe8ff0717c50ac455a19eccb8bf0bad3c813ffd5a3e8202ed7d0335de5beccdb8fe449f6e1f8108b96cad27c8f36b8a611cd5b8a2df9da08cbe3e30c0dd3c741ddccdeefe473f9b9917b95f7dc3fc8da2c826bac0d6f6185fffa19733fbaa13599598643704a9efeb12faf8d6bfe9fafedf37768d2b095bd80b5bab36539e8771dc8c30e7b4090cfb688cdeb9d684b3e3cc9586ca70fb96881d5fb5438a1d087eece8c7e2c2dc7688ed1e76de2f47dbeded2f407e0ef955f8ccb82fa4627e37f10508d143a2a66df025e3cb1147be9a2d69fe4fd5ab8139f3f59ffc5b61b975f5fe2a37cdb7b98c1eb285fd60130abac9db48cbb3cd5e6fd3975e391422c53b6a247516617be9b8182e6eac32c91ba1e7b4d006f91e4357c75991ba925b6687e488ecebd426bf51a99b8c6e0ea16157b5379ebef6af38433abdd742418f41f0eafaf16b97af3216329f5c44d17e3011fc2bcf9d4fc7fa3e4ff5c4b2d813f870e2e9d35da8f448b97349fa5d6cabdadbab9ec95c5d7f2fbd9d9ccf3c59df68d5f20b890e89746c7586a17e71bf1d2d0b1cc434ddc42ec6d29d7c014f1518957c978ae7f4ccf6093a397a23572aec9a9329c94c9f9d3f5b8f989af2375b6fe65fc1b7b17b5f9025806f2756b7b2d4dd6c5ed72be17b9ce7224da91ed2d788d5360639fc493117355af89cf3271536019d2a01aadc17183be72968aa6ad689d1b5c4efc2b39b7e677d7e677714dc5d18cdd46fd1c6aecccef66f0703e939f3ce984c75ecfd3a567d5b03656a6a51ecdb5f92c3b8ea90f0e9d8ada126dbded341968ca0a6e8cb1e7744f71647daac38b26abf8a048cddbd9f79e1ee2c130c27b4f07d6081ef9d01f0d39b6b3ff795f09ef12bacec84b7c9cb107eeefd52f09fb1111671c7bdf3169386e564e3236b1d34e8de57dc8698fc2c9cdc583a0fbad732bf1e233e6cf95e41b9943bca36ff93a896e0dae5ece49c4d8eced3a1a07c26dcfcc75c2378bfa2dbde7492ce79c7aa3ba30e5b68ab492bcaa09afeed45f5ccf683fade14dd6d7f3d1db5a6ac64b8ac63c74c9500fbc11ae30d5e46747d4c6acb3704df97e49f320b8533727d4ebe268849c35134decd64d475b89f7ae44877fa3c26bf8d05ce199841be92758bec5e353ba1bd49d54ee5a7dcdb9e21c8273d2d078b78ef6e7cb5a4d85ef0972f99ebcb03360984ddd3646ffd0f8283ba5b711ed9e65308d1cc3d5b2b936189d939dd40be96f142bfefb67b495385f3f13cd63a3c3b77e723f7da67d119e12ead9476878e19c8ac30a3a7ea91f9c8de61a7b933c2296b0e4ef9ff3e0aff7ed4e2b27943df7f79dc911a0eb6eae2b3e7d73fff352f627a37b77784ba5d7f01458c68f13b500536b7062d12d7bc61cb57bbf7c9e93e968c2fc67d3e7387ca00f14d45c670c9507fd5e1d9dc02bdb46f01f514b57a38effb1625ce34b82fa6769852f988beb12efc7df42f682aa3ecd59754e46f06a2aeae91a383efe8dd65573577c768368e663ed92bf316986f19e091fbc3c9e5ff48bcfe2ffdd7e188f5f9c1d189b9d6804c57e38822ec02f89c5a40e183715f76897db1be004e80ccd72f491fd609c4a2dfe597871ec891859e11bf4575da96f1b2dab653c5d2bc30b052e6f6bb46564bfab1883e515cf9317a9fdaf785edec24bfdcbef6efc78f8bbc02ad23e7cc058cca19d1eae45271671d103d5be7a3f56c3cb678ce92dceb239f729b79ee8e99738fb5003a298a8fb2c636349f769ae9133a366dcd65e2dbeb0f2ac9c1ecb515ecb397d7b2e854fb94b9e7f428b281a27cfcd0027247e296fafb178887773ca138c43fbdaadc3b29b4b16c748591ee099d6633ec7e2db07decbe7c5fc3ffd7e70bf36b1744958b5c15eeae53bf3f9107bce7b841a46c1d81d781d011f2afd00c4f6f087cf80f94dfbf78a7635d5cecfe677d91faa89e0db9fead5b878140fa1d64dd5f6632d31e5e96d048d4d5a9f77d0ca584bddadf821e37a64dd362dd8e51cba1ac62365f364ead0ef31fb23ced79f7af598e7c03368d6230c587b0de799e1cf30a63c7e9438dec4c18e323597aabb4760b9d9eb36445c541b2c97e8855598d7b52ffef8cc27508dcc4d9ad777fdbc26bdcc1b6048429ee7fbeb95bcce31d4c7eaf275d190600fe47ecd2cbb3955cf6b83b3219f9fb976a4f7c87df4fef35d0cfff9f3e6dae8bdfd9a23bfe45da92e3e3befd6ba797dae2e7506b70ff0dc57b90b9d3a7d89b319eda1afd488df571e518d87d6d6c79dcf7c8f95b502d60df9c668bf135e81c937ecbde41bd89bfd0f7c677b89d589ade4046f0c35219fcc61ec133df33e318c7fa04db2c4f7c41b5f411345eaf163e4f9f1e841eafb67ca89a8ce939a7892b52f14c78e69772d122b54cfb5601d77c27fd712db8dec999cef889565af36d75d8f70dd84b7a6fdedc09ac38c9f4f8ba48ffbbb3195b81fbde0874feba840ed27b318af553521bc6603f1d1bfedff0faf7cea718177a12afc0ecd81397c085c857e5439e841e73813580b9cb188891d26f8fe7b9c8583ff6bc6b4331ef32519bda0ce51035f11bf47a253a2c2cb33dad4b783b785e00a0aebdde8eb3126c9927ec4e671028dc4608ff77bf97c0bdfcada415eb95dcbfb9ced746db482da29d7de83f62ee3de5c9aebe926ebb58430b75e13ac95a27801eee0ed287343de0fdf18e9df0323a67f25fdba9b336f07782078c6445688f95303c38e1abb530eeae0ac8f36d07b0aa1154975196df85eb59b6a787dda8ae73ac7455efa38113fcfd7acd706e0d8b35d0946e92d31670579889cd696e83202cb65fd844e15e34fb4f5d6bd1e6f182f7593001b94e706cb05aeae3e1553833318e80107f78217acce9253d56f122ba7c5db15f73af56ff494e7831eadac7da9b713afaecf11fb9a4006ed9b7ce02d29de415d4e9ff37a25fc0c7bcb9a6796137e80b1b6f7831c34e73378659bf374d4fe96f1abd8a318f83f7d4a9ef4a0163116ac8dc5f17c23fcd2bcc6b8cada97f82c114f309e8bdebab939af81a7e0ebb6c9af2a138c7f719cc6339c114b3d158c783a050ff1ac5f64efad0bbc4fc71c238c121bdfdde356e5bb742d1e9631d6b157f73867f65b1ae1bdf07f5bf13e28beec6e3912dd61eb782bf32b7b935823e6fd967106eb3c941cee3585b75cdc736ac7b7d0c0daf8e1f52df7958344bcb65563a7a2ef71665f45f23b050651fad1596e6af88b8abd7ee559df4b6d34cb5b9cd11f5799f4f97ce6bba59c2be435b0d9ac7b3c61ad4be3cfd9e56915c53f91155b9cf7993d718fbd285ea37e9239b1f4b04ea578befb37af52d7e7eb21dec519e31bd701edf341c13ac7aa2a6ad166157cf2b20616265b6af6af440f7ded87a354f05b16c7109af56f9e377e2578b639f532d5fe6d2db5a8dc158e4e1cc93c1a25fd752eb70b7e16cc69500e34f8542b3956ce5838e8a72f997f9a38a567ce5dcbefbfaf38d0352416b47b74fb5bae253fbd39c9e01e34e9d5846fc8cbfea7e7456b7119ee78affce1c0fb36dfc81c660da76eaf07bebf714ac17439adcf9a1be5bbd497944acc194bcf6af7cfd8d421cf2d62f6f4e38e6365b3fe6e4ff081d6c6abf63e92e7ebc05b621900871f14117c54c44b3b15ff7dab7d01c6d04ff2d4e44dac2313f81b3fcc2ee240d6f9eae6ea75f2d47b42207e2bd7b309d70f7a7fea3fe0f79a91e0c44bebc611bfc858851fb9d486e56cd68d0d5d2f3765ac0bcd6f9c5bb1f4318b5c4b0e368f7625f126b2622cde1257ffcd73309c15e7f3f3a889e38d35d86b5939317f279ffbef49d3bec2ffe2a3cb79f95931be5b238e57cc455072aed03cb653f3de2e2718bc773b782f7bdbda7b4fb02545eff7205a61c3ffeb44c5ebfeb3fae2b3e5e0b3a5689d00eb42de63c0a4a7ccab3a76df2dffdf40a72261dfa139f40d6de6e88a4f4bf3565b7b37b36f2ee3da7300adbd1f524f127cd5af447a5b3ab842cf2cdf3c0927a0ba5a1b6f19f85359f05984d6b9ce03de3746824df8f191e2fe31579f44c39fe3bac6ace554f4779f5ab93ee86493b702e90f9a7ef86812e3acc475b66fc9ae9e7dbaf6fb3bd993288e0b8635b87bd66fdbbe498e5a1addb003e277f5ceb5b2c9b59cdbb716ef45a570b469bc18cb0cff921be0f5bcccd9ff32be92bd6e985782439f9e4807d6832f8e7e30dacce8eb182fb4e1bf5d9c6e784437889fbcafffda6e9ed78297425ed2bce31a7f49cc27f5bc87410eff40fc37eebbaf9be83d19d5d000e53c6963c5e01834b2ee73ce9f3ecd3353179e8c442333125c523689386ef3afe003e52779fb2a9a94b7dc475952dca5d39e57d5f74492c470a1bb1899b133a94eaf30a7f385fdc2eb7e3a7992f892e6eab2116d86fbf53c3535af447ab336ef4945d18af6635c33df6fbef6e323fa9dcb07ffa7c4d87b603ad77fc266ddcd5137d76afc60f4996eac077857e44e2a75670b5a375d1e90a1b6299893d735c6766d85d7825fac9f459bb49d1a5e4411a3862a3576e5c85ae77ba6f178159cbbcab7a6ded0af991a31c3e10a7bfe7d7756673d7eec3a79de4b5e9847c18bf4bea476e06482abf0df06bf6373bd96efe984eb7492a71863f0c35cebadc5fdeb3be0ab4837c0bff0d75baead1fa26380baadeb913e9519d7faeb77b24611eeaf39e2fed23bde5fc335f7ef9fb262bfeede53fafe15e630788471d2f39a2817c7da636cb8c23efde9bdf07dedcf9a7470d6704d2b6ec40f9cdfeb4a7c437889727a91138986ebbc9e012305ff65e5c4b296427e4d037f511bdef1c6ba31b8d1b5e40aba05afce5e22fec3d9db9c8db65351439f3cc8d77357f06627c42e5e2567f8e878cb6b1239f9b2855e28f669d59e7afc63eba63973f6533f60eca48ee11912d8a801b05699cdd88a15b4f2d2d9183128e230d6238027a3f81a4d04fb0dde0dcdc7abe4a99e3e3c737d2cf5fd63997de66684d00f8eefa2427dc2f8a9d31a9ab3e2f7a6f376cb7ba1f8c7b7a6967dc1f9661f6b57fc31b3a5c168ed106b6aec259ed17a5c5ee0b80817f9c0bc26e35df4c0fd83393812945f6f54f892ec8ccf562bfd84c4229efa42b89b467396eb9ca6f762f038eaed74db7bbb2f1255f57c04191ba98d22d7a031298ef34b1ec76450035c75e731e59395d540bb78bc97ebaa978c674c4f134f3cf7817549a5ce8a5c82c66cc33d2bd207e5f8b0ef1b103f8930d0819d012f53cd5a70fa6cfb816bf78b48c5d00886771dc78f61ed873cff8adaf834a34ffb81f5f88467cc1a4ea3f1145eb44ff88d35e629cf85d3642a7bcaea74d10f457d56bd639f3dc9b3909a4adcfc309c39ec8dc1a6896f247644dd93c644b42817d04117cfa35c6a31e7ed3dfc93df39c6afc649abe4baa0b7c27366585fa8fc1fa8bd6ee1bb145f25f29df98d78fae7153c13f265190de2f1f9c68f8131ecc687f5263087e06dcd5cc0fc6fcead738c3a792b38b17461896e9268709711eef308ed12ea27f218488c3519c153e41d58785559f065ca1bd3eb8d9ec0add391033da2e73b9cfda575831a69903ef8f09d5e725f26cfc42fa03929689f2fe6f5ac3bffd286b51b2a7fc5182ec4da59767c4dfdeecc4f7da3754ef806680492c6616d3c51d9432ebc369aa34faec92123ae6705866b7a967cc33f8be6cf9f7bd2874074dd55713475b4db2e0727afe2e47dcd799c9b9d0e7bf8a1a5b1e8fc2bed30df3e7e8e288fe6fee09a7d10bc249bc8bac777069cffb2b629ebfc178769e537833e2d3d7bfe7df628f3d44e7ae2f83d5d7a0fcfc97f79dd71b418c9de806b64bfad65a20d9e0ce37f98de997bacdf19a34e3d34ca59aa80ceee459a1d049fffd6d72a0fbf588f3a6e36b33d7eeff0ba66bf5977954d447b2da8472b60ca6eceb7d6c5e789af092f8b7db273437ccf0b622b2d9cd7156904c73dc680bf334b9c7df35f5e9b97cf8ebfe479ad47e052ab8f2e6fcd3fc529af82b1d2e73ac1ef04e8390856ed24fc97a4688cb77c0c3c5792970bd3d3a0cfebb9d145451fa27e36d7e8e01a1739bdb6751f665f5eebce11ae7fefb6e63e1ec87b68c8198caf92dddebc1e75dfc3b51df1a7f94876c9e90f5caa0badd58d1f1e0d8fd6f4c3949cc3accb3983fe81534e2bff0a67a4dbfd3ef334ac50f84e6ee69878e0d0cdcf4291fef331139e22d599565dec4e18c974577e779ffb6477235e4f0bf39b235a8bac9f6c21a739897ee31b7116b3e516fa97cd98f7d3b8e535bb9d710c44bd0fbf7cda421be7cd16de08634ae8da4f79f6656c0f09fb7d7a7503bf28d63f9d6baa23a7cf89701f8533a2830fd131a91a0b3d6aaa6dee316e37a2bf237af9ec35c1f14ce1b5ec7fce3d3abff81faf99e2075e9b7e897e5576d67b390fbabde092037b1877f391cff2c394ebd1ab31fa0b73ae29d76bbad640fab7ff7e4d8367fb9a343f11d3fc37d7f4f641d744980d7bcafa2babf7c1352d867a3ce0d7bc0ad7f02fd6b89bf69e778b183a69057af05c6fa6ebb0cc75581f1c7b20375f5b3763c3f533d76dbfafffb0cf1439c707da3f5c9bd8d3a97fb14e537cf7ffd2fe1026cabefab7fd417c530d57abb0a7c0c2fd4a9ae0eff78bd1785a15a29d520fee71b0065478c29879eb2636f5de3fed057866677803531e42b97fde7339b8fe3e61cee4a3ac2be6b90c7003033d15ae81dda1de9b3d1fcbaf73ee30ad4567c8f8e3c7384f23db78d0e5f1f4d3fee71639bc39cde7ca5d5f83ebfdf659573dfecd9eb4f54d5d004fe0ec4dbe50cb9956041f326e772adca35ed57b669bf97aa03882f1bcf1c575088fede129fd4fd7ecdda9f4bac7d9d438df836df5c73109ee23a337317effee7e99a7d51cd3b9666f4d9b73b3023dd564d9e7497f980f73f2c50576977bc7843b66df19a3c9042feeb9591fcbe1999058c120f7fbfe5c4b47b6657236c611070be35df1536203c9a78fd04b72f5f2cfcfee0fdfebc5f2bcf87be7e4f58f9ac8836841e9f843b8ec8b733dd0bfa279febee13d27109daa0abaccd2ab246d1b9a13db50300ae25dc1788ed53bfa6a1e62b810b5d8d19de11a57c2237b94ba6724bd60651dd73ec5a7a1e867d7d0b44d9be3406bb7efcb6d2c60af7337444ee480e7395f4bee6cfa781370d64bb7127faebc1eec01d8bf8a09ea77ed01bd3dd1fe292be95d2ef54c3479816ff322f57fd0a70446a0e7264edee10de2557e7ae2e766383ce71c75a4ea792cf54ee844fa5c5ff4c1e5296cd130cce3919c0db605dd8de73ff7c36dc3a9d9f8213cd17c7c2e0863d1dfa7eb6e0d8eaf1c1df837e49c1b8dd1cb689c3ed6af5e055bb19e1e2e6b3256307f107da1b36b6aa477ea121b40fb21ceaa98ce2ad29e71ef343c89ceedd86888b3b6cd5bf24c7579e69b3fa9738fad607d85073fb4d1e3f372a7fffe75774fc4f3d3d16676f0ccbe67b1265a6a6f45e77279b76c85cfcf7e94a3e3d4e8bd1587fe4cdd95d04548a771d1f6398915a16f114e234bb019f188b8e99ccb74f7e0100e76767c956be4efeec6a035eb3e464da6c826d38b3942671abeef9c76f3917cd513a3ab588d1f7afd7378c384fb75af396247d63066b149dfa12ea4bf3e195cefe415df1fe473d75c6f45d7dbed21dbd17763b7b62ec78edf1f90ce1ff45e7f254fb5c9b337dd3362bfa173f25473ac7dd6d37a78a659e06059c78fb55c9f13bc726ed88f1bbc7323ac35e09cf42f89c98c2ea1f15802067ea90bf4fdcfa2f113b5e48b31477f7a9e893f866562a2db24879ef940172cbdd4050bb8b6c43ada382f4ea255f1b947839a34f7918aedb45a9a35febbd7e3e53a15f7678ed07a8e47c9b325f5d572b33371c94761e670eb49eda98f930e84af100d4fedb8fdda0a9a7fcbc39857253e01baedf9630ef8f47f8a4568fc63d1112eabffe25af33363ec33dfbfc2795892172562f5cae87080ffa9ab7165cefab4e763a3e656b04f1eef45f35030aa6f7ff37c92d176bac981ddd7ed6f532377e26be1c8c7062f78257ea9d7c9e8c7d9e8ed79b168149da50f57e4c2b3ae3f10ef123e5df8d97f735d557f5da7efae4bfa4fc5f206d75539499fcb1fbb3586fc83b1d3962575d705f7afe0edb40c7ff538c103eb61f7f3e377ba744dadeb620f7d1e7fda4f02ea1d56cf87af6b7e29bc8de698b3fefa11df797fe75b326fbfbb0e0fb14b90eddc01e64ece045fea36e1834ff7e72d0483762e655eff5ef75a200b83253c318e74ad52e18e70edb28b01cf9ff107e8174a6fa88f1bc224d75ee5c723f4854c5f24650dc5b9c19713ae87c6c056c2311a4d64ddec6ea11dbb12ad00d60933d77c0b4d21759a24c39e05ea2931efd5d53839b3a66622184f537b3ff4f8c96c705d46636d721dab2f31424ebd34673fad592b19ba86ddf8a0d6de6bc487433cfcc68757d4e7ebe87b1e660dd0df4663e1c9b4f23dc85173c10cc83d9bfe50407c0faf02fe67657a3a07375b86d237d925833e56b6dc4ea3be571a42638ab5af9b37f93bc52ea8252c39268fde13e99117b86f8df9c21a775dacf074d13be11ea2797de3c75bf37af7777df17ab069227891f5bd0cf093499b52f24dd1ac5d9d846ff85d8fa31e8e691c79e8358c1463049b1bc120c431b09d651e4adf76a74c4e753356c067d4ea63d083e9e20e37d8a06fbe12bde53f5ecbfeebb568df966b28ed3e6fbfd3dc8b8ad4b0b773307ef97ae9029b3e790127ca5bcb7c53d687f8d7a965687ad3116af779770eeafa2db104275de7835a0bfbc2e89b4b1e84a3a1c16a8f78ae04fa722cea7e4e9b3dc676332715dec52bc6705b810fa74fe40141bdc074291c88f8989e10ff703d648c3d64b938b7177b85528c5f8387e61cfbd32fe1b444e823a5e740f4c58ed2ef4a81954c6dd3abb9457c2335b6dfd4efd32df93ee8a611dd44f404e091c9be47c1dabf8106a3e0b4a996cb7bb5606051bff95fae2b715cefc1af2e3493b3d144783d8dc90b9d6e4f68c9c38ed7767d4a1ec5dbf587e8972718c75fe9ffc9589d26d30ddf9bc17556c075ad9cf0e932bf6f647ce268c4bca0954db1e93acb532bf9c3d8421bc1164e634ecff952d7f141a3df5e1ca1fdfc7695d1dc52c2475a44c1cde019c4cd2d342d73a9c5eb7fc02f10ed986029f5b78d6fb8680bbe7ef8cd8cf65ed5ddcb304e570727453e53ceb7e2c5dbcde1b6dbd71f665c1b78f897f962720ed656ed72cdb7de73d968b997a44be750de1024aa456e1e094e7097ecd2210797e2cfcf5a2e89d19c169d116dbc1fb22563d7d267c46b0a7beec8f0bd51836e810d3ac02b2ebe196078828d9f0683f78791e1b82ac9e7c46f2c8e050b26786ca3412898f184f318fe2e2fe1f7cd12e1125dc49287dbc1bc9fc17f42ee59e78f037c90b3157ecc9fc7ada8a7a873ad32684a30af5d3f0aff0bb1bb5f3e4f0c4e2d1b689325a3c9b464ad68ef4e01fba95b4bf0ec91aa24e6135d3d7d072e2b3050bf92c70374538dafc8e5e7ad20a8fde8f3e73d7df1b9da4ded17e21066b32dd69d85cfc477e24bc163d2e7a6e0792d1f7c3c17f12e166d29709f52d56ae499ac2be1c3f7b9081e05fb1123fe1ed4b23ecdd3689cc0cb273fc7f625df84ce86a360fc6b75c55ad6c0b6ac32a9bd1b2fee76ed2b3cbb7f06e3a913e4701aba9bf71ccba5bf4483542f43f8fab4766a6242ed2623fd795d7d98ebb57de441f1e7cfa6359e2774ffbcc88a455717ef9d88e6de3937f7b7e2786ba96f2ec7bbf5e4fa2b5c6f3f9eac2b5837fd5cfaf29e51fa9a65c3f55027ec27b275b1d7f0f3b5c66f19f6bf3b9feaaea1f4a6d1b72a2b1ff7fee51ab5d478979fe7402debfdf3679cad07cd887df2bc02b63bb4fab54467d497f1078f2d2da7fd7aa0fe5e6187f86d833560ec5e344e2f7bec4bf8f9f57e074e7d87d8e20acf6331e83fd81bc1db18acda61b4f1a5be435ac93134a317d0805d24c5d68bacf4779efd672c19ea60acff85dcb934bd20d451ac813e1ff21c6d0561d5c447ec6b5be10967ccb134fe3df0b05d24aabd4adaa6c7d19bbc26661d4bfc1def67bd4cc1c414c8ed6dee376f1ac178e1daf40be2fc17a3a9d5c7f97f8ff54ab3c9543852597689a9c21884c60b92bc272816b72416bfb581c92dd097d6fe15f69a73f27c90bdec6da019deebe7f3dedcc5cbb3412c1c27babd36fcec96f3b08dd1770f8d5703afa3a3b9ded4a23e3ce346c12517fef9c3b3edfd697ea55d1e0d3fe7e4f122563e6ed4b7f32e4cd4c132da7ed2e739b7aacff111a38b3e4471f4bee8cb900f03fdcddeb0afb2b711bf6568a06a4fbc8ebb9cf3000dc81fb6590fe7927547a81ed2cd8fedb4b4e12b931d727ed67486cd171678c4239373beeb0bcfad2034cf135e6d7ab43ff4eb67806b3ca76ff047120ec40e31955ad8c627e0dbfb87e6976846be24cff50a73e755496ee21fdcd252efe9e079527c506c81a19a00070c5dc901b78979a4b1cbb9617d178f127ede79d950be6e2bca0bd37928d8fa54743c2a3b61defa68afb9de7ac47bbaf5727055d39c659f1ee47f61a2ab778359b695ecaf6fc033ddf3faa61e718c7b67de00f37d3df2d0236c7bacd82722fe054dd17c70e606751339a5f8973f27c2055af4184cea47f1bc8496e94ab4c30bf43a1da3bf2eda76f3887080d423fa10bd58a935adc587544df6c67ffc1c8cfa189ae6c507b45d4fe953ed3de0eceaf755ac77de53ee299768ccdefb757e7dc2cdaeff1d377b848773b9998d3fe366e70b2b7e4d8d86a86dfcddfb5a1aed696fe925a7e7bedeedbf6a422de33b3c9fdf1bd1865892ee459ca8fa573a3bcc0deed812eeed9f70c7e37fc51d773118fc097e7fc11d9ff510777c31c6b8b725d5449bcfe7dbc57b9e885bbc0b7c39bb807365bdc8c6c4e45ad624e9946538ff7a8f9279640d30c8e281c83829b7c7266be36f115983bfcbf77479a3fa1bccf27ffb77ee7d321f8cef5d67e0699126dd043932edad233d35fe275d9e1913b71cbc8dff160f7d17245caf2eece98275b482ea7fc5439f0eb237bc648c0f7949ec4670479f621ddbf08a14d6522db8e8939c23f60bf0c6c22ff12a5fa1678e3855eb5f82494e81dfd8d8fe608fe431130ecb25af8db4e6191bacb78e82deb4e0dc36c21755ed7bccbdb340cfb6f087ac252e71d5523cc1da69cd6b2e5c37e939170ce7e3a7b8c5e04a4cedf06fe295713abb885768ef8d582fc4d427d796e8a775b18942dcf4714afdc08d9ae43dcd067505270c4ad63f71bbfbbbf3595773edaf06f58ff8575ab4bc2fe7e17431d753d23b7fdecf8698ea073f7d4d450b7d077cb1534e1fe0a710fbc4bbe233e6c9e5d773771a41fbcbe8609d43cc3d75163dfd1e572d7aa8cd08da4b4bc6717dc2df9e0ebfd9af28b692c7c9ef1e1b3df6c0817f97bd11efd5898afdb898a0468bb84ff697d1f859f0ccdde7584f7b223e4cd799f181fb09ae9ee0b2bbfd4b8baec396af7d0c0c71ecc7cf8673069d13fd61ae6b10cfe1bebc4d137ff458dfd6f0c7d6527b506ab4414fa5604e99d1aa427efc9e3cb582bfbdfe745de0a526237808b9abd1f6778f4998783cc7ebe96636f943ac7aa0fcb492676205bfcbc7cf9f57efe6b9e6257c0e622b79debe7ffead9431d68617b9b6c217e14a89efc18acf8dbbe4eb98be98b11c4dde81057baafef5daf5b7d7bea1eba173fc97892ffa6bff185ebbbcf7f3b56f2cd18cf2dfc5e78b6b2bd1587289cae81d067b608fbc24d7c823fc91f0c74b4bbc312601b0dcd637586e7b63912f17b0dc7bb77e9e7c7e4d3cb4bcda0f471b8351a8bbfb7967bf53f04fadf0aa7fbd7d17fcd9865f0f2a3f3cc57fec3f0ff85ba3fd7fc60748ff36c05e9fab11b4d2de935e937bdc5d8ff44faaa75a7ad2069fb9a6f5debac9b99e3e34f09ee17af04cb0d889558ed6cdd7fbde58e1476c7dc58b77736ac53d57f492fe1d2f5e1732eff5ef6fbe8ff621def7e2fb0bfc65be5df0b36daf50e3a09a3579b3f179bce2fd56b7ac0db0bac239f81fb0ddfabdf758ddcf44e77188ed4eacab4fd86effbfc2a3d7b40626acc34c3c37d69cee7fc376533b01aedaff2bac77ffacede986b5692e30ee59ef6bb5bae31e63c0b88c747d17fcf337bf61d6446985bf58cffb0db892749dfed5d80ed68d0adff01d0ebee3f9efbe63b0b654f89b3d8aaf04437ecf18f2f88e7bca3fc78c7bd48cc90f5efe720e7c779de455fc5fdcebe77964bb99c3fb683a2bfdbfc3db4f7a0ec0f398e649fe38c13c996c799ebc30afe07f9c2739691fdce03bfe8a57f0cd3c385cfd77cff0cbf886891aff4aace133ec790015349336163cb7ffe68c50b5c1b86767ee5fa4a8b965acf7c2b8fa67598bc62f986b9bc5049a9217cf24aebab5fbdd3568aa75848976170f26efe4b1220e86351e9c1f666e609c632bd995ef3d1760f2990b744d9e47a72ffbc719fbfe39d9f5676cdc9de1bdce3b6bbbec7e3a7fe40a802f6cb8027939e538c23ffe0d5740b4d735cea53807b7fb1c7fcf1d38a7efc020766bf82ab6faf84dcea6c13d1c70eddf7207e26fb90363d10038236ff8337780f6093a47bd8a7d2206dc8183b301a6b49b0f95e8987ee50e8cbfe30ee02c7457e7e0fe3f7107c07d262c196b5ae9db8d60f5067bdeda421c31f081aa1c78d29bbe82758c7a1e5f17a3526d0567bcf91ce93b88be26ff3de558a3852f86eda6d6f6adc8be3fab5137ffc45b88dd216fe10fe7b7072f262f59be583d966c0c8fd5e878f1dcb06f2656d0f317fe785fd131d9f5dff96d7cf179dcd48f1362b278d3e50a976312ca999ce5da079fc3d3a7618c11bb835a93b5118c5b614f1fcc9ca90f759f7fdd81cb2fb58b37c1e9333f3cbee175033e85fa9e4f31d807de93dd3fce377c8a57ee6169c3b9df78f59ff914d40ff9864ff187f937e43ddc728f68c0a7f870fe8a4ff1cdf3f9e67b89d733f8de4f7c0aa987d7d3755019ad087a7ee7dae83db18614fb7b5fd4e867d01529ea69ec08a6663286a64cef53b5d4a6eed2efe595f894e70f5ef8c5ab2d75da1574dc8ea6e6df7bc8cde367d239f26a3fb9d0d25bb77c1f0974485551738e5f042f5293eeaf15f54dd6c1710c664f7a0baadd419b31dd40bf91eb2bda427dd1f89533372d3827cfc7a5ece1d8a39c874b7f3a4d7116711c5033d4e9abf1197c32e37eff90a3075e182cd13bf081cb78247d85c36e6345039dc6205c9b5c7450bfcd5dd4c66cc17ef2be42bab2c36b498ee85dec92e75ae1dc72bef45d066353dae072d3395a99dec50658c22eded4171afcc162f00c4e5dcead55e0a14766fa296be07249174d70fc4e83b379f2867a293c63133b31b5eed84d46f0702ae41eb46800ec92e7a3d4ef06cf86eacf4fb40f62cdb3676e3fc6fc7d7dbc50524cc3dc17ee338c81a3808f8816efa204b8effaedf2b313d19c0963c19f814fb9122ebdc1280cb90e61770d47e63ad4c5375c8783701d2ae0332b7563dff99fb80e79f007ae03c59047e23acc8e1fa606b174c143ab57555b7dc34f99303fa501f669647f98786d879e63319e46a3b1e18974d7577571c2b29e463d9ee5bb6bf1be5e4bfd2d4f64a36ede079e0ff738b3654d9cba67491e8896efe86f381b1bf05dd6cb5ea721ce2f62da98bc5f771a9acef1fd909fd1dd53e4876eaa8e1f95e9df07ddb59f9386b4d397df3cb3319e992bb8f3eeb314432de32934aa8207ffc61ed49f3e92d3c7a93b5fe2e6c6e1b338fe9d0c383f1bc7f5169e4b717a3577bde177776390f5be722f46b78ef4de0467fdfff1dc73e20ff082827c9e9ae75dd3f39ed0dc7bf86eee51fd7830f71cfd31a82561cfd056f2549bda63d58dcdbc9bcffe29799c84a82379836779eeeea1a67aced1ea9f257d77779fe1c6f8155f49df9d7ba4f088d50571918381beefdb67adb75a0393738e81af241ff9fb44d5d82fdb50b487926560b4186e6d7f885d937fb301868dbc26c4e79735d949cf2ae07db3db5fa47e48cf2ade88a6b67373fe8bbc27287786371e8b17b1bec05358a83bb16745a21a5bbc411756f87e67f0986d08acd271b0f6bf8b5517cc1ba9a1c719bd03835fb2eee7bfe410acb5b1074f2b5dfb2fc05605fd7af93607625ed01ab855bd2caf4ceced40cb7d548a07dd906f747cf00d07c778d45573f3fad9bcee9bd7871ca0f7fef337efe9578ed0f0fb5fbef9bc7c7f5889b780d6bf1efc2f1ca067cc89ffebfc21f25c1e700dbb3524f5618e0df799f84765acf5683854df724df01cab46f77e0dbcb7a2ae1c9ecc3a35e74ffc928cc69ff612c35ffc74a66837cddbe966e75e9e51c4bd31f8b32bd573dfff67ee4dbf37fb96e9ad69cecfa576fcb7dc9b54ed07e361f65037327ee99ac7f9243c99c91e719eae9f27bde7a42558e608f5455b383de4333fc416c54bd7c49915f39d918b33e6acf723882fb9b4e7d68c79bc138f0b8adbf7143743871a3effb9f4257207fae44e38ad03f4f78dc6f125de40c31f807fcfb7bfc14efc66bdd1f8943c11f769703d4177ad4e3f8fea237a7911e91314edb4b8c4b13e09eeddf4d789977ed15fffd0dd5ccc437fe35fea726a275d61bce0855d734cbe347e37a877b4c7ecc4fe0c6be462d40b2ec637b1159dd55f6000817f609ff6bfc200d2de7fe0ba4ffc968cc68613d5fb197fe144d1b3802761b0f1e3537f6ddfe1506ad42aecde07726403bbcadec98c63d2cf88b72dd13a56676572ded2116daa0af89774647e57b8529f7f9770c63669f38267fee7df1d25fff177d9032ffcc01993c7c61be470ac542498c798f04a676dc6f23bad3e33877b9fb7c540fbaf5f73c55ece42bbaff3c89c0d96ecbdb9f5ebd63cefd4608f7bdcd1125cc29834d0b896713dc8893f44876bddfe5f1a8322fe9550cc6334e8e003153789c1801d04e31896b34968f03a8c315a102fe52bd6344c7470f505537a2e6f052313c3f343786b71237853f2ddfebf8cc3f98f5a83ff9123f70df635b8c4be766b67c23a9d4e38d58225628de54234ac74f6f7ef4f97e554ea315f7407099b2eb8f350c9750eeadb0b39d7bfe599311ec731fd57c1bdc20f5d8d8ef1001bcb58cde7add1fb8b45ef8fea7d0737d13f2dec3b3b895b99ffa2adc4096fbfbfbe013eeadfaf6f6c7414cfddbdd21e74d69ff0417781f825c72bc1b9f5dab6a58207995d709d7a943c4feeffcfc76de27c19131d88be05e92433be2914ffa15df2289af9816079a987962e532fe2f77fc67bfd59f391d67a24bd6570be2ca7101e0ef8901c6bc4d7c9f338c37b463db7507c29e85907e231900ff8a9957d835e43e4ac81ebccf39fa269a9eb66a869c99c1b689edccb67374d24f9fedf8ec1dfe95e128e21128f5a8cc18ff11fc6c04a9e52f10ab95fd8a2595d3f0eea415ec4fee7fffe5c8d2fc4a43f539d2ece63cde5bb427486ad2b196bbd2cff3cd6f4596d34a11e9a686cc69ab56a68ac1ffc3f8f75dd8ff5fb7f39d6ffbf9a6fb9150475135f9bb38473cabf59d367d90b6f6dd93bda95dce76ac81b72d2692c3ae6eac7fbf763101dffd731a8b51983f17f3b06dd67d35ed7eb3a391b2df9f8f62cf3595ffd793e4f1ccab174ef59c7f5295fbcf916b1255aa98185787529e3cc7557f4d01ccd6749a1df8cd70034e945075f7ca1a91ec6f848fa7b6a70804a72a305f585801b408ffe9e78f2d4976add5a857cadcb729af4be575ea2e2c7480ff8ea2af0f4738f7fe36beaf2e90fe6a015e8398da86f4031db03707adadb26c04c3ac913b4f59c2dc51454ef1fd1dc094a2f9d8313c7b1931db2e66ec13cc2b4085fc50b88e3157d5700978b7a55018cf9161c9e4735a51ca485a7e273d43077a0d4ff1096b96c19dfa8f1f9811fc69c79c4173ca9adcc8be4b24710568f07c1ad9d45e736775e3ebeea5cd95be057af22e47c6a697ce4170f4fcc3f4d9cf43f78b1b4fdef2c93d7be77ae07baebedbbbc2773fe7995fcbf122d59753809af68dd5ce8ea8806f87d753a186fb4611e585a3776057e6a75f959d12c75b3c27a158fbef5ecf8b9e7ba60bd0bca45e36e7d720fb93c0fc67a4ebd13c68e006366fce524bff192a2de499d71cd73f53659de1c8735c15ca5326e63336e79f5d1f7e86337a37a126bd4c017cb4f96c0a3e8e035939e4c235efb2fafe6f9e781d1efcab92f708d7109f46e4bfb57ea07e2a17888e18d535aa178445ddff6d8c105c79013e152efebe6828f7dcf75befdb4ea3d23e6a2cf91b26fa99f2cd392af3db611df2f6bf81be7c5f174c90da9edc8f8f504c7be2e6477b1b5f4b0df799fd61c335aed8bec49d2c3cc9cda07de42c6d02b5bd6bb58e52de6f0e4578ddead72226bf89c52e2c9db6eaaf6aca5a45ed85f8c35f2b896f3c4b8233327478cff5eab705443a35a34cba4df185be01dabc3f9aee7b6b789aa0d47acb44d8dc31ef8d1318ec2d1c60f9fbd3cd8cbb7b2c29735cef88d1f926e1261bd726d816fae17f3a0dbfb5631d68b129d38f19fb4182bad66f695d97f7625ae41ff12afc0fe1ac8139fd6c81afaed0f4de82d6607c22918bd357899573277ce11b04675d47b51f9762d7e459ca35e19bff5b9784d98f7c49b5efbdb36bfb30b2dec8b8bd2867fba2535d3886beecb604acf6fe94eb3656a71ad478715ed73e4d5fd7b2535e9679e37f95c897ea4ae777c2da92e1db9ded5727bf1bb59b77f36e12bbc79dd129e38a9f6b926aa5f8e77a867454de84223fc7dd318dd910fba3feac54fe00318df4243fc45ea2979f6714ac8eb3f7cadc4af86b07054bb98f6da0894ff8f6ba9fb15966d745fe15b093c063473da29f783f7c6ef3a054fae428fa62c268acfc2317c2702cb60050278dd9f26b6f4fab846b79f7ef32c3df5f4137e4671889e94bbf0c2fb441d6e1157b5b54e86f379ce3111ea9267f0197368172ecb29f406eee376453adfe0248b1efecbc023eada5c77f7de6e9f780227bcd036731e83f4a155929316867347677c7c9d509eaf6f06da3c7e39db069ff7bc8d7863d2776857835ba7fc837813b5911efe0ee98b8c1283a357c74fd74af59b8ce7cc1fbe83aef514193c10c554a7e41c6f516301d7607c8815e200d6f20df22ec6d169b2c679502e454b62b24bb3639ae4ee141cd4c7242fd537eb98f7ac5cb83bd0d62c02f4cf629ca9fa2df55c604e14ad2bf2987a2ae559b7b1938a2fd42b3895a23bf4524aade32cfb65b08d97d8a3949ee13e71ed7adfdda7b682fb85153aa8971f92a758f6b9f53773342c297e48bfdb8b3c45ebb3157ffc7dddc85adc8f8c9730697b4acd16f3a48b85857307ceb2f1b95ec24bd90a0e85e8c8db9fd69ee21ae8ba09e7c36bea3e7f8bf3e64edd58e6790cd64ee994cc8d58961e781c17af57e05b67d941f2ee6d6dff610d72fd6b0ddd2b3aa3d3d97e2a3a2f85d4e0f83c638edc8e72125adb712b7ddf317958a6792deb97b9bcaaf7315e9106a2603cba3d85b45c42d2ae135d99735aa08ff45e338f21d8f837bc1f33e686e725f6b25cbce2473723cd7ccaf6eb9844e3e42995fb4ee3a59907b2cf87957f6361adcb7c4a1355077fdafbc8bf1331c0bf3fa76e2f4e459b6bf8dbfffa6cbb7d713d2f3d787c9c6ae6d878d08725ed17191fec8bbfbedc63d0e53f5fae2d24fd813f9fcf7d8fff2cf1437f761a9c91c9376caa35664d7b2db19fc4f0596efc9d96d1199a84aa214d423a1f9775c1fa6d476fb34bb1e6c58bf7ebfbd2d17e6ade670163343a20d6af57c875de855ba48ab1e0d3638a694712d39a5c29afd97fd9d5a32dc6cef0ccee1f721767ff96ef8de33daa0b73bdbefb4daa458dcc199ed7723d5706a743d73ce8073aa170fd177773ae0d502f0c7d47a97147cbf493d6733302e7cd8d9c56c6f3aae47a46b00196be5631e999564d1cae09dbd1bac992b5339362efd5cede785b471ce7bbe9b9d4d29702072cec7f431f4ad4fbc0db5f6cc493f5cb6bf1097c622f29c652830d36235c07f47f32c7fdee35996fe583677efb55be3f1f1dfbcf08f661b4f51167bbd5cc5cd3d15c1372f2eaf9dbd7ba9878cef5f4fde9ff61efcfda1445b63f50f82b31a4f5949785804a4a980c1120770c3e650a0e999aa9f2e9df87586b05686675f7debbdfff3917e7aabb526508828835fc06f2090d53898f600167e8f5e7d683dfb788d7b0b18f5857fd7975fa8cfafd450dd82e386e85b80b9600879330d083e372aa23b88bc1711f3ef34d35c669a8c604f0450de1f0ac087051df7d6633e2656beee3f579105382efdef79fc9de0a71c020f6d6ad434cf5cfad9b604fefd6e55025e2cb96a246cc8058627dd7c0dfa46bfe24e3e785e6fd18fead5bdf125bb0aff3556a9f49fe368d4d361967d8dfa13e72ba74f018d3e3f29b39df1de30c78653cc674930fee4f1ee319341667d9eefadd31d0dba692e319b66c827bfd823cbb97a463a8d5a79c1fad403b2a7f545637fdbf0507ec959ed9a4e7d1c5157c82bd28ac9b619cfda6f8d0c8ab071cdf8a7a2b0df686de831a6a33f877c9df440ee989bc0df1b354ea0a769f19ea6fd05305bcfd893c34ef8fc586e78563485fa36fced97f2f036d81fe3a98f670ceee18a0b5d56b79f6f54e19fbe0672f7d4c093a7115f9d87e19c36a32f0aa955ad0788c3d6a01003e53c62a800f10e0a52bc771f57aaf45ba92fa60746c26ef05e6fb46fd5ec6fa11701af3fe7c703f9027ac1e3451bbdc843fe013e2808b55d073e1255eb570e62de2debc856df95daec9dc7a588325ef60a89b68477ba0336bc78eea4377efb24f3815a893292d1719d3ff3bdf3d5bd1179fd67075bfcf354f25d5e5c06f77162415fad4cbdac437ffbd5a4b417d7a817a7ce327ace91e82ade7530d4e289f2ac28d9d3e39acf3a9ef22575d723ed467b3809ff4705ac598fb503c178327c61838faa4bb3cfc7c0b9f83efb6c4a4bc535c1c43ee19c8fddf714fe1d7fed1ed4e93c73c4e8add68728f4b442e5eea928fffa694be0cb24e89fc415cfbc96393377bf4b1b6b8b1d907840f41fe49ae709fa4c1a30db02ffe67b07731c776a98614e753d437e6848798bfd339b0f6d6ed853bb82f76a0cf06b86516f02a5a288db12eee0ef73968aabb817c27426bed62ffb0ed754642ad7bdf91b32335a6c4109bd3bd03e8177c6acb076e35f210bcd2c0314bdc1b9ed38ad0eb3944bdb91ce3e8286968cc6288af7a7de1d0d00f8a9fe7f2414f08f04661349e94a81bb432c3bbf1a5ba2cf9ff72e378ff6cda0aea9a3adc6b8ebc946cdae0b317d6c29573e94742fe82f7ba6357e223143ae4753ed6f53247f9bbc23837ffcb38379f547b29942efcdd5c923946c25d27903eedc04d00ae882bf924e1ee3aa90462cce41aa27f045b17fb82e300f975ef099c671bdc69fd8e95c739e035428f743296e2b7f44bf54943f2eebcc28a6297bc8e35c0a7c8b5eb2fd69dbbffcee43380313891ef0087ba0d2f12dce713b1440c2de98f8c82ddf1487d84c2144af7d897393a5c0fa31c18e2aeb760cb7595636cd17f04f6bf6e5f93fc1ec8e3a84607da3eb109dae4518d7ede9aabae3536492bf57c225e8bac133842e98b31cda3ef2bfdda2ff7467979af59feb24cc6742f177697cf4beca5e42d30cc0f306e470d64c414ea9685b9aabc47fe3ad4c3122bd4ef22af9533ea26bf07fb0dd45cd2ec1ea3a8653ff25af13c91673c47dc34d5761ddaff9556d250cb07d655a91d36d0d39658c15e63d938b5546b27dc31add53ee49f124f01fe280dea3ab30943cd17bff60eaaa61c8788ed941a443d3f1372a14965600f158f4b7c6fc2c6634c0b71b221bdcad3808b698e759ca17768b7de912f9c3c66ebda940f3cac0b36bc87bae2a65406e91e120e1b7399a49a505f843c6942e517289fcd1be949621fc4ced0970dd7b86080ff7039c6d888155facb799caa3516b08d70ff623d8678adb5c99384e10afb880330863f2f55bcfee38bc36cea5057c7e56b9fd3a25ccda7992bbc095c4be941d254d0e7d096784d890b0047e66f71c737ccf32fa7dd5a00ea809bab2617245cc428d3e42ee4bb787a0367c14c49b64508b95792e136acfe9febd24dd7478cf47d660cdb6639c1b7ff7dd4873dd7886395de2de488f1aafed09ffbdc99b03f68ae45c9e45747ce5737e46cd7696e70df610b50bc4b74695133773edae06d725716d83f33577d7b576c20ff2f0f635f4b3331a882713a63d6a509366225c93d434b17df45c885bc481f2d2e8e274d0bebae6b84fb4d41f5d4e3713cc23de83dd083f1f83ae7dcc1caa55debd4b88cd1052134f9c0283fc7e1ff69f96f61f765cbd529c6ae53d3f09f426b19f2ffc5aa3f7eca8f8ab748f721e35d863195b8138ea50a3393f57a4492d63efc60a74c03797ceddbef80ebc27ea01c8bfc5ddde106cb3cd70decb981fe29c4ba09e7b855a8dcca27711d60d6645464035e4970ad6369bcfc4e4bb31098deba4c4982c4e590dfe1dae19ecbdbc1bf3ca998ffa73d233440e3d69ddc55944389788bb9f121b017b116a7fb8f17a46f759114e6284bd60996b22c68805dcf519f55135d84b428e5a5fa08768630dd48df60df6d1d4be84fb6433a9e07d917d66a8a956b9da67e5bfc343ef1787d8a86403fa1352d35f72d58ea4dbb61607398e01c462737c2fe2dcb9c03aae877b5c47e2506a6a318e39470c1a81550239279b63ffeb1223f6a5408f20aed5b01f2266806b27d98f291cfe88ed1861fc74533e2b338bf02de61af23b3788ce11fecd1efe3772dc43a6b80015e9e35a5174761ede47993b671ae80731ee59feb4a13c2c7a18eb99af7af8631339fb23c4307c04fb0dea26febc44187783a7827bc51afb25d8565fbf03b1c1299c31884b533629a672fff3c0dfd1bda9f969e8a0a7a85b53eac3132e9adfced3c763e31eff52a0874b925a01e84236b68ffe02f2982eaccd840b2b10d328607fd482dd7143b89115e8a905c5d4ffba4ee9257230a12f1b1a47a7203d4193cdb0ff45fb518aefc91b6a4ebf1489237d807dce3ee86fbe031ab3a1066b0c6fa9bf77ba70d99b634fc1d6cdbf197b4ff63248d7b4f5a2c594593c0d27c5ee68dfe7c1ce10c382b87ef710ec2baaf5f7d7615c0853b5c55af78fc0fce3f78087905c496beb474139902988eb98815e58253d657a2f862ffc415bfcf97afe741e1be7d05fddcbacf77b250d37ccd1f1fcd15fdedf99ea0c976fcfa149bc8a9d443897b6cd977700798a1057a6e164417353edfd15e41546037b58cc26ddbaf4f01d89350845f646f14e61289d6d57f271f6d6e6cbb9e1bae43a119ae16479b79f4b4e26e976d01a698964e453bc81be995931bd42dd417aaf481d9123e4b1e2f919f085523b6f757f2cbba8bd1f8459a01844e939e8ab11617bd5676db6917b202f21f7de5de3610c11e8d6e231e660bb2ee6907880d39773b59b036244bbebfba0cfa5c6362fdbd0a175620ceb846e5dbebe9bf5a027d2edeff48c699d94bd90ab3c87e33da186de4b85fad161eba3ce337b0b76fa4dededf79f836730ea3b84c966b230be8995eef28ec68aba3818f6ce77e0f44add09883f94ee44439e06b30c7bc922f508a78b3908790a9cd5fa4358607c8f8fe8133f430d0327d98d90a3dcdcc2c13dc97867da84bd26b76e05c2ba907f6029488b0ae24f3ef312eae5081a27833c20c09323a61c5c3e1b7db9e6ca970f792f2ca07d384cc6108f6bd98fafcf126a00626bb9c8c1d163c0bc2a7f2c98a31b8e5e4cb6f20fb9a146a8609f3836702fc02383bc737fc45aaa381067515d574a9c6ed0ff15e42343f712219f79cffcbed67796ef2dc3efc43169008da7e443cb27030d4fe0e010d69f7ca0142f8535bf508f7205f81a6daee1bd8802f1f742fa329dad20116fa8598f5e08e2476036787fd545edcdc618e79220dc89c78cc7fc06ebacfca7417abba52b35c967451df41e0c58ff1b1c13f78aea4c79e2dab9c87e18e52fdc260f45f154216e28dcfda4185a30f2214a37d83f662ee65c9f2a0ffe76ec2b2b14788ee995f8f86d055c6857ccb8fee51c31a3f37a396163f4a3169177a699f535ea5e07e6cb67e0033e3772a54b2aefcbab1c4f3d2ff4d6a869bdc17ba2188efc3e48d353d03c23df9b25573cd1615dfd2c06fd1ea9054931e06eec62ad495b7de50f7d0aa52908e3e36bec1d6b0f2fc83db20aeeb5b1f20dc139fd075f9eb513a8f9fbf0fe5a3cf65027f27c12f2fd6546b0b7e683382eedf26ec4f62f0ae7d2c5e269defbf0ded53d49772944cf77795dfa2fe45dbb18576befa08bd910bed05b267ffaaebe473da027e84536d6e2cb3b7182fad0fea87ab84aef39224d18c08b931f73941ecf0a8b6df4586dd20945ef133b48ce129b1c6aee478618c735aca53c885d97eaa130071f7b42fa2dd8376f84632a09df676e4e4a4b77fb9be62de2357e221724b4b04e390db8fc9d1dc50deac14bce927c9ee4a53d589f50a7107d0a046069504fdf2eebf096a35edd6a8b7eb38ff16dbc214c9758a688f134c3496992e7a74b9e502f8c3e37b277c214677143b1c60fd2455ee37e506a5207dd257d6fd01d0830ef92758be7cc204d080bd78a3179c790b7cc27dd7fb7b743cd32c39aa53f0af681d6fb4382b731db055f62802ee6076f7af64a1a7b0cdf39a631da67a95ef792ef3076d38fc742718cc6afb47f10af33c3799fa4f23a42e921dffe465d5ce712ec37ca1b8a013e7b5639cca49e5dc93d173dcc260cea547690626ef5e7b9ede60edb075ffa7bce88bcf5fd446919604fadbb2ed4f0965a41bf07f838a92b798578bcf7b6012d7679ed47d0a9f6afc1fe9b6b8b1bc40c38d715f9fd1a806d8c8cabc3b4afb5605f03bdded2996b88376ab0efb1abdcc777879eede69f3edbcf1cae6db1ae7d3dfc3eff40bd2d76c438f212b4d5d73525458f177333a15edf607ff6088384b84233feba3768e8cb20405744e61436e87b3c9e8b3499dcf76037b61ff39285ec81f47eec3e0fdb6cf2e57c27c402a48a7386dcd930766da638718ff7e05eb147524bacbbaca5aea08ee6f0ef7fa3af46b48fb226e8f68a05e01cc35ceae1c97daafef2bc0aa8e7ba3ef7cec11ff72af2f1a398cd6d579893649a6764e4054038f6bb9849b742d3720bf4341dd48e0ec1ae49b196fb26ba6b4d3653b1a35a31d41e39779f0bc76ba91758b972afd3c37deff7b322decd3e6b709d1c617d8955e0af6217c4b34cab1a6a7a873bfdbf64bfc1bf8f75b81f41da6d46b03f626cfdf396493f7e66f9063d07af410d0ef2093410f7bc823e77a6787a99fe5b8e7566d33efff38ad7293f03be75031859ddc2eb402e8f910dfb632ec77e357a2459023c000143aa3416c4336219d147e74c5868a8f5a4cd643d9d2b9c108c4ff3fa5dcd2ed0dc8fc2416da644ead57dd31f75516f9f5d30d7b256d1f8f5beaf5bdd803bc6a96f863ee7eecedf42dfa6db0fe36eff8d9bfaeb7b99f5582989cdd8d88a3ff14d7d1875bea43f66447b263fdf8a3fe8b057327f95ebac819a8ff6daf13ef1ded1e7586a0cd1b5834e590df1f32a0db754e7855e3a60f962984b27552b349b5caee7bac24aa6396960a447ea3b8c409b451c02a3a25edb01f3e405c51e188bccf23d72275a7752121e24b6263e705bddca995f69afe3b1853d05164591ba9759c01b23402e6ca6cdfb356d5fd530ff9a4b266b8ca51e98a2c17715fde3ae8e6fd09ee099c8edc8aa1d47ddc6662bf132e9d1e9f78efe7b31c42c21e41afc1379749b103573320e739cf4d0d113c9ce48130c3e7f45ff8e1de8d9d01c751be849b21dd47485857bd116e7708dffde20a7869396ed606e7b5dde1898de0e9f8f8ef150e84f515b4293633753713a7a1ee6dc7b43cd32a58f44f10dd57a9209c6d9d00732339aa34943b8e16ecf9f0d625d4faea3ad45bedc6db0ad2e58574e0a8e1edbb1ecc778e06dc155be5691a62e1f3fad9567037d97bd85332b7ad8f7166bd28ed511eb66623f8173ad228ff55898ea1c2969e18ccfc891497d7ac73897f921fca6224eb5ebefae145fb5f4de8571489e4e211bfcbefb5c6a9ea22f9a482e37ec412f7b3c4025cf8f5ce0b8c05e6c248fd75c82d6fb11903fecb6c9c14fcea2fda55d29ce5db8bdefd535b79ef305cfb46889e33f7e271d92deff37931896d8384a4da4b8ee7f1fa5cd08f095e279bda7fe61d3bd7fded0435dd66a67618d9f8fd688411437e9e1d2adf539f63c157e83d9a41dc30c9c83ca2b6e811833ae7a2f0a57b72b20ffb1b8493921ace1d203b77b8f6bf7a19623dcfedf52074bc37a8af0b1ce14a3a739f92289fd11f8a0f166c252c495888dd4f686ba01cc0f01399c5d3afe0de7097aa18bee7d4a09ff121a47e52187fabf369f3cde9bbb58e3bb31b86faa475d482b03b0170df874d1f78d23ac75da8a741b9cc7e79d4fc14f725d7b5803443d792378ffd2cf6e91bba55d5ad2f22b11039b6db3e6719f2e1cef86eb5350800eb5e53bf311c447fc1aec9badeab5efe47166d9ee883d3ff71841ad813fae3da0055c71bf96b5623577d609f5fcbc1fabdb7dcfefafe6ce12dfdb24f6b08674f87aef887159457fe8839ad6a4c2da638c1ad0d9e44b8f9074dd37a4778de7616ba9e3dd3dabdfe07720b211eefb7636d56bea1f9688ed1012db2efbc837c08cb25daf79a3700e4fbd87cb9974255935555804181be0c03d41aec634a5bd2d6ac40d8d32ac53cb98705dcf6febfaaebfda9d9fe7e4af25d8bb5f2b7dc53dd52e07fb4ae223a6916bb25625fdd7ff6ecc9f61bf72cbdaa3f8b55b73a4de5ea5793788d51b4df911a25e4ace3d8aebd0a717e344f55fc7c8b0471ce21a563a41dfc78bbd89d4c4488f13e45aac7c0362f425f6cc13c741fd15d26c64708d7a087822c134acafcc423c4695bad883dad05a62918615ae1b31edef4104f96cb587df44c2d330678cf3d6235d0f17fbcd53ac0dd8be4e319407fa34317e37399217a5d42d1192773d3750e72484f5adb222713c1635ed6b4daefc3d2096bc05db0dc67f6286eb2aedb1d70473f025f477edaaf69003ecba8cbc2d5adc3ff45f17ac73bacb6443de3f23a869b2a04c10031b63cec54f238c85027f47d7576d90af8fb562e1af9315cd01c479950aab885e485dfedffc797e809731eecf0a3381fcee17f2d4c0e71512ef4df29f76bc0da7c1035ec4b904af63789f24f7b889a50e06bc83cb7bccd31fd70df2837e593bd02f8b53c28ac8381c7d1140d78873578f6796ebe318c6d1b921edc755178bd7f34fca4133f4b912b7eb2688bd38275dfa18b92389b8c17362abc58cc99815d6ad1a73326f4beb12ae0156128ba76ffcef53997bc15ae315cdefa156bbac272f0943166f84cc3f8ce384fec6bb67adfadb92a769a097bb166c3de9951c25a349867a0a19e53afaef53a975d72bf194e801e17a25ce211ecf89a79f31150f6ae8bb79f4809b461e8ecd4732196af503471ee7045bba5ceaabe7f59cfe163203f2bc5873486754d6c5c2349cf83b994b8a8a788f4683fca7f19baf3c554feda39e43b175a98f68409e05bec0d10c755393d1a434a8f7e8806e00e433ef5887092be2d8098953b2d70e432d75d25497d7ebe63579dec371624d623b407ba8cda08706fa054e901c7ff4dc65b5d6c2fe350ba986f3450b866a333c7608df483d9f2e4ee93f4fe531643e5925cd04f4759cf71cfb4cc3cf09cf1b45d0e7ebde695afffa6b73b582136f87344c2b19374602f539da0d6a5f57e4bff3499e48b18c89b339d60e4e4a9b23b9faeabd55da908d15994aa715631d75ccabdf1f53fcc7c784b5c244cf0206ef27ea961afa1c6b9d1fd104fbe01cdf3d63341ff8ce5b51d27d57d6c46cb6a33a21f09812f9ccbb775f7ad911de0bfe26753de55ceefe16c3f798fc5bc6dd5974af43b40ff607c47ff4f15a39c5fa0a77d15b25b4d689aed65ff959b787613d2242ec9cdf6ea8d642f59337f48379298c3e1f945e22b1871e0525690acee0bcba1592e67072b4fde9e6ab3794d4d2975c39ddc7da4b026b5ca2cec3c505b515bafde728b0cf51202e244c653f7d217d556f7def224a305e37296779ecbd5867cc9b333fc1f79a340178fdce299f6d499f821938af49bb81f832de9a7e0fcf0b35c84410424f2f65c83d0eb8308957cdcdec8cd71b67eabcfa5bf687f34a5d65271c15bcaf03869abb60e4bd728f4b9cdd71948ddf4ab3f8b9853c77c0517ecfeefcd3697f163fc0e3b9bcd25eef4fb1d78dfd4eca5519fa60e71af538dcc9b35e227e9ad19a650aeac136cec0f3831d0293294f01d1f76953a5addcc53d0efb40cde79871ea6978e760a829675c6d86bd3f9e6c56544b2cb41ace975a1efd2dc7b508cee7b72161528dabfa9dc486a8b1f547818acd25360feb648d18f868d8b9c3deb0c628d6a8ab9d699e2e543c21e4dee7e37c1471dff7a8f415e950434db5a53e85f848545dae49a0fe0c1c9fc209dfd6cab7f574218e3edb293ff30be4a9d521307f2b5f1c592398ca3a2fe4573a7292f721d4fe11432ca0e76da3864884315333e807cfd6cebcd79b6e57148fc4fd77bb31837c234abdc9da56dadbb297299f03e29ca94e9b4cd1ef38454c82005fc330ddd8e556fdfec977947fcc2ce0e27519abcf2e3ef22c440c3a14619269a536182bb9e657fc0ecb2baa37867a22b9d3eb98ada4dec74f8c1bfa77026b45713955efc4cba0d607bd338a0b62366189f2e2383edfbdbb183f411ea72b3d74a37ea7b80f3f5ff8c4053219e6feccfe36e696eb6b63855a732a20f6990769451eb9cc373879716c088b4efb7e0cfa70328fe9f5e1c6521f4eea5cd54c277db215e8cda1374c43b5b2f38afcf927e8452fd8b5d7c2933da950f285ccf21daf496a4a8702f1c1a6f5f987f8c654f57c73f309e716b9f4c885b58bf001cab329361a3ad64b4e9eafc6c81efce6843da79e57606c48a7281cacd147e2e3c171742b4c468ef4b8edc65abfd7bee390a32f7a1d0ea509f1b2244ee1edfc8acf6b92138ef76fb4e1219f6830d7f2f59cb879edaf2bf0b1955786d4da8fa017f51c454a7337863e62887d268c51f515689572d28bac02c4d55a0b03c6324936745eda0fa13fbd254e0eb318e6f6c2e8bf8bdc42267d1e358762334ff90de847acddfe249eb417f0e6b532948eb3fc2ec45cec437a370c34a8f1ef97a1f6f47fad4dac0dfb36c00393ebfb001f8a38bc9752e5c773c403baefe0c9ab5b3cf51cf29cca6b751fefc8f7469cbdaab150dd03f98a3ee2808587fc493b8800671639ee9ef0e16b17757d300febf603a84dc1bc8ae43a30ee7b68e288354839ce2fa0f3967d043bc43062dc16ceb2c9b376917908a77c417993fdfeecf75ee595622bfe43743ed2bab59cc2dccc7a4d004f695322b6b070486bef087c1faedd481316f953b81736c827f686fc276b25c7a542ed066145714538d3238ed33ed85b84117a299323f6cec817a36e557e683ab81e318e396a9bd09a99405f3ede1d949eb7bf65a477035a02fad1c09ef762493575594796f5a5fb1ab1e9a91a12d42fa50698f450eceb2a327ffdd1ad79027469106b581bf1a4dbc3f82868d5df2e88f7b34243ff241e2a6be91a079fb7d51b727332c85d2b1943e535628c93b38bbd6e8df42951e3fe0d354bdc2069a89792f95827884d79dc30e00de121284fd9165bc461903798704fca2b3e3a53ade093785761bc419c6025bdef4bee494fa6471d56df505ac21aed6119275c1e62d1600e3b41347ea23590216635e0e7918f6b34c4849cb48217ebadf73ffabd89bff57b0bc16b8aead6a03f82188a15e03a6af2d37836f05925cdc4d771edd1bc0b789a0b4379c075cfd4edf2bfe3916a2c83fdf9825e1231d57eb04e65e78e6fd25a85b99719eca1075439dec0ffee6caa182b69505f871d480f75a5a13eb619dce09ac421d0c8e3aabee1dc140cf6483bebfd03175517fbf6be1736f42bdc5d91e0daae39ad5f3ffafad54f848f5d917efeeb983479d31cf6153bde866f81e2e31d6ecacfc5f6d05b871901bc7f761497f839b3f296fa6ae2962b5daae3cba0b6632f48ff14e251af9f5f27adbb5ec9c731e67a7fed726cceca371eea336fa4f5d7bf838ee9f79aafe00f4c7e61700ce53d1f6beecce7ea1c2e9f28cfae7e6ca146a193cf853f233d3c26af33c6fa3d72ce6f8ac7bb3bdfbf67c8911dfa58325a5b4d57f5e6505f28206f0cc4a9bc0ebc142f3ef96bc4d591d669363da21753f6c347ec929a432ad669942e73a9b081d03f22ae5f6cf6cfd9b7c9ef03fbe5b06ecd948fa1f693f663d9ffe4e825c7ebe6877a6ee0011a777973ef013ab807c49964e49b3698670f73db15bb863801d67aeb9177d3d1d70853f07bf81e3188e9a0a604cf54e5fdef3e6a56c5a48b02ebd36b61333aaeeea30f6f3c5b29cfabc1985c7d4ef7c8079ac0109771f483eaaea752ebd5d1f0c9dfc918ebeadd92386276519af0c698f267437d672b888b7ce8bdd3e431c0b307ee97abdf6aee87affcfc7e914f8c58239e34db3db5df3e67a54f525e4913ce477e57af1b4cf99d7b0df61962e624d725fccef733e1ee4cecb03f295caae9deb2e8613f6cb36e2c32e8615756981e6d5f71cb60ce48cdf4b6228d3b5a93e5bc5cd03c302bccb3b056a335b787b190e7e88f7d3e77f31574f736ab017ed10a6fe754ae2be69faec5b92a6fb1d8438d24f729990ce743f92ee0fd7b237d09f4f0e9e69fdc3b4ba541df9c94779bc95bf436537e82d576303f019f3a237e4804356c59bf045d6dc547d882cefec62a76a8696f909e7a75aa4087c1cea66793f2c89c9347e951c6e5a138e89083b0e99a7ce4857bede30f37c7dcf5847d37c1a6d42b13e8eba6bf639d38ab14ae063f33464e25357ceeeecd0e67ab7e9eaabe876b121f71651c3187e53afa2779eafab8a681d603f8208671e5ac77aaae20cf91a19669c8dd59e178869a2730f65b590fea63289853dd33e6e3a77e4ec93e92d4f602ae47bfe7777b4c17b3638fe5a0e6251ce3c7c331a48ed877c750b829e3fc708c9fd77f728c6e6efbd85fcb6bef49ad43145fa4d673ee0423c208e41a60d324ae33ad9e956774bce9fd88669513f0a6c61e91b798b12e96402f39ff8a5a174d29c75cee85a3754d5e2ad09f8ee2e04658c972aa780f2de282fd203de2ba5119184bb8c9f43c1fc412efa1389c62cd3143a721fd80b4d861eca76f748a4104d4a3831275d5a3843888da3b6a1fd862273d04e59e5418a43ba5ef512fdc16b68bf8848ab83f2cd7a54fb51b93478360d02f11a599918fde2ec0fc8d0daf47f2dbcaadc292ca3d05b045f32bee07e112fd3fa4cf62b221dcc30b7023ab09f4b01b2b4cbd498e98791e870a9718d1de05787b3baffd27c23b12576fb515af942746e023dad7936ee349897c181ac36a8f35570e75e7686621f6aabcada99f949246bf76819e931be7a01368af9db989b9e28c744407dfbfa9ef0bfa3ecc5988439a1dd6986e21e10a1ce82b09a3823a4aeb4ef2295c736836f697efd7f8fd1b7af9b4ee44f5ed62c40173cd8067e4506c7c0b76571aa7a708d67833d86eb8dc1fe3ca66096120321c7f767b1cff259fff8be35f1d294fe5b7713dccf5a3387c255c9eac7d7463d17af037e17f66aa6e207b391abc3b4ceb79e9a5b1a27dd6a07e3ef20011775539dea9c4391b9a2ec5057ff1fdfeb96786fff7d76dab7976a3dcfaafbeaf9eb9a16fffe23e17a0a9a3cb980cf11b01695f424ee943cc26eb278dec69ca9c97c31c49002313425cc93f833deace495c8cc455189837660c7b26dc188137a2e94daa84f00a21f1742f99cc0baa1fc16e8cbd00a8f9847b8fb4bf9eb0b713164e2075182bc7a335e72d41acb6c4dcca58e6081ac2e671c24cd21921afde50e9b9210774a774df770d617c085b4dd8323867cd34ecbf794597c3000ec6a4bd838127c9ac74bc36fb27c7d4ee8f59a99e5b75a29e7eb71f08d8a39f70fd6484c5aba407967cd770fd38631ed6283c6769abdad388616f30368eae8c274475c475c15b46e347bf15266b1c88b1edc65de696e931a5585fd6c2705ec4101bbb01977863c4fef80a8f58920e621a62cfc3a31e3a712fe53c15e0171d297f90387b836b6056a5f410b527d2f212e90631c96793431c3e82fdc319055bc5f963f279414e6b224774c11ae8a9974ea0fe9699e8a7235c8dd1de9f12beb636f2da1ff833ba8ba5bbc2f8798eda22ec29301107d37f7f26b615e9477845ebd96a0f234ead602dbffd37d7203e429b8eadf23c939e75aecdf52f634f1e556aecd933d43135ade2d437a9ec6fb1369aeb2d798fb5295aaaa5579392b0e07cdc82f690df12bf21327a6fa4caa65a62a89ebd6f0bc54f58a614c3eb1af0c084d68fa976a17bf31defb2a47b33598cf1b45d75f10b8e6f691377bcf9ec729d15eca9171ff17638bfa0ce64289d1139c6bc5babe1b9cd0271f4105f4cc7a1bd6a5635ea79cca45e30a798b54a3116c177bfd419d68dc8c321466dd8754c38f133615d6cf22be710139e8346ea14bc053b2e7f9b20f6b2d03c8de6446cb23788d7fd36781d93cf9107f30c300889ac75a2bf7a74d5434779cbcca3d7eb7ba8b92fd1f6b7f2442877d89f549839fd93b8d4a42b863d7f6fb5458f0f519b580b71e29deca5ca98389f729c0f63cc65a5761160adf6730df279f268f00d9feadca985f8c1d30d7181a2201ffa98b0163ec58ede12318119f83b49dec54ad67a09d78afe9482bde23e1203a6e5385937b86fb559fcf09d1b9773985f03ea83f37a1449bdd233a718f419639bdc41dded9874d6c58f406a11481dc691d28d456d94a82d49dfc5635b4b69d6c9fdb7255f29f609b1196f83b671f05807c49ab31cfdca23e246104e84d706e9da4738dff3847852e837d5c571d06bb283e48aef5bf3441cc722517b04f180bc35710387bd82947c43b801cf56bc85363d236615c459ec6b97d42b59e4882fe772ad6a2cc6b3a7a0dda0b61397391f605ae72ae69279842be4ba56b42ed560f510741ac5ba3b9fe6bc87fbde278762aa38e5c47dcf28ae8f2517da239f96b4402e1c6a6fcca4ee6a44fa968c61bc45b9b99d517c0c9a6ae01d2239d79e05f7db4cca46ee73de9a7ccc0c4d79012c93a17786ace3d03e1de735475e9f761af0276c6e67279a4f4cea59cbdeeda2cfcbba7f07ef543f28b5f927ae2f5d2cb5478d836e2d39e0fdda026a2f09e85d32d1f331561a6a367b9cbcb00c1df781f1249fe2ff9b30deccf1bcf5ee4af539c04fc6d524486a5a6336c596b8d8806b97398a467d02d9c3b0171a7ba7eb24de9d4f98cbc49198393191d70a7870d461eaf171eef06f77383afcdb77bffdee6f6288b7fb8bbf35f26f53f85bcc5d2fda2a4ce696112e4c945a28afa7ef29b1dea7ed8e8fc8661eddaf5ee2da1811fe689f61afa1d2116b97e6a041d9e51fb7b226ec80d2eb7c2b70ff14c46b307e5fc8cb90b8fe799cd9431c491757e3dc473c179b2cc8efa5d7e8f9a46327d14fe245847e439e94def5fe594affac97808f3ce007104faf42cfbcac2e557d4bbfc073264f557e61b46762af8127a42be1c6b9f451eee62de3c37735460fd4958c1bc5739e34e4b989f7a93070c86714065eb3ec1b44dc15517a3c11a6a1aa654cbcfaffd3bc16432ca880f995f6d870b9af2f50db7c912307f271fe64c89d1492672439757a74e70569d9781f9630056237ab43a872648ff8564d407df39d1aeb94f825b96d219fde7310377864e4b704f1cc6c4d98174da31e258e156fd70ef94c124eb6410d8a9fc46188fd84fa01c744ed95bd0f88e2d8e4a8cf8478420ee3e52afe74089aaf722c89070558975f30cedc19606d5800cf80bc197fc2eff1f97cf9bd46cfa94a30a6b921262cbdf7061533d097f226d5b4c1be8498c37a729d0dfa14b3682fb1ac72af584f37aa8701fd45ef9a1336c8f48ed4ff58a0fe46293556c6928b54214e339aeaa68acf768d3a5e0c78c5968e27d2f0fe78a635299386781b4605fa00019f09ca1b5faa3df29475cbc47a7b97b399324eebf25ccc53fd29f110b2a75e1b0c7483b2e919f15dfa0facadee837d485a450b9f3ca6b876eb72039c032fa0f567a97580301a79d2e507323ed119792ec4bf74aa3bcaf9d10a3b9f62cd51abdfb1cf6d07c665a4f8d9c4ab11ee89f6cc6c7aa6f38505ed83dde7aaeeec213f43bb157d4d58f16d797245febbd054ef43c62d50bb5fc3fa66f39d3e456cf49551dfa45de9a867b12915bf01fb04c235d6780d715a916f64c6a46ec5d98ad2cca5dcb1e2aa47f342f8b02e0ecc48aba3f5d0bb50692ebc33f29d4a3da56f50a11e50a9344f9b2dae699f8a774efc49c1fed41fb3c9eb358efbfe3ff444a4d7ef3be5b7c2b85ee1fe65bff718d4ae93cd9a25debf836bb8f2c6c924ef147248ec2b2e50536554e15e294ce90d2702cef560dfd0ba9eaef719be27cd25fada073343d89fc26a473517a9e59306bc3985c83b7e26af3c01dac5f0ce8a05e17e70dc47b8de6d1606f147d85bd8f7c9615f453cafc2039919e09bb8a6f026c37e4d6e628e2daa53377e2bee7add9cc9b96785d37084be3c21f532f0dd10dd7b13a6e1a4b415c6e313b911d95afabeca63fee8c64f70d765dcfb667c9c1bea5c323fb91b9fef8fa3b95e4e9ab3dd3da04fd932214c8fee508eaff490a684d1c5fd03d7b02419514d28c61a6f486bb6aa4da619e22d374e4e7ae8425c14e7c5406ff0dec3166bcbcd131cd31f610d8ce5f6033648fa9032f21a16d5cca5de9eaad3f034c3797c420c5df614ec5dfacd16f7dd06f43381abcaa7325f079c541bd238136e3645bca5e407f6f35d533cce25f566da6a0bda4a0799c316f59c6a34a05dae5b07461887c1ef09b7cbdbee1d479daa7e8ec8f5017c5249b7c21f015eb3b9a963605d3c36c38fc735a4503aeba8d7e2b8c17fb196b8ffb76b49774cf6b896a40117b7c0a8a8e72c503f50ad2961729c94ce89c6f886f5a9b0d202ac35665bc4fc1dd634a7920af770f683b0b3c2fc657cedd1fff1ddcb027e567dfa3cad28e67f2aea87b58934c6f978389714aeac9a529d76ac23bf587c3b17beee1533c6291f3ed7c433f97a7ef6bf9cffcca82f6d865fcf8fba115c273ce3f879702c17748f03c40dceefd616d2fd13b7f1017b2bc4b55af8b2bef72d46f065e9482ed202307899f56c283cbd117e834d059cc9d80a536b027357f4dcb3762379c931e2b983a4a27bfc442f7c23201fa1b671618efa3da60770221b79ed26f981dfcff750793749aeba1ddaa4bfc7f6c4d313b143738f552d799c392aa6ef624bd4e25d405e1e8c1466ce503817e1cbdc53f2594daa9dae01e736f8bdf84f7e4f79c01bfafe3dd3bd70792fca2b5bf4cf6c3cfc2df84bbcfe7bbf8dffd96f17dffe96ffcd6fd12f3c54f83b767bbc6f79fec9f89f1ee3e5ee18f2d9d59f6aec5b59cb5b2057b5cfa3e17dc55e2137d5f74d31251e1be4989541fb4146385621645c0ffcbc5ad5c641db92b450f988f0e6c5b6f7b25c429d7d469cfb25eaf288e44018db19e4bfd50fd53323cdf2b4413fcd6c52d8caa7585f923f40eb3f29add32dd60a926a526d37cacfb23b3ff4a902f20175cbb699a07fae4335586eaee87adca56dd95ffa3ff1eff75e53f02a8244e274428595141bbfbfc6e64ce3057d986a5e6cef3f93dc0be0304cb3fd3f3e37e12e650d344eaef6e33923ee4ea3ffea78c20a4528f9321160e2d99ab03f6a1f531cc4e80b7e2d965a812f847d849810f81c85c6a4660be9f714c49947fcb7e2dfb7b5718fb91aacabd0875a115723ecb5e73dc01de39ea33db54a0f24adc807ab5d2bfc63bf9fafa7c855100e7d6ea3fe9e15253a6a4a71238b063a8bfc64a28e80cbb00f845a8997e015df2fedf768859c9c0a712771743d06508bd8079a3b13fb5f54934bab54ed8d878a3cc4a29389fb8016ecae188fb117dfa45cf4f4cee8f968d2e3dc55da44a68a7947d5636e1521c73919f5314e8f4d3c23c6eb124ef529d64d65fd812bbd7277f16ce0fb9538235593ef626163642f0107614776b3c17ab349fdcbc5e40c7e90b7cb5350bba2c74dba1f3d6e52f2990fec1e5b26403f4a97f3497a3ea66232c09a7d92e628f45d38d6128457d4a85f1b9d53bc9e23e9d72a2fc38834ca25f7c8e693d37b30d0405ec15ece23e3c9ec31c2cc967bb736ba906702c378a4ace75a3819625c1b5997275ea8f40ebd8ded35724f686e17b635f415eb6264ca395e502b7fc294df2060a023e377cfedbb9db13f240ecfc43733caf740715b01b38a73360eb87f0da7a8e9274af44355f552759e58735d311ddc7b7aa4fd44e9b3483eb1ac5fd3f1207e0d0dd293f7d57b1fb7d90769ac23eedcc11c705bda558f75d5e4bcb357afe377c5e59976e3d84cbaf9e02763c22348fdc04c6abfd21a278eca779abcd193838163c58a16e36b43e99e5cfa39d7d771242f5e62354a1363abd95ac5afe8c3c6cfbae26526c71a8f4bbd2363e93ce6ff6c5e70c4cbb51669ac2a3f2c59139239a90fd843c9e9ab504b51334b47e61c6ee1843a6ab95a197865bb0572c0a3e43761c7591ed37aa0ebc421296a26fb4cd0b396f9073c5bd95b1056a01ff705ad45c97107d8246f702ffd18c5527fb07953b8134369099c5073e8956a94cb9e37abb0ed15eaf166c931819ab5457b0561996695e20fe96fa8e759ff3f31bef90e38b9717250e39bb5a8a9c51bf3ff627c2ba51da47fe0f8aebe8e6f491a2fb3cab81fdf2e6ec077f213b5775ed65b8b74c1f0fd099ed003ee59ae5fa2beae316ee1bb2bf42ab471ef83651367c235a16f59c9f72a9c799335620032cdbba136267adcebb29695abfad82fc539cab1071b8a43dbbd973177aed17405184fb9367a9f81f4b391f198f417ae9c794bbce338b63ec9b3ba7b0e6bee59acdea8181331db2f3ed597f45fa742fa453ba85bf8a4e11ab584fb6fde31978d0a07fd7c0dc5373018d4f0dcd82ef5bb670dcf457adac75daea4299f48e38e2bc07f4acdedfb71a87afd1bea4927881d323613a52d82fd23c471dc24bf0b7869c3bf7fd0df0b8c892bcd03dcc16d6cdff5d994870762824ce22331a75fdb85f2e1264e67d836f617dfad3dbdb7e51571cb335f80c6196170a2847095b5d20deafbaa8263cc770ca9be46180b8c477cca415a97d37a8cbd15d7271ddde44a7991fa7dd8bacf746de8a13a2ba136e0f5b877a90329eb7debd99fefc5ff87f7928366a41599a06533c0dfa17fcee9f1d856640aac2df16bb0ebefa3ecbdcbb67fb82e6f495a04c699fcfea9266eaf686e199863c6b0f7870230752b53ea702e021ed60569a4dcd522ce5660f8a74c71221b2b888775c7bed6b27602ac8f309cf7e7156a56b6a44db832e59af3c8813328d7cc39ced7d4b3f329f46e550d42ee05e127691a28bdc3b43fa68c8f7a9d78f243fe78ccc7bbeb0d6715e2a27fe23ac8e695ad78227bd486b0e3691f7ff9af147f95ad8abfdaf920fe024cb5bc077ef8ae066390bfcc5f5fbf7bf8e6f8882d6c6cc0541c0847fad2c5576c475e1118df691b6d499a20102376dff3f389e2432a2d89d8f6d53d32a515e1ebfd356427acab1a8ff5113996366a10fd3763a95d066319a8b16491e205ebdd7d206784f8b55f6a34c47782791228ad89ff669cfd5bcf19a5312aeae0fe79c27934e55f650bc51ba45ca5c76cb15d61528dcec5f5863d93fe244f7febdfbc1798e3fe7ee008ca9af767485ebfd01376a3efea6533ecf3f0f113f56123a3217ee08c1918ab18d967a5ae45711a94ee59891e48a5f35817ecf2c750a3b1fecfc7006a10809d75652d289638ca6edd704c15af0faeb9c7c8c97a2bfad157d41356fca2555cde7327c15778c0d5f49f145e3b065e60009a6fdd1a4f58588a9124de3d48d80db57e9c6caa91b7dbb087d7edf75bf43140ceada305fb5f0fbd10a97545f513e90f1469b23efd12f0cc2ae91d4e58ff0e03df55d629d8eeaaf8e788ffbb05c606b82b0feb825afbdbde8be3ebba80fa4dbc1cac9b885791b5babbf5a67b964e05de257614d37af3dd71bf5d6f2cd1fadfaca99cb0932e72564197d101adb37f792d15ea7ed5decd0ce8db3cd68d33ac73d4b4b679ffc3da06cf4fad6d27a9a72d94a7b44f7afed17763ee37c17f3be65fd778d41855d767f227f44f196a4b49ed06c4effc9faeb958c3e8e7a1ec3d7eb3ef4d4927a65f4373d2ace2a5ccd7ba3d2adb8d0de213920f6dc001ff10a5475a97fa7572f0be114e57711b075cdf42032e0dd318f46e50e3f1df5b8f29d6ae26e1973513ce495a8281c482dd8d512cdf55d256fbc763e48625573ad4de97fd00f344ec0b33a605e81f519a5f8f5f9d0b7cef793276a876c20c85357c0f23c88319e25ec8e3a590f8ee213f7cbcb8d3d533adc59ff71bf71dafe516ecd5f7861a2352934df9f24b7ce5f0d832e6817b51f827fda3afbb119645e601b34af98479e67d2dfd27ee29c796debfa51c1b85ed48b13702b515f17bc8dff6e8d945c968071a4da841017cbd7991a09f609c35f01eae54fdba32402b27dc6fb0d62d46e005c2a6eb1dfd6e837d1d365da6d4d7e11a6207ed702bc823cb657bc4a56a2b735d2b7d98eef326e04d42f8a6e8aed6db68c421f9d33d9452334e7a169c7ade37de8f1e7e86c889cb7747a5e398c9758325d40355f793363bf89d7704cf4ef7c5577c177e292137b68553c29c6c550dd6657b176b371bd863043b95749fc9f98671ccaad44e106398bfd56fabd6451ff3a6f7b39fa1be01271dc8d1e2216fb29298f22577c1b699e22da1b63ed5561f6b099fe4c7c4e1f72ce0d587d289dce2fea4e67278e9ebcc50c752bdaeade444bc04bc525813663ffcfe36fe78f83e83ba1869591ea9de64149ac2b631f2d80fb4cda1e4f8ccdb1e175298caeff01c62ff7080c5bb92fefa6a5b21a6d27d5ad78f3514f6caa6a8b765863fbec4d1fae1933876ebe1b1216fbe86338f307623aa5f8bd6a75ee2ac007f49c2c7747358f9e985e49397128ed13d93bfd0a2ed63842547fe52eba2c722471f752b84baff11b97a279db02c842b46bcafc7d4de7192de38f27831f9da35a871467d0ed0b72d6bf0aac8628f70750b9f62705e1a15f4c2fa7b93cf5f38e50eb1a206fa0c72fd93703b5197df931ef13ea3daba46783cf411b00b858178fcbe2ef53b719c166bdb92ef5c1457c829e3b735f7bffc7639c3730db01149b7b6a1d7ead7efeac4b5041dc987bc25e4a146cf2aaf91eb918caf0af3da8fd353a5b85f99431c4efc376217fd3668bdd137630cbf051d67e4579d9f7ca83f7b8a53a67eabf8851eedf9a4a10f3852599f7191934cfcce1bf200ec00749cdc2046ec96e6bca357931dc499d4768c1c177d7b7f7eaad8f1767a827744c77a6466910728e11f25cf76caac30999ba4b1f1bfccd1c8b882c777edb4e4b95fdec8f7edd452fc13b62c20bd896e1f01df3c8f74935e2aacf50c9f7f216b30f237067aa25f82dd58f58be22fcfb83a12763a36653f611b707109f69b398e23dc0b7fac4935728dc47767b0e7216e043d2b73d4d3e46d18423e83b532edf270ede2006bab78c08ec0717cfd171e678eb136e9e391f7ad1a3717e7bcfb903361efa831116f8a7c02d55fb83b0e47cc2aea46da01776d1fbdf3e3e84c1804c61aa881f25872bde43a20f11a12bb277576eddcf9d33d9fd57e999bd8b34bd98491de103f237f821d887b487ac7714a7319f448e533023d52e0cec9fea14eb828f482663f3076dfe452c7b6bbc6e01db97b766c92cfb546d813af92d722c7e70de227f116ecfff67be1e0fd79a9d0af2c8aab007bb8884fac3f29062da88f47732a1999a461427b4dafc3e418c4ff896f3f559ec5b602fbd0aed492ede60fd3087fc18c073d57c4f5d69ada776ee3def78938521c7d4bb10f1ecab8ad412e7c662da7f4acf493ff0d0e43e12a23c2db230e336e26bef25e1abef319610de305f1de94afd44f75dfdfaef9a6da93e67f5a4b428925917150bbd0fe62af11eca07adaa497da66e76ff60803d7795bed15c8031a1ed707cf5fafaa55fc3b1bd4a3de17bd7618e0a46615e9b738b49e93465d10abeb18c41aaa4f65ad92f31bc475bee2bcc1f50eb5d8718f8e43151f2c0ce505a663af01f962d2df12b120cc8a520ffaffb5f3a47a72c945d52abfc3ea2b1e0b62d7977cfeed5eafe20ae17f126feb6fc6ffe9ebf87f8d0b00733b1e3effe5d739b251732f9f8efed1dc53714d3ff7a65f8e6b34c8d969305e87585ce5b6e0cbda3ffbfdfff7ecffcd674f31c1e0d9eba449f15dacc78d0df1935f900ff0c2143ff2cb5ac5a46625e2a3c3aff1c5e702f2a23fbcfbec9d3fe4cc157a2d624c670709e1ad9c27f2eeeeaf6710cb0d7005b981fd69a54781d7fd3fc66e125fe05456ecb87bacc1327febfe696ce4bbf4754c06b131797cc81e7365e70a5ffe1fee276df52fef2763f94e23e7e55f9a2702636db6c8b7cd631dd9e22afef8db9c4bc518180fd94beedffc6f7e5301be6da1b4385b718f29ebd644a58de3df32e4c99753e83123e7771e9947e4679423a5b11b49ed54bb70e6da52796378c65af52d3c861aed934a71532a23ebb15823d022748fc1b61c511cb3b41ba98fd2d74098e24b003ea8413ef366b1ae9f905bd3506d812da6fa44ea1b6e03ea351d837da6e2a4b2d6647c5cd49e9e69c41fc9f6837a35fade36937c72567e07dd3d0aa99b873c06f49accb4f915afebf697d73573ffa7ebcae57535e05fb6bbbc7f1daf118d17703912877c8dc50278c0bd368ad2581757c4da6cd753f453250c5c8b7a638963feed710c5d1da7fc729c0d1e878f1e8fb3fc723d4d771cf4bba671ad4e3d8f897459e69f8fc72ad41e409ce27377ac16fdf57e005fa9bc2a5ed63418ecbb8db77e88b962c7bdae09bf00bce757e29e432d9bf402a04e94edc8231ebd20672cfb73be2d0effeefecc4e81e93e1187b2dce9b4be006e4a72efdcedf77131d46d9e8d8a30409742f542d827697894c9d73d1bf656f87daee358816f15fa0c8d112fd85c575f6a24907b73e997eceba83596815ffc7f72ed9e9d499d7dd9e3bc95aaaff54fafddb317183724a9a76af5fff0da67eb9add968ae3f31bbd65dd0de9a114bd1e91e46e3c6b1a9deb8dce45f8dd413de12d4cad435f1f6ed49a84c7fdf8725ceaab88eaa6b85bf819d5142259431197dee3a47c576b3062862ac9ad1ef75e10ed4669100cf03fe4cfd37b4898965b4e9516eafbb3e64bce6b401a11bc79c26bb6498f36362aaa2f6faa6f8f2d73ff459030d400657aaf81ecbd296eaf71468d16f6111823e26535839aa81568c4b7c1f52196f71c0e7ae01a68ff3b97c0d83cec3de2807e8bbdaeb5d1b403af68dcbfd853b0471ebae6186baacf0d38916c8aefb276d10b15bbc99e93e8e24026dff587b83eb618f6a170dde8ced3f7a9fadcdfb9c411d6e8e5f99a83c296a26765ae7927ba17d20fff6fef651d5bc0d5d6ae3f7cb5ef533f99f95443eb6209d2b35973ff8e03cf047a72a7d6f9aff15c3d7f29272f1fea53b45586ef6abf7619a74fd0dbede741b72e2f4943ec21e7566be764fce7f1973a665463783c9fc2548405f128846f26a43bd31c10b72c72998fb44cf57892fb1c40adc38bef70eb8e06fa11c39ce761fcf274031a73a239c7544726fc6f9be5786d3a9cb75475a85287395272efad545e34e807a5b0a30c73e73361481df200001d08d4bc4bc06b4ccc8e2d715c0a1df66f611ccf8ac3a83cc6cf84b9471dd472146c4339cea173b8a0c6c4b640cf9524cd087b76217d3f8cb34f815623f6c5ca0193477dfeeaa43cbb7abd0843618ffff25e1b2b4a362ed56c12d4b0aa1cd4744955fcfefd38b50dd5ed2977da075bf4834df44989f5d1bf3d8e717419e2756213756513d6e231b76bb506c33e139ad581f8ed6bf7d0c5b08b259735d979906c1ede39b97663dc723643f036b0b3bda5d61a897181b588f2ad0b977d607608f6a1c20130854539a39ecbe98635f908b44bce5d5c4679f068413cc856b46a2d7ff0fa403f248725b47fc95c007c09bfc31b29ffd94ae2330758931b69c9518cb1da3630ee583316431efb10aba4b91fab34730ad401424fe5c5038e2a959a79a8e1077e7e2efbe63bede03b4ce9dbdc7f471f7ce785bcba1ebe630ebe137e83ebda48af9afe3b78cdcc0af8d04bcaf568ee08b9d7210e2be103ff45d2acd7a83f803c43f0b0c1ba77433107fa0eb1be075d0fae9b7d90dfd3e33529ddc78127bfd05cb774fc1be261b6788ef78c7ca95ec7986ba0f64c74ae4133c19a2c307758e1b574b984c436d63297c0e3c95ef31eae8569c16ed3d0f164dd417ada3656986613cc736cea8f0c622c2b56cf12f630c1419ffc6ffcaf64bf6de9f43a96881f21bf70d2377b09b1d7027aa6c0fb55eb759bcd705da4bee40b7af2daa513e698e3283fc6679cff3c19e13de880f98f9b4944ebd42bf9a7ba3f28bead20865be475a8c7afc3e7715e920f386a356f91a3b4a467d1ff5d473fa6467211fabfcbe7b024bd8b87e3bc231ef812ec3df5bceffdad607e62bd4dbe0fe069e65f03f0b7efe6013eb77fe44d76f76c0a07fb22e0856a07c9887cf9a7d827368a7a7eaabaf8d7c89ec8538627d739619f50eb9b15e4c5afa1de6d2c39747a50bbb3a2466eddf0f3a4b904afd74fb92e6f6bd58bf36dacf509a78d1ee6499e5a93c5743c09b8fb196c1be2a7bee4103bb86b273c9186651cffa2da71287331aa0d4d084732b69833d682369ca9fc57f586beac0d33b536b4427166141fc6689efa7c692ceb786bf737ad07aaee1c9096945a0f7a4f3e558b300f8a9f93dfc6033ccdd88a8d8d8dfc249d623489a7be8d2758bbd3552ee04a0e8e3df83b7c7f2abefffe54747181cd881b97486f6e2b014d801fe8d765ad228a45752b8ac5248914c727551a30ad9804fddfb784c98ca2f1c4471d28f2e28b9517dfe9effe2ef71e8a57a02fec7f0ebdfae4d8627e200043682f34aff76580f731c2186a49fefcabdb3ffc1c3055c1fde7577b15fdf9f330b9daa8253a5863613de5c0bfc7e7085afbe841af61bcfbf28cf58838d9a09eb983da5c7e1becceb8179f4fc87365f16bef618cde78569c5453c4401a806b6a7e0426837d4cf2cbeee6e64baf9bf8cfae239cde5d07e8dc6b18db25558c1e4eefc1b691b8e052e3d7e17b1729dcb43b1becdb1ed33cf2cad8c0fe20b949dedaf132c535c3bf77b999afcd494798d6f037cc333f82ede66e9e44a8ab5c62dc1b1b1be2d31d9477633cc735c421cdb94bb0b79cc158a2d78e6ead9291cd9cf2fbb8e4ee9d87fb036c02ebef0fe744a4b9b3b21edc1fe58ff2bebfdc5f4e7b5472bfb7e438070187711b4f326d3e8c1b183e5f7806827fc2f509f2dea5fa8e1d4ec6e437780ea3eb28a85dcbafbd0fd49b7d29340ebac935bbd0df72ce4fb9267175934a3b3cec530a5f62c53ae09b7ccd8be8d9a03fd99f9ecd5bff6c827e7daf516f2bcdfcc77d69cdc1c75bc8fb92b93472ca68ddd027a5f2162f7b7dc8b4e975ba4d97b44ff6c14e5d8bf2492f04f6b8a271bf764798fb6bee4969e7fcb90714fbadf8c673a952782dc4fcbe746b1e6229a2de93537a028ea80f9469de19f55db37caaab3a00f1e9c89f96273a79af9f22cdb906bb915b2196ac8fe3bf8b63614eae78f7ce0de63078ffa37fdcf01d85bf87f29d1ece611937718a9bf8fd3abca3b889b498fb39a4ab58877fff1ec39a6556a4934cfcfd9702f7b555cce2bb353169264b3ed7c2dbb771ff62e09341718290fe9426f10df119c91ca93182a6a6be0afddd0b787d0db6e40188f90ad433ec42bdf37fdac7e646bf8fdde53bf239e1f1db9e8f8bfedd69487337459d00584b6aff33fc3ec7f97fffbdde06f71a6fec28b9622c3546cd606714e8ca6bf18938f4026234a9b9ffac491c9517c4ac7b6fddeff7a23e3eab1cca7b06f1597aece333d795fa22e427f39fc47d7f795cd9dbfcf371fb5e7c9f5f66b2aed6e7bcf771adda4f1ee25ad00c0ba4b653257566d75b85f33fae6ba88387c966f2a76be14a4fe8fe1e17d81beef547bc61ecdc3d876350bb6eee78587b7ba879e33baee6a4a6f2ee03ec5752530a7c88f68fe3d84c649f6abfc9bf1d8f3e7eb81f0faa91caf168feabf1c0f8f9cb78103ee17f188f4cf5efeec7e3e39f8dc7f910ec4629bdcb2b8dd6fb5a1fbecbf8f7ee5dfbfcfa2e630d54073d8925f78efd3b2b6310d4d2ae823fc4202fc8694fc177b66c832d43ad2fc2ab3ac46f3c3ef0de2e39d61538f1485b0b6b88fe15eb2a2fc86dea75a40d9d7281b09c919f06e6c880cb25ff8afd129f4d267dd62af4b43e5b81f2df1f1b90a3c87a3ed4c6d14f9c74883007627ed2dc7104c381e6871c9bd6b52b4e1e9dd91cd7321d3583b35e07fbbee7504c2be7c10faf1b0f06b5b56ac86bb895cebd666fb1fbeeb717a38befb09652af9d502f1da5fb6f0cd651ea6dcbbd64a17ddd4bf01d73490baccb6dfa9adaa0ae3bf84e1293367c2d35d40093fb5b57ba862d93f17ea5f55c91d2006f8a4054063dc75ce1443cac7b8db1a63047dfa5ca505e3366f8d88341df8f5a5f3bca2f17383a752ddf6961e8177807cbd1833ff539781da337307b22bd3179dfd17896d83ef5725966405c1ac31cb7931df25fb976231f59713bef55dcbba57ccb6525715a056a941ba1a6b8c091d4845df4781ef6ba404e7fc0f5e312f70c7cb7ec6c7a505c66a99102b8513cee8a382c569cfcd41f8f5bdac491d3b467d042221fb0ee19e8cfe45f9768c411c47782ad8aadfaadf1ac3d5c932dfbb9f29a9e35ca614fe87fc172a9410ebf959853c943c2df16cefc73a17cf31c93bc7bf0bc87603f37fb71acf0fd409d902e5fb12be28fbf2ff9e3b1bd136184e2546af8bef45ec46c57d98a7b6e76df5b01ffd042bec364dd7f3eea3ecf2407913ecf26ebadbaafa735e90246e756e5a5dbf2538dcb8d303d880333e69f6abce3b9e27ed2b5f94a0348df2f396ac2d27dd5de61a9bc0915a68315ad4b9a3b2df9ecc4a9e44fc9cf73d25fd40f57f579fcfb9378b878ee5bb0add575e7fc373ecf5a3dcf62dadff7d2f9328f4658afece620f54e533cf65bb0ff455808c6a64a5f0cc7643301ff6c98a3a4e72634d2199deb6aae245253ed6ecc8a09f5f2f47d37b6d2d7167f5b3ade6130bfdf1fe619e2a4dc55b5dd0096546277752b48420b6bb5ef3978a6d96bc76f73ca61e37032fc5ceeb5d145fac4e41053d8cb3eee033dec7e1fd0d73d3f94c93db57548678995a855c8f11eb27db8a435077ba7fdb86e99439f51ff1671acf66aebabe759f1a787e7e519b15ae32a07faf9f83c4c6f92cb6b9563aa6798030be86977cffa9a696a1cdec209dc1f8e4df76eb7fde7d91b6273057ddead39fde79bef3e37d5e7897ec05ce745d66da4deccf843cd536343fe664f4a8765b751f75db4a401566a31add1bbcd11736156268d835a17b09f9bd6a4983634a6a41d6789d869959644cc683d3a436d89bd05ad50c75c4a6d3d1db423e09c75311da9399a93f7b281daffdd397723b55616f41c6f63751fbef44d961c1313eec36f836d7351ef94cd6ce2da93b7521c291de854fa4a8266ef6749ef692a2ec42f7fd66b7a5f34f24e8e93ea3d9c400c916bde93da2ff7fdf8e5c9d921ac10ae4d76557b1ffd31cedd3110173747af2c7f14ec2d758c6783b0e5e33dc62edd33569f1729790cea1fa55abf94aff20bd32e27d013f60eca8b3591fe8530af349a57de497d1efffa54bda526a0f5f5a3ffbd8c1de4bc96580ad8570eeafd4f7e926ff64b69bbead9560eee9149a37c74f2bd507b95aff0bc979b9aa329e9bcf32701e3f319ec8e6feafe638f78221ffdfa2e79b4f2fefc86fc67bc8fc1f5dde8d982771eacdbd297ba8b979331f8979947bb981e69be1b8c7422125fbdcbbd7ec9ef9bda738c23716a4facdf7374ecbd86e80d5c17db4ceda5ddb5c963a7d633acfbd749d97f2e3df5489313d637df0cf62bb56f14dd5c439d55e46ad56b9b7eafdd58fd654f6ad5b5c58141e3816be725d8f27e4fda660fb15a60f6f755931f7f28bdea20f6e9afcb3823b6a6da517c52ee684cf56b8e5ae4c258e13be869ea39a5ec1d75dcc37c8fd8767d75cab5d00a34e75200a7ca8d06ef036058c0ab3c265edd54772456bfd6e0fbbbab5a23a5c628dcdb076a96268b6923bfef3b4f747cf5fdb28f59deb097688bc9e526b52ce27007fa13c7b77e7c44770f32962866780fddfcb02df08933a0579871c404456778fe42dc4a85a9bbe892f79e0a5b799e9895bae78519122f55a3de60699227e498b02a8479399056276f37196801046d42bd17c06065eb594679cc65493acb6986ef253b291dfa24a0deac46187c962a9f47792f216a410782bd934644965c29270a2bf4318c4d06c7172e8cb7b0bc722fc80f047ac97a48f71896e0436cf31a736d33bca2afd76ba9bc3f300f00bc881b237e05cf891e69ee4b99aa75e093facd5cf9918e5bf215032f4b952f7b85ac2980afb94f1a1ff00e25d8dfd0e8ef8f3e5570bec622adc1b2b548675aa31e6364285fc9e173fea03a79686817a5a3eb32a9db86bd5dd917118adba47801a46b7453f3e0f13e118f28357493e304f0286ceea7ffdeb388347756d41efe3eb4f0f716375d9c1782f71e20c20ac5efabba5e0df0b36286d72d5cf46a64113ecf587a8ec8fa81d72acf11f28c88b0e6f18afac5c815096b57f9b90dde8d4fd2d9e0a94b63dd9433f25cfef98ef50a46bab8d0c7e4d740fa540beac1bbb07fb91b586fc21f38a7fe3c07611cd53d2aff6de08dee4b47cdc917f4b293351b3527158edd799c7f5e971bfcb3f92675ebd57c8b121df646d4460b8daa9f7fc0eb7386f3afe7d6415d4998e1fd7b8f1864c00d54b4ef37058def604d93fc22b3d7b9a07827d33ce37e2e93ffafbc0e537defbb354762aeab1f8a8b30f3c81f6ffefd7bd2c505a467fcf342c7feebf7ea6717d3ce940fe68d3cacddf70039c92bd3fb322e8cf8f0ad75533c95dafffefb702fc7a01e9cc7a85aa55f5a5ffe781eff3f3f4f13c462beaec34fba7f1e579f588f4a111bf8116cb34fe57336253fb2066b68ec47b0ab88b71516dde7906b40fdd20c27a0f90358a782bcb0d1d3b7703ca515c293e38bca3908afb8a3eb6aa6e83db40fa9e7499f4552f39af27ca93f16bc9edfe99aa46e2dfc56e57efe54e1af8c25f674d023c9ce667ca4f43f1dd430c6f83adba377bc705ae5218b6b6de978efa8b51f96cd2fd0fa4cce8043ed9e0f9fbfe35e1f564ef05093d94c4acc0779ec3ad473c138ee29d862af5fb89741be227f1bc6eea4a0df4a7d641937291fbd0afb6f3cb9eef0d96ca90e54189cc6b7213dc440f9275a35deeb6716ddc5955af07a6ef07a0e99d20ec67b69d92433d0c7303dbe629c85d7b37a478c4ab88a9027b1dfbc629c3ef177a87f90504d6a7e059f2af123d8861b3ce7db0afaf229e051d947b0178833703f5678ade44d5d391e618bc362ead0b86f69dc0bc468f334dbd0b8639fd75d3bf31bf64dc2a5387c79664bc44ef3689c034fcebd223ec966da5c9db7cb4d89bb0163c8db6057e1fd38a6c03c0b73ed5daeffc6e7c25a7a1f4bd91b72b470379a94e481db73076da86f7921d5b403cdb5c357f9772fa41efad4b5a01fa9133fc6e6b34053982c199b7b1fe401087ada6cc924865fe1426cbeadc20126b0db13e579d6c2a17ad0466ad6df06be7cbaa531f22381f7342aa44f3e1c47be2fda93ac8df59ef12c62ba33c00355754938c0b49a2c666282dc8d08f24bacab25908764e4936233dce79b4f9fb0833236adde06b5f15920c23d7af27f067bf47be1630339b7d023c171cbd107037090ee529d4373eefe8e6b9205b57d0dd69a5a799a2fc88b37eed64a93fc58f463499c9ed6454d7fc617b34ae634b9be829c667fccf1fba38aea6dc6f586df7f5d4c2b79ee02be3f430d13ef5987f753a472af00bcba015c28c9eb8638dfbad7d018233f607c2b158fe2f745e68d89c4a5bc0462632da50619e80f76f108be33a398fa5dbbc6197e9ec97dc0d7fd9e777da15cb4426c294fbd23f9443019178d651f87b5ea5cefe4bd2152b6c3b5e096f3003156e723c4065c0ff60cb9d8e73602bdbca6cb1161ddd9a483cfb6b2ee6586d8cf3e1fa81e91412d69f87de405f97ab0ab887f41181b518a2fdfbfa9efef5dfafe93baefafc7479ea37f0df6eaf86f11e92b2415ed670781dc8dbc961eb3b6af7947c4112c32adc6da0df596faefcbcf34c997bde1b39825c46331b05e98b013e2f044b5a3b93afef00953db524fc36f29b75adbe405e95e19e58da9471c8a97620bfd801873fea876644d32442f7cec4d8c905f9fa9e371ed9da18e119318a48137be60e6d7efeb7b5693973243bc11f9e4bb69a9af9047f87ba434700dd0c80da3f1a414b86ee8a5d43d2f1d95c353edfa5ad138184f58eb66275a5fd8f44a63a8d1bc8ce36c743f0ecaafc4639ae2fb9e306e48c1c76530e643ce591bd2f7b6d594deb10117475d13f6649506bdff5e38147b08f4d4261f8a06fd0921c709b7427128075a8e1ac46462c5544ffa7c1cf8c8ca75344ac98bdb37063d60c9152e1bd0360af805ff8b5e3469b5a0bc5cce3be15939e2abb2d8bf286e8c6d014ec5b4262179bff6eb90e143cdd24ef6c7189ffb25272c1cac0d61c0595d6a07ac61786dcf0787fd32d34258e352cfe6c811231c4144f117f2632ad7a71c7526df7153c43d8e5272b21cc217c8df9b61ac726aeecef23ad411bfa263edcc08dacd12df59c417b84f747e912286ec36b6ef7d9d2d0db95cf2f3c8e8d78252aba14eca877c11f11198e4c52f2e84a1f5dd72c0bb61a7efd6443caf8cf3c2f43889159ffc026363207e13eed1669ab7273e7639ac6b2a9e91f811d4880f8c05e5abefeab812afc02625699f989b417d53f18edcb29e1bc8c509d70de222da507193a26e8daabd1f917c7742ab92cf08721c9f7a76c2d7c8df64958c5e90b34298f6f099f629d4415e81ced38c691ee196c3d2c5731bba4bef94c49c52dc8cb52db16b90fb74be4691ea7377fb785ed6500b888ce3a2ef8f0b2b30c2af6b3c8ca51befe7f89e287d24837a17702fd27b08f2ec04f21dee0cf95165ab74c534f0525aa51bc403085adfc8d30c3965e48f55523e1933cc3542c997aca476a98c2bcc6f34bd1f3c2243417ae2cd0ed7039cd7ccaab086f1dd7a10a53dd65a68ee349b6d56b817dd793384a296fd2a81dc821cf1b602e2b41903dce93448d90ad7e8eb77f14aa83052ba151823bb6ac833cf3ad2b53d1b8dea85a03ec8a6a87f62cee06909e400bdde31e8dfc93d043df1ed6472e72779a7d3c049f7fb5e5ffff13b21eac5bdc8ba1d61ea5ba71fc3ad45fd38bdf72eaddf891f4831d32a162a36837b13b2e7e26bdff94ee075986a1c613ee33b9cf59e8df81b7d70edc4ebf107b860e98df9e5f8c893082806086e03bc8fd27b442d69185bc08a09cbc1fa8f3dc0614aedeea10e34bc2bd80773e0bab2fe1e3cb976d175496f38f2f470465ff64fe4f5f29948698f400d0aec7f318fb49cc1c3e4403d2886faf8efc14eee615ec0f513718ffde9bd0e73d436ea39d17b16f127d2ccb7a236b800bf9b81966a32ff262667cfdfc6dc4a77a87b0672ce5abe366fb11ec2ca9e4b3afc8d17f0515d417f466484a3a27a25f53cf403e932a4016773ac07ca3e25c417e28d74bfd711e0aba294fa1e8df2d709b1af01fa621bd200cf60ddeffe7e96fc05c45e66d1ebc3dfd1cb3bbefbfe91b874717cf7fdcd04b1b0823f7c1f638494df7dff4a98f38d187edfb42638b6420cbe1fa64a6b37bdd727de04b8ae9d30e699f9e46bd37aaadf5aed74f48c927a464e80fb2ec77d2123bfc9a14fb4f21774b3a19f2069522bfe8026d7ea59175322d691305769b1d3956e39f10445b746e0fa56f1472fc3e1b94e4f784f569ccea9261a662de0e62259b396cffc1dd7d52617bf4e039c60b7d71a589311a4df00586c760bb65443e25a32c4a99bde644135a2e88cdf29e5da51d4de899e6faeab73853246da6f08ef1e5746cfeb1032fff00c4eb5c0fe1a63f48581f7c0fd758793ac2876310ebd3f826dd9cae344ebc61cd7294175b4febbc003e9f6a5f90de7e646e283f5f08d38db30f7d933ae9b10676a9ba7d51087aefdbeddff7b73abb0a682f89479655613c5fbea9eafa3b0ce5dbc4f71c88d6abfb9e669c4cbe43179673917bc8e06319d22af0f382ff9bd3651bbf150abf307ce71816bbc3a06ee0121cc9bea164694db627d3a417fd8a49aac77a89b9608c5174d520f716292f702faa9d38a3462a05694f0277caefbe0556a203399b31b63cc4f39c5a20cfb2131236e082f658ec2b8a7f8332239fbd863c7fe916f56f8ac42b91efb7ab067a4271396fc82d808ecc3b595496ba37cf6ad3b295295b7877f7d6cf623d8660d7ef6c4ffe6ba7dcd3baea9e70ab1ec5f5ec772466347f8f13fdee335d85d5173982d32d322ed091331e969be435c2dd43d156f798db5ba8278f742a8df1453c2a2def34d7c87ea7bcca77736d4865c7da95b421862413a24a275092b7acfb78b33f4de656f01e68dfce17bddf865a825c0936a835ca84f7a3f1e7402de63e29c6eb3c55d1e79778da1457c39f2ed2fedd0feee9ef314c634d33cd0f74bc24f8cf30ec14e479e65a9a3beb99dd8dcc0e7e1614fc02e94f787ffcdb56416d580e85a98d28fbcbf960a7c20dcb5c33ec89f2342bc4b703bef718cc5c36f99c4a5d2189a0dd59752ff0fe7c981936ae70e3b72d5937d3c66f7b7c1b3e4325f740beab3b6cd0af3ec1379298750f765fe0e756794a7c871e21bf8378edea3863e220dfc92dea7e43c29a6675bc57cc0276cb08642351b8561f36baff767751b2b489b492e75fe812b92c7a4c3363ec0da2435ea3e835af23df61cf8cd41eefec23da38218026a1a8ce232187747a39ea2d0485701b07e4bc7035fd82ef6e3738db03342fbd9ed79b3107c71bbb149c053565e13719c31a70e279cb818b847612cbc44cc2aecf19a4bdce67eef321bd2ab0ee1581ed4b3a977dda26fa9f09fb087de60ad5269bb56bbb3f3e8c7473ce6411cd2eb1871edb4d2ba3c1f314c319b617efa0eb9e0c65ace3cc563ef72b715cd698829464123b1b7b7609b4d909f7c0a1aa80d70c40664d27f52809765cf67ef9e658c7da75337f7e137b0d7ae4063dd4d22a93963150e620c750bea0ffcf4590c722b8cb167c049457f19d108158373d72a6ae4a524be4ee39e2306b874e61a69d8ae5a86d87ff62368337a2e3366a835f7d67f57289d7119bb1b573baf158e846a96cdc2383ac8d33473cc0513c8b91c5f636f6aef1978c8828e17b3427d752b81c36207717323fd7ad29c890d9dbc5b5bf2858de35fc85d2a3f83dd754a38916e0d94dc8bb6429e5149f3c7cb4ca67add95f293aa906323f314cccd08a7f15b432c56825c538b301f839eb4755f07aa94bf6d668ce47ce5fc42bae4ef8f395e5f4b19faa3286d7326c707756d43ad3638eaa347f8df4a434d8ed8953a4621778f8869b303f244b8ffef2a885ddcc3c475a5b847e7c7be8f85dc29bb72188eef78cfbf7e1feab7804ffd41f5cc9230ff5c93f8c3fb3ecff912ec1af2290873597b071dbd6e6e25ddfa8f75f3a885d83cd6ae87d5ebdfd62c318e7374e2dc3f93ce14e8a1b4a41381f8d0157e4fe6f6a1beb946ff593d7026f647d49fa92ff18397049b3a3d4fbc8bad4cc2483b03fe2b7068c3f4e8f83346ba8e9eaa91f6feb0c0b56d9b09eaf4c605ee0951eb5fefeb57723dd3288e293187010e1c1ec7b49c9062ade6eb71647d09f01e5bac895fb9d23168947755e9840ed5a3f1f385dfba773d46eaad67d19faf273433277a1df6629981bad561a553dcb009077561e45b49ac32f50d4639e5bbe651f960d0f54612fbca5a9ca32f051e57985648f5aebbe36e2b8cdf50774c60bf03e61b7e8f5d029df46eceaf3816a7d560af53e77618e928bcafa81e6f3883f9e932ac2bd8e44be2a3ef9b48adcb701d86633aa360bf917963aeb11de6d78a8b2722cc2104bbf9c0513243b94f8eadcaa9acc2d009b762f8c4234add77d51bdb9d23c27494e8ad102b3e98d2500ccb3dfa4b704dea03023ed923afb9b718b93815e43f76512b6e7fe84bec7d85ba69929f74cb317ee3c9d11ee0996680676ae8b807c2c72b3cf50e3959c2f9a4fa84fa4c693ac91adf908373529a1fc2311ff8506f72df87cff4afbf23ec9ed30e70598079c1be69209c2b6ade6c7a9e93d5eb4b3d1e73dfa8eb5478f26eaf234cf06e4cf7ffc123c4dfd74f8895f788b3162eb49fe8c7239654d3a1bc8da7e1017364f67c23ec724875a0b06a9cbef7047c0a1dd7b09019ce1dc6bd70e60661868ae9fce133ef7da57005f33bee5eee7857fa6ced3a77bca16c5f8534761cb031a1e2e56d2dfa4cbeeb439e525ecf9f105764f1b80aeff1f49b49efdfe23edff3f94613df219c91b700ac95ff1411d60aeaffddefde89cf025c00f86d4c63de2a3f0dc2eedb79edbdd0bd10067370bd9735615053ef763f4fc42dd8abf82a24ee404e586de33a59ccd8147cb9807b1ef223e106b4e88e83d9eca4afd1b7da055007e26a6ffbf37784e67a3e9f3fe8d19d7dd29689eeff3ea5bf67779a33a7bfd31e9b498ca0aa1da147143f618f09e6ca1a79dda5e31d0b07633ee30a3d602e2e81317ea1ded25fe8f8dceb7f9899eacffa5a4d79b28c1d5711ea24631d113464c656741b534f9badd39ebfcd35e0e5af95d6ca5cfbff11f76edf892adb1be8bfc445333a8f4b01959632145481bc2138da081a134d54fefa33989752d3dd6beffd1be78cf3b45647e552b779fbe6f751ede12dded6d4a76f334e609458a8439a79466b4fd4fee3999bed1927653b6c2f685f9435f58ca7d926baf1da417fcc9e6ab2a2306738d6f1b316ebb7695a9cb9675720d6c05bee0f3c3e62adff21bc794bfd25c5d16029b807df227c66cb3a19f4f74e16f49b27caed88c5e4c2fd97ef255e077aee98db6d9d31473fe5ed9cc3f88667b14f941b640cec7bbc1b068cb3d2f4196115fbfd7736cf9a8616db05d2543ec6dbc0ba692affc27ed7bc4dcdb96013e620871aeafd39fe19efc383992bfb1feca9ebc21df957e3d59ef120b6ad09f7f8d3317da1d6edb964f9bdff5168ba6f72faedb3393f533a2a681c6dd3fbcbbcecca763572b0ede36db1614c69757b2637612eecc69cf38384f9f5a6ed987a53ed784ff6aaabc7f594e7c1baf66bbbb210eb47b9306fa1c201c77a69067ca5780ff431bdba995d8c9e530a7aa0d4bbc939f2d920329fcb217f0e791e47923f508f49f7e02d6ea23bbca140bc61131d4b8bb8b8bdd118b1ca878f9b6642308aade14769191ca58c9558503ff216793db8270e31707afcfcfeedf70bc6696a2b9826db1aceb3c869a3b5d227d06fbc5ebac417b1b0d431492efbb8111ed7527b3b1503ee38447f9d78f3a1bf6302e3a6614d72aedb1a9c358e651e69aa334f2ae65f7f293dd203b14707ee474f33eed9d7d3b26b193bef9494074af3fac687bedf7c50fe47d4ce89786520c7eaa9dd2620de38ec59d4d0fbf712eb6244e7651e01e70fd4fefcbb3370a4b32371f480d6f54d4f4eb57be674a8d9a6712f45b734beee2227ad52ad67df3501c476c4750c37c2b372bab871002196d241cc936ca54bef10aea1ff1bf9ccd0c6eb9748333778fffce8a397fe0ce2e022df68e6e8e73d2bdd0df129b72ebd47b0f62917edd6c485a6078833ad6cc91a2ec435925e9f33ca21da05adab95fe053d0c910a4fac5f53702f7a2ad82e4c710f239e88c6f252ddb40afbf7490c3f2bd4a43753e6f048997b6d57730fd317f54f6b182bd85f7aa0d9de194c5b4def1208e130664f9f74423a78fe8f7b7b39ad89d74fc2bdebfb7b076b1f7b04176ac97160efe345356a5b8c2a151f57b07f0fdeed397f0c7a5b01e70df4a3c2d8331736f1bb12178b3583b983f1c80f4f8cf15b4c0e7446045dbcb329ae6d4d5f4b929c382f1dacdae64e1b08f81b43aaad04ab7e6d432d8c7d18f575d7978431f0efeb097851b0bf3418d78162dd0687e7b51f17cc513f933e6230af33d69cd3035e6773873407956df3b3cb7c231e9e05fc8f8aeace9afa066cc5f969ae092e15f747dc699358069f344aba604f39ab107fabce949f1514677ab5cf9a9235d5f52c386396bd2d75de2cc691951d633b4e11e75462c4875aab86380c5ce24db60e5f4603cb13ac9b8cf177e67f310635712c0bcfc06618df72e19837201fa0f68d7604f8806bb667ce92e688c7f3eeb989535d6b8347f7a09e67fda25a4375c3a9ab202c273c5e45497a4ae37ac23517ff5a72af4f76d9308619fb24aa0b3f37d551d372c75cf30627f1515af7bd91818e996b00729776584d5053346d027bc57d94ae7c375ae6d09b7a1ac54ef866f0c0ae24ae75bb4b311ffcbaf042aefb9dcd3db3e70faae134ac1b9051bf58d4c7e8943ba1bacc8bd141432ee82052a2e36b15d92f93371006537b446e21cc9509d09686eb14e1ed3ba7f38ab83534c50659f6fc65308afdfb131f57a9d8173e049837a6382f63ec21e3661bdeb3c853f2f03bf0b582923421d3b4f8207d05e623fc79bf86d78dd8f23b17d0a369b8dc5af22d888bebd4fbe4cc714ffd3736f349b59c5fc27d115a2be2ada177f6b229707741bf08edc3946c30d6c2dc62cc9ad4d584e7c6fe2a4ddfbfa27d036bbff73f58afb7a11cb759ab691ebc93869715436f387c8eef6d87731a8788fc0ec1fed04fe815b950ee489c19f7f03086e45be15ea2f83a1f7df07afd6991fe94af60ce6b35bb10e7ef5bbc3b12d7b76fc5fbc2f82d6267fc16d2ef6a3fe737aec13b3e53f531274d90c85a3ee0d712e418f234e1c612e8958aacc82a223a3bd937b9c4dbfac3ec43eaa5291cd2a6d6fe7dad5b3cd40b0da71cfa494bd45c223e2eac673efef64e9fe6a1d6fc83cf35b481cc79fd7acfa16a3de8e6f0f5d1de9d07d20f46abe63082bf67a74539c1b347e5a305bdef80f7ee4acd86a5c5790d3af39d9ae74cde7330b22e0b3f27bd0f72b3a1760bef777ad687dfbe188cd5edb773c331cfb844aa9df57efc7f1e2ff42f2b257bbfe2678cf7b5d30cfcdef9dc2bc671570de4ee2018776fce2c6b66578ad7c343ffc834d6ed1b6014f526acb80e0d39cd7e4f48e6577a91d84fd79a1e5f731da867f77113733c309e38a69811f529ec43806b1b6384c2472e0beab32e49eb392c983f84b809a435049b99b5f171a5a263a96a2f568dc3efd3fb6f736fe4c7969d18bdaffefd15738aa00f91dc6a5d50cb10aee87d453ff5a997dc3a0de33d70dd06d23fbccba9e43ade4b6df896fc33eb59311febdcb950cdbdfe5829ea95558fda66490ab9e68fb811d3c28a2f6563f8d6a6d2bf5894cbfc88772dea22d9c1916d2afb542b35fbc2676f3fe3ebd9e9d73d6108b1aee90fcff21534fea6b87637b2705893a4b2695ca784379aa4fb838ff5360bffdda0ee419c16582b435e64bffffb5205419acea84fccbfc67bd0aed9122e3b07be61b77865ac48a2829f9af4d412c44fffd43e5d3f17d0332d11133cebffaeac608ab5944245c49592a423e2a9d2704ecb463c95ac3902efa701cf23fd61c9cf0b751a6bd3ad7c13a37e953edadc950a2754db60aeb9336173bfe2dd057b62d5c9ec19e4e31056bcd56f46bb0dd77554d90dae5d185fb0cf9fec57d439d512ba765c93765462ff83f8ee0c349b01330cda26262fa2a1d700b55af0dc5fa93b1e2ee4923d81765172b924be788a9bcd3bfb4145f2c8174c767b7e3bbfac3b9d8be82b767ef0da3ec5fbe2db5cdaceb7b98cb42701179fe09c4534675e9ccbd91fe638e4b9143ee150703f04c86b5b004656ea7f707d21bec94b13e8f3f59269cd63f415ef0e07f23b4e71b3e4fdfe027a6b93e7c383be9ffa857b8ece8514f68fc8aa1d6bcdc1b31ce21d62434b3f1c1554f75ae623c20c625d33cef592f36798976ebf68ac27327be3b12bd62d69ace7228618c9398cebe0ee6f7e3d4a6c697e4b36f2b5e4da4a3af20893d1e0daaa5883c697bb86747aeb79493ea4b4c99723fb5751fd6049fc007102b914f74ec3604a7ab7fd7d931573e365c2611f5ba502b9da35e05146851582561e602f28ee10cdec8b735ac29ac1baac2cb1273ecda0f685893b12d29d976398370fd6b85b8c573bd626c79846ee35c4af72877a73d295e3b251dff695c2bc38e37b191be41ade2eea2df6add80d3fb19e567572f2ccfb31ac27b647f510f08b92a9e8d7fb0bd84be7627a78eb89cd1aeb5ff27a57fbb40fc39a7c29951f2cc27be2679980cf5288c72fde4d83ae8ff1d866d7ef7313871cd9df7f29f7a14f7956ce819c307e12c8ed63d1b9a058275739b5e1777d3ba37d1049e1127647e9806cd4d70a7d7ed6839dc4e9e644cf2da8575ba26e1af6f6f0f349d59066c9e19331ba8b09d558adc170857beb90d88cbd3ef1f724f79693ef62d3774732d7544f691dc2f5067d9c026b2185be5bf81b71e1a734869f2be2b2ab9a88fb83f95e2f84f10b4ae09c829a8c4d798be98a302b9067c658fd93355b641e38f12bfa240b8fb034acbd0cfc92f6a86cecd76aaa591fc6f8b8bd8f536c438b789ab6640b1af003b2d69368af3fe2f6c6cd8a586963b3609d6584cbcee87d35e56b009fad497358cb51bd638d1a35c82847b5984a5a0b9a7d3c9a87e127e192e79533643dba88b4bddfcdfb7705af83ef63d79fa96f92ce15996e282fef0f6ab2a55237f73cf429ea99b34e0ce64399036a497d8e1a39784689f3c6da4641c49cb9dd88fad01460e1c86feeed5850e7f2514fd0bae7e5bf3da7ca0e9c5ba2dadce99d784bbd5533b3281f3dd236eb0cccfee37348c3991d75f15e1bee02aa91159407e55c8790f0b9f88cf919f38dd1465e29ee2b035f1b7f4ff9058e13713dd58318ea727e17db230db58174436bcab7e21d614c81a714c63aa53c12ad31aa83d1f85516d613b39cf3cb80c93c10af076bb865f459deff5bb99ba01f73d5048e592f7f5a07ca7a58072b58a798eb113b3e43d5907bdcd4f5d9f4cfac6cd044f2ca26fc604d796d9d7f3b736ed7d1c091863d1b5a2047fcc1e3395c04745ea51bced105d9c339127ddde973fddb7a98aed28df7a7b594224f8745d7716430da00b7780af8a37e7ecef19e70142ee7e15ae6c32956bb677e970361774383ddfdeb3e1603ee6faf32fe3df66d67e0b36e46d5e4f9dfce07934bace17bc0d14638d5d19cf1bcd1f6a6c1be307b3f7498a3b070f5f8df3ee7bc386b9949ae553b866b19eb36811ec97ce429d8175ad1797b5e59669d713f8e36f93b181bd019427c637608162a9cc2dec89e03b337b6c1f7bdf1ffdad8d7ceb36f706cfdd8a35ef8a8defddbd82b8b303172bdfbcbd85f9fc70bae77296b781b5bae2dd92e8f4d9a360f67d67d8efe6e9f7c3fff46d2811c938e95b6621b31ef9a7b7dee9e9f70c8238ddc946c8b412b0bf1937e27d3760c5c2dd9694276ce669c764ae76d84b5f92dd707e9bf4df2fadcd1be0ec5947a6fd4d1aef0fd3c3d39f17dc368c27bf0782971af86dadbbc718e94708342b87c1dca833ac5817db4847bec53c1bf0bc956ef40cf146a2a82d7c89cb8899933e63dde1fccf3ac99cb4e010fec0bf3aa49c2abc4ea74a1d8f08570e4d9432f651a38d45f2fe65ee1c7aa6d7e3ab36fb8dd208cf61bc69a76a696936d8e46fbdf690dcf22e36dd2b4a69ab97e8bbb8d791ff459ff19328722f9db81f20c47d73c32fbbab9d58e2ccecb2ca90e0035f93056b52f4c7df38818702ff8c673aee3da5cf334a06b7ae9d4ecc5f9fa5623bddeeec9daf333e6f501fb554e25e75418af3ca88ccebae679351c8962b7011fba6c7e757153411ea0b63613d8dfe9684c7cbda8630df34fbeb9aedf2b5a37326b033a3fdec9b6078071460e8acef0fa500f14d76709abcacf2f621d1cc147d0a391c8ecff830f17d9bc2e04e57e52a7616df93ff8bca2593946cf702018ffef02bfea1c38e88d2fa98143a48fdfb2f41769a78b77c40f422d60c81cdac80b0b736e319659b91b17eb7ad525de9dcef0bcd9265488b7b613b58477a9ad90f17eaccf71c791640f8c9f9533bf62102297e8ff7a56535fb6fae19878237b730c0698740da503b1430abe6336643fe38ffec3dfe210a3ef994ad6093bf058ffe19e5ec1fe52cef8dde6c2382bcc1570ffd409b0767006a55107fe662ac2b2995dfb7bf66bb9b00e662d53fe31306b39adb94696ce6f756d977dea24df707df67f89bb46c4fdf3f2775f0c74f5bf56c82318cc2d7988efb84062273c9bbdf5bff891b778e2cb686d724ee1ef738b3cd213aa5db8c5b8ca58eff8f99df64156926d4a1d53d7843a7ed9840713971bbe636db491d701f4204e2b1ef3ec9419bfa03f0f773f98dff210efb966d5fbd5f8ce88218abee27d78fe6dede5e28679c53908380fc1b1ccba091dc2c005555e2007a26e0f82e3a6abd18e0dd1af686f3afe9df62a8ff9674943c196ef1c77de9ea3e6e7a03ab9702ae2ed49fe1e37dec5dc80553daed1ef3f26cec507eed08918d5ea84eb37d763ae7b4bd7d875f993eb0dcab20def10f71aa7d0d71298da8f1d7f08dfe802409d816c33f20ea9e167cd3547f5eb8e0b4058f17e13deefb9e496a3f7b2fd2f3e63e7627218df636f65c675769337ddc446cf05f405df85a939b6453fee73ebe4c45dc1fc3554e314aa066c93ff91fa7856ae98135437c35a31a727ef5d1ddfd5684732afbe6e18a49a724306272305ea4fc5712a7e5f67a9c156177496da7cbf7543b9715523ffa475e13eca97fa86d1f9345aec5df08ae3b219579af29d6e633407abe981d7c86509f6a27ea59e0927d5a321f62ef98394ecc5f2fac360274b9aff95d96badc33926918f8c3d5da1cfe09196744031c567857bc2d7a08950072bcdfa8347ee0f0ccbbd363115e02533d245bb5db7b709ef864b3708462b7f7895d817dea50d3e776185c79af3cd19f1b9bba3bb7cd28fe3c20fbd483d136e457cd5881309b0d724eaedce05fae71ae1cd27b5477f83fe49a1c4683e3e8d63e57fc478ce6e892b24902ac23a75721a332787e1f3a43adc9a78e9a53db29331e19c6c857b27431de7d4d98c6b87b8d6ade06deddf7850100b4fb996e4827c207ddcc8eb338d09d35523569a739684295053a867612d7f5b9bba7202b9b45f8c1bd18b94b99ff1b3951f426e19f66766e212e48474e26b493a6b2a151f8f9f21df26620347e5c3fd26cf27d600ae26f6ed7e988fd8f7ef8d9ae19bc12dc78b9c1a6bc5f994c3c3ef2a3f84dc3ed469f27f1e9fd30dc7eb6c49fdb587ddfdef8a494d18e7d35bfa70afb05b31c63e97c7dfde0d625cc05b9ca31b2f466fdb9a32df104eab7ee739a4cf3ee3dd694071c8cb6abaf11fc665d7be122ee2fdd6f3638f647619733fa4021fedb4583927b429d686e659c07310460b7072d2b98c4be2d5326b285d02cff77c22bc6472189bf9a6fc6a1afc03fba9347a8882b579c2858f7ec2b26bd1ef325c52ac072a911b3d656df5d900ed1268c315b10a9238b9cc61ed76623cb7229bb57e4d3d9fc6234dce8e6cc4548fa18e3202bc1df59ca7c8dfdcfb4d5c2bebd7ae57ab01e5115be631fe09cf97b7e368823cbca4e7883a29a48794b17e44c63d8acbe18af715d9a4742a0a9ad3139d5d7945d801996f247d369a07ea18f9c293e3e771e5527c91eb71b50f104fd2d5c0519caada591a8ebe769406b155c09c9f20ae4d03095ca1b11558186b639e3169fbbf43dfb18d7faff1eff0fd006ab9890a261a706e6c979e4712f56f27101729b4657fa8d75e1837568c7fabf515100f5d4d9dd6a33a2dda45151f973076e167f19f6bb45f92fb2fefeb85a49398e25ad9c73bc47466f47795cb90eab97eef3fa756305553c3f12eab6960ea4b1ab0cfcf175857ce70ac3d9fb12576bc0f34f12911f7817897d390d65ed031be1e313022ae037554c9651f5b62aabd195d07728d97c77aad35fcffb75e1b507fa968701cecb119e70970747b2bcab5172a42bd004d7cc5888df1567e34e87d17d412781eafa06e7ea2bddecfb7c03d4e3c442b2b3cd23e9c5719d5b1b2d338ea7d7ec447e1751bf956716ea11b3d111742bc6eb087a756339b74dbe7e4ef983dbac47ea2fb75d59f4b931a755d26d44f385d37e1bb4c207799af08ffa31dae39d75d0235d9d6899d96ebda39ec4b5a33fd7df43e8035339fea00d60deb6b5bcc17df12b78ec97def638a8da0870cf944681eeac1c29f11e6017804bc850a870b9f7966de06742e9e88d71cb5679d83bff62ddc335d41be9c8ea99fa28dd2cd98e797d6f101715ac291d38d207d51d45eeafd1b9ff0a75d747fbfc2f0025d9f3d733f3a1f56eec8e055eedf21437c990731946bee05dcd0777b7123bafb67043e036fe16d0cdfe2e2e11dfa7dd69ee3eb714076f62bde0daf0f7b4bd7836f7b2be3bda5710f65dff796c23da76e7897c086e7d3983b54fd598abe16e25df1fb71fffdde1e13b64d202e7ca850f7a11faf6fe734f4180703aa8987f8fd43fffd14cfed76245bc975f2f0114bf303c70e753516d8d724046aa68a59453852e5c4dfb033801bf788af10f6218dd71ff74fddfc7dff90e6e7b4f6ffe3fea118f1c2ba17b09f13accb69d61ebdc5d0c12856c8e9467a8623a50c5faa36f639a333c52da6f56e48e786761963b0b2c27345fcd2c0fd7165dbd1db53e10987cf1a3d22de0bb285f28baf913817a32105f77486e3d268ee1c2f65d38f937f8977359e73ce70bc00ccab4dfde9fe396e9e9f7a7f4edff368b8827d54417bd7a37ce49cf05d5e0afc43e0bfa1bdb5471b7a5efa77b1215f92382f877bee0f423f502c2a8ff976ed0b9d1f5ebaa3beb89cf27576c83dc7927e972cb1a7a758be1abfcba775102206e07bbc500dd7ea9bcf4a71438d3c9ef3742f08872566dcb3534f5beed9e9fadf6bc8d1846febe65b0c939c8672dcfb9f10bf8c4bce8d71bd3a791edefbfcd20dc7858bf838f02b615f0409decf061b15dffa7a214774d7d3073ea544ecce40e69aaffd421c815b8ec3ab29ebe0e13aebcf00e4948d0c47977987ec04dc63805bb1c3f7f8f5ecf467489acbabc93d3933d285a0b9ef5aafb8f15982bf8acfe0337fe75bdcb0ad991d6b2547b106ae0bb3c7fbbff7fb2d239f7eadc223d5b05f4ad46bf184154ef98ceccf1509fd097dec5b78a91fd829dad813612091e705b0a0684b8067df0ae695ffe3982597a1b4842e1bf155d1b3d72a3c57842f2a3116cb234b3cf8b2ba255f566b3823756b7cd9fd0aaf93c219a9657f466ae01e99628e5be1599edc6114093ff48c67369cb736f8c5349ef7e7730ad7a233ebdee782f31cfdc8fbf3398f553dad5943067196333dd5573ca3d1b796ad24ee58ea05b4366ff2df717139e1e2f8ac92a099d88fb38379bc3571e92cb79b93f1a9896382f9c6d6c027641bdc35f687f89d4c0b8e6f63f251fb333790d382f20fbe133703aae93747d6a6c17d469c41167c2e29c7b22809db5e201fb0271b8bbeb734390773a6dbff203ecd47ed7cedfff65d8ae59e47b2136388291cb189b1a6f4c5e3545a84bbeaa8df2f7b1e27886d268c3bda3ceca51483783ffafa8eff2c1cd31ba141bfc29cd9cf789ed9ffa02e414e7d5dceb2ab9be8af98d1754e7e4f668f694f8d56a44b4e76ee23c6dc9bb76a96acbfb5a078f1a56e203e488d7dca22e3d7f23b913f7b965867cfc9d627755ee0f358e8d7f4e3514d89ef5c1daf953923c1d71bc4a8a99992ed056e2fdc03b532beb8f6a15f66a98263ecf8e48bcfac92f3b280993a79322ffab311fa3f9983b8cea9e64339a4ca1731e52758a72231da151969725943c2962bc6d1636ed6b78e2bebe0092576185360cf4c6c05a2f4c363c1fdb37970a439d615f0573c8fa4b319572ef7c30bace36b1d305feb9af7af6a3bc6a8695501565a93fdafadf05aa30fe19116b190e44fa6cd2fe45ece4ecd43ccec0fd09fc773d75fa1dd0d645a837f2f711d0752c159359158a30d56edb25fb73389f956c8592601d4b643998bfefdda58611d29b14e473a5ba3747c71e32610b5159efe160b15188b203729e43951e7bcde45ff315fc1be10f568b6fd7382bdc158c08ef7f06ce85b05383f7d1c28f35120998b692a6f3136f6797f711d49b9c5f18e4705fc16d0770cfca3f0375ed5848a62e76bbc97d6837f9f45df71ebf3d41b417f1bf5c70de276845c6b19faefcb9b5d79025f46638e246bd927f7cf64bb73b4371bc53a2c6582bd90bfc50ec97387318240db159818e109c6e63e7608d05e257dcc30a9933ecee96388a50a169ab88a52ac93467a5ad1f97e9fdfd126f6b8cf0328eb960758188db9dff238f26f791ca94707ece11041d50cb04f54d7d497275f719feb89508c0d54bfc516bdef22dd91b722bec8d82aae35e3c492cb10f20dbbd304ef8f7ded1c87d73ee50fac03f15bc139ea2b5cdf81441b3341bba9f352218f1671994c222bfce49a07ec4f3be61867cfb986ff6a5fb8725c056f86cf11f6c5767462df9ad700e069adf871ff4cea33e5f289834b64e59e39355b7c2f650f699cb35530fbab4d59b1c649275f783c2087ad0c1e7503fb0fed81c29c787f7d38577a9f6b48785d87b083d3d2af0fac2798e550e3a79c9518c5f606f4ff1ee394f689f636c6fceec6ebc712fcf0ebb32729c74b398674ed8dfcbb3c795036e130f28d9e5c6f7f14f1051480bbb097cc7b7e7ec465d7e3c5e434fe4b7f7a202cd1099fe70f9ed92bc8fe24ecab23af402bdc82e3b133f7b4ab6c40efaedc18fb77b1fe18d4373e3ce67fb17c7ac68071f82222bf33d6c1a7c0fe94a06a842da80f59a5eafc108f3897f13ae5dad7e92d19dff5dad99b4fd2ff4eeb69f090db2f9bb0ab15e29b5257da0fd7cc964e44716586be63c6fd231057f8a873bcec9a8767e9d7f7cf6e449adffe5774ab35bcc4aa7d8a77d5856c7a517a8fcf53f9e1215274cfecedf2f03cf9685c824f86fd2a1ab9fd85a9fb5a178f6ccb67f43d56dcd70eedd1763d2dcc3d532b08232bfc8acc18fc737958274e71e93f437eb7d3b8da3e3c6f10a9d94736267f09d61bf3583e2fcd3d404f25eccc3d709d46f19574f454e87c7bdea7780f63f441ba7683bbcf05f03dee9b0bd76bfa77978adfbdbafcf6eedb59ff5de45b55b3eef1f3c88db7b1b996481fe7a3d82e2f8c6717dde367b53fb3fab9fd7d3ddab01e171ef9cfd827eaa50d6971253f2e8feba5e8bf4b7c386a7857b7eafd9473bcabae84df10f8ae07c2dc8bf7a8b97f17fd1eef8e575e5b2b2ffcbeb64efdf791cf458f57dbc7cfe7fd3a68eee6fadbef23155e1e3edffef6791791feb676e3eb638d7038aed390f644e03c3eb7b8c6fbca3cf7faf7e71ef6dfc778e1edfab8278a71d47fbf5f7be8b77abd6f09fb278daef77392e4722c3c7e06dffe3676d778bbbcb26d11ddc33320670df256f67621073dec071ca37fbde118e52456f531deceaee85302576cff9be6f137d1ed37e313fd06c6ed713fddfad743d18f215d236a36a3241f8d05cc03e4a0de23ebe19d9ab223bf5c9d8e8f9fd5afab54f07c7cde7d2640d39762c15b7df29f33e68784b76a8af7781bf17aa71ae12146fc8a180bc22730df04e7472877037cb5b086a02ed91c45b3010d78daf3fd3587f15eba8f359c1fee373f74c179e6147db485f115b353f77b2ed886bc43a28299f6b4fd98f3ad21064c7cc8f94ed1872994b020260f302f51704e644a1c02ff657d2780fa4ec9f55cc895413f5b56524f82c275bf8f6fbaca697f069adecbfdc8feff3887ec32cf37710092c6877d645d5ae2606ecb94790debf708f5d7a695af0facebad73c0d0a0cfd33fa3bb195739e31a94bbc298f71cb715c7bc8315ebe6f673923d8fd3de4e5c2fa7d4124fcc5b053e87154ceb694dbe86ed1a1e8fde67b09e07f18e3879504bc8cbf89d503346b1df87fb6a637a1eb5c233837c681da7c5a46c28070d3573c8097bc8612ab9878dce87caad0d17479821bee570c3e7a1ed0f92e64edf03f5f4ae2bd6467443ee41b598db14af05183687783b1c8cbfeb504c31fe973ec6287227ac1562b4835a85f68a7c9665763198a1555e1b7dfedaf4dab52eacff5c8f23acdb5ee326209c933dc7de5b853c334d7836bfcb03c249899fc49f38a17dbb8fb1dfd32bfd503c5e4767c8811b8e892388b594c3d20fe7f83efaed760fc0fc116f9534ef51f7efd15fcf2960ef4beafbefcfc194396bf69a7593608d65db0dd7c7256abee88c6b039af427d14649c02ccead50695cc32de13d0a78dfece445cc030eb8e8e8b856c055846b243b792baa4bd2d84e6fbc50c5a634ba91c76b8df99020a17c1ee0f080df906a718063019f6ecfb503d45469a3fedd562a54dc13c9f9c982f9f6dd03e05c22ff19f5a5f2cd4b8ce7379fd7e857915fbf6ec2a7356bf974a327f21389c3c6ba98cf9cfa09ed59f515b7ecbb571853e6e4bfa472ccb866d6e8b8f520f73e35e145548b76298becdbbde521bef7676f385797d78572e1f990b7ca31f1cba0a67a7ce587e73f5c4fe01904b8ce29c581a4addc6ee9dfaf189b8e3ceed559e6c8c125edcdf6bfff0df60f2790ff323aabf04c4b8c2939760a41d78df4c453cb22de288d5ad99d1e2ff203fffe634d7e9bb44784eb7896f7f91ed685e07a4d0ad824f81ee6022621738be915c490c8dd4cb5f17ebf0dc08eeb1ab9b4b41cf17a5931afbba23cb28bb64c6af44d32b2eb954579787d1811ae767cb7e6c00fc3b9133b73cd8c716601d5b3f45bef7b404fb53fb32b1fe3ff55131e2af6d7608c9f11bf6334e2e96f800deecfe9fe1d61ff184e40ce7d317e9171adcac7fb29d49608b396f6b085bc2d5417ea62d292d36a0079c915e534970df8739ea49e72e41daf91a3242b1688b95dba665d5ea14e75c19ccb12f9ccb856e81cc6b5593727881d51e700ea13c1ca0f3ffbbfa1dd8098be8d950eaaed1fe7f47686ee2e7fdd3778ee2ca947495ed7c62e459c6b41de21fbc05a8392f8c7e6c584b9cb9e0bb6170ad682a921303696f8ce8543cf1fe8f1e9565374dbdf9f3fb35de2a4fa44ce64e07d18dcde5f2f881b936c6430af716e462ad7478a2736b44682aaa1be041d3c996bdc9d118be9e6be977914a37e1ee5f5030ff72c708f417fb4807c03e2ff22e2545dfb9af8c35bd238b6982779ce188bd4d4a56b885fc86ee5f38ee7f0b48f509fbeb7a37bdab7ad225b44d8bc74c5b910c34704fd5c2fa0ad34213d9e2c38b306d68a7b58dcc358f4368b74622315333f9187fccb35f340bd52af149c3172c2f6eb47b7363a60827ae84097ed2556c72ede5667a3153d69b93fc85e93ee9c525c038b884f743634f3e1341c6f633eccd98c056359b3187bab605e856f7a153a83e715b54bdcf8ba265c389efb321b7a9cbb5c52dea1b0c288f983f10c15acaf6df88b107b35bbafdf433d07f35892f5535f22d63e5576b7568cad3f9bf75c5a8188b0d7079f81b16cc18d432356462f21ad3dccf3482d0f26bfe7bcfd695c2f6b3f624cf0967cd2afdb78c25c6c91379638d5d23fcd8f3558533e4be7078e9b8b681a525d4778a4cf6147e46b968d86674bb84fb85f675abcded6d6dd5e4ec321f36769e69ebf5b27651af8f7635ede8d79f630e6f1c08c79de72ded13263ae41df29a89b30a5b9f4098bb5e7daab724c4c9d0367a96bb0b6d1dfe6bd789c77ee0dba7f0667cdfddcf61bd6f5b6a08feeff17fb6cf7b8cfb8a7ebc785ebd1a0534d7d40d0639b0763a142c3bfd4c74b94df826b20262ab0e2d7e7dbb9dffb1313c0b95c8d2d72a17eb2c17332424d3d7f0639b46f9fb7c0d393836e23dc734d1a3c37fb88356cedfe1aa00fd85ea9a6d0c79aa5d18b50316130eaf17abb31da49abf6ed37bbc3f69dae893ed3dee73e94973e76c46b9dd0ffccdbfb6b726ff199fbda55073906e8b15e65adc12e4b156c97e0f71c46c8a30e7306beefdd3bea72aa3dee635fe1da37769f745f5534e5fea6e701f10db3eee978c53d835a7c20ff50fb5aed2ebfdd6f09fd97a82b483ebab3bef16af5fec5cfdf9ed30aa605c71f5d3136daa488c31ec6cc33ac237b6e71df94b4980756f4670eef953de807a09601e3ccc9ff4bddcdcbeffb7b3360ac7894fec117b97d2e455eb09d75280e1a29e27dcc308f2a62150d65fa8bf2413eebfb2eb9c7706585c73fd970d0409be891cc2e01f5de3bcc3baa72c17d8dafbd6da1bedf519236973f9caba77ebcb9fe11dff71c196e8d5fd7bf9da3d453057ec36d3ccc3cf1354771577f702cbaf67fdcefb92de81c1a8d3e13e7615fa173191b0e28c67241ee460de3dd9f9eebee7d3836d035e1f1eb018ddf923913e556b0ff94d7cd8fef67c176995c649ccd86f17ff81ef41cabf018135770ea6e2e640752b47d3173d75c6253cbe6b8e7d4518dbf5f3f14c3eb01f93321622b829c7880bde5eb8d539079a09274c37ac2c7e8b7b8507cc6afec3bd536c798595eb870d666f5b86e4297b89e76cc9b9565dc0b54b01d28e698d7f2b2315f0f3803b7d85b5253cea0bd624e4fbc56e65ad417e884dc3f083ce9bd3dd793d65c8b748823c6aa65ea17d476574d487a33ed0e314092f845db06c7977d02d0e3d37dec5550ac9aa1f6aca7495b3ed34bc8852de91ccf34f45379cb96c76583580f7bf9555b4673ce5e3fe05f028f73f1376e54c87f53adc770754a8c2b0c876c1f371d98eb91febd3179c4cce829213e9aeeb1ecfd9016b8e3a6328fcfbff3844657f2fbec781bb80f182067e897d3d1986b7a69ffeed457b6dcb5c401ea9fef340d2dd38fc93c7beed2dc730d5c65a8811a193ed47fce6cb74d5f2ee722740d6b2bb18270e5d359971fc0e6c5967f569d1e0bb7668e4f0bf2e0c92952c45bb29a0ce1fc17d645ad529397b22ae2f35b3afcbce229de9a7ce517f2cdfae714b5a5c2e4f5f46570f7537e07ec0f58fb33b85e82bc90c0bd2513e6c8851e6df42910c3e715cd99f5b00087240dcf27f81d46bb9cf0b41fdc6f263ae233b0e381e09a6bda109798288527a977abb205fac35e36696cee6b2db7d4af68871f42510dca39533d572c57a9f6298ffb292896ce7616fbb9793a7ec0c738a02106befbdb83f645e58714c7d6b39bbe0cf470b05f94cb9bde4f00f6b321bfc88a6fda390aeb8129c422c259a990b59d8e5c975a7eefa56b666741751addf9ee7d1deca7157eafd9fc54e8435d8cbe11c419dffbc2509b7be169c6940d05f76be6628363de3e51de2a9757c62bd7e3d2a75ef9e4c875f36dd4d5bfd548f9992b6b668b871a54348cf7ac97555b0f9c72ce70bc723837a4192fd4ff2e84d8e1f564d6f3fd3844fe6fe3f01eb7ff504e827be7ea33adc3defe81dfac0dbed2c77c3de22a15cde13c424dc780cf28ed51cdc72adc92792ff20deb6a2d8b8e6aecd9f3b8f4e8ffa91f9f7956b1a627cef1d58c5f31ef34f6a36ac09f629cdfdb83ebd9899ba88b7b5fd1dbf4f1434b758883a0f51235a1e94d954e3b20ffedfc9887d5c89d970bd6fe5856b0b7fa3d5fa32dcae5b8b4b03625b30bebbd7f2c110773c29e16d060063b2c7a3b82f99a1df1a9394bd29a29dd0df3d9c0991435e1714d7e5b6a9e31f8887707feff2162a083d192ce5d990709e6fb28277e7d9e8a57d3737de4774eb213bf73499f3d31bf029e5dfa6734658c08da0ef5889ff8341ab28ee5129672263aa34181f1199e3921fe1d7ccca784b9074813a0602ce8bef56fbd0a4120c7847d48eecfc1c15741f88392b05f326f6788b10c1bbe37d8bf4e92a679ff8eb6d100927a66b35d976e8dbc23aa8d1feacd797ce15ccd7cda86b1aa897b448755f086d8af34b4691ec8df149ff12deee8c7f0f50103339db9ac6d40b1f1078f61e25cb8072358f9d44be89c5e7bfb027df1cef3f771450dcfcec4e39443abaf6503388b003148725467d47b90d963ea8d9cafbd8dc7fdc83571ef491d77ec6b49d2a813800102dda4c95dfce7694ff33e148b29ef43cc41d3ef21ef8458e0e721733fac904f7c54fa8cd3abf09c277c13eaca4717c42009c2a8b5d33b7ccc284de1de2f70b6ba233f622e95e4649bdada7ef6d877ed6ec655b731767ff1bda779aff8fbdb7abbb9c78d7dc45dc035eac7fa7d262e54bf2969df9ff87cc9b281c3daee65cae79b7817c487a2b323f310a42b38f38ed0733bb7c2ab9cfc70feb6ae68dd06d433ef31b7cd82f15cd4ab9801f696790c7e38118f3ff2384d05e63e02f6391efa00e97b890ae6115cc3eecfeee382f03ba963f56375601f15f38d1c7f1ade80a7d819f279f8d5ff76657a49b03f3c224d68c489aa21f30c880630f987d8b24f55437ac33be44888fcd0702ca599cd75babcda1dd826bb8a72667ce6e2f3006f0ad8af0cb58747913f1b70be10cfa0c8e57d5579357320756c6b6bbf429cd3be617f42af0cc62b38f5ef03b50effd66759ef883321db8c4b8e85b2768cd7877ad838e27b99efc3f5dc7e1f536c7cafe351601e0df4abfc5b3ee4788eacdb18b38f4afd6e9b04cffa773995efbc2fcaa6f95653b72fc49331ad9ad997d11b053e8767aae3d723e90cc7d5dee0070ffd7c20cea9e5f32597c9438dbb5f4f2e8fb5ceac0bce4dfd26f7239ec379998f7cea8d3a183fd00df9795301bd5be213fc29c09ed9233dc175219af0f85fae8b2bcff1cae0d7f427afc505e37ea12ea741478bf56be1fb584361cca01729f591f2f3bbfdf393e680e116be3d7f45bc18323f78f5e4b779f6f45edec6e2dfaf753727c164eeb75e323d78a08bab473b3c9beaf1dad86ffbc463f37d3c91fb096a237e9c194cd121de1df859c48a795234da16cc0dd689e11b065b763930567065fd577321e613e1a5bb8b2fac6ffc0eb4de571dd6bd45a32e262f67b4d91eb90d12c686610e13ce1bca5b77d2074c1af0b8501e242c3ad6bba75e49657a706e7a2d5d305ee481f181c0ae190efe0d8fd57635d950bca4488b2bba30664aeccdf9708e2cca29e53e61ae822d5e1ffa46bd07ff23bba4fcefc2827ef4e0f6ccd1b05286576b1e67c3c9baa93efabfc5c82333e133877c3bb09fa935e0bd32034c7a2ac60ff5c6cc1e476023c1667cac1ba3132400f377bdf7ffcece8ae2fa84f2bda48193af4d5e479336a660ee1b97b5fc977bd2d1fc86d92b778aff3d8ca186cbdc453ed73f73b2c587b8859aa32871fd4689dd605d9ff3e8d4cb552ac21a21bf6d1059a825106bf159182d6eccc770ee9afbd7aaa632eb0c31e4e2b4425b3ad5fe0fd65683df10fe85debfdfe7c8c3283de951fcd0d4571c9b24d5d817e4135fc8bf8e7d7489f735e51d6a453e51c836036b44fa137d5dd9317e77b9ff457d5cfa2d760c57388c9b027dadc73d41f8fc22791c5f6fed87461f83ec89e14aac72cea5e8a7d28f499b4da32fea5cbcbbcfaf15f916f27a8a90e790b4683b3daeaedceba50705e3fd3bd29756d07b210473c37405db0f851cb0ac63a3498f13f299f324c37c70ea134e8bebcc66cc605d021610df5db0bf02bae9893a0ffb6761eeafd4f82ae21a6fc337e36b6e95c1a6968ce9cdec92b9cb53ca2f2ffc23e7eafa38e289ed109f5989d1b3bee7aa6c2f8ce5d0f9e1cd606e39f6b9721f1d71cc327f7ba667dfc6dd1356e856265ff2c67d77e95a5514935636e38f16d985ea414787d77bc9fe9f0d388cabd4027528b3e77186782bd2a9dab00ea2240ddc39edd9ad045f2c32581ec51ae3f43e4b0bf7b05021d5a483147d93e705f9d082eb437a7c092106b0478cefdad0bbbffd7cc89d0827de355c3bc84b930f81bc4b5b1bbeb247fea0950a39cf2e19a7bb363c88ccb3165c4c2cd15526cfc4dfe77a7c7acb5b6c2a6f433ae37d7c0336dceecf3fec270f1d9ecbb57fa4eb8afb7804f8aef9fdb2ecfcf118e78cc6abe464fcc9d5e3bbbeac9bf08b7f5baaf089e315c5fd258efd4a3ed836423df88f7837f4abe6c7bd8d56942ffbbae5cb9847c937f8e5b4f795738d3659170e60373229f12c9411bc6fd68e937d75cb6d34a8675c5ae160a138dea88dbee32d86d318c359bddf6462b71663b7e3b1b0c2fedc32f5b8b589c1ea71b57de4ac5afbe185c76499cfbe8d6738ae6f7511e72e6e0ce3b41847ea71ed24943f2bac9063c3e67f8d0d595bbc4c4dbcfadedf37b95eb6b11d0e64ce9caf8ff7fcc677f542da49216a531cfafd02fb3df236261f50199d8a13638e785def990335653c61be748c7fcaf56077843cb716e53773c579ff97da707db6ef9a38a6cdef9ccd187490701eccb8265d45dc62e29df18d11c6ac81023e2739aa74c3b85fd0524ed4c5e6f94bbae683f839e38a3806541ae4989f08879aeaaa5c5f8db0af6f9476bf065c074c6e383c3cd3588f10dfeb23debd0defb8bd31670f3ef0997c37d6047e76259e3ff1dc225e28e7b4853cb1fd8bed3bfa3d3e62c15462f40c038af9eeb56243c643ada90e259de77783dbe4f154764c71c69879027f1afeef88f37eafffe775403eb24837140f5e02d6d15c18fccd85efd314eefff93e50ef408e39883b03e0a543bcfdb9063fc1ff8adb37d0f2124de8c5ca47de0987c6d36d5d63a749839ef53913c5584cc466b036d2dc0adfa897d0e0d77e5ac06535253b6f719d4b34a4110ff9d61fc7b5129e4cf537ed96765c4d5957c5bedcec71ff1c6282ba97c125de8757a3c3cddc97468f85756784c3bf67fdfcd415f43bd64a0b424958ed086cc1b31fa7c138025b20a046c1be589a3d5f6fb99cf0ccfe419a07704da925f7b29bbeca79507b69f658dfcf9057c87f7c6f7b2c523e270e5eff1c6ae2b36d1d3196e5c66f097bc6021e07c00cd487db590cdf795ba8d9716909b150e169819ad1239d56cc332d6fda6ac1a1644db77eafdba0cd00ef41fbb88b5fcf03a9a28fb8dd5c81d33515e302f77abbde0ae690ed905b93b54583d0e46b08af9836a6a63b85beb25713eb606e7e1bd11a14a455f083ebacf3752a4c8f864ecc3cfc645f58507cb2bc9a7ce121de8f78be45998bbb9c09f542e7bf288f557d49e0d2c51c6041d89528432e779d6e5eef75aa74aa5f29afc4f582abe1fe601c07ee83a0f4c32bc574271a972c4e2e53399158ebcb8331e5018f8ffc0e412abcd6d47be6d767ce5fb90bc8398a766e85fbfebc8ab12fcd255fff1aef2b97d739f70cd53017f54da78cf990d0579ad44d047e04d69fdfdc1bcf11e8225c6f5a8da791dc5dbc4540f978b7e94c7f6da0306e672c66de7b9f97973ea68fdd86c61afa3ae0d9b0965e8f1fb0fcaef44aa357701a461663d5428d7350911f7c3e26c9650b987635ebe6d603f7504a7e57fad3a1ba5dbed9b21f8abef50d83c439aaded624b75a2ac730061b42fc5cdc3f3d673c5bda51dec75e3ed4e254f6dc521d7b58b27e00f3a931fec9e434c593b1092e6036a10f7a916dd87ff07e76b56fb8f5b7927d33d24210eff116d6b3467e8737f6f55e34c67ee94faaa3ca2ef023f699d4734eebc2f49a528ecf53a86b768d5f8f34775afde1770ec5f3623d21ecac4dbe82c9b5fb8485b259cfe125839844f4b196325ae4380f53ee6b4ab036f293ceb4a715ee711f73b46d841a7162c89a1d6ca78c4680e10aa39e2ef4f912c2579f291fb0a5deb96519208ea452e1c9e85a64430b6b2ccf5798df87fe456971ff62a9c2f7785b5b7fec5fd40d73c1bfac32453aa8acf33d6c89e3e454a0efa7573b755b8780c5b6f93bd0dbd8fbec65135db877abc2719fa58ff1cf5442cfeb3370ca0a2bfefeecfedc07cd062f9d1c18d717562ed7959fdfd74d7c5f1fdf95594d3d89ed7b417e1af57d9ee3dd698fb96cdf8a9de19eea2d85c9093b754075ff33fd762a94bef07596a4e95e58dcc759e0f710f73fa2de18b67df03b8d7c08745fdb917b4dffbf31f59925d7cb5cf81ee03156f41eb2d3e392f0bb89f3bc402cb23812275a17ef0b6f05bc3835f48ac4df6340ea15d4ce70087391d9e362cb3cc6fa9dc621b8e7bcade1decdb152c2ab1af0ddeffb99f27ac7634c9ccc4db8e71a6c9a6df68fdcc4f29271fead6deee3f863bc6f895bdb7ea267e0dfb83ce63adfec1f3fbb8cd73cc759f07437c794cb19f1f7f3287b78cee9aa995dcdf7a13f442b73ae4fec71ef471b9d02c00b536c96f9c83b93712d2882da8c74984f371893466d8afb3e1a3226b8b038f7115d0acb70aa7f94bec9af27e43b5f5796e1781ff07951c0d9039fbf738cbc6e66d7c5edf7a43720204facba7a4c989514f3387542dc7205e5045fe82c6be8b928ce41ce958c78b5c84f1ac8f1f39e6d61956d0c373ae54d58ff5446bb9afb5ec6a82b0538afbda91d381b7376739f6ce5d0f7dc8db7da6ed8f6dfe28e2bf77e139e59075f3c0691a21e065d6f1e9e897cd90c754dfbf5fbc2ef8931c41be1376e3cd2cc53afdc9afdb25c5c4facc1388e5e5113696e8512d649721acba964ffa38bf734c7ca169c6f29513bd72b1b79e1336ac9319143b819c7bfcb11e8a7bbdeecdebf9c503e89f87e0698db265dd215e7a2482ba9f4897f9fd67741b5605c9751c77a41d44373e29c027dfef5edf396ec19e6e93ac178eb178e05ee3f97d04f0d7ea94b1cf661361926f7798d58ebae8f8b25e2be9ee4c4f40a977fddcbfbf68df672bbde6d6e7b59f9d7782bbed5f12f54c73f993e7cd60eaa492bc5e0beec5f0efb62cbb4420eb73c1c9346f2256e1be7a7c19b551fbd5f007917f7001a2b0bc050524cdafd221c966fc5dbea6ab4313dd6f0a4ffaae390f16d2962610c068d6cfb22e63a2be37921466cb96679774d49f9dc7620482f27c90be6ed7b59719edbf470470ee7ad23ccbf8f6427933b7c0e695f6bc2a04b0d3910353857a415555aa1c53cc1321521fac5c181f594933c66aedc20b21a3c4b34eaaa0ab2e7e99e35e5830be11ff99dbfe2dd65cf3e7a09f822586f564db8ec35f1ada6fb887ddd4bfc7abef67145d4449784dfcfffc5bd8805c657e6b970fcfab5986fa673ff0839068e6155d750aecb1fc45b616c589db1c60fd96a7cc6acdef1f96cf4a9a6b4cf00575452cd3b7111032a9bcb1bc58929f5e37e71cffb326d3f78cec54e511dbf009d61d9d5ac27f6955cff5853f8d25cabf309b309359b16b85f4dae37071c34d66e037ca7e5ce66dbc2fab017d626c53d18b971fbebd15f76d8663fbfa3ff043a4dec2f07b13ea8f9c4f660bf5827c2ea4557f6ed966ec1799133af57e2e995b416e6751e12b6b61d470d9cdb8b7edfdde785b41504c98dff2ba5b9a66b47a67f89aedd71ad5291df1e915eae4e4953d73df811c5dc49deb674669d57b8fefca8995da1e73f7bf6162afcc2bea8e18eb56b5629e7186cd23e157c460e2aebc66dae2dc2eba7624cb8ac53bcd75c4326ae62d0dac25cb7c94fb49dc19092f64fb61bb00d0a4b833f0d02cec9d2998cef99819f0718cda8419f95ebdf3215a4ed72fe90a4db437311cc3117dcc54df1d59fcf90a3e17e18acb37bb54f3d1decbfabe898269793ec6dac85f83d4567fb4a85efa453e5ad1bc899fdc49c996f311e80fb7d92e4f96afa5bb22569d54861b89e31e7dacff3a87459938cb956c223de474efbebc57886f53e7a90066f8c3f3af1b3b0767f65cd889f6e33f849b8e5c80f47775850c821426d1bb52dde68cc5ee83bc77e9eb006773cdf74fa7a1b594f92bcc0bc5d568f577be2d7443e2ad4f144adee297012b6ff1c13554775a378dddce1225a0b3946033d9fd661e2b76eff1cf3a00de5f59973b86761b8de84c1a895841b5b73ee343378eb6b8d5a32a352cdba9a63893474b82f2dcab5e96f2ec9f6a854f69fbbd85b1ad9e4038c32e6a6cf48273adffcf137b535032e32c82536d551f631bdb5d9701e9a75748a54ef4d5e847d438c453cd946ccdbdf514ce619fc7e2a4d4cb048a5473edacb2243ed5c499ac2d2f72de383b8bf2c8e872aeef5b6dfe873e92b0bd7d4f2fa4ccf140de3eda6f7a340b387387713de83fdfca59457f8d9719e5c3b027b4f091ba167e998f3921c7b68c7f0a53827a30bc9b574d2fc0c08d381bd83dc179d9d0c766c3521ff49b5a712b51cbc358f0f9fa334cecbaeb68d4e71f38b3404a28f88bf972a33360b4f724f07d5e3f57b3fffa0cd7e7d4ed846d13dfb18d721fd77e4a3710e13de5bbcde4ad636d0f5b1f4c98e66f69be4faaf05361efa2ef16c39924eca7d1e5b7cc66dc4fbe63e7ed5f556b3b63ef21f3a8771d569ee39b284223e079ab78af320aee29aba2cfb6b04f528258df0d40fa8161aa0ef641bcc47bf0ea2752ab936f22e987b00b9aa28172dc2c23c837e83ef2899cac991389b7499b276add73f7f1fafb6541bdc8c04cf43a66e3606fbada1c7957c0f2d52e44b95f9615cabf377bb84f1d02d4e27ee3f989fc38afb78295ea275a0819bf8a6bb0638ef728278a5b20951df2d63dd98205c391bf43788039a309cdc8330c2fa621da31ebd8818bf205563117e01fa53a40a8225630befd664dd567f5b7fc1aa11b37fd91bdd5ab106eb7046bc418708fbd244e9c7f68ab16816f200aa57a8f54f65be0924e7c2953dc8926fbe78727ac37ca9eab80659da9443744ec6feb34f9838832fa363899cdaeff1eec8f5ec7994b5e0cbca803016d6ec1835218c29f6763236548eaaf1f32d470f7d6ce1696ec59cebc5e7a4185736316887a5a02588f5c6fbbcb5643dd89baeef2849833de7e24baae7265d483dfd02713caa7118ffa55807f87aeb91627c15f2e3d41837a26dc4bc09f8d22ddf27acfa39231fb1caccfc5dfb79bed304e11a4318edc88fd6e2a45e995310f50198c72ac90e67ce4d94ac37a2da636f4734c4d884d3cb374bbc56f491bdde610cd58f33d75692540db97f5c6c795d34ee02392e03a3a599d90d5dcb5edef764186e84a3b336311ee3c6faf71f525f587b612dcc240f3f31770d1cdfd0872226184f2857f36f191f1eae27cf1ef3c632276c921fbe300ed3cc5dba279b433d41841555ed7b4635a06aa2183be751ad1ff1928c5751ed91788a46cab1f90c0d57c05775bad3c503ff67a2b017314c27273afb0ea05d0c7e8a17dee9cb68cae1c89170b0b757fa4dc77b2803ff486b3aeb9388fbc69d03c7d4623d19b23671c7bcd14907da74fd99bcb87bae1b7eb1dbb0fe5ab8da071c8b5f4ada7ba9e9fdab47ba5d1e177e38cab2c3fd3b4e158f515ad0ba8cdc9b7e23e876f07ee818a79b6417e6f34a57b9e6f5f959931fcebc8398c32952d2b1894a177bf79306ec64d8fb607056807f260cb654fabebbc21a909fa4823939501312f34f5e1fef22d7d1ec5ae259e9955c3757f660c56bd5158c1d992fa0efbabdf1df623f0d8d71301713c3d9e49875883e75b866de78d502be09cf9b196128481397c63a0b7c18eba5f39fc65a0c7f621faf97ed98dbc5327a04603b9003c7ab980fcf7c1ed1e788f32ee8da51463d003a3a2f6ef6dda35814de73bdbbf0bbb8e63d55457df18c3d6a03f48ba8a747fde856d82b3b52ee6dff27a4192d607c4ef04ef7d7c45809f67cef631ca9a6f5b7bdecf6e716e46c987f4191069db2900380fb72dc8d7986da317333e53a29e5e44289bec31bf9912f91639ef3f6eef9869e2f48efe799de37609e9f82ec0cf52a4e158d67d9829604e6f7604d8643b61525f20c04ccbf9fb8873dd6f764c4360afd66f1727b8f2372b034a48f9e5d2e469fdefac51c565cb39caf77d437a8eb039d85323278a1c6e59c54e1f2f97fe41a00c7ad984f750e01f56c204fbcf6cf8c6556d6f2d1f6e607938f8f269c1b68e0bac90dcf833635ad5903e7bdbce16d5baad10f4ab6416e481ad841dedb0b690561d5103725aeb9f02e97f272f7ef603ee96367fd1637c0039f10e6a28bf7ff3806ef447e657df3b15193017214a6a76e14773edb068af1db8b68a2630d3e6a43798ccdcf1bae017a104f09e68b23ceb708e647a25c4695737fdc12efe3d8dccb7cffdd97d81e25e4f374acd9dbc7c1989f17ce5dbe2af8ae8742b8f329686590dfc4f9d2ca9a0de93ede42451fe8db075e4d7b0acfcffe7c2c46ecc30346d7e0530b4de7e380f3ad2afdd58f551f3f7f21bfc97d6fa2248edee7bdc1f8a1df7aa6fae0256e37dc737230dfc15ec333f511f7df1966c4afba0e389f59ebfe59f95cacac706934655bfe4eabfbfbd70de29d6afcce0b62f4e83bdd08f45818af4bdf01bf2cb2f93ba1eee76d4df625f2c365cd7500555946f79fbe1729e484889a70596df9dcaece25db757a76fc5eeda50de57ead867293776b96315b29e595b2006b3cb9182f52e24475865eed30574530605e2e95470efa91e22d7e653e70e1dc3e570ef0e3687d45cec130ac76cf8603ade4b336b3b9173a1736f61a13571feb560f62cae1a9b4a0fb546e06677dfd4efca1947f6ab9de72621f5577ed927ac1a8760df9042f82da04d4cc06dc07b2d0a049322d50d72f8a5cee47aabfd8e6abbc7290835f2ca3d48cbfe1ba5bf7630978c9cd3bd519692fdd74bae18c414e01ec1ba2b35a67dc270d3605b5aae1ec25dfc3621dee0be0b2a48d675b6dcdb08f2e1f8d4b9bd68bb3418c6776f2507be0c018299b39000a2b74183f97b8fa4a9c264f7758dc29e21071fc97c883d2df0ff0c7a9154ce7dcfbe09cd4dcd79e6a31c7a51c6343b4c1431afff079047dc2813eac4d8f9de91117ab9cfa93acf6734d1c8985159e48a378caf93b45f662e98ee8b7b4d6f0d937b1921af197906f405d60d4bb1960dc22c26abf216eb27a5cc17ddb91748b6fb8c0c0a2df06aca719f99443cd0a9b9e719eec0bbaeedfeeab07981712617d77df1aefebadfc70c0f9ad5b4e93b98c832bd6ba85c1db5736e1e75c59926f6a67a869d9d6a853dadfb3eced904c03d6d1201fec87e11cabdbeac89ae377beeb4ff6cd33aaad536e63833d5241fe6d5d3df159953af613f1112c398717630ff814e38903e5d302d7fcc6a27c46273aaa6fd837bf578f12a86bea3bdce511ce4688833bddf1f92ef602f9e2ddcd58b8d8ff996477efe5024731bcf782f16dba7504c5fbec8fa5ccd7cd674f5eb9acb3c358c39239ff4147498ca0060875b67fb81e7788b7156950de6c6b6478c214d87ea88f77c035c33dca6ed49fe796f017c4a9a3dc867992dbf5963866003b78e75b5c9977e7647422d35c72ddcb991b0ea4259f991bc82b4f0efef75cfa4acd2e3426c1ba216ec76ec6dc6c3aea0ace89d2391aec23855a4fb52fde388faad259479a251bc867507f75e92bea3baa03c03c59f2897346dc6b28527ecf11be674af99afc30ae53e61dbfcd9d42df59d07f472a5d12cfbc4844579bfe17417c4e8a3047cbe407d944d02f8473bc82ef9f903b083807c5ade7109fcb537bce1f4503336ebd1f74973b82da43b774cc3b75540f719e51af3b2f3cb11d19dcb5e848fb47471fb49ec25533fb32e7415611efdc66d13f5f6d89f0f1acaac72571e42539e26213df271feb70660eca55760abead41c03831975e41f5afbbf7094a5fe0e7d61de627d388b5490bdc77a9f656d4c750aaf08458a1608b78487196cdf7eb87c4e91b524cd6a29d4e4e88194cdb31d57e0bc481fac41fe80fe396fa5308df535b18d70a253e13d3176ccfd0df14984beac46c3db920eecc2a862bc899fa766ca34d117ef846efe8199e86ec489c874187f560ff227de601a5ff66870fe2f1dfae7711f324e5b1aa081f58d8f85fdf8e31c7a7a96f02fe0bb135ee53d0c389acf0c4fb75d95574e6b761ff0eb2fde544bef1dde9ac08825533e335f3c097966ac0d34eb86f923869b734ae669fc9fc30165bf60505c7f47bcc433167a14f71b7d893ee8e44be167de3cecea8ff89cefdc85a524ea39e929d5af27aafb1ce1146588386da24d4c8fc992b3987e7ffc079f5f17cadfcd0250c4fb8f041736e14d17c94fe6cc8bffbd9db141823bc7f44fdc694ffdc1026d82da8064af106fcb6b07ec1752b2b5ce0faa9b16f3c1b8e23d4461b25593d03fc4a1a8e53b4911bf359da38741e0fe95cdb2df8dc57cd5060ece995cd0f8a59b93f53c774066de9bf45e903f745b850c68ecdfbb12bacf08be6e614efdfb8a7b25883fea8f6164a3eb18d5f6536eef7bc1daf091b31b7eeeb1981b1251a31895c6b9035e3eb3393b70aa946eb49e8d9877ed09b5642369c919fdfefffde875f969afb34461be6bf5ea27fbf143baecd06ef3f2dae4d34c827664945e79bcb3ceca91bb22d9c4786bfe7c799b0dd547387baf58d7f60ca39b093e10254d9e5c8b8d0086b399e9c4aae090c3927b952a407873d2180595e2965b06946dfc2920d710d756563f2c501e921893bae34b39780a3bc31bdfc53e96fecb883b83f90bb8bf7fd6caf76178a0d7f3805e3401e63f6b968104790521f8398b02f2ade4bc4450495e15068df197b5aee0ec4abf94c7d0622a99c4bc079cd04f9e1b0ffebc64b29622516840f48e1796de9b3968b82f75377f9201133bf1eff9bced6039f3326d74fb86345b8a414711abd7ff1a4d1ae9036eaec8cbceca8612ad5906c28720f659383662e206505819e9cf0df99ed917d6a17d906cf5f832539999c41d532569ce22f977ae0556b95b7f987672f8d1e4a8375eb9cf86ad533af59f21fed0f0d792ce6701112f3c13e737a4febdd89735b1f25e5d40cb7a8c53d0ff51b9dc32fd453fec17d44891b6ac2e970fdf9a2a9dfaa9ef0b5c977745a7e3ef681f839d9f6bd180e4ddaffa50d7bc05b2357dc4691a660897d4ecb046211aa2f58c0111690aeecc3df90735020dfbb753c2eade84306987b5ebe3e7f604d3c10f8f970bfe2de43e2e4bdedade77e6f1dfbbd292d7f281572ad14e9e6447da6af5cc720db1ac43968c706cc7b8fb13371e83933d7e8507705d743e65887398d62fbb0e7be1eb1232e5775740bec07f38a9dcd988cb6668e0965db3f394ec0f3d75ba8d0ecef3573962aebfc9335702ce48baf7c119873806ac2a50a2dcee3a56978a6dc84133b6d46f1d2133df730dea35d96d9c6abf658ab97131fe7df15ac952fa8afe6a5ee9f057bd3dc7e4d259473960ae3246551af9ad247faed3c1dd35e265d6dc24d319f6b48d8980168be13a7b3d179e82ac24eb696d1c34d29f7940bc233fc72635790de523126ce9992d6ecd0f079e6874fe68ae26b991a2ddb9114f8266ef5c8eb33e8c882fdeb603c204f1bed8937d3093f8887e1c3705fe7647fb27accd755509b39f5bead2301478c750371c3ea434f857a7867f12e2715d71d8a15cdefd26d0de65cdf70cdc05f48bdb52d7f3745dcab37b7c28ed6ddedbba43340e7ff48110e7fe58b217d57afd88f53d6e027fb06ca229c2df08de23910fc367e82715a548792e47f6f2957204572fafddad98171178e20dbbd50d507d72833cd1c0b88cb54a9e2bd2a16b09f6cc4a3438d5813bfcfc6d78cb7dd6ab3aff8fa956f6a7e1bc2343b3c469ac6887eff1137cac4f75873321ada53e65195866324ea129f6340ee87a0cf49ff1b7b44aa61ecca21bfc79aed4526a827549ce3ddf06878a3011772979bd5ea52530c96de3015db88de6fe5cb946c3d6195087f61f02c819947c68d90c6ac37b7c4796ef24ebf0c177f75d336b2d626aeaf89af4cb9f17673345c15c4d75c6c6f73158d99af5738fdd99d607e907d2f8a33fc73bcd7c4d9de5ae63992238f5507e717ea4d995c86727da3f70ed828cb7762f7f0730dbeb27f892db201d68cfb621bb2019f373fd0be6969ed514b4b66f107ddc3d7a9e6de87b73571a66917d69184faec7639347af2e8835f8da649ba19cfa7620cef49fca3c411372afdf009dffd647a6f4d9dc4a67c57a6ad9f46374bb1ce791a69f23f9dcdd9c49d29ea152cb38d1fb19e4f67f80d44cd31b58e2e9a7ae2d71ae643568df8e37d687f4bb0095a3bf196f1f6466b1c74f232d25e06ae7ee2a75a59a1b76aeac5cd87050e1d077d35f1f95fd59a6cdfe0840b8778e448c3a1d8029718d43453d26ca57886fdca1b6ec50e3dce8b29e20dc4bc5a4d3c91ed3bd6c0a20bdf8fb04b419c6f72da53ccad276abf42be907d9bd3fefc24fe39b122acd9aa99757466173573a4e79b299c57ce652c989b3b1f495a5f5f0a75088ff14d738f3fbb20bf80788b4d9f487d35ba68fd7b214ee120f9fcda4bfe6da712e0e8f6d6bec11d3afcbc35f6537b46172fd303f399ed0376b36ac27775e370edc7e73ddeb5b02fd67ed860ae261c470ef538199dbca6633da8240d8d0f15119625b6e54775ebef98708c867e9556558af96fe95b76e5a3bf99a4c55926379d33f647eeb179ebc990e2a4da8e785d33376fbeec4c7d3f1b72cc33629c325e4f5c3917265dc0d607379da940547bf241547be19c588a9c5bd8eb94b5e35829c6642f38de207fe59dfda3854fb59d2c983de453bb6046390e5d1127619acf9833fbad3f4bee7103d976f449f3ce5a60213e6be4ded692e473ec936cac5732ee3b63ecd861c8efcd7e19f551078231abea5971bcdec72505f66221e7f336fc30fdceaf1c579e0c8f78829a401037a19f564cb15724e47c8f8c70af786a2b395f74ad30de0e346351a623ce5f327f28f997d41b4676aab0662e6a6a445ff1be5db24d2cfad8a231f1cc3656ba5c288cd97b9f9af5d47a5f2751c194b5bd851243f4bb8a9f2bf58bee35e03c8185394aed452de6a32aaa992d09ff19a97840f384f9272734f1620135ec19fb632dce9f5e2e28bfb9ec3692d6e8107b57826da9096f981d12cad17cd0675a344bfa1de576dcd18471e62a3f4c8963e61c712f8273645bb111e4272e59b350d716f2f3465decbe111776302fb93e05e73ef480415d3f52b321f286d13382cd37cf3820cea09705f6488f964e9d507dd6a2f8631ba13e8e57354567eaab4d85dc3afb907b12e62bc096c0bc0ee86f1bc6e06b37445dde2ef004f042029ee28b7de692f28ec8fb055a0cbd3d16058cfd65c235976a1f70ede23e6eee7ded0bc7a3d427eee9c929209b1203e62c5b127f0bf44b4e13373cff393669bb8ad66061b44449130538366aea81bdf58212fe8373ba2dc55f29f70d92be00f12160ef45913c9798cbf4ad8cce0af57a3b4f6f78fb20247f6bc0e395e073a7a51b3206086bf689d1a263dda290eaeeb7f39d7576c04f6947b2d34935fd7d5c117f2a2e946b6a2bb21fa565f461da6f63d1f1999560ae80633d539729ac70fbed37f6dd3bddfda6ddf3df0b6b666709d7fce07a16e43e72edcfad23e62776974f939f80de7db1286efc42708ee99b6ddaf67ec96a62c3fa58fb72c2bd5535f052414d8fede685fba7553a62ee3e11417fb23d8a9dd8e57c85ce35e7f044bd3b60bdcfd98c6bde17793d5e4fe8ff75d0954aa1ae92b3212d29dfc275ef5fe21dede374e491fdb0e52dae79e2f355e5baf73352a8d3922d2a497bb8f6433e1f3ac26e7865c37de4f538caccb3b8fdb32cc10e11b75c8e6b234e8331efcdc847ac46961f7ce21c6c193fbad0bf285e273f296bc7b5c9b35b57c035635dd7d2586bc9698f6c56065b76fbde428501e566ddcaffabdfedd50d707381a6797dbbceefb1adbb013f0f75ac5ae298a93b8a39af3162f6bec749a4d524ac78ff768b79271b837523ec7dba060efa3fec9fb4f8629fe50fbf9335f18865d9e65fcf2288bfd1a772a47320ae2231280c3fd73fa6ee45ba466ebc3b509ca107bc2fd3b47ea37e5829fab5d87fee6ec615f728926e866e22c36d955a4158407ed977e3adf8d3384de0795c39361caeca1a18de47e82186fe8673bfa77fcbd7436f15f3d4ffe177ea8745ebb828c1dff8eb3915a0664aff4e2160da20b7e36efefccc608f6ae827210c2df4a094c4a581f9079191bed816f7687bbc1f83c2694917bffefc5fd6c21f7e27098b1fcca7c03d328cb7f56fb92f9d1d3c01b8cf13e184a34bd21c3ea80f9d70c0a28c13d614ad4715d4a6fbb368365c598a6b1c102fa6bbfa28cd77998702eb4f5033985c4e64cbd106596f16cde1e02ea61f32df44c1fa029c833318d5d39ef4a05ef93cd58ea905bde1be06bd3ed256528ec9f774f51ed7acd8fd343ec6693c77ccf9b5efe72c45ae063cbf187f9d8fc68477f9e2335058c25ca3dc71fd3df8f81faf71e6dcaf72ec0f93bbdbd6bfe797bb40e3f85fbc3561cc0a3a5365a7bf78bf5726361507d287de82ce38f84fff707e4554fddac135fc94f5b1a86edf2560fb8ab0b201a7ec498a6b96cea123bcade4ba444573b55026e639ab3b5e7eacbb0c98e32aad9d0be33763d4273cf80969e057fb907bb44f8b3b3e77d6018a581fdead19172e15728c0d2947ee539fe584e28e6db9673e389f6b408c453279e565368c0dcf39d67575e5b10f2fdc159d214a836e5528940cb1efb8b8f2bca5ce8f01731eafa8deadf37ffef2def6284b037fe515f77bef2bb6decebcf728e6558cdf4e314fb090af0f751153734ca126b7e4faa48e9596ac37433d0997f8f5b9a0dad123df9d565f116bbd26e773ff0e91cfefd092e65cd4f1da5a39366398a16f285522e1fefb247b3edd72915037b46efd41f628b6ff396bee1709c4486ae631d8a0af946ec665f04679ddf886db8233f4c785ebd7a415f6fd19bf0c97c4efcf18712f709dd167593d8e52e97fe39b3b456c07b3cbf41bde6fca5841ce49445b09676f32d18c0f0bd76a76cc5410ae9a1070a3c92432f17bd4cc8e4b257ce650a3b1fa8af79b03ac4bedb3dedecbc2d35c27c15cf71d862b410d0387fb140aab610ccf67c99a16cef301b4feeca5cbe7327121b7eb5d4b3a00a1c79a9ba5e1ce9fb9e9ef58b76becb4acd13b5c33cedc0a9fd6c875e0096b76e6bf67eaae2716303a2df72d1614c7402e5e2bea9780313d3bfdda134d78ae9917c62d680eaaebc3b52df1736530a38adffd4c7c17c8af8971c003ce2545de1ae82d2d35adf974696a340bc0789e38cf1fd40d63144f76c59af09d16c8a7b719aff5035e15faca0ad2848a33fdc6cf5336e8ef4aabf8624e8ec20adfb9a6b2023bdf7ac974c358850b7fafb466439e1be58e72eafde5fead93408ee200f314815a81b61ae3f24d5c39d5644f4bd66ecb74cbfb40385493ba3e8f0b873512c491faf12ee44f1ee58472e0793d9e3bad7f8f1344bc32eb7e471fb486ba782b3694ab98d576f37d6f7d258c8fde1fbec8f6a5d19e734111d5320943a78eddaa616ef6f0d3f455aa3b5d59f475139a8325bf23e5f95aaa81534eae9e728d6fe9c6b6c107e0593f4a3be273ef5aeecdba56d4db4ddc10946f43eeb68af9a2bbe27cd3caba50efae70fad828b1c420de4bcedb0f2aea312fd5ac43fcc70d572a5cfd17ff6f63df782405f89e514bfe582a08cb70b4098beb6593e7378abd6f3d115df04698906c9532eef4f94933e62467aec8e6d6b3e050acea86e328203efa94b113c78be95948476f8ce7016d114bd8f13630bc3eecb3444d78367a1e6ef04eb6b9bbab238450f3dc6da684ff18002f58178cd764a3d62afca49e20d8f7863b81b543486357a73ef749bcc57bc138a2174139bf3b7c6cefb71df8b94a155e4dffaa02fd0caf6ac227e397a6863b6e5e631fafb7dc1fb6bc0f8cefe91601d69ce5e74addd719c5cffbdc8b54811db7800b7b8f9b163083d067be3f187e9f35e90ac4997e222e1f8ffb56621d9df99e454abc4c1ab8630f31c6f45f1563b2baf0c47845c2717ccae986730f6195936e5ea69f128c693ee3ad6fc663953c9bfa42025a9fd0db8fbdf46d637ace21f7cb7e14c5856a2b985bcd68398829e54cb2e7f17ac2757231666e35e07eb164522a399c13974561854ec9dc1de90d975ba34d6cfaf907fca125aebc4e56bc4ef2fa686aa2d4bf63fa9eac202d117796c4b7efcd6b5b310e88d6fdc9d58c9f313870d4d4d18805792b684f993dda993d7a253de797d5d6fc16706a1ab8c0c4bbf96d80f12ec4007fbdaffff193b0d065231cca05ced71a354d547ef8b7fbeee7d45f5a3662c0bfa51eac91ca3707aecb16d767e48276c3f13a20fea19b46d3ad6728397ed0bab2e27d517e3b97fa7d6a70fe34365ee1897f3d4f68fc3d35c5f14fd2705a3a5897891ae2d7cb4ee3fe9c90b91caffcb7bf9f130963c234f548fced3c9819dda18c7bfeff1fdadeac3b711c6a17fe4b1e425671d99e00078b926cc9c67760b38a6043a84002f8d77fcbda7bcb904a75bfe73befb9ea2e021e6459dac333e4b5bfded31c55fe9af8985a9b75ecf1fc1a26e8e15f5bb34fb387e7551fe3e95c61433899db7941b15ee2803ee52aacb0671689f5c1f0fa8fc607c5b2802b81bd8ad415117aefda8a38f3a44de5cce0bbf0f9743341bc07790975a280df92ae50fdbc243fcbe977e7fe01351dfb9fc7b52d4fbaafe7dee4c6771ecebdff7aeeb830d80bcdd9ad617d04de2ad56254dd40bf662921d65d5bf1d38ae2ab9013d7683e609735774871697f40bde078045c5de872f7b8a0dae2a6815abacccfafa82bf0565b337c0f12c3e748dd96d6df78653c99ce96408f63a6aa7f1b532f75b73bc4c5878829f570cf85f8c1f6c2413bb1fff7acabeed73d1905e9e44cb5f8a9d6ba6eaa5bead407f0a98c0efce07de1349cbd5ac616f1635e1cf27febe33713e71da877a724695cf1078d9d35c57739f01ed7e1cc865c39b4f87efb8efbb6e9b3af73f2ff38eb7a206af19dd2077c7aeb89fc1aae1df8aed07a458033d07ec278cd493e461c7d7426deeb1d46de93b7934b7c14888d4721f5a71167af7920ab6cfb079f827ab3226b114f79ba31d35b6d757f26b563e3dbb139788f98d22c265d4ecb7081d0a74b651ef8eae4b6bf0ed16bc6392774ac12631bcc4bdf785723bfb779022fb1eb4dc73aaa7d1713f408cb6dbfdaa3c627d67bc56d3c25cf26f4e40ae616e64d261eae4f15c5cd4e4b7a8f57c2e7225ef524d0efa5b2e2195d27e5c7e8bbd462bdfec077ede7179caaf178930e6854f18e192c7949f1d684ff4bec77c21cfee8190fe1623bc79e5767345572bbfbba1fa72e7a35a9e82905ff8d0b1f3e7352c4bd242e7997b4ef8cfae1c8fde5726ca7843d6a4e888565c367e109f760457dd578d529c2895e08835359e89b5388b99e2f5d140c9fc573e4218dbebb1f132314115dfb0dae3df9e48708c6c21a21a638bcf18377e7ef77d6e39d6a5db9b197361169017f92aea8044d1fdd13d6f7a3af89cda97e8763e788c9983e7b331e9b4e6db076558363e146f43d07f4c1d9b3982afc2ceca8469666f18dfae4557842dc404cfa90dbcdde68069a715916e51cbde9fc5af6e357bf09c0c50c797f7e3de33b88fa6ae3b876001f2fc388f85165657a3ae74ff4d40a56cdac238c9422ff6e791e518dd8e8e9a8a6ab4823a78bd19797fde6fb3a376b4a04f8ac3c1bfa56dabfc8d2ba3e73ed291b08c41d35b6c111e17bbc2cca82b05029e0fe5cd47f5773d45350e9983076f18b83bc01a53e50df13b141ed1da7bb3ef2fbbf756db8ce2947576f582755c061d3f98733ac7fde0ef623d270284dfc57e76d70f7b729e2783c99c5af0fbabf748dd6af77c255435d30fea09eace8b6382fd88ce5f48caae13ab28a62fa7861b00eea08b540897d3735417d885b0e7361c61a1a339d8fa4eb3de187aa279c93411a28ca13a78627a5a44be74e877c4255135d2f8a18e45b91408dc43e0feed7dc34d84eeef12b723f22fcce747856f2734dda70a9c14baaf51e701189e661a35e6d57a266864a8003b1c49a58bf1ef663fccbfaeb98de8663cfe9dcb2bde3bcd3bc60cf7c17be534cc1500f5bc80bdd63ff1e440cf3d56fc6f29dee67989bec75c867ff788e532e5be363b2a07752555741febf07ecf314ad8f3aba1e6af6449b461ace440618a9bb7d8ea1261378d951bdb0df47faef2e5fcfc861d618ea0cb4fc224f145baa0f8eb07fb0403ed305f9d9b30a71cb322b1107d2b8c4b161c80b5ae647ac69c991c1f3e2bc65b6d13b10a8170eb1ae251fe6525d20a6d2fa751b7cdfe09ef3cc60cd1dace56c570dd536da2f18e0c625ef5cd686742dfddaf821904788daa3412205a35a14f6e7da7a7225cd748d499072d0d2f946f72ee6b2260f7783c3512ee1d7d8b2ca71be14916fbc5ff319e5c78857b3a1165d943ec31ca1b4d8d39a74d5810ba1b11bf8f76021496f724c1a3e59a9e3a9c4fd06c3a0e3f755132ff3f4facef7adafdce80f4c444db18f62af50af3922a6221a0d980aaabfd881ce17c1eb7d8635c5109f9d4b7e38d23ae9ba11d481c71ecf628389c0f138f3ae7d454ed313acfb892bf0ddaa65bcc06b027d6d83f3886cc4273f932f03612bb8bb0d0d67a0253e4634857844f9881379c777f1c6f767b8fe8cfaac2dd648555037d46bc458d87037a21571f86aea012a457bee81532f5e697d351d9309678c394af442f1f1dc999d8473f4d761bc9f47ed91efcffeda42ad71370e37985b2d8ba1ae77c717f8adf49c66cffce0519f5b2117f60e23cd6cc361204f6ac4e79bb8576afcf6147329f440921de580c6239e7c688af6247c8dc3f556d68cfc33cf7cfff4f4178cb6e6f3b349f8906fad9be3889b7ab94aa81650d39e74df0376008b9c586269f212d447070f71f69b77ed043814d53bacab6c99e457cca312c2da076ada1aecb7d23e865e09bfab35765628315ad29a79c09ca9cf99a7ec7bec446e5f706c4b86fef0eb509286e6276f3962df669fe0191365754eeb34cc2de18c22e37307b5c40bdfd509ea89bb996fae073fb32cfcec1dc64e7f46189b1dd54fab50110ee8327c3f4ab066d50dc715f8593270fc2de0f6320bb5ffa47d1dbe1f27e80f3a32c73d1cf1b31f963906e94e376a82b888db701d2c415c8b3d1cb7c4cfc227e3d50c7a84d126940e7e6f3b781cdef1cb5c8de1f989fabae0b1e4a09f2abe6f29e4a858a76e90d74dbe1ac7b3d15dce6ddaa3ed25d4cf9ff8a11c513f78d07e8f48b7f2c8f747f7112b206d78de462f307e71b1dfaf2ad4d16a93470dcd4863afa0471791ef85307572cb70712f62627013d077968c62af39ee9542e389fed48b8f06ff5b0be66bc39d6ac00bba15eeef32337cc19fd5ed8cf583d002bdb4c6f42cf43ed489087bf6afeb83888c7e87f5ef3899feef062793a999803865b798d8904fdb6ff87c6ae257532e37a73ec07257d3677fe1306e092fe9181c7f5763af4f197f11b6b7fd3fe75579c21881556e7f5fb6d673e8c71cd6ebd603dc9f8e05ccde5cefc7061bd3c707ba5f2c63d241ec704e58b4875516ed6162d8c386fea0482663c04476ccff83a7d380df51457a50ae170ae391a0cc31587f4de09f63716784b517697c9364a63d7984e66eec04c6f6b545bd1b59b0333c47f64178fcb228cf74fc3ab7a126ea968647b8ecccbc14491f43eb1abaf0a9d6515b80ab82daf9b9bfd656f7ab003be725a80b9848f4d418309d9d8915acf8cdf428f3ba5f8f3bdee85e82f1fdd13aacf06c29beeb73821b6a7a7c7067c86b075eeaec29237f41d031eef74bd0380eb717d41078e78716de2757fbb945f73cf00df63a2b39bbe8f7323f0675f80b35d0d97339e4f1c00968433a7707fe4b515bda72d0f5311e16b5241c03eec19f7c87fe0045e4cf11cbc4bee82394b6c69a788b307e234da464c24dfd1fe67a3f6fc0633669629763df6911c6c05572e3f91ae3bc25e20dd6f20d6bd4b36b6d3088cc32d8affdf5f69f1c6f37fe378eb7653423ff181be6682f7fcddfd9fa4987efe15d2c4ffdafff3fb1bcf1f7568d85f50913cb57cdec097d9c0aea1f403cce2ee61d41fea274745f20d8843397f2d8047bb5264e75467e85f5d4fe3e49eb2669663a9e4e643c273c02f58a6427909fc77ed37bb3429dc944c6541f0f708e1d505b30482cf586714a497862d2d1da3471a7a876459cf92c9e529d473f7fe3a706fd4b865ad7a6565cd436e94609dc2b1e6b3f678fe7d2024f41f60638ad3e17e48e99d3872dc6a495c684dc6b42d4a897cb096b26c75473edf87e4bf3ed41fb23454c533f36cc9a3d95148fbcfe404d1e76e1af27ead3e2f96b4f6aef013d4746786da5186299ff9cdb80c71d7b591399b98d9a0cde926a48b9b2d683a756a0d785cee480a869c0960bf4c2f90e6fac79ab413d418c33f2306307d7e023df31e0df38f115b50917505ffd45f88f3361a98738a7a55e53514f8f882b3ee1338e511fad8e113742583b9bb0d72a6357e2b92487886a788ee64349116e64ec56c833abe4ac23ed0c1c830fb1fbbf1d031d735c53e077901660b00ae30079ad1aff0f3173dccf89397845f6e3c28e25f93dedd4c737b91870b73be5af68cffbaf9c6d4f38dd86fcd9104ba5711a34d688a163375a47fabd12e71e786b67adbfde515faeb9ef9b79696e91266e511f62ecb38576fa7aa75dad39557a0f71686dcd0bec45abfa03bd3ba3ba89dfe7c3da7b1db0724c8016c335a81cf28d9921be09d6927efe94a41f721b072f0ed51148b301fb92f21cfd19036b0fa218eb57fd58582230580cc608b39a839e13f80b252e3ffcb28c1e67809a817fbe5b1fffbfdeadc9d8871e27f62c1d8d69d3392e607714af30565853ed208f8c1777dd3ca11e0ceac9b8d1c2fc2dc4bf41ed3b9a5be519c77a57073169b01c48a348395bc443b213ef96342e9ffc709c501cb001dda8a9c973e4a08d27c89febd04e507720203c9ad64407cfe234cd2288c5ad25d5397ed63b0f75504f664fac3a5a67217617ae0850a73c100765b4c393107d523af18ab59211c3fd996a2bc27da3679881c74a8b7edfb5273aadc112a1c6f14fd055d1eb6e30f07609ef7bd61ef15abbb1a59833bec03bcd9ef8de6e4dcca46367e06f0bab24edcbdb9a7cf673dbbc5309e82f4f49f30bb509ae1c30c91fb89e44a9325e79197a83075fb8c5b717a357183f616fa8d84cb7c1c33a9b9f4677985ff09e99e0b16de250959fa46d54e97e7dbf4630ec873674cf932fdedf97fe3dcf06bedc94410ce0a545f5fe97f11df0d451e4a50e8e01acf711d45b8587dc59173d36b55eb7b4a258ec12a855e4233fcf7f9036c271e0dca97e2c5655d01abd6f5adb90d71770a931257a9dd17a72cdf262b8ff59887a246ade8f615a087f21dfee6baada3b62ed9016d3ecd3ec39775ca05aeb54697c445753bf07c6f0c45d532f007e09783c7c96f4f7d7b1d92b92c998d6df7edeab55183fa7e43b4e5a4837cc43f6178b1bdf0be671ebedf26219cdb45864759c23969a7c0ccafccd369e3919f521ac1bfa47893ad41827bec17a76f5a0634d3e91c045ab0f25f539fec05fe83eab04dd826c72ba191f04177bae2a79afb0f67c8715239fe6ccf807e42df6f4156017062ce65b459c07a7be511fcfe8551316538537cae35732766aec6dd5a1d0de95fa39e547c345581531f5ee28f6220ded3e763e199dd303f1bed9b398ea7d463f87f5d47023de2bd2393378b6f31b7831f6f9ed707f308eb597920eb0626edd180fe20fc4db05cc9a3de4672f3496f21c0cb521ad331b90965585395d8a713068b1c2fe4ada6e841b91ce0faa976b4dd595640df299bafe7a52e383f1af9c4fad45c19ad99ffa18fdbf9d913f774083601d32f4114a9ed630ff0caffddf784dcca1dacb77351ab6da14cae846b17cf4275711347e0226e377d3ebff574ee3d17f1962167bfd0d17b09227c058bb6560f6d65d147e1f4f2436efc449f81863be6a3e7e530d1c03e4e13cf49ad0b321d13d9f25e4d37d0cb1a4eb499a98e3f9e6f4ae56b8a7324bd8a686dec21a5c023fbbbfa70ef12b6505b8d0a00a95a0fa14ea6074bc3921de8f4de9f89278af80130b98c53e8c3ff077eba382352191b3f77e4e6dfa399179883f4fae7dfc0a58f9083f8398567b41e4367da66b4a34bf38fa9cf2437cf97fca17f4754fe7c05db587f5687b9713681ecd2c7fc5bae6b436754df93fa96b06e27b9d99a0fdc07aa78ff5ce03df37582bf99f69fb3c70a7f37a647c9da698833b5b7f15a227855375e6ef0183b8cd89cfb545fa01f187e1e3e5f6116a94fd73835a02437f832a8c8d4f74ff19de13ee0d9a7b04fbc96d1cd4fb2de96cbc27c4af7446c7ffca9341e37bec89f06b9e1cdadc781e92ee7d7dc618e3277067413b8bf4f15e06defced31ffd57c92804d9694d3603d9e216f18f576e5d932b948511f311731ba11777957b40a65477a4efd3eabe7bbda52fd867493bcccb95e4813fc8ba6dbcd68a0417ef224f2513ef4a6ce1eb7bd1bf2b903b13fd37b516ca694039e101b1a8f68dd51ee9162d639ec47e0e1249ac835df419d70d0f6620ec7de5f2ecde7fa7e05e66054db4c2c78d732d4a6cddce5bbd15bd55c9916f70a1827f06c1116e1278433760907b3366b627d44efb800309e6cb23ed4a483437336482747d2eb9aae74fda7f694c3c027407375100b73a78137e4e2e3a7178373e6da07a88f0333f0920a92e642f9b66df0d8b7f107ad2710ef69dc65504f07df577a9f2a2bb6e83a13190fda11f9f83478917bf8ffaad0d754c4414dcfff918fae358fea307e1ee2dbaf7cf568574d2856c577d02d83e4bb7e86859c2ee74238d139f2f99fb94bb1dfb7fd0fc1a67dfcdf061bddb3d631848d9e567d0c71f82f4ef443afa7f068edb3f9ce685bdef8ff75ac707ee3bbf26c9ed517dd36f0713fdf08f741faff0bb9fc832bfc478dc72dfde4463d3526ff1e5bc4feca6e1e78f155d4fc559351e523ff0b2fdd110d70c8973b451e9f0cf007ff1da791360793f584f4294d3fcd2da98e69b835df69869abd252b0f8366680dda094ef946da2c8c625e79d29e64691fef1d942548bff0509afed3aadf6ffbebe9945f614e535906ab82deb30cfb3bcca2fece5ac6cfeba147f5093daaa4e3a891bcc66354daa3e6e11837311905ff2ffb582bd489575974187a7535ea975cfd17c4c0aeacf8d9ecb19977831aebb77b2cc697e3c0685f59d4e79a75c331447f8ced7daf6c23ef7b650af14577b816578495e1cd545622317f2c04ad4be469186cf233e62d0aeba725e887e6b8f73adc05ac9cae7b690ddb95fc85fc0ca87de493d1eccf9eda5fb45e3bc289624f3c8f4e833e077d4fe3810fb8ff9ef9e1f88239a4bf204c9e738dbf60e9822a64ef3a1676e3204faf4c4ca340ba7a5d092aed334abd70d169ad13d43f2fad7f5b73d9853bf6cbff764eb2a6faa8f63f269d35d8cb069db5b0db7ca7ddfd450be4e5a1f7c71ce1503c5175461706c676abe35b3ab755be119e9678f989f131fcae2e507bc2ba90fe166148927e2ea51843a4f939262c0d691560cd8178e89f38075dd4957965d6909f615d8c09f27d7251cfb250e85d6d34c7ce7c07b10e57cc70dd2be2f4e85a87fefefb3d5e72d001eed7e731e9bf656bd27ccd134b9007ca811b3dca64bafdf2f7a84cbac8682930e3a1ce2ef5309fe9f83b16a2864d965ca95ea1fd97b0ce46756cccd7548d7d57acfddee31fb1a797386b93fb8f918fc110d779cfa3641669a6654e4dcfac584d4d2d217ce9c80b391961df60574580c7908ebdc275f5adc61ebd2c929be12262bd5a38c7a8748d47f6bfe87326238ebdef3c2bf1f929c2fcb41baccf192de11cf9216e1c557b534379f0a8025cefa8230c7025638b62defbf719dfb34ee382ffd07b251ed0b89fb762d3c49628c414f94c17e218c37b7335b10ef03f93fb9a616af6f1b01ef1bd1d891df98f9c074c64835a100d63e66f84b16b34ee9299bfa9fa96198d341d1fbbe9ed6bbfc0ba901631eae6c6baa736f94135c352913e0171eeeee706e1d0c9e75c11bfa49ed0f565067fd0a638ef3b89f369d03ed09cbd60d3201f53b5c853b77d5a8b962ebf7d99d34f8cae1df751657c2369ecc63ed63932fc6f61fab2a0391924f2ad4b4d6f847ffe895364541f1c191ce72efc06cf88dfeb58b4b62c8c1b04f29b40b7b65f57ccf37a1d9b314a1af07541ac409c98dc7b467cbaddfd7bccac5f375c4f3abeabafdf6830e9185dcf2febe9cfda958e5d755d6441f560d407f354e721ee96d68c7a84bda0b26a2c8c7704f2cfdbaba07e375d0fe20736a1a2ef58e4c762d6b30235ea540bde3805ea8ec89670faede09f0bf93ac6e4ef7ca7f09ac7233c6e56e375c9a234be192f1deaace5e1e782b82aee11df8dc836dc2c774b9f39c6a3d76949bf62bb3aa0deabb39d255497be5fcf015fd5e772bf57c493709311e96ae1dffb6779c5f5655a1187b2a8a94f80fbddd6f8fbe1fd8ecc7e477e427fec77eac65dac5b1435ed5fae99675ff63b519441bda7bab1ea08bfb1d4fb41ad3dbc2be41265ce2fc468446a63f486246216e5958356a597396fdf7caffae37b6b19ff265ef1066b91d22d71fc43073d665886638ffa2c6c1528f28cba2446179b9e5bf8fecdefe27e5cd280d649f689ba3f450df716f46bb5795edd2faadbd0dffb6b3d318899e3ba611ff22f5adfa0db2ea08eae129bef4f96d61678ecdf14a2d84e33f4ffaae405791cd83be87330d4ae5cdece3f01cb873512757cf41555d05ba4ba39ccf7f0c2f723acdf32ca979f8c464da1fc2a427d279d1fb75eb96301e57fab007bf043fee7924769e66e89eb2fb4068fd65063fbb56d30f446f3f83b6e7cd5516e2071ed4a489739331ac9777da07a6fbc386d76e73f27d03705f04bc8bd086298f7196a4a2a88b794a3f14cc401e618e745065f3cf8de30c496051bd4aace5cecdd14cc2ff11e37e035aa73248ab124c4be4bc8e1a312f2a0638431b4c646a8a9e1508186ef1d070a6282ada9ffe877b9df2ffb71c8cb78e58ce0f967c207ec40a8f1a01960c4744cba90f1937cf00e636ffcd0c2b5e6722480d3f4faa23103ecc4ed04b185f16f867534f4c9d1b138c46eadf1b584b5afd5ba34e46369bc28ade3137fd07d6a3d7168834aeb54a850e631e8a05ba39474a1b8ebf902f4468b7a62f472ba95f6d317d31c6298fe795fe1fad802e679f8c40faacf012795958cf821ba21c77b57b5ff680c43d5c45483dbadc9d33c9cbd9b7b416e5065c5d8ff8dc0cbab8fff27e40b74fe24fdcf65d1cef43577919f18ad8237f28a99af28fecd2337f5759efa9befea196adb9bbac6c00d6b2cd2b6595bdafb6bce65e3923ec8dc69ffea89ab79b8a4399da2d720adb339cda9a4e3ce90772513aab10fba184908f588cc867a535e18ad8bdfa863196c9a047acaba1e6d38a2d8c7642b8a9f4d6dde3986f3289a56a1f84dfe86eb003121d23e522d7549fed184f1222ff6bcce61cc4a97c619af379ebb35e07e1ce16677d893d441cfc82e66585f7212d4decb89435dbc5d700f8f93c0232d9891ce8da19e0b1e443a57004cda869eb37344cf0dc4d5e72dee35ec2d4b1f7484833a943a969096c171a805e811071bf27e765bd2ac1755607a1014c331cc550ce66345baa45d447a0fb1d168c9db39c64c7eb287f8895bcb5162e6cc2fd4a66b971bd26094e36b0698d8f91a35dea4a3d7d267de44c4d3bcf6e37f7f1f2c888c37cbc63c37d2908ee24dc1a2fb7105bda56d9f6bb37e2ddba02ff4bf1edb8d29bfb91f9b2b69dcc8ae1d413d4c3df17dfb7affbc33194dc5610b5c87dbd8f89e26469f9afd4ee09d0be696f13a444e0e7ba19ea0b222a5d75d25e6b0d6b2197936e0f5388b2fd70feb4032d27d27ede94c3e89e333f6fce7b0e6c5feca06fca402cf1ed09842dc8acc94d6c5486def1dae9545e0d7ad625c6bee783f1a07a380abc93c6e6f3f577206e785fac372159ea8b65c6aec3271bd000bc6c94fe21eef9575a14d7e8d29e5c7ce8c6a3c31f910ea3521dbda62f090bfcf2f0933846b06f2176fe3887534774e4e2229664acc39931d68c409c266a9d04d4813ca6d484b788efdd20ede5dadaf4135468d23379a93c4f953a1f6864fc2d84bf32de569efd2609dc1c31de3c61bff82ff5e0326665ad17b2c8d4e34dc23ec67d8c333b967349fb4bebe3e8beab7dfd55eeffa311d235ec78893b7a815c75a3fbf635f35ac3b13bf584c92be0fc4a74947f85c88ed989fa01e8e72cb1cc7e45ac19c0d167fe3b066029f3161df9b4fda932470eaf201d7a4f5a4827c1afdbe8f7bd16fd9ad25fa40195d8eaf1cb913e57647de92e60dbb81967804f83ba79cddf5ca03b90f61ce23ee329f96f9a015537b4295e7dcc465751f974d0cc64a4651b6b793a1dea77b75fe1013a87ebf39513d4e418cf35a5afc51bf6b625b5a4fb23f87c6b48c7db326905703e1a5343f54d7916e7cdf3ac6bfc4223e477ca90d8642f395341f7b55e0efdde3046b335e75107f705554fa97b1cd38ed1f07fe3a367d7ed6e79906ffacfbdd11db532fcdd6f1d872f0e20baa303ee1bb5aaca896aebdbe742dfe6c72f3fd883e232dd5277143ddfc1df9e39c7dc3a3c8b653d001a7be79724d8b7847bc44ac4bbef35da4e7619a29931f83ff41e9700bf4cc6a2bfe0dc750843d8b57927442e3d39c3c19f306e33fe952af9d594fd8ebf0fe8e41409c4c22c93f1b75be0af16e74865dd410ca5b9fb95ffc16b32df20119e9f5922654d69f5f228f566a6fdcfebd94ef7ce7f92bfb9f13b7d8b3c8510bb388fcba997dd56d235e31e9aeaad5a1fec2b73071bd98a36f38a71a896c0f34ffa88696ddcc7c11d57ea4eb0a29ea3ea64df49984f2afdfe32abad2df95fbcfed2ffaebd784e641beb5a8a63ed46d5b9ca3c927f143fef67be96a0e83de0b2aa3e711dd507339a81a6e55a8a19a65ccf889fefd78c713d5636b7d4f908fae1be2fe3307ebc68148b586b2e14a08895c09e7e9f6275722219c97986bbee759d7f460bf1e638e59626deec7d306f7c00c622026826dc8c2f8b069003384d88be9dc3d12cee9bc31fbd06cf09ebfd7a69f0addbfdcc8c4d658dca20c783abe191c952b42d8bfa233e1525672e6f6f9df3dbf06f660f6fc652e4795ce076aaf92c7d7b5f17ab4f5fc220deba48b1f75a88bd0bdf390873c6147ebdcd866b43616cb7e9ef471cc6b9d7906f3b79a50dfa07c86f79759a6778a7c9e7518db84a120cc518a6b7922133b239c7a0875982c1f6b5d6991a37653c1c88b7189f76a635c66e261867eeb79562fee317c55331b192f62da3f82fa4c585eec912eb44ff0435f75e996e93d7fa0e61bda1394e61e44cbd678917f3049d8f9a58df36cabe77a3a9e2de4cca63d0d35c31597e3531f530a1ffda2fb78d5fe45dad5f44ebe50af4e7f8eda03fdfc327b96e9d7b0278e1a7f79d1fea4e7b3697e50afd351a44be19cfde1f99d0177d491aff67984f8e4febe4ef86c8abac55a6aa3398719cfea3ff13b8837cc1bf47574ce8c7a8beb106a8e8a7a7079ed333bc19c1ce2f7a47f6ffeeae9a03583a275d4208eb84eb1e6f626f59e3f7e7af016b8c37603ef28fafc1317de74df9d4ff30a23e5a5ce36484877e9bfdea37ebfffa299ab35dfffc0ed600d7dc8873d998efdef63885fa46190ad27d0eb488ba3cecb05f218a4fb0fd51dc4432ea0a22bd67befd795233f7087ea0825f8ee3d63aefe89b1d31b3f505e615dd6187b29fdbed99ee909137e6ed75adfac5f477e98e19e9b7c72f7487a9b16e5169535b3311f09126be6d0e71b69743dfcc42d01af711b076b8d631e433ca76b73ccd7baaa12e6cffd9a5285dc367b6437a331ecf82eb9809f8edae37ac257905f042ad8520d4b2cf2116906e9f98c7f63c35acbf85d1c47dcd4404dbd8efc7abe5f57ceda6358af93f9d1cf087b98799f436f5463383e13e49fcb7e2f2c985fee4a97be9334d8eb058cc69ee60cc4237cf4c51b2140fd3b7f65fdc0bc7e0b75745bf4ef0e60806cbd5f4ff37d6d631c96c19ae42da1068e1e7239d4e5d7a4b38fbce56fd68af99cf8115d0d9a72b91d28e44854450df5061bb54dfab82dfbf24ee5a39630a1033766ec09c5df138341d26b95ce13332b72b815fd366bad63bb982714ab29e92525ef097a64124e7f1d2086df8d83958bfdb05c7ed6844bcab60ef0df932bdf991c422cfa63423fe2770d5c9d6b9fcfac50a33f7dbdc6a2f078969f893bd86e70ffa3f83e912cc677e69df09b157297b22c428cb9bc21cea0355ce1d73171b845e9a2cebbb41dec171ef9a19ccf433b58eeafd3455e87d4571c382d116a8286a471b9e55239e44d40fbf4229c7506f357a8c6f4272dade1dabf1379bd87f12e07cec4d4685964714875ddd4c5752553e12afa876af9fa1ed64e4bfcc3d1cacc9bb245fd2b271fb897baafbfc6be33f6968d6ef3da267cedf6e50bb7f267d5607c51b4a44b515411be67b98dbe832cfa469b43f7b672aa03632f9c6a8599738cc8df515fb7ade3029628e2dc3417c3df87b8e5c4dd7fae83b717fb77eff14974e73daeef79d7aff35517a3578507988baef5ab5d64b0f01ac7ff9fc7fd8770cf823cc616a8a52d60cf0efa752a9351087c1435d1eb82f5a66b80a9f1bda438a44ca1978e3a1596f2f45e6b45187f800fa7900ade656b49f7a4eb47958c6d65b8b44cfbcb20bfe68aefc04ff2ac5405e3d0df0a4f55bf2f172647756a8af9b0f6ba9aa0bf14e664a07bd5bf33d2f4600468dd915e4cb13018e91f9f5593a0b67975a3f5254d7fe09a1cde44e0512ea66afb1fe28c9ca15e8d3a5eb2e936c4b18467e008971de9771bf50f7a07d4fe7caa7c2eab4fde2537e35514f5390e70e378c6113baff4fa99867a2f0cd35d6b430d74ac081f21da1962f6ef9e89f6c88fec3f9e49d4ffb7bd919fd10be2d8ea86bfd37dd732fe4df8deac2bfb756b0b9e930ceb3afa3d42bc5fe4af8358ef3722233e427bdcd0ef6f63aa19b47a3d522218627e5c170f1179d4d19c88eee6848e3dbe9b136b2bee73087cced8d3d5dabb5adb2da035a39e227783bc819ded9162c1644a1aad300774df01f0ad5371606ffffdccd11f11f66ef2785d903e3671d3efc6e1e78b1b3f9c33b3a278159647f47ea11adf7b1a09bd2fae9a7a0f75309bbc4dde892b90e01a964faeae19c3a90a21b7d058361d6fa5166051d3a6d43affa58c42f1daef9de798bcdbd37079ab24708144b3d47a814b78e7353726b58c36e944bc6a3df3036fa2197805d55bf0a7d1d7334fd331ce7b31797119c68d47ad4795e60cf5268f4d7fde4cb6cfe4f5269d23d45db3ad9f91ae1adc6394586c44bdd2d28a7fd70dc6ebf2875391de7a135f8d86c4fedaef77fdf30aaa30ee8c2eba338ae1fd8b4ae823182ccc01de1775c658cc22affeda70cacf3e2b94ce1f78267c7650269e6596a5b5cd18f03202d145f4eeefeaac0c1ecea9eb3dfa9c473c27c5880e9d7323e3c977e75c4ce99ccadf4c4bf4fb4b46e07dca08fb1b54a4b59a4767f50af3167beb1711a8137fed7353e6b156d749029e45e8e1c5bc95e16e35d8fb5b12a6aefffd427b2e58e8572c599ab472c0c22b6f097a47d14feaf34b5d5bd0ba1ec0f7d27c98b3a7a43d2a8dae81d66686eb449e2ee2602fbc5323c3cf05cd957fc3e30b1dc393b71479f3e839c8960be3dbdc9c7219458025142f8b09e60516aeb5b02f4659b67d1b6a687dcc2cc8331635f5667645b86013d39cde513302716c9ad37eeaf3adbb5e97a7e31c5d6f64c6b33373e337d2fd206dc13b1fc61bc69fc1dc8a6de34be7967ffce68e7fe7207e24da34cc261d039c0b7cd5af8ffdde6985dac750cf05f4d6c458fd616eb0a13ff115cfdcaf07d33571d4bab2a4be08bd7bcbfc8cd82576e13b6f4fb582c439863867845e47b4d6f5d84b9bd3536df0320cb5a292ae464d1ae9aa1bd6ad7e73671c7efdbb2af4dfa75cd61f7cfff877ad2314e2b5c271629eb741dac74bf936e0e9b85f4baefd3c443ec96cedaa2feb403fff9adbc2e82bb2a324ece54e51ae2512ed0f5793065dffbda73e37cdfb31cec7b02658d121a5d85dcf4ff02acc32e426c827d46a1974e2d730c723f228e106bba52e39e2321786ff5dfb7584efa3abc033d9b986497f1fd3c8d73d599d13620dcfb146908f68edce3e9eb9f0dd16714125e22e8fb027a9c486bac8d5333d98e1fe5532a5bc2b6a69fcc81f7991fd4de3d17287da878e0ba655c64007c48a3ea10fc5bcd23addf56923e0de480b9f7bb4006e5ae4a32646bfae22d7529d207f4c2cb8bfd0e5c8415b5933fb6e8e58b5f11983cf919b6841ad2fb91afd519a177d8ca224ea6a2736e26aa69077f7d717760caf07eb49f16a5f07df8fc3f930f03d01bb9f1ca2e07fb83e6fb9b4f7a85548da52d902316bda374de7c65b3f4bafd37910fbbcab5fd2e9af8e7ad1fdbd889c7021b3cef414e1f9021e0e720cd7f8fb9bda4769c3be86318c62c6136f51605eeb968fb55969bdd7880950b7b13dd49f4ad415556f35e946e42de5b4c5ea50527ffcbd064f1cad17ae7334e2dcd0ba7b50b807548f182df4d820af7e8a2137b9c4f5e4a87dbd16a1b2c4646ceb3e44be8d4ae82b76fce0d9a4075915700ee18cfc79509a984c34e505f13011606fca05789f2a061a77a36bff778d7fb72c9d9b49d8d32087b5b0c69ac57e35ad43d4c7855e8b730da0f6a2d700ace9a80b0b0d36d365585ba964fca16e57bb5fdfd003c3ab0e2d6147282f333a81a5459cf8e8a3c6dadeba496e35d63915be23657a3da68d3ed7cc60308b12d7cafa585b9c6a4a2b9a0b4cd7ffb48e29f071d1a74cfbb602efca357ace58972f0ba3d318adc31fa8f1fc0bd64107b5012d69d506f3a3fb743bd43cd1f7cb6cd05d5bc8b8a3fbdcc8d9a806ce73c034b79e704f9a53d7c7ba0b36419dc93cd1f8bda535f890f2acd6eb7722518b388b8312633a91e963645cb217aca709d0acb43d611f0ff9ebc37e93628c487bfb19d761bedaa33f09ec5f53f42f8b5f5cd26b90234631c9ed7c410ee7851f1a5343278fe04d8ede01f9c88658a8fdcd9d1aeb60a1c30f71a3d733f9e3c97012b117b1b42ac2dd61ad17b50e0ae6d713d056c83aea7f9f9c658a5800bd06465ae3475851b40a05d69ead277c0e7385788d3c639fb0e61cf3851ef7713fa73f2af00566cb03eb4c0df850fe71ad1423ea67536cb1ae26b5bf780ab81b9c47e79c30f72c1f838e48bbd4d79369bd9711d67fed7d4df8ac4ce8be4a96836e50da34464b21c991df99892972489ff80ef559f0775cd6bf5f08ff905f51cbf73ca2fe4f9a31869f3dad1bc44165f5febebfc933dda3edc715f7d1f6b9f4f5b3fdb9c9a99601ebda7aa774fd4b7411d6792eef2cc49a03f2b1efffab7b7ae1cc65cd63dc3aa71a26f46163aee7abc6afeb58bb6e11ffedb4a8fbabae84015ca267f0da225dc37e3d3b0789553a220a51ab05dfa582ee8dfd36d803b8a7288577a1df73f43bb3dc6b6e4da6dfef1bc6845087e1d58e62a6b19f4cfb58137b5452afaf41d59076c06cb496a81d6d21ef4ff745cea4cf0e7ba2d1226b07ac11793dca765412cf15f6c5bda9873847d099c86b7f45cfa69b7558b33df29dbc3c7a132ad480625d6dd6c5d8aa4dcd55e1f8e8f88b410d724cfdd40cf706467ebf6b2bbed5b8a6ae1a093a3272ecd2f14c9e86394205dce208d79739aec1db474e858d7dd31a39a463bf421d1e1dab98dabca2beb38e01caa2d4317ede44cffd9ea06b7ca80f9e1e18693cef8c976243380a8d3788f2c15348bfb3dce0b4758def9b75d4325c40259f1ec603d6a044ffbfaea780d67e5052ee016b4d244983c170f6cf2efe06315eec83374bf48d6974bd896a346a3f728d57c6438d06fd9565f389f846b6ce971863226788703feed6afd01be8ae7efeac52a32930875aa25e5fcf35c4985102be3a21cf4716e97dad0bb3063d2580ebf632b722fd43be3e08d2e7d7c7c9a00e0f1a5839fa7b29bd972bc092b329ee2df6a09d181bfe27e409a525b25ac73112f82652841a9b13f06c0b9fc3ba93f69feb1cb410a82903752ad9ef15bae61cdeb0bec6e0bca310ee9f792bac91a4708ea43f56a6f35881581de042a4da77d736319580efcffaefeb75dc0a5dc8a781872bfaeff7f130ac91a108b612de35a6d77f31813c10f44deb7905d8f8df1cf37ef02e001f3f7c77ac1571ec817384fdbef31bd69087b990db0ef472cf0bc8bdf05859499eb32ac9a2871e1b2f104bd6d581ee85e835688c1a0af26abc9a32ef0d75b957d833e1a260efb8af6ceb09e09d5913bfb069bfcfe8be18e92cde04f0c40dfe27e9bcbfe474c6cf648778a460b31f534ee72acd61601e43dcb7ca6d813504c47111872086fea77b0c4cfed78909c593f5aefcfefc19a77e31d49a5d1156500f353dbb727215888f7a52e08bb35c876f58bb6ffdc4ddfed7b1d52ae4e6fbd0bb51212b22ec3db1c35d7ff393357f70cab50e0defb4163260af6ca8f910f7b00e05fa38d6fe02f96b2adf86501b0b0933902da06fd0efa7d70de8a17b6b8c0beb86df368d8979a9e7afafbdeaaf9d34ed54f29e122e67c79e816722edcc6816617e6e8d3e740cfc174c2ae075e273bfa7f4b17a823a129b66a8ebaeadd878456d0e31e4d1d4a751c3f7fa3c7c83bedeaba6d45aea3a8602fde8ef747e2c839b2bca05f18539f8ae25a8f703f188bdfde88ff76fd85a86dc9eba491cd618bd8cdf74ed75f3a435190827295d58f300bf78c47990a01742dd9971eb9623d8c7ebd7d20e614dce2fdd9ff7a4eb217ea9b53d4093096bb1b9d1292d54308faa53debf974e7cc077d9e6fb5fd72f7950403de0cc6930fe60c8f16011f67799c8b798838d26a55b839e9515bd616d642e72e0c5646179807580795501f89a54aa1bf26a5ec421baa1eea2573b5037119674115f37133b8d353bf2267a8139398e19f63144b37ceabfd7c76659a87b1473c43325805b8dd8d239a2ee03cb19780f79222cdf93507bdd46462b1e313bab26a13808393bffe8715fd3de85b56ac214d7924d742fac2803aa73afdb87f8e9ca0fc4758bf1b7d695e66e2e13d0eb706bc28d1629e9f020bf79f07e6dfdb9db525dc3c67be8f3ee4fcae3a52b879accebd868926d2667e889920e4026fc4d1645181b22074d1fd7c5fea7c7a4198b43153ed4ee5bdcdb21f7b0ec93f9bb639f90e3a9d601e94c87165ddf32877c1fb5cb824da37eafd1f79417acdfdb41bb6fa7318f5033d7f587b3d67aa9f2f1d02b6cc221dfd41ca1047bb4b8e7f77b82151d5e604d879842c7c075b4288e0ff79bf671e6be467fc34810cf1671edcf09d5e373ad4bdee74f2df812249fd47f5377587e69a1ee4b2eafe6b7c5a0a759416fd72b33d225b14ff0ae5dbd04314e4bd2fbc8a38b394636bb0cf821bd6705ab5d14e27b8f3c2dcbc2b9e12d3369b4fbd8cec3fa10bb684c3278e71ace6196fdeabffbce9b68ba6ae217e813ffa27d687ee777d0d5841349c7bfa9863078051daf7fd157a35a97973976f9ad1ea01b47eb103dbc9d738c39c211bff3136b991aebb926bf58c7de937ebad618dec59f8893f404f6b510db2c36a4237af7dccb7009b898626bfc65fe07d7fd84f1f94fbcee9039c95fafbb869e8bf6705f8478dd5de9420da995d8b77ea61e710eb5db06eb56a883708e12b7c5757579db00469e72f358640a757c8f13366d03c46224b0a62a6723319e3de8ef897e5ce0fb2ada4c5b8c694b77035eb8018758221085c0e38a49e5c271852c1dc41c5ef94efb22b65a5b7eaac8bb12390dc89997edad36ba2335eabab27c43bc15d4e74848af83fcdaa9ce411c94b09f63e1883bad8ffa6f3e9be0fa089ced283bbc0d73fe80e360cfdc0df1b0b27284b501dcfb43f3b7f4762d791607d994c668d05642bfdf12ffbd12af8fbae5f501fd2f943aac80331097388f6ab736fe829b09f67b153bf4fb94c612e4db27a3ebed223e1734d5232615d45a55f8d9bfd7e8a9ddef99fca5f3c279d4e7ee6db0094b5922ff4ea1ffcaf22050930d7d0743a9635191e39aaaf4f84f84ce97dbbcd25c71c8db57bb3ee662b0ef44b597badba0decf50bfadfffe5156b68e2963c01b1d25c798bdb474bd6e0a9f6f25e48a75a66bdaad38f7efd346c69e50fa9d9940bf462d617f1e9d90a31a200f344827464b5febdfd4ba3e80352f67e40e7b057af9bb718035cd2b3f1c1193c55ea84fb546dffdac503817c21b3f9423a33752b4e4dbd4ada559bf1153aae321c0ef697e650b18298813ceb887cdd719e9b3c333438d2787efea27d2acc1b99324ba778f7d3c8d8fb33deec40eeaffcf902317d7616cf77315e243817add4c12be11b458757c6c9590877ff003db13af4b8f97db92769258e5f8bc15e41b9564cf49c3750eb49686d7fdc15f2f37e09c25b016f6f70a733c60567265d01fd39a0030b72bc46e1bedb7434a7df341738be2d523c3632a774b1a115932399b3e5ad2c7fd13e6a5e978ba31fed2e7a73ede5ccae88d3ba845d4af075a67aa353a2ee9c07101fcef6409f86cc0c835a8170cbd48a74cf0b99f84155abc2d0fd42b4c9d5f37dcfb813b651d0ffd58a9f47a1521fbcd6da1afe7ce13ef831f5ac35f2b610eae32c4a9627e71a930efce10479cfad4f71d7ba515bf62bdea867575af96f15b22873e83b2a27962b123ce15d42f3ebea0cf7f0cf9dab149fad81162a233eef95318836d0335db5a73f5c55ebc405ca876ba8e01f14d84189e25434e8ebac1bb2931c7c8731d3f1056437b32ebf9d9b5fe126a6f782ff691e29965fe76ff1be84bec8df74b5bf7f319ea9667bebf3630972ac0d658c98d7c0f36f202b1aa0a090784bace337b43f52ca8c32e4a0b6b288879006f62e00ff4c7cd207689d981bceaab6e83356fd5e97ca45f5732cc1d8ac43d92c7a1b541ecd14226d70acf2b55d33faba9c27a21e1cd653ffef8d9628a1eb2d6e5418b9cea99a8f5ed8247be68d3bcc2dc2ceac758e36432b724fd350e6b7b7b20ff971c34bc197351a756f5eb9bd62533f19f2ab62eae9317eed623c337845afb7e8eb14965c580d59663d020cd13b786f83e204fe6b5a53d995ad008f210b360d6c1d66843f5df6d88e31f9f361817434ca7f5bcde37a4cb7d83352845ad5c0939695e35d57d8ce0a92236715c12882f75a968abe774b10d37b2423c34ae33f6f1649e33d4368335710de1dd9a03be98e226c4dec928a9c3d967f5f8bebd70c424c033049ffd343c42bdd28e8ea849120136a87c99bb918f58cde01becd16f6e3d81f6b2153f912e45e6926f1973a0dfce22e6a00ea2a5ec25c66df55eaf7dd3b4db8e48ef7775809a8e08972ec6d2537150a881653b4b78eea6effde2b6a0b9d9e70cd2f8498f506ba4c43ab3d1df202cc3a6210e6744efce81efd405e267e588fcc7bbf18a213d1669195e5e6a618e4c585ce410519fba9ee29e8f9cd1b488a8f636dfec977aee94d64ceb4764fd3ebf63515d7850b7540cbd5f12b742adfc1a79e81969f8b9c73ff282976e4bdedad70d69138006fd88dbb09eaf1123bfdc71cad9480f3da31a2dd33182ad39a26517410c9095a82f1503ae3d377eb6c6eb56424dc511415d62bdb4abc81b40cf67fd7be8c114d80b2cca60d0b1236eb0ce0f85c635c3baf72620c77ce4dbcbf84da1aed946fda3df9b8de1d01f5dac7575da3f14f0431dcc4765c1baae797c1af79def04e8d7a567aa558bf954f5ebdd1c39020bd43408164544f5e029ec5da70bed83cb4e8fe774c81d8ffe46c7e0862fffb2025d5a36b7985b3709e2d938c6c067bf9eb200e22edb4f02ea0b8e7c8d7d91d191236f6d8578e075381bf5f324c79ee812ffab8f5b683d48bd77af510756b946f75de87a3cfa5009e4cd934e08cf932bdd9704ff474be4a3986a9349d3ef69e7eb866a885978a5fe50952367c68dfdc574e056f4dfede74396457e72c09ce2cf1cc242af353d8ef541609d55413fc18eed3e7755e9e54958b21313ec677588ddb6c5696d6a4ff18a72eb17d4ff423d9a9fe0470af5b45cd7b462d4297c039d18e3f7cade31af8c36f9183837f62fd28e57d5148f23d5b5df734a989bb79af4cc0b465a7e656a7afb838fb2eee7151cf7b9a85cf867a359f3425ca22271213e674f62ea9d8cc7abcefbffc1e71a439dc7a1f1e0d41fd1b97c2eabfe7b4bf4f72ea0dfb50d393c5b0f7bc00afb60e6f304eb7b0ffd304beb73c65cc5e18b5b873a36d35e24b627f7fade84ee31296f8eda773f33f87798b85073cce03d588840dc305e6090f75cd137fc8c7505e1c17b863870d0b5781180a70d787e453dfd1a71e2d07f1370fc8908743dab841e591f3b5a1de98891bfd4dc329edd1acf89f9bf404d817ebf8a503fb55faf20ff1bdea323dfc9eb9798f1c978a39bb826b925033edcd4efa42ba066e98c42461a0f4ade705fcf6b87fc0a665a27896249c8738c5fea5382b1cc9a3430551d0cf8857ecdf522aa0733977a27504b5ee6367912bc62fd54d7da98c552d01ea8d17b43ebfc13ef7baaf5e7603c3c8598bacaf89f031f771df24fada3a2e35dd2a9628b44fe425ebea7716049c8580a31669b9147b2fe6eebd23abd3c2c711fe8cf3b06cc6a2e6f0972fcd34eb9a64e8a391df41db6cf225b7684f99f1b6e5034f456414f3912127bb1c52fe496824fb0c0ef67563b622657d8ee1e71f3b5bf6950df27bf3c614d2bad72d4f8ca99ce9fd197ee2797ea831f42a3e339c77723b57f3de1be2834860ef134bab68ed89344c636e9162cdde51571869ffcd05c8dd640ffbbae0e08eb3d471fb3acf5ced5b0b6cfb91c4bc460be60bd767866c3dcc8aa3d6808f6396d3241ae4d1efd5e0e383de8b31e8ea8071b9d16f03e05f2109116d6aed6f5618d41d53edeeb26be264683379ac1186c9d32fddf1f837ede65325ac8603bc3fda7bfcf9f0aeb27f7df435dab19ee0337ac7904eb667623afe2a573dd7de54e940ee6f510672c811719de0cee14e27e0e3a3f11fa2691a6563b415d34f4f6893efe18df7d0b1a7636621b516b34212d70a9b91e5ea6eb3e3ae785dc0dbd7f908b91573bd447cb59d7af8554c3523a5f9c59e44dbf3ea05f1cf631f3c9b543ecf57fdd13ae05ec4aef8c74461887b137be8b696ebdf383f7388e79083186e257e270cadb75a4d71ac42b4ac0f407738bd92f837e27f93c94493a369a737addd458169db75ee616e262508fabdfb31fc739da62cc2593fc68b417b48f91121efd5bf7d1bb36a853d41ecb6de30f9067096140991e97e1fcb7afe7af3036cf89e7616a4a9a83e189ae210ef6cf45809cda4e05742e53dfd955e8297d0d4b83536b5f50cbd64f22eac79f50e3fd2ef7c9ed880116674ff1e2dc8acfc65fc0fde51067806add9baca47cf68dd1da96dba013604b3cc6cc1af6bb7f3d86440c35f42bdcd247cddbad847d27037fedbad0f33f1d936e7cb609087fad6b26fd9a3262a40f4e3d4dd0ee099201db17c15c43ecb31d3bfd73d0cf545a56057d40d282fae05d486b8c22dc3ef62b5f216f082ff43e4857e21a143a7c57f731889e5bcb2c72075f3ed4c2cb84bfde31c8b5e4c9a17a26d6f6301f606f0972f0b08eeaa4a66f3170fed7e8e5c35584fb0a4b572160bd32ec61643bf6cebff40a36ba8f79efe520748f146aa6d513e933d701aedd6ee92f51132f3980bf54ea6cfd1af53bca42f7e3b73c1d4f3333376317f3ed2d9c239edc610d3cea6ff4f1db22ac17fd3c9907a5cf9dd10b61bbd0afb0d5982f2b6a38726755273fef700802f822bac64cf5888bf126443e1df237b137463a76cd7bfafaa889c724681e407cc29e09eb598527ea312bc8f1e427f4ca95c35f1fce75837ea5e16d07ea206688ddf8243dbc1767ebc3b3564f0ab9c315e9ceea35e8ac73d0ffe282a71d234d0fad9f20acb14b58aa2c5388cfb5cfb97f2de6c176c29d5a6b4b41af74fc4e18a44db0c5dec5d1a7bc4fd73970ccd3426325eefa92f58704ecc681ef2fd43f8aabacf4077c4ae2f25d4bfe879fc4bd2a0bbd2ea0cebb1eb3df884f89d69027f76be4d3a621eeaff81cf678f46a85ba6ccef231f901a0863b795ad6fea3cf29ea566425e9b3fc648ed131bc24216a0110bf16e6e7f6c5021d45356d47c6d306f6d8887cda16f44c726b6438171a77aa31912ec50f0ff7317066b4b684e6d0abf844c732da04e4e78c183ce26aae1ad4844caf0711f6c740dd64a8c97b6ad23803fff48df4cbb2757aa6b573b406fec3a46ee57bffff1c7af68ef10bc35a46867b165ee3ef3bcd35c21b8f4a7c1f377bbd37ffacc25f30c75ce99a71db1f3f8d27b56be2110779164145bde9a2260de56d1d30c49245577e28a1869f8b4ff4408caa7076219df73cbfc698f76425791e3666fda77c8bf8b9cfe40ba1dc963459c083ae887d5c5f6cbedf3e63bfac59bb1ed66ab943e75492fc38b426abe0aa7ed679932abdb2435ca2aadf128bf64b0bf5c1ec37c29028493502f0512b11f35b374683cc93aefa807a53fd82f1568c7189d1b9cf33e39558567bfed0a754f9f188f86c17757868bd3a0f1a36ffc71aa1d1a00dda9af70c71fed341bbfc3ff4439debf40ffdd041df639e74c83956f286bdbae9a6899f16b8474a7c4764c112fd5e91ee3cf26dd79323c657e36e45eff96d7cc4d8f424a6a16d383d19fa23dac41d154b9da328c297d819ad2f8cb4d79c5a11b615d79c13fb535be4ba440d924d543de8ac5584d9cac7d4033991ae316224bc4566b4d21cd81318d7ba30fa5a94433177ea98feea91ef04faa9b11b79482dd31fa4a334673bacff39578aad7e261de87cdff3de71be1d89ffba9233ab421c3f79042a777623efe92480b55114db09e675bbc4b91aad37f4f78baa2686bca7503e69d1afad19792595c85fddad7684d7b7f4f34f755c27ddb9f104fb45b1f795533d617ffd341858077303f20fd77d61784e94ef224ee4807bf94fe2dfa07f0e71469fe99c59f78f393e6a3cb7abfd98728727e48b0589ac9ff49cedf74ee71866a87bc3f43db59ec09a5e9a3fd17311b5ee3d9f49935bd7136b97f9f3a9c69e8df8617b415cc59c4d5adaafed15f6fc5257c77c3fefb4fb72a8f185163f604f579557c8f9d8851fc43b1dafd2980ebd5fbfd550bb8c91dbeb4987e64e78e1bb0878112afacd1ded73f9f0fb2cbca05767bc8739b6c4fb3c92d7d0ffe03e6beadfdb6bf4515a21467905b98ba7f6fa78dfdd1bf404284607bedc07774bd45b3f7d4a3d36954b9ae6c90efb2af9d84f5ce22e56e0b969698c1fe471a45d6e723fad6df6f83c9ca39f98eb6f1ddd3b1d9e0dd3efe4ddb89bdfa9e813ea12ec753565343eba8e09be0b11e2b1d86bd245c6837f11ca13eb73e80c396ece2860d916639093d3ffbdb6c0979775e6f327f3b9730dd653dcdf346eabf664f3d6af538500cdc5afd779d8a09efc7237dc7fe59ce9efc71a9e195b35f13b6134b51f43b0f591cbadbdd245085ce7248ce75ffef62cc2375c17e2f8ee6fd3f9840575c83e48476a6338223f2ec83509ca873534b4a87e59e25ab9210e444efefe571bee23b96a4e2d718ca2da9339ccb752d70bc41edf8377f0920f3fa1ee2c684f0f2957d17a7c320ae716e8f0f6b11af69fa0569c02e7404cb6d48fa2fe1c72bbb017a2ee79c1ec0d75ac41b70d78cf85c6c6a67771b20a75afa89fa74a7b438777f829ddb32dfff69b55881ef180910a727dfcfacd683a85cccbe4f659f39aad612f4b0ed80f7570ff73b4df27682339a81d2badf717f46c2ca1f6f0b36a5840b520654581a29e67ffae1471b06a626b85fc820c3d79414f83ed37ba8f49dad07d7c164ffbdc8a91177951fbacf068ff7113cbe8013e687e2f910f5c5ab34fd47ad1fabbf0197958c77ee92aaca93723bc7fcddb431c0d689b460dfddb15329aaec37b9f7736db2097067bfd6a837396b4c0d2749c2056437b35e8fe923342dc0eaea5aef1b88e6bec8766b99da29715fca65358e76de03788655c8589396e5ad4e475552e746f5aaf39178c0962ca0b6bea05cb6654536e96b767ccb9f3d59efc26ede31a63dad4399e0dae0de3da55133ba9fff09997ba0aef452d3713ea7dd73ba8d5f0bbf3d929d4f24774dcac263e11d4b71dbefba743be0ae848584ff87e1bdedb34f14973abfe50b09ee6c8a174d6665c4ad456b2cf5493c2676263ed387ee05d3adb60386eebe2fae8e5597ba177a00aabbbf8983df38332cf70a179880fe317a8fd307eab4153fe3779fc650572eb9da36fe6007d26cf36decbb4c45e0e9ce3c7a9b4fa77aafc201df32488a82ef75c525c9562ecb8c3eb52d59d0e46ebadb557f4c33b994baacbebdf406c8963449e88104bd96f84ed8e00830c759ac19faf5474ce17f4fd80772cb479db688e260be3a474a1ae96d0fe90c5fe5263744297b76fda1780353307d6e5f0ca7735d40e32cf2f2de1cdc306c722f9a4987b1160cf2c4faeb4e6e058587c171f8da7dd8ed1ffebf1d0be350fe3115e79fb0f709dacf88cdc2541bee3d9e0ab246aa79ee07b467adde887c59e4b0bb0d04b5cf3096b047e409a531f73b9450e70f38e9ad1e4bfdc624c6a513ccfa48ecd22b5c77bcbc917197c428db67ddbd0b3f86dfc942dad3316e53bd48050f527fa740639d6ea95bb3d187f60cc1332ea8bc9f16fec5513b6674ebd4d996d27e89b1bae400f23422f596fb963d3c1234b9f57dd1d2fe652bdf11dc77a169b08f2f13b94742d82910f37ea588aacf6575d4dbd180bc7d99319bd8767d415a98c8e7c152e4fa9f6ba66176e63bd22f30ec39c68efe6c4197c55728a2bd53369ebc37caa1dfe7aa6efefd6fb76f25827ac6ffcf54c1a9247beaf885353ae8256d7904557933fa4cdf727f3f775fff769e4f7b1ecba61e785e1bc2fa9c74c7e8458b7b1010f5b2016b060c126473e757e465d14765a854b5cc32bcc6f9754d3d9b2db98bca4cec425288b2dc5db9df4efe21a57842be2d315915f47a89fde314e75046545d33a349e8c3fb166ac56f971320f2bfddeae1bad6d7117e74567be3ffe7e7c06cc5f3947f2233cad9a8777fac2f7367dbf58efe97bba57385d37f1277d7f2d51ff48b5d4ebd23aeb6b193f1127ab94c6770c8f83fa2ef9d8873d4f5d443ea2f3997baa9ce19e12197fbda7a29edc5d17f86afb0fc75031076d3ee9a037dc2b9d17394b12e3bc2bdf79e4df9d25f976f2a8490ff552a1a8161721c640dd24790b804f1ae2bc30875325e966be9b5a30f876352ba837ef6a0bf5f9ddfe984d9faf042200bd4421db6345bcc8f4bad55a25d37f4803d78cd33a2ba37e9cfadf324b4c705e5e53d35b2c098f3f5f84bf4c0ca773a710e2df92b444b396f432470ab053824de4777f135ccacfc79e42731703e838e2fa623dd6ca12cd39d4f1ae437abc59b11d623687e2a9f313794d2d2433c749dd19e1d1e7c9a4a6d8eb5a423f7f6a6a592ee64bca93f3891de83e8a1579f3290bb9542d8e9145718dd6b33178c384eae22f147bb050ea5e5869cd46f4be236fdfcb1cfb28d2fbdea97eff8067427857a33b1115ba1eace751db42dd393a814e63c4ea16b199dd56e87e54a7a8673aeaf375ad2768d72f1bd4c232713f612321d64e797a8de74119f02e8ed6d4db705b7ac7764946b8adf199b863e9103f614d9e595f7a46974d48385388198df6afe65db79a9b524d716d7746c15d0cee1a7d1a1d33eb58ccc4bc6be2e3c81f2ee2eee215f63da41b51ff6dc786ebfea4ebcec8aba4a8ff77ae1bb5c76be33d66df8cb67dd1523c3f9cbfab11f7c81c7e30f1f1377f8fe6ff3a1e5dedffc7789dd143f54db89e9f74742d63cd8d110ae2aa322b7f03e642bdde73a9b350736a3bd2c0a8c987336fd1c3c78c1badb10adfe729ea0706cbc3f6d95cd7f4481898191d07e7d734d358736671e498a5b8c72e8d9f2b69b4d602d6620bbd548f1ed638a712faf35b8cd1b2c4c59a759f771547ca5532e8db02af8e2b36a5efe0da3c55883fcc00ff9ad33da91bfa6619cc18e17fea12b998c899a3755f0c3e0613f2b6afb74677bf851aee42eabc36e4c5f63762787fae9cf304b1a64fd8630a24c486534979883e66ed5521e3ea762d79a1020175b82b6976a0fe86ae11902f0fe4b0830e38e8f1635ddac23d57feb8925612c4b435790fc48c6ab4ba3f8871368ce9cb1fbfed8cc723aec35a8bea27972561f077f30efd0b656331d490ca21c79b520d436341f36d2827231f386da82fe790aebbf977a7358ef33614a4e3b63f12fe1aaf41a2b61de954b5665e635ee50ef8f8c7f79f4d31062f6a7f35f550b354d23e069a7e6e1912cf96e2b53a6f27f43b56a01fe16dec2fa6f8ffe823bd0a07cd798d6f391c29b685b549eb87dbe877ab0cde05f8a68ade47ac898a133f9858ba20dd22e1b6d4fb7de707c236b25bbf4fa5328aea2679acc3987f5f2cae75e619be7bf59b286a3a7ebb99e03dcad353fe7adf6bb5b43698aee563bde8fff0fec4eaafd7741d092b5ad0b8a1f642b86ae2c33a5c522e451e1117e2daac656c0d38bded047b2d83b634d42eccbf93feb96622a8e13d9a2ea47029af2d8badb98745f4767f9d2cd983f6585678777a90b5b709154ffa79001a22e74d887ec5588b251c4f65eae3156a8b0f3e3a8b20a65e894d7ea629ae81b5d696afbd3403dc781a46efd413145d89d815eae792c7e4d64fa84ed66df13d633036eacd9ca38fad34572bb7311e8f0493545fab03f42a3ba27efecdf88b9afaa1755923d64838a1f169017e9d442f6fe1ad2657cae5de57d612c6b5d8d29ecde19dac53fc4ea7d75dbdef2423dea23f0fe2c5f2ac3eddd719b8ebf90b7d7cc0dad35c017c27eb7346fafe6eee5ceff399a00ee3c39a745a9cedf9214f7246fe2ab7f1fbf5efb57c38ee07df9fcf264f9ad8f7c7cd064c894ddf61759f53622d1862ccd8f08cab030bb0cef8debfbba0b109632dc9cf977eef1e83240f5133fdec62cfe4e73a276db7d14ef768f391ff427d1b697ff4731cfc3acf2bf40db250d32fd884d87bbcfb1e70ef42abcfb905e9a5365803c94747e45cab056979e627e233591cbd87efbfb7c63a6d9695ddf03df9c7f74aecfb0fc753163f78e7af39e2dab1bfcd11718f3af243fcf83cdda35f39b6d1eeae1f9f597f0c7b6dd681f2cb6f4bbf36bf554f5fe682c30fedd9ac9dfbc7b99058a4d15a9e8c968f990b46e3fc597c57a7d2f15fffac7e1196c1e493c4d74900eb324da08710f27cbbc4b974c881036e7a737fad6d91063bd6c96581fed0aee7afda0a6b11c6abf6ac3026c63eb1c1dea696ae5f5dd692384df51b3dd7950deba9cc6de48425366f675fbf07be96791d540eee41ce3640ed6cc59ced04b10fc4db669b0cf7f12ef2d1c3e2ee7bea53c13db2b52bccf7f23f8ea70ee2f5f178228bfc849e39c6d9fd79f5fa026bd327c42384d9c238a353bf1feac256fcfb2f75e18eef6bec6bfc1841df5c765fe299634e5e54edecb1a7611fd1dbe8823a571ec6d5958bbf616b65b0ee5353c3445e1de4afadd60217e8d7dbe7907acd778e3e8c5b1dd72e6051d2a8b9decdfb3e6648123dd775dcf4d98f0b1e4369fe88c31ff3d44cbf8fe07f695dbfbeaf25cb1fde9b233f6cbfd4743c4ebea32b0939707a331e82f41cba4197bca45e41bceee3d2feb7ce12716de4fbaa6bd6ba3e54911e4f6e538d88d7e443616a7e1aab126c1a66ce93c279203f77c4923cad13cb60d7bac7ba7972e53bf17bc8f128a6d5b52cb67c3d631d7cbb5befaffe971aa820aca49e57cef1ccbfab7b15915f515d60a8dfde8c66a3d1eca4fdb07e5e595487a75ec5d65f4c30debac365aed1f3038eabfd776ee815305d19bcb8faddcf07a5f71666630c95d78d455adf57c4effe6416710b985d9a7a6cec7c537fd6985f3dce6ee9afa856931b5e6473377f5cbeab1fe74f4e63d3fedbd83ca3af0aafb0675759f107e2899f083f51168c9e9963f46cb59e5c84b116d634b45f99e640e97db6049e60869ce17e5d5384ab118e402fb91f58b38c7e6a5d9cf4baebd7e17538fba3f68bb52c1df3adad18b076f9c8c7bea69739f507f1b6f2c9f683c6a3ea6342f47b5feab18fad85d1426d3fb026a56b9b4295bfd7b47eddce57ecad2be048ebeb7daf5063196216f6c4ef7587807bdeae48972abdc391bb655023a738472d97daaa08735c0c9ee5e3b794345994ae9b4e5761fc2cff7e8eb9c16a39a3fff373d8e61c4f12b160a5339a3c7af7aa0fbed7631acf27ac1fc31430c7ed3b8d97bae91ce593efcbd3fafb3de068fa8972dc2d07ae19f8cd87c0335f76e0c72f9cab5e87441375e0f764b4a7731d0fe465a9d7ae5cb91a136145d375081c6d79d82e202796f06fa3d91577836659f961b02dda0be5acf75f6e62933b0f6f05bf4f6f46e354ef799513c29cb5e3df62eaedeef7cf8cfa7f32b6b16e66eaa5389721a6705073d17ac21a9275cae0986f3436eb7c8bf118d3312bec67638d8d2cfb77617f8deecf2d2338772567d41318fabdaf84c1fcd1cdad471c6526ad7eee4c4dcdd77aeac775d2cf79d0b998dde83795d1263e6bff7cdd53ba9dde458aeb96fd867dd53a467dd199ca8f1ff7f98cb0b67afef4f9b92cc499ea48957bf44997a69e82af96c8af61e97fe907f5f314e3e26c62e213acf3441febe62e7655f58defc7707e551ef9c17bb816958b2b5d4b299758e38a6f5fe6b2a78ae8c3ecedce1fb178514f46f7fd9afe5db1cd7514e5c763df38be7c899756e65d39a01e838a74bc21ac88a146c08cb4d6ab03f1c950b70a30d8b3f4c088bb4c78c68c384a95ce1ffbb17f7bcac18302f8e16a39329edcaf67f44d418ff6dbd85f28e42898f5d6a6181fb56fa3395ccf58f757ef3ddb8d17b962d89396a31c71152fd665e8ab6a1fa887585055c441a4f10ce3d1309ef7f3e90cdc271aff5c5e1f9ebfd640f2f0d954d7fbdfad64fc15cfc0f139bcdfad596288bfb4c6f961657c0b493f88cd606d5013b6c778435a2ee5e93a16bbf30392c8bd1b72fae8cdc44f5d1bce43ebb4b4d87415cac7fd506d313e3cfba5853d928e3f415e75c65ce74871f55385bc39f2e72b87da66bf9e4a8ab74bd323091fe36f6714acb017239ded1c6bbc47057abd39c64402b586f6f4ddcc39cff1b9bb15614b3a497d0eb6c6f190743ed7837d38375e43efe27617a7534d06bd19952ba68fefdacc32fb51a73ebed638d89ee646e23ecc8d3cb97e79fe2fe6f91f146173ae35797c51ffcd3911b7b1241cb9c9b5e9fbe0a7445cd5624573c1c4d133c2e5c7157954ca93bd6a66f7bdead73adb1adec4827876069b62e21db5c8bfac3fe18ce2b6c2e02dfadf659e5f37f143ce57e2be515be6373f6b7cefb3dbb81cb4c235ae87fa093fffc4f528c2f574a07f14ed3680cd0f08530cf97a946e1af83ced4acb601876588b56d5c5d4b832e3b1f0736e636da6dbae80a716a3fe46fc04bcf2e8931f5af02d50c967aec749bafc5013a662baa1785ffe20dc8ca8dbb7537abb38bce9c7d4f409a8de11cfd1374012eee4ebde80b8c4d2194ffa5858fba7518e1250ae31c2e33686e3a1353c0be697d323712ba245d4804641b6255c7fa4395651ed5561bc1abc6c74dff583fab5396199a877a322cabfa2d5aec4dadbc9061d5186dc12d30b8b2a45b9c60fd286cd12f491811a0ef8d7532d34534bad4b5f1e98f13786efb750079751b4a438863482e4f8c3d4528bdad46636535a6bd5d1700af6a43dabfdd73278c7c6d4abc07a9337ffc2c31811673c2dde682f8c9243493d46976ad422475d01e70dbda6a2e93a6b35265576a0d19535885353c96d43b1911bcde653ed67cae71ddeafe2ef73c0ce07a095a3b117fd3b3a31d8de7e7db3046298ec1c9ec7586bc0b37e8fda378e5e970b46bda076139406b3b8404cbac10038166138ef9eeff9449f0df75cbdf7f79c22d70deefdcdc1dc744e3c0c914573e4f97dae11bb3e7cff6f63a5f51d036609eab71d45c0f43392ee36201ee002b1076bbc76f2ab91306691c1c062ce4adecba6c66c115704bc5585d6b0d7d73a31bdd9615effbc8b7f8e1cbd2b5471fc14da7bb3fea0da8059bbfbf7f6e138a881e61e8335f52d64fd8e732b48274fe49d0afb90b5b524f15bfb9852e9587dc10b46dae60239236ab56384b77d968fb96e467c10fe8881c1ebab3d711b879bfd98d66e5b1a3f64e509ebe8501ea77f9779a1c6801671c88b9aaee393efafc4018d4b07b4f585bbf507cedee8996a4a2b8d4d84bfe3679f7c27693d8ed1dfc69658bf635497caed37e325e2b6efc36fc39159e7b0d701da3e2df8f11a0e2468ed94f9f2ee3b507fede374212f77b96ec44caeeb542eccebf39b28eece7b289f1faf99fd5610b72d513f6aa975ff25e92ce8b5e4bcd47592e4ca9d6b8b9f45c8e1dd632fcb22defe3a073ef91262bc683de184ffd6fe3442ef3bdf1e83f8a7fa778cea96fd7da8c81181a9f17ff25d447ba5b90f66b8a6ba9e0ffc643d2f70ad511ee2faa56b6a9bd9fd31d919eac209e1943833f57df296acf1fb8c34ab0197aefe71d69033798b90f8a24b973e835cb11eb4c4a4a5fb0ae80b0eb800aa893ad0d7e4b279a7eb4c6f3a6f030d34d7ec41da0fa4067cd58467e2d9f05e87e71c2507aaef0b7faef3c5fbb1970ec581694afa97acdf6b6efdb9efe7961afcf975cc85e7c231027e3fe1ed98e99fd8b4d713a60ed7e731616d7e2634c6f9d86719239da903d529d22c7a37bd6678d63096fdfdeb7dc8684b5f713d13a53d230f685d1b5a4584316bf0397aef3047da34a5e77ff0debecca99be15e198c504ddaacd96a72464c2479e6fdb0d6d612353201635a1b2ea4a27507bc8474bc56236789b087b5270af01b1661345a634d746dcd6caa2f8bdca635490cf87bf03281ba4d9b6e72c49be7633fa17e09c509ee11b9b3da9f02d7777dfe0ff3fe5aa8299b6afcadaeb56d08a3ea8cf8ddef638d2f71ebf7614dbd5ccc1886b597e6477fd579c6f789a7e6fdfdb8ffdeba59ba5adbb760138821d50cd7d4cfd27ac4c44857afe1fdfb6dfca8b0effe33a3f9afff5e751c626b4fdd309769084f03ef636a5d3d7abf517f52a0c6687f6f0b5c131bd08d53929e3d6852d7cbd5d4fbb367047eebb1c2586d4e7baaa27a0673f13b91c1bedd7e5c0c07f240be0336f4c70af1b32e30562fe210b538964c7b3646fdb89256abd6e58098e8fc8a7ed5107be4adcf72a87167a82788da56378c298fc4c9ce6ef7da57d1c8e807061e9caf68fd440e58c2a5c6bdc423f4f35689444fffcca3b93da7fa33f8b19cfd39e249888726f291eea5a4b231da07caad47e2e179ca4fbe33396dc64c9d03707322ab7ddc7f857cbdff5dfb86bae319c6052560475097a5c198ce25ed69f596fa43acca65fb49f7ab0a0f6b99adc5dd88b0c4a5c63c406fd195a8df093a4911ad7f6e469e2a5fce27f2b2a39c3875c59bd1c472e01a41331cf8cff43d59a8fe7b732ed59eb840f09c6b8a4fe6e0bfa47b3b1a0fb309b5465cff2cddfe79e231c92fcd421d2756612cd4e72e9a078efa7d32df1227e0933b2d7104e709d56655a8b1484ba3d3938cc8a301f058ec85dfc569dc3aded6886713dd96d683e926d8fac8737a46ad564f38eda7f9fb0e7a62c2b26fc4a553fb93e137a550eb4a08db857cfc39fd1be3d5396118d77d2ed53f073b7edba006a99a0cc75b53ae655ddfcdf53a57ba9e7865b434ea18732bc217ea3ea4b04617063a488fd709fcc504d7ac29d5d6e9df1827cf712e4eab3d5de7cc457d9887ebd47f87ebbc9aeb7463739d556eae13f39b33f6a36bcd2f11ae67e62ad54952cc41d71de176eddf89c119c713c25971f0c2ee905709b553fbcd62835647cce5ff47de9b6d278e6c5bc3af2424f0485f260681b1250aa1cedc09899124c8181b6c404fff0f45c46a22246c6755edfd9ff39dabbd2bb1ba6856ac66ae39e339712214fd20ee0fb8edcda209d54dd2ada5f2895dd0db8438b200fde7e8286b552277be557594f275b6c3b519289ef303e61493ce5ec6945e051cab91f27b9680838bdd8f4cea3e0f3cc055c643c5b37ec61e973c29656ea3f2114fd5785eeab3e7bd683531f6bc8e789ee8999fd8509b0bd4b8448ec03d0a1f3ddb40ce2676eabf137a7db5fd73257e0370c061e4baf1f817608edc55ed67c8b3ec43d6f47ca5475acf45a73f97fd3c23c8ab2fe139b1bbc7b560bf38d2c6c773af52fddd92ebbd1f00574b780fbc4ffe631df74a7eefce1c79827ca66b5b7e608e2d5c405c53f92a7ff0f4fb00f195ef55107b1eac3af604ec99277023d2c62dec0ee449260a6f7ff1159e765e0591f43b2da5fd3d39426f4458cd7aa8c73756be4a677dce55fc11854ff87bbe83dff797070bf91e037837897b3d3e43ee47f98c3ed8536dac2acc31b2b1723f54fe4ad633c5bfcb7a80873ca9b32ef6a4a9fa7d9004f87ba87444a24d8ef33f1d400d3886dcec6bb655fdcb49f98ab591e7f31dc4b2d3488c4fa8b0460fb03632d416185eb0afacf26c75fe07cb7aadb905f954c94b577153283d4d8ceb1f8be70e702ef4ea3d20ce8e0439951e97bb09fc2e6a194f963bf6231f63603e9e617a8fe392ef4a587ba742719bcbfe63f10efa1a8f6e315f3d855ee4ede4750ad8c8446938c580933eda4ba58d1dd9b7c833b5dc2226ef02bdf90b1b781ee4bacb86c179a934d7a234c71cb387d804ab07ba1751922b0e39cf993def23b53e7a3e7243211ec19f228faffb966d45dc36f0adc9a1f63315bfe305ceebe5734fe2633b0bfeceef4af32cc19ebdc87a831cd2722331d681c4334a3b11d7e782ccd7475bf06d8b0b8e5b64091d95e839efe13a1f722e9c0e7200171160d68f4aff58e9fb88de0789c9067ec479d587f51a2a1cc7769a005f7c899c533cb7e74b3dc5c162337981f3328b94e66018435fe6c47f066d8cf8049a517e22eb0ed3a17716eb37dd0fe6e9af0fccf5d6bee4c8adc7b3475c4a7e7fd6997421b7ec2baefdf9c6e7f1f0602eeb29fdb9d022167a2667c805d7eb26887a37607fc3daf7947e6ca0f46ede430343e06da01eea551033ce9d6da5b8e2e35cf109fbd104f4ec8315e86c387d0b7ab597f650c5eb39c625f87721ee1b887506abadff06f16a849aa647ab1842dcd8b95776acb7049e45fcbb2d60baff5a8d6eb11738a3b80930328fb9e0b31639c38f27c094437c497f37c13de2cc7a0a777c33b3b18734000e9fb9b3a06f8e14f6382d81838bfe0e7418a35b6b1a897c96eb59fe0e7a4ba330c6b8d71fe3fb58f8de5427553590fd806979e1b50f0e5e7bc16b817b3c9518ac20d90f0a88474289cb5958932c1fa08f76aef7601d6bad86e55fb9a8c71dfb8555ee673be8ad9671679c962f01c45680139358a8e1fc79afb4f76269cf93fd9d1f02f67c6881ee09d3683e28bcf7a0d84ef64bc020432fa0e2ebcb8613d03cac669b21681dda101b7884b712f104e51239865569232b3f78e1de9bf3102b5ed15ea8f260ab31acdb92ad55d44fc6fe7ee4cba8dc619eaaef4d551c9704aaf77bf8813c682a9ef0946e6090aa9a6c54d2fa4801b3d8e9205e14e65ad4b959ffd6a80bb8df31e29023a5211b1d61dffe85f50a8c45fccb6cd757bab245051c5d81d2879fdbe0b3ddbeab7ba898a1e80758d3ff51c9f1ba1d2d05879b2f784924c7f57d07c62d70308faef66ced132dde305e733cd86b7f15a2cff5b61f747e3a4a9b611c37f226f13e1fea799325fc4d2cb9bd039cab72e7418e409ce9f1ef07672ff9f363af523df96e3c107cf36bc96d267bdd837866d7bf3f895c7aae62a7389a0e0a575ddfc3ebef446cb51073a57ae583ce4468c184a4c3be9b3d9f23ea0b467dd2713cfa01dc340bc0b2e603b5ff555d4dfded241e6d7bc087249e139d2fa277983489a3dcdedf298ebf723550b8e564d19b46c07f247d882014398010f0e5411c0c244e31827ec013e45643d1f32ef21403edddc7dbfa1c7e933d37628fb9cbed64a06288fd6c93035eff75f66cd5e32478e19f922e8ce9efe9a81c324d88feb28e6da0f73439a8b3d13fccb47c5311e521f4f3fca8e7c98d14efb9c08445c53c1ffbe6da91eb81ad9d6c03fd516aed38ebbb40c34e89bc577dbebfce9e879af66f26fa25b9deec6d853ca565a471d714e964a4e6d3d57cfeb49faa9c306974294dc728393ac41f28793497c3a7ff08b7e0b2a338571c7c1f690b2a0ff90ebd8dcc13450ab3140edd0f85f97f2c76becbb5ace3b4503aa7b5add98376c95ffe33701804a083fab81a9bd7fa0b38fbd4b8ee802f792e35acc475982f8eca832735a8c7d97622fe762ef336628ef39ddfb00f81818fcb935b91a358baebe76274dbb439900348d03f0e24474c3c089e8f7e246b33a77947c739149247a41f55bfc0e71803072ef07d615d54c65317c82106617ea26b44ed76abe2d68daa53ab1cee0c6bce8227d95984c0fd2ce3ca3251d7014ec1553c8b638d973c82fa84ca07423f9913e8f7833a14d6da631bb45102fb0972961063bfc62adecb627526280c5390ec13152f7da8fa493fb07be01bbba0b38a7c442a06a1eb20878de7943b4d4acc7bc480d380f33629d53e883a19dc2bbc3f63ee03386d22954fb18ff85bbeebdf19636f7b307f1467bb0bec5b8fc5fcca9eae38306a696fd84f974e4e70ad9a8b432479fed43e2c9c40f95b85f5a2f6ce135eb3dc95fa3b578b03ae1999ffff983d9f2a88b96773aabd4a5d4bb34ecbde2d11d769b5da04f94267d007994aac9651879e1f3af85da217712873c4b6e833fc4bc678221eeea07f9206bef62d2a5e5763c4f6418eeb48d50a713c72f2ad7ca631688cb3f8de7363ffb17913ebee22cfaa2c9a9cf1df94b619e412827001fa81a93a179d42d92ac0e514cfc061119da3f6da6c3f54ef5074608db37da07a0e82ca9d1bf57027826f92fd4f6a8cd781e82f88d53875d499916c3b14337ef1adecfd21d7bb1caa5aa95c63c678ffbae0fb826f17aabc2dcca7b31e6a76cb61f3b6839c72d903acb98adf10bf24eba34abf85ef3fb0278a13bd185af04d0afb8b7b579f4773fe442e0a387b0aa85bbbcb4d1f725d92375af921cbb07fa77f8fef839dc5314886da58aa5ad918fed7db40bf448cbd16f01da62d51df24cf51b27dc0fbfb56efc185c62774ac702ee5fa57b13f3c33eaa93a978a1972e86b7055decd2d14179bda23023b51afb13c8c95a60570feae9bfb47e567f079f14fc9a3a9c631c1fdae5d53fb1a837a0ee5390235ad78e7c3b784de193941716fc5b6d4d21b9e679753b75ecbfe50bedb5cae33b5c76f89e73cc5f9b220f6cb0601ae15c809e578eee416e64921a7180a2e0ff62eb7fd99f0f58efdd9fc385a3dcb777eb49ee4b727e558aeb31278e734dbc4e6c6f18c31c9875d3526aec224b8632f851a475479c86d1be3efc588cee13a16067e55f83d1ba05e97152adfb510dc14c2df38416ec88f5e0e0bcbefcfc2f5837c7f0f3037923362037ba160cf61eff17c1c01c773a67a79958f3acee937279379a2da0f7f0b7e235fea88db002fea2acdffdb2ef072835e9b2f7ae31a6b4a70f1cc9cc0879cd052719e44ce1e7d224fd460e5be292ca57b9dac41376c9ca77ddc373ec45cea3c2c1c7f049a3c629e2537573f095dbc3fd9a1a852353b57c54903cf02bf297e07dd381f6af9dadcfa88bfc80610a7d3dc65c0cd1d1d2dd00d0d4278b763557fb7bccf023986b2aaafbe5bd571edfd33f43e25ca1617496f04678ad05009852f39967aa9b7c2a75a01bf677238518c2a7c9a57e056547971a750b1356844fa7836c87505f6d207bdeb2802fb178a3cb6d2ea9adbe51be85ca8f3e305723e41b2bec07b10af6ae71dea3162ac551fb25abb56fd5eaa87fe5dc57dfef23772300b2c7cccfaf057025b207e13bd1619e016948fef6f41f72eeec07b3e582755ebbcf5943d7a43cd61eba4f6d5d153e7d14778c7ae131ab7a2af467c97f7dc1b299d20f0b72ec9dd795fcf6311ff929cb6882d729d26cfac311e6aed15cf3d5847a25e449c17c38f27a95ddecf12895dca90f76abd83b3bbfdfeb4768bd1d5fb578bf97957bf7f1d2baa7c8095a18fc87d41d5531b997e9cf211851d419fb25ae03a91e7d69cd5ad7da55100583838ffc8e6d25a596e16ae865503fc35bca3710f5cab8ee8bb14f3ec09fc9ab8472f425e685c4b075f617083aaaffc9d42e4e9c5fcdbbd03d8147846f67c040ccdcb620e3cd4bd117211ed7ed988f3037d38a86f298d36f87d51411c145701e0a5058fcc2de61782ebe326e6604171a6f221e598cb39893b333c7f28e652dc5a8a73227e57582d77899a4f0bf431a5669fec395845f7665c89f5a86c84f9867aec958f7b5f2dc1364a3f5be2b34b58633ee060557c2531e109d4bc47c03515637eb1b16e54ff4390ec2fd4cbe8cabe6898b3119e21aa06a8ce2bf223fb78765bb8c74ae03317f646d5b7b31d9ef32fe82719fe8a1c8772a173bbd7fb41ac9b7da6f6c47213dc491e71f7ecab1e942c9aa08f24cf31b9c7647c4b31b4ee0f533cc7fd717ecee27954f9784eaaf54ee77725d6aeac4b91bdfddeb576f186d7ee6288479c7c88b84f717eaf9e878d3183b31ebe5b6934f7e729fa117ff20e2161310f15e00d704fd298881e48a9c1ba78271f08befb50ad28be947e09cd47b7b61baa96f287d716bbcc826b271d58ffbe63f806ce7eddf0c7e7864f9c2e366a6fa25ff227ef1021ffbafb988d0063a6af218a0f7c3a0bd187281ab9b5e96081f55af281be77adc0fccb6b2f05f8166161fa38374f683f83bbb6b5a3e504fef0fde53bf89483b3d7d093d0e2bff7468affa9fba7dffaffdc38551e6869b8bacda218f2ffeadef2aac5c0d85bec9a3fd973ec6f1d9e67fb27e3c6eef92fdbf0efadafcfbee98bb134721432762a045f986f4586affaa773c9deebef9e8bffce9e557f5bfa7afe0535dffede377d7e56f25a08ff1695abb2b89f2d78f2567f735cbe6707bf5e23ffde9e673ef29ff81fdfb68d8d1c12c62ad9a670b539a7e78b7858d411d2f5dfdbdbff27d6f051bc573de65e72741f07c1dd2c1a5a604316661e94ea5232773684751083de6a583c03176774013d7eca4fc59d1c7087ce7d8579ecce4b6b5edf1bb6c730a46512895c92e409ecdac6f5c0efafdbbf08f3eb582bf077eba1ca699c3d85739fb3dfbdfaf7d6f8578cfbf538598ecd07d6129c18eac6d612e778029a9cc07deeb25c6155a8bc53e8fc7430f6abc74bcc67e7a06ae0a0814636a19ad4eb5ef44914d6e46515415c297a5244deb1a8e34dfcfb05daa6e5b81c6a3e09d508b85fd7bfb237c59ef1d3f5b02d17a1ad493e1fc6de95f98493f347fe56db1a4f5fec607e3a89bcbbb09d020f246df767b518d9abc6c7aa47f6b6049eaa7e664da0ee3fcec74d6c5f2e7aa19a79b85ce91f06971f8011771f2ac8bd9497cc6a7dd6019e55d0b38e73e09e809cc2956bb20de6d4054fbce29ac57cf6aaf607809ff7b987634b18c8db35bcdf0a7c1cfd59eff82ccadfefe859c19567ede159760bdef20479a32bd71c000b1424072b105a71ee7b113d1db2c8efcfd2b8a3f0161fb34dd169c979cb3c1d5b0bff23ec8fcadfab7d7886bd4fcfe6b6213862bcbefdc1f28b14b7cbfdd4c55cdbb7eec3ce9202b078ecbd993d3bf916e4b66fb366bd45f83da2afc6c3fed8c85e620d50f03a4bde28aa1d7c24baaf2cdf51612e202f1ecebfb2d15fe432ff3b365a61d96e09f37f01ac41d99f25bd5d70397744fdd22e24de26ecdfad76e0cb35ce5ff90e9599ef82b546394aca99823f38b3f51824ee617d37240c9fb6d744cf88dc6bd4c7db9bb6d9b525d835e7fe8463312e06ad7fbb85bf5d438f973b1518aee6df66f0b7f6c98235cafc8ad635bc14bad225c3a0c55de422e7d80c73ce65ae1373ade4e7b4aed3f3720b9c1798e7fdcbacdf36f68a589f6bbf6147d4dfcbf3f31bfb3319eacf4e0b5ccbfe780d357835bf84b3fa629dd319182eba842391f12dfa995fecdbe53637c6a53786bd2fbe57d6ab54fcd1f6bd2dfb0938c863aca5edc94f2b74df225d0326da2d40f72f8a3fe2798b5d71fa3be4cf515c1541885c43ae67fd52730635cb83e095133acd697c978d31cfbdab7dad95f8f7f26e85ba2a9193a18fb207bfba073e3262699cfef4cfef5f300c65f491e1d9fc67f7ca370bb009ca878f21b6391788bdbaadfd7638ef5ff1ec0da90692a73ef43c5da08f304872faddf18758ffd9c4c05fe1e6a217acd39fa5c1c75cd8ebe16969ad3bb9eae78f2ed29f953c1ceea2a0da02d9c7c433303ea62d9435dbfa7eb3ca73582e640875418ceb5318bf3aee531c8fceaf0a317d58ebed7c00a693b408a2aa25ee049f0b6bdc8f5633aed5fc87e48ce363d45e2e7a1e47c4998765f4a4f90ff9f6bee13767c07701e7461ca93ae7ad564f56b83aeed39c738a31f55a6258366bd1957b425d3efa9d620e7b7f041c86e8ef14cf50f5a98acea22c06ddf23ec564159e1367c466546ea70d3381bfdbbfac464ec63eee60ee801bfbc1f2b4bc63c39ff91f53dbd7f7b55817693f7b1c95f5dc5752f7d5dd419dcf4b0b8819de968889e8beb5ec011b78a3d4da56ef5bfb2ae7add2f4ff58c873618f58ccf1fad3fbe7823b4c9d39d7ef5fdbdc4d7dffda8ec592f350de5ff0251973ee4c30a610ef2ff824f6afea1e82838fdf83e107685d3801c3f4f4a4ed4aebb526e3464ff49416aa87c67c7f5a0bb9e84b94dc6c53b0c1727d2d66d150f48e649688494eaaaf02708f7eb1739b7829b63629af42f8af2c39baed67b881bdb10bd05abb78e8c7133e8cdd87fc787d7ddf3cfd6ec40d6473992f65d60bb94f43f93aa326c4f08d5eaaecc4fcd89b955bf2ff0605c5ae96b25769ff08f60574d2f45a707b7c27fd669eebc3b3826af632ee298b01609d8a6aaae7f79e96a25fbbd39f253ee5cf13ecb959286c66b58a6657720d91869d64feeccb13d824f95dbba7df664e2fe67858f13c86e194f3bac19e281b62e80ce3c3f518ce2485cfb6752ce2ad39bf6affe0fc1f7dc4542b5dfcd4388f9b3135eb21f0cee45bfd68d44718deb1a734455cc06e1478c6a3ff8c75148681a8a2a61d3e2ce13cb48b3de04e17d60be427c03f3d67d67dd3268f7ab0b677590418fae282d865c5e31a84c1cec85fc35828bf18f6aaeb18f520edef28bf2cc70ee311a12d27782bce94d7fb856367d42fe5ba497ab8e6447e1fd6e208fdf64eedcb499b7d82fe1e77e5fe84b842697b4627e082cc62dd17c0fe418c51a0bfa17bc19cb183ebd709d1b728148787f8df770fe2a939bf46c6dff03dab31faf35da55d39f61057b8f6d8bbca7c14f478246becc70ee7a015257ca10bdc7bb999dce958ad02b15d8565c1fec13e023146d28e20cfa50fe75fe8e3df7923f0ffa1ef25aa4265cb1f6c8c5d7a9e75afe1a08a21f40a4490dff297640fbbb03f0ae0780cfbbf356cbae30247e8789a9418a7f9500782fdeb94f2fc547e6154c537b0f6ebf83b96ba182738af3dc1f726f6d52bf662edfa23e8819176a5ec414e50f58ff23a49287c54b27b6837e677a64d8caa44fd9b17cbf5017653d8c8c8277b982a5e76d5af1602a63ee97661affac8a959d831e8dac55a7fc48dd4911a76673be37ce33d4784d56631f3baa7723eb2cf3d1af6e00c50f132facd4b672f31fcd1ed6b063e05604ff11d25cf47a0eac9450ab587a39d03b68fedffa5bd863cf2097fa75ad2d1030db37482391a666f199e3d00ee1ab0b3279883628c794db4bd53c89348ada8bf809b65161d0fcbadec3b0b254e7650c07e24dce4bdd27992f6a90ab0df22133dbe7a5efdd13e520e369a017618bfa740fd5658a3d607f339ef312f08f33a861ee67a7d7a74eea93586714cd2fbe45d6231cfaa7f92f25f0ece17f8592f4beb9377d995e827d3bbf827c9d9a6b81922d4e0ea3d5d0cfc6e283872e45e79f6186e57e4822aa557db9f87c186e17cc5fe5dd5e7bb5cdf277e5f150b329f70fba1f88afb41351937e6a28a7b188b8de17b7e409c86bfadd212749a6ef02c0b273dc91b0275ca92c621dc224f4b117b1c7b1db6faa6ac5ea9e5f5e57532de567d6066bebed1b7a6e759f47394f97412abfea31b084e7cd2ba0c2ac153f317f1b2e56fd936424d3bf5ee03c9494cbe81d234456ef720f2105f097139fa9fe19359ef479f18e6009fa77151e6a63da37817e260851365b866d9f363632e5cfacf324fb69be93e6c17d6b7cc9d333c26f6d3f90ecebbec3f38cf76814339cb6208b697c64cae0fac4ff07b409fe1c6434e6ee0e231fa8fc64c6b13b1c26d3550d60763d473ca7a9d893d046757964e902b85af15167fbccd41976eecea3e4795b37934eb49c26fc79a10bcf72a9e297ffc36002c6d08be6bf2a4b8c8cb086c39bc0fe5738ba1596ff28690972cef61ec61ed213e3b442c38e6970ba53112f09e3c8a5d1cf009bc88e7eba4d641f31eeec07c67651fe16fed509ed5a7d098cb3c356a2409e58457d1afc69e91f12bc70a832661fbdaf66cac153f36ff6e5dc7a782ab32dbc4ee95dfd7926f4ed4ef5ffd08795211ffedd5bea1d4c43cc7986f5bdc81b69c8f7d8d641b6b7f37923ec3a3e4b4c4b89ef7849e80037c0567a3d5ec3f9663423e8ef01d70ddb7da63d02b76bcadea0da84ae4f39d8ef7aecca7080da87a3e3fbc216850eebf55a3657bc8f60cdc0df51e37e279794e85933bc23214fd59e275162ae7e759c0ef5080aed4545c93f8f762bc9362903d77348cd562171f558de46db671cf886b89744c1dd691d898a91c01cde1e77d24b5ff17cfe64a87cbcc79406c52516c4debbfa842ca0fec8117436271025f3fdbaee71f685fed87aad7f7b51e3bde739d8fe301f4a52a9ec5bf8cb3f3341d022ff87ea778aa7cd9c7b5fd580d3da643e1bad28e4adfb4f6e1bce144d447bd6a0d584e1aa3a47c0fee70fdd92bd42810e3aaf82298ee198d211f73c8d3535d18fa6dec4e1dff484ee1316010726769ae41a377056d34da9c0074bc2ed16fbd17859f37ace745705172de019933677c0895ef1818d7b72cd2318ab91b7d1ab3fbb6714fdb72f45c06d51f305798eeefa14e047de4ab14e36cedeccb06107f46580f5a6da1b6b6de23be2529067c7d89b32b7577ca074e573bc47f749ed026fa2acf73509c57e8cb74c23bcd773dcf311f5118df7b1bc235aaf6a17cdbc2c2ef0dd11e3ad44f5dbc07772a5f3cbc77d01fc3b1c9bb19e4019d990376d7436d9a886a6cadd7603e11f187382f36726adeccd5f809ee1a3527aa973154f1427705b5f43970d9ca358cb5d2e8a47c05f7016a226a7f807e4285f62a391b6baee865b82ee28556d371d647ccefd57114f8673bd48d710b1c8fb66fc97b7876da9df1ff8c712b5e312785fb11f01893f3ec4aedeebb7b87d7a18a72cbc6553e47c61abf7ae8af6d3f1b8bb8de3f527bf0b918e85c2ce79dde8f5060ceff1feecfab6709e188f701d40c94e6a4affbbce54dfb3846d69cad59d987d64bd49a3d13e6b6dcc3b7b16f592b8e979718e2924869a827c53bdaa67208eb067220c0050bf3bf5ba2ff059ae090cf2ed1c62decdef071d0bfab7dd4d926a7fc6acbd8fa738cc1b5f98733c4efa01eeea57d3f4d76c1fc5b73a9626c76eea401e62da623f4a344ee44c6163fba88bfe96cb573ba70617dfa0b2ddeb7d7a85f94278413f947f774d64fdfdbbbb23e4bda383ef0e47c449facef3c567a03d01b28786cc5f3ec6288fd90889f2fe22de42405ffbe873a27713587dacbf0c4f6a6ec11056c4266fd829e4b99af269fe75c8f13d4c15603d06592fda5f2df6f810784e736f4dedf707169e9f37e81fafb42f013ebb9a0476782389185e216a33c92d4d790e3e0d92df7c6384ee43815cfb6ec1f441ed0864d687050b1daa23f561c79096286dff1dc40df7a71033117e295c0074c3a17e2959336ddd3625f8e1563f8c46bd7c9f385388fd2c9403b6b1cd441773dcbc44215ce17d719dc0ef13147ad05d5477dc1bca305f38d7dd7c08fd278f783f300f928ec83fdecde91888d748c9977fd9babfc8d72c6921b0ef17888ab210ce214f7c4fa1ede05fbab91ef3116fc2e0a4bda03ae8062b036cf834b61b19e6b564bcb208f61af2b7cf7ed41fb1ba3ce24ff6db0b8d3b89d92127b87e5983c99fe7c6f65f4dbe71baab18557ce4235563672afb09c84d05c9367edbb1fe9f7f6933dda19c8cfe6cec4e823113a23a67d95363346acdc80eaba304feb2e600d5669a9f729ce6f5f0197b4446e59e68b858b07b5de4e2b18ab30ef401ce2efd0be75313f89fe5864cf01e3bf2b918fc037fa01816f09f769e82bceb01fd8cbaee693af6fc59d0db9ae62876b066237bea6856fd4438ec7b618ad40be39c08e6ebb57fcbef739c45d36e831099f58e6e190cf3b7a535a1652e720953a6cb3e43c7cece4bc4605b149d5c88134bea18b3937e26f82be206e2380cf5169add89d76fc7ad29b405d0ef82ba6a34e6bbe13eaad38ce0ca3ba041fd73e5e823bd33775ada911bf2eed76fc9997f07527310f1057af463dc404e0382567e0f8b3e23baacf2a5cc916ec096268b6a7466d55e135b7cd1853e254f2d6d87062b1f3087c48a149c8cf7f231f83f7667ec1bef60b96eafc5f6d4a1d43c03802eb31e69c4010d3219e25b945df9f6c4df431056c27f7bde4b9bb306d0ef8996013fe35dff102da04f1718e7d75fbb6b52d9f0bb14eb5be69aeb1e2b5759d4b5b077e610f70261a26d1c2784ef8ccab7aad8fa4ce20e07ccc1ca5562b3072faac56f5b102ce26163f4d43c86de11a38879ffa4c5bca41f11e0d234f673e271be0736ee67a3f239ec3fef600b653e70381da17e49018a66719034fd531813890f67f09be88ddcc27537fe4aaf418ff0ed811f299012f326fcd4f4597006b1807d0599b9bf7c8adad78c61c757dc4efa8dd6bf443bf5ce355f1b639d887c74ff37a6960627d64ee0063c6de23f4730226d1474c852bf8c95beb0dc6f80b7ba57c735c73cf7be8f1fd88f53a4a85b945c75775be88e5865b6baa726d501e9e6a09e853bbc0eda7ce2996274dfd89f2a55fc23bbe279a3d83d9b8b8d233e8e1398bdc8a15f80034fe3437f4def8f7f61a31e0c875562d4e81dae77e027ab731e688e5fbc8bc33ae31931f4faf69893912b63af5efccbc3de3e1c43104fbd4ece35179e048c799f9cfbd21f26d3d7731ee68bbf7027b21a2368c9e38a715278fa7d5c2919b72ed416d02f774e81e104f0a6b0f739c846d5a46f79addd7f365941f9c8adaaed229a6dc7e85bd5432067dcda1eeabfd26390dda7f93bdf388fd6df406e4e0130df01cb76660ff445c9cedfc61cb6fd29e7ef25b3e3a8eb4752c7b22f8797f443c0ef65078aabf708ffdd2dffecd72fbb1d37f33fa07383794f4a910bbfe476378e5b7b23f8bcb2be31b53bfcd45f3453a50d7cc5dec933fb6e0e809bfe90c2d38cb491741ae2f6dae485fd8ce8dd8a931e76a9e8a18fcf8c599f6231b3b1e83c8b1e8c450e3db61cf269f636dadcb79896388f9dadf4bed3b7186febaccaecfa1fa77712f78cf63f0993f97706ccae4d4f4f36ead0462f66aed0a8dfbc8ddcd763f9bfe9be064943133c3bf859ff97e5fded341ff52bcb3d45c2cee728af7d1ef7ce8004673d2a11ce3edd59c49363a63fd09f5c3c3b2773d9fd1562f884eb50fcfe349aa0516a36b7f93975057aced9cea491fde9be72c7296033e55e956b5f41fc7e7158c2fafa30a1d08e81f7ae918f53bd35f6aac255683b99aaf20fecbfcb33cd9bb0f180efb937c974df1b5e4cf93f7a5f8e917da49be37e458522ec91fb5e596d5b756cdb563c44b19ee9d7963efa8f1b91ebf40bd359ab77ca3c49d603e748518fc2b793423a65982b65254d6ef56aa9e1be2948edab87af9b9cab144ecfc99b7700fcbbc93964be4588bf9376df212f97d458d46d855ec5bb97eadb4d923d0c28a1b9cdf80cd42ac833554fd4f65c3affa1e7e24667cc7ee0de420e673330ecbbbb52d523c97c87320721ed2377f65b93971b665d50270faca56feaa288f24b90d3dc24efca5741f3827a3ca116d71dd1551578bc572584baaae0773f670b9453e1f85f196b89f0bfa836f8f8433377e8b1da55b817673b943be6b6e5385bd590d10f7feddebe43a1863cfef5bb645cc87e4214dd0fffaafbf8bbf8d343c0b6950ffd7dfe5d87897eabff62e32df44eff221de45ce11fa0ec8b5600bbc5ad3361117b757efd9b98cb57bc1b0def3a44f81315a9ad76bbd527ca8b20fc1eebd06ca26e5156a285953a3d685d824d04e276c35d4dd163cbe5c451347e53cfc075be15242ffae28c11f5aa04fb1ac0ad0327000cbbfe0b688ed7bac7b181c56a1ce9fe3606d6274df9e5f113d5a05686d98b534c249559392e792425d6baf71762f31c6e9116e1bf23061dc65bc4777c0d79893dfabea5988f5877a88d3d633851cf5e91acfe9bc3e8bc7a2ffbb377bdedf60ec726d1cb07fe316fb511a1833bbf86d62d8daf866799f03e4e2593ebca59701fb260e19e5731dc6b100f3d1595def9be864c8eb4bd78af1559a65742def9d90eba6be56e56f553ee397e6af2dc342cfd12784075163f20139cd2961f1b1ceebdbe7117222627c86755e7b8958a6bc1bdc99bd06e5016ac80f55dc524346fbd1860361e774d1cadbeb0d80a782dd53e98acfa262e76dcdf78d3e72ccaf17bbc6fba613ec39cfc5f97cf57dbfb597669a3e83c459668d7a29faf6724d8abd676836c89c7568f095bcc07e637fe37fb6bee57a14df24d6dcb59af327fd3ed20f278eff6bfd3d12672cb0b0da3b538d05f74ed4653c3d4a5b37676bbe8ffbda4bbfdcd7f2fc1271b1d00dd46c3ff9c342f753e6eae9ecebe1b5a9c019b7d7ccd32d5dbb816ba3537dadb49142e742bb96d910f67743aaff8bfbc85eb97cf874b59e2efe4ef56aa3067adacf8c31fe4800bf38a07932bf670a18059b7210ab91b9368b0df489605e116201f89bf8a776ceae503f357ec7b5c372b1d390f42820b72bb93d641eb9005fdce1b610621686b354f60ecf668cf988ab655905c0b1f80abac3a45f19633ecda3f9b9105e708d3dcf0c67f1ad7dafe38459ecb53df03350e2f9a07f93f5e8e5f6117a26de314f9ac657e22cd9eb3037f937459e45eb9d7dc19c4652fb3e8c8b41e455d693af6d8758a3d612ed544febcb5579a2f9f57b7fde0fe8617c8fef7c435852c837c7afe19d511749f77fb5d506682d4667ca45f71de4cedf04d4af0eba6709627c3f8436f8275c24525f1c6bdd275c1ba1fb7d0c93c9a13637ea24a10ff553b2c5d27e49de8bd1ed90ad15b98fc7b89f3aa09987e32ded975c7b3bd0cc2b604fb035d20b1bcf0d7f9ea0ef326f796e36f6317e4ce6c673c37bbcd673cce7326c4822f43665ad7fb3267f18f08f5fd51b595c3f6fe614709f9867b27c762b3f8bbeb764ee77a3e586b1f611109626f4072a4f6e21ef9981d5cc70fd0add76c1af590cfc4163fd3993360d14e35bc4baaa922fde9ff510c7ba9df2c7ad75b4f9718776497c93ac91f8e03fe8f557e25033791153ec2dafeaef927d3fc509ce4af63bdb775d0be65de6f1653d6005b994745b8f5baf8e0757d1e480b96a117788fc46d7b3c05eef91b32d8bba10374b3dd544eb0369efaf219d3fe263639c69c4d3589c903b10ee9b6c1de00b663c276f3e68a320ffcc79a8d509594c25b5aa8c1a22c68ca2afa1cbfa391afc0d1ef00881ef5f61cf995344fafdbc1deee32a67983931df4ed9813cd8746ee81c38258e31690532fe9934eeb5fc4e9c775aadb13ce457eae9d36117eee7413d37f9a44fc61fef8d18686be6bd0d1c933e8ed9ae3fd2fb408ea740afdb9c8b48d74f5c0d4013bb7c13dacfe27d5f90bbda1b2c064aeff838839824746f709f27c827f24abc2498b3a822f4fdbbcaf70f907b611a16c4210f397981132865ee5fd42e84d6ed95334aef9df136f5bb027efce707717d771bf14a7bec50fa5a4f82d307ce09f59ed05f5cec688f2adb18ceecd905f1519747ec652ea78df3e93acf89aa7783dd18768339f581897e1cd63ba5d77ac136445dd081cea2fbce9238938fc11dea5076a026583cdf223ebafe5bc0681788f55820afe5837d06bffec603ee6127004e95b725d89bf4e582f717ebcbe09b498a0788a9ea6b10174e36e75cdbc85ce4c4ddbb07b48db35e803d3c858a25c4dafd98e2dea5f75dd81de2e8dba1ddbe596da356fe1ce58f1e1837e00df540697371f2105faa7fbf3cf36f2f885db83b36d719f7a109ff7c020c9f96b769e9a1a0f51169fdf91a5eb142eee2e35cf9330bbb44edf63962dcce43e2487dc19e8e3c5cbba471bb7ed5ed08e7913a027f770c3926e23246ff1df99dfd67e036fa7cee011388dc745bc028af1b71eb34014c425c917f3f7b6bee311633a41efe9ebbc8b9c3b99844ec4c9c43f1d9df7ab21e176edf1ab6c5a1fbb139af1eb02ed38fd4d89d208ff5bdf3ddd0d30ddd6795ababe618afbd68753c6ff4f4f9df46c841ec02fffb1cff5b9c4bd694300ed2efb9bb457f20bafb46cc60f41514a90bb6c3667c9ad6a79cc5ec1c2e6a9f4ee3f205ac396a8d815f782ab057ac4fbd5e2d3cfff906702e94db69e5834e5deca5d2de43f0f0497fb2e53d2ef81e7617f9d1fd41e962be348a348d15e95b4a2ced033edb7bc33e4bfbf64e9d8d3dca4f4d281fe6048093bc7874ce4b4d6981a154b6f0996a11925fbedf55fbdb590d173bd6ab2dd7e5b0c173d35c97c9fa37d7999f899c97dc030a73f68873d09a0357d725902b2bfb8d7c6305bc80ac165af53f48efce6d7086a1ad641c2adef32df015d9c8052af357e35934ac02c9c3f0166c21bfb4263ee27afe64adf4bd009e187b2f63b47068c9711d9efc68d1a53e02716e05b368d8f115b7a9bf09468fa362206ccc40f126c612439b5b933ee21af0cc5cb3bc67d972a66ccf7096650cab16c96fbef8d6d3613aaccfd3c8811c01d3ac903130e5bcbaf5fe177d4ec9af13fa7a73d2410c5af7c319f9f6b1672b8dead8a7a13300f5a52b7ff78afb76d067b181d7e4dd466c13e3a64dd87edb28bd84d8fb208ed22df6f7d0dad662b41b3adfb5f7421d827cd3fe5ea489003d1aed7f875ce0ceecd46ae350bb2037e2d7f6ef9c8a75296c43f5a0fb2c47e049e0fe01f69526bf9cf6e7ffc95cca731f79d543a13b03bee6cb6af8e5b883c64707ee89b80d8cdd749f107302d27eb6f480b2beabf6b9fc933526f3b41be4fd17ba5ba80f499cb17bf45593f508f3f59627758bd3e28e3408f237ddd75231d6ae1818f3ae747618179efdeb4dc56f76a1f015de380ea6833e8ecb17b8e7269794f437a1f7b74bdaf74cb75de3a8e27c4b0d5d32c53bd5cef3afc52b09c6d422b7c0b44d55bfb8a7d50d910391b8e5375acc06392ec80b45332d662a5cfd7ef0bdc45db2c0f36401187e8ca1f6d06fb3877e6bcc91958a9b28b97d87f39a385cc4bae37124f260e2750a3bb3b47bc84997614ea748d9596ac49dd417c7f4eebb0c0f27cf70c76df28ac1d857d4a747b598987aca98be3d6ae3236feaa1d3e44602feb0f30c74adc57d9c02ecbe03b501ca17c5ef2bc3efe01c5b100f2c073e6095faea2c3a3e81e6cf28bafa6ee23afa7bc96d2b39e80ed8af2ff3622f90e787fcee43455873a1c705d8a84d7c077a1822c79ec68786de82fa96d9bc5927e6b66506b930a60711729e6f690b1ae3acb8311bfbafe1af611cec72ae30ddd6ee82a1b6dfabc2d2f95b796fa70bb6e26db5453c3ce3222d9c48d3f995f973f465e37b7daed2620edfa4b05e728cdda1f04394c6c23886f3238cef745cccd56f65ef0f5c0c05e2fcb9060a8cf78a7493b1e6c8f4a7255e9bce7993f758ec2f6917cb219ed782970a73d1b28e1435f7df4ce77833387d1a3de557e78fe76b7d07f41be277e4a8ba700eaddb23cbe3caef016c4c4ab8ed271da7dda79ab6c15f9412260a6244c39670cc66076d9f05fa21c79719f013b9a007e59f743b63723197a196e3ad10bf0dbeb415703c49f2d291dca8eed927df48c53bdafe61b6d53c5be55e533641c6943bd22034cf40eaef21fd4acffda9ce8df2a8f751a833d421fe2676ee12bf7ad59fc199b48c4c5cbfe453307aeae4fe438ef3c3295238814cf4ab68b6498ec7b8d0bf89d5e2c558b175a3d6531f7d1f8cc55f90532c4f0be4529063e4bfe16fcc4f503645624ab57cc511fb09f3c8d37c93e5a824cd8c169bcbeca58eb7a3773afb91cec909ebbeb06fffe4dd3a3969c1ab71c47aa7fd64e096350e49e5f331febf81365ef6f915fc78a63574ceb74f90db91b5cfdd04351fd96f7c5fbe4f8733ed1d257796d267044d82b4be0fe72df979823a91c2d69d3dd4475b5f501f0dafbbb5eadf955de75cf7d5ca1c23e4d68adf728cf1ff60bf54a58fbda4a45751bf13e72c557b6b7d0a3837b4ec3502de5a57e5528ec1c5e08f9ef33e7abfab741a94d66891e973b5ed98ef296beff44df0f72a6e79018eb7d5688dfb4e8f7b4a3cabd01f737c555febecdb743c96d12fe001b8ff8487f834877d0c7120e68962e00de279c337c0c56780b97504be5fd6ed47a01d1a19b18cb8d7c7dc3cf30cdc08be73b8786de9d5046ece07f37bb2e7a3ceabc8e371f245d4da70ef551f8fd4ac89fd3eea4d893805fab4fdde12fdad356a261b71a88cc5c7aededf91f47a8df3ddc8cdb77debb49e6ffe2ecaaec3fe5adac0dfbd78a11e8c126c94d1c3a9739b627c453976f2ede6188bc9bc5af913b48b841e737e21ad8d690418b71f3dd2d12a07f0de724fc6136ded536e007c076b0e3e3f6a06897a95ea8ffa097c3c33f03923d0f352b91d8ff42954ff90f201b743a83b2a9be375900737696ad6ac866a2ead21f4fce07bf8494f6125726b0958ff2aaee33dd0ae10efe48f7a80f7acc49a11fb7d82fbc2b33bc8632cc767b233f2aaa66f7506ed0b6fd047dd040ff22a95b0c7c4231ffb2fde56f74f8d3d86f763f55b1bb809ae8e0bcb434dd3bd1e13210ee316e6be9b5ba8bfa47c4d66e7e6b7549bb63cf0fb2ad431e27188bd3e0786af8bd7248515fc86ba1cf0af762f5ff0afaabe8049b3369906c3861fdfcc99506caed66dd1d17d26c6130c73c9f89a03e407c8b7a8090b7113e9ca6ce16c3c5d445d792beab6fa3998f6796fb7bc6708b12ef443612fd58930dde277cc19b3717aabbf4dd671fda61e78ba9e02b606f7276124de1a3c6fd54461650b2704fce6b00bb86b55cf282bd07f50d79d2417b2db09777d88334fe8bf4b9fe335d06b5602bfc063c77cec8e24472a6042207f177fc418f30b9b70417e73c843095d9cc61edee179e8eca93f53e8b44e188f867f6ad97f72fdd0751f2dd75dbe71ddb9be4ec57772ed0d2643cd2f65364bda62ddee11f621a2310b4baa096939bf43a5f1a289deb17505fed4b2f61db0ae74861e8e579d73626bad48675ee46ab290b02cd27ee8bf23ee05ec3be1b88cf8e578218c8cf483618ff8c41b005812d28b72fc91f61bd6cdfb80c5bd875a470258c2adc18905dcf215c568807d5a521f4985b592cd84fa97b633c6ffce72a9c9af33f816f3bb16bea610fd277b7ed134d8de1bef893a5a42a3e5ea3b139e20de7cf6fefe1c6ac091f568e9f5616ddc142765e37dd222d37dabde1370a86879a5d6bf39bee5c01b923e11bea29a607f6bcbf8c998c2fd05f844ecc74b7eb78f1d5b33e7e8cadfb0b5f3c1e21a6997213fad6c90b773474a6bae52f986c1348dd12e094e9ef9b113fc46cc8eca45dcd6ffa6e28afaf95bbb889e0e4f96db7f52f562df31ee931436e134446cf2526cd5358aef354b17233d47bbb7f5e7946fc556ff86e578a1db51fbd6c23551c77872be2ec510cf7b31eed370d2a6a5c5f26505e293e79703f61910462320fdc9e69ad662dde505317ec415b3439d535a5fe962f3c5f598bb5a8de17ab6f6c2e843c7335a90bfe79caf36e43e1f0793bb5934bccc76450a3113693c89b854f62f8d8391c679a173a8d81ee445410f48e39ed82257dc6a84eb91fb939a6d90fbc4c4c2491f45b79de2de888d40ccbe6edb719ffc99bdcabb39e5ee507702e373e1db044a632aded7671ed400a629e6352ec4190cf5101fb8cb045e5af540105e2fad7d02d0d428315741fb3eb69f50a79ceb812b3d67ab65ee76016216a5fff9aba2da28f7e73f59eb73d024f21bdf06eb86d6e0c2c8ff2faae677c099b778c11ab1f1acd6f5adafe38f1c6aba73f4411de05d7a40adb0a893834e62b8b602bd47eed5b3749fc638bb1547bc81d192f8a101dfbf8a5f8763b4644dca46cd57f11dd28f67674408fe5161e5883dba8d54bee425d67c02719f96bfb32ea85d934617e853a2fe2fb61e86bfb49c64962e1a5a3132677cc01aba57af4b958fadbf41e6e87fe0735ac77a7e34c7fa80da984daccecdfc8b3d40e75a6c7ba83910e138caf35fe22d1163c0be7b519f473ceeb7bb9581f768e5c4053f1b73da784e4717c4b4593fb47a19fa31d7fef60b3f4df77958cd8c698a7e6a13346ecedcce86cdf1107d08ea8c10f39d4688f560e7a60dbd1046ad5dcebbb3c698bd5e9332e7d03fb79cbfa799193b33deb9c83c4721566cf56125c76e9b0f08dcc1b3c6f3e37d61c425f9c01f5ec309a07631f964edf858d16326638aace55d5b7a9c91279cf42e5a7df00eae71650fb30d7e9f83d83cbbdb6bf0e4519d1d78fa28d706fd07a987d76963b48d74ee8b4130f8ef8f11f0b6c6f33fff5eb18f5bcfc14cec7fcd8791b905c2591ab5228dab5aef519ad319995b906314678beec7cc696edbfe8ef931ad7b7489be38e4af6768b3da62cc762cb17e4eb56089e53a30cea9462c43e754cbfeba9e4f93bd0af7d8b341b1757ca8edb4f4f77ebc35d763f446678d560f7e376bcb38b6f8771a37cf17312b723b741773cdcf73e04cf2a20360c6cf140b4d1a7914cc4db29c67fefb96f166ca7a89ccd714e07b5e6adb992beec2d5e87604797b5e277fb04153be38602f4c18f0f7b9595aa84dcf35a8089f82718ab0d182c3bd786e7f5e46bcf637989718104f11fa20a1fbd19e9b5138237ce61acf05cf6e7f26c4b2d4dfe4423cd8b9f66d320e3f03cfe64766dd63deca1f632d43f484f35a4be6f431d6547ef199fc01a38e6d0b5f4661f374bea4c7caa5dc0270e7b3e70497bf157fe85c4ad6a1958745cb59870bc418785bbf3f0b2783e5f353dbfb7716e8870e69df39780e1c73e24a961a6c3a07d617bd7d31d9998473ffcbeff4499bf925507d0c0bc0faa601f6bead62d045decfdac66419eb3aea331dff41bc9e827b43fa28b58d95f5d902b8c84e09c4d3cfc89dfbdba8a3cbe791ee359c0915f9a6c10831923a8f20f5aa256bc066efe099598a9af43df259113f392948f704cf84691d17a9784eed1d1513899cca3be4809bf37ad59e1e4c7b4aef0a1ac37dfff35c49e337c00634717d73d3a61a318cb8fe96b8a53bc8093169c3a6b5dce73ce75a740607abb75bb4d786926e0ff5cb04465dda17e91b17f0fdef53a83f8422cfac74e89b3eade72c868d6baed590aad8366211f49f543da1c37adb25f62cc2334fe5db167abe2d5cdbf82c69737a66beeda1be46f9442aaf679b79bd107100e21e4e88bf97229f3dc53c89d0b7fa628d4a5e74eacba76b1eeaf84ef7cf640e5ff063717e92e8b28a66466dc2abcc389e3446650d0dcf9e7189fcad3af7b5d4fc443c6d5af6907355ab0d2afcc80eb5f8055f15e702d3eaeece9ab478c78b3bcd07c067b3fb27454c767c22b4148b0ef8df11e29470fe9dc5e9b3f337b77b1037bf119f6bffb3f3b75a6e91031bf00537c8a9d276fe3afe3bc660975b176bb6779ff80543c08bdfbecd28bf6c239e89b45215578a817184be94cf6dd2bef6d1c41e4e5ed097cd6a5f56ea7dbee75b38137ab1a63b6097d847a2f6e040cb4d5b9e96eb5cee0a230f5d3a70fd6a177fe9272b5f14f5d244bcfaa9cd402d15c0748d356ccfe5c7f5fc463879849ca1378458e5c7d9c03e0a9e161543d4be9be4c7bb409e657b461d99868dc67782ffdd634f0570ee620eebd40dee74dc55708d5f52da0cd307a1bc05e26521f7c8e255cbe06a4ac1ae706d4b8185d17caceb98152d3e24ec30eaf96e31569dcf39861bcf2ff0dbbb42c395e3cf183ee48b7f57e3a0f5967c19cff8db83763dc304f5723cabb4fc9cb368cc494c3847e29cf74d5c6ba8ebc4883e6ec5273603fe33b34e55d847976169c437149b3ee1b5a44ed11bd67e0183933e9d4cec93d6770c7dd4f3e38356c77326a08d749edf697535ec35293a6de3f203716288c1469d05177bbae73a7e4068944a5bdfc173097856202fed0fbfd16fabcd89d4e43374b7dbfd30c3be2d770bd7380fb8dd788531698b6196d1fdf96fad2b35179ee5a146b7187391af10638bebf5c9887b00fb656a0268fb5bf2ec4ade06139707f94bebe57add2ae9dce525f6b8e8755fa77823beafa38e83abca046a75b15e37ba00cfbe17cdaaa53e1e1fc827e422878fd5b0451bac8511a7b4e071d5b8cbde757e03f16fbda9393ee94b77d6e0632a7b05e41da97628b1cb83e03be72dff4de2f36cec35c3796df7256ecfb1aa03aed0be2a1fca5e3bc8d5c4311dbbd2c27ca0be662fe863624f44dec0eb4e47d823fdbe22ce34e819bca0df2e6bd71cc3f6ee438f45e37e9297fbf3fb9536c47380c969dbef9863add6ef70464e1378c6a1bbdcce208fd0d1392de31bec05257b8d182cfaeeade08c9267e57ea8e142d396f70efb773a77a065fa0c0cfb2fde99f507966f4bc387cb37c1b0916b11fd20122bece3180eb1d747d4fb559ea28e675ae2d9d7da77a27b49fd9515f81fc9d9fe5e4dc8acfbb4bc17c4a0948baddf93f500c50d2ef03cc47df4e2539d5fe6599e8bbb6b582989cba43859d347c37b1a316de469fd1fab4130346b7d465ea98905079d3f27c239c876fba15653768251e3bed21f1869f897f0c9317a6fde33f43f1b79ed8f227ad27bcbc631d440cfe66fc077e4590616c15e0346a7c275813db91cdb24fa95f93987bf43ac1918393aee5b881c9dcc973e5ec108d1f3edf51ef46fa04687f93f196b380b1d3f08fc62feb5f37459028ec8ef601d4268a5dc0a9f13be81e3b6eb7b16d1049f558cfb5853005bc1ce58cb57bc9b9ee098419f2d16b658b7bf7d1da7f6431babe5f017c415f7fab9ba9e434c7d0ddf943bb806ba9833234d277b69e9f8a0299df90a77e91bb8a44e97fa2f640eadb6153c4fb274d650ff06eea5ae814bdab31e3cd57fd91fe8cfa1f31c9ee30fefb5e7e4e97aa4f9adcec47c8eb063ca66485e8ef15aff9e34ee36f05acec2bc8fb3a23358dc67d5b84fd90df4f7bd31c7c5abaf31f0635e6adc2714dfb096cf166bb962f71198fda28ac926024f53728b5c10c0cde24757b11a642bd217b4532b6117c5ef27da7b02bb2671e31bb4c53d58db61daa7fd93c25a3b9cf17c0e7f5a70ae151bffaef1dea95bbfb7e26a00ed915f1d1df3ddcec59c3d9703e8d5afcf185527a23ecf31e2a9ab7aedc871ead1d928742ce539447ba3400d5f591f94dc675e0498d5db0bf64f6f1ab1dd473154f19af3f4817969910390f191c1732ac6d57750a3a9ed3e06bf981cdf8cea33d267a777a90ad4027e215c98d0ec10b6a5873a49e8fb2f3eb05fd28df8fb499b96ac476d350565bb305eabe3341e6715c41f2bc72e86e76d11d7b70a31a7ffe6b15a146032591e176242e983a33629f3d501e3b8859c5407def19df15c5f587fcd10b1f50c37ecd9a899d345dd57d6ab813c3349a7229f4dccef2be66dda6a4ef3e35ee70e284eb1decb51315e44f19d926b98f1003afd58c384519fa1caa3a3560e712c269d1ef845d91835c98fac5f5daeaf8ef20fabc533e2542ce07a3f223e710af95b7b1d732c83f46323e438ca00c797c616f0577ba1ced5a78dfb05f85dd5b75605f64215ce77f7f201e2ca9dc1977881b924eeb46d956f819367ef37d613f2e0aaf54b63cdfb2e9ccc9833c417e1fa8fdf7deb5e698d7b9457adfd4bc0dbb6d66b6f6f6a9f5dc507678803a629e2acba887b497e59c0dde68f0bb39e20edbfc00b9bf6bfcd7e1f6dcfba6fdc77190683365ceb747e8b3e92f09fc3fb0fc23b327f2ce9bd60bdf20b6cabff8c18c10cd70bf56c1adc00bfac60fe377c4da899802f582d7ec3f7477066396ef3ac0d03f4d35af23fbde8efe12794ff8dfeaf982379c67e71463b2e9ed11ec536273aa39f2a860f8635d7add71cd7b8d1fb8c621b7b13d1873cfcf19a79708a11d4f9f9587961e0fedb6b46d82f519b5827d4bf2d315118fb5679a7652c6fdafc15339e590e7cd7583f1cb77d355ffcb7ded33ebf1a383d278f9a7b7d51fbdaa0b3f95b9bc71ed98e80d536a53608fe661789a6eda46a72d3d1bab9eed318f3fdacf6d01effdb471bfcd1621337f31615f5e12d13d47a67feacf0a7555fa85607907b1ad74f2366927db55a7c38bc3c5a7abc017e41467acbe5a7b6e122be47ea660e169a1f6cfad1de20d0cf22aa5d1c581cd8ac4510c6a9816fd16dc341f475c81ef73dad13659bb57182b5d8da6b5092267813b78fb97accfb424e86f45ea47dd81eb4ffd634f1847d224d3ca8a331fcbae2672ff46b2ec257e2d7305f49d58465ce073996a6b8f644cca27ac4d1b7465d03c9192fd723e24d7688c926feeeb074208f988d63ceffa4ae41be8677b6ee94af8edfc3eee75770bf0278495097b303b5f73df67781f668d2416d69ca93eea177c65a107f6d53175ac6d1d2f68fe36b5a860aa30a5c73e49f2f8027bbf249c360db6d8ef31de256719e389f05f91b0bd411f452ccdf516fbfbddf43df8a3c7724be037106e116f591e5d9237b6a304e405bc27ce9a437fdcc5fca58be42c75fc89e82c27a6a7cef953398ffd67a1e1669316af31d96837f7e1ea29fd3cc45299bcb7517657f82b1c79816a7c48130ee31e90f0d16c6dede768d7baa7d896bd6c2bd1efa2dfea7e9db88f3a987f1ade3e25a5c862d7b2ad9239e8334dbe89a4cf03f49ad4ac2f8aeb19603dc091e6a7ac73b1f6be7bf2ae438dcc4cddc47b27e219c0c5e8f5c35f27b64dd9330c2d8b7cc7894b6e8734c31d62e709f305e2b3a6fe4b38dd89f6b7d130f15e3c9b05137adf2701fd13edbb2f7dc32fd9cb2b98f258e55da08a635e403074d3534e695eb3ecc983f1a37b57b98467186fc5d31cd5fd21b18f908c40664965977e67b670d1af5bbd6f3d559408f1af694fbd62fe0ab3d91fe690cbdeeefb85692ee1bf6f377b62ae7483e839f947a8f32bb1ff9e4f1c78af23ab21f7cb3d06b10ac7ec6ec23f9af6c2db1fcff27b184b071a61d93df61c412f2f7b658223efb5bccc1989c6a7a9e9be34dec0eda324fe8846bfce8f2dc35b497281e8b7ab52d97fbb0445f81ed0596bb501c90d8e7803c330657045b534ea30fdcccb7e81c16fc5ac6019739f150f9a04eb6557b877832f9d86c8d1ce0b1fe7b993358936f59b99ff005c61af7dd3285674b7ee3c6bbb175d7d05e55d8f907ec1b32e2846afd8239dae7f540dbdf1162964bf069484fe2f4366bc695bd66de8cb01bd2de98eb9e9d133a46abf559d257e0dc4cb48e97cf187f30bebfe2dcb23f7784335375fecdf5be28aaf3479fecdd2dfb0661d319af526ce6e1554d7b8df9c96cf89d9a1f713c3fd8e4eba8fab911cbcb7380e6e3f812e8bc516a7fb4da818ea89368eb486aa5900f05ebc8c55ecdd9dcc8f9007fa68d78d50bef95425faaf6db5af251cb4dfcafe716a88e76a8dab00c8d5c41fceb5f88f31a3550c439c8f5f4ab259718570b3d46ef24d76af4f6d1a1187df1e7317a38390746bfa38a4d4ed8b33526ccb4d28ec678a4c5e6cbf8727800ae37876a61321f8ae76d3a7999e975085d4b9c6c0ff5c3b1f76ab53da227e3ba7f8a3c9accb7a26f7031ef0df95fea5914bcd8aabe02cf127cac120fb445dbab6a1b06eec0419ce06989e715eacf9da81e417bc313396039b62d39ca8b3fbcc64150488db47f79ff14023b2fdec7f123cd5791bdd79b165fe362e4799f4fd5dfcaf356ebb3d90feb99f987a1f70f731a07c6dd27eb2bc82117ffbc62c3250691f7ada0cfad5f23fb66465887fb003d42ece90f27803f92f7bbeae397d4f746f1d899fcc3a737f06d249637d6f99c71dd9597967bbfe7c4894ee720ec03162367cff82d36ce4562c6fe1463b7ace163f209ce721eaeb1b7c8b33b3ae6d0be1a07bcf9c6bac8dd485f27a4ad2ded9bbdd6d7856d39464cfd328d8cb565cff4981a7ba98269d3fe041807528f616b0ee44076ccc377586e90839e34a2b7579e27deff053597bcad0539990870e9a86b64e676581d4f7251480e12d4260863c4bcf816d6627ba4874a9ce62cc7e535c623f40fb0df3dc747fc4d61a18608722e66238c7b4fa06bc3fa76c93f4a4e1fa81399ec312785e335029cc1e183343d5dd000ea618c92921617d4065bf6884ddc1f2df9b1e46ca38ef6f3d367e7fc59e042245eadd9c79bfcea5cebe395bdd939d86b71be7abf6ff57e0dc01e916ffc55bdea58fb78b2ffeb97dd8cfdcbff6a8d659962ddc9c9880349d540389e04ce8a76ec55964ebec4645fc7c7834de83deaff4df90dc09ff8469e8de9c82a5fcc778cf30675d91654f36fcd5df9a99e0790b6986a786c6dbeb2780af31353c1b72fb5a772d246421e54f6fc179673856fae5a9e43789b70415ad09463efb2f359ce03f64ef5c3aff3fd32ae62ba4a8346de3b5d77085b0079f102f59929575edc403ede276d4b0b6b09949f62187323a72ed744137bc5f2876d67643ef6116f8dd8597c57d29d60e3ff1169f6e7f650a0ae696bae9e7e67cf2db0572fead5b6faba0d8a4eb50d5239161eef7529deeba00f2f7abe3ec9c3e7f35be412d7e2b9df47e4f68c11072aef93110efc5a3c40fca8a44ffb4e790df2af585c0d6b8fe1f5010776dfc0c5b1ebdaf47fe959ac4e8f5c60a47d8cbe34eb4f69adf9fabb460d41695923be03c7a98e37f8d93c257e49913f33c7c0cc1f5cc70fc467cfc29e5079863c174d7c5fc2353f598c58f937a835f80f6bb4850db6c4dfcdd477b3faf5b1b68952ffaa4b1a22bf8f70a65789c2f3d099e1767d53930ab1268d77f893f3c98eaff669176caeadfa3d45aff47243f9f107d8ab95bf506b8bcedcb0f8165e20eb60df35dfafa85789ef45d804963b9eb5ad836b7d052fa8ff2bf93d243ec599b4e4a4dbeedbe4409236d3c2588ee524081396f65b712b32367bc178d3e0646ee47356f55a18bbf59c9f67bbbd8339f13aae86b5b0893a2def7da96d22f281f2770fb7b69ec7957d29f5f8ad04277c69f433746dd26ce15a0c518b5693b427735db7e5bca4585aae71aa2511bf90ddb183df52ef16e3bcaac07c13e433167746ae3be25c15f17165e0e0d41ac57cf67caef54d739f479e4be2fb599fb456af947ebc115bed96a863fc54cf85ca15c9faabf0fb28e7cd788ab6666febcb0ccf15865b079b99c0df95e0d7f198f502f7469c7ed241df88d523ecda0e297f5d610a26239d4b50d971383bb5fc97f4a117103b44c869fede9603acd7a03a1b52e4c3af7df0add63725d7a2d11728c7b33ff8a73e2ce97f1455a873e5b3b547e7687177749bf8040bfd5ed30f35f9f8fd1dfa6215d48fa406965c6f01d665dd16ac47dc69da8d060e9efb1716610ea8d64d351df1df36e946b2ba0be1d6c906ce6f91fb6a853c3d30e631be7b6ea1eef93ddb13326f88be505b1e73ff01fb99eab5f10bc6b349e1e89a3c66af37e56618e6ef628c8f8ae9188eb0bdd67bc4181775eb7b03acd3b7e0267cecb7d073fd9ec053883d6bb17348eca329618d45ed98efbd6200f5fc88f7e0d9bc1741c3816d1643ad9663e0aeb98e97c2b9a01688c2311c28e6957ee1b22def952e468f837e7dbec0ba1efb7609f914e0bb6539df8335fb7daeea77ceadfb33eaf1b6f5a6b1de8925e80f5eb8adb6300731837304b185c7a3d1b3f46eda7b962f7ccd49474cef6162b6d1dbc543435344699e4e50031ab1234967a29d0db8bf0dfed4aa9ca9b5d941df08b8455317751cb16701b06cc2b64b5efdb67cfa325cdcb5f27e09ff4cf7b999ef79c17ebdf4057d8b82fc4c1be3a46ac2309ad297242dfbed056a05d27f377cecf9b18195549a6f4e33f6de6ae3d78e1130f1bdecbaf6ba5faffe0e8e5bf0c3f8ff0fdc82cc0b7e1bb710bd41afbc1e9bb8ff52fdf007c5346df89054f4498b35e357f1f01aa6c5ccbbfd09b69df27aadf183c41b0b2cb2c01b5fc7bccb776dd6fa501bd73738e387e6778cafc74da5738df31af1b7ecfc65b522d66fccf1779ceb8ed58c3e8f33bb182f5def49657968e283988eb096d38e07c49efee82d235d0b6e4b9b7db8ff024eb76dec181e967cb0465de67a5db1700af459259edeeb5ced016f9d3385616bcd418a3569da04d0166fe21ac2610be6ba1d77b94ad7a3363dc56257343189fadcb4f6425ee9ad56b5f4963ec750f07a6bbc36d22efac8d98c7d01611bb6a6bc213f65817181efe0fb1f1f2cc54358db1aa8195e8e4a637568b56128164ed99a4b9aa6ade3c27df82bbe318f0daf9c2311e762b93e8e5fe34dbee2519d21bf7f969cc10eee7de293bc693b13da79ff7e7c2046197cbff0ded2fb21bc9ed9734b390a86474be30b7256548b21cf39299e9b565c9c5603851cc4efa3ff77ec6ae37c4ab7542f0883ef9d45696c6813e139d99d6dbcfaffabbf3d0abd3b566312353e15f3aa9eb6bda17bd336066e87f0abeb1bec2974d0efec613c071a64ec5b346c11f3d7d55ceada9e329f58821612eaa1034744fa8bfc91187ccf6d6f4698261e2b6eb4be46a8dbdc35e26fbdf6c670bb182ba4650cfd3d538a5164fc6ce9ba69f00e2bd2dbc1bf53eb7fa0f5375ee9eb85b80ce3cba4eb1898431efb2b1f6d6dc44384b9e6faab5a9e25c41e6687343e5abf17b097d2071ae1f95ac72dd29f4af6a3367f49f6d38abffdc8221d5bba429e85e20cf635dfc4cd7e55bb877a67feaeaf702daef508bd12ce22863dcb7b92d4f9d6653dbe0c7363f087d01c36fdce7042796cc0bc275b07cfe8d171a4631289833a730aaaed0c41d32f60fa9bea1db7f7e67bc8f170ef352ec619f4c2a2064180fa1cc01988b82eae752defc16b21a708cec77129e3df67d20186faf0d36fedde67e44f72668437a91686a63df077c75dc6e9871c6605691db3bef4752b07d60a71fe919d513f01cb2faa5ee33b1d3bacedeb10eb88e750e32237b806241e48e2169eb1df9d7d43ff045c1cbee09e647eb7dd653894e63b608e25752f57f90e84aff1c53b249d03f213fdbe3562be09e9d0e158153be4981a15d89b8dbcd7b2f6a1b89e9a1a0aac1e72f0c85fbf414e06d4568b6ca1652ee22c17cf1256f7517d96c5b695bf986a0bc4b9c3cee5bc1e2bce85e4bc74bec11fd98237a7dc28d330249ec9f4e70772256e011729381cb55ce483e519d8f6c3c91b82d6ddf014346aa016f1486af112e9cc66d4270f3cc3c87db150d73ee9f9ce7e2387c2f3f24acfd26fd535e19aeef76743ebbd87b52dc7e089423e62389bc04652bed5df4d80d78a78c81adae8fb17d0fe143c57ca46426e6b9a9caf70c04aaeae15e94f20ef792138ea8b3b6f80f10071ba45edfcb0729d1d6fb0ee43dabd4e7ddfc2ba3f617c83d890f27c85d35671b7135719d6a520afb7f9497ef5a6a4de39e299fafbef37ff81f536df59b7e6cf1ae3979c1077efeff6708d83dcaa72af8b73e2a1c298728cfd4b57c6153497fd31e60027d0df976fdbaf11ef590567c639097ef0ebb56be4daa36be09c5c8a5a4f4bfe90e686f7ab289ce011def52fc457b63ef796c62f742bf08b41df27839a513c44dd84bcf93eea2c96b974d42b88c1df9d5c1a6b8cf9d9edfcc4939d877649ac336e1fe97cbac217bc103a0cf5792b7c9fce6aabf32079e33d8ccf61153d7d8b671cf9ae92732ff88a4b3b7ad2e33d865353b6ac6bd832e6cf6b9a1a648b467b5a7fb007772fce171ab78c9793c5d7ad5cfec4efbbb07bcdb5951c718f43eedfdf611f0561b3a5268dea9bdac259dfa5de5d0df72ee326e86baa843eb28cbf90ab4a68a7485b8a7dcd54db63712ee56fa4be81f18efe01f17cc8cf929f2837ec36bf39a4dc41eebe34de714973d279d2f19b1f09e42912c413f60a58174ed1416c13d91561db558c7802fbb7acdf4be64721667a045e0ce9830fafaf81c8e471167bbe43ba11d619fa0bbc10f97d7a19bec702b121c5e5087ceeced282b372d181d801e237c0f4005ffcf575ceeac65c3700303b8c4f8bad991dce57724f756cf54c9f749b4f89fae6dcee819db810c6916c1d6270714d146f2bf8fee464b31a3960ab7673ec935bb7ec13c435dc44a09dee94b0063a05d55a718d16f8fb17ef883a65c56eb98d1aef38457ef335c43f0ed5c33bef30d7c5783df8a4b6fd1ffd9682e162615f2f708ef83dfb19e4b063e4318b9b3d9af48e3dc06a5fbf1ff0eeabb14bef3b2dfd381dc67180b6ec93ef96f5c4ce4fc8b37bea1d2d0f75f17bf0ecfd2a9a29fe8d9fa8fbf7509fe5322eed625e2d0c8edf7d3769e3840d3c53edefefae718929a3dfd7a8095d2425d4d23be477e52db6986c3b6af6d9c71eda3ce241613a8f45af993b69e43e719d7fb1f765aece023dbfc97b4b4eb079feb0fbd13bd23afdca96d0da66dfc5be9bbda395a10d9dccc0fe33deb5df90175e62de32a8e35fc523d3877859f86fc2b7b1f7f88d79f4a3f16e3ed516d0367acf1df7b375837dcfa8d5c3ec4e18537f1b9c8d8e4ff321b007ca8f24cd62eebb631d6c355840ccdc4900679160fd71c2788a64fcbf29748e6ccac3f298b0bd574b8ce5e2a0ebde4acc00d959dad71e71d16d002b9d983e817d7e9d353032a4f9b644dd25b469a825893a95a94feb717404fbbc7bb09a3d5eacc74cd6eba2839643d5fa350416a8e9fbe52962254610e37a508370166417f13cee3d6a3512c09d4407033722e30ad2a178024ca2a1fb5548ae19c6ef8cbddbdbebd7163bc4b1a3bfcac64371e4606f1b6a6107f3f3ae8e2d16d67d8ff575c85a5e8a987d0bf90852cfc65a0b61452ec527ef06d849cc2f454f9a06ec72533479a1b5798b591f7f648c8d3cbbd09f8a28ce29c6c1951c83c4f2037e52d7e93f76af70baa33ea4a1c92f3932873aef6f3636f49024e73a5b87fe6b437fdc31f5c7cf0d3da4074bcf75fb97faddb9eecb0173e9f84e5f68e4097d6d55c3fe9e465e6e15c867befe9e465e15a02e7abe413c84ed13d768cb35138b346ccaef6ba993dd53bde678aede605c9bdc76b1d75c9e5d67d4c04cf7bd2ff4ab595ca13812b05790aef576e817a835d3fc1b7f5cff0de67c245ea92a80efcca23881bfd31a3830d499433502364ef68afa0865aff460fde97d1b9abcc90fa7e5beddfabe8bc8ed2fd4f8679bcfefeb972ff01ef20c1c046e633ee6c21fe01a24872972dfcc3096a3f78877abedd321137bbdde03620e678dfb5ecf5f483e6e5c7fc771cb3b5dd33e827a90e3a1bdd3f234bdd590ea9b1abe8eec84180bc400808e18f549c81a40abb64a70c2b5bd551a0d97533718bafd29f01c4bae01b336fb9641cf5dea835d66bad3eba91adb13e0e31e44fe5f9e5dac4e28732fd544e1f10b27847d3aecaa712f81d3a78a4cfd19fc9bcf734bc51d6a9776c32f724bc56fe48496e744ba9e0b3b1b4ee6fe1dfef6a8db70c0a117ba0e83f3b3fb8ddc01f9014d0e67c6fb15ebbd6ce9c4263e13d447b960cf3ad3aa442e5d3157069e3cdddf832fc430c79a0fa1b82a8f8483d6ed66be590fb55a29d44f110ba1d7bd41b303f38c721e58edc4e0bb20fd71c04535b580b1ef1bfb88f7269721f2ba001755535be1a2d7e6e233f8615cf35ff98ba8619eb19aa48eddbdf23cbd37e9aaee1069217ca2bfdea68b9c2e362c6f26efdd3e2efc2c06fcdc1bd4f9e677babe44533f429eebf0efb34ff090dfd1506af4eb12be0fe7e52b1d6ed23fed4fbff8de1ee324133654f4ab49fd8652c399a2169951abb5b167e7db7a5bcd398d8f11e80477209f7b7ea59a39c6bc16f5b11ef1f747bca6c3ea45ebbbc69a60f7cc86784d08ef9053bf23f12f95982b9c400c47eff0d26daefff89ddd07ee8df9bccc46edd94386f7594fdac681ef232f36e629dd831db657a439c77e6bced5a3833c810d2eba698c3c4fc957eb6f51fbc96a1d478831ee113e863843d03e90ed88bbf43bfaae148326bf508f2bc73e1ce2fb83b331bbc377c0fc7a61f7bef78cb00cdbf8dc708cdb6d54778967967fd471aec50b6a145bbafd7a401df7e803fb003fd907c8971a125e8bd9ddf313c6e7ddc6d86471abeda5e75ef92ed4c10efd37e3bb765063c8dcadc1e7f942357d8d5fc0ef628e61bc1ee85c37ae87b8169c6fe4efa8200e25fe59d41e027fb2bb426c87f5c6fa6561de51033b0b17ac3715fd812ee1e8f26fdd3b2bb176f9007e03dab504c66d86b6d79fe33a7fa535b83862fe9c74a22fe0cb7990d745cd0bc8d745e8ef4dc7785de7d16a3eb7edbef47eb40f73c4b21c29d73346fbba67f1bafc1eebbe71be78116a7c6f210f3dc7bc69d73893d9d993ae89e705d64f1ac33d4e73c08143df40d23d91a67069f2e0cabf1dac5b7aa5e85daf9cf932d7bac135829c9ab24f5cee9b36cdd4827ad4758de8cd44efc1aa849682b4dd91d7f81e7fd7fe3d59dbf7907d405f2c333160cebdddd4d99eec10038cd8a3f89c03679133bb505e896bd7de5ff4dede1f144b55a885f9ee815d09273d955bd9183dc54ea0e134b76f1e69f9493fa4eaeb797add9f13fdcad23ffdd5e535a8c6f9b25b438e51c4bad7dff50bad6fc26dd035576357a1a3a6c571f9fc38d46ba7de1fd44eaf6ae0629eb778f6cc5c31f911c8b325eae7aa9e15dc35c637c9c9be811d94b51eb9bf9bf9e8662e596af0e8f391aedf094b8038c22bbafcd2dec458d7c1becf1bb05fcccfb5286f5e806d241e16994b97cf887f9acfb881337355fe6ce4c1457e5dae397cf79cde7d47f8cb173c3b90d72cb1107fb8dca00d75005f2939d8e55ac2da650cfc1db73bb8769a527dc06fe15bf300bbabf1cecb5c32725891667e1779f892138b8f5dd56352bc23c69afd4edc0a9d35f2960f9bf66f1a36e25c8521288746fc27e3035ce7316a5b7896a5e1ddbd675d4b7259e6d77404f72bec49567610ede8f1cdfc6d39c6df8e8ddfe8ba0ff337e01bf2bfd01f54f1bfd677ca7ba538bfafaef9e07656db48cb3d03ce98710f7d577b50df97e1e42fd3067cb69f8bc4d3deb31167d8adef89b850ae4178f53d9d4945fafb5a9c7d6671760b4f5e0c3e97ae2b1c158861cea35f5f6a272e11834fb665197b668cd68b38ee43eed1053c3f99b7e84c86eefc337eaeff94e6704bfcd1ca054b7832e24368e8088bb1a2184ad5535ea8af46e90e5e441fd586f81e8e0ed99eb505fd3485b337b93d654e91f6626785fec7a2477d9d887d382f11e745f7f587bfb43a5796321cbde2be9679f64eaad5bfe43a85fdd97d246c39e3ef30f561cb1e9cf7cbe70eac9de33252bd57ce1edf5b6036e4f776b06e91dc1e51633fd5ed8cc47c9507acdf241de8fdabb0c6608be7cbfe21fb8cfde64b18b72ac6e72f537cbe437593189fff6877d0bf2a861ef4cb225e40c350313c1fb3b93dcaff6fc907abfd54799edce07b57eb1e3c77b92987add8f538d7eaa8abbbdb86a67126c64ce05fad29e260bc2eeaf192eda6f3209d519eb95a0f491f03d612e731c0fb77e9fe39de9f9d0d746ea4e47f16787f8bf0ab946ba373287da26b427ca703cdb3a8d3c8bea70df6e577a6a45f89f69d71aef648f312afe9b16b686d38f89d37f49d5bfc4e9d0b23c01895cd09703a304e991eea2c2daaf55d636d85931bd2d766beb2b9671a6321d6bcac213fb7acd930b8419d5dcd07778dfb4acea8361b9285fd567d13e577771ae7fd67bcc3697c636221a4cff283f09e5ff00e3fb0f79dead856c377277c90da5367d4d4557de30c87a2f58d53aee00b7d3969f3e4de356c9ed233c4da476ea3cdeab4cd1fb3591f64b3dae6e947a7cd66f98eb1ff245fc4173653ec0b19d7695ca32fce35ae51f97b79613914fd2cbedc5ef13f1afca2642353a16f2ff17c4c0316bfc36efdfd8dbeb37c032e1ce2e8eee0d83edad03f579c42becf559f5fdbba5f547db3bf9caffbea8fd67d78cfce4d8d6f22853cda175cac3d3cff2bf33c11d880de17369fc6caf9cabed29a2c30af123b682b939e612b258f7b9badcccd5882e559b341e17ecb36a43f313ff91547ecb47e9e3c5fbbcb8863caf51a98f0df653f389f53b40fffe935af34408807ba6d4ddbfbb6dff76c6fbf35b846e57e967d2823b427b4e685df23b00d97b635ff70c50f6db52dce04cfbe6c1c0c109bb16de30ffdd16af35acfac44e0870013d6b6f71cff1fc58bdb0fcca799fc93344f02db0138ae7c5336f36d462ee7b378d023ce382dd6219fa1a91b21e31ac00b303f1a7150e23dc98f946791e4c668f3f542ffa09f45e2bb3b6d7e959f186791f0255cdd7f96be9ce93fcbb8c369c91334fc7781cdb8d03e9d1ce0f9a6af2af1e4cc17a2e757843113d71b6769642d412f5ef60719f187dbea57d2f7abebc57e8bf1fdfde733f862ef747d07e38f565f382c8ceb65df20bdfffa405c242df14fab8f6af58ceb653ef93f7e9653ecbc4a110f7563ec713997e3a2c94fc3c63adbb5fddec1df1fa9674e3fbb55acb204bd9c763ebe2fd68f8a75784f188b79be5a27f2dd150e6bd8c00f1ce9d9bdb6bd23e320fe6cbaf68b7997df2dd7d54fca4ba31d8e8f1ef11271fda7d7d5f6a911af23e691c598326769d65462f47733f277310615f9088555947b266fc131c50c4746fdc2c5e5b61917a5e54d6b0d81e5405678a641aefb1fc64c89e80153fdeae2ac7cf728ce37f06cec5b546dc6cc01a83e138c0396c2f669baaef2dfdb72261cfbf8893df7c89ec01afe8ead54f1acdc7b861d937690eca88d7610def75b364ef125aa18b8392f16c5326180f61b6a34dfb2cd11e6abdce5f8f373673a32c6e97b36958d13e4228316df27fe607b4e69fd953a2e98e58a8aa175751f2a6d237c37ca4f1e2dcc0f57019ef7193e87d773fbf8fb63d55aefc5df8b96bdec11ce559cd1d217cf3f9ab6a6c9ebace644cc65d45c87a0f3d9b61ed47c9fdbece595f8835dd73e2f67d3162e77fbe67e020c445bcc7469acafa3795da336c2629d62d4969be9df046dbc18cefa5bb68d9d052763efca3e9236db967a27f3994a83e1a6ed99fcdb019388711ed3ef2b528cbb5ed19f23ce5a87e13e653c51ad9b7879965b26bedac2c15c0ccf9787fd569d38e0de9b5ed5c212df70f9929bd071f1dcf1b04617f7dbf04f788f3fc4687e8a6b6cf5b1b43991ff6e9e0b927f0eed1dda18693f15afccb9b1d7e51e037d8996dc2fc5f9efe82f315d67e64fbd1a365b9eb36dfbc6dcc7d2cfe26bf906fcd9fcb9d7724eff78c3fa580b7fe5a37d1efe899efc955ce07bfc4d3db4465e92d97a76eda758c35cf065b7c783a65e3cc5e1fb239d1fff611d9ca6863ecef19470e3c217563a016dbea9e3912fc1392fac76df54e27d94ee2570fa0a3c8e790efa58373a9c5686c618d5940e36d5660a5c83f2bce3389ca2ed2c11fcaaba1e268fb5ba95196b65ee2fbe9eb13ea869e20ed6ed5cab86a6d3558c2ae1818c3c627b8dd31f7e9637bf9ee3503e91cff2ebbcbefbcff3eb947ff9c4cf6db533d77dc3a4d5976071f7027dbc567c83e93faaf8469bbf4de1feeb7bed3a2640daf611e27ca806ff2956670fd89eded3ef3fafcb23df77eadeeb75f9f51c72c4919e237010239bae0d8c6cde030cd3d4d5f97373e0ef4eb03fb66a89dbdf91173d447e70564314dcac12276335731285d0b393fe704bac78ca800fa45a18180089a39835d65387f48f42aed148b17e01bd89297282b1b8a9743037865ac7bc6639012edc63346ff8dff6959cab59e79139fd365f34296dd2f41131efc91f7a576adb872eda56bbdb33b882b51c428393937cc2d67a2fd5a059accafd42aa51b7ee7fe667b4d6b845bdc3c41dd03b5dbf46e3cada337c26c36ed9a6bf64d69059ad9c7262166214e9dbde8d796bafa518f5f5157e9bfbfefdfabda8d5701d1516fb9a9c6da8f55e110e1379f04893b75e13808756ff4bbc32715f3dc79e37fd82b72232797a25ef9e67cd340cb2361f91aedba07327957acf36f6751f4ea4010c5c206b4bb333722cedf9677f477e6bf7b3bf23bc897bf3e9df7d51939cd6764b9d3f3ac797c01f5d7cc4a9ef5153b335af760d9b7bf981dc84308e8273ea6fd5413f8fb5bea3eddbcc472b5f136327c6d7c17c15e28e68e97bfbc6dfa99e4783f741720c71ceed06f6176b8df137fe4e620209a30b1c14db2ee2041123dceccb9b22a731f002e8f8443926b719c313cbbcee17d7b5f8786e1343ad71497fa70fa8738dd31ecffb7fd9aff05db4a16b88c5f366ef98d94325f300096099236789dcf79d7be051c6fe1eec8763d870d16325df13fb50862fc6bb94aff40d7be819c73e36d13f27c620463d5da64b729c2b0eb2ccfdc63d147f32f1204d1cfcce0ecc77d1017b81bdd59f8e1ff51122f75b5886c0a5847360771aefbc2ab7dfb8478e3d5b9f8f1de0d523e47513bd90529fe79dfa1a3f1bbb4fee51b9f01be911dbb7c8e155444a2f3129ba01eb0d80bed6d5f3150e0be0567e3e2baed6db8ffa9be0ba85839c409d653433f21a18672b8e8e728ffc90a37220faa62d0f74721487e704784a152735e6cd447e65c670abc0713a833318387eb606defcee386cf45b57eb1baadd4fde1f8cbac96afb0bb8950e88f510381b71feef3d832f22a76734f4f15a35ced218f3d3d8ebff8c1c9cc45d0ff984b40f76c0414dca84c6331b9d8157a2a363d64dbdb9e11bfa51b2ae7d208c63811cc3995d8236c02beaf855f102ee59bfa7f2b703d923ac78da230d47a8fc1bb1d73e8ae1bde470a94abbc10d0479cd046ba82f2be481f6f09cf59e7bdaef4adf16fbeffd04e74572cd585db17e541f43483a82ac1f2aedcfe1bf0bc1d51adfadc285ae87e8b0fa5f02ef10511d25f971268d0d1197d86c4d99f53651f304ccc64aac1dc945fb80fee38f13718db8a3c75151afed1df2577db2dea466ac8c9febfb01efc772e00f816345e959628cfe68f746069e97f309b07e263617bbf80eee27c708b9718ede16fab10ac293c971d1752493db5ef31d8a0afaf5ccf9e4fcfd5c5bd613e3116b1caeca6ec8dcf8e5d8ce9bc47c9e86df24fc0e89cdaff79ca6edc0f850652efbe71b7c07d8a34cd854d95b8db52ab205563d37c0ada16ca0d46f007ba6b8324ddbd4e0f89e736d0316c332ee8d2241fc4eb7be9fc475bdf4a016ccf23e32276ae014e4da95d787775a1fcd7e8a5c59c509b4db7cd1e327eba60bd4e613580eb6967ed56326309dab7139447bc7f528d973e3b9a6615789be7836c78f97e3d77a1be2ace4f1e275bbbcb8dc429cfa009a69538ca1098b22d7828c1549c392f6c97478c25e6ed67f2bfb07c2befbe53825f907d8f9b9c2f51762bc54ad9134ce948f1269baab85b377212e9271dccb87ce17bf6dd174353418e7fc5bd5796f7df27e9b12b8d8987e94588fb26f8c70662c465f7bd4cb4b9c40124b3a441ddf769b207de447e07a8c5e145633e8197878fe3c3c63658ea2bc611c6f6aac4effee58f135ff8fc648f90509ad29c8f34fbfb3a6fed1deb34ef5de53be8af4b198fe42fbf814fd2fed07f44a57dbefccf587986b9983e16715f49ef58cdc57eb1ecfe7b7c0cffff260fd83bd0df9f3704d1ccb72cff5480b217ed6347e991da2f7f8f1817ecf45d334bdbe6ec3c54da07126fbd6e3ff96332356fd89c9e9fcf59cf3f758f748d394e96c7f6207a7e3bdfb38ead47ed411fca8c25cb7fff0cc98d67e88f4ab6ffed159e1f417d77dc5cfc6e293b522c667d1d3b1ebfe4dfe896fa3fc7ce13b53bed2e8a7d363a9fa5b14b65362a0b14f51cb8f972acebbed16a0e51f2e202775cc228c85c45a5b210ee6d0d5f0cea0af0ffd66c8e379fb17f6a06cd519e210bf2df0c4155be073103ddcc27eae9e7b033d5f7efc208dd3864f16e0d9c07c5b5377743ade930fbff3efd83ae47c613d1cab364db0d4ebcd946d5e8d8b818e27e2eb53e73655638a3c6b39f5759156ae7dbe677f27eb68c0cb4a1ce5cc2711f19d8cd9acaddac33f90f335afe3478eb14ad7882b5c586a8d574f0e7287effae82fe690ab30eda5e3fbda5a76a01e62ac09969fc84690d728abe5f6e9aabff837d679fdadc7faff633f3e70bf093e5063bc44ed468c6f358d205e5a3b334dfbe2c87d08699f293e96b93258dfa947bc40427b5cf1b4ded1df29dd20c0e5937e029da1efa8356d775ec1aeb3b565239e2c29c117261c7c52e8be48ea936db17e7cbaafe4dfbb363cd34f7a03e8375d52fe86f96db78801d2f752ccf868f7c8dd5ad4b1e4359fb7fe0e65ef23e2cf3562747d4d15d63de9d7703f235923872c1b57ac95b5da39d0a8e767af386348f79eeaca6acd7caaf9df8373f5087b1cf5f2b8eeb6d0f413bed83103bbc7d6a00f39ffa48379a59cf0963be30caf5651f4efda5a86c5443c98bee71cc61b7a400eddb47ce77d380dbffd6fccf78ae517f5f9defff97cd3b9f6519f6bf2cc26aec9ff8df63afa32d6f02be2dbf86cff96778f63bffeffd5ecb987fbd71bf5b0bf4bce67f71fcd67ed6b91a60f9fcf73cb7c32df2eec0fccf9207ef6765b4efbe8760f31d663e50f755c36e9fd41ae8ef678177352797c0f58c984ff9dd275a733203a41bd0ef8ce2c3843fc32ff7abe431fcf87858338d2f0cb18469cc9a0331a6bbd2ffa3c1764a77713d4f0f2ead853e145559ffa0d71b0a2060172fb135fcfe215b91987275d570d7a0c35db21fa5a855fea11f68af1c60a2de96b31d49ffb789bc9dde3d8adffff59f7f1caf7bc05b7f0858f87e7705e9fc3c081bd5bfcafb6214f0a93b71cb8ffcc86d4630dfef46e8236645adb904fe2bd3ff7f9eeadd9efd3a5feffde56f7f9f231f05c17d467833597fd166c197270cbff7ef3b7b36bbee05cf70df293117fe25cd359df87f80f6bd8a8e5887b88713dc8dcbcf4455cc8a71f095f4fb5968dee7743ef976e63fde1fd6125ea27e5dd6ab7071c5807b5ed31be9cb4d4e3eecfd453236321f45bb03eb2b509bbe65a501f59562ef65648fe96a7b7abbaf0ec39a4d129fe5ee5dc901fff63ae6b47be2e80bb49d38efc1cc7cc39b4a609ead762dca0fe1bfc9b9ebf6d6231daeb1231e38a06cc05714241dd2634f112baeeed0e752e508f0c7551d558521e6f063808aa2f5939720c4d60dd56c065417d430bd43d051fba405ee3fe0cf0f48863c3eb86d54c5f13a8cf52af61ee2f7aa86d4aeffb60970a9323b8470d1d60e249cf8107fe72bc81e765566ee8ad0b8e25c9116901072670c047f55a15e77c6e707dfa4aebe4c1ea9c22e86b182c46da18dbbd1de2c554cf3b71ed7f35e6ac8e99749e8cf58798a6628cfa0b9770de86076f5cab616abde80a06ca01dee8ab6b81e9bcde9ef1bbfe87cd13fb9babbafef2bd49d71fb9f9af61d49ca70f985775bebcc6125ffe11a7f109784070ee658da90ffdaf9ef54d5dc97a6e440cff527da52b995907c2038871f3509fb4ad37c5bf1c4dbcf89be0b0fb7bd7ea6bea19eca9c16d70e1366a7bc1e75de8ec553d263bca658af5a6fb66f62dee2be423e57d1369c0aed734bbcbebdf8c7afb6f81c183d2d2dfd5a75e0931176d1843c032697cf35a2c4c1c7d4a1fbad0df17e6528e87fc1b1bfea6107a437a0f8bccc1938e422b56459b4bc237b68c89233492544d00f9e74c9e18e75a7f59dbda99516f8aacdf5f5b2b5730984a3f1c342c588f92c4c54573febeda9837c658d88284ad35c044ed26862ee60f9ebf93b5fc790bde24d99e28961539af8307bd3ab675411e2cb9a6dfe9b71f17b003f9a64f3dcb124376005c4f31428d191dcb65cd74ed7be07e768617ddf72a2d8ffa95a53d4e105f043c64ef5073c8ab096af7c8fbcd2ec8fb174e46da9c384ff45b453ac0f2b75ff8db2a347f7bc1dfbcc184e361e4bf89bf17e375f6b64f6d3ce955885aa0eedff95bc703fde394de3317cf653a4cce7dcb3794373887da58cbfdd93ef792fff5d1c2fe2b510b9bdedddefd7fec7dd972e248b7f52b69004771596634b6c4c72084b90389306530c68019f4f47f2833f790a91450d5dde7ef73e2bbeae8329a72d8b987b5d77a698f1ffbb1c2b9f84faeae7bb5ce42d05d54bd4c6963aceb6b4d22e20d9071961746babe569a8df9188bfb2c0af759e5f7415f56becfa7f13eab537e6fc055a93af4993d4fe829878d01f25ee1b9173bb98f7fceef9f442aafe70f3e611f52ef6d62d4030ebbfc1ea0373d6f84308759003a6259886703e906ad1c119b8b79fc9911fe6ac0e3486e432bb3a66e9b5347d7c89ba34ec5e198bf9378b6bfc56f988f06d8b321f9b7d68ebe77240fdb9438891dc2efc9dc4cdac4b595bff3ba1fb5d6418c75e843887e93cc7fccdf190736d4cf463fcfc84b968f97ea210c9baffbb988ef6a75e09224edaf1b7abc3e7184e4e3aef3e98ab97ec0ef623ddaf3dc2ee8bd6b8a47f9b1d80f5cf2dbf9fba385ab85eca7860bf728874ffc54b417e7ef685bdc7c0ea1b614d2189b5a6a66adb732778aeb2a68d8d695cc1d532f98780f7106c299c1e6e7a8cf8fa5b7f8522bf86026d771c0eb1c8d6e71aff8af27e29690398e39aca97c3f425d40ebcfa835352e8421f2f48bbd89ef2cefb7a7efdde7e37314360572f986dec5cb1ff67150cffc2a63399d2adbc3056ed4fcbd606c7a38dfaa7ec5d62c3b03b329faabf0de63839b26b840bf78e0919fa1f528d03b586d96a6c779f77bc8358cffced6a2b0bf9678211881eddc5fc4bca9f83dc842da135057754e85fbf6c41ad735fb661feb5631fff3f3c2e6e448ef38263b8deb3edae5eb1ecf14cbba0f62d029a3752ff395b0eef75efe3d742ec95e5b5c87d96bfe0daec0a41b5af8908b98c239655f87801f5fdff287a9dfccb06dc2fe4beedfa4f9aae51b598e84fc091f7390c7fcdda43e410bfb46c956ae1fd8da90ba18b4de984f54c31875eea5b03ece8953f447171f464c22cf3f95a742ae6671d6a7e85bf3b33e718b35bcead6e8a3637b88be3b10f713e7b1756d27d9c0e4c794758286b1b6954dba776d87ef03ee2369fdac86fd96faf6ca7ec743ac61ce0ae3307a720ae390adcb7d9e6c807314ae9ec8aed23758e793f836ec7328632bdb99acad9d97d2f99c444e216721ce8b275a8f181b8c553e387d7fe988f1f4fb1ffde279d97c327a2ec559b9499007bdf60cfaead89f5176e6fb3f2fc57db1323073b22601b9f4b9a330a5a3e87ce55a65abf01cb5f83e520b80f9fdf93766c2cf75baa803cdcef95d68ea110a1b3a36f99af4dab9756e53ca2d8e68edb0671d4243b3346dafcdbd6def99c65c1afae18700fabd47e9097575556c8338088aa18ee87f7bb50de6d4b26ed3cef95ec3f87738b19d13e363fe2d61b3fbd81f0dead097318b6c797cbdbe34cbf70fd6a54f5931deab51dc663dcfd5384bde0fcb38dfca33862f853d559a67444c86ca1d265edff4a1fcc7ad6e43586d8fe7ec10b31c7943f5cd536f0dfd3d1bd80bc4e960f4ad4a2c116aee0debe5f720be07ad67549e37ed6d5df371d4dcb2dafb570a79c00c62c724d375c0e17d529fb05253c04ab921c4d67e1febe88be8cda8fb47a8e119104e929ff31e61b7858f637e2f6adc97f6fa4aec0fd45b9df1957b94f4d972ff8ef48226eb27b356186e486b91e9949f8ae3f303e3d0c0412db5a1d99b98c6d09f2ff00c2cd7ffe314c05e7622b0dbf29a4edac6fa13e9c47990d30fd1d73939f91a0e9b4f5817482729f838dbfee5e489bfaf608d2f7f738df31e86ab3dd2d8abfadb9a4d3466c43be03f550abc0380f38b9a9a2d9fc52e7c6fcbc049f8604fcbf784f443a74e1e0fa48d006a25dea102be08cb27091e99527d716ffd00d73c5f6aa021fdb958dd77cdd44b813be1ebde6b6671da40ffeae3fc704d977d36d9820fb19b3a01c629923faf4c9b3ddd2e40f7cc7337fd0bf8fbddd3f577b4f7c2ceb32eda7e915be5fe7abc6ce875d5edb6b4e6c7b54bdc5703777338c475cdfff1a7c5f3f8dfa55d2df38d7a1e2f6b31dfbed09b60f04144d56475238773873f47392188dfa7cf7fe7fdd51aa912be67e003ef5b2a708ebab6d26c94a24f325f0585ba288d5fe2f09c88a5cef46d8945656cf411f1baa8e424cc6d03d430de9b59a1efc2735f0d7e314b1d458c4d25c13e03d27a527f3b96f128987c5f94e754efea6fcf8845234e0f1fb962588fcab4ae61ab642c206b614f840b3e7b703f66fb573a0e30cd30d65dbde19e7ef1b6ed226e263897f98ddab738022f7a469e59e4c18b7c382b598f8c8bf16c13f053983fa53814f2f39493241f7bb2c41ad5dc5bf25e17999fcb6e5c13e7d700466f89ef4deb50cff7cb7d3c2e3f73a312fd77ecbd456d2ed4bd946b53bdf77b8af7beca9352e03f1917b9c634bf54e87dc93921fd5099eb56e746e8417c75f59c3fc6055f56e32e93672c60fba48f21d758519fccd677acf33c687e9fc0fa94dc4bd78f50fce853f3dbe72eeabceefaa5f71a1bbc2f65ef85dffd10d54befa56bb015df4bfa7838ce88c9b814e3b8a04a715c18da71bb1cdf0258fa48ebd7435d4f1f3905cfd8973d62da9e8e53be9e01f72b7c6b8b66d9a8eb1b3aac19f15ebd910ee40ab43a6b3c3f7dbcf73b152602b8e82e838bb97f4b74c17e7f0c311e0ede07ed97c6b2de8f9a95fec7f20b6dc1f5f192dc48a079e537799def8c9c628ece97f5ccf8f55147f1b7c78af7c2011fdf5ee462c0e6532d59fe3be4fff37d20b100db07382b00138773476b56d43db16744f58d19b987f2da19e4b1212e184df7c44f4af8f3a8182b7e9bf9a07904bc9ee916cf1dc1db82317319f617e3e9c47d2ab987acb940afaa11e7cbfddc58d6cdfe94f9648d7128e94763acb499a1c669faacaefd24be417a87d0873d973e404c8adf31028d23818b96fcb6a4a7d2c35a42f4aaf732b7b777d4f530aed6fc30c45b4fbab056439593647bed56dd74ec520f6d8a79f9fc7c02bc95e48815dfe6902e497a460ecc2c6c00e658e4f2e20af54337baf97ebdf43fde48df16c62c5e215771d2ae61de4fc620d4b312fac8917a0c1cd4181539b05907ebb4db67e8d1f61f8f8089b1ec15813fe809fbbe049ff873b6fac3bda2ec45d898c2192e757464add7d771b5ab1df1df08fd2685b79cd6b5586178407ddbc50762c85dd4f387188cd5a87bd4d7653ed349d0976d612ef939f77da067e083fa8cb0e7ef8acea7360e940ff81e211625b7d3837cde9dfe7b78bc7d6f5e635882ae7f05cf76e41d1b7f4f8bdacd27f07d6663c8cd6f41f7f40c7f7b35fdcb78ef0d7e19391d59bfbad19f633ba3c68739ea97a6df0315332fda6eb137936974a7a216a8723e055e41aed565edab7b00bf6b31c19e95cd7cd5078d3ce2076e06ccd64a0eb605f6ffa4ffb9ebdad8ad9a7108ae052fc1bdcd6d8889779a6d1e0b9a35454c13f59950fe6b7c9e3523ec910b04065f7c07adc74c60f8edf794b52813ef6d62a34ea47f85fdb3da7313a10b2feb09b87757365c9bc4d4626c4eb1551103467554f0b5cf7096626e72d2f2c876a29fdbd5de51d596930fc4891cf37f871a5dd2c1773f84f78c99b72de254cac6cce81909102345b167da4c0abd6809c5c7f77d4303748552914f5678d0d2f546fa1d511e0b5c5b1bf2f778663e3eb3bcb4e24b867ca683b9dbf90ae291d6e76088f9bc0b623ce25afeef2a97d23da12eaee7821da9f62c3566f58ddebcc8e55cf8c6a4f10863f28d7c68f8feb2eea0b0e415b43b88a9a25c7c92c7e3c069b7e97eeab13d60501f3fef8edfe39557c4d33d7efd76fc0e3e069e1dacbef217f94cd5ef88a3b299183d2f7fc2012acfae39e6e459bde36f795f913bd6d7df5f7edf8878251b8f1a87acaaedf459bc2de7cfc3dcc7d5dfa59335fcee6b749d7bddc8133c0247eb039edda0a51eaf23383707b77231f7e66ca44f5129706f5e7d0f8d4756f96b267fe6d87b451b029cae29f442223f72ea0007e41afc1feacf9a7ca2cd945c81329728e7b79b818ded4d881f730c73bd86bd3e063cfa2932d794aef3af729c322699c2bcac613d75618e7d1853cccb8cfac44d4331d7279e3754abfd8677b0ea12c3fd8687a9b9ae2d755fbc17d6d2888bb7983ba23993ebb6e45e6c7de7735bf65eb4260a793fbad762fc93ad09cb7b49bf076d07f420093f1a6c2ce0d936dd329fd2b49b321f88798fe8a2786554ce7cfd80bd92f7f9acd6bc0af3d10ef9b9a7f7bdafbf17a4ad56b5e5bc43ccb3dcf291a34b0fe32a966f7f27bd572bd708e41a91ab47d508b3aede7be2516e4c9da79b60a573ac0177176ad389331031599213e8bd85f16860ab0ffcaa7ddde5974f120ff278253502acb3cbfc068fa1c61beacd667e32fbfec5fb52ff7e7f55313802be87c3f2ef9ca32f0cb110c5008023401f0d786e47f84cf27bbcc46571d839b17012193910adbf7da8e744e49cb167f2f852fa412bf4837aa375dd52f368c95805e791f08dbee8c7937570e0be21aca22b78c6842f5ceeaf497fdf58ef93f5196b77f55aabc0d9c5fe1e0ace37e93b96fab4fecf13f1d1c9b9c0f91fd9b07af67e94b46160b126f65cd1adfb84a3a9719f2dc49c97f2980dcecc53215fa2be49ec1579665e8bfdccfb6c8fa8034e7aa885f96735afa2cf4d7fcb72fb26f2eef1727f3b7720e7758eb1b7880f948fdc7d485023ee7fa43fb435f7c302d7ef8bb7be231fc9fbd011bbc4be8bf25e423f4adaa00971490cca72f7e536df4d90cf20f0c3ab6706c43ec8df21eb1e5a0d86d97f1f3155c20e037f107e3be257c697f34e60699dee276a6f50ae80611dc38eaeb331a6b36494e23923edb6c25c810ff38e67018dd77b7a191478127fff79411430ee27f10ce061f99cad56a2a76a1e6fbba1c8a94a7b8ab524bd5ff814aeeeeb174e9c0ad824ef56bf701255f41ed34bedc9f47f168db4a89128d727b73db4ef003376438302eb87588fb8aa29c13057c48d568a5334e2cc04316e185b14e336d5d3954c1027ed0f1567ccece350f401f4dcaa3cfb8446a37e2de0eaefae0f14f3dd129742fe94acc5307f4ad53c254edcefeab85dc8970bbf919f09d323f91f5c5748e7162d72880626576681d74ee64cc7bcef81b8e38785bcaaae8d03be4bb3fc3d94a6b3c199c2f07e58ff3f9bcf209b09fc49ded97857d4fd686adf1deb5c7d53b54f5ff97ce9f807c855130e1231d450bfa4be909ec92b33ea768cdfbc1bffff30ac537d52ce5dc1dee8e3af7329a0fdee0f4917c1ccf9202f089c1bf80d84ab459c23d47eb0673d30aed93e817f3cac6bfef28a72b27a4d0f716a1fe65c326cbcd3647659c612bf3de662dc7e6fccf11b655defc8c693e5dcb4f54778d52bf3605f4b96ef12cffdddefe2b9efe27711de14ed87c24323e7079b37c425303d08d97f35c77a67185a7ecbf4a230275035ecca9fde5b5bb757d60f72d918fc501a8f05f579aec9bf6158f0995785feb28ac67143783fde27a87cc354e78bcbb09eb4bafe3b8113a0fd28c6600073fb89fd29f0374d33cfb69ec196223faba64d8bf5f4d8d8c7c0cba3d7aaf0dbf5fd16157d03cc959a764a3f0382483f9b0b715ae1bcd1af271c826d2dc91e6fe0866235e1f30cb813bcc337acd505682c4d80136fc5cf6cbe7e4e462e00d7c5ebf5df918d16bdee72bf234603ea21f837f87f3ac7a706461730c4c491cff65b61cd196b82d61e9d996443891393b87cde8dfb212eaa6fe761696acfbb608dddf037d2bdc17d0cf8debde1bff8f3a6c1db36796c6bfc2d5ec5259cefb8ade1b9fc9f2ef5018ddbc0c320bffb89fe26b8135ce8796df1f89b300d068f0969a88a9e25396fdb2f58bfa9b7456c39faf91351cfe13ea46b602638de9678e9988f9d506fbc0bb9c0c53bf4582416ac25da79f69e9ffec0f41399bf59fe0c9da30cf3c8beed19531f71e1c55a89b251e9b17f750e24f64baeed10e3dd1ec4ee23ba9ee63ef552ec29d57a6ea4ed27fca8f9ae6a3ce47e3234ee706f505d896a1fb04771cc21eec0fcf74dbe7de481a33c3771d4cb67ca35819a9bf4bd0f21721584880b65791973dee57c8e7f829612d4d533c2bf81cedc4a5b1781b72d606caf8ca7810dc57a823f475b4ceb2bdd601f9ea5fe76639e33ad3ea76280df98e721625a59fee59e3d276301c8f1323feb9ef1316a645dd2d8ba73ef22d622c67a17c6dbb79e4b389f1f68d343e74d69b04c3fefc51b95e4a68173ab7a7b7f1fbe42c47884708613bec269ea7ef3b090773e73dc26f66dbe4fdb88eb6458513d9ff7e612f70fe3cf795fed74be5b99471cd50bf716b65dcf2d8af3f921445ded207f86ca793d65a81736117a2712b7d719b4f9b7a85e5eee639ee9ba14af933a303287b188fa904b0a0ae7cea8ef597bbbb3a6ed0c3cf4f39851ac9727cc3795ebc34a3f7a541cf75de2989abb626cb211e511c535d110c747eb9559b4d7c84525d7e5f801e61fea82b3c6634b3f977f7894e3e67b5c3cf3d0ffd8628ed9e43523ed57d03adb676a6fecfbde724b1c4c6b897b447d75e59b64d883e0862b2357c3b08d885f347b0a21d61e0dbea0b732dd907e9a11f71de64de019595f06bc1f568c03d806770fbdce3dc4b842fec37dd1fc54998bcb805779be09798e4cfae55493ae064e5f3e1ff88fdf81337bec17fed6b0fe4ddafe2bf39c6eb62dfd6f8fb111d7502d2b76eb65daefc187abcfeda4e95f9bdb59736f9da31ef2767763f05187d847cbd7db618b3dbcfe18fc00b421428b4fc5e9885118016e53e7810936880fad86d0eb30e992ce740bd63e6acb3aa131fee1087dff8bf9b720d3ff66d69fd12f95f9eb8cfc54c145065af18a4fecb562f09bf93de2a653bc644b93972cbf067542152f59c5e425eb350d9da191799fdb3c69c1fb12f3e652d32960cf590b2c3bf9536fee7df66f7502bf4370ae5db77fd5d150b77f5a6d5a62a92be5b965961bb910c679803aabdd2bd7caba4c003db4d9a06ed5dff6ccfd68df7361675bc61da9c60fb866a36c8af1be161fb2b81df8775a2f7aac68e15c57e366f3c58d1c18d3710bd758d314ff3f7e86e76a1ca796fe8df40379afacd82dd201a01cabbc86e79e1996e9c2b0929403ba759dac9730dc089e177a2cee51afcddb49e73c4d8fe25c72889f1034b48308fb2c4a75af930c31ec0fa33ac759267e1ad9701e3fb43390fb878acf04f54ca5fe20b7cf116ad32c1a53438726f130cfe28f515f2bff0665d7a09604b102bddfe8ed3ca883de959c8f99519710f654ae19acd52f5a1897a16e76ba5943aeebf0ece8bdd058bf1f6af94f7fd67cb29e2bb395a3fdfb0cebd30cabb9065c076a479f003b15c4587f056c99bb805cdb644aef8c5add8fb0aece84b3ec7e17b07b6cbce65433033f656be6f4ad6332829c6efa398bf87bcadf613f02f61c14de89d7a41967888c1512c48c4ceb855a67fb70772d9ee5fce578ebdc1afc1da86f99d5d453ea43c2792fdc3fa3f83f7d4fe1fe27e22a933dfdc9aa78ffd0c71e25b26b5ade48623a945fa3de056a1a09d676587fc4772fbabb86c9ecc55aaf995caf0dcbbdafe1f7c4efb45e5c55bf7c37e358bd6e2c9fade105231b36b5189b4e9d95e1f32a7d948b851b46f61d75cc585ec7d5defb2e861600cf2b18f85fa58d04fbb704cf2bf3cf730b170c72cde8985a3d0777639e084baa30a7a5df64d12ad071d2325fdf461fe140cf030da9f12762cd584f80b57ee07f56cafe2ee3ecf57f605e739f6b0c75328d7baa067e41b58731d009eb05b3b8dafa5d9ccd4cec49136b1296f740896f3d5cc09edc838751be7d56bce6c91776c2c817327edcc2b53dd074579a7a8b8f43292fd954608454def117bde74cd7d590f903c21b512e42e4a5c45edca1c6a4c24ecc1cbdaec36a0e94f79e6c751c5a36feb2d6de0c0d8d725d5ff01f02d2bd231ea70a8b8be4387e1c747ce6d0f411b1de827e21da19e472a27d8c67aa71f6271bf4ab04664a3d4bd825eaa778f3e11cee8d5a104b7ba9c195f40218bde12130df8d7a00a333d69cd11eb3fe058871276bd441a39ec147c466937d08100f3aeb602f11e34fea17f8939e3dec69403c143d03b18d19e35d36ea7e2eec558a673cd2d894bd88a18977649c3ac4d91378e63a12737ed6f93e230d9315ae712ecff97f13ec3b052da375416b0e7b920c4c8ba919097121f53ea74d5bac62ebe761f818ec6d9e7968838b672eab71505fb7c643c63161c49d3699ba46ddd5b5f3ae229eee9222ef178dfd146aa0970372ef2c36ad26c3f4c9f34be44bf85eac41ae6437d27027c97164ad51a6db116824326d16eae16e216f333d7f25fa85553e2730309b7ea1872d4ea1765721ddb3f4487973d3d724bc78d8192b5db550f414284c2ef98ac35aabf077715ec97c4f1a41df366154916f3122fbc0f6dd718ebd74eb06e9717d626d7b8e7efecad44d28e4b89216f6546e0ab1862d2681dc8707bdd9fc8c013ed9e5ae9c47758a671ae58f0b6793e25bc3736cd7bf9cc46f9f91ab35ddddcf4127e36bc2940fd02fd239e8246f14f574ddfb3b3b96d1d8a7d82765a9ad1d5157196d07d65c2b23b37e6af6f144f63e260bbf9ed57734fa7d2cefa8fbcc6a2dd9782b8913c3739f4af8f8a4cf46fe57be164daea35b732bebb4a32ef67f0eeb7f904763319a8ddbba172f0bdcd677e9ea58f5508ab14de8007f06eac9197a43d07375da496dabe0e65935cf060db037a666c2ab9d071b704ea7e145cbf5b9d6fc38e974faf3ebb1349dd98085f40ccc91e99749ec928655276c2ae0ca38368ddb75e2451b628e8bbdf7a43b84f78eb43c59eacfd0a72acfa1997589c2b5f1db0ef95a5027b005eb73433995f508f04e942b49bf75fc4c8d30d671ed089a7149676d7030402f75fa403d2ee863d2334bdfed8edfb177a3dcd2f56fd07f277d32e8035da096f2b2fb77bc27e5070e5f7fed3da556d3585f5b59ead8706535ec5d9d7b78be9f1691de7fb8e88c4d6e5d5953c331a0b90d440d5dc354b96067b08f55bce758c7e0cbef9663dbae226e0e79fd2e07cc0b3c433f3ceffbaee3df110f316b424e1fb53dfc39d5ba80fbac0a3cb38849008d71cfad17f985d6afc00d1162df7f5a45ae1abfdb447eb815e30a50351fc5cf6ef52bb418efddac053b17e439ed187554c050c6565dcf6bb6cf82234c811b49af09c7fa9a08df295e0ea23e71e17ba879e1139605b1c6a44b3efa99cf2dfa5ba53cdd31e673910f36b8cab59a5c984e9ea891cd1b5d2ba76bd040de0e17f8f8618c593debfbdee70d819ffcf6f3aa2c9ff104be535f9db1b3eb1cb49b0072b3ce5ef9dc4243aac8759bfd445e8cc5ea09f08a3e7054ccbd03d3584e880fc5e0a24d567b987b5197c7f87093220e650a73a8f23a33576120b3be0b63ca7e7fbd278efca187f41697b9c89f705e4e37d0f0999097f030cf64d40a89573420ec887af7c0037c8ad0e0043e65f1b788fe965f07ef2ffe96e0df7a0df39e2bcb3dc3af79b3a86b44f775f773e223d90fd498516c2cf676ee2feb35ec4bcdd4d6baf4a257565f97d7f58c1a75d858b79916b5c80385a3b55eeb1ebd56393788ac652755e37995fcdea8f9289f57359ff79caddb2f8dc77a3f6a9ee0792f99f1bc38d9311c937c9ef7b6336afddb67c7d40e0bbf9e1dfd79b3cba1fdd298e6cff3e079f3fac1789eb3238d05785e6567d4ea8f3dc0b665914fda384b3e7edc669c43d48b79f20973401a0eaf975325ffb75eb3abfa57123744ad8fb7ca00eea7ed01f16cb6a6849d6c17ae1fee2b3afe37dccf09ebc1f4f0c55a16b835f3db527f8b3afb16db7404fdd970847a3a9b5e64c3a8810e039e7fec3b0718a76878acfc99d27715df90c65bcc8f6a589cd2bd9e685cc74227d3d1754b9eb354f1f1a6a7b9818361fa50e2f98b8f279b8e8f033c6005dd4a8927f687ca8ecefd31da79fdfc93716a88be23ef8fd3f983a7d9127021c730ea835e9583984a9a875dafa009e2ea3d37721ce43a20ac0769e8784905f524c5b563ce7787b94ef6cc83666fe4b87e218e261b7c409f0be2023ce2ea9afe2adc4fec37d0e9032d4cba1fe10595dd6c16d6d6a459a53d24b12ee61ea05a8df9fd3f2a70760e0be330aece55ed27ca5ac5353d89aaf86e163efa00fc73bed7840dc47a72d1f7c8c6c5e7c4a96b3e47eb7fc95a7fa6b18bb900561f19729b21759142a677976ca66daa2b285ce928f0890b36553d1163a139abf2e21e6a12e67b51e9c627c06be7bf1d31bf77a921f64bc51517d096eb75ba4dfc7e71dffbae4b05a60bf8a4c707533fad44ef571bc3d9a44b3cf4c0ab0ff741cce6e1d9d030963e1968ce69e7c3d339843af9e867ee4f99e323c65d8e6f1331594163dc543d27199d3bcb0bf0c4843e69b7e473aade53c694138863d8d8239ef09eeb0e6e8ff163a78d6993d721a59d0a11d7407b3c3ad9cf8b5a85f6f99b077b7858b411dbfc778a5f94ef9963b842ad36d41f1e16ec64742979fe033dbfefc339faaab075020ba8e622ff1dd8b0d92a28eceb5eee5f01a72a6adc55752d2decd34cf33568f31390f752ebd57f27cdc15e73f0d81f2d9be908fbcfb92f50458d46f0054af953b5b353cb6b2126ced06351350dbc8f99cf937e3ef5fc2f84aea96933832ad80a5d877b7bc0da15b33df150b3df1be47789ab2da539f13d47fc99f5bc12fea3994b95df2d6cbfe9b71ffa17e4feb8803fced69297af25536f53d35bc868dd20967f4471078b49325cbf5eee6793b6b98c7bce18cbf726dd46e19e51bfb00ee7c303fa724a2bf7bba869b9f7f27b8835169ff7f0f767e1639967cf8f1de1fc41a7a2e863514c34fe9e37afcec741f00e32aee5007b414ddcd18aaf29636d2edf95afe08da8d75ee65fa28a3a5742c25d65299c1d473c978607b439463ed619685c20b2e69d46a0ab93f6c03fc05c9b8339607c26712ce4feb2f233e3eaf7e097e5fc61bd303aae04fa2c43c0e8ef42a7afd9e7171fcee46897025f8e91fb29aee3f12e8dac58e2cf947caf0a8b97b2a82ed741d0ac14d65d22e22fc501afebd80adb7f677c54b9154b4543d4c8dbdffaedf802fba97bb919a30dcfbee00975babf8ab14b29978a8811a896f0e9823f32fb382337766a8927cbb856c2d50f9d6b25eb3690e7539d2b415cfd4d2d3e0b2e2103bdb855416f88f111f82f4e006bcda6e529730b9d31e4fe9dfec5d4ad0cbf75bcc4aaa07163d47cc817257cf57978e1ba81a8796779e72bfa80a347ecb50b9c1fe8d32e3e6af6dc1c8cfbc70fac0bd3f775855e68790e91ae615c52ceddd7d019e4dd7bcd909e53b9fb9acbe924f648b3fb70ef3523eaad3adf7d0dea6a3d65f75e130dd11f72efbee682f6ca2fb946e888a85edf4ff4d179def4bd8ffd5e230d7bbd76313fa7f12e255974c53e04ab3e681600b65d6005cddcaae6234e449c52cdbf6501758a09ea35c81e0ab411cd1deaa37e20fe57e11d0e13e4c3c0739b7e7fa307c58960bf08bfe25a0fca8f4bf44b1babfd481fabc3e862f4f818f9c8a49d76f4de9bd66670a131903d3cddfcdf787e309b3ac97e2ef4ed6a0d756f27ff379e1f4ce3fcde6e43c4802ab7937e98cf133c0a58ef97cf5b9acfabe6f736f2910fe6f38276f179416c3c6f24be45d4cf670ef40e85c6f356e25b303f22fd14973daf2b72463ef2b95552ca8b1c8ddc6065ee40cefa8972f89d7b73f8c8695db999c3f7d780b7c27927bffaa91a5a75066b7e087599b1ea3974a2fd428cf5bafe928dad767a319a022f1a60993b2fed5a43d86e4fc495b63a0afefb2bd9cf83e05a8bc2afd05e1fbae0bf03ff95b3279dc1c6b4a4c62331f4c56f73701dcddfaf5e5ba56b3fd5b53ff6f3285f4b6e23b9fadcd589de59e5a3dce67e26f6cba1915c7deeaaf8bd6e806b312d796ed041fc8c3fba10cffa0c7112b55d9f7c303fc53ca1fb1fcd47a03c9756a34aeb35f061cf2f8ee2791c426f464dcf7f1a3dde50ab9b239f43ff78db168a3d77c23c54f347e1da327f2e1debb818fbf9917a2f37f62ccf27193c2927fa96d7dffe9667e4db78bdfd2dee5ddf52f90bdf72a16f79fbed6f99ba3f0bd7967dcbe2be7979f89d6f31f4971dfa96cfdffe96d9f867e1dab26f095afab7bcb88175df0413d49dde017789d225bae01e945a2bd29710bddad29790fe46bff09ba93f6842be41ea9cfd447e33f63c0ff6a77a9eb768169f37f797909f503da201f248b07b5d66943f10dff7ec3f22be3aa1986d86ef9e9f933c6ff5b1c55cb13cd7c64de026052e14d4c9f90518d7b453e27be1fc242cf722df1ff36c675c47a3c7b1f68d718a58836058c3733806cd09395ec86584b903a57fc7d6a0acff609fc69ae5f46bd06beb4e81f364fca6ef6d2f2ac465cfdebaaeec2c6a2fb39e0ae4434f9a7de81d7e807ce1cc31fc59a93d2aced2d4a9403d02f874ab7da8bd00be176357e2dcc53e483926a7a1c9b11b239f901affb46bbe6b61bd620da1799635bfa637f2f6a85395d4b1eee88c2eac9f3f5ab9a09b9b0297cbc5f0d7e33572ada9f93ade355f9301f5c0ac1c194b444d955f1f5bb45ef41a66327a44deb204f5e9d7785dcaf82d94ddf8dfb206c439a9b84ce4b70a1e63fd5daedbd8f04b606cc5fbbc9ec1dece05bfb77e9f670fedaa98ab5eebd366efb11e0dd8ce59ebad3057f3cdb6053514e004a57cecc14d80cbda1f3c400d6e5ad7302d8f1ae604722fcede18a3f12ec61a80c88f7ec6a04b3b210e6eb93e3f8b3cd5a36e86eb4bd99820d27b99aff5bdccdaea6cf2bb3da827895841e29430f71f7e404c3b051cff6ea87a2974acd8f9a9b08729ae97dceb9b65ddd26f6660eec65f33d8a76c5e42c4c16af57273bc5c1c03df5a47c988339ed62a9e797a8d40f5059e11cbf1ecc0dc236f1eade566a47debb338232d3525e2a834d7d62e251c178fed77919e6fbe323ee67ce35adba4cdbead2e07b867aac1e258d6bcdc5e896b909781be97fb00fc7c9a7752cb5e793d0d8672cd0491b90f343f41bd1bc7941dc67a2fa8998f647cc5f1768bdac4c677502ed5b846e23b0caec2b137056d80d6aa30d6b35fa831c0f39ba53637b7473c87f4ec05e5fb94f5ad16b99a89239934c5e8bdd2f74758235becd562d748dc28ef0db58e97939f11f2ded08b1a015f8a65cfd59cc50afaf2d2b381abcfb0df02f3bc324f81311fdb1b0ba1bb1e3ef64783efbee75621eed7cfe6f00b7bfeb5b359eb27bcef8cce5e7750574ae97c427c4faf8eb9340d7331dfe0b9cd74f00f5bc0fd13b7a74d1ffe51f9b03f768b95daefdea163f435fb0160467dac61d17a8a9e64ee6712f68d9c3cfe2668218fb8da5332e61bd7f9b789b3b7fa8c35171a8fc01fb76cfd24bdd8e060f5814370ef3de3f92178ea647f0ae0a232c40bbe2f3a455f80fbe49a3d795f230ee5197df3d50ecfa75f0785194bb234027b35fe2a8c3bf33965bd635a31fada086bc4c6e125c3dc4975502f591771f53428d476acfb5f623fc6abc27366426b4f9e61e007d0b7a55f219ca52206a2f190bef1b22aeba04dc13192efd5a9b7aecf44ae51ac53c867838edc09f32c724f9116026aaa529f648298916ea8e51963f715b1382afee1766d70b9d24b435c3f467f13c304e7dfaf304a0bd4f27b7c91eba4f509bfd37d14c5031089bcb7d6bf3abcf63ef1fa42da5badba8e0faa3d43dd76f8ebd6bb46e71e72336ef37b8a730f7dcd6cfa0bea8d735d7b43f669087d8aebb6c5f4fdffc4b648ac431e33086c4616d54bfbe8454efc395b029e499d05ad4fca7faf994e7717fb1de99af1292ca90ba9fa0ee05e01bbb287bda67e570d57459df9056099d539d01ba5a53e62d8ec0356b282e7bd65aff25c8ac68ba57a9231868bde6cf853f18c79d465e72ff59441af81c24d01470bf0467ff5fdd6135f77c1aaebf7c16600766dd272c06630db881a79c8013082b550ab626f7686dc152dad3eece83ce0a491a2ce2123de08fd6ecb96a7906b2a2df88ac928c4de7cad2f40f16e27a8e345f1499875219e3d074ea034add727f057f02c8fd7dbbebd2791fc64efe043acfbec02172fe17a53e0c38d6b078c8f904377ef20a7f810b87153611395cf2afb48578e511724df7bb12ac135656bc4352de2655dd9b56fe81f0b3a0c83fadeaa16344287877723afcfeddd7930fc23fbeb4f87e61c501e72d1fac9ce02d41050f1a0d67bf65282d384bab97ca6cce39ec69847533c2a1fb5d8c068f27d5649a2abfb4bda1fe7d3c0808bfdf05d3837d8bc53af37c6732d860122fb2fdfdb5d10a71af41479f9bfe9cfd5304b10279f87751d1f0f781275adecdf054caa5cc36c9cd37d0a5ccad9a0c9725d322fed537d59dad4a462d140031ba6c6e35cdcf7b8c6d615d44b5b41afcdb20f3e9bb2db4f3a77e0f617fc1dd6ff227eba3236cb3fe9af052d8057d316ce5bd03f879a3e1df93e7afcb5681fead7d62aaec955a2cd4d7ff897d670695f30e32bcde62686d9c83159e2c8cfa1d51e4655e0ca08d6af808f7b869efb5121dfb35c227700f296a675984f5ec798bbc8d58db82a7c06e0ac32a38f356a0276d2ef5f4a9feda5d00feb3f8eecb821f96fa86de6b9752d673a111c0fcaf6ff547ed22be3461436ecd1c241abc690dbcc31e1bbbd83ee237a29689a7ec6c3abfbbab8ee47e933c69ebf4af66f36de9a7a2a7c8da6fe58e78ecc567ec1f789f706cf56e2a40e72875451abcca20b100047e164e9920e76c5b03feb1d69a30f90d3257d5f370d7b23f25b29e878c97cb39ecb15bc21626e2e188f3752e2cc879c9d86cd5c4eaff5062c264be45c5b34037dcf21b7ef63a0f75e3c0ea11fdab0490e7263bafafec57e72e4f8f9042cec37f165f42d7c3980b99b82e6c6167ba6e32d5e0b7b0ce62b451d96ea876903c34e883a0473ac0b4e9f8dbd24b029af853a8dbbc1735ac5a12f902b603e55f13c821867857de838169356dbf4abe4ffabdf668f855ad00dfe71e705795f303628e3dff55e503760acf2d7b5637eb620c6b0053507c2c7a356c3a8e9c878a8e985cdf17101d8987153afe39af829380f147eaa172f757cd1f090c7520ad78afda39f06bee8346b265053513825ba8f1cbb29d6b1fae48f544a622f8ac922c2f040ef04d3fcd06bd8f8ef6bb586d2a7bf29c6ab040eda7a5c7737e63e1b032f7f3beddc98fbf3b8ae732f8f865afdc4677945e1672137bba76bda609f16e0f1b36e13ea8658b342dd37e21e96f1cae1c8b0960caf1f5493a64d0fc68eaf37621de46ec177f5d6a863a89f35940f665a98a89d057c3a3daca37cee20779facfbc47550e4b3d0f55dd43cf53a4bd22a69ea7deabd0970d25dad0759df658ebaec2d533bc7e4ddd57cdc82be25f6d99f548c3978e0186c11e3c535f451546fe3618e312be2f44f98f7b169650dcd31275e6cd9b326df1d35c56df7857b204fb48de39ae5fe49530eb93c100f380a77831b7a8b7cfd2b8c2aaedd4563702d4f528daec69edd75498fb00fbe6bb17f1763d30286dee60f9a7519353617a37f1271f266cf147e33d58c18b751915b0db85f92957d0cb11fc69827ee47eb5a6b126f16424d301b689abd0c0f6062fd5b859e955bbc46820fdd9adfbc0cb157e74d9b8f450bb97086462c82bd963adfc9957912da65fcffaf5e73466d85e6a75a97587bded1f795cdd1ea322b59e729ea3244ce107ab13f0e7acd0ceac20dec19ca662b950b1aa5c06f4c7c8819e907879b6eddde735ea39cba3f461db130aa689849d26a28da4b4bde56d66b1aa0879c08ad6deb775b6c52187d129e54cef381e51d918314f59c18b775d276e13b2bb1c66dbfc6bd065816e2b289bc74d547be8a39e81ebb4d963b93672c3ba7ed380793639534e8f0fb82685f56efe0f751f3f00a67aa67e3d92def63195459bf03f275287ec3b3ced55873f1bbf83713660e725558bb493af0b70878332a833ae278bf51fbdb1fe3358b0f57ef3bf40eabeb3d4ad63e1fe50750cd84b85ff702e724ced2c9d351d72748df0b7d4f8ece8b4efa9cbfa5cdc038d1a7886b34b5be352e25dfe44c16bfe37ab532b7217af6c433b0a75f8edbf67c5fbf5454e024bef34c90b978ed4c90ba02ccfe1b9c7c721f8c943e648afa796f9eeebf38dafee98da6babdf5746e3dc0a71b79f66f7b9e89e923d377b19e13d91f8cbf915af732071ebd410cded0b461e977fc1e55e81f673ee6c4c0dd6af9f039f83e576a37f7f8266a9cbda1f271490b45d817e99ffa297c83f2fbabfb3ff1dd994e6081977411d7a0afff1868be27b34b596062324af3f37c4de5f6dfca95e097e5afd30ae0945257cf59a61ef2c35584ce17d7dd02deb7d152cf9566dd43c978114fe16485b5bcf93b72d793763f721bc23733cd91066a8ee0ba9e8a1c9ad4cd9ba12d5e310e15512bff4ea2ffff711ad364c7de73db39c7f8306cf9268a4f463f8f90139d89b1b9d1a319d7bc01f5e42afc9ce4304ca29be7b3f4772f54671cfeb5bd719a33ae9b84fc938cfa0209e3a1f293783627cd8ae1638474761afd0ff3968a0927ab2ad87fd6a74ce71c715c298c52ab946b1fe3ace65ef99168830a631676b07fece1d989b4fefc99fbfa87eb32225c24f2176a6791caf796f04d50be8cdbe74723fe16f7988d20179caecd7ee9b4d3fabd7ee951f7a5e073c46f17cad1ebcf663e1fb7fb743ea3f64241b30af9e0899bb956c4b2fae9067b24480f8fad416e8b92d3551e814be16cfb0a56d11ff3315cdb5732c741be1cdf57c30bd41c6df122d7a241ed762f010d88c97233287027eb7114d767d0b008522bd7b69ef4b50af547c31f2dfa563f349f7ee6d5605c37ba3e45e8dd61bf143f48aba48fbfb88ea41d3e309c4c80f965f4073dccf97c931e089de78a1711e794c52c77d9b999c1e7b1e8b4caf491f4bc7734dece609fe77e85f0edbb9f46fe488f13789d50ac97d4e04f0f719f0e15576830e936b51aa13e8e72cd47ba366381ab55db57627e57054ca8783fa9c13dd47d237a3f860bd6f95993425e43da945a4fe506cf502f9d6653dd07d4f5283e11d364eaefebbdeca69f4dfe0dd30d967af732870879d9b409ef4a3988f96a0f3dee7e518701f13d70afd37868e9bbfff8813a037d7d8fd87baf646fb6b48b025bc7e2cfecb1a87703ef41671dd9be91fe7b1913a70f9897a43a40698fb4e493ac823df230a775bb86501dd7b5ef6dd8bf77fbbbdf6be6bcd13eb35cef4aafef926d9f89bc12720e636e8c731d69d77a2c6effdd6b0b3c6be3af64f564fdbdaaef43bc20f97cc4f33f2f90c79f82be15d355827ad002b8ac980f1e666b8dcb8cd721c4fe11e3bf46df74f101733ace664de4a505ad0f9b4ff67f772e00af41dce1384ed321e68d3e9f411bc4efa346493a42ed75f2dbde533c5b52d280f2cd1cb87a37d21996b858fe7e19d6d29dc8762d715717afadcc4bf22ba861c2aee9516e52cf2f917e7b85697c40dde1b06882c67693725ace49f38f21e7499a349aee986fcb092f5680cf0acd7a95cc3d3648eb3fb7d3f7f01ca13edc68392e5c5bcee51ce97d37f6dee4f463d9b1f779b6aa3de49e137568c9a329b4f458af27d6f2e837857ee2d8f50785e78db7719df7dab6b2242a3e6f112fa1871372e77adf38d47aa3ffdbfdb82f8e5cdf33e773b7c0ded2a90f3edbacf5a461d9c248bd8bd0ab9673017c1e33c0b38cf07c041f28833e8fb433aedbc63d8db70dadf7205b9f4b7b0f18fe37ed3cd619fe47f8877d4b7fa49cff9f84e7926be31c403fde6479418c2deb5962bdb83cc6b0d5177733c0e04d42b007b61ebb13f4193ffbdb3a68790e0c8d5489a915581a7f64e2792d78fc7e0193f36307b82ae2f9bbd24f66f595ed3d96d43ff603e35de65ff3bc33e603ecbd7162de4cae5a2b27996d5fdceae7e53d933dd4be9a7e438edbdaafeb551f206e4b63898753e3f572ab0f40aedbd599f071f67c3f8bc73e819b345955a06ee15fc3eda7a0211a1f9ec05fe4e3846736ebb38ff5fedfdd2be6f6588fcee413733573b7b0668f0be8edd1fd5cc27299eb43be1bae0fd65fe50ca02fd8d247cbb969ffdb17aab8ea3f9a367e2ee8533920df84d09693fac7ca17dd2f561227964cb6f500e3b7bd67f04e1cede7dcf80f7a25050796bcc7fbe37f7b25d9782c36e9eff64a5e727f4cf5e2c5b01e9103e21fea950c442c24798053e74aaf24e364b170cd558786466538fe146bf1d9ddee101339c9fd49d6ffee0f3cc8f7cc1aebbae1477c623e507039b33ecdcba162cd6d32bb4be790d07154ef2a79a79f1d2bf6de92f31d1f02a798b74c57150d073df3b60d2de7c7fa88f08cefac010f083186c474bfafcd5a0c3bcfc4bfbb91aadd862d835b63f4581d68d816c0139ebf90cb14c775eccf9a89768606be35d6e5f803dccb89b091ac4fdbefa20fc5ff2679f706e80386848911fa4c0a4fd7074ccd027a81d578d05c499d278aebc4ff7fbe82869077061da2cb02f01317835f9c7ad6a1ef6d377312adef1662eb7cefc91cd8566152dd2dda3d9fbe8fe77ac986f579be82f20eb217a98fbe0ff036ebf8b5135e1f57ab986745ad7ec224cc476153cde527ea550f6b03fddd0e03c3a61dd3551fc647ad77610faa0bc2105afa6eb690a3390c51d3b30fefaf7c07c847e7fb5abc83033e6a00387ea1afaebdcf2e7f1f150f287e8869d3a843333e65c999d8837860d4a77cfe04310172ee1c1c5f79aeb7d7adc27b75b6707e1c7b9823105a67ff43eb0af60fcbdb506d43eed9dce7976bc69b618f2b704847bb7c2c54be1df77990a5c80f9e3f136a97f3f619791742f4dfc27cefaa1a8e58eb951430caf15b95fa2e961d8653173663dee9b6cc1e1685b9f5fbb877c7a48f3ce9faaca6c16ab46c4f701c35e9f29d932850e7fb72a9f7bd843bac6f6718135608f7ba0e8c359705e4d3329bcffc8fd100c73214f16ee9f54a1f30e1f976e9affbc865c3f008c18938f549c738456cc612f3693dc15765fe9d74ee11bb96199c1dd85fda3fd97f2be6f8117870a1a7837da7f83ef0edcc7b25a475cbf81044fe5ec62e9b2ebcf70179bdde712c32d25416f192ca0d0c9a85b1c26707acce673cf772c89f2bb9cc87b5b66d9e540ccfe719f1dfbd11c6f0d8fba68f95b227b28600bcedd90035b6a3c2bcd0f8a4826f49dacf8153d04d8eddd39f7d7f8a35dac0fe5bc885a8dec55ae11bf57560dc8bad51a633b0cbd7b8f4931f2f03533bf637be9fad057d3fb1bc017b6e45e42585ef2ef8134bd6b3436b82f97889e06e17df799c37e12cb3f9992c77c8b52c46830f3d3f7e3812b6b2c80733153632cd6de4c6a8559c03c2d61a3163548dcd187f34ee636e41f8e0e0238dfd94b04b7bc86905d963bb905319ad67804383f32e1cffd472ffb311f45ca68741d147ace63ea27ee6c91e62c437411c83b88cf41bbf53f8cd4a9fb399305d3b8ee36e9e06ba4e7cd9fb77a837b7f5f817c782fbb467a6250dfbfbb307f9bc38dd825d436cd7cac449f17d146935032b4676d23af555bc946c50ebf39c3481c3a05585f529e2045e1f1e8d8dbf49bf6281fa4303e4a07905fdea4dab51c8498e1e1f2056907f37ced8cb95bf79cbcda01807c8382ad2391a92497ebd18e715c6b0e00b93af70ee5f90274ff6a34ed64dcbb8e1ef66703eb1b1d2622be52f5d7b5630d9c2f9cbd611f93bb378dd81be3215875f4cbd29ed8c1c96f8123c678d3e2a7bb7c918392be8bba3533ea7ca7f55d807fd6f8a770dbf3f10df2dd622c649ff92b9ff045e02b6de1f2df7065b7ec6f55cba96c49ea075afc7c0e6de2a3e2b6b3de0d9eb4febc57d7fd8aadeca775ddba87b296a1bd96239f91d41d4376244edcc7571cf4fa6883145ac0f8b67648c207e23b19d5152b07bca3e3945fb64c58ea9f7b1f06b33fba4c580e0afdbf726bb469e77864d92390bbaf6d112f34b4c07ad73fdb9967a3bad096603598ccc72a2b2564abe32e17886fb0a6215274b78b657f0ad709fefab948760b1a33843aa9633a456e91b3a5972bd9f7d3da7c07b6107b11d37f2b8bdbbef15f2caedf5edbe57f02ffd25e68052c7a8ffad12c05d138fa7c6a3bb3e938ef9c1e95ffe1d352888a14685da60ed0b7bbd0bb8cc1bd8e649f74839d11f05ae1d590f5aceb4fc26e39a9a6590ffd3c645ab815dc5b732dc26f11015ea26d8c7645e236d57116b595eaf53bd95a82556c90c2e08e67fb3b9ea6c61ae32c23c90ed5035b6d6adfb189cbb5d3a83d717c2972eff0375a1c479d5fb881937eccd1e26d223bb8cb02f0f7567bf49030b79dad0bf9e396f9cf349e15dd7fbc1c5582b2c7fae72d8ef9a4f017bce3b837f5ee99bf7b8c3ae9470b53e9bfb9773695bb423aa09e8de94d5faccbd30ea6e918b889f9feabb66aede1fffcfad6fcec53d557ec3e154e45196b680f75525a87d9cdad6d8554ee0d4ab0226e73b8f7df8dfe6f1b2a3732d2e2f455dbfc311632f7f6bf13958fd06c6107970ba7846fc51ddca13bc122abfb7fccdba157bef2cbd5ab7b2bdef9fd6ade61e607ac2fda28978f50aaeaf0f3c03594d5cc345c9ef32ede164d9b69ec35978b46a5fc6eb95564331d625c3b2a3bf67f64d5b3981a01f2dc33e6cb536cc1ec5426fbb592ba820e7f6047a85236708fba17902fbc5eb69d8f38dbce87769e8aa9e0d5b1f047285e059ff192b7b61f42cc87970d097545c30076754b770ca612f1af5acc9eb909fdac73c543ea6227ed339e0fa3aef934bbe9e188b6374813c1ee011d64f5acd85ee877e938a3986f7be43b27a63580f592734b0b287a1d67f32fe865c2b9e41d82364f41ec83e49b966c6c01d90ff56f67bcd097f0f63fd1061ff5b8a182e9d1fadc079297d761c23ec4baf0e552c60f0083ceaf5dee5f90eaed5db7b80e36e5b9fe5f8701c9b5ac8d697ccd3e35c60ed0abf41fdffb3feee53ccf961bf23f66ac05a71cb7a26774385dd220caedbd57baaab5df65bb9673e222bbe75d649d1bf8990af00de33c57ed3c401acca76a47ebf21ae26ca7b40ee44ad818cc59a57fbf8e6a469f6607295904dbcc15562e729677cfde3bec92990388e76a607a4fdaef6d3ea8c7818890b442ca2ec01588eb5bc9e77f6d5f9051a72e79ec1839bbcafebba36dcc01f18f5cbd479d534e6e6f1a163f41eec0cadbae30c6a8717d0d83b981a7b3b38b715afd4656668d925de01f199aa366f3ec79d3989561f4e3fcce7a43bc0fcaae754cce72ccceff1b7bb02579563682bc60753532fbf86e721b299a1953723accf2768e88693c7121d34c967d7430dd71475aa5f32e2ddb87a8d3f882007915875efa026d9af329d5199fbc8d6f7bd17eafaadaa56bd3bc47de39e422c57efce771a421f6feeffe9efc4f0167bf64e7bc569f0b92bbc13abb1b3770ad57eda3f1738bf14f6506ab55719d795acb9ffbaf39ddca6ca9dfdbcf79d46caf65eaebfd353957a43d6377b851427400cf66d16ddc4d1c7babe583a31ebeae9262c6adf493b2bbf09ebee694bd74ba0f952fe84f83d9c65830be753ab3de15c818f2170138a57c5017c955ca7439a27b5f7c539a9f8d493e358eb69f8b103deb568a8617886eaf7ee3cd2718061db6de9f3a4e6c345bd96488f395a11f26ec018e8310af021edc366f7b13f1ad45317eb7a78a6c5a8dfff04f15866f2ae84c4d7fe3050dad9425b5bae21734e5ec0c6ca3939e1bee6eb9269f02a9b2d9ed5c33dad6159807fef878695815ad610ef21c61878f706dada70c1f7aee138aa1a7a648ebbfc3d70418ec94eaa3d38077c9a1b691820cc39aef18ce7b8c0638a730e7ac05d1fb8be67efd3ba956f31c6fe669d8763bcb2f79fb4b7b0672f53e7a9a0cdab34b4708ed9efafeff1490af1b3335bddd8e3fe58c7224765bd32d7df95c54152e3316bc15878f80e93f40b75aca4cd6d167fb3fe22fee92715cb626fccd79d39e52af0a5b0f72ecb29fbe392be4f951bc86c3d1e7a2d87fa8c61dcb1cf4eeffd9039d5187a2d5396375e9da00f6afe516beb7853c6e5f6516d61dd7ed3476dabc5e8b10dba15dcb6a40de20e0c57e1637f346da06d29eff329d514f88d3e1ff12d45cc7264e9e717bed93189fab897941f2574ecb91f059c3b90c724ccfe3e3f5b9177b4c8cdbfbe2006067cfd31acdbb7e3156e011a5fd9cff2803adaa867cf7377cdeaa08e7aed9fd4af649bdff49cfbd7a4eb2c6b90a8996dc3910ff7154313743fb76270c59aab064d652746ab1d72ffdbf0fbef4b5c3fdce79b89b34ed699e6cd68df13e7d3b23eef4c0b58ee20df6b4a57c3a28d5065fd9032df30416ce111ec46d05e77d8fa36b82a1da99dc1fb64cb780b589f8475ee34ae1ace3361d3a5a2b95b7490f3c39f3a11aed7c0a7335cb70d509b261ebe3c5e56f1f75ed7efd078c54e7dad2efa43f24795f61788bef1d23c769061bd90dbeabfbee68d7a11bbe67b0e3e9e27f8f6540e45d64e88cfcdf22df1be6af6846a3c1b1ef467d8b9b129cf3e7dd17998aee56a944d008d824ce47a8177f81240bfb7adf6152b7c44ace392a946c5d6cffbba65f2352471b538ce576a6c986f317228bdf14ffbf3541fd4b0aeef47d040a0395b65339cb303f6e5869331ecf5f37c05f64470aeca1aff645dbf5a878cc836119709f1a4cff278537effa907dc37a3b1e2ff3e1c62e5c75a742737acb660e9abaa7e1bbdd71aef4af958fdb84c8b985fd396ca6f8fab2df5ee2ed646041f8bf03fcf31df4b226710ca7d1195eaff70dfe461d1847ac4f232a8f37cef9ed5bae81b20c730a8238fd3f7bc59785e25f7b7809fd25af7da0cc0ee134e03e282b8721efc5de7e5a8b5867986f5998e813bef865df1830b3ff3a55ddf3ac55a1d3be736cba671ce711fe133c4bc1ec55d101bccdf5b761b4ff8415a2393cfeac0e4e76418a12056318de73e01be39ae17f03a74bfb88a7cc5497c6832eca63ca71b69fd4a3fafdb8baeec9351eb60ec9352fed1529b46380786193530d0761f7797ae309691e315637c6df99648c4342ab62c7ecbb096fdfffb96f4989f138ad75ec6397e78e55bc67e3e2fe8f36a7159bf3228ae7db197ca744c83f5e7b51ed3d59db6ef7c9d1b52e2a559afaddc1ba4b7f3c77e98951fd2b35e5f5920f7c2f2d4d77c8bda036a0e36d236e4f606a893dd3d25900f29683d8fabf97cccc57cb8759bef91b4cfd77d8f0fd46f58ebbe07688901970c7274084e03695f03d063fe1c5c0ae7466541183d355e8fe5f7c842acc5f7eab9bdc8ef01f7ff3cc1da9ae56b5bd6b1b357cda766f127f63db7cab485c886c66e9dfabb750db881af349146e3bac1ab99f537e98e3011a8bb9bf59a341f33a1d7a0fa1a1083d56dbfb4dddc161efa9b37ecaf31cea56fc22306bc0fa0d83f365a420f0ee908bdc33a6a1e91bfdfab41fdc94be09ef1fe82b1598671c227f63aa1ae8de40f82ef4a36c8af779a3a8185db72bd491c8d7f007916f3dff3ba11f2c5101f97aa01dbbe9baf47ec3da27ee336e95c700eda74d285f1fd64dc13ea6c72dbba3d069fbd8a5ae7e55cb47fe44bd87ec77c84107afc76635d73cc47cc6bfcc63494c4df76020752e0575c9fa610c316b5daec7184ddc6da741c4cfe7ac3c740dc8ae963c81c5cabf8bce403b13d7e04387e915b819cbef4e9f36f9271d7e98c5ab4efc4c797ff1d7cc5f463adf2bd876dbe37297721c6a01a413db7417affc00d35b071c34e06a80568e24b105b30eaf6c1b64f7f69795aa86994c4de61fb9a5f96aca137d3f2bbd1da45ae41c8a98dd686465cd31f947eef0f87b8ef34bec907c454b40ddd2d9f6ce0bc0db67afba1e576010f58c21325784ecbd75d06f859dbef92ce16d68b3b553eefb3877ab95e311775f81a5c0cee26a9c5b6c5fa4f63d97e6974ebfda879e9bf4715e87762f9e1c64b679cdb6f17fac182c9639127a0447733f4795fca5321b664d75593666068ffbad85f378f6b984f563e71157bba9d9231953d3ec7d409345fc88841cbb8b2adb95f16af13672debcba7f7643ed02d1fc93b8c351e962cc5dc5281936712e43640e52f9ff4dc7a27ac8bb3fa7dfd5dd0ef1c4d6786863e8fab36535d93d7151c18224f5d2bc63a728ffeaddce3163d12fbf8537e4fe8a2eafc738a93dea2c540fda57d0f75d83be3c23ab6e057357ecca04473c51a13f218f3c3e841b895b718a11eea15ecf8dbb16f72e394f3b5c971aed75ae6373ffb61dbe0b297b920c46b278cdfa67666b98b8779890ed75cf4e8d5eaf3a6e2a7f16ab9ed84eb2a50e365be2ce26fe69db1b4c993963b8c6b2e9c4b7367a5f1cbcc450e84e35f09e7c7e6fe385676228c0197eabe022fd66d0e2eb307eb4f38b8242eb6c09f56e847016c101f63d46873092fb4a65e1e2feddf5d2b58a998cd4df6c1aafbd8cfd7985fdc0394efb36afdfab3ebda06e7325da55ea7558ef5547ac4a8719efb318065d83ca16fc2e6957463593e3a101a1a7a3d2f711c4b1d107948d83c8979dde531a6dcbf3f2b905bd2d78e181bbfc04b355ae6e72d6aaff0b10f63f0cbf63b81eb107dc8cbba89bd90e701e5ef28e7be264c9616f7d6f02cef75ba4dbbcde0e75de5728d97fd9e9caba60d62fcbe373c807d3ea6cd888f8195936df1de2dac3f4b0e906b3f5e668881a4fc6c7cad47c0eb5fcb571a310b8bb92653a86b390bd83bfe9a7a25a48ff23d2fc95fb17e03eb9920b1cf26f6b065d67db0e7cc7ebf256aa92e3a8ffa99e16fa780b3089d57a537dbeda09ff0b13dc1be2af81965bea33a0fc1cecdda5bc0e779f9ba16b9b5c9eba5b07eaff92d901ff8afdff2c77e4b39de42d4eef3b842fafba3a2effe6f3bff93f769439eff89d7f7f668fbb19780db3f4fd85c85dbd87634bc97b7a5bf795be213157f3be3dfe6f975c0212ffe56a5bfe5d7295bc4795a669bf02fe619c79b19e404fdf43fb407568819a1ef719db419156c187dd3d8c3bfc7ebc36028735ce12885b3f0305b252a2f9d60df95c18d54a6a16ff03e5febd330f47b5027fdb0cd9f2ff7d9f27350b48f3bc417c5db4fca1d8ee11c7043ec2972bf4033f545c4a862df3b016090bcf30ef980e343e7a523ea303ee0218309f98c855e4a1aefefc041cd66c9e54c9c9299569b5375a9c0297055b8f9efc0cf0ad973b91d657e276a3e62aec83b209eeac5a9a818213d1a3c17985f63eb21c498fee3849c6941a30b31fd7e461ccd377304625c808f7f8dbcf3b84782fc0cc0f5db32f6a3ec89cbc7427e93c08f811d7882bc547e7628ce952fd227ee5e8cebe4f87c6c3b8575157dcab307e695ad8350e0dbd5fb01c6ce37e6e3d63a18ad2fc08791e4e3dc69e5f73bf7df430773b8f93de5181ef17bd87a9d355fa12ea634003016dba45184bc268187df47fb62b4ee511efd27e601995dab8e7e193183ff79845cd6d41f132eed63891ad9b349feef30b79fc53de46963c76bdf0ecd0dadd35e5441db1f362b85fb093c3fac4d35177c6f1475edc41a17fad772bf3659af1eb3cd3257c9f004dce7753be5756159cf9a4711e5fbdfa74d1b6fbbb5bf243e307b3b36f8e6185629b75530ceef2dcabf09fca3f443058645d8f89fb98d5ef7a316f4525571acb329ee57f29da313d635474df4bde43325de8b9f5de82b45f03ce4123c62ed769436d45a76e7d1abf40bb214fa7dcf69f3157c059e7fafa01dc41ea708e3e439f5ef7d926e5aed615097eb6aea77211778a4b565d93f93e516b98f36c8b9e1460a9f306f01a7c5ca37704d18ff711dae45fb0ce7c80971446ccd3e8b5e17c6dfe29d5d5d8f91e707d0fed3584ede8e60839f31e6833a32e52cfafada3d0588f559ee2cfe4895f404f45aba5e3b5d21ae780a78a0f6e13e9c725c7bb59c17769c721e17ebbd084f863ffa1f168b0a9e139e4398419d2c4e3395d7aff4dfd30bcddf5ad894a0d355f556a89358ee055c61742faf9ff17be5ef77d0fa0413e7e99440cd6fa434e9901f767dc0bc81cc1b7d520f95b07dcad71667066087f7f3e64d0d05b95edd15acb93daeb9129f7c3ed6eb768841b4f59c3901e00dc41e0d3dd7e88b5a1e0697b32bce5a3833b2f581faab449ee932c733b5babf13df7d8e413bf0e37c0bdf7d8c87b8fea10741de4b7eff39fd2d0d44f1fcfdd4013e9c3170d354c2955e079835a60d3b2602ea8e5013323563535d0716f846d7c0c5bddec19e9e7a6beae550357e8b86f9b7b0a7e539b5cb14e2f3b65ecf45cc9da68fd12c68338bb98a2477f22c7aca98be27e328907832ee8b48ae533d3e133c9816ec45b04eeed03cfd0bfadf43d0baeaea3a5c43b1b79e45cc487641d8b5e12ff10edbfe2644bebda1e2639a37a0aeb83f8eecb884ea08727c2b5db33401be172f21cded8f9af2ffd23ee6f5a0ae23d6e2929d1b076983e47c5516341f626df626a8b9799cc2b39cc0c4a25f52ecc10f76a44bb5c47ca2d2c128d5812a7054b35a56d0dc17b802e4b3c20a3c8bb0a710df926632eb1946aedf60dd549c0a55a8cb6784a560b60bf85069ae49eb67b4dc902d97b5ba0463e9f5139b3b898b69c339fa7601fb813df7588ba67bce369893cc901f78b244eeb1f91aebc14dd63fcd636ac40e2f9063bf16d8786384260fdba76365fb92e804ef85fc27b32cac6b392bc9a16f5bb7c4fd29fa09a5c6d51cf88c18c7e66284fec839256e9267659776e14ab713927353f699ceb0ff45c48296dcf45d76a1d4b6c17b27d88b98e0fa0f7de0c1af1da1b69ae4318ee22589865a7f7915714160efe8b75dbdffb2e5a266ec047fd350f509c1816cc9775d08334cb513c445b901e273e1fd85fe9bb587d762bb60ddd9736907c4843b3abfda48f70d1e61bfddeb9784eb157094dcf44bc2d68afc4ef52e6a2e55bc3d2ed37f34ce55a32f02b80d63f709fcea576e83c5df12bfafe2a580b4c14eb94f03e7d8acd36ddacf7ae462f8463c6986bcb27e12f555ee98f4e589c781e91a666153c5719729ac8551d8e15c330a0b6068bda4a7f258826a010be2b3e6ebc49d014e84fa7a8d3ad97813387df0f1e55863ae700be75f16204f7792415f6af291eab89d78bd474d27c05f8d02d4d6a431000da701e2d010b734827960ef35e96e0cbcfa1631f131fae0bb98f0deaad623faab3ed355a97f68d35e7830f29fbba8886f7566bab69db5cf8371177943cc49402e22c4dc4ee83ca9ba4897f8c53946fc3ddd94e022998e9de0f02ff643c5d5177b6e03cfc107ea2b6138a798fc96593329cc7d982db9f6beea97c1751010360db00b4905f360abbdd6633e45bd3b36e7c6ef554f4fe7d67dd5590a6be83856fc29c1076aed1d43aa5500b630232dcd42cf4b88bc18c04be83f5606daf91166c8b144f9da8246be3d3f74861ca81f5d3856447ee7cce993dea487fe04eaac876dc01680fe5884f6a22738c7b0d6cdd7cfbbb626847e6cca756cf4d840c52043938f08d716d3449cf451075f707ea9fc2df27209ecd658e32652cf3c235665f5a6f9f3a0773a5475cc44e0fd243657c48c5c77dceb5fe789b1db4cd943eb222fdf05fb191b8f2de0727871742eb9d702ee3535747b13c29bd03b836fff4576698afdab50af7cbd945d07fc185b0fd67dc99a633c6f86ad1b726d93bd8ef3cd4af4cd19d7e9344beb326f38f666abbe0567bb42ceb110fb0aecf61c74c288bb2baae4678dea99e1bf933d1f942364b6a275c6fd80bcab6bc6f12374d8559db5a56bb6e2fa975a4801e84666eb0bf1ae893d8eb5e4c27847160d96e21a34b5931fcdd807edd7e86dc7385d641c63f58fc24e61ffb1f7c8f79179bfd9c7a163f867da7938bee8fc6b3af61578beca31e0ccaf30cf5188efbf282661b5d82b5ab7e67ae3b6e91931f9d131252df6cde057f91a9f09bd0bdb1a871e5b619bd899183eea312cf6049fa6c4ff59c482cb9e2fdb9c5bed25e577658f0ee43b82764a9cbde21c6c91963dfead7680b95c889a8158b307aacb979edd9ca7e5ae678691a3b451d788671b0e09bba172e0867de26bc0e4cfb4fa54e0c3eea2e26fb99d937641cba3813678d5662375ae8389f82ed57b29df036b5f706679a4c195c429c46fe724d2f9c5127f0aebe70bf2f9b336f6bc90cf52f0b397704e7f616cc0de2b98b48cdeef9074259a1837e03bce4783f69d6351c8035ac711347836d3ab1afd80ff237d0fa62105dca47e3ae2d815f5ad3be25c78f2a784df6a16d6c65ff26f8c3eecd5de16e3a9da18c6780e6940911dbdfd6ce157b3fd0cdfbf7ed26b99a21ec7f84982aaf0a39d329d4463fdfb18b708dc10f958aafe0d7c300c631ebc3fb6353c4b16603f5922f09e52f36c86bc2dad93ce73f07f03073bbb1cda0cffc16b0e9fc4bdccfbb62596634a7a4f17cb981efb17bd363b6f8236cddbb1a86ff8b8414e1dad7ff40d795f9f3dd48720dcc0e5b0a33aefa08891bcc90732f6e7cd689fe4b1c524ac87169caf850f44e6f8b08748fa4b1237943610f3b059ee8bf8d4ff639c10d9d309f83a161f07e084a8ce8823f25bfb3bef1bb3e16e278f9b12dc2df23cd01a6b3dcc1ce443de18713ffe5eac01e963f93de421a0f7ced7a5e02cc8c2cf4151ffeffbdaeffe1772469ca74333a67332e28b36e6538ba9894fb14473073156d63982b836d2759918c736eda3f80cbdbed5d0c1fe20d44d0e60ffdbe6d1abeea9474fd7d164efb51fd4657dab374a01734a7aa3a375861aad966be61f888550efe638185b889aaffcf6587bae8c37149ee158c4f076abc0d5addbc02df6d073ecbafc7ec25bd9de1362ae7bb933541d0b7137d2e68a5a1df6db12c75c2af5a722f3dee32de334d5b41bd16ecbf344fc8d30837bf14e8a7740e6385a6f2affdbc2f9e8b5d11e33bc8fd0e950e78de49c479c10ff66d054d3eb122edde70a3f8997627e7fd63e83ed3f219e1bf2ed8dbf03ab6fe3ba90630838f667e749ae77ffc9d3d7aab8fe62e167b1704e48bccfccb29fa43d1767b9c89fdfd54b60e36760f79c3596fa19908f7771dfeca675939f9f63f3a784b37c6f1eaff1812d46eb761197c7fdcec7fde0d795587f783f1f8259ab29faf7807962766eb2dd419e1ef36e9483dfbc38fdc2eff45cc47a5be0f92ab789f2ecf6525823df8183f58c2368c5e335fed2a3f8df8ed7d3b58ec62b9e632bf240df7f46dc3f165a9e96c75fc77878655e89d7fd3cacebfdefc0ffaaf564b594ee7dbc456e48e6eb8a5e2fe597eda0ff20f9a815fb0ffe255c04d6b1cf444ecaac8bedc9dfbde23bc9f5a5385165fe1735cafe495e82127fa59c9780f68b3136a751f1bc1763a3f462404ba092fbb6d4d36eeee7e9376a6f13f7c0dfc24dd01b37cbc6738bfe9bb77d2d5b47f36c0039fc5368ae3167c5be0935bcfed95ea7d154e34895f9b2a563d43b14f6a745981ca7c077730e00c7a6fbc23e69feb518360d7b18e9bad11a35019395a371ec625fe4a47584b5469a977ceedf767d85c195fdfcbc96c47aa7bd33c693f29babaefecd3fac6727c51f2bffda9927f1ccc8aba5e155e5f577f58f597bae6c711f3bd333e22c9a827e939316fdc3c33c4a30e6d6f1b1dbfde062facca1c597196fd266dfe089e27a6e56bf58ee6711a753fe9d714f7a7aad23c8c266dfe0b181f38e738f68fd673e70e724cee7fe39ffc6e1a1be78479e6ebd3f0a75ac09efc0b1252f2e6a5d6e07cdd6e32c1af8e34ba16e079c507bd29060f353af35af70779de711fa84c27e2f3ad3962d4f58d08c2af0c615fc1ad5d3bbd5b5cf7ccbef31de0b65ac2279b021a7bf4d757c95b547d6ca93875a0a3a0e877a47f695dcbfe7dcedac8769831820f00347c51cd3cc73b1674ef5d77be5fb99d6c762a56211c94378233e9539560b8f5c29365df6b68431687706c518b00c6beca14e1fd37399fbad26fadd9bedb1442be198afc5b9d3dd83ef37f70e75ba6e191572b7196229f7bde84dbc77325a3fcd452e4ed65187568c56eacca3fb305aa9fb096bef700ba3958e3fedd871c059affed9bc748a1cd8ad2fe47f82bf21d75fe8c29a917daeb2972e9f6369e3230b4ff2ffd55cb5c440d873d5ec4c88971b03fffe3dd639020ff4ffe29bf1efc968dd647d610f38f6c457eef6758dd70c394ffde8047b3e8802cdfecf1bcb2bb639f27ad40ba7e5e5e75403db0f484f212b9eb5d185e554344e562317a3f9daaac701cfd0c564d9469e898feabf25afad70c6e5796d7916e179236cbdc45e10274c7aa935601d63ae478e89ac2bd46bc0cde4bf38ca56b0b1a1fcb2eba5d4d7b5a73efe2ef1dffaeb0afbf74a4ab8917f3a472ccf9c4e5aac6f6cd66ddb19a9f6c4836d1d27186bd5c8e7607fef4501f000ab731038207e230fe97719ef87dc8fc55c63e42d72bfb898d3025e6ec41292af3bf8423d252defd9b27284f0dc025b0b57f84a75fece60bd52eb10315f2c2f883a8b060e45fa0df675f3a49f6defa80b8ebcf68009071d6cb97f0147b97ec03a07e0eaff27b843a1370b3905b56fca20a6957ac01203153a5c4b81e7edfadee05a7e077965236f78f9b3fc4ee11c9698ce23dbbf5f961c6b85cd0f3f9fdc64559a0f39cf235b3e64e5a3d643712c654c8fb6cf72e6897c00f1d8cc5b8991b73854f3f5857198f2a9004b52e4023cd8b90f873f9087c7e432821a01f01515b87780ef8df6d5615c37f24dccae007708cdc72a7f27c525d4f5a89f7c95af2de8d9bbc5e7287bc4d76f65f3730cc1ee4e7e3ac6df32b0ddf9fbcaf10d0bfbfcd9db762c7d9eff093dac21537e3b3e775e3ac25f46ddf3a4f33fc525e898dfb09d63defdf554f47b5aa767e89f1cfd211f9faa19cf8bf51a2fb6e92d831d5a3946fca9fc5fd1971df9c829e7aeeee28699c72e71fee83888af3c0e646b51c465334b7ef7d9bf6acffd7fc69e8fb1672ffd08fe384fc2e6f4f217f224c0dfab61f9ec759cf0f9a59efb94cd5d7ff379d6f1b8870cf560b0c63fd8506fc9aba69b3bef20d7325f03c81368cb0dccf2f92ec67f80737f082dbecaf5583b851c5ad572edbf2dd63ee5ef98bf773a1ab459aced94c4da957b63eda005b1f6f266acbdb81e6bbb77c7da84f9e5e70e619f650f20e67795ee3668bf61eeff59e475799eee07dabca9e0d1d172788ae7bfd636b8889d5191bb3d3f57d57c41fda0fb0031bace69b0262e2d4d27ebc987f5acf7e2b19a46276d88d818342b5db007491eef8875377fc75ed153ee5f000f49d2489197a34c7b7ceee47142ad3187b3f9b23f01c67841f610bf9f8dd91179df85bd36756b0f5b3c9f9c22bf09d99ec726e81d2e000b499aa48f88695f3d01ffb1ca51acb348e740e3984fe173697bee97f2c3f27da1b800c43ba9399f429e83ecec2e8fb552e14ba5464efb0db9aad8fa728675f04fba97b4e847de8efd47dd3cf63f883515753fd3e2f96989fd53d4cc2cfa8d8c5bb19ccf55fa187fabe615e31066eb296856d0f74fca344b18e7c06cd38573d21d02ef9ce893606bcdb0b337fb29cbb489bce40cef2971f4566d22b3f72c2bda92da9ef2dd02ff03b99c2ad3ebd4de61d6e85a34a60fc8b1a5ebde61efb8ea21e8ea78356fd9b9a6ebc1ce595e57cb4c4d69e0a4203d98748bb5e421d41f1207fcaa7903f847f7bbfcbc56fb78f0d278ccfd819381e5cbf03c2dd33eb1ce8755fb04f16f530f39e4cf2f8031cb066aefa6fb106baa746f69eb25d75ffe4e81f0cf1e2147eaa4d734efe2e46a8eac473c747eee6f12779a8625e475a80afaa56cdfd87f2f311141b368b78355856bbd587b38a5fe8b51eb62f798b94db47d4136289c03c1fbb24dbcdb4dcfdec7497bdb160bdbf0f453a1072735aad2955eab633d502ba8b3234793bf448c20f433cd3db77d8517d69d210f14e36ea0e7bbe6f3e71b5c5fd8a798c66e9bb8cf809302fb6d441e80f1e959e762d6c1f1dd2017419c54c08f877c38f52a2fa13f6a97ef5be5bb282ed4b46857998deedbb8ff272be44598af5685e7a7e29e924b06f842520ffbd5e81dfca53fd0fdb52af618c41507b9439d37d08375755e62b5c6255f05f47cc073beb18fb283bd515abdf0f5df91c3fefbb0d913e88b25ac34f91bb513f907d0f31c5de65443966b4be05ae53c61ac3379625c69cb12bcb3c1e96ada63432b306c57e1bd3e9f9ddb5a81f27cb39dff81df2f9ea974cfacbb2b9c2590af66ef98bc03275d2ab03ad2771cbb83e2fb5e42d46c0a3bff1eec37c7e7852598c6f013f3708d25d8ba6a4f3f1306844bd5f16649bd66e786605cab2573b02e7061676f1578c7de08fbbe36410439b427c075aa315e9d50bf2f0bb1272418aff85cb21c216215ab7f9827ae24c4e364c7a21147adac0b311e54addf72d4dcf5f53ae365a4faf153ec21772ee4fb751f12da97f22c29f030bb7bac5fc15a986cf7d4fbd66db35846eedd521f7af08c7d503a3652e83bc93c695a57352277017644be33d82a0ff9b5df07756daf68bd67b98d879c36e050a30cf19343bdfffbc6773843c063d9c7f182f522fa46b4411c8ba8be51e545dd4faca3cafb419ea5821c53de8af8c43f5cc06c7ca30e8b78ef5afedec7fe47c5827dbb8df567b6dbb9a183799a4749a16623efb7443c95b937cbf4f704be1e7a987ed96a6a7d1b962f3fff8b3535b57e938f43d37c4e3a5aa3bfc5f3d75237d1e29330ee593636d9b00e7dab9a7ea2774bdbd36eabaeeb02b37cc699b019078f7a67d5dfa22b7180a5fef83bbe36faeb939f97ffb16ff47e30ae5599cf416e37eb377667367d189bc640007c805e0a7efa318fc7e4faa1fc1bf765c47929ea78caf661dfc1f84cd70207f9b66de62aac7b21ae99390b9dc76654c28348f5073abfbcb7dd35dd5419131b63ec5bee93b5482f156a338e1623fc07b93eecf3701840be59b73384b36c9f4943640578ee8a5bd426109ceb2adff464e3673ccdff2a3f236135282f90adab183f811f158b3e1816efd61e588dd6a7f7ec3ae1cac470cafe40e467b7bdebdfaaffc8bfa5f580be34e2e385ad927389b56f8a5fc276dac21e968f933f609c79c5ef5a6fd2c8aeb1a8e3e0439f6238d08717fd4d504b7550577032454e9af057ad4d9cdead53992e758af586ae8bcf7131e6e16be2887dc471d5439bf071663d3ec4fdc562b90cfacaa75e6afd6db009b1e784711d392c67fa453151dab0f51904ef8386163b3aa8c997f5f51e43fddb992f136c482f93eae263e2891c8dbf2cfa541bd09153b1d36eacc7caa4fb387923de978f6a4bebd1f46db9e7da7710a978637888ff0ceb7bcbd6ddb0656e9f9eaf691126f82d8b06f23d9cf2bda2e78454df5c54cc7fcddf91536537363845824d08b1a8febd1fa99d0b85e9fe16ce0cd9aff05af8ce4b0d7dc3e4635dbffe2eb2572ff72be51e44ae7527f903bd4a1ab37115c76cb2459d590d03a2e983b8e4d3d1b83b61a4f31a49eef6625f90d41668de9a8b222731e37c2aebc7b1fb3063e0deb4fcee873b27cd90117bbeacff596ac1167c863c97089fc171e286d685a91b84f85499371a52dc0cda997d5393d19ebf567363fa25eec3a2a973fdb2fa3a9d357a0d87cec7bf94431f3f1a5ae43a1f803d57aed61cd38df722a82bc83c2a6879307c7cda4cb0fe135c58ee41e65ebcc110fb1e089fc1fb2f56d46322e7a014effccff40f4d1043539d233f92cd9ffde11a181a3946ed5a5bc72f6f1f0a5a9e853cdbdfa4e569af6f59b53cd97b1e6d5a9e851ab0f3376a794a1b76177688dbfba9250eb1c6177e686a6c10673a69679967618976d69bd7b7f66546c495176f2f80f90aa3cf6bbcea37ecde38307a210dcc148b45a0bf8d9d75d7fbb722d177017c8c068616e30a319eaaefea37fab70883cdeb4b9bc706f010bc3826c629f2f2f7419c28f09d3a3aee946989daf28cd6fea1eb7a61c109d6d8ac51c493fddbf4c2c2d1f445bcf770ef0d3dd20b9d39270d6333dba4ffd50bfd23bdd0269d3793e27a0837f95ed172221c6f7629722c308d4d6b9e3fdd5de52ef8c3dcb6e29d7f851ebddcc7060d9844601359eea8b4a6b1ca528deb5462fa10d744eb13b07d21c7ee98f5b8a4815cfdee143884c76fa0f555c8615a7a1a788cec84abe88fb459217e823a8a55abdfe3bd1f0aa3247b760dff21ba2c22e8d74aff360dd504d623f8ca369dd43fc8d7fe2318e6bfa75799fbb9ffd5babc4febd287b3ab67e969fdb79d5d81c8cf848ffdd1d4e75a9709e915486ec68ef5ecd2e21df3fe72bdfed8618ee9a3065c3dc731f478c5cb225764bcfe1a0c4fa2fef5ec741f02c81179551b8f86adffd3620fd95ac944ed063082df29c6f3f44dcfde1a62916c50e4e3a27dd6849cf8e101f6a3e83de77c0ad28e4b7de248e12727615f8f5d39bf8d386b2ab31569c2a9b5f5307712b97f15d6e259e028ff145b598a85fc023cc87878ce842d749eaa167ff52ff69859f8ac14c7a18dcf8ae16bd95946bad4c148e3cc343826fe0dfc4a03964f0daefac753af6aa91502df6352e8a5fccdb1617a61a0b5e67ec07a4c9dc1637f82dc6ddf53d4a53cb31ccc8f13710549bd31ec57f4d67bd2d07c3a064d8d07479e39a331e78fe2b1b4d0fb53fe2670335c7b0769d701dff86eebabb8a6fd2cb9f0fe7a8f0ce75c78abfc6e8fcc0d3d3307b9e1ffb0efa1d7deb25a47758b38649b8f323c605e3d3f0720fe9338748b660cd6e3cf90b33fce9c27baae053901e2f245deaac96bd6173e62f31438e121403da971c3386f7ce47e50dc25a835c835cbdd571bde478ebbf76fb4f3a136c6caf61f53f05f65cc05fcd99ba8d073fb5a417c8ecef702f67789fbe563ebfd6fe92f37e795e50629761b85d82f85bd27d85fa77178ff0358b12b671f708ffd2d7c8525e7d5b0bceecf62a7875ec4b1096c1d4ea6508b771610d7f8eb0adc83faca9fec5879d2ce367d7eb937845e3761d3ccfd6fbf7e49d89fce635dc30cfbdb693116aa76984d3b0d8c3ad0357e2d8533b3f6a5abda38f11050afd1859d6b3a679c598b181eb07730e9acedf830aae559c7303074050afd352caf688d97fde80258a8c51d7d1ec968daa4f13c7b03add743e25f63f56f73cfadf35a96f46fb6ee40c7849e747cdeea3882dc5667cb751cecfa72e0c3b5ab25f520c0bd47a8333d6f01fe2a1caab1ad14780aaefa03d8cbffdff8f81f898fff3fe476550cf547b9dd4b4dc6c771ba19b4293e5e18f1714af1b1394e32f7fb7126ee2fc9894f7aef4217d7953821691fa95f53fa080dd63f2d62bc5e5cd3b574737bc3fa20550ef6485aba2217ba499ac93e14bd350388293ff37fe3be46f051437e8139e8bf4fd6df838ba1c1918dfd629df4b09bb3bc668a39ef34c3ba8157fd86fed5a05dd57587b2d4b7e97a68da89b4262d7c946b8cfdf919835c6ca3b5f5fe942ba56f40fdc48f03eac285a83134451ef0f0c36d817e0c62a2bc14f31ef38f2af0985de62b9d13ae374975cd0bf69d26c736d58e12177ba80a6b4c710b4491c29b6d491f7e13a23e25c5d78f5c83f9983a452d3b31ded267617d5853c2b97db8a021ffb9685ebdfe945faf72e81ebc57af03fafbe937e9b7efd1b7935a9be5362864fab4e88f61ff7b177bdb67597ec68bf1db19f98ed7c27a1f0dbeb936b58cb36ad6b5a3f553506d84fc9efbbe45f22a630fd20dad5b0d4be356ad67f846f49317fb8c2c7d93696e83e4daf766c815db773197ed7741f3a542bdd2924bc7ac21cd6317c6f9fc8c35c5359c2d7b9dbba1c6b4a5062778de33f0ca65635c6772fd8bd8afc2b0e89f54036d8d35dd113f455eb2b0f3a8fceed63656efdf8b597e7df50a7126f5d37d90be5232465c851aaf14fd9f047892621778543ee7b8bf687fce57c4ffc3388ccf63cca388f17f98358be7c7bcf9ba5f88b5bdaea76ddbb5c25ff7518b95d9d850d81f791e2b6c55e5f7b493c63bb237649fb51cd7ead5a69d2bf82b5097d55a0b17f389dc1f90c358408fdd687aa23a9ae4fa60181943538eb04dd6f53c597f0d8618679ec2e8d5c641fa6ef4bc0b1e96527c12ae9b475e6fe13ef079ded4751942e13389313f96f5df327d2077b622bc5a78a959b522984e35f561f9e901f90df10c8b4ef9fd20df30133ac0d2af32c6e18cdca00eda19e4069c359680dfdc8d541e1375ae111790d6ede324f8484fb86f47c0ab135da25fb7d7f32dedffd7e2b95baafdff6a68ffc7438aefc49e1e93b631d4a017edb5553b7926b84fc53bbc62ee1b72639bad3de7e6b95ff0ef31e8405c4e4efe0e61f349ea07147cda9ad00a5578d00bf27f718e920ff730205d091ea760ad5b7c1ff48078cbe3effa640c7ba6345b962db47fce4d4e13e1c726ca7f1db82becf9ee23df75edd6fc6d5fb5bdb66ed8bf6dfbdbdf66da42e64b6e731f01303a6907b4eea24ae2d0beea4d425d97eb62d62390bf1478b877e81ffbafd8233015fb05786704af09e202a53f4bbcdef3f710fc835dbeb790e3a1b3c5786fa47cae00b98853610f4c8c94ba0fd5ebf3f34afa78fb85a191c874f33cc16925340ede504f63eee3baf8fa2beb02be73f671735decee5b17e7bfb2e6c538ce7c8c6fbc107bdbd213f34f9c00f853993d263f709ce53e31f4f8a7625e14e78df4992ba8d7e655b201e6ad6b6c5d3c9d8b7edcde275f5e603a955deb3ae883474db5861e8957193906e45c9a3ccabf7b7fa5ef56c1354a7bfa06e71372d24db1b603fac86cdecaf205f358cfcf51ed8063b3cfdf301ff3b84a7f933d13f837c645ab71cc268d750b73e31c6bef241a3768d27a35f340c4a535f9593578ef1003c3df89e795171de463d9458a63267d27fe3d8bfe835fd61f449c919c0b50722b2c22a8a50c1ec0c62f264b3347a76983092e1a9b3f63609c8d5e061a8f787b1c6878f6f591f5b18b7f8f4a79147f307e70ceab30405e0c4b2d82fbab84df823c36d97d7a47f5cd0b91d765dc3ebee016d7fbdcc4d83e7e0f0a739aeee74dd48f74fbaa0730f09193fccaf3dcdd14e2aa616d08b5e700fc3e2b36b90c23cb7c66e2a9f3a86e50ec0760bffb465c6c4679e4c5248f4155dfdb66b033f44b203ffe6cd6954af78e788fbe0b73f2ecfe5439a957c62769d14f5bdde8338bc67ef4cbbef7d8373e9006cdba0f75219127907c279f039ddbfa00f601398daeed2dd4a239434c0136519ef3c88153b2d7e5b9b2fbddb1493dacf15666ce93ced93a86ef5dc6fafe02ece2d5bd207bc2643de962d4934e73d4fc72bfa17fb22734ea79ed44dd73b4b4f74ac555e434ed23c7cfda625b3f2f94ab901c7c89035a998467929cdc69e3268e261b9cc05e24748e5dd2269e6332a737ea360bfd1c9a8e2d6917700efa598c1c215f70cea779ac73857f71d6405e966c863601f6bfc442a5c45703f7f7f2b3d75c9be1f0007c5255ecb7773fafdf735843ada4ebf74c5de2cdd99e89a748da49955be1768bb42e87a74bee5b04aba71de1f01fd10798fb7426693e808dbb72f28a7597990f7c3ae989fcd2a9437ea9c4bba39617cb69526f22cbe97b6be48998ad5eb573e4fe7904fdc101f6b3ce9ac6bd36d7efd5038e14e0886ac31c4547ea2b953c5777cf197e07d611bdc5ea89385787c57d8118dc8b4d1fee16cf74a9163c60018bb6888d81fe2ce078fe1b310cec6f69fb80bcc057b526b2f03f85bd3a799c016e6b6ee17b975cb8722e5e2fc69e8cd7b88fe6b6f5c57ca9b05e83b862f3faab30574e3e5750b351fef411f5410dbdf40038ea46adb34dafe1d9011eaab16d5d94f1ca67a9a39d0d620f62bf27bf1ee229e8ab40ad07e895a1da9af95ef21c7b73601fa793c74ec1064c9a595fef83d2cfa5765abfdd7778f0fb6575edd1aacc17c35a8fdd1733f8250c9b441a26b6f593784933003babcd670ae3e24f2bc5dcaef47564dcdc2fd8de5e7eee6b9a5b9f15e3cc2d60aefefa3737aba4e7defd5cac8a366cc6b06a669e2aa53c15b7fb7fb5b6bf4b1de0badf67badfe394c645b6394bdfd7b77b44755e0beb9e475e0bbdb6efa6a8bbfefbf31d349f8c7c8b18c761c939cb7349762d03e0e606bd2ecc652daf9edd787dec38c457217eff1d827d627feb4d0645fb38b4718a6e8fb7b85fee5ea7dabb493cd5ddef16336e6a958fb7dfd7fce6cad9ecf7903647d4794d5bba336de9fc776d69b606acc9f919f397b45ea6fe96f46d74cea3aaa17f22ea3fc13ab0d898ab7812ecaf9f9176b4a83798f729cb1525902b8a9753f5ed7efff297712547f455bda5cea1141fa67a3e32d0f83b66eda76b7850810f99fa2dd43a943d78cb33613dd6b2afbe99809dc03158c4356bafd1106ba26718eb0af2e7b2eb834d0af1a8b5ffab4c1bf65a5e2c200c92c4968978307dec4f96f5177fdae6792dc13b2ec634418e942b792097f2d9123ba7b8122afd5f35acb98b35313272ff51f34a1fdb5af46b97f4f91d8107edd9f9b4d5448f43bdeff951ebbf779ada39a1debb82b54a6fbbd7f578d7db39e687c5df583fb3ecc9a5bd30b8774f517c370a3da867f604b7b0ac23e0b9393c6498dfd1fa3fc6bfe8fb644c99af278b7639ad3327c2ba0ac6456c2fdcc49f6fd65f8845509ae541bcb5d6ea202f8a75b451cb5e47db84df709ef6759fa0a3e1d3659fe14d7c7adac179c13e8c3e684fc45483505c42997e06fcf05e6ff6ff96724eff46ffafec351e15f08f45cef702d676b4449e1ca5ef5bb1e53d54dc8839f6106ba7abdda289b97b313e363c7e2af8b5d973b2f07c07aeab3a473dfa10ebaee16659f4ad9ca6be1f59cf520cb6cd121b846dbdd6ffecd5d0d75c60ff93ed7d5a15c471f9a10543745035865615799026cb6f883b661edaa319e4cde7f8bbe9be0f38caf8dcb0de9bf73679ee16b15b36edf77869ea7b28ee7ad46657eb77793634871fa64e5298fb17712e8bb16dc07d1516e73f653c273dd0b7984cfbcab722ce3d2b47788db0ed5afdfd8c3cb7b4ff0e5e50d469f99cad24ae721e6febcfb95fa3fc3d383b216e5e34318f69f6825d306f0cd8390ff7bc93ffcd82677c401e52388b901b89ddcf5b56f13cf4d72de8d1d638b79017f47ace3dd820cfb4e6b32f1ac8696df4bd53de3cf8c0fac62584bc39f08e333b38f731c639e21ef0d223e069b57a1afa624f7eea9838239e33ba92aff1aa57c74cbe8fe432b4be8f776e69ef94b1735fc6025863d36b4fc4c364fa03acff0573e1e9fb1472b402e329351143b293a24e2d737721f6ac2588130bc66f9a2fa9ebbcd97dc96093fb92ea0c55b9ef40f8972cf7edd5cec8ff1e53de08fd3c79e6713de1ffc7de9f2d278e7cd1e2f02b09091cc565311b5be2c72009730712616c3060c00c7afa2f94997bc8540abbaabbcf395fc4ffaaa30b6bca61e71ed65e4bbcef50ada9278fce852207fce61210868fe5094c8d5f314ed2777c47bdc56be0603f903e4ef29d1cbab7ef41af01e6c5f05ba26d4a1cf13216129c813c8f487685c5e336bcf121f78f40636a30c1395d63cf84f3626a500147f00a72b5096089b3d995b444c47821176210a3b641867e5e16a19f974c1b362da6ff2d04c69bec8eb075a1e57aaf8135682d66eae2f5b742be00732ae91761846ba07b04b9e529fa589bd7c27353f1dc02a7c7ff52e3b962dee1b9ecfa629e42ead0326d1a8e29b4ae31f041a9077e83e79bdc978c6bd5fa7dd04bd2413b83b1f0fbdd6b9fd5597f59925609ea39e2bbba95337290aa5e9725c411b713faa36cbf8a38c2c67b423e36f2975b3825cb710480db8c909352f1104efa888734cf416dcd540853e54f37168c74715ea0ce3d98e21ed83f81e6db74f651bc87c0748bfd1fc49673d7ddd33c29ac33d61ee4fc54966b9c0f3e2e9727c44c1b3584829e64f9fad234b0bc17e423f51dd012edb4104f897d44a34cfb3bc90d0a7506ac19046ebd79efda34066e84974371dd4467ad6f84fbbdd3993166c5bc91657d836d3eb2f56df5957eb0460afd8f3fdc4f72cc405727fb7d811aa73f697408eb077b6dffc5fa2b91cf26a17af6196a168b1ef2eed7fcb6afe9103f67d863745842dcceecd6dc237bad7ce09a656c68cd668187da47a4bbe300b7c01362ef92ca4fb17769b34e7d24f0feb183b574664f4af077bfdc97371d57fb32e63555bf82f350aca9f23c6706e7deb29b62ec6ffa092cde73e67806a67fa2f39725c439fe42f984fea1a44f1e30e4767dc0f711e60c969d573d3eecbceabc2adb4db1ff87e2552f9f33d91378a9122e4afcc678a2841f2bf2a78b35e27d2eb8b7dbaa0e90895c28ef2bbbbddceef176899eb153b24ea08e2bf5dcb67ddd37f452f40de7bd06d88c5afeeefa5923e6f77f743e8a18c59b832e9de040a5ef163e498439d44bf9d92eee3bd6c62cffde4af1da6fb87b04cf82b46b8947fc1e8def71c880e1867ae787ff83bc95ead3795f611e66d494f31808edbdb2bcd5daa1bcd5a604ff9d621d28865e71585f2e6265ded45c3ca19de49c20468fe3f8cd3caf746cadf4c576055badfe6e087f479c36b2961684ba16e5327ce55c98d2a6b7fa85fe8a5905b8b03be4f78bf8a9423a3193847aaf72dfb1d56f0ec3f66df8b17fa07879df79ee052dd1f383b1f28a6265ce6b0c5a9d188b3be579e86c75c07e77ac671d45eed45fe76769bfb9dc1afe16e967cb5a20fa36c72be58a843e01d43f05df87ba86e7271b3a36b5831a35da586e5fce65f8533696d739f5f7943c436265fea567183ed3e83cba0106486afeabbf93e7753e863c5fe1eddf7f80e5f230c7d59b41aec019808e19c6fd15ddaf41ae8fd7eaa8a9d62b6acd9f4e3ef9d7e2dd96a8ed13ed07a1ea1d8d77c8bbff94ada057ee8cda7ff1b186bc3ead0d5cbfcdaf97e77780dce38b4907ed99e2a486debe33e23462a1a922fd8b77bcdf81dee782ef339f6cda2ac7fb39001ef4f1b10a1c4ccfd9eaeef5b36c033c0a19d616bdf695e92fea7560e0d518ffbae8ef20d615bd831c131ecb7d8dc1efcc1ac0bd2034d0e4daf855d5de49d62dd93b091e5ec98dd0ea600c9dcf9f912f81b3e98fc695e74551cbeddb6f4ccc6ffcfca36fd4f8acf6fdc2fbca7994fbd098c7bf7b5f31270ad72ae3e839d580dd21ead1685a43324f45da95fabec29e0486a9515c1273ac67ee3f1133e95e7b36ad6be4e6917188b8cf624a7c2cc8f13f197a3a5e657308d5593c988eb43834a2bc15d48f6af3f5cfdf09f3b9a4af5b29daa0a8e6af5fb0d78cfb9dc84f24f8a8591e37c6fce74df7118fb5b9d21c0e616ea357edfc9a3b856babc3f7e036e235cdb8d2cc6d71fefda0d1b670a2036a51b0b99e4f216f08f14be341af57daf0408a3f0beea77283c4c9ac62850cfb045de4a58957a0f3e48d313737823e79237f0dfd51d109fa9a7ce075722b98a7653ab087059d078c8782d76d23ad4f527d1bd64c895342ee8bf17458250eb4a0fbdc3db5443ec845cd4675deac35ec1de18f744e003fb75de0d340ccb1857eaf84b43d814ba55d051f22b77fc0f35e5da006dcab4bb9a6fe6db9d631d9698bf29e7e610e44be8ff3199d10c33bdd23e7ba9e3f91ef99225fe4e960f4a1bac877e7adaf4c7fc6c577be1df37716f5deb4b7c73cb35c9b43ecd55ab81b5d5790edd9343f47a1ef7bdbff82353bcb52cad96d670fd44b29ebe0f918c8f74ecdf7bee17bbbbfd8f9d73fe27bbb6b0f381096f8de9bf3ccc6670031e9bb4f719dd7e996f019883153b9e3cce2e75ce6cc0755fead877d66455eefb37e2eca5adeb353e49efad61e83b6c5fab5603b92fc9cb06845a871111a15062643de1b340e5ce70a798dc53b9ee9877c2c9e727b3a3e3597ef5857d0f45aff06bf924ef71d1bb68dceea6fb1cbdc5f94e3425a902ccf7b3a8e6e163e54c00b3989562f576b93746ce2d78be17f9f03b506f37dc7b137838eb4efcb76ffc8ea213dc5b1f5226389c06afb176ea5f7dc9ae573efea58affa91382b852f8ffdcdc1bae82fc8d8a19463fa56b60e0af846aca3ca9a6efe0ebce7066a0271f3ce9cdf8befcafacd2621725297e4c9a9cf48f0348b7ef82af589fadc5fce9e9da1564f66f734fa0bb59c74e5a75cdbdfbf437f97b45fb47760f754fdc491b5661cc4b8474817ecfbf770598fb1d2ffe37dd9547b9573d6be0c4bd640ba0e2ec63a7e1ef2bd30ed08df265f47616cf5c7842e90454fe14c9c182fa833e67bc8b1734981877522741dd559ab718ac31a74cd350df9a4147957e00c5ced473267352959bf87a179ed74d54cb67d2dcfb008fb5f9217b35d51feef7964fffe2c0913d03157f1eedeec6d977e29f5427f2e94df3999da7a9e95bdcc661ef4a8d8b82793edec3ef7e40772a26e8c9a8bcc87d9f3075f01f2499f7aa0a301180e3eef4f0eef89e0f9df5fa8252a6d15e499578cf30fefe3e5fe3c696814bf73f166f8f388c3410d2c2d2e4d5bfffdd966b7296bc915f99331d76d18d48490a74fe30bb37e439df953bcc79674cc7e8efbdc646aef5787ef9d8a2db611fbdb1a8f85828fd4a6010bf39796c56371ea1a39fbdde2a7f1185d5b1dbea7d677fe493c96645aec5decc38a7787621f16c3234c461523a6acfcd539fa43ec6ff0b147ecef721bd96c16f771f099aade7789de341c2b700997e97598fe98c5cffd55237e29c60f675fb35f73c2bfb0f74c5cac0fdff1c58c5abb4318dc129d6cb5e706bd8ece87c734a216e24cc5f95776757fa76f9dcd3dd40d5aa4cfaae25bff4ffad0d35660d77765bc65cf15b50ebc06e34fbacf59569e6751bddd10e3f7a2266131560f43ccef20277a4635c75a8df43b8f06165bcc570df431fdb60f58b061c19f9faed8de573c696f9639f9589d417b6c20faca4cdfe127b55a55136a17f77f59cf839f6dda3a3e3b3d054e885a12ea9aeb92d66641bfd2ca230cb17e2927818c1d51672fbe46a0f10d3a8e417705f5dc6abe37480f4be2aad93b19bdb8a59c903793332c5d1f39b785f4d5d72f65fd5ba8218e6b037866e35a5c18ffec313f87ce022beae8e38e5ccb99e81596dcd26d07ceafdc1fd23907b3c0c89ffd1ffe1637f188334dbd9337fbbffb4e5ebbf84e59f47ff99d7ccb3ba5ff97e78ef24bc09bf87f793f1fc47e66b184ccd7d93196101bc1b3fe84337a4998fe2370242e362fe0d3ecb01774927658ce4271b2ee4b3959b1df619a7649f7a0d6819ad97c5dd46e4fbc197289004648e679a4df8473c2eb96df6356ecd8930fc05724428b8b9fe3b191ab5031ad5c1f8adf88e21de97781ed453e62e04440ec12e5fe06bd3dd57c3faa07a3ae92c7588ad703b937bc04eae9f11a7bc98113f289facfcdb54ab5828cf43269ec081b34272cd7ed05b8c727a336713cca7a7442eb5a3e2b465ec40ae599b57ad47911a2b629e4d1cf21e0cfe9371e871c66900775f7a82d93bab83f1ccac3479883665ac7a8d1a6f02a883d4e33d265030de3c0ad41bcfdd7f75d4e36b076bb85f1f0fafba1a955a87cd8c481bee6760db1d65e07f1843ef1df483bf076fa09d6ba96af095ca3cade81feb19fbf2bf8f58c9b2ae940aff6c5157947a8bf65ab0af810746d9a454dfb37c95a0eebcf8a8f173dff17f401b32ccfc9e1e58efd2fd6c424478ccc8521973b8d03d3b2421e78c127c87c21ba2ecc9fad703a3c37b9ae12e6b38e1ca3f97e966756673bd27da72bae596fc730685c3be80a5ad0c851bb9ccce0de626fc9330e394305ce42f2055cafa86b2a7a6ac45e957b9fbe8361b5ebae8f1cd309eaff04196a2cb803c8613a55157bc25a9c5d4725eb95789b234f8c85e8fd4970ed0e5a1bdec72cf360ef8d3b67178bd3b83eb3c859487f5ce6b27ed590d34f6891c8dfb8dd038cf1c2094b3904649cf81be75cc478aa27837a55c956d2b3824fc244344063e3409c0abf0f98b3c1770fc4bba8f1d3b555be9b13b786f39d0a3e6be96bbcc0badf76ba769be413efbf7c86c47167b86f3da6e9a9fa378cf9b169f03bba4e92a5e75f7ebb0bfc1682d3aad8e73349a8c793f65536d1b0bb922774d2d4f9ea090b3b34f1e70d8d13886ac1d29ebe03ee4871567aaf97d1b8a4d7325b3d30cc98372cc1e30461118f53781736964f844b613813bda754b371e323dd97ae357b9f392f03f1cdfcabef24c6e7b20c87da39e44f37a5e710e723fce1fb1875d46335df57e05325a0113549d1d79bdd4e885d90f6d8bf7c8f9f48755d8c52fb106ceed98441fb427c4e802510bebbd4c6cff7bcae8f7454797cda3ff979c4fd1eea8932be9de9830d62c0c76e44ce9de3ef8249b98d4de9cc6e01376d129afa5fda3bf25eeab2bd51617be38cdc0ff1f1c03563e4dc24ff57e72652f528dffb89cd0c022d86643942cd6fdf6e9ac47fbf474da5c5f8d4d57c9b6cfdedb7ffc5fc303cd0c9d257a7afa194ada1b9d0c015cf7ad76d7bc39e7b9ccc5063876cfbf5d156cfc73c609c7ad877e75e9bc8abb4c63eea0ada19ec05299f1bd45722cd0cab9de0dfe96711c42e2ef681c7a9afae3b1bda0a376b6cf6de6816eaacf2fc92e763b641be5b8975fff5dfae73bdc64498a56974d6b4f48d78cfb62762f00b4af744709ebcf15c771d794df531ea376dda6249be0f48b752f18f75fe9ff633928ed2a0bc9d1eb06ee9560c7eacc6c0b6f682f623faf452675afccd6540180be93f47baddf66f14cff17c35eac7116fe536c03e960d70f87bcf4ef9b9ccefb7d852fe47f8ecd3608bdc713026f06e59fb52d0022ff8ff6135708698070f366bfdbbb27fcfa71c344f6daed3f7e7f31e569f508f88b4f316b90d57f845ea090e7610ab2f3fea05cd77b637a41fd234f7d8a88ff3b546fe2cad7706b91da047db4d4117a82afc7f718eae0fa0db03bd607e3bb4c53b855899c5683486bda063f0a05bc63c7409ab2838eea56f11ee6cf60735eb16d30d69ea624e15ece50a6caeb304fe9aac1383ee8d5fd09284736e3534f295b28ed3fec9d8fdd73ec8eb01fa0e96ef9bcedfd869b6a6aba891e6524d6d9e218710f0a764a53e815b1fa8b5b0366d5ada5e0366de256e65ce1f3fa23c06e237c9362cf3785ee55f739f53e542157fefb7713d1bcb13e6d326b73ff0c7e25f67ec1f412d20fabe80ec89c0b95af8eaae8312ed18762e5c851d15fedeeb017203dfadfbe0e35abc3e8ba8a79178b511a3f1836faf8690ff6d9b7be8f400b5da457cea81efa1ed0fa153a3f81925d7916d2ecf4fce8ba6aff6fcffaff6baa2f2f393b43467b570aaca2e14c6d381be915936eb7e379ea21e631fcf6b3e9e847d51b9fff04fedb54df7d41c0fa18729fda9296a19e9b909d279aa081e38d36691aee5d71235673bc0cdbb5dac09cf35886bc53dd7833eb2f448e7e66af8bd1fc9ec4e16218f3b60b7d338054e9c8701e12b0f984b5579381cd73faba9c835d48bc00f7211af3749af235b8cf7b17922be178665139869ce459202de244b48733ef721a1ce598d084b01b9fdbd6f704a26cdf2dc3ef29f66e2ec967943e407fb7d30b5e628669fe5df2631ff6b5faea148f59e3a47552bab7fd1f7777a14e3bee2d8437f7a723b41eda0968006609c6605cd4bb77a2dcde96bdade7a9ede7f3ba9feacd4f181f7927dc37ca3be21de7f8ef83584dd917b4af8d5623d9f190e5cdad5b793ae0fc8de07cff8f817e1643cecc9409d1f53bf50d7e9606b2bde4fb49aa7716ff12e3c97cd72e08bdc266b1c12bb9aeeb7852c6f813a49e7dca792be78bd86785be4ee3675eb24860afa64b4f9ffa822571cbd0bdb9b802f6de29a00bea81bf2d9fcf15ee91f62dcabc18fea60051e0d7c661d7be3e4df73bfcfa7f529eb762d0d97ede85ca38137d2756427bfd11ea8f34cf8199c2f2acd565dddd77aad126780e01ebda5d07fe2d6b29feab6cd40476c1b7cabdb3633f82588374cd8d207764641dd5ee536706f7e8680238bc0b7af8d81a7778e3c00349e8b8daa63c595b1798f44e8eb29cefc90fa77e4da9f7d95f04848db2338e0e4b983f713daf1b6fe7f59a35c60df6103def988baf9064fadfcb66b1fb5e3583e49f644aa1c9df2c59e51ef2408344d21c1cf20ee5181dce1732f6a0abced479dfc208fb4db555d13f3db41bce9eabc8dab7929dfb0783789ab147d6892537e2daf4fd47add04c897d57efc0107a59ea7c7ba8371eece3de2b9e5b5e479abd3d4f2a8d90af29595640d5a35e115f857488ba18e3a964965a79d8f693c2cebbba27bbab507c0cae3dfe37b5bc6609aceb531f03a6b033b6a7032b167792f17c252b23aef74e66b183b6fef17df53f02ac89a60d42e7c7b2a384a359e75fd2c058e032fba818d177a3796b948d717adb771b9be14afdd22c6b3e4fbc418b96171ed1e0436593e4fdb4f724da70f9675ea52ed78362ecc499c3aa3a6d2b7e47620dbdc4618f7edd1cf9e34cd778a0ee2bc90b643fa5677ce0b7aaf5fb524049cd8097062a8f1c2ee7f5eb61107a3f56fa5a84d61cc8bac09d8c6ef360f1f8dbe198d033bd2f6a067ea03301f8069c69a634ddcebc635b2766272e7bb333327cabe678ebdbd45cd00e08f66e78ad2bfeff7687d21479ef4b9b6f89b873e2570fdd275c2dfe498d5255e77bc24eb44e393000e9625fa10369d15c0e4a1eee00dde7754bcde4d9c84f5a7a8186f6de367823128ce4b907f0fe8f47dec6ea55cbc5a9cadf5517fce43e0201bdd46b7cb45f4ebb4fb9fc6bbf09a32cf6949fb4c1c8c77c6fce8e6bf019fd9a2d58777c13c7a326d20075ce224b47ff1bd1e75ce84f77e91b3ce236e9e89c2b0a4ed1dd572007f0ffa76eeee36a2bddbd335cb6637c24de06fd2d780ba8ab24f7e7bd4184e1ae017a26fcf74f3d93b46b791cee5ea24588fc238fddedf7f3da166fb09f907f2b984bc81e43435e6643abbe8da1312c3a1e23d35f61be4b74863d5673049cf68df3c1c876c8efce875a5a7135d62acd5a146073d7f12ec712f7c00ff3fbdff327cc45cc1723bea96f3e9d9ef891a3d567d9f14c7d077b146fa009c6973d25aaf40effab307f54dc523009cbaa4495761636b5b2b3aa793b7e27e39ed5da869e17ad630b08cd340cf8d2db23ef4403963862d917352bd8ddeec380933f736dff69b5a0fdc4dbbceac8d4bcc1bf65bc1dc336eeb31fd0df71574ccf3fe8de394143e738c797ad9f397e9bd6ba95d9389d5ecd9dfc8f8fc03defd05716522a6906758867b077311dcf66c1ce0aed463883ac5a4b97d9331df53e1faf129637dd72a9771b97d573b6067e739b7c3727d8d9e58cfe396304b5acd85e660d278d6b81f62ae0b28ce2ab2fdecac5a34312f4e785f6f74803c75a25f23b5eef37856f1e3c1d9b4ccf780f2837c0b5f24ed91886c1ff739d0ce44478a8d08ab693f2b4ef97ca196383f2b926fce8a509d154318875e50f415b235e630d27cef51ad3a1b15bebb3e05cdf584f8d7f179e46fb0fb57206ee867455b12b9e4a7df3fe396dbbe9e27990afe0ac30789bcb49d409cafeaacfd6ff2f611e38944fe911b681604dbd4ca01b368a5edc2fa44fefb3a71ebc7952bf44e2438febadf10e0bc27d52570353b7a4e6efecee30fd00c65f699ceb0da1c780bb34e713edcd58ae5026bf9372db1bf715f2dfa0d6c8edc3463fed40ed740b6ba319b50c3bfcf1a37a805f853cbdaf0f66473041724f05e0637cbda7bd0623a55df9c80ad03fbe7be224f9fb063324f74b5ad33e0939c157dd9524d697956363eac76d1aa5fb2f9d0e3950dfab1326f11de6c7a1f662e92388c52aa594c4717b41d6bc0260790e7143d0252ef6a76d5f55c36860e2ffa0e5fa9a3eb4e2419f28a3a038a59e4338103c89b01ae8afafe54ef7580da2574163cb91be404402d298b3e44029c4ab7d303f46123ff0bf2e72537e8474e9d2af4940f602f0c556f5c52f96dd48ef06f7e10f78435c83bcdb7a87d8aeff94d3e5270811acf2ccb470a0e46edfbe2d316d63af0ebd8632adebbc86c5a885858430345e10ad4efc96627ec5b5ad95712c4218ca65adedadb731b6ee4ad4fd80be5e767a7e24114f698d5c49fc91eebb1809adf85e08490766e06b9af165d93df0ff5556f463fabe431b6bc637db75c439df588e706bd67b44ddb431b370771a336efe4688093b7d5d1f3fc5984ef12885cb4c43d4adb986654530ab0562df74a037aaf44dd5461ae325d3f737383bcaf3f3ec1d9b0cdc787f85225570062425ce1fb712e9b4ffc2d9b65e817aa7e39cc7b38d86bea90566ed42beab171dfef252b6a021e85bd943c57b507c0efcc5cd0304dbf466afc975de8398abe88f7e1b1a27a5dd5b34ec0055bc375310d2aa31bf5be6a5a033df4e9c438816f01b990c114d743250dcd5c867ff59d6febd5505f29c435e9a40ff521a13b2af753405c7159dab6f91942b7ccc41e4df78c9742f6798376f8dc4dc1773fce400b315e9f511308b0e263d0885b29cdece8dde87be67665add90cc891506fdb316807b92fd30a26e89356b966c86002fe525411febff8fe0ee0473f9193511f5be43f62581276fdac066b2870204eee38880bd3b81b5e91a37e81b5be86aa43fc428daad4ad299f41d505e29a433e16d4b87c8fb45d84fe90b17ec25b0a9a7c88050a8a76cf15bebdeac37c84dac816e6926adab43767c063fe06314d74cec74e9c5fdebe05e778085c95584fe2f6367594c6dffb42cc3fd698958d83ef94f322c74fe03a8adfe93c6a7964832f53f976235893bbc0d2ef49b6b13304ad15e65b66f0ae03ccf9eb766e8efbfa28729012bfd978a35ed6ca5bc14e4c44cf1ed6e42d5aad9f41bb18e391adee7c2d4157c705ac78e42d606dde748c5b6ad1a5597c2007de718cf929d4c4aa0c6f14dbab7346f9a994479a43bc93452d564be435896b0af8ae69ba1bddae59fecd89d3af8a3d27fe7db3533e86eadbaa7c0d8b36b126d6b4f493544f45f05dcff5c947edc7d7c348d3bedd7809e6ec1fcf965ec20cf304606f7a981ba03ac47488fce480354da3df10cffcafe8332799e2028333e498ac5173e332b4d98ef8b56ac1725ef27790fbae4f7b169e3daefbb0e642a815887d05f90ecadde8f101f09310b7e8225b750b6787bb8ab0cf907a5d38ef4b758e398857aca906ebaa3a4b5f1c8c57609da0f648bf4a7c697c1c84ff27732619f6656629708e4d7c9cc7a0979f67d25f0d408f3b1b6d611c97d38eaaf97444ad4ee6ca363eac6bc4f875db6a9e45cc67aec9bfd45a0a0b35ae99b0ed80ebe9bbf09dfefa179c155bb217fd5bbac6f34acf21b9c2b6ea7f27c714728597fc5cc6fea5edaca7616dd41e9f4f67bda2cd7aac991c2e1a17e63bea85ec190e98db213526c34cd705dd9ca0d6b46cd6b9ef526ef3bcfe00fc9294d61fb79fc740e7f594fe89a3b816bdd0012e2a9ee7490436c5d667f372b1e576e56fd113f0f5d13ee7dade8fe7d4b1f4a740fccafce2b41574cad6c83c5f771223e117e76656d1e3b480ceba528e0cf2b9545dfcdd5cff83ceae88758b6b4dbdf757e5a440df878df70cfae8a623e8c9454d95855bb1d471ace7fca560fbb372dbcff6d9c587b8ebf60b6d83dfc533ee0c67dc7c03cfef1f9027331b754acfc2e9cab9773fc2d8d4eede6f0ef79b8c2685391d9fde8b1813a396c1f068693e2625bee39317802f7d5c0207e684302b5a6ed2714ccc9ad5e74ddc3ae17d9da1cdef38a7a0edc7f6cf721b81df518d9a853dfe89ef87e727f065620fdc15ecf87c5c87feef276593bf104f3e157def52471fe30c1d7b2fcf8557ecbb62b6fd94db4e4b8ee433050e4b19130bbf1875a7e9fa737ebdc997a8b43a2b7aec2d7cddaec547bccb9995bccfe0acbd06a463ee7ca713fee4829609d8e348cf097aaf8ece0fadc50c5b3ab71987c4b87e66fc7b2a8e4f954696acdbc95c6023d63077c03d883191a13b469c76598abdf7ab3deebdf611e21c998b10f186b0cd8750c52a12dfc16a877abf403509cb34b049df23f122ec5157f59b0af1b7a530ce8704ea3b80bb8baf0ca3a370b9c41f2bf9975dab169b8b67c9f8f474578bcd0bf05d16dd15e2c19788edbf22cf801a9b8aaeddbd36f79771f6616df630735ef83d65ceacfd6ad670e9efbc868738fa106adf2bc4c827bdb463e38a48c2d77bbae537c0e9a4159d8b37754f98c79d3bfa6f83086cd12afe768d010f492fea16bee976c29a2dec9365f70af625bbbb2e443d569ce1b727f24fbce1dd6b6a63c8090764bb59ee7a063627cb6d8ec133f760fa0196bc51a18fcadceb8b1e62d7ae802bb6fd5d30051eac94e918270e72f5e0bb86b7e51a3160c5fcdd645da578ad588fbdf37eb7d90f6c57baed8046d7166cc9b2376b6ab572d476ad23c7e4384e3f2de35ec9c79db42e64beeefffcb8cb7a31d3d576214fb7004ce19db9527a6196b98abc94b05dc5fcf4745421cd1058bfc13181fc74ec202680cd7f1578ac60bdbf8c6dd8d6a89284c382cd21ae7ceb58e9fccac8056270d5c177c6d7b6d6cb3859bbe05ff86f88618058e58bea91f4ec270fb1146053bd27aab1639fc61cfcc2e9237208d3ba3b9d10fb4fcffd827ccae20d3598aa29ea39d6fc827d921c8216fb5eda1b46b805eb78d6055e45c5e088276073fdf9e4008661f4c8df518e27c5ffc4af135da16f503cc7d0dd32efadcedca0b82676077c1fe22c1771afc29becb0af52e7be3e43be5c3e4bf6fc10f7b088c1557d0df6968ef50d8476a7f55c54676d54c2e3b9becd0ab509fbf982eb25a6baf237e7ca0ef9dcedeb13d7d36072ff6c434c8f5b432dd5348f61cc319e349a361dfdc5a463c49b694f1b13b75a2d9e7bd26ef01a00f2a3c78e336a629d0ef00fb7654879fe54e426ef8fa78cdf28ce5b081e3dc0e7c399dccfe377d00d70d2f6dd31ed40bf85cd3670bb247df4fe06726c01eaf6d41e1097b5dd30cdcf91737fde6b63356ea2d7438e53f50a756791fb36e76bba718d9a6e256817b1a98ca7cd6a1f8a366f53b5e192eeaf5787e5878997faee7acc920cfae9ac7bfe6edf84c6b1fb8d2f51b7d92337c17e70d46e275b67f50fc28bfdfcac573196bcb75e5cebf949df6bc3a54fd6ce3d3cdbff5bfe53e8a46b536395e7765eb2d19b9d935d7e2bee2743a786e237bf17010fc103ea55433da305b9e0b6e6afa13e893506213cb2a94bc278cc0b5a2118b359fd30d98faff00c99dd0fd37b52fd0c3840cb6274e9b33c21e795e0e795df3d5de99cb3d3c617e00c647d1df2d1a4312ae758acdd2d69c6d15919e4efca75d3dcd74a2986deb3ec77e9bb001eb15938efe5ef8a637f55b46d9355fe2e3a7fb1bbab7ccf2d51e8952f3f97323cc7995ff293ef08cbf785d5effe0607368db09f965d5386edc9e6b0b6d4f8453aeeeb1810df1be3e091b889d4c8113e8b7c6219f73ee7d4dc7bc39b2d2f94dce688313c0d01eb277a63357d56becfd312fd03dae7837c9ff3b9013d63e01a748bf5e61f5dc3ed4346392a99d34a37b63e7fcca3dec92b7df7ec450feb016ee2e8fc808369d4b3cc0fef437b817ecc8474fd33ccede93925d54717dcd5aa21ce0d2327e5f5c1efbf8e9b7ff7ad523bce3c4f21bef9f61b252738c5bd127f0071afe4c895df18e31ac8e66d75ee4cc203f018eb674fe7f1de78241b88b5d3b13e1ee901f3dd5de2a15639da187274d15fae8b65b70eb899ad8ffce64317edc1fab1f0ddda7745a05bb73a430d7196a15ea413acf59a3fe44aa3bbe7f08ae257b7a27fb3bb82baf2d6d02e39206fd6f89763e883dce6c88f111cfe760f99eb4a6150dc61c16f3979e9faf1476ba8642c8d73d27a4f85e5c1faf5fdb51eafaae8a74cd30ee8c32076627cda631f4107f8554f353cef3cf41df6a953ac47c835febba2fb8ac5da63618cbdfe3b605c076da5eb36f9c3bf0f953d758f15cbfb96e7320dec29e194687e16ef11ea9ce4d7c07d0662efcb5aed1c7b88ebe8bff85bd2f754fc90d572ee0edbf3922aea1ac7f577f56f678abd229730308fb6dee1a3c05394fb9d983b3035f9a81ed0a9f067c8fdd346ff82e51caef93ac3bca5aaad05842be5ef85beb57def77cab4897e545fa1f5b2a9d2bc9c385ee89200577336ca2ceb85e728c137ee94f514b3e77d05d4bfe5400d0bf187de4ff2953ff129a9a6c239756d6b77d9ddf42cfdbb2a5711750ae384fe27b31b53a1afc7dfcf25dde95787721ffafd0c9e14ebfd1207fad74f2bcc63608e47fc9deaef479dda33f3cf1f0cadbcca1278a10bf6353d0e40572b8b6aa3327fcdbde4f1bdd4d198a006017be6a35b825b91f9e0eee65fd2e7b3da03d98b2e7d09c46a1af555c0795deec7b97fb3c74c6d30fb9cfab87edb07c445f6106371fec7b93e18abf7952da69031a71833232fa67a1916efa376e1b76c83b9b1e27933223c8c8c7fc67ff85cf5be7fff5c1a93e8cb07dcf3b4835a0dccb658f243dc077db4e43ff4fc54e13d9caa3a6f560c6b50fc1b15276adc157f7bfe983aa8761bfbe200c67e5c1c079ed352b8e53fb5e1c2b689f11f17ce88ff2acf947865b9a06f6cc3213f6be5ba00ad73d294617c8e9a1d1fdfeebc634c3c7e836947f7c16ff527b5270f63fd1cbe01fe17ebee77de3fa09c6b2d3f93e5fb8f7688596cab5cf1ed48dc7034076e3e071ccb356f45a53a45b6f3513dfb51e166764188f5818aa16b7eff4c53df386e4a7c377b8f93990ba133d9ee370e7ab39ea9ab317fffb3ef623eeb3e7f3ef4eda7df3c7beea53dcd67f51e2b455f8fc71455fc3d781f415f08e5a2ed6bb5501f5e6c2df90776ef74da010caeca3df6519794fb5577735cf1e6d3724d598e6b3b873a25c416ce5ad3d2485bd1b73c9a905b439c4dab51cc4bb09ae65d3f8f6121856ebfca41633e867148ced7b0975e33e05de23107f759822efa560a8f7d75c1ce2fa633c023428d987ecbc710f2ba8097ccd72ec4036b5d0bd9af40ceab7d80332ff1663d0dfb358946857e314fc439bc5f2c069f8e746f2c31b697baa44f25dea99a52efac4b3d6292e30b7fbb89be3af53cc9218ffc846e721de93d0917e8b9a2deb5e345c3eb69d8b65f181f9b675ee07c875bd3ef9b74f73d33c7ec63ce3cd8a1862aef4f11b6256a0ce308c6f0923ae84f7b661f22b733c114e756c6479a9617ff46e0268d3ada3e9844c8d1f78cbc1f01aea7a459ef9469ea0d26333b9e8cea7c19cdedef33eaedc47be811a63e525bbccfde43f677abb91d9b7f476b6a896bdd9c9736f1d9dceac59a0a5b7bf999a8ea7f2d55f775b0e6ced7afe32077cc12f3e40d8ff099c0a79a18dc78aa6787facd712f856fa89bd72bae859907bd4a8801b7ac27b20f413520dc7f392f81d0dc48691e91cb84e9226b9c6ff77bf5fc75bf319cf4b1b68c7d8253511b04cc7c8df6b6d6cf5c491c5ce39551bbd348c311dd23ae1c99de3feba1eee0182e7b7be00576439d8716f0ef6be8f399af91337345fe99ecd9433de5b8be83395df622ea1173b00f976267c2fc7bc49d8336a1f60cbef7748778f541b3aefabb375f89c9f5a76a498c2fea903f57e6b4a34fdecb276b7cd89f8ff66791c76ab2bee1cd01f3ecb40dbfe924f0d0e27b006bccd672e2adb0eea7f7bca6bafdc9cf16d03363d7fb5bd2fd537937af34ef66dff7078ab3c30ae9d7a788d15bb613e432069e8d14fafc5ce14f090e5bdd0fd8558a7dc4278e0dd7f682aa53ed4705ae2ad64f16aa3172eb1de2741f79603774fcbdd4f3d66c159dd7e2df2547f286d6988d1fcbad7860bf96ad19e0ad1a6aecf8dfa15fb9d81acfc1be6eb10fba05fb1357aac8a9a5fa28030be719e14a92bb1ce3b98f44e7b1cc17faeb171b56da33b0a2a725d6d189b3dfe6f791264e05ea135f10cb2d43c50f3f193d810e4da87a577cf473682d2eb768571e80ef69b97e85188ebf2fabd9cc2ad81bd7de695c51923f5c7238e03e16bd13627c9cb1d683ad7f975f014c8d8f758eb435c371d77c54d4ebe1e7f1fe01382796d083267a0a856fee222f2edbc3cbe90ae3106e03d22dda801aee9bcaefc2f5a2e74ce7b19067526b54e41992eb54611c64ac4771e0af1be471678e2f6ab44a3396dd0b6bfd1ed7e6167bc3be2724ef60d3b42be165d9367b9366e55a5f88ddad7bbcff57e1e73fc96ea45dd4afdaeece1053a61fb596960f412c81cccdcc310fb282def607c485b1f7584cfa5c07f27ff27c8d0aeb68d94d3b458c28f9d3c97b0af16386fd0af131df8f2cbf92522f1ee30e9891d6ab17acb59c2abe8bfa463177e904e363e6f3f4abc42726629e9acde79965c839fd85b1bde87f923e05e68fd87a0c7a54f7d7fd3389c7c6b343c61ed23754fcd3fabac6fe30fd3e18479d047e5cd889f052b87e2178428ad7333ead2b5dff5afc8eedaac73897387e3bb39f7f6a8cd116743ce2b4e89b6726f49a16cf83c9aa4a7cd69c2325f2b02f2d6b8026f7e9a578661ff2bda5beb998af9b24ce3fc585cdd0074f6f785615eb64e4cb7942135f9e277f8a198b2b4da60951c0863d2b0e89207cd4f373d3a099b81bf001ab3eeca538bd689cde1c333b0de02caaa4ed62fd19f1fbacd78562708a3706d10bcf49a8beb9d792fbd5bfb0b74ec49de2dfde0a390f79de73dfae3ab79c274f1eed1bc5f3e759f25a873cce9775b2df67f20300e7c97b09c26a3ec712ffbbf7e01be7deac184bc569cdf065be82eff9578cfe02e4d6dc22df71b639003ebca0f91ed78edfe3f3c9f60e62d6ebf6c679b0239d6b906924323b78a13e4b51f3916b601a75587e48f575cf1083f4ec0c15e7c02bea9c2ff23d847a73e20c3372549a4d28eb699467bdbb6f16ae29e536eb7c9216a6cc8d0f752d920b9b33a527dcd07b1f494751cfdf64ab6b691edd03bc57e4246dec1b0e4cbd47eee712ded15c33a73df2a9a33e359dd3cb36d471902be6b004dd6ff764f2c07bb95f29ed543a00db873c6158830a86c6fac2bf59883d277d30994b7e718bf8cd94e506daf99e14e7861f9f7a06173271a94de92c553da6aeaef18bdc61593e67628d65c101fc211c876fd64fdaac77cc6797f5c1a682279b8d5f5c7b11e7c734780928e7be855e6dc07fff7f6beacfd65432dd9470756daa81a3e79f9e5c9c93cb322cf40594c6dd5aced3dd60aff79c639eb43a59cd357aa4aa29fa80fb439103a9c171c5678c35261bf021cf0bb0b74cdb137afb828f3db39129da488a0728ee86de80c0c2298f7317d7ab94f755ebd2c2cbc731d401d417645e0874478c3511e5e7de75e8741a49a8d7f8fd49fa6771d8d4c7380c39609d17d4e14c73ff5ac693c47f8e39e2249f1ff02dc5b96d62cc641e53d8006f0e312d721c46d7a5c1fd27633bb6771ced5992c78b7271ff47f8151311cfe73627ad0cdf477bea7fc635cde32877d92ee684d5de70c95f4fabc4a714496c2c5eb781753355bf3de06f59a3aa620095074daef45bdfb80e625bd197063eb8c25b301f3d4cfe21968dbe3340acd2da411becedd14f4ba6514fd31cf75e338bbf78c398c27d456c65d082ba7bfab00cb177d035f6d8c5c61f96d299e9e17b6543f45597db0dd63af1de3acf63c5323f33e417a6eb0f4be275e3d77b9639dc0027055d1f6d976b9d9f78f1beb2f1611a632e7eb78ef91fc5b671dab28cf103ae7135c603cb188bdc929cdb1a9e19cc16f8b92d113532b96fc61807b377f5f67a3ce13de2fc2f5c9c7f881d3efd75b19649f517f4f981ebf14cbd5c1b7c66da5add5db30bf14ec51ad0a2b7c1bcb9c82fe5738e9cf7747dea45c8afa1f936c44927d6bbb0fbe1ae70fd7ddbb6be2db0879fae29f3a7fcee55f783a2b5e6272d5bb8d68093fb62d13631fc1f515f6b401e7a19ea1a23098d13af5df35edb339e0d7fe28f1127043d33db1c0b7e01ab2b25bd513157565a07877ad5e5a263c69926939792f60be1130e73c81b083e4289df217f1ccfbf0bf4ca3e797be443861a01fa25591f6a21c84149bef6a6a962f72c6ceafe0cf3171e2c7ca786beaba527d40b20efd22872cb59f90c150ec7c2cbcab8bc16641f4bf388417c2d9cf1ffb016fb50f43f7ec0ebecd66b90bb1c58de29cd6d835a0fb226e6a3bd827958c47bcc43491ea9b54371f9c6c005356ac44d8c35e0cff9bae03b9d96060e4fda31b11f6c6badb62cf25f540616ac7e41ef66aaf305f07cd4a085fd28d6fd84b9a9b8e68c0a762414387c857d3d11d7218f0180f797e93e77f71da8b5a6c843fd88fb90725f9b1ae4b817db7e1b632503e715bc63cf23f1f4d3b8f1f3d892dff45d3beef317fa4d72ff1af772afb582d6ae5b79d17a3e4a7be9fe044b2ccf76b90767aeb6b6383f48041c9c33ac8b5a7bcbd9dcbe006f7a176339ea8d65982a160f39d65cb37b459eeb44ac79b157ce9678a12cd7ec05ed178daf09313f7a4d8fe5440c9c388d97358f1cb4a20ef06fcb71fa8df64cfdfbc5775e2cb9c7758572aa85b93a8f7fd68760d5ce1e44bf614e6aac07c3492d395ce2e1b7e58dfb19693a8ceef43cb1b5e43e96634abd55bb60bb5d1fbe4562863bbb82ff98503efa04e76290ad0c1d9f48e441945ef519fe8eeaf1ccb6af0bfcdcb5415be7e72ae216b82fa0e5df95e617c69e26874f798ebd60c3315742e3996d62e5e3d5e6ebd0cef537d6ea021c6fa8c60feace516d89dc2bb51bea5aa15d4c6bc0eb82384e396f35fc5b6f83b85019175c2df7d9e07d12e2f428ae91f12fec65c9bfa5d43efc9779c3e9c81b35c53eaaa5ce68bf00ceeab8d2d4309a59a7467a231be2e397b52cd49a1b4c803bffe82c433c1f984fbbf91c84253d29843ba46bdd1df6033ee19a4f2a4be2c8a9e11a93dfebe8b959def3d6479fe5d98b8ad89bf19162eae99ee2d67562e81b48bc68e0e8b6359dee3bb65eeae7acd1fe0e7b4fb9baf277e46733603a90fbaa804f6463e8283fd4add6ac39851078bffbc0679c25a1e6ff68f936f5ee74f6cabece6d40769e9f2dc7f407761eedb0f5fb37d727e4a64d5de2b679d4fa5d920fe49d427d165aab9d5b08f9a937d4eff6d2f590f013bd599bf686f49d51376022f25b72fe3deceb10bf2b2ccd717433d74ee42d09b7aafafa56df692a11b676b32be70bce526f64f2026742535df84ef23972ed504e42c43bb2aefed1b6e4f87e657161dcda95411b7821466d658b0f01fa9774cf79f46ae3593b4725f754fd6dc85fcac66defb70b7a9817a6a173b786b9f048cf2ff7a365ac4a75441ad77fae2191b491a31ad747da010ce3e613cea61972d88bb341e62f62e4e021ceeef52f6d9fcf804bc1adf40ab6cfcab16bc7eef0d82270d89adf02eff5d1253b303bc15a464e76c49bd8d7d337b9982ad517e89ab2332af8a818352907c644d859ac69897828d0b5d5b3f0aa70c42a97bb767dd25b967aeb59c7d05b7fbd8eb47bfa351f389b55dcfd94757ada736ebfd8733602938dcf712f971feaad9f17ebc7c23565e3b2886b4daa518af51d6839e3ccaf15eb92d27ee2de414df5971ae2a6271bf009c0de3eaaffff9f7effb056ce87d3b9e8f91e8d8782d621eb55e1fea6df85f59d8e580d5f61d236b65e2456232ad801b937a7856769e798e55d18fee29766536cba3476bc39efa1e63a488f57ca23087ff027f7517f6f60226e27cccf871a66deaf0dc27bfa56324e5ac03a758ed01f635b0bcf9803433c711bd717f696bd6f3adaf83bc8eb5de84d92cf6aa06d81fc8cd1fb01f8777740b1abb4c580035bb78dde4dae5593fe719fa3be56d34d990dd575ec6613f82e7f1d3486937e2bad245a3c52d00bd3d625cba316e79acd11ecdb177dce6ef513d92cf31af8ef2bf691f13d337f5f75750e20c1f724edfd76dfb1fc56c4894ff78857fa79af6662fc1e3dc0b997b8a716ecaf3972666ea02e5f43defda2a6af160bf9c8f173f5447f8533acce4323af95e17e7b801e8ac2f3e559cd9f2fcfe1c2f3a353027ab56573e5ee4f880589c1de1735921753d040837e9314ec705fd90cf87fa845899e60e5476adcb66a1fbaac675fcdef0cfba8f55cb1c4c6a03607622f042799e25ce21ca4607f117f067dab0f77dfc9bdaabec0fa79ee3ca28f37f7f65dfa365e87092db5e4245ba24ee6e841efb93b5696967c77b1cedc3982af0cb9e105e4b6b3d903f998e29e1e3d6f65fe56c3df6e27f3b733fee62617fdb7d3ce476db9f585f013bc37715dfda718d1a00779f8cae79363ea93fd57dc2814d73d39bb929e6c9ab7b45b2bf4151267fde996e8fa23a5793b1b2758d21adde5c75860ce06b8b2a0ceb91a438c18eafde61ef23a4d5706af53528b2017df79f9f6bb0731e4cc42d23922aefe8c7ab4844ea78adb519b90e593aed8f39c78d85bebf9a0c5100b5f156366858d3b94e649e43a96fd3ccd13f85ee727e0b0b9d51f4688c96cf488131e7c8ff6817ad9c5b5d6b59ed2bdb327073114321e7b6f809fb4c7ef980e91f736b99d3ae837488ead37e83f1fdeae2751db0a1f2bc42b7bc4775ad0734f4fe00f4f360fc435817be6b13096d3f615ed8d96abaf5ef43111efee17ae9ff46ba337f0d9381e94f48383ed1eaeef16ae1f9f2ea326ef19088ecbf56331671c5fbbc8510bbac86e82731ee4eff8d31c05ef7f5a1fd53c3a58a7495af8bd5bbfcdf86050bf05bee7585b5ab4bd836d1f74a20f2fca162d5b5131ee8eeb35d2d692f67c4ebd93d82be56fa3b6fab6ea9c7aaee4f9473d5ab73c8e55df2d711a54af517b1534218eee92ce34599ba26faab2df14b7e1beb876c13f716b3dcd6f3172de32e759ef14f7705ac1ba8ac274fbd0cb58d0486271c498f7b6ca1e4b9e5b09e21ae6d81670f66709edd13cee855e1eadffa2eee09e9667a21843c0edb0f525626935ce1a9e0caf97f6465eff56b87ebf6cdbb46c7e9d8dbab6ec61410c137d83d09eb2f5c278a0ab7d7496d8df392c5cefb73a666f97c496b70c1b25fa4bab85eb1725cf9f6fa90766817d0001f24cd0188497a18121977bccc15a811f87ff605f9e1e16851accd14d40afec765aa9f7c8e63a7e499ef1a8fbb9367a9ea50f44f70e0eb0867d2f6a1bb1b7c456602ff0bfb7e7e89c011e61867fc3ba6ae75cb48d79cc6d68918e4f8025d83e59d65a2af285d28753391907e2248641473f47da7a99277fb260c3e45924fd34cb1c1d701ca6fb2fac378296599c3898df6c61fdf23ad4ce2919e3d3bd5157ad0af98941085cb0e919313013dc9fc87102f1bc8f73c1de6f6cfa0c620c3f67638c4f38e733e1d7986d004c94e153cbdf5afdd6306cdf86cea53027e53938913fbc056bc054d4f79635508287fd555dac754ee299c649ec9f9ffe0bac3de4655de46029d1b1d7d7999ffb53603b84cdf62fa4cdbb92fa65d15aded313bd6f2a67bf224ddffcb72cc0df02b42fca27c842bc6732c9f737afa13e56a0072b10efc2385e329ac7410bc75dfdb6beb07e3bd2fa166be317f3b9d08f05ff9ee5dac06711795e733cae4b93e383f9262c0ed9cd01d32f791aa40fa7e2ad45dbf29bb2f91ae7aea851693c0de77cad8b3e78e89388111768d50d5be4be9dec8fbdcd21d7e00e0bcfa76741feae31401b1926c75460d951cf4e60c14d7fefc9dd0046876936a19f417d12c83d777a80da08ea1903567d22e2185923c9cf491d975003dd87a4f2dbc0d3336c5768e25c24de9530c42f648b3fea16ac5c64f6e595d78bdde48af848513737f2cc0caf9fd27b29bca845b35ae2d0c57bcf114f6ac53f9efc7581efe1d30f6d790d0d97e9110f16c5998133547883baabaf7f611333df82cbf7b355539d8bce22347b04b4fe043e0f5fd85febb52b804179f68202ee45f42dea7866c7565be0e73ff59bd8e6657d67de0cecdf58abc1ec67c8c972113d324f4edf450d6d6f53b572b2149ec1e692af798697cbfd55e0d4d1fc38884bdfa1aeacc6dbfb211fab0d37e3be406e605fe8d729c7214afb43fa4d9fa1ea0d4f48bfc95b86c0115c73466f05dc5c2d52fb78b105adedf0f684768a345f9eb1af3e453ce2b2051ac4f2bc03aed9e1b8dcf62cb2bed13bf172b6e01c44bca1f6fc7974e77e05ecaabb3a59f849646f99c809a4b8d7e61f15b0dd37cc65398ebe26e2f43432fa709688bfa775257aaa1d4d6f067c78d45362e7de79ccb4664c9dd799a81ff3f37884789ec5a4c379d514af68a788e18faf8821e7f7137552394606aef154c3be7c39e737ea31211f97cef5ce057b8cac3d7ffe8dfa2d3807f8ee6ce1b9617b61df2cd37c63bdde9f438d9324dd15398a2dfb0b7ae7893b89fea6f28a3c88800546feb84903710049afdfbe87279d69fc6f1be23a647f1337493744aeb11d62f3fddea60d3e95c489b4518388d95aaa2f66568caabd67cf984bf2dfa2affb7319b0b5c1f3608daaeeef491e908553ec91f3898b53ebcb7cb6c4512c0f9ec7d7c85da27277ba5f28d7e24eeb77e3ffb5f634fe837e2bebf8440ee5b5f9f8f433ddff961c6e96f1c9488b593ba32f78b6658f1778e7c4e22bfd51dec41b7d15f6ff34bce93c04fef5d9b2ff65ce5ad8920cb125e8338a3e275ea7215b29df5f7c9b8f31a57a27995b6b16ee9bd9d684938fbfc096f8b7bb7e5ecd3778da8371dde2e70d312e999bbe81eef35e7ce0c052f16f70b3dccfad38f09d76bf929eb75cbf2a6cd36b66e1c5c3b90d727bc539cb6ebfb252ff8b692fb2fccc21410c66fd09cf8f0fdb5e6acb188bef21e059c8183e80fa19e47b678035147e88e28444ad69ed3e7e5bd56c63c7033c19f66ebde37d76296a0af4755c05d597743ca29b56307e7f1f15712874366c53c4ac5e0e18abada196d72fecaf19e32be0fb6b80bc97c72ae61599d609b3c90fe679a87cbe5a21b68f3bc745bbd8e7e3aff53ee3816d3d4b5f5ee20ae37deb4edc22e20f8bcd71d2622fee2cf928f60dfd97fdcaa3b87ed16db47f7e764af132a42b8b38bdf082beefb8bea5be1dc4977b882f87b912feace46280352131e4e2ddbd99033c261de452e3e735af5d3c8366df24da4a2c5bfb30735291bb53ef895838d97309fcb709da61917be3be32c304eb3e5242da2d22568d98f665ba45cca6f0bd7fc0853c3e5d86c56b4a736b38f6ca86118f05c30a49ac9fd1230178aba0c8eb2b35ef359e5d3a0b5faec4b92f79d9639d5fd35dac0d6e7977f582b6d031b887d77acfcb9cd685567b7ffaa77a29da37c96bb05f2cc3beb7fd0ce2af6ccdd64260ac851aceabad474fd73693ef9f38585fd37a2c6d3da60b7116ca9ef139e54ec5f7b21edad37c8d1a2e92f331b709bc2e772b60f298dfccb852b7455e5d76cd35455d41ea4d24dd33a1f521efb31ef2bf93e77a0c1c9289f009feb81781cddb1cfb138fce8838678bf71f8b5cb8aafdf27dd0f6f49eab522c7e95fa1abfd10361ef27f0dfa2d7e5c26c85e4cb40dc897c6e65493c64fcb917aa6d18b9ee9f3c57e29195afd8e815c7fd98713e42adc6d6425f95f6a8d778807e9af96465994727bf9f27fa821d5b5ff0c6413c378b319e84aea0e2a75adfe907f6565fa861f3b181d8f4227af564bdede9b9d56f8a7ac6fa52d8b78b7cdfaa3cb8cc77ccc81eb7a89f33c15ed15fd910eaa31ffb0ee5bd8a362199048a8b2054f75ee1b9f563bf10c659725448bff4e3d434fc3699677cef94e84b9afd172fe89b0d7aa38e814593f77237a6fefa15cfa46fb0f8a95b6f16d6c1d4cf049fccbad348acfde19b87ff741db8a7e7e79ef0abbde1e6b13057693e57bd4efefb15eac33ef514907fc6e649fadb8ac740ec2dea1f9e6f511fb51200afe7b47d43bde2d0c7fc65109f3a85e7c4a8b38c67d012f897dc0ad44a20163c1b58651933100e1c700e0f881991feb9cc65baf5a21d982699c9272ff7fbf08631f33b60ff21cfc8af5f673a9f875fa13d32c43ebfc0c3f3d9491ded6c28b7dd93dfa5366a89368af14064edeb5d1b3579d46c94ac356fcaf76a01c77ea7e645393191c351759d31d42e354d4dc2d262cf15bbfe21c1fa34e3e9db6e50af0df5ff269d2ee3f9946be783f831783dc4bac6a7a98e27009f7fac6951e0f3cc3eb1248fcf602fbd778c7194fb7664f04860df157050029610c7f4f4a8f9a4a011401865e5b7891c8eb7803a04dbe341cbf0d16e75b4f59a161ee66156c87d3ce8ec408704af194cd0f7767d27d1f445e65d5c67dff6a625b90f2ff307d900ec95ad4fcde805442e5d861f31c77189f154584d5063e8f78d70e852137832d6fb2c944e0b62d9d9b756f36fe5dc41f38f6fbf953054f1ea1d7856816724d8a65d5bbfd8a285eb903813701dd4ab51b3b047aaf919a1f00727836b82ce3fe498acf5888748ad75d5a3c4f6953a9f47c899b2dc6e3a5a5d85e53a16711df7eba26dd46ca7823746fa681ff59eb96f820f3827f6ff2bfd4d706fcb7c06de9fadf19ff4c0b333f588dc9f13ec7763b9308ae3e6ad5917facfe2b73bb639663c705a1e655f21ac143e7f871a63939773715f455edad6d79a9ff56dfd4b9c0b817250461cc5b411688fbb55d41b79aa3cdab81068dd50cd9fd988fd0d3183e313f2d32f310fd6815e88ab1fbe183cf6490d791be2bd0b359385b3d37a5f96d077398980b395713a307dc8acd3d2fc3fc084dbcef76ffae0675ea7e8c395f1afde4ebcaf59f63499e7a937da8ef4fd78a7af32da411d22595721d6c9e332c9cde7e19975009cbd2fb0e912f73a7ebbdcf267fb101713ff94bc3eeb5bb55fd4bf5d110b99bd528d4cc55eb1aec1765e38dff6dfebcfc890bbfc3087bedfdbaf0cf1959351efb95bc9cfce13f8a189384bac7e68713cad1a0a349ee91a781e4eee0831a8bc17a94fb5eb10f2c060d37e5de1dc5ec629704e3829fa9e8d13f2f002768c783ab02f37ff4dc5a7d47725f227927f256817f47e6f34567fd1af8cda5a6c5db9383687fc1c2d9eafeb730a7867162f2db788f1c90621d8ae0df298fb5cff6ddb20dd15e8fd45db0ef607b8dca2ab652c4e622c584d2335d7c23dfbc7fc8224acfe6b7dda7aaf6a03f2ce1e6ae4e8e358434d9e0960c04f87dc8700ccd4608af7a8083ebd22778ab7b0e34d6a035a17a7fc1b1661f0f58c3169e740d832b95ee614af7ee239e5a650bb3a60df1fdb9349be2709b72deb207fb927d57b644beaf9afc07e0b3eae85fd1ac05930ed38f6fdfa9a617d24040d32e4f355cf40bede6dc271339c5fc35ddd10f3dacbfdf7289fc30a6adf4e1037b323cd9234bf06781085a6878a41c1973efbc0dd3ddd79463fb5d09657355bf4bdf3bf873abfcc37c99e16f6b7a463827b6ab582187286fd8629f2de0da6b3b6c25fb9c4a7b3010cc031d2d65abd867c9953cc8fd1774c444d9df70973cd0abb6d629a933eea48556b309fb6330e3168d8b7847eef76007c72596270672bdb8eda19f93d36d67326cd8a6bda77bff3e343f0ad6b98937847fb8e3dd8f3aeff2fdb9af4026b73d03d41ac54c37e15ce17b1462d058927ebaeb0a7771e22c681c7513bb44f7086b82bf497884f097c3f759eab35ca74fcb4f34daf95ad733ba43435646c403a0756bb5fc9ed3ee25d54bd7f0eb8d8228f5e218748fcffd175f2f6af9d79380f8b18f945be688cc8a62e048faeb4f5b6f5b7cc6daaa55e9bbe07d467e1901f306f053dbe87341e5476df8558d75153d82ed4caf98333937c851ad7039ae33cb3753af9ed8e9aa8afef61fd86f54f051fab0ee480a55f58c57a367ee7fa51f3f7a53e937887fda4699edfa319718f58f30237c202eeaa1897463e605eb0568ff5fb6950631cdbc71972b1d7f790e311bd18642f543d00b545e81b62d2435d4e19166ebb0fd9bcc87c1772edaae7b9f508cea9b48d7938173450e71e68cb24f977091b9cf63a603f32cc7f659dee73b79e3feb3c7c0f4eca46aa676d1a5acce456b11f749621cf6465de064cf3ca01ddcb748bb1dc293038a416ef2388fd047f60c187c8d7a58a0f643cb4df7d170f153015d0e74279c20a692d615ec5053bfc94cf99c5e6268425c51cde02ea0c5907ecb9f0dbd49a43ed3bca8b4455e8418073336953efbebc577019e95c0cc720f75d26a316d32f707ce4cba3f162790c0b1f66a7f3573afd1493b92f2cafa7ce902df88abe8bf16516b44ded397807511bfe977bbdd3da13e33b48058f6a6efb1a7a0fa90d5be389fa0af033ee12e83ff42897abf25815aa69e33a406ec685a883c03e277b4f9c621413cfbb353c27a1e7fa49e43255fcba15be92eaa37af9d1f573ac99459fbe538cc3e535b23666f3d5bfc1bcec13f023f95a2be1089a797d83c71aeb6d923b09eae013dcdbb7807082e26fa0dec3fee63eb66332a2fe74baa60cdb714b8cbe29f407553f0e8da1a87130cde46346bf0d3383f741f9797bec93f90bbde39bc8138b5a37f5db300cb993ffaeb08537d4d8f6fac8cd45637974cc5abdb42f09c36f624eb15bb87ef2e8107692d7b27619e1eb02c867b48bd797e6ca2407560f356c8f58a389ebf84dc1f7f3e89af338d6e7b1e693c69c395767fccd4d1c83a36317b46dd7893d5f729dacc9c7055decd336bf973a33aba3375e0baaef310e775f2be88b4d50175ee3ee9ebf23277d35590f357f5d5f7fd5dbb0b06ed87b78bf190f08cb496451bbf8ce17f6b7922702ceaf597e362bff167b7b27708fe301d7f1f8574678eaa0a7735bd16ff38cb0bed206cff660731731e6a776016a1fd4ab8475d1b0871ee1fa717db78bd7ffaae8da87813b0fbfcd97a9756fc1fdb0f520fb9e0bbc99905737fb420e581b927971de6f73453e7fad5f01c7d1ba1ed9f32f638d333315783f957fcba887c336970df0f3312e337a7dac6bca6fafe10cddc2591f789db686bdf0305eb0c4fbf6f5176c57165dded26f36f481e8ef16f477ee52d3e8de28aebeb0b027e7959dc61f30efacffc83eccbb90f7f5abcf4e71cfcfbc51dbae95297381f97e67cf13bf2126a2851a168717e44992cf8a8b75da127b24ce52efa5b8beb4185fe2d9f43aacfc5b8eb3a43dcdd6d511d715f0768bf9d4b03227df19fe6c6d4e3b21e4157ce0d0983e9ea93e2bed21d6c2d9febbbf2636ded8c40f5ad7d8e60a75545ff899927fe699f4b8644cfac367310ec113da20b63ebef1cf0e09e47fd93565fed97c1a183de047ab7f96bcc3ba8ab220d4f50c961f1b38df3c7c5feff1a7ef5bc1f765d794bd6fe299ef1b5adf37c5f70d2f4bb347225b69f54f5547415f835d9bef19d5f322de25df530c87417d07f2fd5f2a941b8ca81f4dd39b79f9e9b8d4685c5ebe1d97b47c5c34cd2bf4653cb106918349710ecd0b18e57b3eafb7367ca5239c09a8e1ffdfe858d17307c21790672b3baf2586771b341986473ec38bbac0b52adec55d7b8849a0797783d0caf192d1f8add19fa63c2eee91f312d795d603704c9d47cbf8f79d8503d8d2ceb978bfb09abf8fd9ab2bfdb4d0c1de8adc3642dd0c3896bc1dad9d7c4d9276a0cc317691e7ee3c73423df70036e2bddfd5e211c92392e9cf55e3fcee570b789fc9686f19a36dda1e5a7ab67fd1f9a6afd16b02f9566f83fd826c8c78dca8f1fcd9e314c91f638bedfc8cf2a401e3261a4c48070ac7a1b22e8cf37d7e0fdfc1f8d9bd22ee614efa430f645f4bb002592383fc1f7120b0b5bedd9ff12cd771a9a0b17304ecd7c23db1eb84de0df42a719ff7d9dac7a1f4e05f8c185ce691ea2ee8782b7b75999471f522b6877cc4c57ba0f83a2ae739f42e649d2ffa2ee1a367463d8cfed6eb6f3196888706064fc40afcfb4ec895ccae53cfd8cf0a7c3945bc717eb6cb1ce235829c3e70ef095d6e850b5a38a88376d1e332f1bbd05f96df1a9ca997dd8e9dbc9fc34c3c43b3e46b8cb9dd15c62b096a955e1fcdbf5b20ef23e66ccfe8fb60efd6e809c61039f1e31af61dccb1fe9776b4fe3e6ff4a9e76eefe110b04e5e1b99754bc45ca585ba44d00b904b57d60b2f15ea318f748e28b74abf65c66fdeef0ae391d1f960a4cfa23088d4c3a8f585b8fbae9d17b39c0378d0eb946a9be339e83a15c0172fbbfb6e311efa85bf0f847d313193f0bec1cd778a3c78f4add12d08911bcd01cebbc5b40fbd77978030cbae51dbad20e7dd3dedaa788d7b79a2eebf6c610ffb2940deab3ac6c4831ee4b9d200f4dcf13de5b733df23fdf2193f96c1895d451fce513a32d29ed35a91fd24903780dcd083f13cc97383ef7dbc04984f695bd6dee6cbb85e7ef7c7de566b937e1eea72883529715b98233a9df3fb297caaed7955fb5c48bb2dc7866c1af010604ec3fecc133e33b6eda1cd83fd992a2613e7a0afe18f294ffe6f7ee389b4e1c17e6ef0b90af7e21f028c5f7ea38670f03e337539c5b91635bf59af4ea7f102fc7d8e03dafffa18c93c7db7b08ffe3d7ec52bf913f50cf6ce9347386e39568f361b27fa1115d62d234e608e6b7f2d8e576ba66be5ddea9f45fc7aa1cfd9528b6f0016d345ec52bcc9efa57a60fa9fcfa43ff2847d746d6b4db7ea536d19ea4a886f59100fa78a61c21ae320c77a6f51b3d2af006f844fba00fb27d05df756c85325f5eb646fc20263aed507f074a026021bcba76ca6f756b9d7c3e8cdd21f8bdc6d4cd3b9dccec8ba0a7017e7f30571c63a31ea2ab23f12aff7841d13bf01c687ae8ff6e93ab47363b6813fedb1421c09b85f32dc2fdeec36044c99d0b5f9c6c6289e16fa3e3a137dd0539f742e967b921d99e4beb338076b43cb9894d59a849feb3dba5433ad750afbb8cc87f73a8e89f79d687ea75f9b53cf2e700e29fcceaa0bf39aef0bb9fe4788d5077b04d82acb7da4f65e176367b5e623eac592fdb707ca091ab8f6dbb162d650680e12e03ffd9f5cefe92e408e44e11f60df917ceeecad9077708fe447f0dcc2b8be67b9853b3563ae5d91e6df0175dd2f7a177a46301df534bc1ff890e097597315aa166aad4327ce93194fbbaf17c0fe82ad491da157de62b8fa43003c32ee0efb6f1713d47892eb8e622ff93ed94ad790199f2ac413f608315945d5e7518b66d0665aa3721cbdfcdf94d64c5fc6f780e54a7701621113afac7f2c6da15eb5f81681bd05bd64f7d523fc52aa73ae659161dbeac02f76264db413e271966b9df328e835ba85f7b4d485b49a4e656dceafcc7974801f7d75839e4cec37a0fc04f2fc2ed937638e47ab3d457a3d0bde39463d712b0ec3cc8915f1b246edd8dbeca847949d8fffb417cadb5480932611fd23b2be8b39b78ceb11a3e6de21a4fe7d71ed7282f9f833c3a31b73ae72df541bc135e3bfa77aff59b639fc498f21f07b5af0fdfbdc4e424fdffcaddefdd7b040f2fc769017631221371171156f5cac7bb3bc82c40ab11818ea06d30dd40808331aefbbd833f8b1da62ac8ef50475ffec0563ad792b8573cec13d63c30b4d679f76bb1bec40db21cd66860e637ab06016e86c9cb45daa05473d2d5f07efde353843c7a733f18fd43b9a2f0adc679037b6e7977f8e2d823ad76405719fb3445e55c00706997dbfcda0067848d7768c610af7b2e457e03c1ca9fcf932ae1b7a5fca7e4c91231e6b643ef92e95c4e86f5fac55cce5f96847932ee89b091cb7eccb0f8ff27c99081e2d956b45fb43feabe8a593dfb9005c76b6d9812f32647ae6722eea0f7806561e21ffcbeb74b9cd90dff61e740af67cd278201e32e9dfd8b4b197533c0b145f4887389ca57f22efd16a748661fb328a5f712dce273386b9fccd7c205913262e8bfa4eb73db20696027691d9ad20b75b947bb7ecaf55c9fefa4e5b857248a0e1b60c757f8ff027c75bc070d7f3eeb59833627edd723b32f80bc27fcb372ad56349d625fa27104309ee7435afd0ffd81eea7fc3f2a209e09c276db35f97fa0bc7271ff81326264f333b4796f86e1bc8957a09eb036767c60e7443d22cb09e19cbeeaad80b32990d405779e13caaf71e22174c4a981f6d1efd09f2803970ae0488bbdbec17a18129f5862ed895a72cede8b5bbdd159ec7fa770f13851f1e745fb4de71785ff475d99ae735508e5d023ea379fb9fd601c9ff02fb9586c9fd1c72d63e8c90cbbe0ffd14e4d365c3fc9ec05d595b005f44b6a98db82fa7780e87905f8d57dd02efafe73bb0977c77f3ffdc5e83bc68f1fcee5403d29762fe2fd3d9ce3637e44f6fb17ebdf7cd17d8b7c1147001c74310224eb105793a1f7b6158ce59e03b247ec25f1773d234f64e9620a64ccb1da1c61bd951f19d27e43a8d5f2f235d9f6a3b473da015d6ae556ee1e145d5b196f1a3864b653d2eba9d20eecaeb98c70ef1a999bac8bd5a9d3b7a5e7f10497f20081fab119fc369d05cc62bc607b176477a3c0098998701c505d8ff13b4abb69eec8cb807373ed84bb04ff36c86bdcb03e2752cd91bc111cf410fb549b205aea1a0a5c6f2ccb012cea838e755e40d9d04e0137929f0c07a2b8c41d229ea249e03ec1f5e57615ee7884d0a2f4968f34b2e6efe1dd81397a5cf688fdbbabd49dc1ae05b1ce45c8378e603b88d376f9a4e615cdf8d6ed6de04c22565234d4b61eef4b731f8f29db58115dec1da70c7f7d6c647cdd3730cb836be02e8eb9b8cf6b036d2c9a869e35199b736987bc53a6508f5fcd901ebef1f75c0783afc4c1ac435e089bf2d201f1fa7c887938a5c99aca1cc219731a15c299d752781b990b6a38163b7fc007dc4f032c739ec7cc2fa60f5741775cba6a3107ad0c1e75c501ebc3647ae74ffe8b7fb8de1a4d11c74f7cda20ffadb3335b7e4fa241f7296cdcc7846fa969827603671fcab62f53d3f6a15d4669ef6dba83543dcfed26e4c8197e6e806ac3735c83027b10fb41e7dc9615a9a9313ffb6d3bf253f17546e6c1c16e3f259b6b272f30e26f80e5e00dc9ed3574bdcc730b938ceab398ca1c57f7818fe9516e13ddd55e917eae7a1d4eda2f3f05ff40fb2d14c7d1fe2ca380e98ceccbd43b684e30f20f763cf1dcda7fdd21af233f2639c9ef4fc51ffd17a768569357c33fa503cb16e645fa4f05fe47e1cde74ff62ace918637f2dc75fdce9df13bea7ea9f639c481fbb33f4f9a61da5133379f5ecfddd8fa80dbb7c47ecc329d4b546910ba7cc9f99b7a0af2bbc0521f000bd5ed1d75c8346ad389fe5bd2cf179d059738d6a6987d0d75955089b22bec145df2eae98dc24dc07ff827147ae96c9a6433e83c04cc9bacb18b565f5f8a59b82cd3aa046ad2b7a11550eba51cc038f8fde88f40da146752ce6e452adb74dda81d1167be2267d5d8362925e6c5c7ef93e04ce8304e3d78863478ab531964f7bae3c32fe3079ed93837d23f2ac0d21167871d9b7558276516b0cb0bbb698dfff783174e678bc3f7a34f7aec1e1cafb3a949d8733c06e4b9731609ff71b6e432c3e72657e1f8369d8502dbf62b59dba0f427bd3de97cff6667c417f85f55b1f0cdfbd96fb80726ff9b7914d673baedd0a7d76de66035c66e42398b9df8dea6715cf7517b416a47f64d685e30ad62828771aed076da65fa4f8f617965e734b5ecac15ee1d8b9516e48f226999828968b64dc2cc41913b870b6ac6ac8d12e380cd9bcc6becee1e52167c119f50add3ae2b3928f9434e29bc618bba20ea4e388c11ef6d007c7bc780ab9807f58af5f76a00613225756dac21a99881d899fafde056d52c2dffa6c6ff76fb8b77f3c961bc451a59319f2f890c6c2305fa7ca4fe81f976b3d0f2b3178e25d5ddf923b29eb016136601b20ff96e94f497de534c4fe098cd52dfea5f8ae99d03f2cf85f777bf6d266fdaefd2bef3988d8be93b1f9f04dd365716c7b87f3a09bf6a858f32d68d8ab7959a12f35543888e57bdfaa419e081cb078cf35ec8fb44d1ae1cb8f7ad7761df6cd6f13ec29208e83beeb97e891cbbd69d7239f65b32e62ddccbdccfa1f8278d3b66275bd578c25e6d35947d7bafaed0c0b7d0da76d02782376ed777cf8a8fdcbae29ed59d8eef59e85c96c0f71a55a07d505d508258f17f261fbc813341c1bbd74d48f77c8f723d4b797584b8a1cecfbf0fad067964d20dea7fe1be4740cf277973a313df3b7c5c7bea5ce01b44f4f1e68fcd491f310de33c8725f478c216acccde36b4bef31e718455167137a0e0a8722f6df60b2f99b9aff6160dce73933ee132707e4ad5535be2707310182db713e3e212e49721fed0e0a4bf147d802e8c19e436e22ae7d0e51e736f72936f93bd600bf13b8d72236d2db204702e0dfd26e0ab5c16c36d639b7f819c56224e597adabb006d3deaaabf93fa8ff471cc5be0b3c0dd113f60c12ee84ceab2df4509c6ab97d05dcc720c6ef7191b7cb1d6a3e08f13c606fdcd77cadd6639c5c748ee0e06b10ea5ce69017a5bd543fa25604ec2736ee0b6fd5347a8ef97dceb1a1cf8f5c11524fd1bc87f0bd68af89dc2dc7fe59ae39392168ecc650b3abbca83d43f559be5684764e69aee01614750d4adf9dddabb20c950f3f8900a7778a9bba8ff637186e3317b1882b682379be683059217f3aeabbb11ae8a24cdf8db8d4006366d8aab01a389c2390f797f8a47d98450ab71f3801ec0336eec1fb4ae7677757a79fe331a25d026b23fb7d015e3a7fd2409d8805ae9d1968f73f8c20af1dc3f9b179d7f770df076dad31e4c85ab39686019e0e91ebc6c61937ef60ef269c2d72bfaf313fddd3f2a61ed6041fc64dbd1e11587917d7e779a83f43d6ec0c9fd85bed702e5017528bd52ac4d7b6f99fe927539fc6fe11b87522ac41826fe0bb8891525a359873cf88c38a9d735e50d05067f31cd7763fc3e815b0172a2f926e0a6b7e9a60ad8ce99417350df59c3bdedffa1ef1e656ae6b5c7f82fcd358e797f166da396e8c47bcc73e33d43f7637c801256ad3161c18d6e64283c35bec057b5d6226ea4f4a0bd8e04cf9595d82e7c8f6a8e79484af7a6cdfc1f36cace70ad30362f1baa7a6f1db1fcfe1a0f31bec0bd462445e90e72f526fd6feefea345a5e02b1f283ce8bf61cff03791fb38561d7e7ed23d43a9effe978e039375d2356c7276c5d15fd0c668fe78803d57dede70c3102d7dc8ecb5cca237152d1b97013b90ce59f804f81bc941a3fa7e4a09c14f783960ff1a7d15f9f51d47f5dc46e2e611ced39acebdf9dcbe29b2c7b9cde25455d732d7690f3439c5ca0431814cf6fa86bd4b7e3e61ffa39859ca2a6236ae6146f96efb8cd14175bd2f17fe497e13305dfa9f8bbca0c7a0ca25785a1278d78764efc5779b1eb13d632674f05ee8749fb42ba4835f0295de05740dc30c3e726a2cf02e2f6d575a461aad64e8a98aa3ae20f172ef64edf66d8471c819f72427c51fc2bdf674ccb6b7df543f423089be528acf424c55ce6227cfd997fe4eebf48d373831ad3031813b3b7ca1379bb5aeebb2c43dfa3f7e95b7af368fd0df2988c7aea2d79edfda1ecec97b18d833ab082934de3bdaaec80a750f717023c3f4b39b4c666cf677ac47e84ec15fb69a81e79ac52af55ed68f4d4702d4b8ff7e9a794c793cf27db22f1540c13c26b718329e6420d7f027278c8f92570b89863123abeb28e09b9d785bbea3ef7c41cd44c7d86645d867d1563d2d3ce3eb967e5b9e5354acfd545bc6adb3002cb2e6a7097d60ad38a6e5f09ff52ecb35a50df249b1be2549e79a869f0e59bba4dc857a1cdd7e7ccd131e6dc4f91fd13a71dfae5b8aeeb8401b2cd6504b8dd55acaddfac7fa2bc4045f787dcd5b38641bf9df643c3c62c0c0ee420ae21dedf87fe07e26976d310f11c6f803b4c43b30ec67d9a15e28c019ff8e4d6a007b6863889491fceacea200c81ef578edfb603b582db04df5fc45a3bf471df371d4d5358dab9ffc1fa9ae319d3af9839bce56403f1e62da19cfc04f70acb3f4b5f48617c1ce80f063f4ce547269d2b7172934e999a9396a9f103f679e6dca98fc5a756babea86f68f8fa1a688cf53cde0cb8223f47bdd9565f57a706f692e776df099c48af2b0aee41f9aed4bb3ea07ebb4f81f59563b4d6fd8ebd6fb327cfa23ea0ecb53837ea5bec59607ed7fd9eb74d86e3e5dd3f2fca72bfc1b4d136f08e22bfc0b55f17dd8ad1ff1fc0ba7403acc7d530df309f804e69f43908556d6c7cac8e9aaa3f778b3c9e743d3ceba352da73cd3435f86f46ae39ac9aef9ffce9fb67f8fe477cff38a9c1fba71f982ba45cf0f43543fba5e570e8df533a43f6cf4ef883fa05708f628d6e4fcfdb159fc7f6e4ccaddfe13e09bec0d717f8671507cb3e9e00f4e8def531a35c6be25ebbaa5f7a87b9a8c930f7ad043e33ddcee03b4f88fb96f80c69975a11f8960f88139e0afb00e7c52d817f8f4fd447ca723d966fda2eeeed15b70639aaeabcadaf0f1ffadea98663d49ca32cf795854f18bf62ac36e0df0171595cb9410d68d9c2fe425a9393a082f1bde09406ce973edac7c514fa69db921747ab51f16f4acff7ea82f377d47cbccc1df5fed319e268284f3dfcbec6173b35a8512ec57e12670de4fb84b623d418d2923a1e60c3ad9c371f95bd458b1073f881b791be689c3e8c272fa861ceb8ab95fec5b5abf5ce4a0d7d8e716ad8735e944f4a7b587bb3e5b58c5e2ece9772da43ac863942ab863f6a5a1c96c8fb723271e7324e15b947d4bc203d6ce8a99e0643035f4a3ae22296d272107c1cbe909f01bed1a2e716b446ff119e44f62ba00f12eaba7c0be04398a0edf37cc8974c36d4ef939f3550477fabe333d3acd3011f43dae10d7294db74efff4b7df1c587ac01266e7f9fc07e9e96d487dd4bed87bc74e714eb54744dd939bf98a666adbfa56bc58eacf502131fc77f5376dbf88dd5e9204fd79b21463cf79334db0b7c4d0c43c07337aca755c55c2960481e12d44c803565afdb063df0b5f09b33caa3a13f9c61ed733a3a00866f11c1d970ca4cbc82efe1395701dce8a2021a378db9deefb20a347f4fc362d6afbc3748ad713c27fc369e4baa36c0b0872ebd17e436925ec0f13e3acf0be32661e3d201fe06b45b59a755febebf9c14e606f835b2bf7a5fd1f33f98a22f7cb9f7be732f3038ac82bf7f5faf8179653fbcf3bed9a8628eaffd7d257734cda38fb827d4ea056d863c26d5c61df59a7fb407b5fd4776d3de973ee6d89ba861ec4fed7e2a4e72479aa67efa35c09e9c5f55e2b114e7e3057ff3da559d87e274a3dffc2a7140c9ba00fd165681b705f283f45b5225fc03eb8d9ba4a73fe672cf282ffa073526c4a02f04ae5e8cc7c3222c6a3b279395ceb73b09a8af977a2519e7d70a38536e81a5bf2a9d403d37a29c3f69364afc86a89b5c3df41bd136fa677f3d242c7653eeb3656fd6263e08a8873ce2d9e16f375d5bcd62b95d413de73a009e62e7a5707deaed710c143725f64c62ddf67d05790a67196a6b47e68f6288ff429e339571570f757fb30168c985af85f798795157d32771abc85359d4b3ea981c64bc6f10d7edbc97f630e673507b49fa1aad95f65e725e561ee5cb52ca7788670eabc4f184eb264bd7a02fd9409de1276fa6733e871758b335e0759c1356ac82e3327db13de38c6b697c724dded4e47d43dcc2840555dcc2ab8ec17f203104c46f4573c2be2fa5755e35ec81e46a7221364fbd45585c53be782719db686bf21dc79cf6028c0dbbfe3e0768700bd690db1e61bf2d8d43a98f277af6389662a2d9cce48adf9a3d56313651b961d2865f63dd23e8d1dee19c85f337d45337fa67c836d1b5954fecffbd9d4ea8fd3fc1efa90ec2e4b8105893ba8ef38ff75f233de7754e48cb067b7539ce847f7fba4d0bbc86fe6657d04eb3c502a88f5d164b8c0587a9dc4bcabf273e9415708e8bf5c57aae3a1847e15e17390c39c758f7343908eb8cc3d3a98e9aa8f3ef2488c508717d49fc9dc927207bdb16145f496c81e0c930f99592dae87611f8e427a72f7bf44c1e17812f3cb5c433bcd1d7bfa53dfb27f1da7232eba8f3ef330d21c73f7b8335fd5258c795af3cb653dc6b2ed8df21e800e7f753dc3503e88198a60fd4cf27ceb16cd03674dbe3ca27e499d8b8f3b8b69a509f217062dde23b71ab4d8377d03c75c12ee7efa0384f2c7b2a3a3d099dc740e4a31137bdfe56b342c333119fe408c7c08ff75dcdf64fa24fa327a9d057c37a741cc1b72eeac5b53d688c2d3e203f92429e8f74b96d73e7d68e23ddef64fa729beba8a930ff8441a7fd2378cc3946ba5283eff663c274ca77ac7ba4318363bbcdc796f8b665be6aa1f34a1662c6525d2936b68b8f0d70cd7d611d3c4e3de0215b620c25b4c1545e2e259fccd1ce51395fde0cded1c11c00c36d11bfcb9a6a12d883dcc05cdd42c5c8ea4ce9ebd7b4591d0eeb2eb7fc1a5577517b18b5876e163f2443ecfbd4c63ff3cd7ece3637c0ad2e903b947402ef7da7f48523c5c7a37274ceb16057838fb695f73d066e9dfc1c52bcb60bc8f565a3b63aeb0f73cc1dd03d1737d4db84780b6d29ebf774d18f992455eae758112e41b7370fb8166cf606752aadbaffc7b15a5bc136b5f29390a668b4366d940f795bd2223ee5b614b0a452b7929d81c237a23cfe20da31ee20d9ffb1d4b940555f12e66f98adf60facff167472be4af945992d448eee4923b7a7e6deb9a07f24f716cb17ea3dab73aa33ac35df5ce44f028c11fd8f4a57cb05bae49bcb3d2deb9ce95ac7c70e21c7fccef25a0ed7c9d1f65d8f7ca753bf305ef1f140e73c8c57ffdbb35cad31778c7eab98a7eba20dda3360cfae45eda3ac3f37b9d318f7e9037241494e3955fbb26bdb12b71ac3d3306d5bec03737fd5685df477b837904356d853794ff453c25a6cf0c02fb1aed4d9191aa3efacbfd9e41767e3bdb1ebacdd046f35b36d92771a7b4ec95716fd193aafbeac5fe0f9c3e27fe6bf5fe7c48728d7580fb182a8d5483d6db633c9d7b112187ffff8fa5ae010d7fe1ddfe5fae414f4e9ab8b9ff084b3de5b7eae506ea49f3f4fe57cc4bc1f8b798c7b3e8a116b4bfe5e5547819a6cc583387281f1873c5724fe2c705137b789be37e6ec88bb0ff6ddb0aaefbb7565a47081733705ecce69419a228a33a8afe7bd996eacd461e51c56a70af28218673e8fabd55a133d8072cc7cf275983d93cfdba1ef340f2fdc9791b98bf7147ba5e01c66ef9505cebdb5145c5247e7315b628f9c8e0fd670d4a28f51fa974fa8bf743279a2b6a40f1914fbf3694f5dc6aace1917635a9bbe96bdef81f79f2b8d26cc83b9d5aa6e17583c6df89a565f7dbdc37afe7cbbeae9fd10e46333bfe51ca06e56fb3034b8a4952624ee3fffa3ded5f9d67e7988138a37161f54e500e59c6c47ed4e63e68ca8af9af6a0c8d3aaf3e81de29427e020458d11d0995ba34e3b9b834b6e47fc75bf3114fc01920fd08c81acf545e65f86d833d7af22e61435ac39f7ac7a7e7e26e9f652621a7a884daf25e1b09053833dcf39e853817b957b781ee6f7dcb482e9be5d1653b07ef4ef387125de6ebae990364f80fa193e60c790377cf464e33fa61c89e0a153b8168c5b21af7f19eb3d623acf3ee692c2e3536ef3c7a7a6ac974bdc1bd552c21fd620d755ac41b26b4ab146db54b7b7b15d33cccffdf41fe9cbceaab83fe89a325d5207e789e9e6a839d2f0b3b08fd38f4a8fe3c2c6635c9f0d831391f7cb7b657c79a5b509bd472ebfde9eab1e6b63ef8650e382de4c2f9d6ad8468ffb917cdc58bea0d7c73e63e40d988edac4d9f468e0bbd9df4d82cc8a177148d7af502f667d0bc40f69f45fbde33594bbd3eb5beb7fff9e98377dd270a9d3e881e90f742cbfa97bf07c4c88bc707fd3c3336f61ffd90eb0f25487ae4d586f997c06e2f34f9fc4afb2863377a67f1f6882e93693f1fc683663d005fcde35cbcf90c419ddc2a67656dd907300f713f1b1cafb725e4b91fb97d7cbba4003e6e509f90efa9f5813947f737881f9c57dae69bb49bcd574d4b5dcab065ae8c0e79ffbc632564951e38ddd773f7750734ef1f3b781b30431f583e6a9a7e1e6dc3dea4409ec9df91e5371adca5b8a6f7a2ebe6b29cf83f2a990ab82ae29d5265b99da5a5ff3f6abd5de268e0f1c4207ce3fa63884ce456edd630dd6005efb0d47c513f514d37b7841eb9b3acb2d5dbfe85a5b1fe923ec7d595b10b51e85c7dde8f69af4ba64dd327f9fb0ad6c63e052bd5fd6a453e4167bcd63048b8678edc35e8b29e732238e547a9e9f451d9e13329fb9ecd601cb70481147f672203ea33dd660b49ad807d54731061a9f0660cb9fee70f117fa703ce48b7382366a229e9017f00dcfdbdb327c817aa858878349dad6b12fac4e8ef73d6688bd9d34300f42f7d5f6a1a66132c7ba319f4319ff33be776d2ce4df8ff0efcdefe3bdde495ce915c66cba3e707e1da593f055d44930b967e91dd3d6a86bf876d2de83c6c1ed88fc36820b42f1142cdb6a7cb3b5871afc5477357f67b992e3057d70b67e4a6c979907adfa6d1f62f30f889d6df79b8febba1680d738ff04c7f294f5db5ace8f8dc962ba22cc969a77232fa16c626a992b666b35ad9721b3158d16d5fbc2c2373d895c31e00a2dfd5513b117fe55de43d29313ef0f1a9137e2cd14dfade2e71ff30f9e86ef5119bee506f9e7523f056b978ab325deb7b91f948f9bbff66ff9fc411e69de453c7b7e4ea8baf186f11d5d901f7b097d75eec6b3d896cbd076b6b96906eb6be1ec20472763cc0a6a7a7e697b5daef7c3a468674ecf8e4d6ba9fef984bd84afb82f416b8c5d7fc8afa79aba58cfe69c7d9b437bb999f9591d43c9b8d431975062c3342d1198df41f4bb608f16dd0dec1daad98d8f37a8e9059315ea3e2dad1a6152ff1bde87cedfe8738e6b7335077c25f8310bc1756e9e49bfce05fbeacdce3fa92740cdcaf4ebb1b64ab1ba3b6f131f59d2eb74a1568f35506d9d9abe4f64d34b53fc35163bf48d4f94f46698d79da17e1bb341a51ad32b13cbfb8ebd22365b15afbefe334d830fc89ff958a75d8afd6ff4e9a0e6eb77bc10941f58848f95eff40982b0aff73c4e8366eaf8e5dc765edfc1dc4b7b08f58f2bd47d676f80499d195c7d6955c745825ff6fb8076667cd27bbabc47fc2de8a6263e5569f7379abaedaea38e8b763f196f3f600e78da81b5e308de111edbf5b0bf408ff1d06edb796a918367badae83d93d0137b12f5027e4f5ff06bc93c980f79f94903758f93dc4ede7d4fe3da78e3c39ad7727a3f1aa7f4b840bd37e34ccd46db21d6531a88ff2c72726e1a77c728fc57f1a5a5e72fc50ded83c1a5922d818776fafb302af01da4acfe47df0cf9ba04b92a8784c56803ff405ad1393882cfdcee135fb5b019e714fc7dc51d36e8424c963acfe42f9f49bf99fb60233c97172ee494fb188fb0357f15365162345b8535e4ee3fb1ff39b63dbf53e31c6c9c8b6ade9ae9799c78f355cac5f21dce3816be889cb3f52b8ed582616671cf58ed41fa09fde43efa4d9b0b69e9b46fe0f3ffd3fbcfc38bcea9da6a187d169c5324459dc1629f25cbbdc5ab1bea5ce6be9cb0539bb1e5ace61822cef7a17404f69887e3fb2d6d6d3af7fbf52bbb7f38fed5257237908d4f9b75d4e31a843a16f6d9ade8585838db26bfcfa3a6c1fbe73d5e4785b59ddec8b7147b54c4fda9d02d35d6f1a4e18cc02fd5f6d12ac3be2d63cfc8b55bba67a40db4ed99c9e851d38b7537aeaedb7b6aa8dc95e851676b49d568e09cda54a9c791fcd9422e80de5bf439aa7e0ba8c31c96ed7be7687a0ca0770eaf89321ff92413d28dc5b98cbc25e13564ff5196ea359e02f6625d4d0cddcec1b48ff5e9fc37f0fdd356f0977b5ece1dabe7810e9243d8d5ce6df486b88a5b82b1709aff3be6ecd47b4a5e19ea336173fcfb6cc6c6aa4ff1cbd05ba9fcffd87bb3e6c495256af42f09091cedc78dcd606c89c38c790389306d30c63666d0afbfa1aaca9559a5c276f7d9e7bbdf8db84f3b76634d3564e5b072ade51a3188e4f3e1b3daf51368ef84e86708091f1233d61fe3a1f8800d6625c35c362d7fc1d63872ceb0c1afe3655c3f61b1f6b57bd177df9da08e0aae20736d6d11f4ac7e23ada9a1eb95dc1b46fb4acc71dedcd2391eaf7f098c9077ff99f33e2e9def31ef49d18b569f13866b01ce64be6679db046f25714388fa349fff15aa1f6687f2fecbaa31b424aee756bd20173a467a5dec166b1fffdde675d90026f28296c108f980a5c24da3f719f6623e5d81fb2169b8dc3cf65ca6aaceae7b43950d17b5e1aeea7714675b587bb0ce2daca9bdd03faf3cfcc9353a2e48cf8c6dcfa03d774f9a48d3bae7db36a1ab8f95308684f1187a9e8def3e6e3b7c169ee75a7b465ff71b3dec38a7b333e5ff9a47ccd934bbe27a81ce7f24819d03ca58dfef46ee01834b0d6caea60d7357825b52ad47599388586b7bb7f3d48cdebb545b8a7a07f4f79cf7e8efd171deba0acc08dbd8f73400ef766e9fc13aae73edf3926adc79e7c3e7071436b4ccf9757d057da530a8119e31bdad7be29eebc79fed65f1bbd8c3f3971d61e84ebd72cc29cefecd96b82fc5fb7f9fa73fdbfc6f52bbfef279e6ce23cf53f2fbbafdd04e8a3d9e531e6f0e6d603aef3b3b68a00631700949b82fd748c458b971e5e5337f547d0810735b58629eb7eb159d1fa829fec1bc14b6d570289d50c7e0e7abfca0a7b63532eb74487819f8847ff79de707c92f636a9d0b8777099a24db99e1c5fe75b2f317063722f08b65ffc473ae5b7b5bf42c90edb8f5607f843f345fffec7c4d4368a6f8e3dc9f9c731abbfadbc10ed74bf93deeadd5f895dced7d5f91e66aa8781c547d1118c00078f82fcf7ac5dfa4e75ae06181d755f871770f3e619da97ef3007a1ababf3842ed84fdbe49568ca1a883279f69e37b7c96d2a430d84e604aed9e670f3e45e50eea3cae5f62f03e8a756decaa1e87c9a96171044f9e42f0ce3588ef69f5d1377e49324c9a16ee25245c226309753dc7f4b843ef97f35473f625ae06e077bb6e527d2a69c4e5dcd6edcac68e448c1fd5ba125eccf851ec499d539ab02625cefeb3aac59b7e7ec2a68d7743e33f69ff46af3dd625ba063f7b7adbbf75af59b6778ece8ac2509b7adbc67d5f1a8fdc8edd33d6b9e67c82eb6be4cc897a7d040ef84cb6ccf80d9a4f1abc01cb35f539d573c2b83d44fd66e99a7057edbb6715cdcf84fb504af9306957ddb9cbc74eae6c53eb32af2b71491e8ab5a3e3c75f9e73704d5c231163a3c7d035cf02d37772be0efa960d54df57850f0b2c2030f35c7fa1b352f479c1bf889af61c2a4e398d5906b7df7055ce314c94bfa0e7c8acf79fd806cb877fde1c9c5a788983a06763b858b705fe6823c2def0e609b20063a8b532dc9ab588b594e69bd80b9ccffaf68c5567b9377ff0ae7cacb22f71605fa2724739bcd985fcccdfe7344735b279762ee8aeeac93105dfac37afcff6b7bdf3ac5f203464f95dc2c2afd2dfb012bded2bd7df70ec2a388dbc67fd3c4a88a7ad8a9e218d9337bde7be7c5a67eee8f968fb1ff64a3d1dde7cdd17eb46d8115fbec7e4dd907f10fb6f5debdb9c5cc785a31de1f5c5f338ef43cb07f83d75be686efd6ff2663abfc7b65cf3e66e3db105e7e79c6b8c2683ef9bbdcfd1f92ef51d8df238540a3be4d480fb47b747cae489100bdd073d83c7ecfbf6819b6bd56b87792319fbc2f9a8dd10fcb7ba0f6078e3cb8336ce0263aff1f73938d7684d6b4c9777de15efb40787b543ed0439f5697d73c10f74fc4437ded43db9c8ef88bd9e163686793735cf03fb1a9263d1d58bf09ea9daa7d57951f0b2093bfe87febede2fe37f9c9e21fff7771bc117cf4b0f939b9ff9d3c0cda2a7f24ff377fafb09b7cb7cb87f11a30c5784f53dcd912fc86a64cb1947c8dac254af276c277236e0755d79f125d43bbfe4335bf2159fb2b55bc71178f2e90e358c87f6b8d11b352b7da5cf86bda4f33a945f15b9ab05f53f4c57ccad4f3d4f22b766f1ab8b1e2a91a3fd443d937de303ed63d5bf5b3a4f93629d19bdb332affdfc05e7fedfd6cb0f0fc4253edd1dfbbfbfc9f9ffa8eefd2fd4a37df57c37873db2b8d13cf926194bcfa8cf093c685e7b24f70fc7f19edcba2f67363ea0afabf9fa45be655c297c2cbba7313efdcbfeac852f32e351b7e309e2111b1fc6a68730a67e9c51c3f58b75cebaed59a3c3fa8d8301d2fb4cf3100cbe9a47e22efe72eec82ffc66bedc7bf96c2b7110f9ce9a2c2cce1addb36861998a79f3db63d3e77ae95cd3b835dfb3a4ae9eacfb27c34ee3bfadfb83b792d6533e131ca6d5f0dff73fd43daed2c6cfeae5825fc1afe923eae563eedfcfcb9c295fe57cb596ab2f7e50718bc402e763c77fb3fa99341ef0cc7d693a9e11b896e0d78ff282b3bc7f538af1fe3077aeefd9f9cf655bf6bff53db2178a21561e1cc2f83d1bb93d127a3c63d42daf810f5b4c9b2dc1a37f2eaf4bf1cd611a38b88fc392b5ae4f02477348d78f17f2e3b2864ee7c1e83ca05aef6d1dfcf4f09973e2fc139a2193a7b3136fa24e9bbe64c887a4a347ce75479d32164e601d88b36b1ed87df57f743fb6392134e2d71f654d10e653f76baae177d48caabe9ac5d7bcef77c887ce5f4e947baa2e3db5b28b1852f4be03433ab4b448c3d3f12286ff2cf7ad5e2f8cdfe3bcb7ed47c8ba6a8abfe912a787ed43587938ae4def6a3dee11be1218144b8387f0188b868915c3eb77715d7e1f30d7aa95bf6c672dabb728541af02647754d7ddb84ff47ef5f77da21db5413b51ec247926daba56bca61280c86d0a1d960ffa537c829a87a8ec4b6676bf46e47c8ffb767d0452af6b3c133faf4600e0203bc627d50f3fb573ae493cacdbf8a7b9cce1a3d89339eec1b71eb9ab895c2e5bac4a7737c000fc46b8d79e4374d73cdd57254e29638e39a3c463c9da83da6f23f15d405c57cc4836b6bfcc98f8ca1cd9d7d64ac1ff565bf5e32248e6771cdc57e3da52f20f1ecd525fbac6a3ebb7837d1d344bd456df455a97aa3ec677a38e3baadc85f6a6e3985ddd41a4659c3bee77cdba7eb766a6de975ad7f7bc175efa83b0fa8174b631c52c4074e7c9467977407596b6b287027c6c65cc282ffb8c7eefc710087c57657e22b9c85f44d1f87eea8ccc93a57be8daed52e8199acd7c0bdd15add51cd57c52045dc47ba16ede61798f87db59c5314739cc715705372dc9283d349e6ec9cfe3acbcf9ad2399dbdce1b4f84937d75ea82559e37975f6d6c7349918d436d0c3c54fceee1ea0df991a084e711bd799da0ef68b28a1a528d3834176df49156c1cd31219c4e96a3662374a92ddf125a0f19b45b53de03d09eb67b9639cfbd50da269ae39379e3ae6bac2763f21402e39f287d32278fa37d02fdfcdfd74d0f5e56d4364c0fc31a3935f4692e540e4ff1b478e72d455e78cc5aa2d1b8c2797b3a93799d7bef39c94af5405d0f57b6ea88fd10ae5ea91fc3d3a72aed5b0d7deb642fa73bd2b5435e8cf7e4fe956d17ef63f2f913870fab3b9cdd5a792e3f4722dbca7c5d2bd7d6a4bdfc55631c94c559afed2f61ee840d4ab77d1b27ac6ac0ba1e97c2a7e1f1ca26ab3bd173a8f1a9538fdd00b6709f17ef9729dd8dec26c33a9667c02f9c7d622ccf9857ca454cae4fa4e79bb2ad3aa5e0fa6c5e018ba6789e5d3bb279250d45e2e5c3374a2e53f50ee27cd0b53ac4406c43c779716f738ee9dcf4f6cbb1d8176361b8a2109b89dae03763f2715a821351d906d7a69fbb23d7279773fb8adac37cda87fdb0b1ec8907d324fa839d335ce3077757b4df7c6b8cafd16b55c7502bd415e4bb401398382536a9a747115aa2e27ab527c351794c8ec51c797a27abd83761066dcdf21c8fcec5f506936661ea9cbdae79aa6f4ad7076afd69db226380133f5fd5b6c9ef75af0fd51a2beb78e67cfd1e633928afd1a8b89ef61f71d6fee8fcb4ebfb9f033be6d17c5afa1cf3f4e49bb35dc77a6cebd7e535356f61af46c8ed4f2a4dee8b23cccc69079d03ea1965cc16ff5df424f2a23a97081e92a9db4f927df424cf91553fd0f34cf99bf970e6f1cbd9663b7ccdd6196df0a384310e13e2030d4fe82b8aa30db0dc099da35122f499e89a1aae59b6a153c67cdfd355f939b9c237aaf5b3004fa2bea7f153cbb8e1e90c1c31f3e7f18d9507517e8aca8394e26ffdde19eaa989d27174ae8d1edf656f97f42784c67a85e2caee644367e591f5c6999b3c2d6c2469583c27b0ad19f8e776fff1ac6df8188be70ef521ecb1ae272b700789dee462af45459c9e0577621f8d8943f00d9c8ad0db52f731ff4663ab727c7a7c26bb5b479bfefb6fdcd623c49813ca1b96fa7ef5f8b681eff904075e189c995f29a1b903f6fd8f9e35a991dff59a8297bc469c25fb645df6bbbed10d7a87ff2eaeb994279a0feb0e6717d693c521d39dc0a67ecdd93549e1978b6b2e7176bdc71ece2ee8aae878e523bdc83357f6fd18db657290c5b94dfbcce52d2ef1551bdc78a927063c7fd1722d7466548da176f6e4d10487767ddfbbc87d3ade521d8478ef1fcd5938bb29f557e5b381e513536fd411761d79843df5369da11740ef4bf1eab6731107f0158f81c00800271887238b0b8feba609f9c3ccd377fec5768f6cbef145888f97eb6d361e513c47d68ca1bd5dfe5d725483232358501eb532a277c23a800e1cf09c63b78fe893f971570d6b1d4e59f772013b996cccbe638df0f064e3f872e6fc7b607c49041ed2708f187b8cbf43df64b47070787c06e8df348607fd5d471bc77dedd43557e0e9180c6c2c9a5c234954ffbbda39e567a675f22f3ae63edcf336905cc8e4b3d37dfccfa39ea2bfd2a20f5ead3835452e30ad648cd588843e98d18ce88431ada51cfca64edc55a13ab1d0c6d3fb6ee4e3fab73011da5ecca1c5b3e258816a429c1bd90fce7c4ecaf5a0b1ca4ece65ba41bfddcc8e0d541ec18d93c05b44f8d1eff50f4c4edb60bc87fd2bc99da9629fc9470e9e2ac311bab85083e73c097360ce559f12f33189b3007d72a66e06aeb474b0275f65abfa87c4591887ab9683653ffab9ecb2cf39f5f34fae770eb636e41a5a72461eff654331c5e9416a1ee89a79159cc5f8bb6fced96903df29aeb9c4b3768847b69e0d7271726f87b5578a85166171766b1ca5a557b36df2be971acfe6f7bfe32161ad9bb4f019a8a7e8b989ba66a66a76bade8eb19f8e8bb1cfd55e243ebbbc792e735ded0f451c67e26dfceebde7779c2e43dcb359baf652ee3f52e7a7dc27e0fd309abc7827e217c23e12fcbc2e26f74b1dd3e8e2df29db4a3a2d2a27657c49a3bd068dee78b0a73c6e2472357a1fc12fad46e8af53f732eb49f7e0603dc5454ccd5844d31fbca2dccc59c4f9e457b7bed35f75fbb9ff467f55edafe1e6468fc1261f59d81ae1039116faefeb26f4527feb7fcb5a7b934f357c17c69ecc2a846d644dd162adcc55cd697f63d787328c95ce132a7bf316732f52d76b3f2c5ca9f1790557cf8231cc2a9743ff9ede423390f564c3dd9d2f46e8629ef43ad0b6fb7862bef62aadff67f2b9f4ba5ecd2d7b3a2861b3729c9fc1dacc5d07fe74b79d084e65c56d6ef2333171fd74c9dfca02703858fc5849d02bf9b0ac2dc5ba08a9aa75ab3328446e28daa076b27cb1c7c0e84cf4706682cf3a0da1c7773b6b947b54c6c53db5def5e444f9a0c30298167e4f8ceb8533c6cdbdda7becfaecf261ffad8ed4e27953d227c836666d4ff6e69c6856c766fdde176707b4cd5fcbeb64b2791bdc30a78147bbf808bc12ad9969c2b52d70ca5d1763697a5deba57a9fb06d15c51b7479cdc8677fb366f01c708a65c5f792de0bf5073f7728071725eb9ed19bd9ec684cb335f926fbd0abd735153c5684a19d5cb72ddea7bcd9e06f31f9e461837343377be2c139712ded57f1bb19fb4ec8fa1db38f5e992392f3b779e2f30d6a54ffb478edc327ac3dccf937b574addf60dba38bd896dfd765adaae1dda13f805ffe7a5fd255d77e10fe7ddadf439f4eea946f57a352ad0e7bb271588e621577cca3dd6df25ca7fdbbb2cef3a893fbce73b7d6f8d5b93c9f6ceeb06f85ff15e7a877bafae6f0a1c4b579ec701bfc7f41d75cf14dd93d3c32777eb5084a5816e6aad3f9bb73af74afe6eb8cfafb87e317caaf4d6e04d66e52b9f9599c7889ff626c73d58db2ea48af9b53bf6df3812f827e25255dcbc1f53b72ae5be41bf3e59ab48e9a5cefc1dc6e6ee1876c1f998f077da963f0352411c5491be4c2feb7fbd2ac85e9ee45d9b461ff256e81d3701f33eec5f4a4242d8bb3419c698b7073071dc0ed0ebca07171cd6dfda6376a1c7bdbce6e80dceb86e212c6bc0efb39f5d56545ac44e7f8e889780473e173b4480718e74c5edfd199fd507cbbe901c91acc0d148774df8fa0b84ee38acc7accc778bfa4783ef34fc2c62fa6fd96d09136d8b2ce7f116b352f6070d84edcabb1329a67dbd7336bb7643fe59eede818fc0ff70bfa133e943f4c63d89d103e4ff84b61f6463d1cc9b0095e63390ec00bf9b06d8223f56fb8fa97adbd8d79cb3713aaff8c2f68495be3fab2430e057510f14d4a8bd6601c505f9eecc8ff0f845e68c435f69d893762e58bea35aa72fd02eb9ecce9bdd57c85bb0fe3cb9ab36a5d5d3480f952e3d59d9c10c714cf1c0cf6c535d237392cc81fd063d85914d7483db1b0e63c67b35d8c9e2cdf7cdeaad8cf996cf6f67392b7e21af99cfb707f87fd6ee2ae87706fdf67da2c9e6d7895899fade3be4fb490355dfdbcaaf8ae8edea7fb3bc4f76bca0dd4dfdd7e22c3d5f666db1f85adf15cdf79672c96bc7e87eb9396b00f1baa6174dee85c9917fe36eb14eafee7367411187710aa9881f8c4ae5c7fdaca8d883d98b63cf63130bacbe135c5c961f14de5e700bf0a7b9715e3a1ed293408a9969ab57677884d47066730dd9d19bb010cf35b627f177167ebef925835e7bb106beb671f61d3a30c3115f57e0e4defc592cf08eb1e844fe80f8e41f1fca421f24798e3fe3bc76a32be6fbed963a2c6312e5d3fa9bc3bb15e9035cab11e8f6b1a610c22e6aa4c5f768c810864ce41ddf335f360772e9d4da5bcf6e56755ed67c9ef1fbfd967a0f1b7378fa535aef63aaf71592f8c9c75b757eb60d46994c7712ff6aaf6c17de358f2172e7edb78bbf062597ed5f04eda4f507307fd0cbefe300f9e2c7ea66cebd9b7255f43633bf8dda42d28ecb5c6df195efe8a87e75ffb2345fc39d9059cfb4c3c6bf71b5f70883a3f5f7339e779263f866ac8c9faaec4a39e8d2ed676d15bb29c6e9a162fcfe0fa8a7510a47e32f79b2c89476d7a57eb5bf5bb751853eeb262fc86610c1e365b4bd28c95c265675aabc060681fbcf12571038e0ea89b98df97bfafd1df2e7d66ea737ba0b8ab6272125a8be627ef044dfa9fbe13fd1e9f7ff84e61ef236e74eabd61fd66f97bffc3ef10737dfee135c111e7f2e2a6f46e42af65ff419c9176ecde04c669e6e8f7a3e7846caa17bbb8879f6d3053efc879a83c97d1d3d71c44fc9bbacec428cf9b33e5512c6ee57c0ceed0c20ee8396e56186ba56a3b723f281fa707fd13e317ad1dff2b8c2d9f376dc5d6eff3b076676115c3d3a7e30fed25afae79cea7788ef287e2970af9339f8b06ceba0fd82aa34998fdf7d872eff8ccdbe8f966ae3f9e93438cbc4533f4f035f23da3fa8e73332a2f20f574dfc9b62639f27ce8b9d79a9a5a335e686ae21a918374ae617cb6a3cda8cf66ac11cff5d000671c82c065b32dd37eb7c9e357ee1eda6a4fd4f8fc94b8975a689fed630fafeac7fb5c608fb5964166f1aa4a9cb5fcdbe5739f6cd3b3fe2fc5c1ac952e30d8626e3aace96bd5c44f77f67dc0dd702caed535d2ebca975a0eb2cf43ed57f839be3d1e613de577397a35b7d044ab18aca819bff464eab7e69c921af98c91141c5c798983ee5f1df7947b21d4373c9efba82f9fc81f792f622c477b5fe971fd70ffea1a3cd7508bf135fed85d65eed155d5f751732ee2fbeb77f6e3ee6a2961ec2a29fcc898732e275ea7842d4af99dbcdf397a2fec95cd9b987cfce83b81e115f910d6c4cd47bf65efabae0321cf3e7c64bebe704363d4e77362edf0fe6f6c1c8e5d9360bcf03469bbf93d9133ac00fb183e39389235ebeeb6f6b406de7ce3c038f4e63bc5e5f18435efd2b5b506c00daed61c9d4b43e07bc47931838d421c72711e24f69e39f28b75436b3699eccbf64be33f4c0f1b6c8cf2bde93aca9388bdb0677c9af1cd15979e1b53ef119b89de399fae26e652e7d0643ed3ef2b64a46190a795fe6f8fcfc171b5f683c017c3739416efa4cfb443465ca2b69e6b2d591b9ba06d8993bbe7da5957d5b495eee8ae173d050e2724f70fa818846c29e18cc49cebdc0e617e294e09bfd3c597bcf23f599fe2dba11be2da738339b7edb9e1491efe763171a6be1494cfd76e0bb685f4d5c21fe808c9f17b47fdf65fb373e3bdca9995f4ec696cfba15d0fde1cd206b8996b8e3f505a0fec6b654a0fd4e434a817147ff70763bea33efbeef895b027bf4b3ec1f957deb7f18a3c3693a0dabf41cd4f7328ba73f53556fa041e2b71cda5fac6427150583df5af49e0b31b255cade4b7e73515f5e1dfa6d10efd25dd06b08081c01ceab306fd55be582a3d32cfc5f8043d83b1bf8fdef4b7828b0b5c31931f3e43f0112717dfcbe4e07df1da4b0567e0c03eef66769ffee9837db4938d4bd3f366cee14e4bf4d7e97f1b12d7c35ee5ae33852dc779795c50fe3cac14f791daf5570be82077f6bc7f557c742b78af4d4efbdac600e5fd4f1ad7b455e17ea8754a7dc3563f14342fc57bc4931ded95da7ccd3819f2f7a85f49dcbf9a341edd5cdfdb1cd85e8115b1c6ea7a0b8e8a29fccde302383b65c3addebfec0b4cbe5ebbbf804378c89913e3cbf778d9df9abc68c0f92ef4ffa9bcbdf2f527c78a7d1efd22fd4ff40a2e80f753f8786056f47cf6b0afe4dc2cb87e64e7f0f86f02f13786bf76e6c3d113ef9307872e7b154ab6d6c6b1871be4d0842f5359504fdb70cce74e1058bc1425cdbce9f800ffcac1c927a357ab778b70f869a34a98a50f9aff648aef0d992bfd29f78ca75a3f06bfaaf506a359ebd23ae07ddd7c8b478f1e9cbfc1cb10fe7cb22bf17b897ba8be3f83fb6f94d6c4e415bdb0b69f493ccde343d2201edadd2bf606f91de1f507fb349df27e29737a49fb7fcc080b32a97cf65973fe1c532f6eb4d9f5c1ddd4515a8b1aa7a8ea4fce388ff7336845cbbed5eced81b809854d993f375b0e7fbba7770d7cd5e6dcf8801639ebd2c93d367b1dd8dc1647e247e431e377c814964efd5da55fb2ebd6fccb3e44f82882db3eb039dc7e6607bae0971bc30f15eb362ce671a9ce890dd74b3cbcc58bf074f7d01e17b6abd2dbee702faf0dfd26b79ee6e39bd2351773eb8d0ad905e11f100efa84b5ef9cf7c6c7a21c16e5cb3e680ea8b7365df77cbc3a07f4cd04369e736863e4112fab7c63105bb5dfa5382775cd767360cc8c3a5baf16819de38c8b6b642d3b6f1e9c1c66addb7874739857ddc6a3759f6cb86a59f7891eab463b9e6ae2e1f0b7ccb7c6d110bf6f543ffe02fe953a137fe2636ed18f2aaeb9e463deab7560f9980f56ac11f5a3d29ab738c5a906b2afa10632f9a8724fdef58d1dbbd43efb1627c69e62d713f15bebfa8bd6865a12b757b8c17b40bf4c5fff99116f93ef5d74ed46c7f253e03d9a368eb9867b8bbff9601fa4dc8f94bdd4feab7e24c4dcc3c2f6291cf015e77236c4ed5f450eeeb66ff7ecd27b54bec2a2fc97fd4943ce9f66ad3d7a49e99c0497dea462786505af3c74a6c6e037cb26b1750624e3bb92ce4dd6da13de10bc7a598efc6e62e98c470a33ec8f8365ef186b1d739ef422af98fe8e118d1bf7b6414343f1ea691fe7d9e2828976bfcd1c85ec07f5df7b67df73343681381038573b3e122fa9fd1c39f71f555aaff00b4d9d300bbece6fe97dc2fdc6ac653c7e4d90d322cec2518efee8712c71bb3a8ef673ad59fdf88fe63d59875af0b3dacfd1e33006df3e7417d2e6abef3992dbe7bd4bb5f64ac3aa792fb759eb42ce4ee68384dfca3130fcdea9e264723909b80f72f874faea9a527e31648d4b8139f9e4f703962c4ad03b1a3b71567cca2e68f1d09a34f6887a5d9b3d8b5b56e7d033c15da7635faf2d6c9ab3f633635c8f8d012cf671d0f0d96ae5832cb6b8d7a567ca5c919b9b56cfa2babe78af31d54f4d5fd39fda031edfc2b7d276f8c8dc6f4de4d1440f6d351e7d718db5b674bff07c0d6e9e631f5c10ccaf4f6746f716bee76bda78a47caad6b95a3f79b8554a3d43c2afba2ec579a20fa65ecafba12ec4f7071f65b40147f8f2a566f7200bbd56c64d64570b3ab7694de49d37c1132b72f27145ac639a67d3233f92cf973ec37b9762dfca9a380a4dcc97fd846f5e706976988709dab0665cc43b89de71fd6e2f3bab3e013dc861628fcf90bffb21eadca06f129c21af2171fd2f87339aff95e8f9d2fd26d3ffabec98d4c6d75878e4102b77d207d3733faa80db92d7b8f1c1b2d718dc1b7f79ad3e134f2236d17d44adcd851ca19e63ea1f627f73b3c7ba0a0c4ff3a4b643ac69c544cd51e95d69ec86a84b908fa87180e5fe10e71dc4191f06ec434f3b9213fa4c1c0e36deed1ff0222b1c88392bba6d60a814df87fea6d76fef81fa50988157251e821b2af48e897c07eac908ab11e53eac5cecf3ea43cc97ccc5dabd2de7eb88de55f60915316baaf292096adc0be0e755af0d70b9468764cf78c0ca9dc0be1b8e045a7b1fd5e23e929bb2cbebf2243878f43e7a1ea3df315e3f324fbce1008ba937fbbc179863cd0989f70db34fce67686eba0570871bf7b737fe6deffef6c1bf55dcdf3ef9b7eb4fc436466b7550e28bdd9f8abf973983f9dae4eda27fc0df9d86b53b8bc77672baa7bc026bdc8c3fa96f8e7c1dcff322f13c8385afc11e14bfe93c34e5d2a93eaefa81ff0b0e868bbd02d67c0a0e3be4ffee8b35a3d77f6dce5a86c07dcc1416cae204a98097f7b60f4ee885c043c7e0e4b2ec8a1e0f3e7b8379e311eb3f515c32fcef5c73d09c1273e2959c6e5e997bbb032dee320ef943e5a4808d6baf8486f6e347a2b079fd9b7882f9c933ca2586a757daaf19ce33cecdcc4749714ede9a9c49903ab8fb6cda2cf6e6adda9b2696cdb64d2787939d14063c68d68b5842e756562727477328ee1daf8b77ed508ee6289ea770668ba84eba899505b0bc9ba383e53d2e6d9c99cc138ada34cdf7c6bb4717bc9edfd5ef7abf7c72ad09d77ffaf6f192e741e2eeb197e78db5d106f9077c845fbc937e26bfd376113c810b49d597a88eb5862ff0c998f21af9be55dc376a54a00504bbb8cf31aed33eae4f27b8fe6d3030bd29acddf0c5f8b8b62c3b0cb826fbba402f7513e392bee03ab631d315bfcb704ce7f439195936cbf47079e66daa38116dcd523d5732b769f5522e5a27d4db63ce6bdd72eff263c83d393f5e4b7bfc7efe05ed431d6feb9a339e158d09231f25c8fdabb3c7e4c9c1753f20ded438e811ff073031d2bf10385335b6263fff4cb88cd16f0b0f12415bc0e241bebe634dd0149c02268fd4c5d807c095ef6d3e4e7b1f2e2694f34d3e16e0d3614e8c450ebbc47b7e9a1c1ddee22bff9e2fc55cfa9eac8378b508cad73ddaba275be6d6e7b374165edfb1df7ffdd187e6631dda9384019bdfce5a259f64b2cb6d8cd7fae8e8ade4d9e8af9e8b79ec0ec7e5e74e6747075b063c297c7bcead6d91671239b8d9790f1c4306ec19f26bc88372ce69f509dfadf958ca232e9ffb14cbbdc6367eec3fd0d0123e59b6ee89de1ddd234d7347bc54dccb297cc46876435c428947fb3c99401ff1a4ea0c5aeb133e0bebb6f42797cefdf4e51ae7fbb8146bd3f8f6816fa75ee42477e64a615eef2a34ef5d5583d2fc0e3d8c1bfabdab1963da2516be02ad9a10f5aa23f7a4acf6e4eb65a4613ca932763022cdd87505fad3be6ba6cce3d055586ca3d5a7fd43e25ba03cd0bb8d3bde84e0d2262ee836e2f24aca5c565be847555ee93cd9a1060e1e4d397ef51d38e1db881b03e88c466be88ecd37647ba0abc4d8bdc92bb420f4f9a3e2d9237019322ff172edf04441279a74abd073227218d112fc91acbbb49840a3e473069dac4daf740deb64edc6f27b740defd3e10c8b12d2df1b8ec043aae72db3f5f926158cf942e8a58cceee35ac73331fc3b79e206781b8ceb776fee1dcc7bafac5dfdd9d28af95e59d66e94c1876defa675fffe56ee7d943e779c0e7e21c3d80f28cc98e76af5d9c2fffa67f41e02905f79af13b64fe749c67c80735defb8425851f52f8f3943fb9163dfd941bca801d59e438df8edd063092e0ce5f96f4fcc65f6b5f0752af47ec8b61060c0af020c24ecf859d9edf12e67764fa870d6644d56c32d6c4091a86d7e04e6801e9be0ae51be93c66e4e097dfe79ceb16b9f3b492ac47d61c50be12fdd6beb536e47e289c3fd1f8207a4bdfba0d2b872c7a2f6cfe178e3bb3b73ef7c242bf38297c478389491b25edbae8476bee4b2cfae8dc2fd500598347d72af5597f4ff5b66927e49a13d98a55e2d6d696adda8d7bd6c91a69d2801e3ecee7c510cfdbc30ea25ee9f73732e2ca1a3e1d4b7526cf7ba5931ab44ab93798fd8df90bf1ea8ecec5b969d637b81544df02cee7e52dfa31c30c3c0a598575a67c67bee652615deb59a5078eccf1ade3134c4af5f061133508dff93f57719bed4fa7ec9f9f78ed304f78b21d536db8361fc5eeda014fb1ef79596b47bc6b35f04ee61c7ba9f8dcea399dd57c3a520e764fc59c869f6f0f4ec469ff167d63e01fe7dcd4a241381dd6a713b1e1694875b1c2ce238fa1fb73165ff93fd3d907f7eb235f762a6213a973c3bee2c73b380ca24e83fb0d6737977bda3556c4e8161fc0df821cd486738351826fce388eac60cca299131b6b1c366263618fd3c21e9bda07f44454dfbeba86fbf62385bb3179a6ebbbd23c459c1bc894fdd2f62d09dcb9f5fade2170b5e2dbe249a555f23523952f203eaaea22f832b6f6ae23e1d3f3988594f7141aac52fbdb378edfac153d0eba7f083c5fe0ace13d92b4eb77561df47c5df3f4657bc62d203c006cb3c6ce3a7800a19588986fd87cebbb3800a93facbe57616bbffe5ef2cf73d443bdda6f421f1939a678021d1cd869a98998108e71fa75cc43b98984e2cec12fe00fc559c63a8fb009a3d39cfa8918b3c3bea97e5755ff167582ffabe621096b8613b6595b003726d6d6b60ebe4ebdce575765fb9b893e1e8c6f713ee87a9b83593678edb05ff657aab6bfa27cee0af6e89fed17fdfd9efd722fce14c3c7047be93da35e4e651b99277b3e474fad720e59e5a86dedf9b076f5253e21943da3b0dbe1b251b6279c2b2ed6adab6f27f39c33e473640f2c7e9fec3aa4799736ca792bc6d3fe20cfcaf94da9e7eecb09eb7152f5c1f29a5b4eeb25ce990418e152fd5bf8c93246aec32719a16f5ee4aca115f40abf5fe9b139d8bf643a6e5fbe4f70204c6a3cc1fbed5887a8817cfaf2a552cea70fae897b3ecce0b3715f3acfa1ca779a5a9ec6d43dc0af1e03a3cd58cbf1678c7a54ca7e327cb3d567bf84cf1c5f25cc5f56f61ba78f5570645b3966fdcd43e4b308e3b6867fd86d78722bad0d6ab98c1bdd5548b3b0cfbcbcd0c3a01c01fbeeabfb12ffc630438cc75abf9d178a7727c096dcb9f7e0f7186e38d7cd3c0064b7582f723a869ecb10dce763fbef877727ba57d61e830317b11af088690d38c15be1f331061dfccf0b68f9f4b8c7c2be46fba97ccd47c6fecf17f9feca6b42f56a6f0cbb461fcc727dfce2ef1ad0ae127adbbe73ef04dc5ece6796cf067787b01d3bf884c266cc0b9bee6066d2eddfda8c7195d661fc7bdf7273ef568c35bd3b72be3ce3fd409863d689e638d4d2e8ceee4ab1f264d576eff350797263d323e71c593bda173f67d1c668a97fd4e0af402f80f9ff095f073b315955ca5c02e3a0cbd856e81d0da1f58f3c5f8dfb6769ac7af06fee0393f79e6ca05529c7e29bb18a88371bbac5d355598bfe9bb1425e71c838109d9f76739622b7313a9672aab047346e3aff7f61de3c733ad9505e93f3c8626d6753c7bfcf9bb51ff4ffeaf960bd261ddb50be700a5e4fee0de6faa095f75adcecc9ceb1dea4b0e57194947d19ad216ad767846ef55c6861096e131bb7a363636d3b950f267075be3e2273162f87e024fdc41cdd22bec05aa53301390bcab7e7a4f5380ebbacb552b17b3263e81c9b7a14f3c004a803dd959e319dc1ce6b8d79c7c717587af499a2ceb08e32d2190aafc764dbf83c28e7ad1e2a6b075b679d73019d4ddd61f6859dae9c63d4a4ae777476c55bd465bceb3655eb56f1469afbad7e92bbd9a2c63e54dc3a941f0d386fca313e6392ee7c98a413fc3ca169ebc409fadc669d5cd7c777eb78fc7e3aa749f9d71ceff74d9c32133999e277273f6bde97f93396c5fb6abc1ad9e3f6f2e5eb1cc5bf95eb5a8cee3eb220a9f7a6d96dc2dc4e7f9683313d1b068feee450fecb7c4e3eb3f81ecc3e963d3095b9c345b99c5c537fb0d023b5ee13019b577abe7336704c2eb021b323e59290b770ded3f8aa7e4ce233ffbb772da33627720d227f952a9f45db0bae937dfdfccbb9597fdf08e109bac0e9364ff0f92e7c8b6fdf8933fde48b7d53ea2dc438dbd8347c27b09f97e6d15efbae2f20f246621eefdeb1ffd98ffde6f917ebdfcae7464deb1b1bc13c6a02d3f92fe50be7d3a6ed4f44f52b9b1fa5acabb43813f7cd5fe7e74c1fc557f140e52d299f078c9b18366b5e8e506fdf9f398ba7f51f6220e2a8384775fe7cf389be0fce4d9d8bb52835edba6e4ee2db3c755001ffd06413ff0807317905a6eb3e5a019b4b7e11bfdf38cad676cf489c133f90e014f2cf8fe003edec59e3a8f3ba64ee74bb2723af039f1047752f9695becfb737e837e4265aa7f2d9129ee4f95ae1f3f59f33e358ef18632dee5fcc25f554cfdb19eadde83529d661ebfa56e598a27ab9563fa91c5d5edca587c351607c959e3a7d7b760b4dfa1d6319779f5fd665bec3f785b54f8f0f512d9ecb5878fd6f3e8cd3e55a8dc3b1fced351573cd3af771dc7e934375fd15c7bfface1f707c18f56fecc364e135f3436d573fae83f1d99e8a5a91e7cc385f7f581c5a2a07cf1c5aca87d2f974f850628f96b813e6bfaf5ba5efceb3c2fee85a99aa3bbb6b737f923a6496be6abbeec1cc6737b3b23dfb5aef6df8147a6ce0255dd53059535e7f43f1f32df8bcc2d57ba95f44d77ed4dab80f7777e8eb21ec77b8fbe935ed87d6fe56f19b69fe541f87ad7b4de3e1b673d31b35cebd67a50de4bb46efc3c6dac34d70172cd0a7b3b1355ea7d0e735f9edddb18c33a69892cfa1afb984443df86ce17c8ea80db87de679f6ad1e83879347606add3af42bea35f133722d9f29eb129e1ccc7cb85c7f8f991763724883d4f239b867b58ca51678955c6071d5df3fa21fa49c77d6b90af50e1174c9a193a06cbe1eab3ca37715dc9ac9067a103a3ff64839fdc237205cd2728b7395e6e2a3ac4ddd3c0a1eca138f554279a2cfa5d3b78adc0d343e47e7e24c621e0ad2caa75e96750d79ec17c461b511f70bebd897f705cfa7eab138568bf7eb3648eb30f9ba7e55eeaf65cd2a950b205d95d9b18c2f000e2d670c99cab388bc567d4f9c26f336c526c07e193f1d7ae47b68bd854fc55c3b3c8b99e213d23e1b69bd8fa1690afd2de417a13b122ec498cf6fc79243d7c4cc344fc04b99e724e8799b6fa8fefd2b07d74d31473446b67ee35b46fb7c22793675ae3476b077e05382d6d6eaa3ff5befcdb9e26cd5df911a9b6d70d1860337c1f8c7ad8ae119d9bc2e294768fa7408f7ca58b1fe8eea50f3dbac019f0958eed9017d84a8a98cafbacc3930b17882261b7c67a2c6853030ca876adabdec72afb13ef51f8ef15512d8794fda1f3acf35b675fb056e4cd57f753df954d84b33e6c6bfd76b50fe7dd212dff33c462fc32cdf348cefb04d995b101a4f71bbc9fc3f54178d767fd8178c7e8a8ab459d9b67e578a93f45e74eb209fa3df862f8e35f2ea17ea285fecc13138bdfee53d28d7c6def9ff2ae33fe599cd1cdedc1faf7b66c183abeb2465fd6451d3a09c4852e2ce1d55178d47d3bbf2ca3a595bf4e606ccd9d3df727ef89bf5b02daf87ee74f793fe77a90f7914ba2d3adfc271a2f651b7f80ec1ffed9d4fd441175b704f9f500768bc5af319939d9ca6d5fe99e339b10f1d5e0b8d95eca2be8e3e255beff3b9deb2f203a42112421bfb137e04b013eb88b0deb1ea0f027eb9c37ecb1ab8d76cb86ab34d623db4ee6de18faadea3577c076311285746ff7f74f4c4954d366b0775af923dd5674922e3157d4dcc3588707fe36855d0b747dd06f3682e942688aeeb610d467c1f5137f9c2beda7a965dca0f4d5fabcebeaa751bfeb36ad946cda6568c9bee63ac43276d61f69b79b6fcfb8afc9eec79853d57dc47f57a46ace3e69e19228fafc76dbb697db5e7d2a87927ce0fc331e3dd735aa38ef0337fd86b347feeb479cc8c2edf54e6e9ccbad7357de8c7cc110ffec25a5de42b1393360e4bf4fd25b8d7a2b023866f321dd939ae07f77c113c07cc8bcc39a587087ce1ce1833df3cc714fd868879ac7a9ee5f73eb3d6bdb11f220612bd78131fafce3a4fe98c29f714ee53f0469f3efbe518c5eca511718ce873a8893e7a693bafe0c3a366797d63e9c745d061b83406b26ea1f4184d6c67738a30ce2b2fdebfabfab1573731e66a24383d9ab78273dae0c8eb7c6e3c6fe0d3abf7953c45d0006f9cfac8c375a285675f24aa47dbaba194e34cd17b40fbef415cbac7725ade5bc9946b10d63b092c9ce887f814fccc27cffaaebaeb7b8eb3e292ff94397aca02cf769b905dbbb8564c4c068ef098b1ba073be62b73bbd9f1eff516da7c95356a868bdbba5da3d17eb68ed1a8d620e2da45ab668fa7c01c66915c179927d6231e32f0b79fe211f3ff6661e5a61c472a8d528a7329eff7ff461c69c6877007ff7f7cf877f161d9ef551a82c65f063f79d4bfea95edca11355ae11bc49bc71f8da5ae798bf1225b40b590363420ded0779ea3eff3bc106bd5f6ff5f23a76f0d7cfc19e77ed0cbd3bdc59a65bf7ed8dc535cda6d1c2d5f45fc7d20df613070edd3f82434438d56ad63ff488334220eb4f4c4f5155517219d732ff74caa3824749c82985ed8e0eff8ebbb1edb7f99bf7ee3728bcec459a7f3eaaefd2a69f693ff307b303e0fe714908f2beb4f2c98b7d1c6bb098df5b8f151e2bdd6b94fbf3dd2b801a706aa6cb7e94d561c48b1137b6fa22edb753507dd29c5da1fefcaff9079dd0871f836a579257b48d833d1bbaf6ab91203354caa4eec9fcf4717b848852e2ede23121c50439e1be26f3167a7f2539228b139e8a32c470ea8dda1359da76b5113f470a9ceb7bb2fb954c9cf9ba147706471f924c1875dab8ea07f73855844f04d28fcbfe9b7ce02aa09273837e779116f098d597a0ff4318c04bfe7ae42be6b3ceab1cf65cec76c6d3881f30d7a13d1a731b89e313ecce8f085c71af2d2e5bf0bf177795203876cd494baca47db9fd3766a16a442c766d5f6fa54036bdda06ec07acf3aa712730fe6b13fb06a0bf9826c4ed4ff240d6c134f5596d4371bcdae709df9adcbbd7072ce0fc0c5ff2b9ac9e9798158a1467374c888eb6ddabfe798be77f26b948cc499b0d973dca2fdee01ce65ed0791df328bb04f73c27f662fa84be7e8190d6bddd2fe8fead8935d60f813d1affcfdb396b7cd561933a47a54b4ffd4c65e3f4c6e5cac867c9759957a9a960dba4f856aab47e270f6bd830febc37fb73fa6e09550d85a75cd2c20fce2aa839ef4d2b51fa7c119e75e9ed09a99ecdf7a657c0f7f4b9ec41666583dfb846be6e1eee64fc76c3905e65ee8937542e0eac5f531e91c8bfab57f3c5ea1c5adf213a67ec56b4feab08fd1bb966d689fee6b7de2c71c7d81f9f7bd5b1ee77d9ce7899507d7fee97e078ced97cfab0da0a3a2eac44fefaca9aad64e055a945107ef21e6b896703dad82678674bf0d7c0a5a27197afbffd24e55e2afaf2fd9ab4d90adc18b3a9336691e74f225694f4efbd59e55934d4f1a93dca8f49eebb1bc2e0d3a11f82c1b94cbab57fbbf2d9d74f2c98f74c6a42df3ed83fd1db826d17fbfa31cd731258ebe50d56fc145805ea029e28140688041a382cff9d17b06ce46f2edfa4d3b36f5686ad9cfbd8a1b36176c098f36ecbf39363764ec71f3137d522134b8b7f781e9031d938d5d9d7fe8efbedf07e56b2ef9bbf301c5159b0e6320d4382bcca087ffb3867f1f26153a676dcda2ec247474e55a6b5b3803b16714879ed48e8d666cb322e737e898230f529d596b3d8d2e71c82f36c0e49c98db52f33f511d60c9dc35028396e0efe78aff31d31cdec0fecd30d6b368dcb2f503aab95dc3116b43f335cb5a817826bfe3bc11185d961db86de7833df5678743f83b966e895eefcc51574991c39bc5c6b69dc0033d517a8b789e89dde4baa53d8bbe3aa9b9c3f7fea722702711f34caafb6b7d0fa9cb30ed1f1c2c67dde684e0f8477cf33111dac18bedaa25df8338053c7da4e23d5f6be0b56881ab7857ec3d753d6c3bcf6dac6c87de473a2f941e7dfd01ae8e51613bdcdea06cbba23ec6ea0c78ef7dd5d672a331faa72a6abcf63d27d0c87f4f839ef10b575bbc97ca49697c15ce67f94d8495b0f051d783d2789d55ee58cd9feab13639a7f47b6d74adbbfc3ca33c713581aedeec5b1b959d9ddc07e1838dcdee0ebfce87ca1ee27bf4e135c59ad33e1fe349553d53cfd16ddde6e561ac6c38433e58e4a015be39e3feaf0867cd3959c37ec971de8ee83d9bb4ef5f81b14a07646bb233b869c5fb090c62c898dcfeb1fcfcf1a1381fcdb8cae757e0c747b388f2e00bc1d58731133e5fd2ca6e4bd8c37c867e9584fdcc9cd747ffec70491dc4d969e642f2c08fac5addb24935d6e3b9b02df1face705b2567c1cbacef8fb3612471c4d0d2e3de998f00f328fa6d92178c6b803d932767ae1d7464de5f8ea7d01f200dd384cfb27f713ec15d699fcf15d472d626af3f39edfffde78faac5bcda5a9aeaf902e3a86a06158ec3febdf1bf2fdec3d847692b065c93d47a2d1c9bfc7beb78a2724665cd298a3f820f73366cfe17f3be4b83279fbdee9afb93fee0e17f31ee5ffb9eeb10bea735577ebb9edcec4b5aa1e857d67fcfbdbf5f691f97b449548cb81d9474804abc5a064f413df77eee4e93cba5dfa02fe3f6421a2c2db4732e7073c95c513007a72adb5ec2a25ed607d7dfaef6366ba3bf5fead134fa9cc4650abd9b2e7c920dc50ed03dbacc91a6f3f0d0c381669267cc28d7d902f696f4fd4cbde5eef4879ac08c6b1535c3d98d3b365984f88af3bf7abfe6177d051d2f7cdd5fef8c4dd6a177eebb7a51c315f5c4a2a627d621b82397b4f606fb98f03bd4270efda249c63dedc88b43abea630efc0d7255f49cda235dd702dea992725f2ff5e356338cf926b6702f3a2f00fe4dc41ecc31846f4927b457b3b658efcef34767cab753ed29666df6ab84fb82039afbfb10d8cbca04fd3bac8b42eb9eeeb76c18ddbef37ecbb195e63c430fe4b0770027c6604fb1d71939f2c9e644f39d0cae9b9c4f801e34f27de93371828eaaac8736e2fbdf5c235f04fb188c5c0ddad7f822c7a1bf9f51e860f9b538893316588c716dde18d1d974661f17b8a49cb1adabe277cd4971dbbfa5bc44594fdfe05b72e0c5508365bdbd8cf95c8007676c620f7a71c01672fd375f41ff19fe8cd9cbd9773a593abe652da32020aeef8b9a4b9a0b84f56f86038d1b4d86e0d461fba4302deaac11fa5088d3dffb6eeca7e755d77bd81f685b7d8de1eb659be8c5198cbcba6d6c3b3c9a6413ce170bfe0fc1d9056edd4a3672f93d3c7dfad31d9d2dbba16b2371af91a8a3afaa255e4dae17e53dbbae9d23c712502cdcf9a0bd3ecb3b37161650e322514f5c503e74aa387ef59c428f191c5f8c99f5738c00cfe7e200e837c1df005f06dc38db71cb3eff36e745e3c97ede17cf653c2334b0ea251b4d78515b4737006ff4b4070ea06e6b437bf5c0dc971df84829e307a0a19ae694bbcbfa42d75bef43d469bec2ef8a9e976f78d59763c34d32e97de99739eb86b49cde2c1e11e7de69b8bf2de3d2ec75bd7cb17b73a82e3bb073ffcc53cc3e82670f89fde9e66dc0bf373e4c4adcb923a7be29f56959cf70f182731df8e06e6b4f31d8d0e6b278fc43db325e97ce8de81fe6ec657db953cfd1f3239f6c395935c9974fd7c8f963ffa4f9aaacb1f82d2f2ff09ad09dec96c67464614f9297d597bde06c2f09df34de8a9a29ddf3405c5c1a07af7359a801056b4bf77ce1ee8b124ecfe973a0f5fecdfec0bbf2b97ec1a777fcc361a76df931ea1e8f67d4de861dba5fc8be03c6fa9bf919a186a763eaefe68739dae1d30a9f2b7bc6bb54c0773d60bd7ce66c12bef133d64a00df0b3cbfe3107eafb0b1c28fe1f309feeee884f36f700dbf7868f54268ff199ab7ad8d63ab058f0e62b5fad8f91be343297c80c37fb50f12d242217f338796e483958b0eab7fb0bf9d3ec1afb56545bca77c0cb37ee1ff6b7bf023dd59b675ca1f0924ffba65e35ecbfa00dc7b103fcfda4ebe83ecd37f6fe3846f2c7a4242e09327bf02f28dbbd30ef9c6cc3136c922e6a0274e9be46a8e9c37f7eec8f507df0d7c57a845be935fe5d5be65fea52f6254e1db8b39141a267b70244db3b2f6b0c7062e1beef92c63d1b8da73e739a79878e4e0028993b0b0938fd28793b5c353c6b9629da3de76c04f99ae6d4c5adaeef8f4eff46fcce97952394cadbdab7fe37be6e29e7acd883e69a3d38d18ef22be6b387bb0713e2be41abad3e68d1fdb26be27e278807b9ce5373166987b1b9a67d20562bc47f6ceb59f4ecef8f5c4a9678d4e764f418987c3e41cc7977a1bb8275ad436bbeda4c938a5d5d6533fe4b9c813e2f73d7647259e582f274a1675c0dfc06ba84fd8dbe372d4631e3ada4bd1c660e6b22de2723136f13641dd595fbb3e5de49c71df4fd5e0fec9e93b7fac8744f941d59372a9ef7c7c8ce9fc9e64c73e6adb77d6bed2bd8ece3e1eec8b3888f94928e730b90ee9db4667f42384cc9d2ffb298031df9579b8c8c6099e80622f422facf70ecd0ec2fa5bebcaea9b37f915deafdce74935d43a9d43ef8cf92baf4df4bfe49d33f5fc2779d62ed94dee370c909f6a6f1ac467b524bce4342bd691c11c485cb6e2a995f16bbdec4fce8a3930637c173d04c0e5885e9acd96fb38c1adb9cd8211e3f45be8f7677fe71958ab21b8455f56ef1cfb55b82eb5fd8bf9fbcdeb24ceb32f79cb635523533ccdaa478b6bd5fa4cbe47ce2425ae69ace58ce2633dce0657be69c8fdac9e377caa419f52ed57e209113a8ada2ebcc55e6e07bf365a160203528b1b768f5459977c2c31dfc84b33d7f0a8bae0daab5aa3cb2d3847a65c27cccefdd2b5e343177e03630090631b2ace726fff98fefd916b3f3c3eefc5f848cdf9c56da765f5f3e43e1d00c244f11ca7d30ef125167f4f1c4c1f7dc6367ace88cd27f82687fd9ac7eebca6e0c95ae56caf3a9a27626463a3c53be4c44193de6e10b7d8f6d3d13388b233f8abb6a80dfc64ef2b7ba5fd275dd72bc654d7b9eba23ea879babecbedbafd9756afc830d938b89e328fe8707c6fe741361173d4d65af66f1f15ce2b68bf0df8e8e906fbad3b01d657ed0fc307c5e3aece5c359e57d99ad6c68e724f021bc567ea2cead31ab4f64377da818eeb23f8eba0177a26dc89f0eb947fa66c40615b9ce724c55a971a2ce1d3f92ff867e5598f3e7cad43ae735a33aa33738eafc9b6d2334fd33a72e84bb289d33162d824ea94e30de6700939d730427fc2725d35fe6311776b8da8796038cf42d688420fd770e68b7f394f257c0ac2d82cb6f5a6a30bcc3a74ebbb92dfb9245eba0963fba1473fe47e13f659791faade2213b3c07fca29dfb2519c71ee7cdf87319da17aed726c69d9ecc5107af6965d5a3c778ccfd9d078585d93fd203bb79c76a09b0cdc3534ba56411fd8c11dd5d743f8b3e1f14c36ae67748be3b6e0466f40bf1563900c9b2dd4c6b52fbc2bce7eb307a3beb9cf42c588daa6668d91c1bd35a33e7a928af5a8be2b4c694d442b9cfb0a47a17bff9576b45ea329fc5c716604857da37e0ce0777ea237ca39d66a2afc17c2b10b9b7e7670b2262fd27cf0e744dd5e6a79bdddc39a147603fc59c9b1acc54a7a61c857707d39ac3591f37ece447f3f7aaa57d4d338473e4569926a9bc51a13fb4503fc651a7ffb52b17997a041faf11d0f949e9f217c403e7f269bc0d18555732bf31f1ece4cabe6206cdc79311a61de352fa1b603b2cf48facdc885859526618979cf327e8eecfc42f5e06a1e535f8cfa0ddeb9f2e089dd2e614ed2f3b58d259ca06ea2f613f8e4db7df0df15bea8cceb66b71dc46d18d7f014fcf07d0f8c1be46b2ef6232a5c90c43e8eec1c483b01e7a2c205e9faa8b669db84f3238c1932f911faede358d83b136f69bf5df583684d96397fbbb683ad15f22ac53d59b75dfa228d3373fb8ffcf8ebb09293a6c3528de7b8ee6884d35c9a9c51764ca1df92bddab1deb83aa77efdbc1e42573287c69b5ec3e6bc4cdad0243b660df86c63fa06195f2e9b3df93ea65743d9167e9ff2bb922fd0210e14fedb0ad6a8981f35ce866ffc15dae12a3723b818684df075ce1ce8be0ab1178c7f9c708ffc8be2273571abfa8ecf2ef8359ac53515c5433cba8b92066987ae465fcdb9fbbc2c5c99f76efae745f2df4cfb3baeb3e9fdcc3947a11d84b16806451cadcfdd34a27e42fd4c71aee72a96527b3ad92674ef2ab46aed6f357b8bfcc8c773598bccfef624ef1b7c41733fa7dc7234c27529ecc7a83aa133c9c6441b0d9e9ec11cac9aec3750acb85f192eb37c01aede3a6c463ad883a75caed985ca0194f6fd7fb40d1a97e20db605ffc67a323e5e5845afa7f5f7c0f7a9b13b3b7b5adb03d8186d9bf41a4ca13f23c7f6121fa83a9bf2fe10f7f18cdfc533023617b8c48e9d238d31cfe63bea251f0bb9edbacdad19cd308ef3c9cee6c431d7646de8803b7d2dcc83c9d756828cf203790fefb5dc7e777e09fca4b86e68d66ae6b5c99b377082e3bbb22bb6a15fe3ff1721f408fe53ba76b02fae2d636af3fab6c7dc225c93b1eada3be4b7640f868d8f6c16b682f867a301e1dc9f370df223e7e8d55b99fb27573e0ce662d86921c67b5ec1efed9dd99e98de90f345ed08f0d4a407eeab13fb07faa8f5327e62f2ab2273b1a65eb607e605e323df9ff95ad4b81a1d603ba6935cf956ee926a64efc9e811fa60a9d282f5f8828d527dfa94084e8cecb96fe79ac2003ac3de771f3217a93346c6a6654a8bb5cbbad0bfadf591a7a16f7d5831dc645de9db58d32db4058358d8fdce456e298aede679c7cb0f91bd644d274783382b195cb78141c43c7f44fd1b4fcfe440e560dd3ce155b1eecc3ed776b241310de9af6cb684bd7c08ef4cad85c7a6c4a5843562c6bcb001139eab21ce35ede3f8f3abb29f631c3d04b189516acca5821c5bf20e5f9ee7304ad6a3d27dd32930a3116a3bd10ab51d7d4fed0f180db403e30275ce0a674f2ef27586e33d83aedc5af4312316a65e6cd8f2a43843b91f44d9bb396b7929be7373cea1f6bb547ea81a9fbcf0930c6e5e9c4f9c2bd339ac63eef14bded320b5eb9483eb969bfbe4771f7f147faf318afb09f5060f2d1e652bd6963dad754fcc8d7ca078c655b7f168adc5451b5a3d1ca70eae0fd0ffe03ed4085a84622c66d1b8a4afb8784ebee16119337e436b1d69aef7db4e995332efcccdbac81913f197fb2f1aa1d7390e91873eccc99fced3007506f05d8c4ff065869b37d8abbc29eb86faecfd4d9c2e7a5de91e888ae0bbfaf1fd044746aaeaeb865bb462af51ede77b6abdd45bd02ce30f28bf4f9a021fe78919937993f6739afb7bc257c07ecc6f391f4af666b12973472ef27ad3e269c99b15e612ec533c5e9bc396c427e4380d3ffbb29d35ad71557ef9e61e6ba9616a5c835f81673c91cf4ba0db065cec3eb3e7ded846f1cd930ae134985f78f22b207faa3bd9010f0b5d2be6128d52d82be0f70f49e3cbf9ff74e63f4fa90e39cd02dffc4b2d24d5a3a4e71e784aab576fb8c2de244d8b648af3af1a8f58a3218e760dca61d2fad1cfd5dc49b007410cdfe3e17675d31b35aabded5d08ee99db66a3c4471fae5aa89dd2fe0cd7d01023fb96700fe977e376711f6a1ffe7854bd898dbb1af51fa5d3bed1335e1f924679fd2d88376db2823f80be90693340cf74debfb006b4e64e314e7acddeb13e219f218a77ddd4fc44dffbba9610d64fc4dbf1e6d58a8966e0a1cc3e895762d9aad1fb7cce796c0b5f9c6b7feabbd2083cda789f71b45c233e30da2f2bc23b05c0fc0d15778ace13e6c92dc5bbd43bd11df65bd0d169485e7999e3ab7df45d0e07b6f7e721d9f26dd6323624c2f93f212e8a5fd5fb80c637ae92fdee722c952396996c2a32b7607069b9ed5ffe12715516089de2337470a771718db94fe72d6b40732518dc609de96f1cf74a67e6a238336febc53e3902abed9e995e7e8b7dce780cdd1bf9c03abb6f3db3fead1cbd1d4fbc8f7e97fc8960bebeb338f3ba938d83c11b9d70860fa8ae9a568bf8d6f08e4ebfb2e3e01f54b6926cb21a6bd50fa6bf77ecb56dc447ea3fd7980f7ab97efa9f9d6b596133f59a7c7d1cd8f629bb9d11f6215ca22e22ce12ceaf68bf02fc7d63e6f61e3e15fef10fce930af32183736a54ed0273f193f324bb4ae04facab761f16e2378a9b34a75adbe929326b0a3d166babfe4d719fc2cab96b3f9d8e6ddf397af2f8ce3c773686a7d3b57c60eeb14c4a3eecf4b5f0f5f41932d961fd38b50eafcf1b37d6d0d5b0c7e75ad6652c1eb35950fed6e4a5e1d3b7c92784338b12f0841467809ec355ad7c468c0f859fe2b997b1eda7bc6ff9fa5a4f89e328aebf80e313daaa8d77ca07c66d600ef3780ddefe893556c5bf05e538207e9eb52c6dff5cac453fded7d4d936dcd71cb086c0fc199a57e0cb1071d9e7d017dfbdbc622d25b0ff5997c6fd01beafc3ffa1d684d2c834e763e7089b9ef773c1cbfc1693bd1a3e712e9acf72d8730b9733094e0eaf3f384297a4673c090adf47af29e08e3601743ba72ba1f3b086decc62d86f602d94f9d3ab73c65c26eede4ad755c21d445ebb3839e2397c5e309e6fc1e7c43e69f438bf7fc31882d2b799bcaa5eb7d500dff1dc24ed30d547efaeaf797166ba9adcdfc7991c6793df14c186841961bff20c7d87e0e20d37af547becaa3e54dd5382baa278b7acb069ac97ae7da66152e62abae44f40ef3d6971fe7e17404f53ad71c4d8ea6fbb53d40915a68e75f2cae3b16c6596de31f70964977306182f3f97a5c557f60d97a5383fdf66655d1427afa9f5efa0c51dae2857a5fc3ca3e57b5b8ea5157640db842dd66a6d39ea9939dec08e6441cfe2d4757c52c2344033176311aea83f248a1937e8ec37f059b2e6ccba6ad6546d583afb27bf8e7dd26fdb6e9adef38dc74af2418a78f43a800e6394352d9e55cafd723f6984fe38917ba1738cb5cb5737f09fd1dfc5f1a7cae399fe58f99cc5f3067d3de38127fedbf6d17fbb5813ce58e57895ff13e7e0d43e50ff7af6429cf7bd23f7c7f6dbc07e6c6711fa8f22605fb5bd77f76a34f6e2dcb2761fb52dd4e6a2a7c287503e75c67133c71353154f083c475ce1188173a21cdb703e336d278c091d95f3a8221e1267b7f201cbef71b9be637aecc0a5927f5fd7e96f6daedccd06751b9db3e77849e786954f64f2531cb3b4c16d75269dbdde80ceb2beb467fadfb634fefb4ab64ead9c56b69db5b95e28eba03a06e0b3ba23ecabeda7cd511391d89afd8e6aa429386838ee5a36aa669eeb74c6be2f91d7439f38e18ca3786df432a2ac4bf987a1b97f77746770d849cfa9e1e06f16c3a40dad638a5d947687f68f8aef449ec5b259af0163dbf5980b3f55db309f5e4fae6aae14c706ca87f5618ed00fa0f04bc4afa8b473f49ad9ecbc7a46ac55531bdd78e6fe3983b67516908e72991f5f9f1f42cf3c7aace2bc9e64f0a199b353f8c62216137a6e87f98874611e81ddd6bf6b3b28f4f2b4afce7eaab306756fcd620dcc684e7e03d984450339d776a9e7cbcad3f7a58f63b0499a03edd21a37f541700f2ec28dcd5b908f3ff0dbb44edc0bf9027a05cc4350fa46e852ebf326251ce2e577367d129203e849ac4da909da3b2346beeddff4468da0b79de58ceb14feaec289c8bcc175006ce2745425cc25f43efddf5c7b00ced2b3c787f52bf4e81b6c38f0fde772fd82fb86393797a9b5ad6aa46f73c12360716e4c575de2e7cf84d6908de37f3a97f533453d291f813f91f180e3abbe9d37aea0e7ef47da978c0f7c885676bc6ce1add7c7817dbf528f86e8e114fd4dd7e81b2ce26be9f7a2a759706264d34d93ea8cccdbbd21db7058ac53ca99eabe0daaf90681b1c1ab3770c2873bd193aac639cfc0efc4fd90f7f09de8efb2ea9cf0f393fd1beaabc65f8b0b1fc4cad9f1bde6d1a66930281f4baed9b91c21ef0bc2430caef788fbc1739addf2de3abe177ed67d109b5ce7185c86e8e9c77995156b59db0f13cf77251685fac123f4341de220268c22d9969aca1369bb5f151ad996efbf7839956b9a5fc55a67ab97eac3c9713b315865c73d192bd80fcd15d381cf97aafa85c6d7e33b09c731a9bc515e7cf142b9b5d1b9f83be323696cd11635a643e18fe9baeea6fdcd7d3577791bfd7c7cdeb7c7a237cbcad99a73698cf8cef1874c1f12fca15a618bd15370e1df99e3fece83275e1f16c06c786a096146b5c968b11e79e669cd7977e1e32d5e3637b4c607e0183819cd3a71ee0d3e0ee46b266bd22e3cd5d8d64b9f600c9ed56cf34fa9ff46f82114477fc2d6c2b68edeb3d113748d8c9ffa9134bec15aff0f72241cfba6b50cb1e175de1fb0e6b6be7f23e05ec05d937269e63c806ecf224a9a82e7453f77d847fd6ebe1e11ee4e6b97b0261fd6669a177e26ce6cfd9db7e46796710bc44117af47964f69e9aa28df84f36ac297f0e664c9fe8d7e5bfd4e751f6ec9a7dd24301f87456078afa78d770b6be5d408e6836bf8913abef875e83b5c57ea2c126b4e732768ee6aeefb517d742a2eec2a0e321907181dd291e00d99548ef6dfbbeb0e3e41ad38ebec5aa03c5f94268fa3a321fdedcec68f4f64de6dae255510132f6fa1bd0abc09e7ee3e82cb7cff4105f56dd19731cffbc42d53015f03f540872bf4cdb37ef538e89f751c3d7f019fd58f72fbf7151beb25f9a48b33de8ca55993e8d72df6ac5e47c40132b07a01f60f016c059d8715acffa1d2f8e2fd2b6c4a763b6b7eab3f33a9dcc42fe077a82a9d4581c5ef8ea9a6b79ad81c051d939f69e4bd3cd9f7a41ec9b4791bbf006bf209ce0a60636c3d40e654218d107f2d649ecf3c79a0f196e66bb9169a0c3a3f71053b8b3ec915f5161f67d453ac7a00325b5fcbe4e9519f424f32dbae593443ffa0c7467d2694effeb7cf391d77e09c5b4e7614777ec654df9ff661d78af5a3bfb3de006e923518bba8b50b1c06f96a4930faae27c889e9c9fe324e1431bb15e3df55c0db30dcf47c7e44a630eaa2a7755adff67e60a3c18d82faab7ddf446951691d04e2f3173c3dccf336acefa9b7d18ae3b5add6fe31e590279513f733773e93f5a8543b8f91d7215d39ea33807ea613cfabbf392ca181171c1937a19f61e640e7f1a87712da16e390b16d78c6d9cedd086cb9ce4dfa62696dcf5ad7c887a4a394b51a9f67c815eb5c25b4fe774b5adbd12c24bbc83dadce779b183f533502adbbc3676c5f68388e727a27ae7d922627ea18b5624d2c4709f3d9075413e7debeac88c7281ffc5205ce15f1bbef5bf2f181fc45d49d39de297c46e0ae65cf05ecc2e851ffed08987bb9ef9df3b38c2dff2ff029c7fbc0e07ba247e0535c3e75b9dfd19bf5d5bb0a4dfb125fcdf9fadefa0e4f1e0e3631cf048eee91e236e46c62aaeb457155e80146dcdb901e39f747dfa4c67ceddaeef974d5f6f5753c44b3b6ccfd1a9ece37ae915609bf13cadc97c7fe1f61ffd1232f30608cc5fcf763d5a8de2ed5c026d727b213f47ec8f54f2a57c85bc97e9eb076052cca143dc2dad6469cab842e85e0e120bba2d7c0af03c713fbf6b7f719d6f93eb2b72d6f14b1871a637ea6ac1b95734a8445465e15fc63e357a181f97f047f1ab733f2454f197286eb0a8dfdf2798cb81fda6d9c537e9b83df77c69801e627aa32d7d6a8f85ec55f93b636ac7b0a1e833a7869e6c817146b0dfae43bd6f26f5a187add5397310e02766f5c19dc705e46e343aed14b207a85756da2744de7157d8051073ad0c381cb01300e1d0d25c2a70b7e0ab52624e73c7012be9810f175089cf57bb1bfca7b7a7dc8a87f61f8c8795bc58fa0b9c78b3d6fe6adf9877566bf0fc37946b7be0cae646d8353674d68cd18e87989df9753fc7ecc9057e3717d34f5bb64b06f95d68edee3faf730f3e49abeec6b169c929c1f49c93fb5b50a42f0681bdf7dd9dadfab3d38ecbc0f5e2a5bd46b38cf64b018dc3ba4fd11e65416ebf030366b2499904e5ce5d1aa3f46d9e6fff63add2cafb72dfeb1b05af3f2c14ed32af8276e57768fd1f011f88285eaabfc3f37a78b66acd67d3a4e4ee8459a26337bfe7a41dfd2b1d5b62163ad1c5df368e3ec563937c3e92f7b112ac8cfb99c7bccabc7f70d576f25debc705f217d1adda3a66d23e3c1558faa7ed7971571ec7e66ac0b52812e9fce057ec69ce7b95cdba1dc704e6b3b63bf755bafb00e1ac620e0efe0774e2698dfeddcf39d4931ff9a8fab517af79f6b371d91a30e6be1b7fc05e1c6eda56d5af8bd48d5ed3c6b7a0c0e9ad900b5e02005cf568ceb24d794be27d7a9bfd79590674859eb01bd82765db536f0fd2e787cd2edcc53c3038f0ffd3f69be82df53f413bda5eb3b4b97bfdb825f595d3abc1d3e4e22b243d48760f3aa4bff51f2a694cfab798e5ebbf0115ce86be21c0ac9df48a22661946bc0a5db5c2dcc856bdeb167f7fe1f2937c51c192bf48c3b7cbb266e651e19f00f346c9e98e570060cccd0a951ca7a59bc0e08c7e37248cbb93ed3b3638ac907f6d8198e2dd61733715c063d9ea6e3e7acf311dd539dcbc6568dc0e7a1e3b536b8fd2a4bd6a60b1973c4fde4a64fbdea72d6c9fa56aa62f2c4c178acf6655d793b9649a733c2ca7d3e20ee1ebff9b119be5cfdfe04ec4db43b832bbeb1b6f37983927f29eb693aaeca57be5a5bb9476d7242ad5eecb16826f888e268d3f2e2e280031c05038a011a4f76bd7d50e240fed9bb8af702ef18f07b64eb584381f2dcf79535f5aa530e633f677d0c7ddefbeb90aa3e701fde95d64fbc4d909303dfe98dc74e8a7c85c005bc522dc157cb624e0ae6fd517537ca61e8b3234cd669e9bd96d3d99dddcf3d0afa3efb2ddeebefd7aec3b9ca7f7f95aea109d421ec03d507e6d399dd3b1d751c4cff2fe307ec5f296ecab633aa2d85d027b23072c9bcb45f72c5c3aa318cb775f23943f6411446b37c2f81dd57dfa4eba9dbd9efd2bb70ee48cfc9fbb26163e925278a6f1fdf33aee39834ca762a6ebbf3990617797507257f2be0dcbbe486a4de5bc169aa30985ae33485666dbd83b3887aaec5bb5de491937c98bc26aa4b8ac186abf9a5be2af04be0793df8279a17d9c3c78a776fbe829f66f274b4f13897c7f81bbfbe3607afcbec5b1f2e830f57d2dfb438b3e268863e92f95ae4a1899739b8c48169e2a5066b35d31e11f78ce68cd734dc7709d78cbef7630d4675735bbae6324675e760546f2d2e97bc59e19cfa98fa43084bd28e8b39244ce54873558eb5ad6f2753fc1616bfe9fa05f97769045f215f11f677657eabe1b7b3f2fd6bc5fa5f12f6ff7c8d779a85b53bcc9b8e053e59a37c56c2c6ce8b7da9f7f5ae181beea5d4fe68f16f26e608e573b50d3f85cc5b35937c3fda5fdce2de87e23e267e94bedf55022ec1d5e642fcb65daca906dfa992cdb847dc945630a7d3713410b5536d671a959fc705ac8f60e2d6c4e609646c228ff346e580b9fe22f3ad1fa86b4c06d0d87f9d139e73124b1b6bf334455cf35e447df4b95b3efa76877cce827b235a3e3d68c4cbc46f124a1cadf8c621612cb335fa896ee499663841ac7ebc75c01abb63718667ccbf68eba58658576a3d535f6b272ecde9b01e0d6e8ed5e2f76ee3cee653c6da95fbe9fa86ec4832c5f976ce2c1e4b9913da85f6ded1f52bcf3d82e21ef09f2d9bd10c9913646c7ae436e5f539b97e9335061db7cef27f617de6ccd51b3bf189da43a8bb2d946d9578d0de013e32fbb11667e7e299fb9de96f5943ccf7b7a2ee24742f582320dbf607c8139fc1ad7a26bd9591d629bdf4b7324ea05a74987d224f53f86564e7b6cccdeee8d0e93cd02d7801859e28f6f6b9d8dbb4aee21cf567652bc18fc9768e6dd5a416f67e43b358f5f4b01da57fef7c601f58365feda99a8c1d855d3b251779a5dd3355d48847d4ff48b63d7be5fb28bc278df107b46ae5980e676d6b5e251e6bb8629d8797237476c559544946e9b7f396b567c4c77be2f1aa8873a7f3c9e3d5af187e68a34b9156f8fc9c55d04b40fa7ee8fb63fb943cf75b823bc2eaa3c5f3f34e45f46836ca674ef6c6d86e6113f4777616e06f95366d569c5391c24d04b64d53be8fe9bd5339cfa0597fa4fe05f1ee977d3d75fe84e8c360bddf6f7d3eed275979bb99c0991abe86b18f0b4be635ce83b3cb4dbf412fa6b671327e4bdec04fa5c7af82398e1a55608d4def4917bcc97115bd10263f8adff219ecb1c5513a398697384aff4bed9653f16c8be3315aa12ea1b4c7dc78225f99ba69f3350b5cbd930f3e1ff331e2a4780b9fa79681f757e5c0900bb5f9d56197f22ee1d5a26454bac7b053ebffa65e33eb6cac82cf71885ec9caf886fa44b31ff07aa036c2f98869bfc61a1474df5fa705d9a3e15d1598397d9606cb9135efea5de3b0d2f2e441d43e668e103d965aab9be66113098ea996cdb755cdedfc87c452ba3dfb92cf6373248e8c38844e59446b74de86ee4865fec5fba87a80acff086d575b2bcb5d4b3ab626ad3d689dabb349f305f1be5263a8eac97a0cd53ced12f41ff3fb146789a7ee33f0ac7bcd7bfdbc6a5b6b4e68c567b7abb63527c575a3f218746f676dc7b619be9ef18fae5fa87daa73ee0627975cb2595c87667bc2639296f07ebc6f1bf9827d11a79f46ecdf68c6f6cdc94b25ec378488096c9d917c0e9e0b313e5fdafee49c4073b1f14e6b87f7eaa55adeaff7f93ab6fa2fd09ba3d7e3816d92e21a92dc79d1ccc39d97a99aa9b1bf02c3914ca15f7991eb545c5b592266f9051d9af976f507b6c7b20f368726f2ecc99ff59af8fafaf3a7f7bea941eb77d0fd2fd857e1aefa53fe8ef81978a6ca02fdb1fd86b187879872a6e29e8bf3be6d73a4ce3e3dfc2761b12f152ec4e673083de790074b2139490987c6d8558157b3b1c9e8e3675e51c299c7a4b1c2b8d17d57e2116fc121a675339df8b83b7e258ebed8eab1e4f8c9e41309a799bd2dd1abfc51e39e4ac9ab71faf468b055d2468ffa44f694a79cdf8edb56cc3d593d5ed43589c647c2872f2795a6d30b27f7fe6b068e95d96fda678fa5bdb5af2d5033b80b85e684ccb378d7603ad8b785ffabf5965ab53fd3f515671c9fc7a373611b8dedd7b1577bd676fb2cbcdf306cbe41e739cacc7a4eaa1c3bb2fee91c3904e255a4feded17b46366198a07737bba17e8a143595c5d4e10d133ab514bbf46ff49e9e87d4eb9eed17146319dbbb449db2ccd1a0754c841f3ad8579053c9ebd0b75a8c1e2d2d373377af09be3de678efa5d222dc9d7ede2bb47fe6a363d9ff78cec89f71f455740f70127cb93e555d529e9b4bf24384762ef4dba34ec87d8f33c76fe98f28a70f7d30da4711d53652d597e9becf2cac10ce299a516f8458cfde3cbe374ecebcdafa94ef9ad3b786afe197baa261add673fb4de4d998f769cca3818377b0f5f3493f3c650c2dec7f727e240c599bf27dd01baf338ff553f93c188e5b961e52a478f7bfaca1fd108b6c7c12df19383b50cc16e7e002de65eb3b6faed38a95f359ab649fbfc9ed2f26fbdbb24dbf90db0ff7ef4e6e1f3db6ca56919e7a54176b6a55e2065ab43b17f9f44af93be6c66c30b70ae13aeb7b47ef748f7ede61f3b58fdfb45d91e7e9a3aba798afb684095a6c3d7cd5225f932a4c89ac9357a0139f4c48eb0518eb6753935a7bb12d569dd3d445f3711bfc70864b97798e363be85989719e859b3b8b5b20ac7979d4a5cf26cea3f78c706815b3d6cfbf6a65feef8cdfbd54abdb3cdbfec98873f44e0f5a1c1a5f7292a21e31a65a6e4e3c3ba2578f30aface3ab7ed3e7d323f2bbba1751cf8b8e0f6d9c41b705ffe5f8d3fda1b5ef9d6b2eed8fa8f95ee2dddffc433186e196f1f39c5bfd9a6a4fcc48f32358ae456d42afa5f738b0cfcf05e79e1d1c06e3e1e3c607f1679d7b167ed0b1cb11b4a70e4bf0c770ffe62c4a1a4ecdfdd5c1168488bba03b9cdd090cb359373aef44f1c22ccadcda5b84fa58f11bf9973a371bb1b606dd9bf4e266e031d25ad3061b14d8feceb2b57734fe6ad3efe22aee29e25c86f06fb719fa5defc2be4fc797f49b449edf9ceb887317ed8ceb7ec4eb976fe0d765c33af7083f675bae4f6626575181be15aff3ce1be52c9c1c15eae7fa7af55ccff5fd2be25b221db36ee3224ed333a71bf6c7c3eb62eed4ba583ecf5af0d3605b9277f40533fe89c776e25b17d955b27eb4fd21d6d937ebb4f39f727d48ec0ff836d93bdbd84e95f306bb969517095f6b97735dd036fed17b1bac0238bcb4dd19db9c406116a1f7d3b74622f6b74a636aea59ac53cfe799d70684fb0aebd92157502bd643ac785feb37962f436be0167acbde1edbf865e4af57e71971bb8583b3d51f5de53e8dcdc9eaab1da507c269de07af7ecdac681c89fa6878790dba7c80eeefb226c7675f8f7901683e3fb176725e5ba5df25fead38b76ccd2a8d09a26ff2f69a6d903328e200f9edcb267a1306b63e71f60e5c7e6b6fe7e2f30de16aab637b8ccf0b8cbfd3d73cca5ea9777d167c58ef709fd3de1b7f644179fd2e544fa3bac796791638f725ecc63985c654c67e36ec70e3082cbcc28ee85cec10185fe0704f317a974f355baf3dfbc43e99541e90bbd4585de6f57f5edd58794db3a7ba8d23f54214f162b90ec83d93c002085caeaa911a4c716cf5c19226096b85c27e3c842bb28bc77bd47aeb3467358e47135c336fc1967e3ea05f2e7b05ff31b8c4f839d933f88f6a4b689ea97bcabe703b3f1982e3bcba6c109fd93f47f0c6e7e073f91c587c97699579208fa5ebb27693fcf25ad7d191113cc8e7a441f9db3ab8f1170169ae15636cfa1903b665cb17f070aaeb8dbdc9ed3ab7ee451b007b4ab1017ac24ee026cbd735cee366cc29bedd6da193fcdc47ef27f6c0e414314e143c19aabfdf60f8a31e738137501f1cfcec3bbb139a9b516d4e79c3523dff5ff8cee7cd277a1c27a4413e16faec97bf53637c33f8437cfe8c940fcedc31d28f71cf5695e76d78fca02ad7a309e3b40eff2056b2fd6b81691267fa3119a5160e7e3eedd83163996fcabeaf889796c359ebd27d93d12badf5ae6fbeb3f658e6e5f51cb37ecabae4af5bfeced71aa2f3202e5d73511f4ef933120ff9cbea517bc8c90f5c8b33383d2126de324edfe0623e88b7386bad1a8e0ea5aea7073d8ae5cabd8fd3f18377dc4b7caeb2d7e5eee4c74af33d4a3837e4707e9d16c078dd595ace660f4614873207b0aa4735ac7a40d4b9629ccb46f97f4bd4b8c6621ec66d4b7f2f3c063e3d2fbd77d8578df16f7707604d8039d81ce641f959f368663f2bba0bbee4170f7de3737d462f5cc45cabc227afb15fc5cf8eb78cd7f3700b0449f0837e7d975be0276be1226ede590b6ebfae58d3e96ff013699e56ed77be93ddeb59b52d57bf6d2c3529753cfb8defad6d90396f4636af0de1fb29ce15ebf6b0640e04c30936660e3c4f0cf0dd7b1436cbf84bf7b67fda416f2ff3ea4abe4ac6b4c6ccd5f6096e3ef81afdad184395d3eb038f8858667b1f3cd21894f50c26b5cf7ea92fd93bbf6e1fa6f293f4bbadab1c1fca5e799f7e886f5da425dc8b77bf9c4bfbb4d4c371e13a7feec9e9cff92b1b68731a45b1db7b07fc9a773fa0cf5d8fabcc2fd25ac179e7b7594120393074ee26dc11cf4c45e4f2aad0b1232e3ae697727b37fccff2e8797487e3d60faf81a658ac78139cf71baa3c92c94f2a1b2b745c4a9a815fcfb7e8fba67d96d91c08bafe3f85bfa6380e0c36fc8dce25de43654d0579de8e4a6bf697b55e29471153bc23d682b5fec907b86db64b636ac70f944739f5cbe7af5d8b6ddd95cf4cae7f95f9dd86cd127798b5ffbfcf6bfcfb7ec6a53d267c47e62bdc7c66e80162ff8373e69b0ab8e7251fc60bea19fcbbe63c30795da12545762facedfbe59c9ac863f13cc71347c353f34121f734605dac13fba89ebd9f37a1b1a99fa97b76e033046bc40df16477677156ffaff22d4183fecee86def6e4afb6a52838e88d8b31fcc015d231e9777e441c49afdda475f57e78c5ffdd6474f5ef6650d6707dfb078ce6c1de4807c5ee2be181da12d4af1e330a13895751e22d22f457d08f6a577b6fd60e8494609ea03969f6ff84e4c4fc57f16e1fe86f558faa8ebf76dbccea3c3a9105ee4ce2ff5d48e03f86b8a9b45e5dceba57cef807a8432ee116ad81c0df36d9f3079efc2a6694e9f90f281d721e55b7a584bd7b60e76b40207d77d24ea21babf29e21ac14ad709c786e7395ca1075cda4ad3dbf2db8cd189f3a69baac18dcfecfac5ba423a175efecbaf38b16023c70da14b6034bb37d04a2cfbf76bf663fdfe7de5527e3805277cf3ee52df14e67138de61ef2347c6fc30cbdfd78e36f8ec03fc2aec5bbdcfe95da7495bfafd365788c26b68fecc68473c3aef42f74bc7fd79c7e43fb26858e24bdf905e4f3ebab1f3d4f89bc1bee2ed79cdb3c03a3b4d2fe82228f1231e96a3a70b1ce98f51dfc1002d491b94c67f7242cc2eb99e97dbd58ddd27217c5f511fd4e7c09da877b8f97bce353be738ea68623fbf27f4bc60ad794b26bb90c62153bdbfea9bdfca3c91a3f78c397925163162be118531d7182f85f91b5b7c32f1cbaeedf066eab178d9b4adb5a8621b7e7fe6d669d6b027b5edaac287b5c66f457931a1b7eae3ea498afb895a5f72e5bb9fb041d1d2531be1f5d8bfb37ae4c34dc87eabfabebac1f2bbf862c4b9ae5f84bcc9c0c567ca7adb13d6b8887ddfa1d9ab7f177c89b68ebcb0216df6c5807d33ff9f7d224f8a9e1b51a7636ce3791edcb9be9fa9bf6597de5dfb482f7b9bf33f8fbd7592181cdafb887cf9e516fc22fcddd3bb23e16cb32df16aeaf913794459cb06bfd67d9491eef8554af9e3c13ea0fba5db26d5a0f7038c53f17e1fa792d6fde0329689b9dbb0cf3c5aac1243d40b894b9ecf1f653b5f2737e55a74293fdb7cba6c37442d867ceda4917e75ee9c67037f9f4c29cf22e64fd5812f69607ca51b002e5fd9f7a17022a2ef233b702f90d8b3ee75ecef5918cac5c8cfd9c6f90bef9a3f0dce3687770947249f6db094dd46f9bdb2b6630bd9961b5e199b9726f5d4cc95df6f7a401fcd7c76c98e58efa1d6af18bb12c75ec8b65df943a69fa66cdb17d35ddbd6d4ec55edbcaac1ae928664b8aa59e78e1ec74a322af3e70aae4161ff4def8bd661607e1fe65f78b134fea7ab8a8dffe0fda1e39355d91fa29c66bb4e76fd54bec7faf27935d9bc7b7d8ff3f5ce771f83493a32de3dfd0a0fe1b5a1666d9d062e6fe934ab49dd615b776cf5cd3db56f5cbe67e34c3d56367eb28a719a4f5784d7cbe74149232128fc0cd9fb43e33cf77dbbcab76a3fadfc2ee9d9d13cca5dceb93fb41bb6c6c8edaad4f7f1959d8d471f16569ff21f5ebe22d1e726d6c34960cb0cfe0b7e5c89cfc7a7ffb19c6eee5c8d050b571ccdb06f742ca5f3e08c1fdb731d5e7fe71cdc7084e32de262fe5b8d717ff1f87ecf1b377e97e7c45597f828c30dfc7253177a432c69fda6dee773deb0756de8dfc75e9eaa91d76f96becbac9ce7e65836dcad98337a75d5f7f826c0380d4a3955751fd36bb02df10a0f3ede4b5c75e1e9f0875c75c79ec59bb10e982bfcd7111881c9a689ef786e9e0857c2fad59d36f2a6a863431341e94b528e69790bbf8b7b6ed09f3fceedda02f9ced0aa3f7bfc3bb997a4af51657c0ed7e2c57ee1de836843f8b7a0d86386ebbf42fd018b676076b87e97cfdc780cbee7bdc857f1fce21be117eb3e09e603706cddbfa3cb6b74c498bff50b7fc7d2f3f5fa3baccdfb6ffb3b96deaec6e224d00de7dfba53e455ff557f8774f9090b50d2281eb2aeb1f03f08571b96cfaf66908057bd5acc99d64a274c9498673b5fa075dc44ade547711ce7d91b21ed4fd93fe6d1d5a7b1f3e7e1bd384d117ba1e7883052e5f917e37c98a137f417b4bcd221b00deaec1276d01bfb947235c34ecdd132adf9e2713527a6dffbcbf87ed8af5de44f9892cfa3f391da8fdc1dcb7cefbf0e8c750317cb65bb1c94e2ea524d107b0c38ff5158d854e2064a15fe6b63e92024cf1ba157f0a37341e7565d9ff49b3e00ddfb669fdd17b9bf7ebbba43c2bff7c5aec3342c6b07e1dc15f93e95837a5fae29675daff5bfe06cd6f7fe2b5cadf8ad5ebc1bf1779c17c4173ca904182f53d318fdb6f3ecc9790f7e818cf880698e491b2818593185b8e67d4e9c61d10ce765dc9eb598fbad839acca2b097c68f422dc6d1b089a7fdefdf87f593cc9afd057dafbf7836eac1cbf64f9e5d1b5878ca686538ef1a95b4f1a43014f751fd6e3e3951edf423636c86b68fa36ac92e24451cc3dc62fadf789f87cbc613e555f46f11e29ef7220e9135ac456b47f58a6a719dd402eef23d855e11e57cd0db08aeb5fbb002bcdc92f5dff45c35cc7744b3f7de99342a76770f6d55d7a94167fe7655c66ee7fdaad0ce7debd2bdf37a97b81fe7416cecd8feaac4d31fdd552f722bfa34af86b31bd2c3143a76d28f97dc8c569ec8d787c0fa45693e679e64e633cb67c4a5cfba4593fd87f80e75ae1afe8483e347d5e6a82d1e2bc08d16f7d4e7f9677774477d3dc09aa62f35a38d5329ec9fd7b7ce142f819a8b201ba1cf1f78a6b21f3d0a1701f7a9a72f27f2afabec939f88f7b296ae0db7afd0a7e03950fea15a6be09f447cfb14113f4bda26ec9278c7a807dcb11e07f5bc530adc04afc145b4bbb37b4259eff827d851ed47312e286b237e663dd6c9ea997493c94fbb8f665e5e80141a82aca5578ca9a9e510873ef49ad37cd3c21edaeeaa7dbbcf7dcf18bb0cdc0749bbd3246c0c308c61e501f13af5aa0f37c86d2511f2edd5e277cd9db5bf89a30e9da3c705f44ac13b8079cfc6ffb8f1c4e13e780467587ac3670b347cf2f109bd822ffb5bd2f22dd69da33759ed7ea73749f98d08fcd1a2ef94fae3c679d2203da7deb1ffb56e86dcf7dfe86690bf4dba35e3f75990d2992131096a6ce5fb76d91ed6bac07b745ec80ecd81c1a46f19f7e89d86379656d02e850e6f678b5c0be54ba79bbccff57a6034a00171fe3803e3ca73911773e1f60f198d9e1afa1442e44c4f43e655fb5c12578dd88fd994b11c86afb26af776d05e10e7e176052e5db34f90ef91bf9998e78379eb35862106c7e4ddc1dd3ff1dad6a85c3c771aec87f6b00fe62f9b66a9063cf828fc6cf06feae737e9ccba4a8347c95d64fa6c083326ceb4617f0b2d4fd3ab9762ed76dcdc089f4102b7ecf80cc4add6f2e00bb5cd096b4dcea9fd02ef15cfe538648d55c5fdb1620cf3a69a39eb38517c0bbac768417b45bc9ff61d54acf316b39e8cb689435c5b8d3d5c7f140bc7377bf024e93df15465adf6ecc6d21d206c491bb53a55ff4ed45aeedfa4ed0dfa5b97e00adcdf2c5bd0ab61dd7a817feeaa1cb3d8f393d3b38d65bb9ea17f92f96dab14272c5ad4c3303af7a1fb4efaabe3ab59704776c3707c54e8ec658d93e9e68e63a81af6a17a379d0ffe8cdddeca9cf4b8d328665d8d37f4fbc24fdcbf17e3a175946639b849b06eb97e877e10ce3929fcb6d4125fdcb2ef908d6cad871fcc0dfbb3454c6ecef90574c4b31d618e84cd8a0a9b45f3c9b5b7c73fda4f6931c6662f2e88d35a72400eaec9ff0ad3b5f76ce27e787166ccf315efbbedea9dc63f5b537d7c1ffaf5ba848e1ce94b282c9ec62e10a66431225e3fc571073f59be5f77081fe63422bf7c63f7eedf879516bedfd9eb364e887b91d887184719d55b27afd5be93cb457e33ac716fd576d32af55c1326383c5d81235dd4de657e2ae65eeaade0fdc6b9b32c9d3ba3aa8f2b0ab15578e4df3db1cd37bd36e122289f7d97f20fcbd675c3c6f1095fd7c48919fb095fe813589ad597e2e4431cb87ed157d7718c6bfab6a065247a35053ef274268dbb0c5a45420f4f3f4fe5ddcc7959617d39d6f54ad73df37bffaef40c2b579bd652ea6b0f2b22f7417636ad7eafa3a0d7e51c79fffde892ffff1022af7449f7967d45190342f7f6d7a98f5c16f018928ff66d010e79a58340b99cea0c3a55824725385afe0be330d6558aa1ba82774b7f8fe2b1915c77d48388b324563658e436f226ffb665ee12a3bb5a633e68d84de2f3e4dfb6ee6f9938bb3626b730b2303d719efdcbfde9cc0d21bef1d0f5691de33b9be705345f914f080afb2371b3c974c3391af7b708bf558bdf0c47448deb96ff0f7b6fd69c38d26d0dff252181a3b82ccc6c4b1c0609cc1d5212a62c0c1830837efd17cacc3da494605775f5fb3cdf8973d5d18535e5b0730f6bafb5a65e4c73bd5602e71e7665bd4bd2dfefb7bf89a7f45663961ffc62dcea0fa4d14a67271b3717f38fa4954be396ad11a7497c52f31af477c45dd8fbe4fbd03a496a4bd208609880fe00f24b4be42197fce61a1f67f039a1b6f7a2d9689be3d03a8fac58ff84f66f012b241cff6f69635723c41bed50df03d7e0d4b98e7e110642d72251cf5e8ffd39fa6570241b390ec5ed76a3b7ccd95af3fc45dd2eddcff5043da9581f60f5dc25e8df308e10d5c3a062a41031fa601364ed44612f69cfb03513205695dda7f6026358d996df610aef254ee5bdddca96c4a38d6b0ff61e5bdf57e0bb65d844a8d35e2cf83de8bdc7f51278b8674fbee3ebdc5872857aaef010abcfd6ae73c6de7d63edaebfb976cb731f64f08e45de9cc41b9b7a1527d2e0da52ae077b6031ef95512eece021fedf78761db1bf6c1d3d08c85dba1738e72be1a3e1477b98fff47a35aa67ee90e7976c8c715e1277fe54f23ce8da87c218624d1af25f29f261c8b597b45f0c6d40b317fc38b0f73d8a6a78834bf1c9a9c2bb408c76429e8d5b9c8ac80925ae258de4acbf1f623d15fd6ee224449da208e6fa6199ea35e9a67bc811249d0bd8013741ded957e41da17d296b908acb95ceb9eb1238dbb3968773333e821d3bc7c8cd30c7fcd2007a48d87e54be815cc31eed47aaa3062ec4e5ec3d3dc9cfc1f3f61be0ea0eafa03bd1df224e335b65a4b9b383987be7b76e68652097abe57bb19e1b3c10bf68bdcbf8e3598feaba8a3e1df72fe81c75a331e96468ec19ea0a58cf3c573cc09996bc61ce13e207ca97b2f78b8b9c73defc7abb6e62e3cb52be8bd2745d1dc78f458cc5fa016c9568aecbfc0099cc192a3fb5ddd339e8f00c6b359e567a25fbf79566e704f10758cfa4b9bdc9fdecc4059b181adccfe2b0441d20d26bc03301cfdc9f0ee564763d88070dceb2e6ba63b7b5e44fd1b53a3f2cef9d32ce1b891f03bd67edfffeb898bc0207c747dcd0cf33ea25668dde737395fb95555a933c5f55ad96fb80acbdf60c73567900fcaaea1d9763b6018e46e1d6acfa3d81877acb0c5f53db0d495f8e7200864ed88ebee15dea3b71ac0ee218e538ea9a18ce9f97af7fd0d3e96f63f07bd1b6369e8d7e5317f1b347238f64f6abde1fb37bbd53d7fa13e0fbc7a67fed0defe6828cd8f54e2ea8becbe34fc88b50aea7c88302f520e2a5062c5b68ea04622d4aeac9c831d2fc6c5ee851acc2b0a693d103f2fd76d6ad7c3e479d0bf518a9f32f1b40bfde748d317ad26c2077596e97fdb4df184efa37b8cb56a5d8d0dae3cb6c2edf6b01e015ecfeba817df9c25faf094b0ed1fa2c2f38512e50b4ee738733fddad90ef3facb367072470f4c5be723663a5b3acfcae3485c6ff6357bb9c1e5403e8da8987182708fa8c1433128cf3bf6cf0bf0b366411beb8b2d5a9fbe7b6cdbd7670dfc920c750f8147a9c8e78a1a24e286ffb4069da56bf4aba41bacce9eb46a1bd307d22e235e3186bbf430ae34ec8378becbeb815ac3e129689963aa7a87e8bbf96ff34a0a7ef7bc90eb78c25c8719ff436dcfc17c912bc0965d27a8051099bc8b2636f918205fd91cb043956538647358c1da98803860b6de13ce60dda2fedee058d07cf8882006c49ec5e08169607da25e96e4c852755cea6db7fc6dc8b930f41951d2ba4a2f5ceb2af022e06fdc0ec8a60207f036069f93e59f994e9f3bfc05faddbd8cf595995a4fca3fb830ad2597e1fa3261f139c4af638bbf977a1e70851daef935426ab48947d252e2ba5c55e4565d746ac4b7cbb072f3ac8167441c06b91fdc4cbac87506675e0d31d93a7e999b755639469a8fae8a5c6068cfc3736ecf79dfe5b2bba31a9cacf9e7cf164d41ff5ec9ff3d9067c0fc516cf0df6bfc6c0ecbcfbae6cfd29a0fb6deb3ff1a9f876cb9f49d25df6bfc5eebd9f8253146a53c208f93efe4014596309f20796bdfd08066752a198b328d8709e47908cbe9e7f3a4f40a1e96983fa5bc0bc5f921c78edefb4dc53b9d0bf23efb2dbb8698ea2b78bdcf57ffd7f0aba656bc4f31ed01cf84722f82157395b4b6a0bb0a7871e498c4df0cbfcac62525e47c23068ff9fb41be07b826caf547ed8b312af09aed5c589b622288778cebcb767798e37acaf7e0f8f8984c50a31eeac8db27a7c7f455652ee8823c96258d0259bbb37ed317b5b62c4efdd2353779eda45f21af6b2327967adf0741586fa3c748d98ce00267e8b28b7edf69c1be3196daf4f29eed1bdc79f2be323e2dda69e04fe8d428e759f82d98eda8be90be42bd4e634077545f40cd5fc079e26ffbe26fcfec5d70afc1bbe46b89e73d547f9bdafb981339ee248f0cd3805f6c4007fdb82ffe1677f1b763e937baee54fc2da1eb64be46fbb75a2762ddb3700d6a1f46aeab739c6a3bebca5a80cef1720ef297fd5fd5cabb16788db3399e1f3162e1428e817dc0fe945fb6df292f9ebc577aa51e3ef26b4e0b33d7a4ed88f6eff83e5e635ff72eb76f0bf02f2662027c7ca8dd25cf64235e409be6cfda38374bd0299b0dd1ee285e6fd557332ce56f2b0e62e2266be0c1f162e4cb3f3e503c02392ab0bfd2ce6aee0b3cfba16e8c9a37ecfd8ef9da517c11d533d52cf15dd08f97f6def109fba6ecd7c94f75fe4f8de17332e9f7105703fb67965c4a18e5ccdfdfc49d329e8445b78f989817c04739a8b1837ce3c40b1e009f4e0d6a2941ba059f057ad12ad3473e17ea0cc01e4f07721f9509e24f2137e5b6c0fe210f2df1922217d01b70fa2cb05f2c00cdbc23fab2d12b9b67f91c17fd27d086ce568011208d1ef7887d138b8d6895f9a9d6d457e11e2117ca348073dba1d6da02f1b2a4bd85b666b6ca4c7e1241fcb7630bbf05c740a1ef1b9e89bfbc5779726cb823953348e0ac7342e234029c31eaf4269803018d8ac45b5bd65ceb52e41479b2f61cd158203e96adabd23ea5b173bff3f731ddbf8a7f8ff38df12ae6fdd9dc3c7ce7ef179386d537161bd0160a2f49f8525a37ecdc3921ef99eac7f983fbaed97afcd7ef7b643c6d7f785feb38c8fbaa7e31b145ae40b4a3d1c66f9918a4f80d79066f68e1d27961adaf7afe99d9c5acb037cc7e3d2f39039f3ff518b1f3509d0b9a670c7d180f634cf7722ad727e89ee4db1cb3fc1af0e104f93ccc57aa3f10e7560372cc7e690f1ab55ab9071dcce7237f9e518353b592f75bd893a8319c461bc6fdd7bbcdada2f0184be8a755fe86e2522d5f7ff6c357636e591f17cd2df66304901bbe7f7e2bbba0ce5c389fe4d9a0e23c3cd34b75223c57143eb18b58701adb49ef62d1fd357aeff3bf2dfb781c43493edefc8ae744445cefbdb305e344ebd7b8af8a85a9aeb7be22167b8379df838ff9c3c4b1d4d3c88f9f9eaf84b51d3d96fd3ff21f175dc4d4625fb0fd9eab2b602f256f8a63e548dde318473fb5bd4d583cd9e6b872f5edb6b552d497bda54fff166ccb5cd3e4c796ec9abbc539e1bf297b48bf7d43c39e62ad49dbc8d721f78295e7373d9b395ef141eb8cff269fcd7ea3ef4f36fcfb7dc432ddca45faeeaa6d8caf813b33e21fa5a5f086b6ac141bb1df7e2b5ff96fcc998a1b6ecf99907997e8719ea16e07f36fd20bf3ab00c3fb954fcd79c088d701fbcd1546e1abdcf05f9a0f55e3b4cec7289f0f85799afce7d7abcc552bdb77b1ad0d733db72eda67d5bee09aeb1ffda7d69393cf9fc217b42cfbcdb41162d3eedce254fb8fce813a431e7cd4fca6dc2ad3d6fb1088c5037e3e953bd29c3c582f0f90e7dcfc3b95531e966dff5bdbec9d745f4fdf896131973879f5461abf13bf5fe0bc7d2bf54f96fe8ef9fe573556a4d3b9aa414d3cf084c1d9a2eb77545f75eb1dcac92635e2c35f7558ffcc41e3d975aef67889519f21f9660e32dd630e925d732b0739e8600e72823948d29b213e3b13efa2e2a596d64a74ebb9ff08beb4bb047dec4a01d7323670de155c6b5e722a689a5f96c0b1c37d99dc5e153857966b887f05d4556a3e702ccf822dd6542c35fbc5a641357bd0f365bfdfe3a48dc31ef26531bc5efe7d0fc3b4c5ffff347c6b9c403f4f482d12d3c6a8ef829a6472a67c07f047d5cf73e4f07cc97f3fcabd1ff65ba56ffe828b62ee359aa56b6e69525e8fa782662b6a0b28cc788aef2adc55cfaae7e4f5bfc41cb16b3dec5f727f9c4a9823c2b349bc953f09747d41db5f2f414cdda2d987d8f1e89356b5853f23addde51ec6fa5b099f5ad495d8f9185b0e4f94bbe17c1006be0def677f6efbaf6ada11c61e35bc8fb14375cbc12cea997d26910b63194ceb3da356131679b24cdf85e6b37e18ebb872d9a963de57e633b3576f34be8da513b3006282a6c981b8db1575d69732a7aa340c50475f6a6303b7b6ee0363bddc93d23a09ab8983dc1a7a9d301cd1f488395c76cd0d4c5f7d97808e18f47f393ef59fcbbecd321779e2c1bfafab01d4550ddbdaa7fe61c7b4adb8b654acef3e133792eaa9237d0fa6c33b227d8bd451e31fea3e1af707c3de28ad385adf2cbfa739b7e9373fff0df1a37a3f5cd04e4cdab867796fcd62d3e8fdcdf58eb50ef61d035cc7647b93fc7d946f735e5a7a8593ac4d7c7fef94c7d1f32cfd86620fd793bb06be9dccd457890c0ea0a435043bfb80b843e881c77c87ec6954583cc06d132f560d38b392ca4fb37e4e5cdb179fea737c8d7ed29c8580df7ca37960efc96cbb4527e92329f3d96aeee1907f43e15ef5eadc01eebee81df280d34786319c561e07ddf66ddd21dd1b12843d13bf380b1ec5acd12d9ce93ae7855c9f171fea88d3dd09e309e468976b5cd5b8a4f6fbda8c270aeb9c639544b38d98117cc6ec05f7409c419f5314eabc9a8b7839857b607c89e65c7c517f769eb12f8f38c66fd828b7c8e5197757aab6346b57879b00c7646af86da2ea87363cb2aab3c78875cd6364ea0be23ec1605cffd227e0f1d1d2d20fb79c18b920f50ec8159856b1f7206b5d0973be2be9c98b4dd029c5d32c7ea0be1ee8fb903ebdae8539bca621ffede5caed83e90bd9b01a86bef37b1531f0c84b3015de9dbf35ea1ec48f18808fe9cd9db080b5517673027158077aaf6c7f6bc43eca8ea1f6d28d787ab3fa443e9cf400f9c68246a4c2e70d6fc5c2fa9cb4e6cba6b53cf6ade5eb6a19f64cacaaae3907c82d6e626b06121752cc77acf2fbc13ebee4d7825f685d6b6f610531506eaf3416b1cc57403cf7ea42ff719ca6d887cb30a9a4f3cac77332ef9a352756939dacd81a38635f06cb175502e2dbd671441d6a74f22cd0dcc51f582fe13ebfe6115c78c8c744d74c86f95ec2b137b8ff2668f3645c013840a821fa93affd2ce517ce89a703350f690fdf8a637d596be23897c4c4b9646dc4b248fbc5b12cf4eef7303077702707c94fc9cf009ff5dffa6181238ddee5bc60f51e030332ae5f6f614008c721fd2ae53fbd8b6e1927f8bd7e11b6ffcef9fe2bf3cc2456ecc782fa49243faaeac5110ed588fa54bf738afc9dc1e7dc2960e899de8940ae28f29b971dd04a911a6f1cef4958ad4ce205ec9c1ab3a83afa05dc31aa5f8fd5c4e4580c75cf9d98606cad73572fc8c9893da8dda88d76efbd5eb57cf7e5d949ecfd5ceeb0f47df1af6397af0bf8f705627c12dc078b49d033e3a206f21fdfc574304d7c9ff12925b87e581dc56379e5f4f5b09439f1f5e3a2d9e894710f872bcb4bb8f9dc6afcf966742d8dcbde77389793d24c9a23e6fa0e2f0a70d1cc76f00e87a4f56aaffbb01eaf64dd3b24d226058fc923726cd2fbdbfac166d49396a066f8fa61f4ebece4df19b4fa4de2b181baeb8f8cc6a1501b943db70a3fedb7cc3d9d4c1a6d5b1fc1edfe58ead199bb807d119fa3b1a5df7522b0df85f19d7f2ec06ff55621d6df525a77c1ac90fbce0873a6fce6e3d1cc69404fd04f0ff59b6ff71cb17e12b121dc7c2f5b8676fe64ec2f9a8c9e30bff068e381a93d9b787151019b2010af16623c4ffdfeb67e6f7d26c8352efbbd74ce0ee2d860a1ffce119863f1ab88c5ddac21ee561c4ef2fd87f9f8e8fa71ff01731613c8cd89069c1dc4f7935cbfd33bc96aafe6d98279b8d0da0309f61ffa164567653bbf540e117a67278df2f99745231d9fd41690dfbd1e30064f3a37cf29c5dd99fe287f6f6eeb0adc9da223ba36be441667338c3bf6865f819b28d8082b2762dcc43c7e465c4c47ccc39afc41eb4a8cba7a6de472241bcb7c8609f192a8f3b6102f652f18834fa10f99feae123be575703b1694f9d20b9be7a864a76ee57cb3d5b990f31d19395fc092bef5e1dd240e51c7972a67d2c4df2ea80502f996b70835eb62c27d285b17a28eda0ec64a621a29e7afefd127bc4c8abd15bc4fe8f3f92e4fc96d8d1d9637ba02be6229cfc6b20e285e6b7fc6adfa40f75e4ec3f6fcc1ac51ca5b11ff6d525b207f917f2ee4ccb7119e194af7216e2166b4abfbbf900747ee03f75ca15e5ea134025a38bff2fb06c8abaace85f158f2c7f273e7547c4e3c8978ec2def13bf4566fe3e7b71b057e70dfd1b27f715a00f0278c0eef88edae6570a7ee07a3f32ffff43147b333cacad933f3bbd1c0b3c8d27f04d92f75d93af65f9f79335e20006dd39e34bfd592dfb12923f44698cbd43bfb960b949b6f6373fcf180f4c72fba2f89b9e9db0b45e8afb4fbdd70a70b1571f796f5f328b7e8d8a273aabb29d36f37ec7e9e39dfa05f4412207dcfc0cf331417e81fe27ea9216345d4cac14f5b9cedd551763f14dff42730cb97ea6bbe5b4b49fb2de50ff8dfcbb0ff23519b740becf553e6e9b00bf8da9bdc5b4a7a4bf8d1830b357513ee38a7527cfbf423f55a1dffdf4c7ba97ac771bcf868a8ffb249858ecb3f7f34a761575d6cfbe8376b756e421f3510b80344e310794c9fb41ee449e85bae7ee68d9c7d2e7272e5dce1f93e07b0df2b54bdc535a0f9bd6b3cff9786d39b6a9cdbf60b6bc0978125947d4188afe39c67a73bf0675a929e808c3b9ead6303ecbdf036d928bbe08f3ad7a57c208f5c7a5bd375defc78f88e18018ceb1f871744eba2b8a37370de4be13f87c7effc4b1e834f073fd73d132b94f895bb0ff51e64a4d4f34bf321f83bcbdb897c647d41ff5c7798cf5d5fa6375bf49fb6364d775dccf49735ee1863ba25d9a63b6c77c391e8aaf07cf09af9751ec3cea21173f704e4a7b67e7fca5bd125e166939171de4fe08dcef2db99abe8bced5415d9bbf877b2cf081f7efcfffb5ded2f6e94a7a8c145fb3bd76bf963993d8d9d2febc5127c812b0472160a05af7f428eedab43bb809532f669a8026b73b745ff19eba2ed40c1eeb5dd253d8b17380bfcbfc56ef3bf4b7439e7e1f0247c91bf157c119c2b998c474877d9888d37edf750afd56e4074e2b8fc461767c32b9b1fa5ff21cc03a16dac62fd2d1167d5bb96f5beef04a790b15affca88dae68db3e108fe3425c1c9d96ad57c6abdee8993dfaf49eeafc1457acd376fb5de3b759f4017688f852e61fa342ef3f8bb18ec3b7f51430c311ffbbe9f1f1c61a70461dbe0684c4ca0dc76c4dcc8247634dbcc9fa9dc614f135b19adee143380edf0fc8adf09c8d0a5ad37de4a2f2dda3f99b2b808f603b2df2989967aa0be7f5a21515e712359c025833b3f4c2e732463bb222aed2661b3480bd658a1cfc5be486cfe3071c1771c4be8d6905726893625d6cf1beeadea88bf17c0ff531337ed1b9e4f30ef2fb65c3379131bf15fceb4f91829f8e31ee66019cfe8c632c712f1dd0ab08d0d715c8cbcb787e2b31f488642d6f84bd88907f49891764260e80dbf32517f5ede72fa7978ec1f3edcd8f54778bb80e1e705cc1b8494e199d7fc05a97df6c0026e8e2b780972fc5983b98882672dd3c42fda950db18177b0d20077bdc0d4dbe9cea32856f1a79888d6aebb875e2efd12f36f8f443d40c87fee3792544dc89d67eab95b081856b51b37c5a09a1be1b811f96ef550b06468c8fe0cbec00331047902bbf84b0169e9dc4d21f5daf60cd48ee4f89ebd8030fdb8878cd14afdbadfeeae9a56feba94ea4f6887c379387735a3b8d4cceaeb3b0f4d29abefda5a02b887ccbd42be5b550177ff916207739cee96c4bbd74b21e1060ae763c11f84e0abfab7a75166952e0a2506b08b541d5fbaa75d7b9206789487ba827065cbea42736bcd1cfc1fac6a7db3dfaab8069f524d65ccd7136827c864dabfff4cff339870c7214826cdbeec97931f614f53b1bbf95cf91d9d6c2dbf18ff17b704e13a6d02962f6831ef60f3bc0dd2b2ec85d2ef90b04d79ed67504cc8b028f4c6d813a8e12630b7d59f07788e7235f5d5c03d49075703c03af7d0b1fa86d30f450b075346b399833b261733ba2679ed3a4c5cdd77abe160adc52b53f5d2b377beb713e0c1e04e543ba95a6ae03383eec03433f6b676a1167c1717805cd67e058e5391f4bac31fde10caf908b5c95b8e6fed978fc65cee6ef8dd53601ad1397eb86dc1eabe08a35bbc2ba54fa2009c4b213eca5567bc7c1fea3e7c0ad5becd9ab8b7cac461e3c446d6bb6fe3f109fcc6c5772d776ad3fe61093ff792e1af7daf2ff6cd77fde767d81b15f36d7add235b7ea2ddeb6367a2c7027b5d016ca98137aedc5dbe89bf13d8d09bbe6567cef256921be777c7b9e4e6964705eefdd14f027eb5793b3d80b0033e9e4cf3562e8d9ae6de4eac73af6dafcdc43aefd776a26105ffb8e5fc081b69b89d7ef30beb7dac88cab3381b8bead33b2ea5b4b3f57bd13702201ce620d1a64ba9e01b9ee59e042bfc7a2bb86fdfa805a76c8dfbfeb59c6a1aff46d2293cb70ba76613d2c376bc87330bd98f402318d78439e2f89a7e3fd80456ee94504fed9eec58cf9eb15d4d6e8469d42ccff4035114317066b1483f64b814bb0827dc47161fe162dc0098ac2b97bdcc098914e58ffc3a7b3278f354063a34239dcc01bda7436c6c7ddd0ae61ee09e4d9abe4f784fa84e3031e705a414d3bfbbb047bd2b4ed539f9cd7400e11c915c6e662ee7c732e588e85e79aeecec5446a73ff71ae2248b785dc9c5a6f793ca4ead9fd4fe44feb02565034a95ef58a98131fea5d139993e0bd885e1e27a9ef589f47b8d757fffc7e93c67134b6ad811f15e40af28247dc278e9d8f6d9ead9b147711564b71e995f9d862d0c69b0c496fc5db35410741200fcae86a59db0f02353b31def3162dbd6e901b6f84dc114913f6bad28803bb2d3aebb6d9b74a3c9dba26f602fec9b460d349d36af7893937f55b05fbf2c6668e536c509b713b36714a6e04d8dfc8b409cb36d8edc09b16ec76d0a9017ebf82bd2cde1cceff0c3923bc970a726bc8b39a6128a73f1cb32fc6af207f3ff3d14516f40cdde359e38c3975c947aaea18b9cfab9eb9659c7af2dcad2ee8cc96e332bc525d55ae0fefa76bd6d5d79780eb19aafafc3528703a2d2673a80b3f04c83ff1ea102f2cf00f4a8e6aee7796f428c58cf143413fa15bbf22972461be4fa0d721dac32216d043df2d8f0994760cfa70c2ebf79ebb72cf7ac3f54f3c5ba9f6129575783b6b336f5fd6433a27903370f36f07be9e7e8ffa920133569f021708e47d188f0bfa7d637d560e666dd4744a187f29f0782ed17f8a8e01e17f3506697db366f49431ccd2a6b12b6bd41f24ae01f89416efeb720d91bd6f301daabccda49f96d6c3f447be07506b8ae7d3e2e6a8c7e74dfa8c7836d1bc7cd1537c4d90d790aeb989c5eef6cbbc86889f5f3f58f386ee8f33fc7b88f93ae458382dad7c8875c96900dcf1a86b989f77588b48b107cbd4d059ff0fcc9daebd59e688ad75c099741b1043528ecf752897a1f355a47fda40ddecc57407380547ea59b29a663285f91787007b79fb9ba1a1c519eca3f23b1e03e4195a416dbb5d3e3f8719f21614dfa350cf8c2723d8579f01f56897f64ed2a4782eff3bb937504f4fe288e43a9967510febd6bf8c7c6b0ded90babfb443e01fc5cde89b3d0323e077f302d40da1e7df5aa7f12c28f40cbc1a3d9371e7fe9e04cca46daed518b233655cb79d29bb450af8f29143fe8a9c1ba961afdee707ee39ff9d700fcaee1f6716fe1b7e0e607da2cca7cdb1f1a4bf173843ad3b28f908788fd137f812941f367a347124410a35cfdd09b57b3a47c043235fe012ce0c182b17ffe63c859acc3bf27aff32720f9ccb0dc75ffa888a7b6a5cf2b71c3a07d71f882fd8ec90072a7cfc1b7ba25a9a47e1eeba859e4acea75b214e5cba466abb136e81ed23477385308ecd0ccfad4d6e4f805fc4cc71a56813940f24bfef19727fe46fdcd73d5946098c87e5f937f30e9ba4d0c33c317b981f70fd1b588c11d46d2fb43f748f39d950e73b36147a3d82ee1cf2016edc826f91f96955576fae2086a84e8177c2faacfbe3242a907f4a48df9a6cdcad71aae038417e26139b61e1390616b2f3873a85da2e2ea62bf413510378126dcddc49ba8f9db0508fd46398befc755c2cf0438c750e6431893077be48cb5a9402ec0862000f5788a1e326725264d1a3d13feb0560cbdd2afefdd0f41b2e3e69ec32fc8b70c82e840ee555a52d7099cd70007399800d85797b5ff5fe68de28e75ac99fa371f83be243e4be355c7be319e11ff00bdb9eefeeb212e7a1fa76ad51de77f37154efd4c2fe8525ed872bc3552a4c422531ce06eea7e5cf05ceaec05d77013b261c0b26275cbb4158d650594c2ba8a34cb99c1ee3090fdcd198fa1ff5771ea04e20986d1ab460bce74323a7edc9e7c9353ce88ec0ee3c2c40079bad1d7f52b63b3ec609a24a76a757e1bde8a067796b9ca00f4a8e13e475300ffa5af95e7f818f5a814f6ebd597aa79bf9ee75066b0df2da71eb5cf0ed3846767bfd47fc2c9e80df777108b98fca40d7a12a02fc4527d5b6b7be23acf0bfbc6fae80f5617963bd36e2b0aa7c302f72e1ac805a4ed20d8c9a85f21f690f61cdc77236883fb531e033e3d920fa80c5c7b5a3b1fedf1c3735f7b2efed5e4f9c5cb7fe77fae64abde0322fd568fd117f04e8a77af3007b52d3178b7eea5a6231350738f8aaa711f26b1d8be3a57a7954aeb956e0d0296089588d4de7df1629d6f5405bd25da42f85b392e7e46f6ae87a0bd4c759ed0bb5bc5a64d6492e45eed867a919a1f6d5cbd8c8159ce90cdde219a074f9553d28484dfd0d562b28602cd76e885ce1dfd4159db41dca7b570ae7d40af08f9b425d13742c8fc87df87ec13abb8f98df06f4c9ed50c71e785aa697b5a93bf613738ff1a6dfc358ccc2938c758092bfa4de0d709a0606365c6ffc1672b1e763c1e796b065cef9fedfb0fa158f85e3b0771129e4b283c2fa101bd0665fb4d30286026b716eb116477baa0f7bcab5efa9f4825c19d3aa87dab20ef6a8ed21770eb66eb1214c38fa55932028cc6f50e0b4809c19d7b782b3c9beefe479fe5bb6e8387c0b765057f0a3826e591bfc90605ab6b7ad6ce8702eb9d679e8adfbb7d6d97203bc114a234af7be7e42ec04be8448138bff9a64e8a36643077a114517f9e29cc9157db7c313ea46c99e2dbdff655ed3a3fbc85cadee7b6179f989e4e583337d4539f104b91bfe042f613ff74d9d89651b7b1eb41fd7ff9c0356a739829ede8f05d640244f86c61744a8d31aa4564da7caa2f56aa975ab3ac8320d8ddf620f6298824ed36cdebee1d378b7b1f3e6efe25a47de34cd53873dc97e77dd42ed7b55ef406e03c63974ca7d64b03da289f69e386a795e6fd3ff40fe01c7e4bb53b80cd52f2ba87faa36427cb6f29997c0db62fca6faf4e7d8e31839846ba6ef5073beaba11efaacf08d500369aeed1a7fc48bb7cfbf1b7a7bfc895d7709b96d26c07f1d5de47869ac689021d78e4bf82adf1b7e31768bae30f98654ae40612ca85fbe3076f5eaedb14b2ecb16d4b05730b7b5fcef75ae41e53836c8a77fef378ffda66af7cd7edb528f56b66db32bfc1664667f2aaebf1d7283ff066e00ec418cb89d97fd08e3cb9e0739b9e566d5316d835fb9b917a6970dd69937a8e1785d306e24bd5eb3056aa1ac0f23bda7fd29e2b32e23d055233e1e692707e119624fe02dacb1fe47acbf735db5c4856f1047c00226cd08f29455e033141ee941e25c792bdc17ec7b69bfcdd6a5fde6176cd53d3bb6b861c7e237d49f2f694ba2bf6bf874be4bbc08bdd3680c3d7bab66a996ecc17704c5b5aff2b01e7173604c3a3db8e59e3b66b7186f8a1c7bf0ed666d6ff4abbcae940605c4cff00ded47ccd1beaff6166ee963ee4f22efe6b406f6e89c7f87e6ad6598b6e88f3430980e760671b3a0bc97fc7b9d8f28ec05c55b98108770857818e63dc6c1aa6ba0a833d600bf7464cc91ccc17f8a96e12ff05cf7819db51d6e83d4583490a768d0647d7bc48b4cef97cd3957807abff75d99d7a690ff7d92b18c8ae530ffeba615c667f31184c865813e4dd231ef0d395a956370d0d62de53ba87a8fccc503afcf5b84fa1e016844ce1ae67ad4b6c9cc65a615b8b778bffcdd7bcf92820e3be8504a8e96a28ff0663d4b9976633299b770cdbc5f5cec15336236d0898938474a65f40878b7a8a4a324710478df6d05ea184fd908b44acef9bad238a103ea45e83c15dcdb6f92ed327844884f0b752b92d9dcaee93b7dbd927e60bf83eff5166cac312ad76ac23344e6a7955f28fb5bb54f8e3a25bfb51e1dd425c05e9c33cf835be6b7bd2ff21c08d4a70aa997c4431f42e6452df9902dea534ffac85d28646e5fda7cec257cf955c067b8870af515f75d9cbfd90aeb7a125f52b2eb15cab76bad1b8cd9cb5a57c807fc9cc7a3f27aab6f7cca7d4eb697f5991674002715a016f01c73c0d6f567d31432ec60a4bec71a37a9dc55407a3237c688be939e4171dcf20dfbde3f297693cf817b7d920612f9034917b4410fd580746c55de6632428e2099f7cfe3ace9793ffa2767f417d8ea272f285f739bcb26bbc565a3fda28f42ae97730654a8ceaff88f03ea7faf14b891aff89bd1efc5351d8b98fbd6799861eedaa1f3b8afe2e869ad1947afdc67da0c29a6957d5cd3b0dd089cfee702c7418e416558acffdfc9f706e19ff7261735d859bf028edd0273d50626bf477d1baf85be0dde33b6abc058aade10e6633a43a81948dbb368ae8a5c321e7150cc516b4ae2eb14868bd758ab85b995eb0fec24e0ae2df7fb86f615f5d3a13df57a2ee239f27b51efad710f7c27359eea9d4aef106d96ad32af865aff6b97f12d001e02ce528935fcce9e13b351b374cdcdfa4ee0c0da82baf048bfbbe2082df77c02ee693cb6e1b7640f24e4faf85eee1a7bf95affb0d4bb320175b5ccaf98f81a67bf803c5816baf7f135dabf5578d433f62ecffa68f7136f0e7ed8c312728593d5026ae5b6677dc1dfe545c8411e405c52f972fcb3b953acaf0d216f6ca9072d3beb7f540f126e08786b17c6d707cca813ea1ad608b93d9e5c8c17747e2ada2e1c9387e4c9adb78d3e30ac5dd53aff660d4ed985037270241de85389ce31f486633d57203f09d6b1a767e46c4d2a43630f0d9a117cf7830fb9acb0657225e5be855ed30a571b56886f30223c19eb8d8a3bc7ee0d7e48e4d2a66bc501f9e5dd35f6690f26f3bb357723ae51f30cbccfba5edeaa0aa8254cd6cec8c0d528fc03c655d90b9d0d8fc7026fa45fc35c36fab2c5d842e2cdc00f3ec60ec4a9e96fef2b41fbaaf6e5beba1e4bfb2ac8a2a6c9c3d8b81438c64a186ca531ca720cd7fa09fdeeca8ba9d592cda95f1170ae614163d31bf58c3583731af54a1843e817c578f4b0e73123e66af0dc49dc02d611714b7e86b862990b472e24f56f1f017266ca9c8bca21492cb2ca5749ae06566f111bd1fe233b94891bbd8ab4fe09efaaf1a29ec45a16723ed44ffb94453ccf51c6d04ca2ddf81ef7d93779bbc6664d0d351793f0f5865f4518453d1f87450be756d9ace9a5057ea7c205343e479671d0f550d43e63bcc07cbde875de2ee5fe8d317adf210ff55cf653caefd9060eea017bbc5fc1d223bb5da4dfeb91051eeb65dabbffddf0ef9d5a0bf19829e1edc166a23de4bac4328f24eb40075cc7d74385f3fa1a58da2cea7df50cdef7f5ff42ffa7d02f8b78dc84b8e009db377bc9c08f616b24f353b3bf58000e6a5a274ca5b6d17caf8a0de687243e1ff27443ed473f5f911b8cd6da24b98c4cee12d2cccecfa766ff7118b6aec3cdeb19f609f65b321c055bc77beca571cf2ee5872c7b9be6cfb0658117c0581157f1b8f41ce31a9fec31e7acd6b8d6b2ff45f681ec9ef29d12b39fb60dbacbf53369d9173111c127e44a65df8ebdee9fc5e98be143004fc0220cbfc483fc515f67a1a74e7811ac8f8709ac7de2e9317ca22717faef2237021b20cf6d554f1cc379b489ecb9b9d916736d81fc1b39c6cee4d188fb6b9467735cb255fd8f04708213817d8302edfc01b9eee7e487d4fec08ef0b1aeb078be38f7d3022fd70ef9ffd18f37fa772db5b69fd7d117d88dd1645ec8050455fcf6eeaa699ebf6d1fea174c6f7fc7ea38302e57b306a57af2b12ec07d0da70abce41becbd4e8bf58d6ac9bf8035b56c85c6be134d5c6f5950dc931ab38438d18ccee1c0319f99488db4e2d9e6e7675b35ffd601e45cbddddeac29317e01b6f74b1c5ac57d42ba9a0f504b1c4cedfbc4a62df32c73b50ad70cfb6499be5a9fe563ae7cf4017651d9f172ed9bfad3557fb9c6bec1f7ec29dfaa726a23ccfbb0fad1668e3d83c106ef87bd5a7f64c755dea4559ea3c4e3f858decfe5bbc7aed1833f891e400b1d7052716b08f652d56f2773b0499b04b857013f9ab59c729f1568c891bf954cfa9d022ef04239dea29f977ad8df380b32d637ac721699d5d757f106f5b238a8930079ef895fb9f9aec0d941b52b997b80fec8c5262af366c81ea252bf94cb7a133df4b73456946b7f7f639e55af5ce7d82de0b840bb83f52a61de87fada727bdc5ce57e4475f8b676109f0e7e8dda3b65cc744a5c89810bfc645a9f77f29b7ea3f2c9f7c435210cbe62d336497f96e7a45db235fdcf0071a709e9fe4a9bf1df3b07cbdc06605f6c1fe7a060bf644fff77e640f21d29ce068d4711c81b1e189a333c47d6627951967fddf45cd276ceff5d731852efb18779c2fc39050ed9006d89ad17afc01f5de43c55b9ff720dc795790db45dba17bbb87ed81af9eaef8b6beadfb8fff14879261ab3e04de8fd51e817cef70df0951bb904ea89bffdecd589f32760defdf6df026efa82b923f68e6222f85ab7f4235c3e6ec5fe460f55dbfece660fa6c2dadcfa3e9d5364f84afb79548c7103197fce1fe3371cd7df3843e5faa01c90e7e73647ebdd98fe4bfcbe2be58ebf885da6163c988a1965ceced096b1fbaf93b63bfa5dfeb6fbf95fb5df5ca8c34b0d1dc0fa48bd2cedd3d1d93d131dea67f7ab23c3feab7ca0a5d716f2a3d41785fe5d584d18beccf75057ab0a3e733cbd30fdf0f5d5ce41fa7dae22c490a3ffd6ab42ee32a23df299947b1bbec363a46222e231623806eeafcbfd7db0e60a91cb2c2c6126c0cf1c609fc1aa0af66789dc92eb1e7b5f03d7108409e87eba88d19fad1f0be7998aab32c8c98b2ad6daa72bc235401f7f36da0c8b67ba8a111107a4f2092c469d8996d9bf8cdc75dfdfaf068f3ee525816f26d27f17575ebecdcfa57e2be3f97cf7d2fe6d0ea7ebc1b9c9a77c2de510dc276748fd69b308304a9539ea9a0a77f40bb955b201da7bbeaecaba00d0ab8f188729e85e9ad84ed1c59acf76817ead7f619a8d9ffe0d7d2aca6b84b505d551947f136e8d780d343402c7b7df8b62d6cfe998e7daa2dab2e5dbf6f27680fa58735a7329e3affd75442d31d2011488ff5b7623730f6473e4904eb2e891fa9d715c2a853d09e7696d88fbf1fc5bfb7eb929e8904feba9690742e4de111db2935f7d8fba76e717ee5545bf7133ef18390279af61c5fc7e7eed08f97bfdd61638d8aec08dbb78c33ecd0b728b99f9df5dd2423c00725b2dbb883976c382bd631c55f6fbb82bd66f85baae4ed2f28d1a14d447e6bf9fa7927ef9e8b1e46b5f735f1bf40181177861eaf9697c5cfbd186b723eec662fe8e78c597e90be01a18cf353f5b1bc8d515a39f2d7519958fe16c8183a267af2d02963f74162968e3cd2f431b669169da261bc4055e306fe9a06f0cf6a486b6e07dc5cef2f607f22075916bacea87438637d77c3388cfea1bf19ac4644de99c607e88c494e9bcce97e753421aecc571d932fb57c5be30731dee492be6b57683235d7d978ee3142eff2fe578a66b7764ef7b55d7c979b0e748f43d3fb007dbc8bf08d200855afe14732a8724947ad94dd0549f97b87ea0d656cd40af7130ebb76ed5dae2b7a0905f5d639ff5cd5855ceb7c41c3e95735fa9c775603477fbffe527ff9bf2935fe0af165ed42c5d730ba7e0ae2b459cc2b3d7c71e17adc3e30c6ff53c947005e27361d1655d4e576d8db1d81397b35fd4f8fd885bf7cf00fecc00f12fa56716afab26a90f7a6bd42b41d7af20cfa0305cabc3cd1e8f6f7eafccfd03264d9f0785ba9e8767e77f8cf37f04f1c489d696ec6f51586203a727f90219efb6b247a8a393091bc651e9114e286e29f2de1187f7fa0339a8a7c703e6c1f0bed10979cb6c3a42e31ff7b5d16ef23e30dc07f23a0a17b5aea6e9be5067fea09880fdc67b23002bf7b6bacfabf367f8b302c6437232694e53752e1147d51dde6a96832dd9ed29f6796de18c1ccc987631f6153606866ea7ecd5ee210fbad461d56b1df5f198b6b4f2e19406bc404de61f985b4b267779d2b7259e7477f562e172ff1fe27b053c4efa876be5763f2d69acf3bdacce8b38f435ae7198a1bebd4df3a2c47bef6773f491904f93345295069acaf764a326f260418e81eb71ff93f1f8b7f049f7c6ca5d5d316e207ddc7b63e53d434dd62bac4be9d7cc518b17f59bd5de99a8f158cbfb8fcaf6ec3cb49e9ba453143b5b8d7594b1e60d6d820871ddfc37ed3ff6ca76f8b7740624e76f69fffc9fcec0ff5a9d81e56c6459335ff885b379b374cd4dbf50b8855e18e417511c85c013fd5afd1e27ec7a2f52bf74cd2dae4df5aedce7913d78881131b4a5df85896599343ec0aef8d35defdb3504831bdde0003f234fc05fa921a0cd843ed62a692f45dd524e229f57d2bbaf0d5af67c22e1db8e545f517ee9d8887b28d7bd59865adf693672c13e4aae02394f15e0bff91c5f2de3c2721a82f054d7654baf91d90ef1d96a0f698c5ff8025cdc98c7923911ce7593d1787e39a7ff0dda0359ff03eb1c2de2555fbc515f541e27604d9afab825cfbf258ede2f427bae3790f19dea7fcdef09f54fd16cb7803f35c1dea1550b7347ef5b3a93dd63977a66b688434fda10774b4d04ce954f1c48baaf650167f1a4fd51a82370fe1bd276bcc7091fa61511fe397f500983469a9dba8fb1758d9153b695615ccae66a49dcf8d904c6da5d99eb52e58b55ee79d6008e03e25fe5e3fdbf4d83c06bbbb635bedc445d96ef288c5bbbc1f1446adfffa471796bb3f11aed4663636c486fe2eb35f7bf47876032f44c7dc0e444b50f894d63fda24799e3d1fe6cf1b70ffaede0519c28cf551ffb62f1de8e676223a17641f990dfd7403b6ee43b50ff9b9a77c2eaecf0f7495081f535e84666ff66d66e610dfd979ac3a439c71e4e99cf181f6a120fe1b41b49e8eb35fea3463a0a6b196b0e90737c5ba53ebe1d68a21a7ec852f267eabc1df88db3ad33fc8535ef0c710eec7e225b95b82f7cf7d2357cd2027e0bf36f7aec6ff05079f9770927c0dc712c3128729d5763ac71d73187b278430ec7daa085beafc2204d2f650c12d36ec8bf19307c817b296bbccef06fd5f8c8fcd9d9239e6841fa0eef1717cf9f19e6911956e8e031ac4cf1dd77220d2d7cc73f4e027551435ce3e24df44aeb6ffaea115e0b7fb7ee11d1593dea1cf97161995fbfb9a2ef423c97657cee69e0027704e1843f51eb12f8cc699c506363d906ec38f166c49336e8de6e29d7d2b80077b0087b3596172aed737e1e249bbe59539d90f64cd29d833f83fd4f6afdc97a6015f3b7a8abe1d4409f813013d1917cc0d127ac89b95b27acdf3b6aa27d0c9057fc251f7ff0830b98309c4f63cd2e9bdf59072a1e2eac03c59943d7b3fd3fcacf7099238da7a83dc4def37e1c16631cc6aeb919871ddd627e7ed11db50a31135f5f153f1d1a71bddff28ddcf593ab7be367f366c07ce991a95fde577accc3ebe8d1a6db1ee6ff7e33565f38c1e156fe0775c7613c32dd0336ddb5be789f4d49bb7cd2bb309e932ae9be907679ec402cd0c6fc8e1f0e91ff7930db59fbcc039917e067a5683e77db4d594ff32457695997247bcda8c742587581171301b57e13eb151e0c9ec525d9b0b2ae0868b26409d6904a1a129346b374c667438fb842e4b7a5bca7b55ccfe49c14d407793b2744d70ac957adf23331e92855bfee9de7f851d24ac9edb0d6126b957302766d06f50ec57346de53eecff86d541e63d029f27e66c6d8aa3396e570577faa99b0c3de77bcc7b7354b7688156063792b8f1274e705cd12df5863fee45f5863a5f573a45ab9e2d950b6d1c8815c8effc0c72ceaa2147ccc831b8096d124dac3b758b5d55d59ef0d886727acc40ee8a5d731fe0926abfbbcf3252e21663b43f4fb3886b6d0db8ff9120762d14153b4f439fb19530e48deffe55ac688167459a82753f561213e33a49c006280168075f6dacdd2184ecfd732a673fd0bec2de8ae24ed2df448211f93c474ab3d7098138f8359bbcf4479dea6970de547ecdc58414798ef2ff334c91e7f27edff8d401dcc0a72364c311fe49778ba84f36a9c596202bca0b9af07389bb40af33d98acefe82db5b0b6c1e368415a30accf55ea74eabc5cf51fda2fc5613f2aade1c893cf536bb8ac1333fd5181ef62d7d4f26b209f65d83cdd27124f22e421413f672af9f7905391dbaac124286b8f4d8fedd23dbead2fd3b2bcf72ddd941fae484dee57d4295175b5cf38bc8731101f8bd0072c9cc7f5d5d4bffd409f732e6343ec05517e681e4fe8b9cfbf13c755dbcf01f179554bf776cf55c2913474ae59afe1eb8f33691ce563a07259eaba2a5e17cb7752f1af1abb9f55ea7959719e44f56f6ff8bed90035448223f5af14fa46bcb00a31c762237a463d85e24dc975297dece9f94cdc1852dfaa12908e0a6826ea7c86c4877e3e3ba885a8d6df358f270a3983c7bac9fbe425c80dbe68624fac3b08595f899aff6d9c7e039fc87aaba08e86b56d6f5731e35f960bf0e6987b5b78061648f90e2c0ee1eb633003fc6b54118c9b83c543c6df2fdee61d23e6637aeae5b5a3fdd8f70be215110794c79b983f266c08ada3c849c8662a9b087557af55251eb9de05f7d5747d042e1891db16c058a34e58c2f4b5682d2fc35163385bb7625a937b730f29be68597f527c044fda0ed78ae7e8b050ff511c7522b3ad11a6cfcb394f3698e382bde40ac4002dde50cb4dda33753eef3cd2c344fdce39adddfa91faa5149730ee2bc3d6f4cf361b45bd6109b31dfd6be16fd53a43ed1d1ff511975d01d8ad5a920ee10cba8e741e3bd9b481d7867e67fb1dfaf107c4175f657d4b15faf717f6effd773d0e33bdff0e02cef489b860ee3a0b9ab00e546c9022ffeb6262d8593d47f25d983d4df998d0bfabf797d86cbd9edd5b36589ded648317dcbebfd3bf0bf93e6db23db39782dd9667d93ec69af56b0dfdfb6c6de93353fcf9f4ce3e7faf938f1830e29b4cf8bb6d86c415dea974b93d47fb22cf70bd17ca3d4a1ef291b2bed641939d176f299d2319ed598d9767dfbf6258d5c6a7254fccce06a9b5a5af134c2b92ce58359e8ceb1db957007374b8e6df09367ed1a9752d7122aef1f8ad0fd8e34d7e1dc47ae057935d88f64fceabdd2f52f3c9ce546d3f417b8ccdf7627ce43c7f5af7b6f647f945bf1bdcc22a96ce30f51e7426187be84de0f9e5bfe73641d52604c54e7c2f6d83f4c5a8b9301ccfded7fcdea19a67c4a450cd1be3938a607c85acf7f334007ed1e90af3ca6236e2be8a8eb1a95f74c0ef35ad206605b59e667356179d63dc449821a78a7594eeba350cdbb55187fca882cdd17cf8d8ff7f1a8396d7f4d2317a67a816c031e6c417c0d6c6a069b3057afc10f7ccf559fb1dbdefce93b1b6693a665f20a6e5c06df2a96053548ed5ad94f7883a7fc09f3f610ef57a20dc94d15f45fea8ffc6f6fc9b6fda097dcee119c5be47f9cf7acf834fc8c627cef70e616f3947e6c7803832990fd21f40bd71801cc1d22f44bc89ca4fd53e4dadd414b104a6cfb73e2db1febead9adaa64c0f50f5df18f1fb9cf11517b414959de9dcd399aabb8449039b530fb4ff7c598465cef7a2df453a62db2ae264c82761e3f3c3181f53437a8d782a596fcac7ce3997d7f1577821eab7ae7d8d171280178a882f52ae79c5931c16b5a0756c3b919cc7726c4763aa9594af51b938e50f5eac79dd79b682bc6e64ac0fea2d51fa045fd8f1bb769230b3a701e5d5d5bea17127db88bfadac3610f8886fef773b2f83c2af493ff89438898127267f939d9fcd46cbe88d99fef0cc7eed6001be818a4baaa782fefd66eea4cca797d76cf37fe3faf7c12fe02b13d727c4c5cd09cb62e4660317fddec99a6cc6e6a5568ea7c3938f9ccb498df9a9d54168d83c850760d8e6fc77c44abcad7bc5b98dc6cc264a3f42ee89cbfdfb1eaefcbe7e76ffbed6efb0dff78beba3530cf3edf5f698cbff752c7235a8fc167e2fc3e28e8d58c6c054fad42bc57207d4e330e8ec20dfc2b58d75bf71adac61cdea6eac7749dbede44418bd7eb39ccff0f3dfb54de85fb19f6e7c3c42ad2e917c39050c3ce4cf9b41dbaca3ce01f7574b52bfb4478493604dca9fcca1f7f6b46c0d812ba886382dc0134d53aa3fcbfe70f92e8c9bf24e3e28230eb0a77c1d8d8f8fcc861876c29eef91f538796ebc60cd6ade025f04f361d9b0863542554309cb7bf4658ff116af2f4c57a791d90373c4f8284bbdb2cf5077c896d1ba49dea2ae1147283e77d4a858b4127dd6924df8ded8450f94178a3e4923ae7f28f81ab2e6b67c479f33cbaf23fd0dfbb8331ff592ff3dc62b384f076740f86d391711ac917c4f6a6e1b1c672357919e6cfe221bcb6d1282e6c1ea382ae51368ed060ee8af8c6aa3f2190135870fc27ba2c6d76fafd5b933cac7a6f58db54a73ed52ccf86fbdd79313e47ba8f9a7ef15c8eb583db4322cd9d9a5f46d194ec9a3b34afaf9c8b15a1f9634cad57c418fb60bb9348afd0d7f43e650edfec6f92cf90e5bfdf38078f0b93f4dfe84358636d6acdcf3e535fb0771f4bb5f1aaf3f8805d665dbf473cf7bdb0d7c18cd35cf835fcb7c8681477db96cfd85a4f355b251126bd2bf0c751f08f5017fdb2f04fdc5efce939c8b1bf304180b8bed7edd17f4543e62a7a0232ccf6679dd14fc3c9e9789bbc8afe125d877f423c31cbfaec12c5273cc588d77cf346c348e46d619adfe4a7c3df23c015f17dc6ed7007b302adbd49bf57aad3b5885fe0f76cd2dcdfe0c393aa0afa2129ada5d9dfa1fe57e9e2876ab7e55bf506b9773c3adb16f41ad9df90efda52eeb7d86be0e6fe58cccf9da7cd137cef1a8fb00f1b2abcfbbd77923c0489d05e04a2a5bb55f265233be8ccbd135a1e504b1764dca6bb52aa56b94df28d758dc4a2196ce7d4de035b80c10c7191a75c3d0c4eed668ef052ef55c2a3f8df4265ecf431be6665a7bffe35e44f63c3f8bca3818f6cc650735d9bd650b734ea7dfc0c74aed0c85c11058775d3cd6b17f77897187b9df04d431d9fb4afd506527aa7168799fcdba63f46c67a947f5c2428da4340eda8f24ce39bcef627aecdaf20bcfaef99dfa3b546d795a87675e2cfa1e34c7c5efe3f14fb63a628d89c6acf6e424851e79bf12a7a6b6f610f2bc361d136fe88c0a9cf41aaf81b55ac0d4f913fcc6dab2a57bb8d9b8b2fb177fd7feb93abb6ce33a78ccc755d97de5f7ec4ea31277e6a12ab18a323f5083fa8ff57ee24af7e3f3249af00dfa5eaa97ed3c2aadc7dfe8eb84f8b10238e0cba731cfaacfc1434e21fedd77b525fc3dee09b7b229ef999be7c56e199a588561a15f80ce3099c7ac687e3a35f7ee2b62a0549d610d38e6b6eed744cc6c4cfdb6da57ac618d353fff817b4bffdbe18930c67baaffc9df3ee937993b6418c4f4f28c7e526b8f7ebaf4dd30cfadce037ab72cbf9faac340bf16d4e083d32d2c19e114c527d8fc44f2ca94b0e8f93b02af9f5a93d43770227fbcce71e07c8e5cfadec39e70d890df151fcfe45f9eca9c2be264d127da3d316cb3903e81bc17f938ecddfc5f37dfeda1304fd2ef034e95c52fb43fbb98f4220ccc3de2f9bcd69ef2ff984767df363cddc46c8f712e4ff9fb409c04dab4f41ea1fbccbe1bf01849abacc530cffd3ae061ddf4710c6317c78abd9bdca7c89fa9edd2d9a60b25d71a602bdcfbe31ebbbb52ed4e6c82ce0dff8d7121f05e68ec61dfc839d779a1c5238cd9e1ea3b2f458c83712e2d3a6b38ebb2c9987f93fc37d4e2b4708c926e663e47cdc6a3d49f7bdfa2dd0864be4fe6720e49eb0e8e207b413b104c709f293f95f32d19fd4f165e2ea307b6ff8935940c384fa20df6c3d9fe96613c489793fad5842bda94ffed2167dcb3732ef16159fe96f164d1d8cddd1ae0ca2f22ed61cd78d9a9758a7db58c83c841ee7a0f79bbc80ecffaee9062f8cc076d4666cfe2cdfc11f52fde88af48c5c21c7f20315edfe68acdd7a13e0f35ff1772ef112e873d43737b116733be2b3f1b345726d5f950f3bc74af4cd697d53990daec749f9d3f6c3cbaf3c7624d7830093ae573a4fe281e0b3649f646cf513721707b369b4ecf55f610febd6c0fc787137ebbc6b514f60ff761cd98d081316d9f4b1c77e08b6e46163bf792fb80d65a1dfaca38375f9c5533f1817bd6e0071a21064cd960c4dda9fa1c8deb9edbb371d9d67f81839f233621a9fc2cd9de9bf5416f5de413583f37e7f91e71c146c79b8689d32ed7756b181b798d5381ab9bf5c4b56be3c74b0dce7359679cf56b88999ead605c37c35fc495ac35c1cee67d7f00af253e2f91e7beaa33d3f9b37e443b8db5897ffd7bd45ef4d670e6423ea22fbaeb9e898ba4efd77d6a724d15f72af582830dfc8978ae78b683da98beae869c2a6ccd65e8c7b2bdbca0be47b5763aab52bdac8045997fc51745efb3ae0eb0de1fe0fcc5efa20fb1efdc490b5841967371cf27cce1ba8491e2e732bdefb1b24c5f0f8356bf319cac1efd16d4d56b1be85f0e24c6d596f3fc7121fb58df028e25718768ff26a577b7e11c95cd106483c9f7c99f5dac234e8f97f298fc739f2ef1607d8bcf7c7c357fe1b9a41de6cd1fbe858f6663afd72ce064583c25d76a3116a2f5358b52f4b9dffcbd657d56a05e99bcd70b5a227da6b5adfaa012f05d268dfc3738e7ae8b96318f0a57b041bdfe4a7e9de2c6b86cc77cbd6a4de7655a5e07cb4de3b1885df23338276dfb44e24af60971ece01af49b0d2bf7d092b8e3f6cfd0afc0d6bf81dbe39ab25900fe959b3850cf90fdde967a1b7d533c1d1e02b957468f1803b27dc9e30e8307d43dd7eebc93b4854be0dc8fd232e60ad752fb327f847a096ad0410ff7c7322c6292db1fc85d7d0393acf29c2fa88f84798ae96e3332f43404d6c175fec9629bbeca63b71f86e56b6ee5254ecbb490c776c2228ebe8a7bfc7aa32ecfce0ad1a5334cf919748625b335cf5d74d5bdd6c4b7926afb33eb7f10afc59ae145d5f323b3cfe3217f3ff51eac269ac7f99cb30b7a91904be7b69ea471ad1c1be0151e2127999f9fd558c75aa1bd1ae0392a1cb471939f67d4be52676915f7b3d73aa1afea9c758e6ee497eff18586b3b76b96aeb9a9e11c3d147b94195f91ce6704e77f829d23acda4ae303441643bc373d78d4a3cc7ac3c684870bde9083eb41003fb57bc1de89d0f03fd6bb05e47ab23662f3cd9e871ed31f946b1ffa68ab4bbc36f2619cd41824b59151af59d7702f78947708de28b7adbee3085c1dc0c76bcb5178b93d55351c41f7c2fd231e701ea702d7a3badfdc2dd4917e13d7c8399ba95fd17fafb4891fb7e78e6c1ca7ac5f26018d362f3921064dd66be43bb9c8cd3b3d225e319844ad52ed6bf2730fdcc9cbc77ab338c7cbf4878983245e62c2014f2f5dd21d5a7d620f4b73de266c7b8bb43c66a037cfc6f98b3de66f708f3d7cb9c7b246698f2ddf22db3cdee5ad65eff941da17ab2e1f639e571e30fbab7ca92d9ed5fe63c126662dfaadcb70d4806d9b614d6423f593955fa0fbdfe698d77a7610bba8fb8f56d0637c798238359379458c69750ff17668da18d9fbaf6298efea00dfe312249bcebefd84f13b3b2f8cefdf343e30cf44bd38a45f489a211ec6115980bed4932bfa866eb47bb97c654b29fff613cf03c0b22ebbb99fa7f845072de0e1e80f603c84037862432fe210a0ee998f79cb05d81c6f15829ff8cc7caac1043517c82e50bde7caffd6bfd6b1ee90ef07d407c8bebe07e441b1a6e4a28f775cb4186e549df14e12da722eaa5f0ff916a7d40731cfe6e0cf9e26c027de047f5bf55a131f16f0d41fcecfc03912b5d49a9e44c8794adc2ed1294801cfd37fd431e59972623dd4141019ea8167cc1ff0b0df5ef9a9dec2316b841c27215a947f79f6a07ff820e3316dfb2e96f3e5289f27df7165f9fde03c33fd34f0dfd83cecf279205f5bcec339b9db535beea964b69ac6ccdd21ce20c05ec5e8e4a7baf6c3344c97e37a5bf7733d3c63ef522f1be9be884117f51380ffec0339e6a743bdcf440be67dd14ab48f15a0ce54d2a940cfd4096a19f45e79dc1bea71d0f854778d380e3e5e826b9b714c24d423650db958d32feff7c05be9eb85e3c37e7785ceff475e8c6b4f9e73ca4f7e5f434de11cc0354adf0530f2c6bb2cdf57255e20b291eb3ef8a949aba7c74bea60c9f74bd22af03b78a35f163f6e7ac61ab35a6ff239883922fb4b7c48836e41eb385b9ff1db663b5803db18fba1d67be43d377dc86d8937988df114349088e3d61329697124efa84b755d3809acd71dec577f03f81cb69f67ebed784c7833edf37d69f3993dd9021ef7df19db11f47ed50468e74e24ef86c6b8ae09b3da32f3d3cbcd1af2ee3b8ee75f3c1ecd7e28de8336cdcf3fe8a77cdd53bd45e61fac6766325df50ddf9bd9acafcfccde09ead38b4e0538e1af13d485161db8b7c1a3d844bb90d119025cac758cf5d0cfcd1aeee88a75aaeb0bd5acce4bd04c99893ca6871cc703f66b99fecf097911673bc0799006f96475d5fef25c8dbd735eb67aa5315bb8ab3efabc98436eff1eee8ce9efc4d9bc6dc6893f5dd30e4b3e8aa21d96fbc9cf003b1f1d8356883883f80df571c8be4f2b5dd4d153d8119db7136d38ef490f2cac82ad176f2bc0449d7de096cbe6a4b5b379a9a2cdc8fa6df027468485dc639edaf1210783fa71f347f4d7b52f8dbe771f7a8a514b60d638c2193f68833ed48f7cded43e6e024f65e1fc907aa6b6f3e38bbcce648e791d76cd2d6e0c6759e0c6981367ade6ff16fd92cf03e7c01873c267ded7afffed4218b846be16316fa0f1ffbb7feed3ff23bf5de5be260db4d3b91fa3fb8a723b8db940ad1d7235edcc9ad751c8864a2e1fac49aa33d4e637e63eabda278e8f1a09264fbbcd5f35bf63bed275132f2ee9091cced20eeb3909dc630f6b4ba407bc27bf7a856b251f07d00ec55a669a58b88cd716be48f68dc0bb96892ad42b44b3d1f93b7617b472d7a8cdb69809b03d1f02d6d2b4ee8dc694a7d5180c0ffb43666d6dcbc48978c87ce4125fce20679fef6d95bb313815bba821c6edb283fb7b266efb9dcaa616307e872b8f91fc717e7eaaf3f0c9c1f3704bf97881fa521a5fb41ffdba8197cce69bf1f8eccaba64daa739653519bfc3ce64d0f361cfbbdfdb99ba52dfa970cd4d0eb366a3798f276f3005db733c2585bc42d2ed639f4c90a26d531896c91c6b1bf9584a5f1be38b44d6ec74cd672bed92939fb53a5fefaeb68889cb7d0daa7faadae3fb0ade49ee933cf67bd13d1588b3eaacc1d7bf2cc214721eaa96d3eddbb4a1b16f57fb002ee48a96a9b6f5d32a6a50c4f23c074e85dd15fd0f6fdec61ad566949fc9ba3ed48735bccddf47f9a2d16e5ccae5b6af367d2475aea06fa0cf2bab5e8cb4a15073f43dd4d1db8b34a4583d7f4f23f72f3972a026a238b82723f0271f48df5ce6ff64de2df0e0fd349fa4a9a7f9b90c4dbc7cd08d3aa8917083677fee91e662febe10a305d7ba955fdbaa6bebc9750f7df359825ab1c263d8a5ed1cebfbc233b121f50de27731ae11903bf8144e0f74912f30bfc174d736c6625aab814d7c72ce7afe56ef866e8917740d9c18f3cb83e6bc03713cf48e249d3af8f1a477b9ee19b577d0569d3b051edc09e636206650ebbdbbc23999206776abe8efe26fb1d7066c75163818ff0d4b76c0adfc8fb6d517e40e9fa527c4a4d0feace5fba1a0575961675d31c742cff082e7e7c7dc4eb6f692671f34471ce86faca0bf40cf0bcff9f3ac5af41ed99dd8eb031ee21c956c4a78b5bc732d496fe6bdf8fe3530228316f4a18daa3774a42b588b99f48f238c5dfb0791be58b467535c1b145337f87e38d17ea05cff72037b53a8e7b1b10fdccba3d9fb1b6d062d1ffc0a8a91cddc0cabdffc400c1b5bd747e84f1b489e407576e1f9eaae76186fbaeb7e11f3b9dc7cc786f7e798f304bc9acd0e4f463b363efa1cab5bedb0c66305e5b5382fd6affede39319997dfcf5d6537cf8912cf25f464a7a82baef67d7457e3d5a831bd5fdc914d7b95f0a48453cccf6c158355ffffb6d606f91e073c8c5e6b8b4d605b6b1c53457102e4ec262be0d1759637ce3ac6277a8dc31031d071776e3deb48b713b5c92f32ff0e5af533dc137be2dcd9a176bf7a1eef471307f07d49df62d5445d39f22d307e7e86b34cdb5ab231e42fc5e10f9d8794dc27eaec9739bcd2ba5e003659ad69911aef07bc3dd355aaf11ec718397b68ce9e72fbd01ce5e7808378c3ee7feb9c1da44627e4ce316e72f3bd2663930711be1863ec43ff22bb07fad4b3f6e36283f9e13fde2bf3dc4e754453c6ccccff667be830fa05f178bf8a7a2fd9abcbfa714f31720e5b7d996fefc3c56cd482fc83d649bd16b562a99fa47e45adb4b7b6256f4f6b73f10ebaf9bc1ebd43dbe4778b7e711ff9ddac766d6c60bc1ba097229cd0b46b520b42c596dc3f5f7483a22685e1832f3cd12eee59ec8f9273a6f1366fc195b81c98d6b103dc7d321ee63eee03f146dff00fecdf76142df3db0653ea6dcbbf0dfca201da23fbb705a5b1665c7a72acf579fad6beff6db3b657f8b66d8cb9dc51fe6d80edfb489c7bdfd67293c2bc2d3bd8f3e6ca9c8cc6bbc5e579e3fc4ad508de1770d01b01fc887ba92120e3e8a3ce1dadf7d897c0f680c8ed1ae1a994ce8967f57b8abcd6c40fe2d6f3ef073e9d07f251654d4df745f51d919ada4ed03b3d31f864ea9c7704f79468bdb0bc23cb834e2fa73246283c858606f38fda22ecddc1e4ada95f46ae77a58d9fcf45e93d527a8fa4bb6b95b8836fbc73b2d9b5eefa045f7069f9c0fbcecfa45b58f949dbccb74cc5a3813f726b199d53053b773de673a9eb686a2c711c5c913f5bf77ccbbd28cf59fddb05b023800187da69f278ec222f76981ee68a6743cf553e76708fe34ed73c23c8e130ed0955a7cbbf597f1bf2cb321dc0527e755a791c74d147ad25053d38e1422e7a8438e22455be7d9c06c7e923cb434f4533f1facc0797fc334cef2ae1f757efdbc6fa19e4044e5141df929fe5cfa087363e9a7a681ee9d08d1fedb9f179be9715feb92273cd66ce664f39a139faf5b137d235163ff3111b06d71c30f7359fee6a50339d7b8869dc2e52b867fb633c36fa62aa894557fb56accaf5d56defc9fa64d4ff875077d9752c7bdcf0a7985df030377c239e65757ed5efaef002a0b3ff50ee85aae76b16ea7b0ef1e9af0a9ad901d413589f9bcc97abdc09cebbfeff0cf8e9c3d3823457950f19be16e6498f99c2ca93861beaeda7ee12fd6c1c2f930f3f03be2af53c952b925c993a2fb1835c4a96cf79018ff3f03b736de61e58ce7fd27886fee8242dce93f299e1ac78ca40e33e38cfa106c77036b67e4ac2a0fe7086c0e5f78e3544e9ab17fdca2717fc319d3ff3b6565d59bd36a5cd0e7ed53be5fd117d80afadf7db2571bec051cfd68437bd1e91bf76017841b0f7793ca9313ef96fca174b2e16ae72cea9b083fdba68926d210d315657772f1dcc2fbc0b6f782dad092fff4edd5ba87d086b6cc4eb6a30ffe7b1d9cb66e0b317b3fee3ed75f2e342baa6aa9f770ef54fafb101bf0075295a07639ebeb8b72d9eab8ced6b98d58424d6e94e0e2342dced0b602aa04e443d8d957c1e01e3b5dc10463d462db39567c62a82d995f502307fe823f275353e22062398ccb50fa47cd9c954d42c7bbe96cf2f62ce207ffa1b7b3e79477ea06adcd27a8cb3a13b3235f3d00e17f293386681e40fe4dab88d4d71bccd7cf17193405f4916000efbb4c4da31d612f69322cf3df369926e03f6b443736d5ccbd621f1dccfa50eb43c4b33f0877c89e7926378cafdf462af025d733c4b6d12f93d524f5de18ab37eabe03b947806f2f5039c80051e6deef74aaebdc2daa3f172b755b09349730436784beb8c7a8b3836507195aafeec019ca198fb1b56b1f79574ee9ae65909f63e3963cddc5d7d602d345f979d7553fa60fafd02696f8a31fb7a371e9fe5d9fce4f41db4b76e251b956cd817788be9e15ab67bb7f93dfc621fcdf5c79ef84ad4b9c5625ce943a29d7243a8b7a898ebddec27a2b34fad1f23b73a09d6363bba9c212f31e89b67160ce899ce967a46f65ad6a53782fa7e40bf03f935942ef5e8301e1b5a9dc7b805faf901ce9f98eefa064f5ed6be9d67b6fa880797d746e2eea86bc3cac733eca5aefa686309fb34e812a72aea1e640d88419033cc77778481755283d72b91cffe8d5839937976c09c7818fba8e7aaf169b60bfa8d3f2f6093e30d3e0f3821b4cd49253653c51ef52b70d5f9544faad07e036e76a80942fdff658f18d8370136d8cbe302c50bf58a5c093ef4bdcd821ae960e9de5fccdb511f181bc3fd82e515f55eb8b2b555a8c51d77f9d9033911c1e65ad73b691dbbb42ff36bccda597010ad2fb02d1c1ba5d68a812db470535cfdd09ec365fd4a1fb92fabec5af4449a7d664f4bec566c318a1c8b39d445a317d32e4c5f8c9c5732bdb430d72d7b595b98b362e37fccc71fc613f0755f8ecda4fd5c3ebf77872f7b88dcd0387794cf55ce612bfe94422d721604d8d391fa90a37550c3063874c7a57ba485face9bd9afadd7bbeb5ccbebf32bdcddcb7568596fb77077a573c05b0d8c7a84373c99dca5519163aff06d101bf47d234fe9b50f23ccbf487bedf88e6f8c8fbfc19efe1a9e854cb708ce5ce44999219fe9c90fcbf6937c0873ff48fd109d9bf0490f57aee517d35fa778ba899cb51ff82cd00f7cc333817867bc16dac4f04a1c0c163d558529627aaa9302fe6e7e431313750ba7b44ea2f1b99a3f6bd0ea5771cf7841505cf7b15b6bb3bcaae62c414ee84b1c866a8d45ba97d439181a68fadd32a6c151b42bb2fea6bf97e7ad4f780df43b806f30f58db9983f1af30eb852add11821fecec0ea615ea9dd33f353ab319c176121bfa5ea6c982f59612f22723ffa688f12c4d82657cc73b0df85e45996df591d806f5809914f01724f457b467b4bc7b80aabf3391a338e30e57b1ea8aede821e823daba17540ff3006db3f5d1fa14f70e109f093bbc817007bc071eefb0ea5fdc5f8436602f142835980fc55f977eabebeab999750792dc41f393e62b017acefcfe4929176e300e74eec1e1fa93ed2df319d057e46740bb96587b4efd5d98edf863eaa8d374b30bb6fe66215775bab949f5ebeb56fe9d09df2f35fbfcfd6d4b43b922fe6c99ca53ccba7ea9b268b37e4cc69183e9247184e66a7f70bc8f7d29c30acec6aa0f7d279a4fb319e3c885febfb22fe2bc8fad0e7e3016676d9aaea3af61ab06119e87dc275f83733b11f8f798ce167c2ca4d64af4db3bcd527c6f62c2e55b930c43cabbadcb88e9c1573c975193486d375734939a90be686660decc5895dd1e5678b1923e2b865b97f5cf0151fee60a0e89b244e59f51f0c5ac48fe24fb1cf076b3e893cc7d55a5dc078b11c604ce7bc5e0b8d0f4bed3a1b5f31d67cf071ddf4513b0eec2dcde9173dfc8f75f0abaa935ff76b3ee257dde48c984447a599d8dac761dff3410f65b66e9afdc073fc1681dfa9fd066f85bf2df3988d7a4b54deea7d873d03f91c6b9f49d9a029fe76cd7fd3d85899771be3f547f4b916d83f6dc4d1b2bea4f1dd79ec81b8ca04fb88e55c28fec3c7d27df72fe0cfaa31ab4e7fddc0f6a37f1b1d9390d5ed9afd421e9ff6038d5754cdbf91bd8f9cd344eac1167aeaf23153f57da8290480ed2fdc436105701c8f1ee4920bfc2d2df33e6b1775b40943a6e600fa74dddbf30679557c176ffd41f16a1fecc3ff60cdf96d8d6b44e66574efab4f5afb41e95978aeb71486e75ab7dc23851848f9da340e321709e7fda8bc964abcb0464cbe4efe992f48ebe464ac9337d434a77a76a792fff7389af5917b3096f57639ff5761d10e65b5aaab0835866722357f95ffb1e93f1a7e813eab83700bfd661f23f4bf583f9eb665cbce0efb1c17e94b41cf857111782bd45410ee0eebabfa994a9bbd433d7f2aae4a33cb1efc229eea65104ff17d7b239e3ae7314d91679d6b778b6e7413b309fa5d2cde577133cb39f17f5f4c50770ff628f4ef570a188686e9438fd0070a41af0d727ed6be75790ff95ebc5e55ca854d697c2757e8ef406db3caef603559ad82c7630d631cc296ad0677c4980ec6de1be1b3c57b9de93d16fe2ef3b371a1f601dacd3ef311f9ba36710cebddc8e049168705f67854f6587fd67cc5f45b7d3f460e38b9069af45f9647777caa71287daa8f384d0d4de2855beb1b3d4ceee5d3cc791e9c18b1f78d03e6acdf2f7d93ef7c5db9d96736066dd411f8b797c277ca35b5c4b51e9e22ad792fdac312c764e2728cedfa84ba069d0b72b9c5adb4c0531e6c05e1e3b98fc5f2eb34e6cb4ea56facb919e8ce1f65be49f97f43afa0835b9d98389cf2185c8f50bbbae4f6b638064106676c98418fb29ffe805cf8ff802d9da0be3e681dcca17fbef262d64450ff1ef0f30bb4d33f516b8eef59f5bef56949a7cf431f34cb6375a8998b4e05f65b85ce005a2b837c5e2877c0ed5fc5b60e50db82e6f3a6df83b8a78ace1d4ea2778c99901fa2b1c71e85e9b10f9c73b6fd14a2e65e7faabfe91cb7bec79f93645853a26b6e7254b51cc841804f30bc229781ecbd2f6b04d66bf8ef50177474ce248b36d84b64f0f4acf0df17dd86552730963d96ba57d0e86b1b1a7d6d497e9e41bdc2490d2e7a81792cf2bf079d63dfe4f79d33ae67c59d4763dbc7184cefd77d54aee7d073a7ab33e077a83ff9d5813328c1fac40af7f462d3803c4115f6c40079e5120fec8278c775578d19eed41857ecf5042d55b69fb3393d3345cd4ccbb8b40f43dda7145a9e7d9f77763486318943b40187afb07442aed1dbbd8bfe14e758d635f4fa36faa404c6ab857e67b7f652ba76263905549dcf8b20b752f962debfac9d11f625c9468f3a3e7917266703c50bfc7df2f34df9c4d1cf52ffc63c0b5adae7bf220e674c781b9db3d983cf1837577066a1ed1fe43196ee7b63f728606c08fb73efefc1ee2519f86e6cec6e711febb33d76d11f60d7ac3f4813cee05ed6b589f571819883e8f0359e53fa1535ec6f9d5a9e799343ec056da05e5b81917bf3fa6ed90714187b2ea6bb6e013bbb45de21f5b777f8c3191610d6b78b3db2bbb885bc8aea59f9bec4fa5d62d4a9447754d6b271e538b3774932e47dc718f2b8913814cd393b477dd9cb11c63d762b70e641cf946be563667543caa726e7c4410c4256d630576300e7c002ec3d7b7e20fd3ce44d53fd00ddb90d9b70189b7602f452984f4b7f9374cbb6b8ec8f7debef6f7103bae32fd602e02c83d4b7ef73f6fc09cbd588b410577586a08d16d8ed0f5b4f4e95c65b8e23e798c19e9d2bea2334c16716871871a4ede3d88cc3aae266ef277b7605b88ec8571f920641b7f49c69ea30fd7ec0a16d6ff349d0f7fa84b941cc91daaf3a0f063c3d5307fbfe73dba7ce841439fa8bb96b160bd8b902dc0a6036dee2ce0e7cfc3dfabc6c6d734ee0221fe690e9702aff6a48982d0f39e84e79fcae6bd81bd58f1fec13cb3e5eb847de8f29cf5a89bb29da22384b598d28c6bf2bdb9ec5fbae6bf90df2dbcdf29ccada9fdaa7ba56fe4cdc6cc5da12cbf31dfb8c0fb66883aa547fc57a7026fbceac3d0aa61d577978b8f7ba557ae72ffcee388bcadf79ebcc719d4a91b71263699d8f17dfd1a5d3f77872d7582711963cfe72d626fdfdb7f40cfda0ecba6d40fd30aa8ef686da1ba59c0fb30790abb5be2fe3f6d981de25e2f566bba6c1df98f9c8b955eadbcd284684715a6ee6963a9fe40886bf93f52cece7721c9d17052cedfc664eeb0fbeef485a12fd21f81e81e31bb5c9a5ec57f96bcf3c8d7e416ec6ccbbe85cc8bfe8b7fc43ff43e1442a8413a920162c68bd1671f0e7c53d6e6cc54d769b5fc3f40752f09391e7d5151da827e219557a6ff1813d77e5df1cc41c7a80add1e78afe3b1927b07c31f608baac475069e82357b9caf915b03b10e317303ac451179e03a8df236f5ee330b6ccb9e693fb185d6ffce68d58dfa1ccc1348c770d5bc0a581efbc7ca7ba257b67c599476bf01820177470fc2e374e80f1005d739b1b272aea9af8664feacefd428393e7b6bd0572fd58f7542d0969cd0e268d4ee93a6f5bc1be455d13f581b7b99cb3a6f171ce8009b3bd2f5bc36bad0b09bd67e2d36ff966ef40266eda9e98f43ffd6fda1ea8b7ecc057219d725d23b7d693fff4fb2ac43f073848af57053e6b3833891ff06f3cb3de31f24654f3d1398a0bd662a5dde0dc6e2efee6c8f893712fe9b5f1219c1bf98beff0b5c93850de672b2c988240e62c15b7297eb7fb03ed6d30457b7b999771a3559bf612e3e63820d76afbe5e04bffb0f12836a257fa667787b9e9b927baa5779eae3d184fd18c90638dec43f45dfb5025fb107d6d1fdea242fe09cf17cd4120ba06df0faf4fcb188573a8cd51bf54e698412b458e15c56e4fee0573a2ea4cade36ff3fcfc83b526cf98d5916c76a5cff447741ea0823c5a7168e608009f27c2bbf8bccb2d9ddc7b7d9da813793d1e20279cc8b15298dc17f065a22de43d0fd0dbba6c46a5ba3dfb6ea99dc83951f57bd23bd8bf037b879e9cadf1ae49fabb983ada5f3457e24cfb5478682f69fc2b02dedbadedca5ca6f4fdd40f467c2b0b17efe3624e7db6de8cf1dc9579ad968119ccc4896a633257767ac1f34afefdf9e56af40b546247afe36bfd48fd02b5be6d6f24f86d877dbe8fe519023dac6e2d430d9919e6024f9413109f25be9b2cf06c9a9df93558bb916b48cec15e60ff1ebdeb52beab9a43238f5cd807ca2f3997ae9f7b51c738ffdd6a46bac8b7f928cb1c80d6f5ece5f64ad7d5d539496783ccddabbccc6b05f209228b505349f79659ec847808b0ef35cdaf55b1a7ae4d526e90f6a2d23e90ef54cbaf3571ac727c3ba5399bc85cb4ea4d3739b58ea67d92fdfbe5399ff43f091fc7afdf1d8d6f52b5860ed5fea5bf3228df6ff409581fe8c7a13551d0e7c3becbc8857e1fb1413d05b937d51a0c2b88f56d466dfdeccc07ee06b65682f7daad3a6186b6d65d1f898bbaff54fe869bb90269bb92b739f8a7990fbd68ec1d6e9d5bf30cafd3fc6ea205baba8bd056abd3fd969ee418d071770018e45af4cb52ab036e57abbe7b6f1f637cf1c3d477079ba5e61962855a9c7e2f7f32cf00e3cbaeb9953fb91edc42cedec4df6502d79ebf8920f7013afd5ddf8bd057c9cfc96988fba41bccf03737ffada0a5ec8910cfc00ae8ff2d91e7a15e416d33d23985331d35d2069d0af63f6b3f81ed950ac783ea9a00dab98d48499713f82244ca74d8c6942bd51c4c9fc48d37efc1bad27d9e2ee545c9c6aa7bedf03a85cf08c85e297c86ae65d74a3c9fc0a582fda07f596784c6767d45be27e6ffd2f846d500fd00aac3c521e1f606d323d4119c059d3d9f784ece44afc82be64fa26feb16abfdc770ce8e63e432184703d3b35db9c35fa4c1ccfb5193d91cf28ceef4116dd076817a0c463f82ae0518efc1382acabcc18b0d60d998ce70be0f4dfe12331fd3440ce31be37ee07edc05fe1ff8fc04e8a68c79dd2f356a874f599fce1becf95f7b252d43f00736a897b3cff729c42683f66b695e13b76ee1265c596a4a954fc6c353c5fe0af758c5fcb38b7be72c9c57d637619ca7b8d7026993f419f32ee6e56f8c721fafa07ddeaefe06168d7aef67edc1dfd3064bf78c334cefe594f2b6ee5a6b48845e12be58d7219fdf25e61dd8b74f461ed79837b4d167f392dd9e4ed7e5f1bba3edcbb41baf82e56d1695b4bcf7dd1dc67ac63a436ea9e33e869e08e76cb9bece6db9ce3baf6c7967cd7703b847d503067152226d2ce86716d701e3b2a2dad72566355d7fb62ae7ca016f3a99dbf6d8a9cc6f1c59d61fcf27b3f343e5930fe3f1f7f3c974e6433e19310d3c9ffc39367467932c40bdaed0451c19eec7e8f4ec24450c9e1ba3be40b1b6121575d8d5bbc8b376fd5b9af11803ba75d2b4d2f3fa8c399bf981726b01e9a7bf5751f3d4778803f9cedf721fff829a7033e40bf1e64ec870d5ed127770d0012e09dbdff2ba2769f0e3793569e7e7958efbfad5187be56a80ebde50be7388ba7aa4574e5ac7c966fe48dc783eeab42bbf48e741360d5c8b22132a4f17a9fd3b9e5ed0862d24b76b9b70ef6eadcafc33f2f3dfc9474a721b03e7fd5bab72b38f94b0bee67c67fd0ad6ab753e793c092aa6ef075a796b1663a14fe3e4f3a772b7f5ed88f82b8923ebfdbc475d71a6a71f143001ac577e3768d19cc6c41dc6e630ac8c4ccca645b39fbddba4457393fbd3d8c762f381d787fc3ad4b9d2fedcb30318e660feb53f7e3cc68c2f25cee3b4a20d06cc51077fcb62d6a321e8dfe9bba7e4974b1ba6750662ec1b99e7df7302dd21a52d6239b3bf886f16138c6f4e5fc6376ee215ebc362fd8a9ca590630fc2971bf96ec0e3f49f89df0878b746461d80fb0f8b4c14f82c44d5d677a8b1c8d4c7df6d402c72053ec5e11835375aa666bb70b1d77b8cfc4b2ce6833ca68a5197adb24efb93bb7e845eb69181eb37fbba92d650dbe4e3036aee63ef26e45e922bea6b38d542af5c581bea3995bafabcdf92fec6899d146acbaa36e045b0c6af73d065ce4067e87016e9d0e01c809c6d70836b8d7389e4d72a7ff2f504dfb40c6d7ce2767d11bc3e5b5f417bf449729a15fa2cc707ca39659857dae7e72dd891d12fe2ea17f09d8ce38a7a28db1bf2a16dfde4eb6decfc593f39e6a43dee1b28bf95f6b0cc7199ba98a817277a46ff06ceaf65ccd89807d39d9573c1ce4fd270a1577530eb0367e599f2bcaa379b7c7691db7739f64bcac75eb92d4bdef0bdd979d4c8af03dff9b2c0dcf528286098ae891342ce52e715794f4ced0afd4ea07986fdd7dac7536780cc1fa8ef9ea0ffb0f55be61c256e0df6b91341cf55b3a045e7059f569ef2591ff9f5ff668e3f68f6bba57a17f2492057a3e3630e717d84f37158e2b4724ee3478a11653e38c4f3a84b7e8b189b3e7282fa7b37c643d59c3ab58e65dc598d0074eb2ec8b7bbec1c1f0b5a7f53a8719a5c99a271033f4ddfee6e3dd250971801d2ecc88657a89b2dde10cf40bf1b63d3ab911efdda2fdaeb41a78ef533f5dc5dedfb312ff144044dd1419e80f7da1ef2ee2ca6ad88f005633f7f7ac30610a78f3346ee5b79fd616cd36d467f177afa0e27eadddb812faef455e49cccaf05bce83ec15ccd4bc5e41ed0fd8b8e3e3b266bacbdc7e901b0119db29d17a8913ce800ef99ef316d2f389fbd929e99875c009505d6f3d779bc2fe3d5608ada24aee4e3913168df2dd9ffc9fcc4edafd641a8ddc460906fcd734845cebf23ead4cc02b49781d43d523187a01c28c64e3e7cc724e87e5b97c66ebff745ae408c71265257b19c5f51581cf5cdd91c9e237577652e6336dae3fe9d1ebbbade7d4a90135b5c49d7328f5374feea2dadc15a79823c04c569357e6ec4786eb07dd70cba857a033f9b1f9e01134b67b3c1c77feb6c16807fb3e9aa9ae7bb27302627bf92f456ebd508ec76eec3abfa8d1300b6336c99f656638620b74c6718ada338ec7d593b0ec2bec90b3c0b1ef19b32f104dc27a265d586aefaf04dd30ad805e4ac58b6811b4dd6bb548df87d0d6bb78631d4ff4b7e83d9aa367a94fc06d7653892b915dd23fa58a8af60bcbc9ccddbdae678a87b3aad6f47bf90bf77bb485f681f41ffd10c352b653e1e621bca1bcb5a7613ea24aaf6ddbe14b8f02a498879bb13f62bcc1a7d5bde6ef15ec77e7791ea9cd9f48783b560b70e79a38d4f73aa30216f6b1b7e4ad51c011be3ad490fe67d57c2182b8d023956a700cf8c638df2c8f8fc5302f5379303f1103b291f4bd5ff3319b530b644fdebc6a3b58628b9be55affdd8c48f1e2017e4cfda1d3e4ebc7f5affedeee557f16ff3332734b028f6f7fa2a4e5e354bd7dc8e93ab60b747d4bf28eb1449e7d8b7f1f18829fcfbfa21716ed438915b2834cec3b1b5c699c74c806baf5c861ae7acc7fe0c3ec9b7fac866c45900fb5ed64914060e75c98437829a5155804ec96ced0c1113a5300209e252d7c845bc00ccacd7df212fa1bb267d0686d90cc67558f39f34ffeaec05fc90f43d58ccaac7447230aa67f7cfdfecdffa443dc726d473d9d8deec61f5abb76ac11aeb59fba7398c203f1f012bcdf83f05ea11fe4e1d3339dd3a77582c5bb023853e08b423c7079c7f43b705deb7524d887f41af7fcc65b358ffb88377a41e0a5b1cdf005f71bf04fe4517eaa7185b7a5897f3c4a0e46b84ba1775160cf56f8de2df882c2ae87206bbeff0f9312ed3ea32044df76aed665f01e8c2520c7164faf8ce888fa7f639882709f33ff7b93866c3d3a8c82975732dbf9c0a7d2a1f2f2aa7737a99851ec41ce8e768cef36501bfa8beb3c0cb718fffcb0b4ec40da1e2743c67bca8f0db419f5bdb2ac6557f822164cf5c34cb3af9625a873e71270ecbfc51b2b6a6fa55abf4ae744fd1c1b35ee2dfb47fa8ecda6c6de187f8efda037eb7d137f85132618985c9b7203fec580da0ce46bc80d908fb7ca3267279a4e0af553ec097586ed047a1f3dcdb3ac0831903afd82c7a01beb600b9df1a1fa80deeee407be68ccf210e322f0813a3dfc877d7b73015dcef6039b5550db4fb6ff866c69a35f5ff8e19ae89d9e884b51f17d79ce4e3565c0e5fda1eed5b228e83d6db6c8ef766ebf9e33bf766fce5ffeffcffe9e553f19bb52f71daaf04a0451da506f67d897ef4e1ccf696e677409ef1cb13f0895d0f15ea9901ff17f2c5a943732588735fe533d07708360d13039a4554477c17a0f5749922e715e59294bd024dfa84d5a18cdedd9aa53799be6ff6b34afda02a1f6bd7a153ebcde090c73ac741da558d8d7f1871ce5d768e119f48cfd07c7daa802defed899f5ff558635e6186392eb029c89d65d613e47e3a22df271b6bbf4bb807dd938a9aff37f600efb5a03d6acc3be7a74af6f8efdd762b5f6fa3e6aa5d1af389c828cf26dfb792808ea057cc0db2bd23d7953822eed86bf4ffd4eeb07d9d89f085b899a0f689be4ae561a8f982eedc53ed51b7823823e6df9ea907d4e058d3fa9ab8e7f6ec1bb88da33dc5c75dbe9fae1f38053c379bf3b9d7ee9b18e9da038c5f20f9fad4b99660dcfa231bb2f857c7fd4f46cfccf4e2432ce2b734de6bf25a81339cce9a632d6825ff1f736fd6963ab2be0f7fa50ce0d51e36328926349049ce20e15a2c414045817cfaf74a553df7535509eaeabdf7fffd1df56a99924a0dcf700f664fcc9fded53e3b7bc76783ccfcacaa33c1bf437fe605d51f904b17ba276cc3b3748cf8501b438fc7705f1bc3b138b3352eb7bec69bceec684a3989a60dda098c7d8bf6d5ccd21933fa54b2df35fdaded1372eea8fd4af74c617d32cd1353f365ea59754df55ce8f76676ce4ade47b76de050e091b43d3fb04fac5c1be02ab24efb6af35753cf4ff32d916b1fdcc6b28fb5dff85bd088aadd574de34169af4ca8071bdda9eb7c864e18afd16fcedef019b58bf2dbbcb59cd8796b68d4d8643d4bd600cba9a55b3c5d20be8787dde10c6c63355f4dbe237a051a076357ad1b19bfb65ad47b1bf7f76aedde62fd2f767df80ce4ec9364688ae6e0cee60ed5c51e7c603d5ef31f62e38b2c845f38e200eddeaefaf3955b8bd365f2f51655fc409a9fbd5fe6fa5635e81cda28165e19bd810e62ab20a6fd6ce4b176b3cea76e1fb11ebaebbb49dc6b4d5eda2f0dd7206b1e83368d95b782ef7a7133fdb21ebabd985ca0cd5baee1fed4baffcc596f6f2431f123f044f15c52d7419d5c693280ab7dcd4b2b9a97d00a1da0de595afa73c2475e3ec75f6d4beb8df33d0f5af5efb3da391ab7a15304cf882ded7b9fa931b7651e5ff49ea49645c6789325e6f137ba56deed6e025e34d5dfdadfcec125e6e096c6a24b38748d236a686fe2ef31d71ce9f9adc0f3346b98b907fe67ab68e4698c8e79afb98669693d3a58b77e72028f47cff3a3e4867bcad7b017fcd9303b00cfb002ff79fda3bde92b2e96b66fb9d535ab1ea23fb990aeda9462aee3b2f744781c799d2fe7a6d7646de739a45a63ebcff7a8e37105cdb9f5b7f36315d97bd4ded8a396c3c63d4a9eff69dbaa1f6fdbdf3f9710b14d504e7b748ef273e9e09a0b7f3e303c34cac0313972758da3b91f6a9a1592abc51a37eb6735c72ea4bb1eee8a4113e760d9256eba865b4f8fb41f1c747fd8d50bb0d77e0e6eddfc83750cda548b39f1f314f7a9d7e5fdd5e65bdf1a2367e2bc2a2ee7e4ef4d6bc4f497a8e585cb680d6f8e26ec31e17679de8fe077f7049eeedeaae96c9c986a2d25bebf05ef9cf476413908e239173c8839eaf8765d279abfa2fffaa7df5b169face38dfd7c1fab73251f9c6b9e74cb6ccb9cd0a679a9c5e40dbde90fa18df41f694f933707e164d6672b4e6c2d638b7f885c4c5ba7def981b0318bf81abedca811be2d11eb19ebcc5ff5bec4c2fd4f38cf4de7ef92fb1bfcbc36efb4e7bf523f2c1f7e7faecabd236883c7c49fb9e6f7761ec7261e2532fa38415b5bc356dd7ba36b74fd00a3cab55685d53c317fb063ea87a6ed03b4b5076dca0bc5390add1af93717676b393f91671e7c7dca02bf21f3468d7b576ef1da4395c7ea5cc1cb2d5e1339bbc56d5c54e3aad653b5ffe9679d88e31566ba7a4dd71d5cf2e776e106dc6119f76dcc3ecb6ab0beffcacfa6da17bf5b5b63a137a1c7d8b784a7785ba03e31fd0758fc97d31b9d653c5e496b1cd7f87da76adc657dfdf04167a4d61b329ed50abd07c2a23f9deab59f77efe9b7e62946dc6d6d4cf87efe5b1e3f850f0e67b67ebbc685d4c6620fae63443e9dda58cc841f80dc8be0f3303d693ecbaf85d52b5c7447f0b8a5b10f5fc8cff79cd15a93fb9fa8bdfc1ff772e95f6afa04feafd3b53aace67d062ec483f0c4947a73a4691666c03db68a5e4cf5ddddd4f4893dc3632d431fbccdbd91e04cbd3ff46286f00b6cafc8b7209bb42dafa00feac533b64de459f45c451c547fdef76dd659219c635256e7a99c2f7f39c0a60e512b677c29c634b9e85cb18633fa7df59f7a85d9fb08e55b8873052e88aee11cd4f56bc8cfd17cbed4b76cbaaed4bd83ffc3cf7de35bb185e75c28afcec566722e36f0dd1f4d62a1bdadd5d9b6f8ec2a5d333775372967661c2eb0968af30c1c675e9d05ddd1dd24ee5d262f07ee076c8061acfe46dadefe82b09e51f14eb1b3380735dc2ced5dc5cb79a8ef27c4c109d2036b1e3ae47fd0c73ef0e89c4c0d30601e13a18d45ba43cbdfb7c4f139434fa5ec635d2ea329ed43ed316b3e9c350f158fe7f8fa4439f6f20518a0fabc8d3a179d2baffa1c274b97bf96f330d6abef41bb2fea0fbec87518dbc8398dbb806fa27bafb435bce5e6a9f67b7cbda38be671aaae7773fa46c7ec8acfe1065a50c5f3fcbef639c5a3225c30b4f452c79bdda1c6e0815f71111836e2a29fc654a34effaaf62ada6f3f57e8f985e7d98c38dca38f88b1f31f8ff0d9d1c737a13df414c217e570b0f5636b58c92c640e8b81b3e83894f788392ff15c278e25702e1d5903c2d25ef70ef88e507c87f282d84d80c5e56737bde8f86793d3cc7157ae69e204d1b686d35d65e17d134e37ef764c5e467a74b9a6a2d7fefbdef4ca5e9b97f33e7889bb430b7503513313675569ad3189b57cee10260cdef085bfed51ccaaea7e9729f5b6e458bbab0dfc9775ccece901fb88b5e7332fe1525d87d4b3afe6d1573161df9de8d7a43ca1a06fce189e4beefc32f09ee3081c594dff677499dd497ce142681ec818a7d8b00fc5a38ff3fe549dd98abb0f0c92bc0ec3f747ae514fd38d37fa3b9cc384bb791fe7c2cbc96de4cb34ead317beeeaf1b527cad795955b9a3c807a2fe09cf11316bd1269ff4d590b016f2fe546c8967afe1143ecd9a4bf80a9c92a6a716081e8e58579ff3eb1ac0674de355f70abe59001b3f3a936e50e0f7a1bf843e4cf6ab6de9399f0bf47fb6d5fdc9fae4703af8e37906be48e7d1d0dd2947a8a5acb2eab98bfb6c37ccbfb76afee9fab44b686ad4f98fe190781745c4f3617d06c647f0c3a119276b82cf98afa7d945e7b2d07eba7eaaef435b35fec53e67ed23c2603f07e5f6dee0869bfd945a1d4ce870a93505bd12c2ada4f0bcf40b3c536d9f61bd5f5fc4c222c66e3bbc4f611fbfe43d5a0b21c604b1bdc718329e7bc54dd0438e7a33654f4eb947fb1d7dec945683bcefdc093b932cec2efac46b72cf9c638c3e9af6cc55776b7a91b36ec3b17a3f9d37cbddd7f318788edebb8967a4fc5bc7286a1c10b30f99606e2faab348eedb65fd2c8c456f89b5799596a1b6872dbbfdba6683191bdc2c39c794cf7da33c7aa3e90dd6ca467972a7ef25349024c6e26369d5671b3dae53d49e3dea1b3df8f3c6da738ebe01e7674bf22bf0cef7355c89d7060e3b7859b32ee9f3c661cf7611e3413fbf9687a6226eb373265ddb8c63a58bc085d07b3f73d67d3b41b7cdef001b02af05af18b267c26d1b1a955ceb6a5bdf45fad5370d71d02e77b4bea2c22c04f1d71ae5f67a5b46a321f5c3e6ce17dc75d67456be3ebfbedaa7bdea3e487327c458986b69d5edd47557f4f38ff6faf4d7f92aaee82a266f5e525c403e5fecb3f1c5d8b097d551e045653c56c7da46bd379a9be3e1fa8ff77e4dc3c3e231fefbbd3f2cd75fedfda817af80fb811649891a68d6bbd05e3b7702d2c0e63d1dd8768dfbd05de399581e10ac7b022fac0e9d37fe2236cf9b55bafee979d3461ce78bda0bd7c1e519c3f102e96556cf9c6aa18807931deb6016c017061bea01fce541b7835fff260689cfe39ee96f5064849b5235238195dc36c467f38ba9b318eebf5bcf367e089a27976349b9dab8f7443d39e0efa0f5c57cdacb827b1f0a3f4b3ab2da3e2c62020df792900ee9c9ad9febbc2f877747aaaf7d86c449cbc2b08efb613c7275b6ad443d62dbe8b1855e447af26bf95db66dc8cde3ff452dc13a6fbfec9ba236a0f99f727dd29f66460d52f6efa04724fb7289d2c4264fcabf5b84b90e1df246ed3bd3df4d5cd75f25cdb925fa01849d673ee778d8676dab9716f65e5973943157405e03e9015acbb55c7f767cb6b01286fe1ce59fcc0515f30ab547595b367dfe1e9c89ede7774c0d2da78d7f4d4799f6167abdb8dc760dbf6bec97b26ef8e828bdf6e86ff4ec170377a89f710f8ed29593f542af3aa765bebf41becfb5ba633ba73e8ed7fa648d31d58394b1f231a09ccb672f807037424dead1c90d6e2d79173c94533a872ecb1ed575922a3f965a00bf6f87469fc4517e0159806b0d53d415dfaa6b15f98fbfbf76ad3ef048a5f02c55f5785cebcdb56b0dba947714fb25c75517d2ac5f55d76af66c4c9f86723440af43c7da8bfe9f884b3fa9765bcc6e4957f1ed49d521c3d4bd769ff43b567cb8754c3dfdf06463b1fe00af7059c631f8b58b6131f846b7043a0a0be1712ac6de2b36b59a81d913537e3b0d7bebb1602c8bf413d6725bb9afe467aa8f2c77a341bd8fd77903ef6760d6a2d5ebce0439c6bde1755b74d703bde7090dac61632f54626d36c01d721f58d4f884d7ec99b18ec733c5e08b17da232717aacb18584bf4546fc7847d438ca86997f2ef844df548bfe8e556af5cd76d699debba2d46fdef9aee2a69983fd56299d92df4fe83dec6e8bf6873cc47fc9a150ef5e383ac8a8d44ffdf9dabfb5b264ab731220d588d17f5a5c6ffd679746c1ed155ec80f708df9f5e434f8c7a7ffb5393be887c8e1a76c0bb55eba0e7af48afd9e7daa2aced280f0ac285ca9a99e4ae506d2f3bbc47925fef2c7be732276dabd4619e9381fdbf3dd7f5e14807237111df7729173aeeaa382617791a306afb7c83f8fdc2fe787a7eb1bda13e56f3bc196de959cd67cd7de8853fe2737cf784737ce9b5b966f9fb2fd49517d96864f209cfa73fd18bc43d9939408b7349891b5d6df2066d882deee30fd7c98f78bd0b0fba284ec47a4c2eb48ab3adcfda59a3d798384e7e9fe2b956b89968cf5162d9abd85aed3b174d1fd67d707ee9df4b5a3b57de3f7a85de51f4cb9bde35bd5f9f27b2872bf40834bfa73c3d83eb449ea6c411d49fad811be999bc84e5337a1ce4c58b3efb4fbf43627012e87636e880bccdbeda13d3f3b7bddcc23539ac857784d69cf02f6dc260a55ba7e9192f5fdad05fa862af9f3de3d1095a27f27bbf7bc6c2d358f5e0cae6f7ffbf79c601b4e3620f38224d7fe8a7df334e0fd0f509a01b7aeb314721847686e6a92ae38d1d73599467feb9fefb4727405d66538d9938d78317c27f1f4ad406fc90f73ac5ed289efb0ddad14535c66afd8f2ec8afb5f35ed3c83c159b7bd45743d415e49e4eb537aa97f0fd7e83b94b1d78d36b9fb9766ebe5579c88f342f7ea8e751cc6ebbb5cf5cd772f8b4752ff33a065efe3dc1ba13317a911ec877cb8baf69cc79f989fade934bc35e40b5a167e85c58e75d7e35dfd338efd4636fd1b32a44cdaea9b7c77aecc14b156bab1ef28bd0b06de8ed41fb0a3ea0d0c78ce6d0ddd2e2f69b82b521657da117d4f444f2817ba7f19ff45a2c6bc0a7dbe3548df5326e9187eb716ae4bbc55b4ef5bef4d7696ac60ae7a0a7308c840ba9bf671780b710346185d4d81ea0a3f5277bf3387932eb8311ce69774eb165da72806f7709cbe5823b96cf6e7b8dbaf943f46f2fd01dcba667d28b0c50b74cbc043507f070cf262fe6af37f6bf2e5caa87151e79d8f7ec9ab95f608eac4f9a97bf8ca70cfcea3ab0f451ce57f55166261ff94f741e0a2f6ed49d50f88fb08639d1fa04f3727e6fd4bb32c621863deab31d5fa788cdc43ef90e8f46bfcfb54d85f945bc58ae5b1c078873a7bda2ef2c4725c700aa8e4d31f60e3ac4a5d14b53986cf8ed963de054c3bbdb7b4dff5de6ca83759d1f5f76763a864e3da743037fbcb5b27821cb41609c9b4b77439f870ef3c23b103ec4e5be44e8b17fa8e46d2fb177fd5fd5da4dde569afe2ccdd771ef07dec1bb9070b7d53ea97a18d381d18fb9e85e9572bf6eae91e8fe0ac20f54eafe0a3f5dbb1729eafa4a37011a90c24787ee232c0b3aeb3ddbeb93fb14c57bc8b82a0f7bf13369e491e6f3f6c07a33948b267be81196e0d45d1631795db30ec5837322fee711d8811d6ac16f91c6d995f3fd89fb012fed3bd21d8a143656d345c7da1a67f0d76ba535cc30cfa9b9b76ef4281bcf082f28d783ec37acdf1beaf225e3ccee0d4c3baddba6986c3c0417a2f5f49bb00e6baacbef9eb01fb71b3d54429fce020db792b60fd06bce92fa3c9abd7f2226badca25fb7ece5f2acf50ed0605d6405f96cb84b605db7d5335eb396efa69d13c62a5a5fd47c99cbe7737bb3e8d5758caab859c7a02c76239303ae7b4c0ed76a4f495ec7d463d15f177b1fe9f8c79f8c95fbfa73b93f629dff975f9fb5673a7bafe691a5252abc8bb91f14433f54e123ac3d9235cb649d5fdb07e41ef69743eb613c380f488b5c707e25b78dbd18f0fa6d4bc43e227f98b41a5ebf3c504dca3fdc838f085cf7af4f3ae717975bcdafbb877e13eb0debb99b8c4be7aa5e9c0fa7f7d76a24a13751b567c63fcab341cc6b3e3fb5b335dc3cd1675e69fc829a0656227ca954cea5f747a82e89f1d4b455f82c2b8b579c0bddce17ebac682da159c4eb29e84ea93fe62c7a9c43099e4aadc6b835f9a7deded236f94a63f87fe4ab437c22d204f572f60c715a7a5d598ec70bbcbfdc02b8b80e307a72bea9757031fc953e9bb18f5acdb0a1cf388e504f537f3f42a72c1f42eba4e1ac4df62bea6ffba331d5010aa7512ff53d449f9831160b47cd117febb277d59c7137bf6fa1ef5cad7d99d31ec993a59d1a3d0a719d824f0aecb9d8eb55cd9b34e8d3f39ef2c371d4efd579c9acfd5f8d9d8d0fd6c7eeb16cc044693168e81d88d3e24073f43fd7cb6d03dba88d6578774bebc4a379aac524ed053d2b4ff41164cd55f08eaff676bef36b579e4b7dc6336c546d26fd7569f0053d0bad02d177f8ebad8ea35e9735ccbeb7bf7cd767d73491f6e4d1906f5a8433f61bfbd7e909be569aaec0dbccd6eff58a3663e2ef3fa135535ec109cd6c9c501d131bee4623a30f5016d8efbf7aad564b73f7ece3c3dc3fe97de288392a70fe8b41fbea9991b2a6c08571400579a6281d89ed1edf593b9b8a19bc617687f3d56bf50e17b3d771045f07fb703437f7a15468ce583952fd1e12e642bd3f403f0a98cb3f7cffbba3e3208b2aceb1747dc6c3d1e8b1dbb99bc4bdd3e499c76395e93d9211e9bdb811ad45e1af6eed45d9614779d172180e6b67a777fead626437d8e4b5587bf552102fee3d874747bf3aff099379297abfb827ce1ca14fee1b15a58669bd34cdd9a2bab7eebcba670fb8bd61c77c5ed1e444e746588ee0a1c6fbce017e475a4dca7fd2e3728929e09cdd0f356ec5e8c2dee5824f277be88a27975bd8d33cdbd2b3bb01efc4e9d562a0e5e030d4fbb80a27c87e7e7a9ebf5b039fbbf4a7c45df71716b63df4ce9696cac867af8082d66ac71823793601a721eb24e2d90aee67432dc12da86f1075cea4c1147ac73ab741ab99e43bac4d2fa8e23a55eb08851fa3ecbdcf1deea5076901bffb6a1cf17ee46966cd24289bb43e74bc807ea692164ddd93be86334f1b6b489fd16fc2020003dfaa620dba9ed56e5ddf3bcae08d9ec77850dc2bdcea0d6bba735e9f6f48cfb3030f7019335ec39bc56fb9b331f5c5bb9c6b19fe340db58ce69e457fc79aebf767eef1fd87e79b16ab2c5e14b62f4a908b16febc079cf18e7d0e97cf6bc23d420f683c24cfd1c249945fc3383d28ed69b7692ebc35cc05de7f4c2c0c7ec7d001a67dd25fff56f88d724c71961fa2febe288bc6baeea3d04591712b7870d9c145ee117f816dd438c081c0244a4f79e4de5167c77e3da316fe3e3bdeccee545f63c73e3f790f7d1ed4be15f671061d2ed29e884627f465985faef46148b7b6fd061cfe0bb4e08467d593fc9d47c1437e817f24d766fca9de036bcaf92e0d7a9a5a8cbdbea19ad4dc230df3e2633a6b98ab51e14febb1dcc782f2272d37d0e632c7b3658875095df5743d346bccfcacf2f40cfd1e3117fcd13bf2d7e11c1815439f6f386deef1302e4be621c055267ee190478ba8bf497c0cbfeee60e695177f6c6b5293ff245fc64e8910731b4e05f0987f7e891a75bc17e29d2cf5772a8ab9c4069fa2f8917e6c4a4bff98971b77e57f1417d8abf165ba5693b3bbd5563f6e0049f01e57399d01f96fe2c224e93b58f90ce44ef30836606e735e82b32ffc6fe8cac5b6bbc79c9c7f76e517f5bf69ef43196e772443ef8c5474c78f841d1abceef69372fd15bcbc2be7ad6ee8353bfe725dd73d42f797e02c354e6bde6cf481ce4daa961b2b3c4d57289a67ae519e74f63bdf22f7f01dde9c989f6fda6f5b51ab4fbb57554fe0d2cef325ddff1be3ee27a91387bc47efdaaf5541cedbadb8827cb8e164f8e4e8f4e0dcf76a8f677cac59bf2e7bc3bfa3f933faf52d4ca6ed80f29a9e23191d385ec69c26b9b6a3bbb2dc7185acd20b8dc9a3c0a3d2fb9f23ea91d463d95c9273db3e0a57a66c4474a2eacfdd5afd5d60b6f0d5d1ba5b1aff501458cad8df7b445b1f002e7baf63c640c0ebf97fa73fe9f6ae49f56bdbdd8a78b6cfdb09a1d092757523e3727ffa219f97ccfeb7ec886d6b8ee57e9bc41e370d76fe01089de2d3435aa39687f6e9c255d73ac03bfc993c0d62c5a46d03b11f87039a6f9e7047d4f31574b7017bddb40f3c80da0cda6b08b7903bf433b4f0fcb383674f3162f2e3debb7652f86ee8389f3dfbbf538927845025728c7ee39a1e7e2693c1db12617d1a8f7852f88fb48bd552720cd766052d5392dbf53ab39811bf95cf488172a3cd134dd64e6476f3fa6ac47f0badc58d851f375a7c019e4404721a27cbb716ead310e54ff99d1b9e93c193d97c09f37f983cb5a2b3fab23fb0b70df40e718e8fae3cbe7d18f3fa77038c8d397ce09b58ebc7722ecc840c5d26eb1f9b773aace795bdddd12bee5ccdad6123b44b17ded5abd163cd1168389a1973ef726ffcf9f6f1543c16b0d7c857560fbc017cfa36ff620794eb1f606c552fdb7a9e21a861ef17f342fbca853c5c212933e1cf5b0b7c4acc332872e2fd583b6d8fb67aaaf1c96a40b929431c5a6843f490f6f0dbd354ddfff58165437135858b1d79ff95c0867c4a7217df7451fd70fff1eb556555f10712ccebb106762a271fb359f1eaf309e8bc42cc5e829e62ee1f45cc2e0ede3fa7dc938993c16fd0dbc37f5b541ba92d7397489ed2daf30f5013d1b5533957b3ac64f9f3bbba7cb97dc547c47c23e93466e9a944be789796eea9c5c6d9eaee33ee57ad2bd1bd4fd4d4ada3f9077cc8e1fd3df547333fc92143ee05ce35a2f84afb9c2bdfd6efa9d39e75ef43be96d3507d003567a41ef74de6a73651f3881516759ed0e57bd426afbab88c9bfdb0b6f59e7e7a77ba13f453f90f7b3e403fe91e97aa3fc867694af2ed2765fd377fab06220f3f5dd94f38d28a1b108d4efdc345de758d49eb1be642f997035c44d9b35714ecea77fc71df8099692b948e3c1817231d2e042cea5e9d8b7169b98e24c3d96bb2ce3c0bc97ecef37f46459436063e181bed7098bb7c09de4f12fe33e567df839cf4cfdb002fb67cda797e6227cf9e7e7ba8648e14063497b9db5659216b4a4d2bce9f3374bc28169afeb9f5f119681bc1a52781c216f50eb0ebe54e10ecfcd67bdba357c9de7a5f9bac21fabbc125a628729f601c9e509e2fa587c77aff27559c3517da91bc443dc7f26ce2d62d39c3db8c1df590dda5423d905e6eb9a5ef6f1b0da04767ca4e2a9fdf9df8e917cfd1e9a7fff728cff611e95769de465a1d61862d218e781dc5b288ee1bd4e8d01f1eb8b23effb7a4f633a343c0dbc76496794c0d01b314807afe559c85a76840bda8523f412802357bda761f8bd766919a086217d8d0d8df3c0d4da39a0eef5634d4270e78e9fd5f5c975be6fa8811ecfd5ebc166d49954f91dc7300ec73ae032087c81e2d6969a8698ecf5896bcd2f8ccb9c12beff54f436efa1d0c498726cf2879ad7cc4f0fc17d580c8b2ee3d4d73ee3d4756e1a6b50e9fe39786ed901baedc56e4ebda84bd87b02cf212cc3e67a6ac47843cd1f497144b6a6feaf864d947d0ac1abbc2c50fb8147f22e275ff2320c888f017c5a567853c257bd1ccdeb6afa0ebf73a27109d3a25b7bdddbb726a459dc9d76f53e91eac519b845718ff2990c81eda9de071daf9103efa667ae4f2bdffad7a979166abf5354bfe354bf13f6ee797e408b4cd7bee84097e39bde9ac67fb9c59a262e04cfd1a45dcd51d624e21e763396977afeee8ef0ede308b5c1cf449d19457f62c6d74dd8adf476473a26b27f2f638739fc46727faae9e2225fbcd4ea06e044e49b1c18aae50bd5d4376f8c1fe067f40dcfd59d93e7abf6996b9e02b9c801754f0168d8ca3aefcff64dfd35396f33cccbb78272a132c4f584c3e9c8ba07a567687d67f51ae1c0b5cf072fc59de131e61d3323f622bd8068eaf1fcd5fb977bb7de13326a92d8b356a2876672839665a2e71dfa7e78b3606d42633fd4fba461cc18b24278b45afe84dffc7e1e55bfafeaebcf7df82f163ef3c88aef7d87a41f850b5cc7199c017ffa0dd7eb2fa79a678637c8cce02097387be43a56cf403cdb135e2ba7a5f2fe509a68b9cbafcd690c22f51af59ecb6fbd2bb4df5c3d8fd8631f73a970d8bb2c216ebe9a4badf227baa8b51a8bc6c7923a4af47c42f6b692cfbf63e7b1616f6f9c45cb1ec5acd0e27ebb52cf3fe199517e0b9e1734c27bb55c5fe239644c82679dbc159a973afae54e1d3b81b35d3e3fe93fff1c36f45ae6f47ca342e05224976b4e318ef61cc2e7f9bd89ad5dbf7d87cd53ebe27385b36c0f6e5b1e914e04fc45ceccff11f343721176dbfbff1a16d75fc7d0dc73141ebeeca166c4b966bd7e00ce624ae394fb58c3e9d6ad6b8fff7d7d9e32865d1fbf265dad7f88171ba256f88b396cce86f000e0a610aebaeea514b7628a57e16370f457e4195e06aebd27024b1ff7a87f453d03674e3d8b54d366da712d1a3a4f88a518373f2ff1be56018ed8fd77f7ac71ff1377050e5df28a5a774a6b6c4df7dc8e66866600cdeb4fe63a84f012d5b12192c762e43be88514cf5b1a07e603a6b711d5010bbab6cb31a0588bbd7e0ab327546e7cc6868623039b40714eb435af258bfdffc6b5e4aec201f979bbbedf7cd3d79b1d7714f785df9f472dfb3c8a0c9febd0a9f6314d834ff9fd1c4c6f768f758c16e237554f59bc7676907f66d391a1c39b895ef54ff5273eab750d1e9a3a130b786919f1fb9975f9c57a977cb92a0ea65a393c1a28f64aba663edac1f9f3271ccc47e78a7e3de7aa462e1a703c2dc67a115767eab6bb78598f6a67a8c6d7d49f81f4a50bc05568ac7dfbc89904beab810bf0027f3ac4208267a73f9f578defa9e7312a0ea69a05d71cf4eb54f780b9226b0ed33ba1cbafe241d45039863e2c36b9512b5fbc001b2ac6927428971c6b88fb625ea9f4e42b6a9e7c7378f215f0ad1ab9d48f21cf1beb2cd7c6587aefe5c0a31567788f946197f62f5cdfef23628a2ac7a3b9bc1830575dad4539f799b3f6ddfb255feed9e2c3536f42d52fe93c0d765bc60fbeacf71c6789e774419ce1b55df6822ee0c122e38ce2aabe4330c41e70c6fa34e6928adb819dee38e41f1064d3a6e72ef7687eeefe8a6a4e65dea6bc3f2fe177a23dcfbf4fe0f5981ebff233cfe0c6357ac8fcd82fe37a1dc701c6b70b6d4577b1b9ffdac74cc3d5e63ef23ea9832563d191b95f01c3628f0d783a7adca4d5888c7d7509fe616c7199925a8dfe3bff9d3ff7f2b035b18e47c47294abf01eaeef630a2b72e81a3830a95b37f9bff65d723d38f0e54ca0a18eefe0efcfd6ec39c8bd8453d1839f9043eb7f352848af059a3ee2cc95588c417d6d4c5d78632a2f41e47ad76a41591fb5a04537acebaf68f33df4d6a43df9c13a628207a19eb9cc7b42d4f0c499d2929e5da379fd7ad72edd2be9db8775df99068c3ae382a806fa083ea8854b98e9b80fe90d5be50e72cd3d9dea98d798aeddadf7494877f22fe6ee1137dbdf3a74ce8c59a7b71197207b65629cbd47f4f8796f7e10b938ea2a7a7ce7f3fe7beb6878b1fb86b1fd5253264fd7bdda67aee1c5bcdbfdf4ced494492cdddb2f9e5bad9e6de5ffc87dd4fe89dc5ae11cc21a776e66ee61aab62b785801e7d7e1e360db1567a2aa1387f673d1f975e4c9076fc8ede78a38786e8c337f35443fa6953bf5d7357e079fbbfea40d3d4e395ebb9fe7acba2ec1d3273c67ba0d732c5539889f1c26a41de012c62c418f03bc26e1e75cf7c655d8d477d2bb597a47c6b1be088f6389e7b9e2bdadea47ce57beed0ffe943d01a5279fc39e7c893a1fd59cf2c43ea17a9c89e933e81ddc59ed3bfb279e8fb1036c69ba1ed9d7a17d5f493e5353bfd8634f1ccea92e742e3676ad3d6c35cffb660d44439bfd0aefc25c1bdcbb37b48d76f71eadc7ef7de9933781991075e0d885f615c70bbb02fad8c90efe7677c76e1d37491eefdb1bf8240cb0def6d5f828cf208f7d4bea78e4d5f3f48fb8d0fc8cb64ed0fbf55fe242538dea78acee1f78b321d69513cd1ad620f454c8b3ff2fe210a2bea0cdedcf82fd01703ee4cfd32ef89c265ee71c808fc0ef5f0cce5dd2335d6da887e338d06dc31cfd4ec7ec78c0f3e7cf5cd3313b2ce209dfb338531dd2066cc0b0ec4b13c322face6a3f913a25c1469e75abde7d19183e6efdcfc9cba6b463c7e6effdafe84c9abef1cf383f499bed1feacd2d480330622f8565160e9bbced17cfe1979e9eff89179eadd1659e0bf71768b2cdb0374bcf7eae3b98feb3e24cd87e526c17fd36b1b56a7ff3428b878e9a6504ad6fb50feb18d280b00ae451ffb9248cae77847f2d5d63531eb7ec7e3d96c10b746cb7a63f6af1fd7ca07d285af7ccbd5aab9b3377b645def8d045c93ae87715dbbfd5efeaf18daef5cf73af79fe260f840f9f99fea497ff0413457dc7456cf65d1f3dd431dbf3df960e919f20e61da7a479774bb80ecd3371fb427b2ce544b2d6acc77ba3b6ed935fc4c061b896b69887d7b47dcfc097647f3b3ff0d0c7f786119f31763da3c8a8d7157acdd7a4f82d9b80b8321efb4c0a3c7d179ebabfe599b3dcadd577aa38d62b5ae8bdf15eeb5467a4d95b0a3eb535760d5322d7840fcfaa9b3174a9e07fc2ba0c1e9ffdd519d8c0dd111a0b361664b54ba89f0c2d71aacb8594efcdfe827f479eada9475f16e04ca25777415e91cd114f911e7ceec37bc665be659ff06b1bea3fc4779a0fa6368f81adf38a43c338b70ac36749e5963ff1e6985df37b0c5bd0dccf922b5a94d4634c76554c42cf79350c1bf5e2d1f7d1fa4ad573519ae117d44ee97da9f010262d647f463cb3e76d4fcf6d155ff01f7b8de625f4134fd078171ec47add0f5e2ca2ee21bd11d6ef930b697891f63dfbb24efdb5c7b9eb1c5edb320f38b94dfae05ff8ec7d4c59efd5c33c65ecbeaf8d0179fb78345fc31d38c882b768e478032d3794d8e09bebf17ba1f9e58d8e9a0727f4aba81637f78b0174ba8c58ffd6815670b9c6feb27c4e9af250799e50ccaaf9f5e4d99cf837ef9a0682c4aeb07f8c4bfee80fcee8d434d70bea0d653978f9bc6692b7a2076e8f11df297fa392748b0b2d07336a0abbc388e2cd551c7626d9967a302dc2e6f367b737d0ce33fd9adaf966523f0bb896e672be12a316bcdca056f1c99a8c3a97fa709cce8c7eb98ff9e1b937f4eca717702d3f16f146db63affff67faa83b3844f54ec8d7bc41f9a431f20e8ce7b386f9ec55cb77338be2e538ffa03f1ab86cb78f0e0eda3d67c0f9e30c12ea1f9e02da8369d1ef7f53d36792b9c8d956b181e47dfc4ed5731ed76cd7857ede5521be2de35fdc09127df908fb8b997dfceff771efb76bc96dbaf7b81a5bf6dce09eee7179723e51fef8b9ed2c188b63bf477b4338a7c7bd137ccf03c3ec00d327ab039e36b9e359ea4c665d2e6d101397c4275c9f39eb473c66951f739f6fbd0345d0ed677e4873487668a1e17ebf815c629804354fe7da26b2a7e1ffb0de3a86a83d09b44ce3dafce1dd553c1bad5cf97ee1a35a8a9edebed151e7c4fd32de54b8caf228f777bcff5b638f78a2134c09c10df2b6ac2f6baf92c1c5323b210e7c157ba25b1eee7679d97f069fccf713becd528ff1fdc3ed47f02cd9751d5896ebbe44ff2e0987caf39f9d2795b3a775b985fa9ebd3d81136c13ab38c3c57aba5697fbfd563649dfbc567b7ce238a1d83db986f289fe31a1df88f653827fd9e82bc6d523b96917c86455c8f83e67e313230c45eab310e523e9388619f66d0946af178885a8a58d381d08297fb62d3ef863bc4c0ea777fb996c79fa611033dae9381792ba7577bc1f63a937b59530c9e1caa792efcb666ac6bf7a3185cab63527d149e316502cc2ab43c4bd1f722fe7899a3bf8fdcc843dcc67da2121ad3c384f5529fc3d2e41b24bab786ab691af8ac1d81988679fb69fbd1ac2dc0a703b8a0f100f10772e588708483f5e8ab383bd7e657ddab6dfb1af67e7dc1b7badeff56ebc7a7d71ffdb5c907f07287e22b68d8fb9d1baadf3ef8e44ff797b167137677497a2ccdd775fe8137401da3a37a63e0480a6d4b192f4f2fec292875683a27135723aeab3d8e03c3532e1c26bdda9ef54d4f2d186ceb9fb9aac1b03dd83d355efb846dd4d7aef85e1f5a49d92fe4e8c16e8eb355ed5d9e15ebea3c6bd40a438f74ed36eec2ca95ea9f9bbe523d374c0ff42cced0109073fd6dd5e475b0c9b1b7142f6daa8fbd859b58f9a507f034d2ce0a8e854873e299f82c5fe046992b5ac5845a5e7164fc31cfe9135dbff6bb8ec6dd92fc92e7d15d73dd18fb64891a8e2ff66a79aec3c3a8e07ad173c163667a64ca18aab7a13ce66dc2ba917e413188637ade3f357b8b78c50fbd4556e9a157fbccd5395bbcda73367f3910375dcdd97bd481ff335d0e19b7c83d876bcbff253d0ff02383ac418b408f0752b74fb8788577431ea9d7c0e5f8b01e84166bc87142ac51bb5693b36cf49450073b2c373130860baca1a2d3f47a318436d331c4bc39116fcc6be83db7561b4d6b40e2c2cee0384722ef92f59ff44835bad700fcd9095e2f5ef0fa855f7f7281d9ecff4de730fccdc6dd44e9e5f41f2867419c307b77c90bafd8ee09dfee514e3955fd8a8712d83ae2634a5d9467aa69ca1ed8eae5b69588d77a6f4b7f9d84fdbf693dc9b5cefb47b3a604d65962ea0364e825701f3ffb85794bfc50adefa7f7dadc3c269fd498ebb15de0b7d7746f5c3bd6fde7d7179acfcbe711d5205b3caf808581eeafdeef0f87e431e8beb2de58c3b5377095e63e3e7b09365f7c96fdb4f5fb2e8bde93b91f0dc15944bfcab857ca49b20ead9f9e89637cf71af127cd5a123ade42d6469cbd199f785bdc8b56131639a9a151adea2d2be0a6c037411f4ac630aa4e4bf186774bd8a2b7eabc13e761b6263f16d29cf0a9f616be40f3d45f020b8cbab3cfb800f61e52b95f7ad54792ce57ea2ba5856f8ea1d18ba018c5277f8a09d5113c8a5b581352c6d0563d55cbef9e8c7a4e5ce39caa674c582157c3a5d9f5da0e9d35847d04e7cc8b2d0d0ed1c369d1989a5827f7007e8fd07394713f72eb2854bdd1a08aa1ff41bf8f780ddedea55c6d112577d63e2db167125f3656ebe68db479cd5e7d3b5179d47b4263417ac8bfcfc7eab7aa3924c7bbcfbe553fc1cf6939e662a3f4a0d2f712676c37240db7eada342f9f6da979ab983cceba06a6d16f96d714a0e61346e0729788e5bcc2e48f5cb438498d4bec8fb0be27337ddc5cd2abbba1ba59b869a97bab722f39d60bccc1f92bf80fbd13f59fa6387f8557f606fea0bad6b0c4e76f13c257878a1f9f6fa4b6eb9c3816d9fc93fac4f0148ec98ba0f8a8fbf127bb3c26ce711ffd4e1eab77e2ab5d26124f066e08fcc155ed8f7e6fcc5ed9b207f2528017a7fcf8bd4913ff3c0b4e663fbbb8ca71af697b94a83ff39a07f73c7c826f386944b27e4795c3d5eb38722e883d6a6269b6605cd363dff24094359e97a35d2b3e2e9cd8e01fa8d8e363e1d8fdbcf06d3a237d0ad660c87b720ecc9d273f779e4c5c90517fdf9c0ade37e077a26a213ef7eabe58ab1a762970fea23e20b86984912aba5368b6123f96755a6dbe5642fd8c53041d00aa99cee15f4fda7ff933be9bb962c415f227759e9c3c3f8cef58a24772fd1ac67dbace02676e23474ed676fa4db56cdaa742c2e36713ec17e180e67ea3ae1374ae249641e682e1c69cf39497c83da0dffbc9b82cfc11e26caa9b42a7a2d75267f89c6a4cafd19d7926aa9e85886791ff6b73a0e139bd315603e34d5e021f11ceb7c0e0d7a87b2b897f3b2ff17df4ac9c90bd527a5a3d4bc64e9843d79ff16ad0a6ef2ca966041d8e68faca319fc41f3d9975295ac37be62cf2382cba0df354e365420709dca56d6cec855efb6a5fb6d1db1dbf175f680cb046b3ed847afa1c3b6c518f7cb2b9946afe8609f50e8e07da97c7d4c303267574074d7be896dd5e6ad81fdeaf65fed4c061fe6abfb9c2f394cff1c5d2d4fb86434bf17e4ab167449a76eec7ca8cc38947afcf8333eab7748ea5843b2b0ec0f50013d33f4da179d3611f3087748c1368d314427f476290586b787ba27e22e753316981b4ad1e0462bbe4b781f17693863a88ae39b0c8b6c47f7296f08d02febca4310807b7748daf2bdaefd26d9bf857a4fff428e6afa9095824bf6a631264e0b99e56744df19eb45b3ea8170cadc22ca433f400be8b3f058f25f7b78a13e8d27a7f5d924f06eb02bae99d3de6ef2eee2712dfa7ce5a119f938fbebb40aeb4394def745f068aa547afe435b4283b1a17eed0428cf772e812ae35e831f72ec80a5a4b5e150bcbdf79af7e87bc3a4e0b07eb4fe3d6846fc013123eb6ceb169e47f8d458f44c61ce1a6ee9d2730343a17d4efb467263e9cf777e2ad79f0b3da150ebc9bc53ccb77e869aa6b395e1ab18a662e7bf3447b36f971c34ff95dd4b7953e0163c6595b90f48fb9464dfc8a32247c26fad2d55c69d0843bf2bec9f140de5775922cecd5ee371bb5a90f35bfc0c376ff8038abdfad7d266d7fc0a302f1c73632d6abd8ff6a31b0d40de9937ef93dc519a799d8077a6fb3dfba4f89b827ca632f33d2c1f1da26b757f6590f548f0a32e01839f7f562956f042adf202cdca4310710d728eb8983afc62c8f19ef48f8fd7134251fc77d0aedaf4261bc928f25d50d35ae3fcfef5e3b84c7cefa091803ee7febb1be83b590c51e7c6909877c5dd3c8e6cd7c33af37f5bc548b5797fe8172df13fbc2f1fcabf60e9953baa87108dc039dc7573ed330bf3f4827222fe734575f1f1d9a4f9d299da711d529dc5cbf5ef24c86afe813ea1b622faef65ba5176579b1fad3999dbb868ef4a72c9c5fd4d31d9a733611fd183b77d57c4d0597ed7aee7a6cab5cb596bb4287e3dabca55a2379fd7a023b20f762d1b791e70be753b907af56a5dbb6d86c9afa5b1ac68ff7df557a26ccf247487c0cad77b18ae6439c31aa4f22bdf5eb3d22bb9eac389727ae29520f217157bd0df130e4da175e5dc677ca789975f08ed51c55f546cfc62fd279b3cca6f47e605fc65cb791b14853ecacc56fd81b3cd7c1380de75fe41b1c2b6a679376bd538a5311976b63e1afc09b516351ceebdcd4cbd103b77e88feddd7d7af7d66293cdb243eb19e1bb41dea7736f4187c4d775b8b5982d6f48bde5e184fae8ca1d123eb368f95aaf93af7f53d3a9b8f8c7359ec4f6bf419c73c877de8100de037f519df29cf8f3810f5e044aedda1f2fe52f1e8bbfbc3f150d8cb2fc6a34c7ab5eb8d36ce8cae23d9ff37ae43c71c7e771d6fd575a8de795b61c132f99d45dfc0f597d44fba25ffe0b790cf9f0b7846babe4cb9ee5b3c4bbd0efd8a38faeb3586f5ac9dbf971561ddb498eefa7ab3e69057f8c4f759beb4294ebf212faee6f13f9e39b7e6fb5d65cd3ed3e411dd1ce722877a5df67263bd87bb7973ce24f6a9ebeb5cd65aea6b5ace31ec4d3c4fa24ecbd207f1b558e31fade6c8bec85a2ccff7f0d7e74ad57fd354f48c8c3aa51c07b7a3f14fad3d2fbed8fbffd8deff351c569e919e5778291c7067ce38df7ce8ccf90569d446e25c34ce58edf79d550f5ab6724f2bfff0f7fd2df697b1ee33a93c01ed3913ee2cff14ef97cf78175b6793f7ae7c076fbf76f5db32e6d8788cb395396848ba9f8ec299ccdeddfab90b6f0531bfc63de02b743f2ec6b518ba6b3abe8b3d67b4f8568ff7f605d72a655e26f685ff5f735cf4839bf23fc6bfd7317332c697dc7fd647432df593f8eeeced367a241effccd6bcaff2c5067cf69235c97dc417592756f1ede11178d75fe0bde51e7aa62563e927ec4f6d8cf993fef92ff2c6f08d728607f179b9dea16d3b7b07bf41e261b4cf4bcc1cae6f9ce09e1794bfe03acb00d7193caf318f17e06a212f85c65cfdfb92c318de317b70b516d1b6cf7340ff3e851b1339356ad0673bcf0d448e22c6bd541e78ef12abd8f3a8770f7e097a3d23caed3ea83eca75cf2df60f119b8b3acae4ebfcd64f347e8dabf653392fb1d639c7e575e8ad35de803c8fa0ab97512d55c500f2ac31fac42b9ca14f6fd045abf63f890b3ae375ef849a18e3f4fa7bf87edddd0eebd7c6eb3728519743dd6491c25bdb7d404d4decb3524b7987dcd31b035bcbf999d47f14afbf3f367cfed1a7bde1ddb73eaf74214777861683131b9a5b79841a78ab609f30e55f990caef1bdf4bcd1ae65155dc43c257bb76c7cda538ac1111a9af041d2fab9224f96f5fd00f57985170a1ceaf5ce77ac2325b51c028b5b457e8345b77367f416f1bdc927e68afc8ec3bcc1934aaeedf981392553f3fe2486839e7dbb600c65607a7c15e89f073ee7fd0b78167612c2fe00a79c4dc7c0b16b7eb3c5cb91b4855ea3bb06bc0c714ebd36d5bfdb0bdecb296ff2596b724bfbee6bb5af4b9d00e8b2ef625a03fdbfa96fd3867fc973bf7b5dab6b7b461d7d407582db7f6a674014bed97a034bd45edb5db3071c970be7decccd48e72f2b5cbbf71878c73b03d3ec711c91bfa09f7548ee080f52ad9710bfc5cf628d9ed00acf6c84b51aa4e8adfda6987fc9f31be3b54cb98fc9fb5882d78d6ba2f586be7fe2537f3818609ea5f4ec30d629bec3c3b5a6ee0ecf6c0bce2e5d6b2bbe33b443d18796f832b9073d3813a39f1ab026de29779e6a5e90e10e3adf3e7c2da36949d8de1c1a7cc965b151b5b3acff8a1ed6cb01f5a718f18d58532d78f538562de4a5ddad613bfa3d31a71f5cf26f3a9f6d6cc7dcfd9b7248aa715f42f2264a85af8fcc6dd8afe0863048cb722d7193d948ea0ca605b0e44bc6ed18b1bbbc4e0d2f5a8e76c453070e287daff64df8612a4eae7f95933bab69beabfaae5e5b35f0141636aaaef16a7bbc3086ad8997a1fb5099789e39ef79e55cd53e9609c59ec541e7b9aa5aca0bc58f8bb801db3b2cac7ddd410eade7ddacafb446dd55607f69afc51a2da827416b5fe0efeccf4e0caddc2a4e45cdf8c4bd4cd28636f009462f758cb3033c9703d57163952b2d9e2d5d47e027e7a9819bf493b4a1f76d793a714d4f6007e4bef37cb58626300d09e925cb1e0b786bac351c6cfebade4396f996ae75c4f884cb9162f137f2960b2fd0e46cad62aabb1f03d2e3a15af3eaf7ad3cef66ef9fdf618b965131b4344a24afe199f06a580b9fa163d6fcc07ba2de3bf02bbd6a0d2abd09f97c9e14864c60fb9ce27d45b888466cd1167bb5aa5b60fcedde48351f54df24a298867135d4132c6ef87a24170771790a0fc037ce8b65cfa6600d49b98f99dfa7e5d0dbfd82710c721fe47de00bbc85d617634d778e1925bee7bb5e661b6b2c6d315e09fb49f219c4e4d71c832712ecf0ba93ab718c3368359411d62a619b4688870a81f56de01c03eb177f72dc76989a9acfc6b57f3eb2e640a9621cb537de7e209746ef6cf38673262aa0598d753bb825ddd70bf57703d2f029297eb4dedf949bb337fe9ef543b62a4774def2cdc43853c719b0525aecc3314db0fd9bf68049ada790f53f1ae22def093815c4d078df03fb39f87c0e896b6baf88bb5c16ef3c77c4ded24ed4191b3cabfa63a67a99e9f1413d8f16cd51c487f0d13c622cd0ffda1d680fd807c0e64e3dd47733fa9ddab9bfcf9de6737f4cdcce8b75ad71a1e9c8c9daf27213d8fde9d744d4d97b4ea230222bf18c8d5e5f499e34ac6dd0f1597f7e4df7e4a14694528f61db52bfd380518d7f16c7f8ea6ccca6b28f906dd739fbcb693103eb152db90f2af01a4a236e37333982bc6fa4b71ef3dfcf438a03642d71ee357198ea3a96628cf784e58b2c3c5ea0f9c3d199918bbc4b8c359d8d38af021b5b303876afe336a48e4f4afbb8075c6f1bfb0a712a3635cf50db8f408d918639f1366fe4cdb6e018fbb8b0b4c68b21f53d0bc4fba45144ffbf4afe36f2fb15696679d0b77d5b6c1007fe36e24e7f4bf905f028f47b4fa48f3340cfbefd34fb0106cb8883b67b3a8fa48f943ac77b84ad3fec59ef88eb002ac6d2f5af6f42ca3f9496c083e7e2f9913e28c503c8dba2f58d39d792469f159e0b49b9a0cf5ab823f30cb93d4ea8cfc45a551233e0d26f33cf62e1dd527df01262deb2064de8a1363245ada01a5fdb3356fa597bd0351c0adf55f04996eebda9cf9b4d274a8bcbe1fc5dfbae0463ba9398ebf02d264c718a31f95890f64009efdb5348b148d4d3fc8f24f662666a72788d5c103facbd7f058dd569a4e96b58ebac409df0b15c43b38be2f755ec283defedc0e8fd96d09e74178ed251f59f4ea8e1f21ea75e2ba8e6eb273ff0ead1b81a57e62dfba5e97108e68bad89cef5f9724ef8d578dfa4830ecc4d63ee47fb25e7cad06ba95fefa65af7f2ffef8ebd49dc7b63ce938cf566cd1a3147fa3bce1de79711ab138f29dfda5aeedafe9f6defcdff3f90efe5276ab6ce5fc67e477aba94b7d45fd76af0a43f9680a3f029f3019adfd3c4baaf37d6d7911835784d33278475c41cdd675a3e7ff2e6781c143d755e2b4d64b35f156c7e518f567239bd2a2f12ba071fe0dbfacdba0e72be8e503f7a10382b43776c078d0be16ba6f1d99d1e6925ded07b96e9938ac7b789a93bacf9f69453fefdeabdd031a5fe4450bd57f2567ba807cad8f999f2eed87d32b970d0ad36788bcfd41f71e04f457ea834de4dd77ced3bd85f5a9f6b1bc4258117d31964ea6146e1d6e030110624d5d6b853adf1b01d32eff837f5ee9517c46f4b47096794f1dcae5c7b2eb4bffa5d75d695ac35989fa6777f3696d0f0336bd3725d12de40f09a937778b6bb4f8df35c3b9fc19f53dad8d0c58147087bf7eabda02ff907633ab3a2f9dec4af079fdaf75dc72fb25e89c84775ec5b988d4ccdc1a888b4fabddc5b07cced12319c63d60d343d13e43081f0e294f84ee0dfb302ebd4585b6587f7b86edff4008f6def7dbb379ee83e26df7305d3fcc2fc38d4e2388fd7f8540f1e7a0fa7c4c049c796ae76ec33ff8fb5fa96bb906ac407680ab006e14788588dcf5fa9d185eb7229360def704f6de618095d2b855d60dd68d59b488de74ab59e947b780bc199d1f42329862ae7ee04d87f8c41c9d7bb45fc16743bc4a5682d1d60cd50fb5afd264fd68471ed598ceb2e9e3bc03015626f4aee64dea87001776aefa6bc3f9ab4a08527744b8df35c3faf8fb346edf3b84dbdb4f160d210536cbdb959277e9d9acf5a8f57a75a5fdfc51cc198c542a751c664c9997437177d931fa5d5833e305fb304bc78b9973c39d0a24c288e165a6f3ad6b9440dc273b156a4c65d38b9c663aecd13adee467989be8f2a8ec1eb92e22abd7f089ed214fb17d6f6067ac22de81cefa6774d710a34fce5f3d17417b7bec963c373d53891db233465286e84cea776ad19bcdc34feeecfae5be1e43e17a8f9841eea4112bf77293641fd35b31ea771a037d699f42feff34a7c6cc5763bd69be21c0a3e99e5fa8d7b19e11dea53c4b3f1516b3c17146b233f2ace73d42ad18fee696b49f6e235fd278a6b961ee292526824cbfb91fa79bb39c5cbeeca7a2d1c923fbdf1393db627de8ac2939c1af38e80f3a0f692b4ebcae4a1496357f3ad78830ebbf0c9d7f608cf8daeecc16ec31c7466ea59c29fd4dc973eaee51f8c9be46719902fb0879ca7b500ae49e8dec8731af5ddc67501ff53c4f87ec1baaf3f7abe5b8973116b70db6f5cebc37e3596e87b5e7b3e057abac967111326e4b63db5d74016333e6938efd53e5306d05c9e376961ca6b53ba9f576a1fddf9dd24ee81e3fee0d9fcf7e975ce27ed91d1e81f7e96468f418f2f4ff1efe67a8b5607620f9b68fa062f6bc11d10df4f7a3ffe38563e0ee92fc4a6ec573a7f9bcd8c9cefbde05c8d6aabf20c13fbb6c44a14961e296340991f22b9803dca35ef49336466f6f63b355d8cebb530e8afa9dfa65ef4db92eb94fa1ef029b4518c9a4f607d76f4165f1aea4ee939420e267c178f6a4dbe3bc9cca85b752837e3feece6c4183ee0087e53bd74b9a13c63eff399ab709d8c139cd579b9d4f7dc585ad4b734dff7022b666a1ca8f33bd47024cd71366a3ac8fb6e0ff9c6ee0bc7e7f91de9f5d479cc762e4918b9d94ffafdcaff8eb86e9aef0cd777caf903c5d70fc46fcae62fb5f77913233fcf7bb9d8cb0b1d8f28fbe8aa8ef64b7d97c005eafdd6dd147a284fc69ae658ea4abdd2f23317f5cad8f611336b5ed011d6b005dc3beea8f870db1a13de34d375d0f0baaca170dc2d756545dc2dc7bd7a5dec59ce5ee92efe6ad7fddbadf7c5fdce53f64bf3ded6fce2354e534dab0d3592cea3817df23b94af9c6606defa1dda8d41efdd8af3a5fed634d6347c372a564ddd17d58fe4b8dcc45050dcf268615db6b575316b88ddb2ceccd0248ffaf722974f6f1f6bb5e8abfb396ad8627d0abd773577b5b5fbb3f9354caaef72953f17ed475c8bd1722eb59e3d6b5e687a2405bf963a27e82df29cf9ac5ed7f91879b7d3ffaee6923bd3ce240b7b84692c08772535279b75a1b4be98769e7c99d72f784d9b7570359673c24c486c9fe481f15ab3fafe05745ba10f4d6b7637bfaaa34cfe159a3692ac95d4bd5795de516ecc35ae4d50eeb1417c569d19daf5abf35aee1d49ad4f9dbc36ea6443172db96b8c5135cc81c4848ae742b50057c31eba164ee2829afcaec927fc167be8f205f39db158b6b7b836de01c5f6d981eef72db958b826f2f120eccfec98a9757f1343e73b36f0220b1fda702eebd4fd4c4798f5aee1df8cdac832db5acf50f35067cc99a55195eca7468dac700203b7ab7f1fc7ecabe1dafa3e7a8ec01443f7a1c880fd3ac5176b4e997a371e3fe70369c9bb39e967fa9d9df9ac95462dc528d1fa8135a5e96fdb0beb8fec75ad0dd913227df8cbedc1ca5d5bf09680f624d52a6e032b8e7e8b2cdf2aeea12567eb7b3d78f482e305bf2ece932976f5d6aec6c1929fdb8dacf93167bfa7dddad4f9001efb4b6c12736cb8b60aecdfc2214e61f13633f578757ec5b5b859f950504e768ccceb632e440da390e99e83b57348e6ae2eee49d6e806e28cdbd198d9f1848c7db9175944544f0cce7307dc3df9dd59588f45cafe8ee366a94d0a7c4bda2eadfad895d7f47b99fe43de6231623fd9bb9dc7fdcea277521a5d2e6b8819781fbdf764f5f8d4398a7e64d68317c74ad4bdebfd0f4ddf52c5ee82c75c8f43bdabbd161fb948465ee9ef6fd0c691676fbd3faef89b733aa3719616fb2768f8ca98f8e9baa6a3fdccaf7e56d78c255d82077f8bb51f10e6521b6bf8cf97cc67a8d7297b0d7e99f21c549c445bef80b855ecedf8fd18d7b440b57baef617ad967a04de64e1912ee79c7439e1e7827bf3abdc5d8e3bd7fd466aacd55ca19a04ddafee9d433a22da3a273d5fd288657f07c47a0aabf9ee2f51fb440fe958ad3dbb8620fbef722c24ce87d75788fac2df2dd28c5e74e703ba07e96be6b66bb9a71697ce8ccf258c8116eb6f7b63e1ed2ec48dbafedbe25a394f973c1fb16715d0214ffcea5ee573f8c57bd47642fe00174b4fea82dffbd2677a7b422df5b95ff7d88a7ea17e15ce8e7d13cbc118328cbd9f581a92eb57ae2d4b9db4ea7c579aacb26e90d57a27ba5712d52fdfeddf42ec0cada9f9d0f06bf43b1f13137fdc5ec54fd473347245ddaf76d9fb65c4bf39b0db73f896077e6764632e16e991b483da88dd586384f542a095971c16a4f7516e4af454c418ca3a11d5dde96c15beab4a33f5c10914e739bc604c4a4bc7dd67ecf02aebf74c3fcb839deb90af4fab8a61e57e70ef539d31f4b7960e7a70b239e0a85f778ba1e591a0f43e6c3c797c099d9cf63fa53f9d7426d9bc277191497f2cf4dbcd5ebafebc1273de7b3f9af7ba065cb9eea386fecce760b8d9d774ea421fe7be3fee716c44fb62081ca3862b4bed7a6c50f37e51d8911fc5f9ab14fbc4b3d15fb7e27a119bca3d7a87deec107913c7d3d1fc9530efa1d0d9482c5ee29ab16dcc85f497d06ae298398c421a0b682622ff117e7d6acda83d31b83b42b7057d02038f108027dac85b6ee46bade97c69534eb1489e4c8e7eb66f59f5b432b03821a82b52cdb49cdf43239270427ed1a67c7a9cc167a024cee438d2782577577f4f723e8115486a35e725f3ea25ef149a723c2fb4f133bd17b57a04e179692f925a501233be8c6b5c9bcf15c5ea51a061ccc5bcc4de94c337d39e23c94768c55fe6ded4678d426dcd4e393e472e9c3b13ab1f21e6c669b521fdb2fe9ef6489e6f1b3c63e6b71e770b70ece6afd33beaad48fe16ebe01d91f3e57df8f07af53da3f736f17ff9747fb276d0fb24cfd4f180744ade5de6784c0fc065ef12f80752dd6199ba0a271f8bf197cf50686ecbfa82bfed9b58eeedcdd59a959627fda9d6ada633803afa9f68dd526defc9eac5683aa3723f4f0f7d55afeccbf5a2f538fdb5c20a14e07486ac597e610e5531a1b38bf5c727e05f1519f6bdcb927a0725f13a63ad3edf26cff533c5c6fc0cc5bdc9314cdb365640ea5d786b13635e1637d41f69e07f1c791f3bc4147b199c0f19a3d16bce8af7dc3778440d0e3dd2aa5b60cf67ae207c7ffcbe43f324ecce51935f126729bd7d87f712f1fdd5b9bd1810975a3f6b1af6896a5f25bf64ef481a269702e7186b6e179b93ca07de4f9cff4a4ec7fc376979d3797a0b5ce4a3bfee5a3a3c3a7eed929a3d1d5d4752c6318c5f3a2fc993e2fff13530cfdbe08ff9c1c6d2b3ed390d9a6e9b16e3ae58ab95758368acd7383bc78cb36c4746efed3aa74e3f4b9aeaddd867a37560d591f51e9bc6dd9fa3dea5d51c4f7cc684ee44d56a56099d29c71dce37c12df896d7f53647eed26b714d5af7a53c530c7ad66ac734976faab1d5b5d31f7cf88d304e8eea6df82dab467e69d29b4f7e83efacb43c54acf90fced0087ed3e84dcea19f995c487f3770719690879f4b3c19ebfd4dbea454a3740873b0dc3c516e0e8c1cfa35d1a8649c05f88997399df7ccbb3f20761e92beabfbaaf5383cd468a199c9fb58f872205fb54f9cc35acf25774957e1f84473398fcd7e2af70ca637880b5dd2ef8cd1435d0e470dba7e1dae370e11d3b716bdfb6f7f83df9f9f66d77e438b6dc7b4aefdc9c98acd2e539bf316858198f759087ec08af80b7c2d73e2abd2f90bed83685dc5db120339d86a380c59e779bae2b7c03ae61a6642c66843dafb2cdedd50c3bb92ae6f64eb0c2cb6520f2fecd3ba58db58e93369db050ec5b0b788f357b3db01e998c18b50c4de520364a1b06e356d9d72abd5f1756d1dd17ba8eefd22f5847badb9bc27f96c392e3f868cd3901a60e8ab246564604db43a0969d6465bd2ae3a1784952e7f795c1f37ead817c4ba56bf5ecd0187f25e8d6fc2e7f0ecb6455a5af9d6d4f747df3e7e271f96c7a6fd9bfb5f94b7b22f89988fea9cd17becc110f9c479b121cdde5b787baae7e64c6b9af71cb7aab843c79ba11639e7fc9b3dc5d85b7e4db122e7b69a46adf09b947aec05ed2f9c933af074f58ea8eb55f72063a70eb4d7b4b3d0cc81645d161a9d0f0dda5d01f29c907a6acc0b2ceb79abe62570a0fc5160b62ccdadc5dd11e729b0a2f18938a4cf4d9a5a6aed31ef98f3389593c5da18c9de4d54d7f375b0aefb13c9eb77a75c3bc8468c418f0abb0721eb6bcf85c901650ebcb5dfb26f8796b77eae88c7a879fbeaf8488e53a6d843a43693ec1143bf240a1c8a5d578c27ae6149f317c20a1cfeb17b7ce301f0d67e016f3f7822f8c0306e4dbe197203fc5efe969a9868877580f83aedef190f89b3109721ea01c7b9319e6a6f85bf81e69b5e1b578999d2701c016360767dda73cde7c9bc8976c37bdb8173856b4718f82cdce01c407eaec72fc583753f0a973569fc5e3e5b342f95a81f9326d8acc94b6d76bca9ef69ae5b38f0487c834722eb697f2c5913a0ca25b205fc5362ffd1096af544b367c35af2a48b50ed3f9ae77d160aee7cd299447df749f608fcc0935e776976efabb3bb2feabc6abca2c65e10ebcb1871abf03532e258c2239eed5eda17f89faec0ffb00ea1b782e7e7a965ead4b9383735cf0f783b603f34f229bd0f24357657ccd996de1ae407aaeeb520bd534fd7355d432b57c652c8e5e46ff9a40d5abc2ea05bbb6d538ebce816540f3c2ce1877ef8a8d7698e1f633a5be1477d7c5bc5e4452aaf3952d75c0cce234d4355e95b6fe1792d39c37f2b2ec5f49dea0b55aea8fc35da3360a8c43c9aa95cdf59c26719d771ae5d87d28c5b08bd69797f2bd2f52d8b33f930aa6b3c55735ef9d555bfabe346d32f7ed75d11f7917065a43933706bf73f1eb8b2be9f4d2e4f1789997d2847d2175ef055b79d89d011acfedbffa0fd7be14ca0afbada4c300f97f1c8a3ba47ee84f43bfbe9e048cfb79cbc1c948654ef3479c1bc394d3c97de739efcbe25dcc3963cf357bdd1e74a799ce5f1c8817e44b99d887b4f4718f385737fce1b3ca534bc6a5ff2458f2656cbd084d1f45f1cec878f122b55e0334f69731c18203f1b0d1bf80561932f500d37e205b5b3c4788fb66fe8df67630a73e26de95a5ccec9d2083a06d433e51e45bb6fe97b1c91a3b3ae86d547a2da6b71229d9bdcc79cdf2fc90f5ce57dd5795a5d47a0f6d571efde5b709cb937e39c6a8f4eee8a2dcdfb39719a8f938b8133df23e6789eebb8037e4fb231b17cc976dd1c1f11b73ebe70fd81cfcd48cba5e73e7111e2cf397066d056fc985eae3c6703bb507bbeb68f540b3cfba8f3ca3a0bc8997ea3b7bd31ea4d61dedf5bf565d4e0694f76d8bb627d635d53cbc4ade5e7c5c6c6cf6a673d7bc77eb32ede311f14b68a6aac1359bf26be9483389bc739392d29be4e39e61e0f0f26e651eb596a67b5fe9ab6e637b60faf3c07b4bccdaeb9321e153e12f4b9835cefbd363071299e13b417504307eebd4fb5bfb795e523976bb500c53d9be8d7958273f2ed3c7e642c9ce43430d78d7b8f54f79bdf89dc91ee230c808b4cce39346b0fe0522e34bf36f809be501c77b4e7d6bf5d0bcec2096a75d9e5f31abc19e456ded1d263c0b8b94f661cd462cec9713fe1fcb467e653ebb68d0953f590b3a92bb169d034dc5ca246ae570c2c32bcedb286b3dd3b1c67755ec19773ddd283b36bd30d632f396beccd3c8786b7b69f3bd535291c539bb945d45f34fce74a35061f38033726263af7ce2315dbbc8acf8a1a017bbfca7dbb765e729f499dd11a978431559af78db97f33de6c9cfc5d8bb982725df70fd1ee75f542fe21ace76272ce64acdae01b89f3b1a8e25099eb08ed741d37ced7b4c5352d5f5caa377e2e6368ffcbdac6aea8c7d7e5a86d7251b72fc43d96da75498bbe3b1c5a3171babe3378ca34ef060572e2a63d38f7306f28ef947c59f1be8dcbe7b5fe2c72d459b4fa206280700beda303d71151e73851dd08b1429c3839b4616e99d3eecfc1df5e52df7a768bb5cef5c7d80196efe54cdff9f640f79bcd3fcddcd2f597ac53abfc0c3ad7f40eecba97c979d0ce6d0d33af7115084337d13cc815afb2810bbd601e8086895b23ae5cf57e5975bfd8596cd063b2b563d8df14f56bd61899eb3a53b1a9b900cd5b6f6bc5de05d5739817c0d8768ec3cd9e20eb184b3d0d5563bfad6b5c47858b5a77048f10e4c9e067685af6d067857722e6d527710d1e3d950f4489e20715237cd7bf580fab617f80fc1e3d2ed6cf1867c465605f97f1105e5617ccbf28612d11a35f067cd3b7712e725f6dbf5bbc501e995f80f9c826fef4ee5f9de7b2de3623afe5b8cd5acd6bd6724ed7741e9d169bf8bf751e0d03c2095e447e2ab15a293c2b886b6cdfdb0d8f317c1558273875d0ab5f720df6c23815c6a9b1e7db1cdef1393c8912d66fce8a237a6c886d1260eec3174d1b14632b3425b59c487b8deb50e2bec005d46ac95a4d54d5a643d2b6a61e5b89fd92ce284fe03224966ad7275de6fd129eca21e3605ee02531210cd18abc214bd63cab624695eb045abdf7eaefae5ec0bf388454dbd4f6f6d5cb6d0ff5970d30e2728fdc1d46a823e1b5db57e84f7beba69e9581c16ae853b3fe7da3368ded1d8e7a5dc97379e2935657e03e356807b89abecd069a21daba785d41177a8d71d4f070aa77b5a1de929ad789f764c65a9ae68a8aa5c55cd8b7ecb83151d720f779390eaccbba26cfa8e30a3dbbfc133e55f8ccf6a0bc08fbc596e211c757f7f7bc04f726f1315f8095167a2de2b3799f7284907a0b17aa8fad8654cf29fc82fc6ca291e249f77c8539dba9987e46bcbf9c63ceea779325d5428dd8baa0fa8ef2df3a103ec4073e4862e246b2cfab38489ad7d5a28a0d07fdce244ba4bf5b14de2d9f476abe257b5c87bf563849a93b3e13b5b186ef495df5f9a3187f6016c947386dcb1a74a6744192275db77e2ae75c35bee1e75c3e9bdf8b443d431dcbe7cfe5e7d3e35dbea3314e188b937516f21a3617c48fd908b805a9cdd4340763c2da0c352f42b91fd0de34b334c3697e0b6de5ade80fe6f17dc36b858d831e2e895b9e7536aa5fc19a288491dfca3d6adaa42d3033b4db67324670697eef819b8be0b5c47b4f363a2b4e9cc0daca3dc4a5b578529ed82363cfce480735693fa9d7d193925abc726ca22dfa02d5ef499ed6b4a5e27beaa3ba1453af5235a73c11d388f7842fb7125793aada037947ef46eaf3718bf5f3abe75dcda7fe694e6b9a6b2a6de20f4efd7e9b6b1de819cb384e3c87f9daaa5d299c5761d7535ac9c5b817fbf5f79c7ed33b9ead1845bca69eb1cc8be2fdf5e734bbbda1e7045c5b36220c599f7bea1d2d0795bd38e4a7b3a3d280d87cc6e89141a7a53d0646d1bda15cae18525f3c06f71667634a7b28711d1337df504c33bfa835d20f68ed522ce6a9be03f091723da4d1df67cecdbe792e4ebf337f3993d644ff09ba9f12db3277ee5b560eaf8fb78c8dfcbe793e0a0ffcade117a0ed07ea39ab1af3976beaf041733c679cc96b229f0bc50eec614df39ef58589f7345a6d4edf3f133f09b4cf89dfc05cd2f037795f6adb80f32ab500254ed0a3f837c1dac16f6bb1eb8aeb02fe0a3d8443aa3efb49f849fc167c16622f56fb1de332b1cf7c205e56fe5ad36c34410ff1eedbb3ed51f2d428d7613e7953fc963fc3cbea4f9f7b47fe57f3a9d46a266abffdadea4befcbcda4295663bdc52fcef1872aae923ebfa731c57cb377d42e1e45adf0087d00fb5ac61161b30ace93887facd5062437786bf4ec821dea331c1f96eb16cd81143d4ab9bfe03ddef68678561ce7be3be8534609ae8f7bb805f92053ed0aef59648791e2feee832a2e16da45bd96f8b7e46238ec0b36b2b9399719f9a1095ca5ce7f5a8f6a396473cf4ccec934aef1651807d6dfd6f9e961c97b30e1a4121df7a0d5eeacf89c7326479dfd6dd6de8cf95997f3366b55624d72df153de0f7b6f67cb08e173bb3479cc6fdcef245d4bc04b73b94ff8ec47ed355f5c9682dfb705128ff9b6eef50dfcdb67794cbe7bd007dfdc2b9f749ff29656f526ff2fb48f3e973f21c522f7648bdd8e479de52b9f571f2fb766fe9306a3a665bf6b2fdae9665e13635dd7efbf9c8f361c81e1be021971d1b2facf33776eaf74e2aa6f7554c1f424faaeef7453106ef59c07f05353f4fd5ab5d537c06bdf14d60613cc4eb43d4bb101f8454bbf5b956c89c0359cf971c0de6f42227259c1eeb78a6ad16fa178343d7c44fe6786dccf5178a53a081a0f96ce9af197dc0c28aa51f449e2cf94c5c8fd05fd39fd1edde8abd285e33756bade73f353f73463eeedffb96fec359c3976bf5fff0630c3c5a1ffbd3788898407f1d184d1367e3f0bdeb9af8cccfb4ea00b80e1d87b9b1f7073e5f72ebfd724c79cf604cca383d634f5f6cccdf590e0bf2060786222eb7ef4d3da4c8c23631fe05188e24ac7e0b1a6392876b5ebbe817e8d77943b8db15ce77dd8fa333c6f5919766b6c7fe9053cf389b409f13b53bfdbb7753da6b59c344ed3ba19f746bb564afddb5f60bb956c0258e4f5cebff55823f5286b45eced5ebf27c3ffc63f9dde87b4f3b327343aec14742f755de53b50e05267dbe513c5d937b129b7a538c518e053f579e6fbd3739cf7b6f4faafeb9dc482c613e705f27bfcf47a14fec897f47624f663f23ad6e0b1cd81b7060fedf2dda536bda2171cfea57ea9f3b5873edd899a467811f087aa3ce24eb8b7f57f3f289eb60166f57dc6783a793386fb4b176779c6f053ed73f0ed09c553dd41bc46343c43b1f01306df0d5d4ce758eb3640d45ef9d8ebcda9af9f2fdf06cd07070fa3ac1eb1eb495be59273446e04594a8ad7ef1fe640f9c4809bf45591b955ed4aa5e19ca9a51140bbfc4653cea4ca2a9abf43ee6c23750f80d4c0c3c4fbcc3739c3e0e93de24ee8f8b0bfb332b3ece48bd3658faaaaf9884af4be88a33fea9ca41e4f33b9b75faa873601d6179fe123e2ef1b9a66fd65ab7f053646ca4d68fe4d7350d0d8db7cd3e0966dfae0476fe59d359bd1223c9339bebb7798dc72eef6ffa0a5dadc15a6a3b64f7a5acf1f4de829703c5ddc745afde9769d48d377e4b9c674d7e1bdc23630fb2cbd4f26556d78acf4ff431d1c79c3cdc86d0a577c3ab9a5c7fb8e625260cf1c99cea51e8d708acbbc65d96b56af6429d86356dce686479d9931fb99e53e0ba445f54d5fd940efc7d532d1ce324fb002a6e6bf4a64b982be2b93e7a6265f19ff495a59e2e9e4172833903de4ab2637dd2ebcf45d6865de69b45ffeebad41c87e646015ddfabcf5f3e63ebec52632fc74ef1621e71863f5d7eb01ee47d0237c0e31198cf479f7f9a4f609b6210ca37faacc1076c1e7b2fec1097bc46b60e21e3ea5d1db7a9faa30dbdb4f985b5bd10b797e88d40f3f1f603fa34db8db52776ec5eff85d702e30da101cc3d31f6e410b89dc2e73e273c8b9b7c9f3f10bb3ba40dc73a01ab17f0e57763705e272eeb5bfff515d640e928833fe2326f56d3e8761c23fea37d740cdfeae05fce1b8e8f22adf7c7f12cb8deac012870b8e26f1ba39667d5ceb4fdb985b349f4d5ccfd59e67d328e486c6e08fb63d0b3d6bc5d8a9af735e601eb9c1f2cbcb44f6785a63bd9460f215ab38620c5fec435d4b421f4583de4d884c6aa0c8153dc82434bf7cb7810ea61e69f73ee73ca7daf3667553fb7e19c1a63fc6297b1705f9c535add016be4d9e22e9afec68c0dd3f46d686db0e7247c854e131d873c53f8d888ce16077c70cd67cb5f72cef3d870860f854629e7fa7e6ee24effd1f41f4bf86eb176a1a6b30c6d268e2b3dc6e06bfa526a6fc8b5cfc9fa3d3f4bf3bd85d8d3341d08d255c49aab8d9f837d19b19c867fe2f3a499678af7c8398b3d80b5df4ae2fd378e4536ff84461ae76a38f7e01faec561f3da6fc867a77885bd3ffd8dd0c3dfced090f8d3fb901849893d84765ac37d48bf92a1d2291ea95a9bccbf592b16cf575e9b185b702005bf926b2e8f12b3286372854daef651518780aebda6c722bf13bc4a0d9b5194a48dcd9e08b6a7b7d2149bd53e27e3148ef7952f577d2c78bc3946d56214cd57085c1cedf795266943aea1d54d358da98ee547815845f3f80ed1b70ba3513d36cb80e3c4fc58ce6efb3fdbf3b4f5457dd2813bf8179f9538a66f3ecb717cbf6bf9aebed7cedf2ff47d23edbcd6b0c28d9835ae73685af24233c07c7e39c5103ac746c69f27e62cb733239760fd704dc32a388da169d86bb10691d5ab70fa9dd5f3f45dadafb7303ddf05aacfbfec0a4f3351bfaffe4e758f24ee7726feb445389b3c3b003758e5fb0afb7c83dec510782857bc2e7bc7a89b14fe81391fe2b36bbc166e8c67fb3e16d751742771ff2cfe5ddd6bfc570bfc06ad47c4f513ca8d4e928bc9fddc335fcf88af27435fcba5ded3a3732ffb274ea0f5e21aefd1c71878e70ff59dadc5c0bd93daeb3d47fc5bd489369a3f198f8ff227b0ae47ea2cf3f8f6f1dbf9cefa6db9c7e3f339c677ebe0f3181339878a817b9cfc3e7f0affcd17f1ef48e0c6c18169ace951fe12a8fb419dac690c8b9e1cc36073af8d6181eb5c0edaf23351725ac6f74abfaf3857ffaed6a7ae2bfc851e4ec867aff207d17941bce648bb99e3a68cb04f85a5fd7f7fb6f368433f56f8ab90efc748e172a497cef4ab6768cfcb4cf5f893bd18a7457c4f31dae332fe55d7c07e4eee6aeb2a6d1f672607d89bd5ea06dbd7d01c7f7966a7076080249e9fea7eef569eba752303afbe61ff9f8c7f837903d67d325e61216afcec3156e5856fa237d91b997b62dcef8c63b506e3007af9a4575a3801f2a8554ffe2ddc28ef92a8e82a7d647f3a608eb1f64c3e968a07bad848cddadcd17815bc3f9d176a7daeba024b2baff5b9a0f5a2c54e5fd52d4c5e23e5268adb3b0f813b685ce32ecf9fb8ad38b055ec36177d560dabd7b8ee6beb4de979567b7b34efe15c8d8a9ec2f971ad256df7258670cb7af6d941d6eca240e08c97d237546067aa671d03efbdedd6e652b577a7eb57e2678783c3c7e4a5684b8dc19ebb7869cb7d3292ef5118db2af6ea86fe61a07d1fc74269fbbd7aefdc093b932c14ff8ea557d94dc3598c7e13d7cc928c6202a99183fc593ccfead92f5eda1fd443cf53f16ff1dcccf346d67bc97720ef6facd7e02b924a9ef4fc545dabf4382bceb86eef76fbcdfe2be38f2437b459a0b720cfc37012f7cabc1a4fa157d37bcb696ca17b5dffce65a2f478bdf5536dacc5b36bbbf4ec1efce463b2c3b3fb2c52f5fde9d6a3b99046c22b792838dbbf4f6fd31ef880a6a608faabac315c6c46584f85dabbf2cd3dd67caefeb6dcdca3ce471aa88bcd3dc5d507b536542e3611738af5d70b85fd396eacff27ed862a1727ceff9dc57bbc7a26905fdf181ad15be094c6d1b6a13fd4b9215d75d2be9cfcd67b12b13f46befbd7199accd59a909e8bfb94345cab7d43e97dabf301719cca19c1c75d96a8bf7fae36ca2b38c5b3d7f69035f0db84e598955abcf2d26ec0aa60ffdab37e18ce9737ded3b6b81ede338ebba0a774a9bca2daeb84c6409e0ade51a679d5ecabf7d9631cf8217c759784cbf5f2d34c696c2cba1d89e1c90e6f55bc207b526bf16f816f519c974747faed15f116f997ea5bdca8f1f0a743d55b4bcfbd55a6b06ce9f60ecf3953eb3f2dee30de6978f3a0f82a633ac3e2d171a9e2e1453c6a15aa8611a8bae3dc094ed5df1231f7592f01bdbde49788c5a5c6d6bd5f9d5be6981f0fd55889de9cb73f81a7583d27a957b927cf1baaedd3354cd3c3c5f2939158cd6c3433d6b1a16d9b987c2f4def67b183c6fc25fe6dd598a1c594ebdfa9f3510c5c508d0fa1fd8eec3b89357b0c7b366721d6b1017a6e0d4e80fade16eb27d5de2bf102b18e63553559b16f33b76d89dac1c4c6ffb40acea9a9ff87986ec578a533f712091b4667ca08f186a681d6d278e1ac7d17d7397cd46b7cb2ebcc9ade63cefd06d46599331197d4cfcb7dd4c63cd24c2a86f4d9d89b0193c4deb69ce71e2f769f40e383b3cf29f8859db6fd7e70c5598bef736ade67b9403fe3009e1d6a52dec4a8c5e6d9c8d2b999df508cafc5d7ee8afdb6e57971077d7e8d0f99cc4dccd73d34a802eef55c50e336b5b7553fc0c69cc71e74ccd213749018b7553805706a0768a002af3864ff5468dd6a3ed9eccf7488e96fdc37e0f15f0db0d6848eb18c313837d7fa096e3a33d7b3d2913aa2b7e49c28567279fe15667d9572983ee21ec2167bec47a8612bb8977bb1d6b0a7e1d09446d9afda7ed6e8099ead5bf6fc0b7aefa4a3a33449f7c6bea3793a7f12f75af077e2263e15387bb60688cda7623e409a7b13c3f7c6d4775b72add75a27acc15fdd83ec1b6fe9fe23eee15fe54c35f760646fcdc4fe65a33b6d1c5a2b336f1a092d9f1768013671c9ccfea0e01ee9e790bd3ff6d9c371f3cba89d41973f862e6550bf7eeea37ef979edef9a47bc27b59c7a65ee77ee1e07b7c21f56fc5bd4b26ef76aaf51fa50fd8bedd5a4d5db3be69a19fd96e7a8bc6fea4f849bb953e5c4323e4edac48f5c3aa3d64ac591d4135d3ac185e28aea758a2ba8463e77262da11520fc273a0ad3db53bce2de69da1d1d542c514e9eb7a59a976bc2d905ce087147e18c9c90e2d81218ab27c4ac29d638c72fe9f19ee259bd17d7a4751758b81a3a93d88b2d79cd37e4df4cda6ac9b389a734e38bfa77284f5ddeeb87f41ec5b108149ffb8eb8fd160f187e0b1a869d7bb5c0bbd9718df07ab23ff7c93c20b5a7529f3f0bf9f7d04fc07a652f80d43535e6045f57ae4bd37b4fc63bb4ce8b1df42876c1c6d2942a516f3d06e45d12099cbad6cfb57ac35a1fb7da0f67b1f4f09da93aa2d2d962df0d7c47b237bcd868ce687e2789aea3a7bf0f3d8ce48d3479b53924397a1b1acf4d6daf676d84a4656afe3b97c0c2366b7a7a6f4bd685658db16161f67a4bc6234063210be0a1b0207f1e4dc73b2f6daf3f6b5f94ba80324e648fee8f027a797f9d28875a20a78b75cd70c278989844eac5db6733f536bcb6873e60d441beb1dcd4fd1da42e82fedd66afa37072038ba4d576686f74e3bb7322f7dbfedd63b723f47a8b615feeb769ff105af5635dcf46f930d77c75497fe749e6416a6d91376c481c2f11fbcb7c747e9e92d714f366b8577039227f7ef4355e0df2e2847b224d9f2fb9de3fe6dafb1bf713c057633c41f2b7dce7bbc253dd17b57ff9ef48f047a2a45efbaf716862f22039378fd176b7ec05869efa7270ac69d7e4d53c50dac40ffc4cf59e1570de9aaef683cc9fab791e5639fb1dd66b5a7c926e03ea9cf53934d2b49b5f6c4c5d00cd0ff53b89ee496d78046bb84c59279e5c7ef2be6da7765d3a7e48d7dbd0f475adb39f7dfb345c22c51a1c9b27e8ef5ff1b2513ca3c6d7befd1caf99e4b024df49affd319be9fdd1c2f42f33f408550d8df304b94f7ab7a4e5e4ad6c6fe86cfe2e3d097aee321bdd3d0e8ed51efdb9dc8dee1e87c540e007bc0dc56a0a937014f1266a33497c5e3a727e16ce0875983a7fcbf42bd77ccabce94cd4dedbd308e70a7a528113cb9a6e560cd82b9d6bf4ab6ade93d787d2aa0a949fe5b857c03b721ce7efb9c44acbb32c99438f7dae343f03955b04f12f11df2d1cf6f9ace2b8ea6f0f0ef7251e9df87dee249d49d6f9a8e2a095f8fe8ec89762d18fea5bb85eb7a6a156a4ed01f15495efe20de9a904dd0ef14f3e1f9c3a87cfde87f2dde132f97d72444f45fc5bec43dbda3ed4d853c1fad2fb5484ef9c6a7ae925fa2be57d75be49afbfbbdbbadfaa77a0d8ff42cf2b78a6e7b539af4c9f27a33f56581e1d1a3e171c8e4278b088b8a46c1a1fe4a8d9f60dfecf43d48b7d3e5b804b87964d588dbda8f3f65f1fcdefb6e6b5868bcd12d7cc6f854e41e3f516b1a98163edf9f0dd5ba5f88c7bfd33b79d4936dfe5cefd7bee88392efeadbc33fd6f7abe52cfa4ec5bf5f86dc7d061d47bc0f0e8e55e20ef07e12769252fed39c1f34e79494b6d86fce55c4e7e9f442fb048ab7f4bae86d26a787aec7606a237b76be043f9bd13713582d951ce9ff4d07d1cf665bfb2abed157c8d67c22e2d7fdfaacfac078fdd69af3acfa64385714cdbd25330ea34ee3d7ce6baa795aa0b149b5cf6ddb3ed7d58766cce5e578b6f8dfac642f1e20b87cf48f23c0be20d7de70370fc333d97480c3c17edaf8bcdbbface23eac2c83daabd56e4cefdcf68c8759d275a6f96769fca8f353e8596376be790eeefca9f11f3ead9eadb7549ef9231916b0d973caac5ad0a6782fee793a9830a3c267ba46a5eae462d5dc32fa4eba9f247fc54bdd6532c7aa4bd539c29ee4fd49f3e76a7dd49dc7366d283906384d9ede3e3b010b89499c036724dedd1d9bc1771bb5a9bef39fa224f175a9b911c37def7d25be60aa7458fe6f8389e22e757fe279fd3947a0ebdf6847b356f93dd9afa3fc42bdd4dbc6d5bf9f07d4e9eb754eb3a51cd61e217efd0857ede1ed4eba45b564ebbf3837afd3879593be85d213f621eb8a93dcbcfb3c18b34b49fb1eee769fb35987ca040d3d36bc803a38dad83445c61ae5fbe1cc8bbae1d99fd09deefcac0ae0deb79a8aaabc187fe75b223bffcc48c4b2f765c6fd59ed83753bd2ef694062cbaf0e410f92461eaab71d26b36a2efa3e773a5d2ffc9d6c72aef9773b023fe2de660ba6ed4cc9a98cf53d74f405f7081f3730f5d2c0317ec35f43eb53cec81f3b44f7e7dca791ae7612dadbff96ff2380d335458bfcf1a412ac733cf97cb3bce975c9c67c658693973c231dc85f0b28277cf7386cf4ba346c7da0471435c2f72370b172df7cda057e73dd8d89879d91f3d0eaa3c3dbcfc288e11f39e39d4a1cde5ff17af29edc431faa64a4b21cd269fe016ef141f359bb8d5dc14b174b671699ea635ec5ab577bb039cdd628ef7efe84cf8016f48e41e9367ee6f32e63a3e292ffcf3e4797d9c1839eb3bd7d8d27a2cadc6ff40315f981eba0d7b87d223a0f897717f1c1f6f5b563d6728bcf4f47a8ed16f30fc758c7e90cdef47ec01dd4bd6bf79e43a3bfc2317acc38cfea5765fac138f1e2b72d96360eb93fefc5e2917f02c0ef9681921e6215e685d07b5561bc57e7b5ef6e06711183539c9ed8d8cbab55637943d08835b2ee30d3116b7121b1f579f11f3e11fc6e504d533d1ffdf5fa89e9e1af7aed4cad5bec318034dbbd0d420503843c4658cc7e2fc85c79671ead08cd4fb2ae8bda7ce05da2c55bc1c6d9567ebb6bf1a12fee2a07a4f0563de04fef3589d2fbdb1d2aa0962a96315f6263e695084ea6fe3de147c9f713c11ebbc507b28ee5fe271340d08e0ac1c1113b19694753f31eb3c70dc2df222798f2df31e93f8a2b4c3a46e4b02bde3543e97e248d740fd86d5c055734b6a4045e556ce1da5a794b2966e834e2fc72d0169ffa4879ba9e66125e763018c7bc87dd83b3e57954770ba470f7ace3a0d5e437d9fd681f04496f387f738f45dd333fd86c7b91b745635dd74a1e17184f69f71dd7f70ef518267a87969b5595791b99e39d5d7cbe90df5f417bf493b85f99e8d3d66ec43dba3d2519c8ef11c1bf688724be7076b8d96a1b6df8bfb6ff199e0f813538bb4044684756d7e3626d9dfa5e9f55098fd4af17dffbbb9a1fbd62ffa849f7e6f4f550c5abcd0efe7bae612c767561d5ef71d0dad1abb8cb56e352d088ecd1ab01bed6fe2c5c6ef0c878ca9ff37f12263f0deb5df6fbcdf37ed7e257ef759f96c4452cf5ae86dcc8ee2df426f83f9caff9a476ef0b3e8ac8cdfcdffdf98dc29357f7fc431d77b0af5f8ca887d49e74dc45cfa3927d7a476cef91b4b1b5d720a66163e23ac69c5247b608a88f706dd808dae1582e7b3127d0c715daa1691104e153c70de5bd637ecc72e7f8f3549fef01ab4ded4eae50fae417e4ebf86575c83a6f50b2f44f2294a27b6060ce75fdefe8de68279cd126b841a127ace6aed8afc7c8e9ef30f7e93d79077fad3dff478fddcbe52df4de306ec386fc01e8ff15b512f97f1b1972a56103947faab9e7354af03c73735f55ec45ab9a53a363888d03dd26ae04166d696450dee65ed4f7e9f2e52eb47d443aabdf3b9c677fbb3f56e79986ae74912d73cbf03dfd208929c4e6bcc8fff1f75ffd69da8d3bc8fc36f898dce1a0f3f0aa844da61d30d7286e01a23684c345179f5cfa2abaa0135f399fb7eeeef5abfffd14c12b64d77756daebaae2fcf260d8bd1b08f87baefe7696326784e88e195ee83f88dd867fdfd31e7d6e63c424d61a5544cb0aec7c45f2979abfa7bb61b77710841cde2bb7daba3092def770a27edd841ae22a05cce07f51614f1f1bb1a79a7f6d0af63649143b18bd6c6d5fe5d1d83f2608481e20f3886677aab5eb5bae7d651fc9e5913cf03efa4cc79dce58728d65371cd5d9fd1d39c41af2f9ef7b16baa86d2fa4dfea3ef56107edb6153e5bbe98a03a08321eeda46f4136dc541aefca4b6aec066c719696db71c604f7a5113cabd71e091b9ef01557c1d6e8c7191c2f8677565635dc058975e37f7f7873c53d0b1cdf0beff824518747c02d80b0e95db8b355bdfed0ff9aabfca97fd1ffa3fa316a7611e895ff394cdb6d81be37cc9ff4b2c9eded5cafd0b4ea196cb3e349147b35b7feaeb268ffb7e843fb88bb9892768d6bbeed35c2c27ed1ef45dee72b877b6b9d38bd5d9578f7a78bf3774e701e5193bcfb0d90ffb793fc5198b7d3bfd7cc6ec4e5fb0d31fd8ce81ec20dcfb5a66c76fedcd3fe25368732f3826c835fb87f16aed5877adb63d762755ab8c88cbac93c355be7ce73d93ed67f8bff9261dbfe3fac76fe2192aef7aa17768fb92f2277c47d4fb325c901da3317eb0219cfad385eab1c7fcb9e2bfc01ce3affbf15fb73d075acb91a82fee72cf301fee3136e4fbf4b5006fe9d3da4307dfd29edf1cfb6d7fc8d33e7cc292b538772dc47d384bdcc97d8ffe038ea5b937605255ed13fc233997dae3c8c78c3b3ea7fc1e34062be2b9703bba987fc2e194fd78babd6ef7f8279855ac3375f6d0f244d8b5fe5e6c7631205dfeb28238038cacf9de92b7d919caffc3faebe843fd6b4c76c7bff2c79cb7c20a614ed7bbb3419dfc6251def77976f6208af720ffb23f53efb3f255da63cf3fe41ca77841f928d28eb77c6b1d3fb073ee45d992b8e5b202de38c8ed44ddde69c236dfeffffdb94cfc2b773c07db8ebdc67d4efad2db0f8a411457fa435c49356ee03a8a90f3aed592efe266da73d7ca5e23cfdb1dfff2867c5d431ff6e75171cfc7dcfd6e2d2f3761b6ba7bd5ad57ab1b66f46d144fe543bcd8c6b8f23871f06f6dfdf1cece77cfd5fa715a3fce55ef563b56ffbbadfef8dd144ff5731fad372f17c6f1615e76f72985953419ebfaadc875e0dcefa5dd7315f6be834968f1cd1569dc5cdb7c60a736aa3047b046656f81550c555f7424ff2fb9c533fb3bfef691d29809a3e76301eba68dbfbf990f1dbb50696bc581d1e190bd3bb693c778d2a37aead84ffb2b358f93c54c622c3eb219f163569fcf305bddf7bac7db7cf35e9ddaddbfbfd75d0de19bf712dff4deaaf76ad68fb64e104310179f9b722e35f003ad8351b79446fa70a362e7add2d3f1943fd1d1ccef72cf34c7c7d743cb83f4c83d13dc50e72b2e685ffd4cb53e06c0bfd38a025cd8485d379f168f9a70e05b3d99b78a67ff9ab65a0834c6efaa77aef34d3b7b56dd72f5117fe7e9b251fbefef4b9fdf0f6a0de4ff6f66e90f1ca7e3324a278cb843e3ad16ce6cc2d2bc17cd7c93bdf3faa9d923811b24a5f77564fccc3b3c348676a51c0ee11e331557ce55ef7a3bc7ce1fd44fcda90fcc467d7d733eb8c761d1fed4e6d07f5e898f18efd7bcb7fc39dfb57cc769d8cb65a878f5c5549cb45f39c5359d77286c9f7c0ca5279acabc8a33f693adcc01487e87b830697cb03ef90b7ab9b1d744d5e95d5df1f0493d927e4f398f7f5f105f696c1a1f09381234f97fe448b8d7e8ee8c657b9f4862ceeff017e76b9bdf066c83a7fcffdf03aa0b8096871cb7c1d2ce9fe0523a73bf762b983795d5e3ec8b8b167f255aec6f61bb8725c79e2e3ebfaa3e6e5a0b22fd68ee19414fd849710bdcf13c767022842ff825755e7a98f52ece29bdd79b272e0d856b0eeae21ed7fe841f8f3fe0eb288e53fbf3fdb10ff9da16f7d6e98b6931b49d3d7b7da8eeeedbf201f670214fcf83fef24d9fd313ec7fdb77f6c05976ff4cfd1808ec975c13a8a101eb47c37af445dab654d35bbe23cc3574e6e9b5adcbb936e1b299d6e70dc9f6abbb7eb8f65ba37e8e9c83be9c83a28797a6b98a1c19b3b5a649ff33041b6f658a93847c95df78af7b9c5a677e98eebd2f25ed69c767783caf3bae877b0c6b17eba23736f645be5738427f406f71fecfc68eae2bf37a77790cd3be92b641be23fe92eeb8cf3feed673a79f44d6b1cadeb376f0f70fef91dc6b6c175d6c7e27d66aeb9b8f7febd562877d9cd059f525e6e1798e39ccd35afb0ec3fd24cfdecf43a71d1ed1bbfc42775f1d2f7a798048cd33c52d59b47a7c5ded4a85315bce8ec4e3f523b7fbfd1c5ded93fbf17ab021609b001364fbdf5de78e8bf171ac1fae6baaf77ec0a1af555e5ef1797d28bc537c9e62af9cf2edf208f3e9510af1683cc4b854bf6ccafc493e5ae93ee9adae4667ef2d3d9cabdbd303c74b477b6ad36a0b75f63fc5a75867fc81e3e5d66a44b5bae8edfb5603ff066b279b050f39c08cf67f614b6ddf6e2d7e7378d2dbd1f151b29998766bf1c23c0eeeecc6d31a56cb4bf253e59f601d4a9fa76b6bbaf3f01927669b0be96bf7f463606e3fc97d551d6d69ad8b3f763b58f51bf14c78b4b7b7b8f5eb5def9efbd07b7697a351f922fb8d72d03d5b8f35b8cb03176fd272e6c35aefde473ccb97513cfe729f7723eedf96c7e84e4f5efc067f9578151267dad7151e7faa7ecb7b2d7af1f6d7e776ef8b7c1fa7bbdaa2c2aafe8f8f55dac58a5320ec693ef6b55ce498cafcadea95783c4f1ffb513e6ce275d94b16971f1ee237780fcbdfd58bf80739bb1c27df8da7dd7ab3c4c0853f6fd4fb92c5f993de9760daf8d26def8b7d0b6618bfc64347adeb58bc533fd55a0bd49eba2903a56d9669ee8df8080ace682c4fc154ad75dd3f04388ef6cddfa1ed495c4bcd81844d32d2f789957df9e1efdc21dac0dadfff26dc52dbbb1ebbb08fcb7e16d5d3375b18238ab75b9df7f8fa8ab8bf0f01637a81bdd41e8433b7bf6fc75b177b7da85f157baeed4bb7cedde20438f603421f7dc18fe387fb47ecc3efd691e3eb02f3b335fa725a286dadad85b5fbf1dd3d32fb7262b61c33f85e62ab725f1d7e65cc59db5fd1e47a0eece699868a8f64b3537eed209a746c5f542d219e63a0779404bf601f0b54bcaffadc638d34f9df38c4995f3c1e68aa6f61af698fbdc79d7af01da6b63da6792786751bbbe6e1556f9eff4587b9cd5bcdbd9653202e9093daae39f2a53287dd7396805db9cfe177798414d7b5ec730c9aeb0998231f2252f8a32d721ac6f8fd74c4071842f67fd98640ae5ea6af4e5ed97cab2229ccade2aea6388389fc946912f77af0b43972d2e5b587bd3c61a77fa3cd5da0f6f04eed894a5f07de2befe4d99ef5de556d2f65b7f78e77793b84e4c6431c3cfecb8823236ceb432bf285779df8accd89ee54ffb8aefa325b5d04d8b760ef54bd95a839a2f2d2705dd5bf0ddfb08dd95a9ed850c539b2fef15233aa1d0fe5ff65ed58fb43fda3c5b2acda1c7f873b6edbb58b17e2cbcbb84fefab0533e58b7d747856be7cd25e0a47d65a622d0aa9ffb5d9214743524c5a9b76edd9c5e2809a99a2229c888676117aa776f985eca2d27d16ab8f1c6b4269bf66572f794f7709fcbdd62f3cb736aaef63a91e52f2e763bd5f1721dc3a712925c557eb77101ed51be03774d653d200145d5e15c4d594bd75c9762ee99f1bb9d2db1ff6750de33b3e01e4eb593fd15969fbde476d5eadeceb89777326e1f71a2df21eeadc684c79bd3fbe9f97dcf188183fbf288f581c1ce23bf90cfab5ebeb038f4c8f8ba4e5e15aeb777e88d27de175cbc30279e5b536278cd0bbbfdbfeff63b3cd671ae988870a37aadea030dc038c1d4577ac5b1e01777f8fdb04aefdee3bb779aa4cfb8d7ca68ddf2acffb5a50ce3abe1e94f690b9bdcb3db05ffd7e3e7b48dff00fdfa28e6e77e373d7cb42b9d48e3e89e40aa51e3b3967babdd292f7a76a7c418dd9c8391b9ee4ff3968eea02f685fd0777cc77fc7ff35374a2c6e7c827ed95ec5a327bfcd8f9efd9d37c4b1ab28e6dc9473a52d9c6bf3a18a2ba9d617cf555ce9d9ee6dcdfb5804150fb5ba1d2ac6505c21522f159ef9691e33521a7a43c581a47c99b38cf9dbb50ddf27025edb03e9563cf23715b796cfc7bfe31be09d1a1ccc89470d087e7bd172e2cb18065dcd27ada70ba8f5f944aa56376372a69a8cd67219c8da2872f4154ab3266db54f171dcd6385272c2287b81ef485aa497ecff5904d7feafeebe5227be68de6ff3247b805ae8766cf22fd61c2511d555c1da29f8673257ae0a269f7fd3ff2a3a5f1f503717dad26f1ab9a8fbabfabbe823b4de236afab388befb02277c7c5ddbaf7231ea5e3cb28ce9816cf583cd59df1ee712baab77ffe416b7c333dbbf7f9748fbe4b875381117f002faf8a43367ed4f6a19fd7e50a6c27d55b66d51d67be30642d893be38529b95724af5091bce97d5ea102305abc8901dcfbdee136b7729713f1f6f32e97d036affe917fefe84ebffb07e51bedf2fd15c741c5deb1aa3fc5e29dddf1bdb4d8258acb5b8ed74ebf7887378e72239df508ba0f30e6b6d762046c317ec215d4eb7fbecf33fa1d3bd6e730b8e3bdd5fcefdea38355ede8dbb46bffb3df5fa76afeedf3f7720872afe9eace36734ee60ed7d391fb9c7bcbf9b1a805d5d08f699d627d93384c4bbd8feda93e5e34a59f0f5a5b8aeffdac531c2e6afe75af91253511a43f7b7c67e5fcc4ec26cea93e18e639d2cebd549c43f3f0be36c0b536977b370f53e36a7d634bd4de55d873e51bafb9dbceb5277b57a6b96f857d87a353fb5397d7a9df73403523a5b3d5e389021be2ddf9846d7fc1fdb1f903ff522af31b729e9c5afcc1714e5c362a4755f6734d4a1b29ae5a1eae169bd0f2e37474363bba615dae0cf8aeb17a8e76becabe06f9dc2d4e9c7c667c0e95a788cf5f2ac77da866dfd9ac659237f7ac25bfb8f95bfe3f281bdf95014f1cefe1765e551e2f1a4ff2fb3ef8ce7c6a6d34abbaf58d35e94d707e25df53c58849ea2ca6929bc38075609b58c73e07fb0e774db3f7cae39c83bf1f5e10eb35006c857da3b9eb69fcf4a205633f0906726d943207a8a9b5a1b9f7b9e21e171e72a57c02c7bff23bcd4d49bd24ff5c156ffded099f92ea97103ec4a5ffc8e700cd9491b921de2958a333e0bbafc6bed8aabd5fdc60ef173371a1e760c9117de79fa78207639f5f8c4d49fcad4ecbf73c1398a7efe637b7f4f7196a371ba9d6c7333fa97f3fd1beb535b4c53fc8262bdbd959670a5361b65ce9c8ef56f77587f935438ca3a8d37b1ef57177dde3f9b77e4f27f9aead9f79d77f04980ecbedfba51d7ef54e6f928db6b7badfc3eef4d8e09ab3e2d935bb3649f9cb2c5235d6bfba36f1fc537c9adb6f721f2cf8f1ef7b008dd189c6ba907815c046c97928c4f24f3521a5df126f270bcb75c04f1cf7f42b36f84d3cdb53dc401ef74e9b666e4601cc3f316edfa1f450ebe86c2bbbc9091bcc3b3657107f6be77b16633f1cd9e0cf9c514fe00a18a1a4e86803728543a33c4bcb6bad385fd5f3e6e50a63aa95e217f4f8ea946bdb3172f3c8787061058eb44f07e7eb5b9eae769d34f66898c931d4c77e620fc9f670b3ad3ff88a1b6aabb05b88d3513994a555cca84ebac2f16de6c186fb3a2b3bfd592d2f2fe554f5ccf67a18099608f22dae05c562f56f43e9e31b231b399614ce6daddb3dfc5ab13ff66a899c2b1baab86e7c559f76a7c48b90a33f1d46db9bea7748949eb2e20abeabb3d76b8dceab9af37a58f9b6b761f8c0874f3d132d3fadc41d984b9b03f75a8c3950c1064ba5c1900f82f07a94351eee7ef7fba1caa145ca5e3ce57a64664a5847d2dd33eef093665692ffbd7da7efd0b52bc0cf337a0f26c89d562b9dd9e3d2f6300e14aa977d3363d31ec764bd6df334fb118d77ab7788736339c5b5c54717a5231fb7f7cdf647fbfb77e9e4c0ef301b1bfbbe9704bf83f28be61fca07d77e922fa5d1772b268a43555fe135d68d1d40fc2571a814b3806a761fcd5cebced9cdf4e8f4fb2affa5c7e9194756f83d76bfe51418fda05c6fae7886bb3eebd8c67ad9b9ed95b8beb5fcd6dbe7e73ce1325957d4bbd2726565af23e2c7be70c52370e9e19e36c4b92faf0bfb2fadbdcc54fbd060adfa118a4fb2059bbdaa0d797deda823ede50a17ea292de8b1e29a5e731ffb316c558bdbb43a17e69af6f8e448badf876842364dce9b1f2b156f2a6d4b757d3566c956e95b14c6f0f19de2ea4cdc086b2bb5fef37bb5ef9919baddf2f9fe47f71790a785f86bf31407269f43e3c47bba436c7e3c849a62b45d52ff7e870f0c622aa94b0136a6bd6f6b27d9eb688e6be8aaf4d33b7be70675019a3d1bb4757cb253762f07a5f2e141d8ef39ac021aab4cc338f6363ad23aca4c77dac77ab2637fdd55ffd66f8db6511fd0bec762e2fd191d9b6f06be46356189ea9dbe6525f61b1aa7e61b924d7fdfb45c43ef3ee57c9ab94bfbe1ce69351ff7c42334fa90f741ddab67f662711bcd3bb9cdbb9c7b1bdf32b5f6e4dc927c27ebb6f7fca438dc8cf35bbbbff4cee9714b20a68a348ddade9df84df17e7ad3e1147d8baf8c6a58f169a8b45c0e5ba5cbb3b129e7336c75b412f229cfa7a5d22d92e7839db6549ffd6d49f8e75aa8f3d96c4b180c5dd532a2407d4fafee9f8ffcdb6d0e586a4dc9fb0f3ab59081ca0dced4f39b1b85355edd9d2ff370867afe68a5de7f99b45865f5fe1dddaee54cf9d4e6ddf99dbe1ddd90d8bcbf5ddb11ebe005fe1f5ddb0669c51766aef5f7da6c7feeefb50fbcd90fbe32f8d2e5e5810f01c7e83d7ded60b029b780bdaf886f42df02b09b21f501ec02c531d5e6b30bc5c94ffd7b45397fda87b14984adf20da811b63908fb21debf7de39776deafd559569ae403d5ebb33f932d1c166adfe43aadd3ace56e409b77dce3f7687329a45d73a37e05c452435d276e73ea2baac11ca86f72bdd7a90628f5d5b05f0270d2566af76c1ddad4b535feb7dff76c70b6ebff9ef4633b6bac9f7fec680ca977abbb1c7f4f7cb3b69639205e0fe2e2efe8f8682a3f28798685e410232ef250ce6df93c5fadfe03f19bd997b64ef1d6e136573e64ff9c277e5b6e289bfe459a229bd9113514f5e3a2d53a5339ea96e36afcaefa8fe0f8cf079c0d7d37c9f924e7c08d38a73636f07dac69dc12b1bdc32efe68e62ee66d966d4e046c68c69177c44c897bd6495f55ef6df31c371ff86b0fe4bf2fadbb3aaad22a397efab73b5c04d6def2fd1c721d068d859a23a6d2ec407bc30e7d7d67a5119e30ddc77c7d311d594fe75827679469bfa9e7e4e34f73acc36f7e8c263d4d0c95ebe9e4b36f2d1e84e645cb07b416607f79d2f294e58aeff67ccd943fdb3f077b95ba1c0baa7ed5d197ba642a3e245f4c98dfe7a3a1d73b2bbb9c8b1dbdcfa4f87a86d1c75eb3f07eaead4b986b4bfb37e18feef0b8e296516dc92c3e5bbe4a15df4aee75f8268ef6248ff68638bb8739a772e1184f2b8d3c674e6307797adda3be9763d0d5ea159eceb8dfefaff997fdebb1e6d5c979f6f142868a53e2df6afe757cc2b68ed189edd6fbd1843816493f6dadbfa14f33ce1efdbce1578b3beaf8849db9d6c12cd6418f23a5f8521a6389e4d2015edd43cbabd9b5356bfbf75d6f14e0a2fcc739a9e74a0308bfd58efa2c73a5df5d9855cbe16af7f934d7af67152f72a5d35411ffaea6340e23e755e54938efed699b039bde5f23ab550fe8e0c935cecd35b02f06f33063fb497f0568123bc46f3dc71c89ad47e0d3ebaab7c31adfe3c6bf62fc5e9d9851cdfbb41ecffee4d3e526daa5c4450ed0423d5fd1ea54fdfb7ae04f7834eae07ab73ebe328d7fb33e3abd49ffb1af25f1339f8a433529d47ebf6ee7c99d9d6ff3dadfe4d86e6d6ece51b14f51ad684e405e53acba39f5e73dcef037c82d2b8cfffcd2d3f9164cf5552da394d6acce6fd740fa929aa315c971d55c7ba5d9f299455484f2dd74c9e5e8501e951d902335967eae9522578127607ef2f07a0eb863f1fd896292643113aecfd98a6ab48b291b07723ec1ba95f78bdf68af62594df819fd33431c7d688c8ed2878ed99bcc2b8aed10fd8e9bbfe31f21e62e4298d347d0a671defd7dfe8575d25fb98558a34469f7dfc8dfcc615e59b92d3e08b71419177c26e6fb6157eba21a07baaf6c6e84b96eeae75d8a7f4ea9e68e03592b1a8d7d6338593a8095886eed31c8e7e0cbeb19be4e1ae75114e0f763216944a4949b91bebf7e52f9af682cebc1a14d358a91c66ceaed0b086b922ca7438a2b5f30c70c1a06c2be1297b4a8b79f1827af1a1f34a8d9c4bb51ff19fa72d2a76219e877f997170dec6cae7950c7b425d6d8f2b84bcf83b6e46c34c7b676969dfcfd684758e766cec430efcbdca8e6f219b574dac142bb82f2ffb2cfb8b966a9b0df119c0b3186e94ed653f269abf3066d4d78fb395058eac6c736dc738eb88030191b983f5b2c14d644eef5d6ea40bd81d5307d7d3ca65907abbdf217dc177df578bf296bee6716ea7ec71fcfee27af75507bacbb411fad7fad26de9a0fa8261ec615fac3a7af658bd3dafa9cbd2e2dcaf956478c317af7937922634e3825b7d525d4e8da888b3bdde289c4dc5bebd27dc7fcbdcbf66758abc23110e364c5bbf446d7f30e2e3c5bec0ce8ef5939a7decb40fa017aaa7882d117b7a28320be16964729da8352cfa12e6b895d7a451f86ada758ef16c5794d3113ce476e6ebfc007f3befc43f585bd452cdfffeb3930d6cdfc3386163305fa4ffa98c6ae794eb11be31cd64d86eb288c2f75d83b3fd03dd42f8f9280382493753ca25c11e2f78a8107ebc9ca4a3694e748ad8fedbf9fa37c3a76f30dd2d0d74ce201c88973b3f58be57d0adbad17749f78abc373b3652660bf8b127e6bc7a252e765b6ab7958e78f12cfc0e773b3e9d9a6f10995263fbbf8a57df77d2bea6d6262d23db7d973d293bc76f778e4d68be252dd6b6da5333c3eec7d1b8db885f5a1fa26916da0ed8a374a2b52ffc811f7134636e19ae19a868bdf59bb30dc0fc2e49f2fa5171a9e49a3893471a127d33c4e32ac5545d13f83de3ce2e777e2861086fe45393d1e52debd90fee51aeff7ed31e6d6c9f65bf4a5f41fff57f7d8cca84ea20d82f0ffe61e5823649ed1ce9b00623deabdedcef9a0dbb717d6ecd9bae81e636decb697204a04d548202f279c0bf917c8b51cad2bca294bcd03f96c4c23ceae9589bee556c52f32d6f18721d62443e405f7768819059c9d9597c5a9408d39f213c3b0bfae80077e6ce2efcf909fb1bffc4367de29bd59fdb4567171a16ae3c5ec88311be8f1c649e34300e74646bdfb49f003df0d79e1c0a616657aa03a6ba4fa6acfedb381afa4729a0bc4ea20e669d1fb7eed3bba1dffbe7dd74ede058ef1be2456077d40389e2dd7116958ebd25f09748acf1db24b0b1655a84bec804e00c40f92ff08b0db8cf23a2ef22344f8ec56487629841c712068ddeb8366bcd05f9176a13008d7a97d65989392dc27c978ea418f9919ce504b5ab0eb82ec723c3ce07eb088e4b8176ff0bd52ba36f304d5c6c729da9f65f7bd31beb5a292f6e52be45b85a7a5e44fe1dfa2de988bb2cbfd23749ff4c4e9998262c7a4cd0b62c4352436c5782de6623f9a131723c6a78b667daf34a9458dfbf349e3d0839a32817e489d86cd3e15985ba73074382e16c8d985b5cb580cd63c9779f395599cf1ded5fa20307e01ec34e695e59c0d4cd46de1d5b5c03a474a5a6389abd6cb3ac65a17f6b8aea0574ad9f9a0aeec35712fc78c6ae114e35cd573d5637aae5dfec7e7227c4955d37385380fd2c8390437e85bccb5b946bddbab5ad0ef2dc6fd0bfd3ea55c13f65aa5fc04cfc265be7c96dbd847877d29311fc8e332ee627feb15622c63d5d5cc74d7d3c27dd0bd8a7fea727f1462407505aae3ac12d9933b93fbf86b1f63daf6679c3f20ff59c979193a506be187147a08b460acfc4acd71025baebb4060cd7b9314789d9f43ec616862cb5fc0abd4cc735c97dae91473671618470d9f25cc12f471f16f22bcca9e685eca58d6425b348bf7838bd2178c31d68e8b187c08bff9794639052f72149762a4b8df107f66ba1389256c7346c413775bdbf3d34ab3f5c0d84e327d7e1f5781bf6b1c21064faac9c272273e673f50531079dbe4cf09febcc39f23fcb9bafbf9dacc9b26c611a8d32d38feacc1cf2bfc99e3cf29fdcceffe4ee76bf0738c3f4b3d25f33891b990e69927677a6639979b635e34771c466cb224fdff8e5f0d7961f6e697e05f0bb9b7506c8b3c89303ebfbefd9de4f9935a2b740d21e33da71afbb10d3d6110038ae67741327602c801a41063acfeee3e7ffd3c05e0fc444ef70ee4be22ed8747c7ff826f3e92fd93f8dca9f41ffae7a63e176fa18d1c1d305e1cec08eaeadf68ef3db7bdc1e08b2ce8773177f4607fc53d7b18c9385123ccebf8026b38982facedc48f2ad6c4d30b2b9df8463096369ab45321a71849fb7ff06f183f9998bb0d905fa0a6efcf710f253e031131e8cd338fb657bea1ef5c553036e282fdd8b657ce6f61b3dee291b5e4ee572ad7f3702fbf732226eb88f4efb1ee5433aa310f72cd43cca80d3173f36c119b60cdf7ec1f44ad7c09f9dede50e54c2ce206a96a867e2c873e492bde0f08f7e766351e2710bb676cef725643e485632bafbce3dd89189ca35d3e1ef87a4077aff6cbf42bd5a05e2110eb10814f691536d49b7ccd57bf8fc2eb3028d9c5d70626439ee0f8ce4f8b1bbb8dbd84bc0e7c787e19a74561f3fec2b5e5b8e01ec7cbe6db37f7710cd8d7a12ec5ede6f7acf93dd66474f9fba839beb997e6fc406cea02c6f96a438e8c8df308784943c85dbc049813f293d5157c0ea8a78436dc3b00cecc69302d2690df12b24e1854d2477384bc7f607b42ce250bee17d8e0cb89458e7c2701873d2670c036f3fd167a3e23c4bc8af407616c37e8dbf1998d3ccfb2afc095f86e478c43e40b8e22465c2050b3d07f7f44d23617909b8a0be4a9432e084dd919fc2ecd180e65be57da42ae72858d9d2f978ee4efb17cacb504da05f30442e55925e717f5e71bfe17c64c26ee655921fe69aef9ee1b73d4c172df8037d0d3efd62c9df346f178688c0c89d3890b2bd5dc6186f371554b0e9485cc9ba8be471df54e8b9702e2732b78252ca4def88acdbeeb520e31473d49afc4bd5b38e760d2cc4171f3952d8538cad71c2bdaa30618d79af79835317fe3af89c4855a929e1e5768e3b12e91e415d89738ae00ef671c2dec45fea0f14935e08a5d73b799e3fdf3a200cfdbda9b3dfa4b316216c57148b9c34c737f6cb036c8eb14621d63682116e3c33f3819d8b7e216cbf9ea99fea1d031fe39d2b3b0187519e2f3844dafa027cef501f2145b4c738f31c490d11a6ac396985ead664eae6df70bf7fd710636d40ae0ba25da1656483d2a7deceb6ebda6fcb4b001f3a00da1e62aaa37f93c71315961ad3ae038efb04e996b73137c0ff9ec92438e6a80517c84fc927145df4eaf3790477182c3fc02eb259dc23c6563ac195b410cf328b0d337b8a67064fc133127827be87e2df6385774ecf3857828863d551c52c8c5ca6be94acf03c6d9be0553c2829fafe0efda7a30dda21d841c128f4747cca56e971223077d75c4495a5498d3a678d9182d3a393f65e3c378c4d1d719601f6ac0f81b8ca3e962ffb03e24ed3a618e39e4dc9d33e6bca220c47c01ad6fe4bb5c09cc4be8d8d36c54f85e23ea070f702f5c35bff74aaef38338f9af8dddb1073e720947d2376e623bc0f8044d8c36c1f8ca228ead5117cf6b6536fbf2d01fe4f516755018cf77ce5cfa5b1a933a4591fd1bf6603efac06b426f9d5e6830f60168b86aa2f91681cfcf535a5f4b3e906b3bd4ff411fb9faa4da70d0e3e9abce148744c619be636ccbe7dcd8e287eac1d16ce9bf8be90873f5b2afb9f1b576b08f49ce9a5fd2df31b7539f6a6c35e6b81267b2398c210710310bd7d362392becc68f0aab7f4e6bee9d98ad5b11d7b438c4f8d894fe116912c3f8805f97e46560c87541b52191f2e50cb02b02340e6361cbe7b6508b2292757411705f722a31e8b3168ec4fff02a907b93af41ae2582daa8df5c23d2d43518d4e287cd3544730dd82fcff21a91a3f675d9a71dc273bc34d748e51e3d36e1f8421e1fb6c70f37904773e0fa29873164b38d8571bca6a19df93dd860ad5ec4d7e67a12d30afe337bf7f705f1a45ae0bfb36381fe0c073cd1cce7e2d3a79ab328710f1c7ea2bff5e6efc6801f13e2c3b33d19aba4da5c9731b1e6cc0adb3d1498cbc2b860ec19c729d6bca41d0fe9f793f31cf391132fc4ff8b4a277d491e09c3977e25d3fc1d72f40b76ff7769b35fa446c3791c25dbc952f606c9bcc2257ebdd6cd18c4b146581ee11998a7168859019e1e6ba17937c2be66dcfd641cfb434475263cb7889c4ff4033017c980f7c7746d6f5f4dc946e6967090bf285d878853105c27ad1af21fa1becb3e036b7bc4dace36df3d3b57289d1b7eeb9eeb997e3da6730ffec1d783f0f19d8b29bd73d97be775e95fe89dd364f5f4dc9c340345de3b37eb9c5b7077f074bcc2d119c7eb0836929ebbb8619ff397bfdf0efd9bdcf316de4c208ec99773cbbfc97a9ae11fc635aef705f8546c5ac4723ca66bd82f9ab9a76f38e2a8ea00f71ac699514d30ee33f079add862cd98c938d59be277d38ff2efd2d7482a1c531616cd779531b018d2f962e7347f97b1f026a6f3b7a7e6efa95c132ee1a8adcc767f6425e63d600fb3c464a4c3dcb60714cfad289ec338c2372b0d63a9208bb1ef4d004f74a1cdaf6817c6bc3dce96eb9a7bf2195671453dd425ccd1a393cd88f7fba415905fb78439bf922ddd44630bb496ec6b81eb0cf2069ee99bc1be7baee08e1bcadea99f2756ba16e3c11ee259fdb2c6f8c92bdd5374bb1e7cd94f2cbf9355d8eca389d117537dea6ba33de66deb35e6eb72eedea84f8f9b8a0f4ebc9802f23737e45994bebfac57a39f2bfdde598cf1665663fc08b6d612681bf96d44fa6f898c218ce364391bbb0bbbb0842d7d60e987518d2a8a75aa5f248c788704936b8237b1aad3c43c053d93dd3e13d898667f44fcc11e6a0b6c8a71c11672ebdbb71c7d9c48e568001f26f0fbe74d4c0e79b10fa641ff741cca1cd5bb6f8e29566279729c631de62bc59ab7a803eafb8a7cca271adb2bd63b16eb44e98d6bcdb8873c984707d15cb359af5b46ba07c253185ee95f18435b71bc88fc03f1849638a4d44714ad6f23d86bf8e87d437bcd8d7a2d20e7c538abe5f706dbe6c2fb377b5f705ada4a7fab891115f6bc392fb2b66fc4fb934729e60ae657acabba8270e87181dc87deb09d5747f4c9bdc142d9aa33f660b337ec75cb16c41b149f273ef8cc938d4df1de5c5f435fa5a5fca1c4d329ffb111b03f86e1e8a6ea5f3331c1fce14ce6f24c76853a8eb403925bcddf6f0754e797b61779c09a7140be31f0716bd29f1ed5947714b73347eeadc306f661d3af301e8ed99b8718cc58ded3239bea6612cf027b17c451ced53fb834afa2f63b73f59d3776a06a7cdcf8f98518db5fd90175c68527f138cd7cd95432feb6965c61561b3fcbf324674bb35e9c4baa95a75013efbef686b512fd807374571c880354ab39e4c56ae219ca12aa97ea430ecfe02e4cd7ee1cefd25af3eb62924529e48d23f4fd937492cdb68803ac6e6bec85e08091ab602d421d68a1e1f39b2a579cbce8588f370afc6e45866bb5a6befa5c732f9bd2efcc3d99cf469e1fad9d83b54bfa18bbcc1aab7527f755e36aad6bf4f984adbda08d5d19bf2ff49d8093cffbf2f743e4b967c714b9f45675f503fb2122e0eb737ec4e4d751fe2cbefec21acb0df7552b95d792df88f0f24106ebd211d6f613e77bf222f9414e27cf1656c083b3c4180a17f38ad58449cdffe6bd53ea8fba211e85ad630eb685ff1cae0117e8222678ee47c117e6db9bbda8993761b65f3dcd6f36cfbbeaf9196c2673a11a2b23d243987ae8e3cd2156973558e2a24b5f28afc210fb996af36106bd1296c2c41bfa310841f72586677aa738aab0025be196101fb5c17e95f6799d53a0f08798abadb781dc7b6b61916672330765eca40d23a531857325d5dc56e7db2c10bba6ff809aeb758c36e7c33f6c552faa373b4e54ee846a19872361976705ea8e06892b71b481ed0c5a0ce7f882f592147d237f3303ec6a6030ac331526f4c2306f45f5ac18735531ffca700f1098f75d680ce733fb5168504b8913d5e7fa41b99f88700fb5cca52532af6c5684b38b3687027d3c3ea4f8b3203e2003ed518c1c12a219dffc947161853b3669f6a74273c7e8870c73e460cdb86b110e4efa849843cc3972898a31ecf1f16802f19433ee6395006bbc82b5e530e233426c5984fb73aab99f2fb846c1e6785ffec1fb40dbf70bd7f6c1df0fe87781ccd3c643f4099849f9329ea4a0f9200a590f14b6d011ab6737f346f2de89dfb27742f67f68d8b3988c2784b5cc209f691536d68d22b1c3bcd304fd04c0046803f83b8c8bb5b6e72d1e1773bd78bf0beab60f7dd5635d5970ad62b2414d7b1139948bb9d07c05ce5e276de72cf87e6154cdc0872adea96e9a1b182bc5c5046d92407fe71d7963583091fec2970fb194b5b1e71dffc271898f7d316be2fa4ad56459b9a27ce43bad079e141fb88fbffbaa26246bd0034198415813381f2a137fcf18bfc09c927c8a15f5735939d9a1c45d60cec540ec23db382bb455ee0d6bdf89a7ada0361d217f82c8ebe055bee30ee7beede1b30bf338853187fc6661c37a136605b57381f873915f29b681ef7eb43d8dbe2d87f826c1de0c61df704f48321b7b1c8c42c618617c257d453d439bb50a91772076a8df35856f949b60b75217f169686324d72bbe5bf523e3ea99b10785dd02e4b65821a628d3e6c4a9b8cda0466f6d4af60ef72b383ed317f5e1c8fc05fa31a1413d27e71be09d2be801165b3747dc51646ce1183db8a9dc19720051eeb7bd0e7cd7257755ee1d3136be50fa4532f674e0db40ac92da3ef51834b17216e17c229ddcc874e5f5030db80702c297d44a2fa6c235b0f062ec27c13a5ea0ada8267d4935daff50cf241cdd1e6af511711d6b5dbcfdcbc676f5bcfc8d3a2cae91cbd8c1f94535ef178d303da72bdda7f19791d38db83c21dfa8130fdb09f036f84d619e330f71448b0cf97c0221eb4416e66461ddc5959519c8f713291bb0a0b1036e1fe8535c418efdec1f0837a7139e02bf5baeaf30479c71d9bf6465b6a8317fbcf074a54d8afd94c58f0d70a038c21a07f82e37ea0d086fa304fd2a5dd65ef9ef815f0787160f568d43d9772273eb3ad6cb2c6e291e34b007da95e6d510eb80219f5c035f0888ebb59f9ae2b3d1c0b665b6eb76f7a3b5fa2eb2a66f63efef0ceba56e8ba1d5550d38244c0b075ccf92bba67f10378c116bffb0bd11d60ae65b35ceb8a7834616eb71d686f1481056b0d082f1daf634ff76aaa56f9a347384f7f64946dcfd627b6af6c908f79610e762a439cedaf6b535fa6b71e2919f9a603e392aac007103928364c638d319d4c9a62becef12e803f3ba1c000f96b8f98731c5734113f306c978b23611632faa4b4ef124c4a717ffe0d03824f9c19d53de3395bccb6e4dc717dc433d82ed64510b47fa0f4d3c02795983f2b83c1103c881f13a887303df0b72eb893359465b176309abc59b151dfc7ff9d1c4d029f2121416e95717bf9efd7d516fddeeef33eccd95fe86719d16d4c72f3ce24ffbb1c0b54d7b0472b3f898e3a88a0471efc23136a8a5c1a37f0610f78a8b6fbc91763df606a10e23f5aa600d8adbe057a489204c7e501cb6c8c9ed694bc8f93b79d9c4f9ca9f6af6ef6a89584b554b8cf3a1e20fdfff26eecc28a53a72acef31aef84c1fb04bc30fe265877a25f981620cb9337108a4bf23b4c028b5f0ee9b65bbaaffcdfeeefd6ecdfb017fbad26e674bc47b73c27472a8dda69aab81cf75be057b8df8002086888bc932eaef097ff70c8c7cc9665c1732d671de70bc8e29d830c7ceeacaedd6d073ee9e68fc1b5b1301f674277ddadd6a005c890cf9e204e07c846de2f7946b7c25717cdb23e47b8a9b6f9c682dd4c8b165e077049f006b5929f5580be70de3c3664de994cf2b640f7f350ee2add51e0b58a78cbb6f8899b118da52664b1cd7382fe78325e607e3a81c60bd79a8eafbb1360c894b4fd628841158854e7e097c87d104ee0fbd0ea0551220decb9d2c2de2a62f874be44ef26cb2ddd579a9708ad27e3b1b9b380e0027b332e7341e06ece9b686feeccddffd1ee01c4ac1863463709ce4eadb016e6aadb91a7dbb357ebb3f8fc1f9dd3ff0e1fd9c2fba731eb48f3ed0e70ed7a80dcb686d96b6b4d1c85d1b620fdc8eb0cc695d11b751e3fb1efcfdd162867effed3e41eb06f153496a633ef020bfd17f62afa45f3587f14a989dd94cbeb72fe726e4d3b8f8076bd43f31ce2f073007b5da7f3d53fe55c077af260b1a675e1d5e009f6e31ee623e7b8b7e3860ac00bbecb47d7707f79d34d7405b8d6568fb675d0c7e7c7f5e69834f091a7496c2a0ca9cd959e2de8212352bc2d12bcd25891bddebd1d35a7c787e41de8439e2ed748977923966e29c399f53c2d1235e52842319f70466407e05f5322fd672bf51bac06e9b5bb5b14f06d78fa0dadb16714815f1b54efd10eaf33e1f99d06bc87cc2cd47c67927fbecc43f8315fa86453cc4be394d6725f6cb2563aa8131c83932cd3f94a47719900d01bf5e37201638b296f3553f136f6b941c3fa15781bdf93b67ffcddfa59fb7d911974ff195d137ea3f8bebf3bcf60f4c623442a809d97e7c260e667c2607fc501db4e102ed8abcf4ce0bf925327e4f8ec3a08d63bbbdb82e4b52957f8edb9aae289c5ce5cda2b6bf52f513e77531594c47139f177b8f7c86d8f1fe9bfb8a1617a9ee9b137753abb7077c0491a0fb666c3222dcfbb27fdf80f2da01db178471a47e7693b827789d1ed0f7239cb1d9f8d4b0bfce8d9c7cfb68fba5f206b20f728c712faf73f449799422c73c53780b4631a220de5279cc42fa44fbe2c7fd5e91cdb08e2ef78a91cc276cb0fe1a275b1a4b1fc6b098d2587ab1dfd3b45d57fffccb3b54e3c038daeb8472cdf929d782311718f7222e60cde73553f600f7771bbe4bc831a7897b07ecd5ccc27caf1b629f096063a43dfec5ad007d0e9bf0e2effe4ee6f9bbf894a3afbebd4fb978417dc502623681f55a1df9ff661ef02f4ca99f3a9b51dfffe86325df5b4c1788f7c73544b851c5af17deceaf7d1b87bc44e658716f70e597511e408fa8c72368f989fcbc92f39685d88f82e79b29621e1971e6d669455c0480cb12e58b49bd3977b618727fd28616a58ff9a5dfd43b70f7aca519d3fc10d88b670ad48b65afeb88f217d59b87fca0a171218e0a37ab5dc8c3c547b2df0738cebe85e5f5403c792bd873affefe0d7903d80dd77ab0de131e583f13ef14a7184cfa84c715d50e606ff64cc5c756931ed3e8e41186379239a1aab19bfebefc403ecb83bf1f5c255f68727cf1b88773d7fdf2a09fc3ca30e746b8b3947cb864fc11caf924390a65fd766d90c64025b9ec9a6b31cc21c6d3d147d8edd78b877633e62107bc449804379a5b2d1f55f1b6464c67b41bdfba399158c87dba5c62cc94ee2bdaffdc7c7a965a49a1719cac6dea771a214e817d902608f588f9bd3ec2eabde0bfb11ee74afd489c3f3f7caa991ac4ebfdd057267304d941406c5b57134f69405443ea2bf9bbf3cfe320aa26f9deffffe8f337fe4b33ff250ee8866bf7e1db86dca9c37864334bb8f258216ecddc0bb9f323b02ad82b627d92cb395d60bd42aed12ff40f2c3f0a3c7a1ee46b4aa916be1610bbb38a748dcfd837c449d3cb5defb6e8dfe480f9b5045e4ffade8dafddb54387755b8f686cce7c7d10ee83cd697bb0667ed8b13132a694d7f9427ced5824f301f1e62f741953a5d83318af350ff3544c1d4ff12c4fb61fc8a51f493b58b34911d31ad43f0b1a0ff99ec5ebdac4e714e2c7bacc51dfbd426e2cf1ee537f733cd421e66761e71c8523c11eea85cf8b01c574a23f17e53e49f173c8d3771ab3506211a4cdfe6cf95c55ffe875097c78b382744531cf9569c481dcefd3ecf715222f8fb1b5297f1eaadedaaa537b7ab846331f86341f306f0a7510ac0534be36f12a53ce6b63d1bc9131859302cfc76e8d7d666237a658ef0af82ec9f322e7123e6fc0e221f2cce75af34d42ee387cd21b4bc06298298de5e5c958ea5929bfb5bb225edd29e85046e1d9c9a55682f4b9745c5b9f617c9dd2da62bbfbb55569780fcb6f799a673896b3b6573d1f46f43be23aaae784b79a65d321e07b9340f59f32ca3d458cf80866794c38e2dc64b0d7cd504f651af6fa711dac6b618fb07e1c77d77d67dd493e90d62eb66b53108f1ee0e3c662e61007859bef2bc444919e18bbf87ddbb6633bdc978deb84512f4e6b8fe5dcdfa0e65268de5fbb6a392cf0f785d6edd7f46adf84e70b74d223dc06dfd93656397ddb6632eddeb67951cfb6ed22d9eb701c7b7bf4db2271a63a5e467c6cd0c302b8666d7043ceba85c2b677f4dd3037081c9cc675d28eb98e7c05105b849a3313a5fa3ecdf53ddaafd7bad26fb97435c70381be9559ec3a6360499e4b0173362c9dee3d1c7ed8125f9bcba6ba451a541dceeae6de88033abf7115c354d4931a802f761ce35c0b9ab91b72718273d39811ff4fb455faec91e6ccc25d853f97970d47cecdda1942fdb3194f79cf7167ef8477e1a317c2c349bba4b856d8b4e5ae2d6f0cf3de61bcfda47eb0826a2d4649bd25607bf9dbd71a6201597b96fb1ae299f2f8acf03c1971bfc0bb32bfd7375f291ebcd06cc7b5507c2cd5807af3c2a4c0bfb3816f6e596f5dc45bea6d68ef6d6c275eac7045e7470e0bb4d151403dce8167329ccbc535238ec2dabeb65c13ed1cf134efa6e2b7643b206d94fff2fa1287ec9b73c581f364dc718fd134d27dfcc6c65d89f3bbcbb510d48555ec478ae706f9c2d1bee4eadb0786faf633a895491d42f0fb25f6ded682a93e2b0c65f3bfd0e63b6b7bfb41f100e0a4c56a75c3de4fec790ab8e2a79b91dd68ec7151ba16f58776783a17aa1f14785b101feb7d7bcca6b90ef653e1314ecb650dc7a4a5473da81deec66ecf2933fc36b7f2dd31a7bf3e466b39ef9e1cf3f9781dd1ea52c25e53fa3759e33e108efbf13a5edd5c07392b9e5da7b9d7abdfed0f262ec21bf5739fc7be194ceefbd4fac75412b38bf98ae4ee98b63717aed33ba6ed59a263dcc937cfe3aa3dd84cffe55ed59f9eb93da6d93bfe720cdb7eeda7dfebe61346f1eebbb7ef07dff4d9b7e85c678ff19278be36ce34cecf8e69c7d0184e10bf5f7dfbeeb5f3709dc7efe53e7eafdebd9a6f31feafaef3cddce8d9053ca67d7738e6ee7b15ad9f22afe75dfd3fafe519ade567c7e0f75ac8dcf277dfb45d83a77fb997b21b2bc8bd7c77cc0f1f7b3cd3b0ff5e9de719fccb31ee7f7fccc33c1c7c3b3eadddb87db72e3acf7c698e8925cee8db7b7d3bce9d632e7f7b4cff997b7343ddabe51678ba4e6f8fcffc70afc1e331f7f310befb1fe68fda0b9e3dcfc333ffc51cebdb968739fffe2ff772e95e7fb8ce82aef337c73cdbbf3acff3f62fe3ace6ea7f6b7b1fe6c65f7cf7febe5cb4f915b8cedbffd207f89bf7eaafd387bde9fa2fdf7446dff46feccfff6a1efecd7524d62661936ff703e368fde59ef1075fe1fc17bec273bfe43fd89f3ac76c1ff6dd47ff46eedf8807fdee3ac7bff64b52e47bfacef7f5b4c63fa63ef16fee57b3bf7db745ab13f5c41730d27b7fbdf50fe1d9ad5cfae2fa3df77eef99d736f2248b7b9f1e6d081d837c32cf8e813a42f3ee1561ebbf1b47f3715e3ff8c89fdfada187fdf92fd6d9dd37eb8f91ec6970894fe1f887e7d69b6b81be8d3ef9d617ac45f3dd0ed4dff5ed3db5efefd9be23ccb9fe3b3ef8297f6d03fee698bfb1917fb357ff450c04bc45dfcefff1bfc41305c5137f1397fc521c584faf33fcee3a2dc716f8d47fb8cedfc401678a03fec6f6fdcd75fee698ff95bdeed9a2c7d8eef82fc79cff9363fee6999f7d8bfbb8adadc93c1c23f971ff2edff1271baba18d453eb0fe75948f6ac9dcca53fbd9b1c3f23a9d1ef5fb63e83ac847f6adcdb71f8e79b857feedf3b4cffcbdcdbf7fe6677b47e75e8f63d8bf971ac3fff85b3c3fa69f7b7a38267bfc5e0ff9a9bffeee6defcaf37b3d3ecfd35cd8dff8d3cf72581d7ffa496cf3108f3df1b9ff2617f6dffbdc7f95e3fbfe7966f43c7fde730acd6f7bab01e3b86347c89d9eb04f167be57979455c11f390a7834b9c4f63c38221ea10fd5a220f0e8fb6c02563a417eaa3586b03c48b801e54c0df8857fcbedf0973bb45779ec81e4aec7122ae1e1371788b7539803a2360175d3663589badde19628c52e4fc659a4fbd5b5fbee6ccc4fe1c51ae3dbac7c140fdf705f9a5de893b3ad580f72dda6f09ef82382da8f70486fbd6e7c6c5737873bfc77308f7c2c3d154e2334c77e2ed472f7dccfc5ccff85bf32e0b0f30c92f844b6ab12c63ec797228375f6e50eb21aaab15e24307f104f278b93d200c05f2d79e815f8c8b17c69fe39a28c7dedb275067c1e7d50d794b19692f85c670d9c532855150138638db15c8b94eba9e0569619ed61a1b87864ff8a75f3e4f57a44da3b8886398238a67187bac42f1bbdb53388b66e20be7da6e899c596ddfc6d603bbe6a1ed211cc6c856f87cc0afd54bfe9b6afc898c6b1157a4f8a3f1980878f3250e37c01ac49affc6bac850625e037d652c5b3eeb04f80b244ee52d52580136f6f5371837c2361815039e17b6eaf31b1e2fb076d93e259cb060c708b95972d98328f9ae1c46b5abb69f21ca340db8438deb1d6fe2f5d9753fa2f03a043e51f744d7c59e8ede75d75c3b31fbd97587cfae7b8ec28bd65c97d9ee275d774d7d5dddeb6adaa9d09e5c37193fbbee57145ecde6ba85e65ef0ba8ba254bc0232378c1c312be28a79d181575500ef005f20476c703b7f0187186925ff6cbeed0f5fda217be09743a8692505d4f7c3f3243b8c15cf2661df9ae7c03ae005307d82e7c918d67d5c4dc01e8977bf84da32f21236bec1fba6ad95b166bd6626da4dd22a8558d891fd6ad0eb70f10f6e0df54ced0bd6ef55daf740ab805fca760e524f1aecc529e8e1c5912f356193853690eb202bdd8fe8d6e1888ff589dfe795bf2136c7f134fef5d262a913890314c11bdd8f231f323786522b2f10e323609fab3837b1df5bf527fd1cb41854ae07c4a7b7073b0278cae244eb334f80d325e0d70fc2732bce54ece965c4471d1f2fa4f9b7247d788553079f23d7e65f807d72defdfdf95797e77ecddd719ff7de45ce4afe85dc45bf983122cd370db95adc3ca17d0f3897c1272bba3d159d9e0f696bdf0927fc3ffa561a7dab05f2d0f2a8fa0aa8d6dfabd18f8eeadef2efe7371ff59c723e477c233ebf3144cd7d1db58c089b025c80a9ea2bfc096bbd64f7ef8df861fc7d2dfab919e4a4e3881fe188b56bfbef9ab13a23861c395d04e22d301721fbe71336296c7177ef79fd42380043bb22ce9534fddd8cf80bc1d7b780ef5061412c3e39971dfd0e273c104f3c6088c25d407bfc807893c2a802bcaaa81437446aa6f2b96307eeb33a6ca9f78c35b14fa4bd35df6b192a6ef75283fd8e2d33a5a780cf269caf1cf16c61e47f209f5552489ce1791c44c58411373df2c7c09e5e845ccef942f7f705f21a8a37bf1e5f708eec80174969cbe2585693cd217581e739986c12e45191f38149be57ece5469b4478c272886bd5096b4fef631994af38242c7958170662fe14af236896b30b7d2f4f69756b1feabb9a6f3ad8c4e2d5db01df5fe0403f4bb4a3fbb205f0e44acc0ccc09cd71626bfe811ce4897723ecc8f9087e68a930e8b09f54decb6d0458a718390720173393bef70db95e0fffd421f610af25feef3c0e92ed244b0ac09e4a5e0c7decc7c749be632ef282480c52901c2759c4f039859697880737ca4b30019ef5660f91fd99a66be53af027213f4aa6b4f934c7a15eeafff86f567585fdd7f925310ffa58c3bec7007075e2b0c43ee54dd9e75180fe42b95e06688f9d74e698d8e302bdd0f179c262d4bbbda1a6615c4c3616f4e4f9e2683298f333f2bd723c3ea8c6c0871c8f26396ae686e678e225c4d9813d70d02fefac6df75a68bf01e3680fa027e1c9f781feef6a1cc4ee6d4d5c9ce1c954f32e427e14e11e0ae8fdb282c35c5d276cfc0b2162afc4de45f047762c6efbeca34e1f007201200eb2f0a89f2e8ab05f4ef1f75726f4a3b3e926ae544c84bd792be45aa9d0df517c2f794dd82ae46b4dfc1bf283f0b5e299d12f0c6a074e04f835c667a2fdf6f25bb1f735c611d8eb31c338cef255efe95b0767c5a86f0ff0aadad0555c6ccd73203f39f07d11560df69380fca1288849ff94d910dba7e497ee8f644722c51b8058fee65f3f9e9306b24bfced9d5e8523725d7acbe9157cb9c49974f29c33898d95f694699dfe93e6593d2fa2be6ed0abcfb4b9e6017f99b550bec795fa7e9ff5727c1476d99b0fe4b732a390cf131812cfa4fa5596d3027d49f97d1c7ef08d307c6a471f63df7b8e11dbfbb7f8db8a679cae4f1ccae1423e5bb3ff8b2beec9698e7987b0469b5617561befe6f55a7b936b28d3dc0fcc61aebc09e2b71331a1be482f467c20ffa9ada10f67d6ac7deaf369e26d8ebcd699a63415860aa768fc54ba34defee8206ec7eee54a92373566de94b8b5cb21c4a40ee60e889f81702b62d23956f258805ed0ef1bec9bec35b7886bac3405f57669a74e6d44c41bc939568dc35d3ad9ec9aff8f9ab8c9f22cda43958ff4c6702ead4be2546aaf8bcf6810bfcc12e66090d9f30fd239ca717c58e9bee5a40380786a116d9127ea7c011ff6e8224fd674998c89cbefb2c4bd781509d52b077fafa43e61a78f4bae5f76c09ec2c64f95be403ac90e2e7269e1f7167cd072e7a4ca070b12811cf0ffc13318d76e2f99e48b11cdde12a5563a1337fc863af186f1fd50c3ba68ed438fabe19b47c8376b1cf9e646780cf319f57fc4c524df63ff3bd73fe4dc049ffed4fc1ff200e7738b112ec6a9c6a4f60fd3dc310b51a72fb635e261135d8e7a339dac653c09f334e28e15cdda9aa5dcc312aa219dcfa877e4a0ddb0fdf8726b7b0c74d297f95cd3fe636835625663e29d0e04606583e97142f7e5dae37d33ee22c65aa00d0c644defee9d17b2dfb5d9bbf9e803f95ae2ac947eacc3656d8fd919f5f0caba17f3f2367f2a790073cd7f3296e77110d3b30e3fdbbab63ef6b56bcb652ff727079f55f208a43246de9f91176638699ee7e973cb7b5c27c83739fef7ef5074f214721f793af68d9f914ef58b9ca3c9d882b9195821eeb3e12bf2a2a83e66e2252bc6510c5a62916d7f511f54aab9b70c7bd1a358ff82f92d347f3ffc0a1f9e6134c839ea5addce3f5aed67a9e7d2f8f013b50f913d93df4da4f298643cc9ea00f260d2df61d20e52df04030e9359007d3176cee15bae4b56e3df9ab9a311efab67bb7544ba5687e01770143a577f57eaf42d964dcc226be7ec141cd82fca9b78cd3b39427213787b5893813eefd6c4dccc2a1e7b93a4ff30268e2169277b7b615d4d727b805ab0e92bbedb91b0f2c061731e175a00fdbaf1d0f6e3f316d7b2f1dd5ace67ed5a064eeeee3c95ba2434ef03e03395f3eedae6609fce6d13f37c12e70e7b594a3c4faea7adeee636720189ad7ace2091ba9e0b9fb397a2a3c15d684ab74d7225838d68e78668f65d5cc3ebc3f6dfec857acee2ff95e7bc5bc7924f61c66ca5c305f5b771644a3e5cb94e5ecc639b8794f92eb44196e41efcebef1469c0e51ccab5e19ebcf2d17666b3627667833e3d4dcd6ff1cc56d25c25ad4e1eb121e8ab0ae281d0547e6a8fbadd66baedbe33700a1ccfa8db8c9c9f5cf17431e239ad03d2b9649bd733e5ab3e85e496919c9372cc55ff9fe4c9bf1f976ab28991f73119631fd696faedbf04f6456ce2ade2700c001f1110df0c9c376a7c566b5d830ef1a684b881d9c295798b783be5b76be5c7c5340d71dfdf555fd8ab5d132fe40bf57608fbab403d9a4c43ee0dae69b4c7e7763a586b2b8a8f21c7b81f7da8fe88f8ecdcf594c1bf425c36a429053584260e09e019464bd8938e934cfb49dc060b99db2d15d7c1cce7dc448d8a646dcb7cda985bbf8d80fa9177a5813d7cab3c1c810f995493e658c885cc513fcad102c9d175a6de4ea935037936ac35010f7882bcab7c05bcb71cbea9c03ebec0415ffd57b6db82a6b5e4cf6df68b609245d873c647ef4b9b7ab5dc0be25c4c9c0f9a7f60a7b0771d3927df0b8e7d3ca5d4837340e3e08c39dbf42b877ad9f805394205f6646e4ab936999f6cd53e98ea6acc1b5b51660ed66b6eaae7b0592b318ec717e3943ffa470f682fad5397b4067de05cfc24dd5dacdf58e15ec61c01f52f06623e2cf0dda3b8241df676bc2057e9e4a53b248e7791149f34ae9be9704a1c653e60a43e29a78ebd7af34cf54a41cf4a64f95fe14462f792cd04fa2103b11d2e34e4f412d58f05f639c6bb7fbec210b8b757918d3c26ecd57b1db98b9933c11e4e47f29eed2f97306c392003f17bb029d16e209f299fa5c74061949a63fed132d4e4c7bee1b0c5d6347fdf2a4c01e4dc98e24882e7f6b50dc73e39d4e08f74e99b3b80ad430e50637bc035adf9077a0fe797003cd087afb71a2e42731cc603c4833819ce51d95f18c42971aacbf7113661e5d867aa41de312fdd2b8edf3832008b9671d2251f018f4ce4d88045b207fe614ccf76e93e1bf2009f713ce2151c73f631771919f09eb99d4a0e1bae6a1f22cced39e123a0b7cd805c4a10bb47ffb5c52e052218484e024ef56ec637b2575a573979612b8c5bf37de2a2899565de91a97eb0c8748f81d27597ba2c13466b1d7383dc72dedb3e8ce6dba657d662199af5156e1a9badb0a0520b8770a695fcde71aab033a106cfd662fd58961dd84b073b6785d333f123cc90cfe690d925612ce4fed762c2ce787d85737162dbeb622fbc6c3a7c217c4fa83916df09a7ff737a439b22b57703e1f6af37bd7e92fe10e8efcc75dc77e9677a9fe67e25f58d459ab3458e469ed3fe53ba07867321307d4d6981ca5c066033beffbbeab59ce17a7cf70fa51910a7b3a57a93df198c4113239b41f8fcef6d0eaf2a3721eab8f29f86ff8abcfde80f293f85f88c6bd2e955c75a29d59612c9070e7d82860e7c90baaacf1b6bea4534c519c69095ebd996f0231a237b8973634d391e5e0d73e26d318f35e504bc19cd9df29a6b6f54bfc3bf33cd3f1cdf88cba18889f3f06c64a44b9e146f942bda4cb7a4bf3dcc206fe7b61896f412aa1abf5c07a715f1f5c6d58b7abf52728558c42d2212415c4dbf0a8a9f757788e7fe5ace906312cf15b007519ca82bde2833fda4dcb337ddaabe4fce9d19f19a509c942bee658a93549e95933fd4d5d3829cae8fc77a9d3a8c37a47cf83a221e337d407a193c621cedd319f3d363d4f80ab17e92ad0feadbde98cd9157f18a35f8f252e07cce4ad768f67ef0278a6bf82a634ad5e78b79c8688d794869bb309f97c71569db7e1536f4876636fb28b415e4ed770ef1e12f1653dd95be75ade28ae39a239625293e0269b78bd966ba7dc1da44bdc07cdb8678db6a362964ee13f80a1a3f32e5ce67585e8dc286391885d7a3acff736116881990daecf1769295e9a03dee6204b6a387dae052946f34861170ad02576e94a4d2878e6ce41d070ca2c5678411931cc6723e518cce13b75d73c0b3daf819e81b9e75e2508dccf414801f1814f19534d0ae3ee1cdc0fe7c10ee2cc29a6784bcee9d1c33e275c4b88808cb556ac81f9930dd263c8401bfe3a60f581fdb8f8784f5116bca0f6bfa186c34fbc43cf1982792ef11fa80eadfa49df12b9f521eda9179e8a8b17b183309939ecb09f2e6dacd3e6ebad4db7fc0f97df377ec47876b2f801cc6764b3dd405faa529d59f01ff656525d56d46b782ea26a643b9e500ef23eb6aa9e6fe9071650cf552ce61def2d2795fa3ff17de46ef8fbe29239fd45a97ee27693185717151ef36136447be903367cc6b59dbc1986b457a0637b48711d6a4de03cbbbb5b5da66ec8f070f6d468671aef4cb6cc53561a5a43f06fec78a45c2eeec4f5678389ebaf5df406bd611e988bb979cf274a6d3ecbd4262360fc191fad7d59a8ed94dfa9a92bbc445ad0bfb23b351dbfb367a83bdb078f7f76f8396c7ad572b1920b787b3d6574f6b25ca86c6fa55f11bd70e8ea93023e005f4b31b71d2fcfc222efec0185c01ef2fe27544bde6c5a1f1fd210fe1d73816ce6657a01f667fbc005f8613bd9e297742ebd712b37fa8eee5bcd45427454d29d41e4ca362a8729ce148626d033398b0d911e35ed09dc778a4e557c43d98439e6185b65857d8a6687c0e3bcf03dc0236cd11c78be81df885618c19449e1990a6c15e57bcb5cc446c141726d6541ce4ab745bee2565a3a8fe5fe29e6f623ed1c9ea14b034da5b274752f0b595e2bc131fac444d59cc1d71e44767664539db01ccd702b5cdcfae57c96fe8f9f11975e7ec4b4e9c489ad69ffba208b11efb8bfac58be919b916cfa469aa53dc2d714560afaf6bd4ba11d41b64541f8af71eb54b37315d4b9f283eeb59f042f16928f3354ca7fd84721a31d6ffd6dcfd91a10d8a13f22bc4a1dd578fa495fc2b78edac777eeefa96eea6846f01be769ab1847c4fbdf688afc73892ed992d67f88d05f2d5096e2e4803c37471ac2be4830bc64542fb8373c13967417c5d8026b740aee39d0be3dd6afe063e1fc96342e22f4d3caabf8a4cd6a6602e34ef4c1a56f90131172d8e9113b712c6442672b38ee3e43771bb39cd38a3ce739b7b9f39b8ef8f866bc53135a0bcaecbb8e4149d2d34f6c5b8c25b75f1b86c1deb8441323dbb447b34d603a5f9c450f349e62d2e749d30e18a9374bdd71de40dfa91dbe4df31e2f470bcd733e6d9e53e7643df11f37fc224bbeea14e13f17005917b51fc25f25d2be42fc5778d7285cd79919caebac41f2d6763e2551d16581b08a22293f119d66557bb14e372f1bec65837e3aece28f791e406eeef86bfab0ce2d451bade802f38307cdf20ca91f3d559b0fd117576b7d71cf5e522d3b130feb830f26fe11eadb6961ea0de2d373798230eebf41de66ca1f97bf51ce90ad7cee615f22fbe319cb057aa790247abcf4719fecc089f126acea2b0bd5a6129a137e80b73ccafeb7848f9eff72569c980ffad93a67a5ad39e36929a7101e2a539d8762ba27cb5ac3dfc96398640fdce91bf03feee0be203f56cd1e5018eb5af807ca2fd95fe3fdbec8249e3bb047170525c97b7de7c5e30e29c8bc5bb9acff108f7150df757e4808a507f988f86848149a37c1012efee5e537ba1b7c75ca328af746c5837318c2e730c606fdd33ea655ac16e4cfec38e9947b2f9e70d609f667939bf64d89f87dcea3077c0b7039e2ed5ebc1bce5ec889c643af1aac378000fd32dd590a3d676dfd186ffcaf68823e6c50f66a3565bfdcf176840e986bf3f4f081fd38c4b6ca3ce7e3c9a6c509b03fa3fbc2fea2f0c917369c31107169f271eef1d6bfa3bf6496b4162604470267df048e970e9a87be7fcf26fd773135fe5366254f9e833c73d58ea20d23e01794427ef72d8c15e33609ad2f28358717f1afa2a8f726ed6aaa1f224c8471fd0777e6d35880311e88d3fd7eaa08890ea40980778553928c4932d13c466ab3e86b34e7b539cac10338d787c93eadf157113feca0c8933b262ab3946500f99c50f1463386ca9f0bd27c4ca483ef95fc0952f7a7f5bed52237c456c8f49da62d2eeb96bc56b2d06b8677ef9a88398f139f85db2cf8ad584f38cccb2f50f0e6f1f1013b01ffe21c5bd831db212e672a6b96fcdff23c825d7e41b8b1a3116385f1a9bc0b4f990723091b1a5ebfa9b04f328a278c7eb5af16c7b26ec5551134fd608b40164fe6fa40593bbf8c2643ae2aa581f7f7cc2b5e20f325bd941e953aff7c4c92d738e169f161f384e29cc8fa3e62bdddb31e5ea1679e20227b9e94e8a29e9553857b5c62147c0a0e797b0c6e737b2110b03f2f541e490bfc572e3881c869cb8abd15eb241071b8ad8a291d4f3483557d69557644bb9d253855ad261fe11861d8e7a896f242ebbf32d235e5769db46e3c0585d4827b4bd864f7e095b00d6d15a97ec2bc3bd2e34dd378a5b988398fa882584592d0cd463e27cd0ec9fc097b9fa00ac45b1dac89c4c879b2fd64f01e54c1ce4ded2fa1cd04c69e48d48df2fd8cc5cc4779d4dc224f1447e3326f51c76aef7bc863f37a9ff6a616eade7fccbd48758118fe3af2252f8e09ae1b864a53bccf89fc645701cfbafa5daf305622dd01ef0ea232b217fe471ef03b1760eab0bdc134e10e327d54434fe44124c08c357508cd8d1c5503e917141eee53362d2a15f2fe0d515c76b4afc0e91e470966bf2adc03912248e81f989a038a8b1fe58122760c29abfcb3c067c0b395ed782a3ce542466c8836ea7066196f4c95aee5bd53830fc21c5fef7fbfc52ea78cbb13979e5f37dbea07c50dcddc78f84711fbec09ee1c4d3d3177e1781b9d0683d3d420c1b0f272f069e2330f64d9c09ac7bf6eee33c5c738ccb8ce104e3fbca8b8ff2fdc27838e9f41c58916d43bd2e1aa33e185be65645782f7309795e37ecc4dd0be3e8500f49f33d80675af2ba83afaf7af1b4363696f3436ff6bea347981eac71f170a4a39f63f8bb31f995cc4b52e25ebdaee43b367e73310e4aa7567600393e511fd1215b9371f7b686788d617cafb0a40cb5f07d51bd79987b09e273f3ac509ba903acc38b133c9738f9f59cb8c5593f87a27f1594538bca21f6ac04de0cb11d38ce0bca1f47d53bc59899f4c5e47d2e05e6b1d2c9f933503902f73e4720f7618a75100399ae67344ec589f0e84539ff203b1361ec9ba2fd8fa21cfd115efbbbdfe4c331e46f0e00b77896fd0f193d83704e74bde076467c215b65fb2bede91f19d619d04f8c33190fc87954179013b2a24345783db68e719d71fd33d3f2c6bf0f72bbef6be6cd31d8138ff8d00be69dada5aa418c51cb987d91ee7a646cc9a70b5a5ba86bc4cf1f1947ec5104ed15c56f0d7bef0fd2cf51792d2134ca634686d43dfc2539580fd52dbcf3e5f257c423c8381062554ebd7eb733f90b6fc4bbc9136e908d2f6663d2b17ae7af7ff017cae0bc447f01f1e62f4cf5969557d4d3b5c2fdc8208dd9c7f52432ead3247dc2a80e52b5b6b93343bcd5d48fdc1f382f9df5a1c23c977359213f768e78dfb0de7ee0de041c0fc656f5d3bed09e9c1ccfc4d3bf9c9ec1561b7353f171c6c36140359d8ad6e74fd4f061d99af407b9f8dc605cc82337c177ab53d02a72e27dfe0563138cdb772f098be77806f668685c030c4e45fd1f1af96261bdbd601d8041cd6d348e9260b236b0fe06f888d9aaede147bf24453cfd967ca804795753cc359ca43f899879a54f9130d837e3a1da3719c57bcddc9ab9545f91fba2008e1f8d7c3b9e382ad6cbf715e02ecc6082b996e0c550dcc85f8d3f1cc97cce5ccbd00e0ae37a0aeefd0de338c96aca4dd13e36ac43e444cd4cf6423c2a8bdb88b47f3fd7900b77c2fd88ae59819e019b64078730eafd7efea8243dcdbb5c753948355a7f97fa797f54a1818f9d26aa5f80ff1ca6886712d6167917aa43a1a14610aef365e44a7b1df1966fbaef87a507aac5408f0260e39fdc671c9ae325fa42b29e057d4123d2b5661ee6b022d4f16f73767c48ef5e4cb7ca7f2b901f3ec4582faf7ef7fccda5f2370bf237a3bcf537bf94bf696cc9df34fc9d5bd31aec8ff3595faa3c12fb4171ea5a57fde2bd3eb4754418c5d15746fcb5c96a80f12cf79c7f70cd5737a5cdb1d76d853b016ea98bc248ee87387fce9f4dccc71577013bf9fbc2a4f807fd8a6d7ec0be0bf33829645f99dcd74963d5c0dab7b529e717aa9347ea5f8e351bdc17b50bfe0bf587d486dccc0af66e2bb3dd4fd2330f92e007d905ef00b8e540cc3f681d85b5f323547f3fc27ea06fd1c71fbd939f18193f693f873e62399ea007d5dcabf1bdf88c1d30ef70f077de506998a3d6405693bfa60197c36e7c086ebd7cc3fbda56b824d400f3154eb5d5c6117c1d5f678451429d90cf35709db7710d1e5bc45ba5b72539ed77588b009be8ac5adca6eccd5a1fd04e9863da13ea0c3938baf5bd17e338056ef0d520c73d21e32ef4bdc61ecc676937dd362f506f494fb75ac685e22ff5a605e1f230f6102f1d4e23984b781ec4075eedefc83fcc3f709e550b4dce45cbe3ae4679046e3acaaee5fbeb4cc6a89198142a8f90df1ef363c5b09707a859e7197f5e73850379d3485f7f8dbe3bfa2a843b39fa65856b5797b6222bdd25f91119ed19fc54e7902fb3622b25be0a8635a085ac0148acceef81aaef20768ab005307703d230873553aa581e30e895e2b8877c14ed179c7831ae8477bd509d26aa2beced759c17da8b85fd41cf11d58efabbb707fe81201c4d3233501a7dd8e73e471cea84e27eaabffab4ef483c46aade41c69f52b397f6f9ea0dd698a7fb4645b59320dbe1f8f0d3401eab39d66a3f529acf1bb9b6e55cd665af532cdefd8343e76fbd98be837ecc701dad4b97f00453ca8583e631d9a1df18d30c30ae6007e0bf957adcaaaf981f84e5a10e328f87564ee302f55027b2c19ef178f0a57ae941c7ab599f2ee6553ffdd2d6c8378b50bf8f87d22e35fed67e13b994cba7dcdeb5f94692bb687ad65afc4fe3371692033f4ddc8980fcac1b435d210948e3d466e348e2bdabb18c3fa14653135701ccb7f1b5401f4c90a6b1be25bf711b432ff32b6a382518e76ec1dfcbaffe21200ddcc5321993bf7af660cf74102796610e6b5a1c02fc26a7614e789cc4c67ce959cedd60bfa57ebd84f659c0d28d2e840311b087d831e6e557585fe166aac178ca6fd8f2da6917a9c311b5d87e3fdb55d81723ce641f714e5859e9fec835c0b4474970249bb99c052fa8afa2e66956ba5fcd182accaae62c628ccd57fc22c71df88ece86dfd7bf218c82a09efbb016a829e69905d41d9d75e9be2f5bbc5c3727e26e428a9bbab5bc3eb6a050d802ffa18eb791f5a302eb19d28fb944ea5dd3974e0def9d6cc4d291bade8b66af5f3fa95bbe487f0b7415259f542d79396612e722fdc74ae9ff508e66b33f520cae411e9bf1d40cc8e7bb661413c757a821eabea1ea41d1f687c24cc8b529e3aa9bb2b386f29d305f73b594fdb6a86ec8cdb817ab9d2faa07adde36b11d6012b92bf7bcd04c279837da625dee1d7a1414fedda2dc07bd238e8128e41e269fe7b494b9367b18f00b68f9c7a3e9da9e1b05ccebcfa03a22075371611ae546cf72edb2327df3775b4d7123d9149373e24da35a578535167cff807ebfebfd5e54947b119b4385feded8cacd23fa7b4c50ad067bfddefc0a6cc70a735451cdde655c1abb177f171c09c79186aaee23b1f229fe1ef5507e918fd0f6611cd1ff6217df2ce8fb6e37b323e5600e9e8d6bd576e3fff0f998ecf9e2fd1c08f40b8f5a2e8ee95b1327ec9af1581236424faf8c7399cb8c9239f2c8b0e526d6d12e8c245f40a807b00724c5a4988ce6dd9adbbaf46e0cfdc17ff3131f7cbf039bdefb7eab16b3a7fb3bb97e667ee44e001b675f7d15f7b0b7806211f4fd643ea95c012efa20686f30a93e946bf32b6205ad25f73ed66467eb2d697dd4feae3a0316d2fbf20f8cea1b498138e25c7307815cd3e2dd279e80b6cee3c45640e7fcdfd457641e81e2bcf24af153148e06800961711191ee9836246c22f65f3862bfbd06b4f7629f5156b51c405077eae496a623c49b3bef80a52f3efd7d416b415d239f1eb18648b1c8cf1b237c63e4211744b5dac495aa4f616e530b919bae30c50bd5a80aaa39dced11b949d8bcb33ca683af55f57d46fddb11c5d995b9865cafc50ff321c6450bb61b13b6d7a0fe754ff66b8971606c276be97fcafd5d2f6cd9d36487564eda90cc9b605e0e795afcf8a721df53b052c665ca4f7186ad9f22ede90ffeda7fe7c60f0d3a315df36d0bfe46585ac4408a377f3f3c2addf77e0c7e244dbf2871874a2fb21f830f9ec4e058abd2df19f6b1ad5e4f1af5afb188f0e967a3592f9dd8fae2ef15ee8a79ed71773138e9633aee8bac9b5563d0686ae6ff5bb3ee17aad633234e808af0e0813755d89cc186b039f1156da463ae39e664148fe179b0545c185bc59bb38cc6c06d13cf6f1ef9fb31f6d51bd777e92b0b6100cfc7d805bc3df8ad1e6209a258bb20afe0eb66f7ffe3eecdba545596a8d1bf44a335968f0b019592b4e812e48dc6512ec1a64acb865f7f079911015ad6defb9c7dbe7beff89e56234d926d3433e6c4effdf67bbb872e17b4068fb75cce1d234cd61fb0c72e17668ae790e2828e6718720dd64956a20f00b9f425e549d0f7fd45989e8569600c7758469ecc096d550dcee834dbe0581fb55481b32331642ea8b1c7bd6f79f8bd3d23de3b8e21ed38443da87903b686fa3e70219f16e1bdf1f04bc612d45b57fb29eba05dc0793eaeebb2413fa11cb892bbc22caafb9ae5559f23ac17670b03c4dc156789fb2a5f1e6cd303f96cda01fd308618a22079074c298f89cb1035203096a70da9164362ceba3c1d7ba8e908b4e1f777c42adccfb6e863b006df55eb9427a4ebf89f396a1d47c7018d4b58a3bef23c8bd7c0dba37ee0391068e5de435ce4768d3c9cf354a36bf7746db3460e4eb688f15da74326313ea68b3af622f76bd1d8171bac5f38895a8520b2d9ca829c1fd5decbda93329ae905c4cc56c837a81f601d80fd1babe3557ce8d5858a7cf59570728df105f9f337d4cd92585111f392b5991ddf25e4632adddbac5b1bc014364fc244aeb950843632f3e2a12939cb5990d705d677497cfea66af0fc8398e49e3089f18874d7d08e5f3615ac3576f436690c637a408dd9a55cab77581db6e1c897f542f9f5c4a258ae7b034ea5c41f974dc7072c3815740731d0d8be019d7dffae7d476f5be9d0c70987dc1e9eed7e02f909f279940be4cecc08793ee32bec6b6e935bc57109f9205fe930b679351bbac8f7a623675b7d5d203633743f8197628b9c11a47326635c6b99d7ad0d3faa00bf901aaf8d8f67da3dc64cf0702d55e2826b0cb15f04fc5de6a9e223da4473371edaa8390a7c5476b0293f82bb335fc4652f19d671c0f33cd5408cfc19ecb67901f199ef632bcffc15f8b1a176faf23176a60dd157fca4586782768bdb78db67ed556e25d491c4e323627cfabf2b98438f1203bea7bc91465c638beb22feae941170192ace2d059f58e2d2d887d7cc700eff273834c16f326fd6139cc7a122723cf2dcc55accb8ab1594588f5903b52266465888930e73df7705e7e7c9f0b9735d118e1b78a6e2d178b503dbaa61e6aba6427cd6d572c07a15d14ccf01ebb5887a582f9dcb3999d8e3b2127b43fbfef302e32a3a03dc837df576fe873ceb22d5dbfc467b28c910a7a1ae75e2eded61c464bc5aeced67f0598ce0768278368f8b18b08f3fe7eff694bf7be22788fc1dd5ea7cabffb04bcbf9ccadbfcedf154d8a1c44589704b6aadf80bd0ceb2cd2bddd1afbe42d25feb41e6e53afcd5e3cda769519cee127383103e6c5379cd8bc88db6b6ba38c7c61631715f2cf5418bb4bf2ed08e3a7b795c464db59e50c5163b6e325387cc8ef7091a3c259d5684347540fe426fe2bbe03703c887f7a73a5cfe406ba73043ea6d99de6b032545dac594bd60aec238e6b61eedb8f00ef7083bcf934b7a43eaaaf5c6e786fef3cbd025694ced328a17cc500d6137bd57dd4881c4488b7ba01a7b3d03b269e77b5f5d97ae7c6dfe730bfd5f98c08cfc8aa3b9f4feae227c45ffb89f66b1463dff32d8e6dde606dc9515f80ce7cbc2b21ff756adccaebf3ee64257188f57e6b30cf5856aeced02739b7ef857bdbf59715a68fe7ef3eea7127659153dde10f13fb0c7ddad55f5bc0f1237d5f8cbf61dce76d35a1f937cc158ccf63ade5019ee79e5137bac01a866874cab02e381e1e40f7e2add8cadffdc418f7ae3dd3b58971007f2f2c27f8fb49c41624770ab5e7259798197365b9176a9bbc7fdead33f627d76ac4bf405e1a9ea139f02ce5dade1f28c46d602e77fdbeaa8d80a7830cd6dc379cfb1fa89116f52d0f7962bdfc005b13fa7c79e7079413c40f3dccd5f874a4da4771cdb3b95a0d719cd0779d37601b6b330deb27c2301a7ecb3dabeb03eae286a145bfe73b47fceef3f5670936d737df32e25fdec641bb80a36d554e01d3a05dc7a90e391eced1bf95b94c194b5330cf572a33caf905c8e3da507b988bfb9fe00c16679e2e6d077ef3a7f0adca3b620b746fc3c99e20df84fc7945c1791229182fe3a2cd41580357e009626d6cd69e3d4174c7d9ded54e405ce3a7395168846d5340b7fc1b76c09d5c91e35f2b22aa19d2819bb2ca34ac291c0d5e29fec4755fe418f99f22413cf9e8857e4fdeaff87bd660fd55815c00216b7c99ab4f8c31c6873cce2b6847027baad6ae47a1656bcd6eb836790cfb1daf3006006b2d42ac99e34e30be8e39e412389eaa2bfaf0e86373a857e50a6957889a053f79d7a92edb742c2f626ed9a433e4b811cf058ea64019dcc78a15efc815ebec4b3e0d235766aaab209f22fa6ce417f8b07e366e58ce608d692c5a1ec3c8faf4b5ab990abcdac8605199a08dc81a26da1286ec3e8797545847909666e9fc7bbe710feab7d9dedf8e007facaa65b5045fc8d22916bf63e84741fef0f77045fcefce0b70974ea40ec16f991b92f88cc0450d66856a8131efcff2b0143a16c0476a0421e40979f9016bd4cfb607c23fbd3688351c9dd05f88b4e185f40cb7a333d95680094c859d58032f656a1458cbd0cf45c6eb39c6320497b085b18c5f54ebca2a595bb8d486c86d312fa78eddc3f3b56785a8c3e3f0ed6502b69cb2fc6490e3089afa82f8bb57bd34818ff54cf680a642cead8c203edc944ff072aba9c45465517af4b6b5e6075715740ba46fa5afc7b93213da84abaa1e0a5f3e3839421b4dd6e7364ca990fb60d8d5f19446105fc7b96ed8f73cb4548ffa95e2fea68d76e0d340fc4ae61d841d16fcd265fd1ffbf0b6eb0ddab485e21b5c72ec2187af9336c86f5ecab912730beb6c30af70c7c7ab1b1403c6bd87feff0639a3093c8bdb4d2ae386ad2f00f6bdfd42df90f0ee1bc0dfe1121b300d37c427e56422d723ce8adb0273aeb02f33dcc7bb7dbaa77942359527cce786ed38820f9b6d5598dfebf1ab382fc459a2f6eade04d6c235e99cb9f67e6bd7dd32d70d8bce41e0818bb4b241bef5ae2fac6bf7bbdafdbe2d9fdc5f3ff9bd7fbf38cb5a3b7e1fc0fc8cf4df3af2dcf5386aa75d0e9ce29b3bcc5b3e9e6d597c75bef5f303dedf45bc77521e7dac0109309fc93e72c9a3d2fa327a8ebe28d8aee54df2cd937dda5d6f84ddf358b159cbbd2971c60be480ec5d0b76d7fc553b01feccd7e6784edebd4bc6a63c1aef2bd43fab5ddb92d9c0179c77fce66dde75d25aa16be19db713d4f49c9487fe7c29ade775bf59e2231f5dc394e543dd2f3b7a5aadd05ebbf3650e9fbb9712f83bf2cae9d64a7c408ef6b755e2db5dcd83883dc97f4757e0f3074d9384e3b7af23aca7da94989b61d296117a0d50e3325232e29f6168dfcab84782358535d87d954e7b9876fa02ec07cb27c4b72eb8bd23e9577f104eb629456db61fdad66b03631bd763e0e80fa1bd49d4b55bc4fc7c53b4bbf59926b0376b1970c98476d4ab1d2cff900669ebaf436e29084688a3ebc7640843fa7f86a322a23d394c443c26a17c24e717c449af30078d3e826eb7d7a6adad88f53c304f927c825806e5bc92987fb35d6b1437d086780eb36257539cc4ddac314e226a6be5b8d55fc473bba571fbcc22e23a271edc5568e05eaa6692a3ce88e3f706cf68f9fc4eab4f70b3491b55edded7cd9305d676f002f8b6f90dfc3bc745fd17e9a76ddbf91729d67dad0bda4a90b777f18cf8e66f8db0b690170293ffccdf429d9ee380702a1bf4b7bc0bf2e3c7a1a507745633a3dd7f019f35753725d562e40a60e6e321d876022320f8dc5eb5abf517d71dc376dce3d318f8312ad20fdbd8c813afe3feb0dcac319e7406ce6dc26ba51d5ffdf011cfee87f6b850a8ff644c69ba469cd527618b2de740eb16f8415798ef8d4f105fe32fde16ebca087f7824dc9dccf509ded1be7ffcaaa7cff364f1096bd1793e012d0e6d6dcee9fae2136a8a8cb0a935e4865f4c25277ca02e8739e698bbf34dd4cbb8a6037e997b7565ad1fe8f345d77b8dc3fae42acba77b3ac66579ac4eb16d900726be00796d8d7945e4b25a83f6dd06ff0ded4bcb76ed48bebc8b8beb38f427504760c35eb8816f4d16a1bcde6fca3133615dc7c0811823b71fe9bd817d3dfaf01edebf84f747889390751d16e81dbd614e64a902e60ff05d4bee618c72daf69d6f838dac2f87c03bc1cb86f26f834524b90b7912a136d8bc14f93961bf7f2e2cc4fb035f762c79375bdb6521f9aecddc727698e7cb15d037d00de4ab5fc7f0a7c4ed32d2e30af4f7ae4dc469269f2bdb447a65f39579df2699dff5b14d61ff7b9eb4c9c736216613c66b237cb4d895fc0f1c39b96a1fe35daeb547dc9b426b55a15aef63897c2e3226cc4b05f1b6a0a370ebf62d192712f83ac1b7badca4c8edb3ce7787d77efd4624b5501bb0bbd6c5f4dbef766ecd14d80354aff6fa7beede539fdb3d50bfb7c9688cad1be460d19ffff2ef79de3631f41547acf276489c44bd9a5fa59067a6c06105f2dc966b5abb8ea116cfe0fa52c11a85c252c01e9d2919d44770fdfdf1f739e5f1131bdf7b054d3605f5c772e4b4488c3361006315f7fd536be345919d00a62cf2e21239babe98e40944fc19cf2b05ea199d4ff097f982033e2e3118fa2514776ad7136243b7c301cc051f6ab515c8abd9b9c590ff8c9592cfdb881a26e3f79c7f1615e6fa968d0f5c93ae2ab10c2bcbd5b1ae988775d0cfd9458aeda49b027032a55bc423c2aa0b8d2fd82ff36806fa0ff6da8567e511f0a07176133e34774037d1b9a22d0d315d57ea2cda29e8e6642c92b99918b87963d45e8d441efdcb570f17d671eb0d7ccbfaf45567c7805b0ff978b3c8d573c02efb9a827122cc4d2be0db2376f98a3535be5e2246d35e4dd794b7ee6a6e10c7632307e5c5db767ca605d6e1263ee69087c84549f726eb3dd8b6176f3b026cb675012ebe83d7d447c4a2e421ce29d5825a4cfbaeeed9b431efe5943ab6970f10e7198446c7a59940dd4a74c4ef113e47867e56c2a668bfc01ee0941a726ad603ba4eafb1fd5fdec69f433d0bd6c25f40b3c22ceeb475999b130f7c792a15c2dc48de35b0ef7cadee780a145bf755e38a1a1839e8d8b916711f9ad027a8df7879251f4519fab8b7c6c85109b926cebee83abd26ec1d9ca32613b55b02e72a3412e475ae06984058835c29c19ecfa816777d7b623fbf1470ae064f7faf40ffd339a3a62669ff6e872fd24f7251b70cb992e498481fd8f451b749f6a5c84df9d20e9b469313d65991fe13c61d81ebc5741163d9f00bb6afd46be441d000876f848d7521ce26192fbe7abbea42755c10577543c47c434c0eea03bda822dd98a0a9b1566e9a4f0ea8bf7b40fc82af1d3e2066bacd12cc1b1ecf78bfafad5398279f70964ce7922fdacc518ba9e9b046b8aff6fedd9e69176fe35c213fd4c0feaf09ae48c9e17093e7166a2ed7678e758936ccd778144b2d96f5aeecb40b6d2fe2331632f379fe126370c87fe15ebd8dd700ee292c2607e4bc035ec2facf5d6d695cee7fa879bc405f20c6d2649143ba9c7e5236b057b3d514f3905c2f509321f4601f2b8fc46322da22f2beca0af6d81839b0b703c42439ab4d6d77632ef192b2edaede69dcf33e4e07e620e0a31ae34cd869d40193fbec19620538864e067ac1817670bb678a3f3fe53b23dd373d9c971b191bb1c78589e351bf10ae07f171f1d505fc8b75b7bf4ede316633651bd83f39ff42ac90dfd83bc47f6531cee3f2a39bc7a70fd44aefe679b963c06f30576643b4a7dc1de90476cfd7df51e77bfa0a7ce8fe6db4c4e740ddd034b3618e356b512b992bb3b3b7a93f1f74fe04ff825c7f5d6c3e9667e2176ab3e6b8e769ea0cb18a901b9c17130bf3b76bd43cc5df16929f7f9a554ce44fef35be1c6d25f9aa4ce071312076bf005b6072cfe701b99310e250ca9e72534c6212cc60c3501f047c2fe6129f7303b599caf5037372c8bd8fe325f9e4e4fc43ad8422c6ba6fc877251ceaf930375f02e7a6e4f65f495b91eec76783c6910af18f08b914c11fde84f7d731fc1d3802997f7f3dc3eb018372bcb75fae705ee1d959023ed9007c0b623aa1edddff430c056a1bbbff877555cee1ff35c0aab7f3f9ec776d17ebb2d7f6b66d55b9a53ebcd27d0a68fc436db22ff923ed187289c0f546fc1f39e08f91573dda76ef2db6a8036e77cfd7ae67e23302ce1cfa4d777abf71c36beafb353ee5f8bbe3df7f8b077bb213dcf77ff7ff77d7db739fce34e8032d55f15b82a8fb76d917effdf6491c2eec1599467d78c43a8110398674fba12f4e46aab0986db8ccad860ee0404ee66abac67d79904768639d6e103f52fcc445ec1a7d4331f5e1ec3f9d97a85b38adadbbb91555d71cf0302bcbd1e9d90ada88a26e5172d7624d44703a225e1939db59ac4e905fa2d4d4c9c3371b41fcb7f3ede8a1ed88fdaa3bddbb35ac77580ffdbb316ccfacd2c277174d69ddcdf9e8a489b8dbdd3e587d62ed0acde750f49fc485edbabe2c680dd47fbb0632cb69606f145ab0c2c6ad9c17dc2f895b315ee3b9cfb329b3fe755e5accb5d1516ab20e8d54c7da51d8fb22f508b923934fc8e6a03dab9880bfa1fa9463826f32c27808d7b328d5d02f2921dea6de9e3d97d64c54776b17e713fa6780dbce2d07e7ca8de64ad2ad0bd48879d83797c083e4ba625d000e41daada69bc0ff09dc7f7b76d4971ced55e59e1f3d92768355584263e37f3926a043561abe36946b2301cdb678384e911b87db5f8522e24126ff73fac23c3f6a6c630e0c7145c84913619e58f60fd6277d61de228a878de40c621f5eefb93ee6c9147a8ee4b922dd8a116260b026c117314e51f37cff0d1e72dcee18e890bbc02d05677748b5ae49b625be83c68d085fd28ea1e6e906e6703f5dd803a00e68bb0831f66b0d1e7efbf036c58d70341b8a11c3bc9aa9787dd878b77ece3b02bdc0b0b2e47a85f908f3fd88f33d8bafe3ee5c15f35dcb69beab479cef3e9cede516ebc2fd734eeb48dafa619276cfd5e8b9ffddfe48e78cedf4ec1cdcefdc7b1b613d23bbfffbde847519e47fe3735d1dd6507454b08f82900fa02d7fdc1d9e47d5159f1b34ce8070e878bf36bbd0fdc9618067933bfd76bfb9dcd574ff0ad775741a7ebf9ffd2975baff4c9ab3c15145bf76b57b727fc8f0fe9bb7e9da9a63bd54547fa25e6290aca9adbd7789b64a2dfd19f5e70ae219a9c226fdfef4e3b5acf38ff0ccad9aaeaffcaeaf12795d10f7fa8afada9e777d5d8bb3248aecf95d5fd1b71e1feff75b9f937def6b23d0ebfbb16adfafcd6e5d5f77dfbf4ae8fe06deef2c7bfdd7eb6bbd7bbf0def3ffd7932d6777345de3f3282d8793256fdb9520fdadfb962bfa5f2fd9283e60fd4f46ed75407b19a900df25954a08d6041dc5dbfb39564ed05da2fa22e5d7e4bdf160a7abc757436267b1ded510f6dae3bfba336023db518cee59e3d076b7b0e38e60bea03227e04ebf4d12f6778a64595f2d0470237c1700c6236ebe6e0439f87c6439f9f0c3fb46dba375c03fec0365d8c6d60ff897d877848088f9c4dd369179313fbb4b6441d61596fe81489ac47082ad0cd8d253f919794e37cd7bfbf3db36bb348e0ff787d29aba2178b61176f676b88572af1dd124bc60acb51f1fa381ac0f92ee30fcbe4f022cf00a1c122eaf7b05d5e28f8c8a62277b01da8b8ef76da6ee5b0a4d8af78d7eb22a2f37b0e6d058e27aeace43eedb06a7681bf4f728b7b7f73bd9957aebc5eb1cd57a98963cf95489f2b7dec14bba17f5fdee4991aa86057ca7a7c63a97a77df1e276bf87655f91f7cbb114a8d98595ef9c1dd37c5f6ecf19b4acba5bf7b7c763f26b06fa7890ff15176004c81e66fd17e81fc9de09511b1611df4dfe65cd6cb3ac0655823ee39403cdb0ee69da83ba90dbfb2afd0168309fc87d499cf37fc1fccf57de3290ffd0afb03b4dff6a24af33629fc3d3dfac827fae3f5eccb6b52fc765dae97a8f1b7424fefefbf9d9732c7ccd736e686219f8a7d90aea6b20fc2c4f91ff481d0f4b3bd687df1edf7bf1a4ba9e9753be1df8df8616c607fab4bd1be76ddaf2de0949d903d0918d18270c205e4efa4b68417d5926331ae916384be1bde7bf354c8c746ce9f6773d56f6cec1719d78cd531d85f676f63fdc3f5409ad0b0bf95e3f8eefb6ac34f9cfbef92381eac7f3960dd3fecff9f68eb21a62704cd3dc11f4eb918db847e3c604c0d6c7278de698ff95ae8974f6f0b3edce33ea4fbe6f2a76ba8afd8bfef2b8df8d34c1cbbf45b5fa5ffa8afc0373c79a0b3d3f59522f753ebbeafc23fffacaf42acbf437bfe5b5f1d4c8cbf1691837ec0c3dc2e86b8d7c2fe74f230ffa5ccaea8e706311cd16fabc477ba7c18473d735bf2d0cbfecb1507fdecaebfc2f21ff55788f991faf77d7f815e51f130b7a27fd85f8073397b3be387fe5a9bc8e79a2bc4adf8d85f905ff857fd857c5c27eaaf6e7c7afdc5fe517f493fd3be227ea2eb2f31874da62c650e5dedd66aaf3605af9f02f6d60e6d19d7cac05f2815e703f944fadf95eaa9736fc33dfbb3f5d71c1bb90f32aca54f18e044d96ba70774ba7431308af7eba8651f602ca6720658a3f034ee97087d781b6a7964ae6177401ede79b1fb1e6f5cc5a81d85daccc3f16a4aed7a169bbbb0877695940764f42e3701bc7b74da33cccb628d7ee39f3007c5e8bae3ad24ee30a6a2ddbee8f32d8b7b67e81bcc992eeff5436e95712d63ebb12a6de4d018979bf4c99959e0fd8891f9f6a7bb3b3ce6d866c06f03e35961ad88e9c7d7ef31d0b87c21ee11eacb4a5d617e3734a09ffc176f53c3dfb99d77f1e053006b37a39abfaa1bfb90bfc039c45c78bebf3b8c17309f7c851f9fcca7c3aa226e141c2747ce4181ddc66f9aadaa19feddb9fb3e9c67f109634fcfbf2fc16f2a744f60c06da734d38e8f47c6b38d485fe33c70644c5a6006144671468cf9da6169a2df56374c7084588a1f9666d6404d47af26d30dff17e32ef422c57e1428f500eba9457d4ac5a7f25da371b9337ab91d385323cc291e3e3127296df8e31938829c12754262977444fcc6465eabe92a062dc6485117a859805ccc51a1e17e02e7b68798db70f7bb91b96e3691e7c15ae47cb8e60f43e211ad8dc0123c25d227b6440c6c125a5d0c3888ec7926f3d5af6535d3000765044d09ba24f509f503703f953926fee1354be07b5f1b8b58b5fb79e630f1f73ec58038ae2f83ae51ec69383e69382fa4dfee6bde46f4cd94b0a48d01f14df7ecfdc118dbaf5ebc9d659d168b757691174aaeb5806d80a75ef293da59356b169287cdf210e71196b8e73b62ee3fd415b11d70f6ab4bcc87ec49df4c438edd13ea7120be1c301e42afae77addcf39f5c6baf2ac12b2678c93137cf2846599f5067ac8f2529238965e6d067c576fd7a874317ed45bc0ed40203ced68d71ef381da836deeae776a1be5d3f582c411ead5f1073a91107e5b306b5596ae028602fde26857a039b3ffcdee50db5e1b8ffdc3edf7e08b15c1a5bfd4071eeb2fb467d1545a8f9d4f64db84810eb51efeedea51b26133518bd77e9f80d2c5b91a6f6ddf7395e546ffbbf3db4919eefc39e99558e8af86fbf425d05c214a27e208d656ffedc088bd3effb68f470ade4cc7f7a6dc3ac39eca9d0b60dcc2fe2b84e418775b9234de8b72edec6517fcd081bc2b931a959743a7a32ef6a79c1e8847b8a5cb78ce17c05ecc1f695b8b5464a86f85cbda675c368df7b3aaf0738afe70a72e22ab0aface919bdeb3f897b6777c03a28e0615349073ba25afaee19eeb4c6b35e217ee61b60c4f475af8ffee9b3447bfacfb225c71ecdd9e12a8ab0ee59e0797cd37de08efb9fbf672eea7315ff5056826bcc03db9e9526e67c7a3a12bdbd3e406e2b383bd19eebec8163df56b1fbd8b06ecfe7327f81760de2b6f0cfa6fc9b7b4ff7ef423ddf86ec9bf99d6d12dde976f4e6a53d679dcd6bdcfda9039f2b8fcedd339e7ffb0fdfd7d96db7becdf5177ddbf88fedd7ffdf7fb7ab134fb3fe37f7288f7c045dff2fe87dc72bc6eb51279e510ee0a7b6f0ce3e6cd0a63b0dd8dd596e3beef66f9ef38fda777a21bb139fbb419bf3a7f6519ec22913f209b552d69a982b0b6d1eb23d8963e171dc3ce274c26fa914eaaf5e3ff4be15db3d793a6ffbdf13763e930bf98f201859af9ad4e90fa00611382bcd20c11a33897d0f760ed67200b61070901cb44ec13783f8f7d1133cc562afd951cd5be80c48a7a93188773c88ec572ef0bef5ce6b6617aca194d7d4bddafe1f7f338b2abdaed01ed6ae544b56ea5897a234aeac3b714acb797a2df04c7e96caf3df022e6ce299ac1b634ea921bf28d52948ee50fb00b91389fbf4b5c3d8255da6c71aba23aeb1b772ba76eeb5dad887a7933ec79bab3dd86fdd3c653969d58c8e4cb9abe57dcb42d6ed91c49fd3fa95387fe43d32b7deb527374bb2495cda734e1ffef7df3f19f5d945a71a621deaea9a7acae11e16fff80dce5f7e4373ff0db097b154fbc7df70a66f68d6fff81b521cb786e3376cd8b37148aa33e9616e705e20468a65dfae0f7f77d74fd16f94f53745e5cb3928398b65dccf02aea358c6777bf52b57e05b9e96881548ecb15cebf50bf167491c87eb61bc0ceb6f7633fd494c58a77d0331bbfd3fc57a034eb0303a771c06a26ef323afa81e82f6ac55e7bb0f9942fcd037b7d3af14f14c37341ef634a80b16ff96fa580ced924e5be0f85d8fab7f1e7ed7c26211cc276e6b2ec6bfefeffb66fb7eb7efd9973f2d704f5aaf4cc3b9f721ac4b70df86dbe3bb8a10ef414d4fd463b061bc6dac9113fde18b7d79d4f60bf0c3c9b87024e33ad310390b22c9dfe2ef9638be70d60a7d3995ce9550c4e18486b31be2185537195f696dfdee7c7301c3e7eb6bd3dde01848fe22c1ddf7903f779bf27b0c463b1da40faf426df215f9dbae39f23f3c9b73913d8dff1c2f7d9bc88fec2fb4851ff964dd0de2737f9d57d5f21baf4510d96921f1c44b2fae1a8a594e54888f432dd7c61d42ee2febf6a0d310db0af59caf6e534fe83c5404cef04e132a086743f23df4c3a417d736ddc851890b452f313e8e31fd889e2deb57844603ed653affcbebe14c96f5235b85beb3d4e03b131bc6ad1cdfddf7176d96b59b4cefda4c6db8cafdc5d23dd96f76a7c955dd1630e7c2dbe8c5ffd3d31691cf9cb28849fd0e111fb54f18eb91f356f0ac88791b767876c7ed7e438cec638c790a18efe9730cc95181fb78ebfff0c88ec2b0676bd19a19f5f6a5bae343c37d4970ea71a135435857f5f7a59467120fef6b8ae65497a1d86c09b8f602720ecc9ae94cf99e7360784e70e48b427e2f765961fca6e3b4002c433128409f3eab441cc20e9208624ca99135505b1f53dd90ee2a50871efe461f37596deb57813f4a0e12a31fafc7450cf5b0921fd28c771d1e71b51d4ed10fcdb0c6565fa37e2cbfdb5b410fa0ac18fdbb17c3fbf0e473258e6877006e697bbe4aea7e5cd1762367875ade11ecd351f2c3f58a3d650a5c2fae73a0ed6adcb38379101a12cbcc538330b89172a5d85263502cf055d441c8dad24588b12ba5e9ae75e8da8529aff5f95a592147ecc31e56ea181f3e8d595cbff6f2ed86df802e8ab6b6e8ba04eb8c0e0388331991a62097bf8f760ece15a88d7d2d50638b3315f521c370adc158d6f04caacb8c1073d72086d79ea47a693f6d43effa0c79ae289fa70e3b0e841fde1122ae4c1994e0c73e69b7be007ce25c49a54e5f44b69311ecd610afb379817dd570e45a424dbbd7d59462c510e7e330ff4f47ac415811cf4184313653f2148bb573433c6b867c5431ebf86805fe55f200b0c910d7ee01391778b49475e1d5ec5c9236450a1cf6e512f0250bc452ffc5f9ea78f1c82aaceed9544726f79a39e40a5ed1978139d2cfc952ee1f6a0335df42fe8b0e438135e6f2cfe510ea240d8e7c7d0d690c7d32e44195dc9fb4ff07f1c1c4dcf1e31a60185fe5f64756ed9f9de3a8ffd0780dc5e4ce1ee4b9a066eb95a1de64c3c7afb4ae46a8cd04f58d7bfd7efeb18ba795a827f6e901eef4fe9974e69b79dbdff08d99821ab870966e4a8a89cb7c653dfe07df081c426c5c6810838a6be440c07ab388da01f6c122724ed48ec859e01e22d78aa7f76ca669c731969a396a14c58083fbdb7b1cb348e89ee0efef39197ee29819bd87bec5875c026a8e1ebc6ad01f8717e49c48f9effeff6b5e0dbc6c885bbbe3ffb71d5783733be67a0eb645111136fb2fe67bdb86bf9cef104317730a31a06bd8c714d0993122ed849cd06baccfcd114b1f83bfb2f395fedc107e2272c888ef2c094f88fc757e745dce1ff8a8b2694adc7060db3a50cf42318b4203cd92989b777f824de19bb689f52519d60804bf50b715f7cabdb72d91eb4dda868233a51effb48eff813d8eebf8eae91cfb63e76d38f2d08056efbe416ee0b272f4b2e347d64953fb079bdc55c826ffc116259bd974a39946fcf92171e1fc6893afaa1969142e83d15f5edfd9e4fce8e9a467b85e24693f876916d6ec13bfa9f7cc378959269de85d09361f8733631901aeb3722046063589c2872c0d3fa175566782b7e9215fa633c420730fffbcd1bfa7f22c90e75fae401d21078ebfa61e136f52859ca51223985bec8bb05270e6124f02676a3796c041138fc60ce76b535aabf830ee6c553117aedfec05da5bca71889827599b2b6c493fa93f9eb781e68911f4c624a06794f00c77e84fffc1331ae3c933b01de51eb1e4f29b4aa1558ab5e13decd1cbe209a68a748708cf6d9fd1a68bb0664a7fbf499fe7043567076335b9a2fdfb09fe85199a25c5ba1653888529d7fd02f6afa0f12ffeb81ff7ad14891de70b7c9e6faf11bf6f047a05df48eb09b1e66669a666dffe2e2d472fa32ece257c9fcad953bee2791cc0083abd06acb90a5d892fb2cb0a3957b9d6e55599e145ee80590f3900e833f16f456813eec9af96ba21e66be3109fb61b111f24f12517216a52afc7a58978fcfa0c636edfc790a2bb18522f4fda5ddbb07186dcf0a85305d849d2ad428e01fa7df6d3ef8ee0126a52b43d6ad6601cbabe8f4f48ae4fabac9c4318fc976d8f8e9fb88623e9834fb1fe3c401ecb5862a6b28af4eaa6921356ee6580577c630d27ac107fc29351c25e8598c520de03378bdb78da51037bff6d11fe9be7281af1246d699f24dc5c96606c03b8373afed6b755b7af76382ee2edea5d7f83734ee84e71c9e7cb1dc7472e817eac02eccc12b56063a664c8aba88d804fbffc001b9ff644e468033b8f6c987272205d894cf24d4ca5fd64bfa0edb36cec4f69abb37da7415a1a3ed63384cee7a3cd0d3a88f36c87fe09713303a79e3bf4f4a8e9ce89e5dfdcb784fbf811ea0d9c1c6371b17bcd94fd7dedc5c6c0366d20670e31d44ee74ef22af56dbfd20804de44c4b021f6aa425fa5af3e3d4f8cc74789f1195c7326d4f336f6b808a96de0e71e30068beb4463d2167558e4cab6e816f687b0492526157d480b78b91dca7bfa90abf0f51ab058ec056c44c0548976be3ec4ba3a0c17c5c810cbd5d547053846f25d26f23604541f4ce7e4b77b7bef36ba36c8fa08c05d19ab445e13f0df4a2ee3d4421ba8fdc685e5bcac1ef9421eff0c1dc22e126ecf7a92af106b6579a7cd153634ef3a9c82ba47eeee37b78bf14ee0b7019e09a8f51ea056997ac07ae4b7459763c37cbb196f91a7e597eedee79fcd785b20bfe45b847959e01e88b7848f41ae7ac44ee3ffbb18c3001be70db0896ffe432d889c77ae8a7e5218a16633726c61adb5d4309c830d12cb7d20e874e699e1690f3a67a4ff0cdf4bf884f7feb3a7f176adc07e26343602fe2ed62bf2d144718dbf33398f524ff0fc24f638db015723b73f4bd4d193f74d809b7e1ed4e27d13d0fa327b6378a5335f05decab01bffbcc11afc932bf31ad2160ba17db0cf47b0c6b17e1b34cecb0cf834929589ef235e1ed505bde508b8d54a0bf71cab3f3f1d2e6bc90caebf63bb1cc2e58af9796abf1d70283eee4f46ff1c09783a048c6ce292f62169296affb02dd3483ca3943ae1aa7f863daabf363fe6ff362e1da67f20663885baff532963b0be97d4826733531c6331055c2247ff949bfdb5e02ab3a6cfc70a39971bace333e9a1350ce24fcac5258ec2c321109864f6e269a71370ba093c5c14cb1afa706b09fb849bee55d67cb189bb913c36b0afcf63a8e35f06fd18e011754d7bf6670f2f11d51417c994999a454f635a6666f974dd431c53f256117618e6f7cea1df72e474e4f609fadf2c2bff6fe3b33f3cf32e2e817cfe916e43ecb63cc2faf8ff2a36fae645e552d60170c9f12d7f9f83863cea8e1076eb9153b3200e81efb109770af85efd60e6b8c7f3628858d8a57cc6a2d802f782761d936dc28bf3f3eb28c761af284fa85e918fe0a798048b669f39c5508963e5043186253d3b52c41c2a2da7c173278a0f7f797d2f4f78f676648bf81971d1c89844baadf1397eb6eb7e0b227bcec5fd4bd5db1db22731b7af67f5416c471cf438e678167731871b9d698ee04b8cd72758bf5bd22f885dbdb503a52d7c042d6b88b9a1af138bb8be5320b76be348fc7b624f9003abf343673a6a862e1b9bfaa36c7c8cc9da77dae892dfc8f06ea3dbfdbb8fd742e963476dc79db22efe276c307abec47836b5c5b0365a71bf63cefbf8caff00f720e7840f3a19b582dcdb9136c23d901713d99f613c143883a0aa1bbc4ec6f4d91f8f6c02d5f09581fceec6a23a54e439608075e08825212e20ff1e27d1fcc67b510f632e62c5f1d5f6b17651f0345a37afcf0d23f890969dc632e0505c312f250f0ae6afa59d1a35d246f60d17b564b9abac247fa3914733b5fdbbb0bda319fd7f2f2fabc2fff9c057eb21877831450e52cac598814978357fd5ad95873d860dbc1d47edc7b76203713df5f705b555c2c6025d04e62d4c1fe2ebd610b9d9a26d817c6d7e664aee173f7a1f92edf3108bcd75f4af469752d67998abca79013bd4c975fc16e0790e0903b15dc5e8278b3c138cb7d8a39a4587ed9475675b7580df554e301fdcf39f75e47953d414f4864acbb96650eb12de4694bba5baa3d0df1107ff763d434c5016631dc1af26af8ac7ba27a9df2df6fe5f57f816c5db59c839f39609cdac7b7f7d31294947d09576da1be8dcce882b7f829cd0b016f508e3656f5ce2ce3fbc0dd582e19ad4d15f0995813807e23fc72bf14cdfd90b8a86eb0af06d26539c3dda32413c52280e0ff1b9c2420e777ee962c60fbf69d7ab8ff3afe1c8dde964c4098b634ff13fa83938aa8545750460a71a56ff1c09b4033e7bef9b297efbff2d7360bac25ac6e078ede2345cd400f579f8d31bfa6d0f3cfc11fa5e389eb333e2c29eac2b6d853a67186bd07b67b2e88f74d88dd1a9fbfff8fd2cf7bdea0a719337a64a7df0d074d067180237cb0e79a6716f059d0403359d21efc9c2bb7870ade584ef407e5ff6e569bf10abb5eed7cd11176922b8d39fe138a48ebabc37c5b9f1fd1d8073bf8dec1cebff62c9c71bc4f7392f69eff946363de09e8f1c6f17a92502b530dc1932899b98a65343ffc17e3f63ec27d4c5358eac6972f0fadaa5fdb51ee2b531e440e6caec4ce389b10b911b92f199efb527f5d9b5c05614b1f167f77679a54060e4456cf346f91c4df467ebdbed318f28fb426a8c166063777cdeec0b395a42d498b222e0777074eff658eb7a447b0eb1e1d4cfe00748ade1e6f70deaae74c09f7e7abbfd0df72fd4dac6dc48b12bcd6ffb056acb629e057d01b02d84efaaa7a6bb71a6df6b429d7b1e1b914bedf37b7b6d5bd6825f7f3bfc16ef9563041863ad425ec7a3d72c6f3ee8e2e49367f7757e61a81d1fefdb7995ccf984edf755e81ba9e3d5146c4d2e39db169123b81a968ac0c088f3b898fa63c96927f63b3336f92e009e7769471c3e59043ab101acf38af0b7a071d08e67e9a50df8b7bc10ef5b56eebd2efa9f5fbab013133e06ee57c5439dd4b8187471e03de6b154584f6651b91a62da5205f5ca4ee3607cdd88bed00de4fe4d4bd4768a4fe37207dfd7d46316a3a6917d2a23c2597cb57fe702fbe3886f95366d056790fde96df7eddfdf84fdb78b34e273161acc27f06b4143401bdce43ce45fdecefe827d68e7ed8c1baecd22715e459b74675c4e009fcced2bea312f75a1edc2c4f95229e0637fd768f6137fcc26a0efc2cb23ea3187c16820d7696b3b185f18cb5e410c8f83deeaaa7254cc8d3fd13c76b26a76cb215e1ca17e7d885a34ca0d727c668ef9045ec1f92ac6f24ed746e0ae6db9e62857c27fc3383b37e0e13e7a4db97bbe6f565a8af197505cd369c909cdff7eece437e6101ff7de136ae5f3787808c6dd33fcf860b29dcc73fbb6ada11e784fbf38c9b750c32fb99da7a9b91e221e516af4d019d4f6ddfd594ebc9ac7bbb35ce45d20475e4c0e4e5fcfad20cd7245f7303e0b7593d9a68478c1ec82f52651b2c4393bcf271ed6ae72a9db6f605bfd9589b5c1a7630af591ed7cf4131ff5f9872bb09520f76ea4e3abd9f181d717d2608d47b8ee58d6ee8f92537382f9a97c87f8f4fabc421df3b86af72dde7eb38f5a9a9b1ab5cf1c5abfb0cf065a7a76e5da9845da1a7d22a7687cc00e940ab477cae57ab153d3c1e7f16c8bfdaa0a1b54c6e808a3690461cdfab9cc307cff84be4ac49c8dec6966391f70663ef0b81f91579dbb32ef622e00435a00fe25b79c1ddccb33eb17d8eb779a46c7e287d852198f50d357cb91bf526aa9699e56419c22e5d90635125535478daec6018e42a91b21d6b4753f2f196960ff03ad2738e74ad2e6a23809cb4d7affe7fdfbb9e1876cfc2ab5238d5081daf56fffbec0ba5c83ffaf1e449ff1f22873ba12e7ef8366924f3c73a879f8fb9b9696a7afc7f3663dedc5988c201e6adeedfeba801f4efe53df4945bf9ae751017155f713f9a7e64abf1eaabc3d680f7e914ed5ed6e4cdf5ce285ad6e05d44980d6957aaf75555d7ed2ba82f560f0d020adabd5f680bc80c3ac7aefb5adaeee3509904bfc61cc430698efe81649deb5fd83f616ee43dffa0975aa723eeb6b0969a8bb8cbe29ed01f4aef224ef8d1a6f7b456ecfb93b65922b8623b67704986fe4ae85dc45c84cb0118c5c716e19f88085e5ec4adceb417b2306fddaa57680f7b00ac724d5b9dcfbd5dfc7be965d39a99d9eaf64fb1b83341a1ffae0867d50fcd007abc908719ae71c63e790130d21e71547a83be85e33c47a8535f14f817ed911f99a16138cc18e1a579effa6a885e4a538a7c35ad4649bd1f67af6a5fdc1405b64c02ad42512761c7156847a84f894e96ad3da4fc2a61b2e40f324446c6be7b3a48589b6715f3bef10ce6d818d375f854f2372d1d7b2c3b099227eb03d0e3d6c5b6b4f29430d6c781f754a500b08ebd124f6dd5733ab3872a977d68e679cd7bf1117e2781177d9f6307eb449ddca119c88c0bf6266660dd8deda42bcdac284f35c7c37daa058abc7f6fe371bf0f899554b6143f3edbb4efe8c2639dfdbdf73c513ba5ecbede988fabd4f3423ed0e0b9572b40ddbf91229d6a757897869eb43f76b9f144efeaea841357bf161f1cdbec447c839dfc3ccfb3c7d5959ff85c63ecce92c248e4c05f5a9c2d0d5484fdd027f5dabb16692655b9997f4b56593423f15ba03fd346a5c691fda29f2868429e22186738cd1df8ee7e0cff5207d1f475948fc915d58ec8498b7259c437124f8640dfeecffc579ed23a7256259a773bbdd7bcad7efff2f39b920d6c94b1338a322e5827a73ed7323916f715cd8e384a69dac4bfa8d75d0a9b4818a73878b017d08a91b86fad28315ccbfd6670a415ba97d56ba1d81cfc4a41e927225bb2cd4d6aa5c533cc23dae145833b167299902feb87608c4b9aa1e3ed1e6e5f1157db139b33da9e920b5f8241e4c39ca3577839a80dd6100982715d6276a877d783bfbb18db77fd1c613b5511b3e69632575c993b59d4b1b85e2ac30b7e519a2627e53b4c38ec6a3e17fef73d488e1ec6be135805b139c40f0eefe1c474d6413e73813fe83f04d2fa972fccb399e57ee05e738c485c41917098d13a7773e8ab9670a6cb57e18a3fdef26f0aee8a870d0c94a6f2787aeb74686af5dcd7b8d17eb3e06b02961cc694ffe8431afdc1d3c5f012e2693a18ff3964df958eafb82766334521117e9ebfe27c66eb25af2eac51b03c7f969bb5f05264e3556917ff194fd318b1c594380fc6db4b7dbe6ff646fdf45886dde949352e4993ccdd30ac89570dd009f9f2de5780bdb6100dca5e12216bc49666639581f15163168ad71764ba5be97d07e44cd62ae1db04d6116af27e2db5adf0a381ea39078bec385e0a1560d5fd46297865f595ddc5a2b3a5e453ad7cba1479c5ea5f0015f9bb59843ed3ee629f65a9c359c74b55eb05d11d55a1f3f17d152f6bde60ce12c4a721335ea14b5f56523792e0b8dc5c5d4400c23f2de22e7c45751793296a28bda1999b31471ca5ae0bc1113122706d6653945688bf9eac7072b0b19c644be5c057992787b66f9a4adc6a34161412d3a6ac291c6737af2c7527f91099b4dcc01bdfd4661abeb1cebced242d47c491d6837121a7a7656f99ff45eb0df233dbd100e72635c704ee3b8aea6c62be941131f9cb039cdc8bad72acbcdd27e6ebf2f694e494e39c1057141bea3b2620726f9168d281e3418377d6d1ce4d8d699accb77489be976b77f3edabc435621a6790ddf67fbaf3a621e52936d521bf0f917ea13adc077872bf17b6df80d1bdf6b7955edb788b932d7464ff812d8d7bd1d5e0d816bce881afb137937fabc68399e3bf11aec6776f3a7acddb784fe7326c6e0f13dfcabcb4b8bf79cffe63d437a8f76388a3d31188d5d99177ec5f388f4217835c4f91cdc8e43bfdbef07acf28ecbd65e894b4dc6dfddb3a73b0a71df4cb1d63fd20b4be080ccd474ee625f7ec4b4329a3dcde3ae12e225c2fb8d2884ba50dd304ba10302b84fb4ed740bc78eaf84666d6df842cbb23f76f50bce85e2599fc668f3c27787c6197509ddb83d871ec7a0242db654796fd7d8a7a73b5667db33d4ca9b9716d6effe92fb919e8e23e47f446e57c15523eb3ebd3f975bdbdfac72403fd50ebd9bf83f7b11a1a62cc4da62fb82bc1ae4bbec6c3d08642c0b7278d7769ec3599978115b8026be38bbf994ed31f605d79f17d652f2a289b38fbfe6fae15b1c7d613986179cb056cb746f129b9b2686583fa945bca147f4c94a758fd8c04f38ab356f577d524d760db64d5267f24c71c62eed9decf00a7b178ff79f124fc4bebc1dc338745260bd54620b9bd54f9cf19cb8d98e67383325e78bd8c7595c34751fdb6ca658132acfcc6db901ec00b7ceadbf04f79ffdb1c0ebfc291bc4169cb4cc023b49b75b3f7423f3704c60a899a64ee5fe07d847559ea7221f1189be9a06a685b6f8a3dd77638813a158baeddfd799d5a031b036ba3c1bd592897d3b43ed53ee5e19c6e643a1b1d8fa46715787f3c8e953570f3ea11185ef17c070ecb196d86de7838c175f5e15e2ec6be7e512b9fc520531cfef57e469117cf1e20c7451bbc088420b71002cdb4a0c4b66b91757e2ab2d5fe289cc14f70ed0bcf785de263702ed3a5e85b6dc3b94b5dc93d1ae016e4e5fbb229ea6f6490b1cf8f225567f9a55580f867197d14d68238878c22fe086179cb07d9fc9c61c5624759a8ea07f6932f499b036ca9a0d56d27636259ee8e42d12190ff32bbec3bd127c93769c263ffb24256116fcc68fa44f3b1c338e1cc4f07faa71004e7f230ecb2160a5fcc5b416319a403bb46d39b7fb1061852ae73887dc5766a1a69872264d75c40e8f4f14ebecd99bda0ab5f09bf245e21fd8d1dba5c87b73c6f9c8f5df8acc6db14b7f6d2f6cbcbf4ee4dee08f73e0d9e7a02dced565db56db8d9c2f7c5f781b293ee41456f11272be4ceddb985c7040d44684b9bfa4c01ad7a414b5cc62ff175c9711edb56ee3edde3f3186055c908bb292e381d8e4487e4308b586adbf1abc42bbbb75391be2f747c1e88ced7dd54696f095f8acc1f5ffbd0e15cfa2feda8433333acabc0dc6c7c325f2a03b0be485e9f98629e49fd806b91ea25b6101476c530c3bccbbf037c71d0f387130636e2a2c408b9b37ec26cfd2e2ea6d3c38577d5b6a153088a5d62fae5c0376508918d19cf8b7f50af7898477b54536708f385ea45c91ab3652819f4a7d877f5bc75c813317ce52a8036031fc7b195c06ed3c4f15f607ce60736eaec75ec43f40a7c79135cbf6ba98aeeff2d72b6b766390738e84ddc582425b4f51932d687df9ed68d93b3b85167dd1b6a9b565da791c9cc66e30126b66153917915b48041716e4e9ae6013d53ab423598d47af58fb5420b7282f112bce8b48f82b6651390af9465a85739a677f4e82fbc68f876366c2f995d8a055ba54612e9af1f4596e997c4f9befca058c9fb6b2968f676394c757b387e53083add2e33b1275991fa8b31fc2fa2974c0922a72ef5c860cf14cf33c6463a8d31fe70973680fac20efa12950cfcd1798975870a9651c55e893acc55914da0e62d67c589f6b5707ccb6c88d0a1fb011cf96b1800fe97bd46e8178a4471c628c1c5f5c63b80f3cac45e4b40e92b58b673b6a6afbf1f013705c8b2246cc8da217582395943b199f2ae3c514eb38b93a47ae5ad48c5646c702ce7e3f3476c14de0279272c3a7623f899daf1c6c253f74dadf4fed1ac85b1b3f2a5abfb83d6b6f998536c7e9d01f37b72a85a6f4ca2a31dedba4e8574a1fa9ce776be14fc7b0b7c6680f26f60b7226ae3688fb8a5417b0a9be9e4a6e39754d794389bfe4af88d5073ce6eb5c3b3dccaff7a1d7e799500e7aae1086d39163847ab747c082fc6a701ce5732966f8962a30f689813847aa836d6dbd30b21d6e3acd0f7adaa70c7c513f5952fe00b4b5bfc5ad73e48f8c461fa40f180f3fb01621b314b1e6b2ca39636ed68f8babdfaf85549767063e8c1f1c55c02621968ff8c2fde078c333bf34d7b6ac8f11b6e4c24bf643f81ebb8c5569f743ae894fd38f807e3bbcdefd36fe85f5fc36139a02922bc9ada446bd77eb7e2f26a50df61eac09e410f449eb6135c5fc6dd4b0d6c6896c47da18a951245897c4b5aec6dfbeca6fe23389e76393bb1c63e2dd50a7ef7e9cea339e5f7e125da8f663e760bc62e076396a13b4b0648c54fd8df631e215ed32345033ad7165ced3e41b7af79b7b437ec7f2e0ddae75bb565621f00ee987716ef229f967913de5324768f9b1a22296a2ac9790cfba0ec04f9d665ba92f49fa45d6ec82fb46a0a7b1d004e4f67125f9e00d3937f81eb53bfdf8d43ecb1773822f7b79b58e7b64de0077516c7f516e05f0742bcb51d027472e593f2cc55af6a3650367b75deae0bb46a741893e425c60ad0f5b84723eb6f6456ea2ce38d74b0573506bcc65d9690379f5481902cf931d4f19c445f8516838497efe33c4dafc5283e788f670cddb16ca9379ab6532e7358d26ddef0bd3b730f758cabcee34dd95b8fe6da98b4f981b339af201cd8bdd9af69dd69709a7dd77c83e117890bfe993eb38376bd4de1f14d427cfda70d28bee591a68d8ee05762c786c53a18b35d8ada3f05b8e3e2c83f933bc50631fe87934f7eb9702797f424f45cd5f6137822e9a17d58312752f9b75f364fde860b339ab297764fd44378fdc8d0d7df66b902922df62c6e313d82391ce14c48a961788ad796e63935d8bbc6a61e85e9fcc2739b69377ac17ebbfaf418eb5fe18c9f1198e3313b505f92d87bc6998d8c8136217db218c8f7a455ed16e7cf8b13f3ec594a136fbbeb0eec667ee71f14ca1f544f88eaacf4fc4cdbce13fc46553f7bb9d62a8e003ef3dfd37e268ec2cbe4eb04f43d0af2927078933955cc9d31ce64ea873c4e8d8aee0d7eeb48e641ca07c687375c33d2a8cdf15faee5d2d7306d1fb006b751ef1268cf441f9c9a5ba7a76c3385f2e62b41d46884568772127a87aa13c4fac5c497715b0a459351baeb0be2b71f1bc7c2b4de49be08d0bb8d0501ba03ea49d87299c99a32f063ea81f1f35d0eb458cf98dcee2c4bac99c41f9e2411d7aa89366a6cd421be640a9c522c6c0aa0239a022f5403531da5ea17c76e8c31a1a3dbe8779d149f3b6ebaf1fe24c8a4b676167b3b85b88eb347c9c27581fa27ead2ca8b3c59cc76444f57702e3b1635af047e28841e3735c6c8c57b0b14dc20a20c6668b635abeb47e95f41fab01faeacc16f137c177007e3cce37560226cc8f979754d97ff3b14a13deab1b16fa63c247347d89fb5196881db6eff83b82ff55dbc49adfcb3576d2a48de91b0c6ccc2029dbbe6a5a3bbc549c41896b39e1f8ffe6aa72b4f6ff83d67f351d15eb639167221d63bc585c2f7c6819a7916b709918c38ebb8cc9184d523bf3892de39fed1e68b988c76ecfc7ad7743ec35377c7e30e71346fa32e99f5f03ff0ffece0c4fdd834d3d92bc122ae1b199c74befb5e1506fdc717ccdc5ff8939f329bfa338a3861dc517acd95dbe89a19ff39d7b9cf0c3a5e00ebbe31ebf798dd7c0788505e25f797964e87b680a8c67493cd3a5d47f0a43f31def4d254e471dbb1ae6bd8a81f4dbcacb43db9b4c62596cd2807fc4536ed7b806d5ccaafa38ad3d6a7fca7bf8e2ee3c8e9ee33357137a9e0ecf831cbcd80f2e980bf27bf9aaee9e5ab4a15dd3c5035ed8bfcb39e17e317a81ef337cbddecb73de6dbc5d8acfb6cb78e83c5e1b247c8f3ce8c5167fe72ae5a9f4c39eb0b731c45c04f6b636c2d03603f479c438f017dac71bdc9b0a5953add853d08527fcdc8ab4cb111bcece3ee234b5f24ebbc98f67ba6b3dcf557531b242bff70fdceb3deeb2a258f8b76720f780a871a9455c838dd1a7e5ca0279437a713b06678eb45fcb8f8777e9f1d37dbdde013e689ad9bf81eff87e7cdd0d70aa7db3ef186220a7ee8ecf208f3ace27985779de4eba36fa75cd707cc27a873cc45dffd57bc887cd5f1b8a079c1718538c4b8fe22432f63f274d6ded0a3cbaa59bea9843734117ddd116ddbc405dee03cc6fe40ba579c1d1efa4f918a999029c4ed29e0a98fdfe741c5ff503d471b8e755059cd616db85a8f3a10d610eab035a7f7a4d67b00b9a15be3684b8d32f88b596ae3b817b117f15cdaef48ceebb3ee1bbd823ce28228cb89c1f10b730c2f8b4f33abd98f65d156b8ce7f99fdeb8c2374fe5b58247605c12075739409ba8abdbeae7594b1adf32ea6a0ee53986dcfebe516c415f8d47839ce616833d8379ee16fa4b01feb758f64da1cc9a67fdeb779a7853e05ceaaf19f55e47ad1f5b278d0b61eb756bfc08f9dd43c888af4af0c4897d640edabc7e30c23ae679775da73f067e8e56c05e942ab373a1fccd758a6db3c8eb5dd7bdd79df2d93f1a078871b01dd472b5e7b1cefee6bad2f0457d19c5269c78dc615f4bc5718943146c3defaedf059fd31d7fc54ffdbe201bbb3c968f3880067de5e327d9b6b75f6043dbacbbb718621ff85a19832ff2995977f788d849aa4a2c55869acf12a3beece5c9eb70521ee0fa13d4fa5dbc0ddb8b9c1d774103d1a1733fc73abe27f91c4f73643e92dbb7c2f2d0afbb604ed93551bbed59ce9ac7f946c6bf72eb90a066635ea19e2aea56973be02748560217561a5974f0523db585adc6cb3dd836766ecd14e4e89336188fb20d7baeef12ce74aaeb16befc9d8db5f7b4aaa17cbf89b5c6946382b1687d477bcfdbeb7804dc3643d1774154eb30aeaf9e5cf38ff92acc7399fccf09df355fc464c348de7aeef5f8fa658d10438ebeb83c04c0d3e736b6f3fcdc9b5d697f6ee019fa9aea46fc0078aba56f3de5f7e7f030fbc16e78251b85eada8c28c4fb1ef2757185f16caab39a3732aeee69ce99a10d18ce3eb1be7811a68447c823c0ad69a3ade8736d6dba533a77550635e971586954a7b57300efcb7670fe998bc8f9ccd00f8fd7803d7129d61c86ec405a4ce3768e8b588899ef6cb465ba1afbe4f081fa1b0cf6d43029146963f0a3b71d9ed17674014f18845dfd31f0ff1a51e87d8ab33fe4afd118ea39bb7ba70bc018fab7910b39a3879a3cc2c97ec3d8a2cde73705621c6ede9f938a319cb9cec78fd7066171c1bd7e017ef0ab72f8f076b60adc9b613119393d7f41b4b3d82026e1a42facfd318e6cbbb01c258798060f19faa0f29b14db59feb9c379a85897d1c3791c5de2ee15fd1a670df8bf713dce4dc0f3c516e656e7ab70fd3a9f48dd6cc27303ee3db39c0cda782cc0570af5e5d07fec6b7d8631cd79d1b4cf63869fa4e3b9867acc95f43f447edceb9feb8f7da1b67d910a7e2427813a8dbf3cdbc5d9d5b031d44d4bfec9a83c7adbcb05b42d211f509fa06f2ebef20b6d4525571e6daa629013f642e03bdae70deefdbbea82792f2ef7cd45f1e3be493654673bc9f53e056c23d9a24583dcbb11701b44caf3dc45455a47b096ecac923ecb836d803ec9f6c13679b0c52be4195d63ec4ce0fc1557c1bd224afc866afa77e82fa91f123b00f59832af0cb819ebda9ee151649b7c473cc46141b88ae38df259fa5ef1643c21c9455ca03682788d785c613b664aea67534362dea35f17c413fdcdb87d114fcea414d79515bfd2392e3107e65c71ef7ca21fc732b1f0dc09573bfff5e10cfc7aac99fbc9ff7337d847eca5b3731057e59ebd8d859cf87389cd92da650c72383168d545fa0ce3d04e11e2dc711b26b11be622726f347e52e7537267ec0ee8c30a9f68459ae73339dfc2b51584bcb5cb4dc1fdbdf12117545dbd2a222e215983e978f3493d96ba02a81fe00047c649d44b04ca7a8fb97aa8d5f8f47692b7c1bb8dc61dee5ad8f69f395e2b73ca076f635d69af88816343a3f92162d910f327dbb90c7de40dbc6512773ccdadd9cd853d73299f7df636d519f1c78cf204a5f45d455c0fedaa35d6d7faeccf087091d6d5c539a28b7c8823f68a1d699a1f809344f7fefcfacbf7109757ef3d73dd37bf63502dcc4b3905f17216527748711a061c18806fdf2c12e4a34b09db107fe70f1e16925f749aeeec2fb01fd76863427bd24548fb10b53b479f5c1771e3077e1bc18d22eec5bcb3fbf08c40c49cd81971714bd9eeabb7e107e82f3fd3f9833ea1a2bb58a79c54035993773c4bff8eea03ae4bacf5d8f157a8079f616e22927c84e710eb83b6a737c4ef480e2dc7e8ff3bb88d62e44bcb39c6f48e80732fad8e5ffb21e7928878adf88e2291be8cdfd4e305d590a8ba8b7a7dc93b6012d2806a57a2d31430333dadcc9ab847918f3268441d4c3bffe2571deb4a2ab14653cb7da8934aa94df77d2beb5340974df051c03ab4bd88b94c704488e7aac81111c5277c167be07d7ac5986f29ea046ac3d786568e18e67ff60c57e4ff9adae401e0d181d7ceb59c0172673cdcdffa9c03e4092a5bbbf63f6af3c9f043debe4f60f131e6bbda71ac99fdc4f78611ea9ee11e9102e7869db298f834eeafefc56e43e11f46aad7d827aae912efb32f5823f57d7c6a5cc71af2ddc4e14f6b45c44f3fe650afcfc3f7d676665ea42a5857c291970ef93043f6c3dc107f028fe308db62610e32939c69be3c63aeb63ceb7c3b9f0c3156752a2ca90de84b9c80ed451739bfc036e70afe5bccd7e90a6295f134c59cc7cedbadd78fcf4b2707e49a9a77bc5fb28d3e3f60dbfafc847ffb6da9c94c884ff2f9d41e0bdedc8ab461dbb968ba82bf56c61e05c63fe1630ff32ced9918d7e315fa74c0f3b38cf7d7c75c4cae10bf50bbce660beeddfd9b4dd45768432371604cf1b6ef8aff07ea525abf4b4d1b375ade71eacc5bdbc896fb40db4ff1e6f7d9ffd3c7fca794d709157b8afa6d299e8dbbc3873c0b18e9b614f14162a278796bcff4a0ed73cb3917dd5e21cfec9d83982186b67298b803aad9989ca05eb73ec8fc950bfb3773dcadb4e9fcd6f79fd886c7bd2693be8689755bf9c6019d811263a79705aeefc61a02d76d257d5a2ec749dd43fcb8cb17e526472c84b83f88ecb7bc9a0d881f36ac40778c05afa4fb65df80b7ce8cc1a6ca104310abe3dcc4bd5b192cc0ffe5baafc19e0473af34c2ddda94ebdd1dba80b126fcebd336966739fe27ddd37e916ebbb43bcb8b0f1870dc235791437d123615e21da64522757d433d95b915c43f87ef67e46c5b04c86f502aa5b44d5abb0ecf548639ba12632b89fd1910d6648df870bceeb604ae8b223ecd116b897605e5fb148a51430d0c53bccdb2414cb6c4140daef84d8f76754a5a0bea1ef987579673e834110e9d5ddde1a7af2eea03c5157217429f4b3dcf48ec99ece835c61e7da7cc863876d3c5c55cdd468c8ba8b117e3ae5d54883b3b2e175ccc0ef1e980bf51ea871ff29a870af317698f2348d49520464ae6b3ed078ee02bfae68fb5f469839ca5ea9e419ed08d6617bc3e6aac017298e73560c0754bf164ad509a4f318e55ef806f99110e3c3e409f8d302e24749bfcd6d755fc03f1a8c603c086db73fc0e5fe0cac5b9a642cc701a02cf03f90c1b8a3132863e1a2f15066de709f08ef06ab890fc904e29b9ff3a9e4b81c311e3aeb9b29ec10cb7071dcf05d196e85d7f8e93a80fc8fdcb134743ccc97d3d0ec5bb9d558cb9b5d10eb978a2b0c2981d2fff604e52d188d33bdee359e7640d7241d3f7d8abcabfe6c87daf8b3a84769f8b28af7c032cb23250314e1785520f27e0b0ff3529e6519a12384b60cf6fbcdd1ee7339f6b887d180d17d25774569677d79f0bd48f95674e9c531cfe97c859f83b91df7916c3e8fcf55e6d53963892f7b5e1e352d4e095865f1df6a8b917ea11ea40b245ac0247ec2f3d153cca367727d237f3433e6626f225d80ae54d1ab9f70631cdb74fc817bc85e86b2725e1477ab90cf1a7ac1f60582380ebadc1f63dee4905ed49c5b5ac7ecc69fc0d5f58a530c0ccf9ba87f363cabec50e80434c07bea5bae8c5843adf7895f884a167706efbcd6fda1bd906f5cb4bede17747eaef561af0d644bdbcd07cd9e74451ae6b88dfa1e6c785c630b1281ec4608c3ded6addf74571f9cfe2b472cde4b097473abdc35f6d38e0fbaa3ed6e788368d6cefe582df9ac2f95946b3f3c3f929791dc7c89570c0ba578c2db76720703ac978b90f7fb6f3ddfd3edf438937383ccc03fe432c313d522c51bbf6638958274deb325766dfd78bc070c978424e3991eb97877c80a12fed115e6a7e3fd76333c36f98c9a629f895e5d3b194fd5c4b6dc0fff5fbb5b5c57629fa602f38568126e347417ccf59db695c3ffae3c41f3f5d25e0bfe887711e431c91db5f19ea7334ee0079a6fe4ddb0381e513eb44e0b8e4d916dd9f6da8dfa8380a6a811563a9c9ec37d216f1c94e73767dae643f4af739626c1e6bab63a85f84786c28754a80238c1d3dad3c22aea698807f1348ec1eab31f67b38604ef855037e8e78347663c8f3f1ea180b9d9f08f9e87702d79ad8af7886f76cd23f786ed3dad24e67f8e6e96a8b9a09969a0196c795f1bb8e0b2b2ee7f00cc9eb160dbf7efafe27f9c3fef73ff28a1dc2dbd373ffe4a20660efdccf1a3ec61af542c5f329fd82bd689a212fbcb657719e74f5f9d50074720c3f5e6bfef8e19ec4bf7888fb97fe9be346f77663a6a1aece23972362dcf88dce9cc4468e5fe5e19bf7cff9bad59757e4e66e7eb7be59728fafb3af25d83d805bbbf926beb792bed11ddf13affe098eadfc737ae4a132a28461db2f9ec4df1bcbd045ee8bb7850971a9e8047e92fa82353cfdb6bfde50e3fca42cb00e3a893ea5afe85e7d58f76918fdf86cbf29c798e3e531d634d4580bfd86f511b11cab795eb129fa851d170cc60a4b15e398413c1c7f5f17c30370b80eeeed8d5af79fced34acba8a66c4f385ef48558e49c49774bffad0578de6f0f84f5ce40c7c7d7d4f9dc6ef7b8e5ddb9929246ef11e3d009f8c77b6f7b503b2e0cd167da0a391f749ed2992630a427fd276ed4bf5b6bf71c8287b7e767e5fa441c818457b00f3dfc9bace9d1290fc9e45e32b8f7cd5013e89b6f367a21be54712ec9e72f25dfdbc5d38ec80f9a96b8afc6078c87cff37808b5507c4f7a29617d223b06f759cebfa09ee86e4f90f97619dbe1626ca341aa206f6f2a6d2f6e7f208e3ed0d42fe431c988ab4f1962ce3788479ff43dc2ae11f3fa469a3ddd3a4a81c7d8ce42e4fb1e29cff04ba9ceeff59462fb0338f7a6aee2fef5fe07f3bb103e5d6d144a3bbf4e80fb9258bf2272f639c400013b310f4251afd9ce47a33065bdbc1fd9b8ce6c2f7eff146b87a74619fe15de86c599897c48cf3920f22de216470dd4c81bcb0462669c0fbc3f27e4e8c475fb92130eaffc22ae7b6127d892b7e21fd9817f85c5e17b4ffb859a4dd3c24c5f7bf5474690382ef0266ba4fd9930b0550fe3f476bac7c9c6570d71b2a936b4fa7b7324300bf77852c9b9f3c4ee8adf87dfd7a3f5099c407661b14fe0e3b773eb82392c79ce4dda7dfb873637f67d9fc5eafe275ecca27ae4a5b6fd5cf07651bd483b2fef73f2d3147940c4fc0926d7ecf97e703de2da2c489baad064ddb97bf5b6ea116b9df2f8809aa44a0ee759207d997b5b523b8c4b39bf8d48ab312ff8ecfe69fe300e8bc9e939ae575b13f6a3d7cedb42e6ec4c16cd9a39ad4b15eb50e72bd4db08ddf393ef801c9ccd5822399c82b01e17a863817cdc894ffe11f23505ba0d98caa879c44f236efcd14698a3367274ba52ad5b63200e7de86d8c00fcb26b44dc0512f3b98af672fd21976374bcb4df2bea3a648cd617bc1e7a8918ac90d66ee5fdc5da7df4e1fc53f094a356d1dd6ffce8b62f62fcad8d9f1866611ac8ef7f16d7f6d6026bcad79fd6422872e93d3ee9840fc06e07ee84760fbd20e797c8a3f83cfd742de4b9efe187421bfb7808981c7365313c9fe0797cef6d803f2d2ec74be4ce306b6cff27e536f4c317e5cf63a96be487a5e96e2546d18bebffc62eba79cdf20c764ce3edde892fb60cf159954ab6a026784b74af6acf0ba6f5bee5013384fb0df2482917511b19b229f86b3b6f63a10df69669a88f52de0ad4638f15d0f728f43e76288caa2697b55ba60735129165ebe59d3695edb8713dff71cf4b9c71167b4ffd9d3234be634be223683eb22f4f8f30b718961b634675ab8acd1e39b9b3ea39df41aaa3be3bffa03a42f2a97a3cf61af062818e5bb81d128f86ac1dbfb36987c8a9f9adb665836319816ddad9b6eeb4a49843771ddfa3de9eafd7e8dfbe958203ac363ccd274da215d5027636c82abeca76aaeb176c5394d4c033596719702844fa1a63716f7904fa668da33fc62783f031ce671c7f38a3f08ce8e38b6ea86d55568c7ecf14d246faf0bf73299e28f6ab9d64ec40e41844bc533e2374ec20562d890976f557e5bb2f5eec6cf00bd4d302789172cb1db4b6522ef82d476326d6592d348719e6e462a8ef17bc5323a3b0fd04f993cbc9750e380ac9bd13550a706d045ee21ffe159ff16e89b1a637c9edf91b6b58de8a1b70a7c4f60b6091ecc27276199c8fff64dd798d3d2e13acf9907c354be9ab4cbc647f26dbbe7d57fbbd8d339e4f4e632fb2356ff79b7e2f8291c0487a0a7012c6e5b8e8f6cc2fcaa7c8b311c602cf6a795ec5916d46d21edf7bda3bc68c7c17f7cbe8746d6dd254e0ef66dfdeed47d77ff3ee6969b9da5c017f59e9e519e5defc605f948f7e440a739df0ac45955efdc968e77f8fb7db5e624f5695afdd9f3dffea2c335281cde5da7d4d484d36c77f16472af79ece3fe53e931a19e9e78f54cc23836fd7dae753a62d8147ecf489b59c0bc4eff573417a6f4e75fee2578e67e3834f1624c624c31807709ef902b77dc78771f9810f432980f7a53ff659ecf5fce588f468cb06cf9908c7655d6c80334ddabd62ddad42193ff113d0034ac08f8f8763cc1d45a1ad809f9fb5fb512c79f11614cbd653eccfc1fcaf62527a3a5e4c0fc8b9aa227756976fe4376ff3dec0f783a67afd9147c7c71cf6c0ebf2c3c8dbb30f1e72d83e7f6fd88f3544d866a561773544ae2eda807c5c21ebebb53c9c89d5ed8718498373a4d77714e7c92d465cd019d668715b418c41ba556ef7ef17dc7d3ad53c536ca1d0114fe8df4e32a7741b8d4bcc69f15a03de6223689e7dd389f2a5d4ce90cd96a121fdd3309d9516f1e8a4e546e2d698b2de648dc4feb36a1db3a6444dd5dbbc3da7144b0fac13f4bda50596ff45f342da7857afb2d4c0b4ad85c0dc89b8fd8e3094a181dca57358ff6f227f1ea6b3c2721eecc2fae26dd2f1b7584c83f3886d4bb2079617ca6bef30a7dfab1bd77ea932d6580cbddd6fb035cb099ccb129fae589750357481cf4ad2b7256a56edd64739375d5883aa936ba739c43724b6833b46be452eaaff2ea6516e52b397bf3523136bcb9ec438227ef1b6a2a6c696f80c893dc8703d918f057e9ae4e8535780e797bc66fc8f0b7c1878061713f567dbb7b1c7dd79743acf25379fd93e2313b5ffe9b8188f5eefcec0f6ff355fd6b24f6d89898ad76689faaddc224e8e40b7daf9530b0ce1f4e9b9b9c63a989fcfbcd6def2cd2e3fc8cdbfbfa734c2c437ff0ffa6fff3f3ef3d42be61323edb0c398d9df9f79b5e16bd7ef679ef678e639c71f78f52fa42b1696146bce31f67593fd85788e32464ebede992774f2c49947e767a85743e075b9415e0035f7bfbc4d3d7eccc7c502677f3272c40473b62f685ff5bfb0bffc3f64e3c1fe5aaba4a3dd54a81d40b558be76b01ece7eb4131fb5a32e2eacc9fe7992aab28ea0b098d0959367e910398b6f6473860ec48b7bcf796ccf44f85826dbaea7fd6f0c245fe1aea0f117fcdd53a89b94fda1f9a4cbd87dfba9fbf6d0ba418df0cddb15b7de9a91fb3769bdfb47ca794c4edf793dfed1fe6cab816aeca40d6baf25de93fd81bd0bb4daeb590cdc912b933d70473a9f8b88f408532fe27119a613c9d32579dbf978f4d969e4d422bf39576612c3ddac2167592e8bb89e88da2da9736fa7952bf7bab806dbef30ce27a015c2450df1946fd503f0c31d647d07fb02ce0b2ef65cc9a56ac4ad7f1db318e66f2d6b7bd918b9ed78b2469cf09b3b451d278c83a8fb4cc614ea42f2b8ff010e54274ba4dde857f68e340e65bc3e927d7587cdb2c31dc58dfd45bcb61e6276f672c74fc86f09fa98e32c46be40e05fd1d0f7fd85389193b721fee9fe3e73eb7231f600b9c380a71f7c7d11ff9458d886eaa014aa736d7eeb926f876de1be2b6a47c67f79df0c7419d9f695f80f81db46b19a9f6aa6bbba9f7e2dd13df7e40af1868903b932e59243dd6faf86685a54bfc07e747605f8c51162d7437e415d76b63360ff38ea8525f6167bd5bf27b41a198b6571d9c098727758c8779a7cca2817e0c2fa08807b2e536612c33c19a25d317737524bc24bca713e054df468f452506eb1184abe1aab1ddfda8bec6a65a29efdf1b6b0048fa0c1008b5d58ce67867847fd00fb9d7bf609bfc40d5f95f32f0897c05f28f807b106e38330fda10f3cca6c897c248176a5fa0277876be324cff6f83ace4c06f8e6722cd7afff51d0f9361bc83a1a26ebb555e3d6f689e0d98a4bd06b620ba9d7a48a7d09f436cd686a1c217637cfe32beef15fb9e4279ffa423b9179c48fa7975f880f5d4d866073a94d867aaa9a7a22aeee6dfbfb48c4400ac42168ea11efcfb757a14112f07d37b78027d1d70e2a9c292133810b4277c66c0afdc9d9a050109b4db5ddd37cca5f310e2beb2c1c8c931db0ff7d6dd8b6612e72ef53590ff5dde7a5dae347aece2b9d57340f1eb93add86781fcd14b1b39d66ca469e7d7ebc1c502d986c139378467c67fd51c8f69859351b94a0b3f6ff90f766cd892b4bd4e85fd2008ee6b18524b08c0a6ba892d09b06a23112830d36a05f7f4395992561bb7bef3ee77cf7467cf769ef3642483564e5b072adb8252e50995b0f41ab28f850b1d86c033d2146f8c0c8bf6855be87ada987b21f87c597df042d2f0df79f15a747f7d3dab022a3b952cd35dfbb0bd4df1e7c47f1605d7eff9d6e7d54f6725e917ef9483df3bffc7ec8652ecfcaeb474369f0fdff6d0c5a36a5ef8736e93e1fa7f9dea29ade2577248fad1dd77ffb3e9dbdc09aa0f1eb82ba21cfeb58e1c289836e5eceaef89df3916c7b941cafb4df0a43d998571f743d2d6e94847b98e7b6851a1a9323e9c287c6a1fb9c059cb76104b6ba52dc0460abbb675f3a5e4b5a463cd1b72a47453d025f6cd7047a2fd28af21de715be7b3567144f228ee23bbba781d640bd3996da7fb146be8ed377b6d88adb8d09ebbbb97c8ac7de4bfe3d67d81371c8de9df5c4df88fcec6d632b7e00c402c526ae3be17f3c698a33f10cd871d9e78b7c2f74ae9fe1bd04273ba4ec7bc07f18f4ae11ea8389b8b95fd72a7622cdd4be6fbe42df26364b1dfc36312b1407d5179c03f5bf0feb219f7979473d97b2c2db3f907df6a536afeceff928a1b6ef16433b806b027bf92c2e7edeff3dfda563eee4141096c1ac75e8916856c8f5b440df285cdb02ce7623dbfb580be4b71f6faa8e2eb50f240fcab802bbb55893ee655abedd8fb7e486fd50fbd554e73b1bac29e98bc4f77d8dfdd9093d2792e346e24e67e707f4f7a83739c6f5d5948ab7457f557a1d468d3d8dec359cfdc2d85f903ee5a2945cb25ddc607dac1527869b508fbfcf29a7ec8d20c7249232253ffe7ce6c4c196a21674222e0c6b5191a147701ffdb2268dac9a1dfb676b228acd4accab64e94faacb2e7281385de33a02adddba0d4cdfc4f8f0edd3fbef83fd237d9765ad87bad6638ca1cf07ca53c511697e74e7fe953080d6a7770a8be671f09c7d3d59f51ba52ee9640bf44f86cfb0901ab6127391bd914e54608a13f543e17fefbea3def976a6ef1881b9a2baf850d7f0443acec053c20ec1d66b237ab72e1ed5adf7a55392265077cd53be77e97d8f943b11c8f31b74f62e69a6b89eeb20cde859e7bd7633f424c7f63fff56b9b708b7772d885b7977bc4584ddd189b327e41283611ca703bececfefe7fb7be6d13cf0ee5eb3d108344990a3583bdeca1e737a461c5954ccbd053ec707c775cf5ce9a7ccc556703cbb3421fb7959006bb2be95f5ddda67d2f7eed7fe6ded209e24b64ea0fd154a2d8a48bb9e0be4b0aa1037cdd1f6949a37624a4bae269d86f9725e39d847e1fe69bd06aa6fa041bd63fcbb6ea12f0e1c0e7c5fd1dac41e05880970ae9715f9bd9c8f18e54ee57e9531c4b1847ea1bbfda8d63377682f935e33ac5b8839ae989f18d8a3f311f7d433e45bfc3630fbe7abe6bd8e7ccf11581dd06ed5c019e2bf511fe0906f24bf9de7a03bf0137cfefdea06fe8bf0978a8f4bcd951b00a78f5d26aaafb9cf1f991473c2f55c73ddaaf6ae6bec01fd7f6f7c644c219ff3c9206da7217f6dc8610fff30be1b131f386de7eb9abdd2ef2b3baf39ddfeb502d37dff0677305618b8ee7a1778803ed9fbe75e37c77d2ec9eea76cbaeedfa7bb4eeecb7cff89f3b5dd98e053f8573c8fd4f8485d47dc273c15b43eda60ffeb1bfb38b9057718ea72548106baedf3c0543da3c6f540f99eccd848cc416c7ad3b57ceeca0ad206fdf3cacea52f59757bb6053d974ce9b994c6e6bfa8cb0885352d6a7df399fbade70dd355bf5e8eb841d10aac1bb153b06bc8ef3d06a45997709338e0a2d63a4412dfa43f002eedd8228fd029d801b62cd05663c24ce0f5b2ef0ef93be662db40de26f6fc283a1fc1477337058e4d605ad35ce24ee4bb8e73da1b2aaf2f5eaa44475b44dc97de917cf905f8af3d671f9dd3893e5d4667cab59cbbb19139d6d43ba95c530a58bdcec6c9cf62ec0bbb4d1ce246517a6b6980fa68eedcb7117367acf07b8e49399f3f7e4ff2489ebbef915fe721178317bb9c6a5ef23e39fac51c39477b1c4b6585e2674b9ce4f079f59899ec379c9dff12f7def7a8aa1eb6ee5c4e769b0fcc5d5c299796ab5e0aca4db966b0ff65a8de288973aa28df68056dff0c84810accd02966a4557c7ecbe16cb4e3d986d6d833bc93d45337734e79990df51e2dd4b31ae183cabf2595d25c549feb1bd226607ea27b038c9b9dd8de996abfbe31f80cb026779cbabfe300fe63ced518dbffdcd3297ff3aab4f2546f25f57733ea1192d8a7013725f6f9667b35377d4e806267374846378c0959afedd77c50fe53b4de99fa9d89db769807c63ef5ce87247b3188a3aa4b057bcf653cb8f0ffc5efa8deb231f675018715e0f72c2340dc0572e7b879ca169487c3dcfa5dffea9381fd2c46d0e75ee25269a6805ea1ac218d73e8a57605e9440df24ad516396c786512677364fea2fcbe11ec4b53f1e8d974ed0978bf3437463c2562c9756f69437c1ad7ce874fba49edea86fdf69bbfacadb8791d1e4b3c0362c7f96fef770ef6a13ce357bb33e5a5ad4f39749bcf5daab76c5117a20d909794341fa2b854b53f36db2c16b36a0a9c2047d2b97a0f93d178c0b1bf80df131baae3fa640f496332a9241e30947aabc8859490be9dcce70017eeac590cf72697b12f1b57aa4eda0096b7afebbca9daa319e0da14a7c0f45ba5f76d502caedd546e3b95396d069c0167c9cbe3ef49c7b619f5b898c71bc5f4033f497168f244dadb54d6298db386fca4c8a92beb198019aa0fa74a72cc54c831c346418d3646bbc833257234e498b9e89f3966f2b6b149cf3fe9d6fbaeee39fc3b3f4d1c6daa414a7d585bcc891b26e2ae9b6db34fff16afa1d208385bccf112b643bdd844e9c34e7da3a2bdda2a8c4e443a16cdc392cbba8fbdae49e3d6229d3fd0c74ed8abf2515be2da945cebc8bb421c09033eff76857de10dea2db8e13ac19ea63ff3b37c57efd3c9ff5bda21d59434b41b5604bec0a0de475c33c8cfd5db9305db12ce1279a535d7ceb63f4d854d00df601ecfdd2f7a09eb171ab3ea8a3ed031d80a1bf6ab0eeb2ac9e47e5defb3594c38f5dd0531247edb73e32167ae70a53ea9ac2b73785e0efe5c1bbc4c407720394e73ed075c1361edb47686ff86f96d859b29dd4ffd50d6c17f7d5fbf215de6269579f1b87129f7179bd9f46f38dda2af9c6e76e588f31ab17959327e88901b299a626f7eb71f52365d68d01398d7de5bac3493cf722d054a73b9b2c27de6d2bfffb37b34566c5ac371bcf984c9ecc640e6490e23d442f298bea29ad9556189643f865c6363811c0345ea61ef2a9be6c6643e8cf3c57e35523adefad0d770e785d9489f86cf36d36a4b3ccb3a61100d813677d99f29a742e2f3dc2d7277a93e2aff4eef5138e59cdeb1be64146be13c637f8015b662888d943eee7779dfb573c19cfbb9553a04d89b1b0aef6d893abbe16dd2c5f631f8339b29c4fdc737854d8e2566a4f701f5f0a35bc791e67ae1d6256ea07e9c5ab26dc08d92cd19700e6bd987c0e7285dc03d45c85b55624f7d08fadd7649b556b28dc0f5ee65b8578bd852bd9a84db5d8a1278b0f7e281eaccd5fcf8f4859f20a57aa506d83bd4a8219db658e973753ef34f75ff35d907ece18ba2c9087031e2c54f89dbb9192feffbb3bc85b921ddc02bd530a2b41ea95e07f97983bd74cea5d4566d605463d088729fd98df01a109f657b07ea0fb130c31a62af9541f64c3760aeae8a0f999e8727d7bfdccbd597bd4c5a6e8c8b3de98bc7c9e6164effebfbde68ffd23c2eb9d857848501aec5686134c3f8ce0dda9e0f258fd57e7b5d527f6f74baa81a776b3943fc474ef88f7843b8605612e62f269c94488a7433450ef01bd405d96a3917a4af31464d6a5b4ccf929731e258b3bfc99e5f17fa32e0b997f36c26e6d50772602f960a8bc3a59d1ecced38ac7fc1dc2634b767ac331cff6f985bc599c6b6302f210fc64abf2b5138b9e77c4bf35abff99417b9fd18d407d9503f6ba4385652d210adaf19e26cc54e1f517da3aca54db1139b748bf4cb8ab85a0de21451fd9026c48ecd887c2c197326d538acbb788049fc39fa5ab6e4ca19ce67672bfeef9e4fd4b2c678948707feffc5be14881f49c68f68f7cf11f2122d49afa66d56d09bb519702c0bab4837b3d0813c6e948a16b5749e4adca3b9e63d89cffcc5fba3e2d8f767c45b56ed33e8019a233fbf3aef0bd275ffcff9d1bf701a31e29047bc60815cce71bb7987352b66fe9ccea74f7dcfb7934ebc66be79a45ab2c680f391b03ebac2faaafee9e64a3c2822fa81faf1a2ce77c41b2a8c6f75905aaa939d46a093c75e03d21812c423cea2a54b7b58b44a4f93e2e93b9d01d2976a0e01e9d3281faed2bff2ab9fdfe1599bd3a7beea9bff9b3e4bd2111f8e0ffac7f6da61ef546fc9b1fe241007469cfe026ae8f38a72b3c658fa03a5c67cf40b3bff5cda06567b9742937987e712d60ef4fb88caab6ea0a3107267443a6a414ada94c25a23862ce4ee1ee3373788403fabac3dab404c4c749b607e9d72429dbf971d9846ba72df6ab4500f9c16f5dc65ef61a47850219f9f4c28aebd151ae504641e220c38ab315ffd5ccdf03ae1eadd7349cc2accc733eaf73d0743ce1473335da6d982fa66d7bc8bff1a3b53fc883f2456ae8b13918b4f71e9acb03645713eead363ed6f6209a99f37b1788d3ebce44eaceffcd325f133f73cc368b375c9b71b77e7ffec3a8e885bdb44fe04fdd747457aeca8adbf74bc7daef84c2be2094b0b852baa3147ef9256eb2954cf0b5818ac173d1702730030be17882325c6007395d771f79ba8a52fbff36432e4dbee6c2df09c0833047ef364f2c83bff04eb136b394f9515a6d654e6ac30bf24cfd2d9a1fd4dffc04de5fd87bdfcd887953bec48714f92060a5be04bfcafcc2bee05e6907257e6038fc1cb640a7583ca0a1d67ac7a333ee7f5bbb5aa8532af2ff397b645bc0c1e711d14daea93eecd270ea6d8275efdcffd0037c232e2359e8cb7f6bcd735de6ef02cfb21795cbaf578cf41da44c31862c0bff6aaf8d7882fd4fccc9dc0f5e07b7ea3cfba17765e3f6aa4f1cae17b1277cc5e949e1ef547b3f5ee4831a7e23e2aa3f323e55aaadd71f1a57e946cfafad196b8fcb456e9604b8e568987381514ab432d6b1370fd35dc8d88b7c3cb91873348d8c302f39b21d828a8ff1ac785c4fbc79f394d64ded4fd864b624cbde861bb7945fee487601b52bf3ce9f9b265a2de7d94934640cb6f3017cd2dd895a3fbf5d35c4ae79fd60f0bbe9de3d823edbe964f89ffe47851dac229693da39ed8ec7a56f531c2c0fdd3da4dadef7f3b99e0df9b8bfaedfd91eeefae137df8dbd0f737f04b85e242c3e7b8d7cd437ee3f3a5df3734565faedb2d558f09cde3e614de869a9395158ad58d1116f8d379ecb784212de535a8e9d92a7d416744dc209d2fb1aa386a5499d972f08eb6d89637da736c8b7cf8c8d999bcdc73532087d4328899f9693d18d1ed8b5ee68dced2c864af91d4b517a7602b16dfcfcde641e96a77e305389b8f5e43acff3c933ec8e039d1b6943bcaa1feb8bfb7f948ef889a465223f452a07fc7e5d9581d3e612dcf15f5e37d1afb624f3155752eeff45975ecbf5179874385b9fede0f654121f5b32507d77be1480e359bef2627accd801eb4ee0d7d553788d9e65bdff5375a9ca541ba34e18678ef905bc40a13a5b9397817d0d2945c12cee36d45183ee56f8a37f265e3647c513a68f237e5fd5f4997314cff707fc953ec8dd6e09fdb7ca7f47f9ef33df609ea1661f9cf589bb1638add5a17de47e3ea1991e7b826dc08f86310dff4fb6bccbe5f7723ca6dcd8bb879a43327df5af4de47c5513f786f75ada071fea5a97ed0a4b3d5b2d6a3295bfeed9834e725e8975ab1b139105fc89a6234d37d250c45ce551ed4073eaecdec9f9eb194b17fa372a651ec2aceb1bf78c66be90cf4b9e4be3c7eba8f6b0542509ec783b8be6ec3bbd8a2f90de76aa630e1153d2ff26d610cace2c6bcaeeff2c4b9f63d07d47aaef6a759f67ac764fb9fb147a8d7824d39d51b07df6d747c6fbbaa3dd4c6af90bb7032f21de2b4d31f09bb0867f659c56aa5511147caa8ec758e2fe8339d0283b8f47e1096790ef5ee2a2f1c8a5f43e25b06bf5f279d7efc379fdc68eec3d455f357edbf790fc77b25be1bd27e0a21ce72c5bf9aaba39aab35cd95799cae6d65234c6523fa6b3d35afb45762f169fd80f6e45ae9a14e3677636a9c29a660fd73ff40bfaef9e35a044c4c790df7bfc66a5e5a7a5eddf83a2fa4c75feb0adb02fb5072dcfb4adf70382f0d70d2de5f7fbf6f21cfceb08ed7d73e141731e5727fb5dfeb6affb8d2b386ad35785636c0953417e2028fe2c71171c2ad1506bfbf4714cb7b002e7d46eb5498ca8eb46e6fe3e59ea8faf91bf2dfb7ae53be504f3dbf55a44f3e3873cbce779d01c74fbe9b28dd3f6557d29fd8cfe35f0393217f97bba866806b0bf59fd89ba13425d14e68bac4b1ca7b7cff7b88e578ad902b6d785def0bd075127f3cff3c4715ae43f0a5c42cb87d3b3f7a3f3fe197f9592667a50b9f639f056ad7df9f53bfe9ef80b858c61f6d5e9fa00f320e2116685d7b61dcdf1f78ce57c451e056379a23cdecd740886ba0e250777d1c13d62c6c376f88136a3e3fbbeceb488e27b5efe4780b2b30431b6bb01ee914e018c6be09f628046daa34beabcfd4681f1d33367ce2571fabf134ce94279d3fa1fec3e21317e3926c50af8ff8f69bb8fc3b8ef8d7e0e5a4ecc3a2fd2ec736d4f2a4fdc2c7b45feef4d865aeb2c795e58eaf3d294e165997833e34e0b2f4541ea40de09993c973a675fe9fc4381c4afedb7170ab9aedb127d8887b9df357f59d56c5fef34c9e475253dcbee30c4faec48b43fddfcd5aedd3f2427a25a151ed43c5c7f843ff0d5fc01bf56e8b983d28fe191bb41bbb33a5db631897f77b6c1fce947fab75fe6ec6becd09a73d475ddff7e3be31c807db0bcdd37da56b283957b0872d234ea20ffc6d9b71cfa848a7d438de8863736923e7867eb8e7cd973197b28336df29cd272fe0e269713b7f9fc74e14570ff2650d39599113cfb87e9a13c5c383dcc3e183af7daf35bf561aa8922f478ef7d2c67c795b4dd731431ffd874eb5a5300ddf55ae0573e551ab34753f14c7d3d623ce926911937e87a6a10f1321afe37331c577d77fbea9b5de0ae8df4ebc0f9c33b16891ef84eb83b16f3ec00e49fe90e78087296869fcc33a4cab45326fa6c053c7debf5bf385c45683266485eb82ea0ec071f86ddd01fbefdc63f0f2e3f28567ba65f6804bb155d76e4b13eb2c0cf6d9f5131fb53622ceb9fb3d33d1f2fad7975c6129795ac06f0a40b313face717f6550479a091b7301a2d154ff47ca5ea91695efdd27d041809e92dcf1de5093cb0db7f45ddfc0ebb7a0050c3d5a95c22ecbfb7901d7b57bbddbe601edc096b0b145ad788caf0a530ee3184a5e20d355d8c84fb683f24077e35ea61569a2d8540b4fd28cd691a678cd875ab1b1987f9d1fd705cd4041986eacd954be8ffa669506daa53e7fbc062fd78fa0965cd280db32bd29f91b518c5c3eda4ac373e11a6cb97987ad333676de368045e2da3887f56bc7dbec10bdf4b89e523b466c86f9c3187180add202b816e493191be4fe6081ac490cea3c7ccbce77f658bbea25d619816f8de50ceb822be425f1e3e6f1ee1e7b4e39df46d6fa38dbe13d3f3ef5c3bd05dbfa8d72d6256ad2ad523cf78c8d9b379877359a18d7f0adc43a0ffefe2968c52bce0d2b05ea5547c83bb2fbf58158790f7e933df97397b82bae25e6d163dbbb4638e7d48b147177417a8ae2d37f57f05fbfa8fd31ed391e3f125e7d91693ef021c58230c31b7feece50c7f618ec7f1990bf75379863732bacb5e4f5634bfd4e7132d2c196b188ed88afbd6c974e8d5ca021613f17cbb9e5629ff198fa9a23a3b291bf45478e87cee7f94870bcfc54602d87fa15425ccb4c0bf60d8d6bbadea1eed517edf7b38cddd81eb9a04479a5f1888cf18d342033d923a4cb6b9773bc3661a09b9d383af166afdaec86eb2185ba993804c64643adbd53b0d335aa11b2443dd37b514b6e5457cc2be29edec4b2ef8e1d02d47a5f7188f5506bd408b635ad5396efa85f46ae1bbede39680b9a57185ff6586d099b595d73d4e68b6c69cf16d86fb40878f3e4cbb13a5b4122de73386be3a256bc1257e2edf1e71ef932a6cfbfc4ac175f612fdc0c72facea51ba708eb8eb4e68b84ea0bceb884fb444c1363dab7b9f63856dcab89461ac19ba5e4d106fdfab2a97ffb5b715c5ec9d7ecb11c3f5b8527c03db78aad5b48ba1f06cd8d7ece494f039ecd5dd7fc439d53eaf7dc036964c7b1473668f06e2ef4c7b48d3db8773f967b4f711085dc3d856988b8d66a5ace333a1fde4ab0bb0b3c039fc8275bef48bfafb9aaf7daa1ee23e4bdeca2f63e88230730e38cfb09710134adaf747237ddf9d39d51f55af155eaaf25ea2084e631c07892fa342e8cab5acf95b45dd6099e119a837917a6e78471347ea939c993159df90df5fe492e35d0267c5f42fe6b1eee2ae23d7bce6d976af8c78cfc4383e379db602f331b05db8cd6d9f37adf3cfdc6561884fbf567c8bd9534533fc1ff975c1225e897767fefcecd99dbcda916434d7614ce8396b0014bea9f8b3d5dd543b6d601d76d23f53286cf2173b2a4f32df78ed1fb8ea5e26062d0736867b645398963b00f2827b428dbc6fb837db6d74ea8d11c8b98faadf50be4dac4aa8a89d7506f69cd733e923ab379eddd32c278f4df7d5b636c9aa5b25739549874c14725f6a32f49fb97fc4ad37d0d6fddb36dea6256516fd558f5b99b1b393e3c0da739717eb7fe08793816a52e635b3dd0465af74c41775e26d756d985ce2eb9c212e9c62ee616f111ddba338543be41d6f12baab199dea7fef4e6aa6a9bd4f7fd429a01a4dfc3de4bd28f8c9b03f47c89559e623f9b105a8ef5a8cc0e690d82be8b8e9c19c9798abdd221f6ec5e837df8a67c01036d87709798a3c6bd2a79443caae94602b922db6a847ddfcf6c877aef66a593ee4e35b7a026ce7fe0fa47be59d322edad5b41799758fa51d057d29d8ddd7a3736d35c721c0d71096c0bbe0ee17dc3039de7031fe215300bdca43e36e825bf5ed7c423682a7dc9811fa08f33d4930bf69b0cec6323fd6da11fc7603b9d0bf8babeaeb4fbd49c4f0eb906bcd87c7aa6582884fcf1e378fd094fba9c9e87bcd5f66aeb504d04bfe37d2c495732fdee79d16f917d47de98d687efdcf7a7571a8c7ba93d9a32c7977ad3207dbc7d39cb4dffaa78b30cc25a6937da9b19fae8a5e33df81a6a36681893dbab1bc5d54cf2db3656a05d2edd757dff80887d53ed8f7d206b936ee34b3d6ac9c5a9e7cea3b27b6b3bfb6cf7b430f52ea899433d215a859adf8b9ec381d67453eececae7296bf2c3aa37c8397033d857f4dcc700f4f6ed550d6b39d31e4d7c77bb741e2fe89b74e309fcc9a63765fd3819eadc061e3cbbaa1f75fa4e1c7b6f14e7614f2363ad3a533e569497b6a987b41ff7957ef8e2c3b01d9df3ac963cd3c675d69ff383ef9a12272373e2cb39f5c27f776f598b7db8e786691a3a9b989ab7d3a85b7382776b0ed6039f121727f6cf19bfd4dac2337251801ff114a49cfccd2697bd5972df7d7cf5bfc5b5c0f958d74c53e398321ac79053ccfffbf78633b9dd500ffcd0c631b071d2cf73cbda831e1881fd03863c533d5c1b9e3affb01e9aa5c77d80b1e49af2d8ad6b173be20b6dce3962fab2e4f810a9b3066be8a6672ff4fa77678d9d3b8f6f05d5dd38e5e0bc2e76013e8018fade572960d084e3f6fe94f9798f081ded845d521cadeee92a0d2a8c9d95161e69aa71637c0989473ad9402c2f36c712eb46220d714e58ed134633ada6904790fd5e92eb8391e60cda8cd8d124f701728ba7c9aeca616e4ac031bf00768e1918a30b17eb21628c3e9f407f56acd15714096a38a60cce1ac147c8030435213887f07ea251f7836b3e829deea03f8f71a873213d95bcc9ba79ecdee5a5fb3d019c9ca8cb9edd900b7a4cd8ce2a269ec5c6f0a1b784cef7077576606e2c36ce5bb91ef55f57819a5fc035e8b5d8ef62c57133ee39f3643f9bd4ae84b3b532fadc4e831a2d8d15f366bf06eca51dc0f943ff8df0bfddb9d02a0ecedde68adc040f81c9a866f35c2698af4a26d3725741bcd6b2e9534b1a9d559b630c5e689ed6fd3fd75c77a13d8e099f30cca394a9580c72ba1edf877bcae11506fd96df92bf179b02f5c7dd706186a83371eece6be0ef3429bfa961bfa1c485ca1cb4bf1f603afacf58c0fd3624bb4bd861cac9d41a9dd5b2f77f4dbeb9b652eff34ffb2cea7d3538b767c483538f73ec0b5f61bda6ffecf7bee093ea3fd12fa46913c5bf3abf4010274c608ca715e27062d3bbd2be7d6a2b17fc197a3e4fc79eb205d5ae5133701546777f7f86352010bf3486e7d404d6f52777354aa1b8e52bcca333cad32dcb14f1e6da15be2bb0a7527d17f3426d73c33ecf71b077db7e5d93e623e2b780bbb7af0d68ee5cecc3139d91bea10fd7849d6c3734175e713be378946d817b88fcf4b2466e4b8d7210e223e727f06362f6cdfd9b03f1ca2d39f4bd85f12691dce4c6d8ce9331c539af05e63b91ffc72e1a8c378c9afc3b6f995c67d85bb0478d566f5dfb5aeefcefd69db0fbb12825d7ae9cd39be2f44eb45148f115e82ac8b338b4c3a5bc571c920ef738a8cb415dd57d08eabb79ecfea6056d46ff1f3213b1b4663855fb8e6b6dc1d5d874f6271f3cb7d63d17f985c57e731fcf4a0e5d3c5321bf3c5e3a5fe38a9cf802db06b11c7c24e4195e5e835d435a582c977ab715d5ccaca01dac9bd986e6e623433e9ce1f816ce6ae863c69ddf49dad425f6ce72c899adf2a8db3b4aabdbe6b6f78a79f4673fb9a29e05607fa2644275df677c478d385ff00cf40aa99323cf33073102b43edfc936a34dc9f1efd71cfd810c314698afb5a92f31362de4fcad7861601f7fc2905f2e00deb029e68bb186893802a1fe4d5ce910f7bc2bae66e205d02ab9bfbaf5459c0f2bd00ff256c85bb1427f65658cafe19d3d28f51c7810e64a8b37adc86650bffa0135fb1615ec8fa79efb3aa4fa3ee959807ef12e682b87b43b7f612cc7eac2c4eb819ba58b65891f202a12d262ecf36ce5dc851e06733365aadf461b17cee77c9e639266d2baf674ca9b89f4a8ec4d655c87da60f3bcf61eba678cb83b8bb61ee579859f5c29876616c8d901f6a97a0fb68dba5f26315492fbe050509c995467f4afe36a9e3dddc5efc99863dec8eefb1080f73d473ed76c7ea4e7d8fafb10ecbb7604be80ce5f8add0bae87c69f8790cfedf6ad41cfacbdd1338bdb443deb13bdbb60523f99032e44daeba20930fe1be47d643c2b8ef0dea25ecb67913ec5053129f3dc416d32e18e7cbc274f1d3c7bd821c01c3b4f7fdd30860a99ecb3923546eafdd0e87e31f63c83cfc022dcafd0876e602f16bf3f27233d001c18ac97538079749e485c63881cc49d1faa072fe791b25189ae6a4850e354d75f82ed23ad7f566c3d9843e19a8acfba8fb1f69433e0e9e106b531ff1a183f6effe1f7d380f36b60d6f47d416737c64fe15ade4fdacf31717b672668ccc4b217668827cf5e61fe329e1bd407a0bff77355ddbee47e928a6215fc2d6185b1985626e2a3f5c35dfc13a701f9fef38a5f643f2171c2e7b59c4f06ffce2cc2b92abb8d78846c77a03ebc673643ad32e1b415a7f366a351fcc776847922feec471d6ddf3e927dbd50bf941a8cb635957c23b543fe888e3e2dabc08fb0e37d45fc4d23ccfdfa6bee9f0a8d5941dad9126913afa1f889b56c6fbb984bee9731dd775d3f6a14b3308891ec58f2ec9d65ad05fb80964be7f19477f74d747bc9656dcc63cec85cf37bff29478c71de7863f4099e7dc9d32dcfa6f72e6e8cbb7d0bb6388d628ff88718ae0dca8b021e5f6af04aced151559f504fa19a56839eac78a0c749f80c188fb20dcc8da1787fa50f0d3654fa137a76c9e15dacc8646f325f981ca712e39c4ca685e369c4f51e99126fff16d45dfcbf412ecaf325d8519fffe9d23d9fd4bc49c403f2632e4ac77ba5da83ef4aad360bfacc3a7bec7255f3875e34acd39e4fc196a9e7f6912f1f30f36cb5b42d87c68471e4a6334b9d7ae7d67bfafcf4c1e5fa6decc56cd2cdfb4b65e2b8a5cd14c72a2e649f8d8ca96e7134accfb90b36cf10dfe9980bd294be4d02e4bab7f07b5781fb46d665e91ab77b2e6bdecf55f35069e04b27a07d532fe7d582786e905beeb486be357bddf3de3f109f2f93cf7fb672076c7aa6851fc8bdb507bea4c60ad38de33725f5dba13e284bc14f0ca98fee8cbf035a33922b75e384d05bed14da23d814cdd3c0876b8cd0fe35c23186b59af8e302fbc257493d223d0a8ad994667d0acf1ce89629141605f8c4902f4bc8585658c4f5b128edcdd3c26dac40d417e4785bf85bd4f112ecb6245d21d23795da25d5299cfb236577498f6dcb14b60435c72c4e7d70c968a4304f6e77566d1c7faee22aad02cc9b1dce0375df25f0b5f6faa4897ea33c0b697e282ef839e1977e9885aadbc91ee514b9418d707796f90a568bba3055cfd7a8045b6ff339c593ee02ee27f99aa59d080dcf2c498bc3f4c6b44ea04e57bd5446e30ddf25e2ee3c72402b32b6057103aae76673e8035ad799c467fa4e76086aaa256d6e60cb9d5bb0b56e8ab7b95673b0ed7c1be2628ea7d76d906633b947b9ab873b7d46f84d788f8915c4d6d49f7ba885d94c555f99cc7d932d3c3f75676ed4568b98b879647ce15cd46fa7f2ddc1b793cfa5b5e08b3b88b774b560377950f8d13dc60b5cd713388b771213a729adab03e67fd22a66c4037a5b23beb274bceb9a782707e30efe0ee5e23dcc59fc9039f14ffab27bfebd96deb954fa6d19717df65a7a35eb3f07cc84e2ae8b202728f14379ede998fbb218e10912c7a43d2f0c3d46eeaf77ae7accce9ddd72fdfd7141b9486993344f6149a38878f5f4f31af05cf29cc53308ce40c9db0e752ad25029ba7341fc7c83fc9ee04f8acf5447bd1237ac6ca58d7726df17790edc12f3ed2a9e045e74177bb55cb2e53ee1fb6e13e57bca5a4d1bca3a7ac42fdd19f41824aa36f288beec07e050f57a49b86dc2604bcd7fdd12c9755a62ef8c88eeb04921aedbb86ae43b7b9583dc73a94820b7de1802b1bc9520bf71035cd38213cec2903cb9726f436d9a415edb8d5ed4baef6cdaae987b94b36b2bacfdac399e17e0db587e8de3cec730ffc615fa5b354ef7b5e2b6a4be3a976d2b796e86fa2fe229d7607d357e678b23c7a1f8260cb1f609fa87e0cf84b2379de63a7cabe4d9e05c027da315d893cfe39f238a2772b90727960f793e1b3466a0ef11f79905fd8f6227f3ba9c5ffd9ab8d8c71a9df73ef8939e78c1f5473566ed782db02f37c23181fb5541b91b23ae4b3f51cf32df777345b939c84da07d57bc5dcc917918bb7420cfc88953bff512897734c69823e11f1007b3a7c2c07e0ded68a91c3f77e7c9ec1771ada8f1ac6a7926c8fa12e84a6c2027afad34d2098ebef95e370f823bd770369e328cdd392fef7cc3822b7e3333d05c334c8ef693d4ae97be89419afd31fab205f1a8f6f11ed6c00fc4632eafc39eb84c9e2589fb2eb19a42f5b0f6fa8d10d7e8d4b7599842e95074f6ad3beb4ac7d3d91d8650e409e178f18c5a53ee849723e4f9b573877d90265c645c5f491b6a39439c879e5dbbcf23eebab9466772ffbb45ed7dd0ef0ae2c4ddc9fb7c63a3eb37ca3f85c648bfd33bd55c9b21a784402c0eda7defc9d81027e99eea63e16d82fdc40cf4cef8e58db8012a0e6b80f242612a39bf1652c37def11ff975b4a0e2c5dfaf590130c5fa9e7d7b70571eb8dd433b792df85059c25b856c715fca69dcc9a0f8addf3dd44c67391389ac461c1d30de6c442f7096b53c94ce6c2b6e16d7200fce199ab7c1c6fde97c07b4936532c671887285f94d686a3630f8b473a8be4e771f4c372871106759483bdf392bd43fc921e70294e943f2de2eca8b40a949e965c97574678085aef5ba57768137e9be25eb603fe890872c15694fa06fca6ac955dbb3337d93f8ec1b6757e8903ef9cfc40bf5818e10c795e05e0390aeeddc887e069451c67a312f2753661dc087bcdcd55cf2f6e6fc0af3342936c25c7b342cc57add22995fa1fc0c3d6ad7f39266d75ee31e152a365fa6420b7237013da62be51bcb3cb399ce799e6c91c58e6b81af1a186c62f1373197816b23c6ba957a57a5fa3b6174f74c26ccf8b3deadf09765ed7c4ad5722e7b07f0db62be2289eaf63e6d273855253fd40ef36f7ed4f9f6d9dfeb36df799abf078c9d6579f31f93d55ffb6339bf79f6de99ef459a93e5baaef418c9f6d6bf5d993eca99b28be52fef2437d96b5217d4ff7493ba50d46c4570f9f57b2873ab743d5f7d48d31d45d6a8d62e84cf1b6577b06588479517b11d9d860606f8a994e1c895a4998fad63a421d9dbd067b5f533d1771e8aa7e39c5d7501dbbdfe8e2c06eaf05c0ed7e25bf32bc9d1597c4c2445e7cdd7ac3f3d40adbeca0fa93d0568422d42bb5764e1ad6f437857aefeaadfb4d992730aee4af3ffb926357c670e3257fc41c18bb45d3abdeedbd8a7beff45c3c294da5f3816b2d348f33ecb7bb94546b837c4282f640ebe3b3a3caa1e7b26ea75b81719ce67bd20da83e18e2db04d43372a6e2b6f25292af1c53fd8e05e093407fb0e250493707b021825769a5f854715ead24f5d4fbe7923b6622b9b3aab9c2ceec13e21293fe5d7848d027ea31a3ba15ea8f9735f2eff30479f6056fbbbf09d97befe9d473169bce1bf5eb420dfea0fb2a1720ebfe7636455cd9ccede6d328b49a7452ba75f544be6b81b15964fed489f7286f3369db43d2716f9b3df5cdc83d8bb9c54073dd0cf8433cd26eaffa7579601a61e07e99c4a159e83f259f91cfbd53a5fa767413b54e9cc298907ec6a5f31b62eebaf16c427d470bd68d71f76c7a708d0993e24a3e22379a9e74cc737e045ba69e39b72bf0f7cce37460f706cfe79de8ddd93e9c2d66fa54faf1fb5f1ad907b887e4c9b0fb7b94b76eff73a5475ad514a754a039e60a3b1b45a417d3d90f0dfdb2f4a0fdc1fe6759b7664446799a43b0ede700ec5f77af8ba96c7c2bcf9358f53b189b29533dc4e5453ea7a6b0f22f7e4c9f55e3fbcfc4cb7adb7f4fed21fcde32dd501e4e079e25e156cd23beebc6c4fe66885bf59f38be8da934f6706d05c2d77cc46054b5775a3b07e264ead6a78ffbdd640acbf0757dc686f4c397413c189b3f9c1b9fce29f7fe9c0a3f9d530dcddba2021d15374c3389f30d45b85f3b271a9754726f42beeeb0569a6f2783d6fcd2f664af4f9866d34ce917c9f9234ea53fad857986f9fd65823a987f359f6cc9cc6a41cf5da08ec8bd1d683ef8edb7bfbf80df3ffea7bfff87f52496b09e704cf989f2a1ddb32dd59872a5a33742ceb11872a8d9b4b37709f42ea5036d8dd73f7d67bd65c87fa801e7645bbd129798c23d25a4e377be30befa34a7a286bca7785d13cfcbd6c2fe09b6e8bf5b1a6a2cdade47c96757d0b9498ed3d2b66cc2edd39ae26660522f7d7fafea503812b739cf1ddf583abf681c41eb7fdb204f0871feb95e9eba7f780796646d38c59c93e2160ddb9f2df63a5c8217a9572d98d458e8d6c9f80dcf5f3b329aebbd3f26ac908fc98f9f15f306edc4e94dbe1777e7dc56eb7ce8c38d31ceb2b3597fcfcf7b55cc911b51cb4e6a6edb0cf1ddcd8c991bd0c114e1794d5818b0251c741e414b3788d9b4d8d3b3f5fe36bf9d6e8097144667f731ffa1ec18ec538f7834bedb27b6d895e4ab6d9671786f7bbb98d6f13efe83f1413fa5fceaff9adec0c67fb5e3b8b75f4bd24f847db0ad24e7befc8e87b850a51d42b9b938a6dea81274273afb0735c2a088dd19e47a0e147fcc172d43dfedf4463a1561ebb721e1b5b78ccecc16ef6745b7d305b8602689ccfbd5ee47ac7a15c1c75849bc33f17192ed6cac403f526f28e11c8f41ddd9f48dff29aeb1e3e9bd460be97b7cee97ce4cf625268a93a3f189a3ef0b97f842433cdbed64dcfbb412030fbf0798d996634c87fed22201bc61ee6f51473369a6b92deefc6cd0dfaab0bec4de83f651f9ce39c525a25479630efd0f76e53cbe31ea8135c60fa489c2da107137e73d6a538405d4b19e22d4560877d7319d7f6c8f7b4b73ccb5837ecdecccef6b628f84cd1f21778257a28e58e8b8adaacd7fe767c2396ef1d8c53e59b6a43a3bef6ccd9cbda91e2ed3a37df5d6adf71862291670017af83ddffbc08f387567841dcd659df3f37d28869bafee730f9813264da89f94cf8b553fa5d920f7567d454ec605d80beb10be5c37013f47a5ecfd97358c25f2d92057901e4b3fc5cca602fbb1cb59a5f43b330d7931b9d437b40bc211723d452e9b15fe3b977e690a9c1f4f46e8558865419d285933c9676203b1c246717d7671027165def923d18f1bc53415f07ab87c26fb309f031ebe05b7c93e22bf747f5ce21963c2f8317b3d7b247b23f1d1d0cbd35c202f96c578cf3b1fa9901c73b277526a9dc58079977993acdbc35f75d6ad280d75aa452d67d79e2f07e29267c42a221ef44cb59bbdaffa2c2601ea418c72ad063f3e6e9694238835d7418e6216ed258f246a9f7473ac740f86feeaab4f3ac0668538746b5f02e7b9936bfe4786fe7fee780fa4035b1972efd981b97919e408e45a0e35d72b1dd90b3be378cfbb73cb18ddc2becf60267da9d49b566603dc2bda0871721bdccfc8e9a2b807264b356e775c0781d278c8e747ef3b6e0ad9276c13ef7f0dfcdcdd7edc6edabb780ffbace35e8bec35a05cfade8298596cceace69f628089c27615fcb1250dd7380e5ac0809563c817667139df7c3dd3ff616c221e8e7a5fc23b8758f3008ccb75ba7634ac4bb13d628f8312f1932299c059a1af345f435f0cfa0496d1dc02bf44542ffe1ce741eab2545680b60ece62470b76175df5ccd8c0c7d1c598d2de36ecf25d3cf10f7bc50be71b65bb4bd37aa2ba08f646bd5734ceffc57bf5f72da96efaacf08ca99816b6ea2d78f38183db5e2beef246e56ed016d8dc96f5d967e9cbb6ee05358bbfb32f46b0ab1ea87fc7df61be20394f8b2d697cdded1f3777984e5c09437ee73e1665ef3e6a09c5117dce1e82ad67126600d79e2d101f2d9223e030558e44b44adb3215b33fefbde6d8d7da7e8d951e6bdc4c251e05b0078f415c513e7693271b55a706bced91f27659de82ae6a60a21f978c6d96422e2ae03f8c8c78fb910b3d91bee9c40a25e7ca30b75fa37e912bd63b7d3ab0a75614f316cee61f1f10171cb480ea73e9665a505dc6a88e01ecdf977c86752551ed73ee532eae1b8743b0db1cf1ddd2cc686cb9968c9ed3b7b387d1ecf335e00f2317a55cf73d97e0c40ab4cd21275e07780ecc873416476ef5d869cc27ec430df71bea9f4e19f96b88d908b8a695daafceffb456e9f1d375f27c30292f2e0c1d39c1d92d4cc6d4579916c944c67901d735a9e7dac5f25bef826b6a0cfe98f3110c9ee3a965d8b32c3111b6d4d0c65c71a07abd43e28d78f3b51a7062c6754a5c85d58c343dabb6e0a0c126086f6e66c46b3baf24afedc40a8cf0c41ceaf5b274e478488bd8029f3eada68cce35ea95013cb647fa5951aa70a023ec69bd04fb15f56aa7fe0c7210410276a8225b8038471ebb6a0cd4b5c698303a613ecf669fdf29db1d34b403691e87de8047caceb6aa2f635eb4c427a35f7ca5b5af11070d2bb6f8b9319e0e72c06fa5d28bbc524f6017533f51af0472e51066db8a921f66405c1626e6a14569485d5f5923a8882f39cd658d60628531f17a3757c99188f5795953dcbad4c3bd474d37d5d3fb64128f4df35a291fff6c80dfe96ef279469cb76fd407c052d2f4efe20ac8995618e7acb616e61ad98c25d86328aa23a3fc464cb1abd4e59075bc126d2183bd68158ea7faf485f1e382bd4be0779a1671115a6a2e30e7d05fcb5e83ad4576342cf66ace3fba7784de69469f7bc88960f154710b773e66266b15a4f79eca9e8538e0e2043966973f9919e0bab5d538c3752d8c1ab9ab5cc6e84ce19a59006ec3ae6aef55ed11e3a4613fe4339ba96b759c37c2a85a51ea9ea90fd06f715d895aa7be49bc4fdfff2dfb21ee755a22d35331656966b3c5ec3c9567e4ee78a0fd92b7a1d4280fa30970b2f091aab987b8bf42c80dd8f1ecfae97b67c9c75e28bdbc06ebced57bb0551a23f350da52e617bbcdd7b5119dd5750b039e2134c369be253b05eb2d02bf6711f046fb54e73d17d4fb981ecfbdf6a9ac05e93ed42ebcbc667ab76630df9ef6bae9e02396dc33684d25c9e986b1a44671fa92fabbf8c4447e82203381032b9c9ded85817c52c966baae4738fed50b9c2d6cb47a19d463399338912885fc5dd8309330907ff02bba38f516ecab31f05eab1c27f9a1f378aeb8ad6785ed61ffbd7ba45ed7987a8576c4bb00fe55c401cf84b12fd4166daa57ff07bebde20ead473ec6ee71bc39519f118bb1b6ad6767a5cb937aeaf352fa4072ad7e046648fedc2dd8e958bfafceddbcc61ad4057d8df684d6f919cf52d76170bfc2b8625e5f9ce8da2491d7baca676f65ac897e68e7ff5d251f46b70f8238fc00ffb2c231ff01b90ccdf59259f58e3ea1aad10cb0726fc1beb9e11eccb208733038c6b94dfd39ffbb3515261bbb223f7ca8fdfd8718a08bd119f10b8046f8bff445fffb3830c2b5120147a11d2515dae890b139d50cfaf830b4293e64bc8a05dacfc98dd554733e9ba4c3b49e9d3d99df48b27d517fafadec93460e3f3f2c95b6f2afcb9d3e329d3f5aada1fd75624efc3eec1d6d855d74e72a689bb6c81d390f69fda7c14734ed6b6c91719c82164477dfec46b5aae1f363ce2d94b507e33acd53f4d1b5cde54fef2b311e5d7c037d6e4e90d48abbb0dc630d1630ce7664bbabee3b9d6f1668aebbdabb6d701b62c0d911f192d7600738b1d0413f57b0579f7aab24366c3c0da7d0439e9b02cf931fd21fe7b3c938020e9d2dfa8d36e0112036ca1c5ff2cf828e0dab839bc41a6fb1ee6d035e58e655e4b5a5e681b696233962a7787d03b140669376accce7d43ef8e258530a80773985f7d3a72c0e17a4a9cbb6e1826253cc1d980c311d712aa057c3b4ec2a660b7a3fc98f1ad71aec0da6052f270de3d110b5faa78b365c7c83899a17fc51eaeb0027f823e2711fcdde7f849caada9f6943319f57c40230aeda614c9804ca1d05facf1bd5c472cdbf96cee9b7b9a3aaf6f6c4f789be9a0b7ec2a8edfb32ef6d8cff42fc73cc6478bee45a678b490b09f079b0cfc403f5a966524f4efa961fa85b8db9be734d6706685992a644adad48c361777e82faba7309b69207b2dba34905fdec316a5bfa515a8f914b7496cf89734b1c0b07f95a928381b5949c2584a1d1b482f0c01ae6f86e932be657dcc2247da21f63ccebcd7dfe88cf4af58bc1b3ce86cf2aee9e55ea19cfd53cba4fc61939a3d9838f18d0c279bcc3fab01afbef4ce72de8fd7ac0c4cd5deacddc414f5166af53eaa7176feabde352a3b865893c838409a5739ff489c94e123736537aaccda15b2bbd06bdfc1be166548f1bf05d52cee6d74de9c2f4b956b2e9ae7839533ec22d8c2be61e26b70af9861287386f4bc521b8305d9ad70f858b6e9b57c4cb87d023701a07fb7e9cb3eede9d1dd10e2dede9a87decc6641bf026c867577c1f712e085300fb7a1e70f1e4ef8f38a6dcc8b503d820ed38eaefe53dd06f2d67d0d310247c4c3c6d611c7631ed4750bb8bb5e2fc146fd1dd9a017bc15a413e9ab124de7eb94ff8183587bc4ae625e4b8dfd6b0079da8d75c1432c7c44723d2066306c771ca1acc778eb22972b6ed266a9cf26e9c20eff7c9f6757bff7aaf1594baa3e07bde55ea055a20e6d9e2c9643588b3a9cfef2948374a479741bdd18976a79bd2b6434eaea8cd643f59a89d1b9c87b76e6ce5b9611cb1865dea9ff4e78c64c82ddff761bc110f62946c1ec06f1c701ce31a2e6a5ac396ea835ccf69dc9bd313e0e3ddc4665b5a8f05fa11b1e6dfaf5f333088f3f4dbf56b863af181977be0aa898d8d5da521ede57d77ef55776e6f7ddacb0bbf3bb366cc8a84752808779ce827eacb5cc670f684fc705b13762fceba75d706b56b47fb5ffdbdfa353eeac616e2e646ad51a6ec5aa56279961047b518d37c649a77a1b320547d8932b7ea9634a6c944e9b49473d269d9bc12e7ecd2466c3cafde4bcc418569d53d8bf42396c9640a1a7a63e2dabf92b651187bdd7567d068ebce5358af628e35deeebb0eebe25eca2de8159cb9cf50abba7a4c87f83ddc6d6e740ee409ed0df1ca6ac4546f33c2679abce715f9769e79e78339deb804cd8739e5bed773f0f5237d73647d5d1af8777663e0b0111c6b1621f5ebc6f996ee2f73bbd1effdafcba8e78b9b74fe81d6bdef0af87145c0d9aedc56d33b9f6cee9bc10bfa55d2077574e45852be4aa5790fe81ff63e4a8c7e1b6fce0cfc433bda7ec9dbff0fea82d5e5ab5f31b9f229f56a31e967cb7175a8ef2b247bf55c9a1bc539437b057cd3f1b4b2d51eff50fe12f66e445bf13d273bc604a1e60f6afd5c616a24f78ab4a515d6eaceefc0fd06fd2f9d4daa301e4ed215d6b375e4c8c93685594dbfdabd11721a95ed17dd4dcc572add07d20334d5bb0dce7255a366b4ff2077ec9b41eb5e952d262c0d3f8f18ae81effda4c928e790bb8c8db33c1b22d3b273836a03625c3abfba77b0a3fd4fc5bbf94ff667c90fa7a4db4335608457a6051ce162a551febe042cb3bbe4f7becd9341bcef3fd43c0166ba52ef37885335d2d48de93ae8735ca0ffa7f86215bff856f1c57a4c8d9376fdd338856968572672bc09f7c6d0671f9cd13aab81573ddb5bc6f7ba7cfab5523d9a3fc6d4afe2cf853bd03eb27d5a97b110b8578eb9e27697b9c2ceaf78aeb6a4953f5867a6f51a42ecaf0546453cdd4d3e3bcfa97f5af2eb689d6fe311d6cb0ad3e6124d3b1bc29e4abbc1f13f0dcea14d37b70d6a8290e60bbe43ad53ae8f99968cbd304eb557fb52873c98f48341337837425fadcfdb9526f9c18db646fc19dfb371efa75da10f59f63a939f967d608d3966c684741d2f980b7f2e8c159db11785e730c617ead77992fe93ac377df4e77175c67989f3994ee7e5b5c4bc5b9c7aeafb79a283ef685ced9c725e9cdf4a4eb50076a59ebedcd025563c4cc213d5d1c2443fa32d6585fabef8e83ec7def418b07957e2d900fdfc616d25dd90f6485f679d4e48f367a47405eb00628bb4c990eff01423467de9282cdd1c6b519ffa730ec4c10ddc547673df9f6386901bd29a33f53671736590af029c61135adf3ef607be055b37220ee025e90b19e5986a614ce2d380af37275eeda43670eddc82bd873d506eb8e4a5e44a8c77fa85faa688376e6dab3a29697f8c9436532b7be9a177f7dbdf2b0da9ff245c9bb5d93d97b2ec15a8a43641ae13bf5c8d7a16ae28905b3234c653f25d7cb011d4aff0b23011d324fc5b5903668eb7ec164a9c223b055bef88dc6a696622c7be60872e864ea04fef5822d7aa208d36cd97f5faa2f61037d6106fcd5cc655a637adec7086dc0967e6e0ef1a230df011ec10ec79f7ffb06f6bead5c73aa4799cfaa987d848bd55cf6d8637f87ef5e2efc58c7a2ca51dd8f24b8fb7c41ef7ad853c94c4f7d85c58fd195bf34beea59c7b47dc2b2ffe1e31005293980db08dcd2defcfd2ee4c865ed0da21ee7ce26bba3c690a3fa24753c084944e79c721c2e6c817621e896be8407969d0c5871ee9359775b67932fb85b96a36f75173338ecec89f210ec87522b92643f01b619db795873842aa9f7b01d73ec0366ea80759af1cc59fd5adffc49f139e907ca60df1dc318845200e5ca6d6f7358234a45a26e598bee454e31472aa31f965c90fd58fe6abfcf5b9257e8664ce34e2872cdcd5a77c00e3ccae088f7c5d121ed97cd4008fcc0ec1ae448ca12b7177a1786c4947fb734eb8324843dbd79fb4c320d7d1c7850a8f92684a47ae243e00c146a8353e471e9859ae3d5ee8f7442b0ee4939431e02fc264851afd9e493ca694af946b4d6316e67eb1d7dfa51ab14ef1266fad13e10c59747e829e938dfd247184b266d97e1d1b572ca5368be485957942e8b16a18628c47652df3c9316a4a3d4591ea7d0bbb7d156b8a03ff3dd86d56f4bd4ae55018e950c65937b690eb7a236d24c0715e6dd60ae4850bcdeebe7718f5dde13ac0a8c339625453c2bffbb5c4695a4972a17906cc7e32b699cd1cc22d22dfc1818126b1ed938f980aaa17b16276a65e34e26a7d865cb46e05c27acb11839cf1af79a9622b1ec91f8a494f00624f37afc3d6d70ed473104b7d97dd85f0017121b5792487b85dee2bc21dbcade438098eeb53102741a6e3f8463d5625963c81aa9e6245a9eab5eccff1997683fcb4730976570dd7e24af1c519ab0f5a07c86dedab738d7a1e4db411fca4936d55b529a8f1b8808ba6eb9a03e6a017b8779e7a9d35c2d36a4a97266ac3087960d5be59c5827a2abdacf51caa93763126e7dd5c7a7b1f7015b8774494efddef6d5434215f3d5c68bfabfb64941be83533d20de905844f26faf8466050ffa530b4313e63ca920d71815c09c7e6f3c7d1fdfe162f51cf29e8a1dec018b0efbe19ecfafbe5db8c7aef2e15a71ed50de5613672cd6a1b3c93913336a9a66bbb9951dda2881be4b4855ca030b39bea9fbebb5763853ae6e01306fad4c6715acc31cf27dc23f5d02de71ef82bc6a3b1c6335ff23c89e61df6ead16329ae03e118581b519caeb9fbeb0b97986f6c880b68dfcd3fc4bae729ed4bded956c737196abb09fb57775f89df001ca13badb6b89f646e007aeb32e2bb32ea1b5e9f15365e27400baba899d460b9e740fea5f66999628fa55a1fb5ce1446aaf72f8857bedba3c9ee07faf76c86fb17ea4f1a686ae76887b05f41612219f652c4bacc3d3c11c75e644aff31c61c10be6738e2f04e29e08c03d59bb5b4b305f41d3506eacb7467cd15f3d07614738c99aa5511239f956007e2b84f929278cc62d65a4ff2fe8963f8a845cd5baeb4b8c8cfce893b5cf8f26c4be6e5957af11776360bb848821bd6046767c99745fd12925f56782746f989e872e9627abe650ee9f3e5905b72f9eed092eecec20ea701174b7fbf99521d2fe1ae9bccce8728420cb6cc7f1d0f95f68b30c399c4b1ea8f840f61b2be9c5633caa1495e36ddfaa8f823d412e573cb3a25c5a0a8452edf51f6d72e6de2392881332565d3654cd89489e993ee83fc3d7e0de7bfd477abd99930856dae2177acb9513de81033629cc027ef90bfe67a60e874ff5bb7a6a0cfd8c5deaafe99c2d81d3ccb0f1db009ee82cd004716b7bf70aec43b70d228ee168c87915394d73a9e15de0ab5ddfd3dd97cedc3470c686c4a7d25c097d996f24b23cd757dcdbbf9fc37f57975affa63f1d9176bdd29235f557127d72df12b083b7ca0f75e77efaa74593b1b3291fd0071b2418d44aaa1fd9f7ce6f31f9fb9b33de1dec5de186780793fe7e87bc838af3b43a3ddaf1bad95fb7793bc0b9233d8e71ee42792892dcf5a21bc722f5ca805c8399bc5c815067d5fd744e65505e497783d96f55e015cfeab04e28cadbc3609e1daa4994a1b931ca702eef511807ed42568800fa7e29e7cdfaaf67cf99dd802bc69ec4e43794fc708a40fe198417db5808b82815e9cc376f03bba2dcf94640c3d5d9adb06bacc3b6b81be91df5973e0c05bd76c05bf13c2776281df71de02e9973b1f8106bf936ba1e4912a1c7c9fd475648c977a0ef22c99a12bff3b0a5dd0ecf3eb50eab4f85a58c3ef6c1cd4bc7d2a4d18df6e5ca066ee1376fe95b82485e4b26349d6c5a7f7dc806fa4f7a1b8011596466ae76e022e72d07b090f39c69a42f2b2fdbbfb71fee57e2fffcdfdd4f345e7ee7ecde0f95e07f7db07b56b8b5d350a3ec5ea3971dbcb587d32c050d76fb926b929dc1560999d7c77f654ff11ff97f7931c8ed0bb53403f9c9be0fd8a597fbfe4dfde4f3d5f7fbfd537f7937d0d7ff97ceb7a056715dd6f4e1a5b7ff1be83e7a3fbadbeb95ff6d7e3578f7c2d90e760280ec0d536fbd522a64980bf91edbb758167682c7dd9dd9974bb4614b7919dcc93abdbf924fdfdc66fca3fe8d6ddbfbb5ff8e57ec9e337f7fbfbe75ba6e1fdf3d9e1f37f3e1ff5b802de13351fccf941fb63f3d7fb2d3977f1ea76b0df2e83fdd6fcb53de8eff7f2cdfdfede5ea5ae0e7872f57c46e51cfe737bd5dfefe59bfb89bf7f3e31057e139cdbf971afb46266ff7aedf56b393dce16b36a3a78dff781bd8fff7e7e27d3bbb5370ffbe7935a2a7ff97c66f77cc3f7b5c6d1cb7ffebe057027285b55cd2af7af6de9578d383b30bd77c2ed56a043e346fb4ce12d72d220309b63081c03db8ab09d71730a115f512663785fc98928e7e321eb7bdcc3bf3f7fad0fe032a2f90d2416ff3f5e7f71d6c50c83fd117c2cfae7fbfbfb4593c3a7e733b0874940cffbdfd9d285b191397e654bed4cf5fe22b7f45fad97cab8ba80e956cf771dd8978fbff70f1ab33b7f0bee5961e21dd6d09362614c2cca067120a04de41690bb7ca8b47103f79e4ca9c76780f587d813eeaf33cc1989d8276e20b836adcc78779d321bf344a23af8c4991553cf882baa1dd5b2859ed7326e9c2fb9d722af2af62134ab013ec18e621ff93b428bd94acf51e692e3d9f8fa1bbe4203631e2b4b64bfd99073c05dd7ec5c429ec40962aef841ca16391c126e62fcd1c54c2be432bb09e21f4c24d7dddc5738257190f710a1fc7e26901380f0c95c074dd344bcab1e54aa7d6c5dd21373eefd0bde0a88c323c5f98d1a47727cc4e64a35ae2eae05ecc9635bd5a061e76b9f743163d1adff90f0d3dd7ac95e06f87e21289ff15cb57d9c1ef55c11c8d72e1ea847216e1fc7b8562e61bfbe59c09b0071283d6ff196119e42b039d635936a8afbe3218cab9e1380b03cce8f412edd5db05d25f33071dbe0f7b05781533ee5d1e8f9a15c2be42383d58a131478c924a796aefa3463d01fb362b37a8fa63dbe3c68c5b44ab3e97d9efcf1634dbd99297b20cda4dc76a106d7a2a681d6bc1530460e8fa5e6bbc40654f5b066c6765437ca5a17eb3b5a5b12b7b0b9ba848adb0cb4da58f7cc1aea14234f7fbe6773e8056c00df245623e2c7ce48d3886c84a075eb23b7f084747219f478fc69bc2667d435b379efa7412de265a2e6b694bc7302356b02b516612fbba8691186882db3b244ff0814a6ba424d3a1897d2201ced7f312efc875600b7ec5c909f29313767ca5dd8f17665285e5989b9b35e99a3fae7656e56a0ce2943cd39a811f87ab0955c1d71cfd77a9e2e4caadb8b764d3894f6e707d4bffd96f0aa2c86fec7d075c731ae9142f544826604f20cbbd9d6a19e05e6f7da4786aff8f7513f6c2b9eb15e7c5e405dc68e77c716f109cf4f2de6321371f3814b61be26ae695bd5a0983c23ffb81e706feab47fbc236a2466901b1fdb452b9efecdfef15f406765b07f34e4a675787206fdb0447ca81e00b0193960bbc3a97f9bfc2fd6c91b43ce970cf8279f035e3d042a96dda835b3e2ffb86624c723ad9961de538056f531f8576b26f8b2664ac43573e378216dcdf2d39a019d39a1055bfe9faf99bdf58e3d9ecf798b7c29895821b7e4147d4889cf420eb4ade447db66f33b9dab99e4e6eb79da12e8f709f88fd120df2beb75835cf0b8fb6cc52516537eb6deaacfb45c53fc1792d733341d33bafd9bf15c7d1a4fd5071e577bd2dd172dad33d4f63904d4c72c2ac2653f134f34e9d067b137e414b02be7f14a7dde3cfe6946031b1719c7a91f433d33929834dd0a52ea416bf68cf4b8e01919f6c3dce7bbe5fc9d23acff986be0459a9775481838c93f2594a6bf3b2f6cd275d5db55d4d79cc2e46a3fb59b29f2e3df7c8deef5a831aaf3c55247117846b64a6f046bf48f7a8ce76e114de02cd4c697a2462e7ae374c39a5e934cd1b7dc0b3a5b75e47a4b16b2de4d3a23ba15ea2bcc5bf021cfdedfacb14bb78ed08788414b55e5f887eb0fd6517786fe0b7b95198447220d23e266f0afb476b2b4a1fa58483537d2b1e76d76b7567247f549a46b3eec4d155ab09371f8ff780f43df55857ea38819f4191b94273ae8ca8f9ab17f3c0710df8e633e396553f45381a3e90d7a2a282fefca3e34f9bbe641d5778a5acdd356ce8571fae873557fd8d3c6b91b9f6ff73423bb98f0db973ddd3a643f9ffdad75673fb31962a713b1bff34dcc70ca22c4cc0a5f5b204609e7ea12ecc6ffe3b9e2edbac65e38c9594bfaafd80ba3af3e243e16786c5be00a71d36226edc75c6948cc7f9af7e7fa78cf1c1fb8d05007b47457701f759e37905731c236e7f53ff87bd59093e023438ebc9c3f5ed7e88bf2d67a005cab7f0d5e26d073206aa9c7099f7befa049c66ec1ae62141ff85243598ef7adbbd74aea6f282d085ddd1fe31c6e6c9e07bcd49b0afc8155a911afc2e325c7d84ef5a2c66c8fd834b126ed5b6333f553f5db97ee778817baf32519278c86fe1a036e30433ef053b06b108fac3b5487c2cfb460cb1e28cef177e327c5afcda59ee7703cbaebb6584b951a22fd5830ea373dc4b7ab08d23067a8d71edb8f57d250e9f667a51f399ed5a7aa567654f6cb676d6823df9dfcfd646e25687fc97e6a780edbd94cff27db28e34088cb1cd0d6e24e1bec43b29bb13f3f028e17f18461427df18de4d7c8672ee6a6aea752537a4e5e90549b70cb2eb8b7e2b275818f430f4f0cf4314e2b8efa9473a18711bd7f63f93b77899ad96f259e6522b9b6e16fceb2f2dbb36cd4164e39ccbfda7c2bdc3eff22b1213a622fba35d27e776e54099e1bc6d5668375ddcd79226b9d522b42ea7510ae05b044ce877abfd9989e3d048e3a775698a8d723c403ee3d576c2db045c9f5057b60fc52faba13d411746eab5af6b14741a213374a58d0355fedd6e95bbbb565277a9e27e286d11f5b85838b030362a52a219ccf6fc7c7e8c767997e191f3bdcbb0cc61afd82f9caeccfa966fa2fd7b4d1ade94caee9f3fff1355dcdd8f76b3a65db7f58d3a395f6fd9ace8c50ae695eff576b5a5fa01f4d3d440b991b06bb0afc0bd529d8731d7b978fc31cce20ced7e59a93bc8abeb9beb7e759c0c5acda83ee49a8b85f11b39e5a35adcd6a3e5c9bee47e664ef4f4ab3677309d1ef6033e8e7ac66218dab7137ae7156c7a8ad56d2bee0138daef91a171ebf8d0b8b6d46b86bb0b5dae85292de0870b8cd13998787dab6ff6dbce1f5be09f4f8a91cc47a5b2d146f72174fee4a8dce6f58079b0bf2603e531ce94bbe01bd3b933fd69f398b7f7b2657562035ac74c9d75bcd71de06675a056787ab7a3b41436294299bbab9b339952166f90cfa96d63b41f3b02f301f0aebbb69c22d63744e31c403fee69c16927f48737990e8d46b700cf69bdfae695ffb8d9dc6bca7b2d37b2fef638ace7684fb356acefece0eb15d6f870af20dd1ff90f55e9e1dd6d8c787fab69e4ffd7638aea05fad4fcb19f51f43af27533de015f8fc69b6a33db014bf06e32776a1eafb9b9c58fdc7f1b30b87ed0bd82f0f598df3667bcbc19e1a67f5ea2a0067a27ed377f960ef78bb70dfc059100b75cdfafedc30b23a3317723e9db1faadf9af8f60b04696b3cd54eec3b89906f16685633326bdd5cff359d4dfc6900fc8d769c5389f718d7eaa86f33b9d60bf15c3f9dd50aef32230c6f5f79efd293fe456f5e3adacfdcfb16d3ccc2767b3f12bf210e1339dad487826e96bf354bdf3d7f7f96273bbef3eb6a5d22af7967f111fb8f196a9f12d52d404d2bd51413927b31947126758f1f577e76c7232a89fa0923deb5ddc7fb4d72f983bbbf371bd870cfa866d9f7bafc4cd873ea9c4ae848dfc9bc7877c7ac9f818a8b5e7ded98cc268a6e1d683b5957a83ebd8dd75a5bc2e247f24bb9b8f9789caef7fbbe75347c77322f2d3e611e3d35bb75723ee868021bd5a98138bfd94d6b5ffcd5a10a360ebddfa1e518fb80a353c73dd6cbfba285f7edff90155e783cc04fa3b58d73399a672649b7fe9a3dc3a1f456a8fcc26ff277d14d997cc9223f1d4f8ccbcdbeb5a5e7bb3cc04df8419fd75f9dcbdb309dd75cb39f9a1d583effc312e133e477b9f5647c50769fed6f7bc7def7b6e4cc200607c952c39c4b5099ed1d9acfaf3196d9c0f7046b35360fefa663ec52c873ddbdb7a73f3f41fd9fa98bdf5ebbe590d7df15cf366c469151b17daabbfa985b153605490db8dabc13d87f6de31ba7bfa92f3df19e79a87e7f485ec22c60fe769f87286fd966c4eea5ed3c9ddbecc93eb34dc55a087985cfbeb661bedee3a63fc7fabdddfaf89633151effc2f7cedffd6eef76b3cc4359e8376859544a0c3101a01f249defbe8799be1fbeb7a017a776e5eb38705fad57d4ea6f3b58e7ba853fad7607724aedc3bbb96c9df6f30366dc00fdf8d7b9b2075f795bf6116b537cb4dd06d5e0fae2be6c3eb9c4b775d91a266bfa8816f18c66457cdc94ffe7edfa3bd4f64df6d3726c959e6d17922fb03fc0039088471a439fb765df8fcfb7541cf1526abb1b269c37310b58cfb98f4e740a348c60da335e7833c3c4b0aa9393cb4f793a3af49ec889dd9bf3ec27faa65c8750618f827cc6bf99aa7914dc379ed9ecff29d2f39b863f7f7827b17ca15e435075eb4343ba08d5b2ce6952debf6b749443d7c39e861592b996bf7c7708e56bc426d824f3e04dd9f7acaec286d0eb086c3e7456b7d97cbeafb604c6bea6f09130179d9b2f6ae156a7d2a5e57d406265d77c23bc46686b901f1109895893d5d59b9df00de5bc650fcd3b5ee736f83aed7eef30874c946180fdf82dd6414923ed79ed6e644adcd6c36fcdca3cff5926affc666843803a95d10c66c9a991be42c99bc60ce1cb51026872e56891566807f04bb6a445a86f97c033e0ef4497b65fdf856a15e6f9c8c08cf16226ee316536ffe3d16c9f5f7e1e20eef9166c7e88e5354bf288dbbe8fc20ebbc823d50be9d6d05e2667ce20e957167f4b9f70ef828ec20f5f6a813675536708e84fc7cadf86fb544b066a3498ed9ef7bd33cf269460be27b4d2bd22967f91cefa1af4ceac5f3155f1437c166b3a53feb354b19f1efa6d69efab0d67be21ee2b70afaf95d1ff956a14fc6f59771866b9b7ab2c30de555b08735cae38a6a0ee30afa456c6e57cf38ef668e1ce9e45f17ade27f3dd173a1dff21aec4a7aa78c7a22abbd35435e9e71893a34dcf45e41534ccedd73c09b27aae1c0593e7925db85fed4b2dc554f7dfc2cebdcdad279bc3f9bb7d2e6c9de79d957115bcb0435a505680ee60bd393bd43b9a3a35d1346e940de684d9ccfdf712ccc34e237c8fcdb997a2cdf9eb413f6f2acb0cee69bc1bea49a5b934f2774adec55a8b8c4a1c1f9936edca1ef55712f01cc99fb4e36a1efdd44ee9f990edab869382d51efd6afa1ff21308e54bbbd6438373c99ec553e66466328733daee234462c2fe4df18f1d9b7740f61867ba5d52f6da2372d0c5c3702b1a2a21bc715714e5cc8e72f77c785c440c91aa5f437ce39d8a06da449be312bd73a5fe42c751c40cf04f373c80723f447eca3078d4f1ff9094bd4e9cd6bef196df7927afce01c91da30708ec8bcac7b0e5ee81c29a1770cf9dc4281bf194dd4dcaf23d56f2ec722863ed363f032b49b629a93fd4ef4775c23718c3dd4dd590eb8d8d548e9e4dff0be093316d08fee96c8298c1c015109bd3d7638d048e1d0bb18d099c3119b28660dfd6e93ef40d72b4ac65336d3f1f91b1a9f406247857551ef0318e813bc53a334249f34e2fffd49fafec81939e00e40fe3dc00d6453e2828a8c53f79dee7cb7b9f34d6d6b4b7a9ee7b7253f412ecbcc14d77d5e6bd8db38a6315b14e96641da3a39d7e09e3ca09aeffb9238e00d6d0cbc81fc13ef5263d0d9f7d9ae33f178faa64ffa2bcf2c6f3e72ea834e7e117ff082b9e0d3ae88f7d138634e5a9c8b7a85cf887bcd18bf87c4a91857eea0eee6628dd009624ef5e86fd7ed9326fa75ab13577f45bdff5fee9b3b8fffeabe6b1eaafb06c6794a1cc795497a64e2cc34e8a149ec3fdf6be97addf96d0ffc26331296f4ddb8e67c443347de07c64cea22747b4a0b1aec036e2586723be00397b59cbbcfa2f35c6a95c6624e3deba42d00b69d9b4be40a5803ce187b3add00cf15e4df7381f75bfc1cd13a12c413bd656fc86ff081fe8a47b58e58c61452231e309c6447e5b3885cf246827f7fcd4123c85b6dc33785c78067d473e4995d93f63ce26d707d4abe87d0384ed9eeacf0aa4a93652e481340479e9003f5f9aef702f7d9e49a2bbe630f634af6b2c47dc413dd541c0bfb4ae229804f52ee8551acf4bb80ff846242c5dbf3825c4cc2fd50b891e4f216518e006dd8724efaef9aee6bc11d26487241408c38929871655f4a13798f17fe7e3383f922ad2889559063592a8d075d2b611cbb1886f801d3f5dcc371d2cdb296bc2f76f969bc97b1477c5f3a23fe648ef999147bca1357e941142fe7c5a03f7ddef911a84fd986601be93cbeae3971d88f3137e8b2caf4242f75605ca7d4a7ce4dabff7cee4d4933e30e2b9c3a4a5f08f7e0869e49c6806d45fa93da1af427e684e9909f3b3fc68cf88ed2f0869af473f82e23ee8e8f02b838d43c5729c4da41e2de2a4ebc0bd50de24461f43c86672b7426a3b22e3fff8657113732d70903061c0689402c067b7f429d340ebc660f8a835fe64961fe650dcd38627eb65a11df4889bc9fc3f795ba1eb067e779fdf8cd1c0dc63651f77c251e14fa5da9a5d67d1735888837ab32695c98a6c625ae18ee9f0fc49ca56cd7e0bb6b1823227f8619aa392f643d4bfab92d07ded42b691bf973d415f9abe79039ec1878c88983a2c4773dbfe23ada56ca8e68a3d2292187113b6f30465f9fa1df833fc7949b66f3ecf1ebef93ddd05f611cd8213074fa5d167efd7d1dfa8064ce11b86bcc23e258b49bec2bf834664c1be13e9eccd13fa573e71a23ae4bf5bb6c2d7be04f5ba40f421a7d3969e2c402f1f2d58deab445dca87747bbb108f879d58f7b6f9799817fe3935ba60588afc3756bbafbeff0b0a586bc8c385ffe6c4c3dfdfa1adf3b328e5807f74daaf9f876867a3393338f30bf20757d25760be67a77bde17809e2fafd7f987bb7f65491a77df82bb1d15ccbc3414025d2864d037206b4578ca0316aa2f2e9df8baeaa464dd69a99dfef79fecf7b34b322dba6bbba3677dd376ac010c7ec2626bde2c91eb474a50ee9c90ab5f09347bdff1ff2e04275c0475faa7206b8bec4f26f7ca903d9079e055a8836be04de0dbba867675613bf82fb44f3f4665c095f2ac7974b5e49ef83512e53dd1fae11b58a13fb4cbe79aebfd23ee349aee5766d623fc74bb706231de388b8f9a439e06ff2b9e28236713d1ba1ccfdc6dac55c41df0be13c7701e949a58469e02d03fb66cf89f731f37558438d258c0bc6d789fcf6918bb9d3d43df638bfe381fa5d02e4875fc6cd5ee108270df1158da9a6518d15c7e6700ebea85b3ade09e30f0bf9efecd2819c09696693369ae46acec4187d492da86be23a8c59cc9e1fb8113c8935d804c42d9b51fda0dc8a391ddb7380b28fa00d3f48974dce31dd7bfa9fbdbe47d73f405c20de03fc564bc08dc8f8b28bf519f7702f6a903320c16f70228e558c7d97d8f387fe31cdb5eb2ff47d4e45296348a925b1c0bc09e9a751be51eb62ada59c0fde80f41079743c44f7b59717f176f2e693446a4e9431f68869037acfcea79b55db86e68f599286cbf597815c7c61dea27609d6fc04e82ddd68ae49aea2273a37c9c411d7783c977c88ddd8ba2a27c549f3ce5c1f883f6895527e64f4d4d953dee33b0dc0472713c5552e35e12ad236d02197e798c1ee0ff705dcc5c373370fcf9d1cd1b6af19e56bcc1cf0c57c793b376695fc4642e11fd3b711dd3b1129adc7ca7c86bd81fcc6c731bbd05a025e7356ccfbb5ac970ee9f455f85d65fef37e2ca49eadf385f334873cd7fbd7c33b418d52bd93f7f84ef37ff64ef237f54e37da7b61c0995bb5c9ad1d88512fde5b4cf05c59c3d5ad20d907d46308eb927d065779af29aecb69c0c582384962c9cd29943ec7b25db6c449e81bb0bf420c2af7ef2b7107477145fa27f34297ef1ae6d3f527d69b24b63dd6bdfd926c08f6a956fd7e71f6a1f6246b16e03ffea25ccfed3e8cff456ec6acd1438a63a8d6365993fe6f8b3ae756148b01f52782b632f048fb9ad494f50a877d56c8d719c7a18e3a6a1baca9f7feb8e92e917f8bf6c9b6401c338ffd6f715a173bfcd877077dc9c04d98241a5d23cad8016a566210987b1d7d53c688931873e7495c9b8a8f1bf24e1297d5d9fe55ed0db19f72106c5e49bb6dbe88516fa34da887f40beb4456dc5ac889741ca256f865557bc5b3d41867563871cf82e2857468829d60fb6027759c3c19071ac34bf8f8bca807f3c3f3da45af4d8af51e77beca9426c7a7d0507310e353610c3126a98785837824f0b1a7c2995dd37f3e56bd3e41e69e14163fa6b9d8dfbba07e7153505ec813f51972866d38807922b460b736bf7dabcc1dff76fef4ba732dad219e31d26eb8892d83818fbe6562aeafdf63d3fdd86f493bd03d09d29defbf918aefd918e2615f432dfb949d7dc51bc8f6e05bf98a3bdadf1267153c63a439e740134f0be009b72263447d0cbd6d489cfe79631feb69951e98ce90b850ffff3e3e011f7d08d46d8d7eb27fffe61dd3d3efdfb1e7c1fbefde51ee3123cbe749aefaffb1760f7e2ddd8b70e8777e89dc63e5fecd4707f0e9127eb7e78d6feb80df7ecb81e72f1c62edf4ad321b398e054f9e8157d90d9989dcbdfc68f8a413a9e69c1b2e6c6f061885a12dc627aae36982437c54aa1ea4ef6bb9d73866a45dfb63be299ade8cededd8b98d55d6c957b0b300839eea6eb41d7d04d44fbe61b80e8eb00ea0af63803db7b7fb8549fd9a8b9834074617b04b321e047ebf38249e5e4dd9d4b8f9b8ad5b74f3b6ca90df9e9f8c3f1d575e4ff4ae1fa43b544ed613f97e7abea79c781c11277b3d2c810fc4ce892fd146eef0c43d919e5394be5ed0870acbdd9a7effea7f1fa8df8b1f7f7fffe9fc9beb9ff177f1116e2fdab7bd23637fb00faa5e75446e0f8bc74bf57dabb713e26db4b38f73e886c3cb058da144f3b1f790fa4245f217ee0ffc8e1721ccd83902bdb85c6cdc29da01c3af294fe7aa3c4eb161520b214af70ef9953773a4fdc31c69c98729a7e4dfdddc231667c2f783966dcfed22f116a920bdb0906dd4fc7fead610d4c2d747dac316e965226b4dadebfa1b31feb6deb43fac37ea9d362efaf7fb6966457b737a7aa7efaff86fae27e440aff4cec6fe34f6c5bf1efbbdea7b605be0068fa291fdc3d87ffd7eeca9d6fd9bb1bfb9c762728198a0e754919cedb24fae65a48982588944075d15f681e72b3c45655a33a8033586cfab6f73989916f50eede7d0ebebcd3546befb3ff6737effadf4638935dad8941a39b0567f9e7b4cf187126e22bd1c80e352bc87e9fe84d7bf792efedbe7ea7dfc9fe750ace639d6b9fab1369eb5007b124f0c72b147e2ffafd1269256e300714abf79e77d06eb746d974df538574e7f982b833faf53d98722395357bbe671ae7c757345726ec7c9e35c013d32d9c7499a63b3f30fe323b1c5f0ce7fa16662f319b47f69dffd8fe60ffe47f8471bcaa66c8acf65f818bff6bc628e1642dfe18699d6f3dd7748f718f7318de6bcc8dc3f8e5339f5a49e7c9479766526dfec91f8c3fecff81fe792ca571752f7527e8b1fdfd7d706d8df238e7fb31616580338a00ee07455e73fc58f6b69eba49692aab34e135bf6693d7c27fdb7df29cc8087399c3463e267baf15f7da1bf22a7be30311e1904db1f62b1dfaf4757ad47737f40ec1d2bcdf03e1693fd1b14ef09d0574a4f4e94f91aaeb38cb0882bca235c47e3627219f79a3c8f781cf6116cd747aae5f8763887bdb941cdd070ec93ce283f5e9973ecebf5d80bcb882ba9f55ac417416ea6f3fd4d86e79e76882d8e0147c6915f5a40cf763a1a77e308e3be5e622d117380fe218988db087229b981fdbfe9683c6fad19f6014d6fde75b8708ea85f04d8a645962b3ceb0d763528b77bf74f5c2c9531227d84b6e4bec49187faeb50906e9629be4897f37feffeba156ab99992868b0b6b2f9df4df4e6409f23eeb06d65aedfce6f7551c2a2eb46e1d14b5f7b4c07518479736745c2fde58ef31ea90e19c8afdb8416c09e28f383331477f0e0c1f758dc243d4adf3743d5e823f71ea79d5c407f8de3960c01376a67aee7d7d24f7179907dae229a3f9f24ddbb0525a3f84e958cf851d4ee579ba33408d7eb720adca94ead06e5b70c292fe75c66ff611dc608822eced020ca61eacb627b997cd359691262edb610da0457bc6eba1407ceb238f3a6ae95b85e311de54e28338772d1fdfc3e71e696263fc2b4e2bb5fff89d1d0965ad64b77ebbc1ca59a1a10fc8bee3799fe4bb7143f5487e1046aada10ff457566f50c34cab2f525fcddbdc1964f0b994b93f653ebe6fc52c65f81d2d1c4dad30d87186f1526e47aa7eda6f4b5be69974c05d5f2503bef9f7c77375cc46bac8b2acd95bff9ee39f5e2fcfebb278c77ef1b6fb1d69ce606f2f95891d90c50bb25f0553d571f3fee331177bd68e7d1d864accf9f1e165c62cbccd0b5de0bdcb3496347e8fcc13f3b517ef65239c42f93a3de8030825da221868fad7639d425f92fc020616c59ec42e7cefe6bee349fe85813d5a58e73a4111f125b2a9f44690e08a9b51d1ac1b944bebe387d3d28ec20f8281ad4e3d9278d6b5feb1c2d20b710b602b99b62ce6f398512e297233e47d6ae69df184a0e0c890d191da8e65129ce62f1c4b00725321a0df54c32556b4f7c5dd4526763ba729221f2ee496cdcedfd8b9d87bdb8fbf16abac69ee29375b37741fcd3e6804b37d7e3c2c473b876f135e4fc68ff227e3e56da6bd088c972d2636a17387ea477157cd3dbc67d5bea6d23cf10f53360fe82a35d567bbcc447831e53e9103e2c6cd136101f608b31aed2a159d8940719bd4b4e5089759236fb25e0d525d8bd9ae8c3e058d7e8d3b0fabf7b366b18dcfbdde6ca09ee706871fbaa29debec910f5e15dc9231a6beeb4b3992bac65a38ecca6b4c9e76c74c55f74af2d49fd8a8f9abadf6bdef7ba4953ece398242de2a4d2c616c4d5698c544e8869671a0fe8d5d7839b35206eb863c53986efa08553c27b0a536129505f83b0c7a1692d80fbe762df702a79e9b8b7ff61126895a6b8cd62c93936a55e37352683ffc93189fecfc764f4f76352bfdfcd133111d3b9d28496f7d72ad27a36d91572786407e535a7096a212fb350e15d9e8d3dd98927e640cf4d02f510bb543951b507ac8b4df3e00b0beaf1f08a5497df23dcea639ffa4c12a1753e02d7dc971cbed9168e4bac403b7d2c90d38d7a622ad3236d2de9dfad6a4fbed73fb5072c0e893fcd2cb40afb259b31cb884307ea3eddfee16bfe80d5eff73cba9b6400359864f0a0f7bb16538ffaef0e45bd846732df35c85f501dd46f835d3fbefe146b767d7e01b509d53ef1cf9f99cb673e30e406507179d68c9989b82f736dffbbe795354fd0829ad23773cfeabb18e20c9a81bdafe1c78de2a853b52dd291d4fbba1cecfd473d54b588708c38e26e9c4997de5ba46b89650ecdd05edc701d630fb2ce497bacfe4fe76f63906e24f57ad0faeae7db3f7897d6fd223fb36aade7dfbf8b90b868dfce4947e945e1a79bbf2067a001263e303d1b639598a58823e19a56123eb2e5d8a3c706c126f8823ab51b175bd4c749dc7dae9156e35f57c26794ad473a42c715ec59d4233c8cb5668b7ed37005fd214fb136d00bca67c0fb37a5aca1483b8a1a365293fa45f1ad65624cfafab1b443902b51b5d0ce7780f81d7a477933402cc224c8ea83e2ded85457c44b7c043b67483d6d056ac171f80e8b9e57cb3311c36d87bb77ba0ed43234b16388a12a356f58608d96d52a4e410dbf6450c29ab4e75af8813af56c1521e6224dce0cfa27a6c075e0be079b50d5988b69e8cafd3c15e3a2c15a84dc1b7c5d694ec739d568cec97d7c72f06be9bbd9cb5d429aebacda524f81b8082da0dec6abd0284677bb7d44f65a1680efb2e71adbfbe4d7e37151bade51fc9b1bc2c76ff89e6b67c8bf418d7618ec1427d08b2ff565654efd52220f5ce9ccb467d24da46768fd2b626aa9e6e931db035cb1469a3a55ebd7988bcef24b48f8efe62fc2f653ecc3aa8daa971f55ce90e29c58f67a79dd9eaaf46bd5fb540657783dea5dd0af0b3af7b7f3f16445e6de46fc4d06bc3c335d6acdf6737f176c5fcde07ae77f796c833af9907b70916bf02b20edf44d35c47d4cf91b4be214c06be4a685f686bde71aa7bd0f62d436471f951d19c4c05247fbc65fb0c3bb7e4ae02fc73aaa15c5c9906a77ffd20fa2b8d48ea223ea4b87acdcb119e1c4412b9d4d1753f6ed1945ed9d2ac4bf861b6b4078fdd5f64239b7c30ae68357906f6c0c49376cbe9886d4b37610b5ea6f94f147353ea1ceef48879c21bf04ed52fba63bdb86d2d646d9fa5e733e96c7ba84390cf4a5c908ef6fac0f8479963c9b5d9c93843b559b685f75d439006e1015cfd078bbe66f38e1351f7b312263ada9ba126a2e630ffe59edbb4a8391f0f247dd073d6f3bdf35748fdbf194baa09d7f9413b70471af1beb03e430444d318b9a67371a7fcf66aef4e1642c99fd75a03e5c01797ad7e7fea18b8d1e7d8d398e7568927e17e95dfa88d54ce6e534271d2eb01b4afbc35a3ce4527f332ecc5b6580b9081dcdecfd11f4b7353114d097e9968e67c0fea47cb53cc09e09c15163cf4e34acff256c1acea02ffba270d901f1c5b7ebeff36d5be98ff3adb0931b9de387d8d014c7107cac84f20ab87f0e7fd60661ddbc94faa4c8f13f811ce37ecf1eb510b7ef7af470ad9b7cad59520d917231580b5af01f344ea4f6c8526a393cdc37431fece03b5017209fc88fdd19e50eeebe7d82dc70b0372c04ed89ff183b5ea31d456d64ad1e08d87b1cec33bac38ec7edba45ced6586cac19e428c27199eae31fe75d3a22ade0bc9c0ce7d4f7e443edc5160efba4bc1e37f305adb312b558d3cc1a02d6b456e34e79de3bbddd74a8b4c2d1c73a2afe0e2e7d708935493b5b3bd1f4473ef77293fc3ee76008d2a189ab4d8ebc3e62d8ad51ecd338103e71952eefbf693a745669af139368aecd714f220d9738bd287b38475d64cc411ec0ef659307dd2ca91d93dcf85745cdae25d9be1b6d5efa4641e2b7b1ec0b171fe144dff5baa1526f166b507be2137ad4037673ecbf2ca8ff525b3e6a1f7d82b6ba63a07dfdb8d5b5b9d1ae357ce4b5e32d7b81dce0de911a72a8fb22c708fba22877fadf8c51c9810351d4de8f6354dab94bbad1654b75d3fb6f5512a71ed78f85b6bcf11f12f4e99b0362751e7c05d7abd221f48ca6ba4dfdbcd57648b9951dfaa41637ce06e8538b4160f241f84ddb95dd68bb422ff102b16772fda76cdb8d415a3b78bdf5a7c214a5e867d2b7265e8758c5baf7eb360eae773ef71ffb4dea01edbbd4d317b5fc8adc05db554cbaddeca9229d93768dbf27a9cae3bf9d1c5c5ba76e6d756bb5a8bd0fd2a18f32f72bbc3d76d2adcd6018c99e7fd76306e508bdcea7cdbb39e11b64a36f6dc5fe8af529b215e7a20e6ed6edc98a6281f130bb30d4aec935efca68dfcfd60a53ba98ac7dec239179f158f632dde8bc4723c2f1625fc17e271cc275e1fc92356f618549fe85b56a2732df0d8a7b21ee66a1bfc927f3893e0e78f226a6eb9ff7faffb16f972c0b13efa12d871562d1c2ec2f3d7cd441d6129d216f4d82efb6bcaaf79ee6668f9bc3e33c9ff85c4c861c88c980510d0a7d7388138694cf3617a40f61ac3fa8d7bbd880ed08d3d9d792eed78610f369eb1df98abed150def24ab9e7c8949a602ce009af62c49e6b183fa6fe977a6743504e795e401edeebb581d626fc2638dada2bbea395a643ed0f636013df42c46f34da5c618580f19c28bdf08838fc84feace2cdef763e4c87e3dff90022c19e95ceeefe3827c8ae343a234c6bba7e57fa090de84a158ef7b572684d8617b225ab8c30c7ba51005f5fb77ebf04ceafdb7923b244de6b99a2b699516ba4095e4d699c845a27911918587b237d5bef56972de1aa2ef241319f985ca8f67e837b7ab0fbce48726388eb096b818d56a938637da5fc15936b7a247b024a33a79efd731733638ef453f6f22609f2fbf8c633f4cb5a15f7aef41eb7f348d8b9e270f5e9ff93e4fcc7638dcb7815d3b1cde79f8e158ea7059bbf74aac517a05f672d09b337697cc279902d281cc8552c8de127e2319288b017ddfe9cb1f11cf1c745ed1d623c46dad8541f0711fd5bd634694f3e94a4bba279d767e24acc284f0ff7953603e28d75e1845bcca39d94e60ce2990a7e06ec10d6c7a378fd1e83bfb029b7c33972e2cca8479173d7aab459174b835fb23dbdc031f0ed4aee59f46fc0302ea97efa8939825db09b912fcc64bda9bfafccf94a5df8c47d0f276b8cef58e757230f17e29fb2f51ef2433731a8dc3b1a2b48d96789f89a84abdec91030a750030dd2fdb8d07e516fff5ce6356b87fe7d57af2f8c216a008971257be92546847204b77b96ec298fd2b543b56fdec5db806d6c71adc5a0ab570d83edbad797ee6252ec79068d10ef63e5d488c36a4ee88fc7c556f7ee7953bd43a2fad94752637cc55f4963fc0535c6253e0db040a10d7da1c8d3e3f0c763db6e9c2bc41509c7c3e341b334af5f414b1f729d7524756cdc0673501467492e24f041b13f1362cf047ac596721ec13827056ab8afc1c7cf015b94349f88618b4baeb4176c19336e2f4fd1f8ee9d8f0b6776a33fc502364d9eef9e7b373383b7bb7168bb392f3154c0b9f446fdc692a3e9e7e705dd157a2fcd75d3da87f1032e8d6d394d26c8b378a928a76decbbef37bfe1de1a17fa929e3791d823b39981d6870fcfebf877e3fcf00dddc7632bd487875ebb708cc737a04991cfeebff9f1ee991784258b19537642716bcbde11bb9cee891f56de934fce03c5a320f544ffd2047fa7f1ecde695b6dc4f8eebe536e8266257deb655b293ce39a3819bfcd71713bc7658c655de41cfffdf84ce75336468c39f43022bfcd52da8ae43dd88e7cc0d78931ebbeb9fc4ebae29985b5c58eabfaf546a38a0555cc26f44e91e4acf1a02705340a33889dc8fef3ff34deeae39856a89ef362e7ca3a5cd4bae3c5648f71fbaf6b817b6364be1ee058f611ec2ae44490759e31eafc68d85bd8edb167d4e53700bfd8cca218eb2d1c302945bd5ed01a2ca0eeee2613eafda928968dd1a675c75d829d778a1efaa7a8ce5922c70dd650bd627bc23cf8c8045f4697f89668e78e0bcca715b567fa35e98f38b0ef41afe694787ffaeb48cc5218f0c6571c4fd79311411e6b3d3791678e1fb525ecad727e47e8bf2bdebd546911c5b0fe0373e5285f99df60bfec74c7884b6e1fec02cacfccfda9873966df149a5cebaecfbd8fc58f783bd7f3a94e95f2a14fbc320ff9ed05f1e3a6da80747644da60cd9f5f9eb55acec9aaf62e2bae7c8423f54c45a6fb0138e3fa12ec1a8e3ed2b1d7506118036907cc854c7d4de140ae61b776a2d378a93472611efb4a5f06ea51775864d253357439b7a254e66567e48b9753bca7e69a3ef9c9d1e8abaf8d8e1c198f24b39638f1bf8ddd86306bda17f2e27faf0dd4581b481bd4930999b049ef40836b4bfde06448fdfdd0639c142bdb835827597f497c91ac69b1b30f5c4916dfb139f5f131e20eecfc1de44f5a64ec59ae5563ef1257d2620af9872841ffa86d00af9485766aafb7b82e0ea46586bc80db72b2c49e127d7bdf3b98bc531c114792bbfcb68fc6539c685b1d7347be5622de2c32bd7d48fc653bcf813d63883c934e77cc34b5c377d59f6200065ed9ee74ad38e39e5be4f890dc3eb71acda7cf8a6c9a29b48878e7ec06e27843fa81ddf8cc032e96ab6c8d5a3f42477b71a13e8442c5ea304f435c1bf16dec67e6278a4dd864f48cb9e5f3828326670efd7d56f78c827b6f6c4bbd63dfc79cb81ac1f777aee843535efc9ae3772ea6d8db67205f221fed04f25e70636d800f901c83cd5a8fd0fe08b58666e47bc27ad9e23c4af77bc895b377c2981629f1dbb20f6927812363d8c5d23226414ed3ee9a295779f79b6bca67011d5abc662efb12a1a6d73d335e5317bc866bc66b882162e8130c12d4b8cabc2de22de4b300661273f186e2fa888b6df30c78e2cbd89face7e0bf600eaebba6fcb7f378cd77ec3fedfb400c6110f610c61bae29cc04b5d27c23efbfd35ae5fc6ebfd396784742fa4efb82f4ce8c3d72b98a73b06dd2dfcd091edde713a1b6d8bc432c82f97fde3c31b4bd1c794c29dff03f6ae38cb5ddf72dfa07c5d9d3220f1317fb558d751963043aba12332ddf5d3e63a4b92cc53c71de8a19f502c8f78bbd7161539f9dbe5f908d432df1b916dce5411759f3bf9d4bdba26d57c744a9382a7d7bd4a9c16fb027cd496ebc0f28777893439779070e7ee67b453c21f09dd3b2417d42e87b282aa3219f4593b1b3acabb07d4cd89c09fdde98f47b6caee97758636d6217d4979b52ffc52fe28879a9246653c68c72bf419c3cfdee552dfece471afd0e759dea12988e4971a9e0b0fe19d487ac74c3148e40be9706fd44f2b7ad5e904de58493b9bd569f4f3ec7c4ed4b35176374863db38b695fd51817ed7a32b7bd71c04fe4476e485b76119dfa7842f2d68e86d158aed70d60b81fe3d4fb78288c1e8efde6effb148b48def1c7b85568da4d9e8b7aec81e7a5a8bd634cfea1ac69e9e3722a883362ac6a11f17a329f4acd8345e9a8eb41cfc5ce33a9fe53c46bca37d988e33ddc8c53ff3b7001b9a5e3b731c5b7c0fdab098d78cc3dda4fcd6e1d32c7b3c2c4faa03e41c22f573b7c5e59efbfd3bddf950eefe6c5b470bc834fbddbe0ff50deef3dd82d0fd4c72bcc35f69ab28f92d758c7abce30e7924150d7d0c3a0799ff1f531863bbda7b71ab0bcd909c4cf2f618d9dc3e99efdf15b7fcf494cee8ffff57f32f6cf9a67857a881ca6d0875872efddc73d3f322be41e65d443ef9512ef2fd736f4bc6bae9dece471320e2c27c227bc7dae9d615ca35f789de41c6cdc0bf1cb2c26540b65e7ee3b72eebac8fde141bf9eccfb1e44df5b6423cf03f6df7b88f9d03ff099ed78e7e8c4f33057b84485bdb473c4df86adfb11cafd3599dde149a213fbef30138927cc3d60266ae7427bcd6d0c5d42ced44ba7e2897482c94ead36b44f1d87ddde00fc9a6be40666937e1f6bf4eeda727ca1e7d82deb99ba5f94591fe86fc68bf148c69a91311cb396ce17836e4c12cd9dc688ebe263a87db0adf04103c225ddea61b01d5c712ea89e595ff682caf13d77df5acee1f4f5aaf86a9dc60a63312e778de2d5e4324fb3a6bd605eeed06fe3a75d85fed782133fb87596ef9d8ab1f421d3d02b8c3dfa79cda5021e713b9fe67aafbdcbac401b7ee29a9d16adeaf9352bc42446b14bb9dcb92f7108f27b5fca3bde62bf0db627ea299de63ae90c88167d1b6f65af91dfa25b4f78edec7540bf4b3f2516e32aa6fd90bdd33b0619c56ebf8c12e25e8b676bbaf68b0f5a7df65cf3cef96fde0de2cef54171f5c3fcb3454bcf35fa44ff731ac29ec7abc992fc81bbfa48918558c7387e299cf2f5f4017396d5b8674cfd743fe9fcd490dfd78e9f35ed5f624dfee02f3dac1599a7984aac0d60985bb20dcdb9a825ded84eb6da57a8b8599915e86be5df84d71371bf78739338409a53fa76e34b407db91fcb367fc7fb79cc208d80fa8be339cfc0953ecd770ecee5dfaccd64466bf38b69dfd7661901976694eec7a5fdf76b73d1d9d72e7ec158a3e2ded3f26e2d092bc61eb1b8ae0705faef69e65eb14fb1ae1486eda4a7d80f4bf13ce585b82dbe682eb2edc8c37eeb01ada198b4b0afa331f4cbfc743d889b15070ff470be07db33f2d40a5e662e61b80faaef6f7b7a7b38b7e7704c854ef1c1032ec54ec7a70fd583f883ed4f76c94969756c759cef422f8157c3266d91380be9b86965e8c0ffa5530ff5e88c1c9d799579d8f731b22016d1cf0b07e792e30f7cd4ae28f96cd8fd7ff7fcc9447f071c9b3308b6c3775c0b51918570adcc1d2bdeeb36471c53829a55ae576e71bf7fc0b67015db2586aa79a2de45ca653ed88d0947b351fba649b55d9c93196116c3da6d494722a6fa7926c662eace280739a7e7e4924fd55d70ef5c200e8a6f7f0d0887586ce59aea625ac447366fddf5aadaabeff6def49d70a2ff2976d68ad21171f4bfac6c6b7e839d0d039e3c776305cfd768a8b33ca9ae84b13f5e56c0596d7133a1fc33ebf728fde43baf14af41bd2571be9612a7c3cec1cea3efc9cb14f00361127e55d4abdaba4fe893c6656c4d684c1971e1126e9a4bceee5db01d22aff5f18c38103b81d81ef3edbfbeba7d37e6ee349988f7780c35c682f42a9c59fb681ba80f40fab1182b3ee6f703fd55ae19c83f8f3ee837d5e7a1e78785c2efee3fd1b6fe87eba1d240a3a45b0faf1aee277fb31e7c3d9cba10efa5fad86f09e35f49ac45c93d2b8c5deac91a10fee2019fa662ed9bbe4a536abb70e71ad4ff66cd246995510f4ba2af705c4bee0d0823841c2b31e4ec4f561827766160af4fea7cf9d0b7087d3332c735b884d71b9e836c6f9719ea2da7a331f27b9d03c8f9dbe1dbaf33da45d4c6037db6d0b4fa3c026963d1f369de3bfd8d67de351c639d016a7c0ef009c87195df309af4fe5037b69c9f41732bfd45ebf605b561b5a2fee3de3ba4df79b6ff80dc02fbbcf5b7d856edb96641bd1519a7fb8462134aaed2500f28bf1a952de8f485fca8c1bc1784459eb354eec34638b9cff514d44ff01ffbfb5d1c62112fdd5562266e31d2c64ca3f9c0dbbf10d7ef9e820d6992e9d782b47d655ce49b81c9deb1d72f178a4b3c415b387aaf90df9a13bfa9995c22ba2eec616e592327a5966b05da2cd266041e7ec58de2099a87096a03a4fa586c954615e42852076b8ae127691ca016db4ce5827825fba3e316f35b89b717f0eddc70ab5f49db466c05e250995ee0da8e8c21e5455965927ec1e813f0296c5bd96be4d30d770c30576e823e779ce5bb0873e5909ff1fa673419ce2f772e267bcc6dd506cdbfb8153fcebfb2a579713a2b7c583c53f3dcef7e7713abd4fadee082ced1658d63aa34658cce6773ad880f87ddfc402d95abe2a58b2dd2f5d27cd42a8ecc00f317cc084cbfaf856a3ef52469747eb5217e2976f14163c98a4c06b80d736f0baa999a894d9cda02f9a623e3fd82d814dbe7de9eb4ad2253a863570e717b53efa0ecf594b1ee12f96fe059f245a1e6abd011f334cd7794c71dddd55e4b07f5941266cf27a3f12da79a1823af6ecfad782e28b635867d7c609c2698cf6fe5ef90076dd5b13fef5fd2e783782e57be9e487518473d27be1c8d8e0b4d76429e1e5e4cc87754bd62c8b97adaabeb122e2f76293e18049bf044fe29cea329c5cacfc685f819080775a920376aaf9cd9b5a41cb2867dd154333784f269550e61b286bdca5c8ffd8d200d209cfb026be447a9257cf7acd9fa1d635fbdd79890f6dc645a70d70315d5fce1df7ff3fb2effc2e79b5606bd238e9fee19a5ea6db3e8b839f47e3485681bcc71c9b536943a8718f7a9fe520e5aaafc3afafa7758b5e63b56cd5cbb6ccafe100f27d8d773a27ef3a1e04becd1d1c7ab5d72ef8f689e15c5cdd88f4eaa174bea99ddf488b096f07ff9f8be97bdd1b15718fa9f24861970ab098e53e9928f417846f6b64885ea7b177570acf82dbe663f5e4d698e0b5da01e02e0c89248c4e8c769eb77954f8a5f87c413d6d9852e5e2d64ad40b772a7db9bf4ce262d014b26bf5517875cba6f25387c2b95d78946bae2f7dce4b37f85d1e3df317aa2e692afe077eb3d4c71cf271e42b3d1c35e17f349e0da0adb9911be5d4e9d2d6484e76d1dc4fa35c8977a3257c847c8cdbd4673bab89e2690cb27bce07e1fcbfa98c2010f946d689ba9aa196bfd73c56673c46f5d485c07a7fe398fabbd88747f8ca3013e2c2b24de17f0c04a2f2236670660a0d831d8718cc5dc3684ba9f164e2e7bd2952cd366461c050bc7b382783d5e6d2ff2db066de2f81b8bfa38a50fc0b7c7eb837d907c77f259dbf599b01db7d795782d2ebfad5d38ec5840cdce8a537c5e43df133fed7c9a8ca57fb51d7e104e2e272eb5bbe3babd2831824d65e0df284776fedbe7917a04f83c35bbcae781d894f285a7822b2e1fbd9b1365edc9e706fc02fffe3c7638965c0cdbd703d9f9d5f844fd0ec3672da07a36f4286fd49a6a50276b1b5e318683ef3c2d6acfbe99fb2edf70ca11327f4aba5342638e8cf95cc4a5f02adde37b886389b69b38a492c9a9b7c5db11f01318c37195925d86983a9a5cd471cfc6defe615c083b154a9f60179e685f2b8cd34fc727c8d193c89ebeb75f43d29ff5554eaffeaaa8869c09da2fa7e544ed8b5043a9bd83da3334e278aef41f620d93f6ced050ef83fb633e2ed45e045c1e013f2abc7b140b9503ac5a654faf745fac7918c1ce55e34479e545acdee7267ef1cdfb71c7f7d1dc5d3855f5de61a934fc2fb46ebda2450e69ae5d53acbbaf260d688871478eefaa9e5d551f7aaad628f39b57c4a5cbfafe0be4da4654e7953534d05cf488d305747a8ca1536598c74b11179ee4d8bb2fc6e574fdfc9b6bcce53ac0f8a83229ff2d3e098776fb7cab04318a59b847dd0ae0b58fdd716f7b6eefd12c712c74e28528bafd62fc3856bab24bd05bc3cee19451ed81740b971823ee83edf087f1c66b68ee54f15367095d23aefa31d8fbd4576d524f78732d809fd0c5717f0a3633d242f08ad8230cc390b00bbe011c91926f1cf96ea2b4be2a2eace97a7ca32b64574ea8a39f28f33e727d638d2bcfacfe7dfa7b9de97daabae741233dd96af7c3fbb41e717919f43e10db38facfeff3eb4adc1eec5fbe8fa84393de47e0fba4c8395268deb59f3f8fd738a1f629ac213526dc539a3262f7dbf92ae77c91297b7a54b6c56464d31023ca8e216917623e3fe7a073e7d3bd12c437a5c91cfab3fc96f4890a0d356fee9fe766ee583f3dcfb5f78f3d7a9e109fe7334c9cbbbc4eae79105fb72ee912add18eee823a90f9b1c0d8db2cb326ca07acbbbdc96943cc452c1cef5ca0f636c5073c439dea34690b88535d1fb95219e2d7578ea7f20dcbd63d04d70beb6c472af77187788a06c1c63aa0addef8e9097a218df5d89fe0be91b236d724df9a2bb16e5938e6b8c7a3c6a71d531da9f3ef35dc63daca44bf2624ff193498dd4d65881962dfcd7b5c537245ed3de011a36bd17be39e220ce4be317b8dd545acf8e18ea02daaf24b89e4e3575a27520f1afdbd3f5e1778e75abaae0bbcff09bfd9739263af89a3df3c2fe14f610f225d271c07bbbf9ef447cc1fc665a8c6c5a46fadbe8395c495713bb661e6a9da79fc4d5f00b462024efe0feea98491557a467fbe8f48ff7ecc2be0e5b36f392c0567eeb3c48101bead1c8f26dfd6b6f1e80701de00b5b8ef7d3bece92848aff29bbfeaeac16e7f847a1dfb88ecbf08a331adb2dcc11e9a01f5c444863e535c961887dff82753467dae37fb64b55b2397eeda96fc8ed84f8afb2c2b8c0bea69559767ea5544cdad48fd1b7d25b33aa0ef05e36f5c1cdf54f6a0ede6b1e4a2cff603eafd28a9e61b9d8eaa3ed68f1b61197eda6b6c9f3333896eeba95207f0c210bb9d44bfc8679e52ae2b7af0a9fcb713c4c8326670bec2f44218b8806c2ade2341db827c90bd6603720065907758438c9fa12ebce98d714de621e99dc97fff6ac16e5dbc509d2fe736d4e01359bfb717bcdb27a59f13e37f51af8cf4eb2e9dcd722516b881795df57b06f261ec1d8ca922c47da20e7beec25ee27e61cebf851ac72d170abffccc85f22fea67f1eb5561ec547d5571cf2c739351dfea3179c02286c96c98ab7d5318e118704f827b67f06f7c33d8b8c445f4521aa87b5a13d7dff100981cb660865aaf0ff98ba68bf1c9cfd04be4874ac87f92395ee054e1c02ffd553a67d55f4b186bd0774dbe3057908bed08df75a497a0336c23dfc034dce5c8812bfcc274710e42cdb5d2bcb38a2fda704fd8418a436efe2bf99a42ea17242d639cdb845f47bb2e6d58843a6a011f3a0acf0affb6fffedf8d15c58d3d371a1c47ae157c79976f88da849ed76513ccb1a99cd6512fe8bd62f95ec0ffb6e9cf597c3f67d89fb3de536c47359845aa9e6580cf62fb7c76734efeed1cd63fbff1fdf945fffc5b7c96d61ddf9c73f876ce75a4ce7936be3dff977a96e8d4bff35b7f8e68738a47068cb02237ef7af38e34de767e336655accebfaaf3d5bddcf9fce17d3b3f7db97370fe517edc3182ed8530b9d332c5de5d730d715382dc9d35e65e8d211e2b26a5a1e3fc75fb796be8ea5ae26d8463d2e873da33cc80eeef5557b52eafc8316e4599f3a5f6ba31aca3b0157615e1b588133fb6c68b5457bd4ea46d149b017207f92d718c2d26a8bb988ec685d2b3fe768ed73d47d02e07c8958bba3dce81fc6d1e578a2fb0d8344e8f9b879ae802fd9088bf12f7ef0eb50cde6e72705e947927ac135954ef8a1d57271daac8b820d65ef5bed989edbda0aff544bcdea12979103b1fa128099b9624e75e2bc03103eaf77292eebab8b6417f2aaaf3f79c6a66697da01a53698b67f289200f2dc682faede43ec1ac40873d3d9d2617c4024dc4b48fafab9ab0da926370ded97b41d7e5cd2e27ec8f29fb2059c0590c7ed1fa7381b8b6641af6f1605fc733197040dbe9f495facdbcdc10b84f8da45642acb96e6ab3938ae3d5f9bfceea7cdbf9e1fc5f5706bc84de126b9a8acf4ff231cb5cfc4060fe6dd9362a0fb3980a07fa2e2097bcaafd2ff2c72293ed88d3766563cf459228de89287b1d22de23c37965176de3dcd7848e1755bbc9e8dd58b188d43ac2bcd3e989292e875ff88e77c791ee96fe37d7a3fa4efb37d7537e7094f67e30d5a3288f17123f694db6c05339b43e5f48f75435a629f11354e6daa5f9bbdaaddd9b9c972d9cd91931cdeb8270a989d3db1df25dc94e51cd8bbfdefbb2f83d42c097784c63871c8f15888579d6c837734cba7e64bc0f910756439d0faf88e9fb35c4bbb7efae257d61c92dd3506f8cf421430df261a1c32f382f6c85e1003c2607bf0e7543539db8357faadb70bffe8571d19ef852a7ab2e7e90fcc4c0271036b5d2aabcb50102e39665a4f2b2b1ecd702bc82ac5f949ae7cd4dac0371e28427ce48f877e5785bb6c36312bffdc9dec8de63d31afb6467db44ad95223a113ee998831fa5e17a5c97588b2eb8f74e368f632f044b11b76a5ace734b391446daa37bc907495858e88dd70b87e652b87b26ad5c897911c8114736167bb3e2e49d304481511f541eaffef1b9a03647cfd5267671254de2e483f223bff90698c7f70cc88fb3cf7022082374fcd7e7da2ec7bd6450a9f52f2ee11bd4fbfc06b9df8ce1fbf7ef303269fca17ecf3e03bda21ce10fc7ff52fdf870ffe43d9ce8f2d9c309bbfef4ecf3a93b96714d0d3515e84f64ef81f14eb8dce4d9202c76b37f26ceb0ebf90af55ccf06feafb5a3ec920e98b7d8c5dc81bec47fdfe7a5101b5f505c81712360f071cd04bc1ea236f284e9a47f3a420ca01b239666eb9b21e94b1d10bb62711dfb3436091dcf4a3a2e6110eb19cb56287eb2d3ed7599e45c9031dd196b47e8c318c32fcc17bca93c8aacbb68b4c7ddde27c4fb5cbedf872d1eb48963a94d3c55eff2f5fd5d987a97e2fbbbdceb2e437ecdecef3b52f72da73f8d97b47f5e89394d9e901e8ff5fd7d25aeecd74fef0b7d18463ef87fffbeecdfbdaf26f9175855cf5ac2dac4a6ba5f524e13c2a19e90c7d8034e1669df6cf291ab09e4094a2734e47a4d75a7b39dbe83f84563f49f5fb3a66b8eba6b5ed5356f9f73f7efae59d173666e774de3c7e7fcb7d7a4e7cc92ee9a589f68a8569df9d2fe423e34967df15ecf039679578a43fc9d70242e480ff49ffcb912714e693a249b74c2bcfb1ae3487bb5254d1885ef3157802bb3f9c67da21c18e5ab848978497dd6ae087fa6f26d028f6711cb0857a9fca69beb0a75dd9b9ae78021ee077b49ede5cdfdfb1c5c7358380fc7a13ffc4c733e4d3eb1c76a175c2f4dc05d2dd87819ae07c02a18179b38b272e843e97c02da7f3eb02f9d726ad760db3837bf85984f97f1e20aeb03b946792ee026517c4d2a1f8cb59414f545d366bcdab9e4ab4a5d24e486bef71592e44bedfbc65ef62107a635596d88374cbbac142f9735243faf6ca9af2eff543d5a311b122799bf6b28463c2d605ebb3962e6e274a8932d415c3ec479c6705c28cd3bfd53105683831f1bcbb9a7f0f9731ff731ecd5c5fe18f794105e613bf281676c4676ee45da39d3a218fa03ef6143cf5faf71cfa55d6de839e7e52e91df3f4a701c53c2bfbb2fd5e4db7dba3d6b26b27f701feda7fb082b523ca223fa2da6de4eb1a5dab338a0df355d70c57fd48d855f4e01831439396204dd4ba9c93cde343067a80799f3458a6b3371bf30067513f81df6138a2bcc7c5c6ed0a7e4e2487d3e51da102f219b1ba471520f72d297cefc01e2d08c00d734d52e62d353ef8db5b873b063f4b79074672a1c7bc8174bff765c65f8b784fa29466abe44c8e35d399e497fe38aeb70f878cf4180f9d3384e7691c2451276e8f54c7beb6aa2c67d58622d36cef654379ffaea77ed42bf87ad47bf33df18f9c80fe1942d71d168c39c78386e6b1ad84b17676b75fd554ad7d79ffaeb5bfdf5d5efd5553d5fccbe9027ed3d9c6806bd0b330471627c2d8917d1b6f099748df684d0e443853beebfffcd9ef14abf4f5731fdae3f513ea370c2137160c4d1a81fdfbe1642fd264cd8eafa7a7ffda5babe68d5f507fdf3d5eaf9561bc83184c6c521cc2b1db7444dc304d6e65380bc8e3c1a114e7e807152b3a07914639d25455d6063e8505ea4dc36d3c7bd27b5d57c66e5e4a7df2df57bf1d3f9d3a6fffda7f3a742fd2e76eef3eff6b6c2995d95ed8cdd4b8fc9204c3a72b41beb3168cac97ce641f13aa497f6668d3cfe17d6a9217537819f3ca19e3fcf0c41073d27bd39560f704dfadfffabb9d312b1f8f1f504fa02a908e3c9f0837816c9e615c4d9a8b4fe1af3562f29e4fb8baaf901ae2a173b811cbfc3871e78d56b29eb7e0b99f73f59a1198e2bcc1f480ebbc44dbbf3b8835af1fcd7b9a4be8cb6fac2793b5f8c47c067622c5bf9bbaca35b9fb46ed975843db2c7c35c935c6b5d2cf489fa162ffe6448ebd69c632f53644a3dfd4672fe6cb126f39bfb4b7d0c59db625b660cff786c910a1f624db65da47f73acd11f3bff9bebae62319f4f4ee380376f84a127adda8533330be8b1b6c53dcef9260627de8e75afe5483dc126fbaee79ef883050f10c3ec7de434af4c571d0bdadef2d873c12507b55b3adebbe29c84fc4456363e72551286841594bb7ad608e7b2c43ab138cb5a667a19f2ad403d81645ca9bd5efbaa9ceaa1e772fd11aa9abed4a23772c55f28b9f30ef86fc9bf17f2fd35beede3d3545f5f9c9b02e7d2e95d40be2e2f49f387b8719275887d1c8315f235c4929b6ef40c7dadcd99d60ef666d831f9a05ca7670b2bd3f5a996c5801bc32deb9911637d9347fd3b84ba1741bf5432cea5eeb4b072731dad6a6f5741ff24ea88b876b9219e313e10e82787c6bee74840ac4318af4dd52fa513c7de28a7da547feee5fbb9d1499d5bb8c0672494ad915c3d4115612c94e1778c4ee362b2271d4b6d017ea7bd008d4d3bca38e61e43ab482807faad6ee126d38a72f8f16a4a3e7863565cf2f3bacb5d93cbef3c81d880eff21dda8a46486d1881da3e140fbe1ad07fdef9470275719841359a251f20376ebfce4a877d1535e6a8d28bae70a05932416e8203e6a4edcaf1890b3cf3639a5fc733d350a33815f21dc23819e37109694808395e92ef0b6c6c74821a6ab6563c29375c3b433e268e8efdf1073e7b5d80aec021905a998d956f4fe352f13f63bf43e26addbb41cfbfb41f92af6de1e29e9e851f2a4e95f642ee6f6641fa7737bf2bfd7f339c14322e90b8fd338d5d9489ee58d933b1e2de19ee557d05db01e02dd20ba77ed115f7280ffc44bd34ddfe1671f7254a4f47eaa3fa614f752577e8cebdf7ebb963aeeaa11998887b4d474ff186d9c4fd40ef70337e9f3ed8d7ce260e09979f677bf5fd57f2fb4b2cc558407ed04a8c3dc5f5d3221553e4d4a19854fa12b2ff7b1a10e7ed8fb9f72a21ed895eab00f8faa52d3a1535fdaeb46e3d61bad24647c6cc2c291ff443ee3ed0f78739aef742f3060bcc132569f3896bad1153ea1bb9cd8f5ebe649f8206f9d120e1a4f93c0db8b88614e7a63ef201cc8605f2b254356a1d70f8ad7098f5c3f5254f2ae0fd4792574b641eae61f7297923ce63017622a9e5f563d997c4a44d90ef91b1e2f67718dbcb3b6ab0ac73854dbaf93d6e50a385eb942f603bcbbfc913b890bf6054cfdb63cff647b0e97c1be0349e9ba87393385ae77f485d6d4dfae79398e6f9437e5b6220531dfa1c5c57d6ab8549d8cc665c4c1407f8ed589da867a474642ed72b6bb2adcd35bec1c6c5ba8c1ffc286629e8ae2daf809709bd62fbe3b56fb0f4dd580a2bd49726f11b2571f345b84fbf7b66e4cf0dee34f61ce2effc912323effc529cd7cf0a1faff0f636effb1fbd1ffa6f5d8e3d7fe23a823edbfaf4a9fa3733177941a40d73976f471cf7d0abfab16ca1df8149bf2036d663e2bc5fa6478cd9f76fcca1bef4f5856ac1fe146c4b98e411eef3ef73e20ecb6a1c9b304d28fe50b6a83e57c003e226cd5f78dd771a4b6f158da08f1878c4ad284e0acc2b7d54e8cbf2f4748825b7974f1cd85ed9402f52c13d133941c0ff93fb08f0e6e358afab9fbf77d3adf915accdc68778a20822ea9bd02e42537a4b6bd59f4eb192aad1777127d555549ddc8a6387fc8717219f49e26b1dd5f31f3353e9f9502c9b3517e2fca8e43992275c53d884f62f754f3fee7975b0f6dec5ca5457674cea46ddc7e7a26594ebd0d573664bf59cfe86eea9b53d1ea226acc17b38a51e0ccdecc786720ecdb0e277f804189b8d1a9b6b3f36bebae72a86b189d3b503dc4b77b1e4f372133ad8bb0a98d7c442add991ac4f84ae15e0bf5ff0778c33a07f354a6ad9fb94630ea15bcf3fe53fe3d6ffa26762e391e4a8bcd19575949f879cc1848f5a492ed111d902c6603df941ec916619439c2fe69a2b13d7839d4f4eb4be5872bd3ba6c5b5e5251bd2e75e3f53ee20fde97a9a3bc53af31bcdff95ea45abafd82b43bd160caec516f46f1fb9bc421dfb8fe319f048259eba6f12fdf08c9ac4c1dfdcb736c82ef0147296d43f10c358db31fd1b3430a67c237698c3bfc521506f1f43be97178c6918c60f2f1c7f8f315f4b6309f13bffc23ded84789e2dd49d9d737085bec81cf9a04b2dc039e220961eb18bf89c9dff027386d6e9129f2d79c6bc80ce50f73abeab619d299f2b7b1aa3e952bd13db501debd7600e9a19f6f2ed3eb7dbed1931e1e2bbfb68afadb2cdf152e58f9fafdd7c959a514a0340c60536c7fbb1c93dcfcbe510feccf342ba495694beeac87ff14dbfbf547d2b8df2e7407f405e436a327563b1dc2c4dc529a0e2984ae14bbad81df1336ff42dabdd9f8fa33920faeb41cf3df477e1bec2de682e88dd9f8f230de9bbfc551cdee131eef0199daf29f99d9815f1337242cbeb3a51cb0ef77143370738e519dc7422bea08e16ce594a7b523d2c1d19d7d9616ced431967033773ec38464978f794f885f56355c37dd36da3ec07d58be2747885f8ae99de6a2a44e988fca31871b5f6f277eb12f5e33a5b107197074a4754dff5f945019cd5fa7e3f57fab764ebf58f1cb47bc3f0de269d72dad3911f3a30881311790db521fdfb20ef95b851b95d3f7ea3ff7a5f28241e49588953b7cac77e1b19a4335918279ff8178a06f0e53e675f09e1407fc037cae38da1cdc688bb04fc86bc1e53b84dc8df95b5af117eb352b5b91b6c14f4af7c066dd0634f7fbaa72bacc8d8db95d4ca1256600a8853e266fc9b7846fab9d45f1c4ace20c026526f1dc59973e347bfe9001c47180f19177b417814637dfc09cb52483ce409b12c4c0bcca541bd0fbdbda7dceaaf8bc2b5b661bf9ea84668bed378cc59efd792fed7cb8ac69e1fcfca37ee6274f07b8cfeda16727a9caee13d66319e9b795ff7d4541f86d9c79458db4e893b9c1de288b841474f547faa1cc2587b47d4e0b404f75ae2bde519e2a4ae23e468049c9ec8f60a33156aae279c599b801ee8a44ca8564abd696abca48e328e17630aa7fb8ae3c5de2a8372531a69e4beac086f6c7826c58531e95bf5e3652f77d807f5a39dd4210f998af1cd1eec42bfdb006d0ce4cc738d30a5bae4b48b241e52da86038e5b5e4c05d9ec7337fec0d732bb889ea3a2fb160dc6a33297154e1a46e357a9f113a82de79bc1f6a263eca007bb84be5186f54fbb74d827ea807773dba46f045a9ed207be9d2359b153cf78ed71ad4ccd11897fe871ad2ed5570bc76b290fc1cdd997f4adb370171bc266c8412252f1e273ef50e2bac2e3e6f2b8968d7d799c9ce358cb66115d5361345bd4e9d567e4d74eb15e81769bbe03da71f00d6c4eb9f9c75e6dddeafbbd6f30a8dd7394a97889a689ca31576fa461a59d9183e16d31f1118730fb12589be45ddc78057e65e1784f7315efe95dbc277da6648bf8eb8c8dd3f1775b1acb1e7dc883481eae74df920d2f3b1b0ef587b444ec40f5130e55da5af11198fbf790d66eda9f5b397f3c370f3277ec83c6da5b102fc936bff884bfe72765d362e29a6b2566df839e8ebfd4396a3df2d3d7b773c0f6c139bbfaebbbcd3b9dbe9ff37a738eda375efa3e83d3e1fb39cb9b73b83a67910e098b3e447df4c7fb000e477d1fb04db297a7f6cf3466b1b157f13f9b0c9ffb7df9c1469bfc615cba986c6faf1486fad790b4470837bd98d0338e3e4aedfeb752f6d23772cfaaa6686fb3043123720fda414d927f05dbe110edc521d8ea0a5300350a0fe2bfac7182acdb6391337b72a1dcffa55bbbe033789f42f5712466883d94ab09f20d19de3eb9cbadc3b5602c93cf607b219b3ea79a015e270e78e38b16fd6ecc451535e9b0718ab1e31b7d53e2aab48bda3b2bfd55331950dfff224bfa5e0fc595353355be346684d99d3f5f4773d0406ac6958db90363e8f8c689ae3164da11fa21748b72375fc1eef54be504e99d944de76db059ea7f3cd694fd03eb80d76db0dd7fd0f354ad98436d82cd84adea5cbb5c3b63ff5a322edd9af2799fdf6b9aae1e6cf7544bb9ad5f3e8569df03b652bdac8dfa760aef9634b2973a4c877635d93fdf3e83cc79ead64738fed338f435f05504fa09a1e9d92c255d80d35ebd8f6e1dffe9b57c99d310702da541703adc5cebf31f5feb0d74b3a356d8624b73fe7fbf9f01b814259e1a7a35b5cb5709b552e474617559cfeeb8df57dffecd9113fd02786387ab5c34acc7e198f203c81b6a57b5672b7c35c48dd760b77791371773e2eca3f3cf7bfdbf245a601d3bcfd627b48d2ffe16fd1d331ce3d8348b38444ca57f461d6b9771ef093538633f6e26e46f02869ebda35ff3457e496580866084fab8c4355338b3afa23ef71cd0323608a1df3f4ec685fb7aa39fec4e8b36f71e6a6d5fc1869da35b7e522e0eacae89a7550b9033c7afbdc133f28aa6bbf514eeb5b68506b5b6aaf60621c5436f2319bb40beb5b182cc1b2b9c43e2189d2fc03537f4f9bbb46bf1b4193fd4935cea39ed6dd6af03ea513ae9e442f8890475f0b3c544f7710f19f7f376f48e1ad21ee032d7714ebada32ee3f5981ee02bf1877a70a134bdc2a93cbffb256c99f7b7e033d3c09e7ff651db791f6be54b1a5b874639348bc5c68fcb9eed97c046688bc5cee5c48bb8bba1b9b7a18ddcd8d44dad0fbbcd599b074f3fbbcd551231ed5c8586bc8431096bad2edb765bd1bbf5969e8e4230c686f8e5a7ec15ea4f760c72f11ed3fa4bf94ea0ef9a13e6204e238d1a4ef188bf1ca093fe1bee186e6bb5c03d277760625cc4b177bafac657a41fc8e780a768cb44be312f1ba95e61d4b5ab757c2f24a3ff410b42ef28bbb2d69b5a23f097c94caef249faaf7c37c3eebfdb09b58babc3e9e337aeacff186fd39bd9f577ebbcf6870738ed99fb354e714dfef63dc9ca3727e71db7caa1a51facd471cf43e62f5e06f77b6d5b37db547dff88171f889dff58538aa6ffc60fd615c3ca9150a7e76f79d788131046fdd31ce5bec1555761863a9e67d75a765f09ff0f1373bd2bb8e4ca91b7ccbc76f85add42a88e5beb36976b4df0a999b70494fd75eee721593defa97c439562aaec49b5c87c46077eba0cf79f8b24ff3fe5c3fa37a501f03a7a83118c335aec126b98f89812bf4abe4efc4a13b9718daedafefbd0349dd56f5e37195f9fdb8c6452d4bf9cec299997daee0d10742be08c947e05d956ffee8dfdc1fa7fd741cf867fd58af6aefdc1fb756c7953226016e45799ce37df9f5f7e31699f778dc8efd70bdbbef701d8d17fd77503db629e8eaeea00ed77c00ff556895539770bbbb6eaf44df2809382b884f32d603d08096737d3d53f7033e8cb3403e87a2eef9b842aabd1bc867c78f325fc0b96b2fb715c5223feb026c66a4ad7f0a36bea1beafd2d7675ab0c57c4c5cf758944d28fd506e40dd833bcdd70a7804edb03ffe1c512d606a41ce12755092741f51feed5e3ff5b4f735de8d8d9bdbce80623faa9555b14b35cf40fa13c67acc889f2f6906a811483cd59fe4a3619d8a41ad2349a98628fd20c521f4ab3b374f27e2538d036a7e04daeb997cec38b374d95f9a843969c895b546bf8d11eb8a1a8a23ca01ddea8a5e45ed636ed3d3086b9aebfecd35748ba797f12adb635ce5ee829d77807d2b3102e3b487fa149b2c091b51fb47bff6640f0ee5be05f78f42c6809e417ff395e63070a8844af7bc39437ed1d157ce68a7f46fa0366733ec87a13e05d26508efe38b80fe7ecff3cb0231e979867a1e22ca75b105c42002fb8ffbd823d02dccb935f73cbefa5f973e2fe63ef01909abcad62f81213a1b6fcbf1db3467f27f6eb893a58fbb72d8e1595bf69ae28928baef9738aec1a80e14bfb611e80cbc070d27cda82beab5ca3519df72edb7d61571aab1bfcb25a774c1bdcf603bf4919ffc0d7dee6b00bda036df30e2aaeae69829ffd69d0bc79d95c637f0c94ee7124f45f1dcfa033045cc6393fd047034c179413c20c6c98358861d293694f10de6ecd571e6fb307cebec1d3b0666ad782a4b5e4b3edfce0f2b49d744e3f037c975d758216f0ed1032f760998acce56d880f1f74813fd05b19f9243006afe0df275ddf1cc0067b9c42033a5e3d5fd0df9c43581f599c4389f49c7b7ac253f8e5dd58ac76ebe4af73eacc10af63673df73a41b7ba83bb5cd78a5f8d28fe7ee3e09d875993ff2d3bdfff00c76e1b001f1aa47add75d13b5fae51ed5aadf4cc9b9be917bbcb956f766ddfd80e3e8126c5c5aab59695ba4cf7195cf2179e718d6db4e57755da3dbe7248fba8c078abe7ff0a4fa811e356326bfc89eff80094c78d5429d3c744e5267117306803dd39393d2b9367d0df43a39e9807b7dfd0bead69cb4244cf87bc13d55a30a79b79efe423e955057f842e04e76e337d83f05f52d65ce207c035edad0182a5bbd9a127fcc6988636501fea31ad23ec0240f35e45199f3038fc046e5ae3a7f95498dbc37e2de83fe8230d574ac1146373d672e70a285969f0aaa8dc9ba8eb4c99ad014d7b2e241715f40cfb49f6729a77c898cedc38033d439fd653e63be378c67d7e87ac982c4fd0c36f90cd72ff0c765dec37c861c21e04229a66b8e25a73ef0077d737d6daea017631299fdb75031af162a9c6a926a57d2e9957365e25aa1ecc991b69aded7c6b155df3ed05d35165116f49c10b5d467b6e39d9ab3f77c0ac8ed02e3c22f84d72bc79433a8bf72c0734c4147f6f4b698e86a7c70bffdfdf898e1df8fcf37fdf7443e5fe82a8d46c09ed39a94fde3439d74ff140f3f3f491e7edec558f5ec3a472c600498d475b555f647ea8990dd95cfd9737d6afffe39d9f7e7047b25b9c784c40edef98856644aeda838e0473dd82c698d83568afe7aa9b433f52924014f227fca10430bba19a9edb6b8ef329907d5bd61a5a18f7b1d9d88db10e6287101d707c57bfd4da367fdc5f8ef31fc4b9c6f854d986ed99b95cbf7bbb321672da85db7e49e469a3c65ed9d6e6a0606f8fdcc15bb1bce78c917eabad1747f204ce9ed3c95dcf69acc174e578e777c56b89e1bce08d063b525a625dddb0bd4bee01af085e7128ba2f4353cb1d5a78441c19c19e626d816fdcc1e3f14f341afb723d785b6206ee448fa7599d422bbcabe7499e7444d64d03b911c4f727e0d7e37bf7aaef793c233f9ed5ac564f01c33f2dfbdb9212007defb9a6659c33b2ff5ce9e3883c0088f0c7b8c306f14313bc7d85762bfede576fd29fdde2c1ce788dd17dc6b73ac95af1e7db02c1f22062d2bda64a6f2c61b76929a81191b57b5aff94e00be2de68f73b3b1efef7bf98fef5bdedd57fcf1be85bc6f823126b30223943d5b1177b560db60cf9218570669daaa3883d6b5b1827dd34a4c5f8fc68419997d75df32d25c3dd8adeddc184e1feea3e17daefffe3ed5cd7dbc8fcedf8b34b7edee5374f791fe168c23dfd1f7b3c6a8f97a08766c779353bfe551f5c40e6d73529d3b3f9cf680723b9c76fe8e5f7be7c0187d12869165b98febd0c8b19f7d15bb53dca775514b9d1ec2e224d596b8e24fa87f1152ffe940507ecf5c9a84d1173be0aa0cf4d703febe40cea136781b69aabfe74a3ab412b741b952c81f99d21f811cc1ee75a8e2c38d182b9f4873e78cb3cb0a72f0d6325debf2daa918afa0d7ad0ea88f09b4202c0e3643f63daeea44f55fae529dfca24fc25c14a46b93ea0af74efd1c8136403e61ff42ba9225ea9b099e70d17dd36ecef05f970af3a4719610c66deecb7e43dd0acd7cec6fa93ff2f4b4e2905be1e35fa6d211cd12c55999481dc3cb4b90ee5de2ae2a38d34aca6b9bf545f150638cb9dab88aeb1e7bb448e7fd9d6ca76f120e51619680df4a0f5ba54bf1b3ee21f1f81bbd168edc0b5f02ce5007e5574bbd6c49f67e51ba44e313e6c5486bdf3d235ee6481ab26c7bf108dbcc8c0be1414f7d4f70708c35e71a4ef67625e32b5893beecd590f874bd523107fb047e824a0f5ae57f0e05a77d56ce0d99f7643cd1717fd80566f849356e9131077bdc29de362aa58ff3db5ecf56713211e60bf8046ddc875f8a0caf9789b1d89ea89604d7eee60e719aa9b175c31b8dca16fda461980e1d91d238246396fd691c1a0dc6a191f339e2ae1bb4b886b8bb5ed9a471f50be38e8634a59222dda38e93a3915d9118b08419a1ebd05aebc6a2f1154eef64141af51ccef402ea6456743d75eb2294b595f4fed8086b5a3286021df679c0597013174d93b1ea8d79fccd4bd06788d3b5a6e24dfc36792b3c65df5dd05b8995dd4b789135d85385fd51dd33d3f733f3835c5ff17a0c987ac70c6aa77f27e3d4c6e3f340e2b8357624ff2f32461fbdee8d277b6fb04fa1454c9155710feac7e97a02f1ea5f6681b8a95cf51587ef2168bfbb550dbd65e08712efc1afabf25d631f794bc47b2039e5816fa7a29a7fe68e0b850d69f6a553c91ea920d5c7e8fbac81ffdc1fa2cd0e98815c1529e9ced5ed0278545cc6bd2fd4ce0d450a18e550f73e4be52b7f7b462f849e5c2eb62717fba1fab134a56f8c7bc1fe4c7d0babcc024c6bcbc6d58e91aeb889b5e00bf262d7a54e5c0b16f43da7093d1fab5ce0a6884d352e783efb0ca7f437f0f3213f347c57fcc729aed96e9df779631df7e758180a133d2880bf12b8eede1ef5cdc5f19938c5d3e30178f99826eb26c4adddebe09e825dfea9fab8d2a1879a6bc3603bbc501dbc32998f35824be520062a967ad909689284146fccd9e432417db8f742692c8b8f50e672440073f0552f9d3b9d2b4ff2a8c2187f046fbdae12bc576205710e75fc6c3f061e169c77fc1de6576c49bf2a8c0571e93c29cdd8f8071d787d6d2acd593354ef0af1a2b8d3eacd9556aff7d371d25ec65cf6915ebbe7c135d81d8bba4fd053211c6f405a113f6b55d657fafd074d37edef352b9bf7e8477d36614592ab78a4b4932bd4504f33eb883657f980a57199a21f25b949e07d86525f204cd7ce82cf0057a261af9f2df51d716eb13eaf562bde65c469f9c481e009477b588f4934bf621f9316a21d48f4f40d3093d12e2f6efed6f9bed3b821fe59cab7e45aa96ce6ad6d9c192560f4a5d6d67ff82c3be44ab4a3ed7a7df3b7937c96ede9142106c077605c56f27b9f7fb2e1c80decd9456f6bdaeed9a59e6cf297513a47c4ea8cd06eb273b049ba6706bc8e36d3e89d84e3b9737b3d062e62595f9eaa7a55027ee7323a9f83daf59635fd5bfa6c5bc2b3f43abea4158a39e1b6a13804fd74d0550cd3f538b8023f16e418de6ff802128e7c5f3bc8538af7a0befd569d3fd18c576f30c6a1b9be8975841526c1798e9a75a9e4e01205e838b999cc79e9eb41c56be2e8ea62ebc58d1fef2653f41521373b8d2907d0f9c849f8b4020d690bf812938091fe639a3cada0d7d68adbbc211bb342bcb0af7910b3243217ef16e44b68d2cf9e43ce754f9cad4f25a7782609ff8dee5ca87dd39db322a3be42fec16fc358718924cc79871a0aea5e91ce47489a83b206783a423dae6a0343777fc4f044c72fc45eaccb8d37ffb15e2ffb7c416b88ea7ba59950eee96b4ef3b1f6940640813dc531698cf0a389dc7ca1bf0b3116a95aacb34e85c3f6644b041f408e95830f989839e9e4eaa0b1ed7f053bfadbf19c44e493415ecb4f908bcd649dbfa6f233a1d2356c3e9fa1afcf8ad223f61ebaa1d82572bf0b93bdf2e7f33ee61c10ee5f712818bf88f3345cd80de9e35d7ddc2b9338244e5ae64f74e49df526c56e4df5b5dd0ab47ced783a239f24ab48eb575f830d4a6ad01f80b5ed06b17b027b1f26b0af627f91763c97d81b1d647f19bd5eb2e4263d13de3f8ead13e0e4351d62b7dceaeb41f27e26f1d7c4714efcc9a4f91ce37f5f8a5d487a6192579b69ecea132fd42326447276c8797df1ebe38ffa10abbed64ef854467ad362029c1f61a6b4a60fc47d9366ee13c6145d2c7ac39f5ceb2bc44ef3387c5278ec6cff8ccf7d5e81deb2abf46b6317b9b24e80b301dd8d49b8db1fa946be48b00738d587f09cf91b5c3301de24cdb543d4c7c29e19d21a60942397f179d6d03365d586f49db9262067302d00c7fc126d72aae3356043d9b89a528d56471c313709ffa072af66d2cd59d9032ed49c3b1eb85c436ebc82184b6a5620cf18c56d6c2ed737c4b6807371d9aa96fa59d3553d1b08cc2bdff07a5c5764f7e2758eb1e717839e739b01e6ebb84882ce774d80d351078e8bf4384c1cf1893c0f538c17bc8af20949a3e16f76557b67461a4471833c37fad70ad7eb32b386aa5fb0b5642d25468c1d6b1b9e74f33e9e0d1367b87bc6f83f8d05e12819db59a8858431494279fcd18740fda958c6cedc0ccc99aa8ddc63f59a36471e952476aed1f5476def27c2ea498c20bc0771376b398cafabb098e949c3359557d91eebb6ebf1bd866742f32964539a8fb0066258f7c8252f3986e518fb59a3e2f36e0d12de54ec54efbd4e791798cbec4dd0394963ac8883eef7f39c09873d29de12fc66b133faf19b615c6de7da2f88a950db37deacf7187b67a863b92ca7894ffb15f1c43ceb33d98bb772bc8fe08db4739c21f693c39c701aeb59f38ec12edfa1dd70cbcc42fde8d327f5c284f1fa18bd51be5ee2828c9274cee3d721f1c57e5bbbbd8d9d76f16fe9c878e218d4a4ebe21addbe877349e67a56a4931ce767d5a36f90bd5e937646463db089a9f68b844d43f4d95c57ec5c85575b423f9def1b841b3d15e85b74367daef677e3322ef8009e07fc02974f2eec561b284c962dc7da128c7fb2584c1a8c0f051eb33ee0dac66f942c57db6edf93b923a9df1b2501f6e9ff8b3df33a1aafa4cfa05ba11e9e04fa16613c3b44a42589b82d5ad37ffc3e84b1917eebe8446351b5d46f5be9fff41971be3acf06bda79cf35e62fbe457b845aa3f53fdb3d8ea88f34c2ea48744736081bed9df3d7be1705cef21eea94edbf9b6122f0efd6f47a9dfd4fb4099c4054d43ffc1676a838d9bdcfd2dae2edcccc7acf68f5c73067ec3a4ce64ee908d11e4235c12e2b17579e78bba45ed7d51efbecadb4588353295f6e827f6b7672bac5f255938a363ca94b8bd1c9d61dd8a6a08e58611378751116f762bdef06f8302f79f847226f4cda40e258e9971410e21d6f9b82fe8cf1087020bb8bb2c8cce0eeb32a7c56cd49a4f4710ab6439e689e435644d3601ecccb522ee2c8827a5dd0880ff6d17c87cac5cfbefb44f4686deedcfa4c57be9cf4fb41b5bf722eb593bb9dea7126be9121771b79ea9ee21ac301abdc858dd51bccd89e0c8e7d612de027ab680f328892a8378959dc102f3c3df6d4b6385e67edcebe7362dcecfa4c27584f1c794616f069e3f05ad60f614b47f116e8cd19c0875a547b9f8beb6836efd9c088325b1f7c43d7895f51fc83bb42ef667c95ccc9469de4789cf10a6a713e66d5eca09ad3b7eadb8d22287dad4d4a5deb896ecc71270e8c44d6645d952c777ca557cd15a89b47fc67e2cda04c6b78b6f6dfcff2469a54f165b8e80bae553e8b8efa4ad5b99a12f6368ee3e297f3bd5bfe0dd18c7bd7403352066010e734ff9d45db0115a4c9c8860ff069457f477a8d784f9e8d2f126888533880314fa895c1bf10557e22a5c4ca847c51f96da11797766e6927879b6d8b394f86d01790e3bbfd99f49738ab70230c6a6352e77fb39d62707dd9aec7cee14b1642bee0de899928cc97c79c1d955fa4771330e14b70f62b494ee9a777e06eef3de874d870b5cfb43d2e913a823bac2b9d51fd3db80c777028c0ff20fdfacf365e6b58a6322633ef62c19d487c8203736883789c413096d380c773f9c93b9f62223bfefd47671a0d42fcf428a33a52f23f3156688cf9b1c282e4da40fe99b31718d4f09c7f20bb8db8cd313625865fe234801bf346fdd18b1449b72a230586dfe982743dfb49850dcf090374885eae7a86cf673dec05c53dee05292964c3bd3a8d659908ebf7119fb13f237eb4b42f967a993d3586ce3c6d174360cc772bececb2de665a3d310fb4bde562a1e3a0dbbb1847af9fe9f8ca55b39ec28d026f3767dc23a42b848c91ff70725ecaf56743d757e1d933d096638547d94fa3bf60fe1fec24f87147ca1e4593bded5c2850bb665aef5588608b01fd20e02c78d1cb73626de2f9d623ad1bdd30ef289de6085b5f3e87a8aa0cec4343aa7a01c8d993b2c46fe3aae6b097eb7ee990157d84c49871aed784ccfe86bec857073725ca5ffe3feedb876eb9bd624df7023426e0766138f9e6f96f5117833f4c0202e6f6e865f11f011b278b7cf7f9c7bf19af20366b0697680cff62f81f1eba0b8c5c627c87ff3b38edc69f3c2183a986f3c967570336ed2dfd02866e3d7d125424cf0aaf6f552c5d3e240faafab09f1e6c8785ad60e179321f2911d07186f2491b4e5fc1298c101f3b9335ff23542ee57c05cb5c32c445b2e38ad195aeb05d611ca5ac69b0f79db19d50632acd95f11f3b8477fe60df33707acbbbd212fd60cec82873dbfa88f9c421e38ccbc31e55efc04f39d2df2d7b68dc4462c014309f9b14df2a57ab8b7c441aad6985d9066713a5479aeb9f2d3982e606eb92be4e9cd915338ddad313fc9e6c51573d189bbaf102fc5af2303ebbe89bfd5691fffa27a15fe0e7ac713fa9dedbafbc8799b6a1457c773339798e5a84d26fe2ef1fbba2e43ecc088eaca43e22ff635ca0fd43afeed7b7d7e132a2e61b143dc4c675348f361b3eec66e877e20e65366c392ae63ec09fb75b7a641bf1ef53bb3700cf1f0dd785aa546ba1bfe97a8511ba85d1fb1f77e108e4f5fa845083d16e968ec47b4ff4b5bd2d9d7cf80f4c6fece3eb6c9057e671f41bbfefebbd97c4611e4a42af71dea49e9803465e352e66875a9ebdb739df6feb0d851ccc33afb9a05bc32c35d7246ac47087d2683bb9a4465285d8f187df1036244b4471c5409b8562bcdac1bae2ff826897122fe160f30c8f52568ad0bd6d136d4a3b2dafd7fccbd5b7ba2cab63ffc9538683fed652ba012299b4315c81d503e6d0b1a134d543efdfb50638c0293f49c73ed3df77aff576bcdd62050a771f81da215f57960bf69ec0d693ccc0117447a3cb245fd75c1460c6ad2de0678203e77a646ac71fb4a1ff65c180160f10183f4fb813b9afd206dceff07bc79f92d52e71f5bcbbdf6583103bea1d81b9e1febae9cfc0352392b8f8023835c13f6ebc200ff24e1f826ae77f085347f607ec34cca0986fcee0074ee3c59fbf7a0267d6cd0be673adf567d62c877d0ffa380f731a7d8739b78b42610b3d27cab20b7f40a7769a6b3ffd97b0f78df3341dea3932ec433ce7751edfde5c79a44719f906ffbb700b06e8b927091d6b8c07ed77bf719f56b39f814defafad5e767de42aef3fffb33cb06f785c43b9347fb57cface327fdcca1c20a52ff147ac3b70ffed58c62877ffdbe53e83b2f0af7214f65dd1eb456b517ed6733dd643f5ee9d9820cb17582db18cf9ea136acfb32e300f3236ec01c4eb313d603c473b8179b2fe3a46c4a7db3633afbaa061ddcc2a3fe8e5ee332dd615d4f90a65d5f574bcfef74dfdb3d62e0159f57add3b714b81cddce4a5875956bc8ec4475865b857aa422c19e0ef281a31a6b4c59adcf03cc75f3ed71baa2fe3343afb7ff9877dc7ab3fe3b933562dccd82e2da6c79c7df5be8bde1d3f30a8db1ddd6ecb9f72450ba7eb72dbfe29af3475decc395b6997f0ba02ea8df4760dd960f3587215e02732fa6fb02fffab81a29cee32fee63813eb9d3c452383e359eb9d50484d3064cf6b25dbb58fb6f7d8cd1788bf574e28a3f87879dde97715d4542dd733eed75392e1af7531d350f87fc1d7e56078c096ca5498bb9a147dabfcfd2f8781f2c2db0371099bb16798353de4e11f3cdaf29d4bf46845d8d1eced9e5b874eb018ecf6b56c8a90b7b7d96e71e2fd71c1e38b75903b83ed0727e882f40ebbd9986e6665cd535d6bf400f3512a75bd1733fd5ef5687cbbff2bb8039ee7e377f91c837d7bf6b9e6e25af091b9111e737a69a6f169d48d364c07d1e491778449be389340ca34af5cf1e3ef7f8de3bc65ff7c9fea5b8446cd68eff49ff2939eee8be596077b104dc5755835e5dea5496d6fa3cee3e7eeee7bfc9bb834d43e3f6c6c8e704d6a1c35d43ff77ccbd45ea0ce350d4cbca74befbceea33e6fd907be4c6728c6bbd6007d0ae8f38f23dda06d70d23af749bb82589cdc8133a5f7573babb7e3a993db5d8c3b2d0a39d7fa7f14b30c66c39ccf3a43ae62b9c4fdfe03903cd2924ef97c866585f012c729c81de9e9e179cbc64277a8daf17d1136a66ced6d914c744ebcf78d161b2fe3aa7ff57b464fc903337401cbb88cf5aebb45c74cfab7afe36d5adb0ae7ad1feea6d4df7b0606a3e352a77d1b9662208a7bf5a2734df2aa3bb9758c523fc95be2bdae04edae7eb85af309e71466bf8bb85df5b08e42742bf7db06ebabc70c1ec70a8b59cba068f51bfe5f7b0df2a3c98a3d148f7636d39460c2ad591b3629113e66c9c130f53cdcf661a637f469fc1e9986afc19b3487ba25fd3a9f36fac69d21ae4ef85b17c3c978d9141ba2fbcad2d7d2636b0d6b6ee72b4265f47fb74a31e5e502bfc85affd7eda5f63f0243dcd38be6b781eb3cb8d374596136ef11d7844e20c7b679414c7fc2347cf890fe63dd2fab0cb31c758b99a5d568093bc3985d227017f09e4ae5f03e827788c13cec47fd69af4e41f2cdc477dbbd4c4bd43a28e1b71d0bedb1be2dca49bc15e2ea722034e19d7fdbacd9838ce5f8d63e1fab7827ad67688b519164ac220a5ec2a87da5a50bbb0b4c6b7a1726ba774d98d11461872c065984d2dd4c6bc8507d3827517982169b0228f6e03df7fcae763fcbe3957f1f517315ed16bc4ddbbdffbc76746e653ede605f5b3bc747ea1befaaa724823b4394ae00c38e9428f51b2557df5c7f341cf31dbc7f52878b060cb87383f71314eef7932854dfbe2f95d733fadb3451a06e51e6a72513a9ec9c3983470dbc2458f19c416f1f472a5fd6aeda1366afacb867d501ee87948bb41b4f2445870daa7bb78ba525c0fb54f1bd8e3f6b8aec71bf81c3e6915ad026bf2847883c7dc2a3b7dbdb7a7dfef5ae768c19ebedcdb35677ab0b7675aabcbaf1c1f7ed3cc8f587758ade7e4f5af39a953de4a23c27db7387ae849e85ba48f52249edf73043d037070f22db4b5bed0a7b18e0def6705633d0f331fee29cd3366a9f168a2b99adb2aee948b13f1de5bd4477a0eebc99baabd75bf593f5b05786679627eba203e1dfa7769f05eb8a4d5ab713f34c6035d994baf4d678dd00757bc85c7fc8d348f614f51dc2bc43179af15624ca27687fe26e299213f26278dbd9474e027e7954135bd9d11ff06cf98752648cbfaf98bcf7f07733d97467adfd09f8be27f36d7d4fc37b097df6bf2903edda1f9438feaffe9790775556b62904627537baeeac3b4958b31ea42dc756cad3ce11ee725fa9f0fe6e569261426e2322db8ef968aa7a9fa3e2f12f3ccc2f5ef05f53f32f64dfd7e7a9b2516eebfe965165b157a4b308ef1afd7e37854ae3bc73a2dfcb739b5bbeb1366ab9b5362afae3d8c5fac2dc6c05a372361f47c7f37bf7b4fe323eee5a427d47a74cef04fb1b275f946f85e186fcd7bbf55d4736ea7373a5ff19c89029bce0b79a9ea4aebbb6ffbb8d9841afac578acd5d416c525c3fd36e86209afcbf17616e1543e63641bed8dfbc7b3adfe7cb6497dafa681679b931e1bc4fd7ea7befdaa301103934af42515cfe151cd9b6e9ce7b935263fb36f95aee7ef50a3b139534e591d205e89cce8a53b5b86f9eada99aefa7c15b41348076ca8f1a66bb4660e3a17ea730f3506e41d3c084481cf7eaf206670628ce1820c62b3c844afcc648a7bb097941afb3879dda28633f85f0737cd55cda896535d711e38e485c2fb39b9507183f2ecf45ec3e3c9422ce74f0978d495fc50272ee7c82dcad837d24b918b13e4d9fc4431f527bc68a1b1b3aef107bce85de345699e08d267efc7bda87dbd4f493ba2dcf316a03fdb57fb54449a428d3436e445607ca7f3e7277033360ffa32a4c3c5d35336a8458156df61b7216f5081f966b0474c8c158e2bea59a71a1fd0e6ba6fd1cd89cd4863dcda298e050b0285b1a13de7328d2daa5375f7a0eabf96440d21e4bc5fc2e3e904f32240ac3bf373538d919b6453cd39a07a6e7490a99a5722c27711add6fc638cc6dc4ae90535d3285d8e87ba851cf448d0a35f9fc70b387b64bb8158b026ef65893173612c6f05f4cda7c9e7fa5ea26a03898718d5466388748e75479f5e07c73c6d406fc0ce9d476c7ff5fe453cafe6ffb6f68f1a8793ee6ccae99fec1c711a393c97d098b1f15fcdabd08e9c6adecc2887ea7e972bbc757341af9b97f0707a7aace5782b36c7f96de6e78a7f9a2b17c2c9010686bd84bf27f708cf99f582ce86eb3b03edfc69d24a35568950efca0d1fdf6f379e5ee1fd028ec5fc62035eb2ef87160b86fe9dcd4c7b4be9f9dac5061b5a2bb87f5daeecf39c49d70979939dd5fc8e1e74a0bc84d9d102efeba5823cd193b58f3ccd8895f184b8dac6b6462f00eb46efc5ce614fbfd2395982aeabde338b83c2842e08e3ad73ac2467b88f3ca3467a8d38c2178163cad4f9a56ac7df68afe1c7016e0f31531cd6dd293c8c710e107fbd79a9485fe0def33c07bd3ad23bf224e5bf56436b7f49b54f9cbbdd33a85a554e7353341f6b1f837aae9e3bcffaccb7e4c7333f2b8efff4cc9784dd5f11cfe4eb5e58ddd730ac5f1ff775a7ac59cf97b265805a35678d254b77a0e5acfcbcd5ef77df57f5f8e0c89e3ed418c6a8ddfa05868bb0615fd466fe12b709317264fb4e6ec135a2dabcca9e87aed65164f57db12fe6895fd61f709e221c450f752dcfac34672e1c41bedc60bcb7a3b8ea95f8d6501f1abf52dc90583bd4cc117fac1b305d1fbe3c4bc0e3ffa3ba01e9b6b1046a78a1b9bb504d193ddb44d5ee085bf54d1ab8e724c4770a108f67da94c77daa1d226698ae5b1e19cec3f3987292a80d492bfb5b945eefc4f30d04ee332d78d44738ae892d76c8a9bc210f52d7a4597ad27efe5bd0fbf3b1f7b4a438a67272f2b0796735fa5f1f23bac79f05d6e0239ebf275fd6016b83ee7da8574d737f652c4725f14a1297bc271681833e15aa46150e6bbb6abd870ff559398d5a4135d5b1047f3a4f38cde6a106939aa4bbfd73ebec80df6be750cb867aa71367f508be134dab45831af0df47258c8fc7e737e7bf5ccb563dbbf57c42fcffb78293fe49358afbbec6ffb0aecdcc8a78f299dffea9aeadf091351f4bedc987efd6244f33639492ae68abf1b246055a13fee6b187322aeb0d9ec953acadb170ad7c421a8587ab40577c21e6a3f7f8718f78d51e6cf62fdc232eb84720f7d6a8af6b88a7dc30fb41fe2b8ced81f313f1f139fc77e62fc5e4578ac9fbfe1369009d4d7c7f4eeaec489b969507d2f817f65a6b2a289f5406f554c220a20f7c26bd3fec05bec26966b45798771acfcfe32da751e67beb2cd2dea6d82b89299e61706d273972e28d26f208714f9c2e1ff468b773cafdbfdf03f4d9e34e3e8ed0c711eee9328d4de2547db7116fb56184c1c63c1bb91758d7001e7848bd7203f8bf71ebbd02e6d68b8239e03a558c841a662a4e9861ecd84ee14cb6761edb632e8a7120473e31f6657e7efddb17a58304586f467a57abf0ae7555902374f9c64873c8ae4dd279959e3a431ce94aeab52166ddfbfad93edc0b8e2bd33af7b309e822a7e2bdd7833f1d63c5df61a3286b8ef11fdea13ae3fadf19725d56117a7e5706e18b2e3ee087c513f1e0305fb22285ab54ff86187ee4e8f00bf20e24e9a49ebbb80970d0973bbdbbe288feb176e416d98e7c4f48b30b3d0c2f11fe7e4cef3704fe878739f625349a57c417ec28365febfa96f429e780bda039ad21d673637b49fbbf17cc1ba83159fcceea0de82e241eea7e0736ed99bc65a423d5d7ed7f135ed53b3de1d9f5a035389fccb04ec5b09f940006e23ad2fadcaa3f6e4e43233a52ce5f727fc4a846925eba3caad714b47680634a77b3f2e8e31e655a950b7d17d0d956dcf948fdd6515ca38fbf65fa6605f11d6a486b8cf13b6171d24c691a43fd9bf21d7eb1694fe1f6b485f114168ec12bbe979a2d700cc83f11cec1a1a692a778ab8b083c6e942fa689182d368d1aff2bcf7835f69be3e99ca8fc85b9d21acf3ff4f8a7e029dcbc848fcf752ca906879e19697a426c95b72a8877216a5b42fce3a137b6c2ca295f8bfd0efb556c3ed4e38bc843927a8fe998ce5d6fad38ea036d4a5bddbbdab79e705e45c9f498cc1eb429c1e75df9e1004e15789b5eba76d0a7deb8a8df8e79fe26f17c88d2894d1cb36241382171ec3edf706f216bdf418d05d055fcfdfd1edf0937c9808b684b9c4fc638009d69674dfdc92c474c99bc49983b0bc0d96b4cda35a7f8223bdda2c7bcc28bf7e457f311bbe48eb5fedbbef11ef175cb7f80f5c0be16f816cca33de66c828f02f43189add31dcf8b7f769eaabc04fa9a15e69071cb2e9fe3757985585ade214f36d7fddc5098cb7141b87285a391e1434f3d11a443aee65cbc10cbff10dfe5ac8cbea720c143611adbd37cf08e7c851fa4fe3e605e3de14c633cb3813b959eaf140b055ef5c8a1cac291f63a5039cf7244ba6fa265a30f782e4fc01c0fcbcc77916346feb636fefe02e31b5ecec113537f07dec5827c79a19fcec837202a14af56d53acf25780e2c8a7a79159a7f3b8c45f1f71487716701964fbe3dfa96d4ef01e51599fb4aefa0fa8d382bc48ac5bd3e0ae95ffc5c29eeb8da7fcc826a5059fe8afe00f768415a27a6c9b16e5279f520576e508344e7f27d2f16fa3ecac7a5cb372ad7bf55a8699400d6fb89b0d0526325c0eb2a4ac32b6926c039d618fc37d5191f7fab048dbe418db1c79b6cebe5b8a839c57add6f065477a9b8d6c2f5b1fe35e823b369949d6641bb5ba2b7bee2b420b7ee6779dc91fed4f4735db35175a774f6f17ab95328cd6d93f65307f74d53630bf7f25b38d87738f7bcdcd95d62e459013e7c89b9bef25ec21ac509ce9d347f234e23ec89ec95a166bbeebfda3fc87f7a51b65e80d814ec3b8951df7782decf566356a45e27db74875e2bfc3d8ea9ee2550dff784d8d9ef266ac150bf54ed5f4feaf346e99e0c759742d25d6a1bfd3b01cd35bb36e059c55b88b870d42c5d93eeb674ff46cfbad71b0e14f6cb703fd6383fe3ff2d383bc06b259faf53f26c91efb2567d220ffa30ec4e31d5ca264ea77b67b41fdf27adc6f3746305ba72afa47d10274b33426e5d60474f831ab68771d134b62a8a8348dfde8f0ebb37d8d3779eb426102f02077d556a4fc95af3940bf4c08aec1f7788f1182f52d240372f543b2b1c09318219deb77a9fd45831bfc83cd0e6b5f29c6af084138b53f306f19ef25081f5b2cf09db7a41cd243f389e88534c58f1ee7dfadaa34004666e606ed14647e48d24abd657317bc4396893d173660179c8362abf68a733f4ffdb6c159774a2b8ccc46f254d199e480b351e72699f90abcfdb82f87bf039d49bad25e6518101fb86346201fe03dc3a7da338487d0ff8c8d9b0479713dfbcd73758f043b3a37343e9951cf35aad073e319318b14be672a8f5fc54d5c39a207b622ef1e7759f0af723a6cfcde0883a07a4db6cfbb3723f7506fb5ba4f63731f52bf2064f50ebd4189f740c7e80fe284feb7bff6f37177cc9a733a6fd6cf0398447cf51e7c8f94c844b7b72779ec51cb9fbdb39f5bf2ebf49334c189ed763df98d2fb48d2fc754bde6cb1f6785e84dc35c263f4ace70af68bd8de73574e3e0bb98bf515de86fbe97d88918e52ff596a8dcf0be44fc9741658e07302bd2ab5271a12d6840735f9dd9451ce26f815e3ef69e02e6ff8ff172bc3ff46ba8d95dd281e5e8cbc87389118977b915a8b4e44f7e9a0b628e004a9962f3cab7b763c83bb3d6d0f7da7c6a45a26d6a6ae016a45457640b811261df4903623f2ca19d3f792ecf90eb816b99189ffa0a3932c7ed03516c57ed7eb2fba9b2e3e77f8f164506f709d48fa5c695396863fdd341b8bf87f5477a9e85e38f6c291cba3c6259d20bef1d4407cbc33e93e635bdd0bf8ebc3dada942d5deb6275df53358bdafff837d00bfef05d5c4b8a770dcf0d58802e57fca8f587dcdba83c9c1037c45e601eb16f11690d658cfa89efa5a179d6efe8231c7df2b4ca2479a28f086f8df1a227ad93d2b18f84d666fada8feba8c77fa7789f3057cc02f449bdaaf6c712f7e8810efd4b015ca9cf3af46dc4a11796b7527b7c8f4827265ab58d4f396e8039e7d65deafc3ab11bab3f87550fdcae6acd19e9e6ecba6c77584bf6400b42509cfdfdb5bb0efab0f43dc054ce284f2d954733c626a9ecd6411372173105ee2d3cece8bc8f9437e89c4d0bc3bf460bd0e62e5c3f277d63888be8fd516f4ee935adc4638ef88dde21fa2f7731c954ce275fe786c9d2d6ba3aa40df9a96eee532f8f6aaa3f6582be4ddc68496f6c730c48ef9de51a43669e296ed7fe6176349329e219b366b65d686cd73786ef2e8e27a4d9ba78ea355b6dc4ea2d028e73c10ed007504e8385801a8a817d8394590c75a590872a56b6aee75c07f319f7af86b877637ed7b970f0f87d710f8ff20cf9879807e06b360a2d53efc76b0feb14a4996647efb017b09788389809f65c8ce05572e2073293ea77c151908ed6fb60fd7b210f6fe141bec3bb11ce938df9ac706f929347ff94d659543a6c38ee3fd7fcb1ae5c527d0db57523c37b0aed8da935d6f4bb6fe8f3699aec4cc8872fa3f07023ded8a26ca5cae7e29a598c340913f9acbd6cf0f350d423f5cc8677047c039b46eee579ed9e29c73a513cb2757ceda15e18ca2bd78933d2aeaf470c3c3e7fe2def0b4c5e7ab6a7fb426fe5ec6aee8759216ed14df17fbf839f020f788d9e0e6780b9a290bc67dec758c6da82f8b256142faf5ad62f7489fe9aade36c4e96ecce84b9e707d276dbd249ee8bdf54f3824ddbfb3b9a535bbe8bd5a4b6b4bcfd4e609e2468c8feb0f7c4ae434dafb5ae739d0fba789fb94370e0f63bd3f95e9053d3ed995bca5f4f594660853be2910cfefcea42d17a4b47ece2356d7e44107beb9c7dd3be9ee9731f2fcd51e5c931ff588f672e569a73061ec1c1e591be17b0a745dd1bb75f3a3307ce5b5463cf6e47e69916b9f491de377f702be56b25edee8fdc4361b132e04ee474e63e5dba6c6ba9f2f31e968139e959e5bf76a93ea9813aec12c5d3e7cee51b86f4ed1a0d71f1abb6b785775c55d69d3ba57dce3bdaa350247dd916ed0cafa17d4ba5aef18116e1275b6a3743c5bd902ebeabcddba542f5531d86b582bdd6cd5ef83fcdca33a6a54a5f47ec53954dcbfc7334ed81b8b72f9bc952be21ba9ffcdbc59a9bc95babce534dbbac4ddc9df62f0896943db7f8ea98640fec5c2354a8883b46e77e96abc24d5ca7672f1a7771998e181e238c32eb5eea8fadd5517cf537f8c29afdf87df743687e73bd6fd4560efc89bf09de651f77c95cd1047e6def45acf3c7a9f5ee9fa841df9f9d47d17eacb16ab692fab6d88f5e5b7b08b3fef9fbefbcc5ce899d3192513d4325038a3075f9a7b77fe09ee799bc3a9257fe2426964a8b81f740a32ffaec7d542ef26ebe690a6caff2ceed9901ee85464bb8bf687d79a2c83b9d24ad2a8c7da9878276f57c63fc470a9d295e97e9357a401077e660e9f4fdaf0ab67e4de7463f7cf28557dc054751dad51f7d7cfb8fbf48c5e338dc5738f614e966d8c674269028f283dfa7abd68af3333ff4671ca163d8ae378427d9d482a2f0885e1b60ad4c0e7c9f4089e6372033d99dd2c48b1462e5c8bbc1dc531d7be2d32358947f4719eb390cb9a591fe6b78ab73ffabe006eaafffb08d7897c098fdaefebbf349f288e9ebc96e86b1ec7506bab8e7e9f1b80068553d44c6b746eb35c7b3daa7ac45e12ef8f819fedf87d4d7823c0c5fb29d618587a9b231eca28ddcd078d92f10b6ab418c44753fac80f7c69f624b39cd6ee4b8ee766827d679621af0230488eac19e537d32455f1be08f9a440fc9d8958a0a9b07f5db5771f6ab4c5c9f40dbda33087147eb1102e60c2bcd74263253ef9c439c2c3da7e163d6b9fee249f63fff78d7a9f91655811e9ad2a6c0fea7f24c89bccfc59b527bd5ad32ec8bf2709ec18f10c65c2c04b534ca77ff8de02fa2258db6be9b9ce37ecd726959da32f8939dbeea7c437c3be2747efac682ab9d67a25cff52c201f77133c9258ed5f50e7c7295dca133c8b6a295be7e1fa80e952f88aa65bbb331a1b89deaecc5dde02c24f2b6cafc2583a7f752f91d613abeff4b788d33c86c71dde4bcf190f52eab35616277f8f3df3487f70d0e37412cce1c34ffd3ad009c991535c585837a5feee97efe0dcdf5fa6eecb0fd39353d5ec95f209dec5148087b090039b1406d619293e126c8471450b3a49c8ebc36b206ef877e91ae72d7988a8faffc5a95cf2aed0ba8f1477fea18e30a53c332bed86f2972b7ab639b9931fb15fd76c873ef45ce50f4c42adee294ee491b42ed8412e51bbd1ce4977e37ebec533f099d8f2e5add47e600cf1edf22db4a313e935b0e329403feb13f05a99ea9b2686614bc0e18691d640ebf1b874964462f38adfd35aae2cc375619f3e78890f7850b6d262cec0b7d254f1fd56c74c95c25c54dc9f46fc7aa375dfe3377b9e4c28eaf7c0252ca5d851fdaccbcb401b863d6bcc548a5ab7ed661cabd8958da2f9e9853e2f7bbea5c2f3413cb59badd3316142ef95cb490fcc845ab5f8bdce4ec4ffbda3f75c84318489fc2ca7aa9706bda7241138a7d95ae34ee7634ff3be0ee3510cdec651990097214e75ff67bc058ee042cc8d6b8c3138694ab1f9e64c7e721093eeecff943745d8c96d26e64a0783fa58f60e7b63c49faac1ab48edc9e757f0ba066c43d434da6733b27a5fdab523405ba38b531de26918e606b41203e817629fcc684eb4ce37d6337a85b373f85b6956aed4bbaa5df0cae0c1b8425e44592f4715d4b1e785eb3f4bac9d45adf2d6bf85b5c72ad737b12fb52fd4de0de327d1f3378dbf5f3fcd1b9b8f62f02d69026b37bc77dcfb9a958ac9b2883c866ed87fdeabf34c60bf5d4488af61731c9bbcf440af0b74f2f82d3c5c12c29e906f22f4cec63336e788c5094dec617e9a6f8c2f3fc4ac3d7f40669103fd1a973cb494ae2ccda99ed730e02c64d32fe691dedfbc7cf6a0ebaee74e2c1e31e6d5fcb6fa0fb10c7f85a1ecbd57510f2012bf344ef6d333cfbd6994e65641fc823fbc93882b8cc98dbe17b5f51871535175301de25e1686eaadad64edbf76734c7945c3fabf85c7cd0db9becf9a8fd552be3999954e3757feb9e74bfcd9f3c529ebcd6b65f02ffbb3a1f94bafcd0f3a83dee6f75763d59d01cdd3279ff0797fdd32990610ab5e11db04d72d0cff4a6b6cf84e8bfd14f19fe6b544ce06d5c325d6bccada1f07806f73104be14480c572a26344736eb14e1af4b2f55ac96bd4ee32674102bdf6a8fbdc9d4ce37479efaef7a83919d0589c692c2a15538b2ffc7bc501316dbd7f2fff453a3a66047e53be386a2f6ecc1f7ee07e5b531c9014bfa9073cc0abd9d10bdecb083c90dd6b789800e6241dcf0ad287e613e8656492f4357f82cfb627e8bfb7875ba0701dd6cd7b6a5980fcc30bc4a7ee3ddcf39be6b4fdef9fbb0979833891de4b5ce35f869eed73ecf70a613e41cce5225e8c45c7a08dc16b153d4ac48c115e4263dd9bd712f3ce2f638e14632efced48df1f239cd5680bf859cd61d271e597cfad9e899edb8931961aaefb60217a5ef6f1a4f7c2ea709bab31708073171bf97b593f725db7f309e21bccc3a31e42732beb7ff339995f68ad4d77b4c67a76ff1c34c6f5eb167f37cd3623ca75544d3bd35ed317adab998eb15ec40a69d1b318f76e1daab332e157f2136773886d935acdf79fd21d786f5af284de8a7b5597b510979d29ff0ce8b1de51ff1efba3b2069cdcc696b0778adc82beb7f25c7406718bdfe33effc1185bcfa4d1c95837b60b3683bd82e9b1dd1e4c185bacb3c53cb7492323497c33068fee9c25143f98babe9d77d7cefc99e8d644c66695eb6bac4aaf91a6ce7c8fb0809bf83be21f3c4ef8a0d2801a23d3de3be77bcf5199ae863914e909c65945fa2c2b7924eca061e9f1caa223cc07858bf2ba7d9fe613c6d29e989daf881bd5b165b9983ea16e945ea70cebb5ff9df9cb364f2de54e3dbf2685feefbec07841eca3136a17cf1ffb197accffcf381cf97ea33d3f9eec6ecf404ef8be817925a64f5d5cc5557eacf004777a871cfd56936cfa34f4cbd2de3eb4873778af3d070fb8670e79ba0cb86be904394e06ae27ca0bb4a75454ed9bfe39c07fc929eaa51568bf7f6991162f1338ffed5f37d5db4b23a5275e1afe08ea02f994a9de2bc472457716ebb8561485e2ec82eea8e4e100b7289e904b7a955a03985bd4fb270ea3503ddb8d1561febacd48ab48616dbc186b2edb23fdfbc564a4291da347a0ea03f81643ac99989f6fda5f033d2bb5ee443a1efd4ddcfbd739d3fd016ffe8a7bd725dc0716f1fe837d3e076d296684c75ff4ef7f5f23a1188dce3873f3e7dadabca69ef9313c9c461a7316636df413169ddf88bb9a938e00e968d84df68071cf22d4e792df2876f8129b97ca59a17d6aeb3be31bc073a9ef8967e40b608de8e3da3dd9e4c7f9b8769bb1c65124f2f2b52682b4c2fbe50d62a17c273dac95c035bb586cfaa4f8405fbd87734bfee0db04b4592373f7c67840f17e0635f1661a35ec79edd61f6aaf62fd37738262a9af62f8eb133edb03f783e232c86715ffa1c09a619cd1fc610bd9e66a9e44ea4c6da661c2665b27a798f4b8752be0b5ec41af2f4c774eb1d82d3ec5acd88b8478534ea303685c729e1fa5fb3cd09996bfd579d904b7ca7dfec37be8f6c3c6db2aeea49edb4e7ce875ada4f943e183e26c477c9b6b45bea4d64dafc732db2d1ee229a3418e61b40a5a31ffb806e2a4d71ef81bbca8c2c947f1847414a654931ceec3dba3fc432edbd05c8d98657ee9791169bd85cba9841edd9c673b5c479ee207c7dc5b684eb4badee5f7575ee4853581f839f167e4c74f6715f99d11a6103fdfe8bd806a6b9cab7a59c17d8aa1d02b4c3aa4ef37e03aab7744ff8dd7b4689d80b6fa95d6edbfb97ffec3b5b26c75af60b04602cd59d17bec87dced2f30cb29e1bc03da47177281f3efd3bd0ee6cc506714f9d56576420df3c90c39155fce6b987f88c3e684c36e12aa1d0710633b62debcea3383b0c8d62f1bb1c8386726b7007bc11b3b3223a86d0999a06ee8c3bd9c4c9ddfa8de3e70b0a4c22a295f05d41a9dd8745f1b7ba7afb9fdf29a637d4da9ae399926a85ba0bd84d3cbac44ec13791d77393ed6b60cec6d38950bdc03897b70e1b2af7861fd9ea57a42e84d9bee667d9e50b76bf062eecefdfb5afb647b6f918a155c23a45accd17f232c0c4b76aab710c593796533c4872b8f805d17239538cf98ab7db0b107e1de117f6a4735faf68237b887351fc4dbaa1ab043bd251d4322ee04b005aad7ee011606bc90c27832d3fa87c3735df14f881fe7b5802bf2de425bbee1bc79f8be8ad76cfd7d333c54e4f7790c8fbb118c33b7a3763a8a48c7f938edef17f0e1d42713dbc5097ddb7670bf490eb5b62c72c823b64c9be53ffafdbd7b8b213e31a324fa86bd90a4a0f3d8c6fb48a219ea507f7cf76dffee613ec5f508b03be00fed88fa179c695c692c2f8a7a39ee7b4801ee93e4e14d7c00318aeeff596f8be2fd38f1bbbf6d42de680e29ea18ec64ddaf873e8e1ecc81d603fc4132c5fae5d8f96a0e7c78a7c4c13eff690ea818c800cd9e82fbadf83cfe66d4ee68fc6f613d42bc6bffae8234407f2cb1d7630271fc8731616ffd987cd7630263f01dc7c0bf86a449ccb5975c36e4ddae6c8a5dfe54dbeaf37fac55111ed8cfed93ea33c7e96e16cc117f6933077b63afe1f134985726d5d932d543825ecd6a7b3c7dd481a5dad96b587b3e5fec34b7a8342bdc7742f005acd99534744aa55d0ae3a0f68fc1da0d8f4c7b026d39781844e96d5e19e88f618d495b3ad15ea582dd591733aadcd23569cd0476e4abb9d37a4e708c681f3311d7b5a7b9c72d55a7700a97d5f81d1b3946cd96b0aa76e3c0d836e4b19c747336551cf7e88de6c4b6419e95ddc478ad48e9dda97e3ce448a1e60f00cf883cd4bbdfa9b8ff2279f0d8e3d01c34f01e97a4376f5df6ea9ecc1fafa4a100ba5a4abbf783fefcb3a9bdaa502f6c737fe420558947b587eb56d73d54ec5354027e53647e41b919d4e897afa4edd7fb86caa334a8a7797a410eeacf5ce12f55ade63d00ed6fed455762fda770fd3beadba8fbe4e821b021cc0d7950dd875868aded6512cf55d81bc205691dbe2783fcd00303b98c8bdc26edb8c94b51a3d6bd658e80232cdf3ebdc7637fddfefe02bcf7e5fbe6f3bdbf71aac321567178ef117a39f59e0f155e9f3827dd6ffeb23f8e5d1e4f7e0fc601f51384115a66f27fd97f0acd5d5b016e6ccab3a9a979a35dfc0138966f5bfeb957521adfb1aee2615f9c3d478b1d710ac553cb3e6b895a13f45cfbfe5ef20afd722ea43bf49365beaa2345e918e75d6d54c449b1d53adf69df48d4b9d1716b2a0c8d15e9bfbb0bb20662d32c77084759eca547384af0ec57bc5d9a37a02ba2b0fe72a0c5c9efa8e1cc03c7a7bf19fde5bbb94f2e88a14d9e2c13f7faef6605d833af70d998436f65fe648d89bb3f66c877438d4abfd783f1fce0d8c075d2c00eeacfbccad2d279d02c402c509a28acc43ee4a208e6a4d3d28c0af25bb80f30808793afea5ad97456daa86961e4fea7bfb126a80ddd7c237ccd76ef07e085fc0bb5f37edd077198a9f3ae833469cf2d16e4bd0a7362704ef6cf7cd078f1bf3b2769eea3f646f35e50bfd16ebadf843e0e78381276c8d6f8b27442fec43fb7ddfc879ab7bd85b8cb237f83347d469d192f2e9477c0278d081fd7e4cfdc16eedfae03c3f357c6f235706b3cbf767a1d160b897525f3843e26ca37167d5ace5bc29258cd0b7904c2df289ccdbb801ce7e760fec17be69e93cfbfdfa8c6581d691c26b76e1d09ae70cc0e6092d8176b8bddc3c3d5d29a0f0a6f181a0cbdfd86cfb0d658c2efaf6bfef80c01fffa19e06f9a6968452fe9ecbff70cb1d8bd33c40be6d8cbc8179b1b9d79a0ed3ab503c26d420dc80cf7728c18992bf63db547494cfe5dd969813db9f7f0b7f250021ca4ed5911f1dcbb38ca3869fd0861781e5f04afda1b17e2cf5aee3d9f38e45dccc217d50db1ec7d9fd26e167d9ff201d7b4245ccd56eb019ab395dd502ded52ba1c38909937abe6e0e516258d5b298f47b537abf71b93ffb45a5b22acee17f495467ea91559ddbb1a70efc3b2edebe31bee39a91b7ce87f7bf42ecf54a3f9f82ecbee5d2eba58d735c2c309f32d3e7e7897dd7b18bccb0dfffb77b9f99fbfcb4bf72e65f72e9368561c05f5f99de13b4b1fdfd931ac3d8f3bca175ded8788c7c810f39020bec60e0f21c5cb06f5d581b7a63d555f4af76b6c85e6bea7c47d7fd47e79dc9b9a50794566bbee6c74fe622c936e2c9fcc8a74af949683e65ccc155695bc97feb09694cfddabb8ff71bc16c377836b2d7bf43f6bdeb6f5df70fe3f3eb7c2477f78eefbf736567d39759e010f28c15853a8675ca46ea0f72e858175fd17cc391cd543d79eeeee353c462fd0a7aedf1ff41e8de61b1fe83d463c7a8bbee813c4ee0db52de4fe9f7b089d5694cbc7dc240f213c23cf3dce08ea45ddbb541ae8e8f3a335128b8ce1b883765a7e186b8f3eb6cfa91f6228cc6197cf89e933e1393fea53ca14fb6f993f26ded5da99cebed4fece9a1af76faae95a80d362bf2bf2e7e786497dd6d8ce2f1073b14daf5f60dcf4e7d61863b23e4e201d9cc452bd6fd5432bb93f92888fe7ba863e3961cd212a508f2db1261abf5f76390aece597f098dba8d3db7ff77e811c46b8ef54d346cdd665659f160fef57c54f8d031a666c59906737afadded702f40d95669dba977eae0f74562c067a47181f79ac308c818fcaa5cb1b9ce0883a90c46fcf9a5975cc75fd9c7279e024d33c6e0e038f24274e22d21e8b601eef46d597faefbb00bde9169b3ff9d77dd68c7c8af5f3350c35aca92eb5fac2138b7de0e79e0bed6db4212fac01665584c55cfe41a348e01c34ef5baadb24bfaee1d75cdd718ef122d5b325ecd3cee6e86ace2f4b080370b14a0ebd9d7450030ffacfdf2ad88fbc747eb911c6a4306bf46e5d9ab8bfd23c7398b1bceafd2ffbf5aeeb35d9cec1fcee26f119879fb3a3f03087b9916673623539d6440cc6f9603d346a8c82c589ea55a315e5289639a21e4d9509ffd3e7f78b0973f8f2a275400ee3f950a307b0d03baa97a1bebff9465e01fddc8d1ca6e76ecf05963477ef933fccddcb61a089dae56aa485a2f53243f3c788fa0de8451593bf10e8698e1e7ad752afd1ef2315b743fd2647ddc0d19a74b0eda0db33146e5cce88c775b93177a362bb0ab45d07f592a55d623e12db12fccecc1fdd3b62c087d473fc5860de2ec02b2b6099f707bf10edef6c477f532b607bed0ffc4dea7d760afb95195a5acf38fd453a0a1eb3a037c69da5f6b784316705610b71de42de63ed66a4f5059ecc6a2e58157ac4a4b3f30db91e02f8a10fb81c07eae9cdbc70a6f85c9311ea1b6adfb1ad177eca8d739b74e6bfc31e9d2d8da1ef416cb856d47a0e72535ed1d3a33bef4d597faae125d047a03926316ed07e19a3356af409d02e0882c4f3fe77b51ce63fb5425d2372cdb7b2fe50cb31c25165d41f72ccc9b5805cc90bb87f2a208671a2a34f5cb85bc5f970ad2e5077f0cf6b3525ef0c2fc1b57a57fa5a03ef45d10a7a8f177a8fd258daf41e57c6c37b34c3fd0e7948e467e0f972ef218f1cfa1ee9fcf2fc59fbe22b6e007b0bf75ceb24950972c90187ece54e73a73c9f39f2e9c14f28f5ee814b386aed276476ef30e6dee223b6493abb3fe80106235c1f5935dfa137ba3b2a609d2f30e6d1fe1a92ea08c27da5fd5ad8e108d7c1a2bc5f16bd96e786c6f3654d75dd8f7e6209f9110dcfb13f78aea40671c0f53956ecf1fcb0fc53af91d7501cb80a8e72aeefc7ad1467685bfba70ab58c377668f4de89f9538f4515140f25d5de0b70bf7c474cf554d8d13bc56505f7cd92f41dac67f4c30fece8609056ce9e7afd723e71fee6379ea3bfb99f629f233e19e2b3e8f76556b4a8c39f426da1cbe7946e1869ee6653f2fdf7aa6cbac29ae99d7cfaa38c759f0badd9aff0802a1635faef78c48bd9639e72865ea4248fccb70fd7fbe2bbcd5390d07a19f8dcc0f9ec0f7d6ee4072f5358d3a77ba4f7dc665af0e839bca37f835a87d04baa16a83fa1fca514fe0df50ed94b801a1bc0d3dca15e81df96ee19392a6a1f3c8647dfd6b540c27eeb7dd444fec1e9b3ef10c6195b0fb9b5997fa531adb2a98b38b933a39e426aa08686704a8734413f9e8d35cd7d561d9b476d16e1c1bd28cea5cadd6c5c0b2ecf720bd742bf560c4efbaf53b8cbfb13694e200697270adffe33e4ecb0763cf2fbc7fae0b97d32fec273a415b360ef0f7ccb4103aa5b6f30ce2713f22b6684fb90d6478eeb631574f9c887fda3aa7d2bffdab7e7957a5222dd9db03ef6296fdbeafdc334089b897bae28554e02797a69a37e18f9ab70e3fdf3b3066db8dfb5a4d14dd7592739ec9dd67896b7a443815efd429c83fa0a3e8d35f028d4de2320ce13a0e9301588c913e0a1e03083c1d998b210723489793eee8ff8dfdd5a2f8ee8a7c4855de13cdea066609eedf4da97f67485fc4de81ba44c801ef3cedb3afee775d9e647a8595dae5a576effe895fa795daab3f65a50ad01cfda6df3c30e6d3626bdb3dc0894d6569831d0586ee5a34e4a7a6bff63aff8fbe4b3c738affa78c316217850374a03b98bd52b7a6e3e3915c6996255a7cbc703556300adf5cae831036a5eb97ecf2dfc8d3e86879389ef297ab2a399ce01543e769a45facc50e7ab5fd6fe35c03a8d4804f5fd5891348f35adb699957b36d3bc25ee395cf15cc4d3531bc1fb13f50dfffe44988cf0b86c512f5040ddf8d9da207e24b0703fe0e669cd8387fad79afbd7c05892be86e276ab7e323f9dbad852d541952f8aecbd8e5a39934e7f8f49373ef39ba1ebfde96545f18daab11d155e4af5ca82c5ce253c35bc0b85475984bc363ff8907cda67d7d823e6f1e49df6d9276ba2f6d9482c5bd2d4f9187b047b5dab79dfba8fb1478c587cedb59c920fc4c4643571bd033a1f7e07b30bccd1b4994987b4c62eed9ad7507b4a4fb33fe6f2a9d41ce57532f529060bfa18ee415b6f4bb52a5b90bf7603d7063dadff5d0d8a6d2aed9dd2bc74e788caafdba5f1c19385c17f8b976e4de37d88ed01311622207eae5521cf79e8135c298c9a9ecb7ec0976680dac1c3ef417d40d09ee04bed65935fa3d967fddeaaded0fa55eba89a9fdc8177d00a35be8e61ed39b1f3a3db1795af406950ad7479239fcb35e99358bbb3d6b9b5a780a34cc59b247d9a44fec6dfef7d9db9c2b47a6bce4c9a03439d46b96f7cc419399f7ce52d798d00f3b62b94a68ad9fdc6acb2b1a620d80d7b845d8c4258144372e853942e6b7bbe3e734017df6b43aa930bf68e7e0aced6651aff2379803d96c94c6354eedfbb7dbfdbb316d2656759530da179c57d5c40fc941b817bc535f4a38dd147817c0220e61b705c8ce6a27c58b9e786e9c9fdba6f3a51fca2b886bea9f2db3ad0d96cbe50de4458d250b07360808fbe482fcf84bfa25ecc760fd8b5c83a396c2f31be9dbce17d4c85659e088b18286efad073cacbcb14f5d2ef13c0e418bfde4bc29c7579d4df3ff3493fb3aa57fdc36756dad8b04f914645ffccc198d13327bbf35f3d73d03ff34bffcc8d7ee6edfcf333179f9e5969f82a6db3b2f5a0de9279b8ff8b59b1e8e675cf1be1fbe81b72ee13f2dea69e2ae3fef396d7bd0e4fe6cdc45e8e758fffe37971b875f35ee52801ec2fd324abc7a055aa306f3b95975bbb3bf69e926df3f0bdee996ceca7dd43e30c783ca859f02e2e62355b9707e2527f8c07d861bbf081679fca59e5c1fe9ca056138d77aceaa483b3236ba8dea462a3c8b8ddbff620cda906edfd7d0d9af41777abadabb41f170971b5d31df9859046e3eaa9dda9be5522361ffc321bd2dfb2e95c8bdbe99d38034ce1944c757ea99af1ff5defe425dcfb2f3d778a690de62df48ffce22ff77ee35e10668e7a0a0bb9fab0f75b2178c73bf1bcb920f7ea181ef3e80fb1c7f831f668c6dabf0e6a69c11fbc8fe7c9026a6551cafe16f754620d24762fca57e4612cc5eea26b2796798e958640933e59a42de4dd83c71a3760c10f26ed0f6a0f090c7f5c69cdb265fb587f7fa8e94f413bbfb229de67742e0d6a94c10163475a87e9ce7eac5102274e9d27c6afd7ee4c05fda8e53bae4396abded3651ac69719c4d1ec1a2dd84ceba61cc30fdf459c28f808bb88a7ccc18300744d0297ade5fccfeb571e1a076365f0ed33fce712f1ef6bf2bfc8949792da832460f71c3ebb908ed74a1e68ee5eccd2201d9a13c75c6f2c506309f6de2ed75fdea956d6c5194a8ffa706b711d35f24867dac5946e88e717e103d53916853c780f2dd96acd5cd5cbbae2b576e493740c0f17baaea8e6a6d2428812312b155f46c574e72e17020cd2f90a585bedd1e0972dfa590dfa1641e693eee92b785cb27be44474fe46418258696e5e41f39bd55bfa1bc1c73171bdad5d40b97661e1f99334f1e06fc93b43f5d9fb6b886bc99546a343da5dd53ea25e54bbe5cfdd678b9cf87af31de6ddae3a8304e14c33d2909e5c03d2a0b09f915fd0ddf394f416db01dfec59eb4dd075160ce3fbc92bbd4b81ef25c43db4e0fe1b7d96a493166a46cc0af7c12b612acb2c7f226d35d5b3712bcab7bc90b33442ef36d6e2f398d3e39a6f1e38f0e511b9c3f69434815a861ce782fb06fdffc8e606f0eeaaf710bd3e625bf5d9863a276f897e0efa4e308e635de77cdbbaf5833e6155ab1e8557bac19853cdd5ab09bbbfc47dd592a499659d2ea459c5b00e1765d113d6232fd4dbfaf27be94d6131a26cea3e518d855fac15793e66d14fd05b47ef5343d8b9a134229dc4320dccb14471380d7314afef959cc7304e825787c9033796f40e64cbfe10ab32e4c24f3eeb3c58e63d8273675a18fe1bab97a48d883ee09ed2bc89ecc82da9e72e821161c12937e7767e020cab78d1ba134a17522a7d15dccf8c40ebb0dc10fba8ce3d9cbbe80921822b70713c11931788c29db2d90a3d4a8ada7f4dee7deda0db13c298fe5b76fb8a07da21f29cc0f5c3b5831ec5fcb99bd32b8dd5f84d3d45836a7127d4414eabace729a9da751651fcf22d005c8ef7c17f3261b6ef0ec6b0cb99089397977bc4f48a00f6c744c57e1ec425e4c31c0ccfe2b7e858b788df412efbe5fce1ecd7ef15eac62c9489f63ea27a15c6988217fb8f755c8c9d921f37dc3707cfa0623c154b913e5f38c499df355fed9dd651d206e4659e6cf79e0be781f2509e6e0e0ab3077bcc11f8dfa139bd48f256b2c626683d221e9234c5b386bc40aea5fbf1bbe205f7e523faab155bead7271e7253581c2c082360dcb6c40bb42e67f4cbc37a5c6315da6be4728ffafde599911e3b5c53dd6399908fba772f518b2a4ea2a3d63cce20de0e5b019c42436b0f3f53cd02df9f55109f239d68cd82ad1a47a9e626687cb1915e43adb83f625be43434f31b7dce13f755fbfc928e373e3bf4e1fc718e632f2cf359e92d246c96cec7d423547c8cb5ebff6696e6d63ffa8e535f99e245f3176188d55c29e83cb705e9a40fe696f78edec82bfdbdf4e60fb50b54cc09782bf224c91979650bf62dc0b81af6466e0f6a8cdd3cf85d656c3558f3bef6b0dde3b8291c01c6cd597efc2bbf6dc6972d60cdbd2c300cc205fcd43cff3b6a95ed113b6d6cda847a898433cb58436b4f69821ec60c7debb59f36d68d9df47031080b08ebb999c622fac608b36eb80f5e4f5d7c57406fc5a95cbfff9efa5c767fabbd947a6f6df080cbe7ca3758e9b9683c8731023d29c5d15267ae17ab7aed45e5e2f16132235dd801cff7dafd2eef6206c7b5b4ffd03e573a5291e1b6fabeda1fdde749c8658d3a4f168398d8490ee3c3c3f5d4f86c48a3f8253c56ddffd79a6531e48e1a7fb77588a7ddbce5a41fe8406f52ef89d969dce3e907bab2bdafdc91f446b843980ee3a13e9a687ed0d03b7a6af6580d867534c033682eb3bdb329660f10b351b8be5562ed23cafcdff83757a9b12cd3714c9e5450d7ea6222865ab31ec66123c2595536780f25227c2f4023de898ea7e453cfdffe71a5fa10e0e79a7378acae185bce65f7de5057a3349ecf39f7ce9171b3547f0bea2397c875af9131325606e269ac671bcfac8859d2434c1470910ccd45529c72f2654aee17cd8308d4396b522d2d0b391f47c92ff2694c947f14f54a3cf2923789f7b810ceee18d177a94f225ccca19b2bedbdf2b8f310f7a4b54b710f47ed082fabf6f9278e5f4238f82c1fc158cb6fa165bed3fd75ebb0f72deafd9b023bffdc9f4a1a03344ce415fb8eea1aaca5bd1f74a629bff80bdc86af742ff61bf2e3498ae354af7381de65e8ff338a3eed05da677f1ad94abb340f79750b0fcd15f5a212d67a2b5a4302346370ecd499b5222fbdc80a0de200703bb262c46fc158513e80bc23218d0a74599ca4567bda42efd30979f8cb7bbf9ff5ba11e5ded7b870e5a50e9a4451c86b3b6cfb77591e263aae26ad17c4cef8886bfca7bff35e904f358cfb73e4f4bfb3cebc1ed34abdac0c789611e2dea39ab0d30f7e825ebc989ee81d0ec6e41ab835f57986678daff2a5636550cf9225d345bf2694b6be59a04651a9f9f28fbf29343f88bc4dceef9ac7fac5f347e978b6ce503355782f9bf8afeef746b1a10db9b9d05c84126bf55aff286d6ee46f4c5a6401ea1a0b3bbc0336b832c3b69fdb1887325ae7f4fc51b69b3107f17682bdc5a4efa130ef63d20df9863e776e3cd098fd622d3862de6b99565dfcee816fc6f6401e7697abd63b837b5bf4d7d1d89e2e6fc41e68f0aeeb57737aef97d75e2757efc77ea9e306d9108e25515a55f22d6cfd573dbff7b95e9780db6c5e202f214d6ecf5fa77a8c478457c575bd18d4ecbfbadf31dd6fa5b86f7f3c3ffef1fdb244622f963c34386ad2516d2f9f92c615e65be0b1cb77fdbb1ecccfca99fa845bd6da9b16f2cbd32ec69a4c236bec040a73aae6c513f2a9f07d3d8f071a8df02ce957da729757e859b34d7e275dbcc19ae9b56f6ae23da83ccf85b99ca763e4de338d0f2c00cfe023df3e83b36adae7eaaa2770997ef22805ffd1879e4b249e315e43adbff419eb061033c4e485527bc752eba5782fd0d3138ed4fea72a2fef630df3d90aa8579d542d79b0c945ae7d7764ad725a67439e3819fafc8aa0add003304a2f35d49e31ae4c369417f8d2f6100fa77a2a9ed6e3ca7ebc625cff13639c93f6a2c17cb79a5f08577dadf0d907cfb0aa8ec839b2f213bdd724bddda8275529be34c4fb127aab1e871c227cb226a86d82b814fefdaef1e26ddd420c1bbc8747f1aeb5f107e70de4992662d5c55b78307bdf58d573016d13bef0e9df1bf462ffc98e8417ff7e5bbb1057af0cffd2d7acc646a2f331152b58253c9f57d6fe8db0d1e80f18c0b9cae6d542d78a08b7f25e91bf9aa574c3a2908b42f1b129afcd6408f5d709623a9ae727aa89e977cdae61eba3c6a097148793379c1f10f7abcf23e0e49f2dcd25039e65ba6a73e4bfa1ee6e7a9aad1df2cffd3e66e82da3b471a1073762d89f4fdababbde3ee4cc88e2ef1813799ba716fc878193aceb2f0bd4af49e9bd500da7df73e434b276030db32fde176ac6cb851c784798d3449c5eb4f7417c7989b0ce502abe196085baf809fa1a9317ea753e5927152fc7e958eb23d0f321bfef16fe9ebc518e9d5b13aa9fa3e6ffd4ed3576d4397dd5e3949eefe80f06feb9227a2db10f51907f9410cf15e61c51b2039c63cb6605fd8e91bf04a4fd1b9fef803d134fabd627eee331008dfd53d8a81e7411d27ea4f5f8d82086c4d844d4aaf69892079ad728ff0e1c931cb0615a83ad51791be661fa6fa066a5eaaa6beeebebe2dfc06f77d7b1a7fd75073d17a1f43dc501e65dfed2bf37895a3c6c5da67a4ebf75e30bdaf03b5db3c92dc05244d66d965bf45d39eace08e57d2c7ea8be0cfa70e5a461c90f37a6fb1bddba53351be8edad893300738d43edec02f51cd48b886d9921ceee3557f574f67b4bfe0542bc291dd387eff1fbd6058e6f512faf25c5b5f612319f9e5725384fcce8bae535fa975f72fcfbf734068d4eb66830dee1b6ae89279bee3add3b2b50f73f5f27a44dca47ddf7940f02e19be2effa779f5ad4c83673cc1de50bad8128556bbc5b4bbf115f2b4abd3f08b556143fe818bd537f1ff4277763ad37613f9b31714055df87ea728c0f6aa33e5767f46efa64ed70cd8a6b72475d70b77ae837b0454eb819ea779c249d99f07b09e6058af71ea096629a1ae3f8a116682a2fec28f19c2293ea5c8ac5ced7da2998cb0ac35be48f7c96a16fba17cf77e67f8c517ce4453a714af5da886dfb3a00f222d9b4b423c496a27f31379f0b9d3f4dc87f82f4c8f215f881920eccb7c2801c183ca81ff8715d0e6e847fd69173c431a09e23d4fcf9ed457e895df0fc1e77f937d80543d7b1dd24fba5eb57c89f7342781f3f1516ed70212f233a1fd17b51f9c0d11e3fa63c26a11cc842cf9bf4f442d77f424c7b646d1ef2d2c2ba3c615edaf74e32f5dc900f35c4693e9df05a3f0ba525f4f07ebd6ded8fd19f6dca6d8585d0fce7143d605278ef499c7880d5c9bc59983d434f20696661e253dfeb14ee952fc27fd0a3b97cead184d66e5e2adfbdeecc69de0a036a2682ff220d8b087c69c11fbf8b030ae33bf521576a2dd52efdb7ca75a284a106ccc446fe5408dac4c81da498da16ef88bb4825f595f96444e75aef5f21d3f2d8f76cbb39c0d19719386e721938bbc7da60cb0d8dd53209e3886b407153902b98e8ef2d9843fe11a0815d907e6d2275dd7e70ef37f47fdac8c4037dbe945df5999c34dd75f32e6f09f73b7d2f553a06ff3d3e1e11b7334994aed3430f21327fd984ff4fd2d3e8f1f3661aa7b9f277433e4b41f8af4a7b9d7a77a8abca3e97a2fe4de661bd2e9f052df6bc4560561c6b802dd56d2be484fb53e0626f1e74a53faeef6de251efd0ae10dbfd47ae775a13e63cdace306f10ecdb400779a47be796f946bd9cf23006fcbf759ac97487bfc7ac0273a61e877f3142f4b3ce5bda7bcd531adfdab0f616d11c7d305376edff56e97644d8c38a54afef30c6791fd95b3affbbb3f98e3887856b922e78b5179427bf962ee84a60afc2df6a3df0ef4681e71f5ec7077fcbafae837522fbe36793816768f3cad0673a4d4df2efc2ef99aabfb3a19a7a4c3ebb933b230c3dc43256b4986a6cf96a7e7143eebd478be688bd93877b8a0dcf93ae78c76b74315c175fe0e7cd37bd7e1f7a77cb7b45b868fddcb4ef9f9c6a8e3d796e9c83eedf92c8d9a6920defb7d793e2e368fe9ddedd54d59ba8a797fda077b5aa12ede9407fefa1277037ffdec9437c9d78b361ce5b6a6d418dbb66d2ce698e5e1957f51d2f81dc9457e43bcbebf70a34b79ce4f745e7d4bd2faee2b453bec33f7a15abbfdbe7da0397e97847fd9d9f22ee45b6c843e1468b3e610a639ba09644a231e9e333f103d70ef6ebcce96da3f32b360d794031b75079238e518e9ccfa4f55ef1ac35c27d44b523c40d8ac35a6154bec0ac27b985ef77cfecfc6bbe5ed6a4981b5d18e1865b6161dfffc004d6083271a6f95f3a10df45e9f2a6fd6d5be63c701fb96996d84f4cacab153f703ca16636f8cc47ceabaa3354471fe66126a0c62620bf8dd2d3ac74a49ea3a08f329d955a3bee7cae145745ceca78825c27e95609c6a329fe9bb9b1ffb03e4c863e316bee9f19f6a193f866779f07aeff5ef61a73dd1e3695867f59e13be07016ff84fb471c85aa396fae25e0d515b6ac9b475b5a0358f725be4a55fb304e86ead1f811e199f6535dd721fc41c103d448ac6fa47bb6dd47d0dbbb4f663d87c03cffd5df54fb06b88af16406351e88d70ad2c46bd92bd450d946e7e676e37ee0803d9c9180596cb0064d7883fa75cb43e26ad9889d62c571e70c71a4e8fb7ed5bc87b4f9d6f7a325f9eabc28cce9032fb1ba694c54ebdbe8559c940e43be06bb9006a6ac973def62f0dd7522f1bb01c548ab6ded9fb69a1fd1f708a93edfe5ad0a5f552bff22ef431df6b9c701e95ab303bc62857df0c15f087d088cdbb5aacf841febd6052f52e4ad88605cd43a3f576bbfb06e10e31ab9a5e7b4cdbbb858008e4ac56aaca81fb9c6c531faba8f9bf9f7e893bfbcf7bee6d0cb80bc9bb79ae39fdee83ceb39379987bd09f67b9b8eb1f6c2eeba56f7805d067c4194e5b3ad87fb9d255f68af61ad5c2a7c64ba9bb13d7173bedbccd0b1f102fcc71e3fe3dc5b68ac68f2cbd63adeb3c175c11775f6d4e2df26d83b15c075e8314e583f220e953ef7eb77a6bd079526c5e31a4b7edda2de0f539d1beb84ee73f2d69d535c7930c8f7c7e7edf280e03dc05e603aebde79133ce484f105ebf41ee028acdc2a703e0bfb197de945b84dc89f3a304bf799b0c30ed6f7d53d55da3ffa02e30c9c428cdd806bdc8d8f4c916f4c5a33bad65875ef3757fbbbaa2f0a552b54b50623b7a96f2f708e71b8bf44e1170ed528066ffe65e1ec680ca1f76a9dad8874f1f7d325f6a32ccad919ae3b5d37e3e76ba5fbc0570bbd4c12d259461ee64cea3138db1bc4fc95d04b49089f1e271579e13ce2d8d49981be0a8f358753e912effc07d56fe06f51c783f43fa5453ab0bbdff4bc304f3774b667d2d135c433c64b5ee9f2d116bda192c7b89f55965e672fa5e6f82cc7f103fea2d15aa8654dbe2bb4af456f888b7b098f42c7fa812d15163b363777aae124dd9a06fcf7b1cbbbbb3337b2a31979b924e9d54ca84fd8fa01f80b8983fe3ca9c7f479d1ca00b4d72ebf0b4edc06b947ac7912b4a4a529bf3117398d8967638d9c01474df16def857b458ca9f78cf59ea458ec1cad217ef46dd40b633db78dbdacdd5fcaa3bb70f353f7ffbbf8303e9e7eaf1c7fa6382bf533c41a999c15b581be4f91d2818ab293479e1d84dde2d669471e4789d2296305c41d51a6d762df27fd39e4d3b31662fcc88cde0943c2eddd2be8157cd469ab47f20f3a6d21d54f2ca557b618eade0d7949789e2c98e1db85fe3d31fb88118058f6d9f883ceb7439c3ad0f96ebed64583dc2e0979350e8f52f740c117e7abdf336c3caffeb53a4b91ded087b09915cad3e37fe74358b89b16d775cf4358b8239c7fd0fbb5b03798a2bf97759bc97db4f8548b697fbc7ec2196439f91bdbcc25cfc125f9b32fb670ae6bae10dbe36ffd03ae10680dfc873a069c3d8776837a308d2df59a7fc618ec526baf6c8cffd3744c78b5b70f7be605718f59d9fcfa74afb4e747d974269bfacb7a8714b8e65af6f3c37dbef5f759937e4ad25d87784ad0b3d7cf722b0d8e9a4118afb5384629faa9a4725639346ef5b8002f06afacd991a12e4d61f8671a27ac3f29bc4f6999e09f63fb0ef65a8fe1f107ad27c42440cf26e2de22e0cb1e9ba03d19d87abd40de70eabd74eb75a0ed0b35d5a34bd77c0d8f4b436b5f1e6bf2fdc8b77bd0438dc4e942f7ba49e40bee315180f5ad243b3d72fd93fa4ef13feec9d83bad5bfef16c4bb0e7cd8937239d61fe19181ff5063d16a4947b9c0d8ef9e716fc5eba77f00ecf28d734bff4bd5b27aaefb3a796b4e7b4a6ba4935be82fbc61ae7fa576b22b4c68e543e00c0e927bddfdcf0ad02757b0b3778efd795d2a856b52caef59a435ca3c0f98db213f95244558d67a5f695c5de33c65591edd35ac731e6f61aeb4a3cbdbc6a0c0ae638097707d81591127efa09fa5b6e7c74c9936f100375b9a5f9ca40eb6ecaedcd157a53411b1e0cc216b375a2633173cd559ee514b56f97a82b9c1bfe4b41da42197f857e3deff3afa186b5e21bc0fe1aab786d69d073e589bcc6b8de9eec29e89fdad10ce76ac3d4bfa9b3eeb5727f510ee2853cb8917f4f9ea9f31162c2f958f57c37c72eefc46748b9adffb67b576933ab6adf0a0cf2bd93e76476bd87b5e7454ef41bf3a93bcdafc8566b4a79c0613d77a0e1a7def9b727aa837c88cbb631f63f52efdec765d1057b2e10975937ea53f7b504acbb6cc0b7af1bdf6f14af436d43e5f57749ba14a08571d67a5707c2ec18464035eef8bb8ecb606efa831a8131d2df4b14ff69f0bdd3ac8a51a32e65fa7a711b627ec3de940786d26afa457585d5da01ee31f5efb58e3d6943909f64ba73219e144571145fd7b2d28bdec38bb9197cadbfc0463a2f3d4aec4909d2b9396f01a7dbe5fe86446d29bd4e53ac5b09ef5b84bc7b41fae8c2b336f7ab85ebbc7bcfe4b7701d78cf8fa84eb96a77706e81ced7b474b1ffce27cf1570071de1e4678a11588bf354b8af187ffab2f63788d3c01eb56117fc631c859a765a93a5b64aac8fab73887fece10c717b37a7d0b54d79e93177f2351ce4441107adf2471febaf7390608f759e6eef3cd018796d693c0f6a078cb028beae0b09ec59a4721650ff4ff5fc41b79fea3449f6dc468475875ee52c209fccc1334aebe20cfc80bd1e67d83c69adcd18cf48c204227f4bd84bddeb7cd2bd56b365805bf318677bfd8cc768a5f735ee79b25e5a05e0bb9ce88075fe54ceca83f6af11a0133ed9613ed0d077d66a8d5c08e3bcda7eacd7206eece33b97368e61ca4dbdbfa4dfaf0ffb4b8f83396e39ed2f4bda3bb10e208cf020a92670090fd46f339fcbfaaae272c6fd63599366e3e90a3e004d8a3ded236a2e2ec422d77a17a451845c48512c3ca8c56acdfc66bce6e4e9d9fba87e853f2d6b9f34d9c9ff74c167ca0f9fb82e80273cb227e2db75f377b3af281e07bc4d7a99b139f2ef09ef9eba903be2f9b5a1b315eb4bc807780ea9177b18179047dc6684074cecc855989a64ea147aed2fa907f1b33b3bbbf1a9b47e0ff536a747eac3c919f5d28351447905ee195b77f9ca0cd22bdbbcd27eb8a69a8075f3554e64ef66c57d12e83e23e09b464f58cf2ef8f29d7dcded3aa287c44bb4a809c773c3ba3cdfce2e5a4ba87024e279aad70ab59bd5bf0be527e7157564d2ef6d307ec88fbfc8076d0175a949af41b1f8d5fbaea9f853cda90bc3da516ef82df424b8191e97fabbf9fd32a75c5b400df661ddb064fab54f611252dcb92a1691f70fb584a709612a5b7ea79a7895692d318b7de1e1d1d738a319db53bfa9b12b0e38a8681fa17e129bf775fc9c72e21103bcc222873181ef514ff0b7c657de73f04d5c49b71fdfd816afa80512491bd74f97c7201e6265f8777dcf56f51afdee3daa954605e5d86db4fa34dfdb1f6644de4ce0476df43e31586313d220df1d4e1c69fefdcab89ad38b15cc91796e40cf7cb3ff457c995bf8fb3be15a164ff640c7eb205b88c3944fab33e47d33ecc707c8c7d8ecb196914e66cc6ec817c5c23eb253bae17b5f37af4df458618ac32cd01b11df8f48827f3a476f21f2e278c27e0fe7a774fffbf353da343f83db7f303f951e76373f93a347dcdc9f2c69a8567245ff0dbf727d8daf0c38d4507826efda6753edc7e6344a6f4eb51754f7383e199b81af5b63691c38f9249b2172592ec4ed104a7f4ae9f0e1799d9aa8c78a3e6b826bec11ea5288ca509cd1699ad0b924545c5a2d228f71d0add91ca317d245010fcf11f82ca2be5a51fb5655a33ea22ddf63d52f12756199338db5049f4b86fa3542d58ff69e493a1ed29a3c819f66f44e3edbfab714e643b43171f4166285bc809be4a41d227bbd10d0bc22ed4d133936898a1913e906077331c49672cd99ba2c884fd85d5780a78fbec7dc18ea8b783f0b973406c56ca055e231237aaff8f3d08b83626243fbe4fc6fbc236cf653796b67ccab78fe5a615d5e40dd6d2a32ec0377e38de39c639c2a9260f44133e184da0e2fc9a289a85f5562cd46a4bfbaf9c5861a1b45423a8e819a1fe95c6957c2da533184f7227e3f6a4e140962610cef9570417d4c23d01bb57e655a67c47fdba2c63ec4c681dd6b7c3478be4eae181f7929e258facf065c19e0bdadfa3aafb0c2c34df397cb9462fd8bd98dcfc678ec2be9dc2cc9350f1fb084bbe73f610999d6ce1f723effce57426bd3ad58825c6d2b3f4aad05be7be9b57eb5367f1bd4cae36b51d4cb36c09c4bdcb5dec3f23336d06da1c7541117da977bd234379193f31db126fe698df8a3bfb8a6bb398cc67096ca14fb82ef5bc431a4d9f45b0cfd7f9123a605738c5599362ef292cf454d392f9dcfcd299a1136974d637bea3de8cb67f515dffbbe7418dcbf15690d0ed43449a95eabf1242a27557bd48665f98af011902b49c2ddacd89cb0138d8af37bdf7cd8a34b8c37e374f78e670ffba8774078649e5537c2dbc06f4ac5979198bba488874eb3f086e7b7496313580de6fde63b83da76b7670d6b2c6f5bd246c07958daf43717c4a08917fd0ce0b3a0eea5ff5e73dd3eea3b9d29170d16547798bc95946b516c7130d07755adadee7dafb78987679e78c36b7a9b4333266dac40f5e501235c006f6455fed3b99b5616c4219ce22ab7d4f154459c42e0610aef1d3dbcdd74aee667777f6db89fbe46b3db4e612248f349804e87982bedc69f7a7fecf2ee05712674cf7b4c1cedd2f0bf75ff9ff7f895699c342669c0ad1798aba7ae5af325692e66d1857c0f2ae525a7fad4a48daeb8ae70b66c887fe4315b02f652dd0768e594542f6a551c928549bed2715426ce033c54a630527816c26fbbf7705f1356907897e47dca9e5a417cc177c2c42709bbd0dc090e26e5c1aac6af6a6dd62f8beaa4410a358ca8657436dfd7a4ed63501d3778cf09939aca67a899052dcd3dc55984fa0f6821ecf5ef2fd801f177a96be7a4b590ec081398adb3938f98c0d116de53b7e7dacc204e5b48b9ef8e253bed0543f7280ce2659d9e21b665d7b08d8e116af3919615f8193123ac11ab8639fba6cb61d0ab33e9d74c10d8745fcd9dc62f49748e9eae1decdbf2660dd80b7fb65658c1661aa763d2fbbf315c8b15f7eff4ff13cb406f01f6a6b1350ee516a027911c1971c8fcea609236e30d31128ed8ff1ae1bcf101b3a3e789aff433f6f2447300ee55f5ef9c428f159edb73752f0a7b0ff7a030bd2ed3fe71cd8d345d0a83bdd033807eb9179489400eb1785679bcaa4f46540ff0d78be6f36f773907d54cb21cfd4ad94be44c49a3e6a7c6f6281cf2669c108f45d5827a5c6b62dd084fe615fab3cb37c4277adb14cea124bd92aea557d0de6f8ddda29dfa1ab341f5f52e7f7548734fdcd6e8e38731fccf62af3f3be9cfec1dddbb276d8a21cc972dd69ba2b4f99620af1ff6ae7c5a39f43e8cb6242c57e2d3da6181456bb73915ae8173678cf33c68c3c3c8ec7b4f1aa376251c4d3f5fbbd88eee79722da02fe054aeff86e3a0bd4274af16c7b9e03e6ace313a2fce15e056badcb37bb7224e7cf4e7615339471f67c333f1778a10d74f1aa3c7dc7cc788ebaf3c4c0e140fc27dc58b7a94e8984261321dca05ba9c9f1f7e915ff74f8a17d479bb0fe9dff71867bc104e24ed629b4cccb0377f0e6bef5defcb59d4ddbff29caf6c0f75cf559fd5296a7a6e6975cfad34b56c71c35802eaa0d6d829171ed6bd2472196bd4275c5ae4b325c433e89f406dae7bff39bed30d626cd4d9c2adf18c5952e578bcce5b7c8f53a66b020c7fff52afe97753f644bd38d406445ebdbc87871b8c4f7a9aa55d5e97c9197722f254dae1daba85984f6cb03e22ec1deef5551bcdc788f5b99c7b8f148c95543f433dfb5dcd53f0bf30f1ff4f413340f2427169518f85b06df18570b95975a0797169590d1c974dba7ba69c32b71aea13bc123657d83f0847b6aa12c09ef28cfa75ee88c678ed629f0970d0bdee725bd19c59b1fd0ebdc8cc196bc98ffc6254e8e742583d956f38625658137506946eaeeab5d2c8af217aa16b7ee7be79a198324888db56df29e68c131779b3ec85ce5379871aeaca9c42af38c967c49ffae27f17aa9788e708fe3b62ab7b2c36e275fa1ab4ca3f2faad68a7106faba07f6f06f1eead684ffe0c89757fc46e5c7e0e03e748c66b79baac5d6fe39377e29dfc212759e51af6a5ad5cbb604cd3ce208f59a28ae98c6e6a31615fb103787ba87df683d01f040268f77d53b79097f5f9e10eb42b1ff25dc474bc4df5e42c2da10772d3547147b292ec1c3dfb29768708f89d8bd6a2e47e6bf6b7e9945b8f946730890cb3bd35a35fd3a78df90de4226fa1c47e59d3e619fef25e1242c73497c8d82b0a8e4b34af5b32cefef057de3e374f2fcd12f1caf93503d15cfd03e7f9fcb25f074bd638ebe95e4cb15c7dfc7a0f3d8c59f0d7a7b32f2c031b7d4774e2569b6e33c653569f30c7a412cd49c49f5bc88bf3c510c7596a4a3995eacbfbc1e6990509eae9ea96a694cb7aa9fabce6d3b405e923ef7dc9e131e59e45bcffb189383d6a2fa5f88391df4799f72eb44cfe9e5da37f642de895463b8ffe13994871dd54a83f6f11e159f18cec505a3fe29f90091dedf87fbda6a2d1f780f05f581b9386a8f6e8c9b13c21018ba5f84b8a99cfee695eefbd3dfb401f5ca3d893add9175f370dc56d4bfa1fd0fc7ecb9d71d04cfff6def1d3f5cdfab4a796e37ea1a72b15b0de36366681d36f25e6cb45f0a624634d70170515ec07bcf52c2db858f753c35f76211297c57341774ae510ffe8db4ae512bf2670ef96477de811799ea0bf6d78acc50cfa5986bcf3c7af617ad45f8a12f5ab639f20127b3cac1b1683d4726f8ff536631e2a3b63f683e65017dcecd1bababc7184ee9bdc9699cee688c48bbfb18a2b77c4c63c17b6f32d8434eaf308e6c5a58a8156fb82dc5b7b0378b187afe622cf17ac21678fe451b81f788784e466718e639b0fe8dc6fac33bf618d4099c0df2366358075e82fdc36e9c39f7bc3069aeb4070e6206a3c05a651a5f4e5acffdb8a3dcc2df66b49749f273c0f921f903ae4930c57b8e2de801eb5a17e2ab73bccfc2edfb55108fd259ebed2a9c9b845160868fdeb8de6b88e7e5c6425c7bca4efab306b05789000c7b6008977a9ac8395b1435e5106c8e5c68ccd11a55ab89dc13cd8770707de0e11e4ec3dff490c7a8e29e02ef7963f55a98b8c69cb266e49bdf60fd30d9e0786b9e0aae4386b1579ce0999d4ac24138a95753be4cf9670e78268d91c5b997c3fae25e4cef98f44d39ee07b8968ea1e20728cd7cc21150dd4ee117a2743cc0ad35d3d0c43c32c5baf51cbd150479264e1effdb3ecdd0cbce8f89ef743c69cd76a8b9509f9fbc3f4fab0dec874b8cd3bd02396d9cd33e3bf86ff06f87fb35d08fd4450f48f5bc1278c7ca9fab7b3f6a1d2f225a8726e24c4dd24b25ed928b07b8cedc298f3aaf35d7fc8c3d7173d6eb6d99ff1f73dfd69da8f2bcfd953868d678390aa844dae1d00d7287e01a23684c341ef8f4efa2abaa4113b367cffeffd67aaff69e2440d37457d7e1a9e7a19cf310eb96f3e524c06bf22bc6a8563879bd922df72c177c0e6d21ed76608957b2754cfafb52e3a2f68857a8f6af50cba97cdcb7b5471cd721e27a007f30f4cd9c78c81ff8c580178c12e87f084be7837cb620aa58974f0fb9507fe5461f70cb5ada439ce42ed0f477cf3ecb672e35f7403105faeee0db6f946f7f6150e393675447d751b009714cfe380baac35e07d316ef091a2d1eda295e0f093b7511c40d37d9132ff8096c58a5f9782e23ff7c06b10fe02353cd7df3545f24ddef58cfc0a793f50dc0d9ffbe528fa3e7287edc0471303b1cd32443ee1f9e90264cd9e212d5b90631605e7ae0e36b36da5dcabfab587fa8f077888b42bea4f4ee6f5cd208973563598f16c3bbe7cb35d579be3cef53a86b3ff85be00d8bb863353629d50003d28ea1a21ec86174252e63d9bf60cfc6fa48c659a57a37c5754cfcd391fc99f80846a80151decfc351f5cec0df7a27d40d420e9f9b31777af6a02f73a6798725072d9d76ccf7f76cc6a44b3e73a579f0681cea3d652cba472ef16e3e83f82cd4359407028d35e7f338eee62e4882afc6713b77ff6a1ced7acbcaafc651b53d82dd71c4fbff3e8eafd79ddcf7ff300eb59e03891d85f3ebd3babbfb86b266f5f01bc27e69f7a2a7fb4a77aa1d333e1fc7acf8199c55f979af60cef3669ee55ed1beda2b5fadbb7fda2bf7d78833d67504d575c89740bb2e20cf26eda5457e0ff8c92ef20a62df90c9b4b0c551fc92bd7a2f37399268851ca99946fabf5fe738bb363c17bf1fda528f747cbfb7a547658f35d9ab3de9d8a92bfa020715b3a22fb030a7c4b7ceb2987a12eecf11817197ec15b2c9b702bf00fd118de6c73fc1d955505dff82353d8163563919f0a39abf83982527fc5414d0391fe51bd77d74b60521621445895a22afa8875b296ec8220a3cd937dac43594db30f31ef04279177fa3e202966d89d754e2c9a0077b2c63f649b0dd6bf89d5f22caeb6dd177d17f1a948369ef413995b2471ce65ec2a81fdf58828ec244ec86a74ff775643edae2d61aebcdfa1b7154ab3c50445a05874bae51bf7620f9cde2ed653477e47a7af7abdf888d96fa0bb076a294b8fddeb15fca2a90ef96345e32db3da8bee4ebf10d71ef7bec2f2c6706f9a1871ae68a2d88ebdb535c00749dade17c864b58ffc3a506fa06b9c2801f4e994d7d3b01721ee47dfffa83f096330fc6368e14a7c5e13d03eeef191f0dde601d570baa376625e48943ca3b537e43c7de4eeabfc5dcd85271ea78b4278ea417e06dd01f85de39b936bd3af03ae791e371b6a735863a2819fead803d42587a88d981bb46f5cc4d62c2cb58b8e68553038f96136526d69304d481a55ed998741af433daa46899d0df811d6bf1e2ad16725407a80de50896507d67502396c8f24853a4fe7942cce126a7f7e7fa3e53fc1b77b68ae614fb9800d3f44a7556c6c6d8cf21b8beb44977cbebb5713a937d6037b89bb8daa12f9e00eea6ffea3dc0dd3cd7435cd7d5c7238e9fa5d2d32d8e4ab7d7e83b94137dc65c573c29dee8f7ab9da07e2ee056d51c67a1f4629bd8a5bf5bf2369729ebbd3bec21149857523df736f59b316f87314cccaeb46ea2283893efbf22edac2835d1be449097f54e0a4769c85e2bc0058d2576d449c747ea578ab28943396113b1faaee2f8368b1ee442f40561ca738c1142f3d5c4dc2df3085fc38f06f1b48646816baed592cf14f6700fefaea76d2f51cdfb8acf7e74040cbb9e9a8c70f749b1c56ff7ca80f7c58ab7fa89348a3d93f42948a792bdfa5bddc739d60b559b949861013d7f53e40c0e66de44e9767f788467a0dc24707d31a9191d5512db1bc4d88b6656a4bdc3d84e40ccaafb547f6a6cc302795bc7ed1835a3198f9075a629e1d812d9e3f072d32723eb8982dba70cbf67849a66bc424c60225e15c6546afb15c34040af6530ae46c5664d36a0269b1a85b2276738b7a7bd55493c595ebdb425a67cb2b2a7bd25d67d1790e39dc556a1786c52a9b75535efd98eeb7a7c079f94f985d4a410caee71eabde43fdee9ef85eaaf941a04f2be458cd789426ab3466d7c375955d8f78dfd3bcb08fb1024ef6ecb991a0af7956aafe1f5f8d2d542027d39871715f858c14ee9c31d53d26ead0bc253698dcd12dc992c6d57d9af284a75c0cb386bdce341b63d62fd503f667c4ae39e412dfd083d5c7561ad48ebe58befcfe3fd3bbceb11f58f989b1a47391f81ed6811f98edbc5ed38627db404fece6d005a8536e59997e5f454d8d40324fdaec8e70c70429c3d915f1045530331066b96a87d24dfbff16d9636ebbcbf031a73badb2ff07a110e34f29156107b4fd24961e2cfe06cd3f7ed59c61d2b801c12e92f7f50ff236a0f42dc112f3ae35fe8c87b5311af06ee917aa9b06103c256b1bcf42456332bddcb0aefc18db5f2e558524d0053dc57fd5219f6688aa8428e0a27c92dd27f399c0be401c17c87c2ec3fd7e86fe03a1396e4e19f74309bd13c3e52acf4deee99c13bc6dfb5bf63fb8874f9c6940fab2e1962b0431d7d93ba7aa7d8efd9a07bfe50fb30a8d76ff8fba8b0658c33611a3391cb4d8d87297eb1dc50f8ad3a473cb357fbdb1fa403ff2bb718e1008f8acb4c8d8753bd71c23674cf1f26dd33a87d8dce1a1a4f56fab5d24233d981b84a96e1006b39aac7e909d77d92290e8d8be2d05b520f97acd5d13a71b1c7946da9a691edd6d44bbd5f0176c412939cb841fbe8c3c50169646df7a8d32ade7ce388be1073a87eb0dcd1733d7345f943a33a901dcb240f2f701e7b139abbf29213263471de296fb59a147f702ff99d7a19f1469a01685bd58e55e83fe1fc88fb3de2ccf60ce2cacbdfd5b7bdfe68bfedae780d952e2e9d0f9d6f6baecd3fb89783bc9354a3d25053a2efd71e69dbcf604d407f1ee7ad0fcbd0478ce38ab482dfa02ede9c090ebd8bc82729d9a3730e5a9d5666bb7de244f1103f17234ff992bb1fd8abe72c4b76c2dabf15605c11c517ba7792276bc02218fd9147fa88bc785f21763f325f75e2be2f548f7dae49de5eb027a4e566285b68aab147546b81ef2531f127c6095f989e816b2ad783644f67e0cd7c357694ef0a4d6993951817d8aeb1a45a54bd503d0852c35e7f55da4484a99d4fd499f654d8bf817b8178d412f78de23eda2f8c9f6f39a2ac42f1d4faa87ddac549ac9426e95d2f4e52c478dee9d1d73ab157b2a1330d6be9a67857678903b8bec5f607691d05cb1de58f8e197cbbe959f54d441572a0b3f9d20c10dbecece97c889221eaa3e67de4ac7056e5f4ccb01f5e1817f53d1fe6aed5f714c3c07246cb4980fb4733e5d927715ab64eb8f26c22640d204802ab30062aae9ef312b9ae187d7b969ac491f103c6247b84bccbd7df5a0ca358c630b61f51de407f423eeba430d1aee8801b56f56083b034fa41d537e43b767475b0a75358983b92981d7de88b9f6701bc3b6ffe2e382bbf73829a1e82ebd4271b99520338903674d3dc4772739d21d7335058e32c465eea98ebf49e51f453d98f42c64080a9cfa90f9d7a23c223f54f9929e10d2d81e7c37a54d4cadf367dc53509f550c5b9a6e20127f56a858b7ccfb17e1525840729a8bf8315a301f4a91b7bd266df17881be3916d12fe6659632eacc5bd501f2e9d476dffb83138433f43e30b791d1f596c6f6bc08e36234cb459d57026b1b3e22f207d487e3c08e29327de223d387b88d91089471a5693cc2c6ce4f3e965a0b76e1592ef196b7771df543c88eddf82b682e98e32e20e01dfce01cd6b87e2be0f7fe3bd539fee9c43cfd6a2e552031b42f1fef570212ef36cb27621d69a2287091be7c887cc23aa051c00d31c33c8b38a2eaf189e3121f2a66fab2bf533dd62414adda3b339f2c9ef49bc847937fc65f56fea91c375520c297700fdfeec8abcc736372aaaef272c823ebe3009468c7c29513ce5d87311516fafd204ce2fb926b53adc553955fa999e83f627aae6b7e312cf0a9b8cf6b7b5b1321f0fbda5e30be568640f1bcee302f2b641bda49f7d8eb59d78972bdf9a017786c5b752335b7e57a6695ff32fdbaeba6f14310b7a06a0ae9c6ea8d6aee99ff6a7e23c2b140617b10d67e2171171495c73ac80b8c35d28fcb8ba67dadeab895daa6168ee479efa19da0ba1fc41e671e0d36ace869b9fa93d5994defdf8f440274dd0343e9f549f3571ef526e4473269ee64a2d13a88757143b7dfedb9b3c8a78f55f8e0a8f0f754b167a37ef067d2ecd3396a56b3c9a27cea5e6acccd3164a87eeb507dcbe2c5c458441d59fe6a4e564060672b8f022219b5c9e524d723458d1cefdff662dac6ca9f1d1c4edea9b405c39c8a01e7fe8d3cf59a96265936cbedc5fcdd862e4fd8bf7a382f8c7b96ea08e85e5694c57baf346ff7adb7f27b9e874b4d5bf406359d926a7531773f8645a7fadb3509e5bae1dc9c32e7d28ef96fffa4cf982bcc63c5c5c21262558ac468309d5013cc06f38e9cea6e751dd7b0debbcacef6a5584d10e562f830961e743e85b817348f214007f5b6ce56addb7bdd71e7eabe97b8eef12986e8deff28bb84e72f4c796b64b67e3b5f9595b033b96b9a9ceb663aea10f1e0fa08e64b8bd99ea47673dd53fdb9c1f8a374ae16f809b33763fe61cef53bb578cef22cf74c7722f199791b7ad483f84783a1abfff0cda86ecec6fab33e9f4918e1ceecd0f1ffac0a17f4f62f1f2c3824bae628dd9c8fd6b681a3d77b909c672dd35be4b148ca93e4bb97bd42a6fecd225271dc984a971171317f084c642cbf942d5e801cb1d8c5812609f8d6b914669c00373c50fb2ae1a94acb7829ee95fd1b6a3dd670eb10fd3be2c35cccbc5833370f072dd7f399c820ef70dea3a9e9a78f55e676d3e19b67559b06b67bf832700cccf85fca503f104b5fdc050370c4a1bb465ef386ceeeeefc85ec0ed9eb8d027ab44c0bc0a89e579f755ffaee24b4f9626d53c8af30adec7496dac2173e26215fd30949a6786bf4b497f25927642e244402bf459a31e7fd19b0397b5c534ff8c3ab55ff88bc7a1afefcf8a6fc6ac9a7beb92339bbb4fbc5977f17e94633f19af872160ed528de6eaebf9687cf6c53bc67a844dd6fd4dd9871a8e57fbf54fe41b74022f22db7d3ccd21b6b6163bb6931c92b1e44d643e3f8ef17e47c85bb3abbf610be49b40bd23fbec6f283f86ba05c40b2b6be8fad08f511b333ea25e1761ed50f35bd5cb3dfc37e02ff3126d85e0178ef18457011671cea546d85af6e434eb3f61a3993168390829e68b8f3aeaf6bdaabec21d724b889c7a449befad81deace821df42ab153e1e20d6ecf0feac418d30320684518e66a6d20dbe52bf158f07a42181bf071f44fdde909c42927f641905c4637d2a401b79e6698b6bc1cf58bf871e9342735f73c5a1189c03ead150dc18027f2679799a3899b309e53d2aa3a01ee0da3da03ec8364b861385fd8039eefbdbfdb9e55f446d1421de0b4eb562a8ad31cccd14b67ba03ef5761e9d935fa1cef8756090069db7bd48ec68980476611453852590dfd01915dbbd7793f7e795493ca2ab3160a289fbbd90b97c897d202e1867015810974f246fa33a0b7cc37d6590331ea6a0b9fb425c65149b84e64ffd9e670963f0e7b0ae761423159103e787d6373ccaf798fc827a5d82f81e886f2383fee261a6b95a06bed3a4907aabfa3010befcced897de8ccbc7de83baf9f9bd7d5d45430bb83fd351be71a7746673c9e3214803ff92530f5a54788807026d59dbf988894b632788e7f54afc2141adee6178982f5f988b13da8d04f5992dc659731fe673c197b533a3b30cbe6331f2e2cbf4e15892b5fdcd588cf80538053bf7f8762c2b3b5063793603af733e24c8fdf7cbe7c1706652bdfe20e75c60ef5cde9c4d3a70c746dc7184b5d6ee382dcecf941b8a1ceae517f87c67095847db8ffbd9a7fbc7ad46259e3f01db0c3127c28c199e13a286b9f1ebc25a56af388e02794c34f97d17a678c235187809f5d973d4bc1667c02305c3e67ad451d4712f0ad2dccc47c73f9a53a6b5df378f9cd9cd386a46da1d417e3d021627024db3c0765ed5baed3cbf70684c9faf95398689006e1b11ec327ea67d8a6798471c87bfbc9723e068254e4b6a25bf2aed55d3be50fe2c9ba06dd0d3ebd2c6da623d5ce0deba4677f7f3f5bdbc4fb337e389ecfd005fd1265d08e23517bd8e0fddb52f8ac755ce51bcdf430da078a5f5475810f4c901cf60f79f481ba2c3ed26b98fb9c4191c89abdccdb61503ed8860941915bb7dde059fd7e15d3111e723f29a72de5d5b526c07b2b72a903c89722e0f05f270c85e528df818d84b9138d4036de4c48d9e880b9ea9523f57f20e62bf18378a27a5f93bae642e2730d7a3548e5bda6cc4c9224e5930c08b2b6e5d8aa172e021dabe9e82eb2d37c372bb1fb7dc0c502bcca867e39e5f26060dd5780239ba507bbdc16b64844312ce2b9e0152db34a45c0bf58019c5f8f6efd87699ec49ebe9b8c29a40703dee425cfbc8b5735d021ec921ce9e056a8baaebf96bf3ae33e2ac5e9a80a50f34ccf1daa2b7249e94eb0fcad70445bc069e5e9d705d790f79879d7c42e7b7a367109338a8f1f3eaefd2d7e0e61ec7a11f0b83e6902782e6e2179d7d7307fc2fecd11e86f13ea0da28fcfbf785f82f0ae2bd44dd823012aaee04bcfb8e951bc80d40da84da1e354f50e350101609743932dbf558e2e0351ac41589335a71a5f76b06dc0997367bc2fdc966e381edf3cbdc279de389b0fdb8b0e24d7ac63a5db47480433f8d8fa43d6870c4011482e2425a83c250be24d634d53addb9a4b7abd66916231fb4282e05d85c8b7a32c2485c15779a25ee75fb29d7ea82b690fcddbeb18fb20e21798a98c394364d6ee465aee68499a495803f97d8613652f859c45d66c8391c1983f8d37d627d544c023caf9c7e66534e32bd068403e6ae56a0a6fba296fc1d80b568e280b1d3d82b07fcfee999619f74b05dbf12be2a9f0c1dec9d3de5e00bb114f3b02c51efd06bc624cf6a88edd43e2976d8bbd0b573b5db0ba4f68678f537ac47635ac61706fda7c56835012e8eb0e5a28eb20df99d837d8a7d90c27434e030e2a65f96b767d36e4a39e7b3e2d8553cc4d54751de6b918b17c0a33a6f2b9c3361ad518788cdda6bf9bb87ba4d81f04f84590ac24373c651bcf88175ac496e4f4f0568e43962e21ca290f0fe103bacb87bc895bfc494dfb5349af9905c2cd493fdd6fc9dd44e53feccf1b4b435790e2ee43b8aabbfedbf515e04f0228451563a93ddf3ec94973ee06142f4558c7d33c644e9eb520e273c688413fb623fa469b3b7444adc9b6ffea6f5cb33934de4b7d52e875ce9341e891b770dfd3725710fdfffcddae7cc5b4e48eb31d758b990ef9c71f7d5236caa29797a9bbf7df2376bca294fd8ce9da0df7981f337bff89b82f676676c95d6cca5f4efec1f843791b95ee22a6674867d118f480c1072a5228f6a9fd669fbae58d7e003f9ac507366a01d9f0e97b520dd90f71cf255ce92f0449fe724c138df42de34c53bc9ac14f357dc4c253766cbb1bd1a57d307fb3191df7efb7a453cfe2fb6252dadc5bbd2ba947339001f7e175c107b4c9c753be4246ef1ba89433d82bf96fae2a17d825e4fb7c54b1bb2ee153431d75c712eb3b7264e84b52cd716e4e6b7ebc983df23d680c95c4768ecc97e803fd97ce7494e7dedc083128b2b6a8ab8396031a79dbd36837572ee410f066bfd79ed07f0a28a9f529b5c4c44b3875abdec581fad5e061ee183a94ef6acddf30833def20b0236748e9800d893c5eb9d1ec553cea9c63e55b95df5edcc3de8ebc66e1d7e9de7be2e49b321fc61065f6305146751aa1357a74b7549d7332ee00feac19eb8e02333251e2d3737604d4496fbaaea9e4a6f4abc617db1e76fab0bf6a4ce401b527f5946585f8bf591570f6ff80de77caa79f601ce9d04fbec4c77a47a6038f5a9ba16e85301f74c5c7a874cc33e47e0041a510f561c71c444b38c6dd61eae75f49bd8d5bfb956d0b5d82784cf933dc08aa3c0e2b647fc948d7df63fc5265857e1320f3135096f2cf9d96f780d9c595aaf013b5e83c6495039d725ff9ceba5f8a1f1fb57d1d025ddbb3fb9b76fae47f95667940369ecc4ad2d841cc8e3b845c81c88d7c4d2f23c953ca30ef45b06c362ac53fdf81c2b0e22b9af2ef108e25a6fab3b1d8ed249f402fc499ed1fc5cee0bbd796fd9afaa5d8c760e8ae68c033e604740ecc8317730298e51789f97dc43cc635cacc7710af356b18e9c66c5c88bd186f2fc3d059c2ace8d93e6320e543148f32ed7407103e3b9b82dce883b81dab45159c03d550dfda8181197064fc41bf6bf5a62bb279ce86c3629429f17d42b7b25ae421e5f14d7f58c62b9baf17109aba8d519d64390fbc18a110b7ac3454f6b8778fba2df8acf11f91c9efcda3922ce76e639bfa956b4f6c53af662ec650e2f7d5ffa376c97113f8599bedcc5724d0ce0f8b1d30be2e3b9eb1b09d06842cd3e9af3c34969888f8e6fe88f4cf21d7368cf356b4db47136f1089b1969dbd78249bc56bc6e7903819b6712a06d25ed11e4de8b20de415c131f38846552795be2b9a80383b0a4c155eacba5a4a58aba3a09e458f7d6cca077ea6a19a427d4754c4863b0531339367e36d89fe3a8d80c210726a0de211271465baab05d19d96be382f183e2abb5161dff6c69124f2fd48bd3c950e14e56496a77b0dc56bcdb1b5f605208bf42fc9e86bffb12e76291067e24b5a0dcfebcd5928d4003687dc17ec60bf12b171ada1ad343ee3887b882fb0cf2fe8ea7b9fd9c6b841500dcc96e7f51bd919fee956b142ba2fff23a079b3699f3e935472e2b6e703c63c408639f68351a4c015bb627bb61a65a497919cbe7c71756172eac93927828cf4c61aa7f12ef25e6061d9759d42b3e3097a81f106cd78a8f986d1cf40fb9895a43de734d3a1483d1acc63c901950cc34f3243752635bd74faaaf27d6481b15fddaea423af71d2d09961a4a8b15f87ca5e61ae54c2bd2304872e47d0f92f5e859e2ec803340f6a28703c438b638a967634f7a5fa7a576c3a7d9dc0f794a780defe8d5fe4d4f2269a157c300759bc2243d827d6233756fae6baacfdd1463c0362fdeb31271e2e0e7538f67956f91bba7c58b5d08f7cc13f74c312a7c83c666c0792d22e005e9f4f2132fb4e4ca8fb93359c0f85d2f1902fe483baa7b4711e5869d5f92bb547326e9ce7957780fa5f59cc3f3eac2c46f97913ec68c34698c76ad74e2bbaba781ee34710485518e783a364baf84873b1a19d5fc69bec45edd3baca5c6ea5afa9f95af7a81a1664cba7d17e38bf8523e5f483c955b67b847b819906e5c921b4717fdba8be2c2ad871fa4b5574cc0bf0f42c5df0b7c531ae9f88bd08b2f8891903877165bc303d6dbd86adcf7c8e6c8398c07b8fe75ec1bbd902fdd235dbb4872ba1e87813edc7be0338d43f3957a0fdb3e292d555a1fdc7cd5a0ee29328f34ed3ab830b0c37be258e9e0349c7d512ea8275aeaaa2b6caed2bbd1712f1ef71972b4c5e301f2423a82992e9ef1875e5e6a98171fbe417d591ce87ecb788ff19fd35ba1666f2c63c80ae7a03c13165e5c0757c246a726634a3f13b92e329b112ee72d279e57e358136747a611a68e115fe835836b9dcc0ebee04faf34ecb9b7d26dbfa6672fe5b3510f73e3a8debf82de8557d2ce06f1daf20cf5b3fbfb76f581264bdbfd50633659f32ca5a7dd8c3194791b4ff160c5516e52fd628e5a73a1e9e29eff017fa7391331d6b1b75a4f70cc27cac510af30f2f799f44d563b467af5cdde6efc4ddf933945f99d0e338df4df5aadc5d4143671edabf7f8f47bd4939135a38034f8f0fb239701f2cccc34cce589f252a8fecf0acf5a41f552c426dd72e047429ebf53caf971c43761ed26a0e735df9d8f5fcd07782bfd6b3dbe2f78d9e303dd83cd139a3ba5bfb75846a41d51610f22d75979c6be02ef1c10e7e1667dc4fd93e29805ab53ac430e6a0fb96d99367d5f222f49ca619f225fa6c58847201e282ea2f0aad652bdb2957fe834f348fcbeab04b98481874fe2c0d057223c87e2f99e4bfd4fa5b3e8f04d4afcd13b5f9d67d07f26ac8234ba024f614eab83077a489370e25da17eca38dc579ec367d2010ef941fa978171c7c758af1f689c5dce2d36f586c75c697e006f4c25b98bb03f827273bf8af848f6ed1d315ed662e71286ff578c360072a255b64c5c886b62c8c506f1a2a6fc6b18490e85cedaca8d25691a24af94876ad7575c6dbaeb6ba578fffd8be227dd05b8be8e7d0f38c92638ce71a6b93b7ab6887f537df3d72a11f2ec888cbe95197dd8575237511ffaf1c5525c141bd7c338e284fcad33e05fc86be8e53f5a6c823c1f82eb39f2838858bf02370c33fcea27d6efc505f96260bf1997d1d2a46bc5535152dd97ad9b7108d9c3276bc27bd2976cf7bbb3811a2c7bf191c755500f5b28ebff844711f9782f6b8491cc8d57c308beb113462edae974987f61dfe6e301a3da14ac5f8543a05a7c57f3b757701f6a4070debff935ffef76843472c241786b43aa377ff3136bf7bfaffe6e612a2ca680783f4ef60bb4cffd78443617b58784f35e401e7432e78129eb44c97e2a79c2e2a32b3097b18c75b4b9d5b53d8b44f7fcdc514d0ebe8ba7fbb578383fb1b44bd27fb19a352a39c5478333ae8bd9b33944eeadcb04f99470efb26d660d67727d4658af4ddc515a13168b9b0560e26779e99e0ad45c8e78897ee011b9d4c4147948c84febd3f8a9f6ca93e004e3116ffe56bfe0199f2e274376574f1872a36ae2cc0df0b9f5cf946fe8f896fba2f4b10e407c81c0c51b72aa9543df0af19a601e43485c27703bba3eef93ef6366c83bcbc10f8bb36838a6fc9c2f71f73d33bc99cf6a1872fb427a5137bc07b1ebe576afd977eb85512cbed743aadef11e6568ca399af931634bad0731815c97e9dab3f06ce33fe4336fcf34adbed5f82c750fe7e19306b1b2e7ea6c188a5a6936dd69547afdd65709a88f669f23b751189f9b3345e6363c0b392d6a67b48c6d8a713e82d6beb1661f0197fcd120fc05db295b85b8314edfc242dc58e35bbd221e977579e180e319f39ac4df9ab8e8fbeaa8dd883ebe56820fdaec6141fd2c4d8c0cb952f4076e34b0437b207301a1e64ca2c469d6216b628e6ca3b4096ecfc4a4a41c906052c7eaabefaef206efa46b9026c8cf27c453e3af20c7e851e91ec4c45be1a1be2ae09ce17d03c2eeb899d403069d2fec4f77943623c5b4f2bb0a8c218f0af3c93567e2c39ab115e76cf8e31d6254e6cbb1ebee6b6143dd238a528c11d83cc01c3a72774e38f831613661b8b73523873e332b5278bc6218b57938e43344ae23f973c079c09e46fc2fc5c21af17214359e875b88f3d6bb0239c997c809d0f2b960de4877a7edbfa5cd7e6bae91f9ab28a5d823604dec813acb12b7ce39719f6811d9123c1b407fa2c29832dd908632ea2f0a3a43d43db96e2e4ba843cdb9db5f926e32e78d2d97bc3f5c935a0fddbe800df696ad912b7507fea267fab5d811f7c17c5c483f696907d60a6deb520b9ea5cda2fadda638a83abfc4f335fbb61a614f545a582e71e89c0baa53c5e53b71622fb17f3f889c110fbbd7e8b2afc0439ed838f1557f461631b0dd666ae5329e97e79fe6b5fef995fa23dae71f4db4519277a5abd9b124be41136a6a619cbe12b644604cb724bde148bc11effa9fe4478565bf87c48f413af9e34a9d59ab9da0d8e35c10dec5d82bbe57cf54bfd79adf4bbf3abed0ef95aee772ab536efb9dd68040ae9e19f149d6954ef1f073735f8a8777aee2ca7936089359005f7dcbd1bec927d457545c56b6dc3f4e5e521f724af770e749003d17a4ef063ca3c40376f4d0d6e5a831b7d8f6fb6d0e39b5810764ff4e3c444beef696c455ddd1efcb3643c04599432b35483fb4329a7982f74d2bfcf647f4379cd59d0e61a1f43aeeec6f7850daa94bc9c9fa85fdad1d954b9ad3d981e781b8fe409d1566f8dba2a61a83b74b31e6e65a863def60471d8b1947c58f2fd75fac4b7ec9903bafbec4a9d99abfad2c66026728e353d3dffc241c7a45f5284f692b1efb1ef52c906e8199926ec1976389b03ee4c5a42d659f0ad21c308e6f948b7f70edcce7f929c05a3062686a7fe3d11867ab08ebafb5a03abaa178df6bb7f1d524a68e8db1f796b065e61ab5d69d24dba126143fbe67a4e7fae0da50f29fa0f6620c35829c4f750fb9b242b33c870a670f67d522b23f8fd7b8100fffdaab6fe7577262d8c8e9457e6c52d11e0d701d90fe33f955e6b3f6b53e417625ce8681c4a57c150ffb66401a98daca2e2907a5296cdef868635ca823dfb7e569d31e3d73115f34a5f19204841953efb8dc054a43a6007c6d15ef16bd569ba01b2f1d0cd20215f1fe89f0714bfd77271fd9f6b17ad4dbce0726c52c027263605737ea396bcca9ecfded5e831a8ccc434e10b7023d9026c5d7125fe9520e896ce472e2525c70020cbe93783aa73979a75a9b375e533c79c9c057b3327b4afcc48a379f432ebcadd123ef5fc07379aeac4af20b982beb263af297246c84363282de23679d8ffbaddd86baaa25f9bba0ef02fd8ddc5c82adb472dbdde7988fc835f7b9fbfbe69c6ff9cf748ccbec1eced3c12fc9bf85ba45aab998db2ac06642ccd2c4d6bd6074a4b3e2829c800672bd3b2969a870b9ef6df28f16d093e364b6fbd1f627a7c41f93303390f161409a1bbcd429a60b4dc7c07e19c176d50c7db84346f181a1ef23c0d71d7c439e39afbe26bf915db4fb79e79beea888707d92b64dc246b2d72d1c8c56a57b55fc60c827da723a1e3f142f64097cb11cce8329ea814e32d4b0517ad961a71f272eac951dec3de06171721bf34c8a7f21b816c445684faf854dfab9d39afe3f02cdd7c0e7c51371eba78a67b4b82a3f241147e897779e605f019627dfa52f2bce22dc5fd237ca93f485714ff1014478de3c5f8fcecd79c385e6efdc5d70a3ab417b5cef67c4d364f4d51ef72602fc6de0f7b632851b1e903f203cc5adb27f47dfe9eaef1cfa7de429ed8bfcdac4e2808538ee315f71f15f06e443cd10a3fe3e435f924784ad44de585ebd2ec91e02b6fde06bb79ae6cbeb80b0e79aaa67c2efdc6c7c71a9e6d2d8f5a26417eae50b4ca727395fa2ca58ec98057500bb576cdd1726eb4f58abd1ec7eb175abf9187e369fa42fb155ddbc0333d317a503b249e97747ccc5ee0a637aa15aa7d2194a3ecd93156f98aaa3b35d0518c4989b4bc5a73355ef1868a8576eaadc0a7118aa1c4bc78f24be7699a39b2b3b55a01e75a9c39a590fe76a5cc56e55625c65ac8f785e1ffd97e321503ef3a0af3093c91e7348c528dbea3661b43026493cc92729efcb10533b95f5b448d84c61ae81d326c63c776aa0ad6d7c62cc0772a3affc5bd2fda2dae3e7f7624f8155a9312ecd668cd0939d8fdb312e63fc7fc97fbf6ffde20e0e3bffb377826f61a6b88f702ee3a3ec11fdafe32f9276fc45673cb9d18ebf98a8f19bddf1afc67f347e17ea587b07f7df4786eb8df25f2d26caa71cc5d3271fd4b88c9e0deab3c06fdbcc8d8cf35afd8ba08d5b13691b708e320dcfdcd8c17e47efe4efd293ea093606f4fbf3127214d6ca764dc52d8439bb05f4c7b7da5580fb1ffae83709d2a4c3ff66dc35147f5d52109fea6c3509a06714310c2241be64137bbc91d358e6ba35c78a364544da214b4e7a2360a731172d6d4333368f7b754e98e0ebf109352bc5cc68bfd79cbe9db1b6e689fabe3bcfcea53f99625f0cb701cb95728a7be04c5c6e41cfc04f9cd132ee133f2aea6f5f301727f945651cbf92f142051afb7771a2901a442e61d858c6f3fb9cef476e533d98fc9723c6d25ff0e0181d4c741d188891da900fcb92f4d37902b942b6f5a867aa8d618702b8dacb7cb7fe6cc7f07759bb47f6cdef163887a88df6b6228d2663d07c0faa6fcc2466653754eb3d97fb51e64e6afcfd93bf739fbedaafa0b3361c15bbaff727fc7e3f5aa9b1e5ef2bd08b1e0af0e35e66e6e76fcf1b7f2ed647e91875ebb876f5af97935f424c0e798e36aff36ca0d63ce61b03adc21ec9c6f6af3fd79d09bf5b0735718a66e30bfaaacefe99f0d95fc4f241e28e96c69ef8caccc2a6ba74aa41ce94bdb0eb8034295f5b4eed1cf2cfd70169d464901fd3de216fc40efef548dc8ad57292524dee946baf524b2eb7a72ae720ccf423a49aa45aff784f3318a526e9d3ea547b4da9c7646654807533d756aeb80bbfe4733257d8ef95817fef2c6df729a71c1e9cbd3b7f53a2a6abc23145f06e17a5d9d2ac43e4ab7dc1713859b27f064cecfe6d85be6410574fa1f4b3c538dbe13c73f1b4024e68578cab5e44fa37a02b7cb8e314119e39c43367a0ab7d5bbaa4e5abd3f8a35a601f3afbf03785e26a5d714dee9f85b9272ee419332ee3768e657fd8b1200e64d0b3d9605fc0224cd606f6751d212f6ad7c43f1aead4873a35fd97ae469bc4a15a732eb9f201036b05e326bef55f20e79cdbeebba7f421d7b8deecb3bfab8e78eeb885e98c655c2deb7485ac711511f149162af7946baecccb424d79780a248e5ff66e3671dfd5dfd9ef149f163bc1e4774aaa5161f4c75453c9ec05614ff6c10bd838e2c90ca3ea1090e660dc875e8dda71f2315dff43a3d87a11efaf54f72a1231c67d719e13f70ebc2be068a14ed52b4a59279eacece050107f9db4f5c05d1594b6a67a156f6b3389ec3784bcbab52ca7e70ce234abcd03025fb9baaf21314295cf05f6c61fde215752b09b3d25fb631a3fa1a27ecc1ed6f6929981fbd11c8ebcf111e27d4de2b8e69cced8e6bb8b6af1e9f9666500a69b9e7f9c839dd331fef64e1968e84d96b6dbcb487bed8b9ad4b3897605c616c9bcc7c6b53be3f13f8fa702fc91ca1f018630b35093811f0eacf95db4769609e187cb7e6673d21a79078d21ef445a5bb40fa2eba596bd641a6ac6ca9c994fb13e9c53dbcb1bbd47267d30c0b9a55ad08cc75e8ea97ff5e6da4db346f90be67adabfb9e4a5ac813831e6eb0967e39552678d8196dd5ac6ab0b2ee7de913a1c889be3e694b8d7daf170ad8ff60db9599dd1dc225e8de223239e86eb00fb1305cf5ea8d7eebeb6c67495f3898fc8ed21f44ce5b0faa8870dfe76105f6ca5b3895abb81cd8ea9ea530974c0c35457c5f589dc22741dea8bd87e52f4f1dcbfd52c35ce8417f9e58dab67e09fa26bd6efe18bc2ed370be81c44b6e21deb7e33f0cf72d2974a20475b5d3d8d6c51f51a908eca84357e721ffe56502f8091639e68110943f19aee52d2bd32d5bea9a51d8e1a5f05712f2f61047983604bfa2aa909f71001f0567b2a9e16c699341867f3e63c86b14adc685813ffe59ecea33fd258408d10c06ec85e14a53d66a5d4d3ab38710fa7d606156684b837f023fb4a3b37db15e42bbc3767126fb1fa8aeb3134fa668b732c70ae54cf25e6068ee7a2c5387e7a9eea136e9fb7fbf4bcddfea230485bc2667d352e58f32bcccde5b6abb5cfbe7bd7987058ebc7ef600367aa9f20e74fd2f8a58fe6c559d319f6f87d2f76a4f24c32a6d53da557dbd16751dc883a7187516f788d3e8058b51a08d2b78c4077420f1fe9452227b7485a6d852c3c8ea89eca886b38aad45ccfa5069b1cc71b6a763c786ef9f0b94b5b6a115aabf2956afbc063267c33e3a867910c89bf72b634d9b33c6be34ead1cb598d0be5bf19878c8f4bef2b577ce48e99e0306e6d262dae03c91f752b52eb42d80591c2a9b093a4e51e31f2276ddcd159ff5f1520016dc4d3b5ab8a1f313e3b792347ed2d5dd7a96f15867ad656aad1587bb352a795d19e480ada5cdd5bc15938072fa7ac1710ee20bf10c23d6cf6139c527a2786aef3d68e6589e5b59bcb7c1de30ec97873a62a0fd06db2bbc1bdf8534d23dcd87382b0910bb2014077e64e099266daa3e0c39faa4c69e74485ee7f0b35f7016ee156e3a232c60e4b4f3f3e00c0c22362a12e4b717a5ee29dd3b7506c69ea5f8346fcec0282ec8f70e6635a33370a7f46d0ce99bbba4951f448e9d25e8f78b8ace40e2687e6d7cfeb0f1fba01efc4c3a0a8b6d85f761638fecbe19689ffd51fd50d01945be4b22c8f6279e59dcc76b431e576ff09e8516d832be9984d81fc8afed191be801473fae867e60471413c0ba07719ffa5c7e6509f86ed47f4bfaf15463448cc8a43d2b2b55ffbad330b2c44ee07eb4af68cb5efd8d50dfb4485cf0f9e3e3a8d811eefea8a3ef3414c990b021134ffaf4c5304ca0ae1994b6b9543de445b3fe646c807d074e08bdc8a84d24c688d13c30fb407bba0eecc627f42fd44bd4f117012bd78979e6f1da211da454e295e5736642ce7d3acc4cc2e8175a61630fa52948ef812d27c57d6c67ae6caafbb57342f6ce17ce3e83de6f17b9c86c3ff2ae6def221bfbdc31834deb03e17eff45f9e4554cbd0e777e72d98c1ffaf4c4f8483891763fc76bacdb3bb3626c23668034ac067bf4171c2ee7b8009d787ebca27e8305735f000f64cb7fe9f8913b927daa49300a1386fa01c5b0cd431caef2db6bce389c407c13c4ccbe8d250a5e40de6b021cf2af0fe310c87715db25c623014fefeed5ec29dc03e670c4c694e3d0748aeb9a35217d7d3873dca274eba2d4dad8a5190f694947eb29cd3de6f40e39e206a258bf62dde77cc7db7ca2daea7d0d9c592e9df7af85cdbfc7e046bfaf54b322fbcf22e0700d0d89bf7ff693e11ccf8b4bb34621ff588c96bba1e2a852bd61f57a3cb3dc91cfd97361ad291e7f9fdb8b43a1b98d0ffb8e7a442cecc4328dbf93db88fd8c4be2c1ef606cd99b071c3d565ebabb0c73ca7192ead17dcf7d3dc43c85f8f0b7fdf597714cacbda3af20b216a37287bb644f6ddd5d504ebba7eaee710f630b76f5373f497340145bca0d69fda5069a58c871b0c865bf4435f43581beb77d7a068c91255e0e94d70878d8e9418dfba399f1e99ec338bc247eecf6fc97a3b2375fcc17d4a51336f234f798d9e89f25c10e72124e246366edb5bfc4fa6cb79f7cb9417e4a3d687b5f75ffb490f16fe5671233297dbbe0bedfc653fd4107ea3b6af51312b78e3e61bb7ee8b40697cee22ecfc9786131c20cd699fd190f379b8811f0ceec0f30dfdec5af7fd6942b9a4fa827acda3f932663cb17039ccc7561655be4ca1436ad910ea6f307e490e3c108f267bcc69c98bb1a516ca4341f22acb99e488f5b281d50360c117bacb4cca334a4ba9cecd5d92aed3a0176e8f2aa6afaf778629db491c403bc2b71b095a7e873ef474fc03a7ec962ea9f171f6483ba733c8f8983d21d651dff90ead580752c90ab4cbefb9eceab68d4e973d3a07e1a38548bf474e41070727bda5be27b7a88e7c84a17b9babc3ee1aed3e837f5054473d97324cf590371dc5656064f2bd4758177663ee023068a475b940a8fdbf87c21d8a4a3ed45c4f3fde34c3ad9dce86ba49750ecb09794ffb8d2ef237388bff774df5c1f88978f4d2abcd7e02c31a5d043a2a9baf12e405db5bd9527016190f17dd987ba265118a5689e5433e21750fda7f54fa50dcacc8aa15f7a9c53cf733da5dfff9a27f87b636f6786d228d3564a0fa9ea430ed709d88ed68467ae00ebe2ccb4e9fb0abf91c0fc11af0b754d6aeee99a3e7e03cbd3a627d2bf8ca2217130dc8c3554fa7f43d277eaaf805bd19a69ec3da5bedddaeddfbc2bf8f8e0abd4eb3ed916f99ef43bd00eebdf3cf77f781d60077f7f314fec02eba47af3b7eb13ec5336ce93e1e8c68f907eba4e7efc2f96406c1a24ee88c547e2ebd43cfb2c7b4fe2c83115de41d504f4d30ab0d80ee3ae475a15a1e630cce9101f2ef4d36be9ab47f538935fb11e877d30d4afe1b8cb97016adc621f7622cf3fd0b56bce23c45e431e6aa1ec68612207752c80cb09b4346bb22fdef5f88c3c05f592134fc0f0485c43812d790b9c603c687ec68087b468f1b2f550c5eb4be382fce51cf52ddd6b5602ce0ce3778b5b45883ed790c6faac951823ed0de2faeddaffb9ed0efd683d5ac91c922ef710dba1ff0dfdcf56b46327bffb4e12cb16c8778ac0bf487c2ee6d9e848b9df3e234ee370a0be63315e3b583f1ce5c61afdbab237e70ba8035d11d7b5913a8d50078ddc49cb39dbc4647be3ee9bee1a5f3ede3043f5f4448e879c55a74269ac04afd8ebfee4ef187107b973ab1a83bfea21966faa53dff6dd9a717d5e19fe2ec5dc896e2276afc21ccb459d31e69e7c18b634c9dea05d52fa2f15f1e320dea3acd5d92275e8bec62916a56bd21e4c710f8adae9613c1a93362f9bac15e60ccfd535e9a1a0cec081f0b922623de879a8ca6763801a885a2f0c81fb2827ac59bcae9556ea566ff724d904d4545d115f57dc233ef5c0332b1b784ff643daeb4d0cb190f965e7fa07f7a53aa858edf0ddccbd7dcb9370e83573087edd6fe0d09afca631b022ee8f49ff14fbec6f350c60ef98a857e016257b475f6f18c5c57387f70db42b278cf0c74f4bfc16513c20fb9910bf4d60556a6db226ce93d82cfb0fd60bf053814ddae337664fc4a9e6ab1c6d85187eb620ee9115daecd84a0fe44fff533c13a27e802ffc3a030ef0e10a345486e958be1770cec39acc309ee8fb3b959b9f65cd9931ae2ca979bf1b2a9e30b6213c8eb3f3773f4f904f6cb9def0795626f9b2a55ffc84bc6e96d821164a38c6e27a6e62f75f4bdbdd613fd2304ac4e42ee654b5f36fe7d61cda2c41bc90e43ec298407b3557d4e30af96ae2977bcdb53fb86f5d59739943823d5c689ae2d8fc8335e3fabc501cf698471732f766044389b54a18bda7912b4db4548d0735b47e6526e24e890354ab5ea9371bb82e8a8cf2fe52276cdc3f60ddaa8ff69efb84b5064ceea600cec8a1d861be425bdcf451788efdd9a717438ebd8bbf32cd55368d3d88e76750e7b7c218f5e24460adc603c923cc45a1aecfb0a75e6c980f1a72aec2897c5debd6f70be5dbb8934e5f8153d84c2f70cf043bf744b5ca957dc0383ced033f619561ddf8a9687514b1870e73a44ad3b454fed2c29479eefbda7b9f729d51bce8f45d08cdafd74fb8dfc72c519adc3de28d584a4df281e4cd95e34b7e5f03ea75da8016db8abbd72ef6a1285dca57ee5658efcab8fb8aff6fe5a57ba43ecca5e61eb0bf4ef6a8875c6a4580bf94a4a461f651a89e22d563f3ee41bfa193ee5cd242bdeb1338f653d25aae51ab4e38a758714cb32e36156c11f8e4a43fc6565be0494977829e11e1faafc0ee4adee4c0e7976a25758c1bffeef77909780627c01c3dc7f94fa3fc421c8f73cb9158c4c00c46f7d706d8af043dfe985f410c600a39ccfb357724ae308ebad9b0f738f499002f93fe69bd99b9266b52427ce0da221c70e367abbf479e048b77be337268a8efb5c2b30e6b11f632a99c2f6b0111714675736d431df461606d4b7daa6e9c9fdc73ca1c505b8d2d96c4b3067c1d56bcaba6f0ada54fe644bbf51b7ecfbbbefbea40bd0d9d1cc05d3e4b285eb267e388b50fe78df429a2f888e31064d3dc39e95f4abe459947207e26f2e91396907deee455ea61ab473cd9630fe7da62bbcf39835423bdc1e113c58fc0cdb8b732e4cb8fe2c109f67615171bea3bd30d8135c8477d95c5ce7508f7ce90a756983e6224c46b30b1cf11d558083b569726d6367f7993c2f9e7771b486ed3396a7606bb94a3bfd66bd6bfc48dc7d588c5c0d510489c0dfcbfaf2da4f623d8cbe0a3e51e985ea84f3aac91cb21598f258f1fb78d608b6331fd33e4dc2b9ed615f8f049f54f671df0af18589b310ee4ef254bab7281af947488506f2bc27e97fb3c6ae453feb8c3a7f4a8c7beec11077ec489c7945f31c658281dd4baf5bfbeca6746c9fad4f6371c09cfd8a39ad352472dd29a09f4cb11c7e899fe4e90e6a868b5da8fe61cfa5aad745b5c298fbb1aabdff797505bb2d24d419c4c29696ecded3b9e7c7e78cf4ad02dc9b4e929434c48783dbe4523c21bef71dc879a7a8cb0ee7800cd20c9b33eecd6ed78138796ee596929d70c7b631ca829f21f388ee9956a3bcfcd73240fe7cf2fc7e1490e9a6218c60b754d11eb529327b0d747e403b616c8c3986f282fa39d330dcf51e45d012ed78bc526c8f9a80d348fe2b368f84edcb210d3200f66ed60aebf30fc1db31fef9baa995fcddf5e5a3e3e6be821afeca58d59f7b7eb3cd64773ee2ade756f1730f07bd997feae877b4e448ee4940f2361b1dd1e63059bb45b45b1239ba76994dbf6a84fb4966bec2eae166fd4ab19c51d9e38738de3111aec99c2082cd77dbc8f871487ff4a0df876c0455b0d03385f9cc67e852f5f9e11efa427d8d5d49b5bc351c79774b136a4f8a49635714e280eb403b3918b7274a067a5c0593704ee84ff96a3aeb177f1d752daa1db1c756b27be8df92fe4af895ad49fb9197ef4d57e805a9d33d3b01fdb74d08f74d684a1847e94c110f48695f6851326057178aeb39dfb1957115588ab4891379a1b3ed58cea54d5e857b4ee9235e545553d926ce8e7b35084f3a4202edff7dcd6546d82512f7aa73772cedd0bae9d6ebefc4b6e01c8f353dd79300ce38b55700fcfa9f5c73d5f1b68fd4ccfb417824dbb07586347bfe08ff3b6501f9a7317f8f2e381b59079b4827276527b4ec6975100d8cedab9d3133e9e57aa6e2e733ab237546a2b44c8092940df2482daac159ad37e0858db248f102f08f66816dbc07354a8fccd6fd4c1f04ea885ef2e23b081817dd4d4b3bfaa9969bf75c01708d2ce75f358e95ff63cace32deab2c63514b17040bd4857e2a564a38143359219f5a1c5d5c8b318f23696a65796eae7850579a330aaec653d649fe6b3f9bbc825db722dc80ed60561ce7bc4898ab9e199475a0df5a2f1376aec77a895dd55d73a58ff09acf69adfcd35928b9725c544e1a8243e845d9ae7c7bcd33f91b89ae2c53003e434ea536cf3ea9156b6e28894df6eecc7c777b2e364730037e937ef3ee1373aa4e595b4d3215f209e579bc2fddac7118a9f4afc591c3e0cc30162e77f98fe7d9f05e9ba98e9683e269cad7661aa9fd7d6bf99e31b8cd6b309fcd9818c311a5f60a831ed00baff1bb74fdcc7ab89f3dcee67e933f411bf62e5f6f4ba220e7b63ff0bfd73636eb77839f9ae66893c8495e24cf5647c520dc326d6d39097341a7e5e5ba64b63176c82b99fd8e991a6d69c53fef358535d277b21fedb8eef6d06a45d87f7296eee437c1d84a1125b75bf3d61ccb8f14aebc40d49b736aa883bac2e78a9724f5e737ec3fed1303f385cc87331ef07e5426a90f83169f376def73a209f42e411ecc150f23817c3a07434fabb88777184c2067e9f9fa4cb8973b6a7fde746c600eaf5a27883f35018fe96eab8876b06581c8b5bec9d7a7b29e799277b891356dc82f1e544b5a5259d8586eea10ee77189388738d96b7f727e66a8dd14c6073ac390631f63d0f895b85b822c527c536f1ed414ade6fc4815e72f271e092179b665fc781915469ffaf6df49ab428403d4f4144f6467d984292ef68cb8ee1077c93970d240feaed7c36bf6fe56eb29ad8c0d7222618fecd246dea12820ade75ff99870b5d5b4e5c49776c1c96cb7262c10f59d7bf6f4c2ee796514a6f0c719703ec5a2a09e29da477165794a4ffa487de007cac117c4a9d19c0952bbb490bd90f077f90dcf49a6b800f50fa8d71d9f20dfb5dff9db1ff47daa960745370bd2f408b19f391116da64fbab7ecc10380f38accfc2f22cbc97763c7b983f89e2c133cc5989e7ec05e7b240debf962f7c45fcf949316af1e485c9a887205e63bf12337ca310e80f492c4130a9082360fadb1ebddf2f6f0c79e7c01cfe8bf1411d0ed7bf46f63aaac9a7a35a2a618501b34b39c302b8232cc69999766321e0821886664163ddfbdb33f2a6e7fa7d5f4466600f9fee77d790abb41c1a7f4dfcbe36fba3009fe0b37daa530dd747bfcb81007924ff0fcf45f79d6ae2b33a7de0d3634e52239f3e10793d246c409d019edc0a553e3a7da798f181ddb9649a8cad1d312940b321f6cf8dad0a9b5803eca91d441ef954a9b761e88f2dead51718cb7942184b5d3d1b6d8a90f89e8d7827acfbd779e803723c96266a2a5bc1a63a91fdcd272efab40edc5f728d90765b85b98c827be381d404f31341e727e087ae586bd7aa8fdb6fc3388b2b8555420d778bef8688f55eff62d80b1b683ac648e24dd9c81d70b507508f50b9cf7c8ce764dc37950ffa195bb7652a2efcc4bff7ae386955aefa0f623dc2d871fde959432edacdfa44f77a96dc27100b2206ce8a2be4e530857ae6728bb92bc18ec43f1b85875af5b3cb1c97e40db032b516cb2fd7c617f85bf09b64bcc3fa64cfbbdf7bb52b488f4e6750a39b2ded07dfdb0a46581f043ed75df0998bcc58e35ef5fa50e362ee8a62021a0f073f1bed7c80f9736b594e4dc4d70e83fa27ce513acd22c523f48e98b499d7d83847f6b2608c75fcf83ad75c1a2d2762cb59849a452efa01533f629833bce12a428c7001bd90d5efde52d9f1420f1eec77ccc5bb8dff8febf788f670bb8a14dfd23be6c9acc56eaa30149f784fe2826cc3afe5c4ed7296343132e5f0c0261b3f4ec4df309f903effe090978a272592381eb4a1597c24bdeabee2c98a86cdda8f64bc4e7ad69ff0a88713f9159935bccfdf5b4c738f4be20552b8ca81d6f87b90ebe486d2bcde96a425f9bf7e775772885e556ddd05cd043cff84f31a12efbbe6ee90df2110d7b3e697a0f5a96a41a03f62f95c943ef456f6158e14e2bb09ea422a3b5548ad60a8612056c809c783f9d7f33b50bd6dabf1034eba960b166daad817c4cb6d0e35e422db3207f7a579cf41cc3efcdd90ea7c57ec590f3c2bb050bfe542f9371e17a87dc2defcda517aa5cb5d41da55468af9931c752157b67bc910af18c5fb57b41911d69bb7b7f9faf5d1ff3a07485875d3b3a70ff8d1c83657d782b4438d01718233c468bce41355d37c27edf628a67a383bf8bb826c22cb75f29fcb1efd0cb485aab3d2854986d04f2402d8c75a973b922d5a9d0f3936d06886fd70c45e960cb57af74b4e5a2b7a1dbe80a641b4ed537f1893fd12a8d117c3772d0bd49ea6e7874a0fbd78e9e45787a11c8b5075f06037a4b5e562cd7e189aac1fc93e5fa75a8ea9efab3a47e8f7a5faefaff2072c071c90476b3cab896f58d7961ae59a9a355e0c7dfdb71693c69eaa27545a063af956aad662875f5e7105b36c1993f608e00383c95e7fb066fea0b6d86a1e75388af54cd976aa2db2377f57a9e72cadb57d9797a05e6b7dc9e57b4c56f65413a47b39ae08f7087cd09b80fadf60acf140e995aec6d80f2e73c803c93db18a2fd80f36a8059c278b56d354f2d74ca2d171f17dce8c9f3ce222039b3409e31cb1b56ce8dffc773f5cedd8f39d9db2f85633a8c70ff36135f2c0ffcacb29f26f6b57b0b185b7b2e08c0b6cea1b101f5979c0bc4c4e7143b5b290efd85c8f96f19ef8c34f29f67d45c60f9d6241f9b712770cba73f2dc87be558d01666512810f6207c4fd6b4afd08590b525cd8b127b9b023c8bbf7898b9b9bd3e659726fe735f680e3df72c9b92bfd2857da816438f2639d6adbc40722b26d3583bc8c2df156d443bbd4a64ddc62810e5b310c76d5288b11672dc459be2fa798b5308087aff1e5a00ec9f06c5ed4aa0f4ae4e3e299b0bb0597bdeba45bdefe3df032bdfa9bd20c5b2e8c26eee805c6e00d31b01fd4cb94936f1257a3eef70ea4ffd5c963ab7e25d0e9c0b951fcda99ed2a5f3dd09c714a67a0a56a85b5875cd3e96e6a004f096a499bc391a7389e0f07af14433f4a9de71a7205417c19639fe1b0f9fea186da9378860a8c7362d215c3bea51472c31f4a03017cbc497c9367ad3e0a4de1a7663e175389f7d17fcaf7f0eca95110b7626d6b983b907b3a305399d30c082f151f74c56d8938782f025ec4e69bb1d2c5b55c41bd1ffd25e08262dba5b5569c109926352c26698d3f33f713ece3a8e4773064fd6612943dc0a9682ee645151fe80d8e4510f7cd9538fa7e93de4554d46cd4b9b6b167cd7f0f4139785b41ed7f17544cd5b0883b9aebe95b611336829d904b9279db2371643ee138a2c2f64ca6fe763debda4861b135c52e98dfb0a2edef3ef13414f1459e4181181eb107330e14a7a8ec19b465cfa035c59f7133b0f9417067e177ff6e5c347ff7defe9d3002c89b9d241fa3d6aea9c515f751897aca12f7518dbd046d25d7df32d2edacd7e87bddfb3852cbf9abf3ca149f3451eefadf541f52f5a672923be1ddd51a0ffe66415a29ad0f937857c2c702fee308d85baa4b449e0135f1bcefefca1eda7015cfe4a0af3f111356631d4ae16367b5d3f675a086039dbd7fe3e76466f00cf52467ef6fa80f94bdfabb0a7dbec25b2681aab9855ceaaa37fe0171ea194cf5bf1cf71043ebdc4b90171839da16e690fc3e03e332c00370c50373c83426b12fcf32c72c5acd553e3d2d11cbaaf4ede2414d18b59595ce66e3c1a179b7c5cdbd35d21a89003feb1cfd3a08e979c493a6787010ef5ad4e9ece1df3476e73a20bea63571067a251bfa5160919ea0e08ee371d069f385ddc46e1ddc926f1625f60483ed79f68c6244e718e468d6535a8f723f8e8e1ef16d486cda589efd1bb047fa3088f7a3b940ce4bd83b3e8b07b36fef39def3ce7eb1a271b1a56734ffbe7dc6513ec3073e38786ffd77dd7c7b0eb6bbb1f5e10a7ad587e8eb7859d5d529625e6a2c881fbef9b7bf8cdc19cc3b708ea41b31a59e8ce6ac8a37d4fb0a3d1a8b0d3780c3957a47dc5ea8b89fa576ca9bb8fd77edf13369c0363622f3dbfe83669eca7994fef13cc97f4fbc4b847cd83086c52954ff96ba7cfb30a47993f58dd397f3a4f0836cde9927396f79ed7837f350e6d0fb8138c974fcdbfc8779e867e01fa3b615e3e14b778caffa8a72d7b006436fd2d849c5e9a2f849a5765b321c15777fbfb48a7f9837e9c332c23936fba4d91762c3fae8f7c17ed0fac39bfb6c16cd75ddf9c4fe2fd095e6e3deddbb4fa50dc26fec485ecc56f7577ef35c2b6fe76ff2f31fef916f51f397dec74af7a4a3027e91fb9a91c60bede3b27cb41f24b7c1bc894f00eb403a626ffeceef8ca518067aaa33ed007d44923b85497b5f6ceee75b9ead1be2670c8c75abad8defb9b4dda7e65edd31cd278dcfdcf2fac49bc0c53300f5ea1bffd5fea7f5b56be248ec31029d77e26e84b978c9ecd78e168463418f0660efe210ed48477f95349a818bac3fcef86b47cb5be23d475979774f5c17783de8b993bea9c4ecb0f790748ce55a7b35efe7e3de66a54dac8cfd4bcd3ca75671bf2f82e6bae0768deec297ce5ad7cefdfbe7148d3f7d735fc7bdd9e3dbea99e648f2eeca1ed2fbe736e7943e92eba6cc6fd678863911da9ff9a7b902de1a41bde1cd5c37cfab1debee5d8eb7ef72d16efe8d3836ded5cfafd9e8ee1ecd99d7b181ae717f8f18e225d98f9297eee4662e76ce3369ea499dacddfa7e2ec07ec81ed5f5fdb3ebbb673fdd3f1be729903edcdd3c7ac6a5fb2c2b829e42ea23e059ed8c6fc6b63d5f822e1fa2fef3bab45f6fee596c8f582fd4e435e176f0fe694c70762b1dcca5e64a9ccc4af61e74ae6d7cc6f0ee7bc077fe25eb379be1edf82de77eeef05a7de81be9ddbc23ef0670f336b1c1d76bb05d4b0ed3a6da4d3ca9ffd41fac9780f80482888d58f94a6ba059af0ba67dbbb73b67516a65dbfd886c871ce7b67af3bffec6ca1edeacfbd6ee388cf31efad9298c3f7df3f801c772d67ccd71c4f870c13309300bba7f7ab0a6709cd53088aa51aa1de8b9a057661fbedc93383f782dcc3ffe5dfbad10bffbfdcf3af1cf0d1fc8b73f63cdba09b7d54cf585ca7d13bcdd9fdf38ce1bdb9d71b7f99e56a61d6eecfff2fe5d71cfe037dff89c9ffcad3ebbd56febcfbedce778ed42fad5ee496978e23997d9eef97eac0b8823d73e173d7fd7c49f03ea35b42017efde3f0bdeab3d0b4f7ee938ab92d5b7df3ed0ee9f85efa4c6a4ce2d9a4fe8d3dbfb2fc827a14d0f2bdec54271d24547bbacc6a0d63dcd35f058c21a513acfeddf2bfb81eb4e8d09efaff4fbf1dba03f0ff3fbe06f70cf484dfe97821f00d79408d5f35194f7eb1ac61773c7c94bd70caf37fbabf7695d759fa3e64cf949ea1d40e71d71edc4ff7db76f5a7d79f114eec8d7417b36d9df7ff31b1fd7b30f3731546b076edf0bf599aeb7efb5a8efdf0bc70718cf4d70b7bf7cfdc1dfc398f09b347e4c61cb9c4137a6301feccd047a04e4bc757cecde79d97e4fdc8f377398009681dd5f77fd7cdda0d5ea963e00d7fdcd7a761ba7555fef635ceb5c71308bab6f2edec3b0eba3ed9f0ad26fc01e6c56fdbcf1b3f3ba7a561c8abcf9ae81daff2971d1c1fdcbcc440e003a2b3682fdc1b555732db38475137b5852b31bb91685b40539d939e2c9e507b9ee53cb7d0dafdd7371780dc207d7d62e69b904b0cff6a3422b6fec296b7920653c574c8634c74aef84437f9093956e3f0c6fd6663ffa93678f857cf68a7add39cc59b0d5b5bbeb3f241f598b4d9c6775caba39b470f2bba6f75f12064d0f2ec188387548fbd0b56efc9b8dfdcfd771594b788d6ee3ee77e82785de5e5f7787b7fe754f0b6e7d74c9f576e3a3734e6b5ddce727246eaf74f5602431e41b78c6feedf9decfffee1e8ddfff32987eb937e4dc5f46053fb7765eeef5f568393adec67e9b75bf8d919bf9492fd1886241d1d8967a699fff5d8e6127ec9b3d2c79af6ec6497913b9c63c3e3d47b77371bd9f8b9b585372f7a5adcd83fefadb1c90f6e5fc7c3e5765cfbdaccda8f38e35f1722dc65e897c273086acb5f1a0e7471c5a58a73ed0fc2b3cd6b640ee1bd5bfe4405d4247ec9523f92072daef0272c5a9063ebceaf3fa8b9f8346eee2eeb980a7a53c6b542fa836f84bee9bce9848bb1af5222cf573ca5fcabcc5dab9e3d09bf9bcda2e254eb81bd7bc9e6ffc7aee418d2d1a8e72e40be1c46948d869f227ac35f01268f6a3bffba77faf7dce8c28923c3e5f9d91789ee0990fbe0e9c8f9f7d2e1503500ea8f59b74e224533e8fda7badbff8b7bfa3fda2fe0670e383affcc28bdc53b1ddd830b5a6a56f5b4e4fc80f77ef6fdefa3d3007eada763cf42cd863ad6faa7cc6ee389dacbceca2b01db3cc976dbcf7bb7c596fc56ff3658595ceee72d607658fdbbd877d998825dcd21e62173a7b23d3dd01671f23ecc73bfefd02b02c92f7f3d1bf67126749baf863ea0ffb81f1acdc3b18bf30a9c172875bd1d01eac016f80bd3a4a670cb12f7135423e89089e557d607d30444ee20be2d042c443625f8fabb45ff0dff27e5124c701b1999c2b8730a7c8ab1120ae786023760af0c9b1d415dcb41a95e2ee7dbc0bcd05d9062f228effca9c03b618f22f88b99d63cd284eca3e6a4b3d110607ef95d07ff15d05fc7b60f86640dc01ee2a420e3255ff60192b7f746aae8e05e75bfac4b0c739829cccfc99f2aab14e755227af519745774f59f98a7bd97d5aa15d0c0d990f75a1beba9fd2ba2f767bc2c6ef9976903caba4bf1e4c7e1a4a9f41eec5af9fbd8cd71e7034b94f8abf68b77f228ef554d6ca4153067c8be0a3f34e924f297a214e2e9dfa6687419237fb4a72a7f24d65d39857ed98770c3548d498c7bd3f1a73713dcef08c0d9b6ffa60be18f02bffe8d45de9bbec475e449c2b9a9cb7afdfc123bd9d50eacbfcdb7790bc8cff9379d7ff67f3fecd98ff70de6768df1adfde5e6eda799631aed6234c395ba206a6e40aa7798e0befd198a366de4a37403c0df950506bd8789db5231e3da7f6507f896f2566e5ff6ede63fd157c4616ae544debcfe7a6783c3766e37b024fd5b4b15bff1fad15e7e15a59950b9c677d173d1cb32e395e3de4e1c09c177dd3c6d6e9ed37650fe6875f67908bb4f8763ffef776c679745f4ddeb78949b697bfb8efc3f11aed78fbfffebe4ef59ff6d0e3f1560fbfe5f37500718cee5e837fbf67d247f74d8dc2434d7ced2fee7b79bc17ab66cd494c08dfa57ff1ed1ecfc59fadebbf1873b21fa30f704cb5f3bfb61f0bede119f60e391f16b27f3a2b7781f7b56d2dfe601f8a635182261adf89abffefbfe7e6d19c67660a3533dd35f372faafe7863f3cdf1dea9ff3713cc652f3ffe05b7d7bdd637b1b49ec59d5b94ef674e375e6df3def7cfebbe77d73dd7f5c8b3287feb5edebcd39f8a97c04d76596abae5b3ebc4e5c0a6d0a6b0baf2bb603fb0faefb8f3671f0d00e78a3c14cda62dd7dfd0bdbf5f85bc7c7c6ae9cc076adffbdedfae64cf6b6cd1c347eb598939ea2b8f18b7dbd33c6e8a1ef5a0b8819f59f186b043de499f9ce3e9c18e8053ad176403a890a6706b5aee985d9eaf9e2a11f1a037edbd7a7a776eed3bbb9afb07ef3fb1fe2a9608a18babd4f1841b07b36f01da37d7d68438a1df6158499adfc3ee34ff78a78745fd8bb1b9977b5fdcff7855cd9ba7bdfccfa8398e67b1bf48dafb81fdf7ef33d6a9235df5c7f7c5ed2bed3ddb736ceb9ff560ff7c9fb63db36dc415e9885cbffcb798f0feabcf4f817f37e735efaa4152cbaeb78b1c98d40d990e3ffca97f826f6fef67cfa664edb3597db5ff80ab0e636f2dd376c8758e0bb3dec5e19e9dd8792cbe3919dc31a871ae39971ed9faf8b52c443d075fe89691e5d77fcbbebcec63731521f7a188bb9e264a23ee5683dcaade127be21865cd72b0eb5e95ce9cd29ad4f2b9a141f4a1f340926b236c62f664cdc82c6403e238c2f236fe2281c7dc72f2bf35dc7c779e4ffc53fdea15e78b39e1fd942e41b66bb8838a760aecc3fc9632daf47c8f1e9d3cbe33815edb28d7cce46013d5d069e6556de89751ec56642fa253236dbfd45ccf75d5ec6587be8ff871efff771fcf2711cffad0f933df661fa2be0d953d779e6d0fee79ccaf7bed637b998fdb3767bdd72d35e97690fcf777d69ff060e16bc6eb5a9dcf6798fe3e1669c8bce75b3da69cfb187cfe35a669f61bee94cb2ca364e711ee580b826f329f23af71084ffdaee7e639b7eb7f994ddd0f9f7fee6e373946dd7e8bbb170f9d8a7817369839c29b1ddb517affe2ef8931cd9f7ebf42fd7dbe31ceb7f8b351efb399237bc39abe6d4b7fd39bf94fed1dc67f1dabbf17dc6bd769d8d1e9fef4b9937111d9fc9afd575c0adfe755e44e659e5b7a6b3f1d089db1e9fdf8977baf3ed7a9ea6fdc119c74f805b57d73db5d77d17abe4f7d71dfefb75dfbc5f5ce23755d77d749eb7f31f9e81df5e777afcbcc329bcdefa289debf68fafd3eedfefdab9ee9bef679fa016d9fa6d9deb1efb36a1f4593bbe4df0f647eff7fd75dff86edf7ef77fba2e68f6e472524cbff26932a95b883efac3efa95f7df4698a2475ffb59db5d26fceffc2038de3e6fc5ffc6b7b14ff8fecdc373995ff7a9e7d93aff2df118f6af1ede52fceb387fedb7fcbcbc0f7f9fa9c1c35b613fcb7a5cdfff53caf1e9f6f7f38cf50d3406e99a41b1ba556f9277363aafa00f97b11fb833cc4b731dfc31cfc4a72b277ce368b9d552e07f485bef4499b31f2ee186bf65f730f8fed5462530cd3dac5f20fec627cb4214f44e7ef4f53e52c24ffd0a3fcd2657a7bdd6b3ffc83f39e6daa19d474f1ba91e495fba77a90b6e2aff0bd37eb8fc779738a9b7e1f320edc781037ad2d8ad156fc4ff226ff10e3ffc3fef8264ed11b7f5cfaf19b62f2ef6dc5e3792d54ad5c721bfd4bfbf6bfcb737bf6435b21f182109bb86f7f6193bfa905d8885762a1a7fdfbeff73857fe9fc7fc9d5ff39fc6fcf84c2ddfc3ebb927cfa797c15fd4afff6775bec7be61b478a7fdb72cfffdf9f438fe12b5dc7fd28e88bfd87f0fe3fa5ae50336e22f703cdfd4958d01e694a7d795fdef7dad876761783c011e9a85dedfd450be391bfedbba90fc5fffc516417c8fdc7fbc8b35d37f9ffe2847276b37f23975663fc49afdcdfafbaf3895c77be67f88259b5bd58c6a6279b3be5b4c25c524b157b77d8a8ffdf0eff326c55fd64459f977cffbe6baa7e0260f1e3cadf8f40f6cf8b7fee563dfed7b9fef9b6ffe4dbde99bdc492ef1ac83ce75e949f9b3dfc47ded3a28e64aaf02787fe22507de1f9e38684baa1169fdae885f2ccacfc4958abda2f522fc273f1a628ae6cc0df45b6db4a5d268e9f0f9490eb4e2881a0d41dec6a752073ee48ee5699e31d3fe604cc0cb77450e52176bdd1fbedc035f7efb266e8fb31879a879697ad88711524f9961d377059e2ce447426d486b594ef5e08bf59f033f812376c4f9f6afee5d7f77ef39ea14863a723bc5d5b8c33765c5c82b986aae813cfe41811aa3699b2f04ac37f6b0234e7fe373ef14746db0c60e4cfb673c4b2eebd7456327ebbfc00e3cbeef776bff71bc5937e74de363f1896f22ae9db41635e040601ffe4ee22b9be76cb2d111705bd42b27b5dda5962171f7f4146f9e599c890f8ab86b88f7547e13e0947a8f889bf3131ffbab419ad8527f8e74c00da9b95c491cf80e799084d052e20a8475f3a2d60df0b8756d0dd4e4b49ebc3fee23c90316187de41d46fe84644f3c874161161e717c66b6cc510d17b01f27cc3e2357bf8d3cc48e28b66b1c5b7599a1964d1ce5a44f106506714c0f88d389b457f7beea21403dd8d8a1ffd278844fbc718aeb1f756eccb5aa4dcf27c89b2a90bb4814da33f20817e5c07c461ded4582fa0cc2e9e3badc830f207abe8e7c94388f6297be521f1e6a6564793898423f62859ac2afe69cff86be29d41d16e3e38e7afce13ae12f6d0dfa3ef0de8bf255f5b1e0bddfe45cc87e10e4bad2d796c4dfc4a001e51beecdbf83d8d5a84703ef11a316a91aafaffa81b13e6bec55af02fe8db71a37efd4ea240762d15b95bf6fe7827816f01de389ff4efb0e394a9f3dd23b8eab91c717a8717de9eac4ba3ef7fabee453400e59ea01d3a617ac1b77b5132fcfc05568cd397b6bfe9f777aed593c457d89e93b230de0f0878e67c72fb611b8b67293a1be43783d4ee0de25e9c8a206c9e54e3bf798017f627064c46f5ce774ef191b4f6fc6528c3dd46bbde5fe0fafc71a7b2f937cc764bd378c88e7b4eccd915b55241cf9bb9ca0d8b8d82fc83b3e9a77f2773f4fca3f90b5bffedeb3b54edf31e32ac7dd628cfac01b569e89e31f7d8baffe56fff4b7103f7ef5b7974f7f3b7ef8b795ec618c86acc33d6109f205a5ee18d542ddfbf74a1edc73f3a7f7047ffee69ea9cf8bcc03aebe668d5a8a3f6c423c715a7f01da672eee8d4b0e7fdf6a81e1370e22a707be43b1b8d3d5eb70357739ec8ebd3bbdca218f0778ad865a9a4a6bc620dd8a22262d101d7514d89bbf5b2bbdc4ac73e6448d3d12d2af72f3727ae377e5711ffb93eef52e15a76fc08c0bf5139e0b0edc78d043eea9fe2c2fae94ee297104f328450e74f6eaef1cd281ac961b97c679523affc09d2d7ceed53e69ae619f773a599076282b24af2bbce3d2068ed578270ec1e886b7e55c70e4d0491cd062d4f71f1e9eb51dde44797e4abf68f2f34adf61691456f71911e8949872bf47cdde038ecde7eb60e4478a1bce4cef35c1a3f28adf46693c296d2d43d6eeb10fdaed31d435c84befeaa17de2513a067ca3e48d4ee47c63bf1dbb0e9097ef78661cfb4c95369528e5982427a93ef493f5681e17386f796fa69196339edf7579420ef5c97c3498c8dc641478b1e46bdd2b8e623c7393b9d4125471a3d3ec8596476220f58e6613d90fd9472dad27ff45d663414311ec34c46c116aa436be54cb1311481f0c783be47c865283b7d30b0976badb3ffc0bb444dae784c8af1ac13e67924feca63fb9e5ddf38d05f5e837b6738bf35e630cd8dc7f73c7193ae45013e45ffced05359de4f958d8a8cf912017bfb96e7b39e5fdd6dd77ff85efae7aa523d0dea75ed15f12a7d43e738dcf547f1fe2dfb73cba03d033b18623ecb174e43e7b91795789db6afce15539851c6fe4e2376123a83d116fb9e47c54df24c06f2273ac8903bdcba6dbed9bfd25d73ecddda490fcac9db8c24a479d9e476341ef08582c895b72d06eb25eb7ff36827edacebc021772e79a5f784d22fbda1dd94b2f7d330135ee059cab39f830a3b6b738c2bc4acb593618fa8d8f8cfdb9f8f78cfab07ddd6ffb90d1afeaf403833fd7f6e6823dfc9335f2f9fdff2feea1fa8a5137a233f6018efdff71f76edda92acbfbf057e2a019d3cb89804aa49d1cba41ee383862048d5113954fff0ebaaa1a4c32d7da7b8fdf782ffe576bcdc8b1e9aeaec353cfa3e6e21ce7624b7c0dc0fd3c5cef02d67bdf7fed422ead5f871cd761cff922a00fb63f877a84d5b3717cb67f3f47e227640f7e37873b9fcbaf514750ce6131851a967bc01afa5b701fd8220eb668c8392dd74a6fbf18f6cdb68f9c153f8c417f1f9957ea9e45e2b9babd11ea3defc1bd5f3fc9379b36019bf6dd167c9b9b6acdc979ef0decc904ed89ea09772537423f775c9c3bf4ef10fffd87f837025dd9b739f85bbae434105cfa548af7a8e00c6dd9f0db4b0dc44320f95ef19bd4c0091b24ba8d6bc95ece5d1bf5509652d3fd4eebe922d7533f2602c7e4dbfb285b1072d7cd51ef0bead06c3db05b21daad98380903fdaddf7b5cdc7b642c85f1d80fdffabbfd767bfebfe9f7e3152794d2926252ff097bfb43f98c835a79b8e3b73edf0779bb8c384e5c59abc03c2f7fccadefd703de30b642dfb8217ff7197ce8073ed87867bdc3b8e0b585b8308aa38deb087d36a3d78a00bdfef89b460c685f15e4afa87c61352da5466acf21933b01692a90564ca6622b88efc6eb08790980a7671c11af47db6b0331e2d8567aca6ccf76a475518f574e80cf5223df7b55632c77cb41b3d18e071a18211f11bf58f74d6afaae31ec4dc82f001c22f8edba35997fdbbf650dc531d00f31877629c258b0df5b51dfa2b731d49bdfdb660dec5fbfce2b58e7384f6398a75d3c67f92a16f9c9960cb921e4bac1fdb692fb6dbfc709d8e3d03f92f37ae05370f42970ac623956fd3bbbf8cedd9cb4502f4d723cf71c159729dab29ed7a2fb4dde73c8e786391fc8414b9f44716d8016ddf471ddd45f7a71fab90e7d70100366d17f738cfb708cc465fd476b46c7ef7fb39e951eabab8730e67fcf239aa1fdbfe5113da50915c725e54597c8ed6e67bbf598749656f196f826e4399d6fcce7ee09e2b7ce6e5cac40f38d674df1b60347e69c7dcfcbcb1ca1b5c275abf8ecff0badd47bf055c31db552c33e1ff289f606f52cbb7193faae9ed24c511ae55f6c897eecc72569de895fdc8f816f3f3032b342fdb77572bc937ef18f9a6f2969a1b273605ce85a99df56f47de15a9aeb5510db38415c8dbec553921b1fd655ee786f19e646c3f6a58bbdbafd7d9eec1aca471ec33bf87615f0ffd94cf3eed42f1219d519f733d208d57d4e632ce372d29a8fa1674ff9bda0bfffddef225fe0cf17dfa09b1bfb6a47fc96c86d9a72c54502bc811867021f92cd0feb1b6916a1a6ff97e7937bcbc00e85868f7c409c38a2b8f7f59d3efb73d8a3edfac1b648bb69dca6c36797b6ebebb37776b81f0f81e3b11dc60cca0775d107ed632f81b197b2c39d8fd4d9e19e13b291fbfff03948bbbb925abe8de2662b1cbfb775f25e56efd775d731b2e138c935f7f51a9ba13f2ff7ad1ffd79354e31f03a1aac86dae640cfe8101cc231ad8d4c9779ed39e3983f4ad911f39fb2172c4c424bce01f9ac32076752ae344e702db599493515cabb1435fa05d1af316976569af4715cd06b72bd0d6a21861a68bea32ecd1fd2fc8b8cf284cfbc5bb6c4dda7efd1d618a4cdb93660cd8666e6482d63ad79c35acb2c482e17bcbf58a50ddacae65c82d68683cfb2cca48d0d9f19e99326980f9336298c607fce0ef06f87b492f668b3dac1bfe7f8ef6e9dd6c8eb75c378750bbf374684b5d924b99206e732bf5fb036d09c9f89e7d03877bfa7d09f5659b9e67dc89c5892b162afd3985ca8b624a067cb2e1def5c282d545d8d01f201a5f9eb8534750fddbd8027fc177d4796613eb21f0f7680397331c204b907a3cb74302e4bc96bb9dfd2bd58015a3756645ad2fe867a48fa83a680f109f3c41f1ca37e0b03de9c835d063cee7a702a1c78c68a34c6e3f2df9e75ded94be480f20a9be64fbf47f9926752d693ce2be75fe7b4286ba9d71a45c6d5c43572447bcc7dd4bb4ce68ed292c5185d0f5ebb7d4cfaaa46467a5a503b6215c5767ca2e5b4b7419c39f7b5e08ed7d2c126a9f9b44ce0be27ac05d5c9e3dfbb58b53b3ec95e41fb3e1c3ed7ac713abb11da4a3b89f4c8255f5d789f384937af05e379acf643e409243dddebe8dfc79f1934fecbb6a13ddd849e52b6ae480bcf388fb10713b53da5a611d5602946484bd4638eda3085fdb16c057ee760afd1f3ec0a1bef650477d2ade471a5d13a6387909126076a0d8d4ad4d58954bef9624502f6d7b53181584964583b66a405d3d9b3653cd33147ce2ea4df9dccc6a4df9d12b71f3b34e0ef98d674e0e3d0fbc525e42de605e9b225bfe89d0ec16131264ec1553441dc46362de246c66321cf3e56b8de396a7dc529bf8732f6aadee49e1f67d3281617e21ff3f75b59b3609ab7daccc81efc52faed7e0d1acc253d0fd6051fc64847ede3e8f2ae6c23cca58499387762d290cd2cf4f5ed07fe738a7da9b64db12fde8f4f2fc45f4e5a07b7bc0e06da06973369e256921755c6b1c0e7a65d07dcb8cca75800eba22a16c77f07529b196b4d91e4a2dd9e886f57d5734cf4ef8df05871d4d68fb747b0ad931ce754ab6c443d02ddf9b6546ba63480b31e7231328eeb9ee3b542ed5ec0bec9bd1d72f483f3b8e2adfff1bca5d4ff3ea0b623e406baf85ce09cbd6f908b364e5ec6a8bdb0cc1daccb1a973f584331a93ec5b13689b54b4fad73d2f497f3a5410d96dac4791fd378e57603dcfa32c61bf2de0b1df244dfbf877a7eddd299a3f427a4fd2a66a89f6d64870a9f1be7bccdf763c5fb5eb86baccf4a5b9417b22e0cda8739f0eab931fa223057e55eda62be42008fa00ecf9c78da1abf817c974448bde110be0569b92dbf8d71ecb9c80bdb56cef9dfc6580fff758c25e7ef675e937fa01f91e322209b1472d713b4efc1bf2d911e43ac07a24d10a419cafab57f31570ec602e6cb2850715ad6d77ffa7bcce91e558bb54f51dd2bfe8ffadc3af96c5c8e9918114e01e716e906c63e709fda1bd25d7e9c634688fb4575105803bee81547bb113726f6a4b32a25ec89d4fe7455cd5593da9f5642ba886d672fb0d6d0bfe352e0fcf06bd4df358e181fb899c21e09f651925f62344a376e73b050bfd2b92b0db056c62171c0f90df4ff438b99a8df8535e5380d485f13e7c9644fefc0baffc65b378b86bfffd2d4b89a47bcbe9bcadf5ad7630961857e1e2336571c9f4f25c63a0cf50ba354eaf0c87950b5db07bbad6acec9f9445acd458a791ee1cbf521f315f38674a89785a97e37f17751409e8b0bb3a2e310bf31513923a81392867109fb05d69843c875bca2ddf97eaee6bab9f3d77397523751c6b9a133b89ff435bbff0ae4bc0d2117bbc763ed7f3976297dd881ee48a4bf3cec457ea22f1f315c949b9a906db1f9dcba2a8d01c8cb9e0bc045dad95efa34726f2a74d21c5a2b2d980d69f10989b9b4b3bac4fcd46f03f534d23cce9e87eb83699dbd9279b00f56bf610ea73610cb15caf5d756d3e83ec424b9b16f6e19d45bc75376d8b221d668f0adeda25e9c2ae761cff402dee47fb16b02fd892e6edf3307b41cfd1ab0d12bca2324c7abb45542c875c451633574845e825eb31d19238a43d9b371b3497332967b3c1f29ed79d039b4397c4737405c24c46dd58ae284c894630ff1f4ce259f6a59d90275717c8a1fa1267bef7d26aecbd878a5f4fa939ea7babbb7408d69caeb6cf8e3bf971ad874aae364a0c5893cbfc267e95f727bc9e53dfaf69c7fd3d0ae4f148f44b1cc61cbf39ecde67b2e2dcec66a7dcf8ea8d1d95c882f782df97cd95b3847bf5cce0b99df92b856c88b7a2bc2756fb8c212dc1969321a6f9f84017ed64bc2568f31b75597315ddb6f73c40fe5902fb5d6af9714af7ddcd46fc0e9ad79efddff437f5df384fea5c80fc7e7afcf913b8146cfc18debf7e7489a3f549f63f3106385525f211f64a4342e01fb03f3e2f2a67a3162f719f19aa81dde5c99465c35a146f13f4b43d22fd02ac43971b4631c34d841cf5873e7b1dda878c7efe21d19a7fb066a1b2347f26dea134e07389d438835641e1262ba1d6a2d628d29777cf4ddb8e20ef8e6bbc93e0b41fada76069877692f3669331dfe96d70bbdd4822f3e74b590b1057fc37b35c6bfde4bb7de7d8e9a14ed02f760c68b9d8b792bf149b57171c80e882b0a5733ac31e9de47a5914ec4d9007fe422f15acc746b562fee72ec62f71e72f78cb196eeefb7d34ded5d28f65a0396ed8bce694318a42f18b1b3d2d78e8cea4839818d6da146b7fb095abca0bb11b615704a37fe8fe7957623f7935004b78d83ef3a7dd0096bfeb2df2016d53a1588bffcee6bafbfdaed6e7c6af29562f039a5afb4348ee44fdeaa7a41ba27763f2e8d0efe1bb3a4b6804335b78b254ca8ad0aa7fe2cc9d6b6e113e2f603dc6f42961ea95ea86de01ef3c416033b6551bf0c9d73085e27575a13fdefdd5cefff9e9ba05d1ce8e8ff24fa9cf281c8f58ebac1ea7b4b5fcb57f1c3d928a1a7cbca10e32fe3f3d473f21d03dba0ad4f2ba547fd6b0473ada1b1b9133eafdcd15ad16f2bd2788175f02733b68a7720025d70c2f52117b8b80607c92dd6f94633752de1de088f8a399aba443e719e7a4a4f1efcd052479e83bcd87968d77c7d532f08f77a25feae8de37df8a4339b688873d5e5be1ed68ee993fd4c9d16735669b963c8919eb509e5c35c88f536dcd3219fe0eea95e94190df818833824d27a1f7d637ba887a16b097c977120e30399a3fc43f9ce9c4b5fc4c5b9e90471a32b0d61ca5369a13c2f1298df885dca072e4b137a61aa5df616d4c777b4d54ea92dc60cd6a5c9f6db69c825aed9e8fe5fcc056a385f4e458ddf32b5de30fe8da57f919646ee78dad057a01c54cebd138ec72b8d07db633c9db2a9df5af87d9d91ca73c9df657c6016f4cd5aeb46fbc9c6663036823f9ee302ff7d399b407e2c41ed6c7ed6006fe7b6c1cea5fd2b5cf5eb54e0fd7441d7eb620b88816e2b9c5722deb2c1f59601f76fd1e09d439d3005c8ff837859be6b92ffcd7e75be867f959854ec87e9f6b28d837e7f7ffead725e1e6d5c5a4d45b79e526f1a4593f7473b2110c324735b9a9cff9a6b318c593116b0cbda374be54b65b8a65ce123de324c020379163c7610800b97757179ddb7c201eded82f0fd49352ded664af8f9ce37013c41370f70fe26631bec5e8d983937f167b07f28fca8408d77d39a3213e70faf8d8a83460ce2922cb1df9e552fc74ee696fb58408e5d6545c90d7598d66a9c1961776a87709e3f8dc327d6df937c7603df2bb94cfd049e95a555cde71c7cf73834b3b998563b7847dfac6aa6311d7bc1969bb4713146d22bacc3cabd31ba9899fb5bae39b12b51cf9bcd7e7a6711bb67ea919173d1384e5903d840ecabf296da1bc600aea670f10e62a6c086bffb8ed2cc9fcbfe5d9bf964afa53d69f19d200f43b584ee5aaf4ce6af27f89d58e73fc8eb86308e4ab37e4d76bb2d5ba5bb3f13322f9c2747e767fcf7fa8a78edb4da1fd9cff86ff64679fb6a3fc13eb3ea937c1cd196dd35e4fada341253e3fa9af7e46bfc4b7ebe7a573aec87867c4ab671ce58ef3ebe822ed48ba6f20d900f622c168a2b30d7ba3140ac8cc4cc7436e938dd108f21d774a81db268b02f78c9a3ef63608de39b0f991b8893d1ad43ce251f888c31bbf1c86bef2da7182516e0972588876843a5374f3525cc733a656a797fcb350efc23996f1be4044827c5ab5a0be372d7586aa4f72175d8e6326f066b7ab9c25a47c4c13f89a7b266f0e37bd2b1816e5d3b1b257d65e39746be328bdde983de651bdce89b3de4a7b833f01f0847863659f5e0c8fcde5b184d8c475fbbf3ed644d3a8d5ebf8ec7d9f0c95f6ccbbbc2bdd88841068d37b7acb166183bf47cbd6f80b9a90ce76f2ea0bf52e8bf411b1fef097b28d571c0fec742f6c9cd282eaf887f4ef09bcf69fffc7d437b25fcd8251ff44ab187c07cc1e0377a277753fbd7026bdeb88fcc29afcf0c1d355fdc33d95d1e5d3a3fd9537358faff8d15f25a2fb85c6b334ecf2a6aecd9233e2ac728b8dc47ddbcf6463e7284466d3542bd9b0faa996c10df1cf2f597fcd476faf37eabea52cba28b49019369068717d2fc273b0ce7b5ccde2437a5230afdbfb74f3896ed9f65fef361ad2cb3418d8972e0c3fd3793d8cb89158adf34ef4fc15fd6f7c3b3e8c7ff32c611ce60bd2adf91dbd61ff81612b3e7619ce671ec69467c0cad89d6af5f14ee0d709e93f710b1ae99b6b8cafc02628031dffd50f7f15b0ffa5d8cf0e6531dd45cdcc14e5f92a581bc0bfc726235d64b908bacd8a1a611c77e46ed4deb9e077538bb75faeab7c48d703924538a5bba3109df12cc77146603fc36225c9436d6c0a4e607b3123ed2965027b704f605c6b1ecad11a0adf94235f3709554aeea3feff609e9cf2bad4b4fd8db4388c7b204d7b570ce02e68517f0a345b5e1dcc11a8ff95b0fa996d566b29f2b14d919c7ca898c4982b1f71df724b7986de5fd437e7bf2712f8d1ed7a5573a23c266ad1ff365fe6770e8b17231d884650175822ce9ecb308adbc7efb723e628b679323e6dfe7cf6636a7de348585ecfe06f9e551c5a12f33015f625fcc26f4ad4e558dd80de376c73d99113699b002e5c1721ff189e20ae3dbef37fece23bb017355e946baf3acf51cc0668da7febe7271cfbb767319fb3a5c893fda4f9e541ed50d0618d40b68b71a63a8bbeb984f9378dead379c0b21c67661ed5e373d2e2e030edddb5b82be5e190be2bf754bd903aa77b1d2f0ba07e4ae265ce7fb8ad7d82bbca01e54fbeb9ae166d39d27751b377683b1a363609cb6ac62cb475cd92538fc6e21be6eb430adc734bf59ec620d19f3edf15683bd9fb734deab147d87d8833d37d94e5773fc5b4abe3dd66e53850389cb1671c6e6d6f1931bdaa5e61abf0ef05c9a1baea57f30b672f705c770b2a23d1c62a970fd90a3d7d73a575ab955672775bfbe7eebcbf2d38634274df44566dd1a91f91f3b3014a7c3be7aa67ca7d05c3bc1f75edeb17fb8c781044bf41b63e322b179a1788178076b2ab9e39dd718f33e1b90ebe172dc33b203674eb52cca9bc21eb72a84ffe3ba6662f1154ba285584b61fc8d7a29019f48b842ccbbc72df5119e35d4834ea51d82b975250c2a375e6eb85f791b5a53baaca9b87c5ef9107bbf181bd069b543d2561c9cb7b22decbbaf8c9553ab6bacb93bcf1dcf84f9e7ae65cd45e21dd663e25888ee670373baa1af626ec2e5eb321ee7dc9d47708db760577eaafc9801bd3ad96cbbc65af5a9bbaef419e35a1df7b0af807fe8318df6b08bfb6dbdc7fe15eb53a12f75f025b6e89e696f589ff56eddffcb6379493e15f45f93ff2a3180522793f0d5547f490be480f94bfd79705e353c0ff568f1bba7e2cf4feb2aeeb57db5604fe3226d3fd8496d8df5b20a6b90972ee698cbfeacbd3efdebf166c6b1fe7a453c478898703777d08780dfc0f6b5c875c8b5f3caf1a48e686157aa161dc8b8daff0ce7ccf966df8ccb533825cdd0cede7a53a8a1cbda89cc5d4afc92ed5e09235a68805f094d6ea21e919573cfa890bb233233897989f8f6a2f0df744edbd9994ad63672a9f5f8777bbb8a551dfa711cb46e4e613fb601788cc739d5b411f92c88512d204610981be651f2eb1a128eccb6008f6d78e49f9d7ce70df751e9a7b080b335abb1be954c0ed83bb3cff73a8de96d437c1ba9d5422cc3d6b2e60ff66d8cb8293b77bc77e98b4b3bac3fc5911ac37305b91d2fafe118b0a3bfc98eb2f88eb57cb0d5671ff31a515adf012bd2f70e573bb215982748eb2bc658bdff98824e65e8386395074eca5b84b8f3cd1e7d10dd337c47ee977331efafc3098b8a35e2fe79b20f1823ffb3af79cbb5797ad6cee80ffae4a37845cc9063a3bc75bf4712f7867a4d6d78433cc89f82a32dd06bf8af56fffc6fc3c1ff5ee698a76ebf7249e46affcfc69c30c9c918f383ec4df29e70d72d9cc5c8d7aef0cca91781ffe9ea9c78751ae8c3a81cef867f6355e793c93ca76b169af2413e21d72a7bdf3fe99b32d4b9cdf9e284fb7ab884bfd94b6d41384db6711dc08da7eed477f1fd6237448eef8fc0ac42b063bac6495756f34c8a41baf33b1f2c4c6eaaa68bbf019fabe19d7dfe46315f2c7bf863f719f938a750f366ac94d859cc3592c639f2ae948ea7f980cf9a47f8dd5789ee7eb73b6fddfafb13706104fb5f34df94ee6c69e37d5b977268978de280f9eedb2789ac192611871aac307f5f43d47a28d223eecfd547778df80113e974f79698f24abe972eb1ff3fadf51faf335853386671bea3f1d18f05273e1aefa9eff969aeaab777af3fe19e332f0e471be7d6d8c71c6f0c718e2500632ce3d93cd11dc4c4dafff64ca007dad9c7e327e3f04ea1317e829a4295e7a65850af99f4cb66a36b84be6d6e663ef6149c82d7c916ea631723d84f483b97e68d9113de09d6d629d81f3fc11f94dac1b2bf6e25391dbab5188c30ef318fee13e2b752df3210fe68e5c83ed459597b6f3eed2b8af7c08d57f6d6a69c6201bd4ccbd2597c565cce0357ccea369e3eeaec16b38907beb2859c3aceb8c07e45616fcf502fab964b537cdf27efe711e8a967f760ffd6c6df9ff9b4927dc072ffc57b092b328f53b8dec40a4578eadea5efdb60d2b72ff6f45cdbfffeb98c728c7aebdd589d7f1aabaca5bee4eebb8c3fc1f73db7c1ab1cfb6e0df2aaad18f50476d7adb867abb1c23a64ce5ffebafe62587fcf15622c4a6731ce304f191a936334455d9fb975c47cf3bc309a4577cfbc66d0b7984c6c3ecfc658d7ca2b137399da45dd1bafd504fc08fd7be208cf99329c0f980b68c5b4dc37a861537d76e703f719bc579c6ca71bb94ebbef125c3b3b465ae31cfa0ada12fc4ebb7250bf3b6ece9807e7ab19f09384da59ceb9af635e195b17d64b760f760eadddc17c6166ee708ca79aa96f02362beaec9d9a2fc1bd7baebe5788c91a0093382ec94bf6dfcf17b3790b81d77056d68b9678dd86cfbe49b62ef63edd829d68a1d6731e0fe70beb6ca5ea5962b2679a99f85c66f8df3f576b75cf75c0e7d27f7a2e7fd68d69037c0bbb8a9eebf6f05cdd37edfbbc62c919b26bd01ff3bbb5f2dfdaa27bf79d8a6edf3c7853d6aabd6ff0ec5ef7ec37ecf71f97500f5aaef8c01ed9d28ffc1cf2c6b07af149732c7782ff7a8eb1197da76e8ed53fcc315feb9ebdc45ae092e6d87d32b449b7b28f6fd380b305e4319bc31a73e9c521c35ef0cb65057d52561c3b57ccedce73137844c2fd78cad290fcddd31a352672f388e7eb7779af2fef51807f3a276c2f4f2dc217aab833517c8fc20af90be6b6dd27b06582634c4afd0888e10e71fd4f8c1c3174508750bde29f1560be1c3eab5e298f55f2f3e058817992fa443db349f4eb14a97857f5bfba4b8d38972edffd1db37a03ee69c91122fd22e853bd589108efb09f86962fb13ef299af3ef15d427d72e1237651cc2e540bf12ad322aed851091812379e5588ed9e9c19f2c408dbc2f5e27a3ee140659c5e59a1363e31ea4332b621f4d686664ef98574fb469835c43d2652c70b7d409f9f899bf020fb5b65ac2666836fe2624e6159eeb026f61f8e4da887b782b0f3a975235c21c424dba37aeee46dc0bb555921e7e00bed27143be818434658cf3904876d8beff507eb21f6a66617dfc17d2ea95ee1db4f3eaa1a629ff5feaafac5ca98de05b838710f74827471231fca775f287f9fc91a8a90985f57d8db31d668211f9988236253ad38fd7d8b7bdfa99b839e3fbde037bbc0b348ac9736c26fcafc98e64d752a01db312bea855e91cf89b9b440b74e1b3c3f4ebd5bf4fa6d5fba400da91a112f4479709fffbb6f86f8bd6882b9e1f369fd4a5c18fd3a0d8cea1dc73f7beef64b595f0fafcf102f3941fc9b6ccc9f92eae59053b223dbc27e9090ded78ad2ea4af36333b7d056dc0e14db414e44f28e5c4baad9c72eee0d921bb19bdb41de5664c3de38e424796520df256f4639c4c1d0ff247166d5e74f732297fcb7329e72c3d781fdd2b61f4b8dbe4186bc0a426246a3d9e2faac918dfd8d7da515f579477eec2156b39a6ee60c9fe917f2abb0a7c0d0a89eef6506d8239e8c0df0c5abbab0bdbfad5b0635b6d0ead7e8f99a50dd4dea735f6f504317bc32f419d9be6e3eac63390f64eeec71eeba1edb851ee154727b4bfbe765539f315f129ad82f80e74a9eb7f9e3b95ff076b1203f7259dae26badcbceece610aafd698bfec6af2bf518af5b17f924d828d8df46ead874eb609efade1fcb46b027332338f46b66f8ad65efb89eddd598b6d69ab0070977e754bf54eb7fa63f4577d57f1f43bdf4eb384cde601cc65e3527be8cc9a1c4def00d5fe80c6aba56b23f636fa5d002cc1b0b3e82fda286de32d1721df1b4515f87fac967752f3ffbacfe3547ed99d279e468d8ec80cb6fb313c7e0f5322d67c037e877ffde8f29bf3a5e92bd362546be8f2125f606e27c86317c9c8c74180f96609e3e6546837bebd9f0299e4df44b08f645da6bd68a6350676f39e0629c95e341ad873b239634d364b73dcb3a7a5cea39f7dc5c8ded2fc2eb5951ca3e70cdfed9cc090739fcbd52bffbe94fbf8bfefcc34fbf37ddef5e10afbb67e8e6971d70f146b5854d8cdc885cbf32cc5389037bebf7386605da16ebeab5a6f26e316fc1ff61118eafe7efe85a752b8f93fd0c8499f8dd92bdf0e53d65ae4f7daf3e9ff7d61db70cb808808f5ddac25341319e46361131f4d8c35f38de8ceaac746c94ba844d9de3debc245f32443d8d4dec22afec645ad80cbe794bbcb9c37970395535e8258686ea11fef0111355685d4c0cfda46beaed32b606e4c49d31f0ac5eacd224dec48b453934ea77e0a678034e0a76a5fd383774b9b785b57baf282e4ede14eea74ac6a8d1133ea9fd29ae4db54f1863077450653e7b16c419f89f426825270c3ebbd11ac1f71690f739dac5a1f3df75c8311186c0387e0454e398e938168857e6f47d542d57e2aa56d4cfc8f54b853d6da171237eed3f39614a87bf9bde27c628ac4c682e5467f57d1147911beab7fbe0373710e23dbc3f60b1cc6e0c23cd0d64cdabdbfbb903e342793ad37b8aa8fe80dcd7511b2e9783be9628b9a8bc546620df243d57773c7f19d6febc3241bb24aa037debfeddc44768f7df6b98e72934e459498eef3fd8c8fef7d8d7487b3b9c873ff85afea8bfd6f6a76bf5bfc78e063d4d8e1e424c1d00865e443ee50378d33e2bfbe2ea180785c55e473fac221c0ead498feaca9223d0f16f8cc62a6938ae71f96d8033777cc13ecb39f6a52ea37e1d235fc0c412e9d6f66db6201e452eb1aa0bb3a4fe17e3087dabc691724b074658c19f701b093c13724404ab18314da0036a67e8676cdc17caaf220e8cad092fb33910feea32269ed16476e484d74bd097a87489f9cad680d7f03609cdbfed02f205ae89effc67b377d0bfa23edcc9bb204e35a33469acd8dc9a23b7738b7dc0f6faf5f2a17e3fa8dfcd1cea0c767468b6b8df8f22e0fb3e0407eb137daaa81080a929b97744bcfb9f67638cdfb9344a47d64aedaa0ecc12b945c236bc86843536a1d73fd08e0fefc32147f621e83ec644e12cf306be43fceddd242fa2c3526bfee5fe9688ab538c3e4739e3e8fb54ef588786fa5cd24cfd38c47ce3163944dc7bee405e42cc256778f73d97d5fc8758a4dd7e420d53d4f9eca8f2332b47034c13f49a5c835d75c3faf8328f05f41489973ba31e67c8df1f839d5ab723ca5d97fb2de0174478cb21076247e68f6b9ad6bf9bcd86f6618bdc22e0c796ce62bc827e002b322e2dd8b666fddc8d77cfe31343bfe3e406f5025fc778c063713387f8c6d1969afcbe7e90283ff6479f58ec9b6348dae686ca8d1e37604fecdc599c94cf6b6cdfa32ffe73941ca7cf26f28b499be18c82a6b30d8e1ed497f71c310da15975bef931a85d376ec0cf88e57856fe6676a4fcc6b8020c5c371fc8b77dc37e34b7727e21c695410f40ea4d1587b4d486035fd807de6697836df808f62fd790e673e783cade9df0eae31e1ca7ec8676d10c762e716e8c8a7a8d5828df24fd77acfb8c604f75da60573dd1b519f1d519dbe9e695389a356d45be6b9be177ac9ea1a6633dc9ef04fd06d70af165a1c9d45895b597d2d846dc65c974827c73a18576ec0ffdb7986f9d1fd6da95f8c80636a5ede637f0067a67c5b134b0058375abf5d7c2fd868b6b70bf60fce3c6c3efb7714047826b6807db2d3eaf4bf16ae0130777d24c99bea0b18970dffe2c49abde389baac7b0217f09794a38ebfc85877e90e17ec0f6b8d7c37ee0d27ec00e68e3f8e41971ce88df75f1df1efdfb6303df83f872c82f3994848b064c5b047ea3e21d792f9d05e99520071f5b95f346c690bc81de4861ab1c83b79a22b78270917bca1f133744144dda80fa3ee8387ed6311f227505e8f7a5c96cc2d242fe15e2800d729f738efc986d338ae89aca27aaaf745cd4ba4f88435faa71e4b599035641489cc50003bc49dd67e4af9036b08b2386e3934bbcc3034618e3e9f308ed8c97d855cfe528ed3f7b0b88031470934df93a81fe58b1bd61aec40d31cf54cd26dff7006302fd19722c406741f1289ad613e5e3caf4b81cd4347bbbbabf19ff603b5d8cdf05f8c2e313f52764e89f76f10ee7ae5739de99293ffa42eff967257ba7e41a1b1790937585adf84e3b7f2aeec6b7d865ee17bb4c392ac08dc5d4335a7e121eaeff9d9d83434d3c0e835c06e6ac202ebde1b5e64b63327df85d73e7a5b330f1f9acc874541e13beb978a75a35aec7f84b6ffb56e23dccece95ff29f39e2a49bf57ed2ed490fb5ff8d5d395f6affe686ff1dd71be89999734e3601fc3ef04f05acd3ecbdc2ba0527be4be2d8202e608c8781374bbc51ee33df79d8ff87efd10a89e5126083a2a85d1367d69ffcd028fc7f0e7de576b69f8c89630db8cb16b71cb0fa56925a4f5447d82447c0bc9bd6b43489974ef6e0cc39ce8335c485dd3e8dcfe2636f47453c30d755cf41634bfe5afcbe958ae3c373487d14b3e333f4078757d2ca8992cbea612f907923892d92f32fd746b87f64ddfe21794f9849fb4765e65c6af8db3e67c85f0e3c7561e28d947f30581725e9c7e8d968a5f011411ba879d7c5c85bb46f8d9e635d708d5c0f59f272573d78adc7948ec2ce55fe4b29ebccd4532cfb265c1c17a3a41a4b9ad15ac46fd174e332da602d206e5de201186dc0e6dbc9fca7b556df546e39ad46aaa77f8eb6d5f04e848b4fb09692cf2ea4b3406bd3ad9c12ef2194affdf37a6638f642c35cd96bd65a886142bc96037c1fd16cac45a42b62339b7297b1e60a9c53ab28f5698ff9033eb95adf76e12cae8c6a140fdfa8b102fd78edb1d82a2fda16347e66a8abe3116353cea89f6490679eb956a8ff5679e63cb9b888b3a7d884b0339ac2b919a46d32ac2f369d0dda4adf7d5ecd250f480cba1571dd989dbf2731b6877faa81a8de91ebdff2be12cbf197bcefba5bbbb6bb96f81b111e37f579c0abecb6c1c152f9de8dd467e96c9ec0dcdb45fba9560a395ad9cf09bd801cf5f392eb27f1c195927fbd220d7a5bf1b5c5122b02f9b31deab81819e2494b6943e17e17239e027e2cd7bca7aa469e2a53cce43e709f4c9f5b6bf1bfe5e72ae4576fac20b5a6a5d280f14de453b4d6af9093a37c70e5506e20a4fc675c753661c6acc0083f546ee97fc8bfc586c4abf8827229a6e53ce4523477111f642ee50fc4e0de1bf2a3f032d9824d48dde98f7129fa24d04fd658e17d32fdff3717a377f6dedeb88a6728edf660989f97b76e5cffe71a80e659516a392c567888cf6efe2067addc7bf264321bf24347b6f263c066695b55bb837710fe26e93549a3cee783bc190b44e60651f7df665d25fa007b02bcc205ff8e1761fbc6258eca2e46647c6196a42f08bc1ccf84492d9dbfe79f027dfda9f6eca43992cf96ef1be0ef953c76124f70449d022b6cbd6eff91fba36fa04e1d2fefdd1e28711ead3853ed13dee148b6fdbca1bc732a354de57c67d1a4c7be1c40f7274c6e76bedfaabe5e59874bdf88c7fa4e75d9b2f5082b77e2c8f558e93df628b71b19df872d7be461b4b75d2c2de32136cf104f2eae02f8f277cc24ceab1a316d175aff1eea823d85b309f5a686eca0ae711753699b1b960eaec1079a75bc963643b872bea75d1cd2c576d1c1c5789c34a02c87f6874873e749edff30d7274641bcc7c6c554e31243af7e987a53ea49454d53b477e187c203998a97f5d3d7644ce896f5e2ea13df23cca715fa002dc693ff52636757d2358c7fcc25b14fac3fdf839d471cefcb5cf6bb638e8bb4cef4ec897898917b7bc5660dad3f8d39c443ce35ead5ce0cb245e8b3c8fdcba358420b5e2767ec375dfa366169ca9bbc963c56d6d1069812d94f7447ffc7ae1cefadc03ef2a85d68649ffc365ce0b1a782d61d604ca0873cc15abb194e57c90d7db5cb58bd83f9a6de81ed6feeb7babcd9e0b51a9c7b99c58c09f96f265378811743e9e4ce90939d9fc739d515e3f08818e23d237d552e6efdf90ba3d7fc56e77ff6e767747ec4f0f75084e321d6500c7a937df23185dbcf57537c406e53f1d9c5d56c4cf8b9b63b8e341b8671fa734b3e730db94aaaf7813ff34cb5c1dcc698453b1e57d4739f5cc7983f7f2e0f1ed5515ab4d576343f12fe685e99802788f4f04898656e1c3fa9ff224f260bc4d36bbe56133740eb134ebf0da7d4eb48313537b313e43ed939300561e26395734bdd29d3e8d8f004b5396150edb4903d2195b26362b61de19ec8f244f7f079de0b5e0f3555cfc1fe9290fd93fad3b3c9389a2247bce4f30a5133107b361d9f3867bbb1aac3e8cbb1d0074ddc535ab7d6517b4c74732a9a2297b9f4c3c225689200ef5e5683066ba26a54ec423c3910c334d342ea9f0e9ff73ab08d522f57abf8dbc33dcb5d357d78873937914f6f2b7d94243b577c8d9c9f6e8b1c1771bed73df27981ebd13b09a55b23edf0e786bf907fdbddab0eee0feff765ecf8d763db478d2bcf263cb2e88eaf5f1ec69a7c7b78e675f77d25d6dba75e0b43c73daf44dc083b6f6ae507495c62616f559f71770f6e877aa4b407a46f7cefe6d9f0be555c4dd577823e9d53e9e0da32462ddaf03f454cf6f0f286fc16765e7b0799eb93c75e4fc4019fdfb19f929ff542933a19928b087cf6ec13d72ae2c4fc9b8fbde1ea98441b878447c4beef90df2e3ed4e09de890510cf967a3f4917f219fe7117b50d9bc4a2be92f8586ec15eed6d26e356bc0be8a7a9ca32d5fb75baa2364ab847e97b51d3b7788e3117b003187b1511cd6934b44dcc533ddfb72ecb5aa555f5d17ff3d05ad855c7dbaa572e39aeb526f6494bee8804b60af552b16b41730f49343f318e1fc3c96847b037c5b84fe16f28f92467e83bc35c37f33e26971ab9adda5dd18f4678ad832c8def9ae3cce2b6bf263fa6721be6ce2c9f5edee79273286dad816f6167b7aa5d572fd551a33baff97798e19713f385ad07fcf65d136c0a360dcdc6a8fbaa042606cc0ea82786a13fd1df3a77175201d25b08f95b3d07dd2ca4faa43acb86627a405d2adf737f22ff05a12cf57ec8fc807e39e2ad88b2c6106a79eaf167870249708e4850f19e690fa5e3657f6fce7c4c98fd7125c6a43c8b17a363ddc1b7dca03a0df787952dadaadf531d0e1cc40bf05c7557847c442dadd77e8ece53a39520e61ed13ffba06f170c8213f1f09cbc8b5bff73d907da9ea858c11067ac96e6287430e6697cfc3138c9be4f792b8e5c2a85cc52f2ee77389f81d372d7799ecad0ed3e3d47739f1337471d29acd854f1c28c8798abdb3d59dd5d0b7b671bc9baaafc4e24a3c4d6c6ed9c4a120e7b4b3d018573550991f8dc91f967849efdd77547f4fb7d692ca3c7a645fe5bb3a418f33efc62f0da7455f576501671c6b27a4fd764f22c4bfedb6d3bea608585ee25f2b6241bc7df740eb7553a40fa678a05d063d5772ee7c328efc57e6d1865e11f710ec91ebea877be47fb907c6ff3fdde334bc47d86bfd61ec85b109d7dfd59a491d9df4937dee8f55bf546c5d1ecf990ccee157d2faae7688ef158ee406c9648e203c171cf6a72c6dfee13ae5957aa136b6bace5df184b5c229667aaf6579a8fee15af5157b7eedaaf66f39697fa5c2ae0e16e0e1d3e3748398031e5d0cd8ab1d23d83777ca2df66bdd39559017b30b479ca9f610a7c751a4b0bf1e71d919458d3ac771f5411cc46c3f7e1ee64e1867cedff20e65ac74eb0d1f31b83c0e3fa8077d33df52cf80aa19e3efde9738671412f7e46cfcfc2df70bf6d7081385d59f17297134fe6ff7deccb61efa14d75e7bf9ebef0aebe56e6a31ceb49aec86ddadebcdece291dd9098c2797322dd7acc795f7cd26c439e87d0b4a67e7421dcbe5972d0b10ff96da47294a6d45f416d9e507d5be6c8b9daf9fca3414fcf28c61e6fe81f046c10c48982b8cec32aa9186af2e9b946bf33c4c9b966a6497cc72eb1fbba77d10a17b4df6e4f15c561a6df228646726f4609d6d552c41d2497e966eefa0f7e512ca81e1d13c7686e668ef48f929b539854eba9c639f9bda92bf9610b0739b353778af33daee6c0c312b60d705ceef5a9e48d8477b99635f5ce6ff7781ce51bda15f63c8b74abf41f56f3a3437155ae519e787b418ea28f80389e4d06bd04712879a403a83b484eaaaadf6fcdbc06fdebd8dcbe13df28ec4d55cf5b9268c8f1d1ebb8e0fb65780e235e10e2e30f077c6161729cb2e4a27af218e79dedb2e3f951a73aca2a463d2bb9d6558fbf29f7c4646c83de98730d0ebf09a721cab6c235edda882b73cb5d46f7b9e58eac4991d6dd3b8d612e60ad8a3430544f62eaa18e9b782d52ca57b9f7a2d606fa1cec2338b81fb47f6cf63759c70e35c9056525fbe6867871b78819fac7cd87c4a14a2dba17cae5b0ac85dc5b601cedfc01b388fe4052611f7db3ee7f2f4fa55392665aa37a5c8518e50ee0c756dc1b13ff5e68ba6fb80fee707ca6e59e6c4dd56e1cd415bf4f50d343441b7aeec77b499fa04c899728bb3255d3ab4fa47f08f9cced74e55ce9bcc1dfc7d3a5aa17fe706d535dfbaeae6db291ea9f702b2b146b1c9b867c9a6d7ef0beac5f8b7447e6458c7c45823df9e85b0f7cd8b7d0fead290e443b5b60ce5ee15a7307f2345dccab70a2ade29cbd523e2c49b65a0c396a2dd84bbe6d1bf45eaec4c79eca98663f52f32d37aa05d42cd982992ed551efa0390e3893505846a97ab701f71508b7cd3519a7db6b9503aea0d6a1c97cbaf4b558eb3ac3e363cdf536143792a67f67331df1033ffc44f9489b99ce7ee687cf08c3395ee1f971ab72956139272dc6f1d4df79eedf9eb34a313f662cae1be86950f15584be29e8aa346fc1e14d57b55d73abfaccba6fc46d41dcf361a6cbbdcf4ba6528b48fad4a82d6145e6cb4971911d386970fe2952cfa7dabbc496eedc5318a93e8d54eaa1f69aa2aeb0bd53a8b08c9515e8bf3177fc76faa1e7f76303352eb7aabdcf67ada4bd3905fd6569ef3f0ae77b2d234fbb390c1a4fe5f4321ff0a359599add204f33b942be73ec551ae50f6b7c4f166ca4c69b1cab7bc5af70ef34cc69fc7affdff598c45603d6bcbf96af2196614edabd58a39a2787cac13a67bbe19cae95820e0dcc0ffefa98a30888d737babc93fd2f8cade42388601c9f83d47aa36f9d756b456ac8b2453eab281fad75fbaff457b49756d5811eb02bdd77c9b48d436b48bb87d3c77195b572a961ed5d73077189d3cb3d8c1eb4712ddf59dc2ac833777e3c7e6bebf81d27ceee9dfd853a60a385a4b1cbe17ce0610cb4bce65ffbcef5ee6fd477fe9f5d5f27ddf9862547992f0fa3895db6dbe7812e703ad0fffe33f0e7863d7d27d434efe6671b2a4e8e4af29fc35ebc3d7de73e6046a1adb1f67769218726de02e3d60677d2d8ac249f12bc8fec7dfc7a8d9639329671ab7a21b15bb83662e0560b5aa811963ae5f4f3d9e51bc72137176d486b46f6a9c8de854f59df93b1aef726eda0c421ff1ac5d3af3d58bf35b84f85bcdbff7e9fd20c17b01edc8f12309e5dec3db88fd622a711708b617f646c8cdaf07b7d15f2089ae4d163d23e99d587f2d1a1577454403faaaced871ae8a34b6d0bb299b286de600dbd56da0f6aed6937c50712991e71215e7cac27f0c31bf5c60a7f473d3c65ebd772cf39057be0dbcc1d6f59b5d887f81fe6088b3afc5b8e909ef33f58eb5ba3225cbb713c920613e235f679a2fc73f2332dd04862e7e0d0fb9b95c406c95ae562335398e8dea74fc64f84abc07a8a5e21ae90e33ec9938b81f604345253cb296c0bfcbaa482fc61ec4e33d447191c1ff7c75d906bb73ae0b361bc21d7c6d97700535ed5a22d942f70394453c82944b3db81eca4f4a161de8ff29ab8fcab77a871b2f760f732a69874b87f76df3d9c87a3107a9c38eb7c688c15e5de8a3e3f6bc9b73e7fe6b5f41dff8829f00b3e1b47c2331c32ed05f20bda76a0831c1e23c096d891ad7a38e79ba4fb0e6edfd3319d7c12df0d70777afd7b7ff107032d04dbded9ec79f84639b687fdd8b820b6fadc26dff765e9170ac0089cfc1e23d07da3dd66d7f814d750bf4a5193969ce46d5d4aec662bf0dd2f77f1fac5f7d43de21eb562c58ba2df43b0b72c231e2c9bf4b01ae2a7b4c08f24cea0ccca14dea9bc75e3bfe6ae1b98a455558f0a8753aece469b2fbf5bd652ee036c5482582ed4acf80c76ee7b8f6584f83242dde1c8210e31598f74c13795bd8252d32354dce66201da4f3ff993954e1a80a5c4bcfde44f7ae44f7e56c8991eebe857265b1df2bb328603ae5e9338b72f1f95c24b1d11d7ebee25464a239e747c0ec4cb14aa7feca773c535d86ddfd08631e5af731ff6eb58bc0367aaaf07877a44dae39bddd6279e4bc97b809a15abd996ead4e70af4d3ddf8f5423124f30d9d0deb6bc2dedea9f68e36cd2f5b6fde63ab1b2be2c7fb06f9a5c283dbe303e60df148dd515fd65e1fd4776395cd963d6647c6686e22b56264ce52f335e2639f1ce3e92d0c526fba3e1cdf69dc9676e804b13515b34a5331d66ce29216df06740f5cb417c891d168b9a37835dc01f7e6d23f54f80db54f15672793358da3d4bb269dbe3834499b9ddec7372bb53e0b43c73affc4a43e4a11d706f04fb0f7e0f54cb15788e78bcdec829cb4e1349fe9d42776e8b9231be4926e6ac4865d196929c78d375c77b266b1af47a45fbb34b6abe1ef19684b0fb94a2facd726907919b2b9bc5ba3b6a0f7c5fb905650ad55845d4db61f94af7fe42a95dc8f503fe96db6a1b88d63796da919a6fa6d453956988c58e23bc0c7316e2ef0056ea7d58cde593fac3056e38377ce776467445b80dfb5f409ab1e9defb8a64ec17e642afbbf0ba1ae6a1ea7be4d1c321723075c3dd58ac446e2412bec179f601e1bc68fb73e7d5b6f956c5dd2d6ddd42f0fbc7f556ab99863a01a9d8efef16a13630d31a9a695d4c194fb683bf01fe91cadacf939e1aec70fecd2ebf26627dc3790f35be878aed4ca927b11d9c3747d0aa750d3f70fee62b8fe37b5a7551a276c91087893e7f789e251a8f617f6170ee737e9b7c66c869a37b7007a6aed92f269b4171b8d0d383a4efe008c9ba35bbe939d83d77367d7ba3999e5bb6aa170a9f8de1b6761224790979b88c3d246a395c2c0d563ea472ee696ea192f1de9ffce51133d1ffca64bbe75190f790661f6a35468c82518f77d4f95ec5503de456620ffbd159ab2f60918d043f8fce5ba7371c80803ed95b20740b7022dd3fa7b31ed31d72f7ba8c74c53f917ea851ad4022e39dea7ad1ce28c9578260f3547bff77428bc137b0f676795ab2a25260bece5976762016fd6d55cbd535b01d6cd8e77bf09b33df763c2755f34d2d38e5266c0585fea07dd90d4259ea558eebddca7980b62953e76bc113643f13f03cebe0d5e01b751f105e05580c34bc62312f31b4d9e73dba3feb8077f204e4aea2bf8e327ca1ff8a23d423d8fae57da21eda19f15f612c7c60bf29e623fbc58b7057eab2815a049a38dc7beea5d7fbb2397fcbc6a9c87e32283f87b6ab251f3cdec38031fb309a0f7ec37f0cfa4a541dc34f2ef8e78427d3f2f99d763d277f35bb6c03a718faf6eb32e36022c4f4bdc24a4a3feeba4fc0aec7953dcf3ddfe2fb973c9069d259f0372fb139fa4e288f84f78de4be382b199abe5d4839d32cc6989756636f6d77bf1d63ba3cffb1eec2bc2940fded5bf17e08f5b1cfa559ffeedb8d8b44ceaef5fcd294fd8b47e5d4a5bb3e2de88d5dfb90d4b891f1332df9c1913b56ff84e8d75c23ed6e96b0bae2e394abbf5a2f0a6bd0f18b752330dfd4b7a96f2e66b888550787a5553ff29466e72e01aae83e84c3a18cbc2d84e89df7e106faabe998dcc3f51df9ad4d4ba406dd97b521c8866d3c54ddddf6da6797775bc7133b1c7e2cf573b197531d5fe622a5d52cc838b58f43da3d4a76edca61bea2f311b8f7ad3fb3ef20c7b47652c4ddc7032378e185ead7f56867c8dec29d8dfd4dc2c247e5f078ec143a6e2c04ac681dddf7d33d88ffbe30f15c605da6dd3e33c0f8ffd37a0295e505d8f5fdaee9994165642e35d5ebbe783da7733ad665457399b8586ebd078d1038a13dc7218b70bf96cbbec937ab73a1f9aee01fde7723d1d72aaaf1b633b278c8a71214ed5cf607f7c571884e4085a1add9a326e14d3287eed827b46ae34f3c43b7246dbb9c3466a6ef12be48d925b7f5de3c8a8ee52c0faf1d6fb4a612a7de33825bea3bc264ce58b86df6c14bc824fca766c8edcec47ec3710a89722a8d70ef1bb02edab40ae6e4b908e8510073a878e5de15a8a63f7f8c56f3ae2fef814cd1be2b3bb94544b8925f778b7a77df41a495b9f7afa20772fb1ce03dec05bdbd938e40470032e12bf8ba5fb7ab82b66e7ce8f0dfbdacbe2b3b37bb1d2e811ab3561043bbb9f6477e45fb5d6c9087159e2b58c3d36c03bba99dd3dcbd5e88e43fcb0cb34ef249f47da1c861c0722285b0f7d3b3857c873a97edd3d53e80e380224574950fbc041953453d642be2d4c8e537fd7b85f785daf0cfdfb38056dcda0756d8553d2dcb9b0173aee4f7f56315e4bfc3ead10df1447bf106f285652c3e981e7c33356c45f9332ec7d64e7c15ee6055c0ffc4335a33a0bd7903f1efd64a517407e7274a19a3070aa19c76925fdf487f3358aa32263fc11be3edeb7482867529fb0c738a41e92626e499c7c687ab6ea71e1c0575f70ef6d051a56b6cfbd27ea61db504d2a0ecd1eeb063c9134479358f667ce25979e51921ec825d8b1430cf94a51e9aa7736956bbfdb2f93661aa5be2eed4b729c06d42321985650addf449ca241b9546e14c84b210ed989f0815582fb3b9fc858aa7b8f44f51c646fa1c25a601ed0c8de89a38a27b5e254cc7715ed9d5a89b82e8ac92aa3992afe62d0a9c53d55485cc15a735d7e58502f64c86cacabeb8b11f9edc2f43e09cf53269367d297d9c4181b083ea6de561ebf8cd056a42bd2b110eeb1fb4e840f977336769d6a47b9e38bbe81f9d5c5164aeb99c75e3706b29fc537b633c246e5ce1afa74308e0ef9cff879c00c1e15bf51d86e29cf32dfd85b18336dac7ad042a351dc579b1de80d4582b4f59b317e8fcfe01050fe3d2cbaf1e8c6b5efaf0b8bfd847a052edd9c90dcdd4a4f8eb822f5abc272d03584b48d73e42a55da66cf2d8e730298407ec8481ffd6bdea1a5fa2a5c53ea4ee89bba469d2cf13cc45e318df08955427e64f6faf57c7d445a3c45bd1891af1ef36f71aaaa8d31ee293d6d61661ff183ef58c95e437f86fd2dc231fbf850f64781de6c6c019781dc03655ee783f6e9f8fe4be190d4d8995b35fe4cf5ce9423ac6bbae55c6161e53749a04708b9a7e4fded10f3c63caeded0ef626cbf9d430f6d80da65d8c7c0491378a2f0becf66e5429e249c16a4af1b57aa1790f22802788cb8d2ae23ec08f5d1c6ce0939179e94e693d2fe6657cae5f806f64b18b7e9b349799dfae6937fd8feee8e4d899b2c68d974134d6c857971c8efd902960b6bd6226d30ce61d7af714e116f5d3ab6b3754293350677a97906e6d543e2755a9ac253faf4b5ec199c27f3ede82ffada12bb2de7ccfdd7983027058c955dd5fef599c6408dcf857ae8c71bd2f0449d7dc29e607fbb4deb87835691a9f623f34dc37735301ff25ab41653583fa8f7db62f68b74a7ff94120fae3416e7aa4748f51e35e3efc756a47b79eefcd3efbf97f7afeb2430b29669d8539a06948f835cbcbe7daf904737268c956edd38e964ba32aed825f682623b5625db397e0fd095a27e3cc4be73aa4da43fd9fbdb3478e4c4551a47717436e81e9b18b1e0fc97bea19c82e946bd2f03df8bf29871ecdcc2a13e91fea2097ccf3e2f5f8f73e887b5d7bb05c5ef296bd5fef154a83c9e77cb8967a175c6b1d264bf5871ea3d6ab3c66bbad60efbbf0cca577ed57cf45b8a43b4cf0de60a796c7dd17c64a4dd31227c636c1eef11e5c2114b1d26de27dd479821e16e97e5bc91b6acb38f4cd6b5e47a360bd288327e8d80abe6d26bc1cd696e378aeb7d9536886784e7e9df37a0dcc91fa6f6dec9d3067c2857d8bfa937e0cbbed29c885b2032b64a7b6b65132f28f61d511d20e537da1fcb1df5e65dcec875e422a6965731dc27e6c70be1b979327aec4f30167ace51ebdff4809b48ff6d50cd9deda07781bb56ff8cf7c91d9ff10f3b90f6bcacabd919f0ada6e1c1213ee2067b7cd5bbc03bfca67c357b1c0b0d7a4660dd75eb588ec5b3292037687a7611633e3f111fdd778eb8eb650787ae87fd73ee38d85f0947bd2ce2adf4993972df73e7513f98c715f2c3ba6175085dd27d29e290347f3f18e92b269a16e23ecae2edf3836d4fca3b6aff985f6cfb7c65bbd893dd18d49b12b58d11d23e85f9e730aea6abb9eb291e0beedac97e748affbe6edd6897857fc1b15d29cf59ee6f4bf4518febfbb0eea8b4c374aa3bf2647c22fc6e39476db22ef6a09aa370dfaa1a7996a20b8e1dbb0658e71566d86b66f117f483f423ae7b41b5c57c06facea1897c1bbc36c8bec471f586df3f5ecdb6d0cb6278e467bc3f135f60170bc7cc8dee98f3ef6b97cbaa85ef3eb08d6fc43f26c8f711ae8abf8ada7b22dbc9939a7c8138977a52ba1c03ca0ff154d57de28dacfbe8b29f9acdfbfd4dbe0be07ef07b02d77a552f46a5b2a3a5da7be8792b4dd4c0cfea669b1de1552fb715f60143ced3d703f2a992b7536f8ba1f61f69ee1ff28b7dd27f11cdd8471e34e42a30540e61ee2dd41ceac6753f217e5ce05e15d91fc2ac40dcb96851cfaa8f5b8d8a6ab12e935c33c0578c79c314b9b59e8358e2b9a11e3e17f663ae967d0c784ee41aca4ceadbe226d3542e19b5d12adeff2edebb58bdc72bbb73b07363c22f9c0a98e351681c3fd10f75fdb8927e97e0b7b6c07e0fc97304f59873ae340274cc1f098de220e4ff9af9c645697033ac0988b63a46107393f6e6c18775f3ad2616b62f37c44a65d59ef82ccfe3aaa6fe28d1cd6b26b53c76b581da75619ee8e05fa2ce9cc44369aeb5c658b7e00b8847f8625c0246da8aeed77b207538d845690cc4b5aef8336c6f2675f3e43d2eabe7b691b5fd90f004d0fb84bda1e24cfac9e52b71bc394617b3aebb98fcf5a1167e2eeb9f759fcb83aa95f43e40227dd5ef3e80d6bc2327af13a5bf476a2ea51ee4eab4ecadfb5d69cc508fba799c562deaa9633d0eece40de34516511db54c556dee8ec7d9c9be224dfc1d332dc5e71e918f3a435dc6c4013e53698ba58f6986313c7b510baa7f1f712e5a15eccfeec6417f237595e6cd0af7aec018233f4b6d901d28b58549ff1fc50dcd0f5d611d5f915f296553d6921d817d23eefcff5afa143ec54a8c8e17d548d9f734431fde5d6e24e7802ee3c132269ddc5aaf888726468e1e633bddc4e19cec05e4669afde0df6e3ccfdaf0671fc0c43859ace26641b5ee15f49e526d4c69915609ae3b515d738d700f19f492a4e477343aad616e6e013b251a137d94787338ce807b95df1417575c5ee91e997103ff39660e710f210eff53d576d20cfb52dc7101b1af4b796501fed42a4f303ee46f0f1cf2c5dc53fd7525e6ba43e37627fdc54af54c59b487ce7dd4830e13a8230166d2e55423f0911741cc317e91fef9e0d9638fae15138e2936ad37ccd5fdd9403fb25bd5de98702395013ac0a1c846a81f9f6ee61ef904177cf66e1f95b9e535708444417a84efe1b863fab6f9c1fdb67e28af9083cf3c8fc176e4304e62b6d9c37e07b9f42a2f8df53fac03372ca309c4c12d430dbfc667fa6fdaff905b38239cc91c75dbc6c4755ec4a08711d6934f5acf055fb4c8636617f5e2bec4fda2e09e817f9fafc806c3f7e5749d40bb48ec3bcc51cc734a0e0dd4e7e05a8bb8252b8cbd03ec6fe21a1c2a196b475a76c8555cf8683ff344f5364bdd4588a1c20bd4f4d93d309a2371b8e67be4d9e39773e128ae2d3da23ea103a31c5053cde0d838393ec6776943fd5218df059ff95f34fdfd3d72cc8be6bdf37b40eb887da27ef82db85fdef05a597e20bb7a360a5c0b49cc0e803d283f8383207d8b3fe57ecc54cf147e936c0f5845dcab549e8ffa06f1bf6e36bb526cf8c5fee8639fb8de063148d15acf1483e42dc585fab4fc611e6f12c2014e9e7ce248307f5f11cb1142ff9bccd511f7d11d7b48ecc0b81c143726da5dd52330a3de1c79ac933bdea1009be7fed379e5fee13c3777bc31ed3d594cfce093a7a5767dc86f2beda8363c87b436888fd664eed7f7265c1b9b11370d706d090e7affa1e65e904fd209924a233f7d9063bf756b87b404cb998e185d7d2cfdad642b755038f07f8f496bbaac2936f6c956654b53d963e5df97cec0bf8f2e2a1e591aa8ad3fa8fff25410bfa2a80e1edadadbb432c956d7b446fe9433d49ce69327e043f06fc1ce22edea6cf3c31c7936688c80a75fee6de98bcabdb23d61ef2747ca6764c8f5b986efeb25186b86c8d59ec4eeed5bdc155d88ab08e701f00fa97c6f3fc763f42f203691bc1de18ef21fbea9dee113ed9ab79a373f692048ff8929bee4813d4a74edf159fa98358a2eef842b61c644aeebb07521a75d3b5a89f9ae2eee2815e799be209e54aa11679a071c61a9670ffc516d057687c5afc01344f1608ecfcd4d7141bb720cf66355472e92237cdbcecfa038e0db989d0d8a1b628c3be81dd0dfb1a238a4f970ecf340523370c148774938b487912fbedca40df1e55d7cca9f7ddfa72d0e7b21cba1cfea1963fca442bea102eb1165ed7daa18fbe159a57f3d2d938be29b0841cb568e971f37987bac5a55bb327eb5c4d356ce2ecfc469b921eeabe4d72824bd57e33aa65ef48274e345f5e9536f80699d8807cc3f348405bbac1cd9f3b82e1c994f7d867e6ec6cbd9c47f781ee843d41f30dafc62923f95a04dc4bf2307e4cd616de813b695ea3b788cccabc7dcbd04fbedd4977856a9b74dfc346fb1e27965c899f342bc4a5d5ce497fbe3f4b1c6debc05afff73cddc41dc48b3b1a9ce9d7d6eb8acb7583cb5707c45c476d633f576455827a1b1a5f9d4f9c6451b82f634ff653298132eb75fb498305ab2febdbd97a82710a7c700f004a3ebaae73c947c1e21e92e83c6845bd49e8d58b963b02ba96efe1eec16ddff3fe8d3f6f8361db1fe9d4f40bce75537e677c6092f50d3b582e716790eb9f6b9e21857ecb647c0aaa05678a24f2be2fce47a4bb8f162107f47dc5d26d417676c911fd9257f4eee1bff5eff6e4c89cdebe661fafb53d5bf4d4e7ad7db62765c410e5098800f7301a3d232d55fa1f811ccf0537d33b8a79d39c4bb939d91ab2ea9f654e7bee884638bcd8c6a4c39f14e547baaf1ba7a0e7dcf76f67a1e237fcf386865af941770c70c0e5beab535bb31404e047b339db087bfcbf85a9f0efe2e7d63d8efb337c6dffea99e7ef3d51e85fdc13b9f62b23017a5e4aa110797b05b619f2ba808ebf92e1e8f3f053be058cdc04fcda258c8b822a9dd9bafb82ec5087da443b03f3e513dc6efc648c6817e9b3beb6f7572cc25b95f6ae0f603dfdcc15375ee95e4ab93364a723c77df303ef41c7279af21f4b4825e6b37da79b0e76aeca46201c02f5891c2e2dee81ef219c299c400dab03687e795e7a1f6116afcf4e719db6961e8924f27b4ad69be13c8c574eb794c52e713e250e273733dd6fb02e30dda5ee2dadf1c14ff6dff5bcb0ecad75658096608aa6344138675667770edaf71e15de94345935170eff7df3016f68af2ae096187dca7bfd4f1ef4cfb769daffd03a83fc8bce716f80042a7b9f6b90199dfefd6d72c6bc381362f23dec3a7e050922f871871e881a15c12af8997dc25ac82571ef038fd7820ff7cdd56df73e97d1e60cb0ce2d0069c7a92c27ce4b578434e39278c2e9fca57ed396534e60057fb7ac735c529638750f3d7b6da86343d609c42c52b4fbab7dcb5ffc127ecb12166af7b06314c455a98dd3e8ab58dce46fc22be9ac13ca1f829135f728b8851e17a40dc0909d4434807a3e494b7bda9faaf3f57be854efc052239fef03be13298e2df8c8d717f5cefa3b43f5ee7f00fd7312d755c65aaf57223cdb935e86b5a59aa62339cbb943f425ee53473ab39e61c797321cc5f5f73694ed467551da06e99c93cd0c40a1df7a4eca1213564653eb98c1be2433a0407eb82fd866c0338a075857c589986f1978c0febfba0070372a1bb903446348a3578ea981172fff96985fe643df2b14e22b0f6f7e0abb5c28995b6e9f7771d7ccfcf15c68385e3992b85253e2a3c4fc1d13f6bbd31d5dd8a782b73c39119caded1a801fe037eb03ee387de04e9afde500bd9cee66fd4d337f467dbeef798bb2c9967c718eb13ddf33167ec5546233595191f5bb88790eff8be72fec577b41706d61d33e07573cc4271103563187ff114ec7f6911f4d6fc61c847148adfa3cebf134a2742ac85e2911480e1503a01951526db69f57ac1fe60775bec2af4373dc9c1d8f3428a9ac5e162696753c97325d72e3783c3ef4fd48f0acb57f0b543e1b5cfc0f168c56680f54511549d0ff7cdaf5ddf19d7a8af027a340fbfafe047c99e9d616d75c90edb67e0270acd9c078fe7ed6a1deafadfce6345cbe6b8dfcb31669a3762ff8ffab599d1a05fdb4ccb7db542dce27453fb8fb84ac135eaf3c6f8d02bcc0cb9419ab70cea4cf38dc36e99aa39796fb936425e8d2aa6fe45a1b9b7e015b4564ad93ff6bff9b89b1834db83b4b15771083e4a5c0d7c94b2f35190b79f8d963dffdb27e2c5ad827b83bffb9fc80df214ee5f4eaafefa7f8f19fde2e3b2a760ff66900e4995a28e69524df3c311e3ee0106b365ea9e03df54daa7a216f63ff11cf7f9957254d4b40fbf8cc0ceb3d5a6e7373ef6fbb4d411e87cf1677fefffdfe523bff0f4ff908f3c129725e4b6c42bfa8b3bb01d81ee736d985fa2dcb2e7efa8e761881d7ac462627ed08e62c4b63b0e6117ff547146e7b7d22fd4dc795e2f6ea89d1d3e2bee02fd10137e9270652d9b5631fa9da2ecf352e043d67eb278c480d9db68d8c71ceaaa9fe95a2aed84b72bd576fddd16e2f3c43d17a069ec9535bb95f8bde26472072e65b17ac0d744135c3bdf7180c4e13df47d1107887db86c047bb8f09e5bd0ef0d1b77e8fb1a58039f652d73befbbee23d300571a9ee96325ffae8cfb3d945d549574a43966ab0ee7ce02f43ed55f20d876a8e08d3bb614cb2c4bafa3d79ace1b45f6cbdbbd450173fa6be268e3c2613c47bdd545f328eb5b54e2d7a8fb030aa1572c28d19f0d2b9b9c34eac56fa4ad0c3dc5d43c7399508c5370bf540cfa0f7fd56ff8eb14747949f25f5827fc5c019bd0e4e4575f438a31eabb4dc350bcc7d12ae578def3ab9b57dce52eaf190ef7ec83971143737bcd6167195a36e2c62b0a52a9ed9d842dab730b5ec22d157f8ce30d7128e58b08072a5b71e7be932e0215478e2ed2aa578ef3c022e88e6aa78ea52c21b516f32338843972797eedb34a0d30718836256ad7e8e1184c2faaeb0465570c2bb4cde4b6dc871e72ef394b1c177b342e3f8307661cc9c521e5359a133b9968adf71b2258c22e9200c62f5f9375de041dc5c2663c8491bb769a8b82818728fb1cf52d519176407e53c0ff17d047cdf5e2718eaf18a9f016cb786b54dd5836f6ceaa15d1576aed6c7d79ed533d55606cfe59cfed6b35a297c80a37a5d0bbb412cc3fac45057cc771632f7d85da370bc111e8b39015df1ea76f1a1b2afcadf25fbd63c6da8c774f01b9b53df9bae1554775471a47b5b026fa1bda933c477fbc48fc398b386e335ea97a87ea8ade077bd530c3eb88f9c4bfc93f4fc4be3c67e3ec65d560dd6a4e2f528565cfa4ce635885b82f2788015f892674f95b685c80f3ffc1e2177a35913dfdf9fa23feede5fc7ffe93af77fba4ea99ee762aa6fd0fe269e3a1120ff1cf56a12de29a61c0cf8a9ee520b35c2344789bef8ba67e409e942ea06626ae765ed99b42ee274db529c87bc2109de7b59a6d09b18eabf9123d155763d4f3abbde50ef9c87dcf20baa1b27a45523f3326f26691c629c66f9ca8ffab25ee24c0fbfad17f7f30b8e45a73c5321f123c20a5db6a2ba59853e7d908627eaddf777a847626ea78c34134573ef6d90aa899d0ac218a25f5338fef8cbf3fb0f7e4372a11cdfd79a784bb8c9b8b785a1bf6bb007e11762cc88ab44bdbbe03806d55c388813809a04e467ed707fa37b2e9f5b7a1fe7b601aeff79b6b3288f17faf81d650e0f722976021c0f561caf0d58f793e41197cdb548d5f92b2be4e169f3171c7a29f1c15ff60485a1b8604ef048dc624641b657107ec63b2316f63dd86dcf34065493aaa02fda2e1c8f7ab399f2ef4d9ca3223ca8dcc5375f97514ee5a97fbe17da2fbff052d6235f436c1fe69578ecb780f160fb3c269bf72d3f2373dd7982fa84a2a67d4aae25eac31031c77e287f1cda6c47febcece3396c478a674be54eca2bea995a71ecb63fe4e354fe8669de7985b583d0f845f9ffd49f220f08d76e6abe7fcbe5480ec069b943dc136f4e8c728de66f65c3990bbcbf3c02bbc2a5e6e6c48a6ac7208cec7f9117233c91d8245bc41a5aa48b28f176902753d864e41be96248c4ce9a8c72b45e253553752be4e32bf2db1d8346d51ddf8775c730598f578ed2f7d8065c0458ab62cb996b45dad87fe8a975ca1ffb6599ddb8cbb940fd338eb988e6e37fc96b4422b8fab5a6f8e42157694d7b1e7ce80759f1ffad5eba891bf77bce49623f8675cb73e76328de0ed00d9b1671b5f8d217fce473aaf3f9a4d92af376beed32da1bbab15b1f5ecc68daf37c74e76fb8f7b104fca6bde9cff7baf3999d3df77a6dd03fc2e2ec19ebfeaaf738e2ee5cd86b4369b0801e8de243c27a868971610c18bce05e6901e409001ff78aba33dfcf072cb8cc0361de31cd67908b949897ff20075411d79468aeb933429e4ef6ad2e3ad4db60c94de64962733bdd487d55193fb585f363aec856fcbc71855873f1f5fa767650399165355335cd96b040eb1d7157fb7a8175cef54e69bffec94d3623dd896e8ec1b772afc1c13354edd1b8cc64fe2d45ee85d49a16b38bd2fbc881f3b37bff3dee17e3aa5e0f63ff8499de92f4fc24d7f7fed7887a7bb0173c61f656eed5a103fe15bfffa2deb5b0328ed2ff8d95ae7333ce3066c26f780c76e2a0f036c445978cdf210ee7b7e07efe9435ddb4c9a2fb4d04e936e3c645e68da2247ccf31cee5a97883dc064b12ead5aed7e863e137492dc2ad649b1df48c84e27822fd5ce07866f99a9e0df7d82466ea19e17b35b2c70572d80c7bb89d13f229ca1e0ce2f4d9903f114dded53e3903ad9e2859df73e40942aed453b0735ac811fb9f68b7bdaa255b353995c8d52a5af7a4f633dc23797219416d42ff080cd29f77ff10e75abe87f51226e3699e34186756681fd8d77f1b6a6ce36d37b607c92deb1026fa87e3a20b7c03e17e04f789ea8724ded40871e212c3e3786f49f45fcc55e08afa5c41dce206c9e8a4623963a2fa1665bc6c7af798fc95a4bb8eec7b01be55e9e33486e2a094bd926bb3accfc41bb90d385b15edd655fdf0ae6b85fcfad0dfcba8df4fb85ac103350795c60ce54f4d6f9ab7a8359a60be33d1a798bbc36f22f901da027d655f0bc9677dc01272cae328dd1e6676631f499fdf377d6d1807b3e7e716e27bc2ab631faa89bed635d8b9471543c86fe0e23e03f877e4d71c3f6b72cce745fdd877be8ad9902bd20ded754b5cddac55bf293c44696c5780d11253d27717d807ce5b9af7ec2340bf3a80986d1eb674ddcb9f6a3a913e49c8ddf10a71a9ebb8a43a575826db1570cffa660039d37978084ee8bfb6c16ef1297521452835dd9027628d31c83b7247d84bcd3b48ae51d13cfb12fb38b102ed4c7340f698a09feca36f2b284fe1c74cf1a6c35855b35ce6fce1db275fd663709f4c33bd8667c59cdf662f35d6ff887973425f29f58d1b616f4e05f4558356a6706e3257282c2b9f8d891376b471cec4252aeb65ab74bb54da83ce48ae293e0fcfb1d2d5bdad90c75c7b86dcc63c9b6d3fc21fb493bbfd209a2f6e11fa197fd91b9f905f5df250476d85fe69a3f5b90ed6dd3f0c380baa5977fffef962acb301bea70ae0dd744b08f2233d1a9b0bf44c3ad77fdc4f626bea034e7514a8d82a24cc64c812ddf9822fb2a256e68a4389a7a869afe9cf5175147e917514d0db5adc19e65cd6908fdeaf018f96f53a2fe59dd56bf02f8df5a8e03ef941dd9ceafc2041baf381fe72e3c8e79dcfa97f5a3319e87edbb9e3993ebfd2b79ecbbc017177cb7918daca07d4402f1ffad45e4684552876a0af2db51f6ccb87e3ddc11e20b182991c874376c0186b9b19d5f4ffe3eedfba1445b6ef61f82b71d01ae56529a092121667e48e83a32c41d35433553efd3b88583340d3ecaeeebdf7effd8fe7aabb1284002256acc35c733ee28332d3565774ff2c7e72bc9a6bedfff3e74dd8bfc731e9e9ff0cc71487d62cd8d7a4cb6e6dca59fdf2696edccebad08d74aeeeef33780053111bfcb8121ef1730ccc358f449e7c19de736f78c4a1dbf528907f16d5d79c62cfa861efa21e1c9ddced973dd917f4a938d1ea699ced2507236d44cedbb3ca0b0327473cda891eb4c1b5a01e9c30de700e101f383ff83d8ffdba89831c56e2a8d40f19708ecd2ebe6f2827a85447e81cbaf115bd18f652f2b88a7a96c8b1148ae4f30fe74d160a0df875653719adcb48e4a1962eb4e934e0b7a3432e78448dd26ce71eedd70d83b6c482515f8e178fa48d0bc45abe20f60e05bf7020f6b7089ab41f9d5681e8d3718c88721c8c7c08e8a4873af2145e50eeb85fd2d4136707de31764915a5cf09787177a33d7a9c3c6113d26c875c6da8bd90f640c8c7c05e5dad46dd2cf0a917339ffed9f9d9cc367b78efd68fdda3d731bc8dae14bb89dcb3369cbce8e09d65df5e14d2526e56928f547283eade64398376191bf073f97a76e5b91237d6fa4b09e93945ce471e16b4cf9dcfb416e57bf0c1db3c39bf484d3cee277afa0b72defae6dda39ed0521b92efca66d4c73eff3426e13b29deac40be32609a4adccddfb59cf064216973c5c087eaaf47f09c8ae748cdb50f1c3a7bcf2b7a0e4d7dc773e0fbe03eebdfe7178917e39c26de503e8722343ea2c41efaa425bba49c9d17734e3826b0b8358fcb9713700c31e2232b95b5d05919474dedd3dcdd67ca1cfc6829efa56e7e81db23086e52737281ba21f87252de2bccf9835a5b691495335860acaa29de4db2f9dbb17ac9a63756deb7b615f9a9c37b00db8c779e94afa25e661ddc3d8f4928ce6c7d3ed6c622af19e1977dfdd787fb70dc4b3653d2504f56a43159ccbc4e574560b82c16dad8179294b4ceb0061d1ed3725ed957c167532b52bb58ead3897d36dc56e084021fdd25821eacd006ba66f4ce44cc5a82ef3d288ce8390ffb3fb1af61a539a49be926e551f0457be3b5b407f53083cdd784ff11273f0843cd4eee76ac0a0dc328a4f575233ca215fd1ea16775cbe75c5457f4ef9a7cd43d3dcbcf25d782135a23f035d97e4c363ed453feb7f2dd8bd577ea95f60aeeebf17ea4534a75166133058f43aea12f26ba94a8a9897e7a3e3f9926b40d0ac42c0903de34815e4ba87b8aac87e911437e6dd1507e2b72f0bdc47e190f7bbdb814b7c703a907b60c6ac2d46c265943d8c0287a43ee177329135ad9d642997fa422663383db09fc18726ee6e23c239d6e5e05675a74419fba8bf9a87c471dce02578097a41367061dbf12fa284129e7fa59157eb3ac2907655d3df555caa8c25ef9f39ef39fbdbb9a3278f2bd064beab90bf594e3fc02ae69f1673e83fc368da5a24643b8666319528e2f2e06c0d317f23df79ed3f0e85b122f48e45c5e94e7f5884283d6ff187d819f796bd09b171457d8947512b187f97e5b522e2748bc4af459a6063380212d0fd0ea769294e2728734f95097917a858fbe5c83d83ed2548acba36fa839fb0f75eb94fca89766036cdd1bc5ca46b42f54bceb3b1ef5880d32d2dff69b9af8dec2e382343d459cd7fafe21728c010bc07b515c53ca4179fee9c3fd7def0f9501e12a22a7e15ab57c0f627bba8ef5721b4da40e18d79b44beaec0bdb6c5dea29a6279407d3d8bd5296177ceeeee7096da2bfcefa873fc18c85a3af6a7b86ecfdd730ed62afd78016639f1ae9ff69c608cdcd73853e6579e37eefe2e749b9067094fba8c5fa6ed9e138dbda0b6c03b14e9b6f13067c02142ef32e29ab46993e23ce5d17648edd0867fef8863ceb98dda1cdd7d052ef1a4b531420347d42e38df01e10023ad261d740b7a19716b37c246acd3476ea100f521c4824da8928f1d3123323e7ddb848f83eb707833687497dfe4b348fb1b4d90ff584fd17f23ea14e19e415f2301ff62b74745a21e03bb12428bdcb9e6a12272f8093bddefd967ee1775be7629f778d85b5a379ff6fc6c6f4d4817d12ab635e7010944fcd1ee2b7f31ce92c669619cb3fff3712ae907f5958fd3642c73f3d9d4913175c07daef2cdd5810167942f207bada713afc3e070ec3be11314773fc6f73d125e3a5d77fb8c5e8aba940d3e8140bbf2183d0daf3ab8870516b89e148685da35d9adefd048b11cc945393c07c0b7ec469473aa15e862484c0638f5f7a2f7df4b52f033113e435ec72eb52bd7e4f3841db0dc6473221b63b3bdc571bb7968afd2db99f0c7629e43432a4edc2b7012c0b81452bbd1a1b5e0a8d01e280dec5956039b1469545f8b9c1bad49f421001ff486582008d807d521bd22697dce33b4bcc77e6081138839da886a6156439c1a466ebaa8b3f29ed86c46dcfba4bf1c1a8e061ebfcc17cf1b086c65c743801a3ee57ddda63ed0733fee5b7bf802fdfdf5799f9265677189b8f90dbaed41fc6be0a2dedfa40c75b147bb58189ec8fdb4f1742cf32bc717e5c1bf0d48af3c329bcce4b1b6b5ecf861793fe3a36f9557f31ed709b325d64037a1b199960f73d79bce6f6bc9d325ededdb635cb1f447887579eda830e747e205b30ae2afc1b81c683387a33dc77685d63813639b05320f26621370bd055aa1786dbc1545928b2a3304275c50ffc0f5991ba62f792cfa1c7ca101e905bfa12dcdc6ae72d1d6d0196eca6fc435e466aa889b03ad3a72bf30ae27e18cf2703d0e20da9b53472b79cfb8ef8b3c7ea74df54b720ce7e8d38e8a26155cacbca6b622bf236fe471b53dbe6ae3d1ad79f39e6aedf47ca786113f7928b4269ff84e6c8bb8e4cbd868e68661437e33ebce8f9495d813f9bc09c57787edb65eb48343b6d9e8e7a532456879c6f141432c52041efcaa0f91e37086eede3be15a997676287f712a2ba999a920ef959955fbb745663a0af4a70baaf53393381251ebe0f39891f634cfc58a358e7efef0aca6c83beadede1779825777a7be813b8ef8464f5945389b2015fb9df28af7c43137ad0f1f18b4e78795228eb11707d8dd66ccfdc034e2ba6f999f1cdeee7a07da185f4d6fe857089231fc10f0cebf530d49e974d3e0a79be039fd721fcdb6a8599db46528fd5eae95e0c527d4b17ee6d383d4722fcdf001375b1f1df05268d737e2cab7f3185a0b2a711833c5d5656fdcab7c77baa7789f7907652d3593f7ae0ffc3722de10fbbeee195dbfe001f75e149c0ff2bec7316ba0b93c7a93f78ecff8a6acf56522810f907d970badc6736bdd734bacdeb9909c0ca3039e3bd5e473df446e271ab852eb63a414d05648186ab6bd673cefe533ca77e90cdd9d1ce7cfb5d48eae8785e47f96f75fbc68d0bb12cfc9b52a897f25a2dc5daff74fe2b673b9d7fcfdbc297752bb5fe77e8a9c37d099b36c96c04feaf5c6f0da5024f90b8b989e3bc25ec2e70acf11f6fa40dfb01f64f2ddcaf7682c433604877d088ed9c49e90bd90df32db1db05774f3483fd03760276fd2b7fdd777c4cf9e5e22ce92bd34796f1cb85687196f63c6714836b961e8d3415fb73692dfb2dce13a125b3ee378c39ebf92ff064761a115148b89f91f8d5dd5bb8157dc6be647a95758f15868b3da7b13d460c5be349e806b47ec4b1169dd09dcc882386d7c8107127bcfaee309cfaa95a8bf5573d9abf9f7b541fb883c411acafaf35fd864a7f14ce071e78d3fa139c7f7ea7aec45c2970a89132c6a3886cce31ab8db39f0ee89d3481e3ae4f6dfe55ce8e327789cd0e1270aed3c1575c1ab91577f849fd8dee3274c8e610a15ebead6ab6346fd768435dcde6353b8eff7b116fdc66c193a03f4dfe78afde67dc2b16c8c3cbe8a18201e4d72d1676315a64defce52ddddd07ca8ed5b79c5aeb9c07f8d53c5be8873a35797fbfaa297adf5bdfcd0fa99127718c7f0f339934ea0cb1ac78783c8a39ddf3cbfcf1159ddfce7fe702f8f23fdfd6b1b23f56b804153f36f1ba006f887f92eb789266c87e3859e114f5be77b9f3391db7a92838b55e8f844f9ae1698ae26bae74b8bcb3378f4187ae4bfceff3ee4c3ce632fb14d467aa07e90a677e368ca143103b8d7a39863159fe88b5683178907967af55fdae762bb81a6c23bf74394d64e7afb357189aeb4e1f0317e137163376f7cc5622c642ae60db093a53257c135d5da7efe1d49abf41ecb6fb1bcfad5f7d52237fcdeb8dbf945d472a58e753b67ff763c9e622d72a1a7305fe9520b8ee5c15868d62ac31330c0417ca27ebcc82b658ec2e4b5a0b2e2bd980bc476e08d5bc517f8d3744d7eef4b77cdef17d1cbcb6eae467983d87a973ab9f2b895165bf4c2a9d7f6f711ef0124ed14c46331fd5be0e50c16daa46921d6a45ff1fd629199d4db135b3cdf1c98457bbe979b12e387f8372ae3d18c78706e9d7e2fc5a3da09cf9752aeea863e97723aeaf37e2e62be3fd776a989ebf995a942e722f447e040f4d6f186fa30989289fdcd5eed793c3e73c3f4cddd5d3468332c03dbfcd473a217c0b46ddc0e27897fdb6e58a81efa859b025ced9e63c877f2ce2ad1bb9f9bdc0f0938c7617b5ee48d97382f6206f8c0d65b1b71eb19ef2816fb52eb4ba02e6dcaf30d9b38e960374e786f1b5abf86c8b76c4cf436c70171f184dff582f6373fb0916bfde9e894db6dea49aa9d691fa834a92f781b491f6f41f17ca0bf12e6cb19ba5bf743f2f493cd8b690dc694c3a47f1bb9e972bd13b15756376ff289c362bf107cb77651d98ee88fa3efcd73960c3dc12c4f6a53d41dcb492e3943d4631bf793969a2e35fb6e98535543f737986237acaa3e7dcf1c9a935185b1dacb70cef1a5bdf5dcc610a1d020e7f73df8844d2812d293d60e93d2b0e5b8ee8f97634ff3946ebd56f29a59b75ef7cfae59c839f378cff378151f2602bb0bac3deb9ddfe5f5705f9fe6da1ab90ee8dbde447e81620bf45f0ce578837a08bdbc17a973a80ed615d7c1b496a17d2d28871f3585b4650b7e2eafe50fd652eb2a258c767971255f804573f624f26294bbf3503b69f04c8abaa6ba54d0a4524b23df1f783edf0bea4996d0b5eec65fcaf1b3991cff8970ec33e0f8fdb8bc52ef79daf1be75bcfa6b73aeae4de400caa18c1dfd11611bc8f78824bfc758f00d091b10aa63e93f09ffc69e2c103387ea91a1b7527c27cb814f9ccc0752af9774c6dcf07471883b2b321cf4cfd98b461ebf75c7eb6f38cea4eefc69c0489f4a6016d9bbbbdb24e4270cb310fa0d27a5e34ee21c789332dea0ce06ae799aaf9b09f962a913487ef88f54c4212c33e71f721ef8a885883c31df8f62f54a1843d6b76f61bc414e9fb880eede939b9bf645dabae815368f7a33237fa1932e43583788edfc60fc267b6bc04b23de43b84c0e7cbf8b43e846f371d9c012b861bda0bd8eec733da6ff1ad4ab61ae67a8a1d5a4795bdda043e2c7bff4bb1caeb6992ce4ba7a3ec64cf216d45760d0e1f78af5169ddcdd90de5f0d1b7e6edf8bdfe5e86dc2b16f681f49a9e791f665a678b30df60a3b460fe11e7afdf52bb8b0e85dbdbabf4758877621732cd52543df60fc2a9fb50890cba6f10bfb63e5a6fd5e083fcb868677cef7a9f69b53bc449ca5f4cdc72b51abe07b8ed024f2065fcf01cb7e915ab7e6cdbfd33ca2f7ae1f2645f7cdfe609e44729ef8729e8ce43cf1448ef36e9feecd17836ad67f3d4ffcf3547e73f07fd1bb14ef947d73f763f9bd9ebeff6033edd70f5a5b20f68cf3547cfb91532464977a71177a15bbb82bfa1771d757f5f350ede178c05175eeea33e709c5399c8748f847f31bb4e49fd4764f887f7cbd7ef3a5afbcb9a27ece6bc4f73194ea826b143cf0baf7f5759b7177dda65471dd42531fafabcb9a12d7fb13bc15327fd26cde49d330e5fc8ee2d98f59c571dc465949eebbcd927f17be871f73717c1cc7c337f872792cf82185b650d9d9d1277e7e7befa5d07690f10772cab40f1fdd7d7aeafa9caff45c34776f234362232774beb437b4378495c81309ce61cc53ce6fe7510dd4572527ae9cb78ec41b7c6f680d1b65653705614d7d15dc100e7c4f7b8d5a0ef1508bdfccafd0595f82a7bcb74f97d8a7c333b48c8deedf6d4c5f4ed65b069d67ae3f25f2aee783cc55ea3257df2c894b75d598c079ccc86ff8402dced7c3a1e813ea621eea616b683e1b21f82b8252d6dc64cc93140d78af5943c7756f9235f25cbd3bb792e72ef9b546632ff126bdebf2fb45c00cf17956c7c5ee8a79b8e7f350b18c68b791f3eca5612f846bbc96c447d8eeb939e6b456289ffdddf40df63868bc77f48bb178886fcd73163c37ac5b0ae52f4fee4eee3f3f99b1b9bb6fd0c6b7bca6d2da2ad2d88a4b23ff9423824ed28678739cff2847046c525eb9ffe51c517d03c68ce6844a1c563eb8020b897d2be157272c2e5f448d5360870bd3d19c105a0767d4c713472b5fc0011584d6ac44df66eb0f83cf483f2cfe38b7c4d711fbe6195e42f3e922b179a8dbc5a8c3927e70b2024ff282cd2cc133dc586631055625bc32e4ceb5f3d9e7b691bdb97ba9f711390dfc8fd1390f5fdbebb2127d86d0bcdfa68b3fcdb5e17b6692075e62a37f660df8daff41ae2d28c1b3a32ce137e84543daabe19d8e4632076e69f1a24714ab44a7a2c23ef3a321aeb18bbb779f9dfbde9d3befcedd9a1a7260a572f964fb963e72f9cf6d9f17a39fa37e5f88fdf0e48afce1d155be13360f799f0a1c898bf50efb9fa964a2cf691c05a68a71e7138a439b68e218e0633c5d73d9ebe2bd8a9e242b5a6f81f33f630c46663a47a9c59e483b74267e092333e7571937e965033b942782032e55ec8bbb277ea3f84c7dd5f5a4f8ecdf7c0366643955c1adf647d862c26cccdd78f40e3e987c4f5891f0acfba2bec39cfdd8ee7c1df7d1ee502e8e695925eac8811e1d7c6018ba5e02cec1ee704ce488e34fd7c1d8f81b0cedb1a890cbaa818be861685737f027c481653dccf70b6905b6eb4562fd03ed04bd03990b66a226602c43fb1bf8f5236db8a26f7a163de51dae966c30c5cc4e433a1249a7a92fd750d43e4fa01fee73f58925354cba39103542438b656522f9b4860f73c473c3b3cb12efe5a9cd48a2b437a667389a41cf7f85be03b467bfcc8d77f813a6f17ec7d6278895017423d6b3c8a4f90dfe14a3a890478cb4f66f62bf64c49712dddcdfdf3f68defe052eb81cfb8125fb40bb7784fe9254c33ed3bd9ff6d8791cc587c98bdee524e5faf9bce762fdfc797cf02546a4241c523afe038c88cddfc33e4a691dd13c8adedc5d0f13d26c8823f3fb872372554634951c6556218f8f9467c7b3001c9ba337a7fa7cdcd9caeb374e48f968c27b43ffe0131e1a7dbb51d18434cf1d4d65bd3d6ac680c3f6ffa3f7c1bf6796807b28e47a1eedfebc50784c1048fd63e52e2f3d8ef4cd3bf9dcd6d2f0e6c41121b9893dffa4f8c433e1a007292a399788db44e642abeff1370aef438456b94e3ebee82d43ef417c3e06829b635300d71530eacd62dfdcdd8862e570d08ea397c3ca9601f11d85e1f1f1d8a2c1b1a85912a622d0dd01ad5b2b8b25d6e74deab125ec247a68da58bbc305f1f924729b1f4be26bf1e2ba1df743df58d4e4a2afaf7d462537a1d7341fd0defcd369a0d1191d3b8cd2153575ab88afa25f543f4c0aae5724dee7926a1981f63a94cfd0c32b75cf609d041ead6edfdd81724043def7038df55868f6f95dff8072dfe3fe8fe66d8fdb69457d2291f0332a68deffd3f56c259fe6afc80b7cc83e3ff1fef9bce9f5ed1de5b7be7d97df9aaff75e1f5b6e32a5fb8eddfcebfaf99ebf6fbeeeefaee334f23a72ee585e39bd4efe7e3c67de93571a723e5c73d1773c0e75fb74678b84d6cfdb127aed623e796ecc06ee36451e7b2362a4d10478e9101ab6f1e14a39d877f83db97e987f8a7d7b3ea4f3fb8c1e3ef43118ddbfb90f09cdc15e4c3aa6dc338b695f805e1f1378069bd67239840e411097d0be0918f805b5ebc4d110bf97dfc0d19525d65d1c1c86d62c33ed37d49d88a3d4a75ce66c9d50ae41d968a86f793ae73498b9a1ea12c7ce90f2185e30556f627f336f88ef681d0cdddd05985426e206cea5091e7755f22ee89e023dde42f738bf92978c81cd13bd90a8a1fdbe1a9c07435ca32990eb4dc2eb63cfd2a37fe1e8d44ba36d4c06fc0dc71a9b17b7e61c0303b7a2fb25bf34d817b64f056f47640d4a8a517dbdd4d1cbc9f4740afbe428d4fbae5d9abbdfb7fbc26d6474e7861a386e027da37bf0e1f512fd9d7a59a10ff8d488de37a6b97bf23504cf911d08dfd95b1b29d6e147fb3bd13f3a42dd72f1a2a774ddd1a5bb6ed55ed723bce1ddef4381dfea9d3b02cee6e7825f8bc729c712bda4fa183ccc56163047f08da413e2dc230ea7d6868af7c86093fcb3e6910d709212d7bdb4ef59d88091bc6ede3047d6fe95bbdfb7feecab37e9ce7de1ef99bfc7abfc66cd587eb345f7cd3e1cb1a7186565835ff227b7f5e1e5d35c5827722e5ce475b591bcee7a2faf7b6eaf2bb4a406cdddefdb77d39446efdc613717c6722ee4722e8cbe75df4169489b5f931821c1ab6a07029b65f9e4a3ac435b93ef59e7ebc373c35460dca3c8a25888fac84da55d03f73e6b45bef306fca68de49709649c4eeb8dbdbbfb03780736827760dee488c5ff3dcff4d88f25465365e00fef34437e970df401d50bc39eac576d6cd4ce0b239f6dc89f2a04171daf8f1617992fda12b75c24b85e1c850d641d93f7d697634f6aaed757dc8338ed7f933ff06df92f3816e0c73ac29f9cfac146f62fb01df69342bc478e1723fc7f779e9523be0d4f84df646e66500d208cae8e097c0b715fa9f6ab53c197fc8e3af38209dc8a114e7f41cbd12a9a31e19c14c2a346fee2417bfe8b7e8b0fecddb9417c1e913970cc793f4e7c935877c457714d35c4e84278853857e0772872acc5ec338e98ed3e9d671753a965ddc7b777bea3769d48ff44e04cc07d6d15f2bd9e95cf18e36ab086af9a98f27ee57f70bfbc91f7bb7dc672575aea3f9e57df32f0220b9fec8163a1e71fdd88c74b1fafe077775a9ae9679c77203927690ef0fb69ffec7ee59b3793f77b8b50ab8dc2c7f7b628b66343da4dcaa7a4bbc145ce430bf5d251f479fcae3c4fbe1b2d5573d2eee5dab0743cab719d1ad7b990feedc5dd55c009240569d0b7f35cf411963770c6a287ea81137d964f47922313fc289e6e7f800328d770bc7cc3713fae717c56f0df9f29d7c86dcdfb7daf307bc974bb8f9934fc5dfd8a3e3afe7715eb9e7aa8d0efe98f864f34723e52d2338ce2e114b686fa5cc6abc6dec3c623a7ee259e457dcc57899bf9e7f6ce7064fc033b4676b6aad197ada1efaac731f3ee72fdc47afc77bdd49dcdb8e03bddf5520bcc93dcc3ec4cbcafd6efb404a7d7e6c82ace5161049311b4342906167a763971a7fb4934fc648b757bd2b33dc72eb67787a8d1153cff483e88b0d1f6ba9a3779b8a279dd5d57cedb9ea669217b8ed9bbbb2b5fa9cf20600171bef4d61ce79817b1cbb5bd3ee7f1d4d34916a35fe0fb70fd4907b4ba41ef31080ab986f85a14d8e67d09ce34c18f6644bb21b434179926757b955cf25559674f70901a8569bf17d51db6e4254fc0fd471a0f95eca1646e780e09e70f9d9f6fbc8fe2bfa211e92d04579bec43beb9fbcd9befff916ee43103cf98b87e4c9c592cdf89baba170eaf0bc521ddc739e99c474bb66526f8335b3b9329b6b20e5daebbc542fbe8d375d635c7d45bc1f6c750e82c10777ee4598be97942bc63365f2395f39493d6d9d6d60357eb85512c1e20de6a2cc9a3ea29d62c32e62af5d9fe04b6ca8b7e1cdbb89a3f8bff1d3a3bcb653bdfb97f5ef0ebe7a1ad2d25ae8d0da9afeb046e5b91533baf888f432d4c91d78f9ae85df89fece4ee0fd0551842338dcd5063fe4e3d5eee2d20bcce7a3a14787c7d6330fa7f372ab5a2fa1b8ed4b86850ef2fa7a397fb7bb20abc7a6c7715b64d4d35e843fa7a74f464dfc85968d0a807e03634c919263919d98e73328af578400fd93d3fb28535c8750c5bbbc024b7669df06fa4a6d792728212e79dd83a385eb3bab83bdf6b4ac97d5a54ffcf6b37ce42c9cbdcda7a57435f0be92eceb81e95c8218745f77b68271b79353fa2f6fd9f734fab92973d98a5b2efa8d4548ae14af1dd95e140f615e90ee2a199c7b9874a87d79dc24bd7c3007eda1d61067b5c7ae9cc44dc1994b3c3135d8014fc825ebe53effb9544fde7b34ea06e1b7912011bf2be46cfa656492e24c1ad28b88cb35d4de31addd6a6f3e9dc2c81de4f4fb33a3ecbfb76da44f590f45cadcc445e4c7006a5897b11eb977da3da57227ce4b1f0059415f5eb1f768f3eff4b439a26a132cccc13bf7ebcb707580352bbc33f21c7c4961c9f598fbdd81df0df70cc07ad1fed7211e7456eaed7883b2f6bc17fb38866e105fd48227718698ee8dd8026fb38123deb2ef1124c89c7f22dfdfdd84b59826b86c6d4c6cc87de7b96fd8c7ba9cb10d4afa2a61f55cb29cd19151cada39323742ead703a9235fb625673dbeeab9e4ec7c7617cf808e45a1f2ec1154438489dbeefabbbbbcaf3d8ee2afa04e25007fe2d0cd213e1d67f32ed0aceca73eb1b85a1653994ff59097da15060ebcc0b5d3f249cdebb2bf6b771a010e667363ea0c7b588db3938e2f3e0ee5a9367d772ae7f79adfd06fbc921afe688b1909ff12897841aec46cc43c2ab04638add0807d75893a25b1fd70cf86c8beeaf0dbfc1e7ceb8af27e66ea1e01b6c0ea237b3541eb8947eca6f1b8e2cec75c26fa6fd8afc555fb9885e66e41e04b6c1f229bf0b5e66b2d34c70a6b17797ec7f104aacaced86cc049680e250ca2fa92ef90613f03900b3d2fa5a7e3c471e53bee7fbf1979fc71f915f10fde01cca416d76ff56ac59607e477e5a68a4515e2e421f27d5eb83b07f5e9411271c0b7a1a153ef2be12bb5f0df3f0b137d4b20b68e368c3099bd2778dcd0f796e4fefb7d0850d0d7481250cccaa913e6e3096782ee20920bd13f20904f7e92c9e756b906d37a226a8aeee703bb9d4e87ca8c10773fdb30630f8b01e7bd4ba5edb27fa6cc66aef48fd8cdc202ee9be869afe43153e67b4a2f97f816e85ef8f885384eb19f375f8a2937d0f2b3d13f91eabace65a66defda6cb19a9f36301dc74c079e7e85839f6f03e126780be09a781a6d24971aa903409ea89a3d553e0ca9c99d439ba16d0144ceaf6bb7cb4b147bc3b406ff4999ef0d80fe8bdabafc071d845f2a0a3c6cfa35a1fe7aa2d09bf50bf3ae6a7584a2b24966ea3d17ef7ea6a35f6f84db61d7fd2765bce504bac2f25efa53607eedee3dfd509a506e4b584969be81f5ba1574fec514e23fd20d1cb6cb090fb60e3a0b1dfc1a7837c39ce251e3f2672c0e59bdba4efb277855fd7541fafeb84f35b2e793aa97e1bc3f753086feb02733f73c3facd95fad17c6d2fe53d8436bed45b241ea9d6af1be6a247c78ab48b2eb0e42ccc1ad40f84dd0f2a8eeb5bb8c1e6fd9e0f77fc8ede6cb257c81b2c1ce81df4f3d2f1688598c1255d0ab17f578decaf96eb46695805aebcef43e92b68a325e2ef17c505e7d451d8fd5087fdcf63d586b645c97b8b5b1fdc53d18b1df8a377ea653cbbfa2f8dd67b5582433f545f5b3fcce77dca3c576c6555883c7ad5df4ba2e9b0a27cc8b1fbe623aa77b215f02aa9d45993d79ead842f7d70f72b8ce1b7d4d309cf17c1ef5ebba267d7fa4851df9bbad046e4391f26e382f3007ae4be86719dcffddf1146e0ee5a6d6ce4fdf558de692c158d455e33dfdd8fc5d9fdfbb1b4d70a42cb8e0c39d7a27c0a9f5c7d6bbf01e9fe11972b1bb8fbfaea4a9d77cbb81fafb5c8092beaebe3aab5bb39aff9bca2a6c7fe3a8e313fdcdd0adad24d26b9dad88a621aec0ddf42a913493ae41174bd6ae9cf65e0988d8747c41c423b42f01cc99c41fb0ec876bd68576822d175a2414e3d0a21eff95289378de7963f88b3c3f0b6a502ec3bdb7bf7f39ac7b8b55ccf6e5f4f2cecedeba437bb50988cc7fcc006ef265b6843c2a4aa43ccfd15c5d0c0e62f341953cdf8f3712e538adf780d6983f86de16872ee88eb6aab01e1a167de9675cfb3bbd2bcecee2bfb43a59691bcaff09df483b1364a68bc2a4c72adc8f7207b74e99cce6711bdbf86a33847fccd0f22fc8efc2a168af8bc1e7bcaea8ee3c2d1f1fea9aea36c8ec04ab4be48207cb29fc2ff279d25157d79f5adafade46aab6b26f4bc9f682b31defb20f836c7471f3a77fbf13fd2d5c9793c28b49509a360af4d7640df45d4440df59744a5ea60fd27147b522d4af89451f2987b623bc1a3f1555e27da31706f34d149fcad7e414f5f9870ad9d19d72716da653b37c07e73a77953bb6199157bdc4b72768c43c1bb9140c7c0e56bb6979b988c0ec02c7dfa5e3c2eaddd9766831ed863ae14d022e45a4705386c22abc944dc6de42693fc1ca2fe2df831d3b08db50f9af78cbbe39f6a9f4c39b7cbcd115ce776648c31771296b0e75a139ceb9e78c4488f41cebdc07e987be95b5139bc173ad25f496b2d5a15b1d03a774315fa3756b01bbd124e7a514c055f83175e55e09bbecc35cfca376060febf959b7506057177ade2e18572b3973fcacd268e82dc6c3e1bcbdc6c8e9ebad81c16cfb5ce0dc9bdfab57e9595ee1971dc783fcbe927cd0cc3db21efc77e2f11d345d1ada458cdd3ea19f2b02fcae91429a6e6ee0f7c3f8b4cb371c0fd97986d8cc4b95753c5bee421cdc3a406b69c342fa47629e51098c48f39b3031f5f5ed9427b26b126e58c385db4e144f6ed709d567bb29079828aea008cf70397dbfae8ee44eeac506c6d2df2e64629fc5d69bbd733f8a4a5ded5aa51d7654e574b2c1bf229acd2e4fbc5c7323e4ffcb87e13f8306b53cade8433d7c68f436be6089db6b1ef9fafe4d320d775413f5f37762bca67a22fd8836e43581fa50e767cf840cf50e69f17e82f5c233fd18c6f3ed53d98eecdc06554887c82b520be13e4de0af07a299c0b68e6557c8fb5c3c47a0d26fc99d2725b33ea3f27ffa596fae1ed1e1b914654fb4ee3fdf843e4aeeaca15d8f4e9322ead3b9b1397cd83cd19e4e6bfab4f39466dddeb0c86a78c6b2fa98207271e4edcdbf54a1a143ae11cadac9adfdaffe7dc493e71b8ec7f281eb8d4cc39c569525b6fc6b5f9b691f0e5c2ef435c2b9c9c5afbc1eb4fe89b6fe3b12c74c57a1579f2b3bb5f49ae8142c77cbe92ad1af118d5577f911ebb7a238e99cd9aec81ab8fff686f77b6726f471fe56c6d325df654c643e5f9deee347fb2b7179adc6f956e6fa73d5be8e0508d47eae4493b9356c5ffebf59424e47ba5377664acdaf32bfec6be85330ffd8413f098ca7d493b18f7f591830bbb9353ef1af9e36d2c23b126990fdd06f5ed05dcde3deec80ecb4fb5059e63679708b585063e7139fb8c9be9d528384f1bffd657cee9c0fd40e0ae51a3188d7ddd33965c4bafef4770adc399e4960c39479111ef861f88b7b826a5323cc877e69f882b8a3982b3ce7b25dea6b1e8d7614bce0bcec7a436a4696608bbc4cc72775e4aadc3f6efbb5ac676f96d24f2498ad080f3663634b34817ac3f8ef35ef0f375e3c82b398e9ff7e3506eb9e88f96e3e07e178d2350eec791722c4b6f1cd3832ac721389fba71c4e78f8771bc975fbf0f3557b8cd9c85bfef343637ebfd5fd98b48d86e2dfdd6d57eae0c9c38dc76e9c4051a5647d2331887220e09e91e5be245957a22c2ae5f070174428c8dd1ce4777570e60eb8b9947fea9d0eb2dabb9922b97d3baf5f382f1641d134f4a634dd63cc727b8ef38b6646bad5017c84d85e732bde8c7d001ae36580d8586385bae45ef711b2726f005c8cfb2a2e9867062a74b4ef9a760767807e7e99a7add3cf547c7a7ae48fc77ecfa62ed17624fb74ad31e0b3c04afaf243c5f413694ece0b69c31a991d6fa701c332430996f6ee380072c71f40daf1bc5d1462d083313fbb4776c2355f2dc77fec8957058acd4d1dbfa7d501287d32a947c04c457e6a8e08acd3469dbcec058c541a94a7eeda49ef4f051633fae890b9ebdbada08b9e7451613562baaf432ece17cc03f2af2c08775853e4c7696f96ded0c4c572a78d4f9b978a667bfbd76bf2dffc96f2de2e63157f1f9957288cce16ba9ecfaf6c393024c51003c76f2aa534d65015d77675b0a7eb3f860aeb71ee1132ac40b1768967bda59ee334508ffb80497c8cfe5cc9b2dee349b2567d247f72e59f65957ff84ba5bc01a0bbc1c6a4831a2b387b675c571a4edfebf0cd9a114fd64539e5707d787fafa49cf5ae0bf84d605fac1fd20f2bf1887cd3549f61b7aaef29b7bc7417dd5d622a7e6c4fe19f32b591b1b47f84965b3a45a6b37ff6ac595ef6eb377b79b37f43676dc9f42d327d03de305dfbfd757c8245fc969b850565fbe7bef46da94e805856e98a80fbcac7f8fbea82b79e807b733239af5ea4ab38e13a610760e79f004fb7d7d5dd37cf083e84076cb5fc734b763a93765b3b89ecbfb0bddc0e102356efdf522f5ccf75433e3da3aff64fed5c4fbc17d5011772857aabf091fa008e743d2489f11d65cf2caafb79bae96a058963725bdae3f7f5f5d1d4e1b822bf228d77990eeefdf05c70c9de5df2ae41acec43915757863bd94d85c8ad766c0dd06ba17d3b3eae083212ef02bc7b3ddc00177875d5d30c39b633f117a02c47d15140af880fae7a4c4194bfd836d0cf1cd0b3ce4b33b0dcc7d8a35c94a3da55cdec15cef4b47e6bd44cdbac360a8d48710f1dcd4aca8a0894ab698e349dd6b678b19effd635cdb82fb1094ab1c36edfbe1351cc24e538deb441afc0b68ac03cf8e9a17f2103ee78ff0ce59287a25091b74e83dd79fef5b894dfb151b2027c0a64368961c33ea198dc936a5ca9cef97340fae1e7aad9bd47abe87594119a0af42dcd7e731e18af688eb37b2f94377eb00fbda1fff91b40c5bbbfad13e33cfe3a93c2f66a453b3e7b3595b76834e8a73437de1f93eb091b5063c63d8a4aff4aef6ee96e76417a24fc9c21ad219300a4faf999a8c6b63099e0da6bc8a3929e2d581bb35dbe733449d6c0ccddda06c6ad2ccae8d541b4d118b73ec65680f0ad2a658633d097b19be6807eadb3e0b2c847210386185302f718d1e07f2016d8baefd919ba216114dcbb3d0e8b4b6d95415b97dcd3be4e89b0c6a9d726bcb75603bf4fba6a8482f697a3e83632ae7bf3fb7bea292539eb0fd06e41f1a3ce6dd1d0e42af96b0e1b8cfedde96536e98d6823af612dbc8609fdbe7a277148796216acef4f79935a1babfd0ced0bafb95f106bd2bfcddae12febd7f723f4b2fdbf33632eeed342f16029bf2fa5f98779c8314586cf821b5f85d297a2ae372d2c538a7631192ad080a0df9924feb98f72579d06e0fd6bc3e2574cc4a73c0e3b514ebbd61af545f8e1c898721db03bc26fa46b6e8035775f09b05cd46f1a86fc3330af8d38163942f3ce68ca35b7b4f1107a5229f119493ac69fdae36ee518d627a862ee62125df3b127e8eb5363d89c9e7dfc81f617f7815be8e09fe9d8bbb2fdfc05db89eb66b41e5f1d43a267e9c763e4c238ab518d751ca761dcfb7ab5863f7d6ab4b482d4dd8db3bbb6c49aea886196c5acf91bbe673d5c75c251b7d37a79fd9f7badd1fcc88faf0a1f153ee53d4b6ba1a896ecdbff80e568f03372967e317cadb5a12530bfd4dcdfd5fd871832911f6bc807a84539af37736d4d9231e2dbf01e7007ec32c813fc5547015d2f3d9bce74ae48836f98c7a95937ae280c3a9ff9e6ee723ed9549c9795fffe25cad3c8973cb8157bbffadb52cf5cae053fdfd7b7eb6b6d8bb37235ec08881fbe5efdfe7b33da9b19eef4989ade05ae098628a7d744c97af8b3c64978c6ad4a16eed810913da47e5c09bcea57def72c08ce758456c3d92bd8be1be1e7a938e13c67dd013c2faa03573b78e7a36f8e259afffb9bff3294e67ef88c5d6330f18318d344a0c7f4f3d2a713874242eb9e3965b9be83dfba50023e6def3ca3531bde74c831e5b0ddc98b594bca826f63ca19b13cdfbf712bfa7bed5fb75c37b09de33f8e63af731687fe5b66a5626c04c30e2c5aaa77fb8d73cc6f6e3500f81f193318dcbf969794c73024ff13a9c4bedae7e6cf4c27549eb76cc22268c87663ce9e5e8624747cc153636f6b4afbf25dffba40e05d6ccebb335b3e43931ded7a2fee59ad10fffd53583da722fe73363fb083cde0d7897bca694da90455092d6317b2f842e8b959b859685a78735b0b9085c02cf85f1f80939a6503707bed00bdeae7767f0b82accfc053f12b94c4fe437c0b572770ed7705cefae0e8da70127381fa3158d3dfd3073f69bcee7149a9347f2c1defa3e985cff62aed33a39833b80f8eabaf887cee33a1fae767ef327a4710ebd95febedb20d67a124be9e349ef3ebc0771d5c5a18dbbfb25f550ca60e31047bbd171c4812f76a8c9f598444b7ad683bb356fa2b7dbb9ba5b17f8ccad43fb479cac06e2faa7a1f84ee958ec9769c0ef150abcbc27fc6a2bd00ae2cd64afeeee17fdffdf9e1b669391187be41edb31ff4fed6562bdfc4fed4a535ae0f40db5d5d7fe8bc6735d5c3b369bc85ab7ba24fd8aeeddffd97dbd64c3e33d6f6afd137ba6a08fffab7353edcacff5f4cd34fa3fb2797f1cbb6a43d381cf92509ef5ee3b9e8f653820cdd4cf6bc58d6a0db9c52ff2aed3ffa64d0d7cf821c4d113d77798a3d2b4dfb2f0d75fe5599ef9fdb3aecf80d77b0c163235436f8c58479b058fbb7b3519ce61701ebbc978526ae0e6ac075975220e4f7bd8fe3ffc2581c9e0b6f19bbbe57917b28df5d855e75aeb53fc1ffb3916d56137e516fed8f998a12f2201362b7a0596ace7af885e79e4b69ff946c0ad4b2c4341dc0fc873d3bdf8ef0f2f4fe20f8eb9ca77074bd64c95577c5bdb0d8bc6bb9d07de7fbea6868c7cacb0f9d1fa51b5c09fc9785a13753c5377775c63e2532e27f347ecb146e33529f6fd5efda4d0f3aebe0c9f2dc8f7b64d9ab853b6ab177f9b0b42ff7ec4ae4bf395632c56fae128f95bbfc8a186cd5fe45093c349f0b9584141b86d1a63c473aa8d0dfff570577fd0bdbbf89af6671b3d2fb4a6be8a8bbbf3b4abf9eff2604f73063fc5f8ce634fdd7cbd0e9fe5a53a8d22997bf5ee7c94bb589fb96134f0a63572ef07d2a64bf8bb69ac67efe659ac73f76e7a63203bbd31cbb8e3c4fdea79ffa31cbaf8fe811b96372f613acdddbf7c9efb5ccaddb7fefc8c124f7297e3be7f6eaef51afdbdedc53b42eda37115fa8e3fa9871bd81d1dfc8777e7889cd5b7dce45c080b270c2f6bc2ee84427f30737dde9f336e6d9fd04524df817a9518b49793f40aecf582c744c2ffe1ba349c9ffbb0136b351c660ae2b5480d7e5f14b7b28c74b7413e6d839c40087d9c3de9614475d3f1da0abf3607676a64bda31e45bf7b75f71cf32b6c1fcfcf0a6c5d1e72ecbfe4150ff4f44cbed9ac8c55ae4de769520b79e686e9ec453b58187f09ec6533fe867e93bce9f73789e37e6337a2eec4beb95a899ef4689944a4156d0dd7e8cd89bf3788a1d7d30d342e875caf35b4ecc274076d9ceb98f6d88dcf86d48b1558fd0bf01bbecee3ac54e8e3f0b874f0f958493d14f5cd414d3e1e3492732660821b543bb43e10eaf30afab6a2c44b17b372c2e39b2db8672d754ddc1161137e783ec52aa1ada64243efe4ea0e7afa25cf5f36db500d6a88da60e3540ecf9b47da39409e28eaaef7ba147c0cb3b2722e946b37fc84810f26113d18deae9cd984153e37e0a08e6efc3ad3ccb415fadbccd3fbbf8dc6fed4c3313bb8bbee79c2795af729e59199dd69cb141c47ec4d538d7a982d5f8f906f4e16333671c3f4b5fb6d39ebff3657ec76ce5d09d73b0d82f155de7716b5f79d9706b3517b8d78be9e0d5c9a3f69628574ec46c7beb95bef2ad7d45ebc0b37265c4e134d4a1d7fb306783f2b614b0c47b187f85b1c58788eadb0adced5fd7d3e498db1183db1e757f2e7825223adb826bdfac027537e330e6a8c6bebec298e6aac097016d90ce30a35cae1b6e3f9562207d430e20a3add22da4732e2954ce383a8cf6a5783d5c85f6ee8fc733b8ff85e0b3e9a9586f3e5fc3b95a6fbb05e5017618a1c03eaea8db45b0972d1ac29454daba9cd3c28a78b9965b8a1d9fa4f02fba88f55e9f7ebd1b2cf795f54f68be03391fc8dd17a5f7ece8b6be773005e47aa47b56b41f8451c7741717aba241e950f77ef0d9ef8d247f400ad435b62a7fdd09a39619411e648f9c763113d6e892fbe8b41798fcc0dd837e82594621f3042634378856a18723f96bda41ab464462747f2933a1f817f55dbfd42da6ee107b90bed4c737034403f8e1757c459d6d975573d9c65ac17b08e872a18535f747163d5ea94733e9ef184cd4ad2c2a92734ee48e667b88db7c8aeb39babd527badf013defe0fba1df5c89a3c4284c76a43ae43853a0f12a799705fe27a667d26d238fafb4ffd45a21f6042fa33d39d4cb8bd43c9ed9d4ab741e1615e9fa130f829f1c6ee0be2ae2a1059e1bae2d60d2398147fa41023bde8e876a746f0569d3c55315d759085d6cbed70f0aa18367a793bbde79bbd4ad29dfaf9288faf5d34346f9824cb1c1cd4abdc235f63457e0265677f5b9f0c67b95c97fc1bce63e1bef7728b52134880e2fe0a9b8091f26576ceeeb087eda7248df3358e84cf671e43c9f3f9af09c9fc031ea393891e2eae8fd7e7a6fd67e7ff2e3c1277e09e5b78ffa3c7c07f48efafa5c11b84fc9d76e2c80e18feb4300ec1b69dab6be4bbbb7f47cf78bbbb5f7e81debce3b0d88cfd6887625be5592616ea81b95be25c717b67e4e54a166ddff1e5cbbc568ed93af0ca175f0e628e062dc401b3b4e75ba7654beca79328b706ff4a2c7b4671cdc8abea7c04c2d58e8908f4eba7cc9f8956aef6f88a95f1ae81d991fcc947a6f1ad5f06b7abf7beaab333293bde5e0e8692a055c0a69535a7d1c2ac79f0a0e7f2337a1f37e56e46fc57af8bd9ed952f75ef2130b3fa06231d9a3f8022cd08263efad72ecc53487931f37d94b2f7bf2ebe39a3034417c1d12865562007bbdfb1fb2273f3e0fe5bbd186a7406ae5016b591f23b106596e9176a26292bd4a653fffe7f3a3777777801f6aa55ab9e4eb96e7f73067c30bf28d25e7d2aa393f5ea96d70ee6d8dd8bf97ffa3b85ff2c305c86b05d1f6f1f9bcdb59f211883196638febf48cc69e696ad8af02edfa1afceec5a8a29ebe4809a7cc3557855dbde6c25e1b99e0978afc7874e6b63f4ac7e516da7f27bda4dca8dfd8bac7afc3e2b4e3371842d7ccd346baa8eb31dfd9516c119b6a2efb63be88c5b4ab91ef538a59cc6b417bdb577159c0fbeb1dad903cafde07ed59d06afbcd7ddce430216e8b886923f22bc9766bd7c9723aea7001fcd87c48f3db880c177c142c231e104fff7113b68e85598cbd583d8714e7664629f6074dd8ab5ce15c00e3cc9c0fd634573cea516efd7971cc462ddae6f145601b4217683301f6c9e778a192b4db52f0292829b488e233707a339fef03d14bbe832ed9031690ec2fc72b8877f5ca643e9e6230e288292baacb2625f9ab569d6dd327b5f347cc248ff795ec1e67d9dbf3ffedb1fa9055420b3112bd16e38874c5c2c68136d7d9ddcf9fe1c6ce39fa5f24eeb3ff1e2a55ded7ffd7c716adbd10dfc01b171af80e46ef58038158636dfcbbe47385f4dddbb9d2c6779969ffbc9b0f496d50fffcab4b7e36e6d092fa443ecda1247a368702372cdf453d39b5cb297828d423e691a79cda7960f93ba94ff7b04fa3377b837d98e69bf5b3dc46ec290eb729d11f24fb3333cef9fcb91e92c712bf2adea9728f5d7dc0e3fedf1f8beb37d2864c68ae2511307b06719e27e5c409feffb946fecdb1f3d80b2c311f4dab913c1edaf00c8efe5c5317bdfd8445b30d7a0018edcb3f9fd8c95777571f916fc27939ced37ee984e50196ddce755a33117b75a44fc8fd525eb7cea14f1d5f86d4f33670f502da4e0ffd4f9b6f0ffd3ec877a9723f564d8e190cb6e53bf2aa453c247fa70c781caa0cdfd6ad8de479b172005b1bf9d7badd0bd02fb4aeeefb8564fe2c811d2813be3e95e16b4eb5084fb7e47d63a103b62c66f54ce432473a34c13dcd3ca5edbe84feabd9e1beff8a7c554f8fe0c3cf1ccead746ebfd955d61f7bf77312797cc8e3e487e75bddae471e57e29efbfffd3d53ff7a762b6b1693ee0ed3bed8c7124b6a1baeef6d4f8f5bca43bd7ed8e57abd2b6a9105df23cbb1abbe0e32c9fd3a86ff6471ce76ae1f577d644f7c98d280ee6979a17eb036ae427fe28ef838cc173d850ee709f586af7c212fb1a5bd2ca5cef2c814f6dc1a743de19ddd7476345f23b329d0cba80ddfef6a31ad1dd6a0f55c76dccfda95d6315bf6f6cafd12985bedd79030680e9b1ea019a31127fad1450f4ea8be72ed92d0f29e62161b1b73c07374f4cd94ef6d1cdeeb07bf78fe68ef83eba5e3a23ed1788d60d7ab9f37d4171f96af4bd15f630486877e9584111e22a69e52e403f21d6c199f4b8b707aba923fb077b71eeaff8b62ebd1bc12ba6e99e9288c38eca2e4f041389b782dfbb0c286cf8390c7fbdcdfce740bfc3217192fa854770fec6f2266e938228a3de55c781e18fbfa997275caadb531a2a7d891f51b4f68b4295dfe81fa9ba997d00bab0b69c34ddd24bdd1fc5fe4166278aef7dedaac70bdc5b7391d0b31e7edd028a967c2b39ca0266e59e8a4f377638958a9dc65e0e309892b4221cd35e8d46b754c71cfad545ca11914d407f2ab22a13b514f524d0537edc101f76c2fd7004ed915f5db67bb11d7edf038ff4d39f6b6b6c9af95a4c617f90f81630a85fe7d59cd258f4209fd02c9df09bce85972a12e1a86b5f451125756443a4ae5aeb6c15f946a9293e0f84f7fbb9c9c091f617d14c0a7f8df1bac8f5c2f252fb3e03249e93d3a8dab5bd0df591433cffef4fc7a2979fec04dd7fafba4a97296319f6e635ed919d7b2e6f960ac918dc43bed5383be9d51eea161ad5cd7d823d05bdd8488ab166c2ff8afbc783829b7d0f953d4ee37e47735d5d3dfac0df99ba6fb4d41bf29e46f9633e2d9d2eeeea377bfa1bce5edfba7df78490aeea741d1f17c1b62dfe77bcb059ae24160753a4b33f401d61fd4bf65a4bbc100be9023f9ed4f37d9d3172b03e1d3443bda0f03f4b3973b6825934de57d8577b6d3c9674223d33753d2b2b7ae05d90b579f7f081b97868213821fff4815d13b1689e356d7bf1d71fb91ef4af84227d8723f963547b6d04af2a9aa41aa004fe47c88def25a73b73534403ccac9fd2c80a10da9e7581f4f0a5d72bf23c77d2ba1c34afc5085695ff1b7103d75da105cf3e089bab8fb52f2cf53fcf3337f72cf6cef99b061adbfb8da7d87fe235b4ff1be2b617305d60f9a23ac346ae84e5ee0cbf9f1551e77e267bf3fc8e3eba7bfef8e3bdab3df6fbadf6f9ffdbe1bdf7af7ecf7ddf8cac7df732e775a3bf1abf2273d589c27b912bdbd6e601fd1ff2bf2ed627f0d14ceb53613f8e49af636f6ba869e62b2913cd5e2fa25adb987bc96beb9517f3e9fdb4ea8866c4f9acbcaeaa320ffb0abfba7ad4fb971830d4bef342deb6f397143f8817b83d676c6b55a46e03269f791973bcca962f6346138c70ff5eb220f068eed93d0fd6efd0ee317aedfd5169421ea1de328b0e8992c2f4f3ce48adf4b816b9931657e444e3af2475f9eebf35ab90a3b9de47bd8fb93d073f8ea5868d9a509de6a5ebf98b9611d66d59cefcbb9024ccc08b514f4d5f7ff3b73e3f384f826df5cd1cb7b2bb5eb240fc17b5d7f70edb6c4d273d37ef76629e9c58d5e33e2caf2b59116fce675ac7119da1a0bf9188cbc62ef25b83c84bfb55cce6cf0ed694c62f0a14153ef811fe075365eebb18fa5093eba5f5af0a82313d7c03ad894bb7f7777f29db1f536658f9cde5972e8fc1ce24692df2554aeddb8243ff6516a888a712df2cafec0b8c2f832f0e083729cb47375f736f1b45ca7c0efe01e41b839d13c7921dea0f61dd098cf73f19dcb7150a5d08ac63bf8e94f0f8afff4baf5380ceb1b34e13f69a6184cd6b44baaab8681b5b8d3c342bf75e042c79ec1df740266098cff0a9a08cda7f5d1abbd893ef7ef03f8ed8e41bac6ea8f9b7c6fba8d3870c1dae3225e23fd4a7b9f2985c0c0514d625dcd1ffe1da227d376c3f277c63979455dce917c862311b346f537a600d36b0fc1d9180aae588329d109dc117e3026aeda932ab07cd152e4092ee8df8726d54fc9e7aa8e8f119e450707f2e9562a9c23d3887685b457cbc07ef421db3867d6c3e0fd7624bea7f8c8cd8ae3bc5ea8b6b5fa7d3ee1fb2ee3abe0738dd5c98b6ec346cbe70b1af873e23a0267f9f87b6bec6a9b29d745a4fa642a38d057cb29716c8685ce7fcff3dfc45965a4f23aacbd4e6b83e37ac2f67f390e1d9c5541f0f87b75ec3696d51f47975b9d2b54d39239d4d6ff4f797df331df6e0e88e3e753deb58dcbff59eede6cf7ddcde3b542810de7b146565d84fe38347c657e56511dd9f7576b8425f9b99c8c26d0f891ba7bbde32fb7116992978367c719ff7dcdf3134502ed71fe6eacd0b08e5fe47fbbfc61fc4bf5ee75b58da5e0ab51d6bbebc4a99c23d55b9bf6df79650f69cdf2e36568df1c9193e1c733d31eaee1ef89dca4ed26f6b7dcb42feeedfc4139e56d36239e0eec29ed77f747b4f7160af826bcc6143887c46aafb1453e284bc6acf7ac46ccd74a3d16b949362d660cf9a64b088e9e4470977b31befbfc964bbfe06fea398d6530e8957eba663df635da7f9bf28d38ac9d8263ec4be028adb832051f6390d2378d06b98859a03fe8f9417aa398e12771c5b8f90cbae3c4db8bff8622b68e66de84c9b5796aba3a1dea7c5650a83fb8edc92b5b073e8855b2ae05ae19aa2fb057774b3e6260d3fcdc4c16e8cd1173de480dd94fd0d536763297266c91369c909e51ef7ef61b30a5f27ebfa986d7be1b5a7b4e75babb5f66ce517f1e1266e7d5dd5defee5784b6e0a669d76e401c2cca4acfc9ff0a6f9dbd5bef8606f619813fb66f2f0a707e9bbf3aef82f38226fdf2bcd2b4dfbbf3bca7e7f982ff4891f7ed8d2ff439d6312bc1ed1c390369f754d1231fef3de4327eb21de600e5a7d554030f6ffffe82d3a9ccca3deaefdf6f8889bd86f3752c384f13f6b51974de8a6b217a3966c1d626cc019b2ec0f11a596fd0fae93f477ec7ffe734eeeed710d8d26c8fb9dd7b369e33226c73d8be47c28d502d290be70de18ab7ad7fc6eb8764cf0476c451c17991edeaafea63b3d56ea03f8ec3abd895b03ee328d99c3aed80b2d7e750dde176504b040f4c115f8d87f73175b511e149ac683dc59c7d7e1df70e57c5e7beed28ec2337a55e34fc87206f48d7553b4cf2593af9f41db4efc4995bbebbdb31e2c659243878f7ee5e72331d5ce44504fe79e600ff1c9f35f09f387b39171a9a0b4684df35ddf5511f8862ee67f97e522a22d662d335d714e0798b0b03ae96f24a8447f9e6ee148db8f0bcc2a0678c98057b2ac6371f14e48b87fee88a1e34f1bc6c97e9985be607ce0bc43ab3e2c9f95dcc4fc23356f57b163eadc37b6e18395d5dd4c1b7b2a11b008e2226fa6a0c3f7174313f3d60e717a59c87bd3abdc8c70b7c9ce67dbca0bf3319cb7957c635e1ee550de3f31376a05cbee2ee5ee55a2aa42dac55792ef564f4eedff48efda49c751b0b9bee9f8db99b9b8233c3a4b8dc2e8392741424bfbc891855706b0cbab14e1fc6ca79c2d2036aab8546cfad7b139107e7f3fa8635e02711ce857ecce3fbb1a019e30511727f2fc03b3a2257325e35296a2e14aff018c0028755206a375cdfa1f7ef79b095f76799061fafe4da41bec08dbc44d08d6e6c9e53f5c38bce14e5e13d76fd271ecf4938baa8a196369b89fdcb33ade35ae8594ddde4f5826773eaf9a30f17f4ec0ac511a40faf7943680973cdfcc9275bd490065a77dd6073401fd832967341e874cb7e0f47759b8decc3cc0daa59b4be0dbe5540731cb8d28030a161357898a7f6a7fb840f7d25fac67cd13752536c491c737d5beda873f428dcdf87ffadeee6d82c9d22371484bc2770bf46ffb8fee3ab77d49b73d58dfe6d2fa718379ef1f13ebd63a23efc2efacc9883bc02dddbeabe71345e6f455ec2af2c1cbf7b868e07cce9ed21752672eb7ffdcdfddd5c3ecf3a18f7c76fc7bdf18b67e3ef69d8adb131ecf3027a05cb99fc2ea72fbf4bef7b3eccb3fe7b7dbc4fff18e7075d9bee718dbe546df0df9acf369fcf5a092d959fc5ff743eb7fe826596cd98f88b2c7549f535daa78c74ff43dacc52d6e4467cde7ada81e7eb84cf046d2275b20c04b7626be7dc2e9668d7ead06d561a787d59057e5a87eec1aaa541f8bdb040dc9c388db8afa779a45d4ef85bd24c8fc0fb6e6c8476a112fdcbbdb41e7bfa6192dfcec22e46d185deb919ec4bfa76de1898e03fda9f14cb08e242f5eef6d3bab5231361abf87d7afb4af9b8af74dff46ecf51c7812e6afcbe6949bf67257a70c67938d79163ca42f84c2351d36c2c43bc2bae37f8b184be5dcf87e9f9f26760c273f8e8d23f1edd7afb89b0c5bad9d527750b9c3fca67df7af48e314bff5c9feb84d90e781e88e7aef8be7964b45ffeb9efcdec657c161cfca6a921dff0793e3013f3c1530f9d0f24df456ae409e590eed660f98889d23a4cd43f3ac6fb41caca3be68473e9df3bd3ffb7f76e7dfbb2f20e9fef6dfdcca46f9f9e4a60b29f1c6fed4017a3951be0bfd9733bb070c342779b1fc853b385e20a0e77657ec4df3265cef3a9b29f36218ecaa81c30513332323384f60a343b3c27486df47eafab01e5e4ce935ce29cc4df61abc0afb74cc08b545d4b13fa50e781273577cea2ff85ea556b51af1afbb1721578dafa05fa3cf9bedd87eeb5cdf2ead7631ffb9ef2ab59a11fc4be457cf7523b2cf9457c078eeecde433b2177d036d3fd222e4e7712ed93ca035d7b089c8019621f8380bf040b7eb27d80cdcfab5c37ef0eb8cdfc8afafa0e3869a3471a9fe16735160d842a3401dfa6561321e47f6f5fcee708fff0ff3aef29c9e9a7e5bddd529d8bc57a714bcfed10faa7195476e838268e8d65e437b3af304e66c5c60cec69b2bf54fbfbb77fd2bf5dbd2749ed646b200f92bf5b626bbf8a8274fb93a5ee7c7ba421d3ddb52dfaa66ef0bcae9f84d891ac1c2d9973cb7eeaae9de812e7253dd1eb1205e44789b662cfb77f30e6362504fb8f8cef0dd12eaf9883793f56e387be4a14f93b922354d50c3d56da3ecb4a74ea539c07ec2b9ba0b9973fe2b0e6596751ccac5971cca6d5c9512ef2af41632d3fe9613ff788f8fbf2eb69ed44c5853fd2fab982eb5a69a7a10fc46ccc3df6748cf2079b93aec4675240e6723de16c00dce2417d727dee67aecc71b707a69c02d05714df155797104cfa9114d3b5cec673c2c0bf3c0020ef652d0dee627f69978ce7f3bb31a5c3b9a3c1e0fbbe37bd4f7478a3c1e70ec4dbb77aef204da73a36fdd71b33baecbe383ee38c7d404edf1421effde74c71d3a1ead4ababe6731a578d6ff21f4e9cfbd5eb193b093e1d5dd97e887ec729e311b4a3f46e4e168ae712d0031cf67de12fe8d87f8ca40ee9d307a31fefd5d05beb88f5fedaef15dcb250ff20658aa9fb4a636c09e3a097239e53597bc5d728e9116ac65bf34721ce00aa498e7bbfe6c1ccb6483671982f3c8f7cf721cc05f21de7074e2ca6818ebf0cb22d716081d0fe96b02b34f7eaad3cf41dc734c385757e622b8afcaf85eddf90c8b1ebf3fd7f5ed7f9f8e37331a7b41f79d48232711fdfa1eea251fa41949bdc79e023cb5df701cf755d8685b2ba86fc969ff1f7dc9b773ff9cc1d373b4e212fcbeee5deeb3b06f38a7a858ef9cead25d677e6dcff115cb5e8673a510dadde3200e452f6ceb7b889a7583391e041eed1d1d462493f69a014fdfd9f38835a1c05ebebb5b0f3e5a00fe18e1c3b31372ac996277394d5e3b711a1ccb15aa09476c26faf21ddddddb15d55a264e82777dc7e77614fc69b6ecad5a868ee6400321dedc9e71c7885ee0cda4e0da2b1cdbfc563cc33673fe5d3670f70cfa3be99aeb343de029c0831345efa49b350e93f18de6aa5736358e5f1e8eb7f6eae6c5271518f32fe617e221c199867d92be9113d8ce739fe71734d99365e039fdfd3c878f03ce46a12366711da93d343fac6f79f88abace09fb97ef9fa1ab1c15b367e7ce8fccbcd37fb5d75bc2d3a8ee451e6b4cba27731c1ce7b530aee97672b7c4c5168f0c68751266d8589b9e87b9415c9d93dc40fdb33c600e847aaaa3ffba484af452932fcb6e25709ada48272cf9c56d6a70decd5e749bbe1d533e9f6b2d30e78b59098e8f339d679526fbe63dd683b45789e159071bd21f602747622fe6377ab74777ebe0ffed257af0b4d185feb6cda05d1cd6c382ec77bb16f0ff7e32aedab9ea27decc990ea99758b9b9820bea000e80726fd37ea8c8fd2ef247e7a0c3e88b9836be12376c05ace1c2e1bd3577588f71a8331775d052d623445fa31bb10dafd3e9f6648df84ea5f8577d253dc439b483b64e623fe17abcdcdc8a6b211fa1fdb8a21c12f15d8ce3a084669ec7e767787e6794932f4cef08ac4b14444f6d4446311c69570d5cad047770c4f46763123d3e74fec5d524d770b2fcfa19c64e25f2e4aeee994bc9654675e488e7770cd41ad653ec77d595fa6e0d7f27d76222ec6eb4127d5e6c9aedc77dbb60f8fbf2027b20e29ef237f97be07923bf2c3abda0275caf879edf8b91b48db19cc9de70aa5150cc4339b2ac62d0019c3e396e652613fc821ca3edbd115fd84f670b2d6ee2ab222eb3f6fc82fafc0b65ae67a1b05db9393f16840f8de2cb85e2f80fe23313b60cdcc9886fe327c7b4ab95eb32077883d6227184448f3ed79ab8e48aca7ee6776bc4d340fb1de7131c14b0797775ce7a9893ae78d048ccfb90629c9bbb95da291dce3af008eb681d5dcae1c6c906dfd55ef46bac49fd0e1f8bc127e7f152cdf9fd3a0d9771170bf06f2bf227d45792ae6777f348d66cd7f1107ee0b5a07da4244dc9c29c3f8b89ba7713daf3afdfcd79ec6957afe0d7e77540d5bd097ce55ac6b9c306fd7d6c4673330a3f72c95367bf8bfe94f02ab520943ff2653477dbc59ff7fb31782a2507317125b571e288ef41e0178fe8bff1e4de070aa87f265485ae5d6602833bf2e85ae29b6b9b0930e721ae29b8545e5d705f92d65ea8fec0b58069f9339ba35d4db6afa1d9727dea0319f684f881e0036d685c5be49e98d40833b96fe36b03e2616117cf480fb216c2f5e8b8eede3187fd15f8382b36796fb4e1ed0ef7735939e8981f91e0e19aad847db3437031f1fddf7e65d8231bf78a1847cefb361e476fa8185bbbbeaeb2b76f8658a89bcbfdd889f89d2719b82845aee077b6857e73a1c9eb3705eedf8b9dbe8bbda79aebb8bed7d8f2fa22068a2867a6609cc4e1003f35a4ded00bf4ae671d57a5c4103719b822b55ff2bc2cf01093bf31c109d7dae95e8f9be4af947e6dc1f960394e6558a0e7f3766e68ccc14267bc7ee1fba34996780cf944763bb3fb5ca427d67a634f644e52af2e146324a21ef1e398579c3fcf58575e23756eb6d5f101f33c157629bcb9bbe11cf91287fcd9485cd34d396702e7dd35257727d5a4e93d8e5d0dfb97759273473be19d79d9cc637d1cbdffc8f1195a6f6e1be39be5380be703c49894b73d779cbd5fd867adbcd2df8faee48de3dfb69793ac3f71ae67d55c68d6c5f5641d0a4c6a48bc5979c761fbc59e733e145453ede231ebb534f9fe385b57c3a6206ec320480dc15526b167d19af730f13e0703f8ebcf36d40a9653d5820f13b7f3d47434e23e654bd3e972e12206bd16ca5d0ccaf7e785a6626ddd72dae7b390e791388fa0d4a4a33ee3bf8f513788513f5ce2fd089542f87a4d39411ff63f8a5ff7e37f13a3de30dfa2a67eea7f3a95cd7188e44f9e3c2385fdfd1b9fd8de3b94e78d9aa879766dae9ba8a7932c1843fbebdd0547063801b5cb875c779a09df03fda969c9ed1ed7166d56c479944bbe58f68d8503d1df95b4febed5f98666797c215bf20f7df68f92de590a3e49fd5595ba915c67b89e30035cf416e1b758867d1fb8e508d895c8440d88632d4b9301673273aabef656f41bb1b3a80b8c075f608c6fe8930d1be712dc6994817fbd1a38c4c99911375490e03bb0f7927ab17d6da378fe1dbe45d62ab2784418db7a035fad5f735857a9a835830f49db4c9826f5c0ce4cd65eea93f0e5a28aea9753f0fbffd5b771f8b584ee21f5675985e9edc9f7a8b18ed6db88e68872e46b358a5e91574a1bc1d9e026b5b19e094ee2c0604699887dcaaba26fe27ad156e07ca23adb33ce4fe4c6e901f19b53d9da02b6430f3f28e7b211e796634fb555396f145bd87bddb69832bfcb4f104edd880ce0f44f17e878af7b585e11175e270e69d0e40a3ba79dbdb0b8f69865d2fde6946bb1657cef6955039eb2722f7306d71279689aaba16ecbbc45ae53de421f1bcbc4467ef488383fd4bdcfe776398e4b97b750e9bc4871f583f510ef78bd5ea1e1927ac557da05e3b59d2df52ec5e789d3d8d2af822d2b94397a17ff3e3711788ab02fd5d59f7926fc7c6f729f9bc8f7de7d6e42b1acae168567f86bfc7759cd2fe85f9236807337a2e6585f3df892ad9faf6e647ff12ab48c55257dbef6372be402796e5f85de4fc1f56663e055794d270a99e4d7edf25722c7419a7be128a2ef144bbf9f7c42e29b0b441cd5fafd542356e99aaafb1843908e3f73790c156f26e0992a1487cf5d6fe6b5fbd4b3fcc5e33e652d43a633c4d70153fe2a4f22343554ae45b70e884321b6048626460ea8d04bf3593dc512fb514318ca58157ad7f17022b9c88d94ae7f98644dea60cf85adc90c8bf22887491ee03a357e4fb6297a73d1e7ab1dd4a7fbae293485c59a70745737a1b9b8206cd5d5853e08615bc0812dfc2c4777655ff13914fd58d644d6f7c9f6de710936a5f1823ea1047988ef7a59a1873cd580775fe82961020f933239d05a57c161fe932529b82995b2020ebed668dd7f73f7d1371ffe3bf567e3f95cf06e0b1b6ad335c53a565c3d951a15e80bac2ed0c0248c28e1bca28bbbadf7e02c95fe4352835794b91253548ffd804d8a19e6e4f9883912a096acacc0f5a6c34ff4b51af3f127b0511e38f408a3930a1bffeaaabc867c74d5b1c8412ae06b8bdeba672a25d7bf33db107656b94a1decfef13d8eab7b8c87f64b83854c681fc411e537a219fd9bf4cc0e26d99a2814b9ef18188954f803463815399494780463ca5da521efb332f20a3db4e4eba8e907f96f7bf1dff2c4c71a5b76b91739f15565e9d833438d6b508ee3e807c5a4f6a040df641bf3d29a2aa4ed254cb3769d94c9c3df22068d12da5bc7139adb3f8bdd90e6e2e82327eed294385263311f63e2bc39ba35fa1c5a5ba1f21a3d1dabc9ef49f3f00e4bb948719c709099f2fc38c55369f1c5ef03f1fb4ddefd7ee186d1abff7b7415bff5c6a96e0bdf231239492fe65c857c7ea7520bab1a12bf815198f681f80be859cf712af811a62cb1856f62991af297a9acad08bb40b1d59ef36a72ec277b2f447e61166eadc997bf8f87d7ce372d05e60f3d5c7139117893e28ab9ecf9d23eb67ba64a7a2b33de8f007e34a11f7bb706d6338fd6c0e988e70c9374fff99dd48392fa6183a40446692ff53882fa46d8ef776faaa2deb1c75eb76a301e67e86e374d775cd886953efeabef30f69bcdcba77b261b85eef94df8bde9c1dda6741fd113e22b96958a18d1caaa5e2f4e28b9f4637abe9ff089047fe6c3bde2ea2310f9c79f25f276c24ffce63684a96af7cfe993df063f8ef45b2fbbfb6d387481b5ed6993ba8a65e5157e5b68c823ac03f86adf3fe49e723bcb3d85f13d4562f28d6568a38761f0790f61196a3f6c96dac88dd3758dcc9c5fd0f72f719782a362ec36e6a5ab298173a06a72f03e35e9d913188e13d9333b0bc636f6f2368ef2b80631ffc66a4976ded723d4eb7e2ebbfdaf37f648bbeb5d69786edb127cacf219f06e8c58d6bcd3877724b41a9cbdfd885325ee36f65a22479efc429fd5acebc5aeae4ce17a38b3b56977988bc7f7743b4f3e7d2fbff7bdda67943d1e6cec85d4971d9fc0757076f78727eba23e2ca8873b90fe3fcf4b5a4ec880e939bb5bebd99ababdd06fc37873f7db05f9347ed0cd673eae643ce9f4e94be1a7fc83efe4f9a34981ef1f9ebf798f3e907a183ae0460824ee579773b19adfbe9c8b3afa577a9c4fe23e42ab85f83ce4713c53c0f04c34feefcda77185a763f74ce5fd33c5ad7f8c6752d44fef439bdf1cc18d300e02f891bdf555fdd5fa423fc3f9a117e92c7aca9b68b250bef86d37e73abf33e8e63f1f9fc5c6be3604c7db6d8dfe5281cd833d3cd0da654bf49f49db612d58e3d15c38ebd8bb72c556bc7b4d33ddebe7dd83d24c912bf1a14dd0add7d5ef13e9065a2c039f9178efc21fdcdab7c7be4ce0af9626f5c828e05526ae276525fa30059f964576d806ee32a3fd27b88dba670b9e3edbe0fed93887fdddb3e5e4ff05f1157a4e43f96cbbea8a67036f39ad137ab6f197cf962ac4438af5d97bc6a0f5cb45be8b5fbb080b8a7d3cf469bf95ca232e88bdca1ed33fc205451acd850f81edb35e9fd4d654e20c51e15b64e046fe840bb091274be8bfab87badb4fe2e70fa2df0fb53295f8c9d5396266c470015d2b7c8cbf499b34085177dba227b354107716c46f51c8b195e8dd09cab07f8cf7ed0f538905361b60ca16da55f4db47b5825a45ffb8e4a86822a3848d89cd8f67d70a7dca9f6c8b46f6f304f0d1cb80c7dadad5cc48d3268a37afd83bbbf3044705cf7f261b397f7bc755e2c268fd52692f22edf0e45a65227adba357e07efae3157dd9c5d0d504f6c0db113e5e5d7db050c6666af03fd4fe4c9b94b42fa3778fb8f9d2647cf5a4b697d003cb67c076f73858654d49f8e9e954d60c7b5cac5d8e4d68cc8abca037bdc057eff1ac4a9e1223d87bafdee76b0df9b7512ccbdf6e609fa5bf4cb97163a1d8c08c2a05fa0089a7d2dd5d87c05ef7eedb1b23c79ebdca3a659f0395f2e242ab8efd26fed8d3331c286be735e74b1d0e32687ef4ae05ce142f7c953ec08af220ab4e2746d4e0041fbf95a32f3e22ec03e92faf68aca94ffc43c4a527b872a43e12ed8b0ab7e9e1d6193c79fff7ef41f2574afc87e184765fcffcd9bbe1f326426d37a1fa44b2993833c27c85aa925552c74972efb13df2b755b39431f95cd61b9c6683bceb4d1e4f0e031a83bd4e70fdfadbda04379a735b9b52efad8d5d7c26af5374d709e4fbb09941c7d55f57fcd6d3ebee3e7bdca7bae03ed1f4f2817c5d313dbf3cf6a314016adcaa85d87449b53bb16745ab6580717db9c6c6d433e183bbdf0f0a8cdb73c04d771b4dd6b31a7e7a0fdffc77d7627846afd4858fe705e5a4f0472662e80cb835ed3c117d47ece23fe26cc242e9f00012db3363b3fe3be07311fcc13fbb672f06f82641130dfa9a795ec0a605ffc6e5d855a03df579ee39d05e78785ebf01f752a52fa90ee56bdff1fe36c421a67893d1cbf3f5706adcafee79ff0e45ad4a07c651689672dd07702b7f1a5b2ac616ffff987bb72e4595255af82f71d11aed6323a0529236b704794370942588965aa5f2ebbf4146448296ddabd7defb3be73cad552d02e625322e33e674a50ff630bfce8ad66dc34cf6afef23e7d681f72a8c201851bf1f62b538e99033aa01003718337b76684a983cf411044fb1cffd8fc5133bf8cd2ee0771861431a7bdcd742fddd5a0d54ec2f6dd815c6b71878bb6248672e8b65bf992ef06290ab1df4b875717d55077acf40dbd37b3a59489f9fbe68cf07c199c66c3ec731f3b5839525c40d2b346a6d3e190c3bac09dde72cc723884ff839cbb269256b58f239b7919c9b54afe0396a2a35faa4adec38e9aeaecc3d47d81fe7908e2c87f938dcfe623e40af84fb071aa7158d13b7bff0fb6666b1d3facfe7e1d37b653561bfede31a7015f622c27a485c8c658f631b67832df994b6446287fad822d6d992fad196a8c483eae772ae8b2b8d41140f87f7b6a498149d2d39fd6b5ba2917d3d7f2ea2efb6046314cd9f1ce6ffd696649447d10ec327b6043082496a1127f9f777a39e19b201689b34b94e7bb684ffde96fcf63e87e1375b127213de954ff26d2a7b3f993200debe860d20b77c7ef1b6fe05f3d02c554ac15989faed9c251be8c36ee375ccbd74f5cdbf8eb704977b66ddd73e497b833fd5dea84ca8093d72c0d9ea3f70c09979b9a17bcd659fbbc8a53df4d568038570250b936ac47fe6e66bcfdf3bfc45c8befc3f697c2495fa6daf8739f579fb4525b90f2097aa77d7537fd14af0a7830e9aab3cda635beaaa3e7dd61d3ea432fce4607afd7a5f540d8befbe8de04989a01e73a4badac3b809ac4b6fdce47eca4977333a3fb937beef1def40f19bf7b8bb16f2c709ffe61bc3f338f59223bfe959f1a9276522fc782b783febb2b7e58f635b9c4083c6661d0f808c33a745d9e33f7c18b3a7dc32801b279e30e755975cd0d8f735d2da31beff2ef430670dbfeb4113fdcecdf71eb47c8ab65337c6ddfd255fd81d37d4fd7738690adb6bcba1b57b2c948739d7976a183c70dc74dc606638e9fa86a47645f4e3abc07c120f7f4ade8b6feffcf479863c83fff61a5fe4b62bc38f2eddb5d06f073a9e53e420e7d185618cfadf3cefafde6977107ab741d4716822e75fefbb1043c7d29e3defcb14b919e8153f76eb4fe0a6842d79e407fd1dafa71f8ccc8eaff0796f63f72cb7f72cb92ffafc183ef6950632c722f80a41eb7565f1657f2dc273bab5b888e5733afeb98677cf91ef891a3231a33ee3949e130aad68ef617c9dac3b4f981172916372bde8db188b3a5238fe0bbb701bc9b17ed5e4f80d313f653265d6fd8627674ca1bc110ef1d10ef9b2f7167af2045ff3e37efd0f6c957d67ab9ef3967ce3515bc8da64a44bed833f739fd8d09be8caeb3b4c85e841ed78e9846d50db357c7b724f8c7fd4cb376e1405fb70c4bfbbaaa7df73223eaeabee7b7d2c883dcfad6fcf24dc169d1dcc8bdc2fef76c70df54938f6a09139cae7bc2d9d6db4338b7567a7e475ec73f875dc32d9ee2cedf762b2f9a3fdeefaf70e47190f59e7366e19bf6a789f483d0401f458b012fb54c262101007249d8d3bd933d7e1d660aca64f7c3aa59f339f2b6f88597594a2fc9e4f855cb2e0cefd432e597cae3dfb9c491bc4064f3f973cc57cd2b313e7702cf2fba21fc6e7e967b7b72ea051b5a35ea1fb6b3d2d5532456ae98b5e9b42273cebf973457371bbaaa162cf57960b365cd44b540774b86d9df082595dcd91438ff4939a8072437a6589b881a39ebb6e63cf98851a5ec0012f7e73e20c719d5c447d222e4cc16d12f231f11caf489729ac006f171d86af5033b182e68916b1dad322d6ae63b6459c21727ea7d3fdb5c30c8b773f67d853cba7ce51ea43091fdd525c65403577ece525fdfbbd4ef5db85b5c4daf095f0c70a6151a1c75df02afc82f9686d04ee13e58c7ec9496faf275e74eaab019dd08dd0fff5d5b7abbc06e670e3522f2eb79515e407cd35bd67c24f94b3586f8b05d957ff9dc6d5fdcdf386e3ee1dab366635280781b88e17cc5f2db3dde8f5f1be99bcefcfde7d0bcc0b0b5eb2b1ec6968106b1c9597de784d81dffa2ace045f37c68576953d8b7e8f1714eb95763c4dd5e758f1ea407c2cbdb5467cd494abbf91cd58498e16e28b5681cf45d4080bd23479cebd5e8bf84dc4e4d978f40fb511d221c27e3d85b48f862fa0776e6f57c9819e21b4b8d2c87618fa9cab087c81f49df287fb766dcf253738e9dfc69509fdf5f66e3da5dc1a6985a1064ce89bdffe166b1fe75d3bcc727a977033a6fbe5f5a1bb9ff057f07addb0f2c986b8710fa47d9a9b0e6803a9fe2123eee25825de933d03dda1299ffce834a62d66f825bf11fe2048d8d5bf09eee2d7f594f4712b3d8f7281214e831f0a728f0ebd9d4abcffc4c5c17beb8df6b5bd84de8612353749ef6003dc2f6fba4bba6d626c7950848c70812fdd9e956bdd0f883f957a5f12ffa3c3681e40fb574bb1973297f70f1a7ea3fa04707f17861f1fc685e883161a2694c34e3ce883aec435fa66ec632f32f542fb01da7edb3658e468944f58ea69f72ef88c42196ac22e27be2bd74f7c40ce2c0bf87d4217b150ec85eac779427dc48c38c4b55cc198b074ea15e9a06923ea4b6e1e6c1cdcaf127eae81b8429b706c41835a74dcbd05639117018ef646629386afb28f4621fde570256a3b67c9a1e8df4eed9a21cd3d859527913fc07a265f55c2bf36e78a877e159c4d7ee85fc2b1e0f9b0e3a9a122162cc913fabdd047128abe19a766c8e517e9ce2184fe2c1ffbae94027bacd7e50cb9dc65ff55ff7dd5bcecf2c9d0e796abdef6d9b567a5bd36ecce025ec4a48338da67a06b27f82790d7ea43eafe4c6de2cbd149cf696dbd09fb2231ff497595f87bccc545da500f24af5621e661459c9281c444f195c917c04bb019f734900f2ee68d7858b6fb3b14f865c49fbd6a646faba6ddcb224fa76fae925b51b7a7f0ced63d4f5692d6a4df948578a6aa1bb4fd887d5386f8b7f2e5c2d93d8d680dc7958b7379df63fc9453c9fdf2b6c6109ff7d07b6c8745cd28eff4d9da672ed6d4ecb6c6b8eca127d90875bfa1bcc94a11da00a6ab389d4ed13d96c208f58dbc3e8fdcd63f6daf3f76d7dff52b18a17ee8aeefee7fed7490eefa9a8db061f2fa02ee6fbb8a73a09e19aefbd497d760ef47e2ea06ae395ea7ca40e43bb936a03162aba67a85b3c55251f7d09e2bbebaa6b5a04bfe6d95eec992bfbee790eeb92ab9d4ef89344be45f63c04b91c6259c333836c8051e809f035c27d0f76d437fb83a13f780ba257b17795b8cfb97ef22570b3ae29abc4e681bdef7aff9841b60f73e893a24fc627f4f75fa52d6a588644c68229f2ff8569d069a9a3ed997c44556588e4ef31ce81e9d1b183f158d88c57b1c227e928e813f40f0a4682bbc77987015fbe31ef5d56d37722f73f4d9dafb09fd8958f4d3b77bbaf1c794cb861c7f4f8b5a8c83afa793accc89fbf3abc37456473a073393b83a14b55072a1c328f5833495f2bf61a694a742819e929589f949a11327fedbad8dc69f616e4545db17ba25c67a01ea8b92f62267c720b8eac48700b808f72e0658860561a58e1e6267728c57c22692b8132639c6babe77bff1a9c6c44807e96f6b5258d79fb853c98944f6376cf784c014816db6994275308b7a5bc32c428d236d887e6a8f63ac59cabefeae5f3ed7f27e1d50fcf7f277bf13fc8681bff55ff0fd79a7cdc40073c55173b129c6a4a7f1bd0fd83e2286edcbd336d48be76421f569800660fafea3f9ed67bb8b429fa5cdc367dbb279f6596b5f9635624939a37e8c3eaed364caacc310c73d0c31e114d437658579d220aebacf1bf9f9edd9e7923b4e7dbb511e30888bee73e474f3b977cc8877b2f10781e46c28006bdbfb9d99e5366bd91f96fec3b5ec93f484835062fcbbba77531e495bd17bc88f01e7bfab7bdb0d3d2324fc51a473e771fc5e65ef66813855365bc4148fe5f0fb14dbf6c767badf662dd751e150ce14fc03b627dbe4df4e471987dece549bd7b12fa87427c4cd90bec81abf7ea0fac17509fd24d92a1e627fc7684c5835e8cf14b16d4dcfe34d85f7613b8f6a6c729f16f05e8a3dcd2c477749535adb30e2d62da669c7f752524f0797fdac6eb487335127ff1b7167a8f5c1250738e44b83471bf3fe8f36c601be9742f69907802b4d28af4fcfc0df9710e730e692a95f8eeae518a3f6f8147bdc2184dbf2b4cd22ef78c0909fcefec25c51bb4608ff837680edbd6d11812fc06ae2cbc82cd01e2fca9916425d3559e2d82d811fffe2d5f66c3e2d28a70539de7220ce72de708a3b94608cd7971ee8e7cab3816212a6796037449e7a45dc675d8fb999d602472cf20ed8bb1c78f837aef300cf3becd7630bcca7cabf7dd4a8c7eb17feedfe6f8638d24841fe74cbc2bf01a7c84dac390bdc8de86533f06f0bff463dfed6ff6186a70c9ef744c89e800df612978f7d05222f843e80c3ea277d1f84050ffd7bdcbbc83dcd04a61fb89d2be49c4bf7b2b73a2e7489c5dcca5e19313f0fef5a7bdbe2fbe7610fcbb9a333a4fd3c7fc4e2d7defb087b0ab8e2ed7e283487343eaf0ad6a68327f645dd1c656f54f86857dab87e3658978ad8c7e8a7c6d978f4dd96686fc83b263467c634e66bc42ea1ad998a9edb5af0e91d91231e3447ca59e362dfd873ce3ba678a0970e5c53d4f71e9fc7ebda01de990e1f71a4e766d18c62b3dadb6e26f41d067ea35994fec75d2e5d607d2bc078c6fc850762ef7c78b733617d5bbb23f8c0d0b657e158f406ab5e4dbdf8854ad7e0b3ab405cc307deeeed8839bc83577b94a7735cd00835968d41dc0d3a62e437a49917249b31c5c31e7d0f6b6d6998d2f7042fafb00ffc0df656bcbf61ced327dc01339d0960ccf9126be75f6e04b9e188b4987afeadab9d6df4514923f9eabd5fd3f677074d3594bce05a35478e18d5db567bf213531df51de262bc3229fe3c5d5cd927e67fb8881d8810b39c958ee25ac43bac1e02cc4bae261b9c8b514d3e6caa382797e2e0e62772a2b181f74ebe3df4e3f2e9e6423c6145bc9977dcbd7e7dffaeadedf8497100d43b557f90532f7270fea0f759488e6f7c1fc536038a292ae0087b551cca418eb3f24f3195dbc34fd87377ca69dc5f0a89e13b53acc8d2c6711fecf8035788f0bf1d775b10a7f7352b4fa74270bef2713ea9668469cd76d4c7ae36ed35a4a59eefaabf196fd8afbb2b60c9f4d42e7684f352d59572023f5ef73fa13f975fbcdd614f3de56ca7cee7a63116b5972d3f3dce859fa466561307923a6cef479c38ebc970863948b3f71bf4f61aa1c99fa4f4cc53ff99ab76fe21477cf576d71a79a49abb6bb4fe35c3a7d7e4621d15a6b031ba81d770c5d37ad7f4ef533bed35732f3a2b5e7d383ec72e552a716c45a1d0b0044e1d5e42cfb7e5de1654df9139cf73b0aa5b3b009ce7eb7200b5a5581de7b0361a6f6b8fd7d44f96185f5ea7d5411a077bd94bf41fd527452ff114f4f46dc32f978f5c1b4e2c7e8b6f145359ebb9acca0bf01025d578f57e9ea126c298d5066a908c4e7ebf3eafd84e5e3a5bacb32a2be591438a2b99453d7254e7713aac5cc7530ab9d7673c2196b34f1107183686e43f853e255e62df0df8b86675863cb13520ac5debdb400d043566f06f6681cde6c0036fe7a03f6c7909c52dff6e3cdcd215fad77989bd119122f8c549770273bb43391ed67f341e767b46e17b5e02e2729c0cddf9b4024eb0dde0885a081afabd2e4ba8afaa8fdf97fa8a0b372c0827d8c3390bbcd02f2faaa88750f0f7234f86d9c6385e00635c90ae77e2505d8dad2a0b734b2e6ad195d2ef29a6845d3b37ebc8038e966d71244ec275ed13dfcf919591f0cff9f440fd884e31a5cfcf355322917b84b84bd68c156f37bc499d68d42816bc57828309e24857a17e7035c5f3147b362b3adbe7afdac1bdc39e06a38f70fcfdb320b2d302f017718ecf5b59b3afac24cee5d3d193bc5867c3d39c0fc4a9537f22da9c887ae4c1f75314ba97ba905c09fff65e0e62c437638997c1b8cdad9123303a7fa21f692eeb82f44d912354b9158409d7845e86882372d0b1b423d2dd4b283f6bdf28df18dcce1fe09b21be583f8c5dc111548858b1d35c78e0b48daadac53c5a41fdf3494ab949eac719d01e90daeb615ae25a9e118e246f2aa9ff873db91f1257fe3ea218ff4f7a0d46a4cb674fdd3a95587a97c6257cc60bfb46358bb0a8379087d386c2c758970e5b017e7ee895f9a0283177dd541ad5dc5ef57401f1aaad65c0c569849ada50dfdd8af85db4c197d41b0846dfdecdd746513726e2bf0de97bf9f7b1f974de691139abb218b67ed212387e718ffb2f01697821e7a72bfa85ac8b57da37c4cedb1ebc9bedc527d4e4e3a0e7181f4c2fbe2a92439b8b7a821dec88f791a954270af4f4ec2377a1b4bda4b3a9a937e29859d58e05f615ea5845e99c297710e9a94e76676156507b6ef741a77771e9f219c6016aa16cefed9401e63e366e7278d6dfd8084eff1e87e05c617a8a759265c85e9e7119e5ed7990b08e9be9363217a64d1ccf1fb9e44decf3bda6ad4fa6792561e23c9d7a1478bc913a8cfde7b012f49d91abf0d39fa8a413b1a71add3ddfd35dbe5ef490ae2997f74f1c8ef5e145ce4598d21a73403f663624fe3dc4d27b45887a8749011acbdc402cc0669cebd82f1f17a0f7cc0d25c71c40bb17c5792aae87ef17d4ffab1bd6c2248eab48eca5689ad6c81f1facb4a1439fb5e77e34353ec1c7b2148c4f3c8fb8a26afb53fad2f819f0e68858bda19c731cbf1d717ff32c449d7fee6a301fee97c81340fc3bcc2ca169e161fd75f7aa432f6ec48ddaa5fa80f676f9ad3642638f73aa1fc415716c1dbc778ce115ea752ec51a0c857f1a1de57ad42e7fbc77d1bb77f0fddec8cd587ee1bd93023883622fe9b455f26800f133d4c4dbd8f1267b39ef3f0b97f54fca05438e44454c54e2d2bf13d7f7cb6f7a849c673d304164dbeb927da046a515873f89cfd5c7fb7de3938c42d29feeb0f4ac2958af67c2087a7a107ffb3d61af43077dd648f7b725e993ce17e6067a9e15f42bf88cf04c779a4a8887397aa81d9929ec246d3de11f9b52a33e047c1fd82f11f24868e5207cac217ccfe30a5e637f7c1638657fcac645833a9af1d95c492e5ea9893d6425f826613853fe8c052d0c2fb42d1c7f95780cff580b12bc397e1de339fd8aefe2ab3fc56f2ba219c65543dc0b42cf197132e8c7e9fc2378ecebfbfebb7dc4a9400ed23430a75cdd52f0bdccbc9c6958d333e2f8a0538f3adb560bac35d55ebda733d8cfdb3358f09518906f48f8783e19b5d77d226fadf067f1ddd22c2ee6bd9cd5c6e37cd77e2faa7bdfdb55605f42c782f3a0bd17ec333762c45bf8b9807e7e336fc74781f181b5f6fdbb81d8a33e7ef7078ed9e62ff2ef425f7cbc12bc2362ac3e53c4a4f971518798ff5f24d46f753ab6fecd12cec501e229c322dc2cfe6d7fddba262ed0d1392f97704f4dfafabf56ba33817b7295b850827b1f47eab7421ff61b9c95f1708c758a2f3fb868c2ee95d807129c4dd43399763c33a2ce7ca5dc6bd8bce9c89dd18f5d0f0bd27c024d31f05d1bdf044e4b3fa43888494dc7b2bd2ef52216a51a71c69c069c7286ed770117576784e96e52ec872f5506181e939b4b7a1e2b645d1c787be369243f5b7ffbaca4cfe6ec46bee48f631bc73cc525b6e79eb0bd862ace38c117bf8931063ec27b338e67396018557fcf918fe65515e788c4d8108fd522f8db67b7be88a177cfbe3e7976bb468d293efbf4bb67e3997ff0ea748fb1c8d5dba9b57fb76e487b5f6a288bde94b9ea51bc8373711a72b25d88e509b4765c20aea5cf163c7af8deb91d9bfbef35157ffc5e662ffffc3c915bda90a6da1feaf585e107a357fc6d0df5efa6f1f0b3d3b5eb7a22988c99479f64ef18e0abcd68bb21fbfbb542ce9eb0d97c1177cb6a8a986b5e7dac2c512b370b8b5d0bcc67a5ad2f0be3fe6b31a17e84d129277ec2b8ba40dcca5ebc06b97b78a940ec3bda830dbf3ab87e2be44ffef06a4395b656e7f08eeafe8a3173ca4ae19b4d396230bffd7665d8bc624da9ff7b88437abd2b9047a890fe7f0af9bb93577b1df74883e7732c72c8532f040cb5a75dc76beaeda7b34b3bd33b5777eb2e1638be5feb12752f2436caa035fbe5edae0a613ff35ad62486a415e52779eb0fa4ed6f77214f63c4f1f52a3987a706d4edb87d40dfdb5c5b699d234f2b4f9cffee5921f330befe12bdc2adafdeceadb0bf2aea795f0dd7a4b8bdd7c7a52917a92b0c3a31e302f6fe5dbf54d61006c3426ca383ebc49ef29ba8f3a692171c31275eedd03ca6c8fdd3c31617861f79d2e748d1e728bef91cacf3397ecf3b71e773b89dcff1f9af7c8eade013b441933bfd0b9f237de6735cff439f23f893cfe16effe87304bff139fe60a7fe0b9f231835e473b85bb6f8d7fc20da957c0e7515a1cfa10b5e44c8676a2af91cfabff5393096f91b9fe340f53de8cf10ef7374b1e75bea7be9fe386ba83ea8761c8791e82f37f9d6a3be0346358ff59603c6575d2ac48d1d92b66ef2a6a2e642cc4c4ef52b9caf4a63e0efdbbdfbfe22ece51c78a629578edf11e78bbd2c49fbf08d7079bf56c148ea3fa6a2064c5a9e51033aa276906bd52fe44698e17db18f07637ee84d3239d400a95f6ecac7d2bf98a23e2e8de179dee94bfec6bf70d40c34294dbfbcc8fb8a3d0598910030162c42deda5ff01cd25c465ec2f83c2e26c8bb98d8e395e4a43edd61723a5dfe365e72159a77c2e4503d8b7e4b30feffed73c191bab6fe02bba7d87686da2a4162ddb0765a7bbbebd7333f42f656c6ea1772a2862ee87ddadcf45daceb0ce9ec0f9b947c033fabed473fc25e5becabc035952ab3af7ff85e9d431dd776158673638b9c54a81d84cd0bad0a6bc5c5186c2f3b79bba146f61363d943ef99dd1ce2df68ebe8fed093ad6e6674dfd564b4903986c836c3da3d22a6f017abc957b250af800d323ae774bec7be27e496669f5e3d93fa887948fc5c85a843fa0a707378da709cd7e9fd79a5555a70772f61b3a69d2ef98f86f0c478dd26a7351c8fc6aba94f7aec17ca4906c188ea2776d16c98b02dbc54d0d6a5abda265e83418e75d0282ef0fc77affeae5270ced27cf7df3d8bf19fa8113dfac0f7f753916314b58889bb953e46c777a15bc4efc8b16f715cd83ff15c927de6e1aac1fe77ec332b2c47893acebfd6e7d9a26f891838814f41fd72eae376159ccb84f8c810376cfafae6f88407f00bb9e68c38f19ff1000ebbcfd3679febf43bff814770ca94a8eb99d6b98735ccf6efc9b24ee977a8a82fc4dbf51d6ac3717b266488afa63af01af649a771faefea9e53ac7b4efeb9eec9156f2bef8d5c292c22ac3d075c0893febb7269d64ff888a44e342ff1bd67aae4c8ea710df5af6bcf99c29a891cbd1fdc3d6348fa4efd67c01a610ba60dbf6b3eab6e7b06ced3c99901b651d436a177677a98a3ef6bfe898b06cec7fc9b06a82f7aa246865fb6fb4fea0d7e86e3eb10f0ebcee72bf094da853593f746ae1a13cfd2b988e9a9971ffbc45dbdface15a71f3e21a7d1da4df0d95930fa5e73bebbae327cdd87dc0270a3ca672c12d2baee3d4315787f33dc6dbebe733d1669eb9f05ea92f69a3f47cd5e312ec8c5ba6c0a4dce7f287d9de10aeaa83e9e591ef5bdb1698ab50ac016e491b39fa3663561fee57f4937513b58a4073e472e581e46e48b52ec2affbb2a05bfb303bd3b629cac40f76edfea318a750bb1877e311e8ddbf8c5e7078d9136038e0961cf488fca8f0b3d7c270c159d47961adceb2491c6ec31a37c56e2ec607c785d2803f0d7427b28fbf46a193bcdd742abf62c758ea3fab0c1793964c0576dc421d7bada6e3fcf52defb4698fb67422f4ad404cd026b66feed446760ca129c9bdf7cdfbbe72fd1532517fcbb4c61aaec650fb98b7821b5d3e5c57da53bb21fb728290f5768dee3bca869ed4a5edef2461c9f2bbd809aa5eabcac4beae755b4e04ed35ccd048755699f5cacd9f97aa5f9e3fb7916b607ce1fad403ee2fe75afb7d198f4be02e0be1d3cbb8e89fb893349f8464bc4d044a63d8498dc3a221ed2031f41da24fc5be0a37bb534fb8c18940fbfb60983322c4aec9d6cdebe3ce88f4ae1ecf3ef39a592a51edcd5fb1f38a5c2cde19123aad872d65bc31d9ea0294ce013157c81cd1c3546c28493f62ceb3056928f682ff88804f671387f7c8748f0c6b974be8bdfedeeb037117bc782b8b8cafe0b4d75be8dc1edf485b10dc75c1c8c016783dfed5dc23e6464fbbe7313899ef58e4fcbd5bdc691fbd1d57ebb1f3b7b2a795b861fb8a7dfd7f1777e55c9c9b23b48ee291ed9d30c7113dfc6255601a72d71c2d5701d1187b621b95ee4b9aaf9b77f5aabc0952ed699e66dababe4c5a8e99c00df23daba5fc4a1e6ca5e78d0b78cc6e2fb16d3e93bb9466736f66807eeade3df245f00b8e3aa2c9f621dba3fb7ba25f1c32ba1130d5a124584dc73fae1f8ac264b6792a83136b942ba08fd6b7af1f12fe0bcc6f5a6899cd0c12bede9aa7cbbf898eb0ebf71a0b837c981a23b17ca2fe54db140fe8ec6db1d86d0e77ed2a91ec94c8ce7212eb1e3d23abd0a4c03a79e8117e46133e70af97a927b8dbb09c5dda75beb13f6b9a2d780d1b357b25fd7977dc56c7205cc80e0b760c29edff16ba0067d34d950ed7ece121be7e424f8f905efc24ea5bc4dca74f92e476601b6222b674786f8e26558d17bcf1726f21cb4becb0eb117a14bb663ee6e0d4bd8622dfd5a600f2f0f46f2fbb94ed893e585d6ce32de747bb23e3ce43eb00743df988c70c3b1fd41fb33689c17da7b88dd187a621cd9c0d31971e4cc172171cb165f85223497cca8c25e50fd20b9c8d642e36a84fc21c27ede5cc8e19b1dffc9c8f014ac09739bf2ab2a9de141681c42191f8bfcd009c7c2cc2d818db37dc997d2fa759b9ac62aa21ed790d33d1c7752518e1f7da80bf6f5b20bf4bb73a10be147fc0ff7292ec8a5e22f26943b92bc28cc8bd88cf001e87ff86ed8e9e4115e6e49bdd75bc40d217f938f787dc075b0591612aec8263dcb2bdd23484ad2e9457b5b7dcaf129e5f8f85ec4ed3fdc679adfe9941c6ea4779235b84ed4c307ea3d4db3a983bd87ecc8708fc4f552ea63ac1a9aefeef3cc72149734d97481a5bdbfbfb619e793e217dab3836b0da09f37b1c7ebdd7541fdfe6beb07c516757813dc08ad8f7c5a830ee9746d39e7357294e6887d6696b37749f33a223c17d63ac20de18cfcf56e38c5334cc922d25b3e900f39879e22c1f3f0cb8b0ea8678cb8215e1ec9e742ce740573d342b3c757ec690c7dc8d370723e90e63af09ca8e34262f1ab9705c4061dc74070be107674ae531f49f191918f181ad4e3307563c4e369e981b4e8026d73c5ef4fe72ae560f3ab4f718989364d1b8ed15e00079ac038df8f5d10d94966b1ab1b51aef5c010237ff46ea41d8cfeacf4f1ab0b43dd4d2faeae5257e81987cd2ebfc97aed333bb3b5a89f90707e66b03bd72169090bdccfbe71239c5f6db37f76d641ec8af6b0b1c72c46ec0cb73bace01d968d301964430d733d51e93be7bcfca7eff036f6240eea06f7851185ee15cfc95feed6963ad58b68003dd4924fd9f617f1e697789ec05531238cac63d1e9899902af2234edfe235c36f3a222205c36711645803fa8dcf88076331a90766c94a4d813d09ef7ec161027ed96abfe634cc2f92dc7338a871b5acf7e5183c699a70dad5c775e292fc712fecdb78f42fb86be165f4c0de221d07288a1a7abd23f67582b0d03ca1f9d41df8f70abc96680f9cd81b73b13c699511e0a781d6dc236d985ac554a9d2fc22525b887cf5e7df0c9bfa33dc0248e6c63c2197eb54863330ca03723539057036c922df3d7e87facd17e450ad4b872c4ca53dc59448ee8d916d84ae275d16df24554af76daff675ea4a21e6f6a10df18439d06d43d76c1c6767190aff4b52e6d6731913998efbcaa216a1e524e07f166923322212e268c0d4cbbfeae4b21effb9941bfa0b9acabf76f6bf53e86b025f76e9ceaa4df8b9c5a5eb623feaadfc6205dbcae1dc67f1b8bb46b2dadab17699385cd314e648ffbf9b867df477ea2e1f2fd5b4ee97e0c248f2ffff4ea8a307a3dfd5e18cf78529def31d7ec75bd252d2ecc792807f3e1ef73aa28d04f083dbecb6c6a53ae06fcdedde81cbe77fb28883de2e6218eb29715ad97673904ed30ce1b5f6a5e13dff0b3fc901f5698d76547d43f34386191c2ea40b92cf85de29cd449172708ab934fd808ec6d2a842e85e893d618f5fbea9be0f18c5d598ed4ea592227987f1b11f6fb48766c0ee78f11e9a25fa8c320de4666ae63dd8a47301fbbc307da863fcd07bc7fb79fcd604bbfa3fb9e3bb9da908fc1da7acc0cac55bb8827c0da4b756bc7adc719aaf811f05a45503fb2f94e95b536f97bb4cd897a0332c1a5037b41e6946a7b81fc18e2b9412c7d53e0ab237fe276974f98afe333e20f7adccdf16849bccda2572692fe0d71accf09771125827f53e40856097117b884aff1d73bbc3f6a4517addf572a50e3905cbf6fc0c383b144a8febcff5b4fdbf1f0bd286f3ced4c6393c87ca9e427afb02e5ce9197141ea528b65ce6ad031c09a9be16b438ad1ec542f16104b899ab1cd14ef6efc32d3709fdadd58a19c03f1d37dbaa80bbb889c2f17f308728f24b27fe9456a2d34298d6bb8dadaa8e5defaa997dffc06d8a7746fc96162924fd1cbcbc66f17ac4bffe9f3ce3e37c574d5601e8453cf6a4575e879a73373d2487f21c2b188d0b6513f77312988dbfa4b62827a3685f4632359f32e5adf6b82b6157cdd848f73a14da90aff8d416d779a5bee0dd7d810f390b5a72f35588baeac5bae4386dc5ed631435c03726e19f1f44d8371e519f64e1d88ab368af72ad6b1dfef720e0961eddd5b87c1ec7cc99559903dc3febf62bc6a7db936568daf16daed414139f8c7ba8a88b32fb4f6928e7ff724fcea90ae9b302384358a5c7ccc29264361737dcbba90df1072d11b658778e601a69a65bc17abfbdcd0dc8e63fe2edf9837c4b1555ea5dd127e4445e7da14733613c90928bf439aa215f9cb37f99cc4bd480da5c4eed7c28d00fd143fbe9aee9874101ff65df846fbce595bd1a3cdf717a631eebda3c9c886c5a723c5bfcc64c40b39f009bf4b3d46a12befbf30292fd8bb6ea23ebc33f57bb571c289becbd75b037924d546fef6d0bede9d4dd169e09226ef9f7f5708b6fd2acea8c0b26b3a8363e4e1c1d8d558866e43f170363d4c45ed2ff29450f6ac901d711163e0ead2d704bf2c5a49fdc40ab190073c6398e2829e970d9c76d56bc74701f123f8b3d5eba31f1b6803c5275b47f7d7fc04f14143ba2ed2ddf63adf8bd80eed43bada4adbf7b5000e5b63194bdf03c794299e5650ef892f714e13556a41523f346a969979e9bce425f9281baa23f9547f40ccf01cfb11908bc54ea827b5bbf749f65a47a43faef897bcf37fa867887a3506a491ed93d67b4d3e78d5acb07e158706c5dabd33ae1c903df3f5b4465be514b1d45550a4df125f5daa5b117fe2ca3a03e764628fc3ef3e1bd9fd139c1dec43da53e2fd88ce5a81bc26e4832f26dd5e458e68a8076e1de2df9faf6b1bd70ac5b41beaf941beca1fc87fe934346e61b2692426c4a4be1bf40dfb75d684e338b8436f475cbe87bffc6ea961eff489f8c873ed8a381c7e95dc55ed6f0ad3d7d69e7a023b4b676a3e14f301dc31071937ede80cac54f25f7ddd97f3b502dc94b9861ce0b4e3942e7e7b0e7045ac41c78b8610272a95a86162de06f73d33e6da61f6f07b67c16e70f57a7c0741b4a718df79d57e1b3bdadc34481bf781a390f29b4bc5a77c5a2d6c7b3b96937c42ef007638f8634cf903b808db98729b133ee549dcf543721622d7eecddb561403409ca76c3efe14e7319d6a69c043bb2a67fa02f370cfe2cafef5ed3ce5e5ecc6acbb387626737acfe258ddf8b8e79dae54f465ccfc1f9e9d4f0e77317f904438d65cfbb7bffb37f79a0a6eeb3f8ef9e8d28b75c5ef2884fd3eb7fee9d83537c42923788482d65701be8589171aa403362f7e13e3058aed8493cdb65dcfebd2f9f2b69b9afa01dafdb3b01c056246eeb89558239340dfd39a0c8b0635caa2c307f5a6a766d948bf75ea4feeec8e2e35631dc2a5aca6a06f96efae82e729025eff23d52083643fc4e739d4dbef6b57ccad3185625a66a2bebbc25e32d9877d205e5dc79dd03ac9afd82b6fc5a671047f969beb9dd43ef88a89f7a0a17a563170a1666ac7d392fa12f9baaeb07ffb3c88defbf65ce4ecc62edd5361d4a72f6ca16f43dcef47f7ff1ec488b90a19d52d42e1834757e3ae2e8331716e39a7bcf3e799077ea9f031c997cc74eadf2a6f68dbcd0cf49ccdd06447c2e83f191f23087dfa3c5d907ebeee8f571aed9b2779f2a8bc903f1f87e54dd8a4841f73cbc95e051f1f831c0e3da337bfebb0b268ec7281a504cd38b2f13c491f721d85e0bfcae4f9ab60ad35a239f233d2fa96b94df7fa24b7a97631c819f71457081fe9ed72ca6b32d0c8b58fdeb67b06c43be7765d9a8b09d62a120e791e3d253e7d15b0174cf3eacd3ebc11a6aef8d571ed0c1aa86fe7aab7fd79236db4086b3985e4ab791b04643fb4eb11f9e7e6ebb8ea7ad7eb25625ba321e9390449d1ce572272dd099f633d6998f5fad78b77fafd27112315253b65ca9238230ee10d70f3ac74b4574562ef532f2a1bef7622de4f56282edc33202e16de5dafed873e9efbe4e3ac12a93d7fc27e2c276d906740f53f0ad234d7042f098e5df50bf91a06dfefed0ebded4fd285495d8163a7fad50fc933e306f47bcf1f2e608acdb9e22a6e443569811186bd149c27773563d4cc294aa6527e95eb8701add1fef5a287816accdad02c42cafdd91717794356caac298827421be93ee13c815b4cf7eaf480da65c0e9d8709b6d71ed27058c73ec7c167846e654ff08ad63387ee0ed084e847565ab9ddae53645dce61d7bdaedc4957063a45da4e78813629a8775cb4c41ce9b7844fdc18aa77b8427f2570de6e838bf88fb887e79873828ae84bde1c9acfd8ec0e714f23b39c46938364be42d01bbc12e7ef04393fd51bdfa0ad5d8dbdf05fc907c4fbd4cb95698e89f5beb18b16df7b515aaab19c087676f8b1df6a172bb4915aa95fac314759657ca4c95f3d7e57c7de85589d48cf85013bb46be7ec5378d1af3d3bfa90d45c07f9ca407f9ee31bdfbc67227fff8eec839e868a4271905271d7cb87ce88fa5f6d110f50d2bdcaf4ff6549743fef37ef58e2ba921f14679b4d093675aa74fb7889c9a7855424dfa0efdbd33a0bea390f200ef67dc47077331c573222ec6eb2971e4558757d0ab68e3a123d493246f88cd147720eb6d50933a7ab5431a399c8f318602ff0df1f96cf29b1a5c37d649778fc71a1cec2b6680bf645ff372ffc73d9fd7ecb55f530c841f47755ba1df243878c13f807eca18f8173fbcbafac298e68a3cdfa4e96316167b5911bf17e575b4cd10f8b1d916ece961bc0ed339f6ef7ebffe36d290ef4b6a00a79a4a3d75fb39ad9bb83c226f29d96939076bacd765c873934e8b339ec90d62180784815a84a80bcc7335c3b18ac499c3f14ca7de093b6313f421da398a290786f8f8f6df26f86fda9070c1fd7baa5e69a72b18ef88727c6e7d200d8d534118415de006900342057f6f427ec8e8e3f9189cc177003e0b3bb7589d610ce296821fcdca2ce7f4f4bb8411ab658f96ea350e8d19f4ac6a8819882da13fb0943a3ccebd1634681e0dbdddfef61b5d1e91ab86fd3b94f93da63cd7e5594c49437574cc08c7126f748847f97b8ebea36f1783ac248c8a7f086f847f9f5d3b5fe284fd43aeee6ded810fb823c981cab654eb813e9df45df6cad88027d8480cc5da74707f289447de7badaf142fc1178b8b71642e4957e157a1431f9faf221f2dad0be2521738823372856ca85e8cb57ffb85f29881fe76c39e07c62817a10dc781c461b436e022ebb68ff9dfb58c03956bae60fe37ae4e5e1f23dee1a16f749f906c6e72f8a4fa109be0bdc20de466257f87edbb3a83733f8e949ce61b6d2d477c57aa3830defac66202e7f0271fea749b43dfb6c914475958c25fb0a32df9017c897d425447fa05b9aea2447f76429a4059ed9076b09a43cd7b9a934e28f124472391630bb4cd98ce4696188ce65cec79ed30ce758334933f72d2d0d6f90dea5bd5c5435f67191f6e54ef63bb42d8fa40f7c7ebea67df3e188532d318d648b3925d080314ead1c0a7fe65d8afaab75d52bcbcc97695c4018722ffe47fad70dd47d00b597b5bffe00bfe36465c66c489542e4cb483a181dccb43d277437d144bfd0bbb63e6a57b23bb03be147f47fd1ca84d88fc9ac89fed33e51ff6abb66f28bfea02dec288920839e0f9a7c40f37b08edabdd5aff1b1dbc87c5e6b587e11a632db12a6eebe4fc2c7de6bbf66e3dc1afcf93d9be517ae91cd2274a8ff499f831f172d22af8d774256f233436c606e717501d854b33d83c3c89efa25f5ae94b227047e4361f8316148146d4e752a6d2ff182e233dd1fa7babf405c9ce873c92c11f7bf068865092c617f346f679d78645dbc0ad67dc009c75f626c5844a98ebd4991e0cd68eef821831f5fb8af649e64a5579293389f56cffc25e259237ceb876f7a3a69a71532e774f71de8e3453cb18bfd3dc461b7b2669735c424b5572efb3a4e3be232ecbdcb75558a1a4c1abe634f97cd8cd8fe8976b0bc62ee6c41b9d9b0df6366db86cfe51af3fb3e92c8a9c2deb2e9dfb862f3ac743ccc53b57325d68e2b71dbd651ead86f9173aca9507baf3ab814b7e87be2534cd626ef749528068bf31b71ebbdea1b4bc404fac12c6ae0eef5cbf2ca4ad0430e63f5188226d624dc0d8f902b882ede4efcfb16fd1d47c4b8b8ce968d7d41dbc30add98506f23f8422a6806c6906bf394bb39c05e6d4e3d50e16a4738b8bb39161c8838c7e6ca72afae857ea196132efb7bcc8b31f25c718ed2cfd20dd285fa1e53f762e4dc941a6384917cb06b7738ec4faf9991cd088bdd99f0b27a6bc3445d5823ee1df5a5b36b2207d8da751b7d8979d0e72f23bd2ace34f91dbda0f969fdd7e1aa3c215ee49040ace762eec4af510bb33d938f5dcee7fc0b63fa21e9d0854df11180266822e64af72da9bd48bf5d5315c981303ecfc1efdc8c57c986f2948a0b7ba78d6b122f6265dea0be4c549c9815518d880b4efbc6a7cf6ee233f07144ff661ecacfd4c25a127666ee452c2b6ad49a8af2e3ab22f864db7324041eb51f121754e8fe847433048e4977083be3106f08f64cea2bac7387ba4d9cc33ecedfadfbac209c3d7d3610386e81593b87b25620febe8698436f5680799e67a5c0e7bc52cd7cde107f0e62ba4a1907b4b155c4b6d8cbf407bfdf8ffd9b1bcd9efa71824f14d6dbe7ea791dbfc33187e94d6aa509de79f15bbe0ac2fb6da58621a7da21f1bc2c12c7260c78664a3bba17718cc069579f1ef935138ad36c6d81b6b3b09c979cd658c8a1eeae3a57b25d51e2eba879f18cf7b5412d053317f91c51bb1be0fde6c07b9d1aeb04f4115625db8a5aa8c24a9153480c73d98e77629bd164f4f268c34817b628678df027bb38d48c2c4f62b882c876e2ed4ca19ce9ab1201374ac2241734f15af7f2192f702e32274bc047f4adf35e6acb499bcd2ce2188b76e7136919aea794f3aef43c028cf6725725189f5c658f4487d571a4ce97ee98e98d705aca977cb79e7d2bc8b60326d65c448e4ab99088344913a78677e41fb82e317fb369f05a137375f6dac4f949ecb1b09d7ca3bba81110ef882bab38708115621cafb1e8cc009e597c6e581ce0b9d58e6d2bca21edc3e021571d8c3499ab461f24370dd2531846c0f5f0ea4e91278ab3411e2dfbf9eaf6b7bd171a9e93ff303f714f273a5397609b12c9a767678dbd40be9d2f6f5bd580cbe6274f17cf123a9df42c2f2acefc9db8e21dc98fe7c7a7f67e5fc0d539ebd615d8d50f7f52504c395da94bc9d1be961c1efcd8de6b853989455cc8deb858709a1396d4de236e1cfba731e6c3da889f18a4e7c6d636f0e4a488ed2e761bec0b2920ee53ca0bf52f46a17d78d60705b817ca2ff00f8c09b658f388016354893a811b578fbd5c1e9c9f3f8edeed87e4b4a33eae686a88f36c29ecc0c808adf3b13d1b458fc2f440b8aff97c7c9e781173d70967dd6f2d0c5f7d6bc766ca25ae8e11eff2c15504178d19810fb815670e4f87396ae4ac221778a4784a3cb626ae8118fb6887a409c011cb932b983392dfe1c021c85147b7210c2437e67665041c6a544be8a78ff10cb8622e4ba35cd66aa7927e9db6c09ac65d6f19e91ec93c8fc081fcf2127f1c264c6877e78a335d4cd305bc4f7ee3efc8f71522470fb795c2123cdf5357f283562f908f911c393a0f686d31c3e7070379a3aea071cc3ea51682467c51a72f71862ac0330ebd8e2c6613fc5ce4b889b3618f3cbfece4d56f143f74fcd35bbfa6f30cea16d59885c8d5426b362a95f67e81c00f3a2f45841a50d11bf9233ee40b47b02ee3c3b8f5d13860f7e7a2ffa0b4e8eff6b72bf0cea951e8c8891f5b5f39f44719613cc2dc13dfc9dfa4dc637ad7a6ffbc1720f4646f4e4f2bf2beaf5f37286733a01ef5906c5d13dd48b73bd5b12efc3cb74e18cc705da78f7d2026e937b6fb700d7125e969eee63ae16646f5228a7a3a4e951134d5782eb94079ed96e873dd4664839c754d1a47b9b45d8067e2e36cca2ce478b13a0d67fc8d6144fd6ff6ca12719819d705d920df15f3ae1a9efa53255d26ff06da8e14cbe68ab3cf4163cf5c511e3cf4e8be8c85a8fb1bf113f032b0ac206c0db7ae0be4a7821e44d2022d355aaf199e5785325351cbcea438566ab7411f51d67d17eb16f185f2a8f62a74f07c2932ca65ada71ba1e1edc7b3bbb534d7d4e7f8e62422bef68d2bd6e993b5d4e993776b29a9f6c4a15e6c31c7a00dc7eb9074cfdc86f2b3fd78d42d21362eac59f779627fa24ef5c695f599bc8d71852fe246cec78a7a9d424bd63cd9646843be896519fad3f83d8897a01622b5d203d06536fd3bcdff52953d9c0fd87966ca5ed17d510ebe61e741a3da5531df60457a71a1fe5626fa4c05efda91eabb3c29f670ce551fde36977e0233d9bce3ba298f1ef56e632d3d0d398df574bdf5853f1524fe786d127e9b7fb57ba890bc3ce09f63ef43053ae38771b67516f27aeb829cbde9dea37c7697a3b7f3c670a5ced4fb790f763abffab6073e46427d22fc945b3f80efb37424976116abbff0dc6bbcdde14cf1a8f8f78e77c3f12257f7cd4291b95058b7d37872be506e2d237d97d0a67160f9ed3ca1be0f5a9bb406486bc7b59c53065c09a25fbdafe9fd644df6d7ce745d3a03ccc72127390bba5811f865907bea8b7ef32abe32e805f104df481639a7850518bf656da93d5df98e134abbdfa72b933432fedfb3f9513b2f5b46f86aa7d06dd0388bdd8b8b3142fb9bb388e28beb1e3020f676a561df625c8d5713ec7f8ecae1ca5ab6be96c9223ecc491ffb76a6be6431d6412cf41e45ce78bd45dde3fe99d358c411ed2c12df6ed77fa058a82de60e0ac226f7f339c29f29448d308a6c870b7d47fbdd35657ee34b9c73916d86d3fd17c58aaedeee3991571fe425f42ac466ae118f5f566fbe7dbedc3a1293feaacb1e7c619bb2f2dbfc4f28b7d09fff307449b785cdf58df95c1fda6dba3a19e505472f39e57dc219d630f9bb8b7937df52f435f527eb9e06bd166c4a763a9d0c8ea419bd981a547bb9aecbbcf583ed745bd5a461976beaaff958f0591dbd6d35c0b8f7e23592abcc9feb29e443b9a5d27b05c1a8c11af3c5db1a5fd45bb448e4b5babc362cf61ef104d439f5d5f8c8c9e5cf758aa74eb750ce35039d5ec1a1ea98597ca67e8529f69decd7b2d7d859508c02fe9f8837a66b8b5db2e882398ea20e6fc0b9e10a5dc5137224ba7773e9ca7e9cc7b9b4e45ce6754573797c3e97cc71273857b67d59e05912863fa97f76b20a0ddcbb073dc7ba1ca7983d8c86a055c776793c241c858afd214eb6ad6cd13b103b47c24c477a7aa05ee857dda1de4d1f385b86e354cdf13a5f5eb798caeb42baee555de2758ebc8ed5f2ba047a13876356d17546775d77bf545e87bcd8913694d7b9f27e7993233fe8aa74ce32ffab5dbb6be53df36befda5eaed887b333b6c92e525c2ff0ea948b69fd468ab357f8eebea6c610bbba5f1ef1d8735157a398fe42f76ce3f43c72da753f46bc465f774bf8a2a9029caeb21739640799b39b9c27541b5d453f44ecd8d5d14e2ad9df50f0de9c0de9cfecaad73e063fde1674cff9a2b5c9c823d5da2c88af659fb2d9abe9dbdc74d5e7b5fc52917c589d46a2e02bead5f22fb4aea197b9307ccb96799687f34a9c978b2973ee7569f8c9abfd93c4eac6571b753b3f5664eb0526b200dd198a2979d9b4711de4e237741e06a94e7a99f980033f7f964d0e14876a9283423fa8e4a72ca69007f563e2063a0ddaeb403bc4fe765da023ff157787728c1e79dbb61827f2f24bfa9b0f395c57f2eebcdd643cb2abe4ef63907f360b6bd6cd45931e8857715df345ff7c0a050f9d336cdf9d5922ce82dc837635ddd69e3fac33d0bc56055fb33f86fc9be41d429c555e76b14c0075fd8f5587c538134e8ab46965ff69c89fadf16356821ebaafa937bf87b12a2cc08de62553338987f06f741ead431f7145e96721b59784d617f077ead48b73d6da58248a245f115fc7679b38e830b74f6bfcb6b672b1fffd78a6bb7426f47f571bd721f7cbba74f612d3aa9d3fc3dba5bdc60e27d78f3fee678deaaf624c1c2f2adc557c78257e26b17fdf499f80f8eb31e71a8dbeb04efe4bd4cd802b17f3a623ac838c1ae48ffa8598c05f19da9a50db34d86feea38f7fc0bceadeaf2be458f801dac322df931ea17e5a486d9b423b2f1eb9a4d2a897ab0d6da9c3e7d684abb3cd8e4751d43c01bb6e551aae1f93ebfc3314b188bf2c7643589f8d312ee2e12fe20c03fc9b2bcfc2284c490738613ae6f89254e20eb037630ebee181f4ebd962caa02f35522f6e296af666bab56e7476779f2b829f98f45cf13cd7903f789a59ae4aef12869b067ae78a77b4ad80d3b3f6c33fbdaf17fdd0a8c79637057176f9e21e0d1b033651259d24d1f71446b6bd88481ff28fef68ce15c77e7a1d6aafe159742c087f926c1ae4a4f48193604379b44b4e3a098ae04bf573f0d3bd5471f66beaa909ab1368aadb9c6caf8bfceacbc6d6012f63fb99a68e91bfe5e8d5056ad2179a4fbc72d15ba73da5d8d3c2423dab48bda588210b138edc8bcc8571aa8c80234f30ac4fc109247254846de65ccba9073e16352db157e72ad6577486394e3e205cb9abb35fb437004b66b30cd68dc1932ac5b5740d50cf695d96c4fb00fbb88dd38391e972aa491cc664ab319765848dfd897d77c47df52b274c67b8bc618e7eea0accb778de674a7cb698a72dca19cc91e05829c6d4e70afb32472c3fe69143eb5a44ced9d3aed07f11febc16d1eccb7ba71a68575761623f027692c63e0ad9cd470e44b77626a8b52c70aa82032011bd778ee4a081735e8bc6d75f5ee8b6cffef4744317f143386bff6efcc919dfa57db7d990cea1cc722e2bc0364efd6d75f0014b5d2d26953d9fd8c63ab455af463f2938c37e09d978ae539ccb6b660d40c74f7cdefac512f7849ce167ac87e079aea01e643cdc63dcf24be04e91473e957a21b603b901e2486735e2eb452fa00f7966cb033c0661b144bc2efa3dd4cd4b3b6790a750da3577a01c17e65de7c217d00bcc8dd2fc8fd05614918b9c097e9c2be13be177c027f63bcec617dae3a867976635f1b7fcf842eeb130d70f94f3a39c4343fb3e6c36535c7b1f3eeef1352f31ef7d75694d8bbec7b81817a06b5406a181384e3b9d376cd19f93027d5c26f7d88972aca6e06fdc6e2ce1bfb67e9fc09ff8b5a8a303772fd651aa71bedbcca59ea4d0cd30aebed4576bedc2f2c6c754bff31778ad5a10960f9e576613e4f40853cc0db0209b323cc75543cc19376ab2e941b2d17a9a7b52e33108994a67666fcf0a5c12fad1784eb39b773b8b78d857bd3bcee4bcf1ad074e9377d93bb483faf5ca9add16560eb6327451ef94bd17bb9185efacae806fc0e1b54dbcf12c0c24f60471e77b157b3ff7d4478bf92cd2be9fbf361b07e228eb6b61490d730df8ba45ed88f2080a2b4bb15fd7a5afbe92ae50f4e3515bf94a7e6d66518d692339ea5684b9898bf15af8d0826315fdb5f375555eda7d3865913b202c78d89e93804f49608f89b57f63b287bff2c41c4687af15e92c42bdf3cbdb5d8f0171f3776300f9a7c959c422beea5fe798df4e71ec8ac8f9c823e255a9a86ef9ab781f115798ee021ecf648a38bf0dbeb50f1407514f836b13d746899a49e44b20b76ee8526cf088b51ebea20f1186b9e44e7c88cf64eddc557f624e7d247545d6efe73171d364367d5e622f197130a5753c1618ae6a7e1b413e535b0e11d7c19047db0c6bfb03f916b827f6e0392b34e4e2259df1d0186726d69745aeb7ef8bf3c34a89e01c890fa4dd642f26431bd64d3ea47de4c7c5173cab38795a7901df5b721c1f08db861c6066fb3dc901a640ac427ac5d0032eeb267616a29e4394df58b994589085a8438b1a29adc5cf39d48f6d19f310ffcc96b08ec4e364912d0c73a909535d1961a793c3207c3a7ff91039c69c5523b564088b7663c08f69473be548fb310ba9bfe6f4d5c62d50db3fcbdcc0ea7d6443be14f0316b0bd776372e667beec691ed04a5d5fff7694e7c68e09f2521d6b1ba1a98f392297bac81b13b5e705feb72f488b930225de4e8458f543bb6a1ee98d4a7ddedb3d995eeb92effe69e56bb36b6d4db10eabe296b22b03e546fcb8f341e85897db784cd8cca23e90d49fd5d4d3d20f6cdcc4da929ad62edc949f542f456fbfa665c6c49d3e77c20adcf5c8735c55abf5cd4ac4763ec0dfaf4943bbef3a9ccdd7376e8f41ab8c14a67e06d97ed6f33857e527c16f91f563acb570d79b9c8c74f8af16a52608d70f4297262a2fee9e3f88d8c7eec49bd100b93c9fdea3636e2c1d49a21a75ed0cc34fffd7a6e63de45341b128635d04635e03c9997bd9fb1e6a15e8a08b991e382ce99920523fafc902a2e623737c0b9cb23d2ae1edfc5ebdcd619e60d568a3360e51dce271579baf7d14b807146aac3b9e1abde1769b1e01c26e21de5d8e03b2a9293911709ee7fdd1f33e23b8b5d3523ac8eee0d858f911826d8206be06d7d1c2b4585da86aba3ef3e6792db2aba522ec3dda613a89b55d0a79d18e34588631f9d8576ef527015baa829ef5c48afaefb1d825fd2040d7971de4d093f469c88c1edac04625ef8c9dbba57c29dafb4e297c0baa80669f92745cd912fc616bcd7603751678d17974514c9387255b73e4177ade089b4dca763bdda619f4b743e6794870f85aea598ab57c16557097d6e0f793af2a8fdbdd83b03f9e1a9e86dae0be40ab66e5eedd421ed53d4f7cb82f31cf206766fbc686df28bb7bb34b2dedefaa4a6336ecf53ea234cb167b5f54d83aea72c244d6ff0597c31de81727d6184eb4adcaf30c01e8fc879712de5c99aaa8c75b924feaba307b6b58dd57f6bd332fe937a316d2fa9266bcbb9a6ca528c51a4fb27e1b7c4d74904befd90eec9feb5ede546a6a4374faf40cbacf5e37757919f72153ea5b31b6c96fbf5079b85395d3bcc83918dfdab273fb26e7ee29b4bb05d07afdeb4efce8083f1e745623cc49cf8e3764d135f17e523578aab4aaecf90cf103302faff09e64b12837ae6718db73144057e787c452ee46e2dc6913dcf2ca6c9fdf2b847276aeb77ef04a79882b998d0a21a5ab89ecafad4a0b00406cf8845cd9e03f722eccbfd2b705c1861e3dfa8e73e37496bec81273d89489bc2cf38d6faf4a8f5f1058e7ea57af09ce0c725c0bcc44abb926f722e9437d2bcde23971c73771b1775b79bccbaf46d43257ae977d717c2aee3fe60af5a3585b88397abc9f5f5ce3609be5177887b84b902e3766f3b5233faa2cff3e9fde70213f03ea2187bbe8a2ba8e1aac65eeefbc45091f795f2962a6a85897c38d9e365f37096dbcc087467fcaaa1dda1da01f48e1b6ee47cb47305b87b1a03bbb5d7cc8b2ca19389b17298e9fe1c3508610d35cc5ad5fe9c3835dbfb087d00d000708a126b52c1d9445cc4adb51b196ab7e3bc1e29c7b16aaf9f70a125817c46934cfa17bc8dc92ad47707bf52e8308b9eac03e99c40be97132f2ce160868bdf70c42d4ce2d2574febdfd425105b6e06c1093917fd5fa4bdb108d17f5758bd88846ea3bdb266fdbec7074c4e757b552e4fdf250fced247e9de4570b3f57ab580dfd9afaa2bdd27d467c84bc0dd1e4fa288b3bb1c1c7bf16ae7936c4ba155c0f9a9088cc2afb0de1ce833514b15f99ce80b6b4665312dac8779a8840e36ac6369337cc03b41ee53cd81ab50d839f7cbd3ce57e083b213c8aba683ee7ba516a26e4baa382f4fee97c8fe3b9c6ba6832e9e9f1cac8234359302736315f635554786d834ae3b039fb455a00e34ce6baafbf3838bda7bbe6e94b047446dccf634f583f02ddd7a8c6eed3b2e3bcd3cc1c9463e01f0be71cd6b2cd266b2dd6d4a1a9eaf7f18b7847a12996aa16d6be7f6bcf7eab71bae3b7b1da69d9eeaeea0c97c35d8866301fa6d766631e0db56d2937c56e869c86329f7121fc39c427e8e2bfdf766ed6f861e21f737ef9d7a518eb9b89153e8585f1471aec0e88f5923c74dccf93a62465481dedb2a72f674be4589819afea2a7608eefd8daf57885bacf9e72bde4843bd04674fdccbbe747f8b59ea822571325c6d87d3f4fc5b872fe413940bfc3e625386ec3a27c433f6436748927e96e6dce1ae2a88a3a2cde312b25d6517fbea6efbe073daaef67c486bb57af919ab8f773bb651fb25707f245e259a1d06cfbddb37eb77f80231672e105f5ff29be65e1b53c43cca5b07f4154d52bb49b3ddc99f60adc791c755202c99d793bc31c276c9c99149ff3e1aba240fd55df8c5922e3fd33f1f0ae902f666d391f84ad0fe28a70ad5f924bbd4e3f48f3a2880f602b45cd5670b88cd713fc37ce74e2b8a27b33c5b9502d214e7e5ef02cb6d7c199b8875f5e153996c7506a1b09bdcc17fccded5970c1ff275e183b2b67ea22fa0d07a9e82b15b6f49a5ba7a7e7cbbad360d8136f4791505d5f6a1076e74a72f0880f926a4e7e7cfa0ac1d74c56e3119e23fc38572e30df507702fca6ccddb8d757d2ffd4894f949fe577b4c1178eb7bd0a462eacbfe26565495d10e23f841e3ffd3071c51c14d02f6401cf551bb30694c7c19e23a95f607123e27d2e58db61643f787593392eb98e79b9981e1033e43672cee22be816286a9d45d0c79095b3418eb9f4959c2beaad02eed0b4e3d076a0078c9e9de3dccc8eeb8e63e474dfc34c3dfe58370b0b3cdf84768b0f1809d0a98854e3c2947fb3576dc1cd007b6ea6e7a4d7816754a047479ccf83572f8f984f53a04fa2225c8c5df03d9c49ca729095c2d734bd30572516362c1670d6736d8dfd97a0c7cf146f5b7dd279d3bbcec45aec508e7df8863572a6d07992ef86e4237fb856d4cfe9b67bd9cb35fa1cb5b46f3fe8f7d8af1af9156d0c2df9dc0f50b767376fcbc90e301692763bd7dbf1253c7dc72bd8d7e403cd2c37621f84b98b745ff7c916d06f543726e1dde59cc54a1bd362af92a365ca3d7f75a77156c93813cfa58b6f3a478acd57c8f94abc12e4037b5b57efcedb6221717dc26f661f5e93eb4fe62cc43d7942ae3eb328672af5f8fa89c8b30a5f0cf59e53c1af17ab426b42e8fdc2fb2fe764bba368d0ce6b1891dfc6f65eed3d7b7602b9050bb120f7ba1211f89c4b37189918f77ecd213f66a6a2cf4d686688d829ac05e775d869ab389f19edfbdbb9f1fafa8aea4f9db41cfd26ddf7f95703fef326e645e85d634cde385be4236d96c48360a6846315d8075f68c2ec07df7f63d4a00ff26b55edc106978e929794c766038a5f5dec09f4d5f483628dfef82f6fe4db55a89f84fa7cba3d45ed0e33df5da5efdeae3be1bbc711d4b500e7485c16c053c3dfd4f9b73d081acf11f6894656f4b5442c25e502dc9dc03cb010e2e5c0d5c077f193256990daabc6eff920458a380dc469116e6fb3456c16fa71b386f4c6d14791753cb6abdcdfaf03156b7bc3c6edf8b644ed73b543cea0283fe6c4058136846992bf5693fa9ec19579bc78177351da478a91967a9a01b69d72bee7db0ace091680869ebb8e2bd4fa3b8f5d595f8894762e48db0ef4a2f898c564bf8a176689ba7c5fef897271b5573b52bb6f61634f0ee6c15c75d68d551fbfdf9d0369be235c6b39c8145c0bda85f489eee769b739421e29d2fdf199f20015690da51087a95eed5858af47bc227fcf27c4b3f1a6518ff2c2245e39384f730be3f99809adbc4869e3f9883464653e22977589eabcb6101fd6c8d885431e45fdf4105f9a29b346dad950d81a916ff03abe4675557eeb87d3fcf189722edb6c62915d3545afdcd6c8fe83df68f0a6bc51cf43ffb348b13799e5dfbabd1db5f60263075bd60ef2d2d1fee11a677d774d672304fe11746332a82b0ec7c5fb887db309a14d67f0b1c3965bcf6cf496701980e3180cb106f32b8f84eeb09d5becb846dea3a5b6c908d38dda94a9d07cc3fa9888758391d42e85fea9ca7231b7fc6f6cb50fbab546b4156723e47a6ad2befd71ea344059564c0bf24dd545d78b5f8781c42492afd614d1bf7d97caf0b9d73b33fb73c63b8df4bb392b073067ecd76a22f5cfce90776065561be6c3ef987ac961964e3b5fa3374757899dc07ae35c71b4223a410f533c549ff8600df2c689dffc6c2db5b1498a3d2bed791e4792cb4272d814d1773f218f08ff0d79589f304089ff25fb9364df797f4d3261cbfdf83a96ba384afadd0ea06e52aabee17afa817951b65b44b8fe813b6391374c72370a4da7ddf0837ad25f7566f672fa666452ef843d65bb8de4720f23db89a716d5f8a7b9be99f4758dc25db1fc937f22b4b9ff17fe89cd8c40ebadb3d01ba0dee997af1a4a8eb555c447114e13f1aca7ab1b45bdb3cf55bded4fe267c36bcec6dd9a6bac6b879318091c25e44ede7a6bfd2e0ef928b0572c823ac886ea1c299c53ce1cfa46274b5de602bbf94fd217c813f3284b30e68dab71f18e58d9f86adee7f551b744e03541c729bb61efca6f6286225671dd8d34d22af0757ec61e90f8552b26ff17630ac2070ebb38afdb575093625037837ac5337bcd81eb78335ed70ef5b72b05d64bfca4c4fbb1e50acf32e83de48ba7e744528c616d5763d6509ebbff7905dccab1357c7a1e5902f760e6251fa46389e7a1e7887cf70a7b45f209ea5b7cd72d77e4de00fec0690e7dc74e90d807f0370f060b25e7e34dee9fdebb6426ea9169c3712e754e7f5cd9efcf5173553a9f39f50a220ed525de2e7acfe6711f950f7badf5ed09c300bda02c62578a1fffc1779966b25fe04e9f84f0d127597f6a0cf219717d9d7df23d5053e22cfbaa5a5f1af609ac418a57a3f390ea4588719b23a691639e7cbc222e1af0092dbf360ef45ce461d82d42d2ccecdb777f2c7b5e31b6ca15e4cbe1ec7321393d7e0cc377f8ed791f6704b8181dc7fae0edde06a1e40ca9ea90f2ebdbeac93ab5c798fb3f8bf827e61f5ec3ce98f33860cfdc87d7f5c26f337bdff3076d93625571a6420d229d4bcd08c8f530c56b88c7fd6fcf974021de2fa1fb8bfc88c598ea0b85297fcfa3efa2622ee19695c267b10b6ba67df70fa20b6871b3dd22261defa279384f17ff709e26ffc3f374befc76f6c0b919d7cffc1b7a7fd456d637e379678bd4d6ee70e0d9e2b44e3d3d1d175b798db04dbcb517a0e54ff530c5ab9fc5ecdc043d68e41e25cedb760d891c652aebd0d4f30667fadb75aeb8ff477c9240b19dc87c1bc2beebe2f2557db01ef21236df6d64fcd8f35de8f3e9f3bc05af7ab9193bb79ccb33fb9e29888bd73615e24ab539e9bc3c5cd7fa41aec234b9cfbfdfc74ca7cbe193773912b625337dabef7b15a5f3672ce5c4fedfe504a2f37bef5cefe557ce588be77be825e027c28dc81c522f5e44ffef1fde9bfdafde7be34523d4772b9fe6f5d6921f4ae023b156921a734d5df4fd2b3f7604c71cf8a5b32618cbd8a971d1f7f41baffd77d0bbc698aae30871b0af977458abc1b3b5b0220c1b7eff516f360aad676b2444cdf8b16bcdfaf943cfd5533a971fc64cf4754abd8a00f0f71f88577ff1eac39e72b3fdbd0767fee620752840dfec847d78b62bf074e5f3dfa574fd457e58903f88f6e3675394187b363f69cfe2597efa422ebcf7f58eb0b085ee5ae5dd593d575dec9b773afff626709502d7523429d42e545fcb253f50978304cc88a3adacd39378d0ede5f6ab81f73e9263f03b7f371b8f2807766c7d6681a3b98df65277b23d3f27c4cd406badfdaf732aa29cfc2e076b7822d7b8d24633e2a392760f31b879345305862fe163911348fc71102b5ffe03061fae173db167c2a107ba7346dff8e475dc87f34c5942cfcce48a3c78123b7f43bcb2b1d4ce677ac66a7c06ad2add3089af3e6bd0df8cd989f8543abfa2971b098ba3d7cf8d6887ff28377297c7de15193e7b1f134782a849ba9417c65af2435e461bfe87cf7e7b6a67a4ff1d8d20a7aab4bead73867762a84f54a9c8fb447fefe53abd9d5adba2029fb073c5baa5ed46b3e6717e739a5f2d3da7d863b2529cb347bd61bb03c5899febd2233f487071ae1ad2cf28c6b9c8dfc1791341edafdb1b3d5f3d8be07c5bee869327f7ddfee9be4b91cf9b1dd1d69bb8971de4b5065d5cb13e675fc403946f39614ece6dfc42fd1d18fb0bfca61f72d2b5ff42cccad9db96c32735a2039cafd19030997eef3ac0e8087e33d8bfc0dfa579f572f09b7b498cb52f6a08e21d90b7bf1ce6df78c978d9e3eaf91e7b6acb2bdac98a7818b388ce06e7c5a75c835519417ca03e4bece169ffbdbd47fa59c8b52cd6db2cd31d3a2fc55a249dd8147b1843bd907cc3b86e07a46174ff992af42fd64981bfb18067416c786fc77567dcbbee436023442d36bf74f72b0c3f3e8c0b711dd944b11fc777b8645e7dbc3ec913304bac457b2df8c780afc145ac4ba89daea18ce7c46ffacd67aae09927adc7555d508ee88bc61178dcdcab47356ced70c2786a9e6957a9351d084ce803f78746b8d147be2d8bf22db557ef2fcf7b38dc2fa93526f1a7234df624d433ac6573cddb521ef57e9fbc22971cf181064d71443da693d71847ec2fe6ebad4d7c008a0b384c6755423ef471dc0b6586be7ffb5db7f176a807c9a3af5c418c695c28bee4eae97c59912fd553b3d85de74fe21a9fb87edaf5f318d7a491350cab12eb2be82b25a4d9f5c73562c4f1fef8a466a9009f55bb77047735f471240e9db77cde38900b53f74717b1073c74af52a33bbebef6735bb935bb1478cefeee3ae079ef5d07791fe6d27e011c8699977fbe2688ac4bb81b8ed914f64fa01c2e2bc4db603fe82d981ca8bffdb8c2f7cfd1a6c81e266dffcccf1c522cca348aa5f363ebff12bf58dee3facea7065d736baf111c11893d761b461a6f4afbefb9e8df3c4c11d3a3931eeb632e4df81a6125e33977cb6698d7f8f2b66e43da92cc6433c4cba2868babfaa64f1c2d3ae510c3d0529eccff156c78fee59bee93cfc518602d1a74d500c3fa18178d4cac2b627ec5d5bddd5091bd40bf89fb0ba18f01bd8ba9a2485e8ddc64982b2a2f6e493515b7972bfdebba4bed95761cec441e79eb87dc7ed68706755285fae6e6f94e5dc83a7bac52cf526b2b365e684c410b78631453ea5d7996472f044f783f1ff8ec1a9feff50c71677e9266942f45fe61238b9cfd32201fda8231d29d31d53001878735dd5a7e5f8da14e247407a3c89e7181d13e9b98d7ffe2cff08377d850f403a037ad8e849d2d1bb069e9b6c3d0f6ec627d980b2d80d0265cfe7055feee3ac88b803e12dab258953a96d956d68d086b6b46d399ecbffcafe2101b740056533efdabbcb9de611dd2a68d6354c82fd606c545ce7d9ebf448cde752ab9a7b5abf5aa61defa9f30034d31a6710b9ba7fb16b126ecd3db225f455c8d19e9c245ce7e01fec6b6803edf2c48641de631b7f8d5ae133e7d1b3cf3033b1e5776e707aec535dcf095c3cbd39a6234c3fdacc23cdd466337dcfc7d7eb37400af72975b394f04a7a7a6827f94f863163ec90163ef17f4ccb88dc42ddffe550e2ffd1fe6f0782cf6cdd05998988f97f5ce5efcd0fc44de0a1e679327f95bf85c70e064db677638ea63e8e5ef4e957b9c15d3500be33775cce87f8bb31a2c40cba9378fc317c24db02df4ecfb3cfd24dec37e9e823e0ff8e1f2ccbf4903c41d88f3e930cecd27e382eb2182bcec4ebc7368c8355474f8e3e76b281e592bd8479fbe6591dec593ba01973693d37b3dd40dd6d67f563708b611712b3e89c158c69a67b51006ba1eeabe79967f433fc38cdf7f3cc3b3b531dbd52b6d3ba6bedc9870bf12f3e1777ab9d89fa85d06e1ff22afa17888f910b96f81d97743ffbbcdd450bb449de9fffe37f286c66f857db1643bb12638243e65bf211d67aeae49af3ede0c30060e29cfd2c61d7e928ef310e311c1c5602c885b0670ffce097da37f1b739b9233b69478a8eb03de69eb45d5cd1f9f3f30bfe0af386092a3de59f2248e4f9faea18e47177144ce0071d0b5d4b8d50657c4a985afd07f6bb2c8f964d1f7dce83a02dfb68d4b96916d14e54c27ad435f2f5bbf16fc1ec5bd61dec7ccad688835e5d637b3b1dfed4a79cf4013bffbfb3cc4e9416a976b07cd27be77bc66a9d853fe7e6e9fe9b4ebabe7c393b6b45d24d86bc8ab0fe4dc37a2f844bc622cdbfa921b0af704626dd81f9fddbe5fd0c6fe7778a5c738b03282e42e0e7c98973bec39f1ef7c92ce721e90a609e00ec5bd75c90b6fe7a29fa1029e3deb0e53e2dc634aaa7bbc08e6a9004fe00efde4cea77fe23bf04f6fcb4837d1c9d51971c9b7fb7ab7223e9ee718b869513a4ab7467a396ca1033fd0f3f2446776bb97174ff1a3b5d04bfa2fcf3355680e408dc3f8083bbd81d08b2cc5db5dafc487421a6c5297463bdbd053538de7526b46e234a71168866adeee407c8ed375d8c67c95e8b37689af49d95c645eeda94ddacbfef0756dbb187b5dd6d6a59dff5966b9d735e1084247ebf84a04d7ab5e944baae17f2107fd97b7dba801f555877697cf8c6cbe88fc5e0d41c45ca1c741c72fb2aaa7be21da003335cb6736f94f31e7dfd480ff3a9fc2157bea69c3e63e4e056e8f3efeeeb98d66b7be8dfeed350f3e98c035bc3fcb6143bcb98a1197148fc62be05cb1336b86383c3661c4a3d4f3a1a00f21fd425d1923551c51f3c59cb42f7445eaf4447d4c0fb6bff589dee9fcbbbbafe039f8ed7dab76bd78bb3de56cffa6be2f31f284cfe9cef49e6de339d52ba03eb77b7bb64e7438ebec4a7cffff63efcbba135796acff9206a8651e0b2401324aac2125a1370d2c6310021b6c40bffe5bca884889c15575fa9ed37dfb7efd744e198da9ccc81876ec5db3c7b825dabf40c7df589ad3af4773b2b18f80d7c65e24ed6cb4f89207fe06c6aef9e6b1df715d43638abb761ee49844fe2d04bc0370b4a66fc707e3e190bed84cc461ebcdf77830c0d7536ecb127b5b3498fa7149dc370fffeb4567eab1469dd07041ba6ef86f5e4c12ec4fc36ba9fb9afa2313e44f73b5155c2708a72e7143806f50bb6bb647ce3e4de24a298f103d7d05f03de7579c01519f34babec90984a43df4526c55a99fd6f80681621921c5d1b127358a724d053e6dd5ad67c42f10b4fe75d1c4e6a457b47dfdfa435ce00f573b7fb45817b1cf9fe9fa548766a301eef7038cc73767d2c5bedb87f84191cf27b5a75658ab0e35cc2fdb82f7f4bb1cb532d5bfb5c18273e1a10d16fd3a69658f889f29db604ee12a4702f6378bed51bab1df657f491ca6a0c55a52fdff4ff104a4a5a9b67f5f748fd7dbbfbfdee20f82dc24ecfa0ee2f9d07e2e48ab1c72624247c37b1b44777908a8f3b7f644f746d96435430ded4fa9171ef31ee9ba3d6b25c39af6a89079a7ce352f82c748702f32ad005ed650f4b91b33c556ddb7db3ce8a197429f13d61698e256d3afdfee31777999c64f1076daf60ca6819fe2adc17fdf2bc49feaf9c73deab64c66c4f9c0f947ca9fc4f521e7ce5e8003643f6a8f09ab742338400c7fbb7a47bfce4ab4bde49ef579b36fd9bb94700e51f91ec85a4329f89e1cbd84dc58e4f47345f6a65e0288018c0c7b8752737a66a807ed45c7e63a89d0105e87fd40ea2995434f5d904e1ef1e1874e4c3ad9d2260cb96eff402dc459aa11d708e23d62d032173a9e906f5fb47388f781e78e3d0bfd0ea8f9d46d5f95fb157478cee5bb07f6117a588b4f573b53fd6a0218e52b7c79df434dd54c709e363676a8642671051cb13eb81a2d278cdeab9fb75a6882c7bb6871236adae24698cb8b346f6da4cc2b250ae6eac2d7af4ca19a37e683027b44dfb47986204eccbccd95febe3715ec65cf011eb2e1423ce351f1c6bdaf873dec573968d94f332c38e5a0c31f5ecb2ff1d58c3d618880dfd17e5f9af7fd10ec6d30079bc4b6ec2273c45a733ef569e5e3d5d51acd4c26d768d69c3346bc66335fb4fd48bc9b0258207ff2f3f1fb543bd9abdf7265e4b23e09b8f96444fc146e6d59724fbc9a4fd3b67f4fe2dc690e0d44fd7d69109f24ef35c70a6e6e7e56e43c943dfbc801f45d1de09b67bee642e6b2cf38db783a8df3bcb183c07de344f0b79523ec864a38cb89df7ebf7e33675ace4ac9dfd2e523113a6bc0cd56b6e3a49d2dc23cb45c8effea1eeee8aefefa41b9fe96cff00e43ebff776168b9c85140feab53f3f89371bbeacb90e3a60fff9dc7ed6fcbb9cb710b0b8121e3bc3c021781d90b04c77438cc237b286c7118c27f63fbe46eacf79474aa2ec8375631884549ffe1eabfcd9a65c4c7a915a8f7ebeb459ff87433d21c442c42403834f9effcfbdf156bb2dcb8971c737c927b751d925f4c1ad2ddff4e103b21ec28f5a220b7d00bd539e5bf2fbff83d766a77db177b6266b0911bbf4aceb13fb119c20ed73f15bfe5e70880832e798758203f4b7d4069f75ea5dd4b918b21696264f3a64f48701db2a1cfadf39cdff315081e33f06715667ecf57705b872e38d6a1b7a8d524faa1006bc4241ff14e8e839cefeaf0841cfac3202816b44725a48f1827cd7bd9a0cf58d0da0af32d615b3ac702ffa3e590665b50483fabe521018e519f7aef259f02f5c7281d7c9ee004204e82ddec9ebfc443eed6f382f2fadaaac3cbd2ebf89cd664b9454df20daf33c415518cf3ac955d0cadb1781becdb1c5a015a16ad7ef304b401459c70229b74ff5c9097892abbfa732ceafd733b91735713be1d4f4fdfaf510fdd7234f5ba57e972bc7e176dfa75fd2e77ef3f4950cb311f1d47df3c970d39c9fd2521cce81fd8e4bbe7aeadf59d8dbe1bc7e2c702b5dbbd801dafebd7b7df85bdcdaedfe5eefdfd68817ef34fc2b37e3f3fb73bfdc1dab43afd3a96b05b6be2e31c8c9646789f83a96dc8a55e068493d372cc4384d1eb59f25ef947069c88cdbd579ad46944cd84367e426df5b024bd09cc190e47896ec9fec47462b5dae5d067b5cf71af4815fb9dfe9f135eae2a883be8251dcbd8e9db391906a50acfe8f4dd6da1c973b7df9f2bd6e12fcecdfef27d8fedb97ff5be95bcaf8ef59159d8e63ac57ff1fc0ffa3db8f93db8f99d8f1e9e7ffcc5f98d7dff94f8c3e888385d5569fb40d911f666c625f7f883dc51321e103e3071b482b4b2d50463a4803bf7ff15b93746f552c2b3c4a4ebfecd3996a3a0f652247c6a3321ac25ee31b86e5e3c19ef0a7b897ef4c0224e621f7292883595f846db8919e6620e971c63b140671f57f35de8ff2c6ef24cd66c19ad60adebe4d795673c6e9cf3e905f0faa1e094f8cd1e75218d9082345ee27d25f3075d6ccdb67f08aef68c5f616bfa26db0ea4ee2cf1d77a51de0f8073b989c73fb396d7f1d73c3c7169a0b6afe62a1b85308584210da2d5c1038cd0bbbb2d0e523f7f43bc108ee485403dcad16ffcdef5effcde44b7aef6543ea6bda43874eb539efaaa47a33b1bfb23554e504f0f56c4a1b040ad71e2c063e9f63ca69ee2343ad3bae911ef9d53db573d59b9f9aff63615557ebddfb829edffdab9db4738898c47fed4fe03f4ba2def593b3a90b7198e9615fbaff63efe6ddfc157dd6fbf03e79691188eacc33efa4e415caadedb1d97316003f469cbe922cfe56ab691ef61a106b812dc3fc3cefb1e33f34b5c56007c3e5acb810518301fd7871fb56bf966fd4ff876f54958d6e79a4d41539739cb49c23af9d9dadd5816ce4bbb2877f73e0ce819a0cfd1629abff339c8de70e445740289f539ce1445fa8cc5b8ff473de9c0abe69eb20d61e9d535616244ad0e6d6fe4630fd316f860ef39a6ce07994f8f04cf36e4e5b7cd3c167c2d4a0a3e4db3ceda5ecbceb198270b52a8dd35f7ee70903d291d3e493d82f780ba848c67ca33d5b9177528bf5d5b1f14fa196b88efbcfa5a7bd9127ad873e2831779b123e4c28dbf548b7d788c17ed4729f1a5e8f611e66ce866da7e4cf7cbb7832e5ea39933a877c16bf8b7a39336d4ad2e891bb183c4a75c8d95bd4b959dc0a833c5f920aee424524dda9f45ff37b72fa8e9133b9b5711a72f8887216284d985fe2bed3c72ac1dd8acda9e42ffcaa28f75e775817c6109ced5f998781fc4fa3f76ea66ef2ef070c177544e5aca4fdfdb3398c3bfc6f269c5f92a9e5187b22f2dbbe98975e41a39ee18da9a2bae26ab10fcefc83344bdcaeb65b5c2f964a24601fb04ffcde91386c88b063227dfe5528a9ae7d84cfb0ff8d87a4eeb23052e3f9cdd35fa430ffadfae7af9111b42fca11ef69a7806692afdd9bed47c738f78d1c4d808eedc4e5f745b2b4aa38249fcfe1b722caf99fa97b180dcb242a3131bfe05acaedfc5ea76ec88e7df710a29ad0fd51ec72fb23e8775966207fd1dace76aaae662ce31ab42f3c15e6d42aea8796fa7f7200efce18d9067787b6aec7a02f583126a594d8cb5e9e4e3efe247f3c3ad3c69c3e663fcbd2e8c79f420bf12db4237c30bf73ddcdbd7a0dfffad8f21b15b02631bf508070a38c7cbc09038c73f5b532f2e2f52a6be52ae9f387e2618f3d82de77e37fe1afc68f96625ae7482f8afb1e445250d55fef4f5e85bb2cb1131c0a8031994a3747b7cacb91e872bfc7bcdafb56c8d39b7fb545ff0f5fd3b7112490ef9d0fc4a0937a6d3754a6d21e629f1405bb633c65c5bc87a293def6dee424f46a9d400ea7ca3c844feaa2960f0308f18e8fb3d72ab064be20ee2835e73dc427068b858bb6973d7dfd7a2843686ee100f71cb71dc4b913f3b33b1fe18336913e751ffc15a7015c0e5f033c5b118bf267fc48714ac7e908e42073fd847bc88114da4aff50d66e227e9903339ff3a73a310b154099c241ac555e1e5d13c02ac1953dcb58c831ec5d21671e7a6a3a3fdcb1c9846fa99e5ffba5c98a7fd712e2cfdbf1cedbf5d8e566871e711f04478a6451a0749365eddef1f6073268cf2f3514f45bc755c4c6cf3c1bb89fec514b90e80dba9e8a146d990b423972d0795e88d2faad5f4a14d8efa34c76c47356ff41f9cbe5b853df42f67700d91dff9243fc68f549963cba3238c5f685d5245c4311326f7f8a4449feff28c18c65fccc7d0d996d40b0bb93093ed489ffb175c54caf7d7166b14ae3dbebaf6c4e10ce3722f81bdd81be7e3ee3d1a7fb4187538aa8ea9f92478c87ca1675a80d621f27e87755b13ba8babdb9ee4bec02352eda8e5cc46db6f5d2857c7a2e35fcbbdaebd1ee55e99f6fdb90f73af9d73e77ff9be2b79eeec2fdd9777cf5de768c742b9b61e610d8b6120f40b8b61b00d494fbf8698bf7498097acd0bd05d7b4e509bbd991f2ed8b23369655df933e27b42ff12e2407acc3c3df6c345eec1fa722b1b6b6a4eedae934738fc2b8c31ee4bb81fc2f34486e807fa3e0726fcd77f3d07063c50dfe6c05e5cce364e2db9151ef9af2c8d4a07f16c1766def69cb193abed1efae5327728e2c0f0e4568ee27ec333e5738bd15e9fad87c08520f427dd6fbe5947d35ff8927f8d13fcb79c9b7fe68bcf5c5e2ca42ff437cc172fea77731c0fbec7efbf179b0ca7b71c5fc5c6de3dea85909ce24afffddbbc52b37f6a6ecdc8d63eca3b71b55ff005619d5d8975167d18ecd2e64cda7353935fe3b5d1a767da6ffa67ff428edf8bf6e6235f95fd8a97ece6b83b5eb2fbeb5cf19275f600fd9fe325fbe31cf86cb17eb0fe83e27f8093eccf9e39e216c3fa9f9dc605ecb761a1e4b227bcbbd70b6ead9dec65030ea0dadd887a5aaf903c09610af832369ea98b3f5fafdbfd33623cfa4bb3a3ab8c7e57ca45cf9f5598f62eb9b7818d8dfcc77915ffb8b6a04d1fd516f0191f722776ec4b71d30f612bcbebde2f311fbc70089c3201eabb4767e20479c927c38998d7c16a34031ddd6132566a8f7c08b31c060133da1e32f16d7f30c241f9e72e6fb17dcd490c6b3f205ba26f148a2bff8bd7b15ddeff3baef3773dcfdf781dd4b5ae0b63197892cf58fc1eefe8fa77e78b7845b9aa6f74e32736531c39bffe38bf286c06d66502e7f49b5848f4003dcce5d0fcd456a6a37b94dfd724a74a3418b19653e5d2fd7b876ba5475c2b6edcf8ff371c2cb2cf870d03ad3f11bea8695dfe651bf33b1f52eb8f1033fb9b7a4b9822979526732e8f7b23ad9cfa3e493ffb8de2eadb1c1ea3dc5ce20421f6239b8d1f2ff50201c7287c5c9572708186fc3961a9609e6be8d5abda173977e7ec561bc2cccc96e3c1b8db1b9554c517fd966de937a6cf39a77cfc4470abd2b36ffbc463fd2ef9381ef828416c8fb24815f55e7f63612fc793fa6ddeb0139fcee310e6545d8ed86485f9ce27fdfb73dbf8f39b73fb7ff5bef3f6dcafbf745fed3c22cd020e3a8322ae76efff6b8b3a31f29b71cc8746d159ac452f969c48b0eee310f8fb63e0540b944d4fc463e1f025a25816702a136e50ccfea4c27d30cfabdba302623637509117a10e417f52fdd9239c0d837e221be67e7871b7fb3ee9822da516748bc189c66a1f6372c2b17a7980fba4b61a158625f3baa417dde27bc2c8913c7d038aed57680f2f4b7ec56f3df46b8e7960a6b8ba73c2f5f99223a673817639af280f619186ed79091a724661b2738efe37ead9f0623da4ded2de33faa61cc66ac8f59ce29397e59adee5a0d2717ea49c70dd328ff8c6b4fe09714f369b908e9d855a65acefe07b05b549d79e39311ec7cb8f1cb9e802b04513110f881cd6b90f5aaa56487b370bca71d75f9179a138445d726bcd647de516a3c704970df5b0658afd85bdf62777dddabfff7a7f6d78117569ec3f752a6f7a17df0adb11fe702b9374c5937c5d5c713d2e7ed31bcb629a9783dae15daec730cd8302c7bdbc3045feb67279d93c5bcf23fe2e6dd5e50930c2edf10b633796c558b754faa725470edd3af9447e5a276fe638e5bc85bd0e15f7ed89f8b5ae742a16dc32786552df4b92c2da37a2cac3b9faa4607dd675300e0c848e78287869e53a35c56f0637a82ed99e576c291fca7b72df16bf95942356beb76bffab73c4ffb138deffe0da45d0ec03bfae5d087eccf7163bd3a98529a24fd6284c58b79e4fbe0af81f6e68fe3a9f22f03009eeb71dbd8aceb1b3cb51f0e546311c179ac787ba16d4d39bf26e4fafb50f508bdcad4b1a876fb537b2ed797e350f7ea1bd919adebec0bd2153848ee530249c83667fce64ce9efce572f8acaf90df7900baf2a1f7093198b577d71dcc5bd0d122ab5e7ba899bca39ee65c5bc17e855cfc5ed41f610eec37beb38935656693566ac6a77d99f3b9e1f26decff9cdbe0f72a8b1a63f172c95fe15ec0a57576d7d633e96c36fe4bbab10fce032d0f71cdb6cf44f23f80d6f87f0747ade0c615dfc037adbee0cf14f9b1be4ef1bd331a482e4ed421eb1cd772bb1635e95d1f10db66ab78dcef78836d81555a0f297668b9493bf33edb085e6a2b1a9f888ff625ad11d31b72d4377bfc5b2072171eeebd1d1e5e6d40ef19623fe508e7549c8ab92f7cbf0fe2e3851ee7e3ced51ef1a3de734c3c83aed1300a44ffbde84d4c740ff897c3f247c7efd8230f50871fe5710c9776792b1f6234601e07c1eb07f9c09833785893ffed79fa6adce9397a8cbf7ba0abd1f81680950a1d8c1311e72f74c9662e4f2e987bbce29bede4a83e89efa2c373d1a9a9f681231dd698956ddc2f6723f605237a3b5c705e864e4d5cbdc77d66cade67f42b873a62e4bf3b0e6a189de3e05d943371cd621ff5e537c7d86e1c0a7d4b4fb176ae1256a41fb4a839da332b6063c473dce9e4617fdc239d3cddb3fe229668e6f2623a1fefc18e85e110edf869ce17dff0d61f9bfb18801712583de4733e3e77f3dbfc379a678bbf0f5fc801435774b9115b9ce19ff58ffe4df8edc13088160f72acfcab89cbc02e1d50a7b77877ab1d6263d9186b103dd20fbfd5f82e22dc6f03e65de7609cb35b5de1a380efd8bcf72ddaf5cdde53e5806b7c8abd858eea76f88cbfe9b39a34b68370d64bc39b0117a275bf67e37a0e02b72ff86fb95516e3b3f59bfcdb5d9ecdad0b8b4d905b47e4e456a877f1f4d07f82ff163b2feacb9e12aab57b3c977debb7bd9b227650935e5757f32106b3fa495a02493e266eea6e5d256f6c6605ba5c9e964a1b2efcad669e3de79350f242177c01b87df091dd6c8dbd623c3fcdaef81950bb835bc6027447c4fcb8d96b87fe6510084e8b28e9e8d775f53b1a7fc53939808d34c27187c33a2a5f70cd8afba41bfb5470c93123354260ad0e3f1dec5bf334c1590ef982b701e44d54fb0771487897e30efdb7c68718831ee677cf570c3dbe53735360a3a116d5cca3a8dc0782eb8ccd3bdcad7fc2ebf5b0efa3d94783d81bcd34e2e8f85f1193d82e2f3fd1370c4867edd65664c42bdfc15dce0de42dadcbd103dcced0d75a5c5026ea5ba247b3473d61a1ee5d3afd9114df7d2d373de2e4b3a167fdf561fc8138cbdbf8632df8efc4de6aaa6e65ef836f38bec5faacc3f1f20f7b4e3c7edd73f2e7f5086be8810f6ff9935defb75c2362bd847dc277e688ef64a6fd83f09d4bc277460a617fbd5fd7f059ef2ae6f9b61f3d3cb8dbdbbd4fdda7fcd48cb71dae79fff75c29c8978ecf9f2af0fc4b3e3dd3f3cf489ff58f9fbfe8a146d4faf1715738d6264ea278e7e256dfcfb3660d45dbf3f49beb051243a1af469dfa11f137cdb066611741827dbb0ff9bbb7cbb6be744ef9539757e9bd3b477fe5ef376bcdd9d8f652f40c9bb5bbb12e644bbfe10050c91e067a2239c788a7c55517758ab599ffe308f83ffce9ff0fb9450eb9c5b9ef1f2bb027b2374862d27c65a73ec4e55c63c42a77db177b5ab2317bb929fba49ab91dcdb4f32f79cda3bf0d2b56ba106b7579dc15057d9da17f39f490c77d9157e103bc88f85df0b8176d7f7e270e5e5984d170a1e792f41150af00b187e3d5d1fb158ec7fa7b703c803d5cbddff47575f069c76a0ef52c2b9a78eabd06a5fc3d8edece2f6e38b48bed83f7867dc7fb136cdc320ea99ebce7a3ee9e91181dcdac8e3f2f720f338975d0cea3a5e139bff62d4391bfed3c8bc8837045ee41b374fba84707b1dee3feb56e8c8887ca513a214de2db7ea496cfb930f9d7a39c50be7189e3df12fe05daf36cdbc7e750cfcfc4590e7ce022dfd4d5dd228df7c81fdc68b47ccbf37cc3097d6cfc4f4bfebbb127fcf8e9c01e6c44db0e16e89ff8ed7b3d996f7c43ef912e2a70eead8b8b7fb55e7a0f7b2a8b7af82fe3b678b87a97b6f33bee65c57a06fd6f53712b6f44fc06c82f45189e8f54e1e48b7fa594930a561f90032f12160d0c5a1f9d9ae5cae561cf3318f174d859ed612cd9df15fc9779cac9037d9dc0e503c12be16f4da80f186585fc027736de53f62789ddbedd73d4fd7b57dfe75fc2da089ceb196b2e9baf877ecc1ff49123e7ae58e7cb365ff9785fae2dab8367fa7b621af2d538e5157f55f7e0c4b9b2821c8eaba6a8ef9d80dd7f97b85c51bb021d1aa6e1ffdfe17eada1abdbd77cd4ca2bf6bf4fd5dfe0928cfc6aae7c9bf7de7bc46b2d9fa3bb8f820e0fd4d8c3db1abbe7f2f0add551bbe5686e6cbc7d4891373408bc937fc56bbd3a33c2c5c453bdcb79edc7f628d151373272d439e67e48179ef666dc533b3dc5615b13837c65cf0bfe724fb115cabdb683d9577a0ffda30e5f00e097a1b718f3f31be210f85b30d8aeee99ce18e7f8831e6bdc9702ea05975aa777f9ede4bf90df2e175873a8a847c0af73ed3eb6e6fab3e28afb2ea8de1593ae03d8e7a5c9cec40513c4f68da63d23deeb59a76fe8362fd8f85c6bdc87cec4c78f714acfadbd33d42a3caf006e865bedfcc6376490430ba55df7e2a4c3e1d98df338d46f9bd811b55efd49db8331b788cf17faaf8b683579a0493199737bbf449f196b1456b7af3980392e380db2b78141f548d09770a46ecd1fe394158e7b8298cfb6e075eae443ee35489cbebb3dd338757c3ce703387fad75ae0f29e6ff9172aa7da9bbe0025cd005b73fe51e13ac2ae01c0e2fa873a8b9eba2e5b190fa0acc59ae5bece82fb53f02eb03d7c48b53d9f623ed0f873b75bea1187f7a222d08a9fdc12d2b5c3b27eac12d04c60af498e7c84d1604f6c5f71f699aac468e6ee31c512e8e29788a5adbd4d8afe8fc5b5d114fdf3fcead727ea5dbe5697b197f01eecbfbb8c21ef302ed45d9f616b6b58d9e03da6ec69cdbe794b06fb1fd813c5fb336c7591e51076f025ce3d3dfd4d6439bb42a738947baeb93076d1ff3be6f24dba02e26d8e29ebb7d54af6c6d49a288fddc60dc6e6b019deba1b6f21efc164777b7fb5d709ff7d349531262156f948fcfdf3dfb0b7cfbc637035b9c6fa667ff3ebf433935eb614eedb6375edf7fcbd1f5177203a1cb8b4f2f6efbe625df4208fefa625dfe257c9fccd9828f61151cf518a2a4f11162e10fc3de7621bc30e91588b10c11978afb72c6ed5306718cd1ec17418bc7741e72d9fac71dbca7b0ff22b7958e657da24a39d6a18d4d0f795de1bba9c3636ae6b0f7c5f651e6143515c643f34037890fb48c4b1ee6e638e29f13d75a8e559a077a735cc02d23249ba3efe575d3a03068bf177d8e1bbb9f6f4e705c6d1d5b2eb5c2909a53a0cb7a698f935a3c96b35521d65257d847e4a8f23903af394e8cc93c18bec0f52c397f32f3a919eb387c3b105616f886a341e357be60ec6264922b9d5dd846f4d9f801e479cfeeba749013c8201d3111978d8e09fefb0b635d772ec6488c2560bec3507c639f5bb360743ca20d4c66e2de47913f4e348c8b896b3b0e47e9b80fcfa6dfd8b6c8795887c9a3333dff8fc6c7845eebf0b993979a2c411f6ecc63eb806311e4dbf30bcecd3df241b122f6e6c83fa4b4f3417c8f10f3e889cbbd21c6e5c1d248e6141ffa926fe4385ce80203ff42be39f03cdba3748befa6ed4dd7bf5de7fc44d7757406713c473f36b64e989b7b47de60e24cb2d2e808fc31a1871c85c8011e17a38cc652f40ea822bf21e67ddb2f646551ff05fa8512837a89da7c4578cc364233ac19c3bae52aff036ef931f03189e70f8a33d473d9c11b1f4903ab84e73b0e7dad2f9fa7edd94eea02d77f581747e4585aa411cd9963673ccfa322dacbbf17821b7820f8e65a2dd43f7966c090dd3cf3eebb676ee72fdb6550c731927149c77eb8dbfd273ef7c15d0f29ff5fb96beb1d6a43e1c1adfe12df3aeace4e6f9ff1f4b73c632574209ad86ddccd9dfdc1739522cf79cb3d6f7a1f19ce99243a7f8226d9f153f24a1136314ecc046b6205b7b508e6fa0fa92f4ebc05bcac53fc6e5c5b11d7ce0bdef704dc3c6c77bb46e67c87bc7da182dc45eba2b5e975b3d617c20f9aa2ffbe7fa7bd8fcee5fe007af7d4854679222f2a9bfd57e42343aa058dc1b666dc3bb9dbc127dabd754e6b51f3f63426a962bfd337c94c5ba7f59572e0ade18a352ba88728b6f03b357b3d1b7ae17e88b5461df5f5c2ccb029cf5817668e1c0f0efaa083b38739adf924c13dbfb82c39f26702965277b707a9c5e6e82bc0e2ab09f5a8328cc3e6b9ee4d70cf41be08fb9cf2d78ed69bb56617c4b986ec483a189cf44ef5619f7286d4e3ee4dbc4f8af59d6a6552fc4139bf05c63ff956ee59bfbbaea8a316e33ef5147ce45c68805a4b73a1141bc22b89e755ddca961a4184b54f27c9b5265068d6d473e269c78becb5af1303711116e603fb8c036e3be7f63be14cbae7306d30ea3e97d8bbe2906ab3f7cf10e2ba419b86bc8913b61573c42acc85d68c4727d6ff722b9bead39316c75ad48c7af9ebf0edfafdacaf25f2a070c0171bf906b45902f0ff86199feaec4fdf27b0a9df2120cdaa7c52de8e29c5689336d7b1d116c2cf3ee85e55e87edb675311f77ca8803eb578b6baf811dcce6f0e3e15db80a67c66b2cf676587b693f560aeb1a868b939c3666e3b5532efe8ed0e17754ef999208b91bf34c4de8b909d68bc02c09f1ab9e92999d40db67b1ee9f345a47de8a8cbcd136a1110679ed2e3a33fbb47f3ad1d253c2f37877f6cfe16db81e25616fa2eabd152e2ca8a0fe212f1ea44477f4c7edb2c482cf2e948ebc0231eb10b6a2b861661b9c3595dc8fe39c7a0f76e7f9fc705f835ba372a628631bf73c23a8a114e761f88150b9c115e5fc53e9da847311073b42bed07b431363dcf10ff6bb4ff169a6f06bb202756587e2532a7160ebdd8a33ebd13fe1df607cda57866e2f282131697f2838962f7e8ffa368b0857356d2bfc6dcc8bb7f353e02177d76682f55ec8b83fd9e7e94f730678263258e3de61b79bf4ff1ff8a79ca2a6f949ae157f36f17ec9242d7ecce85658cbe24a73cd360576cd026a0dfcdc6d89f57176f54f784fc42f2267218f170cc2af6dccdc7668a0dfbcdc3b927aea12edeae6d77a69793762d885844da57cca997cb75f97c3f3765afcc37d7023e3b6723b081b36c13ea8572c0debb27a93b047b50f883c629889922fa0542b3bee6872abf72c4e2219fab9d4f405b47ea1646ab51a20f713d3e7d2d370b8111599a53aacbdee46d36179973ba0c7e7832ef20726137fdc116f50757ad7f81399fed0afd3db601ff79401c0393c43421071aedc927b49d7539ee3e2362cfdae7438ef2d008bbb95b0b31b79b678d621f9c136f03f4dfada0bdf6e02cc60bb865cc07c75b6d5ee3d08e836e9d706d408e57f4b18af7a6b5acd177087476c27ce0aa981086b3bd6fb641cdecd0eadd9c6349dd477e54dadf6eeeaddb666ac8b5f2991186a0636358653dffd2c6d48581df1eb98a775f147b7289fb461f3eb40e0c9ec59829d30f077b4c907ff57946e34eb8224da56fea656b784ec8198af5739a4bedfa954635a0bc2ae7d83b853da5f68763badfef9992c756ac8b17586738d6eaf42be3d37fda27047f80db97acedbfa63cf22f7c0eabdda32fc7c6370e5ccefbdedad37cc26d604e22df9226f0bd3d24ed471e30ca19dffb59828b46f850a799ce468e39c53c18eb6526bff7a32605ed39c62f7d0d71dfc6de16431e0f414bc9049d013f52918fd51bca7d8ef844a3d528d50a8be60ac4173f758c6558bb0f173f52be13b935a6d8e725e656795056b80e3cdcbf46cf1a3db3b5234c32d80cf6ee6e55aaa79605f66ee58afdc3d95cf94d56b16107f24beff23cf1f533756cd204f94e5b0e38a85bda19ae1bcfb430df26ee672f20fe34110b32cf29dfa132a9f719eafbbddfb1b7cd98e1fa245b2ddeddd3ed5126636cec1fa8869fadfd0a418f8eea63d43b5e9bd4cf1b3a55883deba65a606c095848eb39af501b423b1b39dd871fbe48eb280ca456a5c774bc4e849883caaefdae86446d1945847168581e186213422da75e9a2435685ee41fe21e22a7ffa4a13f1627b5fc1d6dccab4ebf3dd7e8fb8534e773b5a078bd4e7a3ef5ef8d0636628ff4c2c45a66bc5288637a19ad880f683f075e54aa05689e49bc55b20e3b5b4e18f6d93b9a8373af7d27b673a9170ff549fdba243dac80add156854525c703fcd6da252d91dafaf5bd2e07adbd17fa0958df7f7c2f1c5b4e3aeb02ff047391f204cae283c62e082cc2b3c4cb6de3eb0c688c877eed627ce77cb9d51e31abca997073d7f358eca51aea715933657a8e881f1cf71ef9bd70ef2968ce69fdd1b284f143dd93e7999eccaff61bbdc41c457171d7163c4bc8694fd7b0472c70c674cd45fdbbfb3bdbf6feb88668ffd46ee6afac37b87539c2f383a59ccff87d15cb08b106c9e3c5cddc6dd64518904fd0ce8703cd7f31865ebc37b1cf167af6905325c49e56c0880c2aa8372d5477cdde711d96cf421b117a709d207ce0b7dec654c90f57dbd073be90dd2dde704fd2922fc2940538cf79fc8a71a0737115ecd733bd1f336503fa16dbf2483e07933d65c70f4658966b0d16a109ebc7b6795d6b4c0813823909d25f79aaf11959b655e79d3a07f4b7089b5ba4a206b00e4705624092b838a00d3abbdb9ec429767a6fb582de4ffa0b05ad0b88bd78ff247ca2c666b5cf71fd9bfc3e969dd5a8eb13a27da87ed632ee82d8ee8bce813a8735cf0d3a871306c37679a8f9a341f36e9ecbd9368dd467f467f554d921d6e8a07a723c3b580eec59ceb17fda0fec0b719ea75bf5f97afc9afd6da30256684571c707f5efe65447d4768ad7f553e5bd40efa230bd0f867e47a1d887e67c7846810d16b1cb738d1874516b06fd21a7ed8b06ae1575f727e75d72a5d7392fdc797a78f1fd36966ee31d45f3bf7b77eda9ef777532f4c4947b2a7273a58afdf9e85de6e33dd6460638977a3ac605f1724d1ac4b89fe92ca5f59072e2d995f1f817eeb573763d9766454575ff1cb99f0a3547ed958ce3dad1ed11fa8852232b5d7bd6e367638a5baf2ae428f9ddf1ed9cd556e6b386b8b098723062ce889c385cafe01803bce33c38b28a8dfce8a9993786cbcd93bb3625a6a4b306f54c99767d66e1ef1731f5813cf68f215fc54f9972f8a772939765ec8d0aac21a49cede6e683fce49ffad58af5b204bdf23971f6277ae8b4f31a74ed969b27c8f5043fc9cf82fd59e0f356461eaf4893ae9f90ed82fcf9ce7d3b4a1f3a1da32634d683d38d7da4f14b62d4038ed968b9b63b310cc4be698ccf15b3d1dcc73d210a87e8b31a79d5c1575d718e59d7cfdc5d6bf555fdd498032f94e14703f46bbd21d65884f6aa1fd9703f0b6289a0b229df107cefb787a4a1f1ccb06707c6a6b860ddc4923a487c7fa29c06a71e215cdb89867d76fc7026ce9c2b9f387ee81343bd4b67749fd94cfaaefc423e380f0aba0ef26cef2f3266251d413da4ba4c92ddfb1ac328baf58f054742ebbfdffa2efcb8fbceef70f564c262f2b91c6d89fe6712bf7e91ef5ce81e6aa6953de15b835fb6f309b31bacf01936e8a37bb4667b12bba7af6ac479ddfbc78a65a426a39c07625a0efdd6cf5f508ee43656301c8511b7daf9d7f792b147732f8c7906ceafee751b7b3085413e25263cdcfe90210f05d70bfceeced92db9dc3b215776febace3d1dfb38f78c39b78387d7ecfaabe4db820f6a097f06e779361e5ce7676a5a274e9fe633f5fe15eb9bb9d4c6257db734f13ddab905635d0c5dd57bb9f38f657c227462c4f597b7715e1b8bfc80fe17f686f131f8e62ae203906f38c2e7a5f5435c7477fea93e1c3931e6e6f8a157e0fab9f755653f63ed56ed7c4e45ff12e861cd4d8a9d73b937e137aaa3b7dbe3378aecf3d74ea4813e81dcb467381306eb48ec3b03cabddb11e201d335ae93b81c3954a3e8fae97a598b7826b6b4c29cd6ee466031878532edb7f8d97fb536a60e7d6d3fce63e62067c487fb0678f52587fa1753a8fe659eefea5f610ed8d4d81acd63aa691d7acdfa69f6e100347dbe5ccc9b7851efc37ffbbef60bfdf957b55f7d895c79698bad066daf3ad1306f07bd1b91a313f7f3eff37342dfd5ecd46d2f4bcc41724df4a80b8c2f8bf7889339ca679c5b3ffff01ee5d00b9895c7fb19f5e323fee092ca780a730dda4abbad293bfad0bc9f138e06fe166bd61bcc237d3f9e2157af13788fe691e2ffbe66a72d805baee70549f35eb1d4dd8f0623c8d93e7c16b0abd1f43a67180d28cf1ae0f35e883b2bc3da60029c924d7cf0595ce7e98c3967678adb72ac3124dbd317ace37001fd419b0face71edd75ae3f88e71efa920ee953fd2ae7a95b2ae190097f8b7db4c099312945df8eaf27e33cb061fc2375c41eade3baf8a27e9667ddc2796d5e0ab41d0f72d35e46be20572f340e809fb00cea7585582e79a3e748050770f31ce18f39bff74de7648fb84a3de6ef738cd1c2a82fef0dbf951ff44d16da11c72bbc48df98fa87629c471153b08e337378b1175cc64ae337ecfa0fbe4b8fe2b5807acca21de9708559555e6111fce8486b638d7c86c330b6e5fcc2e795feec42f7b08e75387b9ae059fe450d6f55637cc064bf92b0cbc05724df1773c4a92edf973895c25c3e2ffa1b91cc45af8b49b336d5a15f5b937f87ef133636ca5cb575c8a83466136b246afb62cd3b35c5712cc05ebf8e3d277c58c6a7c247baa9eda0bec4d1a09ea8ecedf84c9a8c4be0c632c24ae21100f3a5f4bf98f9745870f38b4dd848e01ca35ccd15db99c7c0c7f39fb00f14cd9a865e36c25355ae9e909df9be1e5d37be0dd47f693ef89727b917b3b505f84a75d167d467af8734af607d689e9a61aed9d73dec6ba4da81dd97364677db751860ccadf54799a612cfaed6ce49057144ecddad48bfdd0a0ab97eb83ae7229f6b641bfb8b9166aafe2aefc18252f8f75e6c8faef0bfc6e2e411c780b0bfec2b33716e630e9153ae1db5b489e7d8a735403aefb77fc73e368787b34e4fe7d0c5eb05a4812daf837a72f23e745ffef878ea93db84a0ff1221f688fc5279deee9beb60ae90ead1b77f87dab89199e14ba74f7ce8a24d6ddf97aef38aef91dfdcf776dcdaebfb8a357194f0b478fb67ea94809d19fca01ea4626d4b5be3f027ec950e474585fb20ed05814758107dd19ddf80e5b200dbb41fb7cf286ae8e3624b1a44c093e369ab3efa032fcc9c127753dbcfc99d8b8331a05fb303ce45cfa9bd69c797a73ca59d5fa83ff438c5fab1c813626f4e278e286bcaa5faca02fab0e39f1fd8eff17295278c1dea4999a1b6439c8b3ed4abfbcf5cee7cf9e80b3adb23d4f2626b94be0deef73b4dfdc47d64966b34260303b8a656e63208cdbf1b4fe3c536e9c64fff663f89ee493e400713b768ece30af2d3f7fe9b139733ac574ebab15948fca3ff804f87cfa83d7ac6ee3cff06a7287241346785cd240c5a6cd13adabbd5eb45c66886f582fb8dea567fb0cfe87bc23d39bf8c4b6b5bc17959b2e83c81be9fcd2983fead266eac1f61379d0af555a3f019791efb547bfd8373a652afb4fe4ddcdc793eefad893f0ffda0c677e44acfbdc85ead18395a5f807fddbef377405b4bf61ebdbbda6fe257e4dc284cc2da167de41ffd70bb76a02e0c5625e6ffaf18502f4e844fe329a5baa41ee5da9473d769bec504b1e7d5500b46dd35b451c8d6336d7ae5efb2ed947cb21fa4af026b2954bccac25a87f89ea0ad5d8747e0bc0fdf293e655b15738ec7538a710c72cc7cbaeb8dec1fcde3b2d566147db07db2ad932cea4fe8379f5b4600f3c7cc2b3aa7382f715fa67ef06c4be714c70cf754a84735714133afbc0b9de3e916e98753dff4279dd3b1f1224f9b6c04066bef6e5e7b19dd53b777181725c049dc1fcd03f6fcdffd6c8dcf2278b527765ff2d9fff9b8f6dce6ddb8797237af1fedbb79ff09eff62e342515ebe8aa3f3bfd8b9671ad0b545eebfa04c991ee951921710f7c30f217b4952aeb61316944179fedef8ad4244f2bf9fb47413e80fe53fe9ed5f2fa07f9fbd518dcf00928d6a430c3e1b77e9881b63e188e4837662ef617818fad32b44d8e69a37f7744deb6c2bb3d0f3826ad353c6b333fd0875676a20f27db9c28a7a9b69880ddd77daea233277476247b07589a70e78d078d4dd1295f8ab5c153b139fd2e1fb623cc3ac5402e3faab48721ae6d5344c8ebc48f0ac56f589f7a5b525d2e64ca8398ecd3dd0e8e920fbecd691c5137df4837f639a33a94beb88bc944dc57278c6a37f21e01c7f9ccdedded46c73d6befbe89daee44d8ecb579b9c159ee3cc3263b1ea20f52ce03cf12b1abbe1f257548cf889c235c67a02d682c377645d89144b1a7f8bbdafc4e5a6eac86daa517edcd6534b0689e09be9eb5579116f8b7f1a446ffdd23568ed1f895297d178a29b5231db3c3be49c5dbf00ecf966510b712f572716d75a31b33f8b8bffe4daca9518d2a497f194b6acef53dbad7c65e7a194f125f5bc8b658cf1f438f35da4b8e79a890d13502ea4ba0fe519a3789c42ce29e195ae407ac8596503c1c8bfce4c67acf36af14c3d1b7f00a4d25dff9007dcaf6491e170d1a5b267c9a046b109c78f5abe127d9e15c53a7d86b56767bd01d6e5fe4b562abb916f0b583a6036a96b0935bd99fe803f0442b26ff4c3f01d697f07ba57cfac5d0f72d94e9f906a76aa4a67b211b12e29c48828d021c1fec87bbcd09eb137ae48bd79ed5cc112f2888fb88388efffefc38e1f8ab84b08a8fe296bef0edc4fbe49d58b8e4b8379c9dcde2efedf7927902696b024638b25fc6566cd78dad528589be9a99621306eae8203639e5b6e228e857d7d3c66715f6bf50ec3fb0fba1e2056e5f62ca44be521db1a0ddab3b710c6a2c314dec37b1b72b4c7bef8d7b2acdfde51aea9eb9b652dcedde646b1bed35e5841decc7edffc0ef3fcbe2fdf3f56f7bf95b7afb1be51b310785f5db4d3ac1e3f8b15aa26627fcc63664f71da10b2572a65f0baafd682afa14e5419c27e218fb4cd7086a56510cd0f87310df9ae4b3d899b8afc8d98e729d9ee149f05101266bb0a2b596e1baf5a3f30fc4639cdc8ad1bbbe304d3edf1174a92c3bafc3dbe7b3962669bcab781dcb4b8d0479e88ec8b57fdc33ec97e2986be0d18af0a833c9af4fd80adc979a18c96f7371ef69ec8d60de7a956798f09da3e3be30ed4d56034e27dd968abb0e01676fac0c56c3374fb55271b75e3f259c1fd81a71cd02f99ffd9abd13c7f73228adee3b645173dd62e4ac4361cbf309535de8116e6c542dfbb8b0aeeee9a54a316d3a463d427a9f78487ba79de3791dad19f177184befe4ae1315d7e40caf23f54ff2b1da720d411cc5880350e63f2255e22952a1d50fb8ef25c77ebcda51891bc0dd0ebeae70f37ca3e37b4d52ca038a674908676017b58d7876d447d46cd9abe5c7f985fa8ec43bc4c5a5e0b60bf56eabf4653f5fd71756aef915312795d39cd2cec67cbc1a418df389fa625ce4e03264be8a743cbbff156b87700e969d6a84072976a9f9d4c1463185f21e8986fc3980a1b165bfabe026291cc2d43bc1ea05efad25889d78161ab385e855cc2694bfbcc18145c585b056f918af71a73d893d564ab9a7f91245c09de58f91b32a5a35d701fdb32a249ca4cdc6c8631472b58d63da3da41018f2e61957a847837c308645bc64cfcd3334df03f0b647e2fd9d85d83f01df65f14576cabf1cc98ed06fbafcad4e6e7e231eb1a77e8afdda6174dc933e6b2e6d296158363a6a295ae906f396c1909e356c7c45f11db523be8ff503f14a2d56433c7741fbac4e78a6b0f1d7848f54f60aeccbf775ea1f707457e6a18ba11fbed2b5662e3fbe3988370b1a9fdd48462e373f3087f6497c08c5da7b50333c9d9afd9199dfd40c45fdd13c2146a4f6b6bfc9b14dcaffc388fc394644f4293913ac8984d47bc7de65bf6d3777a65893cc6467d284c8f8f44c39b09cdb9fec41ddfab697d7aff606e63c83991e4eeeeb37c5d08f9941cfe41985c97f73bc37b147707c31f482e118d733e6ee371789cfe676efc6ce5ddcaa402eae629c6dcbff68ac0cf5d76623887fbd0875fdfca3f14fd55e72ca43b41a471dffbaec2d51678cfa7cfff918c0fa92e311db6a9b3bbeaf03e19c7ff06c506fa7387711adf6eeb5df70b8aa47d6c52847ce3c37628794e2f76e4fb3ac51169fc831666754677a5ccb18671becb7687b76c2ac225c65f9457a5461d4279ce62ad50b895fa1dfa36840bf07845b79741daa0577ae976437d7e3dc7ac9373b6589f1ebff20c687fdfb607c06cdda98167a31a33a93e79f8fcdbe97238e72493c3b0123df65f5083309bd51ce970bfb60735c2cf7412d19e2f1a2374070352a275dd679ea9f4a70210eaa29f442443deabdecd4a04aa1335688f1825e14c7244e026b04bc9882aff3f2f05c6d3f6ecf3d9c98f924f99b204f657d123ebdb327db624f8a43d2740e859d89a86f5d703d19e9c6e9f8093fcfc1e5dc77379611182dfe94c9da26735a9cd2b1dff8e5c0ed75163e3ad4beb8125c4e1feec6b228cec3b554415dcf925ca79ed464a43c567e652f3a7f331877eae6bd1f8e7b337fb17f24353bc769822bef4cf302c6ac1c2d81cfca62ca2faef93ff22d45ecf0ddb7bc78f1a22f71fff5f005b16467f78d7ae69bb8f1e1b93baf6acf750cef45eadae07e9aad116f2ef06430eed05b166a73be7b389ee2db47c79153db0fcf4d37497beea36fa67d37bef62fc6573cf7fefbf15d8d29274178f905f18e89d85225cd55ab30a73d8a2d17edb3508fc884386332ea7b88d889be0df59478fafe48e3ba8c29c6070dcfccf4ce05c629f80c14b3f5539a771d6e0978f7c4c8f504f22e9188a9ad44c66e02075fcb18ffa6a7de99205f5808d77fd0536f38dc39e59277067b24d616c67a56e854780ddda3deb68afa1d9cd896fd0e3ef2e6c21e9eaba4afe5e8f6e3b814fb08a0ffca39bb958c53e5f5971319fbf7ef9eb1da63eccfde5dfdbb73af7a97ef8fa9ae8e3198c2f4fbfbac2e375c25df8d17f0aafec9b3d4c3bb63ba63d9c401e9c693cfb2d076bacc256f37d4f7feeed68d6d7db886452e198e737477fded712d972ad840398708e7ec2bad06c58d9d16dfcd33ccefae1db7bdb9b7d7565baeb3cbc3fbd9a07fd35ebbcbf995083dfbab7deaca967439943bf79ec1bb966d0ec8efd809ea73460db69bbf4d8857db8b56d47f853c2738af6ff628ff0a7b763b6e9493da74aecf146ffcaafeea3b41aeca51dd6d7bdc8ddd17faa688eb992c37ec9063fd29aced087c03e4710e4c8db017584fb5b308ea489e69fd58123781a84d7926c4fb228f52e7524b4770c3532ecb9e4f12d2c43b2ccd5e07fb520ebdd0eee3356daf5a50ad3778d654a7d554dbe938660cee771cfa81e43dfa28b0ce0e58fc30758173fd2cf3206fd4db13beb43def4fb246093579c83933e0849ce41b36063f08eb87f12bad658d782c430eeb36bc1c3fc0b6b7dad24e40bd729b3e1f9d4397875faee8b72c876ebc1a31c227c4acd92bbf1a5fcaafbc93e42ad6872f521753d4e50a23ab8a17e2d76ecf0f9b73f6707e22cf2fe2e67ce2856dec6b782a9427d0dede74742e743c4ed9f772a903529c1003578a985eeb8f9693a1e405cda52f8235cbe6f78a7ee7a7e677e4e7fe42beb2496eda22a7bbe8e8f885f1ae2763e30834cabd88f87f37f59c935e877a008e3e8b8b9ca0e0b3696cc5be97612dcb5b0bbe7ad0453012c3e5858ff3a3ff4cdc1cf1aeb38ec297d98435beead6a39ae596f2d4a8b36b846f573962657f4c4d5c2790979c44eb575d72af8bda852ace87f7b3919703f9d9f4e1e85a3326fc98232750a8bb3dd20dcbebd5a8f9267eec8da0afbe103ddd2297e11f472ca6b12ece8e89f548ac2f7aba0718ae8d49ba82c437c31c5d7e23a5f946b9620f3dbe5272e5b19f90c7d483590a5eff2b8ee5ba1c757ebfe4d863e9d521e9d15d32c496c3b395433f5e8d9cb58d983f35c4f54df94a456aa1c8e7146ba75957cfcf1ae1878fef0e7127459b13d8d7907428dadf825533879bf8620838afc29acb71e362ae83fe3ef4d33b26ebb9dbde49c4ac716220ae2ec86aa96d00cf7d19505fe22e975cd1e639106bdc9a53ce1ab0c2c31de17ed2cb718c3e3ff5f4db5955ceba6b0afc64b5b396c27d730fac8b43af9e79421ea5a92ad6ab22f74a96e8a8c3d43e638f7aa3a378d7437ea49dfbf674f689475a85deec403ba7ddf59b70cb88302ee3941f90b58450176b5cf420ef9b983f7079386501ee817fd5be95c8a910086ea4c6d6a5f91af5cca373e75ad649eafcb663746e9e25e2a42d521cdcca6eef23eca03a6a9ed9dd9e75f45f958e56d197187b11b3ef4fd206468313f90ea4815098942b28895f3266e333ee6d9cfad08de5c6ee2d31d785d791fd39c80365e41b5b91b117d870c0bf6ef707b876f8e9561ec52cd7e3f5fd3e01b912f94c88b950bccebdcaf6bdb8a84b58d9c69e10d700d89642fa2581569c031a576d75969cf7b125fb1c84a6dfc43d61eda476b74f279813ca19d6746943acbec79e05365a1a0cf9de1363497ae23a5349ab98e9b688cffcd086be5a057138029fd6d3819b9d6db3bac0e7558d8e3d41dd0dabf56ba42690d4db9663900a0d8ffd04f3e38cc536c69454e72b2e90cb6af7f79cead841e9422d644a185e2b077d7cf00f841e9a45dcd97b07f373888714f1432e625151afa2dafa856a9445bbe624ef761498a471da9ecb7335f01b3f4f704a41ed32226e44d047a3deed794079b65ce2c7782d341402518f7f3b56548f9f6905610f3e12e841315273aa901648e29ff7cdb593b5d02406fcc4b8305cce5287b4b784ceaa3a74e3bdc102b47921ab1b1f341136c43c41dd5955e01bec6d4f6229480756e88f097c12f2750f01bfd0c4561bba371edfc4c4569fb4cbfc78a7635d6b45febb8f39d0660f7714e742c72e814bc760c40113ed2bb4af2ba7a6f164efe105f5869af9acaf0c266b39c53b335f91236d839877b673b72bba4e9c0a3c13c408101ff376ec0c7b24b044f5eb0769133d0b7fc012f9bb043575a368401c48b379c01cd2bcf19bf90b79a9a957273f081bc6fc8185fbcfdead0ad2837b77d7ce97dfe1975f881c80739635cecb49f336961d8ef79faed405a16fb211355b57f7f6a8791cbbfedd7f2da907123053daf2a868de9930ff98efc36fd3c696b34e9e04e30ac82b7a7162a693564bb8f97e61ab3b9a36b618f92767a22eb9668c70fdbed0187cd502d2c5825aa68e7a462bc8e94ea5c6b6b887ba20bdb4846a16787d061874517b0c245758f8dacf3688b56ff57262d0375d517f67ed62cdca5de7fabdd60d69e74afd4bf04fd5e131903a44e1d00bbd3ee339f503e0581edbb1f44963f3ea6f4c704ae8ce9737c25c1deae914a6eda29d44ac213bb8d51e3590111bc09d5f5d1bffa6363eaf516803d276a15ad42fce81bf35fb92c3d9456ada05c919340ae87bec74e97f454f17d028b5c2e5764fb1663fdd2882f72c37ed93b3a1fd58b99096e8722c8fd59b63032ef8f83fe5b1c1b4f1ebbe606cec5d8afe2c8f8af7c0079f26359ddaa1bd3e709be33f5057f0bd3dbe6c8e6ffe6eccf95495c74787e659d037b035797c1c36c78b988e29f6a17d1eb1ffd2f53f19f1d945c7e6f8d8e5bcefaef333da0debb9f107c9e7dcae08abf0921b36615ebf9a7b0adf491fbea34fe365da9e612f10cc870dff6adf71d15c5fd8d2ac1dbf8fe63aa1e0f29ceaedb1afddf1f86cc743ed8e47bf1d0f9123933c1750d39179366b6e580e7251bcbbf546be671adb373e1053dced5e9e97eaf60be538bce6dfa67da01c9a17a9cd71b226d4ecd7c5c6fe6c7f1f5cd037abdab520f37456dedcbbedd506fd8acabeb49a3fb6831ad0b5d0caa47d3bda33f83bdbb9daeb85de25abcbb9bc5eb5277fab73fc77d771bebc717b9d34b09d8ebfd81edf7c5bf177a7ef6e77ed7da315fac9d6d9ad56aabcaf3cfedbebd4deb8bd0e3356f38e1f660b7f62cda5a6545a7bf38ecea7b1d89ea82fcc629321c6e416ea663a67771db6be6e3da45eed3eec19e10fb7dafbe487fac2d72a7eb852afbe6cecfa3e7c439d17f1ef9541786471bc293512672e0f373227cbf92553b09ea02cea4c6a6b8a7c71ddcc5daf6ae798c8a90bbfa7782e109b18c42bda1703ec97d8275447d585ed07fc1bd61d326368fdc5b8d79d89df21779599622ddba0556b6d9613c080f89a23d678021cc133d489dfb8d463013873fab78ee3d7fe7b3ba865efdf3a194b4d733c6ea6a9c455063a9c9137c49c058cb5f8b7a8873d33a19b0be3dbacb1b9690f3dcd8158d228df49a7b63dee8196acc019fe14be79629827d488a81fbc4788ff16f3d0338a4ff42badb991cc6793b0f115c6f380f09f5c699e89ea6c8c72efe87b47bc8901ed4b46dae4ff759dd5e618913341bcb28a76dd080c47e6a88a98093f2037ede9b2d505d4532ee200c7ab567bf401ad3c8075c54c7bfeace2fc0bc24f9ff6cce6bb68840395e7d9f3f0a7b0f17cbd72e95d1b7bdcd1b3dee46bcbb98d5f3cada87cd81bad60745d77a2fdeaaeee841cbe5e7450a47ee064357f8c3d447f50d9204f9817b6fb7d7b3e0b0847688fd81a7b55b8dacb107be4090d6f6be8aaaf5a463dfbf15e455ccdcb9278e278a9159ba9ac1fce03d4cee2ea99beb7afaf0e1ef9c066def80b47b71a0a4c5a6ada4356f2dbe7036e37cd3e309a0f8188dd6bc0a64f91f3007339e49fbc91cf3145fc6ee39390ceec0ae35cf69c504c2ffe267a6fb402f23293645db4b6699dcc21c7bbaba5fe5530d502e01158a72af8fd89d19ec39af581f7619df52134a1448f49e90b6d406d21eb515e20f6ea55730e7cbbf030532017caf5c4c5dcaac2f8067aeca31d71c05973613f05e6143927064a013c8bb3c5da53301e604ba318916f120a1d4189ad44dd0de009208cf71cb0cb80d713ff855c42a0615e950f6aecf97a294647dc9b500b2c42ad517d6f2eb12e15d4c911affd52186c2e6a3fa2bf47e4dbf60cf19b6d1d17e62662c830ff518e32037375fa4a628743a1b187f905cceb0602e7d3f8fc3f29bf406bb6d35f1cbee1fd3fb18f6ce8eb61c54790e3084790ff2cb605aef1a39aa83f655d5ec410fafe9a673972f494701617ecc9ae6ce2ddfb23fdc83fd6986c8e51dc3ac335e0eb0253f2e56e4cc533f7ca336243c3cb13e1cf66cfb54d98d94b6a12a683e9a1f4a386a2dfda513cc4009623e25d7fa6be73ac41b97ca3327e97274df31a7b1aa36294574cea86c97ca1761ed17ebe88bdfaaef6a22595d7d5f257879799427d676785743ad36088788062cff82b68468ffb503b88ccd6f78e8b1a73772f19e0969e7dada7e0dc9ae6eb21d9e9afc65eb0666f5545cc65512eb77823de4cf5e35979853ee86adfa3dcc4b242cd12ae5c18f4801be9c6de13376ba24c5547ea34f3137c47a19128724e847743ece84a689689352de6564ce389cf533a01f5331515339db67eae58d69c53cf04d4f7046e05f700e469109a6ed85ba9c0fe5f603eacbc309c178843b367849708cb5e61925ef5ab8c2b715dafd3f180dd1d77399ca1e669ad408b98fdf044cc15128708d88aa81c3935e5ec8e95a879895a98bdc5dcbcd8577cd22e10b52cc81bc9fe05ed40380bbb18d3beac9e73ac3b4791ba807c0ac5f91b4dceabba38489fd32c86bea839a9439fea418471e1bb877bf4324e106fe0e8997953f3d1fa464abff3e37b4afe8b5e92fe68b0ac1251a3e4b13dea1c7bc95a9c09d420aa2162368fc7e6bd850dd7931dda38c684ad2a875ed4ec9d60bba378d1a79c5856db2f9813eba588eb0e82a4a2f397868df3aa3cc25c633fbc71fe05b560f5c3ada61f92d7615b0a1b1c687d6319ad444f87c7859e9ae1619e05c6c73cb9d5b4e713cee242fd49c8e3dbf812da997485a7c4adcb812f8ff227efeef6485ac6c4133decfedbd70ae482e65fdeba3c485c5c65efd06f616950be508f47ba2e65fd7a4e396b19535863aa3da6db0161a5beee8e5b3f3ceedc1c1775b051b9bc5ed23dae6e8e6bf3762c2d0c7aa6839228880f068c8f911861e5499c42d9c6cf5057df074629eaa4737e1cb20073e791797130e7ee10fe16b48335573b7de07a9989385f395f48c3977af972c0181b0bc04cb81023b0f10cf0da4391cf51ac09c71c7916952eaecb4f7a375f53faa0912be62fe93eb3995e5ab7e3cff5854a6b18b1602f0cea2d8eafe527ec0198ba920f5dd8c7da410dcd70fd4af5942017b805b14f7d51ce37a98750e7d5a017d20b216fed8d5ff1da16f42edc8e456cc158887dd67a77a9070fc725dfeea17f4549f6843d2f9ab90673baf78cfe935fafd6f8cc2a7ccbbc76894f634bbec481709f37cf503c7a06edaf3e4322d6b2d9732b718d99cb8b779c1357cf503c7a866025e744b601adccf022e74663df459dc293fae1df8c83a6f6c0a6e47d7affac5ac97be7caa37b27a342eb8fa9af0cbf6d3fa5bece7ab593f159b442ffcfbd64e80784fee00bf3a5b3ac593fc06dd563a0bb3cf4e3a2043e9b7094d598230fc39e9cc7b557515fad13391883d88754211dab4d1f735ea5130ca9a7ba16f7076da8534ad88cfa671ff7e144ce57a398238fd3281f97a35b9bc37557ae8d1cfbfbfde8490fc438871a8de3f2edf8f26f318edacae8bc47bf790f110305a23f4abcb3a3a90e72083d7c67e02cb27477fb4aeff9e3d17ac91eced561fb9eb2b6ffebf7f434616bc60b7d28e7eff7ef7814189ef6b95b9b1dd4d65a5cafb646c8bb027a67e04b242e674ede6ab9037f4f557c62bdb447d8ab6c7c1c53bf563326107b94a3e51a7d8bd06ae79f76e8b7f8617bc7001b6c35ef0b36ae7ff0de7e6de3520df671573cb7b0532e62732f721de826ce5df6e96e485fc8ed53fe25af710f53f7a43beba34ff1438e5f946b01e802629f5e7f86f103d9f680620c07fa0c8dc5f6e98c6b25295adbdea33e495f6a1cd814af1db216077c80b5533888cff3e1bbb802e784df257ef05d3edc8a30f5070ded97817bd230a879bfe5282b215f1e625f163feed806af1d403cea456703e7c390e66ed0c4129356335ef067c5622e5888b97a26df01df5997d8ace8bbb9873adfb54d7d5e67b6417efbcb01f7632b484783979b776333e8bb7c5e80ce3bcfc67bf0d595457b0d2dff407cca3053a67de1174bbc1af06d715ca74e5dd8725f7b648fe212d76908987dbe93fb0b8c5d4e7e3293f6537b92efb034682e947542b9aaa06cd636737981fad65ed259a71fd2a66aafd4433d63c26e36366085dfc8d5ffb9b97110f81b580bfde8bf7d6ee81e61ea3af663f341639addcc8bc68e380afa4a46def11b8b077ee3b1f553ea057dbb999c47da9e789f583b37902758dd4bbbfb60ccfad27ef8c48973b830658376cec1e773749f7cb966dcee9ecfd233e250aa7faa924b829e4fc6dd9b9a746b7e3796ad9d3e7e34e30573ab7733b7c026a51ba8e12ccde92fd79318733efd63db7d33e6d077b5fec51c8cf63007a2c260179cfb02477a3d07b9723f07536edf8ee104f996c177bfd0fbaaf27bb27141fc94e70562b4ddedf983b04b997fa4e73bcd94a7eebb5cf937706d78b6e4a13d09a58f2af12881f7a3ed332e45ff99d084bf89c3fc9aed710d78547b4a5173dea175adeda96ec70add76be7966cfe5a5f4abbbcfbc78b0a63305c7f3aab7aedc49acca7865b5bd2d1cb8a727f63be6f57e6717f504e262d5ad3a7e4df34c5493da9e349feab014cb05c933c5e739dac6667ecf79db2f94a2fd09f4669f190c03b33c32e41af1aae987f409c4bd9ab5c7b419d8c9493271be609e9a17d0d0b03e5dbd3da768e60361f12b61a75f5c5e2adef8003625081dc1711aa92f7e0c1c22a0d9c9c4dee712e772137ba89eac5f4658bf8c40bbad7479b840ec5739d3bd39f12ab8f0cd3f508b74c80113e38bbc85c4a1089f04e6f2fa67edbd75b13036d6170ab01ddaaa79a63d61237dc17bdc1c23b17533f2a900bbfa54e3b51749ed8d3b7d09d00bbe7124b7b0886575ca978b1a69e0725373abbd423c65cec473d0173669af48cb9f37f9f215f5b5ce0467b65803a837a6ad46d99ab4ab0ebde6dcb6c7931d5a0cbf471a341543aced02397896a6bd93bdb4754ef551962910232d2acac51e7a4c3974725f96ed6c510b30188ef2b52d73858c3497a3578df6c5bcb6b126eef43dc3a2fcd8ec59dbbb50af2fa638562fc883f3e5565e053d078ddd1c56988b9de13c125c15cdbc4eb6c44975b43a357b513b270d77b986b647f44545cff20c30d783a1675aed386b47177272e129557f622e73f0c18193a192f56e7df841efd19e6399c89bf17973eeaa9987b8ae842fed07a5e9e33bf91dbc08e0f2c1f614266a57018ed50ceacd17ac47e6b1c627807b4e446fc4c41ecd2e03b00bdac0b8fe5d62152c5c3fe682faef51d3964b4e72e04682ef7cdc798403544dd96bd2f8193e6acff865b14b54a8bf7a5159c13879e354e43e8f43570f476954b8b28f03e77ad6d66500e7407a86b2cf20b16efa0cfae8fb3473f543d6f81a5b68b161107ba310eb6521c65d05f4474f70af18875abf424c829d6905ce3def391fe3b3d6ab11fc7dd0c1b595ef5eb8c33c89496b4c3c73b65e115715fa9de5474a9ce83aa79e859943b59d8d2bb1d738775e0a05f60f6e508e9c70131dcd68d5bd309334c45f35ffbee6a2665c7c5723da168ae4cb37d88cf65407d6af9511fe5bebffa0de76885d3d1ce7e290613e5170b835b66f7cfc22def57c8bfc2561decf38f21a452a697d4db231d933f53ddbdcff0ee737cf34f8ca881f3e2a9a671175899430a87cd32f4ce8dbee7028cca03e2af66e75816bd619ef5d997fddbe121f9d5de8d61871b407e202f66bfb9d8f68bdd9efc40b21f62c812f388fa996e92bd60bf076ef63e8d5191e9909bda51ef64f05013bca7eb5a84f3993f37243f3fb887d824f1f0cf09c1387dbaac0d92b66df137e8af9e1a98037992945d0dc3f5156cf589311fa1a9e62aa9ed2c43ba6e269c751aec338cd79019856ff380947c4b1736c39ac027646fcac971aabc99d3e247e9765749c53eedcc13cc222fed9939cc45be428e1e5d181b8cec84d5b2dcc573c762a8f8539208ead3ac7ea746cc6a7752131919edec993f448fbd0bf1c91bb2bfc44bb394babfd94b4951bbf45eccbfe9346314311ac3af197fc86cdb8d86e58d849330ee14af6b686ba4d18f41727decfeee256e94b3f7d81dd3fdbcf58838f907b822bce6121f08576cb6d88987dc4e1d1df2dc0ce5886c4a26dc856fc5421b796abaef684bc22d8bb87f66f118a35e99296b7678642e37fce4baf999b89b237453d20286d51ef89ca67ec55b99b9b29d420defd8dd052fef24b58fb8509d7ca95b2c25c52cf17f73b0e97bc8ceec6b4d5507b29b667caf37c347b1fe18fe01b36be2ee9cea938378e686f0ea277057d0ba1e1e66e4bc20c2684f981dadafe407bae333ee39e226211e1b7201760998ee9590e97cc02bf28d4259f286802477d8bdfd42f88bf0eff3d9b891eae0161d2edc2b4ab1c625ec33771fd0386d8f609b310ef5489cd0d88bfa6b4b1ce9f52df19f6233181230e4bd1e71702b6ed05f5325c176348ece3aa5da97301b9fe00b9d916d8771e6aaed44c83da50f1e98d897bf68c9c5e21c492a1c8f58b5a31f8548eea6a057c9ba81c65c8eb873d82c3b02ed1a767131163e943f319b13b493cfcf6da9ee879cc75574f649fe4322ed05fc41e647daf8bd8231e3a42533b1a3885e4c7843e46f48586be7f24be1c3bd3fae8333c092e79c80533d29d9dcd90ab41f2b3f1cd07f1e7801e3173b278859abfec73091a7d4622d622f6b9f2b28f7f1f2e101793e0da8ffcc107f9a3b9c853b5efe4c7258ea583b903e90fe09cf6e8dff6b2dabfa06d383b26da35f4cf9a6f2a7027b1b7464eb2af04e6699c8ec99f259ef082fc8a3837120731485f8cf85ef5a986397ccf316ee7265e4305fb1b71b17fbc141b815b984a7e9a78ff03b1065e5e0fd1c7bced777fc4790238a1c5dbdd3babf29da3562fa6e5d1157a8d62dc804f35dc7984fd8ea0b7c28b9277c01031ecb5d82838b62bec87125a1d9e3ea47e6b316f38177e85e946fb23d9952252d1973775d2d2f23585788892997634648fbfe0d9743eb02fcde5d718c22fd95f75399e83dbf3f96047351c5f679fc40b588cfb73c099ee8d3cb6b16e6c7d6621c61375d27c6381c5fca5ff79196858dbb5536d30c7b56b3573cfd3fa962bf4be8f13c82f9d68ed98502f445c878afe9f026b2fe38847d0a8bf19d71ca7de64dbba5ed796a8ef32a50fb9912099270ac375fd843d4a9457e6e423ce52895313fa2358632b2827fd31e7c89f4adca3edb9a0b1a3f42ea40bba081cfc8d819e1dea5afbd186ce59810e76b1a558508eb51e1e29766335f13fb539f1d4b4b1965d70e2c2eeae0f677b1e53df57417e4d3bb7014726fdcfce79e3f314719bb8470e8688e11bb53e10e4820183487a3be58fe5e609ec453d252df619d999bc46ff28427e477d6f067736c83c65e62be916591d2d7dea931e52def859f7a677f70dec03faf2f17c423c781d1ba358955b015e70b1b138f5783673211cafde39c519d1debd3a571dbaf07c0cec8bea9e5305f3ff3adbc13b32d7d12d1c3b8c1bd59f67a1b32dfa4037e45bb999b07fc29eee19ac43836fb8c413c2fe199e5cc931bb81d82fea9f1ff85435fa541ab7849fa6f3f1792479bf88032828a53f564403e464ed8ff28a30f3839edcc7a241755d5780b94f3c7eeeb6dffa425bd595f9a86d7f44d7051c7ac133c9d1eb19b23f027324f908759d64edf940ebf1d2aea9b0a373bf511cc2126b2b05b5423de2dc9929f629c09c661e956d0f563525ceb1190b6c91dff2a39591e925f6be1e3457f605611e04345daf704a4e34185fe770989bd7a8cd1c3a7d465a74f5abee8b1c25db14a27753724f4f601f49d6c516ffce9fced96607df28764eb067f02fc87197c3eb71c198201efa627ca2811f41affc8197622d7ff0b53d72bb7aff35a37d07ea0d629d48ae849744b72dc91352fd94e344f5242f1e1a6ddd2f39d2351a7f58e67435c0ee0511f83ade7a386286e4ecdf376b00fce0298e697e762f57fb555f7ed73b3c1df96b4f7a76cba170eb9f454fe4bb070ef18c927fc7d9ce5d7b3fa87e58601c16d40cf83da2fd88343ebc3739174e344ee9ba103e8de70f466950a0fff2a4ba6fa4c7057a7fb9f4ff8ffbacfc79c814e048c0fd62c614bb9759949f3b7e12c63851ecde336ad4151b1b74a344dea7343b3921b16ef05a16f0b80b3b3516733dea07e25d2335704cda0fcb1f8d8d094047bca3d365ef31afb87620d762171b9b3896674d1c9e534e19ea1f9ff05b71c2fa3cf6187b2f330d7358ca41d43e28fe228d5b3f3055e82f0c776efd93b82b6d1f3849125ff61e87628c99c009944366391f6eb591c73313b8e59cd081fea6c00e72d3de3105755915fbc8480f02ea3e5661dad276b8f05d6d8e3d072e3f1ebd36b70adcbcd853c0604c0c3f26eec701e991db4e80f65b5df5d17e8f83cb00f37be1cc11f94f5c531baa3fd9978cf82875b7f625468209cd5d2f3a8f9c3891b58b2c40bd10ae1a545ba435916ea6d4936fb9bcdc5cf395a884db3c483e03d803acc8d8502fd8ad5ded39881d0fa3f305f1af6457873ec42b3fc80e1631e139a4ce7f380f90f7a0f113748bf4eab58c73d4032ca4b6446afd84ebd61ee5e3837c7b14fbb25787c6d2c0ef13165f0c6a615b373aefc5f846e528a8175fd4e758705be2978a6d5f622633a8d74f9209c55f878b4b3dec309f7bb26626f529841db1fca018495f52b1c2f0edfce286fb381558e2fb798e7986daad924fc9e538c63d564d688d7eb8d0479720266a949957eb43608ef3c003dba2d972bed1ba70434b29b02fdb173d63e5706981de5aa1261f6e5562bd971ddc9ade81fc1fe099484dfbb9b519924fc5025e26b4c181376a73e6a0f5ceb8f431452c186e061ae297c3a0a3d396c52b47d612d7e5e8ca06097bdcae67b18e1abfaa2ecd4e4c28fdb9302e7f481f718b7987ba78f7310611635217a35c83bcbda77aadfd426e84547225259483f9803df688766c3fc43ea93e8cc3f7f60c6b3aaa8bf9486ff3f495422f89f5684e7ad1ca28aaf2314f5f30a5bdea6526b8fc1ef470095e7cd0e45fa22f18f8a8d1c39f00cb2ff8d42916f1daf15a938fc96aa6081b150abc67e80d19d9e5683f22ad58917b18977feb9c9907c918d7f107d9651f6b38ae9648fbd489c76b07797116feafe2f950f2952e4df6761707c4fc145c3adc0332477197277b69f3649b733347b9e07b61b5e089a03d857442fc01c62e2be26c9c39dae0cae634cfe4539f6845b647e49357527336e46d7c2ff3bce467323b9f80ae9b670e7a4be08433bca868f617d1e3188e0b9c7f835d5ac2fcf323b5c2da82114d86b20fa0c599de63563373faf18c31e042d643f61f50ef0c95566f01723d1e475b166eea8c43fcc363fb2031a0a46d122454234b1ca1c72a62a2baed33f2247e0ff45c451c73ca4d8c956286fdb94c73df0e1f32ffa13850675a5b84d5b18aa0406dd7e2c3815a8d817833e7aa1f8b34b3b6a72fe411651463b0c990f2e387e56673fb0c3d77fba4f8385f64ae4d1dd62d0f43387495fea7dcd720376af149d9a77ec7dc082de244ce61dd1adc5cdc8cb9f59245471772c48b33e68f66c91bf5a08a7deb84fd1c4101f890b94b1a8fbac56ee393425fa11f51ee1cc2e9e8225777359744cf6749791efb43ce25fa1dfbcd23a3a0d82c9807c5eca6466f85e333e1faaf7c8cdc2ac59e9e8725cfb4233e53a8a426eff0a77ae55cd669856f2fb422604ebd92bd644e4cb9a7f0c0b8983306af12e4df528fb2fe1df53f202fc6a22c3a933f55cd28ef11c9b940b9bc2ffa6d519717599f696235e087f9927d3f5a4e5c8b36133ed760e807a80dbc314f1961b03adf56c40fe1f02c9f0f633ca9f7abb7daf4344712ac75cc2e478ac36bd987abb3773e029c390bb037ab2e466d9c7ad09a7b89d84beb518d4ce664520d35f142479b539f56101e0943956a25f2eb33819909fc818975185c1b0577b05eeb6b47f31603b1a4f89e30d74a899ce5decb72b2029c9c1256a297b2d963550ffbfd929774bc177bb0c7cb63f3bbc0b7a8ab93ec55fa0dde35b9904eb44af3ff5d8cbb22f8b2459f02ad355767f07cf150fad8d948daa55d610a7ef849343e528fa29d82eeff30d0762a6173966b4bf6dc33c5c57157fe1f797fd6a4a812ed0fc35f89412bdacb4640a5242d1212943b06a32dc1a1d42a954fff06b9d64ad4b27b4fe7fcdf13f15ceddda532e6b086df40da57ef4fc6adcbd7d6451d5362444a599f8ce4f974aaa9df5ecfa9d0900f9aec1be08e9c8c60eb9b885f99b22a202d1ff91e98a107149b971ae67fa6c45c412d77a4e2661d3c204a23d8941f847b9939c11df66096e80a1b9e9bde2be52c2ce92b3e93ec916aae9544f51ee660f91918dd31f990b4e1bc175ce72e50f3f02f8156c85ed2d4f040ef3829d765e545ed1abd1cb154c6bd09cb245f719eae25a66d5eaed34af643b5057ac894093b06d5af36ffb82e0cc0ea1406db0554e702fcc7aae3086a06710445e3cdbbb12b7ba1bd0c799ba151b7f7017d089b535e73052e98f80ade8f5fa4150c38d372586eba73a4300e3b4c22e655d936fd4dac1887d307ac556cf2af27799a2bcf2f3524638bbbd2c7117183fb00f7c9e312fb88a5e3ed4bd0931f0bb780b8eb8afdbeedea814b28e7d28efaf3eaf998a9735fa38a8de869edae96e78275cb3b3e5cfb780af9f648ed6536d52f061746f56b636f208f7d0c9f9f2c1ea747e2bd3ed68eb206df0dce61a81dfd3a077731b6eacb5cd47134f45734cec80d76c785ac5f325927c23e4f8fbc224a31f95a1297245a6880adbaf51d8aadd0b8e5d9c7a2781f4c29f696385acdfbcc847f8f2fa5f76f48ff53c072ce6b4ff99f6f8a06e2ca7a27710a513a0c13dd232d42e2f8b0362793efca731e79eecff8f1a52b1ecf8b3a64ec1c6c067d1a53d99a6ac74ad7c24ec6e917d58e536310287f73e4f167a341571f6bf7a6ceb372176cf65f5457cedadf12ae665df411f37c8277e77f05a6775178ed6410dc7a64668ef7997718b82fec59ad98da13ca17e648cd06bba826fd5271fedd2f3154be4e97e29ebf7f0e1abf8f636c5ac8eb63a827c4bf3a3c5e7b2d35729ed4bd7ee5b40f9bfb76bd835e4b431847f87ca1395f4125fb61fb766d9d519d45c45fbe73963c685a83898bbfb45753daf7094b902b0efae9d01eb7d03cab743c89af2f85f7116c2eddf5de3f3bf7fed9e95f808304ed9f76ec33535d53d35e13e14eb3a68d116a2b8ae2e12c24cec0496f8f75cb7ff54de8c786f52fd09f097f34346f43d2e1c67983f7e32e43c21cff509c061e296cf53958bb8767b84ef49fb0229d3065de4b0663cef635ef24ebb0a03521755a70aea7d996bffd0eab74a35feee68e6f14e437a615777b6e36a2d8b8264e0cd514ff1d2eca20fd9a7a277174501bfe240c779610b6053174c0ad6a94eee6a6d790371b93fb236099a40e021ceb748fb3bbc15b0197aa5992b7b0992a6cb6c209c6ecb474ceaadecd94276609da464d6d17b217ac3c4bed7823f59dd0b308b5a39312fb5f121b82fa4e3fbe30b6c17e207bcd233eb9cb2bdb1c603c216dbab7728c755bddba14e42d375fa1fe050b97c980610f0e7b75deced7407754180579ebbc31633f210d8e488e9bc96586cf1f74e3d9ac48cae94d8fd14e467d9774f8b8e68ec3b5c25fb0995d523e2af5bc8570ed64f3a34fdadb5d3d42ff4835d06de4c07fb6d3ed0e35d25c5636cfbe075e8739dcef2848ca83f2135ebbeed3beaeb11f16914bbd82b32f0aec45a55f9427e07b58c039659d0df18127467522a8b1f12d71ba8b84720b867843d75e529f666eed1f30a8633166b89ea7de6c4e3dc793f4f5169a6b73d877daeb18434f6d60057aaaeafdb171b377c8358db5e791fb4ee8b81fdd9a56dfac69b1c535a84b0a1b7afc5c5b401c22fe1dc63212ee91a3d776214a51624e585480ad2cb4f2015be91e015be91eb83150d8cac22961accedd3b6c6518afce196104aea776bfbab6fb955f4d1a4e1ca388b8601e780468e0f3c4857b49a147e913be6b61eccff4dcd47e6df487e5b624efebddcc29708d38ed09cf8e73bb9f01a6c12e9c49439acdc22ca8c69b32aca3450dea45c795895e0d52e7bc140c7a9e73cfce34afbb37e374ee7a6393fee3bdf9957f217fc669c3e57b5e3a6c25e7aad4ec9075d333f667541db8d4bc1eea218f715c8e8288517c2df74bbff2ac20f286854d9a3585817e3fee54f37a2affbebb46cff0696f6a16e89923755dde02c1add2c0fd20aea93f037ecb023498da792bc655d3610f41776169a3b7a1c2bdd45f33e8f77be19d5f4d7da5f387f35af93d2c6d4ffe3e77eaa4fd6fa655d760b35fe1fc956b40e6d43b597b4c6a2f1c17740d35694cf3916e2baf5fd0b47c9b6adcc4ebb000c3c212fc0e68d5c6bfee729ba57a96953113e4fdb83b074a6b453e679d72d82e77e8fabcbe467d5e758d3c5fd33af8c39c61cf2fdda8cf996f7ae091a97be0b306be0acd0c6b6f22d174a919153b7a50cbdf33196bc6b517bfdfbf8b728d9a21ca63a13e20d7d3093767aa79bee173e0a8e125bf1361dfae9def412dfbe1768cefcfa7b12140af5620be3334e31e7245fcbb1c6bce55ede9efe3239ccb72bb1a2611fe36f25e968ef712ac4be09f44ec65e94c7ac11a793ff2f3c925d8ecc9d71bb11312f3bff535d1c6a32fed310bc7d7bafc87f5d0b3655a8cb9fbe895ed6f4ee4ebd150fe1446bca76ab1f3954b38557fbb523dec65a7fbadf16ff5e68062486f297f23f3b373774d9263e349cdce6dadce356d62c410550726c8537fafae7f39575c3bbad6365fb83e1c17ee75fbc77bbd74f7eaa9f3fbe6cdbd8ed5bdf6ba7b4dff7caf63bad7baafae09ae1fefb554e7caed94f0520756d1bdaed4f597a6ba57bad600fa11ce35585bbd3b3cd7dc392f1defcced15d5bee62ca131fc2cfe74a3d93cc6b8a7bc769f6bf0f97cf50a71a8730d3793277c8bfab444fcbe88e2af0e7b44b94bbc4b097b33af700d11889b7757d03be5140bd5c00bdc2b3e5029480758e252e41c5e8e5d9b70b119e9e75f31076ed4fef6968df7a83f37d8d16ff13e4f2578e1d801e8edb76362176c3de2896b450575bc529be805e26ac2865fb9acc188263053d2db7c5b6e6bbc1e476a6cb6eb94d2ee837ec338467f7196a8bcf34479e702e224b7706e9e6feccae7abb4ad62e51929f98da05fe91e82cd6a8771dd3493737a60314d4fda73cc1cfd3d9bc76f547358424fdbcd2aefeaffc63fadabeddcd665ee313d85a3eafe548767fcfd611dd27ff532c2b91a2b352fd286f88aac1180cd3d065b47e901f992f31ec33a26a84feced7cf29a338aceeb0fb5d472076b494939242e097ad5ba8819b1c239ac275c4b37183bd5523bcc5db4f7d4ee0b53ece78c3b4d2c97153257bcab355b715292c6cb57b08e719eb9fd6053ea9c700b1bf2e5ac295f7321f7153adf94148bf3ce979249dc816fae3ca5a52a7b27ac1f82c6c35b2cf3c93ab8e15b4c855375dc4de1bae9b68b19d9d8a2ba22d51adff2115c1737d3bb5e44e1fe44edcb3d616a8e6adedef0efcb35f651ccd47e6da87fa79fdbef422f33bed2ba381be35868ef6b4d7903f2c4c4c0040fb07a475e5aa00770c2b91ccbe7ceb574c7a0ee328d87470d7dfaa78536392e05c48258aba3bc5d5d63d09434ff29cf19c7a3016ada9dda71441afd91e28ecad8e742efe70663793228579a6ac8bf9c2f8863fe44b792896274c2fe9c3068be4591f4efe780790b1416973c217878590782f812fcbe6ef097dcbbfa913b97b6b167d05827799e98cf5904ba2f42739bdcfd09cf705e0f7dda63cd450339656904a6ba3f7719b91d6e6af38b344b41872f62c392f813d14fa5e39e69de87d271bfc11ddf69e34738b6920b475e602322369ccdb9f2e4f24587f3c86cfe46dcef5073bda9e6f5d187cb0a7571c3459563e25b6ea26aca5af5c5603d7422637f05cf76f656ca1a95f46dc7791def080fe99b35d46a233e24ff1ec240676b0bc69af2c192f73d053e546a116784f6b30c701eee623bd17e83fb7a168b3fe2be34c27da50dc6f0b1fb497955d4147de2ca115e407d4fe847aefc0163e9cff2c42bfb40eb3bc4eaae15e8f77effa9c9414f32d187e47f1ccdad2d61e8684f0a13d28285672079039af79239c7db98984b4edda6a4f1358dae904333c2d54588f316479d6a7753ca3dc21f8ae39a6d3de4939e247f5ed6679b58617f10774679317bd07936e9d97fdb1fd7b4e60d3e7cc77fb63f7a88799d50bfe4cfef866d4a1db8d480198cfdcce80f9ff69a9223f157d4730d62a7e70377d79eaabdce27fdd59bfd0bd6e7ae6fa1fa27c08d68ca613ec2f3c6ec90c3bbb46359b3aba92e72c4bfd31abd6009d52b8fe7763da1795a422c332da98639df1d542f35817807f508a3dfdeefd3fb78d62f6257e50bd470f66d4f827b9563fda6ef747dd5489f4d3fdd3e8b36879ccd3dfb77f785b9c631162e131562811b6f78a3df0f78556335a5b996ca7deba83fe0da7a145b8aa6d4708fe55948355e99538eb36aa2ff0e83fda7782d0aa1b71f39ce379c46392e15f61db8f3b1fe2d866bd870a68eaf9d4bace78967df15c72ebf6d04f9128fe1f7d2f3d94e4de2f29f76056af68449a1fa6705e8dedbb9e35d7caa01348ce6f4386d5c8563cb6cf73e4ea4755f6ac796f6b481fa485143ee54c4ab54e6fe497f21796389bef0ab7b2ee192f02c89aaf570f27f8f1a17b1ea7195454c6ab644821fe5ba9af487dcb87c0006561f0a931dc5507a885b4be111968ecd92be8d9a0b9ac2a000a6e32d10559f8f7f9177dd5bd1907fde4d1c06b8161688d34bb0f189bb71ab19ee65b016e0dac33cac77ac64ec1b7b2fa0f5e134899c6bce3591dcccd25ad6b5cc199671dd0f3a3ddd3b6cf1cc86b52fac4e1f0560d53d614adc80c4aa83dec7edfa5af5b0ee437e61cfea4af2d94fb589560ad421b9e56589dd7d1e65c78419d683f7cedb046adc3f8917a27c2796a3475e480c9a75c96a982aac13c6f69aebc5e3d5fb5d7f0e7b68aca947a445da3e9bcc99984aa350ed5dee3ed8aadf7f15b1dc77da18e55ca8daa97e219d81524c1ab9ff41bf22921abc9b01c59e18abcb63012e4af229c44561c18cd3e5a6c6a9818758fd12a835c91a3ee27e70fdf270af180573a95732fda697007ddda9f46fda8a03e5352a0e8865de34a53d2e4f2eb4ee9ae4d928c77b9bdfeb7b8d515e660cba3e04ade9c68462314ba858cc9d3e8dc58c5f88d971b7c1daef91cf5c1e61ff63be52bd56f4c848097784f1725777046cad9bacbd2bed334b3191bc7db1a53c48efa3c7705a8c79f73bcd1dcf1e302285aa1f3c6244ba38ff66df7ec0132bac439f34104453e8e1b775b6e8b56b27688db200b16f67a62ddafccdcd2b760d015737a2d89413c6cd6552333bc7ba7fa82d407b94fc5763d1a77156d05a385f116680fa416ea2ea61a7533baea9cf0cfb5d29637b59cf17de17ad5db73915e0bf2417cd250c35d56728cf8fe6f570ead696404c47549d603fd656181fff200cbe7c67e0f3e45d9ed49fecc75e5c98d46a0cc29aec4afcc5726ed1fa8c9a476d8e66e13838f6dbb90ab8b2c7313cb0b8b1e8a95856c699d237f16e7ccce6bfc39bffa41c603a4b564fe21c8c2f4dcb66f1846a5167e2fbc634dec3c7631c65dc2084fbb6747c4de54946694fc7f550d60fdf093706ef8ecf57f68d9ea9a6304d86f49c65e0538dfa32779a7a47a3fd2eab3c8beb16e5d85f0fbc8e6f7508d53b798a3f1487f698491b878e90cb0c5aa437f39b558c6252e4c647847fbefdf7ad8e04bd8f87b1866b1aed995e17bfa16732d6f05283f6667d97097ce74acb9265723c680b2353397f79e3e94ef5b1d5967e1b25ab3de17241e37640f59f71e678db8c78d4c905fac4baa7f2b21cc6881d3dc75d5f7cd08d7417a44b238f71a2fcd45edcfcaec3419fb605f645126747f5ee11acfbe419fe13f307dd8018fc6251ee4438bd0ebf64994b85a796ebb78b5c57c0e3e801d56e9097a3f46562885b2c39e7f34d2afd91722385752399343ee2cff89cef600fe63a60158f26f543b3c6226c83be448c308f52784f096264c3a3168677eb892bb693333d9bbc7d366e6985c4fd8b94771bf32117b09208b1aa32a6923133cdaf086a31c20ccc27c7144f8e89fb2c8f2707a6bc85ce3ae866a4afed9e811e9f5618715587cd54bf4a472d3dd12f00cbe096cee45a5442f2a8f8da555830b6b54833e5e37e7e421ca4d6f0a8fe54f8e3ba40dc8cdf9ba27e51a6a9d8887411a6c5e6f206f7615d94078ab13fe05a22d78030d1e1b9456c989aaa3e81d71f5f4be707e50526f1f7f15930e971a57ccdee6b1a5ce75dfd02de912db6e9a5ab8fba1d4e6c831eed4d39ec6af447a3dddf32cdb3c218b566708fe37a70259db65cf31ff65159331a635e2ae370d4827022939f506b6cddc5370c710a5a1ff5daed65c5f6a4151a1b7dfb7e3cb18f605d1bcac78e78b809f85a00df7e7554dec6b0f678e518bf17a387b7c9a8171dcde618db44a0851d6a8e5192be89e99954efcb653f2196f5e3bbbe67f2ab795ec7aab7bef2a8ff5e17faad3796a8b785eae597ca33f8a69ea163dfdfe28dec2f445297b146fda5763dc0fae86cecbd52de389b135faae815d5ee3e6f4cf6ce728c38328db881dab9406c158e7f99bbcc467d395ef2caab0aa9b772b24acd9b155227e4340c441914e4336bba36612df331c7bdf128fbcc4bd25d9b2bffa167b5e47766ac9e79c671c26a04a6372c3b1fb5bff39d3e7ec7c6dae76419a3a69fb9ef3413b77ba82dcf5123bd716d2e3d259d4bee787de4fa1e83ed7e28da73cdd3639b9b86c23573c7ab0007ce8fc1a646dcf76598559e7c1ec5e632cc210f6972c73b231efc9c3bde411e77ee1e83cd65182a1d63a90bacdd78a25c10e7a5112eb1e3d99cf66dec009cb39f58278db560fdf34ab5d4a5c44eb7fbcde49cea3f0163dd54a4155a955b6bf2df71c0d53d0e5830cf6f18f0f71da7970995ffb57335c178feb2c47d57cc53d2918eca063581cdd5fddc8b7ce2323dd690af33e25c5f072ffcfdcf35e47c4e5a2a27f2eb7df3e99cc68a38f83c95fa4ad057250f7ede08da4fc66c48397771f11db9df780c7374d1047df4223a049b337971e2bda15f2d684f8e7dd08051b8f33c023f3b2e4e9ad2937ff4e15be371c48f2fd207fcbd26816eaa5844e99dca67d9c689a0b723fa58ab4b1b3a679cf4d1d3bbccb27149d7bdcdab0af7885f84291cb3503d0b6d8aeb196f1ce4e8149760cbdff1f75fecc63ba0b0d1bb2f71f4927ced1a6ee07b59f909795d1506617d4438a0fefbf8d5c03d2c76000b24f35518c7e27aa4779082ff0a7896d3fda59a67932e53a93e774d863e6ef1f697f2502d9b58ea4187fae2fe5dad63aa25ef919fec86db9dfe9b3dc24cd5f3176d2efe77c7e9a5443e4064aeb6704f6c17504d35293f4338d65b66a3179728f4ee3d046accfaa899c93b4f856d8efb9f302ae4d23341da405cc5a75027ed9e9373c8058e83c6a2fed3bc68632cb8e74b81eb576cf40e70cd31fab2b9d17233793aae9709f981ff30fd4a7b3aae73879dca8e7f66524cbddca067c97f98c3edf8291d4f5b508d3ae97b32c7d0d38f76dcc3f3aedbe79d06a2ceb0c7df5f224e3f8d1c35d78b069f95e4de288daa4eab08b0b9765e7123b81b67f27cca4b42cc0b1d3c2eca0474b4e538dde75a85ebe2aa218c4da7a956d3bc81d8063e4f248607fcbefae831847b66aaf06419d6ac6fc703e66d6949f315b98165e55d694c8bf074a271c8c635622d6383c6013763ead9c7c5fb093d3ff9bdeece7cfffebc47526e151e3af2d89fb9eaf5cdf870bbf131faffd7f8f08d8278004ddd23cfb2d7c662bf1b1353cd5363224b061ef98b14d4cb114a8fae1fddf2d4518b2edee8a415da5f0a019ac6b0f7be04cdaf1e61d9e5fa459c798801601d46ae006859d727d4c58fb066f086cf7b08b972f925907fa8b4c8d71e9e43c62ce0bd8d5e03993301ae65a20fc1f7977d06efa445eef954c784771c1b39f85cd8621defc07fad9c11b6b640fe84909ef97116c8e72e3dc4817718d17cf1af1d2ef1f481e3f9429e3131befb05c43de3bc4aaf1969e6cedd4ff0904bad72ebbd025e636fe6f54ff456d8194af367adfa5407fa7d41ba7131e2ee1357ee3be168e5969bbe8ca9436ddfef8e77fe17c7abad3072dd107b05beea230bfdfe58a5c5cd15795e7845d297bc625eb9469b2784922b60dd6a027db2ea0edb300ec4eada79259c5efdf61e3afda6876bafad301c0cb3643f855a9cbb276fefa7efa6b1e8ddaccacd8ab463759a9b61435e56ae8ef37a8539a8c189c36813a6a2f3e0ce13d503e9d3734ca2da43cf5d9d7c020af42944fca4a0f806347d4bc92b41ccca813028dcf408a372859acc896a4446866b63ac78ceb511fe1dfdc2effad92e436c4caa81ae7482f791a1174a41395632c073c5f8fcca1de153b841bc69413c8e2dd68f32b6d9432d4493f1e418f86e27af18bbb4a71f08fbc01bbebbe166c0586a6a89832e34990fb941c4864172219f6aae7c23e2ea4be1d4d5f53083e29990e216e49c88ea9e13891c135b6cd573f73263f0c83db285431853f7eb9157c4118b809cb0249bbbafb47eb6cf32ed3c04f19ad1c330aecc30c4b54a4c4c1c37f6b2622f4a9fc6acfaca93638bcf4eff752808b36416eaf3e21df948fa4aed299d6e62fc92d3b8c77cac74bc4fc26c8868a285c83fc05ec82653d7cb8eea9dcf1d0d3d67a5f72b43beedb2f2747c777fc43d71a9e303dec80571369381a1f815a2c2f5fc349c9106401b536f88f75e198cf88d5161a0d76b9899a46b555d4b7ac71133206f8dc37cac3e3fe790dfd9e1f69749ef7c19812e44a8c3fe966ceb0fc8a1d908c7dc3e583baa7ec4d62978ba98fb216bc823d531dae721fb2a38be32d2ce31f7f6d2a6efdd68d31276b0d3b4d616986be706be1ba3d372a4fe3df95ba0deb5ac2fe6c4a18ad91535d22c11493e8afc6df78cca2ff4451e433d2e3e231f35cbe66c86b95b4fadd5d1c2206f5df87e99c0ba951e3388076cbefda5113ed35ff329decb8462a4a5cd912fe25c736741dcd12fc4904c15e66aebf7d1f37f92db7f8d6713d02bbed0b526e1c043df1a6d798fa363d2b7c6d00f1027c8feee1cbd2edf9437b776b1099b455e7b4b751de517f182738774b47f92eeb9bb8c38f9445c33c21fc87759be045b46e725accb36681cea618df306fb434d8d9a1483b38fbd723eaf34f0517757c5e6a4fa2b31cebb0c7b74e479916a7ef37d8df6fb1c795785ad78ce7d46fa4473ef40bd46a96bdb8eebd11efa4d89435e3e4fd67e9963def25bbdd45c8d4133ab14a589b5308a09e7e5b0b057c443d27c5c9767c2bfaf0d25d581d37bb9d19e032cf1997aebb7e73af251ddc7be2df3358a0b07545f7e8aabcc15af4fea1dc0dc1e11a7f188ef8c699c78fccdf77880112f3a16fd6e9d143df4bdc9caa8245dec6d40b1be23fb2552b300ffb6261fa7003c08358a2717a4d704da73ed6f305663c469431d713e64098d8fd30d869a5981ce0f33ac8fa588fd2b2b0fb1334e2fd8c039129983c8b95bc963a2e6367ad6aa586669a7af777be43fc7d9cafa5ed0ac8eb806c433c9f92d41a3b1e36f18cc513e2a7620d80727eff231f6a963d62b488f6b5e5ef83b78e0bf9aa4f5131b4c61a77aedb5492dad3c7227f7b87a37ca224faec33caa6ddf4ca9ee7b68f367c2fd2ed7e57f88359d03f640f6412df595dca5939e19e674f1f564c21866d53f3bbf9abfabe5a8fe53acbb055eba7b082a99f38f9948770c7a5c747e4feabbfca3f3f3eefc9b3f9eff80e7370338a75d3885aee64d726c730cc281bd30edfb9c65b40626ce2523ef9dc71857e6cea41d21b5eea6812835de085a73ddbccd1940c3f714ac1df33ed738596172b165ae01f88c036aa392e659a3aecdac309729b1de96a207b3ffaf3088ff843312ba1c3582eb57f0ef79baf74d035135c146c634727d6cd700f237a05cfde17edc7bdeb35c1fc781281a3ebcbfc7b2d2fe9fdd63695c3a1de4cd4e7b92db9e54de23355d4e6dce68e77317f1757a9b332a2e0ce4b5857af7cb888ea35fee8f23735de7469bd415cdefb461fea8eb4cb5d973871154e7246e09f5e9dc78ad9e0be6d7b115392bcaafa3705b1e51fbecb7dc81873dae1d0b5f81a15f88a39fb56341f66299c234fdbdb1e0ebd49f999a2bd4f8ab09e76847a64b9a72d32caa198ecd1d07ddd0b854fd727cd6d2eb12b105f39f268c2736baefdb480cf8b367fe3f88fd679bd7468da7bdeae527fb2dcc9f78f46f7c9ec2b9372cb754e3bfc901e69d86428afda66254d2fe4a9c481c1b25f642f15ddcf013b9f1704ed7b5924ddf9945e0d3976ade6b3eb7826ecd137f63dcd75668ec4967472fd0b3e7a64616ddf18128b68bd99634d8a26841317d4ff523300649e65e9fb42d43d48c95f1473b16b51e60232aefd0e95f9e646c1e84f46fd94b700ba97d5ecb78af1c2b5ff60979ceb47163a14dbea0e6e77e049b137e47e2f32ca9cf85ff863a7aaa2f3bce85d1fe3f7889fc225c14070deb01e44bc97e98291f2539e64f41e5d0bf655d926fbdc963ec9899d4a33836b950be5a267fbfc377bb8a13909cb69cbc1037fd6d44be5d5b3e69738fb061c3b451dc541de31a13bdf4df4bcc1bb976a4feacc1340dbdc58e26d57fa916003a72a983f806d2bb406e626cc1fe28f3c50f55e3346a8c8598cf1ad5e3e9f2be2be9e99488653cdd8c6df229065c271d338ec8a76430cc37184f8ba3c4c822b746d6c1969b8baf3c45846b338def4bec19902668ae799fa9867b561368e1f021cfd8ee8fe43b24cf63f236b76358b3d1dbb5f7fb6f2526e52577a4fe865d3afe817a904972a1d870ca6c3e21ae93accf6a726cda59c5b64bac87c591c26edc7d1f74a7e9dad831304e1ad605f4608dfac8b140ec7ffc11607dbfd426a471152366d8cd1de404c585ec4f2eb046856beb3658c7ff705e96dfe7a5ec1700666ee9a4d719ed4df3aa87bf4b4bd25436ad613e1c30aaa3e49506b91e60e0eddcf134ea2df24433a22be844fad193f5665e6e11e3b00bba7aba9b372979ec34f4fea3e4574f79f66f6ad2f899a296ce7941deb14dfc897383b34d9f295c9fc41b4e0e14732e405b6b01fe89b5efd3f81742ea69282d79550b82eb6ee3f0653531e8ba16a13ccee64ef335898fcbea1fad43e3efeb903bf5c788a935d3d1545d5f6cb2ea07f059c31fe42f15a58df262eab5d7d65ee74ce05e416367db3d63bfbd2f55fbdbf59f1c07f0c049ddbe234fd6468c1d9d8f674dfd461e9bedbcc8c93338d9d3beaf834f94f3156cf6c6b37902386f9a27f107f1946636ad1be09743be6be596b4b48f972969e5ddcd6d8c37a1fe60e795df238ea47fc5faf8fd5a44f118e0a48dbe5d18e8eb9dc49f99f36cedc17e865a7b7c3d306a1de7b749f979293ce9cd10187d275fd7f76bab7cc747d222269d232d58f32d69dca2a7ad206f2bd4575f1476fd649d3e22ae87ea73c5058fd5c67c5684ffc518d0022e72ece515e8cff375a1300f37fe3de41d3e46be9347fd512ef18df52e30ea6388317aa9fc4b7e3d8c49a9ff6977ba2ff21d5c4be7173c873bbf91eabcc4783c13def5f9f3c798483dff18bd4b5c1d7b1a9fc1e644ef436249438525ad68fc130ecd0ed70a33399f527d5888433bc7e49c59fbe4b537f50d7daaae5f5bdcf11478d21f16c60afbb1f21e1c3e4f77b4efdf8e7b99cfb56bf015bc29b84d9e4a6ebd1cad9eed99d87bf0d4be953981815e3b7cd9aeade0b5077e2002ea809933d1093fce35f0602a358ffe36669aa7cd086f10a5edba897acfaec537972133fadfd77999239dcec1961f23f2646dca9b79d1ad2565836335414c26f2a416e1ada69abbeae264a97beacea254e90fb6ef41d63d23463114cbec95d23e251d064e5ecdb2175c34815190478af2fdc946b4aee83bda838459ef895bbf1ce9580787389a8baac7a0b63b0a224e18ea3f8e83c0e80f97c98a34a72ef87cdd643de947e4f12dd785147b008559284ca41c8b73c0f968d4e7d39fce03f23e526b1ddf160ecd9d89f97ceea03f02fcc62d2acae16a1a7fa0d5a0632e869e64e97c42780a8fcde3f10de7d64eec954eb168dee62f8405a538479427a629ad0b0bf273ee4c8d0179757c51fd3c8ebc7d447eaa4d399463dab486e18d672f4f167a4e79def5c7b9bb6ec03549cd23d00dbc92df003734936a42a8e3770c363de25a74e78aeb5d019c354ff94745de17c68431f456e20c638e9dd40c6bf3e7f71b0ca7b6ea138633a65850e6602e61b4642dcd071f6197dfff16ebd331d5877ce2a210268b5f51d701380fb6af3d1ec76d8f33b93f8eac1f4e95ee2fc585c2dba96764c6d26b2c421fd9a8aa8f4bc2de0116a91d97b7582489994b843bbec5ccbd1a3a616bb44c5378afdbf9eec17bec0f33a3a43e19fa9d0537fac84c694f490e0871d8ddb2f3eebb5ed68160937bacf6e5237a8e17c55e23a7f9ee65763b9615a6a8d3ff32539bb042791b77d1dab6f6af6a1e24b85e894aa33c3c8c6275ec7fff592dbd0aa566bb58d07dce6f9f47fced79dc6b9ea50679601d8f77782adcfbd808d72751ef982810ef335810bf4d8e2be19be4197c8b352c37e40352e99953104f77471e568cd63e781f6fcbaa3b4e1cfdc4bd219e413cc8466517cf688c7a4b305fc7818837d3067b60f8b9d05c2f5a0b5de1a4c293cc15789c7e9046ab48aa03f6415359579caf8659e5cb35a814bf8b5380dff9aa9d559f0beb58cddfd9ffa57621c58e513a84fc6535241e16075ea39baed137565beddaf985b8bc2bf18cf3e1e97b9e84daaefe86ce5f72e8f9b8a81f5846f86f81ff8e611d8e4fa81134ce9ce22baf7ffeddf3496fb1ee7c4523399352d3c4bb123ec6573a02dab9c01e18373a3fc199f42c2d217f3100f3d4e69a056956184abbee2eef00acba770ae93ca63acf559da771afe483e18f899b5aae71ae1e8277e9bbd48ea1237f977c4ad9abcec66deef8f7ae036acedd75c4900bcf13acdd2521fe1bf79185d4b771ebb401ae5418d5a3362e6ecf51fc363e96e34e238f5e31e7e4fd768303280c9fb0eea67b86f594111fc89bca9a9ad458bd26b02e804791e4ad492ff84b027512c6ea00fb47f2df3e71e8991e406d29b2ce88a93a612d4ae077341edec6eaf531ab089facb8705b1fe396c57cdf7ccff90647f29e17d74ebfb2c0bdb0c49a724efdf1ad4fb1c5431cff13f5d29c0397f192d30f8cfefe7bac7d773e598728a527b78e9c8f016113641d9121b72f89dcbfbaf6fb63192be7957a7071fb5c8edf632fe85f629eb9b7cb39ae6b093b67e249ac061c4719efc7d2f7d5d3218f73b3999cb3373c9e5868900395d9bdf78c7e556be2dc3f60bf8e62856c26e079bf6a139947a6768d75dff83358bb5f544729aea7b71b4eadf46fc92b762d49dbd66426f98194efb49ef8b77bd294f62ef01ff0bf047113cc3478963bdcede9ea18a0e73cd5097315abf32e47f5f7d8ded0685e6f83cdee0be7d57c5903e62c994f4883e5fb5c9398d5f453694f77cfcff2a5bfbdec13904f96aef0f4f3d8f996bf196713c753d4d52ed30bcc2ff6c14717d24d6fda672a6b3bf3c5a1abf9f3ce67fb268f8aeee32a3625bf6f07f0c4bec68d42bda3d210c32e8f54799fa9f8e9f8fbdafad3b95e8d1543fd31a7dc32d2fbd3bbeb5eed9fe469e71ceb65b159cee16fe50be238d2624dba36b758c3c585cbe753983c4a2f6128dfb3fec75cae59505cc08ae48238a6927444dfcaed7ef69bf3408f0cea5c5e811ea2a1e3f6a4963b70a0d19b6d6790de45dc9417d297605b17f8bef3360792358ac46fb087d4d4c3b4218f45d0654837e823af792f3847edccf1f653aa2b421f6c17ac4b9d7222cc5d2637f830c8a704ff2a0479acba67fea4e600ef46d5a43f03b37c517cd87149fad2db52f4604f34b1d616973d26488b9d6d49af34497ab48fb965b3c29e61a521ce94bcf03d5f716584ace52584b1dc62ec1f3b7a41b8ff44d63321bfd9feec75f5e0d5db8dd6c758fa30187daaa9337fd407fc615cf611736f6795b7a7dc6631df531d90f90d7af6a12f603a1a68c07d6723665a4f72d200e721fb08367bf50ec3f61dae63ca0ddfba38559056f001bc46d8355897e6e3f90331d033d0e1f69235ff420ca3ed53cde42f38495cebf5a087188f72155f1707d2e56757aad12bef7f177089cc0a9a78c8700cc3df6fc714e06c912736c90df2dc1466bb4f409da2a0bd21f237e4dda79ba4a114352b0dcf8738ed72c74767b59ffc813fb10a449d659bbe87f96b1fe7861b498fe7dae222bda95949df6de851afddd1dddc861a4087af5df329f9e9e415eada6ffa342e6efcc7b5af0ce71272d0c73160b74526e3bad20aa215f6df39c442b2e6b3473fb6dbeb93eb11f4d51bf42249266a6ce1e75ceed772bfe7d6d3e39be99051af3076fb33e707fa7293a6773c263e872f7d8362caf9ad28f971a07dcf6f0827f403b5d3174d2628c73bb67baff45c015fe2d4fb7e3f814e184259eb91f7b3b8b91ff9791c883af447edf3787c5fd6113db070edaeba67ddf9ae8317c79a11deee16a7aade5de678ddde7ce3bf0ee300f4fd0ad05cf4caca3333d407b9e987af6fbd8d67a18a5b0e143385b738ec67ff0d075467fe1366f783479e899c44dc634fb6cab581934c9f2386e934211e75bb3e2c2b6694f49ee68ef298f44993e5bf5fa7277199e3b8bd8e072e49a5e290d72b3e2371ecd33b8de6846ff871460d16bb8d2b3177ee7dafb75ba475cc72e5d57d6a96427a7dd9c9b8a0be086773d587ff2ae01eed641d282d3966aacfcd0cfaa576f27efa88889748b9ad38e9be10b87649bf550eeb323f45a4358c5875a1f9aaf7378b56e44f66c89e2878489ea9ff1fcd5dca0db7c17642cf897539a8aca7474bc0ccd8651528ad54813dee54f3548c1e85972fa5f905b5e909c55a05e10f62e7cb477e4978959a89edbdbc6721d6536377c7c82facf9a501ef86bd2f49c32ac27d3dd90f55ac2e8e57df91de6d76564d8cc2213f85fd09f7f113acb3ce85cf197ab03edcf3f00471edf5ee9ee5bd70c48d41fddbbf70e547ad8eff85c76ff8dc7d7efc5169238fe8af8edff0a6e8a99a4d429a00c7735155df7a36bef4988f15a68a8fb02e9f94c3423d1f4d71d7601d627d9cdb2f7c74246d8855f4ecba6dafcd9bb487b16089e6e795e20abe66a4576860ecf6708c7428b1bf8fe3c9894f4a7f823c66c3c10139c6d1ab413ceaba061da8d590b4a832f2804e5647eafba406e99cd57b3857fc8235008e58588e7ed0a81fef0ed9bcf431b73528162e92923064a02128c425d8f8f7d79990def4e24fd7fd513a67c452b37d49f82f55dfa4ebecf48d7f733fbbf6388bf63895af23172d2aa91ed6043a7037ddb44c2ed0fb91b13bf85b107f3e4cf41ebc63f65a8e952f92b984f976086a1977ec82cd097c3ba3dac135f6612ceb43e42baaf7196aae9b577c9bc37876520d3c696722d0e8fc0f6b855ca7dbd8ef6ead30f60eb3bdb7676318fa8e03ec75943886dde8b581eff3a876c23f5fafac772dc113c0435dbf2f6e07d7e8e93a381862ffedee3e0b2730d083dcc9c08fd29a6ac1e137f7f97c4d342ebfbf4f8df0b2f7f74958421e0e9cf0e91aa3aef7ee3e0b07f6b36853d27a457e34337c5e1baa4fb5733b81b114fa63f0e5e422350aa8b538e84de03e787075de0d6b5ae7fd2f7a1edc2871dcb951be5d01873a7295374a1eb1918c6d3575fef6fac3e5167501a467a9d437a131dda7fd34dcfc42af04eea50d23bd871bef1d7d423a76caafe03a200d8d716ae23c88d9a79c079aebfa825918c7808f9770c782301cb64b7bf695fc1545f49374b3a46e269f7b4381b581e4d97b1a97a4457bb71e164edca7f5304926cfc692097875d0b48a712c7173e596aed49a77886799da2b03f3422f563eb9c82517a73ece7937853e9cba3f5c5fd3f4d93c023d26fdf1ba73475cbbeb5e3cbbee0635351fae9b7fbfee5169d27527dfaefb78fddd754f0d9a3fd5b974aadfbe17f4664869fff8ddf3bd9baba6e5b235e178eb8fa7fb7bf74ed5dce39a3b5e3a42036d3bbec5bda84a8d0bf0cab43a7b187b5668947d189bf106ea2565705713853de99fbc9b43f76e50cbf961bd017dacf861bd29351e71e0528e4aa81327fc90631c1926186f1afd1ec5fe9909b8369e405d976bbffaaa7f64fc3041ab93f9bec9037a9f3887ec68bcd742851be398bb5d90df817e0be4a11ade70034575f689b7d4b85bcc136e7893de73dee4f504318bc9694d015c43a20fbbb83bbe30a7c3d23189eb007f3036427da2397846c6529babb4c406f807c9a83f26ac6286dcdfa2f2ceca87715e5d3a7e2bf2dd940ea2df046bbe454dc3067b3fa8f1b7fa445cee25d89cc6e4837373cdbfe530424d75a2a18faeece9a0ff499b4b2eb0a668735101d772ed7f291eaad4631a585cec8fafdadd3b8d656f57d57d9c5e7b7c587b7b877b8c426df164355cda255deb36d57aa461495a196e969433e4371a9903bdfea8090ee4977f531b3ae4d8d38830878ccc8ae63c571cfbc851f7316bdf9bcbac30de1bddbb90b52ed94f9c1ae8d97b9b47abda13f6e8a05e44dadb8dc23a1ba7abba5f1db1f21af00d8a8a7fe11cbf7bae69537ad21f579c657d11fbe25e6ae8a445b2233c8648ea9dea7b92e7aeee1097db98aafef169875e7d293c0b760eb64ae3dd4d8d7246de23a483c293ba7dfe2be495a156c50fed55d3bed5cc5e0df2831d90de7e9f3cf20571be2b7151d7f30fea5c6c1d8317813e3199e28cffbe3ec2819b7af37b9cf7896fc0bdc7c7006b2ebc5b2f9f71c7b11ed8be7f5dfa6608e547565a7eb5ca540f4cce276112772534fac9f7bafc4f1afba8f1cb3e8993f06a62ce16b363a6edfe33ce561ecbd88f0ae20225d519f003ec355b5b6f14e7670e691ff957d2b3f3edfa1563a6de5254f8ee265fe8e1e62d9315e2617ee87ea53028c4f5e6b331dd4bf7fba9d6fd9e6df71dfe64b3222d1d8f8d2dec33fdb874ebc985e6cfd3cfc379d957bde371aabcdcfee21adffc90301f759f8e25aea7174e3a2e6677ac7f72bde1bc3aa81a9f499f575a1b6fc3b85dbd507d7639aebdbb6b8078af4778ee705eef940e51e491ffd979869aa862beea2bffb210341183860d97b645bad6c6b2ea34cab2b1f54dffe2f9f53efd3c82312a631fa7dcd07caffbdd181234866e6a72b5496320773c83d6e6304a5f6e30a03ba5ad74bb5edee8263cdc33e86c5c07097dde5e439b53876b7747cfa468c0e3a574ea5921719f9283b78bae970bc59ea08dfb8bf46ba7af668c5e44a46b49f85ec46d63afa788c8177a70cea99fa634a9e213f0eed82e783f9ae42f5d6c74469efe338a218c94b038cc37f4b76f5ec2a68b63d29dbeea308ea3ab3ca627f5d54deb857449fe8eff713407ada370a40ffd88bc92eafdaba6fc6456d8e390f5867c9bc29830537b6a12b7e7eefb2660a53da9ff2a8cbe53980c796352dff59eef9874fdf0e79a4013dda7fab9995ed0fffdc2950f601fb956e570d9c6dfff916b35d562857fc37aae2beebdeecc25787661ffc8f5f2a686182b390d558d5d08add47ea0ff803b5cdaab579c8fd2cb9b034652e9b414267a45e90169d48c81574e1e52f525af50bb39c4be298e3d4698ecd83599aa11dd6816b8cce273d27b3dbd10875d793a242b8d53cf54fea61c513e4c789154f37ab9509c9773f40ef95afb6ca75a45988786b8a662ce547c51aeb1b76f5ac3a9417199abb731cb42723cda31c68ea0314418c0fa5a120769be30690ee7ef0307dff1c917bf1e74f4d91ef5d2dbfcfc48da82c2f4d49e9185a7d10d37c32d9c8946da6371535e083f78fb3d392f4d3e645baa6116fd82f871dfb421c485fac285f4573bb531aabc16f9cc11a71835659f23efa898d790bf25e8971db3eb3206fffe64cefa98bfae1003119563f49033bd316995134ebe3056c18d6fb45d389ed25b15f3b87d278a37ce4df469d4aa06efc709a2d50579d9fb600d3ec5dcd80fd18f649491969238ed718eda91fdc8ad909edeb7dc0a896db9e1564ca5ae31e4ba49b1ae416b414b3f13e55796129e68a77a6bdf3dc80ef41e5271c6ba8c7f51ef06f417e6816033169e5e29f769f33bd023fbf564ed39e21c3bd158a8912f7ae47675131bfec5f50177f9eefa42cd1d174ed0bfc9ef0cec474699c288deeab9edfa1443a506f21413f4c9686a5bfa76fe3b6ecb14b82d037ad74c84f77a0219e8cf75befa898edc00f6ea47a987fbcaa9447f8145d257b5f17c9e06a4d70179cd1d4eca9b1a8801ffa68568cd1e8f1b1b3d2dbae74f77bab273467c05feec9ae2eb60077327ae68ae21be44e9ece473a8238858c6d6afe44d0e3d5436cbb71c3548a0dec7e39511bddfde278c751fb4a7acd0647b8c472aa85d9e44da909f821e3f68129a6a6e2a0dba8e97ec8f1153f63fb3b7b9532d3e10277f91f4afcfd63ac0c5d4e0a36172db1fa37f7d5c9f8bead99ae7824e1f721043d91b65a712fbe50bd37b7a1ec0ead0795636a3f3244c7b7e1e39f6fbd8ebeb0586fe41bc0886fa6aa936e9e67e52f640e75aea0aeea88ffe54cbe73bc776f46ad601d595cbad37fd439c437c254bccdd2be402bece87839dc2825c556e71fb7bd09a268e70130f53738fe78c7b4f9f0169ddabeb65676ea71cf7d3c6d7006b1d992579abac602fc53a4102f330420c4b02eb32837894f578b2da536dec81fbe8e695f7d2717856d7ef5848d6671db6fa0966ef0173179e76f03dbfe1c3c127ad1da9e93dc54ae609bd8fbfc5b392fdad5cf3ce7cb3007dd2a43f86b14afe179dc65446fb8f71014f7f51eb19ac4d4e68f2237ff4bed54ee47d5be509d5609c4b4eb50c5ccf04cc6386ba63767ec53d282e3fb327e3b13439f10020476b6aea65a6cca05ae160b8c47a698c18f672534bbc551cc54e3b96c4da02edd3391f76e76402aefdd725d58adbfd51e261326335224c8dec99c0dfb5609b5e88af19c33d27d0ef41ffaf586a204581d0afc19635b8d73015ab5e498be1b7fb1be66e54d31aa8787e16fd8fc4f3b25f12220ed1d7feab7682ffc5937a4fba30b94bbe28e483c704e15163d3224dbf716e9630768c40e1fb53cdeb3311fcc5da051c79a611dee4a78e5cd02f7c66c760bbc3bf391aea515d0343e101bfc7b2ed7e42eb8ef461675668c0fb4ac6f1053d19c97f2a923c1d5dc6af6e18718a2b62189b69e22b1ca57b66e8af9e6b9ee2f9a3e6999161de9f39fc447985984f104fe97e05db5ae128618ea6b897963b3e2a4faaafbfe50e793b668234e37e1d88bb48f39927a89f1757b03e6f4af289ec238650a0def936d8ec34f44661f9dc8338242e3f8baa877a14832bf630387a9cbbc5a8a4fcfcab8d39e49e16953b5c436f63ca7381b8f01cf8f5dba0aacc1cf28e5d50395aa1f0652e3ddfa87bfe35ad9b76e6f83db5ce24ab2fac05dc3d3bf93c4c7a76eccc8727554bce368367eb88e474d03a12989e93a97523fef85b6b95dc2739e84636b59d22f6274e2ebbefe37060527c2094e6a867a03fb73d13fe85fa91cb31d5826bb310928f642f363ae2abfd46ad65df6305c523ce2bf6956b88f769e2edd379718b1d8eac61093e2ebda0aab74bc0e8dbbc3bafbc8e9830d932b62c174554e278633b86bde778549938e6a2cc066d1d01bea6930430fa136e9c10cf5c4eb36d4a1c223d274f8b277b15973a01272b8a271a8d87b87191c7cd163ee908c4c505f3683bb1a96f7897275c67d8a38eb12ecf846764889d7dd062957a447993da7fe8b98d4a1b9f0372304339afd8e481efd7ae9593a2a167e66b94ef432ecb3e203f8c95e652fbcc433b3630bf8ed818ee314c3047c15e40ae4dbe9ec64f8053badee81a5cf8b87c11d4c7deac9a67b12af9e3a935d3b838cb39c56aa761b665cfe2c30bc69ec887b938a919638c3b18e6e367bf01af64bf82dff008e3125119345f72f208c69a45a6feadf611c8a9005b7fa53a1961b301072fd7ea7da991fe0aeaa1cf53ca4166b7bcd4705c921fec1b62838267ef32bafb0ec4d261d2a7dea9f2782aa9be1e71d21de0985b6aa4951cc5b763c1f550c3e71860edfedbe7a001a451ed056b78c487014c38d53b448d31737954dab5aa1fc63e830df6d1e76cb87cfa9e3a4d405a6366a2d32ac86e6b30720d24cd9401799f621ceedcbf538c1771ddff0a145e56c6f0828e318bb0069ba07eb1f46394f765321c07929bf6642c2bdd44e099ba59459e5ffe817a43b1713123f21d92f99937cccc187bc4f1b9cb5955be3025bdc3c7ff8217426a671b9c2fb17bc9480f9e783b84edbdfdafe68e73877d7c7f3f6e9ac2f7c6e8856a85c8e1fef35cf0758a3163d2c61ca96bd2c9a7b0a848cfb41c2ebbcf018f2eb583bc2d8ead43b0ae9f3e6355f3bd592fcac852ebc5d4fce37a4163ca43aee02488548e47d7692db01eafb094f763c5eac6c7f7f1963e8c3785e379ff811ad6a49dce3ec275fc897ad8b71a1c27584fe25db08ebb9c3104cd471ea36fcf1cbd87ba7d40ae137ea29eebfe55fbbd7ec0d279aa1ff01b0e34b302a178209eac113cdb3f46aac7fde47e5cec6dc55ad07cbf2fe41b483dfa277a04bfb9aeda8a1ac07df0caedbe13791fe4ff897de96773681c88389135a6b9857831899185fa3f8e67f2b421bc126a12d879e5ebdd3efeed7c6c81b9a5fa37e29e108f4618e5f784c6580df574c46f5a0bf0101c67d542efe6a9bcf7557bdd99aa0ddcbd674f6a936e9ebd87ea805c9d73b0553ae3bc6cc78bac2732e0244684f1ab887384fe7b553f77fe5037014d10869a20af61c43ff1d9a5c071e12fcf74c1a08e576e9147710c1aa909f4bd7606eb2ed5920ef09eba7567999056ad7bf6c5933c093cc7cc604bb1bbdfe776403a78ab5994ba4f6277a9ef94b7311be65733c14f05d6a49339f64c31562b1cef853013a9e6697e85d80da36edfc7434fc7d182f781ec99fac26bd4fd6f067de053b85bf44c5b2cb78057e6c91e6a9bc965b89c2386595b18e4e110ab3d5f725fe694bfa2cfa2605b8b3c38f74b58dfc742ea8fb98b12fb2f9c34c01dafbf444e045fa767ec87c5199dd7a801af965cda3d13fab77a20af45e2a88cba07eb6619c1f85b198506bc37d03c6bafad469c3d1bc1b5c9f87e4fe76de75adcce0967d26750e7b6635b5ecb4d8c7ab242edf25120c64469a9b47b83b66a18ea4fc6c91e7b7dfa672e7a379eb7ee946d3dc0a036f5f049ece5dfad7163f4e48de30ff2ccce37fa8c6a28a067915e214eabc96b1df78eeae2e37efaa8a19b2a7dc89beb8b4a883d9a78c8d6a47f07e3301d775a6ab3762f053cd1d1c7752a4a56c409f2529378ab031b719f3643ac60103b071533183dd20e60d998309ff57689fa8611c40e76ee203e37667de07395414ed8c63f5fdf39537a7ca717e23e06e4c5d97439d4abb1a7bee3f58fbf79c71eef1ac7a096f618ae53985ff18e7fc076c1ad7f41d74fbb92667aacc9dc9429bde2798de3527a7cb84985da584a076475a09a0471e1a228402f0cea37d4ded4d0890f2bf7e1b05e1d68defe7f5b1b357ecda527b8ace5e84adfbdb1aee85b9aa44aa3f7d8f75133821b03136b82e12c3c8d29ff99112fc5647dd076883788b9fe205f94a84951f7047861327e338ea4e7f4c66ae204953b8873aa7eb04eb791d2633d939eeed41f0d4043271c0c6f3426dc301267a8630e2cc40d8860eed2d85bcd90079d6bde51e1d81aeb140def6a93b6af05571feb98f1f587d25f7c6d52a9f1c0136f7ac30bb7d3f701c594b1df10c6a8e367e59577207c4f12295ec0f4b5e1aacf84f82df054bb0e86795493cf0de1d66fb861ee9cf04f10eb1ccd60531fa2e1ff704f3b2e3126eb5bcaaf0de77992ec3f94b7fd763f553a79125bb01a2e23f2a9ff6130f2ee0a7f9c05f4793e824d411a7ed8d3a924a614f44c1667a50b120e7ca8c1c5c3b2e3d39107dd913ce0d99a3cda8efa543bcbba5b594dae9d77898c83837273fa4dafb6bc3fe753df3a8bb4739b02b52322c24699ab33eaa22e4a83ce819e7471a965883f4ea4578a1b14a6c5941f835c733dc08f47a4a55e1f98a6fa4f6d7c1cdeeb95eac38272d0a75c4997b391ceba9ee0ef797f183fd84ba7d4dbeb6ce75290f4a9e7c60a3b252ec2395078da9a3cbacf749da1a1516d90fc5f3ef87847dccfb1bfe6afc8d76982cdfe833ce8f3ea17d61cbccf44698ceca7a087e44b1e5fd4d53ab625e15bccd5d33158a0de7ad78b2ced32427fa784bd506c1f36de8bd262bef741b17de1f74aac1f2491fbf7ce133b3d1f6a0976e9f039f6289b3f9eefa67617344adb64cd0c9dc6f375591d29a726ecbcaad3f882994b3c7eaa4d2e54cbb83fd789bc93555f786663fedeb84e467322760f33d478059fe6f8933059b40764a03bd37998115e3991ebf37fd4343e1e70beda99939e29d7e3f3728f389fd594e656acb8e68cc97900fc3fcc7f4e38feaec1bdf67254accb7fb447f3ef7bb4e4f02a1ee8d622fec56f3535d988aeb9baebf526f7bdde14e7bd8c5bc3c675951646d2df3f1b7f801543cc8171b1d9967a18e547a63f1907c0d731494b32ffad96e4fea95ec37244de6d8adb6df1eb89bc413c26399e92fbac386b99cadb7ed1feedb2511d90e624a33eb8105afbbe417372827a204143633b8af827e8fd493da33410ee2635919f1079c3ae5f2e7b4bc4258e8aade283239620a6fd1c9ff7e94af55b7c1f53eae186f68a70762bac29c4a09f535a3c0efea4456214b04fda62b41fdec50a9b5fbfd5b00c3b8e573bd7c123716ec1fbd657ca6fa7c0bd243288dbfa5c0fb38ba75d937c61e5be6f60efd5dc4f084711c8e74ddeef964e71593106af401e5ba714e6b1cddf071a7d2ec78b76f99c12a7e2893649285c4f0c0758d3f877fc97d91c351863a7d3ae68df25f5adc99f4f9427ba96d0d8d19e3e2e1bc6ba5ca0b4b8711995524fec5feb7f84a5e931c270c49acbc08bf042b1d207d672d64bdbfdef6b8e49fe78ecc8b7930bf6c5a36c74f1ff6bceb174c499e2e164bed369bf2eccd291f3d448bf0aec9962bee5266b97e209d237443ccce98b7ae1d15ce6c3e0b707fd768a6514268c6d74c5dd5f6e68cffb6ff10c1b2dc0efa42a0e25cc058b3913acb14c7a50b3738c605dc31a10f1a19c17c96538732bac350606ea497a7c6e0d551c57fdc0dce507e9dcb1c28e0913b4cdaa1de2077f5ca95671f3f97959499ea55d5441cf8758cb0e1215c7b859b2ef3c44b6aba3ca7323d281d1cf8c30474d9b67490c9296221eb80c4f322f0ce7a9536ef7e473d2945a805889d330372dc477eb43d4cc750b871d70af5c2fd7f1fdef002f75543e5f8d770c01472feb8c61b21fb2f793d2528a6f34a3706f58cfa27fb6efcafcf7619c324d1c689c2ec21fff03f1c689bc0dddac5aa8d889cfa54f22f052c2930f3a892be231b899ac93486d9b979c7a4706692a69678cf5dd426aced556a095a4ff38e9f4caff2b0f909d88671a8603e5efff6a92afbcd257b1b859343856e78009d1fa3c4aa94e1b81aed3afbb782ed5bc8f99f3dffd100ad20537add1b2c27a8f51a3ee09621d88834fff4d500fc9b838f988ea68552fc33c18fb5dc41792fb26f256de09d79d8f28ae88b7928bf2a0cfe7534f54ad5bf4dfc2f0350df1a513f4afb8d3bc3598f0b1c67c24cddbf71bcd5b03356fa7f1a6a6e7be827d7781f116ae27897fd3cfab3fe1582bcb4f4e8f7d3a2b49904b655ac3eef3478df7b8eaf4df558fa27d36b006afbd471c83ec5fcd926fbff97fd3bf12b79ac87f3a566dc5d8738aaa7af17dcffe5b1a5791d4d895ebfc6a9899b8c6c93a05e8abdd3c87efcf1dde15e19dac70ee51fdeb995ea7f45479f277a9d1d4e6b33c1c0c49ff886f83bee21cdbc8051503a9c1de8ec3f45d69a6c3e72eb3b8bed01557f49bce65dcaec976f1d0af5ab463e1a64f75db078cda9cdb51bc9235ac09fb04c6cba261f8ac791434377968e739aed63ffda0ea81cde48275b139d6643ff8a8a6bac21ce684f742c7e091f424a7637fa8f7dbadade86f223de5bc4094d7c058f5be7b97ac2e9d77d363bef46fbc4b4e2f4ce9c33ec9ab9f799744e9f449fefe27ef9223f5eaeecff1c4bba4091097ed1e82758ce353e0b9d93530f6541fbfc5451d488ff8c6a3fa4038bd549b5c10075097c0dfb6a79a07583dcd251f7bdc47b13edfc4438c3b14b726486213b85e6c17183aee7f2ec47873ec7326de0efb49078c0377d28f55736d5f78f3df9d0bafef0d39acc1d4b8d03af8675f958dc4a381af0aac4556407a63d83b4b8873b911189341ef2b40fda202f9868b0de6b8c9096a8189d467921cbe00356a6393fa6a8a5b8c7588d82b896b7733e7bb7a6cd9533eaeb0a7837eebe39e2e7bd4fe39737ee035028f240c07b8be2f4cf6247f276e3afab55ba120fff642e2333287eddb7859c689f392bc7d77544bf81b73bc7dde5f88e79dcee69d8e57ae1d9f78c7d45ba1c68fa31326f0ae9e7ce7bbc2767c5c7e29cff04e6ff4e96f3abccaca29e63171118cbf37cfe21dde879799b1e24ed07e18680aaf330a920bc56f0cf57dde9ee8e4b9c04974dfcb70f08af1a88d1a2337782a069c4a783e9fd43788239fb8dd537f6d0167d0e80fb386b8ec95a9fa044a63ae8d73819f0df50bff2bd8687dccef5637efa7c71c9fea7e50cbd9c8f7bb0bd6e530dfeca556782ebcd7d9d8a3baafd292106641637975c78df80db741f60593feb0ac848e1c8cafa0daf5ca0ae261fe7ea903e11c82b58b1af24793347685a151dcea4dd5bc280e548fc2fed17dce7fa39f97afbb679d37f8ffd14a7d5ed81cfd8f5663bf49a7b7315d2cdc69b2d12fa87946dcb22ff414199795c41d8e887315751e0eeddcb7fcb1e7617ff5b0ac02e96f5656de29d3e4ff4b1cd36ffb9b89d2c55e65d24b0d78eadd381b904f938c1992cd916a607f1a93764e75dc79dda71e96aab13ed7603c07db98ead47136c235f87e9f038fededea80c7bc5dc3942ea4d89c3aed830d5d5ba70b29d63ffbc4399a368cc6ea418e55e1da8b4d455abe3cb3f9e358b617ef27d222888ad1e9f551b72b6b48d374602bbd18f0efdb97b8be01a6289e2cb7fb807425db31bb10ee3877bc23f91f1297b0ab7bc9757e4c1a4fb933b9128645cc7f5e23d0114fb2107543dbbc3ce2a4e5755e3a12f76e73a3a723aead7deed433e3c578e5c21ab01f767d6e76620e6a92ccad1e276f28c9afa49a2c79aefc52dce02eff01fdaf5c61ac2a23006de76db0f5aea8652f7b613c59a16f69d55363b471774ac3f1663d86dcf1c7599d8f3c8dd6a84d685a4e41da0cb1dbeb7cad6fd667a8197c29fdd490f085938b903d35a6f131f1d5dcb85cc76f4fc625d4091aaad3560a0bedc70e702a92da8463b0234f2e54c389cbed8a6abb72afcd2a4f5fe2b5c44949bcd635692c6663f2e9267d9212b941e5eea127419c3689d542af8f3ebfd53911f5cb92e6e1cd67af586fe60db3714f9cc375601f40d44f8ff9da803f65945c109bc48d25d6c91666fcd1795eddf8bf256cb7a49eb81c07559f8fce67c25292c675a07b3d157b84a713e97bf80de97b741a386d8e441a365932f00803e7639de9562ba334310f8bdd0b8df144c5b1ecacc62c6852b7eb4fb8b42de4d01e7b45fd3faad1df53790fd483dfdaf3157306df4d62f9acda982adde8f8de415387eb7b9c67ba9680aed1167b5584f7f2a626f935c58a9b5bcc19ee852733af7a90cb009e12f318c740fef94bb0961c00a817ad538c6d5880f3517a51c29abe3050a3649c62ce93c5106fa4f3f4a4f08a861e40efc83907db95fafb32d183a9bd82daabb9577ff747eddf2537c108d66ef7f74dfb770bb455d74cfd9db5df27af8a75fcfcbc10bf34c49d5eae39dd8fd1e630a0f5aaf0e8d712f8f3635f7a5ccbe7cd21f7775023b93c41dfe6d8c073df5bc8953ca196de284874aae1474c6a7dc9e77ff15dc42c9b93b3d24f8dac80f898c809b309db28e7a8911ef3fa76afe87068cb396983fd30735a2fd1cb9d1b807de395db288dbfeebade96dbf20daefb32c6fe0f6a2e404f876993430ef189859af384f79d87ef97b720b63caa99b12826ee27e8726dfa5a087b48043144bc284cbad6c14beedc71c4db7c3c406ca9c89a9838e273c481f63b1f88beeae1e6aa77ed69a5463976a562175ffa1103d68ab4ef20266016a3d8f89ba783e4a70e7d3325cda99d4f79d50d8eb698d7ae8aebe5f873fbc1ba6a00a3e2f7f9a8a4f8255dda2be26d751877d3edab5ce4fdacb5fb1173bc73bb560be1ba4be40e2e500f351efd424f3e1a93554fe5511d77157ab0b2970a7d24f2ec11f38afa6ede6ca48f715e67cc209f54edd06904979f1ce6b61dafd956613936e4835f1ff20a3c66e3758cfa6ec7e6153dc843d33a9007c76c781aa34eed3043ec45d88803e6a7537f4e9a2ea7af1c75fff2ca3b10ae2cd53c35f645a27f8aa1e2067c2aec591413f760cc1447a5ba64c8e5222f047fb4c2de44a517385e78c3156fc14fe8f34217a46b20b0b69d0cc8d3c5c37cf2ccef345aaaaf8cf838894e39dd1cde477f988f7940f99fe4148fbafd09f26e7e21be4a38b73e705d7f2d6bd24c9dd0b8f64aa37d7fb2d77ea6738a26e83e4f74f00730f6c3d4242d817298abb9e39eda674adc8c6ceccea67fd99b57d76ef126ddfddd3c8ac593075dd9fa541037becd5d34773c1358db8e6eeec174479823417f99728d88e9182f45ac21cfc9aa978b02b89786b723ee4ed454d42ff752a38f633ede745e4c77cfe4ebf699b0c8c298637026df3e6e0cc8b7ef2db719e9f291e6ad159a1e7d3e2e12d2c93f7dfa30e7ed6525ee340b5f1b46ba80fb02b1603170d5cec1e6427e27b00e69ab4e2b0f6a584e1195a48774ce2a89ad1987eb05eae9a7d1725b532c67b6cf67a1b92ef209afc1ba463f9834f6e7ea7b7afbbd54b82ef02baa06b441d26db04d4fcfb8a29960ed1a6843bd6460f1c6752857909a63c363d3710a2f9fb43fe7463f509ea6ef03d2e99a669bbd8fcf759f5567cc817f903f97f76aa2d6695c6f9516bcb1ff88c8ef20a1df1fbf7cd2530b4fa895ea37fc298f72d1e7efff77af3116ffe51aebaddaeb0c553f9f4ed5d82b0eea1aba6bf4d226267d86bdba07b847d0ffb93e5ca37c8ebcd305ff3f788d32ceebbc44a5afd9ffde3557078ab992446990fcf3dfcbfdf0d77defac5ddbbbfba803c1266c5d8ffe6a4d9b9a7bd294fb50e3362908b331cf08d3f27d5cca382635e9f37ffc7b8925072f989bf721eedec71edec7ffd638ffdf7c1fec9b47edfff1f7e105426b90b734edae5550ad63dae5362baab78fa9d7d47965b9e7f04a9a2927da2f8f9926352f6d5f63a4e176c8302f8f8ccb01f2fa7841cffb31a7e974e2e357aa8914499f30b81e621c9c6fd733e72fa8e13525ad7c752cec8700f622eeaea7a949477b7cc70f8d56f49cdf665217ab24af2cc5159d91eeb6f8d1c7b161911e25620915861cf815e58e6a523ed403c6f168829a3ca721f604bf28d72937346e6e74629ee537522ff136bf71b7c176a7f24bc9b7853c4a0f362b9a53113cc7bf38b671a1f94ac7ae69ef0f35d7f5efe2f35b5e32f0214bc77b47efa37e3844af37babf4e2f49571eb3546317e52eaf48137a87984e7e887ec72b8f7caacd78ead993562c6a3b65a33e61509103acc6df3488dd239fc77dd41067a533213dc6e8aeae7df72ed28f90f4c749b307f1839998982a27bdd3e3207c96ea157d628d470fde21d7cb2befc24073cef2ab007811491f71aafe25b8fe50ef5662b115463bfd7ca2b762d075a49ab7034c1ddbf1e19dbe24f9b01f82756d3ee373e65823517d31d3730a2df8a30656979f4fee6a64bffd77b2975a3361548e58758679d1ae6184fbc771e3277f775eacfeddbc00fec69f8fddc4eedf9e17f3f8430c251e65ed036e7abcece6851ea2ee4bae34773bfc774938986642be9de36e1c97d00b34fa0e71ee6ecf856b9dd243a779d0cd31f28c5b7df2e1eddcd15fd5e79acb0b27d69758078a22f6faa0db77513ce11bcd4726794412cf4dfdc813e5c4d978f58cf32f31fa34bef83cb5550f1fdeff7bd9a00f4278b2e96f4ac3d038ab3a4e16b9c14d9fe0c99c386dbbfa7b1fb8a0d26fef661f4f06e4effbb17cc6a3961874a6b814cb8a35fc2f74db988a03c4ddf88fef6bc631e13da17e7b347994faa4199c3c6a06cfd303ac411d07bed8f4f13e89b3c75ea1062cf76783ea467c2e7aa0fdc4c4cca6cf4f57da4ff9bc3a44a1ac4dd962b4fa0c15ce6875e71d99d8ca7f2b62eb87cfd6d62e24ae5683580e119b85461acf8b1e798c94aa1f18ef8bea07609d9240cf2ad89317a6471c75b7947d57f0302d9c1ed6e753c2bcbaa571e9eac29bde01f7ec75f76c62bd7d0e509b28db670debd7465d433f777f1e7dc7b302733ff6e7a433e2ea25cee1147119cc843a04af5ce2425b0b63afdff82923fe8e0fd9988e137f96a4fb650ad4eb2a74e5a32ab5a541fbcd4fe89ac439279d60f4abcfc4a4211c298fbc23725d7ab0bed7966fa8fb91fe0231d414a7c0b394f352577a0f5bef4c98f8626ecd002fed374145ebb4f752561af0eca48f87f406b3a8ee1b423fe554763ac937df27ff6da66acced3ab974eef550733b556b13bfe5d845a4db2e0cf90c34f9bebf707c7f0686d628cf249be3383be9edd800ecd6ea0bf44fd92ed86806ea9bf16c1e431fd7483fe8dd45c6ae8f715a94abcf57c37cacfae5daab76fce373609ab79d916fa0191c42e41a4aef73ed4e17b18d0b3f70ee467fe3fe0f340616e69eeefff89bfbefe646b2a7fbd7fe4fdebff9abe9f8817aa7992b5c37d9ec4d8c91a0476aac86fef0447deb2343ffc2dfcce37d1eff84b5e63a18661b5d617bdbbf27aa4fcf76c136a575ec2db3eb29ded79ec6f3a271d5faa2aef13a18965bf55c3e66a013650943a7f95fdfcc41794ed9ffafd88efa8e3cb28eb467e37eb60bd6ddb9fcf65e64ac1e439fc9e80f11df694573a9578e3eae12737520cd946c78225f78aab16fa57736f89f5c73a1a9f58f348081c3956e4b07f46fd3c8d52036601b7fcb1dc09a554d01da5476b2e657d4139e331371adfaaf5efb790af1b3fc6d007e31f5d44ca55e6198f487a5acfd430c54a85e3fe53efa10f592a897a14b3e97e63ae136259db218f3bcf9ab717a050d89815942add35e3a783ded1a4a1a65b1736e8f839f2b0d32d67daeb59fcb5a51130f09efb41c2b9d1ec9998cb51b7da4b87e59aa58af7e41edac73b0b5a81f79e3879a1e1103a4078de8412dd8b9045bd2ad77ae787dd6ccf1ce3e79169a7e8ff0ad9936b9c5e8bd80c70d3bf2add7efb4f12cdae7f63ef4926c613b34c7de4ab54fab7dd08e47f545c5685bea099c0e85e8c1f330949fe4da4f74c5bdf3c5193df8d850f27e50ff3f1fa9eff452c4fa2751bd252e5f119533e475900f583a8b0857165f32d4604e35ef4a5cc02e6671a7b351cd641c66a693e518fc2c826460fbd10af29a793a549ec1c9e923923a266d3c70f9e8f2c83dc3deaee9235e93478b4b24b50898c1e735e9403d8d4f02835f67e85f928b49c3d0d78737138383b7ae5d3a9383af29cdba46cdfbb96346e4f3a3c97cd396da6318976462a23ffbaeef4c60dd0a7f1087cfcd0dc591b9a28e82c6ed15f6bef96b365e51fc02f59c24be941a703833e11dbbb5687589aee8c1a84d7a80b128773c5e005ed4b8d0987667edfb452ee694debb690dbb384ff458d53b96a28dab177d86ba243c923557c46a4ff48230dc73b78def00cfb0bd8bf5d07fa9009f39a8275e83ed42ddff93ef7881288ddbefc8eb857de5ab040dd9f162a3d3deb20f36ddbdbdb6ebbbccd59916ac8516218738dfc68eda87e39f122fca0defb804cf48bbf3132c08dbeaa6461ffacada7e4739214fca4f41ebb6e414a68f9fb5efd055fdee76ef40dd971830819bb0ab1b8c03515f8375791277e764d2b3aa3bae7e456d3537abbc4ff5dc93fa4af8f25cf33ebabf9faee0f355f782cd85eae46e96502d96bd669bfef73981588ad0b486d9d623ced2a1bd8e1235f7848c9d7d33201f2c536143dc5ce6f703a5d39457de02f7fa9e1aa789d4c95e414c505a5c7ab543cf7b89fa0a22fa4578cff12caac1cb575f5d324d79a89c38713c13dd05aeecc228b442ee45af9a772ce39fa097bc29b11fe75c291e5e44ecca492f1cd78068ced5310ba33da66e057a7028f09c2970183f82ed4e7974fb635563be1450a7b5c54d7fb83456e485d4cba0cee846e3f842be3cb067ffece7e8d78fda76765405145bdb526b6eaefa29e742790db9d8b762c18d57b8f4be825ef46a47f88c52618b98a1c6d45c8e55d94bc98477a5e7958ca407f95872c637fb036983cce4d890783cf54ca2eba0e1188fce4603ca1fbf72f25b806b84da851d933ec6ae748adbcf65dd751911eeede6f7ea1e5ca6eee1f6f7f0f93810f199375c43fe7413bcff6800fbef9b411313c6dccde6dedb4dad761c88f21c6cf477d433224fa83a078cb79755de5ef9c86e790fe3a98f601be3ffbbabe53a468fc7d321875a8e9d3b9ebe7448c332d5115b374d1be4c01917a5fd9639bf30763f13dfc72dae0306f5adf81db1c327d2d411c98af0a0118bffd28fcfcec8b7225a116f9add70849a570df5348dcbb01c3ef97be4617d9b7d06d71f8acf9f36abb76f98f03b0d2ec49c2a7fa578dbae33a58ccf985d6e399dabd3d234f62f7fedd3ef5f826d4a5cf536477f53f502a83b8f8b0a70eda2c17c2a190cb3ad4bf8a33ed65dce4ad32e1c90ae2bd55a5e1871dbc17fc74d37375cd0769d833a951e6ca5779a276320ca6dc4a929aa1e69697f3ead6dbccb75f06ffd6e99e0ef62bf0947941b0ce0de748bf86b707fba7764ca07bbafaed96f63a0760fd57a1746da6849774f90abc456e2f4b7146b625dadafc65963a95e79b726d57d1fb82276324ec963fdfbda27e76bdcc05c88df097322e69646b8b6d918311346fad95de3937b48f0dca6352ced98fcbd770569a576f514f0bd895d2358abe7c98bc642cf0fd80f0867a4ea5f777f6b73190e5e04f1c22ca0666af3ade8f4c8c734b6fcbbdffae398c6307a61af865993cee47e16f1e1d464e099144b7caa27c753e560af9293061b2f23abd309b8393e332eb3dbe37373352c2467bc7dcfbfa4f6f6ff8fba37eb6e5469b600ff128354abf45808908445ca0c9920de1068591668b0256be0d7f722232241b6ab4e9def7e7dbbefd3a9633126999131ecd83bfcac4b999ca947adf75d5f684f9bb3143972dbf878421cc7d6096ac02e5b27aa5ea8625ae438b4c32dbb7ced41137bd24113e9526163ca18715542dc4bd0849d9615bbe0bfed70eb76d79adc24ef76c0f53de1a6b06f385c006fc85304fa0876642beca99bcbdab3d20b9e4abf1239c796723f2f77c069eadc3affe4dcce13a5e30c7df25d4d208c373dff0530620baa6b703e688fc3fad354ee15dbfaa3f3bb87980f707facab13f2fc22d6cdd05b9f047b0567c38262e18a692aafdbdd7b33d70bec011e299bfc4fb9d5bc8dfd646e50ea5d80eddb138e4f1f503ea61fab15a6b7003bcfcdce1faddb31de43cf2bfb513a847fe37a80f580efd7d2c3df20f76d2ea986e8958db0bf9be7f99478b7218f9afc2ea793b8bddc4c6703bec9e3d8a5230ebd6f9e530d2868e3ed49a9a14e6ead708ec6f2bd7d4fea3383bf0dc7e1187507f688e94a9c8b8a4713e9d7d701e77ab07595de463921aeb66ebe2cd39736ee883bece1d1ce8dd104bea76e901e63d8e93072fc86f372421abd65b3029d7e9b6feb23fa66cfeb2dd508d4f8d96272d3319f11ae550d81dfdbdf33eeba623242ec398ec9ee8a3aebaed2f7f4314f18de4717c51925f705d05e57bf37f505eb1546b03fa2cfa6aea317fcf0e53aebc9066bf7e7ee77b80e93f8b65dd9104e7b3de9e506f55f908f82fcd5474039be871844e2519f95569241fceed58d343b45fc42fee0bc34860bf0c3fc4b5e3f5c0338bcf616f6aff24b49fd965fd7aabdaebc1fc4811f99e11bf9a53dbb3068e70e9739ae99e993be6aea5fe37fb5aec42130ae8ac780510e41b887827a261ecf358873386cca3bdafa67a638248b6151bd487c73e1f897ae079d5f3bae8d3eced4d5299662a687b6fba75110a76453b7f708a53d261f2cc57eeca41e2fd20df668e967df59421eed4e58ebd96dc12ba8dd3961c3708f5bf1d985e2c738d1ae21da2fe8557006c1d61946d03374089311a7f9f21d4f4469126fdc63bd2f7bacf761af4c6d632d77b2563e66cfa77d18e772b0a075fce771b67387edf3ea0ff1ae11be97982393b13fd6795157dda458b7ff8dfc54909d18e61a8eab21d7b5bc761783f57fdf18caa74b5d8a43cd02b054168f33d21ac518b1b519239df80193f4d8c5f2a9473c3083de5c40dbe03e97a43d721f4d4aaa8508f7e6132749423987a316761ab06823cf27466bd3aca8cfadfffba1a4fc88a962f06e7e0ac7f8fd3361ae9834fe61feca3acb62da7d3b15c79bdc04acb97f095f7faa7c12b35d5f6122f6cc04fb2dde1e737343d55312cb7a03c5d2dc203ebb7c2bf09ee591817ea89dec2aa5c9bbda8dfe77f2b749392e140797b8b57187fc4e6939565c6f8dba2ee5b3add02c75d0b4f46f912d7d5399a72d26eab9efad1d2cb04faf34b1afcef4a8e74de68e96b297adb4928a6a58f59d7cde9e8d8f93f1977d42e2e8e53e61cab8beb54135ebeadcb7365625bc5fd1e5c2baf38ce147e7570d31e7c86fe10ef3205f9f25841a66775e917acf0a1bb9f7549eee218fa6c99a13ed4559a1be6d6faf33bfdbe3ca0bbdff6a5f636e9f77b9f2d4bdf7f41aee5deeb03b2f57df43c89e1d99338dddc98ab8f352efd2f96023e0476a639ceebcdf8d637f9f96fc01ffb04fc719e57a817fdc2ab8eaabe88f097c1fe0d293f93ac47a7ac4f7dfda23fade6a5e7d3f6f74f4452ae4649c964e7841bd30afcb2788e10a38bdac5cf32ea475577663d0e1154c76a73a273354fed56c7d2e991789ad71beb7a87ed3ebf91bbd7dc9b11ab76939459c542286d4a79920977e065aa692bb3b9cd468e3d9a45b6342f2bb90961a6b4a85ffeaf0539b63043c6c71bedb901d3c27f2bae21e4e6ed413ee96b178eeb03b95d9f55b2a3cdb20e707c8f11bc7038dd34abc60ec179e4a476933df818b8b3dadb61ead4919cfd2f32ed22e9ff3e979e3767f0af6aea1f846f61bb4b5ec1e6c3dd2b3fbde1ec8f9581bf8ede7c8692675173ee7bbe59c87fdac5179c29dda2f7a734aad29d45ddb4c70dcb2b55a9bc254dff0f3ba6aef910ae451096e3076420ba58f2eacd0a9dfc8af13698d7801f73dd88de85934f52cff14dba5751b37495d50dff14e05f14b98e5470c38be786e1c3fdb203bafb28ff6f923d044a5dee80cf3adf54a6a829556980cdd3ccde07c2dbb76cfe5ebbdda92c914cf44d5c3a6d5d8cfaf1f72c4882689be449d3c67350d99da8b7a9c202cfe6e6e67ed5c9903bef4f3dc2e3ffa737b157bc00dad1d3ffc8aeca7b8600cdc3eef50f9d55f9e57977df885d417849efff5946a6eded8a7b8f17bdb2dfb87a314cfe5f5a19b533fdb3522f7ee555a423d3e75a9cedb9fdb12bb8efbf98efcda4073bd3970c24c02c49b7f338f50439b297cd1f7b110d574ca1fb80e4ec1deeaf297cadf807ef6243d9854dbeb7c117e452d8dcdbcf3192ee4bf88d4230c838c47cb4a1839f611c6e68b81986f378f2dd4e92f75190b6bae853d6876147b1fc4cf994fd97731c6a0fd9e8b2ec6b0781c229735fb08a39f03d26aeee9ee1c23c2326e5dc5c1f405e79c6e2ec41db98aad09f1d32a2e82b8f6204ed21eb0ea654adcf2fde7bce9989f52cf19470fda497a4175ad7e2c449859150b519f3b62e75371555a1bbd6724bd2df58cc0c56eafaa9f9d667b423a12fe30536bba52b56f9cbf5d5efd5ffd76fe2f9f575b61cca6fe44579c7c918cb96637c57bf4058fcbcd82ff4d7cf97763ba703cc941f3efbefbd7f9f977df9dfa9cd53386d89f11b0daa11cb1d2562a261b85a5543e3dc6beeb2de9a7fcabdfe6ffe5f3e6019731983c7f351e116eee98699ac2b4acedcdd7d824b69033b9c0fed4f03fb023fc425a847e457d82f53e06dfcbce5e7fbe93becadfda01daabfea51d3823fefcdfcd07ea65f8977396fcf8af7660a0ecc0b79c20497dc13aaeb7482917f24f3dcbe565d1f120f59e1d7b2676e585f8ae1631535c81bdbc9857ec8fa4a73f945c2af259b38fc523aff373c0cb043108ef9443cad28df2c1cad492b5ce50ea50499b63601d88f66199b75d513c91100f83873c2ae29ebb880733aa77e4ec602be3089c4e0d6981113fa9ae7d773c1c33bae4d500354e6717e577fceb1c21bb0666705535acde3c95b188698d5764071e35fb4cc0467986d24bebe98c515d6ead74947aba47f07c75063555ead14903e274eeb023c81fca9b30d9dcbb9a12e91bf5df837a1f40df76aecd9aeeb9a48603f8ac8ee8fac0a89fa29dab9ff9a18ca17cee708b7a7729e6a4a0e7a28d01b16ecc66dfe49f2f2a9f2f9f8db8625dafdc6f1cc53b2dfdf87058629f54ce67c8c5ee530f03f1be7f14da1ffd6f8a776d9f7bd4332f7ce39bd8f37b8c6d177b1a379b780845ea357ff6f7a47f0ab9ef1df642c465b75efea10e05f5ec721c70710a4cea07c4be94b41c9753ea8f3feb25712ba02656518503f5b77f5d6fe27ab0ab9730feec2350f8618fb809fe5d0d2afe8cf565ad8db0a94f832747c220ce1f9ec57cd12827d8d5b49ddba77e80add418a4de107ce738663036fa7258a87190fa7cd2b7c9855c5b76f6c041f0725171430fb35c62bc1919c7eb3798e506f12eaa7f09aeb5792bdc2fd7daf47a1da086a4795694649b3fe574f26ff24832bfe182ee0eedad19d67f386106704d7c39afb51ff791fdc77c1f60a2de4807f2fb781eb948bec6f031f42c215f36fa0deab9f4dfe4c5f0b908a7fffd3d65aecf2b2baf8bf100a3256de66a7296bdbe61e269544f0f939a7855ec6877fc948f1c61cfb5fc8646d0ffddb4886f1eb5859916ec6e6a0eb0adebe39c94b9996505fb7cb8edb09180b3442cd53ebce03c007edffb685c52ae3c3a9f116766617edc2e9dd9a5c3c7fe2e0ff9b94677b4571d66f16ff28a80d532ba7dfce1bdda35d27b9fde983501d8b9f67bf570017ddc67fb3c5ef43775c56fe6e2d71ae5ae7bc635e261573b7dbcbcdf58908a73b0cb86a4d7144d8e84159f16e646f9664273cf917e3845dcb944156a65c5e15bd8d3fb0fc5d1422d0553f564a61e6157f4afd8abe2fa846b34d6a81659bf01eed6a73caa573435f1a00f33eccfe6d40ff17ade53cc9c4f1013849c8b7935ebd512a556591a7096ac6dc22bba122f9f70772af62f4acbecc9d03dacd7373ee241a2d8ba295e3a9b78517e627fea8d6aefde5af2b0ca6b1b548b03ec8df841f574d2265b104fd1a73e779ffaeef9cfcbba5a52ff03d4938097d72e2a867d01ee7e5555d02bd9f07b44d798ba54dfd2161d874cfbdb93dfa0e6b07087cb3f3cf7e3f182fcf1695911a7977b6cefbd94e357bf47c8c1c42aec418c1577e2b75842d5abc3c91f718739f4d0d9ab8a2306d3273eac7091941e3d07e839cdded57c482456d355be98711cafd28cb809748ce59a607fb8131e0ce659bbc7ff248c08c617a515e859175fc0dcc93a3f1eb187b1afc5affdfd97f8fe4f778a01e2fbe807f686c6147724300f18f0f2621fac565f56804973022eb52b71fc6bec650d81375b58773ccee6cd6c407c5a73f33851daa5dc75d12ef82b1df72179ad520b7623eab7457eaedb15af87c730d2e2f432833830ce3fd695f6fb75209033c1f607a88d3f08f68cee3367a64718bae11cf1483c5d0e3b5de1f6b76ba3e2a63b629b4c7146edd38ca5c4bbf4f35a20a74212bb57e26258cbdfa5f6fa8fc2210e078b7e4f31febca9dfccfadacd97d20acc6cc252d44311beb1c6e3b2f4e512a14e4629f97b641c35289d8a38300f98e79de7f1c67de4e8a67eead120c7fc7e646e1a1cbf7895106f9a7a279b71e2b424feb5d3b0c4fe086ee867b433cffe14c74314782fe237fb79fbf3bd46c3debd08f3ecffe95e6b1a7bd0c57517c85bcea7167e63366146491acaef2b8ef6c8647bca63a04ef73dd8871f6467336388767674cb08f30dfc9bd3b2f2b495e2c3f4ee1cf1818b847adceb46bd27f644c668ebe334788779585e03e3768d141fe850728444221be6da0be446a3b3ea572f28ae6b084b5e76dc5acd2faa91a2ddf04db53f919d11f5b5444c05a79cedde35700c36e5948e03aee2d2f1ce747c06ef6d959af7417f8ba10fc75d70ff6ff731ef9ff6b19efd453e2ac09f167b0bedbf732fa8c6992e4dfe8553a918125f4e9f732657fa3e3dbe1ce050817d6b8af78a46ce6afadfba57f77dfabf83ad178730e9bebdbf6ffd1089f13408d3d3e7c4012e17f1890f48e9567dfb4c611322470cbf8493ffdabd7afe51ef77fe02fa538e3815c45d93941fc485cbe24f5cb88f1c4b5ab0f7beac83508775c02ae9e7daffd93a601fa8f3fa7f7e1d04667f1d7cef57fd616e4a6eb1c0ecc6b9b36f3f75e5477e9907a5d42befb0d09dad2bb765f08735d5e7937ba3dfbfbe97fc9df0e1ee7f6fedfd799d07f7fe3aff7f672cffe21bfe17fd53c9178bbc31f58de666925a34af43ca4daa7590b89a5a07e47fbdfebdafd9cdebde9edaf85fc6af9c0c6e01f08136abad3b2e34ffbbf17c0ba77f3937d3ecc3e75e2eaf9d0c6ec19ed95f6c16f02eddff6c8bfe3c6fd7ed736f99cc83aedbfbd4d6ffec7abbee7afee4df5ccfb9b5e326758263ab7df726f8727dc955ebfcad7df00dfa26cefdbff24dbedd371cbdbdb62f7bfe1da3fd37ff9f5dcfec5d6ff0f97a9ff78d8c430fc37fb4964cef7fb89698166c2d9dfcdb628bfd5edd1cb1977b9f745d9e4bfbebefc994d3ef71b127ad07b5e7dacb3defce9f7efd3d998a63483a51bb2b6a14b966b0753ec5984c0bedd0202d8c9c345f52779cdbe584f822163669ed8a77d23f28b8f7c6b4a5ec29986bde9171d256f2f6dd31b30bab964a8b91ae13a699e39bd6c3de28b9997b7b23d5d3c2be0dea73ec4f887f00f98205ab712fb1fd545dbb5b0b667da06f486300b50a7f186c5d550f5ab5f7252ea42d0bf1da67ea9124cee9183976b9a1783d76307f8e2e4b465fefdf5874ff671a1f0e1a79f65c9be92ba505f753479e7a2b07bd073807f351594275428a9ba80762b445fe3bf7dbf7efeecf082b03b8ee3fbd3fce773e523da239fa5b1c73e831e92409863a57cc086376f926961ae6c46dd08d199df31634dd39fff80dd433601e1ae71e3738ea6af11bd5295123611bf072c126a83fc2471fb9c03a63e30dc94fa45eb5759acdf1b86b779cf5e538e404871ab236246e10f90cf1d63322d287df7b47e2fa5a4beee25269d7b4f1e402f1c164ab5975f8ac63e19536c6f09cf27ed953bfc60b5a8bc1009f719e9ba0dd1c34b5edabf7a907edbd22c081e1f9a73bd688ad287dc1f3d929d8f381baf77643dc7106e514fc698d7fab0dbce6b47066465123ef1ad7d4ba276dad42696be9d44f192badf229f275a21d8e8c9b7cdfa8aafe3a571af7ec479e32c0e5ead99bba6f5237804776c34534c2dc21f60009765df37e6ce04ec3712f6ff76d8dadbe979adfff5671c0751cc323f29056ef25d62d300f60c72a0f62759a3f905bbfadb1961f9921fd26ef1f8af0c42abf9f97fdc33c117f334fa69fe709d9a7f99dc6461c29ff11dd47349fbdb59a8be7bdd2e746fb15191b938e8379238f3be27176e184940fbacc91875c2435e563e6f9bea4b96aa87561940d62f29e39f1e84ecb87390dc7d5781cbf61fd70914b0d7389b99c7ef1590dfd843d1c5d1e683724feefbeed7a5f51bf3ac481735ff33e7af3aab5319b80d784a7b8c9e309571b67d3046bd8683332f82ffb50fd63263e27afee74ddd80cdaf91cc2fc385b81c452cae7511a9571c3f6a813f29c4fd9831e938f9c7bdc6477acc73fe75b8ce1853fc8c946a6d50d7ef72f9ff47a94863aec210ef10c3ffb5b17f14482e68ae1abbedb5f0d700a15a4551afa31234cc5d1475de86cdce7877e215e45c0cbd80c729a82236fe0af61cf664cb13edbda2a373709eff4d3f0b9bc767b1d59e7c16313c0ed202e45cbde3a0e58594b6cbf7dd47197fc443cc230234c92ef845698dcc68b31f1aa7e79df58e2ac01b3f23c3737b0ae74eb88fed5735e5ddb77f496c4c32cb1b5f2bd7f041a60de57dc7b5fa39f1a6912ef322f017ff514e0fe43368eb4db5183f255ad5f9883f727ed0afab68946da1eacdca19e73538efd0971445568ff7f0d62c4c2ad242711e5e0480be213c75ba2535f335c17eab93a705fb04360324d69544d43e28b38938e581c973fc23bdcafb405e4e18c9bad7849a1775ea3bd137476494f04fa334bc77b5b2366284e4b5362c0a3f338d4255ed61249807acb853c6689391ba6f90fbac0b8aeb0fed4ee4567c43d75da0031f4b2b878acd51ec3b4fa15b93c58a63d72f032a94f2efa7df0c82d5a69396260b8b179c39a649cd7b2f7d95a4a4c437d85b59359794cfdf4a30f067a36164f438c61d86e9d1c31f73cbacadfa137867ee7a84fdcdd93b49f8cf210e0f8b77322342d7b150bec3fd58fc16b57bf863538d360adb093c26718a41573bae415e1f3ce587f1509ec55e133e51057a937455e0d4b62e2a42ec8f2ee53af7cf4d3507cb7a958ccedb03d76974f86a44f38cc554d96d3dc78066c90dce78eb2770cf68333eee1d3d504e33b7e1a3c218e82ab58f7f883f65a669ca9e6a7339a57d08702b594643856f7411f38343da5039a47c4c38a7c064e489ab757ea298bcd5f147f86eb38046c57e2debffbddb7f1f7c6751631e9c6898e0bafe359b3b3bd77c5fd2c049fe180baf3dea1405d9895e3916e6f589a25f400eacb5b81fd45bca9dfc3f1a7df8de3d8373dac2171b31bffd2845e4e76eafa2e3766d43f1ff5d6a11e5d5e22d5c7c6703feb71b58bfae4239e2dd969d4cb98adb6509b0ec5f14e3df75fc7b096cf49b5bbd56e441a6a8352eb348508cbe09b4706dc119eeda76a7d5d097bc3e35f1a6050d85b80bd13496a5d140e7e8a1ac0c2b9b6f3047a0dcb1f8043ad6e01e0b69c20b6a82f22ccedcdf433eeee49c5c180b70bdbb58ecf16087e476d98299f94882565333fa5dffdc113d4996d31fef98efde5e289f85bf5ecbaa6ef6a480d8269c0cb257168fb387f97317f472ce7271b240641b324bee8149eabc79d690cc74ff26ff2f90fbea3f5b932edc2f1f63ee24a8539bbc588b92d90738cec1097754cf616dccfb40ed362eb32ac55dc90eb310e943f7c967ad2ea3de81ea4d9d770238ad0ae496e660bb18cf507c36338fabf9f7dfc40ea0078ea9a3c3de6dfe1e2ca6de63fe48deea3711e13278d73e3e34e037d297103c447e4912ec080e984751d19f1abec6d70cb0ab9c5634658c4103843ce5628328a79ee526358d6e289c3a7a4b8522bb156c1e35af1d413cfbfbf1736e68cedc2506b445b6988a3eeebb90267e4dbba7ac1e73c5fa9b7bf108449432d6bcd73be5c0be39480b000103359c8b33deeddffae3493a3dfbc0f681ffce67d46123727b13e9cf8b07f127f0efb8e27424cf463d8b745c666cc4ce2d4f98e6fccf58ac68535af6fae85c2349684ef40ee06f98e970230b7ee12786d2c6edca88fb9c7dd763c2abec7d4bb4488652c1aec731695592206226c321de743e61bb8fe9bd2f6099ff9ff976fd8ce49d3d7710fc8604c65dec2a0774962f68676d20c4c8bf23a6199ba926b35d0335d714dc76e8f3b0af82957954f98bd70c135b0bdc946c56d701dd0512f890f58b887b5a351ff402f862f0f6803a87e7e0b768a7f3f5c6d2dd6fa46913860cc28f9f3a7412a1c313d222e5efff0b1073046df2fdfd5c8e96f51cc26e31e192b1b07dabbe27585f983e6c520bc60ae7977d25310327755dcc2c94f8a81d9ca26cd2a0d35946f47184fa67871f39830fba337b5a79947d2981e30e28c4dcee3628bbeb9e0a78cbb537a9728298813af87a363b2c784723a4f14abc6849967675a3b0a1f6a5ac35ede19f64fe9b3cabc03ac05e16a92d74173ed98e223b717174a3e35b977ea4c74fdb0f994fded7da1f61e7d77edf083b8f07dbb44ae20771fec86840d8c57c4fbf54dbee82b4650a83c1cf20e617cf153da05f8de33b3a70d782dc5dfe6c61ef0682ed3f8831e51ac62eaf36fee1bb4f7c53e3ae03ffcdb9c5c986694076ce749ef5efd771c69ab8a743696fd77d4feddbd3c75aff25177692871bf80377d2ea5b604ce69fd176006e26c5ceec5bf9817dcece605fb765e3c352569c10ffefe3d742b8a468e6f5bd8677486bd57bba10637daa9447c2c84f4213395b33134d276a9d736722d9a21f9cbc47bac789af976f3a5f701b9008232b516a44d083e88d4cc855e9c38c3b85c3742a9cde5df82add2cac0e3ebc11f8faf2bb4253a3ddfc077b1869f6886d2a8018e6d7b5531ecbf269dee5a72587f3ebea8800b2c77fc41f08adadc989f62edbe00fee19951ce39cda63017858a4f4bc5632a7b08ed0c73a86dac9e61bf4f4936e481b3c0bdc6afc45fed1d18f01359dc38a6c0f121b1906eeea0ad8c835b4cfaa8fbacf9a627e4267b42d06eadf719f8b78db0575bcffed3fd1f740992d31d7bddf6d89b6f330d6d52220ca65d897337058e266e62eea7f665bf18603123c0795f7daa2ba5de057366c0cbdef5669d296f90c40e71758610f74b8d293d961ad49dee82489d7b24b1026ee6c7d43ff2e5dda4bd629a673c69a46d721b50cf57de78a82f5d8e55bf0a7ed35061275bbf6d762a340f79024610537618ff0cf7c4add2bb3196d0831a9dc7a817d11eb7c77adb897347cfe3cd38d9ff326398871bd239a15e9362d2c61e90172c35cfca8cc320d80abb4cc817f3552f26f6408c55ec027bcb7b20f9250a3378ed63afeb53f91bdde4c554f4d71d70af49fe0fb091b2ef8e531f55a7adb0de12af467ffcc5957aaad6921743daa6a6ac822f735c70d75d5741e3e3bae9f328743d52ec07e92e479daec333338e33ea5b6b7deeb262879583b6b5c96ab4dbef39f93a313b607c1ea27fd124841333d920a69af7f83cc7b57f5853bc64aa1a665cecdb985ab7c2b81c1726716af53420e26c03d7074de0b5e30da9b72436bd41f48abd55d82f0b7a5df50931c43f7ada15bd67d1aef2fac89113a31fe64b6ed987efb60ff619720cb08fd0b6fe69ed9f40e3ddcdf2bd3546ce2dfbdbef6a9cdb7d817cc88fc2fd457ba6e4440f9a6fee659ca93f3c5befbfb383dd5ca17b2f54cfd3f7c715a0a566c5c971826373c9ab2bf40746a0bd805a4ffbc2b9f68e05de3d2e6311f1d17173f4e69cdacb58833120cb9d25e6b937efc47bfef0ed92f28a6b591e8b9a325b59abeef135f46c754f878591b6776bfba46d62c9d9271e5501fd08b21f37332dbf772ce4255d668531ea790bff467dab7f58dff7107afbb66b5adf6668fbced7f5979916eea3e26d8575b8c86446f87d2ee714dafe3df8ca99d971efa6d90df7def9dfde2f3499cae1cb6f7d1f392c2da75fe759d78799efc8e6140673fc6fd7a4cfd981b8a4fff1199a4dbb361fbfbb26b158b8667dfddb75f68fcff4eb5de9caec86c05f2bdc2bd62011d767397f3d56cd52431d1b969be5534fa37fbae0a06f12427f61c3c7b46741cfc8439fb4e09715f8f3b1d8951f4a0f09d6df30d82fb588f8f0900b13388d6f83156957a725e1e83137aeea3b7632b538e6cb1ad2f8c61cb74b7dc7bec3966c87fc32ad1f277b58c578bd0de7e0bf1f655e26743057c86b177447cb49af4669854671a7f9ea43aff5b4a866ef145b2dc127b9055b07df49dca12e125ab4764258cb53ea7542fe82bd4ffb5993417e58d42ee62fcd35e467a6eb8a41fe2219c13bc4ded86ff01d648cfaefde8161bf78128dcec82125d631acedb06136e61e5033d3b9075b4eefd5c68effe17b554d511d9067c17987355c34016aec9518533c69339391369cc90750b792fd6c72af026d9a915f269d8fdc9e57f2d9c55738509ff2d95e511f30bf44f90285c765abbd8b79979e7e96e26990f5a3febcd40ad2786b820bcd4b46180da9f38d3d693d4dbb3c25ed290db479937a9c4f331bea9bc22e1526b8b82a2ee146f9b05e4f8fbcd3f5336a43f5e5130669b731c0f7abf4a0591a21e9deb90cfab71bc2349c0d7a4ec41882ee07d5ca9221fa22e743a111e652dadb69d6780eed6b584bfea16ac9c0476eb6df18d6a218c6a4b5b0af17883feab0f0a6fb1193a6c3aebde7d95af370f174c77a64e20f7ded2bbf6119978c74ac506700e65c321a9753cc3d73e20fe18312c6ec14a9f5ef8efd84fad5a1572ca65af1d7f73cae611ebf4769367e32335b7202a6472fd77c9c77ec203191a8458f732cc1313c89efd7859b3b1203e088a6de53fd6f3139ce551e715b1307edd4df864f922b3b2d3dc6d9498c6f59905a339afb05f7b4f5377a91c4db51341b9863c979bc82be4bf9ace0e356c4adea3e99c80f22eadf5d6fdabd0bd501eb9be4414946b3a20a86a859ba0fb65905fbc266cc9240cefd05e71adaff63d01406ae6d336ce3f658b8980bf0cb9d2ef571c3bd6b9706600859253e827da1e1986cc186d796af891f4185dc1188d509b58ad631eaf23ba447e3150dada7127da633f17592be707bad59acb8e55adfcfb947fbcc66dbec49e6aca2914d38f85cf387ac3a2046123128a67a4e8a7fada57968ff360fa2b35d546ccfb443a759ed48fecc368624eea8f6f9dda29a117e783b6fc26f62d46200712d6ab8f1fa07d6f92fc13e54dcb0583b7017d352f639ae9d7a8fdfe1166c81af33303dbbc30c7cbf6facd2da69fd8552ab8d605f0e83367e4e8f33dcffcec13e1c507cd3d30545fb57370bc493e79a7706ad01760f112bbb88ce8ac381551df761be55f16aa71d8b39b228f507d1abf22b24866705988c6134f5dc85f8053ea3361b00e7023b04dbb292363319babed3db732a5ac384237a5173ade3129675b38bda9f10bf03fe5c29b1742bce9bd07e69e7f67b50397ad078607792d25e489cdb432f04e9830ee99a494c3e047b0b5e7f5e15f7451a2a3f86eac77e0c6ba0573b241fe0b6aa109304da38071a9f4eabf3412756fa97a0133bea614064ac6847d39a7882ddb5d42b2c810353ed2337f4bb00c314f225c57461c0d96c413e63ba215e50e9cf4402fbb353417ede833e32f8fb52d3f9b9975b815856db0c15e76f1ad25afec617fcf24c124be36b5aef5c35dfe709eedb181f9e83fad7a0ac909faad95450e30fdf04d6e572c2783eaccbead3baac6e7fb32e19af9bcee7c27967807ff7a77559b6ebb2dd97e2d02b2befb2e6fe29e18e194dd05f4ceb7139ddfcdd3adae9cf785ffa0ec327c59bfecbe87820bdb705ffbb3d07f32467899b8bb35959f16e9f783dab7d6281fb4459897d403eb5da277ab6c2465f26813d5810f636fa496b76ae72b790cb3a06c0bba08771e92e6cb4e3b170720ed7287a76bca4bdf1c18e1768bb664dbb5623cdd1c2e9d17e6ab2278ce7068015143c77617c97c641ffaaff70ba2e1c8df89a0057095aecd64af334c5830d7be1218c37a6f42593cd5381fbbd5fcd6e4bb4113dbff837feb7d5faceb7a072f7d13e1be7696db77b7c5ed5972e16fbd776fb8dfcdbff82dd963614edf6314ab39eddf6f699e2aa1881dd8e999ba1ef55705fd9ed42f9333dbb0df3ee3bbb4d797acca97ad276fb1537c3986cb77b08931afa3a53d6d96e33236c9d8a53320d7ba292f398499b7cb6b2d62fb94b2cbacc252d2632fe70c5f4c815b6e21bfeee3cae1ffddb08f17ec968bcde1f49ffc509488f2a0d89ebe5a87c2be3853893c46a87fa33b17018695b887a803a8ad68a7bd7278dfc979991639e3b498fd34e57ffd77b44d8dbede69d304f3e2f14375e313e3f11c6e4c9401d1b5135e1fdcb7ddcb9e635a4699024b7d9d7fbf0cb63ceb9d20907443e71403caeb64b7c5487d28139c093d1927c39e023a59c73a9ec54e162acd6f01bf986922fbefddec66dbc48c84f2c067975521a7b8b84f4418a3b730e32b71e250ae743fc0ef42dcc6077ab08cbf2c87f51938639f51e937d1fac39e1d46f57c44d87c45d32d7bc77d2864fd2d0e9f82389f7e4345c23b74ad8bcdc211f58bf85b645f144d6da37c0b19c73aad99535e1c736a80dc4df9357ea7f0e05ce9b1fa455f4a4a3ad74bcbb207f842f1faecb746f10ec6ee32fb965b9f68516ec05e52d0f21f1cb22662bd396582fb35ccab9cabeb2dd083137fa1bf20e829d31bc23f690414d4ee9e48a7bb077e93e1f500f94df07b99774fc4dd343f4bfd1af68d78346f95b5f2bd41c68ef578ad925d87a74ae595633cad902ae56ee9f02f4ca209f65af48973b39101739d5465d8efe59698c601d6903f2579ea5bf1253bfe1ef72e9b33bbd7f5e2d01bb96dc90cf92a136b5983cf87513f51cfd5c6ba74d9b9cc77ed5ff0e9257f2425a7aedba8ab9eb86affdbaf4e66dae7dcd35e6a6bb50fc905b6fd2fbeed24f5aed46924331961c15722d3525f26c3e69338895c4cb10c6490c82ad17e2352e583ba39846e4931ba3de70c88796f712f33f7cea22ef1b9b10168039818aa7902bb95adb1bc2ea9a0b17f7a3e4f60eb9a1520bb621e2835c56d4b35e3d93ed687fe0a48fbfad1faeb5d4dc29e31e628eb446741ac4889579d194de8981dc84da417ed3bc62839cb4671289256f82cab5c56e63aa9e10b3246d2d33d86f74784e7108cc0de188c23c2d03c02d3b83604fbafa4c7b38465e87f2112e1df3d13f66d55e47f2053ad760cbda63bc80d75a60e81a8dcf5c0f3ef55971bdf51542a89b4b9b5d709fde0f7371eebed47f41dd54db1c4ad5c7a2ded9e5bd7786f7c9dae7780f76c7eeefed3bd856fb772dd8ddd4dfe1b9db77ab86e19e621afd9abc2a9d5ec4932fa9364dd8ab867265790c9a9102be0d67ce52ce13c6038cedadf1aa1163554f857af3b6d82b8ce4ad549ac737b7b0c5b89f878c929f7ad0d5d8ae3ef208c59a9caf6ee1b023e9c1f3a6fcc078b45f5349032e7e043bbf8f65b5b35d413c65cff9b69e23af9ec4cb85fa06aea9b953316e7d50d7869e5b195f2117d0e882b9a067d43eb762d3c518f4a741bf155cfd86eb7d94e1311aeeefcf8ba4446e6a07e77e8d350b6fb246bed1b8c92ea8d3f95cca784bb742c9455b5b42abf7928f5ec5baae0d719577f5091b2f6d325b14b1851ca5f59bf4e1b96b27f21d9953c87eb1b3f41984e6daf1deb94acee564335e3e5c37bc66ba43d76d6df32297fc4092fbde5c41eec98ef1baebbd58d0755b9b1befea33ee5bac8cbd27e0afba4a3f259cbeb47eb8fc0d6ce9f0d8c6d8d037e26b722f10e513c37af212d6f5ab1f63efa490386a37a35ac516ff9eb89a4ffd2c11f115e94dfb1eb406e57c230c2bf85a6e8c7e7bafbe31884927dadc603f963b479d143dd807a4fd89fceb15f5f43ca34ffbee13be29baed43ee4e17d8ef87fb269f37841369e71c43fdaf12fca20a7997cd97d60e03ce01c6c2ceab19c66ce59e937ec3a40ca146321cb3d711e19b064f9a46bcf563c438c9b188e59a5263dbfa09bcdc5a504796d80d86b911c48a6a501716a6b4110fcf53fed3f3d8d0bb148852e2617ef73c3e57cf933e3c8fc431b176cf002d946433a6deab95813c4f02e2a44cf33e249f28e0677f504fd6ba8d7d25261dedc2de27fb98faa9daffee31d489d91ad6b39b579eee6bc4bd2379b9618f6f324f7e67d31aafec8cf89ddf5955f534b6cb53b0bb7e3a47e6da3f7cc00b5a91191ec2d74f189e868de706d5dfbb6b7273738a22e23706be661fb50c22b3bc4580e19946b6f583f4054aa545f173b87602c0e64a0e6f99ef785fab6fc7287e4ff3d791ea7129a2515f83cc15af23c501f3c9977fa77d6b990c15ff24faf2a8212df9618133ce54f854a55758425db69d0703ba56826b4660fe2dc1de68c45335d8cff85cc83e40dd8a74eb9d30b0497a1cc611d6fcd21aeb5f955e804e8e5d38be46bd9d492c1a4e7c7b6e3b6f3763ac356afc957ac53d47fa589af85140eed40d8c13692d64eb7d8ddcd16c487dc3785d269fb5099bc76381bb5c68aebb823e3127488f77c23816baeccbb0c3348cdaeb46e205eb400edd5360dd09bf197042ac4033cd5d55ecdda71837b936d19d301065bf867dcdb096103782fa6186c0692e0ec41bbdc2ef403d22d1fd7409616c63e81dda9076e1a0a0eb99c71f78cfb9bfaffd6e5c65fef694bd926fda8b1553ef147dcb9578bead303713998741443970fd0534132ad6fb5d5e433e37b34339d78521f3af8b28759a08f50803ea039ad6fdf5dfc60eaf01aed9426ad101b769ebcbc6d3d92d92f145f994dfa9f7b4d28b4ada353bdb86f798b0f6a9e7a36683dc670b87d65a3884fc5ebdecae517f30d2627df0ad7f767d7cc6a9b525509fd8022f4ad8f56ce90c31531c8ea921672e3930c68f79d551e33b842d1bdc819faebc07fbc2e8ea00d083b19e6e5c955f445eecd56ed8f56e433dca5e704676e0d2feaddf77b47c3d1326c263a945f96bf5bc715707d83d1943eae5374ae8cfb5b8597e60ffe26e35011c03ae1b9b705d72af11619311efad8bba6f138cc92556578ee795725978dfb9e461de67a415f4ccf61867278ef45556ceecb606ec6b1b67a7520f1d6cc3a0e0872fdf661d5b367d7798d321ed75ef6bac7b2fd3e5bbe22ed71c195b0adbd3a1a7d58da14fef17e6f958fbf7cf7bc8d077e49ee7969577f7ab17e2ac88a516598cbd31fc7c5a38c06db1aa948d89886ba2e4b41fcf48c762facdb976ee783fb8ac7f0bbe98863eadd9760e2d917b2532ae0385097905ecc4ba9e11af874e7e03f65b7bd893325fd99b39e6e1c7edf13016a543bea4bc87590ee24fc787694636fa07d9687f2f7cb483afb82ebebe4bd5bdcbaae9e5cf89f71d794abbf7e10d615cbe7b9fb23e60fd46649fefc57877af2733f47b58d854e2a2719ce6ed6f9fbf89c0baa93ebb94ce15c665eadca2bedf9cb026a13cdf0e70ecbd71d156dae1ebf3bac453c1e879ef2b886dec95e3c9733877a7c99434eaddb89d6b9017385fb1bf7d105468e7534bc3f800f1f38ecc4989a9f581f946aa71f039fa910ceb91c281fd04b507dc82f850a233f99235c6581bd25d921ab68eeafb98e05abdcd7589d9b74b6766cc715f2f909f2c30bd36b6917986e5a73d334cadf1d31dfd1cc4bb2d515f4bf662de096788f149a22fe5b398c77149fa79ad8f7a3f3f23be52cf30ee59891789a1629aa7e1fdc3cca89143c7bfe033bb05e96b927f6494c03121a8cf056cd1dac1e330168eb52bfe17382656e0d34f729563f02837e7627f2ded05afb8ef6ce8eff90e9f8bebc75c609f1cc430d3fcd3f3a15f2d5093ea2d781d1d38618d921af25582f03e23e012308f6385d3dd11dedbdd07fb970b625509677c029d4566043aece93170e55a5c74ff1f01c717f881fb23c62ada69cd256ecc5e538c079abd53c6435dc68112b72fff3bc55ce4f37a8b5cd5c86390ec03d28a993f35c8c9a2ddb4bc567136c4c9743d196bb636ccdbc11c1835b92beb705e82312ac7799c6f5133906b97987adcf039d864f8f4f81ccbffe039ce56941c31ffc4ccf639a40f9d1e6ec40f31a77993d6f4dd32e218218ef742e1037cade3b26056a01fb539e24e22d341ae1be6b364a4f20a81e65ac17d14f6ded305ddfe0dcefd9a3476c76b39efe498dd3e8f598131a188f93f3d3b60c1311e58c49fbf67378e458c9c4fda555f69fc0fe328d7c2508e9f8c3d646fa0a77a87d39981f62d03df16c66b8dbcc745356b5abb2d6d397f819cc894f84ddc0debec05e63d8e9ebc0ec64c45e559b897412f973e1b10ae7f995c955dc27ccc0fe8b116906749bd364696f61e7ab358b43210532bc460aefda47e528877ab4ac621c8557c0f2ae7e1b9f94ee9f089e275f4f5b9e55ae666b01b6e691dae346645c6665c188889ebe72392f28c798d0c708ebc09b62f1a8e6798ef8e8fb9b238232ec401f5b5c4a97323acf36af2e978d0dc016c09d65796697023ceb57c3cf2288f45f9a228cdf61cc7a34c4a9cbbb5d6faa989ac8b50cff88c38951023cd805bcaa4ba827e9ff734422186eef79e22970ac452d3e57e76213e8b4c7f211eff69c0cbbce8be99433994d686411f8867625ecbe2e9e6148d55bd2795b693f08a13664522341507521a180fbd4542c87c688cfd4851e51e56507771da780fb1d94bead1041dfef2b93b57eac0e8608bdd0c7023d695cbf959f3e24eefe05c724d7be8cb5dc41bd213db518f30c6910ad75d3883ee197adcf525e6afa2b43ca95cdcfd0cbeb61eea94fb59016f8f151ae5047c88721fde7b1c366638f60dcc73627e28de415d29d6e47c72299e2c9a9ab8728d05f09b7ab877cf28275510cf788ab5726d681688c149d24c8f895f7447b99ba3a05c5966e8760ffbdde3f6d1de312e16f9fee8630c34f09d592fbf22ed1f70e2998c34bcde0bcca58b6480356776087625c57a716e2336985717d4ed7fc3b87f0b398ae53bc3e78f5edbfbd41661f016a4756f52bed465e564c4709cef02ec49e86f4bcc49eada4ad3b02f5df18fa4ac29258e3d4c3a6e7c99c7af97dfddf74cfdfe3c19d29a9e27d2e762afb9e2c060678cf55f1771c688eb03b502a69906bd27c228a714e30387d1ac59a21d7832496f68302caa02e68421fbd159c0cfafc4175d6ab21f702aa63ed9c9b0d80ae2e7b831aceff168f40e752331085ecf586373c37c727648ab1cd795e16b2f8f39ebb8226c5a88e330f41dc0d3c4b18ff11bd3c897e8e510f7edf7833ac9cf2bf041557ab07774ba7ff9e5fefc82d7eeee8f738b35e1f77334b51674bfe4dbfc1fbbaa9e41d4882f2b5adb23d8238ca5869a14e99ab491d27a095885e1b870887bd04bd02f3642b9efb16bb0cd7e10565cea442bdbdcaeade5c33b2c4873f3cb3abb5d89a78271cc3fc42fd70ea3c1103f0af3bfc4e7894d419c9c2c37a92fec385e25b45731413d850bac694a9d1c0d7d5b89cf60b2861bc535f9e8a09b08f5a976ce78fe16eb53a2227eb28fdc91fbdb735ef9ed3ee5679a67826e9d9baf9d023493a817146a9651193365c77c881d6ccc7f7a6c9b910ea3c9a00ee18af1a9ab77481b2dfdd05b8ef35a24b7538c3dc9b971c37c7f21fd9f761f0c27e09fc7c21a161ae67453c9d3e7a95856f03be6ddbb38271a1d897375e1e0fa4b8e0efa45c3047bc056ce15e3dccd9c7a8e42cd9de7e0c3ce82e4863a26673d43cec995093ded61e25d281715a5bf3ef9555a23b95e35d716e3b3c405847aa0e588151069fd16460f7ba9c6e07bd84ca37c9faf215e212eed50e63ba3e436665b9c27420c9e3489913f049afcaeef81119a4f1afabe69750f81076eb396793f79ce9021bfc7924b1fc05d70f62327ff55c37a4774be84afb7f9dcce9cc018980beebd51cf76313903fe2d2dc78b8472843f076dac276bd1f7d1b840dc69cebd8f15e52f8d9143b899dc99410fb9e35f093bb9e23333af9dcfc71aedb105f7ac30a5b5e90f50d3dee2667656dcb3a8e5027b5ceb03bbf219f33df6db0bef58427f8a2d735ae04f00be5010dee7360c1dd9bb84314c7d22bb5836a063fda4b15d6997c4352573768c33a87d80af67130e77897b366010d992fcb890bb8ce3783e19c7906275a8696f8e58077996f918d4cf0e1d779f0baa51625d5172289da18f393dda8ba4bd16704bfada0cfa9793d1b834d9b3ea49e8f77548bb778ee47c769c871a27f2aacd8a7dfd3d6f20729582ffc28c60ef0e55ac05faad6fedf3c2f73c1f89afa6947973f9bbf401233383982e2dc7f389b022f7e546f175d1da36d2e5dfd70dd5b87da91d7196cf0435716d80dc973ae13dcba6c6de5a7db0e00399078bec724f781bf90cc6b2370e754439719a93a8a79fcb1a91e328bdeb95dd5e1b6319c0aa7d048fb988e30afaa1ed951392af8a7c1142720e86c6526a53878e38e5baf3b99fdacc1ee68e8bdfaf7e6f8f8d40e3e83dbe77ef12c735f6b38f0e804b13919a6f9aebf1b422ee994bb01bbef3c7ebc7644b493f80011febbc84dc9ae2adccd323e8ad73f70439b1d0ca13d404316be2018a8b57e0c908f550272ddccffdb2ebc979fc10ab0ae7dedacd6eef2f6e1da61d708e88ed9a88c989b8a19ecbade2541d2e117f574a7eeada0a8de17881fb69966e048eafea558b936b0373c237835d45d79ce6c8f51ff0d13bf12b44863cb6dd0bc9de78eb046d01d5bf1b77bc465c804851c32a65e3356a297df18b8cd1f73e45ec1107e1251c7fc1389e895f34e7de695d13bf75a8fc9095d2fc603057cdcc6613ba57f9b6246e42c4d1c571867a8aeefcf3b971a2f83c35a98318ddf641c57e84c2bb32a5b127f78e67ecfdbf05db50e26a63632931eba17344dc12c48dc827e0ae2aef3d7ec5bdd5405e466d7062eddc8138d20ea2db39aa5c2fdc07f47ea1ace103e7e275459c98a9d3daa07350b92cda1677f44d8c60af78e62fedb14bee5abee375e725a38f10b540010bacfa4f2ac45ad868874ec1ded3684d3e518dacb55daa5ed6ab8fdf49af5cd692dcc22c497343eebd9c7a9fc0d6bee2da438c27f289e0fc0a930d7068a4f536368f6afd523c18374aa3f6863d55836523f722794dd6d4417f0c84e61ec534c37e596becdb1e716c510cf8e13b3206764b85cbfc798d1fb97252e289845c9aaf531fc012b5e18431b850ff0c1b8f9e315ea77e1c88db12c2a02b5d41c24a412d4dea11d656a06d96f07b19f7f13c25e599d3ec44cf8731ff20479e50a1fb58c721fc1cd502880392dd570e728aa6eca472ce93db02fa7eeb4f9cb60cf9064fef54b7e7943b4e06344e6cd5b4f14d6de595a7413dc3b9520de4d3f13d3e64d783f3be7b4e1c1b89b3e93d4fb221dec5f993597fff2de5bde437f482e418170ef9f3c0b92f703eaeb837409fd05e55de90fcc315f77e747f9f5dd5dfb5d98dfe5e38b37b77fcacc17f4ff36aa6d1df93e86607a2ac8abd78829a277c93a5089b92cb3a92196b4be81fa45accd779d9facaf7f6df11775dda9fe6267184978715e140531fe35737f5d3906a23d7d2218c3623addf0f9ff47a534ee7c4bea9ceb9e339ee8acee1a31ddecffeddfa291cffba46edbb38661f8a8736b502c414e25a6777e23a12c9c8545ae73bc0e60ae0f873973bb41b5a6f1e69eef31a7ceda7a0db1bb0f74462ebdcb2023c5d88b595c2b5028883653ed50d84c8914b18ff9fe5e5d67df846b11e9aed1875756d86f98c11fa603a5ff3d937bf775c8e736324f9ab9364792fc4af13d71c23aef07b6b9ee6632c94533c171794c77a5ec7a417ea5e72f051ec95f2d7bbe3a8ffa194382dc0ccc4dc35e22d1b2317cb06dff9b57dde5cf3ac52f726c41f506e2dbacfc9478c88882dccd37418d7624f7ae6a32169aef2647480fa86f8203f81ddb1ff837857f9595fbbe01fb38a7cf5998e7abcf61ce3c008eee906a93be6d0fb66486e2fa853dcd6ea9ed72bf686a0cf1442de4bf7a98ef2197b755fab786284fad0ae505a5f907bb977585e8bde53a3efe89b7540390bb4e747951737002b228cdb0facfd062b9bf48d7cadac484fd1d7c86e2d31f78cb8cd2bd565da6bfb9a37e1f299648fe00fdcebbaeffbed588ca807701f3421e9563ffb69fdf86d3b2e7107e39998ea455ff473553ca4495d72a833288e02b95f15aa9fa6228ecbe792fccd9821271c7bf5155651503f7c057e78795ad31e611457c4fab5e333c7f191ff0fb895027bb7c3b420eefbfef82605e5eb6a017181d11fd765851c5ca918afa73497716e4a7c973b24ac217cbfda5ab99e16da1bd0cd4ece61a87aa56bc58944f9021ac7b0411b8a3c2aa58a4fbd33728371c4877c9aaf8546fc7c4fc6e861ec21cf46635f6968af690edb73cd277c6dcc9486b5d6aca1a7e4c093e178615ba861ef623d407f5df119e4038c9b5c67910ebaf131778731e47fed3029afe05f326b49b907c84f346b8afd2a6fbf46fe23616cd49c652ee00057cecc6863cd4873efb1e69e814fcc8d516b5d88c941432c625c18c00f2ff4e0dece59ce112ba5b921e44d8fd4976371c404c722806725dcabca9b5888a3e7baec55d15c5662bf7e7bcd88bb42e6208467b1c9087d09b10fa81705e7f24af330bfe7eb01e94a0a710c908b4a1dc7e938f60338e900fb809ca6adfd264d8a7380da166ddc469af3221617ca796426d41d42d281e03f6f32cf00f9d203e173e72660d993ddd17e32719d75ef6b451067f1bcf26e05e423ddd884d8b6e41ed60519e52f6fc1de22cd261d734ea7e08ef194707fac88071aece612f6f6b3ca7304da50871a9bdc5bdb18f2409a0121dd6377257bd1fa8d685b6f722f009fe47879d051d05f74d4f261609fd8429e07187e0b72861bcccdfb97b222dfa630540fcb04f941cc0c7a811271cdd17e2593d13be11e1ff21dc9701851bed3f6c612b3bcdd9c38d428a8de3250fb8b597536c4805acd5272f08faca43a99d8f7388f10d71335cb21e669701f67b96fa33f9cd4e3b2b3c132775d566a2e10d695c671beb65db2f5871cb505d7ce4c6bfd3199ab439e9c9c7b46b71fb66b4eff11ecb9e291290cd49d121c9e97bb6eee7843694bb86bc7e611f35f2527acdd577f40f53e6939f2d9c7297b871a4cb9c3f3ced2ff81d88970534a371bfc88dff91bcaeeced5719d268b7cb6d284fc9b8cada56f855a64a2563d109129902b5469ce784fd89720607ebf96b6f565af400e78c4d021d603f6bbeffc8fab8fe32de2fafec9ffb08b8a9de97984497d3ffce6c378a76be0640fe266667ef946c64c5b039f81fb9bef2be43eb8af87b09e80a3a0e0217d3be2c39fe01ac4faf2d9fa3aa602f7adca549a3fa920cee126d8ba6437b4a08bf1405b69efa9792c35d7152e5558a11e9a88397783e488d7d086ab1a73aa26e985204e937ce5b41a507d349fdc886bf842718df4cb2416cefb1af3243f6fd16bcf174b46639f4b3ff41454b551565817da1fe81eac4c91a33765f258c4f69958ab8b175331853a1cf685e8c1b0a43a6cb3d1c3bbd2de0e706dfc40db24f19a51ccc64c72bbb6f1ff52ff8731260d953bd8567f8863cea92611cb7d4affd3587a4cf31aba4f3f86129c62a8b315421e7f2a107344baf52b5c2709f682f890cfb4c3b8402c52e8d23edcb78b4f8df744f57c9c6b927f37e20a13dd5f976faa5edb3e8b8edc5dcdefd65aad727b9dbffc7bffb5cbf774fe2b33ebafbe61e7cb6a6427ba3841f9b2439cefdb2e8f4afa36c8efd2e55670bfad55ad44f248b8883bbf8fdec1c6281b7b5c41ddc4e6530fe617ea5fb6fe037171410c23646e3d9c86e3127bf272c05cd942e07c8ca54f07f9f0f61b34ae9d9b2e69450d5adf01f778c959b04ab067aa71891b3664d2d718919e7d5a905f658c682ccfc1ee88782e9f7ac4cc00fb2a9750739d27e35e0cd77dbf6766f04fb582b3895a117666fb640b3f7f7fd4d277e7c40fabbeb94118c8aaf395a7c4c9a60f48b721328650a7ef30f1f23997a47b941e4913e3b4022e674fe1536326fb3222c41d74beffec0efec519f9084ed46f1296313e03e9cec482f6e2fef3190c7c95aebfadfdd6a9b70f7658bb8f33f2bbd37237ecd5da1c2dd33c43e93625883b4cd9381f23678760a7ec312f37ef3414a09fa0f503a8272e22cd8638dc806e21e52504e68a346d09fe7c88f5ec29e62eed306632b7193ac254f6211a192a9f2fe4b5a62a27d2a8b8e7139ea2546b7d2df3fda853095cd1887dca66e4cb46a8bde4036ec2ce88f316f2b71e613264ee472cb1a7acba29ff6aa774c48f88bbb473c7bb17a4a9688c8ed40789be5c524c6ae27a799feb9f7c0789fb42ae6dbc06f2cf4da96f338f5dc581a7f6f438235b6404db72f8253fa05bc6fa8b7fe3325f62b1410baa80b8cdcd9d99a9f4dbba6343d42e6be07d46279a3b8cb043ff900bcef7ee9872b7dd189c75ec6554bd2fd954610ae72561baa90f473f0ea8bf3632dd06f16aca4f2ef68c34162e39e26031d6d9927e6171a7f9fd29a72c63b351a751c07f02d61cfa2b659f354f54bfe63c9f94e17ce29c32cdb357bbdbd8e7be1e52fe4df682d581e2574a055d7380b8267bc1670f3567ac83bcf53913137eb3e7136685980f2ef94cef7a75cf57d5734efe316a29a95e2ed4a6469eaf5cf59bd177225d29ad82983f567b9e8cd323f0451bc2ec7003fde0381b62afef066b43f7605b137f7c9c991e23ae946e7efc34d69506b17bb2b97f3e36e427e41cb7c6f994ea31ec58c039f6ca990dd7d4e3dec87c3f7068eebf1cebc611f6e93bde1b61f9b8217bd542882746542f7806fd27f9dd4f5f8f2d7f0498bb168dff796cdaf845837c12cb891f7d9d1296ae68544cd1841cb8d386766112166c24b5a524efa746fbeca7735cd72a2a9f38d6bd9549b5a2eae6773a504c6289b5aceb2f817a648c71c539d89d71af6d6330c08aae50cb35487e9a18e75a7e82dc3c9adb00170eb3f2a6f6f16ff2deb206dbdaeacab931e217c01c16ed5190a308ae0c7c4a0bb59fed9543753dd04f5e71ef14ec8f3f22d5070e9a2c39f60f87f7f3217ed4ccbc077b01bdbc9aca251b0cbf11e46d5d9bb841a3d832f17cb19a9c9556548e3d65515a9f701ee0efb5151a478734b5728374c8c2377a266e9c51a7ac7ccd293fd4d3085e928e0de2c7c2a4dc60dfc639d86d702f14fb6504dc2cccf10e98d3747d9b05802984da1ee3e283f01839e9c1a719f0f21843f2bbdc521c14874659630e3b153970aa14c360f793783c1be241f1b13742eab541efd31e9f630fcf59b7f18adca7133ba03e5cc5c9c562ecad3037f41c5e409abc2ef923e72bd833710876f59dfad772fa16ca47e3efb93300db701fd1377733a35ec87e23f338665bd77e1c6b6efad8ffbca65e60eab5057c9715191bc281bc17a03b69277bc969da7e3f6b6dd78a37319f802f2da44dad755c73af34c66c3274214784fe7a721cb338741fae2ffbe9217e58be8eb0578c6b926f91bbd3b9161e05f9710de223ba77b793c9f11d63cb7811d3ef629ff301f697c9fa86ac69975bc5757f428d5d912b2ebe9746f253b471fed627ae15d29f63abd791dd8b79aca061a45966522f324fc303f10c9709e867876968e7924f42f6b75f0ae45c0881bb64c3a6a879711f8d3106aee726fe8d1798572e1b789ec20c762f342f71ce41bf73415abbc9795cec4684eb92352fe48dfe88815bfa1460ad3dd33c6da52b0cdd013186f16232949c6961b2b15753eb0fd772f768ebeddca11eb23285fc38ae15e326f384a5e32d655dc6f19e140720ac8b03ad7bdff10ea88165970ee5e850778c9f0f94ef7892f9685dbe77465a780937dbb1053c278cad4f636b6c48e7ba66726c21df841c94a8adc287c16e73259c84cc3b421ed45855806bce34ac2db7d7c39c89400e9a84f2d51d46a3f54fb99f6cf05b2abe4913b5b6a6abca3b33dcbb5664ab9201e9adfe403fb8a1582f996894875de2bef2c11093f2dbf5abb9b6a81db0755a6624af9dfd93381b6da8feb66ac200340e7cfca6148f09d4f46516435d609f9788a715a45b267bcf21a7e49306307c1b9d78f8e55acb648c2032abdc92c6f0efbef1c80a456696ce00e3ffecacf81f0d1d622a6336a0bc7f6c069ad2754874e81fd2c3fd5ae57296ddefedf99267211bac883730927b27e06c0dd297065b22604e2a4d94febd9eda63a117fbb2e6832feba924bc95516e90ffdf54fc8abde3328d775a411c7a448b6a795df0eb97e7073b2ff5340eebea4ff73ca33e4275f9a77bfa95bce734af9660e34c3e8cfb5ae9713809345ffe96a42f9a8a9ff6153dd73ed807a4a37709b6ee3d204c8251eff118e8fbd7b3fbaac6fdde283fb8d2f994f300f91f7de451f44ec4d117362f667cfffed8a8f5f72af6865a5d4e906e90df411cf3ea27f4f227c7379a4379727c263d86a81dd35df79bdfce4decaf6f63c9b5e30d9ea827d018d03a9c96c87d111b671d72c3e59db4630b5ad3a0d16397ceecf6441c37f12fcc9f08eca57207643b12e091b1937d486316fad3da56dcf4a055b3cdcc10f592a01f294c8f8e4f5a9ac2b9aeb9af38f2f1dcf76057d2def61e60fd3f9cbcbca3ae5bea8fcfd077af4b3e096b4dfea7a8816f403f6a99d240f786c11d6cd30a75b097f773f3e9fa7a683b17d22ff7f70a1b7709804ba6f575df0bacb3219ed35b3be240e3cd1b3956d27f443b7e0b3a6dfdbeaffb41daf38a4fcd66c89320ce8a2b291934a8eb94e5c48f24dc934f78f6446b08d7badab6e74b9beff68e7deb8e3d75c7da78aca88fddbd0e4d40bec6a77b09ee4e19ef9eabe3ab1ba00623438c8c3b44dfeaae7ce4b45238c8b9795c807fe563ffb6d7a8f5d8f3112896257bc7e35ad9d37574467be2d0fefb83616c14191bf2b1a68b894ef9ed4b0efd0416bf9f555fcaa29d8b13d2122b91df117a45f30961acc5f04943df351afd407e0d6917c268a47af34873afe0de13d580735b045faf81d8dad7f337d7075dfa3039505e05f276fa4cebae3f43ac11bb07bb23da35d407d6969f8ff364fd1a8e7309af198a83e444fcad7dc0386b45b1464375822fef31f513985bdcdc50ac352d77fed7ef0edcc43f40ebc76fc26945beee3bd5c503e3362ec6a3079f1d736e3aeefb751bff449aeb959577630a0b867cfc542b8dbd71b1254dc26c5c529f38c6a5ed7de26f7c2cc9cb9cd46873d821202cc1a3bf26ebdcab3454be30e15fb2b8bc53df05c479e25c3a1af17f52afda063464835b0ebf751a14717193fdc6a918af2aafa1f753fe561ae89ffcadbf5b6bbaec05d0829d8aad48bb1cd708ea66a56cf14f632f39e6b6cb21fa94719e22eea95b6376b6ebe29ccc54bf0ff17737dbff7f1ce71847dbb705e0eeb5d0fadddce8c736303788d7d2bf28ccc4639c24e7464173a3a9bbb9118d4817718a73e3d6ce8d88bbcce79e0b38a5725c6ec96650ecfcd53ea86fbe3fbc532cddb38997d6c7e2c0d5f6c5b606c6665c22674486b98630c9863ed50415eec53d07bb17aa437eb6b956947e7bef360617a82f320b920dd5663efb0418f330d4200e6db5eebff802ad8fcfcec807ebe60eec1bd1d4539c42b0362cd4061307e29029a806275c0db92fec7032cca1676da37ab2386a39147b37a0dec818b4f135c24afb69b8c03cd94722731ee5724d3d49c8b527d2909e614739970271ba71b2413d0726ed6acc5d96d81257d2eb95e3509b95df0e731ed1f9ae6a6bafa33baeff1caf314d6ceb8d23a71b70250c1ad5e3f3c9e7917338add1e7613f02f3d7ef7c1de9b3e5a6609043024ec32f364ec6cece15e77f1b574fbfb197c0814ef16d538f71bff9dfb2bdeeca619cf6e4769ce7ba431ce31ef68a1c837d46fdf55093308fe3c2c4fd37615a817ca458cbd182edec16aa1abd4fff0ee74e1b7fb35bb0bb51bfedb1a8e95cd5bb19320e7e37c7de9939f6364609e5857e1a19f017d40bc511079ce60bac7df80a5bbb19638ff0b3b8f7d780983cfe5de56029d6d108f75622fe49ecb1d755cb1ae238c92be84f8d4df4aff55f57d87fc48461ae35368e92eb64edb06ba07446a08730d31073165be355ea619d92eb1453f1d43d041dbe771af0a0f5492477bcaff91755ffec7a27afaa3e555da9162735e1c268647fe2cf8bbfaf25a2cfc4473fa2e8119fb3aafc3be53aa8d6256241715f58241bea91bc83ed283f1e7bb9ea3bf6af3de709d6658dd0e9ea519fde5f14a7e87edb06e6669c3bec03f72bac330918bb64d48e9df388d9a98f19f680004fabe4cf9a62cc21f3cf6277dcc7949b011fc1c3b9362bb046a5fc26ae1fca4ada329bef4aaa4987b4df2ed2d0263b8fba92ed3da52e4a901cc78b29d53ee03ac89362a858da24be5f7f50621c11c7a2095efb7d80c067459c32dd33ceb4826ac7c90671bee58ef8755825ac203abb9909f5f370ef4df2a45cd01e5d221e84371b85a962a47f8b9cf951d4e394e7a7f6393ca6017e3e104b797f598f77bc6edc0d1adff2a0b4ede57d2b593b2c1c8f177b9cf3b81e20be039edd6eeceb77dfd15023cfbaf76d519876bada644b72cdfbf0916b224ab46b1c292de87b676f24feeb104e195d2f2ba75e871390fd1b9ede1d7f3582cab5a9774b44d7760e294ee152ea84cb677d533543b33ce09e449c009e1cdf441fc7a449b13fd231b23ec57975cd617d4501d6b996e911f1ad8a6b43a7399cc0bcb5c5b4260cec6625dfe353aed7286f340e99e6215fd1486befc50133fd8065e071d85e4ff431472c011ed65cf3644d6f59b9c39cb07a9acc395909f1ea57d8076686ed1ce8d7aa4fc19eed898b147827479dd6a0698d7dd2b11192cbf1f1dc9d8eb8ced260c42984388195e3e90cebbbc2b811fe9df00787607746ae7637cda782f5fb9143e338cee49e2eafed618f21fc961cc7808f13840fc67a5a712b812f668afdee93c814266aa4bd53dcb1e29e8a1da0ffd3bf858ec2275ef11de7ab3d72df1b5953c21a5238b3d5149f8d1726e58ae3a41438e7ce7e453d47c4db58502c2ffcf6bd947fa9c6209b1bc4b9a5ef51abc25bc5f80c8d6bb331f8fda14efc9f1b3ad79b3799f3bb73c3d4a3ba1af012c83d42f2e493bf352889f3361a5d880b2ed339add97b8c1a784113e07b10f6cbbf294e4e6334449ea70a6d80a1eab229f614f2fabd44def61cbf5190b233f531e6ee01343f63c93105fe017c3735f642615e468ffc4372af193de446d649c785d5ae2bd4664aca09acd370bb215f2a45bd1dc473e9d7c225beb925f55f0ee86f42d394f604f14615c0d5365df0d9fb0ab89da68abb43439d30e2a892f51fc9ab477c0a5a8eb62d328e6fd8f79f83dda8de938e0f2c6cff5e9a19d6e94be4c014d47302f942e376816bf8b7c018e1bf4be2cd4da91714c73296d88e46901f78a7751bdd4fb86e590e3ef4683c6f903b20d98c9f1aec3dd2dc089f27c43a9545312a07ffeb89eecda3db264836d36872845e6de11e50b7dc5e5790fbcab4d910b946f3827a6649070ef6634f3c62f34e19f21c2d63710b3ff3341965a36cff6ea0ff069ff9ced0c60b3324ede74fbd583ef5c27b8ce2dfa41cfb4649b6eac41487f9eca67ce8bd857b992b60bc601f58513d4ecbf8271b3bf78d734839c6c594ce2fb5763f07fce399ec765dee216f051a3fc005d2cec748ee93fe2da803c200be2bcd65ec71c47e81c327cc8625624b0bbb7dae8de73dfff58c3803b9276f72c25536fe3bda22e693168831d389ab6bd5fa96101f6b2b97f23f88efe435c5ae0c8f213cc57bae1da48fb7728261c7d73b6afd5bda3b8d3f5f0fbe0ff521e6927f46c6f10e332d87306ead7f2b39964c19e7ca5c4141fa16144f730dd696d6f54740bda73c85d3e37ba874d5b329e893326d0518eb6936393e9146787b2fc017b1f17a770ba9f65e62bf266f18f62b965a60a8f3f4fe797ef2b7e79dde0bade8f1d289642e75d81fdedbe553ef83b06eab94cd548d4673a7d96ed8203e715e1ac310eb5ec4c73b68af813cf6ed3504729b33d2158ca2d178351986c44f2e8f57fc29e572bda3df4ed75597e7687fabfc44fd76a7fb206622f70df59b26cf53b9def29575e719ed6f02fa9da7922f7a5baa775db4cf853a66a1e668cbd423bc32c407a9dbe3563d9f91b7ce669af741f17c94a89e82c54af2dc800f500247861bed86d4abe9ad884f1af6458f70bb4f8d05be7c2ac6abc9e3fd22e022fe7c3fc929f4f97eb8ffa07f50dc3067b2217e50c225d37f7d937811484bb33e870f1a7d677d25d0a79ddc9a4e0b4cfe762e34d4bbc27e17e44ada96139d38186f8cb494a16765a0388c0c8aab484b9f2581d293cee0bdb423d9e666097d1e0bea63c69ab196d5553b679aac66742f2dab657f859ed5d655dd3f750dcc2164eb3df4caae77995c27eb24db07d0c7375d13bf7a1392fdde225ee80fe377fc3f347e35683e109e106a28ae9fd03d693f2cbb7bc3d878d887328bd29777dc13266cef529c6616c2e96200cd75c536c33154bd0254f7448e09d4d1913d7c324682bf27947b20ce46e786e368858d7556f98dbdcaa3df0a954b2cdb7bb220d954b9c30705eee9717abc86c8a3edb7fb29d6a843e0787ea338f9e1b8fdc37173a679a7ef8e5b99dd7102f67ecc03493fec610f0c8d407f425fa57f8dccf41cd8ff407340719035f595742556adcd9bb4f151607e778d75a22fbe7d0e537272802e42f71cc3efae51a42eea8a17d88bfa1373933ee69a5df53c72af83bcb2893c0f36b7e5ef4cf6b925ca47ff51a0868948d92d242cb7dbe7f71f5d0ba571268c50e694f42a9f0cbf5e23199dc34f1a58dc2cdfa09e7d3221e7729c3383e6b4d050bb2f5da50cf60643e10537dd71b09fc2fa7f69641f03e7b760ebaaef58c86f20f3cf4db0c3ded3364e96bd0bbae45a5a695fe79cf40171ef94df86d3f765970e673e92fb516884dfcec7bcfd369df6885d2a5eb7db07e6755ddfad700cb34ddf07e09a3b2d2a6f907ff36c99719ef4f52e14875f1a7e1096bc04be651b7b119e956d88c38a7ac6903b7dfe24f39f4cd51bb831443e79c965f08c3943c08bc8f9e6cada4789cf161975c323e266ba85c4ade8eff4af73219631dca7f904fa2825c5706609fcd6c8d11b37681f39d75077e279bd5b925f7d21cd62d2fc5981e64f4f8b1febc649ddce6559c32ca7a4c5793e17d41b701f9da0e6515d82ad770e894b7b6f291ebed64f47dd21d0c38a6bca5dfd203d24d50b96520fe2e81dead32cf08dd9c33b7221df3108680fe0e228fb5be49c700cea11c3773390a7d2ce6cac89f0d3fbf295faaf40f3783d216e3157a3f7cd77b42ecb136a7c1c4047538ec1ad7402c4d81f3fd01e248ccf906b555cbe1d0b3c47208eeaeb3d18f151784ad7bbf3fb4f02d7d193f4715bbbe47e14d82f99579e2e5efbbcda789ee98d73f785be7d13e2fc5ced4937f34cef9717a09d3f158ef3a7e3bfb98ffc9e4a47a0d0c8ceb1d617a53ccc6d053904bba8b81e3cd86b6605baa57ce0c8d09b88e6ddde9de17d1b8c85ec95e39dbef3cb998c1b4aeab1b40b67a6eed3f9f602b8ca442d6335e4499bca9cbde40f7df4e3a3b83c71c585d8c67d81baa62ffd7ed0e7c677b3946efc96aed5f9f6b85e7ad75aaa6b31792d5de6ec57425d6b1e7056b5f30adfb5b5a569c099b59e005ef777f658e9eee1baebf7c360bfd8f8730c151bc33bf0b396f7dfac67e3f31c9e1b3ac6c3a87fc3090b206e9c78a65cfe793e85309f6a2b6cc46fec9e758477250d695f9febbf949d027b61e19a1e9921d4039758bba09eb62ece4d6ee24bcc98c8f7057b21f97395f6d43bd58496a49d23b548e5dc1a526f52618621f2496b648b23d36d683e96db12783fcccc911883dfada9de3cf8763ddccf171e49ad088b39de07c67ced1eabceebe25ad728f80bce7fcffe62239bda54f3b7b567c8dba07434f07d9f8cb34338e8d5dea3dee5f7c2417de198bf437d5a24be9c03d0274af1a888057135288c6298d486d2a2ddab3dea9a907fb0a3355d7f3cec8fd0abfc4eef5d54b3e14affcdb1ed3cd5ffb846ed55f5cdb818473567bef1313eaf6119cfe46453cc70bc90fed1b7c7b6fb58a2d670137ee07ece72190781aff6758d0b4e9c57126fffdb7d450c57a8f99ce0b7f395ee717979d23eedb1c6661f46bdb9d6ce4ffd91ab76b567217171b08a011e1fd6d51d6bd16e916663c8035503ea0dce29df27d8fbaa92bce336f0a397fe632df8a881df1572d037294993cae593c13bf97add3d6a7d85fae819e59ccd834e1a6e9951921efc9071a8e39755d72f2bfb44e282f4d5768fbcaaee94fe5ff620c69bf7906a7e50c7909ae888191904f7db30a85cafbfb7b0dd887cbc7322fdc0d18ef40a32d4f1889aecf2e85b400e31e87cca10b580b56037fce0d4a7d8ed49e7427b019f23cd6ea889355fddcf0ee5a2f309fa81fd75986e3e884bbd189f1dfa0ec07f21effffb5826a96f647716ce4cf9ba30a7fd61efd91eeef735d7063689b42522ee4ed7957f5f7d13bbe692bba5c3f270538e3d6051d056776bc56def859c9a0c752ca0eebf523d86dd7cffce4692b66794fc7c478d91343786e0a31a5dfc016be3fc4adcef0fb1cf4e1f3fc494f711d64ecf2778e623e554fa735a43dbd3ad1b5e3768a3a6e1eea6c651ad53d47d533d13b1abb8887cb946bfb5c1d38ea34272418fff1feedead4951a5091bfd4b1c7462bc1c04545aca2ea00ae40ec1185bf0d0aded815fbf83cacc429d59eb7bdfd86fc4b7635fcdea25c7a22a2b0f4f3ecf53bda1553cb3cf76cf1a85d047f19bb8ce899b9b9516e66689d7d8ea9f13e2225ff36fc5f1e842b174a8d788775969bf1fed8e5ac7cdf2ef7ec02f2b015ee786fc8010f0f00f1c1223dd0b50a85ac273be35691b1c078dd70c54aee1711c605ebfd8ffc604feade6c4f747aa473cd95e565f1f35e793b065c0316f3b9433bb697c497abcd258fdc5dfeb6d56e6e3b3687df4abee7b489c9cdeaf029e9a60e5cd6e7f8ba7f33608282687b57bfb11c71af3ae6c7d658d080f732d85d6603771cc372cc1f769497fbab1d1df7423e22dd7b54a79eeae01bc1d9262b987eb8aeeba2a4f01e374eee6b0fbd7ef9e8e6ed85795107fbd1a03d4134850ab2d36fc70fd608b8bce8e4e7c871be753ef23bcde17ea4efd9efcfb8af838b99a1ea13f551e2f52e177ab6fbe9703c2aa3c7cfb5b293dc0cb516c8b5c9bbd0e433decf5a9d4df2df93a85c7a116ac7ac6c321df6e8c187b3e17994f759173f7cea9d205e6c30471770fb59d0bd638dca29eb585b822feb1afd7903f1959c771483c3ae26c5786ce5df4f9b7eeba3e7be087a9cd8a70937d8e41fb4985e28d5773715819b347ff36ea79ca7bbed1c43a4f682eb11d5eb7ad6aec81fdc29ecd79615788cff13f893f39b26e8a1f2cce9cb18e8d1ffcc945568d9f6a220f3907e58723f700f5e4c75665638f45546e911b55283cb6b2736f66f96fc7dd8953a3f29851d4c439530dfa631bc244eb78e1cd8ee8bb7d2e849ac381e627c8e400b1e012e34cdcffe41d7354d95ad98c27dc19f87780fb27bf655e5967f287aee4ffad6bc09de659174f77fbcfef2fd27aae8ce04ee3fcf4be60ffddaa0ead85d6b539a0f6e483ef610c01bb6d00ef7c1727e2f12e62861c919443d4f08957b643f5e46b09d85089b9be459cbef8a7dd5a369d81ae833e7cf355437a98231b751cffc8693131d3f38a4d998f716c5b603d38b2751f198eefa8b34963f5fd0d7f2eddc8facbda3f777390ea95c4c556d46a5f9a33437ddbb7b8ad2897ef571e69fa982d6257750feb32e98f7bb325c56483d0505c737e2866b7de96499d53298d00b9f0d91573b8ffeccb25b9819c42396a6813e6ae2d8d13ed7717f0a7aa7a35a9167fe6b6e53fe5b6077a9da66749fac052fbc7e0bf44763eaec6d8cbff72dd1e3badc6f244b9fb383b9a0fb955884fbcd98b4dfa7521ac6661a91ea924456ec9caa73c9a6c748fab084f0f9ab449d57dd7c79a10725526861fc6e9e680df7ffe469c5277c478ed371fba962938f52651ae7aaaeb54a2b210ebe9afeae0a439f033d9fb44347e3a872997a0f52c27c576a37a97937fccbd538ef925bffdf76719bc69fce612d6e8366a312f75e4a49bb9cf0dad3b9c9e19ae1bf50ed11831ad6e843a51de00717b82f7d76188a553f8e66832b0128dddca710e9cbf19f8e9ae9c7ab4af048bf1087b304fc339f442b972fa9b3066efe5fd4ce71b6fc097e52e63ecc5d83a85d67bf0411392f2921a2f1523dfe1ce443e1ff5bc73b5d76fc9f77a784ee340cfe1c449f385dca364a76f29f526f887c7eb7f3ceb1cf6f958c46739226b360fe3eaae3cd45ce879c382b29e69ff317ec6188afe9bd68f1c3c6ebcffd5e7bffa78e3c79ae28d072e4b7d9ea1b88f208f5213afc78c34f537c58ef21bda277196594e78923fe797aaf1e13a53fa9bff90136c373a865bbbb04f77f657d961afd92f90fb32da47d73f700db219308a355a893d23c731e69f519bca9fff738dbcdbab64afc76761ee4df1083e7291de5acad9cca7bea7e2baedc6d7fe86f1540b50dfbef72dfbb81f70cedd33069fa831f2f8fe39bd3f1767f5ded853679626cd17e6fd81974947e39062b2c79ab6fd9b7a6987c4cddbd7b29127296577bdaf58a6fe0ed5ee5fae2755bd56f5e2afb077224efa9ab5aeb39b477d6e9cf9840dd035ed481eaddc08a95e6510874201f6d7cda791ae1bc2fea19edbd2dfdb2a07c82f70e58deeb5bce8dc5beb7cd335d7fb80b46dee68df15f727d5dc9fcf7bcdcf553d4e41c5deacff760fb9c7f594ee51b63a8eeb9ff193effbf7097b4cd085ea0651ebccf5b7079c33685ef779ce8bc2160ae6af77ff5e8b5dab3aea59ad6f81d8a97fdc07d43b918e5f0e7883c4d11853569f9ef456f3bdc477f2f3ea6f3621ddd8624cf651698fba8b29f2b7a5fee77f3ddf1eb4732b11fec39a699ca8f5c74542fef9531de1c5b70875bf07eeb56a5cd663d4e7547d0b2af6b160ce7a57dde7b7cde74f5a42566e12df5b9ae5cf5808e0fb3e54a0a38dfa766cc0dbcdff2b9bbaa61aadf5dfd854e8b5fcebf8a40a4f923d68c69efe757c5affffd3e353d6e1a024ccba9debd8f62f3624478cc2324eeb21f8966c125a5493adfb9848af9fc73db7693566cd8e0ce88362e8aba9b53da0674eb3dfb6ee6fd847ec15bb27b3a5ad394eb7bfe8fd4dbedbf43643d731463fca1af7ed6c86be22b3b835221bfc74de5feb8a99faae52f5cfee0e038aa7d60a5708bcda748fa865782c2b740dabedf194738b6aaee53526de0efd8e6755a7591abecfb3e3bfc72799bce33e4931c00fb26d9175424e835ea733dc532fbcf9436181ff5a3702fe2eaa096a3f0ab0669c7014943b13d946e34c0a9338509d1f82e20ff071e7a10df78e0ca9f682679cc84fa344ee57aabd46987fc7ef87bed7a9ede697c28aa627fc06f967349577584fe647fe67ade75212b72ae53626a3d7d8e5a13eda18b8efbe8799f34ff5a9e92307b7f2ad100facf494098fb7c37850fa7f8bf5eeeb866ab3a829621ff1de955fba7fe251d8d4d1fa4b80c382de46dab3b5b6ca94f02e2668daed8ede0a3130491ad47f89736f587f25ad84cb8b3d7bd640d2bcdff2dee7297d8d7be9fb30faf15de89ac1883407264fdf56fa8a9b14ecf4863874bfbaeb434e27ba3cefc786ea51ab260279849b60b583dec6b8690e3971f38356601daabe24e6c45ed8522e0ce67d057a8e893f7ee6c8f465a134be4a759f6477d4bc1ec453911bb361f5dc5b3be01f67136dca917f8cccd7bedcdccea92ff750352f7db9bbc6227c69b1cf1f7bdddcca0bbee8f8a575b31eaf2b5a9ff229677d4d3bb704d580703eaeb11796381173e20f82b8731962deb2203e68dd6bd6f946a3ceaeb9a049e91f52ad71aef8bddc38d69a0b0dd426a1eea235c0d28672e609fefb23223ec2dd3123fb8ff5a46085dccf49af67e9938e6bdc56e3dc46ff48b2ef92f684f45c2016cec03dd40d8d60fec7716a3d795ffce38c58d4f0c26be2501cde098bb0008d452749cfb84fb01fa4a3f678dcca5ca256df12f977bbe3c41fc7e5c6f2e57af207df3bf42df5bc5ba939529e96064b8b3ab8d337c53e8ca2e7ceacb087eaa7b100cda500f3185abf7c3d65a8c11d22e658e86f9c74633119429f0ee9252a8e30651fcea06b24867c477a066a3cdc05e64ad6351b96f49ead1844c46d413af6c4bb6c831d8d33c7edd77cddbddf9e37d127725fe1fbdfb067f83c26db5160cdab1233e05690c87b611e1dfd6e7d2cef3ce185943640e52c44f0319f98c0cf64449d4d53fd22716a0ed0ae6ce636cd51b5e6a6651d7ce506bc1ff3d8b7aa4b2bde28aa4d8df611dacd52d591a513b5d22f53f86f9efa90bb4f2be28f48e1b84ae540f11b65c45dadce035ea33bde975575dee2f79fe54670a890af837a4ea41de86758a570edc88ec62bc272dbe100f862cb1bb76e2d8e35e4332db597fa5a87c60e8877f8bbc2fc487f1f674fdac82b0bdf4f56d7ee3991df03b06719e8a44709c37c3a70cec54669e5b85fe5387ea940fe0be43b517feb6bb1cf0862caf745d2282ee8d45318b56de1cd6ee2c556af147ea33e9582b9cce87591573643fc38b31eec6da0ecedbea2b5b7594f9fec2d2bebd917e64c674b6ba8f5863bff4a0a7f2ae27367571bc54b5eb3cf9578d2dbfcc035fac5f75a1790f403ce847b4ad3a1219ef5472ef49bb41dfc4deade64ca31412f0ce9799c486710f5da95b616c47ee8df17f5ec4ef5965e6bf5fc4dbc4a0c6d741eab1e404ef9476e513e7b744ba8be003c3ad4abe92456df2f1e8a0035371afb0d395996f6d17ade03a371a8c7babe3def81e6956f73ccf56eb6c5ee46b9f20bc4e9d596757bfcd41fabbc63bbb93ef08b98e4072d26c7f17ccac65c8637bed31c245b58e71ef1c426d53ea25e178f78bd944dc49e6da86b49a1f993e99ded0afc6333bae96f89799d420456851849e4664956aadf56d5b73df4fd6e316982eea33fbe873adef79da409cea82d2dcb3a345ff681ce6febc6763a9f3057ee8ee345963ff5eaa7fe2fd295df938d2dc036cf719fd0fac1e86fc3de6c460dee998473782f20eeeb6cb1a1b53c2de4cf48cd58d54065be7bf201acfc1bd7297bb3689f40cd6bc9106f35f23107497bc3b55b9f8a97d8da8c311f19ac13e4a048fd41417b4e376752f9e3a54f71016bcfbbf2edc6c2f5a57b64587cd67db190bfe15f949b09153651e1b3eefabb664e9ba8bc80c475a5fb4b71afa8ac3560331c91421d5c6becf47a4e599931e867b7862e3c83daff367affc56f9634bf506f51c7a99a9b01b4ccaf8837f74ef15de9fdde7983989354fb9e52cf05f41f575e30cc49ab71f7e0ffa6ecfb65fcded0765dc076a9ef69ae50fb51f728d83962a07d194e23ba975e0f2293a748f35b77dff8a46c44baad940fb914cdad021bf1a1fce847db9cfaf59bf281ba79117d567feae0eb791fa5c77131ad9ee6bdc4315c19c1317ed1695aa1af403ef00a7bd585b59963fefa4bf7e6d94cd590623bc7dcba7f251e8f38c991f7c8434cc0b1a1d8b994a80f639de738d7ad54c5aaf243fd063acdb5d4be2eea4a650ee974434ec1ba8d4bc225cacaa0fa2bc62ddf7c57d9f8bd9bf9c4f4ba7d84f79cbf11cfe4b8f482ef97f1a3bda9a1bc61627a9a571662b48ac620525ae0cad62dffa6add4f916ddb5b60bd44aeaf64c01188dce278917c813c73cd0ee13b5d7ff6de8bf4157b31b03b781759236e370b2c1770f6f85b75478ceaa0e6e14732ded8d4d5aebac45dd06595df4ef59fef27b83b9b82e4680f9d5f99902723949f164df21be5cd7814571ef42cff3e644638ab1db95ef4cfa167bbe1bda8f7bdeca08cd973566719ca3c2f6e9d8bcd439dd9f468a3e613865c4bf6f96c82729b3df578ac9295e2a8cd3df62bb64d5cc7a1bddcd610b702ab1e79f49c7887cbc54d01a0f4e73d0b87224f9d44a0f4a2e0bace98954e71e5c954bc3f5a5eb74a989dc7926720db0ba229e7af4cffb77933f2a497d0eb3afc2d3b17b37d7d27546c73503fab6c95df95fbee69914e595b4a1642ba9cf55ae5d07eb4743af884774bfcf3971ab6601d4c0e4d2427d3d57ee7f939e39e554de154e488d7d043c9fad24dfa48bf970bfbab9b4a64bd2987f5db7f1795cd5c1e4d15ead6ae498cad83827eedb96533c25c3dd48e1afe20c3052b1877d16e9e0f6c4a1d9efdb7adf5d498541f5e5430cf7df7e37f23b65321b92fec05c618b2a275278a64af52826a04d78e1c49dd356e0a3a633e45c64bb7057c13a441d442e9b96381684cd09b770e2363b6b7d20d20895619b038f911f6a8d12f497db608f79a5e5dcc47966838e5b641d9fbf95bb19736b347edd7b9908080b63d3fa966dadeb70ab29e9fb56c41331241da6c83e7ea1ed9d62ed7c9a83fffdbec69c657c3f0db50ea6c728feeabe2bda00f6865a8f47e833f497a58d1a6a466eb17e5d90cfc6b860e97cea77fbc1545dd3b8e2b8603e9ff850114f16917e85dd98f4bcebdd196b1c156a40547b9d23df955ffd332b9fce78b07d4fcf512691e6165b6aee54e0a842bc27d42b11c71683ed935c8896b7952188c3aaf3dd45a330e791e7ff202c5195557d6f3ee8f174e7cfe76e3ee6adecfc75f0eb6df407d26a4c39ed388b5cd8c33dcd0f51a0df41396b15cf75f376ebff209fabb48f63e08c68c6a49953ee1df4e78fcf394c21ae25ee6bcb84fde51af25e2207006863564ebcef7e335df50e86efccdddce58933ce1167b3b281f7f3013774227e3971bf459d0f141ac189ef0ee613f75ae28c619f677e65a366b6207cddcbbfe6e1be469f9a347fe284f03d8d8a5f23f380fe72347ced798f08839291de5f7d435f138f51b9cd9b3e5e63451aeff9398e8335c5a9e90635f8d86eb5cd03f2d9557e7d8adc0888978b27e73bd5dcba675d09b0e949ed59056043388f7f529e67be52fd710a0ba36c5862f87608b98985dceaf79b97fd712a4649a4a4e3c2d20bcec8133b0fef54573c7b2fffaae791a6ca91f374d27c631c365f241b3a66405cf7b12dee74efcaa57e9bd30038c34713b0978ebdaa4bcccd40dc813d281162fd1187bff17aad3effc81b75ec8267bf86cac64ac7217d6f465ca3e2d482fd1d39cc3ec23b37f96d8ef999d83ed238cf1107c964c65b881d6f57be9d11a66c5e623e356efd9731391970ff4aa8dcb5bfb9ad69ce99d40f96537c3cafe2d184704bfa39dae50572567a4cce844f53dafb0f638271eddfc684819e8abf55359209871a14f48a5ce93bccc9fe8af3be246c06dcc32f7b6dbb79676b545e390d92ca461d06aa1df67949ff21978d3d0147756c22a303e9a4275945b58e794531983853fc360f118356d6c137430dfcc476de35bf8471a0dc797f3fe928dc5dd246d0e32e7fa15ef24f835b15ae35798f26b4ee7c16ea3ad9e956d237b2f53a9eafa7f86c76302e5dd411173f074bc4ba964933a3bad8433d2155bca5521888e5547d5e91e14be6b13d8e81bf10ecbb347e52acf4a9b5347bcd8b3f784fa3a47aa9e18c347767e822ffa44d7ca498e74e15f7df91d74a5f8e7002e397df480f308ab20af5b99893c35e2a221c9b15e0b9dd8a7a0833e466b78331eff9f4a17658f7e73cf51da2c64017fbe139175dc7c5737243ebf9e139a6f2a92a6383faaafe8def7f21ceb0d77c2f775aaf56d9d1e463449cfad0136a6cbeca9e5b64ca850cab14f523650dbdfebdee8aaff07a778d05843c8dd22d3a2b8eb9558b7c945a1729345117a98bab8eb98e4b2157bd1233e0c2465f45b6f505b5dc0d6efdd471f9dc46ce1051df89575f6b8398cb56618aa10f99628440f3baa7d511b81dab226f69fc2a78be74833979e6ff23cf6fe2dc35cf2f3ee733afb08ad506c8fb3b2d3c467ce25fc0d1c30e7c07639c2662483678e17ba7b5089cc80ec6d5ee4858f4f3c2e33d9f34f02c2bae4dc03e32e5434786ff43637f5be7ed59bf8269be59e849ad54af11aea50baea537a509603480b74c05f131757ea5c5b15f9e8bdff4ed9127ba71b8216cc4dd795156523cd2cc51ebb57225e690eb4b69906f4138845e5b4b6621edbb72bd678085689b31c46fea7c9be2c238cbb788e321fd2947669e3e9f65707e9434e36a4f1c0ca323e5a4576276293cb507f8b9eb1cd0d7deb2a4a15e94317389c72ea27e69e4611e8d516f52cd8bee1e68cf73385ff931366968e7a817941b8189f3e05d7ee875ad7c73c85168cc96d0cf9136f81ccae73509d7b9f6d8bf5f7ffc727df51dc336421df71430256989baebd1d61b3e6b5d8d3a7f79bc4ec947395d63d210114a7f44e58ab017e68e311b6a41cb3bc49e91affa333136ec6cfaaa0eec18d697b34837efff37e7c5223d1257356af05403dc4bcefc637448d0972a1586abc17da351fcd1c4379f6712e3c0514c7678d1c528a011e32a0e20ef7fa147266c8e3d948511dcffa625c67643a67a96d29b5becff232d31bff018f9b0f96abfc13c8aaa27f9451d9cd7be9e2f732ee4bfcc17f35fe78b34feb3f9b2ce36385f8847420c616d5477be8d3efeefcc1758e3b8071815f2161706e670babdd7dabc530f5b6135a4e10a7dc3e9688c388c6f6e0d698ebd830d09af6bc4b242cca2f68e21e6de14df53b7e78a09698dfdc3f704ad93e942cc0cf89e918f732a47ddf83de2d5de61bf09872a1e10be8f1cc693c2083ef15982d0086ef4ed732350733c9247f4e53087d6ed472ace6ea0472c431d14d4df480cff9ab4feb84a2ba5cf1bf995c1888fd3167612ab1876ba267c48b6d47e27e85605f642a8fe9faf482c319f3f330933455cb54bcc1f4bd719ea5ae0fef843103e25466e76aadfa29e7b594bbe4e9ac9dcaf9cd08b26c453ceec23da7d03b1e201620df87ddd6b9adcd65af70bfa3b745dc4fa79573587a4f284fbab7b27c9d3b3177d206663db1036ee1d39a33eb0de2ad8b4d1da82a17a0e55176cd09ee85a6858ab1aec3df27fddbb3112c2bb72d4e12dc4ec426324eeaf63940fb5a6c656be8c91b45ec788198c33b71b23e91406c33132c7858b3d9bc6cfd7311ad01815c6cc7e1da375fd324659e00a577d77d6f9e838464db1c5eb9be5ebf5bfe8facbb6797dfefb9fcf1ff0857a7e06eb1571252b7a7ed37bb97eb45f37ba87e0f2c7f37b7f3cff588c4fddf36f14d60373b80b55df53f5def18ab86ad3d1b8449f62b977c66ff73357df5ffa13a8eb09d44652fbf63b171b03fecd9d728b3d357d3cd2d98b0bf2b5faa180de94b08e88fffaf886b1f2321dcea936a7fb01ad336217c30b6118ab36c7baacc45cd6e87b5dff043e1cc815ffd0b9628bf4d4752df8bdda35a8abbcbc97c421673bf3976bf90f3596cd9ff67ca3b15050bf24fc8e3aee4b1f17ebb825584cf1383b70e7647b1f6d7c1251fef29da567fe724dab3fae8f15d8046ac4914d782595ffd67cd3740ef9914f75d136a71adeb6682b369f98e3079f027cfd49a3c63aba8fdc1e3f4e98c280747abfffd4e9656fc5e4f1ff9dc7aad78dfe5ff2ab1563b52728ff3b7ee52e4d47e35e5b97fdbbb6eee3fba6babe4aefb6e7fbe3f08127a1afad027fc9a326ff2ba7724b715f9e7877813af68a5319f89bfc5e4b23fae27b46bae64d35a9488bcb16a057c442ec3996b80747e9b0cff1407dfc479c2ed19f70a8af78c3ece6b13edeac89b7d82ea9c6314da976bf3b7a1417ac348f1dfb8cb48f1350ade75e405e6c8a5a144a9319af477a2d0fd78b1eaf7720fec295415a80fa7a27bef5dd10b58fb086e883be1403eddfac1aaf0cccb3ef9b1fc057c7880fe7b806bfa5fba65ac39d1bb77b081c57949b71e31a623fec6f1322fd794b141e83b9223dd27c32d6801f4fa54bf931a8a1448680dcc2b4863ca3f083c245bfd0387e75f12c70ea5c311fcbc270ea4f500be3568ae529eefc1a639886cf98aafe7d113f0738207f09381b4fe988816d515a22c0dd3ef13bff043812c1d7779369d5d98448f7239ab9e256448eae39170df1d5b721c6f8b1ed1c62eca961931be2f424ea10cacfc2084f4bc367a5477d0f47399f766bb66195499ce3a619ab7cc6a6984fbb78ba71567b39a37e8d0af85e66096847043c1d9ac4b3bcca24f4a09b3971b17e2ebc9af0725bf4f1a65c1cbf15b6d1f0834284838afaaef4bdc30bac2d39791a1337b8200741524dc9af361e7899d99deffd3b87ba4e52ee83f1cb31739e6dc662efdfbb785a6133ace3783df59fb0199184ba37ab832fd4f1d1fbca82701ca005ea4acc35614dfb037b122e547f8ad3ea2b82feae37f047ea01e95bcab6a1ba7a50598d0f78c7dc442d2e47c623fdfb3a6d7cb4af17783fcfe4fbe391f0ac64c772ebec2bae551b7a8b75ecd86e5acce324fc7e9bab6b999b3bdfdd7e3c637b1bcc4706e32ac37e42f173f0c833873d65a863cd744e7081fc7c85177e21e7c11678b0a2871c20e04fd693e3fb439eaf8b31f57e897347e7f9547f6ca67943bfb9e17fada8ff28e5d07f8f1a43eb0fc44e0913397ad889b7c18130ebeb0f8c0dace88b7a3c1ef7eab07ed2ff8db86069681dc3ff202ef3e5bebe1067b5449e15d48bd2f3274c30cf2f4bb06be0c7dda8d61fb791c2adc48a6b64e4c4757356b517e301d36ba95c5e021a954ab3da072dc08011bf06c5ff11e42403c521aee22b16579d0ff2800b9289f785fefe27df0bcab7e5a2b7f512b9555c9c67f85d899fdfbb91264ab8c5f74b9b7148580671320073d0208fea26582501604e65a3b9c5ca5ae9f3b8651d9c4acdf374eede4f0207f4d9e1e6ac8bdbb3be9f48b494334bd29b8b354fcd6b56f89aefcfedf1a8f58dc65eb6337af623c7fe9734a9ee90d3fd69c2f30efff6bcc787e7fdec9fb7e99e177c7c97b4175ff513ff921356dc15d7d7f9382d6cb2618db5c4737abd6761bee49115e62a4af2c3ff360fcd662a7f2255ee3b8fdddf577ed7f61cf4261207dfd5f8226e562666ff3ac7b930cf58577455adb9dba70ce35fce1939a1e0b6d6b298063a6e594d8fda574ae2cee7618bc20b4fa9f0ee51ed11d7b2c25f55752efe79df6e9c484813edb983f5bc59946ca80f2f03fb41fe8f40fb051a2964738541fbf4f9c4efd4c31775b6fba63497c6c0c505fa9823875ba6f615b01e1dc35aeb629dce0f1aee25701de5450363966e8303ec2dfe3654fc6a9513a7c421731a88bffbb6fb42e31f952faef0f2a15e433fbfe2f86677cfb816c19d7935d55abaf5f34d38fc22c55c5c2aa967e650200f6368cc2e942759ddcf0160257c9bef7f519d81e5c4d3950a5553e0d6d02b748f9a795c35dea9ecfebf71fca43eaf24d59c2ecd7cda8c953fb5db7c8bbf5cf3cd08bad8c87fb8e6e5cda84f55174b9bd1f50d3126f8be2daf3d8b9be05f9722304aa3464e49ea0dfa4975830cfdae1f73e3277062d9fe94f822cb44623dc9b7ba3145bf6646f5191c4bc545b4caa83fa87ad3b83fc4037171ba60ccc30ae3b7aaeb48154fb001df92b615bb508e5d1a21606811b311415fb7c7512f5ee2fb4a0371297ba755362e3d7af1c768f338ee955063f430eeaaffb29bb7e7c887310a3b1badeb6433fdaccc253e78cf66f04c9fd114b49c1201eb304f8f6fc89348351eec49eac661e44435f42247e0bb0489eb7f27e063b27037547b712486c825c5e07dcddfd86fa8e2285778a47be6e8f9f130175bbe6bae3169ebd8aa27aadb1b6755ebab9c6f2c0e783d0fae378df47594e620acd51b079c831b1ac8bd81dcfc39d6b322ec3fc67bcdf8fdc6783af4855142ec67b0b7a20e3e43df7bb547897ace7d3888e2277c30f18478a4cdd7f9c6d1fed8ad4d881726157059109e7c4bfa059e413aa3327384c22959b7f11aedbd6873ea0b9765c34f4be1fb8a2f4763b4d88c0941fcc3dd3370f0d771cf378683147984f01963ecf348788c3ea7751c17f5ec5612bf01bcefa67f5f69123f4d38b9a18e18239b765b79038801c7c8db811cda15f1d3c53793a3965af7dde22447ff36fae2bbc3432dbe8b539caf6edc39d4a626189bbb2a2f9d3829f2b60df9561ea0d6dc6311c36983b85faf0d6bd2231046126b2dbf49ffec23556f40dc801b3d632cd8dceafca411f5bf79cace242c2dead9006bd14ef77e2a0f98685da07d37f794e68240ed2159cd28bf1d294ea8d27ed20c543d4447c2bb7dad7b6c08e3226cf956ebd552cc897ebb7a2e3f27bd3983b4e89af1dca80923fca679553f4690c3489b45518bc19ab0ce80cbae8b8949da445fddd82d7b8e5b19da1bcde9b69850ac150e291fa37d072bda57a0bf85fa64d527df693d64c6b611432e9936c13ceeca0bbe5702f914759e8dea5827a86325d5bc229e25c4eb00ce5916ab49357d8859dec59e1b11edfb2a3f0af9a195819a9a5e7066588b5989d903365de87c14f9cd29e145b6750bfe6373e07668608d2458a5d514fcdd0ab506f3ef9ce2fea4bc936615c4af9d5feedde3bd3f2e12a6d666288e9f88cdf004f51683ee20d65e7fa24ee82d40aebc2ddaae03e930a6806533e31a303795779ca97995c9b7d20bee7f7f1ec5f1780c0d15835fe3267701a716b910cf2a0c00c46e9366dafbefc0fb5b203fdd4a043f0ae0007644c28e4a4b54ca2bb7fd5372476d4ed2714ffc63f412b7af26b836c4cf7b2106afd774172238e5c66f9c6379e7f72a1e9252719c289e0593343993ccb9235f1a2b6ae23968723cee847bd57ce19d48c73550be53c25b8d0bda9dc72a372afdefeebbe4c6237e42fe78d0a1071b4e9c7c9299156a028bc4a79a1ec53bf65bcfe1f99043bbb6650d5c704912dc63e20eb08339f139204fc7896f71ed8bdae8ce51efdbca3b72034e435f61a865e905c395f713b4c5c02f29a8378a6bcd677fdcad8b24f1c7fc7ecb79ac6b4c37be155fbae6f8314ad1265939f162507d453656883d6282b858b73e274e1776a778bf1a12b79254d8a80a7d832e66887e74632cfa7e3739b7365ab7b2405c7fda2c695e18e4236b7bd356e3952d79afe9593949a630539b9ecb5e7ed2b5b4c689cd0eba66bf8fe8bfe7cce7c4716b02878879e7addc638f6aa2ee633a3643dc56928e38f99060afca56e7bc76c73dd909d606a89376eabecd7b3a290dd55b9b3834f647be0f3e717dec68dc0b8ff04cd541adfbf4e8adbca02dba3d467806af97d4a7a7f7d0d7dc18c62d880ff7d5dea5fa33a602e77de5c031f9456bcf7a4bacf182dfc4a91fdb1a7c252af6961faa362b10339ed6b447bd179d8dc76fc80468fb8aa4a21e7fec69258dabf3866c77d27d6b1ff2d4c224aec9c30535da742fdb9b4d3d1dde4de16fb28d9bef4ce49b517babcfc579195a37d09e408c756c3a6db7cf600c38e5e25ca05f7ba7bec445d680bf2120575a194cd7c5728dd9c23e44ad0da379d67ffc8316e4906a8322a9aee2af5a90acef15d23d0df47dfc68bda7dab2d267762a4ff753bc97ad04dd03e366305c6bc0fd6aaaba2aedd1c2d2b1f27b612c897f4bada3281d8e171263affba9bb2fe382898274b0aca33ef74dd581464e04ba50ddb35c749c6a87ddbad928fe1a97f86f475f60f7982853aa9d349a1f869e354a8fe395b7fce319a86e9b663aa6d4cf1067c7f19bd6a4eefd8c328998dac75266f49ae9037a17da870e7fd987141ee461cd915ebcf2f1fbe3c0bfa79e9df04e7d103f0d5693965a7e245e9315e6017acd8b93fd0658db579fd990f4b7bb71b9a874bc50a1c677b797e91ca9cd8658afd9e17aba86949f85791513776d897e42e42f29563456d0abeff7588a1ed7f3d27b0ec7aa7b2a4e3206d7567bcb6709bec8f44547f5b8f07ee39aa94da175c7b4d6cb9130e155b6c1fddcb8accc5fc0fb49bde4ad447cf08b967d127c621fc99e6fd927f15401373d714237c71073d2495b1186e1f17e2d7240ba2b6fa67573d3847284e71ab9e62fc4ad056b4669930cfabe31ea77ef8e573940caeb650ce7676ca998cd2d3cd57b32555a8ad8a7554dcc77e27959d988a995e2d68d1fac536ec0bedc7c6bac82bb9981bf2737aba4fb6fc028ac95c6a4c201bb454b9afde68dd672218233bfdfcccece5722b8aa7b28bc296f57d46bd8468784fc85dd886a553f56e227e28b0203f1c74e6c3577d4d04ed96e83cf5eda6aefea6c6d7adb0326bfdb139b2fd2999d5b47e5571622ffc635bae76df9057db7aa36fc8e316b80b1aa0ffa130dd8fad43f14b2d74f452e9a08fa3555aec65a085dc3eaf62dc9d3cda4f422d02fc8e49875d7c2710f3f680d9f6f453d78f011cfda86a08f96977a8c3577b785ebd911f00eda9f50fc8ae33361dfdf559ef7798c94c652e7e72aeecd8f338d7dc6ac8dd6eb50bce46e7e88eecfbf45e96d1c4e70dcd3665c8910b98f875fa057de1c88af796535786f764ab40d445f2dd53586790edad057becda3d7df966a9c7b6e893753f389b8f45ef8fc789db0e5bb06359da5c1ff615d8462666a7e6dcb3422caff6f1d9a7f18db4bea2dffd6da407b9fab182b1e796512692d6585b150b1c1e102356569f0bda46b470b3178f43354cea4ba031f6e646b0cc457853d4e6986fbb0feeecd8fb9e604ffb7eb86378d97c1eb13cf91a4dc851d10e6e54cbd4c4f7b48ebbf3dd998d61f577bc4c98bf3e5ff70ce87da63b30d9e53a93c3f439b90a7039b30260cfa25baef61609f4bb06a2bcc9fca2b9d13b55274fe70e73b3cf86443faf6c5c748f1f04799330ef74c63ffc21a75c593c65279eb8c8d571ee98f5456143fdb87070d3e1d0b26f73fd748847ab891e7f731a35d7da156e57b28289fa6f3469f7ceb0f485721b44c1f63c533f3c2c7f31962e11ff7e91f21ea0427b1aa99eff9dea15e0583f2868fb1acee3bd5f6f0afb6608e31ca5b6ca9e3baf86fb64af5bafda4ebc9c93f5f2716bebfdce1f95990a5d35cfb8bc437ffd6faa421390c9fb8c864af57910e492b5cfb6bc09d612e2b8d7be97cfb9faae77dd56cfe56c3014e8d9d79ff8353c3bbe237a9ef4f5c2fd671fcd6069467ba84cf7c679f7cbbd9d17ccb9f780f36e37f78e6806795bbaa837d089c0506370ec384703a54b312e6a5445f5daada6463f18f7308b97395779ae7aa7ea56a97732ecc8fd08e1087a3f02f91dcf32faee3fcca49a4f3551acbc7fd6489f63853f5bb54be61cee58bef7eb7cf9c378e57268c6a3adf54535e0943e974e746700f9ff9040ed134a46b7cf13d71ffb30bd4df208e7e39c788ba589038ddf6019d7343acad538ac07a3e27bc45d392cec909db2c6cc950b3ffc7cbf12d6f7fb59a33491f5fe1f1e1edf97861f27646c72788b1248e74ca83524e3a474ef06621ae94f7ff2c289f668d4cac7b6d12e226af356e82eaf45bb4275ff0fea0c54679c254626fa9115c11576f7285adacb0ef4a2add2ec21974fe45624521ea46426e500688d9039ca490b985761a7d9bb358d550df90106fbfcb8f9189fc496a9c42ef182b9b2b106b953460df0def32278c63e61367ebfb5a697174b11af436c609f8d211d4633c9e313ab6f36d143622819eb11d704a980e37ae5f74edc46627c26dc2ef8d1319c74b011a20aed8079f64ffcb146350610e0ae0faf253d739d11c4eb4eefecc56f503e8ed1aae28fe4afa9a7d083dc4f3aa9ef5ef199f296f13adb611e4eacd03e6d32468ba184793b0ab29f45a415f758aba08d2bb14c0b974485c36663be8f98e50c78c7a9aa509be9d245d8eec486be40b7010e50d3009b9b3da4be268f85c08a551e5f3740479212905da5fd2d939a8dc37706df5f8b93fe3c2cf755f4bb9f01a741912c39ff04cafddf7729b73d25d0c8117d54f3c65efa49ca8bd4c2abb83f9cc1570d2f7f5d4bfdf7b50d521defb6af1daf7579ee666ecf310e98df6a0e10af86ca7153d637cfea6fcd0bf3fa3d93d63d6f389caef02f3e19a6306e3bf64dcd967e990d60fedd9495a6bdc6e316d386a3e5c4be0c777d7a4419884e48b32b0d38aa7e68d3f9cbf76734e3cc0d4570b7918b5c73a2b2fd0bd61897db0011bc8c49bcdd097fb79096b980351b7e74926d65adfa1c4bc78d0e320e15fd2f8df56b8972ef1d99981f94988151c09f3d35d3efb26dfccf7faef65f85319435eafa86756085aabaef4a8ff0bb4fefb6f3ab4236d77d5f5f615721902bfcd3f3c2bc683a578e0007df83b829ef3a0ac951ee88ca7439fd660487879bbba82ee76b580de0653b0e9c6c71a56df07d9f96c593ec3673fc6e96dbc80fe32d287928b2cf77bfff111bb7d557e37f19795d3087164c69de93c9d6f0af2a1d34d48b52fe425bc56de95388755ff45a8e6b48a494e21e62f12fb483d4d6abc81d72257f9b6442caf0bff17d4f4b38aea0b2a1647ac1ef60b34a487f31e4ef389c6846fc32ff00dcd6f6e8736eaf7aafc740cf77f8bb3067220c67258517fb87518466a7c187fa39e31ec1b8ed2597f9c3dfb02bdc7eac0f74a2fa6415c51a6785d9073b9c0b9537ac1406bb2e0f887d67081b9de31fa0426f6baa6c845e9467b4679eb24b436a4abd2220725f86be4c359479bb822b107caa0de2dd1b26f8875d995ef99c2ec46c2df93e68068d901f264cd953ffa6730eef712bea79b437d695b213655ee718f37f2b6f4f573ecb18e13957b07e68e751ce7da5f658a770cf1b5aa8fb2545845958b56f78a416fa0857a957472d28c97ec333796ddb9a4d1f4c6930d6952bd33e4f891c98621f7dd78ad797b9ba8cf5d2b8e384bf8d1893d6318e6c4e1f5efdc1eaa8e335e4fce88af3edf0ae447407c377204b003df07bdfe19698e21772af6efbb8517183ae76ccb2fe47f9bf3678e8571b5d3f7b3ff723f850d965367cc32e78907a99bf3d0c314dc5063d2cd7737adbd5ba5e777f0c5d867e9fdfca307b2684ae54f830e7a6872fb78262efb851f22476f93901e4861e035daea3346ad3bf57dad9b1ba6d54c6b43d657aa37283e92f56418fe710debf730bec37caa9456e9ebef8721e2c793d26563e2cc942ed3da0039fa44323ddc719f025e832c7ae6359092eb7eb56df4a46f160bc8abc4b5247c41bbf0b55d1e924e5891f9600f156e58e323dccac37e67897dd3e6c6a73c0c7d5f4efdaa6aee3ee1185cc23100369721decedf22c6750cb9c2db17df1da187343d86d1be19c07f9f4301b5ed4fbe3f0e2897d1f791544e51df7684cd611e7372e396529fa53a2e9173bd0766cc88356f347362333892de2fd492f85dc57486f7c56bd56be812066f8e6b391207f0b153f38879c3a0406d489c0fa27411affd476e3b3f6b8dcd2d62bfa53063d28b6afbdf9945ba29d585d5a7bebe9534e3b537332b71eae6d117f5f9e54660a326834b1a44d5d427dcf8b104bd5a6789b8f139e226623bbaa1a6efeca1b7894955273dbe17195da3fbb7513d6c104b68bda77941f791cd69e52d9117347cc06054c4033baca8af8938324430a0674bd3db29fa50f3f904fa388e5300de675218b33bd3fdfa414c7612f66ae9627cb279e87385de86ddcdc29ea2a4501c65cfcf597aaca5674a33e746b9e0d5e436817d4bf6bf434f92bf100c6c86a1fce16be43b6eb7175622a2de3d7877f53dbc21379dc1da3b9d72e11f230fbe5765ccee6be02feeebd7b80f2c956fe199dd5817fbce1e9c9d37dd6fc98ed4f726d203695e5c290fc9dc9c74624eebe657774f27cf08e3100ef9ee40da18c9c3b10acba2f6f447ceb044d525fc071ff4b0f6d10fb2cc16b04cec9bef2af2b923c0d6c894ffa185b6a16b058ac71779bb52d8338fa44717a743c481535d7e7309812f6d93503d0139d7d3ccb9681db8fdf19dfae7897398e64b8eb8cc950802ecc374999ed7c02195eed4dc53b589c534879e3893f8407c9738bf103b84ebd77752b772e99b63afc6b5c775817e6985b86f9128ac8bb27f58cf1f70e2406c4b9b6a69eb74a4de45cae33e84f808e28c1e5b7624ce10610a9c3361f7adfdd060689fa5aaa3c0336dcc04740b6588fca6b1edd3d86d56fbcd1431e237d2199529f2baa4b781c6d0da88c9a29e50f5aff2c5a7b46eb006b62d2723c2d27faf3ce01058889951d21ccf8e7a3eac7637c4c6fcbc171057b86b2fd8132626cf2203f11452d9e0ec382ef7126d4e78af944fe1d9bcbe1dbb73b8d173c824d6f0658e34aa06b0caa827463f9f93a48da1f04489ef698d0debacdeb91239daebf0ab30344e4af63184e22ed0bd3791ee3d070ebc38233d34ecaf9a9cc7f30973929d398ee3c7632be414914ed2fa5eb1afd4b749bc91bd46dc486104a435821c87e60f6e3b367ca7dbfb3aa3bad1795c02677ec20ccaeb32e2ad685778bd386d72ca75028f5ed5a27f017d3716c6522970aa46d6906a283960873705bc7f7e5731aaf2a18223e2e537a10bb17867cf10db04bc9456fe705dd389ac5caf49e433c27e1ae91096b610417f0fab51b50a2ecbfbaac73dceb968eed198746b3754f36d490b46734a124e201e118e9c742593627cc6f971babf193fd18e0636d8a6d0e46d6e93cd5be1b309ebf0856b7fcabaf395cd1043cc45b9ab9a7d23d74bd073235676e5013f7492f97684bd6d85ce5d37847f98aeb308f9a4cd0bae533fdf9346b4a9b8f25007e807be47be1a8fa89664fe791f5fb2847aa4cffd73a423fd3bd5b2e9df951b90ce58cf0d6555c4a92ec1ee8737e29514d66f1a9379f8416322af15ee83e83359dc6e68ce25c5078d7d69f463ef3cd800e08e5e88db0fdd9fb28fa88e68b1275e7f69bc70edceb1ff448de55a0441a1729ad2e106d6d50c5a57cc61ae1fe2ff73c1ff837f63e17f56500f749133c3e5c4f16a78d712f29d773a0fe6b8c217a02f286e5a1f7ceb87d0bbddd9e4d1678cba6c6fd63180dc00b388530cea176c317783b1ea9951187be600770473f4ff57fe493e08c9d707be5ebea6de21897db91fd701af7d97c7d72baf7d9f432eb0fbdb80bf6f2dfe7bc1ff7f57ef1a5feff0b7aa354cd60a430858b844f8efc2fd455cfc0a0b16a57d0f0fec49a199e07b626cd952dfe3dc080e21e62c52d2a24aab29d46bfc63081ac12e33663643bc2ce9b755de01f4c252f30b7a19d998192fb87ac5fdd96bfbc92437703ffea85cd48710e73684bdca4d50ff5610864baa5a9d5f78c129a4d83d2bef587762611b844a0333655ff4bb400de9aa66fa9cc8162d69aaafb6a8116f45c310fd8594385bb3a59e2ba4db2090c715ee23a80e45f99cbdcae7d6f91bd998ee9eaa1f27abc88791a9d2ac63776e1f4807645ab52c843e655f730cc92cb712e51bc93b6f7f99da46926e97650ca0b75ee9405c98d0f1b15aaf654b7d98c41fcf9ef182467d431cce8f48c59fd2a90c292a9b6cf7e81002fedc2feba0254c864c6a3b46cef975b6d1f841cc8d28ddea827a72e0d8beee24ce43c2fe886c831c82ecc06d7f48f5d7ca25fd13d493b12bd26d7c2fa7d502744de43874733c4e0c19e145eec4694def60b4f45c8b7f7daed3959e2bc98ef85ce190efff9be71a3991b571cb3607ac7c8abda7e9ad557c5b09732335efa4ee7309279b37ccf3032f15be4721482fc91f8486a13028a0b75f5d896b3c6f111b9a9ec73a575d1b6a1d1668b7ca7a7667d86b28b2dfa8a110deb8551b09d52875df6e80b5597f486bbdacc9afd5dc4b766100075f9a04b0d6bbf98939ed3c6143e2235eb52c207c4765dd700ed603b4316ebae7368e6d5225880534a314f7131587e706ab9103d1493f882754f946d89fc1ae05726f46d66608be5875e73be392dc1fb521e57785bc59f9d639e0b7df201e0ffc69f07ffcc20b6f2fd7c43985789594f57d504a179b217fb571e9c64de5beda19f02ac4a309fc7b9e88b621de8e6931853e80b99117ddb96fc6f2ce41af4f9d131a2a4f768e5a365e626daf405f520aacbd78c137faa3398cdde186fb9f9326f90df205d581d721f13e631f2b6aa58a6ecc21a7bf26de28e91be85fb8027806d4f7594ff17793df196a2fa7315e7f7f6c29d6476d8c6b28f8bfd95ab28f17e65d015f65ff3212ad2b17e13c647765b3716fa2b12bdb2804ffb33208f310d99e81b67aab79ebed596f5fd53599136539698cbb1c6b2ad0fbc28a79b77fa0ddeeae4b7c8fa141fd649b2bd6d332b48f0ed6b6bd70af39c987ea9d948d217d3e6171acc3313b272d1f0fb45f1b77a5faa794df75efce256de405d67aa4ac699f017f744b7b65a9debfcff7107ea91974e306b820b5877d015681384eab4fbd17b6b36edcb0077e36a4deb86a9f2f286e82e37e516d6acab6dd584ae213d4fcb6eab9a02fd20ac5f554a8f7003e8428cba745ffdc03fddddb5a7ff7b7eebb3edc93b403975bd49e4ed898e278bce706f97bc6cc837a554e7b5f53621d38384bc424ac1ae4d6d63832f6cd7767c29933d6fb0f47ecc9f946fef6732ceb7b4ebcc784a34f8701fa05e738adbc950d1cadabba39a85827f38315e995a7a06990539d50d9c8c6e23bd3ed79cda15f1462aca14bda17457dd4dcb1682f65b57dd09511be5f79c11f397c9d47cd9a719c365fc8e3ed60de93c6d7e53047d4ff83f8f9eccc6db4af06f2461b3e690738e1d459c07b326785fb4c4175caa46eff33ffbafbffec14a5e7c71e7337fdd0feed1ffeef83dfebacb7c1a3dfebc6ee2f1d0b016fdde1b4f0822e263885f82fabf15ffcbb3402854d50eb4d1da76288532522f81b8f8f8d6e8c144712f47b79a69318bfef848596b8df852de275246adadba50df896f0c277578ab372dc47cddc28618da6f51deab4a1cdb7a5457b2261d863ecd35aa5e78070ef0bd4aa819e64f3933ff7420d43e02c6c294fbd6cb5af5dfc8f7ded33137ff8dadff4fffe7fe86bffe0e6017d6dcfd07c7f466016e46725a181b81f8dcd5bb99aa7c7aa745fc9f100f961f9c9f721e09ce3d104f480bcaf68371cafa66c8e7565b768e91a9aabcd2d3c4e3eed216a41ab3637aa6fbebbb531e52c318ff8703e71bcb865cdad107cce4f3abf107f9caffc1fb6d73d289a47aeaaa33df62b7cd3f92b51197ceb53efc3dfcebf2fa047e9339a3a5eb8af16d05f32a2fead21073e18b7aaff031f2773bc147c1c93f2fc2b6366925e4a64fc465f361852ee446411fa362cd69c99920dc8f791eecc44ee591527afbda8281a71928677efef111c88e331dd37833eee6e1c6ee58f3ee534dd1fe977c2b12b9c3dde63cb1ff7b32c774b5cdf49fcb35b735bc57fb105feaeb5b79943acb6998619c3fea813e08bb3cd4cf1b866d5ac12a1b580bd74104f411bbe32b8cd774343f1cba4233fea6c4b52793ceeb941140716fabf4bd2086a7e1346c1d69a542e833847d69ded9e8684a7494b8a2dbef4fcdfe6884dc4ba78168cc3ad648f314eaa624776d4fdc4542b4bbc3bd9867517a320cfa0c6b413fed53a07a41b5700b745e79b63fc22da35e5e5d39f6d4cdc7efbea4438c385ebc31e6a1e0d869867610b8c5198c01ca2046d34d34b91178167c7ece15b5fa3940f52f0b9cc482c3b1b7f8f84b874eb3e31e0ffa9bd39f9758bb47fcac8a7fd269f37d731c84f836c68e912bea6ba753e94da3fc0cfc57d867a54aab6f7adf9df7c6bf2a79352fb6595a9aea9d635d92e36c19a12adbf0bd9eec82ebbeb12bf30f166ca75e71f407e18f37f1ee695f97d4df8255bf97d127af7d0cf4df231ce27bbc2feb204e6d4940976213ffc9f7c56d43a43dfbcfad1fbb8eafddfc93f5e881aec7bb209165ef4afbe72686cfe87beb27789d38d0bf15e738cb2c3df7ca5338cbb18c6937ecf5ab814f394c33ee6094d7c2fd2debaa4e3db3b6a36ce0b8fb4d43726f9cb611b3c6aebfaeb170d2c21b556e5b904ce4385a5ecf378e790a31eec9a7229f631d4beaa17185a83007f5f26e10b8ee2f882a3c0bed0cc1f9709f1181a03c29eac9feedf840b75cc19b80761cc481bf4425c9d6057cf03defebe916ff4b7e7cdf7d1b89c06dee3184809be73acf318d86749b968fab7f6af0bc4b0623e3de5ba06299d48e617fa1d7821584dfd3a80b9deb80fb91f3f45cc0661eee68ab71cea37889bb40be4ef8a419bd75b882be59923ed335a9143be31e60303a5491893ff3a52df3f159dcd0eda35f6d754c42d900e3107e3b50cb0c47e598777e6516d6f304cf4b5d47e3158fec9c545bd58e6cae0f48c2ae7b59efcc9f50ab170356653aa8d430f8bcc9ce5cb18dc2be4228911bff630060971a64576e45636f67964923081d4eb4475f3047c9370c86dd27719fde8c603af37470ea3c5538e1338881edfebe5387f80bc1ddd7137dd3747c7d9d4df88b9498853ffbc9e3ecefc518146e09489d997c672109f88241d9cc0d17e8c30e85a1bd5f7ba33f7898e3f946ec28911df08f67af63c6c25f95ec7cad41afbc001660dec17cead17ad92b0e5bb33611db678afebffe15efeba9ec198a126ba043c8dc25690d6e712ea08c4097a2ab1d69c92f677c6163477e4833ef812fddf72db4c1f6b21495fdb5158c7c8aa87587fdbcc6dd2713ea1de48aeb07471c2dc15dea7320307f25df5b3065e7aa3da61a038a152d04f8e6bff48dc2c797a7c38e6dcedab43e2d440dea5167246f2c4ad8afac0a230f3c7c8f9322cd13e2e558fb477117504f82e493cbb4d4af645c5d69ece23a979536c810f88f7ba7cfb52ebea6fee984bbdf26d7407ae1d8d751f40ee4fe91243bd1ee328d156cbeefba499332ef60d7faef73837ec59020ed1f83c46eef52bda6d968e01f78ff1db16725e92af5ca9fa2752b9b915c079dbd978c867826fea2e559ca074a5d51e5d7a017215204f9844be2c13622731b99aa2dbcba4bf5c2592fab71e73ac3ef605781c397f2b11801f646dc6253e53646e6e4c7a30e7704d22b72bea95470ef6d498bca94f84e1ecce49ba779e8aee391456b6f3cd622b72e95996c29f77b1cd4a619b7dd29e19d27a7ae0101ff2dd7988eb4b962ef6b298f96d81dc08321de2ef2c5d4c23f56d1271f8427e8fa6dc435e274af3b68bb11ef369c594f2968dfbdc7bdffc60a4c51b9fa9af350abd19e44fcde36741fc86193b528cc44087a2b37b77863c05a2fd45d8dcfefcb41947bab725f8a66b45e9e80beac97210b912b9d57c7f3d25ffb7d957c08fe626fbdf14b3f815612fe2f301bfd162bd251c7e43fa81f752fe42be9a6abcda11ff8abc74f74f153e33b82e503322b6ab015dbfbf7f6d11ef64d2569fe09ffbf3bc25fc8134428cc14363a6f881d57b65d194eab2688bfa674e6606d62ddec3367aa3be79f4edfcd5147ca72861e342eba581d621c49bf9f18fe734a33dd3f70e88877ece741c21919f89b4869baf023919b4ddd5b90dfd4e9d9d87df5ad2fb9027ddcb10633ee2f5191f7e2b337dde7d653cfe169a5112dca8f7edef76ba71226be816d6107a508903363e9fa9eec369af22cee3ccc76f5c7fad48933671c6d02bc10e7c7ffcdb1c6b175a9f9c2317253bf17d3f1ff4b74b4714ffe725d626a3f4362e894f4a10777cd0dd47f77211568c916e8b21babd71ca04e9a637a4cf1a14e98dfa26f6fc8e3d2a467058d5588f88479f18333fbc4365afff987b95e2b7809e1735668a5f61919a14835c48fb3dca3603dd8b6d3fcd1995ff8ab61b46635590664412516fefa51206eaa8942dae478b5be689fc87f5aee1afeba5f06657e27b919973429be7831ea88a51af95fe3de87fdf8de8778c8bea2fdd63a8ec6da3f93ea28c5fb56f0abfb534b7a3f4767bf45bb930bf745f4e165c5f7ebb95cfeb4bff1627d2472dd47b4938aa7834c01eeb39e44b3c0bf0fde2c2b7794b785b9644d84f38bca00f394dc7e731d59da5e25321fd3cb55e831cf7d678fcd7b5e3451f803de9c697628265220c01bab20b88fb46cbd29693a77d3d1d828f6e91ff296f617dc21ab1435a7b06dfe763d0f18968dfffe4fb0a75cd1dac93f8aa2e26b260bcf60571c127106763fed83c7ce5c42f7e1fed91236a49582936cd67e8239dd79ef2f5e442cc2ef2b957d0271f3cacb1274ef3a03626d6d312cad997fe6f1d8b82cd67cbee7c61a8fa5bac399d5ac5599540ae06eda2751b171972a68a9191829f879ad6ac2e24fa4ed6718979f9cfb9f1133163e2ae31120d6989986e5f57b901ce57d58bd4f8fdd0bd5ba9d6d08f24614e0d85fdf5e706bb6abec4bdf629cf885bf42b0f385685f9db8ec7e89b3cf3b669ce8ad2c4e727cccd9fefd1c512a6ea4b13becba97691de0611d684545f9a0f639510d6177d4aacb7312e85cdf78d1d7d200728f61b112e34494f033dd708d3b08da8d7ff4b52fca3e36ae2d03e5958cb49209f3274486f5ceba9c88a6c83bbf2667d2cdc9657f1f23dd9dea15e7bbb7ce55813e6b1807bf9a5373364fcfa0d6a4b7ea0ef087a41493aad1684db86983838a21f7dedf94f095fc6f6f89e0923dd33cd4dce2cbe6b0ea8e5e8305ffcf11dca76e3d177c84df2cbaaeb23a75bd2ddcf08be98ff0bf65ce0c64b9ff9bb9636e94897ad8cc8ee3e685c38c2fedd8a31e8432c52d203052e28cdc19fb12feacdd0cf637353f3196d7f9b426324491fa5be529f7262e747e22b5ded506bae6dc6454bbc9bf25069ffb4b4a88ede7f77f689bdb0aabf9d62ef520484298d2a7c2e696f20de123f6dc5e727fc7968f0afb2f1fe659c7eeb71aa927f1aa7c3ff799c124ee390d0faa9b632227cc71b7d83947deb583c2d29967f672dc3f70ded5284d8a7c4318fc92c6e1974ecb6d857e42b0d683c1eec5ec2542e45f55d5d137dbece09e4a5fe4ecd9e9ee5f1fc4586bc76a2baa36feaae6a76a163d3f446d70a16942feac6dc205fa241dd1a7fdaf73e86d6c3b7a33c10e2b5093f4efc2eca46475c7a669435a1e693401c6c0839b144e950099f1722841a7216916ee90c79345d9ef5da1195473125f537487cceeac0f71170869a1b936bdc92d2dac2fe57a8df8874093de04985b13ddbf47d8a9553f8f992f223c40b91a4d7f631ffcaadc8242e0f69e7df4f7cc1d6705c2558f3ef9e79ebeb7c31700cb054cfb9d43c53bcb6da9993073c42e7a31973fa5e89b8bcf0708cc309720ba7e14d734bc4a831bb5d5eb43ed07df4a80fd4edd183b9d62daa5fae9b8fdfe8f834bccc5f7839f8aeda0bdc038a49153f5dd70b8eb9897926eb48c7e175a37161e1f15d3cf872eeda0bcefadc74f8726e305ee973e5958ec367b2f8de3f507f78b9dbf84f635807373abe10c1fde5dc1f4a9349f390462ff73d8eab94ee7b1e57bbe7670e45705909cd934db8349c03b7716955a4a564e488edc3eff3cdf77a1ca3f5cb5814de8cf8b533ca0bf4e735fd79bbd7f302e29e795fef9ee6c32ed4f7086f0f631070e97ff26d40d79490373bf73978e56336a9f6f13b9f291d8dd317fd66ca13f194011e4e42bf0d3382549d936cc639e4a7769d9f5f1981932347713ee18ac33f4f6fd8f7d88c974aefcf1bf0068e6146b0547164771dd07edd1562a63401f475fcdff0777a84eba4d15661cc5396c1df413a9fcaeeef1dfeddc0df7e86fd96e3a5c2447816dfc1fb3011ecf9c7edcc6bcfa067e12943cdaba3abc62561e36e1c562270c23ac06bf9e35cc5a0de9dae15f6d7bad2b5d675f75ee69827ceb8c0312c3c7aae6a2ca1ff721703d67dcff7a8799ee6ddb56c5efb0d1e53a7e3db90d7fe96700d9517a9eb95356bd437c87c178f256d7977ed416d9789e0089a13dd7b76bea03788b6725c28bdcebeaec38424fed17de1e3dc4f076443de57dad6b0eb1bfab269127e9196be9ecfa96161ceed16e99e4ff4f50d7f8fba48df11f6eaae84e4a8b125d4b5d2a18fd8ab7324b1f7da847edf552d612da6a62f01573187bce62628c7e7103908da35f1231397986436e1d3a4b539507d4debc5b79a33f6cc308611b67fc67d212b261bd5e718651b8ffaf55317eb53c612fb24d57bf9c8d3392f09c78db89f1473c1a8e941f9225bdbe1f4b7ad395827a8afaeea3a557f1cf4dc4db9889cd59e7c3476a970bfcab3c3576f4f3cfc76d4433bfad4dcfee333e95ddd009baa74295d2e5888f8abbbe616cd304f2e46c03f67f8ee72aff79664bdf5817b418cf6a1e297f1ec48fe56f83256cb96ef7edfc0cf115ac731f4e9fb785fd8f7b4242df137edc70cbe34d74c0c1acd91c28caaf1b8c3bd7c27b16ac4f2fa9b423fcbcf2ff4439c14eb19d23a5cc02f9657b867e4100646a60df164cae891ff5e9c6bdad7c2fb1975641b179ea7fbf6bff1dba3a6e064439afc06bd47629dbe7a3d3ff433a58ffa42e18ddb1efd9e971ffabb1c35d7612bc9778dca46f9cd7e55437f688273add0fb3a3b850f1c3fe01b6dae388f937e0fecc6d21f97987312b64f9a964d18eb67d897883f8b6def86fc8e03defa5ff0ecbaff2a22dd61d2fdd1fcf9a96127843bb4b42ed70fcd019bde10634d7e7b7dc5f5e046afeba53fdfea39649dd9c33ceebeed476523f65318f61bac1957d45ac7a479d4bd12ad73105a372ed2fefec247edf9b4225d47a9ffc5b1047ba3ea10f737cd95116a7b196e73d0ae4c1aaf48e9d90db37b268575fdf76702ec848bdc9ff7d138d7bda347cc9dd517b2bd0b7743f11afdcbffcd5697b4b6db19eae9363f8053a009d688031699e25756f889627f54cf11d7b73d7280b8b226fe4cf837c77eb375b7c7c1bdd12f619fa80be417c6cc56754b893af23270f2fb99f4f486a47521acdb196d05f2a68477b29332e3a8e9c92cdee69fd88b395927f4ce658bc77ae994ead666bb00bf3110dbf20be764bede934fe913c7e3ff602ce58f08f07381f26bacdb5caa1c1123fea84181da340baae3c8dc580bc0bd9506eafcf61ab7bdee03f4feab391f65ce247de65994b9e201aa4fb9c1dc680735a8c86886d813384b136121274bc214a65a3a91515f55ec96f96366cccc67ecc991931e7185f5d402eb25a0cfefc7bd1e1ceb399c896bc03a93ffb929d47ea5e2de4ffc7e3f087b52e09ac03c8c8f5c76a75e87bc72b8b5849cbb75069c8cfc4db817d095b1a3317164af121fbf6bddae9ee22779e53bd230e935df63d1736ae83d27255e0671415e86ee1a5fbcf67dd5bba7ea9e889987783a401ba6ae97c0fa76c5f8e11d0d3f549c23d237f8d67ff2bfb894cddc2b816f6547f5c35ac73569763c3cc730ce38b78e1827b24351bfc4893bad832bcb89397e8c9d565ed052dc22ed681fbdc4b88bc990de7db87abeee89effd4f9c234db93b3ec6b5acaa675fc899305b5ac393e68f369446c654c4e783d23ccdbafd897dae9ef83bbd963780afaa848e93de1763d8fb792ba9a64a3892037129886cf385b9cd03ff38e13eef27a8d7f560ab9b6be12d918f31d8abb1357c47ca19729cfd44df2f207b9084f1997470dd42c58c6a6d82ff26e53bfe8bda80d27aebb9040ee0abb17b34d1eb600bf94b3f416c2b626c544ddc57fe402b6dcdb7423e5e8a184429b4bf98646c83ebc4464d5489b18b473df942eb568e8e90bbd55cca73e2fa4b290f899862e9febe608fda266c319795ca81245d0ecd41071a5d4a8363db003f23d6f9855ba28d966e88bfa93e3c552bfaa56c7137cea107bde1c2f3341703da69589fea5a02afe575cfbee5c2e780b9f4060f7fab9eeac8cd696e468cd686381fe11de589eff478dc08a355362a9f38d59adf56b5004eabf0c29be85b3cda4331447bd88c892f2f49020b7d58aded4ef5bb127bd1346f03f2777271ba57b87fca78a4f81cd55e612e6f88dd77e2f84c1a90efc5fee83dacb369be3be39af50c6e0df768bb72f2c75656e553cd0ed7f9940979a335bf144be4e30b69ff81e3f4fed3689da16eacbadf147e230bf0bea615ed25fef766cf010be92c0dcdcfddfd26a12f037225512bc7454d5cd523c8d94b765aa3df50d5a141fc62cb56efc7c4c5fe1e4e360be4e6dbb20cb41e4b111c22ad030c763445ad9852ccac02633e917903c400b71483603d6242b8b905e246136b78011d35a9351bc8e70b2723ac8bfdbcad608f730b2ff8a49cb2d606a61e4859db2bc441e83e98876b1462897de115e429ed8d0f7ae7de75453c88f7d199f8b0a8173de9d6cbfd76e6062be46418ffedfd5722a01e8388d50f7c94506f079b8a7c5a72823e9fb591e4fb4bc55f5aa1bd889c55433612e3d5a441bd6af32881b77a47fcc839ecefbbee1cf071e97eec53125fa6e4806dd33a394e845c72919ce875aade296fe89b06fb847a8a2de04f4d12e039493cc2af5f49a731c1dc4143793ec03be835bda77a33e9b0ada47a1677558703aa9100c68a2de7b6d62253d8e07877a61ee406de0d38d62b1d9b441bca2920ae82ad301ec92727c24bc8f55e52bc65a69497f0751ef22b222e7f1bfda7945d71df9a6afd36dbe73876eeeb7c881bddeb863d50c053b1aa03ca419cabc7dac14b2eba48d11748e5e78b2f60f16d64e9d836cb5f73d1d74a6b5ce8f8525d57e1df52e0e99713735cee36a8eff173d0c5ad9d0d12b6af75dc0bf03dfd5070e03923fe058cdfa1af9d2d18705fb989bb3128862a48ef597a77e24f95b6fa3d503d6535f136e65fc4ddcc905b30ca3663d24782fd7a30e07be46c955dfc21ad67ed6c5f1656f75ee0c7adbde093ffc191743bbee6a2d994b40f3cb37ae61fbff37db3a3fccb23fff8321d3ee3c4c551f3edd1beb3a2b5d5fea6b8b45950ee42fa37e29e011d529817a9aab5a87981fd27cda97aae155cffc5b7fce2fb171e407143fc7a35a67c9b884ff43c52734e2157c66a4ff117fb5a130fe6fde745d734718fcdad33e5ec0ec80dea48eadd96ec48bac1323d68dcdd2aa36b37876e0d61cde6c077371f78091bd4ce38e6eb5ae7f5a75c3475a86a38cc89bdf025a6a8de21cef75fdedb97a1274e91ea8b630be45c9ec6f1e90bf2319bf7f5e4f858d3984676f519a95e23d9c5078447d2d75ba7ddf130b792c9f1410f843406837b211fea20a9b8bcf0cc8418ff0df95ed23ccc11d7d0d93db45db301ed6965b20929cfa875dd30e695ad374cc6f8ae6e83c795b78550b80fb7aa05f55fc3dea78fa9940d430ccc51e31afbdf81bf4c361e1dbfea7c4bf85ec58238c93376d63cef93e6b966550747b257797afc8e1e6b38763eaec85ea5ccaa1eb97952717b19b3453f66bee62b557b49e6bbc8936be8de0a43f534390b2fb855847f4b8786402e77ca3deaba97ac2ce25a5d2695d2af821e95d9f0c5ff78a91955df7cdfd0376c98a56d28e97acaca9b59841bc7fafa81f4654a55373af73554d46d013f8970e4c84124998fd8228ab9a790c3869c1dc6a82f393b7f1362bc1465d198340719fafc697a84dc4caf6f425cd809716900de407e124e987cc1ee1a39f0e9c01e6c1e06ca8e48e0dbcb8de0c477c3d7f87aa8d6865a8fa1cd77c771887bd0c331a4934bb6c1d13e53c2c966e52c7ea9bb7ac185e69ab49de7b9660dc721cdcd54dc9ed6a7c29cfca32dbd71fb1f6c69da8cd719729fcae61c1ab83f625e42da39d54da3958d73366517ea1b4bb3df46427affad201e8bbca09e90d4bbb0fa4a6370e7585fe7a2b9171ebd2771b0aa67dd542fbd5231f96cc60ceb415ad7c4845a99ef48a8f761cca1ae758d14f76ed5c54243bd27640eadd51f2ffba3c1b701ad814d68bdda809941e39d27f261df051bb0b268bce595721160032aef95332041bf3a378261853a3c69b2bca046c30de76856ec7dc29952fce72cadfa42da0f85c9d1d6b26fc211a6e9887a183655a3b969d10e6cbc9587bda35995902fcb5ede3514c1b0c0ba579e1d0f8f399dd09bb52f362da53ce09bbe4e73a2ba5f62990de50db456bcfd4be74dcb9d4939110f6c4edd325c2732edce6d14077b672be46408fe71e290ff7d067e07ffccb7ce2122ccfb7d047cc4b2b448e76899f8078cadaf513a6c30d782f95146d7c13a84b8f0ede6886b74cf773a5ff6be222e0eaba1dcfa634e08f0922a67939fc518c7ddde8c3b1f00c79d70c4d9fc65dc5775b02f30ce49d3cde76b8eae488f64e73fe938d89b9bc9eb9a598848f7fae506c5a355faafdfc2aa18e5bd57a82f57d07327113c777a1c2306f7c89be81b753a8b1572b6a6d9cc10af3190179c090793661169de3166a8fdc2af08379f9ebfb5c61cf46635c8b9bdc13998e337b4a2873ed3c8c4392d3027118f688cd97aaffb27b03f9e597c5fd2336e8ac9f02fb5a40670b62da31aa1a934f60cd43400dc0dd6eb305f61e79f942bac2ca871f0940d9013cb5f108efc8f78f9367ffa7b2a41ef3a1e615ec8fbe2bb7c803eff85ecd81bd86747b6023183c6056ae44767656bcec4bebe1553be68b487bc21fbe4fb6afb97e38873e72081ff385ee9ba7243f9d04ce5e88917543473f2d7346f3bbda7751c5729ed71654b5a8589c26477fb39e90d37c315f8c92e71c1bee9f988fe8db9b1687dc976b3473b28495fa79ae07dc44fd2347b2f7cd206a808b37a8da67d3d9eede81eb45f4b8bde37d1b8ce11613ddf2b2bd4f1a300bcd0b5429cd6725f52bf840d35f05e3f4de7887ce64462795b63de52c0fa11aabf89b8e3334975a909fa4ea443f749f3907cac7077a4da928f1c60a451bb447f0b735a26f4bf59f90c72a8b8974bad71f7fe3c0e82b4ff1eeddb7d0571b33bd77599e69bf816561393ea32ed0a7aaefc2e5651f5e52d1bd2fa806fc9153e1afb17bccaa6dc2ee682cdcd7ffd5c8031e270bf69441cb2fa7e89e1cfe30fc0e697ba2ff204ebc8a6fe0a7678e82bc11ede6ab044cd8c85f8798a31d68b1ae2613891bf99adf6cfb98b553db3c8562fdbeaf315efb698a04d4fc3e1934d97ca0f78d957c3e1aaf174ed4cdbbc87799413d72ef84769a179651ff44d60ff829ab20d1c8591e71f102f3f2f2cc0a87059924db8003e802d0b97f0cf98abb2727d1edb917fdbd05e04b1b0ed8cd964a875d1de4c0ffb64ce5bc46aef491353dc7f7e09c8f7ca9274916c89b119fb8e26fc8fe356e612b50e1c5c7ff207df6dbec44b0c9d5b47954f591aac2eea40efa1e8c7bca11ff3c5b7cb4b4cb9e2b60afa384dc5447786dcaf49b639ebdef5667902de1a26563da6406b4b3ee2fe9676fef77c4b128d1133a474f7080b44b9d207ed1c85058aefb72d377d836bed50ecab6f485782e9dab2ae7dd9dd338d744f896859e7db609c3652d877e56bd5984720dd22c539d3f954a1c2850ac377852b6e58dff9602e604178128c212f7456b970daa72b637612b06e7605f9a049447e55534cce0fbe9077e75bf60f39a9b31e23da8373e43fa51820d71aaf23edcf972a6e3a612e6dd6d23e5aa6da67fd2c9e719f57be3bd31c92aba7e7f3f77fc653f47cf2a67993151f3f69ea8f340f3497f97505b543a7306603f29545d2e8baec8ab8fc85395c78579c5be190ef8e1e6947fd3fc4fdd976e24ab63d0ebf921ae3915ca69004c828b09a0809dd0989911804c6061bd0d37f43ab0981eddcb5eb7cbff33f173572970135d1ac58cd5c73729d41d9f1b738f17f5ecf9d3ee8f8336dbe5cf7320a5d8e15ab8b600d511caf8f68aff4f7ebdde0b69e7be8fcd7bbf1cae311edb703e64230ced15adae994ea2cbf6ccc5d1c589ff9b5f2bdaf366f12c9f5536507540f19dee41a600c61bc2167b659837e7a64c5dc2b9a22c7f7e19df20a547320bd1ebb18ddd437c1a7ac743dd064eddd6b85fcf8d8dbd4eddbec425cdf26cdf9c2a63aed7bf472eaebef169f739e15b1a60372198f758ee66e0fa2762e693aeda987ad288d23e15d24f9a7504b9a4552c952eb03d03ed934253e5bf3a51ff7d74306678e3846fbea93cfd9d5688867b2aa8c8a739969cdf5d159a9b6882ddec67a0ccb3171a5aaca60bc6496aa3de6a404f4f54676ecdec5c53ace0f3abbc571fe6d1dd48eee6c95de4f0eff7f8dab498654f7f9d58d2bc66166a4fde72563b6953a7fd9f7c77fd8f787bfef7bfffbbe877cd4ff74df1b06edfb4d64166ff124fe729e1d747c2774ce754a9cb4c19d6615f92bc788fd955ce7faf26a77f37ed0bff1cf798ecad2bea8f17ddcfe6a570ef1e46ff927bfcf816406d55495c539905a63f56f72206df1c83aba11eb41b70dffad58eadc93ffa6b5a712ce811cbc724be3a07eff35cf56a76b8f73ba732fbac9e70c47a1bc8fb5fbf336f8e15dfadee7d584729f77b11fd8a9b6a21a3eae5b881dadce97851c69ae187799d7ae43f945f0fb664b4f922edde9cafd0d22a5988a381664ab4cad77c838655bb5144b3f44f682f745aaed885db75a4f4fafc921aff1599d935e597671eb97ce3ea0bed3d2d3b5c056d7e0ede2fdabdfbbb4f87ca8cf5f6a811fd126ee73d15973b73eeb6d60f3ba5be4ebf7ef3d207fc9c3a56bf76b1e4efe9487c379c3353c71fcde67c23380ea5ccff3b1ae19f5ebf27a7abcd13ff161ee755ec4f9647f35610e5fe84d1fb03f662ec8572bed82f3b19fba3f387bedf1af182f9f2b8ffb0a4f5cbbc8ab4d13b29f3333429bb168f5b8e1fad0a0346ef76dfd1a6d1c1ec7a2deb1ef763a81565f56bbd53678e038827ce52be3ab4a23600e4751e505f33ba1ce5b5a638ce1f9ccebf3beda3e80cfb63402d67474d4be3ed0fa34a33d6060601cc418753024adb9554afe34e97f0a191d95e10b8c4d2e8ed6fda4b94cadd306b02ba673bc8f0563c695da4b8d05d56b74f644dcb0d2de72efee33618b5d915d183f3388496fb454a011e7ab31ade34c626d5ed70d4c8d232b9993c9ae6dee155bb9188bc769338a6e62e458ddd7a86bce47a8ed65ae482b3375ce773d677630c2ebc1dab443c60ded2aea1104de38c650bc129fd4acb0100740718717e5ba175595ae33a7ef73aee4c8f176ed4ddf096b20565047c4b38b74e8c40a620183d6e3d4fe52c37e8f36ea6e0fabd61f09f21d5553d977b641a950c07905b57c8fb98ae7d9e94bed45a20f0b67a77a8b5e861f3f625173d5e7466dad299caf088ba950bf34a09cf95463052cddbfc2f80f9deb2cb8a72a0dce37b94cbfd78138526fa2c6f59815e99e328f12af1fea637492cc60ad09558f2ff1973515732dabd21c57acc389cf19232f0f8c21e6a39d11ebf72fadbf9c73c023d070eebf59ddf5cc79ef7f8dcfd240fb231a53d22e3eef73f39d5f28af82cfbc34ecf63c626fdb7a24fa5ce99bc6fc8e2f5f6bb23ff7b165a097fe63fda83002ea03fdc97fbcd330d13e906a7b1fa8cab88721d8f29a9e4bb057589326df384986b7f52c37db35478d13da1d8eb7eb3d4ed597716cfa387712933dad1f973c377973260c90aaf3c394393a81df82387241f79c30feb17d386a3b933ba481a0ccd596781690bbd04ff2dfdc3b32a9a86f23deae356734e039a9564ffc72013e472d13decb94af126d80f6027aa1905b997977925c3067e32cb40614cb9a147f6caf4be6dd6bc5073d771082be24c4597c1db7dc8a4fe62892cc219a1dde25d722f7cad0dcc2d981e6431c4be2125d7a81cde7a0b24e83947bd3269a87c0a2cffd721bdef789338e0b306b0663b44c3e0f666eec45523455ae3c3eafb25e0f79b2f46253dfdb16fade35dc1b7bb52a9b30337268ac88bb85faf20073bd220ee4d4205dff967b7fc435da4b3d9709f57ad763ee1ba91e60ce0de04c3758972eeeee01ebcb3149e73f66ec69d663eca9862ab867f583e25e27254d2ff26d81432966dd72f90739eaed835bb68ccbf00deaa9e9d6930bbc4add75b5d63cf2462cf538d40661fb9d243bace96fa7eefea9f42719c6c1cf37df7fab49d318b573ba3511b3af12d4ba37a99e014faba9791ddcdbe703fcfdce6c114be3af85f7c038b929f6bd6e3fa35d35d05842e887eb6c48f59e116fe22a237df69e5b11ec939082b836fda274893f43d66f15db6f7bbde63a14ee5dc8d71f420fd6bb9b350bc683a6940f8ff98c41bb5b709dc35f49d6478b3f719d9e754d7cce3d7cb91809eea191f29d792abbf103db6c5caefc9b99ae316d3f095708b193b2d68cb53b2c7dec879023c05c418ef80974ad4fda87cb5e408b1bf1e0bb3a61fe8dd8f017d576fab9f4effc4e476527b49f59332a35e7bf78eb6269c82967c307bade33eca5b6e6313fd606f3439ef43d6766d55d572cb7d377f6051716d47b15e2a4a6cc819703c68ff211f5cefb76ad12788f4ed0b701e3660d82bbf9a03c4edced151fb479dd82f33ff7ef40dc15065f27bbb5f391fcc5f540bf527c565e14710c5d190fb54855f71e41a4c45b64d59c63d894bb7582986e693db1d609d5934442fda2adcf31cf3bf506c56553e13bb7d00b8e7c32d93ad1b6de07bee3773a1f32ea33d3581efdfb9b319b2be4bb4e5be723eac65c7966b41b327fddcdb32a734575b614f66268924fcfba3aafd13e78d07361d3bc7736007f03ebb674fd11dbeda50c6e7269bf1ee26f6b1463e1d85a5b705d551bd1eec7717c67ee4bb2998305c52c62f46d3c0f65c3fc5caa1bc7bbb51fe7a891187b9ea9311479d3b09e3fe2144432270edb38d718a773a579206acae9a30e30d6b1e13bef7daf41a3e740bfaff967c073cd3c9349dae4e05b64885f4d3ccf60ae1dd5eafb3c97c84de42ebda995f1b9ad16cc8d8a7ae20df181b15e701b69ae0ff4adc341b40907fc5c02c604c6d7acc897c2b157526bf91abe50eefaac3953fa3939f37e226d826364aff578cf01b366b2d6b713b78dfeec66fe3f156bb5deea79c9e6b2e05cf07ecddf7d875e55e0733964901be9ecfd5838f1766864c9171ba71a837952923ca6770ecd68d7e8eb75fb98ec6f77fe4661ce1c2c8db142ae5bb5f8713daa41f7eeb7fb7aa57bf48fc613f131cc0ce6b6f359abf43fef71c4e9e135600df4f375336edd3a9a60af056969b6cde8de5f3a1c30cfed8bd94475fed298e301e6f52ae5777bfdc55ea43d576aed10ceda0fdbe6fb9cb484e990bfcecbedf4ce9f1272da6aeee0b6d8b3ed17399e69b17518cd271a377663a7218f7af30c21e6bca07ec763eb706f8098e7f1d7e7723357ed7bae3ad5ebd99b53ce3d0421e590885334117baef94bf36b0f6d9206fa7a7355419d4eedea8be66e9a1c9853a8e53a596cd7368f25f7c125d9e951f7bced28b653f543cd1c9169f148fee6391e5f1e98abb8b0646f37badf98c59e39f7547679d41c8a63ac5bc76d61fcbb7b57b68e21b2d303f5841931f56a64a97aa4b8755b79c42bddc27e873516529f4f242b83e7a818af5ff59eb7ba7d29c8ff33a166cd39af5b7fe0c9e23da673abc4b5bba59ae2dac17ad2f6bdc2986d1c659701cde55fd640ccfdc69a6f49985fd739f7092e2e4bac31f9b15b00c623f60eef2bae0b5f87c4494036cb58dcadf704b8c86fd77b3f46c2667efb5fefdc7fbff4a69f95ce0b9ce8da4df9741d8aeffba13ed0b53876b8700e386e7fbf339707fb9025f50afde52cb256eaefe724f0d7258cb9d06bfac25c33c566fda873a27acd37fb82f52876ebe6cb6fbab1e0352dbfffc69f2d53d2fd3263c6960bce03958afc449bbed38a516df33ead673afee4ef5da1278ff231f193600d8eecc039f660467c7bd46ffcfa0577e953fd741f6d6223bec35a370f7a3d90cd585a6b5d8f011e83ddd68c6ef929cc85c17cef0af7d696f6c3c79cea874936e03e54e6beba64cc27916abd834b4d98143cf78515ed81972abdc9bf529e4e7c546cbf3cca67a20ed41a3456d4dad1cf2dcdb782d6c0ca271e7fb78f6fe6933a20ced496743d9cf87a2aeef8106cc0ace31adcffe6bee01b1ffad703f35b541b0773b2667c09c9d79239d864e03b2bad4b0476c076464bc6b64813708e18a70c2e1cf32c2d8ff1208bafdf936d63a73c8674cf48d6af4b8cbda6cb6df45019daa69e689e9fca31d76eff9fddf3b4f47f1f17100bc51f8cd74c33f34372ffe54ebfe76bdf03266e744e9b3dd55cbc283bbe33873272a563be29cecefcf74048d6b51b36e01b98c55ee83cd7d7b1eef5bbab6df0ca79e1e43a7c4d35fee880be86b1be328638cd3dc68cef347786f2004745bec52bd40f14f7060c9c305fd359ac04ae53ff5c4be484d4ebd8dc32a715d524d485357a972de55455087b81fae44f8c77a77d2422d97815c4db583b1386e0dad9f549f3f8dfe5126725f313dbeac4794491c673e635208d7ef6e7686f176fa2b70713f02176c3e826b7f71eedc0de8fa37ccab923bfcc0b3eabae5a1326037d8334ca62c93579d6de48f3c54372cb3b2fb72d7366f77bcc64eea067610d47777c0c14a3cd270de5ad9d47ee51efe39ce653e7a95bc84f63ed7953704f91c0eb3668eba4ef16ee5a63d8e7d9dabffdacf4a6fa197f7cdfe46427a4f35e4e4813490ecd3972fcbbb537bdac48a3394d6be225122fe184fbc36ed65aab9e50a7a0bf67952bbae7e9b3205d8a455af3fcf9a5459ca4c06b73e33fa7c88f1f9bafdcf38a9ce466443903cc45cc8c408699f9b537c55e2acea372bf84aff511a19e909c462b9d5f510fddb9a56ef5aa65744caf842bb80e35c744fcd3d9959c46fdba6d78dd8a79ca39afca5eb28e69ab7b63f2e564cde7eb893916b3ec81fa24c241641f986fe2471b1ee6ca47cceb65144e947f7b3e2598c7ee62c94430362ef38f33c21727d9e542352c3e6fdcd0d07bfd506fd97f0a6cdd5305dc494d9fffb1d9f68476b417ccb57df3def5036b6ec4b63a6a0ce9dfdf5b407f8875a431f0d7cbd19079bf8f95245d137b9d77cf51015e6c3dbdc32a90eed022059f0172c47cbe25c92f83d76fbd67ae7e75299007382e73e21b65fe697944ad12f22b25f31473fe3f13af82ead7710e7d2ba07fb07ae167960fb5b145cddcb4b1357f782ec69affdcd8d238ff265d45f51aa7a8e51b710ffb8eb9d9c096c5c091a01c67b567eee99bf9d273e207e4df5837be2eae8b9bbc694c39dc99457d2ad6f4ce56859abf1d74e59d27637a464c73fd16bb535ecb3fae75d209ce6a9bc63a3b8dca2beb74fe38f703186bc0f384a6c6f364bfb8272817bcd7b14e36596ea7d6926b59ddf9940bb778199ee45fb879be622b13d4149ba41ed7266bae5fa5589333bbf31672bdc0e593417d6b86674fe3cc25f0b49bd1d67b8fb68573e383d2fe43ae9bd85e13a76bcf05d6738229478ef15dd596b909fb3e4bf0a1afc351a97b4e6be639db54cca380e37189365f7b6bfb3eb802fd46bf40ec514b186ad6bcfab1c75f2226e59d354ab33cb8e71a9247c6051fa30de700b746483e5d694cdb7b5ed6f0126d623e2367223bdcf744efbe6a7a39547775fa9ee8b4a0bd7bba622d4718d15e093cf70a8bd6ae1ded6ad6a998ac986f0ef172903bacb6e0f3b8f3af7832c37756126aa9906717985777975b6132d6af30028bfffbcbf3cc6663e126d6c19ddf71f6f8e5773ca8f6dd081be917c4119c104e621f934e5ce9690d8767817b3d28bd10fa6725aedd20610d1db2b988a73c1e1786782abde0e3be479af7448d7b42f7b2dde079e5f0a3e0dec84c1e13b0012229751fd1bafca94612998741adfddc83d1e3379aeeac85cf52e8b1989ef9de321b7cde61d4943a2d0df09b4eb1dbb0ce43cf1f97815638cced7c8275ed05d59f62cf33f5799bae0bf271f78405f19736fad159f34abe44c5b152b0dcadc7779a6a523e709d6b3e613ca77a2fbd07d6c2f8609d7a7ac633725c8937ce03d4a9cf3c0256a8589fc3a77edcc385c720b1a7bc0e44a9f19be2e637817e4e31268d0ebb182d2782b52df6abed1463a0d4675cde7361717dd97ce07bc5d6c303aeefeeecf6cfda1f83b1e9c6cb33f5d98df5c517d62089b3aafb3e9d1b7ced5abf077dff35daacf99c09e699097cf0a95c1bac4753d887e7cef74bcd3f340fa6c6ed2ef7a2afe76a0d45c65ba8beee97537fb9344fdaa7e5dc15e58667eddaedf3db802debb534b2fa91dfa5dae839bf9076daf393cd989f9bb1cda7ba3e15ee8b517f6dd4bee21a7f9affe1f99a2ce1daa693d8ac5922063cafca76beac6578ef76e5697dfe37eacff2e7fe169f21ab5fe8b93e57dbe9ddfb2e014f803c6002fa4fe17b6f621bb29f2e589fa57bd614ae0739bc5994adc7b5171ca9be83b6220d18cbdedee46288ef6618d077c56a8fb95de93d586437987fd160bdce34c15a789d3513aa6360ce4e06d719dbd36cedddc7a71efb2f366b0ca5b634bec51056f0ba62addeeca4e79578f7895ba17ee3fae9320d08b7a7de2ad6836ad703d62eaa37f1887b632ad6e0974393351b4a197c7cff5dd8461bc1eb23163bf96d9d514e89f021c09d7ae1d8f976cd50cd2d0d5dddef78b37f59d738b6f979fec33aea7c25ae9b371c93971eeb49349725e15f6e70a5b3ce478df6cee1eeec50baf7d69d7b477aff3f575a1706eb34cf396726cfd0b346675a772683a610f1fe617f0bc4781ef3cb1fa2fd94ff7b3277839b1e6accff699b9917a7e87ac79de7a8d4e1f3c2e2dc4988fa804edcc67d5dcc809a03f3dc8a48c60afc72f970264d3ca7340263ceb62215016a88fb8725c71479a4359a42638b3c1d0a7a8c5c4135fd745fbfd3985c680dccb5cee8eeb2e73a51091a5727c401519eb79bbb453736fb90f5912ed1cbf9dac525e136bc24fc7e1ee6d3d5f56869ee91af63d8eda57c3de97c02b10d5cb905fde053b49316f5db2505eb666f14e7422dad81b27de59c5943fc62cff36c007b24c90eba7eba34a6c065deed6d05b9d803f1f2348302cf52558d29a6b6a6b731961bb7c153b736bbe72bbd401077c888b40c173303b54843e009077bfb597a701f27cb9d57c6e42cadb5cfba1baaf34f5fc07711f556d2597362dddd54e4cc1927ce71cfb1f30cfe00c7f9d9762051bfe633da07dc0bbdfef239d450e6d969ceb1d713d620ddd240dbbbf4b0fe985a9cf7f2cfa489a82aeb407585fa3867bee1dc99b01613d533f87ca69e40dae7d8a39274d75fca10c62f92de516c85531901f1e68a0bd5447bde61f29354be3059eb2b65ff651f720ebda85dc55a41883be97d4453e7deb257d29c1852aef1d2d9900bf057608d9a7957605da4932deba7c6e546b99c034d406f1bb1354956e93c7ed93d832f8f9521dc99d1f34555d713613c4dc416d8c5a8af7529e079c2fd5731a662126b7e1ea97b4b10c3b260db4ebd0ceab1f34325688084776326edfaf3cb759c0cce37f1185967ee5798942df56d19eb8f700befe746799ce23cc23595a2dc6c65716f973fa1fbbf75b114d5ddbfe4b904ad5bdff9f2777b89bdd6939911c3f3e399a952c0641abe25efce77c78398300fbc28d7efd4d926eeaf0c0aeb84dc84f67a146bdb3578e45a4e6923470dc4b9dccbbf91dc63c1beb1d696d1677266126f45d84676f3deffd61b70ee6b2e8f940f25be2debd2c50e345f12f86d8a6c71f31dc5ba364e2c4187bcb3e3764cbac1455b439e27b1d6fe2a3be93552ef89634ae39b0e884b32ffa02e8bfad3f93e31f06b6e3dc2209b2f80af6b7d7739967f7b268f39db17883958a39ead3a16c479dbeda938adbd9e77e1cb35505b9374706567938b48f9afb11b9cf47c6d7c8eb502ad3924752c788ab9f708f6428cfc85ca210e4b696baeaef4f69ae21473df1efe2d125aa385deb7ade9fbe0134eb476bafa6d2d893fb3e76f5ed8fcb79ebf99b0e2d27858a2a67db78f9ef17ca17b59eb31637cf839932be0de9f7b3f1d6d4b2afd498d799e7194c68f34269fd1be78e43515c25ca3a6d10c7a7586d8cf8d1aeb96aebf682d78811a9272c1eb29433f6288e3671396f9e69d857ee7488fed92356f2866648da4d4e6dcebafabfeae3135398f126715733e0461465c53a4cb2d0dcd99f0acf969c197a47c8cf2757d19fd0b137173321c2434cee11879fc12153cf17ea8c6ec8773be37f8d0fd6814db16d689cfced792b84294d6b08b3b5bc2b8c29c782388df95ec5c56a3adbe0e91c72c651ec121e15d62977a6c066cc7eec7c5641b44b9e993c3b10ffa9b4d72bbc7c3b4b9dfe3f621a05c0cf329149cfbe0de6eed573227b3f49b954f36d91a4437bfefe28bc7d8aedf7b1b7a3eeb3d497e52d93a9e3e9712bd773ffaef55d46b565ce3d1701fddda6acd7fec3307a8f3557bff969b8b72738768ffb527df5733dfeb7eff16ed06a378f4b77b74be62ecca5ea7f793b94aeb3e4ee8ecca07e1aa53cc2b08d99fc1272732518725cad588fd8ca581cf1da7c2adbf7190a1ef48fe68bacaf8f3e365a679950f47ae03963ac72cad95f669fc037349d1ba3d63df2de438bbf59b53cfd00ef80a89832049b77c4e09d6c04a91b7b59c8dcd10b9decc6e4dbeb3f676681c1947db465bdf4ddd6086f5f5a9ae95107e27a2f585dcf40d8d8b3c617d9fb4c350ebfb867b067a3704728ea7eb986ccf8074635d39819e51e849aaf303c6b5c6e0b8643c4676a29cb898aff64e447cd803d25e71e5de394adc9bf1d2a25e14733a58fa84314fd754bf1149b929f8f70781183f5f6efc0bf5e2cdc20971ca1b178adf05d668cce8d2f9b590bfb0e580ae27ebc9817409fd76453a6b8bed2f3c07507fd5cd76af67aafd8bf9847027c680fc65857815b310342ef8fea6f38c3906e2e636d7d68a7b4e6d4575341149aaf513f6329257d8e37ba81963af39fbbe27c0a818feac427f714c7556a748a13f177004f3098e7f9c3b90f39fb9c528b2069e1a0dbf7064434d771f8f2ea634449431dfa035a4dc5f4431e81f5897f5b670690fe17ecf8b71847a8bd483059c70ddbf97587a704e15e49b8794930a8dd8a1b1c66ba594f34a9b2e3edf74b68dae459a9fde67e7ebdc5e8b34871cd06a82bccb1a75738cf028bc00fead3b7f496e07a5e642c118a7265e21959d584fe42dba5e0691e1fbf1e87c063eeffca0b94f48cbf2bdbb0efc4eeafcbb51fa8c0b31e95afe67b4dd12f653212fadfcc3cf62fefd598637cf723e47d7cb6701fcc00d7031cec646f75c9f89024e1f5731778e55d33e34f7ddb3600c1ab5127bb1bd286da635ae1317deb17b37db4f39ef05f66d74ee6ca11b5df1dfb8150dd5e8815707f4da8db3ddfd37c57f6f1275e97df9c2bf69de7a9cdf21014cae7cf8d4bfb1ea77f9023a21dd380b89b15859710e59fe329fb877a08d0f54171255b6c6fd655d462bd66a54e2937a416633431e17127521e81dc1ae47b6e07e3e0f6c5617af51df03f4c9102639b1d77bda7ba2b2d6a49b5f710e19fd066b8a6bcf987ef9ed41ffb6e6e7a4310d0df1f2e3fd5affcbfd34e686ef6776be3eddefb3d7a48c9fc9de3dc4379c1a7d5fd7893837065e6d5d22cc112196a7d886acd909794f881532f1d8cfe70fe3ad840158a504e7abc2fe4c37c91bb4c1a93349d156d8d146d9d413a66b0775cb5835ff81f77dda421ff3a15b2fe5766a72ce163194830fd1eba6fb9134214e4fb6bed6f64bdb58e1b3fb8f35631d484fb9ca394f1ab82bee25a3fe8025e4501be02c9b7b9acb09f283e5b8011ec3d83e8c56e8b34af97271a3544c4a19584b2ffca7313a57ea7737576e920c1f75bf4bf79914ef25f3005c879c379bc31cb5c29d4da0c6162cfd3fd4dbd5301659cc6c8d233c276c8370eea1669002be34a4f50e3ad76e6cfd7a406d15d38da4f9446be361e9f3fa91ef1af33f669cb87901fb85bd7a01e1501ef93789ad1654b7b231e624cca9edb8e19e30989977f9fe7defaafbf47ce124d9c5ad6cc267ca5f986bfba2c1d2e741ef74597c218353dfc3aaf11db35afda11a04e908539e03f66febbb951d335ea1ed9e0ffc8f34e0dfab30ebf608fafef33161f6202f783a62afe99af57fac4a92ee98f6e91c33451f35ae5de6ae39f23b200fb87d78661fbff34da2cc68191f5e4d0471ada84b459ad2e556ebb8ea9edd34fb3348354f521d52dc74d67d0ee313e1a46bf46d54cd7c4494a318789cb70a33c6cd1cd9d6cc8093987bad7245789193511a0fdc53d2ed2db73038bfce5ab6afa4a530a573adb91267348ebf34074bcdbb527763de8dd516ec61de8ceafd9ab163dd9a8f67e3da851ebfcd5af31cac58ff1fdea5a6de865b5f54b6a5f9dd7e3d7536750cb54dce0161dc6c4536f5ca3949bbe03cc2acda9e994ff919cede17cc71548cc7353cd218201d72eeab31e0dcd67c300bdeebe62be4e98a7db0e39ca8347c33da614c597bc1accc18f77332c9df52a52d9e99cf26a45e46d0be97be9fec9abd7e5ebcbe23ad619b5e899378037df513d6d98d55bc5f12fea33b436ef6e70b6bd0f09a5ec01c879f91b53ee96b7467b78a0fec63ddfceea3afdff5635e668d3ec724f4d48b23df7f0178a45a8696fcfe3babfb1df4e91c990b353482fd92f3cead7f9094ab5f8efb7e9312e399c9ca0bce37f76922596fcbcc64de80b725e9db50cfbf5fb8daaf018d02e47658bfa29f27de22ea2d57d9faf4cdced8b549dc527be60e5fe4ebee6ff96ce2bba0b5879cdd5bdc23e647f8c358adf2608431d60162a998e2bd343ffc3b3fc8a6dc84111e9f8ce0277ff753fba409e5d2a9d6a7bef92a883da9b75d9cecf79c39a361effb428d4524376bf69a92ce5c0dbcaf5fc6336faea05f0afea167279ef95811ee3e4d6378f795dc72ff735a66ebf89bddcb9d433abad70f585ad4d32ccd8f15e16312ebf4c19a6482eb4280553aed23c3bb24eacf153426606d081fb9c68251e74f64880dbb7467e762fb8a3e393e933fe76792c33d7252fad80b979923d083055c16f13e67ccef7a72667e754ca4982eb7e213d670727e0fbdc0997bf504f1a5318fe1b9646e91ac7e455fd82fea9753849c07b1238c9af8993a5f01ea5c503fa4d8610deb6cd4c583c2a57f27fd1e2b3a5fbc7bb789fae6dbd7da4f2fb34b321b0f47b349e346728835152b7e5bb2cf69fdf9279fc191d6e1849a83a0158acf8a31aabb64fb2d912b3432b40f7ab72657631dbfb410bf680d173ecb6b7781ba517b5db3e5dfeef46f4d7e268cabc2b6f3d97fba5f98dddfefbbefa0dc6c44f7db179c6f788df6708e6d20ffed7bc74a0a47927e5ebce53e80df9a038a72e45ffc9ac689d5fab13b7362dd37e24f7a0c5e4d3c710df1965ea2ef7be370c5bda1ced1be38d1fc88cadff29e38524fe1bade9911dcb3efcf1ef0bd133b7e4feffdd5966bcc32fbc39cbab8eebbf7247fb5dafec277b5197b77da87127827df23c30f92c9c163ed01e4bc38c0fe88b76a50ea3c857897dfd695f1decdc7027a0583d7257d17fb4aeb855edb96d9bd1f686e953278d0e7860c5eb9c788ce82979afdb5ec72e0750c7925a8e3d60b35fa62cf5371228c495e424ff157dbe6bf726f42d98d2de608af7c5e2df0dc50a4ed053c5bb1b5ded358e2b96a319e547345a13fdcd65c4b9c89d190711ef04e19ee09f04b0a8bedf0f0113522d423e588673767e4cd338bee0c2da03f09b0a47ffdfc2ddac7c4c72e9c270bb1eb511afe4b1bd0f9a83fd90b9a57f445fed1678b32ffa146ced459176fd650b710c09bdd3d4bba517a1e2bb05d3e68ee77e39f26973632fc19e0106fb97b3393cff20d72187d79ffec44ef2f99374990866da8fb9f312f77131390bff29fe32a47b68dc1b14205d824c4aee39c2f2ce8c7077e38ccb976fe7dc29c8f8c83c673492dc7d31bae2ef51659c327e48ba55e4bc20ccddd35c566be7ecec4a0da3dfca6a17e75fd7e1335bae4183bd6eb6a0b1a7b9ddd0da2bc1e2d657022acda43b40bec39f3a5d9f1f1fb3ed6ef3ea3fae829da99a3e5660df9c87a1b8ceb9635219bc7aaf98d7e752e02ca099eb8773fc3fd2848a32488e4761059cd201e713d0cb045dd3c7f46bbb5bb1a9b58e364ec7336a03c483d127bc13c9c566d843cae31f08b24c36936618d45c3803a51664ee7dc8fd4eb10c4d586f9d7cc73855866c031681c375eb7db434f4b9b7420898f4aee9d36d5e7837222e3f059119614f19a3563726633af3a2eadda8d5a319599013c663337821c60dcf995c9f901f4f131b7039ca8985f82fd0cfbaa80fc12f099584f26ec917dec7966cc3ccb46083afd913c5e18ff81b9d448fb96f86fd51689eeff62fb29bffa1f02b89f013b04b156e767ada4705203b11619eb10d91abf3e0b3b9bd4cd11f846f84c982f1316c56fffb3fc9dc175d370f05fe7efe4ff207fd7dfcfe6fcdd027d6851526f798ae7f23b9f370a7424876ea400e372635f28a7a7ea478859c15e426d6403ba98c08cfccf7e4664aecf95e65dd3fcf1b467ea47ede3dd7d06fe077c96746320c540c762f99439034535e1753d1cc07540cb26b8d6a483974c9c827bbcbae7879c742a3e5087bcd139877e7f7ccf39d4b962dedab725e5f3b03604fda536e6e88367aab75e52cee76503b7f3cf4a299c441eaeeadaf7d2c6723b40fc75e18763aadf64d2ecc7b8e8c618fce4da0b8e5a4f03e6f1c60769d7ddf7b03eb381f143ee2688f9316e2fa43f59ec899b4aa9e30dcfc29172e793ccc3dc5f29a7268f79b50daec57fe92f9409fb0b66f7db02e61273bc9782fbc0329807bfde927e94d5fb447767b5821a825b6ea79fe4afb95136449cafe1bffe149be2f98d7636b47e386313a8b3407fdf6aa29ebb3869690827b11db4d779833e6376f1cadd9a3058eaa8fe95df413df872dbd9373b222e417cc7ff7ffd110f345ae4f572e9ae1b1ac2b9ef01fdfdc03d07615a0464fbf64b453513eb30021b224f46b5253efbd47b207c5f46e7ef794e98f6feb37acbdae3dab76c9b1f7c6613e62b93a8710d3136e53ad21bed96d49cde712b2ec7e6bfcb35a870507bbf086f1e682e2bb439e25d20e6db5d79624fb9765179188727d6e9059ff117f7434bcd3b257dbfda8a3df5b6c43ca6c80ff0e701cf4f7fdd3fe7e933215c6381d841bff442e4d04c9d01cd8108d3f5449fff9dddf58867b39fa7bbefa457cc51c4b61a55e3f02e4751197fecff90a368bfe4286651f24f67bb4a7abb093e979bec86adae6379b5131b03ddf3175f2ffb27433873b98e9769edcd3cc062b93162fbaed176cb1825c859ccac8673169f8b979f731615f1a22ad8cf6667a7991bf0b0243c43694c49173538cfbd5fec27b950b3f7b7373d9d222cb9370ed773283631e22c10d7eccbf1c120ac710a6bc69cb6d4db3aa3dafc1b69c0a33e8f71b604d55bb0f75245221723ce4d4580e35d9737796c371d1fe44dfedd4ddd8541eb0af97195037668a1eb5fe2a5d65a8cdfaf015c7477d7689c85e51f408b2db99c00536c3b94c3f30dd68a019f40ad459dd1b96217987f5610b33ccfdc621c49dfa1fa0970164572f850223faf1fefeb37b091597c89708d6db2bcd03a4e5577dd713d8ab2e03122bc2fe6a6d431daf817c998a69da45a8773a57cee7bb48fafbaa7de470df0551e680dd33971fd2f36d183042c96778da8dfba3082c7ee73e80b6ca70f5a7b67133e50cf510ad828eb3016ee1af67226078f35f3ccd80162dd153c23e6602675d4d720c967c63382f23cc3d7febdd1a793fbb5dbed81b9271c65bec219956cd455dee64e8cc1a1565a03ebc4f6b2b2504b38cbd1ef555bdf28d9ee618fff0675aa83dbbca813d9a00f83d8f5aca13a84cffcc1c8bd231f1e4ac95aec15f35a0bec6b1621e7ee98972bc6383ead48bb3ecd15736961bc0b3a8ba693c8827b9404f3fcb22decde11fc4b3bba92ad9c2cdb80357ccee1166c6e2024fbf7276b453a8e8481de7ecb1962cf7803d820f6ebddf8fe5f7a97793688f9993b9b94ede3c9cc9770a62b79241d485fcca9bf01f29bd96924d01f788b76213e8bbbc6da6f361cadbc57f6734fc803846760bc2b5e2b35bdc3f4d1ba16baf7d3f027426a4dc26e9c03e2e49473cfc03c94dba03d70491b313fb8157101fc989f5795093566497b1bf84c0efb7f8ef57d5bea73f7e4c4ad18fd9c23eff3482168f96acce8acf2f49c3d841ef36b50cd4b0e4fea85f3f2c439e73a23ca5950fc0675e9fdd2f438ffd9f983d417b6a55c40782cba98266b46b55b306713f9e90ddaf0ec308639363c7e9efede18a7bf91ceb3dbcd6be805708e747fa37506ef5758c398cffdee79b8a781d6b24bbda687681fb13633f61aa8ed806cf05bfc7259638de554608e3aa2bdb37efa3eb6f595709e6fa80fa638a67aa038e719f9177ff451d1fe6c7eca4fea79f697e843eb9c3ad7e0a32bc725f1f16fd821eed35c8d3bbb8618c3bbf8d294ac47f0dadb6c384ffc7ac739f5ff54838131e87cdf3632fce7c26d5e29969e30c642a6be4f5c6d604b971ef515409f226358a10fd1586e253cbbd660db28eee3f5c578e0a30fbf867a16f5b2535dd197614e383cd073871cf443a2b907cd04e71f709be85b32e795629b2aa8bf7768b20666ddfc261dd7e935632d1c97620825f8faa2447d7147f1bb5a0757db193b3cc7783d559ba837576c1aaddd1f4e6a8fcead8f5246d85385b653eb96d569ace39e08edfa1ad7e7c12d7735e5b87c638e3ceeccb12f42c2a0dc3e17f97d0f95446e1105daa127e64270f10c50d37966fa3ace68a6b48f4f68b300473e9c535e94cedf624eb8a0519d06f31b5c9093187fc07e731f6a625dde753e44f7e08666c5f98bd4096ff14a89358cc8c71f2cb49ecfc989ecb517ee0ecc276d2657ec1fafd836102ea7ea9e0dea8be1256a2b33e5719547ec75c87db2c564b76c61a5189f4f840c6de6bd486c31a35eb077cca7faf96a23bcdb71020cbc5db8a255c411716a932b6091c0e745dcdc6bcb7c248535a0da98e0da2ec64e9b86ce59af0d0983a4b24bc69a7ca5c17b501db93609e75836707bdd819af83d6a5ee713e57937b8a43a13a087f16d5f3f6a7f1a31ad569a5c66785ed7e7681fec09634cfeac719e933f9458970fa96b202671006bdfcf5d6da7cc911dd7e6f6efefd536c897ac7bbf7e0fd86e97fb6ecd9f9c187a4a874ebc3d591c2fc9bc66ff6f32072c8ad9c57c9792edd1cde7a2f523ca6bc318c7b81fbefc1eb97b4113c91307e111976a5bb749d2fb1f09dae889f63548c7f4e6b967cbf180f3969f5dec8ebcbe92f80fc563b4616d7ddfa6784b2d7de25db5c53bcff33cd3b100d411429763b2faadc6fcd684ce8e71622f389f16d7b64fb8f2ca0e1570e9bac526e47ef8dbcf074be2e7266e1a31d77a9cf85b7cb790faa2c34bb4999a341e33610b3a770dc01541ee513647ad9d93d37d307fea66ae622ec9f41f6afd791763ae30d67e8b36d41f95172e8c07e2fe9ed0ee88c705d542d0261ddc706c6acdc25a315f18d444f6f45c8fd1cea43ef35f0379f7fbc1e82fbf2ffef77f6ffed3ef4fd1d6178bbdce839e97c8ede42a5f73489acc23d7ede5d89cbec3ef1358af01f9917bc2b33fc6e3c1c70f3ec9a0daa2ed5260afeec6389df9de71298513db85bb24bd8b05733b10be496607cec11e52c069a98fde6e892ea67208cf6e5714772674fdd5444c98ab23a6bf55b998700e036cbdfddac68cc334cee06bcc653023fbb5bfb926db6dfafd69908e000f3b88f6624667dab9a45c599250fe75df5fffc95ce07908f16df34c78396b4e58278a1b66cc8d2e11db1ac897d39935cfb00ff76ff94b91fd437eb3c1bef2a1cd1a304f768de76debbbfdef4e6de8f1191f9df9bca93293ea99e2cafd12df7392ca89edc09dd9ec5ba84b675780db293bfcd567a57ac69bce75defa3eaec3e7e4a5bb2fe449ece0f4b76b15c614cee6e5d6ccaa5d13dfd5ccf25a08ae99b5c52019fd68772691121fb0b75440beb971ad883f897a57dfa2fd9f417ae575087d14933b8c9277447f9af4092be3c8399eeefc5c2c95ced35d7bee17e0e9fbac348f6f63533c925639731855f69c78b06746d03eb1ef93dcd686c54bdf1f268fca10af69c33d36d5276ba4adc60d63d17aec03e50a08bfeb242960dc80776795e1782a7578d45aad6970a0fe65377105eba5c76137f6d88fdec5a5638ac707a5f1c03c9c9714d6747d8c5d5fffae6c9be82fdf0da2ece457180764a50cac0ae3f762b16f2e78de14ced22da6dd3a559eb26aec0976e3adeefdebee87bc62c619e707ebcecfca75e81afe06fd9f18f329d42fddd952c204537f69c8f3b98ea4f976d3d735410dabf549e369d3c065ed28ee0fab0de6c780359f52af4c52a3b6b25379624c5a0f67cdd9991d895fb8b381270bf131e2186d8ffa5a91e1bbc57efd9a326e73c75a55a2d5b8461981bf99e4f108308e9e3c96ade347d620a07ca7203fcd07dbef15d86728814b7a9ca02f38c1b5b9f6a887107b100d1a37e59f3bff17f8daf79e9912473ce96cd077ea316111bb189a70e4d0437a88997fca5bd0f981fdc891129fd45fd07f761d3e721d7e99aa88ae09b57b09daf2d2e8fe3bbe5ef691e13dc4139d1f7d58b28e28d4ab31d658f49abbde22e9ce4aef3d32fe70dde9b68ec118a9590471897809bde90f7f57bb278b7980b734470e712fc856f7eaa5d34f8e21e779fc0cf6c43e8c6a5b3ddfc54c6de0218e4d7c44fbb547f98e23efc91e33223ea2dde53e4669031f6be88751453c0f842f9b5586845e8102629321f5cc374e6406d95d5c6577eba276128bb09e4a7c94a6d67c7f978cff43bb0dfde10962b23dc677abd47789b3e1533f7702cf9d53cd02fb64f0ecdc84c8cfe26b0e3fc4364c90cf2be65e0ad5f9af19623f0e3a47cb385ebb1831fe8f7a09884b5769cd08ac99344f181f501d40c996301d458fbd341ef8ec1272ca365c956ef1cc5c143856a1956aec42f73ec32fcfe0cfa98717f54024d8dda748325ffaab85ba23fe9ae355b1fdc539ac18c68a6c89cafe7cfd6efbd7efe60ee7b6de89abe33e8fdfd9156bc87af86f2baa93f15aa9ede699fb9ebebc0fe40beb6d319d4dc428cad5b3c235ed2f3782c7ee5c7bbd5e29f6970c1e99736e991f461cc31116704db5d16bb757e07d346e499ca3d619a4d75bfcc0e96da9f1aba08bc871b419f23ae5d8caa45e475cb7804b2c370d6af5e485bf6c9b987534295fa173104beba4f32bc89b10b6ac8d59ee4cc6719e968afadeb0e7ddad3597d9e24c763a25bbf7197a0f84d7af8e527a766a2e00371dface9cea9a1fa1f78b6b509863f343d676031fb754618fcb4afda8dc86e013858d93d17d665c0783dfe571aa6b8eddffcf9a946ba3caf05ae9d688af4ce388ec9333b3062e73612207c92faabdc4b1c6109b30076e6af1d88a7344fce205dbc72b733dc06fe69cb79710374717cae3d1bc1ec156a67fb195b13570e793b8e70185bc423326ec5ec2b8b2d584396424c79efed2fb453c0dd139262c00e7a212a8ada3ff547ad37388fcbb6ec25c18d48b863db38733eb9908ca67c7d9e59972e846e849f41ba88f14e6e13af4ca5cf3bdbe2d15f703359ffff25ac47b613a71db78ba1f9bb55b71dd9ce6ac2126892b6c1b0c287edbc3bc2097f5b1a4bc55da2e06ccd74afd9cfdb9741d8e42cd0f3bbc74bf413f9f74625578d1da5bbcd75a9f7dbb6365044e9c0c39aff8b924fdc334af4fb4bfb856355b8df55e3a60fd8f38e4e5e98df7e22a3321fe886cc7ef73f7cd2892148bc8e345db843438715f5eed31ff08d81315c96aa07b59c0c6f5fd9689417927893c52458efc18f155bf475b6f1f6ef2a3a6235430831a48724a52b2832becd77654be7e443fabd7072e355702ddb30d3fc9b711e1cb30fa827b982cb7e143f7dff00e36e8cb627fb9eb30b6e781fa0dfde536b0578c71c3b864a79f9b7bbed3f824a92f632983374179fffe596be66d9b2d773c9ec50975fd81f3e3a87f63ebdf3c6acde05430ef18e18482ce8fdd475bcf94c61138b19e4c81fe86548f82ebaf29d6c7e0bc214d2aaa6beaf5154e9c68363647c4218676787c8abf9d1d299f1db28d270573e39f43e2339374af5871def97462df79099ad68439c7b1334223626e41a8df5779cd396eee6d728b897f247ba5aabe4e626690d3103be479442c64a5746d3abcc18b3889f5ebc2fc59dd5a4f52fffbfeb959dba1ed47b806638fd6a0c49c85c8743e5ffdc6bc0faf79d79fdfcfcf1f3ea3d8463fe87d94c0d99a47d94175e778b80d9ca5a99ee03d4ce286415e109ff4a0fe767d857d0b35e17ebfdc27034c6d7cb3efadda605d6cc03b6e6eb8796795eebb30acee0c2a8dc059f9aa5bb79dff6f2819822f5f31476b5e9ce40dcf30d6964c275607aa317db33b16c5fe62deadaf31f611734fc09d0debe3405158038a89c5039d6bb314b176af6a17428d52ec62ac6148ff754eb869c5bd5e29f9b1ec5b5a870fb67f65776d583ff5b5de928ea33530d1be0bada7bceaaed1ed9164b82d92f335dafaef85448ed7287f1d504ef935d2da61b84ee7cae39e24f26f066c93dfbbf814e230f337e5e5f93ad00b7e53e3344cc9da62d4f3a7cf3325dec987bb398b49a74d7906f5b99c23abd2bcce7d5f13d60a96a4099eb20f960b8d5d5848df5d79915d120fa4a45ef32a6be6b4ef1e2b738a31863735f85a591a767b2e8731d919ecdf3d8b4d23708f2bf44dec78b41a9d58afb33f6b6d9f7aa59b8f7acb58b5da637e3a25fdc95c8a13eb1add9eb9d8f7ddf326d7c6edd982feb1227c37d7c7b8af39ecfc4fc429bed15a2b427dfe6eaf21e3f678acc6ebbb3db39481b31c171ff1086ac76db145fed928adb8eeb0f8afd6462bb8e69c0b1370a53ee9ce3ad996b97bffbca788136ab40d301ed83fff201f926bc533853d7c9782f6ce7c5c7cdd3bc17fb7772ab3d74751a8bfc83aecf234e8aed98d4bb9ab478c8b5bed2e31ad518eaf8f747e8ebb719fb9b1db9d2d5ffbcf284f84d8f1ec34aaf7016156b61acbbeccfd44eb31505c574d7cced35e2a451c92d6c0aff6faef6df7f72e8e9723e2d368c5b5ef97f49dc87cd5f7a8e11ecd086b2dc38c722756f5438e977b02cb2de499fc88eb481be221e61aba5d8c4ad09ad331869beecc8c7d29c0e48c0f7cdd678d73b19b8b24fe0535395c7ec29376f39349ff09f39da773b40fac94e29ed5a6f0b99ec16350b0f69c5256a571d4c185b0443bf02db147fda3ecb1a617eae1724b6f7a593236e21693dc8d37c4c9f50efdf1a3fdd39885e301acbb388b8e621b3891511bfff4bd28633c42335ae9b93ebe77cf0e98e06478d6b831db49d0c7358d38415e980ce6c080ba4a623167ecfa87b134aebc37b3bcb87cc5a245d2fc2c19a393fa9f5a33b17ba6ce079ad46e94d55ee7fb90f628eb1cc422fbd6e7e52e76e6a7b6dbb67eaf6b6767293f51406f026b8cdff6cf5bf595b4d7f24ad7134de8df4891a7f4c4b8b67012532d460c04f21005b52791872819eaf72cf300ce86584ac8c7a59b9ade7bd89fe390ef36bb18d7eaec258e4573ecf34ac398eafaa76877b9eafa75776dc40db4917599b21deedf677805ae19e4f77a24bcf54764787d0f3f6a9593f68aff1aa29fe6645975413f5258f1a4f6e9ecfad06bdbf6afd45beb54c6f4125f2f02fb679b6bb4f56e732e6ea2c047f3e2dc677e06a3fa817325dc0d292724991b7416eb9e0ce1c419e0cdbd280ff83a6f3fcd1dc5a3aa9e043fcd7f0363d0fa3aa60e7df44db586bc1d12674e1dd51bd23b925bec01ca1a578c88d34a55c7a5113b3170580206af8dbff6c6677fc897062e66c0c41550d7577d9f1fe0c0e9ded6c395f05eb3da0e680fa86e5c4bd66b62edd5241becd8162f71dffa0bca532e77266b2b3fac74cf05f2ad2eae8ccd03de71f746dfd489a93f3963edbab6012d6e7a868871d29c5b5aa08637e9e50d13b6bdc809c1dad20b8bb1ecd544119ee374e8d612aef5caa2be9546b8ea79e61d8f85219cb8556e3521ad6c6932b7ce8e39b2a99ea92037ab8240d80273f2793da2fd427a1aa0d9c47cdcebd53e486ec70dde37f5b93f52006617f07cc103f6ea884430077ee63feab56b0bee312ec28c7a8c5331c2ef82be026131ab8130615fbbc2983eb0f6e40273f611f0922177028deff6b3a6fc7502febf08e729f18c29cfd43d347aef88178d7f50e160a973e407bf9b8fc208b0d7288b6722a39c5d66ee989fb6523a4ff35a6f91bf85eb7c855d30e6d2a8fabafe2c926a57d9ac3111ffe577b5139bbf6f9ea741ac9ff9c7aabc057f7f134935c67e043a53b157ca55e3b5416b56c0d966f8ceccc37d9828e6c2835e91afe7f78173b12aad073f6055ed25bd4b2583736fd3348605e32d789e61fff98dadaaadee3cef62be6e9d367ee9d6cfdcef0df54cbbdf1737f7fdeceedbc50872b73effe077f0e793c295bc67f2aa91ac03d4d9e36d992bea6777304791d623912aca4756ed0d5e77863dfb8a74312ac2c37876b491265f3fb4e39ec71af2a101f8a7b1e14f40f3f40af8c900f7821f883666bdca8f5e9baa5f8b644ffa75daef93f57213b03ec6e38acf55bb1968def689f038d7cd7ba1a2185c5e4fb3d91838a73bdbe7932d621db07435d1d89c6bc598406b3daab4e629f6507f9b4b9bb0cef61aff95479b628c41c4fcad6d31213e5a18a399110e62ae5d7a477c26c61d3107b7bdd65c58616773b0def11aed7f1bff0a4f8418cb1cb1e6d883161bdf9f279550afa2e7f195b69fe6efcf8aea1fea856acae02310cfa5c17a6e3d7e98c72d26ac39e357ab71433c94d1d7df58fa3716e7395e07dfed7d7fedc8ba8c6ac60f66feb596cc0f535cd91fe65ee2d4866b4d883714ae493ec19ae69fea41827ae784dbd988520a6791c77eb81b12e6626b324656e407ee316f4b45d86dad89ba3e126e01635fd3392e79ccad13cfdb9ae325e48a166e39be30ce15bf0fd88fbe27bef777872d61449f35a74e5beca9675508f54a7807f598c09cc9369ef058df6266bad8fc08f6476c8be972ccb961f34a31630c3528c3f743e639666e7d091c1905f4caa898f098078fb95aa5a45a75abbef4460e9dd87c7d27eed4b0b4d7745e0d8f2bff37f767863f3e079e3967c40789c76837601d75b1b41dae0596cb2df1c059c329f927d79ab9dbf22064cce9fd6fbbb35e0ea2dd604acff3a679097efa4dee2086a815a3e5dee15aa181752d9175f636461d48e29bf33407ad404e2157ed0385ba1dc2890dd4dd8cdd82eff119edd6ed37fb9e1f46fdf38a69c43c9937df2d6d91605d575c13b4b7cf4be30f6a5e79f15ba5fddd53f79b75370fab319d3d720bbd27512edcca229dbacc1ccdc627af8b1de2d1a5401f7d3b88f7bf0dc44a00066942188200fb7fbe63bf56de5d2c1ed4dd1876df31583fab3957df7a48d5157b0f7cad2740f542ac4911d6007a78ac4370db7324ed5a11df59cf0bafd4236b37a4d676c01c76e5a689e8acdecf5173703297842b360e1ffab96cbfa5bee6494c9a582af52dea194bc34941b84f79a99b29f1911e59b7432d5dc22bd881d7e71244cb671b713aab302f80b3316eeb91fe9ed574b66d0df1acecf6089e5dec1bc9f4eb5eebe2c102b066f09c568f6beb6d09d61aeef935c2cf685ff3d9dedce2ed7a4cf64d2efba6c7e32626bf1426c588c8ed154752bdc579f1a8754f892f51ed1bd6a44c9197f4e7fd526f83536723bec49b1f2bcd69ac6ef7610adcf8adfedb3bf93259656bee53a3c61aadabc6f583fcca6193ad1f103baaced18b8ee53f2be889efcea0c527e1f2d2c220dec53c387fb72be223da07688bb29a39c2d795f1e72fbf314791acade83aa41855400f208cd5d8fce139070f181f423d1079e849bf816b17710678c1f446af5029aac5a20d09cde82fb17c069c8ae2c4bafea9ed1f52f429d62b4f720c476375d747731b336f804bdd153a3f53b58e47f9065b5e2f335ad73becf33e0e96f23bcf1dd6b43a3bc89c2b43dd67f0c3da73571ee57ce477bea4c20e98f3f1f5a75c82bed7cd3dfaf894b9721197945aa4d37b33bfa5eb47c4c9b7073c79023a3f939075124073056a0d9fbc477fdec3037a57ee23bac955db8e811af6625b5ae6e8ef9fab73b46bbab1ff4b6e21bc443bc8d790cfb5664ef01b7f37f8942f7d6e36ce0b77665dbee5b80a23c4fd91ad4737cf849f438e2478d73cb4d985ea954af6df35ce35e81cfacedca36be5c528cce3d9dde7c0e51d5e6ad2ac4a53a78bf5d65d3cfcd59f4e72ef4cb6f5ce9e75eb137ac6980b50fe625bdde87dfa2fc602f91a86dfed640a189cf56c7c72bb7d1ce7c5857210908b4965c39caf63d27b1458736d9c445ef8336f69b0f6447ce53a6d94defa869784fae32eda6fb9f9fccbba9dd45e08effe35b6c21cc4c989cdb5e6a295767496a3cee70acd6803bcc45ff62fd99814eae36c6382288b8fd17e413e823f9b8d879d0fd1c66ed376d7805e9bdc1f8532ba92d684ab26c55bccbaf9193f737d5c7a461743be47866744c6e1536b90e653137d5c41750b5f54a97a8258d4601d92e155c8d723c40079fc1eedc5a83217771c05e1f834d2786bebf4c99a67a5bb667ddb43485c4e5a6b298d4f64ff6de468f49d6c7c78902f5f34656cc2d3b5cac5beeec689a5672ee51fec9167ad5a3c233331364903f908df8911f70879d25a066fdd7380af9f1d8ed1ee320add389e7915d869ac618276eb5552cd62950709c621bfedd058e099dc2e5ad203db2e8d48f7b0b2b670b99dbe430d1ab9e1de18c7baf4b4f639f8642569a394ec2b6527eee9061b03b980ede24a7313336e214d6bca418bed2a8d7dca237dae10db73fbf96e99c7099d1306d77a854df9376b3d0af7e4efaa86f8420d9becb9bbf4a6e053a23d3a8d165f7f6faf4755777de22f5e79df9ecf887643837c3e672903ebdb33d887919808ee39d8dd627a53c429bdd2de8e57a9137dfdbc706bd2553cb521f9376976360933bd28d366ae7b7b5f86ded7dfd7db699bd05c036e093f3f02a6d9f0ddc506fa6f8017536cd4f3cf3866a171ccab7dd0eb493477cf03bcbeb1ebf7d773ff1f5c6f74b452be1ef10ea658ff7886b5fc72fabce129a4be3c5f606d066b78623c4898f38cd76abf4606a3c28ec9369b1f1abbe9aa396a991cf673f98035abb4f1be8e5fb50d5ab1a5cf7367f4c3e70741bd2319f007dd7fbef4025b7f9e13e6fc6e8d06ef35f7cae5c1f7cfb741abfd285b795f3f2fb7d387ee73ac6b9f7efabd593177542eee3e079b980c479155773108e4834aa3e777ad39bfc6385733b8ae18b361fb8fd8872064c5fa564660c48ccbd82bbfef492fb83f775449eaf5cc03ba66b1a6fdfb82ffff50dcf4a0629fb24b3d2784fb4cd1577543290e61e3f1bd597ff9b5b3f15ae3631febbe8879aa9e2137d8c59cf0af7759005e4638a5bfe09e5ac00c9426623ba36cdb22aec22f283f6bc7235e8fa43fbe85fc78a1fb9633ea1592c12119619d384a7dc2f989ee1e9beedf04b4c67d3752d51d074d980db94fd162ce06ea53bfc0b90267d9da2b26b1dfd97e697846ec1dacce4fed6c49b86b46d9c41fcfbcdaabc60a714c69305a515eb134a69fa1e689a67ef5acba32e665393e41ef58ac82ab305e99bf44e3ff4b391d549867768a747da1f8e510ed2e169d3b58236e6b9ffcf483e66acd4eef986f553bb2ebb0264379c0fa545e8f6ab7a1180db9cbc4f675c06ba16ae9b34c1db9eea0cfe4e4845c77798378fbbc98303e5d666067205fbd1ad7ecab5d53d2a1417f1bb4d34cca59f84b2f7cefce8f0a7aa849db4ac90be5b6dd1ab1fece9311224f55eeb895cd9a75e6a5b31bc0e7401cd5a9d624f2996f25af72d62936d9ce402d0fcfd588ae1bbba11dc45ffb63a07e02f1a277c13c09e965a5814bf8c2d7a8d5dc2ea99804f47de8d313379a48af2bc53d78dad738b1ce2ff6aa154eb20fbc197131c916b870b0362ca736e1514221a79fe443a795ce1788cb0fdf4d969e686bd60ecc3d2b7d416c40e84ddb25f2f97c46fbbb31b5bb31c231a19e76ad65b5b5ab8635987dc67e8aaa2da07730ce59e3b2b986740ee9794b1b8edb9eeb36206c6617b7ffe9f644b7471de10506e6c06ba1c79675fddb358f859bb98d1eef7937dec4914b789f0741b8f9087da8a29e1ca0d72ab68351bf168c73f79e8099c9d5a8c71b726d72d8ddff25b46bc484a5f1a8b403ac3367cda8dcf8842536aedd75ba39984bc03706aa55e35ec3ab76aaedfa13cff3906be6adf667274e4bfe6c675b60fe901f06f50fe75e44bed5c0bbd7dc5a63cfa8e10d4ae6824f86932fba7c375c8fac2d70f00a437363e59114d370d7807f9848ffad92927173eb48360bea7d79d53c88e9daa3b3e310f15ada061fc2601d0893fa6c0fde72fb87eae5bf1e5897bf8bb360bfa6c1a8726be6273d519de61abbeb3738dfb2359c6389f4ed64128faa6cfdd7b197d44781e322075c1b2829579e26438b3583c3bd0ff8ae38774682b95de5afcfd00b09fb7a646d13c6ca035e31360f07d08deece90eccf25658cc9a69833e60bf18e874fc0c4e501701a75cf147a41bb445d8a36515b18939517bc0ae30fc591d11971cfbe9f6ee499af3db30b976ba5741eba056955a40a7364b1f1faa0392f6edf93d78d15bf713eb0b3b95d2c1e1b87cb4fbf1113b275d9fa294a2bd435cdeaa74a0a039fdffb4cf2d8ab52e132774f4c58efc2082ef108b18a62e2507cb53d1706699eb4c075823c3b9d2f03f1503dea6223e237b42ae64548c10755517e180903fa0c9d4a060f956750bcdc703f57a331f3a4d112525f6aa41aee63758b1b7e41a922d28f3ce83ed3aaad5d8aed01ffb3a2b321c94e1fffa63fb6f642d6e5f0413f22e3ef32b6c06f850138e349a56b66910deb2cbb8c541753e6cdac3688174b9a6fa4afeb27b6643d44215c873951cc90b0ab77f3d7ad6d37e8ce2a8b7abb55241b2b7e19722ded136c1e9cb56214668318b99f9a5195337e1cf7c2ad5e51d1129f985d8c9e0cd6833e8cb51d60fb63d536e5228ad2fd6e1f537b8d3d9eb91a2df51e1eee635817cd6b0c9aa5984bee9fb3263f535ca34d33fe07fbebceb986963636f3b72d393657cd6bc8bd2ce9d4427d42d9923d0ee6798ddf4b1d6dfb4babc6beccee6fe0af1fb867f7f57fc9c638ff660e288ff61e33bfbbb7400e1ad46d069f67b961dbdab45d1cd2ade75a061f7a0cac7a0c6776aafc027af47f1ca3b83bf3a34dc87e9d28da1a397aa806a4f2f843f6bae7a8a76a0bb6eb10b7610f6641dfabec682f380748f613380e0633aaa1a59bca02db93177125838f12eafbde35d90ad0438c0daf4d9ab5819adfdddf2f26fdfd9234c16b8dfc154e961367abfcf5ae7163744ea9d6278dd57010d98dcddae6ab7de78362cf39c51b9b3a27cd70ebe0920f93522c5e809f9d0631f72e2659cd9acc69c5fc3d99a267f28c3855307fa1548eeecb91c34117cb12075a4ef5be807a02d0efdfd406e7439f6cc598c281d687a5f83b26ce9824f7275ce3d5d89b498c31bcb5201b54b0be6220c6ccb3139a4bee754963e61bdc471be01e9c746b33b24ce346fff49dcf7565f801dbce9ab817a22c3824f0dc9ed5c555643b72b463877b9f261b1c79fdd6e3356bfb1f6ac2cd114ec249f2e91573bc5e37d6e033cd99534f0edbcef704bfaef547cb09e7254efbee3ae87bc4a3ca658c0b7e1f7cd4cc1c01afa2573b7146bcb8d9c0bd7916bcc636005eb7b4e75a08e6f93aa17a9ff62997bc6eb27a3473e34924b76d3c090cceefd619f3a0d423d473857b9cba7b74d788f378b4dcc7df393c301e84b8b6d8f886aef7e47182bc8775d473470d27377d5039f2ec8847aeb7fce333188193b66a14f6d712c4e3606a7f76d3e86b8513babfaaa3a55bf06f1e2a19b216401e49a5f982b94f5cb68df1b50e1f67e83bc763b3f3bb992f1639b8f25855641f4b433c301f87ccd5b6e756a8a16edd8d97da175b3d0fd4cb8a71f914f91633d631076e6e3f924558726e9e38aa9616cfa53728594bbd2d48a3e9646523b26db46fc9df237d40ad9b122ccd88fbe19eb80e9bc06fc45b64ebf37fc05c53ca762471709da87f218d11e31e8799d626833cb73002eac318123ffaf040fd1ecf5d8c90f43adf4e92076c1b1fca2dc7df8a3473353705699afaa768b73eb2ad998f0f23e8e7c69ea60df647333fefe993faef09d3533b7c0ed1f31fa28dfff5ddadfedd8d2bbf7b290303754fc447b43325f95f94cbf62eac9b413d280fd19edf69f8493dfa4aecd6a39e7b24569c9320dd8a18c60578a1e3ff3476813e434cf053ada801bd2053a581dbe3123cd60c6ca3adafe6b8f693241b8c18cb0fb61acf18c84b829fded6a372cfebdcb416c8e126aa6dc5f53003f3b5ea2d7a195e7a9c4c10337742ddf734d077abcbed77e79d7f8ff36647377603f7ad181196587f7f95fbb1deeffbe08b9df147d4ab0a3de0223331ef27f1fd17d6e944f886f7e86578463c527d8cac135e3f5b0bf07bb346d0383bf5c4610d08c000601c0acf0fe730e51b3fa37d1df6fb19d69cd96b5c176f52f74cc15a9e94d62966de0b9a9b42f774b7a0bdd7730250dea2d7648fbab306386d965bd2c2cc9de7eebc9b7b8153c9e139da007613f93515f6d747866875efc075b8276c408e9c8b5c6ffef5501886cef775ff8db1d27a9f72be6fd374ff0d5880f9b8a6bed7b55fee207fe8562af88c76c3f7f87a7167635374f144b6bb5c99d76d698b7836f6808b38b60e5fb4344ed7ba21ddb9f407bd39c22647aa31880bbb5f8f96d1c6c8cff11a8f1f5ae6a2bce5aeefc699fa0d265583b5bda51718e9b7ef9ab6ee3f49b703995c663337e87ea77dcada336eef0b7bbbda37decc075cc82eb62ede0dbfd3befb5fe2859fa5111ca33dac69b2473ed8a3d20b76301779e362cce447dccf47dcc191e64847dc9bc5bd0111ef8fbd42ac34ea0075be02f1fbebf3ae8b07c208df379ffb21e4f54923c72dad86fbc95e43e4dd7467844bece600d691249e75f3dedfa87cc28827e76b2cfdc992e2ca0c7b5393a535c0332df747a5ebe37d2ce27fc94efccef3aad19c51d01f966e352706e423eaadb82c29be4b52ffc03d85225b10efc410fbdeb3f5a842be2b27ce057146186641fca6330331b005f08bc74164056e691f18cb853c386e7d426d4b3f665e25ea2524bc69e0f2f94dfb18b90eb0f7ea81f3d76267e25992373a1eaa7703aca3b5a4376a98e78ab194d9f082fe6c8c790d8979ab2c571f64c314e11ccfabe637d442f82c5849f1b9227d12956eafdc4708be7832f49e5ace292bc21a118fea0d1e6285391d574eea82f22a97a587dc35497e909c975d6e35371cf1d08396b85bb92afe6f7f175b17b7c7e6a2afc43a104b773d47bf02c6df431c9a7a8bb61572abc3ff2f9e51f3e3308ad1e7019f3ef18cce570f5023b641ce601938c9167c2e518c2f1cfb36accf2f268ed69a42ad8146f3e827801d5b20fe10790ab6316025a82fd42a42c6c5c3186ea676dad7929f706d527f445e8f44670ff1bdf7e1f60feb95e591aaccc82e1e12cd0ddb38aa891e48974d01779b2a6484f853e42252027ac0951f3bc823e68f31c704fb20511ed6a888e7e819afe174d778d6d790265c236dba6b0087b51d229e7d867c7117897cd9c229305f18e0df0fdddfd34836a0ad9df8d17969524ed004db308dc1ced453f0a79b7882764da5f8ffeb27ac3fc135bd74bfa69cba10185baa29e4d6711fb99413d9225ed883feb1a4d7989d549e3242e27359b4fe07e7b2993f224da301e1eab4cfb0e43d69c71e6b492d98db3c1be26739f57d5f87a37a43f564b4174e644be6e13d45fb8599be10efce2638c41c37ef0f1fc97ff52c073e47ae0563cc6f6d42d63067de3be58e26abfd81f4990fd8a79535de8a3552b3d308b98e303644dd9cc2aca96721b1743fc12761e817b00e32d315d9807ce223ebec3c44c873e4329e6e4138913ed7608e6aa8bb37a0431cee9a31fb4a613698522c18932f2504d4016bc4fb61fde463897bb5f38959affd85393c97c4535d61ddda9d19c103d5e1890fd177eb9b6759d1b3c46d3d9a8ff959bc76b9fd83f64679cc298ef91c037a15f93cfd48b92ee079ff71bc629e173aaf96726ad2bb382b0fce1f37cacc07caeb5ca2dd80b8bec439da130727735170dd29dbf66b0ce30077e989c79034720aa3bbc77ff52e0ffff02e17f477c2cf68c7f814bfd01a36949b5bcae0c87c7adcbfb73482c7958738edc432cea80bee231f1cf213baf5766a77e39048adffe6a6ae63913ddd47bb216123c54bbdf10107910046b3017e408d35601f81b9898c5f545ff46dc675116ec72d8d90fa2700f709fc97a1d5300fdd9970666eb6019e3fe404e0356bae1fbacf111fd1d09e16c9aa5b47885b1be8dfbbd527f384aef60df31c1a05c6971fd15eec6e749f091baa283718dd6876f99f91fd7aa5f113abd471495fe95253cd84f94d3a3f2a9c683d283cc35ae586a9f2e8f94ec4c59d2f996bc762fdf3f093f3c55d7c893c6631eb0a34e59ef018e91af391793c5adaf4b7acb3c79d5f6d3e26849197b673e4b887fa29e512b0a3bf8e621bb8a5578c29a6a75c4765af1acd4f085cdf15f48b43dfd7b534f46733c41dd4c413a35e891f067b0b32cae95d4f06f787adc603c2e8548419409f95f9b56693c68ba43f88497f294e0b937c027a36c57cfe9f82b54024d7128fa6e680de2b97ef83bc90a6a17ba965f0189aa4d19b1c0dfe0ddb61887ff22e1667ed3689d730885b2bb91c12aff3c3ff506ef26430a737d9c2c76efc886747bffb8d9d7792ac3e699d081c7ba36eb8cf4759fdf5f01d601c698dc5adcff7f3c92799d4942f8b35e65e05e497da7c1f413127c748f8dbb02da856f0d76b289c2bb9d7f79dac20f708d7a7d8c97ce2b1826b508c1c331f59ae5827ac5534de35e4a5210ff4ba6a587bd821fe2085fa9efaccdd5e6bd6bdbf52dfba9c5e568dee95a4bfe9faf867e949c6bff367e7127bfc9dd41abeea1a4953218629dfb6096b36bbeb2c92de837a39b146e1a4de1f92af39a4276b3d423eb16057e54a6b90702f768c5a39dd38bf539c9f2e5f4ed46325db7abbf8324e8d5eefab1df5cd48c563c2dc45fe32e59ef5fa71a97b54861663f50aee874b8541b8735e67ceddfee379ca0f3aa7dec5dba8cbf3877b43fcd5f6cc3d3856bf8fa69f25e557e33c168cbfaeb59e433daa4643f253d4b1a6de9fc486f50ddc79cb894ad8aee8dcb741da16dc832195eec3aced2261adfd9b7b539de834e8ee5d92964439661f49f2be3af6b604722d2fb389ead6a299e4c595e357ca750c96dbe96d9d2dadfd579cd7366863ee77b5897f97c7330dacfeb362acf78401fbee36df4bf600fbaee32bdf1b635b8a61f55cf23bddc6be5972cb0919f25a7feef534f5f72026aaccd79fdfe77a6f8393979b3192d5b532688de605e196f55a32f5facd0bfddef83bb203845f8b13fedddfdf59bf23d5db89b31071677f7bf6ff47732136356a99515d80b916e079eda2d15cce106b02d791d39d3f34be07c2c75aa5fc3f5833eefab9b3559d4d8baeffdfaee17f1eb7e0e5cbdacc31cf8931398c5d5e1c28cee23c8591d11a0bf782efddc21abc59abe15e3f576f43718df9f7b505f9fdb9a4c1fbeb46dba869b3ffbbe7a03d4bfa59881741adedffe575ff4ffbf156ffeaff74ffb1cf94d7dc333aa17863cf793dd685aae13cc167d058e51bfb235c05f7495241f9b4f01a32c79c5d98377e159e7b5abf177b576fe79e3806fc70ccd814f5517b84c5ce1dea45a8cd9feda7097e15d50a6777e7149fc9a06166c2994cb1029fa5afe4a7f8b55a30a7247221347a0ddef8b4e6fd1aa43c64bf0630bf96def095431d51391f84cb2a927f372ef46ee023bdea39e41a1bf20a7935e18432e237fdbbef53f7be14ed11ec25fec17f49fd13f375e0fd0df6bd40137146fd9e347733e271637f3265fdc79bdfd1f73007ddcd536cd59857cd9817a779a79836e5b12caf43aa09402f4467ef3ea2eb50fbeb3facf716f2f33dd734729341ce0535971113ef736d13ef8dbefba79ad4dd9a75c127ef7d29f2c9d5a0969c773ff0b34ebebce7e4de1e7cff8ce673c0fadf717257ebf0c3cc74f53e35585795aff58bfb749973edf61ae28b46db0fbf1f9a6ac46b3be2399c69ed5549febcad24ad758bb409822ff1228f9b1fc9e1359ef87adcaabd1eb77ebc52f5c66b71a17be24eeeed3e4abf8de910fc74b9677db1e60d79e27dd4fc9095511346336ed54173a5313787ac065ca72dd258c75a226b18e761699fb7adb9e6da88cd9af014555b6eb91676663cb19a4fe2fbebdfccadd8ebcfec2f9f41ee58e6c20f615d7567426dd44a7351e17ed47640dafdd8ad1f7aece7f4b2229d38ed0ba6c5037367aff6c4e3c6e782dd98ac512632d69353fbf226a628fbf93a1047855f6687449f1fb01ea69fe9f5cebe99e536bcb7abd8bfe0c4ad73e279c4bc013c8fc5eb30dc1411691269eea738633b793adcc443cc01a6ef7d934378e8c681df21ccb967d9efd71ce6531637efcd6b77403ec286f1313446e4871f0dfd6edacfae6f7c0fb2d160071cda37ca5efad4bb93ffd6715e49fdbc648b718df4ef60ad984b3c3f30372d9d05a693b86a3b739db7cea7f9ff51f76edd8902dfb6f85742d08cf6b18d10630236c82dbe2938da44628c1a2f7cfaffb0d6ad0a4977efbd7ffbfccf79ead101b91455abd665ae39fd87ed7049d84eace94e32e258c4bc9013cd4d5b8efb40c2f3047d45cf410e92e1f2bd33643caf8d5ce8496a37fdb232277f23b5bff1cb9efee497f9eb7410c6636fa1f02e9a6dab95ee7fab9f8831d158f217306629fa72654dba0614bbafeb39e296ff87b1d52654fd148fed7e9c85752cd6d3f7bef575ff7f7c0727543854ff4feff0e738f6ff842f7ae9bf4d46849f4d37f3c4223f1978d9effb94dbd178f868ce1514d336bfd748f4e8a9768f3101f678433ee6f18239abffad18c50eac47aaa706ac677ef5a52907047d5eec8713a770e45cfdea0ef0d4b89cf70a502348cb8d5ae7256a72478c89de3ed2f8c41aff56fbef912feaffda73838f98d600d4458fe166db833e1e2f0af1bb3ed92bca6b520c08f307f102515c91cdd7cfbd9458af8fea8479b0196bfff6427f1b059703e7beb89f82783793f2aba06f8075cfb9f5d87db2e8da6bb936f9eeaf7bbef6b3766dcad9cc2e94e72b3f9ee93a7cedf196ff667f1c6f9efb7d7f64fd6fce17268895f5ee1753bef657cbb58ffc37e7a75c7b942236cde56b17af726d584f3e1f2bef9bc71239a6fd4eed971223297b54cabb77b5e7a35a434f9e4f7b77a577ed9ec2377ee6913f95fb10e6d8e77b17b5766d85ef5d3e400fd122395974ecd93af0dc24dcbfef5453dc472937be7b213d19b02f27e2f88aec9523f9e2be1947834da171c7fe15c8e9961662db401f56bde39333c3587c7d2cb19e144d0f768238d86707719138aebe1b187100e537e7aaff2205fdd10edbcc88f799d4eff2f52f46dcfbe9537d00d7f1acf6ccf831df4acca9f9b219c6c8c190f855fbfb406c33f5351d7df2076b95176fc452885b31f633e0c8e4e7ad2baaf57884abd5ded10b93e09372306483169b726ad678c87fc27dd03e38663dca42ffdbd5aecb7bf465ce1cfbbfcf943f2ce3f1147100bb70f3427c16f077585b84fffd65bc27cc1f6d9f97fc17eee1709d35d4b452ee29c7b515cb5e15ea7a58849db5cb07ba9f7ebd00ff9f893ddbb1d61e61a2a57fc3b0b9be53127fe6a5b4b0a698f5b4ba9d961fc915964cf771ba8b35d521ca2ffacd7ce8dd5e339f69d7a4da595fc7aca9e7613fc4dd532e10def101350693b2f59e414e5a23e92646dc7d40f1761c0ca9ef53bf1761f1443703f0993ef926ce8aaf5fda88534e92ced2e53810fb0357f746be86e61afc1ef7439a4ff2cc0b2b31384d68acc1cfe89f9957f49df889d26344ba5ad6897e7bdd77bf66ef5d3e3fc01a75144717e69432cef78219731ea55f13f259e2c133f329432cbbe3daf528a5f73f21a7c8af46ecda957c801a8bba9071b4a576b7220ee5af80e3b2926bd721e7ee0e929badc7b5cc3beddaea19c7ac0be43bc1bdb11effedbe785df03f4ddf3130ebf571407a4b23e37bd7fc0c88a1fbe0774ffe4bcfa0c55a37bf5373df2e093742f504f4d5e17d53e7db6fa0f68cb09eaab9ee5fa6f91af9a0a81faabcf854b7cf930bf1ceccadb1cd36724a3d55692346e77f9d99f548dc7b5caf0d9290d60be43636dbb63d6d1426be833a787121fbde453bc7c8bd15d999b81edb726f5641f3d8deb25d5e902d23dd663d5f5eafbe78ef104e612d0622bd58f03130c6b9bd0ee5ddb51aa6f97c462ef0f6f7faf3ca387c95a8b712659db15ebb687d17bb4771ec817f67f78c71807956be1356fbdb6bd581d8ac6f9f07faa3161daeb98db43ddf983fe588f7f06f9f4d8b3d03cefd32cedbefd13c59d8c45752dae65ce278c5cc815eccf7e3fe502307dcffeb7c6e9b43140f04883d6ae68ae5da6853d4f8bbceb4e1afe0de8e3d288df890ebde6abcbdc631b00970cc6d1c03bd3e38f6fc87df0d1bc710536cbe633912ffd598f3f1e03a57908f0970098b8ad70370256ce8b7daf8727d14eadf906f1a740427047e28fb8e71b88bd0c729ee0fa85fe8d2d8cd001f087d1b65ea1afef19c9f9d733c17ec2b1f2ede1547b4eb3f4436fb1914f364fdeb1c50e3583c90ae5ffa1131b6bd1c84755af1f7cfcbebf9508381b138cd68df020ed3b7a6bf8cf907d4c8a0e7a4354df7c4b96ed802da3702b16130666f37bfc983eb5ad3e7d11acf11df9cf29079c9e72e65ddd29aba2cc59ee2be0db67742f94c67e66875453d3ee9317736d780c15600276cf4417996e5a6e4baa61a1ff1e58d3a9559cfaae45a7c5e40d8f9eb793847f4f59ed0deaaf1d3acf179061c57f8b93c4f6bee96ede1be698bc9aeec9ead90e6aa5a2b8bfbbeabe7a1286f8139cbbb40f6f114790e4761929c33e2a962bb5cd46c07794d468e868deaf03c80bfbf854964234674167cf76e30676ede5f7473bd28e0fa41daf589fbc156bd92aa8766998cad19eddd6bcc11128e334d2ee4bbccacbd91cf2f282f2ff1246076d8377fd1eacef0cd287f02716dbbad2f4701f1bbf3b1c209e81d4e05f15319fe79e5501d3878e05a85c5e7c603b229d69ceb8f03d424f7b6c0a5e53a536730363969d25ed4a83393962dda0ac4c19535c7f958c7853d7a4073ccd5f8a5a02f95b86871ef40adcb4164f79f4d1f9eeb235baac7ce8977d41913c6edcc9a37d68b19bfe6d5835983a57e84316af014dd25d7c9548e6fa5f0e3c8b3edbf95cceb896b03fd8508b9e70a7b6e71cd1ff2232abfab7ce3e3f462c497a729d7f9caa9b13fd425dba4e06ad3ae3eb4b37ac7bd47d607dab632094fd7bf29aed15a7168e0f8ab67ddf1f997be738b376cd65fbfad3358d7eba0fd071c2fdbdbd6dfebf56dcee31475e0422f5b6a95e287280c7d047c2ffb683478268d7d1ab3c2ee90fd38dfd88facec520e97e243d0da5f75691c7d0b6c675c8f09ab7c04ad156f05b5e34ae135a54e3aeb44affa37ac389e8ae9db2aee008813542f98cab5711d5ce15aa51783f41365ed1731cda760a0be31dafeb9e5377c41cc7140ed9430af5e99f57fe1dab41716c7c417eaeba79c7eb10e8df884ecd2643476b16e32c7e7382e5c8a49cedd268ef94fdf55cd531d03619fef92a93edf8bf3ec5eb71b302fc1ae217755ed5f6d828aeb10bff36bf1da87b589b887b87e3ccbb756fbf4d71c797dd90f8a4b7eae85b3c2da733014fe2bced9013e7bb46acfd9699817c28ef3bb673f6cd698c6f51c60ff8a7eac18959e814bc856cffa7a4a80dbda5cef308eb2cea72a6708f9ec07e4f8bbda6f8a7b31cf5370ee31e13ccc9385cfa4fa3da16797ed6bdd364ed447e383cdccb65ffc6cef071ff7fbd38cf102832d724052fdf26be9f1733f72cc003c67182b24bba93947198762cc2385d197b151bda8dafa5bc463c2b977f99eb807cf606f99d35eca793b757dd4e6a3babc862d435ccf98eba09637f46dd40676bc6ec2bd63cd39531ec90644ceeaef6b2716ffb1f1dda0ae44eb59e68b3666a5c43fb1c24778829b2a19f3453eaf81cb52718b7c779fc694ed6252731cac78930e0dfc48e019796ba7447d683defa2ae816b14fa1cae630dfe47e3de09e1a5bc91ba1ff58482bd52f34ac79b414f09acf309627c7d6b7ca27d62325a790dfce1267cf3180fb1205f8cb093f696ec13f52409e64dcd5fa8092c28f7e688cdd3ae4518e35a71fac13ebc6dfa4b4fc093748d818ee4abcab74f8f57fb81d783f53c9c7986add0b08401fbd389b2a3c03558dd2f645e1eaef391fefeec98e78356500fedbe7f9cd19eea0c22d34742dc9596b7101c4e7a9ca15dc275739abdde8c0de798f4dc76e1bdfc617e83cf0bbd41d5cdb74f24568e1913a3ec9b8ed1a5dc83ac298d7f4bf7c39ee85d96a8cff962f7b6d185e3e827eae528911770ca1818e634b9d035654e1f9ad777aedf1772353f6d3c3f07ac53a4d905591f4112aa777da9238abd3ab2b72b9f80f89cbcc5d517e19a6d8fed8fb9ffb1c6d660eaacb6ac3926eb96afbfcc99b72c43df60ebbbfeb7735be218cc0fc13a11ff56f793d47bfebc3e3bae9bc773803100ed5b12ab69b6272f9a7b6e57f6dc7e1739afde16efd508f7a2cf12b975f1b77aaea82e5a6c5259cf3cf2c5e15d830bce5927629e02ecbd4d8a7373df09d6a0e1e52711f9cd5dd3ef091cc4bda2feb3b79f633f10e17b17ee5a30b82d3d20c8c5079c39f9c09d4bafd62570bb980ff09d90704184c19972cdad917f247f9fe6eb754ea2ff9f556ea9fc5c8531b4f97db3c30e734d69f9c0fd874adf01b8c2ced4671d83bf19d8542b0d94bfa5c6af638c5ff20dce18f950b30dc77fe4531f43f00573e21e8a30160e4ddfd3e8670cd61cbf9bbe81c4cbfb80f08235af35676a6016ab261ef55970ad548f893ebfe98fd4f6d3714675ff80791005df1a50ae21ebbff3fa55bee9ea9df2316c9f9dd51de1527c5a17d0a3a9bef764188d30ce3d4f5cace3655bffe63af56f8b72977ebc1a4bad58fdfb8aefcf7b6ec0fd9ce5665efdc43da7bc47ae2865f717f86e0b77fcc1381ac2fd3facd0a72d3a73e4f9d7f759ecefb6a7ad63997e12ced4af5e9adf8cf61c759f39d902a5a306f32fb9c73542ba405905eb2aae865a1d694b58617fb81ac35e07315ae4bcf4685e711e48ae6f2d88278a388f281fe26cd997a4786c9e9c30ef51e6f89d1ccec772ee8ef4ad301eaccb6733964f3b8bf587da2b21af189c08abb1c83d8a6f7a4dbbf54d4de2723daf243e4f38b60fbcb6fe592d9f587b4f46dea6f6d646bee5d288e96ceb1835e3bee198732d301f22aef56a7bdad73c290c7feec9ae085fab78bbdbf2727a7f84e07bfba65f4b58089a17f8ec840b14de42ed1a601361acc5260e74ffee0539c361fcd4dea2c7c4c6bd35bc33d63d675483b99462eff498a0b7600e28d2a0f536c41d175d284fa8d5ae3987a230e95a5c6df588d3c3573a0182fd993a1ed7db4c3babe54fbe899d8dbe90e91fbe07cf77d9d729df3827ac665e7e105e26c8502ff1d2272e9ee31c39c1225b61fcfe33f158ee1dbef3dd356c66e03b631c67c9b1d1784f4147c58883200f60c460dafcd3e23d2de7b250be0a62dfc9de6b7e0e3c03ec5d6d3e94765cef99306dd9adcf752aad84e6939aeb93871ec5e1fb65faf8c7be55fffd1c614f9fbdf05cd39fbef1e1201f41312bf76b704d447dc3a7e6983dc9f3a9677872d0df487dd0194f81a332cccb87e7e14cf1b166f7664ea81855b7bd6a7a4d076d057279d9aae774cd3df0186f10af683008736fd8a8132b9c31f16c278ed7a3fda0d85437f9281d6b3465cc4e3554fe3eafe13e5f63ae3dbf7ae7e9e17edac4faac29ce3d29dbfb648d612ceb20c5b1ade97bcef288ae3d2ff3ebb5e11bd2f1c242dcb7e5b6ee2b5c0b712ad4144a7de2c0c498abd7ecc39ad7e92fe2f40ddc1f1a16c9bd8016967b8ede0f3d0ddb07f5d3b7608236e033a51e3335f64977b93e1935a1491c114ee8827cfb69907c507e3f567a7509fbbc7cafab4f0df1e96faa017bb33aa5b9fdc17c0ef1601f4f49c7fc4c3d119b807a6c89532f8e4853de0a3c3c96c9b51779809a79eb63c138e4d042adc94bf6ca3c0abdec95ebfa848f76946e05f9e64ec4637dd32b9860ff0ce476be085b185ea04656025f30d73efc9ce699992fb8ced7146cdcd507b1a8eee96f785ed62dfb7303a3097b623317abf9656a1cf1794680bf64edfdc18ded8bd57b239600f4afc5175575a31835cbaedf6bfdec788cd99b777e224e704b7320fdcea6458a2bea37d5db7a8981e10a86c85348dcd523e24226ee96c8a27efb8aeae9435cb35bed37d06bc0c7038859e9f7ec73d2714fe116b00e74e25e0538be29a4d786ae9f428cda7e7de45fa373f5fadf107cd784cf455fb4fdb93df089e9dc175813df5cd73c779610b79c3a17f24cf2db2de59db09eb189e0bbe678bdc3cc7a81b983bf99e4956bdcc33eecb99f086bd77ed2356a5dc168fc447d53ea3775584737efe80966d13e7711cff98b63f6b539f6a5331e6bdf6be867b39bf16f8c93f9aeff307f8a11e58398b7668b189c19e2c22d5ff20f9aceb06f604b958f13cf1ed1de1e02f2732e3f4eedfddab7fb99ce0744d87ac9511c8c1e54ad0fb1815b957c53834be5c43e8913dd25e81b2d1f5e488f85d7e784f635b24716e134cb2ef981cb91f4444e2d6f384971dfabc313efbd43cfdcbf33d7c83fc0381c066176bebfc52a26d61c35f917c9b83bb78c1a29db46ceafe69eddc48822767e1736f215d267b8b5c3460d0dd78037190dd89723bdcce806870fbebed65baef64da9a38acf0b3c12f22c1223afcfa8ad392b1e3a54d3823e50f0d95bf2122a2f320a932809a8cec85cde7b2b4889a748ed9badbd58c110b97893d29a2796d1abb6a03c19fb30ae198b4c95fe25fa76ea1a5fc93df817414cf8e354f5d5a18f01be42b60d385f4873b11e98f3ce53ba7234776ba52da6e6deef5e036f71247eacc4ec4deb4ddcbd694746c103e33095ed297611f7a62abb700e082b8eb664e66c1f8d3e737b6503d737fda6e8cea98e81bf592a7e47ed3775f4097aef6ce34e3ec6a5fc6c6fd52fe3d92e87bbe93df59dabfb38bebb26de5df8cdd5dfd66cef2223defb3570ea79a17071a9b10bcfb7719fd9f760e4876acef55b01f31ca1cf4d3ea97de03e0588b3cf9c97f0372be4f1f77a8c6b1f46d396981dec80e25bbbed43a17bc1f54af2153076d76b7f01e7f9e1b9c03e632c27389866fc4e5c7f6c3b075fc63b00c7700fb52c73dfa19a12e4838883edeff9203397523c508f42ea281b077b00e1b8c5d6e5e54ef89ea03e5c10a6b5c9d956a719e35c3cf25b5f5abebbd6bb20f1e67b03470df7a47179a71c6bba5dac4d8c77f1dee0cabb702d83fe6f727d319e0f707f8c9ffbe6ffb40fd2ffb98e7773bec109a1616060ec095355d61ed7ca7db441c1fa056b15b3264efe137d94887472542f3dc63193ac1fa12ead1374489b6370bf7cf31af8cbb477bdd7127c51da1beefc9431b21dc4f5c5419c528d6bf7c4d8c31fbbe85edfc3d6275ff20b2a6e923d9fb0c15ce71e2e1f1e4d7b5017e7e4b5d50ef09844f5fa9cb4f75c900e9afe0c50abaacbb635ae6b089e04ab4b7bc9fe4cba30befa36c6be69c9f324fc3c057fc3e2cc63a85de7b9e6f13f4c292f48b61ae3afe08de781eabf837b3cf23d4289c146d8ab1ae1fe7aa4182b18f27380fdd49ed1e7eb17b53c23e2a5eaf1d4c83d767e36f292ea1bcbef6279ae52e6964363b3c05cec7c3da6da846be01c280f24df3d981a78e6eabfcc8ba88d9fcce3e4c318630d97f2e5573731ae81c162fb84ba6cfc4d9c9f97bff21de9b13a5e976b1c7fe52cd4b82bed3ef710e2b8908ff728bd70887fc3f802b9483cedd9c1a765fc17633a7fa1ded0753e8e125cb75365df931ee183b11f63e4abb1fb33164bab57ef7cd48c4aa7466e70bfa8cc9e20eec369f8c6c148bed5a2fad9c69574d7e4d6a1be01cd9fe6eb293c82657027c0f736f6a1bdce4bf0ace1d2f0ff8c5f81ff53bf341fc7bca8c9b749ff7f132e923d630de9ff9873c2eb74ee11df6adef7bd7c6ed8471b7b16cee15b49b913e0f8bfadc91ef09b77a8cf62b15e1b781e8eeda0463f30e3351d27abfc0bae334a9fb4c651d1ca91f4c3e88b0a360d8cb57dae4c8eb5ce874ffdc3867f21b61bf266c27fd3c4e5632cf985980af295a9eff6c9a80b539e52e26bb471ab6903737d9e7826ae1e63808b4f7cabd897b2a807535aa3505f70bb49abf62762bbecb29927abaff76ad3fd440ea74d7c31f3acd49fea23376e543f5e123356c0fd97edf0bfdb34c0f592bf78e07e44e971f402cbaceb4db2339d7f8aef89a339c4bc5d35237f95fa6faff192693bd4389c53aa336654770b1c9e131a1e09e6cbef13c5dff3f78afa270f579f1830c8a74bc29c576a3e1dfceaa7613f6f7d18d3d6b6fb3b6a1eb08602e420d617da2f9fd45edb721dfb776de2c3aff124ef39f5ffcaf7b13b7bd4b018713ecad8a77f53bc6625dcdb1f1176f032078df6615921b6de493fd8277a0bfedceba27154eb9cd1469c9ffb7562f684ed7dee5f3a74a6582b588cd29b3e99527add81435fce19ebf7422cf74acdc16ccb3d1e589389fdcd16e2b72cd8bd506e5e7076ea3e6a3ee551876b6a14933ae9186da95536fc8c06967fbba05e8b7c95376242c8cf3ff443eae5f56ffa15f55c5c7a5e48df86de7ff2b9205c3ff7681535d6f56acc637511ebffab1806304f15b7ecf51d0837c5635c5f9fe32551b50df92ee6b53706c797368f1bfd92e7ebeff5fa85d1d3c571825b37e284b3ac91c79ab8e11a7bc89770e648bc1d279e577858e3b3d71df20396b4c7a6b00612e0e6774bc46f6589fbc73a6a510753a3af2c3b69eface12620267ce19a5a4ceba5bc5cdf69aae14d17ebe25b5e7418d701e95b8ea7469c7f30f741c259b561f832eae9513c99639d5b09f650e6db14deb47c7d8c5ef5bc1b6168c69fd3a9f99cc8dfcebd8ff41e452ee365c4f19bf154cf0565538d13300bd9eebf704ff7760cc73ac8f71cdc3d3387a89673d57331784dbe463cc35ab07709b82eef76c206af16acd3c78ef896d41fe9b2666df126be8d9ecba23d3a78a8044302f9d223f5d52f373c17184385ffdf12763c907e50d488656ef9bb82d684c220819f48d761fec9ab7f6de0f9d7bda4252f15439e0f6c7ac679a2de33f553d9e79d968323ff4bc6dee484047bbf7efc9ebf22b3888b807a9485b321176e03f5ad606e39571fdb8c5775ffa93aa6669eb663f28b9576463843e1107ca5716bae37ac3b30ef44b129ef8d9ca55df4cce72f3f2649637fd6f087415635b044eada8d7a7b15723e4ccdbd99135f5a6ab1da1e2fbc1be9993978e2f2dcca5b61a1de6536fb2f8c153ff7cd5a6c8c95fddf1aab7876cff6a6855f947a66ca9b5eeb7d8fb083f8fded5238a000bbb389dc96bcd02fad2fe22c5c31d5755daafcda82394119f7157d935ffa65c6c882cb2a3b1c6b408d8d7abd5a73546a2dc9b364876b1ca3fca172544588ed3f16745cc32ee19a3c841b65cf1567ab6faf9e4987acad8fade9a7993e448b2f97557b13f7aef918704c8fc9e458a36636575a831003c8ef0f7bca35cf9cc103f7f1f3f3356a4170be168b915f7de6e79836f74e85eda67c4c524b6fbb6ee75f78ff56fe1cec0ff21ce087422e7724bea53ebed3069e595da7f93e707fe02fdf0c9e6e8ec37d206ebcf5773bbef4a188ff54a76f184bec03977cf98fe34d8e4bfffeed780ee5ebe95a098b6130fdd3fe4698a6e90d96d0ec49d57c69c377c7f1d3eb4ef87cc169dacc8936fe2d1f3a9e116339e9a1c1f1da8873be8be51ab96b6563fd5d427bf0fd21328f2572ec558e818da57b9cecc4f5064135f8f23b3f353e90e042fc728b3a08b98fe2af387c336fa8efab25ebe2a67781d6df413a22e590ec59da09b82789f8b25e7a05f6314eebc109355e67e528a23abbd29691fa87da2fba8aeb58ef19cf995bde096eb1cd9473fd3e0707bd73dbc033eb0b865fd9a8e1a85c5ae2fff3f9a053f4c7f38ddc9dc2b84aedbb9b900ff6c0dc5887a5fbc3e05ae3fa11f20534f38093870ee5c89da5e7925f7f10fe9cd52f8581a903ea09aea5efa7dcffd7f303e2af4b8eda6ac4df89457c23e528001f340d3ea9c7bfacd9e73cf1b7fdbb168f96c3fde1c4609b67605709bb9d482da776cf18d7ad961223dd518c34c57d4a7a8c1f2d9d83aaa45a00f7b349df7c60cc5fa8279492bf433f9b701125e1b6bfd2e6b1789c93760862615395efb73c6f425886fa376b0a4de2a83d3702cf0ee353f3dae49a9f1963796ea356dec46c3b0baae3d81f8db899aea163c19113426956b5f13ba60ecee5199dabf21eefdb3df7baf1f729ced77b03cf26e88c956ea1619dd716e5758ab70873abc945f21a3f78cf9dd5e9943056d0bf36e31a72e97852d77fffe05ee1a2266e10e483700a8762abf96680bce47db34e9c0b4e497be7dda2427c61d671d5f78f578045cbc7ee62281cf8d7b9a4731a07f920d4c60dbe8d57dcf8710b2bd4f1e9abc55beb359fc3c43f539f16d5fb8aa1e876442d3c67cb9875d15b782068bf7f145d348acfaefb82e4a5e15ada5e91324649f393b23dc72da5e3d1fe7509d2db7dc78fd98fbee86bb07c13ffdaa8d5801dd2b0eec45de29d429dbb2d43bcbe367ffda1d455afdf52697c66e589636dce53723fa88c7b9cd279149f683c14abbca12da1d7dc40e30b72a7dfe8a394a07392525fd5cf0ee57f353e9c8be4f9d55e300a93e08e7151713a35ea6771f5154d1b750ea897b2ff53bc5753831b94380b3bd4f75b584d5b61d431651ee8f37388f5aaebbcd8879b0f9e5313a949f7b82e0beb7f059aa15c4fd76c94b6f74edbf36cff6fce51f52cad7650ec4572d34f32f10ae29702dfdbfbadff5ed599529ccf93acc1f771396c685e2d284fa23849a99fccf01ba9260c7530e28eb2cfff763e5f7fdb7e3efb4ceb1de2d0a2995d12c6e2937d83cb21a21ea919ecf3c3a2fa306b56ceef4e134b447303ec9ec27dab6f67608bb43147fffe63b1c65c3be441b8fe337fd84ec86f292ac1d3cc475c0bdf5eff4e7d78503b0f2e53c4ced073f9b5d86978072d86d5d6d682cf2b4f8186613073fdf03cec0f3be36df26ae8d7d973c62a34f865eddf0d5dc335e576bfd10b4d0f05f77dca7de6757adfc6c32efe5e029a2d30d7c4d68a3f78befa65804155b602e627f953b9d299c16fd41f84d303f0fce42bca03d09c610e54eea5b33f2c938bbbbfe33990132f6b69d1ef0007a8ad57dbe2e7e1bca2d2b6052c028fbbfd43fcb929cfd73de159e7e2e31d9f3a2ed61ccfa8ddd1d7f54b8cdcc052d901c0e95cf7104da3f5d91ce37457f21eb33d612df339180db01fa5bae3f796dcbe1a77b4d9c10dcf668239823ad8622e628b367d0adf1cec3ecf09f8ee33c40fcca8ae3fdf906d6df09ac6d1893869a638278a8715d8ab4bff8578d5e782b1ba59e337fd81f0f71dd421dc631bd7106853a8bafd1de7cdf3b5431c8bb34e68e0a120efd1b25e6f7a272da7a9bd81fb54ace73bb0f67111de5cec3781da206b6e20068478d2478c0359b30e17c4ada3e05e69adafd7c8adff611ee73eb23df21e9ee838ec4f7cdc32fb7b740e60bbf720f821b4499559779cd733c6a46bc7d046b41e43ac96961348db397a214fb9b6e93b1b31497cfb7be1084ea9d67fd79823df61f4893f5ac5fd85336ecc5de4e8b24fcc55ff6ddf04f3f7b8bd6c38263bf25c5a16ef7bf1abe8e7a2dfafde9b715ef4cddf827374cf5855eb99b9d5a0c7e4252ebb53e6b779b4962ef546880ec2245f8d45e722ead21a8a5013e6d959311720e525e6a3f409f90cb47b22bfa8b3ba3eff2c4c826e4ce3fd709834317e8481a571677d1b9eb79413e3794df1bac67501d722bf6b6af6907cccd9b6551f0deebc4f3976f8686246d18f52be87688e28dbc0df927232d2cbc27e2672eb434cc5b90339ce58633e86e7a2cd85f5895cb5fab3305e04fec6181fc917193a97b88e810fa5e539e43e977e257a248249c3e7c1f78139a0f38a369ebbed6fda33487d80f1cf74aef46bb23f14c4b3762c614baed8c8f1ebbdd9c429017ba3e61b25dff824690b2f4621fa664dbe0dcd6e485d3069ea3d827fb7495997b0e49ed4ca6fe870eeb80f49c510a04d33bd6fe0131dd7967ea5dbf35e08a790512f7279374f4d8e15e007702fe1a6228eb6f76214d0989f0be29952dac8a067a1f8052df247fc23f55d17f6996a59c7a6fd377d07d3975dc69ecb78408b7d6acfc8bb933d7ff35c332fb5bedabe917ebe3edec67df30f3a973517fd24a47731e605e63bce9159537fd2eb121aae43e17f8ae67b388f743fe4c3c2715b431ef225bf7df669c2dccc2fc59be4edf4fce5dc1adf3c77c1e3023cf568731fb0efe7cd18e384392736e82bce8d7ba9f8a6f55e9033bbbdd7b376afaae55e81d269827bbdebf75236acfdbdcc7ba9f9771884d94a78d4c1e77822ecd1cd7d731e7fd0f94a664f74ad96674c85cffb87b25bd146cd9731684ce9df2a65bd151fb96be7ebf1c5e73e0bd4ff87f1d8ddfe36bdd07b4ea98600b50b789734bd1907653beded7ba8d7d8d3e00ecf1bd21a9cd5c49b5c7e049dbf71a7e8989eb543f90c33d739a8937b03976b716ec0c4e15f1447a916a7488d9ff3f960bfd616d5dff99e937c4bdabba7055d27b39833d3cf4ae2b4bb0bb8c6fdc3a1fe43e399b31e6bfe884ec9ec064f543a3207702f1de19e78fd26ebe56880f3740df3e12ddae23ebf935e2ef023881fcc57f90f35fe82a7a4bd6ae8ddeacbc463e6f35d6c0694b7af1709ebcfd01c441ef5f347209a2714eba5f29e72bdf2a1248c42b75c1bd78bb5b51fca7b227e425d3b859a571a68380bb9f6846b7565633c2bed3bfc765af01ca2b5e1441bea19588ef8fb3845121a1aaa2df34bb46172f42772b10bd2c3baa6de121dff0ffb65bee25cef127dc017930767d0e8ebf334ec026b2f530d5bf1896b3541e634cccaafc888e55003e36d7c4758299fe31fcba6ebea73133983792f927d26ed166873345cd3f5fe56f856366a58691dd05e9e538f5a65898de03a9ec3fc2d6f6c4b360dde2e7aff378d87ed3a0eafc2bf467b6059733de50df37769baa1f7e45e628de30ceafc6aeced86563160ad6aafa2dcb9f0b5fea6b9b909755c433e18a2cddc612fe447b876759ba730ada1fd41fe0fc439d44f277a0ffa9ed30b780e7f38b77907f5ac4f0dff45af65ea7bb0a983d2d46f113fe9407b35e3f2860d1efd3c24def0b8884bb3dee33c3a4daeb2967bd01efdda7a0fc51bf5cd3d60bffdfe1eb26ecf645fdbee01f96c758fab5f6ae1b99fe19ab0e03f85ff1cfbc2afdfe2fabb54fa751afaebcd67704f78dd2fe6cfc97dedba6a2fd6aecb3e3cf5bee8b832bb0d338cf8ec2feecbc17c15cf9bda6de80092668bf435432d58c6d4af1bdf7bdac229999437f942f3bac4615e69f529ae49737f203e1360879cf11ac7da91e74f9c3f704334fd0ae8afaf45cf05f35c3a8e58b72f4fdc93d0d1742a98ff56e2b3454dbcfbde07db82bcd9cf94d8d7eb28be136dbd124e96df096c80d2d8bac9c9e562c796ef67aca51d768b94b8dace07c294cf15cf7de71a6723dfc65aec8589e937393188eb4abef3519eade8b6d5daca75ea52be7941dae1cefac4b5bacd8a7a844e7cbc7eece2dc21df621cc401f509ee05435b5ac9eba91baebdc1c41d3367046bace7e53911dd8d5d74dfd63744fec4cfee5f7127d067c2bd2dd1ab81173c15d487091c63b07f885e4c5da48f3a46b5a9c348eff725d7a138fe8f7afeefea1bc6e3fb45cef55fab20ec128c01e4e3608d9f7de6beeeb3cffbc777ae57fc3ee5fb8a7cc0d3dc63fe5ad2a2275ee5737cf9f375a789379cbf138f6b25bc646f3ae7f9b7ef4cdc6180c54931f7661fe839e9f85e78e2d5f3a10fffe2605c43bc5c96f45ea8da502cbc4489c5397cbbdba11c57f1f0d2c017e9b566b5f6fe01efa6c651ab2f6d3f781c3bbcdfea7e3c6b922c04232f35df3fdfc758df12a3705d4d9ea32eb8e6bdb0f68de750f75cb5e5a7689ecbfbdc8ed71362007c8bb92d1da9ffcd049f4a31d877efa4f88ebe1fbbc8c29ebb6cf6815cfeb370fa8fb8327d9cc46f3674962047fec275fec2633d9998fcf67fc73b6af84ebe0fe455513f88e7565191bdf262ae49fcc7ee73b0847b8eee13c446bdf0bf7b1fbd9fb8ad77c6ee000f5f7640cee9d53078671ca1ead7477b269837b2634e1ad3becee7290d22ac0b5ff7147b1bfcc5ae504ee019ec47aaf36e987daaf61f9e3f4dba0bca8d0067815a1b256b59841d8a29cb0e6308f83cdf65ac3aecd57f5b073ce6c0518363ce58e3595c3d16c2ad7d11cdb4bf8e879187e4fa6cc336e09e289c85b7f67b636a3e424f3bf05a614fa953b20e672198b1bf3c9766ff93b4c37bab33a0fed49ceb9e8937c81e28efbe925a778e39e986262e739c65fd8bece3412b3e4dce5ddd1b7eb169b70fac2f9b751de1564d878d185e7df327cbc881c7e67b74bbcc73e568fb7dc57d7650b3741b7133d53d8c3c94d56de506b6e519155717e0ae0f82ddc4fe77e0f696f9c0ef539d02c1969d08ffa0e10341db6f94b2bf0db8448efb3fb45aa6c4d78a63a03f08b3a896b8fae5c66f63ed34b34769243819c2988d2da963df70bb34b0f4c15d2afcad5a5c5cba37f800cd57f6635c0fd9e19e30217377ccf144110b4f7de9dd72a19529d48612c537ae8d559e76354e52c8cfbdaf50bfb973987bcc4773a11a9a1fa761d36ef9a2316d62e79abcf5c2bf6ef027836dadc84ffd24fedc706af8c647ce99e6b3d94d6e77dac0ccc8bdd5b5663573857cc8759a76507dbf553397cbb948cb3574160ba762fcb5e80d509dabb34fcd78ef78cb0bdfe7b888308c255fb3e8689c0aad98bfc9680b5c134ac3a3330873d684e82d91679934735fd68dfea058cdf95ccb913e2f95dd35f966d41cb71a7c33f85da637eb0b3829993b5bef2169cc0533feffdd15dfdfe0896aac153e369c576b33f6b27ff71a3993664f10ef212fbcc61f39070f6bdbb545fb1f7ae590f7763f7d383bf41cc5e53025defb09c789db7b9c3f9d278cc3b34cf8bc4b977445afbe873a6fcb736f7dc29835ec4453ea2b09689e58f12be9b013f6d5e33ce9f2bd4fdacd3bdf4d74dbb80bdfbcbbe61a2c4dac077c77c1d73e19355fc03af27bcf9db265fdd27c9af98ddc8ecab3abfdc402df304856fbd2425e4ebb53c73a7787eac72c76ac8f747f10be99b775e3ef0783876632251ddef4e8777e22e7fa9aebe0cc957d7fa09cc671be7e645cc3acc61a429a9eaedfeeea57f89093769facf4405a417e8676230e86e4c3c39e7f3884ac2f04f362417c8576fffa9e3bc24168feecf8d9f1c8e65de85b04c3d4238edec04d4c1efabcdcd17d96c2dbefcc2d0d5f4178998d68ce17d93652be735d56c5fb966a4ce779e5123feb48d9ed8c38b40e87c23a316e66e654546376fc8eab611a4a59efd976cff723ad4b7d3ebf455e43ff617b1d23bad6fc9d3951d4df491f99dfe75daeefbf57116272ea39f3578fb709eb7b968089e9b8f40d3e35acc72ea8f0efd69e6a62aa3e873a9a2b5c6f33de776db48b59df9fc76cf387c6bf79e437384f86343eb8671da68cc156ef691e9f1eee42c69a408f62b13eb562c1e6ced8270db509ef9fbd47f2b3e796cec307f5a8a568cc1a6b22c3bd36991a75fed164da8f8cbc5dfdf3984c0dec10f40669b88527671b9a7edd9a395f5ff05fe4745a718deaa134f1e3f5efc67d828fc20ae93b812dbbe8e398a8f9fffdf1b433b7b8bf9e8e07d24799769fac8fe6efb5dc4dfa60d43312f35966ce78c2768a39617b97f855abdf25e9b158778ddff9f67942f12cc42fa1c5f88cebfac7314c84fb457acf86d47398ee9e48ebd43eed68af79b2ab08e7d691d74766edd8877e3d4cf5dfc35e25bf2fea08799d92eec2edd2bc218d70a38e011a517e3d431bc5cf9bfdd8a17f91c26f009f3ca1fcacc55cc3f04e6f95ce09089c48c2057999704f42d48df1fbfa9b31c7f6c51abf4b3cb8502db21cd235137be9feb839eee7a4dd12f4587b547451d558d03781e7537bc499df41c375c1377cdc357b365867dba83fbafc2d6698579d71bd3ba2fa39f45766d530b99898eec01aef9f3b26e60afa064ae93fee24a407ffac6a4c9ca3dec2f5e3ea7e71df5ce3376bcfba7e7ff129dc5394f50f8413f4b11e1b24d1cdf3f8eadadaf3d81dc284e158f884efa53527faee79f0c85a50788fa55bfefd1e0ee3ce307efe71f33d685f69faa34f579f0e7edb9b77900fa05eed12c462ceac88e3077cb64bf87e3a36b4634fea192de1de588eaa90e345b54ed7a71bdcb3cbfae8c3e5c36c68e8ab8bb6bbda47798f81787ac8f30c7b701be7eafc5943239765f1b9a09f4f3e3669f0a1cda3eb8a8e3a72efad7de33d691ee9dfb4a15364f46c6a589451434bd3c831e8bc346d9a9b062eddc8eb703e24d6f31fba0643e3f90cde9e2cd139760c3e1e033f649e67f01969faf96b1a6b8c2db4fcc1b4c139f1efe70d4be286ffe3358cde31438f1fc716e788c6d1c47d5b382f157ecdfcde37730bbf0d685ff2dc028d7dda6f09e76bd4cc061bf3bb3107d8ddad4f4c39e6aec53a9657bbcc7182cff196f1f7d71fc4e53396f5dee7fae37307e32a9d930d7a18016f76394c0ddd30bb0fb6a0461e7ebbf238c6807dc40dac5b9b38b9b189e74d628e636df41c483ddb0a5b39a806b4eeec27a9ef1e25e6248e6dd6e2d7ae63e2c97dd7e40e0d1b6b18ec00f15177606e6670fde4bd473c1f16e72ceaa48bf9e8147b810e84ed9fdb5588f5eccb13f6644f314ee09e04999fc2cda9df3bd94b7f74bde677869c08cc65d45b83dcb9134c4c9cecf623366b749df8bee99fe37a5673e2c5c0ae44c6b9c929901c188cfd90b8e649ef3cba24a2bf4b7bc917e9b0e1bd1c2de783fd0fc43dcabe11c4ecf1a02d4f04f38cf242ccb758dd4553d3e6012784ab8da9a67f9dd1f794fbf1f8c7abbb8666f2d65f7fd0b782777106bf1af67b1526be3333ee07797cdf9c2fe2ffa6d5a0e90fe29ef735d5e608c63e34ffbacb35e31c15b6669a5775cc3d7121fa4fabbffb4fceac16fe1c88d1aff1981e47103720c519c1fa07ed43e4d31c88ef8f7c9e3fc421bc97c3fc5c75a27bc27d520d23d4fadfbdc394fb472bf083f3f1e33ff8747bdf356398220edca66f866b07e2cd51632e376220990f2deb269e9de3577dde7706613cf0e654df225deb38706f9fbd19730656724f7b13ac3be27ae77b8b16dbf0b93338933d5db809d8e5cafb876fefb9f4be802de87d240d9f0138529a9c4b9d0fe61b628e62f9adf45bad62dacf22cb1b2e1e66a7e53a3434e3e7a3b4b9860c5c56c8f1674a7ad1924be1dff2feb12d931fe4aba8fcd17c7373ceee7a8ea151956f5de3bb67e73b591357fb1f1c96ebb0d50f34fb2280b737b05837f48839fe31f7e2bc7977d44feb6f6623135778f8e4f3694fdf44bd187bbd4be10f50794bf86687436cf0d4545dbe7f1d7dc9f5d47c392f2bc491d4639b9e7b41ef661fbe908b37983ff47dc251445303b3303079c3889b6ef04031ecc2a21e9dc356e631d4aa02acd942dce99fa94768e9510f6ad989fe86c1843af36d7d2d0f780e2e1e88efc0fbe0bca6da2fb498e3a2f51a27a867174b2ed9d7f6173c5fd32a6b7077638ecbe484307822469affb35b72cffcea80dfe1cd8cddb637b15bf0b005fd9cec40b6a733af9a6bb3bc481d41afdf296d07c67445711591e65a6ae6f3f685eb1bef013a219a368ce3bd11cf0ae679cdbc6f1d7d2586764cb99f774cbe8c49f26268c9cc732f32aee944c4af44d770e688eda7df3c396960d4f2ebf51935ac304f5edea5f7c6ff779c47648db1f299df4dd3e79893bd4ecabbc5baf8ae3e65d8bbf9a5efe2debd7f26ed946c7f244d8de27dcb765bf7f9966f5ccbed95ee0bad038bd681e623c25ab28007826b69d981ec483db78a7fc137d9056b4d9454b7af3187f915be3367d279e112e678bce75e2ee5ab95f7654a5ca0c2af8173aa5ba63fcdf855d72aabab4e72df7ca69271a04f1dc6592b5b3b4fbab8366767e1fca09c54fa999a1afc3b7e66aa9d4becfb2cf8dda04bfed244c6efc4bfadbd7db3770db9ae77cc0fff8ebfcb681f38101e35598cc6a439ed5caf39055ba1c51cc117692417597f24b653fb7efadec23d45a9f411586ba3261c6c06a3069e08f2470f848d2c0cec46f17ef64d5cb9b747bed88676597460ad57d4d32c48279570204ed0e4bd457c8845754b8bf2cdcd1ee879ceb8d7eedcf5299fa7f5a8968e2f3d11584b1b6f285f5238a92ffcbdb4f76eeff16f543f232ceb8572f53ee5cbb3ad3c9bddf965f888d9f910b71c833dd4eb1277bd4f7685300dceda89c9afe55ad58c78cf34ce945ed0f07fe05eb4873be36e7431b1c2907b60fecb0e61b27d6740df7317bfb6c4d1d9b967cc69a519a56a3af762434a9b6d4876e8f15c1f55c441c27a2f91f39bb1586403270f749d4e6fe9d23bbce83a031a67497060ad0213df4bba5f377a2d29c4a3c7f0dd6a681b94b057d701f693f8bd82fda0e014b5626cb5dc16f418ab770d945f7650bd7bdcc7f28efb413aae7dce9df7f7383ee932135f97ea89cb51e9d31e0cb55af9967c0fe63a27ffc7b39bdf9b7ac143234f970e8ce717ec12e849884d93b980e342fbd6f2a13f12fc9881d74a753d55f4bf3a6a5ec09cdd895d52d7ec96b447da67471beb9679fb61ec0ba64e48eb3d0e64dfe6f1f8664ce6c315f9871bc5a30b3e9545ba1a33aa33c4293e6b7511eda71b3e4adadf756cc493d11793703d87de91784f691d40cfccd4f8ff311aa547594b293df391e28c277b055c2575b9a2fe0cdf7a21db59b78f69b9f5d7dc1374b93dc7c098c0df9803e4a359736d1c5fb7d6641bd76c720f767df21d5907f2c0dc388259ea53fdd49e61de65929afb9d76cd7d9090decb8c70049d987312b7cf5392e6529363273b18d7048cc9cc3779f1925dc43d3ad503aed1cef4961751e1a061ffa86a7aeee26d3c32b02582c58439cc3aee6d98ac7d83afef1623e48f025a033d7f5d34b147863fdaaa7fcdfb46d149a614cfa8b948e70c175e42b1e58563c4d1f8c6565cc7abb4c684373a859b4a7497b2bed77c4ec4cd3d19d828e27ab19a3cee858909113d68e0698e07b8776def97a399dbec25d2b40ebafeba8bb5df95837149aab07b96a6296bb3c6d287a9776411f68538934e73ca21e7d185eccce27d7b2fd82223dfc07838ee8f646e6d75bd6fde5f721acbea27c59ae00f6fb66103f3a59fa3726d93eb7ed49c87e23338a425b918916621e0e898b329ab8e8c5d78ef7b5aed6e90d8c5916acb8113ddcc8b44f9a618e75b90bb645e71aecb7d183115c7b8c314359fab6e9084ade794754af5ecadc6856b35f778fff5e0d29e0c3ea5e817f2fdde4abad65d6085f0ac8c3fffed44f7270b74d629a7fad80b28b653c759cbfd1c804ef070e121679ddd39456d5cebf98cfd9167ce9574c46e10c76d5d724ffd94310fab58d3096bd15138df718fbfa9c58c3984ebef55edf36bbeee523dbf2b7ceea0f19531df08c567896e63c9c6b0aeaa60ebe0f9af63f56c8d3f97cd3e8838fa4880876813d6c1d5b7d67230fdcfc03239b9660eedf9e5a9f8df88c3d51ef0c1bdede25b69f3ddfab8ad1f5c7d51dba81f60ee1eb882a7b7f51dd02c32ea3b5acdc9ac45606e55615c8fd37b03ef49fd94db798abaf2ce6ace5a9ee473db9dcd37b9c454ebf91a503e6a4135f07c7c8e0d9cf7be6efc5fd392007ca7d12b5807c81fe6db8c5f7056a3d63e05ed5b6afd19a2e31727278acb82e1a0c917ef14d6a311832e4701e1c07605f90c97feb9a9ab116c06889f088e57fba1d78caf3e0ae735550e82f7fe51a07a410faae6a67cfce4cc7aa58505398b65f2485cd0a3f9c3aa5ddfd82e37a471307f285ddea73a8f88591d7c30c63c1eb30eab8f18a8327939b2ee12ee09b31ab92fe3c09b33b721ef2175998478eda8c3dc034eea320e02e6daf989306859ff98a066ee933576310ec7dc8f277d54d99eb95309d7b760aed4f4c05cb18483c97f6a3d1011f6fbfa75e09ed07e758857ec8bf233cbd7fe03d5d19ec927763e8e981fa3bcd589b90072d7211f6e42f934c0336cc2b7e41ca11f51562f46fea464cc6361f057e1bd6dc666e5a277af6b5fa66ceb556cbb8dd1360619fb06db14fdfd39f2064d859ffc4275b6453c83fa8bbd7d87dc0dc63cd956d9fdf97adc0d525d43c0efcc8907d3293a8cbb79e84fafb147b2f97dfd9bc9fbd83857782d6e7bd29fed3e3f4391cc0661ee3d2c47a5683c29bcb77b367997383e75d88f78231ecf1fdd19ae97a95ded78bd303f5675e078b29e7906cea52ef79c2b00ec1ee59bc097bdce67d193fcfe9c2c18504eccd432e0fc13f131fee3798fdd89e7d21e89f7e97b2af6cba33a31f4b33b75d1f9699e3b4a1fc2c4eb449b3f9ecb1ad6f83ecc3b87f315f9df680f83e766edeae1d80d13f7128d1af7a8d3f7c209423a9f354a873357f50a34cf379fa9567863eb713f7123c5935e8eaed7d2b456287e77b69c4b2dacde20cc83c962b435e791ddd16af8c015738d1f603e9e4ed7f7f6dd60375ffbdafcf79e97ef07e2cabb5ce3e6a9e50d17ef989fbe708ef9e2b7e7c7f5fb497fab700fc8fe2ef54eaac59f966bec47a84b887fa6fde17c0d315476abcdf31fd1700c30d7b15c8f9d05f79617a2d798bdd078be28db9d05dbb9d7d4cbaa708f28510f1cfa7926699b7e7c6710c6ec6b9e5f581b87f57addef7532dd6eb8f65bb996194f34027dcc272bf88c62a55b3a84789af7920fec47424c70bf116769df017ad04e1433cf9c8afab6a19ea1e77e840f44eb719fa1eddaff4ff9096f73b05aff6c1b5f4e8b169995d13e927e34e2b8ea09d7fa25655e2f3ddf5b05466c47f7b04ec6be87f37e235c5dbf7bdc53979c1a5c36c04bb274fd663eccd00c17de8931eb8469bd695d3f612e2ff209bb2fc46f5f25d4ebc075a5798c9887183999b3f16770d39b5338982398cd14fe179e65217941f20fbbe9e5dc51715b4298f9bef427c781c41c642ff29235e17c2725ec32c56c97eb3df4dec0b2f6ee5be74adbd83a55d7c0bd657d17739643e6194b7fda643f847f2bdd4cf05bc776ef8b7ce53f8e5f16fc5f376e387fc00e64e7c8a887641fc2735007ff606bbc67d0a852dc52944b3d705d35eb59b7f88206b7743ce3dc4739e477dab4e471d4deade9367c4ce87df22d61bf6ae16c88b684999a1abc35503fd4f9d88bb701d5844f89b14ed7275fea99c49fbb2fc40fe35ad624a73c09c53887bc810546ad26eed7aee7a96fdac5f8f731a69cd2b41fd03c78b62ca38eeeb33e54b9f73dc4e3d17af630d7635b27ae49662bde6f297e2bed2ae63a203d075ebfa1e166f17167b54d4c2d41ae91a689372c5dc436d5119d370ab22a6e8d47933ff5cdd39a9a21af45faa86217c4862456a3efa8d1438efb04f33190b66180d81bdf0ab9a6a1f3903779fa9f1c8ffad1ea9234f3e2887b2c21b64d916353e554ac1239f820d650e37bf0a5cefdc1fcdc9df63cac8101a39ef9e464f48f708f695c9abc5959d1931e7ceaff2eef3897e388eee5f26d66ea8f4a1faec6439cca3e95bf303752a0302a6abd5d82f5a3a65dabd7b7d7cc41b27c632d07d6b552ef04ef40e324f78ad39a73f8d47b6f9f63ca432ea81fa2f6648dff892708aff5c2e7306ffa97f0f7f78c1a25ee2db1c6d347790d3d3fd3c4ea756ff455b45eb6c5863828926eda380ffa88aa8cf2d8c223b0b228c7a8f92b3dc921aaef60c53735934478f3551fbcd6171e0f2eac830ebcdcb62fbcc3d0bb7153ff645ec191d8d2ea95aeabd6a54de3c0fc50477f1d722c371f527e25d5b9d6d4fcf7af734a7d5fbc463dfe85f9bdcfebbac57ed07fbb2ed8b288ed78eab77050fffbb315573fe87ff62ca3ab8f9c725d29629df1c97f517bd0e4a9115d581ddb8873e161ee824f1ddff8db95e85adbcc25773239237f189a9354436d9ed3b43bf32169d6a6dbc0f20d7f833043a1c9256fe6eb2817e7507e31bd94c2d17a69e1ec803d6e7a080993c93a25b4d739cc917a78b6304796758fc29173180ac701e7c43106ff8e97c4e83bd6f4870f3bc15d80bee862fdd2120b56e297e705e74dafcfa7c541bc6f2f1bef14c2f33d4b9dc6139e58e4614eafbe2de4a377e1fbb9d3d0a5b930863c2b8f944f9c3ff4e9fb1d4ac207c5d59df030ab7712de18a9737d894eb9565fadcbbb48c73c36b4d9fd4d20fdc4c48fee843bd45aa948734cf3395f02d60a31c72d060e70881f375b5307d959b13eb0708c598ea9591e088772beb69bb96c354fa0c655fbacf3efeadf3d0af3991bd88059caf2a8336de5f6d2f6c97afc9598dcea5d0387d3c89bf8efbdb085c72aa71c6c391cb7f31459dee0eaff27ca0f7abc289d363337108479ea2e3ad55130b55a2f7e2e7a6326475b6af21cd5c181dea74cd9a750f66fb6197c456db1b336d6339bb997f7a229341bea3d7ef8cef152f4ab0ddbc1f3637ab824acc9c635da5364f072f7070dacb3d10388785ed9d79d283462262d1fd1aeadaafc566be94a3e3b69f4cd18f8687b4bcf093e41eef31c0f3641d4c0af6978e8f26b9e9afd5685d804bb901e52432b15f3aa3ae79a5374987fa3fee6598dbe4b18a3d4263f65765d2706cebbec999ce77bcaa11a78ee6f7566a726c7dd5ff1e1506f94318f07dfbd87c629dafc6e50cbfe572c7adbb3a3365d0d3d2dfe799e3c5ebefd0e16dbae3f5e13ec715027ccdb306bce09c8d136f12aed7acbf582bff5ea768c544ef34cbe4587cfcd3dfb9bf1849aef66467d3bdbefde17ea5e5b7e8fe2f63dc6c2cff383ae7f7b8d3cb2652ca2f66b3cf4ef91a319fe2f5a2d781cf3ccaf2d9c806dbac4d3d6f348bf3ee27d386d706ed967ee45d2fdb4e57086b99a43af480887b675b84e04f3a1c376375f77c3264f3faef9690373c16bc6d239979a5a1f826948f28478809e829aeaa5e9be405f017c1bff38cb0e5a6d3ad0f2b7fd3bfcfb3418cd1ec84f0d10d391e6d5470231660d7b96db614c7576a69c47af907e5ff55e13c5bfa89ed32ad72f1427da91899bdc514e08f1ced962c87bd481631c67b04d1afd7e99c4d2ce9cb8662e07e6d95b8e52fa76c7256b1044d7fb07aabee9be187e63f9c671007345056b93abdccfb754bffb547bb3ca9d08c70ebeaf43be43c07886ae760ef0432d399f967e727f5abc1a8a0fedb7e3fcf32a27ff7fb17e240eb72fc29ab4c515325ff76adf0da00f6eb058070edb5cec9f0872d147041d35a8f5976edae3f98c7c1d9093c073b1ef0c74025ceab3c1feb219e03952b7477b799973dcd12b5cec35ccb7ac0b5ae4b31063ddaf88f3122becc1663fbeb74801a732b3c65f4baef5cc30bfc8357ed185c85653f41d37c9ab9923d0e20e4d47a2b2a27bec977b65bea5dd93f588d894137fdb32eb47844b59207f441a3f520dfe1c328f0bfbb6a425f83e49baf44de899658ee4d5755c80f369c3588fbaac7eaa7d796e8d4fe618b1ef355c3c5ce7f36110a6e34e99bc50deb9663e05c5557e907d5a3085c7c8ec1d392e187fa48efd52c7ecbea171936afe0fe53aa49eb142fcc2c159501e2a0fc92e818f999590179cf693e242e39d9c542f97b2cd3fb8bf1fe787b221382fd518318e08720a399e67f92ec7645afdba020e58d129d927c24bc4be1de70b6ae1e7a4bf69f7535c37a5e052284fcfb812b109fd8bd4fe07543bea3c59663c1b38db07b2874f1a9f28e7e0b9afa53c687c9fc02bcef972f6bb774b59c3c09fc37170b5c67354ee457d1ba573059804b697f9c0e17779ab082b6667f4b79cf710ccb9170d9e5435275e711d3b65e3991987c4eb956bc9e883fce6baabd890b667ee1f97b4efe42fcc95e70fe999830ee522cb9147637c0e5833b5e2f794e387f3d2650d6b9ee71337d4f34fd0cf998ecf3c2fb3de86ecdaac8e8cda571cbfd07d3ec28d3ce7dc857ae6dc1acb9ce09ad4aa47eb77925764f3d59e3d85de37852556f84de35eb2ffca3c4ef79326c76b3ce07a809f51dda150fbb8c935a2f90aea772fec0395ac7d959e39ffeb8cb997bb748bb66bd972ad82afb580b87a583ccc9c057335af0e742d7fb4750dde935afd56c31b310735f94e76d8aa495130d651ecc18b9d70bf336000185f9617b6f0eb11af4779917cb768fdb43db7e60b02474a43c703f27d2baae5d7b2bfad1df64938ef9638c25bfba1e531bd31d53a9e2c539ba1cc53ea4b3e07ae7573eda5e4af6dd93bfc9dd8ebf26aff3c3d0fef27c107624e3fc337ae5f4b4e305f3bb2579574ff2fe477cfe7d9197d600dff912becbc864fbdfaffee8eb427e7ebbd51b3631b9b47bdd0d05658db05bf8797195c429d0fee8f89cc3e12a75c27e4e3bfd0fe3fbb377ab5f6ac8bf560d630160f841be8bce0fd8ebe9534ebfb0ad7a96b4d96a388f3b2530ddb0438d401cd2b6bc9b566f85de154c631a853ccceb4eecb8e5ac3c385a7b018ee329d75d3469f1a638547bcf71c914be8b98c670f9c0b671f36ba3017f5fbc16ddae4d4111f8efb4d46155d5bfc4ac043203e4f61294f53ce09d3f9c9d1671bf17849400f76583e249d27c66eec77dc5f08b158cfaf7eea7302746cde669ef4969ad86ace21def7a19690f40faae708f640c2577acb98e7f05dc03d493de8bdcf7cee97d1f3282f79f5c57ac115db54e3becb7c46bab79bf0b5cfb8633f639f6897095f33c5258201e55e6f23dea7be32b816ed6535f7e352cc61c4ed804d1d3c37f2987fc88718791fb26d7a9fa92dfe0bef1336718641ddac2d2f80987dca9d66d5a83dbf66dc1fb0e5acd335e33db6acd6373118e7dad72f46ccfd44f55f67a6f53ec3de12634f87b6ee9fb53e04e82766adf0443084b89f0489e10309e7edbbd63b2ed7032cf610afe78cdfe91b70df9f7e2fa58316dcde2b53d7fec5b1785ad505d9b94b3fa3fd90ed3ed4d9952dd5b0c1ccdd0b7324d47467d5bc93fe9aacda53cd62399c0d9bcf47fa728b3c624c2be4e3929a7d37e6c9ac7a8ccf1aa5d771e9849be8c2394bca17ad69cf0d2ec457adf8cc218639c5908399f11a55f386f8244b9b6aba571f6c29dafd1f09cefd85ea238271f2d73806d3fe066dd6883401541e6533205cc536658d82926ce0aec47828ae834feae5f2dfb7265e201e706ce267949b4a2d6dfe00579af49b401d15f025c2f7bf29b9a70e30f7d584b0ab29f987ef1de210383c5b09f72781fd0b399ef189ffb58ea85690c33ec7ba2c477adfc55be0825e5460d37d1abf0f741bb848c37d64b9e7f07d8bbc04ebe30d4651fa530d3b2b7864e87f5d70fd26dd9b9c349cdbfea5e55ba9c679295cc889bf60fdcecfb663dd0ea631f15334f3bf501bbae19c88a33372d3c6aa57ebc61f059cc642727e06974b9cb8a770b3ba5fa87edf00fac0d785be464761bebdf7b3c7368cade1d7703ff1a5a9b3ae781c2007fa7e269bd84b05d7ff20352b832bfe32a1ef6935b854855315e6681cf8c67e520b7784e1ff9a3a08cf066f8cd13fc6df1178e9b99fa5225e1b67c938a5a847e31ae495c7f54cd2448803ae7ffce1f79aff477d7629ffee49e1b5342eaf699fb12f700cb49d4a8fb191e093b36d3d5ccfd775138f5c2f8ac7a798f75f352f3aa5dbbde1159abf1e42631e6bf731f86f34ac3c602ea34fe9f356f3589b8f876e68d68d8f52b75173fbb9e53b05615eddfbebc829b0f61739bfcf91d18fda11fc6abebad7b01467f6ab9c4787f3c7e00b9cc34dea931ed9d4a8ebad77cbcac8f728ccbba11bb229c3ff9e9db48ee4ab2cac35d6eeb74f0d4cdceed9326c9bda1326ac87144a3ff043cf259e1dc8294bfc3df90e8f67d468d41cec94d4d7656f59b7a2a03cb5c3b8d8ba81c9d7b90a2c9ff8ae9cedfeb6675eefd3d4702fb2df90fe0a6b8ce836ba70f76db88a6d4c390fea4d57d86cc069708e65e44d0dbf2eaeced22b35337bc49d9f1de92967cc04bc3ff287a6dc0fa5ae037b6a3c66aee812eb199986497fb208f735e63a83f67d58536ddea86930feaff55e29e4aad38a31b4fedabaa9677c7b1fd0a4f21bb58bba24ff09c77ef170903c9a9a632f9c979bbf6fe306c7450bafc10f43dfb5192b164e3ac698cd2a1b3adc7c4e7676cdef34de47d48779fdbbb3224cf26e5eb1f6c4e75f318389a1b766e0f6a5ee46f845d63cc9839a75fbccbc4825fd0f5a5f82563b231c84c778ae452721bc1ae55119931ebcad42f4a5baacc9a8e1cf8bba0c1bfcc2d8377f88a48f0330480bc9df6af1577516cc55740e0d1d95be1d3057acdc13f0e6a9f4526460abd3b7f181d7dc03ddbf7016143fc7e9166dfc6c1197f41d3e4bcbbf591bf3b701f5e2b36e78b046fbe1acc8e77983f8e345f04df16ac73932bb27369ad6a48603d26cf48e79bbec8f13611be6efa1966bb99ed739a64dee8b69ffc1c4c79dbf38bedfac88d7987de3ef39b8d24fee294889a753693ae8fcbe9b09fa94d4fbf54dad9fee41fa3710f3be6fb5fda0d4f4a21af1a7c9e5873e64257b4c03bb00fcce5c9bb8ae39adf71cf4767cfbb1c1dbbcd5d7a6812f60ae6093cf46cfed308e87f8d869bdcced0373ead3b185689dece684099c0ac67f2e98c3ae68b5a23f5307acede56f56d3e7918aaf250fe430cef7728df34ad40ef72bb36f85bf13e113361f17b22521f63aa2ded32f7f389edef0f13cf47ef1bb83ff82be02718c565fdc87648b4d36ea72c0550879ce38a55cdb65e1b9260f39f5a978c6ef72c4555ced4b22bf4fa5571b3514667175e118effd1c31be46f1d313bfa6c5b99849a63daf96436aee13c285259c50068e94b93952d1674cc2166ef7ef3930b8bf92d68596d77b92713df21e73c3e15aee122de7aaf7b90599e0bde0371fad7d01df7d3363ff984affbdf44aa79b62ed37b4d4219712ddb7d62c244e4a74fe14ed39341d38e10b451ba2fbe94ed5a24d4fb19de022e61d4d0bc0f40d608ca68791dedbe1bb88c18e5f38c62b3629d502cf814b9c7195364ee0c3a7171dd7506e583f526ab894aff19a5804caeb2cdc1b7e3c9eb7c2fd44fa2d8a6b6c38c970ced9cc03780cfea2c536b70fb1d98f5db17d946fa6e5736e7b27352dbbfd0ed72bf2d018fc81da374a4d0c7cb6bfee7dd8ebc5fbefd94f7feabd8815d46ea2cbf5efe09bca1c51bd649ef804b17d923e33fbcc7cc03067b679eb3c5438152df79c477bb227ad6bb0c9b565c4d5d2e3a3ad93dd751e4e19e3e4fd2adebcf0761c0f9f6c37349baa7344c682d77dd2380b987b28d638811af31d6c4a3d9e309f534a3943a8bdcc9a9a7bd9614771fde2e140b664778ded753cf4b3cdfefe79e186c6fa2adecf6ecb31d0a56b3fd6fe3badfe2ac7283e98719e2cb0cfa3467cf0ad5f0fdf7accdf1a8e69f95c478e3dd512d3014ee2d4258d717f2375f2a9a6c3503a29f9c41f5a0f8c11af2cb243ace9ad0c170f14036f99afc5e77eccc2cc6db2be417f873ed2d5f79f8589dbc35c7e3c7fa075ce3824b291476d4e62fdaf13637cb76bf4226ce7d25336424cb7c6259d347cadd9aec93f0e38f9ea133144d1f27d7baff34c2576d9451be8cd47ab07a3df2e0f781e963c0fd3de7c4d35c36893bc9acf45fb4f6868931c06dc13a5eed975109be02d368307d3572d61cd1af941e651dd255277a6fe9dbbb9e0b0f83d8b665e1cbe9596db2cce05d5ca73d5236a3c77312c713f490f816511ae5ec5a154ef8177f53b09ee47ccd7931d6efcef663e44b351ac9d103cbce858d4f1e4a123fd7cca477d3c4b5f016adf52acc85c0bc9ee6a5ff45e4a5f3806183776fddd44f1c0ad86e53bdb9866ff90733dcf07beb821f65dd5c45d133f08ce29d26cc84c725ad2572938810dedab126fa32664d6076dba6cfb18d03584436260bc9fca5b47bf9e87d150e956c1dc37f6dae03a678783ebf15358fbd42b23180acc6705dce750d21ce971fef23ac7e2f2964bfcbd778f31c221a4be42bb67ea32832e14f033e65b9c4f49678a79bec045ced2ec74610e28ec872c1867dcdfb5e736745bdb4f70ae5e32e6c32ca7664f4370a69a946e3791a7e203e7ae576c884b38119cd3e570241b817ba057be61ffc6a55f518fb8aa9f033e62ffa767fe96c761ba3f632fd806ef6385af3fce4dcde565d6bbe7dcee2bfb6b779c3f789b4d35fc37ecfbc331ecfb39d562d6d4e3f009b90ab717be37314e2f76f24adceca447fadb260ddab9e82e42ad6f5db4f07e20a736e1eced9e93185c69892d1a4cc0e99998bcd93bc1c56c9bb9d86ec0f98cf39ee62eee755644759166ec02e30c3528a59d077668e1f97b7fad38228699d871b42183489b63800b7ca03e82f452529c154b9d6ac19a06f4ed89d328a9172ee48167dc97a4dee7c21c2bcee07f3a8752e6d2a8cc7c5859b9edfc2c49e7bc58b32d605b3db3cfd457ffb1a0da30d7393df201c6c575dea18dd2ede6e2fd4cfbc166493c0a71fa88b52d0bf9e9bc85ea335538cd338f673eee509fde44f54641cef2f63ad41bce636d0750af180636ee817971f9270df27acd7cd3a5e3492e6493128ef0c8fd6c5979495e4fa7eb1af15de1149f138744926efd8ee44b18c72ec70fd7e38477603e1b397e56c7090340392eed78d1219cf581b4856d0d7f778d4bb6573f689e04ac4bccc7e39f75f27abaa8e75f8fb987467e5f5ac9eba97b3d3e71c7478ab78358deef3abfe8fd042357703c34b93e2be30dc89ffbc1c715f7dc28b8575c6ceb1b7f2fe2fd3e0dd6b28fc37783f7367a299fe76fe52fe3bbda7b27be185cdf340eefc4313ca1e766ae68c28c5ecf29754e37f2a3d5bd40372bb066377af52a967d37fa8e2c33776dcebd3f1df3ff9bc7daaf29ba4f5ee03b01d5602fa56bf4dd44c423cd5a8df6ea2bb9b4e757cc5c0cf4ad2c529357c58c2b933f1cfbd3effee99a98cb55ef55171dbfc5def535ddafe84836bb1871be1e7c57d46449d614f3943c06f3871ed8c534ed2c3cc13edde47b91cf92c7c3de7e7d6bdbe97e6fbafded89fdc55c409a97b4df8d960fe73fd53f01131a47a1c1dd47751c6dad98bdea8ccfbf88e6aba9553f19b236d21dbfbfddf9029fcfaf5f04afa76110aa8911eb5aa62e5268ac53eac32c0fe213dce686a6acd9de61fe17f6c5e87ad47fa8f0f603a7c9a956a62f9407cfe8f98cfe5bc923699aee1f86add2cea17d5ecdaf54743b941ecd531d84ad5842edef58fb50bf83f3298e34ecdfb9ec9006c53937c6469b1f1407719e367f44fe0db746aded7a6a175672aff7e7138f29f5afaf503bacec6553e62cc6f593f428f65b6e069366ec0773e7c3f4c5b2f2bae650dbe9ea27440dbf7476c01add57e848decd7f080dcca1d29ab734cee5c4b8bef25d03ac352775cafdf2b0ded498caf76ce7e5843ab79643d36bf98dbc32ec1dbc5e8b6368e4233a9be85ffc0f5367869e9372b88d7fd56f8741467527caab065fdfe885eec8864475f99960bea0549842e537d5aab60ef906b653ac21e8ac2fc28b37f0b14fa4abaea9d51096198f81c3c7a4e6adef914f6df647c3e7499e32f76bd3b7ad2cf163d4dea4f28fbebab78651cb23e0dccc2547ace5f28d3cdd3c4e43b415e7eb731b3da6b067e65a6d7d1ba4c89b1e7b5f89e0ecb07ed3a3facd591b1f984339d70e06df5c4b7dbb6993afc1917a04e4ebd61dc6f5a97967e4920efcad9dd997e48e783fd1e790e2e0bcfa06f3f558bea7b69e90779b30b1bfe60f7dc65b2c3aac85083ed83b1fdb2d78ffadbe281ff0a49eb562fb30cd7ac744b8ff63ec11547ce865453cdac4c33438ded654a14783bf99a3f658cd9e1dc66d7527c23c06d68bae79dda8c156900fe6b1bcddbfe13b37789aeb15e90aed63ce03d3bb799fd771c1fcbbe8e626aa8607317bec4ddb6a1ab86e5c33bfe159dfe637b292f394c503cf11991b1de6a2557bb0e026d4792e7e0b59c7d9e198b02e97e26968f8e5e5c527ed77a51facdb4ae2c657b645d71dcc1bd879a3a6bf5473cdc8e1f5aee3a7eb1a1076dacf78ee393eebfe77f49c08f1075450e7215bac710439bf3bf1abee47767a41d2d57c67ffccfe0dd74efacdf5d7ac0bca33e7639ec33027941dbd5b506e5ce2ebeb798897451d74c89b9c79fec46a3d908634d5646b393e3e4aad763c444ee38e1c8f686d5721cebd80df25b1a94f3766fc4ac5cf3eb97e175ddb9f7c707b75fa0ef7006b63c6cf3c17dcf7aef058e34db307521f415bff99b0ae306081971e73b9839e96f562fa56a4f7d0e1fc4af3f90e8c2fbeaed9ac77dfb4bd4b5abb6a1f09844b234e8807fb5dcb6b0ff4f15375ae5c9f53807d9e71ff96f8384f1d7dede8733ed951eecd670e8044f550c298fd640e053f5edd13f694d63ebd4f91cf3ce2fec2bead615191e644754ab8fe3cf8afe4f1b5b9fdb84b5e1b792963efd6f660fb4c18bb23eabf3c439fa7e4b678efbbda49658b3af726c6ecb7f43bc37cd818fdd57975afc7bee5fa91f91325d7a938ceb7e42fa2bdc56be8f79a7d2426df8f3df77e22c7c04fe68b59d433c2b30d995790fbab5c9beacf81bd658eaf947a6d3b14f7c83c2f8733aa53d7d7eb004f88c2f1507d95e6c3d15f935f1e3ce8fb0ac513dc1f205c473c5e1a5eed8bf9a3a52ecb9a0ddc139dcf668df9aee6a39e2b81b9aa7df33ae5bac80df634499c987170a76feeafe634d829e232bcfdfd76aafa0fdd63e4549dc6b7b4afbe167cb350e6eae530e56f467bc59bdbd0ca57b6b3668e3be051029feef54039b1de1369e5b3cd74f93efefd751e83961adbe0bc623b1f5c7dd0eb785d6322b445373577c8f576b0b7ef1a8b1d03c229c05c267b6ff33d44971efc63bbf7fedc313409b0e69c12af44177f3b5cd09cb20f6c1fcad1e0bfc1839a7ed2f755f614b47a1e5af8bfc6e570356d629cfd6125fbf846d6e2e28d784192cb24451d8cacd749b89792fbfb2dc54faefc7fdd1eebf3333999f32510ae8b38ecf1f71ea613d6f7d5ea7fcb37eeb9677cab604993ee8279b3b6947fec91c6f0f2fdc5c02ae03e21eb2deb4aeee29eb1b18c31f5a94ee3b0de56cdeb38ff7d36eb32d5467838f91a2af7abd74fd12f3a737f28f85ba48b399ee701eaaa0feee79ba08997b31795abfccb8535263d8523d594a7f9761f1af59f7e6fe132af652d78985e246bb260ace2934dfd61c93958278d774fbabed89763429adec32032304864a7ecb3c1bd46bc3b81f568cd2ce6e7f990bed68aec8575dd03706ce098d4ae7bfc0cf16a6fe41fc9d7ac85c3bce4dec3752f31fab2ab53c0bc56e587c689dec0fc1762cf949f62f46ad1be06fb40138347ff5e7d9157831b40f1f721c7a4c33c437519199cb171f98939a4713164bfe028d86ad9cf16d7758c3edf753d36f733a3367ef5dd9cf1bbe6d3c1f3577e03cf0738ef82793814e70bacbf8430ce58074d211e4936c21fac71809c2417cebe445c6e785def1656d858a72968be6a18bad97b29781627a0796a171dc0f25d7d108835c22ec5874be2c9c81f77d4ab3879a8b89f99792ef2414f72492a3eb9133e8659cd73d435b9520ac69b24068f6f91f3dfcfd7b1527c4170ffc41f52ff311e3330b4f2fd0bc9e54661e2d6614d3dd709e27b43c5250dcfd3e7670c3601f02067e55038c2d3cb9385cf58afb6f48d9e2e07d6ea5b528db08e0813591137aedc07f5c5e4dbda05ade569bf231c7e586b26ccea9fc6d7e0e3483b14b3113e86b824c447b8ce61e8b1270e185f7179820d8860acafeb623e21df2c5f316f4670f53bd4f854f7415d71ff0daf1b9cff414dbc46a5c37624f63e692d4fb8776af62176087474afb6e5fbf57db82b89c3187a27fe77d678ea5fe7c4b3de93cf793ac250c783fb1bdb1e130e30e932374ccc79d2cfa2c90da3d9379f300fb9cff760be90b4d0eb49f3e588fb41289edf01f6c13f431d506949452a67bd09988bf70fbe478cfba8ca2b160f5b8ff216fcfd72559b02fca1dd67de8a05e1830827e9fec6b178bcee1bc0f1b4217eb7f4affe4b2cbd58bf345c33fb57329e4567cef655ed512aa69bc463e292aba547e5e7f538e5231c5e0fd9e3cdb3ce1ffacc31b8e8b8c45fbea5fb17aaffef269fb869392e399f3a38c7660deec2755ec7c84f9835b818e39538d0fcee94f57a289e4f628f7314beca83882f984c89e38ff328665ea781a7a2d89cf55f9c596b1d6a461ab8820ba3d8dc265b4eda3abedb6df404287be3c4536dede7a80f920fee5b7e87dae45d8a11683f13fec937851fd23124a7567c2ac4ce6f8d9c3762620f73131beb1e192304e77fbd20a7ef62338e30e7d859546a0ddcf6dcd4c137df361de81cfa13772c5a81607f5f9a3837eeb1cda37bd6dea5380ab0154abf6a81f62fa98323cd49ad4e749add1bfbcc99feaf617ab43a87ba2e68b2dbfdd01843ad577d6ed39cf3f66d7124e543831ae3c93a200d905d20f551b5772c36d12f238fe77c74235d379271f9e2d7179e8f39f3ea7ec9f5efc79afc56cca307936b9c28b957d416f926766c608f34cdc5b8c1693a5ebe726ef9f24c39b37acdfeefd3359ec7ba79c1b577ea9b4d7613c25ad509ffe645ab9582addaf7a84606f95d4d1bc0d1b5bf080fa1c6b733172d18dadb763e6bec2536e1900a89a1b764ab66f2dc9f45cadc20d4bffa8af7e85edf99faa630bfb9e7f35b78b6db7293d76f287d2ac0cbce3981f8f148df72323d30b6eba9c3ba3e67c642700fff9e79a503fe0d71fd979267aad3a191d3cd7f6abd15577f0778a028f78cb5d558c7c051ed15718c82b55d9fd07eed2fcc8313cf489fe054783ca6dc3323efb43d73de99f43c32ea6f5279a703ac77ca87f4cecd3c77336fdc3677e743eaab4f7741e727ce5dffc87ce4f7fdb6b9ebf3dc25ccaedde59c23d82af59b15fb656ba376ed218eea73e186cdbe00e474634d31c899dbdb773f459cae5d4a6e589fb7f7346ffb2df3b64ffb94b2b57a4f481997f24ddae7ad6983d53c6acb5796c863023ea35a13f9e05ef3096eb0d38515d4e994b407c717be7fee5dbf27fdfd73c6359299a1aba7fc7d7bc5dcefbe05b9efb41e93cdafd9fe5ee39b5109f8b64d7447e3b550bad8b22721669cb5e09f258783f3c63f528f472136c2fed39a3734092dd14322dd98324ef13a7d9b3559e3d2675f07397bfc0aea8ccf1da99306767b6f09f798c41c8f7c4d589386eb16823b77b6dc9b50a8de01c0204a7fc21878e1f2eb3ef39bf608c19a27dea074994b87f5d7fdf7de3df829ae457d29be4ddc0dbecd3c03d2afc07319c605f22e73aed39a5801ad270dec3dd88fe0c60fa57a2e6336137b9e3c9a9a3c36c7f8ea1872cc73dc1bbccbfc867922c7168e477ec09c7c74b6711a1ed817ac33d72375fb1f38bca68f18578cb97e6362a77395a7767fec03c0ee0c7d355e667eb7d17f40759e14e3bea1dfc19a93e3f13eb2dc78ff945396e7a29ae06ccbfcceec9bca18cde3d27b1e8eef15eff2fb87134df5bf0fee43e00caa4d9bd3e84de65a96ea25d8294cad1558623bd4df116beb3b41e7e7cd73cf45b391788da3b9f4245905f95196c5f7d57ca5c1cd1c815af4917a70fc871e6bb1fddda66a35bdaca973a4f5d1683c224507f10679c0584abdb725c37ccb9cfb8fb475e0cc18f3bb64cc03e39a3e69af965a7fa1e9509ab521d05682dee8bfd923a93155d43325be9fdded260d6ec740f4afefb8ffccf1d846b5f5022cbd75f31e0ef7c2d6de4e7c0aca7babba52a38ea2d5766289ab5ef03cb2d9b30e6ac2675be65228eb608afa9643b4794eb899318e5d343b0f5fe1ebc9829e8ec8e17e83969889eb6fa00f073edd3f7c6bc401515fca49b4c6d5bd112b2fbe2bf37fe6e5755d322f011d07ad68f1f3fdf5187890789d8bdfb4c84be4b60bec59f69bd7b956279c197ec2755df3b7eb38c2d737fe2a898314fe7e563e81f65c8b4dfb73f917332e09dcb1aae52d47dcb3cdb1bafa96aae6343ed07c88e5193ed917171cd6ccd046cebdc37f7e1e81e635bd67b9915e85c55a74068b51c518e1e59a792074bf63e73376bc77164ec017c5bb5e56d43f5e09874ffe8dfd877ab2e033d2df8ea6b7a9e11106c093755d87343fdea5af53c37819b5fd660ff5bc5e857a8d06f3dd2f8be12a6ce60027de4ff5ee591baf4076ea927fce757dca498fc66e0bf65ee7ace1bcc132631f78b7a87eeaba2e63e86f4c05ef95cfa296eb42ccac740e359c2dc795ccdfcbff8f355b3a9d36e35cf0e138172ef920af792c104e38ae3b2e52c29cfda0b51b0794db52e775541c1d19bd8ac1536b3f327369a535e7019ce8c47d496aff040c86c47e2dbf31fbd0ced77319539ba07627e66aa617cdaef0b8299ce1a6a888a7b8f16e96a64f423cadeb0fe3bbb7f7d0e91c011e6398f5398a18f06e1b06107ea7f41434fd19fc86f6aae29e4be693da5edaf1958570d6805d1c1bf8923cfad532ef46061fcc7bcf22fce8c242fe9f78704f3d1231e162a44f81ecee91b4d88277aa0b55337caecbac5137809c40f08e3a9bc4f5d39558fa7c498c5ec260dcf48db51e8a2626dcc8c92e68de2a7d54f09daef7d13130cf76d9c42f6ee61e9ee3bc745b7286720d27ec52be48e3b350df4be1ad32f95e4f2a1650f9516b423569ae7b24d7eb2047835a0f369f939d5fdbb47de7f663b376d2c475dc682cb6e017b86f4c7ce8365fb46ce418d34ee9718dcbe06484b86166dde0cc1abc6a5313efd0cb5e4dcec6ec86e31eea9cdc072ffcea5413611e6f9f6b5e836103efd9e3df9346675e12377e57d3f835e2e5320ea606d74cedb3bf4c6bf4860710dff7fa9c3168a3d033d4bc9e9d485fcfc051de49287e003b96928d56f95bc156a66be905c4dc03e7fa384fd01aa3ada0c76ac6f138df33a775d2c1b9a3e2f348f1e1bf73be887f075c2bd5208c67f78b51d48c611dc40344f398b4764aada723bd13dd9f74103a83f7b92d7907eae79679d9383f0d76e03745c7175803c3c50361ef53c2be7d2cb047cafc0eb73c2a51b6afa9f758eb01ed28ff09be878a914b4deb11eee5dab73ac77fc35df5359ce5eab90dff1e65d51e3985f3b9709f1c78eed42edb2683572679a17c7b4d9cdc73fb3016cde835cfcfeb7982b39cb126c6d4d0f7557ba7e266477e55d2998c710fa235207a4c71ca78d7bf6825ffd2d6f847939fb1cc2317355a7a33c26b659d21727e735e99fc66f653341b568e10ab970636f1d34c1ea86fbae8fd2947a7e53777736bdd7c7fefbabf186398f53f3816adc91f4dce0bc27ed5834328facc64b70e4bc255e59125731cf60189910f5baac14fe200ede6e114bdfe47df295e883f04790ba9e5fbffe1b98dfd28ccdd73e1bc86d292252c6174e65ab2e3858c53e39ce8a3e4d1bc17e6ce0e621e7fb5dfaabfe7c17db119431ce38c37e126605f2390ef25f14bfb98b7ce05e44a91da02e7ebd99fd5c66b760e1973ad781d3745f2fbafeb8b31e971ba69f649b6f28ac63303df4b3183ca39b47021019ebf73f551a00e017697c76812ffcb18419c4b3e6d9155ff276c4f8fb14371c9f8a5ef7949987bf14ef325e96f033dcee21ec2ac7331797acaafa26ae277652c8acdf64fcf2ffd49b7f16f9bdf63e0034523b8776f682edafdaf84782be0f79f33ca75c68f5da96d8e99bb6b4a5a4316e15408afb766aced42d506b41cb72338a5b95d3d70af07d5b4ea92f5fb5bedd29479cec126c9dc6d1d2bade710dff340f812c24ed48a5b0f72bd17c1418f1b7c8cdafee88c89dbf4593854cd39aac7494b95ff001fa6206ed238b2d10f1c05acf3dfe49293f55392edb17befd36fc60fefa9fca63f3e573c931aef66dcceab6af4abfa829d8c2beb1ff767f50d5f4c2e655ea3340f7de9c3357aff99ff345f0dbfcff3687c7cb58e595163e28896e187dd7c66fc1edfec43e6fd204fd3f27d3837a4afb7f48bf529f19d164a1727d5f6b62d639c602f57314427668e27cac7c2fe8ffcf677f8dd47cbb7d923d5a8d8aeb7d40394ff026b8f75a4ae7e2ed81bd2d412de63d0c0fc977d9a39e606d37a4c380bb21b7bb61b59af1b62eea224bc11d524fed927d0f80d9c6ac3f356e5ecc007629cb6ddfb3035cabf9b1bfb8b6833fee37e48ba84ef1cf37fb20d27fd09edbe464dbc9eb1be29e398ff5a136fdd735effb816ec7305f870b817625bdd324b9b3d8bdc235d3801d86c2782be05c2473ad2abf5326d5f172fed71f637fb4df8e73551579da481b168f6e8076bde67825bff579ed7a73c3adecb772daa83d15add2d2947e77cd8d473b17ce07e8927ad660aeb34fd8dd73c0cd16fb864af9c83e7fb2237cd4970a2bca66eaef962e2adbb73e21f5263e75e427bfbc9fd45885b29dde0db6f495c5bf43e3ee5ccb24ef7768e25e778aac50b6971a2bc41e37b5bcfdc5fb9dd50fe357838639c5b74169e51a373c24d71e1f7a7316de9bde4ef9b07b5c1ad989626bfbdb6fe669c732b1cc1a394cf7fd8bb7a6457fdf50f3c5fb42e1a3a825a0e8cfa40ab7d43d7d5595826667cc1fbea987b71340dc1bbb9eccd90cfb3fba64f42bd2af996eaa647c6ba6bbaa313a58106f3d717be14b5071523e6c4561ab3903b5eb35eaaf8b8ff1f77efb59db8b2b60bdf9202f4680e9b648c2dd10825eb4c81d1b41118634cd0d5ff43556fa89284bbe75cebdb7bffdfd15ab30d422a5578c313a6dfbca6f7b63c232eebedb2f5995468f4030656fcdef71b9e5d0bf265e19e7c61d37c7fa318d066dcb6a25dadee1dfb06ff12cebcfe54c79606f21e557dba3df9d0f51713751ebaefc9cec49ce2e2806770a868fa529e15173dc289efa778ffcc95f41f693d17167280c27eba751aba3be4a5dda339e2ffe2efe23e144fdf03f437aae6d87b32484fc0c0fdaa3fd59e5b89298b09f8e775ce0f38f72cf651537abc3679b956aecd735be5cacd6d9d4b803a8103f2bfca67e4b1da4f8d47fcbd2bd48d8e50fbdbf2bc0ccf05f91732df4af19e967f17757ce11b5cbfdfd7a2ea781f7141f7a7bcafbf7c1ffc6ce45facbc8f8c317c9f2bc57b5de394d945c39f8caf99efc98772d31aefbf1f3fe41c7c2cf7c431ea936f504c7cbc1ed7cd9667dc5ff8dadd63aa7a9dcbdf35c95f288bfa2ef05a6ce2364787588fa7e617e2c4ed91e7599ed82b19ef39fcb6a69ae2f0e211afb350ea48c4db392f35ff5555d3e58534f9d70fc497b8d277a567ae7cf6e8e00156a3976d8dd6dfa537b0e0e1ca58203e8c5b7b885c7be847879a6946a3af80dc01eafba7db8be451f91b47abf3561bc57f8431870b8c5d7cb762bf16bdd7b188aeecff80357bfb45d1ccd5f14c0a271571005d5a70aeea2729f56993438871037ba46c91cb0a3e7d6327427d551137776b93ac549cff967970f4eeb0d737bfbf8e654ca7c4ed2170f4f43a40b14f70ae7fe2fa28c4efa85aed2ef19b32e28289dea9b8c63adee039f39ee3b91bf511a72978391057c8b3d69e8efe0f9db554a75f707fa6ebac3de17a2c7657ca27099bde386b57bf3bceda8a7438ffc5593bfd499ecefe0fea47660a3692fa4536ed3db79c78b1cc7f76f634f7ecdc5034b0f567b01c1cbf787366af2cfaae411ef0b41f4cced4178d3de251d39e4a5caa21bd0fc4e216fc5b9f0d8fa1be9247d25c559eb1527cded5fcf0a6fc3bd410c43b3b31d7b88f3cdffe7a827adf07f270cdd0fb5072c964dc8dfdb67d49fb4d4a6745c01c2fff91e2d4e67c119c313ba7bff35e1ddca89e1f17273dcefdd35eadf0fa62cfa5fdbb9c401f98634a8e915c578f49b69786feb0e2ad3def2f99eba1bc03792efdfb31a51ee64d1dd37534a031251e62bca1be953b220c38ef2771f241b510e1f7670e979163ae9beb8872508a59c7e9c3cbfdb3d81a609cf181bed3abc834c8ef9e7d86e5dfef9ec5ff97deaf720e4bbd82ff997318f66fc953220ec8e059e939c0bc09475adfc92fc89700eb1e5253a0510f547510fd72a2d5190cc5ab639660fe6ea1bf525a0d47e45b34696233dc48a9e1a93a793df46264dcd13d1f3b31a68f7a6f02e77af9fb5e1f6011872bb5a603b9ff6a31419c025e23f9293928d323cf83cda7ae8b30b0333e8f144c1de1433eeaefcab374f0b3ab96b478a058a8bfde3eb6b9fae475cdbca305f0ded5fa29ea7fe4d4b7606e9a4bf59ae0984d257f5ac5a4e0fee2ec480b82df99feae049e3eb1a78fed3afca439ff0043317c6ec451aa8e8941b1feeaa3deeb259730da501e817d5138d72f196129bf7cbeb11b8556413c5e9cc35c17660d8db00a7f8387ef8eb8e1a449ca38cf80efd5773fd81b81fad1475c0fc52c6c62b4ceab06f774d5d262557a88bed7d3bcb7c38273a2e0adf599263ee7c9ba627c70658f427dfdc239d1c3b8a960ffeb2b6bed68ef5ed67d55ef36ea1d1d885fa470cf2df0b5fde9ce8a8e9ea73a5f4ebaefe1ea64a3cf47c1dc499a0b0beac5c21a0d4ad3c7d8c87cd1eaa4c56e73ef7e65afeb758afb548fb481ab92b872849963cc8ea259907ca3bcbcfdcefbeccb0039f61eeb72e125dbea1eca4f36ee4bf9997a779a5ec8b639ffe47bdb7ed7eac9cec4f8623fe2faa8dc9feb3df297d88f5eb43aa1e24d196ded25eb95d3b99a971dd884dd95f694d4f6109fcdcf23fd245bd884f508df71683f332e5f6a4574f6d8097b257077f7f6b397df8d38389e26eab9e047c5556a6ffdf59a9d8af9dcb566c53db1ce656821764cab9177e3e9624fea668453dcb3c6f94352a5c4557e23de408af9bfd25b5feffaa03bf861adb779ab5fbc5c35e632cc95a4429d186d3eeab8df5de97eddabe41e89162fac941caa0b5be1a3d7e789f4e414dc168dbd1c1b816f6befe7a4cf8079dee99a066d2c8afafca00b78ecd0053ca3d73f7b4fe19e5818b42746c49bebdc4fdcfd61f6f55e2779bc0bea0b0e3f3dbdee6111f657f2bdd51cabc298d3c13df00ff11ef0b8af840fb00eab465d94eba9cc1d3daf9a39645c98ecf15ad4fb4625f64151873348bb51e9bd234fdc654f05e440cf9bfa5226ed6df1f483cf7c45b3a9d14b5735811a7af1badebec471dea04ed8c69baf4e678c0d8b7d41fc11dc4f25de0e7d9d18afd6316f5003c2a6756bbe687a3bc80b8948bfbcbe47c286c3fac135bf7984b9823e44e467b5de02b7d4464f91f25b81ff669dce2be48606bf447dab7858a256c295ea39afe47347eb16629f9bee4d66beafc32e5f0255f746898b11a36f1246bf6a60f4fb10fb1a4bc5af28b50f5887795f90b738ffdddd950be299d3b5cd0bfdfd81fe8e1aacfdbc6ce20872d393be4b27ae79683d2b39be63f4566ae1bc0fcfc692ceadf4f7806ad2eb10bc4d825f8d79081e021cfb1ebde8405a8d695ccaf518cfc7e91eff7f326ae0c1f1f7316fbb3d194bd9fba99c23ec1f6e66972bc087c2beb4e9b7facf7621390cd1695458e8b3191c5dd452f7c383df1ad39c31da986f0a2c91f424710df424f9b0a84e5a25e8cbb6270dbde817f9c9e5f1fc01c706eac916cedb6cefe2be7b75b63d78d7bf2ce2f6f9de93e6891ccfd9abd9a7797d712877f2cea0e5b4c9ec39d5e252f2c1e2f781e39ed13b1be01aeb736fd7c17bf927f3f263c1be9d12b75206885d262fa6c4a667b732d4378c05ef4deaead8c81153ded9eabb85e39a5485ab69d4f8f9993cfc2acf55d6fc7811a1f7ef85b01ef97ebed46a05ab6e7f54ae53141dbadfaa965f7850fc2955fd3b3af715aec859e1a26be75e66cab1137a165d5e9cbe770e46c2a7e18abc1d37224d1a1bf77fc41350efc4586a9ab36e3c1dab7a67b88e354c681d8fc0f806d6813c30c5bb93fad863d48557ae21f12fe1fc3d3735ccff4ff6e61e586d7ea286c33ad66309f72bf5701eae93d6dfa2e2821ca4ac1dd7765d0b7c7ae53ca5f715e89c2fcdef1f79027150a14e9ac651a47e2571078e753c246a67d19562b354f804c81a58c118438543736adebfb80e6832d375989332bde593b7d6dfc5ef0096ab1597c96750f4ae750f64a7d43d801af3fc9219bff09c9f2e03f7821e4bb9f0491463daa377dee0fd28da0c46bd3fc0dfb4b8463d9b5cbfc439dd4b56a0b72e739a0627407e17786b27d662ea83de735039615b53b71363a9f056b387478d8f83eb734df9a2c0054bde08c78227e21a1a6d2e99eab1499f53b864cadfafc4258be7c415cae2799b4b0673da7d2d713fbb76bc03cd0743f3bed5e24b7dbfeaf004edd39c153e94ee94f0c30d2d8ea20a2730fe67ee156d02c6f7bf51ff70313a4d1097956e1ddc1765cef70a9aa99149b182e2c15ba17731c47b3f1bb1747daf674f68024cec25e76c12874cfd4bdccf48539c6239f91c70068b58e39709717bf28fee47f29195b527628971b1433e5151112721767d2d66b5cca34fb993e6c54eda1e59eb3bfd2ae8d44b57d6808aaf062c17f158c4f5420d5b5c9f7df5bb14de24a4ef125cc80fdb7a23ce461a1f96f0aeafcb57eff9dedc2c82264f8eb9eba4776a13f7ea86bcac88e3bc27d4aaf6e558715e308331095d9b6216e3056b0d7de270fab8760a4339b3682cd65bf4f0999237ba3bf63cf25fdffd225d6bd2118d64ac1d8edd6fdc273fc8de51b8252ccceab7e68377aaf75888e52a9d0feb58f40c15cf9546dc8cff5bd1d9a1d5ed3a38395a1e2af994cc0169e6a8a7cebf291eddeddfb7f2e3eab7fa3ec2e1b20a7d58efa63b85b3c07e31745c4401da6d65959bda590b7509e4f3f7e97dc31e7da13154c629135e8ca58acb9d2a78c133f337db5c6af51c5370473c36f259540d2ff4599338dd083ddc8b5bdae28e0caa807c4fa4c627cdc1c8e4fbe75ce14ce3616f9a3927d5749c07f28dbfd26ffac3b7e0266247f4d6583c21ef8bc7ca6dc4b5d7465cbb97cf3db1977bf645977a50c3962f31e957c4e568cdfccabed034977c6c57f29f459e6d0a3dd66e2f54aed5ea7ae76fcb568cbc7983b379bf7c9dbee95e7561d3dfaa631d05861b2c517353ad4df359a6f465127b3eeef2f27319f7d7d6a150fc4550f397dfeb01d76a9fdfdd06dfdd06c6aa9f2adeafaa876497265fa3b7a870d7c5733770c941afbeb68c3f4aaa31c9b806fba5a8dbb569dfaba271f5645cd0cb48c15e88daeeb8787841cf7707e6dc926b1b4afdcb126bbced43b81aec9b7a0832c79e5f82915e9780cf578db94035f014ebc2f6c1c09ea50375ad553478c7da65fe4038df7d31753e16424b86bc5dcc9cf633be8e7ec60a0eb9bcd60ef04cb65b3ecfc291f0f2da923f58096782eaef77f4a84e2ab13229d60d607ce1da18531b98bfc3f89ed2494f89e1c95f9ec615755b55af1e27be8b43fb097bdf3e23edb88d714faba2c1bf69efe5ab56aed0c85f78cd14e10be4580a4e96f5206e217aa255a1aeaf12179f4a6d10f5d02de2032ade86cc4584b34ce3d8c939bc087fc19c5b1e5913c2fb93669ad6bf49a077b0869a5a31d99ca8b66af569ff725f4bac63b1a63ed5dcbf93462de66bec19ac7a56c1394e3a8ac2a74ff1170b8e547f9d0d75fd03fbf0beece48da8be5ea718d607791717d3b62e509b2f635e53f6a79558bdddc6d7e681a61124eb16fe5eecefec2b873ef5f6fcad51dfbddcf5638b13e2e6c8b12cf754d70a1c6d7d6533d4e50faf8adf99ecc1a2d796bdb9609e9dc5e41967fe711ce45a12e350cfd514aeb7083c87f26bd4df880657dc4778be058897407e78c31738fc7450c3dfdada81be977cd47b83b87f9f3cbb01bf803e1ee1bbafc5abe63b3d137a997fa197d35d43777ac5d4d1ea108b989f47fa31e4cdb97d0c341ef5e9ea69fffd61679337ad3ffe5c4d356d9cc544e61d6bf85ffff6617a58b39dc03bf78786bf92bf5bcce658e7fd208c6874aa709e2c91975c85b8d7a227a19f0aaf8962b8bc0d4a7c66b10fb73c9abf5f5383f673b58668d07af73754732d6ccf45bf134513a453fb93f4e822076aadbf884b91dbe48bcff3037b3d8deb2e6673fcec05cf1667e6b9500f34f22dd6c8bf9bcd5e961c67c239f4f22d7ac69737c2bcf1bd8867566b8077ce91af759ac2b019378e29260d871f05eaebc41e8eeb75b9e7f996526dfa07d7976f031c779a77ebdd09eadf61bf7e87b21e557cac40d7c15da1ae62603c512df6fb95b9b3ca1af99f9b8b58cf3ee6980743fde8c9da60fdfebd085bf5235dc7b3196fa3efb2ac95b23f6825620199bfcc425d43926a6e9e81baf6d96fac632b9ecefee67345da182a96f1d1f474dcc29b13dcebdf99579a03b1d0e6644dc150d79265eda88f33bd83df278c177f637c51c7baa0c5c9e7f303e10c846603c4e4ea797949b741674e00ba19a306764ede93bf210f38e21d44a747ec4b216730357ec1de7ec53dfde8911f059e6d1d9e71d1af3e61b87707f48feca7ccd1238d60d2518f8bfdf2a67a3eeab94ffe709a6acf6234e60cddffc779d5c0d9b3ef1be17c95fa8adbe61421577477655c5ff0d8113338bab6aae2ff9457aea7f593a213622f8d74daf21d069c5338ba537f51fd40c47b7eaae62bad36193f924fdd937522af40e213d921e57bebf1067d43ecc57402fd57ac1fbff5c853cddfa017c387d07756f88954a78d8b4fd696dc78e02b77a17520f176cdebdd8ab67eb8cdfbeae0b8fcad7aa2627df2f4ade16b53092f11114bfca05e64b2fad7e3305e44c918eef15bfd6ff219b7f598008f61b3eaf25c94de2dc06520fe037379328c057de7c2fc1ecc71a654bba6f355e0a9816f43f5eed305f2c669763bb9b80790ef8af46b418f3a3a17db38e2c30efdf2c17f67a7d7c8b672beabfd28e62ab187994ffc72c6202a7e36a9d00091bdcc02f361eb403c0bd2e492b9c6416ad63ede82958af3d89ed9979873929c75c248472cb7d0ab36fcb6686b9ddfeab8509ebdde37f240329103b4adf771e4d67f289ae0705688f946bf9571fc237aacf2b77ed4d70897816b040defe0f5ffdfce2b05ebe58c064bec3572fdc8638e8b558ca187c8e7116bc7dde94d0facdcd4e328d6bad0ce3bb596fc4edccda8d76b7a88d0798531029d51843d3bf8a45d4fbc43cbddc26fc581d5bae6eb14f78303e993c8df96bf2134fc0be971406b5c7f76c4bd38e544f711633ff7b3a2a17d0b748c176b62d77999d4c4e61c3876c96779fd8a7afcb972ae6af3fa96869df31aeb74b6ccc7ddcff037f6624fa45753fcad0f41a06a658655fd3d59fbf348279bb5bbd93f183532f05ab9d1d4be0a443f45d4c8e252d609e30de63a67aa5f92c6b9d0fb97da33a04ddfd2bbf7e766809a1ac1a3b857e0e71aec85e1f95cc33ea97822be1f7f337223f4290bf794e7dbf30a71c08e29eb8f3ee3037eeab85865ddf3789c41cbeda5180fb12f7ecbc94fc28da1276579ddf588f1bafc0175d1c12779b7c4e1bff0760d6e29c7f91ace84b9bbe04338bd5777479ddb04635f9adfb91da25fac9111c789f980a471aecc95f4b5c4fbb7d754ab51ea25c177ac91e03b3b3a863c07c8e31e3c581758afb037dc97d3b5005db11759e413c9672b7afb90de0de1af757c6fec587886b32fbe1c07cabd547fa87888be69ec0de9bff4b00e91ef8a05ed63f8f7d5698f1a94c59ee6a459506e77bd21ce25b5e70f4dac5e1af434fde96c8cf7101ee11c1f17927336c9b7dffbecc7a9d655c4be72c4b3cdf50bbcc6674eb198e2c71962fec33afc8a7e4d2f94ef2a84b8c5a25eb955ac60cebc25e89fba1a907f4c1a6df0efefdc4f80ba1071bfdafe0379e53e37b0726ff88e53e619abf86f71862d5b5a639d6bdacf771bcc07be39a49f2d78d4c0d5406dfed269602af78473b68716e6838e3296f573123fcd0e55ef13e82f1510bbb8ef2ee1b349275c7e1fcf2cd16b8418cf7c242f91625cacb43e841e3f8cdd28d9d0fe4f7e7de59e720bf6ebc473cae25ab012f32b9c3bd07dbae033bb51e121f64af1ee84b943fc15aed7c85c456ad6f0df05df04b4dc2dd86b9f31bf50f644eecf111e9ee3f6f514fa592b754ff96ea32e50c739e7610c2e9f7352616cb998d1fe7d4ccc47d080ded0d83d5bb42e0ee9f4116bc672fc1f709d291c0b3aafc56fabbc41a320bf922561d1f359e251ad9db9d0ef016b4f59141f13a7a0b083df7a3f31c75a98edbdd19e877987f418a9ff3d563070e7628b7b548131df21371083b2a1b3643d4eb09669675bc4997da79878813de6687bf32806476fd1f05b1ac85ae0ca669e9dac0d4f2d6fa5d6214ec76743f74b5cfda6f819b1d7cfc4fb789d1a90bf3c3b7b0f79aadfb8f6717a271dbf87c2d77053d6771b6b448b18eb960ad72f766e2bc063660f03c4b7f0df23a3ce53d53af66731256d4c03d7cdfa01d774532753d6eb12f2f7b97a90e398195de7d70d7f6311f5e53c09e1ecb03dd49abf1678165b07ebae0f6744b5f233f4bad248e68e87e56e63defd1ef615ede91e9f299b2577f2ab21e657275f8cdda4bfbae1fb7bec8b5e41c3235bd666b6ed9c93f1065566d279851ea1676f2b9f399b244ddc792fdbbe69b567b7f2a69ab7bcf571f6090f2adedd13d74721e6323e685f2f443e59cfff81599f9d623ca8dfefed839b86b339bbd84bf24bac4bc39a235d7c2507f9053d65f70d31aa598ce35b7c162d7e4087d67b74fa29f6c0d560413137ea5309bc60031b140d4cc41fa7c4850cacc20820371b924e7311916ff15b46fd22aaff8971ae638cfa7be9e4913860ce0cd754707b320cf1acb931e7de25dc1f6bece33e357f436cbff3fbe4423cc1df23efacd315634a15c349f93de0da088bfd9a7461e7842f4024fcf41fcfac75fa77d7f62cdd8f4fae81498ffc90c75413be0aff7b898768f84ff175a9ced7e57d60f591f3122f751f8f6b41daf4734b7e6682be105bdd9bc5eda75bf48ea67ef0dbf27503eb76622cf75e0cf14aafa9559fdb89afe1ab6d6fa4f0e3642c0afe9c11e2f8f6c9bfc97dac14319bd6e688f32113ba524d2c2fe9599a39c53ef317ad27bc1ad0fe26f7b581aa4d20bd30599f8febc5c6749cee907f3020bef57af6af9ee948cf5485f5b9a47a480e5bbfadc4ce2e602aa11efe53af4d4dfa788ee975f2eb81f1d425f6848f4520d7a203fa1791e26bc5759ac0ca27729ea0e7866b9918439f09336a0f297753789afbccfc21d67206be7c11c5edcdf7100ec9ef8f6a9c622fb83ce31e1af56ede08f5bfc81b8be2eb22a6dae02d1aa93df1e04c351465cf7423ca276d8a81611d11b7dad6ce51b58e762a4a5d6717f3416d9f56708472cd482c5fc76724ffc16e9ca778066bf34c3d8b438bfdd3da9f017d128b31146aecbf693f1b6895d3b35561c7f39b9ade15f4297d455bb2c9c1816b8b7a1ee51581cc75b1cfed31f6c31d426d45c1b389f583637c6dec5d538e718bf66724efc0906bc6ed45c867b25dacdbd977ced67affb424fe6b725d36fa46ed7bd6f6f28f75a06b563996a6b39c14cabb567b5c38ced9c3468f536d0f3068847db414fd73f14cebe8f080f51ec0e461ac6c3878a6dce57484a767f2cc0d8d7fb22f255df5ebdd6089580555bf5ef6108a0e9f81e25cd0ba1b12fe2c611ef85c3bf3c49c2894f3765ec7b36a1d84cf2d78e6107bdc3007d6f1016b7bdfd6dbff95e37351f4bee519c231cfadde9fa14720e6a882ed9d438e21e79a7d4811f3e24c1097bdbd60cf57d76d2df90c8c3e0cc4703a1573f5001b396ad5eae4bb11f196c401168a8edec0d6f5c10b4bd7ce2c86f879c0246b5c96fc76226e8d63f4808ffaa3f25177d47717187faaef6efd8ad797f7b9020c22e8b054cbdf27e65bf035cc4cf685c66e007eac964979537a2f6e50e71dc721ffc6875de6d596e84dcabee06ff21a27afb0846aaaa159cf6d15e3bbbc699e566a2f5a6a72709f51faf4c8180cf2f88905b1c80df7cb743768f7fc19c7f0e135f426520371c3db2bc52fafd3711bf7f0765daaf808898377b8074ab9ccbbd7ee435de8de25a6b7ceb1378558075267259f102f5ec61e51396ef46d2fe4531c17ef389f3cc23a9be477d888076fd44f8a4e753eab72fafaa2a6dda145b178008dc2fa3e045e7f335a44a499caef6275aaf708e1f326720ea55ee8c407ac0bdfa886179db827633c5eb90fcf5a74acd51c9ec16feb04cff4b6acd82b3e8b4a5f724aa76f5d3d85cc2afd66bf7f6597848b5eef4ea8b96ae9711778f2f9ae0935c54db6fa0b5fffaa4c716f4a4b1d9f5abf3b119bfad347c4c0e7c177a8ff95b64ffd287705f77cce498fdbbb208631b787781ff57362ad8a7a96eb803da1d7840f7f39a2ee6db13a615dd5cac14f3db4c32bd707a72bf47dcb11a77dfb6e61fde2a94a884bbe841ccc210fcef998784eaf2ed6730cfc9ccb5e9dcae708fbdb5b2ab51b7c9e27c3f970644f1030185ba52f29cedff312f0ca0eea0c54e5d5470c33f4b617a8cf07e7ae8b98cead73214ca98db9a803f542512b51cfdf7947cec6e7bd65be2da5bf769c467df24f675c60716bfbc43e42fd7170bf96e6273287f4b9074158dd7a6d421c1fb47053d73eeec190ab552f9afe7a692af985ca75c058e02365bcedb3f0e5dd77c787a047f816acaefbfab9127c2e6b63ff456ea3feb696db80878a897edbf03edfa8767d3f8e3a601c9583365c3a595eeb770db9ed1c7857f0db1a8fa991136c154fde7f10ff59c2175b9e6f70dfa97adf7feab3cbba7c7de69880cdfa5855d3664cc87190ce7dd0ce398adfa281d181b3a99e688e7a58f33c79a069986e9396fed3625ce7493207106ba5ca8d7f505b676c4aec2ae7c1fca3809e9c6f99f5bf8b3de71fd5d44358bb5c2b3b1753adf6297b29d18134f6699fadf21eee73ce9830ae25628116885bac96fdd58d304d30cfaf76836749f561c61d5c2947eeec21629fb9ed492a6a436e2838fc9327f320727b8817207e82b39efaa01df1625596ced85db4e2539dd37dcb11e723740aebcff664bd35989f2837a826754c2b7e3b7fc5f5b305fca6d4d20b2bf64bc9ad8d479872256ecef6854ffd677ea699c4f6870d6f26e0384c20e7dd4f713c6fcbfd9cf6cf0563292e59f04bd38f74103320e3cffdf2b7dedbc5d825b10b9fce28c4cbcc8a7f124f8b5e6bfddb29f855b946c0fc4a651d36fbe9c8f1f3a0cfbfdee3380437c2db201643e057648d52d14746acdc7b021edee18afa30b3f5c3099f83f236fdcc41cda609d55f286791f3b85a7571cca33e72cf612f977592f5d6fbf0a4fe43b252351c69ef187ee21827d60062c6c22a4c5c5b54839fa3c6b3384be272e2cd423c5f64ed272aa53f5dec8d0b31b710735b704d4af10a674d64f2533ff923ecd59802afe2fd6e636fa04745f8d89cfad579bf0855ef61e71a8933786941ff4bfa8e863f2e025b2139348ff2b90263356ad59ea11f9ddb81c69183fcd3f6b877fcd5b34ccbe1d2daece4fd4b4de1170b3c0cd02f33e8d15ee5188ffda281274bacab83fa57597051f7f6c37287f159712ccc56cc563562b6d357315b5225c89bfc74b6d07bb74ac237653bc47c877da1e509fd339cab18df7b378c45e60ef6bc13136b7ae5917ac7fb02eb8647bade4d70a664bd34a61a5e7f31a1334dc5025c5ce4e2184b389b8af17f7c6ee05e6b40bf3b1618d4664f09638d96f72ec48e0f103b3ec8da70c9fc5cd8b30aaa130447d60de0fdfdffe933236c8cd1aa637f113afe92eb55bfdf4060c1c36f29614306f53b80f732ffc43a7d1d9b37f73ff0ab1933f758e58b4ec7cfe3e148e8b9c96bcc9da091071a5fe58139e2c766d9eb1ce7e421c33969f589cbb68ee72bc627347bc939e580a805e2082c95c0f1f65383bcbf6c8c1f0a9bae27744cc12f84f8c70b7fb340cc94ea8d9e5414272d21eedb535e58111fdca8d700e28e2016fe284cfdec241f161bf1d4057abf5d9e117ba771e125b77ad5c49caf644d5de2e026576fef5ac4fb547139b167b1f73a69a2fca3ba5dbe9f4f95b3b4feec02ea26a34c70131bd7b41faf107bcc612f949a24a15267b7dd3a8f82fea672bf519f72a9a235460dfe95bcf6157bc36efd7eebfbb2e7bbf5ee805c9473fd0ef0bd906eb73518d19cfaad639e706d04234ddff1babc5d2ef5fa5903b760b51aec71eee52bc4b3e4463a79249c43bedd6afc72cc911cd43ab47a6aedb7d1c7533c28595756d5ef92dc06d2020b2cf65467cf7de661b4fba985455aa7bd968f6beca2f7b6bb2ef3762f563ecb31c7f3cd5efef95902d5af9131f8a4bd2a7c0d9498c09fb670b62ef81d608cec048f47e24a572e71fb842796183be27d1376e96f39e95cd3431f0c037d2fe1bc2d4f99296343671230d78335deb096602784036bbf73ce87209665bf64f1be2516446ab4c1b310877dbd1be0b3f489831dcfcfb48ee2c348f362f1598327159c13b167be2f58178c34641cd1d7d1b04096e4c2babdf086f5b239c6456f690bb377cf1352f6b51933a9f6690e7aed1dcf44ab8fb8552bead03cf3e53ac3fcfbf00c6b6715e515615fc7aec478c07946f5a4f8c77949b98ad40a24ce5c74f884bff9508f381026d317fe12e5329856de03fbb714f61cf7c58ab4c97c51e355714d8c2768e1fa376fa8f39cbeced173fb1d35615dc2dc7a189f900f59dea17947cf199d684dcb7da31c2ee364b6d2bcaf95bd56d1397c223ee596fcad16e3399e511f4f6a5f546220491f3e1d975def7e2e7067729d44ddbd04da8310577673b72a0f53e2a888a7c6dcd07d36fd2134c59dc9dc121a7bf24cf3540c0ff548767dd047354769d4272fa2cc007cf06d70c31ade0bd45708171615d82b36b12f22f628a38e8186e6576b09f81d33e606a8fb86c8811897a3783a670f27ea532c3037155c71f1eef4fb10e7ea0671f255878e22d508530bbccf03d300fda671f68071fcc791b45a47a7c7bfd93f9b9a1e0dffa6771feb41958bbdc83707fd3ca41694e49d3f9498e7523e9f182fe8df85dc5ac3d3fcba8a53caf51679fe2a3d386d5f67fd4fc2942e1efaa0f3627e10564ef697e499381e928e9bd6f3967855793e441b79fe461371afc18ef636a1dd568f6b12e7178d33e80ff15e4c8a13ece4db5f9dade85760f51dc48de5d867b67eddbaafa1e9301d5b7b92d47e13d86827420d12e47e87c717c4b295ba8e2769d653cdb6a95b411c69992f51ad36e83906f9861c97a2bee4f4eb7f030c6fd5a50b0e67c27241733de8a5a09910f8bc3f2adc47a8a39629f2aba1e7f98671dd7a163eaaf3bb5e37fcae4e224ea9635ec4ce2e26a8195e2831bce4e7f84d0d0aeb84dc72339d4ebaeadb8d7968f433d62efba4fc5cc6cfd72e9e29c4c8870873aa3d79ce1a05c56d1b93e6059dc7a7e132de3c53bef2afc60cc722711a981e3b25fc71f826fb76930b7a32b8d417ce899fa0e8d11f912fe846c47fe6fab2f6ec52e786fc0314ccc8d36d80e7564f8c43a078ef82ee7bf4fb74a1fdee75d8150701ce1c7ca542f53ef09c75ae09ac8f2276d19bd45e4ffe88915138b4de14e71ae0581eb478a96a7976db9467d1b94f6794954f64cd56d38f8a0f234d031775544703c43d59ad3dee0f7edff2dc61ad0417bd95ad5f37d2781d4f114b52e553c80be2f98bd453453fade1783d45befed6c07cbda01aaf3847650e2f783df27abc5612cad1c98fd1ffe7fa54ffa772010dc709fdedfff7f301a71f401dd67d40fde3dcfea773066a8826f94a8c19eba4e602bc47c099606de93b8be804cf30b1b45a3dd4f683d75fa4f5e410765c3cc74cd10aa738c079253d5bc0217ebf628f8d3051f5fea8798fb13773fac5dfd47507cf7e234ec87eeadf998f72fe47e4df6fe51db8dcf6f816bf090766b4b558565dfab8d18063f807ccbf829b13622f756963bd36274e5cb8cf4dd02db6361fa4f76c913fe331d2fd0f6dd2f3668fe40f1739f4c437e67ce9d93247c025a75a4bfaa06b903763fcbc427e79612ca6a831371fb6f6271b79de93ebf27588bcc2e33fdbbf642e81be8dc8494a89cf2b3447fb504fbaa406e9e060fefa9e1bc4cdc47fb329278d2797e56fd4419c13f78d6a5afbc3c79274250ecbe787d31834caf15a464a78a2ed65f9fb62d4ffee4e1ecd846af173aa8515561f7503fb1962a0fc47f2a9c979aeee19c3a6e8e8a037a4bded05bf3bb42be3378b346d628fb051cce919dae8f59589792dcf32f20baa984b994f552f7d794fe4bba3681fb0ef9de23dadc60fd566493d67cc5faa2179322c50dfd6ce2be4073ad69574dc5293b0628883a9b272a2facf009f63d85ee7d101cf8a1e79dfdaac55b326ef3b3946580b97f78cbd15dcdfc9c3ecad6b9fc8a7d8d7503c8c1f4863bac79eec57ec311c13e4d1f3dcfc964d480be93d185d6ef5bfd7f78efd85f5c30173d67d3d1ff2605ee75d5c87ddb1bf7c520defff3bfa0a31d6e24df1fb547e7bdea3392effdd12731cefc93e94ea3df9bc36ded6e475aa9edd3267a1e789893bf117dfc5180ae759d1c86df5be96126f4beea29c67841f54f6d2cf0879d1cc17f9acf341d02fa09883fc7da38b8d5a55a4f94efb8ae004cb1c1ac7ff754e7df7c4b8d0f3a7b312eb7166d3bfa2d80f478db346f486947b647ca5ff48fab88949bc9673135395b34f9582b5e47194d8193167afbe52b3029d3d8c5bcc62b2845ed495e29ec44e1cea0d4d7a78dea0a65885357fafe2b150dec1b790f9fce417cf7a089c3fbbb713e62c95db7e1ff5d84b9cd0e4f142da0c51b985e73ad7fb7fbd1fa6e475bd796ae6564e89f3e517c6127dd2a8f3377dda77307ef6a723c57ffbb0c6efffe3736e6b6413dc4b7e91168d53ff5df40c2797e5be4c3037a475243c8845cd62c76bfe40677dee0ff9fbbce6158f5ff75d68c4c83a015db7e0b57da83feb0a9d136fe446d8d32ccf62ad4afce71170c673e25efb2fc439fed3f926cf47a99fa5e8e4889ad3fa35414efbb5e83867f259f1b3bd6e13d215734d7c1fd74b8bab10e5740fd9eb46afe5f8eecfe61eaeec2bc2431c62bc3e79d1dd4e38363df273ae36a4a5f8f5f936ff7846cfa7d8dd635fb1f37c8b739a1fe96fccc5f3be8ff81ee2d58a7142bc25fb9ac61447ccc96fd3da5c3bb87067e6c24d596382ea09ec759d57d8433fed497b9fe229f691ceede1f279ec8d80134af1548e75fee8a39ea755fdefb9d25fcfc6c4df3faae75ff3dfe9f3b38dcc5baae97ef95aa24e4ae5b0b619c585bc7fbb976084b19c724ff2dff15c3432d2b7d3afdb789fca997172e8dcdd5dfbdee84efec2f7d4e7ba75bd6e65efd499cc6f2ec6badaf928afd171b61ef96c7db41de391e245aaf90bff25a1db673c9918f39406ebfad5731e7d567edccfbdeede3bc6e9f3b714f786fff2ef4b6c76a29c47e429f5c6da0bd403e6b8d8ba502ebb98a13f7a60d7b198c447f55fda3170ff88feed8e45decf3df27757e203877daa5987c4278f6f7a5f7945bd1b7c5f63d77af9dffebe2e4bd2972f5817dd9ef6b15eb27eddfc559fa4555bb20f0e7248d758bfb7df7a7fdd5fa7fe98ac7b65c4352b7a77b8667caead34df328ed334df32f11dc1699667089f43504f90daac625f362caae73c5cf5b3c0204cf0dc155c953ff453949a30f52794f871fd603e13e6689b030e8e7d0211cb41e3ed8b78aeb1d72718a3081dc97580383f11fff731972f22e9895118f2bd3f1b1b8bb57a9a353fac858b5a9bacef887eb6cccb38a6e0fe6c6e99cbbfc166505f94b827c4d962ac48ec9ea8de399b939eb89cc7138bf34ad2703d926f4c478d5289c57be4075b756826da43f267764bc46c6ec0fbb438b984fb12deeb8d9e94ec2d848a0701f7270dd454be9166d20cbd531b1a2a543f621f0ea79aae281f301de93ded8738c7cea9d9c431080caef0a529189b67aad822fef7a0879854d2e8f237d88fb3a88e741b1c9b7c98c50430a7b0269e843e3870b29af7b4faa8c7b65c068e9dd4b16be85cc2dd2ff4177273aab90cc53c0b4783c80d020dabe73c5c9f097f256a93a6dad719d7e788c40127d4dfc9f749f79ec67d8c6a6987720d45d7b1d2fb7f637f6717786d932beb1e9ede28ce8c06a02f33ed456a0dd74f647d364e5c455b41dc3b7899afb84e29f3d230980e5fe2f21befd5b2dea9689f69f54265ff3f00b60cd67022343f05772332584393f85d88bda675207e1fb8f3d09756b436eefeb6d8874ac09aa8fdab53803a72120ff28de3b8e129b8517dc326dd05b8c7f486facde11e627d7877c9470a18ed80fab61771cff02e7d4553f584bdb7744bde0ec4c1200f55ca4d4ee8e170c37a2f7ab3af23133cafb6660a18c980713fc73561a6ddbed29b841a2aae29811f831e0e9d838a1fe6a9efdfbafba0b27728f9ea5dbdc3f5ee8ae7c819cfdf1573788823e4ec4cff793c9773e536b0196b59e25e54adb1bf481e57a45567a4dbb6cf8a82c138ae83ef1aaf3c0ddfd4bee96c1938e764cfdfe5fccefd962176a072e9cc577ac988cd3e03be5dd5fcbb66db171dd33b1e36bc25833ef01dfce2e184f5c5b9da779767cbfc9b161784d3fe337045fe803ff916cafb4a14df45f255498db98538f6a0a21e63af20acc3c5b88fb1a379f981f8149e8f75bc8df844e6e1123e473d9f5f13bc2ff21dccbbde9da2895bc4f395aa55e0db4915e89ae062edeaef983828463a9d40df85cfcbc2baea3882e6bdbf16c0b7cd15fc80f0b911fdc2f4356ceb3677af852adb82e7a9d24b2fa23ef6882f4e336ee31a3ce1448a783afa6aed49dee616bd7fc7d9740273f5c47e4f627d7d1957cfda7a41fc9e52ab7c80b8e9dd415c3feb2c57b88714a0cb946e4fdc6b855ae6e261f3806b42c622bc26325a13a0992bc7eac1dd4aed45c4ee122e0afbf4fe4b9dcf011e59e672a471e90ff758472cc8ff2eb7e89962c6db3bb8e7501d89fa4bd27f83b4aa83de023dbaaa2d7bb346a465fd9be257599722cdf494f21d8ffc76953d84d7b9f2f73430f0596ea871bb50fc9af91dbaca3a836b860eea428ff3f205757b3e714ee4e3f97f342768ed8afd79305cfaee3363ab591fc999a1e7f0a44fdae9f1967c6bf35da1fbf5585bc62bc13a5da09f9e1d5ea9de2ee7bdb85e3053f13f9b07f97be16d8df885786206303e0bbfc41891355ce2edb9c30bbaafe8b29f8391ee5721f313a76af6b6337bee6b31a23d246c397978e27b8db986910a7f5ea95d9b97f774e0046e66dece570e72fe57c502b5a4884bd6b1b77f8933bfa1764c4b539fcfa96a4b3950cef163c5f7e3110e56c1219b85f15d8befb231f934032fa7fcd47d319de6bbafe7cc19f8cec8858678f345e87889fdc2d7733af19bc2674fe01c090fdd8a83eadf898b433052f794f0dd453cacffab0ffee99b6c56ca3ab5e0afd4b1f90b7b41c498138702cffc1208efdbb3a21341fecfeb31f62043bbfeacecb5301f41d1273c537f8ef8fcc591ef55fa02d0dc517e23250d4145cf0f6a5a05ff7e9ff636eb7ac4bd4d6a6fa87a6f4a6d886304f24b2b285f16dc70ddd73922fe84954e550ca6cc7796aa167e38b96406f5c9a6dc2793ef2b35dafee6cabcee8a9bd43a77afde8b64bd23a19c9b3d2a4e2d2e476073fd096bfac4e5b02ed7669d68a56284405b256b68522bf763abbad1ec4f2672af6fe8ebcfbebb623f939e5a511fc7b44fba905541bc8e16bedd988e8b075c534e8fb04afedfd5de3a30cae033d485475731ac328facf700f9b72161658a265ed22e52c0ab889a019c71a7a5eedb66e6e1e34726ea09844df84c512fa89a923fcfe2c1243cbc8857e5f50ee8db9189bfcb799598a8777939933600e7cea24720f97ac4339e26b4c705d704f4e643f4157a50340da73f1af71bd8dc735856a4db19511d99ebd0fe867c49f35d897d5113f7b2277b88be1d1f94e7cabc1b7aad8725fafb3c4b7d83715162ac6812ee3e1fffb15ea170daff54a3a09eec01f7a29cfbce76ebfdc4a01153c75315e98f7d3a937f102747a711e23f3de18739e7336ed5ac9984a2a7949732d7847de201f6ab79fb19b9a6ad6aece9f852ae5922965de45dd4539e535d58f1266fe8126f5bfb10ac1f43f189d67d8155fd37e92fadd450068af7b65893b236f75092ae8b12039beccda55c5bc168b3a6efd62ab0b6a1ec8122ae05cca45ab75172d34ae1e5495f3d8e1df96f5171c1b8ace0b8ace557ae5c0b78fa12b746ded354039463b9a2734689e528a778ac02d26696d83ef5199c8a75a10bf44e8e396617fb2df259effc6e0b6bc77bb441df91f721de43be1f3eb5fe1ebbf56fde199be0e610af3d3134af4ee0fe05a30ff46a9d26889d5b0d707db85a7cfd40ba235f7304ec43a9613f65beaee4111f626fcda1771abe32a7b1ab2615c68fd6f2d6f1ae2aaa651d400768abf8f7b2364f5cd6717b02bc5559afdba30e5571cb4bd055b43a6a4c4ded24ce0112a9b1f4c6f98c1fbe03d636214f08a31d4b643cc75bbc54ae8f040aee9af30e25efe3d805e655fa5a3c1156136b3ae0372c789d81eee1a46ad012f6c79ea2df10ded75cc6e1e5702962b4b2de97471c2f06a425bc6cfaa7f03387779e59f1f31e488e1aef6925ee3b02b7bd9d731d026b99f1b402cf13f3de7b55f7c855bb5ec6bc381cc3eda5596fbce4b886fc69c5bae21df92ccd91b0c5d1a5ebfa3f28d62ac6d87b410fefd26ccc735593d851637755eb455d53a17d30d10bab75fd9b924f8387207ba08a1c13fcf7a0d629e6d680f0212a9f45f5055434f2f1dd8e9f2df4651fa00f69070e9e630ac41415907f011748e3ffbb0f7dd6f5236e5971262c1b6231a23e617ea8768b9ad7f6a3d9a19571a9636618d38eb3bcfca47abd3a8764afc5e03355ed2fca7a6cbe5ddef54452cf93fc81f89347fd4c9c18300eef4bfb103773b468efdd9afd309adf91726ffe9c317fa20e76a7761098c3af722758ab4fdaf922ea780ead0d9cf3ce6bbd46dc3b6b84f734a7444c303fcb92bd3a0177508cf2dfa7a7264757c5e42e1e064bcd5f017d0c5f5bf393f6db7a9dadaa7089bc3f67823d9a47abbbe7bf3d8ab5acbcbb6c77c23ac3693d75541f25ac5f9c297fa17ec6a9c7ba4eaa56c8fc10ac3ace3afbd0e02b916ffad141bf98f8d0d08129540f21fc5f936202f463eeaa256af7d7c899baea60cdb322dc2ae722c78ca9ade84a2b9aa08bc8d4fbeb30b6ebe8d4edd9cc677a92b15e5d9fb41fee9fdb1e7a1116cc67d5fda58df63bca66c4e13cae35edc33b7fb393549b8b36d7178ad8634ffc603a764dd4e8bdf4914bb87efd8ff32f8ebd70ec45bcaee8e435622ab8768b23faf5e7b477f6b79f537977da5852dd5cdc7b7e466cf47a47bcb523721e9d57f6656d5d23761de0c1391971f02f36fa6fbb01f4642a0fcec8f0c3d9ca3cc1b3ca3ec454cf8ed5c6994b6e539d436f8d9715e90359dc57de2057ac4ff8a87a7e4bfc147f2e169e1ba58c75e41905b9a3a2fda4adf50aeb987e547e431e78f6ea2d1b6b5dc596cbdfa79a59d02b9087e46f8d2e9c56bd9653f61e56df0b696315e364a4e366097b7bceb73dc4425bb867b9bef72471cfd0e309bd734eb81faedba35e02ee4dd956d7af59add47720b4bede169337c4239b7fa30bc3fe4fe11e35dc746d085d97401d1bd0f8527df5059e4bed71297bc9d8b592b74e4e9c7887975ed0a121d73c9f9631d45ea3c368cd71c2d5c171ae7e5c3dc2a70fe0ccddf69cc977c4221981a6cbe7b6b591143c58f6d06ff73615af1df9be379366ee40f84b51631f0c97d166c43c8da0e786c8812adfdbfaf11f26d5d9c6b09f63ef8af73c384fddeac9201c9cccd1456f528cfb310dc8af52eef7fcb7c639a578fd693ea41f703e9e0e9e867ff97ea66bdff4d85be9673c6b3cd178a8f712a976eb5c702d39b7d303625c421c83d8837b0e4fa4bf642fe93ba2e6de751f627e2af70dba88f7ee5b1f0fe5be6fe8a78d6317603e80d79ea97f03be08fd4df3fd04fc8b762da96d7ceff3e2bda51669257f648861675ed61131381efa9f7df99ec923635f5feba55e9bd10bf41a8b3dead8643bc25a5e9f8c8bdc27a35e1fc67d0aebf7ee784a7d308f3d5785deb3ac47603d30252e7a00b1228dc391fb9a125f2a744aeabc683b3f1688e1b50f27ee39931efcbbafc68dd169447d639a736120cfa0c0c8b6e86bc49ecad4eb8b0cf63a90f916f94b206f54f226d45e7768bae8e7504d2cd401a3bc17f746d0ae438f5ef2d0db4e1aba5381cd7aca12dfea96c8bd40af5fd23a82de971807ba7661a11f7af15e8413c02b7a9f4bd2ba965c30c2dc024e40eae1c8bd249b74ed33a5825b2e1b3df20fec33bec13b9a153b13e7f19eb065e8534df319fc1dba72fa6a88be0bcab5f21ee9ff55ac81d95847fa9e26cf2e797d58eb8845676caf17a29f7a4871635f72c36d6f976e41632cfa6562ecc0feca989331af3e67df078adf415be7b92356614df2a84ce10c4999d710a85edc901f8613d8c7ab82b4dc2947303c98438eef2147e7b40e656c1346fd3e794ed98407b0529c673ed720b218fe1e4e505ff53d401d22ae679f1993bc419d4f391faacd377f04fb94e48498cbddc5f49bf9eec315bce6b6d76c02eb37cacd60053e9be439199a01e94f61fe3c27aeabd26f7f43ddc5a2ccb5b528638942f37facaf05fe777fbe96a24383fe2e45b86df5f594fef0dea75edbe1897ab8db37f4669e4a9da6c2e57c0e7d8303e61abc92dfdbb7d450744aa04eeedae1a8fd3eb6479f34e8e737f6b6641d10e53d1e53d369c52a84d514fee8620f38bba8f7b03ad9ac7b5228b95ba1faf3b006c04ae82134c7f7447b7c35a53d9efc154325bffd433c94ed317e284ec5448f87e86ff67047b5d4e851ab8336f68cae78495cab1503587d03cff43f5efb5ecc14917f91de1f8987a879573d616daac2fa49c9715f6492566bbec7ef14ef88c5febb676ec650d34f1a474bf5f7d06276f92c1db10cc55b629ffbeadaa6a1c79c83bfff5d199ba8f16f732e101eeba5cb9fbd1d77196baa910cb0478818b0438673dfbaf602150b22e6a7fa8ce23ce1e7e88a59f9d9fa19fa8b54d38eeb767c97f3b9f31a35fd21474bac62849c30d67a12fb90f44df93dc058c20a34fdd8fc1a8ef0bfa54fb12ff73af9dba1d35b37e24f1ee766fc29629efd3a24de46bff55c52cb7c9c3fbc58fcfce5bf1b5739a75aef3a652ddf6f59a8f5ac548c9f5d30cfd36a7080f6884d28688f6d78dd4787df58e708bbb4e0fdf907eb53e159b131d90331646fe120386626e987d07ee9ce36547b407eb2630156220e4750f719393bc24f346aa0416f3d9d889a29f86eee973b9af3d63aa458a8877acd5053ab14ef7ff42aba6593472d7ea4f3186a27e90e35a84f7bf66e2fc90f6bcddf47acfc10e34fd4e9f72ab71f687e63b9fabdd35278cc3a15df0bf21ae85a725d60fc15176f1853a6fbd06bbf33b12fb49e4d8e732bff6aec3330ff79fc66ce2bf60b0bab08090f42ba7e34aed2ef49c52c58d1eaebf8dab151bfaa207d901ccf77dab7809bb37be95a9b26ed65954bdcd09463c20f5abb9df936f475a99631406eee8d3425f79b29d665e1dc9331c7e8046350dce81eeaef737db859afa06be676bdd6259627318c668c75829e6894ffc6fe04636d9e0dd0fab703f21e72e3cd0a39fe541fb20a17f928753eac720f618ed8cc112da6b0d79e1dc3404c3d71cebbe3408af5ce8511c839aa5f1fc70b79ab126b22d76704679e4db96b3ceda19719e52aa49135b9e83195d441edc2f5a8fd9d624ff9874158f0a08b8fadf46bb4de89aa3f5ecfd7c3485b278cf5a01a5c3e1aa08f52d5e207500fa9a9f539687bbd35f36b78a6aeba1fea762ea68fdd3dcbdba0cc59e7d5ceb00fd655e70d1d638d3dcecefaa4d3ac4fea5e95ec71c3317374fd6cf76e35ddac037bbd84e8a1d7676f15c28bf533ec99459b23feb6724d3527157d00d66641ed254517d19e8eb0cf9723f79ffa4e82ef2c6afceed8fb09fbec47061aababea17d53d17d1c16fe177a856efde38c7efea9b080d5438fb9291fb60625c6e7ba8bd69919e6d87660e707511a7d6e4708376bdb2167af533c85cb1d9532fc57b59e9dce661ab4707d814557f51f5e0220e12f3fafb186b15630feb5e9f2ee29535fc84a2e9a863500fcbbde0d7ca77aef417553d54051b20b04eaa0775f6803520980b06e111693d3a9380621339ae72bf085f5df21197d84357f11d2891f3305f929776c97f0f482305f1d4cf901fcd96817b4bf4bc6141f728fb29f5b83d3aafa18bf7a3fe7bb687bd2a0a4cec77bb42275ccca1ead980de945f7c107f30c23d54e91334f59b423947bafb7b8111c86788b1afcf3e23f30361c977d44350f682c1046a99ed754018f58234a432f694d3f765654f5c8bbc5ec6c7c465167d0f79962b1ea4ad6ba0565bb17decafb7b0eff9857c7f7121d74f3c1fdd5f8321af5f58db39ac9374eb5aa4e1a2e90c3cda7e5353c49fc35a3da87a206f0be60849ef08ec2905c5b717f6d7407facf7c220fcd84f99bf6a1848b95f3d5c691d004ec4f6fe12f30a7b33eb74ff3dd6d5577161d183a2b518d5b19482e90ba6c344d4badc77e911e31d4363db3d4f83fc92619c601db09623636de1f33215fd2cd69c306cc6c16e96e2fdc5e128671dd12beb88fea23ceeae66b9d5df61bccbfdc41371d79e6dd2523ae4a58effeae6750cf6c41db10ae28e2484a3a7f3cb5ddee3c1287dc835d4fb548d66cc497dd2b00ca85f1744d7df144b8977cf9e58d96ab0d2f9f3bd33e5b9b7fa6f127f2871133fe86fe94dff5e16481c4b321abce3f92379e572fceb35538f5366cc6fb47ebee20a465beac7660ff41e49833af7c331d54b004bc69eb385af61e3acfe9eb563e73a6e4ee5b6569bc6f3f25c79aa8a15e60c72dff96e07e4e536d4f555abf242738cb9abd7843038c33d7284dcfabaf06c1ceb95fb80f8cec512fdbc48f33d9e98a87fb3c0f9e99723c251126ec8dc734c7a259dc06c0abda1ce7171990f120d6c9f706a73bc4fbbbe0fd0e47d23edd47add49ae5c8feed32f27e813f14c9cb6b733793463cd41d16875ebe7adc7d91eee9e696c82633d2fc0935ac6cc3427e8cc913c6fc1edb9af79ef01572ce5bde190a17e46fc836227f658061c5bbd978b1e487fb49e856e438b00fce212f4b0bb6686ecd182377298ef0e6d4ca1c2c9d3717a906f4acc10e142242743bee36cdb93cf1d07158e67fab09977c4cc32cf89fa230d7f6a0d885f92ee8b47adefc5f13ec7952b558700b575df7a5a1d2404bd1af208a8d73df2d70e475f3d2f55cd98f6fe7fa53ebb1c9713f413de96af1ef3c2b947d0c7775804f31bbd77a5f7e5fa1d1cf17f72ee608f9138099b13f7ef809b4e5e7ca71369dbdb43fcdd63bdae649ed3ffa6f948d4b19d9863e1e8d93a34b4e6bf3847eaf55ac70e7c1eedebf348e51292168a78dee4cd9735c3f95a68d6c95a6b7ddfc88172ed84309062bdc549dffb7d37271ba7bb17ac0f7fb23e89a8a19c499fbf3596e55bdba3c2401c14d5d6dc7abecb3dd7644e5658ef49d227bb0b4b1a5d694d295a3b3df408976bcb63bea9e2059a4de4fefb723b9534ff999348fabd8a3e0bffaebf69c777fef0036bb479d5e06c62ee4fda32412f0b318763dca9727fe2ef12df2f744ce4be6b01c63532c9bba7f33b365f93b1b953c65dcaf806e6ecf4cb18c6ddd5efc51c8975b91f7ee29c4ac7459bcb09bc027e57c131476d0e7f7ac63e98f3706deabb4cb307d4228573e21571f7f2bf156e58fdf967cd0ba4230fe9c03b1a6be44f63deb12be6dd185791b3922fa4dc9b392fcf54cdb5dfa8e5a968df48cf0fc0f852ded1daa7350cafbf35971d9834c032510c27b1a4e670696db6501fdcaf49dfe6d1601f582df7bf0a2e560b5718dacf06f63d0bd277ca70ffab1eeb3d5fc54a5fd3269e5ae6169c37c01cf4f609f2f058b7770fb912ced319f1ef51dfe6a9fb9d0a1c3a78af97a35478034a6f1c17eb9d7e9d43899c883d5bc773c01e148735e081115f09fd87cbf2d5ad9a7d66719f22ef18a05e40df0deed4e684d61ac40a8411947e393efbb13e52fd26543cea39afd4f3f3ea0761961c3f197d35cf65fe57f4b037e5820754227394f4d99ee3fc7b52efad5eaf2f157b29fcfb77f3f57db4f2fe803d779e6e03b71b47acd6129229e9b97c5d4be8f86eb95fadf4cfaaf87bf1feecf9066b88840bf4431d4780f5a6366f1c71616d1f22a8e5f03e55d8299e6bd6e18435c596b79775829ed7f4233574bf9517e2e3901e0a7a4a1d96846fc23d9efa507bd60b70b47d3a9f500c73e135acfa403b16ed4954fb9fa34f3bf528ddf114d789acc3ca7b969a72b339eabc9cb57abaf25c29ea52f82ed6c2fbe85ff66c046a3dd82dec03eefb553a91f978785335188c5b2af5443f96afee32b75dea8dc97e77cfbec32fc15aa0f91527b29997b778c09a4e40116bd8dd78833c221bbd73f31df1f34eb909dcf678d9f7693ef497ca59a3f68b3f32d68b8f75ce0afd4e3fd4fd47095bb60ef316c777fd7bf0d0ddb755ae03581498f7e873af7ae62b3a8f783f4dae90bc86d62f418d06d6a8397b802b52ee4b70a3400bacc98d62bd041a7fd695e16ba871defcb26a3fbba205f476f67e77e588617dfefaae5f3e6973eb2f71f0cdf5ccdc47ee2b618d3d9d62fea563dd5bd83fa59fe4ac40a33cc82f0eed51de9979d5657d6e85ce0ef691781e72fd46e701b90fa53eb7211e5734973af12802eba3e24aeb1c0afaded96c83b1fc196334aaefadeee329696f8b4bda3f9d98ae75409c11e22e72c2d3e4d7369e2657301677b1cba489e2b27688bc5faa53cbf7e1863f44ec0cdff79fb0aee20f03edaca8a6818ea11dfc1439253c6b50799ef6f92e9cb385f947d08959698ffd9070aa8bf8efc7bed1ffe5b198be60ff9dfc34d47d45e676059d3b79bc219f2688bbfa8835280487f5345cc68751610fdb3819d6c2f265df83e7e88bc27d867d0831d1e7107a7f4eb8d4d74f1c86d0bfb886230d8f8cdfd5fd9d0486dea99260a2e3a9e599712b823666e745d72aae5c03733997fc18d8cbf351c547cbfca9dceae7c8aaa1e313d2f929316ea8efbe5f76e0c7e5b36481f03e182ff1dec649fd1d4be94f8b7d07f1a4ce6ed381e1aee7ae783ff86c436dcf50b97f6abf6202f19dc5f8719f6370eca73d937ebb36c6a5cd3ac51bca83b0ef835e17c5e491df059c41eb59d2c421c99a4020f1b82169ec77cc177ff3b124cdfe2dc67f128360e8dc2897b9520a962aa894fb917bd59eb15baa3f98b37751afb9ca9b1a7b84eb02ee8088237ea11617c58ff9d4f94fe691ca7d18426ed5739a3df578e8b7eec5e739cdcfa17c57e28ad4fb19670fc950cb6f9927815acbcdef4b8d197c1e19ef6acfd2988f3dcc259807716a7d27dd614c477e52fd8c7d243e9a6b956280d9c613f56fe8b1f8d6e112acba3f9bc643fdb358cb8f51d335b730afa8e7158ca9fadb6a8cda7e2e659e42fdacdf8195eb659d5837d90ba4cfffc5ba55c606f619732c6a4355c9ffa6ec2d803decc0bc35f75fa3d7c4bc490f27311faef7316fc501f998121b491e6d726d213e91e39a2efc20ea1a6b6b2a9be0792bf06de2fe177e49b5e57aef915a541b97f719959bb9410e3769682c84478198ab8764a4fa037ef57d91b78e9fada0e73474bf9e2dfa2ee0ad3fa8379d4703d414a9b087eef953a7a31e256a7a89759869f16ce5dcf1e06dc4b3928ba370a34badeeab791104d3d7c4b8c0f379c46b653dfbe5d103bef812ea85eb87827cbe65ec5fecd9b320ece46b8bda03eda106f1a2e0339fc469b28b983cc4e51983b953557f066220c9dbd85d571df8c079317d6b62a7ce7006559ee44cbf79b382b585ab39e29680d3525c56a02db65c697e7336f949ed112390df72c408dcbeabefa7fe5e4cefc71efe8618f6405a94d5b6ea7e9fa5ca613ed1d8e03a784dc05bee4479abb67f476fdc93270d3f734efe6bec1d8873173d52c89f40ef3561dfa5688e27e4ffadf7132bb8cb553e2b9fefd51c42c6a26db4bc9fbc5f43e2f33d55c01bf6373f01db8cf8d27e3e6df9da30577ccabe4e4e845a71c1d9010f6daabd9367d974a171dbac8185f35bdfff4bc3357ee1bb117332c03c4de816c85edbb381fb47f11b62dbb33bb93b67f0dc57f506295fe7da8e7973909b5e79fd80cf91cf35eacdad0653ad7e641937e6d94b9e2d6959704cf213e24ef51c3f28d87a9c2b3707eb77c104fb34df2447c6edbd60bd695cd23890165343cf6645fe702f38966a0d82f8e7143bc3bbbc136be05e20634eee4b1805fa0eda6fe7b636db54e94d4edf9143a569345b86e511beb36cd524b59e45547e9076ab5e6bfda22fd2c66275e066e5fe18cedf596f877aa9b1e611d0ce8f580b4cd122c9bafc8288afcdbae9ee647e718087904cdebaea1db1c02b8c13f779266a64f672ff68b37e803781dfb10ad2c3263efd25a37b5ba29fee2cdf0f17d8bbc23dd979403c5ea19c79c42fbfacc57aaf7f67302e48932468e091851fc4589cc7517f0c63dad28d08ad938d18f5f5ee70077f279e95f42a1bf10dccd1fb7340aba78e062bac9b1613357f724cf202f7e718179c1741a7477257cfc90ebb6bff7f351f13f693955800eb40bd5ed99bb9d27a54eaf1861b4abd5f0d1ba0e8388366f608eaa19fec55b36dec4ba755e3be5b7a8f50f358b077f614d7e0cf0676a2e37c1c90765a3e0bd9cf70027c7fbf3861bec6b53e5ceb26e0ca84ce2cee6df518eec91b4fe2e6c6b467fd5f1d3359afc63d50a9772a67b1acb3c39adba81aa2c9eefad8c8e3cfee56e2629395e6797271815fefdbf90dcf50372eb1f6cb5ef3d6e9c0b1d541fbbb9693d6f728f7ebcb4a1feb261e7cba0c5c2310efd4b3832df64713c52ba32f6bc7428b25acd73fd7f0a3eb6ff93ba4dd48bdb91573a527ec6bb739e37a50ea62bd04b03b8b08fb35d313d6039e0d58bb2a5e9ab51b4cd62abcfb1d7196e733d231abd6c192f024d9c340f632eccd7eb9ebf07fb37f293a7e1bff79ecd5f3c38478ff6db9f77a1d9e88727e0a5cee1cb50945ecd78c5556320f0ed5399872be54ffc6e772dbd62f73c7a1c4a1c5859ce3d0a30d668773a0eea788d3aaf89d521f45ed0bc9eba32678a7f613f77d34bd4cfc4ebf30bea39e99d64f91eb8a39ccaa8701f668d671f113f87c7de4953955d2c644056f77cf7e672be7e17a4bd8244bd128fb0c46622e8478fe3b5087863d71a5e4891f2f729ff3dd5982358fab83bd5065aec973569e878bf007f9442bf3ed58bfcf80d7bd9c63a1a38eadff655c634cc7eb725be7ed13778a38873979153bbb01f7db5edd731323b88ea0ff43eb5468bf697525c2f7896b29fe29957bf7b3aee82b495c9dfc6c7846eda0c58cfc6cfb79f84362b11e5ebe8ae5fe36e6bb1b17a4e3e9f85e5c403598788afd958a7280a0b3a6d86fc481f0b736b65d99cf4aaed97d96f2be171eeb7d34640ce68c3cd342f07d0c13e2c5b07f553296d87d6f948b35236a25764e3cd4e40a3aa789f6ced11fd9265fb67ecefd12383365bf3527af09e62dd1391006a875c0eb997afb720dc87d73f389fe194e15ca7b86dc3b30265fd6b08a30907561b8afa2240edfc55fa939c749b957e1772be7415c3cc1f9a7faa88b3ee3221eaeb47e30be437e067a87eb69aeee1d92b73d59823fd0a1c1b12d945c34e807a3eb49e480ecf90a3833aac53562cd530ffb518599eb982fbc0f7f7e863dac74acc112eb8674fec37edeb5bffe8ff6d26d6fa7682977e8f57eb71abe2877b5b2595f12fae62267e69ef67a3578801a91a16865379fbbad4baaf4c5157ce12d9fbcb5fe2e7e037c149ed1635cd786f49781fbbe82e748a309f3576f4d9c86e43f6753a7e9fd0b75d3c2f457d7abf032c6b912276efb6ff31ed68c53a13ba572a71347abc5b03fdea11b43d7d456fcab7df8c4bcfba9c08e2938903961f6805fb90e246e27d9733c42356af4ad11fafbca3e192fd91fc96ebdcb53d07806b51f45319fb26775782c59196893a11745f02a7216bdffe1176331c764ed7718d83f144df1a2e539f522c7e539f75dace3dcd28916b3b15651e02afe399b67ad26e933b619d626f6126ce1d72af192ac99bf458d3cc69cd3392e7425c5d97c59a087ac3cc774ac02c720e8d37a59ee72d29d767dc0de478311d4fede97dbbb758dd3d2f6defd5b733e1fd8cf5af8ef4a2d2dc24628b1bd12371dd22de2178bc3b2a91b1fb93dc7246c457d7db3fecd02318ff1e6847965611fe8bdc03c193f5bc5c8656dde8e78f564b5c680f116ea3c14b514c233dc1a754ae0e1d3676e831e7215a90f5a3f139ead020bbda49c2357fc58e5df98939158035fe3fc581b5a6b3979432157684e7ac972fda99caa3eff8dea5c88cb1e12d6b4686a7aabb9d1ded5efa5628c2a7b15a0af337b1facb9df837351d66f30ceb736fda0a901abf55fa74a0d51c46d8a6fc51fff365f06ee6700bfe9ce5cd4467d5f870d6d60bd46d8ed7fabf82b34fc739a983b83e74cd80bb435693e35f654d26e2e707fc79ce97538ef8e77ebdf973ecc595b37750f359c6dbbaec231691acc3bb17a7abd4efcc6bbdbe26837f796c951affb319f75497d0b0fe7d6b9081f3bafa7fa1714e5a41bdb1c05c0495738840f123b1c5a39e527c59e34555a184afc3c7a8eb1e74a38bff71d795ec9b901e7d27f2ffef187ef785667bb83d7fa3bf6fa182f88632fb11e5d3e176dbc21600d26d7e5fe5fc44a61712f565234ad149defaf71a67f8a8b792d85e0b5b5a7efd7b9bb2b7e53c689d6ba85151b087d0ad5fb2ba4335a6243b5df94719b8cf528e651b09b5c03d9e793fb384c5a6fa1768e6ca0ae46bf59cf3f5fd10e4ead06a645c94710c3ec905ed440e3c6c97fbbf6891bc331f237d6083fd11e94ed893f6f357a6bb33a76c1987731235fb68f75d8f4f256ebeb723cd937917a2657f2da89d5f80a31711dd864787f6d0c2ae981116681faa06120c726d0fdc9173ece0fc74e74ddaabea2634c389e679b7057c7c278048cc5776b853aa0afe14fbdd7a5e683eed55f757dae1bc32d3542442dace7a24ea5f2f7d42e46b227333dbbdb0fc9838b7aa40fe992aec649e9d7d13b99e75509ba91e5676e4afea33b917bde7af2d8b14784efc1ea72abe32b8c25033b790fb49af240f19a157190f4b1de93defda13ef3c47e151d7e2a1ee88ca9173a2c05e960867b9a2bba6f9321e377887d2bdcd3b319e9afb775f0152efa5d2eabf4a5403da7bf9adfed3c857c94c68b10b01f76819cd2cfff2d6b45d93bab3c305a7370a57149e4e7168181fcd28acf05e5de11e7fc8fde7fc2ef7fffdf7bff594cefffcb77f6d5fbcfb73df4ca437c6effcb9a6334b1560d7de568ccb99daa63b4baa99a2f8e960b73cf5fe49bba968e7ee62b3e60c17d7f3a3e5320b74abc3b71277a666d8b5dc3cfcf9fdf603e1d96af2e691a885cbbabd7300e75cf7faced6d8d464f56f8a98eb5dc8de738c7ce21f473ac2b7a9b010f18eb60c4093f376353c16f82789ef84d149b76eb3c29b18a5e4b8c19bb257d2be7dc23d6b03dac39a0f8e5f659536410e23a4ea81eb0d5b02199ef220fae9713369d71b87aef3bb828d83a19f7b2264c7fbda55c9ef97733f42656e29e6ad2f36edd718ff83cecfb2a8f46fe8ec45e303f467a2229387f359e967a86f28cfe0856f7e3e967eb8a58a6cb6202fc7f9fefd1196f66b8b7adb7b93a97ddb5a255b29e34b5ba7ef4c8dfcfdfcc107f21bcd41b3c1de5efe21eee8dd3537daf723fbaa2f7be67b1768ca2a3ceba9b3c0f30771be7bb17c4e4d27e5c980e9c4584f5b845a0f1e1eccc39f9486f3f50538930d2f9eda4fd1de275e20eacfdc4c13e84b37d536354d0506ef8beb2678412ebab1cc8bb5c30f66053bce9b837119e51c35bfafc28fb47a5eca3ffb6f60d1a52b20ee7d2b9e3c61b3d66d67b1bcd985fe66aed9eeb3fcd1d54dfca6fd4b3d87f55871f34fdc9ff1b75f88f461d1e73fd17e5ec1f36aff5121d2ee8a792be16634ddf43d947ff4bb5fa8f08e2f86c37c0f8bc57a875cc8e77f61f782075d5d51be7c041f146851a58ccbc35e16338714cf2115fe9f7c6b5c30df76003c9fdd7eae2167ae72ae73f8dcfa4c7759936468871145b1b6ad8be52f3a773d2dd99e81d6267e48d939c3c99f3786add2eb00e3d8ffb7d5267c7f86862721e51836a356a6befb5306a5db835aa9dcbcfa75bc2ad719ec275ebfa4c14ebd2b14947886a54895a13959e816f81ae5748b1347bfa7f8917c4988bf07ac895209d21d2fe428d1851439b093cc87ece75de46fd1479e2ebf166a5f6491037fa6c80ee96b8b673258c7915d2e7657f73487302307c78efefcb9be65b78601ef977d85705d6439eed16730f08876899a44f59bc4e5b5c48f60435ae1d9f430ee0cf178a15b43d66cf7cab3745f7bd182eadebaeab77243d3c4289b1e7de0cf55e148d6b93342d268d9a923c7f4e8b099d4f864f353b13c7e01212970df86faf7cce66f19cf485c8b73f1e86f81e448ee5f3e70bfe7cbfe3f3bd35fe5b3539531c809e0b0a072a7f4d74ed17e34dddb3104bd65f237ebc0a0f2dbf814e1df3dc22df117bf8fee7ef88f3e4b26ad7aacc147105d27f47e01b0ac5d3bcf177d014ebb347bb6188f827036d9470ff78f469ad295aca4217c3351dbcefdbe0409aafeca147d70b6c711d553be81d71d50d0d6385ef6f2a1acc03dbc3da50e5ba8859ad9f07e26d058341facacdefbfb26e55c97aca7fba77ebba67ce7ee176e022a0f6febd73cf55cfcc6c36257d6ef6ad8071107b51272ee7fc22f636ef9acc582f46f16bab73a37019b8efc99ef116723f0ea17fcc79df62b2146bc40d3c6b11b6b176ecc5579e3ca89fe6fb29aecd6b9d2305720f15b91dd64417317da6aa3f930673d08eff12b3257c6a7dd5a7f6f6dde8d4e3794db03ed4cb0cd04df3379f3eee7d5c433b62fd03e2bfe72c268cc14dc4338618773ed3c1ffd7df4fad15f95c24520320fcd263b103df2cafe51a7393fa5776d20bbab57b05863209a6c3dcc03eaed3bfeb61877cf988e2b36ff83cf7b8106aef507d07acab09fb3c7a74c6e5997d8b557fbac06ce30e82a3328f41cbb7bf6cf028583358a997515f6cfb06d79f907e478afe9d88479beacfc89ad6421310b4750fbe168756d3fbb5e6e8176a89cdd725f669b9769cbf0e91cb777969e0ae9e2a17e3dd33710f246f659ced02ac65d17d155abdadad1d06d8d60a78221fcb6d83472335ab448e5890770ff794d73ef49b57a71162c173d654d3e79931072cac988317c6064cd0f7bb444f5e7c6ed7474fd0d321db224f687925bd7d0beb1f4595ac105f3027ddda45847fcf8d3a1e40bfb362775d68b9a73f9fe27fc3fbd3ffdb7a430e3c6ade5dd290307232ae44aec7f6bbc6dbce5f876ee3b70ebeaaab1bf0592bc72379d2fe3bea5f79ad87a0b5f4d1f9db70bd17fdfb871e79888bfa84ac47a29f3768af3dbb36fae6169683da020a976b319957de7e7a11f7ee97a36cf272ced0b312f3047f3e460d6119d7b0169a1cc740cbc99cd7f059fbbca16b31f17389fb1a6b1a0afc59b9466e5f8c69d0baaecadbbcf7d9aeb1d59f8f34443e343ca0ca33f05e855755fd7b6e0efa8058735ccc86300f8ba1febf793f9f887366ec58b4aef7386fd219d415785f7d260dcaa83f6aeb3f953207171c0145c777a53e1bfcdbee8a9e34cffa79736ae1bb3c050b9f128629019cce099f692bc70c7021822b0cf8de490fb526554ec7f909cfd8060ef5e57783bf68fe424d57392eaf05fbb0940d7fe519f19e202e2cbfc13e097cda890d9880c57a7ff035dd02a1cd781a2ec3a17ca668fea45d0b7c58841f9ed061d3ea2dc0439c18f03b570f79672b754c9577f0bab5a12e8463f92e340f755c80cd1e02629c4f919c671b3726ef81be0b5cb770ff26f58663efd93127e2bea3a01be7db1d3775d54f347f8d3f692536eac4da7924e313b5d7537f37769f8be0b077a6b27fe259bf2ef0ce427706ef28dc9a6bc91d1a67e512fda7ae7806a6fbe9fd9e93b6bfe4466a4e34bc198f87be4fc833223751bfb5192b253a3fe4b7e2f37b70302eb3de2e0d2c5aa963b0727abfae4f1acff7fa6612233d4b1ee4bb2bed02b534a25fc413c51a46b195b506cf764fa4ff3f9e231fea5034f67fd7ba62cca5eae6831682eef58e984b773f857b31f0df67a0b539971870dafb3e1cd2a3322e8473781d76d56c653da0da403fa9dc533c7e1b38aa473bde47faba71d5fb5855c5ded3cfdf6183277d51f07f1a4fda091d8d274db8cdb8f846f38dbc4acadecb0aeb1743ea553ad85f941c2ef9f7e8847da0b7356b42c9b385bffbee347b93ec6d7f0ea82edcf7bfc640c93ca98ebfead839076caf43f15d9b7b920bed63d0522b499fa1e3ba66b3365f299838a59f5928da00120723352fa69f0163e0eab5b355385b8aff87e8036f445d707f203e4d5adf27fa6d7e799fad1e42eb3eb1d74f356bea0b968477d23817c674bca6187c50b6def7df715820f71c025673fa96b76b932717f2b624ba92863ce30784aebcc8a1b27db2222c01bdcbfada90d7ee0e46d0ee611e14ad7418b703edff9ac690edeabe7195479e68e9ebf0674b7707e3f62dd5b8a85e87f196d45b295afa988ef2efea7923b54fc47df7b26d83cb6191766a95b14e8458bbf86c0efa47fa8f16610bf6c306eea158e25e841a515ebcb91066ba79cf9189b17adfe17a0abc7759fba37ff7b717c6472a7aa278365753e00e94e4b1ea12f7d1bbe07817d514f3461aefc2401dab792f634f60f6441b174aae26f640a3206d65e7cc398fb86771a640ce7605ec36e17673d4625f91ffca986328d93b764cf27cc6f1321dd477afbae6ff047d23e8acccc5dfca91c029fc5671fb7a7f6cbda3beb2d6cbd6f6c029eb9667e3a1ceb197fb863cff5e5dac2bbc2fe94c9e2fb578c03e10e644e9ab5d8537add887361f7aacf771f51b5ad259a8f084554c7285b8e7bcf782cf21706a627d413d5960f0c5f5a9ef6927c89d468d9f71be239d2c7e1fb85e1e4c5f8b2fe47e6204232dcea4fc75fd70eda87b489c4cc7f7a37cec8975b4de7e1c3dd9ef4be4fb68684ffc6d3cf99ff312f5cf35712b7fa57fd0f5b9aefbfbe3f5bae2ecaeeb012e4b7234bc8e1814faff9f623ec4e5f37aea991c43f7288616eb0cf24dc17f5278480ee66ba45feed4df03fdf2f9079f6b18837cbfa0bf4d21d65e315c562162376ebc0e28863fc05ada3a946f215e1f7d48976a2efeace7d5eed997f52bec735dd693976ecc396a7e2a9ae7c47f57f61af99ba09d1e737c2e3f23bcdedee8b9577a3db985518f89abf0469e34016a9779166a5a3bb781d65bf774aca1723668b5df66cf807ac7becffa958955000f1ff7f75cc7738ed0c341fa5f482d73880783c77e4ab5eed0221fe818f1605b3b9b8026969f9c716fa3f3b17278fc704c51dbca663eb5aa7393bd2297bb38bb259e7f395d678dbae55121cfa4783849630ff56d8eb8eed35902b8c1692f422ece6d80fe006f09c674e80513e138057de56ff25cb5ae0f7a6d503d17655c9a514f71f3e1d19c14f764a4410fcff16ff8de0a9ff6a14a994f77f0967c86adc10b5a780e281e722b3fd9c3ef923f36d50ba20f13ebded93824bf0b377cd47a290ee18a0af248cffc107b20369c2dab6286bd96e086d864cffe6543df20a69e9a3fa41c7ce1ebb91cf4c11b7318fa0cc4b90bfbc4f1a9c823581d2f887b500bbce8912e97e2039f5b57af23f7426ccbf37a3f94b8a2ca7dadd798374e5e57e4d9047b833ddf3d5743c66980d67de027df02f230a4baf7bece13c11fe904e3ebab3dd52fce80afb9333a1f70ba8e114355bc3bdc176c71e5a0a7bdfa62ac84beb0e45426b2e615b950eb2a655c19cd155e64790ef47d4af4c57cf95b6dedf2c8646e2cc59c9a16711fe6d7e772d7c63f677e81f3f0badc0b3c39eadaa938daa35bc733b216a0ecdde8bb35bdb0379851cf57c1d3ce667c3f8033c5df3fd27b1471941837c21f173bb323f6917bd74ae7705a7948359f6b709fdf29e3b8706e3bc425fd75d334beb0765f3fc356c6c62f8c2777012753bfcb9d723670bf1ebdc4a2c02ccc47adce8d75d374eb34f870e2fd9a91a65f561cc8efd5de30ce8e342703151b39d36ad1e45713ee17c82bb67abd26365a623e643f225a35342dad435affcd7b3053a9252e7ed34cb750079c8abedec49dbea9cf23306f78fda4c273ac7c437e5cd8d2ac55e2a95573ce29ef9e39882a97b1e3fbee47b26d7e565ce796d279e7be07ab66bfb6604cae9227a5d514314c94bbe6f85eede4742fdf907349c177448313e7ed53bf81fd50798107e78bb9acf2ffb26ddeb187293d88f0e546f72a635298e7f57e6c4acd8cc98b1a5b8af59a529e169e1de6f57e915b29da778a7e9352ef9439791c4a3dd0783821bdea3d720cf26a8db95924306f72ac478347ad2603da32cf15d55d30673f53ce6efdc29a8dbb6a6048b5da0cd6755e2946d76a2f6dbf9082d6a1ec8388b5a3f8f6ca3e34ede14abd89f9485b1593c1fd6e633a7642a86d551baed18ef9de5a7da82039e45067c6f82e9f6d1eeef01262f99deba180fa7220e36fa5ae5d2ab577118fc21aa0fdfd1d7d42f5bd6bcb750b3f416f6b977c39a392e63ec729a1deb7ac86c47176e2c3b3e4b116a3628ffe52e121c37e70b5c5b9bc433c843ba6f343c905b6a2feea6ee74aaedd712f51825844c325cc39cd2159d38f5003a0dfd050d73c9a08df2ae7f177dc73ffc763c6e7ca5ba9eba019332a38b2ae719cc2deebb5f97fd4a7817c07ebe8798fbc8e2aaeebc8dffd620f08f223f50dbbf6a4e0f486f8c302ea44f956c398500efcafe2c52ae0df7c55eafeb4e776f74772c87b2379c67ca227476ecf1714fb86dd7568a5567516d84883f3544fe3b1617fe470c3b5073c16a93187ded8c19b95439ee2c53f7ad0530d33f16e2476c51f41ee2cb17247dcabf3f1b4bdfe9a7975857141089af25b2db7fe3f74cf863bc1b91f9a4def9f276b8079b7e8e3632d43cbd9e28438bf8ee0454a2f34e2b241ff278f0ad03c3e1dd758cb229c6ebf3ef7a59761ec2166c548273da189ef86e8a9716ae74fcd1e923a77e199e9b3517e650f1925a68928bf517b2b1437a7817c66ac13ace2f909f3bee6e7414f4ad6d34907f9fb057a51a8d770a5398a3a96ccb9e1bf4583776fa4e93cc83e4e3bae55b89ccc69c0ef70beb3b5971dbaa32eac6bc798bfbb4decbed0b6919ab0a855ed1237f7b085f771a9f774550b40e7c90d1effad275de7f5e2799ffa0533057fdfd64ce9a55c0fd4af53ef535a2db550ee0d3cd25bd794386dfa9cfdd267ec829607b5ebb6f6e486187c37de343940ac1f554dd0d365eac6097e8ebd22a301e1678ad9bcbd37931638fa6c2a182f23c71a0eadd9858849bec47591c71ce1b52c53c772d9c92bec271561ebab760ce21b2ddd5385bb3ee92d55ae690cbda8a83f2a2aec7d9f4cacdfad85d7b4a88d9d73d024f0c3c78eb5813cc7039dedce086b68c1a59818f2cc424c27f1b9f43815fb6ce89fb41897a889027bf35b7fd5f010c9acd354d3c48f0e1f4d0da827e31760ca3eea3882f5ed91a3137b63d2ad95e3f991e25eec63fe137a5a6dcf2ede7df55a4171a6bae73e59a9f802e47164f67cd4ea5f043a8717ea1397275d8765eaec4a3c9fbfd1beef6fae1ef15f951a6974a5334cd72e2cdd668f37b3a897cb3eb5c4c3face3cca0e8eea7a063e5011f87d45d709e949ee131cb75e88efb3c1f7594c72ee33aec03b392e88e3599813c47c3d33f76860b98ca754bc448a4eadf42232894facceb57cef4e0853d0e47f08fc968c15827142389a6c2bfd5a027d7d1929e26b454c2de3acc514f420fdc98d38ed34968549cf6bf5f179adac9c00a77e630684e3dda086a7ec7f8af15ad6d794676cfd77ecc34d27e8f5fd89dfcfebeb4fa5c7f97a8fde5ee1be08e1b760df4d6721dec771819eed9af7d7b6227d46f91de95b1c2611ac0be9432efc24a80650b9dccfef9a8f075d8badd0fd9cec179bfae6be3b6a68f200276e80f3d7265eaf3fbc042bd5c70eb9ef17ca859e842fa3d2c3bd0d2a5c33b28618b635edfc9c34ed16a455e91ce9b7ac7a8d2ada98f6c1247f687fee11b74bd4b1de6ef88ed26aee81674d6fb93b1c615fc198bee7757954c4e817119c1738fffc470be795f6dc55407e8efa3586a6ce572fad27d462888323d51576258e3dd54a12ab24af5997e76dc57b5d88efe55618a889c73d4ba506007ef6c37d8a7325fa7ef146a0fb53dfafc00a17c3a53f1de7e321e9167bba9f3a71b0170d2d59de67ca59635f069f21da87aee465a48d5f48fabceeeb06713cf6823484d5efc9de9b36476d7a5717673ad1bc4de077aef5bf03ced3e66bc9f59812eec1a57d41ec25324e9869eb5fc548023f8934d57daf2771108e09da1f3f095f133f2a7e84125b5f508e7f3dd2dab087be78fed549d602e2396a0f7c6494bf4cee7f8f3467b7843577e819689e7cc33148593bfd5a602f2b9e3ea97b77801a22c674184df04c0d8ec4bf8cbd07ac4daf641d61bf7c657f2dcaa7101314957dbc6f87bf7b5d918ed61530bea8c7119c13cc55047e53896d04ae5dd6d623c0caa50a9f55fede85c6fe89fbec6616ea7df635d6a6d003c19f9b54bbb049c3ff9a1b50c7a982ca632eab8c6763eafd2beb479c8f36bdab8a3441fa59a9d74f680c665ed3dbce4e0cc2584b5ccd03692df21e26bce9c51ab9085e9ec0fe6fafb8af16b39270e7b9e0664d47cfb3d25906d3be0fe3f764f511bb3ad4fae1f692def9e2a13f23bc029ebb7e82ebba92fba17b49f68ec9f340c300490ce298c6d524ff19ddc3fce2122e6f4e736a815a4f7ef2a06375139adbaca54163297ad972cf2911df785cee4aaae514af101f458fb71cf780cabde1dee7b237a70de315eb5a843aae24c5734cb977c477250669f81f290eb5aee8b1d7177510b9afd2dfd368e035f4a09e89cf18cedf3373c2e322f2992dc56ceeef139e19461e041fce643e5cfa439a2f39f7011b9e47c1edc930e83af0f9b3637ce8dc80ca3d2107fd49f4f895b8b0e26770b72f5a9c2abdd3b53ecd856ad2d1772b5835f0b4d16994c65493b35c78e6975d71f50877401c1d9bf8c77e21f17ba80b81ba99d5c6687a011656f1885814d0d9604fb2887d67b350c7a93fd91e702acadea2deafc55e99f77cf0c773e20dd490ca1bd54818f32f6367eab78537e248eb1a841e6bf609edf9f1b33541bceb89d78fdc77a9761497543b275cc6ffc7de9b3527ae345da37f4903389acb0624b08c8ad62c740712610c62b0c10cfaf527a8caccaa12b8f77e9eef7de38b13e75ceddd0634d49095c3cab572b01759b8ab28a7bda25cd6c2060e78e4466f2a43e662c398f088ae9e2b9bca7a44f727dced3fe43b959af6c6262c48ceaea2bee4dc609f1bc1bafe82de294fe41b445d94b0f37185b5867145186e3dff16496d5f6fd13cc7c4543baac71925d5bb2426067579b177bf72bc2e61f4ed3dd6dddd72b822ed0baa352a635ed6220f883d4cd311616220fef03ae10fbda173e8d9ce46bd33c45bb80f9b891ef3c6f3ac72f0baa226c78ef1879e5b136b3fbc622c5ee52ec6c956997470aef89cfbbc874ae300119c3e39febdeeb28d01b5c855f0d375947bbcf82deef988343a15ceb95ac3a2b772fac98dea8531eb3e72f7b24b49fe9bd7c8bcab8885e9b3ccb8ca3382620799d38aeb2b9eefa5e4c3fbbcef29a9c9ef9bb3883821b10e65fdf48ed1f373b3ada3a070091ef1fd91b76aa6d436d04f226edc3452b478524f72d348fdaf82c70799afe21df7c1f6841ce106bd7f93524e44e15e3397e06395a0a519ed0ed8abed8a7c7125f17ec28606c4df83b5f1b47ee066d739c29e69e327b785f91b73d922bfc175b857a79958e33ba889417cf4bbcbf722bfa6fb02bc1da116cf613c13339a1331ee78e64a9ea5b66e4cb9c67c4d051c84156a221da629f47c677beadb67eb15f4df97f6d46df369f51bb4150af7d00135cad3c651f416448faf96cf052c7782f887d87b01eecef583de5beede886f7c47b9da6b897d22d981f8b0e7b9176b67a6253f7bb3ddd6675d9d635bd48da5f65466de509f2a80ffce65aef870ff1ef785f3a75cdd67ead5103a5705cd7392c8cfc43a0f29f775ebd50a7ff1e97e0fc15dda7d728f6a08ffdd4bbdacbd3a66fc9e7339666f0fd7bdf5eecf16d23a4bb57da67242d9a4f169ed0df0b1bec0873e063b9d8f197cab94fb563173345f4270e50a0d08e26196356a9ad7e7e3fac081eeefa4f66bfca8c7b415be9d16c7989cf311b4bdc1263478364e73579c75a9dfa13aa0625b2375be929e5e9b8c57f7986b02bebfda2f81b5b72feadb55b0351a3f79ec0156c78158de7d09d6fead85bb6f08436dadbe9fe05db00609f1c1a91fd86182f505b2f78d73fd410383fb6c909b15f643f6d3e87dc2f7eb6cbbff05fe5a727e6b3c0eaeaff5f152ee21751eb1d69837cac3e10fd710e322eb28b2be0e38f2c5d60c556d16f05315bd4cfecc26f66b3fbe8f29fb6914dcbb8605cf5634ce8aa6d0f56e2f853ff56aea7d6b2dbb4bbc9cc58386ec9ce732057755459846c22dcafead6cf5a43f4c621fe1fbdf1217297bc7280ea6cf789d45f0f6ecaaa88dd1f477693c199d06dc46ac5daa19d17d73df462e89c2f06e95d9e6cca6e737092ba5e3f1be39e6905fab4fdc9b84694cabcb1cf36df99e722fcf3055e5a8f71453e56faf7a3f9b5d537f5539260ccfabf61d45d3ddb74cca9f2afd6622b66b889f9af767a9f942d90f57791a0e4b68b60bff8cbf2ffb4eb92d09af29b713ecb358f749af51db9fbb3ee2a7fef03c1dc41f85897e69853deeb6c4bcac406bd0fdb31c990399bf97bd6122b6217e8ccb5ffc7db5f67651b9fe551f85b8d373bf930c80376a48f58f86d75cee36c9405deb5947e7a94afb3a772ecfe7f3fd38dfae1eb9f514be26655ff2bc6f26fc36f15cdb95c65153617cb561e843ed48bbaa153f2eb3eef4b92fee4ed8a08778f423c4f6ab895d89f83d2df67303eb4ee601f2e5eb567f1be85679df73ca4749ae30f8eead426d966c453531b6f9257cd3bcbf270ed994f01f56ac5e3bd571f6d47b21eb39b71279b972852b69bb973586db6900fed7f5cd08100345315295504fe237d65b5846b53363513b82cb0931e8496d517e312e2e524b94d7578f8cf250b2afb46c3cb40fdff45bccb5e6e50dfa8857beac5176a976986f9013395daebd16af4dc2739d506f83ba153e7b7a9a80a66062adceb21fa737a4fc89e03745dd086fb1c53aaee8255e6c67d887d4cee11b85e16bf5b7798efe16f2e3fefa6ad5be4d66047acd4ea99561cd8b78eba8af37edce37be86575ef2be7eb5c6f6043390733f869fb50c6b4f89ae9bbd1cb77a6645de5b8cd3ad07da48d5816282ec40796fbfe9e36ff91a82f3f64dbf5e7d943ccac07b40b5a8f21c085ec97c9a7ba4734ad88eb8df7ab6d5b367dbb3847257633a7bb1469c5dba89e8e9c9a13ed559d07a275df8f39bf18b9fd573c3fbaeb017393bd8618baf52e1597eec796d2adc1f36ed49c81fcdb1af1bf37b713a5c727f57f49755545708cd10f2a8e5b056d6da4c1d7fe801731de2d04a02d444a27a59457dbe52176a0ab92bd4075c6c92f6587cddf73bf8708c6b13ac916feff059915dac6d780e36cd3d9c8b6f896b267f69dfe2ed3f2f018f46bc4637cc4d279a6e49d990065697b838a3de8dea57e303e8ad3bb758eb073829bc026abdc8bbef61a8bb0bdb41bd06c09dbb48f47dc6b6bd50bb86cd804badee54c49d579ba837580e2bfc3ef783142ce4d8afdfb55e5489fb4d454dca401ea7de2ed4341371fdf76f32de10f547865cc0aacf6e17bb6077e844e413f0ef1a3fc705e6813925d6792e88635af27c35cf67bf2c9d0d9db102c755efe20fc08840de31b60e3bcc15fadbde54c76ef33e51f13c5635d27c37ddbfe4fd286dff1262911362d9dbd8721ffbdee3d90dd6a5bb1c32a1091601ee32c7b3b3009cbb797da3deb9d537c6a16cec32b59e0afedb68b95dc1b962e8f9b87585b5953d6286163963ad5a8da8dd6fbbec694e8fb07289216bc3dd5ba8d5be7b2fc45f2034e6ce0f5c712d2cf6dc3a0c5a7c3e7fa48eeecc02bf3ad4f089f12be113a79939054c631f31473efa10512bb65475096e8401ef2e30c78bb5a2fcbd0949d742d44b9981bd56de17fab2720cd3efd23070de351ca45683d2aeabe5f0559d24dbc77ee6c7efffd7cf01b91ffccdb8dc22ee303ddd7f23cea26e037586677d67ccdf9ab867aea843900ca54fe98f2b61efa9ce5f206ede628453e17eb9f09530b76a078da6416375b7551ca2aff2f5463ca8bfbeb03f90c641dfef10938ad8bb7a667b929eb415583bf9b9df84cde310f31e868f75a0bc46dbe52d776883d096a787c2e8008720d6b37b9ff7bf45fcfc16733b317c936aa8d1e920759ba47e4506f58ef99af2ec6799fb742877b81ca7d86b6b2f4867c8bf422fd43dce3e82ddf358837515954b4edcef7e360abe18e34a35a975eaaa9f8bfe036f2c63e5de559e9fc2d710b5b85517fdaac23a39546fdb607fb4c4774deefe2ec44aa1d032588bbcffab5dd2ba294ee4d7b9820f7a9e7896ac5353affc783232075cc3725da20f40dc986c1c86c0ff7f5e3a58ff2ee959d8eefe39cff75aa509f531abb7421c38714847a717d97b95a21fd0cca06fa374b1f610520f9218fbd658c71ee46a15ae97fcfdbea744bc119d1c611fd97961e26fea7d5b8b753a5a01f740622eb0564098c4f4ba747e214ecb4e00f35ec635ceed654a1c96f4ae67df205d4fd4ae6cf8fb1ba42bf187e20dbbbf254c830b7ca9d9a94bf115f715b97d3b13df5543bc40970cd667b93531ef7b245f36af3b98732bac15ee05b3dc50ed4cdaa01d6be57413a3dcb4ebd433a3bd2e967985be8ce993cff95bc64796493d5cd423d024b750d6fca877a2c43cb3cde301c577d85ca957b971d14fbb50cf4d5cec3147e8cb18d1a828bf9832c285b9b8162ac27b2edc77d0e55a7d521c62d5781f83e25ade5b297297942bcc6aea11a5efe56c26d6666294b8cfa8ce13de6d4acd6dc006354966363e4b35c69e995323f112d719f8b1fb39f10cfdbedb29c4f27ece37804b88d31b71f15826fadf371f39496fbd23e6cb151c7f77e9608da147f9b63962772ce2806a323883d818eb65e9eeee07083ff14a39d91f7ecbd7e27c7418fcf05cf77d1106d1331f59f624be513d47b1eb9253f7bef6e03c13bdf36f18dbe48e89bcd755ec0d2416498f4ffc0df4da66dd4f99e7a8811bf864104e294f8f21f09a970ee2f93ba4f5bbccaeaed0a933a1f7b518927fb7763bc4498c1844ab876bf702b16d01d81fae69a3af23790e2c8705f297dca02eea4de41849bf53d86bce35cf52d0e9c97a07383bf26a7b75292f28e34e7a9f45863ea7dbcc13d281a7de81455c63dcda258e51eb849c08582b75b4f8c1f63e651e9fae7f2e37326f49fd177f8f2fbe4a8cfff3a0c5ebf2537c51939674899c00c277147847715fec751c09ac158f2fb80d15b6ea70211cd9da73fee21b424da4c07b92a60fd4fc60ec7f614f1e6101a80f696b8e287fadc41e6c1c8e9ec51ed53025dcefd201df380eaf71843cdd7ccd981ca32e6a72c7677d5861bcba522f73e3392a3605f30de2dd852fe54bae32c49c35a4e348fbf480eba14b75ce5d817d29176e3745ee67f4cc4f84bca0d0a91aa7602bf471913e26626cc21f313671b63130bf5c0dfb88d5eaa2cf1be532eec63ae43caba6509321aeb4f9b66ac55509f18d62bce2c715e45d04570ec4d8becc09bee2debc055abea06a8843d5d07310c4c7423cbce955d61d0e2f89c6bbb8f9a23aac9693e0ebe10bb552c25b0f6ab4ec527c9ca86f86bfb7c80b71ff5c892372aa8d027e22d91eb02f4cc4ed3c3f9b58d2267baf32b76668b9fcc5f68a3ebd39df189aa602cb5de4fd3e633c80efb470c498cf371ef5e7970ef6fc6da84e5626decbdc396a583fcadb217f0be785e46376a1f13402c01a3ee728f7393fb058db0a4fb2d83f9c8b54ab9d93e6f42c4f03dcdf4a4f8e88d75d87f8d5514b3879f699493c6037f057c9aec4a045c0f16c0ee9015d4a5a6f27d05f43de8afa1213772eaf9f983eedcb679c126ed737749e9c20d2fabd8cb98378a40df6578e755ee4d30b73ded55c6c8b3fbbbe011ee0106c371dd8533eff8e75c821ff6fc4b72798b7865d65ff99da53d3259cd322f7460f363cafd75abfb3a1e19640bff8b5a13c9f3843fe084c98e7c93818c62ef6ce31d8219d236083fc0b94539b66d721f627572ee6b4646fb3785e8ec36be8fa7640754391afe3311671ab470a47ba6f136fb7b409f20c6438f6dc1eec08871d564d8d3875738af59eccbc499e2ce5771fdc8ef0dfbd711c9dca0b0c3515ebca547f2f14b527d46af72bf0273281b50b2be2767f7a2e88deee64ffa4eff57491750bb5afc77b49f4beaaabb277d5751a0b3bd9edab7d396976f894b5ec8af0087e4d38b33f323f0dd815ab4318aec5a8f624a64fe010e9fef6ac93404ec3374b894b12bd2c2f983b6eedb563acf12b97bcbe5b200ff1b89a62cf9eaac7311f1fb09ff885f62a9eabe25ec0ed80da11c706f97a23d28e3dfc0fcc317b29409f8ff7753ff053f21e74e5df9093c05e45790e9e711c53f1fb48b33792cf9afb780bbe5f6ad13fcb7d86fecf3e0362bb897f3c913c074f31cff545ea63f5bf92a86dffaa075edec54ee1d7d0fc27d94fbfe0fd1602db1a6b75c9e469af301b1dc8b7244db2466a7d4a7db4c357abd750e6f0b34e47d65d41ff2e87583e3b0ce62353890f135e7782183795315075d16bafb5e40ae763af6ab5aabd65ecd8aa735c7ee28a57fdbae5f8f04af811e00a801ea4d93c239df11fe6a5772c5dbd2e4c391089733832ac99d885afd78c755ee4ff7e0ef4f551524f63da919aa8e627faa38b2d61f5f83c081dcbf79bd4e8e0f90c3b8afe77c799b8eea9774ed6dd65dce7180b59f317b14d8e75b74a6ae1e61b4be6adaa10f2804d45f804cf4ea227bee89a519e650a1a932969d3a65fd3f437d7fa996f0187635dbac4dfdd54c4452ed66660134e06757253316ee988fb28a2e664533dbfb3005c02d84be06e6567c4215643ef472d8565e2990c7b1aedfe030752c9792b609ce03c2e68ac7d3322ce627c1ec0981b84afc8290fc96dce896bbdf231fa907c7f4ff9f2854fbe6643e4c52a4dc2b5453a16f2cd3e3c72f50b5cc370b941bd788738c0961fbd3687908eabc7fc0cd72ae536e4b0243f29b8b5f3bd11f180aa788ae71cfe6dce7aa191abe1da54db4e3d7d92e78ec7f7caf31cbe9ff0b9c8bed984cea8f1230f454b371b3966d7d523464b680fa7c479a8f4f84bede1e4ba48b057f2b49d0cfb832071eef61862f6d76e41799f6e4c361bfb1f1b36d17568ca6691bca3669fa73e6bda3e7f760cd7ea2772d02d36af122b1affa6f55a0d539c7f813fc13e50ce2d54f583fc3090f8bbca62d4efcf797ab55cf57470123e4b867a5ade9199f0fdac7724ff6d24b9cdc5197122eeb789cd02ed3c56ee3397cf612c102b293ed7b867712e90b3e3ff647c89cf5cd8fd6f2527fcbd5439a495986c8e7861b4b1c4f1f8a0533c2c47a8f9527d93ced5f0af9a2f6dee64e2c72c6397fa99955e026d8e1616d4c1ecfe29f8d03f23bb941ccf74160b4c2dcffd97926f5f6a38e49ccf54e48dad0a72b81b13355aa2ac260ecd12fd4cc3d1cf588ef15362a7c4c1deb2986ba06ca1cec3395d95efc58109f934afb21037513594276873a7dd4edd8434c249b344c1a5772e0fd872e0f8222e5f3bec3ee2cf7fd6c2786b506b12e7e4fa9db46a3ce5b647ba7288bb85f8fa4de3ebcccc818a9155720ca4ad304f44beab88eb7dd8ea85527565c0f76af381de94feee2735821fb4b150ab32eb0efc9c34fb1a26395ab9ad9c9bc2de67f94ac68222cfa570081e6de0c7ad85cf3253d6e2867a8ee76b956788af0d9beed724841b8fa88e869c39cfe71b3924d3ec308739ef16846908ade8e9f55afea57df091336b8158addc3b869403c79a0df5ee9e9618af6457e2e82a9a14398ef62c45dd40ef8439039fd79dc47c559b0dfa921672bc72ed4f81bbe03a85c00df40673d78920d62decc251b59d236b6585c0553597bd58c22fa9b19e407844ac2f60dcbfab52ec2f2a1aaa39e03bdb2ef51994d2ce58cc05ac7c531a18834fc77dd4ddec962e694c1a92c34de4b12afa2cfd0cf1b7d46796bec4031c4f17eb8a30d63cee117dd41c97c6d760a7040ef9a8e9378861f07316536fb9e9abdc3f93e58e3e3b952ef53d5d305f50f17e6be5be79419ff9eb3052b477eefb4de875a6335c4b8d62677e5e73badecfd7c2d9ff676b16ee5b347df4192e6fb0eee789d0582a9cb6ae6631e458843c1d28fe5393085c9b5b6e03e45a451d2143f67bfdd4cffca08f940609c741ff0992f00331320bc066129f471c74d19e8af9107921defb28f8bf68ffe17854c4e7c7866dbb99e4b30bea3ffb7648f5ddca0940e3a9ae1ffc3bab8be7f409f7a03f3287edfc731a71ddf2d6b9901e17a4ad5d9fd1af547a5049e30935afd2fc51e36a3aac03890fa19e20a94d4c9c53a76f5c0f0bca87f64f5a2f9cbaefa9bf21e9240325e64b4e1671cd889e0545f7f6d4919ff9caef049e923ecb36267ea6e87e713d2db197f6d4632434bc5adc3142374c70f3ae53e29c4ae16fd5e88ab89686eb1af3b8f29063cd638a9ade76bf79d2e32c359e63ef8cdc564b392fb68f7d3e0d230d2f36440daffa6521e7817481a576309dd9bbfbf744bf5387de77717f5fb5f7b349bf9316e7bec0e6f25e3ac129d41a4351430940d7bda2dfb36d57bc63c3ea724818adce7d6f891e079f3472fd3543deb8ee827cf93de181594a38a79430b184a1a82e144711177635023e09ab1467dfb0daa0bd78edd05e1eff10abb7723618f3289a85a059570dd5380272b56f0a7f3bfacd93074c68f6eb4b72649f90c3f2bc9075572ddec0da90a241a67e57609ae8b3e4a94e5019576f98bb16fe39a39cd134a67e22ab4ca02fc3f6e6b87ea827d1b868d7ac72ec55a9ac85f14bcb172cb08f5cc6fb2a2ef36b4e3c38e977ac71eca7df0a078792bb024ca6557dc1daa13c7245b89dba4974cd4af3898e3accf7cc821aca1f7f54839f523773eca1b30e16699d931d5b9df0de73a91df775df5fd02bde91fd841a6fdca4a4b1c2f1f7e8fa4bee032863d52494b7927dfb093eef644ae7c2e91b9fa7dc297d437496f03ea6d6e7fff279edf6f386fff5f3caf1dddc687c95ebcdad1ef831e6a7ecef3ca8fd3efda8a1efa3bed595615c6c7bdf8435cc282ffbe3ba5db6e7a2a9fe07deadfe9a638d53b9de3fbd1bd4cb01bf791a0409db730d049d8346c5c2507fd56243faeea8e707798fb2bbd8b4358c45fe57b11bc297976371567ea3e58c1f7e436ba3da2bfbfeaff7516cc5f7bffe8dbccfa5fd1b6967138d87977002517baeabdbbfb8ef5fb419d4bac6ea5be126e2fead16e772ad845e3fc80e0ee577695d55b705f92e45a1e572051612f00ac7cb3cc17dcc8c70a0fbda92df95ce9b3dc6d4d351f761cd254de5d39ae3f63da5dc8d6fffe35938066e9f3f1c4fb523ad4d1eb3a8b65af191cfc4b7e540cfb7e24b903f95fa0a3f3cd430a50ecf917478880745fa9ca4191417433edeb13ba4f97f380baa17c91b83ba517ccc3cb13e43dcc707b98fd367fbf8c6b00740d11a8198de2ca9e65bdc9ec75715e865df9f970d943cf25fc612d6b8b1f937e3385c8c0093d9f4e51ce73fd726a68ec095fbc641aec3dc55c64ff12b94b8b1b44e03e47b9fcb5ed72fe02da15caafc2cc4be20f4db26ca5aa57155ce6ad75fcbfc16f747ad9e03fef3374b49afc8c4defb8515489d11e16b7423d046594ade8fee7d9ef8f7f274401c2ab6e7634dc7a7797cff791e93ea487c564dff84fd81f32dc5052f9407688ae8e1b9730fb1c2fc7e22b7f19b7ac9fca187f9568143103ec857403c33277c47c337fdf67b9b3ee61bece486fa30e8e7d1f5acaa4bda3163c27698f187da7f73b29083aa8a493bee86bd306a6e6919bb2d6dd2fd55e6245c559b54cc2ff17a9dbea6e92bf4b2cf34dcc67c5823568163c6f13d7de4958d1ebec775b8054edc27ec45197b187bdd94f7b715ddc67d25c7ac8379e96a8d588913e70e135c2c7bba6ed5ac22d03fec486e319f7e0f636ed0674dd0c1f5dae218d94f291ff77edf67bb80633ef8330d99857afac455f297b589da106afd59f80d31e40022c103206a69291b6b7d718683be8582bda1be2d5e0b672ec60a2ed6c5c6e56e15696765dc67ad735acb4dcf9123cf0ea9bf5a68a4708eab337335ce23be4e19f294d9ab09e0c53a0bd287f27f189387bc945ed332a8578c784e962e728ebe7709bf63d501d5f8d3dfd49f459ac1c8e781fd5ad267e4f6ab4cbc17e5bc53b4e0aa830ff9653ff13a140b536da8b49381e01f983ade9e617f644b17ac32095f00d85acff9a9c70bebad29e604cca4e5ff297d4d763fc5f7bec7888f9ca08949f86dcae3f936e69b98dd8f34cefab8f65beb42a90754dd399e8576ff2a7b2b6acab342cf6fb7cd1129ebfce939195c2ef7eff90ec43b51ef0bcfb452f64193deef72536a5caecc3e8cd5da6e1ca7bbe027fc845ef7bd12ffcd0f75dfa5e4603a609dd65778dbc55afedda175b53be8fdce56bdc19c2069445b9d1b71e66ca97f4cab4f035f426b6da6971439ac710dc4af57912b6137c17714dac47b343a511e28869e9029e984af7cecfd563030749e577985fd5add39d64994cf99e49e39cb7889ebe4717fe1cd5a05b88ec41a381c9177cd47ddec3c15f5e1bc3fe0daaa06e9a1e87e3aaf339dfa41e3d673877439676053aed86753dc7ac86df3fd6652ee09354a2de29db4decf9433884977e59bf4f3c47ba8fea25d11cf7582be5a2d706d87b606bfc095f37c60b10f289fa2e9de0afede6779c92478dcb3b1a7f720db4a2dc9ba3ad8e35f19bfb02e21781247c4e56cfbadbc7b99685c63b760b36fd984b241fcb6bf41acd53be5039731438e3dbd0f9b38f5943c7e1cdecf6e615feeeb0aecd3fd0c87b30b78475661abe753f173957842d1fd036eb217c4e32dd67d5fc77b545df2119b523d73345c8bb44bf7f7e2f18559e0fe6b3c5dcbc45e65b0f62ef2da9bfff08c075e86471c37c63121f1506dafe744fb3bf8669b962f99d513e0c6785b6c7b1ab6228abd6fcc5f2c1ff04f88b522ad78b08f27c96d97fe86586563e01a28d51c4cf2a0058975cf26b9b5eacf2a9642d7e354e2d9fe0dcff772dbe6c14b6e7e0a39958cd7d12106499117f5b2c0738974a1780fb3c8090ffb98475530f9c773a2d5f1370d7107c58119224636a65e9faf372380fd463c358c748311d320f31cda3aa3efe5a98fbc91e98782674a1dc44d00a7d2bb8d676f41bf859e89b4bc5429720f4a9d9be0c167f21bac2f221e7161204717e72e423f56f6e8ea7f075bfe4a6b9d91769ee4ef64a36e381955438e396e9cf303a69ae74e44cc89bd3a651312a72cf6e24d4cf25b696e1643b9e6848fed3cf5afd83075744eff84f424b4cf04177deb33e06bfccbefe6c9fd59eba1b21eac65ca630eb7aa03e404fec2337cb166ffb68ea1fa2732372ab143e6bc76143e7171de2dd2b6af2a7005a4e79575e84c2b6c8cafc8f660ffd89e722ffa756cc2bce62babedcb69e345fc77892163f39585f51c5f7232f15e75c01bf8b0e76ef237335a6385d401923940be2fa49e05e715e03d49e15fc72c1cba108bd497654b4bd07744bdbbdaac04be28f69c40f8e05648b5efbdb6bff5f5c6cf04937af072e71c0e2457e084b87f4a53e2667b2206176bcd201fbac1755875e87a59293996c7aed0a6dcbe2bf6f539d63278c04226c61263f82625be5b7f746590ffb7fdcdfe19aee0b0309d87f3ae7d96887ae4bb01fa8da2d7498cf1d0373cab4a66fc3b61b3b1f1fc95bae21af6fdc99aad0754a7dbae947757b570bcd32397219d1de823891c10c681714039b8e5b8c07384731c02bef08439a2b97341edd16b82e7a5982bd2bca8d674c6ee68cd2a7c3cf3e4c2cf5ce2f9e6b92d714ff035c70b07fb576a1bf74fa9d991eaa9b624bce79939704626efd817c07d6bc46191aff5a88980dacfe7b9abf9376a3ede0a7f8ab1907b90f4c6cbabe67f6a797fe123f98967a4b64b3d01e0774b7e723dafacda4845df703579a87bb7b9584d9d0f90ce635eef47ee3fb9aeaa5ce20078efbf21f82cb1f6eb8f4e91aa1598446a5fd6c95072a5a8eb770e446f34683a76783e4de9314d275697b89adbdcdde87b941beadbed608dda1fb336f7beaa0532c378adac7fd6d8e77d19b80fb6143f7e45c0c9f1d620f77a2963ff67d7890b5a2f4cd62d9ef86f3d07e2cc275a8be5b9a2dc31ce6dbabb9f518257b56727ba0e9841f80bf2c3a86edff537b09fec3df6bbb88be8c4b0de43716cfcda416e599fbfaf78e62962d4ec778523fc99eea3d2db61d1739f11275268fd96c78672484a7c3d97719d3d4f05a7e722f15e48afd5f6ac68f02cdee03dd10dc3be79d42900cdb8146b96b17b16751c07b94bbe839d277918ec03f61d5e97cf6b3b5e90f8e742cd19c44ccb1d45f6ca444eb002788540c72fc3de6e3feb418cfd446b13f90bf36280ba0e6437642f905293e31cb205c5e6c0df94ac49af46726ea789d65b50edfa03ad7e625536613f86c5eb4f3599d056732692cffbfed91be4c77da81f2f9cd7ebc250f312725d707ed0bc1e543bc21575671f68a705ce1171ecf3cc8c35fe2eeb70a2be11ab22be71e04d453d4f9a03e2a4a235e016caf832f24b64be42dd93cf7a049fd434116379ed46541ff07e1e47e458d89e46ffb0eec6411234f1d83725afb8986b6e7fb7ddb336d7777fc6aefdaae9876a8f24e40e33696bb533c3e5f993ec1fec70741267705ca9fd21341654fb45eeba4dab8f40d1dc407d5c5ff254fffc99d498407d39a939207528c857f433c91fcc5023d50ebf689c86c8eb97de3288734beb14513f44ed3f9cbd0a7ec39e4bee7d11cb716d1b61ab1f7901289f6ccc37ffb087847ff4156cdc61b94dc4ded1f11680c768e1b6e2fe9ad7b620864e1ad47b4ebb338a7fb92f09daa02ba7a2de52986b85d75aa913920d47ede052e200af77df42d1ad0c19c424a1bdb79267bdd0c4450cb95c6b63e2f7a6d929065b8abda6e0d795b6e46862587fc15e48cacf15e6863f0bf023c77317d6455621ffdc1e3555efdf556d6f955da3873c0af8cb4a2cb6273f3d3a6d26639e93eacabe26ef30219ea9f440bd77bbfec3da281a89c5e3be32f76b6ae251e77980fb3ca688235a115e5fa93b77cbb4adf5117c295ced2fd43f90a7528f66e7febc56e382d6bba2cb729d3a3a0f69b95ebd2ad750e7cad26251518f553467ea23d6a2d1065549cb0fb7a9c7d38a28bf429c2ef25a547f3a1d25a7006a1f06adfc9cc887d3f5642eca404e2705f37c3f278773f7fdbec69c79fa4eb8c5ff155b6675b78a8e089e136609d8d82a79bd624c926e2bc9914b316cd783f3fdbaa0beccf488f72fc7d8bbc47d5ad0fac5f9a8547d3a386b45bf636caf20beaf6f0be4f8b9fd607fb046733b3d60e9c3562e3449686fc5811eabf4d5781a34043e82561ed1bfdb2dce7d550dfc11e1cab09f52ad595faa1af553d33646af15eba7fd64741dbd595dd098ad6e847951f8734ad4d4b4dfbf0827beb9400da5662d7f01d61a72439bc8b784b1d2379df73c3fc8ef41ba0c4cc9f98b1a9f82e951e30ee92bb4affff27f7c7d9e4f463b7abcb4ae7ff49dffc1ebc7a1c2fb2c702273c76f5fdf26ee51650ea65a3f029f7bc27809bff9a7e7e0e7c2f7b3b85eac9b62add68231ce97b19616a3a21f3df9d12f6a48cb8d72db22de76b93e4a394c314f6c3df882195c37f7868fd8006ec7386ea3da1ef0bc5a3d8ed9eb19c70cf2ae6b695bcb56bd5bf49d3cc9353cda11e9db93ddf2377e9762b7a67a69c76e98d32f4997411d93d0913908cc054a1e3ecc71941f3d26dff5eed7f8d2c752fdd61cea827938a8b21a35fff64b3cd79ecc5999f5442f5646f8b273a2c700e7485f4756123dcd0f0d7d53e45ba74975c19a3ad575c96f75be82b5bb97fd81a24efc50d3c87e3510ab77839df47f96e946e3b82ac9a729cf940322be9513f5132ec68ffe09e60fee73cff334b6ccd7d3738be7e06b6e9a1f04574296bea08fc5b80e87d038927d398c6c949f1f9ec6468a368109dc3eb7304e0f601b3e83add4548d349fa8e2b9d245226a5449ee26e8332096c9cf8893a8958f11f8b7c2400c157ba13ac698b08e169d914d38a1d8eafebcd9c588d4bc6cee0ed59c48b561520308f1087975e3f82e83ef15b037ab768eb9dfb6ab7e0dbc6e8d8c4f21eff1a8379440def676da27b74b07313aa4bf296313581786417c6f3b3654708a63e821f7f81cac43d28a2f9a3a201c6bad73e1cbba5d8db9c03f8a5ff9f5a437a9cd817c9c095f09f4edc3af594b8f06317cd4af45bef0ea8c7a32cb11710f7dd399d5b6abc873c0c761f305bdb813d107a9cd857c6ef47b08d7d0c60c09de3b997fecdd5a36e40d7d4036261c7647fa1effe5599239d742e67d456e1afb28c86fee35adbed23de1bf150e9e32dd434edea09a64b94e23cdee26d589ce023a13f9fb11c624b439bea2f5fbc4c21a03f9499a7f2c7a3bdf88dfb7ea28e708f27ebcfe656ea9fe50d59b87d85be61c8d67f386fd2547e4837a3a476d5e4bc5af9ce7053edbadfa31b723318c9a2f4dfbaab4650f29aeedd72bfaf70b2300ddca9e4998f087b305354a7f35a5d9aa2f28f15369995407fa177b795c5ad7d17fb4affe3ef65add82fdd77e07bbc99c7170f9bfea7710369d1d43aa8bf7dbe75ebffd0eb378a3f4f63eb197aadf6987eb676b8fed90bbf4c9dc500c2bd747b9ed45d42b8058a97f315f9562fb0007ffb3cdb23737d2ffe518c69fec976b495bb4a23d5cc81ed56fb26f19f9036632d0f0a3e709e1fb5fa5a6ffe3b31c607f7782a77592d22e4de241319248d44916bb9034a32ad7817e581ff917d0fe493c42d4c603283a5c51ef26f6a07381f573091bbafeb9943d5f36e26a541da6fb352ab091e5662635dc892fde3492dbb5e1dca486f72dcf7ff5efafdd29e9f0ada8aecbc73b77117721df27ae0fa8b54ab9f4dc9d2377fe1cf93c95da21f21213d7f8bff007d57a1bafe7bb32cf391358be6c2931b337eac115768dcf6fb0aeae9497da1dc8c6542d5edf92f2932d8c1fc5a805e567f89c3f6a5f5efc9a72221c4f22f5039386e63b2eae525748c530bcc37e6346b196fa8465ec85ba1e6ea7d3ceaf22361ef739f76de37aa0c5760dd67c5293d7f6445fc7c3b5c4b354a49dc5c62ee4a84d8b49be926ef2a1e6f2d26fe211c35c992d31c69037fd94b89814f17a0d6981295a62cb3c44dd56eabfb9fbe7f718a718f4c8fff4772971244edddffc9dcac4eb94c4adffab83da88a5c4cbed584a9c67844151d6c60b690a5807c43337f7b915f65c6a80824d3ccfdb79c99c301207bfa511a5d80089598f535aa3024fcecfeb339e5f4a6d8573c39676ad7043be3ea9fdffeab4714b73ab3b82cfece586726682af95741a94751a215683b5f705620904a644e9f1166740a5e830c9fa7c5beff7a92dcc533b1676f91e6ff03db418526f8345cf6d5da9b756be57efb8204e7a555b51f419d03d64eef87e0d0553dfb6cba706edf6e3b92df3d3e423db29f14a2ae7f67f1b373ce6abb1b69fb3c11cf6fc7c23cf36c58746dffe10ecbc33e092e26576f84b8d8b7d176319e78b35139e8b118e95d14dc887a985ff6ef7b7859cb77b6c63438c79f14dff893f2ff2518551625fc08ffe99ea67fedd07927176617837b24f79d985fd305b0e4eaced6be07eca22e201341167c136af4d99926633d91aa9fb2a9eb1723cc2de550de67fab0ecfb789331263e80ef8186b3a9395f77be6bf955c4343f4f2f15cfa33ff8db01e47b213aa0f4578de7fb897c2a9f61fc79973f7d117af9c007023c527da01cc595637893f99e038657a5ff97c73f95faa1b5796d4a56cd7a2527b62fc52eb9712cf6c109e793cb7aeb18a0712cfb9d7bef3c66bec3fd792fd6185e7d037e9cbcb780962eaf232415e2fbb20fd13da1f19e195892750e83528e7bdfd4af132ff9df28ccf6a7ecfd64645bce5d585fd9b18d6e01c8fcf62ba13b7cda21fe5f61ccba3e4e9b3f7ebb39e26e19bf4a9cf5dd4ab7afd59d4ab97f90ac7f5c652e8b5c84e575a0302afda2c4833e955f621cb9e871be6242446dbd7700d849359a7d807db99488d01c0b90adddb297160514f6dc35cd4ed52fa331e7a0c995d68f59663e3d71a2fea04fc0b3c8f6ef7fd0e75fcf8be9ea36dd7d7b0e34d823918d6d2bdbca25d2d8c57638e3d7cd6e1aae523d3d957e90acc48112757ac07ca1e14d212a35c0f8cb98d3d8468b7a9ff2483b832ab066c74c2f9fb2c53adf73e7bb381532c670316538defdb77a8afb1b89f61b3e6bd7defae2ff9f8d4fa95f6ee306e2a06fc93eac8b147fc650bbe7745dc47bd8ed68aeaebf39cfacbe53b883d26d6b9ac8b7d2da176783f07f5ba99e83b2e5deaa514188e86b0179e86b9331cd1876b148d9fbe6abff16337fa4b5cf547e6642b95c33f046c83c8b9ef5c8a11963bc2075acf30616a4feb12ea7209e8c22c497b467088c1392ee220e35d8b9bfec62da9f4077e5598b3cfaef683bf6b5742673667827b2966ee625c0ddab9f572f32af5aac57ebfcd8d19f2077e071a7eb86caa0dc58dbcefb54a3caa5deb3180c428ab5cea5adf0b6945b4f26509e123d59af60ef515e85c92f996eb3dae17f1c95ef210c61223abf579cabac657896ba6496f89a6bd5caf943a563fcefbd1939e5de4fcc35a7cb320cc95fb4d39df6d57c9196b985d4fb165bb458ddacc07c29c3ed492e9370cb8417bfd202d9ef7cea1e66f969a7e4defd9c1f35d594b5d6660aefb7a8d357d7ce38bf695556df9b334f57c6225da5e2b87def3bd96fcbb9e97e2d6430d505ddf2052355d7fd96ca3eb47485d88e4a2eb939c8cf8c9be94355d11a72f36bec06b622fe6b6da9126cfa027c6204d770be426b8f5b097d696f875e88951340fcab1c7eeeb65ee0477ff14742415bb65931e492bf72079522bc9ebddd77d1bf99dd2dc6b5a1395bbd7f321d9d1c65a25fad4c4232e747b780e746eeec91e6b1a34f77596f4ae5391fbdc856336a8a02f24b20e0ed63a0a1dcb2ff5fd7ee47e4ccfc4299668ba4baea60b631d484706ea1e1f7cfc63d4f4db4b7d88fc7707382fd28575429ddab3e88776beb00f749992cfcded6d70d3f4c9bb7387f6a14dbda67905fe0469aee17f4d7a7791e3db2f918341d807b668fa91964330fc63c5794eaa01eda3fbde827524e6e6fd92a0deae18d383effe96bd60f718c42e6a5def948dc096a0df8a5cbbfbfb6f05cfdfea05f350d3fc007ddbae766df4f1945e3117b834700c26f0ef21f5ad7ea04ef7c5b8ff86f4450cffc81c4f99afd350f32bd5b1c0cfc795e877a26b8ab36681f9227bb58b893b45d4eb0be3d7b1e4b86a7730cd31d75735457435e19ceac60311a3dfcf4de113fa06f82e8481e639b60d9d6188f11b2fb795a87b131f33fa5009b78fa2cfe8b40f3ef01ea85b570d395e327d3d4711da811e6a47c5ccacd69361380812c750de17708c720c21df8a9f031fb9fc5cf606031e5bacef2b687271fdf5b7fb77b8beb76a6f6a53a9b70493c17d3e9d2fd40a5de694371c42afb4436b0be791e72f6bc01c94464a79edbbcfc6dff552221e2da69ece5b3ad07a8c3e1968394436e847a4eef53eb68b24e47a8fd391ec817c831c4b12bf77c248d8b037ab425ce18c35c0499d3a5f0c39bbd046ee0e8e861f68f563b7f0f0ea79453aaef76b8a7e74c8a1c9de50888b315fb1473ff89228f3aa6201978a1e8da681405843bc86f72d637a3ecf5da9c7dad6a907ad9d9819c113ad1dd0e832f07a6c8b9abbd7395fdf711ff8bbd281ecfdbcdb8a82b80f28aeb63df4cdb09efed6de1b0bc3b388f72c0ecec81100b6edc2d27fe20a56ce0b8dff06f216bbdfa86989fc0b929300afd91457a9a5a58c037215edbc918e67ebd9411b574935a0fe1fad2fc30e45cd3ebb0a9f2b5e0dd9ce45dd33a951943b066a1efb79886bf442b86758a38b61fab7d80538f47ba41befb7fabcaaa77c79b02e3886c65370ea0293e9b7b152902fa15e23abbb29d7ee10f6e6a9425d1e8cb7ac6e1bcbfb7fff9993fa863588249eddd71d9c07d86ffe6a26fa1efff2098372695a7d90cff19206c58d7f96b2b7e0bc4cfd63698833a93002559f2b7f93f500d567fda67b6bbea5d445bf5f53f6830bed35ea6d56780f84ad16b639111ce42ee78419f4623a5fb75de4fa6f18dad3e87856eaa2a8a56c3eea1f70bfef40cf6bbf3e7097a35f9e7efc37dc56bd7b9cb1aa46f05c59b54b07d733efff3650e3f9ddfc4f78a5a66385efd174b4b5371fded7f54f9c4c2a570fe7990c69bda48cb88a4ab77d0e9b9cbbec714dabfa89724dffc81ba0ae6b9eafe6feb109b5bbb0ca5d076bc36974b1820ddb27d4675f7f32b23d1eda1ba1e59978a7c546cbabb169aaffbb1a822f95ba87c2a4334f8cd9b64ae0b3affb67d06b2df83a47f4d9a9fd3bd490e69872e55e7eb61a6931775cb4b4b28c2ed6b893ac775f0f2abf056945273a57ea71aacd27bbc4ed5ea26d17c6cfed236e6dfe3c2f6649dec4f72e9e9d6f166a99d45681f91787e257e0b17bed1266db215e5fec57b920de3bc96a7a2f763b11af8be49b5e0d1fc6bcd97cd13b0bae806bb0ebef21e60e175995403ef0fc66528d1e356d4c9f380c6657aa5d121f4d976a898b9c6a969433aaf03d7346672afae1cab39e690d58efc46f43f75893461be5b1901350ea933996fe19faafc197fc3bcea788e993043103a70ffefe7648389f25690d55a8c13bd6f57fa877bd1b3a6e7f99846f5aee2f79e4799934e10078ce5ec13e7e31acefabf92c61d34f957bf76d3d1e532cd72c047bf8c5a4be9bd82fd86fb556b94db5fcf7719eacfa01e78313b9c3d2986939c5725c0dd0dec23efd236ddbe65239bfe859a086e628fa49dcbf8e3ea4ffca73f856c78a5bbaf2c01b88fa6f37d4a27a563759f0dc8de0ca9c631d3f2fa8bf87b453ec748a7cf4982b268d91db89b82c274d8ad8b4fdd2811c66c37bd345ff7e43b5a7dd9bf0e386771b24b865c4f7d906cfbc3de14017527bf4d12e5b9267938d900bcfb4e6ce039f28f177122f1bef7f14dceb2569f0fc3209c33c5e8d5033a5ac7de4e9277e88e2266a97e1988d9794af4f6f219cb76f761a29dc9e62ccb7c4736d969b19684b9457e43c82fdf1b9440ca0f4c7c166c29e959c219823e86be7a4e47cd2f99bb3aa136ae7e0e9581a8f7395ca5ebeef12736fb6dbf22f13d050a82fc4359e7b23d883cdc279d5e2be898598a08aea5c6ce741efa5eb4f46e6fddd4ec16e457cafc49f286cf570b10d6eb4b7b2ab8563cdc6143bd0b89606ea6195c4155d6daf03b546a072a2cded0275048f3ee1a53626f6e9553c26e39f5f288f197b17e22c1a1f06da33703d0d796fb6eeff998c99381fa8278cdb8b6faad581bdf0f3beab7143e6a981f6ce6f3cc49c9c43e0927cb35603e076b8954ea25d6bb9433d65b001367bd5feddcc2e30ef8093a886620ef91e1bce5de44eae4f31d63ec787d13fc51a4adff207d528b8af5a7db77c312bd235b134dfb094e713f6f24ef8f301ef59d260fd223170bd2f63f711971787aefebb147d64aaf7ce1bc94d00fdaf8465f213e235266e9f8ad6e2ea847a484cf272605cf1f566e079c72e21e038ab1a63fe571d8b20df0739f53de49892716cd8c1da10f28568cf4df13b712eca1ee2ecb452f1b67affa2c051642dbe534dbf57f6df5b31ea638d4ccc4b19a5f3fc7c2e6dda3ffc3b622ea94794fcf0b90318c24c9eaf625cdc046b6f33d4c3aec94f10bfdd18adfc7b45e727f81767ec2757f82815ae2bfe7dee9b818e6ecc3289c77e3a5f9621cf2aaef1a170fde21ecc600f5927d41079a11cadd4323248bb45ae43f31e070a1f664338bd85bb077bde9d610dbe30a106d724e4eb0a3b72f7bd5690ebf1ad1471434389e38567459fb4dfaef16a631a730c048fa379dd82e31e91c3add67338589fb253e215d37c1295d3e6f16cd3b907c4d9ded7c7cab181676f17f0be21a5962c7d482586d860be40d50ad6b4af110fc1ea52cd0985882748756c09cedd9bc01298a3b726159c07d4ebfb8be264ae83a5d990f45372c3d7fda04951efffc2eb2ac247be843fea8a25e61c63c84cd7e3a9acee0079d296e00f45d077c3c62b9a7b7e46630d284e3b7acc87dc921be4c8c57e7bbd8e4f363a1531a24118ce10f381ba76e3116352594f4d7d2b8af47b3cd45c53aa335b4a1ffa40e318a43d8698909a7aef646db5429e34b9aec5f3e6e5ae5da7ef5e2b8a3b892bb8cd9b7b88076afdac3e2936df949854e01da3b8ea7e46f0757d2a9063bb9e616de041275be9236ed590550ed822c7bad2bc85a7457fb7a298737f0e29663e3ed4b0b1162cceff4ac10460dfbc29ebe95c4342e4f0a46ef795faacc4780567e0cccd0907d6b603a296c6b152ffc26692fedb72036b3596e733d6af1fb4b092da9c61de93fa3a53738ef9fcbcba20767b62bb0a5e81c70143e67a167304e77698f7cf21e97e637e48e14a8ba5c6d3146b9bb4e638565a9ca19897885bd87cecdfd03e171a8819ac9939d73dd0ec2e683316a87b49582dd452f40d43e55e41cc8d15ec5c990710e322d76b0b43d5aacbf0ebc5f6e39a66d64cb34dd82703e7ee70b99db5f02b92bf8ffa4eedba13dc9ef1b64aee428afb32e30bd6f5763964581b223b1866bd6fc0c5d681d61f237af82bf207f6e4bf2fc7b44e146c504a185d66bcaada4529c4ef01f89fd3b923b40a52ebc0d4f3f5916307cf41d07817f3d50410ebcd3794f3bc627fa04ff1a7eba09e88cc25a5bc9ea4daab38bb3a15714ea49dfb5ebb8fe512f3258453af99724e112723e07f14acbdc8292a1c8e748e2c52889db3fa95af8bb81894d9ea61acfdc4fb64f81eb40e6637b13f9c4bf07172dbe35f39af26f53f503f562a6d6ffede50ecc7fb61845636d74a82f80ad625f7672aaaa120ee68a59c87fc795143906a11852df3a6ad98fc85cef0086bc1afe7f069cd4fe0f28a0fac472839d5986d354c86ade4e2c057a0fc43d66d9efb0a8ff55685a354fa790ae687fac5615dce549b9099a4e7b48c7a1847d9e4dbb5fbbb89bb53e437e2c1331f2a3190f38b6d0f8fe7dafd7ce1782ae89f6c5cd00df66fb2f722ed3ecf2792668495dcd49e309fb887db78d8e9b03f823572f51d699f0877fd703d116731c4cac6ef77bf4de4bee2fe48f729922fdf0890971431968eeebf6af710798e386df78463ee9c789118e6aaf05c1f16c4bb767f0f91c772eecfc644ad8a411de5eff796d7f98fef31f9cbb543e923f69e8e1dd61e680ee46731d89dbdf4bd449fdf42eac8099f02fccb859368b16c35c679493ab47673efd4d69b041e8e4fdd37369fda00b5cf86d9ee48aff99f1a997fe3cfba9b3b9d639580eed2e830455f649a180a3687af5573e974307f2c7ad09b624ae7c5cefbc4fccc74cca6548b805ea6e5d083fc3be0c772ef823514df7d15b99e6d6a60ad721957c8b30c5ce42b1bfb16fc5117dfcb5ecab19618b81f72cea5e41ffb2eb1cf0d70eba4918bfca471ba253f47d42e8bb726047f66632d37d48f23eadf593dfe21febb5f17748ddd5bf071224cdb62c746c80b277496848d9d216fa355ed901b1fb112458b1b6fc131be0fef143fe7995262aaec7845ed6fe4e0f59340afd737d863981a4cea48fc25a7abd6eb2bc45b784ba81325b1770e20673ab7ba64b72bb09f49dcdfa5c0e7331fa34d4bae3ec49849ee5c938feb29743866b3998bbce570eebe5f9770d62579795f2722e722de6b4f35aea7fd1b95aa3b79fffbb3fa2ee63b300fb05b3a33edbc127b4db1f97406a52b3d8f24f9eeb8bfcf6b549847218d5aa9599d1d2fd4e796938fb1a3b195b9c617ca3546bc2ea2f246221ee8aaf168734ed6fb99d6755bef4bb94c36261ef70ef9af71883e5757fa5cfd2ef9cc795fd4e91083604bbe591ff1ef8a0e15f4124c947c28e7552c09af6b7a68f31eb5ac8b2de99b09aeee33d590a43e2fc5696c3b433c1d6891a0be17e931fe535ed5277db4e4595e3540ae7b9a2b1d33e013e71cdb5cb84f0ee7412c358ce97c953c22f2f9ac78a0c5318441883efe3927ebd3f947cf77cd200754e5eea0c513279e33ab35cdacc092ba393ef7c5f8dc98d2af52f6414c3ab8ba6fade75e85bd69e568615d7850d3d9457abdd14eda7da88dec59d474a91ae78c792ecc1986f99e3097c41fc8d7d9e97ed66c95781e63900bee39654fdcf08caf5cd4bce09a43a2876c5c8588c3a01a7f9ede90b30cebf27343afb74d9d23cf8bf906d40ada1c8ce27c67917696fb1799b338600eaab3301187c4060ac6c45ed4d88b2575c61771015a50e937f942d92f4b72a9f06b9efdf415f367a24e66bcaa78c8b072e8dfa2fe8c7849bba67ccf926b4289fce01bf4c5a6b436bc23ce976f5d3156ebc07a0cd9d803be12dfa8a826f16ec23914b26d95204e00705e560be7453e3f9e1b611e7e851f1aa7cd15ea1285e8b308f137c4c782eb26311063982276f5b4ac490b58d1c287f5685d2f49a4f99e9f586b4ca26327c2df88f3cbf237cf7254ca7c3721dad2067d3f81c71371318edb74741f173ebffbb9c0630e7d2be9225f48129deee7afea1358ec8143bebdd6bab22731af22dd67ab2e32bf2c6a9b0ba703fef9e682b192bfab31177e9e1888edf84df35958ab046b7380fdb21e31699a0edd37def70df5d3f2e0f2b0dfe3f01bea33884beb2c1e734d62cf27e8c3ac3e45cf9d5b60bfc33479a897832e421ff37dfb9238d682aea21ddcbab647b50db8f637e5947ebef6f7c200ffd1ea127ee2e1da39d775107647603c5eb0af32c9eb2bfa65182353eef6e7fbdeeef18ca8951dbe7ebe2fd751839c04da859ef5370d2d11ef6c2cead9cacca9c4a3fcf4dbba1f34f55ac1a8722d34c2e4812f58b531a30fefb5b92c920efd6e3eae145c9ec0dee17ee2391dc8e388bd2035735a58c9af7b7c0798252b84de8ef9b818fc786dbb3fc09e10b8f667f097dc4a7bccaa9149fd1ff307ce70d2fff2e47839b7d2d131bd8bed61a05f9fd119b8d89ac895f93ddf608d90b0fb3b86bad670ade5b8767fbad614dfd15e75d19fa698214faf21f5c22447b6f1868b8df79d8e578857fb033e7b8a98b78963f0ef4556809c2e38870a8f8fe4c9209e9b760e74e776238c2514ee5fa101eedf3f7bec67cc572bba97b341adae2b9cd56169ad488f57c162fd998fd14f4aed199d191a2f0de6587cd4de9da34f957b073a579d77d4f3c4f7fbcb3d896ba913412d9dedfa629e1a46b10362fa16430f73528443ae2c3c5312adcf72b13523ad0e66999e5e17230e663ef7e106b88df47d63b4fbc2600f514c24d709dba31eed72648618570bcc09ff3ee400fa6decb68867877dbd1e1daf18ecbf8b820916bd3243ac6b1c891b93728bfaf3373e61c194bab53c63c4b9b9815c6beed37b11f63649bf62f89d3f6ee1ceedaad173b14c6209d0bed90ee590ab5d0136a53ac62d7b2df557f12c31efbe345ffb8b6d45bde158ef4d048f22e6959fe00aebbd4fbc5abf11ff1cceef67b9ecf1427cacb676cac1497212e05a4d01ef6a237f5d6a5568af1abefec147d5d76c354e1d4d9f14ed63bc12f987a6dab2bc424cd36e593bf45b457fea2541ee9adc7d9b8cd301cfe9ac37d708f5814ccabd3511c7cfef698fcc797e4ef0704c1dc857c52c459fa54c0ef7fbbd61fd72b99969b8ef36c724c7dd2af1596904da7a5aae89bb046c9d73233cb0cd62253727b5c992de053912612f71ccdb7c540d58ee2276d22808bfcb7d880b7310937ddaa70f3d768ea56bd6a7ad3c2fae0ff607e6a84931673a325f83c43d45a3ea25d4ea81494318bc38cc3016bffb6d2a8e621a4b8c818649e2352a35275a1d9301c4eee3704a392743f2a921bfde6274250e8485fb1bb08e7ecbcf57ce38eb7a8b3f9e60996266857fb15f62bc85bf2c7b8e3c25772bfaa7435d2fa2a98867c434f0bbfe2e9c82d61bf6d49ab18ea5e8b46366c0e25ab296c1fffe25c7dd33e20ff081c56757cac9db75137e683807b39078641183234eaaf1681c7cc23f26166127310f0afb807045ca3b89bde4be24837fb08316e24499517cf4e433828da73aab3e1f5f609fae8c38f5d5fa17b7a59fa8d7cdb62bb7ddb3ad7152208f4cb6ea840f7ee2cfbc0f92fb98651883521ddd847b90fea9d6cf0c6bbcf7c8b110697a140a8e8778ffcfd4ffe8a6b46713cbd16ccffc4675d1a3c49c40bf2cd775e2b92151b78cab81a68baae5fd521d632fe269456bf4f0d0db53909d09090321b0a115c7e3802eca7d9c366d3d05fe7cb9abf7f3722d6ba1032df302ab564daff65acf7b54b8dd306fac6b243ef433aa75c57aa6f5ed364143fdb72dadfa40ceb1e03d7a86bf89748c43a4f36ae3d9f9c8ab6d174abefa091764dde2f34c03dd6706dfd527bc2bd76617f5a011eae314c829681603edb948277db9f905fbf6d7b371bd16b2af4bf834590f73bcd68274376b719ee09ab5fbbb403b87920bdbd0d968e1b9b9c86bacef9885a1d47dc59ebed2f9da7e469b49de0de2144bec08e611df8dd6bc5dde28f6c888c3a283bc476f3661c0141c4f3f117928e1c363ff7059ffd6c6c31f16842ba677cc7a3bc02b5e10ef43f5f7677bd2a67979411e0dc4e896f6133e8db812be0bef7de3bec4ab56dbbfa93925ff6b41f9f5eee53fb1836f4d81bc538dacd5be528d987ab7b9cdbb36496bcf2b98832faaa3358c7848fc6d35d0fc933c2db43d6e572d7cb68aade36312ebfe39d3fdb01c6b84f0efa6f6b47f9bafca79c73e11674c3d7cd9b5f96bbf521c76a9b6380c1dbdb6e558c133ee5489ff1163e0be834dfd4dfbc28f99836b2fe6cf2dcf40b6ad189e8373c700bb2c6aa3d344b1a3b1d3105e48c61ab7fb3c0ace569ff23a6c4879e87d9974d4dfc3bb01763893f52aba4f763188df4eacb78ec427a5e8d3081b97160dafbb2b3e466bacefd7f93395757a3d6784f638764c7cb7ca061d469ae3b24b715e761aa95ac6685ba739f93eedf750794daf846d5578462bab87fbb153110ea5d8c5c03d35dfae049ecf0ef16cfb92f5adabddde7f3e7f577d4d3ef3c518c7548bfa38439d24f80cb1eec4259efb5d0dd30975c198e6a5bec1bcfc59e6845539617dc3e7fc0a1a7f8e8ddced64bbf2d514f210e67d4d21d6a395973adf639c256830eaf995779b344524a6e8bc74288fa5f78daedda97636db1baa6d4cec1562a3c00e3817fc8cea1559af1313378fc811536e32c39c81bca6783fd0ad5d271457916d4b1ee308f9ac95459c5283d3e3bb3515d60f8cbb0f27eca7f946e74812602dda54f620ce89b14cb4790c459c59533f93d4c7e3f306f5dbc7bdf3648ed5dccf99b470458ca8fbb8f1ea40983fbb76e8de52c38befd929ee77bb22ed68650fed097b99bbbb08714f568598c94b316861c415ec5a59bff378e4cd7c17babd4acc4eb5ec3ca0bdf0661da4ad907560cfb7e8f96f186f97c3907ab12b57d6f4f8dfecb09eef884f826b78f91baf1fc49ee436a61eff9396b711cfd8c3fefd90eb8acafc8c18cf51455c15733790bda25027bbff0dea0807a9b7826bf870a06bf3dc035d1b70335785e74af84199d6db6d62ce21f4b7ab6432f40641e2dc307751ee5653989b0e8edfb4c507c19a1acfe703f1db350ee270c225e775ad87bc57f2a6e6447e7519f9e5ac4bf5c5d1fd395603d0d4d572280ba3a3ae6b2f48d865166f109310b2fb3be8b549bba58d72221c4f4b5341e74ad6b433c479674b0e13f83be0cfb0bf5df83ee546c7ae5443c24535d3369f77d4bbe97907c82318c2b66622376f065b93f213e27a6dfe8d95961f127a0ff51e62e7b0e46b83f72736c1babc523cb0f6b09ed39d98afd27643be95a5cfeb54d1478b9f3579d42dfbcb78ea5a1622afc4ed5aa0f35b20c6817c54056346180ea51f5be1b3eb89182d1536a34a5ee5bc081bc1d74e6abf5e317737cfaa7832ec0fc08f177595f53f73c5283109f146889ac0ddff5f099fe47ee651dfffa149066decd8fd6ca535243809d243bff5ae8732117920a94770b83ec6461ad723f6998c55ad67fc3cb1fb6d3d623507769098136dae543d74ad3f80faea352d41c25568b57af57e7acfc1e6873551df6d2e036c32e31a8989ec017bb330bea8ae0b3c67f3b08379313f455dc19985b5daf99a6a5787bb7f2d7ab6fbdd48f232847c1ef3c299d8848335289f13530ee51cc6abfb75953c6575248d0fa95b2f3992a323c5568b3123dd8f399ef7d9e58667f454d190003d40cadb0aff8dcf97419c0899fc5cc42adc97b4a93728ae4cf4e3d92ed57d6aeb4a381f797627e702e37ff12ea27ff7c9bb4c731aa7af85337b882f94dec40ec507cd0a6bb4dd569f984d38b0ac460c49b118030f5fe36e28a718f11c799b5fc7fe019ba2da69e07106ae495103ebfe6c739273dbc64bdd2dc8bf20be2f9b617d6e26386357a2a61d7bc332f6f0dc34eee7421c5dd781751d306365a05d8f0db1dfd3e89a72ffd4083f03f0a1e0332f11e7f9bab06ae085819c4706f56b3bc4f342fcdd80feee8ce726c642cbc4011f967d06cd2bfab3bb0074eee7c96bc304efa43b315e0df87fa74a5e813f25143909c3fd5c6e606fdbde07f8184d95708d533773f87e1867e2ecf6963bb15642c7dd611d26898b97847f5ecd855ea13b980ffb020f9e1d066f36eaedf53eefe396719d1abfebd7bff9dccd37af5f4bc85fc4d6fe22ea0bcc0a348e9c8d5d11e7ffc50a0c77bc406e100beb6310f783ff19c521c6d07fe6eb7e80989aa5237c8d34c69c25cfed0d97d407bdc2dfadc0aeacc17752afd33081cd1932f4b91bfa5d5eae5711d681e3fb770cbd1e23705cc2ae2e8cf0be870773eacb35bba513885c7eee5e21cf9f4f397690d7103a309ffdb4a96c81b92baf103f4fe61fbdc13f8f478d1c4fe785f9fbefe3916d2ee07ffcf187b856319723e614f0b45db10e9841cf12f7a17673ea14e66fd028e3b592756555cf3e0b8384bd849a86d386f357c0f89deeeb71e178d4371947c706cf1e98a74921309fe14cbcef6426ec1003fd81c97c788f57cd7ed85443e4399added4eee0d53b2b38700def57b0ef95dce639a57439f38d318e2bdc6cbed09ece451f271df6d44731fcbd733d827c067a422ff903193dee376c2bacd3510dcbe2ecd41ee7560ee443fb3b9dad1b80bdd8ea068181373ca737ee37870c45ad62ed8f05ce639d8f585af98d543df4e45ac71eb2136ee25d0ef7185de068fc1fb474dc8f99342a3f79d897cd0a6821c4dd4cc80078a05d508f3b8bda63044dc1f376517c66ac2d6821f26b43dcc911a2297ed98c1e6ba5b829e446178dcdf79333cf4f10ec1ed177011faa845e95543a8110aacdd301b9797a4b506c49a601f80a7a6b530e3314b35a9d62c10362b3c33d01d8bacf76bfcb777b2ca2bd434e59a7a7827f71298c17d4dbc06b983e7147b6b3c3619b9fdc810bc3b73e3b5590aaef7f1dcf1702efe089d7861732a837ad6bf603dacabf17d1e7bfd64741db26101cf68f09ed859e2a6b118b7afa0dee3b50d1fb49462abbc603dd7b7ba01f881b739c4c7b3c6b139e6207d6f82ddbe89003358595de025496f0b67738c787d9c6d97c4d77442cd8fd57c083566c1b5562c8957c8fd067fb209d68e29787538ef95e8d7190adb11ba9555c17ca4b75337bc895a6b392cb88f10c56c08f14fe31bc2b798279e81ffcf3955b85f9c34786df16c21ab7621ac9bcaac0ccc0d270dd40fc68cdbfbba1fe57dbc877897381c88df728ed521e97e39015ca3403e5ed387f823cb7f37e24c4bceb4963f7a5083aabe4a91cf1c2ea80fa2fe863590cfb75dc0b69d0ec853975addaeb093ab18f0ff8c011fe0c2783d8bf16447a87188fc9071054e71a8f119d71b9cb37f16366846a7e5b932eeefe17483dd6ab080dc0df82f6ec239bc53176dcd7dbfc563769fcb46e3c1b78b41e9f8c08f76bafb2e13ee13999e116cbbc748b3876e585957a19797326b017eaae08d66fb006246f4af928c6b7bf37364627527cafa1a961bec01ea615fa9b5488e3c56c8e2f414112eeec4e70efc6e7a0e7f542702cf91be28769f4d466cb810679b884f46e0bf71ce32f4397f89de1bc31dce49cfd7435d1e1133989087bd1d9133ec0fea7c31a1cfea620f307263b018cfdbf699ee75e1cc6013ab17405dc284781fb421bd211b021f479a7cc13df0bc165c58f6017ecbbe97e02ba7e2d9b8ff1dc629aef1db4268348c919b6f19c31eca7a033f7e1c8785f3ffa271e03ce08c63c29e8f43fde338f84318879c0d7c6eb3eff10ed600c57e0b2926117e576cb823feee3173ca8d7799a97b2273c147a806558ebe61efcb1767c4b0c4b11171fb308853f2114ad4a8bb9d5e549ee4b081befa8c738c3ab3756100d74f08b14508f9b14b61be0adcaf097ca4a3de0e628e5b00da5705e7f6eef5035368a8cf446c9608bf992511f91f1c8739147184bb12f708f93e0dcd40f38d4bbeaf846f5c25613fdcae06cb0cf75a3510fbb57714ef55f4cb35fa98c697bfe1679e27ce3cc70ad6ac23e6d6271c41c5f581b8bd687c5c03796260efe202fdbee468085f90ed03db036dea1e9edf13e68a3a409c27582b59335aff3d6b893ec4dd67727afd68570ccbba049fb01ea423d4c210762a4e7f83edf6a44f686f0c81a1e45ae45e9056de722bea1399e3584bc8598b189c4d2b67affc3b1d15d457d8fbf437fbe76b22f7060bab829c518febc4fef8bd1cf26ba97bbcdbc6e7df0b075ceb9ec72ffd0ff4afefe73ed4bf59905446b0731113b12a877de7f9f79273b07e453d48f2998a44f84c6c433ed3d037bc660e35b4d40ef7e07fc879ba9f2559d109b6d577db079b1bde94efb5b818f8b6d08f0a633628738a775fa6ce2ff089d26eebda773b7561267feeef60537d023ff7381a754f8895248e019bf7f4f15e9ac5dae57e45c4b1f342639565e0076c5ebf2ac8e1a4b71ef6fbf2732b1aa38ff90bbfb30beadf808daf4c1187a5dc77091de7eac35a8ca3e32d867e0d36041b65ae2ecb0de6e9d98baad31a651c7bf64a1a8f1972f66d2e92b7c6eb029fec7419f544fd01b873a3ecb007cc045bf0dff278ee06fd3677dbbb17f6c7b7838fd31ef751b963108b1eaf7ec26dcbb0181f30d682fa1cd6484cbb847821cb56df80b14f97909f8878df15fba4fc193ddb2fb497c572dc17b190dd1f606d2aceae99785e733775f16fef1dc84f4d16b1c77b0aeffb621a5710ab9a2738ef86c92e84bd52da4bb0d571d6451e5f188f93c07e436d1ec7a5c80ba8693223d8217eca34a0d7415dd36e9054d4dfb3c43ec2bc1eb0a6e0ef146782072d76dcf342c6ccf775b0bafb2e141f90ad647bb495ec03f8eb53df7e83fabeb06777bff73aa872d4c23d5e661fc0b5c23f2b3a583b89ec12f2f7aeb0a1d66a50e5c827675a15f48ba53cb60e070bc793bf6daa06343852f1db9981589738a6ba6f8ad79de7d4fb6f3303f75b3fe3fb39710fd4a79cedbb9a1eb185fd287dc014d65705ab618befb26c6153edcc5a12ae6525f2c766df469c659c9786c2e1b62f30afdc045fe8a780bef698ebeef07808eb93c7f342e4e7eb42f816d760f7de15f8a954f4e564af06fa275193be883c6b1a30e2823c9a889b8e9a1073cb93f92e7dc51c85e07cf594f72ced90fa820f7caf86c6e5c97ddc3ff23ea7cf4aec4ff0d1d24eb02d715f31df5a45625f1872cfd31ebac726270b726c133f765fb197754e7cb72baea1576ebc6d19af445e22ad3b73d0094bf3d726ba5d43ee9b6f6666b05ba18d007fbe17a03e94e2437599c0e60c215e9d44f96127f6d2b5cf76b5cc9fdd6df83ac0daef1fa1fffaf43cbbfdbbf3ec781667e5aaefaf914f80fc96c953bf65c7f02ccbabd1cad17d1351bb89c7ab41c1e350ed7ae1e3f59226d8b990070cfbcbf54af44567be89b805b1bfeb7e987507feb0e2ba25a973da5722675040fe3a2e6c385fd2df881941fb54b0bc3f41fdda026bfe0d621a8c73e980ae28f2d142cf2bf66b4ec7d8df73ec5606f4f0347dec1d070d47d685fc94b817c7dbd577bfb27f1f93305b8d0bab17a14fce62e8594d53a34ab82fe4ce1ddf2a017b51181e9eebe962747d1398c95fd8a357cbbaa29ae3039b28e26f779a84573c17539bf17c6de886dd02721180b31ba6b9d381b16a00873629d72b883104ae2e8aa9aebb9b3ac29f5a26af36f4a04ee6e29c790bb2de099e9bfc99e431a7349c636e269e7dc19e8bd90df5498ea055c38ec1aec63ea349d540ed5a687a657fb7cd85b4af8a2d295d6e87dc20ab09e73d5fd7aed287322cb0e7dd055b93bb5d592fabc477cd9985f8ff1fedabeda0ed5995c315f76f92d8c5dccd196b1659befa12cfcef3b7a22e3cac612c6a7b0a6b02eccb3d061035bbcceb22cffbff9add759de3cc609f6156dcb04f1ef21e0cf65e13ec52c41efd59c621831e35befea3a47e2984a6ee5b10179873f5c419b837507b3816bacb82b7df3e0c142da671b9f1ae88f99de5bf2fe1f3ef4d26c6abc86bc68f3e3ae635ff631f3db93ef5d193479fdff50def5a097fc009f27d077ccd35cbeb969d4cbf83f56f9b7311a4e1643e4e798c97a56d9f1972c0490d39259efbbafb9e8774d0f6e37dd43e658b21f26939584bf9001f096b7927eca189e357ece59e4c791f23f7c1cf13c8b9a6d9e10c1c10937906f62b4d3f1726af818c793d0fe23eb43141967c417c3266589b00eccdff6f33fe3f63338c70f46033305feb29f9da3c1aa79fa9c02a418f7bbaa79a40dcdf87187ba046a9459851c09198d7bb0fc5f343bc96d9231d8a74ed18c297627faa31f891a927e2b87b5c14bb7b582bac6c4206bcfca760ed43ae83f85c390f4118434f36eec9c46ceef79e03eece6fc0fe215fcf7d0f728e7adf0c761e6263be20f7788fb9d57a84bb743c2d5f1c824da812ef3a871e9e583c3bd797c3b10d45df27c6731ed82bf5bfdc7f43db59ad513f263d600c00cf34c1f1803d192e2c8cb3319fa4feb7bec7a9ceb3ebe1ef955ef07f773dabab5c2ff98a6ffaeff17a68afcb7fbcdee1e9f5c2d6fb46ffea7ac7fb3a1b26db03e266ba0cf4726656f7900e643e3fc63c4aca7625c4624966007e8b6db59a05d7d0eb492ca0e97d56cee63ef7ddd099812df4be41e797912d040eee0873cf62adcf359ec8a87722fcc2983941521dc55e621ed4d68641fc1b78228abebf05fb98f37a9c172435c44d471bce37e486458cb3c7f8f88aef405ff590f2e50d5edbf5fce8a4e30194cf18e016a3a61076ccea0ec4f779cc76016dae61b2f6d610575fee7b4f70ccf5b05e3df607a2f61d719e15ee1fdc783d3daedd6438bb26036e770fe1468c2b73bcdb14fba19b5a6872a48e0df666321d61ef91d19d03d75ad410a6197d70f1198d0dcff1aaba4a9cb703302346b821ccc830ca1033528a774c5c271ae23bd6b6eff298668ce730232c59bbee30bbe03333eca527ae99235ebb1fc5c8555a62bccbc75e7cc6df9f5fc3df2186b918e09a08e3df06e21b2636e6a64b9c1b6fbea1be6fae6b5b6eaa603a74035e6b8b577e28f23bdd601774041fae89bd2f5ea0d43602a3a3e5e127968975e72373583f84fc5d98d4e7b9d87fa320ae5ef07daa46d44a03e37064a0a191c4bcff5570d55ad44f06f3be123e29f052c402bb340c77128bbeb0a59ed73d1607ccc16499f7c768c3d5f948f29981bd60558cda3b62bf13875c5e98f0cc7faa1c302f667899c273410d2658088ccd3019d5c207cbc459908c0e98d7e335aa72e3c9fee26188f8e2cb126b0b99297c346b3558d6e5c39c9663d4a1310f22175a1d319f5ed53c2eb6e2fab7c584e6ab191a620fcd6c0f7a9ecdb9ace9568a1e2b7f9f61a6ed89cd596aae5f6ec1933d113aee157941a43d3a717b146edc0ee692c3ac27b948786c717d59a09ff3af6c957795fc23cfd6b8b2d7789eec15397705fe233fbc2683e395f7ab67bd21ac733bd8cd709dd3de84dad6445befe6ecc7f5ee6fbc7e68e333d76605314b140788c5fe530e57fcbda38cf78c8e825cae5bb90e607d5a9773acda2eeb30a82c73f0605333fa1eacddbaafe4a286c598df631c6407271dce84d6701cbec2bbafcbed15e29e12ede69f02f6bab0a974ad7e24ecae1c0f4b1f8f39c73389f1582672ff07460dd813d617763fed871be706fb86ec00f6ef81a6cf743eac040f498676a083f6db9df1f51ef615cebb33e749230e6ff65a8e85df169ad07f63bf22ef9ea7d70336968f677553028708f9ec137ce6475bce9a073b0c58b80aaf9707184fff2951c721d6cf531e2faef1be78569d9eae75dfae61ad9b176d2e924debeca844fd7aa3d6f7dcc9b333a275cdf1c33b0bbe197ecd28ea613ddb5e88f5728beafeceaf399f831dc1795de4ef9d04f937325c47e55769f05e9d7001bd785176401ea26767347f96379bb9aa7d5a3a3a3652687dc13e749ead3bf43704de58e8e38453c129fe707e43ac795f6fdd3d33091f2bce9c758d7a6078064ff1f942ce2fdae3b53fc907a0dbbcc0585d4a91ef1b433e76b21cbacfd757b6410cf764be865cb4f415ec85f3fa7fe4e7b5f640435a358dd7488d2baefd8776cdae0cc0d9e4de057ae0bdc2fcadfa252eaf07ad11efdea375aaac291b7d8092eb2c89f75a8c0ba6ad3961b7dbf6b15962dc495ae59b9ff615e79b103c0cec25b0577674d3d61adaa0bf5cbfd2fd3258938fd7f79bc09663027bd896fcae7fdfc3adb1e1f798231e00eed91ae7f17d7e31561476b0ea57ce3598c71ed7a62f8dee08b09b83e55a9c3d71067983448b45a63fc622a3d350c622ae196cc10fceba8392f85669ff0cff5bff575e4bb1e3f9e128f20ad51c6cce15f85c2fb1d9ffbadb9c99e118493283f8fbf54a3182b542bf1773f4e3e958f474a7316ad9d5fb127a2b23c216973f9ef10b23ed879cd3b9ee87793a40cc63d884d09f5618c1cec7bc66bce4351d4d33d696783fae693ba69c45767096c459f5bf3d9ea739d4f9911b0df359bb60cdbe919774ce6d8dd0818db53e7de15bb0e4d5caa2a7b6a4b3047d8f79f2da5d0a9f66b8407c5be3fc64839e9fc36b3ebe3c6f3ac5dc5dccaf21f622e60dac429c493fc740c642c4407f8873af5965cfc775d54dc41a3804eb1a7471093f3c798891ff31bee3ebed0b7b7fe266650077663ddf619d51f80e3edae17885f188bd10f667980dffdd588419d4a7e3a0435ac7bb02c6e15797212ed8ae4df15b7609d633fc6e0de74eca783eb9e27c904b1adb5713c776b163c0936c180be1bf0d791e85db18e099c95f899f64dea4c8e77f2d3782ff23ce0e5bc0d01dca8d7aa6a59f425bb3020dc45f16dfdf863bc4def7242f2cf4afa7316aa29eba5502cfe2bc5a68130ae8c34ee3f48c18b6caae259742823e75b7410c0a1b89f70fb32ee69228371d3789419c4aeb14e3b8efd2f80539c0006b185d3976eff7dff01e32d1b3cf3e584cfcb38a5f7fbdb59f21e2e730e086056fc9779af61b6e0713b78921ce2b0de8f9cc5c919be65a8e7cfd3950bb15cfa2f7cb74e735e1ea0ea1739f471ffaaa4fc8d1b47a6e230f84bf2b8c50609f79ec879ce227ac3d85a247a2ee87c9fbcf79aaf10a7a81121370fdc3f9c6ef20c67f067b288bc96e796cb7e2d895303f0c98bd8a553b156f89a38bbd350ccff9f3b2c6f3b4205c8ff25b8beec7cfdfd3b7386b8b3e6b5c891f340c554b633ce13d15ad7c7726725d61761d966b31d798334e9a778c0f5792c3d2f8126bc3bfa22dc19ea685f1dce7a3fc57eaa0ff3cf4138f7aaee2bcbea01fbadc5ec7f88e600fc725d8dda4a9ce3fd8e60efac009f9790fcfa7c4206d1b5f2a9fa51ff0ac86d0a5f1bbc18e6d1ec794f2851edb628f92811a881e13f1f86722b1f6676e83380ef237c4f4a7cdff7eaea3fa97b9d75472cec8f3cd0a764ffd5c5a9fa1cc1b8fb996d3d3efbbc709d4efa29862c9b1725f8c05f03a2fff78df6646fea938cbaa7e0cf9da481907f5ac5d0c7a53ed5cc4da4624fde2d0ba422ea3ea3383cd981d3a6a3d2548d3c3632ebe7a09761ee6ee097b3fcf3dc8f7a5fd89531e67069bc87e11cca1fe121ca486eb16c4ed2f6aacf384db6aa7947d8edff0b7fe32012d4dd44bcfaea6e89fd89c51f3b9cc2bacb71ee782cf6a38df789f53e26ddd74a1ee263882b2de10305ab1c83b52fd18f02bbdc7dfa61c5fc76d8f1847e72be0bd0c9c97bf0892700f7d9c4e007e3ddbf8f733c16186d0060a1da85944a721e7fe8b7a83fb7fc3d10af9abb086f6877f9e01d724f87131bf1fdb02ae33069e7fc187aa7c17303985c067f273ae269c38af431583f6f5e56fd8465efffeddd590d77041a311c705344d87a1e8470ee0fa421b25ae9d69e2dde689deff91e6a8a9567d066be7d2e23e0e9731e0afb02668af067edc6fad4bc7b8fbef45e25eeffe158f398c57b374107b5d3682cfcdc7ba04d6f6d6c0d1b20b3e7a50236547c0f4ee501baedc78bb0afc842cae2f62ddb05bab466164a46d5fb9109ba9fd3a5daedb97f50621f60ced80cb13318b51cf6fdbe4d0eae698e314b9b282ce810a7817455eba4758ddb0c1fecf8dac7325bc7f43dafabcc2b3b798e67d9ccb4ba8c6e1f6615065d483da45bdc238ab4f628c5836df9a43cc792fc0af8cacc309cf75c014def79e0535424638433b85774967cb11f22254bcf6119abf95fb9991c0007878ddb87211ff7a9d04311bcc37af17dfe01cb4e390af6f86f5e2ef0af91b658e65bc10f9fb610ae76445e7584dcfb948459e1a73552ca19c9d2773d0ec1828b99bca068eda74d32d1dc2ad8e55bf67b9f14cf217e21a39c7d83c3301c75d7c2ed097a5b17627ca589b805ff80c76c5abfe37778273165a584faa855e687e70b3b18f9a6c69b9ad12e09dbb08cc6e7df7cb454da2f12e62cf308cf18f0bb27fa76f5cfb8b8f13724d9ea7a05d0ffefce56e270aabfe0376f8569801f03cf85fc049b1126378fa0c6e27c4972bcf9536f7df703b91ad0ee2f3a41b7c3cfdaec9bf6bb8eefd1d52c31d130fcc0e63f40a3541c673c4e89aa2b729ccaec85d8818d1ff87ba3feb4e5589be87e1af44a319dbcb4317255206a40ae40e28c73682c64413954fff0e6aad556292bdcff9fddee7ff3457e7ecd05854bb9ab9e63cc7fbc0fbfa6de8c77a8c8716f1af918e6dedcf941d087df46b8cdccd984b88cc789f90de7c58913d42f19eec74d5f803c028f3b9d9101e770a986b15fb74d0ef219f83be29accd57e2cf1e6b8e1c98d3a31bc6b9396bee4be597114711e4e619675a0f94b9c841212293be157c6f718d9bbb7d3c403cdb7bdc25c8ef265f61de16ce224d689f7e6786d63ddf27fd738f58ab68fc1e724e3d03a6e57514ef7f7f627bb8bc6a4e0c0b7e8f65f5be00ff4f14f65c73c09e6235274c66c9067ccb6c5a7f6a3d5388fb84c80d4ffbf3b5f2410799abb9c916d8bf9f11f8ac81f00ae48b6e6cf29b19f87b5eba754cd4e160f245ebc6be73a53bd296f77885f111f8bf4f8fea9cd6dc646d87751397782bb4ff5c366abf0c4a689f1fa72bf2db4ff1567e7017f8c62b3eb32ab4112b1ebe56d8b6ca4ff6f8ff317fdc7c608d5cc8306e99a4f85dc6e82c2137e9a4f94a6b5f3c99ff1cd3abe2c8f0b22d1fdf9fd1a6ae6d8bbc30c1b54edc462386ede1cbd39eb023722f22aca9f3d6538738520e1162c5533bb2e15e56cafd26c1ebfb887213764dd7b3f5f4763d031b12ed25d694016293afc70e30dbc469235ee64a0700b8596a8cfdf5ef07fe9f0dd81a39d336d8dc6f607db46c4436e653a76bd53f89e32ecde414b93f109302673047ddd9d2080933352f944f6beaf39fef36575ccbeff18e624ca743efefa65ce3e496e53ec458efc92d294f6b9d7a5f990136a65f0fe1b1c63d66f89b558ebfa972a2279583038ca1e625d2987fc23a2f2d738ce73dbdfb63cda97659b7738fed74785a1b303fd9ea2ff71f6ef737743fd5ab2cab3de28684d46d2fa9bf844f75fd1ad7c877635d9b72eb1313fb24484a4fa839be10c9477c9d5cbf6a6c60eccb00ed0b36229d6081fc90027c8217f6b85920378a87bc52e7782b5ed31b871a5e172ecb360b8c331ba50f984ca1be25ea92f4f64c6d1d22d0b96fe99dc7789f1097f1ed7a1eb8f21179ac45d095cd19fa4f9dd3f2ac3546b621d804828deef7eddee6ac350658bdb3639ecc09b7f0ebb36a7dbabfb771774fd609eb35a3cfd28c87d78c78278fe8f71de2dde638c46f2579e1cadcc1efe726e24c1c9e26fd77272aaeb96f8f88b7d8821d9c1cc495fead6c37c0f3591777910afca6c020fe299e2bcd5b1673f11aef1ab2db8003d5a2581bc611ad835b4d29bf3339ada1d62110f767c087f47bffcc7f5f721db35b503d1960b2c5b582b8e55392351df19444c41f773d45eaecb112f265e691f1e59a79f8d07869ad3f2cdf53e537b132ea24faea477b897514d23a3df7cf26e2f5b3a41ab6dcd77c2eebad54b5d289b5224c4c5840ccc543ae87e7329811f797d7ef9dc41542b19c85e7506e10be51f14946638d1d25de5fc57143354e8d51534da21d1e51a77b5a771a23649794ebf4c3a38e23a7ce097868d922a63ecccc47c09f6c281664545ced8d5e8aeb71d98913c4e0c4ecd68676cc8cf8fe3efbd5063b44cc28c6116d25d80ac618df7fecfae71223981357cce29134268e1a9bbd04ce022fdbbf9a9af7c4a39a9f13cc5173d6ddee87d828f7627d3f618123d41e4dc4eaebfbfb36e3fdb2ac533c5b32cc89fd347f7bbb75b779051b2378aea8a6d33c18c457beb4da25ec99818979696fb5ff4db6e6bc401edc3417887f652bb9a57e3dbda3e65f2ab30bc64a13e56781cd4a5a872a3fe9212f641ced89bbe454c2193be92a5cff3847c0867cd1f1977e3f892a8be29f934381f96cbcbff7f1a2d29f9da55f430c52f1bdb19878066a18c7403cb6c7f445697cd831c6dd0b23fc9450c7eb15d0c6604d5a2c86ff8efcea5ecc09cfa9f4a682981f82758afc8322300bc82d87dc533aa581e62330439a33eaf9f4f1d8ddf635b517e059063e6786b15fe0231065e9518dac81f6cd6fe42f162bea3f95fb86ba7c0fb940509f95e2e2bfde19eabfa5cbe31572d56c77ab81ffd53d517cb49bbd03778e684a9583938489f30acc2d641a0babf68880e6628d798258b003c623bd88876f6be46be7b9d2ac98c6bccd6ef1f813c533e7eb9dde173e6b1daf6d297e984729c6a36ed7bdb261078ddbd25ce7a7078a7b2f53f9aafdef9411a6ef12618cec765d821fcc8b6c8e75edcbcc9c911da87da4ae21db977066736a7facfcaaa68b3197966a2eb95f23e903ff670167ed3371caaca794d736882ff979314d5ce026e114c7837a047be023f2df437f4ee57e173abf49f172e2963c293e98e575e296538a8fb5e31279c64576eea83e535aa705ce2bcd472fec8389d88284591b3c0708b3d63a885bf2ab4e2067b06954586bbe5c9e3ee13c6399543525eabaa5af67f20c7b31f399e2776a9da5886daa53585a238a45cdcbbc451b2f785b537db765be718cd56aad89e1f82e271d3c1fd9b1d51a1adbeed15e7e7aefdf9542fe6eccc916ce0ec9b77ee8fc0b27ad3fd4ba4d543de6c949dad567f6bf1e1bd35976ccc578238b888b67906f8679ff0b3903d8688d78e93475fe758ec96982f7b427d2f19436c5688f631df7a39c05ad3d037ce1888767ca492d6d493ce4c97a2aa9feea2c91ff9ee78e45d8b032055eaf6576f0aadd29fa36efd29a78ef7eeeeffff3f32e8cf96931980bca4fe10a0ffc7ac535c18a8ec1f3a2fea4fce2d292e45319f10eec21e06c663bd40751f5e2898807cfb423d0df6771e585b8af9bfbc878453f6242fed5bcd4be58e266f03ea84db58a00db02679a3b78a6dfef552cd4f988104398667587d8a47caecf83d33bf98dd20ff3fb3d9e934fd3db477cf0cc49f7cdf49f7fe91bf3d6372dff43df9c9c341bbb6897e72c1773cc47dbeb86b06402b5a4fa3ed6e7e6f0de4ef1f380eec45ed515e54e28fdd9a5e223b205407fe97a4a099f0d7601ce1f4b925f6569bfce8e4789d2066567fdb73ca21ab55c7a1b85d14a440431813c74eb0e3909446db246f11b7bb51f52ad92c1301e2f3a6e413da66ce6d645f96e89b1427eade01dfc1f1da7e0d2257cee44d53b2f2dd2a035ace580ff23e6cd85fa3fb5758e3d57be79260c958bca92708d39f7d8289c6fbe39d85a2fe5548ff9e1dbb5fdb739a4af55d3fbb972774d3f77bc3e11af9eb23358195df55e782a5b1f39f7c66f7cf9b77dff3426ff1d723f89574ddb74b81f011f61409cfa73d0a950ef1911e7ca1238f7558dbddcd37e761a03379a9a3f7d1f1f93e981de437948e25bf1b24783f882728cc7bfc7fbc3083059b51def5b1c0f365f633f487ee054c354622c25b52626d4c6b52affbdf48317cc177caef92f35a7b297d318636545648d53e2f2d3dcb46981fc9c620779faa0507ca6c8a3dbcf334658a5e5917cc402b5898af56e0c7ddd052ed53aa67630d679817d0bbf691ddce885c6edd799f2cf0274c9e6aa169770c97a7c69ecfd6b6cfceedb1292ae7b44b6a810861e636d8b4a7c57e17c7f17cd23b18cf6e8036562af754055dc5161096e1865fb70a0786cefdb27f6c1d3638a310edcaf3eee30b50669428c46188b4da329d52deaf3d72bfdf0419fcfd9cd7ef971fe758e3e4f25f13a5a1bafb030dfc3cdc1d9db1276345ddfe6aaa9e7ba3542df449c63eb486d1cf4c1c0ae4e8be4db5ab10ba8d7ed845ba5218e4770eefbe4ab2d5deffc6feba76ae10c898cf0845827d02be341207cddaf90af421fb4c8a4fbed776c5db3803e81e924690b7cd84abf0c3887eb34047c76ae727cff83f79dfa39a072c74b7e50b622e46f6f384acae7a5391b238f8915ef567fbe2f5573f5394e5920dcde0f130d61cf485f63994bb28d7ef275bcd5ee96e7a9add35f7c19f616efc3cddff6cc813d352a096362cbfe7c992b5b78f76ffb6babf757393d685fad7f17fcd6ef333ccf8cb8a3b9f4b32d5ddafafd96c66fe9b604cf8b6ca2debfcc3527f689218f8c405f73911136f8d7e5cbda5167086ae9a4379bf4646b9b14b546100f3a8e29379e17b7b321c7f88f897a86423cdcce88dbba23cd9e397278d48f1bb2ad2fa5cf21ceb49307cca3600e9b9de36dfb4af138d4648ca9fef95b9b8d20c81e47a45f1a565d08fd628cde4ba8d977085b5afbe15b49d877e064d7712e6eeb336bbeeebf2f50186b77804980b834711a0e7315b91cdfb8a966906fca8259d509bcb7e9aa96f0a882b4209ea5017c006b3fd41afc3215c0396b14af7dfb97b75c9eb7da17a83766f6fe5378d33762651d60cc2247cd4daae1b5922bb69dd526c44839beafd827f43e1bb5449e29afb3cef17c10ecac6d25f84eb597d7db229e07d17165441dcf2ededc0ebf6049944ef0b4d8998fa40325fd7870069965b5bff1facfcd7b1b68ed4e52c2ba7ebbf642d78ee7afd7a2a5be76bdbf265fa2ebedda3af0a92d2a4e18d93aff352e907f11d7eccb7a2739fddefd35f9126574edf43e37e2c13b5959b913fcbee3fb9331e42763abf9f5a4f375f39bfd04f9b6177aeeb49f1bfaf7c2f923f3ea26442c7164152660e853affea43db64e998bb91de5ffaef6b32ea67ad36cc36ff816df8a7717aa0dc718bfe94639d98586b219fa772c78f84163b7b425e6fb50f3c33c8c48bfafca693ce1dada67aff1be187fcd1115d645e542b2ec4079c1626e11fea0517657ed877b499cef10a38c54db738167dac65de4a1eec33250f706a53fb32b136d1de052125fce9de930ee5706183fb04666fcb50fb9798d340e4169d1246a8d6fdb0fc45efa3ae66e13c681fae5f55a73edff8adb35e92c83c3a03f7d5da35d6f99fbe57ba856907056a778abed4b0636259ccf83b5a4fb22f3d82747de79c88f236e3defd7fdeddee1dcc35cfd5bfff741fba02ef76bfb8c605a36ec2df27f11ef7a3f4eb352c550bebd7fae38c9fc7e8f0c4fe2a7bc612edd758e1acb02f5813bd2166f349fc8b20b1e68ac0a5d43dd5e24e6b3d28e110779c8f6a4c3f6cbae41c3c12bfd411cb4637f7f97fdfa49354fd10be1ca7e7573e3ac620a35611dd2cd2bd9aeb8ffea58760a5ce04f0b1ebed23939d0c58039ea613d99081e90dff48df02391d28cf92f79c8d689ed83b7a03a1bd4dc4f084f46985de4b087f6117685ea3cf4bd538511ba0ef37ae7b1d67febfe7987f8aa88e4a31ae3436cacfa3ddfa3fc29e8bac0798fb9bebe3f6de0a1673be41dc6ba43c4da09c5391e10974d99526de4f14239bc27e37c142a8f44f1d963f7edda6e4cd7ccafb9bfd87ced18d9799d24ed13bb347ef5cf062a17aef68fc9986b8d2d76abb35d1eb576416d5d165f727d5ee1eaebf33a3b2ce0379d6b49f134f0a9ee7381bcb5b5ed0b1cf480db7c3c40deb80b5c6917fedf62f6033b78dffbdb5013151b5063c52ff19e9196d2bce89c1871d5a3b2fd6f3677c4c31fdb283de4f5e46d47ba4cc36f84f8af54f5a33fdaea3aee1c84d1a3097c8e968eb91c8927ea7bbf492711875b9b7eecd75beeb3d039cd7fba7b1f67f09dbd3db9ffb11f28ffea2cf306fd388517061f624bf5d1dfc6661a7351fedd4719e4546fdf7dfde9bba92f97d9c59529dac2a2f5eeb0ffd6c1c5f617c8c74518cb37b2e733d214445bb06c90f34790e62cd413d4be788bf79b15d91442d59b4c565f7e97da110cf9992a9fd13b91e7f034bbff8d23d666b043bfdf826ee0046d12de3d41bcd2d39a5039ebb0beb528bd7601f9dfc3618131727edbdf028a752539e94eb5a31a73a1226dc6c8f3065ca79ad7e088e372c3fd2677b56fce07eea16291b6336c27e20498115bcd19f95753b967c49776a93046fb2306a00bdc6877e0c8d7346863f0b1fc330660ca78682bbf4fd50114d42fd0ae7e3fb3c66e6d07e9f7f7aa6f2f54cc691f5ca8bdc4f338ef482ff1f8bef075ee6194be10b7a6c28e7b4f749fa031e66375bfcafbfd1ee1f92b58dadfd7424e9607d348eba90a03cfd5569da5cace3b452a97a772fb432d857fce34b611ed87c2ff243ef1b46b6c3ac3e5f2847958ad5bdd62ccd3afa6c48b2ec7e433f36c33fea1bece7c3229268371e98ce3391e99f1b6f5ab5bfdb7f67780e72e9911e69bfc73f21d17d96a70764f5ee37d73c67163a02f133e54a8b9419ccd91f94ab86fda172ea581bc14a97ca0dae9858f5c2cb9b43868fb168bec8467d3e9539d07aa1e4b60ad1b3b26d3db3e572bede1af790287f83b12691709dae7631d23b17e9d89fb344a13552394aa5a978953fae1666e9326a98a2d6deb66f61eb58aabae8c73c7c231159540df351b17e85b03c74413dab245aefdde0e11721a65ed94ec2ad448dec65ca8ba0dc5ef631d5ce145e72f5a1a884be306e2bd1f681dd26ff3b4dd0ddaea953ed432436ce0376190203698b5aeec349f6d7f7fb26ed8a1400ede54610bdae57a379992bf0573e3b7a5f1e6c4bd6f634c4404a3b54fb94c765d42bc7f577584fb0e1e6ed7c5156bfe77e523cea92eb9e07a7a6679100deb189639c62a45d0f5fda9f29ed9d8a61cbabebf637eb43f90ddaab54ad3947da6d76ff6ca986281691a7cbfde49b7cc139d23f8e95d94178e796bd69a6b2ff87ebd93eeff1f3883fefcb588cb629116181ff22d86188dffb7610f124bc7d83fe61adb41b5e9c4dbc7964f96049b5fc88fa821bd38e30a98e820ad481b954f4efdf55bdc22984b2fa07965f67322e381b3b21d3d27aa34f4b05ec8a07adf5b1b9ad1da27ffe81f03ec6b314abae48cfb3e63d926fc96a3b47e59988f49ea6902be947d70d719d5d41966e937a49df6497518a55d904ff821e1778375130ee6947c25dd4e661fc87ef964cd2fdc131d3c6bd843bc753e751b2dddc6db9e679d2cc29356fbbe8d2df0d1fb13a76ed8669117fe609ff88cedd07dea426547543e73ea6941d86ddaf759d5e21e0378412bde8b7eef2b00637972622bf4611ea9b8c53e368251897add80310c3cd004e6c0f1d8b56e8cf1a075c378d439f3e15944b5b7159f1911727a72c03d79c8bb1f2cd3f61de642e148add1815a9896f9817b09729784c70afd61dc57a755368e06cf04ab2d7ba07eadb5c6dde48181a64b5022e61ce3964bd48af112ad9331e031521ce93fd85f19d5a14e481701f95b284edbbcd37a496d764c8997687781dc87155f6bac7de49941f542f9dcd2e724c5ec03c6c3d14fe71ccbd0561bceaf54d0de3b3c4761de2bdc001bf84d5fcf4cf5ae77d98cfef6ae8efa4b73b6a53303fb607ed37bf9f19cff88b71baa6f9f4befa77b7d7c17fb88775a5322acc5eadbdef5d4b1c59ff72ea9e2fc4cc55905d5cd79e95e104e7c5e29bf53c52f4ded77a6856e1f5be2b376e1ca9c62ca3fb5350899f63b8f2a7edcfb12eb6646384467698b8ff4fb18ffd047d138de0df04ed618f79bfaf3cfb68ed23efa9b3f0b9c3654fb6b253f61f7c09e5758e213c68f44535ae308cf1a9b35238c3f4aed034653ac77e4a74fb52ed519d65898231ac4b19aebdac7faf706e354d949afed9fcfca208cecc382ea3422e356eb595ba85b2ab8590df51fb930bed431515c2b650ac32a718d6a7bc959667547bc1d959abf2a4e6eab3eec6d3aa3b9908607db1187c5d1d4fafb96caff291b885913d29a3fd7e85f68eeac94e26aec9570f7b767a32ede2a3e00885f671b4eb6bc6a23da37dcdabce3fcc47a37d088bcfdeec95ee3b94598b72a9773f2c5236b43390213e3a658071184c84f748eb7ec5520de2cd2b53a6a7f490aad2f809c373f7e0bdb55536c5b767211a7b340fba751fd029ab63ad68ff72c499f1aff7b201c4f72cfa1f410eb18f7d1a2bacb8aeacac50d939edc6af00ef14ed7030603acbb3a83d64d74abf3b3077506b7b6dfb507db71fda91d25b58323263d6bdd614d3ecf0fc8a110bd93ef975a872fe3aa7cc34b09b82eaff6c3636dac485f92f46499e62fa7b3d5bafcf53d0b3e788f65be6a9e69780fdae6ecf8654cd5fbeaec10106f7a35658f7f9a6ff560beb1bfccb754cf37f9a7f996d27c2b6ff3eddfdae6cabd78fcffcadc531c7bc3b9679d082fd7fbbb8a0f9def0be2a40f642e1e694ec1770aa591ad755e0187ff105b17cded5aa33dfef779091a7cba7f3a5d937ea076507eba240d496c7ffd73fbfffe9ce15f92e9c193d3cde3d7d885e28fdf3a63c008e8bcf2e2765ea34e9f59785f38a2bddb75e908f360101fead23e98890b9aeaa5bd498017017de13c1c534c47efa9f6c61beca927ca81f15cdb2fe1adaff47a1cfaa4d0a6ae75f57db7f536885337b7be1bbc67e08faa6f59591b6f41cf88c82e05d65d672713eb82139557b30fee20e7a5b1083f8cabda8b84edb84f1db5e5d778f0de11fa055becd3eb5af3a5feb0ee3a39dc13fe1fee2f78cf8fe397bdea7cdcadbdb7b37a994bd2bd08d59e9149b7f4a36b4471ddebe420f43c429d558c45af9bf0556a7e00f277db0bc5036fbc3acd4feb25eced9c95117d269e747f5a17801ffd3556f1feb40848e75a73a7d8857baf1ffbfb9e3baadbf8c41d55a3aef91d375da6f9fbf6f10bfa7aaa7f0caaa17e563c44db76c0232aee788b906fd359599757aca9a59cb7475abbcbb4a0e793da631e68b18b4b449a269d7a7ff85d67be3d72cd9528fbe7df935b9bb78b3cf02996bf34828f647f983ed9fddf1869534e555d21da90807399686d41f0f10dad4589f1f553bc8d467fd05809ea46eb7cf7fe74c476139dc3547b8b40fcb0fd9bf25da26eea2369d026c06b72ac141f4e788136317ec711991dda1fb97e797b59909e11d69b953ccce65a576ee2a4fea9801813d6df09a9cf0f0198a80de838300f630469b593841581b8a685f1644e98ea707a9b678a4fd1abb28b0f1c1fc933e52fd433d96cf8fd53a541a67e3736e2ebe5d29f0fc5b4c6be69cc18b986c5bff7bdca01563067a602ebdf977476b7a05182dcb77e6dc4d4c7a327d0610e4a9f691f5df55b103809faefb73581fa2298efa7feed7d08b947ad8aafb1813c201f53ac771bff4b6ee618dbb7ebf53ec4395bbfa7aee6cf9802b74444b95bb17e9414e3255e5595c74a53417d6221bfe65404f79813e09866804d365ac4d85e1cdc778ae5cb5d9fddb4912dc8b5920e11f8ba6db4c8a48ffc1c338aed2e951d30bb927e5061cccca8418ebbec40f79f32d20fe767dcc33773b856a31d4e796ddcb38cd781ed75e3f8aac91f17e2a1ff4dd4f5211e7f6543dcf4f925f577bbfcdaef9d7425e1c5b2e0616e90de5f3b45dccd9e21766695b647e208663b9cefd606c765a26a6feb46a4998ab9079fa8e91eae01973123be280eb9465d23ba029e662f3242aa03c73564c2f7642c54ffee848bf9a104b100cf78966d53aadf6ee3e352e9abb0584c67f778a78c21afc369a0b7f7ebccb46631e597c491b84cd2ec445c245bb58f5e27ee226b19d9e84b23f0389e7958171097bbd6a3ebac61ce52fc268e4dad35b2deebba579b388057a9aa9766ca17de99746f817bdd55b65ab3f74c1cfc88b170c4751291a65f0ae7733e37ce5feab0837cfd787abec358282e8d15c5dfb6580f8bbe01e57fc5c31a349abcfeccbddbef49a7c89abcebb8d65e105eb09342cf9d43aaecb4e812ef46575c7bd3b243cd5e7eb2fa7bc17660c4e7b3617d5f078a63c1ab2d13f24db9f0e68f13e014d8b6e7f4e5cbfe984b777edb2bbf681ca21e401a04eb1cb51372d238e517face050ff711e8943959f6bb4bbf6a9ba6ab4f8c7dbdc7fbc383cadd8a5587711251db2dadcfae80fc65ff4e837895b9357ea3bcc43aa33c2aff5cf888535e1e75def696073e598417c7e7fb7ded9a3c9af4aeb4da1d283731a6981ee68c952fc1b6c4dfc06d9d23b60f6fc4230ccf637d5a86ef12ec8d11963fe714f3130b954f56f6d1e8969f6efadf52f1b6f5e3c1bd7b5eadb1e440efe2d6ab41f6b94cc9b6e7a6ee8334fe92bb56b6cde5d607eaf969cc270fc9343239d86c7b7566520d89471c995a93725e5c27a017d1055e413c4786e257f22026ee5fe2dd6f536ba1a609031f5964d10bf107c158418e3d08efd71e33e2ed3f667ad74ff2476c94f46767c6ef72fbd33f70281831c5deb08f902bff1b664afab3cfa8fdaea9fca4f6ea9393d8898b18679be66ba9b43b559d9917ed08cbd27405c56fad57ca05b2723951b9b8c43eb815c6f04bd275531c3472c0e38e388efca03919ee6de6764cd87a9e4a8aeb6a9c6802fbcc95fc1cb2f7b8cd3b3a0bd67bacf7b60e2e5d4fadd323602f4c17b84b12b7422db7d48e4cd01d63714dfc4ba0c189b1f2c97ba2ea578511ef6a5afb45e56dd8e0fa5cef072aa7128dd17e7c7eeab086df6af56fcfd5dfd4b31d13ffa8b9c6a70dd9375dfcf2cbc03d0f9e7f0c40abfc36161746d8efebb1437e8479f93251fbb9509cc11367d904fb8af28fdfc65e22ef48429cb216f30d956fccb209eab5b063bc7bd573bf44ec05f21fe6a5e29cedcf88596f633c2f1fcfef9cb45ee1ac507579fd5acff6c981e25a65ca7cd09107fdd3fe6c1446305d22cf6d95872aee9c40adf073f67818c757ac21eefd7a13b9b4ac76046bde5cada758370af8762fddd784e76795f90fd9516003aa76b74e9a6fdc7eaeae404b07e6feae4d6e7c2813aa574e32f7f4ca816b34c5f3e1b324ec64260f2ade2e8287b8fd8ddcbb144f3abdc5cd51ff8dce50fe05ef40f3e536c6ada5ec4785b7b83b6767eb698058ef5f06c335571821694ace0b1527e86de6e2925e899f5ba07eae74d7a80fafea3079f05cfaac1fe3bdd21bc4b52bd2e040b50f518e5a095cbed70d6abeeb7c57415839b6f0f03ed17ed01e5ff9b3aec47c53ac6387375c21c6b3964f375ce00dcfc795df718a771bb7b6654c3874f0a526e701669cc5dc3f139fe5dcc0188089fc3cd9c4d5f1d5e637e4be6ce700dc38a7a7326b9103e8e482ed787a8bb1e636ca3107dbf7db23e2e56cd2b49f9ce8fccab291a1621bd986691ef5fc30467fe20bc688bd223e38f8c6d7cfeff8fabdca675497f95c6e99be2f05bb76aaf53552e783b8b2a36cccf5fbc09635594bfeea8af03dc0ff9f272e9e8f60178b00ece2e5c965db24a1dc21700335ef527388b037aca770d09773f0fcf4e234c65c696f23f7ff954e3915301606fa894630063b8539d114c6a9688283c4fe442e342f326636e2f5c7a90fbe4cea2a8e642f5e5e3af8ef7984ffdef7d7fff0df205eaaf9d1fffb1dfe7e7e4f7cf5eff1fff0df07fc6f6fe33beb6d4879b263ca7d33e5bfcf78e6eed346b7b96f63a0da0cefb2b0ed06b6e9847fa7fba8ada6ead3feef70ddc07fe337d073176adb3ef1f177eedf6bfdfddfea0c74e68fa6a7feabb8d2fd236b4227367ca5abd6ff77cde1bfac51dc326a7ec5a97fa533a8f713d7cd64c65e4eeaece77e30c679f98e5cc12a3fb0348267cc817aabadae0ba01acff77efc57c0811ef67efe17aed94b65bc82c618ea1fae7aeb04f683527a0c3110a72e020ca397a26601279b01b9074a3f1c533d29e56c48c37ca1b838a4c2aab2d4417f54d811d520a4d135752fdbde57aa5281d7998ff147afdae2dfb834fb76887edfb2465d0a7b7fb34ec9c7250d60d38af819be3b237b391ae0e982763e0d5cd4e26e3136097f479c0a9e651be5bfe1df6a2374923c9c2fc9cfca106f2fc499d69be8d7f8a37475ae47e98db2d7be3dcaf6b2ebbedd76bfbf4a23449cb12820ce1e7aeb2df5b9b4fb6f958a5340ba19c518f204390ac435b62eb8770429edf589658c960ac7e98f93e0f593f1733fae87846b7d4bb3d45a7d9101b6311b69bca0176a9e76499835ebf08a358cf3da92885f48dc88eafffafef6116b661d75ddea00a37ed6f511d6f8017cfac88cb72b83ce3cb9251d30884fa6d9ed3d8338bc4d9894db7bd85bdcfdfc9ec4001f44d9d2cdecf63d9de852859b14a378cfc67f7a76f99fbf85bdfea90dfff77d0b70482579e2d55a1303c705e2f58035eb749e7050ffed1c39e1e2f607b089ac8dc7b6c94fef017fe5f69e41dd404df8b7c17b0e7f7acf14d75f7fff5bbc2dc83e7e66397b563628c44903e9b38ef437d27c758e35a618b0459ac3ecaecee242f8e58f750331a5d28f2ce6fff41e55bb767bcf9027aa2b9ebfbea7fae37b5aacdf13aa269ded697dfc326b437136a0d6a4b062fbe779f775befccbbcfbe37c597e598bff32ef8e7f9bbfc469fef77957fc69de7d9d2fff32effe385f809bf03fcfbbcbdfe6aff9aff3ce08ac645f7875ba09fabd39f20bd4e29ab8b5457cec17b7de87846f366b8dd7ac7bbb4df988514aed9dbcebd857de1ec02f8cecd83ee0ff633f669a57827875b6d196f465ccd7c2181d8bde4f49c311e54bcb7d02b1513bf1228a6718455793664d178d13a87114754ef1a7f6d8fbee1cb0a6b66cea6ff7427bc27d4d9a1c796c114e6e6e1f10a72edf14660ff822c1d6df2196b80bdcda266dbcba5bf01572f9070f09f9ff8f97c779d03a5553dbf1361ea91acb5c4e91fbfe33de627dcb8d277373ab23923456d36c37a1faec37aa8b5f76ab31fa6d5b8cf1c3b376e811862eb5ce23c4a2f35af3691a761d44182b6ab5fe67e56de614eba972b2498ccfde8e59297dd6df17ad15d99116dea03d36db433cc23fc77b35eeaa4deb0ced96d471952d9c6d6611afbbde5e2f8dd0a90ce0188ad3d05d10c7481621068f59b1d6c23d9c398e5d6523bf5d169cfbf1e346f0b174276e6949d009ced94ceb0443ced0934d483c2d50a760be5e6a8c4166697151b6429eccb226ea6db0f1126dc6ca9899b4a72458d35437e198302b3c4f701f62cb3a0f297e39c2eb9ef066268e53d18f69c437e57a0ff11ed66c88fbfa1ca1cd99d8bcc3bc565e297b49cd0fccd3c84fe6a38d68ff433538d33a4da0f62663d7086a5bbdb911be6acc419744c08b230de693ade6f7cf2b1b50fb5dfcd7556b02dadc00bb555c3546d7c07929489fe6d795da20fbdf00edfb434cf574428cfa3e169af3577114f4e3fa9a78219d11d375df7ee0e0a7bd4bb046c5579d2c9584e97e865c526dc6d62fad01196dfbdf55b1fdcf784bf1cedee6d45c934e62bf76d44ee625918ed970aaf70fc275ef0fa83ef4957d0d7a2b26625b9c69a96dd7fadaf721e44627ee02fb4be441ef5b280ef252eb565c2827f3bffadddaff6d2757d271908017208c74f66a2f5d8c35f5fe8e85354b8638b346e1bafd242d4e7806e55273469a6fbd7fbe3282a0a6b880ed7cf09fb5f2ac4ae3285fc777b156e057ba5defe489786fabae98430cab1dd7c6eadbf5c80b528589b7130fed8b76a1390d23bb42dd9525f04e87a5cf2e91201e8bc4547e4e9a4cf9b6303147ee4895a752e333d26ba46bf41a91da9fa929df0a79a6dde64de1a6d2202c1bcc65761bdabfdaeab1a59cc655d55240def14275153c6b0fc9b25f272cab751ba48aadc3be191ef03c48caac0dfaef4e3a467804ca1f9e4b7c5f6219fd9adaf77eb7f4c30ff22313bb7d4fc1bfdbae77fa5b552e2fcb2e97846246d6e992e87abb13e8e588e6a2dfdf85ef50eb1f14e0f744e378efdce6a97a467168993f3d43e7dded5af18e1c128c59ba5d567f1d7232f2f66eb556552dc425baed9f5b6597742260d685f2d123dd7f5dab9f8f76d4b6e6f6fbd7537ffda4b8ff8dd9e7ad1fe5116cb8e8923c6e8ef48e45ff7daa0dd1f8a7ef8bf437c843e5ffd275ade5ee427f7fefff2e79e82469e0578ffaefa7feef05d4671defdbacce6577f0eecffe5ed0012928062d3076f959a0ae6fcad1c76ed8d7f9b641ed22c5cbc00cdec5bbcbe73d2fc329d6365d4a768a79880c8c17fbc378713b63de06703db03ee6d93431f8c0565a9a85853c3326e11489ebaaa23a4b8cc5af1ba67e47d9fb867f049f9d5de35d61d17e8058f3cfb8fd87f451a9beef437311662671dc7c645a8380a9be94d986eb5804714535911a17959ff5412709b4a8e8cc3f78f8cc3be0b558536f9da176a9b7dcce8c3b1d6ee3f05a51fd07c4229f961a7f767296e21563abbf2f14ab2cf304c6d9f02f15c4d1bd381be199c51cb5b708e63c75c8f56480dd9318c107eeef659c5da0cd19f2076d8beceedf2f13aad72aa0fe7446f9afe0a6b78efa3eeeb7bf3937dcd4d7bfe17d8419fefa3e230857bb8d8e31f77389df725e100b36c30ec70b3837cdcd8dfbd908bcecf16ce2bebcada6c809632517caebad6ce701b9fd9a3a474eae8c72eee235c29cbb9ac38afbb03800f655ae2afbdbfde7b289efefb70e36b657a8bc991dba353d97b72ec6ab5c496b5bb42a3607f919e9b23c80fc6c275cd911a75463f6bec2fd3dad93581b4ff34ee501bcdb3ab82cd5cf51ecee4f6394fd8fc7e8cf631e2aadbaed8662a91bb03fcf17e4447156596ba4a4f340f353f8d62220cc493de2c4e337d535d7a725f21b3e75583323f83873a94e4ee186fcb9f91b6d81df23d2955ca49b186b15afd2d038d619c578994f9804b9a25825f00a249f056acda2ff33958f787edff787bd5a6afb71aa7472b7bf3bf4055ae2305aa74cdbc8ba9e0bdf4b3918f4fbfc326db14e1d71d5a2b9f4630f767962dde2d46aaff72946bb348224e27c447d59a46dbf67abfc7e65f5beb8e2737a1378ce2bad83943874daf1c2071f5b408e6ff564aea8be5ad965eba0413c9a5e172bb2a932d0823cc7dbc2233b087264af57d47a7d238c50618753b4795eeb46e1cc8ada9fd94f104fefcf0ca86f9fa26ebc0575504f84cbcc1dcc6b9a2ba5c7d0041d61ea0b2334f0ff03f17836f9f2c262d1aeeaec56c700b9c5beed7f7bf769857af6e6e0dd16febf777b375b55a948eef28280ab0d2ad80ffc386b09f76dc7bb03fe3f7b8bf7ffc03bb85cd5fffa0e3978c766f08e18df61ae224f243087c5197dcf79b15378a48262f13c4b3cfa1d61f4e711e6c232e404dbfae47315b517fac0cf7b3844681f801e2c7ba92dcdeb613173d6cf93b0f66746ffffaa0eb5f731607f7c43ee14aa2ff596d909638dcc89ec0370713481b6b956f63fba0d3225bfaf19c7fb95a1dbd6914f1aa01ebcb8c6c4eb93b113e1ec24e5c5ecd05d67c85f26daa3f6736ca5f334559c17db0df987cf6c4f3eab3916a855bc6ed1b6c8db0cd7e783a0bcf3e309f18bcc5d6427fffed960534f1113c24fa431eaadfdf0fbf399dfad5bd20c9f5992535c6cf38eb1ae7cbd6b537cd7b804ace7f38287e77e6e2a7b529d030a1f30bee1e1745ddb38dea9dc7270ab33a21a6e87b48a4346fcf6e0177995cfa8fe5b0c383ba8e637ac1e0fbaf61f79d03d66849f0bd0d04897fbe22d7187d80511501fd1f9a9fd45e2e0b50e568c3aa151b641dbfd7491c809b2b29d37d52722b0d4de221ca7dc27e463beaec19e70965d78400eb365644bf2b32fb5bfc298f12fcc470b1e65fa4c7e2fc9cfb32edd92b802b6e115b1afacb000731a0bbfc33679c5e3e91dedb7b46ce13c1a62950a1b392a2cc00770736395feec8eefabde9df06c31bba12d72d7375dfb4e5a20cc0ef19b4f9fba6facdf57c0000aec9bd0618f97d97feb1b69ac1bc4f05af21d75a39a28d77d6756feef21ff64205e8e17d2915eef370ccfba0e6b5803d984d79af8f83375c62b5d54fd9b567228115bcc3b499c2e377c6326c768afbc408c47ae647679228e05386b3674368618df7b88772661d4547b290e11ebb9acd61169fdce6bcdeb21037a0e621189f31fde43f5d173e29013797bf79e058faf0cb83ba7cbfd6194ba542ba4d6eb7b8538b315eeff031cc7fb8d430ef194b88765b9d6b91fac5be26e62f68262fdf7cfbf93ef9fe50ed94bf335f24fac941ec3c4c99ae05d72ac23ce0fe7d41dec01d6c62dba04eb8dcd57caeb002fa178d57e96d69570a87619f71b8935085117ef0e1a9f8839a53dc3fa67b4a5c352e5aaa593a4cc2d697f268eb8acc5e7d9ebfdbb146efb80fb6850fa33aa2d3aa701da28f9e615b166d75873be6e2e29c5eb83d6a98c4b535a7201b52bbec9025fd59ba42f275d3ba0ec713b742b5b2c401b58d52109658389c491aa4eb17512debe5550ebecc59961007777eb30cc4524bcbe94c025fa9c79ab2b68250605da3ca5dc4da23b5b26ff87b82b5fd0ae1d4501f9ceaa0fb78873289779413a3089b4367c3eedfd55b6049eeee03ddead063eae7492aef51639a33df10db17c41b60d4f68c73b8b29f20d1bc14822ae4be4fe7589be31f3428df3d4fb2b3f9ed177755669f096c237e61a5bb067ef906f8a2e3162bbd14e7d956246f9a831ec3dfd1a4a9c289584897ad73c48f9e613c71679824d75762f9bd6224d709e8b5701fa8e1edf273ab6223393300a16e14a135b9e6ed87593e22de3fe7a8dfc1beb1dfdbd3ef77f075b3938dd6236a6ca9525d9cc2ca9563e571ca2b9f6b735ef587b7c228c76aece503576d123c527d839de1f6e6db62e18c392fab9343b93ed382d3baa833309d3355d133e332fde935b3c136d18a32b21a6339d1b8cf4a4e652d9ab50b329547d686d512c34cacc00eba3ce15275de0e48471b4b0f6c323f567b63c7da276da7cbd779e08372bfe877e5392320ffc26354fcf0b5df777382fc9ffd81647cdf99ff776f07f7b6fd5b531e0b3131773016ff1bea01c12f14f6fca9ca975c0f3d08d32e9df717fe505616e4a88df000f59b9c7ffb7b416b960d3620671d5f6b2e0ca3f4a163c3cc564c72bfc296a55e7b38bdefb53c7233dd5d2a7fac4438ef148c46283be29b78bfc8e17900b5b1a1cb97e3664eb05b23f0751f3a0df17c472e255b67cbaafd725bcf3c65d0b4e7e4238e08dd8629e83f85a2dd298c639f3d556cad5bcde1d4983f5075baab7f775ad6151652dcd93cfccbde3750ad99e69fe00a63101130bb9f51587a0b285b2c91bda3087781b501b613d7612f9134ce418a61ceac445ddf6369a92ee009c9d89f17a67b3add2e088ed654fa8892c9bd927f9006bacd98bb3938bfed14d23d30edf908f6f5e29ae8db63fb7dca873bc2fb5d3078e3930a59731ccfb220f0bc5386ac2cf6698ff156c8f6d49994d3a85aa4e01c7a3d1e3f1e53a8e8779201b706eb53ece1b0bfd333d1e35e56cb3d6ad77edd7dcf36d3c72761b8ffd81faee3f8f07f4e7dfc6838f34ae9c70e479e156ba46c3b82e30ff5c1ab86fda7a9de67277203fac2ba13e6b5efa21d980c57aca4813e73dde069a67ade40aa31f2e38bbf63e5b06eb258ff9892b8c6b433a1182b019c001c8a31bfee3ae3e9e6af88370b53fbc0ce2cd037e4ad23309b6cca65a2fc085eafac24c7e2c89e786b019dce818faefc53e1a7fc7d6b4e3087943133b7920dd5e5df7633bee8fb8ea5c5c29ae28a7079f62538865561c7bcc046c2661b66b237c23ff66990667882bd5e378bb32399d17bb037212b06e4d7175b8771ef3f62dee8abe4f0b1d9b245e29c024430dc5e385cf1f4d37e6ad1a8f84c6234fac1b7fa81a8f8e05fedfc6c3abfdd096188f135087e8456992dc8dd1ad7e3fa4f36fbd9bddbd57eb6b3e4e906730ba54e4db837da439a10b6b8c7edef15a935e61cac688f75f0167a81adb738d352849a7fa08b46d5b0e98af26fcd4f561a96fd0393318cf9b7ea03f3b535ff07c6310e691ed365f31475ed9cc2c9a0769ea9ca9f62eca9d47d260123ace24633d0f755f9f3456eda697dafb5588f1ca0f7ffdfd6cdad81c6c0207fbb58b77179bb8bccbac45be69e411b60baf223caf688d02f98b6afb401cd68712fd360e31e6e788b3d1f205eb190caa6770545c9f2bbc83e9f0c796ea068d18e698b7f49233c5c6588e58b2ece4b2a9036dc92e6ea9cf3371011b44bec6db046a1144b05af399ca13ea3a0a1ee91a0ecac723668455d618f9d51c5d7329b98a397a19d670637d444cdc03919f38224b902740d793f85f380fce55f30bb57b261fa8a5104719dac65944b6f15f7f679525c1fcf1e4a9da738c0bb32e54dc682ba5373471323f201b66b4f6b56f102087a6fbf5dab2d37828880776c2ad3dc2bb092319e6e7b4afcaa65fae6b5f39b10bb7d27839fc1de046239c59b09e6a0ce1a7248e80e55057036308f6c663e966d816c00ea3b655922753f2dfcb26fae37b92fbf7dcbe3dffda26550768d437ee78f083f7ff10a63190a4f57ddf072a9e457da0e2848065ff40bf5d64deef2b7f51750e4ec589e7b4b9aab597296efde7586c680d0efbc8a6f626f96644fa5777b10dc0499d99be4ff74b87e3a3da0dbabb9a0334c5f5fc7dbcf87f1aaf613e08620b76f175bc82ff305edfde93dcbf47cfa1f4db78e9b3e5bfcce3a9e665fed22f303f75bf005e314fb05fa493989b6ec17f7de1dd166376d3f0a45a872bfcd7efe78baa7d223ee225f03b621dba5cada709e9a8ec2b111f4b43d5be7b50372c31d61bccf10c18537de1d73390edc11f8bb3886ad5bdc5cd86dfe339b559ef88d74fdb30ce32fd4d758d42ee26989f96666552bc6e36e6142707aed4e7d292ded7f724c865930cb8eb5223782e5ea07e90691d36a6f2930907fbb47c3cb919e63259dec2d8641377ed05b7fa2b6503879f11da2f150fcff4ff60a3445dbcf729ee748af7b36b32d0858f3be6ca9438149875ff2c33e27d44f717d20bef7eb7f64393f4e9855d7c0cebb4626bec2e885378c8890cf88ba6a61875bab212f223bae271f8feb209df23c28f66e76ed8eefe6cbbab03e3023126ad5bdb21706b5acaef0d9225f092c09c983c814688702b4fc4b7fab801f70e70e604d4f7558af8f2cc3f3288c75f09abcbb3d303c571abe9c125ae178e67a8c68eddea2139c66a3a7a4796271dd6a523d6befe2cf15cd5f5ff56437199391b70a9804dd81a7cc007137353e7e920de3922ecf5e0d9c94102ef7bb0f6f91dd750b50ff990b3a6f4c345a5fab4ef5f3623bbb3d27ca1cd95f6abb44b6cd4fb760a03f55605f82d597e38728c9d49e217b1ff212de218393b9cb97f3cae0ce609e46d2cbb22059db07feeda29a7b776468d74b2ddc54dbfcd09856955e3d0db3a2aee96c546dd2aae2c0f6a2a759dd6e3ada62842be4bcdbf40fa39221661ff5fc59b1b6707779187b83700dfd31279734b6336ea7f07b462ee73322beb72153f73e34c4b88bb3cc6d92f9a1727e2c5e4a82dd1b70b38ed8b2371ada12ff35137aabe9ead88f7722a13b247495ba4d23cf01303624d63bef690938dffb20af46fea9c81df9a056fb5899806e2e4cc74cda355215f4396ca0f41b5d8dbe405b5414ef86c26bfe4ed8ae5a5e8f7b4aac11a7cc464559c7424c0ae06bf5cedf55d4dba979d43318624ca43b5fe49a721793cc1fd19d6d666ede0df8a2fda9b638d206a68206f2b6aebf2d66488f3e47c500fade2091a3389b63572d90adf9e1bb58a7146c4e1daf9842ffa8667a5f767d9c1269e7ee2dbaa7d36a6eb15c79c9d686c26f06cca6b1372762af6348db9d6f67889ec50ed6b95c1004797b76ee5858469b5ca80ec2ff2e52f178af3d7d984b41c4fc899efe9bddafe4df351d5ed278437cb253d7f88f71bfa7f56a72de95fed71afb9c50f8c1bf6351de27f715e54069d496aed4eab0670c7c94e9226c97bbc0d4ea0ed8c67425eb8556652de1e7878ba16e36372a6b921771b8bf478cabc003b6f9fb8fa8c6c715f060ca153f319e0a2601f994bcc77a2fe9d23acf1086de163bc1b930d965439691db4af4f885748b376a4ea36f3c48f7838257e33ac3b4cd14733623a87f3700f7c0fc18bd20ee23aded3e0381d6e317fba979d712ecc2b4ffc81e72a221e6116e51bef9ee72a1ac73bc3bac537eb778a7d498f749e06eb03fc58c595a4fac584b12d39f174b28792eeed8a57884d2a7e2c386fa601d57f8f6acc71acd2f6027bb3e21c1868cf04d15d3ffc0fe71e7037a1f62f68863ab896316f25894f2a5063676f88b7e993c6a4b8d9a0f398179f3171741ab34b2580b798f4f1c10feff79a01275c5e1c49ab6d3e95bed28ec5be286dc44166a68b6bad00ff3b1ae3ef4c97bee6e47c95373d480bfab53062dc1f2b1e2e6f6b81745c991373a66cb4a55d502c0db1dfd25d2b0e57f0cdabfd8674374665f00fe0899788af7e242c99b0d69a5742cded67a5cfd688b7c40b2c4e63d3440a3355f2f00d785b7c2b7e39353837c7a8859c47297106f02bc6049e6be01658c4793022ae2088dbb2586e37cf140f4c5ec0b6002dd8c0631aaf767caf91134b906dcf238d23019ebc43471a77a5cd529c038f38d7a76a7f313760fb70795e130e266d711dd617b255451a7e287b212f5cc6d98744cd1cc5a10a7529278cd507b51fd90bff8b965b1a8f602f12377d0f8bf08f6abc033adbd78ff8f7ac750b8bff5b9ba6319fbc0127dfd8a973d20c81faf9d874ac85ff8b72418fd056c6317e69f6fe8c9abfd7d395df6b6f87dabf43eec972cf52b4a9df6bd4375df115f6bdd22b9d668f63eaf390ddf6a9bfcd850d238e374beed1fe17d51ed7eedf9ff522ce3ed6c4cd636d5a5d23845813d1f9e46388683786b5db31dc1bd97b81b689c843d2030f1759fcc767e32ef0aa7d4b75049f850b3e6f45f9811fc7a71e1397479549d2bd32fec37c03de41180ff47f997fb7efa441971207a7b771632e8ff19e5b54a3a13413a14683b4a9aff89dd89fd2497a3b0cf9afb5cd9717ffb13fc4a03fa42dfd11f805b857ca69f83cfc36f4158ddef6abef78e1fdf7de17a03a7b8ab9a45d3c4a696feed78d08822850d7bc3847bddc4c00be3977dc244f0ed06fc5536521b648485d57a67cc7a9b34f4167f01cefa331e26272d207e75d0bfd613beedc267e84c692c843c03b6922afd635defef39e409cc08c3bd1a10efb43fc72a4dc525aed65a0704a69e25639e18afa3d44e55ba78c27dd9aff1ed6a97bd20fe14cc69ae8de0e5a6f13f81bd4507899f78fa175f289cb12cf43a887132bb9dd0c71e09ed8492bb9525d97706233413e5bc4b5ba938f9baea3e20fed887fa1c82ea75bbc49f1950db5b844ea4e6ccc31cd49931fb9975ac533998573d628ae733b3163d083cc36c4195460ae78c3babe8fbee4b1ed02719c076f9d927614c371e59f84e558d907cc7d803e98f4a36b658c889342715ec494ffe9eddd6c45f33cc7df2fd653e4d512ad81b1a767d412f19eecc405fb4f023f8939bbcd0b6bdcfbc22d7061f4fb90e24d3cd23c90820fda211fe23d692f31bbe4c0f39ce5ba362c959443c59a8cc888c612397b0b231c61cd632acd5ad532154678ad9187ad3f9397a45de609158390fe6f3b998aa3f2cd73394f5f7abb52069873a65ca535a8afbdb52175dcf52371080eda8bda81a8eb89b1bbf6cccc3fc4eeb446f6ed1dc2fec7a6dc36c4319927bb8474973ac847f8e6d274cc35e4632fdc3f1815c5ac3b7e5e92ce70abd65150b8135d93ffd4850cf11466055896a0f082db37c2b878d9e378a4f57fb6093ed39c2be071b5f8a3aaf709e33cc8a0ef5880f6f646ee25e27b0953266dc841f14b0cfe91a7e304c09ff71aef3437eb25427b5fa40ae7112addee9c456a6d723abfcfc43137adcd86ea703bf243b8dde658ebf9493ceba9a5355ba66536a67afa434278566bb2e788e3c2dcff86d15ae347d4af6d1f604f682ef16ef2aef94703a5f3dedcf11967d28d52e496ebcf69f09903c667ef52e3bb9d0372bf2316988d187223245d3c22aecd92f441bad62b1fc778c69807c22dae08d3b48718c732652eb3751dfa7bd410979cc4789438d258c4d986e2c47fe4945b08f91a6f57ba06b4c2987c0d98bacf652a202e9e3a2e3300cfa1733f29c63a8c55df8721e5b04b1e5a11c4c5fda57df840feda73bcf79163945d6235b7c4156c6a15e39ca2fe40bf7f29aee7a555ec97509304f5f9d985291dc6acf5cb26843848d6ba6503eb4100f71d8bb9e4859d04b46f2b9ebac7e355e370c46fb516c4b435117beddcea74c47bd570d2969842bd87e29186f342c5e52e66849a5eb03fb115693996bb0de0deac832bad16785fb56ee8c5bd3bdbb08ebcc8677d3bfa7dea2ddeae2cca01f6bf9508ac8d105057905a87337d633475389d6b8adb10e372eb6da831a84b1e4c8badaa3578d67cfdc608f17aaa0e624adc2469b6ba2aae029877fdda2f89ff7901fa594c4cc5276a56219e37eaa2e62ec70ff184bd4fb88e548a1a732ca61b697d6bb1974d8d7c0fff107f5b58d9c2ff3a0ea975f9205c7e991753f866f1b1e6a48977c3fa97d618ce55bb98165da830a4292f0ac00fc13864d84f91652adb3015b151d13e0ddfcdf16c3e9650afccc4e3ef6ba27909a513b58c4bc55d29158f25c4e612173590bc989ff1bfc8b79c876437849867ea2472d446464871fa4fd9aa58b1b7dab7e483c29c8273dca45af9345d1929d4b016b8bf94941388d02fe0b650b579b1b9b165a3f1599f899a3fed5bbc7b3530870ce7477f2fd6e6f08e8d3477e2beb671bf7a8ff7bff11cebc7b8a1bf6fd65b99f6eb2db18acfc8204d79d56722ce0f219f32e2224d91df31917bc0bb96fee52ddeca76c861cfcd3b0efba9e205459ef6ca2ec8cf7d93b4af7dbb9f9de3ddb8546d32139bf98881411f6585ba586bf7a4b9c7b016ea53a2cfbd5a4e2c1ab3aff7f7fd5cb5af2a1f96697d22076320ec1dd7c1153913af54ef5bfae135f251fb0d716f59fecf6589f1c075ee80ff49f14c6b856b67e3d65b07fc781370fa92872b1cfbcf35f22d72774218b2b416ca669aa6d302e354cc146aceb0558d58436e072b554f2f36578ae555e6effe394f4c1dac7d639d50f6a4c4df8b4612ce9810f69c8d1375c43d507fd6bed6a13791eb36af6cdc5f3be982df2412e9c13352f1e0abefb019d9111e7121be76c871a9f7daba23ae6c71655ced7d9b92e2f056adeb69d04e1ba18d58ac3d3a372766cdcfc742f1c7870776ab7d7ba0337a954b3c8b7817effdf725d649b229f1f90cb89cbbd517de685d3be4d50d431e62f3b2d09cc3fcc639ec696e68a51fbcd4b80ef610db9a734914b6def72eb2c1fa894ef1a16a7eed989f0e64a72fed5b1d03ec894a93df2cc107f3a42f1e689c44d692bf242abb40fef7685c0a9fb478815b5ae7ee4fb73a88ecf4415a30d594b4ce8aa05a4ee67ace11b7009f5d24715667371fad9c16582b290eea4c50f5fac9a7f4154706f14b4dd73ad70278955576c6d8a18e1b876c8bfc739978a05abbd46a2fc807a1fc07e2935d7609e434af136ff128c966bf4ae3157564c277c41330782ff02fe35cc57e0a1e984958d3d9996c52de85189368af256039a652cf511da3dec8c7b17fe3c155f3f5403895220d34777d6d0711e6f8f6f15662dce8f43637a0c6626e44238d63bb4e5ccc5f51fd19bcd318f4a1f9cff03c803e545c4a2a5667603d65b106fcf0adeddde623a1d8e836a2fed7f815d9d1de0c31c10ae294614cb94fae753003c074495bfb17418d7c15fc4c717be2ff7fd27afd68eb3c4a6ac7806fe29755df781d6f1861eb5747baaed13e007f43f8c02b6c10d71cbb2a8ce5d758c376031808beea7a1b211de4112b8ff8a565972d35472e7c672a095f67318a01fddb3cb40f9eb4884b7e72527b14d6c2cbdd6688459eaa9a919723d94dcfebc716ebd6da43d5ccbefa453fd9555ee9b377aae14aedb8231baca41a36ab0dbee17a60bd3f2b3fc3fa7541fb11fb4b1ce356c5e08264bf3926f736a7bd407dd5b40bfbe720ff65d17719ef7a1d35e17110f361313f8d480b91384f4a231cd1fdeb267caf11cfb1ca13aa0530b57fd8ef4f59eb56c44d63d5236dcfec2eafe20b477449fc1ad685f490907b5c247fe0352f7a9b71f178a11ccc91614de36a3b1be4a3f47a79619e00dbd12820079816c06b9027ae74493f1478cb33c00a7f1287c6f0db2b3f1c531c6295bf926d863955ff126f63c2f30e38f5d932da81ed0bb1b7d649b8a1ea40a53f1b3f99d1f0db36e0c74f3e74fef2af36a074922c7c676443ddf6e897684b7b43eb46888d58e621eda7874540f9a8f0a30ce2613db5b35c1e292ef07ce375fff5defb99c0b908fb4a8475a68a8f9f6a836edcf311f1ba0d6ce34f49318b3cf980fa5d01b5cfa9a3c7e4272e79cd2937b0aba48df511997fe97f8b43edd65471ba299f3730e2975ffa5bea0eb11ed6c6254c686d24ce52ac70bf456ebf8c77a8af6dd03c5d13fe8a538d08d93cc7d1cf5a59df78ffd5fa442e2a6749fadd9d8e819991ced11e904f842d5047cc138f3fae231edf71f29beadb2a1b718dd9c9ad761b85735ae689cb7612f0e7067e2f619a4cc4491b881da4ebc031ef2d1fc1cf221b7a65abda711173d648aadbcfa48add2e7387e6d83bc69de2f211b125dcfcbcf9652ae6091a24c333cf5e8da81e5aee31f7c44f2603fb4fcd3dc006605b14069e69cdaf2a97376ef32d61b202bbe23abf3b22cedd1560ad4ae9d1be28c735e2f6eeed3dd00e8fb496ba34cb406b991d40370db1a09dd6c33dafd1065d5d2707aa05286f7ab9ea3bb82d3ef13c7f1ec41158d9a8f32f8a738c610e6325596b631fa5e55e92aef8b75adf05677b49f12981be712a2dcd6b0d673c71e1687f3e495bb77a1c07c3dfe5dcb7573961e0da4f8971889f307d4f5d709b13dd3d0e71edcf0cc20fae3a7e8f33b413f7c94ed0afe39f32b8c3195af19e5f6efbe2ea728f510c5c76c33c9ac44f88cfbec65b7d7fcbbeb4493633cd6798a5fee0bd86d2252ef65af3db228dc4552ac7b7ef3e3945ae6d559b343a6e7e72f8a6eb81779b9278f6177e8cdc16ad8b36535eef0e9043b3439d532c49a3446bade9f71983f77df6ef239e3f3c87f4fb2a3f1cc55d50ce0718b404f7d6e4c6ffabf4da32e0dbf4087b56e72d706a98f19d3652bd252c22f2c219bd3d75ab0b1341f019f5f31978fd3fe3ddc12da78764d806ad07fa721a939ee0226f87da0141e5cf46355f51ecf892bc0cc6bddfeff290c11a987cd48d311cf75dbd3c85b4d7c78a9f24fa446d13162d514f1b350a569daa7b063eec9d99623cd196869e4b50efb4875acc24db781457e376329837bfd4bc491ec7346f0c8979d0341596f82b46b5df8399135bab736f2f424cce3c50ad4ca5b43cccfe2c3dac39e66053ff331dae052bb6fadf036c99bcfbbdd80abb9aa356a6cd88f337948f97641e70d5eeaa61bbf594b4efbee9b61a09e221d7fbe46e1d157b76214e0e39bdadb11472b433adebb03ced09b732b7e472f08e536c6fbef407d65f651cebfed80bad9fb949bc6ba34ff51da9545a17f347e671fba0b92e113311a15d12549cf4914fafc8bb9a53bd69f5b8218dd377891a9ea9c2714a37369386f67686f8af226d07fddb3aa9c297a9b19eadb24b8ef8a237382fa55789d7636af846bcdfb8f5ee0ed3f146dc726b1ebea3f6d5adc6d14ea8cef45a6bde296a3f2b4bcd7dec5f233a9bf2d53be524e41472bdc912fd55debe678379b11480814c82f653736fdbb30b722c295b3249c5809beff8b9060d9720d5312811111ebf203e9cfc1faa457b06fcddc12ddb9ada8f1a084ce179fbb9373742fe6f7d5c1ab3ee8b067c8c5c9f5dbc3b055f7cfc8ef400523bec48abb5b490c7d73cbc118f084f67671d2b783991cd6248888905738370d6a7959edbaa4680e24aed27f96e4bfb9febed5c876f2bb684356af4187dfdb622653fcfff9cb9a5415ae19a2feb4afa282c0f4887fbbd442e60918d0f58839790c67e766b8355b7f18f6d58f36ffdfb72dfbf82b487ef7cb9685ffc5f3247793f47fd899336f7733436c33741e3674bb0e14de78479bb79b975dc3b5d533b2c076d9d2b0e916d483edabcf6500b1a319c4bbb50f727e2d0f5feb45af376e2a2ae5a18ed086bd3d8e493aa332163a32ffdf52f7b8d9a97609bda8e1b59f20f7b0ef3d22c31a2fb7d6c896371d173dd1affd7b9fe1171ca57b0fd8d377202bc0530cfa78c6b9e31f75bbb2c738b7dfab102aeeeacdaf57671735c19cc178fe3e5f0dc58b61a83437bda2bf1b6957cf6b56f52e9b568433476827b79d231b7a23809f4c113f6c1fbad0f36ba66813825f4770b06bacdca861a67b41ec596e9f3b9c4f1cc52794c86ba2db6e31696243ed257e2e145fba251f85dc0047d488c8ba86bcb932b9bf04ee3b9f443adcf5962de0674a487f525cd95f2473f8e21f1ddf3c68e7cd046298cb0234e7de0da8b6c1d5fb103c44b05a3279362604a2721450e3d85b3a81fcd00b9a7de292793a6f2810316295d4c0f038c8ee2c8234eb287b5d09cf30ad757b7af836f6b551d486dc4c33dff19b06bb8575ae32dace5c311e75920a601d5e43ed7aa3ef5cbde8698c0276b12511cb5002c4628a93622ff4d7bcb5c2add66d5bf9f686b836e7e6fb74c99ff9fe6f9b49f0760db2d389d53ed83e68e6f66033bb1b7f55b1bf7d5bcdccb3bfdaaaa99517d6cce8cbbe73ee2adb3277f20ca08dfa59e4bab267c9726618c95aed2b46888b7a938638d40ca541dadd2fc779faeb86767eca3443b3ab5264ab337b143577660dfc719bf527c46e4878b506b4c3ec4fb00358583c39023a3f45a7ffe289ca4936e9d0794271caddb613d0c33e26d42d8f04db99754b36763dde23edeb250ad8f46e17ebbb8090ef15e80dd69177e8c39ccf9b4f563ee9fd14fc8fbf7543c7c4df649335c671cf79cda9891cd78c698e69c7842102721ea5c709d8b10cade9e564d38c3350dda6882d99230e71c35947df6204ddabfda577aef6279f2c96f8c8ce893d6e1138d71c786becdb46c66ef25e5ad2d755e03bfa6a172e4d3babf8ef99f92877bf22db3ec773f0eadd291da33e24a33e37d6210feaddeb68aa333b1c65ee4259a2363bd2dfc1bde0de2df2bc0453bab8ea9b9c09af02321ac25f66badf72fd365cd4c7377a2569ba979a0f63417c4086b89e7b7f8603d4a8837d9dea4b4af92ae7c9ad375d27167c1dadbd05ea370d01ce2966fe897298c0cf28e1c50273ca77c2ef8abbfde019324f8ddd92bd8e71ce3af3587582c68563385bde239e080b8dfa8b9a16260d04e2fd906f4bd4c761bcdb3b20e507bbc09bf7e5318739955ca675267e50372453c2fb35f9f6afc84b35def0bc2437c82cf30d9aa38ab116c6413993fdb86528f87e60cb65b6adf25de36ef54cba262b8e08f1de39dae9732f4fcce37f69d7f6a87ee3ac7bd0bb999749ddaf217e544a8aeec6d6ea06d7f3d62bd8bd6fbc8e736e016d41963d27935b16f75369b94b844416f9cf6aadfc481f8fc051bef203617726299742b7f66127efb9badb017aeb615944fcb4e126aef9c82abfdb55f83bd2d0cfe9eb57151637cbacc4e68236f9ed7d3c15ece836972557b5620fdfbf33e1662acf6eaeb651b1b93b7781bd8f79ce7076d0fa01ea0c353d458a13ae00c6b54c48acecd43fc72220c31f9fdcffdf8e3b8728dc14f9d8e7e2fb2efcf9f625b909d5330cabdc0f778b51feec9ce49b30dedfd6a3e944678fc62ebf21f6c5d1b6d30d83f6ee7fa173bb8b76762e23f845c5e4ecf40dd18d654ce235b2237ce2fabf239d627c25c17f8ec627af3b54a3fd4f941e25d62f97d1fd4fecca2b37495cabb79df9f9b0b3dce7c4cf7a1dd778c5f4e74bf987fe9dbca0ff76b8c5d8a6c331abe972bbcafc2755ce99d4b580353c080a14d016b8730d52dacbf09ce85df671d07257e4a8c454690379d463007fc38dbacc827cf962a661fcee92c82bab9fe9bbc61aca1d47a8211e523b44fad7d77b5e7a9b69ec49d0658abeba3974630674668afa9eebe63fd7c142ad66cbe422c3b751e10a76851edd4e03ed020494397edb1e6a9d3fef13cb219471d9611e2855961610dbe1dbac43d74bb4f7c0af846166db17ea7bfefdbfbc41efd66fdbe240fdd6abae15f626206aeef7ddc442abe897df25693866d1a9c86fec4aafbeadf5fb0fe589c926f7e8bc47c14f27667fe002bc9cec974f3aa9f217f98ff3a2e97fd7e736aa447b11a686f8a765175f3c5f41a29502f8b5f890bf2f44eebaa6a572a5f590cfc41b2c339d82c8aef1872d08933f0eb48e332011f51f3ff923681d24ec0f8f00bf9d9eb14b11419bf547ce0678b7e8e9e8e30e737db4a613c8767a54c9efabdfd51f4dff8165b87537ca7039be8fa7f8aa514ff2dbef68ab19c1073255bd8bb282fd03efce057cf299e115b17b56eeb263cc42fca66bfc46db1075d7fdf88b758232c9a113c2bb0fe2a785e04f0de22df88efb1b584ea359e6fed3f293f9e8346f89ce23e110f0db4794399263ff72f37ff73ff163ff5af9acbffebfe55df9baa5c9a3f8af72b03d774535987bb6f43ccf488ece2bff4cd1ccef1b1bbe0e8ffe7ed01d75f1b65e6f0dcebe2ed97b5299cfbefb9f3d79dffe4af271897489ae0d8af996feb622add9fd65b62dc3497c0963d785fc758edddf03d09e898e93ecb24e44176e24569f1b625f10d77addffbe21893ff88294fb03ce95862b9df0ced9b43bc3f7cd9b3c6daeea471d67cd219e2fe04db17c481729d5c51279d95c877419cff85013537a01ba030a1b7f88d2df1bc0b3e48a38adff5c95871f3298e05917cf01fc7ee275f6503f66a168d11ff47b5b6bdadd39f3b4ba55d60040ef31517bdc351e7f7c77f1bf86f65b3c60a5725b6c8c56272b0516efbdc8a72e0758e58d12c785b07831c53261ebed8584f3fc7fcd4dadc539ef4a77e5e76c597789a7463f3f0a1b9dd74bef5ff601b2c33c37df243bcfc0fda9007eefa4b0c4d04e8db438ee42e8ea3fdc054c7789f237782f1b9fab36ec1d64c950e31d8d8554e38cb898e23573ba8552fc1977a8c331d0bb22ab2ad9793af71f0e64b8c0bd6f75d8c4bcde59bf6903e07a371bcbb28fb1ef6ab8b8e3917bad63b38def58de2d442ce1c3e7928063646918dff90439b0cfc8ccd23d69f12afc818cef1402ca6141391af35fd662e56d407c8af962e7a7b5ff936e63999eafd1dc6896c0d1e7e22c7b393d8720fbe7d8b18d20dd5d58f6ae45f415b90573ee0d7b8b599630eedbd80732310bb0de9e92585cdd0a72b8e91c6e2f5e71ec46d6a83cee54d07360fefe8ace97f03d7e4abde077369e978de6e107b03fcf2b8f4e93c3ebc2603dc43f13d2745eb65ac7533ed82fada9a1be477d49fea5c16c5723e656e2cc47bbc5d116f72ceae271fb96e7a9b7e1c7f1b57e0ae4987794a2bd139b402bf7f951ff6c3f6aada058feaf3eb0b33eefc9b8f78dfd2f7b5ebdd66d00ffdd95cf4eb86533c89e2d7ca07118a63641c374191418dd22ac37f138f57f608faddc2045f41b4bf810b58e9880a47ec38fc5be0f5e015fe9de1f52973556db260c0612e94af67c74d90963efc06df49773e6ddd58a0965627a07dd9c15b5d31c688bf5ffa6ca5b07a59eb15b08f9fe37de02a2ef36ce2e277bcaafdee7102f7f9785f6fd74e832ff7f536523bbcef35b6b8d24a2c0c6cf372e2ae006fb18f2d389be746b851e3b73ce1bbfc713f2f2b1e3a4f4688fcf7fe38eebfedd174e37443f7d971fbaaee5bf8fa3e3bdef90ad3ca9a107e3315fdbe728a1bdf8a77c83b9b0a554753f3d0617ea8fa6ad549b7dedffb3a29eebb91af63aa235a47ec65425c52f61c74d4bcca9f8d18f9915d433a20acb6545d90b3ca1a8a59b6514e78f0da7eea6d135893a344e1795a27311a43027e7726f28d35c41b25c6e5bd6a562adfc7f3e444f153b6e3a4e7d72aac469e78857b8fb358abdc4dadece3f4f1a0715b25e27457d96534cc8baa35f3487885e85298b3e17979fdc3faefe27d40389311ecb191497db740be03916e4c9d2b98626d8b086ccd416aff36309e46fbaef29924d5da08e23b92ee70cfaa9ad0a4bcd4ca2eeefa2eb613b7b2691d8bf3fa0e6ff5df7d01f9932f9015f767ce10bb473847d4a7ccb48e93b6875e312e17dcec4a9da3168b8cf4dcda0f895c55d29fe91a38c0c5cea80609621afe08e603f13c1bb1e22ae11ef28be6ad5b293b44aa3a6de20219f8161fc423a5626d0a3b2df6c42556a3cef752e59ca5b6fb7bdb287d011b55b45f6dd442e7f6a98f6e9c77a8752e10dbfc42bce7100b846f65c86f7ba467d097985cc97f94505bead58dee9fffd056887d920d5266f2cf36c836a139b5613a17aae260dbafb61be5826b1e9e10bf98e0fcf722c256743fad03ffac3904bbe0e387755096b40e6eeb68a3e335b7f3fb50a2d643911d0e7c10d7fc1e97a1d8ba702bac7de4698b3613e942fc1a51dc5c589b33ed154f9dc07c9affc9501b9677fdb3109bcc76179f743508c354f2f0486dc333f821deb5d4c6b6dcb5439c94c22ceafda70bf67c1863b2c33f624886f30cfafbf7278e5fbb5892ad1c74942be60ab30eed5eed371ed4893597126a8b9eb2bc18d815d2598af85a71b51fcf965b7617fb4acce698f120981bdfe2e4b6b253602c17e8a785cbecf209e7c6a1a8db86faa6b71fb368d7fbeecc59fabfbbfb1886cc552d6fda7ec3d5a91af76fbf61eadf583fdeecbdc40842b10dfbf67b31dfcc22eb2e563085da553efeb2e73b226ffbfe982aecc6ff8fb92fdb4e5c69b27e250de0652e4b13205b4969c894d09da464158504c6800de8e9ffa5cc8894845d75fa74f7f7afbe3aa70c68cc2162c78ebd614f89b4e609fade966b637a0e1f6a7c34bebc85bf6f4d97ef1435792fc77c8f02f61133dc73d96b6c46883b5de0bd27658378bd1e8bb169e4efc9405b23a4cd59f5576935f6b10b2dd104f4ece3ba91fa17dd3a22eb2c853aaec4154ee19eff7eaced6d40cf177c16b42845bfa9d92996bddc51a5f49f6692bf68fa36c6f849bbbd60be542c506f563f402dcb2bdce554f4fdc7a0f582b17a3a439fa24b78f047f3396c895da9bd8ddb7cb816885cd1d7712d5b9bf9843df090b9fa2d998cf745a2858706bf7f0a0fc7d16fb9f6654c5c5187866bfe0df5de3972f4e9e51650e0b6a3ee5de27e02cef8b3fcadbcf48537bfc412052ff50a7d668ee8d34f8888e3b88ce3f6b09e4f03f02229a8ff9e4bfd7b0f74078d50a72266e41a11f939af09937ef4dca13046719cbd4a6e8595a413e861631f228793f1f467587ba7507f437e1ceed5bb52f5c3bac68bf409163cba987a1fa1e19eb9e65b25257e779ed2252f32e6d6bbfdce0fd39bc36211239f424dd404df43ed97c81d0a0afd05e956c415f0b7b5ec712699c8a552eec4ddb88d677674bf1a61ed9ea47f5763ada8ff14febee961dde53352f79168fe537887bf35507b3455cfdc213cf88a2747043f1075db1aaba8a3a48b850a2d0a51a773fc2e99f0522aeb2897b9c6cc4de5f373d358f42b9f226f3dd611057c438e01a9d52ede930bc7c898cb702d412ca98b89207602bdc449e4055dac338dbc1fa3e397b11c5b102b3d455e2d7294c08d52a5ff0ab15a9a59ddbd13c989db7aaa57286d0e4a7ff4610ee6dd73ff0e1fce981d288c913d71f0837855de64cb09ae5d55b20db056af382807e5a592082f29598b9928cfe9b66913c15b22d03f87e3b8eebf636ebbfb117d97c1bcc1b5bdffdc981a21786c9719f01a1979e7ecc7797dbfed427d8b3527bf3019ea9374cfb7c91d3e19d779112ff56c72d8d23167af6e1127459db3600ff1167dbe75ef52acd58965a85a6e66498e00f3a60a9f49af27ec3129e38bdc6fd3adece7705d758ec4643a609c796936c8d5bb6e98c035bb7cc1e0fd5aab6a32d84bfc0d7fc550eba871c3d82bc1bea4f82ef48bf252f6233a010dee05f24e957e27f0505863142c149c3606da32eb6ceb56f5f3f738e4816b908b7ee09ecad34b826bbe8cffa47fd760ad3f003ef99a1b72bd65aa4e104e558dc480e3b0faf361fdef72fe77ac9d97f3e363edfc52c0facf8ce9fbb0572132a6766e3630ee6b9303ef1470038b9aee54f8f7a57a17075898036e80db97268d0e313c5b2d18783e491e5e14cf9ce2d0d047fe8158f3657df236a84f7ebc425f3735fd118e25bc4252c07b52f6847897cc71b91d68dfc7f42555b8c0fb5f708194c99e5c56527f8a185862be757b0abc830875dbfd4ad5eb9bf70dfbdf7b0745ff0e3ebfbe83e0bb773055ef20dd621ec57233fff20eca2fef805efff00eaeff37df017158963b0fbd13efbdefbd7f283d9553e27e22fb850dcc513c1df9d12c133e6e8b90ea6ff2bdde10f37d1339dd00f3cd5ba8c9332ed614d87f6daca106f31bea0edf08f656de9f3fa11efe1eeeb605e4cce8eb4b08bd4a9df65af27ba4670ed9639d1e7cdf0911ef45f6efaf004b4913fe09bc944c7a7713189bee09fedb8626c77ef7842bae2d398bbcb0bb7e1857b171d119fa798b5897bf409cf0297a75645e720d9b5fb0af6a8843eff86e3b5873dd53b8f3c6fb6ae6db2a47387853c449aa03d69fb7a8d98d3d96ca8bbf4c003f177500c96113f1791a7d04a01d88985a089eb6a8978adec9e0c5eee438e6e6d04fc9021dfbeed354030f736d2ab1ff238e8327d57f610657ec5be30e78cf99968db50db2008f30569ba58c252da6ea27b5d21be5075cf79f355e8b31efe50baaee996496cc41005f0e99d7c8de28d907f6aa91697f4dfc86b852e180ceb9aae1cc0e81e40cfabc0e209f266f14eb6c2de9bd191cf07162fc5ad6c3de81d9179e38eb791a53ec3d4b93f5a7d44e08a6aa27c89e85038c88acc5f3bf5965827d16811ed44a0342f28233d4509de9296257890735edc821bf6744c5650cb147867d83b7407a9d3a01f58d57e579ed11e8bbb8ade5d8a615fb8131c4fb205f7bc3bca0c27512f10cd76f718dcfb3683acec7729b67f0fdc4b2f9f8b797f01039d1b7b89a27b11be08ac9d892a0fe730ebfd956425b7a80eb80576998597665a2ee34d38246e6f87916e05863a8d127ebcb101b65dc0ebf7eae3c1e80f72c74d7a26c8bfaca57c125eae691ade69b2f754401234e7575ed033ef904f73779ad927b5cd44b1d6399ea807eabdec7182b216fe16e8b31fb6e950e3126578b9c877526614e1f7b8d30edc1f9058eaf73d0d35dd100fd8651572caa125ce7e5334d24670ee62291354d3d6a031db52997269731a05781f6c05ae20ae966ce87ba78164de41e10493f4b374c1ad813fa7a0562a2ccbee4627cb140f636a29747eb2b5dc3c2839edb6cd9d25ebf587a28b5e87bc0ed72be8558fa8c5a1116fe5bf6134c554d5ae513f42cb441f8e377d329e8f53315d7ca7bfa051a4197bc5fb744cf4677fd9ef24d488fb9c817dd63df0f64346ff09e59b503dd65d0184c1deb8efd069bfd05d6a26743e9cbed1446986d16a8a37c963926ea13a69737f0173984fb1b9eeb153c8d24df366dec6a7e048f85e59580a72a71977a01dc5185cf0b9e8df2bbf0e2df23cfde0b19f55a0c7caa557f4c03fb2762e475bbc138aaf551233c2b80b7c5d2f314359c140e4acf26d69957d8ef95096d09c977137cca2e1fb5745893d7a0f9eb44498ed8545e50d46fbaaa73900370ebe38bb3ca10eb6feea00dea045aae5572edf6123506b8e8011fd57a5bcf55387d0bbcb96fe7b98f6bea2e301fd7dea5b6519afa6cfac88325b8dea6d47c88c38df0e061ec9a54a33ab1f4fb432c9365d6251cf6551937bb32106fe51ad6a9550fccc1c3b8bda9f6a3f89ef07a7947ec1bf02187ed95ff70069ae4ebe2a0787502d748d8db14e2c6bfe3b049ee7ec5615d1371bc0ded71bc007b78bbf985cfc1467e76d3e610e3b3965c40e30f395a3e6f517bbf6a51ff9ca6db93ca697791ea1f2219ae99de3d42ed90fd05b8b35e02cf2a43dec0e6b0450d9577c0ee1cee0613c563469d72fcaf79447de99f7c2efb196233724a537a92c62ebe03d44866da067b85600ea5e96c2ae362fe161e2c781fe41e1ed854ae67db17f471020d52c6d53b6230169adb46ee198bc2f5ef700ea7aa7d13cf9782860a93ff1678266ac68bbd219e4d9556b67d91bd19b0c62b6f11e37c527abd7b2ebf83f8a5e460d21ceebdd7101dea90b2dfb0ce487e554ae6124b03be9febea4123d76346dd6fd6aa2e2e0fb54a83fc33f130afdc16fbadaa33f13e07565c759af875bf3f61defa43c5e39501bc6156b52543ddcbe81634a81fd1f778f4e3578da5a89f37e4faa2a1a73f3924d89366e8a1d471ece6fbc5aaea48f25232cf2d6b7f8afab70595cfbcc2679e119ca34d2c394479b588bef40a9598dbc5b7a65b63a2b98e785affbbc3d7dfa11e70223027a115b2903d0547b54f87a8352cf9bbced8a387cde1bfaace99e852e388c958d879d5c80d3fcb618dcdb32d3e3b52eea9fc7eaa0bce7e64dc5ce0359a6b896bb07098ebd35a431c3fff7d46dc935526ead810e58f82e37ff4ae85b654634566e4c9befef304c6dd22718437e2dfcfb9b35a1c779b3ea6bc2357a2483197fbdb58d0ce6b2d30a385ef6d76db31e75cf1f5109bc09826b2067c39d5ff5ba9fedfe62af8fba9efbc3ab91da6a400deea2ed4728a3eb35f3041e45af5dcc416bcafbeef07ceb66be057e581b61cf3abd851714873b8f7446a662c42da4c1e386ce740ceb51ecf88a146246b5b146b69d85ba33cdf523d165ce1a451b9aef48fe96261b1c65c505f8d65116a7610cc81291e4778680bdf3567e0fdb6400d5ee48297b5ea5dbd428f44128c344ec87b78e0ef11fa1ece8fc31e54a7aa975a811a11adf01f19ecebcbbb8a255a327dacab058b23c412ee6dd38c62897bb8f39fb0761f98c7618c720b0f3e60e7622e9cb1ee8efe4a8976167c8e34d541f3dd7382fd51d5ff104b817990f37d43a5062f93ba7de96cbe7123f4b2000ecbd18371f539c877d4dc20071ff9d89f01683dfdd33adc8d3b11c3671ec6d742c37453fb3bc12d4b2c3b85fc6283312d9ddd0a17bcf45bef1db954c1fce88a9a604b6c157bd1d9a58b8dc077ffa8b4158c466a030a7d2a35363c369f62fd4661f6dc68e6b286bcb58971c19812fb7a8c42f20d3de8033c874663bf2e98a8dbe5828beebd6eb0a6f2b76bef9e7f4bec4d8c98037dac7f66d57cebe1fe8d18429fab1c45df766cca5ea4b28e98e0c5a53357f4f9a45397090cc2fb8c3c910fbe638dabd4b0c6f56ce03eb19943eec082ee1da30eb21f665b97dd457fec34425cb225b807ff045eef678e1cb7b9d4eda10c7b5e39e8d2f30be292657d157a752b1a428d4e5ed7864685acc5428d2ff1558d0fbc2f2cd6c2fe2f790a1e91f5dcf788893adf29623f900f84fb12937117f4d476e3badb23d38b875c747e90fb0da1ec28e6431279c97ceac83d4c3e97a8763588cd145ece64bee295aeafea4089c19fb09e5f35b04e679e7cde2c38817fb9031e86106f71e4ac9aca43d6b8400cab3fa97a63e22dfafe48b1369e804333c42917d24f5fee5d5166d9721fe31677735dc62acd9cd7fe53817dc959ae744c08ad067116f6ef480f59c4028339d62f9b23ae7f9b05d4f6183155cd486a282c445cf55fda4bb91525de1c6206850b881e0263826b0625808788dc2f9dcea186fc1941ef489c883a17e4bf621f841e3262e43aeebb53a961c8aa2bea530deb635cc6a68b1568b1a22649a0e5b4d873fb0f98e531b1c7bd652573ff81dbad612cee97a6f48089812b1dbbdeb5823c2c4e7226e7918bfe530dae3132bf086ee19e4b4d68464e5263d14bc0cfec0c5a32a25f20a19e57d6fe8dda8f9ce9e6a4f892e9f430ac6753d3b75f0c598388e7e4a3440e156a29e8aee8d5cfa97788f647a7105c8381fe47cdc63cacff662c5fd6b84e461791e764910dcfa80d9be803f2ae82a838beba6d5053f6fe3c857a8916eeac89c242310e1098d6cc8ab323ea8c6880c32d592b3cb6615de611f0284da9c7c048914ee5f8eef97122fe90f844d4d77d905b962cc13b990441dbc5f3df60719ed4d04b9208ebdf49805e0022c6bb08ae101e334daf9fe8abb79a639f2b5ffc3157689bdfd203d27307d7ec236ebf5a284eea2400cc21c98ebde61160bfbcf62f8815aed32d7245c9e6a0ea7d47d93711b4d84b98b716e42564c22596ee14aa7f5ff04e04e7b370e07b8c9805d4ccd6c61430363ac57a29017f7c78a6bf2b13714cdde8d74fb618c431a02bcb775fbe175f32c0015bf93d0e5a31f81e6b4df538b7e25a855e6931470ea17b279ed29277846f0df6171f22f4517c02fd5f37473d6caa29ad3cdaba1ae836ac79aafa78da02e6679234bf651e8a3a4ef5fd45e2484e84ba1b6afe006f5bdf1a3d26b3c5b5979116792654473d8eb8ddfe1e3c03b10e9489ca2fdc2a050f65c68fe8994176781cf6f4aaf47614275bc58edc0840235c7a6194d4bf72f0835d1faa9b8cdbc86225f82fc24fc358b9578915308549ab7cb13f2f456c6a8843295c9168ecb3943ae34e644b4c3510fa8e7ce0d9d5eddd6cfe6234724d4c611f4a2f82ef1db21f9fc83152d84b8aeb6e752a98f2b71ff595634d8498aab700386dc7012f827da0365892f0bafbbc8b3f5e4cdc5bb9d402d2d7ca6f77257a5174113fe2df82bdec43e8c6b3f07460db5300e371233c163d91d785583b06ddfcd4fdf63bbec4218eefa02f22313103fac332821a77afa0a5f5a17a0e5d5f61d5b1d452ca3673c977624ea37232eee66aff417e4c45fd8f60c43d09cc3ff57c559afff147cdb683acef096d5eb7b162d77de09813e0937baf4293b05b7f1daca513e491fe2ca096befe875a3af692274623f9aa86afad017f807ce4273c9f6e0f561cfaeef8913aaee714c0f9953db7b26689b965497d63233559bcb246ae8017e2f3ac5ca523a8bc478556efef713eba726b5c4bfc618e9bcf9f159fbb72ac115e5eb8fe54d570b3e3c7173dd204be9f7976b91bff9668beba87c095f7100d75254ca68ec7f7d301eeed5ec383f5d09f0cf84492db9b14be4b751dd60981750a7dc22cc47582404d3009b02698ea76b500bfde96dbdc046f918cdb85d2ffd1c1cf7786c7f638eabbb704ea3e04b4319b296aba77b106ac8b729f147bf1ec0c3d30dd3e98cb5ae252074cfc77e0441eea8143fd735bb4a0b7df12a7427d67aabfa967a78e49eaaa458f461597b3d269706d34aafa19fa8b023d3c6c951e63a86a63d6b067e0d08d916f398ca9a76a00a5d2aed79fa2074dc455967bf89c07bd1b0f3a2ecda954f7725498893c2e97b189f054bad8d58e497c8cfd02ad004f0f775bf4e76ce4f9e41c20da52f92757698f85f0f1785e6c5c5fc775661ddf2eddbeb4ae95f77a1632b2173c4b59035298f51ab5c6b226869c0cf1d427def76b2f423a139aadc90efa53b2a3bdc954fe70aae82fd1132635ddc835dc0506fa24aa5e151907d4a5811adc33add024364b530d6ab3ca9f490b18f6822267c8bd22fe9d68d82f1c3de15adb73182e97006b314a0b2d6cd143bc448e521ac81cdf7cbb43dd9375d723f20a97bd71a981b178d443945eb3eb6ff860f54979b5666f9ff1405b7a437ded616dc79e005d691a0df403953fa4c97cac07be6835fa6f80b78378067e2973f07d49c5b5e7f96e89dae264b3f096526bd837bb7724d749ef180b3d36e616cd9bb8c7c451bf89023c277dbe735a8bfa36eaf4242dd1e318f2ad81ae6671873cff5143316ddc5e17be56cfa4fc7d817368f74d7d565cb44872e060bf5fb6f0995552f9aed29dff0439a1aef6fb1abd30416b196b7307f6d2e574851b4512dbbab855df8ba623d7488e37c080b53560cabf70eff8591881e0d5d28595c31a71d840fecb00bba4c6d48cc1eb9ba4500717fde543ae11f00aea68faaa612fccf91a63cf5b6b895cba8f855187479f94a0352fb52f0775aeb67fd7abc4f7073a013dbf7fa80da37c192e6621b57fad24617bd0d7fe84feea29e2fbbcc57526f80cdcb39c2f885527f41ec3b37e456d0d43c59062ec88ba9f1bb45c7278160cf46582f9f1eb71c12f3456713ac662e4a9845a47e112133c3e7d36bfdee2fbf0bb02c37b82cfbdc2f5ef38167bcfed1fdd185c2007bed793a8951eff571cdd3b41cc9155fb4b3cac8f97ff581fc79a2bd78a7aa4d3f211ee54cfcaae54fdfa4acfef55c6e9cd45de63700b5beba23cf0f7db47def547a5836e8529e3a0c05dde1ef5ff947e2923c70272e175661de5fac78017e17d86a025c864efb3d291eff983627c9a4ad323c39a37c3be83a9ea8533559fdecfd2807d26951c91283b425c52df30a7a3adf706b1c01a7b18b0ce20bcd5250ea015a005815a7fc0a1f3802f68c599871e95b89e467def950e3cc98b15b2fc4647be3c9e5f353fba78ad156bbb47aca0f64dd085f909bcb89dd017a30ffda0b4af377dd5833b7ea70727cfbbfbbeef13f5e036aaafc8c2d8a25925e3b894d7cb13c600255d7e3ee41d6d7868545cba19c6a5321ed6fb7838ff18f6fc11d7bffea12ffa04c71c6902a37f0e60f251650256907a067701b3010c9a9a0cb52e8fe121effe1f7897ccaeb0be97e458df7c8ced9a47bd3ed4c70a30be074d9121c7b99a434c6640ce61342a5e53fc7be67d96eeba8b3377a1be6ee53aca7dd451f807ec70f74d0f203eb3e3a00e8558b0d1eb024a4e1cd14063475bdeb14ef7c73e663946f6fdb87735e49070673bd2f72f6bffa6b8e8df70d6735caf52f2365eaf8816ee67171563cff5718fbaebeb2becb937d79368d4731ffd034f8861fff18e1f06fdc7925777c3ebc833ff7d382e5996ff17b15cf71ecdbf62b91ba585da287d21c911f7b6727e82de92b61e714a10a72235f27a0343d6a7c99a636ccbbc4901bd5081bb941e21e2785d5e1439a2c645bd37a58199b1df22b66c3db74c8ff0ce82db8be4fb5b2c6bde90ebba11dc924668e129cdebcc7a93785970431f31a8050abd8641adaf5b4394c7d586a12fd71bfadabd8b3199592ebb63ddcd3a54127bfa88a476b255d208f808aa6f272a94df846e6e647fbd38a7c49634e4c6e4811945c3f947931f86c2ae93dc853cb55d8bbe2f8539be0e300ab90ecbfcc6c9a1f657a6f0ecbfd5acf59c87beef2f75f5b546de222f428e2bd48f7dc54356fc813644ee21ab1616e486de096a244ea1e66174a5df6a40023fbfd7bb3a3c68409252fa18bf82f7cf32ce18f448785bbe9fc17ccd317fdd6d3c794e0abdb911e8ac287ee9e0bba509d7ccc8b572515b06f13c1dcf83e3e76725f5193c115f4b5c9bc2f3b2d842d56f46da4e23debbec1bf8fe79090cd7070d3cfd4df6fadd2c387742a0e6d7fbec32d421f9c91968c49a6e5f3b328ec84fda15862e7fabc3bc638013b51ce21d720d7f5f504335e9afcd6d4147eaf11c44c4d4f21c3eead2610ef4d262ad866bb816f65a3c7fe558fe75ed248eaa01e92b8c29f0b8fbeaa634df1c6f180f4cbb7863847ba4a89d48e4bb91ba1d03df40af86393d1ff10b607ea97a673c0b46fb67cb80d7186890c3efb871414dfd49011c9735e44acc0cafa1c04fd8157994c102f9d4fa143ce77f12dd559a6f49b756ea42e7c5ca3512124acf91e67e86b55c8f5e341fd7a382c09866e60fd0b065bf0b630acf50f486099c41f4a77801682bf63d193c453f34efe961afbaffc31ef8476da9a0fea22d15a8184af19db6725dc818f6ee53c0add3eff61596ac3f51e78adc67823f51d5fe3dfc2df2e25bf8fb6293df17d48712ba3c3162163b0fb55f1587274ddf6e63ae8f6517ada7744302f6c0f5d96b3795bfec4663af09e8f77159d9c5336eaf2503ebc913e6579bc551e6074634dd00d69366c72798af05cf8e907f31a3fb1c629f1af6b624ce983c168b9a62784dd44b5247e4f48ed8dfbbf820e1b69a337dbfe549dca7e80fce65bd8c711f74179a8d13c5383738cdad75e2d9ab64cc978bff76afad85f7ba0d5a2f8678ee28752e895375e3449cd3f38303de6b253dc1f42d8c617a2eb4c80a75ec690ece41ed5b11439fe74068418506fedb3d171ab142c357ffae28b1e254fe9bce419316bc9041c392844a8ba7b112d4ab30b776ac38da333ba46c8d182ac69c328e8842f0dfede6a0a805405ebf452d67a88de6d5224fd0f325ee7bdb4985bee54c699c0136b75d0cfe0ddac74243418cc508b927cac74cec75f01b5c4ba1aec1e827efbd2f5eb1cf3c32b78b4d86e76f3e08c3f7b7d4906b35d202846324509366d893791718981d50fa89f3e78b07ccce7f1bf48a0cebec3d06db6e4fd813c8777e8c1aeb5dfc43a8af2b5e7016de296a6f4accac5b97f0385edcf36b00c3db3aca1be7c0b0374fc7baa7ead53d70cce1b79bf958c7a6aafd0be68eeb743aaea598be4df0fb29d507fa38a21e17ee554eda14a35a89a8c7ff0f7a0f1a1bd7f0d1efbaeb817cea1b9dad3fe61a9c868febb711f6fa88bd26488a3aec4cc656234d901cb97c51e1a05e9af7566858675c6a6a2d4ee815e647b2eaf558cf2a1f30fa7c00b9e691e03f702b7207bdbb466d26181fecb0aea2747dbb3d7fafe29eccb305cfc6cc91ef70286ae483a16688e221ff8c44ed87dec28327b80791cba680bb3b70fdde80af6c62afb4d4fba7b770e7e2fe9580cfc81cf83dd9ca9e01e7df3b16e8816eaed5bd10e332975e3644c4f5497a03ae51d03fc3ecc71dd79acd2e82f95e7f16b2674af952237ea362bdfb2c07ce9807f8937a9ed4b4aec8a90d0cec9dc4decae7cf54f88d322d14de3358c38906754cf011372d73e83dd9c57945e2a366e77bd084e3f1bc3fa3b66f563afe830f8d7fc1ef979aff110c39b9e9c526d43f6d543c7a39a99c446ad84f37a04f069e515672bf4cb1276595de50a7ed9d7b8ad3df7db650bd15a22e36b3a296b9d5ce7fdc4f2fe2dc729f7e1af4ce1be8a5fda047d1c5c3079c876b63fb3ef6728aecd2c0b88b5d717d00dda873b87fc6e774090faa0ea778b1c1a2a1429f4668e0de3ec5e769a03fe2a4c879e77d3ffe5df51e7e178ba5339c8f7925fc0705f7d691f839171a7a1bc7426e21e2fa66e0851263d2ea5b6886f791e608f6c0a64c87358c04cd2f78668d1ca32d032d21556338ad057f97ac714fedbe1fdda1af3bc55ef6063c7cced7b8f7f3969eb2e23815d67b503356f9df06eef01a186ad739225795fba8277b63a5c723f22a0a395eadb8b596188b03dfe0755cef90c7137a70ff4bc71bf6eeca3a246d1167c531149b821f256b3890ebc87b3c633faef2e40a76a0cbcfaa6940970f39598058753d9ca79bda6f23ec6f07bd2da989cf3e84bf126af0ec9a77f9ffae863eeeaa5fc0e0a807006bd3b38e7ae939f67ac752f346aee59123fddd61af13be298d8811013b21a2ced85aa8edaf0db89f4c1ee762250b6e578e3c0635b78ed20b537595bcbb7ea19956b93ef0cc1a3f5860ccda6805c659c674d9cde517adcb5566eda85f23b3ec6fbd5ea02e5ad6d5600d227165462b8c6945cda7d7b3c806bda6700d9ec4cd74ff3d90f5b76b973fc6d4fb0cf78d5d26046bade0df6b39b09f42cd01705b3dfa80df5b698cbc09c161bc06b5d85b9fc2ba967c0ff4d16a591bc9e7c98496a931b5c982a8782792bee7623c06c67431acd131a1814a32d81b4ec9fdb6037dc7be172eb12ed8dffb6a8ce3b3b2f6a741afd7f3148c7b3626e1ee07ae3b9fe1cebd8f72c096d9458a79087f2f9a87b1be5be2f7f3a0f51fbd59eeb817af13f2343c6ea17dd126bf469ef2193c284f1c07b1127a2fb59e13236ba113acdb00be164e3635e6fefc03f435d71c7df41941bc0df13527dffd00bf7df09bd27fb5a5a7b49c044f9b8377724867e81ded817eb65fc5a0dfa0e52df0f3a0b790ac03638a1cc969593f0b0c167806fec6c9c5dec96b3f97f1a57f907912519aea781d49b2449df40c6a4407e8a5b758c2ee0c7da4e57da0378ce2d20707d5d3df562cc49e6f4de8bd7f7fbd8740fac13aa9abfaf1c435c93a205f437cf09328ae0ee823b42ef4a1b3a770179d81bf6e41dfc08da81ed9ef7d6bf81cf28e547f19e391a45e2167d20cd4f3409cf0157936b0b7462d1bcf5d165c3970d839eed93b4f47ddccbeb74ef61de5ad873ab206076c75dd6b3f38216577f99e54ae3645fdfc348b9e947fc87c1ac95820d44823d63f27c19ec685f2c46837b077e6d9518367a6d67e0edafa911e9d519321daa958f8b59cebe8c7f72e75295841608f7ed0f58842ca5eaa2cc23e603d40dfdf748235182639e0178195173ae0ca668e9cf3753f1f2ee712f760e328743222f6a6419edff37e5a4ff0b3071ab53d67dfb43ccc3f57f31b7a947d8e63586e7fc193bc5ecb08d78ab27e53bd3454f3dc4a72792c3687b1847b60cfabb850e95d720d776b03c6745e2c08c6b01fcab34cbc63e583febb428c3f7d460cec10ee7fb563fc6c6b170951fa5781fea87f756efbdf5e47bf2de8527f581f57bd7703ccb9c1f51506e266d837383b17e3de65677d087abceef0f51ed531ba35dfc47e5af25ee9aabfb8553988e84b103d970177c95be97d5bebbcf4d8e6d1ee7b5844edca821ac2aeacffd0b399b1bee6624c613d989dc41ea4793ee4d5cb103164d352bc75d42a95f160f77e19ea5f8c75563d62452cdf8f6b25d07f9322ef4bc77e848c4b5fd49e0f05b99fd2f5002f9388e5f7f5b73c4fff9b7b7ac6b5c9e70ff754eebc70c4eb9ecbfdad50631baef18f639b4ec3fd7ab8e6628dd32f5b0b35db6f4a27c818adbba29ef89d7e49ef53d0fb5c040c62c26cdc6b9a2f144f70128e78b6eb3fc60769e6db01e69229396f408b0bbdee0bd4196715ccc31bf696f8b25708fc2a62cc691a8b399ee0365263e60107c66450378ac65aa913f043f3b92e8eef0675f424b5966a3d4ac69e5c21a39a58af645ff37bb8abee5f3c02e7b2ce2034cc641ffd9f3845a7f0907fefd533f2feb0ce322feddf0f4fb6e88969ac3cd9c78c9c0762402f50df3b8a3d7a82c74dbb1cd488cee17eea3ddcdb99cadcdd525ca994cb7c8bd69fd110e3d18f5395d367472d1a6aea521ffd5b9352ad897c02b5c5013ece2ef03baf40bfa7c43fe2df90fb08efefa3acc307dd513285e79a6f509f85b27782b969cb08f61d9577ac8d100370278f3318dfe68f538479d02e22304f8547419430f837b7a4f6f216bcce2fb09fb31baf97a8cffc0eebfd7bb8f3cea8a9d3c53202bbceaa16b8576975402dcfc1ef93ad2e7947e43d3c6cb136f8ca45bfec4c6979442c9a6c64beeca736f04315c78e3ffddbe79c8e9e73f0b9721ff45d93fcace2fe0cd65dca761887acd02fa0f68f58b34ca4b7b4171853e00954c87df402c4294c173d95178189fd44f4ce253fe3672031aa556cfec0ef795596cb9c96d53af2d1a2844b4d59636aaf16a0514acf53b16f4bdf7d181bd44c645d775d02861cc9be6ea12b5ba45b599b308e36497b4da10ab8a634ab6f32fe66b1fcfc62adba58da541a6d6a1e899eb883ab47026368e680ed3ca1f7d11afb9dccad3f186f0eb39fdbc416dc65d907a95bb7527b931eda997f8439e8891eecb9d7cdc3fb8ba689bc31cd20afa7ec26747128a9836e4f16ef95bdad5c7c5ebf26f1efdb2ea4acde38db17d9d3393be13ecacc2d7019c8396c6ac91b6df35e53ea60815eed5a2fc13364f81cb9d02814d721b4ddc5fc53f7799eaee8553e4ff473a34cf8a18bf3a06e8ef82db3a24cc5129f1ba9e7f21636d6534985afe521025fc3b5d95ca29127672dbf2f3d9bc4b3867596145983d7f2196857e01a5817f0a94eaaece15a358f75e33ad13c1af6d77ce4f51231291cdbaf9bc3d61f6937b68daef80a07ae43aee0c5e0914d3286b5f03be0598b0ab90b595e4b4d45dfe629c465f1e51c89f141620ef860f73e01bf617c015a82df1d4ffe360b69f519ee2727b52664c8473c5f2be03ac7c67412a31633eaddc1d80da86fa2ef78945ec09bd795eb653cfb80e30eeec307ec90dfb01e13195becf720b901f51bca272fe8e79ea91ec70968c7451c31f8eeb9c8b1e1be98bedb7bc8324acce8fbb9b83f1bf16f899515bbfc658c5df8d38d8b73ec38894771cbcdae5a42258ee6690f71fd3d3cd02e4e16c7e53bf28089f87a40df044f37cfd6b7d171cddce62dfa97f2c9c3713fc29dd5c5744c7acaeb5f311e3d84eb7d1be721c6cd2642634f70bcf55c5b0f8f5b070e012d6af7f670ceb7f0c0ba73465263a93f27780faecbbed774f15d4c10a5db875886a958862c2277d89b1fd1fa0af3731e261c754da4fea29e5f0aa6ea0f8b90f202f6a61b6221713a45de708873aa529a13cf13c531cb98279fcbd40e16a859e5de38ee83d07bcb9328c035a170afe0b7b2cde07a9caf737e8958a6b75a705fac73ac6a03895b5971aae3f54dc2fd0deb05c3b9760f70ff8a2f661cdfb6a2d6959000356484ff24f532a8d5c461fa0fc7a19a5c73200e2cf75317b9c8fdfd494c812e7e203eed97a85fa5793a018c2036a6ef721f22e126e1e8fb7e075cc38aef9737a1bb4c9bb86aa325d6bf36bd56cd1934c48556d9784e4ded17ad82b579b618c4c35ef1c0f18d98d223d230de8c8ce6865a7de0e5770ea1e6b142fd2dca4e1595bdba2cc3358181ef39f4c2a95adef996832f664003e5c11627de017c9d5f8383f78275870270e9a8e518572d7aefe9c6817b7450db93d65788a31a53e52d5a35acf915725e4a1ee8785e7ef1a9ea356e769116f5f83dd47ca0c799520d75495fcc06dedff367b7c7cb390c71e3a2dbafc4bc7446ba13f4f251d457d0af14cf0078d1de5bb8d7df151eb53f06522b92db9b0cf07f4a4fb93691bd5e998fbd6e5fea34906b087e978ce743d4817e783eecede119f8aa9f4a3e0359a334605d624cdfd4bf200616fbf6abd4ab129eab2d7047befdbed23e439d491907a5e58e405dde5bf563a9cbcd89d8a38b2e56430eee823923dd0bac319bbe5ddd912be769e0af61c91e27f2fbbbcf224d7d47c4d36546209fa550c7f5df4a17750eac2ebe48c43c937b760b9c5ca7a8fd3b81f53bc95cc060495ca4d8cb3538a7895cf5ee9d75f9359d6c5c39675812ad10d78bed9b1ed6de82d7e4b0a2a8b7f5036bce8b171d789ca865bc604edf1b21d6088dc3b5c799c040c538913943f7b90e63a5be97e8356e469aeadb30d17be6dcc2e74e510706ac357e6e6c61ce92b398b3925f78478f159a85ea5a2becdba067c8fbb61378968ccf1b88a92a23f05ca98d94b827795fcd5b34d73f945fdee3bb3749fed8eff78aba14ad87fcd5a8384421e6aa2be503ae5fbb386bf80c793d51fd73e08f7c563e1388e33177ba017e72592fef44792c7f191f978dbb1c1f2fc94fe8c35e180dd487cffaab0e1abcbbf5143f5fcdb7f8f9b464f0f9ef8bfa7ddefffe537dbee75897d9957bfcbc121a0e627cdd2fe8f7bc7835206fbacfec17d4164ac97b81f9632bbc9433192f6dd5ef5629fc8e5527d00b72f2f9f188b5e54d962f653c4726bc8618dae4466c0b9f4952d5be18379b9a58529345f60df005d40cccc8966b87a8191ca146eea4a0e5c3e05d55b6f49c413da0a4cd551ebea1d827197d46621fbd2a5d90950deb40466c826b02a5278ebf413c4e3bdef1371be5c9c88c72e44bc61e7b51bd1eaf55fb07d47089471ca8b1325727ae1c6b54d6c97f96bbad9cbfa017195357787face3f315f92de15d6a408e704406bd9ae92fd8b799e2557ef59257f9cb7b398a5dd9f91fee43e208eea35f5a88719acf1dc4182ae42bf9af1e957e920be50fae613c95a4c7cf9117457afb437c7b81f8561d7be471421ccc871b4de53fad057b658dfb60a0fa55b3e81afd214ed8602cc3bc27ee3ec4effbe6ac7a0cf6c7f3503b214ad81fae3d788cab16a8111169f514344c9721eaf4618c9d55d0cf4e7e57ad079c0cb927b103419c02fb38c47c8a0c18bfda19ead34b3380f54c6961677f5edfc5de85bc8ec4ff50f898f2206b5ab59fb4043e27efa131c3de4b42708da47c52406c49d14ba13b9fc8199b37d4d5a1bf2f57c5319235dbbbd2f3475d9cd43da10f1133a6889d4cc2fd3362e0db2a8b7e421fc747a0fc09d95b8cdae4a8a763f83a7af9455a8d6bc489e2f8161a83172b36a16f382372dca637bb74308f6622fe4aa9e7200794005e1ce9d11971b87f9d43c4b81671add05dd42edfc2b83f75711ce87a2c65cf13790ff76fe8b7f173e56c2127f7de850608f5fca2fee67edb1a63342f019c04fab0ce033f342bced819eae0f23de8bf10ef43fd8c4571e021d4a3656c23e228ec7d8d2cbe60387606d77196cfce094eb0aef5b965e2ab1eee62b77dc57a17e63a491b4ec1bf307a55d8273fae50432d7d9bc4e2f37e1c05c80dd1c73dedd5e23807bdb57341459fa9c3b308bcc5a62ed9dfa09f1674bb1c7ec65cb830b62b892dd04ff46d89ee971c9effb49418f162a36a5bcbaba86739b91d1a5ba5518eda6f0f799a93ee350d39cae52e1a73145dff50807e489a6e8f3d46007d063d5e7ae674b486ed8b0cf8df696317073ee40a5a2c6dccc816fbcb4768e888477e86871fda171e8b89c7d1ed72f1789c4b779c635877710fb9a016599e2db5471f8baa45affb99cd9df17d12eaebc4ebf56dc8971edc40f99e73dc03fa1edc43893986b1bd44f1383fae62d44c98dd5f947e80d803f67fd8037cd11b263ed3bbbdca091eb030cca5736d904bb7fc6d1c03783e59e01af9ac6f24b6af7400e2d66ac1876d57ee728cefda570dfd0096b867be6e1691e4469ab95b823f6f7c475e54376f104f3a033783cc5fd18b959e8547a058dfbaefa6ee39d1dc7bb46b647c9d5876dee651af2d2931df0a6a9b8f98afcc63186ad8001ea989fd98a93e88400fcda5f210a83288f7c02f2a64fc5ac9b8fe161ea4df4d59fb16d69330eee3739cf7f42439c21ec17562e5800eb606fcb2f462f383879c23b382b87d532f958f59945806f235c90e6389d9b49263c92b5c5f69eb44c916e6b86b10d0e562e6f146ff504b53f96e8275afd911b9486baabc72cfa83149a82675badcc050d87f17c3482d1c85fde23a949b587f08260503aea4e67f28be5346ced073d6c85836f88c16d11dd7dd95b3b5611d6b91271cb511eee7d9667104ffc6d9f545f62c2eca9a200e31491167df45d85ff251a9bc1c9e490b71add0ad92da7faa8e655c106bda62cf4b71f0a261ed4b3e0f72012f890126eeddf13891797cfd7e4c4ced127bea342fc0315161ae41b5ab1a13ae7feddf733f26f216e31fed2eeeaddb0b0e47f90cd3db92b8c1b56a243e5fd0e5adfb7fd92bc2de21ae90fa1362ae35567c9fd9a86b80386c641c657e6a5a36fa5c0a4f7fea4ec49ccac8b2028da95c2347c9d5ebfbeca0c61ea9b922f7c01a3193dcf42127ad208fefb5b606637a82fe2811f6883ebe43c1917e7c87709c1439a96f53851bee6bccc15f23395698ccf13cd08dd8a257d1eb6aa1f2e68f405f4aed3a4d13fb67e9faa74ae50d973bccb71670c973b8bfe1982685b8574f626e26bee7cb1b7c37418e6f6cf0ee37b9e815da6ff1f7af450d3cdc14d7e9cba17ba7ddf5146ed386b5d0e4b4385d7ee2bbe6f5e05d2f58ffde523dc1f7b6a13ebc376284bbbe66bcf2607e275b0de7f59f6ac644793b402c95600ea0f5f5df83cac3646d06c6c8e610291f1ff05fb6a2f4cd002d8ed712df7d0258a2b1d6127c26a92e6b34baff8eda5cb1d15c988dbce6a68b99ec62af033e7c3976df63a0cb48efc81d117817fabe2c607c2e4ad1ef2beaa4a89feeade137c50e30dfd673ca64ab78015d0c2e74b2cc5f136adf7e8609495e34ffb3d443f17e72cd7faf74f97e8ac7b9986c61dff3a684a1fe2a7953715942e4f5b4cc2dc07f21bedfccb0f6ac952b79c4eb64a92baf77638bb8fc25d064af58311c13ddb3ebcf69e2dfcb0cfc9ae8c5e0f55a6a357531958c1b1da20d8e315a0f98ffed7af03f185732df50f3f52768733ebc07ac31f1d11a10a3a71e23079cefa8b72779a941cff7c73e185af77bdc5fc661942e27884f427fa2c7046612ad28d65877b9037b868ad1e53ce0dd1a22d60e113f9916eea15e29f2071d39e3569c3d7e266a7c37b5ef48acd8e17568541033c62d31a3dfb2b614626f85d0c924587ffdd9bdf3156dbc22f32331fe3366970b02bedfb9f7c7f19581466bdad8bcfe664c39118e874cf450edd067dfebf605a9cf76c0f3f8c3f3b4e3f330380fd3645f7ef019cd8f21c689bc5b8713d9ebf0a235778971bad770df84e3f810f046461113fcf8db58fc13ff488dc541ccf4dd7ad5c54a529b13bf77b9756b4e2af4c57cd4777aad8c6eed12fd53f70a73d0c17170bfadc41a27ea8c66b7ae4b2f2832c173c76660a0777ef275dc615d47efae612df4006777c8bb9e42d480ec63388fa7aadf4069d47227573ce6eebceb6e6d7409d416590671cf0aeec79238ea9b16ee2f2dcc8d6378c8bbff275dce11a5fd7b5cb9fd7b0cea23bc47ef101af01edbc61ed4b7546cb75a44ceb7f53d63fa21739b4057b98d0b7d89466da85c593da3b32e3d1b8923d6e0b4df5fca3697d8850efd478aff74fe54cfdfc07cbcba776b3c93fdecea3df316ce636c1d5c175eda88c03bd55f75e1f7fd16df2f7625fc34e45cdc1cbe9d8bb7f11c21e8d5c0360b7ffeb8d6af6834d8ff9bf1bc74705e5eec8d886d75d10f3938d774bcaf84b8af9cc21db9c1bb3c0fdfe59a0eafcdfa40ae4795f832ae32a3e1bea5e3f153ea9d6817870b4e7023e3cf113ec8d1ebe8c451f7d98cf40834cc0aeaf7f86bfbcd5e9311d4e956351022756c9d8196b6897d9f12933bda1c7d5006e36e93593f117f9138ddf688381d87fe95003974e9ecafb10dae15a5bb54638ecc8fa01de3a91a5f1c5f3e18e29a870879b4fdfda553328a6f64cf8758c724ff95bc8786c0a064adcde473b91f403e4a2bc925937be267b8bfc96ba0cf0647bdfbd6bb53c8614a58f7b9eb0347d19d7cf7bd4ad661bbf77885bc856cfab5c404cea6933af40e7d793f0be11fdccdb1e75329b9c34eeef04f8635f7f90c6be6d352e2d44eba7f9eca3dc2fb192c7cf4b595398f8c35bb71e245e9d5547140b7aeceb91da6539a6b44f6d2a5dc2619cc3b633b980bd7c9782eac712e1cc37d833e3e26c6759b515cc747f3ae32a6800991bbcc09c9d3705fdbd07e3dac5884fbdabddfd78effbfd643e01f0b0cbc8b25f6f8bbd87836e079b7121f1fc45162dd927d937fdbd7bec4f5e6d12e6ae46084c86f4a08728985c701c45bc656873126cf65dc9c2046cdd9faaa7cfa5aaf459dfdd51c63f4cb07c64e71cb210f037e82111d11238b5b1f3180a410ba0933c5d10f341f7b54bd5edf76a2c696ba3703f9c29713d1702ef82a9778dc070447547191e137d297e50d7a59253f54c4ba02dbba629f69a4290c4cd6c1150ea8eaa66f180bc23bf05f8c61fe2c8ef7ae30c2ffd0f168ca156f7c95e23b913c6b19b389df9d2bac99fd9fb9af46787f55ced6f9f27e62a1e928be4b1a773cb64ccb567f33ce26cc1b420cd4c86eee6b15eb89f563c2326e070722df757ab15f4df2d7fd39a5ee952e60ff4c7cb57f6eea65cfd5fd0e4ff953dda765e8d5d0e74249730c1177c15e03ca3fa1a755e6107dcc3d416de822513cba6f38fae16983bafbc976aae6d4d7f8f506fb9a53b8fe157b4ae294abb8f52f31af53b84bbdc4df6481f9cd9ad72658f331557dac454fd8d868bafd772b311282dc0b3fd845dfdc1b81f9cbda9e37a8f2aed7c298d2d739b1a284d8e57c0a6bdbf944800b4db30875485f2547563ccf8f0a79dce914785d0de6ebde46f682382bbac41ebfd7951361ee7be71a6260fc88ebf446d5a7d967d9bf03b8763a051ff3cff0e043adef8c7a163e07cdbd2843ffd25a9df7a58d9c41fedae54d9f04d75b13622b5a4ff079af28ec29993acf8480e7141573a5790fcde3f9bf93b301f7f71aee7a0ec6d77dce5be422af9e59a17e5c225edbed75228e6ae927b56f244c58f4a22d4fddd80b650ff3b98b79be60aa0bf2b0dfa3d6239d107782fdf19adcbfc6392d19e442b936c3bd7fa2f6fe96fdd3de9f8ff6fefbf30478e86aef2f12c40f67f538a719f474a0a66386f835bb51d4a84f306614bd9fbee41b6e5b88dfcea87719b7db6eff648087cacf768ac309b8aae8fd7756d93fe2a15ba1f186b11d3d4f2ae60acdeef5483bf23c55b5a096dd41cfe695a8fe1071fc3e6ea08dc2852416ddc89a93c04e43e40a8be30fcead57727c59711be1baff5ae0fcc57d657cfd87b0f69e128d41bc246a493006c87d9843f56340d4bf0cc4010beaeb0a8b3a44901b46dfe22729f5ccf880f914eff329a50ffaeb861a8b24c5f85570fb4e61ed39f9bc9a289c48d4a82deccd7c47fc4cd6fb2f7648495db4a88f266ad20e75c23bccef6d25ae75801318eb13d124ff8a253e6a7267b0b7c81e7d63eb042607ad067ae5806b318d025facfb0dbbe27e841a40fc80baa3d3be3608fb571c5ff09ec9ab09b53d3d3f556aed5b7f62be4aee90b7e939e61dfe26c3f552ff90639da49b037a37d59aaa03887e9c99882551673c31a38f08df9d811c8a8b86754aa2faed9af6057d4763aca5286edccf57a11b21fd0f62c084c91c7cb3a87e2fa0273cce02a5738d184ab047afc7e7b6ac2b5887665bd85f748e5eadf1f30dcee7a34790ba96fd0cb57a7e16fbd9976b590dae2580ba5d9c3618bf0bee41e19277c587fa373109bddc02d57fbfd5b056f8b09eff14dedd2ab7f88fd5906ae15b207ba012d4590cf077725ed7c10273a1fa06b9a15fb8fe21001d099a44c0012031dfebe825600247c0a3871c39d7ff51ac72843f203fb98d0e92d349d2573347bd92db1ab8f12fad27fa4d22fded738539c87fb2667750b5d4bebebb600a4b28dc503e1fe41d27dcc3b10f71bcb759a01fe559cbe51ae4d08565607f85c8a504effadccd81d790b2e0b5052dc23fec81c9882731d873e6dd9c86b997fc9b637807c0aae019eb42a7a6c0b892718333177b135b5cc7910f4ce6ba07f895131c700de513f11bc1b30ad56fd0d3891bf2371b57df89be1657f62d627cf3aa45dfe1fb79985804eb3d2b17eb8881fe3facf72ce22cb82abd64f19bed4b305758da1fe396dcc9951f5490a97da78fcd05562bc6d02d465c6ce79f40b73a5a25c84dfef637d8a3ea15aedf730e4dc1a589427a89cb83073cd6f3bdd4469f032f1678630bf5bdeb77dfdbccb7ee705ccb7efcd913f4b02752af297278d6388fdf034d9b7a742d12b77112c73be33caf843629b762fd878e38cdf01af8a199c35cbee7aaaec4f548f4907a3b72f095664ec0c47b735634f8f6be03b381deb4f3e9bb63150972ca9f6fddb5269af794d45cef8e1bca3ea016c76235aa697b83b1e8ffc4b1c829d61ec9fd5b3cf87fbdf618f535c776dbcab89784ab8c445fdea3194d456d2e9efdccb5c058492fcd2e6e33f11e5774881fce46f9c426614a03e3311e2c5cc189d7a0e6c20ad49c8e9f75956fb8ee285eece2962e5e0c91ffa13856a2af0978a0961328fdf06ff9354f8ffc9a9e438afc9a5a53fe55297a16f0b7d20bc79840cb6d821e1029c1bc2f7f352e749cb7d1cf70175e656d9ccc618dcf0872f7683d416e5e9ad4c0f10bda70b746be5f169870fdb4d638f0a6d28481df2933c29d7543cd1892456a8c14e0631419b354fcadf56c7e9fe1b378e70daccfe905f3e2bc5ce43266bfcfec22c3e7cbcfbc8175d9d0fbef1e72918bc466e46cf6b72ff9debfe4359d2af6e5b9bf574ad707f7d8c00cf77aaf1fe3a266b4c8e346e33d4aa74e617abdf6403d81bdc5bac39e9207992f7b865a66970bebcbfec7312e4c25465fd5bed2b1c6f71627bff05de5ab04de6b4b6ca2b8a7558bef2d4e226df4ae5cdd8ae3991d1c3c7c5657e0495934e158633954ca9376dadda77cbe527bc579d5c8113f67a6a53e5f818e26359ab67f675e04eba5f456ca2c2fd9cf0c55ffdc1fb166b090b92fb338656fa88f0eb599036a294bfe5b25b92a923f99a9bf090e06683c095d1881713279fe007277e68cfe4d257f08fafafc2e3e837fcb3a1e53de72707e990b53d9dbc2948f96b175613d6c5087058ec3444db9f7a47364cc05d8a5cc0dad083c06802fff11b63e3ec3fe787d3f8dba27f89be83389606cca7390f7f09077efe6679fd773ac4b010e7f74fe700d9ee0ec1b8d263957de16382473ecb78b35cfdbd43ef43ad462ad0eef82431517e87b067858a12d75d4b58a5b1f62c160aa7a420cc46e98ce91839ae54ae7225820f6789904aaa7018fe3454576141cc3c83c3ac8af0ca007611dcfb08fe3aa3cbd33dc2b445cebe7e23ab656af89deaf292f66e48cea9a6da3fa5cab0ce2e66eeecd8fe805a0170de6148de42fa58dcd8586e4c58ab2dc2e128f2aef54af412ed21bf6a6a5f16ce4dd4d5c7ff2071fa2ef74a62ea861cdd209f2c27f966d4e511b60532f959ff12b721d8cb781fe6123b002597395d80e7af100effa7791c0be973676b1db0ef5e6bbe35f731df5bbbdc1bd34dd98b35f8c06bd763e0aba1e7bd7089f72c04dd2c6cedb067578df56343ce7a2cf95db39dea37139d0fb48d7d7441c9c26117a6b1a61cb94dfc5a6d7df975e5ca9e24c9fd2ef7c4b5830a9a0064793e62ebd3ac87bb8e707e59f34c79e675c77b777c563efe62a3d9b44e6afa45b6362eabdc4f145434f5e18534db1b37ee2b31c7207a137d32fdaee73a16de00ecf196bde221aeb5d11c925bc29ef720675bb953dc3de7fb3825eefa25e223615112702dc6d3621a09f93efeb2b5ceb0e6a82a893a6f59ec72c10ba62697ecc75e44dcb75768d6b126a3ce25e453503c75692b95788d30bbe439d2b5cbb9e0da9a3c482423bcbde85432e63238d1cb02631d0d2f859a65bd0fbaba72f1a95ba61c9f60d3e6f361e45dc19fa0545afaf8c071dd4ee7ac6fedf9f05f42824c651f898c62d196a4abd869453ccef953e6c5addc3dfe0bb779fb9a025a5879aeca3e535d9163b7fa8c7ae8746745b79024fd742ed725ff5bd1424ccb8b379d00510de0ddd3344ad6943f972de2b5883f3841de9484f3ab779a2bcf48cd5a8778268ff0dafe6cff04027eca1071fb5b62ba8f5a5c9fa3341ed1ce89153bcfbccc3fc23e3872d8567ab71c06f144e7b47efd9fa133425b7628fecb1930bf6700d75e039accbc0fd30c2b6c26bd9be9a58773c9fb8a6f07e03b5db311faac4be2df703f0b540ec2fe1a6879ed4670eba6daa47cfb8e8322667678c6d0a07f47d9877293007681be436e7e4f70cb18d29f4debff7b9a335f43db7e2b46a51bb7cb3c0ebe01fea3998cb1beaea87726f4b0a77823e22d7f020c7b4a86dea4a33f7ed41176512ee221c470d499b912724af7d7da5b0c8f564d83f1499961dcc51efad314a1de36c5d68221734ba8787edfbb77a88a9de6b079ae44c1fc64fef33a0b40ed1d787a2e6618ef9377a780a1d19d18fe38cfc32b45f831888a5309ee45cc89007bf543a8b2aafcfea163de2373ba9cd1f27b28610bb758bdf87f995a2ee2a470d31c626d87b450d985f52afdb0c776b93a2b793d2af7c3602f8fe5af975004e975e6fd4063f4163ea0654f942bea95e11673becdfba74ebc1d89fdb52cf5ef9c12bde19fa4b12bdc2bdb6a5869afbbb356a12e69b853fdc173dd563a741ff197a2365fcfef537c4ac94a7c1163f67183b152e79c2b9b4c9f037d56de53dea07e5a8596e8ebd34a6ffe053bac431bc95980aff0def78fb3aeff61af09561f579ad798b1463fcc43bb26e4d4cb64e592bff78d0f9f6edeffd8fa456fec0ffa88bc1e95087248235254e2cd4be498214f46a843ea57b0b35ed1c53570bf5a5ca6fc43d69e1507758f9e39629f8366901f0d98f76b9877d2eb1247735e376402783bf49ec5ee6b4e423c21805cf655ca49e28705e319681b5d00be4fa2ae60ef8037ee4c3fb4da1becfc0cb2d25d648e338dd3a387f564eae786fa409c7e334d55063268b51bf75d780f7d0d95cc9fe0ca1ed27e6bcfcbef0e6412f9dcaf9eefbfe89607c935e4dd54fbd77b167556a641b5c69750eea456da8bdc1de749da2670d11fa94dce275f45bea46864658bba00910e8d102d7a9e613cf5d68fedb6ae44d55ddc27d8dde0fbbee59e6e9cd2e77cdc89b023da98a814f53e1f6f332a29e13bba88b7a3ca33700e4907adeef0f1a8171c68033c0e74a03cd7805bed95aae79e7285b9bf4b7d489cdbbbd47f6ce9bb89f48fd5fff233cfc988efd20602dca1a3bd84b1c2702af9648e98ae6ca2787a7caef7202ba8f5eba973d99ec7ec13570bb516341f850c93a813b817c6472857ae639b21fbc838c1c7d4dee017883b0a43146be26c6cd0e7aff9f5b31d2a12046b8b3302f4a82940ff7d1cfd0f4ffa083ca1efc76504b65e8ad9b1be0d982efd009130beb823dfecfbc1673b475fc6c401c95bdb45100fac66fe1ae71085edb83fef4dae0529b4b7f83b9061a69ff758f47e19b311873163594eef045794dc9dce933f98dcf7e6b43fed48d1df4a439853b721cf9a5b49e5da6e0ab947a1f653dd27ebbff258e31bb7c7ebc17e65fbd8d3386b9e593e278a25e87c496c8fab7f4740c1cfc3b3fa2bfc63a7dc3b854ea87a7370775715f85c70fef75735023c7c4dad819fc9389169aec10e173de79e8cf19a177503c884fa556bc7897388e5e895cfb3ca20586d2363673e58d5598106fa4ec63bcd61023dc3f2b9f99ca6946fde0c59f3c3f12cbe6f5f71e79eb14c7d4afbef62734321e6236636a1729e20f9eea034d4cd45fa693a011754f6745fd77de84d2b75a3fae2ad0cc7bc0510e2a46a0b34b1e8f7d6f703fa4a9de60ecc17a3f9f760531789a2da763af07720d775b113b163539863b8823e5383b76795ad522de4b8197acf6936885de4b997bc3d82a427fabf4ed4fdf2321adf4f0f0365e43a9c75ebab852c6fb5a9f233637ecbda7e9f4329a43dd5c53d7a7db9b87771c68cb09facc7fb7fe6d12fc2db737bbf16f37ee12f1bd8c68236ce9e32f6b63b7b75f711cb2c41d3defb29b0fe3dc5443af326a06f85d56ec705f762778bf5582b83d6d098c9134f32fa007f011cd27e8d59089e7ad798b7c177de03d13e11d3098b3ed1a79816c15cf2239c78fe8cdd01277a4518f9a053e119a26b26f8fcf2fe857702a40332a757ea06eeaaefae63e1457dc0c74bcdf083d2677a0fdcb9a7b4943e98d5c4b4d50e4aabc2a3f1cfe49a4f69f93bae857fb0bbd8c23eea873233e4256f64c71dc11838458e855bde3043119ef16b88223eef09a5db9ac1d786b2af7f3f58e2cc418d4d0cf97eb2bf0e35d1f6a7c06c7f0f043cd03e4cfc4425343b7a2786617424341e29edc455f9c7a825cf792fa93f1ba16b4e1ef33e691bbd7fb2c1a8e5beefa53d4222834ff6933d6b9b8857b8e63372fe67cec17e8fa3aeeb985e61b0a23ed7f8b6bf5ae981fc79e80eedf3d014bf4504b6776b9f31fb5395ad471646674187b9f4fed0d1c779d1d47be8055fdb7398a182db757631fa84978f0f03e9a6aff701f7f99bf2266daf56b46d00ed70cf7f445b729695ca57dd87bcbff752ea08767e1f0d15c90fd49a8bd48901397911d68a9334fc3b89ba23e5e4becc198bf13151bfc527eb2450d5a9a9a7f5ba1ef733c430d23b239a875f8081c236fd3f34ce53d69f909c76b41fdebf83a24ff6825792c6e17cf879a88b524f74cd5c5bf99cf0668f9317642cd42d6d638f609708254ce3cd867aeb2673568a385051e6dccdaa43399bf65dcdeec6732464e971007b03dd4903e39e4f4d24f0635aa9b09f2c468fa0b39dc51b0038eafb1b54ba9b96c31b9165ab46d0e0962fae97185fca99503da8a8c3fad2056649083b26c7d423c30987302f8bfcb77db68b4ce08be2681e300e6c7d811de4317df3c05d84f9335a08d4ad2ea3762ebfcf62a9fb7171f08ae9ba7f01019d207923c8587e527faf9f016e372f6013d785e6e9f212e2761de828f3b6842a40b0b31968c27f85bbc0ee9011b255eff2c74eb3db6877e4fdbab7a0f46d37bb9ec3cf45392c7307da77f36025f5a243b0feb37c742725cac753c3b00969abf18dd73ed62f066f05bf53c1ceaa006516dc0fe5a0f9e9bf2745cb7f55d3e2bf61eeeb7aa7e938b38f62262bfdeef737696dc34f2149afd737dc1e79a729b6bd22780684b03b57c246796afe57c61f36a97630e62f43d9067e51124ef476a7f94caf78b5df19a594627eabb2d73fe12535c079c939fe23d8a3a4423b4f53609fc366dec6abcd78ab89d53e19f283cada3fd5669b510e0f5aeb3e3789d377dbb50f9107b2f47581731c24383beddcd66ecd34e78ed5f40fbce4ab3fc8a9c0ad2e59c1e13c77eb95fbcbfd5f4780bde4929bda35e3acb8e37819351fe141e549e780cf7d514f92d85d3b8af7366452db75f5ac0cb53dde6d86f947aef1cb1e496885a5b206a20e177350a5d616e4a83f46cbc6ae8c5527d465d1c943027165ee2ae161a81f1029fb3b6426f8c3b6a2c232e27757221cf4995b7feb6da639e0ebd41a9cc7999d44d76a2dfdf1c27abd01ff6e7c681ba44ca260cf826e8a52ab5c8452c81de370bc14f1035535d6ad808ed392fae62f095cd881d4a7ded83e84910758ee8986b13c84b8f26f25a72a11bd6089c77e5fd402cea16d933ac2fe9583f2917e31a70f5971af0caf51f759c5fbe7f3f02fb6cd53a6546b8e6fd54baa0f479faa2bb3817f450e8c001efd8c3f5ed6b6dfb2ff5eb4bd8f28738c343ccd60cf7d549f9cec1bb5bd15f723fc27961a2ff88ab95325718f887f036fa3735e69d7551bebba9ee0db0f4518d7995f5d803156bca4c6a971a5bf7c5445e90f786d81dd413fc157a240007286e2b5d1c93714dd46a59646d120be7f68500af82b6fc8da9de4b2ef87130d6ea600e9c6d3377e43537a25fa1cb33a9d8bbde00b76196bc36b1c7bab83605e0bd8735efdea34ec40fa7ee73a9ad176904b82bebc4c3e794c871537f22e74a5dbf1939a367a8795eea3405e45813e52724f5471c6a5f72786e0de676e1b0ff3edd327c77afe8c3adde2f790ff747796fdada400f74da065ff376d50b309b96325e5c408fb89598db43b746a0ef650a79da4b9bff0597a9d0333d29eccbff255ce62abc1a042eb33401979135eb7a821e4b38c79bf20133e0f552431cf5bb7a767ec77b256f2fc3ba657cb1ab3fdc5b9ea2a7dcb3b602df72d4cba5099de05c7dc42ecbda3faa9a6d6629ac85ec08eababc23d6c7b01e90f8d29be73e7388f0f19258d28afa2bcc4b0bec8d318e4fd160cdfaa6eefe1249af57d00f9e9d36a80b6ebc7da21e5a59ff3acb3e2bf211eeb1ffa7f9dca01e9ef1761a6128dd790ef55decc5e9d466e6db7d986b96d42f0af59c03d42855633ad803762934ff87b8f4ba2d806b54a02e56bb36553f7bab629c7bf7bd847a8bc28d549cd2fbedfee8f914e6d656b59ec4fa80356d5bfe1e8ff9aaf63f712fa0d98febd86fd0bffec16ff034c829efe09dee28ee90f1dc424c9fbd3e5cfbd07facdc23e6fa3cd80b606eb7111e83140b1cebde67f73d7867f5a6d722c7efb20a79c0e8dfeffa9f38de59f6e3f4985357c654d53847715fe27f99f385eb7fe3b9e69f703fac4c4bac05b1e00e36568cf5175973fe6e5f332ae4cd24fc06fbdabea8afb80fbd8694bd141a6ac27eef8f5a99a8853d43de905e416ebd3ee4b0867b535c7368aa3cd0a3123c52a36c6b93fd0cb823ec4979ffb5822706b84678478cab3ca87df316e0de0ceb7c925980ff0b1ffd85c05c2126ac581f2b850dc6740d62f3bb206d1eb19d16df0b33a38fe8a146bd9ae3fba3d387b8fdfcb7da36c7789f79c6f8bd6f9dea814354ba04de7bd3bff77476ee7bf154ede050c038aeb00e739f610d224994ef545fb7a6d24b35404ce245af315e12355f89b76f5f06ef18714fd43f17799ee881d96d0be8236c9137966611f246e4d8337dbbc43d959177e00378b1d4c64865ec77915899f28a1beff11be5b57c047d545d696e26d8d360faade41f74711a7a9654ba7c168077486e80450f90bfc7175b6a9f787128f785637817fd1e31d4fc55bd1130b705d4a4fbe7667ad8c79881d7798fe5d7182b57b85efcac9c5c686a45f4768ac57c8bbaeb5d3ce042bdcfafc285a8f0228840db84492f36560a7f978b15259e1b80263b6bd1d39b1c709d2b5cc84b34d5e71f414cf65a1dc830c75438b1c41c8e0e4fc18f91d5771573663f0ca51f0598dda65e1aca3317e311f307705158ef05d3c574724e7e86e0ed1b27db27b82e563afe4893b874976aad642dfb881e3c7bc81e73e9c01cd51653f7f687dce6c1d75dcc0fbd84e79ba2f6b3195d202724a496dc3376bf7c00c6ce4862a99e6299f390a270e939a6ee3dd49a4fe9c9efb6a111dc82216737f19d7c114c24bf92151b679b0ce77fc8e8bde71006e68043a8a15e719a85e3bdc5b4fe9647399bda37918bc3cc5f233e5850fbc6c3733a63ada6a2fe41f8ea6a03bf59d84f2bc702cf99e72b53ba32022fdb82476211437cca29f24b7c0bf9352b1b7ccb53a621273169ad0c70d473624bff8028058e21d5bbbf8931542c98d41b3772b3a00a8345be5e4250cb54bb4d0ae05cd1fd5907cc007b7108f8c53a493de4f6b238f0c04736d56e807f26e8831ba547bbbbcf446a65be71383e9b731de2c4363c6c616f73f1d920860b73b83f6eb5e78063e56e990236c3688b7a550fcf44ee01f32ea7d4ce6b8d4cc283e2a398887baf33eb88dac8453ab5fbf803fd59bff2fe36d4ff2bef8fa05ef9e3fb16f144d4e5788b905ec03bfe68212e01be9fc33d46dc373710afa706010c304daf2de2f101f8eab20c721e589f62d08b88e637d436480af70c5e1e4d2ade11ebce7fe9de3ff627ff5c2d8ed8eb6c96e013c0c067999a15d4e1891182b71135653e12a11fab21cee763bcab344fd17f3f2557aebbc3fc4f0b0f2affdb6d1ef23feefa478555fe2b5cc43d8587a31d28ae3269c10747e11e9bfd0d71e82357daddf219a36f733e3ff6fae6d87ba279ca0b9d3b166adae9d867cfb2fc28b1061dbc546ebef2bf97e3fb845ca33c3b2afe6ca1fa3ce8884bcfa08685bc35c9f9274bbe6fe8001bb0e2fbf913728a86436f061b63126ce4e3c504c7dc2114796fd017a3a9f382778bea21d315d7d746ae6f73431f00063d49dd5e11b5cc0d30ef1afa2ff76bf6e760cdbe72e42599fe893e721e13cc1fd83df0c28778f2affcdeb6d0b106199de883376480632d756f2f8fde90fb0bd604f3f2a1b659b9cbfb8be2b42ddbf16f835b7850b18a36f25d36a6766900d78bb16b4907fb5dc6bbb13e8a718906b94de6d91bf456c0b12ab8a815d4df88e86b8a5c7c8fcce8c66297f787a9defba90b0d4b5993813c18ea15c4805cc0e70a4bf7f402f085d846bd28c0860dec816d54ceb239c0584c00a7ce2cfb05f93b8c3c75b98fd80bb2e61e8de6c2c58218ca0dc5f3e30bd93f46ee05f21650efaea1c335f27765602cdc5c5117814a4d3b8917edb0664aafaf9af0f1f3028adc6b82758fa4ca70cd73a71be969a3f8f324537e178a83c43322f6d538b35c5c13a47f6af79b2d218723f83011a92f3ad0715c25beec1f17f5b181671f0b441e9d50cf5b4bbe7bc6d91be2e644ec05cd9bc0190885e7dffeeab5f40f884b229f03efddbde736d4ef20df23f605ea12dce6fd9a79cf1113fa7d495e3d57ee9b3bcf59c5e379cc20ee2935ff80fb4640e9588733c9537806c8ab432c6a015ea46ea87cfb350335bc852f6e37e676ddefc5de34fabd7896e98877277aeaf85c7059bd027148e18f0fbc6be56b594fb0d7aaa44b73346f13df79d5c6f32f50f3af19620ba05bf06cbce8e2ddfe047edf0af3c50de2a8a033c81cff1df7b700f72bfa2cfa64a8c47bb037e91df78524ad3ee53e45aee18e1f15ee34c735bfd6718e57f5f2847b4f8e5e7e2d70ba452d72fd57ac42611b6d847dba47ecff4c13f20ef95c44f638df6ab3903881b3020d9438bdc9de7f4dd6d2e2f4f20acf605280fe67bcdf02af81cf2197bcc8ba7c5407885dd0d9131e5be9b675df6554e115af3a7813df2f39689469b0a6104229625113e9a12ffb6bca9e4ff23ec42bb8461ee27a778a717dd073be7e96f2d989ba88bcdf6923eb04ec02b1da4fa9e9a830cb4bf72e13a1cdbffce490c3c91e30668546ae230e5e019f9b1dd6b09e92a2e7b135c0636b7a7e7a4b065cb5e0b3af7178e05bcb8c702738c9ddf39a86fbe904e2959478e2993af9a1c258a1859c33ddd8d0fbae1fa7380e0bea3f75ff3fe07e3981b6bc2aaeb4319924a82fbd3f8a3a4a9480af15d54dfced1ab82ab9e6bfc8dc863da93a80e0290a0f2fb712fdf7e273b957a5dc869e894b085a5e6bec017499e450a4de62fcdd400f611dcf355fd6f68da32dbd25bbbd72863dc418c79148fe7707e73a84b5c42ef2a4ea71391803dc0de5fd779f4b4daeee3cb26e94eaf6e0580b919bc9b5d15a4b9e44ffdd96d980d71fba3128f982bed47a19f5f5f0e2c173efde6302b5ae7410e89033cc3fc2dd0fd4bd129810d7fcb770473fc73ccb9bf2c12b4d32c8f7c57a69c2f3f859b6a055a0639cff0bb18d6423f8ebdd5ca7e2fb18fbf7da1bcf6664ff094b5cde5f153f7fd9be0ed7e48cd8848ed7e418f71eba3ca1de61d24a5e8cd4ad14cfe95a60bf432bfacc167dbc519b89e29c885858d4b0e2fb6d176aec1c39ec38aaa5a6b80730fb05357fe9b389bda7c1fe22d6fa24b3447e99b8c8ef3f9ed8f7f8b2a6f253e94fefe43bb53f6c49aaf6daa39c97e41aee8f01c6f9b1e679f1fef2fa1d0638f0e1db620c97c25a17cc55acabe3b349342a7bfe8d2dd45e8fee06f54158d572a63003c8adb5169e5dd4c5225dec59f63a7261b7df927ab8df36e857f7c50b7165a3fe733d7d1d7b263ff68e23ef6abf91b9ae2ffd80bdadf4d190753ed0e99ecaf9e29e406765121eac296a8c31f0760b165ba1dbd0ad09d837531e24a6c0d2107a4d008351d817f4d31b93096a8761ff7aef1df4a877e52d8ab611e336ad8fc7a2169e29ddf33e455dfe9f36628e489f0d3c5ff8702f808968d309f6e9833e405c248aaf03fc2bc86b558fe5bff3598ffec1677d93286fdb27e5e3273f5be3f1bfd3e679f04b95bc5dd9677b459ca2d705ebb545ca14fbf99f3f2bec974e7ce0ef92f77017624ee76f442e2cfa9ea69283c668ef47da3c613d047ebf0d295f12acf3646fa02fd0ec45eeea7a5f3ca8c6badc9ec08db1cf30777e49ec3a8b9cd815fc64a10f04ef69fd9dd667217aad24d6259f4dae0f781af2fe5bf404f6fee05b031e547ff6ad11ded4ea38546f37e881dc7ab86f785dfc80584b85f5dcc407fd23d4723cdaa4d7e23aa10748b56bc6ba5a427b99f45a184a8f79fba1b42a95b7223578ad7c71f3901d27a17139895c20be3830cf7725ea41ea6f7fd741fe678dbacf95aa15e1d8fa4637b5c618ef1935a388d043072d9150e2ed3a628f51e61d12b9de641b670bf8a7aaf3e273def105700be13d88fe45e14f807fd7848788f4a69ab4a85993642257cdbb77c9619dfa9fbe83caecd640e99ffbaa45039d0386ba4b9f23ec423f4e955f6176d486b5fe3025e233a979b5bc6eb04e694c0f6cd063418de9439f5833c04d51bf9b1f0a896b085e837c0f62bdf4a437265f49cf03c9cd1478bbcc91c59c87f77c97ded1ae16b913cc552f85867aeebc3bde62e8e3b9c918eca915e203b0fe923d59348a532ff8a08835489ef06fae9ed9bfd4f13f289e775275ef75e0af2aae137ce3d1c70aff2bd70d0ddee9af4f7877afa277bb650eb9cffeb67efda3b6f08bc99013037a398118af83bded615c59afc3f107f531a9c96332f4044e8af4b8404c20d7de80cbe7df701d5e273f6e904b6c890973a26dec00e7072346771dd20b64f98fd7017fbbc2f36ec3438dc74fca3dea90f5baa779dba0be01c4a8c1adfa7fc4bd5977aa4ab73ffc9568346379b911d010294353057287946319c126d1d8f0e9df41cd390b4db2d6dee79cff18efd5b39f15a4ad6636bfc68cfea039e84fe7e3116a96fe1a24849175035d575a4ebe5fe3a55dd335bcbf5c83340a9d127937ac0e4ce9a9b13e5dd5ba1fa8b1bbab7e0caadfa6d06fb890c6423f5f95defb2d1478cd04f4e8747e013ce42bf445d831c67126f89e620f3fe22662090f8e74bf8f7d9911be847daefea427670d5de6ea71467542aaa587dfde8dd2951b39b1bd765127cb461f62276dfbf790a05604d5db914b96aa7a435e4c5635f3d5ef85dcaf1aefcb7ae017655ea03fddd5252c2be703eaf33d85883b8ddb82e2b314e7cf196388404e20864e6affb0d41c0ac4dbbb0de1396c46b841e254e5f1c70346b17b4753ea45799755efb73b8db8242f965766f77b42b7ff2fb4fe17a363e23017749e9b445fc8341b5e314ede456fa783eed1b7a4375b59b496735c3bb91def294e8901771b13de916db54ecf8d197bf058b9fdafce0bda6636e9c23e7862dfe984371643bd98243bd15a1a4b35efb4cf8713b70275af6b18dfd0dff057c025f7a2146b32c2bf12468e67578cc7946ed6abca174ca563e98aa9f69610f4eccb4913633e609396b7b8fd223dde29a37dbb1fe386ba9641ba196c0f582393f07138763c33aa47436680be64963f936e0a9b4f4ea48736a4bd2d055d15d04b21bd166e1e4253adf777b5634fc77fcbbc20cfd34fbd6e668daff9fb8df7881756f572895a245f72a0bc21cf5853fba72a6f18f5ddbff8482a3d13159b6584a7cceb33c6f4e76853e97b7cb1059db7bb9756e1f5e0ff1b92fcdbffcbfb56eb4580632d1c52dc13a6e44dc52fa46b56a1274cd232a801e572bc827cd7886aff92fc458f9479e827933be453c1aa06c71ff616c26fda9a14efb3ed97d854e7a295ad9feba2d7af3b2de897967c3ac077bfcb0bab3ad891d644bcf1e87ee2b9e280aa9c09fa17f91af3fcea463148efc5ef4f2bcddf9277bab931e62bf212b5117dbbd7e5a688eff6c62e16a80bbaf7efeb3d53fc47ebe096a48ff173ec32044d2d3f2d77a47f64deb2e421a7bc2db5fe12e6ba5ae763f198a7a3e762e905867e9e9c199ab332454f53333e97b8cef0966b7ffb3baf92a18458d5adbc401f8b5ef082b50161dbc77f790747f4a199967568ea7d263976635ae516728bba5ff0cc0a1753dd80575072c6513fbca5f1bba07ae0f735f69d7abc69de201641b8abed90c60ef4dd765a7f27aeb6d4b73087a45f94e6874fea892126bea5358db7a11553bdc53281b7b61d7a15e1ad858f7d2fdf28cd7bcd637fcaa60ee6d85ebb046df349e5b17e6d46ed8e302da6f7c7a91a9ebd9eea9cd292e8b9ca229c5f6b8af155de4e7816fb70201faa5576bf6e987d9c665ddd792a299edbcd7df4088477fca1eafef0fe512375b42f41ffc62d489b245def81efeeb3505d479dff32d36bf7af337a645ea3dd3f675a37962a9e37950f6f499ae16943df86cdbb78a3cb89ace1789ee9ef74eecebbe0be9bde9d4b1dabe6da02de11d6e58aec40b1e2b4daa1be0f71800457cf9aeefc01e2baba5c4144d0f3f2519f07b0a43be0d9965ebc201f835e5b6e04f9a0f0dfb5bf883518a0cfaf08df46af881350daa87d3dd31b123fee876fe096def3598f8db4a0f792c2bb54399e8a27e0dd286e8785c7fb99baefd8c1fcf2b554fd35e974eba1eaf18af58ece7d7faff3c97a4ef70afd567642bfb53ded296cab6ba943a663fc0acfc1f6d1dbe8f11b42cc32d4fb148c8757d05f890fa48d49f7188bd8b9ffd6a025dfd071e96adb90f7e4f86e5c3fd1184a53478f7b3d6eec62dcdf777f2ccf690c31fdedeec6730c3996dc47dbe7efdfd57b26bf8f3ce2cd00f68bb5d3eb39e83eb7aa5596142ffce9bd6daf6d82fb4c61b39787f96a05ef95011a2fdc92dd71aa565b6e2806393dc92e0e3494b6f92046de8154f104ecff2fda0b7cd442bc199ea39da3af49de7765de5ddb74e22ca21a84ea252dddfe5a4b0fafa5fd6a0c55239775af2d29b13f9b24a3e97d6f24db791fe4bf55bd9d82bbbff9cbfaaba622d4a58a5d932bde831180f66de69f50bf4af3a86351a1c7c269887ab91bea9fc8bfefbf8fb503e8e94d4b8ff4daa9372e3f497f7d05f96b91e4e180348ba8062431bfcab6f120252f2eeff818331a439b697d54f6f407bf10b51f685f65eb3a9ed9e4f352b73aa685da6f3786e74b4b621eee993fc551ab3c468f898afc9ddda51758554d31246a53706ea7ea378c33cde3a8edfe9cdf3c303ea34da0fb7215470f9d3c7856dc53556307de39d60c449fbbabd8acdb2b6788b3788eeede4995c939f810cac11cbcc4a67c1b520f3d008e247d5fc29df82e7226417706bc8eb0b7c79e22ea9be7c5207d7bc84dc7d596b46ea1ff942abece1ff5998fd1b6222fa99c74de4bd7f1b09ebe9f0306cc9d19cf17c58337d41c7c22bce94a63137d532237e7478f6cb58e520dff177a79862a5e567dec6cf88c354d4bd75833bc77e17d843ee5ecbf2ee8ed3488b6a4d1655e70af4b8bd6270efc3e043d03775507da7f28266f4bb537a3ce37376e55837adc5683735abc27eabd703bda889b1ee3e449998c740c5ee8da39628e448ddcaff550ebb7e4544be467f4b8ea9e1f62b64d00fa044671a538f187f5a098296c95da676dd417f59911ec755ea03dfbe49cf2a09feeb7cf192acc3104f150e3b9aeabf2e10af99c023c18a7511ebb7cf3fb438c550d7433278c16974a27aeaa032b9efa2d6077d6deffbc57f0f0cc6afc60fc6651ae84efcc4f72e2b117ce6a17ff272fe0c28db4a66439a51ad971202166995684814ae5d3b7ef7de7413a774584f3e323f4482f30d8536f163d5cbb18210bf59ad7d8e46315a76b1b6b7c79d8b210d734aaaff7be907779065358dd6e8e3f1b4ceb041c68fedffb80e0373daca9aec3effd87c03b95f878d36a4bfe243ef855d9eb31e88d17da3bb3f7eafec75869ad268d0ffeeecb690dc7fdbacbdb15f6487b1f42e575e4e3bafb8431ae2837e8952dbcded7f076448f7a6645db9a3ceec4d2f5c93776a88f6d7f1b505be4d768e393bf45a0c7bb7178a29cf22ffebce9cc2dc691ed4c2ad827dd246b502b33ce679a0707f140929c3ee337d507b2a24d64622dbb092de2f5def14e7d58b74bfe6cd27f437f9ddb5ffaeb57c23b2ddad840ecff031faaf786f70c0663b4d7acbc29af3967c99f6fa4615ff1e018229e3d21aff831d6ed264ce9ec73858bc29eb75d8c972df1c29a0bf555b36d75c16fb02e5dd00fce3cf3d49d3b829ef9e797eb58ba1732017ce3b275b43f7a85e78878adf68410f3126e1de93ad7687bb9c07b3ae938be3fc7685cbab0efa7ddd845ed7ee274df3db7cb7870a07da4c8f6ea9cea5bb7a27f77a9f6b4f9868f08b7f84d33de3e7ebf6e6c9a67c2b02db7a3fb31e2884cfd0d72c8cd82c6485e4e1af1709c1e4ba11d6d1cd27bc9579a1706c715696111d69d79bf155e517ae199f0e559ea9f1ef0da19b7741c910d2f11f8495891bd30b06e922f77c27bb817cb3463a53f5bb84b8c25b9ddd0bad8941bfc6e764c1e6001e53880ff646f554abac4ec46df00eebb09961be88f27b57f25ffd5245d9f887f4b632b418d8da4f65bfa76250f2e8a4f04ebee95b8450b3b20feee743e052dd4d88c7b4fea3420aeb09093a1f2968b73672cc9f73563169d2b6eb567ee94ee359eacc76c477d1431f8f3b18dc3733d162fa47bf2d3fdf5bebef585f6972ac5da94e07685756bf2568eb3d113d4dbbaf8877a8ae4cb5b99ab9a7c93b1e63a3d900ff467d87bbfa227cd30fbd627521ae6301f1103718175e284d7f5ede8ed449c377c0e75ed21e4f4d4b364410558694fd801e1b4fde576483e1c2786f94894fbb0b6d9f1b8da699c87b1d21ebfd473185d33c4162f5bec530bd236f1ae3f7d0fd4db8d965e740b1b5ca352f6e53ba8fbb7959e1df7372baa55d99a93be0eb537703520adb318f576a3d6876f6834d70cf789fe39c4e7929ec33250178939ddbb490ddf5f7a813947bce2027ad735796ece688dd335e72369d6bdaa776bf87ec883e15c506fe3ea477933565e2479314e0cc0ec2610a3e0f9d95fce7f1a223f2aae1a95af4f99f13c0869cf270d9becf7053c61c42ddae85af48f35f7d25aa3d6b3d897d84f201fc16a533cf829557cdd463b39d073c985ba5555af6fd1e6b7adf3b3a9f6cbbaa2872c7bb14eb07ed9f1789e93a6b66711063bcb1dc2e5639fe36b1e0ab96d9c3694eb1d32e86b8965767dc8a92aedf5fa3c44ce5743f85288bbc373841e960b6b4031cb779c10971f73aee6e4348471ea45597dc15a6a415a4a885b6bd43a9baea7d27b1e2ade14f7ecd85858a01fef59b1713c83f643f7efe28038c36c3e513dab416cfe63adea5ff88d7ce2a8e37b96ce5cc5f14cf96869ff485feb341f9726f58ee227d28620de5eda3637bccf57e53fd5cd4dfbe0625fbee831b5a415dec519a32e5774a18623a9560e6b52d68ce5867cf04c137af9ddfec96fb07ff922d17d59d0a67a69035a27ac44737c43f2ae0c22dee5393aaed845bba87dd4a9030c7b6c0be52f19936f9b083f48a3b430028334f3d3744d5e8ae92a8f49cffe93de596cfd22ada72361ece653aa459b8795a7d64737dd3dd33dc5e40d96582a96bdcf5f3e2295e78c9cd20b9cbf6102bfe3fe8a9bde5b6c31c1f9785cd58fbdaf8a34096fa371e5d21cb9c3feb5e471c66e21d402dca5f73c2849078447fff11d8543fa4d6c3f231faf798a5d8d85624bebf08c7875d8dbccc3a5acb1769d8717d43a458c384b66dd7ea062fcc220de6a6556b0df192ab79ff25d8cbd34b3152a3f93c90bfe2e3623ec4f506eb5bf71d2e0a11c8bd6182e3eb4ffbc5d5fa937c5eaf067ac1be998f0d107e5a7c9ede47ec1b875fb960dfc103feffe9664d44f455da33fc41c0be28b9186b4ae47d43ff40c19eff3ffe66bcfd08ff829913a67e5aac70f6348904e2dd60f4ed0fbd49ac777d7d2e7629c62c3caa61c5df740a7a44354a5bab66de835261b7ef66b8c413dc156fb32d8057125ee630addf32bbde0a3244d65e807b9d92eb8a1be88ca1712e15c29be4a61af7452c29f827e8c2bbd00ebbf5857330f86fa8d41b57149f8361dab2d7adf129f4db0b76fc9cbcfbe980cbd7485f60aa7fd85dbcd8debf80379205c3adfe28adb9172d9197c7bb57f291f15e0d033abbbb7ffed39a1e70aba59dd3b4dbb3d437b6e46fa59577981b546635021174373f65a476b1b03d6e11f936a722bbdd674fb8fd9c5551ef58da9deb0b08b1f6236a963fbd892188b11bfa8befea57e7dd53abfe91d2693e202b3208ea8bfcc0faf58bf3d2ea97e6c935e31db47bb98fc1777a1c6173c0f7a1cdc05e7ab835a00fc26297e048cc925daac775c6b112b0d225877763e3df3a6da7e893f0d3f58629c5af1e7611f93ae875ad79d746fb02e9b5a57f227f64b9bfcf08ec4d3f297f661fc332e12708c5d3ca56b53dfeb6bb4df29afc2d89502739333bd37def201a7d8ae8db5461fc51009e538ad78829a0feecb5674156f5ff6b45cda11719bb14658612daed2da6aea7e7cc072fe108f932f2a97e71783787bc193f883276dbfaec2f1987fb62fe63fe45fd1c5ef11c4d55d3eb0c679f5cd57b98fb3c7278ff2e850f9e948e20e4cb34d75fd4fbd158e3cfe7b6f655b0eb4b7a1ff1bfb85a1ae9ff5b1ffc947ffaf49ffffa553d6c1204e559cef2a6eb95e2bf4f8db29ae38e27d42c48e2dd24ac754ab943cdac99ff9fa855fcbaf5d0c9400377440bdbc18f41f5e756f0aff3fdd3befc675dacc4b4f5cca863ff6b3d3023deaa4ee8916fc081a1e9939267d9c0875d50a6e286d9d82f42f6fa331d6441a7153356888bb79388c9adff89b5f883320ee5d407a2029c4568de604920e1d4f943e0fe865827efe317ad371f68df498bff41bfdf20bff3c16c883ac9f0de9458ffcdeac823e4536f2d337f476dcfebe8f63105785dc04c06db962a239e30a73170bc421587b1b738460b9ed3d82e05aa75b42ba63f6fa05d7cd3ef6fda9be9f3687886223eb407bca89b4a05675b00f491bcb1ace888ba1ead9703d5547d4bd5e755df2dd3a294f5a8547adfdff721fb9d21168c18739ce0ee3d2053da19921d6abd48f0193cacfcc53bc457fce9fffaffd0b81fd0b4ebc6406fee17fab47ab5e793831755f8661be9fb4bf4daef494d876d982c76fd5c5c2c81d2c75fe247794c3176945fbf554c7fb987f27bcfe28213e75a3acf984f978754297e931d97d278db547ced33cc7efcf0d3be47bac758cd68455241fe1455b0d08bf59da01e2458f37cc839c85bd3e68bc91f2d73f29fea91e5fdc382f09238dda2f116fae45cf2bd4e75fb6882be1c4ab6783123539e2db690fdcf6e3359efcfed07a36638cef4dc4e5dded1f12e77e9c8b45bf8681c742f876220c98a5efaf8d3f55fd94b317f8d6cc5d2527d25b79a23d83a7eb36c61a06f2af5ffbe735d36fc7675577bf4cedb1c9af5b4c73703b54bf898da1d62ea06f49789017eb40b8362bc3bd4d92468c019892057c77f47727dd759fad262671b90c8adf17e0e9f48ad8efb6e4b0afa6b947fc63162a4e157830d2774ab3e1498c61fe495bb07e0e4b87f1f818b5518b3c8bb4727f18c3d980f473e23033a9077f215c37cf8396f4d1e3a94ff5fcd765bb266fc5cb1cf55f4beff956a26f7e9ad7f4bce98abc23ac85a5f5c960efc808abb9dae0f9f8c9eecea7740437cd3bfa2015b096c6178618e734754e94e7573bf64a7dbfc8f0a798b74ca2fc4058c7d73225dce8ddbe8e314b2c8a33c37a8550ef8abd51af5c6b07e47bfa0e33a99edd545a63217279180f062fe823761fcfc99c7870a3f7ee9dab7d358ffa7c40e1594dc0dfb9e8c96b08c42cf061777e8595d91e48a7b850b57ced918bf56a51013e06f7f7f98438b56230471c7e62c7a8638c18077b3d5ee5ebefefc5165a3ff4db77d17a3d7e507ac0ed13767cd23a70f43c76e1e9e7e105f1fc9efa7ba90698f36d2bbdb6f2c1dc43bfe994918ec174992266cd2ab4b66e9216275d2b9dca00f28aaa0d8d0bae4bd71479daaee672526cfcdf71486d3cd1b8c7c3923019ddf7a39e2fe503e982fac069455eb5c23f6a7fb034461c97fffe6218185b631f293911ff319f4f34d76d5872aa818cdeb11f7045acdfecc5226f90b09b9fdd37adbbb5837c1c552f95ea3f6d813cd1e3597a0b15a32d5ac4e502dea61bbf36c6d169f91f8e9f1981d6102c35a6fe5b1ee32febbb1e7cfa7b80b84ab19a10dee4f4891a1b6e593f0fa8ee9166e60db134c53c457f4beb3a96a8c9767f2e49e712fe8dce557977e7cafd1bc6100d9d2bce8371e536df78ab058e1ff4754f0b8b38966cbc6cd754eb3128e78d6d46b8174bebfbd9ff68edcfa5479e14dc48e8df5cf1023a128d4b9a7e2572bcb2b4d925df6297bebfb3ac832b23fc8ebdbfc6a4416b07538c978daac6353667dd9ea6dee1728ada5b76e155da8321bc869c8e95ddb1ea1dada654a7117677ae85d2f17248276c1fe79cfcebd661ebd3b16d77ac004f05adc187ef0bd6a8de933f9529f5533197cca8af1852ce93ea39c3473467b02e2bdee3bbf9dfe34a46d8833b1db41f3969c1ec7e6beffdd0455c93193c21ae89384a2edffc73d5f1a6f2475f5c438d75232f45bfd5395ab6def53e5bcc895a395e350bc42cfd8339224b561bc258202edc7cbe74e7402ed36bc49b324c691d1466861a871047354e64eeefea05fa3ec8578391b67f829c4a49f740dc4a5823e225c59bb61e8fafe5db897563477acc8851df21cdcc16ebed89f4167fbcee7287f554c23fa52a567bedf17cd2c5e73e31d0dc1fc46ee39653ffaff8ceb0fe01df39fe5a8319dd708f9885b69c006fd6bf5fa7b4663df450d6eeb2053ced928bb9d65576d90bc59f146787b89763fde88d7cb3e788f946ed01e80b6fe1fe0af2e83310f3d8ae0fba7f9035c4e7399788ff90def307fe37e5bf0e6f1960c4ed62bc6c165ff2237f87f190c03d69477ea1a1119ce79ae3f1cf40ebfa4c46d4bf53b5465907e752e749fb0fed070638ca693106bc38cbc27fcbf90047f7f84c5d2e41ef05f35cfc16aafecb0e6a1e73ef1c73d39c193066441b525e7d014d74c06653ff26cec586f8700b5a1b4d8eb5cff5057928c8e31fbae54622af97d37e3dbcd7238e5336266d3a9d6766f58db0c2c4578fedf5783965dff6887fe71afbb33bcd82affc7b27b68c2179002e5339063feec2c367bca0ceb01d73cdeddef6e353c5ff7dee9c8b866add4be3679d801275d612ebf70de734e9e1bd1698eb76f966f6270d06ecad72f47c8f0daf8d051f84d0c375445be1f7c3be6f2bc73f6942f4ef0d629beccec75defb3b7d1ffe37dd674126bedd1dcd0df3b256c5e330e5dd0019e19611b6da59d2a5d9cd133622e0fd176d8e2f8dc529e4cda088b3c301ef557d827d5b6ee318755eb60df499ac9dbf51cd5aade69e1bde692ef15ff73e9f5fe77ff230d08eb30fecb9873855b0cc5b8dbd75874b7cf7cd5d348d1d722586a6e0ae9967cd34bb8be50ae673f53fc1ce3dafd493cb6ca465dc72c243ff66935f569cc19e4d7ceb386742e832a254d53df0a1bf2c4c1585968ac98dae79684d1c1733fee3d15f1831969fdca36882157683e15ee4ce109e36b427ec3e4d5c74747fcbb93a601f9cfbd522c389f98b0c6f05f2d8dc71fb1da6a7d10142bbfaeb6a46b72e8e2b0f40fd752b5667d0d3b1857dbe1f3b71c291757d2835fb6d0678fac785040bfc88ddf8e675d07d331d261dff78587f86d0dc4b9c6a744bfbfc6293d76895a417ac6a86921002b9406a86921bbf5e929da88d3dfb02bb0ff35ceb20e4adcbbce731eddefa54a4b06e3e10fca29fec31e4a9cd8bfe6f8895a3ba593d4fdb9f55e6bae3fbff544c887448833e614d3a5171c4b8a8572c44af05a7f0318574a63d60d3979409d0ecb2602ae38ac21c7687bf8a47cb9b4865c794465bd360be20fa0be9c63dd9f8f06badf6db3136abfa7e594fa02c2e8ff1e5ab4bfe0f8f1305e7b455f853046cd5fda33eef33b159342cfe89559b48e57f49e99249dd5dbc8fdf1f786ef14c9bffcde0f154fa85bef08cf01da09dfd79ad00bf6b49e84db13e246e5b87419f1b4ff65bff99346893f9bbbbd9f6e495e31dfc6cfa88bebbdbf69403df6a1c333f2839cc41a3de1b73e45db7dfb337e69e4c4b79147f3a2d7f00cf6217850f6358cfcd0927ff72a276c81f989dee835c5353ddfc3276f52863e3a8ac3fbe5df1c6e07e83123def5bb9e1c9043d4bcd37d2c6b1ad786adb522db853e1f537827e114d950e37d42c45988ecd27eed9fcc6cda0bea8f0ad7833419e17acbea17fd77e34c7f4f9213adc7fa7a91b51eb337fc6fba37b5b65cf1b9ae7ef64618cfaf39476d812e458339871c331bc716e995e521c5d442ba149f106edcffa81ad26df9a7e56fd70df01fd55a5a32e2c167940b1d9cbe4f893c2b3d9e1b27dd5ec74ba5457572045fa0bffbd0c077576a9f6b8fb49f23ba37ad015792f6bdf02fa1f9dccd49b7c46f9d6d0a1aff3b8c034bd00ff1c7216a99954660cc35fee35f7a35dcf85903851f3f2896c9e0dbffd493798db83062ef2ff9c6bfeb5e1d488b21b52847fec64b3bf61a6cfd1ac1a684873dd925e230781a5d40c79e7d469b9afa79bdb65cee11069741ed363e538d20cbffb9294e55cac6c554e535587b87f1141b47f806bb90b8c6f7df6016658d1bf69a79fa1b14eedff7d7f41107f3897d0527b134b7442cffb2bec5b9f3bf59dfdc5e03b326bda26fbdfe5ecbed3a5ed5c7afdfd990dabf45ee297e631b674e3cbc1969c5dee1e7aa94f27c43e596c5d4a39a93807ab2e9c89a9552c5baac9bf3375ac3f844f7d577d1f677f7dfafc05389c73d1ef5cfdc8532bb0a5a17978fdc854bb43d1d0579304eae0fbc95aa0e4e747c910d8ff7da612adfb7f0f8ec34aebefc36e4c1957ebbe2c1edcb75df23bbd19a65ab5dfcc03f2872f537a6b0b49bd8d6de510fb56ecfbae3f8b7cb9e5fd312fe306e35c6f355cf29cc2357c451e2e2809aaa814c0bec7da0b6a4fd8ceb7f489abcaf65cbb41fec4a8f4fd4f6e6a6ba76da7d6fe24d185ab797fc46dd2f1a2316f3742d0c62a8db08ce673d5f7f58c7ac256a3a2c48b724450db21eff749e7bc4e13e12b6621a66eb199ee3065a41ec186dd6ef09e963d922c07bfca43a6b92fca2dfb3654a1cdbc66438cf575e68926ef75ddde723443faeb4f54fc9831e086275548e8c1e19b7d138741bd42292c6dc33be62746c89fe0f3c5b1f214712b7e8ed446b9d19ed9ea9b61c2cdb8674266f21d696f13e5ebbf897700850d385794135ead8a6ef138fcb9df32d465be6c891209d013b3453ad67561cf8d7352f6f2e2962a3f1f90725f6f0f5f3b76c5c91decd0fb9c00fcf1f47d9da5f79c1003162a88ddb90cf6843b94e64512fe9887baf4ff36956ede404bf5748fa12a5aeb59fc69cb4c737bac63dbd8b5b7b5d33c286b618df915f86aa2584e7d8fdddaf5fcdf30ff3b4df2b008767c25cc298883c33344e1bce5d445cece38c7482e4816adc228f286e7b8ab6b5a1fd3c36a49729afb01e9c547d24811ab21b2747ac7fc77ea475e9ae11d5ab92b1e2d64d33975f313f093057b8510c8c3d29d206cc11e7d0ae8883d506145f0ba8bf338f6bdfe221fd2da07946e72d8d40fbf8d2bf25ba86259d381bfaa14b7a45f22ac977cb8ecdf8ed7a503ebf3cb844842fd4fb92400ce3e983fac1c25ee8ef5d690dce6047bdf0c4aacea0c3a0756cc9139c6ae4fb59bf269036895812e6c41a8e8b36207ed87e06da83c162137de05a73ffadcedddc4c6e172baad97b3cd17ef7fa1aff869b5a08ad51ad71533de7aff8a43819304e8b8b44bda0853538ff0dcbfb8718c665e8cfc8ef7bbedf6b014e6c8d32a531903be3f9947059a2d79bfca98e4c78ffec6823de85704697991951cf097c25b634577f5c53cedd75b8aa5509aa59a4d594d6bc7e5f2c1fb57a1536f37eae238f00750b4de2f80b6610efd0d073b0229d69ce0d49de5cb6b010fbf37f7b16c5e35675f649940dbf7393725587984622cef03ac717e4c83ed67464affdf523072254bc0b5c87500fc631c94b19f49b1bf2cd72176fff23bcd731daf917eddfbd59eb789f51ed3015b6d6c5f02bac09067fd118e50369d450376dc3167b32c1325b2b0fa5348fc773e51150638d8311aefd427bf5e31cf38c684b1c47765e628d73c98327bd8fb6ffe86faed69c4cf99d0491289c476d3539b85b2b2cdd6fcf0bf4623c8ce5dbe85bac56b58853c15c4be4bf69ae4e25f6c469ec44c0457e8aac2379b736abfe9c27a54fa5f6d6a1c683eb79967b34cf0a8a5f706cba9270f086e64659da2f30d71c1a7dcf21e973dce9a6c9c908fb2898332acd54e204dc79d964bf3eb006310b3701fa2a85da97b6d7e1f6039903572812fe57ddbabb9ece710838c8d086ff65e0716a781fb42f2f08f384f901f2aaf26aea738c1bcc0a3de7c1738319541b7bd817383e77063debd263e8a7071835ea43ceda823cd95bf231ee750f89af34428f1f53e9d4279c748cee345315a62abace703f53b5f24c282c5ae1f9ef85f12da7bb2d0579f8ab352255798ee6a4a97890e2f53dcdf3427bb936367e1bc6e8dbd8eb71ff3c274b1ae8d99149f22435256817fa5a7b82d6db3426cf37f57ec4747de7b3d6ed51a833857820b19337da0bca8d7cb8669f075666b413a863113b92f4fa04d3e752f57cc81993fed904f6de8415ed4203755919b3862f5f9ec3e1968ab598d29dda8467b597a7d21393eb67f210a79e284eedf23b436b93c0d8fcf63e8a967873b09e46a977c13801e324e2b0d417ad27de364f18e70b067a566e558797d0dbc37366bfce788e53b4db1b0ff18efabda7f58c31eebc3bb7873a95c220afd5d075b4bf516868bf053dd6be61b836f189f26e96995ff2ee67ab5f539feda5b8cf9dc336dac4e4796416779e9871f655cf1b7b1fdd1a8df9f122ffddc7f2bad62ddb257914e4dc40ecd650ebde638d566403f29bfbb1b751d5ffadb71159f1a130b1d76deb78b8d7f1ca861c3d6ed7ab29ea1fb4cdb8247d1e7e6ce75acb8e74eb4e9f620c71ee223fb470ce70186d1646efb9a23c1661bd350adccbf9b9df7f62ed21815a81ba86175ad7f40b9f0ff731c358fa21f6c2c411630556dac554f57255bf1c305321623317e4eb6eede97d4e97a9c0faedda9ddd46df34bf96d610f6bb8cfcc49a4fad99faf6559ff70e8bd7fae4438a1a95fe74696aac8d7bff9d0b3bd01e47548fbe1f2f2b5d7b54e782f96299e9d79ac0d28b89172998baef87ebcf9616f283acc378b925ae501f67cda7e83d9549f03acea59b6ec4bb9a2f79e1c66ef1d6fd5d729666f46f5bf3133561dd551d7cd2f88a73bfdb1715f6639e13776cd4960d3f2eb8cf565e60681e89cdba6ba8bd845926f9842b5cb7809a567faca57491143635d4efddb84978ef73e90517ad4d06e705acc6e420eeef41f5d9f2f81dd782d7a51d78d0bf61e3bbf3d23d388b54127695853be122d77a5c4d091731521a532968209abd5f82801e42cbdcafc70277e6ebb1cc495df48d4a9dfefcc21faa3a6976754bade78af8a1acf9ecfdca6adc4f2bd084c8c5183119ce8a0703e9634fd31ae13866fbc83a903f411fb3f3c77928880b4e9a87d9496358649fbbf4315d3222deef07ea4b3bb11d1c91574435a9634cf502f45d2c698c0a715463c9f0dd7472a2fb13cb8944bf226922f7cc2f764a2fa38b35c36eee3323985799843c3f9363b91d12d7f5bc044e88aff93bc9af2be96486e8db9c58b447871f58f3f343ed7786fc2163310c3176492da54ff99777a16afb2edba1d61eaf7ffa6d505872a2f317955b8457f2f18e93939d20deb0ca465493b1bb38b0bf46686b2f3b5a53047b62e2bbae5fbf4ff08f2e4751bddcdc3f27bae6a3f8fd2eee2b69988aef3d81bb7ceac59601e2ea6e92bcf020a6d947767c49922fbd916ca86bcacae7c33a90a6cd6bb8e9e25ca9e3d6ca7b6ef5fbb255ff4063d3e3ec3a5e69df8f5f4acf1f7c5d42faaef7e7fbe13cddbeae73a6d7b9ca7f00d32fb11f99de46166a898b4aebdf8d86a82341d8bf5b9c6b4f88d755dae8de61dce54d3ae756c780379835f4b42fb0f763bcf2472edad2c09a8ae2e11a26d6dd6e9407f57b599f07cd5da9fd18a1bfbdde418daf1f376c3b24fd877de90d687f263ce7d3d2d0b869ece916c4510f56bb46d5ec62be001dc4f1175f45eb4ade466691206e3577a207ff1f6bf899523ce2065eafaffe9ffb77fb68f39bbe7d1cb63f8ddbaf1e160cfbe2c8ab312eb7d23ba206e4614ff5ed325b033f858ff60cebdb09d59cda88c6102ba712c690edb84b55af513cde01eeddc19cb40a31d7eace2138ac31e09f7a3463ed65a2ea9c67d6e35403a8c13fdcafa96b571097b989abf272c5f7095b9fb04a76889ab069fe5bebb8aab1dadda3b57623c43ef7730ac639e77e5df61e330a53c532cdcd7566bea76a18e9566363f1f78f188d385b3fc6ca69803989778936c516d72c5ba28f7c59d37a61508d60a7e2ae147a70a9e1b551ed0f74dcd1f742bc87b14e3c28f2c853bc2cf0a7ac100f93a6eb0bd68437d564f42d7e025fcb83bbbc9d5ec80349e5891007923f99f1625477dee32c5cf13dad876a1f5852cd519f9b2d24c6a63168b177b15548f159b78f280c647658e0ef86dd3eb680fad367e51386c1ecee5fc551abed90df1f2bbe1ddb80bf826096a4e7879c338f7863fda831940b83b8e4ec767afd837f8e5e4b8a56ef4184ed3b871ab3885ae9f6611c522c2a10bbf9709cf6391b44bb7f749da8525e0d8d1389e6bcf2618c64791fc7dcfdfdaafeaeb0cf8cb8e156c98fea9df0293b684c5f26131c1346e5d15ad1d05ab299e979043d18cefd5c62bf917981b9446eafc6e0a43a2e13b057a1dec9edf4a93d23278d37fbc95faf8d906bafeb40afe5d45779656c3a7b697c8fb3c31df1287e59802f64b76853e95a7aff4eea0fed7d6237fb784cc7cac9ddef55dcbcdaae29661d965e745c70cf8a7631c4bf391bebb81abc671ffc936426356e5069eebcfd3289eb37439e9e8ed521ae4f23cef84b2bd0db69f449fbe27d8e7017cb53cced2ea9b625c4d773c61197dbd58472ee91d21ce34a174fadb3a09fb4a57bfd75793129e6f70813f12a55ce3e52fc3be48c8a6fe7ec72bcfa2effb89d5ac28f2db7233af6847ba8135b43437b51678bfbdf8046c56dd46a9f32eb202086f13fa95f9426f43ec36bb4736e9a7349b90cd598acf57d9eb2e3a4215a7fe30d6b9d8cd41ae1fb907b3cfeb5003eac5bd5eca2e7cc4ea09641b78678c3c85c58d2fc47ed638bfc7020ac01531ad78d9374fb21ea45122729cc680e1c1ee780513ffa061057773b22bf0e6b89b85fd46fbf50fe93dac12e015d8c85b41ad45117974a73999b33eca54a977506dec68dd6fca99afbb8face239abc877271d67899a9cf61bf8fc78473e4794cfd055abfde2abffeba4765babea662c3f518b859725791e7a8bd3e438c185e23db29bed62704e9b96443dccf4e8712d77891faf85bf94ee34cdf43ef6bf34e5a24bad7761bf9dff64e88735fef7c8e187399a7c6642b493bc60c313ee4e32fd74b1d8bb485a48f35248823f03d19b467aed55a3b614e558766d42a8d7037e2877446b921e74681e767e45390112ec03963ae7a8ebedcef8b757d994dc0eb6f55c7475d677b3bbdfc14abfc0dbbbe849851e5c62fd650e37142d2dfe0f58deaf9592a5bb82701bd181e532fe663019a4dd370477e68d5508d3da58b6da276efc8d09a7939d3ef117ed3281dc610eb66495b04886df0d88e344ce5a01b4f29f7ddcc2d861a736e3734463f30369d152df8104556700c39e83ec76fba9fe347f9da15d3e0eda79c64d152fca6f3e65e1726f5afa48fbab40e54571e4a6f413c5ed296a1be2ec7e7a0badf25fb9a432627daaf94d648970bce296e13724fb58e3497193cd3702ce9fb64fe3be9c9def78f2aeb4458d9a1c0f74cfd27aa637c9b078601bcf69a7f507e42b1dfb225ada29ff7c0c88c6dd67ba3f91117e59d7e8e5a57e65eb091b9af6adb731ea4ea3eb8f711edb4160cc54531c60ca42d1ed09e90615c88fad2af0bd04f462e3273f1ddfe745c8e319d1f71e9d1fec0ea00d7aed127c56a4976d439f7d2c558295fbb659f7f1cfb638dfed82e3ff74e4ee5b1cfa88de8df05f6bd3ea28d47b5d02024ec9768d0635db84bd2087ea8db8ef83d5e48a40dad0b66f476c2fff6f399a5e3fcbe4e650d2ea8257e89b6c6e587f942ef9b953668cf46567c665e85eb784c7d926e5dc6da83ffb46ca22fbd1db68f20de77445e502d85c9bca07c6c2c297f15e2f9af6b0ce7ddfcbe462a5e6b9c286fc6ea7cd975acfd63b24b4b7127ea4728bf14b56ee431f5beef7dd04e8cf87ae0276f471bac4d1ac593cec5dbe72be69aeb7e2d3554ceaab47a78d01f7b57bf81384a1c69ee41ce09bd9cb266ffea9dbdca09bfe83f694f56a87534f037d389b3a11bdae4a90aeb556130f4326feefd561fb0848067261c2f7a1c66d24d498f77174f08af461ef188197413f223ecb11314239d095798684fb8c2a27d44c5e62a2f5531d010d7fccfc86894f6b5d2d1cdf716d67a06d1c623cdb394f4f0489b2d45de53d9524c017d759e47b6be9e1a039cfc0b196aa6dce289d1466fd7abd23337b467f57bfc76a74bc67ffd51972ce5de2dda410cbaaa03e76f78e13f6279740e455e897ff71928bd00f4c140a7704175a6affce8385b8f090f92d895f53816fd78e5525df4d42e05eec36d43bcc5f8a7e3bafb120a7f149df5fb6f7f0f22c2d86bafcfe24471b36cbb31015afd25ead0f7daa5be28416b7b3ae7c191bca87fe6d82e1073e76fc2e4c47fc434f498577ba5b9bfebc1bd2f32e830624f2ffdee1ffba0d987fde0903f6bfdc9d4fead6b9fb2a575f2f45451dc625d065a236f13536d41f4fa6e77758edcc35ea84f1c969a7a94da07caee6badcca55aab677fb91eacdb38ce97d49fc9167fa81da24fbdce9d464e6cadbdfb7ba45e598875f914fca8eb55fda7ef2e88f3ee96deb3b5428e5796dd71bb688f10f2a9324937fff9d2fdb7aa6567d7ef3c30515fbbbf73c367332350f89224511a67efb120fcd7f5474ee6b71a1cf5ab33e9dead87c31961b4925fa8c1c26e10bf32bf40bc6aec8927f2c6409d960533aaaf790e79a768dd5ba930bed24972d49a272ca8d67f62ced202af93b8164f73c437293eee8f735b3ab1157d9486f6127523011c185efba811fea3a6d42d035cf33edad5e49f5b8429f9039ddab0d71d3442aad9da21e5f60275bbfde2eef7f80c25e15157ee1a781d221eced1ab61c10177bfb0f7f83b6e432d277664867eb75c5a2f06ea47e735f5adf3d506cf67afa96f1257627fe489c26b5ad196c6c0e0e34ffc842a415c3f1fdd28cfc1bf6d9736e9e13797aa1edce120fc58fdcd17dd3872e5148ffb920b94d89f48b89f2ed1f76c493e1796c692123f26af72ad856848be40edc0665c79e439c0ae3d8fe9f91b8fa9201e93ed8c09e78d9a1ae56af2437cf8373c39f97f9bf0beb23c32095f2e331d136cbef657aadbe9f591c7b03ef0f17fdb33418bd839c62a8e62c7383f1cbfd75fff8069077fb17fd1096d086f1bc8b620efede312eb8899fab6e21259a733ea47a5cb09f91837b7b03e76f1e556d6c1b5f414777512a5de90f040e1946a87274bd60bf0f4cfcc31f254a7ec471d3fdfacb0e72af2fd30797bf02f1d128f2fb620d68facabfb2f7854aa6504117175ccb5cef34b7cd6efba4eff574e8c7fbde3c4d84bb3c710b1e60bbfa1255c4a3324cc66069c3ae2dd7951eaefa98e2d33d2af70003b9f5d5da1315cba6f995763acd9e0f963435c67f4bc6a8ec990bc9a21efc4f8253b8d31cf1280f91929be9cd41ef5d555e5355f6a0f657e50bcabca08c0072c77c651febfe76160dc62617e69921ee692b3dec3a99527d4a5b850cffc5fc6c30ebdd1dd8cfaa21a7b75a727defe4371c65d1fdb3343e3f2a0d5ae6269d043a318fd56f1ef9a56955d9067dea0521c3def1a8b78c74cd0c108bde053fb42f5cff41959cd41906f94f6beb8f3b0fad997cf4ea01718cb7c0d3df1fc3006ef8ceeefa71bc3fc2f4d9f8d183cfadec294ea12fd9ab8ca1dcc810cbb327e41af2f3375ce285dd23ca81efd9bd5bfabb1e796dbe6db5a7b8787bec31ab06b427a2c302ef6ba7f6250cfaf216f9a54baf27b1fd766545b3d46db131dfb4a358fd05ea7c0dbff6dac500f33454dc71475fc12d4cd2b6b5d1f57df06fab3bfbf7f5b55cb507d86231ee75635bbd2f7cc04c485c23e1c493bbbb04c95df24d91a7d177cd1bf4bc09a16538fb0a633f0706a26abb76e4e9f9c8417279ccb539cfb29f25d4ed16e6f7fe58ca07e9293e43d0707fa4f1a3b8e75e413e12648ff4114e437c2eff9736acc135eba2db1ef99d4dfb8b843aad1f57c22c3929ad72de11ca222addb5663e9ec7548e31dcfefa4d96ffc3b9bff0b4f6b87b1bd9bbd8dfeca7ffd6ff3db21bdb50be13379f2cbfece4b3e819789e1bbc5c6a1f1c7582a2116312e068d8b3477861cbd4f4bbb81b9999963d2c7aaa64d4a3cfc15d437dda517530c96614df369491e0e90dfa451ba563192da37a8a6a0b57e7e5d704cdc22ac292f8de71bd51b53c0eb9396b11b438dd28b11ab5ec0bae32fbd80f64785e92a32b54fbd453df6ff61bd17e3afeb3dd6592df92e7a5ee7147c8d54dde8126d0783bfe96e83dfa3a974b8a00fbfd69a781263d72219d98433fafa9dbbe79cf36723c43efb225f1f52e8376e438d7b14ef9467dccff9c20e606c66a899983b9f09f9e3dd4ec4059c513e4a3ed622477faf4c8ef1fd6d68ff8a35ae4fa26e0a5bc4bdaf4d97477d46e86d90181a8744defc1fda4b5fddbbc2975c2472121606d5190f06d4e5e4673c1975ff3debd615d57310dafb453c8eb14afbacdd69eebfd37edb7b4f345acf1f746375bdae5d109e91bc61ccc2f9f21b3721dfeb9ca9383a3606f86e598b7d8235f9648894ed61dc3023da36efa02bca9ebfffbdcba5b1370cdfca9f93be8aa8cca519de79b6c823d5c1d87644fa1554e3c8b597209757f2e153dabeaa56fa4cc7055f7c3d5dc2735516614a42f481d17dfc7b6f447a2ff8cec41ce7ed35a4b555ebc73457495cc7fe7903d293165ddc877d55f2f350da0c0ffc5a55471ef6ba90e8bb641d4853ec5d7bc840becf35ef9a74a8770b8b938e8d279dd2600a47c28cc061d6e81b17eaff316fd7468c7c1b6d9e49d36b06da82b2d7b8358babc60be7c13b8d0dd4a15fcc49eb8ed7c325d525e0dc71c49b37b993e3ff4dbe389f48a8090ba87b17bbe0fd1baef6ef391cce01ad073b7b691be41c49d0ddbfc7def5c74d4b75cf2327863d4d733896b950f332f60ec717d27eb41dfa9dcfa605f6dc4736e298089bbb4f1f72d7d19074e957f52fb5d7ce79f0be245d985bafeb1659d731723f9c242d5e70affc58127e2c939ffa785b60bfe0f43933088fd0681f9a52c7b1c77348dc444b5ec883ac9c52ad12e69fe63ea605799d040561ab5a858956deea8cfc1db979ebde6b827adc4a4f7ac7e8bb89955b2438479fd0dffaedbfac1789ba97605751dc99ad2ff4cc7a0d35d73f8ed3654e5a82a7cfcaa06736090b329be76bed8157e64e4a9805d6506d17fc5352556751b5cf811a5b465fe34db3638b988957a869579a1b87b5c26bb409075ff939823012dcd47cb514701a4c92f6da630f14b8ca99e92570fe61b4a9ff76deb6d732229c3be49f0be2696d1aed792b73e2cdfb37d2da43ed3eb7d879709de434c56baf9925c9338c785836e15abab819f00fb82fa46bd287b375eda2df132f30ef65b0549847e1249e7fa21e1fb77fffc54784eda35d38d018b08dff436ed318bddf0dfb4cb4679a7012a1bc1bbc882377acfd87f4015f41b3cf84f55ac590cfd75e1f536b917d54beee9715771a44d4d37eede62fc4e8836e3f6e54bfe98d30a90a677259822789c32df35363ad1fafdfc506acaf1bebdf3e698e5cf6c7df164bd86f79921f6cac3b4f56396ab0f25f8312b1618bbc3031e6c43e0e3f134f01be8148e0778d8a93588df829fbf98a73202ea9ae2c8477bf86331ede5e0cec9da5cffa3d4b977c93fd83ae4b22ee1d72336e46edf307d6d25ec34d81ebdcaf366c40f75ffbc1f7bec977f878a931ccd0175c8f1f7481f92f1bc774badcb04469546a5f53c42edbce49eb5e6a3ed0d7ebfb53c22a3ffef6a0f1187ffcadf0b14f7e0d563bc077454631ac0ce4fab5eb3df6bbd67227306f069c5e9c8c74dd5ac57f3ca6dfbd27353b95e84192a402e7abdca0ff778dff7f8d3d55d84f3339465e701de5ebeffb6e66d2f390266ecbf805eb0db4efc627f0a1612fe566fd2d0680fac84ff55d3d3782174be3214d5a1f136b88bd0281faecb1c3346eb26abb180df2d4df03d20f6596f69e7ac0d2cf27f8efc2b3fbf31f302e62db17fa9d10a84b28554e036b8a47ebeeabae39690de2aacb6f639c0ba425481efb57f9830788c63364bf873f701b3fe614a72427daef73f0ff2dfc997ebee638070faf2076918f95c77e825a938511dce6e25b0c4bb84256b5a8bfd60a97a1def3222d2694032c8023bd89386f497f86f494a8f700e342790a06115f2336ab3625e5fed9c9a4da92eae374e3ce2ade35d7437b9b1a67d033646f454b756488d9f854793276efdc93b643baa5038ce55cb13d9eb5cffa78047d3a51d8e4d3ccf335ee37b85758eb717f5df3bd204c98e20aca2eb678a2de2da73d3f0fc8cffcb024ff166b7086be8ebc45c8e94ced83c6b7cc2c7e4cb9f7116d019bc96b7f2801db75ecd658a53f96edcf386edfe4ed44fa218317d8c71d9ed71f34ee96ae24bd390bfb672ccc4ce8dfd2bcb24ef47d7b0e88caffa1e69a605ebee4da17897a5cb3027b8611977bf6156bce8fb79e47a8e6da9dee98d9c5536a9f2e8438d06fd3dbe846bcabd5ce093196b543813e7f1e8cbfec877781f3e429d45a8bc70b8da36a2389e77ef93fbf07cba37a29e141fef01eb456c1acb21dd294ddebf501fae0e0996efb564c1c1dfe5bf573623e1c841ebdbf9fb4344e2df90f14d3fd95c66ba5b419b596cf29aa9547bc3e5762c901680e2bdf2f85758d5dd2b4b91b47a9d43599bb6f4ff1c374353ea1affd48bdf3b43bae0e3e428ac1ad758b7a29f96afaed5b4ea517ea78fcae47d55642f79441ab787b10e48b126a2c7a75c5fccc495a87f69fa9d45a6510cba7863fcd5cfc7b5a8ca99e0b7553ef16edf67a2d0ddd26eef11beafd19a5e6d7365a13a65f07c487c06fb6b4c92313341745463ab8145f684c01936943dfe7d4dd63a9f878c193d6f0cad995f8f6dd58e8fece11abcd3dff536bdd66a35ea7267552d28d02fc1dfba4775272d253260ee611f07279f32c20a6699653d247c2d8fb4e97326def3c1d7ea81586dbabaa15867c3d8d0007c5ca6f3da4de7b5a52ad261b3e938f4682fbed6a4bb580664739adb01706f024c361b425cd41f3b248beccc7d47fd239688b79ae90c6d2ab95c6feaa0edee91b94b0bfe625f9a0dff45a7188c8e3d5e08ff57d4e1efc870f8a77b4debdcd503f853d91fff322f5f571d22eb4266628b4d6948ffb66db8f33ad85f4b184fcdbafeae0a9fcc6b782de561fe79b7aecf1768d3a19a11d6dc4c7b7d82c211c38c49fa86d06d86a5bf796a0afc9b98975b0499c1616690cdce1597c956fec1cf28d410c7583f88bdf583b09f0f9470d7c97dfddfdfb5437490957679dc4d7b925f302e6961d8f5753c1a98f0af9c0c2a03a5d610488d9f4aefdfb949a4b2053f4571238367e7eef76f7de95278387d7c26789326f7877bcd6f029dbc7b9c75b35f7ee6b3954773c658a27641e63fdbe11f7a2b909a7e35dbe0b6b805ef384d9cd6185df4ef4780dc4ed4177903c9d3e97a8a31e72aaa3fab84eb2097935d37c5962dc9326a32e766cba3541bae0371b67baf6afbd2813fba063febea6f5cbd4b8f99eef70ed35308a0f41b856cc7fefd673b84743e7b101e4df2767d5f073b4f1afa2d7b88cb5ae9c555cab7a7014dcb3489377a9f0affb7bfd3396e41c63a2a1b37431defe2ffa71ed6f4b6394328d6bf9c820eedc471be7ac75a43795f5b53728bde04cfd1fa51b65dec7d68dd244ab52eab5823793d8c5ffa3393b9ff67316e691c2f375fb0227effeb095f4ccef5a9732ebe69afa6e1f2162b1451e0cc17b9eede354e45f7332a86fe9ba3ef8d7a29e74055c7fb7806b67886f9d20bff8146db5b6ea9dbedb896aeb1fba3f605dd157ec4afba451bc7d596fad5188b9e13551f946adebc232472e432e708d88c967a429c7142ff7bdf1fb3e167896291ee3a0f22e845730683cc47945395d8c6be047b48b747d4d2627ad2bb9c27d44d7fd5bdf23ae35fef6a1e6a77f7b1b695d9214f499155e58f706945fbc09fa25eaf90af243467f3cd41e330af2a59fadb63fac21101fdfd5a0c376493155cfb9600a2767cb337ebb207dd09af5d30af3495d4f279f884c8ee1bbfd1c67c5197cdfd823afa986fa7633f47bdf926788203fa1b4a1da5d4e3ab1dd9ce2dcbb8ab61987c63362a1a8dec12e51537fffb71a750bd05f6ab1f51eff7f1d425cd6fbe97e46f5f15875e7c919fd9b1175f1caa419ab7150530d3098ccdc60ace621fe1be301de2f7308735fd5c182b4b648b7e87fe081e7167fc1512d6cc2518963d432e3d12be26eed34f97161f8017aaa98d16eff71a76d00d85b9a3319db4bf4fafe79bd1497a8655a079f705784a7f909230f3d3bae39b55033f433e23a27dc3f47db83df8d93a517387232fc5ff8098466b4d51c12ffc566c4b7e8352891633f9f60df9bff1a2ec107b05bc33f74ef356f2ee0ffed8bd03a681f25f465fe6b9cacbcac7de6c476e0f69e0aff13ffa2d08c76523f07db699d88db5cf31bb4860171467bcf77da63efb0e5cc50b9ef94f180bcc3eefdc7db47edcdf04cfa28a9f5bb7dc428773137c532e8539dfdc6781174237f78ffe68ba9ebc6eafd576aac9d289675431e7cdee98492a7d2ae347e3de4887262222e561eb10ee6ab9cd4f0bd283bfef0cefe865d17d7d288487b41805665f001dce6e6a5549cbde37161b07d64c6c7923808e4cf9da05f8f31d27e0ad2a6be7f853a8eeb167becddbdad232e1c88b79b33ece1855325a4dd7d34ab46ef7b9e9a3be67e5052adaa754e3a27df9a7c36114e2cf617d2fa63def371d9ad65e2f77089fba7545ee023ed8fbdf4a20fc251969cb0129e29fd08bc0313e4acb76bd2196b23e451705e1d0bd03a8635f33672b156718eb0f6cf536650cd0134cff899ea83cc6dd04367f4c4904fac3581f8e906637f34809871e8e8bcd4e0eaba45a63d2b77548f01cde1665c919628ea74709f93bf95c22ac7e0590ed8622bf6eeb83b7e8a7a2c4906bde8387b067e665e1bb42653dcafd66af0207eada6c809359db3c4e7215da7d5a608bede6b55f73a06f05cc787eb467c84ef40f5a8003b6553bde6b46335f00648839ddb412b08e7a4c69dece24cf74127a4db6ba13695ebbe803512b3a93f5671c9cedf51ae174e46a4817b455f28776608a342dc43960d171447aeb4ee4e68607ed2943b07b8f4f6c15df147afda55aaf39f09f18abb787d055a8b9328db6b7ee2b2053d4ec94df02a4a9d714adccd29ce2f6e7cf0b72b79a93de0ca791a63fe2fca7bde7b610416f97cf2947d8037746893de5c853d6e9116f87b5652be0d31ecc11009c6c213e922d605b46755ed5979060f4aed1fa374675cf26929c04f75b1da226fde58a0fe2d439de853a2bde4405f9b01ee65edccfbf77766de1e7194a83f5a071786faf83c6fb03e65e23a13a97bd0de8dd47312d599f8253c395a502f635a7315c70ac40fe6fea12ed26bff8f88ef22662d7a0d58e43dd2ec9849f93abc8725f52d909fb1e45417398d51f78dea716a8c24585390e8c7b1ac833d9d9367bf8c44ad1332ab5ceded7beafeaefaf1d6407b282f95b6aeea295ef4efbbf7d4edd1d9d5d53944b72664c331e991f7d7f0cfd19bc262dd345e6b8b7efd821bf8bdfd4ce543b1c3b203be638fc6821b6f2a4b7b3a635db4f4b456645ca592cf2627882f77cff6fdb1dcf0fd14f07c9fd1eef0300ef8b7ef1fda026b8ae87d663c3cb37772626be812f78debb12e48a325ffd2c7ffd4becadfe71ebd8f33e20df7d18edb5adb4369639f546cadbc915b811e60de60416b11cdd9ec3457c79afb1be2ed5cd48bf5238a45402352f59515ffd703cd45f51d692e01662e9cd98180b93b3a57b8dfe1efbb5cb5967505e324bb2216d4ff48d5f793298c83f5b8caa92e34326626e0604bef59dffb7c02df22369f6df67dcc0046da3a8cefc6e710716c6c3ed1bd5fa523941ade990b47f58f2243cdb1db9fdf7b97a781a6cfc244ed1beb78d378f21d1ddf9077f8a1349e1f31a9c983dffd2003fd408cab858debc56c3521de7e65f131e94c207ed26a50c359790b82df98a849a7e2fefc67f201c4dc489fbf3b3ee9c6cdf6e04acd873a0d63e4faaa75281b75f925ea64a36747de603ec69e22f04e75565d5cd2e56df6610cfa0f6a5c169007c231ddbe96293f9300d6603536a5932a6eb6aaab1915607a880f92bea8b5bd1b9b91f640490c3f108fdad067ada7b41103dcaf5ed914f1d799396688ebe8d643015e23b887ae3f85ca0da8b7d05c2bcc1345cb0caa8f56f6013c33adebb822ae51ea8cb1ee5ee09a9dd2ffcae981c698e26acc8c18fc170cdf8d700d665eb0d739c7c63fe9b98bd8adc4d2fe4bc368d39057aa4b1e2f4b2300bd00cdd7267d32e4aba7c1b8daf942cd29ebea5699c4f54bdc0a1363cedcf1bec515edb3a96a16a231287ec458acc51a21eddd582f53585dc867c0735bb02dd6fcc9e3d40e5e48fb62b91363eac133afc677ad78c4d35e2b3b6c4b63af31aa1097aff73d866e2430bf31bec41569949ddc2579e6d80dd50e372c25edaeca0a9b48f3e1111334a4fc9d6526d507e01e94d78698f76bf33d9ebed1ba973a36b42eb41e88f9b47941dd99e18a7a2d96f98ae7406fb4d198d6bd7e6d82752f317c3f79c37515ae47daaae94bbb7e58c714e7c30b0cea0bf11cbde3f9e8066b82da4f5e31c6e8e6cb217a533e248ea8c91fea44f5ea7e1cb62ca2b1dccd9d62220d8c7d0bc5f9805cef8afc0d56e631e1513e25781839098ea379ba46fdc3d8633badd18e1e17926abbaf217add77efb49b3f738c43b875809aa4599cca1ed71b83bf0ad51d4f3b8a59616dacdb68a7b9285fef596199e6ee1a6b12a4d938b2a146530fa3b6a279f85a35ffa077ce09df01dbae88f722fc5b02ef39a25c1ece21338cadcc95ff78cf72a77129e72cb9bbe7bc18af6aadedd66babc23e3a8bd278bcd4b5c002c67826dd64232f22799c23731e84c0856ec67242ba519e9e5f92fa732de932b148ebdfabd813b04fe483a6793e7a2e146ed90a1a23e69257f7f3d107cee6e0fe7b067a4edb157c97cc0f71eda41a9fc2c974e347e9d078ac95f0bda788117463aefef691f80bd27318ff3136eef502ce3a5e6b03d2c94b435b1077e082b5d778d9c62fe8478e3962e320d7e74a9e5842c53c27d401289ccae05fe27a3f57eb36afd57abbac9fcf3fc42b18e372adbf1d529e22c2569266833a9f9c54a8f5f018efb03fc63b3353e1a1dc62ca692d3c535d4124bf2cd4718a28068fbe3c7f8c1adf69bbc6f7d52c96aefc9e138107f47bb4fb47fb5063bc8d5e007ec013e87b74eb4eecf9d384bcd030a68ccde8c163aacfb79d77fc56f18fef2677d8dd73cf222e9e706f3e630f711f6dd69f5fe3e344a8d8f2394a4edeffe879d2fe5c7375ef4a5bb8cf5fbe7cffc804eea97ebeecaad73a99eb7590d6719f30e869ce91e7359a905ec43c39296c4f6c3ac714efeb45d705d930229dc329f5bc8ef6dc837e6be58574ddb8e41887b7bf2f5a2f1afa0c3170b6bb9c673fe873b9183442cda2cf79eec7a0d2f7f9cb18347cb1f482963c2fd43dab39a7eec3cd6a553b9dc7f06ea651cac67cb2268c385c1feb69df73af466343c02bdbc31eeef5ac30f45cf316fe74dd73ecffc67504f111da5fcfa1f8ea5d9ad1432db5549894116ab30ac29afa9a876b401f814f0e949bb1654e3c25e297abdf4c31f6fdf937dd754073e9997e03fc8a40df539afb368d395a77551d4279f9fb0271206625402b5e58439c2bfe0cf94053bd17d882aebd913b496b68cf69a698a795a6c6dca87becfd9ccb3a6c752c41f928ff05dad8a6d3cecce85b6e487a0e692e6dd25f42efb66945f7863ac99c2bcc78506c9a4fdaf364ee0bd2d946ec86fa4e384621b66ce598f471b36c68a09f745c114e2063efdd3b4a396970aaf7b6931ed687d5d85c77790ed40937c46d187d84e83f5e8cff52cbc99b9aea83ab2d61ebc57aa67d17d55e439a2193077c43266e2f586749da78076b7785753485e33f2b8d238f3862ec8909d08ad56b8a5d23f693729ed33bf3b1869bd554534ccb4d90920e66748f294ec50be95b436d1ffb695ae312c62fd55ab9ede0df6b6b66528cbcbfe1fa7aa13d8fe6726a1738568f4661123fac3a431f55628dba7096e421d73639d6984c3d3f5b3a9e19d196eeef7448746e2c9cc8b8be834ec048d556138f70e8c7a1405eab448dbbc54ecc7e3a47ccd539a6f02eef7128271c3723850d4f6ce20ea30713c42e4e9a2e905bda68ef69ece9470fc7a7ec86f5cf57bc2747d832a11a696c781f69067e22cc32c751ded0bcfc88764e97b309e59996a35642db8c43cd4ffef5b1f2b0e708b5fa06ebb3d768c3743e1deef0f8341ecf265d3c89bc02ebeae9d86d17747359ed3fe106d7aaee5af45bc3c73e1073541d3cf327f39cfa36dea0cb39541f25274d55f6d5e3f49d38a12b4e3d97f501f1bbce4a7bcfff3225f421dca507baa7691beca066c29e111395ca1c701d711b8c675331567b9e5d68de7a6970c02f64579fb0438501bdf8d20b29178b0b5b0a5adf38e9a01b7e2c61ce45dd7e4fb584708ab50433baf639b7f314bd2126a895a465f204f7cb87d14efb8d58cc0c21774f7fe33c669ff7df69691f1027efbfc7849b79bbb651edfb95c7087ffb3acf03a80d08d56f55f7f6626bbdda01d3dacfc115e6e888cfd4dc54e73e4893136f0272bbdcc17de2cb584f95de690cde3723b5e65486b8443b79eefb5cda4bff0a9ac8ec12b5ffe81e50993758cb095bb57fa99a4170465ccb156aa04adf1b74f7b64301da3df127e602319b0a01e356628c7b1a441b61525c50aa6f085c1dec6d7b5feab1375dcfcc59ab3d9720665235a56e7d2cd5dadb38514ed7f137721340cd3b257c513d208c507ad3fd4bc4c13fdb8c74aaacca22dc9ef655d43546b3ad4c8d9f446e95c4fde2972dc9eb295d5b2a0e02ed3bd4050bcfd146209f8b39145bae76540f1aed963c7ac8dd01ff20919373bfd6fdba008fd07f0db1f794da41446b32f97f25f6e1a2e2ca5cccca3ade85182b5706e0c0e33c1ecf7e5a9352ac1765e6783651f1c278b9933fac5d23d83b3339c65e18dde760d970a5652da6554b63ea455faba67e658e980c58dfa7721c652757b8be1e23e16401ebb6c64d937f9fe6b9929f96fa77aab5e2da3558908e22f6f88a291d7ffad47a1c8dcab719e8bb1c1c693dd33ea7ea4409e7540b016f150bfb2eb713ed73563cbec39259dabfe01d6b0c4c9f5369339a4e642d10bf5894b88e913eaadad7e2da6fb1be339b8b0ae67d8e98222b1892c64bc97f532fa01b576159abdc33065db3588fb39f8e4bba75c0fcdd66341fade7fb5e1b2bebe0b0a2b833bb5e684fa3679cf367d4969337d49d7d2b5da9f7517867d587e23765aceec6caa2f6f795ae733901ade1b1f255f303c2d3639c0c7bbe791850dc1c4e46b4ee5f97269d47ad4b2a7e0813d462b50fe392b4c9ed467b9baaebec0e6be21a74e7e0c0b743fdb6f84cb16db8bdce28ff49952f3e3b125fa2b08827679c33e8292dfaeb095c53fd9ce505d5be2c49b9668dfeb9c66fc21cc27ab48be1d9846fc2d814c00fcc8663f25748daa0251d6ed4971e10bfa78fe34eb714f17512b8a05deea6b5ee48bf2e69d7bae79b2a8fbdc0caa8ef813a053c97aa0e9ae6c1f8457973038e4518be9b6cd79fd8bb98ad32ef6e7c8912b07a8d8df1a1976587dbb79c4180ff69ea71f0e8c2deb13400cb5779e4332c9f4a5f7d6b77417c05c2ad0af98e3e96d325ededf7756bec8dc556dce5f5aaf6baa4da662b76da930a63e252e102d43b1c02169fe242d384dc5ffb3b3c616f4cc87aa0eeadc01e4ad5c68887f865ad085b061a0105dee322ca0917a5ebce58a36475a57d77747dc24933f98c739fae7b574f78467d25b1007c809cb0b6f9a95ef4fae77a5117939f9cd8189e506b659a3d70759b3d79c527b933ff96dbdac513f662897368265aebb5e97515908b58799a634f75a4f7c5b7f1213fe7c09b7157de73dfcffe96032b0f6dd88b721fe2d8ec305e4da5d66596d0d30c3879bcf6fb9ee2d3945a0fe1f923213e853a773777c567f79c8f6b96815a011a1f4aba5bf96aa7b5aa2d1af30c7137e9ad8bd5c361b4f3a9ceb30ef3bf1ebf5118c41b612fd6c881250fde1a72454ef71feb79167a358c0f5ba0fe807992d0d7732bcd8369741c5bbd9d9eef8f13dabf9d3d69dc88ae6b1c2f095ce7550ac2f58eb086a0ea10b046e9f73cbabd204f148f3b44b53f253fed24035c7e44fa0c79f0fffa395e235eb5b82e04d8b361d86367e4994c31769a5c2e91e1877a5ca46bffdf9fbbe737fce5b97751ed8b390f06d17d8d44b09baecfe472f158ff39521d80b81b97f4eddb5c51bab038cf156e8e916710f26922cdd566d80b83da12d5dfcbadf76dff5a6ed01b01f10c77c7ff657e98eade4bb3fe565fc0fae92bf47687637d4d3daf462669c3e81a1c8e71ada59d619f3e13c60af113b8ae0651ce0658dbc25c2b3a97c819e1e00bc131dff75e486f23f32fa0dbe28be5aecfa950a7f955d2fcccfc23e01aa5116de91ed478996a4ffafce0eaba3062c5c883b91893d7b1ece6a9073510ef879a1dc6f956fc43cd4e696c776b3d87fb924e6414561f5305c7e4765f1f8edaa577c4ef2aa926f811127737bb42ecaef456a02619ef0e3a065ada6bf42e082fe8fb3595f5f3b5fb6f153769fd3e463568e291d39ad1f70376c487d77b9e4bf3ef873d6fa3381762fd977e82e94466a8ea05a517f4efca8ece102f32bef2f65f9e7dd47ee9ed756381410df37b3f38851eef20798827d4798efa9d5b724f1ed25fb12e89eaa506fb926acdf7df47f5907efc3e2ade5c248433ea7d08f573e7fe78ae7c2cc16351f6f5661d3bcf51533136ffc16f22f90b79cde1775b92f6dce35eff3e17ffffedf5841dd1c773f3dcade3aa2e045c0655375758ca3cb87e1fabec33247fa3beae5ddcc50357dc175ce931c4e5314ba2373c9faaf82288f809b927e4c7eb8c7b9fadbb7539f9457b795079836f6ba8543836c4252bfe685fcf55bfeff961aed27543ac0daba9efa8f395bb5ec260d87b51603d178f4fb393ee4bf4fa18ec4e23b5d1782b66d39e62aa585d18b096c6a0f3a7f6ced27bfebe46a935f8e19c07d2e8e32d73bfce81ca0b6cd28b59d805f24a0569c6bc4a8c6b52f19b78609813618d881bc7d00b9cd8ba8ea52db1ae443a5a07e45ff201eac615a073eb992a571207a7ece7c77dced7bdefbaef4573936a7565cb52d2999e4f42d05b471e4d5603269e83d6d31471d0fb68bbbe3ee48eca67ed9f7e7edfad13d89f9ba6bb0a3000c27f6179acf6a379cec68a5792fb8a8b73c77349d5de83fae9f369f71e4cc436c7308e55cca0b080a6d28d11f24498936257d858ebebf64035362bfbfb39e26ced86d695dff155ba1862a8cee1419f471ae16de947dd5ab68beaf02cf9b349d864f2952b51b300b85ee2896a8ef2e1dff959f1a880e3a73d68542e92076ee836b0c6d09e0f3eeb6cce83cf15e2c690a3f082bef476b46d88333d0b29ae240f4d3e1a521e5324bf86a8c51f17b7135c27f7c7e518ff9b1faf05c6f769d6ec23e27d91a662ebefe87b866f273ef38ce3c260a1f4e49fee6d88f736bdc71fcff437334f05c421b1f29780de17f92605b30973432f788fac2b3d1ffa5f32f2bffcf8f1d92dc2fdb23162e11721eac1330f39137cf4b140be52b9d5bc0cc247bcc7e061e63ce2dea0e6c6916799606d29bad77133ae88733ebd231fd7c73dd7bf5f434bce3e88afcb8c807075c87f696e52e7f6a73798fbe6b8025d1427e5bd8f2aaeafa8ebe31f12559763fb3827adb6634b9e4c2f266a0ed88701c47f8287a8ab9f40ef027aba26f25b70dd4edcb5cb26f86ee1fe67738e79432b8e5a1f4e697ae9be9d9b7a54c3698ed8930941e315fa77691b1fef3c2b985a53906b811af5b49e83de718bbee0e8ff435ede09e2f6915fa1bd7192f175d68da1c28f3f57c813c2f199e1f8b9dd8f9fb9f71b346451738f7b709d82b46052e2b8d4430138c4984df84f7f8b911b731763d466a239758ae3747d214e1df963287e07e8ffae704f4a73150faadf496b441c99c112e6a93be74c9f27b19f3f48ab249c900643ade6748c393ff4673d85ededde4de24736e98addcddd1cc6eb1d3f220d4ec4959f8d4fe0c56cc486f640c6bd9838766aad4b036f55b3a72feffe29f6c98f391c24a4c598136e2f78e0b8c498d355c633f036c5fac2b0df5620bf4b7a01d530fca5f7bb9f37bed0f8f4e83642ee426d22c7872db30572e48a378c713f561e7955ac51dfd9bb451b9f30ceaffa3eb3d3b8dce17f2bbcb2c2f7bfe178f52b01efbad23c91ca9a698deeeb80fc254a1bcfa17bf7878bf69e80e7bf501f0734754472d7fb72d3c980343da7cb14bfb9f1db0e3dad33db7d4becb9d4f0ef2a5e3be0781557ac11359027afc72beccb00e75178e0977c75742f5879b28d6adc770f38aefd1557ef7ebad86a3ea68ac9d804b517cd3d9c17f0753edf085a73a612b1aa89f8e7311e727d97f85c2bde682c72cc9b0bf893144eb8c33e3171c8ace158fbe2a9fdfdf9813f506da4e65276f15f3c39f6baa853f26e15c704ebc7a5f5dcc5e27e97732d8dafef558dd59dd62bc2383cb68377e8158a1af9d16659137728a05eef60eee97a35f85019be2f5ca51d03b50bc0111915eab96435f451b02fcb19e9257363801ef2dd7bbdf4bfeff265884953bbb968ccda8dd6dbc55fd65bdf7b5c6fb5178a9a3f70ed5fc785119ea3d61fafa88607f37cae63805d439a7a426b32405f81818fae7f8e903fb7f29e1fbe7f8478efd954b8dd7a15efd6dabf4f73f7b707e2c8c7527911de7b5563ce91af33eac5c5bde7b793289f43f5fecc14be77ccf89e6240f79e1b5bd5a89d98a26723370782629b1d720e44d5c6e80718d2bb6dd90474b5d53aeb967574c37bcf57f5e2b800fe988f1e8442fd3b5f803f33ee3da2f527300f2ac43e45bae61827d8d7272c638ae34bc83dfaaccc0ad063144b2f265d4ce4910f23f2250e2726e1d276f17d5ec12b1b7a3045407c04fdee370d60cc44f3d4c5bf02b412882f718b31565ae05e5d1acf43fcedba042eb3bbaad97bacfcfd9b7164051cb8a57eb09cc0b38735adfdbf87a0afeb5d22c49397fa6f31ec9dd013075d0f43e14a5dbe6384398fe79eee851c683f9babbdd2ece2f73361649636f9807a26e571495a2096867d46db43ab71d096447d3f6338073e939b4d9d43df93618857976aae16dbebb89a523fc7bb100e0dea52c3f103363ad71c8db89a6afd5d8bfa83a581b95a76c5f5fcd78063fe3f9f989ee2112723af9a1c704cf81f95897dccdb971a2ee6b5a47dca73a7d57d87863061ff58a07feaafc364147fbbe6b488e1fb897d9c3bed9d7fa9afe680195c4ad456e2d9a8fbfb06fde9c1d3ce6ee694bf20878070a97199c6aa76cc05ee5dc23f4a1fb11a3923fe664cbd9ee534c69aa83013c28976f7605dbd707b15dfcfe1eb73407f7f3d5e2a2c046831579847f3b63aebf78f3a5ea91d900ed64761fc460c3abb75f108bc4b39407c0ef9f61d570dd5d3cd27e07e85c36817981cb5f3e69403f2d3b93b56e11aad6eec1cb02f70ba76ff0e75a205e02bbde08972319ec603ac57925f88a1ae09fd934169c06f1769f3a1f73ffb90c0f763c768e73ce1f79b5579f7ef806d014e50310e6d3d86adee9aea3e52f59c305e692c6b2d870a3d0cbafd62fd01b5e59f9f33ce34a68070d39ff4be12dbefee6b1d71f686fc67d0e835d7fd31d6e8093478fd43b4fdfd8198b11cbc97d9984d7dcab9ecee3719577a93fa79a57a0f5d2c35549a7789e90cf47b55f3be497adcb03f83f55dba986ff2d5e6ff63efcdba14659a7df10fb42f5e86b29ef2b2504150a9624a863b015b1450bb1ce1d3ff57664432a855fd3cefbbf759fbfcd7b9e8d5dd8ae4141973fc429977f811c48c5d65cef650bab576a98bfd065d85e7f27c2ec6f89c9c8d97bb748e792e3c4ff4900a47bad7aca7f882e7b13b27baef05e3c915f4a12453e505e959a6fc12fb96d3cf76560ef99aa853572b8819280b9ed7e90d6ff4334673723636590e5d771e4781de07caf363cf1c7f782cde2cb37103a3a18105d509c0dfdae023509b84c74560ad2ac7123320565118e63863fe7527e7b8322da68b8d75c7d8c3126d7dd4e9582e32c7711425dedfd295c43dc3ebf287b37047785f9220dd65889f34aca99dc2d6eb9f46e9b4c9ed81cf595fab03fa3216037bacf035061837696af4584f49c811be72df0ba9557c3e2df1ecaba67f22625e797584f88a478eb3f3694e09e379c9247ab1b6ca0173db1b39956e15a857920f237397215f9c7c2d3de0691ee3f1ea1663339959d3e7878a1328ac0fb90d38e4cca7cbf502534b3d7ed74d5ed3e7bdc11d075d65cceaf3aa46479b225e95cafcb3fc8c9c21dfa3cf45997a9417bbaecaf6d59d4ceaa889f5183b32c25c1b157a7eaed04e3111076439590c1a1f13e42547bc470fc36e803a23f1d93b6319e330e281d909a94066cc571828aacfe4d6c9e8e32aa423d441beac5d58715e9fb8f6b8c9eb875e33278e7db26c7abef25eeaa6c4eb8cdcc038e07905ab9cf941c70ee66644db8cebae66c4f8a5a8580c6baa50acc01e2fb501c7abddc54def2d5261fcce9ec9d843441a8cb0f7c0f683d74ff77e935f39cee492d729fae6cba26071016399dbaf5857fbb9acb309d6df5af1386b72cf3f2656d36390f7dc5f14601b2c2186a12613fbb8e29840b571f62a3c2796b7af8a88a9364d26e612e630e479b8d262d2f4d6b97c60dd66f7ac93206b30a9e2b1bae0fe51d7530ff668388e6b95dd05db1b9e9b39c82ce7a5b09c21e3772c8f87db965a8a3abbc7fba8ec1c869b47659fbde3f5402b1f79b027a22dca3102930a6bb62f6dacceceeef7df155423cd0d3912db3a65a095f0ea72bcc9b2a90f922301b1e1bc04f206ddf4378b6907c5f8c3336e0bc0e056dd3a7dc53eb69f985b2c5b4d8f1803ef30cbe595ac9a4cc016cc798fe07d13e340ec11c7b5a728fbcb38e03ddf1fce67ba6a62bf8b1baf83fc0838cf2de87d013c161570d0627f80faca70dcf8de219ff6c52a38fe74c2f76293d4eae2c9f373c04eca8ec81be78bd149c7beae52ece5680ff0ba04566fa086bba8793ef66f0bc485bb4402b5af26d46e1b012fc846967f18fd4493c9248758546d7df1da15f423c8f439c79bbc583b65bc603c99c5c4f71fdefe187a939b83f5e589a00f1639f369a90ee6cc8639f843c964c26d71a04f8e4589fee534676767ccc1f7d7f62be13e48fcddc724c15a8ba18ffaafdec5099a0bfabd2f92635b9e795fa619cf8d64b51805ab6989b127992389bcbfc897c37d82bc8e19fa62880dee589912ee3b875c6def8ab13ac26b57e8fc9b3e1bac46087163dc8ccb0fec01a56e31c632363d037dcaea17f71df813aae34c24a7c03e7dc45c301dce2f40b772d5d982e7c2a1fd1f0516a53b42e96ee5e2b9f9e62b9efbc0da1d1a7fc302f3805b5a6d31621663f8ad2da8af33882b7e4b272e623558941771cc5cb7a1797e2fb7ab8e6cc79a9dc102f3eb0087cdfc88da9e602a62eacf2dff30f6b17747043614ef712d2e54ae8f58bc266f6eba0ac4bea46cd4d0529d3539b71f410136d0433f85e357c8e49089fe53f0fbdb9a887d0d186fe6bddd313e62f3baa16384efe739c64f9efdc2675c3e2face1e7754ff05b5e0fc07be1806f6cb294505f976e05ceb7c1a8f9f65dac471abccba3f3f14f05cf6f613e3f7f30c1fcd3933d55c70be66f2a9425a5c79d1a00264631f8807a9189c7f6273562f48123bd315c44a019aebb8a4a9a33bcfdb115140b4ae7e8d7607687c36a4f165c5f07591114a395877747e6f6bd399eab9363ea99e3d5e4b6b7d93d1c1aa98c3d2605d0a7bd7c32e0763809a2a656b4c5164c15e2347cf0b62a3cf021f6f3c7f6f473f4d79d2c26ff790d5df18a3dc71677384baf0dced2541d5b81396a7f737ae53af5c2b5dd36f780d17e6daae03f4f3ce3750e774c4d789c4c98609e80786ee258acee86c7eb4fdddf432c2e5047b03feacddaed2fe087217bc070b79515cfadf6c5d16a33049d5e3c2898bf71e2670a74e421762931b8dd60aa0da692c0ffedf0da088ef93dc51c0bc835a232016a7878ff65bf18419f24b85fecac03f5da5d2360f033fde48abd11783de237ef69f3a5176375c4ef864bf504866f48e7c3745cd50b3806985df3dabfa8d92b3382b83a51161bd82b3b38f0da1c91e7a1b96385f7e63d21aeb68a38e6aa073d8226a980b556fe61b49ca636f8694c85fe6d7bea17d6e6ab0b01fdc375cafbdb2d1625ae919e27fdcc3ff0dc2ed9f62007ddf1d8b89ae5165f2eef11c36212fad7127a1d620f1a96533ce53c9bf9219a3a31cad338c699ca7cffb674e3b106c0561215ec5fa8560bc4150a7764e034b842a705ff1e7374a98e5a81dcf444ab4c8f5c8f87f1ed7d8c72c70d22fa1eca6f3f56ae89f5e57aaf2692f73cc178d88cf2235be03d18dff93d27cb3ae2b9e60697311c4b8e8d2bae7b3a06dc47e627af56f9ba3b9f4fcb337d160715b8cf3cb5d8dee4ea80d37dd4ecbb59b6393a27c512cc5ddcc855466bf44cf315bfff02ca1a5f55310f98e56a410ea279c01c2a05f260cc7c51ff344fb2b77613eed32c40a621f602f42e3adb3ed8e22bcf30da9c54c67f408606a4a14f3b88da3a25e6ff510729f45d983638ba588f9f363c27e53c47b4ca4c065f1f9138cf8964aca90fd4ce3db0efdfafe2fb5522363125b7cd5b6571b9eb12fba8004d70bef456f15e95b1a78b5867a0609d8799f805e1981b77ef99627ce4b3b96fbe3832fd273c654ad8679160c996b0e03d695ecd82d1e181e1cc73fc16afa9f3407c8fa3dcf6874d359e834cf536c76b7ab18dfdf1e4c6fdeb660ef860d8b3256afa01c8d047cff40ccfdcd976d73782f9502ef4abc3dc27b9e9b1ffcae3d87f57a75ef19c102f015f32c44295a67e72f3632e00ea5379a34f3bfd58d4389e988d6ecefbeb3a884f3f13f698f33d64f91ab6948d6337c3778be715e693f3ba9b056271b57b7e7ac57ed763ec27ffdbda997c8e66ba2b0c1607f48b51529b4dbe308f61b1f712f36c6dd54b53d75a0ed04740648fe3c0ab905f96aa4d0ff15bd30792845c8f603464fa213e1369acced22d468984f83b443d2ff3175e1b0a781fa5f89b63557cf0f36d7a85653cf63158625f32ec2997afca93cae330ec3ba1e9e3592efce6bbcb5278e1b8b0d03b7b73fae2e32de83bd02f640b2ad5f56ade37df73d31797f759e5be14499778df3dcfbfde6cc4d358d436e8bdb23d6ae955dda7046bb905ec91b98d788f6a7b2167a88b89c70f88db8ca371fbfdbc56346e037db8fcfd87eefbaf1f130fb0b50375b4e275d475da796632584c785de29b80fa75d9f95ea0ebe5bed3d50e75cd5aedbe43a2cff0daeb4500cfd073edcce57541de39562dbb9bcb027022bd06d3ae506c371d2fa6bcc7aa0a3941d86394b8668dd8d72f5cc7c23b2d595547eff4d2ab55160d56c987765239be07017982e3511931187fb4b4f045d7d1a94b26e0ef619853a3beae7bab9b3968e298d5b574c68ca49bcaeb81d9980e8fc3e5c7a5678cd3fc76b5aa5b6411f09b7b02af816139e053323643ee1ba776812d198daf9c7ecf7de53eabb94f973c3f7fe1233ea6145626e6687d4c105f8f44c20a7bf2250c5f98f5dae03101cc474815ac8360fe665bcab434c0388dab702c75279d164dff690be36a3c1682bd33020b70b309d4d5a52f76401a9c34d447b6a85f45c9d41cf31ccd909e35e46791656e8a0b887d5ba11c0e788d762c30dfe6a7e782bcb1eb74145518b32485148b937e7f36e9305a068879468aaba9f2fe6dc38cd97882f1dbdaaad893106a02797d552c893c9ef49bf967d8ef064c46981366930096c71471f509f6df6d72abf317ec05b1fdc01c9b18eabeb96ec77ccccca7bfcda087bb6b8fc09f05e7644ec82bc7d35bd6fc4e99fb58e5b19236cf19ce1a6d71ae87824f4465fe6b3f1b239efc57136bc7dc8cd4ebfe3e55d289b1c7f5d5fcd9a43377c04de88f990886606dc38b3d62f82999c9f2b30a6555d81af3f90585e7071ecf932a4cd6df95e90235abaf75b3d1c25b5c979390e9175eadee815e4c86b5b1102376efcd2272507f1bf7f61d7aefb05c3fb8ab6281be65ee73fc6d9503f41b085717fcedb2b5553f3a9fb1f8c202b0c7c6718ef784f09e7be617f85f1a5f17f6da1215e07d883de10ff99df1e292c98d31d61b1c503ef23ed85b8c35210e24d9f3fe736dbfba7483b9a04dcd8b07fd5a060d8e39d6c312dec7507a19785c97e2f830d590fb7a18ee2ec36743ac5612bc3f7d7e59a74ddd10af5d74dd286b3144c0c74e3a7df12df4db2e045e4f931e3f08d70f12c8c70db280d5b5076960a27fd7962386d9d7c937123ccc2b5c0a06c7a9379732ef9921c80d9681c76b1833c4583015ec81d4fcbde03dd18509ef7f37b64057e57ff37ceff132379a3ed7ecec782d31e66875ed436a5fb03be8618f0ba2d7aba239f3aebcbab07885a7560e991c53cf506642716de27ebc8e81a42f0b8ce937787d41c87bdd7f26b542d02e7de16742821cb1974e39e2d2f0befa88b5994a31ae259de815fe9bf5885814cd9a5f53941d5e83df789297bc5fb58bf8096431f001e7b0895946b5cafbe7bfe2dc4d8c93cc2cffadc218fcc1dabde3bfc96fab3cf2cf494ced0fa8a76e6c9950049fbae91980bd43b0175abb3f8a171c00eb8ca40dee68cc7b55f9939aef63d2e01e5a7ccc8bb5f5f8bf3f63d760f10c97f9c70ae6875bf822d426f987d14213c186724e23f4dddf2cc47158e5f6b68931002e3ccb7771f383b0e0f920d21bc69584170b6cd8e932c7dc13e8c73ff646dc2e3730b6f226a34d38f6111b2a95b8ffaa5d5bc4eb81b7f83b7f22e377d374627cf139107fb0e7f53cdcde5be5ac1722f418d94eaa06271afd5eab9dcdf99e887dfd3452e7b7febea588a331047d029ee7b8b102ef4de5b90af6f6ce9c259fab37bcd0f9317c6d6121e3b317abccc629eb83c4e25d03fe4c9c23a66f1df2b3cbcc1ae7c030d7868a93ab6ccd2ec3f83b9c801f141f1ffc0c09f6921779cf70a0276a7b2713fd6b8135b104ebcc881c9d386e27e673161c6b3865b4562896f8ceeba81a9a32791f62f15d6afa8c7a8d5f84d303d6271c9459ad363dee4de8ef30f6a713ded721584db106555c5729ee69e4bff0fb1446b589bf875ad308f03c76d62e3a23aeff72c5681ab1ec997e007142df7b81582faf6586bcd0a9bd011f86f3e77b3a363d83e3192c00a3197419474bdbbb440e831862b3631be39acfe8d2f2cd25d805c528c51e4988bbf8620baad8f42fad09efa1e39a531b7277c1961e27b95eaf9a7aae0cfc0e62764955b017fd40e198b4762cdb80fd132823077b13739c4f8c735729fa3e9dd1f1a5f1b935f8bdfb4b6303c83c478de7a5a2bd037b3a4e7282358409e46ac9b680e7c3f34dec44e678b829d3c7965e72b3d1be242eeb67f669f98331d940decf52305e793f047f579cd0a6d556bbcce67ea615d485a851eeddcbba45eb376435c9987392aa203bc82b931702eb7f3b49a4019e3361b68ee9193ef897a18747ec190c3ba7331715f42c93e329ba49cba36fd0d76f225865363135cadf8ec7a5608e5785e22db85cf186681312e44793a3cb729e4c6595430e00f8ad794d4e51cf04cc370816b5cb717c7705eff72aaf785f63a1ff37e1fd24effef6dcc585fb6bccd190f797c6f9a467e67366f88043ee8f0e2cec81eef88757fcad1db3fc0fc82be475296e5df03ad1fbfe999f73c1b8710cbcd069722a715fd22fbcb3635e5fe4f8375e1b692cb9af137c17aa5bde7f4779017bb7ca746d5ff5627fd8f60b82be8912ef59bae0fdff6b85c7758c749ce1dc0bf1036abe981e07fc7078827b047e2c97c796b6d9c9c15ef66dac2e6598b750a7b3e8f10897607cbd4878cc456d714db86dfe52357128d6e78bf56c342c2fc3facb17c9847eb9cd7b9d5a7de575268b82d58ea8f66ec27b3fcc616d745e03581bd321ccd7663f26880da39d785f2733999a06ea015f2b1e5f972dee3332c147be46fb82e7e69de405d099ea8e33dc3375fee18b736e9b527e8c3dfcd0e6488595b747ec0843c77891147531123c7397f23e8f3c46ca73ff0383d7407f26653a6aeb9e53c50ba249a367636f244fca2a9efb95c88811e08927136cd139b591a9be87388816ef3388e76bfa8caf12c794f99d16450fb1886612f6d4110e3bf63ea6d3dacd787d9faa78f236dddaedb436a146d79e0b26e4fea3efc8ab864d7fca556090168bace8da8fec6fdf075c1b3e7ff0e93fce9f63e62c0283af63e0b1df984b7edeae2f3a8c5f8946d36b22043c46156800f2c2adeeffbde33541bbc16f728ca3fb3d1824c05bd578c2fbb180ae6f13b0592262a38ec873746f3f9d1bc3bd07fc6436f627c41907888fa968d8b390effd92dd07626cb91e9a7059ec601e3dbfb3e8236dc614b3033fdbefd605391fec6f9ba89847c4fd1f3bbedfc37a95f37d1604d4598f3c777189bd683db81b163fcf88d9574fd6e2ede584e796f17323a4e6e7e60487feb979058c2f703b9cc5bfe85a5fad6d72e3395878ff5ea3d1e36f1dec37847837af68dbe133a701fe668e318cc9c7d4e6584852b3df586707745d28b66f9cf14c6d324d789e3eea118b41b346b9a848eb4fc57c23dedf37dd35fdcb8282e33e46a6c671a187e3aedc232e613154a222be1bcb997ae0db9f1eef1fcdf1b276bce713ef8b970e96e0a3fc08b7f60e752917e2f38acaf55a461ffdb8cb2542b9cbeb0ed3698b5d1572ecbab13d7ae41d29f755288e6c9a9cb652cc537464bbc1924c64fece93c0bfe7f46df59e2910fba46018257c6e2408459e739a326c2dd61756e77d342288578fddcdf085fb0c4c1fe32741c172686d92be72bc9d58c43a59b93923735516a0ffd6e678a9719c92a2e9b9ec06accf363d773f91785f22533009f789261c93ca4edbbb26a27c9c2ed1d6811e4cccd663ebf044abe6ba0fd74f626d30fbe1aefee677d5f445c6c31de82bd0c80e5313ddc7bb5a28b6c0f2252661999d509f324de9843c4d1042ecd9b818434d21b709ed89fa835c4924aec73bb57dc278f5b1e9a3d7e15566c9c73a0a31e00ad8a6c0f5e784e70b37cfc7353f87f496168bbeaf2ac8b81d6dceeb88f787be71cc01a7bd7f668a7d441dde93a9c0fba6719c8f9e9c9a5339b5e03a36318f58fb652ed4a6160ff497a98a36eae137e6dd509b026a247376a6d83727524cce23c844e434e505e408bc8484b1c6fbd720c633d026b5a5367cfe96376cf861331757c198a1692e7706f7512226a13a5ff91887f0c4d725e47e8c17dee26a369881d96fdeb3ef630218e7fe5639f0de1d4def7232f932392d06e90df37cc506bf83d70f796f3cee3d37c7b687b2596636b9a0da0bcf18989873c7fb5b24ed7db97cf03a5d5995809658df1bc8099c721b7ff192108ed1991e9bfa1a9f63f616f212eb1a1de78df70035db7d144f1c4fdd05da35929cf14f9ddf21e7b9fe02f11feff09a12de5bfa9df7d93463ac7106ac7a0fe3f1b682b440758929f7957b4d2c8edda16b82f2cc96597fe3cefe150c0f3f1d478021c37b43488039ec007e9f66b911df07d394f85970bcd8e1c11db57cdb0eb251c303b91c6474922ab6664829c7c9950ff9fd7c1b9a17444ef38ae70f43e4ef2087188d1c0e806343044b3aa1bcb267cd197ac3976583699981ac1688bc843e419867609ead02717ca4c3b1d34f60dcd1eb151b733552597538a67b4b8f43d185fa472ba939d68d20c70d3e07ca5aa958f0fc05e64f6b7a20ddef73d3c7dcfe081afbbad1bfa216af81f9103e7c8e9b8bf7ba8e78af1c3bd1782d492e343dd6c75957d6daadac3d0d9a3e266ecadf31374bee579ec88d2c6fc708f0b7d847c563cf389ddea1a690bcf0df79b2d595b3bcdef372a7fb182cbf9f634a40bf1dde933d6afa8a713d4b4a396e3389cb81dbe5ffe0ff5d34fd23c0d75434bdc86732f4ea711007afe1dbaaf5d4bef54aded393fc6e70a3dde80b6bac3d7e97637f00f74054d04f0ffdb76d551ff07e419ef42281fcb0bd25ef73ebab15cff96eedd142b13d8fe7c4cb5c16b6e3aa9f498d398592213475f1818af92b27deabe8f83867f5339670aeb23d223d9dd46c75d93ae2f18d39c87ee89b8f761ae9fb5a10239e98d8779b30faf102a80ff7b82eaabe3fdf63de4b8c98d766be54ef675873a1c4699448035c9f19c21abe3d97bdb56b7279300656089d7d66796c49f38e748c79c9235c73c0f36e207f51811ed5a4409e54bc36fbe48bd89f580de216d39bf50b7740ff9ab37ef83cae27b07355c35ddb7b167418d6a3bf3debe6bda4b1dfe0fedb61aa719a17eb187518f031b09ed7cc3fdcce45005d0ab077f8fe7da02c27e9b491933bbe8fc41f3479505cefb3e5c3381edb4d3d1011d48395bff4f2fc1de92860def5329d36396bf54a6df682fb21789c95cb4115b0cc5599d77bcfa4e184e76db0be2e3e9351829dabb7540871bc6ccf7133572ef0169b1c5e170dcf2a765887642635ff3e7b69be976e7b077323cc2d7eef8775f37dc5d6c3bec71ed86ab49d70dfe53c75116b0773376c3f92dab10ddeeb05bfbb8d78acd8a943fa8e0e961ad95bdba479efc798be97c5eed86f5de930faa063a1bd63e639afc75ef6fa15c887acbda743f477717f7bfab8b7def09af09ee1b23aee9e974bedb6897934392ebb6c490e6075931471545cf0eff27e749f49cbdfc594e36857a78bcd7b6db071fb63c4df8d119853be36d2c564958dcaaeeed72160ef1da3a58dcebbe2ea34e1b963581376013d98d93d9f58cf6b58dea4b6767c1f8e5f31ef6d1ed817ccd9b73f7ca81bb46b325ab9a9f17026fe70d9cd95f2e428c31c146ea35df899f8cef01f9fc92a7fbe5f497020fd71d757f429ec39b6771c70ff613e78763ec914fb997be9adc1b197c157dbbbffddf5bad10bc13b04f5fc51bfaf0099d4ff292d2c0332e3fd80d09e932026649e9bb5b13c5466f35d92a646e5efae2d7bbe36ffb4ece48e8d93160b3cbaa711f03ba582b553659bd7b78f23037175be1698d7e3b5fd093e119b8ef227c1da325fc23d5d5f561396774169fbd2d81f5dda66bed327f744bac9ffcefb12962fd35f33f8f2f317b08dd319f612e07d23f0fbb588bcff23d9a51abee342f7e7ee2cccd5341b77f255c669ae838c17d429d1d87beef7afa23638e686068873873d42f8fabbf7357b69f210d95d554766993dde555779b51137d5d49adcb207fe6a07d138929efcde2f7636972f6ea43efe9ed4c0abc8d5aa4e02d7a7da751191d7f678fefec9ba8998080c8f5d4d278b2f9e0bd23b7f31442cc1d3117d63dddf5f6602f4bf4e26e6d7c7c47bf8bd59ecb1b689c9cafbdfdf16d0eb51fdf08cc33267b11ec96676ed44b2f3446c7cab94f778d6d1cc0dc52510fff330966142ce84e539b78325a86439d12f8980f9d2b261ce276ff477e30f92ce63c4fa00fc872637cb4831de660799cb7510e6efad0d1e6f863c4f3742ccf668640636aff73d44bcf730d0853bd786239673b2d35f3ce4ed16e686cea48ce358f3fe639007d2606890ea03fb62b9d569cfb155f97db25d93639baa987376b0cac39ef7195afabc779cb99f636dbbed40adfab2c17e37b19ed193d127a59a5ae1cc35716279eac91eb37c40fe1b312df03d41746a78a2c071ca4f7bde9728c1fc02c05e54c7c934c5fb8373974dbdf7ff3abce2fef0b800d66783de9914098f495e31575b4d355ecfeec9bcf6c0766decafa94e791f9515f7cbf858230e368f624bcd9e30fe853e63c04af70badc1b700ec01acbf53ddb48923e5758c36910dbaf974518a23a0515673a57835e13e167ab7906f607fe0661ed883c923026264818f9b98359ea51af1bee96e867e186f80f7987d47693c9432ec11e80911c79374bda6b6628932cff6728e5b2eb4737b435c0ca5e43decd0bfa22ec1b7a6d81c0fcdc3ba735cf32a206857f0389d27d37d094117477f6f13fb46ffb027b567d6c179c55e5ba68fba899fcdffc17c9017b3f84b1d37bd6adf39eea2badc0cb9de758df9f8fee0a5c17fc5deb3b67f98f25c5ef4a1aa2b5ed7e00fd03ef3aa486c7c2d02bf3f8b3ce43d77784cc85eb926c1f70d22f11dd7bde0d861f662ccb1898e17f67d7595acdc54d222c47baac878dea2b553ce5e176bd61f8c796d675cf47ba2830ed2f80f189ec792e5f6f3beb75e6dc9117f5f5b33caea3b78afdc827f3f5f3843de27fa95639e12ffc431f70a73c7317ec86d893eae50c03b3cf19a9a5d87d9a8b0d711eb675b703c9981499a3822c4a826ac3e64ec6f6e2777a2ce6de6cfb39525fede71cd39d74d12ba36e15a416d66eaf07dc17aa54656406c23e2fb3277200f29837c27f1c8e501d2dc017aee9a676b9bbff0fa85958bfd9845455a411f157ab75f813f991fb1263a302ff12b069fefd8dd1dae38077b15a00f4734aeb1daf8238fb0d7a6f3e1df2cec97fe12432fffb157ee25fefba51b59606beab7c443dc8b5ab981cfd85cb8a02fbbb056d35bb885857dfdc50f02ef23539bce97618025f2e1037d3d9f90eb55c05d150fbf172aef4198bd621fb00f5e3381b580be8bfb82ebb75ce06501f8d7cc30ddf1bed94311b139c79e8abd7744b07b3d75017c4830c07f0bbe12ec7d636890ef07b1023b5711d7c21bd0fd873e7719ee3f61b8728ec3eed1d956ad4b5cf4728cb558d08f91601d63e13476a7c668b1455f866b8ccc80e3e614acc780530dc769a97762bf07cfd4980e61800fe34069c9b53c534921863f85cf33fa39a19f9ba017a9f039a33daac74ec147629a88d3e225e887266d5e15e2f2b5184e5827c4e3c711ea069f3eefffe2e9bcfe09ebb554c0dca5f444ef3ef46e9ca3ef73c272ddbc66ef9790cb8e3574b23d4acb4517ef7dec4ecd0871634ec83b83187de284ca76d5546cd918a71cbb98e4752a5a1cab6e4be961b1a3fa09b5b5ccbd55d8bfb95f3bf5182efe0e7bd0411f83bc89ddd989e8f1f7b01c388f61c34d8e8b8931b689fdc5dff331d1192e7c88983644a0bcc49642d00f6ce69755ed3a027b03e291aaad309e21407cc3865c318d4c984d38b665b4ef04016a20449be37b063660e99dda7ed9b7139d1feff5e7ba6a84bcf1403688eb259d104fbee93b73b1b6a688b82bf3c514e649755eba668bf50131256bb7965dec3db7f06f98ff98f29a850bdd030236cf25059b478b21fe384d27fa17e64c8bd696407f4eefd8c555fd6dd56adeeb8720dc6a1f74f920c11c267f027e39e24d007768a2bf241c9fdc653d81592d1cd2756e4ee1bc13818c2315713d5c7bb49c66bdbbe649d9a477d788c1ef9acdee0e31eeefda277cae34772d82399a70d706cdf3330972521cd0f317f45c5d7a0f180d675e5c8ae3b6c664c8e2ceaea7ead0c32f057e5bd8a8371117ff0f355402e2a3fc3ddaf8e2b4e17aead4090e13c4120ba04f7481b8f1a9626f86a3d5d686b1c16e61fdec293d5aeebb007738623cc2f608a35fdb2b047e16a1749b402e6801b5bade44264d5f47db87dc6893fb5144c263f55b43b0db9a974fc433312deff005983f6abeda1a138cd72fd1577cf5115f99f2075b3889e17fca6bc611d6c19827946d1eacc7bc611c6e1c8d8637d49d03aad739e0c7e7399a35f4dd5583c5146b5e49ce70f756137b9faa5643c758df44edcd2de8e1c3a6bee8c333af3662ba028d403cd361b60c5dfb959dbbe38755b3f7ceb0730f08c32b9cc94d6d8d94a8ac37886089bc86c9b845c282df45ca236a4b10bf12553f7ace557226e6d1126d5e1b282f89853242efe0b999677b9a991c63d613d44f6f6a4a4dffd4f2f682fc8563998d23a1e9c3b7c51c3526ab23afb8d0ef7cc0e993793d1fe04b1f463399f747679891a5e51fb026df067a10b03f85a00e5640fb1ae89d44059a3295d5f4c068d701da9e32daf6286d6727906ff83d8f610baa8cb82d0b78d749459c58257533764f5c18cba4ef72e93d09de012387e5b511c515e83d218a3761fab56bbbb6dabdf704744e7709f2c7435d97d8be08fb48e0be11bc6f9630b999a0a3856c4e245539cf99d790a7e7c39ca2f6ee669077e3837c0fe9bb80574e393e6c34019a5a0a86e93ff012b0b111ab773c174c91d3ddd23384850ab54694d61bbf22cbcdde4b0dce1fc67cc05fa83a8085908d3e582e1dd4b301e680e983af6d0feb1478ff85b4c1e7a2f62df831de38df231f9893477919da2f64e1da0ca7d8f18dfd6a027aeb2ad72bcc0fd959bb48c55a53c8fdf6ed13e689bc58ccc708b87169ded4786f2d2f7d6df0eb77699307c9ec0dd097cde50ee306de0bdb0f17f54a7f5abcb6d83109f64a54e11e60edbfcb6bf24057be59bb357dce60fd19d037b772d1aef7d3d1875f78587b68a36f06ee8c34189b5365c2efcc12ebac616f0fd0cf82639f339ecc6ad1ae26c634d389754bb0d78de5324cdf00eb07e6704694bf2f6e49d30bbdc1fd857d673c16f130fde1281e1b1394ff15cf2b09a54ce0b85e88b73f5e326c1ba6bb0f1698abea4d9be73a7ac489f711f8b2caa259a7c5fadedafb846382cb1eea73a6954e6de0110161582f948f39dc4606de3966fcbe56477169b5b281ea633b863b3fb5bc08317bd257ab3c183feaa6a083013f627930cd9967cb29e6fd40bea2c2b177909e2da809111b9c980f8deb0b02f43f86e709e6859a33e9e6f07a42d27ecf6b3f49baa5fc2a6d72eef1fbcc6232f3f4db9d2e5e506e7eae760a937b0bcfde222d8d9220d5b0472b9cc92ea3b40cb9172c0fd9623a594b67a9920af695eb21aec4fad3827c627c6c708e4157565c8163da4c780cd9e634cc6d3d1f6d3dac77b781d64c272e792c8cec9680db3a26e5ed80391a6622159ebeb96ea2b238468efeaaef4c210cec43580d7f27d55b352fc341582fe48534a9e7a5b94ffdc1d7bc3cd4f43789341493d22c12c1bcc43bbb8877d6e6a3386e0c99d491a3d4e9d43884b2b5fb106fe7401b1ca2cdfb3e991a97502275520d8a78179edd7c38b1c950758b70fde90a437d945e937298a7be292cfde1d9a8f2f54abc9df591728a255b8c35ef1c05d935960d21a9de87fad42892801c92d2db1bd5cb25940ef55c368ad03785b97fa85723b14afd81b0f4c562be532afa8e50b60fb1f4728efde24cd76254f95f813618ea1a392692f7df375e691769498eb1ac9c227f2074c70ab497cd7ca4efd2c02cf4a9292465b14d4709fd2e89cba2d44719dd876d1498f5bc24e77433f870055b0d04f24136efc34f57581b726f3dbb99a3fc15682f6b5d132fd1941c236750aca6ca25d9d9b53e16d649496ea95f5491b3decd37c3ed72b7b82425c942d93ad37389a6649b6ac525de0c4e4bffe5bcdc2d7633f794c43b611df9377aa6fff6fb238d48917fbb249a48e9a4f36e318937fa512f290d9982ae0d0ea144d464675c92dd62fdc9c71cbdaf17e3fd3a9c14e7b4548f4bdf5ad3bf53df5b47e5b0d235f31297d121924945e937965ed68644cef4bb50220aecd1a036aaeb9a9e67e49b42e45b6b431ad033aae8e786a41e53491d2455b28e657d6d48c34d22912a2d496e48efc7661e4e96c5e5e0926a2aa351322dae91735d2f2532f8d82856520eaf5160082bef54ac1c4ebfef6bf8a35451608b49f9b20e2726bc67a464c95439ae9cf79d313d3dbe3b1076fad4bee8a3245f49f49d03211619cd9ca36a7df8e524affa243a44fe2dd735f6be3296c9391a0dd67ccebf9c5b126fd81c2eb302e733d6d97d4c463fcc516bf73bd2c836968d2cd5e87e479764c3e64be9f43adfd9174fb6aba53fd8cd46c5d090141c4f19ce553edee2cfe3b57b9247be79494a55889c1fc6a9f7eb107985ae9959bc512e71791be89a51e85352d333a6b4c0c6d548956a4591548abc0cecbdae4dd6d18e9cf1fe707a3a877cbe53a1397313eee375d6a14778c628d229a9e28db2b624f51c974341d7ec229486940e0b7666f49ecaefe7541bba9427c665b29f05c2ee63a36c6349bca6815d4423651bfa2feb581a1c578eb2891c454c2492eb1a5d575aa453bb4836ca95d3d6d227f5bc7cb2c7a3fda599b3bb5f07237d47e932a9d607a3fa690c4eebea26d6bc752c19bfe91d49aaeb3a0c8c2a0c8a7a3e52ea28b06b5d53cfd148398581520723bddda32d8c07fb48ead928dffd7426b164d4516048a16f1c2347b984e5a108659b8e93253b235b058ba33e358b74ba5887fe20d735314ba666a26f1a5a963f364aa26fd222de519af86f19f3bbb15e70ac3a0aacfdcc49d6a1a4d27d3bc7d37c1d96de9af2f268a45ce8d8e1ce2c925d9485e5ada07bbb2cc9369d2e8ebaa6564949798c92c5a5b58e7df59a88d74d7b47f2575dbd6e0cd928627f2845ce7f7e6edf9dd7c27d87b1a42cfbefa08fefc799e03869918efe27c7d15f754d31e25d94c55a91d3e7e87d04793058b77b3ca93f36cada9e16e7d0170f61f5ed79b133863b6d14ba1655b17c28e2b2230b5c8badcdf107421418db2850045da3f2c13e468151eb53731fcbe41875781c7ddf52a3bc5bb9241b25d335731ffa835d871ebb7477a3f7389cf4f7a5dd8b865fd27d2c9372f81af9bdb54a74adae3fcc977e7408251579257909257265f27ebb5fa75a56e894d76ba48a4bf5c874921ddd0352d179451b257ba46ba0657d9a6649a56c97f45c2492cf7bfb93ec97fe208f82f551d76e455ca6c2f227feaf9e4eb164bccc4b7877e028465cdac56aa45cd280dee1701d9643312ee99d7dcf575241758b975f8e72482ae51806c62e0a74ba9e2cded0ef71cca9f84c16de3ec694671938a698256c2eaab80c0c2a27cc30785f27daf0b8f2a343ac5d41d798dafbc851b669605454afd335a38a65ca17f4b33e31f7916f7ee99a91852539ce03e5124f8b72e9df8eba067a4a527a27aa1b45c1429a4b74ccc1ef3e0f980c661aa51152fd206f123d6fcefe109785b0f4d5e33238009d4ac23a946e59229b741dc25253057abef49dcbc05a473be3123b6c7d8c7ef5d1711dcbf69eae219486e744b62baa83c7b27e8e4bf514914799b8d8beeff137077d7ae27bcafe242511d2c038d377b772b1382fa96de1df0eabd263bc8fcf3518e9eb59a55c281d26c5b3b126fb4853859074e9f26fe911db581a485466321d4a63674cefc909f4293b4b3595ca65aa478b4949bed15df48af1ff52bc84bbf5399188d0da02a4d655b34847ca35966e036a4bc54c07d3f15e9962b233a8debb0e77c625a567b279595b525684d2711d96ea26f2afa72e9dd1df521d2272c4df49352c923abcd031a90dd1e379db05f09fc05a2f8305e32d3ad5c965f3c0ee285b33e5bb9446d83da2fadb29a9700fb83cead19f2ecca6f69ee9587f8ffe2ee1cece96fecb3af4edd3d21f1c28fd703d1c692dd137ef5f3abef7c95dac4c276bf49b95735d33bafbe98ce11e32d9bfeae888ecf75467d66c7ac7604f34f2b20c4c4683787fef7819a50bf60e2a138a5f4efa8c5f54a0e318d7582319b51513592942a928578e92e953aae72945b2b307fd334af68dfe39cd8fba36c862dffbfece68ca39be97499d77b73a25fcff4127aeb8fecf7411610972f489de63ad8dcafe8bed7320ec9ee9bd8bed7a9f6a19d559ffe61d1f6e524d3dc41ba0b3bbfb0d724f7c360ee83d36da66742dfad4bcc47eab03f4f6b406beb5f40712e527d148c9b81e9fc876164ac7b3aed9f4f3412c838d18b13b4bef4344f965bd1c3199c67ff7affefb416789fda24e2494d553a4676e6f068a986a24ffd828bb28e8c9ec7ab1c9181dcda91d131887b404b9fba3fd20175b2adb238d08dc3e65774a1a9e9229111abb96d3a8bba7ffeebdff97ffd4eeaa677fa6398fd209e5315407d0b561d95da33e8db2784ac09e91e8bb08a5332a7385645750fa58a7dadb3a0d949cd93d5a21241239469b97b54d75b16971491de5c0fc44a575f7ac7ad6d5618fde834aa1e72a32bbda1fd4a946324acf11d233df13ba479dbbf5afa7345c5bfb3ff212f5346e6c31f5c95a4561fd338f55299dec62a6cf0d8ab499bf22c415d3f11ef6f2a9fd365e884cce1454ae1a4cc78a1ce594fa3761192847ba1f915694514940f7984645b233996f839dd944bc84c51a6ce2202ae61bc50cfd53a14f4d31293daa076efc11e84ab1a4e66017313dfc129766c1749429f3dfd13d3e4765b14b03a3984d8feb65605e624d15222f3dc69291c52af315161f1b4a03a4d0a7c22154bb72642181cc2cea58ba65a946a6b136dc84fecd4de97b1ca55e6a4331d62c663f85927a8ce9fe6846c1eeaba398b16484ba56d4fad410e372c0e82cf407037a6fb8dddf975d0b79a68945aa6597e86fe89981a32481d6e7b516d3adf3b3313d9da2c0dec7923d9c8d8a24d0ded771c0ee21ea545c0fcfe93d3d25da2d0b25efa84fd3fdd237f76cdee08fc962ed7649998d539c13a9c8232a2f34bb48ca42c27b7dd655b6ef743e608b3a833ad68a2db501e71bfbafd827c2521be6bf9cf521506f6bf62ed92e42df7e26ab6ad06df55d2ca767e73ff101f4f7778076701e515da524adbfebdfb555c5eb06fcaf6acdeec9ce14c00fca7d82a44aca6195d4fb753a2dae914f79d3839ff05720d82a2986bff4f1db3a2e8b6de4e1efaaf7577d94fdf5cb51326677eff203bc9fbc24dab04a474a99fa03f47d2af9d2f7e8ddab62597f45df2ce5ff6fba762a5674eca93d483442795181e31ff5d1cb99da2c91bc78a5fc6c454ee9ccddafe39248d41e69e85063bedd66ae0ff240bb515d8dde293a4fba2e61152805b57b704ee02757af9b04653e95ad9f15ce65f3fedaec977882cf0ab1c7f3977eb89e75d6a08f85e127d5cfca488c4bb853c1483fe89a47c72fe6a57a4db4db60a60dc458bb321f46242fd621f84a0633d2bb63c2726a5cd24a394741b2b661cefb503db1bb1c38d42623c3705434bc8faf3fd5b22a9613ba67b23e8135ccd4febbbfdb8b78474e6149aa6064f4d60a34fbb66ec757987e1a9545118df89e29e764cb64299ea790f7f946ff0fb531936a708cfcc12ed5d674ef137d83fa2deccd99da363395d34e7e5e96c343bcc9988ea06ff235f0784af72f8f634c85b33ea177cb42fb211299ed896b0e03eb55d732219d2af5c7e6ed124985b09c92cd9cde1767c8f81ab52f637fb8598d861bca73a99db9f45f2e89a66e9792ba8b82e6fb3a29a92d4adf6dd4f39d5d87eae3da3f36cada17a86cc9527d64ff85cf0fdb678b8e2fdf2e98edc9783ab525ad75caecf4a10c745d24f1936798beb0dd339aeadf7ff1124a27941d571613f845584c09e30f56cf8f4bf53c5bba5dc2523dceba3200ee5e4b43f80cd1b24352bd679f2ed553a99cb18b889e9b6fb3b3fa4e86f47edfe8b4fcae292cded5f0ab694aedaf4bfa6f8cc3f7aee1f1e4e7f5e8a309dce71d39471a2997fea088d4ebe607dd738772f9e14edef18a3af26fe5bff17ef6bb87f9b7df9f62c9fce267d6c6c78c631458eb442e4e61393c3abeb5fe74deaf8136e8f2eb6d5212aa5bb82b5fdcc4d215743d77bfe6fc71c6fe0defd0a7d7e6f35617be3b2bd51cc4be71894710670b46463b5ef1e33afb73701e795c43eb7c3e63611daac35f86c6fc0a278c97b53abef3be37a6a71ade7b3322a663f1fdc3794e8a7c56356b69e8868f01fbd9bd4f6615f9aa10f936cef7c6e2772b59fc4e269ea320fd8ff757f71fc7f541bf4e1fe5e0f7cfb23d938d82ea611e8ecbed9b1f688cd349ce7f9388b0c701b99d7fe227899481fe26905beaabc79936dc2cf309c879e7caf4180bf916dd8bb01c5e628d50dbb259d3bc1a6a49393c7d6c947d3ab5af49bdbfcca5f4906a99186e06db58122e51a96e237a9ed2f11295c6efa4e2bc7b217db8f9d5d426e2c255371feefb75b10da50f77212edcf065b1d5ebc538ac23cd7a31eba48ab4686b8edf7bbc1edfc7783df89586f552a3faf650b603550cfdeb79b9337be7b50c167bb636bec64d7ee8ec27d3f9bfe11397b03c280d9f28d19fae5e37faf4f6a6c3fe81ec069d62fd6b7aede876f47b7dad73d9dedaffec39980bdccd78478ef10f7a7e54aac74422dfde43161b132654a67ca24fe40cf1b28cada1d16d347e774ec52a304794065d9cd7bca49fe15e6d8afe1ec2fbcfb146ce916cef714fbea2a0a8ad4da34374f7b50cfd5bddf85b21ceba8f3522e85acef8df47a51cf4f1757dff6efaf9ac3a3ed8f8ec6c466abb3e4dad5d393d7baddd7c66b6d788ad79341fe1fcc8e9103839db73dd2f6aa07b358671d57849c4743e62673df225b62f8a2f1569e0e40f73b8bb8bfd358efa67f3e4ee22ad713ed6eaa9d4c69a4dd7cd5d5cb97fba876f6b7b675c6277bf5e4e6d21992e5ee7d570b70cec7dea33dff7692e455928914d2c0dbfe652b4a1ba5458de2ee166b835b7f96031b633d39ddcc26d7e5d8c75c9dce6b5e94ea48fb15e2dea776921d9f9c7389117a55d86b5759dcb4a164aa72c9248cddf97c8c6762eb158c0e59ebf301f6fef5eade1ae4c1ff7b5f1df4cd7705fc6efecbc16cefb45e7bf1b4fd6f34a19b436a252c453b3f8e3bba6ebb5b109d72b07749615e9e83854d72b6e67ba9f61a936f1d5eff754ac96bebd4b25753097b2cb323085b93fb8c41b91f2f96d3a126bc87930ebb9641c6349bfc4be5aa71aa9e6b25985d510fdd783df54d76aeeaf363c24b23d8a29af136e07fa593767c418d95c3f7ad5c793c62794944c77a93e36efb7c6b6051f0dd5497bcf32bee4eed78bc6b656b64bad384613c87b5a4d6d8f8e41edd3ee33b13410a22013c893dff7be0b16bdf1a84e1506e498aaccc75bf7e79816e984ea8daa184f6d667bdf8dbb8b027b023e412aeb6c2af398ecb1b94ddb1d8beaca2c26141511fa73d8fd20cfc6160f2bad38df8d972f03f31a6beac045bda0f31df3c7b76b541bbae13955ccb669eeb27949a6858b746075731d669a912592f7dac46647d7754a6d2d89081f9bc69f7df8d828522c157947f7a07b5da730172116615d7dfe4df77428c745eb53676b0916fbde33ec3cec0ba3076f58e29c0e8d8c98f0b90de8197ca6d2a0930bc47417be8ec3bc8c2e494eb2505a3319a18f85fffa866fef63a9a8d389710c7df3cbd58a3a554f943fa7fa282c212e605f182f9f2ece106bcd3ea34df61505f9016cfbf7d3e2c1f7097fdaf5a12d42da3d984ded2ca1eb1e81ac998f5a1949f7bd2f438a491498dba42caea936ac709d47262f9d3c9b7dc7eb9da2c34bf6bfe9e7b38da247feed0a71dc37e693d635a0a570c4fca9d42e3e24d23bf341c4e5f03cf7c939f5c52241dfd24ccb0e91661731e6ccc0f8fbb535a5f75b3de97c6deafde76cfdf41c7eeb13e51a0646163be8cb85775cbed71389e068451e6904f6659409108fb67a74cbfcd5639053f311bebb23b7d2727888462d0ffb07f29b8f778475bc1f1ef4ea96469ff8ef1e7e7f7c2ac7b5de5ebfea5a945179327fe237e8f890996f95fb8a9f3d9bcac621d5f09d53bb4a7deff8e81fe99e454b4fb3363eddcf556c740f7ede10230c9cf721f7c377f50eb0035e2eb3cd01684025c2d2bf1d306f8cc574134d154229035fb4343c25daf01cf9038148c53156c939f68762bca37b08f1e6258b13b23c8af7482bea441bd691373c137f708a65724e478a1ccbc6575229db58362a7a1fe369be5efae6499f521b61cd728b928dc2cf2cd7b5ec124ba71aef4bd6fa8a78ee89cee82c2d0be6e30f77f91afc3d286fd58696397f647e23d72f5e96fe80f1c7b82472635fa9d70daedb5c06d921de99894e75ddae8f66975961606f971ac96df00b1cc07e7c1fb29888c8edea2cd1774a966ae63ef2ed09aca968fc8e77be5916334a4aaa9379eb667e1a7949a9de3b5dacbd92e525e69f8daff6caeed26747ef8bb5e176c97cb30331f68d36c780c70aa68b577d02b1f0cf492b933e8bc636ecdac394bfe33e2cf64fe4d0b179ef84d9a51d3f72feaa4f508e56edfcb83e1377f67fd6d26cef6c8076bffb4e79fb3552fefad5fa1e9af3c558069f37b525f67c3c5feace176cec6fbfa336dcf4d4deb966ad7c5d83632c995f2c5ffadbefe83cdfafcdf9606c83af635e36e742f5b9fbb99ff9f3f01e250e9ef894fabf315bdda39bf3291b5932558a6493d17b7174f1bd1f1b456bcffbdaecc5c746e173e8fbfc39ed503bc47de9eae997398bb5b135337f27e609523956c43b88cba55a96d133e26713b2d85f714ecbe1d7438c8ecd97de8be8c2f3b9e623a5484bc2f211596c4c2655221552e428dbd0bf1d1bffa4767f0ec72f76df80568464f7604b830fae240261beb9ae8f86f91f7bfb86f66dc7b769311b222949164f785c0eec89e7b67b6b8bd0f130afbcf3db01e64a67c2522b206fb34ceb47fd62f08d6d6314a91a65b1da91176571a67bb47af041ddef95707ab2fe534393c063d0e67a7f6e03b7efe4f4597775c138a036dbcbd33dc1dfbf34f198a9bd5f060b1e8f393c9195c36ff52ef294afc949a95eedf67eec7b7b3fdeaf3bdf1dbbf600bfb7547f99fd742fa89ecb6cf547de17952ff4ae77e6f3be9f6f5ece2cde52efd718977d03defe40a76cee541f9a9766166b5796b79254d73bfa69eff27cf47e9e6f067dfa69fdf71d1fd2e067bb650ab2ace1d7e37d13db9cb77cf723f445aaffd49803deecdf739e93bfead3e8b2f4ad4efca291b5484394bf52db85ffbfa3bff5e5cfa173c7995f2a7ee4b35ddb01683a6fe3e89fa3f7c7dcf767b4bc53c484d231bcdf84cfad9e5ff641e649b7477de1475bca2e12c9ac968122c4b2dec8dffbbd9ef5e3249758ebeb1acc7ed286c76802bc6a0979c231d393d46ff493473b8af2f72c66f908f680d34204f5129d355dd791f686b9234681bad4531ef5e35ec9c6219218bfe27bcb62c470ee76dcc85196b329deeb00e72848fb7bd0f1a5f7cfa03fb7668ffbf1d8de7edf7df7b8dfe3b727673d28e21d3945681fe8e3fd3af51bdb24bf1f8fcbde3e1d0eaba59f1ee2b29543fcfb59670fffaeaddbdb43968748e4fe9c8ba7bac4cffba83cb1051b3fc9b73ca2f1d3f8546f2515cbdf435bf1995fa6d19f9aef1ef7a6c7678adb99f2ecefecf88e1f85e9015c5f8a988ecc74b30799f184465b5951156cdfee74b53e5f419dd6833b52dcddcff4b90da9e0de76f8f268fd273f349719399b7f5f9e0cefde5f3fbe3fc31cafe73a0cc644a88c46ff2da7b1e7cfc3dcd22a0c946be4dbec8ce8fd647bdeb149663c7facbd0f4f657fbf9ef1c958a3b78b3e4df791ffb25e626e5b48ffcdf2edd433b5b7622904bb72daf17d394356b3b0f46f79ff73e5caecbf11e69b4f952cd9d9875026c730d0d7a1a452bb3c8b24961f5a47ccd7aa0a917f1b3ccd83407f7d426949f2d6299d4f49b8ee5c53fa8c9cce7bb89f265850de7b8dfc41cee2904c274e0b965bbe510e29e4bf41fe966f0aa9af1e31972aa3faf57c04df31fb591b32ff31d3af35f391965a1950cccb84e7169f386f867a01534c584ea57888a44cc09cb04de4e03812e5332c37097275b92ecd623f8f7369f3cbf8fba8adc0ded9be8ffc70e69a5a3f9f27fb8cda4a42e80fb6dfbea3d14306452a74ef26d3df789cb5c7fb5b5db5a7971cef7c491d3e71e5f5784f68fb6ff92ebf19ef61ce4fef4edf7724dcc99b4ead29f2e3746a88519b7bf79467f7fe7f1f4b617933c5097d1e7fe9936eed12d5b5d53c9aa04fb340df5cef9941edfaea753e52f66100bef3f988e5b251daae5d392a929d7188346ffdcbc1dc7ff5ba996f5e2e4ba85da2fc3ad18b7e1cbccd57b02f494972cb1f9c63165328280df09c007aee4d7e40534f1398422c1b4534127b35ad8978ddcceefd6c138cf7531ed4b30178ed8a0af5588109cf8f845e3d2af8c1de4ffd9aaf9736779c7d3ffc2ebfa143b350731acb86d29df3acffded7bbf339f4eb7e9bfacf4bb2792fef9eede8f3ddd847f737f77e58a4e9079f26ec6fef4cbef92db5937bebf9c1de69ef15cf69cef2765ff4e3dd1e1f9ab8ece6ed37d416efd71ed04b7d7f1ecc9fdfe5abe87f4fa4372683a0a6127c1facb64266b5b1479673bb51362b4759c7befa1579dd5c52b2667570da8d3e8b752dc0a358ad50431fdf9e3fc812af37d77d779e988f09f18cbebe348f82fc7e4f1ee8e3311726cb12168b7adfdfc919988b6f2bfd3bc37da78f31e0d0b7f3bbb803c4ba647b90509e8a7412ddf10beedb9d8feee8aa9569465c66455216c25d2d65fde4796a4b77c625f1cf3ce396def1d8c7dc1d2aab26ca252d4995942c67fa94b21a9ea1140546b5f4ed026a4448bfaee42ec716ecbc1e0fdc87bd3b93331fd57767e2cb3fef5f80b5ffb3c7fa026e77954b9f1c5106515eb9c65a257e46cf6bee02e1dca38d8dfd178bc3ddd5fbf4f335217ff9894c63b53e515914b10676c62f27613a5fcb4749cee30d86d4eeb1515dd7e1e8fdeb3b391c6a86486d4ba69331bda4ad7f8fa86de38b1b16cb93d49aea3429abaf667e938eeed86215c09fc7dc39aa0b36754653a398fbed388d9d1c9835e5c16e3914ecceba66bdb1587ca073fe787e1d5b918ee5f8e9999e7b97deee6272874468bfbb93118fb1b7ee1cc8e9e77bae8a2ccf86f9fafb77afb32fcff26128cf26553a195cd249f71c7a3ca1178fecedc576bfb69eeccd8fb816cfeedb1ff606eee4ff2fee1b1fb3a907eeed5fc1c6a373f847bc91e55311e11c3ebc8bfc7ad045a92e0eb5a84542e5657fdf586e0af3f3f4ce75f0883342867dfd552b8ad9b398ee13dc126b64ff05f82fa4a6f7ed710f58bd981057acc6b2733e6468d487b53e7a62a723df0ad4db99401e3c629c300c8023d5d9a269fe9c7f09eff94ae275b7fd3bc63155e6e5fb7af6ad9f5d49026de0448ed8e83e604bc21c12a87d3bc7b2b50efddb3196d3221a0dfebc8ec02cf451fa1eb7b268d7d7fd20c6dc896fb5f2cf7f6171dc44261ba8ed5e9cef72f50f3fc6b227e685ea48a16cd7f7f29cd76976e99f6354245c97a3f6a12fac418f037fa03eca5a7b11628ebfe7e2f7f93d38befb94f7b5fe6baa4ff7bf13c42c19df500763b1843bfeb3ce969a5adfe55dfc51f779c243987e1688c3894da25f41f55e1a9bf78caff7cfbce9b96fe7bbbb84b4f611577dfd3ca91499d5ff4d1556c38f3e8f53e89f0ab757cb7b5d873bc27c0acfe5ae51533e9b96de3a2c49116f9adae06219b01ac3f513b9deb789a7fdfa212a1b49eb8bc9206f2b67b93829f3d3b0faf72af2c50b1bb7c777503f075fc3116ab287ccbfb30cac1d8b914e95e3d227f9bce89d4b1669b6bef4ed3cf22116d0f5d9fec13e3dead3e37abe7939fffd73ece6943cda487ffb3d780ff5cd75b3f445b813ad2dc0ec73bed77db9dbf8865b7bbecd53045bb96b67e67d7f41c7e7ddd28a87327fa2e6b15f9ce9de275837dcbc7b22664b893851608af1d406ecafa67effe53c975a8c10566b55b4b998ae18a95e6118f684c9bb442f3b7a133edbf205ee436a9fb9bff3fa28ecfba55b1bf4cecff48dcddeeef31359f7f6aa4f86be4d0cc7f16cb5e34ba7ebffd5fe1ff34cd421dd8b9fea067fd2779ef90b36b1343c46be7aeed0435b9ffa4759fd063ee5ce1a9eeb83b09e99a6e6b1bbfffbf4c072c0733a4f563fec95a44efd9b7097d760823dd6f833af31d4fe3738365d9bb7cf53e97d16e89816fb4dce6b04de1eecdb7fa28718d313e405948f3a50207771d4d43c760650ff210b67637aa2eb7dc4e8faa38ef0f2e731fb183d6d3dec5439867e71eee00dfd28cf5b9b58142116d8faf41269c87cb95d6c0d66a3a8c35ff684f881f8f660e386be7dc25c82c3a31df296711a788cfbda87c8c99ee436007e1d3d57c08c190ebfd3a1113ba0a1ebc8673582c272f4e7339c8f941ff5ac461e4e4d3194d69dbb44f75d2c58fed74691a9bc8a1896508b11d7e8fe4d6d3efcf9d15fe6ab5f11318a4426c7743418335dc8bf3d8d1146412644fe200faa8cee13e6c75ea90e5b87b27148a65407841cd1d5b4f09252bd7e57cbc0ee85f63768fe1b3c34bedf8ffe346f17f6ea395bbf341fdbf1bab5eb03a8e7276fc7f6fbdefb8ecf7fd7ca291e3b759ad813b94405d5216c8659d5fad695222eed11c4997a39ef1f746f1ddf6ade1997c34bd23e73897383cacb53bbd64e7c591b9ead926c63492c883fe078004534eae7b2877e4ae968dc605da96d2c93edd1e4c9bba726d54705ab5485505ab7b259534f61696750fbdee0a49ce79b21e63c0eb25865b5f15d9983f6e67b0ef99cefc3b65e31e3f8444f70780690afd993c120cb59dd99a318566053395faca636dde35a9f149f7d0c9aae9c62b89f9fed3ead0f9dda0af67e4bcab2b84cf13b2e9b3aebd0d43aa914057062288ddd8ad827e774ba583b9e2ad0fde8e8f8b547e530f3f391738367036bfb45ed5ba8f5f2987e0a182da48c4a86692a452c278d9f4d718eaa97b555aa7584e32c2126c6728e31ee46f7a10a1dc47df18bd7261633352f0cdfa4ead01469e7c4f2f5b0ee9fea8849053978916f1de9fd0b25554c5a7d97d9904c97d64893b7b00ccc51e417e74868e92960f93e906bddd0381f33306af89e618fb85160bdddddb5ff9a8d3ab177cac3cbc8875cea37acabe5b9b26a9d4ed42dc3e995486eed0ab6bf8be6ae302c8bba43eb15d699b0e7bee10d67371f7a81683b9667ce1d6f300d1ab9cae3068cd7b6b120a7c152615842f38da251dd2fd2c826f5d31dd4982a62b2532e89446a7a268815c2ce84d252c47c020c03eb406d1116637014c0e6e98ea90226d4331e817883df9e35e0961859289d6ae4b51d39cf68a98a02f3920606bd67a7d01f6491440013b83387f95d9e178f5dcca68a1896b74358c1bcd93977e43ac31fc8291d8bef88b3d4e587fb99035849ec7e13a85ffe75e7eb8ca5c188ead1b14fda3b3db951fe51c425a9dafaf6662e743f3eddf17eed4944f89cdcb2d837f2d07d59ff1a29bddaf68ebef8cd1eda0baa7b46fea048da1ad46bea1bc7a5bf607323de70f1b101bae67cf373a3bce9d36e0d7abba6644a36b1566c195fcfdff68f3a0cd4ce83dca4cf0c170fcf803ed17ba697aba91535b30d029de56c76febf9f35f9d7ef7dfd6d2a76f25f7a7b49dcea315fa5934372e6fbf0c77916e4d31d0dca5836d4d037f733ad3d47c8bf6cff3f1be5dfd8fabd1c5aee43025d68c330362f4bc9833a9caacd234831c76de94703a80958f3dce6412c934ad73afc56338ac87fe1f9d03595bd4b6d28f7ef25e6eaec161863a7b684c2b01123c07c6cfcae0c87d551a0be01787e5367f7f49eb5fbff549e3db7d1deb98c6bf289efe53e9ed7d39c475ee304efd9af1d7f20c5d2a9d0314fa8c9fd508759447580e2ed618f61ef1033d4b7b046aad831dccefe9e67b1765d2f19666fcbab93aac55d6af0d3181ed3a073c6c3877bf84cae3fec8b6c67c98eeb67ebc363fc83e5ff0891d7cc1ff3748bfbdc891cf5a5fdece9dde9da133f6067b077a39d273ed6af3efa238a1af4202a4bb99fa5cd0d8aa5c84a4a922f7d334b356f1f8c0ca6bf0423fda84f186dffe423e03e0bf69bc6a6d5ee6b447ed6591d2a8fb45b916cf76bba76ca7ba0668cc9ff4b2cb7f8ab1dbe4e5afde7efbc83da3ff9ab3e29403f7baca7047c3fac13c2b5dfe15e309e9f477e9431df81a69c6389d5f01d1b7ebf5164c0467d82630a3ec27d2c0dbf18bea67a97cffbd3de6cb0c680d9000ff4f1f4b733e04dc7ae2de0b6324a0ffd411e6ba47a4a8ff773eacbb7e6b7581fc1f6e151267d678364a0ff7cab837c33b77b9f1293ff3ffa230dabc1d5b341376ced2ea3ef77fee6730ff2fd5b7f22ea05edf33d9b82e52cf56a9be10c9efa2f89597472660f89d0fab9daf1fa360b012cf27fe6c71406bfac9c8c5d4154036138f204e2909c4c28ad072383e93dec37bcf66d32fc080443b584a169932171f3a7bf21aef860cb7579c3739a6c6c48c8f9fce8fbc4dfeed7dbe7b7d7b5e3b5b883b0171ed44ffce13dbd5a8b87677bb9376618bcbf612d6b16eff2ffba9fc3c319421ce7e1b9becf8000fdb9f06c4b23adeef2b15116a12f6e224d455e85b446be8b3f3dbbd7d69b535dd7640371f695fbd2e44e60fee1ebb3f5b2df6c99aecbeb725b6c81b62ef7559f1c5b5edcea87bdb9cedc7dd717f0b4b6f8a97e0efa2bd43b06c66eb1c1bfebb743bb379396f7b579cfe85f308b646aeb94bfcefa34fc6915a6ea15916ab33afb0ceb55d42aaa75fc7bf1cca67f4ecf7d7be9617fff40077d3dfa198f72ff163d290c53f19b67fb3cec3ed638b89f43efae30fbe7f9737dde48e00e632dd47f375df4e4fbe7e478d4d570fde9c09d7ce0239b473e8cbff92fdc0fc8016c7ed7e6127e6c94f97ff77dbc9377ff5374dde3cd90e7fd649cea797dc7b283f1ef68c3cbb2ca986e0218a7cc3e4c746a9332cc2266ab25fae6fbfbf39d4ef5b1b997b5ef77f9c80dce52969449fd0d7ee3fa13fc00a06b22ee36d44b2615f3098cb287ef673d8ccc7eed5128b1b85b4feecef85ac66fb877efafb03ee37e6dc78e8d3f8f829ce7e5b03dfce5ddd62c2f1df7ce156ef77bb9e072baa36fb1fdf2a58e9f426079338f39924cf739ddcda148756790459ab50f25fdf0277c9c6fdfc1756095c9364e9fff35534fdbb0109eda812deef2cff52a1d9c9b0be0dbe03a99af8ff97ce2967f18b5239141401ef3191e7fff4dcdcac373833cf26f05b575ba7bf4e7f70f6aa6c303fec8a3ae3beac6f7c831021ce8bfb19e3b7fcae8fd695d6b5fbf3dd2318a6402f84aace6f70fbae0773e72c04abbd54c06513a0ff43732eed6eb66d9c746f1e6236543ffeec56e9e63091c228d9c53ad10561ec71f22d54c6bf1e5c23f60cbb5b4c431d58ca7fc8be7bba58191c593ff742cbb8802454d0292c5a32ca3eb9d3daf296e70e63a7bb60fdd06ff6483b9d57f8c8977cf70a64d8ebaa61ff5f1e4f03ceedd6024315cef30308a64c3ce06e5ba8e6bce5f75cdb8c4d2ad08fdfb9ca2acc55c09165d8cb6eee7fb90eedbe6695d5b86bcb98ff34a7925626a2d460c07e1a68fd8670cd38e6177697d1c5b3a6fb41d33c89d447cbcee593ff832da3366f88eeddaf2c81f08cb80c9f2a7f4d78d5df17e1ba17f7dedffffd6d9db160f8adbfb1f9bf6df9db36ff5648e7b56ef3b188bed1c3a38a0873800dda75d4397feba362171cd5ccc92fbcf8a7bdbf1797c721998cfeca06fbfefdbaf45fdb3bddad3471fec86875c884eecb23b663b9e7de8d8e1874450b777b943591ad817cbbfb391b5e818cb49775c8ddecfee3a6c89f15facadf947f1c91e5e8be391f312e2b9d5a76a7531aef65466126e63a9d691d562ab8d7eea513db4570b3c82f847a73e96f20cef0f76481ef9e46afb833d8bcb07fa3edd5cd741f5acbfc8dba5892169ea035e79e8dfaac8577388d70fcf51bfbefc9ea6f6691f2f53eafad3e715f8bb5137e4fe5a869d1e2226725a920a7216a0df551a400ec3679f472988154fcf9ff95e66d3f030733afda67abae400b1e533693e52fe42dfe3ba831783d89ff7b498493327eff0ffde5acfbcce6a360d8fbd98cce8ba5e61dcaa5be3c1e21a94cec842a277e80f733e85c13b3bb73fbd8bda627f7817ebdff6e3bb5afd5afa4eb7865c9aa2e6778b8ed9e6bdb3fb85e7ff249e7377bf70becf623a1d0c8adb25ad32e91ecfe3a71adff6ac5431d5864a539f8d75ede9e68718d57dbe63f1b731729bfbce68417d6bfadd704cfb3b19cbf7b88719c3f060ef305edb984b744fab7d9edcd2e201f066eff8b2d7de93e7df53f941e99d610bddf36d17e8e73e6ed6bde71d5a42fc937959d4284beef9429fb797cddc58ce2a3f2ba6fb8cf74d8ec3ff89fbca7ad7f8e4fac1f15abb39b10dcfe3f2f60fe3c11dffa76b52bd3a6af6fbdb3ddb5139dbe36747d00fde1b6c3ab8e3836ff2118bbf956f188c0cec9183b45eb11ec1ac9740b279bfdce5f177fb60602e400139f03e955d98e38af50a9d1e9bdd9e94acc721f27fd67bf3bebfc1ec4fd8d52529a3c028e2d22cba32b0237bffd5e53d2c170073573a3e95cba33c240f3ca27d27f9035e8e514405ea91933b7ed1d101666823dcd74edee5913e95bb4ff2151fe400f47cb3e8795ed2b6776e9bbb816773d73b0b3106ccf5dd5d003d03b0b4997c89a51bf7b9dfc923fef9e31e723efb4d7ce6299fb31e7bae3de4d53dea80adeceae8930f75f4dfeb9acf622fcf73d0795f02c8116a75ed5edea47a3bff93baf467b82b7c3d77f5d0f73a23a531e87bb95bfceb0e3bb69f7ffec406bd8b233ecf2b471e7417dbc331cd5f744ce825d6c16981f7b1fa8ea0bac311e039a3cfe2d75d5f30dbcfb7c6bf1efaf6e9c1cffb3768e679bd5fc7beebe0c3dcd7bd7770993a761ef489ffe8e585331cc44ead8175a7871bac4ef44e2f833c1859e139caff9a97f0dc0f3d19302f86e7f1bf41de33e4363339d19d33971733a7a37b3c91059f553f2f7ece7a219ac5b367ef73e8e7b941ed88afa7b9ddda50bef371d6b14c2a6a4b816f87e5ad73bca7c7fe41ffabd7cdf0b20ff1ae8fb9daacbd571f7baf6770db36ebd1df7c87b2e2392e9772874fb3c55ebcfb30880a9e7fd4cf0f6feb0a19662af4375ddfd58bdee1d2d2b9533e663de0e5409e0e95fb90b31ff6eaa1bae315cff38bfa77e46ced8c22f44fdff633e03dd1ec5e3e79379705f731ef63a8216d704cc59f69847c2f2f66539ee7d86046637fc5411f1ffa11aff3075a79e6df6be9fa7f1dbfebe4ee777d9a81765ff77345dbe6110bf17ff01c0f8fbe5cc6531ef1a0c9dbfea7339c434efccb8ad03d7dffc60fcbebd19fcff73f3dbb55f55406af7fb9f775eccd79d23d79d5d596661dbac6c6df79e47169f68eef70d1e859feac97be67cbc0ece039365861ff697dd3b3baed6e6df5dfabbff91b35d74665fff5acfefcd7cfbdefaf5ddcfec6bee963fae05efc84f9f0a34fafc9a37bca5b1a9df51fd6bcb5bffba976ef7f8c6f30ac338ed9cdb0d88c43ac15c20a7a88e6cbc0c43a0c338b4ad25b73834ddeaddf6ef4c527cfd7ddf80ec311edf5f49cef9efc46bcf5fad772ac0deb29afe2f54df73856cfea9d8a1ec6e0aaed9d3a64751ddd67efe2bfddbb302f5b1dfbb31a6ca0cef921f70fdfdde2bfcf4b6a1758c03b77942f6483a07affd76705358abcd6b7f513b472b7f549f5ef52933b74cfaf37cfeae67a7b74a7df228645fdb67ebcc7f9f7f8f87758647f1ea7e72364e3f57b27a1bfe1eebd94665dd67fe10e13cd017a6c7ad03fea66d7a42452e40f84a452b25032310ea51e1b9c87a951f4315415861b98fa06d40e3d627f944b3f159bbe044fefc9fbbf50de1d1211ea2fb99c09aaf76ffa0e50bdfc6ff75bbca6feed38af75c91c4fb6cbc0ac539fe5b840bd879bd466ad0f16db77f1a36ffbf570505b9fdb77fbcd7c1e0d0600c3362c49097835acaf8e9c9485d0c39aebe8c5f1d464fa76144445bcb359cd0cf45f60bd4efbfb5c610e07f4c86fef20ccbb1dc7ddaf13492da31e7f336a7dfcd6f8f83eeefa863d8fd7fffbfe8e6f64fe935e17b7a735f8e067eff9391e6265ad1c6aeb0ffb7d8d9bcf7b3aed3f8ca33d93772c4ef7fffc1bffcbf4fd7fcbbff1ffecfc9e9ddff1f9e823611d0784e5c335f5e10d7ed202ea5d6472c57b52a754d7d90c4a7a3766a37e0c01eb3f1a7a0ceab7738835df3c8667436cad2feb45e8b1f41d3e0cbe97d7ca02be426bf3e6777612f2f2bcdbf3f0f083eddbdfebbb9eb23c5e3feb9fed396d7dcd7f3dc8afc9a48f21ab99e8f3ee61c3f4eaf1db7837c35dbc207e6e5f166c1ee55352b2b36b7af5c3b86feb50cab2a5ffc2cf761339df8c479ed7f2dcd5d98f284f5c3ef6dd6d30c0586fcb6fed67cad7d3bb9e557086bc6fc0cf6779e532edd0d6e3430cadd39769cf79437b1f9f8cfbff7c213ffa42984c167aefefe2bf688fe78cb6478301fc1c63e107def0eff8489ed0db1d8ec3f3fc38d08f77f6b37534793c9126dcd72160fe90ad449a7888cb82dec97bbde7af3b9c2fc084a894e1bd2ed0dabecff14d3bfe96c636fbfefc0d2afffe063ee023a6f9137efb2d9e658305a9413f14c475f93f89fbf29d2fa61bfbbdc77ce17ea743c4f0b20a61c930b4529637cb31e0fe3d5f490f6bed7b3ef77fa97f04ef66375ff3ff2edfc9dfebb3f0133ff83fe153f95fe237c11c2ad469eefa05521bf623965e4ef7fd05116f01ec5689d48f719a8ecdaba9db50825cd8d0a7f2bc28628df5baca7b7d4bb4e2ccb0844af3180666fd80bf798705ff9d0d0c784b45ed69b76ce90f38fffec57a9e3cc18fa734fd433fdd4bb8cb7e2715f81fe6b24275cacb621b0a0bc73c24b229425d9058c4bbff8fbd7feb4f16d9dac5e10fd407ad18ee190f2311c418135101391348d4006ab771839ffefdd5a87d51a0e9be9ff799ffb5d6c1fd9bb3a3b2a9cda8b1b9c6754dbec7d7d7ceeb5756be3ecf1fe4e7bf4bcb918d37c64210dc8d45faf083e8941473acc319a6e532f4aabd88e083227f09f6296895a503e82987fc01e6d694c759c7e1cde31f7e1f14fb2e822897f6caf615c530c457a3791d5fb1990ab6b8bcdf5fc2788873852b57f6517bff36de077c751aaa9cae0f150dfe91c563eef72bd79f7aa9d4413458fe0a9f7835e7ffb621983045e387fb4ebb15cb272af13d89db957c81c0abd7788e11feba7f7d6635fb35923dfc6aaefbd473e2557807fe4d7c581f835b4f6a6e81d7859b39c7fead3fd95c3b93e351e97bf23926716ad1faa170ae9b387f22f4657c5abd631a5c0e9a7352d823bfbd16caaf2dbc0b1fc727e6e728fb42d7eb741c6d4ccad1c272653a1d5ca2252aaf11e039d5e4f40763d09b93cf7ef31a859e8ced55ce16312ea1cf7a233ea91de7ffc61a2e70130f5af56b30976b597aae449d56d3ff61f18893e6e9c0cb93cdeaefc4f05ba9e3972f53b986dbc885d8c011f8731b8d7b7ae2620d764eec29ba8327f777e7dae53ea0ff9773ff2fc82b0d9bf3eabf33276e3dfd5939630dc0291f90bf5e978bd4d84fee03fc97f830724fffdaf407c335e8d10b7daa4affe723f549784e87e27a241fe2c7f9544dee1362479a4b95fbe97e74066b7182ca772ae7f17b69e6dcfe402cabf68f1daa9c56640cd9b56bf421a9368934efffe567e9bd3edd3de7e9749db8641e42cb5d2d8307c56ff93f071b85fd00ceb50b7e38395f479d313973e573f69696c3efaa91c77a1ea79a7c70534f808a6db9590f2fe43e53ce4d24e416451c8a58771f00e702d120fb173d04b43ed4f37def9df033614c422d473d7e26717c2ae7baa0a33b09fd56dc92e3f597861e9da6dfb198fafa2868f6646ace5577062adc621a3ff4ba5b4d7c7f3e53e3758e0bfa25f8358aefa1f0e4e3bdc1ce3a75ed2a6722f149feebe2515a83e7636d131e1e39af23f54bd17ded5aad3fc4352df7a7cab55af49b869afe178bb52c938e55335f38a93356f9df207777880d33875811ecced3f7fb86627a1f56d4ef6f7ade44f7bcd6e3c9b5bd77afff88fdc429bfe622ec9d6327ff225830d06b8d42af05587ad0fff2f2d8f1b768dd637e5e6a43c8fbea759dae5138116b7faca755878d73f5efb04ecaa75d4a792e90cfb7e919b1916755cc9780d1c0cf01f5773ad6a46f55c975eb79557e5047ace5495173dd6f1bd5ce9a7579d03aad85955e4b59c92f683efb9472559abc04fe57eb43d7bde33d5812657db37d48ea378aff70474d5ea7117da7c6ab7e8c843e59eba9512b2036ccd63230db917edfca7c6a1b828129f1fe95b81d0ca8f3493811b64e096f88bc4ea177126a5db1b150f347acd683e2a1d01af2e7c8317fb47c16d01e1db18679779f0e5bdbbcd62f9f6def53ad9f8edf1ff926689de17a11c3f6bc6db0af71b3a7bea5606249bcdb182fb21e979afe79d966d1de898abfa0c51f800f007535d8b7d21c935e37147fe2efd94cc35df77e0b6d3fe46f394f081608d6e149c73f89b51abbe70f924b4a4aaafb44fba2ecab3b48f3d839a3f1ccd1191185e316e7b74467cb79c3b5dde6bc4f77909e92e2406be78c8b87fa51bc471ad73e63b9f7ff9eb505311fb1efb486f4a7dad39e147e81e642babe8467cb0bb5ef196bda4e56e23c537fab868342bb8f9a78296eac2b4d8ca5dffbeaf9496ab1c705ec398c972379e44ff7f9f1cf0a66b1814fa2614e7ebe07ffafa979c0dedb523f6a347b40769372614ab65f9953d0d4abe53017e3b07b736662dea346ab3576ba47accf2f3c6f40f702f14573a5875e5aeb634dfe1dc6603e6b79ef380699f36be2bcfb7e6160be1ecc8b4e7c73cca1005c76c03f8e7d52eaaf1e2bf9d08a2df5be753af36a1ecaa5793aad9f509b53a8f62edc8329f947bd0cc2fce33ad3ff1f7c69bc36743ea6ae0ee5d21c9a6e4d917e5cb496fe9fddbddbeefeef9d83359c2d8a4f726f9d5cd36f5ac30fd7cf7575241d7f638d6615e10baee5396faf937e7e5c86de7e115c300f71f85a77ad59147a43ca6d4fb83faecd9ce5f31a0d4789dbaec243ccafa9e1d2e6efb24e5a9e1917f6f732d0732755737c8d63539b23a776b5863bfe77f0f5d571e6955110e549e1a37853b716f4f9cec17847f47c75bf41d79c11ecfbcd6b8266ad258e7933ff1fd130adc9c3deaff949fde099e36f17c1d854390cebf85816e1f8ba0c528923869e01cb70bcbbb5269a9fbb9a43fd67ba673dca4dde9b64179bf2eb4b310870f337ff2e6c0f6d6ff3d4c5fcc2122f109a63c81557f2c07dca1d6d5bb3beff396fad7bb3fee5dd2fb5d761bca7f73dcf783ecffd67dfd25f8bacb90a0f0ee1b578d6d5ac670c8ff5d415ea0550bb7ebf72ec18dfabd836a2cfa673ccb39a087c9c32c739def3ef57b96ee8b29a0170af8a9aad7faa3973b94720fb53e90f206b929d9fcae7042bb6417122e80432eeb845616f9312fa4f886f3357399c78ad1ceb2aafb1f6490f78bd1606d1fa4667123a570abb5c061793e5c2799fd735741e903fba8f49af4b1cd87fc59de13e1d64c005b230ec6b148e75f3cfb951e97e95ebc134effe8be9a1c9fbed9dbe83cced4a78cf14df8fe205253e4dbb71be7ec9bc704afc42f36124bfcfce8d222aa3c0ff154dd7f7be5f935ece3a6935bf3be52d1738846fec051dfe115f03730172dee0c6ebf05a3f9dcf06ff46ec3baab7992f927d99efebae3d2ffce2df5fdfff9c67be23e69b237e7eff82deebc22f23f4df02872bda77c8bfa4f93ad9e76367676d6d6c56ef83ee66ade1ccf387c1643e7cf5fcee6cdab75f67fd6e58ff8c9ab33abf1c8147b060fad2921f46ece86f793edf1efa93f644c42472ecc0d70eb8f7e6843388fb4643aa23ad9d5b8fe5bbba65fd1cd7fa00bb061fbf699fa1b8818f6186cee436df63cefdb6e865b693397f55ad7e211e6036b8009b85eb09124e1bffab62302adcd8fa6b295a99f0eff9b18613b1724ddd98c8fb898f0bd8c945e81fd2bec8019937f32062bd23b12eeb2445f79bdb2a96bb92b0ddcdf6744c3052727c276b326a3153277e9e3c0a586e93d971716de2b8b3deb713c6660ffd0dc2b97383dbe58e7197deade257dcbf069fd6b2ce3a8a6d550c22e85934f066f0fbe031517ecf78731fa886e25faeedb593c2641cd3386e39130ed06c051aa78aee08f25140d73418b79661948b3cec44b7ef2fb7df3b2fc2e13a9ef60ca29d467b7e3a4b27ff5a5a5cf76f417457d4581eed15d0fed3f692293c9b5f8cc31f3445c017e4ff7da5ffadf28b4e145e6dd02e879cda938c1f52e20fac35e256fb9b07e356dc19aa184d833ed7a8f16cd6f3ae89f805f1d9859e68e99aaed55aa1d8093d87fa0e72ecabf0e40e22ae1b80fb93644d785be1c153f27c37b8ae290e15f8482b1a37e27d094fb1f4ecff86bb98cc95c2793e5e843db597dd9e5fa331e6f76eba36e61866fa35cabccc0dbfa58efb4ff9c0f1f828e3e274a1c789efd3a76fd7c9b771d12d158e42564ba5bcd51097123e087703f55683eaffa5c1e5203e539aabebcc3429377c145caeb7f269a36278fa50c647f6cbed2b68846ed65a7cb3ba47eafd90660d71f94c8ad6c011b0cd581e282995bc8b25637d05fe64b6c7dfed09d7b1e2fa55f3a0dd5271d7377c7fd0b3d4eadcf9cf6c9d3e420c4eb4e0583f22d6f699bf6fce2b099375873fa4d1bf9b334dbde7cb08fc4f6c3703faffdf295f1cc61e316d2eb5cfeb566cd5a4f3258eaf303fd466fc21e32e7bec797ca50f2512d60a1e13c9a7b9c23d41dfc1ccd3c22fdf373578b33bc693f5aaa0e710f49e1745f7e16da39dbb3f891ecf8fc60d7492f5795961adf4b096c26c27af51a79217fef31fae57d065add1b1e36b88f40049cf20cfdd5ecd3de31ccfed1cf5bb3df9a3aee7ef3e5f147e47c6b3c2a32f8ee537d443ebf7838cf7c69c60eb987085e3b59357d6fab4f2bdcb085df7b7ac415cefbab9bf682fa6ba3eab38f2de15d6aa8a63673999211e73d11e6fc7a047e95b67cadbfefbe6cbf6c4b350d1e8976c756be9d82de62742ffbd7aced2ef60ce48a60719be12be5c21df009c1dc3766af5b2d8f0aff1266da1b890f4f2b39c4d3485deb47d649879c4fad3ebf8eae7c774f07ae463be3b0979a0a282e7b51672ff049f03e6cf289ae862ee8ce9b990fdadd793a11a2f8357acd14dce36d75a6b3400ba25f2a9907f85ec028f09680e2451c79be68cdb49e10bcfc9fa6d597efae7efce74217efa3bcab95f894f879b1a3f206fceb379850dbde1cbc0bf56741305ffe35de4ad2cba0f3a9f02ed0fd8473f3cdf6b746be7ef150c36cd493dc2bd6fe6361d3147aac5091fa33059e93446e93b8dac5bb99dc73d3a1b09cfe481e68d5de7f148eb01bc9edc126a45c46f12ec99d626db5e1c4efff598f233ef7f7c4c9f764a7dec988663c08f7e38799e94d8b7679a2583f32a2e4d9c139f8a9ff955acc7f3634d6d2ed77c77579793c431d6745d39d37f38d782dee5453c831fa72599d3a95e1799c43c3a1fe79e1a39d54eaee965bcc32f62189dac519bf9438f213f814f118e6ff85e6b766ed66179b1ee7dedfdabfba13c43af80907354f37da79729ac27a8d1e9f65d62f8adff663f4f8d37e6f879ffa8d3358df15abbdef0c7791f4c59c3938f628b527f6f8d3f7ec0b9579ebbf3b6c3532cdeafccc00662ad228e45e23533920f78becceb7c54d0011fbc82b69dbcd685f30daff72a6ee0f982629663144679f2bbf68a3d51f704c7426b711a3a6c9b8a4bf3af3877b7063e2b31ef8eeb69fc592947908427d268bb325b59abebf5dd15e3b997da6becd035fa1f01b277f997b6dfd65affe7533c9f4a2da732c130eb3895c5b91cd7f4c90bfb17fb9ad42f147d24357f2eeed9691444f2e7dc668b7edc4faf3b63daac528e47ea29068dae58e959bd8541a15a19ffe49974353ac867316d6a9c8382deab707c40bef028f0f609c67d7ec785ff905a6df4f75cc24a1476a9f8e0959891fa931f536c977e9433137cd197da7ecda70cf344735cd9b4669dd760b9eec12c7716e1f0380986a734f426183337cc93d0df27858f79a86da58fdb667b5898fb3cbf8d0552ec017be6663f4cbcbf765fded7cba9d68d7a91d3dad11e974aeeada1c75ecfe183af13941e706c853eafe58cca1e7e9720ffc578f00669ee3ade09e255c7cca36082635b92238d033f5b06803d66f11dc1252bba347d8ceb762e79eaf8878f69ef2b0dc7add868010e59e9eb5d4545b774fb029e8fc68e36de23d06f3718ffbd0c9f565190e37c368e9f39de8ac6cfe1eb2a0eec33d85782695914f6953ff384f65dec81bf8bf755c978d6edeb5a8ad9f0334d387e13721df8bfe7c85ff50e51e83ee27354c22bed16e12b9b53e463d6ee17ae0fabf04cd4683c5bbc0ea168caa97d75689d7c2d8dfc18b5d078e506afa957ce8a9b7b4fd7cf0eff70bf4b0bbd0bf167142d0dff4a7049bb68fab45d060f5b74be521dd1d1a6e7a3986468acd74999108df3a72db637c96a1998d7d4f1d79165c2fe51ef5fe7e7a2719f04def7cbc05b27c0439421bfe91a96eb5a3f15f61ffdfe33f241558d4d5ef7a4d82485d7a2aa177ac773e1deb6fae74afefd731d5c5e8368d02d7fe2b528cbde276d646bf26364e4d7a5459e4fd2cbd46015f4bca9553b3735a926e1e7a84073cfafafebb54b0dbb8c337b1377fcd61ce3c8a728d65f86c33c0efc636a69fc3e3cf6895bd859047ca5b03ee51a28e73635d11a4d8a6e3b3256e81c29f19a26e769019c8447d7f6af681da33919d2fe302b055b3b2c916d1ab7a2c0ce46f979a3e961d8dfea07253c2e3b726e7c4561af1505933df469e33cc7ea65306e2f8c719e746a732cbaf1be02ce9e6a8df25c0bf4d2be4c813744d63990b0d260d7052d8235c1ee4f903f32acc309130ea04a2f529d56bf6e0dd5e80cff5b9b7588a08f5be6b6c5f6a7b7566b95bc96fab0f2c371ee5a691905ed535accb7140f3c047ecb157042261d2f5f0493a3aa7d8aff35f660826d7703154780f31f62fd5597b3f91f5e43741d08eb08aeb7071c89c257d9c4c7a1e400ee5a4bf21ad1afab263e9d668e26960b68b68b9c1fa6d21b83c72f5d2785d95b14dd36f14fcd79e15fd200d913b0211a1e36fc2fb486046f34977c14e026a8d626a86fc36c92a66ffc37af4dc043e0fe3e6b4dfcb0719e0cbc3cb232e86fc2fde64fbba4e37f2d0cff5a9ffb001c5916733bb2afe955e3bace220753b3bd3aa586398ac2fc7adfb959ed950cdaadff6a9f6b197ac02b134d7b7fa3f7c47c141eda9b5f29f48da23979028dc738e81ac8af676b0a72c2cc8ec1effffd59d66837d87c84e54a97c365ba4a1ecee95c496e91ad0d2dc7d273ff5ae1f5abc52dda576f90a3b5b45fe8ed0bdb9782df8e7c258e47ff59bd75dfe4f76b3841610d401ccefb08e9fb933a81feb9e9f36af34b428da0121b4e490dc07f5cbd5f1fbbc43fc26b91efcb03c77509fdb383d7fd4b33c793c043aaf098f5f3ca67b30a0f6f6daf930637c77e73336f733b37a0725d4f6ee928493c8fd339ef4b567be2186712ef7faeeb3f62fd2bffb0dfe879d66a4f7cdfb33dd29b23f65cebfb84c6ef33bfe7fb7dbfaff6f5f0df4e989e6c95774ac65409efe82c407f766832fee4c16b85835a5f837565fda1bec83104b50ebece01e7c4eb1f68ef09cf8073e83c57fee83f3f54792eefa89f8f4ae9198a9860ab84730e5d7b0758d8eb6ef562613c4cb546dbb007aee85d32ed77deedc91f1c9ff85b6ad35f357cdd2267512da7f7a4d51dcf6d7feecd277bed356daa99ff6faeed7dcedbded49f8fe7525f05a9f5be11eea94538cc938d296008ec03edfd90b0cc320e44d0fc7b95cfc8eb6e35117806c06761988dd5de1d1c047fc67f4806ee7fdc418be0917b0eba6e4c6aa6eea0d74eb6bd536200ae0238e5978169c4c637892fecabdbf7676315a34bf129c1e497eb886b6fb523589efc63d02b5f028c43c638e88a3de0bf033f88bf939c3b96f0d3ec3b18c3dc67f858554376198e09ef6fba4f8cd50e6352abbc8818475de51a53fc872b7a1eb58f05ae3915f0c0353654d3474e9f51e9b95daf9322b9d468703f09366ff7510a7d0683569ddf7347cd80fa0c7c0c14fcb760b7c9bb4eb37d2dae5b784664871319e7b9afe1b5accc0bcbf788da3678ce51bc89b9a3ada1b30c87c00d9414691be75c00db24ce05f42293bc30d6ca22eb33823eddee11f9922f9a7857d11dc678e0a90663001a060db99eac2ff2675cddc138070e32f9b9f749d93bc698636e1b852ed76673fc6c64f5da89315f2dd0fec67e60116f7add05f3af1e785ed26ef68d59fcc4301fdd733a78bd65ffa14eee3eb734bde2746c804703edc7d5dba6f71f7e1fb83ee414316660b87d553ec3f5e1dee327fd9c707943ed13bd8fe5ae46e50ee7e8b9c64f1e915c35c6a199557e1cc01654fc9f1d3b1fb7e87eaf507786dfb377320926ee6127ace983688374786e9d5f22f6c5d5e3c1d7b7cea77d0347433f0a87fbb4c273ec1fa33ebad71d7526f03d7ba6179860e3853ed56b02794d744fcf8e0bb1cfbe67ce0b1f7cad79c75b275ba9077f9d6c3d6b117a5f4b7ead76bcf5ca4530fe3b0ae46ba5018d53fd4cbd568d8f0b3dc6691bbfc71cb4ffc728e62d05ee02dd77a4fb4ee6e3f974de7de371803f9edb5e14b6ece93cb323215fb417f816503ca9e859dce1136f1e4f526d6be05fa3a91aafe3b31f78c18c3970fbc69d6186ec0168ff85d16989e266a77b4d8c1cf08f441b976984c7a17f489dfc1c3b3ebea7037996555af86562109c4971417ec3571a0e4b14e3526eb46980e2baa773e89898eba4f01fb8e67c9ea1b5fc2af4ad4a739399eb3840be93c4c183fcaaca78bd582b8c8dc51884c4052c959fb89bec4fd00396349021afc2700ea46ed889a6988f1f7482828b097d5d9dfc0b7316adf71c83eff13ed681f79df4e15efd3b75b324cc23ef63386f285f526809da5a556e49991752d6db51b4896bb48b39f76b33ef2d791e811f5d9817d071c6b59352e011fedaad3c7ead83cc17407effa5ea7429da4683611e7d3d02864ce47a15ae5bab61a7e7405ca99aff458c7c3772ceba05e302446718e4c5e3e262024f348af98aeedf8c2b9a3d83790d2d77afc9e9b37e233a9f33388b9ed6a4f7886813a489bbe93d7e5a4f6bf97bb5fe00bb5e52f27ec1a5631ba49f704fcf2e8c67ebb6de36985b9b3cef1bfaec739aae34fea358af2fa3f075d7c0819b7f38fe572aae0f795d1c54ae68d7898e23e06859002e93f2cea37339857cb177d573d2bd1e97e1781c1bc3077a2fe06724fc06c2984b7e1d8ce35cddf3957a652b0e7b30265e2ddf93f85e720d82f76f69f2fe8321cc41680db17e88e51eeaec4413175f52f8d71b3db9d5b9b87faf7e2d02739a06662f91f3b85a1dbfa878f8e5f6f9180bb9aa2ff4deacc794dfbf8c3a187b3a11e639741ec4d88ac66e651a98c3b88800031a76d0f93a6cd5afaff13ace87ed38b3af9ee397cb30623996c4189f12677e20f767fb331d0ccd7a9ebde8382ab036cc0b791fdcaf978a18ebd5c2b05b0b63b57a71fc32d954ebdff41d46e85c2cba6508184abf5474d95bcbc1f0949668ad30fc3db281fbb8b00ff1a072ddcf283033361603f4def9312a1e2b3cf4a23d2775b162118c73b79f93bd08f38dc799cf01e4a5a571cc217723f9804c0756d0a888c2a827fa431363bd8e8b34c7fce4227f22bfcf04f34260dfc41fe68bc0038db22a570d8a29f3e2c31f9f3f7cedf5aee09bd9de3e0eb00e5a1ab4379c2f00c6f794e48f7fe21c37cb37430e25de7a744c86910d3a2eed38180abc87dc47010db5adffbd28381777b2f58f93704caff1a9f2ed349daf95f5fd9bf72cee57c635501cdf88f6988fdfc2e89ea3d9fdfb16fe469e79bef58fd3c02ce2b2aa0b8c628c651099c8ff873da0e84d2cc3f12c19e4768c73fcd98b95111d0a5b3aab584dc2f15b682cd098f94efe4d7477f07c21ffe159ee5d56ea572826da47db1cdd53a3d72e5d17f9667d88630af3940a751c39be8d0e8bd06b458199477d182f5cbb2852e06820bdab475c675f633b327dfaa5c602ca739ca136866cbc8d9fe9455b7bf5cc04f091f6b3dfcfdf671b1df695ac1fc56e6aea73b4befa8bda711d17a4784e63fe66bb0539eec0eba17793dfa3559f17c03643b22bd846aad8651cd32d03732bdb25f57af80c107d0337a83b1bb0af051a9799b877cc4f7d8cc9e71eafbf467b07318952275d6bbf5b42ee6df331e53c53f8da900fcdc97df67107e75045ae6ccc8329bf73753dfbc774305c2f8c6f88fb611d29f56e3c06f8dab897c67f5e3af63132fc2b9e0ffd67248edee1fa77950794ee7fcdf5a7516067649c1ae2ec35c6e954d60d3bf3a4d889f8a5d278205b2ddbe6878a2e50750d5634f81ac6e7e677e9bbaa580ef13c3b34d820e577ca39a4c4cf2fe5417dbf7552f847f13b70be76904fa2fcbdba4fdbc956391bada7ae30fec7058bebb99608e7cca0dfeb36d7a9ed6e1e171ee3b54de859023d31943b9dfb396a2e5ef72e84bf41f0c184f7ac683fe07cefeb559bc3bc3906c04f2ae538d05898d233b2772a4dea87ac5ce05112b9db2acf55d18d4843f09bae499b70cc04dda3170e4bac5dacc4423c86d0db9e967f8cac351fa36da34d6363b3d0f86c5e60662fe298d4ef83bdc011964d0af0a1772f72fc263c93b29fcb4ccae5e9ef2bdb73e5da324e53f8adeca754e642cd53ee3eca5e6b8971cc928fe05aad9530df925faa3f0f2b1cd2ed84d40f903d24ebce8675b305dfe2bebc8d384ff3f16e1198db28843af0aee633d96f843dfafacba5b9341b7412e79a780d7c79dc5fa5bb2eb3e7356720c77e244d3862f46e1296a687f60dba662596ab790e983758231b9d2ebf9edb50bf1fc8595a73368a983af14c96ce449d267d5173cee839618f35f3583957f97357f86960eefed11860fb01bfaf7bdf1f3caff01c757508bb151b2d0177c2fb02059ccd50c0e8e1fe1ffe999d84fe3a1e8c9f79ed5ce8ef11b0a3a276d9747ed9271d2f8f154ee399637f2f0a6f2d6058765130fe7b1a44e4fddaa7c8c98b6530a61c103de00d46636988bc9e1cfb52e5e305ec22d69336a24952f819bede5cc2f0cfc00fc8856baed7490be35316864f78e82f42afc6f875198e21664904cd30113f4be7f98e1a0e8da9b4d74c0a7f0b7f0f87e2dc9c64bee614c638c9e8580b6321c642ffb26e943add4952e4dfcbd0dba7c5fc26d7f2d4f7df26ad756f96a5b6c7efedcffb5ecfeffb50df23f8e9c4dd3c1c4706e9212aecc32dbc10e9e90d97c1e540c75aeec115e2b1db1c3790677edbf41277eb9f23389b799d362efc8ecf6a0b5ed51fc371e46a4a78093c27cf8467627dcc12872d8d3dedf3260d7b99a2e922613aa6467e8c9e77abd01ae27caaf86c8c7745e94bf745fc0feb73dca4414a7ba7de647d5fa6ab748cc234a03c486960fe1d17824698d33dd0faf3dba6d78e8bef63dc492957b1cad93c9c14dd87faf1603ed663151b2dcc4941f6b35fad9dcb3d9bdffbb898e031c5eba3da03c47a9a1b382d2abff1f2c5d6dfd23cf58cf4cca8dcd2ec99c4f532f08f4b03f0acfcfd06c27bf7738235f3f6519fd874f20c0d39c89af52cd672d23cb556e073c87d419c5bec05cd6fd1dd47dc46719b673feee0fc742ec0f33a9dcbf6f09d3eb79fee63e742ce5a78863fa02791d877619d622e1cff71173bf915721ea1fbcbb5d65fe4b7bf6ac76283317198bffabc8a8abc8ce6f937eb350c2ea69433042cdc651d07c36ce157f06bcff3cceff97da87d2a6b4bc1463af63551faed35b683ea3a5cf119cb714471d83b4424d7d3306707ddb9db34be23ab379c913124d87ece29e9d8573f304b62db73368e381f27f7a33bca19d766bc39644e7ce14c1a7fca7556ff53b02b9cafd8b18f1f02ee08fb6c186b216affe27dc0d7a2d287714e83e16119bcca5cc8a2dec5175a176afec0dfc44efe857376fe27d43f78fef24f6417743672629f37ae75907c81172b5b81edc93436c23f6f94e715f2a2c0c3a3d11b443e1ac455b9eb10def9460e7a8c7914708a2cc7c5b9b92af9d776e2f8e50b797f053785b54fa83631aea7301f50e0d21139740faefe5a3772c3595d6e5adf038339283167168923c16f99a2fbe0e776e15f7f85fdb9c9f722b89ce2625ea38f23ac09c19fd1e680e5b386da865a3d21e1bcc5e359d77321f7fb8f96819961ff826943d7dea3e69c26da35783eeaef6be6699bedabc4cdf1da26ba3dc47fe86a72e12a4eb12dc67842dd89ae612f276b87e8aeac05ee442d0f07ac19f21c591430ee61a8e58bdcc9126768e5fbe43ed39a3e21b28e751848661f06e33cb5d6929fe357f347acaf3b76081e7cfad4051efdf0f5a8da4075ec05ed43149bc11e9e31bf00fae1d8775f44ce071567295e13e7e5d4bc963fcbc6ee646e0ebc79b5efc51573bf62de146af26a4cb2d2f51ddddaeb357bba1267d03c46adf6abec17fb13af6fcf3d9dc6d83fd98fd67d7ef58ddf6751306c472dcab1406b8b784d60cdf5c7da7dadae915bcfcad65d1df78bba67ad27a98650b5fde33cedf3fb87a5b007b458194dce4f5a4399645f219f58d70f3868739ec5418fd492a06f31871cf0bceeb9b02df9b47a437f6e3e4ffbf69bd7f2fb55aea575be30be87518ef32cb3a09b2d83688f754ebac7a485ee81f3435130217648b7df74b1ff1ac6ef96aeeb82c43880c3d5e4021a7d66bc86f43abd74edb2fa22fe6edd3a83d80bd934bfd79ff89e7dcf59a15b473ace2182fda63ebbc865dd60973c5d5d55b29574ec4645cd33697adf417f1bf90c64ae557d03210e13b4df049f47dc8b15ff8862ab30d639aceb4b257b9ff1082ae7c3488ca7a7d9eabd6cb4dfc8e7e4dfd7ee9d863dfcbbce31e533343f7c2c65ec1619231a6fd09c6bc50ef0bdc57354b7f615f505672c5e1c5eefd827d4972379a6dfe1cbdd61b385bcc8edbdc46db4d63f116277f53d95f1a63165f5ece6fb92acfb8abfa6acf75ce7ef893ddb9f68fe0887cd2f25663d255f97da9cdcbb188fd76321853ca66c7fd99cf3fb6b7b5cfed7720c7aadf062190ef369d0fe8e026f8fcea47890e9ceeb038bb137f5bed1cd3c970ebbf21b7c96bbf7c8dd7e9b925f94e292a6e7b864624e8dd57db5bafd75b67a984706ac8b92db14774731b4c29ad1aeafa4b03b2f7aadde7662f899eb0c4db7df9ef956ef94421fc284c435387661fccd351c44fa184dda8fadb8b59fcd5a0f4d9862b2dfb10dd1bd47ea7449ff5dd2749dd570f02dc59c9ffe21fbe8c867c3a7df5e69ef813f7f8f367a3b269c9fa7397a962007cd177a7e020f80a5ef650bda63330e86a7d8325b71bb572e83f63e757223f25bb7c785d8bb99b1d8357301d09849e180f0059f8560fba7d0db05b6f514e5a0d3077e27e0e1ebf2479636afb8871e34c64dd47be0784b6c9f3e702f9a3ed7cfb40bdd835be4df248fc9c66362d8edc858b7bc700d7ea9843daeeb5352fe4e6aab9ff7d6056b34515f17417b13397db6df7dc059f9e3d810fb9e006b59a602767a615cf24538a46387d6b0d8df51d1bb55fb2ffe518d90632d6ed40debfbb71ac7bebe3608dc688b2015ebd9b887271c7e478150b7833e647b8b631fdb5c14ecfb99d80b026b82712d8a9f913e4cd68f37d7d604455e05c0dd2ae352572324383ab296fc4cd7d7a26253f8bdaa383cf659e5bc91f9159a3115fa5e34a9467f1f47635d9d46db8f2fd428d119b1a33a1f2ef5ef2d259736884e4bae7d4f7318c8f7e7bec3d76ef5e2507f46e9d996eb6f7f881ae623aba7f353241d52b99e53c13a101f315a2f8cb986cf82739c68defdcfb7cd13ed4b97ea54c8d7926a551add75cc5df7c8b1ddacf645f3eb80bdafdaa72fa1c60776decb3f061315db5e52be38112fa6d782fdcea3b0d78bd1193453f0f575b5e2faf9f99df562a16f555b3316eab7ffbc46ecdbdadaf0dc1d9cf59a781baab3b15b4da6bd23b2f9ae9353bd8b2be9b5cca2b097c7058a15c7a63b189ee2ce846a4eb03d9094bd13f4636ef075a0172a3033d27bb689383f02f2bff6e9609cc7ce02732ed06750793fa6bd0e8a61301712ee5520cf5646e1b81d0f26a07b8b794fe93c92de0e27629ca2d1c067fca5fcfba4e7d7ea9d1272ffd458ef412ba3f0410b8bc531c1447a4e6fe097941b73099a22f97734eded538b3f2feb719e92bebb41ba8b800bcccc5da75bb84ede4aca5e86d6f5a23341f37d8e608ecc2fe0dfa436849c2d2f9bde26055d7df3f0011a7bfe115d03d76386393c8f6363ee2ee403933ed745b5af9bf874f96a04ef43b93572e080853e7b3686bcc713fdf71b79ffd7e9c3ca2bf232817540df3dd53f077ac641ba8f1d81fb01edab62b2c27c59ed0df4f117fe95d6d45e885d02ed41079d3707e1bb43b47ed8fca3b36a199c57af9b87d5d2b1cf89e3131ef21dfc4d794ee0f8049e694b59d774bca767e90c77eddefbbc3d1e4eb24b14b6c7f3c9fc6263ce2efb108beb7ffb7a7007e97a194e707fcaf32be11379ba8e36bd90ced7b0f3cad6d722187f45e1f80af53d79cdec23c2479a18046f58d63c2f5d9b0ca7cbc786e6f2900d92dfe9d67b78bb058a990cbf8ca6bdc9ac3d9e4de7c3d7c0efcefcbefdead17318efc5c3221c432f4b143e89cfb28d4be09940b1dcd97d768faee3ef898de8101d8abfc8da1ea2f74d2df2ce4e771fa3333c9c80b6761a7ad765e0b13d4b788cf7c007613c6c453b04ef5af85714f3019ffd3647f1c6312af19a8b8c47e8117f253a96a3b6146ba077b96ab81000d3015c590ee678abf8fed3b38e438ae20a94be3376f68a73ba27fe508b600486729f08f689c2d27c9bb5bd4fdf1ef626adefe12c4b3fd5bc0b6061aa5a0c71387deabaf6778aebbce62972a01f3e87fea869ef101bddbfc9fe6d8d36bdf73474692f37b34f683e700c077df9d8d6b3f3decc53c67586fc00780fc23b88ee89e26b980bceb75752db611fa9e610ebd12ffc0eafdf225bc2fe7fc9ef995f27b09f529e83b3b5188bebdcf18f115a0b6dffc8f238045f2df1473eabba2ae2fe18b33c2cd1e993e7e9eb41c0817bfba88848acf948380378afdd34f0e05aafecdcbeac938ed7c3fc9ee33cea0f71af19ef05433e749e7478be3161ebe2a95b1b23e6fe246c7bef610bf07e9f829fbf893bfe31ea7b7982fcb28e7f4c6de53907c31370133ae84c21394ad02eea3dcab8ffdea3db1fafd320dda57dff01e70ca99634f0d33d2f427fbb1c78f68703b94aac210d9ca7ccd7c339fe6b15d385fc9ec8487314174eb639f426aadf598663eae7a3f55033a773a859004f04d4aa0ea49f706ca298565c57f3ad7f8c611d8ff374e0e549fe28717b57d798d2bfc831e770cfd9c6b4b0af075cfac532406bdabeb2737ce0a3b360b5d866ab993f96fcf0d4f1cb10f9d1724cc273a5420c8b6378d87fbf5c1bfacea00e07f506e9bfcdb759cbb4f97dc6a7c481be53caa1a768397b1afc01f1f1dbb53e3ef8d0c27a82f5897db8aa5fafef9b15fc7ab56fb656338ee415a68c3f5ae0e062fa6d9b4508f940c087cb3c5afe03d4443b63d061e6b92c49876d0e9cf5189bb39238a9c12f031f14e77dcbde390d87e7b833065f19f98423e179f9f5772b1ffcd35e4ec652beee607c8e82f13e2a72741dcc99cff32d52ef045ae36938ce058ed1320ef223f52f605c0ce49bf6cad8f0da0b43e4f6da09b63f2f22a81349e73e60dd9741b79d94743c1f56fe203d8958f0a444ff8b7971d322cfd0fa5e060fc407bfec17dbe13ad966ff711dde3b3861ef335c89cfc3dff315eb0410fe0ae41bc45b6f9f0e32f69d653846b667f73e6b755fa63416e9491c73e27d889636e81fb0b54bc697e2e6d270988b73e6da5c177b119c957b63de9545c1b4f78e4bc261156d7a66dc99af16c105f941573efef3d5628a75d61641ba4d0a7f4bf89b981e027a0f714c22a77b1c824e824d79bd082644d43d1c5ea116c2ec8cf8dc17f4cef83d0dfb9be87b0beb9b60bec03645edd822dc3b46b724e77767197a3b7710e558ffeef5e03aed13ac3bb40e3ac36c19984497d06f2d4af1fa5db90707cfcd29f9211f640d2f9aa0d30f7cfd847bf6f5a2c5e31592ed46b65df9bdadabff919a343ae3b83e3fe3e9b224bc0ee01eabefd24bdccdd3df9857d9cc3f06de30827303f20695bc550d3f0b7fd6ed18de55cbc58f9ff91a855e2b0a879f62eebcd2b7affe13fadddf4b1903e75a875568b9dfec9cb25c82d9acf8c3e277ea6b4c8c53169e5553bfca043eb27a6c02795f6a473f39ce5daa17b379a3d801777079d43cdb4ed0f363f77f999acc5eccb99d58c7169e7ffe2e145b96ed475bb2ffeac6faf951b4e9c744bc6eed6f76d26f905fb608fd43aad4ffe91a009e041c6708eb9ce6e0bc9a5ab7e6bc466bdfeaaf8539d37f4f836b581a7e9ef4ed038af335d7f93b0afcf324b8ecd3c2d7d5e04e718663e6c81fb716c1250fcb55c51634e5e3498d4b5f63641880ee7192755fdf363dd010a6f9d7f78de2ff720e91f6a2b8ec17253c9f3f6b9da99e37adb5fca1c9c731bf8ae2ad63c3b4669af7c1fdf2a4668cbed33ad7f0d94bdf39221fd70becafa525e4aa3790cb15fe7bb5ff193ea27b9ce4fe7bb5162b614ce938dc7c4e7fde7d1d15d129c9fcf5c25889d801f07385ffdea91c935a7c9bea13daa406b97da53943d2173d61be0ec90fee13adbf289d8d80af701d1f3ec3be30e4f4e8ef28474341f837d1b97f8c023fa3391b72869f7e823b11e75f8d7728e7e7eb15b899245c01c34749fc111a6c90c6bea8fd8fcbc0247c125883f4d57a2a861a8d1f14f3b8c11d3c18831ee13e8e1ad607f765c2d2bc2ec37d8eb5fd9eceaeb52834f67a4dd69f6847647c55cd3989c7b8528723ebb911674b6adba296845833833ef34f159325fc1ef759133e4ab4afd018ce0d3f7707bd3c29d0daf4afa9f5b41538345771e07fc706d306abf4412976dce0f9087a8eb3739ae62a762456d6e064c89ad0f5bd5b9afd48ec88ebf8107bebc63b2135cd19cfb76b71a182bf43b8e23ce61f515baed79c217e05e73c9973bd075677d2f19db4aadfd3f923159b27ad39a2a504f1128ecdbfd17e7d8e0db31585ebd6cb5df79db0f9aa7b3fd1369035d78b0b618ca0ef0362c97564087558c22b9714ed3cb20816b00eebdcc06b3341718ee33fa4c02d5137ce9af153fc3665ed303e359ad766eb9661e66cc1e63f89dcc4da9c13ad35bc4c33b427cab893b0fac3a818af51ec528b8d8367f0b43d19f4ecaef4f7e971691c0b8e734b353d03c2770b6d4e8a703eaeaeaf37b0b292ef158ea76960225bbe9d539fbc043c6aa9624bc9efca8f86bda5c616681c63e7bc53fc4da65fa5b5190d5c08151bab1f8b6a4eee0e9b44e2c216c31e174aaf9584fbc5eb7d82ec1fabd7ac1af587fe4dee0faf01c641cdeaba425f8bb6978862e153c3bece3bfe3581dcb79f696320ebf12f7730cea3e9d3d7ebcc3dbf594f7f8d4a212ec6bf3d2e8c9c7046e07c333afba77389a784d62f8eb3ac3b0fdbde74321f8fa6737310eab1d002269b63a1d9d9e6336c35e350d2ec23a52fa2da4b53a34326f4c44c76ba7309dfa3a67fac10f8f0ffc77ac8788fb4ba8f6ef51c84d6b09d3890ff6fc2a4722cfa4f30a0351874bc3f3057781daea21a5f98da75cb6a97d693ae8fa6b308c7b3341c939af964f539d071c6e9f15e2fc23e7a99f61e3f35e35f777608bd0cfb9a3cc15acd3b88f793fb1072edb9c5dfbd318f23fa71d55e859af1e5fca0b47eac3dcb58ecc3fae488ddabe34851ce16292ea9703ae17fa751d9cb625cbfa5356e8a39a17dcf57a16628c755b9d69edccbe14338a5e5f311fb8743d00ff1ebea599af9c2bed6a126be1de6093957d1f89198278f04de59de4ba18bd1ceeade57fa0b5aab08de456be3e0f9d4f82d72f22bc6af634ed749d16dc785b74ea0a680ed3ae6c3d3af3fe5bd34cf6c7ea1f1a7be28ad2bd59cf939d66faf3fefab7c4a95ef94847f4797cb3d2e0cfb10737f0b3821b5be11f30bc6186760adf3a678421a87861aa7b6a78fedcf1b7d838a6f7c3f2794642bf6a4afbd9d3aac2eaff193549e664dee87fa12f66315e34d78c9753150cd19fc153bfe3ac904cc40591f7f68ec9ed8230f7e16ad872c91cdc575bd56accde5d8f7f559729b866399c0dc8625ee9596b0d299f93ecbe64db901b051b171c947c5e51495755a28649eed6fd07a23f1551e4e055d36f60ec0852ef7064c13f0f98083a083b1259185b12f4bc0f4e48718b88a585e63856b85ebdc05fcec84e1924645afee196ff7bbeafbd6ff5731b3eadc80bd77a27db21d639ecaa93efe11f206427f9f8a7f78ead6f7c3f07d059a019d613bde301d289d7d4167e37cd6f2dedf36bdce7290ad30ce10f2927b5cab066c490e9c9156ef1c3bc0c7d442e726c56f8afeedcb54e042fb7a841aec02f2975dacd12efbb957865543b61334b4382e146bcef40eb02e357d54441343d3f329f7c2a8e7941b8873d17bfcd4cfefcd3d46fd007f8ae7e41677acf8ecf7f480615bf1efe2027c0d3d9f911cc337f7dddfdd636c3dfda877193fdf3fe8919fed302f605ed783f944cefdda3950f56ff0b996eb7291daf313e7db81ab72de980f109fb3a9b7f673aaedc91475607de199812354578b22756951d783d805b329c7ffcfcf1d9c3738c5cefc183bdd6d6d6dd7e9c558b71fe71d23bf2560b1796d64587aff91d666a7b595f0c78361be0826abb8e3b71223cf007b33203540c0f2b25ce6d1ed7b278c35ecaf22c0804967d271a179d6bada947076ab79540177cf347a053ed20741bba3aebed9c03580ce98a909ebe0e6d8daffdf1ad3dfdda7a8c407adb84d750056fbff1b7a17abbd0d2866b8d9fbb6abc1801c3418e526edb35eea74bfe55ec2de3c29fc7c567433a11fb0ae4f701d3902e694f7152afb8dfd5d8837aa7aba49e17fc79d289ff19ade0f3928fd631ad4e61e65ed5967984745b78ca6bd4d14401ea14c412fcc5dbd38dd763a18ef23e8f9c03a281827669e528b7d5fe85b616716f2cfd629c917bb831ef4a229f84ff0d9e2a2db729d353a1f09e6df345dc8cbf5570b383be4de8f8f69af85e6858e55258f0a3889d6859fc718cbed0ec6840f3951af477329993b18efd11ac338e309ebc720e327be5b87e46590fd58c7ceb81db35e2081639e3c23c6d362df34297b9da563b75ca7bd5e42fe06ebaa45857d4d855e41118f0c1868d60308f7bfc6463bc798bca7daf71959b82786c57c86794a4ba8b35f9784d318e684e6af3b19cf2b8ae347fa5312aaf73fc531e3d2f1bf96a554bff7e776773e6b77c1d7729d6ea9eb0f11c785f1ba3b179372abd5f73909b5395ddf85cf9f59bcc7d2b10db11f29c1791e587f89e1239f38739de13ea27aa801ab15ff12afc36367d0df4263508913714f45563327f383eb0cdbc07122f43c913e0e827d60f946cdfb01f65c5edbfd7e430fcc7a9d94f7aeef07bcb7710c53bf8e717c0ccf0ab859b92fa723f6f1c4859f434d05c7cdec3af3b6d79bd175add3cd09cc763ced815f87f99585ba781ffc39cecfdcef0eb8dd1e4ebdb93daae9df93de09fb103eb2ad26da9bc8f6909e3d864b8d682ed29270bd2407fb04f684fc6d8dce8fa4cc70dc38052c738ef6785ca05809f7d2b8f6388fa6bd5d3af0cec975771a19ed3c72f2760c7e58eb3471da9d281cb7928e07baa423038f2d5abba3206ac7cec51c85dcb71905f67114e4c751e0e5c9c0db8d02ff21712eeb98f6c607dd6214b4a59ecbd16cde7e9b65edd7af45b998b9edb1f57afc18449be57374899e13d25fd66de89b956d7814ae5ba4ef65e839fed91f0cf3686eca73e6483d2f159ee3a0dd16fb35859ef994683ca1713e57fb75c4be025d0d0e7a7c746720ab0552ed6ceceb6d7ac3c8ea9d22d217c96c9345ce446381e6565a47a34dcf5e04e39d3bc0f114ce1355cf391e630b782b628fa8ce145e93f911634e0177bff980fec8f9d1b575df255803a807fbc765688b3504e8dd22fe59bb4ed36a54ee246cfd22689f5238abbb45655c45fe108d9da03910b0ab5bff38b2903dc8bf96c0454ecffa611ec1feeab6e362b2fa08fc968819e7cfec1ff1773ce48b21ff10c5bd3acd2f2dcef14de9c196e2c4eb4e8a11851a90b21e9e56a96123bf764fd784eca7d3f77ad4f4a7da05d66ac63e2cac950ee5ecd6ce118bbf64ce8c47295fa7e96ba7fcbfbadcbab007b1af0db85ae02a6238ccaf45e85fa92658350f8dce18ff3b1978a61827346952d4d506d93d66bb5534055fa8f99905fd49b4b6780cb0d07284e8ecbe876ccee015e243386f436f17852ef53325df87f73e2bfb177008f6573af0f15eabf496427fa6be5711def3e902fb059ff5628e59f11dc5dfbfd2be66d6eb5aebb70a3dc4521f2b602786ec7971ecabb79570963fbb72bff9365b2d43341668fda2df760dac214cc648b60dfb7823f649f44e49e1e5b8c7dc6ec1fb8719ed99e5bccf907bf7f0f93818b7e24eef4cee45f3a9d4bf147c28e8c9c5f72afcaf4570f94a83cb9a63cfd1d98b7d499e9f855ea34aac487ba1c9d98ffd4c6798d37a24c59cc8fbfe61e5e3efa335bc41f388fb88a057f49a74fc6f926b6e41de457e8f0732afea7cd7aebfc8e9e6a48f978e017c2fd6db24a6138b6cb09c934ed71f3e79dff089f586d37a06f69157dfa9b352d69aae1758e805d36041a567fa52cfe1871a3c50ef9a1a39d1db946b94aa7da5bd9bd51adb789d54fc148ebbf1fddea7dfef7e02178bfff84b931fe55a34528f2bcd6bd9d7e807bdc76f4a1d1e9debf57da8243ebaeeb575729a6349b64adef8c63bcffbddd9bc955b333bffa4bef75b7d5d85620c044e9f9cf56bc5c6f82b0d5d31df86fc259a2f3c25247798d2be2e8c77fc7afdea9b634d8ef9a67e5c559b8e684c51bd44d0bcd4e5bee55a87c0d903788baa56fcee650aef7f8c492cc63932ba68ce79ae74f08afb638b39c3e6628e026ae3c0be6fd0182e890d41fb0dfafaeaf9858e0def705a604d28d9f72c24bfba1e8f6441ffd52629cd431498dbd4d1d456e15d9f76b8e697418ff35bd9dbbbcfe755fc7c582da787bf9b6afd4c07d418fe05b50263780d8c3c6dc4e26af37eebd3a2d835e2941bf2d9d9321c434c41f4d22ce8df76ec12d98c9bd7c4638eee4f39401a6b4bb7b119e2fe6dc68756e6cc18fe555f0fac3cf3cf3019c23f1cd3cfc99909793d12eff9d754ae6bd29afa5f71c7fdcb75c41e7621d7e7b44fc091629d578badcfcf3fb83efabc7b8ca667ce9f8ff67663ed4c1c43a156d9e7ba54e2deaec56557d68fc6a6085a573acde2bbafdd64ab6be6af1943a3c3a4ca7388f693266f06eb6861817d6e935e56addf48fa7059fd05e782847c1bb261ce23f207af12cf4469de7c36d25b2cd9ae05f69d40779fe7cde12cc1cfdcbc26909ddec7db689d14f93ade7ab34abf83ec3f34ef218ccbd92935985aee11dedbd88cf1a567ed9d76a7a6ae2bacf91bf6e87f725d0bb5243dfe5db48bb53cf09a75acfb1b8dafe6fa58c5771ecfb7e7f71f8ee76f1a3f41677e8dce8806ec4f93269f8c4b93f5bfa53a1cbfdf9dbaca44cf02f38bc07e2a96c1a51511df8e69d06e5f57cbc024fc423287188a9d1ab5297fc875bf08bd530cf826d000ac68c0ba3eebb1aef6b192f7177314642d911ae37a9db444bb057e25ba4f4defdc03e79db11e4fae4d621cd0d09960dfcfe95e1323dfc4ce9cf2a5605e7d91936740e26ba196867959d033416efbc0ce52ab97a521d491d198ef53275fc70eab451c680fc278b660d8438299b85787ba186e9e764bc7bece44ee83c1e5b1aa51e9434fecc2f0a926ee15f713f612b7b00fa9619b49fbbc51fb4cefa9fb87d6309e05dd4d60b756a1e5ae5e6ab1ab15ff2e8f8be8941463d68f9f34e25e31a7c0dcc88f0b838ffb28c035856508ba4da40fe24ce70fc6ff4598c397a9cc5b487b7412c2ed80734bfe9570431dd9ded9c01987d70bb61b79643dacfcc1704fcf53a20960620d9cc677f945de05c55c7954009fc4d5752efb25f2df8467a7f52dc1a75b533d4a97e46220478b79c48e6e1ff8ad8073231d0c4d522b3be1f599171f9ceb10ea2023c2711185eb3568874dcfabc554cb1fc338069302ec782973c8740bd7e9af30de84d4a3907f1898adf7b217010788611fdd415a2ec2a7555279f7fce85a29d611cee898c3dc95801d33ba25de7bfc9e74ce5c2ba531ebf6652af71ebb365a27a4be45c7007a46dcbd6bd562eba00644b11df27994376b63ab9aa2e45c9984c37cc2d6cd5a5a83151d45118baec3e9deb0115893fd15f4b0543cbcac5da5c50955ecf13d76806278c3a9cc31ed5a49f66188b59e39e9d3ee768725c729a0b359b4ab8b29fced0b702ab01e71ffa88ad3d56152681de465d3b33f1cff0bad63c66f2370f348e79b13ad08d71e8e3f3aafc091b93056320f7e48739255fec711c9b502a7d1809fd5686d23fb1b0742bd12f2a343cac7846b54921f64f29e288269aeab47097aada426b503bf969f852eae77419ebc4b73986bc6bda670b99238a0214758dfdf01b865951b4ce5f9b67a85c8c13bb2f8fc623e5c11f72ae77e743e5ba50786fc9de682707f8784673927c51cffc61853fb5a2ec24cf81bf8557f0307acd1c2bc69031ca3d0f320c679dfab848120d711f246ada4c09a0e387f8f7c02a88389f1087b5712cfa99f93f7f24eafd65a8abd5ef47c6cc7b8f03b33912391f76df492ed70fd315d37e59f8e31f2d53bc8b61e56afb3a773dd7deee1d5536231b0f198b7f0e9ef1743f571497d93f3abf39c622eeca9e756c5b6a5bcdfbcafc33cdcfb7db8b69413bee8b9d68bfc487801fe667e8f73c979ffb627f9bcbfaf3749ea0f2f68ff31cfd1720caf9e8ba0becf88f686c318d0de268ebbacf46321ff1fe7f86b70b9c02be71fa04ffe077d4312c789167f67eee38cf01a4f6bbf23700b5438af548e027a8dcd3230334fa9515463542d365a5a47be91b796e84cebabf5b5ba3dfc2fe2555ddf3ef553449e3cc32ee3cc467bb625d73dd27deaacc93b48b5ac9bf59fe6d88e3c57cef1a8385facd82bc956d1dcf66ae5ce5a5df7f9a9e13a15fbc1f0cc738a710bc7b24f0231927cffa4e6bb554cb4d0db04dc270f3b4dbe621518edd362bb4eddbebcee86a5f71fc51e2a586882930d2627cab91e59626c02f32ee02b25df8a62ad55fcf3be5aef7fa0f888bf487fcdb5c2694bfd6b11f3437c037740f00f3c9e22b82b5c4b51cf1fca739b06e63e09fd5cedc121fe9a9ecf8f70342f0aff0b6325052d890ee7b725783becb788be1d7aee1b7b10f9e0724e2553b0b5f9312dec7219d8c7d452cfce9a3a3cd6ced4d6174799f9eedbddf93cb39fa7adfccd2bcf28961ece72cf9e67666f66f5ec793e7c9f6ff4f608383b916f3b7855cfd71aec02ce118d6676e26eb2ff68cf57a93711d9eb863dda567332ca6f2b6354e14a563eaff029afb95d843395f201bf29b8324dfd75dec4292de15ad17b88fe9b079cd9eb32eef8db25c4da67859b99f68c41ac4071b328ee2f985614e9bf45f13cc666da47d2bbb05e060fab68e09f6327ff5a405c9249b854d77a3abf711eadd3c220bc5dc5381f499881c7d52be196076e39abb74fc51c97f5b47a9ded00d397147d52eb1d9668fda0183f1a0c4fd26ff018ef5fd139fdfc24d71f9d7375beb67a4c17f3b590bf6cada13f6e39856bfe076a9156eff056f6f62f65b5879caec50838d45b12c777a5fe88e3e22c0a9f8ec0d99a738d69ccd3a5f76fd0b5474585abfa52d7a7b79c3de133c8c9f632f6f17bff6ab7c8b8687a479decfc527e577c9a0a1ecbf6cf0bc3be62fcc9d33631ec229a26aba5e397908b297c8ce9c2790df4be10f3c9f8c9f901d76434fb3e781263114967bbf22c38bfb45b865e8b62ac49ec9d2d65dcbc90af845acb19f3bbd8c78f69463831641fa1815be50f17e7b3aea03129da8096a61653a7dbe874016f3b53ce1d9d0d406beb05af1da1fe039c95ea19508b55a9af01e0bf8b6b77545cf2b8485b4bf081b3b3e03bdeb2810aa77ce57ca6dc60806527e72ec169f35c0a8f7392d50bc961e3ba6e0f7a5322ab97c59df48831e0e929290e288e3da58199b9fdc8719d613b2acfabc4f073d77a355e6793bd88b31c95bd415cf65acb01fa4dbaa33a0bb133a9e64eb04e0ae4c824cef8d96ef5c2f98130fe75da5b475bc09d61dd056deccc392d05fb4978f6490d7c837986956739a0fb30df61aab79fcb90d8d7c1ab4e2be5e03ade29dea42d7790ae815bd17914eae1796bb4516c36b3b7671683cc746b85716ca6bb6570c9912d1d4d5b376d66e51c6f7f1f428d8ebed60e325f5b1fc7c541d788e6bcee023ebc755e35f12c2a3c545a7b2d70fe77ef5857bab9bcb1ae70af4c6a713c1dda2bd4177df195797fde116c27700be4986bfae90c396ad26f113bdd53623db03e12d87798933a8bb1ae3ad1e210dfe769e53ef77f915afdbaa2e7619da1ff1efa2dc475693d00cf1ad58791d6115f1ffb57abf5adc1d011ff0ccd15c10e496758bb6ad3e1bba6e0d3407f47179d9335dc1637e6553c17ed2ceaffc33524f39d9e5c7b7c8a83b9463b433a37aeaed35e7f404f1cfe3e608f895692d84ba4602f6b38781e4fee607ca2f830d23fb483bed582d60d090fbddce3744d1dfb00fdf69dd7d58bf56abece167b3996fdc93988fdf93bb191953d7d2f3ee27dfa13bfdb6fba8716db7f2f0e5da3c1f883bc848a319954727102cfeb1fc8ff75edf3663a37e79e3f7c9bcccf2bcf1f4e676d57f71cabc4589fd2e09201d6d819af63e782f3fac5c504ac3bae756de0faf679f332abe4b6efc004766b7c868abf20f4d2609f9efad20d67cb1e9f2d3a1bdfdd24edef7d38d5ecd15c9f13aef399d073fc8443af693d88984f5c732035c3afddea856885808ea13da9f44d607e9305e6d4e1b812c297c5d7643a1856b819393683d6288535dcc0e9a8ea4cbee067b87bfd6b31aeb3ca9a5f7d5ab4c74a5f3ff99fce9b0306c5aee424e1de37f0317a8c4f755fb37714cfa29f3c23ae25dcb0370df524dd67755c71527e05f481d41a820e0f5d576ff809a6fa1fcd81a68e3c96e642d02217f6d59dcf89798574755a5aafc7b8449ccfe0311dcf05b298766174cb046aa30fabd480fe09e267435c847b3cad55097dcbcffd3dee89017fe42f4d5fa438063faec135e60e599ee276bef016cf68f54ce739f1df6587e57b74051b2fe4f9eece0dfef0fc61678df99bb4bfd05aafe389a03afa8cc7a1d24fa47048b05e6ce88b157824e4b9aff93b7b7ef6b9d8132d693c8bb9de0fdf2ba340fc5cb2739c6762eb1f3986c3bc0a9ad3b7f128ff4e6f58e1d7e0b68ff0f16bb472259fe5cf0afec5ff4e6f6bfeca758ffb7a97a578f797eb98ed3818e649adae569e097809b93fd6da9769f0f017ad4dc40ee4f0444c05c901cbd817b13f771a30fd857d64510d2ca2d740afef48cf4073b82affc641bc6ea5a7af8339d516c10570361fd31eda5beb4571d927c65aea631ef1bd5bd5e7d3f41c2fc3b105181e8ec7cc545d33b61eeaecb9ff58c188305b8573a4577a362cc2e8b40c404f354b03335ba0b110e22c0947f8131d44e53ec9c0bf2eb9762ffc8deebdd1166c01f22dfc98f9df36d3bec17935b09518ab08583952ab16c743c4aa5e77abb9e1b7de95717897be6f5afefc11fc3e5907af7b9c64f2dfe5dffc40d3e5071a308d7dc30a2ef545de0715de00f4ecdcb7d061a1150c9984f37d2a861b19c3c4e322bf4cda8f2806fb154d516cd7bb81df4b7341abbe4cca9b58bd5f35da98badee78667ec0a7ed1a33c9681692cc2e11eadf51f8d29b6c538ef24f67539f9359572419a31d5fd2eb0a5ba0c7e7f53d40b1da233f203d773abbf877b424d8ce18bc4efdd5f33c2793a35078aecc2fb14f31a06469e8ef2ee277a66ac632fff06e75b32edf588ed10ebbddf8bb0172f032f25b8e9fdc8ea256e96bff97d7f3acbec57b7ef4fe75977ea3aed7552adc97e86467b9d205b0e38d41ceda307924fdc271d2f713758ff04e3cc7ae89c3b25451b7249e218b956850759fe8ce478c55c873b5da3f3651f6f7adf8bf0a9e1d9f97a849e6dfa9ccf4f2cc701b96ec873acf3d8c1fa86688c47f979437a2e014f8c6c1ec13c1e17d0772b8f31b21d245f4fea27f473f9d92befa7ac1fa68b33b83cba7d8a9734ff8ec2fcfa82e6c2ca94efe2f521d464bedde7fea1729f9afc0f683a1773c277f5b85a6efde3b2a4638b71dfecbd0087f57882f7ab89b764aeb15bb6067aedb2a81af737e6bae037d35bb8807e5dceeb4074edd791c334d97f8431c03d6ddc86bda83e9121f5a0edc186f4bbc50be836cff7648ebf5fa7b518097836c1bf41e39a437f87e1818ee05b1d96a3c1d6439e2e577d56ddf963a2fb9371ce252c94622b9be29a3fb04ef5bcbe3f5eaea5286709cd1df3f711e3bdc63520c6793f1d9fba3527bff7a7385ea302db9599b1206396e11abbd5bad4db266f1f39983f1fd621fa9d4f72a94de7795d4eb3e1dc1c9175f3434c502d3e11fa8facbab57b661c818c7b01d7ea017b89755f61cfede3adc8dfb7febd7b0cb04a8d7bac8c82f629c5b869bacfc8df8017ec1481fe46fd3335f82e7c7f36efb32c0a2e79eaccefd96b928ef9683bde7f14f3da1a27e684f30f5188b175249ee3d790b91f2e69e0b7a379744a7235ae78509e23af6003fed1b854d79bbcfff3aef0beafc725b21fe1fa3ddaac612dd3fed6063bcfd7a1631f12c8fd65ec6fd496bee6f7ec39bb1d857eee15ddd20fd83c903df4e3de17c5ce35c774e48c279a1715acc80fed14c76d604c51c31e663520cc5593847e0e7ad2e0cf55d6c82ae5e352edbf688b35a227295624cfb94fdaf531689db6959a234feac7f13adaf6da89b16a58cb1a5e3ec22b9a409edcbbba4e1fb027f1764c7b8b0ed0b3e65c728ce7004e0e492b3cdaf4be914d59867bd887953ef8f095e67b8f71c7dbe1fe1aaa6dd565bd2b6e9f69a9ac69eced3a22bf98841b5dc9bdf3946708b83d4f980bc3fc8aa6bd33eea591e682dccf068eb2a4ecb5e3c2cc714f905d621bc9b9a188deeb2d0e1ee043619a830d750e5eb73cfc7d23b78fd60bf9eeaa82d91e4ddb0de717f6b1355cc1ed38e778eba454f92d1e4f246f856b9f842740e02f58836e24c64d14cbc0dc27c68a7242b5e342877502cece7302dc94e08b1ff578078cbdd4e81c826f85d64dc5366dc7f27e698847a518a2915345acf10a1874e493a138dcfede879a9ef31fef775d6fbaf57bcec61bd7da272ddc0bc7352dbd3b7812e03c2b186fa2744d8ca710f98724bb0c3d7af93632fc92acaf5d6c74ff6eee1f56fde5fc3a013c17c334e4b827a99e43bffe5a541bf827da37621e42ce652f03f39a3a1037237b58a94bdc37b69c935ae8715e43df5be8b762a38dd6fc17d5c48f02bb849e48a7db893784fb158f2dc1de89b90164bfa3fc46bff689eaea61cdff31e05ee8de4d30df6e3bd98ef769e11f3ea6679d16f1f732487729e9a35b3a73d52f5b03e611f7369e2036df9c5751e87d8d36cd5c26ca1abe527db5b062c3e49c45f3df549e7eb537a5296ffcd475edeff45e3c804e47567a27c81128bea49ea70d63d85b7921f71dc97c0e153fa05217acf457ddd98b65ca3d72b5bc16555f4ee4f77449ed636ee4df8973c989d6fdf732dc336db1c8805ee21c385e95e7057e3dd09361d8d37d643dedd0dfa7c1445d137fb97d8a35cc0b8a094cb1968baeee83b18442afb0cce5877b1eb936a6aa1bbb033b21f08ee37e61e0af3be37a0f8a731d910f99fbf0c0156ea8fb816b710bbeb682f127bd98448b43cd6520bb30217c8351e0591f1a9c9936a6437bb8cfc762b2cd3f2b3d97ac4fb4abd9c78f27ded70f7dd4386653b0df230b380bc4fea403e0019ce129755680fd9e1b7e8b72abcb394bd04a25f94e8c1b5c18975362cc8f5adb72b3ffd68e95f76bc705c6587b8e7f4e5a63e0ea0dcbc3dfe154cdcd6b387a88fed83d6731d60abd47cbb8417b4e99436dddaf4953b7eedccc1eefd2d4aed3a81039b918879b366ed4d683b8a6fba6bebf14e76f2a7d80ff3007c0ec5d959bf29efa4fbf3bbb237ff59d1809afbb931e469e9706df0b70c628fe8802f30afa2a8331684880bef006739d60bb08b8fc233ec7bdf6c2c85b688d13fefb5614b4d15984626ae44beca2e0728eb6fe81722e46e118fa49f435a51cf75b1b7e631e64b41de6d1c0ff8aa6abdd627a5e2d3618e3370becd6d232bf97c103f97b5d9e3b3bb8cfee5e7c06ec7bb5f7f1e6e98ff7e9bdf9d439c7dd6c00d3fd38a2be09ced3ad93ceb81d131e63d7c1bdb6aed3abcdfd2e6cb116e2ed92a2db21bdd276b21d9e92cdba523f09ad61edf5f0399296b18162639883c4dd3cfd5d532b426b05787bf8fa10efe38a3d488dd759060f8dd779b71a7f7f6f3e5b1c0b329fbd4a2e629675e7de6c27f2beab1ca8df5100dc64fbc468d11ea93d70a386c886740b97d4fe93c2476711eeb9a59a765be807d92d60dff847bc8fc6ad28f00e949777caf9a1857b337e1fe0248905cd9564fb4a756100abb70cbaed04345c688e01efd9a56397113edbbe17618e7c638c6fea8cf79873658dfb7607c03d7f8a890f02e7db26235806e0736cb983e13e32d62dda9f2b8cd73a81fd6e7f2d09a7c8d4e99e23a25d70736cc2618ecfcefe2a2afc35da2f903f09ba677816962f233815ab4730f6bbd524b85ce392622886ebc4c8bfc02f9ae2b9494ab98f2336be593e85ac87679a3b5f6cb3d524f4d098323d8ba4649c464c7bb7d6cf1638b8274cabf80739cc4a3de5f23e57ea2850f328180f39cd9f49b9744d9c786cc0d3e058fe1637719955b8d67e50afba7d7da5b7761a783989373bd1b4d7869c5dd12d471b13c5b9c02b4a7d318261427e2bc483cb0030f57036700e9d21bdde158dc568f350f71e72bea3884e49e6af17c66a17591a5d4ae20bff3e9ca6ce27d6e9b94f7e87f6ea213652822dcc8f51f1b883be22ad3f22fcd372374e8eb1615ab86fc69f41ff8aaffa6b6acc3bf947b853caafc97db9bca6b6e8bdcedaaf8a7f057979810bd53f46b65ca740eb6fc2f2ba4353a32946f3ca7b8d1614d194f5ae349722698aebf3ad82cdf79fc9b33dc786592cc3e1f73df17a7d4dbf7e0c84ebff1f6947fe37f7b58e7bbdae1faee91ef7bcafbaaf61de6cc6ab82b9dd2c739fb4218ec3daf3986f42c4151f6759f7cd6bd236772ea7085f239f06661197eb6ca4f862f7c467b406839f53d3776f35f49835ae31453f8dd41496a1944b645c9b94f798e84e14aed3cb16d679b5dcfad7d4ea814e37ef37aff8f6584b01f947380694b9e6f473fd231cc6ddb87b6dff636b5f5b43aec68550e745715654e425e61fd3db459feb1389b957d15f52b4c898af4235d0d0799e111dbdce2280ff45beed3e0e40170bbdff81d4c29846e73d3ed72cb0cd45c1ec677627e6f1476314c33de6bfc55eba3f58cb554ddcdfb39674764aa34baecd8b207fcc0becafa5b5cedce7d61f5a5ddfe633be96f3a6c2bd52a337db682beaafadd1d8d3e40e7fe8d3fc033f84c664e8f9c95aa2755911675cb5bbcd3d458a0fd7e82f34ebef57f5f6415b5fe5a2601afb606bd13e0a2e7bb08bc16415211f08b0ac7d812b393fbe6de05aca1aa3d74a99f62de7f6d1f547e557ecf3929e56b4a76cfcacb300706cd63cf37bd31a6eaed4ea1d968199ab35156c437be532305bac4764bade4632e719e9ef5138daa6e755ece447e08d78ee8bfc17ccd6408fdcc0db47a1fbbd0cd263dc192ada2e90d371b88fb84ee2a29745c1b01d19699e7c0116f9afd031590c80f953d5dc32e14f05bfc8c4dcbac049ea838eacd8d3be003eb403e5071673394a3f4bc37d4aaa8d047578ac9b4d75059af95d096772b2c2fcd3f0fb3d391bda8983310ca163bea4040f42b42f31576bc75b2f8c6f7c3fc269ccf306c0e9708d8239d662213d2fe9d63bc5c6e58afbef41a3f19c14fed7321ce7f120433efe3ab57ae765e07f11bd1b33ee80b61be3915e18763bc1cf4aea975ceb0d73bb8e5bd0a7ba1daee360befa08ba6dd701dee5436c7409e72be4ddf6a41fe4100550b7fc63bc693dd0df8f82a85c046dacc56799701eabfbb0aa9556d156fe53d3f757ab3f3dda0ef3c4b9ac17c67c376a1ffe0afd4b322abb5bc8416cba8043c7fcd5e70da93fce892e95c23f46f574f2ab5a4b436bf10df7ad641fc6651f17fe7554ec4fcbe061175ac304ed1d7793231b2bf41b3ded5f2c0dbe48b499d5bd0bfac1c456567ae65c07dffb6dd3bb624def34267dece7d459f1feaf6abf26b11f9c87f0fdab053ca89a3a00fdee390dc7bb17e45f616eb06fcccfd73e25c57c1f5aee5e5bc3c82b3c97f2f59ca7ecc350795b7bada5951d9745778f6c889b5f9214dd376c651f1d7877bc07c3f68a60f2c77e6bfe8bf0e1609db1c2bea60ef28989b60bae47e68b10ce5be027f9983efd52ec348c7725b629b3550af3a19edbafa23ff1b574f20389cbce683d022fa60dcfbb5b18eb7dec4cd89c8d80e700bde7d3dfc8debe907ab8bb396f96b8ded072070715077fd0d442a684471ad7809d1cfd0dd9fc01aef79c57b77a1fc5fb697459baae1395b101fcf7c791c1f30a44d39df44f0a7c8bb6b78b40634ee09ec79ac8288edde35e16ceddcd750770ce2b317c41db95711a90df7a79bcf54651985fdf364fbba5e19bc86e00477f9fd40007affba0ddc25c11644d22bf05f9045ec7dfa31881f58fdae74dd2e999332747ebe508385ccb3d08bfd3f0f8cbbfe75a34de340aedf6321ce6499be3c694eb956cbef23a1d4df9fab739cd91bd617db7a07950ed9797afd9c8cdab7c1763043cf91eb9ff3669ad7bb32cb53d653cd3709ccf07c3d38783af153a66aae0f65a1f612f77fbb93fcbc6ee646e0ebc3960d9fea3624216c6659d745ed5f915f3cf4a4f6bfbb4c8d764eda3731272278a66d90e5fcfc2f120da5b8be2b24fe1fccc5b4bab47b0363c1f9b94e8ecb3a1871ff704f9df716768625eb8cb09d7075e298641c8e3b6a1c68a6c85d41b1b429f71b60cc6688e1807283ee7c97b5a4ccbe09a3a5067b9a64eb78c400b3cff5e0697353a8363d24b25f3f83c495ab9b38d69bdd1f38c8f09d6fb0dcc32024d4aaa930db6f28ccef04590e6e2f7d95e43761538a9b04e16f81ee03bc8df457f139f83db9e33d37e483ade2929ec2df157c6b1315c8c08273ce696048d4b8e2771ecafa4e85e93929e41d0f79cd33a58f5b9cdabf00c0c170231a101389caefb1c893d22f29ad269174f7badd8f8065dcbb8ec5d913f8cde09f9be3496d7ddd39f9bcfd3befde6b5fc3e3ad7c5ff4631ef47a75dff1c7dc295b9f520d79006e691e9a456f0464fd87ee2fd5ac7135de94b760767aab3d305ffc1b9fcfc7906dcf68d36bd39f5a190ef1e07106360bc8f315734f5d76be8bfa8d34610ef6dade7ec9d4a9d5eba7d488c47c22b46eaf4a48e1f8be38131d9553d9050d41262fa42521f3af12b18ce44d09820eb96e8ba1673ca6f66e27a61b78cf15a17ceeefcc6bc318ef25faecdc717cd57e5cc9e5dd6f136fbe367730979658af15a37ea825b67cc1b085a116358fb102f01ff667e498339d6d40e72ed1e209833c2a15fab67bd8dd0596de1d8ca75d23c2efc12ecc6c02f13d0b97c58f9827e25d8dc704c34e1daa7b848af84ab3e4f0792fd65cf1207ddcd473f6d2f6f3e4faf97147358b344379f62be37b1d3fd5a5e1f57c42fdea178300eece3c794eab3fbdf2f3a1d6d87f1eb0bbe3ae195ab9d2785a7979c1b94a78ff0b54935776423e3a08bf956c166432c2762d337a2ceb73b18b7930ef673d15ca7817988c2f1d51d404e69131b9e49f3e1548f17f64b38e1b1ea600cb123ede562e328bd0bf10306df157e8c4fadee7803bef4aae68bfc187066901fa99dd3d725c6fe16ee60fcb5443e6d80f59540ff7d90e7a9d5cba9c60afa7b22729068b5e0d933f2bdbd7d95f62cf34d7db17e2c6bdb4fc221d168966cec3929ba82feb1d09b70edeaecc73e690fdb7161aacf23e1c0eb9e614ae694eb41c15a617c9f55dd9809f57fceb1911fd367f1997ac378d3db023f60611f46163ee75dc73b45e118f3bbc27d12ae6f0d186dfafcbcf6c1790f61bfe1f7b2900f83e23357f2b37ce7711505e6350db10f419ef104b579969337af3806c9c0b6887511612ceb74ca84de84da75364c705e886b5b819f85e64fc321db3c8e7e427fefac818336a5391b88a1cc3c0ae01c833ef5858cb3d4c6270b2d3f4a1dc715c13fd673ca140497f7053c210689eb502c8dde0fb487e9b3923a0bd71c029dfba8b041fb03f6a04331da9e6e4eaab1d955e2d97884f82cb87416617e058cd694622a6be76a96302d7638efb4bea31a33be6d7aff712107007be317e18afee50e309fcba7ff9d22ff2e6837f977829fe9d8add4b1c126b90e8ed1907f1417de41d40c48881e19b2d70b232f9650d7477e2a5a1ff87744ef9ec79d421f903096141fcaed44867f3f45efe45cd059f20bb44741afd825efa8f026ea782aa1ce02e3b0bfc7f6f9865dc61be003d7fa6578ad0858f33b74b57473782b6e07dc26c5aed6cd99b5b63f80cf22ff8e02b3b508cefb9a77619a75786e880ec61473eacab9eac7955e9b5cd0c960ef8f7b0063415342e8db53e7f876ee617a8f3d7bda79e11af95b7be0d976ec83e8dfb836e886808fafd716fbf7737787ce5bcd1927edf53ea9e97e115f0e62cea4f031277389ce7eaae1635e792c43fb18a2764cec2c8a1540afc2a179f5398b6f632312ef29e4fe0f1493836c95702faa5d8ff639e19073bc7cb1f5b798ff4f3bb78d7ae2756bb9c2d7057a4c6741675be8b3c0768068b33caca270fd15311c707e94f5241f561388cdeb6cd0abcc2b8b7c4ee04f1c5f71ddddbeaa9c5f803d060ef82ecde7925a0fe66e7fdbf476e9c03b27d7dd696480de4f7bb131bf62a375023fdfd95f47a05bb33a2dc3f1350dfcebe8da7f78bd46baf1bca621d456aea24d2063ab1f4fb426fc5e1977d67bb4d6f959a35d7b38474cf495903f07bda3d827ff827393fa2b06c6824685bd8fa18f08fcc00798d7410a790ff09fc268bd0c2e58d7a726dfb10c2293e5e6eef35d1cdc6b8ed6f9f00b73915f0e5cbb2fc5f511635c2ec35e0bc666e09da4b9eb0cf7a943f00c4affc40bd878b35806693b29eabec3e7641144b9e7f8d74567b84f06de29d98ae34c6b2ac0cbf8b508cc71140eb7d15cee0d417307ebdcbf1c630770c2d7d880fc17c3d5cab683e723f1f7e5ebbd919c9547f2d909d68711b0724f528fb3740d88cdd33ca567bfc0cf2be93f59c0b1745a6cd7c3783b6e2d02f32b9ae39e1adcbf017ab96bc6e106dc5010dbb29c38f0dc64ed3c29d2dc93fbacab7da1b81e427c82f3316c7771fe9cbfa3d053a2fbdce439508cdb025e7b258fbb7b99f2ef291885c6f9abec3dd22fb430ece32cf0cbc8f00772bf4ba5ae758d426fbe0cda393a4f5facd55e870711afbd0cc727c04bce29077613eeccdb47d3d5757c0716f5737a5ebd2adfe3bc70501b53d697c4c92cf60435cc47e5fd2bdf9df2be5cac73683dfd5dd18e2163d1b0ce8e624ef365dab846aaf97f5ccffb5e04dfb9ebe0b58a7501be919dcc48df2ff2352b7d63155d71be67583da0326e2a6f7ce5bd787d1a6b004daa7a3abc5f66d7302eabfa3d20d7855fa6ab7da3cebad13da07da0ec61c9c654718af53c0112af2ae304e93d7e36ff9ef78f0d2e8f8d7dc1457e9d6ffd630c7ca842ce82adc75ce1d5cff397e75743a8cdeaecb374b6625b596bdf2a78f27b6db0b0e6bf47c13db698714934d9ceae969b523bce4c57b2de06dce8a506ce5d75adcc76585f8f63aa78bf9ef45d5fc767ed209f17eaebd8df95384ee2e262be316c09e11d21381d5cdfca01c7134bb5df6ee13afec392f4d2a97a6423aafbbb45f3067c6d1bdc63417321293af3370be859b6a12f8770c00ab911bb40f7a53d68845b05fba7b01691af54db8f7ee535753a372b9d8e6f1605d13a0d2e2d69be6fcca1c4c561f826f6a7692e84ddf7faa2d1ba491ca863412e22ed7fe71fa1c48ff4771466820e14e349daabfb3430bef30f9f687ea9efd0fefe3b0ab94699cad32271c6cf795ee77dca7d12a60b1b98d8979c0bf908b4c636eec12df26f62f3982d1b3ae0b3b3da8b8a89d0ff9de14585cf656c2cfd3be580e5356c118b77e1f3ebf8eb44d210e49fa11829757c6e0f826e311f0cf388e8e071be6aff18f509572efb1bb23d68dd79c3c8baa8f918b2d62e3ca7db1aafd320dda57dff6161f86785977b9fb4c7e78f39cfb7b19c1589b758bd885ff39a0cf2698439c40f628e6b4e7818bcc0ccd8f30ec6e70f1473a379b231978ff099c8ed7310b426d60b63aefcf737a93dfa99c773b149bc6dd13ec1c4dd3c1c4706b717a135546d9194d7c6316b9fe6c3d6b1d5fb7b09350f645f64dd9c11700047908f063c218ec1326a83d220bf2e498d250ad8331de3cef01bea50728e46ca4dc3b3917ebfd769069ae91f53828371ec436ad826ee7d7c38a0183f0abd5d14ba529c9b72dc3ac523c89a3ddbd715b2c3281e16b4d9f749d9fb8e02fb887914ec16d5f281b1819a78b64a3a3e8dc9088797572e83741b913e03a2e9924745942f3a1e683d2e8df92a76ba2407715e11fd56a28bbaceddbef73e23bd447160139ca099a744730d6bd0fa575a8b7bd93c952fd3de7ce9207b073529e8c956b872a07e9618fe212da88eead395fd8e9e2f24c70bf5820dd35583bcd8d03031d7ac95c8b94a9c07fdcb7d9eec31662963390fc20b8239b929fe97601052a1670af3a5fa688e18670fd3160cdad728b81838664ed7cb00f8c154bc089a6fecef0ec66d9877319f2f6a2cc1f71f570bfc0cb8e795c46fa4265946817d8d0d139f7b8efd8dfd78a843eed11e626b1fd68b80d7e2eff5bd08c6682f9033b9bf12736ab8e6fb8ad60c8c5172dd0b9a13a09f45c79ed844b256088707af5b4b5c9057d0a6a1bd6b586308e799140eae05ee0b46e37d5d18eb3c1af807bccef2966bad012fbbc0fdb5bc5fb7c0fac064bd616e11a77b9c4a98ef279adf42cfcefa6f13a3fb1d05eb535a724d7232d6c02d847d0feceb50ce89175c271570d0f94a58b75873b5a2ef467946c8f5d56b1492cea5c8ad076b6fc9fa4509ee82d883b185cffec4e8021f6f52f6ae446358e0fd97308dc06d2ef4c0e0b99330079c4b0ef945741e00370f750a1bb8eb903d037e056b4dd7041e7bde83fdcd6cd906e6b59514f63131680e313bba0e9c67bc36ebb071309701ac1f88032817fd62aaf6f2e4b8b6073954a817b25e2a5a63039b6778c416ccf798470f7a9a0fcb007c602d7f1ec528f15c29d6af83ba4c07f4e82ee23ec3fddbb53a13fc1ccb7bed4571d92f4a8117cfc9af18f3b0dabf6d7ac0c5a79cadbb085fcf42fb6ed9ee01cef35daa87d17a94a7e1b7c4676c84b1e8432126ec2fc331f6ed857ec3174bb8168eab3288779f772b119758bdcff8b008c757693d3998d3086a09838ab6eae1d6d848da2c0d3800aa011b39386f5ac5b4dbadd1a6f79ea27398f4cc525c38c43518cb718573caf0383f98aa5bda7eacf46d89752f921ffa79ffa4aaa92d68a6295a86827e22e3381275286bb879a4efec9396b74f3abd138ab1741c7ccb703ce37bdffb94f272cc17c53691739a6a38e81c313fa0ff5ce897f925fbe74f6aefccdbac65da423f188ecb06c3f6a2e311ae11216734f037b1937fb90eeee1e158fa043d07ef5f7f7e5c85d650a88d62ae0fd9775feddde79dfcbd5cc0c6e298ed4cd636d82ce90cf21f7fb92c0f09f5d243a5b7077c97f90ad76087ee2230b3d8f1cbf08a7ebbce814fe50bc7f623454b4fc7f7fc3e7bc09a1a2cee50c665508751d6710966327ed1e91e2744d37e0e9a94fee74bb5bf809c9ddcc6abba893c7e19efa2c06bd75c0762613784bea0a3ba366b7a5bf1bd8bfc3ae7d76ee679aae7bc13e39023d657c13ae9bafe6255cf48e556d46a823af2736ac680e570f0d966ca6727e31a937568957a0fd12132d7b175861844c446a17b2e8305e9098233e34870417f2f21f7d22da24d6f2dfa22751840e1fdef994f760e45760de784ca2bab1977fdb834f362ded4b8d3718de97ac4eb35fc9e69ad1b6a53e819eb7ae4a9dfccf81de63bfc4e591367065be7d88e7e4f68ee37d4627ad471f5ca8f5b9c9cb81fef181be630de46ebd8c9337c9ed5f34df2dcaac2133260738e31be9c1b96f088e4d779a7677a018e7390ddbdcd198ad7faa8547d3b81078fc5c02ef1a950cc9a6f9783c96a11a6eb8fe9c3f1f63da45ccaaeb63e54190774fe40ed138f23d6163bdcf14ec407cccfd10cce1ed11fff4ec41e91baf915fe7deaea5596c62e55e6bf85fc62e0c77ed1e4db6bf66189c7c9b3059cc530cea43ccd27bade3fe72cfdd9dea3da9995df0766a6b72b422fb5705691f5b38b8a07f54caf8c0dded73fb1734a6f9df06f543e627b65740fd1d4046cc18b7dde48d874ae6f90f17b317d9bb7b80335edb7b803986e864f70ad47e277b8a407a6bbf9b09e5aaee3ef210f9237711a36d966963b4771e33eda66c81eab794cf537902b279c06ff3ff6beac3b55ac5bfb07d54529c654bc0c46103526a2d2dd09246004f5ddc6067ffd37d65c3d2cd0ecaa3aef19df381719553b519ad5cc359b673e0fd471155c2825fea1ee2936b3fca3862f44bc165a0b36ae731dc34ea43c4bc4fc28d54eadaf07ff6c7f0bfbb9107d49850fd36be42be2eb6a4efb33eafc1be99ccb4a38b87bf60f7097887ce9fa17c9f1905cd052c64faf4bf6f42e0e4f78f6ddca9baa9f3d77aeb17b69118c474d8ef9819c99e724c81f0e522dae5c8bfc91dd50f93c0d73a0e2346f3afb2af1d56fda0f8883796c67994c4b007361430ef521996997cc771f803306f2e44cf39fe695e3342af435e0ccfaba94e3e1f90a9c279b286c954af31ccf4b8d2f8cd737f8852b6ffae27bce763514cf8e871d9dfff17cf3b33306c5391de710f7bb04539655c7b8c44f14e6bdd6ca0dba35b185e00760bde75adb809e09d986015e6361deeb207f7842f3a206fabb221611f872f0bf655c89f2cc12e38921a9e18875a44d7694f9479e4a785fb59f4ec61ac79f1b8653be117795f0c5fc5e07b20f14e77e9953e6b972f60af6bf8c5968c448426e98e03ee13db2f2352917783b8b3ad334d096528e4061cbffb44c3d8473d26825b6dbfd827cbce914b847097452bef03a9ec9784a86fd33aeb45e1de2bcb7145b61be6791bb1ee2825308f9d5333aa71f81c3a20336b337d2f4ea3a7ad931ce140f7ab8487db14fc601c58498f704e64de439e1639d54eabc51c73947b0afa6154c79158f24d871ecbb907ba7df8137bdfa6e9c4dd8f3a87cd4a7ff8cd7fa285833be115c3fd88e4ee45d007fbd42633f3f2711d66841d7045f88e4c2533fef69c15c67f7b45e76dfe3f943e298dd076b2ef44790b356e60563f6614fd6ca2944670660c0d3c4c5989198e569d6254cac30c6223f8d308ed08314e4d903ef09e8e596394d636f4a70b9745d8cb2d0ec75c6eef31e9fcbb06f5a2bd729266eb60df35e11a8f74cc967ba37d6ba33ee19daddc85c3e420f3ade83425f79f9473ffa6e3ba37dcb744c268ad81a3f3fdb97b57e15b365c679edf5ad642cecf5f267cbb150d5c694714ef4df15bc30cbd34505601f0cdf9deec6a60ff9b7604dd703d588d828f35f620d401943f40d16e7dbf4b377e4bec4cf8ad8d8f27894ef21e46c9be23de09542fb92f925d0db951d02a1677842f015e15a6f477d1df06dd11af8af81bb0cf70261cd03df3d535eb602d75da669d92712d7259ca10473d1a061a2c077d4e7eff0fc732c87f2ba659ca732a71767f180f9628557407de766fd453a8f86b8af09cf0bbdd6f2e8a377a039c839d4fed4d795e3b6c22d6c7216a87d6d86b31c8e14f9445de2e329af0b8ed114701bd9819c4faf8c5bc97375e5b53157529a418e7203b1d1af25e67e7ab4ccd129243e6bbd461abb061eafbeaebad6ddd8ba50eb56ceb631ebd3b2fe664e7ef3c875fceb35b2d8bff9dc1a253f8ce99df11a7756c1fd219f13ddbb86736c1f0c1395eec93d7d63221e6d476da10acbb672ed07ebe501eb34fd9e7dbd46e665ef6b4bb8d6a4ff7c917cdf2a9671eabbf1de2ff463ecb6d7816725be8b9e799692bf0f023700ce1ecc219ea2335becf16ead30c755c92fc31c04228e24ca97df31f091c7682f13edf500d79d87c82fcc0e448b007df71a759c6f527f4f63a6b78f7ee253987753ac533c48c2dcd1d073d39c2ee04b3acf54c7037c161a1f2f9686efb547c66c395dce97bd37af952d6d67a43b83ec7d91015eeff24afacf01232bbc93507b28ded6cfeadc16ff7fd883f06fd387f8a3165b59a98594f8c5a1bed73e87c0b585f124e82c2a7f8ff6b587f0cc7657e81d3e10fca5d47f24e029ce2b77fa0bc6dae3f5cf40c07357f5e89effb05e9e93cfe1b9aa5927c4f9d27b55f93085dc0eaf4744eb149d8b423d696a81e68467edd5bc61259dba569a85433d8bd6123eb582df6ee80d97b0d574eda0385e1a6f455e886b2e2a70de26f4e54838245aab16394d1de0cac21c1278bea57953ce65e8923c7d0e3d96788fe5ce6622eafe0ed22ccca7b8af9e60d208df4f2bd69e12c2618f79153056046b4715d08bde42b183f89c80fbd07a471477a15810edf13087decd6fdfcd2a5c28c846505c1aedeb63cf47fbfcfa691a9a17a996c8f5bd953a2db04ec7c577795c7bef737d3a73d2cfe5c6d1676d7bb468753fe78e6d2c3706ecfde5fd31589dcfd414fb0af1e553e24b780fa1e7bf347e2a6c9bef062d64df46c3efe6f7e9b49215f21b99e65837b1facd7508f6ce7d7d16e5687f8c0e184f057a0ec06f6899d3aeaf5d32ac110371a2d8a7ca7b33be76e8194bf3370d5f8d76cfaf8b59f0cfa39827f03bd95748307d3c5f8a6cadfd57790fba573dfe741531bdca1f45e79121ae477e56a275856b07282eb6a43c6d538e899e11a16bec2bfd1d90e36cba6729d75ad5a33c58e619d9a32270dbe9caadd82ab637de0a7d6fbd9c93906a55aaf2f5c2be94c650cb62d00213f3b7250c823adeabe96b91fb2acb9aa5cc9f2af79afb9d5186ae3b17f51133f4eef6ded790cd4e232b9379e5441c55e319ab392de19d3936c2b3c8399ee66fd0a708fc85802f93ff9ffb9fec3cc88d6be088e7168a17d4fe02abfbab9f41f0158223ebc5036d14477ed6f5869c810feb497f847561b6b3e4a39078e10fb8ffee0cbd2f581fa5724edfe445ac1b4b8ab7035f308ffe7cc338e303c6ea3eff2960880e94b37606fd2fdf33cce7f124c62a029eef87f7fb07affd23eca0ba2f8dc45509f23bd3288faff839b3d0137830641ed224f5dabd81ed049f5eb1c17d5f26bbce1efbbac0e999c6b9b10f4daa1f8a39d483a143efbd8eddec100ca702ef32f81aaad8aeaed715b888406bd31b6da3f637bc83a091fd6dbd18313957232ba763dc054e59d5f8c19e46d72abae7b0f3cc73f00d9a928167ebb1d9fbb6b7a353b8348aa0f3bac3d790b5e02db7c4b1511b67a37da038bfcde72d9d7bd29bf5e7781e5578cb480f02d7e69f534e3267a3d260c5f96809337e042d12f8be535843d00f835c25e735aeb98e144fa13587ce8dac150e3339ffdcaf6ad0e37e409937b8a43dd3bb577b46f0870ea116ed7eca2f1e53ec62a16758abcad9f88a672ef11acbda17c8d756aeb1a7d23b8ce6f6d298582fbbd2ef2fef769be532c47ddbb0e636a4e6c36d7fd44131f07487fc54797f54b9ca4167ece5f9b1be8653ee3594eaab1206b694f74a236d99bc2ecafaa89276227baf318a0b3bc80f2bd5cbe875be7e7c9d8345ffdf695572453287ef77b9474ca75af16cdebd34f33b4e8bf5c3f15e2e3dccbba798e89e8a3d56616794cddcee31ec50fcfc45c002f3fcf7ca9b0a7d08528f18ced169d975d5aff4b10d02777a427e74d819a99f81f2d7d067de18c730efb51807e51d3d5c02261cdbc381f1027908e447006f13f573462aff89c500b34dcf596cc0ae47564ec7b08bebd206f0cf0a7cb2d8779939ce72d12addcf735a614bc45adcf85ed6eb2fdace9bdd577c5fbe3fe7311ed886bd319c85617ff21c4c575f2c97f8f9bf2e28264fb19e09b9d65797fa23f4dda90f25cd8de843523e2c798da464cc1ef68a6be15ae8409c4738934aeb56bee778501e8bb370c6638cf9db9af373a03390f98fe2786d7e7c5fc719f4e8fb1c847d96c69e7da2ef7fdfbdf173ca63857cf8a635feb053af05f1fd8d766cf67416bf01e686ef4d1f3897679cef64db2af7fd132c6e80cee964ce9e234801cbbedd20dbd122fd09f23ec5f1ec39f046ad8fa59df95aaff03dfb24d61050bc07f976e4bb775e934abee6e5b244e72e607c87af89809f493ea187c0ce026443dc19faf731762f87f7759aa338d8e96f1e2d83f5869c2605aee5057cbdb1b8f2dd9889ef21d82bfd49c6e6e84f98c7f4fcc798e1a968ad01b03c8f9631433eef52c4370bf7de08768dfe7de7779c2bb2ef0b34168b5d12756ce8e11b2f76c912b47a9c221e66824db492d15a1eefd2fd36e267c9b3426e28347b47aceb0f7c47a7686b0b982382a579d925a5b5985b06f40166d1d6eedaa6f3157646696cf60ab5f64a79ddb2f5b293d6fd57c9bf1f6474af99682d00bf75b5bfbd08bc57f567918f22ac111697a2b3f23ac067e6d5fab3ca3df0ccd623ff0e8a0337c947a77c6683afbe8f5afc7dc9f5f735313ff1834b63b246fe4b74c17eda12f2b8f6c031678ef3ea183d76b62c36c6d49e9fc18f7f85ff8a363eab7f7ee3bcc6b5acf37ad2d7f310e762cb583d8a65123553d07315e3f9e6f6b3f775f8eca464f34ae380d6e3b3129746c752f205f8fd95184956fb53f920cdcf0579c0069b8fe245a5ad6fc23702968d8d4b64e1b31362b2d19abfb7381f3573b0201a1afb484b7678be6b30f5dc37bce92fa9b4e26efb4f0ff23e5d3fff69c9e71d1a2bc5d9a7fe09895dc3ef5487b520b18ee403d562bd5578ec2a162dab8e7325de37ce6bd60305eb266ed33e40dc4bcad644226a8c7c927a365d5b36f87dbde2c3e1d836324745e04d557d882406e7b65075be2afc1066efc624c787d6d3421bfd2770a7ad496e5c232ddba2bd40fd7c760f798ef72affb26c9f7ffc4cd8c740d77ef7f37de6776647cad13d96fd9183ec9f54f79c6776590c4f7c15f1def56bde6cf2abb228cca5e7f8e9b5c56756f9ac4ddc4945ec7647e1868eef6549fd155afbc67e8b90a7e2eb88f140cf8433eadef303e37697070b7d87626f641f6aafc815cbbc4fcc1ea418877bdd114e17213e676746762de39dc33cdab3fe1ab7bb9de4d975011c55ccce404e84e27f1a625963e1e84bd7e9bdcf367b63d69e091c2bce25768d43d4c23c5d51ee142c6614fb78371cf3a2fc3bebf365b1e9abefb6d7813960f712724cdca7a6fdef86906b2b3f879a6f45185ff177dccfe0dfcfae4bf392ae5cb6c70e02464be07a9138945f042d6e595367dde33d772c5eac8d01d0fa47ebf89df2920af3b209dc4bfab178e27cf20c6704eb54c84dc775fd7f653edb6385cf764bf41bb0dec73ef0a224307b5984b954717eb0907518857e36812bbda6b77421e6b0bb9cfb91d701fe7c5b3fef3847f3418d43308d233b0f4c8a15c1df2d639a19e6c6a0393241cf6840ce6aef35f1e72c96106b80daca753aa4660c1aac9cef1bfdfd9c44da9380e35826719e6531d68f4bc3619c7e78538a0339530d42cc9fdb6de46ae05afb67c0e8876bca9b0e9f27cfc5f2e879ec8da0b689f96bb17e3c705c78d826103c2be167d19f23d3287cb7459f17b4d244de1bf83de6ce4a66d4566e5f3956d1b3c498e080ebdcd39d92c30b7cca67795de11c12d5e6239a7ace46a8c5e631e412e933f7eaec27f8a2d1d6e13e19bec7a3d54f8b12e66e16bba3c3ca7de5eb8873259da2a17d459f9f517e914def2c60274ab611c5c0105b296d9fb0772bfe91b21fd62dd9759897cd9ee6f9ad0db50fc0cf7b463e09ae618bf1a171b5cc601f61ffa7080067d46d5534dc58acc5ce1d584f2836a0be1b1b83b5be093587d56b7c6d9a45c35922601fae2bb7fb05186b19afd30e499f0fd5be52f62a307fad1cf73f97f4d97be778f8fa273d97dfaf4f52dfc67bf14cc60cfcc734dc6ef6e219eef5473a5d2733e3bcb6fa07a8212e72e7211e64d0730dfa816c9c41ebaf1223c76e77f1e176bf504c6cb9f04c47a17fbd8073b86fc05a9aa0fd6c1a5d891f56a87dbc891c57424f02eefb19b5c36cda0df3d74aac82f33bbd22740deaebc1f396ea44225f36f0530ae7ea4e91bb07fba7c2608bb13fe94792742f9a7a7449ff08393b5291a7bc1de6dd4c89f91fb614386f9d8c29b3f7f59fd9d6711b48ef56e55a55d5873ab3449a5f21172bd6c1718d85d98b5dd8d15be57e27346f81e9402ec8873a9b7aee2877b1c809a0e6f97e96b1666bc64728e80fa96a84b02f54587a8a13a89d4f821597fbec9bf872fbac2e217cbe818741cc4908e3dbc8e35b89c11bc6eef677a17e2dec1f45ef9dc0c7c4b8a1047c046047ca38d8ca98f46aff5ec2e2fc57f684d89f20f365523b0f58c8c0b37695fd8fcfdf9d30866ade0f618c650e902a8659fc2cf09e323f64843f5fce03e07e9464eef079597474a22582e243e0e3616702fb5bf19c0b6777bef246d9dc6d7f0356c7b3b370b841bef63ad47a87c035f8187946db772fd777e029aac64aefc6ec0f1e07527c3f3a5f31a7f8db9ac541fb12b656f475681c2d6067466694f7bef9f3a74d7ecc5ec50b8b6d5557f0c347d2fa7b2fe81a123041720ee9919ccfc7c0740ebe9795beffbc0bbe768c8f93d81899a7dbf40ff2353669697f3c623c6c336e5f58274fce0b3fe7d0ba00ce7f0de75fc643eb511d97d27c01f30b0957e2ec11d7c6a347cb981d70df954ffebff95a320f0ff73305bf94c57c689d408ffab23d738cec73d11a8dede574e9990f77f58f54fad5d4fd44a53cbbf340fad008e6e4f264553f9307a00bb051f56e6e56ee72e7f547e6ca1b41ed11f4363407f94d1bd117e5fa484abe40bed6b753c1ff2a9f3dfac17733969b1be375b31fcfd9732c576656487947cc9558af53011a1744fbc028f9aab20f087e129a23b26fc8bf9ffe947aecfe06af54154f44c67e209ef3eaf31d72c2a55c30794ed6bf819e2dee8cd26850eae758a795f3c4e2f38efc63ca1b4aafbf2f630701bbdfc98e3e68251855bbb1c67a06e499705ea3fcbec312f690e6d4454ce2262842adcdf60d5d03424f11e04d833c2ba20ee77e907ae0086ebde29b94faf7b1df8ef14bb80629ea3df40e81c1ff06f7003d6fe82dd9e0980cc59984a326070d28c8e3451d27c3bd27093c67b0ccbe43d7d9acd0bbba976e85ebacafa3333c0d8750a733f0ff4f5fb0d6ed288bbec8b9d6c7f3c8efbd39028f2dda87ceb4156d9d2f14cffbeea56ce7bfd8b5d68c5bad1de586ec57bcece89aa2cf033116bb8767416dd7f79c432cf400b03572879faa5ac7ea3e26c13690d8d7c15a974f9f42bcd614a3287d1a15ff8ca4c900ba1102175995ffe5f7fd5f292796deeb5b96f8147a257eba665f919cbd98cb372b026f2af11c327ec8bfe317dee997e3f8d752fadd557e1cbccf69be2c78116bdf755c1cd691f2f834ad29ba5ec3dc7988c91e87f84fcd89be63b500867396ced55db4569e9d4c57188f8760aff0394cf7d88e7057429fccc790eab8abfa01b84d027b44f4dcab3105ff8cf88ef25829ebf4399cf3c05fb1c49c19d81ea8fce574ccf9a6759edfa2efc29f75d2d7cbbd83d27e93c6067ad81997edbe7a46a658576e7e4e42edb271e8fd86e55c986833aaeb458a57d6828fec3c09dc1bbc2639c9ab7dbfeadeaeb8f03dbdd4cf69edcafc8f93bebef6bd6966e70f4adf5dcacd283818a3ed8d7a3fc6e29be1ba9b4643fdf0c1fb67c59a6da9067c07279859f62dbac01743f24707abccfdc5fdac5e4d1f40a9cfed9c70dd9e52ff06d6009aab7bf0f43b6a3414d3d7359c8d3347fbc3eb8f8ec09583f1830cabb83062dd755e294611f3bfb7a5cfbccfb2a9b1cc0283e20929af6de0da80ff63dc5e9d59325f069f3327d0e7cb8b3edb5c0c72ef7d901b9aef66079a4b6da8270aba5b4bc84351fd4c8e5f738e41de2b7c8dd599216e15dfd1c2395356c3b088e666f9d999df4670de4b7e7ef0f1ff52d57d2af529cfc7f5cddc1a66a7788ed72ef48e917c1be6e496b1f59342ad2d487a7a4f31e8dc4eb9b62ec63d4b352cb5deaf70e6d69c89521f459d8ee4ff0ecd4465cea26eff28dfcbb4f79106187762b33006c0f746fbc07b555e3fd28c3c58ca1a72ca6bd7f416a1cf8e4dbfa11799c621506b9a51ed3cb296ab6b17faa947ecdf2b3710fa4f1c58cf9fb53d2de053132d25a65b342c6bfab03abb824fa956dfa93ed6fcaba43d7850ed5d648fdfe73a7b3eb98e206b175a8b96ac51543d33cafdc4d2d85a2faadc64491f11dd6360bc3a2d2358d6e585510c5ac34742638cd89b66a2a6211adbc5c6716d675497c7fd53e9ef093f6f6b9df503c1b5871b3c26c6792dc66d804d57f59ea8de55b596d69b6a0f844aa7518a03486f7a4547e7ae796331a20f7e8c629de01e277e6615fcff516c5fd15ca663de1a2d6c67e4da4bbb91434ff5dcef733df39dc6f5d5a0bfeda4e499b11600f287f9efc4f7209c20cf258d493e776f6dd947f1fa23ae416ca86c66b7c25f247336d6e5d32bbce09195dfd6eaf6faa578cc38af0333bbc23597d8979a019eca4ea33ccb908f51b9cf769a06b93308bce9579467e7d8ec15d817c1d7f5e62247d177f6a1aaf5605b07da52c005caf2cae5f5ec842bcde902974c7f90b2cf95f4a438d752f3bc2f418b56ad2b75fb7cebd6d4da452dcbfbb8e2c4f5568d5f2bdc5f553b649cd74ecb982f36d99b7ddd25b6e9ac63374a82dc4963d0a0c739a009d116a5fa138b4d6f09e7a0d6c39c1f181f81fbf481d302f48493c635a13d838e4bc038bd2adcc08adee7d2d9b6559fc5d51acf348b8d9acf9aacde70ace90bbeb7b7ea85d43b24bf8bd73a443c97b4c7a6bef7ccf6938453dc4ea5bf116e58c2fdc173fe615ef95d5aba470523b6f2a6b3d034f6e1866ae8b2efcacf4ff2d633d7fe5eb9dd7dd4b18bb2e6d9aae46b72ec99bd17f4bdb68167bfc75a57ea0911fd2d6e2330f713bf4eaf136ebe33c027fda8a74bc49b901e9281a4bff6349bebd9c7d0466378b506742ccec96cadf8bd50a3894da30834a7f5b6d675de13c7fa23f6b83fc1123081e2bc820f2a614aa3563b8d5e2efd495fc771cd171f5f1e173d3d321c98ac2ff22ef8537b746dabefa377f859ad45a87d4445f710b8dd6d6c26c9fbfab9c5eb15d696f6c9c89aed11c3fa04ee2c795db7245c0fb2ed2acc3b700cbb802d43317c16f79f53748e7bfdd109af59bb525be16b2b8dac754ce7495a83a302cd9f4e74c3847a491f303739adfdb0bc81518bc997f7836b9cc7ec599bea4bf5e3c46b398053e2f83313add3761a0d5f0fe0a7cef56fdf7b3e862ee62659012783930635cf6ab9154ce82ea2bd43e0c3d53fafdf578de372cbfab0212ed55b51a19fc16eac753a3f38773f9ca2f3e028d5b1cce71a2c97b407cbcf08f9f9f2b88f4da9b7f33a56e612614d243619771a430b73df5979f64ed4869275de9e7721add361de15d08203ee4bb307da60aa9ee949f1942c87ce21045e35c19f61eb8c602fb56512983de09c5999068a955b21f46919075a5b81b118be26be6b6f2836d2afdade644c6ca4b29f5fd441077e24a7b5e8c447a98f4c7acef44c6d3270d03ad53a087a86b7f5dd6703f2a5ebcea01db59d933e8f03c7ce016b37192caeace14c54e509f553ac752781975dc7a5f71fdfe347e26ba481d93ad23deb15b57c43c8dface7f69474e1a721d65125b52d47858b79666b28f41c6493ce589baa1ce3594423f100daac6feb52ef632d7ec748a573a678fe93f480a2388af9cea5f309c529f2f788af0cb16e4d2c5cee91e2b902a815803e6b45c343c95fc9f716eff5a23697622633a55e2bd6add29751ee648bbcb7a9f2af382d6a8f8193b0afef7c6e6b32e4bffe8493a5a49f361075df9ce1280b44cdfd526fa7c0b900fa5e81dbfda23921d01fa3da5c9d0cdec76db76f6aa609ef06df11fc53ca635bc2de731dbf08fb25956ba8ef2bfa565047a83cef98f478c8dc34b87f14bda3d8e3aa7a5f25fe07cda9639f6c61cc3e1cbb08dce58ecf33e94d29ce093b5b861be8cd54704f808e9a63f6147397c2df083fe6197eb7ec9e0273b9a7bf2b3d83908763b829cce9fe52f38e2fadb22da3f304f7a61c1e35b110f98ca4fb4679e137c1bc7be2bcf6f1a7c023f387f552ee9563dcf3157cff3bf0716797d85dee54d71dcfbbc84fd935cccdbeba9fc9fd8cdbbae1e5f5f8b375c579c9cbfb91d795408f6f19b6ca9f4d39ef06ed5702ed3412bfcc37ea7a59fdf51ad753c3de15fa9e41ff53d4f6cba20cafbdf78a6d253875789e25e5b5ade1a94985f3da413e013cab80cba85b2fa2fd40cfa047db51fa31ef820d1dbf5cd01cfd51b6bb63fc4c8226f8e61822df9a7c9eaea5cadcab7b2bdbe150d09314b9a5905fe239d9bb31fb636c5ef65167f6681936e68382ff2ad6c3c028a2dce84e72a8bdedc2dce958c6348bfbe961e521df507df6d4f77f754f61e7b9a63f4beaa550e7016e73a65c911f172ca51e441e7b929a949d5f4e71ebc66784be7ee919a0de70ffb948fd467b7379770a5c4b0cd0fddbb41e0878a66de07633d2633902ac09e17d559e3383e01076e217ac6d7e39905800d778649e51c2432d692444d626785db4e3cf59cb789bb59cd7c5c01940ce00cde5a6e9da5db4e75b6107e374dfe73aef6b25e33626f8b4c916d922fb04712d5a27b5676676c5f3314dc37c9a85e62595f99bf17fdfd6a4eebede28fb411987bfa0f9de384e0a4c2a7e569d7f1e72977a116aed7da42d9f9c17f0e76768ee57de14f692d5f7938f42ffc2df39ef90adc5d851c2959d4b7e89199abd8ec8e321afef732dc7c507e701994ffaba1ee5f155bc0eb21d6ebbf587dce32eae2bebd1ea4b7c70700d82eb1d0a9f7b22dcd873d0d4dd6efeb086e764e64dbb613e6dfc1cc31b2d76c9b8ff709ce4c05ff588ec48d021fd5b033ecf287642ef1bbad935585ce6ef5985ab46e6d4e9fb35e33362368feeb7a0bac7c59e669887125f4264e5b05e709e85e2094cf8dd2d3e9e86eb45a4a7da8eacf519ad15c62b826b8e383e50d90c7887eb2e81fd015ab4347eef026f5b20f40449be027c5ee67f78aff2cb021705b645777230ac6f7230a8ecef8ef375a06b9c5573d3a89d033d38f89df232cf874a0b08dd2776db59b8b545ce40c8a7bd36e54be01e42be6c087c6f87602e619249ee24cec2dca13c3eb9a00d5ee63523eb48fc3c60818be06a287b97308e12b42d85ef10ccf2f00275f0f7a183fd1897ae13ca4b55e2e318087ace741f61fc10c9b3a5ad78a85fdfd64fa740cb5aaba1b39ea0b53fefb556ebde5758f4d6a1d95b4fb4760a3adaebde1ef9c41ffdee7f22752db320beb2105b3c577185f277be62cc670fe755c3e7c076512e473ac70d9f078e01384ffb875f81e61c030f9fe973d756ac0361ae64bc76321a7ec3f87fce9fbf319779b6795b3f6f3e3a58d3197e6f66c795672713d9eeee27b9718ecc4b776c4e5b1ffd732273488af7075fa0085cc827824e8170fe417f64154751f9fe99e6fcb86ddd25330d386c0fa4d6cdcf30e4d32eaa1c5238d6a1ffb6957aa482461dbecf9c6184d9f5c7e259df4f918f7a0a8701d1fa01dfa109834b7505b368906d242dedf2cf7094816d347bd0ef17e50ee4e4042ea8f2b5c5d8f7146e82766806fbd0bc64013ce76b8dc656e53ad5f106ad0ea1eedfc8374dde31775a753931fc7e77e8bef6698e00e6afa16f54fde3f7edbfc0a678ad6482f560f6e89c1a0dbff13e1ac2ef89d63f5afbd356e0e9a3a07ff8f5e93edfad8f8af6e124073ceceddebefee608dc02fd741bb80f0788b7547b47f8f99ceb5f44176057c5f4a87fc4781c9fb16976ab17b07e6de11fc0e7c25a9a356aa6d6e6502bda266017d0facca26d9d06dcffadcf7f647d6eb1ce9bd5b806f0cf784e70b2706e9c41d7ead6da019d30ccdd5ac52cd48e1bebab243d54f55abc784e14b8af7f6b7df26bddbb2e557c6be8fb7fa2b10fdc879fe848a7e15a4f23e861629a164a1db1f20f5ad7e47e3bfc0e673ebe77cc3db51b7f671e08774016f7bb9b50eb665c9b04e6fa1a6a172d98c3d81c0906ffc6bc339d52760ea33391efff2e3b87c97d09ee7ec3f250cdd767febec2b60c8eb19966e13a2d9da9e7920dabd5fe6ab0ab95735ae26cc2fc73df7b5f3b24a116509e967394f7004bacf0137b448b0bd75114eb85fb365d1ae34bb6eb4e9b44be7b41bee11d7e31fe8987a30a2fa37aed54e77bccefc97fa7fa5cf31a477bcb5cb980fbea5ae6e8106ad35f842f866b55013f78b60fdccb663cd7aff1d0c983b29e70f947ac0b1424d65977e935d3b1cc35caf8419aed019a7f27855ed68a3e2ecbe324b1d66b87e62c09cc27d0781a755e816b1dfbc7cea6d9e6b3d8029f33a6b391ce5583dde728efddd73bf72e1ec7c0b5d91c71fbd43b45681fc17f9b7d20fa3efcd952c5f3629d9190e8faada027cb38e2de5a96a7c982fef3e31deb84faf349d8710acbec152b37de87b971e0637f833b82d8ddb063e15cf38d3c673d17c3cff4efc5fbd231010df51c348560ada0f1f1a9262de68fcfcbfba2e90cadfc4e958710ec2a9dfba6bc085a5f9437ce85b18a2a7a51a5eb62fe4552f7e0350d963fcf2b79acec42f907e16f931ce7e6444e95da5cf93ac5d7c3f92f15a7a1d403a3b057742fedcbdc4c25bf818dd72427ebb6bfd90b7bfe48f783927742ca47c39a9b93fa92c44740f5ac493f31701b4b9ccc427e01e2eaf93959b9dd3cf0ac64b93ec3b9ca729c2f4ff531b961b15c6af91ecd713c3b37ff14f89e1f2126cf257e2bc9bf008d76b9e7f93f31688fdbc58a68be5b86dd8d4c6781311db3e46d7d6b1c495ebfc09c8e50db5a887d9eaafa63707c2fbafba8d53ef9598a73e502b657d963d6aec34a66575c0317f1a6bce789f616d6613767dea8f0057c8b0aff26de4bc2b62d2b5852495fa806172ad7b48cbbea4ce2fef9ac60c586ac4793d76a174f8f227ff55c736ae785703730df509827a95f83f820ec9a567fd093f347d51c8f2a6f3bae8c633b8dfa29bbbf0a0f47e689f6a6ee9578386eff3026b1c64e7bfd510593477170d2182ea19e2c6ae25c634f873d80f3b1bdc23271ed14fc967c86ced873543c240ef2c54df45edd1df2b5c38e95f8f81db8b69c991da38e9df9eeecc87b5ac41f450ebc760db2f1bb95bbc79f63f8b316f1579cab57c0b3ee440cc98d7349b94ef839f874b20601e4cd09fe9468fb9d93487332abffda797d312ab6aa54db2ae3c739ae8eac056b787992e77a9092770a4726d1ff2e7f86d90d71ddc93d252bb14f72ddf8b917deaf82f722dd93dc77b96d4765dc2cb9dfa2d9a6feddba08e61454e47c2bcf23e28b3146f655aa97d0355ffa1ef4633d43afe8caed5e231370a9c0c7296051f7a199b53ee6c003938af89692865f155763f42a7b99fbdfb7b87da5750538fd31e71211b1366f04a32460f9bfb38ff946d23f2ef524ca9aee98974de47c073b03fa07b06765dbe583f692f38579370722ae8bd48d2056ba06eef484ec8e30e789023372f3ccc0cf51833114308b93124e15b08e37fa1304dddf41ec8db0663ed6b43a469ac1716905e64e45b634021d2c7d83fccea00f7c95fb90ac9b00f9a59c9fb5741dacbf6b19aabfe99d957b3940dc03fc5efaf5c3ed7e215f3fcc7bed48433e7ef714e6a03b7a08bce915f71f534e5afdec7ba334e47901f41e921e1b8e41099facf78a795ee57ee12bf43a3955fe56accf40781f86f6cef76649ac1957368fc05933eae2f77ede523f635490e7729d56e059b73859e531c17cdc82de25e9e705ee2cd021d7a33c4acae73cf8abdccffc097699d979e627d1ba19bf9fc8ffc8e3afd2b986d6c12c87f86f57d19baee064a9a637e4a7be82f93989dd2ed355b3ddee66d2e7bca8816b2fe09dfa67b091f7acf30abfdd127fc6d71cc09d53feb031e5c65880660be134a33a2b9746bceb1cfb86d09b80799bd1fc89e701ff7bd8195d3dc0d6569fc36db74ab540fbc6f994a6514bbe4e54a4849f619a45431beccadb5af98c801ba9e14c17ae09f6fb587987029f5d127713708cdcf35da9afe77ce34c280237de431d72531db3318f03caf77db406d9a83c16e83b3c0610f4e9e5cf9e801b0ac5df0bcec3a7c042eea5ef60ec6165fc2779698eda4fe04f8fef1be79e657cc7bcc7a23cdfdd73ec4d7782d67ef53c367b475f5bd670f75474edcbeff433cd7a883f9ebf5fe79bcaba9f6ca7e7d0ccbe82798aee75b05e067ba9efb5d917e3ef3da07b15ec248be1ee5cf74b6b784ec2ad73085f04ec21e9a3c63694fcddc0f3cfedc05981ad46b63370088f19b35d4be8939c09365055a3038c88349f24bffb1d6af63e003e8f34a3f1cc04cd5547ef82363e707b18a0690acf924fdbd17694855b14eff4362b3700ad5ca281750ddc65625d07dde94257e25eca7385dec72d1e8e9375d59ed4ad67b7ddda7bf2bac8b1ee13e68d030c41ff9c84c0195759c7d426fc65999be4bdaf1fde0a7d3f2e0e357c39640dcc15d76a7fefbd794a78a254395fbc5ee99c635f70c0ff2df0c0615c22e1f97e1928eb52245667f7b34cacb37a5f9c46dee39e3e95a1437521b360e01c03f0571dcd9967b7b880986604b10587eab5ceaaf5fb77fa505e57deb4457bab45db49f8bbe8dfb3683bfd7c5b0b7a67d9778cf6a0d47bd47c46ec7c6f2a5cef75179ad935369d23def3e8bcbdc019827547976a5e57f13bf3aef23915f915dceb70c777e5de07bdd9de0d47198a49d0ba5e906b079e75ebbd0ef29926f091369f630761ecd0197010e76e929335caeee508679874ff23dd43fc99556798709d7ffefc12dfe5b7cfae5078febf776e754fb199e51fe2d8019f722a8d31f45e486be82c9d492addf108c520d912c701151f99ebb663de4d71cc91cdbc63de4a1ad5e298f03a39e70fad5943300f9186b5eef91a084ed1fa79879f6d93bccf9fcf93be7e006e3d71ece99e013dfbe727cb3ca3f3e1d7b8aa0b21dc6f1aae9c16b3e70abe2071bc8c30871e6534966a4df5da3cb7712bf75cedaf6fe64c906236ae07d4dc6fcf3fa7cac9d97a60b6f7619e5d91bd2ff5727c85dae510b8d3d6b2639fa2dc9135aab6aff77035d4e5026b7a4d288fc2aba8fbabe851e73c1281695b2be845c6bc0d77e906ad916f95a6be76c0fafcee2c09b5876435b45bd1f0f57152f4b62bcfdec5ae055caf93567bef7746a748ebe571bfb7fcf0f46c497a78271ae69e8d8aa7cbf42529dee6d37dd499b621cf03f99dd9f7ebd52a5ebffcceeb4bd2f5cc87d3a4d0bd60ae1f0317345d0887df28f335a31d69cb04f77e8f3a5037ebeb7a60da7b8c61360e73cde9465813671be27a672b2ca0477f1fe64186fcbca0cf7e87f113e87d87d38cf0365f634fcfa23c38c46eaf1d15faafc0cbae93b5de8fbdd9c11ac699056b21cda2b5def129cfb4897b5b093fdd3e349709d107426731e45eac81b109cc0cd6b3ef5ea0dfd9c2b861f4ce9f6003cdec6be5d95dafc07dc4d043eebd260403bcf70b91f300f3f9d979f680719fb59868d87babedeb0972e4fd1e9e03eff5f4faf55a4c157332fdda5c5e5fa2f3eb8b5578661778acac41f734c77541da53123a463b74fa02d706aec5fd69bd400d9070fc35d9f876bad264ce959296eb89ee09f5f8f11aa3d0633109bc0dd122012e0e15efc752b0451237c1fb75a7e2717972fae76491f746b08ebe2ed575777d10e263c64bf3e7dbfa06b74c9bc54a9573ea7f77df3ed45c07811ba4508b259c894c27783b95e3a5728ffaf5a907fbc5bc205bbb801e0c57aeb74745daf2bdd11663fdba95fe0a3e4f4e89873c3e625b9096fae737c05566bbc6d78a704f21bf088df32487b5f8897906cee5e74d5ded3bfb705afb7fa52f5ed00c9b143aee57c33dfbd76527fbf6f3dec1e338f545e0cd9e4aebfd0fb80febff01be9dc587db5e871a60bfe8ffefbcfe089fc52ee6e481bea1e6fd09da15b2be9aaceb2cd41b55f698db87520d97f0016b8167f17c141d93979da88d7082bed63cdb100e4815ffce72d2d7dfc256760c72a77857d88bf7bfc7cbb3fc1dadad32a70bdd87e339e6a7affa0729eb4f449f43f31c9b3db0c10bcd17bedfc807f3edbbdf19e872c8f5a42dc993107ef8514675dc70fd777a8073c77ba55a739b106bf2ed7c2fc8a076d371ce8137fa0a4de31a69f770c4546d5013ff4be81abf02ac5128d9bdbae7c63873bcfe28e78bef5ed07c6e3ee6fab7efda99654acf9328f5c120a70476fb7be5ed53a66fed618ece38cfae2b6467f308ea57b1d9bb8a1c32336f7a8ddd761651ec9e74ae3c1ce1bd9ca7d32427fbc6784a62ad57ac3aaf44af6e0a1a62982704eb4e30ee9be1b48c232aaf196627abfc6982fea8826b89f3219d13f18c10f6db4138cf94fa3aff95f3ead6bc69c6d7ca5c02df0af223083ead15b6c5ef19c83ffd46ebfdc6ba43fe22e0e5f19aeb229b7f0af369660d75e40b523f059d1b1bfc9db825aed395fb80f6cedad72e69d491e7d3f2e83950b6f9b5dc9bf85de4feca6de001fe92f43a3b287617ce4f557f1fc4135cb70ded4de3709cacbb9c9387f3651d2ce88f6571c80eef83a7bd57dacf78cc4173238b4dd049c1cf8d751e4e5156e1c0c27e36e8d839ad609ee0792e61467cd7decccd6c13980ee643c275e756589cf13ddbd36ee88e4e619ffcbb90f27bbf53df23e36787d2f58d96c28f50e0bf4d6313cebb608b7f9793e85fe41612f778f25e10eed3975d82798fc0fe68288e59b97606dc43e2bf7fcc29f4fcf7eaa0a59c23b50f3fca3b0c8c56a8711e27aa7d347346f399b3113488e5cfcd97ce7165028651d41aaed4c86afe768a78dea094abaad72616d7ba8dfd4c88e1055de25de04e7fcddd80e843b44f8199e52b774ae3163dca1d1db84f3567237c8ff83a80d7c2b8532d9845b9b3c1dfe5f84251b752acfd556ba7ec3dcaf9e483aa964bb9774b5844ec438a1ac91dbd6b338e51760fe497ef836da6bc4f943b5bf8bd37aa9b03a12eca737b9c07727afe704619e4ca21bfcf734cd1309b07b0c668ae90e75a94dcc2f0ef51eb969e33d4eb85dc189c8706e7e216b1bcc0a7b2c475add916b4280a696eda8051aac921c9fcebf7e94893b3c298ce1683ecc59e633e90a8a31f56ee3403bc00af2dd0f3c9590e6cdd1910ee8e2dc190603d810a67c06269f85e9b5cdfe92de6ce1ef4085e17cfe7d717c2d1a73999652e8f41d1908bd2001ff79fa8c0390f21fff4305d94e31c35f716ce47e2f17d3770cf1ff0498878668c7d843c08e7f520b96e07f400088f4e8afbce5f7649b875befd1c7436c8b9e8bc841de718bf085adbeb338a873a73cfce421ce72cdd766b8fff2b70b69b4e1aad93f2ef8bc0437ee3341ba338b195b502b77dadb94611b8ed539c337cd9a365000ea6c2ad1f9bbdf1b2d57b1bf709e70ee7e12aeb8ae335991b57a65553c273503f5de44b2a8df71fc26785bf7fefc37cf688d61dc69d668226849df95b674bedc7a286a70dd7331249d7bc864b6584e7371bac5c9becd1e59303b557dc77fece3fe3603d69ccb3f2d967bf5f4426e4ed9f9c976ee3baab5c47b88f9007a39febfbde94d917c0e008bc392846046d6169bf51fe3aa7e3b0b9667a06a7d024fa3e8b5de228f8bc4ab549bcae1db2d6179725d629ea76df25ce5df2b9257036f03194f60be08a1e2bb684e7ae4163c931be63f14c0c5c9bec1bbea704fbf81d7682caf7d8ef07d353ec76d1fa3bc6e8bcf5463739f9c8b87b2bf77210c69ddb053efe340610f9bd44bc375e0b147351b20b6cbfa135b8005d09aa552eacf56e16b7457db84a6d57b9271d2d3b848672ce7e6b6faaf6d2efcee93d73c3e24b3c17cb2837ce58d3e05be0a7966246e0bda8e1556f815fbed825aaf7ac8953591c4031d88abc07d56becbdcf9f49fc22f61f189b50513fa5bc29843799603952d07590be3b87f88eec2b52db339e768dbccc26d13027da11cc26f62da8bd5b6e765de4c6db987c4ee073bba1e5c49ee7733cd4d3683bcde66eb745aeb32f73892ac60af98918a34c303a84f7f78af3b467820bbe89ff4ff178e0b3193457b7d31073e5c9b89192665d258e7035e06a14f404b8dfa75a5b93be4e31f46adcb41cafa781d97a2cd519c95c1a9bd0cd8ec8678d72c275f3d2e2cf55e018c6fbe1da51eaccb9f6f7643bcd62c291b720bd1b5e41fb01b2a631bbb1b648cea26fd19e97377ff9b06b9e4796f78031851cf750a90d9704a0bba1ec3b3e4d0ab0195994675f4cd7bfe9fd8da75d84d69de68cc2ed8c3ee3c1aaf43928d62f5f7b52cfa2b05e005b14b8dd96bca693ca18106c54bb82f795ce239c93bd77ed701bdd3e8726e58357e2f9d4671be7d691febe24f69cfcfd8f49259615ea579e7d0a9da747d0bd367bdf82ad4f03d26fc1fa74ae3bca030735450ff7f201a712f42af17ef833c591a37d11e13ac9c3ca753693be7e0d81cf0e72d5cc0f06bc5f1dfeb3dd6bc455b1f8c9edeea0c7d31b7dbec19e733a0ee90d9c10ff89f45794f9888836a371e4bab37646f308f83b99b0667a0f1fce535a7bfe4abd923a5a13adb90679ba57b2ef3f29d7909c97b58b98f4092bf845d19897b58415be4bf68cf6f5b8001d8837e497ceddd96e3c7f86b35ef5bc159d1993e7508043958d2be6e47b2f69e04443678dfc15c03de4cec613f5bc6a3f7bc902cdf8fa805c88f3a98a67aaf971c0181cc99a65b950d24f85fd08d91e107e4afe3e80d3eaa7c7c08b5dba2680a350c1cdc0d713ee1777d64437727d4e043d993fe9fc8c0b3db2b2c37192b5236b5d3fde6ef170f49c929e74565977d8d7779e78dc87f19ae4bf4a8d1ef2be7cedaa7b25b95d2c7fbeda3f563a8325dd502957bb09dc1472540eebeb236715e5ba72bee3f182db10551d2e36d33dce47e36b45eb1a0c3e79ce927ec659855de5355cf61de051aedeab869fa4dcc328f4b80bef2f62883fc7cdb8fbbf65cfd538c7f2bb726ce55cc23d5b4f52acc171e68c8bb3261681bfbfaf991668156b28ad63c671fc59eaabe41836e09fa3b84b143f0d1e793c6aef83d2b3112e51c0839774ae541ab3c011081a606c4d6c1e793f8e72ffa8ae5383cde6f9c8f1cba5924b003bf9d5ade55eb9993329d94de15d79ec4aec61049a75d967956fa1f2dd4de08eda418bd4a10684b75ab6ab84bffaa9b6ce21c4bd57fcbe4ed3f3b2f8f9b55ffb19166f923d49f7d9e7643b85b53feed7d75dcab986ca351826b9f6fe24c7e66cded6c8afb9fdb999d66b87dbd923609c2bbe72ebbefee51afc337efeb38011b594b55cccc30feb85f91590fb6339cac6f3f318e50ef8ad8cfbdb9d95635421f6aa195343b1f787cab8059db9e439857c4425fea9c42e59dc927b89bdfe88e51dac3568ba8bd74edefbcf67aea3347a8fbd59126a7e12e590db827d66f50f9067a3cf577a6fac1fde718a28778ef180ddbf47c750e85d67b15cb5675e7a7688fdaad7dca839be4ce710811651e53a7f5826ed83b1e93bd7f58f901c0acf31131c4f8772af97aefdadbab602bb52ed7961d8e59bd763d8669e3f072c73b9d7136a098bfc89e6f08f419e1dc2be0e5c231f5ebc0bbc513651f24011bf66abc8f33b4fbbea1c9c71cf0ecfe757b4ad494cdb785d713d4dfafa57ec8d0a14d3d1df59fd967acd497b87e4839795fd837c55c5fe392781e91ce0ecbcb1a790efca9f05fc42e2ff5dd2a8634f42c00bb07cd51ee37c92cbb4c4894c6c813aaee91f7ac8870d87765aef9fcabe3feea9c4dfb15e1e9257bc2794f5b3b1d93b047c3ffe62dfeb1f048e01194340ce286fe5d93b622f3fc766760c4ce781e730ad035ccb745ac112e737dfaf522d08d998516c3adf8043bbedcf62ce895696931ae214faddf2ec8be25767de289bb99743d889b3808d8dd10ab5f667c91eb11e1666e3d85a243e6dfb89f17b94f19784bf03de97f0ddc8f100ff5b89ff56d4da27f531b03fdc7691fc32f442a8ec20d937a4ff847c16db677abd9e3568a7b1991c43d77818bf3c1ff8f5d1fce2671b977922f133897af49cdf04e7752fe80c90ea7750af116d13be76bddd95d78362ec207f1640cfbe9d119f00e7d9702fe5bebca6eac7b8fab9856bb4567d14ab243b649fe8bf57eec3ae74cf83eabdc6f332e720cd45323b879fb5a4212cfd7dae1b0b475fba4e4f5f6623dd55cfc3cef7a6a3524f2df163eafc677a36d5f43872dfbf3916c2e7318bdb26fd7abe43a16e42f60ed4edbb5ec1f8ff6efabccbb6fe3a5f4e8d491da72d19fbdabf0f4759e8f634d15f2dcf65b39f3b7b14cf7325e7e43dfd9b3ca6adcc6ff9bb95f53da77938e020946a428ae7e176137ab2e87c77b1cf6f94f3b7b2ed92d6a2e2d984bf97f7ffd97a7992be8ffb1ce8b3901cc01a624a459e28d526a51ca1b27e43cec2c08d53bf93211b9f7905f8a42c5777839b9edacd41e05e5a3ec58e93f915fa29bfcb36a2deefa9f521e8f9c1edc5009f9f639ccbc56756e715d60bef833d530e29e005c178498a6172364db10eebe3cb414799fa0ef44cc6730118a59e4b630b7a5655f017151f4d75ce95ec28ee773c639d70e5b8627e2215df25f1f5c3bcd75ab941578ef11df139857505fcbed71b71942a5756049e1ab34bebb3c4574676f6247cef0edc4a9d1fc37c973dc9714b3a4d827d17f70df741fafa74e6a49fd4267aede9c8ddd4f06196738e82df42dfaf69de919f7f877fdeb4cfa86e44f5fea46f93f82707e60ff50f65dba78a85205644beb57066deba47322ecaef58bffeaab126e1b0c0fed3afbf612f6ec471a56bc2df0ebfc695f7eb85c27bedbd920d73b52cfed9bd918f5f73ef5a4ed6d258b5bf6f8d0ff22d638887d9dca13854c1a5ade4377d66fbd42ac770ac1f9ac42e5aba0f4d9be0869c9ad843c28b600e30340e86f4bbcadee29a2ed8462d3b3af4ea581eb15d9df818b83689b1ca38cda4066b4e9e1fe6314da396d8578de3949af884fa05ea3cee9c738ca8cf72fc0ec456e36770a6e78fba397f794ac637b87705dd4d78e7b996813692d71f613c82735ed7fa6a6c5ca82e39cb2dd21ae04dce7fea373a8e3e983976bddfc8eea5c6c891fba650a32db0568f57d4e529b98f82f7c0cdcf413d0ce30a6e7e96e3d01a389b3f314f1c5917b55cd28f22f794f07be48b2c57e612ead091d63b5ac378f731176acd26f047ec032d6d613e88591269d92698eb901742b121f062e6bd96651a6be4a38ee7e76485fba5f651a177c09f817e1e671b625fa6b086f11eadcf007a16f43d3a7bfcadd3c27c34f109f93e157e1b739ac6c0410875b902d9da95dbce08067f17b8c60663f4ed2cce9d43d8d1a1d68f7da865126b596b65f6da715f7f5bb46cc36b396fce1ab02cc061129ace352a00d30c3d4de81d28a742c97f2ef5ba3de7a335c3602f22a86508986903639e590d663ed8df932fa6f5aaaafd205aa970bfcd5ec90b51b0fa919abb46c56128da82f906f943dd257916dbed6ee4becd6e197b2ee3209da75d051307dcc934b6c2799d895c1320be516d8f8f38c6c9fbfc3925fbf5146bdd2c30303fe6ca9b2ea26166603e0a47786eb52d47767c651a5791af82c4bb35769bf3bbd11a1e8d9719df53ffb9a78ad1c89c413e433c4beaecdb7bf1bcbba97b23f7f24d5658732fb2f21adc81e2a73e66bf69a7fe915a57d98edf8cfff93a6ece03b03d46f301f5713f5b1f788ddefc9c02a7c9d6f2ed5a181b3f1c9ff36be07ff7d5f50ef99d5a381f83d773ad1e01f67f2e07651c57e29615d7e478aeeaef605c58a91a0382f3aa932ded17217ba552f3c27170a8819efdf7db5adfc543fb1c5d77a789c6ec7716adbbdf6167bf0fcd4b3ac97b4550f4b270dd7696456f136ad3eba41d67feba37f6bd20651c1bed5116e44e11b8ddaf60de1b86666fedbb97cf05eb89ed915e841ed3fafd5f6c5f31a6b4eacbee6b3056ca9a04cf09d7e7b36bf22735f3ca700715fb4af75b0df685e36d4ab54e572379e266cc259c05a176c926db388d7295ee14cf09d5db553d7135c21d3d009fe014ac89a6e7f015e3f2b0fe0bf6ed86eda4617f916b2547822b88ad81d182387e38036e64b85e9fe81bc1da6371e58edfa3b5a778be15708a237fa897531dd5a880cfd6cedfe77c73b40cfd10b8068ad1091737af65047956449dd9b1f2bed87fddfb9a73a57e19f6e7469935a4dc46b3c4df6e12d0a830e55abcbabe8631a52a1f40eabb506a4cb1f39ee29a14b17eafa1f67266584a6e87d5f85fd008213cc416f4a8936b203f723802ff4b95ebf8e76a4e259f44bb504d03f4ce746f90b83f55c5f7787f9bc6755ee25da43e4c933611eb23a07c85c81752f425beb33e17b43e2eac7f05e36f1ec85ee6f9fd5b5a2d3f8bd7eec1e29c612e232d3bfada12c59d5883b46fd15824433649ceb12ed15aa4fc47b897d8cc188eb6361e26e37e4fccc7d77a9d668eba8ec0cf902465dc63159eb4cab584f852aa01f0dfab346c6af2fdc23a54e5ed857b9dc575abcadd95f216ce86e223e83d2ca8e5f13ccc2d9ecda0663f63db436d04b1ab468b6058ebc7007f4f99877e5999d9213068ffd89390bfe4b9a48918af2bb52b4abd177365cd17b02b3fb15dc857b5cc01c69a98907babcd6fd2fcaf83e260824b61796d82cd7035fe4e9573983eb3726fa3f8bc7c8e4e6b384d92cbb438276c1cab18d31a5c17e524ade5eefc52f14a09bda93ba15f6b1f9b591a92f5165d710f56992b94f709d763b51d81fb97693e0b7ef57ba147d646d5aba047d6faf91770a50d40477514003ffbae0e732ee0ff741cf342ad9de973ec9b7ad584deb034eaa06b0337c6c3ca75ae82ef29f6e730ecf79d7d61a46fe42c62ba0f14af3ee9139c28c78f887c7c589f0e7abc9f77b82f85f93807c65b809f6bafe0af3c7d0c379cb703ffbb7a1dd25be50c4769347cddb3f383f523401f17cd3ba2ebc96701dbaf596be51a075a1fa27ce52bcfdefbee85d4d85eeb7d6b89f3d9c7bd930dfdf2e3a15d546c2b7e5635eee6e5f96001c6a3f24ce56bd4f6df8ff1b349b532ab5fd13783b111b8bab248bbecc3edec3b30b32bee83691f032f6d4ddc0bda53e2ded57c8feae66406f4ca6ea7e03fa1f341e0c7463e6d813197386f548fc7966dddf845e4d810f29f4314c75c525f5b8a380d8e37fa07fb24d1d959d3b3266825401f9612ef86ec72691db37525d74479fc38117a5ed039e17853e4e7ac3fe63af4ae4fb64cab24ffe0bce2a779367d5fe03e7a759db2525fa4b8e1ba7befd93c8d457dfdadc0a7857cc6a19d456bacff21d6c369af4eec8d32411384c450e7642c69e05ff6feba9b4557ff18f4bb2d515f7abcd6af2bc807a07b38283e929ec5772fadc0b308477a760c41676dda8ab6ce177adf006bd7c0f311fff1409e05f3800da7fb00b44b821ce718bae2bdfb814b72d78ddf39c3fd3fe6fa756562bd421e8771ce245feb7d4743076b5471ed5e215fb5239c4ba0cd44344b4699ef4d8986c93209cc2772ed690a7978d3010dd8c0ed7e7d38d8064d729af7e0b1be708f53b96efe73acdff371b2eefeb04efeafecc36bac654467d228820eed11e4fe480db62a8db465f2fab2afc7b193fdcd792614df5fdcfe7e937d207e94d2eff64133d87aac8bff4afdcb8d18ce2a5ea0314ff39367afac937bec9aca9ffd1fc09b721d33ac67c335c8902f71674feab86eac1571301d2315b7a13c1f8a58b416c35633a643e7baea27685fee157b928ee93fd8d39deea376997315ff34ad9bfaf310b8bff7f2ba51aef5861e8b96902bd7cfc81f6de01094b1eaf374ea7bf66e92b7d30f92f761364775cffef3b7f53240beda7ed27fbe8c9dc3d97394cf715d99591ef7abb6a8c1f7017e79f7aac76a1fc839465aba0fb6b3dd64fd80fc44d9075af07d52878750f11b92b5ace00aa77d1dd31ace88bbfc5958cb75b8afba7551e70302df9bb6dcd5ef77a289ec0559b445f1faa88bec49901bed70384b42cf81b3322af43df28743133852d6811b9ca27cc9e606b457f1d95f604d5a5b1a4fc8436ae91e9d41c0bbe8bd621de7bcd75af5f5d4eac79bc01bed63b27746448fd29f3f6fc933a0736e3b51e09003ed72f273e3807dfc25d5ead887793c10af5993ff87fe9ed76b74004e03e0a61d5d03a7c257d853d5b4a1960d639296fcc5cd915d6b5ed6802ee1f8daeafd107646ada69800e70321ce407eef86f1329bed764cf4db808312c701899f3b79d801ed38a2c74675c7974c5fb7824918c6bb953bdd59667c0a001b1da72b17db42f0abb4de29805e76d063fb4231a135b864713fa69aa3b47e24e9f3e0fc33e9d957e061ffd139456364dc984f5efb3ee1da7b9dffcfecc3f963de853962fa6ff8bb1083731f4bd9f322f076c177f64db6b76e6f43bdf74e9dcd7fd1b72c6b8aa03312f928383fe2305b553ed3f6931cfb32c071accaad925c045c778db546547942190bbc047d127cd634f570a3b8cbb9cbbf0b72e3c035e1851cddfae93f63988f5de274466924e7eab01610e86fda27a80710cd4487e374688d95f4a2d93b6c47e353947f5fc1df1ac659689e0f9639629fa77ff7b02665ee03f7a1857503c08ea3ebc3deee849dd12fc285db0eb7845f10b88d09be91692d1a9b6050e5e5191be7353a0b7dcd68797deb8062bad0d30fc13268873960a7d3c0a41c450227cf3a8dac3c38f89e1d59eb731269d977645e321bc573684f34dc0fc5b1e1d0d904c055fee3ef620d9becbc9e209f0273a2805e125a0fbe6b6f66957cccc3ceeb8ffe136ad9f1e7ef083d6f23c8310f7af98fbf4feccbcfbf679f969cdbe9c7df5d98bd2fdfbd64cdd7807cd7b7efe98d634ed61ccc55e81ae78599fdba737dec212f82e70adde775e57edf35cf8005307ef37b03528747ef6cb6d36870d9afb4bbd6481e9a466be11ae7dffa6e6764f8ee74f71bdf8539f8f1f86ea7a7d0756abef780fd3ed76efbc8b6358c59943b9b98add151160c9daf6079f7b3d37bcc576ebc8bf19cd1dfc9f3965d8e42be27a9bb267ca60538ac03d12e307de0bb1975457f00ebbd032ff62958eb0413d33d0b7cd921bf961393be3cb42e991e82d7b7aa5869453ed7d5e03b6f8cd3aafc5c26ffbb8afb09f84e095606f97b01897d03cd680573a8dfb25e8fa04ff2838e3c5eb29d4ce12c22facc020723f32d84b34a11fffd3bbe02f8063fe00da0be057f775acf821e3088a7543d30701fdeef50172733ccce867e579ec76e1a0df5c3c73c55dcff2ce994d7cde902c53a73fd8af3bbd334342f6bdf9da233b908dce93e008d85e929da8e30973ca9dda36b5bfdd7e2f56a699ed915fd8a92bdfbd93cfb9a71084de44b1f447de4da7e807f21fea5d8f382e0eee8b51bfa08aaf384f92cedef0aee0afabee4fc475decc57c54d7a6df95ecc1b89f66944f6dc2f0102a5dbdf2bae2f33cc921ff8cf1232da3088a7382f635d69c176bc40a3caec0fff129d7a0a6befb9d59c3691bc5e07c4ebf416bdbd7b22c86dff78a08740218262b8df228b1aed6f5f52b88c2bca4a158b6eba2cd526a1f0bdf57e46dfeff5d43cfa749f1fcf5fa35bbbeae9fbfd9d8415e244de33c3b456b7d13783ad1c8ea1d2d65de3d558f17dfa3582f83f5a64fc3d7720e51b041ee558fb13eb7f1e5779cefd8bda0712a440e09824739f0de6ee85b55c5d03ce7c49f67e7bbd3afd86db7911f1476901fc378391856a6794dd769bbfebbb69869f77ad3fbd7e16dde7c9677abc13354af9b097d42f7f33bee1b302165ed1dca434e62c00dc694a1b812c58e353cc5656e6041df9cf1f48fc975b08e51cd7d55b500f23d9e27ce6a34eeb397506b9f63cfce8281d4ef2573d66ba0b9d78e4d674379e4acec7284580ff4eb0fc99ce41d6c33db30ed81be3e9ae5bd07f177255dfcd364fd806375eff524716b79043304dcf7d23353ed48913bbca405fc749cacb19e5354f4a43e32da97a0b8aeaaef4d1e87e2e138c17eec75a24973c17ad280b35da96d2ceb0200be2b077dc5d152735ae57143314fc3b81d271ae65c0873e300ef52af4d5ee91d54e90bcbbd47cfa9e5969e773b3dcb7875c1a696f954314775b21c3a45e0a0ef61ae56eb85e1ae9ed09a11f8c852ec537723ebeb80314f02bffc5b21e2359de30ab86b1efe926cfc7597c46ef71770e1804673edbdaebe96a2f3e310b8b3ef28771aefdd701d64abbea88d792b3067f1db5a47b607fabd38bee58cd602e78e074d985ee1f5adbf0807e523e3d4bd1e92d075ae91666c4b639045dbd129faaa79b6babdbcb8b4c3fc1bfa491957267005d2fe9a7b3e4be254613dbef379609ce59f8a752b7cee60d57ca7bcfeebae4dce29493380cdf957571c8b7ed8496f7fae3c9f78dfa2f5b481b929eb94501d9ec52189cdec3b5888ba12a4c7624bd63eda735e9011de8d198a47c4df8dd6fa5faa9ebef72bb9c75c6fc2250a7d34b35d80aff968197caf55e2f2be21f25ab07d8f62a6c0845e82af50b333cb740e2b179da1a4a68ab5b936a158b73044ec5a92966b075147ef2e543ac90ace348653173e8f7caa5bd7645c7a79afb0fa29f4f2afe6cf3d5cd33b57349e69ddeeadd0f7d6cb3909794f7c459b998ce7fe063654d5cb94c539e66d28dbbefbe6a35bc64cb25acefb5cff0b6b83e1eb4d545a392f6ced083dbc8226a6d01fc47b47b38acf662fbb03afe5b8f6b2bb7c5bebd0fb08ef053c7a8d7be650bb67ee5ecf58f39ae2b2d17e40b673e5b633116761416f8bac1569390c23cb797232096729f0e808cfd94fc9d8d23139fff63b720d71cc47258df9c079b38d9ee16c9c37a77f439b1ddd639eaa3957173bd1be600eec216828eedfd6cce710f08e789f366869567aa07ce31be363d1b9efb492b9f79af873fd18166de8af2658cd4dec523f63d45eb9974d45afb221fff529eabcaa7840ca3e53d50721fafc02a76b4dee21d4ba5fc13cd935c45f5bd2d787b5bee65db4265f4bbaf1b73e035c87c82f1b231bb4784842c253a3e204adcb3958ebf39afbd62cc6277a175ce74cc08c0b3a6a22073be891d6fcad27eaacbd8a7afffcf7947397dd538a65686ccb6d799af9daf728c8f07c2ddcde66e5067b5fa31ab246112c313e58ec87f53ba30c30cac007cef5df09f67e146ea72d9c37eae54b14fb9bd01725686ed959e0e94698533ee88bd8eb48b9d425cd355933d6061dc67f5b7fcd765e35e41f49fa6bb276ada8692ff59cf3ef805ef0089e4dd6b7bba5d99607de2843e3a35a37ff254d37e22bc7e8b927a246238adfc3ed342d635163e4ebe7c6d74ad2dbeb1d67b9f3156aedcc71bb279e9be2eb40deb7ecf79b95b07e57ded4e4368a7d86eaac95b40bdb51b8fd494c266b1ecd35a74bfc59ac7dbee69a54cc368356e986c706edd6a36504b5f1d67cd94ea381738c87a3eefbe040f5930e96e1732da59756e2b60e07cb0862952e17f8ef30c659165d2f13aa6334e9eb2ed7347aee59836ceaa33db7b58b8fc56582fefe9e7dc7a5339ee8dac367257f7c5e90f79d9f13f1ddc1cfa9e51f68a79101b1560d470019a742ef597d3fe17ad7e76afe58e086916b2da0734ddea7fc1d729fc181f44a4d5bb16b50dc366894861d8be7e3440c01fc08d872823b0ff3e91e62e33e5fb718c3a09f22cd3810cc359ccf645f7f55fa08054d28da7bca35a1d8f9c6fbd516bbc4a9bc9bc459e4f2338afb8f9f0a8e4681e741d624768df3fb00ad33ff8fca77488c3d2fcf89f01ebe6b6f7ef20e52acfd8fce7519a72dc6f104072c68c0f17161fd8b78cfaec57cec0d9d44d7389738fe6bf6a1525bece63c28f5cfd6fa131f770bcdb5f2fd2a7327f42c22ffdce19a7f34fea83ccfc2358a95e614d093d3a968f1e0fac1c018d87dac83c9d642550373602f2f06d3c0949e5769872acf32aff4edd5dbbc4a9e43b093d21a829cc977f64172a23007c2f87ff675b0f9f3e29c385f5d56bb5c6d41839868fccd12f85ea12f027799f8eee51a1622a7053a8b67c740cb5aaba1b39ee4d35338ef1d036fda5aa133d67b3dbd2ea6eba939eb4c4dbf085cbfe52f46f9f4e5b53dd5ec75f032cdfdab75f5af46365dd851b87e3a5983511bed91dfd0febc4c174b4dd61dbda451e755b9df94e3cbe334a8a9136ee0445cbf93be5a6349b55f603ebe1e0e65df56881939cefea5557dce413b8df26faebb07fbc4f87c5bf3b993be43e61acd337f17e447a233ebe9d11a305ba3f2a19f1886f0ebe10fdcfb4abedba7dc09691a6929ba77f2be6eed192e17f4c5a75803eabae3be4955dbe4246a2ed1f85acaa9b4b93f5dd15062f7c3fb13fa98cc5e51d208617d8cb669b4fcc55345a7b16ecfc17cd56a0e097de2f08efcdf68bc215f643a19f27d2a1ad2f8b9ceb13b3aacdcd784f006ddd46442cf39237a03a246f3b8bf49c0f6cbfdb753c00bb13344cde36eb9d9d5e6f8911dba479d0e20d12d7bb807130dbae92dcc0501fb498aa752e93dfdbefd17c16f622eba4e0b7fbf48f67e5fa57d84d66017b4e3c7fd2cb2d49cf2c8e74841a3099d0705ec9132b684f4fcb33dc17b81d138f495d7fd0ebcd13698a7f2ba52f3c59fa33cd330ef469a46eda71dd16a9f346274abbc32b0cfe1390bd09d5772bbae4ce33a467b0f9d8545a33e2199fb722e03f3a0acdceed6369d62e505a40ebaa9f45fa07b79ec594a3ccba6d342fb03f9fc024f2f8a51d19afc9ce47116f7e5f7107342503b51f0535afdb20e05bfc758b81fd6a490f602a94bd76af1f37540e668dca8db126451eea03dad88ef2b9fbfb9d647c3ef72cc899fc16bfdd9bcfe377f36f19ec99865f167a3eaa32bef8563a4392d584f73cc67639379517cf7146e46193a8f03c7398602964bf8de01f0219017e46b087094c0617cc9627349c6beda7357b33f3288f540937456a38131a56b0dc5488c8701c513f578373406e8bdb9468bbcde2bf8f47f95b3bec19760fa3ef53c21247ee1eff4a76538337b602cedf9f323f669efd687aa5d6b12df1119e37a5e7b12c7a0b5a5e26a51718bd4f2c494fa67849f9873bb308e79e139d3264c0ae65aa263d6d87340e315c6f985d630d789fd01bf08e513746d8a7ff9a4fb4fd91b51ab0505d829d57924edb39be79039dd05eef4d7dc0d708e6a4979daa7f85cd84ef5287774e074d09ccd5871f6ab78ee7fcee3a4ac3d897e24cfe120db68c8fc4d38a661fa0e0dbc4d2c8ea6315cfd7a2f7349fe0fad75954d57eaf5f23397aca19be7a9c0db07b6a899df599e17c6f9f93eafe4a2c9b3a8de53c5358ae21ca9fe4ffcf066be6732d6846b1aeb78711ed55ace60f8792feab9c3e4eb37e7006ff273f69f6f7289decb212ad9f6816d2c06ced2bec9b7fcc3b55b3a0b18f7d362978c5fb08ea2ec6be373189fe11b8abdfebcf3fa14ab82fcfa5b7ca20ade59e1076b141c42e3a2d2f3fa67798d89dd8872e31869047bb36eaae9496707c430b37b3991ebcf1e8bf8d638f7cdcfa0121751651ce9fe95f06882cfae9857a3de5710ae81f5c6059ead2295f83b99e6fc0d9eb200c556ced3916a27605ba6e21e6ba9e685681461aeb3f15c598f623e14b3b7759a37f7f3c8025ee05fec3dacc6974ceb8df8efa4e6427cd6b2efcbf491ab3e30682810bf5af67f89afced782aa67b73176c3cfa4581bcd3af4923faf93b874c9382d255f0962df12ffa6e15735baebb40fc4384b787fb60e594cb42969d2f1f7c1f1a878562cf97a87de23e7ec7ba36cc179133fc7c2f7c7182be3aaf87a05ee43a8e1973149ceb2fb321f186f76cb19dcf0a54a3ce3fa3e6a033608ebba57b98ce571fa29afb87c6f51db415187037f0dcd19703a738c66f5ccf829d7383e1f9eeae3a5069b26e83d905ebcfbcedbc074d6b11bd3bafe1b39e748bc0d7d26f79e91d43fadd47f1b7f2a9a13f7fa0942bda89fca6704e324fd3be77cbd469afcfc82adb8f17915cfa7f0c33522943ef7fd5cd668bf455b8e09b3947ebc6403209f52b7e7613c0dff7ff91926d45d454da921e66208a0efdf96e26014634eca35d2aaa6e86f720d0b758632c7828cd5d88d1b7ab66a6d3fce1bab6a230a3e6eb267f8b953afff877dab8ce50eb37a7f5ff053ffb4cce7cd47478c137abdc9dafe8b62afd13cced1b98c7da4de8ddc7993ce7649eb9cffa8d655c957bc52ff6052b29faaefca1cbccf3b790e18d7f29e7246780570d5107f41ff867ee23ee19a33475900dc71c47f56d8a33bfde656b47594cffb5b7e7bd937fddd98fb9fd554fabd73f7e731f69fb778b2fffe39fbcfc4d41483305bda839feb38ddd645fac9b9779b53bb9affbb75cefdc35a18ffc0b9f4c3581c307c49ad7ebd54fbaafafc6a6d7896277ba5798b4aadabcc63e3515d0c5697e3f52c8bd622e635fde6f5d794e2931be76cb9dffdf3dd48920073366c50ec50e6787e5f738e20b78fc627691a0f76fd688de30cf15a357145ad2e65b4be11df95bf2fad7b29de25355f14cf66adc01b617be1d95994432fead3fc5aa9752a7c853b7a866b6bb0e83aaf35b526da8b0adcb21c0fbbc4cf1a9b3d8c0da8893d23cd3904bcf759f9195c1717e2725227af79f66fdffda6e3837c50a5ce52983b0f2ace3dc5f9f19765daa7305fb25c823504fe6c989749decd3e86eab8b1f45ccdf956728fc6cff05cc626d4ba19d6ef13b5a7b9ef60bdecc8d8e2bda9aca5f4ebd6a572adf694f38ff31bfb00ad0f6487d8b8136cb4679fa2af0bc7696d37ac36f17f6be27f7e4d8c8d6f8df6ababd687e560ed298a4dae7f07951e41590b41890f09979decdbcf7b8749ce6d8437bfcd7f19509c5f51731ee6bdc2768daf553ffdf2ddcbc1cf8dafd575978c85faf704ec29c90d8a785401df46f2d85aa8659b09b1a5336fb47daff6eb100d56e2a3629c385b131ee396ceaee3b9ce9fa9e8c2ff8f390f09fb0e79be0a8780f89e9362f71f6bd0ce2214839b06f21d768167b11a07aea93f519d465acf3eb075b7a51a8e84030dcf0bc5f89c6233853ea75a8cee1a7a3b278197e1f816ff8dd4ab203f52e68a1570966a5c4e999f00b04866afb5329da20e9b45df5bc22fd1ef34e3b50adfed5e7dd2333566180d55fe1673f1456dfde0bbd9917102b067abad336c03cf9e85a6b10f37d447c7e72879eefd240f4ed1c6497d2dd9513f0ee74b9f7b151cb47c6dcad198c5fd047c38213705fb17f2c1709f5188fe5ed6fc107e54f91751c384f247018f0be662e6f342dee5c8f75eb27335b17eefc4643f09cf9c4afb443986a46f8fe83fb19e9d5b6b429833bc8ed704ff3c1cb5fd8e7da2be1dc6fc11becc0568052bd68d784dfc7769cee43d2be17c441c11b5adaa6b97f462c833935e35ac3789e203e9f725bf14bfc3d773cd3b947588ea3858c5339de93254fccafb6b7e7a3bdc328db1c65c14be6780e666279eef5417403cdf997636c598cf15f824f57babfd17412f82f2663561f7eb30e5e8f79487b4c16efe55e1991d08386bd3609c4491e7eca39c722aec2bfcb713cc377cc6f6be5704a683b90860cce83b395427378d8c0a8fcf37d508913058d06307bc6b45ec3e60bd81215a7fe8f9b234342f5dac6d82fbe7576e77b3f2827d3074d2b0af9f22ecf341feb2f2aefd561298bde308f978b943fa0a97720ed263fa116908ba5e76d7329d07145f630de05eb172e37d981b984bb0ffbc8bb427d0fca2d70e4c07edf7d3c75ccf3ea04603bd48d7d81d5dfdce681f0df1f329b88dbec1e75ac72dcbe8f17cd79cc54e2f4ce70aed57d66f047aca78dc3bce81dcefdbf780a728239c4368fcbe7cf79c8cc97ca1e78f8776166d5f53f5b3744f50f3c3e341f8a567c06988befb017b3fc8d11948fadf18bf2ee6d9c2cf10807f6a9fc8f396b1e8bf9d4346eb70a6f58e71ee406f4748de99ce87af1947349ed6d068afdce92fc003cdf543a8f57ec59e7e6da895c9ef318079eee15c6090455b7b1902263fd594da37f2b54e518eded7d960cc7213369abf17d15501ff2eec40dffbfe83f31295ef85790f908d6a97f551ed17e4eb052ef04fd4e698d13d6d52efc7bd04828e8af6b0857e14b49671cfb7629e75c5f9fe7492d7e926219802e02c5c79af4984b9d2d1fedf600e74d91628628fd3a4d0d3c09c25a4ee9df8de8c705c8fb240cb8e845f9be9aa508e6d851d627ebbd54fe97ce1fe3dcd2fe7d8691ea4213e83677b09b52ee3fd0a879b64457225c83e4e347c6e605b09f991a66bed590cbbe6da2d6003cc4b46ce26ce37675e6a6bb0846b42b1aee53c5c738d56e485047d888d885b91f0c4cd3541f46e9e4ff513f1be641ac7efcdcf80310f64ad36eaf595d6b7a7f17c94524778ae773066e05204aeb1f9203153e0dab76bb7782ee7653b3d030e37324ec351a3e63ef211a8df79ef3bb13dcbce449bea31c976b6d19fc73fd4f7892bfa8cd59cebed1a72d9ee49352a656eb2fc535b57be23f667f687c5a9344fa4d20e947dbf72fca0f269a07f3f17724f8d7be7e964197146357063cd3892f30ab888ac61bc0b3c1c4bfa2496c4fe273ad78d4d608afa48ea39439fb7bd146a52a0dd57c2d0b03e95fa31477b524776159d394cbb76d88c01a01cf03f985b749f25e85db9f66645ce025f63b64dc37c8ece51f4f3fced46e255083be59e60d93e946cf70f6c1c7f3eaedf3b3dc5ee6563a1f330073d870cf39e600e1eaa617cdff3f1bd8bb5b48c03f557847581ae8dfb39641f92f262debc365c1374c128d681f0d769682f0fb00fd74ff7e176da42b6aed66f576970ff1b3683f8a4816b0fd09c29e3f43bcf14790fe1fd73cf9962b9dfd9c712fbfa2abc5afdde6ef6d5910f1b6b901f39805ef77043b83debf7b5f06c70ed65b9de3d00ae5bbad72bb8c67fc796e2de04c245700e3bd3eb0a630608e7c16803368c3c631dae06c6b9e1ac6cd29526dce2926d8bb4ec9162f3f0338cb26000eb9cfcedae3d3f0a908fe5ed33d092cd03e04da1be308ea370ad10f48c869b2424bc36b7fc83bf8b3b6ed6c7559c05c8dffc1a28f662a98ea65e6f4c5704f99eafc0c951da9bf75d076212a869bcc0b3e0eb816674da526afb0b3fb89f11ea18c00f80dfc93ad21a49734d22deaddc4b66f59394dcff8862f33bd6015f63f8de178a81b1fa831ecef3a6add735e127bef37af899aa7d3a4a1fb4d9c609f61278277fdd613f9a71fbf833f8bd301ea61578d6e5660d499c2b18638bcff1fabe39fe476c92019a9b5f61078dc714e22d6603eae252d97ea0e7967dd5bf9dbf44671eb62558478a7143fe75ab6f9baf09ae8d591ec72aae41b083ca1c23d72c81e7e1fc38753dd091957dd3ba4d359f68b4798f7be93e82ce6b08f596acdda4f54a73fbc0d95bc63097b12696f1bdf870dbeb503b1f63b3b720fdbb4bdf8d6345ae9873daf647725fbef8cc7daa2504dffb0faf1b39571a5fd3bad664ad2fa33cdb069a534405cecde0f815fb8151f1bc453eeda83827a30ee90d9847d8cfebc7343e16b5d4fe6319d32c58485c1b1bf079cdde39f0ac63e8f61e57eee5e0cfbba7288f4e81fbf0ed38afa7c0ec7d4545cf0b5ceb34cf0dcd77a65f519e9de37e6fce7ba597279b60d53d8ad31abe9e680d89731773df61bcc6ef2572a107a6d3f2ddec20f47bfe67c23822d8353e45febd3741533fba36f598e1fc5e9cf7f641ff9c04795604cbec3b749dcdca355a817be9be5fc57ec9cd23e7a32bf751a8f0c4c13eca9d51e8b6b3c0ccd2d8740e1f73a2870f5c8daada8fbd0fe66964e50c2397f9900773ae909b1d4edb11e137513eaf079ada4c53d7cfb323d5e988b5acb5c276e93ac92ada686ccd0a3c6c1cdbb54ea96e15e7835c2b6bdc62ecff3936d13cd887c0b31ead4126f74c7f35f63aab7924eb9fb5c419c79e175d77138ab5a1925e47e04d0f287e9ab8f63ed20023f18dcffa36fa7d267194e54641f8d14b18db3bb9e3151c1fc0e759ad19631df73ee530d031b73bd12ef5cc075e73633cefd5ba33e1b881de3dcc4724f2725772ca10b32e057d6accbdb2d953ce19f17a65eed395373596d70072cbf85c10b5a671cf86bad60d3ee282d429db51beacf60573bb5d794666b3e7b76ab73fba8f5057af7eafe69e8a5af91df764385fba8e6af94b64cc05ce5dee55635283d9fbf6bd67a93e5b9927e71bc50a71338640c016311fa72e7f286aaf64d9f8c5ba4cfa8ae72defcd924e00bd3fe64b4a6ef1766e02d739ab3826451e1d817b54c5db59ee8f3a88bc2b12b7f42d0ed321d406d0e70bfe3dfe4c0bd3f8f6733b55f258927e54ce3349f5cb450cb892e7d208f32abfe9dced5e63cc4f740a32d0e4026e54818f52c56d711fbfa86cdf4b3caed91d9c9e35dcb03fe425e0e3e8500d519187b38c87bbc9f749ecda22f06625fecd16fbb73d705e6dc736f8fb8a3c1b0d1c9fd9e528eb463c9cc8181f7df7027e631d8fdd12ade5261e3bc6c9299d0b8bc0b34794cb88eaaebc1b33e0b042d784ff1f9e13c81799bd238a6b1ca39657135d4fea2b70fa0297e6ef70223ad32c7eb92cab7c8835fdf8db69161b55fec39a3e3ccabdd3c0a9686c02c5f5e41e53bbc4a708d778aae649044e9541791e664fce4bb7fa79756fc435f06c81df8bf98b99bf75b6f4bc5994b423caef20f02ed23a9ae29a120fe752e6e1ac5d031e8a15987e823113f85e1bc7e74e2e4b35b7245dafcddc9777cfd5ed35f0d3e7685a3332e7e4c1f7a6651f0eaf11613f116d53a229a59335041c8315dbfbae9a97f53999b3b303f72a73ae5faa590f78de5a5ba3ea4f805ac77587ed07e7d1051f0afd8ee711448e349c77785beb239c9be4f61e6201f18c6bf754f185c427c87a2c50ac01fad91ca72d72f7e13e4cff9172ffc25af9c27e75b98f8260bcfe51fe41341e0afec165997b30e0fecba3e4a37ca1cfa23551c7394e72358cbb10f71c23fb2ef517967b0591dd1de891b57efe0579a4018a7bec11e8f5601b54790f811fb752b32075ff7dd4e231c7d89866711d8e0162dfa4785d37f68d90bc722dd7a0d467ade6ff13d643f1dca37df613c27942e69cf76baee5bf4f486f57b90795e0358f2bcfdefbee05f2d5357e38c18372fcdd8aae075c3ba8e17daae31a2c69d9394f4f2ee370b5af96312bf746fd21e0c2fd31f40829f3190c6f48c78be4a21bb9154a3142e51a63654dad36c6c0f96e65ffc57f1fab496b8f0acc0ec567417dbe8c53a9ef49b913bb69722caea00569865f12e67fc96ae20bebd1326607e0c77bd9313faf16ef7fa578ecf2bab8f5feeaba84f48cebc61e00d6a3a1e291527284c839ef9a7eb07f31c76d1a9ba0cffbed9cea33fc66bffb7f89530d9d03254e35e7e5477c6aba3d98fd135c6a8c2fe1ad6c07849f7f8a3f10f8af5d3b436b53c0ae4b7c82f47731c18cf839c6de06737d177823b47eaf58a7ca68f1fe40fdcb771f123f57d5c99f4eccdf516239aca3654cd3d05d26bea79f4333cb68fe9ff680a0bd4cf4a3a71877abef479dd7e34dbec3bec1394019274fcdd9fc93be1169dfd1fa2fec11c5f99bf2fd2ef95db5bd2535fbb9b98ea95e23357df9a59ee9b20e8ab2b6f8dbbdfad43e521d58c22ff22f70e0bcab62f597873ffe26370e8e4bff7bdc388db6469ea3dfe4c551709dfecbbc341257135a83a26ed6cf7969c46b6ef6ea1c22ab97307db25bdc3468cd419dcb1035cfeafbf7991dca7e5ad366fd2eec8c55fb26ff3e372fb2b5a57ad5f247bcbc37b91b7fc0c12be6386ad765d99f94ecbfa045c735d2aa38fd926f2ec506779c1dff6767ff7fb0b3373972ff115b7bd79afe4d5babc0a113bc95b82ef3d15a1775317fc091827f7ed247446c03e681fe7d5e501a73fe467ca91887f986ad7705cfdfc112753bffe6f965bb5df53e17f207d1b6b4066af5e4d17a99662a0c0f60d0795c8c39014ab68a8c65faf73943c02696f31e8c27add2135bc729a1e6ea3c622d41d0f74adee7cf67752d196347dfe74a9c13ef2955f346d1dc45edf769bfe8b8ac2d50cf3bf1e4b66707cbb0e3f775aa8a4f096eafa9b799be1bf4143e10ed87877880ffddc0d1c63e63f50f3deba596d396f9222b3abe7c2c987eef4dae498a955fec703f87370df1f5d298e53784df795087ef1dd1e731f7ebf2b64d1b1ed877b8b66d75af9778c9aa3cbcd2da23d8da7a2e9365258756de035bce89a3da87c2baa9e5f4715eea387deecfe1dcc3a7c271beff8fbd376b5354c9d6c73fd0b9d88069557229a620689a2928d39d40269882dae5889ffeffc48a810806d3dabbfa9cfe3dffbed84f77a5ca10c38a35bceb7d6d2b2aecfc633850cd17adf53a518bce1270b08c30b6645a408f43bdf783cb0176e498ea5a9ac89ffcbbfb43c0ae7036a2e653d09a2fd3c4beef07fc057acbec4c9ee59111b4f159b5dec353f8f13dfcf29dcd8170bbfca0f6fa0eaf19fcf7b6669c333f70bf41fbfea873f654bc10ad3835d68f487915ba6a7a54abfe911a7aa3079ed6b21b5a0b042f2435ea7d8c23a3238f47f910284e48f8cd37b1d6efe4c521d69bfb5619f89b13e469e11ca03c0df77a51e97ea5f9f9ce5c0ee5a928a29ea507de8cf14af07c1281676f26f7f8322aed661e87f6c0580ae7fe5764b859bceef6b59a7c1f34eee1383e0a2e17ecb4733388fc1e78ed518c3ff030027654f8fbf7f5167c6de0c3f087d64be0f54f510f380a705dc9c87f848e760bfd39a7173bf8758ffba38d03eb9eede7ed3d5ee30fe273a1ee28e073977f149b0bfc0b4fa7e97ab06dbb8e556a5f51cf3d84c0bb303b9b8695133bf3d7ffa3185f142bfec7607c3b7226ff5e7c6f7b5fc0d293a5ce7b515b87f7472d87f0efea69805a4b474f03d773b062fe9175b7df80d8b2caefe8ae97555c64dbea7d5c43dfdee523d32f6bb1ee0feb82ac8de7b369b8b7c8c84fc950deacfc19c6007ad0cf73447f0f5d1e9f1666f15a6b3b03a1e6f29df6faa40dbfa05fd6757d4bc09f00b7f080f9ee689ca2226638118ea709cde33e2e5b7c01c0b5f43bb1a973824310b1e1ea0563145f050cea1cecb38df18b1be43bcaef949ba5c22f820673162aba142e597d83c7116a51816276cccd51e5736cac8d5a611105aca270ef0a87f91229f225f1ed9c62bf38ec26e62da8feddf8ee027842d4138745b5daf0b7a2febf88bface192baf1b1ad5a7fecbe5968d8e6cab337a1d79fc785ca69dd7f8bcfafe6c8eb6fe6852e054a7a1f3bfc6fd2e9677d32ff48a7ff2e56f81b5dc30770b9dfe09aeb799e87f0cd63fceffad8d739cfab77ac695ab6e36f1bfa09a191e7c21cca68af0d84b9b60d977226f178e51b1a83d0b385bd17cbb37ee459e7a8bae73951fa53e0c4e4e7b517e6f1d6da87fc5a237c95cbb1051c52c9b8e28b0e7c578a24fd1415aa44cef89a1db18fc8c743e3d3f6b98df3c090ffad9e83e46675f4cef619ebeeb3e79e05de315f12de1a64db59fffed03c4dd72a39fbfb59a4538d6b9a97b1f35899952b8c477841fe3cd45246e47ec33ee5bdda617eb7bc13af8c3903459f50d0feaf7a4fbaf2e5e4bce530b3549b0dde5bcbe3ad0d6b898e17874b587273731f43bc95526b5d9d2b6dfaf41ce616d9a616bcad8073c058c3dfc5ab6e49cfdf773af03c2ef28fdedfca234f557ef7fe2856c07105d76305eb51b3a80dacfb8e1d7ae88d716f9bcf9639e9d09f6feafe93b9873325f42de963d9a2f1f7f7c7b2aafbe9f59efe07c79960bf2b3b023ca50dcc31cd692d37ee6c21873ae0428716e540a23d07dfe8a8d33daa6f222f3fa1332eae7184d5b0caedbae9ad737c57339de732f8417d13662fef6a8ad7cee90a537c890bf5e9035d4fc00dd7cf5cfb93d7d2aa6c34c6e58423de4ef76ffe0d5d8fdadacaa7a37a56317a3ee46f4a902346d716f8eba946bf389f9b7aaf20d159b9b2e77a277afec4e7b98755669ae489a197e8bcf009eeaf4bbb9ce66f6b3adb8f3e23e91bbca473453dc663570a3d5bf8ec7d9deebfd14de7e22db1a6c871d7a17d27ad3c197304576727f0be612d7bf72936aefb40c921a6c6be76b86ff01d8d353928aefba0d436a11766e84c14fce71cad41f11eef8e9625be7d16bf47dfa90b9fc8f3d5b3b1857ff31a0eefa5965ae3a350c7fd7430bf47bbfe0b3b7be13bfeb09623046e1588518e2b7f8f9ff56b87398180c307f7a1875be0e5cca3ad7df868c55437f70ae6ce98893cc01437b0b5b3b848f2447f6ed35716732c802117c698d32d689d93aedc29e4c702e052d1e5682cfa70a621cb800d2896b0ce57de3c0df8eb1683bb7abc35bd8d8e3cddf319f91fa1af6571b104bf96f640126e1b6447bf560ac4a1bd95917fad865ab1f2dc43387e4d13c52d4387e70765e3724fff268bc7da61e5b91b619cb6b34fd637f608c656dcd3700ed6b5f86a76604f6aad0fe62b66edda1a5d3adfbfff3c07fe7cae692133bdd93a76f71bcdccd6676f59d3353d353e060d9af6b08bf75bd04bc2dc671c3ead2ddf5c8d75830390cfe95536948f4dffb7f1551dfec0e3f82aa675fe30beea148fadf3c738ff34c7d767fa37761e76e2561ed3f7b9abeb7347c3d4f4e85871fa349d98c1ba1625fd2da7a7557468ead56cd8e3fa5cd486b96f4cebcd7daeadc5e6da623a92638cb5e16a0465dcc28dcf3f8fb990d446bc9fbb6f7329d3169b44b73b6aa37f48c3b2ae9f59ab03fc967e36afcb45cf4b1e2ff69fa085f9b7b527db35b3a91ffc7fa09bddc0a2f5a9bf0f6347fe2605beb50d7dfb515c9ca88fddadff4afa161e7d564e3ffe517def47b4c398bdbfb736feb775b4073fdbc66dd182b5203da5fb162d614e23f7df8f7dfebbda656db6b65d1b5aa8b3c17afc4ddf0a7314d77482090fc23e2a9251e8e3be5df079b17f8dce74f09f268df3ef92dee32e4536dd01ae4bfb1cfa33cc410f5cb0f3f4c373a5e9b0e29e875e99422d4d23277cf6b30ceae0fe7c1b03af36f0071f905d6fe30caeb4db669f6d7cb29dfa62b5fd0d982cb7ada772709eac2bbd81c95a1bc4865e069e947ec862cef0d31175eb85ef2afae9c3976aba66b5ef08f14cff99f9a15b498c3908fed11c4a381e63b14b2d36595f18766c0a9c741ad145c939aef95d3a1fa3335b3f9ae323cb177c3a34ff6197813f481325cb312e43db27c3e486e609f37d129e0a8895b33ef404711c77f07e644dc7a5f6b37aa72b9c659f0e7917433d99e3991c28b33ceebd1e180e08fddd08b3957795516c3421f771c756160f07bfd0de8dd6323a438b9597c80457b89fd2b3729cecb01e28e02d31f7f55d5ef7dd99d51760ad13edf45a7eb8eaa124b991a1305e3f4cc33a47ca350fbca78ae7ded9087f67e779cd3fc63cda58bb01e657e0441f1ccd7192c33e299669e059e7c49fa7512f3975f8e57f7b0f13fee67d54c429f287dbb8ea79fed32a0ff428bf31e419045b3f41eb6aadad6bba0c79d88d17aaefe95be8db629d169e9d9d0ddf72f8d6f89bf879fd8e6bff2d529e8e350d61b637baced9aa8e6ee56171457108e663ea98b3bb9cd615eea913db84e67651a8a7a927f865f7715b2c37a312fda481fa1d16bffd2c1b749e7df77965d15a81fc179a8fcbdd9896682b935ef7cf49672fe93d7f4afbc9f51fe7d1d63d525cea1bb1bfd3a1d68b8b9ce4ad29e6f602b14558e4dba4f67d732c7da707dd95bbeafc1d89539771a1b78c49576e4a3cdfa6a506bf27b9a6d82cf21387e5a8ced6767f839d191d5c0fdbc850d78177c53c4d4ebfca6549687f035fc13e529eeee4c666bf56fe00f367a333624bb825f159784e7cfbb6f230e74175bd3a878e80bd017ee895d7f403eef966344e08bdfe66e5f5b70ee89b40bc708f9f0d7887a93608e340de6a686d22df0beac17e89f35a4dad0a1afb430f40b3bf0d7f2707edeabfa9574eb8fd4fbf91e7f80627d0f87e1517bf3ca7c1d0fe49c6127366f4a493353ed2fa29f29dd1dac263e14b7f7d9fc3defce50fcdce3d827da036fbd6663f49fea7568711f8df0d32178f715590b9b993b76c70be6a97c0b7b2c8d17ed6ea762ad82cb7fdbb621ef7cafb729990d32678e9a9a3c931e844b945e0bb07d098e2b14354031e9d6146be8d0ab50c9dbafdadfca5c8d37f719aff624dd4b988bee9d7ae8639d29e39df08d915e09f68b529b5facdfb42229cf3cb8e5c63a316c3fa70da72febefc6d9fa3389e2f92caf978adfe0e3d0befd997c09fa1f5cd6c3fe8e5b3fe2a11ef61b6c43ad8de8e76ddfbb90b9f8d6cacbd8b0bb587fd6d791ff766e0f7117f23ff30901f3627b19a9d078a8afb3fb6af3f5af61d3a5346a1373b93fe0d71eeb794bf7e76463144001a21348e4876680d609f89e2502006df47eb169b8eb54ca88f4ffc7b8c4d897bee25f4cdddc4d16e9122936b6a37a215065868212e6d892f219635d45ee88728f6e9850ed39fda057e4874c49273bc453185be8e7aaec48f1ff8cdc336bbf80c98e240d1610f62de666e5cd7da31018d3741e383d56cf07d67e7c873093eb1656cf89e5cce7f8b7bf6392e1a751f822bbd26ef659ff8788ff495c05cf756288e31ac5ca83d61dd1f14eb7f45867e8b4b4dd49e6c19efefb50588be63dd9eacfbc29e74d1ba719f0fa631d87cf4f8fca0aa4ed7f64f58d75b1eb39bab41eb79d05107e3cef658516514a770f59f0e7f82ea0064b7a88762cf25f441b2df635c3fc52821fb29453da8617c5343e13156c07b8fee3d0a7dea27a9e5643c3b27bef585fcd32e3d2c6c5b856b3da2fd8cfcaf2fd85f2ff53c451ffafdfc2a9746ce4fe11e07933d5b678c87f3fe3d570a14f518122cfd02ce1ba23138ecbf603cf0a5ea5befd298a2daa2d573a37117306ed30dd6339838da3a2edc6cd5b20fdafa8df8b5c0f09ab0ef387bb6548b49c73b37f2556043c5f3694eb1254336aef5735ba837d6b5923b723fe279ed4bb04ebeffae80ef536b78bfffe6b9fe1fc873857e26a198c62f33d19f68f5e36a7c843c1ef64b880f05fb53c3ef08ebf56dad89988bf185abc1d7f90bab7857883d5fa4ba9f5f8b4d2f443fb8b5e7aecd9f83f9ea88b7eadfff267e57efed71b06de27ac6f68dace987b9f40023e656794a96eb6ad85b7e6dddb53f59dc437124b33f68cdb1ba7b7d0fb6c4ae8f9c11559e86f9ba94879cc75a5f84b96f8b91abf3a1d307ff8a7a96e8f76cf44b6c5cf7a137ff9df7ea8af5d87bfec7da5e85c6587d555c075a6f65b8b8bfd0c825abf7daf4a761fc37c065c1e582510c4a726ffd9b605b313681c666298abde29efb1528ee0d8d33b5d9e8ef61a1ef23d00418ecf87936878734825ce5ec1c15e13eec919e68e819c6d81c64b3a3b5f685cf7fac2d7b4fff8ed3f8a7dc62d598bacf629ea40333247e47d85f42ada0bd5fe0df64cbc676f9d16eaf6ec05132b2b2c498ed26c3bc95f784d7efbc8353a01cd1effc9e16b92cddd65a5c656fd38ceaa52ebed9b3268d9546d5d9887c5c7e6ebbf5ce789d81dafd3a7a5b3b6259cd1ecdbfd753fcbb5828717cbfe762a4b92f918ff1012e46fc5f836b714bea13a5f6fcd9c8f77f8351f80d6c02c5d7cf97f6e83e9e42abeaf78b5ded1ce877723ee23dd0869f22fe4c37bf15f8505dbfa358a18f927b2e4753e12ca39c519457a0ebb9f0dad8083e5143cb2db98bf3e3c647b80ee0351fd1e75d3f9dc23bf6a87d3c59df42f57cdf6806778d63173f4377fe086c73d73e7bb02e47f2e76e555b6be9adda35f03eedb1ea5dce003c5ef738d3f8efb569ca7d5fbbfb27cfdece05d391531b51feab4ecc05c5b970fe88be098d1ce750db7dcf532b07157aef223f618ed58efa46610f03dffe5afd63fc0cd3d63cc745be5d79fd2caaef27c8cba9c7d07f45d73b847e9845dbf9c134e473522cc9fb832eae180718f6beae7b4ee74bc42f093efa6fc75c09df37558fc7baf9e1a197a2de47f12d6681cdff63d885646cf5dbe315a18773d7e08d10f63dd6a0b897ef02eec7a52a27e86fa2ce2fd18b78eed47d27e740c38fb9b7b7c137623eaa768ed7357c42d779c66954d5eff77bfb511fd9759d834eeebab6fe63c25d70ef6cf9dfc064e3f7fc43786bfc1fed715bf13dc0edf77d9c1ff6419e6962bffeb8cf917078eb868fe16c4ef731e4758e1ffc5fc573899ec7dd88b1099aeb244f46b32c50b23c6ce9a310bfdfa5a1cdc5098ffa28462db6433e5f0dab182b7a118af1eecd7c79a667514363cd2f079417aabb2eecf5e5c8abee89f11b9d35ec6de8cf7f98061d1ff15c43ebb473ed117efdf67107bcd2c3734862b4026b10b6e351853cc977dad543dd09bdf080f3d4cd1cd21d0c9230bfdfebd873b158673d7ed0e13f76e9c8f16be81f3cfbc37e6977df0fda8fed1c1459d77b2a224745e3f3fc0fe12ad03ee5f469e3ddc497d336ed96aa5e71cc3fdc3b98fc1aa726f75fa3bf03afe5063ef046b12ed3da58def10bde686f03e3031b6be7b837db07c5b55fe7cb6fc38bb7f2b2fe962f2b6015e9fbd4b51854d340718b7e88c6ed7b82e311a96385baf28a02dfa998537c4e1d2f48a39eb50f15e443d7f3a6da3af4a04e7c43d78b0c5709bcbe341d6ac7a817b25ecec478aed75e362bdfca831ed7db49f7d872768e7c4d4e0c77c3e5c56a383bad1d372b7ee74cf96d40efa9deef56f1e43ce3defeffe6cffe9b3ffb6ffeec77f367bc8646676ee69bdafb6ff51eb6e5360cb697310ec3d19e3febda63bf85d5f8b6afbdc9a9027c8d94930af433a5d0cf246effdded01bbd7bb07bc369e88b9003ba4b8d29cf87d2d390011a3d1b9e73b711e9dbe5d0b06b98ec3bd055e980bbee8f6357d2feff5ee7feb23d771d20413f75f9ffabf3e75a74f2d7244cbcf821635f6ab2b7f836299ab7dbc69f739ff640e73ecb29c71bd0fe5d3d10ac8211ad7f6bc97e19e42de6f78a4378defc9ff37e084bb301a9f8e3887ffc5ce3c809da1fe5e779fd81fed0b5b14cf50435f0d5bfa60886fb832f41bcc71935785602bbaf4bcbed157106d27e4d139ffaa05a7fdfb79c8a6168bd4ca8bf85ef5c8d7b46c1926aed346ff29ffeda1bc23e3a0b0f4c552f5ec4775c8c07ecd301708da435dbd778fe616dbe7af35d7fe3b39fcaef9fb0fe255f8fb1c2dd538d19aef29f4dc4de8111cfc78765979ee6daaf09ac42d3ea7e132dd3fb8ff7d7f1cdd0ff3be7af90f82f7ff015cf7c003ad61cc8b91e5ec9a63f71419ee2d2e019f4eb0d8fd1c3de7aacd0f2276a2d6a758589c8e17e4e1050d9cbbb117e33cc73964c18febaa4feedfcbee5a7e5bad18d93f6a6ff159324827867d06beeded0c721a81bfc158a2569da87f5c37867b3f507bfd4fa8139371aaf96bf211c546497beda93d768f8ceb3929b5327464aeded9df321eb022cf23a36b9d65bc6ed2c3cfdbc99f57eab837e137d6cc1c9dabbe59d3ebe8aa9d0939beeff50c38bf95be43671c578d296875062cdf3567fdc8c8b609fe66670ef67bfea8d61ce8b7ebb2b253355e29b257d5df8831aa395810bbf2b6c63c78f1d6adf4420d75bdcaf1ba9c38973456dcdc1cbe5e67b78d72afef3536f42d687c334dacac914b7e748dd0e733f5cb1aeb20a9d0b707f6bd47e7f8b2eee626226727b6073c1f658776d737318ba3c56691658fdc133dbf3fb4f6518ebe0bb87789f438dd12233f44d0bf95a3b3701fadc16f94a2ee67aff7b7fec59f8fef5ceebebdc7ac3b37bae0789e1e393745fd31f0cd6adc2a0fe7023b3995eee550f07ea8f96fdfe4e8843db33ceea3620e792aea73deeb53c5fbfa4ff212fd01be24433d503e775607ff6e0c38bff877b06066cb9981fd3dc10ff97dad533c16824ee9c4616b89e762af30e05423fa0f3d67b7a65d8303e1ff309fc0eccc8d9eed74dd4ed7da322ef26da8b825d59ac63d8bae82b97c07dbc0b337567949ad1ee19d76e234f0fa1b7398500dc2ed94bf9f3ecb619d8c6d291ebffe9896ea26f4c33c32d44be89ba7c8537f205f3670fae7b888cfa1f77474ddd77368a85f71a9faa1679e9d42570297e42c86aa53f5a52fcf36c110f874fd8f5fcfacc6a9b077e5f310e45ca6baf407e4974881971f38fbf4af29e30ee6b56c20d7b10ebcd9af86964d1b77b9f307b56cfe0f3468f0dca37b2cd395271f43cfdea3b3381a6fc8d90cfe31e91716395ee89a8acb7e6caebb74f65b7504b8fdc9e6a8b5cf4de0ab2cb34a0f66b163da119d7a26dcbd453dfdeafe707e18d72e2d9c47f28adf720a35b51effaeceed1f8aab45deb406c76047afd47f04bfe1e49b9a1ef3811eaeb1b167fa5e6be07f5f9ff78fe2ebdacef5079f43ac433ec847887d58bcd63bcf5ffcdff73abe353de9da7afd6d1ddf3fac89fb8ffc87463da583bbe49de796593c536ea9b28b8ff59fc7426dfce54c3b97ec775e9f53b09d4c23c52f419faba6ad704c3a347a5b632e1a0387debc8eb561fe51d44b4e10eb94dd3ce4c2d982e322d044add55d22bf4d674e27b99eedab8839c4bad2e704f83c2c39196a725484688ce4a8c03e00d65fc563688e937d645c52fa6e50f718e96f9e83f98ca8cf316de679972b0370cbfbb8d44e51a9f5027f03989f10d66d7e0a7bee3e56d2344067a0025c13545388e80267d4a6ec4d347f438dab71aabd68837562e9d90e3c7586754e8c94707d103d3882cfaac61cb8cd2f2dcfec878ef615784f69e8e5a42f515542df3c56ef9f9f381d1998ff098d9f861bc0b940aeb5fe1b8e678d9b7bf67ecdf903bebd5da4a8b7d001dcff19adf9a94f783d715cdd395ed32160b0b2c49fe56f8df71c1c718c997f91fe075c3b1bbb37345654bb0feb662c53e457071547c4adf1ac4389f643de089fc73e28d553a43c1dc5b58735334c7406385a09fe79a19f92f6794d13452d57bd57e0620dfdec823eafe386fee93e14f087fe6b23b72a70276d65512788d4eac242ff0a1dcd72fc592bb691b31d9bc853d71f2fbbdfd030219a7685fb44e6bd48bc3ed14dd5b29a661d5d0f9cbe1c3e6f09472b8bbb592dfbf6fcc31c513d32f15a1427e71bc08df4c0fbb572d332bc1df5f7daf1331919f379338f8d6384b4d276833dba4d86c0d978890b55597998cf07f3fe5cd1fb6c3e9c5a1dc66031d929683f07b06e2b57cb24cf74a05a76cd1a62db3b0fb209d4249af33919133b3f845ee15b8235d9cf614df3978e6d8baed65d4d894e6c0ed4f5fae704fbc60a3adbcc61bcf95070ed24d8badb0560a4aa79f87462886990ed691dc7977d6a0eeffbb8818efc247b876c18b92e689fdc99a302e6bbc0317542fa27a6c5209ddcc7a5a4be7e3dd98457026a058625afbcab84c61972dc06bcff2df135d8bfa1373f052d3ee5a3f85862233ad7517d4d54b626bf91e7bcadc02e726b5fbc77434717f8cea0ef0838d46e2b2f3911de23a6eb29e40317877445c69ceacd209f315672e0df8458b8a6d143f081e9bbdb8e9b7d27586ff3e559d4a5e57ccb967588b17677e6b04da3858e0b8aa7bab0e3fed04cdfd87ccc89ae14d633897a26c939b6dd5753e743fb27afa70838bf963501dcf19b365b6b778ca1be893ab811efeced5dcdb726b6428c95303e49cee26143a388e1ed31deb1ce19003689af6d1971a11e2bbb9ab139aed621ff6efa261c65fbd0b0f328875ae88e9e2f537ab60d2f69e0d9471e53cff547121ff77ac2be6d9fc6e975ed553ab65a68c8fba8c86fc9d8623c250fe867b271ec5a33cdb1ef7331f3a3f385f63bd10edcbaa7a087b9fe7e1f7fc99d2915c7d9ae9bef81681abab87e85e2ebda3e143055e459380eddb61c2f5a674dbddd369f097c24f980e75b970033d9f29e4c8ba3ab27f2b32da73f06ce4be5db9ef41a178d57e2f3d977fe0017738bde38db0b0d1f3094a362467a71bb7d1be0cb239a6635bd9f9f55fe10c5f995e62ac4f45e7fdbe273b0b95875f8646db6855eafeae9cb23cb90cfc1364b043f773d68c779de7bf731f42f97b5dab946b903599f06b28b8bc7fddf4a2b54e0a2ac6b9d1df838b94d1b91f799bed3c742f66b5a508e9ebabeea738679fb25d05713383cb9b8dde4e270d04974381e459173b1c6933a3b63ae758abd81fe10e8fb46bfc7b11a6831a3f80ffdf73dd721ed5d76b42c34241e97715f435697fe9ae614bb41e3107ebdeb37b0d9742eb02f43d70fbad78f5a7fda1dbb5ee926dfe3e9aad6431b470ef2e9f9bd82c63fcc2223df88ebe7be9f56d7b3ae71bf76c62773057f8fe7a3c43e36f205beeb8f93b628c68ab66dcffbd411af0cce552d0db07b35be229caf463635f0ae793824ff36c232eaedf388ffadcef7b5819f4c716707d3d8633d3a473bac7c5b027d1474a6437ec42d63c0a5d98067c5351af5043eead83a27ca13e45e42d04cee7379228c358c15f7065858dfaafac214558e0ca27fe7cff270eb1ee0fa8e768c7a33c91c66fc9ac79a74430dad2769e5e98795bfcfe3f586e480e05df89e1c1267587d9abb7cd82e309ca8d8e7407b2e6abdcae25ea3da078be753fdf7edf51632476b41b7781f4bf4eff5ebe7adcf1a2b6e06d862811b32bf2dc9df27e0a7b6e43bb8d8d66cf060012ea2880bf5079af3cff185dde79b7a0c9eab11892f1cd09084f7f8b6f7a6c52767ef58b8d7c4736f8951e397cdb18e73dd4e4f0bc1162c517ce9776128e9fa7e91f8189ad8e2c1d61a1fcbd0d7e510eaf9a21d053e585fda026f2ed881701f7ad70dc4d968bf175a578e9e8eed3d7f2c8fb7d6395e0f7ea17144b12fcbc740ac4bd7493f7d0c77477a4eeece23fe2ff4ad32ea99e9e426e1f89ec56b90ebbd859e7ee88aaddb301814535cc7caffcebbf3f5df2ad6adafdbb6b1c0ff410dc2734f94df3f023b9817a68173a8845758a61c2cb8860eebba48fc593bf73f37ae5c4e09d67b17d6d074ee6ba4dc1b03d7784e63e417e3bc491628b37d68a077d20fc83f9b7ab8b7664538c9232540369dda4ff47e19f43a14b343e0cf6ed3a1d6395e78ad92bd313ca8a6a16591c1f31802871facf7b8d4cee15a837c700cfd5d4f5c3d7eb0c3baceb33c2e059b5d5f0fadeb49f459bff91b3ea7c9b875e058aadf01e682ef795ed4cef6b0d2d3efd08a5515b457569e9dd77d089c0b657affbbef7cce4e8c6f755e54b605f20e8307fd0e396dbfde4c8eb7561e6d5b6c1a5c1faeddade74a62d3ef6d2d3b1beedb517c4fd1276ad87af7b3c52f6b59071acba7c13e1c6f52abb47fde3f475cd582bd0f369f3bc75cd5baddcb83d2bd89b12b688eb07dd60f71e166e17823ee9971b24f8c149e27e8a1fde59e6a391b18c34f273e05c3c1afce7c2fe45dd19ee77e5bc41437cde74333c05a2beee66e8ed5d062dfe8bbb1b24c2da55ad756838f0af45c8ea16fef2205dda7fa6eb4ae73b3d7edb1e0e3a2336a3d1d5afbc8c7f81f660f218f051cae5638bc72f1866dae3c7b137a7d03f06c807519b0d830f0ae87a897e05ed425a993fb335283e7e20f341e32d6f5a4f8d958724fdcbd8063dcf1914f09b689bb87bd718c7c83ecee52e0e117734a73df2a033fbf1307d17c5af55cf1d6ca3e962c7f7b8eb6afecbeced23dad702da1e23d6ee423f4322ef40a4731ca5b9ea9ca193679dff238da4a69b8b5ce91a3c5e6fae93455700d2c2af403e8f7e4d713e59c9dacb5e50aaf75b8af695832e4f5d7b0e7a5c0cb4fe83c4d94e73432d018bcc299c4ce7223cfe312f996c0b993e1b57a4167041abb1bb907d46be3c2fdfaf066079c1b77f731c61ce31c804339577392e704fed67da0a469ace4dba8c88b9537cb4053dcd1d07a2ba35e98c7a5867e5f443deb08fc660e9c635f68df42fd1ad6e3aef6bcda19e7a49669585cfb38ded99d7da30fbcfd0bc95ad8aee5cd97d6abedaada32b734cf5587ee32346cd7fa5c4af9ca46b6ee452363f99c623f92e20db55ed4b37e05be754ebc3ed66430e46ca52cd3b807f5f6b639657cdb71a969b08edceb099fbbafe9b267cbc186ccd1f888f61e5f63dc474596c7452e4d8c19c7e56c9f1b39952a4eb9853eaf25e0be87eb460e8bd5ae63c595d01a4b0c156a3d0b25d841fe62ddbf707a04d57dd959cd7a52309f75f337275f5609f61c9dcbc0792947b43fda9b3763bcefaef18239891383f1f976f4346b5f986f93d71419a8f41df85c11fa6fe5f577a08739cc16c9d85dd3bd688ec89e15ae93576b4371f38f21c1d797282673f38f62499ed1a573d80bfcd714e331903d011d1019f9ebc46797a36276083dbd44b1f807a92fad0cfd6b5562fc4608792bfd668ee47390a76954b84ae89b0cff110ef16f626e1e7de3e93c059de6bc07ef02b92d920f833eb139e861b95f21bc0f5d8f0bc3dd06deacdf66bbdef5f9ffd01a56386eac5d3a27621e6c5de33bf4fafbc4c8b388e484e3db2e75f563628e2f429f5cadb65271237ded047b8b9ea9f65d521fab714d34b823f073cff5cbda1c1e52b10eb569ab3991bd5be74902fc521e0e918f24f22435fcc5f14c46b6aac927c3fc30149fa4981b364e5b9fb725b78ceb4d179e0bf2601a6a0fc6714878ed6b3cef280e621841d62349b5bdf37a4e969dab36e6ede43526597d7e8aafdbc09891dc3ac43e8177c5b509ff15f0798df550f60fa1d7df2646473d84fac863e4b30638bfd0e633c8447b98e1de5a7bdd06c9f8f5b8f29253d4b3dab820083e6c86e2c5afd045fe6186d781935ea6c3c165cae5be083fdfadb54fb6ddffd1a362be83b8f15e4cc4d7378b59960cd3d374ddc73e89fffac3d4edc8778fc96441f792386e6f04e756d569609e1ff48936a7e06f607b880d3df136695ad0e7ef931c4e1b571a7e569efb3056aefb4059ee26ad7d28cfe7f9d8be4d3da257d636f6c467991672160fb30c7ad08659bdee49e635cb26cee02fd31871f71dfc308d510d1f3068c50a223b621ad73c2a126935043ce329f1e435b2d75d7524bc8f66ac1e846d7dcbb32d5b302da0336793cfc97df5e776dd39a8ef69747f81aefe02d9f29ebde39eb3b1effee9fa413e06f9fc15df3bfb9c18fd3c91e838b5e28100afe2d17ac8b02f45327a6fe4fbd959284bbba67d6575c9d824e712a76bc95f3b5af6f26350a88769914ba18f9e552d7da76973b85cee215c231f02e64ac40440ae12c744c8bff918121fb2add700fc45d7028e045cb369cbd99e90cf88cea1fb1c5f9a1497f23e54fae7b88d37bbb6ce227cbe9d42c37d325f2ee49da8bdede22dc4ffbd97953eeadb5abb85deb5f014fe9d0fbf7cd0f0504fc0e749b41e3afbbef07f3fccf181fd86eaa932be638187a59dd3a6c62bbdaffb76bed167be2ef42d15284ec8dae2b9fdb408cff1c6cd80eb403f420c331d6a45944bb86fb586b5c35a6f83ec7d21a5fed04267f857e0dbb1b9deb4c4a2d96be82559d06b8dfb443b49b83ee0de6b88fbf6cdfa1fc561e0756e83de685ec337e0b96edfdbd5baa8d9a587389dba346f6bbe11e17be29ebb0be7d08d2920faf7f85deaf8b0dafd6ecdfbddc733d4f11444037c8fd7345b8bf774755b6ab3e2dcccb76e11166ee9f8761e39e4da2fbb148d7350b8256fc7daf8deeff9e4626c7241eb3036d7835f2619afe990c6ccf40cc15aa6b57a19795fe056ba87792d431ff789117b3e4cbcb0087d7317797ad73ac37d989efe64be3c3d188337e255c0964e8c6b0ef5446a6347ea7029b98ebbd1878b91fb39772d67eee69ff3dc35ec8debf8f2ccf236cb9f742c90cd83e7181ed2d7c5e0f256d26b1d7eb5fa6c3d2b079f5278570bd9ee63c77a7c9fe7337d9987da7c73d57d4977961b3df425cbb537a1beccd585e3ee75e8b5f7f4a7165bd539bee8795f49dcd08e7fa16bee9a878afef5c1c56c15fea3e18363dfd1d19e455bcbf25e8fc55d18b3f8173a1788a66f8cfb175b6dddb3fbf2d482b92231cf9db5de124380362fcbbd91d86fe27071cc16ed55f36016f991ac67b41e6e738f6267ea3935fdb272d40ce3c9fac02908587c34de752c79354e966db817776ce5e1b27f0eb99ce48af472f079c106ef29b3ad0d2c1ef1493b3f9f05fe80bf573bbf2f77ef65e192777beafcdd92e7e1833c3e7fff6acd215b41b5a2fca1799aae5552ebef67917e59dfb123e0b3a271a1b8288a91279aadd023f97e6bd51faf8f35979bc6faa7e80c8d94006c7b54c4582f58ecc987d8937e6ea2cfa1afecd2389b385c58733d7662c4b8df72efd39a0383f14dcbd7b2ad57bcc223d2670d00bfddef4fdceaccc2f1d9f79a736df3fcdd3b30bf95e2e8588e60b36767f43dcc369e93b6754bdfa90b535ff958a4b68c759f793bb5e1f1adf01e420fda1dbeb11a17925afddece1243a71c515c1e7bc3f818a2223e01c795a75fa88e3bf79c6ddc5404cb51e39a21733f732e7c0ff581722af17d0178ec5baf5df9f79d7c37ad73c2bd1bc65ee1774b2a5c22d6d83885f2b1faae2b413d7649385b5e5fe2f281f966bd318fccb9e973fc930ecf499ce7931753b9cb43569fd77bebd66970827163d2cdc52cde63439fab47fd76fcfb0bc525ad132f81dede6aafdddbeb624f46bbdf29da26e8bdaad608acd3953f7b8914f99240ad9ce06dd9fd0143b48f652b0fc839f8b01d20dfebf287693e9e3e9b5d61b3bbe79eae9996e7a9e6ea8e96b961efe39e7646eb8df789eeed95fa5aeff6efa95f0e730cfe1ef1d5f20fc28dd0c09fb7e468c9bb130d1f61bf737e53dcf09b4d9fcd19d6c1feaa6cc043e74bb5aee0cc6de667b2c6592caee3dafdfe0debad6b6db59fbd90c3abdffbeeb976f7facd75d6f87ee39ca3767bc8ce83efe226accf0ddc3ce02b3fbc1eb8ffcff939100781af5bc3c1f0361df2127c4da5b9ef0043b161bcd5c2bc0acf54e555a85e3bb3f33a79c7ea8ceae6d9a0672cdcb7d366dcc5f177cc393a8b1beb4d3c8316e89ceeb641b5b1e8dec3cdb168e16d4d0afdb0a2bc91a4064fea2bbdb0ced579771ef2862de2f8d8e177942be23e6e23bfd9eeab82c6e9618c42ebdee363017731cb675c8f54eb98577106c3e1b5c713d57d295f3f97db4076d721bcc2fa653d5d3f9d09e7cb29f0ae10a7f9065aebb303c6b1913a914ef1f4d713f511380c56daa1bfcfe1b4923b31b79d87bea6c7be9b45c32c63318c61b27d1d1aee253152cc5be15939e82e0da56b571f4a35b7ee75628cd0b5b0a6ded8de55670fd4765fa29eb6076e521cbfee92b17d896fbbf354813a951cacfb5f91229d57857e5b19c73c2af4dbb407fe73192bb3735c2ccf41713d07eb6739b899b79932ea05b7e0e9b508d7b3afac085f96b7d92d2d5f5f66c5ab6115af5fd6265096d7d99729bdbd2ca5dab54eabedebd7e265747d7b098e8b9751f9f692e37af7a8c2a940af4a0ffd26574247fb426746e05bfb5801fc1237b6806542fb1c8faf3138d5b01179ec3c3ae69734706752e0cd7ebd933e204f960ea6612d1243ff5add9ef16fdd63c2db05acb562e7d1d6de078a7ee07a980956d2bd269e7e98aeb5f47588b996a60b2d9d0eb575e263cea40f47cbe2c23d59bd79bae2ae2560f1f5594efb4a3d29cbe2423e47db4d1a402ee49a9298f81c2bfac1773298e7b7f5f33951f25f2ba79f078a9cd1feb469a19661a96e22e5284fb7da2e7e51f7e18bbc0b7ceb1829fdfe5b81ae79d9b3fb133d74a281bee6fded809c21af43644f075773f88cfe06eff9ea0ccea6c1343dd07ac41a2bc6007818023e4e437f53fa870f47cbf15e011cef3e19cff2c8406730d475be30eeb45a0f1347ec15817b3b942bfbfa6c1a268a0989b60baf5321d6e1d13c06a37eb62834ca7f809e638f6c7488b57160be4077dac75c111f065a9f8dfbc3780482268649f207c258e81f4696253eae53af3c799f1878bdaf0cf76bd59b895809d2670d757864eb3cb5300d5df403bd9a2f0df9de0dce63607c0bad43703c44c001c0f221c17a90bd03cf24b5af1761be59af59bdafc5476b789906fa319a63bc70e27b841f88ebe1a87a34e03b6f1487c1d9db13f0780db38a6b07af3f8c49c4be111ecf71d583302d6659645c76c17ab3efe4d11dcf7a2bd00b6598e637920b6ce167217544e094273662fb0ab629ecb987c03781f3222edc1bc5fa990660446f53e8919a57b67b4b6d011d27c2254f6a65d31ace23f067393abf3c85e1f69dd04bf48fb196f843f3471b974c28b94ff1b8ba0ff0937973e07389c918c53cc7aca1972b7f768ed683dda250a570b14bad324e27e5e01c38ea1eeff5c176aa8cce2b27ae717ecd32e48bf9432ba2f932365eb21c9b5ffbf6184ce7d639ce516d705f525ea2678eb7568e62b4a8c0585876ed7152063e60fd5af7e65ba949abb18bf1f04353f68716f8251d780ee1b7189f87f3caac9f45bfac67ee653df10677e3c3aa8e3262f9437f68a693525b7f3b5e23b2a6f23be365686fc1b29f824f582cd3d0d7e5951f6691e19e92e1250db650533e476bb9047e163fdb27c5b24b6f89e5571685fe36c1bc3fcdb1403670ddd22b81f31abfa87d9b28236e9f0d7e81dd80bfb7683861add293696879a8e88760583fd3f39b39d6f2b808cf7121339e90a867ef42df4c49ad711f94840b8fb3276df33251c87cbc0cd2f7129f49d5df46e9b4d4d6e6cbaefadbf0f8c07cc1de6eeebfd6ef52dd867ecb7e65f3f112296e192898bf87ed07a6f9d0bfe1b589f97956de2b8ab5f691974b2b3f643cef71f994daf4f7ad3606efaf8e6738aebceb61e5cf72a8d5c218e2fa5db4a5bd02af27cc3fbca418df7dd50389ed1dc5c4475e7e888cfc06da7205f47d817d446b8b7175b73fc7395c6b295a97c110af75c285714dbc1ccd791e6de78fcdf92373c9fcfd8ebdd7d5e3cffdc7ce607aadaac6cfe556d8f9bac0bc4b17aa0ff81eaefbc0ed343146c4d6defb4e9b4ef7e07b9b3c92b3b8e51d0345bf85e88ccf8f8c9364a9b892ef5ed66f5d3ccd9e7e81dc6881bf4b6d52e2f57b31f4c5b804ebcce25834a7c011f7e1c897c0cb4be0e8f46cc2fd82ec417e0a947c03ebc3bba411f0c65ebaec97897c63c62fef67525c8ce86fa08775e5f5a18e1d2b90cba51c2cc8cf6f5b3be03391cfd3f72fe4c3ded34126f155d9864b68eb65b2cad0d37fb5f79cbba7a46765f110e29214feff58e33862ec5be57b8f52c8d76dd11988fc4b16ebaf896e048c3f5e23fdbacf88ec80463080e83a820f45cf2ccecf20f855b9d24923f96c645b48bdf9d6919bad7c48a7e943128ec97e6c0097d2da1c8eeaf5b656bfade1eb8caaf88af0a06d56b8e68e6c442a72cb307f017a89dacf4f7a2edae89c857892bc675ae31f078e7ec82d88fc47458c7d5cb0bf755f8ecec3bc47f5944775fe9b16ae6d6d5d7ddfac7ddf6ae6f7db7a6f97706d1a77bc80f6dc30285af656d6f67b9adbe1e30972cd7dc77584fbd6b8b3e8fb17568b7d69bdd7e6817b6d5aef85c7aee53e13a7fdfe0497c5f1325cd6c009688c526b1d36f7b67e59d7e7c4c45c0fe2d9d3614fba6250d19634f9aa98adc2be4d770eb576dd5a3e7613fa9ab41a0e9edbaec1eee10c8eafedfce0c897bbc53df718d258ddc8a50f87c416bdfc2b32f22f13c5eb5bb44fdd12f96ba60efc00596424e7b8c8a5952191bca79d933e0864b3a14768e5cdf83899ce8b8c7c09d29bb70940a394e5b5f4653990a75fa33456684fc5e03a739eaeafeb2788c7822de061918d837c35c9d7a6c168ff1e0cfbb5f7631892fd4701cf754b70af055a5fe83a0a8a45d0fd79de6aee992dac75669fa36249fa3ab4db0af728f54287f62f633d9ec4c8f2888c5f753d1243129b5bf975f92d529eaa789ae4aca0ff9dfe7f646bf523ab570539f79dbcfd3b189f4ab1b6d0cb89f35e651dfba9f556467e089dc12e22b8e0a92335d611f80c684ea167659607bef5b51a3ea54be06354cbc843fb7509bde02baf4fc6f3da6779ac2df88b340f046739c5c299865a34ce85b17b5af93ad663821ed5794af767e25b39373f95dda4ef281fe93b26c417cb841c1719334fa1d86909ef41a30d378cf5714283e343877e5d76c6b2f7897b36f0c9030e656c65c099ab20bfbde241accff374abc9b1920a7ec0125fe7148fdddb6a98ad27352de825ba966fdd50dc108d372cfe0f39ce50c2df4afb0544ce0df4dd25f5eb1a368dc43210cfe5552f2119abf12be19475a5d0b78e2baf8fed9031427fcbe3b658d0e8e781e2de62452f3f9c7e1d470d6b0ed6b2d38e4bc6cfccd632cec7adf99e91bb3a4b4403cdbd547b6e49e672768eb6909f45368560aac13e40ef3c17a7b21a1bf0238b3ec143fb87f7bd427fb40bdc6a8d4e87da9a5b8b2cf76f0ea5f4d5a9f2d8d36a6dec5b7378adbd245d3a52c82eda79e80f5ad74f87df83f964056e13cce31ad4f00dd8fe08fa94e83a74ce90ef0ad79a16f4bd1b73a647db994ce60ac5a9eb08ad133e1fafa8a7c4005e26bcff14d01c66bd17cdde566d1d7ae119f29a346706b10b1e07e44fa23322196f4e2dfe709dfb773d61eb35257e195da3dd79693c27c96ee55d737398d1df1fa71d180ca25bcbefabdc3400af9e461eb69f2dfe267045d331aed6565b5c83d7e484e74658534e0c8875a1e64238b80ea661115e3b567349a7cee08ace64b236ab1a4bb9f98d752af3f6d6093df99cb07ddab0b9446b147c90df38cbd9339e6243bd70dce4eb8ebf37f455080e84af4955b15c8ba6c35d2ca131da8bb597fe0d7ace9cb481bfa0755cc82f401da415239109d807dacb5a005e7317387dc6f13e1936311ee81e80a3e8ba870b5c817feb1ed57ed0397c6e2b6ea2deebffecbe3ced56f8df283ef8618eaafe1dc03a2f7669f57dd267e3dbe7f8ebba7ce7f9fed835ac8e5e20a26da8cff2c8081b6b807b0686c96cef05a0d708847e250113e1cfaa7158538d9e5d3a315ef7e648de074a964743cd47be0fc123e4e68b79795d2cd17e2b5f5fcc0be9c79f39ee1cf9665fa1d7bf11be6eca07e087de15d98d1c723994d34bb19eccf1ec9c80e6c96b66eaf619f3516a59c434c42f29f4e46fc37de8c7604b5786daa3fdc85c1dfef0e1e01ef9186b4cfc8be6748077d8d1b691a26eccb17608bc19790edca7f946de99d306028d99c493508c7c9c4ada3151dc5b32c6bd6fa1a3ae2117e9a1335a2e12b8b75c861ee05114d02e5ccbfb682d939848ce3fe0be7d827b92cfe15a3e8a583e499e2d36fdd9c2545e8b51395bccbfa6db4c098a5489bd796f06e7d21ebf974ec60cf9f6ca7583ec0c7d07e43fd6ff8339209f4f1d2d8b8dcd99d8e719f0aa196a41e6e49278d60172c29803e5cb34e43c31b27338c65cec518f712261dfd95337093a438c199ab3353c53cf453e1f70bb4dabfb7e453d2b9f96705f2bf2d1192c57f9e035b69be89a0b4f5d7b4321a6fb691aba1429f20d6b7f5bfb84f420024f04c395f7c9e75a1e15761e1533d07f0e3da8e19c459dd3fe6dba46fea57a40eb20f1c2e28177805c545c3ea377d09836aa2167a18262537b1730ce65177ae3a352db057e9877eb125db8580c7c655a8b2031cc13ed8f26736d9e501c1928573934aa7c249a879587f68875338deb7ea52cd3c0d06f7671cd1203d79b26ebc1d11cbbd2cabbde601e74f8ffc8cf40f32d874570e2d6cad937fa1596a7040c602ae26054cca9b49dd57a15704f3bd5c4aaf5399c1334fee3d7734835b386561c7d1d237f68915cf53536d7d04f340b7c8dfeff45e8dbb1994b2714e7d99efeb51a66c75a6f1c706d8425d5864d0e916265d1b0768e55f9c2ada7c834368bcd2daf8509f5e9763e7abc3e4b9cf743316065abacd2fe1951ee3703e21625f0f203e1cf3bc76bed1229d77e58e4a0fd5de37754718c258cfb2d6ec5655f528c1f4deb7372af0fe267c51b23ac478e4fc6ce631df6cc5ba4d8554f9d5ee127391e1987d8bc73946b72505cf74159f5a554fd1efdd1ca9f81ed882bbe4f199dcf289e08bd39777fb4cfa58a5787f541d9e7a8ea058131a97ed3d0ece7f9710027134bac7ec5f1e4b4fc6d94ebacefa87a568bd7e6c273d9fe199f777596542bab3ec6347f9dec23e34a35a99a9f0b1a6e9d38371a0f54bf27faabb6916f282701f77e849fb9fbdedcb5bfeb11a25ad5595ca2cfacf3479dfb9a1ba76f3889488da0ebb9f0f75d253f443ae144e0ae4d72eb8bd880bef9e6ef7c6d83d651e37ecb87c6b8de0b65398adb279c0b421fd41dcca285fc669bf501b7fc7dcbaf69398b3bd7879cc58fad0de1d96a738b6cab55e78fa8c6e70e96f25ecfd62847769ad75ae3d6e52cbfb7e6c5fbd9ddcf364676a37f6bd823a3cba609d736029c5be7d6de7d1d949abd003bc3bd6f853d1f8519e4f9b979ac8f5527bed51539cb044cbb8059ad9ea18667cd3fc6c8d6d81df7a3efc6f50772768be3db96510c92784ffc1e227feb37c764fccdb9b0512fa4decfae873583aaf5efa27fb77caf39bf55ef24777f39dae4a7c6df47b946ce9ee67c83ce15f73cf5f565409ff23ee4be13f36b9c721955fb6e1770df0d851e46fdb25a56da46285eab74a0388e37231f11acfc9ce32f437675d3fcfb95afc712aecc6a5e23a53fc4f1894bd702bf86ced10638db8fa1eb9ea28a4fa57afee27a4e4a01277d887ab1f8b96ce571cf3d70f86b2332d4de5c817ad92122bc8036e68ce5d7f543df4b0c75b2ac9e016a2c6d6749e85bcbb87079bb3ee2fd7fe8d5ac7e877b21ee7fcec62cce911f548d2b604e7c7b8c7dbd2be6d3c173f4d9fe9970ddd6dff17ef21262aea5b08ef81eae6a4d819e87e02775f40dc07af395764d226e8d1ed09ce0fbbb54330ff3e0e86a3bc7513537c82e58d146afb4a94aedb38373c88ab6c04dcbd9b60be4165d1ce3ec209f51b83457806252b4feb3c4bb4ac89f5e19bab2f2d412ebb161ff774673c44cb3b6934b91b39ff92994909f9c2be258553dd22bafbfb50db75cf9619dabfe1ce595dd6bac71ceae2e81ebf3955e1bb0e881e25e12f0a7ed5beb39427a982a7d16cecf21f75c6edd93e3f58ba8faec33067d6a5babf758fb8a7b0a47747edaf92ef173524ecc963974f1f3120dec766e4df21d1bf066cdb543eea14745f57bd035ea8845f06770f6749c69f0197d5f32c6c2dfd8b56a3cb5825f247cb641be15e6a9e0ce4ec665dae83b6fe5c1845cb99218ea391abfa671cfbd40fca55f517cf915e11a07ad657cfa92fc3ecf33e09f7747eafb429f7ddad2f57dbed15f7d297b5f48c74fffb643b1e03ec2759159a4584fa0fd0c79de81fabed69448c93790bf2e44dc8c2fabb385640598a7d87e5f48d7852f25af0bc9d216ba6a2e2475eacbcf6dbdea7cfde83c2db545e82d7f9846262563edf6b67e3e874a2eadc6ee1af8b51c358b0abbbf52d4ed5481bd790cab7160dc870f3ecf69e5f5e13916b087b33a9fdde5a3c60b83b15bfaed6ddddadf5beb83abe5ff6bd722bd992c36a7fd2fe6fab266790e83e0f15cae0f92ad0d6b1014fa3af42ee7780bfce2c7d05177a17705bcf154716f91a336cf76f7b27e931bb97da6535a694e5e447dcfa57a8ac655ff5b52e825f173d277a75b2ff28d725dd76a4bc049d84b4e1c0702cdcd08382db8cf986015c7e2bdee5ea3d2ceacd528dc53e2c93487fe1e1557d0cea5bf031e4e92338f4be4fb5ca5d037777c1fec043d4fad8e55d5091857299cf589d2e7346378ad2593e98b4e87e8fed27e5af0cfb6fc59e160b87780f1ed5f127fb623bcdefd09f137b9718271e7ebfb555d02befbb3a5a7933b07b91cbfaed25ae922065f7c5ef25a83780c0887cd38cce2b5b64763f8ba38a42b67f00c38b69e7bc4bafaac8ef8d33436bf267c4d1efff616f530b6f81d7a8b12b4fe4ec97816ad5c2935593fcce02fe1baf271ef3b831fe6f8a8bec9d71a0660935acea014736ddc7a67f395d17bef19afa4d32fa29ea507de6c371179978033bd0583d4e037aa74cc34a20f4572eb84c77cb2e0ae3196c8bc353968ab3a34f2b5d41ed649c33641e03bdabe8acf55adc7862d80da159bcb4bfa1bf7d8c58a2ac7c52c9f706bb3b567d4a8f4742bfd295a5fd808bc64c21eabeb97e179abf6fe2363fd1b7b91be0fe3c3ef9c175cbf65bc880dddc639ec2d64c7abbe4a64c775391a8bfdf4c85fabf05a6e69df7f27917f41e0b8ba108c80fbc4ed49d25b25bc678521f9c2ef57cd79f3ace1d786c0e151e5c3eb7c6a823e5ccd9e1df85eaa1abf5aed77757d0de653f6e222c7f9d1c5ae3606fdeab3eafb0ad56baf7db7a6e983ec89304e27c6dd6ae43f42dfa4bd5dc02f0efc85606fc2f3ca9ba7af3ab6b5b066b6d27a3ab42afe04c32d021fc5b142edf713eb03a0987c76869a9f678bfc765d63cf6b7ce1de2dfeb90f14ebf3319ed7ce6af43d383f7f7e2eea738ff7a738461bbe0ec23dfb00ebee89bc6eb740269a812f9238d644e78b9e47745fc177cabeb07ed06f4d4787b5d07a16e27768e81c89bfabad1d74bfbcda0f16d17cb74ac0bdc26f3006005fbb36ef3c6705befe362957becdee0b7809f24ecc265463bda1f31bf5acdb740b18d17c32dc9c62e0b9b66ea193eea75b2b0fc7ee57e888e38cc708f6fa57d4c3b5fbd63abba0fbc6690b73fc1953f2fc843f00fe3f9d13f6596dac2a9b02f81832bea2cd22bc1c38361070b974bcf078b3755176edbdc6d8dfdf732fb5fbd49feb45e487a8fb43d83768bd2fe16222f7e1b1d077ced20fe79b715f88cf0b3c79c8977939769d276c8e3e1d81e38dfa63fecab777510f73dc33ec97743d47bd59fe9b71c243d7f487e64f811ba6c3b651bfd645b19ba1ca98eb00c6631ffaaffc599b7f18b343021adbe2b945bf63bef0fc656c6c980dc3f101b59503b5e257009e807382f50298bfb330d473ac2cbb9e01ef2dec8b621fc2407fe3d6cc3d9fc2adfc6f6e1f28816fa6f47e148f83f3b38206dbbdeb55fe16dba3c8b70acf31b2c7a0eb30403e75fa3ea43eb44b63a1a9803f7c417ef9e157cd1fa638bad6df7a0ab5df3c4ed57dc218017783f65e68b84f0b252067c3e07fde9dc165827310d2caeb331b6972583c76fe083c9ffdcacf59e6375bd0f9277d65cc7fac34adb0adca4f89b7e4df8beacf711ab5a2fffdeff1ebfed11afc33fb80c442f5f5d7b2ee003bc9f9e477f700f43e0c331ce3bd90188ffe76097ec489e283df4a6d3f290ffc5ea8afb3e6fac279026e3cfa98c774a4163426a03d6f6d734efd654e4b95de0baf81fa597d679ea7e52e83ef8c66e7789c972b2fd925c3c12e2837e9ebd7e0fa36d426a1374f5d459762453d611c8ff68acef8680b3826e8a98c29ee68992fcdd1751f28ee295696e964245bee1062c21c63b935c67fb12adc4d42af5b30ce937d54aab8174e811cd3cd379e404f6c5aee528a7761792387698d89b1155963fe78be4d7c14af518e8a18cf737e95b0cf9865b1a4f6402b727c54a705f9371717925c529c887cada0f386f5085f0936b01f273abd2efe3cc4b9a3c82736cd1fdbe83a60d3f0f7d05ac15cb6e60be098b609c67475d8337c0f7f6cc39a47df07bc3df73bbad6e05efa55221a81595cc47be23befa3ad9bb3f7aa5d8f698655181ff45b366ef81d30ef485c244bc27d019c0494cfc02ac1076b7c4efb44ac92ce8f4def4fe6dcbdb13e0adfda92b300dfb3962fa0dcdb2b7fc6b8ff63c60dc5de8b7bd698eddbc677d8bce5a788f8563c0f455c32cd03e02f99c2bbc5fb37f11de8bdf651d1071dd58ffae7fa55aa34fb708e6b42ee29bc2bfebe2a3c23eef56a1d0b7edede17526ab1be51c249c75d97f58d941c277f897fd7715e71df6b7927613d23fb0571075e6fe3c63bd131da05feec3d519e18a7485cc40793d83f6b1dc05a2436aefd3aad6309bf6fcc6d632cf5ab04f691fb9cd722129f97ed65dac7036b49d002acdf53982bf6ff556e0f5558f1ea1dfe1529f969328c53ab24d723fd7dfed88679aef865e47338760f9437c6eaf1bcaa318c1fc5954e69fe93fa6c39b7df701eff867323f89c177b91dd1b5be3ec9ed43fb66f8d7d72c3d7aff535b23a0a7d466a0f389bbd055dc7cae690f863790a3c79c3ec07599f5649e235ee3bfc9e9e96cf2876dcaefc99045a4bfe6b6a29781e09efcd764a7a61e03bc0b141b812b6dad11c6b59a01cb35059629e1cba56d8b9936ec97b9fb07d880fa67e4ca6429c30a8db99fa9c0b6386d607b501429e117fd65b79fd4dd48b4fa25d42f180701655eb662b9175f9f458be065ff705f99f7325cb03e5b0abfa779707e012da92de513e4e677d27f929eed980fb33b9ff8fe67d2ef6550bfc7d899195512f4ea3c2ed993accbf8e7546b3d8dc30dd60f08b4d639452adab0063d2ab77c82feb09e7fb404cb9051f4f8a24d2fbf622a55c2f734ddf06ede539b547463536a2a619fefc927ab2443566e01ce0b4fb9cc4ebdf4c43bb269e5b7eb8b33c32f098cdbdeb211882ce5d661ac93e29dc13b23b18c73d2718630d63d447da25f0ad2c426bc1c0750052cf67ff26df1fc4865e069e843541f018635cf5b8ba37feae5ae3c36bf7ef637f964daae73af0d76173c7f995747cb9df9c62dfcde36dbe08bd6b0e98ae0d8ceb8dfd7bbdd93763ffc1bf70dd1b6303688c6ff5f0bf2db4570ac20d38ea67c986e502911f759eac679fbeacb9cb8dfbe997bb33c6cfce4f0c03cbf23df81c87f5b211ae730a8dfc161bd7ec6349b5b607db45a12bd56fe3ae1cc15be0872f3497f356fecdf7d2ed2cf813efd556f712affd538cf5e8b8ea4b57b7ac79ee2e6d579d2f37aee1b8d0e7077c38812397f15a96578e9ca2f96bfc5ed79c85ace9cbdc0e7d5973ec65687990b7d0ca3877f7c1cbb18b677513f87636f76d295e8bdcdd245eacece7d0fe3977ede572930f5dd7d6d97dc6d2e6a357f9ee9fde80d601dbf97ed1fb60dca0c0014ee3b92aff38d87cc82defd5713f34ae944fcd57aa3c02b23f9e7c5907fe8c62f201df9d142efd37d6a01e21bfe7b2a671c31f8dbdcb47e3ee437bcc5dfe7ebc5d8fb5bfc9eb74e673b07fc8e538201e87dae9cfbf1b57b3f7d3abfc3e7d37e27ffe34c712dff385bfff72203176d56b30c1d82d8cdda4bd8dc304f73561bbc1f725c8b1e2327b51f5780cb6b81f67be45fbabea09716fe1d25590dd9fa333c8b0a0479dfe663eb6728c5f9a9f57867a5ef55ecf28f6b5fd10c58570ae0785feb52ac5e7106d1b7de6f8349504bb283e8b4ecf03c018b07798823e076864e96c1d3b1ac3fb58e5d37949ce288cb9e8b8fec89293b18d6c02f73cf46f8d71e4ec86782f1bed6fb4469cc66ffe15f7528277dadf3e861a8749b2c87ca9e83b47965326b892562e59981b345eb9147ad28ed82b58efd847524f73f0150ee4dfb4cfed4af2ae04cf35b6ceac8e68d8fb5881f1dd405f0bf3b79886628635aed5131d53a809f833fe3ca0e72fd670a96aa8e2b58cfa592aaecd8978d652ec05f40aa1f81bdb308c6920ffbffeacc84642bcc069c79c230363883e6b75994858939b9a46489ac5858a621f14039cf83377ba85f1237c6309ac31e4df5be506d718c7af27f25bf2b9b9adf2724cbf9dbca70dd745df8f0cb7743c1817f17e802380ef9791723d84be6585183b51c37280ddfa41edec83f7dc3c744fcf7eec9e659b6626eba786f336968fdc5e4ab721d88ef971a5b87dabc4b611fdff2aa78ce7755ae41b1c0b92396b8c09e6f40eab9a16b9df611bf8d63e70e42ffade7199249dd742ef5a5d83f2972b44e39efd7fc6338b624a3c0e19fbdbcb732aaeaf3e3d83a790bb85fe7f3a76e49a8dfa67c5d71e977df46c2ca64536d12aeb6b36dbacfc19ecc1b0c63d44d725fa9de3f537a14f387e047c061e67af4cb2b8c8b3a957d9064b861c30e079845cbfc811cc8d55dbfd6791a5e8e5ca1b1d690c117af32deea3263d037e98b76077f85a041d0fb4ef2a2dc5a174edae41d0f5c3ec23b53de4fc986591715d07deecd704f6f5d3dd71a56774b5bfb8ebf27b83d53ed11cb3efec42a7aa0330dd1dc5ed8b3e123f2f22d6a48d1b0af838bcbeb450fac416cf213f637acbd3ca9f81ef167809c6cee62876d32ea0cd5a9fa7e675e0d9907fc7d55e31cf3cc3f3543eb3d723633de4fbe8a9ed2676d895a8bf4cb1b528a601cd34b427a7e5eecb97d5b9eb5aba2f3fff6b4a342100e3b4456bd376422fd84d74b50cbd0073f2ae37dcbce133a39a43c09a026e3b52fac013f7ee68c3c4b7251e7b1c90f5c7f597801f847c4ff2bee8779f71e116bca660c4f0df0395c3f9ddad01b367d7d55add14cf2bf5ebb9f13c86be9de1da9be80754f813fd067af9eb4cc039be118e04e2a321fbb30babff7f300dd6d3735ae1b16c8c09797ffebbfbc9e2003d01756d5d7ecf790a682569c9d82e27c3849edbdb09ae29c13b4d8bfadeafd653732d80bfb403ecbfa19e083737c3b305feec86ce9dc9f8a8b25e72dc6f4eecc645d0950bbf76683f17743d13ec11ac6be4b3623dc6fe06fa620dbd8f7b7ae15c676b16c7d52d71f088cdd1cfdf88d5d0fec47eaf7e594f875a6c16c4a62e71bc067fdb62bf86fd6673cc3f96f639013d3ae9678363e2d175c9d584433ffb8ac6ee066bc41c484f36fdbc3aff784e928f9e44e3305a072458291ae70935ce36cc33c38fd21890d81ff46fa2f128d6b3c418b1051b5bdea9979238957bd7d30acec7ec3d5c137ceacb13e6dbe3eb5ae50335f15253dbeaa2f4dcac622efd16382c8edb448a745c19ee01cd4d5caaadf93dbce67e27efc3691b82fd607ef681c47c4548f0eac8b75f166ef158ac189ed1d8d3be5d766f09788481b763aa64e74839dea6bde6f76bcf86cee45988c6c943363ebc7d7f3d39477172a85b79b87dadc57762bc41df65ba56851c5aed193a62990b5a47753b5af5f4a3d8516e8f576bd75f069e55c5e35c1ce91afaba96ffeb883f2f7c4e497c0609ec2d7ab696b1005b541f07ce86f1fa9710af427fd16a3b7b12b821b6e43c8698562e13af2fad3c99e29ab09e87e1de22233f254399f94e53af8fe6e188fe1e3a2846c82f0cab3994f358b9eea3edfc1c15cfc7d0932fc97873ac7252fd2a7769f4cfe8bddf9dc18ef4d4fca4b11db5b1b61bea8bdcfe742437f4257de9ea26e008bbe30e387b397f24b89b130d0bb54c14bd8475b74e777e0ffd2f709c14f499b00f0f3a4c825ec8a2e21ca1b525c24f52e5c9fda195c5f2656d1ac8ae027f089c5f80f1ab780d81273f319ed3a0e228935698c3a287ecbc399e491f1ef25be5afcaffb16f5017e0f45fc8fe3e06857a26fc399729b11f53cf3a473d1bf4c0e2a1ba8f7b3339f45fcfafb7657fe6def3b106dbd0c815abe4fbf1c81ea97afdf8b888ebe15479fcb170be810fe980af053e543336f8737e18f837e87cf302c2cfdeb077e7788d3e0fcf410ff86bd653e5354d9425d533e905945b7f6c972b2fd986be497aabb553e8a133c766f7c2f7b0cfd13a91cc7192a171040d07e85b9db37a0bf0b0133c4ce88505f48109b996da73929c8d5da8e8fc7363e06e5feea84fcfb411d1da1ccf1cfa3e700e90dfa2ff3f21fc74f5dfb5c51f8dfc4e473eaf7ead44b083d4df65767c27dac90dbfcfd0795ccf6d104e965aaee045cc0589f7dcd4f2479073c2f1f7f8fa2ce47c6ec7b6750cb1326fe7a7bc0f47fc6677a48e16b75d1a1acf78bd707621f1b5c3ca9b6584773f8f95e55f5cccd7f69e2df76cc9e154798dfa35ca87ae41c74ec853d035073c2ac04723ae992a1f257e1f5d1b9d09368d0f97810776fa1c1621ac77311667792c39de5ac88ebda2395814ea06e766aafb4f0bfa9db9d8b736d4bf12dfc26bd5c86fc908f481f99a04f8b4cddc193a3b65dcd70675cbb667b8a4817ed87c48ae672ffb4b5f3aea9eab6aae6e3b9faef4232a5469a21f1bb995771fd97337997883969c1d5d37b3ddcabbe2fc57cf2d714e967bdfad2e87bed55f56b5d99d25937bf974df55f7c2e79d302e74fdbe003fa9c04909f3f793ef3b8941ab8ae691b43df221e292af8588cfcde50e70be83fe1672a8d2958f21783c378de5517c958ca846bbc4ee3d29d95aa9f527c2baa2f9a1ffe19eb1e28115bf0335a23bd7c07cd9f5df9075c1ea48c3c1d17c19b5f416e0ef790af77b5d22356ea911f7436fbf019c2d2ce78eeb4b282e03bf655fe3d4eac823357247dc19cce5305f9ed3a450f7e17070315f76e8ec6ae47f2057c6f581b6dafcaefc574b1da1fe3eb4b7a06927b22c2aec03d84ef0019ed09a23cfc3f95a985303c576a3a8979cb87148df4bd65b91bead797fe269c7dfbfb627045b58c37ad3f55af5ed71bccb98cf56b06d785fbd70b8734e8f8a3cc3a9de13c4f4a08689166fad73225df3703bdff23a1d58cf63b09d03bf41e2c6c3b8a651d3f21c43cabdd6b0bfbbe962b47f13fb05d7c83f5cddb8676fded7c1b85efedef56787f1de8a1a23da098d2dcdffcc956c1f19700ea1f3e98dff0c9dfb9397c79e8de1255e44ed9346eeb691c34e336c6b6af6cb69ce379db3784cebe9cc7fdf71f66e877c3ae04a22fba9edfa4453fc16fa76c4e3052ca9ca41426d047aac604d1f687e92bb17f893b16ce561a17e253ef2e382133b2fc09742f6bfc279871dfe20572b833c795884f0ec93e1a62d3f7ea8cec03e3b5f715da49f879e0d7e64a4cc6478b675f59dfa5aa77a19cdb5da7ab637f13feb2cf54afb6733feb354dfed3e0f03ceae992df7efb29381b86e4f78dc5f7762aebcfff8fc10ffbadee7c7fc73cf2d43c5ddf07ef982fb5b5c66389ee1c68b5ea3d2e97ffe9729ab9f4bdd756c57fd9cac5588f1bbfcf329e0d4c37d68b8259fd7c77c4cc03381edb3db88edbe60fcc6561e7ded3a73b9223600fa769495678326275f9b60f76be85ef0b1e280c5d9686c0807ea5be087af2bafff0bf33d82e64409bcb0c82f182637be4eccec1b995ba72387ce7f3ea9735c28ae04ef04d7bde6e128dfbcaddbfdf6cff1258d0a95e3086bbf46bc69bd46295c83ab4b085c1906b633689dbdad9b790d8c4fc8f8f89deffbcee2de6c1f2a4fbb8f9e7460f5b4619d775305be2cdb507b68bea90fc3feb6bed66d7181c6b5caf705a2160e8ebd7e34e6662ced27155ffd9eaf45618e87fe5be0079d18bbee7c7df37dd1f7d97b8e207ff6a3caa5c9b8562060f0487ed525bda8bec9e5e7788cced379b2a63cc1c447dbd6b0a610dfeb529537b06e189b5ad53eccb17b01fd38e789e490b273a41c6a5a479a14c9981b37c05ccba786ddf706c0611b505c76a971f9a23970d99a867cc6da9d3af49c24fe0cf24f01e654974287f4893bda66e55bc81e1f309fff0e3872d1391916b4078de8a97a7a1ff857c716681162ddbafc648e6767346781672b81d7c75a96fe2cc37c576a01b59bed2bd19021dc3ebd414af491fe658e935de83da5a1919744bfef7de1a03ddcdfc763f740b9a4e0b90ad0992b436fcef3eaa681a1a5c97886aff7f7f22a14ab4bcf35197feebe471be861fe55616918d6aa76c6eed2fa3d09dffcbfa01ea71f8ba8677d852e59072ede0ff41d98cd7fb9ae49bd136bd72de4d82c08d609f48e587d5afde8916b2de9df8eeafb26db032ed8b7f2f7a14aaff53fe4fdd058c133e13ea96f7b5b914f6108cfeda4ace64d78c680fb3b549203682e8c313715d53dc43a21760ef5ce826acf21ffcbcdb05e2ad1faa97149937cdd6da5e497d8c84f213e5fced392cdcd8dae9d4a9b794934546712d67fc05cb51c47fa21001d5ff119b9febf4f920bd924de0ceb7b8b36a2ce8b03d769ed511fea78af513f0dc54fa093b0dcf335696cfb742950203e17ef9f1fae7ee5df557a0bd56f18beb4e25012f0ffac8650eb4ff8f977718aed1842f69b415cb837cc79a6ee2245fd15976a2b7ea3bdd655d53e385bcc5f535e39f76a2177b0867c5daae7ee1fac0191e7e2f2ea3ae490f73c4610d784b23cf25cce27fa731843ea53e23c5852463df782ebdd03b5c54724f3085c3ebdc0b7c0df9c50be2fc3ba2dc1bee74f781d328c5e0367483eaf30c8c44fe17b4ec87714c06d797d89bf26c36c183ae5e53b4d71ffc425061fa0ad0e533d1fb3b95cad837e36e1df6338d846686c86f2362e54391eca904362b93386453f9ee8da59629cd501f3f1eb09f3d11996e037b1190cbb047efd9ee3d413b09df531688b1da83ff63d060ac7956df9256423e0fcf6e6224689fc66ba45fb019e7f44fdaa89185b91bc4dff9618ea05d764f42d398f77225fd05ddc537dcc4f91d27f898cfc6b556662ae8af8861ca68ec37301beb31553f6be10b92f047bfc2d9eae813de4ee89b18702e78943b4a9710df4c8c6d991213f32f5ae50278c8ae7630476cbdd4c7dcc1f1f6f73dcbfc7af49acc97e8e585ca9df70ed22a37b287d2fd97bef6288279f534b196d515c6b290c079dbead691d6f53ebc979308ea8d6105ac33f305eab65dd96c2df1a7b8acbf1e179beedea6b9ae346aa6cc9db5aec359cf06799734983ed6c8ede7fe5a764df8e4e3cded85a07a9a5d0fd161f785b06398e61c2cd6d7c8033bfc8a176073da643fb67758f4c9d3af6cfa4d0cb95a79f92b19c4e2bbbd6fe7dcad15c0cda621da83fd83deb9cf81a8cd7b4b0f7710ff92439d3d7b724c8078cc18ee138662be2ccabda73e33c581cd6d3a1c5ce1cb137909da7423ffd3fc0a7a0b3e584fd2cfabd248b8b3e8a356af89303d856d7eb7ff131358f5b4984cf8003a9de0390c58a0bf5feb61e87c4db9cab98f1cf9fdfcdb397c772b4cf19fffe80cdc01caee007f01a13a4a67f46df99fa960cd825cf8dcd2fbebf8dbbc7f0b7ce7d86a76b9eb5148fcff63daf3b5cedd16adffd40311ce11d1ac6321d4b8e7f4cf003d079939de322ff81e636f02e87ff3fe02b601f2bf63e59571cdfd3f513f8712ccf8439826e1c5e159df12e9e6f5a079eef62eaa78c5bebd73fcc61c2d589127246d5fb391ef5a9dae6f6925a0a5a7bf36308b66bb0a5673fae9df0f37bf5e8fcd7cef15dd4b3f61f05e8fa1d041d35432d57fe1ebd7316e9953d7e7734e13744530670edf8fc13d6159c8581b8d68ed6f8285c03f7e33d71b504584b5fa13fbb01ffdabaffb6906cdd97dc3777cd74e2d177503c06f84c7f68a2f398d9bec970b413de01fb296c1fb0def6e22ac74aba9d38683cabcfdfddcb1a7f96c5663120b812f1dd83a1765b19aa1c1973a2b76fe560d7409356dd863e8af7cd93556ed2b735ab9f3dea030c03e2f7f2794292f313703b5d6b98f3756f6f104b5edbecc98f3a4f8a10470cb535bfe6d8b98bc733b5c6c7eaf3b184e6968de1a7373874ad435cdb186c3e946a0f7c3ad2e64369fffea7f7ddd93d68cf5772e7c36fe52db9df35f397f573a52d8ff92730a5721e79cf1df9cf3f1bc39273b6c255deed23a03a2215a688f40d5c88cf95c7b75dfad19319169cde877cef05f279c8ff217e2cf2519322df84be857e83eccc7265b847ee1e2d986c7b177a725efdd66c3e4749388370fcbb59f984bf9ecbe7b7f6ed55bd5e44fb87e2a8604e588e7132e6e315eedd4bea9793bf553d399596819197744d4f875a14937d10faafd847ce9bfd215d35206e0c0e02e71be11d657d5a84739fd37ae1ea1a5cbd29e7b944e51a1f41bda7b2cd8fcb2e554c40fd069bfa2b2cf615d705eea182df1b6efd0ce6707078de1b18b60a8344ef0d759d6a5c6711cba7d2e7d425f84ee3ef2fe4bddb7be0d1f358b16c2d17c33bef027388c7b1a5e7b3bebe1b738dd607e36cdada18b34ee782cb77327e01ce77e0fb3b26422c7b817e9b4a875aab71d6a89764fc4a7b336f843b673b7120175ceb0da563b5c3d7e4f0275c2d7a1f4bf87c819e70e15904ce0e88dd84be1491df681f13fbc37f87f44b5ae19ad4218d11c71d00fae77c1d066b2d38da2df1d1599de40c2b6a809dfc651a39e3980900b71a529f84be0f9fc3e0f275840791f557851ae67dc96f737c9ef6c13f029c33ce09acbcfe29f42d27f4822db7d6619c6b63e8c7c0b18efb5d1eeeef1a1fc03720bd832cdfdd8837b8fe420197bdd16fb82fc3cac32f2e16c1cfc4f905d43676d901c891087e041d3baeceffbb3d4b3fcde1d309af11ced769c445957fd1e0b1affaefd8f8b6c5fec1888f2fd2cd8724ace15a6f13f4d0f2f99b13e6329230a7068f23d09332f0a18fb08d07ffa769d07396bb7f6d2f63ce1ef748f993b8739c9caf783fb6e5291ab1f517e42904bea106bf39e87a3738662bad843bbc7934e777879711fa9544fe67b4b6682f1ccfcf28f2640b1a118065bdf739cc11d6aeaff1e176737f37b13f8071d32f6ba2ab159beb8acb99f1673bb5ebdee16dfe0d5ef9dab3121ca0c89b5dc5548df3bb8b2f94f97560af27352e29d203284532c32f402d6de5e1fed8fa9942789bd867bed2e076071ede1aef94c8f754bb27b517a4974e0a505c2cb335d8b55ef17e185b32c6385d98ee2fc98d36cededa3335eb79e3439ba68f903f024d261dfbd9f59c1bd1c06ac937d924bf84b174dc77f97d22add01895da29f4e394e832edfca1055ad3539fe645ae7b740f569ff75f53d27f93264a2ead869a896b81e83cd4e0f9fca189e32b173d336038a1be226a5df2f87e7b17176acf34fa79526a15275881757168de263272295c0e6e1c4ee166125dd7c09fa791e166d0bb50b865ac002f9bd2aa2deb12fe30d0f27e3e9b25eb499c215b8a627fd7b55edf3de0a92c93917b4a8abc8c943e70714d8bfd6d5ac8593cac614e8c6abf878e103fc1983638a7057e22e23b8efae7a8a70d03c0a4665f551d96e719e0ea44b84fa693f728aab4dff0354107392b2b2ddad9d7ca70813f90f2589a02ff06d3a55d044a96032fa0c025cf70446ddf23bcf138465e14ea391e595962cc7635fc28ecf5b67c8c09fce55a1929b33ceebd221bac4c37fd777be47edacbbed7d01de6308c9172cda7e0cb3ca16b47a045ac4ba95de87b9ca3661aea32b251786da86b3c4ee873828b60b5768dc4c1f206cdebb464ff3e211b82b99d3635ed2559ecd717352372e45f758cdd0f5e2f72a9cc76a167cb91e1962c7fe172f698e8d5549aa66e392f7409ae87318d9ce64bbaafd714ffc8d8e3b8f71c19cb13f2ff22b487f3e32c52acc077b451e8a3f19a6589e16ea88da88d11b39dec4cdb023eff3c2d5f598ff1c2d3096ec475162f68ff130dc20d5e5b68ff76ef51ac0d1d1bc0a3790a7a3968220abd9505d6b3c236b43576bbc4457ea21ad344477997ac859e251a4776e82866ca4336c8d7ca95d7a7da86248fd0ff575cf68f813f40be16f83b76919fb05e00d62b5c124ecc789bbf46ca2c8b8602cfafb1f2faa0114030394ee825a085f8417865fda1057ccf70d67a766cae077f99639e7b74f0c31c85fba800ed03c26961e5a192a333b22ff88be3c303cf0738953bcf857dd069f9fc55f5afcb593cd6f65191b8cbcd45bd730fea9b97e2ba689ddb2fb41f13c35dc6c8ee2aa07d9825c66857edd3a786bf89fcea4039a2671905be9d09312eed55a03617f31d6475dd3dbc87e473e2f5a5d09bffa038643e2ec1785ed09cdccc0bb7887a56bef05439da767f1f9d8bd14697ded6da08749d8bfe3929d3bd393ca473e9aacf977d77a9abaff6529fda4bfb73b971b5b96c5b0ba9bff025dd7047aee34bb2b5185dad6595836ae2a2c658a31c6b41ea5250adef7f512c1c60ca0c791f15f931f1a4146b3868ebd00bcf71b14c1365b98d8c4b1a28d73cf09ed2c41fa018bad2c8ade60763148d11ba3f5a9784f712f3130086928bd91323cb12d09e9d9d2cc070eba7c04b688daa4cbca774e5db37d3203df8e357c80daefc57d28ff99a26864a7088c89fb0f66189f6b42a874a0af5a9d0eb939c80bd43fe48e3191415ee4dec821c0fb52c2a0013a200069ae11cd933a4f1d63de15c42764ed0350b17ea6171b13cd2f76698c9b5cadb2b5897bf3dbfe540355f4697d797c1a5c675ba843ed72df85e60c7688e2351b27d80c680cd1d70ca125c289ac7231ae76afd6f5f1f79dea5b394f565aebe2e2475defd7cddf6803b575f600f6cdd8b5bed53145f1f23e5e9b4dabe9e224fbfd47df36e7bb28138f98ebd99057ebe0e5dde5e6aa216a6d46d3bdd9e85de238ff3a6df4ff374cbfbefe6c660b73aee817d88eabc5b3f9dffd475898fcbd715983d5d79329cd131ee93b8739f588869a66bf56f5c23c1e737e605fe0c206fd83de60b4fef0785ebf2671ef16fff623914b7f2c7e6609ffa72ac5736cf052c76d27586e5f13aeb3edf9672f6e159b9cb639d68ddf965c7e6dd45f6127cf919f06ddc7b9ec97073300d7dc37fcf35547caee1fefc6c5a747d0e39beafa867f1e3ac8126b027ef93b18dfd4a748d2d686497c2f3604df6e3cab7d15906fc5031f452d0e7ace20ebb504bd7706f09d6c4fc0c9c7e19fab33c19cd0ea1a79f125fabfce265788e73c007dca6a0d588f63dfb1e5e1fb97d5e6eddd3a2507b2dd7fe9ddf08f1da47a965a1615767516e9ff17a3bc0fbfda1313850ac3937a7fbc8734bd7509dc4ebbf45bdc4887ad6f2ff63eecfda5355b6f761f803ed830518e78c874a04c126092add9940024650d7b4c54fff5e35aaa10a0a4de6debfe7fd1fe45a6b2a52fda8d1dce31e219235e563bde8be1c8c5be51fdb7375dda6263bbe2767bbf83c72bac01df97a0c0a03c7c0013bc4e690d79b888e80e607de776eb381ff57b26d7c477e34eabc9ad5fe8ab4638ef60ad73ea75b225d14d967e0fb98057e9fcf5bc3be4c520b85db0fe795e69ed059045d11ecec3ec7bd0732afe4757af2fe3bfa7526e8c0747e380ef55d62f6fe84de53c3f627dcc12077700e11d5d53067fdf7e7a1bb0dfd77d68ecc4740f46c41f6b5f80014fc6efe9e783a71fb87c4fa7b50b74e6c8be6d68af38dce1f77f6999c45f6e804d976a6ab84f34c8171def103c8e215355ba14dcefc12ed78de8f53f56759b8c584d7b7d69794d6535816ae127870bfe91fe43e6b993f6cd7e0b5805c605293bf3a3bf05df7f6ae21fb03dd6f873fb2798cab737de26a35eceef56982f47298c70bef1fa9f60be4b06e64fd6e9f932a67156a5f7cc7ce6b194f4b7faa9cda49d12e2beae7187cf8789ee5be2c71be9791caddd795fc42b2e384ee97f108bf77f2bdb9681b23b1e9a46d8939b32fa23ca8d7077fa847bcec5231f786f37b419c51ba3f39f9d655a32d27a7ebbf5f88fdabfc9bfcf911d70fd72811dfc3e73c87edba7fed7c34e5e5dfae6d68ba87d077f2faf8feb65fb275ff740539d4abf9127ea23bfd6af739f27fcf67cbc0b95ef7ecad15f80280e35e5999f9cdc2399429b6cf9f8f5167f0680fde206797cc01e74fad74a95b6d1feaf59acd555eb38bb9a3eef9abf618e3b13cd0be2666b68fcb01fa3b45a52ae409f3fee1cf6fc526fe573649d397e8ab3d8cf9016ec8fe0ef71bb07a30f793bcf749e29537528395d31db273b3e63de8deac3610ad1b49709fb1c5e1b17cdd020c077d6652e44ae8e37ab1137d00dcb4a42f67af334b263aa9d1fe22fab3a339cf9da3d05a2fe73a074e44c645fb1655dc3418bf625cd6b49699af5b42dd8426bfc7fbf7f63c963d678c5fc4b50a228113e739e5ead0ca651fd51bca0a9f15d179d1367fc6aa72005c4ab1fc65e9c699f7d7d5f59157791c0eeab9d1b8605cf6ff417341796e71ee27d4ebd923994b6a5ac6d6baff0b3d275b3fee37ccc69dd05a3ee0e717fc062f8ba13b58e4eebbaf3af662e9ce7de5fab650079f8b653e5d0cf3c5446fbdc3ebfe834ace6f2ad955fd06ee22c8c1adf9bc805311d7a64ebe263ec6994fa016226f07f3ba5625d3253e2ea99ff9077e911d7fb6683ff19aee52eeb737e6b3f0ded360bb11f2d5e392e4b49b599614cbf4c373952a4e1aaa9179ed727ee813d7c6593cd7ee09bd37f272253185be63ded01785d47a9ae589ceebd8d40684bdf8af35bc42ce6fa2d35c1199bdd7bdd96535b7d608dbc48cf762de65e70ce69caf572b99d339c959e2fb84f627d4c0daba07cb245cca73cc8dc38fbd3eef0bcc31a844e5601d629ce1c632edae3572f2b8c3dba2dddb6b39d84448fea3cf1996a2a726a3d93e349729c820afb7fed0551a5b3cac7c2797ad81103fc6b9efdc1d0f7e22a44fa8d1a67b4e94ca6f22b9d7ce9372b0847bd5340e91d9ebc4e54045fb242a072c7787d6a4fa30ddafc4a7f1e580e475d073d5c73e7ddf6e728198cfa49fcb74e5134ec5ad7bb2602f1a9d15e418bd93df4ff19def75f7893e50b0afa32bbc13e33724f7df90ee09f9fd0d769d6fc3b98b3a485fbefb8e769d3c6fddff3731df521e079e94bb14e93781d75d27de25a5b51ac85dc2ef635e6e7ccb37d65c63e24b709faf137df019d474623c97f7cff3643bdb7f14cbf46d0df590e536f7563ee7f8dee3705d0fdaf26f43f0d7f9a4c67d5c66a2cc35441d382e3787c7ef343ea71883fda8ed13f043219955f6335126f176b99d87dbd9e714cd690177edefff8b3ec8e79afb63fe9e0070ce77e7497dbea277131e9fefbc5761f76449709c9c9d24b3212cb9cf06dd5f776c21bedd4a7f9d6cabfe135c25d4bc92da748df7d46cba5a9dfab6df8936505f72861f7c66ce008760e9598ed71bf8cf73b2a77f5b26b29b7be5eb7a40be1ff45ecb4a2ef0f616d6dbafdd3b36e4fd33c7afc337f631cea535beb58742a44f406d9efeced786dfda7b683db1febcd9e3f8c32c8bcccbe3be49e5f083f532b10f261a55b5d090fc1bcf19f62d8771601df7f7b7d7f7919c2c403697ed77c0ffdfef2f993e6c618ebc2559471a077b7f788f097a088981d76317cbad7b8a20c7b369133d9e87fb3c003f18d72df49d6ade88cee2b6ed3da4f70f67536769bcbaeee0d31de633c7b53f17c3dedbd2e8cde6cbeb74ee4eeb7eea1ecf4549f62197eb52c57caa71f60a6e0fd9e186c6cc31df44c3df7ef7ac4c4f81e76cc623897fd4744f71c72d9bfe1b5b8d706ef7ae515fa6b6be8f6382759f5a430f79708fa335bee689b9e4fcb0e85c0512bc589ff277c1bb713dd627b077e43aa9857550e6f71f64d17693a2bd806bd83a045b51e9718ff46e122370dbc6144bf6fb3d7b047cc1dc3e7f6deae9d348eb5d88ad0ed813a8978b75f32fb4d7571ec605a377af902dc29dadf876407383eed034d2ae1bb99e9e65d19ab3bf019371341ca3377796c68b3bccdf16f9ecf37d192ee13c107b9c60299595e7ec45bb91e912a7a813a37328e0905e7fb63f8aa8631b8137db8d1bb190e659f96ff4182c97b878fa1d3d8c70159f9312788eb9b6ba0c7ff5508fd39fcfd63057ecce94e2a290fd85e6b36b8dc0e6c57824c9ba4ef2bbf73fdf1fce5741f24e3ab3bc7157fd8f74a947b28af769cbe339ed777cdd575dd709ff37360d9c393f9c275a381ffc9bf89087bb8f8afc061861c09ff5d4a878075b98c50c47d334d8ba0ae56bb34ca3849c31333f4486dca71c6b3db4e6079c4336037944f1c735197592dc7d79b49da971d1f001cc13af4bf2d91fdba455dce758e3e174f8b95b462a3e17af6bb10e7a7b6cec22601e2d710e04394ee46dbad09e98dca67800c027909ad8943f30d19629d245ed0ef61761ff5537c739f4e073277528de0fb579fbd7326d35d1079d703ef8137af88ca17582bc2dd3b8ac6afbaeb2c9f1df5fc455ffefe393556c83ed85851656676f93170b2243c6edf1bdff27e2828ff58d1a5feb0ffc60afeb1fc5b3eabca8dfc1f2fcfade7333c1178fe4da3d3ccfdf60c104dc33c6c4d178be1dabee0df620cd6722b852e0ff795128b7617bee8ad7855c34d9efc7a67b6ae4fb98c921d2ec2c1ae637129f5a901cb079083c5e98f3e56d3ec8239c137537c765e5cf307647a5b95c3660ede386bdc1e545134ccdfcde6f6fdfc1e7cbda94c6d4d0b987dcdb31b9c7ed7540e453f7d3074e87f73de61617f49af3441f9c9af822e5c731b5483d2e3e3c751d6997d30a78cb0c25ead85c3e24e15e176267cfb576a1aeca91daed11f8ddac03badf701d3de56099955f2919d90ddf45023cddcb74ac6727d25f5617003894d7cad17a7982fadd503f739ec1bb57f32ef8e2c7fa664ffc6d7bd4ee643b50632dddc5eb2ee1beddfc6eda60954f06e797619f0ce0f4cb01feec6b97125f40fab938f0f65be5471075d556df0bd63df0bc5bbe25f84a225c6b35025e0dd88f502f703fe6e67555b7db6bbe0312e73f7c803f09d743e7fd1a9382f8984a893d5ac530b3f84b1a7be3f1f66d796cec799a0f58af4d26c102cbf266eab13a15e94871d9933c4b79b3f87c9eff06bf5ac364775c65e55d6f9413aa4d964ac6b5bf2b43eb7849c933e49dbc9f9fcb6be2f2b587c0ed66461d6b073ad1b2fedd522aef7cddaede975fd6967e485b7e4f642dcf8d9d604ea28a971ad92590d3095c07a69bc55a9e231b0bf8be7c07ea90acbca77485bed307b7a8302eb1969d13d08b3729e4b3bb0cb7093292c6965db3a787ae9d27a60136f0fb3627fc67981b6dbc1ef431bfd0341daf9fd3717b6e1b3f9f242fda59468a9d4bf535a1e6543327ed61ff80ef43d98d31af90b8960fda76a03655affc98cbef2b88a3528e21c339bf17ee3cf49d0c720b8676979cc11dcb296be71c7963fb609d15d1fad2b60f1a39822dcf619c04ab330372751d609e12167366355b8dcb9ae5a47a4e6c7df17296d4afbe739690ec97f853c85d159e781ba792775c0e80d1fb44fa73a86794530fcdc90273a7673f58a7cdc17a19ee273a5b5bd97a60ccb97bb8f8956d8aec49ccbb3da77cd7cb83359ae5e1bcff35fdda3c4df35abfd78ffa9dee277abf1ccf2f29d235695e38b44d79a6793cb1c8938e9e136c38a46b7077c42df41d3a3f913fdffce6b124c86e5d125eee85d7db84f3de4ba4557e02f2d922f16797d0eb2219720cfc4d1a796ec6b8f5cd9e1aafc55ca9953fe3e7ab247a2192d99033157836b285cfc03b6eaa6a3472f6b179cd092e007805a212ec3aa8f7416bff2119ce7292980dfa7cb6049f5db70d3f50b369d1ba10bcea967089af335c8fb78633b2fc6fd84bf2b8bcb9f2ed5ba2d339c0eb477d41421d023d3bc7eb41419e07ec8a3542faf52c073f05d4c8c9cf4935b795ef81c3d593bb0aad4f161406d65d301603cea1354ab2b81c30df51a86fa4bebed04f6a5870c015719f657f7dc74df4e69e6df1dd507987f932cc0cf59de550424d6fcfc05ca72374cff1f51eab1cbb9677ebaefb0eba5ea22db771b17c987708581b3339273af1ed994bccbb4eea4792ba024dbfe068a6045e924fb0afe288eb3c01de2483bc6bc6e742ce94d1c3bceaa6bbf1f17d4df7cf017c1e2d3ea850eb2996e994a4363dd2eb4f216e7313694f5be086a5b53481937d4978309669a06559542439c617b9529f246a633cccc57a1a23ca2d9bdc20a7d3982971917f2543f51c22d988eb056498dbdf56266bc91ce1bb43117d25c6e774de3d461df784e6e19eff15633a973417137c34840380abcb8ce42c952b4989d681be7b42e592669cf81aa3388715d78c686bbbadfe93f09c34ceec22bbfc4eec17b0b539c679b9d5fec3be9b1da9e7c1ed3d64cbcdcee81cd8daf550f9d09e911db70fb524c7eb60e7139fd8bbad7e67b46731ae778cf7d03e5c6feaeda5816f972b3fccebd81e4be6bbaed6b42d073aa53ca2dfc136d7e799cf636139cceef315f89b5afc9f77fc67307f0987e77ea02bc8f8106af70fe4617cc77fc8e7b9b03d4feb26c31a087c0299902b128fec3de68eb7d550c5f81bee3ee3f50f5693ec016e1ac94aa82981f613c6abe525aea585d70deaf4baf57cf9d919f39051bfa5717be77cf9dff75d122ea16fe46ddcb94746e08fd59f909cd82648d67b57f0e97ccc07db088da583eec6aa4fd4b6a49fc379f96ac1c09bc621d26bfa8a89fe00eb7e66f98554be9b384e14015e976135ebfe6dda7724ffb3c8bc9e9372502460532c19370ce1b3a267ea56af93ccdf83f15fe7c3b03ede3da3480e3b70070dd97d629950ab0dc95baadb60b9ab5f189ef0be9cfdfefa4f8ad92ef0ba5ba4f3634e027786dbba83b1f98e2f5cbf2bb36a3c620d1958d4ebf47c47bed562ffad774555eb87dbbba00b418d6b35c675aecf0996455807c47ad43af4dc137054022ecbddb4ddf92e8ec37ca1750a8a651a8edc9c608eb310ebaae4fec775a5982fb5333d58e6f214964f708e5af6778d67c1b859a341466acf513e88cfa470cb0ff7398d903e5b62fd98dedb77decd63bbe19c93181f7ab71ab7e851cb6279a47e7a1253e2e4f6df9da126a7887c0fbeae31a71797f7b8e378a0385e4107f8099da2578e4dc09f37be4336e57772626a7346e3a504c7902ba177ed22190736ec689306859b47eb4a7fb2708d35b06962b387ee9fbb71e56fe94cf49eafc59db8ef58fbaf6b2c932692f5c4e7a7452ebcec687c44267be18fec97017a76ee758b95d7dd2723890e5bcfd1f8d6d9af9df3ca6eff867df4635de261ceec77f7b10c3bf0c9618f26fa007c0dbc9fa1b23fe13c9de322df023e52e4673d9098ee2ef0437cf65ccece17641cf10790f7f17622d454d09ea9fd565671a984f74b3079b6f220f680e3f5de7b3a067f0eb29f7b5a38df20fde60bdb6a3cf7d4a6b2991ab9db2c0e568bbfb84f81e65e308f105fd385613ab0be5c66f7d77f04396a2d7b4288c115d1fac19ee3622b2dfb2cff306739d4812375a35b3173f35a4d747ebc4d2c198b7770efff4dd779e2d37c26e3f431e79f81fc982cc136f486d69888797f7c7bcca4b636d8577e879face67395c60629677c6bbe5de0cf6e2b2f3935f3edc4b515df557181d2dfd7e38be3d17bc39f0afe253dc3b64779495773e0dc395826bc338b8b448d3cf794d47858ad974b1a7d1dd2d5fcf0a7651f404e50e0dbdbc453a14687c0c7aab7f401eb1fb7f11ceb71d40f5fe376de05feec2dd1a076ed25f46de563de05fec431d4d8e857f54a1b77a713c506c4536f5e67907c53be56983119179651add904b8c7ae5d12f7855869d8c11896b8c4fc8d759e1f8143797d4923cf3d46a584935fc20d7a3f1e5e8f79499e51e57ca30ba643588d989db0c7591edd731aadbbebc91ac703d0998b21f7678a6b5d903a179827caf84a462e92e5ca873fa0ba20c83b886350be2f2cabc93331b2230fa13f6b8b779cb95847232631a1b529b5ee4dccaba3fa70728e0bcc47047959dcf8d118207f8bc480acd14c09fd3ec4b620af16ef599aab9c45e6e19765664a321adc5ed7cfe7a4937426dbfc8c6cb1a05802466dd249408ebe75825ea00ecc9999eba1e79c9daf7e013535476e192ed46ed4719564de5d87f350795b0c6fd39744f0353fc24334ef02b6a71b7374cf27110d7b178293c6b93a9a71835aa0ebecb7c8631e306e3aa8976ab2dfed6b9c25ed71a3867efadea8d5f13992c4b2f42ed4c5acb5d3a15cdd7c5b80751178081847b1145b5a61a1dc5bc5e1eb96cd78e4818b5135c6c1d501c218483c472dfa38a7235563a21ce0ceddf9799bb7ccaf189b3a869e7a7ec5b113a8bb8aebd2e0fabea13f53300e0f386bd13e67355bf9f383be27e3fa8d39f28d1b708ccf99ffa2000e69bfc2d0c5256e8fea441cb60b7c18383f31c73e6293e74c86784f6765e65f2b7dd0893aee21a4fa9f69e7504796f2c6207b6f9b77023f17f633c8579e93bd964f5edbef27513e4bfd5d68fea80e7a26f173a17e976566398cb770bf02dfbd858b7d232e339d3f41ae64a01927bc0ec999f387c05a21391615605f15c0ed66e68a78f73e9fad17eb543b93b89e47e19609701b66b9803b82f57e06bf0ad297a1d6ae29f2c6837eac2da16fc0a96812bcab649f115f56b35fb07f698c0aea269c13efba21f51472ec073268dd38117bef75bb91d72b43d1ef0173523fd7f8feccc4fa69f273b397e6407857b47eb57c0a358fbc1eff5bc046a1f6dbde2d91a75f5167d05df25ce215e7b8ecce6a8c8feb6fe33b692d8256dc474d87698e8fd377f11a8768efad07bb64e45ce2dbee3cd1c49a6b916fef4333e904fee6bc327b506b2c2a7a27c62f4ef1739de93928aee760dd3b06981fe81c77ecaf09bac74cf76952ec6f142782dfe3e891697cada03e1fcc3bebbfad3b1417f78bf0ed1fb8b1818edfb0f7f1de46f2a7f11b5cab7b873989ddeb09ec54be8690393bc7a37cc1f3d823fd7305752e911c070e10a437e7821fb1aa19f527f473faec1e6a706cdc2cd052d1af6e1ef38f464e18892f7bd979e5cf94f7e28ae41cd4b4f2b463fee12af29c88aa6d9a6bc2e9cd5c6d0613d705603a371ac3b0d78972c6bfdf75849a0178cf4ef4c19fd0dfeceb7e99ca9eaa38acef615d399dab95a7ee6f74537e5e1752dfd8fbced7860d9edf00b08b4e4938b13e038845917a4718e38e7d142f4aea6bc313db6fa2fef1559319dc3bc0bea3b15ad116aef89b85df5b84a784e31988ada6ad5c618904df8b0cfb5fd76778b9cff8e6ff27bce12d738febcd1830de9b844bb99aafaf1dff0e5c274299ed426ff6a7c65d44e7f417dafb746cb876c3ec6565ba5f2bc19e8331be49f1098d7a2d18d7c4f5a3ce1dfe9b6f53bc178d1bff1d695bc4adb1bd8bf5d177ccaf5be98de48c060dbdf9924666ef8be449d03a2b66e25d0ff87b1eef06fb32ff183965b044ef433a37fe2fe103e7ea7a5dd6d6cb33b141c117c2785faaf341f91eabb3b3328d1bccb7c8454e6a341f910c4c5af0cb351f5896c58afb8474ba3befabc6e22a8ccb4738235fa28ec7f5afb0d780d930e01d506ba47f077756ab5bb151cf419e72fb12ed39a4ff00f78d1a83ce54c911a80b49631e6b6a372ed35833b0be0cb928f92930086eb3b1ce32bc33aecd19f8f83ec27e9ffabcfd1732a231e61c380556de3bd6fbf5418a64c1587c3fac8d83de4db083b5efa14e26708a804f47fa0e8679a7f5a6569adbf5e7fd3f826e86f6a24e6a929839e6f956d1fc896b88de8fe7b596efd4b44125efbf800f00dd8bc0b3c3e9cf81de25b5201efa07db640cef27e4b1c6829f5a5ab720177d3782bce19f67386d1b6afb905a2d82befacdda2cf2fa30b466af1f662bef0afdf5756b4fef0ecb13eadefc555b982b8771ef6409d4f6009b30b6d6b958b368c4d548627e2156cfb4e6a7153e1f547535e0dd0b9c0bc2e988480741b2d6bb2e1213d966ecf777f1acec8e4277ae2bf3d7b0f7905c1857962bc3d56597d57b11c682eb2d0c85f140bd4c711fd5eaeeb89775b3b698706f0918f788bf0ba12ebec0a30c3541b87a9dac2ee3441f7075ba2f7c4d4f5203aae6bf84ba4de11e307a681f0bfdcb4f58c7adfd46239f1b3026be5f0cd3b8d0ba6e44300bf5b1b118d8b277723d822f6bbe0bfaeb2239e64feb3ae9a5fa6e06f3c3d7ca98bb52dbb1fe0e908371d9b3295f7cc8d77583fe3cd565c73be66610ecc9d636582d29419e5435fc487ee220317b47b68f8d1ec69960df63fece308157113f04ba0df3ef6cf03966cf7c06def51075705e18e638746e4b5c0f9eed755fc35c55f85cb9e8bd9b58714fa1713dc96a68fd75cec6ddf3c0e7a274f3449d7523cf3e47e01fc9f05c28485e1987890e586a6be5399bd0c3718a893eb8e05a4f6db928f8bf5446d3faa030a6a1b189bcfcc4d5774bdfe6742ec18e88adb5437276ecaade3cd4cccaea7a25d87294b38de6938d8dcb7ae5cff079c5fb41b0a5c66ebd4ff98d9d09526b52f23e76b6706d99bceadb68f667e50fa86c9b843ee49b9d423fa1b96bc8e6b8adb4fc42d78bdc295cad50e04fc79cded837d9f61ed9b3cd7b43f08ba9d90af24b8d5bccfb0b391d7e2cfa14c8f7b81edeeb9ae1e778df2e7edfed9a455be0ec3f7d2cba71b4defc62f8f24df35d6f10d7bc801f8cafc349d783d6fa039f0f77e6712dd1a950230ff6329febd1787e16e1f5add94eb0eff2a4a5169442b04182ff09f5c9117dd3ac2ea118a393d4f16ac61449ac86dd039b1a1e9ae42cf577f6e828da6dbeb2b75af11e806fca22c00b385dea470e4d17bdaf047dcf9f827f948f0b0582ef4de4a41d57be8f167f62738d3dadfdacfaac9ea4cbe9e9e23ab27a8f057f3724fbc8bc927d28e25012332ba34e4cf28d700e213ab3b86e4fdb3b06879517e6136fd60db46b6e99ae866d5bccf76999d733dc01ebaa46203bf70ff69cafdb9f7e07c7797db5175bb942fc1d03cc7520e8aa12fe07dda0beac13e49f795721e6e312cce0783ef8d67320cf2add66f1aeba62ec1cafab38f7dbd90e6212c2fd4cf13cfd0cd9d7e23b97fb162cda69525827a8c3e51b6ae0b15a3b07a4ebc41d270f3ccc4311fa19f0fb62bf3af187e01a5b7d7ebf465ebe5d8dde414f077e9f8e7b097d9be6f9a1e73ba17795609b5aea47b660a07cddb6413613ee4b72bfd3fa4b6013df9d7721e6e396243e269ef5d1f404f75c03eb954bce471553a2f57f49ae03f90ceb2f84b7e31878e8ff057be560997b3526768e50137a88fd73890f39a6c5ca730fb87e5496257cce117e37e3fa8135d4f20d8e912d455942708ab4d6525cb8878f39f8de6f38376b708ea9ef03725f9747f8fdc855f07e943dc730bfdc9cf4775107384b3a2b7f46b18bfc78707ccd845c109abf867d182660948f98e7c43884b87fb5b620d70dc77b466cde81671530d4022639e7d7ca42fb05ad7dc5013e3b472397c6ab28b77067e53be8bc5518e94e72c2fe48fb107a2aba83dbe315e88e33f7b78926e87ce7953fbb259e7b7bebb84af895f6ece5b2b417f98bbdd8dcecedb0b7f2a7f95431f67167a686f3e321f0ec3cd297b777d1c63d129fdd31ea58c7a8e829ccb781f50a215709fb68385f3cd2c9491d6e4e76366bab627f155feb37b6c87e26ba52157b2275b8037f962f39df7525bb6a791e2c8ed165f968b2fcc1167c01f4953fdf14a39a00060238baf1f9abf5a9ba3b59dc8ce8cde2fcf067c6d5f24364b8279c6380ee9b4758d6efe127888f12e247e3f980e5f0d7eed17d5cd239b223b9be9e276f25cfc1d4b88bf7b17a04fd7d2eeacc09abfbec5ec5dc3bc2e1f0ddf6efe43bcce9fa469ed1a55cd104b7bb8b3aefc7b89360bb13cba673d4b1d2a813e6f1d6467ad8093890cd21ba53d6245f5bc65b44f760d3a78e6b750afa23c15049eec7efe88ac4b76708786c92ef45c6aa05129d0ee79a8bb996e9e64313fbf639dfa46d6d0226ddeca1fbbd5c790e9ac32c849a29d817629986929838e76cb2a65ccc6af601fb6b0675b657de531a90f872bcdd601e30e0b5c4f7455bdbc29a50fc2be01298cfb913304c16d12f014fc0e1fa6bbaac78af36637b4d7f7153b765f5ead7cf676b98e451e196484621bd03d9c22b0f9d7de072025f31c689613e8810cea718c793d915b0662f3bb091f8bdcefaa5674dbfafac1e7fbda6a6a65e2605c51d89f8721c2feb13bb98d5ff062e9096efe45826dc972fb1ee38c6338de79b46bbbe6e3df37bf42d071f10b33d3e415608b1a57bf278c7c5ca915ddae003f83b39f9c462a48cfb156415b6b9896e54e387cf8b9aae705b119ef268b44923afb75979e19ed65843fbdb1a21fb848bc7225bd94fb20f2e1760bc865cce0cfc575b3b073fce90e2fcdfd13d765b993d3532dfc9d9b0f3b8e31e128cedeb863ed263bbe7c4cc72c06ccf55160f9370d1377c3f0c0fdaf4791c285eaeb2876b73426ac431fd988d7779acb0bef0fe13d1394e3817d43903b686e53903be1d78de01830418f5eb39eaf40f3cc77dac3d23db5781da0fc06987ed0a982b2e9ffc5be335f39b03f91b1003c176d012c730492e854c47813c9295671c7e723f505f08605e5c2aef30ff23feffee7ae57537d5ef58bb07b4be2b9ff7b327ef21f06bf2bc586eb56fa9cf83cf31603510b87a65667ff3a1e5a7153a33de95dc1d4c9fda8dbdfe0170832fca7f5a6cda7d2ce075a1b6f41d7e6d245f9f4eefeba7d4d15c258198c000f312ea7b567b97e849e83dff5aa69a075ef7d656cbb62edb56a681f471a8611092fcdeb8ecef62cde5f29fae79521827cae78f6d3a751f6bd3d36a2bbbd3b9ba0423f7b4f2909c57c1574be7d31ab9b7c0831c413561b9a983cecabb025e2ddeda79d07190add409e01e32d6601bd05c238661eb9dd0bc24de12fc3a893f53034f9637f47cb60cccd5f1fab24c27e5e03d416de9536526f125dddb3f547f6bfc06633d907c8d643e559ff80ce0f72d1cd1783f5e73c23d406269757f51fdef5b5ce27f75ae715f65dc064d7f0d5a6faf539789a0ab363022d47f0998294e1e36ee967bed9ac68df82faa5cccd65c0145e0debacf993acb9361b60f4d27c778299adb7141fb023860708d26dce7b9e676273a69ff3b7385e3f9d847371fb4f0bab6bd47ca37df6be3071d73760697e315b13c847aec09fb2677158f0ba76f53399c63dbe6dd738e2b8fcbdb70955a9e7b559f08ee33ce4e8d99bee2ced9dd9bcb78b72bbd97d99412fbaf45aeb6ec0b7c47847ef615fa0326ef79fe66d13683f358cfaf522535876bf3fc74c2f8e5c30ef5f96d51af17496c0c09d71ed7d77abb628c6d49eff2e98ee633121f1bb503653657ef71ee17feabcf91ec7c35f819dca66dcebfa7ad06493327ac2bb753e8bcd4f4d27afe57131fd7dc4b0d79b355710c89b34f6a3ede1dd4f730b05ecbc585709c1bc782fe33d171fd21c2e9f40be7b26d7e59a67d8e488dfc0ff5bfe3cf82bb5ceb1dc27917eec8b1e41ef375e243a075890c259dfbef29badf237f4af548911b04e71b9dc3f52063f7b5189bd9c7e540898b7c1b6a50c79e714342fe00e9bfa567d4163f62ff28d6f9c3f953ba34af39ce2da25c346e190aba8a436d069e438ae0e57ba700fcced8a73cf1417f69f8909bbe27d04b98ef9362d1313f8dc3e9c5d3748cf42252af90f87ab3c4bb56712ec25b23f89cf561ef6d2eacfb9ddc937afca7cac1482adff97dfb09f20a588c7a1f6d6797159ea7f5c71c6306e81e5a78f9d3ca137ce81d986f9c73c1ced26a8beb791159b225b90e944f284b8ade1efbda976920da3f298d57c4e5204f4c81076cc7f980f7349eb0f266809b0bd7380e1574f22fc815f0437efd857d1699f91fe05feb60bee809ef97271c387cae1fb26169be06ba7b894d950648871ea1f506598a748263a439fbb0c8f350ef3678fc2c9f3d6bc4be9b317fe796e51ae175c7efdf331f49d18841dff315133971c1fdc458bb5f687fe233b9f945f9fa2ad9416d17ccf732377b07b4de482769c4f04d723763d9f5698f8ee0e3c7315595d686b4487d81eafcb098b0a1449a4abf97c6e6032263615cc6f3e6036280036c2bb93db0d9691f832abec3fb36b6a1ef0036a5cdcf6bf958c70e7ce71c2db373643a79bcb98399bfa3cf35de31bfb0bae3efe8bb79c6f076e07b23584e6e7d6af9a9ed79a7a01f6bf539cc930606f4bb18ff5135b7135d12932ec27dd821351e691e448d5321f4ba6ae43d784673953a5f7ccb1d0e7a15f0d5e5107f27fc83c8e6c77e112e8ec7f51564e93dec10f8e05a714377395ed019060ef58dc0afd8ded6aed5e6917279257932446baa087190f1bc5b868059aa7037a19eeeff3f1f7f0dd7b5041e8f99111590bf585ba79631cb794fe83d0667b1263b847d8ddfa3d478d8677952ab1f8d6b60b7d402e1e323eab1052b9427a40e16bb271d1c6fdf91df619e6951661cac5170b7561bead7dccc37a1e99ea8bc26b1aee6fb90cd2ce3b9c3e7e367be449ccf24f3afb073896514cd97c7be30a94fb4d52e6e978db176dcc706d10937753f9fcca678c06b77a7ade6fed9c0bafcd4d60519cae719e93bf00bb5735ddb352c208f5580d80ffbf7c2cc9510e754497396a4f53f1946bbc27503e660896329424e6f7b2e14cfb7896330f57e0f0997f150d0d36bd8449c97335124cf1a141749effa2c8b192652c8d3a077bd3c37630d39188caf3e2c7a258b1519d8bea176d8c4cb6fa89d501fdc220d72256e71c7cde3b2bfc3b804b8f3204719e9fc687f85847f02e95b1877f084730ed0be47e7cb5ba6d62db8bceafdb3a54fb5e90b87513428173097039c7363e4c74cf5ca9767aea6758871ed64efc0bf715eee675cb8058ed1e3bdf9cad5a6a6fc7d62ee31cbcfa9ee55e0f70e0a861d2c84bcdf1dcd6b67719d17e53f96d95523f3b2f7d4cbbaca9f0c632b5705dc29890fcd424f3d733507706e0ff937edfb5b29aedf98618adf4f908fab62fc289e9f1d9e7fafc7f55bcd23eff9defea03633ceb9d5338c35b9d1785fbff7b61e603e5ef7185bebf70d6dc3d7ed84ec271257d909e791bf4f2625b2db6667522f0138d1276a1b3eb43ae76f06f88614248be3726093b9e37d98ff1172eb5e76a9ab6f7e59c67bdda6e7edd908e35601176847984ff21ce7d8e7d6ee17fe169612e72e6d533efefdcb32f27342b8009291ddc5678fe6b4f7b7dcb35b7cbe8662ac9cc6102abec41d92a536c5e1ebf1c932a0ee11c49fe2d1e0f0d1782fcb79c7df7b50c76bbbf2ba90976aab55ac13ffc9305f58ef97ee61a8c5cecbb1e67e21f14c22f320379aeeef668d3e298e52ea5799459afdc4ef9bd7f5208c3a4b625b3a251e6b8593b3b5ea59bb048c5526ee41417633ae0b1c6f71f7245e9921bb7f05b151feaeea95969e08e7ca2e9f30c656bcd32a2e3792631597fded923fdf654cb8aad1fee9421e0137f6bdccc706dc2b5e17fa5cf11540ce4f1197837db475ce96d97fe6ceea7f0281ffcba9fb2638fe6ff79474ec2c267e071687d607ebd09b015f20ae67c0fc35fba8e8e6151f9745fd5cf04e5207611db27a6fee46f023603c1ab425dc15eb81152933d99e34797e82bfdf9bbcbc0f5bf7686b6cb4de16c3805dd6bec427cbe4b6e82f6ec94b96d9062d795f5b864fb954762bf8138579227ce41857ca63d172ee7ea9f97ae5776926cfbbddd4ee4fb9cd4ae3d4595c240d9e2b29cf1ae9cb1b87a97fdb1e76e4de12f06f158714fcbb00ee60fd026dc465de7bd37b557fbf6afeeef9067457d7e0fc9839b74f872db2c310ee2051beb135e7654dbb2e228e3fcd046cabc0e33578fed4fb77be6771f27df3bd46f39e24fccb044f0ef8717b1d8a7b70c9fc24689f2911e8b7cbd30ae7ce927fbb6fe19ad847b29c0c5dccbfaef6dd9d1cdb2a1e30453abe98670fd86b2a87b15ded5df3b833e3f587679cfb71677d1bd84b98073ef784af0722c6f82b7be7f4decc1f81b60197bcddfc673c87fe2e49beab9077f66d9b6954f78d7e23274ab45d309ff5524532becd66a99e311a398df40cb7e627a2734de784f9f7003be03e252f579bd4299a057eff3fe3d191c44dabbcc09587de63178137cb2da3ca5d24fe5e415fe4dec5fb69772befba41771717332272bf7b0e2197536dcf5fe2dae4ec802ae792700cf0328ede131fe540e0ba98ac9f4e31d23d0bf7668d20664b72efeb3e652413913cc1be657e0e13cc6f83e74fcf5ae7bde94356d504e7f9727d6fadc9f1dbd29f4e93add88f89de3f4dd6dd1be4eb428e665ec71c917a62e84e6c6bafe235adeb99beda1b3a6ef8e997725d1cf4089f72b023dbf800734a6af31f709f67c8e6c821ef15c7262eb80e0c60d0d0ff6b2bafa7c625c3f703df7142f375b64efe317a67f533e97ac930c3f57cc5f188ce13dfcf66fcf0de1ddee2bf621c09d55a233b03d7de0c7d9cc312d3efb87e37ea77ac078bd05b0adc7aa1962bab91bb869ca7790f3006abedf42cfa5566482f3bc69aab4cbc5e31f1abfcb1894fe75c4576cab1e2235349edb8862e0b7f6dfe7b690cf9e5da9e039d576794c663de7ce273f495ff7c68950cf85c5cce0bafb7f6b8735d9da76eb557914e40e40237e7328e38b23619b7cf9bb9c47fe5077b9023cefbb602ad77f960f9f02ce76d2fc9a5a6f5e2f07fd5469e6fbb2caff5877ba6d19fb94bf588162e85f5d399f88fceb267ff4777153f2e79de77fbbb7c19e7a1a45f98bfc09f2d2395c48c5bc749ce89ea9c97342f0572fdf9da71f8196b486c7d86e781ba6fbcbe4df3c971fb4bfa3c67379b49197836ed9f197dedd2661faa3aadbc3ef6ba96fa5f88fe547135107f0ac4c2e2db0ec91d91a701c75ee70ccbb4d8a541d13b43bdd9fc7a1a2f76d2bd02b9ba026e0770846a4ceb99523b04703a2193cfc0a937ace6e2fe38b8bbafc5e7c7b82c25d85296c75db81daa8fbccd07f4ee247b4195db904ce6d4eedf25bb8376ed724ab4092bae31c6278aee9f779adb1676ec2cc8c9ba2be169ccdd739fa34bfad15148ed15a6cb3c7fea83df70bfe7d2ba20458b4dc7b58bec8e80e0d2c2069ea825564bf533bab70d5abb7a5ce352e4e6bcf28bf0fdc53618e8f01c467fcfef0d3137d5dacd896f2cea54fee4ea33fbae1f91c48cc01f43f1e41837013a861295389717ddc971c9f3ec629c2dc650093811c25b324dc322cf23d3b9513925fa0a49ae2cae6da5adfcd91ed7edea51eedf6de875a1762dea0f379eeff0298a3cf1dcdcb1bb9bfbcc532feba48d5b635ef793347f2fe35e0c3557a17dc638f65a9f286709ae81761b37f9c7b9b592e6746c43dfb1793956f731df914f8df65fd7835b3202cce09efb7fce1e014ca3982fd3d0d52535231b79fef7787dafaddc4cf773701897522d87066207429bf57c9c88f0a335736c84fa19951e48b077c2fd516e52a97e5550bfb70ab9aa1317634156fcbef0a7e9b844f76d165bebfe1fd91ce2ef73ae0f386e7abfcd1fbcafda738df595edbbb830d64ba2a7bf6f493e06f34960794dc6f6cb1a1a655c18dd378a49ba11be0b1df347d2f7a0fb8eb38341ae7f8c9c771ae7a17624919dcc1ff2b678aa7d37f3d15c2f0bb7a077f1a7ce636fb9984b4b0d0dec27a5b601c86c86df6ce6bc0ae3053fa3e3195f2b5daccb40ec1a526b457a07615bb20d53c0fd1efbf7b9f92941ee22195d401d2772a7433e20e483831ef530afafe9bb6ac39ea4d9981ff71c6c54613dc7adb8f69ff109c09f7159834e51e96d50c31bb7b54c6d09df9bf44fe8738de74dfa87ce495cf1d89b861678f901e7ac0fd305cf05c0e2093c3f89dd85dc756f99d66d0e797bb27a87dc3aab47bc9670dedd8471fc32dd58fcbe86a7d9b7e82e1c0e71c6c7d27a359f192f03c83abcb375e37d44afebc120dedad9c7e24aef91fff8e6d3fe75dd7f7675e09ecca3c2b94931082f180ffdc67c0a830aeb68384876c09977f53e92c34b0be995a67b0a47d396fb2e3f85c82635faffb15e9edb38b79e972f4f29aea784ce4cfe68dccfcbf2922ef54b3a9f5fd2f75b15630d8ba75f32dbeacd981e2ca37fb0869b83359cfe603e9e587effeb7ab0243183a5a50777c6d2057d7252eefe45fd1aaf07bb9597ec20efb9636feafc35346e4bef25ec63c2be32e0f6a3bcb518e7faaf3572906d74e3638cc02b5a1865d899a69199df121de23764fd139eb71de2cb953fd1062e136277523e0c622f5c717b501f6228c4ea497cee18785d95e4e81c037f40e3791c3f20d716d143eb3e33a8018b65e62f325fb7fafa8d31971659d729c552a2717d31df25c121305b4265f62ff30bf363a0f33dd69fff859ad6a3d63b07e932950f139fef1b7a37ef3b6cdcb9f8fe6be4f356311dae3e897ab8f873795ca7c9f904baa0a0073845bd66cc2c9a1aaa1ccb2ee21c0827d6ee0731887eef4d2243a99f9ef4a9d29fd759bdaf07599efaa43926a21fd6f3dadab06b55cc67fc5f71823d81dd2e8b3d3ef49dd4ff445f8a4ef3e5797d222e37776a9a35d6a2f559f19ddd7f232d3f8d8dcb1ae9bd776ab3b5e6e109f9185bb497ac8355f9b032b8635ce075b122ed9ac765e52f7c37ed2c28dcc3a463e35c576f795ea13533dd322e7b79ac29e7c0b7cbc0cf415f048cb93f237cceac8d7d6212acb3eb9cdff1f3d395a7eed1bdf093b656be836cd97564bacb48c1e77361e6c795efd4db54a32df517397938cc95d0b701fbef9a3d7cafce7fd676e275793e2e5b32a67a1f4e91d6e59eb3f398f7016f066bcc7bd32b13af8beb2b6a591e8d0679bc9d9e437f769c68dd73b4a9fabe2cdc1bad6154c5ab904e6e00e7052f17fdceecb0f2667968d0fe6d7668ad26faa0c2dd56fa8b641f6459bcb5f6980b59327fcbeb3ef272656c1a65bcbea42bb0ff2ee9e37912faf1fc299f275ca370abac27ba5dc97dd32d021f3805787de2b3b907a7d0061b27b637c9ba77f731d93bb8ef9bbd380f16f0105bebcbfae11c6bdf9b172cdf6af786516120c97d21e4365a6b1cdb1fb3e7baf81cf9481683ad40eb9591b172e3205cddc0ff6df4d098d0bd12f90be1f313cbab163fdf54f9faa4ce05e63bffc471370e53f172243eb75a2e34d420efefc8fbf604df517aaa642cb9b21bcf2fa9df99feb6f4e1ce2775ddfc0eae93b49a7741b71eeb9bfda470ce51b1dcbf9683cf88e567d7f2bdf0784ff1c8bdadf4ec332ebb242e09fcd2d573c40781b19ff837b43e1bc107a1fd0918ccd5adc6ed3d52d2403394404bd33192117cfd00327ffcbc5a3a993bf42c599bcff9a0807a8ce695cb436de694933c6f34dec25e0f3e572ec618c13a63ff63f63627b8cdb9ec7bae1e616b3e36b19b358ec3dae8e5f5fa2bcc775b9d17387b509b628eee15a6efb3dc3d319ede939f75268f84b8e8f2c31fe4ccb6d56d3bda865964e61bccffe31e63a27786a64bfd552aa9c1749a78d5d9247c7f5954ccf2497e8da30df0e395a43ee619d7cea99e079cb3f674c47265c3d75c3a263ec66903bfd37c10553865fc7ba423a039b74c354fccec1c72dce6df92291d8af9cece41b1637bdbd7ed7e5018ebd0bb707753ffc830e2a4560727ef2a2c74853d96d50b803c97a65ce2e50d9351378c8fbb8a35338c1e6b4be4371b7cd2f78ecdde7a55abb3c1e5b3509c3b1a73c5cfbf606725c7f5d0aaf3c4fa5bab43d6367f357b1d7dd732ee3b18711843c33f0acf8bf843f41ce69d60fb43c065f5ff017e3a8a01d72d01bb8ef65ba35e22c32955fa717dacd539643a48354f552d44b68fe2ad7b4accfc18ce7bbbd0bb5e42dfbe4d34f716cd7b15a65dd469b2b833cbe3ad033c23730fed911c9dc95fa1f753ddc6b841acdb805c269bf2d5acfc7d1e7e5bc7199ce30e8e79bc0b3e697b4ee668176bee215c5f705d2c5dbc8bf16748aea2fb86cd25c6ad5576dc19dfb3f44eaed689fcbec5dedbc87ca4f06ebcb615d6bae2fdba33277a760bbd6bf133bd68760b7d5b817ae20ae3d0d97f14ee663c9ae59159e57d611e15f80ce710909cd7298fc913e5f33cf4c23c2edc53a0b91c0e1573c5ac4ce346eb92851ed8e974af00b666023ebf411eaf91acccb258038e4c52237d86ee45d807b42692e4ee81f990ecf96de83b352ce2cf74fd5073c19747f95216cd73b08f956e46f939c2e29ae31833950b3f3d0bf96d51189423a1884c17fbafb63325deba92baa50ff7fdcfda7f788ebaf51a3d6df77b655bc3da66c3d0b7f709da6fec8e075d7217f8b3d7c0a75c24e121c43e47d636e4c93c7866ac6fea768cb8ff992f03787aed688becc76e16419d49b1de0e7e06f464c9fee1c771adfb636e681ed8dd2bf0cddcdd23b5bb09e6e535f49325f1d5b6f585e6ba8af7d09778cf61ee358c2fc06d8b71bbb13153638ce7e76b141fac61374f54567fadba8b1b7770bd1df2be87f57bef71853c96e72c4f92cc3b930f3f908bdfd8572d361b9b4b966725f0d7e816d8c096db32e71caf9f605f617d8df5655270675fefde56a6717cf0db4ad71bd9e78fd1a6250f6c53e3c258329b48e4c3190c81174ac4922b914a39112a6cb7749c43c8f93e58c6319948ea6f7fce379c4d22f246d0bbb18d2ba7ba2b716e3b77977e53bf9ee5d8274cc6b544bae933d4bc66bab6e419248faa5ada92ef6bb5c22da377939cddf3441f5cf8f1446597e36c7f065cb0646ece749c4cce703658dcb8af825d84ce885ed91dd5dd21e9fbcf74c3e6b8f26fea6b5a7e5a996eb9f29ddb783453830df319635d80fcbbe6b7a96a586139fe426a1464ad7afa08cb22e26bc5b935246793b7b5f9182ad49759561cfef43e406302dc8e863940b1fdc76236eb90d8decdf80ab5fb04ddfd9678b4ff42fe84587f9edc5be3da3890bd22ce81f08e035f6f46bc1b7682dd4530d3bf2c7e0d38df77d2b1f718bfddacef49de5dacbc44c5be58fa8c5bf79190334e706342bf37a96ccfc61d774dfde3b53594d93698775f21711cb2876d0d8f27c2719cada03749f3d2fb5b9267bb95d571af70771556d4eee018a97d13744233ead847ee79ac73eaf16902bc092ac3d2d67ef71bd790b4cf51c7416b96c506e0e6f61f7c9be5d3d935b33cf2384cfd3afe5dc3b9fe1b775218a3afed6f1fbaa406bede43cf1cd9f976f1d9a5d844a7e895d112730acdbdee25013da47f1eaf679fbe3a70971bf7d32f7767794e58ba63f726a94f146c67ef71e1162b3fc57bc8c4eb83f1035772f7804ddcb3f4e40b6a4b6af6f9432775baccfce6925a798c578efc0e6c24ea13aa7c9664af3e9f912e033c59d847043ecb3ab714f0a0fb3364db6d12c2f7466af26d429fdcc1235ae788fa8a70fddbc4cc21369a68b9b242677b941f42effdc8c77be272b05df9ce2ef12c52b79ee6e173ebadf7287fc13ad27a0aba4703bfcf78f427b7a9fabac0e72b80d8a4984766e9c93eda0ed484ce19874145f25f866365792a42fe895346dad50e0d7207bf28b53390d5f638916fa67d5b8e902e903fb1df14bd73027825e342bf1b73cf4d80efaa57467315af79a9d23150b9c1f49d49b9fbf2d5debbebda86af3eff3b51610fef6ab5b904ec6d552bcecec3af1de4c4569f81bcfc45fe7ba8f4f6f75f16da4b709773f351d5dae264cef297b097fde90e739fcf2837d03a56e939060e4b0fd9de21f6376c57fef4486a406e27604f563521919cb7b5fc36f1d8675b1cc71bf488fd0f732439ab921c85fe56f2dcb6edbe963cfbfb31b7872843a53867fdf95f4bed7d2e0d77eeb8bdcff1ba57c7fb56f94be4aea6ef22f9194dce7b3db161cf0c9332eab8976a5f825c94d9010c67f05afe7f7f972c20cffbe13d42e703e259ef95fc646d4cd6bdb667e47798e42c56790af0bee5ca748fb81606c69bcbefb62c0fb4239e73c9fd06e758c94ff1c8ad8fa9659df877e0df391dfb9cf883f6bbd2847b2d8bcbc1e76a3b7b92d5e89cc0dda7327f07ae89cb6a9e097d71e9fe346748062b218e81ead5d94db72b7c0e8e21f4ad7f247b8ce95bef42ee447f1b770659b44ed8396d6b9bcce73aeaa4553e60d9efbdad9bf72dbecf3349df2fd45615ea3cb7c94cc9f9e6f546d0c55ed783d82af03341d17bf275eb2060d4389c1be0ee1f8c7359189b95f7fcffde18b776169af9f9fbe3ab727508c6a91f73f5043fc43dbc44fbf7738efffb8de7e781e7eca38e92e2f9ea61dcd650c8e7ff8dc7e38ce2a2a7c6c36a8d3ee78317a63b190c33255d0f744737e7ae2d17e628d7e346b3fd4741ee4ee0f0c17a18ad9fdda6eb4dcae77451b8b49615f19d2c099eacba877cddce62f5b2b64ca40300a707cc037a86fa19a8bec66ae7c239349415604b716d236b34533ebc6b1eea6a8de754ac6544eb55069cac6cd1d570dd227f7a9ede96dd19be97b3f8b6136b07bfa0fbc3d927eb1fe8649cac7f9b43fd59bdd20707f4bb1dbf1695eea76e614f20fd096399c1df093e6e8dc4994de36441dcd4e9428c0a30ee4fa9ebcf729223bb097d2707fbb588c18f19cc071bd87f66af43f26bd0bbf30f33bf25a329e66ff62da80343e4644ae4e489fa961afa0097db5cdd8b29e172e8ef3e3aca7ea20f227f5ef7ef7e4f6648733ad717a17e3b6aff755de9032ec923aef2e158cdf15f12dd05ee9ef150cc4baac5368b57e0420978acd769b2ee1219c8f991f973b2d8a5bc1e09793895ce79b0041d7a705bf9fb1cc71cfb9b0fadfaee73ae6c3e3ae88cbabd00e99fa641ec28c8f539633c417f8b3e9ff8c2d9dd8eebb569882dff893114c25ccbf2766c41aef55b754d49ee9af86ecaaf6900c6f497356cca57acd313d979dba5827c34b07c27cf54f2f1a5f61c2747d1d91c2f0eeb896e9dc7ebc136327bebc0bb201bef84ce0091ab31b23be3f5e010694e166be96f52df56f457d1dadb8f30a123a7e4f11891d9db04fe6c87e692df538176457b6d187aee05f6966fa82bdfcec7c6654d7f33d1660724e31cd3cd63a3861924394601cef16cfb3d7bc6d7ad3def17627af468fa0b7cffbebb8f8be5ced76d3a0fe7ea196453f398c80192a5bbf676dd2cd0b2fa6f8a95775520dfbdadbd223f24a4aeadd0577467bcecb835c862abb89e43d3b8adf45eb1f2ba9be66fae59327240b768fb5d84b127a7e66f49ceca9d36a38e6da03990fd768ee44ceb18d1f7ddfadcecc017a0b7cd6706f7a7b8fe501b83c52bdad7427caede5f248f92f6712259d6d83b9167dcd9b338675bec2bfa0ccb69c82d96b7750cfc01cefbf61bfbed18f869eb9c469ef1d4eca35b86daf2ce6fd0f76ea39dd59db58bbcbcb157d067efdbcddddfbc6ff37a3ba7a813b7ffa6e875eaedc466feb56a9fbbcbca9bfd69fca680ba93adede0ef1b7350869ea306777fe76e126f9637dad37a6532b4bbad7ba3333bc75b47ffa8e39f47ee69e51b6ab8ccdbf771a77aa6de2ee13ebdb5ff96ecbdfa191aedf731e58a6e3f03bf563ef5e73bc25c7198a62f5c93b1bf13f9079fcfc4f7b48fb62ef0aa879a5186e6358f3b5352afd62e690eef67955f8879ba3dda0716c3a46b8074ca0e927b51273ef9c8ae261c1791d7db24de359fd0f83ece65e7ee3691cf42d44fa80d9f603d45c33e14d16eefff0bbcaeacaec15dff07f587abc9c83947799d57a1bf7d87b83370349f136f737edfba4a62f64eff2ffbd5d9bd48f251aabb7da005bebd0fa8ef6064ef23cf283fe6d4ff5d712708fe6dd3d9c71a60e1d1fe67f87fd85f947b7548e6707dd7ff56f0fc70633d233e5d83f850793fe695e184579e7122b94569ace5bfa87d4739dbc96f05ddf5a7bee9f82f7ccac1d639d914674073aa8de33af11d25d2ba8c1781c3346521f6fb91f3a430db4bfc4dc6f4b3c434b64c57f7a7777c07b57ed4fdf6acede577ed9c1721ff9d7020c5352e0ff45940ce449de7436697f0e7196c22ce173a166cf80b5b93893ea0bc0ac45f4deb83c6079cc79643cd3cf45da03bbf63c12ea1df3b609be0fd03f8e614d74740b66dd69bcc9ddff09dafa6139dfa8ebac04181e3bcc4d75f5467017391279b953f032c6fa8c7321b86aced93d45f2ec8930d3d435d1633e2f83eea9fb5f99d697ba22f5d8c1f30f946d6e384e5ab288bc66b9eeb8ec95e22831a72abcd8750f102e9f169a23abbd053738eeba8e147065f2bc870907302af10abfbbc9d3d4d7c8aab7309668cee7dc77037f98be3f61673776f2ccb7ecf320edb8f5176b0cb4b6a77c87fb5eb16ff57dde0cf6747f2fdcd5695df6d7980244e7560fe2a7a2e79f9f04d9954e10ffe2eae1568bd4343068d6617a811f8a2a49eaa88df917d80f6009fa7e10c5d6fbe9c19be3ab3bd8dbb00dfdc06d949e92ed8da7f96666f8fce9850e3aae29143e3e1f8d2f0f83ccd2e57eae0bc42f65d959fb0817a83e692e470cea2eafd4ef22af257dc62d338d53e3b8745780bfdf7df02170fc1d837b07115de1bce34f1bd60cc929e10bcedfb963be3741c7cae039f4fb9abe510421f27621d5ada4731f78ef491d36521ee09f340ec8f71354fd29c45ecef67738cfbba38ca3895b9fa9ce83eedf72cb35a0f5ccba8bffd184db7d6cb731ae8cae6835baf4faf9f221dc1be89b9a8b8fd0deec7764a735f600ef8bab2f89dceefca7f98f5ecd111f765a402af78fbf7cad11e1de19d9f5ebfc26f618cce39c67cb8fcfa107dd0bd4db6480ea5bb80cc75ed9df8b75b35e5e619c6156961116b2ecc0bc3ef5467858e33a5cfd5df8bd71bdd31d48fa83462cb5e477e87fee44ec479fb30f79887b0607da4770f1f7fc82adf5f53b7a27b37a6b8b605d1d30b4e87b81f4fade973e0af7d65bcce26c9312379e2dc1d155b8571f3752b0d19de01ea45d4f26b18bff69ad60e03deb9e20a757513334de38ed34577f1c4e3f49dd134ad710d4a310f523fbc466b143cdf668b8dea9b4f3bba5e601fadf93a7fec8c459c4c6cc421882ff62bd2ae5c9ef9a0c7d7f469c15a6c567ec0719cd5ef17e0c800594fb05f0987a338506e31bad7ab7cee6ffa98cb5abfabbd8474ba5f783efe06afd0cfa8fc607970e057aec627c320a031c97dc0689fb6c6e15f22ed02ba10c7af80fdb39d298e3b101f7d80eb96115992172bb48fa1468871b24cc291e1f5598ed60462147b1a3bbb611ead19fdf731f4d475e8db6fe17af0c962725a0eb5eda6fad375f235a0cf22fb3c0fb55ef9311f4c0352e7109e378d32f094f4a3dcf7682c81f071925c435c231ae35abaf47d940fe6668d8e68cf1f42cf387dce0773f6b989e57400f26f407d14e0b7c3e3c579ab139d60b14d62f779fd13ed5be86759e40f0e38179cf20a3e9f56fe8ce4bf66d1747e49a7eb4b3a55a93cdc415c0e9da1aaceaef4b79b489b61acb8de5d479ad39d1415bf26d9d3ff820f03ea64d0fa534f29ad1be1975cfead9e644131ddfef877c6f3292a7ae798c8f5f11ac938e08de0f2e0c14f0fd8feaafffd1ee5759814f98de42313dfbd7a0e47ee219cd3fdeadc480e02e16139e2dcf9f5f3d982ba752a7061adb6335c67653ed042dfbee19a9dbb74ba7e2a5fe74f48af384fca611af8aeb2327b655cf67f5986b38fe6033fd27a9b893eb063ed5886de53faae65795c74f3647d49175eef8839bbf6378a455a79b69aa077a8d7d3a47cce2cf3ba0f34f784f491d7f56036771dda17d23fe7dfb844b202fb795e4b914f29d4aee7a0803a86458071f642ddff2a778cf30b497534a6cf1d23cd5123738931b77ac27346814ed3e26baadad737e96bcee3b4e0bd2c4e4cdae7c611838d49f17d1324dbf4fe3fd53d977163ebff621c3374ec857ac6fb19d74b03bcec7603b59b3ee7b4e6547fc7db1a901f50f6b7500301737251db4bc8295999bdf34a815ca675e0cdfef07ab0c061829eeb4c9b5cf915c67b1769bd3fef508b0c6adb9ea08ec468b38bb6ee2122dcf6943f7f2cd53db9fae0f007b9d498b7a570b72b7fa6909a0d7995bb8af3d570ad51c038d27dcfd5b67a3ee37b3f3b27fe3be50f81f871a0e565d0710f682e42d3bd0017bdd7fd5a79ee6d22ad3b0cb5aace91767c41ed0685f1b52a713e1efeff0637747d5ed05eaa9ebf497570818ba8e202c0b1c5f63590f18a0d48ec1dea802a81d7fd82f342648c35ba3e4b7ec370de424deead735e52fe54521f97c4d3f75887ef6f3d8dc6ecc9bde72a5bf1fdf2fc1a61aff933c61bc0de5fe3364577c17cb97c42eb1a99c0db9207febb50ab99d42625d8775cb38bf40ddd5dfb441f74027f76b23b98af55ece7f3d922f35de9f68dbc2aca7323e34fabfdf6d2ac53a00b351d855a0589d95b104e2d5a3f90ace386ca9788ea13ec1dc65fccb569dc169d84d6afcb26faa0c903549d71f9be28b22c567a1de207cfe32ddcb9b03f82f9250dd63f5973c788fc81f23197e44653dbbc9ab36de83b6f89c6d51a279c492ddc7bcca6aae2fa499e0cc5be53dd13cdef78de3d845e778b6c0698f7977e6d6e943404bcb7b43d2c636fb2ba85987f625502a6453a56fe0c235bb3b656e83707cb3cdcad51585b3fac7b2c5adb795c43be368f2287449fad316e5795d76eafc5781fcb352ac3483d2ca835dcbf08dc0f2ded2cb6ee3128dcf22f6527c34950dc10397ba70474746bfb7f283f5f711b76628b7513f7df19b703bcbe95cc68e5af92f049d1b1aebc2eb24d4e8106fa0de4dbfd1f8e17deefcf1391f755eea3e2efc763e0f7295f4f11ad1b63853308bc70d8af29e1b51aec27927940ef5c98ee8972c34c8a6b1e1589b27a11f73bd4c4d233e09099be1cd2d5bcff0c76d0e69a475f87745c1e5bce285a07e6232aa27596c55b3b5ab9cac13237fb71dbb9aaad2170313edc13843fb14dc6f37c38e606eab5078db9e464b0c9cbfcfe2ec03c42f76458e66939e6b2cc8f7b5f26836a5ce40d1e6eecc7db05fe8cc9fcb1691d2c3de1f23ee3b6b9cef8fd08fd5873f9a2b7e65c7fb36d52ebb557d865cbf8cd21a901e2be413d13d3aafefdf5a05d8ef7e9f11a537cb8bb7c2fe9d9bfc0fe8c3c4399409c1d9dc3e5a1b209da6503cdf15b983da4afbec5f94fde4bb9f436a7c477bec6dfd045b8f873166fa186af1999c6362e53a9fee76acb341270baeec53231b60cd71f9ed67c2ecd31caf677e8a99764b4f9456d7c996c48bcae1a6beec6357b7f42af7b7b5d0f225fc67d3772a1264e487081adcf993d649b1791d9ebbcaefbc7e95af6cc0cc9b9dbc2748b64d8c3b51c5ffa3279063a2fc195df1dc7ca03eea97d3874cb60b14bb1ad266b9be6f938b348eb2aab976f3d0b3919c1833ea0f98937ec3759c2e305a47395dfa25b0d6b208eff82e629f41cb85396a651021ed03826b2f643dfce5e495d51d9f791e7962bcfd9879ef28be8f2b236cbb09896af2f5679b7efa3240fbde326f0f3d9ca9f1d015ff3d23216caab73efcc68ae82c6176bf92954c243e025b7b1d9ac778f65b672f23b8302ddbdcd5c637e7ed97377cfe4ab2837daeadb1f2779ef52c939e11ec777b3d63b86b5b80af17bd5f409e0586ef4197ecffbcd444e00a8212cf08bc9f475c2df2c7243619f4acb7d027d079f0cb34728ef452b07e621f4803f5561ba84deffcfdbd7533a959d23a29bf03e19ee73a80b353637e9dbbc7f792d077bebe59246a67b42ff3f2e0f8fed09cce7ad601f7aa8466ba15ef8c11a3954173958a3f79fd8191c4f82ec3949bdfc47f5e4052e856acf7d471726b9b9bba8594317c7f0e6dd4f2ef7b1d712bf15d63d2cae5988f9ff80ff2400bf6a77ebe0cf515bedfca9705edd0d914be81db047a98e4cde7da2cf812eefa2f307f5ad85fdb96a8ca9b1d6ecae5b71b1e9f6b551a4ba3095bb8ba2d761b9ce6db5e3f15f061c26cb2798df10dbeacb95a7e6637d23a9f5586f0bcbb24951dd8b687f4ff57e61b7f2aae376e9fc917b5cee77e1ff3cda16bb838cb818fecdeff0ddf8833eb2fbd7a0f7c20ffabb95dc253f681beeef21f5533d580fdd28b0dcefee693ebb43f4bf1ffc16e94ce59c8ed9c4355f1e8d775cfdfe18faf63e34f33cc27545d959e1ee68cc41219e316c4b49e6a5ba17dbf4e1bfddffc0bf754e48ced9f7f77b43c7a37ea787f344e7a2ae9b72770df84f1e9fa1019deff5ca4baca8e39604a3c1c74a64b2b127f09756f3866c27e62358f933332e7abfe02e5c28448fc45cb2955f2ebf395bfbfc51b827a4cfdcbb7beaf2bbb64ed27eca79bd793958f99ef87594c9cdcf963a81b5f7203d681fd7dff3c8965bb2fc7abad79bb5c9c166074c28cdb976dde174b7288cd7ba0f01ef77bcd704cc8a540f643e83d63b8eeedb86af42c6c5c5de9be44d7d323b8ee772f940b1414d7db32bf7c79b72bd19d98c4bf3aa865a7e8acb81b2320dc5328d4da857f9ab2bcfbd7135ab90ce7126cf001665a5b95dcbccf2b858a684038072d5ec855ae1e877a324079ec0aadef5e1033047bd53381f9c13b051ae5ae84f591ff15a92789f21d6497c9bf777240e778a48ec55ac87d5ef211ba7ae7f26fe6083eca0b9077e8b2daef185638954a792d91650b371393b4745b80fcb4c89ca0bc17fca7d6c2ba9bd03fe2199bda4059ed48ea271e1777e4da81f4e3e6ee6a3ff5ddf13849b781fab7c9ded0c70a1701e156346daa3f2a9cd7fa44425c899018d7b535985f95dd1bcc8bfbf6b27913a3b2b7fe672b275c7ded75e9ff58cfa2fb47ddf5f48722feabe77c81138f95a7077dcd86fc59eadd94eea4fe6fc306ed15913f3f9e46b17b0c1e8b3ffcddce15a8f33e56e7becdee7c6473f7bf92fe6b3e3fc8aeeaf9df25128fc58d1bfff9b79459f2fdfdb7c9064bfe067f8b5cc6faeebbcfc37f34cb18df7d7b55784db592ecc33fdecbf9ae741717f7d891f43ea278177dcf7633c1a3bf68de6f7c77e3d079a71c0fcea74ece433c99995f89defc8c42791ff56d007657109d9dd329b86ded36fcbdcfc1937f00b0d598ef6acb43f9e9627ed766598456cedd508639795569dae65afa33be31b7e08e7ec015fe100e31a0be38ebddbe28bf89e4f5e89a4f80dc0b1907be53de57d580c83604874be21c5f96484bf2e6e9ce5fa9d8cb13f03f67c6d2fe3ef73ccf71f156ec7c2bc97bb40eb9dc222dfc2771c46e1ad64ef3af9dafb099d1b173816d3bdf5b24b5b754addc06d1595bfa5fd4c64fb18dd29b01f80a719fcb4e361375b705801d95a800e87e61fd746062c7554e44a08b980bd0bae9937cb906e4ff59e05c568539d1aeabcb99dea2c087d446b47f9b46f13497dd9367d0ad932c48fdb2283dd0be8b4cb1c62f861c7867c49b97e4be696e87bf5b1101fdd5ef69befe87b327977079b41f732c144fc28860e3cf6b558323b1b9fa34b3aa65cf494a7b2e2b197eb5b9cddf253bc4ba21965b4ce8eb1d63c5bb08f653112b20671c7bdc490d7391b86fea00cbd19e6a9c8932c2eba50ff8cd8c9c4ff2fb7b32bcc22e0e5cfad5844a9cf0063c723ed9a4f800347d4775b74b8da6f9e76b6e2e4682c8166105c1b1d43fccbd2e3745c0e608e7eba5742d3bdc4850bb8e4b1a9de426433144f2d366bb88fb733225f58ad94860e5fd975cc1e6df0f5ca62fa183383d78eebd73ed2ba56e0753791e9960f6d60fc2ec0f0c5657723acfb26cba2c23984bec5308e913fdbd6e563eb3d83eff662e5dbb7c4009ef77b7d001b2bf0ed2db5f35afdb4f8f92c2ee2561f346ebfdd478dbf3fe61fadb10c721ff9f696c348307c671b5682eb9f347e41dff7388651b50f587ec841bc371691f784ef2bc125001e85c68bed7b7a50bd7dfd80ce6eec9bddc82efb7f2c73938ecbfed69f635e9947ef207ada9fd027b80bbe6fb741f250dfd16b32ac8ecda8bd6fa20f505b8ff5a8c61c1a6558f6ffbccde1f730c6d7751f8dbfd1674f3be61fae02cf4cf4efcd43eb39f99b67705f7bf8bfdd5b64e65fe13cbd4cf4fe71badefcc6f5faed3cf27a5a88ee5fa8230979435f91a61e83f9208b8a77c8570b34f76e7b777d5df7fac56a32b6e061f836eefb9ab3b848aa1c36df96cb20fcac04cf87ffc8dd78b71f48be7dab062f3e0f038eb71fdf2bdfd8072db15fa815c770a5200737a755d1db47eb748bceeb77de6dab489e7daf1f585f267cdbfa06ea33055aebd8a5ba185ef3da3d27d5c3dad7998b819ebe5bbb009f13e500f546e5183a8d62deb97b11733e7494df2d583beefe7317907b6d2e77b47626dc7d0d5c19c64d3db83f91fe43e2002d98b307f7f8d8a4dc6348e7b86f43107b45eccb7616c138dc267602bf03eb4dadf7bb29ea53b17a84dc785fd06b647d12d684ce13d42704bdbda6a7b9e88c22fdb033adb8a6abf57d38cf7cfcb745d737abf5fe3bfc28973bcdbd0b73e1db1dde9ec779312d7853eeb7cdbafdf0f73fc1ce7375c67e8e3dbd85fe3bb3a59b7611f0af81ef7f42701cdc1c32fd07eefcb677e06765f86f6aa763ace89dbb1c7385037f2cf61bdcbd6f485be23e8031b4d9f3dc6fc10740719ed06ebbfef73806c7bfb34c3eb16ef5bd773fc4b1d76402f549d075007d96fc7f4d4e9f27e5601a7add3d706842be787e0abc0b8939830e9105da2c8f47cecd32f72af04ac2b903cc385e6fcfd9ac7c5ae3bad7f0714404b78e74ab715573a63b9e0f6ec9c82d42e08554218789700b7f86a6d15d6821c6200c69bfae10b70be7dd267e72d81b2e703de663d40973cbb8aca38ebd819a8f383e9743ae7551e52ea1be43cd6aa8c9bd3fc7c0d372cd031fea164a7d4f819fbf851bf51c6d9ddda2f67ea4ebaf586e1badd995181f23992fa1bf63bea3fb63bd451db70cb425aef74a7e531fdb643b3b27befd15ceefe90ec933da776d676ba25ee37074b84e5eecdea4a4edba3fc6b087bebd0da95faf33dda1bd846b31133f1de5151e52dfdf7d9c7be8674ae87537e3d1b137c178485c839af80965b6a3ec4c11db84f0da826f0d7269dfff425e89fdbf10b97417334e6511cb07abcf0bf5f38e3137cf3e5618164f6c4f3dc218fcbb1875a66fdd78ff31d687eed996cc2f5186fe8cfab60fd608e9e55017bcde87bf7b5f6deed9d8efe8fa54c662bb50fefbeff940e473433868c9be4a1efaf5bf6b2b85a67b0821dfc4ce633a6fff4dde524dde37f6757dad5aecff361f215e37d1ee969c61728fdec3df18b51c0371cdbef50e33bf515fe9b8750fe692b9bc77bf3f9f2d53cd56da328d3b6e19ce913c029ec51b70768c44ac4268f620af32f27a9b951776d9fc56b579dad692dff3485fcd3f464e1e15efbb8f8e7210f683f41cdd5ff7aab6989dc78f736fa724afa15dc7c3f60dd5c51eda31e42e12f5c6efe4cf615df24fe8e7b7065751a507c3f7cd3e1ef30fccdb5461b034b7cb8f5fae8be1f6eaf56b657572d9f870fe503bf6b5cac392ad9da0134b630df5b3583b73e837b86efb7770b12cf7aa916bf523d9c2de27c9c722cf4bf15e784d193fdbbb661cd09d1d603bad8e4fcf22cf1d06fee617b25f5ce000dda481ef24d6f0bab44bd13e021d6de8641f8b5d6aabc765a4a9e7780bb5c4b2c450d285f1bead714f410d735773f3d56d97da9ab309cdf7d4d30cc59f0fa6ae5ef3259bd72cee38ac3f9ee7de12d32d915e6699777fe3879efbe775dddf7a0afc3bb1cc076de1b11be03359f7b70beefb4f1ed729e2e732e088318d720c7eec0b60872698a3b6251ed1539311ce3325f943275fabde437d9abc4e19b035b323bb53f5d3aeef6f014f58f573ccdadca46fe5e09cf80ed4c82176eb31d2d0bddf3d27e5267d5db3ef1fc6b93e0ab78c94701f99971db52526fa40c1753b9d29c14b1d20efaf98e54be03697eb948167b33c5ae26b4fc7e56016f8ce6e5218ebb8cca86d23d52ba12f9dd992f407e29db57ea493f9200bb63392f35ad5b997eaa9d0d73ed6593c3b8fd7fdff400ce1473e8ad93ed49ed2b7b2bf43ba40a0b98b95979cac97e7d42e0f5beb6587c6b9c7ff55b6e3b9cc062073b01d9c9332bd4ef54bbaf00c65a5778f819feed0bf6b63df8f851a95e97eb29da9c176a6c4ebf4dad206372ff677ec0a929f80b1d989999f42d539af34f714977d99eff73c36aeb1a71e3f7ce31af9f37dec1bcafe53cf62dfb8c6e3c5f3ce53b29defa9c7f168761b2f7acf0baff7bc582aff2c16bdd95be73a8c3ad7a13374ce9f4367f8a6bcffe3bcf49e43d3d9bc69efff7c9acef9ad73ed785aef3951957f3e8d248a3a57df5ff49e97def33f9fc3eeefe9fca27efad7d07373f4f72cfc177dee5fbb1f37eb301ba9cf1fe83766b21d9bc936bc3defdf3ad7915366234789ff417d0bfdabf1691acfeffe75b77ae93dcf87e93f9fe6f1cf5be77a8c16bde7b833fde7d398a136bb9ffef5e9d3c89e3fb6bb7f3e8dfdeaad73398de7bdba5cc4b98d43a81f942523671f15c932d28e79b49de2ba730fe66f61388bcfe175f939bc4edf94cb3f8b97de730436a3d393b457e09c39a7f2bf403b83df9fb5581c5d6382f36e3e2f60de9fcf484f43fbe015bf63bba8fc5de74939b8049eb309bdf75fe879af4c668b797cb05eec84c7cf321bfa65876ce359540aefe0784d7669938f86f8040aec0b409f8dcbfe95f385f2ba57169a347fd0c1f3bdce14fc5ff0b56c42d3dd4cf4c1392ed09a0047d03d1e167c2e509f20fe2272de70cf89f574b9e7688c302639c46d31c2aa0dee3ed29b39ac325905f78a7aacc6a12a3b793cf91b5841b2de2d367a21cceda6ea6bac1ef13ce70acb877b8c91cbe8fe69c19293f363e03e39550d52644fa2b5ce43e370f15da5918377d7b7c9f4f97d1e173d73e55d0f6398f729e31fa2f59805fea179b587bc9b91808f04faef44d3bc8e09ec57bac6039c223b1f773079f2333b8b2affd4dfce01d6592826d1310d2598a7fb49c17c94329f1abf46df98b7fb7880048feb4731b2d6796dcb8d1891b8ed522a935b3983b0bd80f39d26e877e66c37d67bb16f1c23dfb8de7ce3baf0e7cf77b81a481e1da9631817ee25328daf709e9efdfc1a7b9d2b92fd9b89161f2c3d6eb7ebbef33ee31afb7a0f62e7764b4d725ebe469ef187cdc790d72fc967cd180ec59394c88e40fb8de46a9fd0fe0cb47427d72164b69d9c3f83ea708dfc55ca7d33eff7ac97fec132abfc24c61fc8f02314b7cafffbf0e79edff1de19c3e3cda395abdec55554cf29dcdc4865658679ae8e7bdf95dab48fe31c64cc2c6e42fcf18e74feb3aabdeffa3f5ab80f449b5e95e47590335db78df478db9e232aed536bae32ec8fc7f9cad4ee49c737a51ea3e4e643e6d3aafedeca01f72cc9758671575c16e3fb39adbff8b5fa79fc9ecc611defdece8547cf640ab851e0fc87f8d229f031af3df99ce255657a14ddbb1586931fafd49f9566d1bccb72d5c66d3e7a3eb7ad2078f6a59325e670379e7379a2d047195f4057aacf92f8c525f0ba2cc7b4926397349a7709df883b0c7c2743fd6bc656eb3af42ca2eff7e7323be8d16f06cf9f10f33ab27359e9304f4ce634f34cb9f3d6f85df7e669542f5276d1fc1b1c29f7e685e52248e3d09007306bf68fdf2b65e80f0e8137cb1766ef142ac0c521eae077eed7da9ea09c30a7a8f12e9ed7effa4cb9f21eed0f323eda1f05e9e05c8e6b16771c3b2a9c1c38cb1b3c6dc96ee55d739c0ff144f26983fbefdc3a79dc79afd6b6453e0afb9672e26ced3c36af59a02d5b75aebb6db7c9d7117daf3b8db4ee16ced652d4ad63491fe598157c66e5f74c176a64cda176629a36fd2b44a79af78f6ff3fef5fbb999a4af2f773149987364783d474502b9010e37c7353d66ea1ad35f969eec5e0bf5f8ba9dddace1b06e534fdd975d6a6be9afc853d2f779cdbf38bca0dfcf16f3ded0d17be087a8fb5317f499a53ab386ef07cbc843cfdd34da69792e5dbdec8fd17c3068bef73a5dbc307febc11aaab3c552491dfd9282ff633e807109631ab5e2b30e8d3d8171a56df86bf20cefef6cce39f17bcaf43e2a33dd7834c8e3f537de03fe2ff7129b6ef9ae1937742ff84d9924e871202374a3d696fc2cb6efb37e43aee2b97c386e5effc36d4be26ecc9e30a536c95e2203909e7d190b3e824c89b4c7bc2d8f729f562417c556602fb57014b6ffc62e07cf9ff7b1e5a89f144b3574f4588ecfe2fe905d48fd27a1e96c42bd2dfed7ff4e0c9adabbe75585edbdfe0de65578978ca793d617adad1d873b6dcf5778bcb7a4f73d3e9bb406a9638b7a14ad294f78254cc8e7dab6e2f918bf17cefbbac3b149f13aa2de761f3b4ae474858142eb6b7b8dd8128b713977713b686cbdd8379ddfd3f9a5fc9c3fb7c939e6f31bb318403b46b181ffd1bb4ccf19eb711eeaf1a18a25c875b0da9acc43ef9a412d2917f2369af13a3354d1bc860b24dbf393a5bbb7baec8f498d4abb746f96696ca3b21ef7827b2db3cc304fcac12df466e7a8709aefe900b63a0ff5f66722e8c710ea3a26be9337bef714fa8ee3caebaa89d9ecef0aee29e364018fb6555fe3dd0a8f6583bfb71bbf0f5f701f42d3e836be33df69fb9bc0cf1bbf4d6ef8b789e6e6abc63c251da839031ce06ebeea4ceb7d9ba1ef03c85bed2aab7a7c71a8cee8ef23af774accacd1fe0799bf0fcfcde275bdfdbc4b7f0fdf6fa7dfb9abcbda1ee2e37450173ceab8cab2e316b48e32c1b41e80df750b32a64dd767f6f2db9c9deb5a7b6e44fdd8755c4d7587423bccc641fd010e5d898dcbc52eff6e1c927772f14ec137667befe7d5fcc23092dfc0d75d902ecbda329d7d5804078b8bbd4a63059cce4965485cb8076c7bbbc065e569f0aef46dddbf40ec5023e77e1e431d2438e37a92b4c5266bbe0c6aefefd1bb98ddc1f5f3755df9e98439f1a7784ee81add91dbe83e08fc19e60b191d7badfc1f9eb371bdee3e191a879567dcc650cff4fd80f9516c05f03f2d731799bd4ee8db2fa81d983ff41ebdab44caf59c6895ee579b1774ef64b1e6de3c8d7b0eeb60f2efe6fd3f969edc6cb5f64c87eb23f6a7ab51912b8f7977baa0bf4566fe2b74d1781d326ea789abe1ee4e9a5706e3ac6a50d0bdbe95e810ff58269ed7d09f45f877b304dbc3f5cfa7a7c4ec4da34e92c71bc86dde8d5d490ed4cb4ee0bfffd15897342f9d8c95d8e40c4726973327d88bde75ff51b89b39e5c896c42a71db5c7b1ee60eb88b43cd257879c241b062b5fc2bde1679dc49c6db2b8eadc2d4dde3fe6af61de7d4c3193dacfc7deee2b5da115ceb03dc52f37d0ff3f1c4dfe03af4c651588365859bc3390fac36c0ff0843d9e2dbe2e78171ddb6639e2e71919fe322c77c4bf7738eb2d0745c747697e82c75ec7d32daecb03c010c31fdacc90b4abf33f33c568f70fe7d526770e5f5ca95ef741f9f11e0aaa2cfc31cd3752667f64dc6dd0ffa22911b7778c755694ec86809fbfbdefb5bf7366973817170eadd3d4d9ea579831f259191eb818acf045e23a4fbd4e7d29f931a5b0ff29c6b312f787f0c38795ba9d9be725ef2da3e0be6ddaa5ff3fed132ad13b707eaf96ff5fba5b209f01a7ea72ec534f48c8b077a5fd60d3da3bcc77f80f5c37e6ebdbc73bc7d415a7d3ebc4c759c0b35d5378025e37e83bec31c7d72ff98702e82edcc8cccde395e57f82b79cc93e1a49ead9736fbfaf96ce9cac5d295ff582f837b7e5d82fb9ae52bafc2968d311f631d837537f6c5f4cca19a25667a0a8beb39ea58bba65e57db4bad7161e73cf7baca98cb8944f6f6bbd6fbffb1f76ddda9225dbb3fe8bd68c0b8de782928784e0405e44e200b1241ede5117ffd1e35ab0a0aa802b3ba7b7ffd8dbd2f32ba5702451d67cde3f32441ba40eb29f0832dae9e3bf9f21c93e69f213bf61713f736fcce64e02b76b651d0dcf370ce08c7da80ac1dc79fb5c1fd48bc61be1e718ec788f302099649fc85bf65ef72fe0a716c0ef3925aa5fd507fbf0d67a8585fa5811bb4ccbbe09c1353b1a535e09110ddd038279eab629c57b1be54ca6da0f8790d324e69e1562def2bc5962683619ebf40ef0afa1d719d2ef03a3d667b8ad34231ab729c9d5f9e63df701daff87eaff87ffe2afee4de739795b13c13f77d0e3b9cc63f49bb421f0ae4ceb2d83e7c1bf08cb1ad4c7fa28449083822fd03bc5b608ffd31d642db1ece8b1c4bed84bfaf4bdc76df3ed5b7cdfaa5753c74dd499e2fdc35338df21d0ab09fabe3823aa202bb98ee99a67c03613d3dcc29f5ab7ab26fdc3d747f4cb296da0dc38e033d4936ee18f76f8fff1fc90031062c9e7becbf88d038f03dd2582782d6be0b5841535a1b3b187739e369c625c9f99b89fc1d553989f97d857dd259fcd63e69f667e3efb7e0a354e6abd97fed197a379092cb8a3c4ff6c589cc21f12b454771fe00ffccb6e78640fb3f3dfdb487fd9d217b373eb3d87de0778039c33e07c04220ba9c6b51d9f99d5a993a96d94a92f55562ae4475d0d8ce0d4720abb06e55bf6ba96d6c95ec461beb8431d10d77bcfa9a72ce3cc8d5c26616dd8d6539cc3c5f5d0b618d50597e0be50ef1a315f720e0b437ca9d3cbfb4b0119ec29f11cc21e54e6b9e4b7a5edd31abcfff2018bb80f19bdb65c88ed3abfe0f314781385e5db69d285650e5fb173657ac76f67838869c769fc823c2b5e49df2bb8e9284b33d8c31a4636d7ce619bba7a9ce91b10b79fe037a7eb8f1769cc358f2cb929c61bce6723356b6f04c34c9ec669bae1c67e1d7d4619f20ce2bbca37143ddb4f67ac27607696bd08f6656bf7cff1838ae3affcc6343816b2caf33904bf97bc86e89de564925a601df7be4df1b9d1e3fadd2376f73f24dc1bb12f3ae547a77c0bebbe3f67981fbec4f33397cc76d28451b12bcf7b6dae56d08fa700f8dd72cef877e0fbcc16b79fc5af3f843e3552abdaff3db417dc0edecba6fe535263c35b6e43f3650f3e0eaf71defe73d2be6e81be363d7e83e1b2c7ab3ec06f506f4d9b9d63f8f07a27ee992ff58e6fdfa780c4f8b912498a3a636f0d89cec747657791cf237d62cb6fdfde2e829dd04302e61df2e7f71c76424172fe1f4472fbd5fec21edc48eebbc75ba291a17fa2f6f0fe6d89730bfc757189b4dd7fff0075db799121e49bbbfe683fe0fd8dbabfeeded0bcddb09ed75347ff8bf462f1beb47deb8575ba397854306eb57eb6d7feaa75f335ba667f7f0fe38fc78a77b51dbfd51f9367c177ff370437344fb337d9033b7c2fff53be3c8e1ce1dc4b71ea1a19f83fafc1d5cfd76a1fb64de918ef99e1d0cb3f963292fbe829737ab7f9f7fcda5c56ad3791bec2ef3d5f85196a9afd7b1a15f3e2cb5e37726bbb1165f834f550a95d723e1e98a371d3309f673e827f56904997af4d3c5297430ff70380aafb38e7908523b198fc26b90d2186444b1e0e24d9a7c95b1354027a3ed2441a63e364a4f0a8de4b1d5d4fdc6b14f5b670e6dd336374e773736e26e60c4899f625c7d1aebe4ed1b5be96568eff1eac59c47fffc66cbff9d6bb76cb1f27a4e16c633f718b8a3f56d3e1cde66f63d08577dd9dc79f0bbc5a38f7fb75e76f0ef6ce36d457fe70d9712fe9d39dcd0df19f341887ff735cc7f67aebd10d6ec6badfc74efbeabdfe5f960739b6b32fecece335cfd76755d2443c6f2622f1d5cfdfe987ef5f8cf16cf1da1ddbd74ad62d807a9bdf7dc18d78ae73eec49e229f60bc6e4afd459957cc7faced3f1b338af0fddd5f0df136d83c643371dd3f29c30f9e0d9e0e8f786fd703a38370f7cd8151d00f733e2e5aafc41bfc5f9db8f728d12d2230afebe721d49733d351b335e13dc75ccbb4eda23f3806c158acbbec67d46f63d1ea300cf879f1f5db23f727e0acfc6df31d35e569b7343889d4230c62bf80d74edb31ba96b7969ad0d01cc383456c97e0934a487db8f8da2df987c3c52c356cb5916e74ce6fb6de193fa9a709a8fa5c0b96770a019cc717e3e0bba87964a6fe711fcf9b1114be1a8ff6396f590dcfcda2a05efd22c5d5c7dab770f41a6427de175fe582bf3d5b23bcf7ac72093a5ad61679e25c73317f735d0e42450167160accf8cad74de3a2fe76daa2b1b77f115a4c98d8b833db22f9ebbf8dab86a9e2f35e5d893d5f931c93bbc7a5f5e4e2cfe61738142a8d99c6437f03708317f9ec8edc53f3d5c03aadf03274b5e714d4f8ceb43e177b1ef26f700ddc78e2cfd39b5ef81ebdef13bdacb71a6b4e1b796ce2ebefb704de46d6edda260303e8d477d648bde168dd81ebc39eddf21163dea67e4bf0ff25fa919cb539c6b57f18db4f31857d7b5710fcc4bf9104e26072e997ff773f9e7f4f17a996ac9ab23a3393ef75c0bd756e13559a6a21a2b1cc72beaa7dbf22530c7805dab57dd14fcff821804b7ae0a641cc6d9c9dfe73d87bf037cc39cf84f81c747fa437c929d823357c41981c60df14b7af73c5103b975f33afe033b6e511d2a1d63b91e89d4e969a466a731364f6b728a5a5d97f54752eeefdfa8a325f2764e791bf1fcb17c33c2bab6ff8e8d5df45e5a9bc6da35fcdc3e97f150a396cf0b879fb8f1ec80ee01fc70e45e24b5c0644d5b6aa563cf3045ef95f90771cec729afdb2beea0d3b8b9feb8b8ab3a017057b1ff86b82817778bed77c145ccf01974b87da8f153b5d7da40fe93919cd11c604cdac44077655dafc8f7aa90b781ad3d65f91600ffb28c9346f6c19c993f119610ae1529f442ee7cc44fcd871873c833d7ba05beb70a47e96add7bb387501b72afe45b0e97b6a9c33b9558a935ecd9eb4f743ee6d51cccc92ab1d7269c9d65f96ffa425f4abd3713ea7ad6f5f786f7c95ab2072ba93b841aa7ca376dc9d62d24bb0795fb540f75737d1e2e6da84b7c11c975dfe9eda606d2d9eb35fcf9fda34507ffb39fc033da29427afcc4525f1a72608e50ab34eca5753c272e8f6dfe3ca766efe219f6cb4ad9a073a4627959c644dd421d4ffccef2f00a309ff2efd465f2ab387760b88bb64af71a8a31a19eae0b25b996b98c1d6ba75f8d3ca704db9dc11eedbd5beaf51b7cb5e298f013fc30e5b6fae779f56cb5db2f90f36c395dc21f8af34c661acd57e6db2b344689f347702e49ceb98a7d08adf6ca2ad5df9a799c61af9e7d25e736ed8d0df9ea410c0afdfb16cd57e3aa2d03fdc7b8f8f4b9fe19de1b12ec0fab0ffe16517e0e3a7324d646e2923a27dff1959f9f238ac10d5ea3f997b046f8c77830e6dbc883f97dac49d114c692cf43321e04c7b1b68ee6829a01646399bb9eb55aeb6b7b98bc99cc3947778b59aa537f394c24693fd3541fd7e0dca279229d30c64a706ac312a961401471e05fe3c1b0e89fc5d6abf03056a2fd6a4dbeafe19fb20c10e20954eb2daa35ba17ea6f5a2bf135d817390da5da59724e4a75b4489719966b1ca7a4c6ee9fec6781b19eb7259847f0c7a9ab61a2ae257b55995f88c92d21e77a7e982878ff838d2949fb6915a347572d6bddb32cdbf478edb039906c5b6f5aad3fcba53d5959ebeea8d20ef63331f388de67630dcc3a709f075c201a9771cdebfc337fbffddd35ecf1b20ee92e56d80786f4c8dc6f21ce45217e298a2314c838d79bf893d8f6181b93c905e4f8e568addcdfdf37fc9d29e3176bdce7049b98f6cbc9f0fa804c90a553d55f97eb7b18c7a3ce1746702cb0ae16633e34a337f1f74c0db62645f36ff609cf551f64c5ca0ac3bfc52ec8ef1a7acf143eaefabce23e317622636be7baefa3b60fb4fc7c1cbd4fb5e359ea6eeb9880550abc4b9a1a43cec5de3c8c0b4e8138484f485e24a4de2edab8f3a2b64ee3708ed2365a397689ed2ac9efabc41c63df2e7ef73bb9947c7ec3dcdf59f08c93fb17ed03b246425e829a6c1adedf97923e37ed8510c37245d6694564e878c0e36a09a71ba72b6fdc49d795bc64b39f90ff47f3bc38b8927e0bd2e484fefd61f7a6a1d34d5ce928fba3e4e7d2b5f7a1bb905c19f0d513c8a34c7aef9b8e79dda476e64add6b98e2588b2b99c946c1ff3fc9ba8fc0b81f434dc86fb277335e4d6ac52f53d400126c581beb03a3058e7df163267b2bd52f30d6a4b7d8b8939f4b57cd98f1fdb4f6f6c99574d9937b2bcf557fae94850463497a43cf99ef67fbc5cd371269aa853f27550c9e21de3b6bb93759253d63254f164b1bc7434dfd7c3575e98f12469d7e0f314e9dfc0af111eb0c77e97bf62a1a6b798cb92f5fa2713fd7ef4c76a29a4fba17a8bfffdda2713a884d35d4b2b3f33b7f12b7a4ad2e3c79107e991c4b3ebfef1bf4c6eab322bbe2ada8a33d9339f3279d85b471babb8d73bffae9ba566f27c4857217c4968b2b6d72ebc9ff28ea8da98c3c9f0bacbd24e4eab6f5771af2e06afd002e778a5183ec0f72cfac5c29797325ef7dbd93555bdb5d42c37e845a51dfd6ec37ef47ef597f4fd77ad2e6b71e1ca2da1cf3dad7659fcdd573dbedb213ff8cc7e7598e7d20c019d3f4732b8e98707de97784b60a67adb10ef48d7d49cef2691f74ccd84fcd18f392d76a15457cf6c740c277d754d017418eb0a01fbfb357f1779c86fdc1df8f5dc97317126b2394f65bd6ff01b57b867ef10cfde42bdd84bf07d5d061734805f5fca57a1268f39e505d10dfd96b62afc76f1b474e98bd75cae3a7823a4b2ee7ba91f0f1d89cde998fd376ff22dcea451ff6e635bfcb995ace5aee2491bb55f948c625f617e1b58cb6c0c5da93c623fbe139262f06515973acf7356088d3fd055828ab727fd0dde3736be0e87748dde8d3ef717dfefdfbfceb144db373632e1e5a0f88ed7426c9c63513db360753fd94cd077de00b6ae289c8eb91c196ceef67e2b33f1f49fc83f105147677734c51befa2db9d013ae9e043fc7a7f70d672c1827aabcce14138f3c73ce7501c8f1875c675c1b8be574b946f6c95c464ebe716e3734d4a4e4d86ca4d6176ca266bcfa1daecb24fe55ca65d7b896d60dce67432e3d8323b9233cb2d21d7c630ed48be77c5fd577dbb938d4e316e79a50ff32c5256f3a63c84e3e6db8b9c7f887d1c58ec83e7ab7fae7b9d5ff03fe3d3860fe045e2ec877726cff5d6b84fdb5ccfa7cc737bdfd0d5c9bb671f0ceda4c534fbec1cf3baef5c9c2b56bb3d510dde9e8df3f889dfb9b750ec991d8a4384ef149f019cb183affebe7fdfffa19b7f9ba9c1047b662bfff75fd24e75d2872bc789cea5cfdc1d63f0c9dd376558e107e439be69a91fd5c9afb5bf4c418eabe104e5fc72e5f2711c5f52bfa6e8175a49fb918a24d67f409bde78173709f78af363ef08bad5792f9fe0675f7cb28507a19c605ac3db7027c0da7bbc7bc40f6633c5ac8418ab9a690ce9cfbd1706e6cbc4927d9d4528f41a6c6e311da0fdef14353afdea71a231d706bd8592dc776b4483c4b7d14df020eb2abefaa7258d86544efe1d4d257628bf3d518e968bfa682fa1ac0b877f45f1ee0e6ac49fe6704630a9575ce6bb43574c5b3d463a8a9b13f9a241bc7e4d4cd418d19e43604a91d87866ddbc3f9c1798c6f73c03d4ef8b524651d0472048a3dc79183180bb8a196b4eddda7b8f7989ff003ead02afa25ad259d64c191cd919b642f14c71af8a02755fca57afb47b1cdff1775e2bf619c548f66755026f76c3ffb24f8df804d13ecaa5852d59f89b2e3fb2b44b89d422ef9280ed8dc5b4de7cb9ed6fd42fd7bcd3cdb13f905b8bf1b747358ef9f3aefb9c297021c371cbcf456192a58537266056b7283f97e7a5eb1ad9a049d25f6ff0b73a99b6b81d975113dc3e04d412d208ead044d35bf0d7ab8ed6f6d89faddf0bc0d219ec1f3bd3dc54dc1d5874652e439f7079285ffc4f81b6ba51b6df6ff99f18f5daa4b00a643c3bea53e28c28b0a1cda8d5c982dfd10d4e895eef8d72bc40ad6f69bad2f0439b78b84ea0e393680009f816022c61feb5e4a72356a5898d417ea2bd265eb2e1c1c2f13e5a5805ef1e667ea35e0e570e7fa9e7cf5dbf02c484e508ecb4571322ab85c4d75fd33b90b755b13ed95ee235ad3fbf7d5c317fb477caf15181fb866bdc6ef51d1435bebef4b7a9e4a75aff16871f40de0684c374e720add49f2de987315c56cae6f335642f97ea1b8f1bed2c015caf11fd7ed990a863c8b2faaf57b145bc67792cbb48c777082bdeb2e26fe8eddef5d9c4384fe4ee7b1ea87fbed9afc3e91d1d1bea8cbbf55fa5cb541f873d584e9b1566ca98253c08f5150cc9ab618352b13684e4cd31e6bc7519182bde83c94f1687f0b4fc808996f1573fe6d3c21d4ceb0b2471af2896a181158df61f6533537eb195e1756e7a435626c9d96005fe037ec6922ab2b786264bdb5b0680beb57fb66bc3c818d6695fc3a7c3e20ceb9a775ef790ecd37f890aaf1a275b9feecafe2f308e259584f7cc627d3f4ada7d7a4b43f8246195cdb1ba577913edd1cf7ff36efc973eb8073e1f37c2b4e2c08ff08639fe5f684791ec23822773f703151ca3858648efeffd9fc6b67b35427fa9bf18a3ae677795e9ec1cd6ad0c7f875a2d4bf38917b95bdf0cd7358e4c7887267dafbdf360f7fdf992badd737f20e2c5ead6ffb5d2cdab3f55ce8520d8f22df56867d59a7b6323586a7b151c748acc8f3cf9c7b0c72d687026c9abaee896b05892c319264a3d84dd89f60b33ff1dc79ebc689a7ab47cf2198cdfa39e4c5f1f9b900755b898ba7331866cdf83905ff3beb07013b60142663c3bcfa9fa13436e2384cd7d1d65d461be79e798ebefbe0c88cdf8b7dabd8b79dcf45f716ba0baa9336f9e7b8b20cfceb72735bac4f93afebcac70fc3ded175a458aa0d3e317e5f9ce4c573cce5d6b1bf185ef2125f6a9e57d3d0a78a7cfec7fcf4632391eabefa10f89d492e38c997059f73127caa37189b55a971c7ba47316e057c825fbeabce3da76b79eea65a5b523a37b3fd02d6ba74ce2b73529bdbf66ffc56eca03c9605e50ec471af21c101b0e2f21e96853c7ea57132dc8048b7d1496dfda1b487796d55fc42fcb33f961acf7e658f0bfb529a67187f2bc641c31d78f1dc2042ff36ddf836d5c28f29e00456e561f74f5f492e532d7ca536f6d40a4e1043a8e62034eb7d2c5742e35dd576a7d6face91d513f9e5007e037c3ef2bd4979657e6a18ef70925539a6c8fbb598c19363fd2b7daddc6db3f478dd3a2f8749e746631d477eaca316cfe1d7fe837f92e4e8e9e664b50bdb6a803c61fd8f201efdc1e445e1bab91a0741ae3b7d58fdd77782f3341ebc9638f53fac5bb4003e86fe7e8af9f0bbd55a93a65a2fd45f270b3d87706ccf34b8f79a397fab36678e0b4a70a507dfa89f1af44f63fdb4c71c63a80f26e9437f4f384ecaf5324defdbbbfd4cebcbae85d761d2817eed2bb540d53ab31bd4bac98957f461731a8fcc2c746c6e5f4ad825ebfb64692ff475659e4b7c155ad8c578aba84fbba65aab49a9a6016a5e00a36f59608d47b42fa7f16058ebcf7aa85b6ba95ee3476cd1bcb6ce616aa7d64ab2f7537bd75233e539bf5f6f45b8ec4af55dd22cc73c5b36d74491b5a9bcaf14ef6f9e7abfdaff45d17fe5895aa3a20d321eb4dfd05e73d6b6ba666a2febf81b51b1bf7fb36e0abe9148d13bd7eec5bccdd43e2071ab0cf2728cde75db995f02d29f50e90db74e780c09ae6f5e7b3538d4eab1c4356be5b941f38bd6e67bb81939072ed4f5e3f829f5d792f647e1d53492fdd63501afb88e9fc162ff73b022885cfecbfd1ae1feb0181e33ad7f9f37d7618ecdf57d69da1311562dadb5c6631bc17a88eb692b78ccb4d6fa3deb3f165f1b24ff1f8bafb5b0fed71af6de2d99952dcd732dc24169ba0b7c29b984f99e061de850abf11bbc448baf08f5fbfeb6eadfd0be9b7ff56fa5b9acd57b716285b8de6befb9e6ca63fa8cf9c7c324d41749a8457b736f9f7c3c67fb92bf5fe8672fcf73c3788f81744f36ae4ad6af7c973fc105457371808f6f3ada9dc686741a1bcbd3d8884ee3a1741a8fe6485ed5f97ec0065ec4d8ce3dca41671951aefca9a54a7e46db5e471b4b8538d35b3dbfea108ecc5bf0385c6750b3b2f8e577bc2448bd93df092e1ba5779e7586d7f92abacf1fcb174e7d246eb79e8f05f94a840ffacb57ba8f703491371d13d97499e7c871309a537eb268ae49dd37e833de0fb3d5b08665896344249f9df25858fdff209ba8217e7b0b52fbe1b913c5b3d493e7e8b7319cb1c9638c6c5ab04387688f9f7cad2fa176f1daa95f1fcee2e45980ff90602ee2451272f4518ff220e2bc0fba8e68df4b38af4ab09ee25c2b967b01e67796a23d5960b64fb55da32f0ff7a9fbf0803ffa7ea278047f192b98d49b523d1d7340c65d7407cf347537d3d4c34c5317334d7da0dfd5309f9bf8dfc5fc8ebcf362dbc3059d6b612e4068aca1e6d7eb54790f70cd8767e1f59a25f67a9955f9f0fe6fec51350ed210fc6da40ef0128c26d7d0e841aec06cbf386d9d227794e100e1ef1f1817deabc1de4bc606924dfd7c0ca1bb009ccf8d85c67a3f618e17828f612cba1be59ecc208fc706bcb340b139355cb8cfce4305bbfb03301d968cbedfba5f9839efc6c1483d7d5831e40ccf48dbb51837fe2ec51931b648af36d607b2cf91fc47fb81d9ebd1b139e600fdbaa0f1d9b63960ee87c3c753d8f48d7e7938b3184fdbee8c09d7291e7bd7b687f30b95d3505b80f5be625d793e936f9f19907d8fd0d0b35093afdea79c6eddc923d4e48ee7d8bfc69a14051d330ef6cbb3af6cceb03fb877a1770cf60bc956ec642be571738a07b3f33b489735af1cfd09ec5ba473786992059de5197365a2b9d945334b8a42253e6e9428daa6fa2574f4ec83f8f8fc51187f403dfb0bf1d9e13e8c4761e239a7683a5862bf91913c7c646f5bd83fe677cc83e78e39f9546a1a2a507fdc196ba7c8337a1d347ecfe87579be0c519f719ecb0d737a2a66fc61f5cf334bed6c8de46bab91da4c4d85f9f50cbd8bfa3736bc8ec7bb33f6e1ce1f05a84f8705f85d1699e7e89267dbeba584f70bbe87a82f21dc4d8b7d3edcb8e88eef9fd1dc87d92e9a58fd0e6b03967594fe997e6f9ae1b998b11ce9559f07606faa8fb7cfd7abe7bc5c4225f9b575d5c433927896f6322feb75b6cef9389392d54aeec1785d05fafcb554f4d3a6833929fd34fcb9b17b70165c253c86a97d71d11ad93dbc7fbe2603b70398703f291eb1abe8174fefe573c8cd29c1f929700f9afbc9d5b7a18d07d19d4f649f90ff9ed1da9df03cdd60cd05380f78fdf4fc9d626d8a76a299057b1e7076163cdf127ef6dd4bbd8787b907f1b9d34bbfcfd716ed457c8e76dc1a4976ace02305591b44d3cffe01efcdfe19d9ff685f933c2c37df7fda09efd5fcdcf2fa3b490219cf1b3f6e87f65af2ee25f00c3f9f8ee4dc61b90b3e2ad15d87dacbc74278c6ce2c1e50c3b7210e59b695f2be1ff1b92ee64a94a7c3e9ef7ff2bcaba4645309e372e49ba83f14572aaa626ce5cf4aa56ff5c6e56f9f05dfaef2c635dd35f539fdfa8dbe7c3dcdc7c5eb03ccc3db67d197b6bd4c9e65d7b7c261dc9e5b46f736d16d71de76fb3907d9c2e2d063596fbaecef6bb977a57645e7fe84f604e1a3f34ebed2cba6240f8f1dfb54033952ee8786cef62e9a65fd0ec1c8129d47e82797a734b51ff95af26a9ab0bc780579d1beb7a1dfd48e2d63f254dfc9c74e740b22773ac5becefb5691798de794ce2959b3404a2ecc5ae77dabe8210d63abf653aaf5b3cc6fd5d4d7ca9c7f129c9c62cf20fbeffecd7c41515ba2730f7b01ea91d1383898acdf38c33027e45c0af718962f07a6afe5b3f004b660752d9fd625cb77199aa3a77553de592a9dbf556abfb4b50972be714f147af9942fd739e7be72470fbbc9c768791c6bafd182cb5d037a3dc1d431d71c3cb51a7e5e9805101b093bc17ea6f533d7ba45934e78c5710838136db191bd4ddab065a60d99b4a1240f5f66da29f9ecf4b9b5d6578278860afcd859b4a73cfa632decb071524e0ce518283dd89ff06d39f8cb7194fcdb8375c5bf5d7f76eb2eae76e5f9df89bbc09a94622895b841f579583b961b665cbcdff2aefdcd6fe1356efa5669bfc15a5470c64b32c1c9d09ac25eebd0359b697df88e5bb94b053e7a3833dfc07286e7290ef16cbf9037fb8514408caf7f9fe23c88aa9f5a94a7505b636b68cfd743db5a577ebf1af606cbf5bd1403e4d532e3fd037758036e26b117d87ba9a8afc2f391629d84c6fff13eee625b620fe7518c215fc70dcbef928aec4572f4c778d0c79c34fa42f65364fb82ad8e7dbcd8568eb0cddb4b895f0df731a9b6b5fb01715568ab780ebdb371978095171afad1dfcf232bd52fe381276db5fab7885d0e18f2e8f758bee6fb5288899fd7aa609d8fe89f3057edf16d76def9bc623cac2603ecbf21ab7bb7e3a562bbf87441faa63837a1a576ca20f10f1d8f2f8fbd70b9c173dd88e478116cc935b2eb8787a9d585b1f37371593c00c2b9bf92306e06e46ae2b6f3dccb54df795a44fb93df8953abffe7780077c04ec47fc0ab2db1ecc53b395379cc49a83f006742f96cd17cd939cea1b8f0742926fe8631d307528e99fe9e913d0cb153388bb1672c0f05be3ad1cfb21db2db3b48f6795af077e59cec68cec94431c97d8cce67d09af33151ccdd3f81579bfbc7dcc562ebbcfc555cdd9d672cf724ffa2969322c4dfab9e5dc17e861a199ac7f834be2e5f47f20c73e769482fe8e39f728c5f88cf56c34aaed6d3eda9ff29f90606b0a08f16d33f2dcce7a0aa73d5b1a0d7cc1af40b3d88b3d7be910fb3dbb890ab533e0f22fd107f0bf53b795647c463bb45a8ffcdd8c695b6f49c6fb3cbf4f33eb738df2d3fdb61bf3b5f0d9fd729e9f806c33ba7afea3a59d4e54135c745595675b7e69c1865fdbde7a56f3e4f644c45afcb731467d46f6ed46b020b994b718e99332bc9473f7902cb589c8b44e4cadf84afcc9cd186dab8ca5915ebe0b92c79820fad41f6d1b96565f213fd6ad5ef7dbaaee8bfd04f984f73d784098def40060f39c7486eb8af719c858fbdccce39c105ca719e195e9982c74580ab03318fbc6ee0e8192ffb50039efb6863b1f19c27f1977581ef0d8f257eb7303e5293ed324b97b99f0a7dfb1fc15e2ec53a54bc4ec23a987a0e29c82cb9961f47f605dc177bb3098b9bc669f2be15bc76351d15be75c6fb2569b6df7e2307eb86f3c5f2f960f0c28532a0cc9bcd70e9bc5bfd3de5e016f16657f5c9b6bc74526f770ca46ebcfaccc7dc563b84c7b566e709dd49fdd63cf85c8fb7b83284d43a096ce70ad6016313f4c65a7821f5f922ac83aa2df1742cbc8cd327b4cbe89c109fd55f5c6f820df2fc7a73eeb20a763cce9fc69c530b11cf5675ae08cf4a915ff74aedaf1fb53d56b337181cf5fa7c3db64692863aab83868f99a672f0f2f37dd709b2eec337922fcf8a2f33addf995a5d2487bf36eef21076e69740b91f37ca1af2ce4bdc93755ea21a967bae2bb9736e1eec44263e0abbb7f0952eeaf34f7b64278102bf733dc7bc78ee02ffde88e5608fffdfdc4f8e10739617311a07d6e1284e7bb477b3e028c414aff5adc05f1f6be12a74ba3f574eefe2caa6ece13ec0b75dc9cbb6766fb57197cd98ea027f4dae0b7d92efa031cbbd7588be61f7d65bbd6704496fb5b1824bd0514f5b777998c8affb6a0ccb33ec74e3da27769d05f8e8a27eb9557beab7df6774bb2aa67b9b5f87d91bcdf8ec4c2c10be99610edb2a167b21f35a30ce3bc5bc719efbc17bae0927dab700afe78cef139caf8af96bebedccd2e441edb5d91eb0a10abb5884214f7f06afd144a1b6a41047b718c79338d4421e250b733d86a389ecf1f1b879f2a6182bd707cac1251f1c229fdf3e2377cfe719f832a3a3cb79f68ddd1fcffbfb6ae7606a34f8790d09df8bb8ce84338ed72850e2a3b767ce471697e680fdd6df303fc2b61d12c76ec543ef546da1653bae485d7e82efa8ce9ff057f752bd8f2b27b9fc23f30672ac758ff1dffb6add6f878dd3ddf9864d6be5894eb6bc33e7e57f14bf3d979d6bb09b9ec6c526ba2e671f3e856b5a7bfe698c52bd664fb6e3b32b688d1bdee360c5f16b5e83277805e5ab8f6de12257308b7d5c37718be6b674c47b2de6d78697c77cde3a5db73a57157cf3f29efc14629834ee07e667df80a3f93ddcf4a7d6cfa635cfa43eb12697feb5d8f3355bab82a11fb27acebf0f7b1efb8204b61095298df8da9dda99fa0771dccb988955dcc7bf3e167c7fda35fbf95f8da5cf950fff2426fb77716f78ebe46902eef0e7c65cbb3b5ac74bea7598b1367cbfbe4fbfc5f3fadc18447759ebf921b849ccd969e3e82fedcf6fe1263e756ef877ebff8b72e05fc71b50f705feef1b83ef2497ff2764f2bf4f46fd3f2d67ff36be99568c32e26bb6eb71b28a6dc6e413dc726c6c81cfec8879c0a513c5dcaad51d31fce7bcb536dd3816ea93c59917dab7551e8da7c6f2143e73c11b56976f7cb92f7efe093e0daefc697f8fe03ad5e4c013762ed47c3ef74d0e96b1c86efdc7f82bba3ceca7bf6603377259407d35d7267e0637116ac8c536682bae11f3b3773fa156af66b7b6715ab8fa3d70b5973ffe2f735b08fd0850ffaa4f124fb25f0231d72dfc54f81beaf959ffb2b173cfefdfc0eb51cd9f6be6f5080334eed9d7ebff08bf47b3bfe2efe2f468bee76bfb2563383cacfeaf96b97f85b3d66ce708fd47256e91665e58c23bf2cdb160bfdb7738496af7ade02c621c40ad9b79ae7ada388b64aa0517c8dd40e74bebefb756f034e62e92f398938095f39cf38ee5af680c8c5c16728c087c4d4ff07234c8771a37abe812ff6bb8499e9e03910dca728054e207bc18e25398ca061f47a154e327ba07470c6f89684cb99e87e3403827ed997dc0f32b94f859f23384795078bcc7cdb28ddaad8d76208f2349e8ff6ceadfbf80a785d61a903a87967cfc126f5d3b0f4bbdbe605caa2fc0dcbd6f9feadb66fdd288379a73c430be74962323d7e5b41ad60283d3bebc788a2d99100be5e63e9171b7e6fad1e7726cb1220f98c99be4e7d98bea514bb9e41bc7dcb1750868cfd4f2ad2be7b2397fc98c3f7e87b702f6469183ffafdf23a3320e0459831dd90b80c13013d7ca30b558042be237ea4920e7b4525352ad99e1ae67eb3a24ab95f42f5c833a36d9a7e7c47198da0f5253f640f7d1d8d01f60073af625d416b0469e1b7f79ae5ac78086678790131b1a7636cbfbd87da035dc3add4768d8b10778d2fddb588beeb3551005a97ef1e08e2aff7db6da1c45df088a6f3c4207f60a603087ce7d3736260960236780cb867524744fa4c93574e72437bacbaddbafcfa5c01751dbb72db98e827a93677870888dcdfc7f44305168bd17ee039b4383e4cfa28607d6866d51aa3522e74f7dfda961bc1b567e3d851721ce816fe4c6a8d9376bfb6523e49668e5656074746c074db2c63bfccb57e45be89a49dd77f33fc091c1ea26ff0c774d6d7efe69de9afade788e2ba3fe5e89afc6fdfe38be3de7dfe7cc10b6f504474da7961ffa5d7e9a9a5f87b4c3d6de08f8c184baf15fe2aaf9eeda6f94de19ddd91cbf7a2946f03d5f4a932c7af6acfca37c52a275fba7396c44df6de61412e6227279a544b9cbbfcd6f1356f3c0f5323f0dd87a8cfc15edb5a67cccbf7476d9b9f82ef7cda89c3bf9ffcfefdf747e215ff49fe19d2afb94bbdc75e78daf190b96706e1afa63d5092febd1e41a303c87d51cdbdf3db7ccbb252e2afb37c7f43bebf097ce2ba73dd1fbc27ce084b71fda75de86bd5ec7bb28f35b9d83e13d41df0d3fe378a6a99f6d36dfe6b37bf29cee3e3422649fc6396f1547be70e2cae7add3a5bc23387f968bb3f62fe4b3e2fffee8effbbcefe1bc8111f76fd0e760f00c3fd63f1977adcf91af400c93c15e9e1f9cc7f806f8d6033d9c5ad836dbf2b173d1dade781c3dadf18e26dead519fc767f44cac46ccbfd579aecd6778b8fca4c2e585f704df6f57e59dc27c5b749ccff38561fe9edb77b8c17c27b9047c8cb92ab711e124c367f05bef08faf55bfc608c7f616af4b2b1a17f6ef6e323c6db1d825fc54b9317c02232f40bc1058eb66ed936829895929c7c8a6740625730af8a9d8d47780c150c23564e3dc3dd55e5887be058362b5fab3ee43207d313dfa8ceb9e01b7cae2bbe0d5b8e5f17fc50953dc4e55cba418cb9bad662ddb8a8f513f649c079c5d56b34c6b7cfb5575be781dad2c2f9e0dcdf7bf733da131c5ef65c72f9c078ef6fad722dc1f3f357d1559ecabbc8f9cbaafbf39fec2f5aa3bf36b74817fc1fe1fb6275a398e0ea2cdb31c3d2f81aba93c754038ceefbfc137c97f7797b7dd72f5ad3d9c4f14de6f8e077ec2cc8a2e37874c7fc79dc5800175f698cceab9385634b63b9bffafbadd1935b79b7b4f040de3f6c4befab07b38ef7c4c524da126cc9ad72cab125e7da2dda4a2cc65133aed1d690cfdfe05ecbe76f82b9d2f2bece52fd1618f72ef5a7a23dc7f2ac511ecdadd39543c37e0036f0605ce3486ac6dd8acfbebb78fc4e7fb97c78193f7f654bd74acb3916b05dcbcd89517f78eee46aa64991e39a227dc5963c770e58b8f34f7e8e0b677e1e9eb3b8faa999cf4ff97bdfc3acb2fedadad6cee1347b6aacdfee63d0990b71cac472822fefd05d2bcce364c7f2dc7ad4f62b370f69744c82b4676c999a8540b1bf7ca5bb43b2059dcd4a2e8870df976a7b1d3bdb3ae6d173a403c177019c8d50b1b38da273726b79731c13aca067f701d1abdbb0d5523909d264b775ecb3381785c43f913cdca3fd21caaf53397b49f8ec09eaf3d2451c289cbaef1a1ea92488ef32fdd7c2189d13a88766ec2676fe27d21030af36e08fade1e4a8ab61a2ae257b55d9efb69f26d2d2b91f37ee1cc9af6b083c5afdfd56ab63bfadf5c964254f26b69ed4da588f2647bf333986a31ddbce7d9ed5fab25cda935505dfb8c4730f3afb9019ffefe38afd2ce648c671353e8e350f472c2ef808e385e74e8e9e91247e0bbed792e1205c15ebd382bd167d137bedbbcf9fbe8905178f2b5c8c59f17edbb7e2c3efbf7bfed5f66ed3dc535d81bcff088dd7aa8e525de383efc88f80c1515e006f64f31a5bdfffce58fc9dd21e2cf31beaa7bd8531d8c69606785be3956c5b8d9c8848dfc278dbbfb659034697a16741aa77191c3501d7d67952e43299579623b16a17502e4b6bd8b3d718cbeb97c562440dc6d278f01acd01bb88b45be5926d18d7066344aa4d5874846793c11eabdd41056e9c923cd606f67f15bfcb65c73190d58570ac14eb2ee99d0bd980eb8aca984ccddc9a48bfc676757cf88be3a2bc96b047484d79e37ab5e1c96dd2646f81add02738266b31ce61850f959ec5666ece023350509374f33bf302c34e63fdd0fd2a174cebf8cb78e1d076cdc747f7f06a9dbcd9b6a937b71373dbf8a7e715eba37ff15c8fd46bf0188ae656e2f29018bdc7fcb3d8e3791c40eb9fc78371c5d785fbe148f1bb6d4f08f644892bf41274eccfa06366c0f18cfbf377acc71df4d9aa7f99f6475ee84ba9f766ea3cacc1ee2374268f70343ee0b1d67820f69e8be5d2d6e9eecdf41e7b9df9a1d8c3ddcfad138e91cd0ee345fadaf35cb663df91fe9e75cdfec135aaf9d8f373b7b0d65ddb1edacded54db68e31e960a9bfa6f90257752c75de653d6a468c1e5d0427b72fc4fca9fbb709f4af26495d86b93cb6950d9a7d8ae15adcbca5c2fde573bb37d5d1ee3a310c3bb8a27d85497ba4e1eeba124c4a507ae85f5fa65acebf2d69dfc0a3275e12b6632d636e8f79db1be9036906739d9e57f33ccebd8e85e219e856ccc4c8d37ca22093a98f792e23406997ada3ae784ce6320d7e21036c8e54cfdda1a7ab67497a55cceb1215f83748de3ab862e6d9d09d205f87646910ffe0bc7b4ba922f61fb7709f62fb24317878d3b51432dba4d09aed5a4d3df7f07177155b561d0ded27afec6554357bf5dde15e90ff86fd6abe23941dcc5734d1c77c1b9b6e053c4f156fbe469ea2fcfb16fe46fd216e34a7d7ace220edd45427e2f078a9d8d0dfb2530eec78d9248fe28a9ad69d051938d92a45bc7de8d47e161eb2c0e63036c41c0d4fdb0d4cec6e94ab34f75e567aa14ec1358bbd08098e6d1df9b71ce0d395ac4beb38eb0af12e460ed7b1b527b191ac9d9738f573f5d1f99d852e2ef17c9ec53553dc344dfb9a2bd1e8e2631c890348888dd1f79462f0932f5e277807ff2e41bbd4e2d1798e438077bbbb61f72be027aa7e33e8c3077f512c930f0eb946df846ac39c6de8c890ff8063ef2d03513f4ff5b77817180ea18cb38b7988cedfd13b0cddbb06a1f18c7681cbd67fd7d6048fbf1e0104d647531a9e29436e58d94b9b3e11c601c42fd3cc90063505d59c13379858059b649f587b7a67a1392a7551d5c47f278b771c73f989caf013a337e6ad638ac207e031c9c36f5f3ff28e36f76f7c0e5baa6fed57b25d789e02b63de57f6dd89bff762df4876980bb6f2ddce64b775bab13f3814789cc35ee619c965e3dcaab89990bfbf727a97d088df8314ed55fd44723bd86f628e939d7cf5f7e66145bf41eecf0a9e69e639f7383412c5b3cda3ef94dab12a7f3b55e3683eeecbe38d2b9bf0df2adf3bfb4a57da8e481cab346e7a47e07ee7f8867a35770430a47f88f051f9cfe37820af9f0c7ee849f4deca492ecdef42ddaef07d928f20ec7309cfb1da7fc6dfc759eb794d2ed89575065ec5929f0dc9d32448bbb1afa98fd0e8651b274ca0b6aec08fcf75a6b1e11d7dc3ce314eb1ed4fd60ae7edfcf767755fe79c3bfa798bce85e0390fd9d4a97ea2f329f227a33b17edb53589f34fd13c7c0db1eefb3516f827b81c70e7add33d217d67e5e8d256eb9eb7ce0bba87b3b995eb70b4dd5c0facd971bcfc1c433efae9edbf6363174d1f98db5198db08edeb8013007832f0ef09faf7df5fd7577917dd154f60665f400e3af7e3476a933db63e6c159bc3b199cbf65f9ebb8bde33f82fc6a563f1e82cb6ee38fc89eb8ea53dd4d919e7e443cc697ddb3a8b5f44dfc8f7a7b79f5c7d92eb446c41f61d29d8ef22270b13ff538e43c221e27fcafbcd671842fd8ec6fb1bfdffe0846b7c920bd2fbc2748d748fccefd8fb22672481da67aaab788efeb5d5199d784474fa1474ca34487b67d0213b4b461f9a631dc7b0e300f8272672886464c743fa15e5abbf786e2c51bd756c2492e748b08fb6ee12e9b531d54d4beda67ab675f40baecfd62fa4adafd09d649ed395c6a3c9d5cf6b07ca7cfb5ba3770d9462ddfd543f7bee5c74cea277ab7fe3e6cf7df2f2e480ef50900b07dfe3e6d00126f7a0c673dad91ac9c9b3fa077c06bbb1efd88fc2b615e83718171b303a78fb1c8f7701e7b1c0e80ece132ec68ffa27e4b9e1367399c1cddfca3927bba047f846f2c35b53bf627cd9387212c8678841cf6d899f0356b481e6119d37d81f957e36e252854a7c4467686a1c901e28e06e2ecb72c831317ab137ccfb4b70d229ee3bd8ae7f4e2d9a4f02fd68c37712c66cc43a29f9fe6fe18335d49fe377f1596ba8c367f670e12718bcf4c6c6a101c380eaa5957b6c84d76c46be3bb5faff79b7d43f817b5788e3dd86d1d7bfce3a0d72c39d479b14d72d02079ff382eca5c7d6d0c1be41ba3eb5fd714e5e8fd6a8432e5ef3bc20d9a2fffa0decad3f671617c788577b719c66a7c67ade62af84275f99c4feb0ba6784f71ed827580f0559b2da38dd648a7960b8fe8a35d474da48cee2f30bf907ba04397dca09dd13bf3c4b4db7ce3d093ac92334ecf378a4c6a01b6bea71867d0a9803f1b3bf9f6541e477c6d144be0713110e36600074490e63b47793f3c74cbe032e0cfc5807c02dcceb47dbeffb93afe83baa8789c68be57def54c8803ead61e6c9ec18b8bc147bb74eed7be82459f5cca2f9b387bde1ea71884c744f6ae82e43fa8499049f6a67e3eee07e0c527bbf751712da9b1ba7bb0319e02ca38d733f95f5021bdfd9c3eed533ec7a3d0a17bb1a8f3990cfb07e2ec51877ba48df3ffaa9bde3cb0335e73bf19dde2e44329270c1b0ef8af0298a77b86d9f7dc5947d638dcef00d726f05ed80bd8fc70ed81d6b45bfd0bba49abbc1b7cdcdeca349fe2bf77c5f00777a45679f25bd78934e32b19cc71c6d9e635a9e0b7ebd84e48573f744e3fe010ca41ebd33ae383f15ef55f1f7690d7c451658f1d537a8fdc47fffa7a57ee133d63f88f0e0f0cfeb9572446d909c4c7b12b2a7d03e003dced0155f4976c0496ed8c8a6463a61f23152137fbf3822fdd24b911e83ce3899230330efa28da2cbc42f79d83ae1613c5c2c6de1dd80f4cef0e0392f51389a74896fef0a365cba8c3ce7e56cdbf3d3d8b02fae6caf669a8af45e39c8d414c91ccff512a437e75833d087867c1672e61c056425c61c027973c2f50850bbae9e3d47bf307e34d94f3935abcfda2fd5f32ab61bd65bc80f2fd5b11dd19c821ea331b62e5e279837e0e8c63265ef1bbdcf8d53f0aecd3efb91e578ec372e7ea6c6411aca804d309a235b24016c8fce22f134f5e87fde909e4ef3ce1f5b47bef9a35d294fa9a497d33b8bb525f2bc156c5bf16c64ea6b342be7738a6c2beb8664f72974ec872006b2dbb866fcc6f317f26c3ef6efeec2f65313e93317cf591e8aef34e1e6026e06d2bff79e6b96edcb661c25a19cf220bf8bd678261746af46737642e3f4477612f075f81af621ee27e8a830374d3a32aebde99dd1facd52b44f75d86fb3249755c089e32b72e2ef974c2e01f417cd85785c95f504198cc6fa9bf344ea32bb81615fbd4f88193e7ca5e1ee629e99edc33848eb5c6df5f9e87536b0b7ed07d461381b742ef6a183c66f3e904eea0156c5e2e1a17b7c9f9f39d6ff24fbc692c85274a61649d8acbb57fbd982c1073ffb7c5e716e3cf830a6597f4f624aa9dfb12f9ef612990692dfc935b4008f0cb802b1ed0eb2e4180e5e85187bf8e77b78d955ac83eafe14eab856f7e7c6997c06edf9e6749dcb766f53bc149f071a6726be2bd0ff04ba05c89606bb9e8c05ed07a72b2da9cf7120957dfc0f5e6d53ce0f09fa07ae81d0cf5c7da2646b32f795366cee3f9efb9de7aa19c4bd0c7b05f2db58b7e13b56e6d67e0f533b0bd264e7f16b2bd877e5405917f2646fdf3c883de4f2ecc4ea7be5b83fbaeb17878dd3dd7b56bf157b907c2ff63fd5e4c340b609e81939ff5f81b9d3adef15eae7277b869fbf5c3f6fccde7a6c0d72c695eee9c3523f493c71477cd1a4f610fa14939a915c3e3cfbbdb56227632396c251ffc72ceb11196cfe1964dd2f5f91ae5ec73e7a86fd9865f36ba8e8998fee8ece1cd90fe9d6e9263387cefb2bf6fb125fdbd6e9a67ef6f23d5c4dbc9f6e4847f0f7e6809ea377abae4bcd921e5dd7764cbde22cd0b6e93ab56208f1cf87a8bd67cf8cf85c33fa5b9e5b479fa3b2d845328cbc23f625b4df75786cec5d8becc642dfc873f5f64887b32f790c8a5b832a9aaf27e7f8c979695ef7df183fde2f047383fa36bcd87792d3d6695eeb56bc7ee6a71ef359f8c2f9c5b92b7c9ea5da389bf1624b6bfce4b8681dec336b85db071bf307e5037e764ef23dfc99cbe827de65f3c19ae6258fbb08fdbc6c9bbfaf7b94d797f59310995cdc098e9d798a4de45af8988ee8ba177cbf85fcafd7a7726491b171e4a36f24cc779be4186f1f10799a7ad76067c71b253a94f2c54651ab1ca377416e538da20bd5953eb46e7eff36c82a214e17675d00076fe32c7ea1fbc8433625c93922f7e2c5ef043fc6867e0a9457d65ea573c6190bf64f6c957514746ca47b773c4b7d601d364e18fb523513535f7faac4f7101fe17ea66b9fa9878deb25481ff71ccedac177084ebb03dc7357e0d81e8557ff3394c606d2a55539d0d4ced6350fd4f685180e638fa331cd783c6a421bb7f00135e155887d07643d1a71565eaf60cf389eec6bd85f02d8ac483fe1acad67d827cf358bb975173eec199bebe716701a57cea3109fa7a6235eeaba21079f27d71b5a714b21ef26bfa3c47553e720bf43857e239efef3b97117c992b9f345fe068e1ccafb8e315b6af35dd32f9ed461704e20e17bf7dcf81890fcb0eab9181bc9654662db257f9f2127bed3cb3e2cf9e439faafa04d6eb17d566c690ab91f613e2f4156b761187d81ad0168c6216e1ef3c2b4272353e4632cad715da7c272b18573aadc46cbde63bf5dbd4f20979669eb19bd511883fa62f6e3d97327fbdcfeeccc0f559d8d3d5b2d314ec977f33b327a7f5e57446b21e3fd97db5d387ea7e827df78c64ee2dd05c50fc4afd0fd81f13422749f30be4a22eb8724ded43f504cd520cb31555bdb2fc5518c9eb435ec2c54928767ed78771f3377dfb0eff1fa09759c520c3bb53be32206f0c41ae67bab665bf1ecb6d6768a33ce72ed3fef93843b76126f947387e4410356e8c65d12fbb47b0d1f8768e3dc1f7ec6b9e339e7fa997b95ed57139620e4fb1afa23c8884c267b949eadd0803d41f6f5fac4bd53478bbfdb8723b83b7ed35ec66df2e31feddf78c6b6847731d63ff8c8579e6b8e703ce29ecbda461ffb6fafeff3e7aa8c6bffbb6b43faf82d7d897cff29bf2937574d7c6eabf820f49dfd9cb9efd1ded5793ed57a3c831f6f61ce7d97a3979d930fcc078fe33d45bc80f33be2efade57b93f614bb0bb52d8add65e21117570199df82c94dfd06a83f6db9e2a25c8b625deabee428deba0b15d7e9409c4684e3789d111e8b99b33806e94246f7148e5726d296c453d15e6cc82b23f296cd73807109635b74bd9fe3be68c84be26248c21af7c6faf997e726ad5c5cc57716075fe93d2af1ad27b0e0ef487fa53e9047138e06da2bacae396dcf9bf9da1af6d756ea299e3b497da3d7e171e093fc91fc199e1d816378d2c5558682b33104fc637e2da5749ca545fb842be53c179c0dbfe32541ea9dfc4e10bd0b394b757fb5eebdd9c3381c0f6ed15c535f7f6a6aec48f2fb2a31c7aed5ffcf7830bc37caf4c16b44da6894816f9fa85d53c5b572b7686ed16fd1dfbd4418332fb9e0fcfae8b0b1cf9eb9d62dd7ba451bfbbc5849ddb5a54b3c1e9b527fcca1be16eaf8f8e7071a7b5eb3adf56fe3d1fdb5cd7fb529eadcfe0375dd4fbc3365bf43ebc1db72f0f29f38666be2202635e8473f47cd9c58d5355e4bf6602575872ee19b84756ee66cab8e7b61adef73cb2eea48495f8e3c3e1de6e78ff110ea2c9fd81b4ced1f590fbc3ff31ad8ff8c076b0e9e63752f92e71b9f3ba031313582ccde676b653ffbf25bdbf874fa7cfb7e5bad93f96a98f0bf8bc63fbc4f98b5facf78b0ebb67e7f5879af65dcb3555df6e07dd2c865c5ad01f6919da31432c934f4ee4af13ccfd1b3a63d3e355839768b9cb5adae014b4cbd86a99d79e9fd1a66fdff8c8748367c9bb78a6da347da783aff12b89245f237e9156d630e8a07f6cb70e472a32fb7f47c644bb66ef1e2c0627ce6a7d6a3e0df01ddaa342fedbcb39579d443dd5c9f874bfb3b39266112e2daaca39f86866fe8fb208bcf53ab5b6e9b998fe77585427766f52f64a36dddc5753c8894f96058e56ebbceb2fe6d3ee8df662bfc331ec0bfcff6a37f1b1bbd8cfdf76cd58fa699ba869cf5411f7257e783fe8fcafff3fe7d41df40ef4d1ffddbdb17695b3bc1b7f3ffd79252ed9fe7c692073e05731228bd1c5390a733bac93d08b2c3613a78fde164a7b36bdf036f74527ebaf7c035ccff2e46d27166457fbc25f7c0d3ef81a7c9e8f7e8e7d5964bbf2bfe3dbad367e0f7ae7edfa19fa9b53bbc3f0e077b748ba6564cfebe44bffb913f3378fd517c0b7df77499e9a8fde5afe9eaf5f89eedfe985ab13fcde4b0f4ce578fb6777cefdc037734ffd3f9dcfd315dbdee6615fcc34daa3fb6cee26f991bf437da0ffaf3530f4be36f9b979fda0eda99eae6eb58db1dd87189fedfc95e4ed01fed84e764f57a9ceaa75f335b2ecdeb7bbe46bb3f7eea683cc72d9ec7e5b55277287d240556e64c3ebee663a66bf175f823efc3eab5fafe31507ac30dd4d882ce5e3fc7fa69efd889877e666b79315b9bc349768b6672deefff2ef6d2997e63967fbbc7c59e76b290d316ac91f4d3cae7a1688f8f75ed4fa470644ac1d991c3d09683b309f54e3dbac6e7f23e5f5eb918dcfa696fa27632d9b765d9b533511bafa7b1e1c5608709da8139b2e4a1395cee67681feaf7ddc7c3eccdf0fe7bfcb4dae7433017d71ce7cc16cc858cd7c759cb0bfa7d66efdfe7234938feea7bb8df71af79de433c5fd2ba34565b6e1d2b7a7744d68cf76ef6d37a72aed7e6d0d498f5eab48f91995fe5e9ef94f795782df4ea7cbd5ec746f2008e2ce0fa2235d6a339c9cbc5e7d673cb3e41747fd950df4fb0e3b96b108fdf52f9fcb65f3c66c962b596e7f95ca29f5c160f8e85ecd2ba208fc5ebcab4a93fd3e6f204322513aef5d81a1ccffeea8871c0b45cd6ffa8b5299615b80d8bff7ed35830fe5877b59617ab7cdd75fecf2c01992cdc3fd61063b2f0e6a5fa33d39f6babb14f4df34170a66aef36bda395e6afd6b7eabf37eee2b64a6dc9da2fae7ee97ee906aef6fa07d4fcdbf760aa4567b8abb4d371a654eb925faf637d622cb37ef636186739c7fea76a404ebe614b1b27390599faf09c75b445d27c34ff31cb7a92aff44e41d63d7aae99ced25ee665bd4368c8a75967926e1ee397f9d7f82b506ce2a3911eb3af45454ff4bee65f5136ff14e8089fd11f6f9ff1c257baaff6c84e7eea61e28deeebedc87e35f793e34f7d1187a3fb2a745e8eb3410fe925c7f70c749fffcead5bf6d34ad0ef0e56aa5f7e0ebd64b3bf2f36eee475e9aad9cfa11c7fb8f769e8745fadbd7dfa39d465af735f79aefaba5216d2cf61f71aeeef43cf991f5dfdfe98ea58eecd06666f6aa3bb3ed7b18e6f9fc5ff83bec4fe7b05fdc2ba996dbe9a92bcfea99ff5a5242f5d64dfeaf27aeade0e8e7cfce15ac92ba367601dc8aae912d7cd7ef1eea5dec3734de099e0d930b6bdfc311e70391f462bf1df74535ffe186b9234d60ed1e28bffcc5a8667e4866706a49dc667483b4ac3330bd24ee333a49d4ec3334bd24ee333a49d17ee33751c83dd06e2055ee62b12b667e8dda1f3fc9f249e28a1e7e5c95a7a3db4e042553173e0c7e7e241d13a6f64a7e571cb9f02fe10c079843c7eae2dd34d3e0cfb6b9ab7b98b7e8e6e1cbdbef69ca0060fd9e114bfa3f67798c31c0b9b335ec0d011e09ee0b19b3f9ade47eb0272d05dcc3de70530b30a5dbac05ce0f91902a5b7463a4120dd131fe3cb3d7c180b53e35daf09c7be7b8cc1c9b7ddf936771e0b9ea5481fa963f031df8058e594d6be6b2a604a54c60a5810ef9a7a7acba066b5353ec9bcef6f6dd99fdbd2c573e36493c5b8d6533fdddd46ee67fce395b06ac8bc617c9b87a324a1f350c571eafabe29af997c3ebaf629a37e522fd54f81d216d3fc8dba60b15fa7b467191edd163ecd02dbd34ef5d3d681fa7faca38a730a684ce45bbe31820deccfe5463c0fe11ec27aed77f710396f84e7939e13bcde7a384bed17cf9997faf6647e2f92b574ff652e93b7bf49d7d1445eeec157335adc360e2ffe561b37e8f9ccfa455322139dc724049fb61644988b82910178dfdd9eca196edb6fc2f5c33fbcb832b3ffaafd7f3ac6cd60c31e0319e342c13df0cc19a271e8afefe4bf88f7e8d8c1f5feb0d7b0efb33caee7f22afe47ced5426f3c5798c777742cdf93f91e33c3f6bc0955fad831f2530bb755bc33b6bfaddc9a7f69aef00ff5e9fe75195ae827de27ad3fcc71cfa269d63f94ef7ce02fd9136e1834aff9b3482f9964fcdc29bad7cdfde4eadb444791f44bce27a28972af9ae7f35b67a89d9b36f91899d9c65948b89f13630976d304386bfc347c943103d4aee7e8d9ba63665c5c337d2155b1e53c43ef729e07ec3e5e3b84b761158ec615fd7791c0d8d137727da716c3071f7990da8fd0b94b98038fa3d3395d29d8db978d82ecd324d9b8e3c38763c74182facfd52385f86e04dbecb2457aac1bbf7bc0e546e782db16e528bf8470972730d6f16078e372278c309e19c64b05bcc46f3c4f7819d0fefbbc45f355bfa2d3633d8853e348f94cd0b704b58d9324e8d8a750a31c69cc77d9b522dfe5f1a009729332cf5dc8fe68c98ddd94f8cd9bd791bb37e0ef802fcdf617bdcbcceb8ac7e50aed47ef03295a0c043a68c17192d1d80e7cef4b90678fe71aced47870eb412cb72dcf6830ecce07107382f744fc9895392d3f2bcca34773af663ec68fb5ccdd1c7c32d3511dfb0a7267531b637521995ad4365f3ca4db29f71dc65f080f5ba43777d478a3ac739f6660dce1dfbe6b9f4223b9f9c6fa8c9fb11fe351780c8d08e3f238dd3dd444e0bff1e37cbc7c498dc55beb05ae16fbee67124e937b3075efbeabdf2fae7e975cab07bc1e632de0c5902f416adf7c43fff2ace83ad5ef4120df83203b1d674a70c27a5ad2f6ed0f57bf3fc087f3f98a391e39fad56c9fcfc96126d3ef1c76b3ac72c708f39b1607cf59fc2ae2b971ce31097296ca1dc79ce4d8f9cd75cea5f785796999ba5e49e6fbdba76a79450dc0c1b35465e3748fbe718fc7c3e36a8cb141235f99fce9390b295f63e725c2b2534dfcd44cfcfd12ee8c99d34b672e605d461b254e36ca89571301673ae75bb3d5ccef7847cfb0f19d58c5d6b46b9894acdcae8c5758bf913fb7741652e8e8a722af1ac6d85c1b4de48e37c4d8d7c81615d693b0f7055d37b0819b737b028c8dbfc31c13a63f4f843584c7591a26e110ed9788abc760d997cfdb32487bcad631134fc3f66f3ef76bfd2b1cd971739d6d8bdfa1e01b5d6cdd05c1776af243fc864ec493a924be23aa517b42bea27b2879e28cc6beb1907df04ff4526fbf48422d66fca9cb13e0681a89b47127dd95e2a5500ba6a997d091e933825aa6de6720d136db72559967470bdf57260ffa2d614d18960950db1a1a7af6b16efe16d43e40de7defe28f768055e577c2c4031d8fb461a9d2c7a77a0c3275db541336afd68335622d83eff2009c23255da82bfb799f79ba10bb4fa13601b591207d60cef3fbe13e1eb0fd1e9fc79a14f9d62e9a65fdfb7cd06fac71db6afd3fc7830de807be881fb69a874deab008560ff8a5080668e6399b08c731009b039d1b6e8e2aa94b3582b4775eefbc017e276ee1b929fcb545bc84fa5e05fa42c907bce3ce3395514bccdfc2bb7fc8f917ece5f2fb68bdbe69cbb0eb5dd8c6e23d419f593cf1cce48967ec279ef19e78260c79b96f4259aee9385759ce39850b9f982d9d8afba9ceabf14c1ef8f375beac3f00b090e83d87f3e1b93826c5be0a47c733e0a428fa69d3b14f1bd74ca80c2b7c1d7198f364e9a7ae6be5bc65fe7ca586651e07ee7d02f7c8a6334950fbb66d0e308e79ce2f09353eb3f2581afd01a8cd199241babd5e4a056f5ee9efe84eaefc7d6af5cfd5f18bfadfc6b3c3c63db9776b23b6c2f7fc386df20ccbb0fe7d6aa9ea5aee5f563b7b8d796ad4c95a7a3d8d07f363293e5ce4479c702edef238367a379071a98e73358c3bd48f831c19517d2388b6ee0238e003c299c7b329b97e9bec3919e9e17988838efae6b9e634507a17c2c14ce318ccdcd57849581f5fae5f35d56255f729ab834e15da27d31761e9f2cf6c3d9fb23427eb64b5ca84be2b1883401febe57b4460e3163550ccfde12e1ce016f8960ec0f715d76b704a3151cefdc5bd97f8fb1fb0a0b01e29a821df79ce3d09196c79767ebee3037c76dd2ad8383fe9be17f4ef7be7ba0d2b60e81df179d4a5d0b0cfc168896b1d2d95d89faa8174c24daa7f6d797795d1bb6e3bf30b95bd64ef81cd64a6fac9871ad05311c37e46ee18f1d557ce8f594a301ad638160efd19327203db8eb720b5bfd0b72b7ac31e63fcada36034b98669b243e77e9be35e2617e0e44fed2f5f092f5bf78874de7c6f81cc1aa2334475b52583338531dcc2d144ce710dd15847f308e62953253f53ff0c32156291c06dabf1b990271dca33933c08965be639f7e306787bd478d3995c83ce1c63c81a93ccef840fcf9d50ff8de241de78ef12642fd12aed5d4006e39c9aab652fde73f94de22501e0400a71a9f69e913c364a4f0e527def39cbcb58574f9ea33f00f3d3f192e013c6760847e6ededf3f54af1bfb6fbf965a3f4ce33259491dd1964af5fb34e1807691774ba99727ccc1ce8cb95d4da9efdce043009bcf4f552e5472f7365893803dbe52b7b8621879bbd9bdd05e80ac0f192a9b63d9c63de982ce0fa41f1ffd7f96019dcff74eb4e1ea1a6b2b5e4e9786476fc4c456396b6a34982d695c1e2e4e364529fc8687ed858b768f3798b3675ce442cc75bb1090a9ba68ac758b19b717b9fdf688f23bbb9cf3dda6bf328b628e6b0c17a6dc3daa3b93ff84aef5790816d1a6f3aa68ccec907e15ba098c4e8dcd37d8a6cea6d6a7f95311a096e48daebd84466bc136e26ac47c6e43bdd8bdf090e75ceb3ca7dd3b11f9e6daf9782fd9adbf7bcfc6cdc9f8bdf09d17d2a7b5677efb9a66d0f17065a0f07fce251834ddcbd8632c61065f453e0aa417248883d508cfd82f4d24287e67fabe67f10acbba354fa33f464dfb8435d11c8c56a7f87455feb7f233a932dae17018cf2d4ce8067ed9372eb81cc8a892c2c3d8f7d1f047bbee0143b6f5d246bc784cb0b9d57fd8c749e600fb8f427bf13b232e0e277cce48de011516c598caf4b700d485c0270774b7a30c8f1ce16e43be5cbc1989d140f21546c24536e7e67f1c07c6eaa42f606db071fc74c6e84ef283a011793d53f110e33ecb342768a758b287ffa0cfb794e5b97c682e4569f04b1e57f2b2fcde3f04b9133043a038e0572f380cbf281db86fd1218f65768d8bbc2bfce8bbd411c69edcb36d697387959ec9dd22203db6ad32bfd86dc3b39d803d602e807b5f9acdb8bd799b2b8faae2ac35d6ee85dca77e059386644f30bc1cfdba139e9851fbd595e0550abcc8c99a9e5cdf34638cfe4b5c5bd96fb62075c5f09cc3bec21581f09eefe46ddb09a838c74657c2ed0daaa57ef13cb7abcf7e11e20fe59efe8610cb16b085831711c6aea11fd04cdb610d3d7712bce068e639a57db5d24a558c6a8e42b881d39d197f6249c55f7435e17dd8833f7445e0be65dc3f743ff3f303fee62e2276cbc15f7736a35d40cb379176c0d28ae85bc7db37eb38d6ff66751db1e0ed9797fb72abe7aad695ff4f31c51be1f08c76e6da36707cafa341ef44fa27172310d996799da75d447f826e79e6db1db741fd7b5f3da2077dc1367613c2cdf179b8e9d0598e303b759952159ff4fd84f46f74aeea313d8347bf33083777611e189b840cc0feeaaf018a6f665c6e45610cea72b9ab75a9fb403d8b3b98c22ed63fb86d356fe77b807619d446dd27e211bce5312c5735e4a7726c1e76d6c839113fbadeb25fee72df28c1ef89bf2b38b74078ad7519615a55cc8b74c3d42dd77813f9eafefd6960a0cadc1299a6667815f96f31ee5ebd5cf4797735f384a3b0e07d26d9cd4ce90dd91cb3fc3563c88c3ead4d6ccd70170108de4b251eeb287714a20cfae7c6f20bbad7fa0e35e3c4ed1d63afdfadd713d11278cd158d93be83d030e2da8799e7ff6ff180f86d11b7043f57f54cee991a7a3d6cf108ec793b1658bc1e136473fdacb6d3e50eb7e1a1e1648e94eccb9a891bccc161a9f0fa5728f167809041782cbd1541e1fcb8b0cb259c0d1525a873a6e014faeb7dad9c0d964a2335ee30917f6b7e095aec6dd383a53d1e7253a6bec5d2a078a8d6cf5e83da39872e8df8b2196ff875cfe63d9bfbb6c5cf5e68f769c783fd659b8f50038265f1a538d5fd18d6f9eb3903cc7ccf93171aca3da574edecbe035e2c712708c9f73364afbdbd3c02e1c22bd91ab2f66aa8a631ff81c7fa4bd0bd285486c9ac62409fff34b64633b88e406203d338f75471b45bf606e6982d9ee983559132a89b4a53910367019f3f2d5189dd3fce1b7fb2dd87d005893e84e5fe53cc271e9ef5eedefd171ac95d643fa48ab3ef6767f2c70d941ee45ebb960cf7f34ff5ab6ec7358271ce723dc36be933c486c01f335e6ba3ee8f2df95479d364e28f6d959bac458305a28335c29fb56b9d2092e340ec23b13cfc896b6585891bf221f03a58875f3644f2b0eadc1e8ca3bf02d435f2dc0ca6f89218d8213590bd0176724cf68c6e41b21fdc6ef044837b902a78d619f03edc6e4e030d852d81e80efd7723c4780f1c9ce3337ff6bb60b474c1e3ce43b8759d7e5fc4e6fcd97374c8ce331e071bda07181ee23f1b16f4b79662e70fb01973ae88b80eb8c6d37aacf2c711d099a1799eaa3c02d4ab8e9cc2430ec8b37024e3f7efcc288af610638d1982f788fec72e063e9e4587f68ee5df36ba6a9e9d68d134fcbe5e09170b9d37b44f08d216e6fe42510a3545e404f66f4ed1c37724ac68931d96e57f8ae42f359d414e752ddc03e17cc1fe9cb1abe39b538e366f65fd5e614e95461d61d9999303fa6a42300864fc2f3c190b6c076a7b6664ce70e63b669d171a6f5ef33ad2f4dad2e4717871f6e9c13dacd283712f0463fa6a3e06267b768cec7bfebb0f72e3b0f68afa37ef0edb972de248361c6fcee255a08fcb7cc1a80afa0847f23aec5eb7d2376bf03ac37f6ec33388a789ebae8998633daf6aec8dfb0908304e773be5b783e72db9862a6134c3feca345f2026ca8ae28cf212cce37d8bbd4e608b2b8334bc3fd4cb0ff98be5cb0dd26e873b32d8ce5b3a85f9cfd86c683deb7f15cc1fba2b1e1bc4b72ff3d810f8d75a51ccbe93cb354c0f5c3f77c57f69d09f631636ebdabbf5f1c3dc3ce2086019cba783c8d6713b7dd1ba37e0d5aea8f8ae75f311edd8d6de33fe3c1a6b55e8c77af35da05bcf3407e57e28b41fd7f12771bb8cdb0ccadceef97dfb12f0477fa111a7a168ee654fffdf49cf0e8438c3200998ef76adb9987f3d599a5eb689aa9827358d91fecfc66dd04e48b00ef9127df562c0664836f0cf7935763d5cec382e690f181487ef697e647249f7afcda2776be88fcd1fa77a8b3a4fffec4f31148c985dc3df06f87c43d3cac4f21d926f2b57cc71f093a592092e9c57c96cf117b065a75ad963ceb3a461d9d5bcefa37e7a2601d14d7d1f1745f248bd9b9c4b2913d4be5f96dc99dcbfddd2007e0db5d4e1d4cedbd5dd507ec39f26d96327d16c59b6b796b203ba50d70c89b878dbb8c82d44e2177a2e0ac9faca5d728e898b19f9a7190f37dd2b87277b2967a3fdf069bdb1cfc708c0da141cd7e8fd58369fc11dadb43dc2fc6f91c1ec8f43ca657cf93ab7ed732778b9f79eedf13dfc57135c2df9f632da831f0a9d25a59fa7bb9157782e6e2aa7e6ad23a4a71bc0fb061cc7773f8fa633c94af610a7afe31c07930b19f623c7d9ce3b7c47204db01a04fe0ef63d9063cca0557f5d7d69d7c85ce1db83f3d576d8e63291b92df45f28776c96a25bfbe2cbe206fb1c1bf80e39a96bd7817e694e1e7c531bf06ff81f789fd9534576abdf3062eced111c8856fe6bb7da36fec1925b1d68a4dd98639619f839159f6fbd57d1a84d336e7747f60fc7cc245e9e8bf3c4b8d498ece696cd847b41f824fc2b76330b9170ec663dce0672fb66d0e369cdc8d9c077e2045930c3832d91c4e2e6e4753be3baec959f2de937ce59cf8fbb9f86f9f5cec955f5b57bd790eb7cd07396f73823382641ff95d90f3f7f3714f7ad2c6b92f4bb547438239a281af95f7bd244887e2feefee09e464967db274dc5c0c6acf8d6fc8a6a575f9e5fd7f63f71dc5393fce52ecc799e6b9c2269a8335f9ce11ee7efd5c8d75147dc479d1d7ad625f188c96fff262165be277263815cc381b6318643d99efc8f5b8025edf72bd18d49be4729872e01758af9e8df1b3d07cd946ef97e7bc1c42fcdf123f4e132eb5234b4711460ad6a3ca7d6aac0b50cec760a4261ed471e5fd7e84cee4118ec687b976cbcfd80cfdcdb05f56cae650392fb5bc39f6bc213da9f84ebe5ed13bc46fdaf811db6ad2ec4be81663a5dc79c5f7bec76b4bce6c8197c4cc896f245f9ed58c91fecc5c8db55355dee4675dd4d786f9957ca477e8e5355f91f6c6daa957dda3256ca2673019703d00e648236de17872224d3a34af76186d95ee35545e22bc9f85390db4060a9ff75da18b04f2199fbba41d3fa336a76d98432d7e66a46f86a3dd33d820cfe269b4d91cb2bf4777a349e51e5a9bc7568b89ecf98d7d6be83b4f075c9db52fe13b18d74960193625b2acb1d6b899b7bb9a330377d5a6b3841ca1b1fbbcdc69f5fb3b5de0dac532b2fba0e79ac84a215f21bb4ebcd8f8c631a1bedd77f4a38f7565d9df937e6b342ea6e6322ad7ddab3af4736bfcb5456394ee89b737c15f381ef06c748a3f92dfdf6774ef84867e5a976b85e7fcbb0e634254f586f1e0259aff6edc85cc3f954f646fd26fb4c6d2b04d74077bce7d0cb32df18163b901798990cff13e90a2f96af217e2edb7de78301460d5b7aecfe7d609c77ec726794ed8be7e269e9ef3417c3e17436f9bef4d9aec2da32763ec0bfb42393d6b7535b51a99b6fb919e49c0d141732105151cc08d45efb6a886add1d66fdfb1b3ad631e3d47aaf89ee5244893ddd6b1cf6f9cfc6da433fac63a2ade17db2b6c6c9579ded8bab11ba4faad65af34f0bb73d7b4e5b9625c9575aff9a801c7ded02f9e714fc6869d6dcaf209e9e211e1cf6adaa3e839de7987f75b39eecbb91824e7b0bcfe396f666a671b7731f095aee2b91389f8dac066e0b7b37b329f43903f5cd96b1847e2ccc45538756cc2d86eb12e669abcd89d491c141cd86c2e74fe9c287f3990d5b30077e7ecb993a3672489df9afb9ae7871f30ce8a093a5463dd393affcd751525dea7595a8c85c88ea7eb37c46dc480fd34d35466acd5752eeb03455bc9633d945a7367d1b9286ac4b871bac7da28f10f5eb6ee62b9b262719f98f941cffa1833ee8065fb2d9aaf043e17fc1e7e0ee9ca8321d757c9d3b948bd36ec17cc2182ef359ccb351461b2e077a9ace76311f06224cdfba4951bd83ca0fb36af831b2de460a45ed11d8ff7661c237b8917eb2a7029607c4f6098d5f16f733f0dcef7a4f519572fc74458e6cf04dff353527eb696fc0d33f15d7520e639573f3d7721ad48bd10d747a42cae418a74eb49b2e1fb88b8bea53c26a92fbefcce84cb4f1c423d27f5b9a2ffda178f876b614c92a0933f37e1e0a934dc5f618aecc24aae5ada86554b9ff588ef05f34ffd9e9eb375ba0ad40b0f19fc4271ecbc920f58aacd7adbacf976c0b3f5b7c047aac547c8d91a9ca2add57fcdf799e2517cd35f5351fd61655d713b7ccc13b446d44766a63dd94f5bb015cbfb15eb561db54bf97da7a373af8de3b7ea8fceeb1e9fc3ce8418cc92977f59ca4d22356fcf721f95c7857df725bdd1f3b77c0ef2323e0a91154bd6f7586e5bc4b74eef085cb7aec5a57136626f8ad7f19b350b201f8fb886056a55a08ed1dfef48fe691e43ea6c72799ddba8b1672ca38da5de3ca71bfb23b34bea6a49ee540563bc69bfa2fb8e6f3f54e6a46ec70af3c0945e56f84cffd63ed4fc25b99dab1da2f9aa2fc86b79aaedc746e965951aad15fcae29ff43d3e1cea0fbc1caf75413c656535d0ff79e6138b9db38ff8a1aa335b4b18ede35158fcd36afcbd4c678a9cd6d94e5f3d0bb86fc9c35f869e744c7eb6c1b3dcd2378cad53dd082835cba97f3b832e55817e2de32ebc43fb7ad3ec371cb7ddb9ce7529c7ffebcfc5eae0691e9e53d8aeeadca3cff7bd7e5091ce8ba1d997c20d99e16b1e859f5fb902f5297ffb5f6c43ae5fb263d269b4e43bcbb167716eca167f14d88bd89b10b606f9eb6ee3159110c46dbe91e2bf584472eee21ceedc88a3ad3dd85e446221b95cde98ede33f5384b3136c4db27feff2a96533556ec3b7c1f8ba3ec2eb4f6786b7531aeae768b70ded204ea326648274ea9edbdbbf824471f7ebf27b5c71a7ebf5c8fccf5c330b5c9fd83af4cfe7c8efbb8f7b9fd047b90c5f6bd6ed203174f96773eeb7980cffa36c4b807247f16bf4fdf13e21e14d8c905d605c52589ebfcc618fb2d0e529b9e07665ff3b18d50db6c8d4f835f43f50c936036cda3409121bfc373bad7d0090f6343cfb0fda20ed7b2c93d1f41d6457acc616edda289b214c41de039a60ee39bbed11266f1bc15af3800dc5b3df3d6740dda70a58a982f7b46b9f5ef0c9f006b7bd5fd4c75bf5ce59d9c2ffce7e806f656c117cebccbf14712ee05dae7dc7f85390de2dc0e07ff053bcf1a9c1d121bc1f61f60a5b46184907a2c8bda7c5afc5f6c77dc71dc6970c077a8a5f65aeb5e09b701ad5fa17af23bae5ba171094e8e52bf6247ee8a7a444de007dd93b3b35f2474be9eecdf3190f23349bed186458d6d5a7a8f4d094e3093f779d80a62ec15eccf63406a88f3e7db6bab8ab910e177e56d535c166ab70bc6f50d3f8d288f11efd3fc3b8db557ff147e3f8b6725ccbfaaeb2984bb22c7e76265ee7318465037fcb45ca3636c956d2de3e2de35f9192bd9e75c0c9c6320b3f2a265ef97ea19d119ec2621c5ccca31c0bad7308bfea93dcffa91485fbb185b65dd4ba75aed7eace4a79bddc0b0af5e55267668ae48fdbe109f8d408c83213c8334bede5e9798eb6f06cd8f599cb6ce22990efac7d9efea5325dc5ea45b61bc5eaeff83efa7ff565ca83e0f04cbe9d97d26d2ef5bbf43ea323e5bbe03f931d8cfed3bc9c93712cacff0f8bdbd288cb7f0e692e60e97f449922f5060f88931217badb283dce344cf780f127bbdcc685f6fb96e33d3d422de86731abed0dfb7eec2b687758e02ac43813ff1bf3f05783c8cde54c4e791be6214fe6386e74b70d7d2be404e357e8fe7a735589ff47762f0b05f72bd0ceb4fe0d3061d8dd1e35a31362906249c5bf21eef5cb1ba61081c7d1877eea91a678e7e3a359207b53b0bf982f5befcbc0d710e302b7f7e8e78b5853c59c5ea904c0e20c63d383e9343c1dc47ac4ddb98f70cf54194d380d406047bca39aa9e4317fd7e92407e5b91bfded9b8bb3a6684114be1487dbc7dbe5e3d2591b623fb73962eaebed53bfb8a9cf8fb658e8b38539247d0b193207bbd2f06e34afefa1c303c976ba22b0ea93c13c442d0f339b61cdac3f87d8c6128d1f3557f47b9b13154cedf7742fd6f93f32ff1cfcb86c12b05ec71f2fff55ae64257e1dbbbf367fc34e5fa437a976979ecf0343668ade32d12e2a8d6fb826b5787bd0ccde5b3ede6dcd1ccddc6ca041c6f5433bf635ec35172f3d6f211f3439a09b231810f879b471ad27d7498823fe40563de3058a71ed434a33b8ada19ddf3c68dd0d97884861d7bda0be6e01d1cae33853c631c1f649fee4327d979eefc3ace7a9d8d3bb940bc35eba16f9d7d477f9965dcd868494f68d211b04c27751f0c2613be3b6e392607f667dfa28d3bd987849ba62d87189fcd6e8ec93bd5769077e877cc83e78e2f454c276ae70e2cf6c215d720f45f698cfc3d5325a863181c68dbe25cccc6b83b4777caf7727209898dd030ee2738f32a350ee57d177f68dfdf77b09f9ed8775bcc0df3fff7dd5fdb77fff95fbaeff878b8c690c15c9568bd2dd95fe6633c5a5c695d9e6f9f533f910e64ac475c2f84f52688cd1bfac9d7d9da3ebcbeb34f5267349a24be912441a6a2bb1c63bfb258bae90bae0947f7fa6812fbfbc5313412a5849f29b3ed937d3b9a4781125f43e7be636a943e3dab842d8aec3f7a6e721d23c078bfcc73b72854e26b507063a1b9a278c1896fd864aea06eea52d44e110c358c3b7dc5b68bf998f179c18e1be5ac7d5871ea631c50683368f021cf3455806f4fdfadea6843d8f35b7741fd38f99a3a0f55c85959b487e4109ddf853fd7a5f65a3a4dcfbf91e7a8b472e7d4b00a1abf93fbd3693fe53a876b294f6445f344f2bd92c7a1dfb2feafa922b245918d10c5c577ce47d72acb14b015d8bf93f381fad89c973049aaf32bc8a168acc12eecfb491270719b4b382f76a0ac2347962e81d2cbfe0f7b6fd6a7a8b2f48d7ea07db101db7eca4b454150a91295e94ea05a2c415ded889ffefc3272208104ad5e6b3f679ff7bc17feba5a21c7c8c818ff1143ecbc2505aeb6fb10c66f2119a85eef1af36d2d0f3aa007861e8b45ee22fde63481df1c4243b7cd4c60d7e6ec12e41c6cf66bcf520317c9aeabfd5405dcedc70b3e1974f7d5ef19eca7833648eee42552ee475f595d108d856ac2e37a9f903ed32207df109f9cef770713e9006e20059ef16c8c0ca71ae2bc788cf47a8d4d667f27b5502e801d40ec6bd4ae86ee9889c2d9ddb87352d2c5f1dcaf5166a72c27aa825f6d76206f7b5ff17bec23cf49a2bd9d46dbeadd1e135f61ed7bc845af62c29b90875e7b166236ebcf52ace3daf3c42633af8db36cb3e17ed7f89afe253a3946125a639cc34c6dbd61ed8c123baae27485317f6ef7188f922492ecd457d2b3efde8a9830a19f5798cf8af786e645eabd3cd01d928326cef322fcec77e0ed364886ab8f9be3c18d78b168dcbd4e982279b37f0817379827e8f9827819fc19b5d7ded359ce1c3d571cddb1f6016f6cba1c89b112b9cf449743f40e8f538c7d5dda3192bac9729b9c5de59c7e3ad25154f3117f44f523db793139e72db17df2137b923077b5d8e7af565c517c8f3be762ede02e79a126759d1e9fc6c8d46af4e570475cc3ecde05f94def750cbd7b0db732e074058a934704f32e52e424d4ef2960a5a3be9b684d9893d8afe602eaa1de4b6215ed6971065c258dbdc50ee7498ced2ba9bb1b861d731778e09b0ad78efc4acd6d39cc5269a16b0f5b77bed6ae9c842fd43e14c5ff3ccb532beeb372db4df6d942ff98dfdbee03a2c7086af63c8d5130c33d9653cce148703fd6ec2aa3d83313dc46254eb7c9c6332af8e944e7fe16dfc517b0cfb8f7e367c672d4c096ce7d4fecfdb683f62dca935d3126211f059c122c4775c1e615eae9cf224712e39800ff10e7d6df6357cb63dd696b833dd3d20ebe1bc7b3ea7c8a5c6182878ce44561ed438cc7f3a8c6151539d2185707e44dd1ef59fa08e5e219611f8033de3c46883f6a9e23dcdd2deb84f3315ad688d4216f9e6346e500a80f7f13c7f3e35a082de3a03241cb3ac8c750bf1f5f68ab1cdf84ebd6dfea7222d802aa359ec4f28660de0d98b0500732f02ca44b9133807970806baeec02cd4c43b7a70465de04f68869da2b8f7d2cc6829828b5b510e0950d986f0ce276ddd5c3504f60a79f2dfbb799609f4286ebdaffcb1806a9a5f67f83be3e1cdda0d6f6b6af88de833c99fd0cfd7ec7f5be0f1beb8b3c3f447df664c853c805bf73fa0ce8e2c399122c57d89ee00557b42f4176bffa1e8e838af4de31dccf3711c496e2ef02a825623efed06f90bf2fa31f351fc408ec7832d2bd42c5afefdf6220010f1ecf36b3af395b031fec796916644e8eed0dd85f59ce49a4793bbb4dac2469b81d74c28ef99be4ed70315d73c04235f46e4ab15da28e0df1c6b19ea4e162f0c0b1679a14b8f7ae98be29ffe803ce19a215c6b7d03e3ceaf5cc171eaee3b57665be268a14e668ce1ad2c9307e26a9fd8fe4493436dc3ec698093b8e64e8e74bd889d1dd5feb235692a3af6c8a36c6e9355ee0da5980cd37b693503fc3fefaae798d3db416d615af4792600c24ba1e4e3d1fd49b23be73f3e12e724e9f159c4f7a47b3fe87123a5780958fd748937dcf9400cf0a9d1ff80eea6be0ff2f8d9a7e4cdb44b4e2430c5d1947aabc2fd4dfd1c771f9b43637a93f2d7ec794fdcc64cfb4def37afab0c74e0ee746f9218e39e06ca47e76203666ede22b107351c8165f4fe597c4df5b0b4cb7c92576e52dd81985f599a9af1ff0fa9ec56c59be671fa67b1362e327aa74476b1fee9db39f39f964d1ffcb50a5fb9fd40c34467212eb9b0be623f3036bf3e5ba9d502f06e8351ec7576a4f8cf21b2f571e02d087603d081f61bce12bf02ca12c182a32a25b52b7267d4c48dbb305d8d373dfdbe58013a774a539abc724d689439287b67435698d7d0907d2c6bdb0f571ed16f63f913c406c95c968ed0619d76ee2ef678276fb67ba2eb32db37336d42d4ab3600f7c4a2843acdb6c852ca7ec29de10e8318d3916ba8dce3fcbcbc6b9a664fc0ed454009d98ae15d2795a6bbda89b24d07b9778645dc37d90467b8cdf11eb3d33dccfd97ae176481df9f26fa48f6feac6ba7d0cb2e031c94f7f6e9b246d406d6e6277b5d11e097901dc67fa5236adb963af16abeeb8814f505ce8028b696c412cb0efd9d7a886d73948029de584e07ca42dc56d417222feb4dbe9086fc67e2b82130dfa24f0d4d8b3bf58bde496fa6d9192eec1eea346bf4d51ce058e4d61f8ff1f6a3be65248fa44f43b75c9b89ab1641f6b37be60ec3569ff6ade34dbcbe6fa46b85db5b1df9f81675eed2c3d856af2af5fdb627ed31cc96ebb9331348e2def33f904eaba34da728e6994f57424fb4ec6dd7fb1b55157484e843e04eb588baf6ab0e9329a33e5c37eaaf6f7ef5b2e368bd1c466efa6f87733affbdce68eb9acd035a2cd45e0c6e9a746707fd4786de6acb6f672adf7f27844db2fecbebe6bef703de484d034ed9bd6e8b60e61c794185d16f3427d127c33d2a776dabbdbe864a8f1daddc67135d690c4f29c281fe37359ab77afb00688180bb55a67a2c7d671548eb914afc58dc61871728c74ac626e2e46ce6c357216abcaf7b19e9e030f6a606c7c2591c3ec9c46fcddac46bf67cbfecfd9b0bf37863f366e1edd672a5aa3fe1e7de739a567cfb3e5ea3153a30d7916fd1fe860f6e09ec5f690aff5d8b9ac258e8fa86f0757be4713f91e4d1df9cdd3ee3bf4992c7afb35af239664b3d6b54aa36d8105d76097c17442f4f202070f745d44bf17dcd6866b53789fe3f98870eb21f6d47e88ee62a6273ec4b184accf1cc70cb6615414f70de4493fc539c1e3051f1caeebed5961d15fe14b9d2efa770f63ce87553f634430aa71dd1b443fa7cd242faf1ba12b5aa38560259ef6d34584eb9b0dabb880655bc9244f6e8001249fee1e925387fe6db2403a04b18d92f5751fa6a0fe3e871f52e8e4040fa0ff6f63d8dfbce31c2bec475dd05c91d3de18bef1effc3454998d4ba83300b62c93b713ce178eb16e8b582d92f79c3e68acd6b4e3487edefb192addd4d09d7beca68aefde538ccd8bc6d1db05eead214efe7e0d33c743ba22e373455fe750b1d33acd94fcea3b248336f8d671bf2476af397f06f81be9abfb15eabd4b49b7aacaa7dbe69a5a10d7c9724b182e1ba2bf5aec7cab6f66f84679e385d439fd08b6c27a45dc3b876a1c0eeb6bbac7f55d978a7f982c769be902e65d6a5b345fc467a1e6a27ebfc6b97c0abc200dd54112e9bb93a117b61112c79985b8e6db29ec44e7507794c0453ac5e028aa0b40f2df7653c40301476f7528bee3c7dbff8de5505f8cbb40f07e630f63a0303a023ffd8dc52ab76157947df044967aa5a67e35b6b18891bf109c7c618dc1daf92bdd0bb406af43f98ec0d709f2c847b81de86bcf4c83acf763fa654804ebf70b6a34b1fb91b5c3e61b419ddee0142a9a84f19206d7b5db95eab50c710df2e871b84e95f818eb89ec6fbb5fa122713634ca2b7a37a8f3f518fdb01e9a589f50e5b22eaf4b454da9fa784b35a0ab358817a3dec742b62a3c0cc776f13c265690dc0af14410e30036342549c30cd7e9f317455c11e0f5788e8463f04ab29f09354d735cff06e2a13176ffefc0756e44c76772f1dafdb1893ae9c5277630f23b57238cc98f349f408ef4d29e836fba1a8f578edb7fbb1a23f963b972de1dadb20efa390dbc01a6497cb6980c67e872eabbdd87a1f72ee1788764a724cce2b43ec61bae37a6f7e4b81417a665410631ddb87ea1ceeaf0109ca51f9b95f2b6b19687c76c79c8ad6dfff76c38bbcdd4fe79ea9cf99a6787d9f6467212d378ba90fec5ef6ff97de33653d91e94ec91701f0d573f678fd1cfd997bf09f45e1a293ff6b13a483ff5f411ab14ef9ac85bfc5cd4d36df6d5bf4dd5c123c4f58d92403fca453d69bc761817c44903ddd94d69cd8605c16e501be2db46b00760bb2cb5e55a52ec6a27587bd7de4579ef11bba61465da1792472670ff609fcd84975169ede1720d39ded7003489f60fc7ec917b7a1c1f3e173037a07f63ecdcb01d5bb01efa88f969c8782fc628bd18ba95403e16d4b8d420662ff630d67e857ed819f0dd3859bba533f48b3ebb70bbf328ebed11bf079986d126f47382b65c7476579bb5ae29c4ee4cf786bb7b4a717e3cbecb25cc078fd8b50e74ddd199c46b87eba3e2ef1d905b84717e806582e4732ae71739386bc5492362ab05beb5a0df113f98d7947f53b73d7845ddaa46df19c93f1990f90b72023789206ef6995d95e6d3311c3b2477e076fa3f8d513759be808f47f3449ee1d0fdad5c3ed25f9147fc37f5ccea87e4a0f1636a9b8b48468775fb260e4729cf91d8a27dd77c70793c6fc670a4800d52d5e0ae29ea2eb6e2deb05c79ba3fd80ff7226e5499a67e919c171c935aa3fdb671e0e7e6aefd17e4fe0c25c8a1b779fea326e0f77c0517027f573d37881ef07c85f5ce2a7368c38fc2be89ca985fc4ef02df6da6ed029a9b36d276ebbdf340f4672a5203e642d3da1736368c39fa1ce399c4f0621ac1fc6285ee0282d542d68cd4165da597d5d8bc061d338d3a755e55fd80adaae36ce3b199f89d797b5c19bf1eadd847a46d5a4796f353519a9d16f7c9c950e3b39937db66b9cffd957eb15e20aa45587cda62f64b6757d5a8effe0b306815c784583d254677f3e3799e42ebfe3caf4585c7d4244b929c0a2a6b35639dbf3816b82bbe57174bf41dbb8760edfec87fc7c76f407ede1b67533fbccc6b5ed2c9902ca081bd91b3a7d6e4ec067f27e1c74f6b558971378c977037687f343eab7f267f37f87f44352f05fe90c21e53e32d4df5fa2afbf39dfc6a769f4e3da16fe6053cd492afe91178363907f62a942197ba3e8f669f383ed77b47f299bd77736b5c8bef8c45a2f9952fd25085d69b6aa97c7fbca2b35fe4bb12fb4903de1fd0ebf3f5e43ee43e2e741e5caf6554b6ddc0388e53b5bf0f1762bccd7a5c67f3fe3d8d93187372be665f691d008eeeaa36483e57ed573c3e9e9f9e6dd1d9a2eb0dfe1366ab3a9158d4577131e8dd732475e6f7d46f6036c88804a3770d36dba1c4786609df254fb07f8193a3992cd582074d78e4537da0654d605c4f6a633ca3afb29d416dbbfb5ecdd329f3b2c6f8605d7bccddfb3150ba69304aaeb167b271ac1beaa7946488acc0b3698a93aec58137604c90335ad305b89afe35bb6585df6edeb7a2b8497abed81928adf764d13f17326b3f3586fe8dd0e6eda598255deb867aba5f8feda5ef0550af0af84a4bbcb52877a2616c3407f482fd0f2bc8c3c539329bdb64517d5e1cdbf1076dcbb5b6cbfefad7e2b91ad666a524c7006c40f5bcaf023bbd841bc4f84624d94b47b30e6b379002b711d74714db3e5ac9f672ada759ac3fc7c328619008736e70cea908a72d1aa705b65e4e7951151f09dabe45998363a72ab807021c91af69da4b1ae64b73862b18106f4c67c13806e8b7d151e47ff1a1de8790e734adbd30d697e7957cfe338e4da231680ece15f566a4df1bcb998ef51ec923dd1c8146ab38f8ed3259f3581b30b55b30b49ada7a25ef82d53eafd277551f28add1f06d637855b9e6c0c9354ffb752afca05d562cf1effebfeb32d577fb9efdfd3e119d08ec26c497fcb3768f547dc3236db952bbefb633dfacf716926569bd0182e133c8710c4c294e22893a83f7c023f1311027d1fb9ca8f29ba7dd7e4f966f878fc7e1007112db349c6e0731fa0efe9fef7e4eb47b14a8a7e364f8f6f37d9b449e3eff3d592491a776d1df7f4d966fc78f7c7eade8fa90ef8d7dd689148ffb3fa7796f172ad6639a59a7b063c951b63a877aba8d322dff5c74f7a1d2db87baf3152a764af113d6defc8af877d471f2c0e9c1339e023af52f5c03b6fb179261c38e93fbcaeab21edbe7b03e8e47a8c869ac00b6f819f0b7f5f462e8f72360df28a9b456fbd2f46b7e99e53f726368dc66c3f926ea0c52c4dffcbd23d19cae281fec02d73a86ae763274edf2e9c587c033d33a660ed47bc862cfc4d80cba7c0df4345bbbb4ee04cd11030c735a0ff381b17aec64ede21ad47ed693d6a42e366973e77be5f8c3b5675d71fcd246c8b3a6f28fc3d4bb479e7a3a7ec87dd86b37977e7bcb5e3853a5ee54edc6936d1a503a10fc66b5fce6b5fc36c2bf1d57887626dae93c91a57fbb8ffef97d71bb788bc371a1eefeddf4db72d1fcdb2adffd7bb27cdb4d1f4d313d341f9ecfafe2f467af6e93c77762f13c27a7896c5d88ae48dc0fae3d1c281ae44e209e1028ce8f08fbc8d2cff120050c866c753274b4f7a964e8688c761abada2510c6f440dc0bb3f188f378d2bdb8f6aa99c6e2dca56390050b8c092bc4487d086c7f4d3208975706b1f54df6b973f438b0180aaf962b23c2d1c2edbf17b859bf702e43e3b316ff2ccd2110add9afef63df410e94e1a68f65a6bd4fd4f313ecbd32fd7c76847804d85f0379bd2db502d95e74593eaf41fb17fa0f9eeb64459b3f2e55cc3e9c73d16cbfafeaf965bb2bd151c107a03da251378d357c0ea699f32370671c3d35e85234a697c492b90f2da67af474116d3ef2fe79b6e8ff3486a3bf438f5da44735daa5f5f94f2e5f168f43b207cec88921bf616c1d03e547a3ed7b3d3cb09871e203a3f5d58e867a683eb3e4acbc6f075228014e37893d3d5b8b55d779b57f74d6aafdaf2467b894ba236fb1db4cb638c6b879fef2831b039f47c28de73e5b389636977aefb626b13cb309df3ef303af2ad890f34dc0f28807b75041fd90788ecc3ac5ae8deb516ee9bb300711adb7d6e6a27b4770e2e8fd7809bc24f5f302d7b281b7b1f86eba8633472298cbd1d9ccfbff3654e98ee4c799c83652e5018d3697dd4f8629ea5957466f0f339e92310871ef0b9e4771dd1f21b51169a787b7b8113a6bf6d1c48f03adc56b46ca1ba3154b934e84c6847921c519118ddb7965dc8786712baf8c3b5c368c5b7e61dce359c3b893f6713fa1358ea76e9ef9ab717d50a8f7f720b21ff6f7ebbdbc84bd29cac9e1fba13148cd7799c8ee49ed94255e097e7f856231460df8129b3dc6b48a207e831f0bba1fcd8e7d357338b75cdb6539b5498e58bb41b6aae2114920aba451e65c7c65d5e8e7aceaf9fcfd86c7db4c4b6defc6fa5b638ec30b774f4f18b3cadfbd38d695cd1df2b679b94898d352f095e94eaabe8f7325abb19322fd9fc39ee6f00a789c806fc987a40660091785f9e5d498e1cb9b794b1c8c5ac6fd2fe4459287f9320e7d5dde2718ac07dfb33e6205e29d0a5c68b5bfe772ce1bf1caa3cc91c056c2d5c129c6c8de7f162fcfec76a83db18db1aeb74cb300ee116eed2fd1d8bcc67a0ffc9345ee8ce85d867b0778e6025c8b26ac1f9e471fc37d9ff1d7ea1e426cb2b2da072ac344387d2e06108ffc6bdf45efe2fc406cf73819ba29c7802b125ca3bd2d87245f1aeb45da29527ab5f67d9a57399ed1fcf307d6a353c022abebdfe92582fc9d1dc6c1e3b082498ce197ef9969b0774e866e2521d80222b42fb750d7be820560eb1d6355603765b863a80fbebe0a8ee305da52bb79e00d4ebe6ba513353a99f96d63e63ff6939a0d126c05b748bf77c9fa422e76a8af36b1b2dae3fcebf966edd90d71bc09c5f4c921d66df886ed4830c6421e7bee771b5c232595d65e902e1b78b09f698fa0b06536d49b246b23ccb586ba2605ce87c05641eda404eb83f82fcc245256fc77bf0d352136618c4f325121967eeb7b563add032ed701cba3fdfbec4b140780dbe47c03509725e27929da3349da4f16dd63246959ac3bf984d8c59bf8c47421433c3fd5419fd9e12311efcf41cfa336efb3a19ef1bc32eb04fe387577f15d7b3729af27e2b5562557ae4c2b8df876652c388a3d68f3b9d18b048f81d9e29b7341443920067dbf6c1f456787ee63295ef299dfe3331f54b1397e421e904eefc1c366a60e7acfd69fd01baef5a0f72e8103b1f545bc3ffefd446850881d89cf05a21188ffcf8305a5cde6fb0e9f91ef9fb96fc6e6804c15e9bdc7dab38f71e6580d7b4bc67bdbe0fe847e1242d7759bc1d4c37458d98f96360a8c07fa2ea1e1efdc9f2df953f6873d7a031e88b141fafb30d3cec12202fc5b43c76799c707a63e3df68e6bb7e1420d02f4ee36d9ad3d33253e8293a1771351cc08e7232ef8ad9a28be7b3b19e3411a65e9b5a97622b3496e6f9b58976fe2dca0de91e6b39398f4127624b65f836feae4bbe9c5d0b52dc60349a526db54043862bd9da18e0a0c391cfb4aee9bcd6ffa4c2b86188fc1ec58473406311633772661af9af447fc3159aecbe638dd46cdb9ccb57645d83cb5cf7ec2f6e5c6e15b809d620771feae85e86037dd0ee6a1ee404c7e1927fa3f342e86d771db14ebff63630a3187eaefaf1427e5fc3194d7ff15e5389728e838c740771ed37c768d152d0fb3f41274665774df4cdd14cb6068de388ffc3c259876a1db83787f24d34db771d3de35c77d8fed7304b1f84152ad0354ba633056e40d30ec14513c1d3973947ea13ea3f8dc886bd4225dcee065655e47aa9e59118f4b02dd5e723155d82f88db3d19ba7d8c325a87a189cf36c7b1ff7a1edb56edff1c2ad2a9a43b420ea4b60b748c2f59cbd76bc871ae61612d78bdb7fbab7a3788714500f3a887785024d3dc336e6c696f07182bc298048607d4f63ebd4b1ae20c3016f12bb13d48ef58666f9bb033688e997d5aebb292e3836bacd4be2be57d407c1492e12bcf35d429a7f769932d33f06c0bc7bd505a885346176a4c7e8b8e802d42ef66f50098d7a4de6163ed9c625d13b26f4d6398ef660bd627c418229d2880b856f91a2e90ac0d39937b92670a3859932d4fabed98d658aeafcad2cdf8dcd59cd7e2bb6ace6b4d3eff0bc90a73d7de012640530c33b7474fcf187eb6316e1cc6867dbf0f5c07889e8597e2704136473c9caf1180c61f7806a945a9ed0235aad84e075c6c28d40c24f605b41f4e3e51a5fb54edefa3221f613f69c458481fb476f9a42987828ba57856ef10af0189a743ff76ec24cc2c7887f6d3281f821d74c56a0f72389a16cd3ffda5627c68635c603fa0bfa92c80fe2eeee2c19bc1301fd2d05b0cde588d52824f486b0ca1f7e2ac770c8618fb8fd6b716da7e2beb57196f630c632bce4c535ebc08e3c9b3486dbaa7cfb1bcaf624cf737916c29f6af8a787dfa5892b55e764c564f9160f03f7fb7b45636ab81f66c7cf5bcb38639f374d96cb77f298ef0f95885f98bd85eafd980238cb1326bf5e1204f0c7cd784fe6c57bec5e35d8147208a2b189b57243fc5e37415d05c31120f2d58b35b94f5903c26ad5d87e0c437c9bc31c19a15d53cc19f064cf5521b55ec73eeb3a7f7d7f367366d7d586def6319a6650e42dc76fef71a163bdf37dc13cfda47f7644b1ba3b6f1136cccb6f78518f3a5366a18f6fcf858ee6d5b1f0407a5751ee7b63114f7711b3d51dcd9b6679e8db324f7befe6cfb1a8969545cfffbc939156209b173f9b92218f950236990467bfb0876185abfa326270b71d8cbed01ae5ffff7c7a27f6f90658ae717d5be1beb7414ef388cafd5befb35be416cffb213433e5cc4e583736b2290591beca2155e8a78669507bec4c75fb8af4436538c2d58f05aaed60c7d4fb4bf884f24ce38bd05c55a096380b15c8cf1c61cdd7934d516069c54077cc4642ccdf8f324d62a5bbb7709c99025cc3f3d9502b70d77bfb2fed8a6c4e4825877ceac06a3cc7260c43542b9cfafc58ed1742dc781d18050dec4358b9c62ffab6bf1cafecf15ed14b8dd9def99cb4877be9ae55c5c5b84e0b4f3fb5ebffb99cdada916a5102b8c9e35b2df50cf10e28a5bf908d494aad73929f35ced1cac9edd6fddf4736c8f7c6fd7c62b4fbe6741bdfdd6bb3a737ec41a60b23f6dcb519c74dd7e1724a1eb68681dfe41de5bf3b708b1509b786f3e407a77cf188e1a7c05c55e822d9fdf2bf97cac62a935ee7fed3bc0c26af089f3bcfb69edef021b8dc898a44ff08b5678f7d338fb407124ee1c11acd1f921f452aa9b9d0cbd7b8d1b6a7c515c304397bb54ae9e6680597508b35e67cac96f0db97d6c3ea4ad37439514014dfd1be9a3be2ba736c402096c9ec303dfc6bda10d8e769fb43114d8a1866f1b53b92751079f37411f3f0966d7e643ed378d01cf039d45c1bdf0bec57126c6f0b69909728c3f72724e47882f3c9b83e8f737ca333ca883241c03e53de0ef12ebf6e5f8ef04ce98aee5e670748809360cadab2cb00b5da7f960197b835bd831251a978ff4fe505f41cc195aa35877f2a24eaacdb09bc24e9046d9fdea135c78ec8729c6c08f4d603be3eb6855efb026f98ad4dce77c3d803dd89ae349f1a79aeb08ab653e86d7aabd2e346ebb1c13b7f62cea6b247520f839421dbcd69a9178bfc0ce5b9e5f330e44b127adb5a1a9ac508dfb2ef66a05791fdf1b6f69ad5e1f336044bd34deb61c6bf079c6a9318e138af5e82bbd33a2598ccbb5da441d3b89a05e23e05def7c6f7732c6c183e52255db1bc5693c26351ef0bbe750f1cfe45da8918a7834a941d959eb0ece7319c7a909f935254c4a86a102bea2ac57c1b72bd779c37b0ff7532537568c551e29d8cf23c6b0447705cb51bce0b9d81fc17603f78018c784d541466785d599072ccdcc4ea21dcdb562be9d47a8104cd2d29d20aced7a8d3d1bdb8e9af20b692ed778d656eb0b9d31bdf0fb248cfe5d85bcaf494fb12d19ddca67fa7e3ccdd059b831ac12b42fcd75c2e81d43c76c85b44d6fd1168b82e98e3e2bca190e3b8e04f65d0e3787c608da50d36173c463c5e776c272e0e87edf6a319e30970a7efb0b78110c8bb4d9b70ff1945446395473625bf20a0701d40a2c7458a809366ec22dc3e78ab3591f2389fa9c0b3df32367b6cc9f4d75c4ab7e0b9cc7316aaefb8bd79ed6f5f956bc4e35cf92ddddfcfcf0bcabb595681d2b19ff8bf371cc4a1e5115031ee332389735be0f2087a45aeff0c5dc6ac577ef72b0ea65681d3eb6a4ae3cab29c5f98a9ae2b1dbb1df9adb5bb0dadc7c9cda23d635c054a3f39b2c4a63fc2e2e0b1fb7f47f69f0ff0b34a8fee3344872978bf84274b7a3f6281dd4e8b24c032df8c585acd2c203d5c0b33b81eb5c26185b13e966d729a93d88f8f8daed7e8563e7b1f682633c6ecaddc46302ec14901d795f17b40bf1b1382f404493f89916dcc7559857da1ddb5792e77d15e10ec4fa9b3066d05824a27c71a43393bd85b108300628dedf5ba5fefa3f834fe22b7739525265ed617b4365dd31dde79b6395d6db6b5b2438b7cbb38e71964a9f0e8f91be11e9acf0a175e1d11a917ac107b20f7a94813f9cd087a81e0b914b382c9779e62019279d94e8a4e0754d355c279575e1f31227227d177ffecd6120d09acc87828e8a7e9be6ffbeed1758a22cfe98edffc960fcffdbf2cc3192ad247439fc34d696d05659e237c456c9641d66ab2cb0d237efcd78dc421b1bfc36929b62879f9c95a27e2317d3f30c73b5112f83eb9fd057a5b6a143d6aa5833a8f350e5eda2b9b0fb05c73354fd45cfc64c30c54abc18fbaacbf7628b3cd08a2fc2f60172b15e6db3726735d64efebe2cb3f9607936b615e52d3596893cb1f466f00e39374c6e9f66ce2568ec4758cfe9fb72149c29e723dad1b3caeca94c6e7852a3b6ed5c227db8c60f6bcfbd7cf6d1385f97fb04b82e4ba4e78ae688ee88826f35f7f1dc8687edb6d53942cd7889e4da88f91560914fd501604adbba738af5d1c9d07b723c26b9f382383a8a4d53be57dbe5b365a6bd3fc55ad29384c44f817ce528a9b4166059173aa320f70eee31adcae39ed4d413e34697d70b70fe47817bc73512c1a6a14915dcc2a3a14a0d385b9063a304cb79bdfee26bb274dd46d0898f90bbad260de7067f7c457b048bfefed37592681bfd6ccc19a676049c5f7aa1f5f226341f6d6c1f7cf0b5bd913a920df9a27b33f55d610db72fdfb352aebeffdf1e4b333eb68964d6dfa2dfe97a449e93446053f887d6a4194b7b8beef8b5305715e3d473f1172f8d85f4bf99927a029345ff6a0cb5f4f918da6be9d2b5a1b578ccc7b1a9bdc23eb7a0987afd33bf1e56b612e26394f607eac1f3f57505be1bba464a728d3d63ffde78b711bea5d2f3993ec8794c909e3dcdfb0f2b5bc9df1f53730d61ba5e6023fdb3b5427bc8f35f58bbf7a12f05cbe6baf1f48cd5ea1cabb86613d47afd021f601a289a142c06bba863b7d01ff61dffd9daa2b9f0fc7187ebec0de73ffe8139a0ef3a53757009dc18eaf706634b948fb30bdc2089ddbbf4d21c2ae7e7f51818ed61435e2d6052b27d7dc7b564f550ef5da36d42bf7fe1eec6f1c99067b64d92a93ad8d6ee52e2fb9a66b81e13b62b18178cebd574f7829f2e0d33ec8fa035e1914ee4779c13c1cb7918e3f81a65a78daff472c8b750c147416bc062b993d69c073ff80ce7b088f0b372564b19ad296d038d81f0ce8d288fa4c04f764b6bb145f24b7bcc38ae478df871e09969985904af8cc47c0bfcdeb1925c43ddc1b1fc23e2ef5df40f7e393f36a9e5c66e2197764b735ed973c5ff85f610c8c9de12dc966dffe0bbddafb5decbd1d9992de8bade36c5f727ee7b81bc0d758e932bc6781cd5f27205f33bb1fb763cdb8bf345489b5f8648e74c8a1a1e22ac0303d621ccac43d8315aea87b26772f0412d789d036a1074d67aef14ac781ae89f8de1a83c7ea18ff0ed8a31ea1cc0f0f33be635eacc886f19b7d7322fb2ff50f397ac2df0afd25ed1bf67d55ca4763df14fe6fcfbbf61ceb3f26f4f625bfad7a9621d02d7fa4db15a30af4e9560816bb14ef99ce4ccc9c31ce912f5e7c47167fdf3641c1f42e59e2e39190c9d159fd4bc20b68506acdee41a2ae7c7147cf99a1c8e696d5e5887bdeba481bb90ade5421ed99a6d2c86c773b83c3e22f950d8261adbb09d18305cdbda39afbd45d4841f21852c76ef394e2877deb14d475f1d4cc5b998f9aef011aaf12ed0e79be54ab68c913d32b434709ddd6631dafc0c5de927a213578a2d4793d72e5f53b611f3c0be2e1ceba3c84b01fc77aec6e43f850ddd504bb3869de0483ed89a4ae3c0350770ac92888f9dc167eed95f45cd20ee3c223d0ead3fe092d5f30931af932e588742cfdd36331c1b762eee8afebf8ce1aefbbe7c6e5323b4c36c838d327f333e14d22f5be3463f7242934e1a4c57b2355dd92357b6638e0e2e2bd95abaf23116c512719f9f861a07b8addd79b992cef6c80e1d4d2e683cef22725b8bda7925efabe2a3877c9ae97e90871dfb1a8fd35bb0e84aa1942e97ecac34ac31f0c52ee529388fda85f89a84d975f2c1bface5e087a10749d4b1214718e724a792318e591d2f5fd144f20ac953b3bfdae25caae736d67b384748dda1bfcd95d463b9407f8a1b5ff1a9e3f6697f9c9f09f1c906ecef42ce46faa0d0bec7c932fb0a1f78fabc9946fa3df19515a9615da77bc867940f02bc97feeb38f7349e61c47cab02194718b32a03efceabbcfbbcf25689f19ec9e7f7bdf598a6d672857938c4d73d7ff650f1d534d5843cfc553c77d8acd87c469bf5d839fb2ee0372481ae6d21b62e736e51e63c02b72b514cb150f14bf520b13e36f8f28b3a769bc976908463eb6ae8666ae80ed87371bd48a851b787da778bc125f022862b86cec1dab50e18eb01eb02be2b73f8bd47befd7ea8a79775a9f666f71ae8ce5f51debd4659740da0ae61ef04393b9df935d07b5f51de4b227d8774a563a8760fb12e9f8c8e23adddfb2fbfe33c62bd77f694f402f8c21dfb57e10bedfec21f1c47cbc9f97fb17a86e59873d286000bfb8f6bd1417e14899b65d85187697e008c8102bb7a07359a0df5709d800cf0e46e8371637982b62f8cc11ee39a15e839f1ef833c7083e3a708df760cf75553ae448ae3ca44ef59729005c7cf61fb7d4f7dba4df73dec635ed413acd66f009fcf90c4cbd23586fb199fbfe23b8c51e842edcf48c43f7ed27a21262fcb09790b5daf7ecf50e310f690ec05dabf8976db7ab5fd8375447b70338637361f26237018e69cdcd0233202c77738bee2a441d5670c7abe476352fbfbb6bbbce66fee385990a53f005f13d609e9b171e8a9c6b12c938aef2d265316ebf39bce7b92f3f482be27f4d1c0ef4af1ebb45de2175935d58d27e793f8b6e89dd9548baad49651f8b78e918ce5bb161f3a8d5f6476249b8cd1f1ecaf66df73f37bedf486735b0abb60fd6ea4b179d5b937c5e193b912bdc041f24082e48d48ef3d6216f3f71ddb14c456b098f0a2b62edb67618d21c13914fba54531041063ccee7109d766021f36ae135bd1277e8debb18b78bcbbb27faa52b7e4c51ad93ca6c9ff203de89dfa96499df977322e63dc1c433acd083623f3cfd3ffd7c6c57dba87d89593304b7f068b4d2258fb3faa51d644236bb78b6b038f888df1dbf5e6a0aee97bd8890e2fd049753cb096936a9c91ba3b1963c019bb02fdbb41b6f6362fe9ab131cc32f7c5fa8af36d7cba9c4d609315f0f7c9c07a13f88c3c37f57e58afb5b2da60a8ff758a6ef977061d95a8aea527ee61c9d62ba9542c0be86d8f15e0bfd31fb42996656b571719f0b965bbbc7cf6c7530bc96bd233cf13b3513eb31cd54eeb2a96ef5dd58042994bad7384fa0de76d8417707be2f9fd7d7b3af7f8b5e217720cd0067b96321593ca1316bc102ea2e9c883e7a0cf5db06ea4362399cee038715caec00d729c4925a920f78753f36c608e330c64a0af878b81e36d497e7cf60caf5fd856b16c50c2ba8d057de40465dbb481f71282e33f60571d822e2dad48c07b6d494e8a631a93118ac101f1a35d89ccfe92789e7e1f3415ead0145e9689af6123f33f3efd06498399d65890efb3dc0091a95e7d75cabb736c76fd59d6338bf0b824d5c5baf273ab4684d0458c8357a25f16d3e91ab021d74d12f387765dec9e47374af84ba86ed9a40231cc69d3b873aed51c74e7d176256d0dd45f558cebec9ee28c8d709b87380c612bbda5e44b3d3edc0417b581e0bde37da16ab03afdfd1bfb2efc66994ffa8e4cff2fca2ad164551ab02c73c9672c7daea303fbb9b857bda46a3427e953da7cfa6dca966aca212ed3daff994f628ef12ea07c00346f2d29307da2aed2ded95f5b1dc818d1e7cf1957db156726f6e3be6afe52a7d771c5b4374897df5c56fb4a643d3bb507362dbef513bd8d2b17ead46cec2936473993a2bbba207b3df1ff3db4ceb05f64a5bac008776f3b0be569bc9b62f811f3bef772dc015eee796daff8b9b97b1949d058f25013e42d79262a895245f83b1730af3fed9d0117ddaa7c09b21beb3f7019b74c5b095a2bc7f803b0063603d0c9dc690f5efefcbe836591e4577de395400636cb7f68263a03b9740bd6d023d55d69e7515e0d516f18a2aff4e3f3574349ef411760cb031f26d988b013c1b29bdfcb99e81e9684573ce765806fd5cdc365063b4ce1759cd0cec0387f3ff88c7a6ec776c7427e5812b27d178b601bd7b3fdbcc54a9fbbe1848618ed6a67f9b2e47ddf7652ac843d841fe2fda4324bf7d2efaff42fa7d8b8f1ddbe43c53413c2970b51bd68fcd07e269a087ea23a4fb9e4215d306b6050cbe3e5deb047a959ea4211ab367a5b1286f4f68e705bb126aef64e8d2c9d0e7107b26a4cf2a7f7f2dd701ec81508b7a9174a7ea0070d5fe660e8d1cebd692c6b2d6dbaeae31929180162e50130e3067b55b940f083e12dac75d17e7148cbab361ff3c5beebaef02ffc2e7a2ff06312638dfbe6b0c7ff48c61831e08d867783fa27d80ee87d4f7fa8c9662cfc235c716686ef793319cdf662a1e93a15b5d5fb9a753d0791d8c25ad38a2781576aef03a741d673443e3fc8ddb2b687fba28f89535ecdf3c39d5e68eb9fc23599a5bcfc978c768e7bbb928457e6853ec2189b720b683a87cb62b74c3727f3621b69d9cd6de3175705ce4a11607cbed6b294e9ccfbdc6be3916978e6b7754f29072f019ff81ed575cffbd1e9f599a33d4c467b524a1ae77ffdfe0cb942dc9f74c69a904184b6f78a031e5e5b352ab5d3e78205ddb57369b49535e027e8ec65d028db6c4a9b13cebcad8a90e4863644e80213e1cfdc7e32f597efbb8bc468db1f3741ea0a351bf6c3b4632991bad790b7c94fad1382cfdd418ce9a6be6e08f0837a290a1fe343654c1f11cffc8bed5e675dbcc84be37b257cf6379a1e6e29f8cad35e7ba62376f5f772ae3b258ac466c1bbe6d1a3fc7c56cc35c025debb6f836ff16cd23f988e0effc57d1fc6bebcbe20fcf3406748ae43f394e03f7bcf3bd1dfe6d386ab485febd7300784a827563b408fe88ffd43921cfec88ade9efd181de935fe37b54ef6fcb1d2dd136f889a64b8857df99c3d1b37306cf4f725617fdd7dab3902cb2f9c8fb37160f238a1d28741a527b6ff58c8eca7a57539c6e0b76d92bb905142fb1310eb8c077a1f7f1ae2d37b8463faad4033d4d9ddf999d59b0167feb6e64b9d2cf6999ee5bf034f7ac445be78f05d305b16f45adebcddf3daff5bc99827e911cec40dfc4af53cd69d77bd7756776a9614017b916ad3854655b56a30e9286d9ff955bb9f1fcff496e457cee3e55fbb7a9dabf93bbeaeff09a7bec6a79ac3b2f8cad092352b8e6ed3c9bb6fb8dfb9e3f8ba59a51ec1e2fe2dacd45ff0178eec359bb1c853f8d322fe1e59be9a27fff3bbc90e210bfc0cf1f15db42658d6e0259ffb4996119f86f8f337e51ae6bbf8fbf23f3d176cbb2cbcbb4f3aabc5c7a87930169fc0e9a37c866783dadf6585290b785f560713f2fc88154e66cc957a234d18ac754a39797cfd06b7a49697f5e94b54bef505913d16681f5a2f4bc424fc1748bcf6b23c6027cfe017e87647ce19a737970522094d1cb67a046e7d57515d0685d6f3bfd23e7f63f2d8b4f1eedbcbff039241f8e636ca6ed344b65b65768f57f51b617cdc57c4a8fedb86b7f8b56ff17f480534fb04e9b698b5c4d7d55ffc0592cf033fe77e6c7fc716df3637ac39fccaf8e99cb8dbba83f43e26b2a7182243f675fad19c4b007a568efd4748e4a8cc9d3b8c5525cfd935c9d2a9fe0ed8a9e42c787f396682cfe6cd894c3c4c737219979d3e66fb57ccf3e4cb3e0142abd5c9c134072c05f88d5e472171a7d8361e674886fe120c0e27a29666b0ef8ee3bc1bc705d2da6eb36612a89f0b8b99c1d215ed5a2fd5e0e17ec0e16e6144d33c84917cbdfba74a179f48defef69de7ff3f8cad837d5e706f12b6b4beb9a08f610638a16f75b134d897811f6c33d0e689c2df2e780e632fec46b42f50fd19a010dc173f49e17ad0ba9cd01cf91bf1bda6335367ef2fb11e54d18a9b4ae38cc89d5686b9a57adb62aeea354dfadf62e5727bfe5cc4d5652efbdbe5fe073e67db3effeeac711727352eb630931e612ab93d61a8f518ec7fd3797ab54ce4f020cb8726e5e0b461d89b99de76dfca2780ef3e717f078a076f4daedeeedec9e049d591bff4b3fc7761a66f3c36787d471d32057e01866b11eeada3eca49bf8b17b047596cac263a3f056ea2e2482b5dcb2325bd045270f2ddf84178ef719af594c033b350ef755ec0e486b842f4378d756cbe6b9ae3e0df8bb81b21add3187ceeb9ac05d32f7dafc7f10831cac046f460b225953945cf429d32bf33ffc9eecc0ee4f77dc595bc95867a8e49a0b33cdc55a89cd370bbd92fb711f14ff64f861aa751a60dfccccc4d0e67d677ed1d8befd77bbf03f7c7c194baef667edbcc54fc311527f757dad6df1b5c0e76439fbbbff7ae60ccefbe2ba7af8c59dc773789f6e635cea3527d47611b9ddd7eaa0e42fc6fffee2d6e1bb3935ea1163b6acbc1b5a69ecde373119d0cedb4fff4a09d1cb5c3c6f3ed36d22ecc4996f83509c00ef86c4dd87cd22e198bd4381676feb45da09969a0383f8ab5fd81da41e3fb5a8fd87e16b28cf01dbc17683cbe926894f62af35e046e9c7e6af675ad3897891abf2f777fd657fd3d5c5bf9f97bb571befb9e99879d3abd609ee6903d2aeb9d6e1e433b74ded036a2659813f71dfa5baee46096eb3c337c2f5ce76777825acc597084daab78ec0df66d900fd3281be1fae4100b1a71b1b25d443b0f3c0f1e330eafff54e5de61fc47187709b6fbc03393568c7bd13dc0e6b2bba0f72186d6339356ccfde698d17de0d9f3ea7d08324896421dfe708f7d0236e98bccf93b39b6753ac89c7de025e5b3aacb49ac5b07c7ed3ed66e0cb1aeadb4d7c1e79ad09d13eead63a07453be46b0b02fefcfdffbc3715e2be70378cfb263eed66e3709551e8f0dce34ec47e090338d78d802ce4197fd8b791119531c4fd501c4e7557843bd1df76d8ff857a57614c513c4359916b70ddd7fc8f180f937c8fa30a78d08634874767e213a75910eb5ebe5819e5e7cf78ef95743bc3a691ff0ae092626e64fdf6fff997d00ce239b7721975c046de2756dc84925b5c54277e50c56a9d4c647ca7480e54a1edf91ccf57b3831b8aed619e8c1c375e0a0dd05577f14ddcdb39698cbe771da4eee7b33c8b967f997625d5bac8b8a7289b1be2692ed80e796fcd39e9944e0bb04fe35abe297780a8caf4297a51a7b274387bae6d0f634bba761164b6b5a3b4abffd8fa19e7eaf9b70460abc44563717c6249f8fde02f185ee57137de0b130ac3e8241d16c33c61fa8a19b231d06d7c8b58fa1ebb4da44b1cedbef517bd644476b0275002fe83ef195d571baa7b673ff4062629a6dd0dc5eb84a1a4f4107b2529cc30171a72fc50ce0f937dbd21b6ac4737e5ea811770db6fc589c4baca7a7b6bb94f9d6b83c9f665f2b59c3624fe5706f1f43c8e93e9be8fe0db354fa6cb47b923e1b6dafe531d17ac7cfc603795363139d47f0a783fdb2ddc6bfc3fe7489c6441cea7312d66879cd2f51a309bc0fff099a301ae58c425747e378354700f3308bf0f284e94905b60892eb980c27bcffd6423bd1ed151e06ff6fb0055d601c228c48d7dc465b519f4447abe6fb7b66b2cc3452d789c9f49758ef39d17890463be04387493dae220b3bc666a2ef009360aa0e4e54ce8cf2ee2970bbfb58dfd03aa5a7f7bcff7ba234c48ce8d027e3b5402759cb38ea9872487fa9bc0fdfbdf83ed55fc91a101e18665a1e65bdce746f5f1d6f700b3c73e87b16c9fdec8a6c2148aea17686b63cac8257b15cf996bb00bf437d31efcf7800e519485f6bf4d754da7cfe2cfe90baa578bd97124f334f6b8b72fd16762cca6b9ef049765e9f3dc3f188765e42ee57a2d7be3e7742abffc7ccbdfb949e38dabe10bdfdbf7efe2fb751a991e72a309f13e12927c61b64e9b2467281977c04dbe22e98b4e76cc1a7c8a962bce51bba71a38d9ae66e227df131577a973873f258c3f147686da7c467d22077efd61ee599232aef014e3fbccbeee9b7cde431dabc6ffbe76a1c0dce6123b834b5d8c267f87b9ccc59c8c3cc7ff647f9464fda34d4131bef94cc3ba4719f8bfe5f866e1f2301363bdb0fa1ac10a771610b6bf227beaee38c8344acfb80be52f8d7b36a3e2c9317fe633acdabb225920b0d51bd07812e518b1110f061cc776bba09ae2981fa02ec23b46efdb7920cf082cc2f389be8de3f576b9034f20fcc1705f2edad47c69499db81e2bb3776b65ed6012b722b2717bdc63f1a6a029b79f452cd5f1bcb86200335f972bf21dfa2357845eeade1c56099b2c613fe39f9f355dd19ef67afb5660a895babe7ae36ca8b027df929ed50bdecdbb423d201fe9b68fbd5f1d563ff0bac3cf3795cfe3ef0ecc25ff27f69fbff00da0679ed554c12e65ba9d86ed0fd0163023c25b8c76e259d90dac55ec1d8e0da1760bf54e40bb54aaf95fb498d5ea8af4d641187c6a0ff6d7beb51684bf82f9651023dcd0d212f12cb0635f956207ffcbf2af734c6c1febdb3f56bdc98c3f1b7ce8540ce7ae9ac3cc93da8e5d64c590de8fa3a4c8af8b0a3a11e304da8ed3a26376752175b50bf84cce76f9de34aecf9f3330d6b0cba26f63702fedbb2c9c644f0510fbe677dc44a771e65bd1bcb695363ec1791900ce910bf57d4544feb2b54e45becd9a90d6b837d44e53ad44dfea1ca9cf5f48171322d89c343178ca55fc4e6807fc6c2df0f9fe7d9810eec9adb28c5bed509d76723cea7ae3d969df8b21a9bd788c5eef6f7a46f900dc89aef9bf065a1a6fbd891cab662a84b7ea2f158edd89cec2e3b4632b52517f17182b16cb8d8281c6b80bf7f2ed393f5c6f68c7f6c9d482c47fc5f434ffcfcb8bc03fc3bf9fe855a39e0c3476305bada26dcfedc589c5a4b5c60c93f1c49483e31c91af16d3d8f092cc5cde0fa7e6cfe5395f5d35207bd1c9b02f67e47b0ffcfe3224bb13fd866fe77d7a5851ebf331e9079cc8f28b38f6106b5acff748d5a6204700d06e85373d09db70f3367f7428ce535f406724c6c753436a8413e035971a5a7a9af38a03bb8d558267c9ec007f4d273f87cced7aef31560f92cf41ae2973f7567f7429bdf9021ab32218e0bf8cffb931c3adf4b34761e6b35c9610f47cec357b41bf1e7f1369563b36fc9fc465b3896aed5cf240f8e816ba551debdc59e75988c31eddb9ef5e57b837422f041e1d861919e55deb3e97e2047cae610e1d8242d52ac24d257bc4c77c1766b61ccd979ed2569a0bd3e3eec6f14e353846efa2370ed6fed03e629d5f684f53b6b3c1de7c63b1d4333d340727e44ea66ef6d377b433dd5c6b2ce7ac770bbd9ff5223b00b9b398e975ad7e21bca772dcf3b5bfb83e7d83afe152ae965a2c66f668e31fa27384eeb68d6eebce67bff83d44d40ffb7bde43651e3cf891a6d267999674cb3e3750d7165b73de46aaad111c7d7ee6af59ddaefceeafc4479806c0c553e235e6301df40e32ad362530d8bb78dbdeb2d962b6de58cd277fb49acf14cbd6ddc3cde0779743286668c73f1cb189bcfb177016f26a07a8789f1218bf12d6ab179d538e31bc4074bf118628c5312635c8a477d9edfc5b07c6456ff27c5750ccf2fc46469bb402be6515d2712ef8a7317c6762ac0656c9c177b97c6b7527d5da3f3646d0af714ed5b312fb316a31d2864ff08f6938bebca56e2299be766a2f795780ff4df299eabc675b78dc196e2b18dc7c0f2a1bf3d0ed406a18122a79c1f0be36fd7693e182c47e9602539cb0a6d419ddeb97b3fa23bb43c1fd42e9a67655e6ef7188fb4d3dad51e93faf8d19cd0dc8e558cd095669a4bd9341d2dadc4ad0386c63ccad26b94a5d2e76283b108305d424c7f25c614c6bc1a9bc7b0631ee3f1ee509f3fc5052badc17cee98cbc5aa3baeac41359e7dccc5ce2e5f8ab755a2228e5d7b2db6d796b877869a143e0c16e7cbd7e913bd1b287ffe2ea33dfabc675f2d95ce77233d89f567b44f9ebfc7fa5b11373a7cb24e1ccd72ef2bc5fbfe937516f65f7bbf7e0eb16e48db29f167edc4f304feefe27cd171bf980380b1345e89692677268cf14c9ee93e62d77cc46303ee9bd9368db10db06786fb398dff6fb401d4f342e05cd4e2b2310df5810e5be2b381477239068c2fd7ef39e887f0ef6eccc5ff5d229283112bbdd1da8d8f34a6a03697b154e31bcb55cfb257ddd54a6ef62bae1447e2ef32da6eb36e16a7b166a531c75f17ba738a7427a7f603812c8bef6f513e27c9c9687c07eefc9338c753804322eaa3c9dfe3e1dac79740ef75fef0bdee2bb29268cd178ef5f15fbdee0cdfaf7ded992cd4b2fe33d1fbc3b24df705fbc23ef06c7325e13b3392d28b4b63491ae53558abc7c2ed6299b18635029850afd8366a7d57f7af4576ed94c75bc34f0c0a6cd5d1c918be529f27a67450ccadc16f0a67434a2f41f6d6e60bfa05cf35e5d73f5d473cc785dbcdc2bcbb0b3b88d7c13b669805d769665f3f5fc8b70d282fea5866989665fdffedb9c5a5bdbdf17d617e519bf30b58072d6758706f304cd2a93ac06baac33a36af45c75af99eb90faaf95ed8ff4beed83ecb117f5a3703e6dccb4a745b1e0ba6816a9c562bce385e6f47d772a8e980ee67b6e7255e087dc4f96d83f8acd88603f3827532863faa6bd0e6eb22ef48edeb56910f446b14519a95b453a8967c0d27e3f53dfd2e9efa23f06ce04573e8afa0a73fa51ff4dc5209b0bec4ea9bd8c9e78aecff0eea3c61fe97279cfe57c86cc53d0c7bd6c1fd8aeba317f92ea4968ee3ace612c611a98f05fb1089cd60e77be94700b462c29d3ccdb8716eebb6b992bf12e72d5d80d738f6d0de3ba7506335df85f61f8a5b417224d05de03823cba2f8210d761c8c1f52ed8fd6eeff033c9aefda5c4c79b4279887fb95fb06322b87bd5d9317e7abbb39772c6d55d503ca7a6b817d88e47b7954cea756dfae8636582c56bdc5c2b10391ce5cd23f3b9aec7ba614607db523686bb04a2d73b98bdb73b661ae5497195574a1b20e439e2dd777613c47cba34cabd77a21dfbb92fcb14c6d0372f5d4440aa5f41233deca30d9fe3286b306bb14e8d3d65292b5656a2f5be48d65e0d9365d6b7a3fb4c81935fe2ef0ffffdb1821dd7573f115e718aa9b831817116ac23f4435c298bf93e1b3b17b05f09fa1a670deffdd8c2ff9cfd8134d698e73fd257bc46c796a3c0ab1fe89f1a0ffd496a3c099c53a9efac41ed36a5b61ed74ff98aef13c797bc5133b015e0f4ec7cf8bf79fbe0bb9cf157df625df1d5a1767d41b2d1f50cff81c7682d4d06edbb0922feba9c626c8b453a89b89af9c366b1730a47ec4688cee91d470b9a7bec7d513abdcb945cc85202e64f8b6e1ea7ce1bb628769b09abb8bebf115bec6da58ebe7e767c93789ef297c0f8c2af9c6ab7b1a66691aeee76df6e99a6dc156817e47b60a79e2a3b9636bad79e294e6db31156afb45f39eed91b6b21dc87baef03296bb5da23df73188797da946d723f963b972de1dcdaad610a33c6dc4ef09f8355ced77b022b2b1bad9e33b322ae13eff399fb047b0a6686d47e4efa115c3d91ed91cbfa0328551bfcf46da6cb1d296b66389ecaf83504f9328c7b998546ec1b62fe8ef6ff18f42ae89986e586a6ba42d56527d1d6ab6cb518d2f3c9ed82b479577aacfd769973c0ff31ecdbf855d50bf6f296e063b67b0aeadf63c810d6c317266ab91b358fda16dcce6fa6ebe83710e0f474342fcd9a5ab496bb59b871de71208fd77f039bc12b3c8d5ae103fd721b48ceff21fd6979d5a823161fcd8d1cb3205e2afe5fd60313d49a0b33dd94c17a5f58033c6fb43fed6ddaf48f8ee57e473c98fc7617ffee919a63871d88723fd3dd95621187488970d47d21fcb0078beafcb00645d5e9301cab2b19bc7673c77f96ccad2c918d17a782fc9b0589724676749d652c4e3970c8f0feeae241c5b697dcf828fd54e1e389a5d5fa311c9d52df8d5038ddbcde34754f231733515fed8b7473118e1ae7808da99af76e9c76a97aedcaa3f15e94eda205fbbbd7cedd9dd0987df3a55fb77ebcf7d6d8fea1e3fe1e7785d38dfd56ccbdeafbe5be3ed11be271f510e7209c5847dc9e7806bbc52db175d4ba4fbcbc95a71c6582e981f4c99e129827ee6432e686d7df4a56c5a73c75e09d6a8e62f5ee51cbedacb7efeeebf8a3a503ca623e0255e713db9ddf7e30e646bf9677107cfc7d3289389ce0aea5b3bed57743c32cf3f79ccd18a4fbda51dbccef69fc57564e53a1750af61dbbfd7e2295e585f3a27cbf9b3d80ec1fafe258ced78712c785d827f785d78ac60e9f53d62e389fff1f1fcf1fa90fd7ad7fee9fdfa7b63c2eb94fe07d6a9be777f6083ab9e5338bbd1df8c1da9ac25be9fb67f7c3f2dabfa46b37dae6acbb35ade7d22fbd0bde3efb9aa0e53d64b49ecc08d975bf875607b0d3577d5843cdfef196a8ce9f771a238859750772e4107e9b5b79e31dcfd0ff5f903a63aac89309eabbc76053e612dbef955bcdc60253feafa56bd6f823f662d56f7d9c2b1b4b9d47bb735de1eb039988ffec5ccfbbf0da6ffb033d6e4f3821c32b2269b8f451fddc3ff538b4b835ca67ef73da77bd0ff4d9eaddb2bea78946cdf488c841535e8170dfb8ae678f6dd736a93df276a6c55709dff3139e4b38cf3fa3354ba29ce657872c7aaf14fd1bb1827a87ede5fd16bddac770930cee82bb5bb8bda4f6aec38a3d91ee97cafe6ade3be9af0185afb1a860ab1a979761aa80324932b81673e7cf7b6c1f5c4a2cd7b738e31e822d1d8bcc63af8872d5263fe82bfeb01161cbf7ee4d90ba235a4b3a07f0bfa1ee461c7bee2580be712e8d81601b640b7bbf33d635760720c6e51d69342a69b839feb84f6adde9e7d0c321f8d6fb77683acfebb730946bd0ce2efddee6ea9f8ff531d2fc5f4836728b673ad9d200f1538d75994f5cee2dfe577c09321cf2c331eb39a3cb7b7afd806f3561b47acf7e8fb522875b9dc71b61efbc09be37a4d80311e8f799f2b6d87c7dd2618a6ecfff571a78fb91b4801c64f39469296c5ba930b9fcb9c2cec98185fcdb3d4c045676d55ef1ffde6d99dc0752eec59f27f51bb2b85627691bfeb74708c642b095de723dae1f1917697be2ba7cb8e3908f6765af8d145efb11aef453fab5e4ee7241a17c178c7eb426ac59943a336df50d72e01e06ddd93308b04bf637b3ae8f11413bcd65f29ee02f5598a9baa3f2f279f90e38eff1f8fd35bb092132ebf90aec1790d7708f97f07f004adb5fba336cea882bd0b75e12adfd5e9d94a6315d725026c47d94ae3fa1858de7da9d65c7dbf1eb16b4a51a67d9136657f6fe7be6bd5e976cfea5e90f382fd8ba2e7680d0762fbfcf0b363ea77eae786d6eb20cfc1dfa2f6168ef5b1221886d49ecae1fe8bcee323d21d3c2724037406a5fe31f610c3795c7ebaf236546e1b63292199470e333b0dd0dabaf33de0c368563774cd6ba87621cfc8584a9b10eae4d7e413bcaef299b609bc6ea2c69750b1d3f57e76893dfb18aadd63b8b76e688da69925471dfb1a2ea223f8689fe813e57ba8bf5fbabd73e076a50f9c4741e4798a0b87fda3e6e3c7be1a435a9283ca342185d271b9947e907d86bf457b47d71f3f27137aacf35039cc52c80789ddee51705e181e844130790017b24eab5f51e6242033eed899ad7e57bf6b4a188525bca5a66721670aeea60a8e8de0aea3f8e7682c255c10e1b30eb1b517cf824dba4ef3a5e79681678b9fcbd2c7527792482b3d6f46d23df5bd4143db45ec0d9d6325a65674bff0f923fcb8588ca15b8aab627bc6622f800f51be47633af633be2d163b20e0bdccf756c8c610e352df435deb46527a21bfd3f647be973e166e17fb3eeb34c8e2ab187d439c55697c304fd11e90b8d382e773b5efa29cd09d66a5f1285d2ef1b3f5f3548e29a3fd966347ebebcb623505fbe3097e6bdedb7adff5d855d17daf34c6980adba93c23da3f899d555833ec536cdb6f7edf60fff3fafb4e29a6b2bc7eb40d465b446620beb427fb0ef5c4ab6702fb8c53f15e57fd8322df5dbd3fa8dfc4d3d821ec387979aef04c5d1ee2fc1ad5efcaef13ff4f5d1ee475d0ca77b8ae309dc38ad8900467b86463aa8ca55487a87ccec5b60d766e3cfb8bd65f2ebd47beabf33f47f273907552241f05b85edbd571ec61938c0863e5da74f41ec604aff3116ccb708ed730c3755e03cf26f50aed5548725302da6ffdfd83ef598350c7b69385de93a31dadbf0658db4924211939be04ae6da0fd6f9c67963e6ccd5a11b91dd1237aef106b561283dc0835ea44fc00cf0dcb4e0f7c166ea2e71cae162391d91dc9971ae7867fcf71bb8e677f097500c71e92313bb13eabf5fb59d802e8995b33db449d3f71b6074ae7686f1cc04210e8b649ace3dcf540776e51e67c096adbe2daa1de6ce3bbd657e0590f2413aebd59e99d40fdb1713c2b25b8f348277cc4ba9304ea8f4a1eab38cea494e353d12f488d32d0c1036f9007ae25a8c51cb3e75e1b27b963415eb653df9d378d13dfa1ecb75d7d8fd05db17f3a3e5c932d1f24be62a551c7ba46dbc131caf9779cdd743b7000bb13624a06486e960257db99793947839e7bb8a7d296b165d4be61a7d1d84c7da55e4fd754e46be83a17243f4ff7f82cd7d7edb689e9bab16739fa578bb14eb783433cb66fefdbb76b48e475a40bf84aef3c556279ed223efcf635edc44994758f61163fa61de8f7da384f340fa7799ee8ccaf647bb9d653a4bfef9ed174ed793d7d94d6c89d5f0ccd4a83c51fcc45b11fb12a3f68dbd31ce335846e2f0f16836348f515b0074795bcbbf481ee45c413d7637be97b016a73b576e574a524c7606fa7418916853666a227380ed2455e884da5cf135ec862469fd9916bb5d182557a81bd6aab8dc69ec5f7cd34d36e917eef4e74a8650731be41c781b58ef21dcdb103be377921870bed21b145cfc38e25d1f89409b521d46dfc45be00d1bb85f3c5fe08c297e677446354769aee393b49c98781bf3787a30b678b045d0ebd1766b640ce9cdfd15d1c6631d8086cce7e08f64a88c377880dbb2623ec667c9d21265fa6508360edda42bb031a1f8baf84bb90c64bd6ee42d43e3a57f8eec73551f2c0c177fd4aef3d626a23afdd89f3fb743fb8461d9bd60420f29543e219e0b7b679e5817b47e746091c5643b7fa9d70bcbe6749f61ee82f257627344e19d17f5dfe43e3647627c1dd8ef68761b594b0a545eb1a70184ebc8d8ec7766a7c4fb2aee13e48a3bdcde4e7d2fb95df9bdbe1319518763f8f99215a37218e470d8bac717daa7857acdff2f743f179c1791dc9839ff3927c27a45ff2db4a49aed17eceef0dbec3c7d672adf772f17e627940b44fb44f8245245a27227b58dc3c697b550cada6f1da8277ad43d831a596fd617a3c1dab58ef43f30b8ed1de2ae95c255acad23cea10992c15eaaaa8bf6ced998f928e89edd2c4b65cea83e9914de32e7457f2be43f5cb54b8bf2c7fc9b32c6273a6fbcbeaee47927c0c45fc745fb42da08fe27db2e64ffa9f33de27187b4127ddf671145835c57ab4d00bd73fa663ad38934dbf3d5fc76e4177e3626c4b37bd1474279847963e5623895f433392079698ce9d7ceddac7c02d3d6f059e790cf4340d1bb158e23456e7f7a2eec76d83eb0a6c4e861e1c03f7be9baaa0734a8167d4e40d1cd746f301a83d94febf2117ddb3bfc06fd83153744f22fd6ca2ee2e807b8fee02c06761e3a862151475b7c9b972153c4e6f91c8b13e3b19450d93e758767afa8847841748e939d26f07ea3f9c22793bb3d34ff5b609b2340df5067c4ba4d3ee9db39f3939573fa5010b2cbd043ae1f1553f25f7e1fd997cfda7673854223f28e47810bc5e614e2cccb19fbc9a138bf40573386a5ba713d315d51a7e551d3b0b68485857e81a63f925acd6e42071284734cf19c5e21d8ef2f77c709ce4a786b5efc9b176263e1101dd2f5e1dbf50bebff23526abb1dd1335e5e226fa076b51fe7f90c9d254edcb45bed9dbd550932cf4e6c7523b241f44f0ddc918367caf076734bf6a9ff1d8940398b32cb17ecb75a78e51c7e6f83e3e1ff4dcad945e0eba175f7f8ad037fa6eed3aa77add0d8c750d32bcdbcb0ade6ea1fb390dd47eef63296d4cc5bc86ca3df5dd1ff5bc08ae9db567bdc7aebc0d3ce350d4f56bab63f7daf9236b4168a35fae25326cc0831760263f3b8f3c5db5d51409cafa4969fd45e327bc13e218aab23ed727bd2796e83e0eb09f1cc7fab4d6bef806bf237b45784c8fada9680df1b3bcdec2fb4d1bf2d2451884dcbeb1bf076fbf543e4ea65f3ba746a17fd21c3f6a0f64f51ac53820d661ed06c2bda9e4e2e1bcf4ccbec679ffa731ecbf8e65d9c1b66857966ab9dd644f305daba31ea957ffc4cf8be635dfcd164971768bbbe0379d13c6758b3859a04febed3dab4f5ac2cf447cd918de36d603f1ead3ef86337d8d3d3b5ce35c3ce1f80cf5b489c046333f1aea6a63e5259e8deb012c1b6ae654e5870e6fe36eacbd877820d16d66823bafd9cef1aa6c01b641f44c1ebd6003e2c743e45035a9f1df36bcdbb5674954df5ab8f22d14bc8ff6b9a2ebed5f88bb84b619168e377be9ae7836d6a23dcb0cbdc16952bb338a9aaea575ed14b27653de554d16d46a3acc7fcd1cfe7c1f4097fbaf9907d27b1af783fa2d95fbd5cfb413b5fd4dd4380db7d1a9cad3c04ef2386c5cc11dd85caf03e3f2bf6ffb7b88475f48e41389f002b08cea76a5b57bfb59aaa52aba0b081f233eac9fc670d4d826aeeb74d898927609b3b78dadf7ce6bb77bacdae7b97669bdbb9f861a0f6cb579bc8083fb056d8f84ed8d8538cacd75a9703d859f861a41fcfe7439caa7cbd9bd65acb856c3f0b099aed20bbac3d79edd15dd6d98c7511fdf418c9545e7efcab06f2c8e71641da22c7dc42d6b41318be1bddd4c88f98ac7003e40b4b6ea3c17b537e855fc5771e5ffadb9f6efdbfed5d3eebbcfc7e834db4b87584fdea28efd1666f65b94cd8fd3ca5a325bf1f050c921eecaa16b0a705109ad823e05f6ef0b918d314eac080fbbb87721675594b3cb3dc7e2e14322ffa13b78b6ecdf580ed602cbefb3d676f0e723efef637db36fda37eef313e6b3947ac6506bca192e3ec337a8536db6d62fc59ff7ed606b0ca5dec7a29fbf308e7f1b6a7c09d4f885311c36fe96acc50be3406b1165f3d7d6428d915edaaaa317fb730239271a3b5255df60b42bc8c15929e92e580cd2200b52bf33dfac919cd031a5887b8ee23316b1b3aff83fbb27dfedeec5be40e7112c06671aa3ce626e0bfff1a5c97759bd2f04be6e529f05f7cfe13bbd3c66fc4eb33f99fa2eab71c04ffcf444b76035b04a7b81cfb29cc47a32f0b1ffdbf23dfb30cdb46df468c457de4679dd3788db62718e34df60476393cbf73ec5fd2ec7d8605b321b0fcdd3ff558db769c4f566f6e87a1bf8b726fc712a2337f58f6555018eff0ee363b5cf23c0185be74aee4bd5f683dbdab3df71fe8c671fe6aef9c03857a34bd147b5ae14febd1c27251a43578e75a7b686e4772e46abf62ef9ada95fced7e36ad27a84e824a1eb43d657fc2e177f519b2ff9ed58a7a1726ecb73dd46db055a112f0e36c6b193fb1edc7b3c961c8eef058cb5149d4378bf0193e21aeb491a6d399cb515e2911a7ea7d6661d3b8d1b83e83cfc86bc15cf4cd9fdccfaac9f8b2a3dc59e496214d8d9686d0f9ea9d64c2f8f8f9e9327e32a7c7c0d7b561a9bbf77b67e766f8c0d407746d4716e11d247c7b34da8744f9f8b7e3efdea9fa38edd0df515e4124d86238a1fb0093b06fe4ee7f6436887d47601d86a6b7bd5a87b43ae5cc7d9c66333f13b6047a0d88d05ce32c485af4e069f8b59b263bc5d8db12547e301d26d1e86debb84e3dd66b6fd719b7a96f489ee262ebfa13ab7a8e89fa7e3a3309ea23cd6ea185be23cea6706f3c41bc3b7851a6c63279daafdf3ec050c52df351f73c0464ba8fcd8e0f7a07268ffcd1836d4552be889dc5bc129547a3927c356ce2cab7fdd2adf101c99afc04d4fcd6d3dc590dcc6aeb9c5763d21efa8de07fcbd59fd4da42f80becbd5e023675c58eba6b8df6a779eb016a2f01e17e93605af12d7d881f85c4f387e729f88f447c09e14e22a53de62efcd6bb8023b508da7227e81682856569bb5ae29c1629040ed18a43b6f07b7b0631d21de643148c26cbe0933678fce4f9cad683e073acb74ff006b33dc0eb0efbc3ca6eb341f7cad75e76bfd386cd6635b8ac6b39fd3bcb75f7bf621760d12674665bd1e953faf6bcf7a403f0fe36e7d0575fa17e9918b664ca37a4cf28f9e31ec430d43c2fba1763be40715f440ebb9bffd6aaebd58a7d3a1b499e1ba8b84066facaf420e80ef843512cbdf89f5ccda7cd4530f644fc94ad7eeed40fb71200f2b7d4cd89c769b498ec785f3a8378aa5af64a11f94ca8b5c8d138e3eb9b8550e5340ad9ef982e61c3d490d3db886fafd1a2be925c8075fa162a7866eca7e669e026fb689bd3e4f638fc05da1f39b1a633b8d3ae81e08ae515aa3b1f453d7ce917e4fa31c68b8b3d635099d65df9b6f42d749c2fdecd2200fd662d5eb6b8bf5ecd9b026df96de43bcdbceeed7b063d4e94d7dc36dd4ea9d56e5561c934569c95cf41541bf4c4eadf6cbb5733586fead418e2dbdcfc9c4297aa7eeab4eaeb1678ae648df6beb8b9399493b683dbfe67559af90c1127f6fe9a1debb46db84be7f35868624a88f0a3c2654ba4ae099126006233ad2dfd8592bcf85fa0420df7844ef087e5e384ec5be523bfd04b759c3cc656719ce5ebdddbafe923e0c557aed9c72ed88ea7da1f3345b1adc18a47f19c3118eab2ed30a89cbee937ea90cc078dcd5188ef2e6b9ad7ae0dbafd104a6db42a7a477cd33dda712df56d2edf0bd869e237a4d6ddeafe0149730001af652841f6a0dfb377ab71a7a92a0fb6eb69c2bb3e1ae43e96a32b69335e65dc7706f5f0d5dfbf2959e1ceee79b50779288acb73136e510e9914e9556fbd26cd8a7f323f76fff3edb72fc146c6df31fb3e1403c773521b474d858c30de2299b69debf5be8ec2e9fe322b4dd0d95bb069d2d69adaf50df807d102c80bf42ff8edea3beb0a671b2394db66c7c47c40b61dccf6bb926519ec861964af5b1e11804c36375205cc8d157374d35470bf935d3dedbe34a189e62ab8c25fead7e9f34d969eafa1f60e2e07382fd38a7b5774c017b673c3bc4f8dfbaae8f6389c83ad1180ebca7660e752acbbf7198d7100f51f4dbfb58f4f79fa49e95388e079f83b2ec8b68f124b837df36ef435f0a96ab27f24321d7337ac9ab34363b086d54e41e8e9554f295cd6642e622a601fcf115ed112ca88f75b37f17c45a88e846ccbbf8b5b192485995d6f7bb6d839cf0688ccff8f23d2ba5b936e6e3d86a0b2ff4d432af7fa566755b3c0ce80fba7609f47b0a3a4cc926337804de2089324d0adc7bd7d0c1be2b838d56f1374176bf822e9e459b48ef1d816f823e3948a3bd79453c71a2a78fa8e3a4863abbbf0ffd8e08079cdd3b4c5f23fc3927baeedebcc66e77c7789b6c5f6d7827a9d29ab83ee7d8eaac017fb8cfce5d4b8c0ddd178831797d5ff098a779bfd3747eacafbef4de209f97680ee3b2fe6cf56170f6a53f3bb3e5f3b3d67b72b4fd6e9f0724fba17daae94dd3bcffb0b257e6ca704dbfdff7722ecdd4feef3adda2b311a456736c14dd63864ff6ead926b48a752d246334ac3bd331c4b40398a7bc1d07f252bc200dc13e86bed324c0d4180fae6bb72b611bf5661380df1a649a34ca9c67f3ab62bbbdbac6151b13398f5b82fdbbd889f6bc91c602ddc97ccf39c5c3f6b314eb491e76225c9b74e4e411c6e770c2ec7c093bf105df6df30de087d1bb4178de6571dc52d526a9d91ff6e8ed27f197117c0e8c8917e5d1f14316d850890d70a9f8bb99206f8cd4e9677599086ecea1299692f18f513759566bdf34c45b89ec254d7289a18ad6a7c267d9bef67f0bf6b0e61bc23ab481eb337cadbab36ca534f4735db85d6952f73d613d05d7b6b85bcb99122ccb76a1976a84bbe774eecd0e3ec6d66db1ed7e07b785a3039d602456e3e0c463038c301f62846ab64e365653911f665e89d1d6b5c7aae24f5b2bce20ca377b4487155f67027923d8d658695bda57e32a7dcf32783f176d77ad8ada65f220d7e65cd426879f51b4198bc75af237d267970bc1b33295b5cc4781f30ce7d116ad99cbfbd2e8783bbb7d73bd5c8c9b660e476df87134bf7454f86db09cf15a6db7f96eb66dd47398ec6ee85d88a70df5f467e0105ed6c0d3043583997e640cdff0d997cfb4eddfe03b91a5c364d1ff59e62bed67c9561c09d787c175d3ffd9f3c4f3c2febf791e14eb5a88eb6a4b9bf7ede0dd5ffda8fa32847a30f1e90bfdd1040b1ac9ed183bbdf44c8df62a3643822f0ef9339b7dcb7b15db5bf9bdc2a6567bef503993dc58b15dad4eefe5b3c9f60ad79b103c5f3b77fc7ab038d9cab838fb52e59d0eb6a594f1ca4b3484f16e04f1129c8fadb05991fdc7f2d406db111a6219619fc75807803ce652ed837b353e220f3ceb102a77627f15ea038ff76d5fb2d41be83ffe6290055ec4f977065298173421d251e1fd057ebff21ea50981be2dfd348673798ae5bf8276c6f695d85305ef6c7e1a432327ef10ba817ed0be0b9e9fa3e715f23c9695a17dbce7531c3f2a5893e8a74173dac15f8b6bebf1ef0ad6c17adff6ef33b20e4c3e40ef60db5bfddee4e52f3d49c3f1208db6253aa2f803240628b810bcc95381e7d0cdc26d97e14a4e55e2db62ef147e70fc7e2287ae76597bc7b4c9671c75ec633c76249c97ed0c02e5ed40f3eba72a8bff3b19e3f818c35ed9cbd80db235e4f7a50f9aafdd56d7a83807acee4f351fbc88071cdfdfa086a73a4a622595d6907365c941161c3fd5db861bdb3192486ef80b3ee928734ed8ffe7004e03ba0b23bdf75866cedee6634444f31cdb8728731e6bbd770ac6b353318f863a80457b1c1e5ce95ebd851deb3d7063eebbddc577cdc74415e6b195f87494f5e4302bc5045c708d85d97eb210be5fe2d78def831c257cbfe0db636a93e0690d6495839937d629ec3e7977d7f42e6f776f1cb7d438ee0e93d79afbee34f5cdc52cd17a337c4c0bd43af95c4447614e8f3e6a89854db8fdbcf52af475893a33f0b3ba39ae4fc1f8ac2c1dd1f968d237279ccfed431d48ebb199464a720d75fb31dd176d421d0af6ac153ff70d53dab9f58ce188b673369f8d47e7e4f5ea783289b5132e006b9c3cfb743c9416df3e16fd3bc6c23cedd76afcf27bd5f55e633f77682ac901ad37d884f64fc7c1f9c5d99aec9eaf0991676aeb31676d00163d3c67c58278449cff58baefbb9da7795b6df4a88f36bfc64db1ddfd03c31d1c4a9bd982ac5527da7b8bdd6befd56831a273edc439ab73fcf01a6bb8e20f8eb76d1a6be1a7298d53925ac6c9bd531de38ed1a7b5c4f4496cb08dfb7b60fca2b44e3bd23fd4d5e97e424d362c537af5bd4ddc8789ebed57efbe8a4dcd774e0f5c3ff32cb84bfaffaac53be85a68697c6effaa490fc4f5fff55442323c6084afb47d987793683c387d2e12c8f146b287582f04f96bb586f8ec520cde29d47b9d281f74c3ce0a7cdb808f37b60f01e5af3af8246b32517177a3f7d27350605f3f84fe528afb57b9f357707f80ddfe10b1bf63bde84fec9f133f8bfd507c6efd339f1db9bf5a69bc82035cac8bc4ad25f17171736eca7126f75671ff21d9c92ede6baf5d3d36e5e0c55cc820d34e3cee4a35b6d3015b5ad92f0a31349dd9e6d3edc95876068cb2a4c49fd57f96061c8e6f4e4afddc36a19e9ed7829ad7644fb83bc30a79feeb2dbe4f0bd5f56aa405fd7e0cdd54c27b5eca677e6e7fe0f899dbe1c6af49adfd96ee16f9ccb713e31c655827517d74eed9398e0120f1acc23ca3f21df620383378beaab499bd487b653a6db4f51c62574ec22cfd192c9224ca626fedd98755c7c9822cfd01f53db278c5af59bd9e229ae32621766186073f69ca5dafd9826a75f52b186035ac1231d605d651a87e52e4dc0b73cb31467179ad45f22ad56944bff5e4783c90e37a0c57058b41cb03b932364c035782b7dec4a76a6b0ff14c9eb977d03dd87007927badde278f41d04c3faf8e7d1b2abd53e06a97463ae6c7089801b5b6bec3f3456b01fc3e2418f6cde709e64eb1ed2fbe673dd66e7c998ccfbd6955be11d1bbc8a784cf75ed59a44f1498f320eb089eb160ecad7229de0b69add2f38fd6aea20fe55017bb01bfa1154380c761109fc16acc18c975c3fa66dd664063e30dafb4bf6023e06d200df12d1d9ee7b46018dc086e0d6def52c2c25b6c7ed371d0f18a300b9af2b08b367b8f98e15b24b45f712e038e274afcfd6c37437227ad81ee9aa518a092cd4549f7e13669c909ef1f3e559055a116eb64bcd97ca8245659edfffe7c1e5b258552ba5c529cff7c7e9fd4638daf14db73e1581fac46456706b1e381feb609b39e648ca92f74c5e296684c2ff647e358b8f75adc667f3311c4f9d37c1763ecdc8cb17389f5146824f0761b3f43fabc9cd258d2320dbc5d0db5ff17b57bb3f1d1f8e2c520413252a8df6bb17f867a28ec25c5f3724473a9d139d31d12cfd2433214b67bd7d78bc8efe853c4be40ee0fc19d0db337a83b1cebce8f5895b3287352a8370c388716ce03c91c09e980e8ee25f65bb057e278c6da3ac2d90ab313c4d8f80a3aa7a78daf244998c56994a7b5f9fa6e7787f48a48616b94c6a04bd27805661f25fedb4dfeae4a8fd982da87c1064b709ad27fc69f4d6bea1578ed92bfd81ca75919db73528da1aef32e5c7ba9e4dfd1b611a2f1c6dc4a1c4309f9f56d76b85a3b389ef499fd0d9df582077239934299e19fcf0b113f6f5f631de3a1d31aca515103b5016f07bfb302fe241cc3b9f1379de0f7b9f14534c6b52e3fe0dd2fb1ac6478b8ef86d83e12ab4ace1ed68d1fbefbffb0f767ed8923cbf638fc81de1b4dd4695f6224b02865aa4103883b4bd41608b0fd6e236bf8f4ff2756a4988cababa8eefd3ba7b62ffc804168c88c8c8c61c50ad215c3d67544313645fed5e9bd2d46ce8b3b1a968bc17df56d3e7d56bdc1db1479c5e8c55b5be507e75fd3dec2ebe58ef441e33a2fa13b583da5c6dd13f38d47576a3a8ef6f658ef57d3cbfaf1f7fc556fc04215fdeab416c00bad5c16fd53bcfefecf75bfbe96073aaf733dcda19de1ad8cf7f508b761fd4fd6daf6cfae66e1fafd1cbf7fffcc6738687a5ea1f4ecf9781d71e2e7f77882a10cdd4b7fe070de7148fe91fb415d54afcd50d73ac993a7cd776a96a66fd96e4a3a647bac5fd25f32e3ee24ce7db74e47776bcfd0579939dd66eb437d13fa749cc6e21f9f2e30d41775207f9ee416bda7e9db74b7b516b3c9b3683665b68bab74342c1641fe361f56e59f6dffdfe3c11fafee207b423eff1affe0d93a068e52e9822a17e05ac8f6e3e6f8db9371eca5b17c59707e46d9c897589d0df75e7ac071cfcbd19d96cc2ae00ec68df6ae7fdfa56ee0fe0cb07fce30c65f83feeacff0f85d6a4e57e96003fe06ef5d2fbe0b9d8267eceee783baf91f3dfff6673056f4ec353fd735bcd360391937d73154879868731cf3afcd21dffe6f77b05c7473f4f5031cd6710ffa23ff36d3d57dbc9ed6aee463ed30272fd7efb18bd7ffa1ec8fc3bd1c70a4636df257e7e8ec983ffe759a5303fefc54cefb4ff1408d75b3c9bf5eb117be1e74d41fa7f3fbef637d11dd4ffe57f773929bb93ccf31f7f2b5e93f85c15fdccff93a7d4e3b391ebce66a9ec2c33c9de711bee72f745cb4e0313ec9b3fe55ffc88d581fe32baaf786c2fe4ceaf7fcb52efc904e975efffed88f726cbfebc945d7fbb0efdc07c7afd4be74fd7ad7f1708c613bb5d9def34037deee121777f2ff07c787e77be5f1ff0f8e471f97a7ee9e58e63e788e637d997affc17127d8b861cbfd9bdef54ae1713bc3c6d1bd7ec4178ef31e7a701dc6e2d8abebfaf9f593bd752ec1a37d751c9e0e98561a8743cfb70fe6fbc06180f3aaf757efd9a8bb5e3baa77e975995d9cf407bad25392ae79ad7efc43fcf1a92c9fe105be2b3be798ca4e9f5cbbdfc7a3ccb01ebc7abe035eeb038e70f7b48f19e7e7afdfd7298e8bdf5f9dc36bf576efc6e324f68b1ace032ee6eafd9df772ecfa389fc5193ef8dd2dbff91a6977fe951e92577ae1d2b89c7265abf7df3bee3bbd44af8c13dd737be89bf8579c4ce6f42d98cbb7ae0fe6d7c1e66a2f9f68546f81cb573196f371c95f4ef899f2afa3dedb72b42dba584c620cabc7f974953e8877bc76efc6ebe3de33f46ccc1b85fcc5907b429e62b29cc59fd146bf8f87d371b8599ef7797fdf4f3a19376463f2dfd88ccbc779fef417fdf19fbe0dce7a501ff54d73737f78ebd8e37d15720faec95ff476cf9f8e3dd181f96a97a3e13e3b19b3f77dc2f3a7193009a7f8d723c748c23d585f11ffd92d5eaef46e21fdb37b9c65e5dc405cb35cccb39c731e2bd56b9d6b3fbe7eb73fba76f16ccc8b77783613cf76121fec3f1f384c46dc1bd63bdecbfbfee8a44f77db27b2d5b97e31365d07fe30d9ffe3f469d29defe534f7fdf512df77c241069fe8204babb7d4d8b7de498ceccfa0ff24d656e307567366973f70efbcd4d8dbc9ac7e4d76c3e2b1595df4003ac3a476fc643bf61358c71cc74b5d9bf43db88cce7a3074bfdd279c3fa1d7ff79c7d3a67a90a6a77d470fcfd4f551531c49711c4dda77e73ff45d3d70f79ff75f3ddcc7495de519dfecfbe7412fa6ae7f0ebfbfc2d976c1c71c2ee6d307f26b93592d2ef110ddf31e7a660f4eb99fba38dee4ddf17f89fb7b3fde2fb085e077abde760acbf97e7c8ffca72a077bc635fbfe785e1bb3436fb18bde4f1f8e11ef0f9d5d125ef6aa3e1df7f3e77dc9b423b6ee8adc9df54b393c8373fef9f79e9b6cda6bcf4e9fbfbf9eca9347a7fbe5c567efc740cf50ef1f8b1379b9fcecfdba5063d4e5af33f3c0c977655eaef738b9e0c6bdec81d3dd5f893d6556bf7cdba16fd8873515efaf3bdea6a3a1f6385f30a6273ee241ce7a657e8c9979f7dc97f9b1536cc5f7ce797adcfb79c3b8958bd1b039eda945e79a1c7a738ddff59f3adcd3895f79d2cff3727f2d96f37143eb2c7dd8e4c1702a433beaf8ae72e48483fbb77457f7cef8bb6c57f366dcf3b4e328ce2eef7fb38ac2a8d2e7da42c683f738fca9338ca6f1741c46f1bf42e7ce9e44d51777b05ccce2edc28b74e94553277656aebfd3f7b4b77bcd1ff99f6a4f7491238eeee683f1867427e360745eb7c36aed0efef8ff9dc54f9ce97decc45110e9c3b956ff39d18662aecbe144bbf3a743f1e175fd27d9fef4b51fa4b698f7efe603b79e0fdcdc6b7b7ff1dcf5bfc2f8fbf7e06d65183519e3f2ed5ad91bf798db3fe36acd3d2f811fdfab3598b9ebfb76398a2bfa5e0cac4ad8c3cc5df7dffe3c8f773993783af4d7fd27baf62cd06518e8ce74f017d78aaf8c31d98b5144cfe106f60b63593f3807c6ecc373c4ff8ab4d80eb59e13b5cff958fba1b9d0683dd17823366beb995b5c7d5e25037a48cf1c38f99774a67dc94c5146ba0c7feefcfd52d8fdab731c6bf130c0bd2f1fa65ab69fe9cb65ac674f5c93d1ffe36c7d857ae6b22ebc76bf32d47a51603fe7637dbb98c59b7d18691f9f47ed2de7f7c4fde40f7ec0a10681d7297fd7bbfb1a6cd8a65c57ebc57c058e5a15bb1a933d9869f01b778bb954fd13e83e8fb99bf960fcb218566b7f7d9fb9bbc56a3e705f4fbe03dff47ce07e7187d57ababb2b9783fbfba511b7641f5e1c4bbe1bf01df17cfcdafde62476bf239b28992fb71972b7bd2235b4b78b73bc3ecee4367d92876b4e34914fb69b5c0eacca75ea97c488cbcc8833f790dba2fb3e7c1e67bb3a738b673a177a6a66edf39b67b0ed407b4762dcedd3d95d9935b4e7646f29f96ab35ebb988bb7e469f346d7f1f46a8d7bea38c20f3a90aeb5dd1c9e6d7677711fe857d75d7f9c1abd17cc41d3d77e72ac5e8ebffdb1710aa36df4d1311f5ce32297b27d4b77dbc29b931fabbd910df438936fe993784bc8175fdfed9339e948f72d74b6f634ea85d3f847c7e90ffd7b72151caf95cbb85a1ff292c36a4dfbdfe32e2e96c3b8490f72bad2960ff7adbffee3f43ef939f4f3df1fe63756bfdde8e378f8d131d7afb130b6dae343bcf676f22d0dd4dc34bab6980d0fe3961abdd633c6afa9e1bea5b321e9f0c6d3eaf1448bfd488b3317faa1e39cfe68fde99bef8d5348f6ef7cfc92ccaa7c3a8a91f771477ced1f962f9bd6c3f22d3596af8ba0779081c7d91f74dfddf9f70b757e6fa69eed2fc775582533f9bc08ee452777eef0e8278ab555fd9a7c76f74c7238dd66bbed2a1de89bc51c7990fddf25abcbd1f67b6b3afa36bfe775a9ffa89cf6e9595a6f06cc0e3f8b49fbd38f8eabb45d67bcf06279efdaa2143f29bbca4f25dbb5480d7d8f6beeee9a45737718ffacb95b7f0bf43609fe68bda2ff361f701efb5f0a7b708885602d4fbbb1784a2fef1db5c0dd7d035fa627ebfb3f1373aa74d9cf8e1d3f436a48ad5be3176bf1a37da0bb4719c4d39fdc2bbafb66bd9b3d8c5fd259dc78c65db11cfd5deb7cf1f2fd7d96fceed536dbfedc382dbadf75fae83f3446efae6b2c48e69e69fdfdea7a5c18df5d8f0fc096383fa903957ea1df1ef4dbaeb75d0efe72acec49733f9805fdd62beeff311b44343f6e832cbf3f3e735c1318999bc688e6f4df8b5dfdb634e2266bcef78ba5a1e67dadabf5fd97e31706519587da42b8b6538af8477519ebd0c41cbf640fc0e5bea4031e3b3ad70feaabcde3e5f5cef4d574bbdcdd3446466a8e5fd251bdfab63e1f9fc52836ba7de91fb0dfdeb2118ded9d9eede4f68a4ee775fd43fa68f85d7d3499f534d7996e1993a1fc8a9fd4e1177a7b953e4d8e3686312c97eff672f90fe8adbb8ae42b35e32631a23235c74f9e71f84deb696c1bfec8ba4bdedddfd9ba1ba4c69d9699d32699f7f3e0daf33cdd37a9f1b24dcce90fe9d8e5c3729d357757f7cfbfc3c64dcd7b929bb7e57c5c2c82f77a89e5f387d659f3dd75b61d6fd3d9d652fae897c624dac5fbc779beef6c614fe77363bcb7ff417b956c6a73692e9bde2a1b0d8bc7d115d9fa417dbed87d57ae46e968a8b98e7c4b4777b7eaf44bbf0fe7f007773b3ab737e37377fbe2ff6ebdb56cbe6b4799e3b774a66f9703fdefd0594fd98ef6ed58f38c6543b6f4623ef9515d75afe4220f3b390cee678bf9b8e57a48f727ec7aec85e6d2ccca647ebf4a8cd5b531fcc1f15b7d57ef07a3b8498dbf41c6cce9ea71569b8fb3de260576fbee79311fbffd5fd0f3d9f7edab107da146d16d3ade942fe9fcfe7571b041318f7f6d83b6fd5c0456e50ee392ecc9ec8963d87f935f582d6758c39bd4d0578f33ebeddb2e6ed2e68ffa277cc397f4bbb6d6b64835fd8df4ecf469bc5dfc64cce7625d7a8bf97695ceeeded2f51dad73991a77a5172d9ac5ecc338e1a53daf7945ffb8367fd0374976df958d416aaefe165b6939dab6c97cb9f18cf1dbb7ebf19e1f8f9bfe905e904fdfd30b89295b6fb7bc3ce627f79d21ea9f9783bb2233c9af5ffeafd603cb27597c6f4ce2adc827c6dd6611fc2df631ed2b4d6acab7c5d3e48dae9d1ad32dedcd8b1be6ff27f76795f7df1ac0e0cd74c45dde8d9d31ee79eda41483e35e331ff596ee9af400f7ca7387e36d32939a3b020f543e36f97fe04476b1855e49aa4e68da718d926df334dd7e7b405e99e573c43689bf3eab1f57f3255fbeeda22f67fdc915b75862d4abcc943ef7ccbcfa5bf430bafadd68a82d1fdcf3f30eeb125c5817f70eddbf39bbef60311b16cb41afc350d8a9d1d316f395c67c2f3c0edeaec3341c7efb7c651c5efcc67d759f90d3f9d7dc18b6d9b15ee0f971cebc381d9efef83d30de6758a243cdcef0ee5f5d6d2d78d9545daeb7fbf8b7cbd3bac4d1e22da3cf50cb2d5e5dee715d7b83fbb2ab7b5ece7470e27abb7a9bee96daa3fd9a3f06fd3fdc91f53fee68f3efaf1718ab43edac19033f92e9fb974b7e91c5eeae71072bae2b1bdcbfa4ebfbf66bc0754987677862dc10e7c07bcfc95cfeb9347a936c77572de663ed5bd02b9259fdfa95eefba1fff235b8d766e63d7801327d5fcdafd7e11f6bf515a6e1c88976fc6eaedf91bc910f4bb659953e6c0ef5b6a76302bcd593ea63decdab39de66e6e450e70b39e96a3af4bb06f9bb87fa8f0b0c5beb0deeb78779e5bc1ff27cdfcc639ff47f62dcb8474f54729ffdd59f8bf5aafa1a747db0a669c65c2d2d8ded218fc935c4ed09d70fcb6e57c3eedcada12307bda7c57c7a7efd58f6d2d9f82ded7a3390af74a8d5253f7273f69c8f017ae6d0bd9ed5940313642ecbe8614c7e48b37cd886df66fa3a35eaf6eb8378e9fab46783deeb62d67b5a8ef2f7f2cacfb1f576dc333a3492e76cb87f99071bd4ff626c8ecfc29856c4fc23e03bd475c79916972413d96eb84e47519918c3d794e7b49a19dbe5d760932f877bbc0757ce834c719d58f15fa83afc63ed26fab9a8bc718f6c4be073a25dbc4acc49be781abfa541ff29e3ff515374d0d50faf977aecd57548270ef5f4617ad45f0fdae13cde9ae31193431d6dc632b73b91d1e1b459cca2663aabb78c135b69d92e3e91d923c7046a7059eee937653a1b565fcfe5bdc43e38b83feb2f7178fe777a357e5d60cd4d9ed31dedcd3d2d9965afa7faefeb29be65b4df7e0b9ff3c703efb4f6ea8e7a6f0b9a9bf954cbd69bd72bcfc3f7b493cf8fb37af3b5e38052584fae63ef6dbf3df05c9cd6974f8db8c498afb907e5953139d3c1909d330efca3ee51735c76b8c493fb833d32d90ddb45509deaa8e753fd8be723fbe9f47b537bedfac7f0f36f0fbad163ac76953557c744f5d47c372690cf8fc683e56fbcca8ce8ddb332672ccd27f4cad9b800f77aca7da46afd970fd3a6c350650f423d437d5133a930f5c09bde23b6fc6d17bd5ed4e9bd2c47f5f6f45ccbd1564b4797c74963a1f379e8d84e6f7fedce3db84fe78331ee8b6c32e55f7e81ff037f91af331f8ccf79d3f879c84fab96f3e97631c43d72eddffc65cbfb827c4b7749c9cf83fd3b738be196fc305fbf38cf68d8661ab8828ff83370f5f0394eeda6afc1d9f15c1362f476de4ebed21a0ad1c3fd208fcc37d58df777cf43f376fcdeb5ff38b3d7503fd6f44feac75ef36be73d3edb61cd5cda5ec374c436c5571a6f73f1c463ff810e00bfc2ddbf17217c8903ce6e62dcbda6e6f8c4ff801df4928e2ae513c54db68bcba58acd9ddadce88d42f6bf11cf1f6753edd1a673bb55e74babf5a4c61576e7abb23f5f4f65ca3beb4f7f369e5fdcd1c97c9cd68c1f6ddc13db7075fafea206f4606babf5dd2b52a37ecbd826ece69e9ff1782fc7fb7fe2eb7d0daac37ca9fea767f5f98fa3f86561ac34ffbd5c9f8e9bd98d17f98cd943ac2d66d39064fef45cdf46fa6bfa24aec5634da1726ca2e8576270d72e774be5af301e1fbc32f3e9eb82f9eebe2b3bbce6e3cc5d578a37a6ca951e7839eac35ef138dabe2e1ec6db747da6f7cef76a8edd9ef805ce253f56fe67f39dfbb9f8bd877d5beac85583f7161c777fa1270f6b664be755eb5fd528dcdfa16e9975ee75bf84f6b7c07d75d7e8c9e006b1c8a79bad9806f7e3a8b9bf8fe3e99faeb31c869b3898c4d3e174786e6f1cf7bffbbb838fd85825fccc356c89abfb44389bb4d3e1f86d391a767641b717a9673bee8b277becffcc07632d992d33b778c9dc275a57e4a3576bec0bdb6aed3fed33f769f1b2982f07a9b9e2e38a7e2e06fd46d2dfb05aff2ba83357ed6be43bcf4cfacd7445e7f2b7d53aa37b1a5e39ef8e7445cde7dcf5ded21dc7a6dcdd943fdb68956bdf3f8b626a8862ea8a07ba47fdce7bf8d1f31fce637a45d4b8b65b7bc5c49a844e45afb2e9d7626069be9dd1f35422744a1946b908a5eb157d7dd258ba5cf76b3fb06ab9eeeb5e91d5aeed6aaeedd0b9b474601972ad95c2167bd1589608b4d62bf2da0b9d52b4221781d58aa797bd57e43d2f4c4a198e0b2fb06a3fe8575e60b5b2e1dfd2bd798155f923a7f68abe893c70774f8156ca81568a628adfd2fff8a3eb16eede2b5ce378ae64ef158e8673d131f86cb3f78a89f938d06aaf908518f44bd12674fe521679290aa7f4c3a814e1a4144546f75dca809edb32fcc06ae4c0aafd81a5e359d69625d69646efbdc22965e196228c4a3f4cf02a5adc73295bbaafbececf41cfe7e85e21e8196bafa07b7475afc85b2fb034f9204a69d3f193d62b22dd0b2c53ec442942fa9ddbf3f08c49cdaf1bd3b5fb74be1e3d23c6a0cde95aa647f7bca3f14b307eb250e387b1c318d749a3c62ec43dd038e11ee80f63156674eef6309ef85d52d3ff62e6345ed1eff9837ef75ab976bfc2dc06962967429d3b52e7116a7e26068d850719b22a9cb77569fce93b8b9f47d01c56244bb2a0e7712c2fb07afc3c9985e769f3c3f3c8d0a1fbeae179680c429e63dc67a395b2c5b9db49bb2945d0b7782ef252b649ee0fe87fd173ed5581e75c431669ae2b1968b53ba0fb24d961599361560acc59d6f38a093d472320c318fb52da0ec696c61df2b9b61afc3ecc4b194ef8598a5c7f24593044857168ac4a1cc601f7ae678d55b39c47f44763a225ea1e84bd5173e1985e212cdcc3daaa25be8b949cd3bd40162caf98b01c36246f79cf2b440d9921792d36a5c4f936a56f27384e84f85d4bd7c4da219d30734adfce4aff641de2dedaa55a8716c94523692c684ee8f90a3c2fcd37afc935af4319e6a5b0b7ae6c2c7d59d09a90cf5e91994943cf41beb1a58935c9b345bf35b386e6d1aa456369929ed5a0f5406b8dae41cf30e1e718903c41ae6aaf103ad664a8d620e68564366b702f81d5132cd3dd7aa035d942ce486ecc973dad731968ba576c9a84e767af8ec1faf203d221d02f26c9b1e4b50d59657d94ed05ad69bc5fba221c1bfe286f48efd0f55c9b7334ac3337f45ee771cd4a69479daca8f5d8af319674ad35e91e8d7513d656d67a45a641cf861bb5de26a6d2853de8ad35dd6b642e694d8d20773acd13c9db61eed431de610e79dd788165e1f9da888e6dbeedb43daf199a8745c1e3cb3a0eeb82647a80fb6d59c761cc48771a74dfd216a5cfcf4732d8f2f3911ea56bd09c75bacea1b93248b6e97e7c3cdbea19e31b27f8fe7160f5a42148c7d23c935ea4e76e59e74d4a596cd4ba4c5816784dea12e3b9e92dd796f66da3d52477293d73417b81c879ffea63ff82de6ec51e3adf102d5d03e70fa35cd2fd21379435ae0ddd9f63bd8cf2da2b629be44bda935c0e2c8bc6c41f580ded77bc67de7f990fc677ff8af5bbafc1c13e39c4670e58fdd3f886a36f2633592ce0978c5fd2d156fb16f5b6cbe6bdef7fb42397db7443b620f9f364a30ec9bfa16bb3ad0b1b837c8931d9076403198fb3d89cecee2c3ecead20aba4478a69e63e69afe4f7c0861d92cdb1bfb09bee57cbd1eada79778fb3fa555dbb4c8d1ed7070cc61bf59924ddf268bbdab270b5a01b9fa0fed1f31fcf53f44b19f48da4d11ade2fb33dcd15e69d7471d0afb386d636f6ab963fd3ead016b93f22fd981b5e11e572d02f7d5be464f72c0ba77db4c786172e9ec553623cdae3993fe37d5c362403d005ba6b277b31ab48a7ecc5d38b14a19bcb1d742eec44925fd776f7e289e47cb3176badf142772fd6fdd20f34b2a572afd8e462dd6f5c7bfcf7c848f0291f67e709dd5c9ccc893bc09ce46a4e729a13ccd15ac39c7821e684e6a8f1c2f19734dce4d2c8f7f229a98591efc553b2973bbc1a81bd9df951dec6c5f259842b433cb19d3e9f6b2f5d9ce724beff81ff32bd4f0cb9cd4cf992eceaed7477d72c8d61b318fc17cde34ebe643bf9cab9ff4b5f4676f75ccbce4733b7ca1f9b9432e43cb0fb34569f8d6ff595b097d15c8b9da8785fc13ed84ada1f42910b93fc1d8d6d8e90def7bbf7b968b476b9d61ad6439941f6ad0cc86676358ff68fb9c07bd7a6bd84ecd2680f9b71d0d7bd30fe92e27c96cefe4a6ea46ccbd36786d404d98e9a58938d477e5ac27b4dd3af25ed8beb3ef939ba57c0cfa2fdacf2e0d34db0b70beceb74af6321d9f6aac5a8a27db1f18aa80ded4d29db4dee47792d76158e17d073433a9fa1f6c552b4b45e68fd908d18e17d603be6b2889fb12e024b4fda7e6767f458d769cdb76db5fed75c5ffe2bd81c641af182f3fce92917aa5c38c32231e23633b6eb7414e587f5f43e2efeb098f510d7fe7a39e72abe771267fd82f5b2db6e97daf8eddb908f13f069686e5c8de4133262ac5ed2116423bd58635532477ddebbf32e76dbd7549d33dddd959d3c2fd46761d8cfc5286fe443d24827af785cb4d78bf3178ff371c1b1a577ebad38dc733856dfcb9e5a1f9abaa746fddfdcae3337b908a5e191dfaee448908e6c945ddf467bb6c121ab6d0a99757b38d69605ef939d7f06bfa595b0b99cbdf2a52ac1b100f62f60b363bfac04c9a041ba59c0e7821dcc3e7dadfcdf466e442d06641ff74daf70c86eabc8cf13f62417613f279fce8f935ace781d8b40e9fc75bf79b46343cef266b9a6f5121702f7ee9ceccfe3670fcf4ef65c5c901dec077d159f201f2222dbb247eb16eb80d66ea019e4a3b9765cc0c60d940d8fb173b1c7d038619f21db847ccf90ed4c39d058b7e03e608f685ee8921f73f85d0c7f66b862bdd1a767245f856cd2dee3808ee99bb7afb13b3d7d9a0e9259bd4a77721b1bc3d774146b9f71b4b3bda1a139f51f923a61bc5d7db0edd6fd26b0e315db70fd9c6499e62d2ece3e835c89704af254e333d880b0fb0c31cbf7fe0cb1b52ed681cffdd1c967f4bacb7be493919df2683b555cacd8d77c78d94bc841ccfabf51fa9fd62afba63afe9f8bc3ffd8dfe0d7429ef543fc08b24b3e5bf7fff198bf4bc63e65eb4cb634d25f8fb634a496b38f3ac0fcf067648f982f92f66c7f9637e22169037bfc250c49df5c1c43ba26aa1ad75e18629737629818bf3a67a999ff37edbd1f9fff701e91cb7952cbf76bb396a32bbedf36b96a139deb8c3ef4c8b71de2139ad23106c76984e622cede6fb386f60ab2c5266487b66c974df01ddba0fdeef85c982f7b2fdc908f5b914f837da67072b9a6d7614b7e2effdfa7ff0d11e5c672add5bf282f36db2eff55f6da0fc80cc9cad8966b4bf3c907b5ddfcf8de69b296ecf41cb6cbc91fd958744c4db68118c207d0596670be2f291d6790cc2506e4e86cfe3bfba2938defc98ee473919db7734caf7073f213bafd8c65c66d128e5f239ee6da13b607077dd84a82ee1f31489a9ba8f4390657f941df80dd64af567cceac44ecd7eed75e98e482fc911bfde6c5681a3e8eeeaa0c3da5e48a8ef92de56ea7d5fec06a45d037d241e75fc6bf10137172da4be262f12cf4447b1c686d5c0c9fbd706c082db796c5f85998494bb6861cf47b09dbdeca46ddf4602bf35c37511bc18e116bb28fdd2643ec9ce32a673e20e9b641bffadeb9b2c6b2d82622bb9ae362473beb109fd923b7186e4a9ff38f8d9c555dbead51e73384919be46b240df90f7df6e7e1674c6ace2bc1b7af8451b58801865929eca110e1a694b43e47c88dd4ecdb74b638c6dd455ed0a8ba9c5923b58aec7fc3b517af9c57e067279b2cb087d88b535b94ecaf443d5e87f09f3539132a77e25a2aaf627439173f4c54acdb51b622ef33e46b8b0d9e8ff315ec3fa8fc91a3f233f47f7c634c71ba8947c3f6f133d67c116b7673e4bd9c0a361af985726dd19ad438ce3329f13cf001496e48d65cc49591436e942e772a5a2fba573896ca49346224a0ef3976932316e4079ae585abb67befdaf99e63d691c9fadeaae83772dda7eb235f2a8af815b928bebece397fac29f50a7b03d79cb409ef3bd8530eef6bf12434ced1925fcd7f494b6b86e40cf9420339ec01f22116e4b918bf2a9fa3861f123a3972c02a7f275bc40f1a7f6099b47e65a3e9a4773a5dc3f17649eff76247f66cb257f1d6f6469b64b3184edfa60f63f4d9fb2df7859bed115a7b6ebd5c6b2df90fc79887e43d00fe44d2d077c2c81bde07ac1ed91f811d95b25814c02bacd9cf642c82801cc856202722d6562bd75a17436c39c7ef725c877f83b88fd854a6576c1ab211a4bd2d946c191c4361fdcff1970c395b7f966b5eb12c1893023bb9958dd5fa03754cb1e9a536db53b2b14c3173109b91eb7ef7caf885d0657c493815b07bda289703c45fe9fc4234d86f6b496b79563574dfae3d2985bd7d96b44fcd04fda6946dc6b150acb97ecdeb06fe59cbb698a34347176e29917fc6679cbb6f2739eb7157474e92738f0de798228bf6243f5c3d8bc0b252db2d25f91ea42376c8631ba4ff3196b0b704e7a0310e510d3b0131acad405e989e0563d7efddbc9e46f239998f3f634397b1a1755f273d466b086b679b986c53c5645f35a4db8491c39ea23d403ab94edfc92df9f2d09525ebfd63ee695938da21d674cc115ec49034d805b466bd7081b52b611b4df6f229d158a74e9f91c70a34cdb5a7cf629b2066b82c56f459e3daf7f45b579ac873de6a2fec1f67bd4932eb6dd3a1dc2e1fd05fb6fd94938bfc12edffd01b0aa753641cb30efaa45766720d5b52c57fe0cf935d682e8b49e987c34260bf8d34f853c805653df2a764d0ef7945de281c59cd7e601f7177013f3fd9abef0c3fd04a9fec0b922beccd997a4fba22223b92f416ec16596cf6d09be1e2177c8d2c17a12c702db6fb35b6bf37e45b6819ec8a4d4eef5de027c87ec8e05f76ef21cf034dfbb6d3389edfae0aaf481aa5ff81f3503177f80e221cd35e71f88cf132ae3a56ab15de44671bedf0bdb25dba7320565f93ad220664abd18e4863d7c5ea33e07524fc02576172683ec906cf1ac68d38f031183ba78eb1572d702e8c415339417c4efb24b096bc3f3ab85fd968c763c2e5adebb39da05ef3f5d30e3a8fcbd46c47386483f426c0746e5a8e5fd02be21f866b3b0d62786c13345e91f4bc30c9e55ae3d8468138a0ee15b9e676fb34db2d984ff6d9815d6c9350d0b981a9e2d743acc7627c515ea703cb100d5d67f8250cdd465d3ff7603f74eb998eddc2e6f681038b7a88cf0027ab5e81b9a3ebd27ae67892402c876c8b7cef0f342b6bc8af10a5c4fffdee7dceef699d398c15ec5e5b47f9c5ecff78c506eb42286c23b09e03da97f0aa33feb8bf3fc6b3b42e9e65b0ade4e6589b4fa266fd76f43b78bfb44cb6875c23b43116642bd1395ae8c8103aa0e1185566c2462b32b2931a85fdb2788c72ba7ee3b3af766b5cfc35998ff7e41f7fee6d9738f31cb223daad209f983102492e147e3c856faab08f6cdff668cff1ed58c938d9d2e4434e4a9ecbdc60bff2f43788175a72d3f9cf59a3fc672d69685e1927ed3387438bf8f79c7c59b29d36b91ff47b498857f8002487fe03f47b2d778c6597c89d0177518b4633bd70d976ef5d3bdbcb46e581698d377d13b14fbca7ef975f52d2f9e1fb58da3bff564f6eb5c32183a1b1d87dcae0b97d25d67d236945875d3e9b27d2b30a635b73ee23d115deb6f18ae92b640c9f474dd20033abb0d31bd849123ac421b9e8899dd3237952b9da9e176e192761c3be69d80f152de43b74c976231fcce0188bb445d8677f73cdf722f89e0c8eeb2f48862a2fb01a7f5491ce32789d24fb2316216a49cf71ee26577a11eb87d6125d33471f8ea8c273b24ecf80d7f107c77d43e09904c7abf0ec1365fb000f417b51e93b8ee5151b43023f8f575e3b64cb1aa2a2fbf043e8db4aacfb3db5cec866015641226ead31b632b02cc4708bf12bdd1fb88ed60acb8bb50ebfdbf281c775cd145860dadb3616e2c78da54b8eb9d593d6d1498fbb36cd91e8b936f9db592e486ee9f98bfb82c78d6441ebd6e99ed729f27126f0a2f439e9158ebbd2fe63a63663e4fdc0b2e4d38bf4f9d9e89eac90e610f79c1bb83ffa9f6db5c3184277059629e6b7e535d2d1b049a3cf5aa66b7e36e97c8eb726acafd78c3d627b1bf111d864bebd102a5e6b8aa71789980dc72e7ba773885c1c1d33ab2ecfa3fb5cd7a4ffafdb6338b66b7861544a7b297c8e1b931fa471bea2cf983d1bfb65cdcfed58ae9dec79bcfabcb7d2ff03abc77bebe6567c07f6a34f59fddf24ab96eeda2b57844343ee2acd2b329df310d1a1b643902c934fde2e67fe83c2ae730ea2c7f2c97c41a2d17aaebd6dcff4fbec64ff836dbf52f9e3c5873a376bbbf724cf19c935c964ebdaf45eebdee3fb5be53075b665b2bbb37e4b591c26bfe2e7f65c5bba728618317cc1630dc2d890c6359ca4a3252dc7255dfb98d38daf632631ff7297efe5a8c34e237ed2fa8377d8690bd8478d63a0229c1af20131cb5c1ab9b1e45acdeefc0a9f3fbeb8f72e17cc36b53ce0b593bcc33c280c44877900fee176b9bad397ff37f0f82771b7043ebb1c5835e900d79e1a5e38fd9286935c84f0b37239ca35f8d858fb15626ccb628a58b1173a4d6a4ff67294ef697e04ecca88e6445718f71676714b6bba8b53d1679b92f6be4cfd0fbc07d7e6f58059c5b17df51d1f8b9849771ee49436a53f279970541de78ae38721f2a8b44fea9c0375954eb14cd7be6fd531c0a1ab3db6944d1fc776bfe763fbea3c7dbdcba5d2e73fbdbefe2a4ea56a46e54ec5aa46f95e14d31b6378bd55fab0d51e67f233ae7ee1f791bff037e55166722638a7199ce14d2472fd5a6e2ed79a4ebebc9cbfecc917422e0579d4b1214cb2f390d7a6cf38eff384e3f019ea849e92ba7bd69ff60b76f23935ddcf18eef9de662226a8ea34c98f674ccdc6e03d61c3715bd81b7d0d36331dd758add4935accf2362eb6cf5e28676477898da8a13381d5215d093fbda56bb876b7f7252a871ded19572743f659854e76d1a1eea0412d6883f320d69f3771b175fd07ceadfb647b934fb0b61a55e7bb57b61c5dc352f78afb975a65aad8a7c67946ba06d95a790e1b1ef8ab4d2e4dd163bbcbcdfd4023796d53e45ce417c6214e4f6a92fb9cf3e11a49f55eab5ddbd9a346d7265b11b5f1c093e0f35b7ddaddb4498dedef1937fd35dbccf40ac41a341f3559b9c6f387d83beae905c7d221cbaad6db9233926d41bf6d69af03a601d87fabe96ab8d88770b504798e8981984d6069b2105deccaf28a8de6daf70235b3c857246642ef6d51ca62d276f864afc84d2fb0186f56e48a3b80ae1f698a97c012c0c14df8591c07353a8c5fc52bfbc341bff647792376d7bf87cce3bea2e6db4683cc7b85ab27880f451ceb673c5fcdb1b6c36775177312c81fb825e968e407c02fe2322f071d4fd70cc98eb48e9f1dce4bf7436bf556ec5caf4ccdb84c0ce6e6f92de5fd57fce241bf0948071df66a603d4bd6799b9e6b8f05f070e4b786d38ff7e9d1d57d7a4fbea53f030683f769cedf6a177bf24d3a2c1b6d3ef7de73dd054ea07470a8a16eba9a28e0d3312f8b57d8dad8ff503351021f5bc48273f27d709b207ecd7161c42a6454219e0fecd9ba6fa4b0f5e9dcc8e137a8b95f5b7a683bf06798730239a2b36b20befe04ff2517a36afffe5efa7c2fa41343957f2adcbde2b060fdc2d7b1e8590ff7c339dd86fd0a777f71df8d302adc4b773efa1efe127f5ffb37da80d9c3fd201ddd158f067adaff5ff049ff83b5fe79ee8f943d05dd022caee933f6a9e5f71dcea4af315e71934bd8541d2685de4f59768b28978e739001b5b7d43e7cd9b8e07c09f24aa508155e23b01a7f56b1cdb666ac2c63b4f3434d2bd7d02aee13e461e22f69789045ae21657e224b715fd5e092e27333fe966c84765130778cd09947256bbbb8a008e3d5412683aedee2708dae7ecc0aece54ceef25a3c24f5a33d9e81abe852af6e72f304b70f0e050f39fba4f647576347d5b5d8d172adb11e2e86b7edadf371939a4b5563143ba9b9fccc91bccf816a09ea8980d750788e0df01ca81f2ba21e70e483be758e33cff3739cb95679e13f51b344fafa7ee68f80edd6027bf5aab05f883509f346bdf8347e5b6a1d8f445c7dcac53bb9f8f11a830bb9013610efe9fb15d9534dd2465cdbce737dc0ed78a15345add3f10e722ef607ea0b10870c34d24307dcaa302aa58f11abbc357edb64bb3b33da6d9f1e1fa6f7e9c36f5a2376bb0d6778459f7cfb3ab0a706ea8bd65625e6491bda6ea5ec3be0ea695fbc516f6b8f33f9baf8e4267acfb3a1e5fa477babbcbeb7fe5c5e26d0c8c7d5027b893a0f692664c3b65e387525639168cdd167153ed31393f6ef657123167c2eabc54c6ad16ea83dcefef85c6beff2704ec33690e47a815dae2fd79aceb18eedb3d01333501c2571b1a5fd52f3c2852b8cebb93bf8c7576a04fd9fa84557b86ae881c0963339409d0df82e90f7bdd55f36c16bf51907f97f9fb330110b318f398b935cc4691e037bafbcd53745af801ee63b98f57ecf58ef2fce39d79739d6a475348f6b45c11749fea28b58869b0bce75b7bcd62dade304f2696d6ffef1fdc274edfb5fcd1120e6869ad10235cc1ddf40ae782cce782dde7121a9f7f89e64966cc60df3537805e93bd27de01fa8c1c1d85875d622f74fff03f31417ceadf85ae6c2dfa13f8f48e6d34fbe9aff9b726cb8b6f32e174bbe0aebbf15b83d95df014e69e405e95c5dfd74386cc15786d80e643ba7fff17cc1e95ab8359ec13d27d02765d8d9459f36f23b1bd940ed46ed3bc8cd6a5c5b30c945284ad1c077695c7bc87b69d3d5f6923c823fed0a7ee8afeda79fe1f2414cb8e95709e393ab3339998bbd7abf473d5aa838f0501bd657fa933e1f76d89c672f9c1af07d61bb477b394fda477bfab7eccb9192a5c5ecd30fbe82917b068743b8b2453829b9963ad7185b2e72c6d8f66bd65b4261fd27248b7bee11002eb87fd2a6437e4b8c84d2557db5efd21a18725f019631e8a5a31e6379ec3e57f6be9e0e34dd0b51a3dc837c8dc0e5a81fb8657e499fd1fed8db2e9ced678cf6ffe6fef9b7d881b8a770faca35bca88fa8b956662844c739152e5fe51af147c32ba21ee7dab6af5e98e737e7c94e74dea7fcfdf7ca1fe96be9c0076e1eed25db808d76888789f0fe6017221766a878d86dbe83be1cdd358bd9274fff351e76f994b429d7f56b6ce3a87c0430bf2aff841c43ae78af22d32b268a3f4e304667d0d50227a5e2bfb650b76d67a82f535828aeabdbd11e2ab8961e7d7dc82748f6f2897c4af007a38e3f44fdb7c87de09b2c8d6d47cb543c0525e395f38efb88f3a8c546d57f2f0c2f948ca7461e6b4aff17dd73b9b6cab370be4d7107a0f786c675ae7dc6a81713d427cbdb626d836426ffbd9cdf47c96cfc19677fdf2382648ff480817adc8f6c2ef0faff02bfc7fa12db7466ff35d7edbff1cfe09b38a6b7c935c621c78c436e10bfd34f3f1303cd0cece94c8ec01777636dd77895187b3dfbbf51fbf09ff44999bf2fec97c29edecbc6d27ce09826bd137e350d7da84287f482e115097ac848e612d199af7c7a0f9e08d21dea55d554e5ca2f3de562c9b94678f12c425908d65fd5791f8148f92409d776d9e0693799f320d1c9b7f1c3c51785db6a97c514be26f23e4685dfcb0058f51b73ade3d572249fa387f17631da7ed8abf6bf5b76b2dc773ec6d3889fc0d3c4057dfe413c62807a505577e0f410ff0a2c9df37c6e2967dce74271f6319eaee15779c0650ac6d3336e04fb33b00073d1769ce05cc7c7df41bf7598b946e1dd823e5d937ccfda2b62576e84c158bf2c976bf4e9d1158791fe08feb7bc55bc3e179ce431d7bd86d2959a30794d64b96c708e067dde021aabe577cf71935fbbbb7b7bd4eeca74b42d3ff7d62bfc4ed1df830f8b51fbf7de1708c121b53ae0d4c42637bfedb49e172e67e851e908da7b2daf886ac68b93cf90a376c377f2b3d8ae3b60de27c6c84d0df472d8fd403c658ede5206f3f024ad8ae995021843c40fb5477b71e2afa05f61aeb07b5a5c38ed8fc49815e70d7336d01a9d277b31cbeb6531fc92867de60ef98bcf6e96f14f9fe51d9e546c72e3433f777755b69bebb23dfd40b6935c8e727d59ac5ebd030799c22d6f13edc67df82d35f6fb643efef72757d1d55e1e266330c6cfb0b58d43bdc04c18393e174fc0c470fc6054edb107921ed24f7200c73e61cfd220bdd3afb8ee1fafa86791b00bb733f12bebd2d057d96e7fbf184db7ff557dc17e343f540c5f994f43335d5b9ec4ced55ae5d8cf4a06167a3574af6c6b476443f4e2c2adbf81a3113ccdbd10f57e096293e77cce8ae787fbfcb4a87f023eb2e37de61827c714c80ed9feeabc0f5273bc59cc3feb3edfd77d4a579ee2a2b8076a4fd514e56253e9aeedd6a94db2d1bf908df3bc0af85966c8b9355ee158a1ad6c8e99b2396ec3250f52e3eedfe96cd83ceae36d3abb333eedc7cbd88cc3fd15a17f1706e7b85cf21fc0c728ec3eb8adf895eb2fe4a0df0664e75f8fb318a7f34d3eba7f5bcdea71ee3eeda2f736bf7666f3bfebe510da11f4b244af918b7df3977b031eed9becf79c9bd92fe6776a7f5435ae3dfca89ec702df29b8cb37a8c103a602aff25984f7d7fb9485a821d75d3bfe0e9e62713ae7e6df38e7fa421f6ff9bbdf72ce7f29be8d7a9ab5658919d9a11b8b6bb9f1aaeaaa9dd2e7fe833db9a9541fe349e72ff75c5bbe2a3e6870a3484dd4628ddea2bae2136b38be192137c81c0b8877826ba1e31493cc53dc719231bfd3001cfa35d7663aa52ca4ad38ae0cf697d16b3f57bd490deec5bd72257812dc52d8dbc2439f7eeef32fec4d299903b7e7dae85da5299bbd563cb91af3e326a63ae6702edf1e165c4fdf573cd32ef72a02170c30202df81f60efb935f69e70b3171a7aafb1afbdb62af0ff83eb59b4740d0ffdbad01fb35eaeb59a6b58e05f181eb8bbc1f7cfbcbde84fad7ab247e8d366a9ba52eb71a0699cab9c9ee2d54e3fbb692f5bceb6af0b47d5477dda2087f3474f31fa0e936e5dcc17db7477b7590c2f6dd67faa7fd784746b2d1a4b43cd68c0d83639426d68891efaa4bbd71a734c8e50574abe484b6b97f75fb741ef7ee42427cce7de70ff7ddf1eaee8785920b7caafe4f32036b501a60e75d5dc8ba855fd2b143ec3e11e1eb08705e7eed1db29e39e36e8ed1a35e05b0e2c9dec6e7f007ed19af9ca1983c73e52c2fd8fc86fa2fba7b5831efffc8738d9a05fca1b6d6cc8f66fbb27e0fb221d6dab8f64f5c61e300df852c3edab47f310683df46a811d6d917ced55efcfbd5c1ff66e5df54d31e97b11586d68777929f0341be0a5d5442907e8cdcbf23db0586698a3b2265952dce18a0391ce497a9fb99e539beea7afee877178aec27dca41bf82cc2257210bee553ae9b8fb4bf6d36fac533386c5e328fe8c97bdb7272de6109a3e77bc43a2857e30fc80f6fd24973bb2237213dcf9ccbf4c7aa6f18a7cef154bee0d6527dc276703be7d70c3713f857e25a013dd8a6b97119b5175a739ea4e1f619f4cf6f2e1457e17db014c47bfeb0dd4239b826bdef3521a95e24da57b59dccb06dca7ea5e8e795be679456dff9e3974c0979ffb4e5ea707ee80a97b2356c34e66f536dd4d57d976fab6180d7b9ff2f68e23a67d1c68f5a127e12637e362e8ca79f23d7c85711d5fb1f8297cad18f46bdfc935d407840bf83c37ea92d7c5acb749e6e319ed25d3cf79be9ce7d6b51df3d176ac65317615779efa3feefed74ebeffc5b586f192a9d1d31e7f4f5be1576206b4e6b49fc72e7db0b6761f6097c8168e686d2d9ee543a27fdb91cebe7ff6c2e94ceec8878bbfa461928b51be97c3c400267dcebfa335c9f8a629639ed6c03cfdd5677f87cccc17b3f8dfbfe5dafd25de3a92f3a94bbecaf538d0f87a5dcdee6a5d8df19dba1af8ed728ebc7f2d7455b3c535819657c433499fd3f74f2f92ecc893e349d6bea421f7f079e41ef9747c8398fecdfbb7becd76c361ba5bfdbefdec7f493636b9d02ab2ff4dc40aff1e19b91a4b7ce4bee626e7eba4ebcf5fb8c7de0c3c5026f309771839d4bbb4dd7bd456057d702491be46cc2cecde9fd4c1dc887756b9c3867de84c0fb99754ab7a383387a8e24153febfb255e9d83c17a17cc533286ec3dbe2a612329a0e257c9be5acde46465cfebefef2adf395a08f1e303af03fd0b3a414f684e76560d502fd54c8b750b560a30ab209d91d5815c7d1f35220ff447e8ee8716cd5ad39b6e8342a7ea231df4244e35320de88fc6b467e2cf8bdd47bd32be25014fd52825713bd4f74d7de2abe7d5970ef75d4a2e98a134f93cc8f0d1eecac754b6967780fdc5d80ef72fe1fdfe527df355e31312f8ffb851cade515aee9da0e7a65706f8a4ce1ead1cfc694886165e89782784470c0e59bccc996f067cdc9f7ea377c9eee3796897384a7e7eef3b9f1d98dbdf38c61b370962f8ba76991ccc79fb181f776a3c1fbaa63250db8eac827577c77097a5c7be17085de4364db75afcc3fcb321b58869c557baf002e74cf319dc49ab44ec53cce2ee32b80b78e72ee43e1e6b201d77fa36afee9bdc11ccde8af44ebb094c5a6048e2bca3595af3cc50a5817bca3b5df7137235ff2ded63de2baf26e5fb2ba7d89fb1c9d73ef78e1f8576b98a41ff4b55faf2d7690eb09509f3266df96f30bf4d9cc1fe5ba57f415eea18f7e4d3e736aa2e69579f83323c5b5c06dc818ca7621441895a2cdb9662c3cfe5e006feee6be037bebc69e7b7295eda67231d3d78bf9b87d1c6d3fb9ddbec7a91b1e708ad6d1ce1a767656ade4566115a7b4ee34f2f5e87995dff4919c6b1fca39ef45aee4fc582d9f3a3ea9d895c3847c7863592c6ed7bfc36993cc17dbf4d366795fd7c4bd043f9a1bd75779faa34f9f77f8d51b65c631900b0a0ff6b9d5f9fd7e57b3043d941ffdb88dd673ede9b3c435b733ee27e2e482e4e3bacc58e83dbfcbc1d341df3dda74febcbd5d8ec8575b6e83d1b65d8eee9a6fbf670ef4977023023d0f32f2a52cd553cfe27eff43f8286483498d3946431b3df69e4571cfdfdd56a76d3f8ee2e2b1e3ed8ceef4e5a87e4977d16f89758c8b7bd695179ffd92cf12a2a78eee3b550d0c23f91246d5717b2277012c56387e655f37df77fdbec4e6a4072f70175d3fde717bcc5d9ffefd05cf67173f1f9dd5f5eebbbade03cfe8e09267343fe119cd3b9ed15bd7f93631f68a23f8f794a35ff0c7fe191c03f68c8e4f24ca4ff1d221f3bb6a5ee19829d9e3e1660f798daa2eafd8bb19236dac9ad4d0b7d12e5e2d467113ceee36bf0bb6c50b3392abdea33db196c504b8207f9834fefce59acedfffadfb40d3afc52e379785831a24c9b998c62be267d533477dd6d71fede54c848b672f5c7e0943b776ede977b82ae5cf70557e1413ae14af572f2e16cffefc666c76c723eea7e6f465b1db16c99cbeeb7df6d7bac21d3d690ffccd7fc9e5ccfbc34197ec45781f8a3063be68f6274f3847c1776f316f176a51110340ed6608f96b19d397b78c9b032f04be47fc67fea230fb31f3d9ce2af2770dc6430d6de6ea774dd7de204e261b4b93e883d337976bad441e1875ac96269acee716f0c1995b6c389386409f7b8e8d09eead0c4ec34929daed4c84d357f2b36faebd33ea55668acfbdea227608deb6dd8738e3abba445ccf1d685775c94633e097cc138b63f22c57a19d900d34bbd5a64d4777ed225ae8e9a86e1373bc5dccaccfb9bdc09ec1ee030714f7cff6c1b7c27ce38f03cd8a8be9ab68d0ef1c3d2d42dbad542c3d1785cb3842da0b818744bf20ee811146a528b642f50037bc70e5ca51a5fa6208fe6edd6f04faacf55bc640bb3762d2e5db6214ffb9d8259ff37bc1a5c7b93f47f53f8e2cec0721cd4b92cb5d6528de563507e0fc323b3b917bbaf3efbf6dc0b5d783ae2dd0e7a7e6dedb4e2f645fe555f5ce67cc2ad99e51a571ed1dd9a719fab80ba3aac55af51b53af675c646b60551bc69e3ba5405f18abb935479c1abf296fecafe58581e5946bcb08ed4989b9407f6af42137423b27d9d8f37c2639e781907fd3c02151a087d3e178c8d49ae46b712657f47bccebe057b0a0777bf0183ae355ba7bfd5cdfefb01fe3efe4f557af92b15b1f70be5daf854f39e7519fefc5cc551393ef314fac5bf5743ad3f5e5673ce04a3c60eaca48b4ccc78d3ea53abf77736922b7055c37af45707683c33b1d80f7d810b3bc4ed1f3cdaa84562166b85c734e099c464e45fe24f36e1d311c06f7c2171ab8bf1badfdb6e13e157f439e4bf57b26db7c4abe458dde99f417920c2686075c30f919e4b766a508515fa4c9f5b187a65c6ba51fe6748ce2a914a56c97af9cff8f4ac9f1f152b439f29db205475329dbf1b357244dd2a0f779e50e2cc347ed0f9d2bdf7b4566c485633dda2b03b88291a0635a7f803e9fa60496d932e58e8e1f16dc1b0f9c233d0fbce8c03ad375702fdc877669306fed54e1ac117fab997f332fd10bbc9d3ecbc6aa7dd46191ef229f81fb2fe25711a0cf3fcd01727d6473ab9ce5595e326b4ef292c129578a73363fdf769a05eec680e7f26cbee6e264be9cb39ce839dfcaadfbae5e25f3f156f50afbf4e5cf7df99eeaf5a305a4a777b949ff2f0b29d05b3d8c5fbd50a0b6473e242defb91b8bfd69e98a023998bd6cac4ac409e9e6dab5b764a7f7c826bb5937cf694e3efb9affe7edb13c17e1f6599849cbf58af2bce7d6c3cbde1f68357888f4a4567d6b5c7f54a91e8a9af66da369aebd45df28b94d7a813dfd122a1e73600c36f9ed72f1345d25e67492cc96bfa72dfd0b3139899cffe2276b21ae734dfa23b2b9b50e576b9dd86c79f7fbace98e673e95631ca5b3fbb87e420efa5660af0ce87e43f07e1a589acfbca7dc07a4401db225678ee1151bf0acf8ccbf5509f43c4f7281be9b7dd48d09ee655809c6f19a5e3169690ffd45b90a97f37bb6fd3f65eb3cde8bd82af244f089c9e69301d77222b65bc4a1fa0e5c032a16db7b1c58fab200f7ad25d75c37eadab45ff42dc5ff6703b3c0e7223fb0e6d81d7d1771fe30400ef35adf8ed62be2670f98617aefeac7fe318a53eddc9f684fd7049d0fb627f78645ed3773f66a5ad6767d62c1df5b70ffef88cead70ba22bfb59620357a5a32935a3a8adbdf94abe2d730d27f7f0e5afa03d8f2e815221957dd923d2f8b71e115aee5059671cc51ba9a8a315872e7a8babf430d6225d877a8bd62f57a3c8f2cb8e76ea6773a4d22174ffe93a5c12e2f7203be076350c99ee69a68f828a21476c6fc99dcabbff5c8e6475f07f8c9247716f318e5a56c9143af3b5e4e81da6bd704561d7d84f1bd96728fa53d7af837e09aadf1bc1d86b2884a3f4c7239b02ae6c9665fc12b448beff1db0d72f23e30c642f11b5aad50f7c9f99945d1dd1ffb850e72f7c0590656adf8667b0a67a9c387c09aed9b7cffe8e762c851c53e20f983865035c19975ec1565e947bf33e25a4fe66dd0e02b0c3afe2d3a1e3aaabd799d9af7bd0c3d423ffba25cc40848962de4cf9837bbf1497e302f89e2d144cedf1090f5c478042e9b393b78dfdfb0acd81bc831e352263acbccd6f69917d9e4f3e5b91ff42dc6ca1f7aa6f4e400b5ba1a730b08f4ff015f3a74b5cbdc504db7a613e6cfe4be2c3dd8afa4dfc159c2f1e683af5908be37f4772199425ca206df08dee788250a3b611d817d2deb7a22582cb3ae85be082cff963f38f8d2ff54ded45235ca35d728735f672fccf7fe83e8dee7072e7d8eb35b072efa80b9e86fecad6167bb78f3389fdac97cbc098dc5eed37ebae497b454cdc7568835731fd0fa50b98e3ac57ea1f89321938eaef6a5463496a15e7bd2a91accb5b2e585c25a1e729d0db05e8a235cd5c2a3773c636fd83773b8d759806335c4fb1e5e982ba8d1ac0035f7473c276340fba7f5591d6f8da56267ddbda1f702b0221be6b0791c68c8dba4aa87fe4d717713dce11a70bf9f78dff7785fe707eb18463f5dc7607c1fdf3d0556573256d760acae5321cedbe1776ff2c7a6c0e566bb3bfdd33ebeb48fa352b622175a8e3aaa906b321a6926e88b12da79298a2c17c5f019b8964d05df46069629f444fd86740bed57e06e3399ef0b3d4ff0ea72deb5e11e67ae81fab522411d07faab905d0abb5bbdae558d5b91f0bde07ffcbe52e753e7cd700e754ccd3175ae25399cf7b6fdc749e6f239d9ddadb2ddd45ecea5961afacbb7df14337cbbdd267261e4d6b2583197029f97fe7ff6c2d5177c1fca67ff21b1025b226fc2b5f8634318f95e9849030cbe91931fded27be633bb8d0f633a1ab68fa3f1db670ddd551e8cf6d15ecd8496b7cbc2a9d8c65bd1dcece5866b1ed2d0c1f5fc21e32ffd07eedd2c065aed3f90cdbd9ad1bcdd68d339c97cba9ad2dc8dee1ac6417e62967e063bad6cb456e9b9867c19d683c81b0a8e63587a6aa36729fcfb107897083e40801cf7ea59ce932ef6553376dfe978a78d94e35e3d601b5bf0b7698855384e8ff67eb9ee77afe07c640cd4f8f92abef629d973bd4e849803c75a34c678d3dfc30b70da2e6a41e2ff17b93c92c96db41b960be353b7bfe3570887ae848e06cf24f78e1de534af7ff199bb07df7d9c348a03dff5874913d8c8d5e8576ccb533eed161c5dec8fb28c7db7b7dfe23ace03f6e4c29571d2a3df2e0ba7bed176dca6a3585b448bb76c171b9f1ce9b7d725dd6aa3cad39ae9b33e18abebdc405a6e2c0ba7f9b603d780c1f88bf1eb45cd48c3f19fa807ae3fe4992cd88e470efea1002603bd2aa7afeafbc62b9c46f157e60a0bc83667000edafd95e3f687e318138a7e0f380e1c838c41648e04e02bf6a87f405cb95f0776ccb9cfe1adbd3a3a19fefd6bdffee332b6d12cd7de3ec35672722b2eb65fd210bc1a3ab828c2e1b307cc83938b28d7556fc05b71dfce62566f3f3166977b15f992db6b587debfa9eb174e5137339897093cb11c72cff91f99acb22db6dabcf3e75d7620f93cbde475738fee979ee8f73cb71a62e0ee58af0fafa3cc11b909e37801708c7b44e550df8d4f5b92edc5a16c085b65e18cf480eb83639cafd28bfb5eecb799ccb55b2abb70b67dc9b8ee25d328f5f3f39e52fe6bfe9932f6a3dda8e151752c51026b920df0338fe08b5c7ccf7e1e6dd5eac78df6b89fe1b1db7bca36a37141e9f8fb1782fef7edf57e78b544d33cea18e71549d06ec82c3796fdc6f5f3263b84e47f126de6ddbc7cf7eb957e2cccade477e795a209fcdf90770878b429402984fa1919f40b69158735ede0b392fcfb9f9f73eb2e49c78cb9cbb9b52724cb3f35df504bd5527f88e5fd1f3059cd4dc5b32b126610e4c90cf9c5bdcef79d07102931e8a4a5908ec1b9ce34b7ae87d3aab74af4854ff49f4ea333cc5b92ec26ccf7152d52721027f1d7ab6fa11f88a2be647d874bdbd6af01e8c84ca49f6c18fc03546a8c9eff9c8694e74afc86ace51a2ae44e5f3e8de2d0bf5bc58438acb8b7b44eb8a0bdb92e8693551fd2b99eb189897226fd4e7fcfd5ce84a375bb4f6904754dc1f5c0b89f1b0789ea2bd44fe30862f260d877b76825b0ce35d0153b3561c616a8cc500bd3c6bc533a67fbf2e53700d27f73a387c879e0c61d78ff3e4f8e3399017bb716d979f3984f7392370f38c4e31dd47ccfc123e3ae9dee810bb71ed21f24467bd2c1557d572ad214f44df1d7b58324f15cd9f7fd617a6e37f1db7c75e79ee494f99a3dde7dae32f5c57f2f7ddabaa33a1e34fea05b4fadb86d6d4f6143b79884f64cdb167dc29fef110375bf76fcd73bda5bbf83e1d559ffec1bb3adf8e1f5ef9e28166f0de92300ee8bcaf1e1d8fde1942d586c17757352a728dfdc554d88a8639074f63064e2991dfdabe22ae10bafb8b9cb98a29707d2afb9ed579ad60a0f2deebfee9b137e645eeca4fdffffbbdd6659b71cf46e6ef873c84760edb817b8890fc44a55cd3bec93d06b8fe0f7821e08442d4946626f792938acf226f8fe711a544fdcca4e43d722c80376cd0e39aecd0d6b5690f7735c6f1f0b5c13fb9b67e4127fc9e73fe6bb1eda4141bd4f0a2be57cd65ed1553e133e6183d5cd5dadeb33ca8dfdd56afeba4464f5f3af52adb7dd61abcc783a307981517e382ec42b2dbb8063baf3dccd77d2bc1b31181a3167db21aabf247a8ed2ba59d93bfcf3d65d6a4db374dd68a3df906e8fb1226a58f5ec8e4db6fc8bfab03db6d988b37dbcb40d3bc302f6528f67ea0f596f03f56366a7e812fedd7fec0d225f8a48ee7f8a6b86cc8bf10dba4113bc1360bd673d47ae124a7f33187749ffb73a3be9174c3867970ed0df9373d89fe609bdbd7f953ac4586befadcffdfe34b195bba98899dd84bb2f7020df5feb2ddec599ec816d8809fd9b59d6ab9d6c837e3d814db0b1ccb57bc1e5e916b19f7a7d1906b0dddd2475d9243326b9ccb17b0c8e67b19cb4ac64af54bc6b5460d63a3c93f4cd837038f9ae239b5a733518c0be0a339c6a17c625777edcdde9fa16eae66db56680a1f6e318e9631cc27e7bd498765bbe15330eb6d1e6772b51cdd35bfa51efba57a3770e01ef094a7367dd67c50d3b4062692730edc9b76ef5faf7b6f8fb556ee49bcd3bdcc7dee3fe0b4f9c1df27b9bc9acf1727c79d3d437e5203c6b9d75fba7e3fff95fbbfc9467ed896c94c7f49b4c55bb6d33ef5e7bb3ed82ee944dac79ab8983e83ff71ddd71f6db29da25c844370f479e1d290da013f0aced783cc3f25fb63afd8d3bee94efd6da7ed7de848ae877a84dd151b22b07460fde7c0c6eb6abfd596c5f2821be2100738e90d737a8ded97906cb722cae5da32155e5f57fc73b816f4fb6d38926162fcf12933e73939f0a8a38e63e6985ed147ef02f5cafd62c9df424c96f37452f534000f0fd944e8a141bf11c8e1fba1bc176154fa61d4707c7ea3771811f4ef410d9168947fd670bf55d4362156cafdfb843969c94f235f0bb5588a136a9203fb3c443f05f0aec9302359a924f208fd1be385aa8ea1ebf7f399037c5f9f578c5d397358a7773dfdc203f7c49157adc82dac67e406694d0f67629737cb62fcec0f197f2476797dadb678091e0ee0935cf4ed19e526f27ea1537985d382d3cb1ebe228e1e58a698213f619c61dd549c271da0572afa9426017a0de058d5df4fc597fa953a8efbaa9e604248d771bc3eabc1675a705d59603be8c14bc7a476548a86bf3bfbeded32f8fb7288edfe4e1e4aab56b8f35af196f4440bae487acd456399647babd7e3e7785d21beccfd57a25216aadf753be13eb723d8865dcda78a19debfb25d8eda308bf32e19d796b5b1405f96d6c9a571f25b96b1569a2f92f6e0d44e505b26d79621b4aae5fa75578f0bb77ee4f3bc4ad4ce2176d5707cd3654e9d4dc57c3beb9bf5dbff7f3193bf517dbbabc5c5df224bbaea3da82d49bfcd5ff6b2d16ab1a974ae8575c8ae0127d28de3ae67bbbbf0db4c5fa7c6a7bf7f61af7698e27b951b5635dfc83bf63897eae881ede8a46f039b7cf295eaffaea97ae7bec5fdd6b552d83970c80275cce8f76e79e1d015613cf3a31ce79b844929ed4dcd71db4dadae55738ffcb840ed2af624c1bde543c5fdc77ebf19daaa0fbc86d892ce36c746ef7aeba3fed5407eb5c79ce7197a8889356a9f2d7ebe85cb3515748dc50a7531859b77af4a77e40278fff1b3682c9db94cb9de55dab8279db9f172d48832ce5ce079c0b78eba2db28bd01b99e3a62dd7be4ac5c90cae1ec4be13ae3f441e9873d332bcad47d274bed8a64fd370311bfe46bae66fd1331af8d00af92c4cf2aff25a3c24aa9666e12a8ea55a069aa56a6df6388ef70eb283da65215df866c0df44b9d072332699655cf5314eb1cb8debb6d56d3cfa3ca79fb5f0ef7d6df0d3ea4be623dc4be037925ca037f16a26a2dcc09e72d67705f66a7956a3895cf9895dddf53ebcce85ae7fd0fbb0eb91fc25451c72e5ca38b17e0d531f5b8ff369946ac32afbc4c45df8437dda1f14466dcbb9e4a05f4ba3d2bd30daa367de3bec39e35a44c47a1d5c0788cf58bacf3c33bd6fdc63bd0dec78c5f133e5ab60fd4e9f69fed59c6a811d1b5e38a5bd44fbf13a8cf86a1dc66d7a615525b3de670ddf7f3c763de17e3b1da71af696138eb59dd673ede5397f1bf74b3ae36b7b1c68edad7a211bd56fd9eef7e5bbfe359cc2a414c885d2ebf612cf52036b881cd54270ef2b8779a903c4d86ad79e947e2872c573d270cf0297ebbb9937424bc1d193e7e0af461ec9a135cd9c0c01f091cc456ae764236be0db09acca571ca82214a5800ea06b3a3af313592d633a23c4f8bc826c623ac651c73a86578806f6f7faf43c740d8ed57988ffb81abdfaccf546f75dca56beaaeb23b72ac886a67b0cacd6a76b82137c43d76cf02ce05cb11a1c63679dad4ff6e91ecf524cd4bd273856ed879568ac46bdb6ddff38bf0d4c085e7de6b7d0992bea7d9f9bce8e261f9c639f64cbd36fe357af60de98a4bbce9a6d6d01dffe309eb5fa4eddffa4bb7f53ddbfe615a2a7c643c7188551c9e7113c2e1c57820f22d00313b8939e9a2713df212f89ef0cd482b24dafe13b60611c35876ec3f322303f983bf6974846d4bc4e203b92c6bd51f71c7663ecd6eadcfcbb4ebed66a7edb21c73fec241785e43ec7c82b302f952c923df63ee44073f0bffbf6ea0bd783ac5e45a319cc61e0a00ecc45ff667c877edd1ef77750f78a7a5a96c1c0ea895da5787c64d18db9924f352f9b6e5e7e44ae7a6a5e50e38567a3f950f2735c2fcc09047f0db29b011b80e72db2f6b03e826e7d6c4ed707dd37f7460dd47d809357f9b2bc86698e4ed662f2176bd8a173d0f54bd1d27390dd38b1b80ff6614cc9ef7cf5e0ff2639c798dc867b248c8beeba87b92d3add41e7e2eb726fe24e2671dd56e90eac6b71180bdc8b7e18efee395113ad9e9765cb505c37e7728bb5dd5d1f58ad16b269549d0cf412e68ee2796973a5ff224bcd1d8f2f74e661bdf1d8ab754b3eb2fadfe8e4845f1db5fe845a7fddfc41eed4b9364a8e3a1dc27ae38ca3eeb6bcfdf0dbc3fd6b6a8e3f7147effb0ed56260714fee430d92e211436ed129b9061d5879fe1f38d161c15c62873cbfc63c5dd88f55efdd8dc2c6d36fe8bcc32fff587fb4d055b601bd6e19538a9e2479cdfcdce44b70ef0360f4115f726eac6f89ade5282e3363fb966eee768bcf9cd6153c699e8b02fda15e15f71b38e985017d0cdc39f42b7c2847273dc018b155c1b8d10c3515a47f192b96ed852968bf330ffc0c0dfcb9ab18f3e55a9d6b6d992aee887a63b9eeb7f8ad098c109f0fbc721bbc57f5f4acffec6eef429ca0964e75d22705f52516d98fbe3d7c152463e8cf8c57d8a48c871e7f49594feb5e31d1e2c2d19310f51e5c0fa2f21932bede8bed71a069ef8e1f68ba6bdfbbe087d5aa063d29c986b8ad566ff8ed61ba4d9fe4271fc9951e1c1873c4bab73379c06e74580bc404f77298b45e11af2e6a79b8be6798e8871ec0d7e35406e9a3c016a59cc1bee8712da765328fb3a3deb3ccc2b6618cc8fef0b9963771e15657f9a81bcb629e932e3e41e767bfe3f07b5e5f88a7f81cd728b94ec8add5fbc62b9633518c5d112eafd59b1a5e387d1681755db66fc3948c9299fcdcaf2f7a0b308f73a627244f5cc7d5a85e1e95e254ee3eab1917893857059d377fd9cb75bfbaf1b7ff997eb6c1493fdb40038726f471b151fa38021645e13a1bc6c638c0da703e49531852f62bc0576b80bbc764fc345e554e49d59634564f1a826df396796ec1534a7e3bc7098c93fc4fcb75b6dc5bf736fb61b14a4cd597f9b396ee70fee8297e255d4e6b61315f6cd3dddd6631bcd4edc7fab5eb7d91a6577b16caeb3d0bafc6fc81b1a33d55cb75e6478f3b7e74151b1e3fcbf9b18e5ec689d91d03bece75df38f2ab38467ada372d38e557190b015cd72657f54fcdf173f2e5698dc4b7c59077432335c72fcb513c48cdf1e693b7e75d9ec980bee39c2d7482c7f5f5a56f3b348f3af745d8daa42710db6aba5822f2c5397377895cf5e16ee1cba0ce8de42e47df53c6b1801f18354dbe0d6c0d6aa6911b76c09d83d8a26419d0996b7b6c932d299957a7255dc7fcc4e88b4aefc1d14076a8ba66cd312ff40fe067335ff6a8511ee01cba9c556c732346a2952212a657a0f797aaaf9ee422ecfaf2f1f9513b42afa8218ed433239fafb31e158869a1969debb8a0931f318e4b9bebf65043d2f3b9ef404faec9fee77b9433d1f14aab1a65c461d5ffb0832ce6b276c04f2edbc95e3696e23bb815b3b3582d7777cde3fc37ed1ff88b7d88952c425f29cc683369a34e8e208bacdb5cecfd3eaf954e0e15bf7fb73e64d1ad2fc658607de5e7eb4b70ceaf513d2b069629d72772dc9ccab6db70cd10f728a56bc3ee6d2c9339ba2739f94572ad595caf8cf895c6fad8a567b95566b68bd9749dcce4bf3f65e6828b1b7d72beebe3703fd85da5c14f608efbf79c52a32bfe15ea4132f43a52f8d567f174d87b9f19ef9e37cb1b7b504e77dbd7458cde58bf2d16e3d7726ed12547116a7580437e4ac8aebac219e6341ff04ebd22873f7f91d8cf8689f668af0c39cab565e13481cd1cace4272ce1afc2f6e69a70ec499ae6dad3d60b27dc6b00f564d31974c0a5df09fe4ee447341f7eb5285147c6987ae834cefd4d98ef434fb807d736b194afacf26fc8f1e8dd1fe29a2aee4e7b22e239effdeef6dc378e9f6fac991d3dce6a6d311fdfa7bf5bcf8c11634d03fbfe66dc17fba8117ad0a3560235a7ae8a190bf52a0dc8286cae432fc55cccf2e6a40fe6b1b7e23cd9cb27d17a45d6209f865c44a6016fd86eef499ff903ab873e14886f305e119cff815571ed61de2a6ecf96bef3b8ef117a79fcc778266fd083cb51dc84a36dbb7486bf2b57d74c3cbc1c3e439d1e302337e345b89e2ab048c64ac67ef63b6ef6ae5f8ea96a78dab8707acce713e987beabc8b1f7eb47d842c3138e15e681629e15bc072f8c57f49bac5535d30dea87b84712e4736a8ba25f0aee25d6720f76b2b569bce32b3c2d7cde00b1eea1adb88e73e6749858783fc3da6938a738d138ff981837da502fe96e3a4eb7f7ab4fbee16bfd9e9d9e5744bdb858bd7a2178c97f991b90e50c1c528c45e11c1d7af370dff849cbfd7090e7b750838dfd7652fa9c333125f73169bc2233988b8cdebb1aefe5a27b9fcb40838fa8f658f613716f88b9b41cfbd818dcff97eb1c43fbf8dcdf38bed97ed40f396b05d77d0cfa2d7a1ae3bdd676fd8d554f2bf4abfb05f90c16f3fbd7cfd8f3558e0ac63fb739c7d18a847c75037e1df730d3e486b980c52837e262caf53f2c13958cd08bd244ef787e55715827473cafb174d190ffa0b85fd6c01080cbc2b517ae5c5bf50472d671c339b97c7ad94bee6dd5f30a077508b40e24f78d52e7cf4a1ffc87b426a2d29f392ca75c6ba791dda6e289e827dd71b9319e0ccfb63f3cdb00bd78b465b178c533612df4755c37a4f5d1bd22765e83370378e3a88b67f47ce861f8c0b5ea8565f03a70557ee6f05af11acd75c6f62c6edddbcb851137d9c3f8e577f5717e056fde6103a5bd54fdd4509babb05ce4bfb88c71d9885ab25e6a55ac967553a8faa7722cb1e7ab58a28f5a980cdc8d9c4f9bd4c0db0cc07b4d72550a1bbd04d1972a092c1d78b7b0afe4873133b258d912bc82f06f1ad7de308f05c703c97e6892d665ff06fdfa689f9898e0f6e2ba3a1d3a99f140c8d388067846431ac07a30be83d7432991df46ff12f081902d9c0496463ebdb437bd8e2f523d8fe9cfb89f35e7bc5de0ea38172a4ad9467bf46bd0448ff33278e65ca02fa8558946e5ae512794e8a883269b89f707e3c005d2a0361e3d4913701c1ed66f095f0fb802b755782b1d634ccf02ecd378e5d3da46df3b7e5579f416b834e4ffa705739864bcd6819d63ce109a433f503d27111f4d54ce14b699091d017d88bdadf23b3c57d1e1c804b07edf76744e5761c7fa66c239268dfb4482ffb3656c1b7a415874efea7e5ad6139396f5a9c3b83fd2236c0f340276425fe7be1590c30a7c2b8a3f143dfa30a6f44c11c778b9be4ba7fb834d5924e8adc9362573788a76cb18c1ce1706663202f724bf3ffac7aaf7abc6fc307df0810aeea1a1308a3cd632cc72ce0b263cbf61a68e61fca6b27f3539601bd62b3293b94c85e21dc55ea36c19f011759f591c0398348c6f032608ba169c868cc954187d575318bb16f287fa44ab667ce5a147434f8d5d83f96c1087463faf43af45b6a11bee7188fe9fa875e5fe9c78963df70755e384318b69df2c818f09ac2e7ea0912ca9e7d5785cbafe9c96c9fd9d158f0dea6b5de80fe42be9d9e9f918bbcb76903d51f8e20e6f1cb58c2b8cc0f7abf0aba6c208eacc21e59432a4798e4c8c13f2aa59a9f8fb1af837e00c9f703ee4ff63efdb961367d26c5f49272aa22e31129408323580008b3b232a1204d8156328243dfd8e5ceb13609beaf97fdcdd7bdac385030c42082995f91dd6a1e81782d73b12abe888666d448c30fd55e803493e5ccd7d62adf7394eba2b5d0555022f2c3e9e38f045e437384ac6bf99e8bb1a8e67cc756df185a4bfb0f4128ec9a9c6a30e0a7e90d89eb5aa30070e9c9e97f67c730c25e9a8b6f3a95d9f93109a738db72639f8760eaae88b0c3dad50d9315369c428a6e6fc31146dd921f13fa9d983970c2dafb63d2f3531e90eb598ed5cb796e7c013d9583d0fecfc20bedc075d806fedb1c6147b82bf763157141bb9eeb1c7b109cdd023e706bcdecae02f8a3e8f3c36f3775e639d4a1b0f113b7723e6af9271e0b19e1e53bbb7662e404db21858630dadde4929cf9d26c6217e973e8cf43143dfc8c6fcf4c3a537794d6ecec681266f738d7e28ea9a312eaae43d5eefa63e0c0cfda6669d19dcf2d37582c610f0be86debda1e17516af3ee81114584f241f31d4f6c5be26cd3812cda8a147ade15ce696a0b239b79db3c167c77cdde05c273877bc0e2a18087ee046afa8ded3e328cdfcfe763ebb63b23ef203472fca3bf7f3cfda51f4db9942eb42cff48f5f5a77da81fd5fb999f3b64771e9e5df7f417f3fcd4cf203fb203fd8bbeee9a476666fe74168f146c62187baefa9abb57078ba7da306eb2ad6cfe00e56d35b39a3bb72f5e46fee63e2b4ffbebbe84d25ff9d7af359ebf7dc1ee7db1cb8841f3734f30337e981db50329e8b0f5c9b70df1f35d6acb6c7390ff15dad27c752afd1ef2ea98f2aef8719f5cf1b8fec46bb1d3acb279cb37bc64a4d2e7c8927d730ceee3b9cd4d99378e3f827bd5efaa4bfc3925ce24b2e8eefe376e6cc977abf9d73a1c1fb763bf1673657b67bf3bddc6e2ebf3f3e66988f6389f788cfd563626e95732ca9e79e1d94a3ca043dc1fc007c03f27963a8ad0d8f5c7ac85781f749ecd5ebd36cf9b28ccad56277cf85dfd520c1b54d66a64c1e310fdac7bdcc8d36b6a147becdf73ac0a196c219aab85e1a47c689e43d86eb617a5af3e5fe328ee8fec8188aa5cee8006b9d02db81fbc7b3df934447d7c6ea369648d2e9ab9d8b598f54e22f35418eb5b43175ba7cb5c70aedaa4ee0dca8f3d85bf4b6cf4f3f46936cb6df2eeefedb1f7afe9cbfb62f2add7a580fd3ad78dfa196eb0fe031312fc89b740e8ccfda1c1f85a187025ff3e8d1b881bfeda2837a1f746b99d36e248e046fce488ee688fe2ce35268c73ae5395f677e0bfe37e2d5612baf4f794c4b7025fea9ee5d98929edb8dcf3cf1a48a9c3de48337cf358f0f9385d35f65deeb7dae79a741ad1d6890bda86de653c36af4ce6fb1bd4f7a17fa0d1d8798f62d343d1cd18990f88df3949d5fc48bf1ba2fe2d8f14e1ebc3b534d0bfd8d7ad84b6aa379eff42230f7b5f7ba078fdee6fba831dab39f5f725fc4315ff5db6a3e93a613fb9beb6511555774052ac691d399a697f05e8eef72ff25f4de2ef679630cf92bef8e7e8f9efbbfeff5e02b9ecea9e678a24e10f558e5fa8f43cd6bb16e4bdcaf2ff524c46343996486b1013da29f3be1d9edde8fa1e15ea5abf88d4649a7c1313fbcdfef8b4a1faee3a666d77153d2ab684d8ba9fdacdda71dff411cce5fce790c8e6fafd113177d40ff569ff9f9ebf271e4cc1ffbf00fbfaf99effb67763d01eed7cf1afe7cbd01de987db4a65e075cae4f5ebbaa0645046f04706d5183453d11fe5cfcdfb8c207260fb89834fd2b6750e4aca7b28f849a52021d151c4b3528b2565e2bd491b58db550b7a197932ab6dfd214ba55e416ad0317be805c6b0dbf4b819fa1596fdc9fe341873cceaaf19452524f26278338890d39fdc0150c03a9f3baf6f1a963f334459e5d073c0d70f935b8f519f9d0e4c0131fb1669f9931017a10e073a8e2a47f50a3ae865a3aebb9d051402e9343f394fd97e8a0d37679d1e370111bec5453d7945eb673d0e0862ba99346e4a954527b4b7368b83206ce03e92795c283f7190f4da86583fd0c5b923f19e1d0a28731180701fb49117b1921788a0e6b7f13e14f43ab0dfcf7468b41b13ff2c1c767504c023bf6b0f680cf025eb79374829abe2ee81549ef5dce6718d3779b3da44ab187e526a2aba0c113a747177814f6b710b377d0a95e0d8ac951f1dc5ef498d83b8066458abad95ef8ffaea6c686d4d6515bae113ba28fc63a336ab4e895a006ef26f448c2b5463cb8660f0ffe65f63bec9801ef7d42fe27b8f4c6c338179c036bf6430f3e2735c67380fb10b54a682fd83ce6a08a65086f9aaac1414b9e8efa64a3271230beb4f7131ea1938f73ce7117b8e833a0376d5ac87bf18871e7726cd8f1bf2d246f965c9dbacdbc3e1b193f730ffa7cd03a98d09f69a65837eeb4cb987505c3dec3507a12c6e65f766cb7a0078dd8d754c4fd28c6cfe353fcec491dbdf1a4f344bb20d0ecfd04ecc5b0ffc81e20301bf03f4ba98f8d3e5272e28f4f6af6c262dea7e83b642d9e7fc4f5c49f408b22aae92ba3e805d3f4fdea21cf4584f7a52f8b47f4d3127016e605cf5d9b355c3bced9073b24760e81f680e8f4d93195e69ce7c64dbfacddf4147cf1b90ba4afd9bc26d842f4219b9ca1f15472f97df63c36f7546ce7e1a6bf233a2319e773d6539afe69452c04fac8ccbb3b8e3f48f3bdf6d59efe7e9133b0792ee2453baf1b70e0121b0fa05740de72c25e0c3cf31813b74b99a3cb069fc8be61730df280393b6ae715b50c4fcf39be31c7b1df447ca3683de0b5b8969eb91de7bc6f6cfe85b1030dec46f784c7054d959c9a10b5a2a6cc98f5ba930ec41afe11f6fc617ca1af6c5f9baa52af31fffbe4b14c0c7bc199df6030396f218f03ae13bac4450edd1a8df5764e8e4f181bf673a08920fe9a1bf1ffcb797eabb6477d5a83318e7b873df2a68f570bc745f441e45e58073ef590b34342ac153585700d22f406b9164da44706ed4e3bffd97b4dd623d4ebc413109adca570e731ae86c8716dfc9aa356473d9376094e26f4106c2c6102e132069843d388dc1ce1dcc3877b7dfe3d36cf3e7b0fe6eed9573077277554938793db79905e93f6be4839f7d8ef654d7355d397300f84e383cf8b0e34e70f0f63b612ad93bdf4506aeae0acea539f16f7567e50b5e198a9cdc55f2e73b6e29c0def106840f982636c710ee7fccc31c11ebe9eaae0fc5b0c3f038d083b8ef0ffffcfdf71530d2bdf4db743af7bc8bce9ebc2c6a736ffbbc7e4ef6372f0e95564dc69111da90138b4d7ea959c85f9b53ac2cb2085f63af22768526efeb22665a57a1f3429edfc5f2e3a8dffc7841ce435bc986bf15b7acf23ad58238577bf9198d669fab517f57b7750648ef8b17e4ba1f78e5e8070a23ef807db398ffa8b6164d0eba4d7b077de36171fe1a1d1c42039f436c07e4b7e3e966d1acfe1483c8863f1f36b7cfd6ee4edb8a32a9bb56a3baeff43bc852fbd7f8d8e4ca9c0b173eab15d0faef625af724b5e92deb18c43fd425ecb074ef3551d11fa71c2cfe92fe17889f39c08ce73180827b3e69ca715620a7a7cf988e1990348ff67c89c07fd77b53fc51335b011356bf911724645ec978d17ca496df3968cfa7ef61c55583f2a35b3c7266be0baa91b0f1de6b231314713e353e7222f9fc2e14117ab42f267aeaf4556f27eb1c7d70f95bd37e93d68e3bcd6a030a80bd32b7bfe6d012d2d60f71cb5b37103b0818ed488c9d14d23e2a5883920de0dd80475c27221c6807698e1b90107376f51177ff96d01bd1865d797963af154cefeaa71d88d553a7a650e3d610f85e7d05e8f1271f9983a7a38175550336f38e9d7908b45bcb4683b6c9803614c050e73fd7eac8a071ea307bf2e57b959401f9ab8b5442ebd7d618c3aa22e2b79bdee938dfbc2d10577a17dca399745e4fcab392f7ff23ff89bebe58fec71be5d7c4ddecbcdfc3fcd3163634d2f991dab33ce2996783baa35e3bc92f389a9a98914fb3f378ecde702e665a6d20eb47a6be2c736c1026bd2841e80c05ae373a2a9a4bfa5f016693cd22377c1fd06b25d2b7efb79ffede7e3c0c6b2711897a8addbf17d9b0ecd8ff9acb5cd77367e6a3d4f7bdfff7b3e6bd5f738eabd2ecda8603f0dbd7ee6c829fbf4a82fa6c6e603016269cc5f93807d7c3e1f605b27f8b9736a7808cc105bb9e370e50dd269acb759eb299cc30febe7ce091a0c1e3d4294015f7ddde4e8b18d9b5a71488d58c9a77de038c66d77d1e48f766c4f8e65326e978b503471ec768fac9debe8585143fcdabee39adea8b1606ea70a5cd974fb7a91abcab676ecbed9ff6de3f071f490ff68dffb356ff160f63abf0cd2d14c39a6b52ce6b19e1d6dbe6e74e5d839c8a53f40ff45a523f13fbaedfc3fcdbea626f367bc1ee1473b31a5f2334f3cebd04f4d26e0ae1d50874d597b643c30a2bf3cf5f10cb98fba400dae83bad08987ab36362f120fbc0e35fdc66174b4799af8e3efe94dec948314da9292c74c67f002ed04ae1d0f2a9d37ba01fb8b7ddda8ddbfacb2d95d37e49a8e286a67ceb14c3a41090c1735443cd42d8b769d42bb637350e085e5a8dddbb85cb43950af4a5873a9e5ff4af78e2eeb68c383aeb5d263f2606e5dcbf35d7763d7f1fbf57befa1b23ce9dc4f8ba578909a52b30fee5cf4c17df6bd470d26c1790a053bf1437add8d5f30bcdf813b47cd7471f2fc128f7fa93140e31038bf8cf1033c828d51e9f415b94c0afc7ba97de07989cd4de776bebfd13b6a592dfce971ea7dafeefa6b57fc08fff91a7f3aa146e9159d8ef6fef4ff5a349fc2e818875847ecb6c1c7cf347589379fb1fb3992633541bdf6ef7cd72d35a8716ffa9a477abb781e6defbe961f34808d724e3caa8fba31bdabba317fcb5b65416e30e26bc41a156bae0a3d3d7a41d8e78af8d4237c2dd95f167dcb8bf7c78d4e7044fc047920272d4cf142f012f4fde5bd37fb997f5b80ab12ed751538389e1a7dc552f0d2ec19106b1db0b788de72a9d782052962d16617afb0b0fb426fc43eb51b802768139f586c9a1e792b414f59384bd0e07244a7383a246926bac7f02163ff55386ac4712862b11bcee05ab006a911cca6a12e6c4fd672fbfbc1e56c03abcd9ca70d9c066ac1d426f0e867dbf0c4872df651147112e4a33aba13f88d062d7866761c54c1f1c67e473c9f95c7d49f3a8bdef6f01f5213fe37de8f9151e9ea3deeab1ca49137ac335e2bd4974fcf85a7c079fdf28f793e34daf72a7d48058b73e62aa01e17051970ba4368744a9edf429eff4335cf4d825a017042ae8dfde2b0d17e6d43fb35f901dd4d78faa3278e1a39b97ec9187a502fea8adf755e9ffdd9885da23e04f9c8f0ed169d717bffaa86af8c3584188ee842636ab8bf11478e31798f353f6a0cfe0bc65c09bf51e676f442064e13780c5fe2cf03eaec1b055f0cf4f9d7c083dbb141dd49f4cfa7d49a6b38cde8bf0c51e7217625925aa378b2b00ee46555506bc11a1173663c8e73e9c77d5cc3eacb7ecf386cb4ef63c6c8e04eb79d413aaaa95996b7a0c9d3439f20604f196b8cc75ebee89bdd961bc54fb3d176e27d77f3dd17d53ef99437580cdd4ab50e0235b9f401e8bf2a6a8fc14f6a986e80a9c0381b9ff0dd25b981138cd92b31743528da8ee08c5a4abc38f418dea6e5a0c8bc45e353c5efbae05f75158e0971ad017e03f9f13fd6d32ed9d31b961cc712a780a3dff616a8a16c9c581e8775e4d8b1dce8f4f05e414e70a4ff467c243f6d833eb34afb0a9e1ec4927a57ce4989bc60a7feecf3c25a58a38f813e57c21e96a7a14f3029259f24bf289c3fe82a0874b131cda3f4d7718cf63ebed4ef6eeacdfc2cce49c5fb7558121328e7e436ddbef869b67c110ed1d7d3eefba7707831c7ce94678885877e77e411831e8bf7237d82591fb0f18bfc9f1ac10e2c6355743de231e61eb4803a4e49dec41b5e8623d8f6d36b882dde713ad234371ab87d4d0cfc063183dfe0e205cb5fc521ebc8cafb98c3343e93a851ecfea4676acc3b6e875655bbf514f667e487801b00cd53e121f8728e9c4113c39db909fb043c94eb1882dbea23ab5f736f253cc9bbbfcd351f423b0e93e8d8f827d978b5c558177d2e797ec2d4005376fa9cf065899d69d3a38bbac76e22afe34ffe6fde577cbdd9b7c37dafde782ae9eaeca9a4ab4b4fa5fcaaa712f808979e4ad5a5a792dd6e257d3dc42f01f5b036983bd9d7dba0c7c758bedd7823343dbe4ffa24ac7ee5fee877febc9d2cbce5f3a2f7757d313fe3f53e90b951d5cb57c6a739ea0f09eaa9d4c780b60cf56b0e09e62fbbb6f60b689b42bba54d1ec698faf2a225e2fd84ce2ab0b5f518ebf1b4181491f88089de13b4c9a055833eaaae877b35537bf1a0f3c805111da33579136a1d106b0a3ed3f0a0e16fe85c1efb1ec7034f27ea94d07b7de4e1f7ec14340a157dc91ce09e79dc079d02e7d6a2665024da9ad0aa915a4cc4be91786d36bc66c613b9134387330e6cec421d2dd17c4aa18f648f3b406e29e71c9c9871e0eb9e6aceb9399ff3f6c7730e4d50e172501b879cd87540fec33371abd02c7033608ba48e06ef491e7740dd94711068e0c1ec791f1538665e43e8ca5187e4e27aeea023403c3ffc0672e16c7781495667cd297269799e2aea5dc5fe42f0e3e7ef9bb444cbf420bc0bf070a97d33fa96dab9a35026e904ade6fc0e527c97439cb473d0c03a3aa73174ba5e45bbc57305dcb9f0848813518ff06a3f9063d02dc42bd19773699af3da5c33199746cd947095361ec71535769a31f0843810f9e49ef8aac941d5f3d746a795e393da5cf677497fab1c5047fadd797a736e1d4d8cb71d23a6f1c5935aa20bad12e082a1bde5e0f3c0cc510b2ce934df93f1dc324f14ff5ae841f8cc11db656673e3aaed0f0ae14ae07bd4fef43dd44b2ca1ebe91d1bff8b32ab027851497e21bfedd22777f9da68c6e23cbcff9ef105073bd5f61eace39071187074b3a3332862c99b36efb424d481da4acbd98d3e66f1d3a376167ebff52573d7cfd45baa769d21ee687cc9d09f2f17d053a3ef4242cfce524747c42be310b8e79a9c4168a7ef71add3652ddc935a3016cd73bc9f09671fdc8b8a7509d6318216c76cdb93bcadf1ba79b07383bd0f9a47d1d5aee3302e2f8fdbc629c90f1b3f47463f66ee02e308ba512e6bc9a8c3702c5197339816ab58dde8c33eee7ddfcf27b84edbf91d17f8b14fe81c9d38dc7a8a7e487bed196f592c5ff434bbd15773f57b31bbeb42bf8befecf11e976bc77b0a479edec1932a780ab5c2359078fd29d4dead7d9385dffff573f7fdb0ec755f27fec3ebd3e3d7ac577cca07a3125d9c1fd0e5ae97e8f721f72e936ed63ae902741c8ff884d54c4fcc8d3ad4abdfcbdef475e895abdc575ff25adc7e3f34d8908758cd8edea088a8df177615bcd72af1c9a2d6572d8fc423ed80e3acf5d8c6c093561aa2ce7e7c023e6912a4e0aef45fc90f8ed97b222fd2a8b4ffca5e6cb6072f6f72acb8beb54be5a1beeae8de51b40bdbd4bcb2311f7411f32aa5f7901787316a44ba6a075c074d354833c1f54357d825d7353ee8741aab7479ebdae5e6bbe56bf6a8eb516f5b67b3feeb7cf635efeb4f8c25a37b265816ea20f8e180f12ef9b9278fccc9b1448d83798f4fcc818d2b1ade5744dd29d6ffaa013d5bcbb4137889e8602e427320b68dded47a77a4277ad88df536abd4ce94824f2cb577ac44ffbbf1dd3ec5c969881e54255eda763c1d8991c66fa8a8c115db7c53299b67a4e690847aa66ef40579338e66ee71f9e36b6a0f7e666dd0e06acd5fecf848e9ef875c917a3d47f4f062bc66e70de34d8bb8d1fb8106c6136a015df893ab74fe8a7e33fa7ed4d516beb4fdac5d6b4e3e49ac014eedb58dedbaa4aac0c6c4fcbe7024f5e229f7275e4bd8863e4a9f1f0fcfd3d72fca97997d22dff2e2b06fe3345c53bd3ecd1be843f1dc0f4da33f390ee7338578a10fdd8924ddbef05a63ceb1f3c49ebe57a84fb4ce1acbf6b351302dfab1beb147b5fc31fa0fc1265c7a3e414b02bd239bc3dafb4e8d03f8b40e8ae98bda66a5c63db68d89ffee7f5b0007e81cf4cc94b85fb0ae3e40fba3792d9918dfcee3d0010706fd2156e9c86edbecdfde6b763dbec096737bf27bed7b2b7bdded73e2cd77ea9088e634be1f7515f04eecfe4a62d8a10f83d7c8ad27861eb5f7f519ab0e3cc3e3df1d93ff638d81d786f35f536bb86d5ef83172f21ff758f55dee16c4e10a5c71bda3368c78d255bae3b8e0dd4e15eb2bc510da12e090effee46dfc70d5db585df736163d9a6bfdc7cc24b3cbef68deefd74ddf9038aa76f33d272c26fb42a8c5b7c636a6999ef8c63eeba3aac5ba346a44524385eeb67853a0565e332e2287f5561dbbf1ccc5ebd9ace58c7a53ef69a6b7f9d7c4737f663d02874d5dac29eccd80abbb17aeae7073e8f5f05e330a5a42c45c9703f1d01ba45d6f906edf7a8a01fbe980779e3cfed2d03d291e5e06a99d0f972ffa31f37f9efc42fb2139d7b16044a97da47f64a5da7dd047f0715f401b7275eae30fcefdf16a5a8c5e30ffa27f3fbad4ce23ff7de7eca905d5f699e7cd5f45e3a71e873676672f7450e4dee0e40bb0a1cf02fb21813c878e10b781d77c9986914b0e9a3aa850df38965bbb85f3dd5df6ca5f8bddd7ac817dce8734329a58117abefa675c87269e75af9f7fededbcf4bf1ccf7a4bacd65fece6bfff3362b52f81236de22ee09134eb7a01bd0596f41fbea9aeb73de43fa6cefd3abe5b9f100bd87ce63a86695a6c6d5cef20570697378297ca38d48ce51f337833bdd14aa10f57450ec4caae0d6fb553314ed0ab0a6c7caddfe90c8b67831d0b1e736a780d7bcab139479f7aaab7f529fb8be7d176eef75718179bed21f747d572c6b5e08bc62fd7e7fd9dfe95eff46bb36ebc1d1fba39e6526de57d7f2b635c1db47c06dbdbf78bdc9563b8726cf7effedbdc2d6ac09449a44afac246c467d818a7423da38ac32e75643ad0e4b1319ccd0fa081253e437b784cb17e65ef512703dea21d10dbdb0e4e311af01af426859e103dcd0ee4846ef6f0752b729ba33bd4a5c37ee9d1c6f7821cda7dc05938aa0a3c0dfdd81c7fba38c56ed022d527fdc1a0423dbfc2f1d53770d002f155f2dff25bfba8f3aadd516203259856e0a0036a27999ae731123c5fe49393b33924699f7a43d43ff5b5e85d8ace9cafa1f729ff37aff1afd69de6393e03ce4bb3ddcf1dbc4e4a1eb372445fcc611f0558325f8ea9a6cfa07ebda83f576968735ad4b104df87df756bccebcd1ffbced0fbfebaf0fb5f5353e5539c037b1d868724ecce54ba2d905f208f76bcc6a394fe7da6d1ba74e135b6b6d7a67de23b419b875855675098324d33687be92a70f546c1ff149ee6e37683f9f7e2e65e4f95d1e4ee3a097cac27f6de95fb3f2ef39af1ad5adbf8363f24e152382ce03652479a1e5db58616ddc46ff8fe1aaf619f37fa4997ab6c377dbdac037c71fedf67ea00f04b4c26a65e84c3831e3b7e1a2aa367a81f1d7421f93dfdcb3887158a7d24e04bfbaff473cc0d74a2a187adc0f31e90832aba6c593d288c23f9b60b9c7c3a7db56364905223473bc61b147c2d0ee10feadecac14e7bddf57c56f6178f36d61aadbeaa9fc1e7b00bd054096cfcbcb06b4d2738aa0b7d68f181aca96d97d5d0318d8e95a26e74450f62e50fa089074f17c1f146fbc6cffb74ed8947dd2b68beb4cb147aed43ea005c1cc767eef7f4abfaf17c6aad50677da9d9b18476a2036d2beab0d05be432bf3ac531d362d9d4f1e8ff482d79d12346cfd9e8def1ac7b088d1f70d4df8f8d105ab6456e44e3bfb4eb91aeda2eb515a771d23b029b819cef46ed4fb9e7ff6bf9387a7d9ab5be2657f133f33c70bc6d1b1738436871c43e71cc8a1a2bb83ee092b86938b1d7eaa826aa860f3a71ceb5dd3ec1e3f27ddf41b46c63e6d8f0c66b97c95f994fd64d3f1c3c59cfc6eda2375d6ac7b8a8ada4dd577a9bda63b36326f23f3357dcc7c67ff0d8b8f1ba2f764b379b2deff3c247ad6b1be34bcd34ff53cdd467add4e6a01ba3d287f054232de4eff2ffb4ffb6862adf411d9e4d1d87f317fa334f57d07b42ff7ed2c49b47e6d44a7865f307e9d104cc5fa0cf53dadcc4e617c26d661d817ec26583b323e66e52b3de87be620b7d01bb9d8d6fe92521fabdf48c167d961639c11be13ac576ce7186f5105c7f681eaf9117c12b877951bf168f965aa37ee0544ff02e5815e2ff0ece9322b7a356cd737aae78f637922763cf77e4a066d2092afdfc6b2f359417f81dcfec3e63d3e8d3f0370ad7a6668f416f80470bc8c3c023f8d57a4c0f6c4d0d84961e3bc1d8dee7e16aa5aba09500bbcf47724486d480e13e4b7044c6ede611f8fbe6dac8752893b13dc7360f30f42c580baf1cfc5df1ee9073fb04ae41ff424379283e07c688f763c97e1bfca8bfa56924def591330e37075dcc8bc6639c9e1d91f884c4f23ca6274561e00fade8cd5cf2da9cf4a05b832273edf6279f20f0839aebe2d8cf8a8783c3f7704d6297dcfd7931a05e5079f63b8d999353e3bfb6b9ec53c8f17e652c637e23276c226b1fc657895a15b47f328fbe1ecdf1d9dc19352039be6c7f3ebee19edad42ac8aa80b156a7f1e25425c772dfceb1a570d8f6f21a7b95f56d1ec469af6bffbffb7bbd9b5f13e6d7eeb498be6837abc7e1f45d1f1a9aeece15efbfab35c7e5daa19e49b1c4fd1087dae3f59eb4161da7c5fae1e69084ca5cfafc5273d6ceebdd994a1fe097f8d4716e8da3b6d96cb4cd77fddfd9637f73bfe66fae393d9a8b6eaca04f3c39e8c7ac840f6545cf99a46780275b165180f7a7590d0c845d2b67a7f78ee330aea64574a32669f96beead9cec79fa9a6dbe3686e0337ea3aae85ec7b7f4fe846fe9c6c96356fedc3976ad6a0de1d58275dca5cec9d0c6ca2df1c6ab13e95f908f901bc6d9b9332d229f3d8b892bebb7e8dece2f34f3cf9affc432c6d0504be8f751817387393b33aa725cf294c1b10b34eabdf082da43f3181a15513928963395daf84bb8c78e0aa4275e51633537c20d35bac2ef101fe6f61b2f88bc9e90dbdab1bf7b5a9c34ddf059c45a9e1e3b357ef76d3d5105ad895edf5df4e2fbb8fdd3b87da3993cbaae993c31ad65d1fdb6b0f157ba0d938e5dfb633b4ea11370315ec971403c3d91b16ac7cbf2ca77cdaf7fd73aa8314619c31bea0b0c9bf1295e1f1b60004f63f3c6f96db19ba6cb1fdbd72f5ad7ff142f4d3881276f5a0d2dbb077032d5ceecf5635635baa8aac76d9f3a8e4bcd1b62f4de6aca0c3176b9cf25f779f6873d69e8fcc5d7708c6a678237feb9bc3f023996a03916fd23739e806b1fc537e22bd4d3acb59d7a53ac89f778e54dbc227a46d1db6bd141df1b3818bc06ff03a7d9aec66bc0db39ad257196331dddca6d2c7fe5fed7ecd1fccb3da73b4ef05e234af74ca97f5c6844f1736f5e83ae15b0b391332d96f1ad6bf4c2d3ff3df4cadf5fd5cbfe73f85478bdc2af0a3e35d40ad98b7e6e2d380b3bf7ba4f6164f30467806b833e0a302d97fa748d6e12f54962594b8d079c077afeb10fcdf51e71fcfad4d3312e70fedbacd56857aa751088079d076ec073b61f14d3101c33709332eaf282ab34316aa72ad65edae22b77d29ea4e75307352ed620e0bd435d627a6b0de579a319d5162f980dfc5f7e821f052cf8dec6b043d48adae43ae211b9328e437fd0f86e7bc86ba7197032bad3f6f11bc1f3752afa56677bbd76bcbc72e0bd095feb75bb796ef83c337aed483d0fb8e19bef87d47fd82eeefa681fb5216c1cf9d1abbebef4a4bbc478c69d0b0d3d1baba4dbbfc59bb1f754223ef8baa9c78dcf3e69c249813f9ce86c4a4d6c73f6517b04b7f24f5e7cc76b5e7c2aed5ff5e4675fe40a5e0c9a6afd58839f03ce6f79a35f998cbf2f8d77f98f1a83ff06ee964e708c8d2769de8ce1fdd90bd08ef96efde7f14dce16742a3bf03df5c4f71463fcc698eecbc60477eedfff4eee5fdafbfefc340bee63ee9d1f571c2e55320ebc383407dd3b56a8dbac036f6cc7901d2f363e053e93af930b17f98b70b2073e339d7e5ba0ef6bf3f795fd4cf037f0d0a7cf9c7d3ffffe5c32f7bebbcbafa92bf089f52c379a5a7d977d9e40f0dae5385c35d7b7c476ebc0959e7890c2d359aef1233c94dca77005ffa4bfe7cfb2a2cf5337736fbdb63f67ddd7afaa21f2096df9f28cc99f04e8eda5db10bea7216bef82ad7035e664e8149d72bff76b85f61a1f617e6e50b41b8fef830efbafc9b8dd8257017acf41a03956a8c3584c82734f22386afad2341a34079d6e5f75e5f87fc1eb4078c1b1f4f9e1c923efdbbc7762f3657f580f8939aada0ef2d01a787377504c53dd017690dee5c0a6e7465ef3e5356f5028ea10a22ebdfcb6802761eedbf94f154b453f87cd41a723e2978b7c8f9cd689defb40958277850e66d27801d571a327eaeb2af075ef78d0b53ae8daaee7f0b6ae3ffa4c29ea7a56d0dbbc25b6d7d9acb59a7bd387ccd3bf97b396f34579617fc4b367deb6cabc727bedbec94ef5d7e828ef173fa7fc5cd27dcb8f425df646dd3d7a1645353cb42bdc078d160f357bb11e663ef45a504f1856f05527c6c7238e2d2bc99d426d26005e3e95b85c343ff07c0dbfed4af54c0bbdbf343b2469062f5c3e123fc27bc8beb6fa96a6f17150e4c0d6524b24ae702c9573d0f4fef6a0e9eb1dcb13a604fd44e40e35efc5c941875b60ba815342cd2a0b06c05439c44ad97d388d7680d9abdd713fa0f6ad9380eb353c28dcebb977f68037d07496efd84bbfd088267249dcd3491bf7a8aaa052d0b6c9ecfcc1632fb23aafc8cd828fcb1abf85f52ed1ba658faad9273408ec31c97d9b030f047c9be0b2ecefd0eb76a566a65a74023907db62500cf783227285ff5f134323bf1de76fe852938bbe40f4ce8acefabe45dbe695153db4ecf96fe63cf4fb81c74e7ab7c7dd37c5c8b36ef5e474ebe9ac55cd67ddaf89ddf81cbf4a38784b6014f5e6286bc0d0ae41fea018a11f7a1d339f1fd82bb5eb1cc61b70f3c938a03f5b3d522a6d635d588479b31e04ca0316f1a00ac575a40afc443c85441b231887cb3fd4a0b6d77340ef4a0ef89ced9b7ad8fb1c90b958e6a727cfa389d1d408f1b46b73c7237b8555502be75841c7ec4756dacfdc16f7b9ab7cb77717cffd6d86b56dfb9aedbe075f643cee75110583541d55f810ebda54d3223baac8e0f59fff4c9e7ca7ed8dc3e8b82ce671023db7f94c45c683e7f51f6241d427af8c197dbd6e109cfcae2e6a64b75ef39fbdedfee9f1d7d7c4617f8eab6394072dd96a7ca35e4c3a9b6e9e665dfeff15cfef67ee93f5597751f211e6cd137a5363aef380bdab94033e9aafa1ef8947e0a7511bedd8fc07da14978f82af6e57ca3bf9511d07c43bd7bae3d48354d7cd73780b7aea9034f8b2220f88018bc9b9b0b14c1479836263738ee691d8d0b44d2c7baa89d79d281ff81a706a33f06763680fd9399cdc2e0d9c8ec39cab1eee55e5d479dd3c6fdb632becb1b1261e38d43a8d6d7c6a882ded36b160d5e46ee8a175d843b1b91e70d59102e71efd38e0c48296cde7ecb1501f5e215f53f0eaca3c60907e2862de53628532f00210fbb692c6178ccfab41b17187a9392469eed85c8e8f92a7ad8316302533e3da6324ef7e422f2f70ec8d497ac79b352ed3d9f6f034737ffdfca218ca4f6a9d42075b3d5387f4b6f3fb7d339f95937cd7fdb5d86d0ff3af99db7ea2d687da46a92af84f1ade8b88c7e041a9c76de813c95a2daf39b53c8aae1bef914131f1e98700ce01f81df06d1af33df4e6f1de141e6ce8bbef8c8d0590232dd78d1e2574af5de981d2d721456fa912df0fe9f9f7a91781fc695865bc8703b9872ff43e1c7b1f7be22b7cda7e88dc762379efe6cc01b2e7c3ffb5b7f3acfd8cee38ceb2d0ab647cc20cec9333b6b142ac0d6ca37897d8f952bc72ecf7481dea41dbb9a436a6793cf98bdb79523017f4bf1836fe17361f746ee6aeeea63ef9abc72f39b77ca6067ac927462db0e19a435fc23924d0b21e62cd05eeb967f6ca871e7f4b706a33ed7df4027e0aa36356353c26787e379c1dee273a56e07aa13f16957108ffbfbd728cbb2c746ce7baa7507bf02a5c3bb57d3eb8d15324dd4d8365f7e135bbf7aeae689dd0c38eba5df4b0130d2ff1b033573dece8197ae161b7bef4b0cb80714f529be34fe9d5dae0ebd3e121496dae0fbd47f1c651ecd3d2cf8bba25f0951f423385f19ee334f34212aea823b9760eaaee17832273a8cd12db18077e55e0cb8631348359579279103574e4ffc2bb8c0f0abe1e865e38fead7d9616b0afe23f3a5ef8d3c317f5aff9941e0a3ddae8cdcbd896feba03f0a0636a18c02bc2d8bf16eb82d0552a81351b07a5e0ea9a9cb96a7cb9ecb6d827387d9103dd41bbe6ac9d605050d747d5113452e80b606af442c02fcde0e59c40a38a7e16c2bdaee87ba7249718d6e49bc2dfad42fdb102d7f3a0d86b178f3125dccced43d2812785cd41bc8b78fa28f3df2dbd8a64e1748bccfbee2e9e475f53c3e9539a3b01ebe6f67eeee13ad86b2cbcd54d352894c422a350e23e9f715954933f9d413b853c5b782543b357a5b168a605b5da1d9d419155f451ec7f0e33b5b1791dbc9d6dee767e9ef6eb2bbed576de3de96c0ed2e83881a6c0847526f492516f2c912baf6d5ed9160dcec921e980e72f1e92fd076dc76e4a5e32ee45f2920d6b58f04a71a119900a5fcbc6a163fbfddb57787780b764bc0cf75d6ee0c952353ccb535ed9829736b6051fd9451f93be90ee00585af1eeb3cf1fc1a7a8d973df2a2d9e80bad8e278955da7e451bcf6aa381c15c0f282e3295ab0c0c11ab96f8d4baf45c4e4e2b3b8c13a74e37cff7b19d97b705ae7de76bde87dcdbcf513b185c3de7adba56e9d8dffed18b1ebb5aa068d661e721af0bf2bf16097f91bba698d0fea413403cb045850d542df0dba57436f81f8523c5b50f7697a4f17fa04e184de9ec8cf80e567ed063a7d6dd659ea88fdc2147e012dfdf84bcb3c70a5d6af2e3038f145fd17bd8306abfaedcf1ef6b1c45331bd62d2e9b59a3134dd1618fbf0a6f71a1cca1f7de83bf4a1bf5e2353e2436f7f0f3d6b801b406c66eaa95dcf8aeecae6bae20fef8a06494b3c3afd0c7d4eae73d40fc0bc031f1fbb6ede7c2f75b5933df69dbb5fd2bf29461f4373d91987db193cd98bd5b7451a19d5cd8205ee15c7bdb996b7fbeecc27ddcd178d7f3fc357316a63bc0bfc17b47b2496c55a99da58b4b8c09d86984b44e3a71f7fd05416ec3bea336bc7131eb2f3d471eaa578dd0f524dafa29da9994bf76d5e5d8bbf7d3d489733bb5e12db36814fe98d3cc0ff9aefe6d0071beebebfdef18457623dfa68438380bde60dd62bfac23b762c04d4015ad5e2157ff19ab1f9498b5ef79b80315d2eaff1b3120b96cc6b251eb4df497f6bce15c58307edb8621ec34fbf6a3bcb02ffbf203f9e1ccb46dfe7469ec4691c4c7adb7bafec4f1afae3d37cee5ec4fbee55fdfcf1dbb9fc32d607076e63fca5d4dde4bef60645bed7d1d1a7be2c7ca419f7626ea15e3b3415c01dd74a310fa8b9bd32ead67aabd7e2b5ffd1dfce7b5b59e7ef73c1d57ec3f8b67ec3b036769b96e4ad47c6c9066342bc31e871ce7c07fb85bf3ac6dafc857ca9ed8bf81fdaf75a037b4cb30bde04788ce03d7ad413537b5d0547c1448b9e56db1ba6c07b95c0bfe311358e939669a3d501dfff74d2cc75e2b7981d54d87d7dbb3f3bd7652dce7959d36b608f19dcf6d37e592beca0fe72aae7e970d3f8853acce7878724d50fd0ce2a36a6793c79dd10af510d8a9c1a5529ea5015735bfbf9fca0c2a51ca3f38f7eb3607bfa369672e2b059c7a1d7eb31ff35c4e3928b1124b323f6475cde1cbd115da3cf8c47f1e56e9d7e2f7a4cce415303da4b1897bb03d455a7af82fb258e78a7d8eb45ce90714da873d6e0d17f32ad9fd0d3a156e8a0d8b80bc1d0c9e7895be4f14a5d167538e44b49b8ad074556d1fb7223fb45ffa695e29c41effaa827d8b7af51dbc023ea035aea80d48f53f47ca5bf6bc563c26fba6d0ef21f5699b7757e7e158e9efd8ec81cedbc63e79f69f1405ee3bbd790771423bb4ecd9af73e917bf8c411ac94c411b5e0bf9d385c5137905e8b8dde96c31a5ae6f09e6fe39aea0eb4db84df6c73d925f5f05077db34f77749ddbef631aba383a63fafcb7b10f805ea59721e710745e64fea0875003b4f68f41c726031921fbff459df2d426eae8bd8de2fd5c96fcaaea9d46707af9bbef6e84bd4f05fa8a82da43a810f5d5f1e2f35f83aed5247e646adccef479bc32e36fd6ae12febf9e35d7be7dd986bc5e128d6b3b7de3082abbbd4760317583417dc69b17a51e9c853e903b497d4cefcc153627ed5a74c576d4f3c5a5f949f79d45399bf288f7defcf5debb9bbe8dd7bcf577acfe51439eaead5de9be428c6767d44dc9b86d0e8f0929e0958438cc975b4d7925e52b7ae0d76de3f0017f05575cd3fd33f59a33fea0e0a3bef0f8df28cbf2c96f468af37a8f5a1371b6ea84b219ae50d0f895a15361ea36e29e6cde7cc612d3336e0cac23feed79e7d59f03e2eb87571f956c73112fcf7e490845a099fd5e1dc1f1f182f987281cfab2096c773ae33ac44f7939c8019348f031ea3110c1bb921ef7fcbf9b5492b653c132837231e6b1c94daffa5357571dd711855d342c77a1c04ca3bdece21b8189ff7b1f97f41ef13ebc4e3d3e3e8aeeffabe56d269b79ec2d14cef4cbd6838fc3637167d2cf09be03d6de7a78961ef62ea0d52fd029cd28f5f7bcc61bb23b8d6ac896a4ff74cbd2cf4ab7d0dbe29e3b6bd7eced2debfde11f85efb1eeaa86be746ddadefeeb2d7ffbdd8dd7b1aff1edc51048fc1c4e60dd13118149b8a79edf4f50d261d6bc7c663ce3c076748d54393f48e2eb5aa1b9e1b34d3ed7a57b23e13ddd8dfe23858ce5a5f930ff6bfd04fd4aeebcc0b474ab4ecedfaef367e7117b14a8bd8b28d97b2ee6973db576ab0c3b7eea8100b65a8c1010362c7c36db89dff5a3e8ed60bdf7cc9f9e0735a6e1ba31c03bf51e98f950da63a814642c4befee658c761d43aeb4299e0e47d316e5763bcf737bc04a90d657346a9d565a2713f015f220e75fd8e6712db31934c331befb5a0dfb3a11fa1f4d51ce9b1bd0e527a98dedc47f5a7cedcfbfe6bb15b82bf779f3bdec58267ed80129823e8e3d16b7250b4eb69911d927019dab1051c7aa74d2e12b4a4237f5044751c4e63e0911d5591973311fe0c383a065a0d7e060d17bd5115738bc8237f676814f1f801f30ad3823601341a4ce31b89f1047e7253e3472edb7658abcef6d451981ce8d5074e4080fef0e6e8d8394ca5db99f6cc41d978650d6c5b3d28b220c5da963b71b88c55baf4ecbc247c5ad4e13e578389eab7de9a5da5527b2cb951e93c56e9143596b307e7045a84e402413ff9f513751377d92bb7f7fef1bf052ba813d6e1f7a241b2175d74d4fea7c5eae453c6d7a0d35eab71fba4e7be2c74a3f1be17ad756cf773e748af69e40d4e78c2a8c149edd5b33aebbf3d432fb91a345ad8eff695db35013af18efdfe59d253c7013d65f11af5b1551977a8251f87dd5bbda287d96cb9c59a7ae748bd1b7f117a8e1fb457c2b639fd7fd60d3d0e5278d61d51cffde770a5bdab5ce99db327278a5ab0f4de830f4e35283625306bc5e6a0c96371d538f0e921b3396847b544d3c2a3363f7b66c2cd7727f5063aadcdffdc26b33906f0db7a7deee1a296346ebc60805527bfa00656b6c51ec8e60df7eaa6f9b1fbb07abae3e4fe4d38b92040bf671cf87a8bba1f792a8fe84f55d462216e99bd5885ebaea1cbdf666f349dbf028f091fa565419d95b8125f5fd451e90d80e7e021f09ed888268c3c6ffac6e8a343cb977874726b44b75835f78768b12aeadd84f099aa355f2be9132eda34f2dde891ad8396de66d44baea71e7c307a82172d5445cd60eabf10db0d9e316213d6510d7f23fc9a6c1c34396950810f3d0e4ecfc5afc0eebba49f6544ac2cebbb369e6b216e136f251ee350702bf440279ebb2d7827e01c8eec6d0f5de15b7baa3a612b4a25d7851a90b7d56727bdee61dafbfe7b718f4fdeae0f858226d8b4888f0d2714d7149a00d04ddfeb2aa899dfc1871eb934fdc98041e658b53124e7f240f9f4d4a2072a6ab0b5f8a116a2bd5426f61e01ff6683fe04fa44e80dd839795889ae117ced5538e47cde01bfa0222767486ee23a70f416bd6bfaab1519c6a4f076f75c0f22eaba220e8e8cfe91f94f6177266bc03ffa9c1b5347ade4ebd3994abb2f6a9a5503e6a68724448f7bcf75c67e1e3ce09af90c74b10eef3eebdef0d95bc77c6b319b1eee31f9fb31df363a3a693a9e6b16e393fe7b2b0efb0ab88146df313de17a45cf7a5e88bf9dd42ccc8778077a42e1fbbac528d63fb2bdb6f1d273e6fddc3988f1c7ac97dbd76e8d2fb68bdde8d762b77c605cdcba73cc3e78ba326712efa6e3206dfc9a6cce33adcfde4dec49606d2e86867aaf787ea1fd1ac19b530bf69678509ba7f5672a1dbda8473b47e4ad85f058945d136d2c5105be0247c518e5010f5602bbc2fc5fea13eaa02ac4b7551c76891fa46f7c25be97ff40fff82a27c5b3e33c4bb383ae87d00ce0a3f46911db3ad5389ccff4cc54cb42bf245d1b4ff4514f4d7ae0d9882ebc0a645d3783c26eff67fde43fe5a7797591ffd9bcef94ff456f73d14fdd07f93dd6fe37c4da69cafc4bcfe86f2a73296a68c41d722dcdabd3ff273d47596b89113baf81a7ffcfdbd8fb6d6254ef3fff3b6e5bc7a7d562a2578bd9b4ca26eeafec5ee3f8b89ecf38976ae76863b57a1c9283aa81f118fdc9aba2bae655014d8b757084fe3b38720ef88d9ab50987fdeca0a566a63ae9a88c4fde2f4677da4ecebc899a05763d0066d6e69539e2670d1fb9613d104d281b53aa99f1aff74196d7fb2063c78bc35533df5fea60d66f3518b7ff531defb69a6ff7619befdc70e1b59c6ca69da1d77d9dcf5a9bec8e8fbc529bd7f038802e2c34a156333531f432b88a9b1c7dc04daa74749547f6e7353837d4bccca86150d14b3b0e95517ed31f6bd78dced8a5161a359d4f5a68a20fd28ff573b657e41b18f4d68ac8d057b32b5ab0f67f9bcb773df5785b2d77fed8df8f7a5d279beaedf2c77d2dbf329e02e628915d538ac6830a392c3cb4233328da7e1aca5c0e7eb1a12e3a62b2b603edba0a3edef4d21e0747bbae892e738971018de2bcd15ad86bf2516afaa9e48724dd16a89781571c1ca1f55cc7e26d356c49bd8abacfa82b9dbedb69381403e0ee446ba810ee4487dac0aaeebf0e52d111f654a3d3cc1a15b4d4a14350f3ff2e7914c5506291d86e5ba1df80e3caf7a22760bfdb7e566a5afde2747c9833451f04b509fb3be2129c9e0aefa38ea70a7550216a16ae7d7f018ff10d3dec717ed541a58a35b4226e0d10fbf37b15b54fe418a312e71dfb1c72df76fee76f316f7ef7695bfb79683cd76a27e7b03075861a383dc4f8c87abe9de3453bcc7ee6cab9a696b43dd7b286d559856d81954ca0f360cf71502a5cb3d85e3f37abc0edafa0cb50289f9a13c3d6a21394d4e95595dd0f7138f8abc49f1f7a6959655fc3f1551c879b832aa0835f721f4eb30ff8b2431b42ea45898c2f6a0880ff84fc5c091f4075dad08cb1e76cd1e8505fffddf65a55ec85b67d8c456aa735de5847f52f8e6b6f8f0747dbe56e5bcc27dbc37cf7bd5adc354eaf6395aab66045fb2f6a0b3fbc631c8ec0b1d63be894793f778e434eaf8d19dbe59fbc3e92ab5e1fd1f17acca6dfc66ca82f39acada6db6f690aaf91d6385cda9c1bbad1377a2060bd1ccf46dbc5f3e8d7dd33e45ade3b3924b3a8c2355d4bfc04bec250f46d2e5e17ac9ac238d916e8ad401b2793fac7d093e715629c71508eedfea759094d3d3b3fd0c309751b05ee15fa35258f6514269217c4a1b1b1bf7d1ec4e1aa56a7d7994350eb6463e3ace6f99ecf47a8254a7ee251778dfe99bae3047138f294875ae25e79c20d2d8059a9a1b5969afd67c61a3595a3fb387bcb8d317a638ecb62fa3228da658a1cfaba175942fe53352de6df16697c143fa857c4ed7f456b229d7fbeffbe71ecfce32ec2a15d9b3cd137751a1d02f61cedef00e7c71d87cbdbd7aae9c38bcdffd347fd7c5f9f3e68d5dbf8cae5358f5de9af39d0a6435e35f111c37ad065aac8393ee58a78cdc664f42a03dfb3cad2c8b5f18ce6be8fba1e727be80bd01745a7ab57f6fae2832aba057ad1363e83df918d5532c46388812611789e829ba8850b2c58be5171f6301aba8cd79d123517fa30d9dcd4c87b86ebe4065e2ebaa23612b99af8a35e5947bc63885bf206ac2f0a76e85c471ea4dd6f9c53b5a7d287579bb742ebdf33fbe413b9e7c4d3abc576f96bbebbafa51fd7521d82e73eb679a68dbba10d105033363f286852c4065a59f06b0c2a3d5195e236cea0303efb246d177508bbadff0bf57ef4439ed11bab96766e44bcb49af17ff8e4df3a077d555fa8eb35d39dfe95eff46b330edece3dba3966675034f39a6ec96badd36bcf7d9953e3839e5e1d2fc5d363bf58f4a6d77e47d18cf1a439067f2bfb9b607f97de536a1db89ff81da5fe377c4732b69f7fe7a1757ead92ed2a9cbf9bfb93a8c70143c13a8df189038286a547ac0db89c0e714b1bce9376be4e877bf1a1a31f93e8e4a9c6af2a8d9ada4b85ff51f751d445455e3d69de77f93eb03e016a0e3f50cba859cfc95bf6de653d24126faf987a16882fb93fdcf7589fe200fbe1f198e6789230677e0d6d0e685f04c88f888d3d24acfb889ea42a89c9c2fae68b2739753ceb4da32378140fbf8ab82205dd0155b5a91d5ae4362677316721ef1f52d720452dc179ea0436bf93ef879f7b001e293cf6260eb78fa4ae10b7f81dc3e6182b9c4be013636ca3580fb3c7be5715b02e1535388687e4c6d8fb69a6ed7cb51dcf5aa7e7c359e97cc998ea737e55a88d3e759c6059cc5f6cbcad9f7fed75a71d4c8be121495721704915708215733f65a005ec98fa5dfe1f24a8c9dbbc7d3553e9756fa9a4774d6ff2d79efda67605cdf54ed0d2f4b32951c3bb3146b9360ebee418f81ce7d83f5dff2eea3ed5201dc5e24573053731babcae25f5db84a3d4fb707d316e58cb59fdb1ff82d81e9a46a69671f7a2d295075f9a1bfd8c26bded6174e7245ecda36cae3b0e479e4afb2f2a7df0d4e6ad6fef29ffbdcc894f9e82674c17fb6b8dbf20ea84722f47c0b45ce8b49ab37f51e36584b8d8b06f861eda87de1afa69d0be52ce209dc7c96306ef1fe82d375c45ea4ed5e42c353cf6860789d7d89b768e25bc5ed7ede0c61eeeafc5667b58eebefff7fcabe82efdd37005e0e8787ad7d47d9b9e6b6cfefed8e2785c1651f51446de72ed784fe03fb7f7cdfca18bec52f7778f1eadf46cd9a3bde8df566d7a669d7ab81853f06554c01644e25ffe7e0cb5851ff66e0c8d512bf0f4362b55645af67b381e1147ddca9d1d2e7adde7a759b77a7ad4fbfb9cf52edeefd8b860fe276c8a77c1976dbde3cbfec16b7ef53a4819eb2017e84003cbd1ec3b06f4a93501c7ad421f17da3ce0002af47d817549b72bc4ac29f0f78e78b21d050fd6a20fd2f0f2915e6f7cef885a22f5dc9d447ce2e8ab3d3ca854bf2ae1679c745cc81f70888b54269966f5a0982a95522f71fc675ee45fca41c181fa902346cec75c37925cf76fcfa1afd9e3b6b7f0fb8f0bbfffdff771feae07376ebb4b9b93a7db585781d49c516bb679167410f5c494cacda09f096dafc6a3aa6af2abac158799d1ebb697d7c067d10730852ea66841c6e565cf240e47f5206d7058e89bc4fad679cc2b5b8bd9b4ba5fdb0f71b6f3d4711c6847c283313be84219d1c4ade270637464dcf4f4ffc4a8e2e145f78ebee86ac213200da316753863f8ecca36768cec6fcd9717fe729b6f1b0cd1b2be6b335ded8fd7ec8f47c7a7b03f53feafbd70b4aa334f7c58914f2e3e70d404adde78ce2146528724ccf7e46cb5fd419a1bed4047b4450dcacd79ada0d787372826410a0fb3dcc02f933ea335352af1483d2860f76d5edf68c04601b55a6d8c933bc235dad34706b8341ffeefb7e6593ffadbb9d75a2d9e478f0bcf5dddb590dfc6c6f6be3ff35c58bbbbc09506676f76e1c5d0b77dcf7b9ef9b1aedaad0cda808675393c9e341e6bd9bf47fd5ec4c0f4697d874f5c16cb17f59cb9f49b9b361a5237cd19f96e8a6b739f273eccf39fd66d9b16ef3f8fb5dee656de389cceb4674afd23137f41686b78c2d1ae89bb3a73f3301f3daaab98ac6b5c3e62b04efb000eeb27b58c5a19788c39eadbfaa4699d79833433bad386f71d356ca175e9039fb16e3b793d6974973de824a7e879b6c8d3a1fead2af2bdee385e83d98037e87b2ebe8dab3f70f1a3631cde880ffbd1ffb578be73cd3fd68457b19efdb17ee3e99dcdcf472f0afe1ba317f2f4fe949b03276854da854f879e9960090e89da6bef93bca79d63b76f8dc3b9a77ba654dbec362dbbee43f5f4385f65fe76f2f4d8be8f870fbdecae5295cd4d80a77179cd9470f0da075d0f8de847bb8322123e736612e028ecf5daec15f0f7c7bdcd2f78dddad02156f4063ee10dd573e621ce5a3bb76950cbb55cf6a6e1c26b1de633ed3c3dceef78bfebd8f89a1a530e7c056c0e495d8521fc76ecfb83745e0307130ea93730e6eb7138171f5b7550e1b2208e5d01afa2aac0610e0acf689b87529f049f6f37fb8d5561e78f3ebde8436894da7bdb21effba34e8ecd9f70aca8b3bcd1ccf106f4577eafe5e30dd2eea5d6aeac37f06f2da03b01bd2bf1b9a7af5a79d27d08579e8dc3b28af81cf205703c463d6635d7c5c087d6bfa78e769e227e7f28de6bb96bff72781ad8ff9503fd8c31fe6f74225cd1d2f235ffe81d071d0ea9f38c03775974c5efa8fb3f6a16dd7adf2cbc912b9ce8d172d63d2c7b5be7e7a4fcb5986dff6fe142fe925e905dd31e5ee84f05dc0d6bd43dcc67d0cbb3d70fda6997fa40e4cf8be6dfc6a8ad820f9d2a62a3ab7665f382535f74fdae4f867bff1feceb59bdf3d48a2ff84ff17b4e9cbdffed7aecdb319d5518c747e6af5867a98d560bb6cd81a735b42463d42062370e47afc09c556d7f1c9a834eb502efa26a57e3b06be7f66a11aa835e8317d33a690fae034747caa15657e4d29f7b22bcda1c7a4436c6857fcbc6f80bf6146ee5fbbbd9aefc957babedbcbbfcb5ecadc2a75ef730f7a677deff475c8d8df75a8362522f3af04ef1e90f636373e0549c41113bcd18913ec99bde89661eea720e7d5bb3d69dc61b393ea85a35b8168775136af4689b2347c716bc671ee1c55e5ff8ab86f0b9603d04988284da1255e3c583ba06eaed1b171aa9e1c4c6262dfbff1278987695412767437ed5d8f1e9f792ed75657ff3a6feb973caa4d33edabc9afbc3f6ee20c5fe6c0cc3fd15768de817f048eed87dd9f3857d1978fb639d6c0bbec611cccdf0a0e929e9891663908658f7dc4131b5b1b52718d53d30aa75043d24350e0205be207cbf1dea00c5d09cb9edbee8baf3c77e6bf83cb531ca36bfd76d3ee8c1614ea526a1ff274d426865d0b3ae1587d17178d62094bfcbffa3eaad4661336fd38b55150f05f57fc19f0be84b6cf649c709f2ba79de0e06f07387f7153c8059c7c373bcff99581fbd06c794ea31f316e1e4a0445b8ab109706a353ddb80d3ba4d131e638f79f870d6aa97debd5ff001a761f323d49bb7b17ece2ad67726ee29feb4f17018958b70687437f3a9cf3471cf3171b4578f36f71e1abdcdeaabef4f80e13ac5d3ccb31dea4ba623689c82b7758e7fcff1f86d98acd172b62d9efcfe36ef95adfb357f77cdd7e75af12507e5ad2e03e68cc33bfda50a9eede9e82579ccf649cff8d362f4193c076a82c0f3ac83cac65fba729ca78ee32e8b396ac8b7ddf7fd6de64d7fe53fee35b7f7b9b85d27c6e1dc2306a6ef1117e7387f786d26f171f573e3d8d88bd788ba684a733c9c6abaa9cd098afeeb89533b8137d8bb6d6c0cf2763fd05e7afb393b2f556a9b091798f5e1143da6feeb055f57a137b93b9e6bcaf29d6f3f875cc56f3c1ce330b3ff3be7ff15b4736ff4691dcf67fa77be1bcd16deb6984fbe7bffc7fcc86ee41d6cdf613d46b7ce67361e72d933c87c9bafb2b6a21c1bbfd863177c57e375297983021621e9a04ee8d3cf6e73d0c588e3ab007fd34b66527f441f13fae715f516da17de931975bb0bf0538f4ae27ff10f660f039cd0fca0e091138bd7a88c656a327aca032ede27265eb0f588ef279e78c91f743d52aa68db5c89bcc32a6831af403daca5246740de7ea3f7ec6437ddcc67d33b3eec23a6d5a3877f14402f61dce843983d3d4fa28075c0a095a4768e914772035d99033d0dbd0be811d847fbd960584747d63ce2834e59ef56d4d1477d45b82815e62e3ef7e290f54b85be570e7d66cca593bfa8a538fbdb5a8ac11fb514a1c3d72fa4cf622eeb84a84be279d36b39f760ceb120623df6b1afd641d59b1aed208d2ef88dedcb1ae5b7451a094776246bdabc59d3ec6bb3a467dc41d10e52dc436dd413920ef2647853aa713bb0f38168558067c9fef6dcae3707551bc1c59c3fafe083139b243295fa91ddd853e86f17b3efde7c32fabdd84dbee61ab2fba7f24a802d5369ff559fb941ad349c1c70dfa51bc39a5f549feb8c1b7a0b333fb1f37e90a25ebfe1350cb7a25b83f9bf4aa2a32f5ca3eaa397839dbbed388036b9279c22e02a13fafa0589e07b89abec2a55051e7bcb867acbf44bad58771d1e58438afd348c6b72aa7263e364d670e0a726b501f1f8b9d441676dada5d76dff9d47cf5ebeb7fe502f9b1c4f9ff9d4989dea9785ff707c9ab59e875eb7ba6bdc5ec9756a65f8a895acedb2dec78861c1891b07be728e47ae0336376e7c1a15396e0574971b0c8e4bff9369219a4f5502eda209bca6a987b461ecf05e53af0a1c8db81c5e8f0755af1eb04ea4b9393d12d7658fafca2aea5a60db023a3d35631eac0f4e1ac6a2c5113bd401caa9ad446f478c51d15872c85b8cdd9376147586dc4527382aea3a49de99d54fd0fe9fbfdae31edb350e187d033d27b553e43076e41e3be1e973d16bd7afd029e23dd31ae2b536b14a78144ff44edb19dbfb291dbd8a27414bf418827fa4fd30a927e879d8dcc29ea3bc3e636bde683bdc7a5ff9fdcdffb15ce22fccf976ad9d82b73548fbb1f2b3ead4d37ff7da80fcae593231f5a96f865e72144c8b697ca3b7c978fe685f1f0df3ddf7f5a2778f93dff777e2302e9fc2b84a43d151b4f7c8a35ddfe27da329a076ef7a99cf997dac96c5cd394bb99c4deb65f76135f7be68ec747b9ce4fc638deaebfa35eaba7e4d8018249ddb38db2433b3d73fb2f229d45763ff3ff91a3d759cf2026b10278f1813ce72edd8f7eabf89bf7851d32c00ce67c67175e318aa97bdefd57c32af169e3bc977ddfae91ec77cf018c4fd5a890f646aafe1f4553c645de8baa5a36f699a1978beedae69b4adaeeba63ac6fbb97382385c7af0b9f891ed7564824538dceb4edb119db8cf5ddbe97d7ef84bf3c37bcc077cf4c493e4460e1c789ae9bca0c74ee3e1674ad109ddeb0e62b59abe39ddc2c67f036a4978ace901d3115c60865baa127e1bfdc57d795e0f8a694a1f2ae29a84fb72d0339b0b36755fc13d5701723aa9e5e1fb9e3a8e332db6af36ffc7f87554c0dcce50f7226dc34b055aeceb7690d536ae47adc73de575e3b69ba32e69c7023d976f8d05737ff43bffaa3581dbc76d1d877a6573e6e65a26e027765f519b45be6b5ad0122d22077d8014e3fcc89a69def819f97198efb5af587b4d15711569f3dcbebf2c782f2819b7593068786cd020b7637a2e1ec93173eb0db08faeeeb49b4762f2ed3e8aeee5711f076914085ed55d16539bf755f4e49f388322af788f208fa7f745b89a2591b995073c5e78dfef71eb551f65231c6bf88ef0fa0bf751432fb78d7a123dec744d2c4feedaf1a3189bd4d409a2e630de4f97d4871cff1bb806bbefee6237dace23fd3bdfb5ee789b6b1ec9e9f6059862e2bf2557ecbf485eb23ff73ba3dac6941ff24ce2054f3965d233d5b4585ee49da317b5cdea71a85177d638f6fe4c39c6e7678c5d07df7edfce69b613ac72fff2b36f5e83b6680f5ab9d5385cca6bc38bd7f0bd5a159181c7678ab569df78ebc02fc1c6ed8f36179e16f4d5c33a4afe05b4e4b4a767f677ad6e1d87fed3ac75d7977c3bc704e4d40e0f7a62e3a9a8b5387b8aa9640c3caae844c0331f9c28fbfe750d6475ced7d6ed3fe279d1a7ef0447353996764dd13d7a7b26a2293a2da216fdfdf383424d1c1c2cf6b642f4a71a3dee16740ce8c721faa699478d7b253547e3037b58e4d4dcead9988a9ea1d005273e1d3836d43a11cb65c0a52bcf1c54a843954ee81fba167f50f44081bdf46dfca58ab9079cd80c58f8807af213f650c74ea34b56eadd712ff53fe0d688cb8c7d7a99aa834e63624b2bea94517b93baf1c9d9432ab0b1ed021a1fc1f1463cd278392bef9a50ef71c0ebc005567772243fb9187a8b0f98df887d74f85b7cc0069f7b18cdbec065888c76a851994cc1f92915b0bcc35278ed2de603d0fc76e47f477a3b15d7f753cfc895f73d793d78bbbd5d0323d1d0c4f6b27ffb3ab47a9bed0379df93d7b1ff9fd46328f5448ef731dbdf18d3a5d9e37c3befea6df6d82fee758bf7ebfe8458b31e3ce55bf08828ecf3d81f82779497eca909b623842f313410380f6407e9491f259ff46cbe4b2f59f8a7daf9cc65af26aee9e3ba7cb5fb1f1471b05c077e323bbae80da65b603834f291ed2b3408d3cd5e3f8a4f5ba47cf153a697bee4e01abdc169aae9cf4adc391eed76393c39553a6cf25de9f5478e6c57ea1fc8c10f2aa5c725f584c4cf99fa02bcaf527a2c206e00562a2805abf542edf2be4ac6c0247b0bf86682b3e5eac8886616f032ce8d9abf761c431fe23e5fbee77c4307c2e75a1db3c766633a4f897ee810d814f86650d7d3c60cee1039e98618253c36e3db8e937e410cd250f25a3bc6f216e2c99dd9eb8972c4dfb5c1a57bc287702735746384af33b1396dacd2074f62e9ea299c1cb4e0a3c01f4fe1d11c203e4947335d05aee069fc9fd4be688dc3d54c7ba8237e5bd83cecff8b67a12e9e7ad38d5db327def430ff9a73e9ecb36b770cdcc43456e9d4d3bd634d0f4ae9bd168a639375b96a5a60db6f696ad7bfad526be844bcb2f6bb31ea39f317d0ab16bd92892a6dcc8afe2af54fc081c4ff15e6e64a79cae6dae86fd32b1cf3e05e43a72d2875c7e6def67f6a3f9ebc46816fb6732e71c76aedb8fc7f49df250f7aed47e249f0488d14d67afc3fd5fa267504dc90acef78fcecf8bbcf81efb5ab586f1e82eb9b0b9e41b030eb76a99e315fd9780cbaf6a85da70fa14a731bef8b0e3ab05be7ffd37e7afa9f9afaf80ed1a3a8544f910b058d02d3e414c1205dd5cdf38613833c88bc99865763f8feea13b10b6a46fe388cca65317f953a14f4932fef376a77d9f5f9466f086fbaca77fa25f5e6bbfbb87b37df31a6729e3ace41d7dbd7c1b8c1da2c1ff43a70741d99e65170339ec45dde3986c4ba4b5d2d4779f46f475e5971aec91c627f9549660618e2613d39a8caee033546e03b1907c213b919ab5763c0497d2506849f6ae4138343bd71680c8e9d830aa71ef0cb3b78b31f14b037389e83c676c8d51bec3375c5d30df16bd47bf117e0e50655f223c379a2aedca69586f191dcfdc8c6de786d904e6fbe2770aec1890b02f6a66c3e15b7583b19fa8c5d6d4c9497f62f859e11307e869ecd11f8768b4ee0c38f8cf518c76ebb00a62a277fb8b2efdb6bde551adbda7378bcf88ecfdd6bf7fbec5f749fa5729f11cbec29d1c1a44fa0685f16d42bd2ded1c61d0755ac3c7a844307b1954c8e36f6709271bb4c6647686d2663c745ad76dd3e0eebf3fdf6f65edc1cf4b4c9e126928f4db85d2535ad4e737cd25f3de76d377abfeaeddc73b75f5567685a7c4a1bad4c7a279e7fcbe61669aacc190b368fa1b3b76efb4f612435f4ad776b1d663e6b6d86f6ef1171bcf745759c3f933fc09f59f5cc5e3947f80569ef88dab58dbb901720179dce54d1bd864d6a5dc31a2cd74eebaab71635cdcaa78ed3b2db3c855b2f216715b88194753d8f7d16fda2fcac7e0237871e5cb7de8f8b67fd3b7fd6ff35df655ff29ebcbd6f6f58234adb87249d17f43c11ff5b7b4d5097632d4a8543d35c7f60cad6c46a807b01ffd4e3fe12033f4cb303b5289b47f4533dd16dd8431348746913e24daa863380ba7115b47414410b957d07237e83ed63a32b2138ec83d4fa88e3af27d4a498bd3f1e9b83642de62259abd1076a8e87be24e85bd4a293d47803ba6a027cb6ac55e869d08b25ecbe2a7b0ec143c1e3fe524b3c0ddf9cdf6f8b74433e43058e9978efe676fd09444b0d9c7fb546fdf2a4af46dd3e1b0b4217c2d76bd6dedf6990aea04b9146e6f488beb65cbb2a0888339f9077904ec17f6b74345027b46b3db00ee2af9302e37ee4e786e47586d38704fd2768209427ecf6faacf5811ee7382891cf17b1478f1ab5b76baefe304e72e808e27a4b7eaf6cbc742bbecc9b1e72ef7b75d72f7a17a75776dca0d658e9c8e63c99cf9e8abd2733a3ec1c5b4047dae6eeec1b564149cdc7dc83f767317a7d73ed6a237a2b412b86960fbc21828b3125e326168f5070180e49a85fdfe99bef930e35d1a9a7014e831c1bb8d20d5f06fb068fed747cce9be37b8bfb51886399a7d9d82e6b8e11bf4b5df81734731ac7fd694ebbe41989a75e74fc4c0f38e9b4796ed6f4d26ee62e6ae49ce6aecbfb3a5445fb90502b893ecda8950c59fb62dd843e1a2938ae157da03635fac8e1f23d16ca1f141b873ee5e27f28f3c0cf8de391cb921d543db579564b55c81beba1cd3fd3d8c6f53ef98f1b7a4a73bc94ec0f4e787cd481839e10fb88d2dfdd2847ae83f067a08d8fba35afab3d9743bc075dd13174856ec4ea9df5ad87335dcc1f75fd34ebff5af4b6cecfaf19077e8213d5467c25dc6d7b3fed4f9ab0f41a28f3ca5e0bd31a8c839aafd9784d19620f0c73be0e3998f6dea29f471f3af4d0780cfb33ed297ae2634c45f0548bc36cafc8c3dd37ba38faaa6794bad0338b2f70f3f08668f854df527bef16276c90e07cce981cf1bcbefada8deb8db3ec6d0f735f3fe43f1e5e9f667a8531f8aceeb1e6075dd1cfcd9dba72fcbfa5b5fce6b53fea2c33a6126c217ac6d029a37fa00a27075dac5e191f610df3c03907ef3c8037217c058ba12bf118ea55ec97d9752772c53fb6e23a63e7d129e764e8412e6ddc5d379c415ddb1810b88b32e9045e827b2346cc96905f78c4ba8718dd1c10abd79303f83ceb20a0ff606ee0e30f1e5c5463ffe0f7b18ec335d3b8d401451d92bdcab5d3603e4a1c4bb16d8ef340eddec81b146d6f406f9d23787ef83ef93dacf955997d3f05c648b87d360635e807723d409c5cd2cbb15dc37bb17204e33464efc79e2b7b5fa3e6a4c44f71e8899fa297f41847d2bb25f2ae7ce71ed7650c9f17629f785da4f664e38bd8c7775ffc0e8c854ee067e2f7ab0a837896fecf278d8116eaaba7f3d8f0257379bfc157e9175e13cc79c7b813d4f00cb2fb1e0755323b72bd1c07819e29191be690a0ee19998b315042cb7f8ce32a392e337a6875daa731657f0779a8fde234f6ecf9a20ee9d1c6584d5e743196ed78aa948dcde1998947ef56ccc0fc71e43ccd5acfb9d35f65dedecdef98f97fc0f590dcf35d9d24af2ee6c693dfdabbb9913c8e7d32bbf07ee838ad38dcc6aa7714af7cc719439b825868c1d4ef89a95fd6baa21f7f1ce6467bd7fd280629fcb53de875becddd9c61ba31896071c4aff8b363e675399b3a0befbb73c74d7dd0273cc735d7b1cab126ee39400fe0ed76153dada26050c42df2411f5e0669d783dfc8e4e831cf01c6bec1df1d052f7764cd9cb811bd667d033d1f6880078e9a6695ea997261c7481dd9d8d157f4f1838ea8f0e6f95c348e55d5e45726e0dab652e478042e7dae0c7439e5fda39dfb9bfaa0cd2397f08087360873a37110dce8877339feaaa7d9f265d96b6d73ff1ebfbd9dafe2320ef55ff509fdc7feafdbccfd07f561bbc6978d2f6c323bfbc2dafcc0ae5b7a67aa4181f54efc2bce7e1663d1986adea746d9d903635aac889da33e99c7de0ff29f601cae3cb50edc941843f0c9587b98ce14ea77c3bdf694e885b7dffa0efa979e83ca28376b7d3a6ff5a6af8bfb3cf8ae8ed5aef43bcec55fe46b689566c68eadd4ce17a88161ddf4ec5a8b1ad87356eabfc19355bb37feb6d4a52096bdc5792e332a9dc74937739eecd8babda6d9e498dd656fb5cd77aded5dd7e54a7d93f80c0fbe5905b4a99da4031de552ed8e2ed7b58cf8a271e0363eec297c1963ea17759aba53ec88f648fd6e7d2d6dee2a3503aeb3cf8217debdaf3164075de77bbba635da881a73a4fdcef8480d5fe81939acbb4d58537bbb9d8dd19aed5c6a09d9dff0e9b1d45f3c3fb8cba87b58f6a687c52ebaaf771fea15d3e2c44fed386fe2e7a7b0df78ac79823d04af78904e6bf208c135367a6618e3574120d8c81a58c8ca011f8275d46d01cfcf3134869ab5aa62ed1dfca32a9945efb889e02b363cf0a3e88b97c2d3163ce4d6b3b9661ae6c4fc1691a14e4ee0a8d9b116efdc3a2506a76cf810a261dd628ca5a5eedd0d3579de761b73f1bc7a0afb171cda085aea727e3cf09580e9547b9546f2d7fd278d5dfd7bf1f8f07bb19b1eeef3e1bbf970dcaeae6b44ab373a7dcb6214abc7cc7b0ae733bd31eeb4a98d9ee239d5f00a1cae8741a0b659a53ccc750e3418a1bd988987444c1e033d280e89cc9dc923f315d1d907b76b5018d62b3ad4e84cc2fe4c151a73aaee046582359a3da04131a44f441508e7774e3ee82338a2d0cf9e16fd4693e44293d029f3eaadd6b5e8dcf0379f3ccccd5ef7d471807ed119df3e48bbf520a5fe21b4351e33671c6ea1db3f2de0b13a9378a3b49f47ec5035faa443237ee5d5b488651d191e54ca7842b3de66c80f98f0dcd9f32bb99bb6b9db2763c8f1ac755c3e8ec285e71e17befeb5ecddeb306fe7f989411cf797ae7bb7b9eeb19e623c03abf897c73373216fd070eac04d8aa85356984bbc93708bfff2780af59abddaa463efd39cbdc20a1c798ffbed9eb8c87a9bfdd5b901b1f3c558a78f0ce686bf709f45a6b52ce62f7a4b8faf7fd1dcf232a0aee82773ffed21ff3175c6bdd1fee9de1f7c577b3246bbd91fb4ea577ff069d7b186a704f07db5cd7f06a97e5595e34d8be5cb20ed7e4bed7e7b2658161af3a89e99bd9dcf3956a6a84fa98d09a6b76a91bd8f17bada7b9a8db68b3b36e42d2eb303ccaccb39a1f114bdf00d854fbccd4fa2237123c4cb22de258ea48e9b9a4945fc07311c86db3da277f78ff76fafbda35acdfe93d3be51737427f5e6a08b9c3a3ff0cc5ebd284f51f3979a447b399646cfde8e2f62ed67e4518a9ed23b1f54f038d1eb065704f5a0557df64f3dd796ec31c0c7289d9884bedd8d576a39ac27d4a401f7edfc9c3c18faee5dfe494c6c241e4ed1cbb3f336eb4e256b61f131ab1cf1e06aefa971d37606e9669f3caae6b949c60e7a00c06a756c1cbed937cff1be3dff3ccff0fee339c3f9278ee6ec1b8b73fcaeae66ae9d8babd7f091da52ffc3f9aecfd7e9bc7fb96ea7ef97badde9f8ce75bc1bf558ce73c17f2d77d32af7f4ddbbfa0abf4931b77353d4fd572f9a7dd6163595c11b443d7e598c5e6d2e4a2da62dbd23d207e8cda9f401bc58e6c1ed3205be6c245ebfc6d8989bdc8d36309b7a722c113fb3c75f2a073e35577002d939c67e539ffb93e6197a5f763f6fbdf06cec087c6a37566e060e8cddc7b288ec3df5e9987bd25b7d5dddf04f69846d598bddd9f875db6070f6e428f767769e22c76aca9802da4cc0140043411e1fb4fafd0cb8d6586a1fc478506b38161ce0c9436e05adf8307788296cfb0dce9475b4cddeae2f09c6233dd8d44c9d34090685f230d79d38b4ed72889ea8f2c8ed579ed43db076fc21878cc9f76af8d3e718db7e3661ddc727a78b1a16f8eb5cf361cac07bfc83ff1374959247399f3373b386c5292e761f7edffdba3ef0267c7bdfbdab0b3b57fbae692cf5e088da53cfbf70fd34c6e6b0c1709fb0d57a1cb474b131cda360b803f8f6d6e0fbd5eaa46f9fedf5baede595e3916fba818fafe0d94baed7117344ea4704096ac851859a20300281439cfdc65318831be16809ce1ede14e251078e6d9b1e743fd41b5ead7ca7cf5a86f206f69eb339421538f0792f269e68289dfa37ff24dcdd783e737fdfeb1a1fe65b370eb77132bb3eef2c8be80f1e73f30bfde0b35fc8b4888e7ff69c030ef4a22fdce0f6fa75930fbec3b29cd668c16c428714d8a3d91bccf50a7cd72236cd23ef07bbbd318a9a568da703f4aa7461ec98f6912754c42f534b685463bc02cf65c02194f8a489e18fc3da1cc427c6239f24621fa91354e2c5592ddee81d299fd83c85b82991da04bfaf4f5f67e426ed92986adc839efe70dc39fd3080836b97f029c278034ee3b3f707fdb0ee358dffb98f3c76ec7c77eeef539b4d7afc31b48194732c8195662da4f17f7006a9daabcaa927f586d875e46123afe9278bdf38f001c40bd8fb26322aedbe5f33aead23ce200517b71c14cb023a4729fd89f4382831d756365feea67a1d9cf3f1aa5daac8b8b26e888e570e9d068c6be01ff26a5ac4d22bb771cfaa200f1e1ef146a307a44aae3581ffe978e26bd65e3ea5e1928c03e43f76bce99e9d4b86c4908659a3f96763d096606e6b05fca79d4333e03a75051d9f57680630270f32781d8333cdd8b8882a1bc72ae23f5b8ad7b5c276a139e8d0347a44e0650317bb833e619dd8efa6fe8f3dae8071b6fd1fb9b9273a42afc43183c7e770bf366e30ce79bf43e071d5ccb01f8a9838161f92613d28221f6b4b85fee49eb135fc570a6a7a4177ae440fb598b0a650c4fc6ef06736765df18081861f8ae07f2b9c377c5e6d6c9c6f730173484260afcb868ba3701e72f89ee8a22be7b3cdf3497c32f1d6e1e6a08b06dfbd71f28afd57d45c2a7b0d71dece9f7d7f2df89df65a9483625361fda8fb05ae5111578302eb0af4ebb8e65cfeb6c03d79c584f062b7f355658f63d1814716cf3ff1bc15b5faecbd0f2c843df7e85364f4d53ea25edf2176993a0dc392fb719afdb809b0e3f4de8346454a6deee6ba5f8c91033c92781e894d4eed7173dd4c180fd6d4b588f7fcad6db9e68ebc9695d48e68737d4c570defca1d1473d17e368df67333fef8bc0abcbca6178e7d0e0d18be67f8bff8449ddf2be9edf476bb1bf3ff9785dffe7fecbd5973e248b735fc97345111758991c02294a9036840dc81a84810603b8ea134fcfa2ff6da29c036ee7e5aeed3fdbcfeb87080418040997b5c7bad7b9ef4d6b635c023cf339d47dcd4b8e33eee192fd7554f354985a5f158d0a453e71ec57260bcd5e1a338d46dfb14635ffee1f94d3fd3e03397839683c2a897eed442cf7698351ac708ce7de6d1102ddeb0921d71f5cbd1cf32795cffbeafafbfbabe3eb97e3bd5700dca338368fadfbc768e7cdbb507b6f99ddfb131efeadc9992fb4b3ff39d86e6731069fdede85c7f76ce38e79daad785d7b4f3cdc09d5fe19d791ed2bb6045ddb616bd788656cfcc40cf1a7ab8d0b698fe88c03bb349c3b48436b2f44af0d476f7435affef30bcf37ebf8fb5b576acae57d5a8cf32cfe6510e0c236ec0cf60f31cfbe20fb49ac67f49abe913bcfb311c20975497ba0ae21ec5588c4b0d392936cf979ae2e20a8fdcd65478ddea7e473b1b7bd4d824eb2f7dc6d7d75db3b412e3bef6de716a6106b4af79d7288fca4e325a6c8262d713b5d3634d13cc719d42e457939af9df7dcc41ca62029e60f4d08b4983398566a7c258d5d73a5d575abe88c1295f113cbb48b9e549146bf4ee98fbcab7339eff732807e5ba5bc69a3e3ce7652d5dafc96afcaf6b1914d367e02700ae73060d4bd64801c7c95a884228113ddcc4092df1fdf3de2f6886ef5f057adc5368c887b1eafd3a905f7f832b39f7ef9823c0d7b5c3cbecf76566b873ffeeae9bfac7f5b22a1cfd812ed55e98b81685af64ddafc593f86c8e5b0a704b8d9fc5a144ce2539c7fc928eaa88742fa66e67afffaabe69ce9f0b7e47e6c361db885aafad7b7fcd8a79458f72eb18618cd9489de7e39667cd8bbe929e3283c2afc0cb1d4d28deac7e1d0c60f4fe50dfeb49b431a4e68cf4af664efc377dec6ef1a0b9c99fa683f57c6a506e71ef99bc9971ab7d607b2fbc30fa770707b7606dc42a29f6be7c047e98e241e31aab70f6effbecc28176ee815c34dddff96e8a0b6dc61e3dbc0af070a1ef5d45cc7963b65ce37a3ebf842e066390b41e36f4e95b3d6c9ed74cc18fc97d0c772fc01933eb57e8b303bb91bca27614417758b026cf9875b71bccb9d711f7a2cb15fc8fcf9a1c1e6ae095d0bac557c719e053c08c42f2fff6f7e8e6437eafe7e37bafe523bf0c303fe06c40bf657ae5db61f7cef373be3b1664fbc2db381feb136dc3db389f9961d1359fb9a8313d878f6d2f65ea4beeaf545f8877cb2c95fbe968d82c47e3dfd97cbcbbc7bbef39c2fbb588c13372cb3e9ab7eca37ccaaaf091f635adbdc5adb94b2b88d6cf41b401776438302a91dc9e275e0e0c6b5dac9fbbce85e7a364b3b4923a3afc3416f33b7fe48dba6b4931bfef7a8873247293d8e079b389a25c9b39e1d1f76e584751319f24e33c6d8e9924f75ace78415f8962fc4af9f8d2ddbf4a3ece0c8abc895cf2d17ecdfa179853a3f7735603d6f78b80433cef6f9ec344ec29d3302d6be8ab3ebd1c298f0a63650445df61ac637e0aa3712a0fcaa1d834002fe1f855ccfad50cd8407a6c82c724fac2cc933169fc4a7364da41b1a3f8b5e6fb7d47dfb792627ad33e758adfec877d961ef7f9aef77b3d4aeeda2ceff96c07fdffc4bfd4e2501ad007d435da0f1ac8a337b3dde7dc05fc039ec24c0d74ae692d0d8c66e62ed230bd68a90b83676674cdc6f6ddc57310255cfbe359b8268824d9317a9d737e9da58ee19062cb4de799967c94bcae46f27991caffbdaf8ff7daa25cff620e897e2f727727e90a250c45b6c48e5cadb5142d9ec92631f79247f6e3199c78c0eed07e975ccb855e5d22781e2066fd8ba87f9251ae4434f4c1976293bd894f02f59efd6b803acc4e8503c4bf3dc6ca7b96c60256ada69a44fc0ced935ee4fad0426b8fd1d8a18e3664bac9f7e3cd1d33f79193292826f43b97cc9133d6b98a50a1a7ea959bb1eec3005a77265f37bf6e35ec1827e3393cafef6bfd486106d034d90be6eaec88e7a26b76e7147c7fbd5a9bee6a1d0ad404519b19300e2f6f268c4560dd5ff2db95f044054e862d788bc15d7cf57f25f697e72ffa6d985d641c44b410e0bba2dcd48d95e69ea8c2516b2b26a7d08546b42d30f34f7b7702fc43504c6a5e5bc88f7b620bcdaef679e64ac5eb8037d4b3f9d8fb5dfb41c63295fffb2ba67821bee3133e60affacd8cb500dd56ab5c6bc1f4c08795965a5be28adfe84d7d6efc2ca28757b935accfe64da22857d03d78ccea99bb4e29bf91b3be3573d7d7f100f87365925572a4cca048047387ef4e5d3103ebd1cffa5e8bb8518bf09481fa73b44825e59a64131e295f288f62669833173cd28a759931f38de7e5815ec77ad1f418fa77b3bec1f58529e5ae5deb46667678d967f6f7d40cf92247a23d637c045f23e8281b4efb98dc67bd5f3bcce19bcbf3acfb14b3ee72d037cfd73956ddafcdd3f4653daaf6b9f1f3b0b8cf0cdeda4f16c5422b57214e128c6d009e73e5f29c2bb8c42d7112e805fa4e50f8c615a6f31446329587db3997603c3c382c57ae7762db3b76119f233e46df88b9d3e1b3179ff7e76ba7925659731fc967bc3ff77ab46683df72c1739fbce8430b2c74dbda02302006e77fd31fab28a3efe60833ab42af7d7c7712d09c55cc63d871dde5a3a45e1ff6cd229d26b995d4136b5f67d65d8bf0332dc20c1ce5718dbe5ad4479c8efae080ec3bf4081de6b3bcfc417b8673367acdf1f21afdf788792d4ba0de230cd49f19db5ab18689b2741f9c7be635f7c85907f6fcdc513fc7af89daf730f8ff99e33016959f0ba1fbcbf857e1e6a7d0cd3ebc3e8c74fec918d942cc9c46cf2c34cc1bd5675e2a9e39a1c734978871fddc513f47798a9583ff5d58fcb9ed73fc98aeaf36ace3d037196fddbe371fc3d8355afbd2a21856a6d0f9046fb1d47ca062ebe8d9b009cfe06cdbf7837e01f0b73c579ef5c087c6bac856c8dac8fc1d68dff3ef0f9c37e63006e0d7d23d61a7e43934dcb7c2476891737fb57828988f9b31e18ce7f6588785eccc63c6b3f31a0f289997a4c7dcd61ee2f4cbfdf35a207b52b3468ce63499b55acd5af322caf97db79ccf23277463cef1bbc677f3877dfeb478c9ad9ff52495c5cabef360ddc0fa312f057059c2d17bc4e07a206bda4b60ffa0d36833df6caef4ebecec3cc71e6b9dbbbe92f3176899fde9ac9009ed5cf24926f819302f2698176ecbf6c47733153e8a0b8f68dd6f7e1d742f98b9561d5af7d06de6b90d53f3c0d9942b84a9aad097de3ab54c79cd862e7477691fd5ac4b4aafe5fb8cb9f11ad67a10e068d073a27610e598f14c0aafb7446ee29f04e734a790f662238e7ab6896714227192eedad5fca9f0add0dc2ba027a3f01b75e4845ecf1fb80e72f775efea97ade6aefa4c73f74f7cdcc35b8ddd6dbfe6f536b158d754d7bc1ac5362cf58ca0d8395ca7c0ad9eb5a7350e6ec29eae89b2e66db329a0a3c33a57b6849efdc486dde4da99296dd6f91051a235cf339ee740bf7e8239babc69eff75b9ec2ab3dd2ee3381e7694d9f6d73048da28a3f3777b208faac57e7acd89e1ba5c1bd23f8ab8dac9d1ed9edf696e74c27cc0f3070cc704ef904f372c2d72086cc79162a4a36f0653c7b8a5bb615b0fbfc79ccff79755e39d9088bfb4ebb9643803f0bf8b8b8c75ca3d86ff89f6bbfe7df993fb3d19fd95c7fa6be2efa1c199bbede8403a7247fd5dee278f8e5d8e1df6ed3b136b9dee4dee6777ed8ffb8efd737fbd5d2babfd0ca8146438d5895f28466e67a06e7abd9298cf65610c91fccb3bd87e621f910f998d17125e5b1d02c9d674d049ecefd97afd5caea19595ab9cbf9b8587dd35ec057f44ab5b616f93fe415da8e1edb5c01b6147e9c6c2eeb7071fed0e79ce3fc679ced72107925e63e90ab603df07c107407e3d6ff563c1bb07f96c3cc0a8aa4c5b254911b33a715e68bbd92b9c925e609c01db875baea65d9d9fc215dccef3ef7036e9bfb03a548b24af3d540537839309ac8f54cdff5ab954bbe0a7cf54761233e6c22e634a0c79aa4f00c6860e9ff2377d7592f636d0dcbe490d4ebd1bef8eefbf76bfccddc17e25ed0adbe1062a2ebbfe365ff1a9518bee90369ae0ae4053dc68cc46ddc0bae0d1131e725f0a1b40f0fc040591174df3de74a6ba092b1aa849d1dc141504c9fbfb26f97f3877b4de8c39c0f7a3915383858335c6351a173a7f99d58838e31e67aee6fe6d4a2bd36cc0beb88fa260f5d841a93e6c563ce90c4c2f56da6afcca5101f832237328df1be9affee81d37b54ea590e6570fc3561ee92549c44a37565c10d003dd80a3c7a45dc5ba20fbd28180749f9de843ea7e15a13b4b56c712831a30e7e9ff3bcb532357f00bd979ee3dfb1f6adfd15cc8d5371bf52d99386d679060c2f74c828f7dc324fb8ef0e23c935a49aeb229a5bbd761c09fde9b1255365466f6bc65c072b76c827da7e3cb46491c34e9abcc93477227814a03bc979bd14740ed202aff52be7c639eb6d75b4bdbfd25e3149abbb8f7cbf06b67d07734dd1d412866ab8ef9258c202ce8ae25a25a2c52be53214fb2e5dcfe4d877015ed880d67e479ce6afb93416a999e4a3e9663d4a1e568fdfa78f1614c9df5537a8c827519c02fe733b3b323f5cd69bb91b5c975f07a317445ec3b859f03a028f0bed1d836298f824ddfdb3dc674d50247f8f16d0537614d1df878f4c46c36d92f69a455aed337bba5fdceba16f739a59bf8738d45095c61caa0b0fd2b0c5333ae0aabb7d7dc1e12958d7f52876aaa731b60ef094fc987e6f5fc947feffa2077dadd50a4d2960b9d1631ffea12e94f15ecf279cf54d9ca7c1e7002ef762d89e83d93e26535527cc475d5fcd607d5c8b17bea53288361fb4d6c241dff90f7486bad8b0384bfd6f63b3fe5fd31b83d6580a7c81d669ea86d123dbb31a2529d9887b7cf0016765cfdcfd275cf15e79c33e3c637ef806363b4c6fe2048ef49bac8bb11f26596fe9ea3acbb67fc16a6bad0fcdddf1ccb324e367d65b98b02dbbc275cb37af6b759e14dbcb029a26674df7779f2161638cbf36fbf2f6fb9e67032df065ed3373e6527ef1f00ccd934eb9e274935bc76f151ffd7d739ff149441bc1d86dd6a89707e48db544fdce37342e9b355091c300ffcb7cea5c0f149aab12334cdc3f631c3778dd98bf98f5ed593bbae67e7a8ebe2470c5e0a18a1ddf55f037796db43cabc7706038bedbdeef3b01f7fdcd10bf3778e3805d87ce26eb8769bde509cfe87b5e8ff65708bb084eb6bfa39fd4c66e9c3b3316001cffc8811bad21cddfd912dd7addf162be31e2c34f239b4ff7c9bc7f5fbf6fd6af605cd28ce27baf422da149b87f9b828b0eb667bd354c70c9912de59eb1ee4b50ac863e952568cdcf5afc84b2a3f69a17ca5917e2241b70b81f699f8866fd8ade9c054e9c1ab9ca3eb369dd2d819d17c78e35ceb7d7fb5ceb2cefd7fd1dc72ff31524cfd863982589dbd9956ac5bcf9277150e60a1a97b85f07c550a02ed3c44a6b3660265a32b7a915143b877558950d7d3760f972e3d70e3d881e7de6ca154761283b2926275124cc83b575cc992b5fd193ede69ff6bf1ea7b3954d79fcfef76a373c2dac6abf18fdb4ef5a0def712dbb13f78577959e9bd7b8ad8520bfe2bb8a795ece5aefe8519d04f8189973524613f49b187f099c53c57546d8fc938426f3e573389e721c31eb3741317cd598ab3a28fc867d1d6a76fab1cce07535fdc17335beedbb7ec5ba4ebef16ed6e918d2eb06861314ca38e3ae586bdce1faa83a85ee14fe5990cd2a86cff0cddd6a46d7f6e56565f51e5687f5eb629e94f7b8fd4ddc4efebfe783336828c0218c395cba96f929840e5076d27cd60e5f3785f585f510eddaf5d530d6028ff15a9b31ce925e17216ed931cf36342080ebb5826223243865e9be67004becc24fd582d718f3c514e493c8ffec7a1c6b6c30ab2b0a60410c8eb12655102960f3b0d6bc12d80accfca4a55e77aac5ee9d5f9314bb936864c77c3071d6c3f1ef35fdcee9cfd3f46ec76ef4d83dc5dc3d1e73640e30e76dae0bc42e645b28563179960ef7d97ff1eb9837057666fcca714bbf8d5b0cd6eef66abe861bad4db3a3d8e855d4463373d7296c48ac4c1dbff8c22a1bdffd7bae7744beff3e7ff3416388e20e61a14f75d65aa79c9a7c0ae7c34ebd7493578ddfad976437c09fead872067ce451ebddda3c4b37615c57abd51b3d3c236742ac4ab1abb07d77a3e3d1ac461e7d508857d6c5186ba163bcf2bc4887c6623ebecfe17fe4596c748d251506e6db7db9cf1acce65c6aaba8c3848f97fb629f35cb8151ffda51aeebd92d77cba52efb8edb21ea1fa5a7a029a88f211be2405be4ed8cbef1d963e7d7765c03ebd4dcc2b6ef7e1e16bbe1ebb7c160f367f862989df7fed7b842548f7110beb31a3826c789aa97d54e4539297385f711ffe17fd76f3516348fd344f3e01b27d908ada74ef7a58f3ec3cc2943afb4822206df02e6eb5381996df0203613cce0e3b6995a121cf4a8f154624631ee5002075280e3c31098ef9f5459ed34c008344a9fa3626e76c43bc0f4341233c5c0f69bcc73b5337d8a25a209f0ad72a428c685fe9e6c3c3dfb212cc6517b27d9f8a7305a33f6b6c815f45ca1dde2552d871d635198ab3d1c6695b06e7124812f4bc7f8f4d9e0d20317bcd60d384937638ef6023a102749af819e6a760a5dc53a243bf8e21afb84f698a5ea84f5600bd6b702b7c6b53e6eef969ecc97f7d43d5e7ae73f63250c65bdd37134b40ea3c37a33e01e6882a25f03d3cd7c8a25f40fc07b38d15cff9497e564a76ff552686d6afec29871db989561ad0270fb03570ced1a6849614e6fd7f259f8cdcabdd25703a6253bf29a8f1d9e7902f646c7d99f69f54d9478cc2a715046029dd86e3cd8c96863aed271927bdfcc46ff8d3a24a2861da4f8bb663ea79c35c3d80ed5ac47d137f40c96c1b176663177dec40a8a9dd1e29024adb146faa278b0b45dae24e78f55e891fd144646b91dfeb41e1ff471c8ce4ed370e638e0e829582b55c44645f10f734b813ba5d55faa7cb265cd4ec9ba4fefab6f55b32e2847952e6bbb42efc961fbecf39c5a43d7e7e199edb263b7782abd4e59a3b401cf9cbd429e991fb55dd63cf1bea9354b4cd65b33d82edfea4f1d1478dc5703ccf01894bbb24687a13533fcd6bf95d0de29161b397080cbe7fa3e70630eef17bfe6fc66fc238a26e0ff5d175eb574c737b5bbd65ba3f7897657a7dac9f2313966fb6f5a2b19665fa9c7725d6a98f580a580fdf26be8ee7ec24fc73696d626e630eca0e837c0e831f6101cb4029a97984f34a4aef5d1f5670c9da7f973fbc0064e9afcc41cbc58ef36f606384afabdcffaac649baf749481896c71858275801ae639d2bea4e873afa7762ac45f981b620c22c5d75ff1f9b9999477bf7f336f561a8ffa515b946d25c57347ba2698efa158af9098dd130dd92aafe1797b03737c6d6d2d3c6b00a1c66b4c6a47c7b13efad012af21fbb3b0c85f738ca76e6a382fc1474eeb23ab5b8e66d837c6b122860e23e82ad512738c7e2f631c27e208b6a9141f7815be6792597a06caf45d8a3df5fb43f347ebbd463172037e7fa7d7f6bb78ce96dedfc00c35ef21d66b653e68bc3ff38c426795e7fd11b7a68aecbac35cb1d004aa10ffb3b66cc1b984a7fbb9d0043f85a392e3a0761e0b3de31deb2c016f0cbdcd23d9fda09818ba566fe13ba57f8833ee18efec8f8bb47ab9eb107fe8f5835b5ec7bbd73a941b3173784dd7e778c4645d30f43959f7aa764cf87f97f9dcb0b6289f74f54ce5c7f76dae79bbd90f530e0c7c5203cd4b70f7ebb94b9edd3375ee6761361e71517b1cc50aeb466bade9b821ae91e359c8652937235f62690db08a3fc36904f61a342a3ff25b3f896b9e7675854b2998cf8cf6bd3071de454c3e08dc1e32caf83363e170beb1032f40086d018fb562cff1d085bb3f6f2edcfd6c533cca094acd27a07fcf31eb14f0fc35c54b153f17633614da61ed77b7915f707ecbbf1166abf45c9535893cad9596b79aba3d5e07eff53204f4c6910375c4f22de70fcd24eded92f9c32e9b4ff7df54f3f04bda9b62a48c732c72a5dd000e8a364602deca3f8a54398c4f4db86ec7b6b1172067c4dc41cd75938cfc95c35a6eb90d2c4b0c1e7ebbd570829637f7b375df005a84b6ac29164b5c31631e475ac3e8652246022fbfade7f31ab9edb34e4f8d191f232894cdfd2e2944d157cc0347c7679aafd62b5703c7d273cb76047bb9d1fce4e497dae316aff06d3ceb6cff62dc9cb51ab4fc1314f7d17192f50ea10fb9332297d6f2c3abd688d4c77956cbab2bb74e4f7a25deab636cf63bbbafe1b7f158ddef2d5dcf488ab52f58ffbba418454453d6b3fbfcb14a6e3f60868fcc35c3baedd2522d9ed1fa3bb0c52b6bbaf975ef43bdc74f700f2ac92aad43ee53ee3e634d07f38de6db7b8d8e5dd9f8aed7cb984381353f989fdeb8cd4fff596dabaf44b4f0659239f45acae17f415bde2b976e62c958d95df7eb6af43db1525f9ae78e6225473c13c7f983d29af686e3bb9be68dbe3df095177dfb6b0c66106df4b59b168c71443dff8d067fdeb4f7fb14e32be6588266bf62bea48b7eff2fe8187a7516c5585ff2322b48f9b5493903e3ac162ec73494db78a8b187037019553cd38af851c9ade3c8591fdc12b299320ed0dd3fe8f7359993007c13f8dcae6b6c9dcae7c9fce17bd681bad7517bcc19eb1b09e57ca9576bbe1e53ffe6a6ef3e303f166615fc0ab91fc7e1dcabe2f8c59834e4c363cd3f2ad8f6d4fd8a631419e97e53e5bb3962111d4f99720bfdba3a28760de258faacc79763c8fd0183e20dd6208b0dc66d2d586f8973e523e27cad99c49cfe5e3573bd66bd352cce5f14f0bdccb7155ff2d544e83958d406c0a90f5ce000df159c44e002638c73cb0b865a82bedfee25ceabc18396f7824234c8c59bdd29d4750aeef94f0b8aedf88ff36ae6e4ca4ed29d3ee3774805e30d909701976c72cd42e7e0c5e6b5e54812c5ba00ef1a34b5750d259ae81cabd560f32f1ad811e2af4aebce74ccd37f9af9bdd6f50113243d6527acaf4ab942bdde1af091c00145b49f5afdd4bef9a779c4796e889ffb6a7e971f86c5d290cf59da7b5accbf2727f7d7fcec0ef3d83cbf5d1eaff1741370df7bc073f22d6c620d9e14e86e4d5a0e6c937db052e1a320bf8bb988807c30b419685fc27f9712da59b4f7f3a3ac9d1ec5d941d1af278d3a41eb75eb98b2267fb80376546edbcfd2be7beb5821fc65a6e49368fd38f9e996f7101804d4e6b8065105456eb51843c601788c1b8c4525d9c660d642007386599eeaf2b9980bc19c7e38eb1b3cfb4c71c99516e9a8e572033f69cddf7f5231e795e3c827fa8e1eb80c803f9841f7b1170e8c4af7add4879eeeb5261fd7926dd4ef198be0b03ea3638b3df85babbf612ea4e6df09dc8e47e8d123f6d935dc4b5877b3998fe3cdea49be66f3e99df7e2a3be8543f1a0d4f540d6f934da9a5d831a9be1b5bc26ed2de730d853b9923b55493333960303363804b7d0d0421e94aa0a757d43e83824673c6fd4070620841fefeb184898bccfc1bf0f1d53593b0d73aed1fec2be03562b63ce7b6831f2fa0507bbe64bdb697eb2c52bfcb48b18b914bb92fc7d6fe5c647094c3ae56be8cd9e24739b9612dc9f8a795a46ea085c0bf45f540d2e61f20f96322806605e2dbfe6d99509eaefba06c5f3115659b1cedce4241a096c3cf3d8ad9f99efa32336e171bc5f1da62fabc3da5bd9ebd37d4d7fe45f0a47c002f33c4b014e3e8779f29403fbe995c0bac00ed7f037d60ab996b6af5b5a77d94914ad0ec7d8929dfd7f725a8cf6a785b178cde6f759ca8fb394d072fcc805d27116ecfc7b9bdf1473f0b5bd6161a64f63a5c319ef09e447ae82a639f4d4a03db46bf706ed27ae4b0cfa06f605eadf7e4fd7abeba45874b565bdfb35fa334db237b3ef8ee664a9e46dee02e333ed78605481758a350ede3379ae2ad6dcbc52809b6a54422f9cb9c2d7d0ae91d0b58ac1c1d4f22489e881fb9caee03a42c7fd4a79eb229d8e57bbdeef6f8ab3fb426e94436bec8a17003a32580f9ac73e72c163f22a6ba30117b5f987fc1574cd998f3ddae07a87c3cc5c8233d4eb3ad760e687de7ee1edefb1c8070dff7e3373d77fa82f28679829a33da8e8f8cfeaff9dec6bda2bd7e9f8753997cf8bf41e7bbce78c090a8fec266e23703320bf77b8fe20f42ce3983148c82d7c7b8299440fbc086276eee7e85c1dd8787583d7b5662c6c1f5a518cdd01d783c95a2299f6cb3cafc8d88356b70f736be086479e014d40688b69be89eb63f5f9d7cc37a17112959ee9adae382934472078a31bca9342e818e52781fac8f0417f3fb23595aebb548cbf88cfd81581faea756e0f6efb127582c26bbfabe6bda7d761965c09d89f35fdae1673cd67a63e7f5dffb99ed7ec8869d2788ae968df64e9f8f5befedfaf7fc5b32333ccb7da41e163064434fb8790b10c0e6b929caf7d9335fe4936e03b3779ef783cc7bd45af80d69bc579f1d49207759407d662671ec6a10b0c54046e55ec1939c0da3499ef91f9ddb9d7e6ebb91be8e235a8612137178afbdd59c57a41be12fbccfe75a07834d79af159857986483e00c7dd08d5de6a2c4f4d7b3e8b76aaed9b05d1eed8e28e6443b12f3e97fb030df2471b7ae4b5d1c04eb03671b5c27c92707c7d8bd7f35ee3986be01812f8ed8915b9713b4f6c49039abfcca1ef669a8b3dd6fcd17dad13234e8272d1ba6ffbcc43599f355b06baf751839ff314bac98f28f24bee7580930f354de01931ab238e6ccfc0ad7264bc0bfdc663cc3c6b7b6367e0ccd4da2adce3b968e937ac35d8517f44f32ddef1851f79cbbc32283c8defce1dcc0e349323ecf8011a1a36cfafa35e5db1bd54e8cf0167ca5a1de01692b45f707c5f6b4a43c7d20ee7c2e61e308e51fcda7ec9fcaba2d6fb86f621ad11835f8bfb75500c9fd9b7315f6c9b2f6aeca125d1c3f37bdcf3e67a4a38307a8c09169a03ddd73566d4e5b1b724b42ee326405d8cd664bf0e30971f3b79b3632d9f9ad726fb897ec9b6455af43b40eb8bf5569c35f38a687e74ff24c02b90d76c9fc8e7784a44320d47aa3b4676fef0941f86bbfb8cf607cd1c25a28d25768cbb5bba9b1f51e4555cebdda7e09701cfcfaeb744ee48f111ad2f3cffdcb1ce932ee6e397c561bf5f0c936631bff3217ee4331f0a51f7cd75b128d85fc7e6596f0abcd313d6dc01f6dde3be4b91a990e7584ddfdd1d45344e655a1ec39961f01c7dbf629e33e32dbf197331c09f4b0b33b5bd80f5ab8588940ae93d06fd8e9ab48b7d7ed81f9669b2bbe797ef6a45641b0fe8db18dcb701fec1802da6dc115a74141f6036da09819f18b31ef1167a6a4e50a06768a267d77894bb5821f747949e416b38b65b0b689f724c67b02fd91db5b6ce4982d39be2325547ae3a49e8233be68a9ee3b94dae1f717cc45a77ee8e675066fab533c7018e025a3e8e15c6257f47f455c0d9a2f9cac6ac79027fa2745e83b90e83633351737c2338be9d19a6e6a7e29e23f3c9d8ac69959f44d3d1275c7415a27c54bd7cd3fad557e6441bd65add7cc0b986ccf5dbb4bc0ce1483949b13f1f13440b4b1ce8b1c4674d7cd846675d78c67260d0e31daf19d9f6e1d322ededb2bb2fffa0cf2a22e6d1d5b3a14731ebebf9b17ea57d09c57e7a5eb45ff9eef05944ebcf6649ad4f664919c3eca906988428466d13b3653383ded392879bb35695b4843e1ed82bd65d8d862930101fe7ddbeb246eafc30bcf727defb9c59df5c0e8c06fbd0952973024e94f094cd8f7925edcd28ca948cd5f5719de23cec296b58afeca459dc391ddfe78f4a5aca58175e3973c7a9b4a1155f09cd8f3e73d796809e82e7f8eefa593eb226911c661db1e258bfeecaaacc55eadcafc53bfd71c6b226f49bfbe1cc698499994bcc07815b4ad1e3a218a632c57c7f23ecac92e0fecd995f00d74cd2eb9ff9f9ee7b663abadbaef7b6cb77fd6ae97a3dd6d31b5bc27e81cf0bff463f14a6b7fd10344decaca1cf4f0ae977c493e2dace46c96631fabef3ba5fc193427393ae0feb3a1857ba15ef1fa398b392fbac079e319eabb2187fb24865ac8c2fd8c8f16a37aceffbef83ce562dc13dc1d83cc6f37b4e86decf8ef3b2b3fe2af8024a681836989f048f11f8a80a705c98c08b3286b00a0a6901db9aeafd3a706aee71516e9983a34258a5a9e732ab7024daf7622ea241db778b9518e1b8e3d571479e1bc84d9e49c0fc017d661a0e9c962fc50866c0d4b4d8c9f6981f11f0129353182db887578c5fb52e72bd2ee8ffe12b3405b64e43b131f37bf49b08b3458e25d292672f909fe37515622e3a9ed6add69b67bedc8cf505f15c46ff035fc5f9f090cf65a71accaf6ea147c678dff37d7192496663b670a49a047bc5e335503b6656b3c634f339b09e59cbe990146b70f84133c8cc6a9e4ff3eb19bd2766d455a367e4ccf7332149e1d9e0dab3da9cf0b3cf04b65a5de648b24af7841a8e4b3bf6ca61fbaa97dcbef7093ff2c54f9fa175efd1b599b23d4d15d61bc52be8cd61c6759a72cc4fc7404b87b5f13ccadbcfaf7bf358142925e719e50d0de5fa61378e66f8c528fdb95ba7d51de7fd1e8732c03e35d70566dc3123951409624c8a3fd97e24ef63d3564bb6d2b359e0669b81b341a622da5fbd1ef3f0f418bd87e62969dfe72abef5a06ddae39858f271ba16c0751e7ce69763df789ebcdc754b6ef51a13ebfa1aca5881433b00cf25f6395f93f31a69af15f2175c7f7a6cc6dcecb856c0d837e4e3947e8f7d7ac9fbe3ee7cd8f47b9bf265314ab6d9bdbff33ed7b47cd7e79c9f62d8c7ac92d02a3234f7e1f43988a616f62666a5d8562f0786a1edf051be7bec0bd7c8c80fc96675afa5bee77ca8a49df1ecd43b3e9b77b3ff676e9b2b6ecd6b4e209f62a78bae59cbbb33fe41be59da597d5b0f6b7a530f4b5a37f806776fb5a7fc813ed72fe4a88995ec97771e90b7b929f9b5ba5f0b4f199f687d5937b5bee875d605ef7d9949cd2a71f0387e1ff44ba13517f55c8593a05eff014bfacc33c8f2338cf9adf5e48be261c3f7a105c59c14b3b687f690cac36d1e4b7dee9fe8f2dde492c5ecf52d6e8caef9786eedb7cbb47a593feeff6771c8bea72f397c88178fefd7edea6fc517ac0b70ec631e3066dc2ab07ca8899d24f4acc11971120573f972cf173c433daced6257d375963c4b5a33ef450eec13f784270df2e526e659d39af25bd10ba2ec286be47f15c5969c674f949e2135c0b50a0e04759256590705fce549440bb7c53e0043c4fc080d735fe23ba14e875a005ee7b30e4ea1502b90eee24160ce16bcb65550a8526abe55ee8dd31ecd1bc651ee54cbfd2422e6dd64ae5bfc3e4dcbddc9c7025765acc035e21862575621be6fbfc6fce1ac5f8b01fe6f584f45d0be844e0ee5d84111634e92b9a462fd39575cdee0a5a3ef4039387afeba57e75812bcbce8e12b7a7f7fe0d498f104cf237338f3b5ec3babf6fc672de75c86fdafb1bb271909d60f03aecb3fc926a36bc2f306c5e42867067a8a8c530026c1a4fc9ef16de06fd6fc93b9b302fe916b355a638c75cc078c27661b360126139ad0cc795e76e4a94d9773f9921df6afcbf9f45e37ffa8076d0445e2ca1a5c81ea8231ccb81e4e769cd7abc138d3ac5def3a77143dd4cf22ccdbd27ec0fe651f98373c230b2e1c1bf520fdfcaf568bda621ca404363866ce4eacaba469effb3cd7cbf8bf62a2c07b13b5f7e9f944d77c859ed1a7f7c2ec52230746e3bbb2e1fbfda6dd0b7a8d295e636fd65bc778f9e74b6625ffb33e2475642d0edf729d7d8d13b9e6b998dd49441be6a385fe80a739c5d16ba9c281c6889f79110c033c087c3cb8573063c0af73e8752bb2b31178262a69eb9c57f33d4698f3c8d9fee13ecf26b08fcaea491333ce1d6b3a068f92d8d25adb173cdbe16b1e859d9e919ca856a753d73a6b9ec9604ec137f67d863ffedf2a8fa8f76e0d8767c7e39374774739738c700e0d6be83ce85a2d7352f1fa757c770a9d1ad63b11a5e638e41a0cf9cd481d291f943538757a4191695db58cf5db8a7dc1da69de49b4da56db96e75c9c4277ff4afb866749b25ed6300fb9602c7fcdf8dd98e7f781ad826f22bf55caba5febcfe279fd4272ec007f86b8ef241be625e278c22bc98f47ae5f06057cb39535e2c4f835d5c3f944de319c81b79ae2ce8ebd9af5663d92cfd16868dc31a4b762bcb12bc14505ee3a8b6d7fcbe941714dfffa0fdcaeccede19571e3d9e7e3b7fd9ab92f7df441c0ab40f19299d94b5a0ff3cc0cd01361fc36b8f1b1ce3ada596b7f5826742da7aceb3f94741deff3e01fe6c1b1bf4d9ee5f67aadbe3ef327c0ce200f0b23f45b0cb945fc091cb16cc0a753b306e8a4e5f06e106b36e827b15624f3ee586cff74ac1881674c73327806db1775d43139dbae08f16125d00b63fed5d09d1ce5f6521beef09d6dc69e927d6bf97c296617cc091bf11c3cced722bf31b143e840e056f72571ae9c3f58cccf23f5bc0c6353590783e72244a3e7738177c40c11b825fc93ce897bcc0f3461fde362c23336c0b5fa066ab16ec77e96f5b35e1a3f0f8b3b5fd83b8ca350a2205fdd723165ac77bd2bb53e480c0d1bbdb6f59caee6f2a4c7a033886b6c2f31e7a867f5a3ebf96c75e1ff3c9447e6dd83ae83e2358dfcf65cef401fd52b6b018ea53e62058e0dc0c527cf1a0dcc25deee0bd65cc0fad999fc79c973104d53c1c76ace7b8f35a8780e1cc72e078671c5715cca196a7e8e1c18357fd784d66ebd8226e28e6c3af809c328d1faac14fb2c7c113de8cf5278ac330f04af5573fd8d312d7fd90fe3fdc7e66a94685f90588bb4f77b41e7f9d61f54646bda9abf3828e3d7ce307c77638968082c4be82983b9840dd45b78ada28ea8d7e1988e6d6b71c0e19fb9de77e75ae5a5feec722d7135704a31332e1a36a88da8236bfdec7a41347e96c30b27859e41606ebd83323e3d974357eccdfa777e78bdaf9fb77dbfd27717b00b2d4fdc3b9b505fdb83738dd66debc1635f72ce5cbde13070af392828aedb5fd60f62f456638e62f7cb75beacad711a7e723e9aabb1a4f3a2754dbf41c7f5d0cbadbdfd2bcdef6be26d6c4fb19e2fd3abdec1a0adc94fdfd4f9ffb097f4eef5ef78aa6dcd535df3ec9861cfdc35eb73460f16cff44cc0ddc973838bae9ce58b959d18eb74bc8fad64931fe4f3229d8e56f6f7cce792e2631dff6bfc9bb9e60c9e3ed3de5c0d0c8daff3ed0cf1675c319f63ac7920fa9a3368d26a06353cefe72327a77c11712b63421abedf6f6f1967028d28853a09ea31c0116527190d379c034e4eadce1bc7dd93938cfaf6e5169c049c0ba036e9b1d65b43df233e89d4a39cc4e6181cb788dd5b4d4c59ac5f5b2ee035787f4bcd8d3c398551cbf9c63c1b61b43b769c5d58aeac9fc7d937c5c97f915bbdd571462f80d79c3a32bf0aadb55cafb9fcbce6e416dc558aeb11995e1f5e19b2fe187c8ce4fe68a335c74cf0a5167ecb65d55e73a7bde697ebdd67fce9db6b7e0ca24c094fd83a7e37d0dbd2713d73b626117a0ea83bef4e5c7fa6e3da3d058e4b937b45c8230c7d5c25bf568f677ecaa7ac9eb97bccd64933eb693d880a18e6a7aca39eeacbef9565fecffa9b7215ded7ed97d7ad94c07a2696e8aa39e10d770b6ff8ba988f8d6f5993fb5a0fa4e4ebe657747bc162a84b1d82e36e5c9b1cf539d699d6cf1f35f7ee9172f3f0f1e5083e1ff4cebd5e52687d49d4378c9a7be5f1298c72702ef3fc7fd65b939f6cc6aed6ad6b7b01e00c0e295f43bf7cacd7e88eb947ae78a568ad8a1df961658bbadfdeb21fa65c826c18eabeaa8e5ca1d07388a6a9281e9e45b4b1b4e61d6b17212f68393f32e81b0877f81c44d2128cfd3e0a433909744dc1f351af0bf9acb9bdbbd9416f68ae473fbd455aedefbc351fd6a84979017806d212334ecb81013e49df1dfa629e01e3f68b3947a1abc8fd2a685881b3c61f38759864e6ec731c901914994376358cc806b5b79c97005f873e9738852e73ad8bdab0035ac7768b7bfc7bfac65fe046612ee99daae43c632e04f4cabc93d6e6a573626df86e78e761fe34fe9defbe77edec6b3e9bfc5942f150bd1c189a5b6043ff5bfa7ff69bb1b098a3a2ed754d1cdc8fc60d78bc6af0ddf5b43f2c27dcdfa2b5aaffaefff7eaf8f2fcd9f76ace22258a8782f9efc189f4462f286fdafb5acf007141ac75868cf67e773e152fa9f3c3cffb6cdac798bafea28641047d7bd6f96a7b9e15f82f0646cd358eb37e9b418f25c51aebb0db75ecfd5e8ff687652a37786cb73fe2b8d1f074e721b9357bd8073682fb2202da4582f51dc9cf189ac31f7d8f04babd86e6cdcbec8bbe2ecfaae53cb776d6dff5b9877d92c5c695dceb3419ef081c548fec09c5d2eb2279655c75562d5dcf5a6f8d6ad5d6cde06b1ea0dd871ad953cb83327de65a29c534533d8fe395b7f0b1a8e3bed399eb8a8bc80fbd97d561fdb04ac7fbbbe6d00d7d6d8ab163e0784c8a45c258918dd0dcda144fefd9d6efca8ae7cea1c30f7c76f7cfa53879c1fa8e0755031f579f6b01e6b273af7858af0efbd3e28ed77ffb7b839b59d5ad0e08b08ec5f0c72af2ea20929fed558b6ec553d6ad87e57ae5ec7b5e872fd96fe61b764c8d176a66ae576acddb66d672c77e9c6530fed26c4c7a6386e1e9456a2cab3973f5fc36f67a9286a96ad6c5e2c78a67d92bd6a66eb98efa5540b12766e980c5363556ed181413937990b2e385b7a8e59cf08e225694bb9cf925988fa2cf7c148f2f47ae250d9f99af36119c13fb743f15c000602eba37231f53502e43c7e498a30f535505456ec2ef309687b1fbb37e37fe777718c4a3cafca6bad55f8b39fe81b5094c68aceca048dab56925c5fe59d899c598bb9ce20ae6fcbbbd46eacb1a117fba4696ac3b66fe3a50dc94235796b1aac26186ba28ad698a89f8383aa7a12fa2752aa2876731cfe8b1677a7e5d74e3e612f1f7ecef7f51434f09e3b3193eba2e426bf83bd77df9bfa63f3c331cc67c8efd70ce3afe3337c71a5abad2924f2f4759a3675fb13e9667307f706e2685d7ae87348c31af8a7515817798d6e7fe1958a7b43cb6eb8ceb31b1ea36073ea967e6c3ebfaaeb7f86fad15f43cc201ebcc7ef0892973b82f5d49b6c89773e8af9967ae40f68fe010644df3a1cfeb0c3c2237fd22d9948bbd6beb92e060c15aa3353873bd0ab611f6a7b57913ac33accbc365fdb1267ebb6e7393b1eca87f9fd7327ae6d110b56ab281c0dec37626d7f6ce17c583d56d2e6952df63c17fc5af1e03e803908ddb5822056f85098cc29fafd5e72092b07362f4f95abdb92fe62f47e6af4ddad88e31aa8dae5d2719f9fa4aa0d78b38b8b5a316fbe9bd2fa20df74cc8761a25d73dbaadbde66e43ff3d1b1a45badf3a6af9e72ebcaabe3b649b4971962bd93eb2eda9d75ba39ab99c9b20ef38f3b2f6cf9cadcc01c1bd89d6beadf42daf1dc488be009f1dec9985f5179795640e2fe41697f850ea1c24f9b1621eab7fd24636771bf96fd948a5346e187a10cc1bef812bf86c2b2f6b54d74686cf82d7c091ec18e5f159cdb9b1ef7a4abf8712f3ccf87530ecab3cf7dfb485c6dd16fe37e41e7df04a09bef6ce1af30c898e0ddbbad0e662b38085a2c75bdcc09ff8d5e4c35a322e6b69f1662dc92dd6d29179f7cff9f49b1c78a66bfc78cf04dcbb7c3eb1aac563477c963b0dbe65efee6b98198d67fe8c67647a9367e4130dcdcff4138fdc0366dfc6f1e0ee62e3064693147b3f7c04c76b5b5ba98043611f473e575d6a239ff95cf9d1e76ecf3ed779eb73157c6e973a8a8cef98f8776bc8867616cf9f1cd9a6ac3fe1cff9ccaf2e6ee2586ed9ba0bf716f33889483e93dd01fff3e7afa96fad4d1def9949b106875e37bb92dcebb8ff6ebe79626edc84716da9aa6fc64549f69fe70458c313b251b03fcc1be7fd89fdf97f22e637ef31ffbf17f3cbfa5c17f9eb6b74eb983a6e7b16f69b3ca08dd58ecc33f35f5103b1ee71ff275c76e8417a14fbfae8fd78cad236e61f89c5189f9e733e6067d5d21ddfac75247adddfe8cb5ad79cff177d1ab25b8cffd13a37c86791b7d68ef9fdf289c53d9ff8a88dcbbdd2b3cf9afa21f467ff995c17eb9af25bd6debc55434ef53eba5177c935d77aabdf74d1a1a098f356ddfabfd4f6da77dbfb6fd69f915bfac83dd3b2627d63e00b4cf4d098971f3c54cc19159f64119f42ce71eb302ea1c7fceb40ebf9e11bd8c9f5dd4efe1b75971df792b1166b6004aed7a2d5620ad06b2b72a53f0f7ac641b1b3987f742ff43c1bd6236b7ca8e31973f0b14fdc7cec1367e73eb1e6f169fbc4bcce3bada9cd3de7be9dcb30d718638b1c8ae1b89f00ec3cc79c8f9c43521cfa4fe100f51afafbe2c92d6ce867bd0ffe0dd23f5ca77f19cf008c04c736adee8a41797b5b4b17d0a8193eebe7caa5ee57cf5cbfec8ad90abd3b66ebbd0f0f5b2c89f651d253ceaf9d811913ed0b2b5ee72fcc87fa8fc49dde671856bb1386f513fc03f350fe59eff99fa98387f171b27a4c9abb6f7fefdbf5ec22747abcd6d7fe33f9fdd9e77f96e3245c5b4c55c37887c5edb589d8efc6da4c55fdff136c44ef5e27fd105bfcb7da588bf1d29775bd1c18f5273105ad8f5b31854f8f7fbeaef33f8b27fe99b8d71bee16c3e9ef789eecd7e97d66f92347a547f97df339279b57bf9ff3031fc7019808ba7f896bc11581d8b6e5e413e0b2fe94bb6beab36eade7b4dc5d7266d8eb62fc816f813f4ba6d26af9163acdb03f2ce7e37275d7abfd9003f9ae4f36a65e0d0c2b88167fd77afa60dbc4e1966d9bb266ffd55ad0fdeae7bfe4cbbbd987d7ec2939ded7c33f32a34ec7198887282f7477b43e0ccc3a6fc1ef89fb72e09871b33bc98b9649adb51d5a4d8852cc581f828e0d987f5fdf079f9bc11898fe51cea0fd704b6fb939e7c0acb57c15f77d5dd77f321f1bc9e3789359df331ffd0247680deccbc0d0367d73d643c663c5f8391c6636fa6e03cc1bf371fc1cc53575106d582bdb6deb261ff863df6b5df56e695dc9c32d9dab97a3d6033ec7d5412474fc02fd05e60bd2f3f9222e1b5d337ceec8abf2b0de4f5f566972e7c9786f8366d063f9a8893e17573ae8573918f62bd7b6da1907daf3f23133c0573773ca70241ae83a151368c788da69c259df62ce1f5f73a329ad1f2394ac0ddb77d74d105df3feb458adcc613e4a71028fe3cc3199677ea2e7efbd063a46b0298ec1daa5ea28b78eb3261bb6831dd5b63556a2eef798ef5a28cd536404c50e5c94c2f55538ebf77c77bfe15b7013510eea508ec7f8e57d1ba7bff94df2fadaee5dd5fededbbdf98b94db3efbe8eebf79973d30c80fc3d362b43f2dccf5663d4aea553aacbfa9a6df57f2c95aa0f6fca99ede27b5e7cd5fc2dd8841bf920775c4ece541f5d61db9d627d6f075359cfe9ea4fab1ef68dfbe54f7f22bdf95fee79a85b7eb5be15fc3af909fb466c0e949f0dd75cc9ddcd5e867b348a76e367fc0f59c8ef64d968e5f17e9f7e4effc4a3d337485929eaac2f4332d4dd8d852422f8ff7a060ddc057f893069c8a4d3862ad8ea0f0c8671da1df81dbdcd1751b9e7d2f9267e8d259a8b53802711066094be0df9e329e9d7fcc8ee0d09f9df1726d9c4b39f7756df3caa6672711ad05f92d51f7c1ef2fb6d043aaa021159795ac9d4ab2dea879552fa8aeb546c9b741bb09f6896f658c1e6b8fb5b0a0e5021dc4d01dbe0ae83c2ba56fe143c17f04dd518ffc12f9ea6675e64f528dc6c973cfe9293b0a4bb5e70e5e51518ce93bd672e054217d7ff28b5bdcdae16376e9b75df9c825d9db739deb82315c432770ddd13656bf732b211b5932a7d6b7d54ff922ce143a68a89fa21e14a16ed92c5dafedc51a3337b9e691ff83bad56735d49bdab5ba86baf6e91cc051ca6baaa1585244d217d1d0a2bd74137b6afd355cd4db35765d4b1d722d9531049f9cc7e6b3f378bfa7ffbc9796aae6933e71476e53f9bab2e57ee1c94dfec8bee4ee2bdee35aa69fe8238cff737d845b9ac82d86da002f9015f03c10d74ff759250c55d175fdac0ffb973106d62733e8f36bbe8edbe7113e7e721eb4d6ffc6bdd4cd56ff3cad1fc7bf579edc509e9eddf5e73f7295471325c9967865256ae82dda414179accf8f33a7562df4e321fc2ec503b1a1f99d7faca0ebe02b113d68ec5ec67517603b717c250eba97040c496eb316e6f9b89aeb93a8e1402f2d8cc6af788ef55f2d9d973b144721376f72fd7efdabf75b3087515b6f2a7635bd1f1f0fcc217dd6f9dcdf3cae3f87df672df4f9dcf47f99b5af33abdadfb20fd939aff16afd7cf12bd1362e1af3f5781aeb6364373edf79b2598df63fee7a941f79d17dd72f97ee34952375948f59259f34d7fd4819ebade1ccdca9c538ed4c85149ba4ca488afd73104d3bd998293d3eda17cb6faa85f05f8dfb3c184739e85be79ed363565fdf9fb9fb545aca5a17dd382fa78761b3f616bff3a7f5263fdcafefdbeb3b5122dabc86e8dd2c045d07dd0bee059187387ee52af0e546aed7f86eb75a14aec170bc5f5bfbd3e27b72167f91b77c93ca0334a14ddfcd14df2e7eac66b82eaffaffab63ba5e8764436b7d914e27abd1b0178df6cd9d43fadfa9f38277ca53c0e184f333afaceec3efbb6aa48d16e990aedd7e315cbc2c46c9ef7bddf75fa9fb1e43e003652a53d55b17ddea54d3c37ebb988fbdf5d33d467ccfe170c51353af8b33e71078d305e5bb742d5b0c93fdf29f60ad3e70aa2f5dcf79fbd81bcc9fd64fbd9a1ba03cab6e39df14e5d2166b0bc717fef898f7bc9eab7274ade7242fc72ac6e5c91fab687292bab7a9f37711ce9c867599bc934ccb0a1c88aea0dcbb098a49a31f6f7be6d62fb667d5858b2e3b06648f674e25cf78b1a9c0efd3ceb9a6e511e71f8d7de048c057e159ffd97977cbf3f55a9759da33b3b49a2d52f9fbfbc46bfc19f04bedfaffc43ffd7d79e9a693ff58a6e37dbeebedd7dfb3fffb056c5d5f49ef9d46323097b0015a3f6d8c9a43d86288a1937c1d232c8a565f976be0aaf523d6453bf9a2bbace733991f10b319f295f5ebe323ed43c6f28a53cb8b258ae455605e5f685e22457bd7028733d99266ca7573fa9c03b0f174bf963bae4506d0d5f2794e25554739a4f79df231ccfbdb04457e7b2e8a8e1fddae156aac712de799111431e63531f7c1fa655550f8e6ba1027c9f34895d89fbf8fd5519393d7f1fee165f53dfb3addf91cd80fb57d4960cf35e7ad3173ff44e37e57a27ef7a9be3d63ba2e31b0fba1c7f3d167bef14d9ff8ccb4d5c09c5ef15d2a5d63763003cabea8cf731af317ec0fec83b773c7b417ecabb9d09a7166b1096d263da7fcf97ef2cbae780ceddfa2553aac2917ceac9ff5b7c985f9331097b76bf493d8ae58cec705b4ee3f7e4ed1fae550fbcfccdebff777b5fe6ece17749015e6779ea019d8cba089b8639d17ad450cfee799d36036c2dd17a246ff05eb596e0d83751bb323e6941fa13d67b2a610c54cede3ddecd6ca1edbd97cbc1351ff9bc43e7f5bcceff8aed7c0f6d44e23d01bc87ab80edbbe95d78605df58ec8e720b4cbdbedfb7826861c9516906517c9433c35c17d337ba6cd8df5a8b4debb229baff418b0dfa3b5fd136711cf01acc9c9e7c04b77e2d2d75a4751841dfd53f093b3bc962ff2a66c0649f4433b4a0e1c99a72cc8f40b6ca9d5aad2f663cbf77128da7803f413f6502bc46085ccb44cfcb4f68edf618c73161acca13e503781fc433acdde8f173e8f34c0cd87fc42b9ea1e31e430e8c937077fa3ebdb7a2bc97f69411906f78ca4e21b09a7df4798282f26eef24801589f97c5dd990bd0726646b9cb8afd46fd6e43b18e779924d7c12857fe4dfc33139d6ea3337003f6601175ca0075476c4405ef65d73df77df70df957adf35216254bf47eb382832c641d506e5d9b42e8d25f04c09d66d18e53a3ff61bde33c8716b41f9afe643918cebb0dafb887367fd1271cc9663e0a0d8d11ed3585dc44025e7cdb4bfe9f7c231359f93af9f876e688d7c9cf76acd9af6be8ecd2627d1c4675c16f4c20aa5f9ea8511148c190e078e89ef47b900c57098b3a59cc231f11cadc781d6cbc777a073cda0f54fbf857417b4b7ace5c031a0c950c4fc1eb56388ad6307454636410585a0dfb2d67b141c3132daff8822e0c4b4c674e664b5a1ed91b62d33a70cf57db657e3bfd7ae41ff1ab16c05dbc6d8bcebdfd5413d96ecc7d6b134e6dda6df0c3511b229c062ecf8be0dadc0236c0ed91ee8174bbadfa3d706a8bbe05a693b15b34dc5f750fcdb6dc9de39cc59e20eada0d875d4d73ef7b5cc6f59e7fda20ea4a06be90af6675bc70a67649332259f04d92ad831c46bd0eac57d8aefac75317d257b05bb35cf28e7d7b302fd63abd30acdd64771a5d90abb85bc83355d37cf94bf7f417b907ca512517c12cda608d8cf02331692ef6d3cbd0e638b6dd6b420df8918b4c879df704d4efb67df0c8a5da37326f86f5988f63eeda146fbf686d67b18e5c7cb73e2e2f3b7380743d48c9f956487a2c5abb66b3dca0383624dfbc1067e68eb3421ea893e6b2f47f94916f94944eb2228bc06b142edd4f84ea80120566850a3a4bd52ecf8f162073e29de531acb5ae43decc122ef75db3febcd2afda69c105fd83b9a9f36153bd55b931d4fcb067331b5d1fcda71fe1cc6aa5e178b67f2232b571ce9b920923f22b2935146f9722d0eca5a6f0d33801e2a1fe3bb12fcb4788fb43c8abacfef6da81a751fe8b476e3f8988dbe4bbdf8efc66fdcc2374eff737ce31fea428c5b8c6ecdb8c2b12ff7d73c6fc9335d57e61e5cfc5845fe511e94f1191fd2a7b5c561d6fb75801e2f664d598387b5393bce54f88b74582fd3ded37d96e2f3590af8a0daa9270dd96cccff923f718222ae58f3bcafc481fc20fb16ae11f76ddfcdd59933107e4a389c1b20662df9388a35fb6dce584a8e054fc255271149c621ba3c7b108ec449c2cf517edcce843a96a8b97ec7fd3cc7c13cf2d668730e3d57c8b8409e1ff5b967659416f94bc4074fe0053931bf10dd6e5e31335823b66c268d5f725dd3d3df13b92cad459bef63f6afc1f7c07caa38ca996387e8c9510c9f9f64b3d1df07fd3c43ec3c87de4bd6fdf6966b4fd14e85a9007e5220e7ce6c3ac7907f073b9c4173daf9c55aa996e66baa05e71c066200c4e04e198eca866b5582e2cc027e73e65461fb3b378a7e6be4e313fc2e742d62b613982bd75c6cf84dc8ae4f4eb2d80bfa9d058e559cd3373bd4d4c4a1acc9a7b39f97aea8e9b3c8977816d9f8103337f49bef9fc501b17223b73a8e68e83338cf97295d9bacc2e717c30235e38163719e903b7e3bd74971744de741eb88fb8fb017db36e6cf2b9c4ba3f40c8fa767783c4bc7e915d71cdecd2cef549345e21446bb1e7e7bdcc24e9a9cef503c02ee8d06395e83cfac38b7c8f1fd6523100b52ce095b1aa913d72e269c4b724c8a354ff116e68f902bf6e91aa2b6210ff81d7846b5d0eb86dfa323dfc2669fcdc72fabc35d13e2a326845f22372dc08b709211d9ac3eaf13cc1ac59cc3a3ff8edc9c7b19bc262bd81dacb3187926bd1e3133ec93dfe3e77747e4920d726c3eaed03503f42144cdfd3de98633a7466f64e0f4c201e5b6bb531809cc21a356a767b5c8d6f92ee52982e3eb6ddff4dd84f717d630d66129313b9d1fa5296cdf8d4f82ed734fe7d9948f36ac49c7bd147a5ed44e8ff266ac57de5f3d3e66a2e7c4623aa6929443932d467e2e7ae7d7530e003b817d7395c3d339d0eb27b46f6c015f109b93db7b0ef805d4806ef10eb06eb325f9dc8dc8cdda79f09a67bc7db6f1b4c7a1d7bf635b3417baae13d3f5808f135bb255b9f3666e3c1616db500fbd4f9fbe33ecf84ec959bf9737c8ed8f72e0d8ed3904e4379b05e6e438cef56acd9d61b67684632c07d78ce3a07e19907fedd637f097e9fa39664cb9f1eb3e23f1814759be9d8d2c2f9c3857b1f11fe397ad4fb15e837ea5f5bf2dd68d195b62a7f59935c7964c559d147bf4dfb997fe898e784a362467fef90b77a739733de3ef9a09928f14bb8b13fc2e6b09367a26a853de158df6dbfc30ac7fc5c3ddc293cf8b54feef3da77e87291df4eb99bbf90c535adfc6948e6fe763a3cff2b1fc24a1313416da7798b0655cdfe15888ecf2d629430f73c3167838687fd4145b80abd49075bf928f2f520efad6ec8f70fe8f19c54a46d2b127fe66dd7c975ef8df85d3f80bbffd2af2c806f8e1e8334cebf8e67b88c34d3b677c66e7c4acdfe3d98ca9c65b4efd10588969ca38cc296636bac5a6d54bf634dee44ffbc1cafaf9bfdf942bfbdbad8799bb073faa78ccda591e63e6eee107e5131e33826843ebc45cba5ed9758ee7622b4c33b7f6c5ddbffc1bfec5575a87c70c8a64f32e7ead028e35dec5ba887d8f670ef4b626841acf4ee3b7e22a2912b61d3bc3f0dd85ff475cac6b68e14d53d96d4642acac9fe57dfd7ce01c34926228c241df5cb913258714ef0aeebd0efa6d5f5fc92dddefab333e45e785e831a316c3b5339ee99d58932847de2a6ba7276a8da3a7df073688fb6a88458103309c20dab4fca40573b1a036f30e63d06ff12035f7c97794b721278e28b72d260a182ccfb3b95ec7e7c031fee48adf6b526b0c82eedf6d2c619546104d8e127eae633c9cee8be8f0f3b4b8e761ef7b9a4af7182c893ccca73c1f3d47ce9d77bd20924244b16a7b0eb2c8f4f346831e92297adcd39da870d6372f5a9c19f7d39b89e29e92c42c4850f8c770e6548c8bc8aca088b9468bf5897a63cdafe53a889e2bd7cf8f5f1963d4b78262cc5826eeb9367c0c6a873d7d9f9ed3b566c692f0e7d0ffe3540e9c5eabf520b7381fa56bd706ea3133c30c0aa1e4cca9e2263b2106477d3757221afa32e55eb6743dae996ce939bfa1f85dd2fffbacd6baf04d50f80ef66e41b9e4c4f1dd0c7c468cd9716c71e05a72b738cd7cc98c6fcb97c3b6e76febbd799a23aac5c1814b8ab142c0c14db856ee26af8c2b62ac11fce4a5660c9c2a7c79edd42172f789e6ab628c9c7033dd2bf02edc4ee67936cde21ab730da1e6cccf52eda733ddf4daca0f09c951bd3e7310e764eb91f6aeb4de40ac6cb5aa5ae83d1670d53ad077fb5ef04edbb9ae720840a0abf665c10637c44adf14e2efc83c5fe21632d9506af3fea58a0e65aa977928835c10f5106517ce2fde21de5cc69f07f0cbc137d1783eb8c396ae5e0bdc6fec8eba4f02bee15d27ed814c0010173c09c13baf6827d48f16de47a3d5dc3af749f47ff3f3909da8bdd7a8d72997e4f7db32fec8fdad79c506c375bfbaf6df8167ce64de47aa6efb6337799a59f6ff1065138eb37b4b67d77a7e41c353a75595ff438d665831998421c35268831db83bed9ae27d8e044687b3b814da5fd3b632c60d3d64f64e3d373b457c15b2a9b712a8ae133e60c697f82e3d477187bd7e77557037744c7f27c5dd7353497cd229da6cb74ba5f1972b31a95df724d7d4d332fe7b9d024b3cffc44e75a29f46a8c4f38a92dd65ae8b77554cdd13a449ef409075d1314c92be5bcebad5189b444feab7bb315e6306bccbb3441a17aa8034709f49ac93e42b399e7ab2ad68550bd15c5369187be8ae6e5034e9cec6038404f99f643c7b8f4a7b5fca63a0c5fc3374f5f29ff590e8c06f340d06b19bf7fcc0f47650dbe30a334717b5d5fe159c04f67a5dee6dd8b4ff26e75ec383722d773f99299f799ffff02aed754a6cca9261f7926fc2a97516d2e031f54f74fa2892f3847f44cfb27e6035166abc5216ba71486d70445bfe45e296e355e04fc21c5f9fd91275d7c64b718bfb75f9be3fd6a946c72eb8e8ffc506bab35171ab0501493e68e8eaf4fb20006d8e2395ee497dafe7b0ef39f0107a3e70538ce603d85bc5e0143945541a1dad8e5248b8d405f06d89a89c131883a5e9e472c6f5d7aeb8af3e368a379d486af141f73cec13df8f67cf8f5de1178f836c72e32277231efc035dea8afce7cae0755430720ea1fa1c3bacf6c8aad3bd6e1c2953d1daf9ea6fbfc9034eb51b2bbafb37f4c07c4798b69375a4cfb311c80abf414ba31e3ec18a759313e7e720a599fafc73c7ea2e2fa5ebfe61a5b8b27f5f059e2f1e528b798196a82622824621a7adffd03ea81aeafda5bd4e690134c0b39700ceed32bd5e2e9719fe7cc3023dc6246d8ee017fd61103defbbd1e7dcf98e86bda542d17647694efb43dde680a6d9d12fcb7e73abd8e7fb6ac43b57281b5a363ae7da9c3310f1dbbb750f39d1936d66e0a6e47f056ce5ccf4c8af8d491036092cd936611cb97fc205f1731f6edfede67be5193dd51de0b4c97e2baa2be1f8d1bda8bc0b7bcf933ceb62788bc326ec0c7c3715374d67181c65898640ef988906cc1003cb475526c285f763aedd7e1c3663d97fb89e64989ecc4588df6f75afb7bddd9197424e8b7f6c379e6fc3a202e34fe8ffd4975e54f7af0273c23d5c3bc14663eb54d9f5dcd4bcdfa7a9eeae5286606f46278e6f3ef5923f7b8e21f892b803b939eea9df7f7c130e89c29b70d47143b6e3ad52de2d1d0ccadefe9a3bf309ba144b47f96c3cc9cb90bca617fac227514d194eee3f1e5c0303aee9fd76cbe7fc89fc6bfef3c501ff4bccd75e1192bd7ab828efa13f1a8dafcbac725ff525ce2f31ccb3c3b866969f9ee04fcb6b8ed1867ae46c3de3d1ef9b3ebd9e7b9d0b4b45827d2e0db79d6fbf5cfe4ba5f8d4dbebc36ee71c83f10879c35e5b3768fdb7a8fdb5fdde3df7d4e34293ee21ff8310fbaf83cf338b15703e324c07be255ed5ff7380698832a4c32937caaefe69a4f0b35a72672f5f39843d4b63b9abea2ff1fa1775b89b874a051db68ac42dd47df57ce805b307d374945b47f95cc6d006e0109de94f824bdb226df11ce1cbb636f1f6b6335da376bef3efff0c95e6fb4167fb52ec63ef878ebbef5eeff4a8e947dfebfe833e70a6a44f21598179efdd6b3721ee344786614b30b64e323d7b3b836eef57c97f56ee9ff2fc4c1afcbb93426e9f45e9f7ecf13413197a79a75317e169843d2bd81cb6329669d067d67bd350c9e319a3e0794a31c14e608c4537694aceb01dd875fbc56aca5bb665d72bbe33cc1d5b543bc7d8fc7dec66335f49d2b016e67f9238a849287b7ff238fb4dbff815b6bd6c5e6556ebbe6954373314ff6d13c69ee78a80f380413b8773bab97ae57f31c073887f55e1a5bcc074cd765f11cf2bc073df783e797175638702ae637138c71631e2ef2d30eebcfe1f6dc27d6785970b0608ef58c9d05d74bdb833c0a337396ae4ce5411d3bc64fd3759a988b047b325ccc37c6dd96fe81e64474eeb33857333b1ff85ae43c83867b108d197fb6534d5224d0990d47aa4e8af7da8ce779553b29d63ca76a28e8be0b1b9a86ac536ba3d77b1436b81f54382a8f12ba2393938ccb2a1cf46b9196cd85d3c73b310e3f11b08151c73adf3cd9afeff8a40f1a3d72a7fe4077640a3f2987e036aec836ffdfcf01792a4ca1cdc53e1d9f89393023615e6903bce1dd7001b32c9dbeacee75c777fe9ae2debe15149e3969fc938c3c25b7e0a841ef1db8c76ddff9447bd5faa863b1b9cdc9bd534e50c8d770004e56c4ce91eb9941a11c70345d9dc7af9dd1f266681c78ffd8fa0dd8065bb4f715db09a1f14f7dc63fe9fb781eb64668ae4f6d7f5aceef91aae453d631e618ef332b39adbd61b11efdacef73a5effbfc9e92f38c722ff217cf5a7b97f227f4e134f6075836e0a263557f8e9f1dff25fcace685879ec1591b776654bf7686cee7c1b1534bb6d9edac59c9587fcd27582451c8c754e00342edced3cfc727d9305f87e09cdf96988bc76c80c59f112bf28741919b5c8704e7bcbd1c183de8fd362df63cd6f33abea9eb49b89f37741fef6be8b9c71a3cf2dd6a09b3456afe5e1f92517ef879bcfbc33fc7725e7c9ceafd01a707b09488990fcabce85003abc25ad4c0ef1a3563df6ec64d74bc718def645f181f3947e238ac639d78b6983fecb3f9f47fbea95e45073d36c4deb3750a2d1c7acffdfa909c56d674f7517f009ac9cd6718a5f0f61cb1735b8f5cded4238fa25c490b73eecdcae5f950d4310c5a5b8b67b1cf6c68f3734dc45e6f811b377c77a2f47c404379dd7a6b58ba0ed22d463e24e5221d1a91d5db47df54cfbb036e0deb317e4a5e175a0f69315fec57879fbbc5f083161334e23fc7826ffe0a16bcb98905475cb47e16d1c3fb79625fce330b7e15f14e5f89e8c197946f593c3b82f542768ad6da5376941c0719ccad40eb73ff1c44c357aced7956699e4d63e67addb0dec3f13e1f259bb5779f57fec0b951f76de6ac90afbcdf2794f3343337b1185bb5feb18ab82f3543bd12756ac5d771cab934ea360be4daccbb34396a9edb6a052ed6a125a0819458d25355c71e84f61fdfb32fd53d56f8efb1d9abd1b077d774f950f3d4ba69498ad9b9599f6276c5b37bb7b927f2faadfe4410659adbdd68f7d967dc0ecd1b4d89379877c3f98a5e39cf5c789a873dd1b3c68bd70befff105a01615ab633c796b0d449b8fb5444e0093483c2b329be0c0a5f7320434f0173d301ea35aacea19d909f24e215bf171431bd57ad7375caab30471d14c2e6f8256e394fabe0a26370e4c704b8d743683c64edff35b84831a70e9d16fb5c479eb53d5f700c9c64c39c73a2f1b5a64bc6752277dcd0770147fcd6a9a10511e59a8bc0b790e7a10f0b1ecd53ab17c13d3c7c5f33c4f715985161be56ccd4365ad782df2f82f664a5b51ee87c286f3d85e0505516cf7e7abde0aca3a3b955678e113ed2f9f6edf3f78dfc373573114ddad7421b443017a81930df88e669a573432c504bd6eba0d741134773cddad0b6d0bfb1e09976cdefeae3bc80617abce8e48868a7d74b7c12980ddd804b99d604fa9db426b8df6e9c3fa3f02ce6d7f44dbef55817677b3e57fd7dfabdcb77a2f332f8f3704d45cbc15c87382f5a131bd6b4e8ee8f5eb3f9ae11775cdb075c9b4cb22a7273250f8c4d9016ad6f81fa6bab45015e8f27f156b762fb960767e64eff615bb73b49e04ec549bafb67dacb59cddcd3fe40ef6737066737adcbbc06bff24914b1de4393269b39a668d44946c269f3eba0f06013c254b4fbacbcd89b7e2f38efa1216c16ded39d405302c7a2e745df5bbf57d1afb0b7b7ad5e0b662799fb7a8058bd0407f64cef4bd49fb0771acd435e6b5bbe011f35665934ef91e68685d64e0dcee7136a54b0130a9a3264ab72b26f33e63297bcff9cabdfeadad695e123f93a71e2df15fc1597bfda69e89c599703b7a6b0bc53e84eeaa0507a4e0adf97f6b5c97337d0ada9f4f982032628442f43ed16df1db699de4b0e9c269c0b9c3bf8c0e93b1443b647fc3bb7fcd97550c44daebfa700e736d90dd1d376a382ad77e939f80f47f3585bfcdd0de65787cfc88eda769acc7dbd6e02ad3bc2b678629d6d33fa97fee5f9f65c785e511f1f9bcb81e3802387bedf00f6af92fa5a8a277112a891fbf88d45a4efbbbb1378bbb1a6608fd9968fc4495f277c27d8e42287edc69ac66339ff3ef43ebc56e9bd5bbf000d34a96da928b4afe4f5ac75925a3fe2f7f09bf29ec11a659d1543bf1fd67fcdffeb1eeef97dc19f6fb04e1334572c397f91d08c017f905383436dc01ce4826cc416ebd5114f38571bfc5b7cfd4cd63c529aaf7f62ea98a09135f60cfb65e6203febb805fc98be76aabd76fc3f620841bf0538e9798f202e39b67d876bfd39ed8758134ecfa5e2f7867e95afbf6f6c6b7e8d5a6e5997117b071a73ad7e15f6287f5ff2717aef8403c7c03c620d0daf86d63ebf1f789ab55e2feb4f51bead670d1dc95cf5ed5aa0f334838b9f649b71febebc36c5d97e79c6f9b5d0b6e17938396bd7f6d92e95a2b5951c5f1867dbd7c621b45ea3762f8a4ac710359fd7847d76b1b3397ea4f8001c2826c71c1327070f386c4025e87768d7fea0fd0cbd0fce318db6bb5c7b6f6da4718e6bf83b5dc73cbc160e42af0faff93f8a2bee7a571fb1b4668219dbbeb5fa5a0ee533efa2d6e9bb9abf0d1f85a3b9fa1473f5bde5edfb02369ce7d823710ad3126b0df6db52f02febadd6929a392df6f414a2a7045b514247a166fba66dac99b7312ef9af8b7f6f732abdae27ad8dad99b3ad5f5fc733a1f6d1b40fc89f73ac3da9607f0ada1339f62bf22eda9bd0d3d89dc85e5c7c476b9b28fe8e0df69f94a72187b3753e54f3be6c7338d8989e3e5f0bfbf5c0be85631c615df2398e7df0be8ddfda1b83e32ec422d87f72d03e0f7fcd714ba3f728620ad56a88d5da87393adfe8d177ce6bd804f26906ae4d0a0e7cf0e0b3ae90b6c5852cce7a2eb5d619d1585df4cb6aad77b1d5b79c1355179f38399e6d5b7db699cdf93b44671bcbc7e3da729e87cfc73a80264a19b25e1afc308ea5cf64bf57e9b5539d73378a5bd8eed63a37c4f96b7f59b28659867cb823df81b65d7b576b208f28e7f8ce58f2ffbb1abe57fbeed825ff1f0eb8467fb9efd5e8c9f28cc0f5dff1323364546228da7819aff1ddf18f15729b07cdf7252a9d6b29e61c5d34ef6b4dac47e1b73a9176386bebf702dc8f12ba38467bffaafe583abebb7ed53d81827555e93ab10625e57bbedb8d53bdad35defde37fa97ffcabd7d3badb875b7a1ec2b8ade72147ffb19ec7673c4eb8e64bf8c216b3d23fe359d6c8e5fa67cc8a0f9d987eb51c184652ec7facc075c21a75ebad51cddc7581dc073805ef827349b24a8c9057507ca13134de51a4aaf9441baf9a91bf9d53be9430763356f41eb7343e52cd69f5e13c3f3d9f79766cfb50d0ec7b7a39d2317f83ce5eb47c4c0e8b4375ef57fff7f6aba11512ce5023b623d4f03cddc7a4fbc357c47ed04f429f023d08d4ec516f989ce4ac6facc0650beece527aa5c11c4171cfd7efc7bcdff9298c32e88dc86dbf1603facc84b9ef668ef9eb80b854a14695966f667b98d70a7a849530ca8a31c97e3973fdf2a2337a750ea87b7a0dfa3151372eefd8da988bc3e2f5de1bbf91b3453b85ba81519a7c7dd037c5fd15fa0eb9d2eba6629e775a37c31f51e4012b274725fa0ecc813c1572d0af425e87fafde87701873b63f5283e2afaf499668239227003a177e52317196a8d454f6be5f51bd623c4f5177a9dd6c253b578ccb0dec0ed783e87c951704d17afeb86a790ffbb9c3fdc671c3ec66016d98395ab30fb1da1bf010c9d1491be0f4cc5e2a29bfd97f7eaf1251fd26fbc7859d977dec28fbfffe219f8c89db2c007447bf0503ab8dd6756c7f5febab2d772057fdf636ee2ef89b1ee8061bcca3fa0974ebe2eef459865cfc17d00be5f17f5ae9ab9f5fac095d267ff8dc74911913f774a6966d063cc90e3680d84da71a011cf75296098455cda143fc8996385316c30d9d3f6f6cc3d8af7b45f248ec3f34381bec3169a8fce24da9dc268a2f52b27674d473a07f0e3c3ee8e8bf36c1a38b5916f513e5d0545067d10cd495f922f1186d2dfc1a9d96e93bd87f6bdd1e6e398f53e94d05be5f7950f92be67a1547bcb9c8313e65d8de48f15eb718293537a5e2f28768ec035c32dcf4e4414c778a7304a2c8e35c61b593b3dc44bfa16ef8b3c00da1616b8425137633de15f3ba3065f01ea07dc1b15b5d3135bfa2cf293ea144631f9b91ec5fba85bed047817e9fb87ecdb30b7cef57abe2f9e58eb53d4868d3a6594d1fb1cc1b1a8affba4e1da1ef2dd482951a07642d79fcfa95b6d2b5a1d7efefe75b863d5dfe1cf4e21738a34610c2d5ff0af4ad49ce2936c86d07de0751e436340463bde8f1457d3b5993936ad1f3970802b0a5de8a1bc7dcd166bdf8a30ef4eef8b9950706982b333ca9518183df089bbe21842b7141a12d093f5ddfd866fb137292f745a3ee30cb190b229ef90751b4fe747698bf6be92b501bd6f8e9da0fd7d6cefe3791b7a93c730550d733aec146ac2fbac9296b2f4ecb77ece33c1f3516cd23056bdae7a61b1f5b35e7be3de24adcae5c8fb96ebf253be0ed6b6b665aa6ab185fe681d14898f1997ee3837836c3fd61b62b409adb357b18506761d14c2628c32fc00e566b64895111499c531b660ad9346fe80ae3c34757c3ba25c72dbaf64edd8c25215d9f0d5806c21bd66622e611f87af41b183ad976ef28c3de4917fca0dd6fb58fb72eb54cc41a7d75d21ec15e63b2647ee63828f94b576a28d2f07e8411e91c734a8bb9a4b7aaf686c019396aa23e5229885a5fd065ed21d6cb304ce303e8598f9f04ef28099390b3810daab33685d3941475dccd87ed87fd7bec017e67ecaa0108e0f3ccdfa55ebecb33d4dbd961f586b928157d80c3d650645df9e302e4ac72c31fc1e7c1ef098cae4f7920fe75e016a8782b9d9a3fdf52c50c51a33c367f42adfce09d17306f39e5ebd0f701a39af33171845c480b46e4377fa66a63b2854e3bb0faf92357b9ca098f4b0dea035ed58f2cd5c13f4a39dae35b9f5e86779e7a5ea366f044eff8372c0adfac83c97ff27dcaaddf2316365df71e6efb932c16dd2e6bedd7e57337b92457ed89778ece9ce5ff2de3efbee063c044bd7b3a0138099f2852f9f5a4e93f18f553451227ab02e3379575afeef78c6cf35eaa7ec189eb908f45c1fc58c149f5e66f854cb69a07b38c60aba9182e2034b6e1d1335638a353ae638eb746c2ce7d3d7c5fc7eed3f5efb777a38ff81deb0bcad377c5b671fbab05e0d5e891df345e9d91d6b8659ab31cfdb3dbdd0b52fa1538d35021e8aa31818c6ccf54a7eacbb0e716c27757ef869ae0ed3ff8fbd375b4e9c49d7466f293550b1eb1023814528533f68b23833a2224180ed58a0d270f53bf279530c36eefe3eb956af6e37070e330a817278876788965652de755bdfeb0940b3e873bf80fd4d2eae799b8bbbf88c8b4b31bbca238af975cd9f6a5515d5a2f01f711ff401f66a0df108a3de4a95ab90277e8b1cc114542faaa9bf3576d49a01fd4f78c866e42b06bf4dece9a44fd7504d8af40466ea7c74ee8ddcb9f10b0ff3813cf8f301710879771bf810cf995de2478edd6d3cfff846e7a6fd1297dacb5ff7521ce203b9944fa38e25099f8f7556422b97b0bb8cb824c0a26447c2065797c7d29e1c5bd9fda7fa187a30a41bb321ac9468a554bf1df934ce2836458d119e1137b567f2e67cbd2faff1d51cefb52f93e7d5cc1c1f96df732e7ea9ee8c7ae9c836926275536b2374e6977800a99f03de8013765ce31386357008297ce24f9803ed9f59fbd0ffe3a5482bcd7d756be252623ea8b5bb7d1eb17655082f78ca8e9ce9ba8f23b4363c74a7be3406a2c978b348ef9e88b7345e38fb5c1fe1139ff54ff411929b6b3279760b8f1bf0f9b757274dd8bed752fbfddffbeed79c74c43b9f7bd609d20564a41fe89ae45bf8f7e2327e3b2e639fe1a502d2de31561b3658aafd71641be0ab8d6ce32b63203613b69aecca85758fb7afe36dd2ea0c1ed55c9ba6e0a7bcd769db7e3edf6fc7603bd25b35ba3e705f0d4bb7899cad445d047d2ef8db817bc3cd8e17e20d3446dc00ef05bcddc5816bcc77e02405ad2f2af6eab0de1a8bdd4e35af9a539c449c41f3ccdddd9ef884747fac6b85b214a9db92871e2f858ab9747d4e801b3c6b96c4bbaafd829b596837c2d996bc38f52c3bbe61036d32150b998445274cbed7765c2d70ce8017f748ef0cd87dcfd4fc1803756270a867a570a6ddf91dfd02b8f59ab85ae086191aef0f9d368afd86a4b7d8ee8071171bfdbd117bcec80bbc9deadf12dca523b0ee67ceb141dc0717bf39fd9639fde6e05d83b357133f905d1d4f7b660fb2a6fb5ccd1bc26f6dd71cf554cf52df31238e552d1a9b05233c6f813bb0afb4b73e37d571c041da749fd7fd76e8ef5ae0576ec0c5202e20ae077e977a39b21bf2b95c14f86d43cd8d44fd37d35eebb366e974d79e6bce5f4c3a62a3a1e61eb8f5d2b91a4fea3b771c8133778238f28dbe06267861c0be6d258fb6eaf847aadf0ec9c75cc5c4987f31eee7cde9bec4f3e0afa387578a22c7635a47f374fffc9a7e7ebfc97eb75da43f8b2c35fedf629f7dcf3574ff4735584dc210cea4187fea1f3df00bd944e40d6ff9856b276abca9b1d0407b5e3d27f56d46def1c08c1f359ef8a8f1c447c213bb15f1f562e384f50d87f5b3cab9aeb848975c6278897ee253cfc9a7be5f8d8bf03ba6582fef71d7bf9faf78bf58eaf7f231392ee2f9ef953978583edefb8aeffbdae45dba32552c22e05339537ba0c59b61e31317b11121dd162a5ed971f0e082918a4f7235f7ba63409f3b80c6d7fc20c2a19114732e9ae12074fae18f93fdcfc32a3576f3c94feb9b6a037e614e4aec8f7cabf1c4c083532f566c50ffb35685041f90e37a317884a85c05b52bd2eb34e02de14c7f4451fce1da05a1ba767df75fba76d153c2eef8f10fda6a8355b1781513ad813221fda7d0e9e7a976faadcdc5fedecf7e5703244ddb66a6791a3ec5bf153faf5b26e2ef141ee386c6d974fcea466b1440b384e253f1631979ea583a76d9224e869e2a6a4531f99417f303c5e48873eb999aafedd6048603ff09f740fee6bc228f17e456832064965f48d38ff26330b22d6101bf6866ad5706ceb60c9c4c0a603ed567c5e4a34e18511577b59173f202b2282eda79dc3acfedd58699eaf1a573e12b83183e83671cd5c4bd328878b7feab1ccc5e152a8758ac83913a47f406bafcb0258f6cf51b8c397202b5d6142efde1be38f8d1f618c41553799247be1a8de7a875c61e50fc391c101f55963c5aa7a29f9e6cba346b63992649fe3d6be25fd0517fb7eeb895456303fae36a4cb7ff689efce518e185f4b2a135f297c62ec659cdc17d91861f758f77ef9d69ed912d3cb2c0650e8716f041edaa55fb59106d8fc8f937ac7bbcdf5a6a269bd99368174ff3ef9b37f6c79294815a5b5cd9f04baee9656d6da4b5899c6d29a0a5e3b56a8d8c4e7c26d74a8af5ab0ffdb5d5817a827afc1519d60adeaa3544ebfa170fde15af15353e5df7830e12e92c8822d31a345b16110e538d31ea71626c8e0fead801f99dd9577dd34e370879cefae047e4a1193a7395bfbc92bed157c7d33df778977b0c809b482faeede873bf17d4fc6ff974ecafdf7feec7cc3d01ff7597ad0ab7ea973fae76d93deff8671807e8986abe878a0ba806f40937f76fe15ef64cc5c5b5fa3c78a8c1336f4e3e6bb16449b183f71ae1048686e6a1bf8ac76cd0eb7a3b62768f9fdfd50547c3260477627c13db806b5d4ca1e7a1e6daedbee9fc76df3464b6e75cceeba11e2bc06dd0d8d8001f777adfa99743e383790e70a8d046a3da94a4f844adef1130d20df535a491112748824bd4616342db109b61358b34976a038f0d8d97eef41e45caa37efac7b374be0d53e164697db88fad0f630bbf3fad25d4efe19dae1dea80d0e03584897e04722c7e5eeb6bad5dc5886341dcbd0c7ac243e032a06fe4c45ddc6092df71568a687750afa53ac878ed175b9378d6d86f48832b76a13b09bc13fdc79808506799ff3d3c09c6938a6b802f3255ce279ad3df3fc093741a194cd7cc997aee07e9222c5efd48a4dc8446bec6979cbcccd26022fb71b8ddf16135499ae57ecc167172ccd2dd7ddc7ed1bbf919bad8d3573f4ac04983d760a7915364d0c8c9dbeeb6f6dc860e536692b64e06ee24d51bf201722faa2b5817bd342bd73d37bfc869fd832f5d6c25e47d065e29f1953c06ef96901979c3b497d04c6b907bda2f48dd46edb00db4079180a65a6c92de2eb07a4c8d67010f2df447b53e46aee6e280707b338bbc667249da52e809d231482fe6747e6a2de01bf2b1ef6270f5a7f978ed1ff2daea535378c81f1fc245ba7acbad79933dd1e3f778fe5a0bde73e6afda178f69ccb2f9eccc4d15bfe9fbd5f57d7a7d78c6c9357e316b92c2250c73317f55fb01ea09c590f8a4c00beca8771fe5881985499aa727fe31d66629f9a452f180adfe74fed9f8456e2c47b61d40e378bd264dc3597de27f86b6113c12679cb47e9394170fafe8e1a7e0b15ad8430a7cb645738cfcb3c46608ef3fe8b9f4ab5d8d564fe26db94fdabb57db0ded70236b09ffb57ee5c5432a9804bf5fad3341ac7d94d5f327ccfbbcf307858795af72c2713678f79a54a4b2599df819534f7b65e9c7e0e96c7f3cf63a0dd2ebd768ffc7e6e4abb197c7d3b188e7db74c7a1fd60aa8e61233fdd3315dfdae4b5a13d4d49e380bd7baccfb842fc394f07771fef8f7bf940ef2bf005260d750f7d31d4205fb2d6ef34c1dbadae67e5c06fa93c42e52901ea91c831b0d7c1977dd3e1d6e5497b9dfc26b8c63b9d7c21b4ae69dc9efc2680cdf106d188b8eebcb1ab60a2f6d058c5a98638eb9e93c7848938b121ad74e8a26abde8bc9e41e76f2683916d91d7dfcc045f5dcd278bdbb49fbac0b5c357a285ae85294cad8b4e7ae7fabcb7781ebf05ce1ddad1add638b6a059a5b528d51e9e757ae9a48ddde1b02caecf1b580dacd55ea7894d9e1e13c4de0df0dbf4bfd3b9ebd65d5ba8df1df95c17b7435b1bfaca8421183b54d38396047a18bc5171c716df3de8e7e58c7914a5e3edbda779bd3e07e1103e83e08dc49fea9f49602193ac566b6ed213db05be836becf2fdeacedffdc87968b8fa8de1554dfa71d024a07cd8d0eb09feebfc935efff42644a372dbb5879a5a88eb68d035740758338a21e9e16d989914eb57759c08fd3af48e2cbf88654f0f483daf766d6e26dbc84ad8c2fcf9b6dce7f718fb1df619d734ad061eb84a4ce54e848336116b34cfd051d971e223415345ade7d02f52795140d7facbd7e83eefaee75d4073cba2f9004cce80ea02ae0c6259f324b34247c09b7e851c371e2c9d5c8a6638f0a35dff75903c9edf56fbfb35b9515f84966274da8b66126b9eba564936089d44f7f71e80ffffeadc88ad87c3f3bdcf770363383f901f1aeab503f4eb512f537938e9636a5d55fd186b2e72f62a29e6da97fbc1138f99b9d47e28fa988c7088b3521859c3697ed9d0e11c31833e2f2e7bd67dee75fb9bf30a3d12701f34bfaae18d8ecfc99fefa86203f26858acfd626b411faecd2f6bf7b5aedda3464935c255416343d7ec4275fd66a893427f1c3ed7591938e2c0437b40b597cc84b753e7df033e4b46be71e07778e409887a91ce1122afa473cbf47952dd477b501cd1cf244fec3288761e3c6262defa4566a0b6d88053c2e8367a9eade7b82de5726e75814dafd4f754b7b30635dbca1bd17145c18159018fe411e7c14ef5fedbe7d1778f28333339c48fd35d6e26e54a5d5ff5dc7d4cbfe73f80cf73e971aeaefb2f7aae0d1d71b3ffb92a5c7856a277ad353808afb0be8d57486ff0d55e7ae9f5fca3dfe53fecfb5ce42fa4816ceb38aaa27d7b4b7114bc06b69af34f1accc8e547c3ee7d03ad6160128e109cb7fa1c8fe171f3e27ef77c438f4347b9e73c4b0ecbf1ea6db1dfdef7ffebfddf26fdd33587e6f95ed66297196a4fd07ec325872eb6daebbd4ad748d5fadd2c091bd2f04768ac361cb876af891cb5767209ad39f8476e49433404dfbf21edf3adbeeeaee1390f9a67b895a46707add09a74215ce88cf156768f814b279a61f56bafce2387f67ae0249c7a0202c70236169f8f9e02617e5bcdab24ad4ac91fdfb45e25fadb36d519756fae058ed114c026e4d45350fb895b99c8a34736f00abcd53a7ff88f3ad7e0fc7d247d9f9e31ebf364cc662fc926dbd73b95732f27bbefea83fe151d098d81997fb65edaf0d79e7ceab5f119775cc5b62c040fd593ea75a41de5f6d38170c56bf6341fadd2e96639b96bd17ed4689afe038da6752ffc52bf7d62bd5edd71e91f3085eff4cf6e630a7be2cca22893410a0dbc26741669f0f4760c4643237416e8c3058fe8d931e8b5eda0e1d6f4d5c89a99f52e7b9a3e2c27df538ba5ff1c8cd5def9ca23f4643df184df5ccd435ccfd58635a1234cf4739ba1857e67344f059356cff5f0f7323576cb977b3de6dd5a58136fe772ae48da9728d7fc477b5d733b379883afabfde66bc24f48c260bfa0ff5d9f7bf042cdb14137c796d1107a4849b17885fe70cffef6d21cb02c152c4ac76fdf540bab97cfd2bf66fd766530ce543cdf22e66958b32ac607dea8f1c109c710322374a60ec60dfab9bc247dbae4333d9f869fe3a9baab85509d687be4dbaa11a3e16d1fb32db33d67a1f255937ae5977830d19276c6acc38a5d63c9a0f371c692fddac3bba50981d91817c45120af1ccf41dda6cedb4c7b8e67d0815f15e31fcb481ec55e1e036882aecd9eba9ba7711d4fd6bf97778f81f76b59e339c2e35b8ca516f3125a7b43299e3ed3f6f2aa73ec4063c9a7bc106b5f84ef7f5be72b8aa424fe424698033d5630beac7738c38675e3ec48e3acbbad9e17da6f73ea01d3831a8a27b5679714845f6885f6b3278f83b1c99fdec81f21440c548a62ce895fb9d039a9fe1ed0818c6bca97e3baf3c927cd48accb85affdad09d3e9d974aeaebe3d55e741df676337c1883519b41673465e54a75c54e5bef0180ba21dce2598c0efc3e0e1b079c66f98411b82175e29c8131d5a2fe47f1b4bf8d3477a7e36762bc29edacf6abf7f99af336bfe5dbd8f8eefd7ebf7fe075fcb8fd05b811e69523cfc8822ec6faf3c5a50bca66264ca85d9df8f0f169f70b76ed60e8f7e84de90455c538fc6da89873c244e1fe91734e209f3ae228e9f77a96dd088840ffc22d79e1aea38db52b4b10ca84e64c1df949e270c779bfc882278fc59a1b3227f035ddf842e51036fff067a0bea7c8b448d57e244e2f393b42f4f703e49da676bfe3b77c74566266dcee66fb939de2c27dfb4af3bcebe325e5b68cc7663ed822ba4d69c25f1005fb991b1d05970f5dd9e1dd7baa5978d7a0b7866b6e1418fac1b835ea96287a5d6bcf50b5adf810b6c18f38b1cfb42a4d632c2f9697cfbf8c0c3619d1417e777311784a572d0b5c9f71a53da614247f6e0d716fb84991459c9d34ae5bff041eaab9f329fecd6cb49d2c4e6aefa9663e86b38a9568d955591bcf2246b752e8aeb91a8756fd7716a047ce308833b5663ca807f5c3435452a6be42dfab5bff6a827bdfad1381513a9e3c021f52a52ea931237c8d3fd3dea930af422576b15e3425b2192b7faa45fe138155a9bae111bf4554b51c4e07cfc3bf39c7a8ff9c787f55d9bfc237e9e47bbfefad4f050bccd01fd4bef47bd7bf17ff9fe9a6fd84d5ddfbcb9883fae38a6c3733e8a3d21939fe8c9b6e735debb8871bc773ac199e45f7afff028f65f787fa8aee11734ca51bff9c235e815d7cf7f6756725ca403169b62bddc0f76f99d93ff5e4faa855605934d528c5f756db516e1b055f7fd2851f186decb505f6d38f165c0a711a9344e9e120ded797e24d47bd4e386dafbc85f8c348fdec75cf0553f8f89d398bbf030d0e3d4a35ae0459f4ccd359a5f9d1f6e2c0317de77af6297692f3ee8a637cf54afa73d95e9d7f4e7c4b84bd3583fa703f7f949acb37dbdfba67b467a2377fc4a3fd4f61ce2393d8f5819c4554dde9d3bcd65926590566a4d227ed62e6b43272e795cd99e1397baf762824bb597475cf3d0467d2470ab52fb56ab75c458152efc749684b9ba88c1bdda8727da0ebd1d1eed3cf191b3758b0f76c1d99aa971768bd775c9196bbc8e43b6af746cd74f07603ef979ccd25d99ec93e6395dbc65e61d87f5895e9b49f9bab4b5df47a74746be1da3213be5f9c4b3aa39ab2c5fcdab481c104f13cf987d6b6d1a776e7c53afe9aff591f7f218b8dc24bf44c42326d56b55fceb51fd933c370dc2e76fe1034cdc374fdfce91c3e0b6be2f4eb7a7a9987c56b7e21a1fc48fd46b5ea9f5c65a15d303f544fa7962ce53b54fddfbc9ffd4770b357c7b70aa856fd59aedda7fa226c947f054537bd8311831232916876034343c471e116ff59ac38bdff94b72bcef011fb5c8a9deb2837fde271ae1f5d2f9075ae54f6a3ecea4d865ed279ad5ede79ad5f30e6752650dd5393cf04bf1f9c79e1c91c9d29a5ad9d3749b4c7e4e97fbe9ef5fdf33defc93da627fd9bb438c337be94829c2a1adf21de297def65023dda9151788435d93e675f26319e5524c2af89069fdf1f6d24bcf8ffad561c3c94f23dfaf0ed9936867fb9f6c35f9799ff3eff973a361c3f7d511f5ce68c13969311c885fc1987a3c725c1b38be97ccc4dc077e18bdc794032fa47bb48d6d24c5fc3578ccda93a7c188b1beb1fbe5f54b263fefb5f4eb6b67a26f82be9cba6e435c37ea09837b5af1b852f1177c50571ba6e61bd3d7a4f58bed2029d435851f39715693ace1949b692f00f209eca9a9325d3ea9c7cf588abbb6ca077f07adf99b14143b614f64d0be862ed4c99fa5d6b57e151fb5d8534967cae8bc5ee216bd0d75dd076aaf162fe09d98228536ac29a01bacf65af2c411e055b99a5b1e4bf433c261c34743e0e079f15010d74bedc133f2af04af333ef9c610e74b1a580b884fa68e73e12193191a1bd20ad41a66e80393a637b4bd1bade553925635f53bd4fe41b927f1b448932e6bdf7f67f483d4f9445d5f1cd806959bc27f123d8e90e9df2fd7bfad6ba8f3f2a3b8f3b94903d4c5b8017f1dd441e491be63dc697901efaffbe19adba08e6d1b2b6871f4d3530853038fcfbbe7efebdbe571069e23b8803ef976f04c5a90af7c9775f779100edb5f7b6611df04bd5fe2b11479c99df1ab1f09ced59c2ac6876ecd43bfb057ceb02b57fba459b9e2f772f2b3c9d9cffde25e0f7f8f472ce14d85ff3bce37b64df81059d37a817d49c51bcc2f3cdc06bea9e52a76b0f8496fc62dc546ad8b2b478c86dacf0b982a5bfb0e35e076b62ead27a83b7193b481d4fb32d2e74b2b5ae38019a45ad65977baebcbf192435b8799a473c38f62a3d61869e9dcb60ed09f658d5ff04e0bf3c81bbb095cd460d53a6b7323ab83a737118ca0dba7d62893b874d303bc6a437a6cd6ba03754e5acb1f5a9c7c04cd3ebaddd8353775bc0dfd1ecff234ef9af84ebce4acabfdba5652cca0fd1f84b6ed3919f4fe2ecfa1df58afdf726b7ef7edb9599f046ed613093c47d992f69d26547b20bc1cb08797416833f4e08a9d09fc1f69b4335f5d2f7afc553faef655f093b167e13aef52157febfc59ff6df5dfee4714b9b5e7ac5e05f502cca458a1be2926d25c15d3573f3af76b2e1efb11a93ccb441dde1396d63873a626df4a8bfa3df3575d3febb59f45939db988d7bbe5e3f03e6e3e8c9be92775edf987bab69854a4a5d9b0f6d9f9a4c6fd692d34933c5abcfad1f4aa9f423edc6aad4d0e342eb7cdac050f57c57254a3431dd5237fa366588b09346ee111d9f5138113d9d07a0a1d48b5c69bf06024debf8add0a6ef9846135c0a177b25210e79e51aff2fd79f3cb9eba174cb4677ae16a8f7246b58147ce48334ded234346f52969fb1a47e31799ba3d207f0caf9f0fac5bffee7a44dfd8d7e74875f798eaefceea70f6321d7f4d2b72631b331a43cdc9cb2422afac8072110b3e152d618f697ce0b64dfb75063f415188c22fb63679db00e76f21b70527213f6a2fb40a8f3939f800bc616a8c1f85e95ad0cda27906cc16f6d0283910d718bdce41a6f2a10d74f050a7264fd8199d0b6ecf7f2ca11b9ccb20b4297f461e32d3986a68e7d53c56e7ed41e78923fef0aca5031d3fc41e81cbd53958e4e71253ad0cfabcfa37d1fea0d0dd6bd4ebdc366fdd0bcd3dc437366918271c1e64279f9fe185cf0fc779f1c6367beaaef0a529d6980bdb7b8ff4b6feb424dcfc6688fc90830f3f547bb5ca7d1b11d2f523ad47d18a065c76c35363341205695d4a8c651ef1239e8f68ff0e42dbc83ecc9de1f1747fd379cdb995d7d31f0e3c2df7a7b19ad46f775ecbff796f0b1e1b49b1beec69d56a7df6237914ac629eb378259e8994a25fff43644fd3ff01ff793cdd65e93da67f179b59c425f2aa25e666ccb08e4633f228a2da1b711f804d843f34a378675672708138eaa7e0b6a187ad72f607edb3e65ae47fb135283fdb7673b846ce59f0cff8d37f81378f3e4b89cf449f8cb7da3fcf98c15f32471d58ebb8d694f3f68cedd371f3cca075902c5feee3e836274e5ddf758a75807895273c26e2ff3d79ea5e5cef6b7cdec8ae67515c521ed0fd276fd1201c128656ed3dd0f9754d1ff1d390f86ef012754dcf11fab3495f98f896c4bfecf8961fb9978cb873e0d131f5da2f8c11f2ae88f7c91d0b7e1b0bbe161b7bd0f9e150cd1f3172e54377e693fd62fb77fbb3b2e4ce9afcfa51178727bf0d8f7878fdcb2379570ecdcbfe2ddf57d068c0fe9364266153c1afacd5f8259c17d33e82d0feeff23a35269b6e9d24cc18c33a1939c41ba2b1775a6f7b62378c75be3f8e972a8e1927657e1f6737eab01ed517c7591d9cb8b8276cfa7bcd8f3356fcd20f4ce3cb5143888625476d6b88fdcac7f3995a7f6acfe978e2339bfa3d1ef27370c0a1d797d75a53ac462ff1256bf478337cca555ad4c0d47e45bcdb92b71ee57b5dbdf59fae79c9ffe19a97b4b9397ef9a6fa4dffb6da324bec9b6ed369c9680d8ba3caafa035937ed0bef892be4c94fedc3ca7f52e3645b348933236d7ebfc9be64f49f1a59e36fabb3caeac6bde12f2a79234d9b6031dc79ef5271ce451dd73af3c7ab8994b71f36a6fa431d569a8a0af93132edd407dbe5a152e03cf746437e8f9b66b537bcab4e001aa3d18587adbf69c1d9ecb1ae801c0fb896a2e947b0be8474bb5b769bf0957f789bd5244f090ae03e0a4f5ed7eb809b1b4a6bb64b23bded794f7636b2803e810cf4a811aef56e30ebca3004f739e065fe2a6da0378896d5df2fb6886dd7f9d3fb9c045902eae1ad3547744cdd1029ee208efef685510de00dc094bf32a4a5eec52f43f4d787e33b57f12be80c353041c77fa0f4f3e682c475b193ca9fd6b2b837038c822590651d67a4ef71ff9810d3ff488fadf7ed16939f4ad81242971443efadb0953b67dfd23a2fdf88e717887e1f20b09bdd4d0716bd2e2cacac0993a6263433721503113b033e8790caebdd82e3473b4175ba7938cbdb4d1fe71235dd7ded8b6e69432edeb76c2e19e31bae3f6cc2b6688efcef85ff084f5e35fe813a05e32850735b7d0c304e609e7037ccf907c80daec18844cc50c861fed4cbe87c71f7262f2e98b6df2e9431c699c3cfc1eb3266b63c2228ca04d6b102e0e9e340311b241e8b88315c51e3df12083dfb1b9bbe3493fe04911db5dea43d994c36afda83dea9a168de158d7ccb692c3db4dc2fb0df845b597c3e310782c3b527965abf206b5660e0de8e1b4ab9447bb9b7ec7d04a4f39eddda3217a29784d046f7473e9b8a4851f765af81e6995172b7ef9b9fdfcab1fd6ab27b1bb6b7fdfb5bfff7dbfcf25ce6efdca5f323b7476e4c53791cdaa58bff6d55a8d2749939b3fcb593adfce27bb364ba787c537ad177f9a2bedc55bbe1787eefdd7bfbde862f05a74cf5b3b3d8ff5def932d5f7e7fde757336c38f8b91a4f01fd1c57ed95d0bd261deedd416c86865fec5efd62a7f2ea9a87b6895c29e603689f4471493e46a8e1a14f4d9e47db3248c1db90c40f86be58c34378550c22c2fe767ca19abbb2be88254d3f12af2aff5a3a5dcf33d1bce207f8c92d47c049793d35fc668ba769bb3407d1221d379929bfe5f8fb24ce2f9e9fa6c57292dc8ac38ad339470ffa7931d0e3d1d6e7d4e8fbec0bb91aedbde8438d1de8d26c806f1c70ecd3f07bb4881f0a5da6815fc42c83ced7cc0216b3cdb4c709f09803f212d91ec529d7df92767b244bee4c8b0e031a40479eb4dfc9abd9d3fee5d0f2a949077e7bd4dc1495e35fe28cf4ed21711f26bcd397a77a00e9e123c702de94556aac1bc0726ef49fba4f9e8cea3c1a750edaa7b6bed631e9d6ef697baeb75ee99f5cf68f7aaec56bb5577d77ad852f713028069d95229a1f8877c0a9a7617278d590af8c5b72273e76dc07e100fbd6f23dae33e93ded39e938c2139495bccdc81307b890ce37bff3c4f14a11e963d03869c98f4773262f72b0d0f12ef99017f998d6738d24694636430b7505f237d75e1df0706a28cff4cac0193f7078f94846ebb9b4813f7586b58a1da9ce1f1b847d38eb421127683638713aaf73447897538d7e66f8e04a707c3fcc3fe256d4d0160c59c909ef55412b70529df5b51adba6cf44fddf805734f605ba1e625ba91c77003e4a313de01a6da83f1f399eca01061efe4ff57574bb1ebe5a6bb0a7f19e5c703d8fc6cbfd37d606fc5aedac0d08cb6ee9b5efff704e400bed78d642635a0bed66bd83b4d09c5da7b9a6c7fcb0a6cf82f605d551483b4e9eb5e372cd81227f73e870a32603fc29835f1af68a6981da4b433c2ec28dc588c3480bf3a41df785b1f93d7b11fdeb98196947a835b0dd15583fb03e49c297b619d51288ef469e9197da7d7b5e72d40c3c4b8f578d31c6beafc6444dd79d133fa3c57aa7c786fe7b3f3693ace11360603bcdbd6efd3c06d4d754791de1b4559caee642d479355f8ecb313c603f1fff6a3d8ef5d89b193487388d57e80dc76a0d56718dfa7ec4e5230dce6ebc7e658d3c3ca783ff993f4dd7b9f93dc7e4d7fa63f0826da0b113b9c003f9d14cc5a2a8b5eafbeabfbeaf39b8a3a17e7d878547fc2b792c079fe042a85e3f91357fcc6ab19503aa2fafcc13bfe80a2fe256b7fbafe28f79b05c8e8f68f2b378fe9e7ce0af687cc1333a746eeb4542478efc8aaa55e19a61a7c160416be346fde82ff5502ff59f81c1e0e36ce01789a3d64ed4d40b5706a1cd3c2797c16868c52dd6163c2e10eb6d4b916435c58e99eef57b25796c21966b5605e98d7a23dbc26bb4f618f57cc5ab08b19e5938d710fc5d53eb95ab78ee52af54adc5a6ae35a0f7a75e4f3a79ea980faf7e245260a911abca927241c49cc4a146afa4e3ff82dbdb26855bf7acf5beaa31b19cecca6763fa6dbdb3bfb4e61543d48ffc6275404c057d71aabd437f0e3d73356ed45e9c40c7396bbd92b4be397aefc0c6613ec812bd8148aa3109ad32e00cd4f56c746eb6a1788d9b159e53e30fd71d63cd3b9267eaace4963ace4cada19f62eb829b5e067f6fad24edb19d27c6e7b9fbf5b126d498ba6b62bce7688c6c1b6bd8c66641cab50fadca73e193a3f28a8a7c5eb75263a78f3aa66be18de0a8986836582226926afd5079690d1c65032d8212fc6647e5319cf6f182f068a21584b754af81e72d3edbc0b1895bd5f9074297bad38626de72971b49f518533954b7b661bd0ef567d3716b8a41d5b98c3dd4c326eab899faeb784ffafef840f9b88afba6059d0b1d4b904e820d7e755a9167a2fa6d706e6e73c28e6a4e2b07fe587f07cae12dc232a8794bafe78dcaebf05bb5c40b54fb84fa0dd56feb951cf514f0995afd7a16903fafca212be47e8dba46a773aad43ca7cf519f9beb7ccba36b4235185c03e2068a429f0ff620d4aef5795f7c3f15db9784e9014fb1fb0df41ac1d535afe877c25f431ae276c353d9a8e367e09be1bce93aa89c133c5daf5e8ef47ad3a22659ebda07b08b17d757d7279382becfd0a0587c284fef49abebb1a5be17786a3486393c44f018d5a174bf55ad6bc4258397c3913055e8c7aa3cdc22cc0c6a469678e26540185e8bf6437979bb14ed799d166d1205237d5ccd735279ef2fd211aa492b48aaf5fd366fc1944d5224f07de7d1dc83ff722ccd55216ef7706ffb3ab6d7de43baafbc212c58cf75f577fe32477d343177fbe7f8fb6a3bfc39ef1278dd684f5f8f658d9e5bc5b614ce8cea75c8b95173678457c13ad8f84536f0a3ec2836ccf4a9d64e9a0f6aae46196a476afe8b891aff1979d4176a2e797aed987573dfc49ae82cd6d0ab52f950f7bff3838da08963d25a94910e4431d6dc9c79a13e877c7ac0d534c8eb5876d82dacddd49bca3006091790b325d580515f14cc1df8853409afa3d75fc7033e558d5515db72600767b60f9cffe9af0c22c41c2d7e13e8fac41def99099cf3cca47af3c209a8c6cb348ebe22bcf50c5eccc807e1c78e3e1ae7f02eca2dd4a070fe63876ff05b5b540ff0c069a5f9a6fd63107f7b255779e7065838466b872c05e232e8e8b4b3362e05fc8ff252441cb9a9200d0bd67d67ac21a71a1ea7f523e2f0dea5b56f46ebb53377680d1e0efc22b3e1e5457987793aaf0d7a2e6abdac51fb8d62c91bb55eba6a9fa6cfd27d1578bc371dde045e219ae3ae72814cbd47e33ce26e9c5a743eb13ec775a7a575634daad4b5a178a1e83c71d46fe042fb8cc755c3a1e9015f7ea639c1a5c03ec6fae617cde249ec962ff378c9c6876feab1f7359fe04b6c45748ae1ed335feee473a7f6b4cb385e73aa4e7b8cfd0163115df8349efd83553cd900e73152b1d709eb51515d06e3c70b265557cb61a44b347ff5e1c3d94f0f2f7e9cbe2d5fe6dfbd97f7c5fa09382956e878d0bcebd6225d2f68c1fd30e53180cf8f2b83a7b723f82cc0ecc6c4cd0c87ba363bacf3e6ba4e7bd9133b6b9776baa7ee911b591b3a0b53ad4591b395c282ce7aa375d62bcf1107d2684b1cb51faab595fae1db52e5599ee3d6ab62f12a1e912bd67eb13b1097a5ab77f0a35a83544e4d7a43c33a78ca8e0271e9ee20c2a1113aeb7ee3eb69ea2ccdf98e7fd3d8a77fcd161a62ef3555d47a60d1bc862eff5140635f7b4b15737a0c5c6ef03ba14d4db89729b478b8f6e3ed1e5b1216c00326b67b2cca8fa4a92af0f954a7cb49d7ee296b9f1d011c8d1f891f51b495412c5bf55af102ee9eda6f092b79e3b52a77e45676147b15832fd46741ef4eeddba8355a19e60aea246aaea4f22876ea380b53905717617570ccb9493e00e2557b02747e5e4761ca2379dccdbbefc974ddb2d17e044de70740dfd93df224b3c8132ac1f71613c97e012f9d53ff0c8fbbea7bd5befafd43db5821074874bd65fa0f9e77557ca07d121335570df83a3e65a42bd86b9f1e3733f3e7769188224b07e5e2c9fb9675c0fef9c2b6242dbfc4a43185b1d5929655a2e681f9ec2c5241eba87aede0f66bdd367412136376c3d41837fd223e7663d68f688c73865abaf13c6226d6d31dfcc38e6233b4f5b556d7dee39148397c413bcd4af5d822250da58b31a1f13bdc94a73113c233cea5da73336c3f1e7771e3b8bb9bc715fb0fc705f7b6d3ba0c1d77a01eebc62c1d031a12ad7e6ef0ee39f040d5dc43cf60c4daa498be8a27fc0e2a863979cc5cfacefcda828fde3c3b49e73f79e44ccdebe44744355143f795d4f1bc9e1e30f37c2b7e2f26dfb33fd87f8e70c9a3f16b305631843083c737b5c7986add14ae34125c038ebd2878cc8e812bdb55b1feb1546bec5eb2553157f348f706b9e456663f3beb14f1cee39b1afb6afc30b5a6aaf8e297ee37696f9657da975c156bb4573e31f0903f79cf34ea7dd00733afde67788e3bb87e9fdae35657ef435deafa7d0335162fded7673c858b74bc8dd29fcd9d33f7b1df2c4cf26cf2a35d777d8d676787df9b709419c65da727d85d5fbead6ccf59a9b1d768cf27d66f6f9cbe2df7ab7469d6c632bdcff9f79eaa7e91d7945366d62c02f7d0026e69630f04b4498715270e7d336bf352a046e2c94e978137b6158cec26a0f798826ae536fe42f5b8cdd0db28b6a53e1e7a10d07e8bb87e7c7c40cf84307c76d6d87530c21f83d669685b9c8ed508aa7b1bba1f510a1c5b02534b1aa56e2988e7dd0ae049329374dc62ad43a1be636c92de25fe0f085f38269c0e722c29d539431b7684dab9c58963a9ebe4b3526c6c8bbf64f43ef59dda6dc90be05a4a017cbb3d50e71f502d5b737681353409cb238dd3ef54cc5aaac7e7f4db90af2c6a565437c8d17309d2aaa13a9e570a675de8dfb8a6df5f9d37efb45aeb4c6b4791dffeb0a26bc14a41f174a9e69dd8d88da0dafd496b88f48732c212e1dc675abf76dc92863770711a63999126c7935ef329cfc01e0dcfb9138f70cc05f095d09e237d0ed4f724235ce84c9f0b278c107884d0d36d292fbe38a77e3a54616e89c922fdefc24e66e6aec9cc7a776b0dc84ee79c953c5abfc7e2d7b85e3b3a379c975adf36761d8cfbae35b8ee4cad597e21dbaccde93a8fd02fb5a8a69a930668abb5405b70346cc28c48e878625d6a582da86f79fd9f74cd0c35e757851a57a2e0f0a81c4ad1408b4acd616821429f4a3d664a7d3ea89533f2799eb53ee905403342cda39e7b0f5b7dcf3a59ef9820209c6a4bbd6bb7a66bb152d7d9e4fb4afb6c27eabe018d6beaff618d0c9d6d299c150fd07f19363c9516f42e4736c39a18ad5e81236c9303df30e82a88bdbabeb1bd1c31ec3f62a4f26daf1445c2e1edc5e4c02f86ed2ff238f4c4a43afa05afa185eb56e41103ef64578a893c5e3d3fa94adeba546b28b68de7ac5fe163b2415c6b2e47d473fab557eff78e78fffee2fd1bbbe26905de52bff1258a7c9fec963bf19a3d4d77df726dfb9a677ce57575768d4d0da22d6166b037b22642af6c71a9838c5a3bfcae3fade93fbcd74df6386a4c1ed3feeea4fb4118f27605fd767740fca2dcf69c217a515aebd524dd228ff6d30db48b1aecfbc00f70d969c227c5ea403e8739f1861adbeae98f122dd2017b4e8dddf2651e654ff3b7dc5cbc2dd2efabbbde0343f6c77a077f6d1f56b165f27e1f1e9c1e3b7132dd5224fd7977c1c836f47914bf12fd58787aace3ded5f8dc6ffe5dfe12a64beb45cdda8c7aee98f719e5089b61cd5fa00ba1e27b703fd0ff8f1e1cea4f7bd77e92d1c94f323add270f7e7cc62fadf3cb27e855031be04752eb4b30db8fd66d77db73e491f0022a369692f427badbeaf9353c71d53e9ab51e695e03ebc8b5b72afc72b4bf8dae6717abc2a7be3cf84cba8f2dcf7dec694bdc4878ef50aee0c447be95e072658ddaabbd923bd02cb248ebbafb1c75bb9f764b6ceeee58c3f79c27e202563ef57f6ad4b8fea4f6f095e6eb2d3c82acc5fe2646cabcc6489d7ad7f0fa121bdb08d5fc79ca4ad1265e9072cd8b1aea9ee6b0f69c71aafbe6eab9b30723f0e9bac69cca16f5e6d0b6442ccd4ff46452e0d06f7058c463a6fb319c6242f47b76eab7a4ba3ef4b23f7e3e691c2526dfca5a8cb3c1b38a136ef46efb6abdc5d6c32e4b8fbb7c4778db6f39ee554cb7ff93719ecee5586513b60718d732007e62abf593812d645abb873c7a9c754bf518dba0dc30b6a8d6b1e6fc744c5ec3bf0c3a05f98070875bc353d739f2a47882fe8f45eb1d3368fd5b698cd7d881260df83419f15437277c8e415cd2f1416b98a2d6326b510382de928a1da1a9a4f6094bed3379e3113eaa253e59d62c2f75506397fc7ca07134bcd4e8825710797110568c936f4f8d1a9ecb6dbf886bdac3a4e6eeba12784bf59ac76c809a123c2fb256bfb6e4c45daf351f8d3d3b7129da71413e0a43fd1cc3b1f46dbc6eb561743ce05c99f63388c96f8db0f0a4e7805eb1ab7ed38af826eb57f192f5d4c5112c7bda39aba769a362df68322e178fa2c89e1ebee71cfbc2de42d8b215471df8365fcbbecd4158ddd412e7e63fd0b47f212e99b0a0d16124c5ea95f7c52859f3f5af5818f9cb54e53533f59a7c3f7ebbd760fe037432fbcfe959bedf1db3a7e9e03ea7bfe99c4e1e9ae7d458e72fbbfb9cfe2f98d34beb21caace96e910ea2e7c9f8bbf6d5bf883b265c7a30b22bbeafa8065900e3f64a39fafac752e5460d6b9623c459359f5c7bc00163d3c013d3f00baf256c9be8fa8a9518c17bb2e4c099ab3c689c8227b5af18e918600d30887f034f297897a01733e1d011f00baef56b3a2e10dd066efef14df00db40780ed8f1c5d6f05f7406bfc47f342e5735a5fc914a4e9580ae2ceb2e031bbfe5e0e34e62b687d4552c59007f497c043c8b55e0cbcad1ac1aa86345dc071d2b8c8b8d37322ad2668dd92563371318616f89bcee280ef4e3c5ecd838f19796579a58016876b9ff470363613fd7cb1a29539ae66e6f8b07ce4dfb236fb051e90ed3973f27a9fc87685bdea83f749abd6a96eef4a0ab5f6ddd4e28ac81740e578b10c1e332b74a607311a92e6812b2dfdde6bef94170ece2ec6df4b669d382334a6075a3f81e5ade67b4057799e0613d92ebfe04f9f4c127bf5288e775ff37fadf63fb0cbd158ed7384377b793b0a75eee7fa51f36bcf1869014c538d6feb778dd341bb4aa76d664ddfb2ff148d9d8bb949fee842fbcb73cd35230f77dd1b03a6037e835abf86bccd87a7e7889b97ebdbbcf344b7f4ed167583067eec8de7741c17aaef11e6967ce43507f8080ed6b52f8de1a3968a5ab94598218ff9f04a64869adbc4d1536b85e6386f6cc32fb24172f626bdf6cefa8c838a5ae4873aaafa9d0c5dfbaff9c8362227962a8e5a3af4bd23477bffeeab23d5a9fad5d193fdcfb7cc248fa47b7ef4413bdaf09c85c35127ce24f0d60df04a26792ac26b5f5f3fde52bce351cd39049e495d172f203ea0c6a36d49dfa8405fb7a698c0233d9198d71a0f65a25ea9f630d4186329762a3f9384b5a31a1cf93c007b974b5dfbb79e1db7cd5a5e7207fa7706e6828a33e838e07ec6ada763a90c5a95221c9a548be732887957f334480b9393a625f5a48c58eb4a693f6ff57f00ae907a2cecce2bd73a9871775e06f93661cea9b5b7d5fcdb6e2e1f4f7339e1b5aebd6a8c073ea3217f71f0441bfadd63c98be1e973f4f7a87b62c1d27c32f0174fdbff8cf5f45f174b35c4e975ab5914930efa057e50344393bc4938d6358dad1cf85126c50bc76d8fe68d99dd7a3f6277c642c7b556c51c3c1d3101f7463d86cffeb5656a2cdef6877ae1e7986b333cc75c9b0b6fa97ef8eda7e774f186f87ab22b17f778ea839f17f8d5316f4ef12b302ceec02f32f21d8e32ecd9dabb86f02d216182d56ba1e78cdb5bb597991417502f1cc77efa421e3c1aa217aa751fa09748f8d898344c4e7a89abb58a03c1998d665d0e7cd64ba49c80b44023d7f00b17d85de8f4399ad31fb24bbdc4777a7d92b426bb3cb5396b4cce22b5867193d632f51f1e9c58efe0a51e9e34f9c0edf4557c39b9d4421d9e7a97f09f20bd3e4b6b0a58a7bfd14993efdcb37c02469705e9cdcfe91547ccd2f9568de97b0cf1413fad0d9de41d964c6bec13d6036ba1aeb77e9277dc8c293bcf31956730e2724f4d3f9a7bc202df91a1c6fa92b167676ef65c071f1693b9a37137ff6ff5343f3ca7dfb4fffc158da766a879b773cd219d9bdd3ea639a62a074985459c6c1173d32f66b6aeb39f6f47d3163a43d0adbdfc23ad0e603b22b78a5b689d50ae407b1cbc9b830e23145e6084c20b8c50f81e23b4bdc0086d4f18a1def35fe3c0eee3e3964ffb091f760b2b66539ffdfc07bf21eabb1f79f4708d0ddb0c9b5f7ba6d6f2fa7f79eef3e774f03fdff27af6e62c48e2443e664d083c9d8a535dc963d974be16f00980661033fc283e8a147cf3da2f76af021a5239f5521a9b6acfed56dfe625279fa1c1a56e0dd50df9001efda883c033a37e76e6a960d2d218629362ac8b5ac513d75a4731fc4d692d72cb20c67bbaf3d09e71380f7d5b9f07ea5a53e2f913efb979760474b3561ba6f9fb53f0f7fbae19df726c7d516f55fdd6e22533b1a76c9849f8b62938e3cfce94b8e63deb87b3d4a8626bfe3bdfef76f73af1755e239a61a7876984c06b7129a021e1d6a123343778016c254f7b73831f7235069f16f77df243de661b0275254f7381f88030c86b073e6ca48946be56239b09d2a1b13d477802bafe33adcd2fedae97833c344a38788a1b3af6ace5655733a36364e4c7027fcde4530f37715bffcfa41a2038a25d2d7900aea8437e31e057461aef1d573ad79d7aa455327d252d12ae9e43bd5734d06130c8bf3c3910ae7afc0a8fc262cb3c071a9b75dff1a7f6b5e7746a507ffdbe06bcf7c40f4636bc1fb5161e7929143353e3dca1cf1c3c66cc2fd47573a1351d40ef48add3b352a4d0ce4883d0b603cae507c4a5958cf65979d4de236a8cdb5fa9cf79da9b5334344ecfb7dd266f67c44f80fecce9ef78ce3158cdc71ce38de2521c4febd5ac0b8a41e153d4f1088e2a47c8dbeeb6f6b7bcf4bea47ece29cff89a1fd4f43d5fc4fc9c2ff277fd32a7ebcc3cb6f9645c7c532cc997ea7b9ce2ca5214db4e3fbd85fe24eaf5db3270d61cb9297022b31aba61d1983caf8ab88517b2b325df1c350f52598bf4e6fa697cca0d68c0033682b8c21845edad19d65a6300f8684ef9ae7a7c401e5e3162e7ee3f7c8a4757af453d997812788d45ff73f87e76af151a7f0d3c0ddd37827ebd855196d687a5f53d39747f7bedc2f1a706e63e628ac45ca483df0b759ed77145cd1b682ebd429b682f8fe229d37a87abf78f99d05f88a571b34f7039c64ebe66d357f0494eb8b6cee3ec4a9ff1caef2cea744992cc0c9d8509bda39031e4440c5c4cfd9a35ce4f404b18fa5e47c2a208cacffb617e46cfe94fb648c5eb3d6ebc8a1bd57cbeed394231db476f893df271f5bfbd556f7d1e31fbdad79a75bed65aabdf85beb680ceb35d11d741c707d1c209a01d3e1c9006b8443c215073035648ebb543d7bdf18be1c00f6d936fd5da35ac81b7733a8d95b8d37dd5f9bd07be08f90d836f647d2176a8482f392e453476b8d6fe454c8cf555c5c219a33ef79a784fe0f871ad930b1d52f4b2036775d06b69290aaf0c22f5dd38a3bf2da3d7a8d838b3a15f3c52b1d5ecfc3ac455b323e290869ee3ad7e2eb407c41151317d6677c7a4c7ed96b41e80b7635f8b3586e53ff73eed1d6b1c96a6f89ff9be7ecb1f1fbeab4eead7e20d8c73461885117001275deab8455c6b5cd4c88d9bf5d250c7b48f6f428436697aa4d08bd098812961a00987a9fdeaf323e99fba5a6762768e77370cf1adc68ba9fbadf68a01de1318e7e2529b794b7e330df9c19036f68e0bd4f6e25230de69dd98147fc05f49c5182c53b1fae8a4fb6d928f7cbf7d62f97dbd8cbe94d7f1ed1fefbb085c3fd47d75ae74cdc5ae698d1c6aed24db249e1fe26233882b833012aee917bb07d1d803ae7238fd9f34e367eafc7e2c559e455c5c5ba0bfc335fe3a6b3116914b6683083d644e1a2ab13adf6dc537c3ee3f7c352fc62cc31ef48e23deabaeb8ff79f80fe15f5c8c0957ebe88e0f3c6456e8e4da6b24b6b5c7a3451e2d0c393b74c30a77407b98c60baabc477b80cc5ad9f56c4ae009d49e42d7b3db53db67077e255298e02a177e311b90c7466c761832bf88ebe58830f63c4a1c1ea93d35d37a012a2650e7edeaff3dfbf5e6f89059c9217b9adfeb90b77bf67fd31b7ffe77bcf18f3ef050b9c438da56d06a0fc2a1a9b9bbe413abf2de0dfca94df2ffc1de5309ed31eb5dbe5673852936bd7e1df6a2d1d57b8ee7e787a677c9170e2fdee300636002af5364e6b3a3b58947eca45d1c451a8b077ddaa98a496df2f55b749c7cada50c8dd9063a70d0a1cd34fec7bb3cdeabd6ab3de954dc7aaedf785faf97fbd5eedea3fe97f6a8692c462b933ccfc79eda77b4e794aead426f9191f77fcc68dc2dd622b42bf5deeebfc65a95a2981dc506ba8794ef85768d3a558bdbf0cc1211b4022bcdc561e08e17b9e6df907f0b74e636b42eabbc4beb31c12337a0e76cceaa1af9dd6658074f6f2a4eac55beafb1611443e2f36d8be60db0b32dfaa7c88fe2017841917800de8ae203fa7fd2d0946a8ec03769057fa8041c7cf2a7931a63ac72a8c454e7c2a1af018c3afcb34541ba2d1433eadb887d5dfd7db7e451028f140e4dc59e752c673949d6f9bd5ff02e86d8a2e6cecf354a83ea8e5d7d31c31a4d393bdd262d852d694584c3ee7da65e9f75ddd26df57d5d9f74bbbfee7ef77c3f9d3857fc5ebecc77cb97b9b3b41e06f7f5f09d96ce66589ff4de6ec400d8c74c59f31d3825ade7ccbde053ad9cf96d3fb1dbf570eb937a387c5e42679d0af5b94f59dd53e7cd599a03b648076c6625ecbfe9baff359db2c507ddd360fc4ef3546ba0deaa95ffc15e57fd5e6bf5ac9f76e3f7f873dfd77ca795d6e8fb37d6d4de7a9fa61801ab0c9f36ecd9d066463c6aa08784beff4c7ec6cbd47e62c0fb8b177ec5abcc683dadb41e8dcacda866097f426e4614bf3484efe654576d178e6848b706fb7cd3f9b0bb9a27a3d6028fbcd0e079dd9dcf9081abd66ea5e6854a8ab5713ec70ecb1dc06f93d6077825b6c00698c2d53dff496579ce8a3c4ee26a40b5d7bc14c51c3d85ebb58595814338e0bcd1b56ef428d41a256f71208ed4abfbda31c48659c859e15b09fd68c307e79c69ff175e7278e2c5741f7ada5ed3dde785777a5c6bfdb7cb1133f1fb22e6cc8fc2c8da2fee67b3ec49b0c537f64cec5f6755f3612be9ff8e23c6055e509e708862040d01f0fe03477c8a85e16aae5c7918767928f2c7e6d716f8d44152e4ea389c475979d283d0da10c198f06cd0f78e560735063ec1babf521cbd7678843a694d3ae12a06e2b2ebd3e6c041cecac0991df1dd36c326a4efa17da85c0bfccf90195973e24548cd8b90fc895fe9baf9117126e0a375c1b7e8cd91307f96ab4952aec60febdcbad75d6ed45da093eb17ae3d6b5da6af253888f0b6455cfcd0d5f0096b3bb26df2f494d0bbf89c67bbf83b982ef619264180c3f8b5b1b3c43c587b22c9d833f9d0d67cac6f478bbe63abfa157f5b3fc62fe46752f2adbcdd1f7ec950bbffa87bb4bb5dcbbbd54bd67bab70e52029e6afc1535643eba819d61aa3d0ac8aa9c72df53a66686dce2624ecf48f2852b188579dfd66325d1f841e89d1f990f1ad6c694df59a9b1807fa9c1f4b70e0497be0f45eb57787c34adfff04db104b41e77543cfa25f9e91ef93f5eaeea974c353292f7991a4bc18bf42af9b6a076a2f1ef8c5962d81a1cb890fdd261c63a9b11bf2d01a92667d635762021d27131cc68e47a6ebbc3ab665a47d3f279ee3c61ea08f303abfce731e0ee48502ff749b434b2027cd05c23ada847f903de3b2f96e3949d82211d6224dee9abd1f347be1b5c6c80f698eba77309116dd5f018b2926c0fbbffad182fcb62eb5bace7b99799b3bb8f6b895a127cea39914a93c7293fc7f4367c1292ec2dad3174fece6fbf17e75d7217aaf9facf5d308f3235a754d38f9be0247b3a55a37a3fc0f9e376a0dded8ed0cdadc52c23b09d797f45ff96668af0ab7badd7f5adcdab30e7ea875be1e3b0cbae05873907f23866e3c471c820bff9d48d71f7bcef7c1723f3e3ea7ff7dde3a7f61bedb9eb3f644a709f5ee1a062a5ed84a3b29d65fd33a32e5f1b35aa4b819efacff56ef928f86f6f388d949b17a0dc8b70fe348ad23b775247727efc69e7a6793e7b4de21c6bd63b5dfc5b799e4f195b6d5557c2b26e4d5cba369aa3da1a59854a6e72c2eb5872e63414f34f62000471975a016f59902befda6e77875a71d788e873b1f14f252e17b893c9b87430bfacf2abe1975dc9a7ebcb5f97e77584d92269aecdaff109cc9bf700c0c0973ac7d8ed5def56bcb5a5ce3bdac837166868e205d7b956bbe609de9cd219cefebf55d13e5fd35405dca8c502f86ef29f9916e18cd817d053ff56767958a7e71d664690ed87cf2d35aeeebdf593aff7f8b7d768fb93ee815c536f4a8da44c53eb6685819207ee2c06f3d8f6cb57ee9be7f4c5ec9d0df479fa18dd0b7dd36e0796eec5a4caa863457b252b43bf2078bb6258f56b7eb015ba962a876095cb5073c35f6cc6848daf8514cc7c13172c98be93b8f8dee58d3548c8041200e4e631b54ab75a53aaf25b47624ce25b8c2f68c7f2c436613775296bc5d1f8047800e8fe0e85587c33a98c8c62f8636e18ac0fbd6be7771cf7ef2e2f7f265ee2ead55b99cfc5cff618cf3267b12bbf871fa5b8da585f6f5594d76e52f3d96fe5dc66e0f4fa9cbbed8009ca7c6369e9d59c9a339074640edc78f6fb7742caff7fa9bb19dfb495e785bcb125ef805300c6abf3e10877676244f3cd7d2b897069cdbd01e08f0bfdcda8f5cf88d07cee22008bf021e3bdfd8554fbcc964694dadec697acf213e62b5eca4981f4efc4b1557bb929df286bfbb9f9b49abf68c3b0ff29d1ec0a8c3e5c841d6d8967fd2e298919730699911e612bd4dbbd11e2715fc8d81bf8a1b3fb41bf009379dd70ad7bd57db16c0a1f35abfaf09469de73167d493833fcc2018d9d699eb9233bfc85bc27fcd480332b42bf81e130e6e40dc62f80156029f9b93df3061d658407dbf96fcbac049a888bb3bd37ec9e4c3aaf5ff889314420b15bd6daa4d4ac2e385764b1ce0cc227f4229d1cf6fb4462a7e8719f4c1b9b3ed38fcad5f0c07179fc5fcc21b507d843c9603604fc71e2fc6c4ad4a256959929f347151c923a60a08977754df8337741b1a2cc0eea8b554e27721fcdeb6f31806d69bbc133dc22ac2731ab1c0407b301efdc233087397d9270e376aa633ddf3191efd2257d7d9c675a7defe806fd41801a681bee7a8bbfef09e863e133c82b4070e7e67d2c76cf46d7840cf5a89da106fe0c366d178e1c4f51e51af96fcb7d56fbab53c877c20f9863c85323a279c1761d833539d6b30b207a4ab9e1b846718ff58aab844ed11f86d1705f0ef217afd16700b45064f6d9ffc8fd4e3e6e9f783fea3b43a0d1cf46637b88e357930716824a8f885ce75d6cfb7c75dff5e19f3dff13e79f96fda1b6e9e331d3b5ca5c0f9a8756bb7da27e5d29c6fff8c66b31a0bab03c5c75b96a9f1d1cea037487c25f021815f251da20c1a1cc47de14ced4fa46fb13b803f69bda95883fc07a9efca34b6478a116339e9120dfc68a6b13ef093b2d4fcc6b8d67a93c0d9b8f0bc83de016924a36e692d9d4bbcbb075f67c421d016715bac51e48dc1ba98b9db37ff668ce22dad55bc3416bfbf6b9feb2bf12cd6dc48bcc23f72521d753c5a06d19893b6d4ca13c071e736f8d81bbb1269a5bd76176abc486e65177c0b8d4bd29aeda1e30eae3514d1f3a4fe5924542c4b7eb98e8a6367545f1f616fd458734e1acbf418d35aa4e00d0651a263616869a9b550e54e6d007de6cc84977e94a1ffa6751d2b3d960e743cf0bc8cac51efe9fc2c86676f09b59f4e2a93b06e6a6d5e7cecd1918f0e618b47764dfaba42bdce42ecddc697bd3c3507eb7eebe9aeccbeab76e7973c04dd01f29c913d0834aee4ec9f2329860be1e5d744d0bcbdc04a69ee84f6d0f1f0dccd1afb07ff15adbf827ea03e5e66eabe91543181e788d6272c612b68acd3392699a1e6c4aa70abbee32037772fcf8ff3f65b8e852f79eb0cb526c0acf3056828169eb19397c1c636b85abf081fa4d6187890222674b65ddc54513ca4f6b08703690640a3dd80febb3a6e435a2582f4d499d8207eac3c6757743ebd1a17abbd2967146fc2233c6ee021026effac1451e2708a13e15929e03b09bd65c22dddea25d3f722de2abe27abbbbc2050e38ebea7fa0c031ca06851f805274d847646313ebc8286d5b2d3c33f7f3f0b78860d7e23d43ad43905383f68985e7f7673e3b3f7157e5b5abf9382721fbbd5df1f5eaf9443c5f585cfc4875a47ff7d2d96415a41bf007b16abd4f99b84b9189ad07b6295fa3eed125a07d090ae74afd75c22265131bdf811115ea7e671c53c6777009616b7d707e06ba329e7cdd05e52adc750eb4ccf7aca74f9b2d82d5fe6bff3976d739fdf1f34c33b7ffff7753595a76a9fd3bca13c46e7e5d8d3b3415278a79e3cd5dfaef08565f0a1f6264b61c24741e548066973abbc0db9b9192417f8c3c8bdaccd19d467dd916e1cf9ca18be8aa3801f74cd55d14f8b334c07e6221db0a535fd9e5ca02fc5015e85be28eaf4efb9406add1b6b7d148ffc282837d2b8e85dca8b539f558f91536d9665d07abd8e0982916d655aa31e7b7ec8c8735d73fc2f6bb7fc9a530c5dc180708726e101e3a3609225c5fcc0a30cbcc1a458f51a23d164573eb36f8babff8af75e2d48039cadd43e9a4ae8b883938aba187153c9fbded55abf43c2cb43ef46a24e423936d758a0f541effdd0169ab55ee517d2268db3acd63e28da771ab7492f187e45acd30006d65df7e219f994bb8325f9e1d5e2e54de81a91b57438f9ec3576cd6357e52e034e39cc8087278d7a8d97457d87f6e7d110bed722958c78da3b4f900fa8c5b54e85e6c66afd62d69e3db848330835c98dadeb6d19f5a2e0db9d83ff1a3a6b93ef65a3fd005bfa0d3c2b29e077538a561c50f70b872c72d4f871072ad642bdb1c825871ee2ace4ddb8ffeb7bfe5f19438d186755eff974efa35fc756ff26dad7d082313b2d833530d441c8ccbf33c7a996a5f2fd8b71afce7dc4188ddd79a1fdc52acf898fdd7cf2a384eaa9a8adabfdbd9fe64134f969c58fd3b7a5357d5b3ddebd8ddee5f6cc7312e8b83f8f984dfcdab814a9b4096bbb26ec6d681bcfb4fe1cd183d53e58b3d6d3bea012f523f25d1d6a7fbbb5da839ba5c38fa8e14702eff78bc4111b1beba8d80c357f696ba3aea9f2ba849bc4ebcf25798fad3c1e4d53114b1befa5cf810e16348248b3b5b72646948edfee7c918ff849e1fe05afc8db18ec5aec6f6b447fcee99e1f5023874f47928a7d65c36b74c48cbef8ac281d37cf5652e6fbe44fe330eed7f7dfe2fafe3417c9fc77980e364b4b7ecb75fd6b7d87ade44c2276d5d7f9ec493fea3ce9a5e4dbaa8576e8b9bf607fe82ffc1d3fa63f51b785ee3133c83b7605ef52cea4bdd4dcf6bedec0d13eb157e3d56e911ebee578f95a6ebf227fa60b3f345e78a4911532d279451f86d7028fa9180f3917a33a2a97c0f699f2283ed300f907b82d9efe1ddcd6ee130f62b752f18ca0788625a43b4cfe9d29f17dbc533cc225dd875601f39c9e63ca4a18fc11d3f9643919ff57f5e2ff524d806ac235b80f5778e0e4c0438d05decba320bf685b5db7d3eb0de8ade9d725664fccf06c69d66f99758ffddf73b3e0ab11414f64e03973cd8b89a957d1d836f41a47e897683d26af246db14cc5fbadc6e9a8fcc026dc545e136fd3859e268fa6ebce57f2ca5f1298260f9acfe47532ac7873fa4ffa9c2366f9c5d0222d688defc17f7844eae786f2b6461a8e8bcf80961972e29dc38ba1c6f5c484272e686de0add4b7c7e9679e9b7f4d47c6ed74628a5fc93b4d9b937eb2e83586574fe2359eeccafbfaf2cff03eef62e62893013406c685f60d452d9934e2589d37effc45cddbfea27943bd48f40b5359af4e9ed75d7c33ebe21b95e71a7eb1b556c5ea40dea4e4372a98aca92ecd49f76683dae0652cd46b0f8af7c97679afa1bdc7dd947afd32676dd7eb95f05fe6c042c2535b7b756b9f972226dd6bf02778c91d7e0c427b20a01dec3591833e562df6ae8db56a33ecfe63cd12d0bc8e4bf2f8d8769ac796c6216a2f23977c43c0615ebc064966d19a499ad9bd300be3e96ea9f2a158bce57b7158c43f8dd5a47e5beebf271eabff9e97ab359e78de8fe07f59d43bdcc13f28189dfd83e876e71f24bfe81fe45ef8076d2ffc83b6effd830617fe41836bffa02f8e893baefd5fa1857e241c83b4b4de6fd5b7be11ef93e3d2bafbe3ddf48664526bc2b8ec0bbf6fb57cdc3d2c27d57d8d7cb74606e3cc588e98e539b914cd508de576a971c82a5726afa171aa726af53c5e6765d006ce088f493d80107abce4e7423854956bd09a19b29af7c3f0848ba787c39d03ff91ff1c241fae1bf38b71413a5d526b8d67d0cc171a5703cc2f798ca8fbfdb0b3e3e90e8fbbab6396ee0e8ba769b3b4a6cd22bdfb7dbdebb719d4cf171eb44658d5c233ae589942e517dbca263ca3573f3b79299c05a7bc342e452b52fd1e601879336cb57e64ad72eb0875b82db40583d0ae23f826cdca20c9067e31869e366a63a16d47d050de96fc2933fcafe86c908743b32aa07b0f1d7ccf718db38e57eff9fd3b7fb973bb6f8c9f1afaa82f59e317db66e964e45745fe08e05821174d328ca3c8f930de2cbf706de04080ab85274af36bcfe00f44be82b6056da4627844bdc41973e25c6f074b87931e6d03cdd67f36760f5487015eab8d1caff61caf05d7bac83f78c272e4dd79a37b142df462c9ff16f7f3e6741f1883b38711f9b6a8c7345fec74fffc9ade79353d7e8fc1dee975d1fa13d2f50736575dfb55416b16c65a336c782a2dbf989974ed692c26857e0fd6342ef9df1803278e6111db17d79f5e4befa3eb8efcfdf4bcd4b8c4e3f9f1f33852631fdc485342771cdee2fdd6ad287b5aec66697d1f2fb762f697cc220ff795c7addbda4f9ff8c7a8f7bc6aecafe98d6c5398d0a318106f60cd4953d7458f47844383307fc30b0f973107ae4fbdbe58a5dc94fdf41dc662bdbad754deef4916f841ef383c5af37f4dd716dcb07fec116456479d5b1c490ff0d31a69dbdda65edef08c456f86edbb5aec8fa57a6ff4e0892433281fefd7e78bcde4b048059ba5f5e13ebfafe677abe24abecbdadbbd5dad95e64ca17fc62de0f599e7ac5fb50693a572f828e23248659314abee352a4f34a1e15a4c717cca3b1f8083bd8935216dd89af08ae2237605f870ef2826e4c7143ac2e42f6f82bcae56386e52a83103ec0b9d1fe9d1aaf3b1fd8f8f55de6ddd38f281c27767351d7775f1d8e9f7383d86dc5a9f97fecee4ff142df0ddbbc7a886b97ae5d103b09f1a2fd1a873132f99193abbb42737265aa483bbcec83b4e0cf9d17a75040d38dd03755c8da776aba5e31ac03f45b1ec99ef44cf93dd6e39b9e7ca1f7dfdc72ab634560574cb0d8d33d17ae82aa69bc98074ef0dbf70a90f57649234336686e76c8fc08ea6d5310819ebb9e7e39addafcd7bfd66ac376afd6ebbf55bbc64cdb3e3da49b1d05adf43ebd9712fd7da5ef3237f4ad6f93e992ccd9ff7d8fa03e7063112fddf57dad310b50093b47a4ebe7027af43c2fe115f96f273f23fe40e744deab3c60fbd563d7e7e2d69f65ef82baae31f894b707a6d25b6d5c02f721984b6d6cbfa5ff90ce639f34fbda504f416102b424be817f9a45bab0d53b9a81939aee64db856e8f4e383c5d67c9d99c7ddc29daef3ad78cd9eeef5827763143ecfcf6afeab389c622243dd17ae3429ce1bd63c55ebc8fc159a152aee31b1aebc6a0d0b03e76265d6f388a938b0f2a3b9badfe27ebf759de5fb64bdfc6fea23ec752f38b975bd4477ce0d1fbff7803fe19a2efcb07a1f9ffd738cd4f4cf62b08a87bf74fcbfa43b07cf63f4b7069193c143538c6c43fb57926731d62ade50edc1ebbc6919f15a662507960d7a41b55fc0cb52e512ad5fc8013c3b8bd5418c6cc61df8c0b741348556a668817333d5baa69f97f4bc00f695625517de61b4e6cef439b85a130ce750939f33b402ae3c74cfba61f02d1d9026965706d11cfa9901b082d03dd63a5adc20ad577ca6b174f01a3a0eb4e1ecf64fe3e9c40d1fbabf3ff7e7ff29dabdd79ae6d1431a4ce4113c77e48373c26cbbd25e15738f34a6e66a5d85978278243f1db556bebbdd6924ab5c986a2e1b7063d96ac3188ed1cf57315e3cadd97cffb359a6e3fb3e78bd7618883d0ad4c0480b9efc74a11fc2f7d2588e88ff4b3cdf3147bdb28da59848f8e0a8f506b5b114cf1f08fb6e37bf480fd3f08bad1d814f27559c533f1326577b19c46510f5d3c64cd2c13a57bfedd31d8ff25133031a2ef0f8a335970f489371fda0ae19c5b871ad6ba075301ab6a1034d41261a6807dac1c86e881fee22c78da01188b5bee15bdefa856b112e1b3c6e93d679681f1a49f15eff4b6b2adce44d64a5e67730f262ccd5732dce059fefd97a2c0dfc2239086023e352c4b2ee381594cb65d0b3d7affb1145a4bd28d2aa0c1cefc85359f37d459a33b104eeb15f8c96948bc9ff77cfbd3fea7b93172679a354a4ef16d3fedc69086cabc673566690ca81c69702932f8a69411c6d8c37e8b0f208f994adb5011bf2429252eb1255d0fd26fda2967ac6189b06347c5a3586727bd67a2a97b3898b8b9abca5c6b307eca4a7d6ad9e38c6a4cacc9fc7e77470e7d67cd0e3821e9ee5175e17efd55dbc876b077fd8d83869eda938f449ad2733f2d5825eaa7a1df0a6f023e5e1b0450f34057e43880df4212bbf9075e4e465e0b82aa767a4258171600be84c49461e3d8b025ad818031c5c914b2d307a4cad19d0a8506b8aa17b8126d52738ebfa3a39785ae8e780b3f5b91775f2d779aa2fd9f1134f973ef1ce53f6b4d8e5ff69b1247a08591944a4a5066e2669a9a97c053a24eaba829f13763c1fd7f68b8cb4be42dba4df93b41949db19b572c3a7e72cf0075b8a5be03f80e36fd5f33679945e7f56d6b0521471c95bed0f0c2cbd87754dbc64c0d3634f237ca17aff51e537da33eae817123ac87ec1a91f88bd2d23cdb19095e48facc66c2cbbef9035d0936e49a735b6e025a0cf276fbd123a64c006431bb30c26fcdd67c8ebcfd8681d23f59b149e41bd82583d7ef939f6e5e7905ecc16fac481d655248de1f8783e2e5371a0fa5ce01ed4fdcbdf93ea21b35238c98debc93f5ecfcdffd6f5e437aea7f777ae677be37a92f6361efb13d793dfba9e7d3fe37fe35ad2ed4896dc5917ef7ffb60f477e612fdf6c1e8e2b7dffca57383471b69b3c9e3e9f77ac4f56da8ae80eba47e43f59ba9fc9fd6ea282f497b49c5120b139a8c266a1c273d431f9a4fc3d377c0fbc3ae1ee15a3e70c338dfa35f2cda0ff3690f5f46e2ed613cdab61e37ea1c6f8ca57571fa0cd4c65dfbfa33b2b2f34a1723e8a5ebf3cfae3e27185d7cce587de721fb87d73a5aff207c84ba96b7d6da8f73539cf280f3dc240d9d1969b047a7dfe5c3d8f87bf332a67919f69e97cdcd35f0cfcecbdb9fd1639d4d8a6d29d435f8ebeb1cf4e1f5383ffa3d7d251233d9c4d6fc77bedffda7c409ff525fe24bef696fa4b9ff579ec417fefb3bf8eca9b178d3ff3148ffba8f75d8ed951f6249173d091517660dbc60695d50e3ae805e3a792e3c65c7807269f81d08c2b4d27398c389d9d7e72d3193ddb3999477dd9a0fdefd92470f9f5c37e1c16bda3ce1d0c0d7f29c0753dcd696b06fd54856d0e5bfed7bce1b66a07673f3f3bd92930e6fadfda5b07609aacda8fca84e0a9775fd70951fe9cf69c94fc383371ad61b679c0af3cfe528cf93a45924f3dfc9fe27fba63cc02fe956aaeb93b5bc0c483fc0a29ac84c12b7091a036a9fb0a05586dc49448278172a56303c077a246de76bc3a3197851f02ec65a10033bd4e9ea23178fd47e056d0cf831907fc99a0723955b6fa11fad35b0d157114e8e3cba570dc5196751fa73f39cd6bbc564ccb2fb18783f0698e7ac5ec5635673579a49b1f3c438b3342fc2a6be59aeae1f7c0f482bc72b792b0e54eb456c6241db9a34501b150f437b82fa8316df56ea5a22c6258f393c7fe40d74721b8c9b76eef168475e75517e54e32ee8d58799b5dc5d54df34def8ca756e3c2731b9294db55e8b58b6ab42bc8a24abc55636b88d9a51467e16cd453dca227cca2c82076ca3e38c0a1ae684413bf91276b57ef2b2dfa581f6481445768163e647ce2470aea219b6ab628d5e5e30914ce31f3a1da50e032dcfb86761aa6392b672d6692db7d06032b52667919126e7051e3a29d65a37e9a459d16933f68a53385b89a5397d5b4e926df6345f7fcbfaec9734b3b9145606ed22be3df564090bb797c627f1878a1de1971e38c8adad734c19538c59c856e73fc85bc85b8c9efb441b8bf078e44374f692e96264150f8d987189df3ec53ebb6c708a8774ac03ddf5f446dcbe97476141b349639b3dc4c97c2b9b7e5cdf199b33e377b6df1d16e97cbd9ab8dfb217f435bfcca1153a2b53c4d2d0d879ebd999ab354e8da5b6c3dd0709f6331b78b9bd6c085b95a4412aad5bf1eefbf170a1d566decabdc4addceb05f882633f2cc18ccd8d87c3ea49dcd7987fdc0f843e3870052f9deedd4eed631ff387fde7da7cb77d533fe3630177f263093eeac32bf4fa53e2449cf81ac00213c7019c899737a162e2d049d4586d31569fde8fd5b1a975dfac7e716e56cd5f1ebea76fcf973d9cd6a6c60ed9cfcefca8f2153556688e23de396abe24d39e63f6b92f37ece22070acf4b83049b3bbe366a958437c1eeb586f473fda4a6e6446e8248e8e7b0dadb7a363e0f53f8a6bdacfe21a3576f41a76ea21e233d1334c544c45faff9ba171ae13c87eb851775c6466d2e66c7cc89ea6c76f39d6bed293060e29d7fe4bf031b0e99a78e4f91691af29f13816f012079f18eb033008ad5f70602b69dca99c5abf063e7957c7310268ca4bea5d6fa0e5e5f1686c8a7dc54ef84527465f8387f0386794bbad526899479e546b22fcea1a15676f3b1ce4c073762d6ec37b6a2b8314ba09675f3aad8fcea345017ca4cad147cca2fc8d1f45c3acbced6e0f2d3f822e474bf9bebacdbadb78fe4f8cc7ef92f3f951560723668862ed8956c52bdce4ce8387c7d575fb6335451a5b17e37570e696c7e7b11a577a6caf7e44515e92c7c19c8b8d4d5eb6a8f7c5a580972c723503de63c056a00f44b81d57d6fc293397ea39ea8169ef7aef483c85f9f5b80cbb31d98d473d16556e19cd641032f884d2ffddf578c47b73ede9901f85052cd9fbb128e93ebc25e871ab579df12133c52eb744fc9c1abbb98a8127c9f7e4137e6d2feefc10a139279acf34e77268cd05a4c35d73f7ac31a7ff2eefd77c77a541d77dc68fa5baae9dae475c9127fdc6663cd15a076a0d4dab96b8351c3c1be084c873a7a797a65e938cf9db32bdf3e5ff2faf3ff128bd2a03ae7fd6902f31f05eb61fc963f0c8bbdb3218a9fc90707fc168a86e1fbbdbe4b1ff951a7be7e581bdd9a0beadda1bdfedcdd43f37fbae418b71523e3fddbd3b6f7873d5a1b3faace769dfd6e378b8a9d5c06ff7a68e7c34ac03575a4991a8f79a3c9aff882229c51e7e325ebf5af6fc6131993f2c27e3e6bf8aabf51762972fc6cb5f8ad5ffade26668f880ef803e30fc8c1c71515710ba1e29fa6a23a831182fd9faf7324da2cc9aee16a9fd2df7b51eb5c87f69af96b03dc33a52fb54fa89cf84299b8b35488d87238fa5b92a6e6882ec65cd27377123ed755dd405be9eb093db01f2cd1171711295a33ca931c74b11ed38e2ad50cdb521d3fc3a8bbc8bddafc4546ff9dd73f286bf840d5ed5a956453e8bc6470c798c7ad0b333259f52157740037e587bceb8bdd4843ff16122578d1bd26471b65ad73bd3badec3ee73b486d9167c9c59abd6ba197175a29c706d7a3c788e88b06e8e6c03bd7d680e27af7cdfe1886c93bc9ee30b9c91faccf8843dc2ba9cf05a107f537b6122afa4ba2bbc4ea03fde6afd71436339f56d5e8aa7b7a3dfe5a771f73e7083d0afa639f2ee339fa817a5b150a7735c119f64403829de3d67e9dbad5f24112f86f43b40838b74487b6abf3e3c3f4dabe5645c2e92f95b661e77abef8991fa528f9b8fec5aad3dd77c09ac5f25f17e901b9817d8bbceffebe4fb9437ac0c1cea49ead7fe0d7f9ec5450f52d6880fd5f80e358e6a437eee7e210e7e240977b3b15b8a3d32933050125ee7942740d785b4fb37e02e95a280ef38037732caa4c673b6c18838ce94cbce24f9beabd7276bbfd89aa2b10718d72a16015e5996a2509f256dbfd8aa780a5afe7e689b01b87beea0f77afdf270c8d2c16e99fedc2ee2b17acefc0fc15f5dd5c778b450f113ae9508999114bce3117e867d6ce9f6f57a96143b8ebcf5316b96d023668d5f24298f765ce5be7ca45ee3354b78f90f99877e904b5cc306ebd0e0ff67efed9a1375b6eff1b7d43c38f59f4b2268b0e8e6ab2088778a53ada049ea4447e0d5ffabd76e7c8a99cf8cce39754e7e5ea4348a8874f7eefdb0f65ac4dd91707d5dff315fe5663b951a3fa7fd6430dffc8f8e7fec287b6d29db7f3eeebfbb57651d1a6b47ed15efd4a7022db186afa0f1530571bee36eefdb3c2e77bc90c45b1c8fde8937a1ed6bcb77a228b7a2b62de2221822572bbacc0c8adc08e2accd231c7257be9b01bbaff6cad0db43ab4c5d43889e6b5f5d5b158ef7b6effa7bccc362f02ebaa409c62799eeb9f61ad2335dc32e8962f12e56761d92be90fdc779a05bfdf13fc4e60cd3ef8fdceb55ae4a0f9cc6cafffa4c8b2ebcbed7edafef75e21c6f83fd93510f6dbcd6fd1f9e1d91ce59c59fb38af8feca6dd897f6a250f64dda09f1f855be2b5ea90f23f1c324abf86d79b0aebac7d3c9a0334cabf583bfec1a0fbbf265473e8f47a9e6c2a8c167dc0857d4b6095d40e03e33f588fea605fa7278336c72c9d5b875a9175aed4521613b6bbe91963a063d2f5dea1de0cd90fa57a81eaee28626410f8e70799ceb1c8b670605f42d2bda371d8618b376aab00f6cc556e376c08f044e8875d6410eff365ffa3847cce532df2cdee69b457ff1e037bdc6778df1885c8f25c04d8d4c5e2a7f117361473ad6ed38e6123d965656e1917170a2636c31affc1afd600d97bc18bc8ada6eb8a97dd5aec65f906e06e133d5398c4ccf3b654b86c8f3515ff6506bd9e552a066e8495e3c9106d55876d4dee5bb0b93f4bb075cbf7fdb7ea2fc837e52ff184f8d8766caffa83db9298ec16f5ee72f6bf09b3f725057ec037127d5a7b6017d96317a3d2bbf4bf92415cff0787a2dfff48a9e471cefe8fc93f28b7b677abc273a85e82b01af9ec6db112e6fe093be609bb31ab458cffbd67c22d8a317ed322ed276d79395e8696e9c62e063dd324e1c29e82582bd261dd34698ea7364139c9a834703fb474d5a82bc51fbc3cccdd5314550e4acd534400e63d5e2f3940d10a9de5faad6ae2087d775341f1becd19de39eec6666e7e7c2fc9ab58e2f6fef29d766011fa062e5147dcd1dea3158bfe279e1edc2c91b6135236604856fe6357aa0c12980fe8322af60cf541cefca2df51fb47c09f45c6ca8673a6b1cbc161443cadda07f9a6f351f948a91d8101c35a54dbc34ea51f7cb109f5441f905dd537f91438adcf5a187e5e02381f75f342d7e95f0a27c0fad8815db71ca47d4e037c031d98d39bdc1fbdcfc5e2e9ed7fbff913cce7fbe8fb26606d9b1a1dacf48dfb218023fc2554c8c393ddc85317026367ce195438f2f1c1a99b41e981d1403dd57c96bcabde45b51a317d3865e59b1fc36271dd576df330ff1d1291e1dfdde6bc2a2eb98e9be7db132a693d1cfb9357a1d9adf77f34d522cbe2ad6edf6f960f9ae57cfbb1a1fb2d2f556ea1ffa36075f694eda3bc59a430348d99089b237c4ad0a4e52f4d766ba6756f94d25b436d17f5ba3c66aea1a6b87b4063dd45c9342eda3bd77411cd8c6e1bb8031f251a36b9feb381b7d557357739f45b61d7ae8e7eca8eb51f636849e887e5f5d8b3bd53abe72c7e38589da5a03dd2b9bead4d26e35da38b8a84fef81ee2bbfd10e2dd284cdcdef6ce68dde72b3b7fab258cb7becd1b531a5bda3d5a63cf2a201cfeb906e3d62e5c37c3482c269e6c44bb1e535f8360d9a73234efaf5987f7bd2ec05d726d57ea926acce4d73807ac6194f32b5cf577370a88153b7268d7a70a0d4c01a779d2a045ea73dffe89beef5b183021ce64d50e4e695f9aa3e57dd889febce9f93f5a2fffde7a2bff4f2cdff4cbde23f1bef018f295950a831f476dc1d6e39939548322372a1ffbd3df4d444764d3509e2636ef3cff0c95ea8c72628c606e9557888073fd3aa577e1bf8238aded51892a7576348338897af412c4eb17f87de50e52386c0504c2ffcae8bba5ec2b5cfabe620f1d072eb2a36c1d2fc68667b9c7879db8691b3075712f005d4cb7adedb9a34c7ff8ffdac843738f4b85eed79257cc25d3d2bc0c4c5aed721cecade6b006c83b2e7eb77f48b10975227886c2b807e9df28587129a0b2bdba2f59b77822227bd8595dde0734656f154ee04f50fa8b5abe2b38efa3edf25df1fb8bb09b4898053513ef2bc6b7780adebb25d48f5b094afec0e57c71525433c5988f720d2c7f5d4be397887764251de9aeb39ee2b3db1ce26588bbbff11aeecff60ecafecf610bca6dcedbd831715fdffbcce6abb0e55acdef86a7e6c89031818849ad605e2a33a004f0cd64187f8d0f07e353f1ca7e682f293c6b4474476431c9f3ec53de0d9cc280e53315c0cae2b43d4764763206a8ae380adb081df8d25613437c0852226cae252c565a6efb68f148b05c5988157b6e929bbb0a73aacece85cd471adba525d5b1562fef25da8f6c9f1be52be82f2b9e1a38df71a0737d6fcc5eab93cf872c047d5677839c28ba256dc4b793178e5e95efb7063f42888ae5a5fd83fe5f1f95a6bd0c2573bf3c362f886e54ec4eb54283b67bdb59cb715ef42bf14fb33ed9dd8e72d81fb2411a786ee6dfc5fa7b1c2c33ffba05d63119f705e1147f9e055ed577ace98ed9c11471fff061f4bcf178a035850f0d6df3a3e9fbc09e5c7635e9867630eff3e8c6c234c32f892c01ad3fb7bd236fd079fec36fc4837dfac5f66cfa3dd74229ae12461f3870dfe804b093107fc9d2892576583690eaddf8987724c3ac56a6c0b47865ddb0c13e826b0a0c83a38b60b8c97adfef75de827d07bf47ac5576d2e95ab78723f73873bd1c6aa05dff186789cf0583cf9547bd3c71cde57c7eaefc73c1b523fd666bf0d947fb5418f8d8a93d10f18b9f90e7e7ce4583377f0aedef3ddf52bf00437d6794fe752d45fbfcc1eb9fc0fda1aff3df303da93e88bc0fb5da67147e556ac989937ed73c70ce24c0af81deafad473d63ec7fbc40bec29bf5bf9aec0c90bec87397a47c533c773e4aa513780bf62c136c6ed7386e737ea819ccdbdb8ffdd7aec8197585d8770022a3ea8c1af8f3c2aefd2bc4ba0f1729c5734be52cd01493a2ff41ebdaeecdf50cf39e5373dbd0a35af48abe1707e7c5fe4d4dc93357fceb6e2df31f76e8b3fea59ba785df43bebdc12629a8ede16297bd49ece6a4fe0cd87cd895dbf518f5a97744ff3629d8273e738ee982b21d92c16b92353bf87d7a91f41cf09e533f5e5d1fe1dcf6fd0a3bf8f5c7fbf58918dd45a2155d8cbccac69e78c035e65cccf95631207f1bdf3422cb34df535b567eec233aa314f52d1bf8a11780de24141af23a72349f7c1937c9255b32eab16c5e87a1e6972a2cf7ec21186b13cf282116fd4aad5aec19e020def7103de04b58f18c01f31c93ec34388beac3ecd676d3ecb67e11ab79ffc6ef0075de12c6ba847ccd1dae44f85e6b726fdb3a6d47be048d758b12f92469629ab8c342cd4dadbea5cdd962799a1eee3ad737a9e26753611d66c322abea84f762faec652f717790fcce71127beb3e5277dccd36bfd7d57797e3fe1c9fb368fc0057a35579ad71a238c9e187c2fd5724ed6c8ed6b59ee04e2d91eb4ff288733b493c2df71775480bf81f802504f25fd15aeec7a87f4084b63e60e5cf22b87123a822bd875463d3f63f21be83bb45e60691036b134891f20af49978ae99a2dbe634bdfc1f01d91fb54506e3bdf8571aebedfd09c124648fb08e3c45bcb42ad5318c2a71eda8bc2df8571725b1ec51aaca7fd351b9be267bef99a9c12f7f000aa1842f9831ad35ee9da43278c6cfba4e70b758703be1db5cc130e3fe26a648b1533b58e73bb46aa80ce73daebaf7c0960da0569e16f4564efd1d718d995309117b729af291bad4b44b5b6f1be125df40c1eb92cd4ffe67e7bdef33106df17f2ffb7c5be5e3619fc2b4ebf975fb48e7547fec497dc3cf4e5571c7dfaa40d07cc8c3b54760f796ac29b4d97d056704bd93ea2870e3935f4d9d5027c02c33dd55df148bd7431716287adfe04ce0d7deacef1fcd936287a37d98651bfc7b2442c179ba48ecde9e6e1275ee38854fb4862625f30393823826288d84dc58561e4a05e17c6e0cedf913e20729816f957babed0dfd7ba7e6e00b74eda71b5e8a2b65e4367ae90b47710af8301bd15f46c8dd51c50be5f2740dd21d1fc345e2703a783b490a3d0fc0ee0ac423d92838b82af6c9393b67f43f184dde1eb0cfa1d843b72cca050df01be6e33884bf0e790df360617bfda8f8857dde9904df4f6c4bd4db14b50f88cf80b3db5b7ed05621da7437519ea09e3cc3369ef54f76bdcf692e277dce60b8e968b7e8ff0d5e5f7dd63fe7ee44cf2dda5c919786448f71bdca2e215bcdc1bb9e54666cfbaa867d76adf08e3c75cff2f9eeb496ef65e1e7bf2e59ecc49e3689235a40fa2c6aadc0917b914cc63cab5d91de8bd7669ffa41a676e40d71531ed98cd5d5fe3c5c74d461a8f15c61bf3d5df89023df6d0f3a6793786ce1270c26ace2257506e31a70eb9c1f5a77c3dc41f6b1ba4eb9555e8c78546ad9ac3654d714c52905669b653df018c68936dc165883906ad0d83af10fb68ce9492fafe6370593414c7653b5e203f6d72c43e8e496b90b01abaaede0c639ab362d5ae0ba7d2bfe3463f2331a769f533ef27f5c3a7bcc647e51833d7dbc346ff037f4eace6d027fc3da20ffe9e6f73606c3ce086c1ab030d74dd434e5af446885842cd01d96ace5a940f6d75e93d6b7e8af30377954339f278c1056214e4dc2b7e380f6113444dbafdc0b102cf5ccaf63b75debe12e07ec9d59cf2811b28a5a1f36abfc733a439d2b98aa16eb3a7ebc5665d4c93d1eb7432d8ce2dc1b2c9a3dff7b25fc377bd26215d856bfa1731f1b972a6e22131c96c8aa3911ba928e76337a266545f818dcd493fb0186a8c72d2109f85ba2fe383c6ac28f89672a37cc75dcc7fd2dbef329b7a2508fb87bc6cc4aabca13c2db08029f0a7d5cced991a8b7a7cbece6ed3026ae7cb843fe6c8d91c194ab19155d8cbd8e73ac35e15b94f2637a187bee54cb2a4987e9b835f7df01ac4d34ff3edbc8f7e1443e83cb61e5ff393bc72e730374eb9a880b1f26498ca362fcd16c5e2c6bdec7b38b746de6c22d47eb58acdce786e8d96f39e789bf7935d663e726c577326253729ff0a1cfff1793c6874deb6e2677f94fb045e28f6f6e346ed5163da13c037a17933894b91d19cd3bcabe8735936ed73df955be265e5d88b8897b57daede07afe296c723aae1c2af236d2ad46b5fb8b25ba8cb1d6bb639f968e43799419c6d85ba26683550cf8cb87d6f32bf68bff01d795a4f72269bcfb847f8551d8e44d97c9b7a7a9323272b718dec88a7aaec04f180f382cb4ff4cd31cf84271be2465c429f728ef7d79a33d3ab9282b83985a7636dd4db06dfe23897a1a77c1bf876d09c06266672d0f9b8cd0e8d1ffa3ebfb639990c93cc8a5c355e4fafe0b2dcc8ad78d1fd6ea4d56342f3e5367dc8deb4bf58e766b2cbcdeff517c687dd538b6c7c77f1ca5fd438885440cb049a24f5a258f8c0d0586f5b5ef85bfd1a34712e8ed33dfad0846c8238df859af7ec335b705d936779959359f4cfd6bcb6073ed58010bf6792c70b3fec65d68ce6d26deb351dbd4c27623d7f113ff3b2fab9f89ab8d43b3506dbb9427300b9c58f7380fdcfce814db5cccde53bb05adef7cdf46beef1f7f2141b4931f089cbcbb36237272dd0c338f4def98a41072b8c6c9bb37d25a84f9f720a2bdb269d4959c5e87347eea1a65e696f1f146a1ff7d55c30290fb778e7b56d111f78ae7bebb596c3788ff39016ce8d35b6f3317fd4283ec48f19e5785eb22672a7dfd4ffc2ca2af48d5ae801b393c2aba0f96a28dba0e2c60cf889ff445fdc1ffa04fd79ffbb916f92263393dd8363f7c3fa367c77fdcae391294aad3d1539c4b763ca2de518f31d07177fa6d66e674e1833e2c175b93ce5a9c4d836e0deb5396976a007eae3f94aea79697aef1aa75d058594a7fda5c8b36afcda8f92354131ec50ff8c53511ed4d17d5b8e8d1e7be034ed268c3de85c87e02db1ad305e7e8b556ce99635f5b7386d3fd49e747173d208701dfde89ffe36ebc65e85fe3c1d75b3f46be62fefce3d6ca85f89345c949df76bd26dc16b541f214c3674c6793196c84744b64dfc43f8bc01bc1872ebd07cc1fbc3c6df534fa90f1e21ad235393869027792c5a8e29683b526fc188fc5c7069dc86eb1a6d8c72647efff945f9a5fe069f0a43af26f23be046d19c2a3ee92016bc26bc752e891b05fe01ec0230dda4a96350ee08f9a9963bc505662cb2097fb5b23fe4a4f89956689b4b1834474c2dfcd1b6c671c056aa3973d35c7868fdfeb30d887b2d778d1f265967e62eaeea3d879fd5d6aee7977ea9f37ad3585a4ffbe1a6f7353949eec3b2a871006fc8a2c8761c7c568e11140ef4b084ebc930b22d71f0f3cb8ab894e03b5464bbc7e0cc87edeeda1d9e64c6bccbec2016d07b1384c7dd87698ba7243f837a3abc867828ca5d18537f1ae187c7e8b7e6e8bb3ef2ec1037041d1b4676871f8ef5f571eb777c176a5fad2f70c479f29afc1cbe513188fa4dbefacd37cfa9c75ef1f95e112bdf6d92295faf9335b0ed7b81bae6907adf9b4cea7e77358e0cdc03ba5736047649f9ab728bde5a704feea115071e39752e8a4f0de1ed2d603ee3c119473bc6966aa51561387cd26750c79ecc43c2f50e09d77b5bcef2397f7e12d964bdfaa2188cffe6b9008ead96570d310afc05a6395091fbbab136bdd8e76cfaf6e3c165756d4cedbfd4c74bfd1c5da719c67217c625f3ddf651f330426bcd3193023d64263069a58a01cb0e616df0a8d6c69ed7da2e8c2569d0ffea58f04f3bc4655308d285ffd5f13856d919e1f3a2d57053fbc7f49fb194a475db90761c53f1908a8fd46f53cfb7edf33bf46e9ff36711cead517f3659aebfe89e744f3f8a1ebbde939a6fea79fb483a805e8378c69da65c7335aa39f7c99cc47c54714d44f8975f1d8b5c0c274ea45a6b00feea783a56d94226eb039e58cdcb977fc63dfefbf5bd954dfcb239f6fff8fcd27516352ee014e571b9132ef87e2ae044c1ff42f954c28fb6d867c2a772d7239e990df03ce0e7e231e5eec0d14cfe8f29d2e379b21ab9d98e58e1981a3c8345a9e75172c5b64177b316267c66463ef308bf93ebdfc90fbf53fd46d4137c8e5a3ccef1d93da948eba66449e16b0c3d8e2f807dafd98eb8d0b81d44ad5f9069ece692e35e41b7c0a33ffd3faeb576d4fda6e7a87971e2ddc5e362a9ee6d8bc53de0c881339615f0f16eef1d75106081e58d3db58b3a9b3cbdce52d1cbbfa65f780f36b70a81ab9dfac2220d1ae52bccdc01f8abd5fae0cf6f5b6842f7613359e40a53f90ba4f58acf923f00fed6e1367cce18cd21e4016f8ce9066f535764fc5147beca0dc27be86b61c403026cf45600a3b83489ff63f02a9e815954fb225b14a3578d293e7f4e3811f5c866eee8db3c62a6ef22bf83f153e7b875cdcdd2214bdd47cefe9a769e30c011d0245aa3819b18bfbad52a164656476e622adf43f736b188f8a99b858a195e2eb58c479f3c3f681c633c4ffaa2ac992b80df22bce808fc0884dff2f67a3ea8b9041d65ccdfe33ca1f5df6526cdc1c59df364f43c37ab729a76ea6c327afba29c66f7ad79154b255967d665563b678409bc37f129ea79222cf53fe689b5a0987b2b34c6443fb7f49aa7471798138d533ea9e3dc34964b3137076ff37e526693d1f24bc6eaf7e5780d8a55d6a9606a7cbc7dbb4f8a17ec9929c6f4e5d6b5b41cce9f93264ebfaf6669b59ef67b2cfb9afecebd79b08a8fa599140b5f3c6715d77ecdcc9dea1e23c263918f03bb4f9a6a279a3abad6f27ad05fbb99b37d59e665cf58f4bfc7d3b45a67d663bfbcc2e9082d07b1b28d4531f579fc5400df407ad4db40f34c93d668b6e52669918293f9809721ec0bed6fd0b7b6697f1c98a4d3ad39a94b59712b3367ae3ed7465641d17b470db39455d8dfeb7a9a5de9f80d75cfa0901a5ba7fca65ec1bb6c07bedffaf8dd747da8a1d64191687bdb5373a8224cc6587270729366137f3eb98e15b4da525e0c7cf5bf28651314c9b738f6350e23d1fb3c8eaf29e7eac3bef052d627f3b4a2cf79958a3551db277e8d3d61046407b12238c26ccdd920eeed8dd05c89be142b8a1d7d3793e1333fe18943ef81fa9d26b41be2f6f949efc1cade8b2efa90d13f85fc652a894f84ed3b4151ea5c90dc8966f48e5ee99a5933702127fa7fe20e0a0affc658b25dafffdf639d7e1ceb1d7787d433de975bdd335e91e6956d8854cd59bf73678dd4152bea67a6f9d43ef7eabc19528f3eecc5e16f7becbf6115ef71704a9fe358f88ef2160978d3a9875f5611ea21cb77f46aa939a67592a0cf10f32d576b37426e88513ecfab686edd56c78cfa23f0948ccde47d9a0af6f09f3e8cbf7db475bfb0b1e3bb6d3874f4608f5b8dd554edf7a4af076df354bf5ecafda298aa7960503e3979553e39fa7d57cc8c5c0e7bfc63c3c0cbc04b69aaebc73ed3e75af748eb2a9c6034d5dea435b3880ff85c479d7a71bab61101e78b9a096a70c8351e358eaae3be3020ddad546add23bfd63d3b358746a8d3f2c05762ac6ce990f043f1ba10e0e2f177c2d5b57d97d643088eeeb2439c5fc4afacb9300cb1e1bbd0f5d43dee50df7da9ebbbe016b005f047d2fa51aafbc22997d98cb8e67f3af0650badc922361cbafe1c5c4287ef079f18bfb80e1c0f0c65665ee09d4fbf4b6bf678d04913fd3da37ad1701782e7cddf857186df2022db24ec6409ada0d0cde937dc561ff2a7cf83ff9bafc57ade4f8a0786f62a461e1a37ca57f9c51af0792c4c81b54d739c477635efda2a96f579bc7cd79c943be89f446cc76bf062d85a8f9b69fc82a1ecd3992fa65e87265df227be18eaddca4755c7ff1b7dd52d8f87876be3a4af67e898bef5ef5eb56daa294fa4aef549d74647057173426f4db6f560df1d352dde5874196ac52ddf25f1779ed495bb8ca19ff4eff875b7ac213e4d3bcd7053195fb48ff49ef5a36c5ef309af6a73aa2774d65b7ea923abf6973edf6abda12d8f1cfdbe53e5f549af7a74cac14ae7434f7ac42ac2022f3fe97de7279caede999ed1c7de762eb5fe63adf64b753e609cf19810deb918ef04fe576b0cff6f0fcfa907027f3f707f92bbaf89c76370d290ae0b3877d4f96b651bd4b9a1b152f8dbe375e0af7d6d27da63d573e2ff97c2bcca6bdb9c7d77743a9e279c1091a3ef37df8954f9b3b03964f70a9ffc8b09ff703fceefe5581f8bfb4abe4e4478dfa0f06dd2a839f90d137e72fcf8fcbba2cbdfaf7c965cfdc6bf742e67cbe345a1cf25cfc73d69682cd8e1f3f4d7bea67fb39e33e8d3e83ad655ce05dcb3e39c3e9b2fb4265a5e625a33d187be9d835e16f5ddf0735dace8f33e9de0a8717a963f08d5b8a6f7af4db517dcbd0ebaec334deb3fb135dbbf606b889f27fd3bf32b8ec11364fd0d3bca6b9a13b426cfe7615e9fd881e8dc867c98c3b085c32d27feee4fb570f3fabcffeb649e6db556dbc1cf38ef293bf53be4df9863c079d27964a3b9678df3be35ea63bb5c0b8798e8d45fbad49e3bc6427afefcfbbee396783eee43e342cccdd1d7e4a8bf2f076f116e31871ea2404fabcf02b5af4e78cb97a43994c6e09387a666dc3e67788ebd73e554dc94f5efd8efc8fd8cfb9e5fd872cfc66fbdce357fbe27ab787bf31b6b05fbbc27954f7e4ddf316fceb87eeaeb5c3ffcecfcba5e6b2fa089fc812bbfb9d089fcbd7342c7b4241ebe78b904f612f89c8cf039dd16d7ad7ec3c57bc43fc238704e0e69d2b9d382b8367987fe077f618bfddee7e0de54e774daf5ab62f5d36b50e351070507879b7acc227ce72e8ccb569baeed6900feeae23dcab1b8e88fdc536ec031337c2f783ff1ddedf521bfd1072f9d49bf4fe34ef5efa69ca6435c61e8d7558f99c6444f3fdeafc3b57d7ecded390ff72b6aaf8db5f74af326e37734f47f7bed6a2c9ef46fa3f3fc289945bd239e1d14dcbc72bff69a7bfbc3ef3c7072f7f7dbf3fb856b517fdb93b1d4b1ed50cddf0f634b3aa8199de7c6586f6e8a25f2efe543d3f8734c90c6aa8e3fc3587370ff8b35343eea4541f83ec2f6f31d87eeb45d85c4f3dd0405f85d892391f6d0a7ab583d709c79da9e950cbca3d47fac9e1bbaefd438394f417e879a739211ced0df853161afc5f80ad6b646cf883577a9be80d73dfc4ecdf188c7bf873bdf00376f29ff8b7871e5f6d06f45b9a34ee8edd5bdb2c0551fe1affd1fd7eaab75a19f033f53030b498fa647eb0dfdd7e5818394f08e1ef8d079baef10374379333743dcff5e004f6376e269daab513fdae45fb26e758f560ee9e67ad5a3efe1aebe07bee8270ffccf3f71811006af8edc510a3c2d7822f956d073c2686d649d144b3fa4ba91f295f749b17c0de2c40cfbb2cdf536a4fb7d8aefebbdf2dbc7ee811dfa2dbe2f8f017759ca4a8d097fc94ce29607a6d6243cd7145c78c06fbebc6d45ed983337b91827bdc759a82d3687f1255cf51635bc7f1be6c8584ffbebe5a906f1431fe3da7a05074a258cacd1d8b0ad7826de2670e183ffd0d3b552cf885d6071aca018abf77761d7b6c177dec8ad58d916fe07e786bf13cd18fc9b02984edbd49fad89d7ff78ce1f1bb60d0a9f72116ea27cfc8ab7bd2ae4bba1ff5bd994a0f0692e164eedbbf94e14a3f7337d1de873975a8740f934631b7f916d8b88ed42e803d0eba48bed35c427e591eedb51d3cd462f616d77c2c861e386a3e703188adaa984c54f6a45d00867590ddf48c72f1e1dbb52f16a4275e966c039c562ca6742ed9938eb6535a718a6a36319fbefcd79fb4bfa42f76078c2c869e61833d4d60dcadd652ade832604472d766c90fed9d8c8c00de0c037a647606ef6bebb74c3c8aeb57f5c69fff8f05c007f3e4a39931dbdc7a939dfc47afd40db38b24de898c609f1f737c8fd58ed5c0ddd8403b787f9a78e51be3af49d1b8139adfec0c96dd0e793942b1fae9872c2fbe43b018e76a9b10d63ddbfe4ef842b8803556b54f158e8b5e79cae3d68217223abd4dc250d70af211d82c5fbd9315646792b702579a4cf1f8bdbfcfa342967a98e891ff5cf2bf54ff1ca63e01ecd1fd09377cce85cbbef8cbbfba069591c35cfa00379854b31ec5fe7d06df9b739eafe3e61708cac3ad6eefd9db2f5a8cdabf952421fadb9d196111fce785acfd26437ed579d2fb977df8321899c2a72d79f8cb950fe19234d0acfd47cd6beb0a04df1db7301d88d8f7341885adbcfda665aefce200d80b1413614f5865ab0bde5bb9e3977f31d8fcbada8ed8af2a0be45c7ddc6e1defaf05fd6a7bb234fd6ea330877adfc0d46fa0eeab531f1641959cdd36b5c48de1e7aa1aeaff39dd208d01b0b8e6d9b7c18f86716f1f7e535ce41b52435d6a7df8dbe2b1eafd390deab947fa8f696700c4c9cb259c6a22889bf73e5d44921aef239513d5d1a6ddd2b547b368e93a87771b6b7a82e96f83cbe6f3e21261c7fd99ef3fb35695df1de6a1dfb2ee27c463a33e04efb2dee56703fc5cb77c2bc3855ec969217bd7775cef635d2d9f6ec39f0c912bc5061f78433f2469e3568178d3b6f5373f9c01e7f8c0577ca97249e00591f75ad6c2388514f6ec8d72ca986d4702910cb9486b22d61d736c5041856b53740fb2a88f5eba98a978616ad63de6ace3554fbf4e0d36afdab3de9451c70ee5b1e3fc5d02c223bd5416dfbb63a0bead4636bb49c6f46ab1f8fdccf55fea4619341778d7c83c3f38abf70465a82defef48fc6aa3c192b157378f4999553b7f55be273444d157c4ac4bb24b7e1336f9f6b2d0f2949f7c381ee47fb1cef3fbf6d790dfd20c24ca316c899eff22daf9d2687a6d151df88e6d610ef818f1e7b198e9737e611c5dcecbc2dfadfebc44c1e76e47a0f43c777852f3ee161e4f1758d30714d236c9d19e75a6a3efc02e848d54e876c556692ada2b910c47ccb919fc17349f38093bde982ab63db3ec7fbd61deb05f58be415fa545d56111fb26d10b608fafeaf01698e3797afddb47f6d9265be19744693413db7fc476ee74a2f9ea86d83fa958635ea99ee80139751067c04d92b9f3487ca3d703a41316e7901d47caae75d660585afe215e419f90aff03eb9d142a96996a2d3e495a7cc066e5c0b8536f95631c9f2bdff4e93d88e58ebb9e3c1c7b38dea909c7e0500f96b9b7950fe4bbcba23d8e7870c6f085485bdcd9c72e7a854cb5572f50cfce9a7997993ef01a522a1f6ce66afcfc4b463a382b56e97e1f9bf2f8cb5b6c60885aebcbfaffa69bec31073fea1c69ed46aee79e24ac2ce68c473d43916df331eaebba47cfc35c0dbb8eae8903c72243f0a3c2bfc65c537176d8e7c8b79fcc8bc3737c4f7f6febb9d3d1f3a7e3b7b802ca37373ae74e39f466f1fe41a37e85fe149bebd85e6bab120eb691f87ed4713fcef1edc55a383916398a5de80a0efdc81a31c1698c50a38f047d887bf5fdc0fee011fc3ce849227dfda8c55371ddefb2e46adda30772b347cf1cf5330de9d8317a9fc0db795cd3eafb3cea9f01e7bb5a4ba849d4c417abfc18f4d8d8e094eea2370b7685fa7596b7da70b630bfd73326d6f3fefe4bae9f3bb00a921783575e3ca5bcdc2bdf00f56135c7884ba654f3e75dede949e1ef6fcb2d76d68be7c5cf7cb39dccd2e9db97f4dfeec81f694c863dc47a90ed1e631fb0222b870d9b1c5adaf0a10a073df621303e52f3a5f99a2b4df3b061fdfa555040b3b8336cc68811446def89d33db3a051aef6ef17e80c6aec1d62ff7da8bf873084a81fee842b5cc41ae06506be8569ee56e26f7ee65bc2c297d01b1205ea910669c294e081e6ee8df9a2cdb478cc9bdf3abfb23dfb99eb9949310217498b91bc9117acfe8546a9793db73dfd1dcda833adc0d093e01de3f1d4e431b047b6ef4e5f8338f9e4bbfd1d2fd0076606053708778d9ca9d4f9d20ff9d6bc39ea06106639674164530d52ed995487ae81c1b0323b7297e981c70e7a89b2e2ebccbcd10622769d03bfffe063f918470c25074652b6fa22c883f96e9b0763a779b06d9b073be4bb80ef77b41fe74bb25199318ccb5d18e70df1caab47e2d554eb9c7a4da1a94a5acbc8a3f81298d7f5e13d896bbb2dff15ceadd17a98568f9cc5f59cc52b38dbe3a5cb556c4735104618118e7e03be72aa1c3d1dc35de80e899765a56cd26776c163d76dd2e8ba4dfa44bf54f9be41e11b597dc0ff5b02390c3c5ad4f7c8197000917e2d62c013e0f5e3ffc887e1b8f6d8c99b08712d9e15b90be2458d47ef02bcade89330cff8edcb7d07799a78f16d0e4da6b18a93ad9663a7c5d2d3790873cd0fafb5bd12caf6a998c6a3c706587c8df307fe5f1db3e32b5bc51dba0f23bf8dcfa6f7b4cc2d61cdadc1d7c4d4df35ef953d59287f1b1c4a0bcaad5541e119580b6ec205e9283161ee7721d93f46b518bed573c8a61eb2a14df307fc2446508877d410115b2e38f82422e52bc227649a2fdaf05d8d23a9316f6dc2d00f2df05d47b6014e0273af6b801ed505c067921bc43992e33ad0877138075dcf87cf44076c0dfa52424f56e02850df03df727172cda86bd267c015a56cf8d0a21cd1afae7bfdc975ab18d387ede785e6b1a27b8a6ba1fe46baa7b1eb537fa29b13ee2c1ecb36eea5b5db9e73e1f378f18ff7e9f89be46f8ca1dfb41c5ab7f8c6e37e8f2dfaca7778d4572efc57e6bbd3b6c6adf3e1cabe73e89e925fd8ee05785e1f72dec8dd3936eaf388b38ebe635e9fec15ab130dd5a33e9524de0e66def7f9cfb45af9f1b8d549ee7e75b18711ff9a4939a4a1ee1de796ced1005330432e69cc32f06e4bd2f9eeb63d5b7c27945fe4491b3d6ae0ff06ae7f2f4cbe834ea03b54fb9b7a5df94eea517edc67a129b6e3c0813a6a7d37e88f76951d19e3bce0f8a989e3079a70382fd7e7f53e39efa039ad519cfa01d43b042dc106f141819c7335a73a9849baf6e889abc44a5d8bdaa3b93adf5ea03f5bed93a45f78e963d0def88fe776c50af5d64a10e79da93ea3627b8abba757fd97bc3ec62b99b2739acb8937ea5e0d756cc32a60bfe2c5528f17f02247fd8221c37eb502d612e383feaaae437b7de3538ff565ed07f7c13fd47ef43da5d76ef37f87b3f48187bda227208527d99fe9f27b576d49524caf6178bec5c8bfa89826f1c16737c9503701869ceab81a972d3bd0e66c7219a66aaf5a9842d91eb53fad9c3df8ea8a9ef6230705a7f551510e4acd25ecd996a891db6dc8071defc0198639aad655d6513686ce91115f81b207e84dce6bf00ec05706feb7269e05a97b42cb9d6806b4ef530fb65a177b0efbe16b9b929bc4936057e0d5427f2bd77b2e74062ac48a58afd254eb837aefbc1d577105e50c98e65c31f5b5119e4ed91a352eb81f6cc7c1ff30a6eb2e72c2c6d0bede01c659d9c654a29f382980b53780b5579f07ee59f9345e837ef155eb03e4a6c67eedd57ac73957f6fe50d702071af51983270ebe3a7c39684a846e46bdbcea7cab43bc62e33e146a4cd57dcc2dcd5f813e6daa1394143fe039b0d1e0c79a295f51d9e1067db8bbd055f718b93ed418f80a7c39ba8f588d49661ce21de2bba03156fb02c654f9a619c3dc8bd5b50cab61e3a9fb029d37df55cf33db07a621433f5a08fc8ad3f1a9f7db009f1aee7346d8eb021806e2bf800dc75e5705c5d80a681e80e78237beeeb51cab18d25eacf4dea5e617ee2bf0e73ba1fed4dc6df43e46f3a76e71976a8c6e8c85deb3c99a4f27a2993f7a03aee47da4e4b19acf9cd1be9a59d4b3ef49b5569262741da3f829d6617a0deb6005856f7eaab1a2e2adc91b742b7892b1999b9802dcaf63353f0df435b6f8819b7fa328a85f00f6cf407c5f0cb722728cbcc1f396974252ae0b5c15dbf63978292266687eb95a809f303183387917542bdcd2e38d31c4f3e02d331377d6efeda6e6f8314f7fbd67571a1bdb0923d8d98a729303ae6c50d8d7fb376acf1ff3e2c73d5cb6981bb3c5dc200fe51ef7f179c46cdf9dfae17356cd5c51683e90339ea80570bce0e938e10c826f5f2d8a9efaec968fa549dcfce092d618df965be4c82f94146b70a06ace0f9c07bd85496601db00ce5268b248b1b26b91ee71ad3377f44efe0bf18ef1f8e99df479b1feb6e2f936ff31dfac8be958bc4e53f1af472ee91a77b1d79c8cd9052fcd22151b6924c5c857762c2948575bcd854f38a84cd187d69421a2138e9914da2fbed09a4f6292558465e9f964bbdb3979e485f9817e09e0082bd400377b709e0a70ad6606e11238e5736b7692871c708e5ec253ed27f5ff6d7d4de349f2f6e39117b99617f155ac21fa57630d467cbea3f4fedae1f2b33c7d7d3d4f3ff8a3da21f489a11f2cc0c114120793c6e80cadf6398f341e06c7b4b93f8751cd5bbfdfa5cfd36b433d97e193e358e453d00fc18eef45a7e749becd63f0bfa9589f78de0acc65ecd98485f52bcd698c9802710cb8c2559ce4d9817ea4fd6349394b754ff09dc849e8584cee78813caa29a80f977a1623bb221c8e473cc5c4698f5a5600cee1b6dfb6a4788c343ba12d17bab2cd11d5e75c677e336f7347ca17671c984b1e39ba56e1d514b78df55a2d25e1cffd4663ecf6e82101fe67ace3ae8c7ced42fd3e49790df2b56b60036ff2b5070fae885fee17f92eec2abf71c061973d69c5e879859e7fc3996449e1ed23d26933906f881103d63ef8b51df2b123bbe126f6091b7c3cc40b48f3093118fa8d2cdf25fc818ad566ae486ff401a22c1d2d1f9cbcd7fa11911f045e8f33af1314a52d8067c4a3e677f12527fb612006a63e8f2df50ee8fe8195631e6bdd83e6a86da0fffad7cf2d6af8abd097444ea666c4d505dbabcee9287ba1d67e1d4476adb1830cf1fc4ad9c681e698f1f7b7f52a2c8b93be39933875681e8a0218c74e8b5fa25a8cf29fb34e70c899824bbea27e3b6f8bdeca15e5bd79e35d704af32dd9afac13c4e0a03ee3a3c65a0117415b631dd6a4b14f5afa1c5a9fc03a2a1fe749d4b60dcd36fda879af702fa81e58d6c050b9eb42ed25e06d458e0376d8460e07767cfd4e797e86fc5ca0b53591975b1db0a0c085528e1b7b591510d79bfedc58bff74b8c34e5dbd4772097d2daf171cb75d9410e8db448c99753be21e17368cf2aca16534b7b6df75463fa8417fc999ff1825f708a53acd38093b56ab9f829ef4e7942cd3b7a63ed7ab09ea7c936db24759c3ee2e08fb98c5cf2b1b43ecb5d87d7fdc9fdf5dcf5d5fe53e2b785967faf38f0a736a83bd5348fbc2d8db15fa1ff48cd4117b914bc9614d3571e3f99e086985cb7af99b9ae33b35a5fbb9fd9618ff76afd7ef123d163163fd1fd7919e863c44d7bda7422d68bdec87cf8281ff0116a4def675d869e8ca45890af92ee1bcab18ccc005c653d538c659314c92b8f97d0a64c8ae46aae909b9fe50a07d77285c6a218bc2267d2fa403a26a0dc754935d208ba0846e4facdd57ea91b6d4f6e8d96f9cbe869fec0085eef354ab23a76a5149bbdda0b52612aff80235ebcd893b117830392f67883fc00f4bd76f8041add75d6a87805b1624773d60133a3f65ee420ba8cfa0f628ebd4bf920017a1732c49c34df32cd0dcd811b413d0cfdd43e8b5d15e70ce15f13bfa4a3f9259d03bf24f03eca9f06df8d244e4de477878cb4dded8ee67ad9f3cd2167023f4ee322757e58fdaedb7cece904b6a379d8a38f5c8ebe3bf045ff331bb2441ffdccf5d8f53dee6afd029ac884ab573ed142f7cb255aef08f39071e2f2d8031f413d948660c04511f7690cbe45751c7c5870ebaaff291ebb35866e162fcec3f67cb03d990c53e802d118356329b44e4e4cf90f198e6525fafb8afc7ec1f199c99b1084f5ac8362cdc5caa9c458329c873060754439d53a727b69083dbba4d0fc1b52f3ce9ff0ed2726b844bab6a96200ca138ddb7d89519f196c05239ebf1e71fb415f24473f86e6fff379bc3cfdbee6e4fbac2bdf4736e78cd7de3970e51fcf7bf83ec1e998cea2f088bbc8ca76a249cef8cf29f70c5ef154f7297fa8631c308ea96c168869125fd4b645f5748a1935a6aea15a36eaf3c61937f9415f835533e8a7dd6427e3cc1aaca76987cf4df1afb8dfdb4d9f45914d9e1e5cfc97b9dfc83122156f5fcffdeeafe77e97d773bfd73991b68839e2812f509bf2983aaf9aff21c67874b52e71d4c0bbe4abcfb63cf5c807245d47e6bb4f6aee5fe5e03fa9b99d73fc47b61da006add64a06fc0ba79ed31dc5ee3ee9cfc1ef043e461ede7fc9341e0f35badbea1da6a8a769b28bfbdf8b99a1e6f0a8ced2f5d7ec3fb88777a3eb546223d9757d8783869a21ceb557d4b82c5b0c20e9803afb45d1fb44ff81b8bf2e35197e6cd02b6bd23cccccf3dc29f077b5e65890f47c4c761eefa3060bfbbe58519d4dedfdbfe0a2b3ff02ff58dba36551bcf564f278f417e6e7e0e7428d957aef313fcfed670d8c47056eca96ef0d7d3063eb9c7f151a2735e149fcd31aab1943e7c29321f570e335d2cbccd05782cf44a71c4f3dce915fe16a8f5d6a2eb38a6223ad2d41bd25fb58f3cd22079c7a55db3f0a5e9a56b3431dbbd19acfe0a641fcb213b1f279cb16d76560ee15caf63ebd0333bb827ea79921cfcbdae3c9ffed524f3b07c651e3f50b6597974fa4230a8eb27d500c6d511307beba77caff8a809b1ba3474cf966fa5e911e59647704e519d4fd219c72acf5466bdbd67957cd6f23d0bbeebbeb57915ed572a17ae535fb11d946861a21ea5cadf689e1bb4f6aed7db2d78c7eb1d7643bf430a18687b8b3d27a90344f8837977047914d7e9d913533e4d847b89edbe20451e49b643d5f3fd6f0e7fc6da4231d1463e4193447a3da27d45a24ed87c6473e42d4e875b1d15332e6356a115d87e97e383b287c5a83cae781d6b0da37c0ad03bd59cc51ac55aef998da18d3276ca679658dc2d7c0bae3c859a067d2abb2581f43eb5febd4d01a9d238e7134af3430ea468bf3c03e568c3b87deb5fe5ee7feb31d6fa605ea38517b3c72f4cc6f6d4ab9af78b7ad91a3cf8805ca4ea9b5ef8eb8e6b9eb1037873a5fb6255be19cdb176d3bb0c69ba9ba075650a016dd19c607bb008ddf50d90eaabbd01a8e851f148e31ac51abae42e04ad558e515c5abf00fd9bc4bf8690e0e2cd4f09ba09015dd77e23dba112fdfc617adb686379d887f2dfadff75f646d75684cb35dd85731f0d2e4916d03637e1fcea40a8f5c56c0e2514f03e56c79b9afd107433d36bab7c5dff2f202cfb77234f64ec72827c753cfe913f8f205e586b7e2f94d08e547aea1e36baacf10bfe250f278fa6d0e0ebdd20aa89fc5d279e23d2ff25de8524d2c7433f876eaf1f47feefa96f6ff6c81de57e8549d1d9fd1f1edeb96c6b36ef567e4f9637e7c54731eeb4f9a9ad7d314cf6f5b609d953d52ebb099123fb62bebf631437eb384c6476b17946d232c4d6e08cf6b82c2576ba67dd49a24ce2e44cdd4b6445f1f533bede3a1d788171e035721b8acf1681f1fdbde16bf220e8cf6d1eb10bf61eb77a0bf857482d23d30dfe45fa8756f7728b7501ae293bad0dfde376e5cffcdacfffd6bc66cf7e11d897fd6ed7165c3ff2d35485ddbc15a8cd7dff477da1a4b59f1e7ace22fe8df26ceb9313821acc85d9aa28ffc601a76b5feebcaa98429559cc65add7ce58b46ae57278577637e5694636bf433dff45ea65f934ff33e9cfd466e436fcfc84791123c0fd7e743fda7f97ae22319a4a4ab33fa368fb904b71b78bf07b0a1bc76f6b32ecef3ca5f3276e318af332ba967935127993c95d964b41e99df7f4e1fbafe1f7decff50ee433069b5b8024ef3a1a21a61d272b96d8f7a2863463da0c3f6b59318fbc8f9a631a915f588c227dddf9a979ea6c2c8376bf62349f6d37e8f4d93c532df74beac36db7db51c4ff23851ebb3566b9538441df437a0a673bb2f7a653ec207dd9df48898c873b7b803cdf5abdffb2b73f3b6bc5c522c2683b7c5f33ac9fba3e5a2ffc03e5dce1b1139cd5fb129e567f829e87451cfae819862bf28bc9a7abe98497c7c4bf470084fda7377289123b839179bbccf1f7bca95da15f2aa95d61cde8654fbb4834236a4579b6f3516de462f402c5b3bbf13f1f253ac80a8ed4a106edae035e916a1af003913d212a6ef72f47741dfeb80c5bce01cb5800b8df31d8f17c511b779e0c3d5fd0ac415faa364266ad41ed7f55d290963c21bf41cae6c63dc1096933444a1936dfb2ebd1676f56bb5dd70f08866e001bcd5bf996f46e339d39a330f3ff623c6325ec07f3cd89a034783535ff83b073ff5249639d96f7c8a69c6841139f179656bbf16c588fcda525acadec0eeaca0b56f04f06f865bf18c9c31b0716292357377786b4f5f3c9d8cd82cedbce48630a6e6629d5b5f13eb764f9c4bb8866c27e235e7845933c0494c7ee65e8da78a337d77005e009de3a848f36fbca3be4cb26341e17462e490c7324c89330c7b51315463acb55db31d8f05472d85ea209ae318f914cd17d36a8280fbc03e799f70e6ea98728f1c2eafc13551697e078bf848c7c4891cd9a6004e1c1ca2c4fb841a0d385f5a2dfe5d188f0aea1b005f02c3ebe81b50c72dde83c86e80b7efcbadc0f572facda8d9fbea7b2baafde3ff06187a703b2c90db22ee0770ca11f716e56e3b94131ba27f8b3827bc4adb52dda7855a4f235e5077a945fb9ee6750eb5df4f9c18e3ade8c266521f7751b2acb6e9da6af59b187aa104cecbadd805bfaa3973937770e0d1efd9f1c227be02e4c3f8e11e1cef1534ac8ff73022ed6efa1de85ba3fcb8ba5e68f1d98db0b017e1f31c75ada9e6cd0787def654ef011cff3583dec3a9c6837e2ee939b8ff8ffa10b7e93d9cda874e6e8dd6f3f168f9231dd5d3b4b7fd9239b1db7d15e5379833652752c2a0d11c68b5f89357708ad07a68fb6230aea18a53c1ef34d63a0ee087aa8322a3bedc1ab50fd47866e06e9a3e7168b4639ed123f2ad2d0ed6d1ba10a7f3417c233cb7f80506fbba3645f867da147be24c56b1974845d7ee84a9acc2e7acc25cbfb11633ebf7eae9b8fa99995fb8be795f3eb6d1b5c04e50940de9ff0f0ab233e0dd69488fdf53fb57835c5ae157ba27abd63d594be4e55d7053e351d7271a8d6934a17f076e1d07dc48c493084dce3dafd961af0c63f06276b8016cb7316cc6ea3579e4d377a0a3196abdfff67c6abfe471a6ced7d19aa135f16a83ffa303bec2167b8d63949fef6fc5caee08aafda10e7ff87eeb4d80970735c5de6bfb59607be8de54842dc0de53f3881941c1eb0baeed82b8b5bd16a3c148e78dd33da17bdb419f7d17da2a2c287c33c3f76a8d7f3c126ee3f4fe1fc649ed512bbba27b03ed027097512d37ab813126ff91d16f92b447aadf8afdbbbdd6c113ee935bcaf6916c83aff678cb77bd86706d4e9d2167a6c6ab7d3cd4acf46f5adf85d1057e65cc95edb2a9c6ee31654750f35d39565e33f2390a6f4bf7ac7761bbd41e865e42a639d6752fb48ffa3d34d3c0cd3204de1eba385d67170203e358dadfb2c8c7068e50f92f6c481c76d4338747e29e219da75bedd3f77ad117c6e211c35fc39fc287152b662e8ac40ffb9c747ed1df099ba0fc1ec3771313f9fc153bfa3c84a3305a2da399bb50feaa19c4d31bf32ceb97f9a6f73e3493f7f973f29e4dfcfd70d3abbfe47e72cf9821c720a13311c14e231e916265db9c31e895c4ee895ec5adeb265decb2b472a769f5be48ab655e8cbad9e46b6a3bfd155d90bf759fcbdefb17b55577e57a445f368bc2437ef747a96c92c766ae304529896f394e5eb99555c0fdde18537d1c0bf173bee9ac336bb49e7a9d9f51da61d3c960379d0c1fb6e9538c11f6099bfa5c96e853d67b47ad7b6a48df9d74c26bcac5e89ad23a836d8b61d7b8e4c593cfe3dbf48c3eee2703776e7676d354b0693a0ae76cbd031ff42661c21b3cb833ee18cf831d8ca769d8972c29c0f156ff3d9bd8f93936d75f25afb115856707b16f8b66e08b46d64991d7a127f1fa8f926d955f3c737d1363d8458eb9fa6bfaec2aee8f9cd31c817dc4f29484d98376b5f2f5c794a78889735440ab4c1277d1e44da8184040c75bdab10b0e51090d35703442c32de5f1fa6aee82ab5815bccbc077ef04f8f2d535642a0634e7c0eb81f3c8a67cea419b9d9f7eef1fefddffe41b204f795c436a8edf9ac3bf368fa1e5fd356b39f7d91a15e399721b4eb24ee40e38f85e5eb28a4fdeb6e8135a111ea4c5518b3e72f73aa78fdcbda1f9f198fe33888f5dc5f125f16b8df715b880da73e8de10c2403aa4b9e72e396f7b2f0edc7aeaff35e5c35de26609c77bc44f38c78d78942bf3c37868ef5deb2d479c932a7f80e29cfd210e8a63f80fb4df6c64cd7bd98dbc12e26d6a7696734face7fdca98f77b756c4e375f64cff99b3dabd51cbc23e30eb09df19ad31a913b1e2f53700477c175ce8222e15a9f0a7a9eba1701bd07b1abd656ef157a528d78d771abda1faaa0c81beafbc8a5e8dedc7b43e3d95bbc4d37e5c35fbfaeab6ea2e78638cc3fd53724dd51cf465f499775c0cf1e973b3ee606f58ae5f499ae6d8ada31a90764bae55d56ffb126a3e7556a8dab3d5f3f6a7cbc2fefdc87a1ab095fbfac7e66e6fb97b4b3f76a0487c435ce7f6b3c3c6e11afcc90f858c01f83bc36b43aa90709b8994690a6754d1c458e815e063749799c68de4ef4816c512728fce6c88536a49e46d4869d8af8c1d1cb6551af670e9d8f03f7ed4dbfdb973c9e9a41dcbb866b6ecef1b27fd6c7fce73df6dadfe96b7decb4ed916cf987d531fc9413c2bcd3ff38ae8baf1903dfc3a5046d74d2ce56fb1c30059278c1872d97060b8ab209d43c45ed78b815c08ff9b6ef72d9ea660b70b9665298c0349bbc762a7048125faefe633beedeca6940f98ec45c6f66e3c1f28183ff776a08f7cc205ebfc23e8ef787f39ef279ff57c527d1c939ffc21e3a34bfefe69ba458f49332de7c1fcc5f46eb7cd3592fdcaf8951bb6f4fbd7f1f25ffcb577b46678679b8e6271ad6e2301fe2919e0327f3498f3f7a30bb7a3ee8f944fafb6b4e5a04ed39c6d47f51f4de69fea226adaea1a3fb962bfaa3ffe754b3b6e97bdb58409fe3785d7fc1a67ddf4c1ffbd3c5dcfacdfd083ecd586397642728bc0e69caaa7152f644c56e9278c9bb4e8dfc5ad7b150b75fd9a60f1ef50107df467dc059a83966f1cd5e73e0aaf19fbac4710b1cb649f345c5eefe6fee7df0eb706dd06baaed86f00e9cb87f8a9c745dc0673a34099b755fbd19732b112c5371a039f8d275cebb79257fd34ed16fc37ef9041c0cb4eff523f51fd7befb176cc2e9b87d5eab7bf4085fd54419b9e853005f343424c1b1a16c20ed578778cd204c722f0dfb528d773d6c8065836f24d027a6b962bae443911fa46b47d0941ddc31efd4fef1f4ca5f32137d6877e782d6f1a2df638b8958659341b848abf7c7fcb8637e44ce6ff9d53f4a70b0d6d0197617ae206d0c4bf90ec82316b9249e12c7cc9bace556d987e0d37788e3c06d3940d57eb578470eca95db30b26fe431176ff3b158e69b9137b716bb79fffb236eba5a3304bed98edda10c9f3fd5debca157dc33e6ca5f8947afdcc8d438d7b1eb35bebb36455f3673f00bdeb84f584fefb3c9a821ae8887a6e0351e00f19c19913b4d455f567cc3f6d00cdc7cd29797fe85310767bd3005e9ac19eaf3e0452da1b5758da7c2f803fd233388af729bdf3a7f7ee62fa3666c8a9ff9e6d1e77bad3f5c94b2a3391c6a7051c503d24edb483507bec514fb11d76d293ba489e7ed8378a47c892d7acb5d9a172d5fd0e135d88727faac7e9d705ee0bd875fc1d719a318c56149313d7cb77ead4e8aa53ac6042f89270de0c7a0c9b66caf49c53836e6d4f9f7a89889bee3f0fa9b0823c7d6df6b47ee1afa7ef45ba9df98f4d019d3c7dce3afb0b935587e558dc9fbf096cac779328378e4833b64a3d6b8c01c8ca07b407824f19cb199ebef13e50bbdbc6d45d769a0d5d66a33466a6f59fce3b96eb31da39ff9867dc9b1bb73cf815e40e8f14aaca091ccb48e5b1514b2a6be6df451432f3ed39a87ea3dcdafa5ec7d43ba6d5cf7986b3ded15b48c99d67fd71c774316b97c279a91abde471e9e726306f026d0a9a3ef523e2bf55d64d463b36a7507a0f1dd04458ebd2e8ce54ec45c8a2ef494957fdc6a385961cb131ad9365f119f16f631f489a9eb56f1b3877e4cea69f4d479b4e6b727c5ca66a22f6bf00b369efa9e2de549807faa83b86cfbe81b5eb34a20f737963cce77bca4de2ed2a9c2237a2bc4ca56f7d7409f2634977c68020591cd82c846bf27f1eaa296664217ba56f7ce31d14b036e4070a1dad4e79819d4730bcd720bb921fc56eabda45e1d9b0505df09e2ea95d453007d0993b4f9c0ed6905c5546b5b9df14e1d7aaef3badddb7df815c77eb6d62ff1b7da6f29a8f704fe03f5ae34257a57f206cfc101e1830b823494d09b72aaa7d465b7f21019f3d458e69bf5b72fdaa37f1ff750a4ec6ef22bae17ce6ba70a8ffea54d38418f342b4b5991cef9873ec7cebccbd06f122377b938adcb1e355e27fc44a3d73bd3043e72d17a12dcff5dc64e355f8f75d95e73ca8d4fbadb6d8df758d305df6cec6c45ffba6e705e9fd470a3535e7fef8ccb5ff939bedb4b45d736e6ee78475ca8897f731edd5a378b7eb2fdc85f933ccfcdefe523ff718d438ff49f3fd133b98e69bdde8f7b5dfb88fa71ad0bcebcad9ab3d87f8883e084178b130f7e6d1bbaf7be3ae7d4a2bd27c65eeaa8b9a4fe4ce279766ec550516f79f2916b2d317bf57cb3de4deb87cdfb80ab8a9c4afb99afe48f7a157ccdb31ce65f9a97a4afded176f592dbf1dc96fe9d397a53fdf8c744b0696a7ce4607bec9997f3c7f05df1576ccc679c7f3f369a77737c8daf4fc5d1a28dcf59e42edfb5ef742b97cd389b3c74e9afac6506cdaccd2fd672b967d07d3de4c024e5de709c5347ae675fcfbf2ddf498f55ed277c47fc13532e6a6821a918c99cbb677b87e638274e72417c27ba87fb828fb14b9c29843be0324cb206385f1517454e2772bde6b6bd66f43a9d0cb6734bb06cf2c0917c8c9dc1bd9e42c700757de89a37a20b8e922d3738713c374319468eb128b4a63c309dde9662346e05185fadc1db64bac75bf90b632926dcd09c3f5244aced1132a169d5945b5e6b3c483c42fe047c58bf834f4ce5964fb26aa69e6f4e9ea7471ec93fb529b3d458e785b71f9bc9fb34155fb3c67b8f0f523bf6027949d8f2067976536e39e336710f8d25c5e31cfa89e173d672369a14b7839f081c35335714faf5bd4f1a7b0df07138f727f3d17a133c72ec19fce5de2b37322352636e41634dd90af004a2cf93f0293b5190561c6cce24ab094f2beb73ad3568471a91eb578ba2f71ac42335a7d8077db6085874753cce79d43993c47185dc12bd87eb1fcb2a84be15b8a8eb19ec5f7253bc95f4d7dbe9c46f1e73f317bc1313f0ca3268e1ad6c23abc1e9b8a771b64deaf9a3b15e14d0a005e7d2712eb093b9e0617c67c8d9aa39e1ef88cf49d67a5fc57c08bbecda7c50f3cb3e6af5d1fb6a7efd2819f3ddc4e4a6341785afe6085b14e255acb34a94faf98657071daa335e2fac874e16433fa8d63e5bab27023d8fe1e57ba87d96bb30c15abcca2d16dd580f4d9e93ddd4523ef8a3167a9deb78ade2b346731dab98a99a293fbc94758b67e1a96c28a683b691a1fc31602ad5dc757beff091dc7cab1f49db89f29fea51bf2ec9977217dfe278b81371ab5d33de87c0657a35f1917a35711e0ff7b416867bea77c0ebf4f842f9dfb06bef550c10b96b133c7be453d6c0e2ad18f975cd784b58bad2d67af5167197f9b417448e91e318f2078eb5d4aca1dc366b74ee16fc4ee4ff7992e25c7f477c82bc06971af807b32de679c4767c82756b836f153d13bdf4460eef243707ff37dd645f720edf114b18bebb7c45cdabcbaad65ef2063c8c367490d47ca8ed8ef0f6c4a35edb9530b20afe5892d92d47138f17e8c5435cb8d92b9ba36c0ff5fc23c7bf68f90f6113b9f2330bd26fe69143fd4311f15feabdf88c9735af4ff2f81bf88ed6a106d2e492f25d799d149e19b9da878d091770ec551f98e4a72e0bd42fc8efc0f7c0c6437bd697e82b8acb1d27df44fd66bd070c3b3178ac4ad271c13a90a871f0149ca18d5a73f448b9361d07010f0b3db15256ca97218e71cc758bb0d063ea518ad12754519d88ed78837e26686807c528455dfc369e922437bf263ef5bef9bf80b688b6cfa8f3cee18b828313da13a127ed05ea5c8e95d5b68579531ff424b59d252e60e58be8f8690bad24d418c10d071ba9dfd3986a9fb813506354c739d00216ad2f1b6707fdd23016e9910bd23bc6f4c0d30813b85ad8d2bca278add5b4f4b6c77324cbb3efa23a25f3dd27f4d2852e69b5934eb624ad4ce414d06ff7ca4ddeea39117ec6a5bc01f950bd5498f2d65ccf244babf7bcdfdb4fbf2886faf6393a5436d44a8acf75d28549b8993974b4f7ca1e1346aa9dc7c4c7889ec7d8f594afdcfcd8302b507e04c5e1adfef431ae813d4d621e435f1f3111e13593e65a5c356e3c0b184d7018e652ebf4d49c308016b8adadcc9ab903d26ffc4c07b52fb7c2caea99bbf804abb5208e7e8bf4c13853fbcbe25aced35a2097a97cfbc56dbeafd9635f753efe9d7edf91cf95dd8cc0032b84b28bcadf253bd1d1fb38537688724c5ceff1a5a17dc97d88dc0fd7bccace5ff91cf9aa1cfd78d01bd6b9d250d791897713b88a06b55ed227dd1f7aa0f47b5457fd4f7eae6772c485a5d49a90166ac7b5baafc4e7a37b5b6ac2b89486d678dc03eb11b7f78ab5f7836287156bdf23add4e3e728ef56232f431a8bc455acf6101bd75a136684f681b617c86baf999d5c733b36153f8ccd508f8d9adf181bf8479f8c6975f8ad5d465c9ea43b5711672cbdc76bd4bd779a2359f737b6effdfa7388dd71df7ca6ef0df969edbd991ce67007f9f15f7efff88fbfff0f3e47eb8b70f455d2e664f1fe81dff793b1713aed9842eff3dff0b921b81fa4d43a83cc07be0a18c7826bac3f076ea79d07e3ed8dbde693593a7a994e46cd2317f6214f5b712bb367ee12b8d4205e7e8b630e6e94f039db869e6c16857e8d8e4b39938db6216d7e08757ff07080af2b23fdea58bc937e333bd5b526fdeb9bc771fa36347beff3fe7a376df8634ffdc8af4c1843936bde6a87b8b8496fc4a05ca1bfe3cd089a14946b77cc0c9fcb0903a835b9c308bcd3fb39385910c3ee45e9594151aabda37dd47dc4fa7bad7bf8fee05f5a41313433f47c914e063d6a8eec1a71527b4dc05a8a0ddf8902391ee2baa6bd51fbaa438a615cd1405b55c5d4a4c3a1752a056973c03e3926b4fa0f7d3f6315a7b7bc34d559cd92f24d14fba38ea062f071a7c5c4a8e739f608c720ec245edf89f81eee6cb57e945f3cdce9fe7e83720749419846e226873f1ee7cace1aa8c3a247764cc76fa04d415a03ca8f00b7097a5a77e178df09b4ae6b080c99d301066dc5d4b97721342ce43628483f2928c6a6defff6d0c26ef71f68bd22ff681376d4210e26c2a436c42b4e3adb9ad75c6b648fa5207e403328c616e13c711e1d27738be683a4ba21cd414b73aeab38577d37e16f551ce20edbe76acf6641e11994731fda3a67032de1a050bfa9b411e71419b0b4dc846f6aa8d745aba31bd99da0f0cddbeacbe8fde373f38145b882abafc8d7f6aaf8f77a777fdd1b489ae686d6176f3933de91dba03cb2911ce782a1e7b91d42db1c7e5d073ae9c85fe452eb01d4a431ce77a281168ec553592b1b78c7efae91c75cb1ea1a7e26afcf35734fb1a154df6654dfd67a65223ae039254f25cb6ac2a39ee13b551c63b635f3233634887bc0dfa831a5f8b847bc48e8d16ff1abbde614bfba286ee38aa1dee9d17ad15faef3cd7a3765499d6fbed7e3cd7763be19ad1f3d9057b9d2ac0cbc031c791bb2a559278066b7ae5b169a23b506076a455a116aef1fbd1fe2b762580f63be0b63d409f523740ed4fa231cd7aad5bd03361d7a0a39f2ebe83160be3b3ae60f69ced53a3fa8752a64ab4b41f137f506a8fdb87dd43e83d4ba34f4bbb0871525f4000268b33b5be171b5ff82cb887c0ef5dc6ff56c6afa8d1ee18622ec095893c409b7b8f8ddd0b3a0fe8aaeee4fe822cf001f09d75bab3d89d9be2bb7f45bc6a8e98b6eababe5910e979a3fa65affc37ad878367de7983824d49a21dda5da7705facbc2ab39379fb86795af53d0be25344f0ef59d7093fea479d41f840fd1d0b1acfd9cd6355c17079f64a5ce03bf6427e2b2c5595dcd9729dfe7a8ab4ab82dded5d809fdda8d3819f8eb493f61b37e52cfd2cecb97e5b4bc6fffdb85ae47f59ff15e8d7b87d6ede09daf6c53eb9b7486a45763936eccb8ed6faff5ba6d6baa1561e9d49c02beaa433eb5639d69c56ce0c71b02efe111eb21808fcc2adeb51b7ea61f239642ed832e97ed23e109d06ba4d6e5f9f94baf516b8278acf0483145bbde80eb52760afb6d73c09337d37760be48dfa6220c8e632037b8b2abf611fb1aed79d0b2233ffbb8467803beb376feeb35a2d604f49cd567b55e9cae8fb983775143dfc60a8aacf64f7dfdb1f29f6545fd61bd6fa4fd97c30f0fdd45013e1b3ab7e60df477e447480beb1dbe0a6bed35d937d230d1351eb9a37c9ab48202f188d6a8c9ab61d3d6684ae8e690de11faab3a59d3f61c396dcf91ee33a27b468fdef1776ef615f930ead89eee7d4a0ad1458e748ffc0bec1f3811740e091a7d35f11f424fd5a27c0ded29da56b573b3d173b369e726f12a2bfb3a263da6aecd42ccafe31f6914e23e31f5be80af2e890bb458d2f7503ecb1e3625622041d7a4e6a9b2cb06d9da1bf15297fec8d7ec29b88b7b87c7bdab58eebc3ef6e39f62802f70fca6ef0e3edbe71be5c3909d837ebfded77dcdb9e451af63e4d0fe1aafdf758d9ee99e7db5f62c7c576477805121cdbcb6365a9df6e305f18872d4d4832785ee5510ae8a01698d8b03566568cc097b6c09e0def30ee5128692030ba3624fbe15caef99bcd17d62bff4571ad80dc413ca172a6b65e7c3b824ee5a656f6103852bb40d0ca143ec68bebed204f711f94c8cf2c21c3556b5668378d91067ee18eb97fa307c70da6b9baa6c64039f4eed0b9bbdbe37a2805e20dd57759fd53aeda0ef2b963b41dc5deab335f94972cb6347ff3dddb4e686e9a81c9acba5f2191e39bc0b0d73e8db951df8644c9ac41180be70e801687e0093b0ad4fbac747d995452aa86fa2997519b062dcca9a993b48c3543649b180f689b295ba17bd22dcd6e8eada5e141ebbce7f31fa8cff826aaab7e5769fa6fd913b378ded34ed7c4dcceafd39920ec55e2dc788ecb4764ff9f3bf18c7fa9371446f8dd6cdd53d1539f410837864eab9b4159eb49262fd2a7a998139d9976c51dcc64d304cabb7a9d9f1e7d6e0edc7e6fb6ed187460eb470bee498dfd7c757e37ea7d25e14e2358897eade1bf43c51afd3f8109f4d337313e29230326be6dea65b746d7ce27eb27968825dd8e8ae53f352d60971b4d45cad9dc297ca5eabf1e1f13415c0e76527af3d9941cb13fe17c665bc59bfcc9ebfe6fe799f5e871e933e34bd5a3cf57ee67a66522c7cb53f924fba68c7c40f9fb3dbfac6bcdefb2c5dec924d522ffaeb224babeedc1ab1b9f935f957eecb75fb7504fe2368169a841f77242fa545dc482205574eed98e4bfa8311369781b16f069de5fbfccd7d375fe327acbccc73ef34beda3546e4592e9fbaefcb851ca991a97a58fbae9735647eec20cfbb2811e9b3b52fb4f433c6ab7c5dddaa6a5d3c980cd52b19cf7463ff3c73ef3511b027c508314fa42cf6f42d4d01a6a9262ea0b2bab04d60cc3fa410ed7ca2a7ee39ac937c9f22bc765b7db2f4edc812634eb816f85164dbce0e05437f75b1131f6037c4053e557531c5d3b86ef8e5ec573660745a9f56b865baa5f32dd0fa379b0299fc5442fb36edc8bd8a2df2b669eb21d0feeb60b8cbe191463295e32f06ee97c79ad73499a8fc96139fa4dda7c11634901acbb415c54ba6614397bb537054552e8facd197f0e701f47ee9e14bd1acf5927f8782ee4a2139c877255a7df1dc4a398f2aeeafa72292659855e4575edb5bd17c8930da193481c3d632922dbc81bf53f3b798f194191906d886ed4b33acc2d43ed459dc71e7a19ab81e76c1f146bcd05966b3c10d7fd0fc06355879cbfe617d6797f9a1375fb5ccd01a9f19d4376781f7520f4abd6843f722cdd6b44fd45c4f1b6e535e6751314b24a102b0a13df4df8e50ee5fbd5fbc0dc9b61573faf9123dc133e0c79cf0e87cee5107564d25423fe3811d9a64f581b16c2d6f9c4d3002d4dea336af3ae7c655b27cff7a4ef0eaebd6d5094e0d60b63e8865433ac834171e4832829ff4af958ca77528ddbe6465673f2416ac2f6a03eb2259c103ff6e80207c55bec441d1492119f1fee95cd23c68222476de2c6b5612cfadf9ff34d6f3f7bf82f17b58321707a6144bd7f7ce5744873265363cf62f0444ddfd573ade1c0792cd17f427345f70c464ec5377b7c86f0eed36f31744346ef27af71d4840e9f65bb301e71d175ec39b06b43e4de4589bcb7d6bec9da632af1fca6e68011c4096102c98656a42b001bab35488698eb6117b65c8a1ab575467d7a6483e7ed7a88a08362ab7918425b6b883a9e48f7e8e303ef62d761b1eb37847b12efe7bc5acc224c353073d81762b5ee500769b90a6ef2f5bad964e0cefabdfa91dbb9c8ed609c07afdcc8aa702c8d1f25eae1a6ef26caf6da8bc26364a796dfe631708d76e47a9d053880fddd8df16a776e0dcae964f0f4d060bde27b5b5915f66515f6b22602a6464a1e4f7d31c9b66223cd454178a1d093465224afe225d37593e56b006dbd69fbda9e70eed354a4f4b99b62d7cdf77ada4feae1e63b5bf4bf7f156df0bfe50f012f1db90bf0612fa806cc541cd47264e3351c277cead31ba4dc024fb23d3be5be463f98a3c65cf37ad3d88b237f37f2acca865e7c4ed9daed09cf777bfe53feeee6c7a6cd0d525eeac0a3dda59edd93d7d47558c7eb587c9bc71ed3fc2f35f9599a4b9cde3ffd5cc5c7c4ddd0fe26ae62f854c79225defb368ffdad28cf8ebbc78eb8f37ef2d054bcb4edb563602e20b735d0d83c9a8f98af27d837e811582db7fce892a37dafe6f3256f7b88eba4cf72faec3e3872d0eb7176b6e2f09d427f276398cbecfc98a410ed7960cb2ebecfbe720dfbebd7fae1b32a0ea1f5637eb8fed3d76c653fcfe678a439ebd7c45742d7abfc9ae995efb8f6bdcbb3cfde657fcdefef73eb6bf6d6de996b67946b1f21d74e5cddc4c507bc0a74707383f0ec0917b56d293b157ae09fc27b7368e5645b60e6c061dff28a67ba5722a7b8aa411c696bcc5b934576278c955f5d9a1a5bac392c9eded1cb81b896b3acb69b306aff80e1ab0f3dbbc43f6b13b64fde589b19fccc37a3755e2e7fe69bf5b7b9d96159faf0ad3ef85645efcc3ec5f1586a3ba4d6a9f5a3648def7ad6855d6307db53922d559fe3c7cf3574ccd3d9fe1e7edc7fcff76ef57dda861db53c043809f847bba6ce77b94f6f83586ee12b3e9ffe26afe31f7d88cff66af5d9c37e706adbc495d7f8c56bf7d8b128edecbe2a47c0df9c9ba7f75defd71ffc32cad52f2ee67429f59e4ff38e786e3197dbb909fcde85bfc8578e79b11feeafec87e0d0baf417b9ba0efa9cadaf0f9c88eabac23e71c1ccbacc3eceef6b7be5c59cbfcb0e56ebe9a3ae735917809eec47ff9f7db02bc02b1fc7fd344e389b1fd7fc4271e95396cc423e01f8bb4ffdcef67329d9554f6b3c3b9d4bbf0d7d2c9b0f366afbd16e395b7e2566d11a87ffe4336e45975dce73755fe81acdbf3147bf1b8f1afdd53e7deb728ffc104fd37e7b1963379acffb95c7c7de7db1722a5152ae04f3813875cdd37d579f1339c7b358fe9ef15d0fdea6e6f26be23b6f1f5febc406b5f6a139da078a11858ecd7e15bb06f1f0e435fadc494c7ae9235dc4a0075fea247645ac669d9cebc3fa17576c257a889e91b3fba77d1276555cd8d5d3df716abb4ece77ddfede353705fb9156ebc7dcfca0a153f3f49ffddf38ce4ffd35ebb3e3e6b1bcba2f5dbe7692f7adc94e4d4fed97f9f7c6fd813bba92273b8cf9d13f611ff262573412affa0de1d1461c6ccb49fcd89caeef5fe7c5aec56752db85c52ff3b7bc762836bddc072fcf179dc4b6ed6f203cf6a5df65fb2e726817b675b8bdbcc67b62c323b6f491bbb88c0fc314e37e9e6b3ddf33b1b7fcc33c6ef7d68bf9b9fca7bced957c32f4e4aecc09d42c8e7b57bca41ad6277bdc479ffde9377217c3adf8b83f1e7effafbee3a6f9f992acb24db5fe7f102f58cc268362de4faed9d0a2bd6651dbb5be86e247a27f473cdc09bddf62af55afe1b82b767a23def28d786faff17c7f16edde5289ae6d7ffc1e6ddf5f06daef185cddff33735d6766b5be76afb283cfe21981fa3c7eabe8e8efb583e2f23b86bbb077cb3e2c5ea7a9f8d7bcbf6e16bd019b3ff6e28f5ac78cf4bcc2a48dfd963ee5a9d626d983317812096363dbbe9bef843b7d3fd5706bf575c0ad08ed539f1137d888a377857435a02b8a7cc284721294eb1fb38306dc1f9c133507cd09478febdb6c8db95c67e6f67d3679e8595cc1ef5bb32eeb5ccc8fd7205eab3da3a3f300861a43cdb104cc12f1011c74fcda31d45a4c6a0c875bd262724e38c87b5c44b6713a3f62f4378fff60beb573a8d50c1cd3bcba716e8c9e07cb295b2ee79bd1fb17d573bba37fc09121744306889fc209f11d8b5456827c9b9b7b39d57d5f3cb8123e6a4cbb63c96367c79bb5e658246ec1acb6adb0cb76a291ea8f308a518b8515ad8619f8c8c0f5d5c86d50e436611bc787e7d02ceaefb7a7fc8d7abd9276dab3f205896b139c326cafd6bd1914b999147e35d39c50e0778c58071c0af1c97a079741095d6791128700277e7983f85cc65b11d1e33feacc423b77ccb43ecd4e345cebd48c491f011860f0f1d9847ff68943856c13e9e2b8cb02bfb5b64daa07e7847b7473c206133f8efda3648cb80fbc2628b8316cf84e149ee4b10f6e14f45710feb851765073aed9e0d375f1fbd4f9d5ef3289cb77ea8a1a7c4c16e9849752a87bb0723ac453c134d7634e1cc72ba6b98f33cd772bd5f7eb3ab66d8a2edbf166ac3f53da413184f6b5e8da15df4073af0e8ab2d36a6743bf21220e65fc96866b6d3c654b73e0af45ed349a9bab5136d6775b6e7f69112f2f072f10e1bd33707e0977e18a15385f3a41216d5fcf5735f7f47d91e0e928860db4b7e9dedb62439ab02de7cb6d3997a49c4d46e1dc1a3df26ce7fb78a37b54ab4581185473d9b35abd9614d3b3b85458a771a9f2cf356f772cdea1dd10d9164f31a74c35a7b49e7cd5f280cdbbb6059ea154cdf3b2fdd3daf59a4fceedbde33cf823ed1fd822cae5ee04b4cd7befcad6f05ad92d9172ea4fa8f8666f0405b851481f1f5c30f6adfaadfdb935d86613ddd3598af5fc65b47e60db3ee4ec2a31513181b7d7f90e9dcb9abef278f931af7ffe1ad375ed8af7322b72176dfe559dcf261cdadf18bb3723b7466fd397f2ffa57cc1ef631d3e8cd3e84f5e3bc70fbefcedb17be007aee007a075aef11d558b3de65d661f5e3b62a81a351e173537fbe2b58f79ea9bf6d9e9cf7c632c179a9fe0c115f1db6b8e309331e582c389ce0faf18bb1c3bfd1af2cf38aeadb56f8e7d0a37c5559beff53cedb1e1e6fbfb17e5c2bd8f037da579ff528e9ea8838e1069675ac4159e414b187e3ff5d692afdd8cdbde5aea9def4b2b281c062e4517ba190dfc27756cdd3ee7ed792a70a0a958053d8752fb43637017b67c162a4698b9e25c0ff64ceb28692ef561f15e2a49b7d37a0377bbefae7dcd4ff2aafebfd428d59fc7f973d25d9247dd257ccf7df3cfacd6d9039378693376bcc8a518ef6be2015ebca34711dcc6a515bb19ee7d98ca067ca8c4c36f8a725f091587d54e4dbc7ed057b074bc69105f6b2e39b8f81de347c94cdf4dfe7ff6dead3b5166eb1eff4ac5c11effbe2482060755bc0a8278a7d2a314b593ff1b6d814fff1b3557e129a6f7d39867bffbc9f62243a2886855ad5a87b9e63455dc19bb721fba3eea9e4131229f1c717f662336a7be60ce49e741869eac782f3322b75d6fd369fcbfbfcdad415faded47ac768589a03c804d3dac8bbd28c0e56c1ef926dd1eb0eec421cd6dc448317a434b91020fafb96ad79ad75e6b1e216ea21ed2acb2ab30c29f19766d467958f51943b6a8949d63b8266f344fddd19bc0fa1fef45cac1fb1c1463fba84b11f3467749e78371af07d2721b13976c3c245b173ff9e0d63de682bcbd9870ade3ee41c71d36e93daf5c7dc609a8b9ea78ad755b8de69138997cb5271c7235163fb3b69a7f8d8feacecdf2d76233d82ccce4abd60876d7fbe8fcf3fc58db77c1f7086ec920f60e4121958fa3f65a9bb44cf8495f6575b45dd5dc95e0580ebbb6a1f6640e4d8da19a278cf64abb14340f4ae54b51ce89ef793ce0c8cd81cfd83eda40cdedcb48ff2379d35a657550f06a5867d4c70fbd565fc217588197ded4f7dfe85d816fd977c18f6fd27dfb9a5301ebc222fe7bcde5e2faa4adb26a728c3ee9c614a4f520b06e162df9011a5f5cfc9af7bf57493fb11f3dd7577eddcaa9d43ce6cf59d3b7f46d0e1edff5aee1d987e64f41ba36615f2a9fca207d1e688e5933f4dcab39a5f6e83161ef57b681fa12f8b3f36f73e2f987061587deb553c35ed69b176517891300fcd25638969da05897f78df9663fed27fbdc1b6d326bb0c926e291f77ccf73590a131c393bbe96d0e6d7983163ee0ea5e8a1df8cf9ee8830afe9756fcfbb3cd52eec3ae6ccf50ec006c5bd334c58931b439ef52eff284a3beb69da518fc5629b2c17e68373e95fc6d788919766d83f30e095bae0ccb27d77a3b91807cd78ddc2ebd994cb7c4a053bce13c2115ebef71e3f6290f77b6fb3f46b6acbdde11fa8dfd9245bec9784091956bebbf4c5cfac26fd40f142dc47d05a627cc5ec086b7274d73a8bfb9bfd3411872c15aff3ede2312e17e39249813149b8aec94aca27e4be78ce4aeec952bf5671f0d5a0c65c0a264de23018ea7e37af4a8ac4e7b1f629cf7260c01e524e53d9548d7ff40ef7dacfb8bfa9736f60ccfbe526ef27eb2fb92fdec5f93da4ba2cb8be904bda35b9a4b31ccf4d1d6dfaff3a2774539b9b6a05dbdf7e460cad1668c58ca5e8ea477c4e063c823e96e811074f18ce63fafa92c78382f4c1b59631f18e9de5afd4ffd7f74ff931ca7334f78bffadd3fd53fe8cfae9bcceccf5d815d6d7bcf19c4dfbca281563d9926bb1f1efcad785350af3d4584d2783cdf4815fbc858969fa7129c739c9ca99db338382f40234871b9b751930f941bc79e149a67bc27b2f1cbc599ef2e7cba05872ba1edff349b60fe9bde50c73095a31849749b212bdbcd6ab8a2d0ccc8162e0379868be952571daea5ad9d9fff7dbb48e314f079bc5f68bdab43bb08a471e01b5d758c779e0f39fea58107ffdcfac3c9f072a1ee4a92cf342688d42f1a2c699708797f32072f99eaf0f86e6624c79fcd45ccf68eadb02b9d1fc6c9f1b9df7021c82787af9dc3df6a1f7b49c7d553d8b3b62beb0ebb0a4108dc624e97042b7578d6152903e25f60aa95f937c9231c2268d0dcdb70a1d4ae593dcd4ba4c3253cd2fe1c94e5e34b8a6ebf70e0a8d61931ac306ddfb7cc53a3377497a2af7d5ce4779fa9d3d70a9ef346e54cc5fcf5d7f278037494cb16d62bca7176e1eaa40edcfa6dc899f6a1cefaba58ecde572d14f1efaefd7d8f1cab192a2078e3cbe96ead8e793acd116d2c753e2eca71e24335f3153edcd49a1f6748ad371fe5ad6c465a1ecf292306c5b59357d51da9eee38facef317bec98c19c511ca37281bee0dea2b1c681d5ad272d0bc0746524007a93aea2051aeb833a378b433ef6a8ce95a5a41213b7397ef4557ad656f2ffa879a70e99b17f88f85402d4de86b11a73230a8267289a8a9f9d014d67c4435f1e1de89c9e889d71fdb47aee832d6594bf19c41c386c7e0deb4666e922adb4df80bc756fe81b219f98a59d08500a7de9d76c11a55b374b7c9fbcb6a6e253f1ffcbdd7bebbf291362fe239db71658b9f1bee1ce482a045a4ecb71e2b43e39caeb132f7ec9fe3e964c9a6fd4d354d69fce2dee8d7f881fdbc182768823e439f2b458f6ae195cd71520cfc70cc4de291f725e589d4f1588a9ffca485d87598f2bbf90a3d5fc46dc9d4180f900be2e6413d77d77a43edab3f7a5d6c13b28b9bc178ce1e7dcdef73ad6a5f04ff07a3bdb8d71ca77c2b77a1c7ade378ae9af1cc6e8de78eaf1c2b5fb19a6a28f43ce98535b9bc765a61c7314d3bebe964f0364b3b5f55bbfd0efba97ca1bcd035e983efa227c70c23c70ce269dad428f362a9fb36d63561351627de7aacd72426be714feb9b531e9727591db95393b43e39f1f6ebebd37c78dd05ea5a94e3d579b096b8b0a37dee3cfce81bf1ac1a07be3d90cec8fa60fa6a0fd4b6936a23f91bb438e2f14ea46df38ecbcd2ccd5f1ef881eb75065df24e98ca9af8fab90c81c75a7766e0bf72f6dc1df8216910543c3da09f398c552cd0ce878cfa9b9fb37ef9e0b37abf1e80c599bba8cb1b143f266fbc6275526c7cf13333281f473c19b081a4d357ebba821df63fee4d069ea3507199733afff975c78117c9d09344e733ddcbec355a0c8c8f0f65d8052e4ff93825704af88c5ecb39f0bd9a4d5e7fcd7f8e96736ff4ba403c3130f287fed2fb5a5631f0d53863cc8ba76fc453ac39528aa717cc01e03ed43e97906e4dfc8458b0a5ad3ce3fd2da3fcc1ed757e7dfc1e7afc36f936d9cfcdd1fada3ea3cf9f7ac5abc86de7fb4769a79e4e068c786246ff934f460f5ff183184e3069517e63608a33bd02cab541d7efa461b0224e2da16c9fd615e3a9dcf13881b6b79864a5e8daa5e67a3703e4f93c43ebe6030bec77a1d3affcc3b2d1c2e7d149d37fe692ae92d6853aeafb6bcd32ad43bd86ce7f10b7ab9d5dce8f478fd2552c481a1929b4bb4ad4e757ce3e848ebb8a0b473a6ef080b9c6b86da51a4b3dc64e15d078aa3dd6d03defa57a0e58eca30e8767456e6e0654a7b5ceb8445361229f7038e717d5bcc42df1b09bfdc24c2ae0615363337f8cf92d0d635ff43f1af3c107637e60be3b4ad53a261d7886f7609c1107aa5874e00be2b52b4f1cd3c2179bac837c40c337067cd094f23eedf27783f94fb159fc1c798bedc69c8e1f9a94b7b05b7c7b36c6d0f1b73bc4dbb0967cadc6d33f9c7a2c24d9659ce75491ebd9b76df3f22d88b39d584bf3c79659be9ba7bcb28dd8f548876c2ccb9635cd664c7bf3f43b9bc1577aece1575c5d7aecb81914434befa3ead8c6713ca845d766d0a9eb3a1d159ffaae7718d69e1514636864d3dff9ff5e353ebd2e8f9f817e435ff2e2a90808d7aef6749b78bae42eec327b5137c78e0d6d038a996cdf55c7ac39c6eb3fb6f87f87be4a15bb758ff82beb84bf4a62e2f2427c5d12ee4b4a1e0f65d8a59e4481ef751b97865a4ee51c2e7b19af706a09ef50af89d41a7b528acab1e97a0b19e23317f49eb8d1e1f34a7dffe8bf443f678defc0c06582188fb44f481b33f1c5cab6f15dd113e2407f10ba9b95ee45893d1cdfb7c76df6f976c3b209ada187fdbbf06d2c706576999117c90bb4dcd06f96493e51f1c632e56369e6c5e0e8ff70ad9f1ac66bb5b795b47e06d04e0e538fd607fae9fedc0f9a755949b570b50772d4b04592d9841df35af68134f3a07c9d6fdf1ee37fd54b8bbad596fc15419ab37588f589b5479c36a9644991fbc2e4d48b05fdd831f49b459719be9bd474ec18a869a5d0302a836243ef017f8d7a0fdf13371defe8e33a287adf62e009c58bee29b1c9075aefc416f54e759d179a478b9278ac6cf478822f07c77ccf27f89c3a44aededb1d9f4fe54ef4b25298123de6a2ced45c3408273f942262c6a2427f3a435e3862f7d99bded3cbdc1afd7ae439ae702e915386c9ed750fbc594c7e94f291299e7554ccc36ef4b7be20e6229f4d9ef5baaa794435994af713622e3865ec7ac043f378f026b0574d7d01fdad31f466db8db7b227c972b11145f6c86bbdafc7c04758eff5be716870e761649b9417f63b47ce8595dde1c0bff34e10d976a831401a638e7383a6ff59cd9b2223de87027c5946849cf3a608c876ed43173aeb15f1fe8dd5f52bdaabdeebbf2b5b001ffee86fad95bf45dad76a1e46b63173fd7d180f0adc1f7a6735c75ca4733efa3e16b5fa7e8c7ad14f9ff9a2bf1f38be42e5abe1deb44f86f39c0feeadad2d32968b6dfefa880dae6203f4b379f6799f227c9d78aafc0c8d51f798e69a470e90f8e7c1336e698c9d75c4489ee1e01a1d34fd3abb7afdf2ff7663ba596cf34df2bc393cb0acd731df42f2c201372e383c5d4f1267c298787171ccf5e3429e9dff2d8e176abdd9d48faacedd805f57adc9307254fc78088a613977b39dd8285f94efc518354c8a7510abb4c36fc4e9f7f574fcc8c17d9083d3b1c5e82ccf2dc96740fe45f90da38ffc86ea03bfe10d3d516a3f8a58d952275ccccdd166948e5e73efbb91f7951ff0c8abbdeb3b8e177b5e24c44759d9965a33a2b26d0e6df735bbd42f4dbec5b15a67cabf1f132e58edeff57007bdd2fe3b1ecdc3b12eddbfd429253dd5b1e45a4f553d07bfc3154b7a3fb4511bce17d2f86fa7df7f9a078f3adaf53eabc6ba124956f154629c63e4d364a97cc2301ebd69ddda9d9e1b35e5db7cf0d27070a33ac40bf64ecbb619fbdedf3147dadbf1c79e7cdf1c98bc0aecc9b527c10d621e685cc1fbc26fcd83dd894b97e971f5286f4ae35a373cd5a1cb69fccdf77384f69661cbdc92a16228369bbc2ef1dcfafbfe11075e718bac1ce20c52710ff6e1e371c97f72467979c2db367f944b979293ee4e0c1e74e81838b81e7a13490f01dc3349e1a31e1f14994579a7754d3576f030d702dcdb9ea973d03be27853cf8d5e942f21546c46fad74650c88ae6cc02384e6d1f9047d7fb46151443f0872356a31eea8eef3ae8df0e229bd1735909fe43e22f2a691e8367dd04d77b8c1855c5c22c283caa19140bcd71b8a8747e0bfcf1c4f9ee512eaee801538eef5aa87b4a0a4e1c4f8c78d8171dbaff4ce2bd5807bc13210722548c7ca03a8257820391d68e45f1347c2bcd033fd65c65c3bd2810a333e2781caadf601fbaeaf9b1ce1782eb49ff46bd5a74ed927ac97907bcf83172fa1d8e3e7aa73c5b939a9f4dd95f4e5a15955d8a76f54ea1ecd98ff1f7ed742dea47efef8db5d8b50d0e0e81619d113fc89ed7e0a8df51adccdb8b7888e345ededc1f115679a3f73d869f4e2695dd85633d7783c40df37722f7d752d9f116f3938ca31ce34e786f0ddd5e7a2e6447e7d857988d7a5817e3023aba9f7dcdff3b8a7e62ce3917d20ed86f59e13a77f29ba94efe1f518eb292832a673489da0c888ff51ed07eafd26df73577d3787299ba1d641886bb03d8f85f23ff721e11c6d3e3e9ce66e3178e3f033c6921e13ba9fcaaed4fd84d05dc15c36049e67944727be35f5ddaa46975f7db740fd96ca46544cad51d290a8489f827c10e5d7a83191eab724cd1e759f95dda1f5edd8c77d0e1c70b6213096c023741aae86d01d2b7f263dea41aeec83ba9ea0dfc0c29ac775c1b5d6819d84fe90fa3dd4da56e7f12a28d6ea3b18e83d0167db90b0f1673a33b17bf6dbb5f6a5f5da7de4acaefb17f62272cca0d8283b6f85140baa71249d9313ee0cbc4059c5f6dc5d50cd65a5d797b2add8ef7cec21a1dba3be072babd4be08ad13b2bf3a576b530f04780547d014a27932b46037d49a8b17fb305631b96f359c84ea98782d798db5e34eb9e842ef433f47b996a0585888cfd59ca41ab7895a0dd59c3ad4e3b92ed13baa6bc0b47790bf80985fcd6fe24164c8af224fec9884d5c11eb60f49f3a013621feb1137d2961f359128ef0a1d0faadd13070afa4b49a74598c42f9c1441b136d57aa1fb9595ee8faf746f3cd9c0955d1146daa7fd9bb85e2ac10ee7bf49bb186392bce5fd0d709b0f9cdecd7c117ccb301ebce9b84fc707e08936687ef55ce4030b2905f93315c50d6389ba04f457b2bda8d1a3a7f6090b1cc36a0f5c3936ed273ed9be353708dbbe80c68b20de600b358fc293c2e4e0ab54f64660af819d35e9fa9a67b88f18c7a639e7131f9b77a8c8af5d77e667d80db16226f94e43cdebe318f093313729cec11ea5e61be6256a128cce1d1b91ab6d438135a1f6a28e8818ed97d0371aeec013ea1d2ac2cbac5be6a93bbff2afdae77f179714f00c274eaf2317dfb4e1ab37235790aea879c9afd8c65e8cfbbdf5b4bfd94f1ffa60ff9e1a509bb5d27b7a9d8ec54b3619b0d84ad85c8dd7238ff4be7f1358bef1297f00ccad572dea21d5fbbbe77f4cd7facf7207fa7c1f5c53f0530fc2e435627470d1e89c4465d79c78e46bda4b84cf6391c287b148b78fb0326a1fcf24f82a2aa6e229e6bb8b9df2d1b9959542c5d026dfc197a910eb58e477c91d9dbf663fb6ac437b8748792c5e84f2619867078573e0e035770e8d0e1987ed58ab735bda82cde6bfa4f723fd945c95c6740bf2ad1bcca871334f85f9c74adee325d502d5f9be04cf19c56b56463a78e036527e07edf75ccf31ea9be44c96dcc8e073fc5833f826c4054e7a7988d9d45c56fb3fcd2165c70c15c765f0edd735624bd23bb0c32ec3f921789cd71273d3c84a6e4accef612cf7dc55dfb379742477bd12383e15a3b7c3270f6769e2cefabdea8bd644ee9b5f9153e5857fc82a152339940b88d76a8c2de840c6de615173e463347e66477ca0c489cd9f335bf98591eb5788d994cde9823f476bbbaa78cddf855dbb232a8673899fd72b95ef98147e95299b590f75be47eec907f4c14b1ac60bbc374c255da3e51c985b820dd3d123ff76ad59416bab6af897849119bfc1be7d50c31edcc2bea16f483daa38a4e9176987db72b426bd7809625140d7107187fa3cb51f0d5e286fb0ee64957d40be20d2f663e51cd0276764c6accbea04dce00b19a6c074fad8432ba7242e84a5d6e7173887c7c94b08fec7bcdd1ef79cace6fd4dfde00fbae2798b1c76e45af5a4a1edc161e68e4cd17089b9a337b56fa87dc56ffbfb4f92cde2e726cefb3db678c41c573eacc6fd019b9417ca5f0c287f8ebc3157c7c82d375a59431d937bc0a7929fa1ec74526b9fa322bd511c338d2354eb50f3fe4223569d5f105e117644ed3795407e0a39722b76fd92fa4ffc5affe17fc266e8bc61dcfb36074e5baae36b8ca2f27d9aff2baa19390768704d5e77baf666e33ec0f3661f28273934a8e6e5ef91a3480fd031267e627c96f2894aea8f215d5541ba3526e99cca3206c60b7c1eb64f355f23763d154fbf91de2e7224f68fadfa3dc71d7d0fa4015c48e292abb4663274a0d5f186f3c2dbf39a6a95a4afe2111713b44c16fb961a397166f658de4faa71bffcf5dfe61b65e6a6cacc72732b3f921df7f3e6bb898efe1ea5d07b15f6a9cd61c58d9bb99762361914f37e72eb3b14c77c66dcbbbebea9efa7d2ffd737d7f756bc2eb6e2adc95b5eee9bc23edeebca6eae57fc489acf5cecc5e6d677f8d33c812866fd64973d720357767528c309f22fe03509bbb6a1f546520ecdfde90b713b0d7cf19c11a724fa9ab0f7596aef8b940f3c39ea9eecf8163937e59b75665dd68ef7a2278ab93578f404bcf72deb4feaf54845fa518ff5027d67419198c4610bae6a6bde65e024e22ba726aef2fc0defb1b23a22ed05f8a1c8e3a39696a42afe8fdc3c453f53019c22e658beb22d31962538cec7d24a0a601dbf11578057cfbbccf4dd4ceb5c0e25b81b57b63177873bd17588036ec5cca4f0daf198f6c48bf2c11e3a5637fcddaed399b91ef52cf6b2ceb93e0d5fa32fad65ae56fde6f957ce6ddc9153476ecc06ffaf9af7da17f5dd11e7854ff9aded61778e1908e205f45e816ba8c075c9f9ca2981cf6d87218817fd5e311d0f965f5497feaedc53d8753a793102cf84deff4a75dc722db02c15ff3b4d47fc518ffeb01ead73f69b37011ec905b00c64ff31f7512f100cf5d64e50acab7997113f44641b62c5a81e8c5aac535eeac5784d3cf8765117a6da6dadaf75cedfa63eeb100253bdb6ceeaccf5659db91d2fe53b0ee7de43bbeb8a6704581d8c81c74dc2230cf7bc0697021391531316417d27a1fc1d53e03b72493ab5d4a71d143eb0334191913e8f0b6c9e45b8f6a1c6d08c5e10b7bb3d683bf0dadb012b809e26e8d5ee34ceaea25e4960d02ad2da04ceb3a279e6db8447cb744e8203ffc95d5fe3b2819d011654b872cf8bf13e54be34e1d52ac276aa6bd996a850f3a0f958e4bea8ec3a049ec7277c2e342886d4dfa3e63ee6eebafaa1fb86815fa35af80b701a5b700a343a12fb30ce08cf1fd91deaab5c5b8d9e4448bc83a6a01e6fd231d27917f51b07b1aff18f63d61c2b5f8d8fa51914e076da8b78bce7d4b75902b74198259bb0ecbaff135ac1a8eb48ad0d8e63fc9ee0d918ef39307f6bf57a4d3544606cf13c7735a6113ac2c84f7484272bf898edf0b0719e0eeacc1abc2e9e1fb6f93d56c8b38ffa465656ceba0cbe61563bbb46a3049a27112ba19713f7c087a81eb9c94903b7eb947e17ebb7f4dd9ec9537ef0bbb621ce744c7cf4188e75fe6ff902ecec163a083be045b792b06395cdd0fba4621e3a6727bac0c55a41e15ba7de89d10be1ca976fb4ce1752e89a0d71734ab2359e9abf5e670e3b031fcce2c0a1a17fd96eb9ef1b8b7e522d4c51cd264f0fced56b8e8395635dcfa9a4c81b8d1dca352a3b4e5ce2ba46326a3f9f8aa74f984fd3bf369fd6bf9b4ffea1dd7c1a2db36df9a5fdc7a4b857fb01bcc92fba8f4af3f32c48d7d5bcc1adf333db85382f2bf9e475c72b56869efc8873b29eb95ee7232e49c2ac6d6e71ddd549e11d2257982d63b571960edea6c9e0576e3d7cc5ebbe67df5dfadcc848c3a320cd65f27f465acb979e1357cfb5f1dd9143f2a6afd3b45c3fea76d79ae8f699ce8a57cd5c910a531a097c6c0f5a8961e4283bdec90ba16cbe459871d4c05bc6d6a3d7bcff45f964eec2cf8eb53ed1780fdb061b94fb3cdea42d6b72e9743260b3542ce75eef6d96e6fbe1f63bcbfbdf775ff2b7bf07b7b2724af48b1cfbb294ed5fbee95cf64e3c133612b518d73349e3a2a53dda2655dedf14595a3ecdfb9b9ff3b5d8cc7f8e365f34a7d79eab5afddea9b6ff3fb39de8cb9a3483a8c6f063cb54fccec8c7ec1136c893f6bce91f8847df48dfb8479a9c1463b7e313ee4d378b9fa3d7ccecbd0dd3f2756a76c673cb79eceb17f64bc57f141770684279e5cc156f8d06bfefeaf1b0680d2585f0efb76b0f3d84dfe70080e5af9262f0427a080bd2fb9ec02f3ee42b56476efe2d268e57b54e2a4e7d192d6b4879954d9ea0a7f6d8632ef61846dae153d2fc7dce28f7d7758c48f95f54ab304823d2319be7908b4b4f31908a6b109ffce4472e66df1df83c4ed475557c2b79e5d43e7cb4c10bdf72f44ca2478bfaee3bb49f11676518697bda6e1d3e2d70ee74f9d0237f57a32d495316be82799b13727a1327a07c6e35afa3a3262af8d19b3e910ee5d07d29a081af8e17529807038f11b3f059e030bde2fc449d78c3c3c8b1f4fd98944be68ce60dab17357ac96bd1c51cc27c6a3b37f2e7d1323397bd79da7b7dcc8fabb84bade7f8e9368ffe5ad667b90c708405c4d3084e76c2054e6ff2f3f349b66b702382f81b6bd165b5eff21d372569f5a9fd057c44d354f40f367a43c18facec879462721f07aa78ce4e38972667b3722a70d036f35ff9735ddba05cb46f07858f7e63e2024feaa018ef79e1ef45641b097ad906e01411a957692ca8d170e488c839a87374bf75453c27277dc2453dd4b60e3e217425daea880c272396a5e2659e26fb2f8a91b8a7065f518d2f71a9de3b34c1a5e066ca5659c0ed325986fdf33de96cac8e7b924398224f766e7086028f1bb99e9517033f8c6c467df3d057d78fd82bcb8fb40b16d5c55ab3d4fdaa79262a07f701ff285ee0ded4678feb31f141c499e642f4cce6f3d5ffc39abe23386056c457afecb7fe2ddacd33b3fc95a72397709f0fbff68ad35df93caeee336bfad8f4b1ee99246ea5f3bf1d30e3ddcb5e36c2e0357d93d4eba66248b2bf19712de0187be48e5bfc62bf9c77c1d172e063e00c6cd4b1d53c00465c5d372fb44d3a606ee9f98d1ad7cdb9edb4e4c3156f732b598ffadf1ffdb5377a1388dbc6d97377f4845a3d7022c38ede434abe72d8b05e438f4140d331a31a7717bc1e06f5108e9e0438da86b279d41c8b526b24d541c1512f17c55a8a9563faeef485c7a26838e57dc2e283471efcf2c4e9c5a817624c7d7284c5474f44184fbf69ad5e8b7a16c025a7b1119aff617c405fb0e812d78d200e0fc2bc9c6912e29c76fd6eeebcffdd987aa35fb9d9799b9bbd47dfdb7b2ef09afa64ed83f03c3db7167be1aef51c51b660e486a42fc1d08f0dce980c354c353f437aaf01ee3ecc3b3c361cde5a3bed86feaef2fb888bc3242e0ea6713663f84654fb1c363d202c2816367c29e286ef889fbade162b7f7f2c493f36417e1f3d547dd90ec3ab6d526c4eb78ff9d26abe149aa348db096904c550e36a3ce2cc320f1a17a5ce9b2e4564b350f92efa91f621091c8ee8dab6b0b2bd18cb32444e21239ec98a6240ea3122bd1c0ebc5006bd1a1e7b8425425f5556915d1913f7ca9857e0b35b3965d8c523b04362059e213a463cf217e620fa9e7c0bba06357c7c4b786a5e8f4dd85f8d1fe05ddb22bc91c6d393ee7545fd4b19ecee0cfdc08b7aaee2a2f541edbfc4b94a31b385bd587fde8f35b3d4b9beeb1de6ae94a127cd8cb054d0cc6af2269427e1cdb1145dc666eab7a8db7116681f6f94a789f1d8b3bfdc9eddf15dcfa61c8f4fbc5fa85da8f9b2463e7c5137c7884b5f8262510eeb053093a2827def10776806be05b1e5356948816f89fc46d29b82969498fc8bb56d111f25b83695ff7a8f2fd04b0ef3fef7e517e5d8f86f9eb7cc773dd4dc74aec417e6c120bf003880bb7c81871ff0a5fcc656f663b14d96793f09a793bc3f37cbf574e27fc9fcc65db8b8c251e3b30bc19f77a603119fe784e5b98e27f0be4dde95b86acf745b094f7eea31748f3a9e0d2eae0c88dff6accfd093611f1c9ab5d682568f75be62c00985a9ac3426a8258fde299e7ce42d6ece01e587c39757f17bd8a59eff7997758242f9176a0f01b74ea5396ed8510f8078e30df203c67b5128db3ed6fc7c2393af65cb3cd3d9986dbf572ab67b70bafd8ed36dd839d367ed9cebb3863779dd861de2ddf20e5a8fb53ce7dbc29aec652634d9351e06f55cc422e2db3ccea4d677af50df6fc9ad38ea7fb7e6dbf257967e4dccf23d183d60d2e11b0d7c31411dbf54be3a61e1851f4e3233729337e24a5dec5ae6dcbcb995efe1633f382e6fac2f49187d65fbd61ef47642adbb1336da7231271ec449560585536535fac988ab7f655b61043fb9d63cb226df229752910d1588e18827d12b67aef2990745803e325ff73281c785e9f86e2722bbe66bd8e99ab45d7a4bf43fba9e6c1e755d80f4f32abb837a2c341294adde80875af7bad5197a2b1b2d1159eaf8a1228e6be5fb0d88efd91de8cf19cbe6119f831eb7ac424dc2dda8efa3be4b8778f5e8fb10a70edb534fa5fa2ed026a9b57e61a97b2c3557b6d07805db266cc1b0a6bcd390f8f85077a5f5a0be03df64ba5724f1099f40b945b54ef0bd578e757e2ff84eee78077d68f237cd205eefc2c8ee88898a7dd74610af917b02975cb136f47b5d51291f15dc40266a8995dd517b25d58338e5bf2a70055b9a93b29d5d7c1ebce6dba43f4bcb4d9c7e37a7e3873ed607d8b303f5dd2cdf749d95fd1ed3a0f6b8e54d4c83f65daff595ed5b981acdfda5fce534ec03f359f267b56f4aacd9306d7af41dcdebef811f9edeb334f95632f5fffca879e2412fefa887aeebc01c7d44de5127bd658f88b7d86ecce958c59b89985bd3cdf8e7e8ed11235f614aba8e39eb327bde45cf8e2ffaa4d34d3cf80e6af9c039c683cf983f3bd488d383c6ac0e7784c9071e0fc72dfde66a36996e46dbcddb746cfccabfa8bdf85b62debfcc1b39bdc9a313dec258c19756eb786006b168725d2fa297d973bd4ff96e3becc6f91e31de26fb2c35360feeeb8ffd38f847916d53bf267c3a837ae71776003d10e85e18a76359fbeed31be5a724e5b43ce8eb1941b136a195051d8ad15b48dcb136e914a8f3d1fb6ea21fb55ed367a09ee337bdeab8fe8f3533a9fee3d9919b98c41dd053d73389ef2f3349ffc2232e80f1e178bee655af78ff80bcbef899b1c86dabeddfd88def6fd37e522593a747fdfd4ff708f818f687b9b27b6c08e2f6b56449b154ef3579fcf48dfa20c04ff176e56b945a8f832585673598461e4fd57906f9cfe34eecc21fa9b58e58458f6b897da9b20f2df587608f4e71fdc853ebfa4bcea33b7bf0ce736439f9042c28c06f66c52ed5760478d7c8cf080ae8d099ca7ef9eee80dfa382a4ee9aa78b4659c013fe1946b7b6028deadf90ee9d6e42937a59917d31768cd54584735ada335385605f42ffcbdd6cb56f122878e17c64e965a8710b904cad3a971dcf8223da85851825b55adcff101d82a705c7bd220ce6175ddfc0d7b0acd85f2029bd5ae4672b5561f39b82bfc67c77737ca674b39939dbc981ec74a540cfa5c3efaca076779baf6e3f0d8733f5a7f9e49fd4cb4f6a0d9102fa4d07d06eabb90d64cfbdf9fea8383ff59f49387eeec7fb0cfd36e8f239f766c2e970f2dd3ff9cf10556c4fc573d87c89734ef3bc6e6410c1c3deac6d0f76a386c6b4e5ac3957aef70c77f72e677c121c690bbb9cb3e7c4dfcc01dfbe3c17747ff9ef97296af6917dfe6d52c1da5b334b1fe93d6ffcd6bd2da8ff2143cef6a2c36f936d9cfcdd1fa9f312fb8e45666cfdca5f29bea1f5b66fa6ea3093732c533e5c4c433ce31837809ed38b1724cca818c5ec473c6100fc59e9917cb97b0076c88adaf059f8cb8a447dfe6917a6e64867d69e72b665f9d77ba5e336ffe9493739b94799ad479af67ccadd1d78c65efe134a11ee2b31c2ad6be5abba8bff8ee80ab7338f06154d7a3bc796323d0ab7733773eef32e5f791d65cfc84f1e4a9acb30a9ab1ea7a5273574a3ec96a6567b4fe05b8dfc03b98ca1d9f8043aeca57ac8cdc0dfa9dc125ae5e334f7d7d3cd23a16112bf315ab6f7318f63426097ad015d518194b0abe172a7643dfccd2e76d35e67e266fd3f1f4d7bcffe06af9b3dcfdfb79c7578e9a5bcdbc6b3032e005b9d5b3798653bbe26f5b904e783ce5c05156c79e88f20a0b85e7a0831ca35e6d886ef39c3aafc74565dbbc724af1f315da646197d5b10b1c37d3b5404b3f9afa8fe9f7378fc8db9d9ddf3cd6faafbc3affa0df535e5d5f3ddf393bdfd28f6db9f4f7b3c9d3613a79f84b1ff84b0d67e8212892378dc70096212ff89ed74bcd8b9abc80f3f7f955f0c297e173569e6c67e327f9f2aad67dea79df1e0837823a25a33aa50bbf99eae1caf66d0ff0c1ceedeec9ff56fbf35107087aa1e15896b4a7ab387cbc6f196783af656c765e17cf4f9b2fdad77e170e53d991b06b33aa0b43c3890505781af6bc5eec82825bc0cf820755363a007b112f7d917e54af1eddae57dfde733bf83cdaf7ea00fcd36a0e394cf35e03bbf4630d7db3176141672ea5dca7a3f6685f58d07e29f933f6c603b0fde7cfb5e3f2fbb5e86f8a87eff59f12bb6734d63f31ae765e201edf090f3a786a7fadda62429b3c286a135fb38e7d97fec4bfc7df1e4aae6cca2663333737450adecef2c79ad954ff76ca777ddf117ac36dd1cb4af8c72b461827609b807da4da0671571cc047bfd28fedf69364d17fd42dfe12761876f8f3b52a13f37b35b3c4214bc566c160f7beaa1e767b8e2e707e020f52519fafda8be58e3883bc7dd8e858a13f93fe0f627009d90da7e18fad5a97de6158afd5ebb5ef4af459e3115c21521ef5b0e0f34929741f68d83d72afed702ffd3befa51d5fdfafc57657435768228edae98ffdfcc2b6ab18cd388b4b65b347139790f6fb5767befed1cf537ebf5ae303ea035ea97d013c3036e9a6fdc91c61f69df7e086910d2d51cc9f42aa47eb4fe63a69b6ff9ffe0e6df6a3c9dc1afcefc27a5a6666523fe6f6bbb95d6bbe03f4a8c31f21bed69a63be0c9b71d9e9ff352782d4fa7fa36ff338dbf1f8e933e6d7e1de7b69c5c5f073f02bb7c466b1eefcca7bc258601e8d1e7be6fbfe76094c7dd736e6f05bb52651caf7dce53bd22c0256b3d68f4c24d907fc97d95ea407cd5fbaf916c77ccfa92f067d3441b18686147cd48a7a9e8f3c7fefe2247fcf6be8221f88a7c4d1f84ce82055821deaa0f02bea831e7c8b63cfd0d8ce5454b6293c607b6af09878b26c994771b3896043f3fb7ebe4d8abcffa869b7be3e5effaefcd7d7fc7943e7adecb2f5bc8d9c32048e5fe8dc5b4698de7ab8831e772cbecd6367a77cfcacf6f7a2ced46f6b90f6d590b80f5ce4edeaa09016e986738d79c9bfcd63cf0ee25cf9f4eada7556f37d18837fb352363028c02dd8e4916a51397650702b823649aee6a3847ee7167dbdba4f6c2d55bca6d68e58d907e26a58d741ec95cddf8f2dab789759d1b137eb1a2b2f488707782870a55bd0febda5abb2c98c9b3d11edf81e960b6bd49f5b83def43929b209ad917f443c78a153227cc408b7f277a6ac922281360907a7686ef2adb46ed72f3ed29f51e3be54d7aa4f9cbc677c8315ab75aece242ee786abc169b81aa4d0738457b62da02defd54dfc787aef1fcfab9272934e272f069c37dc88e98138e822bb032de9f5a1145df0d1a1be41350ba7f303f910f5fc948791d399bb63f5fe3a76d59eb77943ae3a6ab844fe20966edb8ff2c7dc4cbdfa91076f7b7dbcfe4bc594b3c9a8d1a2dff3e41ebda0ffd275d8cef6fe9a4f9e8cbc9f540fffe35d5efe3cc74a7537ec7fc8c1eec015b7723ef0573fec473bdcf0497dfe9c5558172b56a1e7191a00d30633e98b5e66b61edf6d679359a3cdb437321f63fc8e83bcfed81fbadd3b28a0ebb324fc49fa2fe647e5dcf693a8f79845ae48452a4bd4877f926e90c05c187cc8b5a3fccabca01e7bc453e037e4c43b1dd9e6f1b8b20dc164e7771cff412c4c7033a6bca67e04478a15703915f11964d062c4736359f22d3f80d749f980e89f607610cb5dd82ed7e24d27e27ff3fef7439cf61e75c1f773b3fae3b9691ed4eb755ef45e08530b8c4d3d73f39bb5c19b9a0227dc36e97162af6c89dbee27f5cc1afd5af4f2d7f976f4d037bce9af0c3ef6576ef7a9139ffdf3c90e05e84dfe305663ffd206f58f36a8e53a9e6ee6fdef87e964d09d9bbd6aea7ddf4e1fb8b7cb1a1261c68c88e2eb435078560c8e15a9e2212b72fd4aeffff4e80e9ab105563129721c379a1d573a2086bace9cb03fe0940a23bb144666cd48b37107bc1b3b94a4b7e0593fd64c7f76ee43f72cc2ebcd73a81f0b0fbc1895bed75adf6b091ea3ae5371e4f290ffd07c73ea31db516dd907ef0e5fd935e1961a9c5d8ff3954d5ae1113806559c885a34ce07370eaf7c77a8b9e71ce5eb928ecd24d31c85efb080da67f23a4991ed4357a0b732814e25a7bebbc82923776a8a3e7a3595cf6dcd5d4ff2242b85292bfa9f30592dfbaf37f936799b5b4f9bc57af02b9b0cfe2139bd0bcde6cebf9867ec03eddc0fc7e5566c7535bf49bb887028c02fcddcc1b77984f13c442e70e2ca2f2aa1ad48fa8b465e8c7cf113b52eb399e3fa756be626a6184b93ea04c08e9bb363ddf3efcb21904d7dbfffb7b0a7af9999f879fac05ffefb75a61792c753d222ec657650c86a587b8cb87fe41e3e3a38bbb8e4ca37de1e3594768d8612f20006471e97d7431946881361db824212bf04e991ec43779072e8b1c1ded67991a81843d9eb83480f0c7dffe0a71aeef906bad7ca7e19b3b6757cd8a94d314d92fdccecfccaff29b9d67f1fc6d7f2dd9e2f3ef4c96e734ff1db78acfa37be970ddc650a4c256c1bb8bb57b6c5b7f8ec8e40ed9b239f1a14e34a1fd74131b4884f1e39aa7d18f37da83e2fb22d3a7761107f7852d373b64d7bf082f440f0bee63c709d00db25504fcd6aaa3f00c36c35f31b358a956d12df9bd7218e141f5a39e28861cb88ff1fb58fa145f74bc73fb66c47d869b90ffb527db68938b69ebed0bd4edbc618e60cd8a5ef6cf6c8635defe935e59196a9b22d1feddd2aae7fbf7713f68c1b99a973fc66e46e4ce812f5a1f950a2af063d3576cd2b463e5d31a88382131f5ab190c475e057c4b5333269ac9705de1f21d750eafa9ae4c42b0d8c08afd7945b55f70cde44d849e51754e0a905ef8ff247b1be8ca039976a0ec6a23afe8fb98dcfa575a4ef4b6be344ecf8ffe99ce41b69a22e5f82785a0438577d8ea3ce2f7db7a76262b586f6c4a9af7e03a79cb9d3029fa7d6163dbfe349d6d158ec1ddd9bfa3e3df53dd0d7a1ec387adedc91d9368f3237c5ff3ee6fdc5bcb77dd7af757c8c589934a07de4e962574afe6758fb9bfa7049212e6b04c06b33e27b014e013d3b46e42e959d47dcd76ecf4e968bedc0983e8baefabed3c9a0f318ef77f9326bd66565524c1153a02f303def0b74745fa053e6c586d66e3cd6fa348e5ad32fa2cf91efd4eb57f71ff608430f5b75ea2d546b388e551c9f55be3b75c11f066d85c59e17e0103588dbd537c0bf5d2f4d1141a3976cad3bdc912fe8ed43177d207648584e7b01bb25d12722227dace614fa1e877b61aa9836db73f0faab185c2a3b74a0f75ff920d48bafeb57fec55c176a3f47aced69ce69f5fd3de8138ac8aea1abfecc953db7611bd56b957a9ee1b9a4c0f7d26b00382ec26ca9f5453d2ef47d6a3cb70f49d7eef83df302df6517149e1d44d00ed8f35ad94947fd6ff01553dfedd63aad4f794fffb2df41ddb7c74b012cc558f3620d3ba48de2804fb7a51e412f9b0c56793a7ae002af70810161b10e7ccc59500c19c535c062a9ff2bdfe5e0570a93ac14f035346e466b8ea0263ae106edf343702a9efa38357f1ef0374e1dc4a2bed4aa0177f03ed4b97241fe4d7dc475c53af755293f64d119c68d769573e0f162aff358f04783c223dcd78a7aa4f471ade6a7be9f8ab886719f3bad7f56830703df055c9066d3af7a8a091b1d1d7ea91169649d59d7b639e316fd6e6b1976d1eb61a9b8d3275e2acab391b696496bca235c11fc257cbfb69c0acb799a1c1efd17effb3ca1ad926495f279958f3727cd33e0bfe278a1fcc44ea46ce8561ae805ad74dc6fbd8a3082ae9991147e75ecb74c0f1a3f063d25a1ecb7bac69c349771edc8557ef2e6e58efe4c7f9af6d68bfe52adf77ab8edb1bc9f543fbe660fd61d7d9a9e14a654beb949bce3bd9720ee153a1e51b1ac3cf2054ce0bfcb8643e0e4eb8f0aed5b48cd39006e016d27941fb1d3d780bf407d57d302ebb6868d32b526137833f2e2a6df59e52b66446a5f9e341c393ee9fcadec03477f16f4faa0cb24269c69cdeb03e5cde9b5bce8f93c7e32097772331fcb341ea5269b92758238436eb59d5d596eb2747498f5bfefa79347cdefbd26b1588691d3e87cedd4715ee4b7c61fb12171aaf48e9852ec4bc0943a5610e7b55076a9f06af0da59e0c96079b17cb9d91ffc33db09f30c5bd4659d20deb4cabd44fd64397d169bdc335eb32fab3bf1d9183535febddf8cffd1dfc19ee0bbd04dda814772c5ce70634e831b0397e1a206e6a3e4d012c91b0e72e415542c24ac4ced4505e1d5801939f34d44cae3a7ab7b629d3bd67e3d9d8cfe67bacdbee4dabfafbee04bd1e77a1d3bf26aeda2fe1b14eb2a767dcde7b1ae92c22bb3782d1bbd12685da43a471ce91c719d513e36b22bf28f339bfa7b87a4bfeaa9186f5d928e201e49475cddcff3ab80ff8af72daa58ed71e641c578b5ee8378825f1a6bff346e34e7b8e471cf14e6d1df95cd9c824f63cafa64bf8e98261513138f7691815b5bf9afc0072bbfc9cad84cf9f2059714a3af553c6806853483c82e85a7355ac1dde25bc4b7bdd8f1c2d94107cbeddd67cbbe2c96f79f6ec7c447b6cb0ce2fcb36cd7af799a886c22bfa4ddba8f4737f1c51878e68e4f3933938e3d194ed00f821898f893d4f3d47f3773918b2b397175a16786346e9d46e316bd9b0972724c6b169db46fa967d097617a933fc7b8c99fb3a19cbbc6c7357c932fc8ed1e71708ef6b30666db586b6e1a9b38ddec678ff8eafd1e875c90477365d5e81343d34e6bd24a53fbb16a0f3489f7227f112a7659f35254b645dc56bece4fae2b7d4cd8c7aedaf7163b1e3b3b70d7749d2aab177b5140ffd6a2eb0d91b30cbb8e11b923c4652a360aa1d9217762f2bae32bdb06a6c4939da0f018f5943639a47545fbcb101ab83c62f50cdc199e9a777bca63523e8874baa045a5fcfb767b909974b2edf7e5623b7a9a3f3f7232efb192a3df6025c5cdbafc073c293771fbc48904de1b1ff1f65636dc8015388c7f6655e426d04ea4e38dc62ebdeeb4ddb161efd6b2f363abae3535f9189c96e5cc5da2e647bd1d72a7f14eefaeaffcbf1f5bf43137b8a8e6b90adadfe0f491adb979cee7d8e2e7e057ce465f1603728f9f2e2a7001da5a67a3229d0dcf9a539ff10eda33dea184d646ff801c0ee54c2eb08e9f3446e566faf36bda83fb62a931f117c599d65e7334c7e3e00de3833e298c1ff3dde91b386b57a469ad79d73056ed7cc5dde6474a38cfe16450cdad3c9aa5f9cb178d1feee1bbb21b2e4c3d1635e966a83525d1b3afd71a302673578d115363b4fb1bc628597ccdf1b9d7ce958d76345f4163dee6e64173922a7bb7e4d0428d476f4d5ed877dbe1b5ce6c5b374b85e65af99a1a77f7f93a5e19b91acb5e11c7ec51ab664bfb0db4f9afb0f56245dcb49cc9aa25275b309d6c56d4c721968b67f1f6c017bde7f0e32be51b40abcb3ce3eeb51b8e5ee2e1833f60c6ee42ef531cfadce0079d10963deccb12bee05a9a9fe0d3f9b3f4c16f7ea397b7fe2b3cd3476cce5fe299bedd1f3e8f5807b92eedb727c5f4db5cd905133e3bf9ef935711761d53c70af6d5397ed8cbb4deb3a3e20dcd553e00ef0867d2488a69c35bae62661fbd7e470e4f6727fac73e0ab3e919d5f7d2bc0ff9b8a6b7e8786d13ef339bf705c0c2276fa2cb58e42edf44d76989393fedc3e366af7dccd10b7b12468e859e96087bafb2f536f2faf186abb93247bdb8f15fcf74c3c60743f765d591eb9749d18e07f2cc868cb347dfc975fe53f3ae2fa87f2d1eefa94fa4e773f483a33fc49aeb3d9a70742a1e51f67ef9a6fc25ed379df3c87fd3dad7265771fe86b008f7aeaf64fbfdf5e14fddaa55102f236a545df4b7778eb8f31570bb75ec7a86ef4e3fe27d8a43e8c673e0b4c4cface9e931c907d378b4caa97f6c9911147cc751170357a721ba8e1168ed7fdf1def79c2cda058500fd10ab94e65eb756e74581146ce27fc57055f6f2fea41ca0bdd2b57d955883aa26f0791cd948d00b6a4421e429d4b7d15d69d3ee03f235ebad49718ff150df99b788b8f34c0ad0f35c023a7c67e49bd8b36f5f69cf6ff9cf28ab6ef36f9c3651a3e235f5d37fbbfd60e6df6fb63de4f7334f822d17945e84d3856a4fbbec3133ffb791f65f3be8b5ce13c463df69877bcdaf39bebffdd7c6dbb9b71eb1fee5571bf77c8fbdf0f437359cd4d63936dbfff9a7d59fc495b8c9b9ae3d06faaf2c23322f749cdd14a3ceb3e5bf87752d9d79dd6d16179d1237e4e2619f124b5d7ec6bc6e8c1edd19a5be82677cc6fb885ca9bdc4237fbb2fdc3ad98e6c43dd48c7dcf17bdccf8b10567bcb2a9ba3f82e9fe08f441d4e7da4a177a4e67b848bf652ebc994789b9d94ffbdfadc5639dbfdbef78bc247c6053dba63ea43de984432f862b7bf0a73dfdb7e60eb0a437f9aa9273be2aa39d1f5b2e17cfa35f8f1cedcd31becde1b3bd7f4caff706f028203fe19979a13918daf5cc88696afc5afc5c3fe29177fd051b3f9c64e6cc9da6e104f56389bccd857fa6f338c8dde4b7f24df0f1b45fa7f34d425db78adcfc837d62e0736041e17bd639c51337f9a4704df7e4571e8f6ff9c8cd7d5f72d8681e8fa94f5c34dea17d0fa4f16bbeddb0b9f50fc94d9c72f92a1eb8d4f5b9c02df46ec521f5bcabfb8cb73a3fbc3dec48bb50dcb603b76c7bc3e575e1cfb5dc87d3efc6e29157b85ec735f572e669984ac488a20b7e4ee2348f177be10e89fbb958d79aa3085839d1b5195f81fb081a2061d7b117b5245ebdae6307d8d347bed651b582d8abd53586f562cf5dea69179a172454b6a3eb74666e9ef2c83eb48cf987e8d718f7f6d3e7c1afd9a327ec7aac4ddfedf9a1c74dcaf5789ad39513a7eb73d3db7813076d9fe59eea63dea9627582be9f0f78c6490fa3e1082881e59fbc22f72322568317bf4ec0dfc6d1e7e3b5d476797a51fe4b34a1c747bc76a5d7052e87de4b102f9ff8ca06d7bbd0587ce263494c1ee7ef5f838e2c780896d7afa9ff811b9c64bb5bef05b62572ca1f5bb613d4a3fab7f25dccc1dbcd183869fab273ef5c9af737fb19fbba3c80f3cfabf557be3b4d8527cda09095e6a0abc0e317d91dad2f6ac45ddbd4bcac15f4345c70e5d97ccdaba0f06ce494d117e8184131861f01fd8db13c80db5fed45b578e32bbbd676cb78af7b21a97651e0dac7cfa67d2bdbf322277ef79a4b1ee7e0250e0adffab16615af1c7bd665e6798ec0ef528e40f931a26b97611f1a1e298f9f5ec433fab671efe8ad65b2e2e607fc0be96dfe8556daccd41bfb364b3b0f4cc3a59d63675c411fc78fc7f93432919bee113f90f2437f37fe47be9c6bce8ded9f8d39f1e66cb42e7c8e79d4d24efd9aa51d169bd3384bcbc79e77bde755ceef62c83fe140fb0dffec48c5858ce2425da388a757b15213cfa8d8b3f7c28b2793dfea05413edbdb0b77b1e3e020e93da10fbae995568fe859f350770bc7d20a0a5104916d851a13229af74784a10a0aaf43b5a2a5fadc37d4e3ddc50e5cae935711d29e6acebaac84be6fa13e83618fe585af399f12e809a9b9acff7f019f03ce057f54055f409dd71ce3dc84ea33db86c7c6b7d5ef41d7d0d7a37dbf52bf91d0ffcfdc5ea1cf956aefe7858fd7c0a985633a976a4483a6efbd0abbce415f535f8fedc58437df83fe4f65995574aedf55f7e857786dc277fa98ce858feab0c7eff2f85dfee2efd22a5e9d5bf966b1deec17cf09fb92f6bb97dde357ca90b0299da4d8f83a1764cea8beeceb3ab1a53e0f31c85af9fcca062f945f6be83c9ed1169338de7e7fe88adcacfdd9e02f0cd3c33eecb27de8f1326c741b2aa7547b0b720671a6f9826cb55fedc867efbd0585c47b885b494aadb7c4c0c114675274ed6a51731914748c98cf7add61ef2d96051e691fde6b6c3d783fb0ff3d03abc210535636725ba2afeed3b6b3cab6d45e89e756c4f508dfae6b7774cdc946cf36e258dce72e2896dfa877d4d3f8c30d700ac2bbecdb3cf32fd96dcdbed1ad9ca719c4a30f347a24695f5fe4d2c19d7a38e757c79a408cfe74899f68e54f8a224b3bfbe9e41f929ffe37f60ed33c75f6821d304f457ad8059483e8c4e038c8248f07bef88093f10fb9c5d55e48bcb8b4b7aa1816312e70bfcfaf02eb8c691bd7cc0335ff3cd9d1daf787d676cf4c8a7c3278cd9f1f35af1b7c019c578e911753153f18c49fc4891750cd0fe2ca2e2987e1513eb4c8641831933005eb1d47ade3b00b23e8c0aa7971088a7567a66295c836c82e7ae04a563e93a8947faff639b90fe3518a79966466508837adbd55e6caa6b6e35e8d67a9e1fe73b8feff9d786660edce633ffbc48dba869f1a7a07e6bbcb8f744e4ac46dbfd358da1ea03511c49ef963cdd4f39dc8cdcf7170f63bdbbe65bb10787675de483dc774bfad3eeff8dc2188a7d7ef656a3fba38afdd5eb1cb260336ea6fea45bf5c3ef8d96e60387f9783bac957fd519fc6f4031f614d3a952b5bed039db9bbd03c6af478cfb88e4d514dd3e4d1e3f09ea3d7f88da6d52d6dbc970f712fe6ed7a37f815958ddf006f509df0066d711a5e1914be01be7d68f6263e8f13e5d756a8b5608f52cf8d4caee269cc35bc7eb8fddea7863fb244de7d8c5acb5e201f95b4f4398ce5e2e7683cb71e3ec77becc5e6f65cd94ae0f33fd6eee08d76871181b7f1761e54bf1f7c21e73cb58bfa82fbe8231ff6377c8cb7ebc58bea4a6b74cdac661e0aca99dbfc562d70c2dfd70213dee84fd5e0038c05c5815423dc9dde0bbe52d47c2e7acd88cfa2a0cfd439d4ebf726bc145df0ef422718f3fef9e6bd9442e75dd51fce6b876388e769afca9f1fb5ec0ff2faa5f2996277f11b0efc7b344eb46fb6a2be8b1ffa33c3b1b40883f464f278d4cece594f9b2cdd6d16ebbc9a5bc9e131b6573e37f23d3d3f8c6c7b58cb7d485cb53671cc8307a90a0ae56f0ff7b0475de5a3dbf689b3cb6b388d3a73681dc1ffde6bbebf92723ab2a4f3d4f82e53beb26dd2b7806f6e534e89f8ec9b789bc743c9cfb4097de2b8261ef7661e81a34bd940d9b9e4a93fc3b155b641fc4c3ee6acc03d2c3ad06a824dc131f8c47ce23db4540ce2bbc35d738cd73ff88d3373536566b9b9b5a764c779e131fd7af123d1fb62ecef85dec3302eeab9956db4e6645881afcae4f174497e1078edb43ff484fcadd8b4c458f7c4619af6fef791a7baa5fb34f88deed3f4dc26eabe71c24984e303eaa53771b11fd73f91d33ddbff65e3f72eaab3bae6d623fbabe67fecec04f5509562cbb5aeafda77c7bb867f3e8893fac4453f569f61902ecf50aae3738e7ddfa59a5148f55653eb4dc9c617f25d515fe0d8aa4b5fe41aafd6c6a627fdde6ade4fd830edac17dbefafff907ec37f23979e94dc93e6b0262d398eb138f99679e1d91ff5a136fee56ddca1f81dee50addbea1a7708fd12e00e87c01d725396c42feeb5e309ef8d96d9b6dce49eb1fc87f0479f8f4b534f2885a76341d43e1a5b0d6c5f198edfbd461cedd0561efd0b5ce0e6062e903e17f643d91cf3efc6052e342e7044e33dc9ca96bd20e32c1dbc4d270f5cf19ff11adece8dfecbfec1cab9cd7108be41a7149ee61189959fd1aed691f4bf77fe21fd78577db14ddd704d739d781b4853856a9f1df0515736e11edd44adc38ea88125a247c212a9b56caaf10bc1b1cdeda0f00c70df527db642dffeca3183c2316277acfd709b91c6a2278579d8f362bd0b0abf3354be449ca93134f1bd63a756cf03db49daeed58d732ae099bab6c5d3c39e576c4fd825f2e745bd717965134fa13a07fea4079d3de2636d7427c6c49db7829f5ca9fb454dda5d3e510e03b6cbf29bde5168e8f8eab7a3facdcab6d1430acdd3bc68782e903788a085a5f54ee1d3903f81dfd0df87e4bf187ccd2be85057c8cbe23e305761a3c0fdca3447a77d6f2fea3c1eee424f5aea3ee75db6e7c8bfe0b7d97368568a27c228aaefed75489f670aad6cf8602bc690d7533efae93cf55df6a258bed15a0677bacf639142ab588dc1f65c93ec846d5c540d56d283461961271dfcafbf039e6fb9cf9a8f58f95d2ebafe4d2efa663f9c989c34f7c5efea52647f6ff66f5fe8eea777e9eea7b374b4999bd0707a5a5862933f74f76fd87b6583d6921e371c760af68df2181cfce37645bd58a453c619573e1b6c3f78db568e4576dd97e17366dfae5378d099175ddbe4c0e364e5054fd34fd285e2167a332986d71cc349b1de87ae007f29f10a093f9cbc02c7aaf7112bab54aca7318311e17538c59f3569eee5a453f8be17d856fe61ecfa07e29b59a873bfa97857f98461cac9ee776ff884c0e96596f60faf7cc8ab3c6f742be7fc49f3fa0bc5846a3eab799d144fc487021df1636ee158030077837913077d36ceba264a9815fb562e212f96f7e964ad3fd40dfe601ddcaed7dd9c9b84d93e680ebb3a82569af0b98575516b4eec7ae60a607454ace9bb83dfd71b26fcf8ffbb797b9ccb98eb37e7f68f2d63412cfe654d23ecaaf9ee0073807574abbef2414cd5cad7367b2c33bfae2e857a7d0e2ed80d6bf2aa41d1bb8b63856fb55e5a8cfc6f19464cd9d2127ebe3bdc8915fa9e4ab1720e91bb7c0b484fc7088a453dacc7d83784f29d91435ec37f840ff7137b3fb8719163afec83801e866f415bb818bd84fd03f4d045645b9c41c7c712d847f048b13c781d06df62d4d6065adf8b97e7ba70413cadc5ca81261bf1ffb1e6f8c839ce57b6098c54dc8e93776c26fb85f9bd1af5bfff5a3cfc87f7f9b7b5343fc2a2847d598adfe478297fe3a975fff7daad76b580cdfca7f8b5d8e4aff3ede857fecf88e5ffad638fbeeeb53413e4eb063b35fe1fe3013cf3f69e38b88d61b9bd27029f1a6acd1cb196560e7e58be0b89a3eb851b99a17c48b185be56bb98d0f50ef1c4f992fbc97d9a02c0895b91eb1979215e4ef887b5e4ec43dc7af92718e5df7007ab756d0445429f9ba8ebca1d9f28df6849fd9656c68222f14504dc9a41b557d2266df21e91eb9559455aa617399009b8bc6ad80c4f9642cdafadac619b8e5aa6ceb13f33d1f319d73ff6667a12daea3fb3339cd3782f269919b952ddb3851e72f416896f73d2b9356e5e672c4bca5fbfcf87349aa4d7df6da6f6c6f4d4337aca93505e26208d7223723d0bb8aa14b5e876f6d1f5cac71ab9b5461e6be183b5509ed6c25aaf85e5d95a184bfe0c9e5f757e2a982c952d478f1ff5e818d0c418cb5258b8e64bfb387a58f2b5f135313277f5c529bf5d7cd86b72ca875ff1c2dec63e7d94e3db21877dc283a61c1cad3d9333f0bdd6d8bfbbca4e61beecc4b1dffd2c0facece347b66e72ec5df2a9177ffa42f8981b73bdd1ddef1efbe99b3c38b0ecb08f6b56524f46620ae48c303fad44c5b4a9ac7f1c7950a8878ba7b2d6b8d5b2d1db7b6fab072974b69b39fef1fdd937d7d6045887cfb2e5f5c3963f6cf9bfcdafd96425efcb5af73c82873929f2972016fa1afcdfe9c7b0c7dc7fccfdcf9bfb0bdd739cd09e16619e1a49e11d665d56eb3da3042f16036664c74dfdbf29d53d1c340e817dd2fc361ef3fb31bf3f6b7ec731349d247c172b537ecccdcfa2797bd3aff2794c3c57dc007f6bb32618fc2a8becbbf2ff3fc3cf170f3fff263727ea3263c2ac9dfdc68f75d1daee73293ec0af7c9cafe1b88e5a03c85d6e6ffb3ccaf67fe84b59afbb230ef2936263c11e6be6111b7f526cbc6586ef4e693ed6097124163eecbbfa1dce625f530037e7edc1ef598cf721e1e32af410504fa85ad77be27b497c1ee7177da56dea7b3c5e8a2fcaa97f8f2e6d190203967c54cbf9132e9a0ff9b749436f7cf46f93c203ff575e08eaa564d2ca8ba1b26b985f414cdc259a271198bf2056fe44ef031f243972db44aec7f215337f135ba61a6ba25ebbc0158217a768f64747624f2aa67ed855f79cfbe22c4f29608b939bd7895caffe009bd9f0f55c7fb71765db3fd8e318e2840adfcda058fad84b4d7c67ab26f6c8ce7ee3e5b779ec4bb1fe9cbd221c3ff68affc3bdc29ab9220dd5d87ee07bd0d8dfd82352597de40fe5e0ddbe397f2b1d9f520f859a43e08b39fa71366190c9f6df582394e78fc5dfe9f799b8b7d5073ed3c9a7fb6bfb1ff126d077bd7fbd54dc7bac971beb057d3f88f97e66f5194fc4c3e7bae5736dd51ebafc688d7ea445d56e8f21ffaea3d6e7595d43adf9331ee24bbb729ecb8d5ceff0a7750daaa57c927f57f41efeddc3bffb03ffce932178677a2f9cecbd2f2a75ef9bdb6b6743f13be29d8f6d0030be37d634b04bca16cc5c618a6df33be5ca4ea49a5b1638b6b0fb59f50ebf7ae4831ff9e03fcb7b6dd47a2d8135874dcfd4bdff95bab6cfe3a70f3efbf6fea5fd37686faa7b387da657ffa53598feeefb7ef8993be2dffa94f5f5a8a53fd6d77ff2fab21a5cf4873965e3defabcff89f579ff519f7faca7ffe4f564e3fe53fc2e3aaf30457df3b45e9097ab23d733553cd9fc3f834ffaa47ee71a3c079f11ef3cea9d8fdacd5fcf23a87befd0fabec22df6fe46dce2eab37c2d7e18fd7caac766f2364dc5d7d4b9b84bb36a64f2ad34f202fdd415b88ad692e5c5458ffea54e2df905e0cd09c037d1f0e5b0130f06e95199e04ba47de1269f4ae48ebecd638ff9eed359dec0d16b6c608aed0dad22e21ebdd9db7bd2733eefed15a437b7051ec59cb9e0931022722a68f8ae9831539f3501c7c481facb9317fe137b0f3b71601f9fd3bcd8533c277eb6e49273c523eff4c83bfdd5bcd32e88bddd073922e5939ce3a52af47effc598372fb0063fd11f1f3de6f5d79ed7bbb04b3eccf95cb9c0af2aff00feab475c6c0cbefb993f7bd6abf3093efd3c8676f427cddfe4317fbff6fcfde47a0034a4eec3e8f5cef3294d4c3804f6efc756d9f8fc53623f513cf517cf229ea6e526b31e5c825731a0edbb53aab118f0134f9a801ff00b8a9b5a1ae2f69cdffe66ce6f32f6715ffcf456ec597fc07d5fddf6b3a7a9d84aa3e91b80bf4ffa5ef58f35033f5ce48a6bbfd717968a416545eb66d8e4dccf9e93784ed07366de765e3e7212b7e663d960b0b9f56531d82a6eb4fe188f807a2bf2cd264f65f5c1f54bd232bb898128c155d4604afee37c90fce1833c7c903f880da12769916fb0306270946615f90d4f97359962a1f9ead4dace8ca0589ba465bfe11cfa3f74cd4fee19b01f359a5b351af0127522d7ab2f6c06f4d3e8b7e746663ff06e7f214f1db1dbf964ba8f4fe549e191537f567fc1031ffdb1ef23560dae63f9157d9f4fad6b929ed48798cf03f2337f0f16fc73f3875e6f3df57ac359ff3b9b3f38d52ef78bca6149d13bf17aaea5a1fc1215af2adf4af4d14f55fb2ade33659d14a317611e4ad23818f8bce8ddacb39cf1e45f70a85eee33a73a0b72cdd6abda273a59edef450d8d8c0b7d9405690db1201eefd4ff410c1d87465b451f3b38261f86ef39ad23680f91d6d6b0060f38f8858119a91635ce3b7b4dad239f78822b7d5cd995be1ebdeff41aaed17a5ef69e5ee6d6e8d7302dd97432d86793d14323edbd8f6ee585bf0fe34dadf5ccf65cd9909573d0315bad7567b536166a7429698d8b176e65d5accb6addbbc4c8f68b54f9db7fa869fa913ea08deb23efe175e62edfa9df97745f48fb4a7d56fb3932fa35ee2f7fe5fdeff5636e5cd79ba7feeff6e89c6ac2e0fbe771b6139eb43f63cc93e2b6d6fd1cfbdbe6258847a668725b9eec24c5e645f432aa0bf7510f6fe5db0dd3d1ff9f4f1eb8836b1b012d8e3adb0bb789d38fc725ffc959500c3bbe0b0dd8e35f100fe99cd8d9f1f829e6f1622f628fdeb3721a6d00355f18e96738bb90b4493a412c77e1336f8e65d865b6ef4af82c2134fee4ae39c6ebcac7afd89936146bb4a1489ff44abfeb5cbb141a60d59996543b1dcea7f976b3cb26f4ff578c9befd3151e14888f6bd80583f4563c70558b55a347b0b0b378b1e76e56f96ef3081d168cd310af798c5e538f8df694473e4865db428d67e1d5bebb90a2827e8bfe4c079f89d8201e4afa4cf6bbcfac83583c89ca3e7075be7ed41a2e95ef6e347fb5241d9d98ef44c5ac20cebfc5d05f785a8ac856e7cae611ef8d18d33e3fde0b7f28e6fa5e17bba0902c2832ad7120554c521f7b4a4c15df3807be729a47e50f97413c249c81cbf7a19ba9dfa1e4956392669ffa1da059b317057c431b9a976ace033f63d3fd132fa9faed3a1a8f43dab8957a6cfc45d6f88b3bd2d353f153b6e731341f4a3a17ef31a0cba37e07ca5560bd09d2eaa98262012d1feaf957f3782c116f756d3388ec92f4393debf83e4bc79047ce70691e7ff395dd0923fceeb77fef782185f5a776ef8fedeaee66bcf0a77bcf44d4b3896059da61e48ffc7f0f3bf2aea77428c5fa508aaec3223731799cbfc00730a51114d337f53adf4a2b29da71c39f8fc1c307781727547f9acb17fd83d6d264f5ccfd20afffa156c678cf95ef183bfbd05d723acedfb46d54b6abe4eb83e9bb5e397787ea5cb26fde41f917c6dc251baacf234db0f440ef8376a4b45bc60cc6b4bff9953f0f9699f9f658a3976bb4f25d6186915d857db55e39742378bd267bdc659ad3df876633773da9c655ac9c12facb91a3c6d30c8a240ee9ff4aed071c5a287e99d5fe9ed37ece740ec1226ebea111c4239fc7492ab69225e032cf5bda8084cd59cf9a4ec4af799a88b92596b3943fc6f9629cb9843666ffa8d74b7bee569a49217c919e3ddf456eeadb3cf6a02516c45333ec4bfb37b95c3507ec993bbd652f507b08e2a5193eb7f3d3f3c9e8d770926f16e6f7dd746cfca275fdc85b5ed6b98692af25cb80c926fd96631c8fdeb1d10b30aca4f3c7227779aeddddec0987998b5eb392f732f3c756cd83911abb1be72edf697f87b76a603fb3dd07da4af7cf85e83107aefbd1c2f45006854f1abd75c279c1a5480fa4c58dfe01df885dafe3bb3deccb9cb47f2d41fc5ec61cf1177a132bf55c18391daa57da4650249cb486c02ddca11e46a7e4db83d16808c72e62a937d2091eef05698fab73c02941dac14d7c90dcba87324c0f2ae630a8669e70d2c7136f9cf49d2baabffb35728b5dfa9faea3cf8ddbd509691f99befef096afd32fac65d56eff00a7aef2d939f8b72ac70e8a4c92e699074d37817a33df53cd61a0c68b11bee160f86eaef693ca77d77be5efa1fedd577375a8e78d6751aed8d7ba41234e5ab89b37ad815ba9f9a7f571bfc5b18ae9076f84cb70e8fc7821f9f6fa9ab99e8bde5e78878aaf1c6b8e3d6c08fc859edb26afd477f33bd9b57e2de95633e53fc7988f6a7ec97d184f972a5e473c1b677a3f75a80e82f9cbf1dd793d2a944f457e153411c9b73a5dd324dd43f55a72eb9a3b7d4d75bf3547cd87eb7abc7da0fb1eea75e05588f7b107d88c7eb321dd073d5762cfd6cf097774e73ae9fc5a6c8de5fc6be2a8dadb613547b787465b4bcd3b35df2b15dfa8f811f3385e4861aa79021d74162347959fcf75d4c88322aba1af5c6cdecf0d9ac7a5ef3e7170342adbd9b53b628bba8f49e76b2d37d41e87e51cf30feba3167daee662331f0feab930724ed78cb33d6c77641f447aeb9af4f934f738f24ebcd675f2c2c17d0b77f3a6e7e48ee69f83f987754bbaccfa399abbfa3926eef01547db8d1d9bd3ed17cd07dcce5db59aa75c6abb729ca72ae6be9ca7528aedc53cad7d777a6593293719c412730bb95abc07314533f68cae39248d43e8dbfac051a8cfff0bf38bd1fc1afd7e1de0bed4de24d9bc6bdb3c6af47487e47bb842cdcfbda8a5ba4f13be5105dfa8263f22db87d02eb46db13e54d0418fc51bfe874eba34d53942ad5f75dfe6a7acb5375cab02ef8a15939eb7e5bb3e6c0627ddbd8a5ea7cf0fddb6f9b284cd0dc1e6d6e0753af99a31f2dd9c0ea9f2551d232fbc72ee8e81394e8adeb738f6a4f89995a2abe60df07295804faa7ce3f15ee8d817b84f6533c95f55fb3a34ee7d681c0f0dd873772c79e148e22a25cdfa90b0700c750f603cf4ba4c32adef3834741c5503a7443a8d865e9bc6b8f6b50628b4be256abcf09778738dbd58355824ba3751abf5873e33c246e9388de379bb0ee0b373d283845d5f48de65ec886d553e3ee9c69a7cabe23faebebb2d80df935a2f727cae056912564bad87f19e433f5afbfaea77a1dfad14c7dfaf7944bd415d9b7e6fc2849541d16bbf0ecce9616188cdbc9f145f49c3f97362497fcf5de88dd7b3ae9ac364f391335ad97608bc9a5a135cea9cbe11b9e29ecf53715bc12bbb266c41a31b4b1ab3b0ddd09c65d0946d346783389397fab38ea97c635d933bcc2886543180f2f1357edb577b4a535fb380d75bd93667878ec66a57e097af47fa7dcc224e55cf025e612c2d7032464e294cf4e9bc04d0c9f50c3a676a8a54ee44bb1c47779a8ed82c351eb8a7779806bb261f42631ba85e699ff00d3e6115805b19ef45ec2b5bc8504738fda97d1e765af910144fa9f7cbbd28a0877ce02bf03395646bf0b987306276500c6bf271fc1d8f872a066c677bb6a5b1588bd7c55618f37eaf7a8cf3d538779dce79bf1261c38147af8ff85e60c5bd330cee09631bc43df05188fe3906d739f68e2caa066b4ed739c3fbeef41e8bebd09a5fef05b0edbe4df573158bf9781413ae8ef7a7fd9fe9ff5973bca3da89fa4b489fc2fca46b291f8074e0abb0eb004f1c147e458f498d63f2490c5dbfa94eefd7e7e93fe0a4e369a1ef4b5e9e9f281fa0e22b76bc17fa6b9ed39fab3f0b3a7c9f337ec48352d1f76bf67ee47222db5854d7bfc9f8f2f76ccec56ffbbae39503ff871752a297e8ecfe17d5d9b9d1e5e7bcfbeed0fc63ec93ae45fbde9a9b4131b435c6ee741c0fea1bf6ab24ff4b9de31dd41e37ae3d65afa87e839c3f62c432ec73e5bb32be720e41acf1575d6607f1b26e8e7d57eec2ae63236f07dc9663c3df3b62b8c055bfa3de914ffbfd6aad370edc7e10136e9fb889f811f74ef3e4d48f72ea5bf476bc558fd4a83b7f4eaab8bfd94fd387ddbdb2bbf05da80741d6d48380f1238e211d63a87577a10b1fb1e36b419159f41ccea73eb8a35ebca3fbabd6922bbb75ec73388d2fae7db401de85cd3ef50735ba9b6a0d1efb3e4e7664c22f6cf8c5dc3aeba9f05dedbb16bd171e2fcd201ef8dcca2ac22cc3e69f7896de69da27b120ad7cd2e18ae891faad167be4a1714c58065151ad846a2649b337fdeefa35fdee67bfede9b7bed2e13f8ecfe9b79ebc8a10bee9a9bfeab4c7f5ea8b75149ddbe7b3fe998657eff36cb0e09553e7c540fdde2967e8a3507b854173ee13f61ee053479fb68ff14aed63f7cdb166acef1c07fdbdee5a33edede5d7cda5b6f65145d7b1ee9e1bcaaf5b010b63cfbb36e290ac825d39685b70b4a1d49bc777271b7b6d1b8ef602e7cfbbc831aaeb1d42bc669b1aa7497528b58f2bdff1f995b003d5e7f95a01782cb8f6159c4b5f16dfe1d2ffbcf45dc7677eb0b2955ee9bbf9e7ade9cf1837e51b7dc29a0ee2bbd7f4a7ec83f38831dff51a9fecfe7862ad626ab5dfd995300fc06cc3bfac975cac5ac406d42fa97ee783c629ef82c23171affd43d5d41242b7a7eedfe2c02413d6212816f51163a0c6a6c2fcb6797563df8c6c4b74b5fe599da9efc6f0bcabf3efe9c5673d0585b4941f00bc046ab59e3adffae4ef77f1fb71652b0b678f9a4b851e3eaae5a236ef5b7a8e971467de11fb6e594979e64f9b13a67fa5bdd5262e543e5b187d5e2c82fae627c5f7719c491ee7f7c635a475f479f1d61dfbfea32fe612039351ec72e7f8f2aec33e233f12de9bdfa2fecf4fcb6fa9df47a4f7db1db2659f14137c96af163bbbcff591945fe31d3ed18e599f989f41ecf819fe1b71c1e79fe0e7e8394171f7e196cfbbb8b9a7df8aafc737fd68f00e77c9eefe9fe79ee11f2e3fc1d6b04fb0351cda479f97f31c7eca3e49b59c4ff24fb66c27baac24de0ee4bf6ee4b4d4359b79743dcfae62b5e8569e8c723fe1a7ccb1217009197a05b9d47d1a97b9a109bf91831bdfccebddcc379dcd9fbff1335af9278bede6e7ec79b49f4e44cdff9b70e05bd40ddf1a1fe7323f219a7b2ef946bf6e6d748ec5abf4e755c7737a6d7aa906d52ccd5ff27e67b3b0f82387febe765911564756b021e8adb5899b25b26b31e616f5f98ef7dc9592933da8750f7e459c2e6aed67fb30f6772202cedaa05efe85e405d6981d149eed03330aec7595d554effea03e649cea438e6cd97b71b9e61ebc4117f895306ac6dda13d7fa5714c2b56c3be23cfe7681e40f4ba1bf4ff02f12ce51d867be1028bd2210ca36f0571f3badd11babf3a040f6226e1bbbb197062d4f3d37038c8330e8721cd8b95d3f1dd961c1b3f07af5373c9e6dba45ed40f4ee3cb9850cd55b917c526157df4b89ae118fdac7b51acd5da36c3c861913b32f56b781e3d945d7000d63cc92ade078f4027768199ad838297c48fc6811b8c5cff90af983ee7f8ba3ab7f9fc6fd4cb097e8e7de8aef57ebd60ca3fd2fc957b11272e30b28865d1c753f20abd9c0cd8990afc20c0fa0ad891f14edbafbd70d57b9d3d2f32607c7dd72b8342c531197d9f2dd7f7e55c62b2d4f58e582ef5fffdf647fc37edf97f09cbed805395d73dce0b4e3db76add170ecdc12463b32e3bcd319a97368dd1c817cf19bd46cfabf9cbfe1f7b6fd79c28b7b48f7fa525e0d47f0e8da083c55afc54c0e059c4291434997aa2b7c0a7ff575fdda83166f63d66f67eee3d8f07290d2aafbdfabdafab95bfa4f00fc04a077e29edb3dd7fccafc583af8b070bbae7ad1cb6f2b033983b41bfdece3cebb3de3d65417e443edef6fdfd2659b9cf8afee3652529e6e7bd9f67f270ecfd1459b9b1e7ee8d0dcbee36ec9f6fc37e87ee402e4b0f617f6ac6c01803fb3044cd6bd2f0fb1e63d2f57b0a316953e6b07dfc7ec7ef6f9c957b1efdf58438a8b39a5bf15dee6ed9fff6ca0c54413a65f34b989a273cf273eeb237b8b5798b8572bb6ef572f3985a411177177dd500f7c8f53073cf988c63c893ef32ae196d3bc355109c697f778929edf705830f382be8cb577a7b607c4e6098ffd2bd9019a6d52be33b513c3ac639f23aa0f32abbb761ad8ceae5a379b9e705dee4056c9fe40cf1616a715e80f1eb04cb4e6ace82cbb5161ebe756f1f46c056ad656e1232c0589afe5e1782ab72a6b3246f79c4d3e35a22b03e2b5d3bb69eaa6e50689981d68a31f67e3e53c7361e333895e0b75466767082a2b4828f67a1796ef9c6fcdef271d42cbdce5ff3e19fa9333f35a336ed01375347135f0ba762fb3f72b65106cc6bfd410d625978f511ebfa2cdf0c6ccf6b7532e1963c61631f73f046471e309e78c65eef759468f87af00fe6a7edc548b3ce5efa3aba7166cb1aece68fa3d57856fd9fc2fa4aad4d9d5ad5e69adca5c7733ee6778bef89c87634e2e33d8fe43b7aaf6ff611cb5c97073b283c1b31c0f0237e84d1757e84ed557e84ab9ca54fb03f9e1db9c0a1f443eedfaf60cbd68e6dd0cf8ef944605d0751d29ce15e637693f5e338472df90c33db776fc40611d99b3c8ffe5a3cdf736017186207f6ef9396ebf615be0dd91e3bad85eb8a3fe3e7cbbd78eb9e730d4b38abcf708260c7ca2ef0a6a64e97642a6ebc4380b804b1a7f37d4b32b0f28dd21deca3dfebb0bf14ff8cafe0701dc7787415e32a02b6485ee96f29b0cd446e2dc3714a23f935c1b7d12483fbd0c56b0d7e8fdbf2186e3aeb6cb2ed607a9f57b85e6bd11ee4edc53ca6f5c2655f079c558c737590cfc031c773408a7e638f9b98f4d38164849e3d3da78ff98d1eaee220ea0ff9e6e2dc6c593f0aeee25196b2da715857023700585a47dfbed4d20fef61665bb0f5ea9b731ea2b3e2edd7d73b46cb7bbcb4abfc54db9cfc9dfaaabf13e7d607757b4bc7b9fa902f65764dffacaec9d44b38483b4f7de5088f60a52dc64c67ecfe11f77dcdf21db887c9deb29c839318ba55b6e9be129e62cc668b0ede08cff6a8dd7608226c9bf11cf38df52191b3bb7e7aa39fbac0a18a7a7b333ba8a0c86ccc0e17f3554876cc1de7edabc45b8ec47714cfbfa23f19b380ba23bdc0d5f752d59a6b85e8a10e1957a5cbb8d81e6a34ba487946bed02a427d2677e8b96306807453e15bcceb9431364fe1f36c521f7e9513147e671c95fb30f2707e6c1f7b07c69118310f5b81fe649b6347f4d290de33611fe706ac375d93fca77bd3240fb41fcc13caab604fee49becd30b705bf8af9d2044f32287a8eef9a22284ac4ba88836b477a037d8b67fd9dc6003b96f1614d9c538c6c71efb2539bba7758702e83be6b9bad477e8443f74f5e716d61df5158ff45afe2efa7c88ff0b5958c697dabfd7e349bec5e2bbfd0bd796e36a902ae0ff0451957109ca98f69a51f912f6efdb4266b603f9d366678ea2bf51d5c171b705de856bf0267f83d2fe1c9c7cb39ee287395149b2f8b28db01cb98b9983aba3e723135698d9abd704a610e007c97e4bb26e86b241bcfbc7dc7e34f5b3d4eb63cb7cfedc131bed9a4d66d7935b3593c4f365939ff2bb59326b627f5c2ea3edf75ee3bde0b27655e24ae1d2016cdba01d9fb6f1aefdb5c3f72b092ff0fa2f6bdc27bf38d792a8dca9b657195f34fb854122b001e619c9b19708c3fe40e34c061c54c9362b99f58d84f3179f9095720c916641ebeec0718abc2ada27e876c2556b27abaebac373a0b39cff8bf4c167ef37ad0fd9e7555a73deb53dde23c9e599fe9c31bede7d3e3a858fca139e0cf61b68f5cb3c63c1b64f0f4deabb366ccbd8274bcd31fb02030efd457951ee88a793ff83737f786595f5f819f45bae4d9f417d6d7ff59cc06f51faa3f6ee056fe4f727a8e7353e63fe36906ce8119b43ec8adbd02233ffcc5fcafbe9eff553fd17307c67de45e71ce057bc031378fe98d3c10e6afc5b0dab07ee9deb9e3defa4e3562a80f9ec9d45d7dc423525f97b5d1b5fc06b061f554296063ba1ab8df3a3e54660dae0fe5bb898f9957c67866bcc57fc56557e637f24d923c7cada361b2bfc76857f0f82cafebbbe509db3a5afd141b86e7077537007ea3da9b66ccff0337d0db05858fd93db3567bdde4bba048c13515f655cb53b90f5d7d816f82b9191f1ced52fbf1ddb6f6d3e3be7aee77af83684c32b50bfbaa1b442b9235e0d287b38b999e8b3994b861ac9a50705c98afaee46dfd96cb24dbeb460bf709cead66dcac891bf6711fc077676aa7d1789fee4da21d9e178ad1c3edbb49d3ce149d61e244e8a96d341d0bb998f0db8f9d99f60e17733717336bf43b9ebd816fdaffd9fee376fff2bd1563910dffd57df12cde57996bc67fef66cd7bcc99f77270f35c8fbbb0aabfb2ede6cb9ddbe15dcf2678f1e8de6b8bb1e08de022ff0cb39ef359e4dfe9966fa9abf18c4bf0c31ad4fef1dd8ad610e31d8c34eaadb4c692b4d6b31c18ad0b3747ce31ec3b5de6636abf2ffcbf53ee1961de59391678023de60a8e464550904e18ef4d9f31c25b9e5ae38ebe44b80660fe6bc874ed1cc2e1c141fe33caf7da4d73d9279d7f1db9c7efdfeabbeeb2e1a0becbdaa5eeefddc0ff8eda6f9d1403d4185a0c3a13e71d60283f834f866c41e7a9afda9a5d45b26ca6ca5a169b1733bbea235e8f856fb5f7cf937a6155e385b5d92fbd49271b563f526ba0ee32702903691e721ea179ea2bc6edb2d3e6c91d5941040e69ae95d93f4c8bb9ca9c3325633c833314f8ab078d7cbeae9342ef4d3472f51af34aaae5950cfbce816bb114bbfa8cdb5ac3be5b3c0b97ef8dbbb2984760fec01c922d5f26e93bf40cd7dce3a6bacc4f0b5db8432ea3e8a9202af3f051e33dd9b370da23df8662e203ea0151fb5ee17df828f2bb051687c33d27d90e35883ef82b9bf6bdef663be603251d37063728eb3b7a4f9fdfc86b667ddd2fbf8dfe5a0c1efe7abaf31bbecff5329e73bd2c26beb1d3fac905c774bd5c2b45ef25af363336f016762606ce66f70c67b3fb0667737a1567b37b81b3597d88b3393dc3d99c9ee16c4e2f7136cb339ccdf288b379938cd8a3bf32d7b3c2bbfe7a87e36fca0f6d98f3417ee46a9fc707fc6578f6dacb3b49b1426ee5467e3b979eb56efc7b8ef36d8e93678d3ec89f7fd867782d27fe419fa1e499d4d405076565bea5d5ad796a7a8626baf705be7f86c94f9ee1c3af3c43fb27cfb0c633b4e4197e621d9ae65e6b78ff0c971fd7b1b6d77373d77b2b37d7f943a35e1e428f6ea0476fedb5a0e737196ef6773fe91d0f74f3ab3cd01fd9c2ab3d736dac57d2334cf00cf5adf372e4cf78f37a3ebbafc32bfcbdeac9a567f0d3daf2970572220fbeb6d3eb1cdfdfd29d2ed18bad048359fded9a327a06cf6ad0dfda73fa6d1caf58c7d170b09f7f3345faf870e74179bf9e3b3f59cf875f5acfd64f7c5bace7a5ace7874face7aff5d36cf963b11dbcde9fe53f4337736da4a7b84773c03caa0d63d8736eb6e47c4b33d752efb09f5c4ffa236385f9fde6c6392e928901adfd499dce36f7bcc625b6784d32b1fc4599b83ea3f02f64c2669978f89cbd1e8cfe5a0effd81ceaec0ae7e60d7d20a75960e176ac8262dc1d3763f441a3d71a35b4dcf29913d86a6b785ae587b4763a1a394fcf02b75591e63c7b29bc81c050f41bc64b1dab8039262dd45a5da3c3bee330ffa0d791d9df86678e27c05c60dcaa076029025f13f83fe0c2a263edb53b79d535b8341bc6c0a6dfc2ff68b4d274fe8eef8ef71a1865bee43e91c3ad855fb49ababe60517a3bb3063656877badbd0a7f45d9a15760b6726f789d1497dcf3981fb3e07b704d6117f67b75524c7cf39cd653177d74d7f9e9bfa535e7af31ff403ed0ad7d24e4cb44d963b2cab6773ff5225e7490b7d9fe96fea07f91b799236f831ef04ff89a77fbf3cefe5466466b6f792d5ef7c3475a472b2bfcf6c3e0bb9db49aba8965bcbc9298a0d21fcc5ca2bf95e309e9dfb9ad363219262fe9e38f7b6c70d1c3c5783b5c8bd51ce7c99cd7dfd876932e9c6c96c3c18fc5b73f934bf8733dba4693dceb595e6bcc29f580c341f63b8c465a47f99eec5c18e795eea44e5094b5ccfd1d92c2eb4ec9ced3ef80bd55defa7c7e64cf93eebdc7ed3ac72dfb4e1b5f170f33a372b52cbcfac9cdf6ba981441e1911fd50d818d88f9b04ec0989e35b840a798e5dd9ba8147e6e7093226e0a61e334f3353725cf02a36fa5c7db8a72cf9ce3be7dc4c8a6efad9d3aec3b8d1c83f70bfedd7c273d3add80794a2a7094a277a644df1bf3977b78cf3cca6aafb927ababe518baa0b80dbd78167a80a60ef96e76c8e75f315e88b70f99e7b7f3863308c780bfb60f19a7b461fc6e7f1f726f8e45e70a0eff29b0dc6a9ee3f3f7a68873e180273f4f091e2d6d078eb5419d7e5c71cca9c1ebcab3f31a184a867b456b835986bcc3bea6c7fceae4ebe2bb1e5f3fb072322b28e2262852c5d7833afe21045f2c709798db05be6dca7d766b4769c624aff8777edb3355f179e716300d98a7a5611efb5e173d8c53f0b7efb58bfe0715d2f3aef9fc31b7d9ef75aee14cbde99f6dfd9e758ffcd8f3f8ef687fcf6cf2395694e06594b9b6726bc1d79b934ed79863f2f8f9008b0a1c39e0c1014ff7b11733b7f0ffb33efddf6edb6a9e27e8f7683ff4395e4377de70ff26ef47b6dd66cf67931f770eee0bfd54a307aeedc16b687d47e068a4f8abdc87d1e4156ba30146ab6de243c31c8e7e8765ceb1f5b46793ac5fe911640e0597733fba19f37a1e0297c0623c279e8f3df6090e0f3bcdfc0b15f78dea366764f39ac91b9635739b0c3c26f5e26ea32e6c14d9a77c6f624f786153c677eef70e3a2a816ba3a3c4d751f2aaa78a79cb993782f57f433abbe704d3361790eff4a36e75b98dcfa2c1d9ef699f9307b37654187979fbcac7f398cb1f7d7a29e79a58a776b8cfcae759e96809ac2733759a31f0c1c8a6b4af90bdca4c7b0d633c96c0496f73056cd3725ca329f366d1277f69f482deacade790ddd23ca76e69914ff2d1a7ae79057fc436876d81ae2dc06ba7f8dc62cc8c87cca76b41b737829f467687f45ccdb61bfdb56413193fb99de3a573759027851d8f6df49b17e87ded18fba6f87380ed7652cfe3ee66de787fa60ffd1ebff1d6f8866c3662cc906316257c4136635d647bddacb48ec678ce4991ee8d3a5461dfb17d3779090a63e9e856dd44db4d27db26e17c96fda9583c9779cecfe8adbd7663608ceb62f3aad7f011c8efb2d39a673e7453ee0d66fb33f12fe1efd2f36ae0abd2e7e0c2cb9ca0c86bf84311f9e69ae74a78ddda8c3b81356a6735f9b3f0a5c1a387fdc98cbf66ff8cfd37f8c219e39cd3fb887c1ee44d95c11c8ac7c7c531e9bda6cf1af0b034d98e6b201ef0368222abc6514cd7423acf3eeaa588391b98132bedca9c4573e227cc3b41a1c14363fa4e2d7c911dfe4c93ff457abb3135fd29f295f7989511ff3ae07ba5e07716d93e8c32e1f1f2f66696933facd21afdb7a4ebe879d079ec7584b90f5b7cd73a44ce97e218f4e5934d97fbe157728fe91cac10be7d89fb869e7e5cbbc73890ed739b323756d807ff8103df19fb772ac44ce0648cbbfc9e6c1a74ba1314e3bd6e325ca376738a5bf6986f41cfafa6e701ff93f9b47a8dc45f07ccded0f5915f8acf3c601aca75d988d7fa4ecdb6d0df1b5c7b6cc157e1f36a201b6bde4fe8e61c4f58879d703793ede82485e74c5dbf5a028f2c030e445094f0b32e74d28d713ab637cbc7d1261e569dec6e0bfe0efe973d755796f1f2f35e042b8826dce3b0cd776690dae80beff72a2db84941a11d9e27cdf766905a41b1d4e44b99bad779ea3bcdb2f09adff30cffd09ecedff80c0d785278d628647e558b319397053d2789ad6dc98f606d8aae77447736ec7fd2e714974abc5eb34e830d697579abb3c98644ad0df1904f099107e1fd0a0f22eb176c434da2e6d9b8b1e83ae4395a9be1b05dc805f34d219e0a0a0dfb6458b7722e07d73178103bd1098aac3efac435e272e6062b5afe0ed44578a6ca8d4987b1ed21dd8c9a1fe780749322271314dac61ff9fb53c7815fcbb928d1d5639bafc5e99a96cf6dea749e90eb981498c7621b85f8c1ac9d4a630e3183ed64bc28cc7192cd52b83eb91fe026c2bda67348e9d88af34a645fc96f869ddd87516b37982b242862077931e453487ffb641bf6c6d5b00386d626662b52fc5e17f9def4d92619b601b541be057abc923a25d921ce79b9c81f711c54a41dc4466bf90cbc26b15c17ec9a828da27bb0669fc144c80ff1fc2aee635ccb7e1ccef3f5284e518c8d3ade9b2899e968e5eb62643136f3e02588e27d18255fa228cf8dcaad25ad9be7ab330b7e483aeb93fa67b6fd7363e9c5dfc187ff7d73507be62bf4f782e3b7439d12f949b5e71c1f70026b961ff06e898f94733c0c3d948abec8bac73c2dad41e48fbd3de39cf668ed22f664394b6bf119797d4117a5c837c267017fbca2b87a77d203a8d5417ea16b70ccb4739ac1ce9977afe6dfe295677ef11bc4b751c271b03b2904e7f0a47f907f8d698dd2b5305f15f41ae919393ff25da78ea27578ca55431776b5d295ee637d0ace259d738e1966d28769ed58473cf4a8dc73fe39e37c79c4dbc07f35957d1665c3bef218b95ec68acd25b75beef51af7926374f0acf1f5819f0bb9511ffe3d725f5bc40916e7dbe3d37de79cafc5baa46c75fe31672f79fa03eb37f8e036db25baffa4eb52fa7e8775243d2b4ff467cbf59db34d611f95f9350b7a5ea9e4613d87b9523379be749d31789e381ecad8d61429d929c5b11472b3a40bbb720dc8cf93ce090af4d2e7bc9f5e87ef75ce728eeb444e4789df4e3ebcec73d348dce5f06fd38a6d91d7e578c2eba63cff4eba57ee17e94ee8d52eb84f11d7e9bd61f9aed29a6c35ecd01eba167100c76821db5fd2cf62afe9d97ac8311ae8567f6f8a1bf3cdc778fecfecdf488af77af2a36d9f99b1faf539e18f6603920f7097d3dc58796749fe409c5b49b1fcb288bc46663e34e6bc1ed38ad7f21835b56531f275343ff5f9907fd3e2a3e218a87b532c50dd386b304c6766136f13b5b013b279fbb9eaae4866d2d9e18f94a70feae005e37325d7e4a468cf394cde719136975ca4e4737d0e1b2103af6e383cec5acc50d4ba8a5e173e3bfcca1238a98c597096fb7d3b87d95ccc7002f35483af536c3ff4e918bc435c1fee29e624f281636260f3803dd219031bdd3b9cf9f81de6fd06ef33e949d490755b33255d38a36b48395784ba5a7e8edbc07567603f648cad5264c0d1e158c5b78322631fbe845eb6502b725b5e8e137658d83f6187f1fb163b2cbf8a1dc65828e053929a10ec4ec3f5df0cebd6f41dccf4637b91559f911b1db59f9b6e2b275af2a78825e93be47b24b763590505f833adc8f5187b856b5ca8431b0fb8442a289257bd7638768c0f1563b90c5eb9bf0ddfab35f244b7710b4cb683629e8c36cbe1d70ed6f276f9ffe6dbf4ae47fed37a84316e48beb9ae09bf15f1f221e4fe028e9d91ab756c5eaf3dce09a09f967926f877e017af43d4b4108fdba6ee35413179e5fe00eee560ace5b69e9b576dbfea095301bcbeb2fe14af3ff90b8acc118e61c5d87e1483e69c4b2f56af86cfaf43e74636d7400fe4b9aec18546feb3f010a377a3091f7f188d9e163acfac064617d9f8b5538531b0933b8c518457ce71cb79a22e083eb8564f1cff6a8aadc1092af98290711dba1c63ac5eb17fbebf5dd1cd8c5f131f84034e6a7567e7c6734bb8a7fcaa3c3b28caca77b3fd59bd12dc728c0731462f6ac8f30b5dd2f1c2197f3053c9914ff17f6586b85665d6bdf695afb5466c40cfb3bb40cf8d9f938f7a63efe9f06956a9f9a35ffda1b5a45b73828def26be269feefa6ca9c57da366c65c4714433e0033b59d49d3cfa9f37dabec20f2d4afcf515c9fadd13f9993e2390af3a9b9c7c976f3ba1c26b4eeffc89ccd277a603a53776001ffeddaac38f7f13782a5eb04d1c437d647bde757b17b3f9a376f7e86c13b7597332df3e6127b604652ea0e75cafc6da223d1b7756d8ea1ad5bd0fb37bf91184a3db988633e27537f681ef0331c8d3a7e8bcf7e7bdc6a3e9c69d7d1dc379db4015665e1a9efbfacdbc6396a8a53e61b929ae51b8c3ec603444fd641f012810978fc2c49ed0bb9e2bad837ce3d230e7ee6b998b3ed6f66673e2b7fe6ded7f7199d4671d941e6be3183cdbd2e0970d60c63867f5944e94effefe8becff83e9dbbef7381c13bed55ff1b3e0bf005e2bc5a169e75fd18b043beeea41dc10c7048575dd32dcc4d3481bc9ae7d46af5ccbf45b7dcfda5ff527f29bfea27fd2d991a7a7c2ecc9b24383467dbdc169b4da9d6ae210ffcb938cdbeebaacfc469f9ce78ff0b3e17e68355bd70c73be156e3d9e1e161473aece946de8356ff8477dfe64fd33f55c0b528e9f938c7dc169ffb2718e81fc479d7623b394eafc53ccf4f98e73dc1fb3ec3e63e9e0730bd673a3297f3edcc0d38048f1f73fad9b0f5bf530776d1d7768f273f23f395ef2e67e1850d63acd2c185ec90cf37788763403a77ea6ee8993697f28bf9d15a35c0a464beb28afb1f95f31ff02b9d96731218d06f63cb233fe5b9ef796bfdb595c7bb4dfe2fb4c92566363a1fe8c50b9ddcfb57b98999b1dead251c179865279ed44fc8d9a83f9e75cbe4aef7fee3fd1f223faf4194edc26fa933759357532b27299217637f36ff3072e7b32ebd0e1796b9dbb53f87f3aecb32995a5c1f45ad530591ceb5adf1de7775aeeb5ee3f3ac7c63fabd4666bb1bd36fb9eb3f255b5eb61decd23f1313eb333a63af9b18bcc8da9d3c189ecfb419679d7b64f4baa752f013834f47b5b56660d51563700a180ffd3c5d831efad3ac32725bd03b9a6bc66bc70ac1a39e82af555bba6e79070c387f7de5bbf1aec5313005e6a00f66aa14cf7f8d5b8c82ae79fec13a2f5a31bed11a75f4c35baec449d3bef7ddf18e79153dcc2e18f6c50bcdbd3b82a390eeb8871d356a7a6f871e78832a1fbd9339dfabf5910bbed0b573e07c3ffa606bc613c37b60bf305fd2a6001e03f42c7a3f1b332579378df036e7e427fab7ce6a4bfc3b791ead16b3e4cea57699c7154c55cc05442c0717980e7fc3ff9e5fc7f4dbfe34afab9262fe62fa4e476f0f0d661522bd37f1a102c7f1ba674d5dffd0fa6161bfe74cddb9851a7a34fa8cbef3e7dffed079a7db318094efce5b8c869cd76ade21ddc4b3e5e8bba9c74dc9f38dedf7c0d1d9b38503d1f2ddd58b2e46986bfe5cbc340a49b7dfd7ea7f61cc74d33cd0fcc7e2db64936d26f41a3d0d37db3bc6caa53fe2b13fd14981efc45cc9e8df63de1ff27bc19f073ca45ac7073b606c0b2b8cd173a6186305af74fdd5719ff68f1df8004ffd73e4ebb4af32230edca18379c4f16beed3c39c9bf4f482f3b081cc4c1d4b6f0f15731dd2f7cc9728c27e1bdff52accf0b9236078726f9db7d3c098ca15fe2fbc1d7a02cb433bab6d07c560855940d7cbdb57e99ddb9bc2cf75ed74bf97c0e9ec8203313ea8a0f0058374f5104ee93765debe4afd4566ff072f746d7aab314fceb3f6743ddcbbcc333ab8cf740c1514d079cd14bf4f8aa0c03d3fe869af82ce74c7b9f85c989b5fa0575073af20faff722becf7da573c0b3c07d2a7f60fc15219c99a631c2be0ded4e4ef935f247e529f7442fbbed7b4b1827c1f7e13b81fd19b38de87333c139ef572cd8aee05e9f3f6f5784fdafbbf0576d6416f597e8cc88f11f9094ef7de414f269d17fa448d25f7b39639cd5aeecbaebd27fc9c07af2c1f726f24bfceb3b53e636931ce41d3f68b9a02dcacb6ccd4b6f2ea689657471fe5d5cb35c581c719b1d175f981dc953b91593e0fe60cbc71b6bad565f31f0bd2efd69f39b7f319dcd5a0c8784e71e859418198877b7b392f86582300ae9d0f8e567d9c491bb79fad0cc917739ce2956557ef30e30bfce1de013839fcdac665b90697a8ef00d34166ed8ccc641bf0b2c632a3c65844c00d02ef6bcc5cf285cff81eb446fae08f6da077a38d8bf8e73873d9eb32ee540ebe569e63c37a90f93f6025768216376fadf68cfd203822746e33dc9f83f4211fcee24bba5e8a276dc668ccdaebcf71fd33cd736a1487463c9318ba293033e83de384c40ec5948cade6a834a26740715bfb2ab97df4657b5dde4e7aaf7dc5e716b098e97e026f5066059b1833e698b9e3be65c6497173c4ad72ed8cef85f966d831e828e8bee3313dc61ac42c7d8fe737e85a6b259f83c7b70e18e7eeb46fd2f1d2ff1e143170e0f8f98adc50bc2eaf7cdf703fc1e1c77c6b78957b2d3205fde693bf53888d623edf88cfd1f49502e72cdef72896ca799e94ec07bd57ed7b7cfe29dd72ef257987e113d29ac0fadbfc94232004afb0d7b9c611f0abbd45615ffd17f56d57770cf077b688ecd08062aabaed5f5e60ce1afc99b5f1c887ee31965c31862f6de0b7f53a3c7302bf4ff052c782714a72e435be3b68fb1eeba4187c59c0374fa177cc4cfc8c230ff1fb7d1d67ffb08dec8e577f17ccebb3f37d09a239736444a382fd31d2654a30f3c967ec35a497d81f6c7d44d5e69677ed7be491d95facb99e0f6cd95739a79ab999cf665ea67c4e72eebb336ee60abd2c82d7aad9e7bc7a3d82d7f8667f8c653aa27b58f9ae2f3cae73be9737e61416c341f3e40d3acbe1ff7797ff0bae2660d26ff366596c5e4dad2a5de65df420c53930a0cdba7778eaab9a75a59f87b3bc0a48c71699e0b98e5ee1cf6db11d73cea4b7582e625e3331c5713db5c0fc3ef4b2851ee1b573ab8ffd9a3e9a97c89a6fef39a2b739a2a0f06dc1f3a6f8d75eb8716e92b4d2163f63cc0bf79515149e628cd6acf15db2f9f0b71cfe5ff3ac2e62d10c734b41347935dc9b61214f00bef3b1c59cc7732ddfbbdd3659abffb7b8fb356feb9a35fc88eac93556383bd841e4611607ebf3c67af262b8398cadc16efe385a8d67dd32db7efd31bfe7dadedc77f02b4b8ed570eefb945fb1f59bfccadbdc8cbea8e1debc8e1ddff50e49b1f25173633e68ae9d15c8d71ccc14f5bada772785ae5b2cc7741fbac02fef9835f92999f2dd39725b660b5c9206be6e94729d70ad9c202af7615f81e3196b9e75036333f2ec29c5aa55c23850d6933b27db6cf9c8f78e68df5dcd75f4466688bbb42ff2c70df655525cb76bcf31004655bce3735438c7209afb1407a635b8850403778c7df01c6f4eafa2db7ae443555c9788c1570dfe9f24ad35e353594f7d65dd6a579e1e1fdc74d6d964dbc16861dfb9222e7108804f0bcef8a5862d577937225f31ca2876521fd51bf407358bebf586ab7c2ee4e7925c369cfb466d7cd7d6c68328de9938875fcedb12cd9810c60f51ebf0dbdc8c1d62ed203e27199739784f70887a2d3e51636687bd6928369c1481ccd1cb4c1bad43c6625a3b967efc016e00c49df10118fcdaca6bf489ac192f953130c6c81330c612e39503ebfe88db8463eeb026e8788c41d518f06af8c01426bbeda3d6eee7e1f0bc47a0d7f608e4669693bf5607cc65d0b97d2df4eef2ff3677d9f15dbf6ab9b9d03bfa4ccf5e910f7dea277dfe815edb8f72002daf297ac306e987bc8aec7f2bf449eb0f6ae901c96f81b9f20ad841854fbf732866421fb5f4b61e7b19ddd14c5bb26dab146ab6e7df431fd3ea5a8ea2bdb65bfc8e6fd976503ecd92fdbdaef7beae17ce8ebdf0a4e3384f048eb8cd97453486ec1e3fe739a3e3ff5194b5bff7d1471ff93b53febbb1aea4b7c84edb7369cf7327b2f4936dfece586f6779cfe5ef0cff0ad7143e62add8b8be47d90ff7f3cdcc0c731237dafa659dceee1cdc57b08ac9565feb8b6c4e3acc3fd30bfe3b1cb47078fbefc1b1fea9df7b35b0b0deebafe6bc5ff35ccfd2fa68d7c2f7adc2bcd5f5f5a34f7da5ebb3becef55b9d4c36fe33bf678c864fdc03eeefbb6a53b2fa74ade76bfd4d2feb8debe96936f9bf8607f5377c863c37dfd22a28c6e49be67a932ac1d2653ca4d9819eab8fdcfef4f8ff4c470f8c138ebc9bfc163c496ff775ad1779cad8beafcccfb4fab2201f61c8fdcb413499996fc04f121e2ddf8eb80ed7391ebb78b83e1f44e7b73df0ff479c69fabd60bbd136e48c7a5cdf8dc807f7f6063d16135f470f8c33ec2624a35610cd35f639ed3953773243fdf0f187a138527be8dbe67b059c5c654d813b3c7991fbb637c09c4a66e0898ed0370b5c1333ccf99e81afcbe998410a7e298a3f796e6e6c71ee6b6cf9ae7f98badecd368464fe9eb77a877348b2fa612cf851ffda751f64f2810f02bfd797e72dd8123df27daec9cdecf49d34d7d2d32ff8fb8a3926e71f6dfb2dbfbd252f3a1d4eeac9acfb92cebac57c3689e6b36a93dae3bb7e7dc75f392a742d9c1e6e7ad64b3f679ce8a2cccd5a59be9beeb8a72bed0611bdefb5eff139c73e23373ce60872606486d31ef0362f72076ded3f37177d0001f49197c3cfdda4dda9bb99190b33252f177e2f623c3ded75c5df7dc17e1e8ffe3063c272bc099c768e33fd03fc94e30c700f98f5dc6fe0eda4074f45aee7f8aedf62c9beb28de063e8478a2fbc06f93257efcd4cefb9bf04383df669be37417e43667aa13ff95c072fecab3046743b63634ad2bddc736598c7a2d6657ee0e3e0dae8fa692d214f93d68e739c513e9f2d7ec49c741e14f92e38c709e273f2c956d03ea7ae27b8ea63be6f2a77968579b9314ef5e7df46ff3d3ecc690dd8c8f5a0d76df442fec0023e2dc9cc409ebbbfd733cd3d466ba71b4c1d47fade485f5682dbb40b986ba8739a254f80516cfa4e17f53bdcffc14bd0eadb3ecba79e89bc3eb6f8c6242b0e6a7ead1c618e6406ec72e0ad5fceabb39c6e5e8f3230cbf73c038ff3ae167d650751267ef1409b355de3e625a06b9059f210736073ba0790c980d6dc26ad4c9c3b6417deec3f492b03bec2c9aba91dcb7733e14cf3045bd5abf1fe46ec17d2df91e5fc77c8d20db8dd9fc2356bf5dc4fe481fcb2f36749fa43cf0ef049a7ae4ff2c071533128188780e22bb50fe16b78223bacb724af80dc9de833e82d9e03dff8da4e5bfd84da04f26451e28703d2df29f41666f6ea5e77ea96f43fe99ee68dfe3aea4d25f26e189fa10ffe82b758688f8c7910083e561091ce4a6fac87afca6cf3f0ba7cbcd72b2e622fe89eb73a8ae213e827bbd56dc8874edb3cf9cd3ec8e7b0aa071a98db1c977b2d4e06cfdacc34780a8e9c09c801939e9a68ee49dcb0df80da41b9d365eec06e97b9fd77edbb469c99bc08165f57e472a6a3916f3ae9b9ed9e9932aff4734afe5287ec8ef1801d519dfdbec277ecd67fe16d5ab5df1b77db6d86f18f3a478c11ac95134e89d8819dc639982228da7a4ddc7e0f6b6f59dc361f483a3ab627f5c2ea3edf7381179c5775cf62ee53f01fbdf5979f75cdb316e43ba3877bd7fadde45bf37b85f7e6f987a1189feb763eef4b7a63d127fb4d9ff5c9c2bfdeb5bef6db99d5f18e633a9cd731b63ce63e905f13aee93779bd639e2cff845ff8389f0dfee72e236f64a4e3bbab37fdd06dcf363d47e9876e9fe9450ff4db9a28e2a035c503bf45ded037ab87b7cd3e9fc775be7b6bec9eac16c3cd7e7ec76a788f5ddf68e407b53b7a15de1f7016ff9cfb7b8c3e1bcc6bfc2bee6fec13b3684ee4623ead0e675e1514bd03c72f787dfb3bef40baa903deeac2ac78df381f9911808fa7f4ec80fd629e295a6970fd938fb17d7f4e82cb5f2d5c9c7bcee7aec1f5a7852350af9d4630f62bdf7d78733ff818c0c1ef86f4bbb55383339439e02ae1b8b3849bae0a506706a7461dce0e8afb90e8d8936bd7b393ebe1fbc57350ce0997c2e9f09c9797d331e9553fea9dbcdfe13e628e644cfe2cfd0f7e3ade3ee01a4491a1ef378ce61a3d9fe849d26ae132af92660ead86f9c3743b636769cc11a6cdf7b61e6581cbaec318634a8ea32af0344d55d59e8fdf472eb962eeb3d3797edfa2765260a606bae0ecbc1ff5d9797bb95c478eff3937cddbc9475a2bf5e9fb827c549a8753928583dc0375760ffec67db92d46d82cb7f7f8e0addfcefc6c880b128af38c65d0c77ccc5f5549e175a6ee7216c639f9a85fa288fc17af3ae54cc0470739c4f3a67d6dcfe5f5f4fc059f86eb162263be3b78d15b4ddbd8af3dcadcc00aa2419b0f641f9862532baf966b8a8dfd0a3d1d7dd63fba763a91eb35e08689f34a6f0f95f4fe7516aeb7237f5c6a2b5dc4d43562eaea147f0e902769f3389237e9de286b3fe6c364b4980d9ee7775c9977b90f8ae7def5f29439f01a2317f2e5048567272c6f8cb9b0761c1d1f840b45f8fc3127973749e175afcf1aa14fef15bd65b0316975c15b5207450ede9210732b698eefd7e4f7904f8759bc23572db6a1cf6ce0df388bc132110f9a6c9814cbc168453273f7a92fb986c9773df5c8bcc1893bdf06deaf896fde7cefd87373b62d475decf7f466ce7f820531f1cd00b9026b597837f6116c76e96cb989b65f556c27077c6798947719b9c45fc7b3e2599c28df1bb7dc857d478553d50d8abc465fb73b22ff54d62d6225b20f95cf73c28eeea45538bbfaec1bd23f8b96cf688ddada199ec300386a3a5a619e44f2fddc6f5a3b07d253745c701ecd0e8def1a9f3149d29cf61bb9f13e7475ae554ec73fe2a41de37592c9daa9cc6db866ac6312b3491f47c5d3bddff096fdcf3ea3bf90d3b4531b75f72dd9b55e9dd6c2d34d3aa5f0655e005c61f5afe34d5d9da1b58228793df55021bf899a92065f7bd661fe44604a7439b7a02df0e235317814915b5a3b9889d0d1a010fe5cbbad8981ef1873c41b5717e009433c69103f216f8b7ca8dee84a4f796e827c45c4948f8c85813a253e1bc38e232febb6394d70f25acc2356eec0f75f08de12ad8bc2e757e47ccbbdae7b4e50e45deeed753abebb5991bf876b6a315efaaafd9fd72730537ab979fcc4dabafb7457ea599bd9477eddefe8c5fd5e2a876bbc7a6f20cf275d6b78a6bd5eb06c59533739e9e55b9ff3d6fcb5787c789d3f4e36636b53a75675c7e3bab4c16f3905dfd673e875a04927d8411173cf5c74c254642e6b7f079c0ae8a2b209a26cafdda5d4744633bdd51dfe2dd78cde7016de36ff37caac3f7406fa3db7feedf66bdafb7026e357711daeea04d44368cd6614d74b3ffb467a7b367e88de9c0c7538ae4f67b48e05d373e3639e7acaf325c0513ff101bc04e8875cbedcb8ee753aeb96996556d9f08e15f10fc548d4f3d9e07fc6b3c93d267abb6e2d8a33b49d32872c7030de61a13974ac201aad42e033f572ed7a3b7abf2c4685593b82b1e455643b43e099793b2df96cdf7d38ce129a063527ba3f9d208a73f398d66943be1cb0986c9e91d4b9a9952dd8d0ce93fbe6b8dd20da588cdb91ee357ea7c46f245be0c1776ccf19b574c647b30ce668cf31e04c7b7e322786f3cbf9fcc8ff8b77dc53a8192bb0a6df67e43f54ba56b6ef2e6faa7145c364f5d4196d16b3afd6dd27bcac73f528be7504f70bdccca6efd8c0c18ad03f7f30c0488c19e72adab821c5e478feb9622e76bd0fa331f78bd89829144c07bfc518748c473e420f782da6c818cf71dd7328c60fbfa58cd3c8f175032e63ae81603f1ccb0313c9665ee7e543d8472ce30445d9ca6943be25ad0fbd766cf64be3bd8e283e29196b31c22caca5b787e3cce93842bd4d611696aed51db7bcee0799a1145fc8b318637adc72d51f18df2bed0a6e622eb88956509435e373e15570fe482606a7f94837ddeb46336e610dce7ad2d38a79d3817551f15ffbff986717808d43ef975f58d71bd213320781de321b7952d4749c03e36b78169f63ca3885a5ae740dfc408beb77b41fe1ada6f3b47f90bfd7c53da1b5b7d5a869321e5aca5877e83fec5978ff9c4a2da154c2afe398be53f135a516f986383e7e33979a5b6cf18cfffc95712c99f77b1ce5a825e2f90ae624c72d23d141be60f0711d10f87051ccf88e243337dbaaee1d73fb72c66eddabc74dca3d61f01f8fef2bfdac55508c1d5effa73f3c53ee21dbe9e821421d9df947b0bfdb72add58fc576b7997b66b59825f53f8a03606b7e645bf3dafa736fefa569f759e9cd3bae7d75c1b5df04c5e8eab34a25aebde6f7a547f9f26af9bcf89e88ef1a4df87a9f47f29d5656aec8d0ed358086f9f0fd16a34005450a1da4dd92f4bc656ade36757dc61ac00cc4f97c83b29605f93fc668cc4721d72a314a6f1fba659b73a0ef485e3fe7fe17b7e4fd713f4e037fa63133f3abfef3bff4cf7df8559afc73f2d307e9677c74db77376d7da20aa6a2ff23f0aea9a9bbd1a6465edafa49ceb1fe158cfb7096ef0cfa89e35c470fc5d1f7eaab0ef7458d7766aa3a59d3be177ff11cafe12dbfc38d780dd55f0b6bd7fc291cda9c2b3deadb9720f2d527e4a2cbfb239bee7d3c97f63b7880e087676dcfaec3b8a497f32b52ff68fb58cfe75e309370c6132578003c5f26d811a799f93a29363c6766e5ea8c8faa1259be35ffa717d6d7ffc99afbacd9a51ca196f5016fd02ff2407ec42384de58a9f5ee8c97779362f9c21cfb23cc912d0beff0191d61fe4976fe1f11abfd07f8c1a017e62d9754fd7ead8ecef8e2bc1dcf6e6f4e6bbe643930cfe9adbe1e3ffbfbacf23bfc151d259718384e1079f5bf3907bc43effb912ff0cdf3677db2bd66072ee504f34b6f7e2b32f3293989eefc2bff1b7501f123272fad6f297ce2d6add89ad1f0eb5f4fb689977f6adde79f6fcb9d735d0f9b72e49b9d58a4d7976b75e1bb817f7616c6a2f3cf3978857bf4336bfbbeaedfe5637856a4761ccead736edcf4911bff494e5d77b84f729c0bb65ac1f9b3dce2fcff78676a6507d19267a591ab2d1b60144c7b95ee03efb2f25dcf96df2ae64518efb53b465d2288364dc8bd24ca774b607d91ac0147bc56c75a41fb77ab5c2c1f1feefafe522eea9ecd580713dfd8bc5e0d638c025f44b841c15f1e44dece304e6beb239ede47a306b5fba9d4ee319b943bd7fcc7e55a3978bee83702d7623788bc43fbd7d692523cfb31f416cf8bc4dd20ca77e137ddbecfc3be728015593b1dc6b000e610dee3f3db7a08ccd3cc0cbe7f9b6cb26d77b5f0be6ee7779ff2b21f688f9802af1b8dde6dae17578ccb8ffc5dadc109ead9bebbf2cdf0409f1d9edc4101db8239c9f3f9b949f3667eee1b666b2b631d3a419139e84169f2fc8c57a096599e2a3cc62fe77390fa0c776cf4a281a7048e4f8bfb373137cd3da2e88b53957e4e71be0be6ae167ec7735c5599a7fba6dfccd32d0be0965efceed2f7d1e7f65730cc063c2f51d0fa401da2c27c30d7cf2c53d2b5eb06f5d868f0a0dbf9a6f339a7c83bf86e729bef34db1493c7959a3f8ef6e9acbae33cbdc3c9860cdbc01b6b56aee93b0dd732b21c75f122b331f729beee094b5b319fb1ad5b9e0ad4dfb8569ad9c1d4118eb26cc7b23d12cc69d4206bd699e3332c5ff28fc111f17764cbe23e2c5e6317b39ecdc59ca86fe20330524d79003efed45dbdf70b9ff5b92f689d707fcf669cfbea46ce9fce5f8bedd7e2e9dbe8afc52c193f0dbfaa3f15973a291ebe445365938f10ce72157e4b5538cc77c65dcd74b1f9141e19e6a76aa78e5caf437e7f087e44ffdf8f59cd73112f41b4b2489f81c30ad8cfc040af815b8dde605f6a03c9cc58b983f989addae95ab5f2e440d7ae55877f935641019c4bc61fa91de667619c74fc9fe1bac6780f7f1435a5d14c472b5a47ce19b734bd76c0dbd2a7fdb4f87f6c4fc007b13eed3729cabd60743acc5bde1e5b1dbf73abace3fde6e165614ffecad49db3e57ddceaa35fdcd48e130ed13fc2b6369ab8cc4787b8a2d675afc50b070f19cbf298679d4ffe601e7ed30ef7c59779cb0360a272c7ef5705eb35c4b6366a679097d821ff227233a9213a4e18eb6e50781c0f353eb8b80cfa3938bf993631db6df67fdfd4b833f6651dae73f3b618fb38ab718b5e376e46fbc77a30745cc44ce046627e845833475da373b3761af2e18573dc8e9b71bb4dc936a9a982dba983d7badd96611b639c80fb616f186bea60d481ee319d6f1d14e60533dccce9549935e3179cf95e2d9e41de62cf01870e36e90cb300f874c0aadb31be418b5b071c3bf287f6a6f176b8afe0e019370b5a97ae97938ec43c0563c70ba7ea8471fa0bf30a2cf99aec5d4f4ddd7caf0bcced1cf45439bf679dde63802b36877bb4f03ad1c8274087823b03eb8662426dd11a666ed3d0dd80a756afc165da7230020f887c23e145bfd21fe2ef91c766ae0ef29f2c83d82275d8bfc10ca8c338037c2ccd332d75f84d780d8b87827b4c6007dfe80159ff1dc66a156eb102fdee359fffd8627f6dee1ac143d0dc8766c9fc8bf4bef7642d9ccb36722107c60918ef1883c1df9b867cbfd479db5f051eda8ef018774e3cc638ff2f5194b2eea91ddb28e685357c2f1db33efbeecffaead91e0847662ab9984cf41fdfd305ecfcb82358b60fe0938d8457363af2e81ee4b9612e8079662546c7fdf564e65b358c5b407acc977b3bd2d0539097ccfedece54b13f22f7a8bd5fa9c3f76ba9e18f83f33475c68d773872ab626ec4cb0deb622b6d34cff5f5dfea99dfa40bee98ea17732241913b3e6ce50ad8838c7d14ab71237ca7e0add4b9f44a56886d78bd488ea7b5cf8c43dae67b7c377f9bfbe92b27ad11e3b3ad6c32da3ff0ec4292c1927c5e5affe443a0dfb4e23e14cca91cd89790f9b29fce9ee8bf3beb42ebc46ef99e43f01381afa7c20cc4d1aeeb76ce14f650ece31bd9fc298eebf38f9d263b5a242e73feeae6e80360cdc6b9e96875dcd6976dd243d5fa02b0f9bc8d7d86db7a27cc02efbb12ab9971fa9834f7fee80bfb08df0d1ce8ace3a331f7997a5ab11f49f248fa700cac482d7c57b083d0a7bd760d605d64cd9bdca6bc57781f82f3b9cc591e339bf60f79c2dcf448c397e6fc5c77dc94bc2659ff921da3f5da62f2156283c5ee9ee3fa3d346f7b34b12d421eed0cd74fea448af9f6a11b2cba07dcffcc7c1e748c7193b5beaac873263eea3232fd76dbd16f95deef56ae497e651be43ff9b288e23c2892e2b8d6fa6ffdcdac796b93dff8aaebb73d85884ba73de01a33f7c8fc843bb049bb4feecd5c9dd7d7ceecde877411035ef8847f3f7ec2dc7081f8a9217dcbf2b062ffb0ef5821af3f9bd79fa78eebcf8d3f1d470af6d23ec4fc4026f18fa3c2e161d7faaa62972c5e8fbed8a5bcfe7b76a99dab432c2cba7dfc56cf27fa4d7c87d7776becc24ec047f6721dcd67a1977797c5ea85793e7a87a458013f271ce6b7e73cb69bcdd81e6dd2475e0777597f53a7777c77f24a71cf535f355c43407fc4e5363f1c1e6adf9df8461d3a783de750993add70cab8c06154e6baa4ef7aceaff4fa9a61be3337d6cc16f6fcc73cbef3b75fefc1ca738367675e82c830868395eff4f6629b225fc1cfb5caedc805eeec79ee969e615730cd81c71041675cc9d76ff34a7ae12ffb38489e1463eb3b36e2d8a9539bf800fd427a0aff2307967522c4b5e0c8b619f3d9ef441293032b9d67a1ec961310786fb25ffa2ee796d22eebe081d611ef0fba12b3513d2be2f9ab0a582c6e8a59a0c8f52cdf5dbdf25c106d9f33ef72347895399e7d78234f7cf48772fe7d0aaffc3fd01f1a810f817c2aafba8e31980a3e7ec2f35d8c07d74cdd951544c6371d60dc77f8731ca3c5993bc31e2c73e0c00dc847634ce81677ee849d38b0285ee45a5c8b6d271888dc8f5619c18b9eba9e7d9a3b178ce71bfdbee5a3f991aaee5fcbfbdcf9156c7163713e3d0186653855cc39cc1c4cf40c51cb37525312bcdbb39afce4a7dc25e8311ba4cdedbcb99d4e666d8a3b1ffbbbdc8f3af2b11f6777cb3c7c4cf7ba58fd5b9e25afc7acf997f3aee0e91ae7c6ca5552908d9d5b660a5e77f45fdc643b487f3e8e36f130f92b1bdef162dee3c560f6ac4bf195cceb3906f3755e1344197a0533cce33327b0a97bf61878c8790eecdefed9cc333003e63370603db7b8a04a5dc5248df32665d9829f24f966e87a33ccab659190cf2bfd6c063161e8ae569c07430dc2a273067777947c8918efadd2c0ae3ace31ed38ae3af25f44668afc852398573c93ceb158e3bb256d6be4372d2e56a56fcbb98529e4ea6e3b2e6c07f98ef4ecea34429c0bf931904370b3773e2787de5b39043f84a784bfd55aa2169adf5863ecae96dbcd73fa38d98cb7c976618feefae4724618bd7e3d3b28c655e4b6f834e9595dedd80b489f1f82220796c3679f47b44d9c3b8ff37bbc0f531e1cce49679c1f430f7896eb68f4ca980c796efa4e273cc5935610cd6fb2b5f170f03a7f9ca87b5de1f239f8b92e7fa50fdb3b6296b4f57670cf700c44360d78fa9ab94ee97ff6b78ae52a28e23aec3b1dcd9c34074dbe5ca4773cb74fbff59da0f0eb00dc76641fc13774ce5578ce6191b7fdff5c472877e15455baafba2dcf0e3029a78ea36ba9ef4d315b7cc629a58fff9fec702cdc7ae919e7cfa5ade6ef48bf99420d11765d1dbf7bc6071701dbaac8504f66ecc179f3fe18f4bd1879d470da7e6f23b8b11ee6a3f95ac81f383b4fbe8e2b73d1dae61cadc73da6c03cef75b80787b6cb7e1f7fec0cfb4139e93bf4425cf20925daf1dd9ccf0d35a8b8f54b2cf14b2c70979c7e9b9ff8a17e516f0e1e568bedd73a9d755693eda679f292ee7dcd7eb866edb3356b9faf59c1513bfb43cdc36e6b1e7183da7373ac1308074c38d4d27f416be6bc2eb86adaf75c47877f7aacb39fd7327c7775ab8ede2fecd16a311bf80b7bf4e3fbf6eb7e391cbcc656f23a9f1975f767de615a2b8a9349ffe0794d9d3a28909f6d802155ea2aec3b5588ba0cfaa83a41d1eba2ae53a3b7a51314cb06786a51ce7110b07c7dc64df3d033c3985adca3b337e417a33eac81b11414b11d143eb8014ded58da4e4977d982e7d0708f8d831c99e1d78af957c836a097a2428f20637a2a9915b58282b1e84c31ce43e03c013350650dce15b15978c47f4a555a3b8c9bd5776abcaee51e704d98cea563e83e1524a7e8956a9262bc3705730e9abe02de086de76b215b711b47da47727c97df0bf9455d3e56cb827cedb262beb374879e03b28545def6883a5c8b85fdb735660ee3bd817c91bea1cfe6cc873e04efd5de34a84dd621d7322ccc75615f246799604bc7fcdc1bcc7ee17b51e4a357d47727e43b542ce3fe5e2327ad8135366ec037e130ae5b9ac36ebb652e3c8135f66b613ef2c0bd45ff3deb0b31ac5be6fc6ce83ae30ed978ddce10f5ff91ebaced7f383c0d937a9e98cd629814f798ebb2c7d6273f39870f3e0307932dbefa3e841f3e665f9d9e5331717554a21f42fc810a33b4d3636f4f247e86f4dcf9fb70cafd49c89db9d91eb56060b1337f8a3cf306eb907cf129f0ecf7e056b0d34e50e85af01fc95e75d1e350c415fc52f4c5f90de6778bb192b940c8afe6fa8f2df13a1da7c3fd83e4dbe47bf41fe15c99cb1918432e66f0487fec4d811e9f1d7276cc0ba6429e27dd87ee64c6dc53b456f1c76b15f522fa4dde48ef7a83f992b5037e31d377ba3ccfe4cb8c97c7f8a1e83d61be64f855c598755b91ee347afe68fd0d5c53035b557ae94b9953c9d957ab1de77b895a287a56b4bb2a18e710c7abc957273da2b9bfb5c23ce55ad17e57e40fe826cddb5789c3e43bcee1c67ce2389d75ffcab6835d9a485fabfdf0327fbce7a0aef96c3c67a2eb65e1efc3c814cc43d763fcb388e436162c39d82e9bebdb4ecdb312b90a8aac110cdcbd6960676cf03fd6e04dee022394649574ad4b76a7a702b6a35213f7f17f52947bd3cc81e32bbd758ae343d8d92ee63130b7f16009a6e50ef6ab810e7142e68bec303f2972a215f70aa6bce621efc0fd941e7a1fba876344f46ed7e05e993a073d834d6dccbad7be0afec3d9dab1a5f7be761ce0fce13b635e93c75e6eeeffd58c2f5f490fd74eb833e8b816f394934ee955e386d64f4eb6fba0516b803e7158c7e93d6679a31ef426f068ef7af3f7e9cd4fe607926d522f879b229d55d17c566d52fbdef7f81ec7af6c98f7c8aba51f036b9b67e353c57a4470b2fbd01d7506b95016fbb8f01177f011b7649be21db022796ea6d68cabd1f6c80a3e2ff48bf87663f8b098792ec029297e6dda885f6b410ed977acd867f5059778e01af6d93bdcd388b8d5a158e118c33eb7dc81ec63f375a06658232e868f4ef246728edce2c1b4f9c43ee958f8cfec3bd3ab95b7fe35738e629e5ef3351d7d56c4daf0ab6157a15733c407bf4fa60f77597e2fcbea576559e66d0fe1f42399be88c1308745723c28cee4f92c56d167f26c3e2fcf8d078c693dc5fc7fd5f629f339730ddaac81e320f119c78ff01718b395e4b916196ce794f6bad16d0c063d6da2e50b78fc9ba4604e44b21790e7daf4c1a92af15aaf3aca767d21dba5b264e6e590d68e6d385e97b89afc515f62f174c733dbfede34889bbb1caf738c1d44ab17b2a921e7e76d83594bc1e7c0bdf1db783f0f65becc343ee380b49cfef49997e37c3ebde6ac4d398f07fbb9556deeb9c60f319f14e767b206fe1eebfedaf415660b8322ab177df65be8f90785df098a8d0b2e69f6313abeebe798d7acd917ca6a7c86f995a0c8790eb918bdf26ff32efb2c9e055fafd1ec83f1716d5df7dae3365913a3479f3181b37d18c53b3e1ff6595073475d26074f73c8bda20e1d93e748d27de8663bb3766a6d43d777793b7e833e0e9c17f7b2ee431758fe0d7cea5257bcfed0afa4d88fca640ec7cf6fec7f3e8ba7963fe6c3e461b15dbedeeb20efeb2066ab6beef9ecb17f3e756a702c506c534c1e80b553782d161ccf98466d8f176342b2de8df7ba9917a739a731c7347dd8129bb9c353c5b3f7cc190efea9a2448d73fc769feaca71308f6ec8272e35f60779c7bc2dfc179697ad3ab4fc02e07def43af02ef9a8e17921e6d208b5d9e915624dbfb3006264697fdf7389799e8a6ad09f167906970ae40d6b707fe2db82c68ddce99b3a246cd578e9b35b2a6f6a6310daf3fc5186eb5d3658e425ab3b21ed6ed1ad914cc8940b62fe7f5d5c7e70ef7d2f84d863c61c9dbf11b5983db03eb0fc6239718cbb3c6a859f935f7e4d1fa1ae31e61ce66ddfbb41db8ebfc8b5c45ddabc281e0f35c60354e5df38b78f0ab6b33225f225a6b53e4a83a0be65d445c1e418fa286ff2a3573dfcc0e4d50c4242fb7d696919b1acfaaf572a6eefef5bbb9a1916fb61fe17bceafce85e80fe642aee27b82736af2621e810950b73d063c17329a814fb4cf1cb8dc53096cb2ca007b2a768081553b8e290f98ef0fe3fcb6feeb560eacc16efe385a8db783e2e90fe101f88d781cb9f9886b787b051fef822ffbf8dc37a97d9405d111c0cf23dba50e5ddf352fcceb9437247fba786831a06646e58af4c993eb593c63a4ec0563a191cdd1e84bb20e3b5df7d493eb91ffa982e836ecba78b8fa6b39fceaa6b3ce26db0e86d9f6ebfe5e3f7a3f77c6b9d0d5ab11dea365e1557cdff53e8c56b3b3f9b1e30c0ff4caf96ce10947f10c7f4ee68380e5ebd567b340796b4796c5988efd6531857cd961925a5360d9917d19cd30070bdec71ef014ceecd3717628ab4fc739dff75177ad7b3563860e0ac6de63ecbc16f788e47feace2dc65a2479173c45e4cc7b8a6cdae7e5cffbbf649b8aa7c751b11826d764af389e733492cf4df7f182cb08be0b7da776eadbb1197bc0e7d251763927f9bbb9ff19672a5a6ae0269479f7fb1618411d89af2d8eaf95f8fc47bc3bc53c38c052ce5b2e45df8d2f78156f8b37513f577ff4bcede738da99c3aed2dfd2eed44d6666967793c2f8a81b7de833fd0226fa73ba037efd33e9af2cd7d1c32bf76bc8bc2ad9630bf3b0c84f86d14443568105703ed73aa6ef611696b6738faa639b29cfd5ea754ff0985adca84433561273be739d2e114e6570e29dcdefa287ecb67e78f1b9a2e1669d6d07f5f77b2ee3b23703780966789513ddf9457d545fe544275988bc9d19423ed86e1de7a829ceea75a6eeea55d74a7d2f4986e71fcb3073aca8a498fb37ceb0b2cee9981fdfb789d4ef260fa93de9fc39b50f3e06744f6b073fd53bd06ba6ae71f59a9e1de354fa6ef2e1330a87ba8db7abb7bc0baa3a8bc968cddb0bf2a9990f537afbd187a2f57176ed80cf4c997f2af68eadcd97637f9657adb2edf24fe911e163f0ec7c9b7ff90c267acbb35303539fd7ef21882697db6adf654c158ac5df3c6fd8129d6b7060810b67a6ed1fbbb04ff1127d9ff95264bfccb3f45e3e2a703a3ca7f5d41d00bb5f47e90eb8fe67fb44dcbe3d6eb338b7a373ad74ed8393167854b999e57552982f0bd239bc0f3f4cd286e5d0c87112ec3388c679f82dfd00736434d3d1c0d78f3f76b069c81d014ff788038fdcc154e6536aa7d6e5a1424e2bbeb9f7e0bd0c0fcc2e9d557f666fef203d907cfd5eb9d6906b96d7fc8d5c5f6efbb95cc739304fc00b7326d7e09f18bd885c930c2bfccf71e64e9fb8838cae7bb59ee5ce72adac29667bdfdbd2ef25f9e64b5f3ff27158fe9153bf3c5f15449e7576fc46b8274edb9ed3f6b8cd18b89b3dc62e642e94761d39742e67fb758268e5878fc7eb34a606af92c57c86b7f6ce52bc79c78abec009c3dcff079823bf87fbe8f9870991cff69aa0485eafdadaedc9d69eecf2ad79ad4d41cf731e0f9a7838b9e34dbc9f41a8a7eeea176b19a30ff0ae3ee228438dc30e2057bd7de8eaabf384537763e932a7efcd8cca2b3dd41ff39e3ea6d5f72dd9ccd14ff7f9843c3befcfcc7ebabf867598f175b4b13430b313b6b1f4ff16bd551d706bda297df6258aca3ca463b8032b8806a4a3aaef25781bfd9fe1fc2c513f9acc80431a31261fefc3bc04d1c0d2f66df104c97fb61dfcb8e76dafcc0b8277262910cfb798cd5c7f3930d78e2ffccb3caf2af55dc6f45a93ec669803310d663f6dc68946bee09051ace97a9c93927df1fe932f0bd6696d3da813449af3551c6bf0fb47cc1c76687f017f1ffb480acf7e7237167a8490d7fd0ff08e22773cf74d927620ab8577635d79b45ade71deafc8622618cee3bd46df40dc85dc3529f3c5d5cec10c81d7cf38b75365098e1770f931078157d5f0f6187d47069c3878dd69d275c3c3de908fb576ba14c370cfdbb8c50a07aeccd43596d9e68211367a219dbe409d6be433c626c985037cb160ea34017a3d72d2ed55504c2ccc4a339ebbf0ef188db531ed55cc3990bc068566ecf259bed7eee4153d8753f4a7729c223dde3a3e08df95bf0f8f3dd6e829aaa5ef4ee6c085cb1a38b283db7c82edc08eeeb89917be5f8b27f7499988066e88fee38cf467e3bb656ed63ccb0fddb2669bbc5cab0a3138d7ab807d289c181ddf9dd3713b8bbed370df67f2023cfdd961af1bb6d94f243bf2fd005c4e3e66f959271beea18b062f2c83a48f07645bbf481fade3bb9b5f5d4ff029f8de8c9d056c00c5db24a399c53eec84ce5309cfcaee464ce3e97c66364f8f0f2a1a7eddcfffccbafc676b1188194c8c3e889af3f9ecef315fd3e8f5c49d2fb9fcede184e7101f601f4d2dfb99f62c89637c6da78df8bc96c16cb556c8dfd4bda6cd2b8397accff3a3cc45a69aa47873cc2fcc17eb75afe2223e521ca5046b5155cbb56aa6ee6a463a533fa6d52772a45ddf65ceef29b0333cabcd5dd19afb8ecfbdc3933b078f2cd90560ea9f725937ead364b7b0e79b789b9493c7cd9f92cffcadbdc3c235d0e697a57f37ad80d5c9f194cd987f64a753914db291d9de3cea6e50f836d74de9fbde8e3e673f30038ebc6e4af487c0a794cf5b4e21cc62afe1b31e79c44c5f75822869def0d34e7b6ff869d91f1e4bcd350127adf07859bc2f7dc6cf671ae91768daf572be3ee4fd8edfdf98b3d97e55e9e36413460fde7cb6ace7b3a4195bc6becbdb1b79b35967a57be30e7450e416cf196e5ecd1a7dad1663bfa7c00cc2b63efc2b7e4ff6b806c65045be23f22f45ba03ee4e79a874bb1dfd2f29ecdef1f3296ffbbe05d698257daed638caf76184b8a9cb38b5bd838e746e06e4f3ceb5c4531dc6ea29f7ba98cc186f39eb0a575d0758f3e037295946dd64656ae7a081c7ceafdce3dc438fbd0f4ce3ac39bd72af33c5743c273c56c2cbd3653f74e3c20fa1b8a9201defb3bf49eb0def75ae0bf04936d26b6df19c1f30ee1ae13c5029ae35c7b51e71effa982fb66fac134e17f664b51c267a3e9bdfe732dec93ae9c87c6f22a3197f82e2ab816b30b79b03bb14b3c3f049d34af899721d0d5e30efbd65de6dcc39307732c74dd37626786c73fcd1233969a6f8fdb210ce039e25e538cbe679e594e766ddcdeb39b72ee369faf04f83693b2b1ce37824977aed28e4d6391f2133ad1ecf66700d47e225ccadb2cc168319e6a531939bdb01cfc756d29faf90832bc6161fc368533bb40f87f6fd9df9aac1ff9514035a830a3a1fbdf8c0813c2445bad7ee06dc8fc29b80b51746621f8ab2cad0b3437e46bc37aedeb5db9798f91a15baed91a73800989179c777335a875d6d33468899d2731c2bc692a4ed9f5a27d3a7d9f2e59e03bbcc3bc43c4b37753ae88399f6aa654131cb12580b063e4a6c31a72166df31c391359ab93c6a47314f4cb60f81f9cacf97799a68fd8c1df12dbaec5bc4fb301a34a84162366edcb08fe1747592567a881c3fe7bbdce4cb6956d7ab52cc79904fdebe02670f7e87660c80aee86ee611a5f3286285b505ee2c6fcfbe3b6a117b433e30adf5b61e4cfb7f4c81158535d6943b5ecf3ee23d9e87d112d3a6951c8b67dc1917c7c67deccb1a2e72e4708477ee803a163882b0fe6ae6a4f3195f73d6eed7130ebc5830046073f877b37c27ba89ce4bc9da568ce593d5bc9ea173d48d9cecd1d3b7442d87491ddb0f9b3f952fe77318fe71aee3bc4b7191d9a0d6a0b86728ddeb4674fbfa4cb7a3fe1073bf3ff8241847956566c0b1612b0325e9e0d2d2c07ac0abf8443eb08f0cf949c06c04e6c241d714b76d1abc5f931d2af310781165d7f47bed2b63f5d6f87e05ffe4f19cab5163ee49f795c4119a717b9b13666fc098bfc0f5659e1bd5bec7e7dfb76ac7dc6c890f9f67e691aeef328e1a5ef93aea23df96b5e8ab76fedc62bf0d3a5fb82c4a3b88262be06fd0b5cbabe02434e4c732aede4473fe1e7d5a2f66ea34e1e38f1de6cf585f39dad2b496e858c05bd08cffd280b3ae6ee378ce3f618ed98d19ff8173e95d9ec7f02adc27acdbbcc3d81ae0d862bc35f2e9625cb32576ce6afd59c4d1166352d173620e21e05f554fe03b076f58c74cf979a1ae0dff36dfeb68f2608071827d2ad177cce16801f7b2016e14f46c4abae040f2f5044c43ad16cc7f49babde2be11f0bceec80f0e3d0d7f1d7e11cfd8414f09fe9d9db69ccf7de1ec820fa431970dbecfd941f8fee839a4ece700c367795b0c67553fe6c3a4791a7ebdc76d9779827ecf5916ab57d486a27867befdd88553d599bac947f55975bd3e3bb95e9f9d5dafcfa277a9cc3b0970dd2796be910b26b627753adb3c3f7d9b6c16f7bacfbb7e36530257ff5aedee831eafab3383b3f0833a3b704ebdbc49c03796aa2797be9bd7cb62f2a237a9039ebd615ebffffc46bc527bd25ddcf957def1ad1bf898e5de14c92be7c49c8e794e77e8a1e71e76a5c1b3985be90953e8403e5f88593fc18b62ae740b3d7eb43fe457969a31cf32c48121f0a8816ddcbec21e31371e6a6bb5b630d36f099e62237858366c637cb0c1f94ef667e681138bf323783dee4bbb39ce65019b98e66c67972b706745c096e4d716c791fd6f67014c8e94e33cd93ff3d99e7c16cdf6ac0e8a396c6d088e4e60d008b64def4dbe3cab5b3e0a0f5c45272e22f233c07f84eddcff06de896b75718a3b5e61ebdc781792ddfe965a644f6fab771bfbe971523c7966b59825757aefef7f3f4f39049e7265d4017da95377839c84a97b6a4a71d52ff5207dc0b9b7fda80749eac7147b2af2ebfdbd890f8293eee7e081e57e1ff2f71df4a61deb43e04c86bff829d918ccc9f7f9ebeef75cd4f3909b4bf8d9314ed171ad07d1c067fdd5ea81de91a3ac950de4115ade33f8db9e3ae3443be98447e8a1ce8262866fe94e832790deb37c509ca7556e8b6c34ad6c30e6d6bf4b3626abb99aaf522b69ee7271e10f0b2fe3b849f786ec1dd67eca9cc96b609f1d31dd7d607894b98e1edc238f6d217fe7ff47a3e80dcfad1c436a65b56ef1dfd767f8effd33fcf7fe25fe7b7e86ff9e1ff1df171164a39bd6ccbf207d89c79e43e6bfd395e0063b8c4d4e3166afe2981ebd8cc0bb129e8653afa2d498175365fbee43c1b3e33ddeef057f41dc942d6f8123fbb7912f67aee72e7a1a6afe8d9ef27734b8ffb82e8e9ecd16dbd81d03ef107cd46bc1dfa2efc5e0a4c6b5728c3f469c1802b335e6b814f980db7a789361e2a087f76e532f7926b93e553b87d0237d0539a2675aa58cf9d6a0f681da9cd3c18c39b0a57ce47a83625c0705ed63a075d1db8791667e64f85d5e3700afb2628cd523a7c9b8969cd69728227f2e7784afae0227f4b714d8a28c5f9255ccc7eaef43d7309787f5410ff9f6a08268e2832b127c65ab42743e7c635a3b58bf5c53d91be0b00297cd420e76ea38660d7e06e4dd966b053c04df9dbc68c16d454e6398cbf9a1d79d7ced3a29cabd2e363a9c028fabbe1103387e1a26f562f6b5590e076afc98a8c59fd9bbf30979f518e7447c34c39877e81f405f6c477758c7a0be642d8b39fb8405727a8c9d51683b00b62ceb54e4059bbcc549e1fec16839d3d1e605f9fdfa88438dcf74036ca8867bc0460de292b5e279298aa7faaa9eba5ebd04ee9f298222ad8543a7122ef21c33344569fb6d4d027d62a5e02c825b9a74b3e5bb13602886a871401f3b1cfb804f5d45a8439a33bfe72cae79d46f38568d75d8877dc74a6ba93d3086702eba98dfaf1d35e55a8ac375c809f3ac168357e60ccef3107d99b1b5e83b0e5f8779017e3ef64ff7d7f8c07ae3efef38cfeaa3671579d7d9a102a63e7284a3178ef13cc65dac1d1b7df26bc7bed117fab19825afe9e34373d7f5976b273df5a497c841db922fb68f7134ad8be7d4021e09b0f8c67b5d4c60bf194388fb42a05f799bc3fd0f0f2bc37e10f2f86dbd0d5898c0825b7d615ed991cbfd223ce3737aefd5593366bf2cea9dffed4e7cfbaad203600576d88fc3fea4df7c55701dd0cf357c2df8523bf2a5b2a67d4f3e167cad86b190e06bb5eff1f92764aea6f3fd23f358dbdfe68f1fd08bd60067462d5cbdd3495a85c827ce5f02e63d6fbff36511f94d5064dc67548087b862ee8b7c079c6ef2478e78b2990ac055429f7b2d875ac3b61c78ac1dc6a5cc3b01f3de56b28f261c7a16e3c2a68ce92dbc6a21305b7dc1a6f1388f36154c7589317501fc599bfc14e1baac8ee7513b5dd3e4fb30a26b60fc42c64a24bfa467d1f5209721fbd1057c1145fe04e3d9fbe8c7e0be0afacea40980058d3e14851ace4c33e77bbfc7b8e7c0d44d51c322df8ef16c6360e21bf4b2947be608f4c917da6bfa2ef96faee0eb928e983aa8b9d3ba7e72c96e262bbd763aa887b5af82431e46f0c5ba06f1b56e31072dd843171cc382c1bb71d113e562dee960ea5eada7bdaeeffa87a0185bbebb0137b1703075c33e30b1317340763780cfc6cfdf34744d38eec1ac5bae9452385162f45f730c43b652b04b81a14bf2947602e17420b9c8c011413e2a30acbb06bd3ce0cde1798a889e3d3012e9f9c08fa0788b7bb348fef0be32b0854e2d76d4669f92ce9df463c61c04c05af5adac76143df790f9686a3c437a2682078b7eca5a6a80e095617c6223b8db618bbbbd06f79f600ed339425e6de10cb4188315754cc1d8f46bcedf8e9b16779bb1c57b0eeec9540936396df318af193895931564a2e15e4dbcca1a3151095f1c3cede4bb0ba78e411e9ab144d95f61fe2c966fba2f69272832c6cc6c3cdc5b03392c190b1932447e8943fa9eee752d3c820ec71f711baf3207a2708ff2f32ea596ee3501eb8a8afd3c5a7bb1123e1fc62c672c7de08a32d63fb8221a99afa218f738e3c5dc0ffeeeb806b9e71f7287f39018218cd21df0d1b7cc4144b2cbfd1ee096a804e3da01ff00748ce7b43d5cdca3ebe1becafaef300eb4c76bdac5fdee842d77376abff98eb17ec736fbba7a1f82b302b90dba564bb045a56f11b14e05fe41e8959cef5dfb9ee4fb31ad82a294dc58a9a4776d6f9af1e93be05f91e784fd52dc887d59c763a39f26e3fb8ff32adb739667d7f24bc55de6ae8cbbf25c2bc6cd863c306779417e44cef7abc89d533f0b30e99d506adc06bd3be233378c678fdf4c11c3d63c0f32168c6cf2e737ccf5118d5a5f9b9f2fe462bc3b7dafdc1df773d26f15c7b73cdb095f778ade274b38b773e6e3eaa9930c7adc73044c56f84f35f3ce6516eaf4d27774c48205967a0aff9fef532cdc197c8f0c64033250cbf93552a7710291db1072eb3959cde72d6bc0c21ab7181b167671ad5a3cde5d3b77c5320f7957a2738ed8cd1ccfc7cd127d8e09f35391bee2b9c08af99d3de8510dcce77125fadc36329be3f74f18bcba49593fe1f871a7e559d1c289c1dc2e2d5f86169e2ed20974bf73d1b3bee2638f95600eef4d14b718d66cef22d2efa47f4a60eb1a3c1bbd0f11a740cf75f4738a9ec94ff9847f68fcbef87d98a995cc30201e4e196bbce5bf68789dd1ff29dbf419e9748dbc2962f6333f2428c64e5a3b8ca1dc72a8d58ec35cb8d0b9b5ac35a54fdc1a82514ebe01f4ad425f12fc0c4fb87f449e989ba5d29ccfca9987253eea0aeead61dc7d3e67ac45ac195e73990d1d8cb501ffaf01b63a6c54067b8bfd1cedf2b8236b8c7cc81d627ef17979ddc7c2970b2e3ae7b8cef8b7b6d832c7d40e73d6ad3917c7bc0658e3adefcc9c03b099ad9ea375032edb5a38b1c4175c31a703fa7ae12b74d15f883c1ffb7aecc3801310f13ffc313e177a2e4dbbd60d74966e5a4e11f8b9d02fc0ed869e64d990fc1dfa40d18765f1f5b1ef60d01b15735f336c37fc23d847f8c3e899a67d654a8e23f8db3c3b0a3dc73ab5322d1e389d3b9e4bda205f3465ff4bf824440792cdf59a29c50dcd88f99d546e07c5a6687bc5e0a763beaf147d48fe1972e4eca790dfdaf07bf653c7a2ebc98f47bdb916ccefce09fb1bd767b12e663bcae7a573ddeae8063cc83be6ba929e74f457f3b315fb60c13ed0fae9b77add977bd4caac7f8ca5f8d964adad688e3d659017de17db697f273221cf13b25fa3ef3dda006b81efa1f42cd47866ad4de6fc30e2aa8cf18be91c1f35fe17ff50f8369c2eb0ce791683fc42cc941aa995b0bde9712f2f648dd6f8b8cb3dee4e17f6a4c9797f5873b9d81f2deb8f7ce85cf81e1dd61bac5fba78c53dcd99b307eb093d119df0d8af985bedbd64ee04e4c3d98e35e057b0be6f5597fb2abc3d73567aa73816df89850f459d7c11f1d50de25cdd3df98e31f0e043ac4bf623791fda49238e6dcd1adc3e6d9cea08cf641bdb9ed61befaf23726f237e6c3cfbf419cea3117ea05dcba3121eb929115334e10cdc30c0513cf291d1fa9d0a3f10af4d897dc9af1bf331bf69e6b974cb3646e9a688815a3e2de98f5cc337a842898d0caf61456b3c94f8fa1853814783d647ab4b1c70c805d0039b17cdfd2bb0f9cca712b731fd819f39e95ab15175fb4c532be0b8a3121f09beaac41f1df605794de8763d607dc4c28b5a3ae0558a780e847317e423791c3380c3aed5f1ecf7c1f76fe316dcbfd4869cb2bfc87121643896fc05c9c7a061bd933ac26566a5c83d90ac390de7d4c04d6aeb1af1672d7ebcc3e71837fc1ebde4552bb388899b94cf9dfca886e3cd1031f4bc615fceeb0a076b171cc3b553091f432db1b292f8b0168ea90ebfb61c3bba965c09dbec3e7873f8d858b7c86130f70df850a4ced36f9f438f7d8723979fcf9c3f53e15285de8bd9ff1d8257507803b5d42c39df233df715cf78e73297abad538cefb38fefc667ba9ce437de631e029c595c4b0be14bf498eb0f7a666c498ec0e159738f7d54d8c9166fa6d7f2d0b26fcb72af989f45b30ee79e5bf651a2b170cbd1f38e15eb1e8ac91573644297ebfa98b3c1fa3afa269c1fe03578ccaf899cdf885fca3e7164cdff540ca5ddbff493dfe752dffde633b55cf4b293efcbb8064aec6a9de2338a3bdb579987897a6dfea8cb33269247297597732c29d7bbe87b8dced1a3beee5969d3ce02f46ce68ad4b9a97bb6f86aec7ba14ec6dc87e00623bd8cdacf98e5db4d1ec2bee3187047f3abf4fe513cd000ef662d316e032e19c90996e0b636c5e0cd0c05db63c10269f1eddece5feca45ea116ae9fa39f15b87298c9f912a1e7ddcf8d77a81803226e67ff3ae8b177cd0378c65ceee3a7573e5f9debc8905fa3b8a637c67ec229cf5948cdeec0bd1eb1f4218df72173edb59c1db5e00f486e9aec77c67c37b5636bf412f56a1fe749cfcf3fa43c0bd7f296361c6b63ce82f345f067301ba4786e16b58e7a4136354a813b255c1507d4ef182f1bb681eb2764bbe737f65b6c76f347ffcfac87dc1eeb767c77203884f3997e647c4e1d9997932ccebf2c48efbb7a47be9ae6f522b2cddc8fcc33c7984b415176dfc8fdc5bae7b9e9147cc6fcca7321c245a6da1a34e3e4f49a202af3f011f6b8c68cd0b4d7e579e452f13e8eb325b6f09f2bf219cf7b9fc02f0219cc98bfb65676102d9bf67d3b0b74ae37649e2837f8fcb6b99064f8759fceaa1fcb6fe55deedecaddbfa7eeca7d06e4b334ac8b4a2533c336cf8ac5980fa3cf650674d7ce80320f97b1984b8b64dedfc9fb42f411fad1a57fa1e6d9eab299ba5eb3446ed7901e6c805502bf4d4bfe103119fb5c454efabfd21dc6e7054fcadab1f15dd2e70dd77ab85e56f277ed74875ef93e737f2585d77d029ed4b26873299cbfa1b81a7d0a8ecc1b1bf0fd82536be96bccb762ceaccb75005f6231e436b92faa8ffe72eeb35372ec596ec9fd44ee82b9339123e35ae0b4776b3eb24e67dd66befd5a2fee7d115770e35756108dfc708099166d045756309afdff9fbd2f6b4e156bdbfe4b4c76551f1a4183e55a948a183c8bb80b454d526fb4057efd57ebba6e1c12b3bbdbf4d3dffbeec7835d713b20c21aeee11aa8913b72a2abfa784b6a3b6e0fa25b021d2868cf3e73bf860eaf7e491df265aee0cbb7f94ebfa4b7c6d5f67c7be7d05cae7926265b98fbe2502b53434b5b63ef0d0e499184e05853ab103a65d1638afbd0fc55bc5fbfc571969b3d7bec6b733c4bb4895b637ff1db3c0eacd01f61eca8189ac3a502169cfade49b178d5ddd47eee58565268e81ddfa8e9357d9e8e36734bb82193fe3275deeff7fc93ff5a70181443ef0bdf980f1e4ae7fac3fdbfeecdf692726fec1d2c70fcb176d0c349fe4f9c6a3c7b479f1418a3c08d4d2e1043af58340812fad7c4b3f046cf990f636256cd9dd65ddfe53337a454e67e7de9c3f877794357b58b1de2cf96efd0032cd6de626595261e6ffeff43f8b9d77cb950b76d7ce05667de6fc7314a0e9286b6f9ace9db1e802b1d3731c984b53ed61a3d3d0d1c6a1da5d04ea2b6d1841cec809c3f62ed1b6f5778ae42672329821b7d01c94f9ab8a365ba2def3a6e9fb5b2ffd33c35ad3bf41c45dc1a27efc42e28f0219575400fc9e48751905bd0d95ab50fd4b85ea31661624e79af4baff759a88a07b346de9697615fd17fcca7b3d67d3c5c8c873af437880fa099ca5aa0fd8c78023a9216f5c91f5ef563bad341ee2d8ad16f7333977bb9b5585996892bcc73710c5cb665e29ae8919f1bc42347f7f0dc2bf0e4f104efb9fc9c899336cdf1eb8fc71ffb4b9c971e9b581be7f58ae37ef19cd973f5a389a147533dcd77377a774f915338bfefb25eb7b8eb307dc857aa76194d11d7ba1837ee1b6a7ecfe41cb8633f382c8a4513ef3acff463086fd4c49a3e4f17fbd9d3c8fa45f1f4dfd1916dfca4fea6b6c6754d86afb43506e024261ff0ede15e17eb5dd4b19c06dfae576d6f10a7393918692b84ae60836f4f7751a77deb9e5e65bdeefece45fac44737f700fa4a7aa288a784065a56338ecaa96947fd7f7b5024a2a1b436f710b1196a4ae67e16a9d471f50374902aaf15c5aae987e4f048dca4a5e06b1df9aef2a421089cb6af053f18118bec217739fa83b7cd39da67bd1b87bdc7cc219f73cddecfc41c6bdd3ad76f608d64c3318ada95d570af4a8dfe0bf0842ddde84561bc86d46e05970418207b100ba6daefbe5323d4bc3664be053e1362d0c31cb81d684a888fe8ba452c027829c062f15826bfbb4d6b2671fa0f8ba7d19d4b7fb9a639d4ad02f6ca3631a4b20ed43a07ce143c7507f7b908e9a739f6c0a956c546a10759b55df6c867a25906fdf62a9a40b3c1bcb6d7f5cc27ce8b9a53e00e034fdfb6b06e5d72a8f3136fbae150b7c9dfe929d11783078ac7fe745e52c373c26338873d7a22565ed26b003ab565ec87f49602ae1979f9418fadd6d80f1b9fc7bdaeda2d68b957264f4cf7f40acd72b5ceeb41b154dafc56bf6fc672656239e0886fcbe59fd2b57e9fbbc9faeeeb79a5af5da739b575473ed6b322cbc9d56d932bd0a1d664e80f73f187209f07eb6e6aa1974bdf95830ea83927dcb793864ca72dfe278a380ae025db0eb4b4b779a91cd5780be78db7b0685e1fb81f0f773286cc1ee061bf2e86d4e2bbade6f794ae37fbd4e9ee67bda44e9de4eea7fe2916864607f635fa2b0c1b4f10b397b9c4ece4bb331d5dea29d6eccba326336e57c029c05731680d0af1d65b713fd3ac1fd9e229578ba75ca9709f4d6c1dec357006c37de4777d62a7805fb2cdd889c87170423f28c5bfaa26763d64fcb032afcd1afde79689d598db874d2da792ef82f78f592fa327e45ff87ed4a35da959bbe4daea3aa526c3f6201ad8c19e5c89464f12fd624fae05ae0faedb6df99a19a7d5f374b4c91cbd99bfdcb5403f8e53f8d9743c5bbcbb9cb19f381a189500da3349a1f6187f2bcfa63fcddb0e6b1562f9e4fd6ccc36dae3e7e3fce23e0a1ea6147d668eed2405df8c1803d485a069a0a983550f8ab568d462aeb88d06c2e55c32df9be7e7989b1f6be417c0b3681f5ed7f2beac75e1cd434de9d6c579caef600f14df651f71487c8f77816d90631cbd494fc7b8b16fb6584d9ce572f68beacf7d4fbb76982bae81f69c398cc95f4255906f1df5f21afafde8c3e7f05037eb18fc78e287d7a89bc2132436b1dce31bb4965490bba83df97de7e67566a3edf9b675af237e8ad94d5c62f69f11d60af603b2061b7436573ecc9fd35a61b17796884fab76e8e5b686062cd6a44d5ac3476963f2aee4b73938c5c8075a47dcd1e73df6da7a25eb4bd6126f7d60f855e5b9f3d3b9799fd78f8bb509e7ff833575eccf9ff7c17c07bf51e06e4d8c964a4c6761bfbd88ef566d476a2ab95e59cde31d1fcf1aac0b727678c8c6ebc6470c7573600bcfd752fff3753fdd978b3d58aecf6dfa9989d39f2c9ccdcb73af7c9b39cb5fb3f7d74dbfd313c63d133d2c07fd0df4d5bc523072a596f1a9a9df0cbebf826633b04db98aa1d76e538348f4e9c7a24f3fb6ecacb2443b2e64ce893e71f20a7dcbc7370dff9c6d5ea9c7d41afb9c532a8697712d9e4ac06753ab3eb463604327cc5fe2ee3bce95da2c65c323401e8ebf37ea6171dcbcdf7d0eaeeba444f1c4664d2cad2ec64ca31f15a7f27728cf07727fccb8019ee8153db3755e498e41bf78f86dbf316ff1157d128a4421478c99d32ae8650715f93841836bb6643db4e9f38eba053d4181b73cc7ff5a6e061ce54997fda6f8c8578eba8f8d4f3eb0da52e27f043dc116eb00612e1812a90b88c74907384660c275bd98aae2e15d772c6b100f771a3a67996027c115b2e17361d60dac2f61c3332da97dafc0315555db1bc4ba663e075c6e2ebaf1aee8ab819b13f9eb1df387494d2f95a430e38e5c3233d6ac4a30fef08ea5ce007247c17ee25c0e831bd798e174b41ebe24f5f3b4b5c95cf54bc6d8dfc38207ae591306b17e85ae28fc052d7b4cef41c1aa751dbdcd5b26677cf6470ee39a345713e9e39a3c927b8cf5ec0736b18adfc22794c0bf619dc2fe544b5c551fcfd58507ff2df1fbc3ac375273472fb1c6acbbeff7bde7b3c6b17a32d75a1353ea3246803e52aca7ba97d749d1153dc23cff028b549fe39bce7b9261e7845bfdb135afadf7ba4ea6dac9eb45a15f4d6c033f2bd44b1b4edf9adadda8f3c34bada6af554aafac62b203c60af93a79c7e0208d2d8fda5fd0e1c2ebc31a1cd48a7ed879aee82151a715f0d0c4d6d613d10a6fc3fffad6b527eefd5ea44f1c7bbfe2daf3bdfc3eccd59a7c4ef00190df9bc7931c3d46709f26f4f8c0fe15d4590d6f2d173efcb1f0b34cec811e736035b1c78fadc9259766bc4abc93ee94957bf00cb0535be220b3aedc7c6f27dbdf97b3fbdaf179ed00169538635c7b97b9bc72f26ab1b2ea26af27567664729096e420a2739a967a9d5be7312b34d7a556a9e207fa3ef033f00033b9cda218ddecfd3a9c2eaae7a9b6e78f264ffd356b71df88135ad453ee17f4366bb37ed2414f417412665f730a56f0df69f4ab248ebca8ab88f655463dce58e58c11a1dde536355ad1eb55e068ad3c572569eb886d6970d1ab7685deae781145ecaf35da77f4916df4c13aa2cd01de7fbb15fadd5768e191c7437f59e63fd68071b4a5c796f5fdeb48ac0eb115a2bb4e2d98a3067b56077b938b9df4d9dbc7d7a8b192c963e87397e0b6c7471df7c69bea10fad02c8476377d9da127b63b6a775393fbe4293d3e79508b76b7e8744367c0fdf81eced9cdeb55dcd03ab7e817498d18f2a8ac32840ec049e7fec7da6a51fb1b5a6915bdb672d18f5953e3631a5883625d91b37af4d6aaa8e11aeeb5afdf81c728f2d651f3a308c01d8f26ca15ad80036b2ba2b118b7c92586e605b4dc38463be0ae53c3af089d39bdb05af4eec8e4dc1475159cafce6bc81a4edd7d175db49de88a38e2ad660da153a072e8e7d5435c0b6ad3c003c4164f809adea001b958454a5da8ed015ac2a2d5e8e15a8926c8d56b8573417d0058045c17e8a0a58ddec33e9a2a6aa2b0be5052cb02fd16ea549ee9dd51b320e0b9e05acfde1b2d9608f3b4d1d2309f5bd769cc73c1756cfcd5e01fc37b38e7f9e03ce47c1c687a632e86a2c3a5eca396604d1d62d16aa41e511cec8ee7465c90b94e3beade288b3e2a88f1ea41b116df69737dd31adc4feaa7c0372c8ac3c6a711fa44d43c82b64c4ded9aa3cf618b35bc4623a55d53b7c8ac278ad71fc7013ea079df211acbfb62f1e835c7b9319f993f8ec67337f955b19137c72211f628e404a5de7ed4223039435e3177c8ab4653466afbd5a0585b73684d41c7aa9522df80be9f2bbe04c293a75f91c4214ecc7a4c1dfa33b397d09717dccda0c95fa0a1442fdcc03dff8e619de33d1a381ef0afa195835a0bb8d0b3909e06c121f41fde51bf69b4e1575e4bf4ee818d628d3ff458f3a13727b126b96891d10754e1fb451786ebbc3d386a18ae1b4d308fc7a38e9e2a462a12bd6ef35d2975453cf93c6b84f1507eab19e723474f11fbd9a2a77080ff1eae73ea844dafb5c26f2d8f9a7fc5909e00584f33eaadc11b5eb9633fbc8d831a74ad3bf7f4c33ce9b45bd09f98e6d061498ac0061eed8935b9b11f5849b1f92d8ed33c9ac0fbedda9e6eee71392812e8580a8ec51efb0b67108b2623742786660d87270e7d3827f9313f1b7bd2d742fdba24966db8bff4cf3af7cd4942152fc8799ae66552045673de881ff99c3df6c3e3d893f18d73c679dc86937b30f15d3a65fe90dd31c91ff27a738f1431bf755288769da5e9a96cd6a3fca87d584fccfe2ada42263e96bd354ef11a75ddda2dd125159d356853d7a7351db9bf97227708c5e3333cade92bd110664d93e7567925348fcd9a8bef827e13e39e95576bf74d03133a36f161e0326711ef51c478f0b8b352ac59de816b5f58494fd836bf3582b622f495258e0a8fb11cea59d0f5cdf85be96b6bf2a87789a9ea41a15af4d5cb1a1d5597b137b4a85ce2ff82266ef5a266fd86171cf6018b759161097cbe2fb1236294216af9daef420b8fdaaccdb5cf448f31dc833f3a660ea2782fab41a37d676223c6b2ee49738f7a6da2f558b2b79fd9d058a4d6744bb4691b8dec5634c5f5ad50d3e15fea9d21161bd29ffba89d05bd5bd1a35d53579771b03390784d62436a05faa20d3eb6245e5e5347b7f197c7b512cce444958adad626f7a1c72c6a85d41bca1a2df0130e48f6d0ee125a70d00ee1df93f7efd022bf5117d499142d23737ed08c0ee93948ad3dc494c099435fc8c486939c1a2d01f4de447fc505f69db9347b73a2c762c63a34c1a1afc5784362016ac8634fcfedd4cccd187c3cbbd117435cc2dca51ad6c8956c7a89537b09be54bc1695c94f237fd2cce596787ad7a9c95ba189091f9283f87bd0c321ce997f6ce99f88fe903926789f38b77d64f255e8a7e7dea0085dbe2717adba50f4c894e8af4fe4f7617ee1bc33e4018cb9f5f8a4ff64e2305de7677eeae69a41ebbd92b965ab639c33f1442b9aba456313db40f30dba37e6778b2765cd983eb0e91d32cc81ef5e7935f29938435f96dac6d0a0f3184b357a7ad0a7b644931463403c28a587b6169c8caec5b36587b914078d6e934b4fb9a13710ad6ac6928dee2272681393eeb519cf453fd466ec00a3aa1cfa2beb257896e06964e7713063bd18e3ad251c727220a0b913a29610f9497df23280461ff3f17859501fda124d7825750bc99d71bffbf5b1b70cdd14ea44dd980775d2e9e8e59e035df1ab74f29d4e52eb1aeffcb963555f78f9d63fe108977f87231c5de79469b35f997919f9cdfe3fb9f4874b545317b243ea16d4576b58097a082eb1f7e67dfddfe6662d5e839f881804b1aa1f4a9d8bf97c56ab9c3535f8d04d55bc34b9d52e22ce8c7567629c5de2b147531527affa31a56f5ddc468f5277d3929a1c26f6bc75ecee36d9cb26789eb6dee6dbec5e7f3e1ebf6fcf7b89e0b41267366dfd3133e77989d52a05dfced82d38407fd5acf5fa4989efc6a4454d39b39e2e97d082ed782de8355377c0ec0d07fa4961cf8236a989e158b74b3dc680ddf7013d322ced2077a7ae20bd28c42b44115368f29238cd55ef8afe2cb556a18b8b7a2734b087a23d3ed99df446adbda6b757295e573cb731cedd1cd76a6adb88597a8a3103bd155adc7f33971a6be6b72f88cd64dc5103176be2f562b8437cee28d1da34bf37e31ec0b8915e0f35bca0ed68ecb5525c6368da4207591d7d0386650c9ca2891b12f2917a0770f5b489d1881f20ae243898eb65de179afd788ef8a389fbb887e07bcd5e4eed539b7b5740fe9e68ddb27609af8be6b71fc497c185c63170e8c073dacf88cb50af74353890b947adab4cc64953670ce161012dd36d5e0f0a13c3b1064a3f8a494ddf40ec938afaa766ccddb606cca6c9feb977f787bcc2bdcad524b7cff629894310ffc3f73446be39d947d4c06c34cd31c69b7ba48b99426c58e8f788357edb8cd554f048aa4ec5b364ed22fe8ce533e63b9d9ff2a2df07c05c7eec53b573fa1c2ddecdd886265d3169c57ed00a7d330fd7f98d3cbdcef374b79938fa8fb93bda64abfb78f9507fc8553c7a35f959ece758ebe035b886decc81b557fc459e297af696686b41cf94d8696814567a9ac3436e18a77be5b7e105c6bfd0a06c7c69dcb1ffd0687d9552e7ac4eb8eb61ae3b167adad1b8ed3da3dfc17a04e2deca73a209f222976b28fe8a1f9e78d55b79495cbcda47cccbcbd0d721d66fb3be9a757a9d97ac970deb53cd00eba0cd1e69ff95f8bacd3b6b00fd57f8e23a8ade052bf85255e486c1c32787c639fa15261f09f711f184368e09af9275aec98bb6877528187e33cfc0f782972bbd84db7944ed2b87383f3cae51eb602f145e4c0d265dfcb1f81dc5f2ddecdfe4aba1c642efa242e62bb0f28bc2e4265c9f453fbaf103200e5ef03daaf168a8439fb915fca4d07f6d9b6bfacdb19714e20b8afe2ef144c04cd6266f469e58b51b9dbe923e0d6a77cc09633caed9bf25ee9bfccee0543f7d52c73ae8007db836791063e873b3966f9ebf717dc9b6c9f2d9992d3377748f496f8d493bed7aeccf7c55815f5103e3d4c1e32af417a2f536f4c815973a0b3c5d87765204adbfa7fb95ef759c14472f287c863ad5c87bc00b690b9ff3d8e7120c70a301dc8786ce201e991cc7baadbfd2afccff9f83d1db7cbbd9cfeeb5f1e3f1272fc9bb198f661cce9e669bf9f6f7f5acfb717c065ee82f5f917f8227090fde8afea68135460d6f2371317adfd6a9f60a5f113b29c203389ee8e900eb229e94acd96878b1432b963193bf79177f384b6da11962532b047f8ff98a5e595652f45ff54b4a6f6e8e4f602d34bd583d5d351a70668f1ae1b8a8b36dd24a51c754c658ba577117ba968df6a59993cf3efa3df47733711c732d7b50248ebaf65bc8272d59070b3df194d9899f0ff0eccd7e4c6f37791eef49427d9b1e5167f1a41fe6bda4fa45b1c3dfd123823f521ac3979f75fc78b287aebec963a787c6cbad1ed6eb7d04af80768bfa2bc33c1a379ae043f8444618039617fa2347c50fd2abc8595f1ed3ef1ff5f5a23f55457fa9e0334d7d71e0b9a6e8b70806c6ec9bd037f61645f7afbd17f552253e37133b3caffb622ded4b1d75f970f41ef0dbb8063fd6d09cc955bc599ef055c017974d5c203d73a941b473683857ed52d9a9f7eccf648f583bdc23147366f8cdb4edb1af8105309fd7a8a94fa476666290e030100fb9d3f7b64bd569d7c05c17939dde067648ff8052c5f061000657ea09e63c0fa8638cad166a61c209571de1d8429ff6a6f9e3a74ffdf16cdab2d2e9e11e577ce20aaa56e86f425d7966cddb114b66d62f78de78d03832b16c0ffd4f47afdaf6a230b92b7b79f4a1a57782591fd53437396e85d8b7e3d983664d3ded1587cbbda2597327e8ab7ff5d9c50ab513e1eca7ce204e96f4d3a44fccc97f1b1a530e3dd873f81813ab927ad2bbace825376c1ea3979ad11bb5a4676c70d2a1d898eb63ae9399af26ff4ef7e2df819a5fd469bbe227e7fdd85a1e7b700fec211e7d2942fab0c667c77d5167e720fd5cbe9e8b2fae2dbef7723efd183c3d687fa0f688cf458f8d07abda510f44d526a68a3ac7de4b1dfaa310b858ecc36dd6c0ad40f20f75d243f5f35c4de0e36bf2aa9c7d2e058cbc161d70a9f7993549720a6068a8174cef558f1cacbca646f4ccccdd2a2992579580db81faf98fb5596793ff1ff906d783a787e5f3ddafe3ca7a80f1565df05364fc5ecc8b15e24187bde0cbb9c4716cc62b7bb9c4d1379e3a4ba999e5c4f59c8d7f19e726066d718ee3fff2feacc1797d7c7f8cde0e31622dd603328f31183c048ef3fac3fcdb1de7d9d8baf8fe38ceb06ee8e0e030ce5b82db0cdc2ff3f79d0e72173e2098f3a93b88bbf49c2ab0879a3dcf4a2b60cff88ffe6d07f1b436ff8815ecd0ef30029e388406996052500b11af60681de862e9e8952758dd21b173c0a5c28fd7acc9af981fbdf3753cf38ebea2e8d112bb34f6170ef237aec396f4afc56b36439e086c3b6b029662fcef123b9036c7f54cdc62ce69024fb421eb3715bcdb6cd4138ab62d3e6df4372ef2bd8a057bdb7895d14790d707388ab4f1d1ac712d89636c71ddc6da666bd1fd35d7d2ec391a5a81f94e0b7f6cb1b2ea31b45a837d146f6ee369385d6b365dfc91bddcfd55aef8abbc23d61eb75bcf7e507e71ace2f9a95fa07ef1394f288ebfdfcc3739d7d4dd88f642e00e0af9dc4b5f9e1be27db7fb234073c85b14cb5bb561fdd9b4dca42f7df239efb5f0cb7ae4aa5da9eda1d4e051af778c3786e4d800a7a1df357b6826de6ba5588f05dbdce40cc43c1fe61df4fd6ce2ccda8ef40677e2e56e47f0adcc6c7282f057f23fd11bed1d76fcaeb64d8ff5636ff1401daa36feaf579e1741e3103ee397ef5b89b7a5c9a9569eab8929e25fc44be40346d3c3e9bcc627ce91f2cd9eb5369f2f587be33fee33b9e010d82f64df959c5289b5edc6bbfef29cc43b1ef816e47a5553733ff5663337f41fdec105c06ba9703ad2335e54ca3a8bc94daffd36f42df356e83ffc16c781cddf64f687e53b79536b6a54cafd399e237b4f35ef2fea8c9ed41b9b1e86dc23ea6bea782dbfd5ba3cced9ef4fe96f6a4527fffbc633dfbdb1a6e2cf7bc91235435b6fb297d95bea24f52fa925f3cdda8a32797892d67f13cfe38dfd65d1e8f2a98e45ad9862b83339ffa258bc92b7b928c85fca9c41dcbc6ed68e04981a153fbcb2deacaf62bab3ea12137ec476d327c266fd7182f7223e83f61c3e0fcef9d8dffcf5635bb97de41400efd7264f2916ff231f1ad70ed73125984bf47c9c1b7bf4fedcb10fe993ae874ef7fd79daaf7e656ef7f7e287bebcae5bb277965ae624c6f5e6b0c29cbb39d6313945db4da1398d1a563d28b28ada62c07c1eb47330e3d6874e9678928a566b0be3c1cc0b5b59c7589ef8569778ce49aea75770df31308a87e836edb860362ddf16dba4fa31b9f747bec27ae86b588bed198f7ce5397a72801733f8bc415eaa6eda1afbb342fa5bd0fb6e7845bad3b6a02bb16dea25e965bdc455d2031ecaba010f1d05dc898949ea640a3e40d5162c6fc34539ad65cf7ebff194df09b715b592dbe3f949aeb739b454d8ab591f79c3ff87fbcac1ece96199bd98fd3be9cc9d6ef58bea277cbf7f025eec49b79ef169b0d3e434d6f42aa717376baee012fc277b2bcdf83e8e07f64c9470c1cec74717be93d1635a0a87d93ee77b3ffbdd42e6502e73c8fc2d17e48a78297d80a516d58ce380789a1770bb0ed45c2717231ab7d983a9453711dce7eb9a64673d999ff3e2137035dcd00fb837987de3455dc328dbace706ade67dc8b16eeae198b5256ff83ce2872ede9c63cfceaae3fff3e3798eafe0a6f95b3ebcc7c46fe8993a1c5bd010df351ae2c0af3da9e6716e623ed9474d7c6c1eef9ac778fde90d7dd6689297fa29b5e7e677893e20fc4d59bfaba9579811f373eb9ef9a4df664e2b9e3d99f9ad3777bedd67ad407abe06d46a24b7eea409417c99dbe844341c2fddf14ae8c01501399da8ef65e447916be2f1fe29e4eef41b0df6ecdd649ed41b5de6fbd2375c799e720e167969c3bd8ab5327301befe495aa9696ee2341bde1ad47873e957727c7f817e113ce342f6b156ec5d48fe4c0dd3a93a9defe99c73e62ed005b638ef71ccdfe6c05e021366e9e060d64e8b9e74a37772e7ccb5d9a8a8233e1275002e17e3c1e4fd5c2b9a785fe4c8a5e8ca8a97fce48c87b781366d443e37ea11d4e1b3e4b7425f8fd89e23f77a28b863f210af68d696fc4cc0fa03e778c3bd010f8b5ab4d04c31bfd74ac75e2b8296e4da39e5fac44e8b378a99d7b5d4a7c9d364fe089edf4983fb4170e3c8a33c7208336a931067eb31cec8ebdb7043261e6e6db2f53d2efea28e5746d3bcc23c5cb5ab313496c56b6fdc769e4d3e3cc9ed04deed6d132f978ba21bea043e6c56e83f98d7dda418bd4a0fbf1efb8b297593ba667ed4d01c2874c1de04f0d1c45143f3d8c4818b69d433c7cdccfb804be238c45e5aa3ff4a4c267a9f832217bdd0e52bfaa47ebf9098c5ec110762ae95f41c92a5367b790c2f16fc959a177495c94bec1652cfa33e0f78a8d69ebd24e8c4904bc7be480dfd0572540fba6bf6e27ee3eb2d353b78d73bc0c76d9143d8633f28c10560ed0b9859995fae68dad48ba2fbaa9ed21278e129afb3725313d738e053de8689089e9ffa1bfebf550fb79bffb9f3003eee73470df8dbf506a95b5b3106ca4f75b095f99bd426c6416f7d7c8a79e8af8238e9ac16d60677366dd6de8ee82e818fdce83025f5e9ffeda32e93e83991af73fcbf75fcffe9fde67b26d0eb56bd83c907c08f1c98f9d553a5705d98efadccf598ecc967ed4ecd1e2d5820f319b3aef33c1063d3cb41f6bc42707216f3c094bf61ec09df39d88b3efb5eaf0fd04b34f31cf14207f3cde13ca21631b1d7e99efde040f8b623c57ef35107c419147dee3fd070848f7eebffd27db9a57739ea6daa59a31961f5ff489f463d337766d35fd3abe4f6da87599bc23215be7d338681f7f74ddc2a1a08e0100fc99766ff4ab4640293db1e86357141f0c88b95d9576ab356d097292cc7c4b055f042ae73c1cb64167bf8e87fb7a26960e24b5bf8d10d1ef6608e8fcf1529f137f0d30617c932eb4dc4715e9db4d54d3c1bb4c6fe083569d130c5fe448e056bf5eca50415fa339d36f276f5627251787f7b51a76d0da8c327bc337ad6115bdeae9e3bc058626fd32bcf897a0aba58d0e028dad6a967d76039968a9a8dedbd2ebef0f3dde63b659bfd6ee3282b77bee82f588322ad88050b5173c01a5128c116e42636c47ac13521f4626084918b435b06fe562fa9b9566e0c2e6f9e6b685baf5d13d7fc3373ee3ed7ee73ed9f9e6b790b7cd66269e25b0fd8fc1571331a7a0cc83bdde85151af8f9a357bbc3e3934de218eda5cf7867fee58755274c308fdb1d9179cfca199bfc44215ebbdf6fbc462fac811f997f17453ffaea2e070bc563fd6f0237985df4ee5b5b47528cd7d10efb096b6d3db7c5b83d15bb64df8ff17dd593ce9fb9ef7357ea7000fa76379c0dac679ae1fd396f8b599b5927387ba87e40cf9a3a92a1efe8dda6c65c6316ab3d44494da2c7829884b7557c66f132bc5f90ebeb231bcc15943fd931ae7a4ce58bb146d1a6a3e03c7ec9ce9eed9937a4dce1ebc86f13ee7c7d67205e7fb9fd33b6db0f3ebdc49d033ef3b37e2962ef3bd973bd6e1431fc432f7946334f7b8370552d786bf459514e1e1eff6179efd65c323b2b5cc097c8e38775bf819a71ede5fe38048dc74d4dff506f17017752c2bab2ee672a91edf24d7e8fe59ffc191f1074f1ecc9dc7abfd074ffa0feef17deedb2e1ab70f29b48a1aef0e8e67f92e9303d6a7ffb78ff38fe3fd72ae0d4eff3fbde7e94dce7516ea0dfcddabc53f9217e965b6c618dbfca2bdc16fd43f726ae8aebc83a2d7b74b9edeb00a7d133b050e7a3631c6017971e45938479ec5996f22715d5dd4e7d54beafdfdb964ee79f76fee3d4be6fd7e0e8faae8e94deb8aebf79f8cd7d8e4338d1780e868d79fd7ed24a6be163858f2bed96ff3789d53e7f93fd75f8bc1a5843efdbbe810d7cfe4c2c34f52f9d007b34d2ef40fc4527e7ae74a7c8ca13cf67e5333aee9d15c43fbc112df793326e079837eeb34dfa9b85b484e2abc20e83e9c6905b74b6a8bf44d2efdf7f68d29f2d9bf1b6779a281031f9388b9f15f8c9d26c7d849af7e163b65c7d849dee7d04bf83fbe67c083564dc5ff9c5eb425f5508272ecff03fb87dd5f3e4f4b377ddadcf38cbf9f67f8c2dfb0a8ef815e71ab892ba2c9c109fdf080fe0730a0ddf7666c1087a70487c77baeab536d352966c5b1164b1f7d0bde988fe84595fa4fd6e6491d94a2f15653e7edabb11d48afd8ec85789f19db8ec4292ef72cfd0f8eb33b0fe5727c0da129a027c0ecb8e43c4de85711af73d9eb5bb19fb256f4948263aa5ed2dda0489492b52e9aaaf2e83572cdf32249ed2f72cdda8ce701fda0ac45013fd9dfe6d4d53cd790aa8e359617855a67e31f72ea1735bda530874ff5ca72c7fe6c2ae76bff037bf87831fdafc20eff95f5a9664dc1c493cbeff88a4153899e229b777ad70fa54fd677d0f786967cf22e7ac0e6f3c49ea3a71648af07bd353ba4ff74457df33efd5bc6edc3d17f251eeee96501ef63f49bd823139d5e3ee78a5631b48e34eb7cdea0e882b7a58073e93bbae389279fda933f0c9ccb8eb5cc7ccfdfb226fe1475cb8c3ec4df1f8ff162dabfef9dff77f64eddd4befe3477aa8eb993f7d3dc697ccc9dbc53ee44dc20d63e27b7cdfe398f8175fcb3effd7e8d61851ac3eb204e8edffdfdbd5bdbe9cb62f9e38eaff8ecc7b7856fa2052ef9c53ebafe37f6f49fd48fa5b6e5fc599c984a0e346ccecbba1e27e6920365cdfbdc1f5bce31d67667affa29b57f6cd1ebfa17b0b978cd79ee58f6f1bbbfbf9e4fb26d779f391b6b64d6c85eb2bed7982fb1f666cf4d2bcbfa88878fc69e3dac87aca5f98afa9155bb8cc64d4d69a3f4aa5da9c7947530e8f3ca78f8d638ff57fa24173d0cfd94d63fb6c4c5ff5b18748e73f9ee7f709cdfc7f7f5f17d8df3f197c778c7b3172bd46aaa057bd6a5d48d5adf895d9a75f7afd67d75a739afd1cfebbec7faf0e2b739e373c62ee0531153f7afc42ee3b3d845befbfbb1cb6239efbddfe3f24f39e304e3173811d462e1a362f24678821cb14cab33ccd2aabda71627f27b1d8d3dcfe457d1e4e0867e583ffbe19eb5ca7c478e4390ab97d4616e96edf5f4007f0fe6a0e94e59aad41d688c57d4a7ca73fa3b82bbf79fc81b15e3743d55b17e551b9387401718bc8c6f8fb53b06ff839706f04ee0d9a862f30e3d8d293c6c9c41b16e357acde45704e0cc44e376eb1a0783b8f8ee3b5e87e710f052f4f3697add3c466b106f963c3e8e73d2b9187b96a29e470e4d8f043e143bfd98d6637fe90ce251c3a33fe374765f759292d372c2b81ebd656fdc8bab1f13fd3e9b76f7cfd3d6cb7d0fde7df4a6b04547a4d6eb83e4e0432b29165fea1c9c79d49df411a07bc0ff4befa912bc98a78f1a7c6a4f1deb09f41ba278b2133f848a58ebc026960dde4435d73578d9d647df35d4a1d616bd97e0c168a9179357e977e0dccc18a447ff4eb019d4ca273eb0e2fe29be572fd28bc3fe0ddf2f6b504013dc618d2fcc553c0bb50b0cc161b1b21c78f8c5a8fdd59a7b51d3933bf07c878247ec53e37b0a6d09787ce938a52f2c7bdc16f119dddfd81b84af9335f603d7c4ebd0db9ae476835555cdfa8abd23681d717a8c11e83b0b4dae10fc137877f8a9f0ebda0ef9507a698e876b56a8c617049f8dfcee6dfbff74f4b608b026bda52f89357b52f7fdff72ff7707455a87fe2284ff8ba56af27ae0c5daa2ff981967fd1a5e70e8010ff7aace72d429cc98ddaa8a3cb7760e0fe68abc5879df4e3f898fdccab2b167e339c4b015ea7e1dcf821fe10adccb0adc4bf88a2307f2181fe6ae7813d29f72e5e13d1a73b30dadb9dbd6df64fdfc3452734753036bdd7dff457589bf51db6ab0e63a8c1278f9d873b3fe9053efa849201e52b999ab8d067053efdd37f53055611d459c487c32fc85804966de11daa19f2346a0f7bc020755c7933c82cee6d07c7627af1fc483d7ac37a28b3794bd20dc47d4cbe23af9f28d1c103df7dcacfd9559af540c7dc052733fa8e8e1d0074727ea785ef4f8a651c733b1ce9af8e44111c28b127a81d40ab4851f2adefd618b7e45a249def10ef40b925869ecb9f0fcc5de42cc35fd15cd5a9b5569052e511d9187245a064113e3dc82afecce7a1b2beefd5efc176af4fcd55e860f4c0c7a48c89f4a72fd3785ead0df036b287c2ddba572958bbca79ee4ba82e6bae8864193a1d41dcb85ce824bbf4ac409f14318114369e9dea1167d266a9550c3d2ecd3750c9c948919828ab5a821d659ed27183bd2ffb218e70c2daead8b25628f42898e99f84ef70e7bf1a72ae9e18a7f35fc5e3a9ead6fd321c0789a6c7f5fde71899f7089b9ee41e7cb45af75051e067dc95fd252af73f8dea84e9b9e7a78ef9b78a53c98f758c2dd288105012779f43aa00f74255c13f3b7c51a6b203c79e84d5bc2936f357ad3f49d6d1f6260674d1e9ed5d4b9567b552cde35d72d9b6b5aa327b83eeadee98ef864c4d0bdb5c9ff98ec237ff6cab5498bf6a1168d20b3b764e87d2860c512eaf1f9137af0deb87ecd7b498198cfeabf3d3b93fbfa75b97eb5427ff10a0c357da05dac17c5f201dabe3eb413f9977bb9051ee7047da9ead9e414db43490fa4117cc6237afbd51ab9415025c5c8e42515f211fade796ad5b6c7fe5a34309afc023eb1b5421e9d7b3c0fd43b5bd10471a50dad0972705af046eac0fbf2403f25e0d91b6e2b3846ac250c1b4d09271ab7d1f3d7bddc1a14fde2985f119f502b601572fafd33976fd1e7cac433aaf167aaa81d3141fea227aad2cdf9d0ab497ad60bf4dbe01118430fc03ae68c9c6f15754142f198111df7aae18aa99d7255f3189a5ae47d1d35c905a325c75843e7ea15da21c0d9c0e3a37ac65c1f3176a8ac6aec0736fdb087e2239b519b12b9d89a181d604046a2939593ff0b6daf10da57d45f5ed7479fb65a51c3933c626fde417e500d8a94f92ffce0524f7400ccf32e35a4b1971ce8e11c00cf4cedf6e67bdba2cf1542934bbca32bea71b5eb1f8ccb2a15e4eedc4f73e5a63bb5cdad79c77206f18d3dee69b949dd51f53cbd6383bfc6068717d86075890d2e1b6cb0fa1bd8e0e8f15fc1ce4fa141bbf20e51077b12387bec73f4ff8c4b22bd92b5e07dd77984796f9ecbc9fd45cf4709b692fd7ae884c4c19fe2e62775e034c717ee41eb5a2ff2279860faed01d794bcaab88b7d555bb9fd636db9a16ff6ee913388fbef7ad5ae9f3b96b528fadf9d237aee3edc3926d7f417aff935ff447f51ada19de2fe27f417e1ed9ea4320e64fdc7dc38af917679ecce515f566aa5dd9baf831e9b583571ccde249e8de0d2a8e37a207ab2d0610496eadc7fe3e2f7c8e31d1f6b685410effc594732ab1a7d5bea4752ef16ebd2a5aee47f6e5e8c9fa7fa7f3267b95cdcfb3f1ffb3fecfdc4cb696462922deace96866773ba135f048b1a2ba1470f646887b8ac952b4f5e973a4f46ef7b793cf6f517dceea5680806a77ee5d6c4754b5f30ae0eb95fc3bd66ffdb3ce76675883e62445f4f0f5c72e83b2e96aae9255df4944c8e13eec819138f6af4c8e9cb4fde16b8be1ef3b77c6fe2c7b11f3849914a0d89cffd589b7901af746beceb29fae155bb54df1df75b3387faf08b5376da1afb9ba99e9af87119464fb25f6dffd7cead38757eff63d14baa7b8feca246e90e8a1c3d7313e3ffcc3ff7b9e3b95ab408e125e58f24df5be7c7bfccf76c6ae5774370b4e9eb0b1e9eeeb49d4111dacf1d13bb771fb4e489fa325facc5d7d71afb2617ea5f9f33c0b60c2bd66e99779839203961c9fa56488d3d7a377943f8c59979dcfc45ddc28c3f0f7952253daf0f7357b4ab9c2ff6c0facb3ee13fb427b2d6d1ffdfa441ac31df8b87503b0727445da6ff6ac6875e5937e2ca92f7d9545bd97653a4d3f2ae39fad3bd7074b57f4ddfd2be89c9aee531bf51732670ffe47df5590f7cc77b1dd2d73b460db1baea8feba6bba897ef948358ada49e4d5bf83dfdefc483e5c903bec10f59ac0dfd29de5395aa835ab715fac0775ae34b9fb5330f0475990b569e9d56ccedae61cf1a7c6734265e3f9ae42e35d442fc76fad5c9fa09fd80ac155217da228ea91fea8b6bd5c4fcb7ee75f626db2e36f3ad6eddf7b88b3d0ebaacd118f5b61a1c5fd488674ac54360737537953863b2d7f148c1fb167a87996bde8fdeb13f53116a87d0937559e3cb5cc48426be591f584337736703bd5d6bb10286dda2e6ee9a9e3255fbecfb53b3aedf76bf9f66f1c2fc76f3ff5ff17e77d36fd5a8796fa097fa7ed26bb7e855016d6613334fe04da1b7878a9e96e15e6a4f2d6011c41b88b54eea33520345d5f0f3c163f190f59bff27c5a0508ee831b606c4ce94f0ef7c4a5db33e1c6b56177baaba88999322b0bed0a42a13e812a11fb363ae827523d4dbab6bafa3e2d9ab8a1f043b9997832271343ca326c2b16be2a08769444c8f43add77c47bf7e6baf6b1cdbd56ee35ffdf0ed18c25c97e8115ad4f618f3a19deb97d47e869fda30bfd1cfa8973e696bb6fdfd8f7b8de9b38e09fc548a701fc59b57d454b68ab12ebd156bd40af138ad892d9b2955a08f71d0d37ca793b4647f60ed2ee05b98b087132fde85b3596b68a466e5a018bac4694043bb16ac8dcbfe09754bf95d436ac1514fd5e3da4aae932a360e300d260e81ae9dd78aa8676ed6da837253f35bae7880d00f77ccba33c7eaea1cf7219adfd08c30f9eb047ac8f440c98fff8f3a16bfa732f700de5fe8210c0a13f704ae798edeeac18d18ced92673476f8b6df7fd975cc7bfc3a1009f7331d53de8cab36fe46fb86f9ab1f8945a8362a1500b7d494bd5cb5db3e7ce7d6a5babf5a1a42e93595316d39bf7da6df9367396778ecbc7b80ade1ce9cec4441178450a5ed6ec897ce88508a704d883464f08dc95641a4dcde7db661ebd536f3c99aa78f38e589f5ed9d55c34811bad607a96248a38ff8d03ffcde981fe7ab7f5fdc374bab9cfc1cf3c26e75bda0d638bf94e819a4329dad27b7ae9ac519fa17e36f81596e479e4ff545ecbdc7bf1b07598b7cec228494d5e47bdf80af1913d802f73cabaa97cbef1d3c1b1f07d5d675024a17e023fb6101d5d57894723e3bf80f1fd4479cce532d1966a138bb56ab3be0b6d80a1c3dc20a797e45a957a055f467b500003e342dbd4e4a42b338efbbf51a76366f265879ebcb7e9eb8e7bddfdec71b34bef3a161f75754be1a701573a47cf56edf4d833399e8915a03b01bcdacab3f523e287773d9671e8c0cfa8193b0760f58f7e200fefc43811bff9138f8f6fc468196b79f00adf88ff49e30512365ab8a5da06acf5092705ded9bd03f0cd9abc3febc88731c74852c464f38eb5177ca8bcb72d5edd195e7f063684dedec7cf5efa9aee4e315adea2cf8ba2c78a9dc21b35f687e4f7adbc83e8fb02832371943b28107b5a6a7aee57835eb76dfe8dfd6cafb7c0e0ca3df9ccf561bc3a2ce717d7e4e7f7ce1c0f7a1f6eca1af1f66013d336d92bfaaf8b3f45fbc6586eb9ccb623377dea6feefbc8072e4ea76d62b83af4f55459796b588b77126a73133cd69db687deaf933b49b17c5755bb7ef6fb537a99be69f482ddd4bd8ef9187d85f970c7fe6d9ee7e3deefbb59d2df64bdee5bb669bc71ef78c08ff89ed00f1cd9a3cbb1bf74d42477f8b80fdf096572fc29b9c7aa68e7a813dbd735b7c7fee68b5e6c3fd4bdebf50ddd43adad7aa6d6b977f6d83c7fb58ef2636bedf4b87d401f739b3bb7f618c7bddfadd9f4701f13176322037eb1c16ca00f25388d41ace3a883e7ddd0ec092e70794d8f2a6f1e37780ee82332f6f316c522347bccd8ef3a2a4e5ee96f9c97d1635ab3a6be110fe5503086eb1d7cd6e2d16df7f671b64ceffda7cf5a35f1ac90faca815c4570a4113feb22dca949de1a14ca4b2b135b5ff8ae8b87007afd9ee0cbad67607437c5a008e91347bec13e02e711b51cfbb963b9f0cc29da0ee395903d50ea83890e6c5085f0da465d47f405d6f05740cc5784b99a9a1823a48f0ef8338df73b7a68d5a0482bf6caf286475188af80458cd3d09cd76e504c88399de6ae78f99077034c49285c9a09de87e34f72fcdeefe1ae75a8a75fd57847d7b02a256b7101f1bff0110c776a93da5fae8955bbc47754c0361f06316225271a43cbb16e1e877ebad32b13139aebbacecd635e637a8186fe8d79cd546f52b7bf49a7d67d4d3d1ebf6fc3f71b715ae2cca6ad3f66e63c2f63358f3dc6009a06aa326316780be21de20cf86e628c82927d090bdeb6e0c099d89858f57d049cb722bf991ce70a18ab22b7b24a3472c7c0dd5782bdf288ab6bb7f00f7e895e097c167cec46bfcde9b968e66e6b087e347d26f9171c22932f1f52ee01665d2c4d7ec65c6bedd0e704fd9a8adcd280631c7506259ca970af0aea0e33076f5bc3f3e3c16fe741e6c9a4456c31f2c01671f5013126934389dca56a57e41743d7b402f6f7a6bca05cfe9826556681ab7fc7207de6e9c35743c353e6500a07bc255c72e94328f1fd0497bd647fc03c0f3f44f49c74c773c19b1cb75bf38ed51a906bdf12df0297b59c8cbea0e443d037d4c4a566be54ed32460dcbab34bc5443e4aeaae82b55b58961a2f75b253e2da5f40ed91bac2ece4b71af34fbc8e87d80bc3e838fb4b20ee63dd6a068bb737f9deb0a1c139b9cbe449103aa72603dcc9e15aff97f39c76f8dc17b3cf3219e416de1afde278e29dc6b604d5dbe3f376b8e8bfc86f1d1bbaed03fb6074556c77e58863e754b7465b5443754c64b289e5bc18d3e3fe55bf694fc91adeef7f5e23815b4ad119fc28f9cf33d270f3a8787097c44b7c855abb1bfa08647bcf41b4e8a86e7d41abaca66fe9bb19014b350b9a9072db7786672907aec27d32377bba02e9cee1d7698d3669fdc628c99fdafc59819bd7027428c3b9a02df343e62e8d1ff1fc4ddd701396057b04aa9599b84fb32c4be1d75cc1ada78c082bbdbd2f86ed4d52a8ed500da0bf462052ed025d76ad378197d8c1fdd6bba4e8b95d532b1ac89210745eec8b9978c9df11d3bf14436d7d18247ee34df297ae28a66c7d002e70bba1e7d1fd738ce73e0bb57471d54f181cff6aa584eb593978b955745bdf3daa7f84faf3c4f4f0fe2d5d49daab8ff3a8817acfdc733c1be85079347b03eb0706ef48b85dec33ce89a39e83c3f8dee78ab4f782b722c3f62f64493ee336ee5bcae33f65a51e3356ed6e597d43a8d413cb7674d77dd0a7d68527ba77e9379ef156c22f3d58f7ad6d0693aab351dcf097910b558ad41b1947d7c48dd3168e9010394531707bee2c01429f6b384331a5a88a7114b9a5874f92e1c67f17e3371c5907eca9557b19e9ed25fdcec351dafbc517fa1199f6fd90b5fff3f91479dfa37d80bcd1c9d43b763b2d3495a4bbf6e1fc1b3fa5c2fb0d1c7b41a2dcc13c72d495b88e7e291a3b6071c8b7db8a015fbe29998a495da1e4cbe9eebce455f99dab94fa98905ecd80fcff6e8bf9bbffdf5fc30291e6eca9ba1b7312d1f16bd7bdefca16e5212a703edef9ff823e9af30d53579a3a329ead69b54f0d3667fee7eb53fd7d77b14da5193bc05ecf54b5afed89a1c25a8c77ec35f38d6ac5aecadc91ab83e54e428706d53b2e61d6b3c5bd4784eeb9bbffeb8de965c278553f822de1f416ee219b33e3ab7626364dc75eebce7cf7de8d04fa6caca6be25adaad4591841a1a0841e39b6a13af94efc48fcb5255db8da18f945223cbec2753ea2c987d07bd51ff369ebadc2b3f9dce7ecdfee4b730c3263ed421bc027bd48740fe3d06d6db0276bf973b69ddf06ce9e9aceb35f8518b95553f83ab74e4159918637ae4f4a2469e9fd75a0f21b093e63d39bc71880dd9703eaef31b7d25ca3f52a7fb3e74ba55e274ebe73b06f623be22d75325fac35ff88d365843d4371b0c5bb847afaa892d1a2dee9527fde8bcfee063daf896a2cf78c925f9a4d17d10bd597e4fc3f15f796e76d2fc6e3491ab01f42bdbe6377cd0fe6efa207ff61b139f9ae4c0acbb21b473b37c502c633d3e3e6f37daa4c31a3d168b3a052974daf0391ffaf925f51dd4a5f75b75a1efe01ebddf9cbfe3fd36faffeefd16fda90643e3fd36693cddec9f7bbfe5cdfbbc7fd5fbcdb9eafd56dfeafdd6ec2573a7e5cca6adb7d9b455cc126dcddd3bf6e5737dbbed42d3083ee27d47c5fa15bc875e6e2d8ad16bd4454c599bb522eab46bf8fd634fe88651376d3dfbfd6914e41e7c8f5d7806d826af65dcdae71ee2e425e2ca24759ffdae7323065672c7d1db7cbbd9cfeeb5e28bbdc3ac65f4b552d61c3839454ebe053f776293a7a8171fe061cfbf0d5ecd1e14a93307d68df97df408cd2537c2bccfe147a4c14d0accbaeb403b18eb7053bb83975a8b78c035f180456ee6b4a3d143b11cd622cc7a2ada7f2bcb020f7aec95833885f663447e84cd3acaa4457d8135f412a8f3a73c62b216ca3c17fa81c947a815d3600227d2ffe800c7e750032b85cfff396631c6f51ae2baf1f3a227781bb7a7199fd5f3b4f53ff775e6629da943bfff0e2efeb84ddd694bd9c4578625f11213d1cb33fb73bb32b9a3023ea04d0e2df472adbd668db815e11e662efb17fd50d1dfba14de6aa3c7b26bf45880df215f72a7a15dc6bf197b57c0f498ff4b1eeb905fd7f0d481f571a8db1a9463e4408bf701b120d633c6d1a4067ed51ce7362d49193fb3b76c9b04b3a78765f632dacda6ad3bb7e3734fd602df75e5d58239b135fc4c4c8c9451cbb6433c2dd693b8bd5785228edf1fee06857207c8592de8749bb86b58aff7aae03aa3c66d87fa7539b46fe991e639c0f0425f2235c77090338d3d5763bde23a79ec31acac9ab8b1601ff943f47fc1535b59d07a463fc27cd6c457c42859c37a088c0af1d5296a7ed47137399e59bb950b5f00aed7d06655d4e8aab8be05f0ad927e92f9fe126b25ce37b0f01e6abf7be0fae27a8957cb0a580afba85757873b6dd6f9a7b7dd2036d7262746da51d45a1d37da158177e433403bdec4aad0f93bf6c681ad8843a98fb65bc034fbe241c473a9d90357f4c3662fd9c6f941173e24e66385790d9d574dce9cf9ae1bf5b1998b8eb6e51fd97653dfb5b1af60e98afe321ab71b0dd5d6205ee767ff878fc58fb585b1c839962cc9d9458ec6d8a20226c28c35670e6d9570afe2cda7f799bff23a74f6a1fd5c841ee61835804d1eb6d7fee8f377ac2437653d63d7e06722ea645af45209ed41915b8d6ea560362ae62dc39a1a659fcf1fb807d445bc83de1e4ee7f79163dd3171efc33bbd3a8256e3d7a2c0c5c13ad1e814530faaf789e3bc3b7ef714bde19cbc1ffc8e461799bf036b82271c0a75eeaf5033ee6af08693fd672e7570103dd1f3df599af3a73e5350a7bccff8fdbcdfa7ffc3dfe45bf1fb6299d9dabaeb6fdfb501fe7d6d8010dae37a93dacffecce4a13b1327fe23da49b7d5281eb3edefc5eca9df9ab8a33fb2ed9dbff119abbf3ceb83373d76abe9b1c79ab861fa1d17fdfa8ce3793ec6cc7a9853e3b9ff4e7dbcacd1f6963866081d4965f250acd966bf484be24e3de1761133d0f84937bd12f63da0b75a42275cb0aaacab63bdaef4f400de377260f8347b8e727297df6b62c3c6ff09354389c126d40a704c0e3ff1e0b3e36f1ef01cd77dfee53c3e84fe28843ecc14f81ecbcc2dea07a4c0c5ffe43ad6d4450b25b742ffee88a9b9c0617f23d61af77eafb3dec64aef9c943fc7cf7fc49aac81f76b5dc7908cae6148a657355b5fe0c3902b60b846d0ddd78fe94e07c09a59cffe68aab7acfde9c7f45b7d9e3bffe8d7e51fc9fea5d2a7643f7becb7264e522db69b6276f7cfbeaccb826b00bca6a79cebf5577d1c0bc3bdf2dbdee96fc3db9eec75317be75fe4fd8e7e11ada3957750f091ef9fe334aab0434c85c4510d7eb23caef3b27f01bf161f3938de71ede87dec0d631dda11f70e9d7178779cf5ba4ef1d193bad04ebdd060a2e652e33bc87e60ef847b39e9af365a7f8d56d3d7fe77ec394003536a1eed1d7d8cd2d6204e77fa45358f85ff03bd4e271ab7c1156a1ee3f56fe12ecbb7f4a5bfcc5ed6f735ef93af90197bacb3e96298478cbb1cf1be32eb99b7288232ada15961c682d3f82da87a62f2cf9afdd170af6a72e423f6819917c5e63dd016b093c2c48ccd71acf3e3ec9ae3fca07e08b455a95b7aa9cf9d7dd026bdd4f6561fb4cabf3366ece5bc77df233fc743b3d741dc973d2b73589f19eef4d8b20771124bcdd0c23eb9ceed331d18c1a8ad774d2c8b7efd750cf9571c44ef6b0e227d4b9a31235ab7d88fc7f0c8a2e7e6b9066ea3ef0ebe26fccda0936b9fffa667bf2fe777fcac68e6eafa4233d7118dd395e7728d33d760b2d3e35b752118abc5d3dfcd5e5bdf7b0d9fb521a8a1d69f2a2bf7c0f5dfa4f5d81f392a5e32ce8237551f7df3e6b1da40b7b3fab1b6bcd00fdcb13fa33ef94b0a7cd5201e85faf459333e1083a38fcef798fdd513ed026a06001b69595f3d77fcec77c68133dbceee78c92bba3dc8c9cd1ee691bfb7f1557ce477548a5ebe2616c25e17fa3fd184708eb8a14a30457653ebd57effe8ff0cdfd295e7e91570fd3807d4018e3821f11a2ac2a6afbdd7f1e65d5716fa44e0b8d629ea1ce0c2485d5c937f2e78e290fb1e7a44cdebfddf62fae1bbec4965e001025f55ab5ca3ff94c4e8ed8b468a060e31cbe539579e7388cb82be8e1dfa8befe41ac3f4a9ff3f772fe9ab5a84b5595fcc7a845c7e9bd7268e82b665e792fb4e8eb4c4c52bcbf9b1b5f6260e1afbc101eb47e55567bcaabca933d02fffa89d767bbcd37d784d9ffabb747ad782bea259683f23de49ad39bcd586f4d00c0ea5866f65bba4d721fce942e5a6d5dc0fcd7dad4273ffb7c8f7a179a890e7843bbd491b9c670b7c8142bf925fa443d9afeaa4d8802b080ec037efadc9a5eff7f5e2be9afcc3ec09874191b5103b36fe0d88613378f9aa7808ec25f2d062d29a538bb0a2af5fe8a2865c01df69d674d110b3a81130f68885a8d8e32137d1e44499fcfb945b379cca0fbab426d7168db28e559a7d4434485cf38f3e79c4ad36b9f7337065d7f2f740f0bda10d2f4168947836e3f689cb5a848266eda0c8c847a3965b45bc2bb9eedf896526bdcd6f3fb6c13d96b9eef18b7e32b174c04009ffcfdcbb9992feff7bd421d64aaf551975c0f3903c3cb039ce1a9d8b376df6fd63de24da5883b85f33f6b9ec29509bf3e42b3037f97befaae7407d3a16ea56578ef52d7ed070deebdef7a23b4ff67f1f4fb6fbf0c7bc77afa95fc5264d0e75e8278e867fe084fb0fb5144ad5f15cdd812602d7b73825d667d56eb1878a5a61a936a9cd5c6ef4db9cb808e470d1f4b08fc43b177544f22fe8db827163c6c27a87ef436d30343916fc75b5d993eb11c61bbca3e0273cb1b01f4353d2bca7a9239acfdda6ff785cbb5c6d999cfd79aaef71d7e735cc3af257aff7bda1cf1e355a1c97bd7de79abec417eb9ff837522b7c10c38bc099fb79aec76d6f1027df8dababe769cbca9ce51fd91da7f8c97f2c0a9afa6fead073faac67eaa6ceb38f3e77a95e84d7b2b21a7dcf23cefbcc838c9e84136875dacffed2a14fa1e57e1727049db17813ea97d47a8697f8b7b8b2f16cfa5f85172a9e9ffa05b4e63e8f87e278ce715f5ed72d19d3a5daf0fbb04698f7545e757b3fb75dc57e469e61905be7faf36147e2a497b46c7c6dbfb1a6bc52f36701bc9f5ae7ad1f5be0336d7a796518ebe2516e0de2c94e3fa9e671aec756e31b6fd66cf378d73cc6ebdf8a4bf4ebf3d3c3e15e8bbbbae778cf1dab4ecc71aefbcd39aaf126fe4bbec7b3bfdc17025f1f5c97d16f31305fb9c9cd7fca11cdaae3ffcf39bf8d5ec9197ff7132f187cde790ceecb8eda786b6a6e4ef252db690bbedd2bf28c799ccdcf3dc99fd4a546caf8ecbc2ef9cb9f79d163ef5bfdafa4d7f59eef71f6274fa6a8896327ccff99070d2bf13070b0c6d0dfdd1efb819d143a8c9ed26aeca732f6644f866f9dc9c72cf1543239525761af7df957bcf29d41bc7c279f30df6993a33ebd69e13b3b7fc2738e1b3e33f5c1cc6f86bff7877199c4baf26ae8bbad9af7cdc0430ffd87ffecd8a70f6c79cd335fc5ddf03beb3de6cae6e16d7ed7f1fb9c87ae95273cc69cba04e6f1248fa6b2bed74373dfea46cf4efb41ae3be06fb4e47e5af49d81f69f433ddc3407bfa318ba8322b307454e3c30792025ebbca1c37f983367e32374c8ad572575f6a4061bc39314dc34f0d464ac51ff3a70894548a11f8de7f91d25795bc8ad4bf27547d45118b79b9a337df0997397e85d9ad8bac98d8ba01ec4d94e57964b5d91f55ed79f783625f9331fb80926a7ba71dc9a35fef9bf912b7efd9c71ecc94bf26e626f13cbcc9e669bf9f6f7f5ec5b71d559dcb3828ffb5ed5216b61a8a985de204e7711f9bacea40ef61aeb67064f3de5938fa10af69b556dd6cb8b7ec25ed7397a2318f763f4c32d3da6d6eca068bbc47685e4651623b326bb0a3d12f81a95e07816a342389f156a7fe3630fa5a4c663fabff9fbc8e9327b6c317258c358d6e0af826380f95ab2eeb42c242fdd2bce6feabe17c3ddd9b99197592be1a99ae73d871ad9ca051e60ec39e0b702ff69eecbac6ef8b2e8491e7fc7ec9ffa3e1b7840c406818def6eb4cbae7e6f4a3c29ae93c5eb046f488b7c54f3f891bc1f451c049f2f5268ebab3a83173bf00e97bfd351e77a6597f7b6a286e950d6d010be5ce0c102c3119013fbf2a6a13df0925ef7a2feb28edd0f4f35a2bf1bc3dacb7b5de8a317791bfb2e38a571ba57d0bc9e80330ddd5cf4219503ff27c4a961338ecc1cac8ef3d45f4e71ac29303b15b40b56262683a71fe6dfa068d7b14f9de6687a400e446d8c94fc6fb3ef22b70757db114e510d2eb8397ee5d9d4ab0d3dac19e6f9b1fc83c7b9591737efe27750aa24b5e7c4309bc7e58d7c4c9d3e3dd4c97451dc73f8e3f1c78b69b99131b4596c93fddc19ad3f8d51c67d825d466de7f4386e709c138be32bdc47c8a3808daaa2c9a10cfdb09e9bfca886d6494b8353af84b319ee753d39bddfbc5e11e78c3918c34f8dfa071dab545d55eacab3b9bea0b7fbdb1c5a6dd06876e84f95ee805d0466504fa31e34dd5e957b2b56d0decc7a1bd6209fcc5aa13777edf64feb4faeb7f94e77d3aff8b05fd50eabcb9ec5b9cf54f077f69469d4bbcaffd288aba1efd47f1dc4a3a986d64fbb840eb64bdcea6265d5637f49ccaa9bb2bef4cd31337f493a73e7f7bb36ce15dc978c8592ba1a16713ca80da8662f28d973c6fc3fd08f7472aebbc67e4421de89a23fac9bfa42a22ad65686e8bd032f160ff71a9cecf65e1513fcc3fbcd6393977524de02466462f62f7b68e2b871bb52c4f9d8e6b910dc5368d255d4eca16f4a739ee1d10769c25a277c5cd8af955aa27da10bc7fcaf263e48e5d44e6970b2f455a20736cf59fe329e462c3ae1354b52d475b8cf4e44ef819a2f6a05ded0819a5949d1cc1385d7bc2bd73e33f3d4627c9adaa76b9f9879462c133c69d03796df3239afd170fd5e793806bd823d7b011c54f22d4f4ecdfcdb4ee91d22750745dd2cc42aa193d0eba638e50d13f6bfa05181789df174e7f85bc1af1814217c34a1e1e5a6a843933386da1e72216ad800ef608e81ba1abd8fc3bdf6378e78b997a805d0c31dda95ecc10e718dd19725efc77c7f3d28daf4ec32e7b4494bb34fd2176bbda32f66803c83fd8e50ee3b7204973d40f35bbcfa74ee6fc76b659e97dafcf97bab0875b3c93ef2f5f7cff945ea28f038c8e03b24ba0c965ce78ab5bcf0468eadfd96397a33ef95cbf936f963f1a4ef7bf1977364887e1d6a0b7517beb518337ebf683ca17483a5afcd98828794a5a96d6c51032f70d20ade147b5584e29f36c4fa07dd8947681b51db6565c9eb297d79e8c15c6ae84789c7551120d7f8f85dc7f31a7b87669e36f84fd6c0f1799b38e0cc1a148b6220b904750b32733e3635ee980b47d00308593bf093a5894ba11362ee21b56bb0ee99b94efcf1925a0615f2ef1a7906f2e0c95e59d0d303b689f5fd6193737b666d3b7eaff9edcd398e3d57b41576f0c863bfcb1cdb425d517e3be6cef1b79fed3df570affc7caffde45d89f617ef8779dde456e18e7b036a02e0d3468f0a5a43da4fe9c3576cc43738cfe55eec30b7b9e79a18baa6e609ee45493f16cf82e697bfe67e5364a2076bee23cec535eba7862f33742310bb6b600158e7884c8ec81e9f87fa2bebbba81fc17fcc5cd362f3aa569e9756bce66187da2566bcf2bee8f7b3fb57888650095f15ec6dcdf759f89d3c2f73cdcd9ae31d8837c2712ddcc738818720bdc3bb57f1735975c2fc9df3008e1cb955bbfa81d8859e57a8e938076a7d99efefa9462bc91a146dac7991b937d0c81b827fc2b18d1e0dae3d5f1bbd8b378d1c2397bc99f7293a725e36ef03c118ea38a1c7a1791e7326dbc9ba5da176c4f155224662ae5f0f9aeb85e323d67219278cde391e388e5333efa00912343edaac158c3d68da00d38d6b4a4e8d427c02fd10e840b1fe90f1fea0e615bac01aa2c6ee55f84ed41946ef27bef5d04e593bacc41fee203e3af0c8166d4cea95883fbd021631945868c36b5864560a0cc1d0665f61d868e61cc00f6f7c80ccfb70ac7caffcac599f5a32972ac1c3c977e239ae5f983fa13728b0a6965c9fccf80c6bae01438f78f4acf1d42959d70c3caca52bdc9352bcd32ad406a1f363ae29b4ed5073e1efcb659e9b6b7a767fa01567413b54636d0d1d59032ddd835f9b68bb98736e8b6f5a3b975a4b39ef9c8d21ae4d66ed91753ed8c9fa5e458f6f3bf8899b391bcf96a21b83b88f79b9b9efed92fc4e6ae8a19ecdf735be4a07451f3f57ddaa1b34fd7d3f7bfa35f9e5477f911bf6783d6e7bcf7edf8982dcfeb1b5dcd07f0859d743fff842776001bccd95beb173b56fdc684b7df4c0029e8b3ce5ae338847afea091e52ee209efdcc1fcbf9c27fe36aaf3b293657bd3f88a9683b660da26e4bd7d1b7d5bc7e96e35ae6f7890747f8f78f7fca7143f06567afaa7898ea20af7e6ccd73c1b9c74778a36eaa9ebb0f9bd9bdfefd0917a99d2bf59f2d6a3c15b85e2bcf01b69df5c3520779a9ba696beccf0af683b1a7512f117a316d0b35a0bf8c5d1aeeb5bf140c427bafea64aa5df044a0d37b9a9ba779253cf84fbca4dbf92e935c6f731bbc6de4a56be8ef307f040fbf3ee7ea67f539c64ae51718abea1356f410faa3f3797e9aa34fea4ce70473fcb8d65ceae7dd3ae6676ff36df64bee03dfd44f2c8931e82afa93f6a7a8c3422b316c511fd38c65c422968963d2b1d78ae2d4e4f312e305d40da526a9e0234c6cb658725c300ed41de0290ff4f14a1b0e80058debdec166ed04f1d87250ac5b7a85ef116c83f0b019a300bff1e1f816b51d1edea1c78eda44e0de582bb0e78fa3b7ac576ea033785f2b3ffbaef40e56089de6b695141bd6c59ddc4ae80fed86fe57fbb93a8b212e31df677a453b05ac59fb02434eaea445ada3b358e0c237e463cc01edb607f0bcd53a77172bab9e638d1ee6589f5758975ce0cdaec41359757ebc4b3da60beee6d39bb91687eb5e26ea2216b9d4636a9fc754b7c5b84f493d7b4a76f73ec1158c0d7c03c55f7cd56efcda5af0eed8e69522a71b3dbf689a9307b76abbd2d3b1e6a281af5656bd2846e0806b27078f1c98af589be3ddbaceb4c04db86bfb7ec1bb5d7e1957c197077e5de2e725b505ae497c3c88f1d8e418dea0585ba1af1fc0cf8d8779f3975aa0f0a0dd2b7f36454fef2585fef6107d68f3b9e62ff699dabc16fa4109edc06dfeb3f796d2fb69e96e5a09e6fc67efe77b3bed525979853ea2199b2bef40fd3ab36f6e0a7a8ba3e7e092f3a08017cceae671db1dc4d020a989af348fade6315ebf6dbcb6968bede6e53e5ebfe4892b4d2fae838965e61dcf05264afc55a2dec1e11855b989bb06e6b5dbe2d96836ed56f134099e9ff432dd96f77cee0ad61875dce05029e29a6ae6251b757cedf10d5e17daac2fd0bf1b99fb271a430ab16fc4fa93a7a6263ea54e8ff2174a55edd6a0485b0bd4b7bbefbaf20ec419e7b5d96f50ff2dbaaf888b511fcfcb413c44ff0bbd13fa3508c659fcd2be35167e4d6edb776a5cd837e8fb7f1814937a61f209ccc19cbd13780387ec7114ddd741b1f6e88f7323cf70bb79797e1cbd3fffaa9e9cdfd05c0afde455c5a3f7419ce6d1536a418b6d9ddb8d2edb201e29356edbf0d12d829cb5e8a189d9ad4131645fb0d3ae9e51b7effe16435f2579d54fc0dfd40bd4fdc8fb3aafa984beae3ff91a9d742977ca39f39f475c1eb84971a38fdef6773d9b76df33eb777bdedbecef3a041fd7e43457264f149d0ce83a8263695193f1312df5ca2bb5033da62a29024bbcf430064278e074156a63d451617f6fecd5aa62ff57176983d540bf443f99587f013de7f358f25cd339218641518b42b11fb9f2e813313d94d1d8f3c437ada973405bee07b48acc38dc280d5f21d1861a7ba576dfc07d35dfadf89b4c7c30552fc813dd841a898efc5eb33fd8f42e499a1e7b8d5eefc7df741b2f3e9a5bf6269d9677bdca0feb925eb54bdd4d1b7ebb4b8fa4d01ac4c35c8f2d6b5104b8c7d0588afb53158f5ea94f3adc6bf8bc7835e2bb8e196fe0f878ec99aa5aee23ef31fafcf0bab117c526d4aec937e1d154b1974c2c0eea56668e8ce145487fab0abca30ad8c79557ce39167315aff7c45a88ff81df85d7a98ab33c9a1cecd0cfccb89eb24718b83fd6560b3a8baec96f021739ec06da9956e82fa69207f3f79e7c74a40fbf96df14d81f7fd38db9c41fc9637f397fd177fdccabfa99418b5e7f412b3e8f43c74d6c8afeb5c97f1dae3b81f4c9728faf07c23fc678ae92223cfc7dcee8d251d32f3d7be1411576047703ce0db040f486a4ce9aa31b1dcea34ea660ca9c3ff3e24dc58b77088fb6d00faceb5ebcb978f166cdfbcc38477e9e1439d6f548fae86a923b3fb61662f4419c282d3eec83626d0fc1710186a584eecd119f1ee66aab2c7270db7904cc64db637f8e9a70c49cb43d7060d99b6f4501fa449e686394513775c63ecee7d6d8c28a7b9b7ad14bd6bf7acde85b31ff89636a9d714cad13c794d857e1269bfcabceea6ca7e929e30ee2a03ef231e1491858677c4ce217818b4b5e194324d813b0773ca5e5a0c86cea159b39bb68de23badc4dde017f34871cd6b4024ea286f63af8a4ac5d1dfd6c5cc1d3dad458cfecb3d7c1b9d21333e71b1ff074af81dd333112bcbda1c595d5aac11453eb10b85b609981bba1e629750715f0d4698535a65ede345e27bd6ef57cc7557eea9ba8b8ffaad6a807516b0b7a00fd10316fe541c75dafbc9682e68dda47f1cce446a1c9796ebb0fc93a9d969de7e9ee9e937ed22af74af0827ac0bbb9c03e17cb077884f8e21542bcf241c14f34cdd1f3872f56b8d7d02a83b6ec2b6b3bdd77c1969663e8152d106b3da36e0dfca367e6e2d85f0b876e683127411c58d3b72ef7781ed0c86b45938687b0969a2f624ce13635f317e76ac613d63be242d137b5a4cf443d6360b746afbae35569e559c46887e4cbd2a7daa3d74a0afc1bb408579ef0f5c96938f94884d0c591750d712c3475c696fd6cd631d9eb23eca1e4bdb2674bcf68d12fe4ebc4797bc49603335021677755f318b93c70f4b5a2f70070b479cd1a9d59f38159002e1439d60a5846c11c02a3e8aacaaac6d403da6b7fb8d731f0bfd48901b67c9d333f33f3702498879cd87ed414c21d6b0a6df3defa18d7d097f520da42debc03ffb3aaf1d188806f4c3de80b504fda25369af113f1cf81c4d8e2278bef6dfc12d06b6a3c3658b7a8e00d5ddf147b771f36d98ba646c55abf655bfd7eaf55fcab71c421f4fb4bee01272ca4f8189543eab652e7210e73d4a9b14e895777459f55c6dbb98ddc71454c3ee792aa186764ec1d8ddb5c67fca4c69ad23173a14d5ebe9f3ce88ee7463e7943d1a91606bcd9b7c7d75d03e5f3b8da06f088152e412b840f0ab1355ccf90f338d47e485ba19fef75b1396a0ccb5e01dfe861dde80a8143603e5f526b38681e97e7feb4e2476bc653f5952f4b565d7ab9ffb47eea726cea8e57a771b657abb60b2d6af3dbc696438d58f046ea46df16c7814f758a758cfc84357c9235f9bb25b941698ed77b018ea92bd9f7fc60a757f0b3b9adf660c6a73bf2e74ecbcab6bfbf4fb6bfafefbef1d77896669cb5c1f5884c8cb4f26ae0228ba04e8181c418947a7b4a7c17629821731ae6f2269f3e901b68e28f26f720ff303263a65ee7e2db6eee3b755efd05f76cf44f03c431c49fe1afac8d8168144b3d997ab275338fc04dacbc9672026afb71be558265b7b5c3b82beaa0fe46dd0ab3be023bb62e1103f90b130fb6a2189a16fc8bf5119cf1affc8ba0e3f6d93bb8bd33b9da5fc1342166840e422e3ccd464721a907cd63704f93503b66beb70fd41ac35f99eb411e8dbdd6c2c4b196923522ab437003b21cb570ec3d19fa5ff0ee07872f77857be9c93a237e60f90ebefe8d975ebcf9ff81e51cce9eb435747edf2f1efb7fccef7defcf3dcf38718e7a98fee2c4f52117b4027787bc3ccecfdea1a25f6eb0d7fe9a18b522ab633f7006c51a5e0ce0bb802f3704470ebc79dcf3356a11e079f843d179812e88052e1538a8e4fa449d23e794dc80269f805f07f73ff1eb907a61404d1af4e3b34a346b3dea9f639eb3268d7a8cca5570f0580ba767d8f1980d47dacced495073af91fc06f332cfa1698cf5cbc4e59e1599b8bc32df2dfa37357205f6f1e993569a75243679441de451c77394c9e1c7e4b652ab1adc398bb95e203a38812b7c1bc11904d6d8d78edae6b86ec217aa237a54b866cf6bde479f8789c75aff3a6fbe0bfaaaa84b2d0bd5f89043032d64bd0ad7c1dc475d53f3db92faf2905efd8eb9ffd45be31ac8fb4f9d6ef6bca0c932966b01be586683b3059c2feb13f3b1e5857e5ffc5266afea25756edc9fdfe6eb513577dbbf647df31b18232ff49705b9e6aa149f22f8120de259aca1dd9f226ea24637b4f41cfa6ba566bfaaf15e93b7acac523dbded06668cf63efb1664f589c3981ef391a01c987deff14d43bbe011b50d8b9edeb7f5cc27bd72993abf2676e51ff01c29c573043a4caa6adb922ba0fe020ff758310775950bdfffdae4a456a9c065014e109e48aab25ce49f8cd75b83e23fae29389c3f26bbf4bf4d4ff0af718d10d7e98e894d0fd4a8422c1d54d46cc05ee331679f1c1f23370f0ee5512ba318bdf3b3a8e15323107a3978ae3efa28c4a325ea45661e377f9b78d4ec794f663ea32657aaca7335787d6bf233e0df019f25f98e87777813a18e35a40e66f39df29cc4ef85e8d441cfef742cccc5bd8af537aedfc4c41a396a2ddb83eccb82a76cf0961dd437a967023f3fea4b80332dd71afcd26950125b227b2aaf0bb5c2b607f072c905ce4fdf13a7d0270486907a151efe1dfb896dfb183f57e6b9d3f3e67ddc97792fa95fd82ed516b9b143de0bd6da837814221ee2de9f4bcdf4b61ee264db7d9b3f2e963f26ddf7d953ffd7cc77bbe977faee75e82f97f463246749a16631414dd8c48e267e0a7d550f8aa62fb0ce95a31aef9c83d94fa1ef0dee5f701814c983425f5a35ebec4130c2257d76c3bd7e4af77a4abf850130898ada40d38079323edf60cf91d3dac4914fbc2171de38ae2a541e3dbe69f49c37a9fb0c2d87e552af508f76a8374e5c3ac775122a175a56eeb9b6d65177eb4589063bf50bc24ea3cd7fe16d889a276a3d45db017f1ff9e601d81a058d83a13b68fcd7a8695151dfc06a72865da37980f7f8e08bdbd2afb49b9a8fe8101ca89b10f0316a036b8965d74ded12bf053a13387ed06a3055bac154c5a377e1aa97bad16daa8f7c7e9be7a41cc9654ad138b2f0db708ef099b3a84932813e81aea82f813e5021fcf546dfa4366b39354f86b1d48ee9e126b58c34bfa853602d33fbf4dafab1b64a3d6e0333a9c14fc01eee3c93c3b2bb1113364ea7f666befe2fd4fcfd6bbe15ced85f4ee1cf3a3d404b436d5287b5fb591875cdfcea3a5a786a783c811f31bc8965ff387e6eeccfccb13ccccf22cc959d56b189eb1e536f4c0e6fcdd8ddec9d594e1f5b13bbe77b552453d5f8259bdc7d0acf42e949c1a7d41a141378f347663f9f8097ecd2336516aaf8618af5697230b9e48d3da3fe72d14bc6b327b3ceffa23cdaad454d61faec8b7768465dfb1af14c25ff6ce4c22ba96d040747bc8e6b6056a57e69ee61043ffd1cba1b820d92cf53abb7a981dde89d51fd05bfa64a6d0f16f416e2d155dd43fd85ee21b0918fd050b5b403dcbc67629fc85f165c1fc3bd460d28e47500663b23a7c15caf22dca32f5c4c4a6a8864650c5d2293b78c426dd631b387f472b387d873b3cface1c97a635dbfbfc9dcd172f1d45fce5f467a366dd9bf648c737b4ddf1b08d745d5c81d3cc6ec791da31e060c809dc6e8437ad28ff48e1a38c83966c2af466dcdfbb135e33bf3a8b5d42da8858fbdab46adae084bf64ad1f7afa5d75372ac02d328dae7a94d8e4cca7c82fb26f015a8cd53eb7aa791dba02e5d1e3dc06378101ee84197595c1773eeaf9689e1336265fdc5fb397e9bbc50f416cab99f929b83397b8e59ec321e83f693c6e789531cdec6a1bb18a3c35f731dbdbdee5186fe268c9214b8796de57652f443e5a62e745c99d74abf45a14faad86faf07c5da4d8a90b89c2768e81f94a54ad1db202ebb835e3d35945678dc3ae2f04d1c3cb6ea45b144ef66512c435574a76a8b1e91cb1e56e30f65d9a13fba2d077b49f6436753a54e79c7637df4655fb5ab21b4bd72d1ea3d3e2ed50b30b89ec98bcfff012b85dab7c9d51e626856b25e89e3993d1df5cede35cfe56e7dd18fbad420c8cf7dea881b9ee492ef0bee0931be4d6dcab5608166ef03ae31d5a05076ec0716d798b6890d3cd11f32f19b275a1925fb27661f9d086e033ee62e7b27d99ebd1660bcdca8833ca3c5982f172daee15ec78ba98afb66eeb4cc5a3a87ce5f4e1fa1a9425f87395f404d3d1f5a34955e61bdf6e801881ee781f5bfa60f9b1207e7a6e56deb9d5e3e4fcbbbf6cad5b50e5aba53b50647d13c7e8dc849cd55a02a356e3c9150c737ef675d16f8a3766ef6d8d00fe0839e5556093c05f296d08c57e2c8267995428f4fd5663ef12fb9e68225dbeb5a17d87f8f3e1a217a84b2d652cba5408f8d6b2ef950e8e38b774e259a9b0e7019e29df327ef773ebddf3f6a411e146b1665e3dda4e83d5c423b973abd07d64c8159ae15f8ed99680c2da5ff295a8dd44fac443bb40646015a1ccdb8578dbe0d1faf2496f6897519347aa8789c0a4e3b60ff722ce719ab5c4df20a18c4a9121c435be69345bd65cc67726aa8293da40e227a34ed2f9fa7e6203ed7127c591d764c1e98df3c2717bde47ddedb5877dcdf671d306535fea89f7d2af575ef5bebba4f6572d5fb161a5b1daf154df37a5823e67498739ab8861eb84931dc47f106ef55f43b299a38e4e84d398637e55ef9dd57b55666bff3e88995132b1c87c4ff4bbde8ffb1f767cb8963d9fb307c4b1a33be3cc4486011ecad17d0803803294320c076b4516ab8fa2fd6b3b600dbb8ba4aaeeeffafdc1c38c08c42dac31a9e61831a246a0539f77e047bcaa9f5057922ed71fbbc9f37e0481e32573f2471755feb3ff0b906e0264d8bd0a07d1f7b38fdb958fbcd0d9edb334618d803f68ba4f732f774662d58675b5f3bae95211fc2f30d7cbd8d6e5c5ed566f76ffd56cf75dd43a29f3d169457027c0bdef8220cf039f0c7400d78f4160f0d6dd0bdc5f83ecee384f2323a63075a8e9d45839eb3d63d869a1a30ac09af87783ed5814fd801bf80bd0acf19a8b5d71d3670cada0d2ae64adb59ebaabab65b4d8b81f259140df7bcbd8a7960ab7eb1ba61ffce0cfd77723cdcf1d11f70465e2e82eca6f6e01a1abe197b47628f9e38f00402662c648c09de3f03a71fb13a6b2f9efca1664d83fce48f3bdd45af1405eb58733f400ac6fd8d5ea7c11e7e010130d4f2550ed15fac1993281446c6b27c1731bbc9f30fb10db43a283fa23102cf58c5c3f59c8e873b40cd4c8ec1db666f98636e5c6366df68370eb5e6d75ea338c75a389357aeed77b515e42a467285eb56bd933e75fb201bff6c56a1bedd8c6b77bd9c1c1273fe3b7dfa9e1ab75f58732bcf997b92312a0674e9580b8ef6d2571a6b32cc355a8b69fd14c7bccea0adfa00ec927c4c0cd6a5583d334e669f4b3737583b7665f4d45e0db2c7c961b59c63fedff3fff7f9bfa5a3e6acfc26a01dca79852e7796ba65ffcda8f0eab5937de20d17967e004d7e1b7e1dade0381d7d3f7078f876c71c1ce06468bd68347d5acc1467e7137cc251f165a25bbf4576eb79ed77bfd53ca8ebb1e2f3f63451ff47fdcf13f01f9d073ac57c1ee330585fbf5d38d1677e48da8503ee31e61f3917d6494dc495cd18837de93b9307b9b334d18679777be9ad86b9ecbb76c51333f94e7adcb44ed17a354a2ada4f3788c7bc66e14c62e0a9f702752cc1fe3d3afbe8e51a1e630fdb5c61436c8e61986fa478e735c7f3835c0e07f0a7910bcb9a165bde4f29c6079e137ba8a1bc851a8eff57b128265f1ac37261e9eabc14bf940faa08de8fe3d1cd719ca81ae7adf39a9cd7a8bc94d1fb79e21aea3d4d771cbd35ce992367af1db7ca0af0b52bf4d281e1f04adf1535f3f470ee5b3ed7e7738ffa00d7026639f003b4ae0c2d6bd68a528293c8e7fe7c7d55fea5ead015eb0fac3aee37d7070371523c2d5adb4e92b5fd4ea86300afbd553a46ccdb145cf733388e626f53594cd83f80bd01a0edb0703a8f13d64f605f128a3df65cbb281e3cc9b89152b45b7e3ff7541a681f2036cb3bbca8c931748278cd77b6ace90ebca950ba4ac94979428293237703eeb9ec066d56a047d82be68ec6a37fade29f7af6bfe845fc6f3eff333fe2b76b52c8fe29c1e899fb56db57d6d618d80b87f645a9fed7ec5f478dbd2682ec19bcabb0aa7de818096bd3f5d51696ee336ec0e45e1ee5a2b8ad16c0be1fc4e539ee9349d4fbc21cbc21604d698ef4eb9744e391b5bee3d5fe08aff6708557b399471d81778eeb13bb67ad9433a60d382670adea007dcdb9e18f5dd67661ae3b6bbc700d92b165674d18b7c98ad196f58a194b062f88f8cdfb4f62999c646319be4b6b09bd262dc5f9791c37fc20fc21384ccf94bb0903b93c727f3f10dd6bc16da0e7170efaaf3a7a3ecb2b1c73e783c7bacb75a7517ff6d05338667015e9378ddf9d93c0ad14aff1ea730635e578dcf7d9b7f0af2b30779acebb059e44ce610b6c20732ccc0b560d3e4f8c8783cf4ce7810ccf14604113f8eb76f920cdcd19e3088169a36b3a636e968abb3c9acb9d6756d3e1e9d20e43679d317467cf1fb7fb5eadc3ba09e3165e6ecf3a53f077a3c7e1a7af70a8caa3856b962df04b741f9ea8b4a74e7e6c02787736ec8f39e939cfa3263d8eee7ce18f5e6cb93c5627d5e7d6193b7ce50589793c71fc056b43a9d799dc1f4d29df65cdc571de887d55cbe1a0272767febc8a47da6a397136867e583d7ea318feefa937b0a74188daa3cdd8fb19f74f99bb8cd83c6de171d9b06e08eeebe801060f1e6baf453f36ec95895e386b3e232e53f5e3bc054694f66cd6e6b25833035816f5d9bcb651ac0bdd00e3cbbdef13ad5357daf6f999abaab4edbbdadf1b1ee89556fe34187d610eb8b930134379b028efef9cf357c60a29de0a6ae22df36413537159e8b1e76910d17b2d1f7dc990f596e0dbaf3ca41796c198a581a66acd3a7b0b26ea7e58ca2869178e4be783f5509ced5fe6bfaafcdb78c78355e7f7c20bbe5c0be60577d7e2cdb9efb4d97617ddb6be1e02d1e364bb3aae5e927bbcfdc1975a040fcfd340c6177e74daa8ebd7a28e8bde736eac875a1b15f39bfe538bb763e5dadfaa5e387395f3e54a8b26ef7c515ac639adb03e74bd475f61377c60866735fbee58963c24b50c734d795e5bbc3778561797abda83f1b916e0f6532dc069c13d4ed97a6abe8b133846e098c1bfcb505cd08239bbeafd8df24fa0e37b62bea11f2b3f065a9bc00140ff9ce211fbbdf689080ec053cbbff49ef9fbf754e0b1c36b5e616e809d61aee335bf510c073d354fe64d121fca7b8e7293cb5880373ad42c5aaf680cc8c7846277470ea12fa109f6eca7b8c5a65c81d6463fac0cd6d28f685f7c468fc6a8e83a7a2298bf72ef7d426ba9ce5cf5109a04f0d8042746747ed24af34e03de86f587bbff436b1acc4efe50d37eed35933f03586f8b6bc32e7b5a337eb5f30637142e45eb8e553ed2ba102acd4d954744c2628c8d6b9e5f473948439f9379f2407b5a6440df6737a8a262f52c9789b61e6a3ae7e661feef7432d3e6fc7f7e3e3ece7bde1e0bff8677afe9c7d9856eebf7ec87c65fd293a3ebbb83d787c5da8ae8512b6d45f8cc6bc0373b7cdf8fab52b6caf73acc6ba933ee957bfc3368c6b1cf2aae27ea743ec723b5403c1842f7402e06f47d06bc78d51ec16b3770da0de34a3caef3d3f1699857f55f9a57c5c333bc3ee1dd9ed80adba4b3feb03095de01f47c789de7b1c678c9ffdcf8dd30374f5f3819748ec563d213bb42ebb7ddae8e511319076d3d3e94b3486adf5967f50b6bbaa138b33ac6106b9c0ad6c449b85fbf531a7fc86d324f14137eddf285b5eba055e0e90bc7d5e0a111e7b4fed751e1b5017a18b4ee87c0ed0313186c7f04e8f7d33e11ddeafbb5677c0b705697bed785b7080f669db12679e98755eb395ebb563aefd0b408b602f3d8ecfabf69298348f843cb969c5f6b9ba1654c03e98860c0b978a0b4e815be1caf83778fea212c94fe11fb8869d342a8dc02f3dbe63d6a4539bce21e091c9f6c068c07c31cf274d61d0c3b4eb83e2d5c3d70bcdc1f5a6d54b8edda99c4fe42f1d55863c49451ffb9b05ece479ba7f9213d46d67a79e72abc9f038cf558c5fe386fb382d6eb4ca05f12a00f52fb435a978179a59893d6311aef4656f4e36f478f9397d4fdd9ace3ec5e27fb6fe781bb412d542f57324f48f3d1fb437cdb422763c85efbc851c06962bec23460ae42d8d23a71c54f7862acb73c0ae8b9701f0d7d3edb7392937c027ecef0a1a39740e785fb7ffb1373433dd675c5fd7e18b7e831fb1d19dbc32aae0fe97d4cddc8fd47057bdf83afd9ca1d7b9d4bf46a69cf4b915bfb61de885162b0cf54da709ebe3a73c76498b3f76063e97e0c4c99c718b659ae70c11eebe9ccfb79de299c9a30aa96f666c4990beef130ce03bfc316ac83dbc55b4a0b2a649dc585d2e62880c107060edff3283abf14face37de29d360fe23c0be9f5d634ece78e7b4b9680ad11edc690a4d193f7dea383a7287fa575f0d823e58947863d43aed6fabe5e4811ecf8e87f69be635fde700c532714e315abd80bf880bee9d282207f56ec692433b069aa5bb0e839be23a0b78470067d9701d2ae47af8c26a15a7af612d993d780fb4d62157464d6d60b3de894b6b9fce7ad9e82b9ab3d6adce9f17a87c079c3eabf59c0974d0ce5a3394273167447149809ba635d95c0f35f676617d0893de4ff3db0fe634777378b0ef2c4b1c05ffd6216b6780c3dda8fb1d4e63a8299e9580461cf33d5037a8455859dc1fa4f39819e027723fa611477a6e502b0ffc8ab9ad579c013cd7b3af661cca5538d9ded7f677d820e054564a3f7dcf7aa101726b8d75b6288e1bc52238783ed6e58e5324998fec1c0ae6946a1c0fa0efb2671f2bbaf6e815ac7e6cb0f7479e3f4a74f8a998bdd6aa654ab1ac56ff4e8c115fdbef5867fc8a8f13c55ca3a49d161e6b3e41cf5df990a366ed19bc2f798a4fce5a3d02fa8a9a059d8d1dd70ca1b7be0366c6e4bc2bc71ae343774d800f26833007561d315e7e52cf57ccfdec746da01559b11e036a2b8a4b21fbef95fdfb930df724693dddbe32b75df94eee81fb69a74568f35ae836aceb25aeb022b32660fe8aed51decacf5f71b267dc7f742642047bc68cc6d5952e99608c2973fa9b00f9fdacf67aea06c6c79fbf37e14f3d73f5eddd9ffd833e5aae343dc18de43d94bd1c9857747dadb8ce30557ac07e043f45e3d75e6b3de7f0dabd5fb0b7a9d227dfbfbb9649c97ea622a771b470a421e1c1004ed9e9dd67a83d3d3dbdfd8cb044ed04fbb78086ad3cc2afa9163bcde07179fd7ba06d6ff1dcea7e0fe6adc575a7dc0c1c173a5b6b67654c837ef9d16cf9508546a465e343b932e5c3e6f15e07f9c86dcb153739d536f0fea0352d6981352d26af53e806276dd25835b4b09817548a7606be9a0ce09b62711d6c66250babf5c113da9f316ba8992d2ce823026b3bd44ac1b152c97a8052d5d2acd61f8b93e2fa320e0abdf981f2e6a2fff17d9d7f5d9dd038842ecd59ebe434058f4d18ec1f92d6f8de9dca013b0db1a1d5ca31b4c8b4ab1cab121d360b9837a5fdcbb5be8ae23e093e3fed4fc2e2efa6b17bc6d3718d2fc8d43919f03969f07bc17f164e42e7a644df20ae4a680f9b4929189f66e15cb386707bd6fd07d72fac37c3ebcf84c6718d3d109834a143b38735c858ef17188b907ddd86cca110d0f6416d4bc75e51609fe4f3ca752e3e170534fa4b9ab3726869d34268ec8543cf79fc1d6da7b786f3ad6d8657d7a5e15c9b3180e9893f0fd752df9c7de79292c7ca763b2d66ac99d8e10c8716ebbb1955e9a3f66a69fed8e573d79efd17ba31f883f575c1c3ffe3fedf529cff57bd894bff42f1d5550fe374f9fff21ac6a00f6a69e44d5674bd7ff7cc1b8647a381bdb746df64d7e9324d62c5937ba3d5bb76dcea8a7f7c8e1bb262fe0c7da77d6e66858bd7653bad1f67dc1d55e9a3b8af7d6fd6be59ee8f732d2ac033d37e1de13bd8ac9db931854fe81cbd5d68068c732ddb69dac2e1c7c45033d4ebaedefbf02c1f93931ce7a7eeb169e056741de5087d610d58acdd405b3bf3f8fa75f00d7bfbdeeac363fdae7b931e7f9ab3e3a8586b87dfa9661fb23b46e8bdaf1be5f9ac45c4ba978a3b317905ee3818b04f1ffbf79981b32f256a66fd72fad972d26ccc6c98c4f25f8bf8e7ddd3f7233f8e72b79663c07de977deb943c4a336ad8f3e722ab7abcf98ac1346f991dbd3cff66a9edce7c7ad3aba077d54a3d22987049e32604f238aa1fc21c55ee0c2bdd15e939d87aa9637e231e9ab75fa903e4d7e67dafc7766d866b29cecbfe59cf91a97a4a2b1ffd67f63a46aa009c5a3d86fc453522b3ff3935c00ff81eb193858cf5ed5753cf9fdf8d1dd75a2d7bb1b33bb6ba5fd77b5d2ba3100ed037f5ca1eff495f5704eaf7769dedd31346fe71b733318d71f9e7a7a2c5ccf97e85e077bcfff1dd4725cc1a794cef397c6f1f1679319a366e51e7ea7df737fff0af6d1503eb2d514f8ad9c7d0a799d117ec791067798e260683c689231105f18f7abdfe953b64d8ff79adc47ccf55cd5f85daed586f09ae87cf035601150c3cf5e3916835eaeee87ec4d2dc695350dfa71b8557e2256f1ea1fc2d97dd3473237d077e535232ab2bf1f934473fbe2754ff1c057cef3621d67cfd93f63edbfca992927c85ec17f0b68ff4beabfbefefc9978cbd3d4397e1373f55a6ff4a8c21ef0cf38d7ffcdf51f79333403aed61b012d81bc8d0aaf5a3b93f82affb3805da7fc0fb9e1e4159a5f43cdf27aea46cc96b25d2fa596c4b6361f1f9a552cbf6f9ffc6b7c1c8db51be0dd69302e7f504ae8608d0cf0ba775abb76e6e05a6e2ebc19e0bb6563e951e156bf8eda49ec347bd686256b9642f7c106972c98b4eca10e4d80f31f3cf217e06fd52212f0dfe7d77bcc816ce04b0d7d23e41e8da5f4283ceefbb4ac230f4e05348fd09bc8855b69ac9fe29532d86ea7c5be153bcb461f9fb9ffec7379ac4c78c104a9f224164af3d632d14b607e412d17836ae3a425fad88dd588a328454bf14b8a5b1ff1007d77df9ee265ac06c791b18eb32dc79bf775e5469e5b638c013f30a81997c3f739cfddb737c719ea16ee4904a380751a527ecf6e502b6e95e939aea13c0074ee21e7a544ef19bdb716bd3660babd5c0257b9d73d675fca02da64d6b410fd3c005cb9dd2c1fb6eb38fb9eebd3573854c3412d9689eaa14c9ea767cc4c52ca62544c8bbd312dd2fa0aa76ab0fe3feb40fb0b4b636c1eeb23f075b71ad64ad04a1f5e7029fbe1b317ade103b30b3d387aaf06ad52a5592d1cd65047adb8180137382d66b4d631ce085c5f709c4ec01ca2c60f5c8dc13eb1d0646ba685c758de021c29d679474f34642fb145a7f9ea295efade501adcf45eaec7314e17d81cf9f822e570607fa253dc280e70ddf502810d5e261a735ae6cf22ae74cf91b1dc5796e71c3cf4a49857d52a6dd89671ce399d175d749cadc66ae532812f7dd25836fb5db98a97e5b1c60beec363a4dffa688ccac4885eef73e3b39a5f7a55f34baf6b7ee6ed9a5ffaaee627ae6b7e3af7bc433bc03a084f1593790daee297e7caff045e73d085c33e3e54b7bb81d9bdc61f82b7debdbf529fa73e37c567a8d7d48ae38e35f9fcb9fdea60ce7a1cddfb2e1f3dcc38e7d7283e825e4657df5778a911b86efe62d0d0357b57fbef3977b787ec69f27bb3af0fabbbbfcdfbd85be7f994aade0a6bfb307f27c999e77bdd7b19b00741df3e71772d0e939795b1fd87d462fe8bebe97060c08f8ce3fc6e4de21a195d175adf86034dad8db49e5a1bf0b2faad519bf1cff6ae23fed16f0158e1b0aa29b7f459e7e86aef4894a6203d9ea87d68c05c76e56fa0de67f0dc72edb77b57875976bbbfeeffeef99efdfef9ef2c9ebcae42ee0fdce7d6bb3a2ab07111386e9272f820cca5916bd3227a950bcdecbf86b216d6c299ffc1e7fed56b196d53f3be57bddfab18e7ffb6a6e70fcf3d04f6ba616cc02b7322f6d069f4692e535c1157ec39dff4be2e563a1e952bb73ea4e61d7bf8b1c7b385b65f173774311deb1150ecc09e08ecd5185a81037c6bcf7e7e772df4dfe931bc5f8b0f7a18b4a7e4674c13b49c912f21aeb0d45ec63d7f8ef7fac611e3f572d266a387edcaf8875c87cb79b2d43835544cd54e8bbce1de01d68fd379fd68e025dec5c5c6af3d635c813fdae7c65fbe56ff762cf0ef44bdb21b13fd7a45e32cae5f534336ab382ae7cbedcb3fa437f7dfc36550cc76ccdbac90743d4f32ccf5ac98fcd804e2e4bbb8ff2ca3445f305f92794471d79790aa2e1819d092d969b58812e89d674544efb3d643ad9fc7b5bbd237e3ba4dccc96115dff14a1ff14a734f2e137ded44740d3c692627ba3ed3c03bc971de4445f62c74ba6eeadaa06edef9f8d07ba0174cd794756d51e7958630e8bdd0e8ec95e72ec63f4fab28fb9d1e5fefd7ec5dac8c3d68619941973739db5814a36778e48e732d2bb634676a31b41af997bdc8ff6d3e41ebb8b976268638e667ec6ecf5cbd854e54307a65bea96879ff485bcfc93c1144c6b4c8f58d83fa792b4709af19cadf575cf4a90d39ce8da8909e081e7e6c2866a5633b247c9cfdf664912ca5168e474fdf34bfff4a0fafabfd9e6b5aec3531799f3398e7faca4e035f93b526d49e7f357efeeab559c5d961739c871b237bda8cff2131d37fd527cba57cda501e8086f28b6ce83171cc6bf904dcfd09389d6385de8e0ca258c6d5897b6fa1cef5b13097d0bc4a8ca870eb0d7ab5de49349621544e28fad5f765b27c68bffb3a1f155fd4695926b518e77ab6636e993ce63a5d87c0c9cf7e4d5f597bfd207b95cd009f7959d393e6eabeb67656b1d0f25a3cbe9cfcc5c0a0b80c71c153d2b3cea61f364fd1ff978ea3efd92bff129647e422d83e0b6892c0271f187e8ab394cfddd56319e6b2d01363e1c81f1b705df72a5f4d993b4f796b71eee1d53ef7f9dee0210307de2f58d3fb5fcffb1a7cfb3a6e6f5cc7f78ff175f4477c1dfbc4cb41fcb35985dbdfe9f1f0e35bcea92fe0d83dc7ad6e632a84f2c3f5de69b274dc6cefc47a7e5e2ec6d7dced81d22f9bb4172cc61bfdb237ded01be85f3ddcf4ef4b9b8b8ee9b5cff4b5ee69cf39f93b3d46f1b7f558fa1ae6c2bae5ed9d3657d77d77354ecebec9d0a5431cf5a5f1341c185f787f9f58cba735637def89dc58a7f7aa669160df94c301fcab7c6812cf3abf69858519c582d6ef43a22f9c43bf75faf8b3c9c6dbe56a29eff3f25d4e4931c89a3d36bbbe940e1ccb107fddffaade8cfa40cc7546b7eab746dabfd3a7f9f3fd3abcbf0e077873b3d6e8ac0e80c10d4bdf91b1282618ffd3226f557dffdc1ff417037b33d4547f70d0b33ff8f3b83ad62f9b6314acc7a3e69bd65ebe80ad98c11f0cb5bda7a49e1682ae8f4971bf6845ae9e37a7c5c8809fcc187ac32d343077c0c4c28fa6cbe1a1b709ed2d8e6f58ff72df32367596d36bf8fe5cd56ebc76e1ac6e6add454584ba8e3c42b3bf81cf5ee035eba1667d8269ad3b6f03b1b8c4416b677b4b0bfe4a27e7c37e5acb383ff923ca55b7465f6c55381ed99b382ab3bb26cefb1e9fed39ae16159d3fb57b1ddf7ac2b8191b1bfecd6bcb9e43ef63af5f47ede42fb49ac749c21c16dc17da341027618aeebef2aa155c131ec24fe9d4ddc7f3f08414279a1ff0d372ba31a3b485f7d0eda16331b98ed12ba69aad97abdfd968be4d8ef561666cb7e91d1bf97edc549e4339f02896f18db97bcc4ffe32d15997103d8b3ff039973f36e8c1cb67a127b570f3362b0e9dced69bf8dc1f0e6ad63b809eb6f6eba8d5d3e0f02aa1bd3dcb25fc2e67e0c78ae0e0a95acb33739430ce5ae585a2b40c07f09686b6263d76486a019d2fb794c156e9cdcea0a10d9f8021dea7312677564aa7e77a748c8ee9316ad7f75ef3476da6021ef6ad0c5d735aec757f38e86ed9db161a3482bd57a10b9bb2376a037d1393fd52b7b42feab2a1ebcbcffb63a1fa4f03fa7c8b791ea18e5e472b4ee82bedacca775d9d3f23bcf25c054691f6ba4efbffd469ff43e3fa4974f773b9d30c78af1509bdb79d16aec61e01b352305fc4f4dd0afbb18873332ae6accfda429bbbeda92d116ccce89e077ebac71db897b8433cabf23f5a43ba5cf0c2a5583807aebd8e927e35d391fc9d2de7cf9111b5772cc90daddbe0801aa9ca0529ffebae81c25dcd2ebc9528b1174e6488e0e159040ffdd65ae3a79e8df3fb9cf818f7e9b7f5a372e847a91e1173520c85af871f526807d0f18f5ed9cb3c3dc97e3ae941164ff6ebe5e49098f3dfe9d341e9847c5f2eca977a86819bfbf08abae841fb43d65b932e7a0ce00b0a9e5b167b8bd07ca23c702be0cb5b8c5ed99b66d05b633934a3dd4a71f637e6c4fe07ea5afcf77d06e34a9df3b73aee72c1f86cb9872e296327c6b93d2d5c93bd69429bfbf75bcc4d3fae7a7b078566f6928de573308e8edff43af5e7de0d2df6702b102398725fe9caa39b79e6a84d260de73dd1eb94b995a6e764b15cbe9ce470506585ab6d1cc6cf4f83ec4bd7283c1e9ed6df46bbfc3d56f7ab3c158ad5841515b85ed0c4f79d0ea324d82bbcb15adf659f896b5e035d2368f20e075554bcb98ebdae5714dbc78d51ef8371d47e539db12fe8b9295c02d7902de6b4b26e2563cac171a57966d2e34a8fe674d6a3d9410fee74c589b07f1d355b79f8505e6505e7f7cf985fc67c40f55db30ecfdfc597e0a9bdc1aef7cbb5a2cd71f57b339ecb8d39b96b5d7eecc1a28770b9365dcf41eb7a0e8de788eeda981d17c377e047717e7fa76f392d8416a8e729e67ccf7182fe595c69bc57ce144626049696f30daf8b69fbcd7163a4ad96936312d7aff75ae06d9e88e7cc9f8589fec00978f166500b236fb322f3b866eb9efc983904d340fed82c34cd7346f41e0df8ffa37612cd405f3bd2906edeafbf34ca0ef7dac7c71eb808decfbf50cd25a97c7e279e5c205f783387fcc580f243caeff2fe3dbf5191183ff5cdd33c4c8fd17dad7cbb5636d0f5600f1f332ba4e7a34e3e31fc716e46c5b6cb07349a37d20407e0244dbcbe51cff7e4ce8cf6c9f7d4affa22cf49c053cc77e00f500bae6fe4d2142662cb80f62dcd646f88c8e07e435222f6185aad848f937b123bab862709f476b84f0b0da476e4886006ef3ad1580d7b50c393abe5f844b2f7127cb9d99f1d9a4461654c8b047b1e7bd8e48d8aa74a01bdfc91833a0d6a698906fc676319fe10fcfc2a2b46cf22981bd360a47cee45c37a6cb3138e1bb5ecdc82b668217fd0bae1c7e2c4f5f1c1099e2bec875da78da5c98546f1d4091a5f43fa1f9a72a76931d3bbc7954746315dc053b29a06fc3cdd8a65e7af3da8a701ede503e5813fa0f386cfc3e33d759657e3b943fbf53f63bdb95a0f865cf7e45e297b888b1dce77c93dfed0c4f934dc7a5ac0bbb3148ed779e3e0b169e169ecbf058dad26818ec900e7542eac4ab25f5025169ac1eb3df051aff45ad6d91a6d59b76b6f288fa35214e149846e8d5eec6ed0ddd21caf39779e17f0d384f790bac60bad5e38f3ebeb9fabe772ee11b3af0f8d53b1509a42fc07bf3ef4ffce636164a00e128b8a3fef321ea7f002f26acf59516c110b03754b5a235b70de69bd7426f0fdeeb956bea40ab7b28a47dafc586f337754ae8cfaf04db545fbd7280b1a3f21b02aa238bc4e1796e1036b94db015d6f1e3b267b0d0ed47a93e43486e46e000fd904bd5d1e5be8c9227f73e1c3044f26ac8f73416b273cbc4749edc7b995a19f9bb4ec5518d2dcb03743f871d7ec63e7da981f4152fa4e72e29e9c5bfacee1c726084b1ff367af25f08a76e1b12c941f978a9fb4199ea335b5bbc5fcd0a6454aebbf95041ef70c77967df6f2a27c051ed01f9f93e871f7d45d8b0fcd667c2857913c24cbf978331edd7187b7e2ab65d22c9c432c8ddc4edaceab7bd07975c39ffbd75ea3f1029d6df974f18f05976a9f43770d7ddcc02dfdd8658c4ae747e6600f6d145ea57b5ca37598d65d3cd6a8b180ff696ecce8b1f6327e3c0dfe773df58ed7cbc9eb3ab60fa1116d33f750aec607631dcff524ae832c3e68df146bf795babce9396ecb7dfa90fbf4f09e0d81410adb9c71085c1b64ec11ed798b2b7cd2425d6fe4b71ef003fe63622e1c194b2dafb3c2a5636d32e001b08f379c83a59463c18ffdefd88f8271f494c25f35b2b2c7c9f6be067cd4ba067ff829b19587b92959a753eb7852ec397af6f1332470251df64c6b51b3801e06c5dc61290ac435ad4f314f8b7e4ee32fb4d20fe0730a1f4459c857d634dd2b4de6598dbd27d86ef11ac4ed171f49f6f00706af615cee21165aae67c55661a112e03b45dbad1df299756ea15107af06c63465c5b448cda98ad5908f2cac765af0b1f5d43179b7c6d4879539f9bd31747f634e4e495cddeb2e6fea2e14a74ce8fa7558b6665aa406ebe0ce943e5ad4ed2fd6e7d8485a5bc2522e06c6c271ed6ca7994aefb5bee611ad879a4e635c3e2596d29235d8d352e86aff69d74e6628edad82c7f180b55fd97f8df56217969e36effc333126fb693dbc8b51c42ace9a8df1f3141ea37d16cb7bfcfc515f8fd6909c6ea1631ee4a51f242a0f77558c0addd8d277f35a3e26276154f534987b94afabeb7e59bb1658bb282732b262f52c63a1b0da0360b581ab84e7f3c084d72be56b0a2327d89356e3f83d6cb1f63cbda04e220e097ca37d6070bd52b609724d897a4398cb9871b80b675b30c63cc905d651ac5f34c6ff965c2c3c4605c6d77deffb44cb81e63fe558d8af6ccc75c679a3fee33b39e5ebf0f8966da7950ebf70cb57afe3ebbbe7d7157be60e2c3a1ff9dca2c72faf4934e07af1fe41dd79d3e3b39d83e219b8f6c2a171cdbefaf03843bd22d578bf040ed3e69a54a805ce2c975a0ebf0ae038179629f7a86980bb72f60fc667d25c1f7922c07efe63b3b01ad168f062a56365bc13c57ab352602e84b4a703232358d75be71a9af2452e26b1bfb0ec6e6e816bc17bb9c65e049ac6b84f7a6d24fc056a7026cd517820e07cbad614f3482b1117b4097b49072a17415c78f67db6d92779f50c6feaa34b718ae163ffc0ed39a7f49d19bdd710c004f175f683c903f25627cfcfb738377b55f3df3e03fb1a574acb4be457ebbc8eb82198957dfdcddec408a3c921313057ef31c26d8d26e6582d2c4da0d69ad2383139a6642c32afe5e0f0e0317a0d6208273cdff739e7a4e7bbbfbc7baf7a5e7970a4366bbe8798ab62c79ed9acd5e61a519179f2f1dfc7c8e77de6768cccf9ad930971f675883c68d52f13f09218873febbc3b5ad4b577562dd1f70df93ec545747becbe0b1eedf45ad4d5d5bc33f9f728ef2ccced50c7bc836f8087fa213cc971ee125affe021c2bef2337aac99f21aa1f659af5d23a7978e3f448c8efaffe5fe9ee6792c82e8f3989cf278c6de01931e00f3e051eedfb3873679cde248db183fb5b53bd257e3c3effb3ef7de070cb1478dbc0ab545d170bf65524c0bcf626f064b5363a4664e87c7bcbaa156fae02bb98ccfc3d899711fa61dbd9e5fb7b35af1f472923c7ef46997df715fa6914741fb27ee0b5ac7b16687e6b4d85b3c2726adcac91af46ff835dab418606fe3fd74b2a5fd46b449deddf2fa4dc735a3ef6e79ad407fa4f49d3d6243d4c63966d7d8e3d5b5b9a76e59f4b9acf733f1fc65622affd74ea7b9ed749afd8b3f407bd15d9e290de73db019e05c4449238e39f48264ebd2319902b86070321ac6eaa8fbcb17e056557f19f102d75c198fea33c6bbc37b74cf57d36266700e4c39b76b6698fba98118c0c9393ee9572b7336867d5c2f27a764498fd97e16ebbbd5d2bbef4d6f75a680958a8ad596f52b548d0231fdfc8ac785980ce310637e3168b2627ee178b2a70ad7d9837d2e9ee0bda2b40fd46bdff3bc8e39adfbe73ce5ac95f0949ce41bad8e8e6f06ad0e7c9ed2e460fdb2187da093d292fbb10906c07c417b121cc189d2cea2b1cb5a87e08af5d63e9abfa4c788ff7f92ffdfea98dcc7d45b2c0aaf393b4b07ff6937d036f010479ccf3c3c60b73aacd7ea55ecc0e9a2e7eda439c74637e223c99e74e3377154332d06fae57ede7a0efc4d814b7be37f47eb14c543a8c9e5b45e726f7268358c47734dd66ff6985b48c7d5c56ce7ef433d4f57fc425aef2c8ff25ff51a15b775f11962afc0413e6431e75ef073f89defbc25ae8eed97f29611f061d7d47963df1fc659c20fa65e38d01e6acfbf7571aef154fcf9035bf969e179c173b852f93ef2027edefb124f745aec29b6b3a6c5c092d80306b6caf3b0bff801b87657df3de8bbb6bbeba52ce64fd1ebe65e57bae1e90f6dc653a703c7fa540743c6ac054b6b27e3db697d9fb1c618c697c0f8f287032b6d713fbff8ff0393c01ef2ea7ee70da9f09b6ff499ce354be8e1684db70f9c6b51bb2b2e77bf3ab5bbd1e62fa949b1f0e461f36d30f47f278fc8cbc55e18ec390feefee53e7b416ac025bdf9d3ce1ef5d3c0adc216f121efd7c1593ba9f6dff072815fa2f59bc644cef8945c9f1649cb9c16ac310673ca68dd4fe037e90fad5630f7b712d0bbc02de301a079f7f0631324a5685dfafc3a70d2923102893d031798e288ee96e216177b4dd276637ad08d69358e11a758c094b0e7b5ce356fe6ecf6c4885f8fc36f1b0b7c6d1ca6b90846ac45b900c750a3dc0c3947307a40feb318d8b47fa8f893fbf94751b107b677e2b1aad1f8ecfe1aeeb10f686cd8d03245ae16b2df42b11222102abe187922c868cdbbecf547ca1d3d93fb34d9cd63f01c177e7d7261e934aeba7971f9a37d7ea6b8df7bcaf90c1e9fa1f205445cd3c866a0beeb0def017b3cd76d5c5583073ea0f9c53deb7a0d2fd3ec95d64ddae3a73d3551e6e39fb45fd29eb80b8cefa99ffe7f719d44ff24cc4da55352516ef2d5ebf72deb415ff34d6e3c67e250ae71b976e195f76298b3a7f9f90fb9e1bbeb76f15d543882a4c5eb34ec1f3b4dc53de883a8f91e96126b027a286640f17e035f3f7bd6b2be1373d866f01cf1198744b118e70a944f0f51572db11f416b0471b919204f006fa69eb5ae3d2d6639632f3df68e2c686f843f37e5d4340e950e14c76e7d7db382e34f6d3e3eb4b41624fbd1eb77e18e4e83a4a6bd433a89b670524b3c25ad2c06d562a81922d8fef87bbd7fee63f1ef1f8b3f8fabefc961f812df1c7e5fcba4593356c000dfb1807691e1bb74adf68de7ec4b3f50b871c76bcee309310def6134f62e7f5e09fd00ec6f149327066377f32b3d1bf44e696faba5897aca39c609184fabcb31c5375c0b91ed96e3abdd401dd35f88af02c670e258b81745f13f3ca465bb15a21894d2497251c857c17dda5a1d87f21df7d83f9e8ed17c91386726726375cea025d6b35ff3619cdeb5d03f5f132986427c74b9ef362972b5fcd6baa8622ead1623012f49ae4fe3f37e6c80bb1ab1d74da755f8775cc3efb9cefc9f8b8def3584b73584f478305661a425df13bffd85f19763ff920bab12a1a0eb6daabda2513d4383e39ab4948b81467b21f74d15c6927bb44a0370a67854232178ef0486127d55e6b38197b6764685e2c3e58a0f47b775b6d328276fb26254008741fba2e2b281e31c8b4ff84cdc4f104e4efbaeed2f5f24c7882e300c8ceb601f7fc63a9cb198815498cd732c194c5ae0788a84eb09a8a347816cac16fa408bee75d18f4d40fb1f7879e841a8cf7d8bf95c9efbc93a7f9e76ee09bcfd0e3eb6f7aff9c59acface9b0e0fe9a084642808ffce0f5c4178d36c7ed76739487954b8f4fecf4919ffb8eb58bbfdf33f1efe4fb6f9fa7c12896a8c501ff7962fca7a6c37728122663eaa0e56664c5c453589e0f5ab22278b8d90316b77ac087a416e39b5ac1d2470fa1d3b14d6bc6e5ecb1bee35880db1bb5fc3fd7fccecf812394977e9418bf2886de0d94960173adb39dd62e14270871223442e5337c3efaf9b31aabd8d666cbd5761dd7d099fd9631e257f2989da5633d5e589564ad2c0d6b1e6bc2588c9dc92dce4da0df5a2b4d57c664392b71f11ecf5e698dc5f82cf6da2fd6e5a26b5b47c5883de7f6b91515234f3ed158505ab59cf3d4d3626fabdc17188700f5e3c3353682c6f2b308e637f5ad6f6ae476fad6fb5c07973f981b2218f5ab052e5787cdd37c982da57d1f476fc691cd7aadaeb981ceef8cf9d46e55cba1c5da6cdc9336b8279d9c144e0cbabfde27efa131c8af637d60705b5b177ec1ea73728cdbdde0e3e77c780f7a10b6e748aca982712bcdc2d9c622cc79ed8c9586fb35e666c1e3d27326885bfcd8e5b593737ac6d18c6faea1fa2d0e89ead71a0b278afd31b8057dfddf46d9312a33d7fe9dddfdfbdeef9d142b550a9b41f929af033bcdfcbfb8166d16b49f47944f37ebaff49a8e3f5f57e3a809cd8743621cb6df149ff195ba5d2386f0dfb3a0dd104c3c79db97ca5035d53f87993b2097b935d7193fb51bd49dd72370ad0a438bf8c7a81867851c823158ac0f01ef088dc68f40ce1de6fe181c04d4a245d03d0f9c6cc33852bcafc337b5a29f5eec64138f9e564b79489693623d9afcde8ceb437aafcd7cc4fa3c25c6c259c5729f6b593187bfa084bf2ec5ed2bca3d190ba4e54d54cc9fe528697a791e8d0fc62a9a1bdf32e6f8527db3d32349595ba5c15c68a7856733e60f7ebaf03098828790226709d03ba1f9b2f28471b59f0fff78eefbb7f7792b618f33c519ba5ae7ddbce5759e3d555827ecc1f0c795390dfae95104b1de7ecb71f0b535fd365efa3a76db0d1a71acb46930ff7ccffe24e7c5ba3d06d744f50cbd923935c0fca3b7e88f81abc9696fefef37788fe33ee2e325f402b8c6ab6a8a0d38b735f6ca22b702073dd057c99e5bd6b470eb845e83dcd6b26563598c794d8c6991db0bc76b6e79e8444574cb9f47cd5be8229d14a7fb74e1746b579ceef3ff577c3fd4ef4a59a4f9559deffcffe53511f755c6fffcefe8e7eb176999f1b3596bf27915cb7fddd7b80f9accb647390a6b9957d385d5c247053572b714857c85b64d63d5cc31752dcf7169cc2bae5e528a027c3d43f1fb1a09feef80fd9d02deeb98efeb31df17fa1997d7c836a579c8dca220c158f1e38a5e7b9a16833680def00c3d658a871527aca135166385fe962f522c06367abf47d174b525dfc973b9833687c67e41d8a3b9ff544c5e69bde63837b1662db83014e35a12f5a95463bd101a8b03fbd791f7840dedcf4797ce5d8b711a84a56813b3e3d9c0fb62c17a6f1be8aa09e60c20c6a7b10e6d37f06ae83939041fbb9916a9aef4ad35fe0ecc27fc8985659ef5e777962177ac8bc59f0fdea52d8e829ea7e365ce69b03ff3d9d0275f0c6a6154148b6c256aa7a95aabc00dab284f0097a0001fc1521e75063898dce768a7456e525c84dac7ae378fcb5f2de7e6c69cfc2b18ff2cd646b4ffa6f3f2f4776a4be0fa8d056b230f07a5684529e83ad3fc8c921a388de2417994cb82b9917baea32fa02759730e280dcc5343d5ff1de61c337624846fa4e2918397e2813bec9632761bc5f1d52f637d5045856bd05ac07d324d694a6ab5e78c0cf8080e2d5d2ece3a93b988733d695857f08deee4121cb19b1a811b7cdec3f314bfcdedb4042d716b4f598a8f7b4a94d43db573fc8d76ddafb21f37f1e865338e9af4f8b3498fdf74ec7e297fca69cd3754edc264bf52012f0c81f896fbf6698bfff11cf778e839c6948313ac55aca9497b8ffe49efe8989f4494741a5d26eb4e781afa58a87f759a718c7d62bc36e26d533483966bb97cbcf47c54ac7e04c1599755707c486b2978b0ade7e4a508a42331a6e179db78ce2cf7990fafb15eab5b291d9ffae2433e79a6fc8feb2c839cf6cf293853968df5b598bf42bf023ce2d0f8882bc77adbf1c76a69dce25282f343eb3eed015c73ded1bc479f9cf646c6a5d35e84985398e0a92d2cfb8cbf72f6a52cb63d63ad9fa3cd5136bf960ffcd8779c1737d6f4cd0ddcfaadc7fad784685d676c5cc7698406ffaee33cb03ea570e68ec2de58d322c9e57060b30eed0cf5813fe8d596a2503a14d0a6009686f6885aecabda57fc48d10c1a9a17c00c3efe1d3ddb3d733a8035cd4bd1ce633ec60fb9d21ff7abb94e096c881c5a06eb72eea113e3a34e637573dca4b581e678aff16dd8fb55ac6f37c779bc8ee787cdf7f40cf95a1d7c3168178ebcee7934de90f2e4730dec43af837dde9566e745e38a7b2517fef949ec2b1a83fa1fd7c5a2735d8cfb1f2bf68919253d7d091e0ee993fcbd398e5ea3e361bf8aff7ff75aca875aa93c7b0d5ffc61f3b397b4387ee86dea593179f61f81f3d42f3513bece0af36ed398091caff59ce8838e81ea776ad0eb8cf3da7f4ceade7ec1e39fe52abcd26919c96a158ffe75d795f8d0ffd4789ddf9732ac6ad9603dada3c2add7434be7f82244ee48cffb436863191b60be43d604c2fb2826077fcf005f3e446fdee4982b7a85de0bfdd1e3c8dd8109d1e0e5d51e5ebb7a3b7020e8c7efebcdd0b225fe345af34b3f98c7c88997581b34e8bd147b0d7f0bf5da5182e3a7bc1e715d71e0750b9ab2c010406f88b1aae989f2f924509aed0babbaac41780c311ce24de4f2932dea02ce4c795e41c31db9366bb6ef4fd05280de8dc7fab231ea1ff4a7fa06564379d42c70294636b8ee2294ae3bfc36f34ff225f41f2ffaff83b35e3fbdd7675ea2392d12602bce7fc3db399968baba4ba8330692be839efbca7c93dbcdb8de25f79adcfb3dd4981649c375aad486c6316bc5599cafa4066a5214d7eca0f9031f00cc31e43ed04c3259df0eb971091d228c578dfbbf9c17b4ccef10a853718e93aa3fc6bb5ebc2146b1281e3a7cec1b9f8869c03e0014b3c13baf48686c98536025d49839fb0668f5da41bdfbc677747bbea72bef034d2ee001cdbe0905c6be0efdbf2265fd3ed69b68aefd127e1d35c565a16319a9b5442ba506cf668a87ed087a3123431e7303f85fe4866ebffecae8e19962aaf9f1679319a36635fea6f580af78680e07b588ab2e56d7d9476a6e48f6c6817f3ce5d377df8cbfe69bd1cba372bca56b3dd91ce6dbcdf8f51edfbc8d652bdeaba37b1cf0d7e200c9dc80c9b338bab6e7ecbbb9694f8383218e027d0378f7633d775bf6657a394d8319aedd67f5bbac98149d5ee559bb1f5e0df22be35f6c0cf9af55fc3df565eee3ffffc1f82f06b97c4c4ed38272d53396439d973017a344fb5b7a2451f2d9319ca60bcbe21e8928d5b1700f289871cd6c6171fd1bfb6cd6a2a78878d22d59433e8b7b7a98a8985e7f49cdbb2efc076f3a8c87103933740094a7318fd124676e3e6380168e5bc30b6099186bee5be98caf7091abf2d877cd59e052ac82de0afaed6da7a3cdbed7b336650e75e001b329d9abcef459e393de6330fe057c3b8b757595de6eb12f653b6a39e60e817ba37c9b31f8e8156afe98f5ede94f822b44ef71718b7e397205e8b252aece3dfb22b5291ee7faacd2dd66edf9ae9fad231f5958e08f48f4f7f9d6e7f957733e8478cbf2581bb985e610bdb6c5fec0eb02f00ac811b4699194b29d18fcfe418e5e54e1711e5184741e4b1fbf83b5d3792e28ed74ee215a726151cc477f1a7bffd1dca1dfe459dccf0971dc42e51ba2406ca9b176e1cc4a1a7aafc6e7ac501ab5745ee9f54b5c8766cafc7dd619ef87b1e579183d6cb3e57d1eded4ac627f3973ed4c62f873808779cf3dfeba671f382f8634f226423ed78f5b108e7f9aabe55d63ed139e34bcf8a473887de67d406753a0df052cc7491c14c7b198534e1d0b2db7b282d6e9edab4feb09f4cf425adbe00101eec002faf0b42e9be0ce83633f01ce0b9f1f56add2bd86963c73eb3d7d43eb7c9bf07e02fd8081aac9ce72d608a5183fc9fd25ed59332b7018b3e23f26edda898c69205fa14db2b034df455f91c65a238e550dfc58c0d82349b11134e26746cf9accefcc889a7b1de60327133af88c61c79c35e4383fc951027e2cdda771356bd35cb2cfa1c13a0a7b757df77686b174103ee36a2c781b2fe163031c33c5c8c0f128ac1eaf179ee23b316ebae7356dd6f1cf66bd9cdb8bf1e169fdbfb4b71de54b7a94afdd5af3f6facaee986b7150cf9b0735465d5b7d5fa35ed3f45f8b06b4776a59e136ebbede77a389be39da2f9b63b65c2fe7cff3e5a4d998933befe096efe5636229eebab576d0cb6e185b34b9d2017e393127cc32955e8addcd57c41b01eb3f27bc96022ba4747e6de8fc3e8aee7eee0f352b2b0eaf92b54f4cca2f67f0b34a74d69b4a3acc1fb0aab33651b900c544e7fb4a13edade613fb76864af309f13de500066bb67b946bf48b1d8cb9932c27fb595c1f2816bec70f37e287637ef2dd4ae3d835cf691e88b1606cf6a2d36d1e346be876dde22ecc6f7217360b6884dcd4e3bff2b7efd95391fb99316aeef9cb7ff57a1acc799bc4729c533cf96313081a8b14636a747de523f2a58aafef9cae6fcf7d40be6c42b94d8ff387cd386abe8b26e53fe43aff27e7ed29d5a08972af3ddce2f5ee73ed4a4fff861680978b62f22ae95a38aef617afabe93988cd3eb9aeabafccd753fa3db18eff67af277303479ed413bbbb9672d8adbd8767e501a171bd7f12fb31fbe4f48aa3cca8c27577474fabd8befbd07fc4b4d6e84bed05f06c5c73760de68709aeb11bd03d347cd4dd80733624bc8cf6a8694c8b84bd531783d20f72c6ce146983fee60d4c76b6d38c2934e934d53b15a508c40998bb206bdff451f5a4f663f897376b677b8b83ac6a2b9302f1fec26af1fdacdfaa74ede788c585817a9f09ef3de4eba2567527a3c357be3f8789716812a33edc8a7793f3753fa8eb23ed73beaac60bce39c5d8d1cdbe65b15e4e8acd38ba351f8b737c1e447d3fff4f6aa6a1fedbce8204fe0072675552f9790af665cca191d65815ebf2811709ae14d77d3bafb668eb0fad4ab661dedd72df6656fa0eea26960f0cb4a8b9ff2072e622ce34f0f5182ba3f5ec0f04bf62bb988f0f6d124f5ebf6dfffbf8f7d5cc04e5a985d0a362568a6205dd457853c26b3084af1fd686c6b225ea9833c5dd5915c0b231d60efd7339b44cc6e349ecd7d3c2652c2a749505fb8bb7abad6c2c9bf2e5eeb6f3101401784696d42a3aa7157b7aae5ecfba2e3bab912ead4b031a83dd2df33bcfde1b6e8ee3829601b4a51977615416f363f35238db82f175568d5e14ee6ba56cd352b47303fce05894e867152efbeed2f3011f03fb71c22743f9250ad674634e5243c74fbf1dbe8afc1e8b35a067f52fd65da098c5c83aaf0deead683cf7781ef12d6bbb025f7614aa4feeb1d736fb832aadeaec552c2c8d6bde332381462cbdaebb3d7bf8d772a8d9b4deb2ef673f2d8dd03c9489fed06c0c9a63daf79c63bd3126a2d3956f308fe0cd325358116128bf6b01aed118f84c43f5d698e354cc1f50c766fe136eb9d6051dd5ade4d84be75a18c687c65ae7510c4ee15ee88c07094bbca71958ece382e3fab109f21c5a3beccb8f988a390e7368ef48f69861ffd14f8fc5b5a1831e845c3be763529817f0d80db94c9a6931b09356a87e766e7bb4feb357ad01ed9976a6f0371eefd5e0b0a3ded7ca9da64f8b440b1c1c1bf8b16238a0583196dce3ecd93b91f6e628ee63f683def93c166165794ef44afb7154ac0af613a7dfc21806ee97240ac73ca82f18e53dc553f02562adadf31ef180351e3c8a7d7bf6491a766bf58cf9fe170ded93ffa8b84e6371eabe7f1a800f67f814670033a5f1f79fd7f9b494d000db0aace5f0384f35d6ca16b93a06c432f2bc962aad6c7cb7f28b7b4cda8d333bb1eed1dce8a90316fc5a4a6d15eb513a9e6fef1a83373506a1672d9b417dedbfe70dad33a7cabf5d0baa6ee798f26d8ea9b8553c36e0eb6fb2af7f062e95784c6af9f872a2b81f3ababaea451491e78f29f660edab7eebcb7c9bbaa372357a784d96fbfbb57f8bbfcc45b03258bf240516442eae7cdc6385936de0a18efc6f1aa427d96826c7bc73431879ab78f70a532534f8bc375acb9e915be30d4637d8e7befa5cdac37c7021f63436eaeeef97f225615daa3417f16d6d43d958ad3444298b7d298284b1ba8a67e20d2d438e129d3db3dc768dbc76d026ec01a1781f396bada2ef14e6d2cd6b69dcd4466bdfea222a7ee8ee2bfde5f9cb268ec28d561f92e5eaaee7fc81c3815a81cef800d79a166973de23800304df5c71fb2856726be05d8b6e3ff2a0d5af346cf20e67427975566cffa2f6fee859041343c43771b3f567da223eebfe56ecb1beb77f816b055dfd3fd6d38f44a79bcfbdce05fa9c37344684392d04fd26bd7b1d345402f73fae8d1520fe7d78e5c76725d6f1b062bd63b7a776dc686e04c6eaf82de7c2d7fc6f3a3f24e06359c7493a5873192b6579ec950d2d56cfc93ed77da5b17bacf87f6867755e47571e47cda0667edefc07e74f078af195d711e37d178e54794aa4742bb757ba9552603d8e2b684b4d03c470a56ce00556b10770e4c18f07c732f144313204e6eaf655fd2ea5f9c5ba5ba2f54ad1864afb52e8ccf797316b0a81fb7f521c70e66bf71a7fab97e469b2e5ffeffd87779f53b3f7f3c1138f89f1eba8b5d0983924e6c29186081e7e6c02d7a6fd5e1ef1ba67d5276a3d678bd7714ce756bf945e3f63c20e0eb0e10dea2c5cc76e28af99957299d492d75ca5bb74f11ac71c88733b69781dbdb9562d9313adb5ac4b25def9a2f03ad8f937f8616e4545f4ec732cda27cf8837c6a15885f239597ed33ae797783eef34aa91139c63a95cecb12635c8f7c69f6ad16b9feb53531e49eb0dad3f935804734f1e1263ed6c0d5a9702c7b53c6765f4d48f8bd3b10d0ed7b7dc9bbe861dd3b29df6075a6d9fe0c397b896377c93a29bbe494ad3f403fe9cae3d3c2cc7d01e57c7829e928dfa37f637ac093cf74d1a57692999a3cefc243dd194c679e30f0756d258951c5aad682876a3bc866e07aac78578aef4d9afd99cb276970e8e07efa7a5eff0b1b10699abf47b85bd1ec2ffa9bdc9a73a7bfc4e3ef9fddbe74f3c6e5ad4985103a773833966337e3e39a19eeeac1cdaf77df018dd5c36ecb7e6396efba7bcf398ebd6d21e2e90e72726343a17e0b2379457fde2de4523286e37502b52c7b03f71ee98eb9c3b72ed073ed77c2e55acae7a1ced41d0f7caa7a4bea16966d06feb59075a26df1353f015fd241d73b69870fd37ccb5a83874b51b956743f3aebdaaf3e4ddf500363bcced6911c5a2983c4f112fd23aeb35d94e33d68e44af4852fcd75886d0dcb7baacdc6732584b2b7b46efeaf846c7bc56da3c2df414d867a9cd8ad5b3800f27b4228b4e07886b5039cf8b27f1261e7ca311b41bb0ee2a8fa91f1bda7f78bfb9f4b11dae65a5f056eb7012de49bdf784f742674ac5d6fdb48096eb78f5f28d721efa8e5238c011a86bac9daf35f4ad2996a0986294d0eb3ef826fffd5a761ee20b3f14b5d24cd4d9efcf6db16f34e0a6585c0b9a95b2ddbea2878efe50d870bf243d4d0bd7a41cdb678ddb4a82e792b4c8938caac344699e33df42bf2e107977abc6b2362d6636cf87d52b780bac35d2828ba53473c50e7aec7ae084a570c08ba867740cf0eecb1bee4979b4869bbc861f5e3bfc0fe66831e39e27fa5d09ef4fa89530f70bbdc95df7bca7cd827d29f1dbbb5becddb41fb7d90e3513837b5bae9e0469299c19bc2ef956f5bb50bff39487565efa419e8be2e1da4bd70898b3c9febf9833a2144ea47047d9ab40fc2f4ec2a0cff35ad90cba5bc5694e72d12f76c31cfb26f3eb6fabaf61dcec68cccc4a9ff6e5a165c32f0d7812d4642936b23ce7e195d6be590bfe6f8b9e12f7702aa5858598c25fbec0ab7be3881ce33a905b6847b669deddaa796078ce03e6ca3498f331605ca58c37c1adf2501d0e2ae852ef452dd12ba739c7ba5cbe93b206ea90c76a3faf825111c5f6cb1d0ffc61cdcc45307a9e06b392e72630112df7a1af7462f7ec05040fb24362b37778c29a98ca2b955f3f122240cfba967aa2fadcf86c2179fd55e30898351a2fcc1f5f0cecac98787e5869ac63cbcf43670d3dccd4c063410aeca2784a9ab5c3c70ced5ff61e6a98ff3dabb9073a11a851c29311be2aa819f3310fcefeae7ccc2e3c617d4722be114ff86db504f7ccd33acfca2b6fd83a705cd463552cffaa3e57632fd977e78e6b17b5d0f2a667fcf0b05e4e8009098dad9e3dce5f5777efdf0f1c6c19e6ed3b0dcf5c3c01e7aa6aa489ce7ab1b39cf721d90aec5b42e73d29d759dbe24fbc96aea5999c645c9de44e337eed35f41ca2227b968f89b67024780e9239e07fe4dbdb5efe1f9ceb555ce77a5b0b9b5efebfbc66f9427997312d22cf8f1273edccc1a760df97e43fee011204aedefd6e11571af768fa796acce2fa7511dbc5e6316ad7dfb557f6b5fe00eb2fef2c43b06fae268718e7a53f849e453b2d5253f50d04f0c3c1807b65748bfc7ff2acfaad25f2efa1d5faec81ade14f697573dfd3d2803d0f5cecc38c19e65a870ca0b5de721f405821c5ae140b0f29df07e68eef1f45e9079d065f6af0fcf1587b706155023e9b584b31b6543d857d300b8f3ea399c10723854e7a1727ca85857d421613878e933daf9346e9ef280caddba4ad87be20bdd71ff271e13ef2c099a66a3dd69435d271fef8f7c957d646840674293a2f706815797c1ee9f8a12f94b0075e7b28700e179d56f40c3ac3ec53323ba9f85a9dcb41cbfaf43897399f4b3c66a53c1f3976565e7bdd73584b9467946c9313f748948f289fcf0e6fc8589d407d3eeb5bd58c49734b85696b7d27c9bb5bced345e973cf4897866898af3fa0d768fc3daeba4fd764dbf263de89af8d46e797eff7abdd3ca4e351938df5c3e69bf22ebf88df610d1f13fb8b218239b48e15afeed91f2588d1e4e38ba47dc20f73fd3d676701bd8449c7f3a8a6c1dc93d11b2e88b6700e1f5ee35fbd863fe7104bc50dd904b3dc1f031b7812c7eeb1011d17e2c58f9ca1e88a67f239b7e8eab13e636998c4137b666cb79b63f6b2396641466bf8f7f50fe8afdf301c5819ea7a52f84360ff2cae4150bced95b245ddcf137a52b3a64668713c2d1f44874f7d83534d4bc689bbd606713a620b4b6815beebd75eb33c6774e57f875a236a6d6973c19d5d63cddef58128c6b7d68e8b3142e315e386f6b885d6fe71aff0767f90ff7f170b3136a38b87f2ae8f8858fe785b17ce87e6bcc2907cc0d14d3ee1d0b0660673ef93befac7c32496ff4ac7a362fd3debdf5fe2d441c7fdd85d93eedc7bb9d8e7c63516f23cce2e1eb916e78b9e05dd228a53b8cf6144057cff9bb5338f05ead55ea9bc1a4dd67aa2bcc1e33a4991538e40b96103ad85e0c1c05ab9a3b5b49f6fc4ec387aa53df0d73d17fca82942e7779f5b6a0ff9b10992fca26f91a8c7427acca2bd14deb79d4f54708d51a6b50a9a16166365f2dcc77a397f164bde67e53ed733e6ad9f38f71a54b426615fde691aefa16e3d2df6cdaced306d88370dae85519e086d0e6ded804f50f98f2f52009333870e0e1f97871a1ef4ee81d39f293d53cb1607c6d6629d51ba4dd7c7f3eeb17eebcb72fe9c3d46bbffa5fdf3cf7110b3f71c41f36fd3c781878da43161094d349c372086b7982feaa17685da187cfd52a5496a69b2b15ad50f6b37c34e87ce2d45a17c19775a29c01181760afadd12f8aa01b4b458673d35a121080dd6bc14ede495f574e12b68248dd530efd36ae19b58d06ba0cb54f943f47f599f10b81ca1b1e7237dcf88fb060b3eae84e28322a7dcc3eaeac2f0902a423b625caf312d72f6868496a47b521a7ad0d4f3112ba40dff4ee4423ad73e5cf4ebb9c78e63a0df66c08732741bfa6ef687c0adca2d99972ba30435bbac587dc4d8ed063731a2727c0b5b8afcebc6bebfeaad6f373b46dbc4d83e24863ca4e69d57f32e576a69cc626da66bc4fcc9966b1ba8c969d0092a661ac5a43efb01346289ba59e30782d654531894dbe706fb7dae0adafffd20ec300fb518c2d797fb7af030a1f1c53d2ffa0cd1f9bab567fea0aa39d0e76d7f04e07185cce31a2b2c05e34d74fe2e81ba8d6843d6860c66e5bb637224635bb469e1d9e86b16610eef37e6aa818fe607db1f9bcea7c1b9d2e363af368b7b743c4625e2f6dc02778ee2dca1558963a5d35a03be5b2b711e04b0ffe0719a5c67509c4f3a5ec7a3f3d8b35733396c9ee6bfff97f6983fa7b137a84594e86be7da0b7ca0d623a5b7c7f9bb758bab437188e2be3e4bc416b31cb84bf78dd6c475fc6b9e31782a37434d20503dbd22cca5d17965bec3b57775ed3f9953ddced3fac528596c3f2571fd3bbbe740ef62622f17e0477bf0159671d5e1e52ab9afd41ab28d45317a968fc9896b3b11df87767ac563646199dc83c0f5a6f7d6623768554e5eff1d759b6c295f36c7a84d35496bc121fda618ed4de0569e8373ccda874a5fe0fc7ffffd8ff25c78d02cb0b68f04ade57e5793403dffda3f74fe09b60ab5c59334935a1d5f2d869acdbe36833a2aa2d7ce2b55820333a0dcf62dfef78ac7258cdbdf2f392fd3282f96b7b18ff6677860b9436ea3453c56fbf1015cb94d8e877b5df0a3464587cd3c73fed0fb6c06ed4dac6f986b178ee0a0e308a25e72d3fb20ce1bf6489b0809ade0d08a8a95271f1368c4c3779af602f0613ceeeb0707c19801cb1087a441ccfd949ce0b980d7a536f76d5702dea3f4fee1e0bc464d8bbdea518ad2770ee891c905730555fc65f2b8a27d69f2ec775ea5c0c85a75b6b3ec85b3028e2b7052f4b17cf894e494a719620f6d01e8a7a97a8fddfd8fb9d16f4d7492e5a45ac5b676f70efcb0d6d94a37093832f048115308f884a2b7155796ea31d6147f803fd8e6f44739a3c538d590d71cca9519bfc1788f5874af458d5b2acf5aeea93fbc42fb01eba1a7258d6522afc4ebd13fa5d72b5dedbcc5b8e2b9417190ae72d55a616df2ebcff2ae8f61d13d362b45d14f3b64668cda756c7fd7b8fa240aa59f1f1cba5cfd1cfbd23ca6fcec933857bf1de7de8eb34530ff420cb6cf8596eb9f71efe56deefd27fa6ed127fa6e296ba3ff1b5e68d8261c6f07d003827663da7ec49c842de5afb48ee6ddeb2cae679ef95c36b4d9c1a3e07aa68c84c1717ea2de93e4ec27488fedd563fcb9ec93130257c89895d97f1cb3b2a15c15fe1dff869fbb14e7ffd5e77d96c79c2eff5f5ea3ced3bfe300d7ea9c1bacfd16e6f23607b8960dceb1ddbdceef972339ebf1e87575e7aedd889953ca8b301e698c76ebb2f2caaf95ef462bf4a4111417536e14e67656441e6af443cb908cbfa87cf690b403f66b62fc24f451e0b9d34c81bba45818beb33ab4abb177b8cc7dc57783bba4c9638e983c035fe1c09a531867f0cf621f4a7e9f467fec9b313268fdf2e3eaf4eef34b78fa74b5c962a6534cb31ef267f3f78627f51dddeb4bd986a56c234f04738362ae69e1da9ba1a61e0fdf7d2e1fdb7a6859fe32b9fe5cf5bcf2e13d1f53148b60f42ca2c49e1679bd19d2e3fcd7fd36d6d9c2e71a5141d729bf3a17fc3b70deceef99e17c2c98a352f7cc0b9e93e5e4691ddb4fa139bff3856fee6933d62d882bca0b0c55676a368e38c927e83bd39e84dab8b8e27a7a43b5c7bdd19c79d397353fd9afdb1bfb35b8247299d4e298d76294180b27eb19276d0f89716a36c6cfd3378d95bea0576a19dc779a08ee4dd29c8f900b89d86da7c5cc660c1d6e1983cbfd1f83d6a019b073ac71d0f55ad87308f3b961be647e130f7b2b36615e69ae713f078f330e3d101d5e56672e23622453ad97b66c2cdb5f26c023627d1ec2fba8e1bc202d6540eb2d6b0bfa438b6fc7398dd3ce3b90725b93b54fbd92d7a5ed8f809e0bb6afca772d673c78d43be7c3bc77e5363dfe4f6959fd495dd65929a30fbe24d5b450ef7b9a748f95821eebdddbdd7ff97bfe1cbf1ab5871a9e7547510a87f62f8f6208039ab98d55c18bae58a1578b5e2b7ab778de9047ca7f693e0dbadb0e03cf3ce506bd1d7b5ab81dbfa69657af118cf7b545286ac9fa9ae0f2aabcda3aeb119bd0236ee5ceb2e4027a374a3f111aa63630b3d8ff391e669f3ad7663ed1682b68ee05e06bf02d7385283fae3967cf0af48887dcb315d0b615fc3b8bc4481bfaed88212ae41f9ffc6e3e0e68199be01105e9d52debe1f173747e0e0e78ab3bf09ad5f9496b0f1a88e0a9d6693b0316775ae406f7d452e691d39ab0004f1c9c01c6e5429fb7666dbcdc4ed0cbdb5bdc17dc5b97efcff9ba989dcf2d38f435f7ddd1b756deeafb13fcc91756a338d91aaf77f0f953f8a4dc60ee56023c00341e81630973fe6ce4c62dfa74ac05634c83b0f49d908f019e8d823de9585f097b2c7e9b93281c94562a9f301a2faaa7efd938b60b96ef9c8fa68dca6d775a93349c4be377b1b71dbfaf503c737026d9e7f1fc7d7b6102afbdb31ab983df98eee1f778b95c0a0dbf155cfc81ce63558d1ffa1df076672e0e1dabcfb1b42577a82157dd6f13cc573cb18ef247ee73da5cc5244f1d17d945ada7f33a633cfb3e17e032863447d80312bf4700ebc318bf43df9884d6e2717a3c1c36c7f9eb1deff53e0615c07141a39cf9b7ca53383fb1bee5f6c726484ad1d21c40dd17fa98d2414d03b78c7d671fd405d69cf9eb94f5159a85036c268dd986e210dfd9d335ad64833544e9954d149ed5d2590722e71a5e1bf258465f7f60cd5ac4cbb4ce684a4b99c60fbc38047b529bca939a620b852110acf160d03140b74271dd52a56d21683dd568cd668d62a1f8051c3bb1a63b7ba8a99a4a059d269e6736d7525c0b58fe62f423605eefbfab5b98bc7e627dcd4500dfdf77759128f0a1e903ed51cb73bcead751b33de7df7e760d0e6173e525697e5a13e93ebf0686a31fb6cdd998e0d76db371344e9693efc93dfa4a2f683730a3427a9cafe58d1825e6c2712f9a3cfb5ce33ec7ea8a2330078f405e730d4689fdee35b18c73833903e85b36eba16645c5011a4de291bdc87caeb7346bfe4ccef7de3dd66f6dfda9d11a79e753dec40b703d37d8c692ae6f41fbeb48c0b76261691b600999b7e58795a6fa2b4d5478f5dac9806f134f89c1f7f7a568a1f96672ec2228f7523d99998a2d95ef9cc269ab1804befcaa8f78cbe7dc636caccb3c37d6af69559ff296cee3734f5c82b331a3321b474d36a6b1751f2f1f3d651fce3a7d976ba7b5d08935713d2e3d61a3cbf759178a31925a9db6dc4f069e7209ffd05b9c8958ba341ee71f7199fbbc515e86d69a3110d6da99601d9a0673e553b57deef097bdf5cc5dd9ace37b2ff6a39fc9e1791aace8fa5833d485f7f01981fe3edfb76ee269c11ba31c5116d08ca2d89c63a79a3dd873c615305ed854bd53c5e19f387207ef478aab2c1ff91bce5ba3f2b726693dd602030754790207d057a9384fdbb7dd6772ad7a52709e457fe052ea4abf18184be41d7a52cb637ed327add3ffba8959612c8129cfbc5b978f07ba2e21303342e1e704389e039bf32a4f8f0ad7a0fd0e7a36fdfa3fee46b37f6723a9ad9683fbf87d3b7ed9c77c6835e25899742d293f608f7dcabd5d8b7b7d3476b3edb49859d05bbbf8b097b21954819330c7973e8f31e835f37f3d635aa4d6792f2adc065803cc8579312dbc12deed45a872e5b44ef8f34be9e44a6f0f7d9e5c8cabd395ee0e300d025e3294cb86a50c1285ddc79edb707dc243eea0be876bb043ee97a871daa01680b997942288da4eeb4ef104e03b23637c77cb9a6ecc4996c5becb275ae821b127b3d29c0736df529e4f25ef0303ed723fb7a2c2abd6cebe9471d5828f1008f48725f4fd06aace74a5ab1156aa6684fa56cedf0b2d21f003656341478cfb67d5499c7da76635e76bec07eebb55039cf3c26a364abb899fa79cd12b459b9ee4ce32d473d6f9bd8d554fa167730027dc1f0e9a0db83c396be6f4cb43d4dc9cffce62f97ccf41dee5208c47afd163dd59cc7b8f12703712d45ad4baac3c5158a3f2c18016e1d3cb89f3f5d0ca769a392da2ad38fb685c79f5f07b62d6c519c5d09589dd2bee4c7855b30c73f198d03ad16c9c2497ac1ba389a717c93ee6341f23c7577824190027018c3ff00ff47e4328ec00f68a063a61f82dd047a87db7b2b997601952a7bdc2d37f1de1b58cb9218efff3e7025840ca29e4ceb2a5fbf9bab0810710d61443689509ff69471a7268b5aad758b376037e8fc57100eabc06dfcfa10f07ae14d6485ad3e1b5c57da680d778aedf86a570682d4e4b51600fd73a3d06e56150f37ae4aa1ae5e855ee2c8bbdd8b685aa5f723ec36ba0da7ff6dac271cd84ebd50a4f8be3622d09ec4f21ad656add1d34fc9a90f91ddc2b57f8827e39f3fc7162dfd7a677fc0cd632d7a6456ef0b94fe9dc33d630a0fb49839a97d28f5298a6867ba9217c79053cfa2ad5eb98b5d8d319476b30e7cfeb30165c136c27aff41df47a7813604cd077a86b8cb9e495b446700c12da6bd40747afe7be9221c0a5634f0d8dbdd47688096a68cc3696c9bca841f5d77fd7fefffaef92c0f7ee06fa6608df3c0b9a322d305bd02b657de141ad629ff33ca478e5828d1e74d86870bdd7d09c4c6fadc36aad8c3c81fc73f40c5db45b6baa5a7f17ac7150af9dbc94edcd751afd3b19e635f8cd716efcbbeff68796258fa294cc93acd93374c6f55fcae339e769a64552e3731ca585e59cbdfa4f674e68211d70be0a0fba6f027d1acab9c043c3b9ed975f47afabe56a9b8d7f36f7b5e69d67ca62d02e9ce8a67e4656b8da0d3de57778d6ab3a4aac7c1580bd51dab7b4670397b1fa38de50a3f5cacb63576336e031fbebc8f10034619689b640fd6fee81e7b1b36ee36de31bd820c569675ca8549813f98cfc03b10974885143dce098344d1d9bb61e6a7dc75d9b18a3d76439ff9d1eb26d7ab45f36c7f49e27bfc993e141d3dcd28a7ed32f7da3db32b8e84c3fbd9c18f70badbdd277c43bdc2e7a47ed2dcdbbb0754dc606e7b908d2dc7f14a7aeeff416e30b4d1a9d75cbc171a4b50d5820d6c7025f5de10679cff603e85eb5624f7166da78ce760b5d1b70dd07cd959f27f691cfe7e0ea998e292bb26770c829de0cab1a9fd540db9af6c7d74e6b4c444903fed34ed3d7cec840ef3256dccadd4d6e65bfb86d298b24aeef6beaff9b35f5449f29391e3237434df79c83c7b88b3fc6e9b3ee6998a30f0aec6df62a179aadf2802bada3f7d8fd6eaeec79aef4ab178e93587fd93c1e16aba5d4d2e3cfdf9b7bafec5def23c9bb1e94e23676fb5a7bad414ff3f9ddda68f1f8600d35116cb927b1b374f6a60d35e8f5773a5bd0a950fe140e308b95dc0dcc3572cfc996c7e5798d523cb8ec55618490d362cda6589231435c3f6f05eb73294df2acd83e732f2e2d95ce81de47532b6cdd1a3ef518bf6e2e8287f6134d2df81328eee757b4f9d18b46ed41cbed2b8f836b8ecca7fc5479a4b91519d2c8b55f47e5e1c6fa7a75b6d334854f6d80371dbed30e8bf313ebafd0391d747b9275b52719f89c62fedcd3d762bc8aede2dea77eaf8f43e3aaebef4d62d4061bad3dcf311e2fea566b3d471a42cb5bd5236ca0a37864fd4411cc294e7dbed289829e21f3f6688cbae6c67173417b3a6b1b9aacad83da7229c14f45fddd567d9e6a33b4741f98207a8da5fda9f7ee35e464f2f1aca7c81e5bcc13bbd64b04b61e1818a3aa998b1bdafc3743ae1c156e05ff557a8dc97a55ea333d692627c6610c34f0f5f7ec4dc33cefc17f4a9771bc5e4e0ef3e5565bc7f653161fdaf538bac7236fe311f8e6b2a7e9e8169fd1f3df78a57671066a0ad0de14ecb77b92616e66acd36cd2d8472f44f5782463762bc43b9d260c30911e7329c1f1665c2cc7c32e7b3ea0674a7b05e576692962815ae8a51612027f275843ad625f20e8e2b6acdd94d07e71428d7501ed5d5b8615eb552f939388a1036f024f1c0af8e6a32e044fcd0163391be674278dc5785e600dba5c35a7b5d708804d93caaf43f26f451eb07fe32d9536d778922bfc01eb3a5d797df61deff372b594edcc60fcc87dacbfc3be0f8151a49ccc92fbaa515c7c8d717dfc1cf6f506fc3bfadf9a16b356e993e6eab5b57a6dc331c7ac7bdc5458ee5cbd57636f8919bf0635418cef9a1f9b8353c67dc9591b38ecc1c2fa2733f6e474a4c0310e3b6c251e875eaacfb8ceee386b75ec97dfd1fdae379a54f0d164df9402fa6a35f7205cd5f314f9f531291d2bee692257c07136cc0bf5faf914bbabdf1b633e4c62fbee7df711fbd806d079607e993c24f606b8e2d58f0d6a16fbf2e25f7993730c7d26a52ff987f95eb6d3dab533328491f35a6850cc289fe933a6817c16cb041e6cccf1e6cf140dea1cf51bccc9a5b6168b60dbaf5e70fca96f8e77dee3a75cfe60f22cd8af4ce930420fb6bdc49492634923d73eb9cfb114c754745d4de529a28107ebcce8da1a51e1ea0b27630dd351427989bd71b0bee1b9755fcf7c77d5ace268981ea3edda586d53f37b72c2bfe62b36c88546d7cce57ecfce6ab85f92da9e3303b66dedac0af578e5b10ebf899e33f209f9fcc6ebce79ab39811a9173d16f00ae997d7674c4d814b30f07b5cf3a37cdc2e9a7ff31370eda3d77fc885995fbdc8e8a39e542cdc259bd4e83592e1f137bed7855b6d36ce07ee07738e3f91d3c1832e45a2d7046bb01e65fb6d30cce0f39dff41c5a77fb7190e7c6cfd7d55efece9693f69b5eb34fbd2cff1c27d3b5cffccb8be62e743cdfe9eed6d3fe9c4c8add80f90c9c3df3d45de4c734f7155e24b5d97f43e4ec938238cdecea641c5726e865c9dda04981e5dce772a729ecf3de56be7de8918b85a6b34f7216fb43cbf6c795c179543f7df0b939d9deb5613f603c692dae160a130e9d89d0b5a6c5a015f087c4ade2902a1d60d52b3f637558cfd560bcafc71ee6bcbebfd108577a79947f70ff497d86c2fa321e9471bdace70ade1674bd2dd63acb4f72073c733b2df66d021ea397fb5cab05ae8b73e359299c0c5e20d0e2bbfc2683bd1c70cb3830e83f82af4b79b1010c06faf8f32d6bb72acdd9b397c30c38261942a746e9e6e23c34ec25a97230daeb8a4193286ddc0ed7817dad10ecf73ed4feffecbd5b73da4cda2efc97b4235539c44838a2e8d6c248c2e2ccc053020171be6508927efd577d5d770b6c9367327866bdf3667ce002db2081d49b7b736da8813580d73ff8b793b43cea340637978fa85f7be36a59ea4805cc8132e4fc09be4b14b09fd13fea16b511d182461e560b77d8636e14349a9ef22eb1237133aeca06d7318dac4e2eafcbb4f3bebb317f5aff5cdcefb6c5e36e66d6c262b6fae490bdedb10dfa8d1a168159335360640a975a7cf131610e0ccc483284be8ef8c3dccdf426f0920c3acdad626f1f7a6a691853b3c7e438d5dd33710b7d6701efc9b9a7d23b6ae75b2dd3bca855740ae2f0e1cbc2dcffb317f7adb5cc78e13f64abff2e1ec86fe93368f7ad66c2fc8d5ec2e8f67c5c708cecb728e2d6375d5dcfebfae6ed88ba43ecd5503b1eaf896b6a2a38c2e92f7a63e6e20d709dc07102d7d628f8ad9b7d3b6ed1670b75a8d98beb918bde8776b69eca1a62c6183848eb6b1c97faaabee9f7e2904425bf173d251a15c1bbc9336353749d4ff46512ce12e7c66b1ed3f5bf89475884bad73f8fe12b4be5fd4763f80e266657f7f86cf4ab474f1dde001efb88b1c5ff134bb1099a3434fb8a7ea6b7dd0e9ae87a83731ea0918c73060d71d24b688fd2c765d92cc0fd0e4e880bd09f8dad679aa3d88327be03f95de026e8d96f6bbc0fba1dbab23ef8e4f7c43e3d9bf95d81ff688737c57cd3fbafeed2cbd3a7d9c3276ee98a5628f8c5a17823a2568cdfbde45e6a31e8b9d00336818f1af37d755ff6c655162ca04b12d409e7b9e403d02ca35e49bafbb24897b8af6a6bde336953c44ad951575b6a7200b724de31ec31d6ea9bc93f6fcb1779cfffab34827ef35e6f8fca2d4cbc006f26ab557e51ab0b9ee087377fd6df0a8fcfd7cf8a3de4665cad4c8cdc8b07c1352dfcf6421714dcd20fccd7cdc21b3a9ff1e2bbbabbd92fa95131159d2270b8157d79c99fe859bf1bec5fe48dd18f0dfe17c0a4528f513865eab10076312176f1a8d2e5815a41cab55e2dfc5fc4bc8effb31ea53d6ddf1796f67dcd381dc203c7cc69fa76c62531ad5bc1b3d09393ff339f0fb14120bd4bf19031ffcb4ad4f4f9bd1bfabb46f401a5d76acbbe257317d60f702dec677cf3bead7d9fc3de70895e2db42ac98b6b891953bec447c22799b8a22fe4833f9895b5768b1e748b91039b7c75a5cceb3562a108be27e440646542bf00e6b1d550517baa70f32a6aa7e00243ebc8ecaff0d183ce512ada97e67c33fbd99c4e6bedac87cccf2bf8a60a38fd2a93dc5c1d93105acd26770f92fb12dc273503478ff714f19c6a78efa1771ff03b2d2fce39e1987ab43e5c5ae22af1c5bc2947dc35266ff85ca72f8f13d731bc7544bf01da0d11f1044dbf158eff51a7d9b90f3fed7778ac4b6d7ae80c348e89d345ebb90017eb7774079ec2878afa52663ef645abb45fafaa618c3548eafb8835c96f75e2f0c1535e596bce577bbe527cc2a995efd2bbe0fdf9863360416fc3148c9f1e1faaa7fbfccff42cf8a04736d7e6a1d29b7e73c50fdeec29d774b6aff2f8738cbf8e1b482f6c68e5617f01560b758d08baffd03633c7ca2b681dc1f76f1ace67fa1efc1c97dea7f0bf6da7e018f74beda13e11dfc819d6f3590e2c55f6bf079b7ba91f5b6a734fb2b2955acc4c79656f550d9fe14f34b3f8b707ce179ff99e169f55c1fddd147ba5b35db5dc7ff58b3fd56bfef6d8cb1b57a578c70f95f8aef74cac454d0ff8bcfbd474cf7a3139efbe9e429bccc6346d42ee2df2236afca99a9a96598d38a632f18479543ef50e1077206e43ee4ecc8dd5f830f182c9c945572f96380df565f13407dfd6c683661f97b8497c19803983d7a1d48b62eb49480d04f079f1594c4c00ad017c96aaa8ffdaa28e0f9d7ce841503ba14d0688337cc19f39d0841cf4eb7860b170cbde5987b0108f09e811f9f485171dd9d46a644bad02b5adc8a53e62668e51538f4eb451d2d2ec9552bf8a1aeb6968624b689840f3413ce03b8c4979f13cf26c6c6c3ebf5cc7809f93bada52ab817623ea2f1b68db1d7515494d0cd7a5519bbeb7aaccfa291c095bd7daf49ba9d957af6843e6d08071a43e26bca037f5b1b346b499f365a9a0f9132147cfab39fd5bd33b739c2e3eb801d3075c6bb7475bfd72739c47c4e9a287de97e389d7e3f495a614fdce679db7ecec46fffbe469b67a5e0df5f37c567f7abd5ceddd69a507fd9e8c032fafccbca1f71d7221fa1f5ee1bf4635e75ef7b70b0e6d440e2d62fd65a9d235f4f3311fb332c8ab28208771f5ac1e0b675ce5cfaa094c2ed34ccd7a708507b7bad1a725dd7ffdf4f1fe35d6ff08dc151e774a347e45efe195760fbc6959939e875a783266ff016607bdc8be13876b4fa5a3ab757ab5971a83c93da8f9d31b575beae1dc9f8e097a925979a12b63fd9e4407115ab42f5c03e7c8bb13930f6c4fdeb8dad25f33cd2bcbe791759a186ce8ed0cc5537cf4ac87056a94a82140437fd970fd5225eb5926e79d7bc9d46aa398f5153a8ad03fbe2d57edfd9c78f9cb62f039062f8f237aa6de02d776891e0462a20e2f8ffe38f61addf4eb45189938e1f486df2c9c25b38fee3c9572ac88bf81370dcd58d1d0c3640d0bbace3539aa88496aea3d6dadbeec497a31d49a45beabc12dbcc2112017c431b195ea5197c5e4404140cd94e18b428dc8c47fa58d9f04873cfa92a6912bbaaf411a2e894570a1091a7c64ac3d7c1bfd58ec0fed671cfe2a0e778915d6b1aa869eda9fe0c51987056a6f093574fd2768563c505b73e034d37069c6cf8be59d2afa1697a8d55543f6f4aabe79cd4c55c3587a10ee6ae3882799d4dbd2c921a1275930ae622735e36360d75b552aef549bf8d7c4f87cb4fa5add58f164acf4d2103c7d7c9fbc8a7ab23edeba47de2fee87edd3e7daf456075b3ca3cda356d4c9efcb5e111d1531c381f64eee983a48a2291fb7d3501d35f98b81e44f1ef619330eb0b6607f71c47323b07c20fe0f3a45de531835e36a5d89077d291a7126cf92b511b8a06681ba2b6bb4d4a5b37a443236d3f5cb18b8a3e5017b37f4f1fbd4a4468c074f1847b4f60f7ae038f2997ba26f044c3cb919b178698f5e440bdbe49fa29727da8ad3c00516003904f89db59e458c15a133419d15f4fbf13b3426accf00b5b7c8d7277e2004b7c9c37180ef7d7dee09fd005af10368addfbd599bd4b71f87045a73659b9ab814f37ffd0c5d70e4c3316beaf725f8c126dfeeeada260fbdb81fab6a8239b6309f6fe0f4ccb9a761dca421faa0755eada8ebb52f1dcefb0238ad9bd7f0fdd79ff3cf39f9664e46e8e92483c055db53ada67df729cc676a46cee9594b11dc203fc9cc6b825603eb969998123e14c20334796e579b8ec3e1b34af545ddda91ff810b524f439397c626863826d04b8c30e7884955479d0e5fe81f9f1db5a35a8ead2db52b8967e925cc77dd27e83403df5caa6d59a3479ee61ce3dee9423771fb3a26be712ca5b37cb7badf1de7eee8e7c273fe77e4c1e73cd57a61d7164ba06627f12935319b5666ff85bf1b3c6a27a54a8ba34e1fb01f2b9fbc5ff89ca50f662d3c50832a16cfa195229f7e089d1373ed53730fcddf9cb2d6df8afa29cc3d65e63dbcd71857b20f6ec6cf6d3e14e9feebe4e9feabb3f0564df178f7fce943f176aef78f493a295113dc9efc4e2fb40276b57d0ae72f8a315b330de3d3f5ba01eb68d01b169f12fac004b536f19ff93dcdc8b9851ea172a5fee7779a5c6141cfb46ae971bf9c90bf8efd4d893ee1f2acc11a164705eec9967ae9e6f826bf36f17fba2c1123deff2297f0b0efb949a7456bf64dd13db0636f7b5e7b1661d4636d797b4c0697f1e29078e4343339d1cb85d60deabe8abe2d9e1ec04fccec9be8530be7f884dedf596f5c6aa3995ca3c2173f9d5e42dd5c72f3b2087e89b847ad78118153aa2bd68a58433063504ffbf09ee9faf9f0e9705863da402feda8abdb7876e9fe6bbafa36fab9b8afff58affb5be794892f93abbe81ea820f1f5f8cc9b36e0ffd70a38038637dd96346ec44ed32e4f035f39a7ecbbc3e2bcd3883e72779c9b5f68b836841bb8869ab921e50c43074de4fcaacd9edd27ac4b95dedbf65ad2819163efa5626e6dcaa46c1232e33e3ec64f67bfa6c95e4ba8b064b42ef5d4f3b7fa76d6a5eb7a49f0db04be6bc26c742dfc4a53ea5894db7d42c9c5affa2c245fe58616daaf95d227fd29ab9816b14480fc63cef0927d9ec95a7f79a48e6da979ecc0f5e27f6cb03ae0dfa45702b828bb9d07386c735349903b306e836068fc15c03b591bf5123db97f580c7070ea5a4e7eacc7c3ee5b0578547e9fb2ee18136aea276817a47568a5680e8bc9ab554df3677fd87e7f9e3285ef8793b7ffce4da5cabd7ff9e5f4824fd73052c0e3cd4cc7abeedf4b91d628c34fd89d25cc635704ee7decfa3eafa35c45a9cb11ce77e4d545a4dd3e2c253e4dcfb19b697588dd7fda3738c1d23be9e940a9cee4cbc951c39bf532f9baefff4b67ff40acb72538c3cbcfbb9f04e9fe3ed3596085e7d56cb39b65a7de80303f75d73ed9e58af3bf681370ef1bad34efbfec035b92fbaf51175a84d5c84ff4dbc2e160f97d451c5b1034f538ff0ca391fd8bf46dd2116fd13e15e495c86f1bc011ece470cc9efe1caff1ce2d1d1d30da0a742dfc64b1d577aafb4e2e587ff9707abbdc273ababe75ec2fbd4c47b4aae43d0b21e74f95dcbf377357b08f866d4f2466eca5e742b7ad33c07f918b247f603c670d0d0ede1f937f433040380cf2bebbcf2c755dcb2f7ada47f8eebffb1f3b1d7d3c570aa01b641b4b50b47ce6bf64f73aeb2bb16dfd5d5f3159ce366df2fe1ab469e5f7971dfdb6be729f03bfc164cecdc722fe6bda617561fbaa7ff0fc6b2fb3f3296bb7ca1ef9fc732ee7dfbab315cc8e7c0fd99061ef120725cdea32bdf111a478eb9d672be5e77becd6f8f61f7624cf917632af88d31fc7e2c6d786de201eaf54745de70e7bb415fd758bc33c0cf71e4b8780e2fe456996b5176f7ea1ebf8b1ff1ebf1b46cae9d675efdcbbfd7f7a2f96beb04a2f1d780f7f3b7dfb3b8f89ee5c5f7dcca73e8294a2cfdf6734c6ef8bec8934f180bc01b6782f189a5d66af2f53c4c06418f5c9f09bda911276ec9f7f28b06bab5c2315321f2da40b04eec93cd4edcf31bc498a8419bf98e351af7de5cf3c0d70d3152bf5a073ee68f5c5cf12dcebabfa1d7645eb709dc5be2de6cbfabe6d9e8e7ea3306b91283a08663f217576de81b334ea393fdc95a68a53b26e794d7a2ee4e3cd8c4477f2f2c4a0d3e7aece655dc3c856be251dabc029f9918e35e1cc267c3cc336f9c964755e55f16c053dd113369f2a27bd5f0b51623013eb90f2cc4867e20e314f9adaf87d0383ae821fc35ccfee6d1db825e14c09e991c1ab58f792b3cb99ab95fecfdb5751cfbfde1698d5caf40cd4aa7aad4f082df36c4cedc8691c9f65f7fcef7bbe3fc131ff3de07375dbfe629ec9d669c3ec4c963e13d85730f9a55a827077e5e3d3c8f53e04a3c72d4802731f7bf5d84f03d6a1578d7f237d4d6e2e38dd8b6e9c2fb7ac8be8d76f37dde40cbf4335f7e9b2f4b4e1c7b79357f567ee1004b785f1e745eb453d4f4e7b1d9839ec2ad997f77f0bca954691fa9d980fe832f73b0658f35eac1fb3b5c96aa71dc71b574a0333ae8d7aac3588fc45b35921e5106fd60eaa50b2692f1a0e8a64f7a8cc9e283d4653cc487a1d463102b6a65b5b2c62938b1a2a1078f0d4762379f7b7897db582f3e772cfe7b173ac5b589e1715e938f4ce591de7eb8767c2fae65295a4d724e60447bd88bb9077bc900eb70775e6a469af576f422781a2799a923d7c0cc9ce7d0e5238c59da058f2dbd2feac330fe9c1cce75facce623be16df6355adbe90af10f524ce676dd26ae67f57676cece6a2f6b979e5497efb5cf4f26665f6f13fb38ff34b8da1dfd1a434f3071a50d5282686263a26e1e490983c2b8b9a71d53f51531b8fc402a47149dcc0fbff91674ebdc9240367de8da9c3dd4a0c5c8f2b60024a95ce9fe101c51cc9416c9e2a7843ea268026b84a0b60736ee40f4d57dbf5cf857770979ffdfadf3b3e7ab4c367fdad68cf7a7b37c5872733b6561bc7bbe60f0aad66f08ffb1c0bec053bab4ac7e6dc577d08ce7ec9a5f54be67b9578884e4af0e210438a96f4d4e98926eec76aa88de389fe590b5f525f30d4d0aadb796a5f06ab6af462ce7f5b9d531f16de61f7f07db4fb43d7a9dbe3bd4ddf5b000bb82db543bdc9641af492d9c987362ebd3b6b62a022dffcfcb5776a7afbac62558d3cd1f67085c7562b8f1af8ca29ebe4db8f03b494d1071e55a213e2c9b8b07570f0469e06ecd5720fa6d781787b52d38c58e9403f167cdd861c659383484fdc111dab994a47e6b3cda0cfb457e438732f6e888d8a80e952696672ac93fe66c6dce448cccc0ade2bca53f0ec953a5f0fb90d3edb963584309f4103809aabd01f91f9c8def506d8697ab184ec11ea6d599f6b727dabf31f00e3c51e9479de2ce195803800b8bb047329f0755e34452a1cef06181ff1e5ea7bd01a48812b43dd33afa2963a47db8fcc9b1f8bfd0a7bfda75ff9bbb953eb3db8bbed3444cc1b00ef17958dfa8e351e3e3b129f794f667dc56ba3e0afbd837b0a6caca78e9a3550e9f3d8f5313eaa761d02e710e27ebbeca52a97fa13f4505a55d151031b2ede1d1843e7b9c3f193a72a5d0247a99b40749e333c97f737f4bbee971ce3654b6dd2e0048fea0cdf091c66fa94c4a8db5ecc27e7723e890f3f356d3681a39d0f8efb47d4a3ddbf19fbffc49ccd2fe66c6139e001e3ee82f3147377c29829bd4d3b31f3beae3f63a337dc874fafc47fbf57e2d6a9a9b1889ab1633dba35f9a53e701bf0db518ef9ecc827f1e3800b62f9acf2bb705a976ef7da99c31ee1ec525f24b6dfffc4fd3c76897b32eb0e7df313b9969adefac249610e83310cfd7af1a8e2711d5907045f957f59207fce50c324d6b45fc227b732fb5ee02ed94fa2bf10f5d8dcaeafc5bfc973fe0f3e17d3ae4786dcd9e4c8cc8bd599cfb5b9d05adbbcf639947518f584049a9788053acf35c4d5b9aac55bcbe9d6de41bfa62e27345702eb89a89ba055d080e1eb6ecccfd2e57df447d6c6f2eaceecb5527f8e6b5b43d2953ac7785372bc13ec7926af21c759f45d0ee32aee913bb5445de52f6a0535b6167243be1f10bf1189f78df55500bf19baa7c9147d43eade993d6f633dee95d4b6d1ef31eff3f1ba34c2da87987a13d4d0a4a15776cb73c1d7abe21e1c78c49f4d3cd1a7817705fb01057b91f47b90ba02b5e312f1b890f587daaa969f40dc648dbad5d439aa4efb70223a87e8d9d5ace9a39f8f9e6c6272ba0db494ccfcc73154237ed715eb0ee36a72545501acc0b822860ebed815fdafffb2da4de698f46fc1b52517a820f7c38c8b4dbf56f72677cda897d4a0ffd5a38756295ab426cfd8daf151daf121f7ffb7c6c7a465cf9df835736cf4685cd10032cf4f05ea2cd0633ae8c6c433d8bb4cce84cfa7c3db3c1733dfccef8776b21f7efabebcf75cec31cece3ce021a6d0f0843e13719581ab81efec8bfe8e686ea37fe110d33200c6c0d39be024f1e851a5faceec952a5c96f691714224ba5da38a39e9b694f9584baf19dac456f371d24ee09b8efd0c3cdb823861f8cfd85cb7642db82ae93733edf8b833550d9f1578e4a8d15cd5fdd4fbebfebb5afc6caed68589ab0874c7a992ba0f351e82c5009e4ae6fa413753b7f330c17e5c605e9975c3e406f4b0812f7d5334d0a338498fd0e2557de884cd4ec00669c4030abd40e89d36e0875ce5bf3f0d9c76d2521f5ab443cc1a701a4b8c60bedb5f1c03b5f64ab91665b3aa6e8cd7fd87f5d3e3e8933ffa3fe26b1ad1b3c2ec1bdf0bc444d3306a5766cd6ef53363e5f54ca56bcb35357b1d3c4fe4b5755e6df15ae07a878567f2ec55759bae4fe63ffc5ceef3fd72fff5b8facce1de69285047bdecb14fd677c1b56c57958db513ea9f401f87786dacd1cdd4ecd3216202abb1e325d3c063ac04bcae6bb91e266f4a66d88b89e381a6569f9a7bc09b93739e0c8213f0618c41cc8f89879a242fea647655a7cbb9a6d345ff8dad53d85825dc1ea92968f213131fc481e02003735e592b7dd43451ebd80137213e0e47ea17f65dd424a131086d9ea30ad907ea7250c418d0560e501b1f048e8666347aad5217ea8be7b4636219ec6da25de9a4c813b6411ce6c4c6a3af39145f73d43a7a7a7f028e5e0f0217ba148897b6d43bae96017df53a0c57833a0ff48d26171a4656d7d9f61e4557489e230ecca94f462e9fd987472a819e7edfe4d6f5aa9a1c353c55fbc0e74bcc0c2f03c665fd5af4b8cffbf2b4e3d5f6a0e98cfcdd6a3a89278ee81621bea5be97f46a232fc598cb4afa1e6ffd05380565a999971fa46f0bbd28de8f895c5ff4bc1df68fb95f5a7e6e82b875e24b7f4dfad7c025fac4720a7ed2ffa1e1b3f5581ca0f9eda1978b31006c618898148f4968391f85e01211a73b56b349f668877a0eb1b966c724cd2edfe75ebcaf85f7213161c21b563df60763e83e24668c8613fb5ec642d357e77413788f522bb33b6f35c17915f311b937dd394fd072c8cadbbcf387f0877e59fc97791cfea6678d27ffaffeca2507afee7e4b13fff78e3f7feb87d3a8e11bacdf87306dabdfe32c5173443879b1e5ff34f400b5da8cfa659c9647e4c683a0555be549fee621c64ee9edafc5d711f5e7d995f87957009bfe2fe2649935d7812ec220a80bf3f9521b2f179daf76c279e5a9fdc9316b9ad91f9270a7e093026fc9db74dbf3fbe1a9f8c4435dc3529ef26af83c4ed79e8d07e0ff8a38819e2fac250781de158dea34d8e6b6d7ed112f8198d647fd10fd189357c2432010edb083f6d9dbcf2bfdacbf59ff73e47a776f741f6ad42fd28738f956f4a638d72ed6f76f3523a2d338cd9fd5ae08a6e1c3fadd31068e0bbd4bc15fa9fdfbf7c7616ece513f85a3f7efb7bfdf5663cc56dfb69fe3ed1dfe0efedff064ccab071313d671a82ffeb6629c98ead7af33eb157dfbfcce2f7b0a2d62f3ff0e8b49cf89d18c9aafe83b1ed083df158e7d1fc66b5b9a18ba4da213ea87ac27efa07fc29c7fd28ee92500ad13e077a17b96355c774795c4028d1e80176dd655898577cac4dcc41e0167849899787cc46a26668437f3340437b2eaf81ce871484f1cb145bf655d2f663d855a542ee29d4de0c4c24b251f147515a98f8083d9130d519feb3ef80c9d1e39ea82d4f26ee8e3cb3e20f1cec14962de9671b73c47bd85da6a4ab088d2130910fb813bbe7e415f1f75cb655b40e7029f85582de43c4143dd9949a9d2bbe74bdff5bff6ce4135261f1b799d4ffcf71f87e49a67ba79ddc73dd3f3c56cd4cc67f54bf1898179ab1f7ca4e6dab6a1c65476d4ed6aa69a40343d634ff8428e8987f1f84db197340de0b526f3f330aee62170ee1bf89bc38f1a5aaee85166a5ca554dbdc13ef07ad050f95640c3350db7dde78881dd0f4ed459eabbac35a39fc79ab8f0b193017303f379c057a9a0d3053fa234647f55852b8e556067a0458f5aa3f92e8b0170b32ef82aa8d76b450cf8e498c0672bee2d06cca7e993035f82a34e772fd086602cd3f0dc23cf1c4b65a79e9947887bc2f90b340fabf8460c0ae2ebf57f532ef07bdefe713d0df52cb93fd5aa71dc55b58ab55fd4d0a24de3834a8757eb75d370e72533eab4c1178acf7bd77084b7ddafd57ae9959f31c11b3d79f85944eff4c01a3535fb5c1e82d3de10b3436c5dc47c68daafb336f2b8df997959c0837e429c178fc7be04cf8198332be15541ffc59afb31f874b2ef83ab8e1a14754c6c3c90010391b511f4018105255ec815cdb6f67c9c7e2d3ab8ee5f5b473008f90be3e4d2ac5d3e6b778578656c1dc997e4797c54e97aa6aabbcad63cc4b3a1246e553f2b7858fd1606c3ff5dfc4732f85dfc47f18fce1d8cabd2729b845f1b91b780f514180f78b3ea6ab8465d4af011da9e137c0062a894a34c1e0b1d6c5ecbed11d77e6af11db7f50e736fe8cc1f47513173d7f34f7fa7ebda12c2575a55eb677890a6ebce93fdafbd59b3a3f617dc8a065e1e1bc7616d99356613277f905bf1f8749fef16f7fab998ed9aec7e573df9f9e9730f7cb507c223885844f45dc503fdc2572bdc5adc4ed0dd8f8d23bf5baff4ccc65c6e8eba34ee73a7313f4e47b1e09c44b7aa2f7c9a91c75ee30a3ade2bf40964cf25ceabd1787f6cbd3ea4d6d3bf5c1f6a936724d4d434f9d75185b9689e66a54a575557d7150d40d538666d6c3badaaa9d38ea13525fe22e049c6d4efb26b7bbaa686573aa7f625b01dd4b7442e44dc897ba1617545b72a37e7128c68263af52637094e7ae0b4d33072f38abcc1e4be3431b1b730c706572cf099e715c2ef8ff83ee8f5dcd6ab9dec87ced3b7ff45ba7e37609c6eefcff54bb52d9deb98b65f7ad778ffc0bbe6724e7c49c1c75b7f98fba1064efb71fd1c55d273f303fa39f0d9f93897c5c42e1fff3efdc3bfe0fb34e3549b9ce0a066c46b83df08ce84e3620e3f2af7728eaf6eac3b4ff6f9f68fdc9b3ee42115d7c4aa2c831c3ebecee53a0e8fb131fce0a083d2f13975b83ca2ae2c7a179a7dc680fb8a6893c00365194c43f812b45c9fc1df35cf5b781298f81b9a52057c8bc593b0a57f60cc5c7ddff9957a5663145822b33f42fb70cb3e8c594780ef657f230e57cffa5ec918bf1c8343d4b2f4ae08aef995fdb535e36e6dbd562ee6d4f0d7c7db96665f911aeaca1bc36be1fdfb55fa2befb551ac6ff3c41acc670fcdc2fb7a98ec879b3f54a7f443fc563327df78f35ce282bcebb8a0f9755cd0fdaf70416569e31668220d1cb7d3e609d5813a85f01a3a09f79b38c001b1eed429146f8e74a44423d9cdab2db48b8951c910a301e390c267d267fc5394da43ceeb2e2c77dc296bed17a2cb1b1ff5ecc4f8cdacf3f0fbd80a4ec4d6c6fa76efb49ad9eeb81aae936910e8302eeda3601858037fbc1daba507d000a98141bc8f7c6aac2f8fbaedce61e6a4785d979d7e226bf07d89010257114310d00bcbcc4d938bef5aeac13b16abe8922340ef6be24e0a1c57b4d86fde4f96fbaf3f1719d7f8cfbde5eddeb245edf6299c9bf5b127f872e892a96d19c087157a99f0f1b0fd08feee95f485491f9e1372aa6ae599dc6969712427d68696e63efa1fe3288fde68fe9e7327ac03bfeb6dbfeb385aafeb937be7008cf88cfc53f2b9f2e771ba9ba974059c2034583dac2d25715a1d8f14b991da15bd2bbecccf7a764d2fb680071df5f2b1d7da1a582335b1665c8d66b77a5274e33ebf5b2ff7f99f8a3bfcc89e53939b005fa2de659c7df6691b7a6a56d6f03fa69f02d728899fc7e9f04b9a2ee9f18539f4c09805fc5f1323bffbfb7ff8fe18952a35631edc52cc03b337a9bca8b583da7e3baeca96f118b02e826729e049053cc3f53910a39ed1f92a2e1bc1d794f0aa367b037c3f8a965abac8855ab52fe1817d5d973c3eea30afc6d5e4a8515f967ae8c6eed1cb26bfd9ff67f4329ff5b67faadfdd87ea0169411d3b68b26bfaa378d0e76aa0bb500d7f5de3babf562b30b9807e211f66628e19ea0d79b6e450f4bd380497a73531944a779eba8ac35d5f1bebde381d4abe94f9c88dc861170d8025f136c455f6f20af8d656cd4ec003eba874ffda9b382afa17e8f2022779d059d93363330d4b78bf6bf41b94f89da820bed10b61e20d0ff3c7d17a3aeb6d17ded73f13eff8311fe6bff56ad48ce54f7a7b829e937e2c6af6a9ac07a7d465b2b2f78bb1e099fcfb9fca476727f14798c347e0c6fa7e58ccdcdd723ffc3fabc787cf7bff4b0feea8bdeaa93a2b0ffa955ef6d95ff5c2ebfd95c7cde5fdbcf05c356bcd0bfd8efade0a35faa8216e021e8c9617daa6e1a44c1ea16b58837fb2a557f742b413912b0e0277550d9fcd7eba1838c1f846dd8089b75e3f3d8eee16df269f7bd9bbbd6c49bfdedfe5166d4bff1775f0eb3a488f45330d57bf88d956f4e1f1ca5a7d2b5a7a87afaed5c7c5fbd51c0f3cbc00fb547ae729a7f4c90fee8b1fec887f472ca70ed0e9fb66f59a6ee32e71fc7cc641ef7c409abec90be0fdbcda388dd5fda09e441c50a727428f6d5c95ded95ffa5ddd36d68e72a9c3a24aea1498e7f4a11f57e417e936169c70bfe9f0c5b7f3cb1b35edf77e31969d6998dbbdeced586c5f8fe1bceb2976f875e22d18a30d802b3b7b543faab7ebe5b34a47bffbda4aea6fa738b4fdcabeb97ede98d8ca777da5dbc6fbd7fd7c9fefd2d9f0ff7ec6ffd7d6ccb2d4c406cfccbef54ff605e9450c8d9f7e3b4927c7242d3c7016f0084c0c74bf506fc9cae0628c39e2f349cf18e26d9d69389fe97b6097afeed5c9f5bdfafaf7dfeb1fcbbd7eb1d7eff5dcd1b6d6512bf7ad8ef5ee0d6f6678531cb7f0e6fbf9eccfc4d57c70cc1d3578c3f35feca5d951b7f0236ca93515c35f56d347c91b57cb200e9726ff32eb664fb46ea8190faf9d02da556ae3f8c06b0d02d41ce05d8a63a2b621fe9d19f00d591b9f98932a8bad6b513bddf45d6823ee0ad7ec0de89d56196afdc9b070716c62f3a891480e64877fcb5a7806b57158dae306a261dd93de5a8c3dfdb65c217a9af57e2cf6cbcf31f63f8073a0c66579541ef63b706bd1879a06beb258ca69d013ce63400ef1d2a71650419f09eb43d7f9d16ddbbc2ace7eaf83d79a44cb2670e98d901d755ef49e06d0fdf3a81781de8be5de52d3e851b0e81bf3be7c966465ad866f5fafceaf27ef09fb77779ec7a21d57eb2f0bf041c897486627e1c6f6e1b73ce55ee0c15f69e08826711f9e1ad44999d0f399ba47e7e79cd3a25f0bbdab9a3116b46ca1c3289a5f01637ad14c327319cf252e1b886e16fc46e3a32667d8e31c8f82dbea860f3f17fe6850ccf4fffdccc1dfe5e03db386e5d5d558ed8d37fc656fe741f4c5a3406207f46a9281e34dc3dd5957fef6fb75ff07eb327ca83f021ff5bc707fa10bfc4b0d8fa989fff7659d30f794dec2e4a02d37694faed92df1f9c3fdd79fcb9d7e799a3d7cee63bfdac7d2ddf5fac5be3c403be8d1ec67ec73e62656d9fff6dcabd1274dfb07bd2d834b5e99defc4b7865d1c2fbda14fbfc65f1391fdfcdc777b5c38bdae002fcdf097414af61fd9ec22e3f7a8beda36f3de38dfa291c12dfdbda182673e0417fd65f6d8013aee08f084d36f21aa3f7da8e2696a0e6a3d559a48e641b1d35744c26723ce477d462a9a0c76abe5bad67657d2b8ef0619feffe50eff70ff6bcff75fa4bc9fd093ece7f8143b67ad6ac77ceb4ffe3403efa1d31a37bd4381be2621fdefe0d78f6bcca5ff4a0ef9cb5ecffd9bd7cfe523c3ef8c5e368f7197bbd8bbd3ce4bfc04ba237ee03c333a01718721c93935abd825d51ab4160eb83f4ce6bc83f50663d210ea099b4d1695cf56b6a4e501b516a8035b0cbadf537eeb7d44980c6ae63f200e4ca4dbf5d5551c0daf7fa59ed0a5f620d5f74e21dabad471da038108f0047fc031be007a0a300ec81ff04bcd1c30c3c01e8782c1bd48cc4e38ad8d67e4b7fc958b476cc71964d5ead9e715d86267f5936ec17c1cf50cee188ced0b2c95ad4605bb5a1be9e6e47b36bfa50ab2a3aa156c6fae5bb3984cf499cac43ecc3f91c38e76dfbe8b7e271f4c772b47e191ffd66fdeebd0f5dd4cae76aec6b3e70fcde3b5d9d545fad0fdea60bab5a6030914f179e599fe1b7b8e7ef5dddfb3fb7065213b70a9c5029faafada6663a741d9370f88c5a2dfab213a7f30a9d5afdc812b8d0dcac4d550eaef2b88a7ef778edaf8ec77a445ed97847d3b3a2d552af162ddc0371b1d4f7241e067e533df17475c46fe2c41ab57354f09180ae15ea1dd02d6ac891d7a881a3fee240273c9db78cb9a033df8cabac2d1a7b2cfec06382be91e6a7a6961b7435a09b2b5e9866ed2337963ab5ae864e52d15b55c5ad1a2dea69b67afecc95afc4e68db9b77d2fafa0a7e2e13eed15faf9e32a3b50ef54d5e3145a093de540a7db1b93abdd8be1f395d1bf335dc509b052b1f527f7e9e53929f537c5781dbe898ef3845af7aeb27ecbd4b38a641e5afdf43e723b336eb977c32bc2518dc91dca6392ea2fc4c744ae890da9415b8a5fffe4000c7bba6aa536e6c4e1b2d45e79b8d1774f3d3dce3f73f75f60eb34bde9dd5fe2514d0e8ff8f92a1eb52536593069b9acd956730335ddec68f22a754fdd0ee484d30b9dfb477856b857b1321fe01228ea8ebbab0df1b0e6b34bacd752e33266ecc8fc12bea3c2a13571233407ce35efcc6253dd3135c1d14fe1ff856324fd9455151d55a8ef94f89bd253175a56dd67fa8fc7a54ffbf5193b79c1077f83473973c92fef21f610f60bda58f40cccf58d2e38ca9d5e023887e3543feb297b6097f1bbd553c0358567c2d2e17e7ad64aa00692f835a4f9ec56bf9374363c16b3d52ef3f2f572af9f3f73bab7636f592659899cc5e4ddd416d031b5e672eb9b09bffa58347b12d197231fb4b47ababe1ec027073c6de872587ea7995fc0ad4e90e72f5bfbbcef8ea143deb71cee52dbdc0731a0aaa9770ffe4ecbfe4aae541597f40dda96aaeaf331dd99bd07fa4532fe3dce71e58297de3826576badde07f1259758139387f1f5c085f83fe0a594cc505f38a8ededb5e6ecfeebb6f086edeadb9fa983f8b1bd6a52aa546a8aa8fba18fd92603eb8d3a9aa9cec3b53c2aeaba518b760adc6c2f1938e77589b9c2d95ff4bbbae0ca881ee21ee3b765dd0afc632f993ae0d6495d433c5e4cbe1fd1b30971d7c38b9ac243025abf9314ba563e7470f088fd20b8f08916bd5e68fb23ce5ab6938b38ecc1aeeb3dc6f2980782ebc2e7ea25f7a70b5de1d19d369f255d96f6d1eaec74e7c4f7826f460fda791bc7937a5978f6e6bee2d3bd8137845973cdb1a1f74ffd98e551bdfbdecb6392963e35f04afbbd3b7f6c3db0efcf7a8c539d60d9929b974cfb01f9b6f8ae3dde3fc4b41e752154899c6bffea7b87669e03cf432f82061cab01fd2ca895a24ef42b89717e332694fdb98d6b9b3edd7ff5ffebb05bbf579b08ded72656bf559bf84d4de1e6df7cfcf79ac5bf79fcdfcce1dc71d50fba1c6e139c9248f9d44ccf8e9cbffd809ef85909eca289e7be493c9e82db6ad60f4f4d1d8f9a98d0eaeefdca0be8f7bef7fa1f6b29e757e388eae971542deef36b6b79d58de574f46f3efe6f6841e737e9c3fd58ec1f7eaefe4c2fc9ff783ebd1ac02f07befdda2f7ce032a68e0ffdc061e13c85d0a6f5e37087ff4f4dde97aebe2cd26d697258ed95e6b5cfe31b39aeb3d9b0f9ecf1fd8fdc7b9d0ccc3a183705340f8a466aa3a24b1e35528330711ff9fca8958e249f2f8e92a35b7f31e22bbf2bfc6d5c2d6dbd12bf131f1699f7dfe1ef555c768f268e427fcbc498128f02cfa67cfa2f200781ff16fc2a505f088204b11cb4bc6a6a764393d0231eece233c967104f0b7a48406b2fb21e124d727fb29f0fe72756cf7e87cbef396fa91181ff1f2effbf1874d7e817dfb1647f2dd4ecb757f151b54bfa426ca041568fab87105c72f81ba9200e516b0cf4c0c46ea5d55c69c4dfbf659ed63f405bac8b3bfbf6ef25bd1f8a1ef563fb27eab5469771f7817ef28a9e1bf87bdf33b1f9afb809b7c611f075d9bdd933ccf5b9a5571cceef57d1f0543c8e9c3fb2ae70fbdae1c5e1d575a0bdac495dae275d8eb6e9377fed1d87f84a2df33ceaf4863435e61ae622a55ba40531da9ba067f535990714a582b669bf965ab6e44ad03771945bd4ea1e5895a34e57e287fc9ffa994d6eb535c79ea9f4ee39f9063d73bff319f3e1817c52d9099accab6af4c29a07792df23fbc96befba7961e01d0923c98efb9da38f514fd40781b05ec6d65674cef23b969d45f117cee34709fc2d1a5e7e941fe771857b9e8a83ad6a7a8199fbd4fdd69b89ea974f7dce9054c59d39d866bd4749fc0752ea54e9b83bb063df9c7e2d03dceca76550d4d6ce0c6e19d675ea71ea9839357317066ab8de300230caf85e8d67ed5ddfcfe412fbc87dd723f7416fe9f9913fed335c4ff779aa8ad193f7118d38fb871cc1e5cc3177100efa39ae34ef5c6d01328acd6a5d98bd0d730af51bbc25d84db831ef47b71f8e0494fa337eefc8fd9cba5cf6846cd20d442e0cfd88aef533386be7ee176fbd8c0f1f89eadd9c73cf1f96ef5267064efa30f63057c8ca7a077be2d5575e7a1c6f388f5a197884f716ce2b6eaee999cb4d133e62c7c15f433709403e736ddf268b89d0f47bb6226b1efe79ef51aa73ce8f780dd494733d4c3a2a837aeb60d3d72f148fd6678d46e4be2824c0e8f3dc0634f2836f97c4bbf34f8509af79ab8f13469239fbe42b1f567bdf83db2dc4fc1032cb1a6b32fb73c80f7f38dfef5664dfc3bee0f30491237b297d5ef7a5de3735f8bbf77fdb0f36be0b7dbf44f7fcf2fda427742a5f0c473e91bb02ce103de2af1c60477cabc0f712338487bf48dcd1eec16e815a8567aca2de7d9c4e31ca6feeb13f40ae3067c0ed40cfb0efb0aa5e8d3e2b578fe97c95936fdf6c2bf427c4c72de53af6cf26af8019cffb031ebf0ea3eafcc5a3fff33f5f76ee7326fe0f3562783c04fa293c7752faea153472f3e97def94b1f1e44f0b92b02f839634cc6c4b470bdf5511bbe3f1de86bd8f7c7d54ebcac963e752ccb007b0162a3a5680589ce5bbb841f8ada40c7d21f5773a5e03f63d6dde10bfc33d0938a0ff46b74ecf1ad1e643d063fa9e4781b886e72887184b135aea260d26ea1b5a7e1d3b785c6bc794ca4cfaaad87ed407a4cbea24e207aa04e2b9e2bf54775616ed42bae9e9cf57ab1ff33351d3e126f98cfcadc36f698db0635e38c6d0f631798817eb300c6c5c4d94bd1d4efd7161740dca9b9d7a317f480aad82be0fd0cee594d7f421b1ba02f54ebedc9171f00c6c84dd05cf506a0d7c2298706cd708678e7775eb7f985d7c09bd7e9e93f7c1dea3fe8f5100b64d6f84332e8dfc879d3eba73f1467fa31ada1f99ab5357a7358ad5905ac617490b85462e07e9b86e63d77d410658da5a7d1a7071f58f0858578e5d35b4ae2d5cb3a1e39971bc62ee2a7eb536308ebec49c6afe046800b6cd9b70097d2ece5a22dcfcf62dfc775bedf638f7f458dae2934ba3c3de8bb664d27860d5c7ee8cd03bf6c7139f41342bc0ccc65359ca96a7895b30f8dd64e7ff7bc5e525347f288b4c0b524e604fd16731db077c12f4bbcc1343454a547498f9213e3f8b24c66e541e7c08c37e055ef2fbd2295c57e52cfc2ec811683032fa292fd65d407b79ee01d8e3a8da5170d6c4f43ac4289bc7f014cccc4ec5b357bc611fd53532d581ac16b024f0e6e0cb49cfffe7dcae74f29be65381fbdcb78bf4f17588cc03ec767df1535fc33a7f4bdd4837e9df0fb9bfbfc112d3207f373bf9a2cbcc36ef199b35cd3d685f664f1d67b073511cb5b3e7b2b9ac7bff626d6c94a857178d933ef4bcfbc5faba1bacc4fe8b973811988c351ab52aeff7c5fbf56cc4fccda7760bd1fb8d303f10e0e3918dfd481bc6ac14444a5d3ed23821960bdb91f2ccdbc14ccc0385ddf3886ea5d31ebc5c5acb75dfe99fdbd0fe1444d1eaba15328eb54637d950b89534d5ca3957d2df9f7f67f2bf8c3e218de89ef836fbaf54e577e9a9abcb0306b0cf45510ff484e897887392534d991275093c7514e84fd2399f6eda3e4de0a78c571954367785599f5ebe14e9bf538042e068fac9b66475515c8359f80d1592b65626c6800e41e3eebdec4fb9df79103ef13b3ae4ffb8dda974e5e45f5341c7a2a1d7e59a4516f0c5dd3d50b394c5beebf95428d5847a71abebefbb21957f8aea233141d558ab5bbb5cfe10b4f2f7107beee2db0d62d75f7e99b92c2a3d7e4d4c358fb45cfec05296ac171b3084bf163809e20fb6ae1053f827e0deff1a1df157d5f30e7819112acd4a4bcdcff6fd43c3a2cefbfb67f28aeff03f32ca68e35b42686573c77b332b92f6be06453b95fe671036f0d175e40a92a992f4f7aaccd6f9d31bdf76be195b5f43b9cc04787eba8895bd023f4a865437f61bd81a79768a99b182da68fb4197b0e7c7e4ef41fc2a3cc3bfabea93d747b4bf0bfc16731f9d1f6a8a74ecfd675b216dfadd6267719c89ec4fdc3673d94bf9beb905777e06b622f1816c461db3872e078e24dd7531b3ed7d6a7aec3d64535f55ee1b11ad0bb4eb9c02a337eabed7a851ee846f082e849f47b660d48cedef80e7d94b7878e73d3664785da133165e34ad14fadc369db7ef6c843bdc2ea3bc37b69cb5819fa26a8b9313704de0dfca2863cc6b3ff9e60e24ee67bf2184b78686ae261e11385b817bd24ac3b81c9bd3afc74bbb4eb38e636e26aac27d25bafb0a736e06020c677cc18b1185e87eb71448e2663d740ddd63309175eef389f6927f776ced3fd577715e99f8bef0febc2ffac37bcc9f3ea388c9c69b85b27531333a37ed01ba73b4fedc5cb1bf90f7cab6ad58027fd65912e0fca2d7a8560ae51a7102c3570d5b3b2e9b0d09807ca413ed2382db9d60f678faece7fccee11fdcebb2c1ed0abccf63acfde65922786e0821cd4366a58eb8e591f47bd005c14931bb513b32e54cb926373c91af5063ee433950e9ff5ae084cee5220a658c247d97a05287a0c99f5c6e9fa9edcdfcefdda909cc16573b917c6bffe2ef0b236f36ef83c4ef51a6b03aedfd6de8303f267f47c5043be93cfe4d0b3993a73a8799ab573589898c15b010791ff2de7e4c61ac9cfc577ed2cbfe7f2b7cf7df6f53e6bf2ddb2252f34f2157cc3a38678e8487c4db726d796c7eeef7c443ebfe43e77afa089856bd0481f85f38fda5053c46e2ef6dc543c2bb07750ff69017d70ec49bcf721f60287e30bbd1d9fb56bf4c68971c21a3f61fd1ac71a862acde4bcfd9a1874e4e60ebc50a977e9303f37fb40cc5a623a7fb9f0940838ee96c422989c1eb1e652fc5022ee7b19bd254d7c51608db0b884096b93d1c9610f767954a1261e5c304f5378a40f5f50a7c10ff238e221ccfa20e7cbabed51a5f9abf7e2734cad17df3260cc521e04e7ed1353151f255ea8d5f654a3cf80bedab2075f1dd433029fded77d6a0d54717deb1c5beebf1e8bc7f98fe5f7bcfdac37bcd57ba5ce8a1a08b7101815c7eab374ba2d4fa2f942accb129edf7cc49a79a09f8fd3f918a9d0c64ac109b5b5993a2a335eaa2d7a39d05c445cd43f2d1bd43b19b3b236e9a5f41a86f6bfbe3763280387430fec388ee83f796f6ba0313177d48820d6c61c7f7692cf81da5baf48cd783739a27d94cfdf79ec66756e62c2193c6caa33067049fef8c08c4bf359f3141ee7e09b802fe89bbd9ad709dc4347714d31e3b8d5724d759b33bf94ba9e39eeaa326b9168af986bc39a9e2778ba961e08e6354305ef73ac7b13bfc306e27376dfffddb52ccc67c0bc35d7b3bb5fb8f6a9b9bea8d34e3c73ffe51ec9355dfa524b36f1ab1c1b5eeeb6d6ec9a7c55ee37eb8a3333574d0e5270ff661ece3e731378ca29dbf1591be88018666aaf6986f1460d8ed7e30fd7e8bc3eca7d901fea09f1585663685672bcc2cbbeab81303722779a9a7f95967a76f7f98fba9d9835dd519bcbb196f13a5f5c6319cbb6aeebf13a14bc5efb5f8ff778707e3faf35ae33ef09f41aa0497b523266797e70b94fc88998eb0937b3e07565dda5eec6d294fb08b50e26f65a3abcbe6fae1fae55fe7763bd1d9fc7f0e1e21ae3b3d21329831eb56a970772c163c1db16f4f6a25fadab66a78b7ec1eecdf52c91bb7473777a31e69a6ecc797178f7d68bed6faee7dfad1d72ad6dcdc5ae59b3c81f577db32eda47c6ac176bdc13e6a3f80090032bf3dbcef177d710beb4daac83c4121e24dff3795d797fe00580bdaf1f14ac159c5ef5891fd52b9dae571ea2171e05f42002a6f7e35ea18c37dcb1195757fc0f315fbbd747aff4c5ce1c75f0c4b5604bfe05fea5b8afff0a4fd6566ae71f3d0ee606eae453ab596ebfb7fae5fb5e7bc0de96972fbfe7bbc5b787dec3f7d1ee13c372a5261e4ea881978eb0ded85a0ebcda50df76a41f583ac474c5e03e12b71b419b97f5be6d69f51313e8e52d1de072cd9a807c02de912dfb7ef0c72627badafad4c4da42d3dcac3d661e68f45e9033bbd2e32ba15d5ff5dd33775af1dcd877b11ed556c73a19041ef39525fa32e32a6ba5170c0e03d6950eef68b9fc4b5b3f307971f0baf6b6ec414b64d0977823139f6ef35d336222cddc8016cdd63dff2d70f51e7e5de40760bfc7b10e5a347935fb463573b44c747b8173ee25df7ee884bafd268e6a266d493c4dda3feaa6ef83a390c6a56efaa25d30e9413307b5b208b570dd043d62cea05de688762fb4b89281b96e858375a6615e9798fbc0babcf91eed5f7b3e47bcc9fdb3917abedbed7d762f24f6d9172d653e22f6c8647f8c1b59ff11bb88bf4b9dbcd1ef10edb0f3ba879804f711eb2bf0a553ea70bc5bfb885b7519b3958cd9d17740ad58e228d17c6e4593198fd893ac1663c3b815e3c4d7f4ca06d7117113eac15be267cdbd6cc07569a155047c0cc632c71ffae8b84fec7140432e6a2c364a43ab995a1e662f1f1353209ad1c08cc9388d701dd46d1a32d1fc4fd558fe488eb7e9f7882341bdaff714ee3c956a7808dd5ee39c1c85ebcfda0470174b6881c217d745edac418e02ccfeca831fc3c6f1a6a1f4e4d2ed111a26dbb2d68f8547bdbf8767459ce0519963f13dae8977170313fb9a31a97c3927f85c376b3ccf863ffed09adb47f564fdbc8266489ddc978d1a16fe348c9abfc0038a7ae46b8abeb6d5eefc76d66f5ea4fd838e4a27af76af5f333471b3e8028b8feca556b01a9871b27e77ec6458f4debc66a667f65cd149bc3abb63d11b69648f43ade99d39c6da53e99d89679b71ba26975bfcc9a993f2f0fa6f378eab95d733ebc14be61d7e3ccd7adf3fd7a3b7b8fc80fbecec8a7611fbd996535a9ebd42b176895ed288f7101a9e9137ae1e5ea85113fb057cb6551b87f611f50e47ea0cb5764ee895a2f6486df993a65e16fb2c55e9b31e1c049afe0a5247115c33eac0d8ab1d959d0453835a8c2bf557f0c0b0679207e573cd9a38ec83c2abc017ad1de86520b6600dd9c4278ee828378b507a931bd4cf4433b1606c036d40e2016ddf7431c0fe5c63ff4ea11967b5e3fc0e6f08dd1d7554a9b966197d23d04b9ab4c4ea47accd9acf91310f4e240f4ebafeb642fc9acc80e57679ce09f555e841e530ce8b1be09158a3901a5c443d67ea2038055e1b983161e3b71ad7aa9ad4acb9472d6ae3697e9bdef3ece1c72aeafd5cddeff64f33bdc63cfdfe67eaf67ca05fe913ef5b1c55857abecfbef1d24fc3c811ce743b454e34671da35dbde8017aef2646141e48ec534ff374785d9f718e664e53d7d28c61e8d8d6c092a29f11043a3b350a71ba32732900170c3ebed0d094f7c6529b1e0abf33b25ed8d82f2ef6a583f68857d3ed96de29f0a48f584fc673f0127de613f0df7fc79b59b6ef79322bf4794c1c6273a6cc2736a3d3643c25d9a95683c023a7e161a6d2fc590f026f61f2368ce9b5f9fc668c9c9ece9a419d466a1cc24fadd347bd6d1fca5fe6f779b3f8b6fd1cebefb887596975ecdeead3a2d76cfbe69b0b9ddb6eef619f99b895d54c4113663843fed379ed3896672b3fa89fba1d67b6ca3de8693f16a88f162676a686d3496ace35f78a88eb2b704266fd2f7de2cb3a6ea3ed3f4add366ec9419878e030548589fb5dee91b97c561317e58227c7dee202e736edd758cf9bbe23fdca7a5c8d14bc3eccbaec16d6e3fe488f67bcb749a681f026772fa2b318e8bca875547ae80f7a27775c4d0ed03df5cdf71c5ee0dfa31ab8a7aadf4adfaf51c41bba0ab97de92e06d0d682273ef5b94ad1e72afdb32f1cf96a7fc76fbb710e1d16de8f1f0f33f7e7e7be711de7426cc5085a6482517a852b5eb613ea25a7fd320127b65fab48d5dadc63c461a2fd75febd56bbf3ffe3b03bc797547ccffe2d3c465ba3b9571cd703db2b8fa55ee6b8c84dd33bf017c85d54c25d3439afe3c6e1c39705624747bcb994c48ed91bcc489ea21e592d4b68a0a1eeb36e2d7f93dfabdfbd8fbf3bff9ab1fc38df2dbe3f7cf6c1df7b1ab9e496ea58fb2696f89517c650b4ee32979c09d43b3ce2fe548f3c17c12f4fd91fb5eb146a1dd3a0479fb395275e17f4dff9066dd65ae2f652de6fb1521e312f5b6f021fc0bec43e451b87c0889cf879ccf3f54c7bd7b579cc38cfe92f2c3e0d99d4c6fbe801c7e1f6a81af3b83679b5138777129b903789bcc3628cc3d14c83c37ea30fcbccfdf9b4dfdd2fee87df3f71fcef3534b1174f1dfaa64ce105010c11eae2e6be8297853a7b23bdce57fac0cbe62276a12e82af0781233ca052eafd4d5ec5b5adbbe9d9a98ec3d1b3768bded3003a934e1cae9fc7265734b1c8b6f4f36a777edd63e17d682dda7ffd398f46bbd53e6f8ad9eacff467f9985e573b0d779eda04ce023e29c82f1cf490c95738a2865a4df8d8ee3ce8fd77dade17faddd4c576def50bba38359f01dfcdfe654d1f01e7085f45f415762a014ee461a69cd25955d1497446dff58e9ec279257f3fc5e4d6411f759c9afc4c3fabbdd4a2a9df7350bbb397dc15de43a9e93dc3daa1ff43838f368347bec9f93eb2fe2405c6d7274ff58d7e39e272faf7acefc0ff24deb8e3ad2af41efbce3434fbd1fcc5f673927415622ca6c0c03baa417cee29e44e26671fb53687106e90c5753829f29449a9ef4bd60fd8dbefb01cd030a3368c37ae4ad4e31260f383133968a86350532d5cbf205faab286be40d151550f1531fa82f30c27a27b2efecf55d13087c271e43ccb808f4a722cf0486b25b87d72c1a12be3e3b15a55c07f56b1f0a054430e26faa3bee82ab96362e37cced1427a774be2f9cd7717dc84f94cd0b96bb7d4c019b02e895e363911ad120c4902bd5df21e926fe4b2ea8fe223884741cea90681ab66f44a41fd139eac1372a604134bdfd935f59da6419b005711d59dd61f62897e8727521c0327f27263e2ac5af03502d615237f4c2dbb1ad7bb915e2cb0a85ae98d7caebdc9ebfbe2031e59dc99f83e9bb5537aff0dfb9d9df709fac1a25d8c7b3f11fe85c92fa3527ad6b26762fc113b24facacc45876bd5043daccff6116b9bf95f545aeca30626aab4dc1ce0cc8167db04668cb8c2bb3639756b720b196f01f923825332eff3f05d4ff4ddc0a3c52705e2c1e59a31231c90567b4af86ae67dca93ebe002f7407cc141be2f74dcd5793ea166add255acd2397cf98973006e0bfb82f8060a46ada0af0075b90ef01009514bf6390e6219f71c87522f74399e87ed989ebd5223ec1317b85782d5c8a8433fb5f580987cbfd9099e83c449efaa6e6da176a1f0f322eadb4f032f7944eda625e6a290fe7926dc3f738e3ebc7f89217d588fab6d80bcd56219a7f6f36582f78e85fb87efd5007f413fe260416e20391ebc0752b717fc9b39166b864df2ed0739eba84d2a07f78f98094fb1ae24584f5c1bf1117280dde6f88046e4dae48bc0b2b6cace0170f5d91f70e47b822785fb20183cf123c2dcf4c79d665174fe1def8ddffc3f3e080ee3245857f94c919de327b5472d18f7aa60cfd672e2bdb32668e19bb1593481afe487397d19584ebbae6ed382957dfeff14fb1fbbc2ffcc7baf7987721ca3cf754ce07b8f98cde1fc8f854f06cfa21e71434b683ae9b0441d953c09f8797bd87b0636ef851e4f49ee9bd92f82169e64e859590ed3c4cfc5a3ebadf6ecb88a038e196a2a24830beed0a07f9a869173ad864bbe8eaa3baf1af14737f1b2e0501dbd35b1c6d6d5d0f9c2a3f022b7a54aefacd791cff54f1d74e3f8d4288e4b95ce9f19cb0e9ff5b7a2669f7af4f66fd4e302df633753e903f6446ae2ef54c2ba556f5c65bdc5003eef47dd0e157a6f261f074eb66884e778d46d64bdc8655f2c6fed0b20f7caeef39fcbfbfabf2ae7ba556356bfd524bfbd5eea121b5f1e552a5c20f456d1c77618ab2c4b45bd787869b13eaf0262da84df0fbfb6a50b7f8b2df516e08d8bb91941939e1a56666c2fa99d891c7ffeacbe036733433d34cc9582cf5756aa543c21a8d956834b1a2ea923719bdfc27031fbfaff3de5bab7988d7e2efe50af94db732c55aa7d19acaa518c9cd6c4b133faf628b770c52bbd655d3a7090ab547d1343348b7069624862f05ae158d1af038fe7bff3f1179ff13735fa27c72bbe98ceb8cadff82b4478ddede7d95e3b4fef9f38cf6fce3f33d6df71f6a1a39d0c0237af1eccf56f9e068eb3aa26262e25970239406c351d44d30efdbdfa9d564bd82ff52330adbe667dbfa719079d797253bbe6d3bf685c2917c709c9b7e563c7d5f17503aeac7ffedfb5d7f4f19a05f2649b2bf7191b87f38ade2ce8d9734fc5be4c9d6ef083883f3de29e5b5f9b41e0eb6fca6af935faec13ec2b6884f4bd8e4f71f1fd642c1e5eaf29c4c75cf91b5f67e6c19479951e044d21585dd4ba2a935b44d4023039d0a3c9a9803721a71fdc04335e62d4c24477c1eca92fe2fbc9dc8dd7da2bcc3d04c6b9d37703578b38b0eca8c9e1aa8113da30475729ef93f91ccbe64d2e8b78385f9bf180fe652af1770a4f51e14815828bb0bc4aea70c9fdf9487c9b2df7c3e3d237ebf0c3fa934b7cd5c396bc5b135b55980b35ea089227c317153872937799f86ec97c720acddf13bd04c91d484c1e07fd49f1d66f572f8c7733ac1766dc2960d8e16175d4e0809978b63063ba451c6bb1fb6d899a8f89a94d1c0c8ce29475d878807899f51d70014d3e6c5e3faca8e38ffa404f78461e797fa3978ecfd4ae3cf43059bf47bd4d0f825a496e0e8fdaf6e15937419d9097d5c6a17e1ea3a60c1cd049b405d01bfd702d69ef047188fe29784dafb92fea82bb14bde2178d6d7dcefcfd035e937ad0ef4133d129fd559503dfaabcb2464f232f9c273b076fd14a9d72ff865e1cb0cda85b9bdf9fc7e9e84b8a182b179c522ebfefbadf6f9bfbbdef4fb3de6efe38fa637d536f8faf4c1e9757c8b72a706103eb65990cfa8eb92fac69417f91bec8697654ad99234e304e1fbea4696ce26993bf06fadef2f6a24ec30fb84cdb931b74f5909a35665b4f51ce62201cbf745d9deb27c189dc9d0cf9b6c95151f3a16e2eb40cf9f7bec59d1e593f456d2558885f0afc36517f72c01b161fe9863c9dedc1d6924c0e6b629789792df8f7e5652dbfe1bc8f8ef4c2ee8b2651e4497da7366b04bdc5a3d61c8775b348ea49137c66e82798b508bc4a60955afa0fe03bb0c6046e887d2f3c60a4ee8838eba407725d80515dd223bb82deaa33ae32a90750778b8ff80e5c4f715e791daedfd2fa6b07c22b31c76fd4fe74647dc95c677b4e7865f37be0fab2ce4e3fd328402da4421ee6c2078ff7b5865fb7a7e8f3126ea101497c94d93ff26713d714c4be9acfc85a3239338867780cb3a7e84aaee129617c846b74be87e6f3e07af21cbc3e8871ce6382da14b896ac9f9aef65afbbada99aef6f7546dd4e837c13f4d47b7dd8dac42f8c95cf5eae9dce157010662da3ae3ab13a05c626f19bab8bda6221faa6329e517b44dfc883f70ec649841a30ebd38ed4ac27986b1c53d477d25b8b41cb2efd124f4f0347e64d21f3319239143517f5cff3fe6feba6d0b1c878ae2a96da2b70a76ed17d76ccf95a3116e07b711db38bef29c7a3be85dca3f90b797913f96cd009e5f1ccfc22a7bbd18c0978bf38dff8777cefcbf7dbf5c2e4f6d2573173d38c69133b7b12139b31369571cdcf7af19d306e6bd4df31b6edf7c6d8f35073c7e75cca588df87dd2e1337a19f4d5b4eb9d231cbc5acd4eb21e141e79f732d6c1c936b17b772fe95304ce39fcd11be2c24d3c23f314df47c690d492b55d6f795e8c15b907e8f1a98e5b6de63bef57f79e4ad6685efb5a34caa5a68def2efd10cc1dbb56485dbd1b47f032433e4e1d32f755ed94eb7dc058b1c37f99ff8bd66b897e14feefc37717f15f821e8c162e39394dddeb1af3da1f1a3c72c42fe55173ad905ee2a4277b91c3beca8e636a1f898e7aa7c120fdb9496f1a46adf4db9d44bc6d8407d800771ae6a88976fe3053f1082776b5154e24b985e69c79815af1a43573ab2c79dde035e5c6e1a44ca67d871e06a5e44066ec3ccc88c1bd7a8e54c37311350cd4985788bbf3105ea2c055c5e4c86e80137481533163ebfaf7e675a9fad6f3c623477312904b3a09feda3a3df0d2db48381fd0ce611c5da18713e88dd34ecdfc4b1f2a896be951bb81163cdf771b6ff1be98e95db1fffaf3e9130bf5266f8bc54fd871c95799901363f625fcdca56fbc3a2aeaf195e2df34a1d719b09edb63322c6a9d8177d63e85a359320ddc491b9d502b4ba9e9083fcf4d1f797c1cced1fb8447c0fe32ff396b2d2096f48bf669e0b4abaa30e3b4d2d223d3d37e0f9fb92dca049a8adb1bf19bf3dd62367cf9e4f7bfc5ca2d798dab3c94e7662c78d40ceb3b31f08d71a987caea4d3aecf9886709314c3ee3c90934eaac86a39e064e5e453e3058e4365a3e217a4cd00747af695829d177d42174eee08fce7a5c7630c7115faed3a42da5e69f89e745df471ddf7cc6efaab5185ff6f6a199e3662d636eb33e51ab3982f7b9e5a968fbbcb9151b3cffb1dce7a7c5fdb0fa1c5f6fc61730bfb139d629af46b1fafee3006d05fa55f74cac444dd698f5776a2e897e0275e345e351fc1da3b327103816858d891dc68ec06280832f7b0f7525a885d650a3203a6afa4bf412f2ec050b85da2cf5e0f15a15909bb1a586bfff43abca5cffbb8e1f4bcc0d7510e9dbbd0d3a1dc4a65f777a179d9e9743ac0af5e8e04fae1d05dd06e8c65651a952e0ec6bd5c04fc033b9066bcccb83705cc0991ca745999838123899827bf62638496ed6c6a18e05e337d3f7c0fbd5d63ff29fdd5f175efdb2f057d9d37d9e3ecd56c74fccf1eb719ea0f69f1df5ecbac6b4e5a275fa9bf4e37fa5319da6d0bf30fb6d2f35b16fa59fcd58840e789b1d92e864622c7f55cdc9d16b025767a7c0ec89664d238fb73828339ee8055f8bb65a206b1f5e67d65cfa5494dc8b1bab1f34417d1f3c5ad42ab6e4e46e95c4a205f427924180353719083711b92e30b227ab93a1d25c51cb54cfac5682d5b6b31a58f4951979da2b5bd12873a00b9517bd691837396a7fbb2f0b8be9df1526ee74a7e8f55a3d28f3deacce2bfdc2181e3935fab2e63d37f65eef97fbafc755f4e90574a507d863ef7c5d512b5af4c0aacc62271b62416337af2273af028eb542c61a70b02e74774d4c38135f0462494d0ed9b29f0f1e90d9b7fdbc5226d75d5f1ebbebdba1b67207bd5cf0087fe5fb831a6556aa6151833b9817d47f49dfd565c87b15ef1fcb1ff8db637e2b6a7a474ce859dae0ba047c7d89d72783a0d1393c411a459e76237c165f3fc2cbde9db4710d3e953946d597d85bb474a7b7fa08ad9a859f9f26b387ed7f1356e537fa19a8794dc37ca69db25d553a56df8ae629d41ebc2591dfc06f5234328695f5b0113de783f89835f4c0d229faa655516a703efbac7db5c2b946afd5ac7b5be242c17b2e89d7a2de1475a2c3b9607bc5dbeffcf78afaf4c43cf1183c16fc09a7fd13f4f2ab4234a7b6bdce570d3ace4e9bb5e63d85077f071363cc7ee9cbd3bef66803e6d323ce37f2c81f840751cd3edad9d78dbcbed2919ccee47c27d1f63273b5d5d0e69ef4b8d794f4b203d65a95f0dd2147dde41ff0cc669f6174ee3398e3989828d5b7f57cfcd1cfd5e3ddff99ef8bcf75fd0db6e3ecf33721cf1ad8458c9156d6654ffe5703476feb82fc3f9f9f792ba5e5adc4e1432b9e51a51e380e74624cbccd7e03b010da233f2b81d679265e9fd01a6f4d2c4b8f1e60d19b69189b18863538685fd06f8db537c4c818c71d269beb672d7192f5016be8f9b47552f8e89a63c7a7bfb68ee8d74d8e3a145c3ad7743e0293905187cbcc91ec74f9fa2f29b81bcb52a5a33899910b4b0ee4e4c2f7e7c1132d95a336f31f7c6dccad52e2bddeb82a4bb39ed063c1e241868ac7de1e9350cf547517d3ff59b41ab0f6e05e3871581e34fae8ec71b08fc1bdd3e44669d87dce0fcca3fee71c7a3d873cf0e8fff13aec9fd7e1e29f5a87c76959528b5df0df3c664dbe83ec4bae89d7797cb30f4dda4234e4fa12c3e379b06cadef26700be08ac15f61031d1cfa2bb0ce0fcd009d17e48d7d83eea02bf30fe38dfc6c72b7f1f8f8e3900cfa27d144963d30967ec1d6a7466374ecf425811dc11c955ad2923a383ce7a587003c72c7e47f1fa83fbffc40ed86f1d1673efbcea3a78426479b57acc110e7869e16d67170a97ad6b74fd3b7cf27265d38642d783ebe728b3a89700f6bf80c0a5751f4373b2d66dd625cf917bc2557895f38bc6be07d152326528fe431fecad3e977f2ed05fa72986fec0d427b19fd7a5ff002f5454fb567731d60fc2bf67ca0e31459add3f8cc9d32f71b351993ffae9ff5003d98eefbb397158b0f8ff911dd8447a931a5ba124f1d7a79d05fa4bde4285ff2ea63dc0bfa9190776cf6422d9e1bc009d1ef8035b586b5b3d29d408f1e75dd5e87e5c4f9c1f56b13abc10e4e935c0ff37971efac6ef6c4132efd51553bf37d63139ff37c2bd1519e5fc4cfeac20358bff2ff8d437510af346ac3366f7c5a6e9ae3eb5d31ab9da768789c0ff57abecf9dbf3eebb46fe67b9f3e1f8eededc466bdf7c755fe0ced9a08f5c3f609f335f7ccfaff3470dabc8a2cbead49c349a91f0b0f3e01f4c43a518fd7c42f5bf670e08d68e772d613be5999a03f557a317b53c7241dcef4ec74486ef6f65fff78f276c7f9e7bafede1306fddffc83eb4b7654d59a7c41e07895dff9873366303135e373e89999393d175d7d130b6496af5eb3163e2126b22dade64b4ffa333ebd75274e6662d90ab5f1c6e4e8e36af8029d2362b16bd412d95b32e3969e8453e838987cb1129d3fe2d643c4da2785fc243eaaf661a62a1dab74374b66e010d333a15d7f49d3e5519b350b5c26cde3a6f4a629ccbe60e2f1f4ec91442f4f33ae57d45584ee92bed46d12ed1bb33eae5fc86505e6adb675d6e4463cf3f47ed7aeeebf367f65f976f5b9c6bda9d1f71d734f558bda65403f3bec87be60316cace1da7c55d9dcb22a82317353f658c09b55d4826cf533c6f263011dc9025807f6b8d80f32e78cc863a59786c7dae8dc33b99be4a8ddfc7a0aa3cb5aceabfd31af1ee204f863f072d18f5579018efd14b8fba132b1063dfee3867a38f401159e732d3c6733e62bd9874fd4c4dc5223b081b63af6757a90769c83a389510af666e9e7444e6f0dde72b526debb41ccd0236e2e3e74f581f60158b7388c7ce248c0e3bfc026ab57b868e9114bec9ff5e895da71cf6b729f196f9243a15fa8773852f489da9a382656e98ab148387c19a7c5017505b7f0a8677b9bfece74a677997758afee3ff79877f36c000f3bfab257a5d54821d66966d6edac49a12bb68a13f14dfa85a64a7bd6fcc3efb14a813f6f5755e4a256bb155c410acd149ff125ea470d7c79e04f3b121da6c27b1d6beab3ceb18fdc2348ac4f33f949f436431c4a2cffb82a03f13283b61875ca9607cb91d5c08996b5f53800bec02903f134bad4c43fe3bf807737f7f72e4ea867e5adaadbea32d3d9d736f3d6eb3f559325af3ee465518a9f95e00f2772cf50cb7793bca8f51e7b7f2f1916e093a6c0be51934f6dfa411ce62fac614e4afd0d3adc264ea83bfeb5cd4137fd661ace2ff77cc45439757f24f6a1c7245ebf37637a14ebefe84fd56a57d4eabe3c28b7089ec2d7b1c3ad7ec4536fd82b66874faec315bd9e388c5bf6294d4eda67fd19f5edec407f13cce50018117082e0a9e389b6ced5bf8bc7c781b52de0435be88865827f624fe964f75f626b4dfca7c8e311ed15e2a9225f9e7be229263c7655ea81f50d57a5f863511f80356f0f3a2c4dbf7e0a871eb4dcb1dec4d470a58787597bcf7a67dfd5f18dbfa98ce9577a7807d68846e2dd12935fdf00ff05bf30ae8dc007b7b6f6401fa418381dfaf29a6bab24fe0f02d16ac4f7d68fac89905356485d00eba80f3c297d8b4bea04508f6689bc03ba289eb6be32c0c6670e62bb73bfb75678adf007db55487f2ae82d490f033a46c0f1eb2670976d7c4c583f69e92513b5fc2e88e15bfab1467ed1582da78cbd11d45a263eeb234bf171116f3fe88399d80c9a32b59a9d1abe16f71abdb4b3ae72c1fd08fe919970d446e4a0432f3466df1cd8913ebd653781b3a04f732d18379fb80ce514ede4982066841e79ab3b5fb492be68e6da7f171d9ab43c20aea436b56bf64ac6c819356be859d974df9fe3d0a3ee89f59a00beaa96f1eb70aec582935fbf106f6272ab5bd7b7dd71ee8c76f34fbff5df3abe19c34f61ee29a7f4a85325bf7be541dfce136cc07b1916bedde72e6b0ad370fe0b5d50fd8bbf8303d42ae7e4c461d47b32313c7a0d26e683aecd0b7b1da367353bb127b02d1be0a36657753c0f639317405f79f5ac1f0bf416e3f0ee799ce633ed95eeaabaadb73cf576cefc51bbcbfdfc738f7db7c71665a77f3db59ae04eb36ccf35f9cbd8e9957efbdea9854bd2b0fe1899fcc1157cafa3ef4f173cfde2ec498c5a7a5caa4a0b5673c8311682cb62b5aa5af498d34b6d18f27cb57dbe91babfd4adb9cf2fe5b9d5fd896c4dab87bcdfec4799e426c004f65be9d711bb8acfeed0834fe207faf683bbdbedf1d7fe2e7145798e2bfa8c2b66a5e8e638bd71b56c242675e8b911898f647cd08c395cd435a87f474db14a090772eb51bb283a76ba72cc77bc31f73ff7eff6607a72d86b168987736cf5ed7ae817a0b760ae95d4fca0c58e58c4e77e95612f48d2d59df0611cde63c4c0e65e377965f10ad1f1328ea68f6629fdd7027c1bbda10733eb00f3579ecb137ada06e2691b586d7535ed075313ff43ef377f367b1eea21c4ec985c11980278300047bc247fb02d4bddf937a8805c8abe784f5b0c5b2958b2f597c5d431af3926e90e7cce31f52a4c9e7c943189fe52d1042eb5444bc67f9d3e456c7de95a7d1bde512d3cf1f6d8ea1fab4fcf832bd898a8ce5153467faa8d597b6805b31ae455548be6ef2119987193bff7787a7ce7f1e45e783c79d40a1ebd7ddfaffe364b6617c7babfd07885bf42bf46acfffdcd39ef5fffed967d2efd967f9f7bc3ef9f5c87775c9a52d32babedb4d33a6fd6e8a066e541dfff8a03a5634d3fa59af9a7ed598f3c454d0c59e7babcccc4d7aed55e156fdb0bad87e1b3e818ffdd6baef58066ac81bdd73f27c63d0aa6e1da8c3d938b410f12ba1ed3fe49bcbb5ffd8ff91efcc55af1056ff36afe45b03241f79e0cfdc5de6dbd3e77bdb8ff33eb5d1fd06f603f17b1c796b147431eba26b686feddb9aab117426798de0ed0bdddf46b6a0e22ae72c4f301f57635b5af1b624d515b259cb16d094c06355f1cbe2f4f853366f202beafba6bb5c51786c0ac51e7cfc6ebf425f4187728e285d07b43ae6b3e8723f5b126afcc5a3807bfccc4330bfac78ac7c92a041fb15565c29c1dbe427ad3efa11f3deddf3cde96dee1530bf39d0704f89ee2c31f498cad449f097819477c3f58331bd89e1b6b1cc400f41b792e312bf829b5161f054dade37a5cad43f4d81a7aab51b32f126dbfacd4db88d87cf003a8d3016c7d5e109b8078b030632950e03c668d89ff92741d26537ab2e906986733667cd685c8a749be29d468c6c43bb7165ba3c251088dda01e64e008cbf99477cecad4cac9bbdfb5cf6bac1271c9867f3bad93ff2c11e9e7b8755c998901e32b5d571d6e13a042f4df4c03a4e24f2e64cd680dd97451af9e25541ff636a51979a3a12add566a26ed3847ad353ebfb1e1f95d55606fe76cd5e3bf45ab24b3ff5f6529328af76e6fbf6c65529d856e91d0eac465461f924d46d32f39d9a668ef56c4e42eab51047589a7d35a04ff4b2112f8e1a58a7067ac14d1cee5a45ed66ea9f0c024fed15bce71535c5a42f008d510fb5d97b75e8bc7ead767aa75fb7acc7a2414edd01d41dc945a40e4d0fcf7dfa7f8c2be9854e6fd684d44fb3fac7ea7ed8fc953fec0aaffcdcf3def8f091133c69f36a146bbf08cc73f69aa13bc73e3e340b4a6f81bc9a3a7eacd7823f29d87168f2880fe596b5d0e8d463bd386e389ee213799691f579a606515b82d7c9bc2deb711f838797e8d2481e0c3f6770a66bae7799c9f15aea11719ceb4e6302eb0378b1c4d3f4e931360dbcbcd2263780fefa8dfbd9cf85f73028667f26d7ed633dc388e382318e2fb1f7a55e420baf81067a3e3d7a6d4527fae06752938fc5e7d4fe1e35d9f9ff65778eefeccba8eaaea24e03b830e435a4e5211938c1b2b5cffbc03d71ffc9823834cf1dfb1cffa7a7647648664ab454ae7962e52975ecd485975659c24367406f308def95b76fbcb5e8a5b5770ebae99f5e7b8a39d40cb3389a1cfcd1969f91c7d74d3fe0f19625f7bf25df73e13b269fbf84cf6c87499f30b620dfdba55e2ff20aec0fd4982845831f7dfa4070e978add4056f5a7b17ded74f0edd5bfd73e2a29b495bd0a70e7dea42f4ccfbb5faae1ce9679da01f427d706a4d60accbcfe5efe928ed7edff4bb73589ca9ba477dd6616d126bad9b609eac5bfbdcce01f2e6314fec3c2af9ffb5f59aebfd83b15b6b8ebd20969a33e6c9c08edfc8412ef1a8baf79de7486ed66cc456ece5f66d7dd47aee1d2e3df7889bc1f17dc4aad5f2addf1e6a92e7dc4b895e475ed9f9815a3175ce4dce751ef359e98dab12df953d37f0517c593f4cac678edd9acf7c534d68bffbfef4eda1cdfc87f527b6fafd1ea2c0c50f4ee28f289c994cb086e04f1067045df195c96d1a62ec62ab53e1d12757f4fc896982d630f4d2a00d158b470a7aeea20b08cdaa86fafee6f102578878c88ccbc9d16a634c70bc081a54aaf3ab8e4a95aea50605adb0809fad6c050b2b1c36e823b7e46c74fa2b35e78412ade802fb177bfd25ead67a000f8406393fb00205facdccfbb7d02e3671d007b44bcdb5f09e9037206f94da44491c33f738fc4db8eade05579ddc035f09c74a812ff514fe637ec66db158efe7677df5979c24ea633c9af1317a39f33a976e5eeda03385be9d776ae3505faf63de5e9f7da677d089b8c16acbfd6820639b75cde771aa67e0a2edf13f0fb977137849766a98ebc6d687ae4dc867a24f7d05df77e6f403e911d2e75df410f37f6b1df8c22fc97a6b11bf5bc1d720b8ec59757ae3df7f68e8137c831689b9365d5c9857a8137f5940bb2b2bd5bd60eae1afb46d16e73d72a6d2f58d7bced7667ebfab726ff8f2c9f5b8365fb6253daba3a37e2c0e4956d6c963d123c7191ab0ce349cbf8cd3b864cd3e6b17617c80c713b5bc830ff144b6a8ef889ecdf2959e0d63b018fbcea59e0db1b511fa1f7ae3b41368169425b166c51135b8a60fad26d11738103bdf172e6864f613ec4bfacc3b599bf3a2f6641f3bfd8e82fddbe844dc137cbacb26afb647bd37e3d9ec43b77927a5fbafced36cfea3f086f8dba706c795fc6160e279f16079839f0596cf8eb3ef3f0e7ae0d46aa6c855a0ef97478d38c43025bcac77454d5fdd51acbf755a73be7095c5fb6c5b43ab9a7a75e83d98356c5cad842fa98823ea6279e4c957fca5738f7e854bb3260bcf4374b8a05d10f426e6d8a9d4a7538be1654ecd3dc2a9d91b034e9d3a89fe3b1d92d98df5c264e13ffc98ef7755f168fed66b2733ed3c3dceffab7c8b7e273e64ddc4c4be6b05af44c4c3853b6915f62ff8f80c886f044e84988c96f5c6fc59eda1036cf653fbc8d8b931fbae03dd0cdcef0df67dfcfe444fc55a342ec84382de5bbf21c628366b62f006b3de16c817b6d016e223f02ac0b730f71e7d49538c4772ad1b78d19ab8d6419fad9a1c38ee8ba36a4733f1ac051fca8efb0baf75626831d7ce1eeaab4de02591f2c9fbcd8017252676db508f71e8e173d3f35bb4e2872f9ccbc581fe86785d35ae22893d503f3f011b4afd608fbe20d0078046bba69799235ce4809ad8b123bac7ae3cfac93d6239f2b12f7cd1d8cbb811f7f0663d5f3a664c7ef69ddfd4e051e3bce62b07ffe4f73e755f166971d01d5e53596cb8a71ac7e5989d1c39875493570fd5592bbaf0cfe394b59425c7e8ebf5fbb138ea6a1da28602dc9bf2cc18d54dd0531bf4b7eb15f9a2a5fa5ed44f6104ad02c422e9e8cb02388c21b8397a2f5a2bd43b701530df19746dcc5c11dda6865ece81bbaa6ee371be1f6b5ff7f34f4f9ab79e3425faadd54e619d448d24126e32f543a83f647290f90b751063b3d71f5508bf0457f4538eb2b67b63d425945943dfac5f661fd02fe4b9c7268702c6125845720fbfbc1afb69a7491148ccfc3c4e1f6cfe56d3c7aee3537bf0cb694733e678e8b9125f6fd6ea2970f4d4c2dd04adda154ea721715e97cfebf6a36034bbf961639582be0ee084c24fb667b5533b9f26eb37b039fb979bbc98f843e7ff67efdd9a13d5f6f5e1af8480b3aa2f89a08de518fc51d0e05dd42e1435c9bb232df0e9df1acff343cda1e7ee363dd75eab9717294da288300ebfc373107d8bcbc75034e3c346fc052cbd716b680352e7ee482e0c7ca28403e055093d072c734ed7d6495683ddfe6126b8c5471d67f7d366fe87f6b0feb1f538911a82ef1dcf63d1ecd5d3761c3affc4388ce1d5ada8a1853578594689a26ef87d863c10d837fad41f14e622b0e092e76525bc7137325f07793d2ad63305be27b541a3c1911a04b56b01c73bcd5cf01b26ee6f1a73ff219e8cff916321fcdfc7c255f7f04b6735187f5f38c3af4b33076f5ca1771856550c2fb57a5a9dcb66949cb47a80811e25c2d9a94533b5073e809973e67e8591c96dc0cdd87619d7cdd7d0e643ff5cd96d2e3c2a9656e8dfbda813b62b75b29a9e911ada19f045672cb7a1bf137016c009e93b6df6708c173e8aa74d37f4d7a1967a81688cd911bd2f1c722af09e46db47f016d94bf3dc8c5c0b6ac10203227c8249eb7548dd4bf0b967477a3026d3271c2b5095c95b423facc457bd039d04f638cdb5151cb62a35fd772e315dcd2b3d8489555dd4a773f17ac3df595b8babd05fd153865cf34a4f5a1d91cc1a09bf187c0ef1e0647f336f75172dfabc7bd603382cf0ebab4527a53af3f3d232a2b678173a25e0d643b3d4d6d08ea656e937f6834dbce33cc00726e8b47ef2aa108d3bc4eedb038f45ff77c124b897582ac41f03f480bae295950b67fa28b9b7780187c08ac1cbb2884b62165e9f137ac59f38275d5f7b4ec0fd941abe2ecb52ea8fc72b391a71365bed6e3a756fd6abda3339d6934e8f4ee8af5e74cfaba6850e4553f12d96feaf4592e6519037ab62febe97b287469dd96f2cf4482696f56d6f75437ffc02fdcefbacf3401db3b7f57078438f92e98b9a78e63df528092c689714d00bc0fcd583bc33a52e46c5ba45ab51775d3d221df4eb6cb67a79988d6f7cc30f639dc0b9e4b79f6bc9eacc177bd5b368ef67989327aad0978f92b11ff5c099030f5c4fc019b747c5d2a6dff8f8b4cfe8baf53f89a907081fa61438be568b16fb58ed76a745683df873e843c107c3e45fc49f1ea4cee6b01e1eb4fcae23f5edd5a1cd65592339699cd4d49b128e236b8f1571660adf037eabe8a7882f067eb6d25fd9b16f82fd21b6e5fbd36fa3c5a605aac31a9f476f5170e1d0c7ecac0af3fa1d7009911f94116b2475ab0949cdc3c092fe624d1c6f5e6afa37da09f450f59342df0571651d0d821ab93db041cb32f2d35607c309fd3bd1c3c57be86d54ec0af15dec8e0a7a206a782066f0cfd2e47076c467eef43cf2f50cd8e354d5ecfb6f737a08e4f4f1db78c76f5b68d4b9f4e90bad04589b25b039d14c09173e74254e11fc92f8a235fd17de9790da99d44fa0667270843f24fde9d7053cb2817d0f4addc839e338aea366c2bf075627bd4ef3b47fb75e3e8ebbc9eccbf68631785f530247ae863e33fa00131ff5a54ad79e35f1c73fe0a907f507b54dea127dc0b1d2fb1f71d3f39c9aa659cbd981df7584fbbd754d5cad9261c13c0cdce3a6f565a58e6f8b75f61c781ba32fd50fcdf9c7a8fbb017c547e1b96e3cf1ed0e8e827f69a49f7a243f778bf838ea59f5c40fea1f6993b1bea3e8fd875e027c0bdd51d27f22f6099e5226c66f1fd12381aedac4b3af1ccbbb8573f7324ffb2fab5b2e773a7efa387d317babd90be7f7f3dd62ff653befbfdd6bcd3a897ea6596f9ab8095cf15e12ae35d6a0cea850b53c7756857e425f5534c795e02fc91381271135f5cc9aed7cdc8fcbec5d9dd9d5eea3fd3b3bf51077f2dd7457aebf2bafafe5774b7effdbeffb4bb1036293616731984acf716acf67ddef7313e3bcee3b56e0d6ed556d7251332ed88f5a76433f3ee8afea42eb3d164c51ec882650251e560d78939813665ea7c4f5d1f31e5c3b656202607f627a159fb4f6dd5a7f7dd6c040101b6d43738fbdb146035b31b6952df592b33efca1d5871f25f9e1da3c643efb725c0ca6ff6f753f7e7998756fbde4b73ee9f4fb153da9303fd5ce80258c4bc9efe127dfeaa62367679fab8a1bf868e7d4a60677eb18f580dbb2c557a7fbe087e29db76c75d82b0d4ca96a703cc64f1d3e9f0a77242ef52c3fa8e48e31a268f4210ea4ff5e456f1feaaeea7b251a0541dee2eca09f698e470d156ac1c373073d647ab0219ecae82b8bcf094d2c68f606e22258d7c1dea6dae71bd7a20e56da7ab58957c3947efef7cf5a93bf8afd274a9460585b0f3fefe4e1979a7cdb57b9f8049a47f6c59365ae0563ad453b925e6a297c10509781a7e1a93e7ad22659d617b9c1e62297386b8b1fe86d77d2d6edb69ae912833b674fa369c2b817e728e3453c5936725ee047107372e9658863dc3f1fe8e77989cdf2248f2536eb231d9593bed7b5b5d376afbdc58cef740555f233fe40cb933f90de789d9fc51a8ba6c44ff8fb9cfc87dcd09ffaf441f15a9f5f79be7ee729618e97d5f45530e7a25bfd7de18973bd09ac9ff260d89bbde78e5a97d48eb75b9fff083a2bd45e0377b7f7c6ef811e10268e90cf9c8303ae5b8fb006bc0fbbf5ebe4e3757c857430ad97363179f1acb2d46d4cbfd509cf4f5aa88c57cef14c5fd1ebb0d99e7c44e8ed43bfd8d7b1d0b3e447e2f1eb0fed91c9d781dd84bea5031f58e054d143cf55b2b6d55e6297fd8f621775a02eb89933797e752c733f6c1676f76e3e18df2dbede7ac76f6a688d784221ce154dec03fa7ec938a18ebcb9cf691e7d55ed3d6fc7c1a1f57f1a2563c1d0dcb535d753df11fbd50ff6a8cbfdf7db161c7857b47ecf7e60d0a44a656db0dc51326edec4c17f2dccf1060a7189a60eb7f9cc5cf333a8e7d46bfdd2e957aea1dfaac18d1f25faefc6ac4ded56fda4aef356bd1883b7f1f781ee529d35217b2d3dcfbaf41123d66bd9c59a8431d97a8e519ff7ec3f46adde91d99377993331b99195571fae49dbdc969a7fc17567090e6e5b63897a9ef51363f0537b5262cff7b79ceab55723fd43d332f287e2c9b6cd4f8f3dafa2de3b30041d651d2f5fff579284a2e58a7e003ca8046b6e530336a8c48707b9347312d4a4a9eb91887e2cc6def2302a9676e29f8ff96d8f1e4397f8e1a152a2fdd16a5bb47e496a6fce2bef867e5e46feae107d3cf6216be8e1718f6d31e6fef40e3d49fad439d27bb6f8b9613d85af366a37cea2c5c49bf3175d3be698d7f696642c3a536b31d895b798ffbd3f969eb8dd2c09cb93771fc6a1877bdd725be4ef476572cb9e5b2f122f8f66ea743f357c4b02ea20e17958d247a21f9ae34f0b78251c4645064f273316e97592c1db6454f4792e81eab6fb6fd46bf7e5fc7fd997e3d771dd57e4025de60219ea55af632cb356021bdb7a2fdae4e0231738443dcbba36af5c3eeaef8bdd70b7987db151cbf583db5ef87a2fb4fe3616dbb4f73cfbdf633193633e6635f3abe1d328999b35f2ff22ee9ecc679defab1b86febfe05ebbb77bfc1e9ff0db62db730de7c375bb9675bbfe47d6ed7dff6532ebfe7fabfb61f716b7bef5189f9fe631ebd9661e636e36ac7fb573f7a266d27bbb378f596f4fe6a225fdd6ef323b008fd7f2dd914f67d466232ed066ac90110758b71e3bd086901eae799e999812186bd4d9365627f1a97d6bc60afc1c100b87e26f03dfb766747a0c59cb072e7869be0fb0c1e45ca6760c3de7652e312df0959a9a43b5da6535351c95959dce2feed00bdd120ca878a6a50adaa1aca92fa96799b43a4281f300bc27bca68ed0e46a39eb56de15ff089798d5f7bcb6b4a1ee8a2a42395e583ff4aef496eddf3d67b3eef75b3ef78147c0c4ada289c7c7bfd14608d123715d78c8ce3ef44a93fc27387182dfe63f4992536f3dd985f4b4cc9b850fae1734ad4e5e6445dc21eecfab1e7a6e0defe1fb67e191ddd9a877a779a5060af13a714e669c4263d58226ba0d5fb88abe70fd994a764f781f3c57a06d5569ebd82167197e831ff5706c7a0daec897dc651dd69b72d4c2c39eb9769678f19a7911d8a322ad123f103e6ae09cf8c4b55bb57df85fddb71f66fd7271c39bbed754b0f21ff8e664951e7c3846ad8f38173fc2822e2696acb9d3a753bf97fcc2d76350f0e3173a1e330d4df0d33879a3f9f1acf5c48346387cd7fe6edca7c0aafeb5402c0a2c6b038cdf06e711aa645e884e4a2e9e7dc0a59b7187eb7065acb8f83a6d12fb8629f84027c19df86b5b0739ea8ffa6b66b16e397e129d8303fdc8c8b78992e14cd76e177521737fcc3d855ef2b5fdb22f37aeccffc15a9020ee5b85dac90ed4b558fdb530b900f5fe1de8fd2777e7bf995870605e77650dfaeb7097d9bbc6fc9eccfae56a365f678e9977377d9d0fee3f7028f00b9b8143441ffb62ada02d52bbceb4c84a651feb363e56ac5bb7af2be80f021d36d12608a87d6efe067d69f7088c28e30c7b94f4157ce5a9216dd37f589551221aefbe780bd62eb9c9e05605a5dea2c7de19155be7e4f39ea8fcc77a57fd30eab9aeda2a975884189f098e15bd4ea0fb805ca5f05a9c3df049927710fb3da1ae1b3d97913bd4ac8953fbfdac591d83c709fd8d9a78a7086b9d7e52d27f031ebd18aa887c1e77542c9d0cb85c0b3c1b055fb418bc28f076acbc32f3f0a37d2eec9d3dca46c423907b04be9a5cb3bd2ad12b2ccc756b75a655a9f6476858b17eaf0be18255664f35b98a2e42c4656a067f34bc5f49be334a787fbf6de1f75150e3bbfd3bf85d0775af2e74b371be27ddecd77eb9d7edb14b67573c98f5dc5eddf2f5b7fb2c7057a993119f978b3702b0d1c4dde49cbbaffed76a49e5f6e77aedda8fe80fd4a0be8f3adf16d835e5231fb57570b4b0d79839b647fedaeac8837ff9634fe9beadecdc61fc96b9313416b75d720e5aef72e0ce9a6f7bab09fd95e84b2ae1ec43f7fc08fd9ad95134924c0c68ae1774174ae808437b61fa32122f47d5805378d4e23185d7a03e119a75a3bb406ebf3d8c8ab1700fcd5c34f1a412ed4a93afa96e029d5593ebe58de810501b6f22f37fe356da0657c5c6ff893d82668ca23fef41bca5da9ac851432b38ec8cd80bb4c45bbae5fd99ef297e553837f16bb4e889c5b5ad543e3c9bd8276c76eb511174c5b720c739fae0847416e4c6f29a4db8a6cbb5ad712cf251ccdad05d0a2e5215cb5251e39ed709c7caf8fd80a7f46c39f78aefc767d9e6b3783e667ff15a3dbf8a5a3ad422c7b5f7831cdf8dd7a6835a10705ba88998efa384235b695bc9f9c9754f96c053a864f5c46bce1c967b19bcc7c5ff3e2086d43763053a3d66dd075f539befd7ec5e903f40abc7dc6fb3b780c3cb35dd5c5ffa8b35d12080fff8d9671f5c5e5bae4d3b1e9b511180fb897b8b47759dcf47ffae93edabe7eca6bdf291a66d5bcbb0cd9e4b6fb9f91d7423e10fb3ad2ef82575d6a4e443f5a0936e71bf0f8efc115f3ccc0fe073baea848d34ef23770a1c5c334fb781332a728bd85d3c720d861ecc50b40ad4c967969c65ab330217cce4c8edfa7881e9a55756d5f6f3156a2cd0ef3a4267e2c22faef5c3030fda32f33d6f227c673c8a666e98ab6208add9a807ff8f4b0df8f63c659c66d0688ee89f27b579d473ced8016857c1abc055b3a389355057c5e357d69654b2bee4269df208d132b2a49f50ea66e7b79872d56bfb08a8f1bae82d904b68d66789c9a03f6d69e8522fcb28d1576b76a65fa79bc56057dce28e3771c7a6d550cf7fa4a17e315ff8438f803c57897750c9dd6bcd74ea7720860427d556a27160c18791d8d91cb85de1ac9eb0ba518f1a0be7dee34e41c7f63eab3ee0b8d9c0ba3bcf669e75d903e05e4e5e65201a9c0a78e5489e3ff4acaac511bcd3e14d7397fed8c31fd498564f6aff711fc4cccf8c3ecdb9d4983bc4e564c20788ab76bd81af067299ad43cf7f68835db9570c77d9acea2f9df17a3598decded6979e3a3bdd933265eadf6b9352d826a62e25168d807dd11347b50eb961860d9205f9eb85d1d1ca1f7aad11bcaebac86aff9f1c2f3a7699f532310e3d8a24f266a298d683840d322019f7b99aba41f6a27eb9af88bb165582ffcfc60e609bd8c647ff02f6b3101f3c2d9f1a06b8fde8dc07405c4e61473f83fa922a3c7521308b75aa1afcbe7d327b5cbec11f4e696d441a4e706b939d3ac8b589d1c8fdacc138cf7fbacfab6075ef66994f4e1b1b72ac47f6d8ff739f2be6b72c2c9dcacb7b3ce6eb1bf6150dff7e9876b658e97788c5f64fd8d938bf8c53fadb9367c2e0666ad73bbe75895e386d8adb88c6681703c84c3d1f38eb24e965190772fb498aa936626de139e30ca7c8f6bb12614e61afed7db5217bb35b402d05ff6dc532e52bbce6ae39af15e731d0c8e133f702ef46e2ab35f5cbdfe39bb0258c15b9df0d5baa7b1fe98bd27e824bec99b4c6cb58497b0a2be92030d1ff6e0992f35eaf45c3761ae509782e7501b07d7a23963b34604dc6ac37ebe5947e7666ded5037093858c6d09b16af2c3dcc2d6249173e3fdbbc568380f1293494426283a0cb65613dd4585305174bcd43681d3d605dbc7c2fb10ea845a6c7dac499e8f55b2de6e87838f145be66c27dcfe0893b2a562fe2a98c783ba30e21b000d4c7086ad414f03cebe07c8ad4e4020eeb25818983ca281987e43a827f60e21d9738a7e90bb576313fac44622dced7007e4caa58bdb45a1dcc7b63f359d4fd412eb33d7bcfe19a78c263822f81adc0630ae9cd4c8e948b353d015fb02b1a5695687954da5215f4cfa8efe190830d3f9dcac4b1ecbfa5cd021850604f6bc666d0b0385267246eb542c87f803648dce5eb02beeeba5ef0643e1b77327bea67f777ebccde59378f97f71c403db8dadfde22f744953a5943cf8c5a64dbb347640f35f6968f501173005e56d7e4a151cfed44ecf77639478031260e3999ce5472f7a4efc1c9153c718e9a1763fdb4119e2e7c59c0b5dd78f6477d2af26045afe2155fc73beb283d3ecb79a16e087d3fd50479ab7122be4676e8af4c9ed08d26e2150fae72409d76f37d82407a22a1e88d624d32f3d4824eff20efc02b3339ebb6430763e2daaccfe3bb0b0e68fcde2bfe517dacfdb379a33bbff1ec89bf86efa3b6452bfbe2da713f966b370be4be65659488cf00b80959ae3efa3e583fb7a5f64d4e7d070f50c18c5d7dae0f3dcb7d7d5d8256c7a7c3352f94dec574fd7eacc1e3ca0efdbb3bf03627ad6636fe572b6276ccf5afd523f004d559cbe497c7bd1dfaf350396fc6a5f8a96ae670b5022f3def6409afa99c33e2154d6fff639cc835ddbcf12d42bd51cfa8bb877ecc21ba171ed7c4edac8a6118cd8ee4c2d656f340acde9578af16bfdef93e1f4cebec7efc7d79ab1bbed1d709a9cd6cee4ba35fe8c9165343243d0a070fda7cf4dcc4785dd621ef6d973a38663c4ecdb8b1e1e5cb1e5a433f27f8bf5aa12f9a561be927242a67cd0b3d51d615192f55d4730e1bc463d40dafb5f34c0eac59c7f647d149316bd7ca5785576ad4dbe23282af09fb319199e378de9f99589fd8cd54ea38ae855c76428d7ce2cfaeda8b936c36dfadbeee8287fbf9b31967b75ada5b4f42629c54327e82d692780d68fba39a91bac05bbcd273c85f6bd49b7c9e9aefd1e083351e7a0c3f5a37d1d7efd09736b01fdeed25d6c5fa6c5daecf66efeab69a1757efc5f4f9337b95fbc11a7a1cfdddfe44fcef55e77e557dd8ee970ff7e3e76ffbdbb87ea72b833a5156ea54c9f3947a10d435813e19b8f8e85364b6f8d488668377f24c387bda10f32c9e096ffc14a6c014012768c63e8e93b63198f8b6b798a50cf5534d2f0433de3aa84d4f55455f5ce0adf97cf3a3e3e13cff621f1c7843e8db4cfc9dadb6b903ce2d782c43f058d4237346555bf5aa088e137f3c3bf754b60ee35ef10d34b9117c78fa331de4ceb4183e69d68f1ba90523f7a2b6e2963994dff69ca4cf6f41d7b7a26ef092353db9eeaaf678be666ff3778582b605fa3e1d6a81c439b9f2db2b6b2bba78187cf97ec3dfbdadaba03f57455f332ba11f77b5f025d77ecc0ed86f4dfe6c1fdb7e47eb21db247e904733ecc726fe3ee89edb55537a474d0bf6bdafcc9593ccdeed167b7dc3b0be59bf226242dc513156d41df54c3c35d31bb783d8ab2157259a29787ea20750784dbbcfb03e9657137f5b2a1f3d264bb01876eb93ae9a6d19f97d051eeec6c4f766beae1439b9f8ec82fd01f4595b0d505b300636f09966fc6ca4c740af760b3e0213f74a8d42bd5b0ce6c3c5bd1943f3dd62f65fd61bdaebe7e55ebfb435fad7e343b7e75ca99dfcdfd9c9189ff39c1e87f2fbf0137c13afe53ab26fdf132f716acb43bf416aa3aed4e5c835da0615f5f982b33e1feae726efdf3db10e0a4e51a7ad63505b3c9398c875043f207cafb90f2dd10db105f4230a2dfa48ab5c25639bba824bf2c3d1c3442dc009b9b6019faf89377525aeeb486da8cd5fcc3e2b188a403c7fe7be592fa3894b2fba9e572bf8e52c4d1c7c34fbacf90eeff6e6e4b4d73f295bb57d87129c2db3cf17536086f01cfe0ed327f802fc0dc76ab5713b0fbe39d77ec1fdd66bb98d65249cb8960b097d3ad4c2e34ecb53e3f7233e4470611d6a5385d06e8ba40e1001c31036eccda539b5a5aecdedf56ef1387ec6dc0dc6cf4b071e20cd7cbfdbcdffccb93cfbd15aff73fa9d266798bed5f0ec9efe769ad341a9a71ff6e68a87fb61012dcef7dfa568fb89263e95f328be89fe673439fdadd50aadf0b9ff951ef7f445cd6af43b8ea247421c3af4d6b046d1fb893aa38776bd53f4f9ad74000dd82e7dfeb6a735d0cc3bc17d8bce3e70e70d3555b65df45b44df4d61cf0edafdf6281e13265fe8a2afc3ba64879e5cd08573f1fcca1ac97cd6b51e661d3367a3f9fdd45aeefb2f7f643cd6cf3ed1db36e3342df52cb781f7bfcf0e3ff258bfcdf9ff9c397f5ddd655aae06bb839937a9ddb71eeef5fe6136fd33fd8a7f3c677e6afc61ce4cdfc6aadbd3df705ee675189357c7c3ee27e7d2cf605b2ac65fc4a9ea9a35c316b31afa41bd6c628effc4432d1c98d840c1070363963f97bf576a77fe3f71a5f88cd61ff19841a738aea95381beb66bc67bf455b5cf652ce739c7bd8771df3ec7ffa17961412b4037aaed890a0fc73c87e75187fb1a34b44dee68635f41cc4eef1e3d0ba46f9ed2b7197b5b5a46497af23c8c92d67bc312af43af966388e79255ea64dbe6afb5eeb5b5d02d7cd63f1d6ff6e7bbe5e32e78b8d74d763f7e5edaf3e73fd5e7705a7c2e87d493cfed0d3fb7cfe59f9bff3f87afe79eb25536f719ec19b66080cc5ed298bd82f555e0edbbc0a435278cb9fc5cfe1ed46973894197cf68bd5d8abb8298626896b7fb8a99a3eeb2699fcbfca3f636e6683b87dbbde9dbde3a8e9279219abda207a29887fae941237f33ef9f823ba26d05af08c1eb5682c7857fabc93d974d58ea26655e27de5ec01b15c00fb8c43ba5e2ef2edac0cc11afd707bed80fa7fb69fd6d7acbf76eb1dfbf7fecb798581dcc3df4d1c3561fdc511bcf820ef85765b53d3a6a855bd6c45f5d3947d6ebe54dbbed6d4ce5d2a7c173199b64129bc4d6887e835dbd711d0d8dd26d15a296b86a797ab5aa19678023072cfcaaa117bef9dbf2201ecbcec28796ba1933959a0143217dbfb0d36ae9283f6ef5747ec2cb53bdd6a0b7a11f62629923f71970089dc4cfe12d164d5c57a50ade09d1043ecf524bdce67a030dc99fd2b6cf6af08f8ed293044eace582457eff45a336e159a32210de630a8c1879a7e02b1ee1f9d81e831a400dfbefc4bf45c481081e2d6bf91f5dd6105525af81ffa37ae435a25e163164e7ff5d578b7898e9fff923f3a84fe93fb563e49d375f0dadbb8d6531e621e60de3e1ad37df847a76e48b88de13bc41426adc6d03131799b1d13e8aeec13f135b5d70998ef452c15cada8ed96d519ce59bc3c88f7a7af8ff879d1d3c4baf034b14e9e26e472b92ef87ec082c39fa954c4820b16faf4b75c9dcf41fe36578a9f6ff6e417f17baf474550d35fc26de4752f97ef4d80a7c21c870f33fb092138dcaf5f97c323979a69cb5235611e996b086ea2c9ade25c2588d76ce967900f66722be2b0ac5132a4861c633df8769b313df1b332f2a19501ede5d6e3507af30dafefb69b606d88d19b278f27063f5872b552b1876799f506fcfec4a3265f72c23756825fb0b3dae4c0c0d53ad0d613fcfaa808bb0bd97fb14e99d815fd0945bc05f2c6f442ef82cf19077b9771707e1907733fbeb676b32be776b58bf77f68bde633eb4c0f3e5defbdf676d07d6b75c0bb2d866ae2af7fe0efa77ff077e4308db28ef04b7bf0fb2fc4c30c9fb02fd9476274f679b5a077493df1c3e36a6375a8b3088e57038e979335dfa019c9e7137f3dd38e59ebc25ccfa065d24ca0e3aaaf1c2787f56a30dd2cec7e3dbff1743ec8b919f75c8565de5a8e89bdcc5e201a93966850385a342ccdbaa69b698358089a32173f788d79ad253ea2cae27bdbdf97f0d6c1de413fb98a7e72d0a691d7c2b3cbc474f259a79fc3e933e59826eebbfc5d37d3bf16e0046dd92f9a989c0179033182e86fbbd0ded0663d6f1439f1e257ab36e26fbb25bf4783dfe336dc6388398ba891d28d93ccacb9c4d3e251380e13935b498f7ee2bad4c551f087959eaf8903658f18be487d0f3ce5b8092cfaada7a5963d408b6f99f91ea13f0db575b4b097cda0f1c33d720bfe66ae6d688fca1e07ef5c97da484ab0718ab830e8f488962b39420d3590027aadb16ee1505b64496d4678e49bebb624d78bfb5f6daeb1f6b7a56e62f6c013ac47f5081eb6397592a821dff0fa99bd027bbbfb60de072dd8d8917896fa45e871232670a92516f0dc266e238f96e6b86cc8910dcfe360c371409e6b781c15d3d0ac610b131f4fdab804da0ae2451696ea31b346c5fccaf5a8dacd0737efea8ff5bfe3f2439d0a939f6c4efbd8691f7a8dfb1dfeb548726029b0260ce0e779a42f351e85579ad2277ae376b475ac18cf2a7bd1838f9f195b0d7da3c9c3882efe4ebd0ac480affe9ef832f77619e24c4d5d1dccadac9631972ccb889ecf9570590fd48cd976988fd10f419df97ec2a35b898732bcf06a7aabc14fbad10305ae76ab37a39b0c3128b09df41cb216c889f31cf579d619cd5c69e85be89dbe979913e4cf5aacff709d6bdad84df9eb823922b0a5f5a858d6e277c639462f11c47f924b0247c6f514b940c5b562fa429f6d70540ac4e4888f815371989742e7ad434f07af43ddb000da36e48f9a1c5e533b09ba4921f999e05f596d9c6e25d0ed0873e2e204930bfddbb8f9b6b7843719972a99bf8ca02f971d4edc09de0bf35d6de6f4c0d69ef4589489518a4cfce8e6bc47497e104f49ea2bc0f7246d75e1ec2b356993c5fe8b93edbfac97fbdbbaf1f1baa1afe78ed5ae78cb785dee4db9d99bdc5657705498b53e101ee2b6e49c377f135eadc9b9ad63a56baf563dd78ee0556ed9ccf5645ed1abb6029e72e3ba510aede2a3c6d8c2e3a5960f3c96c8274825378ead56e31cb52fac2dcb7a011f53ae478af8f88a3e0999f8196795786c9a3db233f1d78a18fadd05cf77ae226831af9ed4c66d84af2f5eeb5b727fe1218f78c0a15663c8f526192ad11fb743335f12930f43078dba623375909ea4f076cd7b736a144d88a1e73537b15b6c9daf790a9ea6423c21f52eea41d2677582da306a7dec71823f5c511b2bb6d997095aef6087f10462944a707ed50235c8aca1171af4a82dc46ef43082c6985c8303b13bb8ee2579d2b80636b4bd10f3d2fb5b3539631f1387207634e7bc831637fab5667f4af48b78c0d682f3b534b59b58b7e3de7434eba6861e7866c15f9a715473a5d605d690a5bdfe3e9fdd72a00f7c8da44635bd761dd17ac37d1b7a79f6913d72d6c01dc60779a967d044157da9718171de6a1f24197bf3d8a37397f100e2845230b547932b717f636c0d3d39ec7dcb736dca36eb46cc71448e9670f543a90bbff222a0e60b71020d7402a1b1d757d4d6ca4bb53f520fa66ef5b8822af48736e2893df4786b65e7cda8c89d4b0cb92eda9c21145c7bd6ea2956f065ad895b57f01633eb157cf4a14178cecf966d9c5e895653ada54eae9a25b5197a6e6dae4584fa1be788deb8d66a63d660af96fa5dc5b8313b286a0e38c8bb26d075ad740d8cbe590bccb937f00c2196a1ad4df23af921f33bd4c9636acda2a6064d53b316d8d072c2da66ce05796cdb0b917e40ca3aecc6ada37e5629702fb6e6182f2d1e585bc72ed62bd1078ac8a5bc56c72059d8fa399b55c1c3bdb6b259b7b8f99abde1d4f4bccea92e76ca2d86cd05a7f0c2bb33bcc8454cce119323595fc591acc9dd05cfb0fa458ea40bbdd2938f42bb36d10bbbaded5de64be7750c9a3d75ebfda993f5079c78fa82ff80677e3c7159c0e1ef3f455f7f5e67419dc6767cd05f4ff53df3bbf8398de94d990c6d651fadabbd251d331fc64dbcef37f3d970bd181c6fb1f3abd859a157aacd5a1428a9592d65cc6fc9f366ef9ffa153dfaf6e13d26ae422f296cd8fb35e326073f5c17e8d3576ad7fe7fd9e6af2e7ba6a1fb0d756a605f6cea6598187ce99c5e9b64ecb16e3cf2461ee1f9e540472a49712ef49d5fd6711356f4f136e71108f6c0c486aac5213423f2312cd10f31730beffd5cdec1fe97d91ba35e8be1410f3b47ff6462724cd5f0bb79f447f143b946eaa45998365929de9e47ea1f8715b5c7573eb4d06bf22889bdc8a97f036dae6123fd24730f8ff4d15c76d98bd2bea67680b9ce669feb327e67dfce3c2e9bb4c5f31dd90b5c52cbb058dde1737df4b3f028ba1df8ce5762fb304797d670bdb40fbbd5e0361f3f1853c84343dfec0526869bafa389dbd54990b78fb2a754f4668d4b72a9b6aeae4f8fc26f47ee69c6a1f56d6b62218c9f2a43fc913be043e151f4f36bd4adad5131befbf033514732f3b2ffa47baeab1fd9e354c0c9f6d71abeb4d0ffc723c70b34280f6d4f3a929e7474a1c58f7ee234abd40c5e00ce37f8de6ecd5cae267e504dc12f9ef29c7c6a53a0078a73a216859e99ebb6edea9ed73e5227a5871eb1fd8d3cf2237adb565e2927339fd189e1651037c433c5cdb9268f78b38a7e70dc51fbbdcc35a8c1813331a41563ee875dd12e6ff5c5db6bdf4c700da7056b7b522fa33777c5da5cca1a28fac74bac232ad16b6de254f33de591dffd7c7f79fe69757ee4f7388d91417e68ef59d483ee69a5ecbffd6ef98fef19f56522e82be910c7bb322ec53af155fbcbfdae78b0a7d6ad8ffb4efbe028bd1c57a5479b71645caa66b8c63d33eb7b925dac097115fa774a311785f61ebd32b0bfd8322e989ff9fd97a8075c803b2ae22eebd4ad6f1dea295dc9417335805759c35c44bfff6cfa6f580a7e5fe6fc62a9ab2f3b7a0f0dbf3617aed8370a2dd6e5cde3e9ef7cfc1c1ef323fe40e73d1e53091ef3da3d6cda70ecaadbfef56aff0a2ba9bdd9e273403c50b2844e3abdcbb3fcf4484e9d4d5ef13484deb6a53ac424215e74181fc636f19fd05fb7a4be728ca02b94d9711396c2c7100d428cdd2e634593a7ec8a5191b9c2b96dc467003d45d41ad2a379bdfde0cf5fc09366bdb02378188bb15d004f13f624519bab381fd987a47e08e2ab52d3afbaabee5b8d72f0cc6ae8a925c3109cec99c9fbd74fea9efa1eeafef960e688f49a593338e943f71be102430b3a848741ebeb72d6880efdfe5f8b24cc89036afd6d2cf155b1aa25b1e5f0db113f98d627ed20c73b5caf85dace8df9f78533de64b3eacfe41e5ebf9e37665da5ae50568b9f0534b264bdb68857c81cc6febb46340e1d8dff655df3bf05ea090adc7dd5cca11d73d2ac2fd62dff007541e6202d0e352bb5d4c0a3af189f72dc907d8a24373984adf6478775713367d19f238ec3e47ccc6904cb8ae31de47835f16971a98a2d3fa36762ceac5ef42c1c8f6b80fe2b3131d7841a765c1f8073b0449bac23bd7eea99f6f8bb9eb8b6e48b5de0bf0be566f04b621d8e1aa996259810c9f3b2ee127d92d0953e3faf21b817c70eb16bbc869fa92d8ced2f2f379f8c77f5f45c25f3027812e423d0703031b5334a56ec3727eaa06bcba1163f7ac8668ce4edf3d0c77387bc1a7a4613574e7d21733df4c4ebc83d36e3e700bda12415ad0bcb3ccfdbe7f8ffe778bec7771c8cfe1beed327381e2a19bf8d5bdcb7fc8e7f5667a47fedbae6100338fcd8d37596c38be383fa2af5aca873f5a9393819f4cbf9ad9ef0618d8a988ab978aed10b0335b10dbcdb1cc17234c4a1a49c5bd0f30fc9a121d75430bee635a168cce6c4a00397a6f83f7c06fa2dae6033e4d8cbe613dfa173d6b88c2bf673a83343ef7725be4fe00fd5e4f2c5acf1a10794b79e80cd28e9fb116a98aa8c7c7818daa89541bfd20366359ab816f7d800fe04c08f886eb6f0356ad9a3a8a59dc0ab99f8e646e552dfec8e1273be7937438dc483fe0c1f4597be410dd5627eb46c42bf5f4093895870c11e5936b9c101b882918979511b90d7d4ae0b8d8b4debd39335d4cc09c5170bfe7ff00504ae85fc94e67c9fbccec798704ffc9fc3525fc9ff90dc3e5cd8fa7fe6f7dbdbbc7c9d27e52a59d9cac6da684d7c7de989989f62fdfb678d58699b7756c5f845f7c0232895df2fd847f6f21687059e0438d9d31768c29f7c67d22ef1a46bfad93c3e6bd5d69d92ac54c5ee0ef93c72b2b6b6048c9a0dbf9a62cc759a3da91ab80be04153f14d33eb435fe2507a8044fe5881f757a4b90ef24af7dc6671d2a055e03f9c74db27c26f4ac62a0226651c6ae2502c333e31077de0383a2d1e8d3ca8407ae48c69e989093c714771ad73a309f475e9b9fe151eb1073da0af156390cfc57e13bbbfc966e3edc37f533ff56739e99bf79c55f828be8d99ae9f43e2df05df240bfe09586b5362f88063de3ac4e760adeb0a47a9a67f426ed6f94a3c4f4f1aa1e2a9d3953ead7846a0f7d9a8fdb154a8edce0bc9c7bae2bb405c35f6d298dca36459124b19cad8b5a8a5c63e0d30640bec3f8a5811623e5bddbdeeaa58969ab113b0c80a7814e0a1dd891f36826b307b43353af96004ac69142b5bd5aef540fd89a3d98f4270187705f66ffa1e3af4265cd6d8af50df60dd43fc035df3b8ac5b9fc640f04d9e95d58285421c9ed293b1500e315388b74b75f2968c81ab241734ee9e7408c98373b04725c0c98b67258e5313ff111fdaff2bf08a0270cbc8150d0fa77c0f784df35af1c8408c13b7bc51624d927e73f6af8c5bacc991e324a8893f09a1b38df7b4be97a8870bbe94de9316b06013e26fb816c6b6605b6c7acfc3bb836ba39fcbf74fc513929fc7bd5a786a4dc09a0fee9dd785df24e3b306d7f3f133bad0c00c57aae776f4fe084c00bd42e50778a29c987ff3da3db44b88bd4fd40943a41b5e03bc971e9e1f5f4f601203c1bc603c898fa0db89a8df472e6ea1a863c21ab3997f75ab7f25fa7ed685b7a685715180ab261860c131019b9f35f462d44a11d75cabfd11f565d624c636fd0b870a9e2f1bd7d1f7660d081a6aebcee9c3450e65459c93e27b9a0cfc4add203eab594fa1c78960a944cfd06b18778d5f84ff589f3da253d14f094b0d1c29ea26c440279fcb7d9259677dabb3bdcd47c3e347fed70fe053bef7d65b6dac66e2af6c05fdfb3cd7f6c7fee03ff0ab0fcdeb25f7bdd0521f9ab5c0e57904cdc94f58bc59173dd70d810134f3ddacc56919a1bee5ba0fc87514f898e0eff618db29e004cc5c5d9b18ef40ff58ac270d8efb0a1fb79b4503c46c1d7d51031e257df80285be0e7527731efcb5fdc9fe9d5e38e3efcb47a9ffdeb0a51fd4c2e8098d75547855c4442146617e476cb6c57e6c2a1a8331635ce2c61bc6bff06075a9dd347dd2b5ebe8197820f06903ce12f99e3c47eed8ff847745408f079cef50387ed0b242af58271930f4d1047d7b77448fe49ad8d6c0967cbc8c92f8009f1efa77590b62be892903a70b3a58cc5d71ee79fb5cb0d1e8dd742576aab9de832f6d13a79d55e8af177d9f982162b9d987a4fe88aedd7ab5e19c7ce3e7f9a492bb4283abea1163e30707dd03decda1566e5eeae64aaeb2acd5e9e3f4317bbce5c26fe2f8e3c94b39e9330f867789707126d422d33df272c09d47eddfe4ca4be80e4749768888e56d4e7ebf053158dcff53f1a68c0fd4a9073604390a7f3c8989b70ef94019f776f91cd48858ffa2cf21b56ae0214c0e505cea5abcb71313db2d2dc1f21f88439bff95987cb8c9724d9e644d5c7f08de26f25dc431260ecde98f5723ceadc969d812c7e167f45401bf24138c587f4d1cb89913267e8ded137f15d721645fc756a5e0965d725752ce3fd4cccc674ec19f83275ccfb5a281226f057c33e120b0e654a98d99eb1e358689653ef23ec5c0a330c78ae9db50601ed9c2e9644cc51eb0f4695297df233ce03ce963cff384f603307eccd737f0ddbf56cb98fb53477fcf6cbdbb79147db04f511bc4fd913608bdb32f7fac9347f328098eaf75d65a4f3433273539c31823d375c475d5bdf0d8b24ebc8806f17373ee5b06f41ea4968719cbceb4484bf0ef8071635d3af1830a355627ab46c558e91a9f61622bc12128f2803756aba7dde881c92d82a3aabdf6b1c58d35d477531639ee9ecb7d2410ff4273befd3b78483779de3e0ae6adf539a70623f952ccad27a86b717fa63e907bdae3fdcccc1de1ccd3fb5f3be4a7311f89455b69dbeaac23c7e79c36d7a7df9c39564147bc4980f339eb8fc45dcee5a054b3bcc3ef83390e3de39170c2b4bffeebdc3b083a13f0b5f58bdc0bee8b5bf84c98f3b7a00d42efaa8e0e8ee6fac1c34adf3fb7eb647df67e0477159f159d3013f4b9e7f7f7e89b3da1164dd8731dac5de4a14bcd21e4233d64a18322d7b401f61c98d81875f96bf95212dba6f359b77cb8bfe17cdef464ba32cf4bedefa001879e51c27d36423d0ab84187fbfab4a00f2b6252f20b11d7e5f4d0e1bdb22ebc293a9119437c8d706ca11dd3a1a77f48de2ef97da2c710d7f2b703c6df405dc4bfc058b6da570d62678ebdceb251adfe3731083ecf4f0fd4851616b8ff16e20dd6d88e7a63996b003d13fa0b6c4be08ce8e177c1d9f0e80b747e9f3d2a96c45e0b5f9818a7a5e8abce8bb367a1f82cfac0bbdbe4157936f6d566d8a0dec99a62279af0b8c2e9147e48e064d03a170d745c9f203fd56326d4f8e10fe2f28ee0995cecc3cd52f859b97bea43912f424e87f0d9e5ef2667ee728d426f10b80b6234bc8e68a5bba8ffc8b12370cdd296eb86e7f4f60ec03d159ffa2e633068d0a06fa7cd71a04194b76ba52bdaeae48f5323a9d2f6c7c791ef678f8abc89c1e9dfbaec4b6cdd0befd14a7f6eed982decea657ebfbb61a1ded7688863f5fbbee81b4b8f177c03f4a4855b91b39e87dcb70677189c7a1353f795de70af56d3cc32b1c437fae05518dfbb8cfd4dce415b3880a50237c2c4ef5ea99b9dad12af54cdf0857375698936253c96e067d80336dbc4f96e865cb3f56856e2b9bc955eba39bfa1e21a189791bf7b19711d7088e756881334f507ec8589f31360aaec68d0f238b7ccef9127a37f8d9a68026ee2b28c9047e4ac7d1641a9e0e705cc6525b843d14b31c70127ad21ae3ba31603ead3887588f34e4c4cb5641fd087ef197a186ae2d6c05b899f2d7413664a6af1e0ae708d451ea00ec080e3f9d25e995c640f9d47f6bc3fd963bbcd9bf7f57c557bf66bad4978d1d8c4b889261bf93f1d4dbf1bee79459013f397e67a1fd0ef66e376ceb8f06941ee91970b6ee0c8fa4acb0b0637a9433ebedb610fc175c87bf4c0b59047acb3269f8bf0f9a103fc1672e850f2bd9c382df09d02e6d04d9b672fab93a648afedd9a1f7429dd00de273c1e46e191f243a54c570a6b739af91f3ac750f5a0705fbd6d4733a698698e3dc2bf012113f9bdfe1e513d6edef26ce6cfffe6d0f2c46aea9d3046d5199df0df8fb896edae7e8e9d51ef76ee4d85eab3b0abfddd0d79ff38c7aa7c31dd46fb062f575736e5acff7377d800f6aa0b96ab5f0c03d3a8dc71a759b498bff367b53408d0e138f24ad0eee877f2fa3a48d43b7e04a8c12959bc749ebf788baa867494c76a4d75b6ac690f030a90579f267c4f34c72a29ce30f75a9c091e736e7f6f6a43b80daeec48cd53eb1e83d0bfb28f54aa61feaff2deb338ff8921b7dc93b8676a7597fa071823dac16ccc6917a214163f68a883a080df37f5cdf36a6b32289e990bfc2eb1dbdb40ee7bcc93da0430dfd13892f6bf6d7b2833af5dd96f048668fd9a3d62563eb03730168bc74dabe71046fb4c08a119f6fb13746b83e81c5f85a516b13fb2bb83935753a80a1420e02dd966458d053c8cb05c7ddb01662e25e4d1d37689da2e6897e32bccc883f6818932326e9a2ff9f401f15daf0d2d3ae5bbdb428d18adc6d7a9786fef845fca1cdf869d847c29add65fc2d7ee8458e3e54eba71613abe60856ade506d60ac70c8eab62b896ba8a7351bb39a0e744dd566a7b5357b51a15fd9751115bd458317bcbb6669e1652577c823a41c37eaad9b3a633958ce98f8defb7bb3276583daf06fa299ee962e1fc97f90efe9cde813da15774c1b522387b27eff34a7f052ed79a16f3bf1649608f9271887af0073d4ed6bade1f83b1e91bdfe95d667da43f0a4dd08d07bf67e886f65eef9df4ea857ef6817be9e5be7bd2c3e5beeb3c1fc017df0217549d355db6266f3840cf2bd18d680757582f3b597525ce317df83a3d64dbf1f795ddbd5b7cfd53fc49f819f04768eb459fd1a3ddd02bf892db44ee11384b763483ee7a87d819aca339f951e3bf12f40b96ec3f26c3e28431124d3d0d3dd2c01915eb994af44763b1332aa049d525c726eb9c35d543d18e8a6d620a339bb5dab863d6327ae7e4a2253584bfaa2a862f1a785b130fc6157893d89773930b1e50af02e63228b53f9ca1b703ef206ad991ffb3ed84d0048ae94730c89167b276d26267143155a8e98665245a30d061d8b8d7d626385e77d3633cabfe14be2d3f833e3a6d8e757dac075f8abcce6ae2715f71e3eeb38319ab1f602a42f59855eafef9a0922d3cc7a1e1bf6ff1616147e2988ee0b04b68ffcc3ed068dee707d6399153cb786d316da160d162e642c013ccd71a5892b83cd5c9d037a35e0cbd42c35c93a7ee9a311b37ac6346e48739a85dd67c8c7c6debda75357cf195159eebec47f8199ae7c5dd53d47a309cfc15b3c3a9960facd8d65960dfcf0e9f19afcb7dbf5cdaabdd623fbef5ec3ee8d945a8736fa95d007dda001eed7caee0478fda77ed55e4927b95be477f99f935fbe9d0f1c56b59037219cbaea96f843edbfac51c8771ded68676f72eab1e7a960d9ffa8ddb8906c0f77519d36d1dea13870dea4f4dc6b839c9a8c5b9f16ce16e35c4da61ae709d439d0a5819a9558b7e96d499f1b7edd166fc1b97ecc36f6b609a6ab7332dfa4fa3646eebbdd94362b30ebf08a6b7123dbf53cf20f1d352431b2500aef0747c62396d8dba5726b5eaadcd78bbc5029873eeafa9a9687239a97bf4e477bf3f53c90edc5f707cf7c0f39efcfc47d07a847ffebb6328d4eda17d7da597dab8ceeee7bb4560fe5f7dbf79d67cd4c352ccefcc3a061d69d711ef66f6a57aec3920e782d70cf00a268fefa44d20f91e1ead5131150e2f7a351dd1322e4f3e2f26e6203efc302a56662e01c324e3f0cc49008e7b088cdea8c8a1a1493e2cf2db8eec17b578367496cde9f79cffbff0b246bc7efafd70fefdfcfa9317d3d74cbc9f726a265df81bd243edc20b0ab1fa4963d025560b9ae539fdeed74f1cd7ab3b7a37b1a7c23c39ed124779c2bb8bae1ae783dab7b1e02b5e7b187d953964999c953a47ac19ee7cdd034ec7ac5dc0e430f7542e632ce42716b53114eaf53ca7ebb05c53bb6fcdef878179fd1f123ffdbedab4191735f8e9a849e924a5775e11c33f4fb10673a42e03fa132ef04e1b8f8f8f0ade5e66fcc107ac008e829c1fc6be26ae32b13f790fc51ab8aa881ef205e30f2f871705b0b64b8bb8f258742843a9c5c027899e620530882e7016c26900c6a2e123f51bbd9298da96ebb8ac59af33b98970997be06088de056a47acf7ed83d68f40fc6f5c873e4fd7f98f4dedbefd30eb3e82f37aab6bbca9d32af8ed28f20b2a8e996dae37961d426330306b724dcc8d87759aeb5428cfe352a7397a076ae239a2ed269ac0597784d8c5c43b41a953659d3010b2de827bb691e7565e5163dc93f358bfe0f8d823e6453bced9bb31633cac893bc538a9a8170e7c5087da0ec4119bfc4f0d8e0eb4e3a111b52a2e7835163135a14becbaeb683ba85abd6655a4175a414b27f4ef5e5aef4bfaf059821f5a56f4a9880f9a58087864103f140b7639cfdbe3b03e039d05f9fcf6d829fbf513e2092e8f1df95b736c177bef55c7c6318005404fa830c78046961581bf1bbb1971c9a813c3e3a3ed0321a75e892e657e683f5737b8b607e8c8403f29ab33f07f3cd6d8f1c89a678b2351e6bed2dfa2d44d7fcdbe0ffb69c23d791909f60d1816c4d766fff29cffe5fcd6521fad88c33af1721de0e7aecba7ee1f067d6b69afbfdf6aa2ef7c704acd39d7e2d26df84820765817aad7f201831607ebb07e2f714503bc2cb4dc914b15d227acc94fc2df1afd22bca9466f95e83c2ec197128e964dcfcac0ca1a4fe6e4a5e7ace72e9b4b4fe8b5af0a0f3c76251a74ec31e4f9f9fb408348f8be824f0256916b0e7baced73b397c532f732c112a5ad564c4d6c9df8bd986b031c0fb1bc9c4bc43308fedf3df9c740df78db5ed30ef3b5535fcb16cd800e6b18666ec0afc2bd2aef09f4d37ca6ffc78cc5c4995a8bc1ae9ca7c3976cd6bdf911be89d7a289d759158135f1a7333dcb2b3db08ee033cd7e54ebff41bf60f061adbff361adff93f7f4760fdfddc366e24fd7ccd3648f80475b6065f4c711cc1bfca3dffccdaaa7c5dbf7b21f03ad00b3174eac4e785917498fc07e833f619b3824a5be5bb253cae45683a3796ff7bafbbc2be783a9c9af0e0fb3ee7a3598fa0f8369f1600dbf7fbbed576ff6ab6daeacbc73e9271af6c4bfed313373527c94cebd7adcff86fdfccbbefd0f788d7f2dc8393f4efc15f108c99d7da51fec249b8d9f17d6b0b3fa3afebed8723effa97efe9fa849d5a189e79356ebca6ab5aea06db56cceba57f0b59e5c6a5ff1f928c1f30e75b3a6bede80b781b5fafc3ca8974dcc7a0e74a44f3f8733cfc3aa545fbdaa01d163cbbc6efd7b3cf3afaa6b0ed7f3c1ee7bfc38b556832fe574d62db046d8371fd08fea31f1b96ef7919f7b8bc739fdf0bee6f4e54bee5efbb7d337c0bccecd90c3c4c0ddb4f77564eefb57d53e177f76f14640cded3276cdf3e8eb75f8ead5a05fc7fb2ff57c30add3afd37a39a8763af1fecc7a5c3ffbe47a92138b0c7e03fa154fc0bf430ba2cd2fa1bd403e9fdf57e42ca3b6ca9e333919ae867634742c2b781fc37372c8e39df84079979f3b3cbd370af27a01cfe725739af4d8213eadd5a287075f65c6153162a1f8b6a8ce29b640fde3ee89bfaf95f0cb3e3d7efec831f339ac46d7ec23d4ed84de8a2df756382e5be69bb5fc5e8ce97788bad6b249fcb48ccc7881a69ab9674b6aed821f94e7aae8bf9093831ef95159c7d367b6d87b4d0db6867a51a168f582f7e35e78aab9514f746a266e130538477b54f45fc4f34b72cc18d80cd1876b790466dd3363b196f7e133afe4955ad9fd30cc66d5fe3696fe3dc7d2b4c84a45ffdb8a753cf0949be8ccf314efb53ce7b80981572556e75aef99f17ab9fdd2590daae7c57f4aeff58cff3add0f72ecb7d0e7e13509f3081a4cc04b35f27bad07c70eb5afccbea1156abe1baf562de6a0e65e13f5c89551f04904dfdb19155e93f8a7cffc8bfb07ae3db1a04d969ff62ad454dbb96cc95c8e459b4ac97dfb3fbadfbbbbcef2f1ee659ea447f567e6abb34fc6a3ae608ebbd4800aaa07dc07c60aa2c96e433b1d18121367e0bea0df2b3ed5c43ca387081ccb51a54797795050cbf1101f443dd78d52c6c1e7f7ae43b53fdac4c49b58b7cfb15a7bb5c4b8d01134e3f63456192b351a7e3e69976335383e605d4b65ec5cabe3345edf704dff179a3c662f59a9f77b49fc6e2f79b57fa5d7ec5ffdeb7abd832f8f73bbda25f6fc165bbcf546a93d67f2d3b59229f47da48f710cfd5623dceb8c9269c3b52746dd64944cff4a803716ce3af0e856cbdf3a98fc07981b3cf7883faf5b3ea8cad51bacfa95d8adef737bf5324fbf94b7fbfeafbbef8bc4cb85e7f07bf87dbf38dfc7fb7e319f4ecbc5e04bf1f06772f03e173ff4c0b5aad47b4c4375c2c0a13ff506ef404cdc913e60c056387af6c131d88f3cff0d3c03e995207e30636499c31ba6f1a047418cf65903c73ca60df7978bbad985964e98ab47550926ed547f13de94cdbd23a8e326a84f5a0f2d5760d3ead0a43939e3e0ca941130e65e47c6e341deef907b95961afa6dc4c9b2de322ec4ffff085e04b96fd4db2982fadbb6aded6d4bedafa0d7633eab7d6cfdc780edee41b30e1a9d7a737a3c79d081df605ef3f5598bbf3975f0e8955db77a19d07f93f9483fe35470bad093adc9f108ad2c696b95c23dabe1edd18c8aac1b43eb56fc227bee51b51e43d0e43131e3bca00ea327daa25e5734462dc10349ff3cedbeebb74fd06fbf6a5ec766ce0ca6f5b724bcd528dfe59a4b6aa1d7aead2df82755a3023e8236eb8379a91a95ab62f884b8dc167c8668309898ac1df7f076ea6495b672e797cf67bf7b59045f8ed94c3fafbe0aaf7ae336efd6b30418a3063ed2e0d666c010d3b716de3ed03057c978062ec7d7ac9ee03b689fdfc97c37be8f9c20d54c8bc079f0832374ad9aebf68ef31853b731f6ef714f3befeee9355c4de868653887b8a1ee073542b39c3859b741eebacfe1359bd5c02c1dcf7b41d6f223abf6bc2657624fcf632cbd8db17f8f31d6fcae31a69cccf98d63acf9fc18cb6e63ecdf638c55bf6d8cddd3c3ee378db1eaf3632cbf8db17f8b31b63379fa0cc7753ea3fbbeb389915ff9a26365015fbb416dd725663bac1fe88f5e50a7d76bc795e813b69aa37a16a56d1cf9ab38365cdbddf271dbbdf5015e8de1ffb71cf48b87fb71eb7157aace5b2c5540fd9146fb8217b0e9271b03230d4c73ed59133fb0a6c5f069948c6db5cd5dfaece35e5bf00ea4b717c76a27737fd31ae6aee8ddf19bd6b075a8afd3deef996b3bbf1f76637bbd5eee57cf8bfdb2be8db58ff4d2e8fda4acdc8136dd6f5a1b54b27a02562a38ca67fc63f3e11339257d4f749a77a921b802fefe81fd317c276de595ee641dce1fe989513fdf227f32a5e6c47558ad8fc669731ba7ff9a31b02ab6a519a7c05cd49eb32a52784a892fb713fac35025abd94fece79fe8b505b92aeee057ac53330733734ebf690ec6e6fba007acadd7f3f0378cd3ce6d9c7ed07fe951975bd5ae68ae87c7157c9ba761343b52fb18f779f91befb3e27ddeb89d5f8f0fffe93996738e9973b3decd33733d7295fecbd758fb3676ff65fb6cf5003fd915fd099ccc7af0c7fff09aaae86732cbeb0fe660455d7525ebedf637c63c7dc6db13f73a0f8e535eb4f31f06fd7a6eefca7973cbc17f3d0797f522c82bdd8766a7b52a8621f20f4b211f317989ac336d3e358b66b9352ab64d1b0baa7d6e494ef4b7b9d627f0e74d08ddcf296390d68775e27626fe4e51ef47e511c66950fdbebc6ac7715affce71babd8dd37fd5381de4f0273d8dd3d9fff5380d4bed2ff328c038fd9df93fc6a9ee5d394efbfa796e77d78b40ef1683aab318f46b950eff543ce13fb8f787e82fabe26ea6b6c7daec899fe3dc0475e2cb3193bb99bad6e3d3de3d2ef6fd97d89ebe2cbe4e5fb2fbb08ef7fd3f93b3f24fae43f083cd6bd5cfdafbf289d8cbc4eb774a8e59a95d565d9973260fb35599cd2a7f3eab5e56b36abd2c742fbb0fff33b802bfc8899d16d7e18113e76e9dd93babf5101f15fa9dfe2763d8f0382d86bc2f9ff04bd6b5e79ce7ee7476657df6fdbdddeaef8b7d779739e3dd3ce87e9fccba26672be7f771759bd357cc69b3df9ee7f3934ae6266ef8440c101ea971be7e528fd9211ae407f5f87ca06ed9d0ace1e739fff5f910616f3aeb385ecb45fc8571725bfbff2dc609f474eb69111ccfc71cfeb548b2834a86763480c6a7fbd0b35aae74fd2f1e27cd6d9cfc5b8c1397e3647e5a37f4e3f3416dac4a3d662ec78489ff5b4d8521d61db537eb4e769d4e4e9b0ff457cff3fd16fb4a72c3925f590ba48f978646775852333204c76094a4397d96bc9c5e45a8eb51533ee92bf8f19adc143ef27167c49c0fb59751121f54cb330aa001e686beca47454ecdbd825ac9e867803fe976e0af39a1b7d314dea3d34fc4afd018ae4cce99355eeb4d6a110f0e6d3a7833c1ab63024dcc5a3c3b5dea14a64efb3cf43d932357a26fdb819eeec4ed2ecc7580ef0bb4c1a0aba89a39fb35f7cfa2d378d2633c8a0619f467ce1ab6c0db27e06625aa241f8fe73d2d021b5af9f0a509726adb7ad5aa803e55492de5d6f37f5a9c7801fc3b74dcb578e3e32709a0e30ecf9a89777ce859cd85774419f55a5d60f18f99507757b77ea9f8fb7476b5d799e479537bb77f48fab71ce0d773800a3ef213d6b8a3f458034fdef31c8c131f5e3ff0d08ea0d56a515fb367d1e7875e3e65e407f0ca8667c3c67316d011cec4fb27ee0a77803f93b306e335fe87ec0198e3e6b6f0aae1cfbb821ffe517c833d7a1a378aded8e827b847f13db4318fe1d1e655f422f22ae52833278fe2b5da81166da3a8dff1b9d8e3fe61367f56dbe17ab9adbe67f6cb6d8cfee2189575c99275a5864ee3c6adcd7e029db51ec6dd119ec7e61e82e3007fbc2a81b77b66411f8a3e50a8298a268b453de4cc1a25635f5347b4097bf045b5e96b62f6ab1575530ab3ee1e1bd1326ff42eabce35c8ab629d37fb25ea9da54eb89eb7fc48f4a4fca1cfba7098abc483f6a582076bab45059d17e84bd1772c3befbdd04c0fcdb93b2313af91ab83ef10f5e53b6cad1a5e078ff0c86e3508adb7bae9d863a60a7b8aaab187b9726fcc3a5e70af30eff5cad6a7069a6a3d97df153e35fd273d53e5d927847ae5ab8d65716f4d0fdc2fe011f2d702c7b97b1a25fabcf74d5c573c3fa9b3071ed6b451f022041f9e7f9f5eed51f47efedeeac3bf5a1ffebd73cfec53b23f5d3fe7e252375bf68193e1e5bc76e8c99c9751b2f39579f4e9cb4dbda60cb114f88e66bff88abdc5a5867578f6b836f3f6778c37ebb65fdcf68b77b5361353d9affdd9626ac59e627faed3698375b981c625f688986be15e71bda5979889e173750f7fb99cfead271fb14e568bc72dbc5c3db316db2368d98a0f2cd66793173c1f709c417e50ce79ff1815b9c96f2af1d4a06fcebdaaf039f492c4df4d5e422f3b79cd2c105f1a137786c24555a52a96f00b88e00be6d6d4d2d9cafeb3b5a099476f1ff33a97fb600e1d1bb581beb23b2a627a9d27d39fb8479faa23dcea4957d5937e6f0d203ccfe7eb73ff9ab198eab95d9d5ed617f252fbcb03e3b1a9af0a8f63cdfc8e382d436e1471cf7097f025f2c4d7333c44c404d6a362fb1bc6dbce5fd8dd723ed3d67c368e16d6ae5c0da6f5623fb56e98b65f8e5b2ce83f26eb3bdec33c3f3d82c30f2d005ff48ea80f49ce0478f151cfed8a3e5e4defbbdcac53ddc43f1df733fac5d48487df6b582a7f4b8f63b34fd556a9ac23b4dba06bdf931ff33b75bdbaf499db96aa761b7adc055df2f64d2e02bf970abeb9fe16bafce67b44d49eaf5927f0f8fbec78106fe57a5478e6bb55ed31fed1b13cb98de55facc9d6eca520ae558a5ec7dd28082a4d2dc8f6917a1d4998eb4089ae689c03230ecce6563cabb62e34499b3447bd671b38666da6ef071ecd712ae6a3265feb7f4e6faa3031c7baa0c605f4baad5111d207055e731efc16db5ad0b7bd051f21d155ff78aea43f9c2335b52de02da78859688f9196dac44545ff45e69b79ad9b9ce64f58f187bf5337cd73c5a74e518b11de769faf75a63fee75dee28d5fc5dae5a582c707f4786d6d1d6b2de33c4e82d6c7561ee9c7a6369e052fd006fe230d3921a978d6617d7fd13db7a6877c68515f051e88f2080d16e6910305bdded657099a4b3d934b98f9f719bc4d5b0f52adf77e67542cc5935751ff851ee2ad3e65b5da58dd07cced6141df777808c163324a9607b5b16c7a8a0dff5a245b7806a9f4b43fc0f78073c3933da1dd53b0cf58edfe20fbcb792ef6bcf331382feb762e72feaccf73d9cc23cc25f3fb4ee6757e9063617fc231aef3f9799583c7f69772b19f16abc1749becbf0c178fe3dd72dfddad7c75cbc97f116b6472d488fe5cee451c747d7c35388a8f3f742b4d2e5ee9daebd2f72bc75a7d8abb9b8c5e77f4c9ee522b5b95d167347a2fbe4fdc042e75b9b7f421c3feb3bd8cfb6dfe3f404f25e27b9b51217adcd8e3764ff85eb3a3e8c60effa2d72662334bf6938bbd49f623ec5171bbb7bcbc997fff487c7771cc6bb59f2f63bd6435e85bab7bbdc9eec31ba6eb3a6d017afea26735fe07623cf35af693237f9b4713f8855ef6ceda982cbf8cc93ed117714645269eefca8a1bb3ff86a7cf57d03246ff43fa1eba41df839e761dbe37e4b5e0fc7ae179e17ff66f1eb3377cd95563764bdf40d4f586bf69cc9a71a1a04faf0365d31b127a850df79be565afacd1f004f4e4ff4b9e4fed7e0a071bc1df0dbdb15a6d51a774649f607faded3b5ff6112ece033e0ded7988e6bb426f62e9f07fd769e9bdca1fa6dacaccd8b48737ecf42d9ef927e29917fecdea8e8acf7138de8dd7bfc183dfd6e05fd724a25fcd5cb863db3a6e4c6cb775a87f1ab0ef9964f4d9a446ccdfe7bdd07b47fe6ac7c9b28c9234d7b5db153dd8b62e549871c6f7c1f3937aa7c0832dedebe306c62ca738e8b4f79b7ddfabd8370b1b9e5786359f8fa7bcbe5236fc486bf68e3e8c291097877e002c2a71a7cff4954bee9ed4636603c3fc5b638ce18feba1374cc2153a498809aa69b17e326bb0d9a7a389db653c9156acf704363506c29c5cc59f8d3b02f689365efb28e37e092ddd93a6fd353a4aac29556f620362d57c93439ab9bc5eabc433e33a3f3d8a77356a4be83779d5377a6056c0dd430f6ad88e6bf03334c7f5a76b28a9335eafbe4e9b6cdfaf6ff594df8871a8bdeeef1bbf21fd16e0471654e223d23e9ed6ed087eb54b7a6ad7c03d377ae37542ff1335fe0dfc6e248e621d72015f46f7a8a659973e9d29f48ac56fb91925c181d803c59a60ef87f1c8bfd55a7d8b4fdee5f93f796faeab2184feef991f1f8c4b78709a6bb7f868aefec63533d97fb12ed7cddb187acf171a15a978500576062f77abd4c46e57ec6104d03a176f797754c4ae594f22b39f0237ba25ce350196aaab7b96e46ed01b806ec199c71036d40153ce68e276b4a52abd713bc40672df17ef57e4f8a89361dd0c1bf16d3f463db7435f788cc55201b7b22ccd7158075836c4b087a54e9607f8e003ff82de0dfc1578dea94d4fa7e0302a820638447c67571ee139ee3ee07cd39a98ac18187ce2b2ccf80e89a92de67f2dcc754b507b7022626c3b91c931f95aebe46b0fcc1c6ac6d468801f14b05c2d964e7c02521718ba165f9704c4c7d037a1d4497b8dbdcee8fc39f2ba5fe6eafcfcded9439c7f3c79a1d02ba1433f604fb80b9eac05a87536c499fd9e3ad5793d89c157d03df7885a51cf955ea3e7b43db3964711fac1959e38c45364b3eae561d67dbce1277e395fb04745dc85d6ca4c098686f18f89a7d9e3452fa48c1278681e35f24c4ff2df98f9ef697c64a5f6b7f9bb3cb3084ac9336dc933e558983b7666de97c41de0dcf0881eb2191f58b3feb91a01cf57efe9e963c639e68dc9d9930c1e1f9cdfb1bdc05a90717eef91d71f64fc92d3c0da673d2a6287731cde402e780813fe9deb897e731d635ec7defbeba83fa359b071ad68e275c1754ad2f35a5484f457c179efd4e99ef1fe5a5c7be3cabc4f35d941f602576fcc71b607798d79ef67f886f0c2897cd44aea6882eb5c732fc8bb61bb8e3a19c7917df2da2b35f0c7a7f7ff95244b7099749a774645bf60bd30e09e9328b3fec9755fe63a38a2d7a36bd4711c6a9d99b518e3e2fb47f3e55add00f674e232f257f4ab2ccc5eb76cc851b44a730d235f956a6395f0cae477ecd08b765a08e6d9dc0bf47fcc5e49de6476d0fbe3090badf60a9807ec8f856ab06fc357d32aa3f4d8357b27eaa703f31aaf4b4e27cf2132b140921f46c53ad4f8bfd9733d19cbdcb378ed147c9a592fe27e871a1ace35965a137929e4e52cf9997e8a711da166963a9cdf384e438cb4a2be934f0cbb26ce0a1866ed9b399812df81f331f7fef41c7c9a511108161b314fc3d8667b1891abea7edb9a3527c8f52caf19dbb49854d549c47b3a9ae17b334632d70cd8a78cf188bf3cc0a308717b5e9ad742abc9cc8d04b80cc449829d2f95bf7a51ecc5c93e6bd6bad48c591be3f83add10c16bf45f16835d396f6efd8c5f8e89b8169233c1fe2e6bb3669c35a86d7538aeb795acf38c0389ffb338bee3b6df217ba67e8bdb33ef276e6fc31ef1eb3dc3bc2fb5583fc6236a0fbae722468daee78db6dfcf663d41b998c31b175a77f4c14a2dd60fe6aff7dd1a5ebb662fc3dce5daef359c7f4bae038e890b72b3b674e5ef9c83f611c7e0b89fdfc9fe255c05d69cdbf3fa76db8f6efbd16d3ffa53f6a3ffb7ba1f9b7c6ba7acf164e18cd7ccc76eb9d75bef91519136c2e17789938d5d4dae8d15997514dcaf40bc1875286b72877cbbc0c698864e7040af42ac33fd1770f138eeccfa845a71e407f4bae338aebfed39f634e7e461540426b76bd74f8edf243473d0cd38b6b8c6494ddccccb113cdcf15ef3bbf9a9cd8f592354715a8b4d2e83fa92cc6733e7c1d9d0feea09e3d00647baa196485b9b72bbc001f4ccda60ce1b1c6a7b54645dae1da87d498dcacc97d83c2fc50bbcd2e6fd7c6c70ce3dd7c17949ad067c11f44acd770c4a9c63919a35cecc4f6b891cd76ae7b5590bc1271f1559c5c7adc3b90c8fe7238e0d7f4a8fb5b13db569597b5bb67d2859fb52ee57665d4db283d4ae1ab9a616cf6dc9ba563b7f994f9a6bdca8197c3ebb5cbbf048efcc2237e7e2e8999263a7721cb3e69a738eed654dbd16d584582fcc98e3f750767bafa8e5129835aaab1fb1567747dcff91cb9a7b80f3c77d35eb57ece0bccc986970cc266eb6a51997f0ff045771e9d01fd3b5427f5de07bd14bd48ec44b34ecb915ee43ed56fcaca58ca36557f870c46a80970a5cc8816320339f5f714dc65a576a8c3760393a0f3ec7d808b812b9f70d71a0e6b8cbda8c33de7f5588ee471136f2fa26c2ff42728c8047c9392f6a576a7dcb923d7db7e1f9b935ae19f43fcc632eba3fb8a666afc2dacf63edf8393dee81388706fcdb4ac99cd2ace52206a2d729ea6436afa1cc25703d774fb8ff4e8638eda1e73adac6bd87e7ab06f6352c31cf1c65e290123af9664f2b74016f55682a87e475e3dcc78d991f665f30fba5e65cb538be4c7c6cc695eaa0460b9c97f9b1b8173666ec6ca179fe6d6f99f98a7e6d940c71ff3967cc6bcc9849bb6d1d1a782fd44eb96fb5c7668d1463add6562e9a5861097fcfa4f5f1c5753972df4f79fd1cb3fec507eefd81ccb9a5594bdb73905af3b219154ba9876f65eec40eeac4131317607c99e33a2b334f440f08e3c3df1e4ef74b5eb3440c60ae4feee0be20a61da2d6ac9a6d6ec6b9decbf5e4da54eac68cc980f56678dc06728dccfdc8445fc97511939973c4ba103752db7614f7f752c1c703eb55ddce65f40607b89ed514ff1f3e611dabcdda28f56c339619efdbe01ba3ee857e678731901923a9c39adfce1e15c084d4acd9dfbda057b941adab2137157b4fcebd871ac659033e33e22f68631559851a6313e65cb73df429ccbcd5a9aa11db213fcbcd7571a119054c0ef47b8ed7e9757fe9ac06d5f3623fbdcb6cbd5b3afa39dbef5e4c3c9deca7ceadd7f4518e90b2166a72c789eb8c44ab5b4d30b773750f3ca72b7c4c17317f7a6ccc7a8f5a277cb2e39cfdea2c57f759a56c681fda82bba8a7c5aee0be02cd6eaccbc8894d5c031e3db01a75e8cfcd312bf6954c1cecd5a36468d689ee28090f6a63d5a324cc4dce6d7294b0e776e1a5bdf1aeeb79ffcd78b98d958ff4ac8717f7c7c3fd097dde9fd00f714f46589fb6b857e6fe8ce07d0e0dcc6e88d8706eab4443037394ccf1a8b779775aec42d5c99c073f705757622c13676aa15e96f68bcc9e364b7bb7590ca683853374b2fbe17f5bafb978b81f168bc1f4a39ca838d5fe923667d26dcdc132b9a88c855afe567faece62eefbb0e05e9eb11fdaa4b9c965425f37a34472da89659ee7edf3d057d4dfe0fae420b634c73bf537a70d9fa31690539391fa367a6275beed713c7a0699b56a7f645c99d0ff0d31a50fbdfe0efdf46378062ac43359aeeddcac7db5898bb1dff504bb23fd9e88f9539df839e3b1e4cee4de5d6a5db53978da4cfc407aec668d8c4b857c3f93fdb3ed156da9cd86e7bb50256b5bcfb08e76ceda28c1696e8daed492ff788ea4ff5df5e5bd7e5eeef54bfbfed7f34fb7f5874a09262673a49f588c39d61f87f2fbf013bc0a782d736ca3f6887cb3917cdaa1cea727e34cbf102b21b54f688904c88f246f3ab41ef8c8b1a073686237ef70d22834af43dcea55663cb2b66a5e67feb6842e89c4c8e66f76dc0447134f031f8d5a84c7bcaf071c48d79ce794b52fe052307e37d80f9ef47dd6a1ae6d7ad6819b485dcbece37bd1d53131207ad061b7ad8f9a5c839885ad1532afef6ae8f16ca1a1a2586b3f9ed68c9eac19c4b0b06e0d9f8e00fb8e997353c4b7fdb5591fb07725c42f98b8f4817c40d187444c5b49ac5f734f735d55ff96f8e2fb6ad6b5e27dff259b758bf974b55e0caaddeaa665f20177c333f9993bfd78dd0bf50c7893b6fe62c69cad92f19ae30f7d088c43958c3f8a276dee11ebbbcbd7ab8d57e969d6cd10af48ed853d7e0738bec2cba37b60f89c69b17bd2ceb336e3349a9ab11e58c41ccf0b8e75600a4e71eaaa98cbde1748cc14e66a9fdbab6218ea1ff480327b576776b5fb681dcc4e314760cbff8bb617a692e19b352a28f5f4378fdd1be6e6031dd714384fc4b3cc7f9c6f7bcba6cee3abbf21af8a52e2d495c9b713d40fd04f8966d0fd76b87eaeccdf9d5192951afc0ff318e47a9bdb66cd84be32b5921d3db08e1cd7d019b7e5d833bd3f1e22e458d3df102f7ce92c1ec7bd8593ff77c50b3fa76394ebfbacd241de991653b3f61cccda34f1a797eb92ac078175b9ce98bf9935246bb87684d8a7b7d8bf7eb006625c84feae20d611bdd546e2ea8389ab974dfbdce3fec81e4127f4cd73ab7d8eff7fdb9bb13386d6e9594b3b162d3d255848d1d1637c017d53d1133c69e6812312e4a2e79736d05c457d40f4366af4e66ce2dcd78df4a45dd40dccfffa59157dc55e5f6af35de99fe5626f2eb6e80d628c3788e72bc64b99d418870db5418216c765b35e18fcbebd5bd6e4ffb23cf2676b033efafd3dee6fe7e741bd6ce252fbadaeefe9e7a07b784d052e4f5fb53863bc27f487ecab231f33f9d5ba404d14b506d5e2769d88f8038c7dddac1b68ce4c805fc5dfa90fb6a6d630384b5b68ea917b9fe5665f27afee8eb922f1c9278d70d9ff0fea22fed6ecc15a9c474bbe16ebb76a46e0ec0133d040831b3a9b6e279a58a2a569c6afbe130ea1332ab627eca3f9de66ce68d4e2a169dc1d25791ef52c77d9e49c2313335fd6124fe43562fe8d796ddce55a005ca1ab9c6768e608ce1138437c3fd6d06d79de505bdf2366e5427f807d7ee953e2b9824eb222f6d3e63d9ac3b342239fcd1be9db77502f26cf05bfa74d60e6a173d2b3fc2a9a99af748d5525b17605ecb9594baed3bc39f5aae3d9789bdaebefcbaf77cf8bfdcacfee8737cecafbb95b85feee49ed32fbc1d7333dc80faa9355262f5a153a8cbe66f583af6de5987539ce057f50c9bdee46a8cd0665946c73b553c48517610e9fd947559f6b8317f91fe693d97bffe6588fa28d813d622b75de36860fdfee852e705833b35fc41df82d0a969ffdc498de140db1feca3e36a322b7a171ecf7a9c564d6acc1f1803e4ced39133f2f75a2157b785e3df1fbb6dae7353c38801191de56837a94a503659d791bc49470cd5b9a6b51691bbdad83dae60e3062932b795a17fbd27c304eb37bfd3f7fe498fe4cfeb881f6b19b409f0c58767b54cc5f884b87f6712d18ef4a7068799be70befcec440c7c40f6b608392b5f427c263565b16c7937788c0dfc31a7d88beaa57ebb589e5b0df90576ede63a3f657e4a8196ae857c65c63fde91dd7606ae1ab36b7f57f755fbd03d6911c4725d8b9d8621f0e3153adf6c7c349bb1873d92bb58ffdaac27b115385eea858d6dff626f79842a75eedf36655687a13d979b3da58b5f8a334b2567c36bfd8cefbe3efe3afc3e7d5fecfac477e9257586535343480ab51b57b84c78959cfb6c7caece5137f075da008f5b9dc8a51c7ce8129e22375fa507bbc7fd651cfadd8834de977454fa00eb93c197ad4e45cafccf86f88274c4b9de6dd51b1539a7c915a61ddcd2b7e9e425dedccb33531c58a1adb09f1295883a15f1e880f90273e40ec0b291bf541ee3bcc9b1bf3fc37d4bcb7f3817efa63e3804fae99ac61695eff5de698f98d5cb693c1bbcecc7b782399fd4cf25cbdcb9a893ffd41dd2bb03eaa0fffb82e27fd40f82dc607fd9859ac838c9f649fb7427f6c62952ed79c35ea26a17f67de1b6ac7c4309f1f238bd9ae4c07fd723eab92f9fdd87a98751f977fa677da0ffa231f9e338e9d3e4ed13731e36a7e3fdf2df65fb6f39f18e33f59cf74ded73353d42fcdd8c5b8357f33b9ffa778d481037cb3ec95a829302f3c483f51b8a429ea6de8d3210e0d800bc67d9ab895064e7e299e69ad6f46509af56ed472429bf07081b377a53f8935f013fa46adb6d1319a66f6a8081d897572557b4d68d6ee626523f79ca923f6ff04dccd1ada4bcd36d7f042d8961138b9e98118ed00daa3a342d5889781b79fde01bfd3705d070f99b189b916c4fd986b84ba4e58ea629beb8d650b1fa1abe91bc75e90af0ed4aed942af03daa6c49e758079638d5cb8c50134e505178a5a1330a41b70a14be2600387da09e22d67623b3c5f96ba1933c7dd1f3b8253b71093a3bf3a064f42cdd057765987b03af45188e9ed67ce11f5dbf16bce07ea0cdb83ee5916bcdff0dcb346093de8c9a734cfadf639fe7f8af53fb12e2d2dfdf230bbc5fb6fe702e2d60978eadd2835f9d7d6c41fed2339371baf527b851a08c6ebc6b5a389b9bfd9416fa81b0ccd62f037c1656f1837a14fe828ea8756a8b7d82616da768547dd15de3878aff08eebb9ae9a1dc9b1d9b8d537eeaff87c13bbb11feb129bdb73bbc4066c81318e664a3cdf02790c5b9fb9a6e5d66a934fa3966ab9927b1ca80f92bacc3ff89cd85c605a2b6255437954ec099b734cb6ecb1a2a70c6de5c3a8c84a056ce5168f664e29f45c03f9fcdcc4850795dc2597f948e80f1b93879ceb7a1e3c92310f9b25f584b647f6daccf534c7c07a15084e11755b475367da61be841a5197ba075b97f33c670e779d9ecf457da85a2ff79dbbf920fe23f38dcff533c0692226d4efbfe89e6b4b7fded5acbdd65cafd38658854c380931634478862cadd00726a6861e8f1947cd5ca9da6d94190fb55b419717c762cf403f4add7260729e2d31a13dd7ec37ac03fb5e1527db9c734ef409be3e1fcceb50eb34e787b18a7e43a5ff7ff6deac397564ed1afc4b9ad8d17589918c4590a90f1083b83362874080bde33514927e7d47aef524c636aeb74e699faf4ffbf8c201661002e5f00c6be8991c76ddd8fb71981f75ddf5911f83cbde051e88f7cdf3eb1fab343aaaf49eb9885304e8a5f959c358543f13b7617294df32fefecff2907d8fbf0fe38fde337a1bd4c9549931e0e92d383215f5ce4c8c921552e36e2c1e9f1af011705c922b7bc072a78ce3c80990350f78306a8ee87459bef2f84d8c443d035d9b1811759efa7adc89d78d332cf37a154aad6712b8daff057fc224cdd9dfe89fcddc38f3bc0af6cbe0f363dea310b7e832e2b8059750b1feb30daa143150543056390b570dbc42faf2827f11d99a92e816002b1f24bd2018969bbba41774b4687c985bc66e2627d79b64d2ed485fb21387fb12df17df6f64f648a9e94fc12932cf41671bf1137ecb0b4f330d5fcf1971ddb65ba3b67b732ee682d5c9edf7aec5a3b4e6deb27e498883eb0ccbc21da5d92949cd35b2b717af815a3dfcd2bac65ed30ccb9cdc3ae1ec5cad29c0455dbc92ff79fcf5922d06c7d40bbee7ea8db9aaa9db8e9a79c2fe5565626ec636e817b1c7545b2db32860ece55c738a7fac8071d8997958736e99f9c1f53a09592fb5e35d35f038f3d4049c38873d0a930765beee75cf2bce8d5ae69a87718a3d2d3f29782de0f9a3ec4b52e31dbfce0bac41e87b07c3b27b56d3cb9e643570c5b37d590e6d3f11631cfbc9d1ec277963ef7731f6dfae4f8ebd8fe7dbf60356fdfb7af58dcdf9981f0083b089557aefe983598f73e67ae0e63096217f363ea9c6ecff268e57c0dd9871f2df14fbb45d2357d1fe941dfe08be648eda5a1b50c7faba7f0a0e05f18ba883a02ff8ca69f9573141694a0c1ab896e0084627dd14b6cfee90eb65f2aa41ac1799f461478589654dac92d5c849c5a759d6e43266bfaa76ea491875d6e5c0ac7947dd2f8e7a915552df05ff3481d681434e087bb4b855fb2c9884b3b99e17957ec83847b65dd497d7e53dbdfac15b855633f8ab8c6ba6e41b9327da01ce8d987ab337b8393006d105bb4c6e73ee66e4ca91c388ba9183fe1738faf84e336f98dec7cacffec5faf4f879988ee5775ebffecef41f31fbdb097993b90fdea9d9bb0ae2b32e6b06b5217433fbec1ab8e04741cf40b4e9c8d10b587b9a4a8ede0d84975c59bea82a67b14af7de3fd4b9bdce4b5ecc9cfe9ec31fbc960bfd9039ab7074c4ba9bc685ea9f9d381ccfcdfff05d7bca8eba7f66cd6fe79838eefc188e5fd0cfc07ba6c7a4cf3a5412729d5635e2e2a3f6d551e283e62a56682497c1facdd79b757b2d1840d1e968327a62497d594f1c376fecfdae4baf60d6a8c99571ec7d3cdf3af638dcbffc5c8c7f65fed7d43efe77adfb586b3e62c32b0d8d4dd4d55f3134fbccfad857d79cc89f0733c623ef6a8dad740b0d0bfa2b0e3c3d2d7ce8f84cbac0230bbef907314391233d41d1b98dacce6dfd8f3588df8c27fdbcf2bfa6ee553b0de0c865bd815ed3c4deed440f7677447c590be60498c769016d0237abd4bc6866e5fe7998eab9ae8340343a2be299e0b9057f24f319665d618c71e1eb01573c4c75cabab7724d8caae712b7d4b66e3e2aa81f04deef053f96f4828ef0f86aab11400d2e7c4620e78af3d7ce99df13fd16ed414b04f95f012d1f133be0b37dd561fc1a17c9c4f1d75ba731ef895147417e560ecba9787e772f386672f889618ea1a142ce94a25e056a3478bc35feb0b3cb0f7ffc5a7e737c3eea97d581473f96cd0b3533910ba357c11a4e243d88ac23fa0ba7249c6d8665d698f79a1ccaeaaf40c3aa1cbc902b579043d68f2ac4bca5828e8e0e2fbe18c74474375368ed4ce9f1e5013b0b6f6de9199da13966624968e9c481682e98cf77b5e88724a1561abd457c17e0b8745314975bd60a0a956e9e5539d8dc7c1e5e9623735eae594b357d956a3d472fd4955898f9606a31f5f2d8c4d6ecd06fa987e5ecc72a8d4cccb391e7e4185df33b50ebf4f2d8e5b867e0c7b6ffd027fecdbaddf9d33cb79cbbfbd5d3775fe543adccc4bdbbc2a16e1f7acaaf3cf9a7ac42bd381d7f9683cca14ff29e4ff9243580a8708765e4a7d081cf4f2a5dcf75bf30316965f768708acb25f13469b7b8f6cb6899fb9f1fbf66eda9455dd45c07b32e5103c1de22c603c629161d3d604bb18f993988394a5ffe8afe4405d62845cd3dbc26b5f87bf4b0972fc06f82ef1ad5a2db67d602853a2c6a5e590d1c48f9e63380e3ff7940cdfe4c4fceb7e7021dbce9993e2d8733ebadd0bdcbe473bafc9cd4ac6983cbf91053131f5fcfebfabce38675ddd81eefa225c8e7a3a0ed3a943fdcf556fd3fca476f7f5afe3761b7fed6b82c8aa4ff46afbba0462af0758de8a53ac4b1742de6a5d0eff02fc3746c798b858ea2cb35bee04c81439d95c37254137750d83e1cf637d43f6b68869978d2cb6aab0d85ba4d9dd0f7805a65c05599bded32e64ae826516f2ca0b6d6a51e648e8d6312efb12ca91ba65cea5fe5cd85739ece3697712efbe8d5b86ed33f377b7eacddcc7b0ca3f3babc7f56fbacb995bf4dc2f567f8c9e0767deaee2fea53034f2d104334f2b9e61c1accf15eb74aa2c2c4c9953cd776cdaff3c31fbee5c58dfb7ff85f5413b2956fb9ee2bcb19b0d89c0eb0390fea68395d9637201e4047731f7ac5b86f9edf804f3a6a3262fe31162ef72bf584cf08044b73f913bc4e61f13af0d625f7143d54332ecceb66e586d8dba8085697796fc6536b5cff9b31325b74bf644cd88e3bf9f779257178cd032cde8e9fbe738ec34169f15a7fe7faff0d4e8959e3ab616ad68b31f81fba5f34cccd896d7c0c7fcf18991ef64f8f0fe3bbd5c377def0711dc94ecc23ef638d9a0af5f9d6a556e44f0ca0f19ca4bb237a2c6de3a7a7f1af2fcb756e83bb9e74dd751939975a2b741706ffdefaee3f5f5b9c388cfc49b8f686e9e059fb594d4dac71ac8961abd4031e3be331eaaf9d7f83fe5a93f767e5fa7e009de82f3986dafbc4d5c29bb3fc3a77bd75dc9fa8bfef9f959bf99370060db059b9ffb14a2367982e63e5fd6be32cf9077d046a44e93974d3e745953c6415f4a9daf61517ba592e74b39acf4edfba4737d796dfc5a59adfd4ddb275a2dd45a3c48c9b1f297215f46ecc5af163958e8ee0dd95d119bd9c83c90b97e679e777f476721f5e93c7e5bce34ce69dff365dc6bfdb337c06d63ddd84c0d551ef01be69d0ca158d841cfc9a11b490c57bb4fe778fa12134326237ab831a7126f07ee69853935fbba2396d726cd6f1a526207ac68dee01c7012c836e668de8dd9d5433b25a74bea65f5f954c8233f0bb4d0e6d72eac75b9d77d4065c7cee24a8c125854fc23ed6175daec8114caa78a5642ed64ed1c381360e785c561ba74bdd49685076df6b531e958f39e4bcf134b9e8e0dc3717dd1cf6900afaddbfd5cd89c37ba99399fc6d3d476f00f97b74d2a92e554fea6135f853c2eba03799c9194537c71f8a3647f2002e6f030e0c7cca76e2a371ad95d37da39523fc6157cbe3ac850c621ca76ddf6ba19bc7f9fa84753eaa36ebff367dc9bf15cf9b587ef6da2f470cb679f5893d3801f3efff7d0d100fa082e3e6c65a8039833a590dad7c33167bc159f791439cc573e07cf11c40bf8c1c477a9344a2494e1f24c11c41935ef7c169c271a127dee373c98302064a4307c38cc971392c639f7fd995375e445df9547054e01e299c9ff2fe651cc4917afba8390ad72977a9fd6f6e811933eb0c709ff6b19beb8f7005b846f1b5178ff1e9dbfdb375aceced9f560777bf7a1a4fecbef73d5f3ed6d1543a7ed60f19b187f799bfa2c729747fa95511558ff0e58a8251133943f274036896d6c03550df483c7484a3ea58cd50e0747705f183f0fe72a89d4f0d99930ac71be8d3d32b88b7e2454f9d0db386ee31df2e5e13f0c08227c849376b1ba7cb71e17d29cf6d1aee652377287de80c1e4af8f3a031435ca6ecb3660d009ecbc4eb0dcf4fb7d9cb1de04c7b76ece3d6d70b75bccc9f893cc6bddb6ace5ef6f2cbfcb1affd6c3ffe8df1e3547286e5fcbb6674bb07014d877962e6cc43e64cc2f58bcc977a98eebff797ffaefd65cab9321e7cd13e4dbbfcbbd7152eb6d5851a28d6c0cd1c59a3a70dffc16de026117ae70d7a250fbf8e6ae278df7bcf7fd7def35db7785fb7c891d3683fab5947024f0435e6dbff47f5778ef35fb107b9ebfe1ff572ded9afbf2616a7253fb1ebad4bfda26d4ff5216ba41f5cb31ffc46db83ba96697ed2e4d39e59cb8a1dea652ca1cb16c34b7f73073d1368a114bee0723cab330bac38702e59679866d0edf979703cfa3e44a2399e9f54dded0ccb81196fdcafc827f39349003d249e1374558ed455e97a381eb402c9850196e8c1fcafecf72aa4cf8d3e367df823d1df1d11b7c33a5cade9b5ecb55cbb7bd95cffcf7a7137cde683972faa61df0a97aa9fa05f2edaf19fece507f03d5af8569bf57afc597dbabe5d9f1efc2b58586dd62fbd2b9cf5d6711fc399a717bf8ebaee9e1f7b8e7bfd98ea39fe241c0323ab9eb2b6d867195f5f13dfd2521b9f3ab9e0d38fefa0d900edeb91d59f306ba063fd4575afeb0dcb8cb8fc9e59bb941b8705df3b093a493a2aec2df1f52646476c6b62860a583ee890753df4ad525d5affa8389c5a8d3770e2184f64e47e87d013f013ac37994b0d70e80274e2300a26e1f2532d3089e7cfa2af4d2df186f579fab1efa8fb4b9e2bb4b187e5ce1d41172deb502f38eb5ce95b78591313af0b2df322a0160f7e9786def6a366d50ba895663fb78caa91c92752e409d647b6a23fd5ec330fae1f29f0bbfad9e4367a91358f665d5f6447e5149506eed7691b3bf7b2c5b87cbcbfab97f3f12fdb37f88a73a51dbf6b13eb4f7bfc77377bfcea76fc681eff24ef1a15f0799d43e7b34ac0098016eb91f361267e6da2e10ebcb8925bebe32fdafae2eb00ac227438660dff174d1cfb1c7862f1c50f425bdcb0599b27d0707327e132d4d06ecee8d35ee60535f2a7859e179dac864633e31f68cc63cc8307074ef9c46926e13aa4bf7a069d0f70dfe13d3a35bf95ff97c76839be57de1fff937a1df4c0be646ed88aefd57526e17a6ef21df590558235116cd2fdb34aef3c25e34f45e63a7dc68fb9a99370bead93a03fd149c80b4dec53a576853f2b973f56e9aed0b3ac332c2367d49818b93869f4e8c8a14c7add4a4fbac124dcbff3499956438b697fc8ccbc809fbbe8cfbff67f51cbc0fda3c96931df9a25b50f4aebb1821cb6622d67fc8c5eaef540868668b762ff763c377bdad5791ca5ef7c14bf96235f8b3e73435dd0c07dec3915b1dff797dffa6f3cd6ae177cf8e3cfc7ef9cef56adb1663c71330ef67e531c0c8e36b41651279ba964d2edccca31c6bb4a97b1de678eb9cee04b20b699296a76c30bc235e7f23bd6c5d5fcbe7e74ee775f940bdbb24773efe96dd0d12657c6be1839e2735ae9fbcc7d0c9773e57cbe26eac3d91fa60a7a11b3123d5060b62e7c90c345cfbb464d674f2d437500f7af656d67f0e7ca3b1eb3c5e07f46f3f1eeabf6e15a72f6ab75999d12f410104f555af486cd5aaee785372bf55fc47dcb178d383d2f1479fc8ce3caa219a60325bcfd4a7be7b79e1613eab0b14e68f692116235eb7d417f947bd478925015c9ef58eb3d77931f8ebd953fd82d175f53bfa1754ff66fcfe54fbcdfd0939a5dc65212412f2160bdf6ce53ad393baf737a7a981d57fef23b9efd18cf566a9179c8ebadee0eb5c3b17ebf7a237ccaedf356d0f3e9fa71a8e7a2370bec2df02d7bacfbedb59c2e73f2e57b2efe1be6e2ef9a675fd45fa29d46c8a4ebaf8125c61c73a0850e8d0f730df2cef0d2bfda9d543356f0e39d041dcb63c15cda15c1b0dc75464d4e3fb149979ad6b8d5efb8b45da9ab983d57bfa86db7fa2c87142f92bfe0fdbcd9b3fdcf793dff3cae5ecfd793e582f3ff7b6e7fec6724fd823de2393c0102f1750884e77de6588ae98fb83b57d473465ce492a3ab45c720672ceec0a3b0c31a153d1059c39e52877a412d26ab9da891c7afad1e2e75dccc7d683967d4a52d75a86bf8557ad42aca4faacc0a4d6cbd372c8b0a354170fee29362fde1ac2741a36a075a83bacc8ec3b2db894dbe3e2de0456dd62f9343b22f6cbe57e6cb6b2ec74ac2fb12fa8217df8af894a06607ff34f3fd1bf4baa9595dd10b6d77544e51ab07d140df06677a16009361fdeb3dd124943ac200fc3372d4efe105c53e74d711af48f33d8e6a5ad4ea3e0bd0e3ee759d35e65ef7a4e003029c898fef5e07663d38c10b7e426e80b67e2e5bf64259cf1f15f4331b79a24979d2ec7f43f714be6787333526d16b709043eb727627be7fe243809a7c60c6c57aeb38662e036363ce89be24d0bfd4de59de3f158deecccd6af83db86a0b6f35febe93a0a65681aa56bdc0c5f76f76726e5190a1775040a795b7ec090ccba21387772fd0cb024e2133717c9dd581f4ff77e63a8a76a6f8d6cccf27050dd0297f2f5cab11b48b5498436712b7e51ef51f700a0e85f8998f2d66e3f27fcbfdce3531dd97f6d1fd64bfbb79ce3cf6643d872f92f96df7ebc3ecb4f2c6bb56ebecbfd99797f9c7a624b71c71d31bdd82bcb9d62d28de6a1e08b75d7afe418bbcbae1da0b2f80001832c471714d5fa0f8a44b339f0a6833eb72b05175e0e812fc79de123fe7706f9f76a06f4f3fcf468bb6bdf51095c7ea61a980d17bf58572844f0fff52977db9e894a485edc1119b57c27fc9e37e746e2e3979785f8227b5856f713d2cf34a74a3d95fec2bf09ee097c71af07968fd68809bc3fa56b5f717e2dcfc9273b215a6cd8ca74c34e0779d55cfe9d0c76b7752e1a6148d63e2ada0a51a48fd6574d48eea204ec5fb33ea31632e64e466954b451fae8c7d6f7a60f9f4918da9cd56075e3255667f80178612ddbc847e0b1dc620519535ec0d0373ba85a723bdca1ad486027aa18f8255c81e7b32092a35c771716cf1646c924bbde8eec5fc8fefe6a913f646b38f50cfdf7af63adc339479bfc7df66e4c1bf3d5c96f04ab2dc38eaeed4cc818b9afde7ec44ed27c4f2b5e8f837a2d11c421b08d8a3dc636ca28aa487fe21e2237d38378c69cc9eb6a3bf10f30487f821e8619af8843101b59411b3d14b43590c60a3e6c0ec7ad257f712aba907fc117c9ee8df6a7ecf1eb881d40aa2d738fa3e2b68004ecd6f6bbef329098b5312ee5bee997a93799bfd17ad9bb7e54b07d4fb1c3f5b8dd00f18b44324d8b7e92909453312eb78711c96eb17ced58cfae8bbc8675f3ba796f9c5e7213e6798dfc062c85e473d9647e408d076d6ff8bc7989d37f49ea9a1cd68cee324755bc91996f08687c633cee5151ff32926302aaa2bcd9eb8b52f9677ffb29c7776d962305d79e3cdcfaf89956b33f66ad5eb368f3da79a95e213853ef27dac17d95fe1db3ee9eb2dff650e7f1215ceac8cce8f61e4adcba8227f346a80679b43f3b1ad064c98cdabfdea30dee47bece351b6d87dd719ded719c4db3d01a65dff58a591374c67260f774567cd5999ebb62b9a35eaf31bf3fc8f3455c020d8f7b5dd2356fdd969d9bfaf67f84ddd3f574fe3e7ef58ee432c7746cdaeff59cd6e705babe770135fe5ddace9ed1c937f579887c8a3673f5626a72667d57b0cc7c4a36e81477566e5f2593f64aebc2f988463333ef818fc47ef4cdefdd78ffdde79be58ce675fd363f43f7dec80dbd1456d4e2f804daa949b79e29762fe0f86e56caecde30b6afaea5ed7bb7abd432c1331fe8fc4f299d7d7c03ab58f0b8ecbc560339e779eb379a7fca218fab65c8e4af5cfc761b973907f854b05bf7def5ca32e5cee1cd1b8f556d02177f0780acdfda859c9ff665ce8875fc7a4e7b88fd446f7f91a1d27d3b34f2fead9ef1a8fb7fb13c4e83958cbbcc219965d7745cdfe932e672a61eee33ea29e387e915c89ba2ae5d4e4bdee248ccfeb32aa458325c8a05793c31fdafa91c09b64a1aebc49baee3b9cb6dc77709f38551ceb4acfc5b17a2e47abe782bc143d1855583d9777da2e456b0f4feffe9479b397a9a79f97f3b1bbeacfd2e557d5346ad3cb03ee77ff46b3d7e4e6ac27d0e33b2557ae3031551c46e7153ccdc53bb019cb7b03873dbfc2e468f45167cdc2cca142a5e317e65979217579d4ff47cd8e5ec76574222f34660d0fbe1719f47ea9d31a39f41105e6f9a49a4ceee7273d53357c487bdd0e75d2a645b2f86562c06058c6666e486e19d7c01ea7f0eeacd5d6414d0778cc34337981cfefaba0d39ea46b8fd8bbc10b703cb5734ac201fa3ce2dd7652e1145e85d0fd2947cdcfcb6f1ad719be63b7e19c126def3097fbd313e7d6c8c77df4c050a7725ffdd047bedcbf78a5933376f5ba451bac237a29d490f3e079e713779d33e76d723eb6754eba06778ddc09bc0e5ea1c247cbaf9eb7efc171ec7b4ee8c3c87be4d8851c1baf6b1d2b2d06bbb1b73facfb7a931fbefbae377964ec0b56495f9d14b0c9aa12ef0c4f4f822ae93955068eca4eea7a3bcf7a7370cc46667f79199afb65065f74f3de24820f7047c35f66eac45c1fcc1c28b8c7e527d5c07fc6632d6854e86dd7953ea8cbb9038c77803ea8ec9dccd323731ef4ba9d041d73bcd4ec99e9deeea3d27fbb60ce3d60ced3cb5e1ad8bc3db1785c7cf7e26d7c3771eabf830f7f83e9a677cd05d39da6bb42f75fb1e1f4ac316bde7d432db26e6535c85eb5c9f859f671e8814fba959e822757b38e20de7e5313476e9eb5595b892d3bd30bb8201f29e59fae036785df19be3c66fdbd7a6de40ccb5d0ddfcdf2cefb0d35a97a19b9fbd57cb0cf9ff4f3e337cfeee6dcbbf216798d09c34bfdc9fa35564ac6abc485264f7d31b1681c8e0a683ccf0be7b3f1ad3f1fdf664c37cc6151d7f258af725ccbb3d44f595b3c39d6e0d9c360b33ecc5ebe649cd53a4f5dd2e3eb93eb040e4b6aaf2d306fc1256ff867e3c7e615af35ccd0727036163fc55ec9077ec2d27ca67012e02be77e367e927ed100dbb2cf02bcef5098e33f2bbffd987aecdf9f96de2c7e5c6867e50f3adfe3ea1696203fe966ade045dcece86f31093c45af1adfc457e2bba6e8015fd42ac2736db9a3e1637f563e3afa577ed02fcba97dfc5b57f2a64ede4e79f48240acf27a3f1d34afd88eeb3fe7e21d314ca3f3b4896c0f9a7bbded39f4e1d9e7305eb2de034e304c378dbd6f711de25d5124977ed94efc0b36f0d7868e12f294bfa9b1440f8cb675f2e7e55cffcf97c61fb59ee3ffe178a18319abd3ce3005f6b24ee97362f2769fb533f39c19431b857eac7786f688f99cd66bd0c3e0cfd57c3659ceef77cbc540afbcf1f718fa187f547138fe0b9d7afdafe8d47fd66331f94567562e9f9387ac524e017fa3a4879e4a7079dca7c6583209c8a103c762c9f1b80dc8af988017eb31760527de9b959187c7da8e97c5a05cf567c9ca1fff5a1ef665b630794da7f91e33b7d69d28a05758d10846c21dbef2f38f729d1ae6f245437eff45f782fc7dd698ff1d1e49e675c16ff1e8814fb8130c4be0b3e98f077c14ead1a7c48c717c8eeaacb7ce4974d08111d6a85d8bce38f379dcaa59261c969dcf3a9f2a502f47ed7b7452cd7eaee8f901ae3cf27d72bc816d432db1d7ad3435428fcab3b803e1c26c9d3a6f8063289807b4ee57bf640bfd3d0f3ece83200e07b13e7cca29b9adff71bba7e37cb2767680977acadc15b5eb7d3d3d77e2700f0f7bd14ef266e5f8592db2ce2aa44f20fc28eb6ea5dccc790c67e65c5a8f8195aff7e3a7d9cbea4197f961b6ffa29aa42dea3931b0ca26bfd2dbc057660d29f342fc9e9e87e966aefb67f132542755ee952abbec7398fc0bdafe2333bf056f1cd72bf4117647f82f326f039723890ad6f2cc1caff11c706f8cbd14e3b6d65c71fde7b23ffb3fcb43f625f3b6367e1fece74635796ed3007b52ba570a18c6333084b28f60af915aab23efbbbcdface566efa016e0e045f7824a30e91dd6b3072fd4c5125cfb04e3cb919a6d8dbed924089467c646e023ae97db576ef9bd028e9df845ea9534c4dfb6c718fcb1fbc6157ce8a17586b64fb9c3b5e275ec051ec6c9ee1cd0733713cd33e25971ad4cbc3109ea38bc7b7d3dfd7b8f52b3875faf799f68409aeb8c71d136fe5d792e74724787fbd317d5806951a731d71018b1a35e64c10afeb3e6b76fe139fbeff516f756e80f0cae3dc5dbcef5e36a3173bee7fb4d1c913309850301fdd4b8a05eaf89fbd69ed5c1d265466c4baf4b9c0bfaebdd0a7ec3f3738d3afa53263dbde573b23039c060ae25c6d765463c4cefe26fa44d4ef53bfa8b9a798bc9651cd1353f0ec1c99ad6e488820f791c96f0bcf1cd1e056e9559bf7ace29413c921d87e5cee44b9e68b3c3c71c9a3993c05573683337f43f0a7c62ee035f1d8a938666ad0aa8919c05c3095ee725c08f2ce1bb9440b32b76a4471cb0579d7bec13e7de632ff0c893015f4cbc954c1e9975c0c33a9ca1d18edfd0c79a5ae9fe99fb2abe3bb0d9c7849ad18dee17f89ed48234d7ab382693a0d6e0049b1c50ff907cd86bed3165d698be3a9257dc3dcaf3c821f39ac7b3fde6d76b1cbde943ff863de09c2d06fbd16250affcf577cef721f6db89afeb38861714f8b8f79e72986f69f2fc3ac9c4714cdebd4aa7a7242d8e8ada9c357a61983bdd6a06edaea8a0f7f9cee479ade3f5d5c25c9fef5cfde3751b155c4b236f56ee637840a4f1915a6be065225e4ec3883598743da76e53d6301617dedd36f014ea44e317d1c9269788f5980a1ada3bf0af7facd251c17542d1afadd92bfa8815a724bc9f2bf2fe8fc08c815334ed50879379844af7e42a9133d57e6c3c8d37993f1e65f3f5d7ac83b7d9bfcd35a8bb4e0add00737df45c9577a2b7979bf1a0e1f3b12bbccff5676e6a5dd6b7b52e3726fe3f6ae8bb22cfbb15e335d7b5a06b6e92f95cfb19f4fb34393fb44f446f6514509f9d9aec0a7942e16669764aa83fd679d5d5989eb4196f113daa89838e844f5700f3a8a17984fdd7ec4fad71792bafe36473ed4cfdd999affd8e293f8cc949b7460d618135c28c3b179e2e26fed83a1dd6c1e3633241bed9193588396be48665ecd1c38635f769237a2026fe346337ed8ac6efc88c0770d375afdb213fbaa016701a9f5e63a3c0037696c76b464d0eacadaacd1a9811778b9e62e04eed73c899f8f9495454cacfea61a94b732ce2e8153c0c86a5594f33135705a326ead8e341cb153c7cf07add38d4f0b6a786c01b2f46f093a18f6cf99ca5d5ca5647d15c7d9727a9eb5aadd54faea99b6275c2c1cf6c5ef5564605bc4598fb35b86dcc6fd76dcde9b1f361d59f355f545bea3f1b23b1bdc248f4ae3012bdf71889e20a23515c3012fff4bbe93aa888c18c822c1d99bc85be20b8858e0c78d2ba5cbe2067a9034f1d94e8d514f477425e38a55ee4167d38f8e92421f4693af2bc59b7a1b323739ac77a3273da1c0f1cfd06da012677422e88de05be37f63e6081a14de4d89e1f7d7bbad41102468dd8d284718f6bf2c00c7a49d87fa4f6a8b09e51eb52354378035b9df2dc91dca9a12e3f5fafa98d235c90c0d3be39efee895ae13930baf455e9faa8b76d835a4d025e33f16051f4af122d079367e5f2dd66f86dcd676735348accf786f614b1f912c3d7c0d0891791d9cb554d8da21d75a4ccf50bc95187be44b96e1db3e50ffbfa71be7efede1f6fec8f3de86f98db401fae35ad220f5a165b683905da57a25f35f2d0f79dc81c426d03da610ef42cb641c78c67552afea1e63e0297439bffcd3c814e16ea12b5a24e54a39fe82ba51ac5eb9ef2b51a7ab1661c8c9fe1bf03df2af4fc1c6848a5d4a81b9671400d8d3dea35a8535c7811d8ef517be1b8ec06975a4c5850d70ae30dc769508328ed5c82b60e7b0075d0e807f3f945709957e6fb420f2793b52297f9b94cf1bb4e829a3d7160e9fdf536a8b587fa8d9bc86f4feff098de02e5b831b90efbdaf658d3936ee8ef41bd9c5d95d5d0e0aaa9fd05bf1068eee01c7be0b298cfe0b5088b8b6e8f2a75032d30b306f0bdf82dc4b3c3acc7a2c9b573a05f32097cdd0bf85dd3d933f925d463134d2ffaea893fb94e370d754d44ab0db8848cf39c1e7db8deac8dedc41bc47c5f6aa85197487976fd159db74070b4b2e6c42ebdca58db112d33e1e821deafe19197e2395e2ff154d765cee3a5f71e5ee7016b60d6c333c64b5998df0b1c2b8558ed3f1f5bd8727d8437c93ad29bfc30feee537ea87964d089d651518be7c8ab6e6668b121f470127fc673d2e3da62d6bf241d2bf6ae73d643d0c39e0aee7374c471ef336fc27cf9e5d27f807e9789df7727d550af1a9a8c269f7ec3e1895f71eeb62ecb381ceba8c2fa967932f73aca39731da9a1ab552307df06d50afdd4029f97f4ae75c0ee7fa4e9087a4acacd8247d177a45f51414ede04797f95f4cf47938b4cc2b107af09f3785baea93fd82ffb7b075c98effdfb96268b73d15e21b7a11a96bb0ec704f85d85da9d8135fbd7790ccbcf780cb63fe6acb78e471e1530864795dec5d47c20b7aaddda34deac0eeb7d7ef8c3fda2f95c4bad6013e3741bb376a872ad8493ebafcbfca4c3a5120e6aade6854fae702c3aaf79332be53d66cf6ec00917efd8d129999e2b8dda58d49984bb939a9e5de22ef6f3641254a8e34ebaeea389e9a373954cba9d6189de94e89882cfeb0fcbc8f2fe0553b3c31aa66b70587d725cf9186a29f8fcc10bbd8181e70b988f5cebf69b3d141a822ff27c2d388e6b6c47459dc06ea50ee79afa6a38e69b3a75cb7a43942df47376f8c3ec9be17aa19d95e7fefaf9cdcfb8a917a4e645302b75ac7c68ddd6c3141a30ce249ccde95b6cc6a0d95f3673f4071fa017e3512f069a2f0e31d071f5186ebc61bab9752c6f988e7f105318358f3da75e97fa79986a4f1d8ac6dc47afc02b1ac183b6d58bba1a03dfbce81b1e88855ea0bec86b18399d389c797a479f5ddd37f9673758974bd1f659ca6b227f5d0e62bd80deb2437cbdb98e1b1357987164aeb179cc8c814af5f9d82a8dce71b8c1eb547af79cdc6715b51a23e8d828dfec4b66ecb4c5718e37ebfefdfdcf87bb97953fd8705c7cc9fde9ff5ebdb15f04b77a3cebad63e21670e4d5967995b99ef6ef0aa75e93ab8ed78a2eeed419327e47dd49f7cd5eb083564492a26f4c8c27fa8419ebece1600e4f48f6985d702f4d6ed9474fba264f270e5262e74fd2abf688515c8766efc3be038d53f11cb4757dd4d5850f749ddf3da8ff853b969fccf76f8b8d683fe667936cde79fac62e7d88c5e077f4482eb1bf262f1c7e47eb32722efa8716a74efff60db91aa84fa337295a2ad52b260d355f68e627e9ceac85d58cfdee1afb24bdac9ed5fc150b7fe9693e01d364f23567562ea1d1c873ea56f0c98ce0737636cf336673fc6bcdfa8b6766bfa865affc0dbe59e3fdaa3f7396d3e59ff961e67d7b25dd5a374727c6b8dd930ed712efc6270d1c437c52f424add88bbe8e8b6dfc3c96d7412bb9627df07dfc3cb5f133b0f0c332aa3f8b9fb96646358f3930fbae0b6f52f43f9ccaac91ab1ed6178c318e37138365d73a22d7dc8d9bebfcac5cc782afd449afdb31fbb4c92593fbacd336465bceabfdba3fbbd414be246ea315aee7375eab03749f0413f4e9f878c61ed7d27b6ddc9fbd2c17df7cd41bdc0a2f0ef7976bf2186e8ea8db4f1cef2faf875cb39ff4eaf427e1f2334dbdcfc645ebfd21f774fdb8b8e373dfd7f5dd7535312778bef50471217c4a02932b315f76ccbefe77b05552ffb3f5c14fb9c8c1aae778e40f8fa87d012cd7dad373c40fad6b288f0bbdc90ed57e190d3ae3feec902d662f5fb44fdb2a8f56e93ed6b3cc35f3d5c494ac85684fa59b67956ee6960faec95d7251c3a337077dfbb65dbba707120ff8f0e942cf6e77557f8b0b5ddbd714c8552eefefc9f1785c9fc728248712be1ce20b7bdcb63e00e35fb977bf5df567bbd961df3cce072f5f34f7683136cc6f3d2ba1af8ff5584113302186c4a7d6e1f4486c7474d2c0410681e0af9c6199c393552f9023fbe4271447be175aba25fa09c04122a6249e03fcba9cba8be2a14d4dc628901c1c9f9784f9919e52f4fac66795cae4bf81a26747c1e7678d064e13ef29c8a19889a63c38dbe48a87b139377798e6b865fe0fdf0d78dccb3e873eafb2ba7a33555163b25be92de7837e32ebdd945ef913f1ee9f41c70335673b6f92c52ff3399d64e27882c3415f5aa5d0edb49e58157df92c0e34167d1087fa20d40879cbcbc75a3c65ed9bde079d613982de5c9266053cfde65167582a87cfe196fe1bf05e89e9f9104501f1a6c52bde146bf5407a37856b7f3bd40e26f0677086e5fe051820f8ba65f46fdf028754c14b88bd858abe25f78a182bf37bede9d510420b0fb7fc4c682095f42331e7999f74dd159e6ecef108fe45e0134b0bdc52e7e2fb82b1d27abd387df7896e7a86547a71a98f3fab746ce23c7a36bcf1f5973ad2021a24057071975a52b782fee3ab8ee32b6766911d4d6cc163bdf26da8db9803abaf81db296af1d0119d0be7a27391d7e0285d742d86e945e7e2ed1ce5dc7ef79a99c94b595b8e585bfeeddf71968907ded4bde27f1dd5e297e67e39e31ab4fd740df2b836427396dab30bbb0615d76b907fd19dc4eb8adf9027fd715a4eef5f565f33ae6a37377a5d5f3876d643fc08ce1af00d82a9b2bee2d3335e4f3da6d8b9f0c253e124a699ed6fb2b67db0bc98aee5c554f4c10217ae869e93e020c5574a4b6cd6f0f5e4afbce3d6b0370a1ec3eb6bdbc6e1e677beaca35f33c66ab98642bfd91996bb661546b24f8ee9738a7821386bef6ce21e0f3100eb6eb8aec02223d6192895eea0cf6c620ae53967f6a5f5e538e010f4cf267ea88185dd9dcf728dfd15626df88139ca39d732461b6a21e4f43efb1d6bc5f7f5ffa04540edf381d23d133b43b3a2823ec12470d2d0e44dd0592f34b5beb9364467fbbeb671cd9faba79993f6efeba5f78d2ff89803a982bacd92d3321e0da8c51c558ff0cad3a560861d7af28d80254d18a707ec0b9ad87be62913e3030f63fe37f9acbed3f0aca7272de6bb99bfe035761bf8a435f1919af2668e227faa89c7b91cf799fe7cb677cdf363cea43af0d43539460adf410f7dcb74d0902b69720f931b64666feaa87d560fcbae2b5c2668d653ef24f786e98eb903e2972975ff6bfcdf612c23cf930f756eeb0561d68bf5629caee6dff1c54d8c560f3161450c56446c7988dcd5673f3b26570c385f739d3816d7657e52a92e99bf29f66f80e743ec1b307f2a6ae22f914707a326625cd9c3f8f458dfd9c1c32f9917f44ef514b1f2e0ae98183506667d08fd7793fbefe726af4e1e7ee9b779eae7e3c8e4860abe9f85439cd8a848d8036f62ac8d361755c0c8d31f967588bf35964d0e0e3cd9a85e97eaa42ddeb114ed38f4b014eb9c75d04984aba265af85e7067aade6f57b0f7b6c64e2f1aec379183becd54fc5ebf2dad310deb867cc497ab598efeba8a75f47e1ea99358cd7f66faf03726d27d06f08e09bc9ebea32ce2b589b858e688cba89f62c5f290ee47a79eaf59a3de3da3a4aae7b24b539f3ddc001947130e0fad2da7b6d5c67f3f5607518ffcabc7b67e57ff7713fee4911f45fa57772e9918827fb911ce4abfa3c9e7bd51ba4ff9513dcaee5abd75eccf6aa5ebf7daf61e37cd20bf87befd7dbae73abcf93d757af7bf31dbaafc72546b86e77fedd36e7df6e5f7bd89fb2b9fb2b73967fe607e74b8eef363ee4e2f777edf97919d357b871e106c74775283aeb720d2e41322f7c60521eb2c67a72a8e95b0da70b67ffe9b636e7631855f678e0d4531b44f442a26098ee9f87e9e0456de125e6afcbf5b37aca3aab707a54a84b99b57a4a5e463903c66b0d4c85709c1619ea4aabb47b4ce685b9ef5df8d1e6b565d4be2e33d77f7ec91ee73f8f973c7adb142715ce36dac4a7e805f0965a0a5dc404a326a73731f831b179ac06d71f9cbb6eada84f0b6e1bf9b6c4fda97016722f54c0baeb90da92e63752bdae3385679632f9b9abebeef5f9fc58214edb21ff260f71e78227678ecb7c9ffb2b79be8eb65c0a72722d2fad068611e705ee603d2c0bf663ca98d845c43f45803841eafcacc52bf0639370443f7ff0fe950f9dc409fb0de4d08233283d1c788779c372ea8c9add09396a6d624f7a53b18690b9265e189605fcd619a3c2875d3ca4a635e29914dee2b5662fb0d10f6dc73f7967d6c7f57b2ebc990be69a9cd9ef85ffc74d5d70fa310fac1f73302b07b17ecaea4938bbc109baf67952852aefae3088f465d63eb477dc59496cadf40b3c3e069f4d5fe2fcb3894557d0158bcc9fc5a5112fc618d55773600c3cf3f97a7bf19707e771d5432fc8bff2e4bff2e597183ebcffb1228f1d9cde55788d6d33390372ff66627e27f96ce8bd229f681be7ce768f8bafcb896c8d530cd1a73cabc3d9e461ccc5c84b143ed955ed9c7d6872fda1f78dfe7273e921f39aba6ff18a11f96a5883e823a8d92fea24fd0fe3eaaca48e4f4f04c575991e8ab5fc391a1ce29dcd79eb041e645389d14d2cb07f610f5a31cf460f3377d9579fca63c8d19a9f3b47b460e35312de2b35091ae6ae71bd822f5b4c3d88ddb9e1fa1abbb332463d4a37b317f642cd38cdabf8faf5dbcf75677feecceb51d7eaa09f37093aea70764dfe495ea9926b3150da3cb7450fbbe53afd6b9ff9dffc960fba2313faa06be0b14c7c901f157ff7863a76056a209a7e40825550270d4eda0e1a693a2a3ac3b2eb9327579cda7ac68d17b37ae5eace6a3ef8f3bb1e778b3389da983b4a89c510af17ec4b8978f9ea6951a13e0aefe96900ad02ab8b71d111c8ac8e006ac0ec67e3b96a1246eeacdcc7385e1479c372d45193aebde51e984e0b703accde49dc1df55fc093446d9afa31ced9c4b5662fbb437d309d16f696f130fc914bf151307bbdcf3a95595323a96f77bd49480edcb0ec7a595a9c549961bcf116fbff390e07b1825f828961a1a5565397668473d2d45a0ec8e3c9cc7addf0fb80d3721c960563d16dd0b03f92533fad594b2ca2a801b30da8c54d0c8f60415aeba1ddaf0fb3d3fa5eefb3c5f75af571bf9e167a91f993703fd7f3c203577b57743ec18a761ec3e83c2b67368fbfe4f6c37460d6b9427bc551f959f3186a8ffaad2697be8bd5d3eb63abd48ccd99c9f33d724b4c2c39f03439256dbd6678bdbfd7b85b781fe777e7059fea671ffe423f5bf208c1ac4a3e11d5e0fc1eb86f8affbffb18ce3c3d2f8ead6b2a8bcdaff5fdf8cfd1e2eefc25f3c976bc80b3d963a801003f05e2add2f58b9e88cffce43daf2826de2abd97bd6177d2a5f5ac8346984b4dc35da19cc2cd5807164d4cac250eb4b7e7b8de958e0a77bd751cb31fe97ec41a2ef631d1a2b88d43776ffabab45c3f7e3edc6d56dfbced8f716d0f3e9615d78b316bac87ebff77af98ef74af921e349bd143d33dc7b138aa572e59971a316e1698bc69c5de1ce29b243a577adbedc003043abddd0f982b62d68b665d66269f6b9bd30779bffa333f7c5d4f96b65e9abaaface7d73b5f425b93298ee2ad734a587bac886fea7ab8b6e2c5a17791d95b3c0dfc326e99a797b1ed09bbac09c08bec482f32f943cfb57b665cab4c8c4c0e386a0bd9fbcff18765e12593aebd95183b2ea0510d4d3a3386ba418a3c1cdabdee8a9fcfda2bfc83b8079a3d91b97d24382de84a4bccbabc4b26389ef94ed5eb1e490d28f2d4bb373cd7e2930a4712e7ef1af66fd1ef669e4f6d4a97b8b1e97baf1a730d2a72c4a9d744cd591363a913d6ce3a382b6aa007ec73db387b8a751a9c0df18a94e7d92ba796543d2c73fa8f5adf77a9efb09ef389075ccfea38163cd76d10f0fc23e26bc2b63a0b76ae7e639efe7fe9798bdad614e36a15e6c847551d38e026411f213b114fb283365092ee302f592b9b41f75f03fbb42c876556895e6ac57c147dc76a58d29f2361cd513ce4108f4ade32ea487c8a7ea40e77ef5ed356176116acfbb353eeedff5cedfe382cbf7540de8ed3373551b3ce01cfe20157d40bcea8c7f25af0365d7aaa0e82ac894fdc2fa0036562046a45fbc02f7570bf16fd6837ab92f92ddd78754aa0a5109f7413c971e43db5d3e4f80ce873d6f09873c083e4bad7eb4a8e646e51eba978fe11cf7ff2b7bdc1acde77251e87f425a903975c2378c5f871a8a977b30d2ae5a95a3838667e715dadbb0dd6d426874f0c3d59a2e0c235e07a5febf95930c12656d2771a3ef7e8277664af121df0c8fbb97302720d96d41ddc159d8cdcae1a7901709453b3665de340ae3c31c71b85f98af770cfed75dd75195b5feb23b426bca2cea89d02dd53d18935b76e5e3b27050cda54fe66cfcc2b8ba3de5bce05f06ab5a27e2bff58b7b7ef3de985894da1a1f8fbe6f3d79ccb6df5825dd4fbe6eaa44af107b2d7b39c79ea5078eb72f94c6de00fcf37d7d75eaeb567ae35c6fdc15cd34c6a86d8379a64e2c8b82f8eca274711f3ab447fbb31f1e9241c7ba24f51aa09fa4ae4d440134875a05fcfd79e4513f1c8da26fa4f47c67d9887416a7218aff0a4f665bec3eb1833c79d3be7613ab87b37eecf49afebbec5c3e0734ec98435167899d641f0d80bea047a2d23cec7adfd3e91dce71aa704cf20e7c7c79da29e95f1f9a22723f310f5993a08d65be764b1323aa45630b993398e8d75d057fcfff5f8786ebd450fd5ff4483c9f9b02e84dda39e65fe273de98faf67ec8958a065dedecfe67a3f9b775e569efe9fef1acfad1a4f6cd6f7260346163dcb5af86c957077cf3287ae9e236f3c0eefa0f142bdeadcbd718c336a33af8f55fc3cf6102c1f58d7dd93c21cea5ee778e237dd2de0390d2eeeb56ffe153f76dbadf32692de82f5dfc7b99dc9a11a99f91e2a607a32f471d0bb01fe55fc5626dd20034ee65a0b7b2ade718ebc3f3f6933e725f7a2eee5a8903c187ae766bf36b91ef0c9a24b4f2d9c11b1d52607f5c0c375d81fe93a979e740d2d6013773bc41199e3d95bfc6647be0639a3f3939aaec41f4f023fc179a2afee524f5bbc894d0c500795d4eb6af2d1cc1a989f94d997f17b7539f7268e4f3cb5027f179afff0c0443db0b2b80c4dbd72d1818f6cbe7a52c03075e95f002cd5a8ba8efbe370d3d8bc907a662d6bb887fbf29b837473efc57c535e24734ee626ae9b63d7daf7cf9d95cc79e10a54d823e7378ec1fdc8bdb136c8fa8d1e7761def75aeb789b539adb691317effce4af7253e0772b1947971ac94f7e3f9907513d6ae0a3e4714d1811abb7858e3eea37264ed712a727f000e8f2bca15d8ff7fb9c73e2cb948e4e260ee63a33261768db3d033f31411e52d1e3107ec20e3d1777271dae3789c953c2acb0b7dcffa0cf8d3c59f7ba37e7fe5034bcf19a875f5a3cac1157e8a638b24e427f297a78c4e2a7909f543a65ed87739df940193b596aeb49d48da396ae997b5967945ee6337c1da06978d103884e4968f26868fe3bf487ec76781be17fc9f9afeb7d41de5c7bf9b7d59a5f6e327f1c3ef667e57f9537eeed73c6b1a74fb397e58c6bc072b1dcaf0e7fec96ad628d37dae0cd3b8cf6c5fbec8d2ee1751c992e6ff7f9e67fd9e773c8b95f7a2a1db7d1b991be42f7a4c30134ef13b3c75063b3a29e44e4bfe92fecced4a6618de0c2b7d20be81ffaf0eddf15ee4fe229ab77ffbb97ff6d4cda626caf0f7fd48f8bf17e74f8a35ef6675f13cfda52970c7b9487fcc6b7f57d0dae53043d17d6c9f7a11903491a51270635c2d88943f82bb9b8a5df54231ec10ec76f217e6ce2bf5407f0554bb876bbb2f7b982c7824709bd254712d79978b000775bd31fa596b155273ddc0f70fee5e533ab047575731ef2dd7ce86682838798727e36eb3ceb5be66faa7caeb791f3ca3bb3f5221e9f986ce283e2702adf191a3f2eb5554c7c36a27617ea48e0bf798ff81dd721b59832f3fe0eb43f7a41476fb13ff2b873c5de7e6d3535b0e6cbff880102e4dd38cf29fc60740d3d1fb3bfb4cfdf16cb3ff3c3fedb03fbb607b61d9758df242ea947cdd48ea9464bbe342c63c45409e78d1d9312bbd8b9a24b3bd7e86f89b956bc9d6b8a313ee75a05dec0f66a4cd7d7e33cae31264c2c57f2b3b18fd4c8559a6149af10bd75027a300363203e0031fcccda8e9fe57cb6cb0ef75f358668eb0752ff2f752885317668e58bef9a7d18d87fb367a7bb23b836e5349895638903063f5613a783cf78f5983c0fd3e5333021bdd6f88dfee3bcda4f1f06fbdcfbc681dde69e9bb1b0fc2cfef36ec77f373d74e7d6db873eb951300997736a4f8e9ff503b4608fc3145c3de9af75aff898837902acabd4f2cbb866fd17f5fe46eaf8d0389f95262693d77fac21bab1f94d52d495ae7d460be246c68d26eeb4434fe9eca8fbf09fbea9c1fd1bc69fb35c0cee560f5f0c43d477f07993f0ae851efaf259a5772fe02498fd661b34699817e2d58cfafeb0549d51939d54999b7da4965a40636fd7e091764f1a7ad553e873c5e13d7a0b827f161dfc6e053fb774d9a8daea2a00f3e06be0a15567646221f0ef7781ed83516fa1eb4c42738ee3371a82d43a7030b6d0ef5bfcabf3f09fc6d56dc66367379977beae3779bbdcc389c3412c3dd84a74e83a89d59ca44f96996357fd9582bd64c1c64ee0a1f5973ee45a6fbbce63b87ed193aebb2e8b934e37c227821654a0fb26eedf7518a7e196b5a209fc9c3db33e8ed2113420256e67fd2d8d8ba41f211f90b510deaeb1e0a0a051499e6bf08ae7cf51efc673263e945bd6af32f4b674a9916723d7890a6f568ec173a57e417452e0b94e3dfc214f89e099897edd24089207f6b4d1c7b71c40f8e66ea8bb476f4c7a30f2fd723f3e297027147be8e9f4f5b87325ef99b23726ef41bc9af27edef03d4afafa38973ede275e9ce279090f0568dc57e835375161cf17af31ef6d8b393eec4fcbfbc13eef579bec5b9fe9a616063de65420f9a5f88d22ef14bce752bc09ee9ef53e73c8e1eb4a8e32bb83d77e9315f656b82f156ab9c01da942f5ac4e524cbc20bc59bbdec48cf5e9d5dc81fed292f82268d50415793a4587f5829d3dbe2f5c3b33f7dd61b9df98797da9bda25724b1765350b7a0cc1a19f7e4aca6f6bba1f60b2e0438ace19418c7a9f9dc9d4fbf79dcca7c17fd9089d5a28c81e9230e707452e9883ecebb33627e450cd4eb2d35e4026afc166db916666f795a2e06e7fcb0ff8eb56fc5dacc9d4deeed932f86f160b143e09fa27f172e437af267a84f91878f5cbba68eaf2eb91fe1fd8db976e698d415ce854beb9c5439821708c658d975a827e09cd4c1ac8ba81f9d6d5f6f08fc42168c9afc84f59f3cdb8e39b6f464a81d7c00eea891da50077d4d6a2034a21d4d8fe6543c9a4375526574d2e57a039c9dc5345037d5317bd9cf1de68199633ece2ddce17516a33b94ef034f61ab33cdd8de955eb57084cd67ad43b35f739f432f87da8ad07240cfa480a6f15c74551b621b884935df5538bc7550eb7974627dcd9eaff9fdd725af93780bc38b05bc603c9f416bc2ec43f6f6d2bf6d90e7943b477ca8a4469d9b35c8654e62aee1eea4c5e3075a0e82b9a56f336b27caac6f5b8c1fcc71ea4bc7d09786c6c5e2973926fb8066fdf0f039d4b160af17da0fc332825f54027f659e8f6aa847495c0c75a435fa4d5947f4b48ed20baba157018d6be26c58ab8da953c5efe4125b33651fcc9cdf825ef5587f598f127d69d5a1d6aec5715df03f582bdf60bbe682d7a33ed85970391dd454d96f339f636e3d5ed79d2fcf15784e7080f01c6f625e7fea6b37a285edd0c71efd4df1dfe6634908ad2fc7c4040930d15187ebad3977f0c52bc9216b785ce2b736e30e7d5178e323c69b33c6a4cfbdede901bb647d54ab0b2e95b8e986d8ec8c1a254dc1ef39415c58d3e7dbc1782566cefc76718d317ef9be260f96ef8befb473d8a3cfa8cfc078c885ee1c736a07df093568f3fd3278178bffbfb96f9ef387180f816bce1d7d40f408f1584dff7525fdcb51257a2b2ef4e0e8b3eedb1ea75927c43fc8216e3eaeb94e8eb84e86bba3e8a8575c27897980a73735e33cf2eebbd432a72e4a9501efb0f311ebe2d6fa69c18314bf9360943cd11c0f388ea1a172e6efbe73f2465df9a4838b1b70cf1d8b8697f92ebb869e1998a73276cc7b63f1592ea8c14afff00e6b68e65c73eaa600cb5c34d07529a747782a73bd70ac6f1dafdd341842eb0075da33711f3bf448d89b35d73a93fbf14970953efad3e805604cfbb8fee83d0435d714259ee87147ae77adb718938cdfe15fcfc7937944ff6662422addbbacd7bec25ab5b37a24f475c738df9d7459f0bbe27bb0a7ad050b9b007f9ea12e4d4e41469d1dec05053107f4a50e884dc8a9c3c0395a5fe22cb346626fbc5ca386da9af8dd1bb5e573bcce63e1b0767df4fa318644b3c75ea707c5b5c6c44b5c1b035e677bed73d16d56367f08c4d3a0b21a405c3f848f82f113fbb2a69c5469f230e815c1cb1f7efe25310be2cb6dae43035e3974205af7d97fadef75991f66fb6f0ceb478da9388cbcc73032797bac9f5e3d641378c86ee021bb9a384e1ccec067be5927a54e8eb3de3a0debdafb67e566cee7fd76784a7af06811ef59e8fa8043fdbff068fbe05ad78fece5bcafcd7ac35493e7db56cbf5506d1efddd97cc5fffe5ba118e3f7057fd99d4a766de72def97369cef36d8d8a3a5a13621993fef928181bc657d85fa00776a69656d7634d437088d373c518b15b916726cf87193902e4df716fc61a8d3dd48cc1905c19cbfd99126bf5a4e8b562f17ffc93defa1bdecf0567f973871a297ae5aadcbc5c6bd6bfe1a1e1b1abf3fbf8bae255abfefdebde68ecbf791de3a0acb8f1ba379fcbd72de5fbc767c6dad0bc7098e3eccc1e0a9cb372c031f2f19d1c65e23968ec24d47933b94ff18ac742de061ca6e535b5cd9757fdfdd3e3c35865f3ceeebb16fbbe168bbcae4ae64595d01fba827ea359ef50bb1b11ef335727c4be13d9ff27d49e33f1928c1913579ab8cbc434d4672ce3e3eb5c2b1c723ca5c6c89cc2d75ba76372f2147806cc25cf7c4e124147c9a507cfec45e2857a582af16960cf628d1c78fda2506bcc2dbeafeddafb6be96d9c59fffe7f96f32fcb236bd5dbe6bab67f56e9de5387e2686ea947823c0df9b56a96cce1cd3ecab88f63a52c989bf1312f05fe06b5bd333ceeccdab1b5bed1bbe6aace5600670d9ed64eead18a71e3c5631a6383da755b6025cd7ad24943f42791eb65a80f3956d7a7967323663594bcb1751dbafa95df8fff1c7d63233ef17058c71a71d460ae7dc456ce245c7bf051de5a7cc2e65afbe4481ee160ae7cd1fb3ea09f5c8b57f28f559a1d9589bd0e457d53a3e2e01cf5b67b16ff641303363f77e271bf75ea49b87eafb5021f7bc14d1cede75db418f7996fbd985769b7b8e9db68df038ce39a1ef9878f5a1b383e345ad6f2993cbfebe3ab74f0f63cdaef8be759ff8f7e7ef8e3bb8efc718c3671183532b6a0b742cd38190bbba2e175890bfdc0ffaff55624966be2708f7102cd2feca9f1c7eb78804e473009f71fc6fbba8cceef8ffb1846e7dbbdcfcf34a2d8ef48e8597916fd1f135b797fe5338ef9d85603ef50b9eb87f13edf8d37b9577ce7336ffbe0a885705f5a97a805b1b68cfd095c095bdb436d93b50bd5c4276063510351c0eb901b09ff50fc9f203e42bd57b48e51b3431d1d380ad49047f077440d07fa005d721bcb7d63e26fd67be30e6b573be8c3415f089a217782fb991ec1534805bb8a9a3d6aa50e785d13eb6b117bd006400ea5e861de0017db507753357138053e0e1c6d72cd4ebac94f493a3de966fd4cfd3f68d49d63d63e2b8d63060d3d2503576d6d2d9a9eba8a988106dc0dc422a817a396a9884d3e926b123bd82ba416aca13dad37c3727a06dfcbfa398aa71e6a99acb91e99efa8caf6d8d17b478e88dfa1911aae0b4d42c6429673227d7c68a006d27b670f7f6b3e6727395b57f411a60ee736fa1dc06d4303913ad6ae685a9bef2c355073fd236f686bc41372beb5e074e0b337072ec28cbd9ab5e791593f5ce862a32f425d0af14ab3bfe759eab7ec0d95316ad7d02241dd5ab872cd48eaed3babf5e027e6b7f4d017abf8dbbef69ea8073b282f7567f92d8177e038a9d897eb9adf5b6aa4531f5a8d9320c0f543ad1fbf55079e80ac5b438b9bef0337b081e7ca56f423e9e32f1ae1e86b9c996b986b62c6217a2a3e798a057a0ba85db326ef616c39f0fe6a6c0f4fd3d3f98c38c43c8f5a7e2eb9bfa26f2afae3f8cd39eecae929a1d67a27097785bd15ee3fc7460dce327e9b84ebc359bc1a3dd64965fc3c65555e070de6fc04bfaf9bd581e8fe440539a35df679a88bcefa28fa553b8f1e66d12941ff08f8fd86ba1ed4c404f70a357ba98534196267f675a6b8c57879d58d30eb027556c907a9d41cba1381d500d1e82b4ef95a731da9ad80df1f73b8b67abfbb3a632d9fbae8f5650c09e670ea8cf07c267dc64cf89dc84d0a7d50fced7a92bf42f30198c78e2647543ce350ebe9b08e8fdf457a0ab96807e5ec1782df0e7f5f794cbc2ca9c564ebdd8df413f079189f764e95a2236f3e4b7a599aebb9d45cac567ddc885e45404c43e4c07bb776fcbc76d06350e9e8a86bf82256e0d2a39e127788f7c4fc3db297c63e7822b864f1cff5d8ef9e1e2dd7fd720d1ae46c1efb2c31ebf9f63ef6a82e3d47d13f326b62dee1da145478ccccd752510386f3c6d7d6bf17d828f47d1b392fd488f03cc630fb5e36470397117b4fee4aaf94bd36f64add6913795cff737215275de000a09d47ef23e969435bfaa49bc18b68c67ae2857ad23b5529f2977ce1669ecd5a688e99a0579d737ef6baa86be9065ab0668c7b1c03e6379b49cfc2ec2f3be9c566762ed4c372fd82df611b04f482cab0af5013123a071dcb49441d05f814b3fe65affec2f0a5c4e7b04fcd7e2a6fcb7188fe5f8d7ae859036700be4b40ee65046d1760af7ae273403d2d7758eee82ddddcff48d3c8bbfa3ea704eb5fe6b3f7353d5efc529b59aa5245ce1878a70a58034dff29b3f604e4da4c8be4c1e202aefc569bd98f15f007583f7cc128a30fc918a8e0ba6b62a407f0347dd16669b4599f7a1833e6f6f2c7be68217e4d2a00b7151ca6dc651f7ce7f39a637dbef2b135e3a8b87c97a4c7f780d7048c2cf481ffbffb1e2d73bffc30db8fbcfb53e6cd5e5626179aff71fa92b5d136fc1feb63125d6ba78e4eaad9bcbcf3d6b9ceb79e87e9fddce67693703357bbc25b9783d862113ee582d4dd5a7dd4e134710675f4d1b337fbd745e77cae915346f43949b393168d47e0a90fe7b7757ef834007f5953d77a74148ff037fd0560457af422172e38eafec2d503970e9e723ddeeadaea988e50d7276f342ff4eb6b7de9953bd0aa06a604de2738ae998fc45c4d85d786db4ad6a85aceed2cb74ecbb1ff307b186c564ffa255b8cbfb1d91ffb01e7389c3da37e9b0e8895dcbdf583bad2a6ae94774beb6bfd6272c2c770739bcfe4ddecaf6ad676c1797393b9686b4c98a72ae60fa2d1d5edf0b17d73fd18f167c853cfd4f521b75eb0e50de3b89c98a370fd421c89f4b2580b46cc69722ef141147f0ac62bcc1576d4ffd85eee37ca628bb807483ea6a865190e1aecddf8ec11fdf5899b701471b8be3d47e61fb9f5538187d104b1d1660e9dcb79d10ccb9dbb42cc1d9ce14388790c6cd889bd4fe8a151e3927bb3072ca468d2eb0760d6ce8ca3f32a637ce55d7e97b428042f55497ce29aeb813c829a413578b565ce18ee60f6b25d67d57bcd7b751fe7d921c67b24d86f9ba39898823ef0f80d913b17d798b78ae7b6fe91a671653900af5eefdd0a9ef1f3e2a8bd734dafb382fd5dd40a500faba92d9a9b752480b78d397feab5f8d4e7c882ac0e04f7856b4fdd2a6a6d74885b99569330ead08b0c3adecdb0cc9c59b97fe6fbc69e7c5ff62076e78a63a8eb4dd013bd78d717175ffb4556b5c60678f7de727efe92b5b456d876b357cf514baf27e1bd27fba5d9e7a81762c60b305fb1f8b6b3a724b7f440c53c2d9a34bc7a1ffc87636218e767c155126b79fd9e617ac15f7a180b5bfac710775b34d430d9bcbc623133ef722ee638ceb9e27ea7aa15f47ca937d87ebccc4ecbc560b3eeef4f4b77fce7a3373be55fb327f58fc74e32e99a3d4ef8dadda3682d07c3b430317e436de24234964487053aabf6be83fbc983c50901632a7b03c689474fe96563efd343bacb35b1dc15e01da4f6be797ef96395aaa3ae03977da0599c3c64473d2d3cb306e927eb8b58580ca3afa767935bbae46ce4a21f3453ca6a775c6a09b99bc2af64f622b9333488d230eac4e1fd8be80de175ec7b444e1ac6f0b7bf756c55ea17aee153f6f5a767fabbcccf5779babc369dbd3d7ecb786eb918dfe50fddeff5f09617fb228316854ad7c2e95127139b27e457566a5a540a7da101f29749b8f7f4ae7057a86f74fd61ba7e1ea6e34bcf554f0b17bdd3748cf5b51d3672fdeb1b5b7133ef74e3701fab54538f135cecfd8fd4cce169e1a196b5450e5948ffa55a97e352f43d1dc419936ef518ea129ed3e4e69af97a54172fa599895db8ae6c9d66028f19d6ab59eb1c1d11b3a5f7e84723379c659d47e0bb66668c549a3dccfad5ab75e00dd3fbe7d6fb953fd82cfbdfdcbd9b7e00755029ef6cb91fb5f0822e1e7fd4a38f895da6067720bc8a46f4d5fc6462fb11517089c9c38b67a4d47723a9e36682ef52c4736d6d4d3b0ec843c57b4faacc8f367fa2065c4e2e2f71dd1e63a4914f3c90e5419197c39a08303cb5c9b50453a912e6218139f798da8eb5ee9bf86b04cd49dd68a5e9bf8f638a8625be5bd2431c5e2bee791eb9e7dd268566caeea4caf10bbddf4d7e9755d44469bd9ed5d97cfc6b75c8bfe4d8fde73505e8f85acf128bf731fb92479cc1d8137cb5f318ae81b7103f22e02db4c577036f11494dcbc4c75a295bf76a662f6ff0ac883fe87569bd888129dbd2734e7c52de6899fddc394e4c6fb64aefb36612b6f53759d72b7f769e797fd4df18b0dbfa4aa3e6a233fb567316d8e9f7be1dd1f9ad76ed5dfa4edb52c64c14482cffd12783b17c07713dbc11d0bb83a6e225ae87bea289fb6f7fb7ccdbd79957ed6f8df9ec52fbb3bfafeec835aab4fc1ef82dcc3cbe3d9fcac7c5a004d6fde3f5292f6b403a787ffc40cea796ffebdbfa87fa577ed02f76aebfbd363ab89ceb5e9ef7f7f27d22e7e6f1fff1dcd8ec570f77e172de71968bf87bbd7ce7e92f3d47d4e558ffca3aa89961df8ea56629bab05b07fe0c7c2c3b5ef421ca8cf91eb5557dc1955c69cdcaf378eea2434d3d972b3d69f6cca0bbe1b10e9cfbd41442ff937811e8dca18ee124d0f1cb1c73cec4eba0f70aed3a7aa3a3ef7e755f7c2fd1ffee8ac779447f85ad6018805bcaa9c3c6df40b44232eb25015e1ebd1894f4325eef27e9e619b5626a3977d053664dbbb63d571d5eb038fcfc54ea99c4b9fb56d319bcba49d762d81bf2f9e0a32c781260748845b67ad1d0ce37ffa39fda8117e322ab74bfa8f47de6c203f2f08a1f8d7b524f7f32afb135765b438f0bb52bdceb9afc05e77aedcf267c276049d3b67b19e6eb2546ffee9b7cc4f2997de73d9ed2e450fa3fdd1b087be9b864fd1be3c9112d2f78c03d8603dbe744bf06b8e627f53a460f0a385475e9a1ab42cf0583cd1e4e73d10f805614e2fc4a707647fad4fd8ef1f95d03fabfe64d45bfeda3b2350062a18101830e36b45677a704bafe8a9a612666071604781057f4c56c0de2f4aa6b0c2c203cdf143113b5f52a54a84b043574f18985f0047718e8adc5fa8daca6d41bfc7f5e5ff52e774560c727f35193afd2333167cfcaa74639eb2a09f094ca13bcd791fc73335f666dc7edaf657f96aefc59fdad577463fc5e7939a5d75e4ef06d8f89c72bd7ff3e1f4062376bcb21bff201147f299387de5ff320ffa93fdf0b759647056fc72174f28197d8d11311f3c87225e34295773f52e872c333a352bbb347dd1765cefdc66f122147ca9aa9c5d07dd0fe174da8333c2d4a683e0b4f5f7a5ee9bde4d9e4927ee2f778bed2d77798af63cf39da3e89c47ed43141de070da7b3fd4d5af604e2c7f9fa59789f5f4f13b27d7ee113e331982b4fd66eecebd1792d639e18067abbb176175b0e1d7cf1d9033231b8997f7b85b82135c75cfe58a5a3a33e14f5ac5cbfc6418c23de714d8a2211ae89e539a5698ed861566af0c3c8a189fc773c9c3a86cfd420be853ff949df6d72fa3fe1f29bcf5638476dcf47abbadb011fcdb1dc9ed12b576757f8f23b3943934bbce100758fe67bcc4a7d536fe0378ee56f9fdc9b31ce88f1ace0d30497d6e13a5c0856d362c8802dabe94b24ef135ebb660da952824bd316dfb6ed5a3f03e2de2c6e8d8fdb633b3cf6e65a13c0e4aa889b5eef47750ebdaefc962e00725b136bab7b453e4b6dfd982c8f6b53b20686383db85e57f3c6de97fad51bbfe02b4fa0f69cfaf871a19d953fe8ccfa7f3c2dbd6a9f7acbc397cc09dbe8d091d7d01996ca5fb12eedd3c76ae741938d5a6fc425d5d03875cc5a382cbb75560bdf84de71e45295d4c80426ebe997d6d418aa9453d4c4ab015b4a6f55ea6c3ad4335227859a4cee0cd3fb923a560eb02ad442337195ad1bc527050ff9e9891a7a9989bb8f6fce9de753bfea0fb1de01afc97050e273e86d4fed2f7bdee5d4e3da0c0db04acd0bf9ae8eadb58007c43acb486a283877eb5151d1bb32f0643e89761b7b58e6bc13e4a4f29bf71cd1a41e97f63767cc87dfbcf8f89b3ba851115f88733f5aae03f978d0bb20173d5ccf112709a6973ecd38ef13f590a253128e5f24b77032e195e0b798b066a405eb27d7d3e44d0df58a80bff0851f5f91bba02eda717c3ce3ef449e46adbdb3e59cd9cf73138b972b23cb15722d0785be4a59037d85cbefebf0b3e06761c643de905f6ac790bd5ee4b169f0bb18cb413b0abf23fac5eeb0842f48455db19dfcae712063e278b966322ee3f0bec49c000e12e34ab4b3ec18801eed997bb73a314e57f01e57af734b34f6326a243257e4357ffb3bbdfd6d11d7ee8ee4684417ae1db92663c4d8c0334f024ff7cfec8b97b968fa15f6733cc1511faf7286003eb5cc27cf6a0e4c62412d14c6e3c3722a75c131b06aba643f2b0989a7c17be7269e57c486b2bfcfd75de526f23bc83cfdf039e484911bd5a09e5b7785bb3e3de9f0fe05dc4e7a0377deeacc882f671df8b372dd3ad7cdfdf19ff9d3d7d4356a8bd5515ed4892ddfafe7748001818f7c419f78f041cd581c2bc421bb82ba6fb5781297513334e3b476fc9cdc385ce738c4f5c37d3c4f5f800ef5d595d43350ff30b924b5700f67f13cc398ae47d06b9f3ad463993a17ffe2ba5babf9d57987dda34ae1375ec5e1ccd3f3b3c37e430ccd52a9e1d7128f90071ceee76d7d0a27fd3f8edf1e36377baceeb0cc3a2b6a8fbbb3320aa4dee609d6cb5f6f1d93bb572bea8bba8c5fb5422c7c3039cee6593f65c8e9d6e512f7937ed11033d1d6e379f3677ed8ff58791d279b5769deaf7e7d6b517cbc8ec843e0ab3df3a49f73545ba75251c13c37ddccf5c2eaa810c390dc671dc15098bcd97b0ca3c05cf7b6b1ffca1fef57917ec916baf98ef9df63f7ba8159af573df432cd9a5c3da246387891788d1e165bab83dbad52729d1cb306b3ae32aac9bd36eb317283b39a9e7deac346b51c4fa9342a925e10248c7b8169519199c719e3951eea940eb1e7712d9c2a5f7aa2feb08c02f3383f53b94360296c2de7ee99ff6ff039caec07c4cf04c22df6f179dc2702bd753c7e97b819965900ed147a5039ab2b7d50d94f04bf3550e0ae3459a150fb89fc38b41e0df15134faa89d1b5e34a45d3d2d2add126338e9ffe1e68735c6f0b8bf6fb2f9e06539ffae13bead1316057d85d40958a96d1030af2c9c37beb4d37395d07755c6d5ae13879bd8ac49e43e46d468636d8e7d9d6d50a5bdc04be87757ad4c5c81b9b357a8b51ccee27b7c1feb7d565f34922641451ec7a843dce2ee8d56616ac618fa0596b71c9fa9238aef50339f30f367ace0c96ae29a50cf958ddd5aec63ebc5e069d5bf6f726776cc1fc69d2fb936b6ea9167857acabcc71ed633f1de8ea4fe65d6c751a1c163ff78dde19f3887a689592fcdfae2add03746cf0e7cb3575dcefbcbd8c35a452f727756be190bf2deae035db09ee3f278e3f9f598c7f3adf7cb59bdf4aa4deeebfe7a5ebd7c8f8bff8071d1f29aae1fc6e72f721df919cc5fedf5fc21d7ebcfbc7f5f3e2ec61663784ac2f53f8d8d440bf71e7da7645a5426975093c065fd6df6acf65925dca6d8cc578b29a01741510dcbd95ca5b358a5771e6ae0f258322d7cb3c798f8973e1277b14ac7e6b5f6f8ceb034ef5bcfcd58e1b1f97ae205cc731b4f1f703cc6d707452d7778b2025f57916b81e355e44914d4499904a21be1081f8bdeed9267558fe1c06beb6b3479183bf983fa92f149bbba097a884735cb3cc173f8ac43c6ce309d1ef5c471a7ac859871eec7e1d243dde4333e7bff169f3daa6febed89bed37b9d49684a5a6d08d1f8694647c4fba96e889352f05056bec9e9f6d071408e07df2f684dd456a74f6f9de6d6e7e7f5554f737bf53db65de004891f6c39eee62ee29e6cde71c6fd99f738d7fb2fca1d6de7f55ac39bc1ec5f15f2227ab5b9c42175a119479ed6fea68fa29e7fe6a3685eef88570434de3a58b3cc2db4f854a14a93ab99756bfdac1799fff3e23d3b082fbe798cdbe109048fd08f1aa43e344aa0c9bab9f4e987affdef9a7eb21b8ffdf9f13bad4aeaab420faceefacc69972fa29fd54c4213ffdb9e4dee0d89f5adc57fc4f2804433013972c0d7c013a4225775ff4c6f89b635a7fd6979f87fbed7d25bde70c4833c5bdd50dd67cd4fb49d8fc9f43f1bcbda765ce40f33e73f29aebb79cc5b31dd3f5f27ff1debe1cddcc0bc7ee5df6d326feffc9cf158c3b2f0ed35fb47ebee8435b449781b7b332ba1bf0b7f4fd43fd11337eb91662cb930cf75ab37be22f435ab2fbc81f49d8e0d384ad06d0a4c7ca7af359b2e3a4da8b579ab7064f1cd9e724ccc3b7836f1abf2cdda0d7cdd594d8be6663cb2cf8847ea21c7a992870cfe16ca299a5919b993f0dec3fff3eb9845fceae8c7153c7ef049857727fd561fb2a34a6face3ac63561abee43cff75a9cd6f55533fb8fdfabbeecf9ef20375c726f34eb37e18b88c3f3aff5535e5bfc7258b6a79beb4f3c6ac89eff85827ddd873b8b53efc677d768bdfd58dc3c85d231619cff5b4705b72369c6119f9695888268cd99722ab8fd011cc14f5cad00f3b0b8ecaec3b7bf15003fecb358f4b0da25e5db0bf8a35756a214273414fa87345ac196a53977af63fec0d35e4e547c1a8c1f9d017ab07ac5a033d00f3bd16d4b97dad815e7844d4c101c6c86a718e4e2a346b437056f4e6e52dd7b88a589ae8a4d27d29fe740df40db781036d657072d79ea26f971c37131f47f3dca6a176f0083ab8c332733270b7f1e7bdc68ac8bbdd8b366819c30393e7a79f71fc5b1a63f3cf709ff9d17c6e460c1fbcda34b45971ebeb85123de8dc85be15feac96a37286afff23a7c3ebec6b819b82be89a7a11938834e864adbd696f7a7f56156af23fde7aaff47fd9d7fddec739b715dcdcaa8930193a680c1672d206be0094eaf38e2f0e1e947cede2b6f69046c0574167a41a0a6e428a761068f285d07aede41cbb5487ae0433ac494eebc381c89b68a2aa093522316f6a91b148b96615ce50d635bb535b16b7e4ac275493e14f43fa96b470c46434df6a9ff7bb409aa4d7698bd5ce7f35f729f6d55871eb11f045f9bfb921ab7dd2b0dfe98bd5be0beb4f449519f0617091af43b5569e2b244d3deec0be638d3029eb8d3c20116a336fb58663eebb75cd72f8bbf6dc7c9f4e270fda2a8c3c71a2db5a26bea1b8ec4b3df5ccbf8f6b5acdf5c4beff55a6605fa4335347bcf6a62f3857dac80138de9170a1fb929718fe92654f42f70b96628e2c2b7dd260ecd5e79277ad1d189e7b763edc6c4eaf0a6eb56d07e2fb10f4b4da8eb8bd676954467eabe029375adfd7aaf04b35e936b2de7065dbb11b564d275ac679968a444d65fc96fd92751d97cb05f7de3796e79947b0ae3aa7046a889c4665c9d54a3a86752e68526f7c04d4378699fd5543566efd1c4f9d22f63f2af8d1d6aa077ad9fb0d4a2a10d14e8e85c13f375a6cf74ed78c33202661b3d7907fe44666dbccca9343473ec778c93ced37a7efff48de1bba90766620dd14ac93fd34af1c9dfdb9d12c4a077e1451ba594bfebffd3c15bed14f98c9f07f8af3571b87ca667ef6c438f7cec5fbcbde4004aea6fcb3ba9fb06f4a727b6d9ac45c00b5de2b3ae03ef35ea3714c201ac87e554bc9cc93784e6590dad86930e95f8a42317104dfa8c1aad137a1f13cb1e9b71e88c9ad14991a3d3e82de233b3e675189f0dc05520fe1eba19f5233c743625bc0a7a82d14f45b3d6de7f52d613b341ae86dafae8a4cae58f95e84f019395ceca61a9ea8b8e86e8fc1283afa46eb9bca3af87f80758af7868f61785027f2e8607431215aef9ce19389e057cb5798bdfd7a1a7338f79f31aa18fae8ae4e11779e0a9191bf0e4131f8d587898f0f36ba8a7111de51a34c3b2202782fab8e2c7471c976e326288517fdb718da0377da5a302de1682fd3f42e714b9a1782ff07e9d5f3438147d6ad2c1b3ee055ed257e40cc0db31b3fe3d660d42cf4bb13fd0d08f25430d9918e3a9f92d4cdc6675d6c5ab34b65ed18de08e3db95e9b1be3166b1fb1795359fb30962add57e2ab9379f4de88c48b6974544f266f142d69e485e6f9c1337c53ccfbb0a69b3123df87ba2cfc3e13e1b1c863c4cdb5d6f857d96276cabea8e756bb3e87591ff726de711fc3f55c39857bedb1667bc1faa316bf19031f3dfe9eb2a36821f89c07c23dad0337999f8fafb5a4a279e3cd3b3d57c9043d948a3d5ff0718f6db18d697fb659f6677576f863931fbe318d1f7382a89a953a4e1e326f120e3c707ccbbb39b129664d874eefb37e803ecf51df67ae78477a8fe1d84b2270c602fa877783c79e63fec773ba65bf3d25cf77bb9e57db2f99cfb5f20c8dab8b16bcd55387cee9b8945e7b21fe6ce6b65a6f9d6a12ee3db5f875347b57325501fd6fe202f920ee4f8b04fd938b7e7f259eb13ef2b349e0ebfbacd29ebae59de65d69bc1fe59ca8b1ba854649456dfa88b86fd6a53cf87f91cf08fe4d427ff10a1a95697e843ee23608e09b3309aa957873e97d5699d8087e93dba091c78fc37279871e1131dfb8654c91e3bb5d6226734e3dc7ec9347bd502e797123fc16d2ff626d83b875ee9b29782355dbbdc88ceda93feeacbea8aeeb3f5f8f4cbeb77cd68b6b3d81ec64c6d4a3703d86e90c7a09f498bfe36bcd3858587d84f8fc4e1fc1c19cbbd62db8f2f57cf594fd7b8ff11c07cfc9c3f5394698d778ec501c93077b2e634ff7c13d7126ad711a183b8be5dcac89dffbd8c771b3061ee7ad3fad96c7eee1354caf62fb3a6d1e6bf8d8feb75ea7dcff8fba3e378f79ebdafcf37defdf51afbc15e3fe350e77f18fc78e7eaf6142ac0ff478c5abb8e704eff550a057f8ffb2f766cd892b69b7f05fd244c5579732125804993a80068b3b232a0402ec8a3694865fff45ae95026ce37d766fb9dfe8e3d7170e06330829876758c3fdf5bae2be7b0e1a2ec091f94652ae03b59f018f7d78fbf9674d98f3f885b6ca955f32f5e77ce3ca8f58bfefd5735236aead75e9d5f1f6ae47ad2cf9af9955ffc9ac97ffa671fd5f913fa91c558cb25a8c81c1afb38e674effba5ac557d332187c848f7d1c1ab5f64e6b8005042f6e06acee344a227299d539c90b6a462f6f627bd6fcfc0b6e0775b1c9b364eca5e23195a359ba67db795542677ce12da1a72fb53e902cbbfa8edac3c451d8a8f7d3bfa8413e17844966f5c83bc089cbe82b0b2f5afa5f00a75cc8077852221e55f1988ad118afb9e634eaee1bb80f9ee7c2b12434b78449afa318bd2b60e8d3a25e972ae6dbbf000780fa42811ef5b4cc7bc7726a6e44f6dd7ef5edddf01e8b31443ef8f7c7f741eb642e3adf6a614cd5fadc186dde0a3d26dd16bae4ff69dc3ab5b3d5dc484574f72ca209b00bcc87e52d9c457bfdfeebb979d606edaf7f85f1f6df940b7f63323f790efc83351eda8237703fec83bdf3e4fc676bfdc18067e57fdf7c58fffea26b6f3fecba510da665568443c75879c149c2eb74198827e256a72539f8fa79f2daa3f50bc724f755e8aae87cf643ffca5bd8b2cb7bacfe5adbf59fa5f5d3fcd6c1b8d537779dd5d0b8f2ab1d09a1f59944340a4260940bf0cd89f3a22f73e857f416bdc234ff029634799666d62ebce4a3f5c7b81963d293c44c7aebffd67f7ea5a397f5fdb726d2bb395dea5e09aee3e6651aed8e612c6ae813317686a6056bbfc4edfe8557ad7da91d07ecd152f78bbd98433508bc7d493d39f5575867dc0eb13bf4715d1827a17bd7d484dbbfc8c6b0b3467b74b799d6122bacb37fbb376ae17bc4fea9ca473a9dea466b713582dc6783bd097ade4c4bb75e79bb225c18e8fd8a0e03f8cf3c3dac6999bcf50cb93cf734e9f0de2799fc63bd08ea7b6f1d53ad91a89737f0baaf8953caa865084dabb8a006b83849f4f113608d65248af36dc7a7c05c74e0312bb7f4e8c7394cb5773afbbaa790bd668d798acff7a1ad85cf01ee4a6b4ec5fc9e9ebcdc281d9db274bd9fa5b25cd9c969fdcdd17d5f2f18ba7578afc633bd2988aff6711de1c9a4f6516fe44978970147df061abb20a258eb002465d7a357d751df3ac487c36fecc4f925ec6ede85517184b7c7c2a9e04102dd41b7a5dfbf017f33ad69435fa112defe4735c6d8932fd47b9d7008af62f5d903cd07d7f783938ca01df21c2efe4ecd61fe23a2975e93b59dd7826b681f046acfd35f65d0ed51d3a8d3a2370c6058cebaf43378398ba1615de57845b747911bacbd42b657fe20e006771e0ebfa528dd936cd53946acaed6b6ee1c19c0bfc00b3ba3f67e34d31a9386f66e2036472e1c43cfc566aab1b2d4949b691f3960265acd8da81f874603bf68ac0bb301302643a726ae3e8316a9d0781c41bd4603ff830738b0da8cd7a34e5751f098cb40e5b35537a6c0372865abf9020dd65ef55b981f681f70f610bbcfe4baa18e0998137011c261e753432f3a62de82fad19bbc4ce9596d005b073c4a0c6c4ce715d0fdf6153f5bebd5e01ab75c9bf4394d85f6db0bba3dc2a0f78c3a97526b23c1d7eabde7cb93b85cd357b9c6d518e8db974e47cda3316a9374d02cd3d1eebf291fff6fc11a4fcba00dbcf5b3d83a1afba4f575b5de6b084d5bfa22d28fd53d49f2f44fe11058d09678ab42fb3815a7107d65ad193bca6a99beaff324657e927e05ddebc09bbfc0cfa971db7ffe5b546eb009b44e24bd34ceebc6c40a6f1cc3a3e7dfd428586f8dc15fd49aea05fcfed62fec6d8a9368a5d0de0116fb06d9893c88cc8ea099adf270f9c2e7d5bc166dcf7c5a660f937fadf5b88ed2d1efd578f2e7d7d7ccbd7ac4e26e2177452dee3b0ea80f2f47e8f79773706c1fbd652afcc25a97cb00fed737c60e3d21ce3865e2ab0e452d0f377055fbccb939767a5fefcdef55bafff18d357e975fb75dff58ec8a36e9cdf335f7cbf17ec36bf025cf752fdd1a112d5f748c7794f759fb3854eb9c6b516b37d75abb79a7b50bfc7018c5e48c7b57b7c027c605f90182fecfa87109629deec5456fa671dbac71061ab374926da1714bc149309eaba52f06dccb32e67343079a5cd05f84374da0759cc449c42ade9e81db2a872abe124588fed5be3cd75a5167bd68e0e4eda5d61a78a8a3b6da77c6982ece1a838dc6cf5243bc0d805fd25e340368b0236f54397a7c12d15ce50fd0a4940d305a2ad73303cfd77c9df5df3d9e0d7c0d515fd80d3a2f21e888110f7f078e4d3b2bba5b9e7fbf216ede6f17d019e83d777eaf0efbe3e3c3ef6fafbd5b7a71e0e84dd0135b7fc29eb0b2e6fbd568de64e9fef4980e9ebee439efe76501bfb6699994d8a33b3fbf12bd6953fb09e9de0b9f9b4642dfc2f3afd6f3e32423e8915fd77e5aed07a7fe77a90b3da8f80fdf63a99c3129917301630fad3768ce263a9ec81cd6d5741ea86bbfd09439800bd730bf9b6c386f8ba2bb3df359227045bafa72f7fa3ba9d683085c3ddc125be90fd4f9f875308ea2319c55a7f1f15ec39de7ab0cc0a7c0ba55e6dab394fc2fe686e462889d0ffe4d88b514b76a6fab8105b54487172d3abc68e0e54769abfc52ed213d73bc436247e3d17699565fb286d5231faab5a683312d851d405f193c9a161e3dc8ed54ae36d35ef78e23c7c551d8c046b62bf07ee2a38427b96b2fbcc4a286cbfabdafe6a1a8c558741c1e7afd767eb6f0809877bc6368ec8b05b4b580ed930f590b3c3b34db35becb2ada4f581fc3e5c3c688c7f5e63b8efb1ff2d7bcd6c4da5e69620daf34b1866f35b18a2b4dace2b526d63ffa6db1e606fb27e149ed4798ab58cfd63e584d3884cf8f5af38b30c57aeff078554c56d0d319f93bd73e192d5fe8c5239a599b9f58df655c162e1c7a830e817b57fb4195b56a1df73bfd3a93dae2a2e300daa87b346e2dc78599947b6aacd387ba127d79340770315e1ed3f5f37a34f9b34e075fb3eed53b2e088833622ec23e0b387eac234be8af6a6e5c991f65c33c671ae5c770e198f25ea8d8d9984605f646d9188369191bf0d701c79d7e25ac016747f8817bd0f33039d6fc0a63cb2b8eec15dcbd9f77bdf7c69f779925d51830bea8fe4aaf7582f92c7c4bcb297a083343f70306f070df523368d6a2bf432d15fa000f44e35ad447c19eda5dd382dea8da43ac9dbcc8a16391479c353deab4676f3e6abcd19b4febbd696fbee2a6371fc7d39537dff6e2cd47ed902efec53aa5b9b9d0c8b7c2859a03fb17edfbaad6322b839f2be25d4336da37f52af75cd12fa19996139c17f4acd03bf039bfd84730f4fd86dc63ed23b8709c6994b147b2756a019fd69d3ae7dd2de34af59b9e7e630fd1defe066a760df9b532cad4e7595adbd823471a39b629e9b5d8f0b1f643b45983a0bfd78c71ccc2d15ef5a2e63c0fc8f5866ef2e535e49e8b9a7585ca9e963e3cb7c218c75e89addbdde2d8a1d33306f71dfa75daefd0d19e8f153d3462ed07a6ae05e333f2bbfaeaae0cfeacfd519959499b5bfbed37afe9dd3cabe89dfd17bef1db0f7a94d4421ea8b895e32636a0fd05edd7ddf1acd5a43563758fb0d1980af4504409bf3963da7927b6ec63eafd483ff607f030548f351f1ef1f6c231c2053d9043bd6709e0371c4ba8189ef1492553359ee997263cad314ded0de0b8b1672187dd759e5b6aee54c88b35fe704a6c829e1bd46503e6654bcff344ad81e568434c38d622536b800c1e8969b0d933d25ee9586763dd0b04ef587b6e9cbdaa0578f0f47a6bb4ef73f75de64dace5169e1b6a4dabc1b12ffd779e1b218ed971faea9c47879f466ccf37f9d37cbffceec1bccb35f47a575fad77f477bd175a33b7f37e7ded0dab3573b537ece6288686d613293ed21379e395ee1323c1bdf128a2bbd7fa215b68871cc5c285af18fd90373f565156c87175940bc358979b1775db37175dd9f3fd2c9d7fcd58bc5f0fbaedf0156bf2db9b474f5af0f8de1aadba4f3ea9d45ace1ff309e4e1dce375c2b3b6d5ae10bb42e5a5377b75ab2178f3da377b1348f404d7964c0b735dfa7d7927ff677958628d981d7ebe7c516c6cbf3a84ca790f82791170ac3b6801d3575ae5543b87fa409b567b4d5f3d57a8fc7b40afec9dc3b99eebe7f85e5da7a8e9a1ab6b15da9355b0ef329007d62c108736782f62b229356cf8dc48000b080d32ae1dd8dfe9dbab8e273f41af8ac7a37db6e17baaffef9f5f4b6d21c756fb23eb7371110e1d13ba3ef000d9bf4097666b38d332c1d8ef17f7fd3c2c0f188fb3c7d4f98ef96ee756e6a516165fed29f1adbcca7c5307bbde4f2a8d79eaf6bc6378d6d52d8ee1bde8eeeb5a5751747b60e015aff7c37b1587c5479912c3b0f0d63f562a9e8426c3468418b3bb13fd52fd6a5a423710798330801db7a7a5f6e445bcd617e3fff384dbe4ae59a6f3df5d2cf43d9e5e8d279363c63f11f714e85e13fa460dea086971141daf87cf1de91d1d1f25f43ee2023526d415e197aed78fcddfec39f983eb9e53885a6672c56bf24f220ad49adb506b76d7aab54e78e41f68ddb04aee7c47c554f487c42d73d81218b05a1c3a0d1295b7ec4cd6b3e0596d5023c8ade9f17cfe3cb5fea95cb6bb65fd80da6e3f2215fbe9cfa5fed50cb534bdeec33f0ff5016f24e4103518431dfb0c7b4636e09e909dfbdfc4aca2476f93a7a8ce614c3d2b7a59da2a17d1c778fccbdfccf3de403f67e876fc2ef45164893dc5612ea7f20d710a3df0582b7eaf6bcda2ec1446b945fd547069e1451c9e7faf0fdfcc69993b9dbf3139036a1dd999ecefb91a9fb92cd9e7f7a97f82da8bb0d96f811e1dfc356503ce81da870612da9aba9e49de9af604cfe8014f8f638bf884629043cfdad0fe2bf85ce8db85a871a8bc4e8d97047d46d96645777bc6759c3153bb56fd268c537aeaab63c26fea1b5b75fa025f24a656df512dbc3b1553abd83a15c04abf7b4ee278d45a35cabafff588c172f631fcaad6f81b68fc8a765684be9a0b6a1e158c9d706da9192d4b68a4abf8db0e87ea7afab55e0be8396f759e9a396370e24d6ad6fbee4a78bb33efb7ba3544348ec5792e8c293401d7918876e0ae603d640dcf92d467847662061d5be4016abcb6d424f5816756eb0675a8d59c5fc32f5ee2588543fd52c17e5699db170f50c4698ee650f6dd2f2bb5ffad76936665afdbe543f025f7cabeba76d2bfad6577c3ef49eb67246948fd8e5a8ca12dd53c7a1f68ea1fdefb9cacc04d5ad2a3715cb4f0f4a35778ab31119f74dd97e66afc8d4bb8814ba893523e4fa3cd0bfab1c4bf0cd813f3ab081c1a6985e3c2a12745004f0a51eeba3ace275d9fc17e6dfc3c2cbff1016fe664466ecfc27122cf37024f3e4b3bb3e9b99d135388bcd525a6111c974b6d95cfc1b3b2a28eeb8ed8f8217d90036f928a48fb752db427f79075ea70089f9146c4afd6841a35f67d06be41041ce44ee5e20df7ac8275dc14ef6fd5e7f116c7c3baefd36ffc2e726ef7d04c0f798c0e5f1733ce89defe96f373661857887be0bd0c2c1f38113f2278228842c6452df659bbf062f59a974fe0cdff9f7cace29741b87cc8bfe43af2ad89fa177d05fb6ebfdaaf7fafc7df7ab8efafbd5b846961246aefb62aadd181dcba5d971238b380becb6add323b8da24b4d79fe6315a9b56df2421d0560d95bf042804da4b6c2548d310b3106fc203b9d23e4f07676ec8dd7b1132353e7eabb36fcff5adfa8a62fddee24a3b9d0baf12ad7363bad07e2407ce89b124fb4b322e41bc208bccd0bf2247053e18d604ecbcca47e296a46756ffe23c796b9fad653be51f39d979d77e7eb1aeca67dedcf59bcaedfea71d88dbb951a1fff092c2538dcf07233e0f306fe4a067fffb7b15648bccb40eec0a76ce5d07556e879c7da7f9e9814d61a7d6a09447dbd99548cf2cd39bca5e98338c1840e7793943bc682c4f9c35747fb8f54ab8e473584e7c3259e78e8e7abf7efeac2fcbb7e74e89bed0abd978a93f026253d917dea03c0074c7db6a0afe79368353fdc66aeb773a09f19ed2d61430fc0ecbc006fe042ea332e841a01cd143899b31f60a76903dfbab02f9603e3fbbfcb4ff7bf01332bb6ae9101678898f9959f71de18dddeacf7dc6b2fe46e6dd56be9d8a8a6d1e7631957c06aedd3702c2ae00ea9a9ce1a77346a89cd9c99ea563c64ed2d4df6bcbdd643ff7d945bb74acacd6b2f735d37cf1ba30e8059449c69895b5aeb0fe2da175d1f63724bebad7d3d4f27cfd0a6edb9ffc7e3d1d3f2418dbdefdcf1c63a4d5d0b78afa8380eeba2ddf9994c4b019c1d34d9bc193d71d0cf98697c2fd624835eefb3366b88d9938d6393c7e59f24d62a3198b56abddf51b72312a887cba6e30bac23621ad498216f412ebac7f47d9896b381baffeb60c0e7545a7ec39eb3636aff972af0bac7e803b26735344cedab6f2cbcf9477b42737b4f587e504ffd8b3dc1d7f958b4b47ac717c9dde631fd8e5bff2770e02bbc6e5332e701aeea553e95b7d7f954f13a171bbe5efbd5180d3df55a67a0b1d99ae3084f5303ba425b7d3f829e02c7137ddf6ab1b86816851e7daf183789ba9ba3217dbf3adff3568ee957088d244b1c35d61cf331d4bee182dfaf353d658afc1dfeb719f86ad438ce801d175b60f6c9dd8982aebf3b90a82b051d17b2a19edbaea60608b8edadd031deb9af451d948a7dadc0210e49689e9c4f3d1de26e2dfef69d73eeb72e3a5e92ee8fc10b96f18fd83a55c85cc0925bfceece27b226163fd09e570539f7f83d3b8bd800ff24db44735be04302bd29c666a88799e7fba8bb075877782d8c93be7e3530c16addebc95389c7a35332fef9e78b7a2ef6d35b28e7cfd08d89744c0f3f6be471c4892fd8a3e7b5942fc07134864d1c4270853717f00ea6eea0da9f043cc13846b3e3b40cec086bc7ec24da792a878e1da6eff69916da65c07b279ee07e524fcbceb30efde29a9c6b957b8ed4de6ae9796b694fbce68263d89d44b93b222755e369e1d00b149a549bcdbbfdac7bfc909d4479e3ffc488984919541af7d168ddaa41e031cfa2ef1e74b44c354756a8d503bf50678dd3a26fb07006f41c258f47962a57f9405775eb40df48c50de1598b2cd67f49abe692d67333a765d2f53d52789b1efec1fbb68e29fec1f7f17afe5fdfa76f134b20b75abf8013d9c61a976f30aef17aea8726779b5fa9b95f3d7dcdfdbd9f7ea85ba8384a639ca94584fdaec317ed06813711620bae2df1ce6a1ff5dec76e175daba2c33b5b9d3611f50b2f5ad38c01e681ca3be4a1a8e513b4a4519f5a78f3543fd7b79f355ba683dd633a789aa51c17dfbcc477781c60a7cefe57e85d743ae4ae99b717ff2bf6348cce83e1d8dd473f636198ac5167c46ab58910d41f833f7452fac6a3ca5bb76a5da8c0ffbb70cff2936c473fe8ff20a999136dc0a5660e54185ce305f2663516755d867a02ba56f317fae837393b6a2d15a96f4dcb5ced13ddadeeffea9c6b5758a8f53c65eda3b751715cb3c65eb329a765ce9ede82eb38fcad878e7afd4d7df5d5c2b0024ff31419875e72fc07a1eb07f86ef53bb5479b7b95d3ab1cbf6fec939c966a4dfc9e075f43a3e0efe91adbfabc959d7f8188267f57d3b87c7c9894ab7172ebfc95e7bdaffbbc8b6e722db477028e47bd66e1983d7e432dbb5aa7bdef8eb9d1bfabe95e03ade67ef3a359c572b34a93268bcddfd9d79c27fdbcb6b7ee479ca85bf5fef63a7e45bdf4463d271c1a353d7d7d9bfdcc029e5721fb4cb67a3ef092cfd24cb4ff426fd3781c1af61abd007790b52a2e8566b1a3fd8606da6fe81442df6dd26917d5d71ac581376fa7e452439778aa621d8d5f875ec816b823735ace5aeeabce4024591dc6859194eb67608dd24aeba46726fbb82aef49f03fd62002eaf3b6d0683fc932094479f719b5b07d7e30bd953530b2541a336bf4a2e2a8ec1b4f7a2b7e563108b161d0b6a6ae077dd1d5fe8e1ca7460ed4795e2f9027424b90bda5d8404c30ecdee3a22ecccf10d402ef3e03aff7751ee5b3c785f72d9fa7d1281529f044cdc2dba4222eac753909644acd6d3567a66581cf444cbed5fee0253596553cc5638a0d7d4c956c18bb0bd6658eccb9793c9a3b0e0c82beb5c3fb0ff14fac4d0d5d680c50671ab5ba1a711874b4e39328514fab2fbf599f2bc4823867fafdea18a165dd76bf43b67e57b7aac5bed35187b63835a2f13e7dceee7f4b155385c072f9c6baf48d8597fc5845d036afd5b5046faf517b36f924e150c56feafb37a98836d0d663ed5d6aae4b0c5d86506bb785f0c051afdfff88a282feeaf45e1f4c892f6fa6a570343fa6100d3430c01bc95b815eba8c32fd3cf9240b4f7d0e6265cd37f13b1d2cd6f6501734dabcf38c47cd4c73e8174e2b17f0f3d1f75dde674fd4b8f2e92dce7daa0771e9513106bdea4bb95731ebe833d61c3f7b986f622b31d65f3746ede9edc25a34f80c46d188515645f81d77cff4005962df9443c721270faf37a665d1aecbec24dbf98f15f4d7a1ed676b7c47251b959fcb52d763d59cac38df82938027c06cc0f5c3b7a7d4b7d76b858bba60d8f17d50fbf34fa2ccc87b020e9ef34fb493178e1bc716a89be3f57a7dd97575f4968f47e48695b313d72f684e34e775b2cd8fdaaf4f7d37752a30fe915ff1f8a280b5be6ebda5de05b8dfd0bf50730eeb5fa7991198eaffd0dda7e749cb355de875381e001b0ebf407eaf58c073501fa34f6d7daed3fc6cb526f1b714af7ef7f9b5eafdd0e36fa9c1a8fe57b419d6914ecfd675347fab52b15638d6d76c7beb5c53d35f9deb4eb33f6bf0da9abedd4e2d718e55ee5b756bb899354e23b74ec37555d8d4e7990d5643d4f7c1a301f7056b35fe1afc76756ed342fdaf060e7608fd595d6b8d8f3c9fea338cee33b01feaf5f1248057e1f8022fae8cd5b93c514f6da6cfa3abce23ceefcaebc6cfcddf0d7f05f8d08327e420f7227e16f19ea97d2da8bfb970ccbc393fd65a3be887aac72759e685d6583ba1bfaf1f5f5ed3bb2e89356ff9b0fc9d59c9647558fec90fe657d682ee97772c5cfb91da8dc76b6f5ca91fcb2d38f80368e0a71fe5099b9b7982b8add7d0bece13a0ef70a44ed76ef08b5e5b8d880be40bd47c1ffd0046cf286cf6a6198fc3ef7794b5fa35415fac36f3d4fd6e990e8c2fc449fc4c9d0f68a55d7a28aebedef41fec7c40a6d82358a33be7b15ba35901ef2d9aa99af3f49d28a89fe45a18473134954f61b4d75a6e39f067e455bb75e0658c1f53d4b4eb59bbd3b9a10b2d6e751f58a6b6cb19b55fcdf0ba7ff4dae786f9e99eb55a1c97e1741adde1d035a0678afdbf8b47338bfd14a1deeff4e69971bd92e0e27ffb02bc5d9fd4780bc47d663ed2a74ce5b21ff8726a3ffa3d7a1e66e0ed9f45347f41ae00fe757ce6f00b78f711a3036ccdd6351e87d0526e10e71daed639f66dba75aa103b78a5599f85b7612d7cfe2c17e0555df90bfaac3f44fb4094f4fffc8471367b1cff3c2d63b3fdce03de8f35e09fce9a8181c97d8e1e50e425c7f6951ee2c537a9f3e7433c855a4503bd35e8e1609fb3b1cea9d876ebc077471c7cf55d1574fcd57ae2757e0bbeca9599e796b1432d46f484eaace9fabe79a72b6721be465c37ba437cd766c5f9167ae1851ae706f3f6d8d47803e49c22468f925a91c36b2c24f6ec01313c39f508d0d3e21ff1076afc1bba9f62d46b9c9fe426cef2d70ebaab6de025cfd464440dc409c9fdaba1ab57ce2cfa9aed8524c6d899969b727ac6c9e33c5b1a3be3c0e70cdfb95179fb20f07c675aee6cadf7a8b13058af8f3a673f85a8672c5fd4b5c0393b885388fa08fdcdc41638256288bcc48236c4c36ff631ecac16e3aa9d46f259eec1331afc3a1836f5e793945a533d357e3847a3cc1a9d126b7f78fcde0f6ed5c9db599b693f12b755f92df813d400b6a765d0522f206858f7cc4fa24c3cd614e342e5f0f063a5ae464bfc9cfc11411b3428a04d100bc426921ef60eb54963f49f642a5abd36006f120ef19ac1b47489d52ad702e305baec821a25d00fcdcc5f8cb76b01efa2e5b3eed91f251e934bdb77fcfcaff381fc7b7d2ee38607e9e0bd0769d0ab5f17266f7b69313eef55bf6edbb35ff73ff01d217a8aaf7b9b57cf757dc1a6eb0bfec39a5b2bd57eabe60fea4185ad31a4c0434e8987a10e11bd58eb4e4355ebe956d406761df688507b682f3d02d738d7fbbd5ced01adde13740d05ff37f9ffd951d7cd2b798f9a54cbba5caee6b5c9ba168f0db82ceef1ad68f879b241bd8a9e9bd0fef1e96da98f27f472fa4522c745dddbe1de845ef82964fd4ee34e453dd56b11358fb08751c3bedd513f6141fd3aeaba9c75e75b62e7905fe97551745e8006f223f6238c47d670f4f7bb5813c16d424e161b7cbdafe39960c0ef9875c7d8e05c02cf1ae0358275cd1a7ae98d63e87db7063fbf37ae745faab56b19ef4f97fba3afaac3d86b6f440d3b851fbcf5e86da889891acdfc791acda1c1a9d6d35f07c398467eb3f0e41b6c4fe120575739cf28ab3ff05b746ef92d26e5ec14461b4f9482da5543b711f0d51505f864b6e617a8fc1d1e6feaf56b7abe4153b977ddef7766cfcdfc904c56fbeefed7d4c6eeadd5639dc7484aafcba090e3e22847d9e0d19b5ba8fb0d0de7fdf8f8808348bd4cadd5ba797e87b3054f9bb8f80f715cc02e42172e106666a8d73ec2cfcc3754eed017b3f8980e46df1cea5b7eab7e9394cb003a4c874ea3f215cfe87c9d927279d337e81a0f72d6587fcaa063a8b599b59e7a6651e3df652f3a1285b05f7b04065ea751eeb66ff4ca8f02637586da9cdc158335fa09d47d0297635c35d4300c981fbcd20af71b5d5b51ebed4994f3f413f6a6d3221d582bebf835bdf2fad452a0cb905dea6457f5e17f777ce931698968a26bb1ea9a9373ac7b091679c6185347ddab7fe5b5a8ef7763acd09eed06c69bfd5b861c736a0e007f4b9da4b763c9edc6524bececac5997184bcf629fd5c22f06ea33d765ef3cee254bd7bfb387c9efdc32bed7acd73d0823f0ded4685ff5a296975e14f1f41ddefe43fe4738aee0e9a7e2a2c0f39d85b74ce5b8b0d765f22c1fb2ba07977fc0ba97af62f596be2b3beabde256f79fa1ff00ee99415edeaceb4d1be0979531fab8d847a92971ad4da27526a86592358eadf977ea7d2dbd2b7cf6d9d5da19c90dbea7fbbe28ee7abd06c7fb1df489658438ce646f3d1ef0fdbeca21a8a5b5656f3aeb38b8f0ae3873561beab4def85ff73ef4aabb3ff4863b2fd6de9a29f1b8defc8a977ff2fdfa4f7e78f992f3a7276fba900f99caf5060b2f3fc9b482463635b167ba5f920422d21ccb27685817cc070431575be0a7acc0cb0af9242cf6cf76859a47c0827cc0ddca1be41e2a9745ffadb73e6772f76775bf3f7eeb727e10ebabb8de07d6175c747a12cda8d1bc750781370f645c758fd57e573d7af317d4e717d0b8b78451a126a475552faf193ae634da087c4fef58eaa7bd7c9844cb87b9f1980e9e7263b05f7ff7a8ded7bf1bb7a5cf86d6a8b37f43ff90b59f0ee7fdda4396bc8b5da3fb4b67bd6a6a5c03575943473bca0b69c0077620a185b71b74bc4c094e0574f59dc8a306237a9606fa2eadd8badd2df5c01bf51d579eb4d0e3bdebf4cb0de2d0e01951871aa33e8db253e8f5eea134cb747dcad28191583f8fd9b757c29bf849ad09ba1f7daeb1220e6a1147690ee254fbaf5c7964b166895c3d2fc254c52581432f66dc767a8d47fa05c35bf34dfe26dee47e19b047d0fbdb1a66a7e9d7fbfa7f61bd941e71f320f06420d3d75aca8c99e71b62183acdfdbfd293baa1c58cdacd329089ba9ec07d132fd8c0fba414f4d6af18f716a73082074b4bbffdf8487eb9cfbafe990f0ecf63835c715d57862f1a74d25a6ab62425392d786f41cf6f70c90d8eb1e02463f40c07d486c851d797674dffcc9ae258dc53c8f7b3ee00fdf15921b7ae91b771e72b6049b58e46f312fa17f87e8c637a8bc283688e73a13104ecff695ff26999d9da2ba20657fbfcd83de3268989847efa053b79797c794d5fbee2fde4f7376ffb76bc148e8ba348b276e12d2d1917e6c775abcc7af4e6961c17353467c7d035b73eaa47fcda194ee025cf21344837293c3de081095e891a3bea7f6adea83945bcf913eb1e6acc695cc535370073f482c5b8705bd7d09b98f4e997d6e1e81d2fb07edf2f1df51e87ebc3a8fc95cc7fe75fb39fd38f3bdb387598563672ae68948a68540a781fc40d7b84e01b5821b4f077f01ea1b795410c7a94abb5ce100bc3a627974ce5d669575dccc7b5b18e3ca1f241d4ea2479d4ade68757c43eec887d38ebf90556e0ed8e12d82877308dfc2629939769b43b4af81df9853c9c310de831bcc6156747d937c7e7d83196b1fcb33a0cf6ea35ebc3def8f5353133fd34782df484a1e142bd23680d14d857b7f0d3a0ee32f4973b9d82d79a05d32801d75ec5f8f04b06774540c35dedcd01f557e0a99c43a777460d26e611ed345a02c7481f407112debaa4dfa98afd05bc01b887661cc74f82e30b314256ebe70bb9e3b8128d5349fbb784cf70e49ee443068d0caebf06bd77e0016dd467cd286f737715e7d4c4b8259600cf2426deef8a7fb52e65496e5d7c5e5b036ff42cc7da5f7978ad2330ea30c2eff16f0743c5d8c00d9db53181458b3b1ea20d2e449bb497c7dd7331fe443bebeef33d656e9e5ff7f0fb48cf9fc0446eb835ea33deafd34b5c1875de5e73d0b2bebe88b3fcf073b7d61a20f143b2593dcd7fafeff7e231357f7f551c524f8fcc8ade5e9b67b5ef539b654e4d20686024e03450c7adeb8f00777cbad28d89247b290db406cb6b2e78f0a6a7ea572ae7fe8bcf6ab5ae0c7bb8e46e9c7bfa6f78dcd0839b46c9b36c1c43a6821897ae167dee8fe41a8f2a85283bdd6c782a362a2ea717485e48a370a665dc46e023e5f0f7c4bc3e542d3c1ac965aae965149ca437f7e4109a77e05a699eb71378be4dcdc5b5e68e4e02e2a8fdfeda9bf7c97635deb78fe36497587be3d197cf593a785a3e7c8fed3763db01ae29da9d645c34e2216b1e8786a5e261708bb6e0e8d5d3b268d9b3c80bfa1fe675e0619d6fc809d6dedae0d61936bcfc550cd338036166c05d65c8c76260f78989ca0aed4567eafec1a0e3c5d1331a9f071ca87cf82dd9e3a3379d24d6a596f079ccedf3b198193c3b11a7ec0afa476c1d437bd459daa3ce7aeb51875a16b5914d68ca7bf1f9d8d6c071a10fdec28b9e7b9f0d5cb297a95cd956fbe4af036aae0d6a266531580d0d93f947cc7a0a35bc9acbb9ec3cb1e1ab6d049adf077c2b3ed3b5affa44466fad9b87649f3fed87eb74ffb21c27cd97ec7bf7e348756b2b343e65f391c6670e6dcf4e0753f8174d4ffd77fdb816fb579a9fdd7768ce7a5069afd2e6caabd4b9f22a75de79950eafbc4a87575ea5657c14910c4434b2e4a132897556f947dc612c1bd19cf934566fce9d1a4f787e70b77a92f6771fe7560c1f17f23eb3175e7c12d1fa657aee9baa58b3807602ea10a9518303657d14cffac6ca9b1df1dadb316c8adaed7beded1f2b750c63e46e8385b7b4d03f78ab959daa63a88cc09ba7f283cfe957db1d998fa9fc577e48aad5fdee4b8e937fbeeea83c2857e30363413e656aef4de52d6da0dd599b50d7277703c48d3a068c543c584e5ee4d0301ebd3d632af47ac07d836e500fcc19f548a1ad129cc8cfcf8fe8533ee098addef5cd43522ed37df58d11be8511d67ec3f069731bf60b596b8ed0db9dbc5c71f1c965395497da735c215f909d6f31300081c60ee0718b9e4279f772e6f5c7957a4db3f2cef56fa1c619af3debda1d67e7fa356add53e3f0ea7370ccafdf17d4ea7d49f9eab83b4ed8605aba838597a4f01a4ee93729874e0dad1ab5c7a685aec12e3b2ece878ffbad5d937d66fd6c96a3e59fc754ee237bb9cfbff508dee1a502cf6f33e863024f6a5ceb7f517fe7c2dd9e46b3a2d3020bbceebee67cc377d7b0aeb0ea45c7d5cd9b73befc26cf752fb843f2731dad296e33aeeaeaff4541bf525fe5380d6a4e5bd4fc4d7223662a0633d003dbba46d6908722db40eb8babefc8d877bdcd850f046a5b31b4a211cba7029a5862a13967a88be5eccf358e43ad984ceb8eef4bf0e475ce41fe46c0be17f2ac1c5ebaecd1e27badf0e13774b7848a4b39df2df63b325c0fd9e6571ae42a57caa9a344df475bfa55a37dce6b795031e78e5ed3cc876ad69fc933ed8d153924bb659a1cbf738f5b786ebdaf469b52ebe1b442eb9cc14b2a2a8e029ae0bb01b5b2765a135f8d8b58afbd99b952af27df56ebb46c3c11b9e8dd8aad63caa1f6b547cd08f3cad6fdda42a2d62958134e1127b61c7b8e15e258dcfa8c018eae6390e29a67aff29c41871f161a8ff04683f08a63d0f150361d86b8be6016820ec37614874bdc4bbe336abaed2b3d58750e2e3ce9e2ba86fa0b6bd4edbe5bde5cf8d0d4f6bac4be57dc6af8d2e0774709b49a45a7cb8c7a6012c851e63c7ad0c315f01821bec7d17ae6c8ff02afd05c66d43a2ced23dfca5d85fa187a8bc821cfefaf25fded9c851754ebb2ff7eb64a7f5acb78fe67f54579363d62f16ead1e847ed5528f529c44bb7f517348b4f0f750b7c76b5c39ea5fa5dadb3a3ee1590b82de6f5bd7ecf4fe434fe85a906ba15eba752cfddaa3f63335740fef14469b1fab08789d9a3d3de1445ed0620d57f114340d5c6b450cb0413cb2f6dcddd22f47ed65d06656bf2d5abebcaa292d3abc6f40fdafabdfa49febbc102535ff5cea24a6d5756deb155f83def1d9519e7be9ddb9e89b43ea719bc8e7957d5741c7dc1a35dfb9c2fb5ca13be72292827aacb1b1f2669d6fb3d64a08e05f78c67a2de8df40ce6c761265a135e0e00dd1c845e7c1f29657989fa4076d8656c759ce8c7b81cd31ac6ed9b7833e945ac7193bd55ac7aed5f10ab06a8847c01776b5ae6b87971f89cbf8f4db5f3b437dbe099db485d1801ba4d655f054d63fb8a7ce0368761ee07bfd8c3d8c5a1eb69a938f9cab0630fa9c3703f608b536a9dadb888187ae08f04356a5eb72d9497a7b0f7aa1c46043771d31d556c5b2f8fe4fed0bf59e3ff664f75da7bb51a76b984f866a4f67df8078b0f1bbe78ea17a6e940d169eb43497c9429f21daa4322efaf21d17cb071543cf67f9e1e77635fe8e956f6b99c5a730da0bf4ad22411f7215a71915b0f0d0bda35f97100b179a8c62579dbd83b5ae35f1084fd9b1bb8e7c6ecefe51ff5ca75ea749bb1edd6d96d6779cf5b6a74e0df3b910c44239c2cc1ae16b4dadc6a9a5010ff8bff2b1f840cb6bf27fe38ad581b707af5ea4457b5be7f7caa3f23abf488ba378c8ea0eabb1608d957e91ea7fafeaf7971c62bd35da5bb88e476f9486d090191157d07bed90c6ca9eece74f933fab64de640ff2f97bfd7837f64c70a6a01b0b9d7d7886c3affe01b5212329d5be9da975e5963ee6073a0aeb403e6535d692ad6126e5fe39bc07b7d4596fe107033d0778fc8c8be6da7ff8d1ebbfb7e7f6fc4f7e486659bafe9a9ce67ed7fc3df7f4a63ee0b546e16b7ccde243fd8ccdcb34022e525dcb3a7cb586a1eeed4ccba24dcaa0021687bdb581ca2d23685c1545b8708ca4f4e1e72c59c333741e6964f0ff01e7b3bef262b3193fe6b5eef15efddfaf05f83e82cf0117ef9f35eac4161e2bc0e7403f3d55716ecc5c00351db782d6b0d6b1410d11be776ed73baec496f7e5d031e93da4d6d8d959af513dcf3e553cd05a7c03d900ffd0b206199c84b7fea431ff35f7d67e7d675108eb8ac335340681b70fd8e315889d805dd815c4bd37d0566be9899917b231ec9c7563f0cb82b75c334b10a3899ab4006653d7f7551e455d213d8ebb3ac42c2a4e61141b81d7dd6a2ca7ca09d36bbe997b14d1e6c70a35b7c422c73520960cbe5cf0546c3456827efadebebf26c4e1e79fd5d7c420f7d5ed6b662d7c320af24c63dc970b77a0b1538d5ca831e2b7c4f3c996f8a5dcc4b821b6b6a54e18b5e3f1ff688ddc18be889ddf1af15326fcd41e44876386df9ae6253bd4142b1ce80346bb2335fc0a67d6eea8bd85da85df793c3b3cb67d2f4e45e7dd74e154ec3fd09ffbe7b1dbca4e4ecb71b29b593f9bd5e18be2b37a6a6485e9999b60751a8ce250a858bcd1f9dc8f08f9a0645ef73a97c7ebaef27607380be392dbabd724a50c844dad2d1cfb3e6b17dedaa22f935bcb37dfb75ae8d73da11f70d4f8e05bcfa9f7578f9ec6baf23b54cc707e0edfbb331ab1701ddd9bd43a72175f4115afc2a33e15da5fd02d34bfc9a47f4966aadff509eba1fd980e9ebec7e1ab71e81003333bc918989a01710f6e878da8a585d8bee974aba18bbf70ebdb1e61e292576cafb4f6b7aff5a625eb8a95d0380ae42ec4cbc2133829fdc1143c9efc04ce5009de24fd36e02999d5da476900fd451b7854dd8bcb2c6a9d08f85eab759a75e19cfb386bb0c06cd08b6247ede472d64ee9f56801cf861eb8f62682067cd04ecb1d7c4a84559c84273d019fb05d012d397861ba36fbdcbeade202512e2df022d87b74e86d72f6e7eeb4156bc416f40a442d9618ddc00647a3142a4e386abfe39ab169d0e92fb6615cc1a3897a31beb382a69053f5c6d73e252fcbaf193ff4884333f27ba39140ccd038863c5cd7f4fd42ebcae83ed4751fcdbdee1d89abcffa11457e1d78eb40adab8fde9e3cb508babe06e688d6a6e9faa82a1fc1dc1cb27f005cae8a0f1a3e96faf5523f1fbe7e3df5c5a93d8cd7ebcf57cf3778ac5f1feacfc77c5de8cf870e357bc6fa78adfeb57cb9591f925d6c259bfcf0456b3c7d7ca1868eadaf6f2b625fe5c20e3530704b9d8b282b88a9832faf35a56f582dbc1d7d7ab136ce3a6d231bbe46c4603b5ad7dc8e805353392eb06c75a01faf8686a5fe3f452cbaf91145fa337d616b8f76ad4bcdda0363d824920dd645721070eb53075bcd9368a68fb7c390abffe9cfed13df0f815d72a6e5cc88f879163024edae8086be5f40ab1e7af6c42a10bfdce6fc3f3de5399f9123706d8786955acba9fbae737ef49dcdb0ef5a6b8d2c68cd7c4d9d995e787311dddde29cb71f7a28bfc2cca8b5b528c2b43093721d685e7bcd5a5462c92dfa9fda63da19481f9e6a2a4fab179e7f1d17076acd8d5b78ff6a8d0735c6d12735d81fcda1f7f0e8252571663eb1835ba755316fe0cd8ee2a0c6fa6ca075d3067aeed6bad7acc69dc37ef54cfb4906163494a1df8cba2dc76d9933b7348a867822d4718f6aaf9098534b9e337859ef585f8017047ab4d0408456346b6ed6b4dcd9ac3b504355c4853d2d134f6a3c06708c0dee738e6a3d5ead03d750d72733f59cc0bca696c0e459628f50cf8f809f05b7179ad001b8b9d352e528bbfe5a12967c5ea67373354ea2653ad87def216f75ceddcef7d28627889a5be7fa44d276fc6bfad5ba1dfffa1d171bfceb88be94d04ebfc49ff6b49ca4229a3f8b87ac9996b9d60a44bceb48ea93db3d340ce9597040df4bcddf14fb4b5a398cf1c549b6f3b2e3b4611d072f59d701c951461f0d7e82a5ab75d2b5eec07da6e2709b7a06492aa235e6503874f47a115be487ab73b111d8a754ce9264f0bb5b519bc5ecd9f38a326bb35fde7fd9d8bba7471c7b1733f0fa73dd23cd18c740e75518dc9bfd8adcc89dda3f3c11e5e45896faeffa713489ce8fb7eef93b7ee95aa1f8247ff715b903edc2f3eb75b97cd17546e8e39fb9ca25be8bda4165df7e82dc670f93f2d1ff79587e4d7c7f9fb88271e698757e7882121f66cf8083ca6b8e2b8d6bf7900371bfdf9e636cc4dd8c61a527b7c013125f49cf168bbd2af5dcfe1971e44e98d352a8cf50eb923d2d7d270037d731dfc4cfb584874c175bef4e3211ddd854ff1bb06e030da81a587ae0ce3a2f28f84a98d004f6262534ed4aed9750aa638ae9d5803a04f5b0e8911a0f98b30ad647ac8a1e4fe5c6e27a8e786710c6c0d81bac6156473cb730cc7fdecfcc3a1eea29f4260298eee6ec53657431b7f6afb2455cb5f483f08d8038b51a1c57ab824fb46c47427b7ad822adcef1ba54311abc24f23a02675be521f397ebefe8bb7e2fd3519359c5770fef3f36e77c3de77c8bfed83efdb14b77403e2af8e7e4a447eb17e4ad65e0acb78e1da6153d9aa2bd10a54b4de068ffc23edfee281f542c9d15e23f9cd7fef31837795aa5c9e98b6284fff1d8c23aa4f5cf04f4f8d93761eee13b49b90ca04fba75ed479dd72dbcbdd55b97c34a4e4b7fa4fe1a35ffd65fb477df478320f0fc06f523351f930cf36ae515f4226aa0c7811ebb5ea38fecb3769edcb9a9fd1c4e22dac1335f94057d331bd75897be050d3195bb2759adb9de0eb0ce98ffd949b4d0086f42bf32a93bbc1b24d0324f5e741ed1634d537bd6a43cf77b87afb5aaf2f6d2ef655e65749a57c7ee7ed707a3ffebe6853a7dee799f42bdb8dd9153a87ee3b8a8d7e5ec24bcfd8be61c928b58e6e02f8ba6b74789ca9fdb953d69236b79f8cea3dff6cb7cad47b7b3b2ce0b1d5ef9be312d3307f118ea3b2e3121c05ecd382e88f5b7c99b919abba2792a3b3536dd9a755ddc52ef78ab7562804fe974cc0b955b10fb145726f967f9298ce677d0cb06e685b71aff84714aee44007ca91caacf424c6892f792bc3d9e81fa8d5a37c6bae8e65f746b04fa6abeca89069af3004f621981dbd0eabd187c1cd6b78a7a057f4ce104faf695764c5cbd3abfbf0ec640edddece5c912def518f31de62bb3c85d084e52e57add73e40baadc8aeb4e9bb107337e8de1a10f7f5c134314d79d2e35af9d3885e48198d4688dcd5fda9b959ad5eab855fc02bd56873ef33e706782ef634db29c99d4eb415d6c2074dea073cf4e87da220711dcd8863df25d8bfea7b77e7b5d6c72a372723ce0ad4aff9ccf9af7df73fed59cb7a959a8e66760a0f650e6f4ca8db2823d366af24253a7b98c3daedde7b177ad87ee8543ad5959c22bbc16f02b2aba790a8c2eeadbf02ef3a1738e3ab555bde2eafd3aa83569e6041eeb1ca215e7631391fa3c414e1beec31ffd6fcd8d590b5c3162dc732f11c788dfd55cf9e918e45aa11752b37f52b42bef6a5e77deb5d1dd4dec7bde5cf8577fa1fbe604ded51a066c81ca5581016d51b32c3393dfdbcd15a1f254f894a0dedde91991d3a4bd8188a115e0cc0716eb7fe208aebbf516f3c739271b6720bbdabd1acf918a3733f4f6e516355183fa942aaf901eb086a891e7e025a3167fd660c2bc27ee8c3ce896b9c4fa85df6de8eb31d3d701ebb65a230dcd79e3752d77c7eb359dbcc5be5e7672bfbe9fff5e1dd6ed2c95e5f241b68fe9e4f76afcad6ffa2e1654f9e4c235b44e03b5643acd6c7a5fd779a3c658a1f2d496cf19ac3da3375b58ec27b9d0eb56f36d5dfa0db154f016a38e8e054f6935cf0cc41cecf91e455a5133eb89734d8e2f5e68671cce93b8e2dfbdd29928ae3827e4f869de90d81536f16433e404afb062379efbb4f1f67057adc6fb327b8026d7d7dc937a7100880b158861b056687d8d75092f5ae438815ae71dc44da5afd7e4dd715a2e4bf8bbaafca3cc2e3eabd0bedfbf3066c3fd92f542b5d6f826f9b3e224ca043a845987d157fb47e74dab6ecb253e833998fa0c6161cc2e1c15bfb58c8bd0b735a917321bf098e0b168b2b6e7163adeab05743403e2b72c711288bbd4efa3b72e705af4d61d50472800362c4c85ae87a2df6300dfb580472c6af362083f7deda72b06d3f3ff905be13785387e683854217e83fa7dd9dbefd3c7e69f440b5c4675d6b28046a83a375dbcbf3bd1675890878c3e2dfd70a9574a8f2cd6c702e20b529fd8b7d6eff0effa3c27d0d890e35bff771a79a88eafaea53a962d7f836cb527ddc2a9f01d7aff0716e2a0f3197a1b136b06ec5a7efe1dc438b93673a042e7eb88f707c0e6a973837c3de73954dfd3380d3f535d0783fa9988dbdd137918ddf5c1b838f21ae03a1e710d80e7c3be67e173d4ebcfb1857b12e5be646cecd2471f780db7bee4d1238de1e0738c7f7cfd5af24f34c6e3faff1d46dfd6bab2faf9d18f7fe065f1eab9bfe163616a1f0ba3776c7ff6339a6c32eb68e6a36fbec9c7759d2e5f7ee70fdb5ec7ad678fd137712b75b68d4116ed8af0ec47b32bc2b8a856de4cedf1c6349a07125c01d1d5c26ad118e0a6485b68ad7d51c8c6b533688eef5003e7ade63e61bdc854ecf8c66f697e174297568d23e4ecfd6b4297f1f3b24e136365fd341ebf661dba678fda6de4db38e91a537f8ea78a1bf15480ba9f880ab59651f36e0c8eaeadf68408fd11bf108d4b7f3cf41b5caea1f07b39633f2d8d35b5a9d143cfd9a40caa476ff422b9de999d8e0a755403e653fafe2fedf1d5e57267cf47bf226faa8c074929e093b58af4ffd5b1784b6063c15b89d616fae0d007eafc220be713c762f398ae9fd7e3c13eb7bfa61676af754cc58746d1dec6ea67b51cff3bbeea7fdb2f7b70e597ddd06fc6b71ebde02411eb51e331b8e82b06f4d23dffff78d659e4ff5378e16c3b6dc68c1e81d079dc00d3372d13a131480d6b28e2847e00fdc36df609a111f7ca7f37bff6de6ddc3629f79f97bf58c9cbea7b7d7c574b0bbc0039ad5a07af78458df6e87efd7867d472eba2df130edd6ad66627eea719f255f917ba09e1adfc779f35da17a99e5eb8d247ed093fd0df5787e4b8d78fdec68246dad0a057525aa8715d511fcd6fd473e2a09eebab05751937f387f9f3f261725a3e7cfb62bd5dcf6483d8dd9a96b905efc752a8d8c70835064440277c461c01f5bf4c62f7022782e71b6aee2ff06dc3fe17185a77a97dc3638377f05b4d156003def2e5a20cf90134d1b53e2dfb3fea3b836a5ac68eee811a5daf0573f6f5eb5a6281f03a937c12f51b3eaf9eb24807d5fa617eb77a9aef5787c1e6bb9e724b872729cff1f8d0e862f0a38ac11fbd4bafe68d1f51fbcacb282d9a0b07dde838e8e00853ab65a7f3d4c2613de2eca9d7e83e13fbd5d0c644fdbff3e756dfd7e93954f034a2a7b8de4fd531ed2dd138d061404c58fa05783d5bc71069d5c22fae71db08bd8c59c7f16889dd8d07ebad3a5ea9b5fc479e24271e9aea57f7d5fabd39e7179e5f6b1ea83a3f167d1e66a8a18bc8d77f9fb73eea71ecad2cb3527bd5b77fe08d7572e136677d9e8b7ee8513c88373afcf3403c64b5e8e2c0a6d3f39d91bf096c7ea0d7c6d949441b0ff5a32db961e4c7e7276a2af85652a266a1f66de8b383bfa8b576af3819e005a83dfea626113058fe512699030d76bf68752ef2b77f53f8effd26e82bc9adc1fd01b1404cede5ade3887d66d12b69a2351c7cf3537ed7987ee622728f52c7257fe3b7812b4e4e0c38d2d4f7dc3a06e3771c6f232cec5186da5310cb47d991b501d613e9b31b9c426f92d2078f5e79221a95f44a80aedfc53bec21232fbd9c743e6447ad2d85e342bd636198da4f0a5a649f97e3ed4ff97d62ccac9fc77cfcb37d7c987feb01bddbbbe2426344defa5cb4af74831f3263e18dfeadf1a3626edd4b3ec921e6b90d0c73e3d6729f590b2f49c513fd8ce4c77a618cf9cf5e1dd7fac423ccab699468edb0b9d61c17ffc66fda7ffe9cd853cf00fcd7f4537ed773e785368d96e9dffd6d9dc7badef7b51f667062ff98c72b4aea43c04f80798f3565df5af760b4be3cd6be258f836b59fd896b595f2ca5b1567bbd2d27aba73b73ed6f76abf46b7aabf4ab4d17853433e3751e4b8cc4c2db7ca02d2803f990592b0f98d8f611dc3cf9221ac34acaf573c793946395cb4aeab67b2395efaab5bf59787e9da0d7345279bb9394f31fab68578443c7041ea5712dd4168786b1265ec186bf5eb44cc3b4a8c57dd64ecbf8136bd0dc13627bf97b394efe7cef076ff783029875f41716d029a3fec5ebba5aa4eb6896443dd9476daec32c50cf3b2ed43adce9648bc675f8bae4c74ae5347ffdf9cfd3487ae1a2fbfc5df7d903e4e78918d0cf42d78d17aef3e8499517b5ba7ff7ce73fcd759af2429f9bdd41fd6fe00e7da62dce61aa3052d4e6863e4adaffd03f2e27c9c3806a1f21f133af66aadeffa89b13089c5f10b016c91be1f4d5ae8d7438fe9facfd0981f5fad9175dcfa8eca85f89ea0601de9cc271b908309cc4e2587c6601aeddbee7ee0ed8ea1f61514de8cde7d51771fda673f56da23819eb138673cffaffcdce9ef1e9c355d5ed55e5f9f8bc5cd6ba8f609e6c57f71be89797bfbf9eed96ffe52eb7deb3f1f7f0a67f2b22efcb4960f9336b346a7ef35e17d7d839c9618fe4562a8e6dbfce55203a5b60fe6fa7d66ac548ca135bd230fb5a9ead7ceb0d4add603a236023c957cb5ee1bc4e8a9f8029caa8a58b444b09fbac49a014f3feb4ab7f28c4142cffc963e69fd412dd7bcb50712474f2cf5c293f05b0aa9855dc393fcf3e294d9e3f8e7e99ba77bb3073a605cccdcb2d3043b3f467f3261ac029d1270efd47adf90379bab781bd81fe2460ce03c810d828f8ca175a0024b8da16919ebbe545e4fcb60c0f189d8bfc9a08febdac84f164e255b8d998687783c609d75a3c6abd6551a95e085137bd2a22e5066ea388995897de8354872855b8df3a9b9cfcc6ffa6ec363e692575ff9b8b8e029c3c7a0011753ebf2e0ef036f6fd1edebef3c0da388bc4e991635ce2f70388573c600b5f1497af4cd216f201f40bf72acf69059a759a1d7e840e3db737c6778aff6c51df2c0305af3dab5c111bc3bf5da2db4ad50f70486e6a0315b0ba7c91ac7918b4e03296fa6a5182087d93a867cc8d43e50ffa226def5b8f9b479bab2d7df1e67b77b71c69bbec72d9d3f352f9a2e0f7d54f9e6d36ff0e089579e191a7bc27ddf4beee0ad5122dec32d390ad8436ae4b1da7b6c5a662a163ccaad6be58dc11e70b983aeb9d60bac1957f8acd571ec3a217a247e833a37f0348e217df022d41cea6e81bb0197187a2533d6f72e9eb345782f5ef1f43b8d42d60005b82cf08c69a05facd60b4bebdfbdc3787c567d3b3e24c795fd5de3baa5731e78fb204c3ff494bdd42a3addfb855b3f7acb2b8fac4b7d26614de546cdb5ab854e541c938a68f42cefb3faa3799659fb26b3eafdad63cfcee7db6ff4ffcb5f89ae3d44f28de6eaa8073fc505364c78c9cb353724c37e10c05f82b7e8d7a8d73b8177f772ed7344be47e6d0cbbcd0b8625148fa7719397a5999332d7387fd1dc67fe77cc9178e9a77ea3b344741adff2d391a9877da2ff3ac81e7694e46cbb87447bdee2dbe8fded4ed8cbd2ec40b027d3759cedf1eb7cd7d0cfa19e4be78336a9f6dddead3720b937e99dff3f2edbc84c7cf33bd49d72a2f3d86d472a52ffd35c6e652b7d25e5ac220dfd56863eab3b572a8f2deb9253b8e1dfdb8d4f32df560597b0ccf31d0b59f9db8f6d2e3670cd53e65609fe8fcf06ed57259d3720b116d3ec6a31c0c631af90d7d96d6257407b41e9854b1aa1a7b8d6b4ecb5124b78ed690ce4ea8a7f885a9f73e8379510e2c13300ce40635c4e74d106f8972534203033a7dbb42a2372b6aee978efd79f1d1376eee7d8d7577926aac810bb6293bee00d63bd4ba661affbf73987f08a3cb5364991d3b6dda705c35c0ad432f4bc5e3fe40f32088fbd79e74d3323390b3a858c45b6ea6657cd697996aad58015fe1809a15dc03552eac390388d3a97951ee705ce00fb405fd60637055c113bce845cea0192711fb07267fc7cc025f043c00c710e00f0887eb2e6a4016700a587b8919d0dfa9ce53777c4791827b8f78e98a0701ef4fe1c9579a352a2707e700ba39c90bb089d055159ae3119033d0e0986afc1e7d5eb93ee0b82a39745a7239f293a4fe8dadaf4f71d1bdc9acee79e688af3ea3bef03b102baaef6f706dbcee9850fbeaf0182709afb409f463c28551678d63b2ef846b72922d3576428e05fa2daae3272f05dfa3bf8bbc106ff22cc742e7c42ab65163c977c08fe1f5b85cd3b4d3370e4ccd0fd5fa3d5763c03b8f17153bab18408d377e7754e8db9cfc0be80dba03ad83dcc8b4eac66389f3009d3f3dfec121c27396d66eae85f66b65cfcc19909f9dab73c26b43de8789cf5840cf14bc21e6f2ea3805f3fb326f3176e95f57d3bb176b29ce6908cdc09cba838b33d7c7e47dcc53837ad38ea5f35ab56ed28b8f7b01bdeff83dea3d96fecd35f137d08a6b88134d9e31bec7153944c879d5d8f2355f1b75ac8afb0bc6b5815a4554a0263b3dc729017827e4e8417fd1e6bccdf0bb35cfc5c47e84fd32a8f5ef559f6368cea04d6d01ccbd363b6b3d8147049e0e7dfe5023b1e5bdd0bc26f5fbf99cb02a755ec9776de0557b9cb2e65ba9b919aad8effafbcb9c3119e79721b68e3a0e755ef5f5120d8eefcc910fbaefe179c5f900b6a2d67399de8ca84f88c16ae8d4c43f09b3e34ba3ef4b6e8f212cc1752152d75d747ce206ba2169750ad5b5a126b6fe2ef76a3ce831435eb25a3fa04118aa79d6741a0d7eab75deb4bf76809aa4ae530ca66a5fbf1735e34bf236a0e3a9fdbda751775f7b1fc1ebdbb5aef1d6e7da24b4d1b5a7f72beec8950778ef3d7df327f7bea61fe23f8f4f4511c685ca0feb0f3d9cb5b7c219fffd4ffbb2097cd638bf38d63a9cbcca25af7da6d5f577ce75ef5d61fee5f18d3ff29856eb137a349d6f9b8a4d8da494e8cf8a4806d2cc6c72c8fafcb6a008ef337be5a1e7d44efbf3ca9f57f65dbcb6febf2f39567b7a770e88d11975bd908b7717f91906f12be77e88a33d0103616603e81b2f30066efb8feb988fe3acc309141d27a45978c93ff96e6005b47e9afa0e83be26f354e56bd0ae370a3b29d7cf229a5b215ea7e2c4ca84bf960f2fcbdebca0c7f1cfea3b3f7f5737b3026f99cab1a8f4fa73d4d71b6b935a2fb2b3768deec7791d6e641288a7ac1696c65282e775ed4db92cbb7144ae50d1f5e6acc721bc298f1218a9396afa729419c4d6bbb58c0b0378c16869d10341ad579b1715074d23788f0c3e633ce46abd31269be5b7b6fafbfdea501ccf5a4e8c932eb1cc485077a9853e8df517bea5cdbfe75baac7e1e2b5270cd78d4b9ff71c1f71bdd2efd1dc35f679a1c9b3f0961a5f77c6a69e75e1036fd4beaef96eb047deaa13e7ad7fc1b46a5c9be8cfbfb878bb1f46eda39518dfebd3dbf52968e85f3b3bc9965a9c2ac7955bc7d43580c174a1eb60c4243767cc91a7f58ca8d1ad73042924fc24d53e3af9b8ef8aba03b40fea10b81ba79156056f797234d625f5330a23d03a46cc71769a63bd7c16912cf9d8d579be7192253d3659f79c59c8c1a3d9119a3f46d5003734fea87f4bcf98d0af6a39741cf43b164e43dee34cf7608953823e02ea533bad87a8726cb7167101cff6ae07cef704058ef59f6a2f7dda3a2c37f9375fe3b6362ebc2ed478ca75af0ab5832ee7b5597373db1535c6d5fc30c218d81d685a76753651bad0a1957e61aa7c76a5e685ca53772a079a3c8b43d54ecb0c7e0ed48e14da8b61eec92170d0b58466896b5257ccb7c9f350b19bee1523bff7559c67ab39f56b6758ccdfd59c084e224a5e3a4d4c1917ceb48c5bf0f5a2ac904fbfa5cad9c3f15f78d7ee81bd833ebb6cdc463c890fbdc404aec35f7c96cabb19b3683dde5739f72b2e73cfb5fe983d4c8cd95362acc73fbf26feec9f630d1ab17507eb72d9e515e77546c50a67bc79920d16e8fd14163c57aeafebf9ba4f527a6cbe8e071eb51eb48e45cf7a568841e1e9e257d0a3416cab7db5880932b9566afc8bb717f07cd35e13a88da15f33ab236a2998d33241cd973d4e7710418b4dcddf3d351c1686b91a3a96c6113891e70f34b7138f5147df55f4e4406d31d3f5c68da0e7cde445682fbaee75f21e3e2fd09bfe7ffc77f4ac71fd34f3c317edc3f6995f4357e55cec6b446fe6ce7b6f70759d9cdb71fbf2df8adbd167dfa95c6ef92c174ead62a8c09b04a2bcb3447407fcf0345a069298a2baf30e9543d758784bcc7bf832f58c31f2f1a85cc6f34d6e6db62b6bd42cbfa6f6429f9e66218cc2fc37b5408c7f470b043cb4689fca54addfbeb1f0e015841efa141a1feb67f994d9d44f5031ff52bfb6773db15aa6a37f2d1f26e1ca9eef73e3cb7a9ef4c1fba935c280a624d76f03ba3eecef0c44dce1c3b52f1e74a3811bb592727eeb7a0772e858f2709eef3f22f0043b2cc8525dfb661ac967f806b6f31735a6169eeff0faabe73716fa41e30a185b592e03116d541ed4c5bd66185755e0c92b3cb95b476a7c96931739348c476fffa2fb89e8e93137f38f5a4ffa82378af6c4c742b37d497f90c6a9a599d9e8efc22b60f2a2f6d7053cc17bfbefbc1e935fb3fed4773c36c0469ff352ec4fa750f30e026f22e0c174a88c69347f063fe0c6de24ff626f621ee4dbf0808c76eaef08cdf032769272aeeb8f931b63d73d8233aae250fa6bb75ab7c6222e68f92c1fd06f31bbf11cb2ffe2bc7bdc7b6f4b5e5663f9bc4ce5bfbe64dcd39bd782ba9d459fc1bd08d90b6e17d0c1580bf8fb6ce975aee25cc4cf6a8c586a6c64061fcf34b60c3889a384167dacf565a8378538372e8017609fc581f75d9856c710f524d7611cbd8386af88962faff4edc1237307c463ee05f18a9d2ea85eb3fafa20daf34dbe9f6cd6e3afa9ebd84fdfa53885defe851aa1e224a2d133f8e10760581a620932adc12d585743edacab4d069db6b8430e20fdca23787dcfb87ea8cfdbb19f352d8b01bf77727e6fe817cd0ab5901cb875011e46d106dc6b1bcdafafe98fe03bea79e675c29cc2a74e8d1b68a93ff3f186c7d8173ba0c6cdd33716f07ddcdce54cc2d21e3505b5dc674e403da916fc03b536c0970d9e4f1571c9d011d17fd78ffd26befcffec2f056e5483f5c69e96be452d28f27f44a3f635350e47257d40809d31a7e58e315b09cf8f8a6b8c6f20c702ee451d6b60b186ecb717ec9b20560c1e1ea2e33d9cf18a58bfb68e0dcc5e39c718439d1c186e97fc9d28d3af019ef18ca7431d9ebe1836d7d4e0147a19f44a8917730df080884f07760a79285e474f6a62ccf56fdad23356ebca68ad94cc80ce35384b59e759e748d437f381f6e1ebfadceafb4ceaf7170dbd338a0e0f8fcffc753074ad3f83071de7bd8a5b472fe82f80eb92dcc9c619c0d347df6a6e4b575bac985fa9ebead29708384f78c0d71a37e9685f13f29ba973acf9c3f43e92edee08ecef58c00b58c52dd82b88c16b88732a2cede56d106ba77e07f05b0dc744f61931acf198ca7ffd8a077fd6e3b8f992b1470f9ea39a7feb52e5b18925e3c24cca44c5a82a566c165ef251bfd4b85d77b97b915bc3fa506773019dba7ae1ad89f579401dc5848eb099398f9e5f7d020fc958d993af595beb17633ae49fa8d821431d655abac66ae8582ace8727780b0f8842fac4be8868996a3c60bb20cfba40be005e0234318e12389925b55b0e05f464505b8d129d8f6c2c95f7c8a7cc503949cf6b6b6687dffbccfeeebfddd6fb5e07c0cfa979a4f105d368d33d6725e5fe4784d725cfd4ab9de07fdc93120b38bd7d662ebc79ffebf434ffbd1ed75fb98ed5c76745cd318bbad44121764523eeb35ab0f65c6bafa6936c815b37891dd07c0beca333b5aeb6097a51efd7d93e781ac6e4a81d5d6a5d3be3ca4facf3e9f04f62279a732ed8c66a1f30c9990a0af9949d3dc6ded4635bd432bce01432f61a1093c09e8f54f9cab6f363221f175cb8c671a40d8d2e9cb7c8cb751dec2ea047e644e3d9d7029af2f8df5cff2fbffa3df354aafcc6ee9b6b24d5f261623d3ec8fd7294b4cb8789f7f83029575f3467edb73605ece1e91a97a40e410b1c6e248ec286763531f4d4f7d43d7d6a7d06e417b4f01a8fa48a23dac0fb48e74f9cf9b41a2773c652bdd5ffa2def6e436fe6febdec41a5ee39fe9bfaf71a7c02ebcc317fe882e71b5cac54b7a0b06d02a134315d3cf54fc0f4f60f045a92574fd07ef76d66fa0e97b7e4ff7f76b074f2683f999df648d63116b84fca5b9f8fac1474dc7eac8abaa00313d30448d6878abfd5c3a2d9d46f31b989bc05391bec1c28b758d5d7b03b35f471d9f063e2886644ea06bdaf4f5169d470d79400dfc10872a7799b5e42ea0ced4929b455e7bde16e4bd2f5c27f036ba071fc07b19e716dc1fedbb0aaf13ac95f45503de3c473e428c55dee9e555c847178ec3dc057c607b5daa5868b3417ed4c64577ab35374c7a44aa3caf7f3c938f93667dd8b72b7b729759f2cf3a1d7ce3ebdec5aebb42633107e05ca9714ced255bdf6fa76512c17b3d12f0b8a657adf6dc563938ee0377666b4dab26807736f4ff8f3215ac17605cc5675d298c5b686c156a0c577ccf5d7b536f2a110ebd51f3225cb8f6af83c139a2f6a8a1634bf804a3768f7186787aa8e69d51ab79a8317ddd3c04af90b76aae08ea11c3231f353e83350e9fbc49f2a16a8d2d6cd8878037f9517392ab6984df54cb86bad032c9ea302d6ceadd21673b410b975e5286e65c99bf0e86cdf53538c954af03f8bcf874f6c1e2fd3629fdc1a3e7d7579f89f56f1ae9b507fe71f151d8bf8f17fe5ba1d62c9b1c34d608d83f09c843446ce3d4e1f8633de969b953f3b7d51a31fa33e0e988bc678a399d9f441b68de9dd31257052e5cd3f1aca6a5e8ddc75f3fdc71de7fc579dc475369eb36f01e557b1cf6c7f3fd5a3c094363f5aaeb3faccfdc138f22ba8b04eac5c15963418f4d0b7e9391ae51b705c779ea1bd372e7b056875bed63a462cf98b52d789afa1cdbeda654e36c5a62afb1e9033ab351938a8a02dc4bbbc3a2b236424f0ea325af72061d80bcf3256bdcf62a9e3118cfbcf6ebf8b53306d3d26ff91dd085d0fea3b993456a0dbb3ee682f1b25119678c6f24b14f851eeb79a1d7d5f350733bc287ec41c5cdd4ea9743c721463867dd314a36d0f22bf1fb70abfbe6a85de2fb88bdba3aae1c984dd620a997213c9fdf85f8241e90238175c7d05e70d7e799dfd9eaef6cafbf535f177d8c8ca9d69b50ad856a5dd5b77a2f36e84da07eeba6ef5e6c670f77c1ca9efcfef535f3d53e7d6e4bf704e0f529a2e445a8b1b6708df5d66817d4ce6b16f0f6da5b2a468fa2a046ad29e29e27ef33f5ba6a5d4e9e510f7fc8da08dafdbdfd6a2ed7edf0f3b41e8f5e665acfe64baebfbdfd21261e70d7d45e2e2ef7fde66fe51f235183e7bd7575afaff34fda945cab911b694daadd91b17b77df7518cf33b6877e15e27edcc7ffd1c388fc169e49697164ed6a6ea93d7f7589f5c0170dbcb9605ce71b8ccb727a26a5851e8f9f32b6d2e5c317ddcb7b73f2a0c3041d2a6a88a9d871f43c8d24b1b3e5e845e2faee068f43037b5de04941edc4dde0d193a988e6cf629f758f45b8705bb5a7d31bfa3ff0d97d633b6b542587a4598ff76596d6df359fbfe05beb7eb3f351bf996bcaf59f718e01a7915fbdee2f031f003c5448fd61837da9e2c8ba805a73366d77bf5b4f90e740e7dbedd624d413026f03bf73952b46883599cb08e0ecf781884696f48b4152ee7fac22bf0ee009382b3aee12bddb7c73e1f9ed7a6b4083b0372edc5effcebfe858eac1adab90f33d65cdb454f9c31953429d8d28a636db02f9401db7f129a46782f67e8c0be4d1fbac59a86b941666a2f2fbb850ebcb206b03d4f890d3224f28d43861cd67a162f918fc51c4bfc034eceac0938188d6a9b4d4674da8aff2d0a3070b1d058c3d1b7efdc00ea8dc625deabcfe24a0a3034d57d63155ae1e17b51c65f6b43c6b36403f288c32682193139b436b47ec903b57217c64708bbc22443d24b1c2a1ca972a9e87c638515309bcc58a398b4bcf767a0cabf36a45f0edcfa11f24a16b04dcc6206b9c5636e04c38e110353bd6f7cb78f0887a4c5276ba4682b537ad81b2b3f5ef7e99963b602ba4f7ca6fb8d37951797dd3693dab1840829be1e0f78954732f539c4b9bfe9dc835d46b9c3051e74cd73bca021ed5d4ab324ef241c518c02898eabc48d41d8a9a7e6dd0ff34a1a1d9731ff9950eca595a7fcdb8a21fc7ca81cf5c34b78451b4ec432796b0809f55790530892aaf54b9c7a3e79b8cf596f083a0de4ddf7578dfaec7c93179b8db650ff3fd97bd4e2afe3b7c767ee15b2b6f76849f8a99b58cddf64138ae8cc083e7c6510037bfb4c0e9d13c8b69e9b6575ae75652fec735d6a9e9c171a5e2ca5458d00b1e2cbc0dc617304e91af7e833a4695db3ecb27adc16e146d52cef8dc5ee5b6b7b9c91f636536b771e0e94d1c78aff19c8c47db241db4cbb4de67f67cff457945bdf4de036faf72051bba358c33cfbad28238a56a1a6dd46b3ef022fe7dc45ea4bd35e1e7044d88e2d8e92c9f3f7bebeafc74f47e1c3ffda6e7b1551cc3fbcc7af4fceaaf7d8be7afb5ae910725384e7d0cf0d21369770c49f79c091d6ca330e9018a7ccebac595baf884bac7f0bd2fb88aa5dfea6dbfd7e0eeb75fc659fa3535c1548eb5fa7fd22f7b1908333389d99b3f8757fad27dd6a9d53849d57af225f7db7e384d7be1ed3fda63aa0ff098b779b0b7f71878fbaccb491026d9405d576a1fb9d6c5234efb3d5257093e8ef45853eb1cf41906e7d73efdd6ba49ddfb3aff617874f17b1ef89c8ad9df7c8704d7e50dd7f3bc7f5fefe9fa1ce0385efd5e57afa9134be50302b8b6c412d1dd33d6f3beebd183fcd7978d0bfbc5ef2a077422cfafb496ab352d97d4c4298121d71e1a1ddecba7bf217a4becb14f23bf8a3acdf76843fe35742de393f0e625753863fbacf1891c941a23cc6ba97ddbf924a0e67c2f8ebad6ac1e1f750dda999e7d137cf4f8a0875d02976351f71dbdc486befe3383c73cbf0bb17eeeb497bb5b7d46bdab1bd321f47bd9b787461075b3750f2dd37abf7dfd88e7fb5ff7f3c5ca9e6fd6e324c9bf6e4c78fc9bcff5a8dfb8c66a68b481070fcb5a5845039dc043857e30d7516026eb699958d32879d1b8a74152e62719576adcab316eaa3c438db58eefb1069f6584be36d670f67207184b46c571b4706a6167edb4cc8dc89bb14f1cc9cf1c1fe8813ca672b3fa1e27ff789c486820b926b9eb8908d9bb22e733adb81797936789fb2eee8bad5347a839e566e0257a2dcc9ac05ba30f22b71c0b72eb38e06f1d500fb7e53df6d0468cab764a0d5583fb9fcaabd578fbccf1b1ffb3da8d4e4babde2fc73fedd5d7ed9fff0f8c11b7110f19f7c97175bcf64299463bb5060c3a1def2b4e2e9e231e642fe045d96685284781000fc3afa9b15e9ca4b77981ef11f73f43ad41f414f735970efb9ddaab0c60c9f05e5f6bf467c46ec6954dec5d7e0aa3a008a175ad8e019e79d8bf42e4091931988d53a1164bde97312d0b7a739533eac00f2fcf89f23f332ed70feeffaafcf153734a751ddbac08d36bef1bff1892bf39b88c9dd7e311e3155c5f1f5e3ca29cb3a7afc636b4a00ac6576abd4a2b8e47f4e8805bae438ecd5ae39dd5d815d4bf57e3256889fd54f166305875de5891dfe9ee6b4ee1cce118c7daaad6cf5348bf6c5bec2a9398e3ecc49a32d6d0069a891c9ff43ae89dd726ce7a34f9b356f33ffd799a7faf91bdb0488117542b4f1ca9c73c0fe443560ba36857da5b47c20791b156b7ee4ccbbda5c6d40adeb6b3936c13f045b48f287a3dfcbf8ab39c01b85365017f72f51a7a48398e3433e0f5220f3878c4747d73c9e5c3c6880f3f8dec418d9d41a8cef397cc2bfb69ac424f809edc52ebcdab9c5f5ad08304e68c3c04b1709c472f79612dc469105fa9ebbc45fcd576f117f91fbef126feba68984297409c426847de3db38f481e3962f0deebc2669f3dccf7df9a051f70d16c7a5625a50cc27b68daa4c2288c75e93bba364f5f2b78c177f727ba8ff35b222e360aebba26a572ee4eb34dd7aa2bf08ff7997da95bb9b51843ebdb04f62c9aff5845b3e3b98e7528cef570f4b96e3d77f9bcbe63c45ca5137f65af4f91b53c7cd79c6ec6cc2db4bdaffdbdc1eb01b740730826c0a20a2f801e8384ff948a5302fae640ffc2a05641abd6945b75726a29a87842223f87bf6f05dd62fab419c4493b36b84f43faba9cb5744af902ad1deddb9b696f5ed166d0c39d9685c59a1478901ff502a95778a8541ca5f1d5c2d0da18c6c2936a6cbf88c6b01fbd3df50bd5d8a5b746ad35ecfbe2e0e2c7fbe498ede67fd696f365d7aecf8da1e342188595c1b34814ecabc486e6c3391c2bd0c9691957e42741cffa2a04374f8f4d78b6f9e0d469bdf8b77d706b5a0aad991c93b3409fa59368b5bebcae99ca76a73d059d4aee2acd710ada95c7bc8dba50ea7dd9911c9ad88107d516387fe4027fdd239a682d74f8dbb6da23a3967ed14227c0134769158375895e037d09b1dec277a36f1ef8bc4ecd6df270f77f9687e5ddeafe6b6a06f4e2d495a3e7f035ef0d3e58d4bf99919f052d1ab799467a3caa35935cd19aba3039fcb8301eb746730b6bf108df613526d5ba6970dd2cdd167e8407e8c843279cfe6ff940e3dbf4daa9c6ba6f079e4fbd6f60f0e2c1accd4fd4d6c65a6cb3b61117b271071ff4c3e0cf11a69541cf4e352ee75a23e7ee397cc81ad670d7e87ffdd29800ac99bba23efb2af51e8fffbbea10ff74bd0c8959507ba443cea7afbde162ad5d6670bdf4e811a7f774684ad3f3c0878f9eecc6698b7df1d65aa5b53d472a5f30911b62acd31b8e3a4db39a7e8f06748dba3e902026985a03c051c64e00bdbe3d7c81c516785133206fc9e038c59e7c13f7112e5cd431443b3b5eaf9762acd648c42f853488498e22bf0853c4c2cdc2ebdd0bc2d8cccda4fa5f589be8c367b46efa6fc785392d8b66358447704b0eaa4bff490beb5dcbf50e7cf8011eabb8c0af4c7a95ba851a63cc41e71ed7bf983d4ed42ae2013caa9f328b385657eb955d719651334e9ea5ca79e1b319e8351e7a226d88fb82b5b1b46aa66540aff8725f6aef5768cbe238db4ceb20c466522ed18360df550ae0a4b7d0cf6e1268988d5e2ede21bb3642dc91a9715b8b7bf539e08691c78b9c3a3bc956fbb29e3517627a8452775d1d1fb50db7acf5d13732d7fb854f9f7b6a1a98e0348fb567f2a2f351f60b914243159eb2e06c369d976b7012d006764f02be60821a2bad3885e38a3152c75344bf7667640d3415e82d092fcfccbc5a132cfc267a3bd3e3e59a238e9c047d1ccd45cf755f7707ee7288efcfa965b72b6a790fffd436421fdd75024fcdf7a05997f149b6bdf7a4dfab34419ef99d53bec13134ee455bfeecdbe136d9d9aff3cc41d59e3eaecdd83db6c83941ac044f50faf5824faff92cef3f376faef02d8c89e0e923747e48afe658eb68c6e4d146f4fc955b7aa78a76767e9dfaaebc3174ec8eb5c7a4b7f0fa857b9cce0d0e6acf8c4fd0095473aa15f41fa63fde5b9f8bf6da6fe48c2b53711fe613f40b5ae8896ce15f5a490b5c658bdf9978fc4d2aef1616f87ff89d6a5cefbbbdf9e231fa24ae3cb430a72f73b6d51ed5ea9c40c791ba008801a24cfbf0d2d39a7c45fcf696790c38103847f4a2898115913bbfd6bebcb6e634d7e102e3e02dd6a8bdc217f59e83f9bdbc5b1de6493e46afbdfd9e8bafe6a21d7841f5e8cd6ff9aebc1a8ff06dde1ab5ae07feffecbddb72e2c8f23dfc4a42121dd19718092c822a7d800e1677063a04026cc7df303a3cfd17b9320bb01bcf9e6979f6afc79b0b07188410aaaaac3cac5c2b107ec18a6def16369939ac02ae3b623fc96dceeb2e738a6bc19b5eac8a33f74f66c9fbf80c6388960e6c7cac2ae1576ea47708dc57342f96cd127c183ccf9762eb13d93bef3cd135113e56f0d6378137a1cf5a71a32edec3f3aeecf3c247e0b326762dda95e04a9a1c754ab1bf2ef09ba073de13ce5de865e7e00141fc95a0360b1e9c8d5b29abac55bfe782439aaebbd0869ff7755c64c26db052e4b3855c936e58439e8fd3d058cf1ad64d59916fda0dbc39388af9bbe77c3e1bfb38b4a6c38862af6dce9a2b5b8bf991c89fcee8b89a35adb716ebb5b4e5d999fe917d5deefacff4691be0e0a369aab9f706319d1eb21fa2b67ff69a6fff84f9466e9d7bfe910fef638d96d0d8fa446cf8c29eae7fccbeecf8b6c10ca3d69514036075d536779362004ebc9997bcedab33bd2a272eb35ef92bfa29061bae19436c496e8fe6017d67aa53cc9bfac796b9601f3df0ce3aede740f5fa25f7cd76fd589d00da14828d40df336bef91cfc5bc0ce063702fb818a477fa122bcb7a1001cd05f0c52bd69807a622eb8ea3eca09f94799eeb8d65071eb81ded70d6a3e707f37c2cfa79d090dcfb1de61589993b9c796b0e7ae6da3ac92c8a4927b846ecb115c7723978c2d1ef8bef8c3bcc771de71af996a5c598c95e7712f17935b4a330a72b7c6feb9adcf74e66afef96f75f3397d78e6398f5d5281ee6782860cc7401fe36f07a71ef367cb00e7392fb35e76303e6522a7a8cbff19634173acc2d6675c645d208cf18fc2079de39fb463efb20e46bd4c045825729f47636b8fff6e088af58b3147312f115c5f09c5fb0249e8f1bd11c2b99a7de3af52f73cf73667a9ecb50f430b2dab5547daaf935b41618a71d1f75b17bd61bb7c9f89a4aceaf83b70dba45cccf98398b3e73c6eb66508c8b80b926a1118beb969a4b56a38ec9b878e15d755d9d921f853c8523fdcf0de749685d99dc7a8fe22170202aee8d167f367319eb1ed3bd4ac90fe6bc56e0e23a680c8af880fb5fa0dffe48e302dee799eb305ffd44386bc9ff9c1cd1734e7f35383a91cbffb1b55ce6de93fc0838eac0f7d6d1b02b31381ee16f3fa84672bd1d2d7dfcf49e70bd5de4b072e6f3dcb8961e201fb6667e38708e0a77569cabfb0c733283df1a1cc4af05be125c73986fad6b4e7fac1ebe669f5a3bdc0ef8ddb9f7b0601f3124ff113a0a168d95e8ee536c96e5c0490f0d063ab067de2a05dff88c71a406d783da79ed3aba4f768531cf2a9ae4616a6af7278dd45c3da94bddd5fc1ccb07f927c6f27596eaff37b1d7ebc57e75d3cbbaea938277d61a17db662135648e670777c80dd1f8c923fb03f43b599f1d9c2f9b4b1fa5e72e6bc335c57e0ad92ddd070f44831c50841c6dae6bcba1ef5c1514678ebc90f5306cc63167c030ab9a7c15d182672dea9aed38f9343d7bd95cfa31867b3b43accdf6cb674c61731dbf3d69c01dd191bea10a3823e4b7fcf3f76ecc7eb3ec06d0dce859cbdae23db4d91e74dfb2241fe5326f76c0bfdff373d6f2c96dfcc6688a9c3ac7ff3ecd7797f9905de7c4557c816d593667df9e6dff12f5338efdf3835c53cd7c2783761c6243d6eba7fb84de1568a304cca91b29aee5b5e4e74eee47ebc5937ecd1ea65f33b7dd5a6f2c7798cba4273aebb1c539655f6a9fbd661219fe25ff9cb7f6c021094d9e99e73b49317d1e47ab9462cb55815ef98af9b6d037e04c1a9f7364a64ed4878fd4e57e962de3b59b987579a03fe4365c3755b9e0cb6d5e836b8a618b1397346bc938ccf1e383033a341c9dfbf270e19bd5ecb3ed5ec98764cd2c1ff51ff82e1c2b58cc25c31acb8f7d4bf4ea03e829ca1c6d1e3de08619cfce3ae4e0bca4d896738fa861390b5c5f801aaeb24ab2798c7bb173e6a06e8b1bbd1fed16fbe9cb62bf022ef036bfaf72d3b9c072337730c51dc2ed44f1400ebb1a311650b8c6691f9abf929d17bb4bb6936c5b1dc665cd1cb599fdd8b7da72ffc4cb7d729c93bf60cd5fb387af894b6ac7611018ec98f0866ad62679c81a70cb7cdefaf9ca7dafbf8ea7ddf46c593bf9e5dae1583a870f02fd5aeeef225b0a1f271c969cdfe9f7a041a66acb1e17413712bdb8a4983f8fa3d6b9fcfa8be67a5be9c9a86d6e7dc4f9110edb6bcf9eb8dea2558adcff5376caa3fd2276a6e29efa98f9d93cad44cfe595ff07f753475bc04075385610be7f4f2bd1eb17cd08ffa85bebc4d17ed9ddcdfddd31da7fff9a18fb767baa13783ad0f69f6af2532c5f2da0b5d1a3e3ff14c34eb1bc46cf8def46e8b159a33e002da4d6fe7f522ff6c976967e5d7cfaaf63d197b9b272e7c25eb04603f94a9c2baf234f38766bab09686c3a1ff0a8b5f38592c5d35d27db572f4b7bfd5579c97e799c806d06decfaf23682560afb55983675b218f10f946bfb30ebc51a145d786f513dec5e2c89123076cb3cfbb6d8c86013ec7fc9f968676c7c486d6a847b1977944fc5773ff89126d06ff827f1739988a394da01deaea0db0ddd6b8406ee5c87a2bdba36e02cee7a42647223976f4ddc6dc772b7993536f315e43cda9f363cf1ca0ac07db133dd8407ac857e067e13ee46d65b03cd0613f73b408aff0859ec49ef3120a7ab2f85d5dd15ab159b769a0804944ef0f3e7f643ed5bc5a40eb58b9813ce2be32cf0dc78635b4691b8a5f23d447984b54f635ae15b05e43cd3843d63e39696acf0c3f4e00aca742bf90efe2ba8a986b66b18f1c97e08e1b53c7d5325e3c1ffc0b1d25d4fecc78711d013510e8d2943c0ffcd66b5c704dfee3835e67fbeab6ce7ff6df8e21b8a5f53aecbb2ecd7ff32818c36a5c28ee778786b78fda18d6aaad909f1b17cb0a3854bcb73578a546b15e7cc3b5970c38e2d09bde21c78679d2b32fd6472703f6dd373acca899221f0f0d501f3db77a9759ccff171c5533f7e01736c01336f0ebfac0ec37ac0fc0bc98e0a3608d2fe025751f5c4d15788d30cf51ebb1f4c38b56919f6b27ab442730bfc08eb8a209d219175925bdc077213444546e1ecff630a8b2689b9bdaef38da1e0cf79946cf1dd638f70722b7ea3ac037d55613fd8db58ddec10db89cec08f717396c5b5bbedc5fbaa799689cc4ac6585fc746e733e6a926bf84ba807d6b216a1fba41a9f73d1d0304b5afab849391f0eacf92d7e7aaf8f9e87f75967c13550e048d12b0eff48f2eb5caf2ec32473679e5fb1be4daf4e0afdfa862bc2a739b26d74dd338f677e301b1c2dc0d52a6f9b87697e60bbac585bbc168ef168996b471da4a6608da3e5816ba0788e5a46d648ed14f32873a55e809e3f60ec0c67c1b035b626590e5775967ed13c7abb3c49c57de9dc7f1ede8bedaadd6e9864e0824d8a25388215c7b116edb9783fcddbf6e0a6f387d1cb7cbf13fdd1af59776ead41016eb5c4d6586731e3c46beeb7557dec6b5ddea7808147cf23b88ca20c7b5238b32ab5cbc84feb8ec103801c45c1da9d716d74b9c8de87d037df720d8bb1fb15e35f8063211fd71947f4be4ef5c66d384e86ee9fc3fbc02055d1e0db62c698e590fee292fce666e14d72cd5c8697fe72cdda15dc23f969f3e9e69fbdf3cf14ea5421b88c7a471da15e5c2fd07f0ffc8ce81b422bb666beb689e9c5e238813ed3776de9cdb2c95f833f5e20a603b7a54e4bf44a53ac10919fcedff90a6c0b7c11f4c636ccddb5442c08fd840debd0620e6d50cb60df107b067321e98dd1aaa579b695cf321712f7c32abe167c17c552c01735dcbf08eea557e8ed2206734bf8a7dcbb5171dfa47f0c695ea2bf7d42dfc17d925c47eeb20644c6be13fbabce78e6bae393bee59635f3c0e189bd17ba618a6beb82cbc2b95cf845fc1e7a85a5978bae033d5238067d39197ab322d31b17a19627da9213177d2933c494d2370adcbc3917fcc2105831857e68705ad16f823f4cbf09f57f97714f39f42543cc09d709b91f4738492d7e2f828e888d5e50d81efa2da871d2f7893e2ee242e8e0e1b71439f426e8778816268fa7f82632362d6c648f3162e871489867b239718f4a6c78ee37605f057b1c8d9b837e1ac41c6c97c2879679bbb3b652b41c562fabaf698b5a62f4fde6d15bdb6a9b378ccb05ff763df3b4e168e75abcc37c3717c792cf02bee8c7be6525c5ea590f4d0ff4da56d1f4391c649db6fb08ee71bada2df6d3f597f419dbe5d1bbf047fcdc4a8ae4594509f3b9dc67d6cc9bda5ca74980b7a131035e917c963e3482d1631c7803f6677eee71adb4ade4f84bbdf301d778a0976e893eba45af0b5eff0e5a1b8c4dea1d44331d1aeaab62ce9c21d0e2611df5c01b3cab6855c8f1b9e273d263b5da58d77ba25bdb05f24707f5723fe87ec939d58effc8a1353df376a9b6731bdc7558d31a6b5a75902f3de87eaf9c792b7e2dba4bf50338623ba8af9be33e63eddb837ae124cd3c2dbf644cd2020b9b6b1b9c0de5cc1ba5da793980af6e9f576a9075646cc05342e3781a53e7e510ce68ff98dadc333f4d5be3e3702ff51f8bfbe4f045f91e7edd27aa7b9d55e15b8f9eef2645827d548beebadae61d707bd76ea31c685ee03d5a5b8f880554f3ee7d0d7f3b5a813f50353ad5565e850f9fa0978131bcf5be5deddf9ff5aad00727dfb38226f188b9b3a335f65ed66cf43b0bda9b3e719f0dd38ff659ffa0cfd793b6c63061ecd7bb2c9d7e5dfe86567ed6245711f95773ee05bfcf6ae32bbf7f0dba4ed13c0d63b2cdc2e1082e49dfa6f5ff3963b53b4ebe688eeed7c748e567bfd4ac39ffa0d2bc469faaaf6ad6caf773e965c773d6841ea5e8f7a87bb5e23ee4eacc879771ad19b9949ed165380846eab4cecffee9e05b843e03e993dde775c67d4b257ddfb89874700d0ff2bd8297d245c6bdf0a843a9837244bbabb8333ef3413e0b5f5a34b39ed55ec935f6728eb1e977d1e7dfe878212f801c81700e0b2ebfe6de27ab925a147359db064b93bbe8fb6a7cae0f9bfc063868e871d5d06b21f0d1b075b5b64aae51353be1e1012f256bab802b1b7c271673ce30578e6e82a36ac0158f3e2ce9fd7ae5de3cba06b751cc6162eb995bebbac7dfe520cf04eecd003d7081b3f0a0f9ef864325bd594aee196a90ac13d368d11a0b8ef8adc85169e61529f42be7c754b32a2647fdf442bfd5a6ff232f3f2aaec775b07fa3e72380967818658c6f343c5b74afb19ff7a047b8e85bcc4be0a09f03ba86c88b3899352e5a7368c2578e86bbe68be6383ed7ff126d2a9d8057577834ce3cbe332fe158967978032dda52e8233ae952818b80edbb7ffd35f86ed15d7bde5ed8e6ce1ff3fbe4f5566ffdcfe3aba22cd7ac5dd2a84ee6cc3cbfbb2aa634ce1dc63edc9dfd673b6f78ad53ac941f55a372ed40dfe4f4de8fad4536c4613f0f9f23bf8fe260733eceb5b09f6e19df5ddeb7e4fd807c47f039e3b84f98139d41e7f1c6e17c25a799485e629dea386fcee324bc11a731079f8419233327de8ce569efb4cdb865b4b629e6b2d8df9b3f8fa3fca88b9589c5accfb0e5b1bddbced3d17a798ba7dfaef74dcf5a15d0392a139a27b0cbe8d5b231461bb79314f3401577e819d7cecb01988a59af9e7941b92a021aab67bcf6c03d98da79d1badfb31f45534b913f3fc86ce0326aaebb310f04d912fa5edf7d84cfd0164383b516adee47bb2cb56efefc7b7fdec9d0df794563f4031e99d5351e9940a757b59f8d4e6d39f312c9954f6d685dcd7a95826fe05b2b68827c86ad5eede6e9eb6d8cdfe6304bf4f30f3fd2e6beca495ee9fd556d6efb2aa67c6b016b37f3a6a9de33c7ed8fbd65b3bdff0fafb5b5e30ffa25dbef5e1f1fa6ddc89eefbfe43efd91eefb5f7dad953efc7c0dae861a3dc08667d165ad9d58b8ee328bdfc7a3603703835daed4fe52876a5030261bf570e0a3b5879e4f473073cca912694f153eb88398d7b657e9ba67313e63ca7c7fe0f4a43d62d21d17d00fb5d14f6c9795a9bfeb22f1a0af5664b9dea0c7b8a2ef571be60e083cf0e356cc73e21f1578eed0cb5cab5431b734f39a94c084cf7aa73abe2ad6afc0ee4183aae764b55b82efb299188e753c8207c35215ebd76c81d7656d803cd71ce33a9c03c0efe1581db948706156c89b6c105b37e32277c09f59e4ccd7e4fbe88b466c8fb89bf9889587189ff65a0fdcb43570c16e08ec922f182abfcb3aaa81f41a6cdd31f016d0a8a8c187cb5c3135f77105f925f63f32af6d904fa57b5031de60f56d119d38145fd167cddc0c1573dc4ce81e085e02f6a5c2efdbfbcc338cfb8479065f037389f3b425b84a81ffc8e51c7e23787dc6c40c69ec973cf64db2d6c0f04c8e5ab0f563e67eac18974cf38cee8779c47db3c74580d754347dc53d29b62eeb40e4d0c455335770c5c15137f15135eb6b6be410f65d97b9129262cc9cc216f7272c6bc6a0a247a2cb3c1071fbfcc4852dfcb276f09fb465b142ef3fad49d19603963e64dbc33d90c0f9825b1efc551497845e00deab09fa6496b97c07f3974541ae11c38c3cb65f3467d4c9a6f11ac59cff708d2e9b2de703e533c025d2bafed83e32e763fad37a2a03cffc7fe25baa54dfea2ca2de4131df9615f67bdc2bc46bba96e7d6b848a290fb95980b851e9f146ba2809b0b184b702cc48d2f5ac9cb1cf7a0752cfefd25b393ff6fb54fea2fbdcfb7e05018174b1bb8d866ce3d27ac856d4333847dbcc6f424e928671c590deea6138f3270eac84b831f069cb3ac5f6c815f17730d79f3de51d1d8eed10f664bdf559335017ac5c8aef1beb8945cf596751e692f8ee6afc00972eedfca1a75d4cde420fcb80d7a63a2adc1f075c6115ff78fadd5e5fe61e88a431795f944e2268bd4318c96c054f2a3f064e218b1af5bf47c54dc933557ac6d1ac87e8a6bb6d55675d82fc1fed561fec220273fe7ccf7d3337c3fdc3bdf373ae6e08b3f027fba612e7e5d8c5e75df853680f655c5fc5758e7888b4c7f0c73ab2405ef0b4be17e444de410f6291e1f993a58017eb846b8f467ae333e61247b35eb1c2e1beeebbde8478bcbcbdffe8d623f15ed0ae18b731887aac86fcb35b89a8323dbb058e64e005e25c1a5d9e368cd3ed88c6cc505c7b8071e3ad3b7685dde07e618079737fb01f09daca3ee9b6382a38ada6a63acd6aba17e8e8603ebab62ecdbed81238ffd50a3791f732f25dbf16b3c501da3771f37e015e2e3373da9cffae41bc9dcea191ed22e7a4bef95790ecdfec0cb2f7b190fe639ebfdbf1cb08f443a50d1c0d6fb92d6211d5f8f0bd696e07d886cd3aa3d9ec6deed1f13fadc749739d3dd7ca0695e945f725f69d5338398a7c3bc20e49368604fc361598f0bf80b0df7362d0d6ebd61ed6a051d0ef0273137bad151602d15de233aba0fbf9af1ed35d704590f3060be74f4d6fa16c71539ef3fd00c0cb8c70b3a2274cc12bdc4b467e8cd39f7ff2bfcf5cc8d497edd5a725daa423c84ef644e155caf4dbee3c4c11ce647e1afc4b5b25f66ab92f75bc44edc434071de063d2d52f38c59dbeb3e3ba09f71e3365c3745cea66bfabb913b2fb04f3ae189ab353bead63c88ab3f96fbc3ff37df675fd25eb6eb4902773af65fc497fb926c2872dfba766de9773d694e708fc6a556d5f4ccd7027d82fc52670df806e65286f6e591fb04b6dc77524c15be7fe6da096a674afa58732bf284c383d717fa36026f7ecaf3f1be8c63f87a4e3c1101f67dc9f9491fca29e7dba1f32cf87fe9ef47ce4699bedbd0a3eb003f5b1a0ef39a8ff711c7cc5af3b1f23c3436fa4bdae2763e3e8d71aa87f98131353c16e17d5601e3b6cbdc19623f9ffd44990734bea7717ea26325df2ff3d168dacc4c5e2d624ea2316251cce3d771015c47759ee7b0cd1c2344db83dae756025d26eb34af8cd60cb440ae5f0b7e43fb39f33573feed38d97aa8cfeb4166fd896d7a33de419fc71b7581333fd5257790cb71c6b61b78234536223ccf253ab7d16ea458e572cccff3ec635bf96d31bba80fb0cd6d3b37ba4b7be7fc48975f727eb4eb69d1814e7daef7f47b25c61ff5a0e9a5ce848ce5073c64ef3eff4e4f426a7b866bd37266de8af13f8cd7398ca349aefddc615ccfbc3586274dbf7756f7c9669ee85df6302a1e87c976baff5e7fd97de4736b3d0ee7ef7deb917c72e8fc04c82d68db27ff9d6277f3c81c09cc036f8d8b005847e115aac7c5b6825fcabad9d0255e825b30ce953cb276d3e8557abb2dceb703f761233f70ca390aa70aeb4dd0ffc2478d47a9356588279047d8960ef7ea922f3358eb8d6be966929b47e6f40087d04138fc6b4d3e949381ab85eb0be0bb363c88dd05eb0876c7515b2cc2cb1f0bbb33faa2fd1bed382cb9f71a730f9c3933b746ceb158ddf1d8f9b979e431f4edc0db4a6f36cf27fceea8d7e53c06f61f9be7aad1998dbbac9b205c8576094d4855ac6de83a7ae0c4e9823fb6ef5ae18cf6b7f220bdc3dc93b5e995d032e61a5eaeb99e48be356a7b3a51b28ee23cc46f8af938e6e7a9984b39965ef12dde0be5b7ffd85bb4669c99b7a3fdd759158367f691066c37775917bc3aedea448f0bfbfb81e6e497b58b2df477786ca6cfe399eb84d02e085013d5166ca02336d039d940e61680a68d998bc217034d57c65164bc77d6c070838355f7a1110f8e4c6383c27b63834ef6a71c1793ee7b1b247e927731a73a5c4782360fae279639caf5f918f3145c3562e365ed98b97b312f29a658e6619a7756c520689b679ba4d3ed24ad7674ccbfc2073bcf8592ef5550d1e3599f3cef0626f63ef1246cbbcb86e3a08bf7d9674e912bea32d74c90ebbd929a08c5f5d0cbb068ccf44326fe11f055724c807c0f3473a28431cf7db7c3b568253983f8a4578b9cc143263cee4bd6f105ef03cd8f2578fa30e60f99bd30fe5e9a57e17d7660cd5eab36fdc0aa86f660cd7c01d95145b168fb64c7d0d3a9e8227fa8971b457e231cf0b6b2d0dffeac9cac79f446f638d2cfa7de89b6f3eb21b116d674b71826379eac9f725771ae18a3cdbc85d1e0791c25afd09588d17ff3cceb9df652f4923812eb35ba762bd65d09bac07c3f65c249f81e2748f36f4d7b7417da5df2c87b74d0049e6fe6932bfc580df363590ef6d3bae7b04610f4761bf2c958377910e801c510ebb31614cd37c6df38e34881674d6f2cd40375c35c3fc0216e5c47439b3a669da8be45eba731cf032f3ef09ac0faca797d99e7f47ed2e29e676c57b7e03f47df8a68661db907085c1de0e06d6b5ba70fa37ae18cfe65f9b20b4e69da7752eeb1243b21f1e3211cd26bf367c498cecb41f63d6898e8fa230d93256a56a1d864e5ab8a75847bb5fc5dfe5fa9ddf9fdf3de39fac635b2a0949a567d51d3722f6a5aee4f35adfe454dab7faa697dc2f8fe4b6a983fd7187f5d6f66f0666c0c8e18fda1324f9ecf7aa5539e2736e64cbbf82ceefeb11aeef68fa95ec36fdeee0ef0a58783e3bfa4e7eb1d4f909f0323e40dce185fefaddfc2becaaee1d7ac8bf739cfc77d365bf70773c0db8cef0037e61bfbb92a568176b283b64f5a41f91b7bfbc0dc36c0c2c16fe0fa8466bea8ca68c7ade87aa39507be22d668460ca56bf00bc3cf5d15f357c395ffe8f9ee6a63550bce3f199da7e6a4a3dc6407cd1a821dc945b8aa93496f66de8ccfdf7ff66184d394ed10e617e3a9f6275bd51aa3b0dc775f16fbd5dd221dedfe25fd276f78faa0d119432b077d9a619c93bd7422e1e60ba31df3f96d4bf8d08f5e201a3d662d4f4fbdbb2bd602973e9f91ad8778ad6d8fcf43f6303a3ea6dda77fdbbef8f67e05e8a556b47ea2e0a06cf41b1fa46f92638221bfa679beb69b9b915fcebea60e5e0b9f6e9b2b2bef7ca4d7a1ff56ffccc73accd0e8f0f3ce6a63b9e32279564946fe11c5536918e71de69f42ff4cdb3c1bf9a19da4d80538df1edf61b30f9c286530ef5112a868c71c73641fa18dd5a33d01186bc6e399e3461ff14b5957f9a5e2bc2b7b01faf659f36e02ed3bf5809a558ecf985efe59af92fc98857b83bd42072abaa378b2e59c1f8ce361d5f9a2fa8fbffdbc0ffb6e87e75492325fd2c0a6f165fef201c63a41fff180b90be3bc0a93ac7ab326366ee7d7f37e4bced5c57997d604ad4333c7c4efa91053c625e337396ec11a101d830ee251f277665663d607dbefd35a7b66df22b3675edbbea7b8bad9e8ff9bb92ab5cd8ed436ad5f9f73b99973951a645d7089cd5c3aaff89f8af30832efc0c921c76bbb3c98b91679be137832b7c0074a8f31cfc584ceebd7a2fbdc922b2eae679dbbd7d583fa77c4a3fff55afa47fd95d3ebfd95c3abfd95d7357b50e7cd8f3a050e966c614936866225cc8707c441474dfec230a73d97ec17eddda98a7617f3353b9a3edb5fd200a3f8bc26bbbce4beee38ef5ef0ee9cb97312ee29bec2ab75b6ad1b97eb0b1ff0582685df7904bfa6590fc1dbf5d0bf580ffb37ebc1fe0feba1fab4f570b3c1ff721b0cdc62436b856b206f78a4feda7cde70ce42a77943be0a346faff9b4b436c9d63f80830a7e8560eb6bf1156cc64dfbe4f7b867bf422b15e5ac3d31731dcdfa4b8ed48ec487d7c6876fe907eb9b1ffc3fed07b336c19fc46c1d7077c04fd1b64a9177a81eb98e78501dccf1eb7bc2ef69c39b9b0dff1236fccfe6acfd17e62cd9f76bfca0dfa2c897bea880b5c4a3ec2237b27e9b1be99f73230b79e41c39f2379572325bfcfb567521ed1f268bfba4f977e435ff7bbd4ae1acd7ccbce4b22f31e779070e7deb8ce1b8c4297f846dfd500715b939d824f805f98135f4693e24c053b0fd9e3e9bbd7ee6f9dda4f0bbe0c54af34adf67f669affe85352abaf774de527c7de40a51eb877dccc93f6f66de0a79439affe46b3c7a5a7019279fc312ae048e3b8d9e04cde7ba67fc0f6387c18b01fd7f9acf128bac8a39f91f2dfd8ee9f84bcee5d6ba037f1a577e164efb6c83f7d621440d6c8a1e4ceefdd9bd9b5b5b995b6b9a5bf6e5dc5a44397a86b916a7e81a2417b6e27a1d6af75a746a96647b692f6f3e692fef4c6f7bf9752c0a73e6d58f7d0b7948aed1beb36dfbfcf0d15cd357713fc9b5b966733d7e4273a4fe71d23e49a067022dcaf44ade03f5ac2bd704eef6ddb34e3267e6695bb7ec0fd0f16ddffc5fde37196b2239a5ebbcef81aedd0eeda9b4b74a2da07993afdaa126d7fc8b629cce2dc6f932310ead11f07f18ae72e613a7f9bab6c7d1e099f7d40c7b34e6ad93558f7dab490af6173f9eb793b7f376739eb7d2936ee6adfb1fe6ed67ede7f6addef03f5e6fd8bcc98f5a17f951fb6d7e34fb0ff9d1c1293f1a410f347956fbabf1fedfdb1b3ed4e09a5ed3e0fab698192ebbbc421eaf6f997bd7327e9a7fcdf8e9f7f7692abd3de75e55346db127fd03f6175c26265775f7113ee72fee294b5a17bf3cdfc5b7e33a4bfbbdc1b9ed0dffd37b836df256c875a5a5f0e34c8eba1980ef5545e883b3859fd609bc6d1ece7add99174b8f147c7a5b59e5e95c3ffea13da79d6d5fdd6cfbbfdcb66b831963cce32bf36481b3aa9a343ead3dee1d66fe35f0ffa187a5df33befce57c752ee7ebef57435edf6ac857e700f73a5d8fbfb2c3077aafbfe86326cf925b791e43a3fe8ee3d18ddb79f4062963ef07065bf3bbafc3df206ff4dbe574dc5b4ee7271b7baa89fded3556734ff5553dc9e1153dc907e6aa14bf56301aeb77eb4c7c203f77dfc478ff1bf9aadfae661ede72ff1f623af5fdafec3f9c27b9a6b58a3511e7366338f5d5b8139c50e7f8503076399ff7b627fd1bf7a4ee6d4f7a3f46bed49ba61fe457fe2ca7f2e1faaa1967aad33fcbebbc595f71ee224e3ff183dcf6a2ffcbbd68924eb7c9f0fb7495269d2fca59d28a0becc40bb1b19a474fdbcc55091dc9837a02f6c4567be801d40af65e7fcc63198d7ec2c968e802af71deab78845dd6c9c05d6af89c2f72027ede704e604de76ec9373078593eddbd660fdbdf298f79f59cd772989fd0ebfc597ecc3f7a9e875fb23b59aec0af337a1d47d9c160577e511bff3cc77ff669ea6b3e8d668dedcbb9fa3c8ea6b46efe962d6e39bf5fb3a7e4f0257deed65a44ff04470a1db72e9007f7600b5d709647db43d8b7dc65639e0b3f4d1fda29ddc003978d798ef7998fc1afd1a30d2d3770945ba2275432e73ef8123b4be895f939e722cfbc9df43ff65779efacdfd0abe4f9492f88eb0af13b7fe81c8b2ceb0bbdf9594f6274f8446f34db5b7246dc2d9fa6f1723f281ebfa62fdb665f66de243b3fa086b707a71bf34fecf11aeda9ccd714d1dcbd7b96e3f09e7000bbab626e6a5027db1378a377fa9426de1aa5e12906732ff8c4e717f15a4f6a5923d1f18bf3cbf8e74dbc833c4cc01c2f1138ed05fbbc6a6be7ec64b83b7c55bd9976fa091403adaee5aa9bcb78e54dcfc6ec4d0e0e730cbd4dc3bc4e8af8a8bc75a16ab70967e068b5c1efda6c730d3d9b6d2d5c9b27beb9c05b82676e595b0e34342205fe39a96fda611fbcc5cdb800dfef5147396cadda96dcfb6f97175a083e3884c083789f1d15d9713a76c3dcc88107edc852cf7ac0d9d3deacfbd0c2b258538beb90598447e610ed5b55881cc20b5d67f76a1fcb837a131f5ed83fdccfb73d2b592ebaaebf7ccfdbad87519da5dded63da7d4aec81357f181db287d1ffbbf9013f69f35681a703d179f9cbf5faf06fd7eb7d7be669e49dc2fbacd2f764a3fd721cad9ec387cc7eec5bdd96fba697a5d56b32fc7e67e2dd9b1d7cafc7e0e7caca9bbf9937717f256fa23ac89bb8c89b6c2dd3df63ad0add5a677b62577f2ced643bb1072573e44d5f96f660b31826db2fb9bedbe431eade45dff885fffa163f9e9f388e1e80d5652ea6197a81eb553190beabbb6f0be604690443203a844195d56ec5fa8cdba32ab6e40f5be322e842d7ef017deddcabb50126cc650dc879a0a29dcd5899d52b38ff606bb62eef3fbd8ed1e6358ffa03fdef99074ee057d184ab14ed77b35ea537aeade2b262bdd45eadfcfc32af52e1f372ceabdf17d3beab84b31d7a612eeb170e5e55941f59f3188fd038647de9d137c3e743fedda3374a55a49f99eb9f620f70c21a0e8be6c7de72181f343982df873fe7a22ff454fb3bef99e0a5b5afc728e71e54558f0b1f63483e0ab8c4fd121ccce04e8ed6cf72df5beeb3fa75e1e8dddcd7ebe53dadd5ee97d5f06a87899b7ea075f2736ef0c35ad0b5fea4734eb0931473c1098dda62443ee82dc90c679acdb527e1d17eca8e275e898f70cb7f1343c23a531fd7ee561beb6ca7ae5c0b73695cbd96e771a4ff1ee75b4bbf6431fcdeccd3a9973ddcf1faf98a7b54eb3ed3ffeefa3861f0ed8f30f8832094fd0a7b20ea00239bebab78ff837adaeaeff2093ab88f1f5f87e16ce31af5537650765eafb07f30efecd5588d8efd9b6baee53ef0c7e2695a2feccacbd2ce6eb9f7bfe41ed0c6ffd6342f50b79fd8ac8108ed217aad191731fb0e4dc6b848abecc86bf5e2f275e7e5000ef20df97582a1843fbf642c5dc31ada9af306b5da973837e760276f8e87863230cb7e29b546d67c6c568a7c1aed2186977a7dc6e785c6f6c571057e07f25eac19b195eb7d731df82d6f5e87b6e3d2e173cf15787a3fa84f64f6aeceec6a776dfcb293ddf36b79bff891c81c89463c1e4f233946b7e4421f74b2b47af9b14fbeae9e572bde9ea07cf4a6461bb2d2d057cb68fd58ab8de5cebca9cd1a24591e3e402fd2624eca967cc131edc1d54b66ef6e7a42ff67fd18be7d812b92fccee4207301da9c2bd19b453ffd20638da9e8eeb96d4ffd743f6856fefc8fe5d36abddcff561a3fb73af6a7d4b1b93721f4e6d89794a772ec171174cd8e2a9aa6e1cc7535b8437a65e46d4fc7d03ea3fb6ea50759775ce43673cfccc9077c0d510f9c23b7a19f5eb4eef7ec5541fb6d0eddc0c89be49f323707a3ddcade1de7ff0efd86ff2ace2684e6576eaf8ac951156b45e3091d778c6f9e5f8eab3946cf50cb20bfa22bf342b466cb03f31265393fce53de83b639f94a57de6b39b6c99aecca3c9d4e16c341371aee9a7f8946c77fb766fbe7d8910ff0b0eb5fe995bac09a4cbf45b00f77cfe14356cf3cd62e5376de5d15a3d639e88bb14f1fd3e96e71abd5ff46e33ec9f59ec67915e8b6fa47fbdd66fe30f2574fb7bafa95bafa3184e65570d49e7e45dea1762de883ccdc0ec77b712e3d7dafdcef67d992b7fbc6b5475f741f389f127af1615c64173a7eb1c1aedb0623ce5acdfe5145c92b6bf38c02550c5ec5273daa54d1678faa888fd013ea8bd619d71c8f7ad62b25a7c31c8c0f2f9ab55b7701e36bd551a78aae85f331055f1362de99e41c23edf1de9521a7ae9a380f457b3384ce50cf7a97976c5ae611878fe968b7dc76d68ba764bd188c7699fdbdbef914d7383b7a76d6a8a3629d5e6858ea82b119cbdaaac745d60dbcec00ac46941dd4c6b5c39965235695e7781ff8b39160d90260d9029a1b11e3d318cb060c9b7b815f7319bf76a1d7d6b7dccf19fbee6e75db67de8fb723fdc6f5b84894eea3a7b83ba3717a60acbcc27a55471d97ceb8509cf79db935f8536ab7d60f2f5af48f4f7cefea94e7253b3360ee2dc66ed9e857c173bf7ea4b9954013d9fab1b7bae362493105f311727dbc4e8aed318cb8ff85ae45d56e075c8633b712fe410b1c86d77b2dac0ff8c0a54f2068d93323736b77f772d304ffb00fc0e81f41b796ebb53cce3496e79ef71d7aaf78bf0b68be34636819e5c7b08fbea85a0d2ec64db851c238b7deee6da382f735f8479d3173489cf6429a7b93666bb825dc71a1283eceb9ff7477eeff7cbbc77d861f142dd241bdbaed3d1fcd976ee04d3f67bfe09c9a95013fa890b7d31bdebb18cbafccf35c6fb05fc9ded5c3de659ee3fda7173a27eb06dd67f5b8e875b328867eb4661d466021a0ad31739b55111c95b72b14e39da1c7c85c116493b203b824fae4cfaba36ea075db21bf8ee62cae0ddfd376be7daf57f6a09e7b7ef93be574af9ef35a3ef733340e3fab07f09f3c4ff2cb799f4ad9aa64dcacff6ebeaab7731ddac5e7b9be2aa6afd0d28ce2837ec8acb73ab9bdb336aee8e4f25a7baf8dbb3e6b68fe1a8fe7119af54fd9017daf767ea075257534675c64cd8a7e13788150d36da0bff1c43c87aa09c063ad9b75319e0976ca5b1ec68572c69c5fef50eca21ed401b8dfa2d7089687cf25782bedc547d5d0314103fdea995b932fa36beb287b47352e502f76044bd4a88d5beabe6b8f0b1fef2d818d722db571e97e913fe5929f83da6041f75039e3c23fea684be7b42806571ef771d0ebfcfdbe8b5a375f5b4db1bb6a268205a37392ef1273fcee8decf18caf07c7d3b1de8462ac03ae69e6baea09e7a47b61e17d7023d0fd01a6acd61bfaed74bc6a7eec2dd699253b64e33756b877e4fb3514bb512c367197744fbc0c7af6fcdb15305ee48769835dc377d07edeebe07b80a3a6f730be35bf46e7a1f3fa74bf4b7c17df0be7ddfff5dbdf876b2f35c66d4df7a0ab59c3be0a67e867a1eb9563e97add927ea72ad4514501fdd64aee0f72dafc3dcba38a32c1ae051d9c1ff3c92db9ff80ffd77dba2e7c0f8d353fefbb158db9c23561de94e8efb9cf8e616b5cd8a91ed3a89b9ff0dbdabfc58c7cd089cd3dc6d00d2af5c6cc79f203681e0747158d9ab1cc1dac95627954de748deb423cddcb95c427380e3d543d7b6cd68ff98b785df35a3caf21ced78c9e69ed4b1c54cbbc6c68ae626d3f28c197e664738eaac9c9be1c05abc0eb04eb6779d4913a2a6f558c8b00b944d8505a63b58b6b0aefe9d8097f7f3171b1aefbd08a26fb40f699d65bf7b4866bba06b2411a792a559c7e9fc5b683ec4356e177d5c65e4d708eac86cda67528d8d2c0c53d72e8f7c83d28e8fb829aed24d91fbf39d91f3ebfb1210ee37d02b66b33b781ad8f605f1b7c3fdb49fa0e3a4783bda5c8d94633ef975cbf627b051c138d73cfcdf079f4d9f1fdf5802122df8fed6713c81802df8b6b3cd9fbfa742d7c0fd0abb27e26bf30a3ef65bc5147e68a5ca7ea64b58cbf3791dfd173e45a2bec4d7dde6f14ffe686ee278f29ed393deea72a7a161dab6033c5b6e1b7b17d57a7b9cbb690c65aed65afc0f9631973baf713be8f4526b675e2d2eb8fb0dbda1e1799fdd8772d9d2ae9f7ee1db91f516c28cdad2893bd26e0fb813f7a3ec1b1c646d39c0879be97a73d0bf785f6acc0e27592cb7df11b5a3b3ff6d04347ae550f9519d712f7bec1fe4563d6e5fb47d7ec9b71ecf27b6417642e606ecb1ed3c81e45fb35e629e626efd7c552f06b1477d0b56547ceff8e704d647fc605f9044b5e9f45c66b12eb74095f04becb791db27f63be1f6b38966b0bb0e6784fb2f89cf4c8be8fab9e684c96679cb3d95337661d904f63d6c1a49675c03e11d641609fd641a3bf2db0f7928d8d1dfe8d3ef669ba36332fb5b76ec436b28da0f1e4f952890d93bdd592b1a7df8279d939fb77c1e1bc47d37113f88cfc5973bd97ff076f7e1ffb5258f3b4471fc6c5566c81df353ea63efb178dd8a7dad82ed5f8661e59f21b1917bf91f98ff1263f02ebaa3e5d3f8eef75f97b68acf1dc856d844fd263acbff859ab8ddbd5ce67c57ff1adeef253ecb13c86a86dd25ed4437e00fdd1c8715b76e0cd9b3fcd6b3f65d6c28b0fec432436d910e91f2cd1370b1fc172036fdd187fc1f8108c2344eec27dec03fb73d033ee011f173e38cc309710cb606d3463f135b5233ebdcc4bd8e33dbf46be0b7e87ac0d8db5e2772ef633cbac0bed0dd84f182ab6976c4f1bcdf6bfa39c4b3f2138aa662b7ec256fc8489f809b9f8096bf2132cf113d867e9bb36af73b26fcafc06e443b08e60471127396247d97ee3bc8879c43ec19695f0076083b1be6dfe5d93839cbb361875b10fd84fb5e79ff6715ccbcce08d07eca7d5bd5262018e1d680fe2b8a931fd2bd863f059be0615c5629b7aaed812ec933a2dc5366c515bd30e6c2c78c6c7c5ee95af11638c5e157aa47d1be7a4bd19b158cfe6fda5d745ec62e602ec584f6240b211fe294ee1cf07478e914605d9141e07f2857ad853949734129375c99fc3e729ee04f647f178c277d8f26383efa9cef7de6d3866cd4c7c47ef592df3e6f7c039dfea31d77acee83c470dcd253f97be8b540ff37a112d73ed4007a8967ea8ca1c33f382328a3270cfaa68f08ade327a2f16ec20ea782bcdd820f22df42bebf406a69ecbe7f4fc838aad8ae6ebccdbd91ab56895abbad780b3ea093dcece63dfea8c8be4153a5175af411f6c314ac38717e172dc05ea29b31fc1095136e3481d546d353ff667de8945dfa2cfa514bb201734e3d7c66df5c8e2f5d7ec65fc142cebb53e91bfa345f6d7f9964f7d7c765eaf8a51a0a2411a4a0f94a9b188468f7dd64dcfff9473edb16fa1dea33fd07b140e89c327e30782793aa81fd3eed374b86bb274f43a4f7f2bacec6fd0a797316eb476eb09c52c11383b2ceed9882bcc39faae3dc528db86e695269b52f49cc05bd273ee9f461e53b98c3b40cdaee4e3b69c43e47db7d4127b737ca7b9cfc2e33ed290e606f030640f957065bbb6027e417a7ac00181bd937341349f23d49db81f84e21c7034bab606c73cd93875c45c473c9ab39662b4061fb8426fc7a4993441497b24eb52d3ef34389dd8e1e73b9ad70d7e076ada8aec9e63f82bc6b4669ab5fc9e20c7b9b7142f6c1b5df7cc23d79ca26d8ef8977c00f87c9943d718f27d70c219c51fcafdc13ca136b880b8ef987c1feb222f5e86c3b2e11a15f90c83e2147b99fb8c7c468e3878c2dc9535b884c88e787e1980e7dcdc9b2db0c5bad829bacf1c1fe615c6b7d9e69c3f286be6f6a0b85e7bc8c9cfe0e7d8e0e0e81b0e8edd33b4e5c88f93dc9a462c161cc4f7b2c74556e1fbd9b773c3be6b873c8e2ef714fbcc27034d4cf8975c1b8e7cc38544c756b89626979810f9385bfa801de48137e7deff13867f9b3759a48e61b4ede2dee31176b4332e320b35cc025a7b0df2ee0dbe937c37fa4efc7ed4018153e07c7718e5645b319fb85708d78f397ff2f93c939bef71fe628ffb50f37d9079c3e7a83fcbf6ddf6d49ff6545ad325e2b682f37e3aca4c6ed3e19c4a8c5840728de8f7e739ca730e3608732e667e9a08bd6a9686ad0a1893d76c0f88819a2df2a438aea0fd10f9941a790e5a9391f642e4d17ae8e10ffb82f18e1473d6346cf7028e193a01c5b10f8a393237bd4ee025bcd6309f3127290e71c6d1f2a03bca093836cd85e326c7f76fdc26ec23c70e8c1fbdaf6ab73b2eb658ef9ad75a978f9948ff7f4cc7547a46b6c1b515fad954f7f4f999ebb0cdc01aa2ff5d39c6e1cf4f680d39f0498bb833b9befec0af005e9e93fea5f163d02f477eaaadf9daad88f38df84d6aab909f852da4f55ed3756cd92e3da88adf8b693c72cedf92dd5aba0b636b68edc5ca667b4afbc0d20ae837c3a66f733deb759764c33cff00cc955cc3187ef9fc5b1461bfc8c3d4af85afad636c0afb632ec64ccf0cbf659cab969881d970f7f438e01ebdd5fd6fc567f99be48db6b97ecb7f511aee17b5bff0a9ffbc07ec2aff86c1aba0076ccf3d60323f3bacbf3ab2d536af2ef47b6bf16fa1e17be27f464f6a4cdf7fd48dd14c171efb38aff4877dd21ffadacd2ff1ea434f78642b5b7aae5be633a3e16eb3dc0fea1ff1603bf7f5f33cd5ff122eaa0b3c7f9fe27abf9e796b8ae52bc5f8d8201c7ed45b38bada5ba8f657e795f5c1bc3a8063b2ee556a5b927d2d8d7e8d70a1c1ff61bfa8e7461ef253e8fb625f6c52313674e2d0fcfcb1b52cf0cefc094ff40a7c32d3f4eff3a5feeabefdcb7e8d7a4c4775f630ea4ed2e92d5ff0936f33c9f536ff33ce7d9be6af1e00d349beb135f3d67f8be31673fc5a8e61f8a75c146e524ce9b3b63235f868f42cdc0e0df7446bb2a3e09a261bb62a46cf9f6783467f2cecc3d7d4a1f81f982fdc6bbf7b06dfe9092baa9f35ff6f316feefcfcfe27d998e821691ed3afa977d88e57af97ab6dee7ec4aba7ae6ad7d3fcb8c6ab37fd135ebd69100e328b3e4bf3cbec8de368b07eef4fd3ff88a792cc7964dec583becf3a14a3c11ff24eb5e52e6355fc83e0053bea679fbd0cbce4dbdf5a1f2de7dcc2fefe5be17e7f0ffb443efa345571e9065ef2aafb3d2b29e605d7b7688cde60c0a5770d7e72cdfd035b87627ac49f43d6abe4dcd2fc4ed7340fc85fe2bc2662cf7eafe2581a78f683a90b03a37e2fb6698818bb61fbf7aee68c79dc3bf11d87d1f2c83901f470d3bda798d39aa09ead72b906cc5f2ddf0d4e3c5a339775e8fbac59789383ee5b16f8e4dbee8be9ae88c846dc7430aef5d2491c98d9cc694c63aaacc05307d539f181d89c575496a991c59c576834f23789adc5066ace85d0eb4de0a95c81abdb3f84e9158eca0775c1313ce073fccc85d88c23ff1cf3251962c8c003c777cdbc48c191eebb9e599dc04b9a7114732eb50ffc4300bc21f0cc0aeb47a18f73d2d01ad21bb7ab7659ad440b041839609ac071893e42e6810676f31842e3a0ad6641e725b3beefe7b77eac2b5a61ae4b3641e68bad376e47733f15f25ef0a19e90df3aea6882d7b0f7eecb83a90d84d140317748efa8771fcf61ce654e38575e2c39b7c736ae2b985ce971166eac5d668d8bdd37ae53fac24f6878c79193c79ec9783be4086d0d3b1c385c375a15c05572fe1fdc58a1676ce6b6a2d895e3d980b950c0e71d380b9aa7bbac52e9076bacee1d55a18053d4c090f61af45873cd44d6367d6e5e80af953179d5b8888f1a713830e21df822e0feea1df4cc6db0ae665667ccf59f6ae6258247e26bd40d34256a55633f3aea6694aa62c0714eedd6e190627570a31fc12fcbb927c9e1ec5e759fc66e72e4bca9e13e1f286095b81ed3d6cfd0bf993f7be30bfa1cbea03a10bd2fac059a93c06b4e68ff6acedcd5992dafcb7ad751086e63dadfb6b97e40ae93d729e7ee2d594f4dbb7a8b5fe1bc1bd4576ac69ec5073deb7596b5d591fd0af8bcf39a8ab9ce56f8d069316b2a8cdeaca9321ca25fa73b165d02680d348c0b04b6ab6fb5ada5e9c707dd9c784f2cbd5e0ccbdf690dfd1e3121388c7a88bfaef273c6b9f5515e5a4577d7f839913bf8800b177cdc140fac3656a5d2f240cf45efa41a17799314cccf160ef34add67475daca4f723ef625e7953c53a19c92bfa44d177ba047f37fa039a9dbcaf84eb03d8779a73157059519286a83b319793f6a6cfd8eb5af61d47e977fb31bd61807fe212051662e244a8e165b98aee0255dcd9a19f5b09b0f72bad8a2007ffdeb0a4b8f1790c8c49004e3eb57ff79a9fbb0b2fc8b59fd339e9d1bac86750ecd8453e82fb856be62f5d5fe70efc20bfdfd6eeac1ef44bd699bfcc87c91fb7dcc06fa3e3a1c16d2098bab3ef69358811c9f76c62f63d8badd4c67b4715ad53bdcf3bab02ba8ab6aedd5259c02d975c13c7a360847cd11433fbb9d55ceedb2de755387f58cde669b5cb1ef40dcf7badee57f72ac57a5616633596aec449475da0a7d0e6be5ee0995cc681f96e044d38e0a038be8826e4bb380ada6ccb1a38d922a3fdc9f856475dac15f40f80ad9a581c4750ec64de475ec13ee32972602654b4660ee16240fb97e83030eec25c0f7f9efb8304534fdfef465e009d24e453fb6e87630bbf5af4dd9ae3bc25302cba991c75111c042b47d757f16ff45d3aa7683bb81c270a8602b1dba492cf1fc645561b5c5ee8978dc45ee04c0e3de425b857a7409ce930e6644931a1cd5a1b9386b5f006f8bde8231b9635f77c8afee8c5f5f1fde3eba6efe5ff774a153df68785df1978960df66bd1cb4ac8a7aca5c7a31c47eb6760a1dbfb8fe1c2998e164fd3dd729f34abafaad9f2db6b330617da8ccc39c23cf1ae2b38d3867d4db2b95b3a7797796eb6a27732e09c315d9b3c227ec7b50725e33854053f11bc4b3ecd553b8c29e6df968c37c2a3d878f25594e96336ba90a6ef08790de1866b385717b36e1a6cc9ae65beadfbc76a78f3317f8e61b2f77ee0dbbad6c62d4dce896b5b3e3865d82e6fbb8f9e6f5fab71ad3696bbe85bf6389aa3a6c4bdcd03e086d443d679f412f607e2bcadcf38c91e92661eeb97e55ebfce63ace1dd6fc55b74fd9c57f6f71673e6d371f2ffe47968ac7f65ae06b9da2a5bf099b96821f2f368d49c6de3e51ff2a92e3045915fc60dd9a6987d63c6571ec6ac9f1f8449e63e7a233bbc7fa1d8bae4be0fec896debebefe6a879fd668fde8f31f876f639ddf7207cc85cf4c147be356932de0fb1d79d9e57ea499dc6f7f28ff73fec9f0715dd452a5a1e3563222bd10fa3e35ce1d5a8985783b589b9f6a9ccf39cf74de9999d5d706ccc44dff8fee5a06696f5e88d52e0783f7bbe7ccd9ae56d8e7cc61cf99a73a34d2c4bb156171a25c01cfbd68f3df9c0be45cff13a7032ed7296f1b05aff8807f572ffddb9c536d77462f2a32ea60abde885e1faa7d8243eaa669e867dd7d63ead99c456d1f49562696d01f3d2cecf4fee5eb3879df7f8302a16c36448f3eeabf640b6f3fbff295f2ae09eba87ec10a6a5cd3afd163fb6ac13f09abbf9507f81b710bdf3e8398cf8fee311799f7f66dce9b8d0708c002766f63fb2bdc23132b38407b5279ca9db0bbe91adeca1eb4f5cff5f736efcde3927ff22e7b445ce893971b7071eebdce47dba17fcb85d332fb89ee976f0f9b47464fef2e343d6563f1c1a2eb7def80fe7872ddce3cdb8c8eac803c6a9a671d20f197484a3283886dc8fe3aa77bac93c4758d3384c4b0bf544d49073d40442d4332f7a9dd17f584acf35f49605f7ee77c685b299eb236e80bf8ab8175af4223ae362dbda7fa6b9b018ee9a95ff6febd7faaf698b3764f31f3dbf022f86f3a255ddb3dffd5fe961ee9cfe2f7ab0e5e08d43dd99e6067854a407d8470fb0f4c55b52efa838efacac00732ea8790eaad6b9c13763fc3be5047f83385a212f7b172827ab1f59ef40ea40d3d36b4931ffb6882679789f31a6e029b398db64f4acef330b7ab9d1f459f4ff28aee239b1cf1deeb1d3b66aa9c105bf2fad5e960e6b70ddd668cb351a65b98ab41d0ec93f6ca9cb990c3af38764f795fb865ae035eac09b3f8fa3c40efb2efc63e1bfab80ed62ee4d97b1ed783c611f988364725075af410f3e708d06ebfb069fefa2f707b1d732577ece7d84d108afa97ecfc21adce715f083386e926b390e1aea6dd7e743b25ba56c6ba37de2def4f1fe834e5a74aab3b9177dd43f715be907b2c16bfbd4377aa181160ef33a2992cbcf9c7aa9c37ecf498a1578a59495bbdc579ab1b679a4e9396cb572c0839387c3129808c4e87159513ca02eb8d02e34b114ee7bd43646639bf125edf8ff406f2af732331e590f4ffacea968d75bd0fcddb7aeebceb274fa72d35cbccad160cfbcfca8ec92351c80ffe65c6b48f13bf0edb44f52cc9678144f9ffb9d80e5a8744df3617dd5eea868fee635f07798f9c1dccbeff082c2a1b183ee1138f4f480f625df662e86a05c6d2ce711fa7e67bdc65fd38037f75f77650c2be430e49ee17e91afb0713bed6cd46897d9c971e50f8ad5f07b7dc30c5eddd3983f259a1a9d010bb610bc1bb9f81a8a7c92fa631cfce86fe1e0d10b7b85030679a359afe23d72f5aca23b5b451fc4467bc92127d77e9f3663e2cabd2b7e247c4fc299dbd5efe719bd96fc72be45b08dc877183c2e63ff22c6616be01af32ef7d6260d38afbc2d730ed6e43f0087d3490adf7ef4c0c967a367ae6dae7d9f1c16ce7c377d1afdb1b8edd77f098f7dde83f3ee9f702e754e7ef73eef5ce707b8ead709f7d21997cdeb2b3e6827ab67e227866deb9afba49ca7032bb2dd5b2cf7d3580ffe047b7fbd4fe203ec7df3110f92daf4aad0cfed71914bde3347de33f44b27f0827a817ef849aefb96e09f050bbc2df199c0f39d99e73bab0db00636c785c1214ccbc325d7227328f94ee0ad02ed64cce995e695dab895b6716c87b9ff62f02d05de08bd47f8ee4f9b63dddd6d9e7da579b685fe3ec503d058ee1b1d658a2bf34addbf1c34f901bfe95cbced6fefe7e232d7367a09df727158b487cd9fd52e73280e458dd847beb75960bed0bc419f62031e9b0df4c0eb5531858f88788262459a079b5eb52a06ac8b4ad7db96533d19ed96c3647dcb41fdaca11c78e217db25ad1d8ce7aad0016b288f528d7c500f3501ed640765738f29c6f31ebc65c8210a6759ebf87efe70f79a3d6cab9b76dc354d62f460769262f03a8ee25ccfc07b9b6a5b19add8dc68c681c3e449bdd597db58b6e8c51cb4acbface9e5a201f346336ed95c6ac6e53f7100497ea952694eb1bf681e07f6e2c4fda3aad5c63aea62c7faff64e30bfd3c2e7a5d8a4b584b21e0fc7603ce16d155024785d19f32da73ac05596c8d16a47bd272323a528d684541abd268a8188e70d1a06bd45b2d34a39f6974564e5a93d05aec989cfccfba95a2ebb231ba54eaac39c55a8f1d5dbb35ebaf6517fa56cae86b75c74613ab60dc83e8699e35ede8396b731dc1af5d43afa563b43ba1eb49e380be1dba468e81597fd2684259179a92466714bfd7e8421dceba926fb42c8d36d43bddaafcac65251cebba7fd2bd3ceb5889861bf38788be9bd1b0323a5127bd4ea3b76534281574fca0ed02fe68a3a33631df6174b68eaa88456746343a2f7430593b6e7bfe4d277d2d1e539cd76873bed3d6fa241b76d3bfbcce2b45f64be9ba672fbc38679e046861922fc47d8ad0b3ead9cbda32b6ec40ffbfe5199b07cce37a8d274cbdd1abbaec751b476bf237a4c794d6daee795c4c3a59cdda02415fb40cbd189a0ce3c2b797462b8de61beb0236d9cceda8063a52ae89c945dfa8095903f362ddf8677d37acb341735e6393f31a432db0e706e65cc2e1067be39cf49d3a46578b3567cdfa0b84af1dba6d8dd19d7c849644b286de00fab37ab6d161641b99d36f676e226873194d3e5c57b3ac8d1dc945d7b2e75edc2b4b9d34fd8cb6a63a325784e8729abfda6d4493913535e9fed964e3c966e696e907147bdfe15e32e64dbad018754557b3165d5b4b6da017da815ee803db4fe83dd06f2806bcaf6cc406b13e427dd6cbccc52ea95ab853eaf0a435968b5eb07245a7c03eeb64e6a29399196de00e6b1bac9af149d7303888a658cdbc4ff169afe1fd2a3fe904b3ed0dc015f2d83fe9a096a2e55b89966f8d7d069c4901eb5f454ba3d57a440f2fe6146b5c6a9e4f4719a7b32e72c11a9398d3786dc9f787399dc4d61a5d67d6093b69913247a599cf35eb719cf689ae68569a75c0367863b45f31ff592fd4d4b6dfe91bb2cee6cae42aa12d028ef9d4e8578bfef40673f5ac15cd5a8f67fd6bd6a1e45c30ebac4123ee4247db68599ff432cfe3969b7133fa9807d1d73e6b49b2e6ea8566f53b5d4af63b4413cde86c837bf342173b60edd98dd1965346c3f3a4af2dfa9d467f5bb4bfc97711ad6df0ec19ed6ef0ee1b6d4ee876524c0f6d7ef211f6466f1af300faabe34bcd48a3238adf2bdab727dbe55b6fb52afdb3beafd18e3c694f5b665f3e9cf4232f3532b1279b7528ba7fa2f7297a9bb6e85be6277d4bbad69396375d27d63ffb1766def74f1ad7bc0666670d6cd1e0bcd4b914fdee0b2d6d68f7413b85e7c25ec9fcf01b5907a2937da1e1dd927f32de27e56238e8ea5bbfceefea27541c57e5c7302d317f38ff9463bf201f9ce21f8a6f16a20d1ba24685f55f323fbde824b2cdec2c6ba3f73bb9dcaf8d5ea1ccd589b199b5e83dd797fe49287bae669d64d1489c541217b1467781da19af37e81f6d8f7a7fa9916fec0df9eb31eb0d47460b397044cfbbe6b566f1b9102f9cb4b16dac41d6f1149f45d927cd4bbe7ea31d6d6c8868504f8cae276bea1acd6dc391d8c8ba838f901f436f5af0bdf0792f868da5b53aa1df5f6bdea32c8c4d0a9d126895b04e9cd8d7421727fdad5a74a1a258c625c0b8e0bb25b63b69499ef6b8c959a7f4a44d2a5addfd93bef9794f647defeec94e621e40c3aa0cfba2df39fb49bfb392b9237bbe6884b12dada1a529d72f7b6019a625b4b3f099b6982db14713a9b94ff7bbd7c557e5e968679bea7fa8af9475ce2263e7dee56bbc9170db06ac4f043db29e1578d386b95097ddc09b1c18b7c35c82cceb61f13e8c181a7c81dd302d45d78dfc8d1573e8443ef2f09cdf9f1c749f71d817d87ce6f3d9aa0afae5cc4596933f8cbdb4dfc39fdab81de08c587ff58d6dfea4d8fa77aa0fddb83b3f8dbb3349555c3a81377fd5c873ae3ee0389f376f75af696ef13ca3bd5f6f73eb17f39aedeca77deb1d7a5f2b029fd487da4d646f0cff37eb608b6670a06bb7b3da5815f0a94512281c3fb88af39979ab82cfd12bc7919fcb7bb97ac8aa31385faf6089366e67550ca043a5221de8a7ace29823ee48bf138efdb1b560d3347a1dae5eebf3389ada7a9f5b59cdd71070aea2c35ce69c2bc76752d19482a6ac6ea53b017e9ebfaae7759d97f13fe8794d59cfeb09989296eb62dd99efe7aff3f8fbf1e64bfc8497ab4e18f09ff1baee75bceefa2a5e57d957f1ba5a734f95b5e05c39b8e358cfd1eced23a5fb14874c6a68037a7e8e9e1dba9fc5ddf3389a33de7ce3daa8cfd66e0d1f85f9b9eb93de2bf288646f25662e7a56027e05c602a05774084ca8c3357efe2ecc67f80ee0c6a0f89decb33df37c2b29a6cffaa9b5ae48f4789fece7fbea56cfbfc2cbc0bdb6dba38a56cacc15d477e9795a761887417367c9788f0dcf1db28ddc23307d45acdb678de3c8636e2f1d6d73391f3445740dfe7c87f5478292be5327e81deb8c8be4db0239ae1ee23aae239e7ccf37732bf27ce8b0ab82b96fc751ccf8918b6be01e536894546d754262fbf0b2f4e9b8afb9bfb7e223def4aa7058bad04edc96e49b713f40141cc2be5b69bfacb846803887e2226b5cd0bade1e430f7aa1f49967debbf2f67d473456035ad3f3978593dcb4ce7ed63acff51efd24f5cc9b7f5b44eaa8673d7be1e5784c8af9eb38e2e7274dce8d8ce3c6ed6a1ec74a6f689d32e7b72adaf6fee8d785b3d20b8c6797f9e56fd8fa9ff30e3574c5bb14e747c82b2cc17fb080ee396bdb8471496363787bbb1af17750b15f77a754d4cbe15b17bb573e1f6b35479ecf7cb4e8c7de8a16c180791c68eca1d994d8615a720d12efef14f78d8e5ec16b2bfa3a864b56f7dd527732682167c8d142130a1875e41638df98e3333f7385d2be611e4f7cd038a7039fc6669d4fe882d47a03bd6577126d8f613411ede8c9494f99ae01da2cd01f1f15a7de4ae89308e72e70f3197c9bf0e145e3bb68be5bb9fc06b766bd7a5ffa6972f0142bbeee46ed4be1e9a5f3ea3b4dbfb3c873f3c83ca913e6c28ef4b7056b61830741fb7e775c6c5d85f1c523ebb9511c5300e7cf7a46de688d7d947c3479c479d11380fe001b638f7d9a79837f909fb931ba5af12907a4b086c97fcb69ec72f4323ce05e946aabc80fc37a0f2ff770d4564423ec8975b6556d39cc759c610e801756c67dd270ce16f9fa28cfc14dbfc1f8f335b5b6f7dd3f16cecbcdaffbc9ce6f73150d9ec1996d95d24f42b1ee8afc69eef5e4f72acd9aeb6e52ec82f021a318d0a1b1d31b7acc3aa255e4b2df17371adcbb19ad8d06f5458a390ac60a73afbfdba826434f9960cc6bc1ea361a58e14c74d3f36ae19d3f2bfae13534bc68cd20b65db2de7abfe704deaa61bf6e92ebda72026f7960bd0adf82ce3bfb87f41cef2fa2de41ed7db205397316b925d62e704cbd6a126df3f0b4ce82f6b861fb7bbdf247dd495a958f43ffe62bfecc2d4136996cb8adf739f4e399ef5db16d6b90e36b18c3a86ce165b71113f6516ba37967f31ea5a08ba31ac53a5535bff6634b3e0b6c6aad2d685ce5c8b537fa19b9f061790c59dbcad269de11be77b285f5b89840733cf4a64ad7d0b6b7c745e0ccbcec68f2388af50a1b6dd3b9b716f630c6c9773986f6dd9947bf7345f6bd64ddace0a8d39cae8bfcaea38e76cff0b122cd3a44c5ee55cfe81a2cf2a36d8e87727785f5367f0efb6e439f53f0cd626826867db7754cbc1c26bf1727f2efc07f027efc9cee6f47fa0ca083009c546438c90d2e8bfc8fd89da1cebabae3ba32b04a959e710e833e77e2f8a7cf58bee15063bb037c55af0ad3cbbc9d0f0d3595e615ece04fef4db8aff1e23c5cab854e9ef5512fed5fd4d9e31c0c62ff37b9c463e8a95c0dcb0eeb67e547eda1b7c30a67f0bdeccb7c24d7a9f2b61a1dd16af8bd34f5c82fb9c7fffa58b981b77e0eef337766f8f17e23cec7df87fb4f5b0ba777db8baf70fccbdc49c361ee2e684f8486970f8deaa498b7bdef9dec4917cbfdaec4ba7efa9a3c406db5bc98ff6014e8fb978342df9ccf5c09b486a2491e7eacc3f0416d607ead36608fd123f891bef85da0efb3433844bd87f916a3de01d81f27b3c96f97fc406b9f63958eacc787e9ebfce1361f3eacebfd3d3df9ab5a1bc289f0a19ebc1e6432f7fcfa07f36397e06dd8e636e78aa6b4b7488ed02f85c3c1e8021d34e6eadaa638b275dddc49eae5fe7b67b19f460b2739fe563ee94da7e373743afeafe6f62fff76f406809b5c37833be0ef1b959b47cee56547ddc439f3955882538e6b834d51dc17d08c8b651d79cba3f2e21cd8bd582157c9fd277e2ef91770a78073b776ed331f6e70545e46317357f230ac815768c995f81d601c6646435f092f57ecc8f3665c24918a94891b3bc2df7ad4b39e8bfc7ed4434ed2bcb76c284645dea5c3e7a06b49e8fe1e74aa380e00362c3e6ad6b366bda807052ce2991b8cf9594ff887627938ffefda5c83be380679e398631f3c8e5ecff157d0702e51c96fa67b032eda4634babb7cef2ca34dd7410dbce8a1d73c8ca6af7cdf542e715887cea9ea9e79941c33b0b332a6823d9f31b731e38b7cd68baf5da76dee32d9efb6f3f4bb97a5d5eb978c6ddad5a51dc41705fa5baf6384d02f053e208a87e5bd5eb52afcf21a96877cabeb181de4c33b0bd3d31c0d5e854740b35efc3cd0d001f2cb55015cb86db8ced43eaf571bab665d20ce9fcebc15ed8b6df5f24467b95a67fbe4363ffeef744f9b37fc3a2d399464cdabc77454670fa3afc95bfb3fc077c87b6f2cf5d70c5c999fb2de3b7ab7ba9fbe2cf6abaf895d68c5693c07cfa94ef38f7cc03fb107a36bf6a02b7cd4a9e99df8959c29fcb76dd90dbcb51d0237171c75c37526ed69d30f74ee1f43fd09bd8136ea5fe8cbe73e5cee0f315ab0f45e869e42e155e0da72b3431f893ef75276b967e4dcd3cfc707eeb848d6aa762d0d7f72629d7b9597d0a557fbf230666ddb46efc93f9a74c7456099ba18f2cae89f193d73fd1958db4a6df83d65fa998af8a88ac12bbdc63cc5f342fa1b99d718be17f7498e8b497dbabe99dbc94efdb23dee399af5986781be87eb8725fb80cb2e8e0587a52f7c0281051f8fee11df4b7021483fd5b9af9039022adc73be970edf73e9a3e94b0f2ce6d3e5f9e02f3a61aaccf70a0f01faa18ee42b98be69f28dd1eb1c2db97f98fce8263e6a6ff43a2e02d6c7465f61203dbc018f31dfbb67e0d76cfa3c72eed28bd9eb4a7f78add2f2c8355865a3079ac79fee2d347e452fd8621c02c6be90be21f271c19b78e29a46ffc7c57ca2df0c6e04d3933b39c86b8de00930df422f21db077f1be79fb92ef9ce577dfc0775faffa798e01427208eb81a377c8a3db5f57a117fdfcf37bf514ee1f7c01375c7456c07defa55fc1d0b7ddbe8119a2aee9b081cf44d52dcbb45ecfe015fe7dd9ff0750695ccbbaed8b60e7322ac15ad233a37b4bbcfdc5f15f0285e7608fbaeabb7a5b9ce6f11fbe26938ccc916340b2fcf433fef30df94e5aec8ee168357bde9d94991492f53cf421fc995be01aeb366d582f6826d5eb5e5c714dfaec852eb96dbfca9de104bbd21c1f8a921c570a37f3e861b640ef7e5c71dee3da1ef455f46cbb1fefeba4a3bbbe9f0bbb3b8d9969f7d22d6f97656458ebe575adfb4c762bd43cb29e03c0b9e4f8eca1bdd9df8e64f989c8c316ec0fbf5baab62feac8725735ef9e46fed02f044c07f58d97ae336f4ba70113614874bdf82abac12f8e34fa849a70bbbea2cd244af1ea65fb326dd2e6f035e9dd0d3663c2ac53e42a52cf6b71f8125d00af5ad3e8d0de68bb5e85b34b6817632fbd19b4a0f605b2d92f91f8bfbe430bff900d7d6a9c59a21c1318cb4521be490e5b525f2df61df75026f998771de5cac3f7b1c65471ded5ec1bbd1a7cf4013f7a8c13b001c6a43631bb2be13f4bd5434b0e1e3ee7d775c6c799e4413c19790af881e6347a7a5e07503e4cc2f7d83083c3e931cd70add1ad10f8d564ad7a779d6b99867afe322a738c30d19c75ce17c0f59332e9636fafb66828da5b9089f1adf690b8f1c63d2907b8f59f722a2982e66ec5644f1460e3c99fcde665ce40eed67e035613c75778ce332b255eeb8583ae4ab286f5e906d0a67c03a72ae9df62cf0f22fc15f4ec773bc92e31e86de1abddac0a73dbd8846c7fa8aed9c88edcc10372dbc407ad45d2b1c2a893fc91e220f065c2fc79c9fb4de92a4bcd9c6f7b651e5e1c31bdba674ddebce3cfd6dc17c12ceaac8a0dbf0c15c067e1f3693359b8e9c7be07e289e0388ef8197fd9bfbef37b6dd14c36a59a7aa066f7991db01ad43f2bbfa344fb3a36e060d6bb601fbeeea99655e379fb5843fa30b1c3ff80fb6b999ffff697db4dca31fe6e9e86ee9e8ddcaffb276bf45cf16e69635f382f202b3575de64c85f3aa0c67aecd9c2dea18525c48eb0ebc632b68968373c966ce08c461351d8f9e8146c565657445d4db7ee50a31a7f420e3bb84634d6f982f8dbe8b7923c826c206430f52a5259ddbe5fc43fe462f10fd88e86d454fda41b836027d9f558a620e7aaf652f6062279bc9836ee60fb75ec09f63bc6daefdbcf397fbd2afd762ec779fbfccc17792628d1ac049c7e397f7a9d52efb9decc20d67f24fe14c2aec2fdc1bd50d67bd3a024ef53a67fedfe24a808ed1ee5945bda3863f99047a9075b96e181fc1570fee7bdf9d7953683201e3001bba7ec6ff49d6253bbc2a76ede673a4275fd2df6aa78955cf285ef00657eb839807c5e895f6ae47cfb7ae638da67f8e35a23dc52aad40f40ab84638379a68eef83a1eb3b99c4797d714f4cff8a71f7b0bfe98f634f297a1e140650c0af713a01e403617bd77397af64ced268a8f3aca72e5a306509d7a176183f39c795a75aa2260fdc04bd9d2efba9b0fa7a3ccd2ebc5b0bced8f576c13704d5ec2f3b1402ebd365c7b8c7b5f323f28db1ae6a2e39a54e7c4c9c97cab3673eec5323797d5b808badc1bc53db559040e61f0ed804fce8b4dafa80dde5389e1e958e9f75d8f8bad4d7f124730e7e10c317383be627e343d301deebf8bafe758e38f6a0698835dd6095fa20716dc12f2774de38bf9e593eb3a5f5b8b7e6713a0ef2a816e44c63ca16ed8479f4e857a2772c5c151476bc682e1f5a0c235723db2621f1463e280f31df8b965d7e409c2bedb557bac3de1a3dd826b52f8d629f6a7b1e0ba2ed6e6a8408f24b4f7d0d77354cd165c56743ddc0f068d7397f60ceef3d5acd369e707d65cd6363883a09da16db23fadf68a78f0ba1a26f5623fb0e67172c8d2dd0d5f74958f0c7dd705dbd1007358f5998776cc9af4e5b239f1fac9dfdd337aa8f7f941a7e87f6974ffd4ff4273cbf4bfe0f99bfe972243ff0be6046c7eefa89b2dd636e79d2e6aa9d1aa39d55c9bfc5c738d56b6f49f176c5b96b6e102a4187d0cbd38c4fdb546bed53cefe1b94ec9ff114ef38d6b335e2193d81f3938f4048b46dd5137cc0943311edb0dfaee25f743bec1a3f239d8c6bdb946c1cce23e4acc86b84df658e646321ac858b7d040b68c0632f490a129088c003490dfea21d7bdb639ffbbe5fddd6c9eae5e96ceb4ce1e382efc8afb5b1b1ea1c09bb2fe7bdfb2d837f6ed476f6a933f2eff976fffe7e367de547860de7cbea27d07dc09bbaca66b1c1703f4c98698335b87f34fe8e5add4d38b68d7938f433ecd1df3b2e1733de640e8bbaee6bdaca3f76ff4a6b007c09e6f2c83a7907577c77b8597e5c2a15f8f0b9f7920a2405e039e04980cece3f86c5cf1febcac5acebdfeea41d36373d31bbdcac5ea24850ed4535685c3bc5683cc9979a79e962ec75dd0ca069e734c3efbbde0768b1163da7dd62b7e73cc20631d53e4d8a121ea721e965f537de00e7f3a7738c8baef8e49756abe0b7b46fdd8b74ee7a2cf737fd6c8e0895933173abc77ac55815871641bacb1e9cf79f35abb39060cfa34ed7e4daedf767e802bbd0625ed53881129b6e79c64c91cb97e876b68b0115d8359d3d88f7a0efbc0d01570d8ef377ac93ed78e66e8b343ed4ba5d64131b75e093fc0464f4507da41ccb3019f005c06dc17e19cf06cb053ab625c6c2bf65da1032bb538eccf16be33e67533699647ed6539f36628d643694cdf0bedb98cf50bfbc24b5e6c8f1a9cf84197ecdad2e8780067e73a3fd59822d1e1404d617bd474ef8aed5115cb9cf14201eb1c886683f83a5c63e3dcae70416436dfabd87083dba8bfd177932da7b89af11fd5a4c9e9b83c641c21fae1c1ff110579f8a01ad65509b85606fc91b6e9739cf39e20cfadc9a7a3781a7b0dfadb4ff537c5e36e6be104604e726850348cb95b8afe442ebfd1f07a2fc11910a2b649fe23ddab7561b49242d140907b75e0fb7bd29a10fca8855e2485581f3e21b412d4258749cbfcf6c41ebc2efcce7a3e8cbfa47fd3267e0f673de8f4829f3246ce476cc399c792e2579a332ac92ac6292741d8126b2463b25bee5737bcc9d53ea1a0646c008d073823c17774d12726bd74e8293a1dff636b39e322ce433fafd4438663c1490aeea46d8eba551f1c98f6987187cdb848982b1dbd714bf4d07dc6de1ba5bb66692788d1e7f6f797c57ef925d75fabda398f05f89c746d3949e177a05169e787f03eab1f61d377c2653f61fe51e69f702826c4e73f672dbe2c1dfd55b9735af9e32134967a4e841e53e012baac8fe0e7619c572a21ff5cdbe4abaf80398ebb0b6f496bad3bc6d86d79dc3e631f1b8c76999dbcacf65f54c3a25dff1cd7a8bc813a71f582638d6d6652ec02fd2075738a97b6b9cb36f6f4b9963948bd5e0cab6839ac5e6ebabc57f0b3fd9eb560bd30e4e7b89739078f62e8e5f905bf632daf1d8025f34be6661c208f221c6abd92e2600daeb5a0cbf940d846f21dad71b14a55017e8783d8d883667fb3332e1873d4961b0febf136ceefc799e2182bf012eebf01d6ca68bb645cfb205f533814117f406f695271fd42fa6d36ae85fea306319013a679352ee26a116d8fa197494eec2fd421bc1dd7a5588717f384b5e814f2b68c1f4bd0efc4d8c79dd6f083f487387e1a9390e24f70b566d5d907f39da0ff218edf0aafea42f81c2b239f1e88ae2ef864a1cba7a3d57a5ce416f3b29a3e37d16c8226e75fad99f99670a055271da98f6a667b8ad772d12456ac5d084d2ac4e4f524f2d1af1578e611fc70e05df8404fa2bd5dddebdd021cd87ab7789aaed9e7bcadbd2bda0bcd9f682f7cd07f7c5d7b013a261ff50e6ff3262912f4aeaa68fa2d221f073ca4a8f789bfaa8eaa99bf62bdd339118b8073897c248be7682c6b92799743f413becd638bdf55b25de1ef010e78d673c1f1ffd377e4e22bb7c4fdc67ab718560f8fe9fce54bfa5a2d6c7ce005e0b2490a1aef95d29b5ead98df8bf3bd4f19b8b6c0851a8d682ffe1645f1115cc9f4fab66cc6c5b6e1fab02e54ed76618f239fb95b8a09f339334f6a453655fa6b51a353c58e35c5a22d7264e0e02b58fb10af45c2f772ff42d7e108b77527f27cb2d70d9f6b8bda5b18e9b5da801bb51e174bb1b3145fe776e0dd81d35a71ceb10e87a8933bccfdbb640c70c1794e5d933d9d348177a7f486f690fca853df1e174a7857f1089c4178fe3daefc9eb673f5397b98f657e968b31826271fe54bcedbd63102f7e85defa95fb7c34e81a3be575f62a63e6f5c6ff9cbabf8a3edc71c5ce1b0b4c6118dc5f4eff063b48c0bd6eb5bfcf7735f56e09dd6c4358ce181c6ee3f625c7f0ddb285c943d8afd5de6a2ccc497b19a133fe58e71aee3483327ca36b75b7386c6fa759e0eeac98d0feb8a2d8e73857b2dfc37ccd34fe384f1151e131b7a5f75cf5915e0ca49b595b7c5747a0bbb7398a75deb36263f7350d1ba0bbccb759433ae17eb90c664fa37b989a6afbacf3ac5e4d387a2c3861e961a76a042ff578db8c292bdf35bc43a2ca7b5f87e6dfef47feb39d1b5b2545b513a78f9a2799d16fb6c902b2baf27b5db0d982bb1c118f77b9d0fe3cae2eebce7f2dc3972dd79db1d472345bfff3fc4983562cce24e62cca00abcf9f3385ad93acd1db2cd0b606f59ab87b1014bf2f13b81b74eb55dd6c2bbe2e818394467550cbeb18e08f8b26cced530f6159c9091163c5e0c3cde187a6bc29978c6e375188fd76b0423539cf1bdbd135f08781b05eb8b3cd0454ee402370c3d4d8d3efeb88b9e8c0d630ac36869b45cb9cf225a3763c66394f41af791ad5315adb106187f38409cc5f8cd79f1ffb3f76ecd89326bfff0576a364ed51c1241078b6e5e1530781671aa1535997a2223f0e9dfba7e57a36662ee75dfc3acfff3ac2c0f521a3788d29b6bf3db18fd1ce61d4313091a9c4d948c5ae43c0db0002d6b9d8f685f167db56fa7f6d76a3d1e95ebd1c30b8dc9fb1afb6e8d6da0f3b793341f5a8c1bcc2b4fabc7bc666fff5f7563c3d325dea19c75c7318f599313c4edd95fe426cb50ee73eb09bc9c40f03e8bf7d651e9d5898f1aadd1914a6bc67005952a6725fb42884a41bb49b2370efce4d3a37c369e84347fe0fb209a27605d66529681066771de7dce6e30858e54012e3edf1a6eef16dedbb51cb3f77e54e6f0d28f59afb436f79ba2716bd6e2ca198f72804e7f6d7c2beab357c3d675d85b7137f8be13d051a5df4f819fe075735c0373db886e7e77739e75ade6a20dfdeebec7f71dc6c05de9b5e8b3960bb4624dcd177ec0c115a6ff523f8e92d1975592439b163561ac5df0ba72789eeba3023720758b0698bf4afaf418fb3e6765e02266bd78565ac6bbc0cee1f122682d6ca2326ce019dcb896dc8aba68c34a011fb5338f79f51c7daf9e7e04a9fab97a9e6d7267f639f5fd7ad71b667f516fb8a9e1f727fc8d95c2de7fa5c53ff41ac9cf530cf76595e8a34c1e3672cbfbc359670118fad08c21c3afc1dac4f9126bb0f5dcefd03b990ea62dfa261c4bd0d8e75bf6dcc05e9c22bee473d90db23270a059cbf864e84900cb87cfda975199d7176d63cc736dea83bc6e2405ffa6653ae039c39ebf73e8bbf4ed53ccf6857d142be7e121b7d5be7054f0f4a836f9a1bee32a6ef483cf5eb8e55e723c397aa5f11427fb053c1fba79e123a63479c92494c9830dec723901c7afab37cb83aee2c5c90e19d77ea5bd169eb01f961e3c1079dff36ab5cfeda8f406891f343cfe96219e639f445adf1ba3a3d6c847e3e50a8fad13e2dba89cfeb31a041db327566736de6f56e3ac49edfd5d8be43d6ece0e7df5221f73eb6928b036c8b96774ac672f729fb74f43d1ae4b056f5e7a7c5d8e5eb0a737743f7b91596e3ff99305f3d45033a2f7d778ff636e3c47a1e1fd2ff98e39c53de0ef5d7ab7d0fd9cbb8d1ac3cb94391787e0c2654cd24afa53a379121c81cb347d5a6027b6ec7d0aad4c608c73c4618ca70e45948c1ea0e7d9e6fa7c0b5d7f68e38bff1b9cc6bfe433b2b75cb2976a0eff52372a3765749ecf86cf086fbca90b4c383e73d36978ba1447711d5136acf761fa8c6ff98cd6c77cc6a0c3115831fd4e8f791d9559dfbde147bea84ff9e2aeb171d3af2bd9dfac2915cd2507ba5e637fd12cb0c30ff8f07febfd98d3cbffcdf7d7722bdc5b7b09c554e7bac8f6aab78118d2c48bcf3f8e11e513b763ccf6529309af7a1fe12f3962ae65aff77b4775e8f1fe395dc3875ed7204a7a5c837eb5c360652b6bb5c8aaf54895f962502d1fc34f39cf7f7f6f2eb4145aac4b15ca7d5e3ff919f3c968cfb1b0178387209dbc7d826e57a16539625e9bd0d89bc141c67be411afc35e3ec1e36a019f7d45fb92da69c778be9d5023c4fa72ceb3ced71f7de037daeadd5c9b2cd4a1ab4b76f30d758dab1a0cc697eeeadeacd3e4b9737f6fcb83b6b372c37517a10738c773bfc96bbbd7fc018e5bb0b2adcdd36270cf33fe699e811e7d583f011bbc7f958dc71c2de4ad88351ac96bed292af7a617b1bfc9b3bce650d27aa23abee44e8bef075ad736617cfd3e8cb10b8773eed358311abf075de37cb65e63389f2ee225f629ab94cfd82ac42519732ae3e139275928a16b8a7351d7493219c3bf776a7d3fd0719617bfb33f33ee16cbc7c98fe5615fdef9e3b7f311f66af6aad8677d0ee587c6c75e088e37a7ac47b2853f421395419b50ac3df46a699f5ac6bcc90b96edb36b98a5336b75e784dfd47d7a1a0a77dae6f072e65826670d89ad574bae9f378ca7806692a0384bb2be8d43afa7fbaa016eb9b9fadfeeeecb7d2e3ea82fa20726ed93c99327a1b268ed59dbf2706aa36462ab9e9899d982d693bbbed2adbeeb2516b9ca05fe02f3f40f7d07b11fb12684d60afa5e19faefdc37822f91bbf2e9398f9efb03737cf9b378ce8ef7fad5bbfdc20afd99ad0438d84ee21bed8f64bd50635dcb05fb0b48fb437f01b1f2a747bc762c4d3d079a56d0cb8a92d142def69dfbb24a52adc6a8a30ee6fed236dad19632ef452d6841e77012a13ffbc8bfee0f8c8bf5a638ccd295d857f9e1abfb29c748bf7d40fc53fc0d740480abd9bcc6d044d247f59833cff4d6da8238566bc6e72d692de0b501be049e801fc510783ea3ebc5b12ce2d79e1cc7f9f8ab551cd6aff9a36aa787af623dfefa39d7893e7c54f4f14eecfd942c256b044d5e65833ebbe07e7ee022bf7dceedcbf592dc5b018e8e726cad55e35a5909adc4362a33f617190a11f5e64e6c7eae1f27cfabf1a82dacd9cfe273e6a53df4aabd6635744f72eed989cf1a3a2bf456778390f53d995371d035b81407d6a30e7de645c4d9b58f7520a2325bc8f281f34cf68c814f50e8f7bd8efb2372c1e093f7f8fb71ae2c138bd5a6c7d044a56ca3b9d186a33d92f12f96d1883fd1be0a0d3ee31526bb7e4c1930f78f3dc38eaad3c0cb64c3d89229307421edd1e09e6425fbaaa5f8c3ebe93ec57943e39fe7e339e86d4e5b49cf410342cd3dcb78529c904bd0e3c8fd709eba3b4f70a3f93c3b5c0cf46864e3b26e2b8e935e74fc3a8c0dbca32538b9fc7e7a1d6b0d719f8bcfd9dcb2b68cf1ddc36f96e536fa52db2ec660df3ed552be2cba5e5c7beec5cd0d2669ebdef8ed0b8a93d90facccadcb6f9f2dd83f159ec82efb426bf35dd26befb6c6e8070ad64692f8add7d0c1e9db1beae6585777f9946b652f5fb7d057923d44768327a3ef2bd1bfc7ff329e038be9f05ae8d559199cb8bf5bd05afa12254aa2d65c8e5e9559679f86a2af86e264f5bcdc17cf337f65d73f8b67f5ff2d0ff9a7cc61fbe1c903ca43719b80d70fbd29973d0e24ef77e075d01c9b568ce92b5af49c3b5ffa21eb6dd25a326da7daf851227e413c3467af0709adcfc23298ca166b4782f7196ff68ce2a41ab81ff658682eb859f04c0739f47f257a02ac9b9bb751921f15eb9371bc9cec2ad9e6586bb877eda1f72fcbcd59ab25c638dd7f81ef7e4bf9b36ba91d3cbb9a15ad2d656a1e93758c1e84aee2646734973cd65ec37d59c94475fd0b177ea2d0260d07e87f63ad555d5db856562ea252d789bfab62f00e774ee85f9d43cf5a4d32deb7eb60f47a5fa76e6837ce3de709f9b33e2aae8f8abff81fbc16d32b703a0d44ee09ac517f5163cdf536079c898af9ddb28ac1fd075ea38a299698bb83a8dcdb32c92b93bb8ba89c42ef2d2af72fe6f10afcd3a13bc0fe084db6fd82e249830b317f3bf3b73ffba2cefd0c7ee1ea5b5ef7d5cd48c67b7b996ef6ab6fdea75c2bfbfa8dc8dded5abd1abfabd58b95e121501efe41ddfea39aee095ab6888974bb025e6777d19aa2b196acb96791808367016309cdc7149e976a7c1e0f476841db18ab2f8c07088ed7bef4571e00a83f1aef63702ad4423786f7d0300703d853d674661d8b9a3d7d7747939b26bcae1583d0d73aeedecf750fd442faeb89d73f737b84c7137b79f894394f6f2df159090e09aee95bcd6ddeabd86b997519648745b7d9cb79ca5adbfede87a6665b70ad13b8b51df63ff0f7939d668cbcac621f7c985a36c28992e2c8fb39b075c899a07d4239518b78dd55fc39a6afabfc18ba9a1e7cc570fc36d4e8b36d3dc1f321ac5853251d706d953ecb6d187796429f7385b8df331868c97ee38dd1eba49824811680a5760163a7b717ff32b9a5319b7d49e051c13190da9d38e629d7884b62ece5813b6d292f2a3a9d0bd612a0ffe71eadd5b48fd35c01763af40b60a5e5bc8b7134f213d96ad66a4fc1af736443f1d1a9eeb476a093d5404bae894a0ddf408a65e0f93796341f4f92b1732efdaee0219585c0fd043e5956bc38517c815e549c4c4a60f358cf9a62bb96fdfd98c3cbfa0a795feea65cd98af55f765fabfbbcbc352f273efcf61baf81fe3dc6318da13dc590462bb600ce5e355e2d1d49f309f386c60f7a04b7e69b8378a5e3a839ac631b0a5aa7d55c58457bbd06a02e017d2f5acf638ed5eb189e7abb2af637341f07e8416e698e612c9bb15be84e5ff4d7182cb7f74d6ed7fb5bbf417ebe6e41639e2fbf67fcbed8ecd9b826141b6c5dabdffe606d9e16f55d67e39ff05ec0037359231a710ead7d817b9b337cd363e8c37e85c121fcdae3a8a5894d6ef432fac5b08b51f324a0cd315f2e469f538bb19f867d1d07da5e719fe84a67e30d9ecebe8da75bbfe05a075a308e6f63b08201fb8dfca20f05afcf724a397ea3d89bb739fb285c792926c046c01b983eafe55a91143df723953f4efe079a1fa3ac2a0ed9e69362f0fa6118b6ee201ee5b53a6313ce3860ca77fed5383945e5a884e6ddd67814751e9ee09db92735746ddaf3c061fe06ae4eadf6b91395fb8e035dabaede03df58ce9118339a6bdaf3b8769d738d7bd8f13d65e7cfa2991b7af16ab9e2860b70467bf63e794d61efa2f43e8e6e6afdf4f04174594f64b688c72797e2a21898e3ece52f7895c778e80187015ee5e144ff5bdf0fc2e27524a8b967970ae6fd4cdff0cece7e2ac0f6798263255aab66529652a326636a99b82dfbe6acd6a6381c47abc5e8c7eabe167db816c5435e8be2f1cdb5e80daeea3c1e0e27f88b338e5c74bcc463c74b049637f12a89fc115a6ff02087cf03e298511b9534067217c74eb53098aa967222d6afa5b56aea7439aba47cb4cdd9b7bd7107f07adf7a14cb8b90bd54289e59504cd5f1be8dcfbb005f1fbe1594974e8c175166e645ce9c72ac69b4cea9f6adb794e8d6b4b77cf8a1a0d7f61da3fbc2519ba57dd7327b8709406d38b029e699fbc6ff7fe8b1dfb4958b55e21de5e15fc5d361d361c0fe493d90f9e0a1e631c57a3aeb33afe65a0f6b0fdcbbb4814b68e6fe72d1bb9fb0f8ba7d5ad4fbd456cd729155a9bdd91487fbf8785f1b2e68dd70deef7fda3a8f81b93ba0bc270ea465fc511beef1a758e364437976d8fec2653972cf1fbe6327f06c928d2ff978f017e3d8caf03f1f39df8a03edb0062cebf3ac803d0a8f6aee3aea39efb478ec0bb62564cd916ff4dcdae87706f0df419d8af5066cae35d15a09cfbd5a763df82db47028be77818330f7fbc6ef2b67b2cfc6fbe3727edf2bdf8e374fc7df801fab8c1762c575bdf0c879d66c11f7d1836fb8fe2377f0fcb154e375b7ecdd9f045a960f182731b08e5c8fe25a147c8f8eaaf19c2859978cef402cee606e6c3dda4f179413325e3637398038ebc9c806fb3bdd029713cf3d11253b1d3f4af82bc5736f9027ba8a93bce5de6cde9a5aae6b7ca78031884aafe95727c91646c3e0cc69333cb885b2a1b3dc73cf1d7c563dca1ef83bd7c5d813f0c939d2de1695ba99b679a5c079d7c03dc9c61b84fe54c70becbbb6dad2387c130fb56ff2451b5822a331323df271c22af651a752ccebb9c66f5ff0d34573a59132f70c0f1fd8eb37ba423dc65a6bd66211258a7bd0c34e471e58b393c21a5ed851b23b526ca1e662b02e27253c67d0e7d19a35c93c37f437add12ba25cca454c7aa07d2718188d7c61748db8e69ba4c738d575fc982346e99d2f1fbe264f0bf129e3847e789bd066bc4d5827beac540bbd27a36f2de1c92c93ecf55af39ad646e4a9fbbc8e1737f923a71cfa5ec00fd8f0ce831faea864b97ca53881b5bad853eecca37c44cfa08eb37c10958593c0df0de370c0180759c5341692592893b51dd379745cc65bda8034662986484f0e8fabb4923e3effbace77e279d773ddcc1e36eb47b54fbf4df6859d55eb31f7833f65adb7a76628f4ecec5ff8ffb4ae717e7c432392d61a8ff54ffcecbd0701fc9cb1b75aebada855201bd673d316c7b481463f93717fc032cc7d058c4acc980415cf3df7c99fd871a007df0f42e0fb3ee7ee1fe0bf4e978f9376650f1e96e3d99d7bfd5731dedcbb59e3bfc2b7702fba34fedaf68931758ca1aea76dd0f27e92a35f2f936925fd40abad87639f7362ee219e22aec139f11c5879608a812f403f3c353ea7e04a081e4fd336a7fcba714ff4b906f36c75e393bd6b3ccd3ee105c50247f5cd7800d05e99d0ff3f101bc4eccd59abdda9a15c05e333d08d74723ac713f724a647831768b1e7f277a571cd9a8c0dadad9833b4560ab39eba73689b798cfd1bd25acbfa67ecd11a30e6c03e197d03a52eeb6151278c85ace581b95b327908e5e3af1efc2138ca386fcec3ea69bbab188b91c22394d6713a5fee1dd35eaf294e72995fe2bdc5155c7dbef12d3ead695efb9b57f4844bedcefd9edadad9c3be78563f577bb5cf1f27e5d3e79c7fbdf237d42bcddc00778435954494ccdab7982af04530c69903e475e39dee8b4e5fe5b24677fa3393f65c5bdabed575b968d540a307dea27963b4445bf84d629e877e4eef3d4573977237d3632918cb3fa7bd9e72babc313a81356212788914e03eb34fe2ae5209b44a2df63bd7c7cedf433237a136dad5c0349a1aab4bb95b7ec609efa0dd059f8f21fc9790dbf17ed6e180f0fbe0372b1a61f4a276866b83fbdaf06ecab39708304202de27c0d4e0b3d652961efb72d2e32563ee94d141eaf81ff8bcb9cbdeba097cb12c6041a147b1b9e6019e7ff7a2b9fceed76beef575eabbff3d8dbf42d3aab047dbd5f8937a11f6ab6db4a8ddd2381a9b7e35ea76d86f801703b69d73ae8e632278ccc9c6f87761dce5ec25cd7e5c733356cb82fe672d5e8aa1da82f16adb6edc4a5ac38d9e2cb82f95822ef4598336446de5868e67a7476c305c0e6bbf4db9f7bec51e6731e613792d63f9d380f60637066739af62bfd3bc0b2877aaaff5e52eda7323d6b5062ee9d7f30b74e78b065c1efba2e98b2f5ac17c1f60e78223738b8c2f1abd6f8b3cc5e278d378a2413f8ff636e8bde13c383e4d5d33372a738decc4670d38d48f1847d89cf7b632e07d916ecf58846effa375095c8146b12e5715636eca967e03f87d97bc0e53bcc1da7479a5fccca6e3c4e02f74ba75de956e9d77d1ad333538ac698fd03c62cff373ef490f50d7e2fdd736fcef863504838abf33fd069de7de594fcfe1dc9f72c63deb3ff7e57467ac013e5b0c3e738cdca7a6ff6fbd76091d9f753e4eecb3a88d4ee4d92ff1f8ab5fa29c1b8c85df69200aa395edb2dea2f16e347e895f58e726853fc0b5eec055fdeaac23099c21eb481e8d8ee4cd5a18eb484e0767bd4ad691ecb48581f7313536e86eb2460eeb6e720c8c7e7bb71eb4f2cc83cc8d873dea1b8e3cfbd71bafc496d63469f898e02b328fb0cdf51b2dce7ffffafc47e6dda7dc977bd52a72e034d44256d2a77d6a47fb077b446cafe61aafb1d883b077713dabb9d21e752edaa3c5009af7c9e818cf5d57b11e0fcdb76ebdd797f5defb75bd3f5ecdb7e3d57c3b5ecdb7cb7a9fb2bfbb147f5ab3f56aae5d6bc3b2e6aa3031b0003f97735707fa1f765041e39673ed138d63d9f27eccf32237639beb78d0562df7f0eb307bf186f34bf0013a9f525317c8c13d51ec177b35df283ec79c03070ff889f35c9bfc73fddb9e58d074bca1314bf7ff67f638d914776cc38d7d0e5ef50de65512205f327914c6acf91f7927ffcff51be4a1783d6b1fa86f3f982395eac107fa47dc37638fef5aedf480715f6bbbc3f8bdab6bdfd4455237bd34fec49a4cf79f44fd33b75fefe3e416ffed7fe9daaee0210a0ccc229ebbd6b4451f4133f66157b197bcd6ca92144399c7535ac706d0df488051b50d3687d6f98bc7f5736e74b1bd4a352ee3af801dc51ed33ef969457b12f7bed95f4521d6c3fed0bcd1d5664d84f37358f71cca3570ccd3d350b459b9ab14fb4dbb5189d883795058cfd1b3b44cce09cd0669e5f59f5c07d3c3be5ade75fc6ee837d198292ad4b9e75e4de3d3f4cd80b509fd69c57cbabca27d3ff44725fb41516e8ad884f643f458e2a16b7d673da04154425f52cb0574291c736d6da359d1aea0df25bb3882c7e456b4468fa4fdcefefcf55f684b7dc0d378b8c9d3600ed16d9e469c761e6f0fb64c7ad7802f6baaa568edbcfb22dcd25e76fead6b6768e2d85fb5bfbfac8c2f1b8d61c46d143fa296897ace806b1a537745f11c7a815c13a3f52aa618bda4387d5719cf7a8a67e97dcd6ae8badc9399da7903edd40af5189ff2aee980fbd99487cd5e59d785eed367b12f4cde701d16186cd496247a8de0067c432ede46e7b83c35e7881ed189e2723edea68cca60c0b822704f2ae54bf04ea23217f49d62aeb90b75a0dc7a37a07333f12dadcd36f2d272f2cab12b6a4ee67750f0dd42bccd792d6b0bd131f139cb577c2ef649cf9dd2798323aadd0b46498bd05f87c08f22f70f9167d36f667424443c7785dc9d90bfd37ac231fbce7c07cabb43ae3f9fbf3ffd1e927d2ce87ebb2f0d860af90bf37ae933f29aaf93e0dc00bf01bcbd9a735e0eef39e4c4b61a9f902b298ae931de3cd4cbf05b24e9aff53da11c697a7a21f7f4fccd6b34bf9c1fd7397217c74876e618a188ca691bbdf9ccf3b9615c620cb594570434d6706d783c0ad44aa0b946e73096ac5d849e01fb91c54357c4e3137b0cd16b6c738ed0669a626c288c65f5827e211f83c7b59f1bdf338c5d01bc39f7224ef1b71f0a39e50d4df2a2bd5ddfbfee07f4adf5d3fa9b2f26afcb6cfd6379d87f5a8d9b5e716b835a721395d24e307fc1757718c71a6868c7085a630acecb13f4ae065199f39acbfaf42d708c5bd685635ef514b8de78e8daa803a06ea77c85b503753d8bf9008188ca9d8d9ef799a350d85d8d099ac1737aad10f4992b6074248ffd40da74de88714bad4d8ddf858f129f17bce4b8ee46b919b8542de388f6afa62fd6f126a049d3f9c5a256821a3f6b9528cc99c26879b9a2ebabe37c123e47f01c86de4d1ddbd5107d385a17a0fd637cff9a3798a3f4d446e594b1252d34f204ad63cc2fe6fd026b685274befe753cc7de44715863f4040c06211f40fb672b6cacd79dfe0fbe073ecf85f6326a34059f473b29d9e7c6d34603e164f0f627f90653f0a6c77a0a87ee091c0ebfdbc7c061aaf1dbb421d79050ef0fb51a4bc1dfd1d3ac1990bad0c2189afc01fb21eab72df75b0bd6435abcd15e788871fec03b3666df602d68ac3569a59290e243110f452daffe686c99df49c0872799766b69138ff1190607069eb7cdba0ba1cbde49faa2bbd0736d2a0e59bb5c0c4436fefab01adff5a3dff39d022d856e3b7dc20b36eb1cd79f7159c0f05d79101afd964b6cef7731e0d96794c6b4fb8e874debd74eb759496bd7e6055811e076d07b87d6e5dcdfbc9e6b3cac3b2c9e8642acb7e20f8c897db50eeebde97fe987b13b9da013e207d0f6e631929b797dcd6bcded277f662377389c1ac315617db22bbe63c26b30f24e83f9b1e6d0089edde8ef8e5ee4e1d486be0ad5337cdf1bd6139ebda831704a21c53df1d0b3c0ffb6f55151fc3b063634845fd48ddef59ae27de4add0006c199f2f59b338d00d6ba9721ca5b83e031c37b86eb63eca2c6fe7fe12fb21bcfff6b9f541de553e3d4ecad538bb35ffcaf39a9174f3530d4cdda2c63efcab1e45d66bcccf8a9dfab91ca7cd7dacbfc31f367271f687bcf25f81c680ad16c0bfc11f853d8f273634d7681d8247b2685847125e2d8ce16fbc5aeeb475f5d8d168f2b7d78fa94658672f411ee3478a5922e886aa17e002d96750c5736f30f715bdd65eb3263f748ae8f5375edbc854b7ebadb09ffca5adf059d089b5a332a3b9d202d33714ed77d6a71d3c0d859d95ea453de7367f2faf96dff8980af8a909bd8fbd6c86c6f3612b1cacc9a5d1f6c6f79cd2f774ccf7c4fb8c8f0dafff7351679d7ec3c2aceb58f773d697a1b86fc1faaae8372f744de78cf9687865e0c27cf43cfdce9d3735fbf2c14b90fd60fbe2bd47cdd4feba5b66770fafdb75a45dc51aac1863473326db24a118210bd523ed13cb055d27a30b3cb8fddaa09dfb99add8038bc6a36dea9a18eb51a2a02b2f85a8e3b967d1d85d97cb17456b31cda1ade7a2dfcad73f94895ac844519cdf69fa8632592e64b2ecc609c6136a9c34ee6d1e53f4d8dc0f6cda278cc749fbfeb8cb1bc7dddf3cae3abc3b2e7db74edf991e1bd0634f889dde8cf9d63c37f8e539d6cea0df6f8ff8a8cdd8efcc3298771af716af4ffcbbc983a6f3010ff8c9a7e34cae3dd4be24dc47b14c2d908e17ca9efcddf471e2afecd9e7c41afcfeded352bef9e46f16147fafe107171ed5418b75390b5596d3756a433fa4d7d851b209a593bb140745c992d65b31c7f543cc4c71921d8fb59be13a6fe0d7a80efaa846742d67f6b92f9aec2f1e5f3b51b36fcf4597913d46020bebfda1f3cc935a26eb37ef03e777f1e67d4ee807cedbf74177eecdfbe0ab7cf5be7eebf1649f2f66e0e7dec7d62ffa4ad08d858fe0913180740db397f811d762705eeb16144fd0b5589a71143489afb572687c4dd887b0ece911904d7eac0eebc5caaeadd5e28e7d789f83cb4ab50170b1aa5c3f001f9b14b40f429b5976befbec53e9abc6158c218286be60dc7be19a1a961d95b9c3756d4d7fa68f82ba761303d3865a52030d40d4fccce3c0d04c5dc6d3a277e19a9a73cbc7609c6c54860ed7ae526898c8b9eb448c8977a001dba2ce6373bd4cb25f33e7522eb0760df75554921fa33235b77b6013b90739b58c06139db3231be8a21c59f33b30fd4fc91e0114030f5d3b2a8b665de2fdf4ddda183d07d701be7aeb0ea272e77675add837ba01a8c7b2d6097058fc7b718fa6d495028e08be698c15c679c3fff9d8e18595cf9eefa8d5e3b70e5cd31311d2f4b3543bda181da241e7f3dd697323ae484c3f2159b23ee6d66db96fc3fd2fc9bae2f4bfc3b833cfe17ed0ba8cca5d0d0c18e20fd42a0d866cc79a0f8855d614a358f43eaed1e27358afd7c7f11bd387ada352f3b1cb35c718e02b431395f58ab8265c330e6e074e43cc78cf139fa347dfa952742ee89728e36b78f6cd6ca332b5198f69b4680c36ba6825e7ff5cb76d59eb815e477109c585c8232cb397d85139d5a84f82eba9a18f0e9c10f8ada6deb8755d052de090fb8073f7c4bcaeab7300de1e8f593d6b4bf3c251e3e5e293d6943eee31ffad5a87daba75dc9d87b3efb438e9da757a9c8da98140b7a38f4e4e544ec5ba0cabd85725b0cd8c9b69780d492be4e85bac2d7c6beb262a759bb78c9b601cef8ee682c5e3f0ed2dc7d769a5caa50d7e832dd9c77ae8393ccf24fa7c0a1ef6fc1873e8d01fb7800f4dd0f33bb246cf8ee6df202af77df75a71d772783b1e6233e757c3aec65dd0daf922b7d09aae147a5ed90bb0b5c1a9669c0def7b73f463d73286b6206a450eafc3ae60ced5fa05d89b367b955b5163bd396868224333bd453fcc7ac21e9849f0b8841e44a5d71aefde508d4f47f69398bca8e0448f7d59013f10a0f6fde6f9f109f859d45ad0ffdbbcc0e36b8b78dc5e0db92fc56b7078c4fb0f57efdfba27b93855b2e9ddf74d7267b25f2e06c9d378d47c526d9cbe9eacf595c63d6b31a157092da6a3040fd87bef9b7bd198bbd58f395dbf9e7da01f284e6f8c3f3430b0e096ed73dbe8859dd8f36daab95e01ccb40b6ff3c675a17bce6b123ce0e456d8d083e238a9ede2023cc7186b075ae534fedb09ad7f75bc38b1c6613b93d08d76727815f71d63cbc5403c2dacfdea7996e48fb31f85bdfcb15ccc1e56dfa6ff5d79c441fd280eeab57bffdb31a7ba7952abb96bbdd3b6be3cd6edaf7554663df4b375a5b25ff7f1ddf9b173cf626e34b47f0be74bb9ce92b9aebe363e0f053cb838869c5aa85d6d5d371ed39e3c1d301f07b7265ff2985b31d6accdc33a4f987f32319af38d77c11fd09aca589e9a310f53c7e00a6c931751fed5aaa12b103f005749317d709ab681c11984e6effaffa0492fcf8377002db667eed5b38615c502217d4fd768e61ce3a1701113e3bee746d0d1b9eee58bee3e9eef3bd79e1e3fa7dfcaefd7b3d17baed5e1864fc91b1fe5bfa10f7aad217be541020fe5e7b31eb1cd3a8b85e69adc127d92f8f1c711b86d70c66ff534278c1b0786eda203c5bdcdcc963b5dab513ef87ec0780186866bc223eecb703dbe0e87aea380ad772d9e438136c7d332cb6b35ee3c7f2fdc20e8299b3af713e5538fc8d3adb9cf39a6024e98f5a9c0a5c9f25a8e3b6fe02b3dab05b4bc2b956af40fe8187dc77331ce364f76d630eefc5e777a972799bc24012e541a7ca73bc0784ee03f5233c79bd63ed9691f88f89b44dd242a53c73c8e3c9e62e7ee98d396d6e4a2418ed4eee05116c30702752bab80875ad1b05e42ca7a3f8e590f53e946e5ce05cf87fd221ad6849a76f59eb34f096388463ed76a3c018c5a02cf23d4c78a766ab051d0dc155c8b9abc5ee312a609c5473b1bef19ba03551a4f393f68427f048c72ece71a79447a1a44652078cdd795a2df2901c60abc7739f75cc69105624d7b623be2b9594a7eeddcad19d78563543299bd28d4de64653e17cf41a7626eee83473bb32947a4e3198ca90d0e087b82b28e45c2186b89df31d5f07b7dcc8ff158dbeb72d333af54227fdcfbebc749433159321e55cb6faacc1f1f3e67edbd9fc70a6366c489c6a7739b17b1b9ed5f718b17b13be3b36e6a9a9bbe8a43713e7cb76cdddb832d75669befa9b28ae709c5dec0f81687d18f4f5a5be8a761c575cf3aa17c69f117facbcfd79ae21d96ce3c778027ff2d3de6f6ad1eb3c91db73c0ebe9bcf8fd3b75abb7f60ae4f8bc3fe983f4e06f7b9fe5f30d7b387e669616d8ae7fd7daeff97cdf595f3f0df50cbeb83913631ece695eb6de11907179561fd7dd7d5eac22aa6d770de034f40a30d017d0f8e99a1df62337777ea666560ffba66b06edf2494c0dda107dba2d7d82226772e5a42466f688b7e59cdf178002d3ed651471dd08e4aaf791abab5b44f82b1b9d32a4e940fefc0216b5170dc2e6bee25a70d6bf86525c5c5dc0fdcb14f096b9e713e5016acf970009f82fb69fe86f144c9c397153c25688c7a8607c21c6369d3eba079e444d041d103c3411631b4e51f36bc7672af94fd078a2aeeb0bde5c397d55c5cf55914b46ab9ef59b8dce3e4be6602ffc3356a94d23e1dd13b2d7beb9b256b7b749adaa3d7d53779cf2bdfd5eeb456e3d391fd2a94adec1b75926779e4bd10fcd0453c36fa9765f0563b7324ad2e875473cf5d97eb90752aa7d08098fb6bf3de8f796feb72dd7194ea5f34f8da37ba9da3dc7df2d5abd1ececb5a766e3cc5d7f53c7e2ce71bfd51769fe8a47fe3bfe2406ef28e6fe12f87ee0218d57caf79d70427f7fe59b8d9af09517f1dbfffbeda7595538d9b6b055f3b4f8a4b8b49ebe8fa6662ea2d213575ca1377c71759b2f6e434fe0bd77572d59a79ed67de804f33e1a30a76d0e8ea5cbfbf3599bdfe88376ba8bd2416d08fb1b704eac17048dfec0e61e2f7ccf05fb926c0c4f6057497fc6defa4317dec66aa16be823a2ae4afbe454cbe4215459eeac7cf0ecacc40f06b42fa96da7af1fd8677e722b8f866b6e4567fd4739301a4b1673f2441b9581c51cfa947d9dd0fbcb4d2db5af3ed8f2e7d342ede11576cf03dee5017cad97be046729674e6ce3b91c070147591b3d17f81c9b5e5287796a186f9485f1dc75d4181afcc66327803e24c52b06f3c518a854d672de1d5fb346d9d683468bdad3feaa711ee04740b325e4ff93422bd670719efca0cd5b5949d6e2b2803bdf024b68197f072b6d438a2305737ba189c57c9044ea3895ad89312dee6349e6086ff933d3966bc1311f9b6e075c8f2d34b4af711e05bf07b5609c97f5fd00bcea89f3de5d7bf6eb86466161eecb4a65b256d0c7f30c3e039fd1303f95ce0bbd36d64a2dbdf3e798ef51f7f574cd9e1faab99d0dee6bfabb359d7e777088d65b21382fca0d5f30e09a3b3cfd5d1b711638c79e600f69e8bf31079de2ae463845dbdd67ef1e833738319fbc600ef8903df4427f16d27750ec8f034e961a0ac33b9a717f6ba76bf47a81a3095be45f42321610730a7e3e9d86b913faeb92b10d3837cc25da07d4dcb38a36642fd9b9f1b0a6bc82b5b3d9ff8fbd5e047bcdcb4ab6eaf5f299f01e101c8f0496e153b2b625ef411678868eeceec35334f4cd9e054e3deb0142ef953d458f72283ed0fa1bb5e7fedd3b9f988b96667f2d49e83ef8f9a2a679f2fc29e7474f1c103c0338a6816631c6176b161f2f9ac5eb4d546ac1ba2c1d4ed8689a2046086dd64e494dbc64748bb90ec1faa4c95923913eb336ba38276974495933714ff9327b201fe4459bb49436eb574257a6a63c799a0406c3dddd42b3196baf3af771df8c25787a5f345bbd33a7d778feb4f19c72f01cf5d2f3dff0dc73be8cd1c71cfa01f1e2e6e77c4928eef1a5361cc00d731c4cef6e887dedb7b43a3b9e4a3c7407cafebbfa9bc1c0e8dd969d862ee79a881bf52f1ababdfc49159d572a9bb3563fd73c0651993b582be81acfa18fd372dceb416f3a66cd6017ba0d8c17b7d86f87f648d698c7b17bee93d3c56c47f1dda75c07faf50a06e0b32f02ce5b580fd5e435b3eb9a97e91bcc6ef70d6ef91e75da0a3b6d716d78d6792eba1dff568dcffc5d6138b8b60a98abdbb7de816b6eb063e77de173d6917be50de065017b330b9593374637017cf227e81b4c5ea264b650acd77854a9bc60cf6ee0d0187770fd2784d156a131727a8b3b0bf559636f0c4f4dc1f5178d3d28c658d9b4ddfd0e57c6188f9d660c5a771f7e6e3d7d0747bb6560708df7b1f27eac6c3df61b844f33ad09e7fbb57c96e7eb7cfdc73842ad65e21d65f290403f9ef1c238def703c5b341cdbcfd19d68028c1583cca83c6ba6038f9765fde2fad09c9785f3d7dce1ae8eff31186e05dbaeb7212c64637015ca9b957cffdb0417d738b78a4612d7ecacdc1e306462e5e6891b701f78380070d0c4edbdc6fdcfafb4e301fe5a2f5c5baf8ed0e1ea9e89b00473b7a51a3dc99fffd9c87b51ee6ee80dfd39d07620dc33f33f7f93c104b7de05fca3c7e1e7bac01d0d3f391c6dc3deeb8157740ebc63698523b4a968cdb3c681bf1c233b419fec09cb74ea933fb591cf6fb4fdafbe883b7ace385aee52817d05505af71a7a1735106f5dcdf2fd4f30f251bcf068f3e19858ce5c36b1a7acd1ff0267c2868bc3e2eefbd899bbd89947d7d0d6f15ebe5dcb5e340523ee832fe1e7d44976bba946f692d8536bd7ef6ea887dddf532b96699763d721cdb97f014449d14c7002f6bebb5d8e3b30f3d56c56dcdddbcd3f216f03d801eecae858701b023a1c37c59ca49293708e071088fa372e7cca18f3a7b65addd1dbd96628441566e4c1e310ad5e38f63cc75a501d7f7f6b614676f3f1125b317e6c3f5f5a2c6dcf9913f67772fd5db6b79835a3fea413bd31f731dc5d71a1c19dee737b61abab664cd1968d2c82d749044a7899495bb2af637d05e331e91463359b29f1cfbebb5f13783cbdebde3c438373831bf9f8b6caf7291e1552e32fc3517d157b9887e9b8bfc266f4aee7fe533e51ff3997e7b6c4f36b97d6c8bf1a8bce73b37eaa45baf454cc95ea9464755763e8fe87bc6c1093cee15d6ac001e0b7221a1afac1259c58cb5ab51eb2cf5e0c90facdb6be6cdbe33f37128366adc9312d0c3a0f1fd4a73496d8543f1f9ba0c58fb0deb28789cc0f443e3d768eea2fe4afb3dd7612d738be7c1d5e55e5e6d786203c65bd16719cf47baf5d18f18706f2fd0ac8bbec3dc391fb76fadee307a5d8dbf8afb3afb6e9d6dd1ab5cb08e5f9464181bcabefc7fa9e77d845598ddc42a7c806bb1fe02d76203ebbbd0b532ded5e855ed286ecc5e546634fbe61ef050cad6edba84de19e212bce6313f1add358d9a1f3c7d95dd3bdf3aec7faec7d9dd5bf766ac7f735c705df7fddaf312255cff93f68df171d047da272563474f5122afb449d54636ac272d59c3da31da04ec0388f525a8a49f6bc68eead6fc5f619d631f193b82ce359eb7c02f3a9c78bd8196b83b0066a69de22f661f6d173ad9881ba588f09af3eb382e19c28fac31cfb5dd738ca309102743d39f8fc98f97d2627d165a5f33c68921a6f5047b64ef3836d972fd332ab53d452f083aeaa74e2f095c3370344d5d83b9648cd179ecb0606915fbf951a26e06ecae23b9a7d29d8bf1420c284671f018fdee98835ea5e69e73932ff928df7031df7020af7a62bd7bafe9e47565abffb9afdfb7e2e489af788c60edbddc0f1af002b94e7afd77bcd4d4452d47b2361af2784fe84fbe24c9593fdfe8abbfe567b3c615eb5341cfb894e8a9612c977ba98c0fbcdaba836952547142c7ee6e3b3fdc80d67d8a694b9e23a9a9afa596e1fd09c309b1e3f44479692bd1531d3da8c61d18ed7bdcb2b75d8898296f3dcd71f61fe58d0f5776fd39e3873eb5fb4e57189e0cf058b1d8df175a0606e3073d83967d0f377e7c1e7b0697cf3991c33589a0655e807a91d0dbf21cf0ad935119b1d769a54ab33652acba93b5dc42df0063186b219d5377db376eb447afb993bde68f775dcf77d8c039e531d947f866719b23d6bfd7fbdbb10aed8b583f0a68c21a7d00abd30755c038e84e6ff9a8ce7a92b2921c5b42679963625a53379de6b2c161f1fb0c160b7d0fb5cf6b75d0ac253a8497358f7bc3eb369a716ff4e14cccc25a735b71f5baf0579d799b6b23b9968c7570ccfb4554523eb5347e4a39fbf06cbd2b2e7970edd7ddb7d6ea3f8d47d5d2ce7cd647fb9c1a04ffd7f668cee137465325b8d254d95d69aaec7ed554195c69aa0cce7be381f6dac061dff6d9ab998b7554d2ba5bb0c7368e072d25f840c19376e8d652d09a3d7559cb10b7671dcfb397962f793ff073e007697c32bf90f2cf5da50e465b1163943597e03fbd755d294e8c6b444c1ba0762cd9f76b40f105eb96840eef1b21ea23f83d1bf67454ecc7e2304e2960dc3c625f694765cec7eb7c2319572f647a62be18d7306a53ef18c02b0bfa233b2b4f28962f184bd4745ebdb2d39a347863ef7475cbafa1dc66883a357b99630ec233d370de640b5d04e8377a26af9956c02137e67b94ec0fc79a119c43487f24c189a3f100ef19cf3ecf7ffa1de19ba8fb6a55f9ab71b629b69f320fee879587f606d66553eb32783353eba2392fe7262fdb9a1ad9906b66728bb16dde979b3ad8cebc5f9aff0b5317ebfebaffbbe7433c8e63f78e7bbe56eb7156ad03f5b3f8b6fb94eb793fee5fae65fa5603e9ca9fb75663dd64a57a91c9642159d748cc4d9ef3f763a5d1dfe7d35f622517d89664d49f339daa9fabe7d97ef53cf3d78fff653a747f4f6fd356d041cd45deb0f723bc7910b3c1a7916342e42dcca1e61acb0e3ede51324b78cf2cd0fb54cff2da078d8e69b14766009e405406ac0b0dae96b413c642358c8b66fd69d92e7df85cd258a0bdb9f16c5317335c975969f8a7744e06bbbb0387b568af39a3e09d5e38a30603cdbea55cefe31a57ceb5bae0847abf1a9f9cd05f33d6051a42b960ff7d789f6853db33b54261f41e455334174e2bfd1651a94d3ff89a4bdbf9a2f43b86da0a272ab392b5bce13f6ac1bb730b9da14a3db2fe2334bbe7b8a65654864df7bf2cc3f3e306f7d3ae86c2c6ef8bb95b1c95c518a0de7bad3d10cbc540a4e351bb1e679fd673b207960198f4d0e7db04dac301c73b1c4b71ec54865a0287a0dbac0c06b7d75b59c964fd2a8da7a4c1ee5f72a5e71f0a7e1059eed07138ff02ae7f30f733e30db159b0ef03b4b19cce3beb56cfe309b5b5c09db694af719dd9f4d7dab0dbcf1f1103832bc13131b4f7f03d561447a4ba660c6d7a846f3ab8319ee1c678cc8d99f37df862534c6ff4e8e87f53abc5e37f76ac7ece1cb0b7a7ff4123678a0349ebb3e1c050fec49a68943ba5edae52ace73e605ec35ff18497ffa4f7f611a7fca8c04bec57df879e63b20955960be3a3050c1863bc7afa9ba71487ee3fadb7658fda02c6c7073d38dbf8d6fe3a3e06b7b10237fb75a6ce300b635cd73d1df34bc23e2b9de75933f715bd0edc5a5cef1dbcd7d87b67e83557ba03368e3917ced93b8afde88001844fddaffb3b6b67bc18ef38d6f61cffe26547eb1eeb4237e7b5fdca079ab15e4b9cd72d7dd29e63b3592e46e28e75b9e9fde4446568656558a38edf6692f256daa363c355857f09b0d4859500675854121e5d691523a7dd87acb7ba6b56fe0eb551d6a9770792fe76278b35e283017cfe86a8a3585199b72636e67e6a3b43cc67fe04c7723be617522c88b5eecc39ac64b97fe5be146a2d2ed7630a0b3daf36358f4133bccde7ee20869fcdce700719d7a3fcbe7dcfd97e35cec43253ce72919d3e650fa25fff93f626f8b21a4df8a31c0af7c95ff3ffe00d7b02986ffa9f71c7d79a6557b8d3e5cd7c3b0e74bb2e83137b926d5ed473eeb227d986d69da3da693be1588cfd313bcfc79e9893d9b7c966f93c6befd7fc56ccbf1b8406d3a95aa3b1851a757ac65c28c13929eba1a0e6d64ec153d574df5673ee49a3e6bbf55c780edccc0b6e8e8bd74e435d7e83ef29ed3fa6068b9a1de5d1eeca47bc67c7c1a98e59dbd0fdbe43deedae9187e6f6cad78ce7400f7437808778b297b2f4389eeac9599c7ddb57f9c2fa918be57eb9f89c759cdf1f4b5ac781b68d76d6bb38690d4db6cd22eec78b6f9f86c2fda056f84e178fc65cfc8fb1739b9728d92c94addd356a2dc06f84f239bfa9d509fdb91d78b24ecfbc6ffcb4a8f753fbebe9fb3dfe79afa3b9f5eabfd00013c617b996fbbcbe601bafebc4d0c6349e65b4e64d24fbf37ca0b9b9d375bcb839766ab9381dd556d8ecc713c29f58c10335b3e354f7c5c7d03810cbc7897c7a549f1327d32f4ea1ebe55e719f6d6938501c336c166aa75bca6f503fe53c893de17b5e97d578f439b54a7ae2e6b866be7c45ed6d07cd1afb097d7169c3d36a486bff7aa10e1ab5fc2409e0c7af1ef35ad9e0b23b4f7e5aa9c3a9a2effec4afa51cd84e506fefdb7f59fe5c3dcf8295b3ae56e3af9b65f0f5b0fc9c7dd7dfc7f40cb9af3df7c3d3554de34a13133a310ef2408acb036da3763aec6a1b14b3ed346b26b1ae2c78e4e8e318bc70a76b74d0955c9ca049063f51f46e3cf69282361edd16f02386aed9e38f233ca7189bd6ca143160ad1aaff90bff1481daf210f8c9f6ec4709cdd7d1aba4bd60e8d171dc37d82160950ad68d2a1f5e81e3f00b1a8b27051fb6d465ff8b1dc7945b57b00faa84568e6cd7923574759b95e1e90935c9a0776cb0b2076236feeaac0ef5cffc93c69e3d7b88e0cf70dd2cad54397b35de19ed137c48f77c2d93e02813f5c2f58865f718fb4e6fdd53ccda3c4d94a82f8c372a58a399358fada84c9bb9bfabe244213f510deb2623c7d8fd451ffb70939f69fff3fae12654a3b356a9dd7b5c3913277f9cdc39f0eff73511faba8a7d25cfeb01f2d129308232592f6432a3b8e2a8e0a38ed782f7c85eeb33f8abafcbd92b7313f531ee9b7fda594b73fc5e1f7d971f880eef13fbfb92b918ac5f61f8a996c1acb177f1167d68e39d03cfe8d6ec5747e8b896d326321e3eec77289aa8d436f06d6de7cd18ba9df7b564ffea9631643b1738ed8e8f023f21093d2fc51a63ecc70c1c376b6a61ff01a6b0f34884666163f0a903d45d7ce005056b051a2e2be3f16ce3555b29f6ea3af1710bbbc324c8c675e221b072147f9db5d8d5dc6d597b533aec1166307174dc06185bc35d97d8db2f9f3545bd173a67ecb5cd7b5faa1b68b06dd92f2c2aa7c6573c656c036bc4a12e23c12bf65a73bfa1df1dba6343b7668eceaee6fa4de7c92c2a9568fa2d8f064f08ef71c660ec58e77e2b2a59a615f023988f53f6379a9bf7332fc2d4b934ae3b634c760deb2706ddf714e7eb0f7e067a250d6ba1014382ebcd396568eecb4a96c0e40fa0b508dfc082c70bb023f0cad48a7dc45bfa4d19f3885a78c3bf29b0142dfcbcb7f41d72f8a047a576a372d7ae703d718d1dc931516374526d7590c6b3d5a3b12f2268c6c25bfdc8c7a7c7f3eef76b784c159d6e4cc598c67cc0b190d4d0d1c3350c5aa3d3df3306dffc5c5bb39fe921bbe750eff79a9af9361d9ec8331cb21d34eb8b86f143d09907de8971b8f15c005fd4e9fa016bc4757bfb560c5f3457f89ded55ac7cee7302ffc6d88c317c5d191f0b0d5d688fbaec05c17a3e6a4c712f9deb6413f3fa37606d54e3c3301795f497ac135442e782bd16dae9311e7a82f27578c1a3369819cff91cbdcf15d6aaa0351aae3ce78d974402dc76e0ac302e3b7d6c68cab6b46ef48c89c295b34e57d6f2e71d7b71dbab01f1f3dcb5e3f1e968e2d82a4e4692b1b4eb90391905eb0842afbcbbc6146f4b2d9dfc0aa769b065c6af68ee0783b77ec5025a772be6ad82a3ac84b6d65b513ff90174cbd9db23b779bfd894c8c58057a2f5dce8693247e3b4c21e9e4353581d50ebb3a3723750dde70dcf9c1011950163016d7a1dede93ba7f38ae53d5ba04f41c7627e7e6edfea5f1acfc157c57b033c55d003439e119ca23207d699738dec95bf47ca7878de7bd82b3999768ff131fa8df3c9ea30f9f9fd73f2b0fbe2cfff9a8ff58b9ff6c73a3bff42338262255bb7ecfbc33c4fc6e061bc69c303b1427fd2b2668b604c5e839e3be60af3f6bd237856437770d101fad03b2554596ef1dcd9f7dcd3f75561ef9f9fbe7dd2de6a9f5ed5dc337daaa96534771ac31b631e7bc2fb2ab8998c176b3bff27d9b076b089e34edcb3a0fdfde19579fae0b25bd0f8a7e3b20fa960ce26728c01eb3bee8d1f76dae1a6bbf81efb37c77c69b3027e92f29569a592cc87c6ffd0f0f886d001b7599f39004fea5d7f8fbf17fb0ce37be27b0b1ec78837e97b0af09113fa8c25add1f41d911f9998fba486b43e1bcf83cbf773c029dc1a4e2afd56430f39828953de7e7673e3b3e13795b22f429295f8ac06b94b039cca9c3964b8df5d9b1bf3f6f7f7cc54c78b13f40ab01f8a139dbfcd981acfa6384c8a137d9f76056da55077af935bcf5ea17ea5ab183529092d66999e44e8ef5f11a3e1fee615f8eb642265e3b92bae3f0107d457f365be18d8cbc540ac9cc940deebe6bfe86b5fea7eef30838d7b427f7148b9a92b24fc39283e46add98eb3bc9167fc8cc775c32b7e2ff691b7bd47372ad76554a6a81f008bcc9ef4cc8728f70b75f6b612f5352e958e1f07dacaca7da7d146b1d45126eaaa9ea87ad45fa1d96943a3f40f8eb7fbbef2665f819e2a7451fde0647438ad27ff03def72f1869ac89942f2692f2fd9af9afa3167bca103592262a75f3d738e99b1a4536e33bb2857afc71a43ced8f689cfc9ef7a286ce567a620f85b9572bfbd4716d51b3315e8b144b5bcc5f05a66910cf7b6338e4d362f03f89bd3c7cca71dbb39e6e7232f0ed69ec51de9395416d7c4a9d7fa2576cea950d7c305af872b5bcf76b876b5be8ff302f2ba0cfdeb96aeb75b71cbb9761a7cdd24465c19e5dd03016166b13c0dfa05136c50f01d74193d103e26cca43cd2d7bbf77c782a7a46df4907f4b03d9f8c35a9c0f84356a91ec55891846fa6b190f392e9229f4115e102751bcc03db04659e8ad531edeaed86b86cef7f4ce0b9435e84c7ddb7cdf9e78cb4face1ddd70bd88cf1c90bf34a728e5b392eb0a00debfce2d763c3a3ad79f26725d76ae16b74ecb4a9a2246b7f1db7abb9b0437f131a2f125bcdaff4bfb006aab6bb0f7f201b3aeefc7af31911c7e08d82b677d6bed1c25ab02f04e28a4688277f63cb5d6fdc935c39eb6971d8ff2c0e7b71c7c0dd183f43cfc26f7dd0c778945b8c574c2bc5daf02f51b2b1bbfa02f7c1cd6b59335e75be6bd336e41ea6afb186415f72e8b9ecebb209e3c7bc59a1df84b182634465e61bcde19ad651536b75517fa6b52493f00d0efdc2f81aae43e0b753ede2bdfc39f08183d614eb6fd451d957ffd7da3c2d3e2797a9579db60cb53adcf48bff10a320ff114661093f4bae49f0388a91872e5f64b23435ae09e5162ee3b23d374a325b260fbdaf7771385aabe7c9fe8e83f93f70dde10193fdbbaff9cff5214b57625fe5779fa85bb1b51dfafb4e4f7d6170738375a9c2787c027e7295c8a3da698a7f07d356b2ae5c63fad0f009ccdee676c637c660a54399ec7f4b6f8c7563a5a9f9e5dc93618dd0816a3cd643f4532d9f6563f4ed5c39e7ba7794e0736de3596831cf7b37b8c54b2c9aab7ee64e5b2bf46682639cea3a7ecc073d639378f9b811999dedef71ed4ded42f8dbc2879bfbd3c6bfaff3a354944b9d427fcd5e5557fe7cb20c59afcae860b16694ac81b764fc49c33a6c29c7c7c99463e2f107f589bf5ae76e7b247cb0ceed6ff66e187f8e7ccef8a2a16f4dc7b5e6fe6c112f74ade8b37ad6c0ce6bdf6276c79d7f88cf832e1fe6fbba0c1cd60e5cbfa8c5a90efdc98bb28043b7bf1f84605ecfac7bbd9395cbcbeb1ef3be38cae9caae7fe4cee7d477eaa7d73792b2f1ac75097d05cbcc635387f42ad54e75a7dbc5bee9f0b3d631fc47a756e8ef8ecc033d1de3b910df0ff0c2edf8852eaf1ba809197c9974d93365f46a7a5fac21b7400d68c0f839dc721fff4a430eeff3bdf672cb3816685e37c64ff8fdf327e0bcfc82b9877e7ebee5ba505ec972d7e1911dde538bc6ac51acf38b3d0cf51cd3839a76b89613d6d392f65afa5dd2a36a84c1271647f0be47b91d95ea55b177671df2fb6a99610d3a4649a1d5c73ae06d771f7500c40301e3191baf651ee8f4bc86f7f3fc7db00a7b337d5ab8f739f26e1d9bd9aadb9bc0af473d139cb7d05761bc90952ad323d7e8502f1ce0d682ef1ee5e98df1c1b0b8d673a547f368e22bd6b079918fe03e6a1e0fc2f4a3f8daa32e4563cac99d95f1808e9211ada988c3a264c2b5cb32e7da258f0fd409b272f622af74732e5a399d6e0e74728e7df7c5f490ed56f718ec3d6685fb3ba7a85cfaf0f34d521d0f81a9827e19e5629dd7bdf1cf3175410d4f1cf4471a3188ca9dcd5cee89940dc6999d27ba628fd9ee16bae34e87d5a3f829e6ebde466561f0ac6925191bebc681a94b1ff4202bd7afe8c303dbd253cb269bec578baff632359e3d69b71fdf717bb7fc25e4634ef1ee897b75f03238c69fd92ff6d7f171af29ff3ff58c9dfb6bd6354a1e7afb44a687ecb872ee1e8437e2077875b28eca84b11dfd7febd3ea136b84f55c47ddaccc5e1157379e13628cab57c6e6c3d7f0cb2ac9b5cc726b35a45c855fc73e7aa3923111da6010720d5fa6b98bd808b8de04eb2afddf17c73e5f3e3ebcdefb6837d6bca137787f0da7955c48f463b97f15508c52b3fe15c5dcc2425d0b6b5e70947d7d78b2c91ed72f581ff3c5fe75f9386956cea4f9acba32fd38072973e88476a332748069044e2177a2726a27f04e2db42c472faa7185da9de05ba228dfb672f39ec0a2d8946b9158334554eea54ca615c5c871aa075139928ae3e54156ee2ad6dd0db45a682b2a37e037c473b75e9769f5918e4d6eef9bdcaef7b77eb3fcbccf048d79befc9e99eb922cf937789e98d78cfad463510b53b63efe91bdc099883ba6e9d6debbab687d78f2d38a75a93c1a43b69abb2efa0f65c87ab973f8f230ee06de679b05c62f30bfa8fbb4738ce1f56b3477dda8f34e78e329f2eefc4af608c96ecd9df23cdf9389795e0dcc9a5dabfd2f3ea5591fcfc35d255bb5e0b196d3fd2f4912767a0a16fd2eac1bb67f458d0e39622efee51c3e9c687f641e5c3993b20c806192a57a7debdd72f559f058fb8bf90c5e9267789e297413e9fce3f4541bcfadbe7d22da73319fee6bf87d0dff3fb386db237b998e5ed777aed72dae572d9f7387f3a775289ddb3a6f1ff86da1df647478ed70e8daca3e35f012462f9ec65bc1f8a8c5e9a828964cd2a3fa15839918afde72bd90b66ed6e817ac7bc6976ab3bed7c16eac4305ad41d63587efe23512701dabc3f37eacffedacd877e2cb0a9a20cb8e5307adfac40fc0fd8f7db590c9de6834afdfd4ce3b1e34edfd457be9b9989ef9555d9eefa36fd388f6fb4ed8a1bf7c891f7331f7fbd64fd57e35ceca75307a5dddd7861b9acbd98bdce7ed6d3c01ea9c2ef79c27b46e345d9fd9f8d639eb92f5bde3856eb272ddbda69643613f0d056bdceef3f6fb81aee9836d34b7dfeb5282f711d65cb755eff917cfd04d3daa31b4d4e835d0c4631e2bf47b9b0c3cd190bdf658effb6874c0dde8fd632768c2be5fefa03bcedf5dd47cdcf5d563e7dfe3fc58944c75775ee63b83af2a9325be7bf758827572fd2293878512f4dbbdd109b6e7fe7ed1975794da59b5bc8ff31bda395ecd5e70ea15de78067713715d17dc1ce907c09ccb03fc9935f807bb93605df29db3660d9766e5d37b82a34cc16dac435f49d485c7e037361174a643cdcfada52c25f70db6e026f4f579499ec6fbfd6afc39e3ef9ebe89520d3d6b5dd275de1b2c86c71aecac21efa8adc77d1d78614e3b3c56cd384ef85eeb98e6fdd01d98faa6cb9a0c39bdffc4dcf3297393d91ff448c784d60ef48a52d6e369046b35f8e1516d059ee7fae8fa559db5808cfff6634e8ff7dde7ee39d9ad5808faed1d774f7da4a37abad651c51ed6738e168fd9a680a6e1d7cfa96fdb8b23049c0edffeeae5095f4bd1796f1a4f5bf6a604b79c3df7f158e77d6b3c198c1fe6d9c7f2eab5acf17ef1b6c5f1cffa6967ffdc1de5d105d689d5bfef338085f980635ac3e3620bbc12bc28beef8005a3bdc78acac24ec02984ee9933f77baf19225fa8ff592e66c3fc71e23f8d47cd27cd9f7fbf17867d9d3d1de6fe722193874e8ba45d97b350edc15162dc003ff61225cae6bcc983f609f39654e76563611e39b9f334142d34d50fe21425337a0c3e70595fcd924c89e2906d569fb32f76fb5a1e0cfe21bbb5f6a8ee9c1bd9ad4dcefed71a57d3bda6c7f1c5fb7ad9e4977ad9e4cfd6e3ca87bf75fcbf558f6bdc81e29aa52d93fd2bb02dc0bbbbadd10014f038c76dced8171f1cf336066e5c57b20d69fdb4e3f1a992c8f9bbde40e74d3ead24c54443f7a4c6fa483132fa08582b65f3d6bb1c3a90ac1bc89e7996f1246f69bd65dd6c7a4c5a2b680dee0cffd76d55a71d011ca9f1e56bc07f472ef07d473119bc2ee95816ebc3782d7f96399752b6c6d3effa7c5af31d2ad9428ff04ff72ec4cdf1f8db6bc16cb3fc9c58c27e7a26c9c3221eeb237441909fcf98b71140cf36347c645b059ab9ccdfd89b8ed6e95feeb306c53768e40af8e36d3d010ef456081ca3a7266e36cedc75b0fc591caccd27dd9ffbe4f6f0c2e6787ec63e088f3f687d810e933c686b85be5748f79ba884e70e344669fd9173d74afc1c5815b5c0f3afcc8571d98f0e98fd9d9b609dd0148bd5acfb5f08d6684cab38e98be1cbaafc11bfb37dc7efddf2c4811e96159561cb71b9640dd772e3cb441b9e9fdb188e96508cf177435f85ac193b75581b167db99af56df34a2519b421d8733f6ca7ad8406b6621d7ef6faf743a36d9b2dc00ffcfbfe99f41ef69cf2699f0b1c686035f43f728146393f94329a035c574f9b157b14d4733fad943f798d4add44c9e84b92a45a267b5ab36af52daf65aa2df81b26d90b6a118f3934e0e1d523744d79951a0ad1338fcd5687d9cf4f99bff6f603618cb9dc7618f3b492580b7647b5e5f546ed4e4de8afed78a107d0f62cf30635a272521a3d949af53769dc614cb8ac550dcdcc6e5c5bcce3c93bcdb856a2ee040e8e05ddb4165ae0eeb40d2937351878cff8290656081c6b486b5c5ffd8aac18ab9fabc5bebac714ef7a6e8ca5a3f99b9e6ab5750d5666f68a6bb885c6a9f5269e5cd0dac4d78a31e1395f6fd643b519338eb8b70d7d857e835a983e07b863b9560d3ecf894a5d87feae62ee5768635ff23b5d711a2fa19d37d0093fb1376577fc943f135c85d4624f4cafc6ded8b84262fd2c5853b165dd73e05ba071a859cb85ce01633914e6715a83c4ba0467de8e92ec2887a2b9edb992756bea99970a6dae5fbddf59d7938ed571562f7ace077dc5f7e9f4e7a4e6be63c705a373562faa677f25b347f6f251deebacb77aced004663d4ed99ef5383beedf40cd5d175c4468eae31aba5199b35ee4dcb579ef446f90b5dde149e059113f076d58d972cca61a51b176fb0e7c7a70e37ff9ac1c1af929f234d4f81b97f5af686f7dcee14b80318973f5e8fd142b34c60392e205c349e33c5026b4cee6ac5b3917957a862e6725cb5477df21873f2d3c076a6818c22f92cfa76843d61b070f051ac7553c96bf7c867efb19d84b3cd6eb47cfc09cfff6cde7b8d79fb366bd7f2b672df48b8e73991e2fc7151403d3e7b237d0f6edefc935a969a53a8de037d753bebf9edb7fd7f59437ae67f84fae677be37a5afc5ba77fe87aca5bd7f3773fe3df712df93e386e9bf2d7df3e1efe93b9c4bf7d3cbcfaedb77febdcd8c31b73481fcfbfd737f66a38fb912429fd86f49b5934273856a7bdd58c9d726943d7d796464f8c3571a339b447cfdf01ef67ef8edac4deb6993bc7a85cb6efe6d3013ecdf07be5f1e8ba66dcd039de184b9bf2fc19d87302f7ed67e4f84dd89f85c6be67ce3f7ff339f1f0ea7346f49d3df197d73ad9503ce0304ff1d65afb7e6e32679c7d07ba31c77e0b53f68249cebfcbbbb1f1cfe6656a7aa9bf3d2f9b9b6be09f9d97b73fe337d6d9acdc558aaec1df5fe76c8ccde43c867ad60dd6fbe5e2b85f1dee7ddf5b1aa971069ce3952f8fb43a8cd9dc5ffa6a881a71e759033dc21058a2379a82faa223a8ce1c76e34364de030d43a3d3dde91d769e4cf2289dfcd86908d118bc6814d273f022c179423bbce3b4cfe1fdf081c66c0e9f1e9e77016ba5cf3d83a10bb01ecae7bc99fb4bf0d925adefa841747593e228e78c65c9caf59715d613d69bc0399c79ed8196a96ef139e03e8bfac2731f75b1383d77ad6bdb1a9d5b70ebd7e5cce400b3bff1da9e3a79d9fa65f938d967e3af8b9533bbf3286f6b95f8aa61dd5578e90c715f8467bc4ceac0638c72d14402b3a91ad6f507b7c13e41cf3ef643e3bba49b691b186fcbb0e1dc8bf277e819397c1f3a4382fb3fe03e1fd92f6e63f4d4681d5dfbf1dc7525e3025cb5f58c7e6e2a423fd731e68f64afa9ad6bc7d0ffcc8fea5962cf55e54ed37b9007523eda08b38eef8c178af10d707e1c390e91c778eeb6f0b96c810d125c5b9c369ca34f24b45b7cca6b66afd08544ce6d74c859a342f4c5adcb6ca356f6e4c76a9cedf2c7d9e63e667f1db353ad6c2dbafe7b9c42c795d6ac3a2a35fa75aaa56ba5813b069760ebb6d23e757a30b4563a891fb4accd1556b255af728b3aab88caa249800743fee5c04713cfc3db57a0c6dbb8ad0a741db38f45cdfa3461cf5a5adaca60792a3e671dad57bd1f3a7db6b6d71467a6ba5d97ea456579ad76bac1fd03f659fb6a9f15dd3e4bb9c134e93c703bdd6a5d19fd257e6c6b30bf3eb8af83a8dc2fe271b73fe757da41f22885069e59413b06fa5a8b78ac85c1761c7fd11dd217ad2165c7e32e56c83befc42e5660ed6fe0e4df6a1065e5c6d4b772fb5a7b264a7a6a1325ea5bb2f8ba7d5ad4fbe57824f27b9fe906161e38726b5d4ecefd5fb963fc8ebae593ff8cb16271eca6d9f719e311311e7b5eceb1cef038a03ca384ef253f97e5835b58f8b90f0f30179a49e31b5e47077d7ceb5d70ae8f2ee2b356a5c1f06f45f3e467573877cff4ae262f51b2b6d501fa950d7b59668c7f2c7bf2be93d97dacfdf5581b84fe3a544e6ec14f42d0185bbfa86f79cbb802d5f12b06bcd769cde371029d6a1a374ffefa9676e30bc5e4b73dbd96b77a97d62d5d48e0167af70e5331b31e5ed78fea1edffc4b7e715003bff0dce96dee5f6eea1b1f3ed604bdedbdfd119f0f5817c450f43d78dd605ecc99b3f3cce30d7a2bcfacadae1a0f1c42da93c1f579cc1dac9136b82fed933f62fc8595f7f41849ed7b6cf42197d3fddf8e4356735abfd442a5da0266a2850748c3ded1531a7b748e66bdc9ed6bbdc5d0572f5cbbfd207eb33f8cc3acacdcbc28e83d865a3de6460f48bdc89e5e1ed3852a978faa9d2eea4d7110f75ada2dbdf5b9eb48604a5cf8b3c406c3c2fe2d29e761e8216b9b7d6a53cacbbe2449d1e118da383da1670d4d53708ee935a3d777c749e0e7edaac71faac32dccb1462e5fd5d075b896ae2d68694333541e0d5edec94ad4c79bd09f95ec310a4fde01e33a29e7f70605fcf8424df7437fbfe15bd6398d92c0653e4860e7d01bd5c00e19edd1364a8aa37264775fab86f58fa0470a9d9de2d8ddc7f37f746c5a9fd383b2d7fe69c69a7d3536b9d68b38fb322ef7b21bc7df77c241acd3b802d83fd680d78cf55bd37864dc2ff0be39c6226301e9789b5026235b1d4e222aa1613a403f6bee36117b1f8ab76330edc65f37f6ccb8db69f6b6de41f3374a703b783bf676f45e07752fe657b734b67e1d77acbf85f1691eefc90b4947656e676d61cd7eac16d998f6b7bb66d32dcc03bc95b5dc415fd2f9485f92bd4bbd01fb0c04a7e9454fd2fc5dff1f346ff526cd673cffa071d8725db5a8139ffdd4a3725a67e59a62341195e9007ee1f0e3078feaaa9ed933a77b3326ee9a0bffcb6341814f5c3e948cd108e13bcfb5758dda7ad176f73d374ab48ea14994baa14ff745771fcf7f3f884acd452d85aee5636eafa02d0e5c18fbe332b68b315fe81bf58defb387e528ab9e1eef9eca37fcd3eace3fef862fb77b5bb7e5e1a66f49174bffe25b42799cc84ac59aa5a976cc9e23b272c98f510e073f12af351ef4a775390abb58e6b7bed79672477875b9595fae733ada2d83d16bfe38397ecaf1d32b1eea196ff78af5ff4fc5dd47daff24d7355a33f6d04b403dc3061fbff9237c4b1a8fa3d9cff9f8eb7199a9b23864fbd5e7f490eea9df0eee749dd0f8fcc87bd7d60d3c7fb10ecd42f8faa5da5e973734610eba96b7b917eddbba3af6cd2363147783efac8f5a33967a132a6886d37eb997c65b143d71c335748c2674cdb15660f5ddfb9e1ec37bfcf42e7e9a3207cb3ee36bde7a843a679d28c6f0d8d011d21d6626345e0e451b5cf92f0b8335015e2534fa3f03f0720cbe0775b0338ea7d3dccb2b95ca9ac740ea704c36e59a5992d279b6691b34bc7616d076515bd77af23bac8d34181ba3b18bf8296bd1f72973c7e496f4582293bc92add4ecf56ff24bd45e83d69ce780fb47d21c87ce07f7e9f92f2bfa8e38cfac7b1f7847dc1bf7f48dcf347d2aefdca7c2738f79c31e07d2781ca406ff67ee37ae95b6e1897f07e41ec64bb3775ef1a3787e78cdc173dc974f76f639f532fad5384eeca3337bcb8b98bb83f8b2be69ca012ffd1c3c56f19e0d7f3bbaeeeeb98788d7de8a2597b73df0aefb11d049820f75cd7e61c0fbb8737f66b32620f71d62f43bd15332e7101e0ddf8e6bbcc0a469f6e36df835aca1b3946ae8d9ecd71f34ccd506f792c6b2bd3ad7a5438a7568cc1e19eb035f25fe2db6e05755aae49a0cb8a049ae0d46b38dc193817f1bfc99e8356a48afcf3651b9b355e30ed0ab1d7a27090cb2ae54499fa5dda8dcb9317b2bd1fe62f36f1c0ca015c41ed3956c7bead65dcd8bd5e2eb8ef2eff57f0e3ff44ded98f17f9357f8b0cc859595b232fe782ef89066ade47e39af95a677def5d3b18e65e51e3a5bb4dfaca02f8f9ef542267b190f3df04433e873c19b4f84e847b14f3ead5fa11f0c58472593e6bcfee97ef5dbf1d2efd77ff74d31ae37ab43765cd9b3fd7c31d8d0ebfe63742f2f7dce135d4768fe5879db7163ffc15eb9881727ec39b457b15ec374c0bda910fe65a891965efdfd20065119ba5c2bdb89957f85d7c36bf20174dfb8c62a90e324d32363bd85ddf515ae74286cf65ca3bd7af327c6206a282bf8a6698a1d9a8f747afffcfef3fb71ebcabed7806ff2dee6ee49a62727f447ff8eba8dd91743deefd113838674a89cfc2817ba96dff29af95a2a841f24ea3541c38f0562ee4373b77b1de5e2367cd3e7ae35f73746d328d08cb9a3b1aa075919f4d5291cd2785d3e4e06d345bdbf6bd37da0175e165a05ba5623c67eaccb49180fdd560ac91cefa1e7987a8b03bfb156d9f0b56f95af1aafa1f529f4c13d6e247408651bfa61f3e417f49a322a0b61f28016f1cdf6cc13604dfb393eab56c0c2e6e070aaa167747568fd9d19fe71e0021b023cd9591f15da2959b97f91cf79dfbcf8325eeccda638ac7fac0eebf17a51bfdef381777b69776d4299cc16467fa681bf02c6856b03db6faea96a3c70e9d6e080c976dad2fa1154cc0bcf35c5421873349e0edaa1d7805f35e43c4202e7df61479083b759c963107a1943fa3cca3ba7345e6b8edb3cf19d35de1bf98d3df4e6fe5eca446ae5e41483bdc8ddc93cdf3346a2f935ce9aefe9d2bafb39fde7ae33fdf225fcbefbe2799fe48fcb7d71afbfdeeac198f57af21225c036bbd7dcae70c8dc2e8a595107187a1d5febecad0a1ee57bffd3377ee75735b72f2b1c2f3875b8c2c868ac42a7e6a02ffb09dd2f277f6c0cac3fa93ef27d1df8db63205b1d8ed5ca5957f7f8e13f387e60fde6a3a9dd1b6dfda092e060c9ba68c0ad8656017da7a82c6aac69949b737db1bde830f07d75602ef699b7514e3947072f5b1ee5e1646a8a3b31451d60e73286866e0d6f68eba18f10197ec7ad7ad59c798fd718d8237b8e2ba34b60746a6c7982afca56b03fd0dc6da09b80d7e47dfd9a86abf1d79fcb6fb34131fe0fa919fd3f5c13e11d7da0bc97f624caade1657164fef4bedb975ecee3cf70657aead497d00b6b25f8b78a7d82315ee1453c7731ced4d01d306e47c3478ab13b6e53b4d066e2f537d1953c74dcd890f5c81ae1b0ae833e0233f4ede2570c2e23ea1346cb093af5792551930f19a73d87668215955311faf9319ebb35eb4a192dfdc6b3d1236bc1b91d4465c06b7ee3da12fa10b9855ad9161cddaa2f47767aa8ade5e3ece7ca99bd4cedafd5ea9095eb71b6bbafebefb01f5aa2cece3cb28e07c25cb51f47f099dbe0a8866e13a727f0219f86a25e97057adf6a8b5aa715faa936f76bc9fc70e8601a6c1af747fd40cb64a7d9d7695a297fb490344f16270b5ae9f042c367b15e6e096d5e737f6f6a0a6915fbf0ba73191ba05de6e9eee87c16e0ce01c7c1cfcb213cd3784f18ba35ea5fb4cfc0474f638d8efd4de79b765a0d7ff90d9823d537be785d2f32b1b2bf8aa760f6a3b047dbd57d2c7ec06b7a7f7d599fc8f8025ffc1fd18793dc1f3ca12e701e9b293c5b504705277bf225414e1268159c04b047188b1e3cd5d18b9f434380c6ad6d301c03d3b3168ce1a07875f48a79003de890f561a11f140e12d62f30fad0e6b3bef1de2069bd4dd6c045a9767963ecd2fb82bef8c8e1ea5bb65f8fbffe5c8f374171f88fe9fbfdb17cf6efe9a1e795cadee9b98ba8cc7ed1440ff0badfd7e84efb7ecedf992f2e7b3acc6c68ba26864b37745de3e929a2448532c9c0bb32b1a7ddf5d2118ffbe1f1e2c3ead509e38e99ff853883f375606516babed296b960661e4d4fe139af6fe16b9efc51c93a9694e309531b10f57a2bb83edc69b8fc26cf0838c4f454c7ecc9533f510ef998b751590c56ccf1815e187afb8deb24986f14a72c5f813d68d1fb77e2b9ebb0f706cd6b7a9f5ac864f4d2f57eb17f504c34775d35a778266c680d8a7d606a1ae08c280e1a532e30457f10bdc27227b292f284d19715bc3fcebac4e675b3856adc6635a4e7dc415fedefebd827b5b34d81757ff07cdf6fdecd1f5ac7057322bc9a757143d6cb3dc84ac293b86868ac70ae47f365ca5a210e74584d0eb8833619c7c2a357be957c9ce71f47051c2cc5c6ea95e75dcef9da41568a39470dfa74d0394b9da8a49c715a49c6dfb4ac47a281553418946645b921e6ec6413cfdd816ce135855bd6afa0f39a1e513b81662c6bd0c4fe8e35a392730f5dc4433ab760f0fd205897754beb40700a7dd4dc10bf25fe94f7b4396b5cc31beb12e7b597386f7a8ef362f69b1532cb29c7af57be89efd8af4744e0e001237cb98f7c0adeffaeb4dfc468f0038de7ae1567b94539f8f783e89e3fb1576e873183f70dcd7f7be51b4d64da73ffe0bcbacfa57773c9ac9d45a55ae8e54373429ec74fde8d1feb920bfc46fcc563c7e40bd3ca68363166dcdc3735208c9137d73f401e30a0f3c94ac499a80be179e8362de5bf8ad7fac668c561fffcf46d56819ff99889d59daf7ed3e399b5cf431d2f741d95fbd788d6aa83a658fe151cca031ee7de207b411f23deffada8cc2df659d8bf1a9fbe961e63bd1265b087ba52e57ea1c61a9c0593db027b180f81cf13145799e7189348e3946b8d2dd6b4b11651990ff8b3c2362a656dbc65288638cdfdf0c4fe7df49af3f30deb9be1f31137301762bf90c9e685f958139e3f258d498d358fd6e43880275d1b956993007b1e1a1c31c674032e4ee35a26176a990386f9e386fe3294c9c636cf379417233fa6e30e799deebd3e3e4f7e2ced8d581db2b6109b1f4b5bdf6b87377c6430be3278c85cc60f8f3997fe0766f75bcecff1e3749d3adf225a0b4f4fb4cf62fcd338311a77a80f065a960fa12c1fe02589d79c9fc798e2cfef3411e6ae136739d7cb2f63a71b1f0333865cd6853463b3e1f128a1b7b7a3c7160a7393c665d084e7b139c5f8553b5dc7df72f33cf0e02ecf83c0edc6a7f14d313c1e09ac32c73df9204a72ad9e65c3bf4dae59e70fb5481bfb45d2dd475df2a8d873b796ecb5d030b60a3e800ef3a6676d773f8457157e5bae4d527c9574f7e9f9591fefb05aeeffb5771872c23f36efea9febfb9e72c30f86e75606cfa6cbdce131a5590b12be4dfc1c3f0ebe869957a3852c1f5eaef68a4636f0d5e0fd60ee3532d08c5be1d79c9fe7f9c49f8f181b9a01c5202b818fba9a37dddcd899f9b309d573decdcb6e3d6fa06d497bc23eb7998364f60b332f15cf5d7bee07eeffcfde9f2d278ef4dbc3f02d251a2abe3ac4486011646a0392409c1951211060576c4321e9eabfc8b5520c0657773fb89f7877fd39708019844039fc86352c0af3bcd94bf0ba283773b3d11c9815479dcc8e68b431f5fcb3b2faa493c9b9279a79b86bee63cead8465b87887947acf9cc3e86565ae9e7fea5936f7cddc42dfc0a69668333ff5fc1be677e7c01773a2b599f536ad3fd4dbf0312ffebd7961c9a85f98f33d5cee3933e4fb9c277adfb997bba196e9b67ce80fdfe031055e3251bd9b58a1b741d42ff8386a9af9510b7b9a96ec058c6e6292745e7ac457371cd055bb82567da3abb8315ae08821ced6b18e10710d0f4bbd5eb5026f6129918bcf7051aa97978ba27bfb3cb637b15196fe6e729aee3ef9ded04b3bf2550d667c10f5eb33ad460b58716ae797e7f14de08dea665d46fca3e7a6f5496d3741de54de99f77ae9a4b5c9b6dd7a616d44fac80b6ee0ac8c0ef1e4806bac7383c85be74a006f67f8ca42e709aee1e259b7f801e16d6ef34dcd50eed7cb20eca6ee0bea24ea9d1af2c15ed6a3773d46c7e0d37dc279fac218f83fc66274e0bbc1bca5720e3affffc0dd2907456ceab7230fbe20e8d90d759c63b409d23df76dbd0774dfe45a628fa25e81e1efd66b6ae5557abf8aa1aff2632d5c6a8d637f2ae7acb9d20bc49716de5b98c756d4715195635357c1afc7de5331285262e370dcc0e8f3a486b708de2cf63eea4dafc105329ae3e5d768f4a86a3619fd5c745531b7fb8ffde7e6fe73e2d04ae3b1029eacb7367cda76c5be59a35f089df1334d4d6ae4629ddde665d8c5dc35c7133c8ec119cca336e22deaaaccc099a04f60969353ba78278715b9ad437efb712c48897e92e4582e98838711fb0e6773a2457c59bc57f7fa27c4a365b6dda9b9f5877a27dca1d73b2824f0b02aea3e2962a8eca3ff90070c54aed72ebd8eab8e73206e4b56580f8093848f821814a973c4c78ec55e7aeb9ce34eec65b178028f31c26b716bf8c77a8d718d2e8a75a68b22a08b5211bb1552f7d3e1981842fb4ed6d94ead1cc15e4c904bcb87f61c6a2ade9abe0a3a5659e973418f53ef35f448ad674b78dfe8bdcbdce27cd0efc13a58d13b7578608d1eb7e445eb1c341aeec2c61f08c76ec313ec74fc7437b8576b3a1e2d17bd2e31ffebefdbd903f77fc3d79dde533a4f929e420e148e1d11a2ef2df792383e4b5f7bfdfd740c3a287c625ee1dd050d33bde7beeb9c098f47aa181431b5618b21fc65f4737a1d0be9a54efd1e78858167db1ac0e72386cea1fedfd409cb70420f498ee346c74740c7473277ac59c7f03196e1c70bafc1fe04fe4d13a93fe7a0568efe0cc4f26a25f438df878cc75bcc2b87c6cfa38dfe2a6ab19ca7e060d28b1778dd92fe5ac8730ff07d5839a63fac9e14fc9ff07b99f9eff37bdce92d39ea75459aa8e5629b5491e53ce2ea6b8dbd3c7cfe2b2da7e51bf7de408f0997d891769d42a7588f3f8c757dcd4dfdd971e5aa7d402c8eb1aaf7fc0c1e48a6872fe67aecada87d95d2cb955ea7c0b3e971091d0a8c158ee118fe62b2028ed6651ebbd66ba1ab9a75183e99721f7ad949e333923bea5ab5590fc1bc4d4b3dd6952773d4268a759514c15ec29751c712e95e8da9b3a5ea7447cf598e4bc55e93a01ea17fe07c5863fc9fd541f4fc453c2cd1b368a3d720bd0df134f8ae713dc47c032ed4655ed92ecdf7f88af53bc9aceeebff6b18b7c7dafd27addd89359b94bfb25e524593efebc758be1acb76e0195db72d3cac2ffd2b1803d3f73cda489d5f7f522b112f5e7fa2a63f7761c760d4c74e0bb5681dd352b7b0455c6fec469e2ff47808a1dd95eda5d1eb426c8d751a7acf0d0eb93a6ac38d9d52898365384315d74f1ec760a56ce66a4360ee1b1f35f39907e6fcbefdc3687a86716e2fe0ed929c79ba9c7b35f887df78717c013772b4596c37c52c19bdcda6fddddc56229d3e3892373892b98cd4e4e4d7f8c187a0a5e3067a1e8463bd2e2f8b067f1b463e6bb7f0ba05bee480b5af4e992b750cb7622ae9b9aa73c2b168351e95d042aaa1c579e05c187d9ba3c7dd3fe3d736b5687f27a7d2d4a6dbe4ec4e80d12a5ff4fdedd97df099ee5fdf5e266af3f0e4b85ad744e0cdde64b49c281f7d835b6b5629e3fc8078351a59d069e9a6d68f2dfc3c74dc6a7dcec37ebad96b50b77b0d93f0b73cec0d78df83085e43f77214fcb9707f2dfcd1cfcc1eb5b26dff7fe69bd1af45affb1e5b9bf7d9c42d1e7be08d786ed5ae8675ca3ee58a9e29e67e295fa5c17761ff38fe0d0cf64646ed9d8c9e22d4bde1edc5beabe9d53b69258c66697b6734bedd4194efc267d9dccfc30eb886e8a386e33634c09bfb781e5c41512ac3153c6177b21386a06af0036deafd5527dcce197ea00ebc45c3f3b7be60ffb21e9a0e377afee3763df6d467ba53d5adbe12f56e97f076bae96bb7495b9ff7987c31f6f4fe081c58c99a76b00be3dc014f56af41e49b0a93a797e0945077dcd1f10fe3bf65531f6f1df9b5f7ee5171eb57bad56b8fce29fd476c73a32f19262975d8a3a737682b6ff39d7a35739435140bfe63f75e8bc9e87536559bf9abfa95ad1ff8d19bd7a36adb2f5edf52027e6a7a8fa63fd6abbe464f7a9ffe368f82caf801dad46eb97c9dd1e4b2c9f780af8d0b7deded27fadad14d1f40e756ee91006ff1698ef62d8a7c8bd8e825300ee1990e5dd84ded178eb36f5194e72ad179dbd292f1ddb8fbeeacb7d86456b2cfacef55d4fb6eff91bdaafbfa9cb9b2f26a512c02b9496dc4999d36bc2589af4f77f4c11eee54e5b8617c70a84970730ff927d804f157baebd08df17387be124b4b4e116fd4636f395196de43fcc38fb58e519289eae9ffbbc1bd58f6d1b65c66d6f2fd65b2785bf88f1ed1ad386250e4e04a865e57ea7c97b58c009a13326aef434f81df8f3da3724a651dea419139d44fcef3133e635846380e7c961d897ab7fe2d9e4cee91a1e6a23a6d9114c1c18c09017f910a3c313dbe02680617d225875feea5d7b5064566cff57ab5494b3939e8757122d7d4ac442f1d5a2ef9bdba95bd79af5bbff44a604e1f7d985b71449ef3779fbdcb55bb5e14be9ecb131975e19b9e147dc385e963bd4f8ad19b8e0907d4c9c77587f6d44ab883222dc1eb8d14e7ffcaa959b36dd7d0f2bdbd06fe4dde76df3cafdc06bfa4cc3cc01cd0af193badfbf292d9fbdc4eaad95415b389fbd0aebfda8be25c82cf3e9a84b18ef567eccdf5a0475b8dbd85450d79bf8426ee6b5a435f077553a70ad9a3abc308fc2f9b7ab8f981fa498db799dfe0cdf9dc2b79a732da5c1f8fdc449b9cfacc051fb5c36319cd67e88d9037a2631cb957de9a7a365e97b5628f5c5be92da56a30c4857425f86a8143bc47e686cf3f95ac1c11128fbc975ec361a5d72ab8ea388eb95d9d7fb7ec5edda7de7c32eaa40fdfbe1beb5780f8584153a9bd235647c7d98dce92e98f92b364075e063fb4933613b49b76d46ea20693a2af1a9e1fd63a0688f7c46c415bc960da8909431fa25605fbacf0d6b05937c1f8b606d17a2fa391c7be5e6c13bb1f83af28576d91b19edc6a749824bc9f03ea8b41bb09581c318880a12fe51dbe5d125ad17d4bb1866ce6956abcaaab2f18a3cf73ebfb433fe7a64e985f9dd7938fb5985769f239e2dc834ed3476a34c403f845b277bff4f47ead385ec0e350e0e8c0ababd663a4d101fb3096f2f3b164f818471d30f0079b5e6ea7dd8cd96f8dbe99995b7933b71aedb2d3dc12e773eba87b6674d1768d2e9a995bbbd3dc1ae66a0ced337b50e4a71ae87de3f0399a7c5fbd4ccacdacd715e9a36e7dab6e5dca293de1e53a775123bae52fb8cedd7f8271bf597fd4f9692fdfddcb1b1bd94f87e1b6fb585b6e6b104ad569b716858e6b3605711646dfcf833687ad566da3c7b12e8f3e81e4e0639eead80cf3b2e3b832495bf0bf89d4b739f79d4338d16bc9903a83e897a387e0204f435c1513370d0dc2e13ef402bd66e17972ed17efe425063afe620f759aeac7bf45d17a1f46d42d89e0c301dc53c9f38d0daf2da7a71871201fb0d57a6fd6e7d07f972be78075b3683bc139df809e1dd05392db039e47df9658f1b37c97f8007eeee9bcee5d93b2e7a7c7def87f74fc26fabceaae19bfe433ca9553d2a73973e8c3017cd55ec507e0c365d47f9795d352f45fa3b65d01ed7c8b7bf9b06cb0ff7a7fe55e1c088cc9081c82f2ee1e8afd7488265d37fdbfe22ff4dfce1bd607117889a556cdf888750c0f2f79893528b38e35b3c8cf0d1649ef71adc0cbf5b5743086228ecba448dea1d36aeb784dbfbfed9243a0c74ddc229f48c76639792215b101f44105c6cd91e0aceae7157522ac83457c499cb3771bb4c0f9bd2f0f28552f6f34dc4dbe0edff1d617e401cfd9b3eabd4c979b59e7117bdd88bd9c4b1e7efbc4bd373c7ce87577aeb8f7673a19431d4fed42e8d2b5eba11e2fd19ad838dc1a5d6bf83db6ada4001fd7024673ed3b8362addfd7dceadff1008e9ede1be3bc440ff777afd57963d1863e9e6c70dbbf7b3d5eabd74415c842a157cdbd7766728c231fe65e9fe07bd7cb3ada7e17a3edc6993d6a2db73472cc75ec3ee9b1a7ef37b746dbae667d7f36315ecd3aceb23e199f189b81e7976362dc7ef75a7acbe8f1de4d2b6951bbfb37afe76b751e2af24adaec8d638cbefe35663fab9bfb665c611ee9ef8631d8dcc7f35fb056fecf6c9b3ec6da178db5b412fb103a7188fb5df4bfb0ff663ae673c80506b7ae252ddfc23a450cf9910b11768081874fe9e5ebe55ec1e7306d341aa14dda1c7fec050d7705e7f2632de0af2e8b05f212050e4a5bfc9bf321adfdbdaab3dd80faabfabb37b18b65fce79cc8f3756c53075e50ce2f732483390b104f4b784604e839cbcaa954d5e6ed27bfdb00dc5b1f3c413939b8ec43eac7eee5052eaa74faf4f63251ddec51cfb981c5f71de0e8d7b96dbc0245e08ddee48675dd45111c90a374847e9d35884681b45381ebba6a1383bfc51c02064c7584b328466f4dede6fe3ca4ff73e6a9543ef0c6b7747e4ad94d9d978e10d4fae95ba897755360eea8f1d37f53cf29740fe556ff7fbc3697f7b9f608f00c3ce0cd2d3d0ed8ab1fe11877ef57dbcd5a75f3476ff41aa75305de6282de4aab99774afff6f0e491af690defce75de5a14caf8bb2b7d7de94962ebebdbffc885149fdc3f722479ad9b981a7df7fa07d6848519338b89b28deedef371cc04788cfb357566f8f8b779d4dee9b54001f335b2eeafdbf67fcefcc5af796fb499bff6977a4c3dc6ceadb1e39749b1791b448b66bc188c20b59ecdd8b01745df8c9d85a5b8efdb060b66ee2fcc58e02db161ebdc1c73f735de6c4b35b7fa3fe7bd649d4e47cbc7f5bcf6e4621cb79928813df960f6dd37d570de88ddbb773d0ee25ed9cac4032bfd97b5bea81ba84d0a4f06193d357ba685fd7363b0b758ff7c8c8341d49f34de518ddf21e71d3c0fbf04e33eee8d2a684db7d466de4b8ac5a35e765d2febb44bb5cead4191586a9d97b227f7a1f1a2032f0af81ad4ee5b8b95a88d0fdc6e607ce8e9e5061f7a72143af0c9b60c0e5bef95353cdea0f14c3f4bf90cdfedbd9ad2574bcf5759f403fdbf5ae7b53e9659b31d7d5e5c6ff1fa8a6b767030bdd5eacc6bace4fb74eea43f6f16c848590a7ad93c861c3be51cfdff7e20a3e5bbc108ece544e2bbca0aba068ec16feb38affcabef8bf327aebcc43951c77f1f46197460a85905ecf83ef4366f72e5a0073628daf0fcb90b6f027e14b52aa9493c6c344b9d7fa85f8abc39f036fa37b1a8ad94b9ccb3f33a429f2ec51c0f3b8ead7a07fdfe7a102ddee0e730e1ff3a2622bff3de7c74b9ced6ddd6a2f7ff7bacb537fb2ad2325a05b8eec7fb51bf568dbef9c59f3872e506917f886b785690cf60f02f8de79d224ffc30881aae9b7006d1b26eee07f4dd2396395ae7fa3ef5b1d7862fb7d47911b1ecd148aa153d0494453d7b39267e1a3adedee87d50ac5d83a5d663c9e5dc583b81377b23261e1c8ebd2a806d6cb1379d12f332c9a1bd21c70ec77e9440475e16f7ea6ce8f1f77d3bdb3cf68dcfd61e7d4dc30ef684dfad9177afc1e0ea8c9d968919a80ffa0aeecc4ec27734f927fb8a45ac973ec77ea06f1785de279e0ae0a33adceb06f4156d993d67272df0849dc1d8b14fdf8d7b22797ec3bd8ac1d3006f043e7cf040e2b9497aa8b69adaa5d9ab18e3700fab78ae4f7aff3a1c7d70a24486f4a8aa0645eca675bce7fc191a0c45534b5ce7e0a6a0efbe363a89b1d1f198e9ef5652f32c35355be8e039ecc367e88b2afba7522ba7660d558ac8337a7a47cf40fab2aa625680c7ea4143fff8f9f411f12fcf03af87e78f454da0a627df95e79f65fc6c883b2846ef8af5613128729bbdbcb5c5ef10ef559137df01cff33b2cbe62beef632b799f4dd4a3f672db6fcdc462dd4276c41e588cea340f705de3bc94f6d91cc4bcefbe03c3b6cecbb07720376ee540737730766a6af0e47bd6ce5153a32770e3633cd1f93439f9d07c9898c7d7f96151ccde9a7985f9b4492bd47f56c21aebfd699a563fb6c2c239fe9b31ee5694f0ef3ee533e5296eed731e4ed843187b01731d7daecfec95a99e6cfad579d3af468ffa595e6ac3eb7d9c58f81d75e49bfbfaf9d14e76c4d7c483f7e5cc723671ebe1b66c3d38e857fba65e43eb4ff42bea73efc00b2dea8ffa147a0cf6e4ce780beee4b86d9e6f975975e65b383ed7bbe0f106e8db09c33d5d7ea2212ecff433fc0befc281d154c171e0a52273e3af58e939a58f077e006e1372058a78aff0bfde5bf1ffee787f8c75007f3ff0fb24779f938c62e8b9a515cf29e8e0f8958e09f4b1e1835e04bbd379e0af796caf9ad7eafb8693a7ac9b1a22f5c5678fcfaf27cfbdb90efcbde55e4de0af9743a7043aa601d7a0a9bcfa3d2e7fcbd8bc16bf2bd7c331bd5e0645e0e87170f11da6f2ecf5f1e5678d3f7e7fbdae65fa3b7ed1b1da3b192d0a73acfcf2ba2735af8538be9f7fcd63e63b9b316334a6ecdbfe9bf2624c5f8c17ce894603867306634250df8a3152d3676e612d9dc21b303ffe0f8e14fde907d4c03eed7727fffad31e019dadb6bec677cfcdc01bdd3f0f3ac2f982b566f7056b4d0d7cf1e46bc65714f97aefb3bf621dd5796d8af540cfc9cb71985567ebc0f8720db91ac35372c4257d191c59512f5b9dc609c651561dc7d1c771b633fae7c7fc42ff7f3bdfc8bf628c09e01f719cbce671f4776d3e539f935ebf9b73fa78cee23857cc391ee7d28778c98c9f7fef33ee8bfd0d77f9cfd521bcabd61482739252ff11e356b602bd7eda925a6fe3763d409e286aea54c73b7d1f9a7db8af9f57884d99cb65d4e40687201083081a6f15fd6863e39319ef1a0db841d4dc17b88ffd78d52ea595577f674f187b9ff9a4c80ffb83ce719e3ef325b9dce7759cbffd1bf3cf78baea9ce0963f74565ff88d54cc3be2d6e53a2e2f8edfe8572d8afe2dadb3fa83cff4df3be65ab458871bee55b45c0273b4725cd47c3bed833cfa2e4033f5f239eab30be3bb8d1a81f466c5a0902e7583f5ffd45e35da91870cbaaca88b376b8290f1e1fc1cf4f5a8a823cfdb748ccfdc87d1da3218ad5d73bca073f5dcc17057dee598b85b62d7a0075b93fbdce81afbf464ed417f8378ab95c1d59aef6d6af8d480f566f04e955eba236e7d76fd7b1dcfedf3736e8e79fcbdc6cdb989e6b732faf0f81e35ff6fce5d5f8b27f3dd789c1f6b6193d3a1f37469ddf8bd0e860f71f53dcde3b9ec1d7697bf17ce45ffedceaea5a9930df5f8bdbab6f067f6521ee7cefe5dd4fb5ea453fdb8ebbf4ce913f5c0bcdfc03855edf20283fb29ae1cf5bc83dac023aa5a401b1b63cf0d3bf0e42807c55aaff1d4eaaeb3bdaa97efc0665646d39b630a1c7fde4217d821b63cdf87dee2f2f5952306e071347150e60e8acc1c7f1148f8d21aefec95e3a8f5e1ff30a6f384b71fdefe9d2cfaefe8df55bd03c7091e4c5ef2f559c5d767d557ea2d9fcda36836e956e8716db3476fed81bfffb7f1f772d14b1e58a6dfd6d6d35c46a33769a7d5d81b4d42f0c6748c2177e490cd88a5a10e6410b2a6add78503fd1b122bece5ad33bc6279865764bfec4ede4ef43cda3c70507f4ba3b054bdbc06863049810587273330a47d4b11a762bd78fd49482d4fd6ddb67f71fd5ac02fb71685898bd1e7fef7f153d12459bf4cba9df973b259f4beff5af4960f2ecd2d2f3ef0347c3b2914f1871d218e3a6bd020d16bf21a3d531925925a37d95ee9e7d1ebcea967d311166223f49e721d0fd9cc93b316b0abc5ccbc3780c7c9d931819190ac1109855ccc673e1ec986778dc710f351576a2fbd2057956329c6fd8dae3ffca842e3c9823e5f94eb3f7d4e2dc47263a7c5c797921a37929a77d1e2e8bbc93e559e2b7a62b881378af4fc08c7f025af03cfb7b3faac7f55e83c7b5430c63239255f5b051da7857ee2d8b1e55a7f37e932460c10331afcc83b74a3742e82dbe59d752178272f87dbb2359b8e7ecdedd1db43dfeee6d8afe71de7805e043039723728529d2f0a62c172d61f22d4705b29749cdae8f5f3b69dcb487fefa587b151b52bfa541cc70af9d42de0e52752e4aed9ffdc4131ac230f58261b7aed63c702773b4ae8c753a376642b780dc6fbd04ba48cd2bdaaf5dcd1afd1b92bf8e8b5e2b8769af9c6f727135974cdbcf3cd9ccd30be38efe29c8febf9a8a0e347bd033defd43be75dfb7c2e42d345b6d2528e9d9ab807dff8702ede2f5e63a7ac7b6d0fe63538e6578c69930b3cc6f275bdb34d0d94239627d8ab2475812dd0d76c9d97ca68e4014b44ec679d143efa54e1b8ed2c0abfbce5af3cf616e79ab1060721744cd7e8069f74aab6c0281cb57e8e9a55d40fcfa50fcc7bf9e2f9076a83fb3b154337fe4d46fdc9ddf19ed1771abdf67fce26ee7afebc7e8c95abb1b2ce65fca97e530d0e02751b4bb5ce5d623f1696b4febe9fcd95ef8ff14a8da26c2f3ddf68f2d01755b14ede624f24403f45160b7803a9edc11e14be4b3d59e0ea2ad662021bda2e919fabb1e37ed5b889acd9f691e75d61a8ecc04bacb0e3587202ddde89bcad09c6be66ed9b1eb5ace991e3ef5591efc348c9b0833a706becd13369500c5d6a0bcf24b577023b2982f29686183c52c6ce013e7ed0d704de11e30531dfd8b1193f66d40bad836bbd62ec91923d3a6f4d8c203d0b5cfdd911ea5c3a8ef3ddb1b798e87dfc5eed880bcdb9f8a14b7d0b934b0dccbc22a71e35f956181ff4be64cf3b46d704ba27a6de6f74bb5487efd3b193ac93776804625c3571765f1253ee38d24e2d7ded0dc6d425c67423b16f5a07416d1583533bd706eb404bb60c9f81ddae15f8eb991378eb8f9ad8d5074dec7bc7cd7a16bbe8f13ed6a48f6bd25ac73b22ad4dfdfd03ae3fabe88bd360fed90f1a122781b8be5db127a6f7a7b659437ce03b95d1a4063e378287ce418ee1b95067dc33774aaf35f80cfdba4caf6d5e088d26e483951e1b324a73d5d1eb4a9cab9e380c226aef877aef349e898322de113ba0d7a480be9d3a57acdaf075861727fc3ad356861eb4ce3bd27d08df533e8e1e8097e9f510fa37d43996f020337d6ee3ad887c6577e25988527665a9b8a6e29c750e7167dd14bee2b13d5aceb7a3d58f3f1397f045de50eb336fa8f5b937947bdb1b6afdc11bcafff7bca12ae1983dd868d249114097ac5d6747bcc4f00c2f31347809d9602d04b11677af81fb97e9e857b6596ce0ebf0e8a15ef359e00d957ce6eb216ec752a3c2f8c69ce909f78f7e8817719de158a975de4a0a68bc5b270de05961fc13b1a69d8f05f4d8f59a5bb56b8c85ea7c1cf13ebc162b51932ba3d7dde46d1075593b9e822b73c2d44f81a92f81a92706ebf0d2015684fe87f7eeb7db64996dfbee68daafe676f0c81b6f60aa54e5b474ac441e8f5e93fa466335056685eb54402edefa5052bf39b6cdfa540e8ab49a77f45e1aec54e554d0855ee17fe0fb9342e779331e27cae9f10a0c5e060e13f594daadd3fdbc0ebca7f70174f7fdfcf8dae3ebe9abcc710edf11877be8b2685e071d6c2f662cb722fe31f2c01b616cb9d2eb685acf3bc20a80a1c973f2000d3f8afd0af8df18ee87d1d2597ec9787ce4a43775311a9ddf9a7137701c7afdb118dfe72563adae94d17a6ff6c992f1599e1bfc82c5fa7e0e3e98b20ed5a08889ef88ccf8381b43a7fb1c738c2b1b9d2f705d0c17d98c35fbe76e70d430cfecf9118bd66813a7a8c7869e3275108cbfd6c5188e8e6373d78c4dead782ff60a39751e7bbb3d752431edce7183ec8261efc5b7d87b98e73a3a1e9fff8c04f4983edd2f16de4653ccfa8ff6e7a3dc893f8da8d541d7d6cbf9a635e239f871e2ef692c277e80364b4964feb8333eff0f85c53821cebc70abcc57b7dc4c2d97464cfedfeff0eade47dfe881fae30588117542f5e70488abed4f101d6b228272ea395ba7a2ccdf59edd02efebde354d2cacefd54b6bf173b67dd4666feeb1beb4e9773f24e6add2f9db1a39aec173e96b56f2bbe5fb305a3ee9fd37841eb1b925e6a70abcd19173058cda4ac787e004b80afb708abc53455d29578ecbde54db1ed631f20b553907f0e481734fc1b957afe0f01b4c654e0d6d6859b79b35aee61aa79e646472dae6f6785ef7f638dd6dfad08cbba519578dbdd13ff2f88357e4ad5ca0f7792e10fa3934e96434b36404eca0d13df82c0f09f6b2c09e851a1cf1ec6b877c27c76e6abae7bd85ac3ef5138805cfc4e0b8d7e4e4c214599514cb3769a7ced85b02839414b340bda6257a519bf45e4e6888bcd3f8c43de2b0abde8000df0b795d3b07371ff52fd4d6f6d25b7832927bc65a414dbf8635e39488ba1f1c7b3ac6c94cad0d1cfc9a353b09ef24f06e8ab66d6a767b49eeff5feb7db0eee685ac7955a8f1ae701fde38597df4dc367fe831381c8f72afa0d310e7ec4dd1cf3f641fca969568b14618efe06153a4adac0e5053545c4b5bf0b52992a750afb7b5cc9b5bb30e8ac0bb576fcdfdb5e8254ff3e78726f5cd3ea7851cb20c7d59eaf1c2bed110fd475981eb528177a7e3ef8ee3508f3f8737a59a7ce6ad3bbae5ad5baadb5ea99f796cef14b87b4971e2a7642dd444709b91ebabc7678d3e171ed3313f7885f57077fadfa9c1e1d77bb679ade9e997617c59b3f9cf7fcb187bbdc4fc63be22f15d1c1dc7db81e7ebbcca4a0adf7ed1f934f843296ad2e8a15952e7f97bb972c009c6bc1dc39fefc26305737ec53f05de9fde03b292393ef819b9e17918bf0d9c477ec127b96fbd1fa65355eb18f5c1d7b8952be0fa1e8cd624e30178ad08f88545985b3e7bfb456efaace891d5cdd80de9a722423fb78d9e4c40bd31c7e13a3bb4a1e1e2c5b9aada887195d1f657e326c69418ef217b1c4289bc5c14d0aa280705b189ecab403b6a8f3eef14fa39f6e0d8273e1e83e7d3f9f81e61e6534ecea6b70c6494349a18d803cecf19e313ef495013d37b0e74b1c7bf3d6ff7b3f3fe417e8c3b2802a3cbc1df94e7022e297fd3f850313718ea79e8d283c4e4ef15d687e698f6d8f3edbffc9dc6c7efe4fc8d6b480cfff86e1fa4a11e73333db71e31d687186b98ab6d138b1b9cce4ae8f8386fe2f873bcd63946ebc756cfd9e5adf8be3edf8fce63f593cf609b1a34b7f383bffdfecf3cc7b3eaf4ba73ecd0c77d92f124b85eb6ea90f327eb6caf3ac2603dba6fac9f8d96e02d626f5e3b47de62e508fdbe31d691ee3b736af46eed54af29faff8ede43f5e34e0b5c14621f2ff7f215f62c7839494fc78552efbffa583a7fa6a7136ac5b185e3ae785c7e9edef33e39eeab3cc34805e7b10678b2f49405de53c7bdf82cead6a5e8e129f0797d0be7d241cc8c9e36f759b1373eb61fe29820ff5bc7865e1ff0321639afe91ebed0519aab55bbd49f7d2346aacff2cb42e76d06175de3b7a24e50851ecfca6929cb37d7cb67bf1db1b1dc2bbd97f472f823a515ae8f655ed7e48c2573c64becd900fdec23f6ccfca678ecdedef6f065f2c09edee09ee5cacfc52778c2925ea357b841eb366e70761337483fdd51a0bad0e8b2e065f09ff3969a5efa5e2569c9bdd0274f41ef7dd6815832708903d4a70745ee42cf656cf674bd5640f70f1c6e478f6dd4e79b5a4687635d46c3bd2a74ac1e8bc0f08b0705e694731ecfb297e5d78c679309bcb42bc709a7faf56ba3672a750c61d69eb69e1356483c4b6e6230fd3d889162ac01df75d65cd6c4bb1401b023726c6a8163e813d09fd8ac1f21fd51048eed815bca7e7f61ce1dda963a2e6ad7d00b5999fe00b12be06b10f39d80e78df87e2b5147423ecf7e4545fdb4ac323d0157e72bb272dc73cd0dfdddb1ee33b6af707db6e47ac38b6dd2682100bf60f031bec1463807a3cbc1f3313526e27f1a8c60caf8ae90fad822d46b143e2b1058475863d26b6bc97c4d5f4bfce1772597a4cfb5b7c971cc3a278b74afb017eb382ad0af111827d40fb04feb548cfbd85790f3c44d9c857ee9e97e6019cd015b617ef94d1c59a9de41fffe7a7f2b0685afcf4d8fc79aba234383954c053d7e9b5c33b0784b8d0c8c73e84de831ac63bc7cafeafe1bf4175ed3f2a5035daa966a6a75e8270d997bb1ffa5c7bd08a1e3901b5e72ee0e8aec5e2ee670deebba512fa933ebfb233ebce5bd5f3c4dc8b904f7dc681a1ed8f34c52f1e225166af93dd9c407faba5b1c77d00b3984cfd090a24ec2b8bd97def2760d789db73e5bebd5cdb53edbcb02f19b405ebf625e25a1bba6d78d0cc7a49790b0bf486b65c7352b066661b112adb98e27f0dbf0f6de31996d37c52c566fe9c47dfd43f577eea91538ac1518dddbc94d6d1a6b108127000ec0a5f6cd12ef53f4bfa992621184cf69092eca4d4d9cb4bea553f3e2294b36fc92d7b4fcc11e8938f648a206abbe76b156616f5be7727d80867bd32fd1fbe545ad6f8b5adf2927f2aee217fd3d9d2b0c15fa2633d337e9c38767102ddff57b796c6af24af88532cf1b44fdbb7aaef173ff676a25de4b2f295e1e3db39b9ea7b295ba37f586e2dcd2d74b25a940fe989043b528bac1673a668b62744bdfe84dc7dac6a7891c2ceaaa9663cf3fdcd68332dc5bd33f5551ff9d3ac2690e6db623672fa067ec89075b45c0c5ac6bd327363899757de79a375a4c36df1efbef8dfacc3aff1dd6121adf3a7781deee4a88b1b7fcac475bdd3e46ff1ff768959f3becd1f64f6b4d3174e9893d2a4c0c6b1b9e27f391889ad7c467e63a8edbb1a7475e7448afd992f9c51afa38e1b126135c6852ca42190c918e03637b58fb26168f8d27831ed381decb11f787e336b0ecb290ac8f146d6750c416f1093ee35c1dd3563a9f89e9e18efe2062fd166a0b85dc87e48d57fc5e86cfcdefe5200781cebe8ee17d67606e99af2ce9d511f50be0fad997386a42851dfdf988c92dd6a5f4b9c9bdaa37660f5b3775d9036b1ced1673bc21e7301f13667eebc74dec4c9d57e65be631e6082667847ea46362ff0362fae673f8ba7b6399f10547e911cb5cf9280e8a5cc7915584bac153a0c4a145dda86c2f6ba5e77629fdbc4a8afe9b82eea04f2d80559b3a369cdbfab5d81b9837d23b9473093d2c6ad9576dfaf9e91ccecaeba418ddd7234efacb59af5b3dd6ed2bec82cbda2474e7ea61b4de87512ee04b8a5ba357a47328d4df63e4f3e4cf08f267c8a1311c8efc9cc3e19cf337d2dbc7b611270253b0284c3d857edb5c7750bbe53a18ec064560f4ec86f448d0eb74a399543c1583468b0cf85070a1e0eb99d5cd7dc3ef00560bdca83cecc9332e655a13f38035de82767bb17967bfc9c41796ce11f539b05e4b4f07df36f76b6a84a1e65ef3b993367b067f7b68b9efa8e57eaeeb8e1e839933ac5b43a7a0423d01f389da6586d3b9f6f59c34d85adcc267d6fc16e0078023a5df3f917b19e9df31b58ebc2fd4a0868cf727879da92d1da88d99b14758a196dc78f83ac7faba77e48dd5cdfb94794ed5f9118f6b70e5662fcba935b1c267e87174dad38efacc6bf061e74dfd6aecb4243529f6b24e992f53bfa4e23e42acb2641e7ea1af7fa14f02fdfd336d7e7dcd3bc0aff0bd669fc31ec9da1aeb07d19d5e48497f339f24bb749b54d1247ed4cdaf3015592e6370a66fd6529ab9790fdf1e75f3e2295036b933f239357aee0a8fe975caf00777c4c243cf1a6380f825c443c054f1afcd7e70d49f48689db6a15312122bd31a1c79910163b0b168195fad1a6b92cead3ac2c487dd89dae29c5c1da7a10e8cbd6f31919639d7ff7c6dafe0575037dca476c35983de6ff6817f34e05e5c2b70989afb86b7048f5421ce72b4933ebed1eca546f747adea534e38f882b9945989489e1f1a56d7fda7200fbbb77156bfc1c2deccb3f4f9bca0f6d47f3bc37395a60fe1b247b906e747c57925b737f2af6daef79d525987b2d1d439e5e7c4390deb35bd4ea2f65ed63e6e4362a9a10f14787e3937f575d5418df3c2834832e7cf65d40f64f164a93817c479cd2c69e5f7f639c7b3a912e9b42f8693f28179bda97bd8acb7a9d184d731067a31b6ceef074520221dbfd5439d37d4caf7c13ba3ae2d6ea16b0b1d4ce8aa0c89af43eca7639aa1a0a6a5e31a3d25c426e400a1bfb263fd672d50ef1e3b2efd4386b9444d803c3c6061110fe63be216c0d3dccb2830310ccf8bdac76be6b9f1a1640e1fec15f8c133601b101b8ecfc7a16ff262e4a04e5a0197a7638b127d30e4d4885f4bec2bd005f918f721de73116b218e8c116b92b3be2ea9f3db2fd017444cb8363a9f798b3a9ff76bbfc4db04396af6a88dfe533e8133f7863bd5fb14fb2a3ec1beea3d548cc14f5b4865f435542b15f7f7f6b1efb7184367c0fe487128d1b3ef1df83f3d2d6cf26812e63711f085fab53a9739cc813f31f9f9bde3eb5559d9034b7a4bf3c585dfdac4e02dc66dcbf88f617f53e3b63bf67c31d77156731d576d979affd4ae0be383a5aff7d81be238c447f603097f446899ba2f1ebd8b422f6e7c12f7eadcab639a96ec1d211e6eb0147bead58fe8e1094de3113d114ddd1eb5dcaa5d1dbd12d7791976cf3f4f9e7d5e76e3f3f2faa3370f9f47bc793a6ef379c49fb4026f63e95b6aae3ab69a5cf8499c62d3242d4daed75267de0a81d7653ea08fe1298b18d2dc1e1419fc644c0dc1605fa568309faa862f5cd3af3b8f6ddff4fe7067cc11a5767f339bb8726ea9ff8d7addfdec5915e9f469f3883faeb9cf819704d2fa8c9ff074939f10de5ea3edcff809e4e8e6ada45818fec0939e0b2efab2bd7fd6cf85d72afa99ed46cf24d7f9dd273e48d49ac3b8bdf02401df185858e8925cd44e59d779d5df31d8ab08f3983ca4577a060c8a91757f1ea68a6c9b6ce6ebf2576aed86fab5d9b6fbf3a14bf2893ffb3617b77b9b476fda666d6abcadf4355a321f6bf48ada8745d1fd477dff1f5bf87c5aece9a6d6a088c91b24a60fb509e893600cb58f636851182cf1736afaafffa51a4db40c542b6de9f72e0a5f7ce55a1a6fbf8b876eeaa7b503f0c0c07bb00e3bd347ac80c98bceb4e6884322dfa808768abec0c050451ef1d221352488ab327d7ab9a2cfb0fc9837adb0d6557acca691d12204feb0f1b531bc261f35841c1e2713bf6c78d7787de361b4724ab93d94c438b7cb538d797dd4d2838ecab8e14c3dbda38fba1216fc76c8976c5ebfe3eb9b73a066a7425d1d1c9827fa25e7b6f1717654656aef9c9fa514f95e7a89c7fe28f82816f99d3ed7301c6bf4dee0cf24f3396a777b989bb5d190aa51131c13c7297b79ebe65a92b0f673ed15a5e3b964a9afa9c965cd6f1be7b29b8acff69e53cc7463ef5939e6b3d602b8507ded70aee8c75217bc6ab0c388f9ec0471a3c49a72b7e75bb3ff6cfabf167a0d9e3cf0903772408bfd3760660a59399589b15b188705fc716cd4b78bb54d7ed9127eccc33aa8597b191a9e68be97d45e806fc51c78eb9418c90a1a3235fdbf7de02a3176a1759c42d37e5064f65fcfefaca5cf41ea7d8faf31f3bcf103c33c7c9746f79eb7fd027a6ee8e3e9fcd5600c560ecfd363cf08f39c6bc1ae793df3dda1d189f1ab08f338a066439d7c9beb63ada0612e947fa8f8fdd6d084395f37e86f06ae77c5be1a3e33c76bf01b647b093cc7e65f5e33fcf335e3deda67b377367e43fe6caafe77d1fb7e78ccb36bdc938c9697fa1163c70d8fb9f3da1d447df83edcd4955bff863332b98eab7eac85083c53e38eba81eaa6e039ebf1f2426ff2a0d180fb8fe2d5ca71e12b04ef2ff487ec06bf64eaa8e631ea72ca67e323090f22e073f4bae21afc87c114e5677a88433d3fc08dd57bb4e12bb8c1b9ef1cbd935c6a396d8a41919b7348f7aa463db76c7819e0acbd1a9cb307be96f357da517fa51945fd82f8d8bf460d43e77ae86baf1b8db403f752fdfc9dbafecd7ef6aadee6f643c3e0668f58af77f1c10ebceea775d8dfe8655f61063f68779b798ab8cb0d9b9ca7e8deee19b7c0bf3aa0468bc7fccb7eed5a40ef36ec38adb1e737b86d813a5f923ac603d9f0c8753e3e22e66e9a56832209e001102dee1d53ebd81efdcab6dd072eff965e68a72d16856f8dbdd9049ac5e2407d6cf4de7d073dfd6dbe0bfd8308bca505ece98d7a92dcfe839aff5ab881b77893afa9187b9b6ff348628e2c5853bdfaffceebbf49eda47a998edc64fab44ea7a3cdc8fafeeba1e770a3068fbda95d465e96cb4ff54e96b7afffed7a627d79fd4dbf7cc575c6603c2a1953fb816b09bddaa5c86d72239e885786d6f148af39f5f175c8d174fc6dfa368d4e3bb067b138c3af1d7bed17793c7b9bc827f1b7325cce3bb563632b2916d3fecfc5f326c97aa3e5a2974cd3697fff32715f1f71e3557ea663b6d6493f955ed3caa267e071feffbfb05fde99abcc26aa956d37e247921c66bdae78ec77ffb7d6b828ca72d53dae6f81b27feec271db997774ae33049633f03ef8518c51e32b55cbf834761aacd1c9d382dab2f7efa3f3dee111935fd58ccd7e422c16b4a7434fee104b59d005b10786031e823f133bcd5ea5ef7f8ea7c8f6c68770afc051f11b6e75abf14e9fc3a75ae6e6b31abcb1c9c92ef58981a9a8843d287c1b3ac567f864fa5303a3b3335ac5ea88292b9e80c9401f1c980c9c97947aaf39e2ce8eafbdfd3b6ed5cf6cabde9beb70393755b39e5883a2d967947bf5d86bdfec713a77b8779d74d749efbbf1f37d6091aff7cd3c0f7b07b3e6b4af3c7042bdc654a8d3357eed2d3dae3e7ae948fa47a8d39aeb631f3eedab6db3bef62dd5cbf55a6ac15b2cc2fe4baef06b2afe990f9d3af7a12b89633eedcf588bb92fefb026175daebbbdbc94ddb4c6e7df1fff89855e336d152d268bd7d954fd99b8c93bfbc158b30c6e803d177063eb1386c00746e5ac8f73eaf58e45c9dc147bb8452de373dcb6aa2f70dbd525e6fbdcb36410a96ff328dfabb1a88ed8c715c67ac5be80f1e16c308e9c03adc0eb1b1d42d4dae94135e6ebf13fd6e9b64b3dfa380fa73f898f07e726ab222f38c0cf22eabe1b3d79a38504bfb2c64fcae67bce9e47ad4ebfa62fc18f8ce41137054d857af98d7d8fa01578e0a1eed8ebd3b741cb6899ec65bd7897d47e369a75c19eda7db2269764b80fa351311843a7b124d614dc23f08da82fb568f059d64b47b4a049031c94d16f2c02a36332ac8d8e8a855a25fbab153566e8f9c79a28aea16b30cef0902376340076f474fe4ead6cf4e62ad5fc4fad9ee37b4d9f0fdf87bdda217a7569e5405f67500c2bea9ea4827a3a0e5ea77a794bdfe735ef168322e0f71f032fb89785343a3ed29e7bcdef74d493687a3fc7df35adccef7df4980a84e1941e6bb686dfd47818dbd40e54c439ac1c8bfa7d86338a7e117ea7cad46b6cf8cdfa397ceb700d0a495d9f2df573a055363eeacb5892185ba3e5436eaeaa750c819ab1793c337d2a72ae702d701da4db689f51a7266f38b607f06481fdd5f1cef0f41cafcdf1581f3ec3969563733d48778322a5be606478b1abc6f739a8236f8df784bd1cbfedbcd3707b732bad1c073571eafcd8e4b09dfd56888bb37ad07c5e65349d4e3d39ac49e8a9d56be8a1e9bd8ef32ea8a98b33042f4fada00fcb9afef1d846073de26f485ecbe6eeb87bf13cfa39df2eead8ded48b5eb21bf5baeeecb9bf4927e211bbdcd0a6452d47c0d3141eded08ea13ea00befc01ef40fe01177d4988b0cd7a9725cb9f6c5a0884bfa79c70d3e1f7c4265e91c704d0f990afb8e1e1b0e753ad0773998f1e7b02faad7f1616e30ad1539a6b2f1a9d3c7aacf30c72df2a2e07d6438fa99456fd3a5072c41e7a4214a0f1d1ddf6486837095b3eaf8b930fa59b9e1645d604c33f0e4b313cf0ff333396a9fe9b80ef7d7be5ed35d6aede216bd6b689b8297b86ef4a81c9da310371358cc579377688bc12f08bda61ada2bf0aa52ffd0abeaa67ee5efbdaa56ce41c6799d609ddee8635812fedd77e7c46fe9b4bf897adf1f5ed49fce4769700aeb7d1829cbe0912ab3ff559883de70271137c98a7147d7d47303c333f66dbd6f1b2d78412c5d9bfd7eccb514fd606a5282cbb5837e27e6918efb32cc37b5026f047af209b8248907ef0bcccbd8707465ceb51dfdd8e678f4048217e49ade881e347df57b5dbd1e2cd8abad526011d6d4b5063662dd222e0178a1e3e753931bef2fe5246fdebb973c0e314b55a3411e947a0d9075bfe15fe70dff3aa466a0f1111a320eadf89bf0b7ddc08fe1d8732e664bfdb9a1e7e7cd2dd6bf8e38fffd9beba4f7348bfdebc0f47cb1c6116752f4df2575bce0f381efd421f6427f5772b465c3d1d6bf9308f97b1db12f52af57f0a2576fec3ff797aa725c5c2f738bf333fa77f84e77f4f551e31f3be5b0f62d607dc01d18eaf5c7a6fefba21e102f6cc9b1e06f66f007cac425c825105b0ce1374d0e53c678b602c7da70f5f46fbad1ebb8083a8e9b229ec9880fc26d3b97c03feb1865f484fa4e6dea3cb5f9deec8fde8d6379d1cff754eb814dbe3126c6edd6b51f17b4e21c8ce5cad43bfcdcf95c8f2e15d4371b1db980c481c5c60b53bd01132a0eec35b14e7baed354469eafdf63cf3d6a240ca2d9bdfbd3cf99e52ee7bedacc7b656bdeeb56d2ef2fb387e7f4dff7bd5aeb182aaf75ae0eaf5d4f4d8e75ce2fbc2eea715dfeee75b9b336b7799d6fbbeff07f7b4eded369ffe197f249ef54f5f27a51f8d64b47407708daa2d1e84ddaa935f612ac4ff328dda9095e57f27577e7bb577363687ddfcfb749b1e825eb68fbbd3f7f1d6db2adbb59784f9d74fa677ab3dec10783f7b3f11c0567101ece9db6d99ffae411a2eea473a4b41a7bc465cad7d4a2be26d639a98813aca49f97e19d5e7f37e69d37b7dcfd6ca2c46c320ae762b35ff4926abe4dc4632dfc947f5d863df03f1dea4e2e8d9f1f1eabf858ff5b047c34bcdc26612f17ffe2da19ce5beae7fc8133b8d1dfc0dc69d16365bd9751f75d5f83a4486ef1bede06d14222dfe9e83cb86d5dea5b1d3179d445ee30c7532ba792f1a1a69693649d69e5d4218ee1c3f31f35a3565a8613bff17938c806cf70ac5ba6d43f2f82fc1c2bf5632de02193143aef038e807a8cd126b89b077f6b2c59a3e5a2e7ff91ebf9bd9a36cc8f375618e755e40506a7d260e00293b334fab0237a72b12f857e95327906f415f49ffe7f72309873e0cb25f4428ec78859a32cba069f8eba8413818f11bb675ab2f87f4e1d328321df48e015708cbb39b657f140f4faf0eefd647f40ae9214c161cc5c05380dece342547afd893cb337144f937f613ff89fd9f6a14975032394cbc96187dad8b8edd0cf3787068e7e8cb5cb75c9fee74c525f27deabbae158e9eb2aed88f3f14d46d95ed5ea9d35f1336cc6ddb8055ecfc4da6c5fa23f37b6feff9a277304cdcf00dec94ac816759133fa2977d0afb1589b9cd5f02b25aec0a177aad18912f477084d5d893eccc21d145fb4fe76e1d12d86db6e15f5be3fb4e36fadbfc66f4cc6874a99b130040e2377e89995373e64fa5a89610d4e64ae8c5f36b4b05117c798e1dc8757aeb49a3135f7e8818b6b0ebf22e8260835c61e0d9f16d3fb873e28fb9eb1cd3d1ef83e9b3cd58c788f1abe5b47ddacffe87bafdaa57a4d77f2660f4e5e626b3fd5c957b775f2ffa1b608b44ac6ed0372a195288f5cf033dc50569f6b36de8fbb7e992cf6e9a49cbe4c663f1fb9eb27f9d00a5ece153020f1a142efbcd3b6a93164b485c0a594e8d54be28bc4b08ef7b2006f721fb28767993dd19ea3ff9dd6f49b1dbac40799bfb173f8d2fd30ee2f1f9ca1ebb9ff05eb9c249f5bcfe9cd5bd871dcf06cfd347d52609e818d3ae3ca0ee8415a479edf32bd1b61fe5ac44743f718d88b50bfb650ff528ee39f1df35e7df6f3fd76f3798dec31161f63f1bf3b161fb9ddcddc0e58d05c59d47e1e107f2c88eb1aeec00b2986067f262b728da02753aa8ea8a1895f488718e1614d6f9e383f1ed7fea9a07788985f96c8df750cb745eda6c5b82ef174ec490c4d6671bce83c23a006077303bdf7b6e6c0bcf93bf8db03c7202beab15ed6fea206a33676ea2fdd471325d2e9a89559fd65568c1e39e67f29c7fcc275205af4ba623155abdff6701efbd38d18f86fef3fef6a2c5a3a8e4d8ae51bf49cd79278318c0378985ad4c5a11e8e7a863f1835585e53f482eef142093cff003e2139b9ffcefc5fbbad07a7f05163d2ebcb3c56cb6c3bf2e7f6623fef7d7fe45ab7b53af4bc76226f9887cf9f7a6957b7f526479feb4dbea6a55ae75652e4ec19c07f40e6eaacefff1f632dad43e33bb3bbf62df0c15d92d162a2c712fa9c55db5d1443e88bd1c7999cc2c8d36b9d7faf676194f5ca9f8b67a333f4a8d37ca20793046a039d9e0a1cbb756e7da2cdd5fa2a7f4269a7adb137b30651a2df0fcdebb137fb841b90fc7d0d9ad774f70937e0be3dcdd6cf8fead852bfb2ed83437cbd87f9b95ae72e3c275fd3eac7568823f6689b57c493ad89277b4df5187317855e8ffcc3201a4dc25e0e6cd28bc7350a1abcdbb3c7c6c20217f5f5f4f88fadb006917f30389837b949c58fadd8a9551b3ebbcd679bc72a1d5b19cef144f9790b5837839b32e764ffd80a0763faf273743e57191fe15da35b128edb8ef95c87ba46c39cdf7579c45cc99510e635d62946fbcfd7b345ef7b954e160f5df46b1c5c2e0b7dac276b108d02f98ab1500d22f546cc1b7c58819552d0240b0e89feccd79f7a9faac7de68a22639f054c0ef7b8bbf3cd69d319098dbfddde33a5ee5220ebd8b979e8e6b551de4ca7032e1e10a3e5a6e075e9e431bd86abc95f473d05476027adf18fe0ef4384af25f8d7e73c731deaac14ec7becacfeb419189611dec257aef43723cf4980257cf7c56d52ed516dc244bc7d2f0b145cc3d242fa7726cee496b6750c435fafbd045451fe3008f5ad604e1b917b2b62342bdc77a3a2e4ae19da82a7dbee01aecc8671cee594f6a97f49a1cbd81230badc9b8a6dfcf9abcd41534f8e8e75bcb9d8cf4ba4b9ec1a0e83f811ba7e780b925e724ddebdf979ed6f02ed7fb69055f40f0bbe18141edf4153c8ee0ed83ef84eb11ef54e558d4844cc9cf471f3316867fe840637d051e76c9ebe0ef55c7a90df7b722df28dd0387bc6ab4308167b37e3097bed0e3d13109e28057798c79a91571dcf38ff1c3c0c41797fcd076c30fcdd5b33cf92376dad0c160dd96712cef0bc6b4f7e262ed64379f74ab97e9cfc71a7e3df75b81a7e0ad7ed46982a6ac73eecd5f079eef9ee2d09ce300af6b57633c772b1fdabcc38bf4f5a752e376192669ebc5db586aa2e3804da0a6dccf8f7e02e79a14537d3e279f82935e387dffceb42c0c3ef7a6ef4afdb93f207c0b8e7d707a241d7de42f3c06e15df8893ec6a537e1bde394dcf31bda76cf73ebfbfa3176afc62e7d70bdaed4fbc4bfe219417de58a73013c4f3bf08272ec2da89d133d5992fe4135625cfa6b96ccb944a9fcdc4e0a757c9d1e37586b27870f9a89921ae1558327b9f07c3be7af95ec49607fb1a8ef7db71f79f463aac46cd2bad6b74b16cb6cebfe9c6fb347fe7523ff923a976e6ac1f08b6adb1f6bba7f9a86de2d9dd03be37237b3479bf90d1dd9c79af77f6acd8397fe71bd8b91dbbb81b77ca72736e2b90f3d506893c28b12b582d75440e70c1e0bf44601b61e3eeff7edaf49af5b3f309537d61a784e9ed701b1369c69bbf5a57e8d3c8d2987eb4d131f7eea75e6cc3bc2701887f45c42cd736162401f58c2903a47d07188bc6c4ffe84238c5630b4a6c2de85cfcf87bdf3dcb7b7d15ca297ce7debd2e86d36edefe6b612e9f4c15fbda10394cb481d7561cc7581361c7cbe5b92fee6f5300fc7edd6a258728c418fc2679e087f8720a7fe4f40ed0b6896b5c9ad9aca96d149cbd558349ed316b5bbd63b6a01e9b50abe9162803df1ca2fb13e8ff55f3aa25c14dd3739c5be7d7ebf4aeef60b1afd9c4f924a464fd16c526ed23fd463e18efdab0ebca585da33f47415f691978ea887754eff66e884345ece6d478f1bc639a945bd8721b406034fbd496845a5f435361ef3812771ec66acb08e72f29ea78709f69a524ef23a2992404ed39afea28ece878bc1d8f87740afc9b1e845420fd345017d7e607f2e7c4611a32701b45d26f98edee6c38fdea4bb4191da7c3d74a08e1e9fa12777f4b66e9ea37e94ceaf19938d0cb778b8bf573f3de96d76b36950c756f23e9b3cb433af7906edd2ac0902ebc3ca6951fbae4d9d1a8c89f68d31213f5c5f3e3ff67ce817f11a1acf43d4fef2cad45ca01b66c619fed7af27b63eaf06454a3dca71fb6c5c04a5f1e8b1a4955b8b22d8ab38178b42bda90dfacdbcbffd648ed093d64d23f8e55566ff3e189faa9d5c39e5f0e3739e9ebfeb7d987c3ebfc67763a146adf976512f7ac9c36bedb696bf0b2d7fcb68f9afa06f55c38fe9b5c12875dfa48df1db78fa39d0cf8cb27de8d17f5e796da3cbd8267725327e8b515099c79dc0bc8efcb9d8412cd6715ad2dbbca31e6ec6896c78cd5e6e6eb3d3e3b8ed9b9a78be975e7f2245ee2e8a98be6ac7982068628216f2980a5c9fff382e403d3b92fb3082566b092fabd7b41ad0dbb4a6677eba331e67256b85d0c6b5c20ef4bacba0e3943a269823d77f2a18e7c0bfc9e8dbc618f3f0363dea10c9c683aa455d5cd1dcc7f377d66a92ccfa7339a0f7d5b1976fe83322a6e37a2cebe10e186e5ee30a9e63bec927e9815fa2b79ca40e7bce6de262d0bb9ebdc9ed415f5fbdb65103025abb8b6f8c637cacb952c7b505e3151d6742ef724c1d61a30979a1ab9d55a23a7af5d05bd9d6f98ef13ea31e739155093c834ccc1c31c71f20f702aec8e2f85feab16c194c343e077b08f58de92b1eadf792b1b9fece668f19ba1162a935f226d3e3cba14d3f81f6721d72aed7e1856e97bfa3566eba57ebbc94f651e36467f4c9ab411197d8df22cc33ea70e9b9066fc2f58e3ca2d1843a3777c63153b57aec11b7e6c2c252bd5ccf83b70172b4bc9a63cd1aea35083a35a19f3b4653117e05f45038fa351f8c262f6284261696ac11d12f0fef457fb28aebe13eecb46dd3d3d3f75de3b9df6a6220a3e38abe91d4f3ce32f584c8df87de19b6c94eeb41d1a6377e6dfc001b6ff1f1d17fdc5513bf6a7a9c867f2206c530973dcc2987bd205343ea88e37721a733af510b8b8e350bc760a81063cb24b575ec77e75a3d4d27e57bd6eb1e660f0cfe55fd40412f6931f98d2fa5fde2f527eaf9e74eadda2e3d5a805d7b1f90c368f443c1b19512bedeeadb3c8257a3f10d862eb7a5aa535c8db53191a5c27845ac0e7caf9aca5bf95c24a32c0f8ddf29fbeac9376a404153c692dbdc5e148bb74fbdd8d05bf49d978eb0f57ca4bef10d0c1de2b9d4664cefd763af6f29eb561d77a1c768a09ed3ddbd1a3189d5158fb179db7306fb78340aa45e43c7ce01f5ed31f8e225eb0ebe6bf677a16370d6baa4d9fb8d7e357966cd73ac477dc1fb1a6d6d59835fdd783494a1a9df52d757d4f419f0b9ee8d8d0f32702b7c8e3deeffe6fbba96c1eb70fc17be8d5e7aa57f5770cb758c52eb71ce3561dd327c2e6a7e47cd6f259adf6377d4c78d9adfeae27dc40c54f0a928b987c18b59c7e48ed100ae11a3a3eedd78b3facd398bb3736eae4d298fd76668ae8d1edfb836889b3eb9a6e5f1bb7604356aa3b5a90b0d2b60082aae33acad0fcd6fd4769bf7e9f3fcddfb5033a08ebf30bf0de3b7e6b7991ec730311bbffdfcf81f7ffe3f781fe75705bd9632696ac3781ef166f5f9b58187efaef9cc7fe37dc35aff5e794efe1ef81f7aed759057602de6f55455330ee2ddbdf88fc4daac675622b2478fea06cf013e006250c4d5bcf1498676a230fe5b786cf7e96342b8819758cacf5b4991bca99ef1c761be28162b215ebc9102ef789a0a6a6f8ef4eb6cf69dfc9adc509f9c1e9debe91ca84875ccf1ae5807bbe851e1b129bd16a5c8eb45b17c0bbbac33e3b37bf92e7c4e9d176f690da22574c6f46f36f69415f6109b3bf7c69f2f93d9cfa1d57d475dad968f7dfeaa879502c7c978d1f0c7c11b1c56f417313eff3a67991cca41d1a64f8c377b325a82d0cb6ff8ef86d7555fe21e1de8d6987101fd40d5e3b1d8cb9f2dd5ca69292fce9b5b6244870603bab9fffb313ed07b13f66455d007867823acc7167d99526aa36f752c8c5a363c5614f7f483f11da2473afd9f1cd5716a72f487069ba0de8db73abee330a2778f622fd7785a98f342bd92f7c30bdd1af8eb5546f7fec84f32fe2fa67e69b051789fb44e1e80e9eee891460f40f71ead57e498fa3b788b77e0b48a0cfe1ac84fc7829c17bd070007eb54c677a9c59a4a5218cf27e8f7a37713d1df1ed84870cce9cd24b712ba42f42e92357c892aa7c2778a0feea0f06b68f3c3731e7a0842ad780ef0098af2dda058060acfc78d57c841568e50cdfe0bcc7386b5d3f00fa98346cf919a186be640f436ccf8997a6c7680f7b4a87594d24f65d5d40c2478b6a8ffae9c4aad302fe80f058fe018be0f3c1fd17816e8fb3a661183c237f9dad031b5ac7de8ad75feb633ba102d1d9329f83804f5bca3bf136bc591470cb3193faca35506935ca4c6e328db9df8bbf93e24a60ae3051ae42bd43f5aacf5e9d7831b67f1ba198fa33ade2b6f61e9ef7777dd0a7a37e5afd47a7facc99fe65e5da9e3146884f8be5e5b9d905e334ed83979e3fc158f778e5e32d6d65aad8d4ec3e4801a13e2622f99c828216e006318e3ced1e38cf9c2baf1b86e71ccb559dfac11dbdaf4e1c9ca171d6f44ea4e0dd2993588bab778a4f5253faf4bdf32e65f274cf21438bfbcd1e3426c3e6e972fdea8306b6b2ecf30d28b95a88ffa5d278cf3aec1aa4a72c4a83b86cf3bc3614fe5390efb6e4f4772d7479b456fb9c9b69bfd4c2455b6fd5ec5dbefadf976b479f0956fea1dd8f4c3918c35b08ea7ee204a73fa470197b357d0f782a755496f8de15e16a3736f996a885e197ac3e616de294ee0f9c48eea756f7cc6e1e8089119dfad70dc16063f5f1a3e8ba07787a913d027b7bad45cd6fb795bc714cdad99d3b9f1dae2f762bcb23efa75cca3f64ef9d222ef48e7017aaf0107a9f1e832fe21f034cc751cc1df655d938fbff8f0bd33c627d5313e817e2f7dc8878d6f602bec0827f0f21dbf4b0cbf2f75f48cf48959d1e3c7d27bd4b01ad60daf4aaf29463ba8a2df51e029f016f45e7e8ded0547887b66c17d528d4f9ec48875f0971b1d1ac4397b156d6abe5634ef03e749459be2181fadc0f7d6315283af140de6ef236738ec88f28465068f63a7d7d4938f7c7a37c7f77ace7fdfce1e9cf12b3ccaa0c84be6b35d89381e9e9b017261051caf638531fc9f74dcd6dc723eaddaa6d762fae863a7a4e76a40fe5824f5d83fd0d37c687affc6232acaf2e6d67844d14b2c6aef65dde53c42fc37acd328dd4b4f8fefe616391138774ac7a097c77f820f20b05ce6b67331f791a3c82836be970dde33a36e3bbdba2df84675cc98d7315a73cb1ad47f3087d67bc9fccb1ccb07477050b4abb99741bf5d558e25571f7416568e439c4c5e124befd8d44ccced147e99a60fcbda9c8e5be9e387be1aeab83b5cc3b15ee3e04dd4e00ce07d68d65147554e4d9d339f9e9eb12c0d1ed7355e85adc05be7c633b0c941f3867b67f876e637c36d79fa9eb3771c936b7c693880adb4366b60a78d9ab38af23cc4fd76c37fa4c7e88af1b4aae1b328b8d6937bd98c4d59b59b5be34dd6acd93abe8f2baeb7b91e5fa73ffaf6e277523a1ff752686bf15a060e3f87b893d0972ee3f598e714b5e1f18b9afdea6e9e0cea29492f112fbda47a99b8af8fdef355efb9d2e3f0763f4f9e782aabb3ded7ea72dfd17b35e20dd4864513cf60ffcf2a41bf4fc4036d0b9cc415f00b65c3dbc5dc470ee0bb73d6086cd56bfa23628f781d75e14c7f76cd38f99fc437c851cd7ccf1aac925093033112f5a830fc55780907ac41baa825ebf5889c0a1d0378a817c13f9b6ba48e2d4cbc85dcc2680ac35751a2feb976e9a997bc9bf5b01eeabc14da84f95ee9b59cde03ae5ab54513bba90e7a4d3579ca7afe0a27ab7313d7e8b9bc3471d3da22c6c9d77113f261e8dc45fd77f3dbd4691d903b048fdf768b9ab271aec6c2a1275b7ba7e8cd28f05b416f827f77cebfa7596fe4bdf4bad51feab177479d6f4dcf10726c2752e4adcfb841ea363748dce2062d56c2a5d6c73d3548f004c0ed313c39fba87d2672fb9c3727a3a7376a46f86ea0f372cbe8919cb4402a6002acfc7eac7edc5dcf7cf56b3e696de6af7f264eff5e4f949b7a429fe3353ed3cb12731d7774a915231bec9d00ce8cfe8feb5c40c7269a5946afca60ec12e8ba283f2776e2f9e801f9a6baa9fb05189da7796ff33a5f2f7f65dbcdb7b9e58a74527ab389fbc7e222eec31e630eb65ebc25f0c721ae07f0e73b354d5b4613dee84ca937354d77cacfeba458bcddeb6f369c943f67961bccedfecf1fdbeffb45affb1ef592ed632fb8c2555572add747ae97f2f927e7b2c8ad05b899b389026e333d7bec495faf7bd7d3f797c9623fee7daf5ea63f7fcd5f47cb79b7ff73662d1ffc926b1fa10afb5d81fd6e72c4f1f7f2526d527bac9fb3110bdbe058af443dd673eecebe83994393d9b42f5e266a39f7fbbf16cfa35f7fa8bfdc7db578f029a03d56c9e794fc7e706517968c666fb2059d323bf0666f8348217691adf4de9e3df7a3cd6c93bd8e7ea616bc9fa0f9fb9843d79e28e0d925d079ab17858e15463af6b517c53240bde439c5f50a7b790d4f476f64c14b75255a2fdeddf123d6bb649b548bdea64827653cb7db8f98e1b27f4ead8a663f2a9ebe4551467fb4167401f55c226677abe384e35cbaf7da54b349f7912b7ee63b6c1d760a7ce93857e879ebdf5cc7014b9d5bedd4f34f1da7a35637ef081bd8152f91e8bf5ae0c454e470c04b41b0be98032f13a256e3b80aba0d4e1d789b40461b0b75e43b7b84c3e948a413f536da6ede677fe69e752f4eae15783a87f2f76ac29abf64edb8d156cbd5b3345e09a873ed54376da5c0a8a0af65eaf0710e4d0fe2e8ff529f2b2966818e21c3b1737d2c2fce65376d9d7a88679fdd1122ae513bd6e76783cb4a6eec01b84a0f7eab42a15f11a32605bcca14fadabbb3e75073e2fae1dfcd8f6ec65934f9be9f4dd77fe49a7ea7f611f40b65c7710dd60df899706c78912b6134389a1e06fa13f447033707b5d3e6be1e0f8ec1d40af86634e367e500572189773890c79155c4ee4273b246ffa40076d791495a3316d09f4d4d93903ddc1d3d1ffdbd2a72735fb26e8abaa734d8659fb55cd45a33e86012f3068c14b170d06a075e0abd15d4a7c78d9e7b066e143151bc0f4c1df0c7b9fe8d5cf2a6d6f49599007b54a5157a721531ed3efb745553b34d1d62b0d404de94760a5cbb9a10936e785b75c36fc1f702763d6eeada0eb93243fc56a1076f121bbd967b73f26922e66251a5d3a7b7477cfa5157075a9d7a0f15f4120067faa056621f4623a9e786da1e88f3d78faf0f65d86937be4396799f1eb3d51cf8be217810d053ecc01fe9f4d8fa600317d9bc770c9eab80f6d218b8063c0e7f53eed907ecd1788d2fa01dadd750625c3986a11f1f9835977e47e823c05f356e7017d44af5fc5cc11b27413cc05e41db8dbc5cef05aee1d696f4c7417c7090eca948594860bca4f551132f03770471036294919455bb0c718ee414de996b75d269ff4f8e11ef892570cd256272df1d7bc9241c3b2607762cf0f0568eb3287cd4f407c572a2a63f81790fbc25e3bd2dd63667b112d6bdd7696ef7d7b369ffe9e16572632faedaf5a2f09d17cf77924205d2feb9439cbece5bfab77ff16616b13bc2d1d7514d726b51e89c2bcfc35ebe53afa9cebdcc63ed1d1edba42df3befbf687edf76ad64baae1f6bb58f4be3fb4b7aff263687504ca465fcba25fc83057276d7ea3a1bece59d780ae7dadd7ebc05b1ef5f6172bf4d5a0e52b79ac891907e24cabdfe6fb4697efa3d6be73f63a73fca7332f01f56d0e6dee2b3f80833edec563388fc5f13c94fd7327a1e36cce8bba253bd9695ba69777f63ebf1c7beafc3bd58117947a6cebfff11c35fead8bd77dcdfae2cd7bc9c35bf67a2fb0b1de6fd21af59a331c2078c876330e4e9e0ef49918eea099b1124dffd668357f786c2c9ca3cfc41a3a36c4789ad71daf794788e633a5f9cc4134c2b8fef09a09f956fd668dfb700ef9f5399c7ddef9b95ebfb7bd9311e7d2d5f99f3f16615dbd18ef8328375e15eae85581386e7bfd19b73e573f76f6deaf5997adefef73fbd1e7fcd0e7b488b7cc759c4ece0fb47d1c5bc58c970745d04ab0e7eae792f7907c2757c7d83fd6c282360ce2fcfebba216916d627a9dfb55113035c0fb07e440ad81e98336740fba9afab52e31dcd0e4424cccf85e0ae48ef568090e0d3d2479db39bd36f09ede91ff926be3409ba8c8981fd6b1794ca06ef7630ddcb15e2f0e0b7a747cc9f8bae8053e62ec8febaad9dbced6b4ebbd53011f615dae85d4ce385b7f6fecfd0a5cd2c5d9fe9d377c8ee36b0697b106f76abd865ec6027a3c379f775cbb06b7d6d1b170e0ed132dcfbf53198e758ccae3010384fd6276631d5d7e8c2fc4557c6162938bc7be66ffefcfb7eee6b1ffff8d717a7e0dcc7e1f4571aeb8ef32d6c4fb7cfbc3f876e137711aa74a8ddb7513cb719cfad5add853e1fee2e4f3d411d68731b5a356f0e598248e88fb66e8f3fcc8bba60f55687caf0c37db8256cb87b17e167b7ce9fefb07e357eee3358ddb959cfcad18ad89c7ea8f31e6e55869df58bf86c7f8cec4b54a55ed96891fed8f316013fb36ef63ae9d96a1e1958693cbcf84d67974e56b2606d1d57a761844beb85e1f8991bc1c87edabb1398886ffb57831b2933f1617775f3f44e64d1e7bda47cf726f72a5b0277f78ec66fd4646296343e079f5d8f08dcf9eb83a26fa68061ff9159cace65ac7dbcdebcbf303177b85afab4e6b53b36ec8d3ba61f2ce213e4f5fcf4ff3e3316b3897792f62b4db31d5657e9cdfc88f1d8cbddfe6beb772f2e18ede1ecbbfdc4bb9dece2ed7dbf3ef71b1a62dff6a5dfe9a716a8fdc79efe10f7a13775f74ff3a76467de714dfa98ff1dde9bdceedbdebaafea7e3ad663ce9f5cb3a5fd73ec4715f320692def7c3a3b6fcb18e919daeffb12677aa2d35f10cf6a4bf1567e4376a72ed1b35b9abb56a67e67df39a5b799e63d60bfb77b5c228923973dc8f7be5d5b83ccf919bef002da68f711a700c1f6b70f492f83772cc13f6f611f7dfc833377f51cfd531f5ec2fc7f4c0ecbf1fc6aa73b37e7c3656f59c51938b7d9b3e98d7e3c3415de2b8bff90ec7f5757fe46a1c31de3ffc8d7a8830f5ed8b3df4f8fd7ff719778ed5c5a4bf9af792476ffcd37e887ff8226f53f4c1cef95447ed58f0651b8fd533ffd5a3df7b9073fd720e722c0ce796fccb467f1e5af4b63cd3a26fd7e0a35203923e3db86f3c7b4cde026dab06bb75d485e9d69f7a5f5efa6e7e630d3dcea59025f5a7809d2a81ddf3b21ceb70c769657580ff8fb83e624822f2c27df059f57dfddac0f35dea6e486aef8ddb35e7cdc6e0bc2475f90d0e4a55e67ee5b4e2da17d4ad8a9bf7b6024f8f3da36355b49bcf70a883051e33bfc3bd3e52b17a9b4dd4ffce7b9b7ad1ed8b3f74ddbfcb475109f880bf85097ad4076048904b6f4c4f3c86d6aaf20fa55c394ee0657be5cddecff142c6bb82faacc0ef0582de602309fed3981ab0d081d27bfe947bc29c63461c3d38ffc131c155345a90bcdd7cdd58798c936b3eaa95efc229c6455363715e3ac2c5d899b29ea2d7125cdff850fdb371d25cfbc66b35e67888e8311cfafa787eabd14a3cf366ad0685df78a7343e7482bab1781d8f1b1f5a7a9ce975eccefdd9cfb6ddd771afbb9ff5ca3fd323f33e6e9d3bf64696dc824be71a3d75e4a18c074777e79da3e7fe72f167eaf4deb18ee7d089a436d0e6420334ad1c3bec88bdaa73fd47ccaad1070f3d25a15d81bdbfedd2f721df0d8a8c18692f3ede472fbb77a03e28343fda46cbccf83f3e23f63fcde5f5c160547d979c64e8f5bc2b6af2d847bc75a34946dd3be0c5713cf6fbad4191594911942f46372da49688abdf6f3e8faf9f361a93d9897f019f5dac4935790abc3d699d9e78145975a6af077c772c8c6fd75ed58d97504c5f172f6bf4321de2e28d5ee1f6501add8dbdf296057eabcab1181366c4c07bd0f8b489b34f9dc6df29f0a073dc1ad6061b0f9dc335fc8c8819661c677c0ee00f157af87e16f105b1453da399a72ae82de9dfd809bc35b56d576d37f066466bd137d7d5a70f31b41653c317c8f5e7ef8851702cd511467f139a883a46e3b5ec38a5dc022f510d8ab52b899728e13b33a6c63bbe4b2dcdba0c5cbfa563481d931a7d975a422b45197d97dc3ec6932bc7a6464c0a5d3ce52da0d9426e54ee0466bc339ec4ef9243b3ae18eaf7e4e6b777d496d866a33f75effadf9df53622da7e177f2807ea1e2c2c38d4729a22ef1f347ed5dbbc94496a5dd60216e7b580528d9147d583c2afe71dc7c6bcacbb4be2701c378c52c38d327b7aef007f1a55778b4121dde68f3c97a0d1b92fe71d615e67bcd2c0fff051a31a1419b4b6e6d0bf928851b9cec0bff65dff0fcda08aeff9125fdb78f62bdbb6960b9ffcd53f9a5f7c6ffd344a1047c867d69b4c5dd1bac2a3a2f772f9986af009d1d3c4e8dcb02ebecdcbb09bd663ef5ebd85cbeb387e4dea456fb3fdf167ae095f805fb9ba66e29f3c7656bf3e0ca2d9bf761d1f98904ff854e376a962832f8afac7b5bdc1f4c8e8849793565e86cf97fdd2b077f9d88d5ec27d39c1f67b359f7485d1d818bf4c166f8febf8f7e622700d9e6feaf51b53c34f77aaf7f13af231f60836d6093fd107775d8afc5e7fcddedceeefd2e9a833b7caf5634fbcf616445c0b5dcd4d3128d636fdd5e0cf4d6f357858423bbf621d9cbc6fe68259abe17d53fb61f4067c744f1a7f1eea1e1a8e7873bf3e1e87ba82f07880e62a63a916b54181f5634d7792d71ffd9a798ee40d663a9f325e6f275fe504da130378c849f016c7467b0738ef4b1fef4bafb8e96ddfe72f1a8b0f5ecae7b51e27299240ad9c3a9c1ce809af7346eb60f26b9d53e6c64f4de7ba5d2991affb39707bd015d639616e455ea073d44a59078bde15e93e8c16929a0abefb425f13d357482dfa916458cf2eea81776a0f1cf7117033fa3dfd7bfe91ebd09d3a176a057f0711195d66d9695becc7b1c62357f0bba9e8f316438b408d9d524dfcd2f8c8509f181a15c6d76d7b38ea4ca495538563fc5961a7d138d19f3114197d1fa86fc03ad75e79239dafb5a0953291d05787de6ae345c3fe14733ff899e05c0f91a7d7ac1863129e3ff53a97d15300ff9b633d896b8cd108b08de62cb439e037591cfd53eb537fb06f7c24643da05642abb9bde67ba4bb7bb5003e8cdbf16caa367f70fcb3fb9b8fdde3ed008d72f852a116d5ae0745db21df5e9abd11635ecca19121a9856cc9bdf4e023641b2d8096326394fb975ebfd68e8eaff43e1e7684057dde62c9fa21fcabd113a60647e518cefdd0f433460538487a2f1e3bf46f3cd67a8736c7f610bd5e198da4c2bc8c5b73f8e405f4fc5b4bcbaccf257d21d363ad51adda46a3d6f85b4217bd6de9d7b0e61b57462bc4a54792fe5dd6dcc72787aaf1eb51859252af6de056a1ffa7d7fad6a0f085d1362fe1bf40dde7c387de3c6bacc55a9f33bde5a1f10e3d6a31f7e2e698b6dceadf3aa39f163d9b8cc647accfeb5e2cc62906b0ca5fd966b4f9f1876272efd018cb65a1f795274bf9c0e9881f5be87abb8348bd418f0235f1c0668f77f9867890fa54f01555c6b32342fd3b68912f12ec157a76d82b6c6a640c2bfab8514343567aac67ee0bead007e347acc7c62608c78efb55b1c078e2ae6713578c7a49916d9365663df0aeb77004325a182dd37e20a3ee09b7383988c01b4dc2de01b840831bf9c853bbaacf812bbccd4bd9d5f9a65f9ee1129b9a206acd5f34c7fbf3ed68337fd5b7aa9a4dbaf51f5adfffeafa819255db5914cb77f4dd0dae2aecb45da39d5a35d7ee167e34643df780fa9e1933c4b55ebef76b6a7c1b914eca9fe99fd93bbe2fdee9b405b488f57e3c39ec8cfe9533f66696b4e0875a536b46e75b123ddad0c75c152f9dbbbd529b3928f5ba1bdb4fcbd4daec678febf4f13a5981b7d0d7a81579880d1baf7c1bb88ae829d031109e2bd017a55654b40894d11f31bcce526ed2d6d8f30f86eb7656ff033696b871fdba57b3ce3e7fd93a2b5fa64a0c5f93f7792f11b3c99f194fddc571a2b65f2bad8e394353f3da9dd5bc2e6b60e3537ded5413241693ff8bd3ffd4680487f7b79f91c89ade6a993ebe30b7ccd1e1f5dcdc470d877ebd78ddd01cbf5d323ed7cfb17e382852e7ace667f4f52ecfdfd4f1e89b77ac118ae3b999fff5fba9671be9586274a187328866371e5b1297d4d5637ff1457b4af933b347e162d25acda6fdcdeccfc598deb5bf50bb56e7074eeba523ca45d17d9353d48a77f2352d5f801718517f588f9db1705fbceec4e823942f5ed7a266829f4b2b2f07c552d2af4ceef57142ea4a972f18c7cb773976885f4a52787d4b3b2d597749302ea8899c184c7ffff898d1643a8e9fe3635fb8f645afc92edd26d563edbb9147ac4ee304f1e5242f79bfafefeb6b2c70ff7c8ce8bc93e3a986c7c9b85dbf78fede6046eb41d1b506c586da9d715e0f8abe842759c7f9ffb3f7665d8a2adbf6f857a2b3c6bf1e4d411307111ca513df6c6aa0a895f5bf2945f3e97f63cd15a899a9b57715b9ef39d7e3430e4945408888d5cd35672fce9db23d9e0c5accc0349151665ed846edb2bf85d6cd77ef7d4a9c198d863f1e5a3857b18d991ca6d7b57223682d9dfa255813177d1006f258835637b78f9e091a4fe220d4fefdeaccab3c4cc8df59e753d79fa595d2367cffdd3aad59f7d705160efd1747314b8f7e9259718ef5ebcb127d2363f2b9388ef9acf86538d497e6f43e31c7ddeaa29697a735b84380e5424ef6289dac127a6a2cec8d012d77079a47d08ff48155758fe29015b2990bcef3bbb49d808311da3ae4638d5fbdd0cd18db9a656247eb87b0d4f1c199ef3fa7269d137cabe84bd8600ca0f7315f19a17d716c27d3d7f9f445d496210ee5516cfb5d35945adb122e46c3723e138ff5e343ef82c8a49e926f40ebbb4bdb01ad0f07b21bb4fe631bf874355f5f142fe7113d81b6ca5d18e89371850e3b83f1a6708e2faa1710f8c240611b658cef2632e1f8e94263adedfdad9566137fc65c64998cd3e6acf34be38ef534fd04dcd99a9f9447ae7d8e5d595b960f3df509ad4195974f5f555db5c7be50da300672a28e055e77e8bad2eff7f2b4627ee4acf0c32138cb046bab5b9f85c9898cfd97472eed834fdc73296637683d70ea852d1369647a0cfbc3fa50d04dc9d7f05ba4416bcdde1566fa59189b70fd3cfeb130626df13cfeb94ed6f7c921decdae948c3d98424fcda3788039b3902b93339aa7d3d37343ff41ddafdee3a63ec7f64ff7df9ea7bbc56cbce7b9d613f1e86bf078661f397dc976ff654f2f380fc6ae1f0983f14d6ec6bd21b41d65f2fbdb3ee2750e0e568dd7f061bb9da87c7525bea74d602bbcf2f7b459da8cb3f2c2e93ff5fc8378f4553c9effb5393b35e41b6dff563f73dc78f98e711ce1f8e80fc029604d9a15e33eb67d83f93951073756e81bd8a93e726857d5d0c9fc4ef181dadea37665519cb81c68da69bc00b7d6e654379fa0efd78e83b8988fe21aef3df207576245f2bfd739eb57d3f5a7c716c3e08573e603de5afa3adfa87ea35dc3f820e01d19cb8875200e554f7a4dfbb8aca5508998e6f9dcf06f6124e063ad32ee9f6e73045db5ceceefaf1e35916bb9450d75aa4309ce00b92bc12379c6aa93ed5ebfca40d3bd303aca2433e3bcebbabcd9df31c6bc1b17dfd6eaf949d6705c21321f18a45d6f015eaa7e21ecb1eb834ba05f8ba444efbf1fee5fbaaf919b1f7363f3fa782e576a4ac07501a36b408362abe94b5b1c859ea23717f51ad8ac8d017d23e8ccf59b38774b15a3365e9e35e06b0865c27df98262ce7acd3c9714231732ecd7ae1d15bebdd242e8d1390663e6e6afc078e66def3ff30148d5a787f303471e595ebe2afd5109ac66db7ba77af995069463702f9edb708f6f571ffb8dfeb4b398496d75d86fd7b33bcdb5fdf95a4bbe401d90df8bdc895b7e632d50c5cde496ad4feca99e72d603734ac4b71df309efb48df57be51dfc6ddf17c7a7fb11ab31101bf3a4f7734ed7f9761c68aeed54e062c8c76e57cc7190f49af96cac4d8ccd66f5fdfcfefc3ed7de8eb91ec7e4bce09ae207f342e32541bd2b0716e3a4fba2b8d134ce338edf73d1965ee818811d837b89f1b36ed6c636b4cf156cfa8b08a7b98a892e78acc6894c44c9c769e324b7338feddbb1f188533efa49d014d22ff314ee00790a8a1d14069b9e49cb3bd6473c9136fcbc5ddb3df2b3d5ea388f55af01f8198ec03f8727bebab76347f1a72decb181be68608224c7b4a3ace54936f039ffff49e3e0eb7199c4c59dfa655dfba8e8d9006b1382032d233fc708ec692247592531dfc7eedb9c465fe5b2c68640af09f9510ee634c6cb21237f0fb85b1a4b57e6f7d1634d2997b5729c0bec833cbd17e77be670d032e3d4e7fb496362fa3cfeb13ec4a34572a73c4addf2581ad6fdc3c5330fac9e8f5c26385732b1a3e7eb96e7b53ee3b502fbf5ebc076acebebc5e615fdbddf7f505c508b61aa2dec35c505fa3a77aac09e77f4a7f7c5ca88ebb5131f97e6f407aded8fe7fbe1f9926deeb9f6189c36b2e6794bdbfe80b69d7ad54c145f633ff3f99956c21195ac2d1db133ff5dfe5f89fdf973eeefc139be84d0f570cbb4e63e0a1a4f3e73ef595e981dfd67d16e67fe40b35ce8ec5aba3fe8d3f6b1ddc6e7cf3f543fdb3e57d8beabb8c3a8710cee2fca3211825f127952e4d272fa5d13fa5dfaaa7edb1fccf84695471bbde9fb7dd7e71b877e6035a2c635aae3af327f80e399d04d050712be539d7278b31f4a83382d64226abec67e260756a378ea0cee9f82aeb11ed869e1dbf8adac158bbec695c55abfe869aab0ddb1dfa45d1783a4672c66d30dd7ee1ef6f243be2fe8378b8156c5f9906be9bbcc8af3216cd6c9270e1d8569ddf5e013a93531047fe97ec3f3a39f09fb8f7c63d47ce42ed3e39cb1a7227c6af5502efcadb1c202c52f5e18f3fabad5baf6a58f97dfe57ef51d58f9ff79acabefd75551609d3cf073930dfa231b9fb9a5d04f090c44926971be76a5811e44536e298682e6792d079aeeda71c3db7d1df5c024d3d6c859edf93b01fa3f4b1c8bb9ce7a6abbf1f2e19710d854f9a2eac01663ea77c094c8e7948ef32247a831568a7701bdd3027c6f16d613d6f9a76befd3b51f4fef27d9510ed34a1a9996362eeb950ffa3a7262f9249381a6af981f5943be3bf8b43137598cbe6acb470de2da9a44be93a6347e2b39523e7b72cb679fdef0d9858a07fba85ba356bd4f75c5f9579d6ad927ed58cbe25efccc580eb486b5ead70273a0b62a8ae558070c3ae60dedc7fdf85deb1f18179bd55ee6e9bdfaef9dc683d26de7e75f8aba8ff5c8472f33e626732024a847f6b84f42f4bcc0b27cd82dd7507d0ed8d76b3908e8f9e72973d1913f1fb07f023e185ee70a9ffcb5a0e57c89d063edb3bfb411e0d3700bc6b0f64b5a3710239c7cacdd91b194383efcb885ed167e38563c7b99c5bc1ea9f2d5ced7b16ae8f7698c813c9ff345fd3e5adbe8da32be36e5ef61bffe8d6bebbc6ec97436febe48acbbcc3f75b09119b4d34697bdb68ec13907b57e3da7957c66cd0ece4f8e39576942a70dba8262979971be3eeb269df739eb53e6e8bf395e6a9d289d845bef75f2a1c324aee7461c7d9b3ddde79ad42de6342906647e6d70ed839bd7b51d9db9b5a31ef74be0d5e43fdeffdb4e3369befa0e7aaeb12f7374ef326056eb7e2d0696269212380b7f94355e1e0ba1b85254ef58d73e51b934a6fb472ef197b9448aff2ba901eb6e018fb8235f77fa22c2b9817ea970fd250ce9f77d7a4eb1e3dcfdba9b47f16e313bbf779773b873ff3d74af850857856f3bc80dc951c91ad9ccd7a6739cbb2a441e27221f7e59c267243b5c4227db0b7785601d6cb2ed4206560f7d111162547aef0bf75508133147beffc8c5fb075ad76980ef43635bc5df65cb0bcebada13bacea66b6df23c96eeb3f6d4c9f6e7c317a5a74e6b8525827ecfcb771ac7072bc6c0d1f8aab196d4324e6bc1f810e8a72f6d8c9d23ebaed3b8b17a6257eaf41973bdc706c529dccf9015a201b6aef6938fdaeade99cf59f18d8303bc398d1d8c697e8fc798fc380e3937ae81b700fa22acd3fe19b6e62ed79f8e7509e6fda731307e3d6bea474a537fefca597afc304e761a8d25436efb4d5a6b856879f4950d91181f9f3f0670ae2dff496819b81463815f5ce4fb2f4bac9729f36c452534b3bddcd59907fcafd7d9ee63acb75f8ff65fd21930ddff7ae47baf72b1d593262d24c58ec8db9eb62bf15d685e3ea198b4bcfcf3c209ef839cec53084d08e8cef4713cd5db6ba97a4875510fe95dd4437a1fea21c1453d2438d743a03b000d8e79ae78588facd7c5368dd6d7937de33a4909ed880138cf2ad6bd72552e111a588568b236262f24c7db3dc6cba1af94b9ef696e71fe51535a14b5974726f8b3581ba22775e6faf0f2bd41e7f63927a1b3f602786281af63acdd0ab13f8d77a174d54e5c8d8c7306ff26fb040e5f53606912dc88021c7582f3a88d547a0e34e6c0c7c6b94c952ba5dfda6e3b05e75fc1a377a46be07bc5dc6fd2c92c2fef6ba9ca9172ad4818cc3397d2b92c3effce8c73a707fefe66caf9937c9db7bcb5c853b0a604f9b5fcfd46e57f699db0a11150739e06b60e7a1a324f990fa7bb7f5bcc67fb7fcd0f737b658e1f38a9ab739deb723ef4575696e21ad490e704872cc6166b34e46afcc3b75cd55cf701c766835c3ce7cc2d1143c3b159e76e21c2b9ca9359256be244bc1feae782b5a5985351170938138f5edeb7bc3c25bb51b16deaf3367ac1585f8f6de084ec1d742444dde778796099d2505a349cfbd225b824dd1ab9da1035899e400f67c475c410bfab91034be3b5a14fbe55c5739afc75e7a8f4609486cf0af616db21f2891573358df3b336d68e356770ee09ce0d7e15ba3f7a5a2b6e05f039a7b5d593345f988bd2126d7f3d3d079e3b35735e729e4f6c19c3abfc7871794f3ec33e7e8bbe1ee60fbbf8982b8fb9f2cbb9b24e2a6d9160fba11d7b2b3f065edf5dbd54b90b157f82cf9efbbedc6ad28067df829f3980f616b8ae50cfc99d4c82f797fca42893039a53f43ffc89cc1f81ab57f52b8c6d1940e7d0e41eb215faf8654df1765ab9f63a87ef811c4254087bd7d646e8f82aef327de5718bf157ab9e5201dc0ffa6cca0bdc4c7a945bab14ccc1c5d716405b8cc6a98aa184e265c71855be1df6d56594d522017731fb5fb556f861749403d4956af2c1bc3005af30f420b788f1bbf94487afda83b3e21a678503de71610f91871133e6cd649e54c7005e331fbbb4aed2be12bde62eefcffcfa9d9e4b341aeee6a3bbe560fcf3e752739dbf33be7e770bfb7dd2d47f8fdbae44a0ea6e8a9784b1dce827a8037b8dba9b7f594fa37dbad994c92251b6e4f4de7df6dc74ee39664ef5737e22b8c070826becf20f6bf2dbdc84dadfb5c75f96a1c338434350ac5d31cf94ca79d4f0970cb62769e187d215a14cb0d6938f3568b14fec5f891a3e9fc9fcf1ab23f8d1cdb492816501c744ff93cf1268e0e7f6edecc8fbefb46f07ad4736cb47bf9f7cc17aaf39148b97029813bc42f35184025cef7ed71ecef8e9c73c922fe96cac3d72af1f72af758b17668cf035bc30725e977f47f8c63cee2a317c830f56e36d05bd4d3f025f96e6e57d33650d52e8caab73345e2e6a1e73dce32b3e8cb7158fb7ed8df176e0f126a13fba3bb2964b667861bbdf8f236b96ee9a38779a058fef2768ecdbd0a12f95b6632942f482f668dfae6bdcd294da2499dea7de54179d97ba5ff981550be05cd72f9c47bcd973565fb789e36b36117d70f42a6bab6e7dc83fc4dda9de53f9e28532f772c49cea7cb4368d5f8499429f36adc937867f5cb79fd3ef127a8a3ed5181ce5e0d9b218b702ac4bc55c0ee0aa478fbad2a67cf19f6177bbae777a7aa87eac8cec6157dff7ac077d4de1a8dd139ff028d3d6f9bce567d39603b25bb47ef4cd6fcce96348852592bbace7e52d0fc18eebd3b44ee1f98dc96e767c76437d3e1bf72273ba593fdf670cd3c156b55841cbcb27665a5b1ad6fd1a9a35a8fb71ad42b41a759a8a312bd46e386e25dba5af6ae52f21b6e56d3950d843db51db13d4282478b32dcb1f28ed39d41a51230036526a654db132d94c51ab3ffa9feb7a15eb4d3b1578646bcba2ed34042691f369b03dfde3457e4d671c8353ba76fc6519688568d2a3aff8bb65437611750c4d0656e5b3065521edf895b581c0bf8d73916d15216a4b4a0b39aab9fe006d624b4465e5da8eb9b423f2f3b93e1a9515f9834bd4325cc4fce8cfd95aba1fa86bc82714d35bcced27ce7529d44327bdd076a1d50d8c4f2eb8160aad0ed47b4caf2b574a2c735abfe7b3f16439fafaf0ebae6a1d6f72ae7f211ed4b886b8038798e2a182768a17825fea829b4c6bb74fda2a5e38bf6aa357f5b997f8b21ff01da65cf3c2f17fcab528bdcb5501dff1aa56d4b469b7dbf362de2bde2e75ed746d9a6b4f95aec155cc5b73f65bdc0b5fc57dd353dd751e2c46f131bd4f2ecc0ef1f324f36769cd3ed8dea5b553e9c12422627bcf9c5d63573ea7c682d63a68cc4fc9d69bebad66047646efb59a404771605d62a9a7bdc54033bf413b43c2170cec7942b18620ffd669795fcf5ae2813d674e57a54d8fdf39d09a8bfdbae5d60cf973f5c8a3fc7b3911c03b3551dc7ee9517e4f0d5eafb24226e5113978a5950bbc2b63e275d69c00463af3e3d40890879dbf406f16ba67ab4c1825b894d0bb63a017c35cd26fb1594750e5f2a0f1d18e5b2f5fe981ed54713e77a599b67d13fa7a6b9932cacc181cb19dedf00b7d1e8f62eb4e6b435d34577a275e9c61da637cd0147a666287debfaef5b97031fa6a3ef8506ee5d5d1f74db1426ff9a68e75516b3a948cf10bdadadd0a3533595b3d59dfae8b757d6eabd1309f47e38706f475eec5de3a9fba729ff6943dae687b31e83e5fd6a361be30e25d887ec33bce0977a867ab1c686f89fe1af4e8548a83d604f602b9dd35e61034310fe591794d77d04ce57a729af17c3b6b4491dfd3c6dfd7e623ea067f733ed2be9f391fdff396478f1ae55b5b069c40df229f82b1d6e45f4c2cd51f5a7979bf396fa726c5415c67729406715a702c075d0b68187b79da00d30f4c8f03dc84c8f71b68f042076cd5a83c08c580d0fc4a81f7d65a3c0df22f0a8359f9036c5fe04c238d7934107716a29914324f1937135835d907857d45af82974f4c2f9f143efa9d81bd297de6926c5635b4c7e93a75ce6b38856f0f5f58fb60487e61211af20bfb3afd365c5718d135d3ff255f27fd0657f302e4a50a694f8ed02e0b2c8a512b7e8fbe23e8be98f2b48f38b2cf99d27dab1803d46fb7b9bf7fd0e68526aa37d8aa8449df8b803f013e7d6b35123dc134bf1d43619c1aae9d4c0a89eb7580c7e2df3969708e0018fbd245cdc7aa25fa898131a970ec5c585eeed2f332156eba90f4a765a6978b1ec60b7e57df026e0bf766c5e708ac1a1cf7c0268c4fdaad0be062809fb2bcbc8fe7022df5302af03b6a4b61fff11b2cd49f66a2104d5408e0ba4521c375cedf750be8addb825f7368c42b5c308db3898edf395063cbde31be3fa7e36547680433d6b8f2713f34e0c0780eac807ff158579e316df4bd50f56803b3a6b1bef780f3728c79812e37dd8366857c1a1dcbe5f980e38f73dc1bdcabdd515d23e73bf1ff4a5f71cf036d1b6a5f3c0ff46e9f758ad418860e32e731c24de3e5c2c4d8cc5385dd19e6c8e7d16fc953cc133fccd0cb259a15fdd6423619d70269ee6c2d0338b3019e43cfcb05cf47e07a304e4a7f60f5e4b6c5ec4d34be86167f8efb59221f42cf98eedfb3a8d45865fd245a2b02cbf41351489bee8fd0bc3cab3137180768f29ab1867e0eb6ed159e19b83412517a818579c2f77ba230f534064e73558d47a7bdff15f2bb8d74453e4c3af3c0c6524fbfcb7c75d8978ff8e83d1e09ba46ccb79364cd1adc3bd057ccb98f27c27a28584beb05bddc0974f7e8b5b9d0cdca946e562666699536e80dd0cf3a5cf43eb0a216cd057f048d1a039ab3d0769ad44aefbbf1c0756269e2a0f601ae22d5e187e4eb53df0e780cb796a172fca5acfb1af8a8c90e8463e1335e560b907fdfbf82078a31780dfa9a5053df741e5bab515caf0c592f664f0f3ff6232ed3e43aeef04598d06ad2e27c7d7d6ceddb7aedf44518672d37d67eeb43fbedacdf063b9d09d684fb1286ea79e64f2f5817791c1dd538a2f100fd24e8c8dbe3761fd442d8bf76cd103d6259e5da73d6a9079f9e00fe410ec07d4eb6a20eedacf0ed2893bbcc203bbeb427856810cb9a422b75ae8fb965477f384a93f1eb5dc7479d6a2bb4d6cadfe7e1497e8b87a7c4b1b44c8ff3f84584a803ead08e1c68fa7aabf516766cf858d750c36ed639f749fae03d77339f3504e9fdee3cf8f174931eaa7d74f86adea95ec47f7e8e99f58054de18d8051d7992597a04a7eb338f057aeec2406eb9e9ac1312432368b448e2d7f9038ff07e1d282e74bb2a71c81a609a62e8d757a80785bb4c26d9d187ae9734a4813e0f7361cbc4efc8ed188ff6dabdf2d577c5f8e09904d659074fcb2a3f4eb5eef361be5f7d9ffe488de1eb24a97ecc8dde60694eb5a5a13d9ec3877531055f21b43d0cd6dc164e662d959e95174ebf84e12413e19e35d4bfa3d6da95632199cfc6da22919ba5337c5d24eb6262c4c57a14d70f3fe6fdfa95b1cebdc91a74d007304a95bf9d409fd61f6815621dd63aada1650cbe1e6033b46f4aff8179bce7ac51dab14f243ec4f57ab4cfd3a47a5a8ef6df97fbe9cfd57dc6ce5dea2416eb6e48e8bf8a3df4e39a253f3bc6cae0d9489e5b7bf205bad67acf6bdf74b46fd6cfe31fe9f758bb531dd66e790df4cfb0a68d785698df01d92389fa2ff8f0cd1f121cdbd0f1754bd675eb9a6f5ad7e9ec299acf368fb8edc37a075bf3d2da9935b0d934be6257e21938469c23ce6a5c7bdebed778b9ab5ff8ea598be95ad5273c5726765905acd08135ae80cb308119aad3a6c5bdbdc58eadb86fbad762423adabda715d6daf966799f6b65171c06f91606b0185bcdb8166f07f6754ce1b78356d1183fe1b7c256531bfd593dcea9bb19e7ff687b9549a3d4f11a6826ce052ee877dcc988eff7c20ffaa6ba1e83f94b85e6852213b5d6ac1acea94be072e52bbddfd5b64e66532d4de4cb34d1378ba4bc4b9fb50b8f993c94966b47993fd078addea7daf5f1222fc60b38c80aae7d421b4188a05fc9c3d5b85fadf33291dc9779e4fa795ff7c2ec88d8fecf7b576a9cf7393df792b679265eaf2e748b53d4e1e9b771ddc7adb9261b1dbd3c6ebc3c2a444ef1ada5c7b963b17f382964e2bcc3a803b75ed23e3827e369dfe81caf9a165b0b9f1f7e6667dc6b34d480e518e9fbe503fb7425f6625d0ab9cbcc9479db91a76cf1d4b039cfa2dd863d5a4097f603677225067d3db0c1058d7a8b875ad944a75731136ff2e83ec6cbae9051d6fbd0e360f7331adf02e3eeefd9c4c05ee79c079f6402b59a130f06b62538a2dd4232ef878e1c3bf433e217d47ae3b4eaaa2d3431aa9feb646a2f66e3fc916ff955aff2c452ebdc793b1c37e75ed1f7fdcaccb1e6854e19358ee9e511e7cadb9e75d4ea047a4d799d6d39d234cb0b374dbbeddad991356504b8835953a6dda6cf375f96e104dce37e60592271342f17a680cdc6abe28dcc804ba07553eec8ef9b28de51bc621fe4dab7963e6922f47d491b7dab3af9f7cc994fefcf5f245d1b78f753d53768f598234c008fe2b7dca95bc557c9fd07e0c8900d38d64c81dea5acf76da755d05a0567594cf3d06ab9df518bca71cd3afe8fc5476d9a242bfca464eeb6c02a790d17a6acfbed2be639dd6739b00c619485c851e7d7e0d71eaed6c39a77f5d5cf98630ef9818fb8e55adf1b38564a2fef6b9370c57d69b5a5f92daf7de866d2217fd461acded682de90e47a762303f4d66b9330225f05b5487e65be5cd756fc13ac715e7b79da83f6f8b64f7e73734b1344f5d919cc8d499f4d0ad9646d6d53f3f29df18d7b6ad11771d3160d14579fcd783e813eee156be78729f7781b25633e80d98036544f46c029193ed67cbc2aee0037930751b3ee0074982cc6c164acc3047b636918eb173a51c04d45d067b7789e66aa3fcfad5ddbd1955f65287e44dd459f5dbff976d08eac0793d54bbe17cc4768ef85843d657c3ff7cfaf5f1536d2e0de44c51744f3edb3e691b92e96a3af9b071fe0551d8d86f933ac523a647726e0a4001f25fc14a776eda9ed639ca197a3905b1a5fa9c66307bc62f45d1d9cb1837efbdaea5fa89adf152dff43560983c6e50a5cd54a8b838e7b64dfca456f25b83a307f5616e614e3667b12b1e72e13e1c6bdddbf065f09f391f15e82f965c13d1619ac8dbe7e15ccddc698b8402bfc307e02a62bdf65edabe245a85d7b9ed3efe0fef7498b8fb4f8be881ef7caca5785036bcf5b8870f84476ce87bed9ce52784ed6984b383e928c0f6ec095051d891f472f8c8047f41967d35be7f24dde99f9d5a2aeb85f7b39faaacf9d0717e0b558127913f00cfdc598dcdd9c43b9ea0f56e33132bd5c28fed3a81d831af3b74e7a9386ec5b5471cff28ab9aa72f2afc0af6ba44d1b07f42fe280fe290e586f2d3db01dc41dcc05ef5e70c23b2a268d0ac97c6accfb6a0f73a1f0b9e09a0e2c8beddb4a6d8bc207c667c29ce2b565c95dd9601dc8d7afccf30aed3e73011ced98e650cf0f6177f1dac63e0a17d2b43e20e6d996d68539c72a8d7c551c2a677b10958a4b98ae63fe25444dedeff6f54e5f8083344af281dd4f8a83a6eb24d6ef34e7ffb02bbfb42beffaa24759219ba12d6bab91e0db249f71078cf06fcf591ab739fc4bc5533dc9c8afe27c80d04e7ed667acf7c3b87cf846ffad63f8ffbc6f24914b3132f83fc851937fb4d59ac07618afdc59874fbe2ecdf83eb9ab3a73a5fd2f3e6bed7f3b5e86bee47fe6dcbeed63761debf53c196af3a8b75f6bf39fcbd174ffe8c9bdaa01662c069a85dc4678d6f87a53ffb22f3591d1dbd1e2a0cf3af25c0333504f0f4f5868abe535f55b0d30d418b2777868a70eec69220f99eee58eb9b45177afc5735a8967e8031e953e20f78a1cb21afc1a03edfcca7a821dc7ccf4e7dae8bd2e8de16e3afa5a3c7ce10fe3057df7679eb55697d13230cfb552e532297ed214b79fc5da19bbb292755f5b325f4ecfcba1e7ded5ef3be7c39cf9cfd5eeeb617eb85fded94fe1020d2eb8402f796769edbdc6051abce3027dc33ddb5731ab8aa1075a5b9f39fa03cd5a35edb6d2be418c1cf55c1b3a39ed363eff76401ea1e7854ea534270d1a4bcb41cbd5a469efe2e79617a5927a6a2cecb1819e45d8c6887562c2cd17d6b174ccc05e2b9cc753674e9ee9e8abb93c543fd3e4519fbed633e1b3e67813d87b43ee327d6983c7def4c2f59725ea7ae3442659cb8503fd49d5fb5f31df7d46b16215d8ccad27b77df382dbf1939eddf4c7f2b0bacbe7d7619db098b77752887cfe040d337b97b5afca3763ed293b36c0b17810345f0d2f772cd648da713da9567a01f918b940b60793866b46cc0d20128a75fab5d25d537c8eac2dc27527b782fe783316ac0de864b2b6aa143c15938af9a627d5390f98b2f6c78c7c0607dad232b07ad01e61bd494d18e0c068750c2dd1d6d910536ae4ebd79c83eed7ea3cba3a4fcbdd084c97405cc9355cc1dcb73de68eed332ed046df71a67e4bc57eb6cbb16ba2b8306abe27aabfa8f0ed14dc96a7be6ae428c187c07c63e06924db29b410cfc169c85f8a73c58fbbc5fad7ee57b3ee2ef84b5f65407131306a979a22b43e562d37326b028c73dc73f4f547479f7d76c30b5163efc99968bc7ca77be10ebd927c3d3b5d7dd79635f9f97d8d626ee4f46bd4c235b63302718d04bf67df547ce15d7db67a319befa787fdeb3cd27fae0f71b01e3df06f1ffb1ae72f5eb879557a02daad9e36711ddb665cef69dbfc82370ddc58c682c67db846fe3bb0dd729d3b25afe9ed1885adafc155daf6279c6d7d76b6f5acf508dcc277f0ff691c2b909d67fd9fae7d57d3e7f18ff5211e2d926a1f265f8d3bf5ff3be0dffb14ef1fd11b0face3f437f9bde757352ffcebfad0cce10c3deaf98b0c5adfaeadefd073df1532dcbb227f3244f844be85e9e599e68573d707c67b528870fecabee08ec7088f258a652b85eda99843b7dfbedf5b9eb48a597749846ec13d4f9de3cbf35a158ff7cbc3f0388fee5b2ba3832f42b1a4c1feff54f5564cc95ed5ac29bb2a44b867dde1add21d868efc4a7fab39fc46a7987bfaa13dbbb9d09e5d617fd8ae8f1ac5167c9681650a85b5f9dbbad423f249fa25e366f1faa73ac69f34eebebece47711dcf9e90e3b8cb3cf03f900b73592fb8e703638d9c58267625c6c63fb4ced1714eeb5a085fcb51b844f28569db2d7c7b9a88109a3e47c4be078e7d3937bd17bc6609f09e630d832e71df62bfb15f2d2f6d6c57db09ffebbf227fd6c57e162214cc431395bca66cfbda72403eb4831aab0877f42c6bce95bbda69ad00771e72f60aff37a7b50c3c3b229c1a629775c5ccc0efb9888fff353fa40f9bf42e3e766d47e798cbd1a19d758ab990cbbe8cbdacd046eea97aab1f48fec48431300a27c3f66152b7b1a4ca69699cd79e9cfc676856609cc0ae285dc295c53891ec082ebead46f690f58c6db71d37067f0f9c45023d8b4949f160865c99f28bb0f69c79ae9bc09e1ac2b81a0f542a4f0f8d43d4cd824badcaae7e12adf9f1bd631dbbf48064228c0da1fde573aaafc56df41d70aed2780d34ede3f8146c2fc275821ef1ef298d3b33b433ac453e7810fb3cb6299ea77529ecc8bfc0cf3c5e8dee37afda75dd59e7d2458fab9669eb5c5ee522e27cdc3b2ea2ef29738b7f47bf726ff921b6ee53dcd4c4b9632cec71226bcb124659b32fe11632dc0801ada3123d8e5e18659df3b0ca170dcda7fdf25197fd0ff44537e07d20ffb3e3bce6dafb1e9c630f1dfbffc8677d3dee5862aec7d78ed95cf6cc5ee67edcc1d9fe20cf37e86bac873654b942d130266445dfd570ac7092811394fca2ef69d5d58f5d1ad56e3e73efd28674a9cdf9ecdf196ff015cec5f3d7a05fa2bdcdeb5de981dea27faf6b9ef89c8fee5a8f35c73fe6c3f98ff9ec51cf7bdff72eccd45ad89b446859f3eda019e0bf8056f0d490c0d6a4997cc63e86176e5c61fe809e4960c7e8e796cfa9c63a4f8eb1ce372ffe109aff963ad68b1742ef445be7535a2f0cd79e1afe28b3d65bcd7ab7dff978dde677309f0df5f94c6ad12cfeb9bed3bedd0ebea2466bf80ddd2a0336e2effa8dfb946c92e185aa3f217fa278c05ce753e6c5db650674b7ce1cbed50577ef5171f71ea1b16480b3b9e5583d4207201cbe78a124db40e3e2a874a87b2db72bd98c8bdef44cf5a667629636272ee0961f38e833675294f5144eacab1d09d64975f2531fb9d2373e8ba9301a4668479c633ce5322e6b27a7bc5503ce7e608326d945cea30aed95d2da9c7f59a29e931d8556a2af540e1067027784d7adfae3bef1f32b6a3817fbab57e4526ad475deec0f3ceb16efbf393efad2838bfd6bb53f74f37f55fbfac76ce45fd7523bea632c0ffb72358ab5c738ff3fe79bd7d05c092ccb7f4ec193af74e7f405fa6c36af0aa7025c8cca2df6c886430f37b0f4d076a0430f2d6fb32b67696cad87b258cc9ecaf9ec91bf796f93bddc315d3b16c0c7059625f4b4f223e680865f6e00a3fffbdcd3a3ab761b183ae600821e43cdeb725f531a26587b99033fa3f8abf06d994337041a09d9d1cb33eb725f8ff115e0bb03d70beb591b6a8d024ff195f74c60f6f4d4ecca5bbe349f7ea40f7eeadfc063fc9e4df2f29599d696d16a21b3864a64b4dbd006d153eb36a7f95f61f8dda3dcb5fa994ebdcec7b48669ae3de59ce6013aea1d391255ff9f43f6e11117fc655cf0d17ed1ef29cff64bf576a8de8f00b6edaaeff2ea85e951a21780eb4731c50826c599b121c2e117e6a48d0a610f5fdffa7fc01fd23aa4c5b9d36bf9c844387f6dfd33c631020faeb35e3f302095e2c2698ffb3963e7919f7cef03f5c8cf5f802771fe2247e551d6d0d1cfa401bddd2fcb501c45d827df54b49af9be433e454abe138d0f17368f71de3ad99c6f1f7a493afa1fc6d77a61ca324de4fea163f08e27937b114f7ec22947fb5d9ce63073099e7cd0533ed70bc74731d06ad5af085e0268a4312eab118165b57c802e6b9459aa5f83d60fc5393dfdb20cd3a33fea760d936657b0967d06de1fbc9a74ccac3dbfd215cf32a9f813fc9637f91979ad37798e7fc77de8564b19d74b73ddcc67637f694ec3f5ec09fbcf1ff5d20fbc5aae3d37684d92d092dca15fd70fe35ce9195632403f6a018d27e4a4e2441eaec462d0e38955ccedf4beedb4c6cbdd9a7b61c7826ca3c2bbf75c1bd81e430ed35b7e56ede5c258a27f22cdd0138bf8cc6df5ce84a8ad9a7b0b046236c9fc5a7a9caf0a994f056c5d03ae105774aeb9cbcdca9cda4ba357cc1379b7e328ce9f388ff2593d4ef44c9ea1fba17236a9c17c389323fab543c9f1cf735a5ff2abb15ee5047889850d2db4c6cb33133c98a15076757dfe2e6245eee3f6837e4f7dc780de22c56cb0bb8efa1b7e59866ee9856b571837624823ab59736843f1e48b17ae0d71c8ccdfd1ab09c32893d071642d732f040fbd1ee7ebcf188ba3a5391ece9fe33c9db18dbfd7f1f8e7319f93092d6b6ef46f340beeada3f1097d077e56ebabb927e680fa907bfa0f1edf0eafa9f6de10bb12795e8a09a0f7c7716e45f16588780279e98cb1b2f8ce17cec34499dc953dd7debf32afac14144733b6c5d23beb69611c3fd6d1c758fef558ee38c67e2e674ffa43fbe656afdb659e02b90db66bc863d0fae032dfcb47fbf636bfff26fffaf431ffbacb4ad41a73689bbeb4ba4792358f5a6c45f7677de8ed5373ba9f0fa7c65d3eef6ef599e677fbd058ff63836776913f479e9473e83c66c4ae245ffc173a8e8e869c67a29ef777d6e9e3e38fdbf155310fca656d476bd6b953485a93287e004fb32864086e42e3b45d5bbad4b24a8c14576383fee01adab6617494b3cb63c5b9a881c32ec1ef1346cc4d5df70d2f8f747e2f764588755083f6f5055783d755b3369aee57c6515b9a4f324dee534fb0b3addbddb47537fa6ed7aff8dc4c2b85a163bc9471cb679ffeb2862cf4545bd88ef5097563673e93ffb31e7d2d63635fcc4777ab1dda0dd7899cb9fcbdb5c94cebc0de18a8875c721cddf27b7e513f964ec6bac788f73af7aeeed787f875693eed57bbf1cf7436de85c6fcf0b047d77031b4ce6e8c734e7ca7302e6b57e463e52bf0abe2b362dc13f9bb4676533b3880be3873c9a29ebfedf75afe07f90c5c5ec37d1a4ecdbd646bf40ed2b961476669c59fabf74cd46bb4c0760cf037e05a85ba56704358aeed5629fa62fba53b605e307a955b8d6b395be89fd7cc1bf2869fa7f6b837a862fe50b235a8fd348c4910f5a47199bf1dfe14f9c8139a07fa3a77b4eb188a93ae6422b7dca3e0dae344d07dacb93fdcb587aefc4eeb5c6c78275c52bf8a73c75cd8ee057ea66b2ef6e37cb8cbb940bef8e153fdf3dab5f77f31ce6ffa73b7c6c5b5b5f1edfc7ac71b17e7fb175a2781390f9f5c394c75ae4539dab79d66b8b6d3d01892dc0ba77d3b685cffe279a6c5f91a98486964fa3a8f5db94f4dc6ba02e36ad03eebad6674b7b3f31fa911bbebe47ef1ec9f9a5300bff8fc15359f616a7979564f1ae06f0ce8a6905d44bf13ad7151d6e6fc659e324727ada114abebccf9299a09c5f5861a778d97671a7aa20688010b9fd79f57f0963859b3cee317f0e2d19a99941a6ad9e0bf9914629fd622c97460b4baeb02b663235e1e8ec5d25c1777bbfefc791dc8843db8950f3ff358bec5425fc75435bf8803adc05e270a1705bd76f0ae6e2d5330dea227a107240ae675886ab5dd78f9c45c90dd6c906f2f7cd85f17bcc6bcef8af57f9ab8e1f72c8bede78a3968f1bd763fb7908a9f56a24e9936cc5b1b832fbe1deb7e9872cf2e38b71ceef1cb5df0fdc9137608f341c77cc827265f2f6fc3f7800e5ed6f26e1a9fc0bdb95f1ff6f97c26ffb51e6d1e5cad1f7dcb86f5043609ad33bf1747223f45f19ff1ed801e1f23b0f706b8b347e2e8e5e417468cad27ffacd62ace7fba34070a9f7cc98679c864dd579f8d13913f316e9f8f5348c49d1163fe59dfb2623d03f48b358c454b4d70bc6dad1adac6b0c1e069d3d35a63df13316c7454fbaadc7edc9cffc71c3a9e7898d575b55a3fdef9fff33eb31fd0eff547d9511e806dc379dc81d5f61420cf82ff711c6861bd4023ebd4cf40ef6b559cef31575137461f837314cc3947be84ea75d9d0bdb13af39b1af27f1eebfa157df35cbef8cfd0fb056e7019664741eb78b817fea05fdd9a1ff26a5d7e7335b646cfca39b6e6fc60e8326e8ec613f85562d787efb8f9845ed978b33a8cf5f9b31cd0bd9dcfc6bdbb7cf6dd722ae6624073700ebb2392ec2812a1d61db2cffd936ee51af3b45fc8300257e1694e8fceba7767adbb2163f13ff6287d5906b41eee5f80d7076f29784c0d2f4c0b998f6d1182e75017ac21a83137ba53321fe53c94b555b3cf1981b352e411b88ffde754670d6af896a524fb6fa33fc6f219376421176d6f140fd4eae8e599de6e63bf19b87fcc94e25f70acd3fa6d953ed63170fd7cc813b2beb5ca156ddfcc0f83ae99e2727089d83be4a051430327bca0e381d7573419d656eeed11e0fd15cd26c1ef6a7352e0d1672c94d268b3f8da370dbf675952bdaf7ea7c1bf452b44981da13b07de7cad1036fd1f913f56f2bd793fb7c5d987dbbec7c28baeebf0309d8db7eb64da3ce6e35b5d11b9ed378c8903ffff917561a1879dc9596a9d74f5b66ff55e56a8bd9eebb0148f7b79d64c9a55216dc45c16e38f57e40f2306f372b79a40435b69766eaddab5a5cdfa96fd9af717acffb7ed378aef26513d8fea1acf755dd78e9b377a05f109dffe579add8634d023a1fcb094638bbac573393c1f2816dd5aa61f39ac1bcffcb9a69793fd823e9529b756c5782f97f366ed766d55fe505dcf359d71e067e7ec87f0fad66af5366a0dc47af746cb13fd26f32f4b60c139ff0cbfef8dde27c52be7f58f754169fd73d0dfb9cebbd6aed79b651297f7caf1d22d7721323a0ef9b9cb81bae7f037a72fe2a099ae0dbc16eb721a253f1fda27ca6ae16846ab0fbb44dfa5c6b950eeabc5319907de31bc5c34d88739133937c6c7a4f12305d9c65dd65be751219392c72ee628f959c07d032bb31c68eab37e13d86e1de7fb2f61b8227fb917d863837b41e257c65988237acb81d999d071b10ec4b95b33b63c52ef695d3501dc7932dcad461b5af79a09ddeb515c7f7b70d17da84722071b3346ff2ffaad7bd7fbada7b9f2bb32b566a8f868d3ae4b673df140ab986faadf3be75f53f3db4eb3681d63ff0136dd501a7ae02158e757fbdeeaf556d3035b14c8b5b55a8676064c2d7845f288ec00ebd6ce84a634ca4ab1ed9f3e5be74357844f864cb25b3c591ad65f68e7229fd2439f4bf7bcee9b31faf029defa1464032ff054a547dbb3d4bc81e538fa0e72aa957a569684b6b7d3a047a5d6cc55032c4525ea3eafa1497664ce8b5b7583f5c60ffa3dc5ed7af403adf76d47ebafa3aff3297863e528ab914bd9f63555a3d5a041f1dcad8f2518c59bf9b3dcaf1dfd5efb1d3bead8015f7379cfb927f539d5025a47ceebd779ed01ff44562fc3e82842f9eed9f67beb7cadd698d4b8d428746df922ccd3f8aafff6f83a9cc6178f35e016d1ff6da08e6a8b363fd678a14c44f8f471bc7dc6fa62c4daa3467f757dd1d246500c4dd76ea297837cafba6fb21d9c1aaa8e6e289e0b2db09d9eaa91a37e1ce74ef56e8d3afa09b4094ba172fdbe9d81e78a62728e7f37dcfbc8fa0ecd244ce91a2c8a53f895752ce8fabeedb453fd3c1c406fadf1f2a85aa2ef44b09ebbe658ac39979df5ccb9766fc8ab7c90c84bba279b19583d39b02ace6d650dd725c8f6c6023e6048b197449e57f19cc2a714e198fb066a8ce1d2654df842d83be05c294e590e681e622ebee596dc5a9c3f6e7bc9316f996ba82b0fd469ed7cf470de5a379bab315f92618d249b16a27e3a45dd3bad359527d3541c897c98e18592e2115a5b7f65a74f31741b232c6c791e7fa845a93988b593ecebea284df16e3e02576bf8a3acb9d49255b903c425ebad667e988b1dfb4983d1d7e33cd237dfee732c75d2779251a64f8095df651239d514db02b63456b916973980681ff4444ec1c9b4b09d927c35e063958eabea9734fd00dad689affc79913b97faaee8e114db7eefe407b6393ee079e24bccc809ffa86a352a7e50fd9def7833ce7da069570e6d7769e8fb30d9178b47bcf96edcb8998c280e737a2ec589c0ae4d2cdcf770acf4d333e362ee1bcc5bb17e91645377d09f231f9c9e95ca63ec6ab5cd584a68a7ae8ed0ae338181acd36655c81c3ad5261f6f52c8d0c9fc415f0f6ce0650bb2d97ea0e9ae9d31a67a0bddd74a3859cfcb1d8df39b884d1b3a27f76a4e90771781d62c98139ceb975c8b673d44e83f413fa9763b6b381cf7df12c6994d924a7bf8741fea42da2fb0b6cd75dcd8f5badfd53ee016531b654d9ccf15a6567e09c9eeb036a9ebc7a9c579d90dad75b426253ead59751ffc8a2202a6b762ce3cde47f123b45c28ea7b7be6d0c17b4fedb114af4e867ce325ee62194e4efaa8a8513de35a118f9eb06f5d7d2b23eea587af9bd561fab4fa3efeb9d6a63fd78ffecc8f5c0bcc196729ce92bad5685b62dd81b683ee3b6505adef51891c17e794def8c99fb756ccc01920e6c9fc3ed78c6ef8305d71151aea79952adeabf97965fcbca2b29283beb1446e32cde899bdc13a77f535dfcf2d7dfc636e6c1ecfeb23ee8375bcc254e9dba81a5be8663e733e9aea7996ae3d7f55732be3dae33f36b7e2d57dc6085de2cdf639e817fa7e985b6a1dcc2ed741700a6d35f5acfa97da6b9ff7ac0ec3bce5077accab0f98fc8af57653ee2fa92dbdd5670eed5d260f6ca7d4daf7269f833e8cba5f092dabc5ec53fd0c3b9d3d35cbd1d77cf1c8835fcb615aad4eb6d2fc22bb65b13650d463de66f8154668af947e9868d74a0df937f0016615fcc35d6674e6dfbb986fc168bfbb53fdafae5a0fcddfe16994c9ef70075fe76ab9e00ed617e8f162ed553fd07ae7d800b14273f1bff4077de8a98b5d6631be5daa186403fe17c6c081b30dfdc76a5ffddb8131cafe33efbb0cb9eea2e2127025bcfd5f64bffc1c31397ce7a374b2ae182e6f3edb6f97c6b09e0fdb18e5313eafe4894dd43803f4d7910d509afec0d5def681a35257be7313d86ea534a93f6d3d8947c3edc36e7f885f94dee34ae97645ca1f1eba62068e26d64856b69c7b30f74adf6bf3aa7cae63eb1fb73e97d28b36d057b9677cc8e7cdbdf9cfc5c307bbf62cc947d62f6a1c35e3cd559d630bee9226b41dfdcc5df281cb26440e1d35975d26bfa7c6ad5a0c6371acda0b7785aa051a728b7e9f0afc86f8cc29c47741ffb7bcfde8f11587f2c8fcab69817e9301f09d850cc5f97bacb75caf808f245b15818f5160ac8d1319583df454e65126b75685eb449e35d2a095cf5afc990cac2a6ad202b5426040576cd3601f05fb355be8681a5eee36bc3659267aed1827d478b96ba58d28449e1d39e78cfe3cdaf7c83d5ac03277e5a83e8ff1fb8d078f9fec0b99e4938043c5c82a79501ce87fcdb17f150b748b635f1ad7f3b91e1defadfff1e6ff30ccceb9dde70b3f89fda2a3a8e95e9c7c9f127551ced5c2b791cc698defcaadd6bcf5b9defd5ff77ff579a7982a1c0dcbf5e86b393136f5d2d0f7e9e1ebcf474c75653c523c344c9b00bda1b12bc0e3e36a6dcf387c673a1ff77657c0f7ccf8d9bee101ea88016b9f57980cf3879dfc537eafab31d12ff8bd8657f9bdaeae33f9d3b575e6ccffd58e8328d3e23ce69a4d38bd814d1317d87de06aaf63f73be698db31f5e0ebf9a53daad05398fc1927d82f782bae8d23434437f8e3924bfeb8ae1cbfd566f53cfd79a739ea4eda19bf55ffdd65dacd9eeb2b3da581fd44b6bb6e75cde4f30f299157e13c0cec4557bb9ec4c7a579a73da21deb7aaebd77fd596a2cec79e2cf548ff9e88207a6ed19567a733130c0d7342ac7096b27b7b57a49c7ad037b7d63ae8f5d01bc2ffcc24669d15de5fac231ed134fcd79fb9686f3057f0d7382b5188139347680adeaceed269746efc77af4f53eb945ff39aec9eaea33469f56bfc23860bcc62bec7ec278c6dfcbe5cacb5c6e577d43b934e3e691a3bffa9c7be841867e03782b1a2f4f8fb2b67aa2d62c2f5c157e284339b04a39e86bdcff39c968bda131d0f69f7a79048d0a7fd0b7564d76e4ba5adff2c2cd694d12a3ec28e3b4f172c7481bb7f091835bd1317a12bc6a3bd6d7cf330d7acab5a6b356cede9507c7f0f27ec97911bc827f181aedb4ff4ee3faaaca958806bc1b067a69c33493dfc591fb4a555fd3f79475bcbe77d6689d2c465f8b79342ce6cfe39f8b47afe7153c649a8928b3264dcaf9bd40714e37e84dd6d6180fb770d49b9bbd242d1fe4073e2bf307d621a9652673423e192284662ffa5c98b3043aac5dd715f5ecf7255e1febcbc79e7970d20c5fbc70f324b6169ebb9abb257342c58608d71f3fabf13f3dffcdfbcfe87f604e67e9f1da77451881374769b2d7cc9991352ac7a63873b41367ceaa3efdcf9c3a67de9d42e6e02956dc3bdae9fff33e14f34ee8330dbc58a3ac075ebdcf1857096d1fff353fa477bba67c2ec7be9bc97daa05f6aa10cdfe55e9f2039778e2317ad7a7bb18686f7a3fce1c0043031cd349cbbb09fe27f0b1900d5cda6ee1878279a70db237bb23fae4f2d4f2024bf303cbf0c17126bf84a1d2c0092c5d44652173c5577d282b2fcf6ae60319db626b29ee913eb0e23477d8b79a1ba87381dbdf31bd7cd54057a7c1719a2b7d478a9b21aabeeda0dd64c679ca9a3b34561be667eddabf19714f2f6d3f789b3ec465cc8def0f693cdef6a3113b1b5985d859630efd25349d281e9bdfea513ff177499537439f7a92195735c963f4b41fcfbd506f79bc7cee113eb2c65d476d9bf8e9e722e969a1310fd3a4bacfda67177b58f77f154fff0e47a3769ba3714a31b2c631b2c29e84f377f9e036df33862f04ade5130ea7cd0fb919d78ee0a71f05f88c864fe8fb6cf907ecb61713baaa991f65a697435fd7f415e647b6df0f183fe7e54e2f442fcc86cefb0acc85bda298c312b31fd2677b6bd05a8bd824a77330079de0faea9139f25cba1fbafaff452442eddb2f6460d5f01368bf761bfbc68cbd39b45c5aae45f7838fa18ec73e414df748aaff17f63057fb66e41788dcc5672b5c9fabf8f12c551b1bb7fc12b53fe897ea98ea785a2167a2fd1dfc7f925569cdfb32279f5be3b39938aa6dde7786da99f6b82f8ffbf237ef4b47fbfed59ccfc6e3e5f727fdd167fc3177e2da7b83d6673f4e7b81cd792b7960fe04d455bfff384ad4cdd1cf845cea37701b3d316ff2213b4a7aaf5bac102ccd589bcf1e9cd97f37172107163870d84f129997f37b88f18cb280dfee88ca6ff569ea7e45b609398930cd84298e141b78e03be8d75e3e7cf5f20cdfa175089c678809691bfc82383ee328ac06b16a42e7b1acb4b64cb29538f796b968c93f5b350e7ddea8b8b65a0e2c8a2bac94f90cd97673cfb0063e21c4afd3067131b880e83db2b5d32fac11ea342d1711d97ce964fa8d1acf6ff2cedfd661913bcc058db9e6a7e09017e15ce146a0a58c67f0161b42b6ffe9d42fd8716e84a9312c96878776d895ba518fc769bf905a89712a93f2e8717ea31722ce4c5bfcd9551cc1757e5947bbc12f45b69479bf078a4b98f376c0d0f9e011df41eb55710e812f43e913e8aac6647c3b709fa8ff8cf1d115271dce13a9af0e7bed4e39d3baf65d54a12d32d9e6fa391655ba004ee9e52b602f05735a578cad750dd7de1de5167169cf0b9d3acee3572fdc31a7c1a05f8981d5f393cce4bc0b382c2ba1b08bc0f7363bb29b9697efb43877d05b2cb756b3a418a2b62a314b2d2fefa8e115cb1fcb486e568747befea38dcc28ee3cfa4ea9b9e07abe11975eabddfe322e1d1b8843f7d0aa68ce3da85357849b2fccc7b256f661fdbefffbcb32d02c8fed87c69f4f32ee059f9e7a2ae4e5fee1447d7fda1d9f1fcb633a1b6bd3d1be598daacd9dae177f3c6638665f157296f6689e920fd20df736fd057eedfa7894d7c7a3f12b4d432fef57c0a7045893188bb4b5caae38d4c8d037abefd33035c7fb79729fdc015df0ffac59ec14228f5d114e0d413133fcc8f80b635a1cb2253af442a0e51543033e645de42b9f3db57cac15f91432421da690c847c5ddb843a35f68505cf781aceb7887abb81ba5f3b57605702d4370eb336ff113b496587f1cfd6c0df93e5e380486fc13f02fe13219d6ebe1f4e7633dfb8899f363f07b7d583b1603ad3973676b2d7736fa52a2063cf28d1cf47bae1dbbf270630de3f70da59593b5f56bd796cd997b5b64c2bc158f8d6fc763d7ebe5cd072d685c8b5306f61ce3497c6f354a764a37e476cd346a32d57fd5cf7c9a73cfe263bd3416bdb64f8efd44f96589398a799eb3de0a34594c555f3dd56057f5355d141cff420be5a2667b3a465fad2114dbc46d7f6677cd1e65ff99c736bacbf5bcb316596095222a4dd71edeaa7759d7c7f2558cf9dfd024a1f1b777a50e9c58f90975f770358a370b23aea7e6f8e77ad67f3ce78fb14141716160ef0adf11e4c7a3f6a8342f2a97eb42163d0b8ff9acb9e71b3cdaa80955c83bd076525a5e3e290472e53be6840d38cf25783fd48ce2dc2d945e490fb92feec3657d0dd8d38dd2ef44ff277dbf1471dab04e0d703f9a17eedf8e31fba63e88a5b8f3b28b318a7c968f3adcaec1316a850151dad5a861c5a2223f52d4b4f693fdde37173a68e659072d0e0530012bce27c2fecf397e499426e9e00afe848e3fe01a1ab4fde8ef595c5d9fafe947712e2576e5735ac983c37e336a772a9e638d21a3330e3f96e53c19fecf3de7a43bad933be43eae6b36bdd134537d805beecd086dc7746df72a7ffb2d3d6cc4d4f95302ac233df75d6632279b535d3bce9bf9701e2395b0fb99cadfd4cc11e8c2a7614d9b550f9a90f001563dd79e281ecc4baecbc9477ecb41dfb8bc0f271f0bfa368abf727bc159b97d5397ee149fc5a3e176398ab549d2dbad0e5f7f3cfa58ff2667c2a04ffea22d078a0fd97eab1573d699bcc22fce3eeb755e70e3369613bab58a1bf784dba4319cbbba174a570e2c5362bd279b131bb496765bbfa69bf450edd78ebe79f0d25f1b035ca3f142479b84a84f713cdfda92ada5af73a7f7f133d4c46ae4f6472a0700ec26b8e051b7c677b75ae5471f3e6fcf4bf69cd6c1e61fd6503c4ad8f5a92b87185bf49bba6a614469327e9dcf1e39e7ab7996dfd6fafccbded8e6cc1ff1ae3ec9b1af86dac201b5a6aabb4df9dafb3fd26bfac69f974d843aa0b03742507c3e408f854ef3d70f5716b49fc396b39ffc4e4b97dbbe463180b4a7b63fb02a1990bd472f87c5fc14e0a6282573e5544a8f5a63ee95f5ab97bb3de05d223c37f01fb35d704a515bb58f3e10f98ae7bfbbb2cfd63271cc66f8eae5e2e8b116b08a2f56bd49230ad431c27e211b8c970a1cdcf0e74fdaea9acf98b4dacbf9770a3b227f5e939a034e1211f4db57854befd78cc7138ab764726c75b27de6dbd6bc5c982973a356acc50d0c1c6bf501efebaa73639e16b2697344749f790d149aa8e93d600fb696e90ffae8d997fc3dde1eb51ac7d109072043d4c86ad62fded5d02faed18b59c870be615d48682fd0f70ac93a0d15f7cc8c5d11ca44b2563ce3f6f2cdd3c5777a5e3e410f1e74179c0cdc87cb815608f890fd5ae1071b2f97aa9eb3e9da0b7e1458672e752fcf9a6dabfa42b38dae7370c2c39ef1afdc0b40cfaac75cd59b27515b25b05fedabd2abc3d8c01a24d827cd95aee316e3ba46dc6b8f6d3fb034ae1fd0b3cf0a15935d7cbfdfe6ce7ac071d77c7ef689c6b6c29b685ebe33c95f167cbf33c474ada664a0d63ff43f3a977eff456c0a7c19dd331aa7a6c73a9574fd5db113d1fac119768d7bbbf905f7f6d5de57097e2ae4205fe45ff5dbd7d7fbeddb7a55604b706ff89f61af0efbdd3cf9fa3d4df4fd64269bf96c7ab7bd265d74f5c94ff47f9597995dcf612b5ff494b3e6ffaff41a01879ff27e51568be7d4e25a98632ed11b827359d21064ab8f643bb18ef03a539fb73353e9d17de002f107e0b853b9ac8cd67e5e73f24b2eb5cd2d8c78ab176c310604d76f5d9e37c4ba06aedb5ad939e401455292df0e4d207e05ff1aec9ff8fe439e798de7af88f7b4ac07be4513b9285df57e27b0d31af912b4466f5cd69cda1522ecdaaf30ff311fc53fe7c6f0388f86cdca881f5cd4573973e7ae30aed7b2fcdfaa815e1d9faae7fbc9153a3d57c75a23a70bcdf1974b3e80c0de247e04fe561a03e005b81a731ce48fd541beb6ebc2db7b275b1b045f56fdf6fc5bacd628e472f97bf80ebd17d07e7f7e1effea79fab7cff3c7e379bd598fe4cb630c7f58c7c92faf5c7bfcca31885b487b630ba5cb2407ec6b8b2d7ad1a119ecdae031eac996bbd65ed15a058d625abfa456f6809784cf9f56cb807d7ee8a3ef4a1a5b0dc50f6297f5bc7cfdeae173f881141f5812f85ea7904d8a3ef8d3716bab8d73940e3af2be14c780d32f0c29a67872fd5149734877eda8908db4656055cc0bef2007ebb31f8ddfb26a98a710f1196a107d1d9c86f95a506c214799b5441fbea67bf9aa99344e5bdb31f8d55578994853db8aefd0e951ac809a4c0d5d77c3cb5de8c9a95c8d060eab9a6202c139e3377df8a2ddcee496f956dbbe7d7017bee9e1ef8ac9898b95f1b59e8ebefe5cdda76fdb09f327b93e6070cffcf848f10f74266fd47217b663dcaa3b2c31ce236815bccbd3bdade1531cf8a6c71af5fb50691df0f7b03d6e3ed4b8d877fa9431d17285dde5bad92ddfffab3160fc06362539c7b51fb486ea35389439bf4faf223a8d43f603f227c30bd7e095915ad6310f1b55c2d1cbc7b37e87f7ae819dd317e84f11aa27fe321f336cfb3d3ef4d107b6d3dceaa397d77a9529e6c923e04403e4d6e50be6730c9d6c93f181d317314b9b8075f49a051d6b60b5b8bfa3642e5f5d5ee483bc70e84ae33257d43fe599d679fc42bf2fce1deddb4eb35a0ca28cb8f62d77143fad5f54adbce25e14b283c01e26c0261f6edd17dcb36bd7f382bcdc2c35be810fa35fc95156a14e15f06f8f4fb8953febe3706d79b347037d3bd7b0b2d77b8a7f957b30902b4f3857de953b408443f9e0e9fba0a745e34d03065453780ce03c27e8f9a431e385f18df9b7bec515c0f325c63343bc4d63d01f9cc69eb9b0c7f9356dfb35fcb4ebe75b80673d36246278355703d4fd309fd4f9ba70f337ef742e2fedceeff4a8259897b734ee76991ed3ba4036279c76c4bf3b0a8b4cebc1dcf587c0ee928f22553f60a5e6bcb1de6a06ddc3d37ad3d59eed1ef6eca32ed33f6e431e36e26fd8883f78767f699b2570014ec973687feb9e27b4df55ee133a2eb0f512baf5e270eb79d333a3f89e9eed53b75c63e834e19d624a3be9dc9dd7459aa30678b48caced0531782cf479be8eaecf5701eefbac614dfb313dd39ab725f796d8e2964f7bea1ba139b7cea52bc227d6fd9ea59aa7e6fb7aabdd1a47e64dbf976d7622c075ec34fc3bb2b37d34b2fa2a5fcf0c798febe74b985b719dcfdb3e19ed5d8f4cd2c58ea10757bbd91b5efd4ecfefaff93de7ae8ce19b68dd71db51251ff1dcbfd3fed5f00577ddc735f738c9761c9f7dcad97f912f39b8f4259fe04b2ace63e54b2adb785a5f9e5e449c920ff2c27e06ee9f012e675ebbe8f9d771ee948baedadca1a33f6cd87b1bf6b01fff19f6e31ff63f6ef1e825e056275f32917c1cf0ac0833459c8cf52bc9285ebe1a6777b67d8fd8ef11fbdd4fecf777f2d0897ff35e721c10e711c78e379f25f7a6c9303ae10e5d7bf86519286e615a63794d6cf3d2bdbfcc19779dc7da631e3fe6f1ddcce3bf535fa92f6cafbe841e407a9403cb043723f0fca9069c383067c08cf714cf508fedecfa456c2d431c4aee1b02ff5ac7fec5d0b11e3eeec3c7fd2ff2711b156fbee09edeb8dfb7736ff256ed09b1359e0f1f275358fc42069a5a1337ad7d3514d72a7abeb8260cbff9c86bf5beeb9cee3de6f4634eff17cde9bf9937bf3177e3d4ba3677c1c348cfc264df989ec9f567c9792a7fd4cedfb47dfe1d391ba3fa81dd79e47aef25d7cbdc1fb073f5adfcd07aab69b76a9872f427f1ed84e7e2f7b4519c6b893469be3ac0e0fbc3b4770b1382797c6b1c6d69acacdbbc577d535785ed7b1577e62f8b6a113dd6823b9803bfc6c6282e5ae164bd3facf59b18e3e7faf02d7fb5665f027a3fff5b75615a2fbb61b0dab5d86cb5d46ff8457fec3bbbf5c377fe77faced03a333e01afc75a309a1a2f17f9a9ffa2bc5445b6503899f5876b89f17b6bc950ad258ef2d19e5ebc50267e72c36fe238f826c6faefdad7853d01e6b3ab3ebfc8e503a7fb6fc4e93297cefc13f2d2d0c869da3cf4858df82f8a999d8af94e377f38ff52f427fc2dcc60945582e79f142d2ff10036e1a62fcffcbfead8dfd3df89b53bcef1e9638eff5be638f7b8c9736eabcb3cffb284a6d4638eff7be678fa373059f3f798ace6733059e3c7fc7df4d2dc5f3e60941d85fe67b928113efd5d1ffd450e90e3ec9a8b6a84332f57badc2f47717ea77a797f3e1f077d6d9d33175260c7863864da99c323bec165efb4cfd712b5c6dc0bdcf7ad388eb3e63426d043ae7299872b63749769df0e5a2507fdf21a8fd63a9fb771eac95eb106ef1baea793dd8af313afe099abf690354ae7067d07f2903531ea555126f2b12bccf428d19710b3368d9399ebad066d2bf04dd2bd1eb05656fb9ecfef19fcdedce8daef2e1e18a347ede4deecc45fc555c37f4f5cf5e84979e0f9ee2a6fbabdec4b995e8b7118cbc3cfb6e21867c779c851d674f4af1e7d270ffcce3de529b43fe82b29ff17fb4a8c473cf3177c59df5355a79ebf08aebdb236d8f531789d2bc9f82dcdc2a3acfb759c4f6fea8ac9ab3ce9f2467c35beca152af7a9b1b063c5913e85ee2ef370caffa858e6d1f7f4f0afeecabf0a3eb1ef29f9f3bea7362e3af53d75b323e6c36f7bf86d77e4b7417bf61c07c95770b66e35cdcb57555a5b958f7ce4043cddc881e4d02531787bdfe6a66b2f4feb25ae5798ae3de9cc65e93ff20d0f7bf8df650f7fc54759fd111f25e330ac132e7a8b5c2bebb47cbe6d7cf4243d6ce33dd946edeff51c0dffc19e23f1a1e788e673472d9ca7f968fa148d363fd7a3ffef315f3f6a43c07689702d44986672941de5f7b45ed85121c231f947d0d80a6cb75ae70eeabf5eb8778589bcd7959ad2fc6a4dc9bfce1f2d7da599c41cf9e08f271f4577ed28933381b846e4934c065abb7de4ede8c8fa84aee685b4ef0f7abfa1f92359b3b061bda6081a96cc772f746857d67dd6a70cac065a5bad867ba035f8dcfc2165d03790bb73323dce87f47b9bc07e32c4216bd6b97ce9aadf3349a63b1e935f9f96cfd3fdead0dbac470f6df26bb93a913fb972981a0b7b4fcf43fb8c3575bdd57ac871e57b6852b20e2ee6c12bebb2c176347257eabc2e6e5e44387c659db609f31cd09a95f73339644c37f360cbdccbc91753ba6bd08218bf083385165d5a5b25b4d603d6ffa2cf9183d4536d31d03ad659b0d6454bfde965694e7ffe1fd133fcdfd40063fdbb5f8c15d6a99942474f84e9513a99f59bba96bfa5f1cc367ceafac394fc0fe89071ae5883edf4c2e98b1ca63456b518beebd8900e74965ebaf2784f92e9ffbf9ec98766d2475f886c992db7acd748cff6bcedd4ab6652487b9741dbf0fc476b02ed53d1731643c15a32ea3bad0e3d341543fa3ec693c5ebc9eee80f346bd5b4db7dcb0bb3cc1ff4c9d7edb9366d6bed363eff7620bb75d66b866d855e33b02567fb36b8b06f0365dfead636b2be73d7356779d81fd3198faf7bb45f1dc691eedae31c798306cf5b67ed1e876d086b9a365ebeb2d27055083bad5dbb7d855e2b9ed5049f391a7f46afacb9ecda8e0e1facb62c493e4dee34d071adfb4a7308b13fce8998379c647c4eed57e76cbc503e49b253b4bf7a55fad0b56bef691d6bbc3c33d95e0a5aab4c2f5c7f0929e6c99f3692ec1bcd19f58aef423b1ee315df85666928d4b5aea0c3eae569c35a4d5926e08b0dbf2c691c1b0efd86526cfbed2bd99eca0b2747d62f13856fa7741fa0974a7696ef8356f8f6a49039e68245be26e6026a5c165f3fe7891ad642c25a8e6b9035bd2a9f74f0d6f7746d8a27d3423096b1e27df11d9db18ebb4ce55758238ade639d5a83ee71ebb7c2c7253b31b00c2fb02aa5396b9ebe87be6e5a67c6ed3d374ef77c0b9d64baefd7ef77b8caa4d9d13ecc64b398492d4d7ada3dc74fddfc53b7104d9ac94359083b2b44b32b44038d604344d0fa3418232e0cd6dacd8e5e2e7af48c05b8b0d20adc1f874ca77d280e77eda92b679cd7586f359362313a3ed9d005ef7b94816584580b3af607433771dfac47c3e24e7102ddf4f2038a7d7f0f57294725d959d8e2857d0363795b4fa9c2f365cd4f5a9b7af417c287704be88ab216578fd7f41ded637981a5fb8855a7276c26e29a70f8ca6b9fa679b95387b663b9b6532dd5ffbcde6e8408dd4c2665bb4eaa7dd38c621e39b0d0c3efe559e75ccc3a99fe589ad33a4de4ff3cfcce6b7ea73490830b63e4d9fc40233f8d9e4b2d393f0a6d577eb56a1e9313a59f4ef1cdb4515aea9a6b4f32e8b6d33881be2bc5106b8a279ac5403328ce8016f9e1aa6e6cd38e73d6b1eeb7b5854b8c7dd7b5475f8fbe3ead8db8591afa3e4cbe3669b2cfef725cfcf91ad4b8764cf379d36a86b3ef377e91fbb409ecf8f27d3caf6f07cd60bd69d472382fac30e2c0f0e49b177ff8ab3ad0fcc50ba7eabb53c531e7560bfb6a6ecff042da7f63f8cf3fe818c6c29e1ac8233ea7c7ce31ea2cd696dad09ccfe4cf6512cba5f98833aee5ee5d7bfc4efff9b23ef8f422f6c82f94713e06e6eb97798d5156c7f9e605b56eb249dbbeb61868b7f6b7aed940ff5aedf17b7abc910786dd13a3ece83fd33e1934843f736d79ac291ffc9aded2760a91c38e983262fdfae540a3384567bc432c107fb05f5073dcb2d2439be2daf815df43cce2ea6a7da9e4d57d9dde12f12874d36b1995f0ab8451e2bb1c67c542e42213e1fe95ff8ff838a80b415bb4e7e5b160bb96aaff1903250e2a47bbb5f4d0460c4ad7a67b6154d0b9a00d7c28c967e67341b39d7c27876246cd8fca1ec5d2cab7623dffad55f94ea9fad49c9aae5f84e4bbef7a740ea5c94efb66d897c679ee58f4396245e8b477e4bde4313c5acc36ee2259dfa72ef49f8fe15a0cfa26748f3166fb4668bb8d6b4f317e849dd2b3d242e81d0f5fc13d8c6744fb3926ed27b6564971b47cfea1743bd6aff41dfefe5ca871a72dd5f1710ca7646ee404facd6423b0af8486dcdb630abaa7c08c5cee8bba02efa3ae07e73c7f5ef8e184f7d9614e5674ec37d7d0f252344ee60716c636f4fa6bda27839627d967e6609ee88a8399f63f2a1ee65a6efba8ef2afb6fd25cf3a3b2a6cf5ddb31bd7c62a481d5f343ba9e9da1fc0be4bba53d7ce5f3f5d5f92cfa5e21eda810358ed5ac90fbd40a81636b85c8f7af743fd1078ad775dec6c13efec8b6f41bc6eb581ad984b6d6e2e56be0b4383f32a94268594f2a8a635c9b7c935d21c3fd2be76260a3cc6f3bad9dbb889f38669a5498f7f6909f2d722b4e2642c1cf89c649089df04cd656e57f8aef32fff1cde9fd5c1df4cdf23ee3eb3fcf9de4fd4c620d7d33dedfcf379ae715afcb934ced476bbab63ccd97a9e2685a5534164438c61ae0db82e705727c14b7383d850151b8be55d5ce0d9123cf473601be896c80f7131463f9ac0bafc98383b9406b3c6bbcf74bcebf4f2aba16e85df3f90afa1ee65e2ef858268d659a7fce691e2e8143744c2fe4d7b4c63c5039a4dd1175c29af5eba50d5deec6cb238de62bf3ad3b19e64504bd7a8d3157fd4ad47d1ef3b6d3f65d5712356dccd9caa7b892edb4c67dd7985315d717da39e5d4f85d03cd640d7b9a179fe293913dfbd7fc903e7cf8b7588cf283fdc9452647a5b21734fea70236e59dedc17a352a4fb60418c401ad857dcbcb27f59bb1c2cfdbe0753ccd2ed7551c8fc6cbd6aaa4716dacf358e1f999353cc7e4c6cb77961c583ddf5675029a4735d6fcfca6ad494a3e0f6c088dafcb6bc4f5983ceec1874cf3219303ab1687d2f4f23e8f477b75947c0c03f3e793ed151f5b334ee31f3505ab247ff28d2da163c3dfcd2aaeaba96bfdfee3e823f6d915f47b8159440d63c2fc08b6a3e660fb5ef4e19974ceb7cda63f2373fa7375d8efef140fd0c1fed018586532b0988f0f752857533a1585b49177d39077cb870672fdb6e294805f4263c02d04d6f3b486bf02fcb87b644c40ff48e38b7c4b89da1fe21fdd1fa6f4bcad49e3945e2e2ce0c7c388620a5d9ce31b857359b5c7d1fc81a549e46d77982ff0f11a5188305535aca8c23cab2dcb7f4e2b5a377c8597c5776bab47b68c6277f21b31af07a8431482ae01b509a79e34a29014cb87592155fdd045de3865ce9c91a8790ea2f6d8432c84714d31188ddba8e67b9421be22bfd4b523ba3735cfc788f3027946639ce64ac9df43ded9f0725ab7e81cb04116bf46f5b947d2c1ab1fee13a97ea307fd10f67b65e3f2fd08e83e90af4c7e785ac87c6cd3b5ca6dbf929c3b35bd3c259b67b4bf4d7e178cfbc1e7b0b7f43d3a8f292241d757d1be8c49b36a7fd06fbf6b00f781b5d2651b4ef7a3b6742f5fd5eb7c57f833aee77979fc0acc5a9c52bccc9cce71dab98700fea6f1e8fbfc65adce1699dc5acd02b5b839b05ea8996e2dcb078ff7f04b887860fd22bea77ad0f27bfdd9f93211c6b9a8ad86f14088fd0c3fe81b5e38e7fa72be3bcaad6678617a945b9a1369cf0bd3acdd766d6c2357afeae3e502791be45f0c51f74dc6bbbbf09155addbf4938c7d5fadec7939d943a70eecac90cd547d4fa318c954fcc5868c32f39bc2eda3eec858a30b8ee3b92193ec28bbe21e0ff16e3dda1fe7c1636cbed3a0af59ff68d2e3753f6dc8e79014f3d49c67135bf805b466d1f36cbc7cf384351d380a7ee5da3fd70ad35a537172ffd8e287bc10f8a112b6ca46ceacf6686dc43aef9a14ffca70889c20306ab053f8bc664c23b0503afdef02ebd6a77550175b5cbbe5da4e79fe132d0685fcc886fd5a97ec9c21b7c0c2d47c3ec443ba17d23adfa76b2ca42d8e3edb26f2657bd240ddbca34e5b3c583ec7f5c4d8d7a919bfa633f72e63906e78867ee6dfe83f5dd5173d37c1652f8ff3a67f876b48d31bbc6de2a277d579c379f0a63f63f6434ac4b1a883d618b3e00d736b7e8d1b6c937dc6ffd151fd7f3c6dd3fbea8f3997d69f75aca3a835ceb3e519e70d02e0aaf0fd554ddb380e1f2f50ff9fb635f613e90fdcbe9a4131095d17f96a97fbaf700ef778be16fcb5efa9f3aa73c1bf987ccaf353fc6deaf7f50bce99b8ea9ac5877bf2f67e466a5fdc5bf0964b7071ba1663a72eae7f262ef68dde9e2778ffdba1317564dd8ceec77a83f31c5ce03c079738cfec3ace73f00ee7b9bd85f3742f709ed905ce337b8ff3b42e709ed605ce93e38ae4f3ee1ff7e05cedb56a2e7b77def4e7bce3abed96071abfae676341fec0630dbec2b7c8f9463dad91b3e01cc68927d1622c27e660ca3912e474a2e3e9b3c032380fcef126edc7c7e89fdefbb6d328ee69aef7628937ebc19bf59bd79333f700cfc76bfd9dcd9bf53cb81c677cbc93a61c300e6eb5b01d8bf1f7d210dfd183c3ebff892b12eb8cc1f917febd511321ef2ac16f15a95770bbaabc25b611638b7095f901efe7076d6fe8f497c75f21f65f5ddcdb8b7b7dbaffd8fff47ccef73a664c2c6a1d1f397e70ecd39c72deacd57cafcefdad3ed9984f5a8f11df98694df73bcea50bfe9b10f1acfe4976e828067dedf36c9a209bd66d8c9d9e75b7e7a07e57a739f3096be7dde6cf6fae9b07f9637590afedf7dfd684651bf755b2ad199b7b55d79ef35afb7dacfe1f76d0b6b62ce68e9858cb8145b14afd596bf41239308b8e57faf8cc32141ebc875c1fcd7bf25d9fd9c7537db49f3257811f1c7dcedad2e5d9f91f9e9d53aa3155b7fb7ceef13f6d6cd44271997ed233b97a1d29c5ad46b5bf36cfd2138ee374cff26f317f4feef9da71dd34b7e3ab35aa7c311be7cb517ccd37c94feb42d8fa2eb2f77ece7dc6f1db6bbd1803d6df1a037f57af2fef7fa22fbd3a32cfc8271c2bd02a1a379f14537eeaf8393df3eef384b11a9f77ff33c547d03da6bf5eb7fdd331ab7dda9865bfb610f95ac86ddff2f29549b6c7a73fa7345c7bffdb7916e6c320dfa54ffe13388f182fe55a8c637018c780e7b4221b54311e302a64235a7c1f6ab4e44ba1167c25c6f0f295a6fcea06f534c6a96b6cf75cfdcdb922a7f0ed95eee599c9be559ffbcec25b7a0e7ffafb44211bd4a54c7f9415c21ebebec54188c2675ca0c539f808759ecebd54874a5fedbe160f0cdf9bf5c0e018b45b2e6219f6b35b5aaabf97f3da74cd591ebd50649f96b3c4fd893b5f9308a3cf8ced6047a5f1ffd87bdfe64499ed6bf82b21e2d47dbd3482068b6e6e1534f82ee2148a3a997a2223f0e99fda6b35c62466ceb9865cbff33bb97d9192a00242f7eefd67edb5dac76326aff53939c699e19cfaa4dca0ac2d9fb6b647fd2373003856f6fab9cfeb77ebf7ecf5da7f396650a31bf4bb9f90b73163c2226e8d3d65e75c076cb98cb177398df86a9e247889675e621cf2c69af5fe3f5e4f382af630b4b535c74fb035b5ef669fe607b1ffc3fb883feb6fd9d12637fc19758d209a1c15f57b9c338ef14ddc9b56e771f4769c1d5f7c0aebfcffdb589a6323fb8c3166215f8fe3640d0ef94d8e6f7ed5cfb91afbcfaee50d2feb17ffdc395ae697aac7c5fa693deaedd3ae2abfa4bfd2ba47739a1bbcad8c3dcc991039e64d6df83cb27060991aceabba7bb38df7b12eec94cdba397a2c5fb6a371fd5267bafcb3ce75f620f24e710d6d5a723ea21faba59ffa63fc73696facd5615ea7f5ad3673ad3eae47aac155bce668b957c7662ce019639e2bcbf04538c1cc39b1e71f76e8a42d55aa8163fa2dd22eeb879e15e4bb8ed9aec85be61df5cce9ea4ac692d8aeb40823ed86e010e85b41deaf1057e749a6394e2c8c2df6f53a6a6bf01ec4277688519dbb060fd809f2bec16d6485aacc38230eeea466c06e5401f189b68e315ebbbeebc3368503f63e41e35d5e0faa73c6ea5dab95ceceb5d253fbfee157b6aabed9aaf7b62ac8d34c0f9c9e8a3dd4970d3e08632d61edb9e1529167df0df27e0f1c7ac0aa49fcabf00c75b35d39a7107e666605515c2817bd7235fa66dcbd0e67fd8af8a53ed7e2ad73d2c09a5ab5cfe3c878b599d306574d87ffb336a7ef31ee7a7ad0770c1e89fb471297c7189f323f886197584b5ee34247e03db9661fadc63ecab5b5c50fa587fd8fc7fb69b17cd0b5fe9af8ca367c1995c2734b7af37cfa047f2adf835b8258c60cb862ed6516b43cf3bd32f8dbca77279992e75b0f172abf7bd203c70ee3532963d0e027c576c86ba5bcac52f7c9d17ce6fc3e3e6bce6fb80d3a419ef6e6b9e7908325ae5e7834648cec386ea28daf7f24b0dd6a77aa395ee47309c69e82a686d8cf317e8b22dea334b6cd9eb99eb3cecdfb79df6046e4b8f23a29b4bbf9c6b9e8f70c06a9ab074d5f4fdcf45c9c42ce8f32c8d38ab86fbf08c1bde074d8bbb0ab88159f826fc87047a1a7553ea7079c273a97f8616738bf9ab98b5e10fbccb339e8bfe2d64cd13b082e4d701c7dea3cf99a58cfdb3cf987e609f0f40bf852a6ff4de24d19c393aed9462e4d6d1d8beb07f35bec31c0ffc78bf75efabeddd46c23a636d834e21dd5cce9f15caa892fbb66bbc6b9640d82ff6530fdd40fae9bf88cfc6bcd7b5ea1a3f4cde73e352eb36fbeceb5fe399937fb05b8475ee605e692f8aee1ac6fcddca96dde333d2e3e7c66cc997952a91178e81abea53ac855496e0079f54f33d73fada117219f39bf8fb962ce6fb497e242d7fb858a36d40668e68419f721fde032f4a0cf64e69c32f3cccff4163d9c15b86139df4adafbd8c408322f97be8a36b679bf528daf2dc71d987907bc0031dbebdc2b935aa10782bc80efe7495c836baf6efa6118937eead8eddec6ee6decfeddb19b30f645ce8cb6fec59ee37a1f54c5b8f4bc065cac09d6c57bd6c5b8b72ed687336ecdf45fec6ad377d7d8f3e3d99e3fa88bf501bfeb481d11d5e4ec1adc61dde429cdfaf0f2b97635faea7d8d7efca6463f6e9b07faf588b9d8d92ced1b2ff97f54dfe1013e5c271c816f069c337a605df0bb496cbc27570ffc1cbd50d11eb9e670e65886bfe7c41a37627df65c82937572c43166e0132d1b6d679caf6d3fe28f7127b5b3dbd8798befaec0b977ae9fbec298bed3b1076f45973944559b1c22eb40123ba2f738ee183b5335b5809075a0462b0eb590201a6af4f4e6696638316c537b32e74c4b8951c1a184d830cec09352cbebfc391ca02fda09f2dd556e18d30fff6cb8a8c93f3d6ab837fcd75c34e407f81601c333454fb5260747c34d6d78aa891fe1d8f56cf0886dfb986bec19f62bae05e01eb338d7c88be8b37f1b5c88c038628e9db9b2d1c31344baad6fd3497f682b5afcb5bbf534beb191b33ef4435534f555a32b6afec75a2bcfdecb4ccdfe9a5617fb0bdf6bca78d7f57ee6d45e7da7f543beaf4c45635f45c385b6b352dd27a5ba6f388652b1af7508ae0d607ebae4d6f56af11b56038b632c1a3fb5e604b287c7e5c37833599437defdab7ef0f4428f26ced42eeb45aee164fa8df6c7075a0cf6f5f576f95b2d066a8d4c0ae5ce8dfe8d55e1ff7c7aa98773825603b4d5fbdd04f933f07bbfd1a551975cdfe28f1e1b8d9b206ab68d9e0dfd4fc3b398703e18dd1af0f97755b36d78fe1bdd9a3e79fdcd36de6f8b5733e374fa63fc6bf563725bc3dff76855ea3ea91eddb9ad0e27ea2d5456bd06bfe64eced359e7e3a720023ea32427fdc65532b6512b367cfe338975fa765a9df9300b25b66caf50c7c3988dfa99fea18a906b9c39167af3bbbe7be76b4b75f0b941bfe3a39e18ffce073d5d9f1357f5a45f7cd06e725407d8cdea02bbc5353f476c54937f0ef9e30a3886282636342237e33c1f3fa9e88efcc66d7d4b333ee3c37c936ebfe4badb26bf2cf1f1091a310f49b57255e3ebd8e42492f3c8b8cd8ea6ffb8525ed69dd47111625cc873db41a7e0238e7315dd5de535173bfc21aff92eebbe8c01f093778268fff638a5e1d0ccae8cc74811a3d463fd785e0779761edb2d6b166eb2e8ecd3c370b6b2cbe7dbda7c8d63f86a9cfa1444433ef76b3aac878f7cbbe16ff88ae7d7f44c9d6b76ebd1dd2cf4223b86f73f8f7adb2f950d0e616a382db27a0ead36b1d35ac6bbb3cebdd2f4bed237dd653dda33f0bd5433774f7e6470a08c9f8c0d3cbefefff7efb78b27f466b59857c9d78c255a6931e841c32bec5f68692077414db59d2a5575ae77f6c861985a676cd425beea0fb056125be881d3654d4895e029a9fda3063f8bd59373910719d8b0de23b8137786fbd8c37793da2f34f84f646d57268fe9375c525690af8dc6a9871c4de89d4a3500378ce13085a690d25b073c61caf2e41c9d70d06f5e81e740de74a40a55a7c456d713e6fd61c7fb0ef951c96717c6e0b4b5c873ec15c6efb6e43e4fe47be094746a8df8da33bc44934697a60cf2ac13e489c5580af5b06e104d8a301a7e8ba289e1599d3f016f443ec3ae9ae1b7de8503e7a46a9535afc4a79cbff36d152585aa3d836101cfa5038d2dfb24cf96f570eb15b6a5e1be29546d30acf584e3c4ac4b0a733c2df4c0aaa183813cc6f049cb73b325f6480b9d4f804f61ee01f7dff08f390e7197ecc164add0606cdafb34f5f2417d495ffbcfd71d95857156b276453f041a25973ad7e29beec4d6ef5be94cea79525fd344781c581fc59dd04355d1f06fe96f3f0e2c70c868ac5f53fa61c3a4fe7e202703f4806c6870b7d4a89ebbcb45cf5a3e8c472b5b77d28eb65279565f9307b2ddda028e78f15d818f791397abd731fd6bfdae37313d7a513abee189a416ad45bc4e1dc30f4feb66dbc4eac0b4419b36536f746aa905d93fcd5c6d5f8fe7a676108d5923b8076746e7d19d2e7e539bb01eddf182f9b7c911630f712c343bfe552de22988305e3fd254b5a883da56934aef573fa6fb74b7fc9574e7f5dc9e6f1e6f63f64a8ce775fe8971a1ab7ecd7c960fdf5cc3b6a53dd48dee95e12465ede94d8efdd8e810a1ae748fb8cfbe3cdfd9aefe50c6df7fc9e7f3da9b58125876e8a0aac5ffca314ace81afe9a7b7e3bcdc9d31e28d9fddbdf4b37575d5cfeebee969a82f7a1a903f0847c42213cf4efdfe10dc5a9bbad96e78b3506327beb9e1de323d196d39ccf5afd5a8dcd37febd593c35fbf1eedce263d3c7f49bfad558e14983fd47baefb47f7f0dbac79befcb68a3c3b88a67ef8614e607cf518ea70d5c7b23ed0b69235b55a837f17f54ea34f03dc4dc5be3caf9ab91bf9bfb3cef7cfcc69faf239f866d0d77b48cad67d36f65fcfe0e8159fedc7d7f4f95be12bf27ea6ef9352ed32879a86e3a3ac1f3377f3911663753d4f39fe5bfa8b88e9c13b96506301c702873db9a8235528ea17953ace7adf77323e97ffce18f73f65cc74c76ab9e87dcd5e9716fe3b30cd5c77c406987eb8941a4fdb7ea9f6e7f7cc9ad2d45790d33851d7b86ff23a3ef1d75bcba6169e57e8fa23ee5060380a724bc785caa1cf0b5e760daef394b98219347f6cfa52497722e798915fe2226f616a2b9ef39abbf7a26ff05e5d6882f79d8f7afa9399d3413f00f34172cda51e5885aac12760b1f7376938a5e5dacfdb3a9f6fc83b826b643e696b30d47156ea836a7cc34c0f1a8e7ae08850170addc4f4c1595d59a71bee8c3fc3ba25859ebfe35729837cfe06efe6e1737fcae112ce9cce3bdea4eabcefcce382f3fe396ecf3a5ff70b7f52f7b37f0bc6fddfba677f9e5f58d9e5aff4b0fff645fde0963905e4793bd44c717a6a2b7f96c99f92fb1dbd953360990cf7bbecdf53dfeb5fe0b456e8d510bb2136c7373d0cc0ae1a6d92577a2a467b61aca029266bda3ca9d422b3c40f5ab9591146fe313ce3aa9acffb97ba3125b165e65cc0f47a15f11ae33cc8a18951d026f44daf2ace494db67a426d85d1877a4cd045fabeb36cf63a79bdc88d61c795bb790e07d0c1719afe41f446c975ec4ee7cfb7cd97adecce2979187f4dbdc876f5bf93ef6a5f2f3ef2cfaffa3fc040a87d5232e66e62f4b94fdd8ba5ad518fb64a680b3c183c45a49f9177fb91f41eddf975ff6d71d57f6beb5f15ebfbf1afd5f0eed7e3a2674defe7a7d5689f270fd3db78783f1e6cdfdd3c05d1d8567676249fac96ed6abdb56ad9666d582f80e3df5ee657d19b685313c76fb0c87690ab6acefe30173d8fa891015385fa10b1095e95d63e7a0d74859cab4d5d82acd0eec6a6f6e6f24e6fd1db6e132bd3cf94e9a7ff7eb04a55593dfa57c0ae1e91bb427d6897850fcaf884bb2c9cf57bbebb3bcaf5e941bf1744cdb685edf0a1d16b47af9a039d2bf60988afd50da275dd6cfb6e7ad455bf4b5b3dc9649b7653b6e5fd75fbbcc48f69b5b2cbc9cadedfb4fcaff2b7422ba55ae7535f775ff289c809325f4addeb2ef0a247c375d0bbc863f55ed58b6757f358bd3779acf2c33cd6ec228f35bbc863cddee6b1761779acdd67e5b1aa55b75f4a9c73cb3dbcefedd0bb0ff3e457f5aeb1fe5d59a77eab77ed651dea6c4fedd6b8e2eef857eaaaeab64ebd5ba77abe3bfd8ddf723daff841edd6fe5833dfe8ed33e7d33e3f88e719df30e2579fe7fc37cff3eeef3ccfee6f9e6785e7699be7f929f333eddc9ee7b5e7b9fef079eaebb8fe0ffae8f61fd60543d8da3d7bdb3e636e7ad39fabaf893bfeefe8899c271df9ee3af7acb631bfccc7e98ff1fe96c3bac6d73d6f6aee4f7a98d433777eb5fef2fd006dcf7f17a742bd91d1b9ae7fcd77b283688af8923802abd4ff2656a5bd5f7ca792456f97da7a938e6ebdcf57fde3f8e379aefed63c5fff669e8f659e77cd3c3f7dc63c8fbae39f4b7b5f248bd3edb9fe6fb1df07eba867c8abd8419e1a7df1943c09c414f534f2e6ca8e1a9d5e3b2bd1d75e415bd992ef7dc6f888e533f7e3cde3c3ade7edfdf848657c74ffe6f8f8a0dfec5f8c8f0ec6c7e9b3d6f7f8f09775cbe35ef3bf5368a0abdc2bb4bb77f5c0411d85fc275e11ba09b5b3eba4e121ae67ee5dcebc5652a828c9c0e9bced937f5de62a5efb85ca157b0f5ce0ef2bf4decf9c93b24e4e9067e09351d1dcf005985e5672be14ca8d33c3e55eb3f63501cf2978c6b7ce498f4e35f5f615352466e83f2c835cd5935aae3f435e5957fd4a6d9d52a33f02f38d35f768e8ab9c9ce2cc3d7bd4dfcf93a38a3cf92bc2283e2af43078b6c4f78fee78118e3cc69483fe097846e40c97b63a64f63a5f7e5b2177375e684ffe1ffbf457c6f6abef997e26d4467ea0afb2a2eedd67e4f4eea2f461be490f37bfe52ac6dfcbecbfd9435efd510f39b8f03ce0923ec37eddecd6bbbc41d7f4f02db47d25c7bacb7a32bfc2fbc46974cee7f950e20f6be60e810f169ff283ded6b77501bfadfecb74347f4a1e7eded69ff79c0fb2decbf30057a5da65060335ff78df30b167adb9a3a7fbf568f87375ff35b197edf8edb5029e6e9155ca2377dbf78355fa6e5c84e082cb0a59efc3382b552771827c57191ed1d33cf77a33372eb47c6fd6e77bedec9ff7f830b6bec7e5feabe264dbf1a5cc5ff3a558177c29f167f1a5fc2e469f3e91fb1b3a1fd00009e1efc5157193c931c83d6affd7f0d590e7357827ea5cd4e04a75d89bb993ff0d671e78581d6a8fed8e063350017324f1e20ce792efdae1c029c9b1c73e4ff1e3823c21fea806a7b8a5a0ed4d9e16f87dd04bc9d0b3020e346a69d8e140ae2deb80139dd7db65fce9578647169a657ad66034f1dbc8bf028c65d2f0adc9711c62ba0ce720fb651dfacf1e7b72b70e7b4be59872ffc4dfce71bc2eee27ea12f0534b8399e2ef8736f14e7ceb0e306446eb4cd799f8ed8d6628b15ee45528c91f867ee51298d27cd223bf21b162219f4d19e4895c4f19929bac0a8861ad8029e5b1f05cc849e294d47d91fbeff39946aad0b5477c16ceb5b3c0673d307c36f25c73257fd484c375e23c357af7ed4cfcfdce0a3188121fd912ffddfc9fc99aa02eea6c7f88cfabc0355939a55ea8938f1e70a70e67f21cce7f96c1d7e2d928dedb639067e06c51f50edbc1cc3c3b77097cadc109cbf7eb7060e17984eeb2e59a35dfddf21257753d0b450eea933a9c64be609dd2c428ca3ad559631e8d9f43e0b0ad5e90f76df121252645af26350d4f8c07510fec1a8c6549ad1e33eed0eb4fde75bf199b33c751b6072ebc20dff5f4d6e8170e8899643e4b59b48188392bf377897d2c812f7f309c64c456f62239a7d8d77cbe50f9f009e78f4f32661d853e859d451c684a6ed2ba2d57efbc931efecf971c632d7c2279d64e90cfef8c3d30dc11c095f59857f03a33d7137b25feaad877688d11574fde4668b8635dea3bd0caa33ea50d0e8681555e7c1fc79cc83ae0ee9067e12bce571afef35cd62aaed58aeb2678419d8afdc47137727df86cca926bdf89dd6e5e8dbe660c7cb1aa304f4e58c7c5ce73ad71ce3cbdf6e9a8667d72a0b9cb4d38702a9dfb59f3ca9c465f6c722df34562285927d89b25f746819f116bc7b66f13ab97654653c4f411b0272174d38c6bad7ee6da6dd6679bf561b956aee189e15d9735d82756396a8ba1832f5aaf1fc6fbe830ffa16ef5c0b76ba68cf3d2c4d5e86b92b840cf88ab9be769a1ea8d52d144c68635cf93425b27f121baf053736dabd67c9b6f9ed1d7acc1b7eb3b806f4c8c7fb83855f04f244670d7397cae197c1cf896068b7ba25f2a764255e6fdce8b2f09bc7fa9bbe86992b50a7c31f0cbc5664458bf7af04db16f93937b5689ade33ec4133e75eedc257542e11799e3e17bd072363e34f677c129856bf3c5c7eaaad8eb90f7252e74ddd81ecff418a3b7c90ea91129c72890cb05678b532b6a10172af7c845c5f76af1f3429c53c66f2a714327c833681cc147173b2e31af9bf237e4bbaee9052b837cfe04ff77a4102ba07f8cfeb88db847ce0d4d7facf385cac18765b15722ede09e93b717f64fae41e3dc935e5a3936f48bc9bb8bfbdad84bfacfb20e64e0044a2bc75295f830f2dcb82d7330c895f8389d046b0cde2fa9cb815707ebc780719b829d565c9fe41eb0678def191e61f189d8a7e189dd95cfd4d4a7917b9bc01f0a7270cb3306e4711cdeab3ef976c0673c2974345fa868e3ab7c68d3d60f9f82282e427026fa998a86e4ec426ebc6dbee7c56ec4a3b293d6de97f4715a6bdb5999037cf4fdeff1d1e0e18be4798d17ba72ead03b95f42fa60bbd75ba11fca234d38bac50dda46ccb473ac5f3d59df4309faceee7f5cdee5fb1fbdbff49bb2fc7847d93ef98bcc30e6b01f210a64f16b6d3dd311f22768439164bff50ace9cd98f7317e5e49cd796505e4fc462ee87c4ef8ce69398968fb357e4be3cbb28e49fdd6a467b4556bf245351c65f88d1df8c8d4a6363915652327236b41257fe2a7c705e376e43d6a63872df296a74518a546bbd72bf422abc41e8a8da50d3ff7d3160a6b60065d3d729f8b7fce7548839b2c96b5458ec5fe3a5e838d58c1ddd7017e33fc77ae05e074f358578d32f41c87e06c9bd7413ea9619399d7916df1e1cd9a32cf69d7e57dafa66df64c0d55d613f4339f14d61170eb21672571b2794ffc8a265e257f3bd652c4375590c735eeed167cc9ec83c6eff4cd713287f92ef1eb27cc4f4a3c304fcad0cb2ad441e5792eb2a3c4edfae1a70e07fdeecc5ddada23b7a2be07470d7061a6afde99e79fe7f32f0ef36a75e319ba66574ae88a6e9d0eeb6556c19ed20ceb3fb9d1a1636e719df7bb46f3b90cf2357d3ae63e6123740dad825a6251ea9bf6bb81c9770639723136e351cfcc0d8f7959392fc69467fa47771d53bf2fe17761dc28fa6ff039e57319f55beca6e754e6ad627e99c793b1db5923e6ec1bde907e716133907bd5ccd774c901015b843c37af4b7e9fcc57059ba1eb49a359009d5615f58151d0c0387a72ad0e389a235fec55a18993606e37f7c89f083f2b36fb761da33356b3c797f753558ead074e0ff94af20af482dc2fc486311e86a6277f5fee17ca9d3e618e23c7e4d337de3ab52677ab0dbf1bfcac62eb2cd82ee418b6b4e1c65e5766fd90ff8fe435b0a061689e7b1dbe700bc8e73b38166c80571b7fdec40c196d1a9f59095bc39c6949fb979a3820b1e0eff2f7e37af87bf1f9262720d78bbe42f523416d81da0189452d528c25f4dbf118e29323ef5cd10f76e8ebc3e6aa1e9e33be2bd725fe3a30255dbe2695f18d1ddac19df9bdaa068702f2320e733bc827638cf7ccefef21c74e8ef78ae32eb11f71ef879f66cbbe649db9850d0b67fd0fb1cb1f735c5fefe9faa0f7f878eeb9df9d3ad4748e7bd4d311fbb8ff16219fe765ca68f5600ecbfa176712bf96df7796edbbeb27fd20636eeeeb1ff4b325a67b849f46ce6eb54f4a7dc09ae8ab6809bfdcac9ff2b9b6f5d651b2d0fbf830b756ddb9ac4dc5d2ea6d242efaaa98d936bd2be41ff74e12cb8bffa7c57f321ca588b1b14efa9d8b1c67c3df82feceb4b29abece6338b01cea97401359d6b392d8370fb533d606816bb331eed0db1c83df56633d037f8d23b135fb8a9d1e6ba269ed83df61875aa95a9cc4f6f6c8e580f5b65495d18312db26b102f23a59d3d7dc689697469f96dbe4afe9917f19db15d7ec38335c144d7db0abb7cce14cc456e67e169a359ebefb9933ae153733722855b3a6a70ed6127cae5fb28ee377a97fbbfc16c177ce646e9d942dfe75dfd2db7ef36a34b195d15417dfa57ff5335883a1a937b13e1847ff2667cb3b5e9852195b0c7b269f9939552b8e9bf79c30f57b7e1bbff3e79c5d0a3e3deb5df00d4ae601e2cc6890a156aebd5349feebf9b3da9a75179c5a4ec77737cfb0c362335bf6dc4d0fc37c391fefd7a3bf3ab02387f5ff5d1e92ff976cd8ff8e7121b1f9ac5faa91a296187cb749173531d80d0ff954c6e54e97585e7cc6169f0af80a8999185b5426f75a21b73973bab471d0e6b1a81f31e94da09327b16df30a8db2ea8587029af147da164becc9f94f6c87d17eb4c85729f31b76be50f9e659f3fa2436a8a995bf2b423713db5ad1de2bd865e5a24655b3a6cb7841cf1c4762789367ed9abc83c15c20ef61b0313ba3d13ab1e8cb2719fc4d7081e13be2ff030312ba59c3ff23b6b224c7907cdfc2f789ef488efcbe85ef7fdf21bee9a136578f9f81f5e0b330f72e7678ef62a7b977be4b8e3d3d6bb839687f5ffe7cea8e034b83fcb6038cb8bba3bef9e884e3e373d1ee15af50e49abcc6961ad517d7f66d15795690a75d6a87a6dd49941661e4617d53b317be7b95dfe5d0d2868edeeb7595ebe8fb7535c16f9dd8fcad9346cbae269fbd5fa87a0fcc8082a669bf2237918ff55411ebd179e181f74c0c6130011c8be7da8596b5177effc4e442705f4a659f0a5dfbf8adedfcffe5cfd5fd749fe6b7dcf63b1b54f53bc0fd46cbebfde13f1a0ef9b98c3789d34fc0169fb987c73634462aabd4dedfee81f9a0474affab1e98fa937a5c478f8bd25a3ef8377e882bfa029afa02f6f51810f195af3a49e7fbc12ac38165cddcf5a7c491ea1a6efd95569246bfbad14ab2d80fcb3a8c3abcea27219701354ec8f728c7bae89745dc7878ddbb82fefa11349c5bc78c667c7d4d5ed276f8f6d277877e835ff93779d33ee2abb8aa4f61f82aec99bb5e28c357813eaabf67f32c1ffc591e75dda87b486d37a3296b30a3c4c1e178a87110ef89f7e60b6d5feb8f9a9a7e8b31f9c20e8d5692e169bf18b7eaf3c6e28d3ba5a5ad83af6c7affd1873fca1afd926a9d2f518ff97eb064ccfc476ce2e7f84a5fb34feeff1d7b35de704cc16f6ff47aaa79be7ed2438c55db8c55e8f8a08e387ab376b6e483991ef6cfebd1bcd2374cc235fe105f3d24e5073c3e36b13ddae8d164c7ff886f7db02446141fff722c190e927f39beac377e975cabfd7a4deb9bfeb529b50807d021f9ac75ae7b5be7fe6b7d7a2788c6cf7a60395c63d10769ad0696d8b6a7cfb24be18d0bf40bdaa57fc24f7f6beb30fe0bd31be5a0d6c1de82860ba2600f9e325abdf1f93af0de3c2995fd86f70073c172a0bdca5a6697fec03f621b7bc07ade303d2dc7bf97e94ee25ccb2fa8c5fb9cc2ab7dc6775be7433f04bfb77e3b96c50ed6e0891ee1734f413414ffee14449bff013f74430cab9d1dcfe38fbc1c15b166d8bef455edcf1a9bb775fbbf73dd663fd8fc037bf9da56e39c3f7e137b5ccbdbf1bc56e367caf73f67cc8d0793456f37bfd9c3ff083e885cf1a7a3ae2c679d6f7cbd38758308fae5ddcfcbf18f5f6bbede9ef5ff986ee63fa9a74a5e8ebdd1944da0298b6baf27d089a5a6ec2493ed0b1d598b3ab2dc0e226cd79f34cebcf4303cde74eaafd912a706de61e09cb4e775a90990a207d6f4ab55be3bdde80ab8a6ee4b2f71ff6834c2a04131412fd4ce26efcaaea94d836b1cf6a842addce8092599def6ed47d7aba1315f27c40f44c44e686812cb1ad57068f4c16fa1ebec083dfa19f530a85fdf2f43f2645d68c05a8d06ecb1d180851e2c6255606aa1010b3ffe524799bc081df63ca3e7a113e4a933a9b342e75ec6de3bdcabca07d79c9fe983426f34307333a343e6a6663b2ef443021db27021d791005bf74a43b96bb83866465fb96def9189a3a73fc69bd562fe356b5c7f3ede2be3ab58d4d2870e9c3573a77f732d5d5e5f4b0fbff5cbac79be34bde627f6b444aa003f02312af6ccf5c921096cade73cba5e3597b5f70738ddc51e3b8feec6d63bf4197e926f3ff697f7fe97ac2bb4e4e9c8e0ffa0dfb4df09f2846b18f309b6b64e25747680f982deaafd38000f81bd3238ce208a0b55af95121b35ca2ab5c377c46ec9ba6e43b3937c39866712fa8ef6cc6dcb8b61ea453b994b5fb366f43f88af718268fa9fa8317dca3a301fed9fd743b1c9cb5b8df93d26be04fe5ceefbd63941d741e6e2cca9a80d2abe82855e4ce205874a570e784a74bebf0366dd25b68f383e68a336c7fcb68ad242d57ea1a2fd5d3893cfecb2e6d5f856c48bba73f4f89083646207b9e710fbbda36f5439c073ea7c0cdca8023e7d52d3ff717ae24f28f475f62bf0b8b03fac0c228f98f8017d23da2372e2a91ad75d26c0274e4af1f9f84ade96204fa0d5183e485c019e826e20bf7f007d61b1870eb197e22f36af264fc61ea6f211bf6d9ca32714fd2609fdac2dfc2f9c03f759ce41fedb5259f81d9da47278cfc1970b1ca9c56780deb45a1d4eb8073cae9667e1e83ccb9a573e0b790e69a6226df220c084929b6dfb3ace48abd7318ad9be1ea3747f1e8d3f6b05f99ecf8418e03af900cb7b71ff9fe0e7bae30dc74d9c35afb8e699f572efddbd5c77dd701cb32f6e9c738cca73e67d0922734fc8fb66fa07cef7c6f836f06dc15946adcc09c646f31cc06b5e9177a219afa1eb65cdab19afa5effae20b353d88d507e3073c3d8cffc6e4c669b4393fc9bf9d1ff685ccf59b0ec695980e1c365e15e4d30dfaecd1a3d26f62b2a697d1821eb38c2360aed1d76d9ddf8b9282b15ff36ab0c63286a37d4e0e3f8bfe0b78b4ad22045e1b9865c7f0a820ff402cb30fbdc350e6077a2cb3424589e117519d4062326840932b917de919759e251e2357f7893122ce59b107c8ebc81cd633a70c6385d8ace9f7f55df41075c341bfe7bb58eb698f5d55e87c82bef1308af9bbd933db39f784d672ee185c85e8056eb8fd2bfc4ef433bdfcced8fc4ef10fd187246b88932026462cd8d395a9af038beff5a8850dbec30eb8fdd84b6a99befb92f736937898cfcb3c4bc49ce6d5d4316ae0f7e599e4bb52e20aeacdc605b5b8712f32721af4897b27378a0d8e43f6b6e2bac12b2ecf03f1a8dc37fe6e3e3ff0119cc241d37b2bf72ea17f6338ad609b07e8b532d7b433b1367a4a693bb7a6cf2b32ef83cbc63f9ef9c5786cf64b633cfa85d83619d3667cf48c5678096e1bf96d5bf61513a71e9b6bf20ce741c375b3f9f0fe9931fd6d853eb5d8e2dabfc961b3674e09ce9081e112c0fd004f0df90fd8438171cc7c988c67bf6b786fc89b06bea17ed313dc63af357b7b796f52877d0678065d5ebbb20ddf4e075c38e035c37de8a8833a9a3e148bbddc1e791bc8975136dc93e473d89b7c9c925824e77c4ae579318ed9f6d9e764f8efd9eb0c6ecb92bca58eadec93e1b6173b3e75d1230a4d77e704df630b6d53b9ff95ef6e4c6fbdbc27f3489ec9fa39209784ac4bd6a416ffa25f912bcecb50b3634f47a9667d9b7d853b07f7197d7f72ade83d169fc7221f695ae81ccfc836fdcd9d860b221c349c103b5353560e7d2af01eb2d75c9eb9bba33dd8824bb4d68b13f889827c67c38faa4caf3cb80ac1e7015e51aeafe02831cf02e304bc49ec1787edb0d127849e17f0821cd9f3c3de3e7208b1a722bc37fe44253e56dac3b973cff4a9cbb5fb3dc30562f83ec43769780964bcfa9999b795d899172e1345ae2bce5bd3e32ff7a0e102407fa4c3fefacc9ccf03272c793cd0c72e63eff2f716d058e0b3433f0fb8ade473a3d399f74e7c53f0320f64fca8a3e935e7f8349cb7cd33657f8b6f78b7264dafbcad17a7c6d65b386f2e7379c25e7b79feb0e569d36f2563f268e61bc7ae7da2ae83cc9311bfab701eb9f6095fcdb80ff1cc549763049c5b1c6f07cba6d6b97c77ba01ff60449f5cd1fe19eedc097a3843730fb01e46cb9cb6413576b5abb74e979c0cc3e78bf96cae2bc33d450f1af80d93229458c365ff11f10c86b3b6ce0ce72d395e946bb867c8dde2c8eb27d57e6ff98377b9a1986b5fd42f54be7f66fe38ce8cbe4f09fe1bf4632d953c5f72ff7b25b94f65be4e0a5d0fbffdb7d4905be6a29e6f1af557b56ca8eb029c099ef3b715ec3034b92bed9dba8ca363f155a95b83fa4bbfb382afe063feb31773429bea0e4dbc382406fe9055f37cf86d85b8133d9927cddee6732f236dffeb63719df7cc3e72987f070775bfbcb8dea72082864c2788c69f53eb3b8083bcf661d3a7cfe69a707e734dcdb593579dd76ef6f1da814303c797d35558cfafff1ec37ff1ea78f4c1c6df9817f26b626a96bc97adf18de526b53777eb87e9afdb5c788fa521cf7f56aff3fdb3aeac52edb2deca9d1cc338839e83def64f8f03aba20df5b370919581d8de3c3dcaf7827cfc0cffec80fde02c21cf890f8e07cc9ff8548683bef18d61af6dbdc8c02bd476ad5c8d86f5a3f7d76179c3d55fe1ae476fced1f079548ccb248edf7c5b45fd63e8015352e87cf8acc1f5d9071f29743ad8175d84ee52b18fdbefaedc38235e93e3053af4d0e3f33a11b86cd2da77fdd3ead2663c7ccafcfdbf5f5447b7cdf3edb20e327c52dda4b772d3a3621fddb3aa2ca7fdbcda9f26f6f0b87c186f268bde2e3dfcf573f93531e27fec8f226e36d8584daef15a0fcc7adb5535f985650db69aed23b765dded376b70a6ba3f8f7ad03f918b0cb92f0bf90d89bf1fd411392970ae818fd2d2f28af9d537fff74bbfe105fb93df31e8976a983833f051ec5df0f0215f96209fae64de83dbaf6f25b56a38956de6fa7cf24e54d047b1597b58324f094e8cd816bf3b8c926338b07a419e1d99af44aee6481eb7bed170a11e9f9a27d60cbade19b0267adb2f8997f28b301ad20f671c5687e04adad9be3b9163f5501b889a6bb46c72fbf9e4b6c0355af64caef1a08a30520ddfbcc5636419f359e4e960ee3021c711f241c4a72877b850f91df8b4a037dcde47f9997a7ab35accab24defffaa278bc3f8ffbf27e067fa1724ad4ff81c3dca326a85153fe104752fd2d1cc9ef62332fb3d0cf35802f0fce90204f3a91e175d18b17ed19451d9cdaf06cdb3a6eaf432331026ae15be4d94f017349ddd0f4fcabc3091c9418eb31b8e5c48fce99934ded861f47cf10db64419eb12e3103aeabd17460de4d7c3ae81d5985a61689159ef3883257147b4b72c4da26cfb9c9c9cb484e4e9dc7c8a1f3988ead0ea742d7127f375c9769468e43e8815a6adbef318fb9cf9bdff816331644e0a0a1cd0117545f7c91e32b2c1972a2121bc547dddef7f8997ecd35afa5760075dfd6a6cf719d4b0c3d81ffa1f649b7d9873ccbc347bd4f06430b8de7df61677f1e55941c4dafc5759c2cf4547d70b1a8057b34e47be29b36fd19e014f8f153232659487cae9b7db2f63a6f3e2773deb986b76d7e5bbbdcccba4a16d39fcb45ef6b62435a8c2d35ebf72efabe7a4633107d36d0eb246ec7c2f92e7bc10eec4f6bf6cd517f49255e0507a6eee058a5dacafaff8f62f8b5c1c676313fdcf3183b35d7fabb7d6a6b755ff51735ef9b7da6df98e3d4dc8f99bb96ed4e739c9779e559ebbcad9e988cd57df125c7693b0cd309b896ab364bbd60d2b61738b4edeb71a2b77da7c5f769a3da7c3ff28fe135bc1c78f71bfbea5fe0ee30579a7901be21acfb57e6525abdd8fa4bfbf9067f27be4b9bef1ff5c0fa40bff2dfbb07c0228fae620ceb97dfea5fcc7bffd5dad3766e3d2ea65f966fb24dad271cf4adf5d671c2c5a98256fa28b3d6f91418aed0dd3fcb7399897dbbf88c8aeec8ff0f4c48d65bc973a306e4f93bf37c7acd87f0a179c3e3f8e1bdf80ee22fa13fe7a88789452e44e6b4553455f4abe30eceb14f2a75bdbfbb13e413d60d98073f9df9fe5837502f3974e0cfc95bbb753ae2df2a9307d05e5642e358fe274fe451ef4e38b6ef6e7c3d4c6cb996ef3bfa4133f856d3867be714444b5fdf27473dca6a5c0ff439a9aba0ef7f1ed11332b02c6ab8a842bbf367e421f2b833cffd93acadbe7b479fdf9d2bea68c499caef7c15b55f5f640edcf27b577b26aadfc4b61fd52eaffb2aa30f7c9541bf525e6635fa3d321e14722457c6d030397f468323157d6c4733379153d61fedfb9cefb68ae766a369355df49e92452f5f2ea6d17251ee93eed7d44a6da7ed3dce0dcef6847eab2d302bb6ef2e6bea14ef32bdb56cdf4d8ec4b6263dd824ea35cb36de27be7eec86e7181e5cdab2edf8eea67e89ed2719fad988cd41bf5883d3e1b68c052f43fffd3ee9cddcfd42dbe41c6b7af0112ffc009e9631c4d95ff60afd901ccdfbe4bf373eb2cac933676cdc91d8e439f08afaac1fe1d1f7983956e4021f5e199efd67fa223c877a48643daad75b893955a117aa802630f82f1cc3abd1273fff83d10198f54febad55f25a874f461f00fa17f4ebe7b6de89cd9e03d7801c98ac35bbecc4f3e0b7c9efffb68a9242cfac2aa91cc7e4753a0637459e8d07f44064d4ace37e730dd411d8e29cf6ccf54e7c6e13de37687de9d63c3332f7227b79b8c511efe65b175c29d19c3c1233a75c0dc48790f1393463cc2fd44215d4a2710cce087a5962b74be2f6f05cdff0bbcca1fda0078ea377276a580ffa25f4d6ea25edeb80f3c1e44d8e1c9b1333369d5a03ef4f2e9779ee9d383f2c6ad8507bfde59c8b8cbd9c17df9139f17d077c27f18eee5e19bfa616ffc2771359a364be16867f4d62775f7593667c23af89dc4e34f743591f064e6ff5329f64ff93aa1c6be5a685def6bb46f7f5c4f9dc6fdbafe72fefc737ffe49a7f02dc28ecc6bf1e83c007fcd918470e0876eccee43fc45626a5a9531f03724f2ec238abd7f9f2c95c5305ddcd7d52ea3873644cc1c6212fe9d5bebbf743f95cbef455a4f380bd2b8607e9c23ecaf8b3c9a1046da717ee245cd3d95636f3c7ceaa75de56bf76b34bf777cfeb0775f34d5ed9ca8cfa4dd13e27d613d8ac8abaae5e869eabaa8f3e30d317d6f0bb67e1c072d28aba2a41841a24ea8dc030207fbc31b512e2f88df61c74035003cca70b1569b1339ddfacb1a5d1933a06ac0195cc3b78d0b380ce3c6d646735a01f3e7333aee1c0e3afbf35fe97e94d369cf913e0bea9a7795793bf1eff1b8dcdbb08f52168b692839f18ef2c033f2bb905a90f164d311fd58b5ed042459803862f2c33fb74f3392b3cef03eeac6bfc93577e8b1a585d7086edb252fd805615be131abda179ee553377bd68ec80f85da6b66bffa1cff214445a8e57bff2576cdedf75ae3f21369579a8ad54c6f4d7acc9b6c517d909e69422ffc3a5ffff43bde29c9058a189232456e0b6856dfd031c2ace6b2e89fe0b7f84e19268e204df6d6a9f7deb751d747264fc8aeb3ae704cf3943e40491c7440ced0f9a5ccd39b7977d869f3bb7e79bc7db78b9c2a9b3c9d94786e742cd12c4787d2bad9bd8af8907ade699bfe615195896a9e3549f34f650df57a30f6beb75b3cd6be937d7fd2e66f5ddb698edcd3e5988cf997ec975bf1df63f2d742d6b3f7a719f8d9e631de43b279939bd304a5ef1df98fc2a75646b796e4ead47e843b2837cd7d3672e3583511e9d8e3c661fc78cb0763a55b840cf94c9dbe2f5f5f73ce02a11c7e85c6f786c5c8fe9ddedb3ff7671c271d15f1c6d14700ab37ea90fefafc9681f952b17d79ef1da55a1ea9dfc999e42a7363a46a5efdebdba1f3c077c9b1eb480b78ef8481da3cb5ef2d5b74daf1c7aed4cef4e152e4e16716972eee9b5df7334bf87f78bf82bc7f41df512e8dcc06fc9989f2686cd6c03b316409b75d20922a3b10f6c9bec1f52c3224f4bf6032d15b5d3a0fd6aadd03faa8867859e13fbb575ee731ffab2d1abc63c3afa9f62721a5d60e8d2ea230c9df7ea3a99f71e43bf873db017d7fda02eae1bbdf2cc89cfd0877b81df434dd76a7d5f90774b32f4cb71acdac0129eefc1bf715fdac6c10fcbfc4be66f5aac69f4a9c1477a3dfe9c23feec22fe9478b1899bc55725372f34869bb119502fff72cc65664c64ea21b1ce18d1660ccdfae523b81e62725cf158f25a1a1f9d7137fce5a11d480c436eac4a3dfcd4469f3b53861349e21b898d55347e5633e239d19f891861fe2d8ab22c7c4898e37c78d113c5b990a3610f4cc03ceb226c89c19a8df6bb65bc3f268bf5d7ec656ac747d959e7b23e795d5387ec5ce3b99941ff5d3735d31ef37119f271216b90357c69f493ab4ccf1c477592325c5cad69d63c9f076e36e824bfad696ea16b867318cea5de3c4f710d1a7a74e8a7a2fe377a9f868a583eb16b7deb115a756b73bd6d39993876260ffab45c682b3e0cadc7c5fff992fe558b1cb40d2db317dcd12b7ed9cb7d0179ceedcb7d671cd3c5be9035c4cfc1e5fe8edfcd23bf1b7215adf1181c2bd1e12f2beece4f580f47f3ddcdeebccdfbc21eb00f2c4ae4b9d8d0dfdf369ac3492f72e3cce4f8a9d11841e31736c7f4c0d7ac09fcbbf6c67fa3fd38a95e7a2f65fdda2f74e538ca3ed9e42ca29626b7bd42b9f3dfda98284ac1518f3e4dd84caf7781ff3ce39ed6b9b91ef2e12f646d0ff2acad6f355e2d863f9673bd4f1ec6f9e30d737c855ba75faa6ed29db9d3853e641d726e91b3065c17e42ba8436ab5fe0e37f177309e7610cd9f5f69b7cffac89bb29f2eed30bf0cae831e7310ca2687587c445f3a748c91cf744c9f2dfa6451ebc0f84c9b3a5a89da89c475b1aaa88f8a98a44b0d6f3f53512ce7afe2bae13a3b737874d29a18238dbef709b80b643ba9c09dca3a34f82d92a66fa6d0d689be6805fc7da5b678659e7ae6500f9c5c58f073c38557c1dfc5ef01dfd429889afffd42373aab837ee753e6c38d63ea239fcf9ab9f3855e64a51e5927e0d7169fc29378d57f24ce12bd1d4e9067f60abde6aa08dd356d2aebcae243741f5dcff40a6736f97ddae6c4f64562ff754c47e57e3d9abbd4aafe9adc9a2df4d8dee82ebfd6bd97d7b816fb91169a3a02e545cf0c6ca102ff72c34da58ef0d32dd6acd43ea9923ae677a9adff4ad7b9ed5c4fedafe98fb7cb77eeb2dff0c9ff4d3da1ebfcf211d7936e401cd511fd04397a787a33776fab5d869a5e48dc916ccb5ad093786e061ce88efd3df7e8f77fc1570dacce3c175bd036762b37abc3b44eece1e9b6165ca9bf0dfa86f358e67f4c4ea519f3ca419e7423d7b3d0bf8bbcf9ce680964857697cc8bbbde51cf9c5ae63979affd8adf591a9f7af9ac684faa20efd711f4cc27d4a06a99d78946f3cda335dc7dd19ef236cfd5f65dedab6e52cb5c26b74bff552ff9f783e5182ccc269cf57b0df7a76caff371aeb7cec9f87c257bafe5f97b4765f2ebbe7be787b01f973d93fd8ef872fa416cbd427fa61af4bbe2dfaa4865bab28c06978c9357e7ed05d1de26174d42ded70130985690efe4ba656c95cd35ab2ef034860b567c7365fae6c5a7d0cdf53dbd5a9f4c4fa7efc6476239d5d1603d4e419466e27fa8caeafaeebaadbdd9278be36cb9e8fc5adff8bbaf72b337fdb6e41a8a8facbf82c7d0c4daaad0f5fa999c7b88d37b93da33b17e52e8aa5f52bb6227e3c2c2338fd22c6c9e2b781a312e0a685f80079adc6baa9ebf3a2ed63af088c635b18597d79061dbe8c6d926a7de0d67a676072e4265c6be53936b2f71c8e5b0c983dc037f1fc62638fd6270080479bf63ea4bf58c98a186bbd1026fa2e1442406f2f2783eb856c1e7673899559df1fc583f63d353ee59910b5e824adb1263927f3974a7ae9e81f7b14b9d3ef0e86521f826363639ac13c6af95e14494f93c001722f8adc57eebaadf0bf25d77126545085c94d30b9bb8adea97ea87cc7fbfe178907b7f64fc9916b021ece57ec1734643f673637d890b7016039394154afc0fd9ce87e7f90c0ec31a18ce92d82d7292f2fe371cc9fa4e6f9d9e5c43f36a7890e55e942f7dc07d3bc8554d5e67b159e0757424e6060f55d5af1a2eaa2637ad07e8b791fbda1617aa968bded7d4f9688767ae7c779a9bfb7c325c1a9d06f37f89c7f3dd860ba4c1e4f59b6dbcbf8afa47b55336630df8b82fdbd1b8d6c8f5f44bf5eaef75ec13d7c05733eefd047c4f34da178ff67cd770e3dc9effbb58f4e44bec100d7d3d4c9c47d829d86d4755c8ab76e6f9d40fe35337c8bdaeef2efd0ffa2f6d158dafe72e0e577317e8f9f87e38eb9c9e549c556ae7d9c06d80db0aafc4584409e228b11fb07711f0bf569027e4ca70c14563eb8afbd8878eff4f8f588bf41d7a64f2343bbfd246d9c8bfe5eb85b9ced2601bc195ccdfe11561c4fe74939fb9c2d131af3572e9e223c4c7661bbc16e0fe8b2ffca2f9b7955cffa8e1228adf681b9d39ff3a17dc431dbc07fe7d75c15dd416bb5cfe5ad9c75addf06fff39fdc05dd6416fd48b86b41544d3d67ac0e1e29d1eb0d16b9d9efbafce3c0dff80867e34faebd763577d15ce0cc6d28d6f3eca8ec098b7d3943bc91c7e1c58e5c736f553f2c127a3bb5442dffe428b5a9383a2d1ca3deb931a5ed4b6fa956a65fff5ffa5f52d36fb4fe40bcffae3f337cf9cbde3d555ed675997dde9425b6213964ff25b915b3c64d6e5e7557b3d6f33366e5c0aefc786c464eb2775786b8f25e6beaaf1be0817e43b0ba2e915fde2e55bfd62f6128eb24b8e1af1498e2abafba76b5346c3cbd4c33e41c38beb8cfebf370db7ff6576a67a595bc807d916ef435f757ebfbe7143bf8fe37bbeabff1373d770f2900b421db2eaed3a31cff76f6c92755e538cfdb962b3a64f9ad8b4cff0416f76e19d5df03315dde5d4f0011f7d17da37f22cab7ed7e4ec2ee3dca3c4b94124716ebf8973c1cd87b1524137ad0e72cf0aa2f4d8d41f820879d09ec4f33e738dac6fccfaa5b6f95d68156da98f1c44bb2c9c59bd143d3af08f7bbebb37f948d42bf079898fd5ccfcb5ae6dfdd549bf2846a1dd185159131780b3ee404e27f0e88ec041533d0e2cf13b24662d83680e2ee2c6bebc6c7b555a13e3c45c337a609fae739925c710dc3771a123ef889ca13ce381f963bf60198ed4b1c9590611b866d1171c449bfaa54718394aa7c133866ffa8b7d77d3723deafc4cacb9b31ecdabd561f8fc65f932daf0430efa9d8fb42483197a5d98178976a8cbe07395d3412f15eb21a58e552fc8b3ace19e669d2329896701c6c1a26e9d65d637d333fa43bdf48cfe487a17b87b6867b17ff075af625abdee735ce7ea8c3b9de7cb6f51e417ac470c157b16653c4157b2d455df99b9d36760f446197acb4d8fe2ab7ed8b4beec87659e47ce61e68b4d6df90b4efef854619e6c9df2fbceea06f95947b950f5e659ee23f437f29d0daeb0add3d1bbd3f973a6d7ab0ccfbede65ffacbae0d81b3f2970252747e899c5c413e981c1fbb6f5d317fb7cfab0b1960fe32259945f95a3a3053f3d34b4bb49054cacd153cba8e1087d4619d7d7e7520cac0172c296ef1a4ea43a2d8cde6a97da79e327b199ba0d86650beddc0ffabe9333bffebf1863651079a73f982b17bd052686d95a555abfc27bdb88399afa65eebded37d7baa2869e3e40cbcc59c9bd6ef89922ce27df6dcb45d0f9b53afc953fde8f7fad16f3c9e3e82f6b75f343dffb182f5cf155e47a1d8961586bf2331d671f70855e8eb35771ab7d3d6e5dff266e9d3e05d1c60ea053e083032c8862ac0de4245732d61bdf576259679d7bc0d8aaca6ad6116a036e1b1ef3a40cf24dae668627031acd5ea1512ff5f17fca1a3fb681d941cfe778a1a24d2ec793ef991a92bc76a0d73490e3dc99380e5aa5c04ef0bb3cee3cdf152173c90e6cc5f9dcd6f9332df3767a05dbde33635a7f5dada6163d37419e39d07a7637c0e4d14ec6d6a4a65f434d3c459d0ec4eb93ccd44f2df688bff8acbebba99bbafbfb1abce524156c2d713262f3397e3ba1f8c7f003b21e31297b37040f0ffa1e2ad4dca9c7ca5afb4175587ba78ffeaa5e7f4f7f9bff9b7eed218e7151af6f701eb2dea88adcaf4911ba19f023e050864ec9dcd515b120e0eaa955c6fd71a63bca3aef1b987da6ae0bcc24f807d3665f17fb1e7e1e0dd6a616df097e91bb568835c9cf5a43e7a4de3fd3d74aa823faf0f3687413804f7a2496e599bac47d87bdb8aa87f5a1f6a179afa9cf5451eb3535baf4535fe666383a5147386a1d57fcc2bcdbdf3dadbad35fa9f565f5b2fe7cddb8e8598d50df47bea022d6c9ef3267b1863ebb9a014355bee4bf2fb1f7afb1f1fcf359eb23b704e39419c6a2d1645d3ea3965ff5abb3ce68e3abef4e97bdba861fca3f25d0d681eefb5b0c8de1a6c8788c2dfa364a6aef4d0ae52e9fcf3913bc4e8d86ff2e6b5ea9e1cff3185fdf4aea174eadd7b684fc16f02fc971ecd09794ef9fb11fe443c8279d49b4131fb4f2dde695f7f0a527017d06c6365cc4e9d433b7cc1ad403af01b081317506f3e5ebf3d412ff813b03fcca6ac067436eacb63d29efe6d3d7e4c7bfad57ff2deb55cb38fa2f8cf178b4f9b51efd55c7a36127b5bf66feb205ae8d3a4f15b4a64b8e1b89efa6aed1de171b53293c277032706c23ae30b6f38c83ccb2f05ebdca1d9a6dc34b082da59e89cdbbe06da546be13e4932ac2bc423fb5132297e5a1ff52a1c7ab5fe86872e6fdfb5ddf565afdbb7d621eb5bfe9b3385ace0b9c25f469390663d53d8fdb2d35d5cd78edc6f5a4d9771ec306c38c3513af55b32fc53e6abcec0a1d67bd79be7f523f80c1b34cdfc382ba2eed63ea5776bc73b7593fe8fd17ed4969115337b60df6a8fa77f8279b7a1f735016ec6d90d34fe6fcc99c204f1cae0729d703acd7580f4eb473c6afe21aded87fac0969dde4e8fbceeb7c7d76947835c87786f7c971984b353ce5f984f9999c5cc59c3f498ffe1de74fe8faffd6fcf96ef87fb4a75ec6f3e0f5d88ec56fcad317fb8e79f1c6e6bf991bdfa98354ea7de2ccdcbd1d8eb246f368118e503f71dad7be3bbfc4264fbae37df2c035e12bdafb36b9242db657c681070d1107dc035bc7d29625feaaf538b0ac95eb6788e16cf04600eff676df4c7ca06ddf9ab96b25cff7d378515ae7cfff12db347a5c94d6f2c1bf3dff77f54ab16de4a736bd2a76e402b3fd8cd87debf4c0eb3be897da3e156134614cbf3ba197063c6df89c2571d6b75594b1e7d23e55d433d4e096c05839fc9bfb2ef118c494f7642ca1ffe6703a1ace887f3d8ef05d8c25f94c8f1a211939fdc05927d79f1d55b43463fed409f25462d3d3ccf56cda50831bb74e257d1db1ebaa1be4491d0107ef59ab0178eab09ffa09e007284daf94ade4bb5be4ecc177b1ce5be73a4eb758ec1d4f6fef113113f424ca336fdb07bc71f3dc3b91cfbdd122b64a721e22bf859c3af50a2ef9a2a9df0f9e9038eb4a4ca625ce1b5c6a160f6df3796802cb36799aefc84b374fca97f7a933a0d1dfd770225ae5ff6a3cd399ebec8cbd6fdf27fd30af1f173a5c75a75f93ffae75af997e36364f62f90ec7ddeec85aa657a83ce538866e5bdc499003eb1bfe9c7e6962fd13f8dfb7a8979ec89fba6bea8435ede374a1edcca26ee892f814f4457aff31ae6933366efa711ff42a5f3c2f5bcb3a447d377976e44775a7affa41fd97bedb9eefeeed20f7995b8a2632762cd4e4c0371533df5f598c89d13b45de2959d7988f4cd92b8bf1d3ef9a7167fa76e515794f8b318dc408f39c1c521679ce2ac7f47f79c885a93a460e698ddc6aec44aed733f58272f51adb41ce16d6e58d0fb3bff437cf35cbb47aa9795f729cbd6825f6dbd6f6c204f6693e592efe3a7d55de9e0fc7e941ff4c0ffab9f9fe6b3ba99b7c8015e48d8dd43db3af77def7636cecb357e8f99ff303b1d77257a808b5eb3ac8b386db01d8ca205ad76fb814d0831d42e77fe798f14afd20f169f749a5bccc5e6fadfad11dda01d6cff7ebf5ccd51f72d93e1a7f00b8dc4376043704f26b1ef240ec53480a15a5d0f6a7f6619a610ddf22363bd7d6a9f93daf5f7145a08ff2a5a792f88d09eadf7e6b6e9ade46c6ed8d97e60a46afc21881c65f90f7eba4165bbb83268ade1a7c429d98eda408e927fef19844aee4654c76c061041cdc18b69f98e40d381e5544dd796afd5fe31751bf19336ffa70dbfa7687a1fdb8586fd6a3f960b958fe4a6ffd2657d6f1183cc3bae2daa68159593e43e781da0ee4d79f519f3542eebd5f23ce94753542eda5d39687fae25985cb87cd57e941fd543dec2097b869a9c201fc9eaed1cbad0d6eb4225755ecc0df89f6c05328d4cd36cf7a7bd6e368f59ce2d1f079f930b5bea85d6ed79f918fcf787a93a7ef1a1e974c45e3e8125fefbbe3dad4404f9ab9ef1e724ad005b51a7d95463bb80cf21431bf828e9a5568e6fd0bd677fa19f00739f864643cd4e06dc927a6569a188edea4d0d4cdb2b5f58e6b14f978a335f516af7fa9e355bfaab38d94b9a63eb5e5721faf7a410e20d4cad8fb885e9520578c21a90561234785f8aedf79d94e3a4904be535e23f012386e65f4eef2464be68d5651b3ced94dbd4f57961344eb36fea37dc57f842e9f194b55b30f9fbbb2a627f6be4aec727f6d7e27679bb483ff89ebe8eecdbef4bc0fd7256b0ccefbc7bf45ec7b73ddf9f7398fa9abcffe2d32eeffde3d6b618f8a5577bc592d86a3c707fd347dd8dff238d73587619b74f5d2ebc3eda6d727bde8f5c11fe6bfae0c1e63a8587faccef6cbe0713739eb95c8cfbcaab3a775b38d1a62d6f00fb1c6788937e93b2de3e049b2e8fd4a0fc363126f7ea587fdb795ddb3924579d3a0fe703cc405e2bc0a9c3927132780d30d1c96461b5459a87d204777e6f6d9f6c10f3ecfbd9ed16374c8eb435d47359335cce9e95875c8d7ed193da4ac9058220487b65c83e740efd6700d52e309fc6599f83861833583fed44eaea37789670be7cc13e3fce71e0baf4b2e4760c73b0d7799cee1a73aa6bfa2637e636634ff3fcb06f9abeef8e7f7c35fc57a347cbed9a16bdc5549a191bbef17a1c1f0430bbc4e8fe2d384c4fddbc01c481cf943c97e2bc81578cbb06f9fd8411e5be095da424354fc1e87e30f9c7d3806f9370d6fbb1c03fcf57d8798e2a556b9576857651a7806d8af426d9d93628eb050eed205cf5e94b15f6cdb2ff5cc3985c096a6c0b4e999d34d2be83338466ba8472ca857e87c7a17e43b4bfe9a711be471d777a779403e28ea13554e05bea0282d74ae6d25f6b4664f1034c972684d99f77df64b0c9c2a303a654afc2eeac8f7888d0667fdc9f852e4a88d7cf621dd2b5e2bea52d84f7f50fc38b92feea490fb82bc50ddbc2afa77517aa47f19b3b6d849ac208786a8f87247c4edf4e1cc675b6b62bdd8f5b9c11075ef9e960fe37d6ccf9f970bfd35e3c496da217ad67782dceb305e00e725fdec99d5d8c51a75c79d2a43f4a44c0c87714c5d3b83cd81bd2656479e3374f21430d4e4ab04efa6d87ae2e724b62814f2f9aad032779037906b816e5b8f39522f03c6fb41c68ee770fd480d26d568fe119f8498875a7a9e1de4e0922b71edf9c49e88cf421d055b57720ef835c637f1c9b14bce398993a1fba0c0cdd92f8181ce33f9cd726f3a3247e4779cefcbd6b111cbd4af74ce6b13431133d8498051e7d84fe5fbe71c09ec0bf4c69caefef113b1a11e2953bb30b857ea1d029314926bce0e3d85bc1eb1abbeac9116b187096dcd0179d992b95ee0ba0a95c7621f7b7a26df879685450e53bc927754be6bfab0cd316a72fba2c71b5c7ec8ef9af552b357a90b7c2f7a3432ec3b9fe75e595867c985cdeffd8bf3ab2647f5a7f9e0f9dd6675f8ab4a169d4d83a34d479bfd57cde9b558634b62f364dd9ae7d09c94b10c6edda4c47c9d618e1e398fc4379b34735bd6b75e38687c7c5ffcb0136d01e69b454cb50f3c8cae1c9b584055631e412fdc9139d45315ed0be7755650ff7167fc43f677acc55e441bd3fb3a69e6be65b440a9515dcb18df91d736875f77b62f7ae018df32e99e6d556eb0e6f938377aa327d82ad60e6b5c0379d9ed70606a8cb007c84d9cef4b90271dacd1e8ede8b3e79b3c8ec61ea45df4ee4543d6656af97ec383eb714eb157dd369a8417bf794f9dde08fe67c53e0b68ac17e1ccea99d79abccbfda346ef8c55e8ca3258a4e1023614feb5dff8ca0e8f91e1f78723d57c3fe3f79daeefe27c3dea12de6cd267daa4f9615ead47fbfc16737e1873d20f600f873cbf1e634d539f92795f591247f618ef012352373528f0680fa02596e3b90e1a1e0ac48c068f2cf6612876a1cbde0e893d81f975e01353f7be327956478b9fca3a99891d27b09b1a3e938f3ce40b37bad75c67ada00ba43826196b74197fca58b4e8a7e01a2dc3bfed417f94f1a775117feeff81f177fa92e3ae25a75a1146930c710d7414c077502136439c36395ec64b01b84dc635714d09e23fc44803c67609f0aac0ac928b51d6078c0b70bfd65ae248f0f59b3809f1d0da0746069ac913e6f073653e97d48c0b91c79775ac30f8d79a36dec3380e5dc69bf4a97725c676ed81abdb600018dbf137a10eab0eeac8ba8057823bbf62dd40a1df04b83bf183196322be94d7f55313834adccdeb4a6ad8d6c1657cd7a7b6357a792576c671a159f07d67d9a6f7eb945412a3a3a6c1f89d5a484dbc7e0cefe143f4e0979fe3ffcdd33947801e9d3efb1b1887e3fb66fe67e1bd623f296219b3cfcb70fecf8b3fd73f97a3f9ddeab07e5ecef57e359ae7eb5b1fcbbb1a1878712ba7c7b53c2942eae61c43ea767718d7edbac0a8544e4f6dadd260516ad84ad8e058e227f113d9171cc585aad193276b40493f06b8c16ee3df30fe545938031eb6c3f1063fd6e8a84bdc979afa50bf36b8db0ee646e41df9798f3e1ffab67632be8ee11913fbc963e86bd64fdbe15ab67d1b393d37365cf1d0d29738a30a195ba01e11e4a9430d7bb155196c2074967ea82379eeb0ffc8cfc8d85932cf086da609b5f606b0e726bf9058ecd5a3467f001f567c8084fdb4721fd1379db17f0adc3eec9f4a2b605b6af60ea6c82da87ae9f29ae1338b1d866d664cb53caa8165387952faf7a8e5e2385df8ad795aad06cca3306ef33b41be77e53321eafe5907b11979faaae63aa831ed75823c630f543e7ee677c5d7da498cc6fb4bbc5066cedb35beb19cb74eeb185a9fbc8fa9a909c8f580c30ffe96027779d64b2aa7637c1c87d8a209de0f5de0c92ad5c5f3e8713fbed3c57a2ad7053fdd82a688c9bb94122f727d8256b6c55843eed12433f1c227e5e9bd9b8ff4ae07d1cbb497d57f93bfc7b9cedfb3fc1d7f8faf3a892ddf6d7879f4d6e904d15a9147193c8259532342ff1eb9275bf30e9bbcd1dd6a34eeac6ef6f79a06703573971ff5ced9d77b9ec6d77be746d7f513b006ff483ae85112bf2e06167ca1d983d9255fed52fe2fd7f9fe5991bbac13b95eedbb5e3dcfa74fd044c4b192179e17efd4637c498d245927c24556aad189fc2fd0ecf4db6a129143c9d29bd5625e25f17893d8cf5fd296b4abf1cd9f883395391d67caca7a914b6ce8ff104798af8749f7ad360efecfa7e67f19ebfe0936e8cf731aa5c989d911b852f57310a94cc6ae3a60dc75c105f6a9636e59adecdeadeef5b6ee35806e38b4e35ff3d2795ddf9d7f960652f7373cdb16fa976df4597656ae5784ae3aaa43065fc6fc9fa91d7a9dcba637e90ff155d55b0c978a866ffa19c62d744fe1df022b168e3c9bb9b506470e2c5f27c863db77efee502f074eafdff035495c6f07f9a4a646edc646dc671b5d1cf441a2b6df61bec547ad3c6cdb2f60eac337ddb00f6d9545cea8f7f6cf68fe5f1db7512473697c3197a69f3597ec6b73e9f51c462f59edbbeb1cf937ac01a6277a062d2da3db1a373a5bbfd5e182dedde1556fcba5c657dde8b48227fd4d6f82d936da609f3356a787fdf37a34af6e63f55a2fb1775ae77b1f391f6820ed179fa58bb1de5a8d96ddd160660cf700f009a7d5e0729ff833eb67e2c85067b0f8b9e91bde02cff2ddb5e18fdb90b790f86af171d9970f3c524c0de986ab193dfd3e6b5cf55c41372f1a3ff37f6008aaf6f834c43dea7131ae928771ef36deaef9ac53b15f7e384cac477956d0c6cc9cbfe9ab56d77dd5e9755f7566a12686dc16f5710d4f0eb05c1631b243456df1b91f3efcd46adbb77fa3656707d1587c5f7bd696bfc6d8a8d8de7f3be7bbbd61bebe9f6f565f33efdd2676ae14b407b5abb6c009214fe8bbf30f790fc2916a62e6f235e78155bef12b3b41beab80e502cf25ea39b6a9399dc281730abdac9ee771a1dc8d8236b1f8c2e83dc9eaa4724ee047653de944ed72e7148a0f5a390ef5603cea41bb437535ef323aa1c72b885af2815d1d53e5263dac6f98fd2b381e79f6d07ba4f6a3d19fb4ac77fbb6e0beadd6f9386f6c8f621e46d623f1939ea01d09ad400d2dd30b2db185eef2b8e8eb241fdd51bde46cb49a415fc656bbac847648e4d941347d734c684a9df7adc9d721e77e3b279ed43ea9bf1f2c1bf7ea07f4ea16aafb538b4f67ced3c131a155bfb1c3eb6b7b35cfbd72e60ebfad8077816636733d674e7a9f5c98c82faa42e563a5c0cbbaf755f753d6d4e8f1e1e7198b1adb9dcd6a74abbfbfcf2dcb3d9f43b74e1d328e0d6a0dbddbe7bb1bb3ef8d7d048e32a63e3e755065cc1cc30178c23096253ea74ff79bb10ccdf2cc596f2d7be60eed6b7e23c7edda570f3c0fe607f497c66fafd70a22e87a34e7af2fb43bb98f7354ce5b4f6a3f939804f58c99d868fe0635e83b722d17c775826863b45fc79c1b15b46df119991b9f61876f36f75adc3127af90d1c6337ee03fabc737b32cf2a3644588de6b457c9275ea99fe5e8b78bbf513630368801dd193d0ba26b2cfc1b3100feb7834fd9a7a48ad6383b11ffecd9c87ba9ef3b07e9f3fdca0ee81f8e2c74fad077df1e33fe6ceba4f646c5af37c296b72e5bbcb45480c5247936fccf89343ea032fb22aa9c815e2b3ffb6037c04783ffca3b2c117f61444c345f8f0f328cf89dc2343ee5bc8fabf698e5552e3427ce8e1073c67fb0f384bf6f8fecb3a307e520f49f938c077dadab65fe98f69952cf65f3347deba0f9431aa665ff5abfc59fa2a776651db1eb9b60b0d7be4dd54a68ccf78319e32339e32f5a05ec6167037dec5f3ef9b7129fbc57743af5f871a72e8f1ae890f2286831a85b1935616fb0b5dd9873e52679e7b8ef881e46c9ac8baed18fe581b98338c3d8f3a459565f022fe5141232675a8dba5c83f1b67f8eef7171df92b1a97de1b4de54fd25e6d571f9a250feb2fcb51d662ac778953f7ac2057d56a00fe822ac8954d8d4c552877fa046d05f28d1ff5817509ea874c32e01cebc9113ee7cce990ff33b57cc4e0a91544da57d1f439c8d30a3d110f122b393571387e15915b290be3ac5ee74b3957071a8c328e1727d8f2990bfdaa1ef28b0b450e85cae90533c7094c0fee7a6b153a5f3f13238dfed53a7233e612a3f913afd9a9d93b397f0af2beb542af85470c28fb684d6fc2505d6a71f8975a1cb2e6800fc2e371a0333d141fb62d060e63f4a61ff786ff18f75a62d1845a660fe0e92a837cf80c3bb2cbc0a5cd718b35963d2a33ab0807e4a5850f102b075ceec071a98cb8b33803cf2cf2d36f9e25741ed127d123576c9c699c77fe1ce4ca79e11d4d31ae88b96bc699f53257b6e091e738b44fc085a94556e8c589b9ef457664afc90ebd78e1e2ddfc79c2b922e0c1bad0dba2be4f3d13df5beec9accf7b23f3244fc1eba1dc0979a52ae8fb94e01cc767adb6f88ed972a1f78f0f775634faab58565f72bcb6c308a18742153a3e012fd48c1f191ba66687da0771be7345dd8f13ec27fab980f701a693c7012e123eaecc83dae4b56df65d290bbe46d5af1fcf7e4b72e1b7c046d7f3fcd539bfb166e99f80657ae1c67bf141649e2db252dd2726861fb207cdf8a98ddf027fe8cccf2b7eb0f6598bf2ca9775fb4fd6a65da6edcc5ee763e6f4a344fe6ff271df22e4fbef9e347363f27bc4f739bde4fd5ac67c87f971d55dcaebeec697f2919f9c147a010ed02eb5940c5f6294357d1826279074c81f9a52d30cbd09f1311c380eb7e751c33b018c327ad7c8d34dad26f0e575f5655fdcd6e930efa0c0674a1ea4b466cfb5072d6ec697c0c672fdde8aed177f005c6e9d14bc01e911dc7ef2f999d50df2794e0d1f703bd5e1ccb2832815bbd9bc0fff542fde71439d7cb7f91fbc4cbcd681d5b9a8a95becc96aaeb75f996d2bc8515b3f11d70bbd9d8ef95d1672b62fef993a835f28d737dbf2394b8ed1322e1cff5a8f86d632da9da6a3f98ff430dfa796ced7371bffd6c677697713f88acc4bc978d85fea1d3b7c7f77d4ac53da7876b22df6ac22778bda3abd15b857c03b6a83b7bfd98fda66023ffcfcfe8cfbbe1f2c992bb606af866f4f64ce45b1c4893d33f64ed03a1f2685aec187d7d55bf40bb3bf3787eeaca901f4c95d3640cfa0452c938caff94657ce49b969d6bc727ef781ab27de29ad5f5e310f8eba02d798f81cd6cae81092b760ef9ef9f67259a77c998b8c3fb1add893bc756ad36f0b3e06681e6d9d5a43c325b112fcd62c33fd8efcad03ab044ebfb5ddffcb4a1ea6fb68343f7cd1dea596e3de63af7aa49546bf745aa808fda40efacbf394fcd5837e8f7ae69302e346fc6ab161076538eeb2ae8c0bda5af0ab9ca8d133e9b22fae8fbcee0cdf5fe78617035c2ff83c7b32646d018f76e8ee9f2f38382b72b0fbe24377244ed45887e21e7bd4a14968a166310336af23f12f721451427c76a3e9e742cf96e3371f2e549416e142f1faa1e386fe75f8408c4126a60f5e2b5d3925f99b54f59d9cb45690f7bbf31c35648b3dd8b19993de699e278572f7d0ca353a6f1df208181ed87c27fe56d5f43a6a571d9bfdeb5ce62bfbf999d7dc65ba420f71c7775399933dd545dfd949631d9b5841d4ecff9c39131ff63f1eefbf664f776bfed828863f044cd3ac5f4283df5dbb6257c91911dbd420737a8d46645a2bf4f8e9cab1f4a0df65af91b6b9f68fa9edec8253c1311cd43d7250c745180d6b700ea08f74529337d8e9a97952aad1c962dfeea4d02e6201f43ef9ae572632be2389379a5793db9b39b6dab227ddd8746a3053bfc3c23c83dea257183e08e47bb4bbe6bc476d5241d72d7c48e0fb60bed5e0dee992876a726c7ad642ccaba434e7620f3239a1bab88f03339ff30c79214d0ede1372aee06bc35cacc84befb3777ed11c17b10273ac5b1373e53ebfb7c88ec64ec97559669e5be4cb4a2bce6d9fd8a3b675257bd359df4ff7e95e9f968bf9ee1663bc8b313abe3b3435dee542a1de024d641b1ac67cb6e4e0c3f39aa0c7dbf4d334fa1967cea137e3f60ebe12b941f04aae77e07fc1d718b217b6c7350cfdb9bdb49ee0f9cbb6efee37f041a249d6bcf218293e8ffef0fc955e6ecdbec3fe91b6d9ab6183bbaad9169b4dde79f08d63ce1f9b6dbcdf85fe4dadb6566706deb1f9067c34e459c32baf419df51e3572b2a6b77ddb377c0baad198eee9cab29248d61ec6747c35f3be42af7e2d733c828febcbdc291fd133baffb6c25ad2671fa4ab73e40fe45cf9aebc5cb31bce43f201f8a6377ec2fc469452a76f01ad2a89b36ad6031c87f1cf0e1a8f5c2bc5f7dbdfe1ba81bfe2abe1e9cf54a40d27dc8439b05c9ec52e538b4c6c14742bb5f193c3879f128376c90be35913d8cd098fd9f89551668e69c9318ff25b03fadd72dca35a8033b1d6c0d6a4d09b5411703946377b5784d1c65562abd197da37b1c2c4c67396e766a36e4a5de1adc405f0256ada42af50f9fe19dc5cace9349c7d72de6ecb5c5eb41aed77cb07fdb4eaa6b775fb8af65a789f382bf092c8ba3afdb68a76471dffc35887cfaf7f45ebfbf1e671b17e5a8fe65f5327ba358e70e92bfb3a7ee1036cdd077dbd9bdf3cd33b5f75a09b69eb51269f7d523f12ebd11d2f42600da74f6affeefdb6bcbfd1fa7e7fe352b8aa0f1ed7861b0d3d3db266686875ec247e637f81ab643d7034fd0bda63e44632f1014bc307061ca5acf52bf8d2c0587623e08b650d57b2066ce0578a0fdcbcb24fac0cf28c7c8839746a2af4dda0f70bfc5e85c6fa3937f1a4ac51f38d22df6f767e3d1fabefe05a0ee2e3ef6cd62977dd84fa8cf0cff9da70add26f0e47a72eeabea81d35c79f64e757fa465cf3b68e0d5ccbcc61eced41df1cf189aef7cf9aba51b2fe598fe2af2d4e26a7846be9803b02780ae7d4f46dfc618f5ff9b6c72f7ccb05ffc77a4531f24e0af9e7f9556c91f82fccd191ab4ad5531b79aab6714177fd733dd24fb73ebddff6a2bcee9fde5df44f7b9fd53f7d9da321129fce053efc7adf2af1664fd0adf8e3f1075c463973f78b70e0742272b4956a8bbc58877a971af5af209f3f8b9f0f9f3e3e95e4726b5b0bd0ddc78769fe385cfe5c8ee6371cecbbe783b8e049fccc95db60c1b4ad769933cff7069f8afe4b5913d83b32673fe73b4dd3189c2257b54a0d7652de3398c1beec7f52d1f42a9e708d1ccdfc590ffad67a6b95ca3e1d65fbfbce2237b725631318595b456db91da79ba5b5dc24f6bcbe8d8f6bbc07bbde354d89863bf65253229c917f4b79eaac616ffe2eff2fd55e5d6adc37e7b8cc3158cc71f48f61c3b91465c7f05e35db5938b0a04bc39a0f346a8ecd36debf470ead1344fb3cc8b3da683593bb163977f45c76e2dab3c9179b9193067a379e457e48f95de0d7eba4d5f97bd919e36074f4d448d1760e785cf2d402a75206f93c0ac19d8d6b34c74fc1e54a0dfb9deceb9aef9c3974d503af9ff56965386dfbe4ef652ec8669c0ede33e4514217bf15be19fb5553c7602f3a8dfe65db1ed3f968eedcf4fa3ec6cc189d522702eed0f85ed13017ff1a5abab9df25df682ce3be50795ca85c7cf6a4d0ae5fe018f1a952e0e1eacb3ce8a127105abc492f98395dc3a760f8464dee10f8128ffe9e75aa39af32679dfb45e86a459e478f7d355bc769fab03ef031aa953b396a2feba0463be897e14819dbde6f349c309781379c399d907c7a85aa13a31b0c5ec69ec122da01fa192699e1ff11bfbb2bbecaa36bae4fae015cc9e385f8e4617cea05b92ffe4d5b4c62fc389a57abc55ff57a34b4260f736bf535b1002d7244e0165d68f651b14e3f3339d3481d554775883f410dcf5ee7863b4a6209b13fc8c7aaae8c1de61cbd02cfb2667cc97e40bf08a3f54245fb27d44d2aa747bcaa8ff7104b21372871ddb8465c05bd905d467e6fab9a11032e716d1ee44915cc8cce0bc63d7c87ca7045b2d6035cef0ef54272534dbfad6696edbbd4580d513bc23ae0688c6b704c5911d633cdfb015c59e3cb7847f5a08c6fd3a70ebb7d2ac49603870e8d0f1c877a335bb3bd75ac196b540e6bbd53e221f3e133353cb32c040e33b6570370a75441ae9f54e5d80ac797fbab7df0e9f1f3c790bd1ce87bd433a70e1727f2118b8f568fe51e3bcc07207fde55c471b6cdb5c68f8bce7e351a9e52fb6bf2f1b7cbb526e41191b110a39fdbf053e3d5e4e24d8de321b1a9e3e85397239f0233c2759bb81cf13dcc3ed3c370c73a09ebe58d4612f979c179b9313e94cccb7d0e9e5dd452ac923c9b1327883c999f27fa6dd9552db07060b4c0707dfc4ef3677a989c4ff2d15afa22fbe3f2c197dff615ed791b5fe4489ea6546c81aca716e2bb795286c8c92e9f0272935c7eeedb2af26bfa8c0974d4810d01c775063d47e6f3c0bfdb68a15421def7ce9a13ac4d930398bca0197c05ddf41cc967c03595107b969bbc1c3052d41da29e0df80f1ca3b762f851631e0b7d473eb844a17981ebd31b9967a883d69939a6c3e38e94e174f11afd8a4af39a586303c6c6038e929a49137ee65e15f8fde2a34337a2df4b2ae0e94f580390db041f7ca91ea02d0f5d040d0cd10e1a992a4fb04d8c0178bb6d9cabf60bf4a4c0eeef3a13f0d61a0c015e8dfe19b46cb212f704f705f1858dd89bb9d21efd2f0b581af3fb7ae0e8cee91b6ab34d3c90d88b9d13e47da39f26d739241e9f5afcd4c1c863a343ba031f12fdd5b862fc24eba5e188ad7da31595d027c4fad72f53f053a00e5801cf03cc94f8ba99f1117de808697092a7f025f4d6a9ff7ff6dead396deccd1efe4a3a917afb5241c211c5de2a8c04167706520201766a0c8da44fffd65eebd90227b8bbd378e6ff1b8f2f5210034248fbf01cd6817838d48dcdf31a985ad6936bc6ce0a7d736ad12ea9c90f4ddbc45b3681a39a007138747967f0c03e2ad1dd85ee137ac1c1494f821a7912ee271edb94f7b5c5b5cb94edef1e75bb6a45f7bf11ec05f484797d126abc53af83d70763a6a4b700fd41388ee039927b185b77263e57ad6857b5d6af42eea5f98e9a7eb0a578ef99df6d7f73223eafd396d7c2e413c0d554f44e428ed1b39845fa9ecc5bdef784b96b66c6e8b4b2de2176ae28f181e6f96eed986a475c03d83b00c63e77c4ffa0417f9e1c3c93639839df8a5702b5b6a0d94dbf10f15501ee7724734ab8201867380f687e6e8f69561c3026d1b750f05e2276061e29b5ac01418aeb2f7357b071b806c065c2e3c127e731e67ce1df8faa5a55c4c504b539466ae679843e7e031c0dfbe5e2615b8867cc92383a1c17f19ccb7550fc06f9dcece1bd15e263d6be4caca9e8cbe2ebfef93da30abd1b4ff808b8e63c5661bffba85bd1ffb7e7f5a0b8c68ab63e7fcbbaa2cf26f582a8d18fef73658d841e1fcfb90cce78a0047174faa0e0cf8798b8050fcec4b4b82e1a396ac9b5846b3e7f1ff898db86f5c0ad039d1a6209eddec0df38b1c7316b307150cc6797e42065c0601c5362e2e1299ff403e8de302e07eea366be99b74b7810043ec691787709d6093862faf92066c7b539fbd9c50db135f67e9bf819e39a7318cfa1b713700d58b7233b1730aeb107715da45eb7677d97782ea58c5f993313aba5adc82bf40b60b5c4cbf2a8e8695ce31fb19dd0f7462dd4ec4be678b34b6d708575dfe4059297349ca7c01f1fb82e95b85698375ccfdcb40f3da040f1ef8deee33b1d8cc349e0615fe5b573a9939e07c8e7aa6d6f09dc8ed94f80dfc139aee0513878861fc4cdf524c4709fb5d7abb5d7a226ce667b39e61c8e6fb3e6c1eb8b7bce0c5ee001392a65e7c52d3e5741d104d45ea767c2d1ac23660cc91a0a9c21632dbe0e8f3ff0a4ccbc497cf1cb6bd9cb8dedfee6c8dc74c83f35afd9b9941fec5aab80efa48f07cf39665c87df00bca439be4f5eab78ac3436ae5b020f87e3801f3b3ec83a5bd3831073dbea8cf23dd28310fd2c5963128963c6beec4d816e02ae45c02b39e28f823a9b8d71e95d823d30119ca7991f65cb798ff5b3f7887c6b4d7c15e635f8653d602f2788814e38fe463c59da12731bf114cfa506fe0a715a2eeb906a4d3c83bf4123106b4a533481c71e9f787666053169a8cf072df7ffb16059c78c13da84fe2f886f81d36db89ecabe8b7835112fa431e378334e10bfab00f70ef514d6f8b489e330ae4af31bdb8989e3dba187b1e394fea8da55cc61e127e3f03bb7b2ff9ad8045e918c2f4c7cd9f239e3c931e343e0ded0e3c47aa53726c6c0233d84fbc0f25acf1e5c5f4d1d0387d73817dfc7d2e930fac09bf31e320ece658f718e69179f25dcc7fa766c265d6e43df892e1669f99de01ef2fee2bdb8e772df30b61be0ffb35dd70343bd0d5e3ac0c3316ee0b56fcc75d1edf2980a16589b7db95d020baf3a5f9ea0a73756ff6a6cee4f0d7d86c68e8bed81188a58c65262c6528fbea0258f83b9646206ec29ad78637ab8beec17732e99f544bc3ec5d32ae0b54b7af6daf13bb00e048ced4aee57929f716f42eee7eba71fc05c309ebfffdf966356369e670c8ccf36e7785f99fdf2246b97dc8771fd6bce795f492c52cbda5a934b613e77df767131efc909790cf1a1263e154ca899fb8316bf17fb3ec6410ff19c894bf07c6cd68b1362aa8df92e65d69ba38e76cff08f25ffafa6e7121ee973c5b8a5eef69dffa4bcf39bba9a6f724d2902beb6f518bfe40dd79f658bbc1db1958977cc9a66ce256ff91c18f95a70c1cc47db82e708fd05f89d1f53e4af268f1ab78cdb73c9031123d572ed1bc9531df1e36af09b115b81b72f3e5b8a6b7023fb6d3ff0b9de16bc77592c1e8bbb4a7a2d27c67e36772aba758a73033d19c7ee8b5a628502d75ad1d3b6551dbfade31141f32746ef9098e3e2fc9bab71b70681b364d626b38e788a9ed1d512ebb7ac4de4f26d10279838d3e4f10db9da79c0dfff1f996bbe43fc3afcb0ba2cb7d5c3e332fd5640eb4c6dc2665aadc9799f759cf8836a42171ecee465026708ce277ae317b96cb52456b1d36c096a054d65faa9ea6815a92a640c40efa2923dc531fd1bf11c18f846d65e330e1cbb1e9938d28c5f853eca98beeed1b0b2738e7b183c8c7a17deaf8e9a9df8c87dbc2187b56888f12f2c07c1e4ae82e72ab07f2ad69d1c7a90e5acd388f60b7b4863bf68c08522be6273f1bbf1fcfe4b46df286ac86d4fd0f1002680fc457a0347c3af26fed4912aeda3702b2ccfc061cfec921382f91cb067a12496cfd1034c33d1ce213fbc113c44c74f41dfdb9e937862abea6b452d3b70517c62ded4813c11f4ea9a94fa530de3e6ad475da8e10b6b79614ff6859ab124f2e806de8ce29f3baab6b7fa6fa0b7b5fc98da3537e11a581fe53efbd877ccdc7dd6a2493bcac6c090a9a7825a314fe07507e4e798d86bf82231f999d38a753ea7361efa59cea56ed18be01a38aeb6b1d9ab3db509eda3eda38193abefa071203e84d03732f1572f8976a8f3126bb8c5b8863f19e681d3833edfc6e6acf08a13bfe7ad4fdff881e505b5ccc18be69db84f37ee377f1c8b59fd63f56dfbb9df5cf1a5545b25ba05c0c59e9f67c3f6dcdbbcfcc71e6712b1bf99b731e2467e262939c663723e33cd750c799dc929716f037091f97a7bc94d3e73968b1af87b68383bb560f16bfa60c6adf92ed67f13b3469ae3242ad31ee2699f9c53ed952ee239ee1bad62dddaa3bf79584fe099b52247c32b3d933b15ecc19873b2b119b0fee6bdab8d53b397bb35df075c06b86a9eb2bcf68071e1f8c83aaef9dbb6856e1eb9f1b576ca1a35cd5979d62edf601d47de487f65b3df815300cd3ffbdd8fd05b907caa2f5ebac044a08edf339fb911d7d914b35e3bdfffd17c7ac05dd1b1df84754a5dd1605add3fabedc917ed6e47b4b9a153a4bf15c1350f82f41bf5bf17a2db448dafa137cacc677e90777667e2bc39f8406f78c098bde4d6fbec2ef69f58945fd6c226acb50fce31bc22b08e34a10badeaeceb4ce765fb7d0f5c488dbd7c0fad6c734fec63837bf7044dea9e89d7158e772fdad4bb847ad9e352f4696bea68032372d01be8d7c3276b0a5dbafb99687adfaadd367b9cddef3ebdf9feda831ffb59350edee07ffcb6b7d3559d6313f3f5a1abe9083fcc1b6571bde83bf6ff56d32c10ef29ab797c402cd696f004a5a7de94711f3178b5764ef0db7b844f8fc33a8dc9e56eed37ed77dbf9ec8fa830b1fe7e70b7dcff71fca01a3937c451c0851d75b4ee30a1affc3db7bfcd4dbaea97b3da30f65a883e0df6a36c009c30ff4fbdea51b5ec4dab5763a81d5545ef8df9513d3e0cabc5ddf4da6facba399d7d95d7754fee53ad063ff1ee6ef06023bf69dcb2d75bb24746bd0f6a1ab2461ae8d96ffbee79f6d8d3cacc0ff1ddbb35afe0bcc8567783cde2ee63eea73772f5fe5bfdf0be6fcd9a199bf5fa191a38d491006f64542ddb0c5e8b65236ba989a7a11b050c70bb7b01fe93fa394d9a9f02f682cba3be33cfa9b7a0a833dc52830f7a148d02b6bf3cc877027b8a63b5d47e4aa14d7fe99f7acbbe3df5c7de1f87f9d367ee7a255e735755ec3c46716f5a4d13680065cb52f3de347a5af8bc0fe46ea2be493db2463f14cd047a78534f7c26ccb84c446718becae6730bb3e756f941c765cffc0d1c3af9fcf73de2828be3c5eda89ac213c5aced26debff80e791f3c89c0e1307f470cd850fb5af4febd2bc7ecce43b8a68835718e9c073e316a2bf107b2e708be4aad67ddefe1ef7b82670bb5899f8a5f8ef95e63767937a83e689c704b1ed98a8fcab3ca7636a7108fbaa9a763dc3fab1b012f29fdad0017629115a5fa561cf45dd95b55f7cfa3ec563f88f98fb9d7dbadbedd7feadc5ed506a1df8d72a1c71288dfcd5bfcafb73460ded00b79d3efa69744d34a59cc34fb7d816a4c0c73df8af765a9fb8e9744e303ebaf653bca8a83f0175d70c6368e63f5674dbe815e68066e91974e9c2089e6adf00abc043a9b61806357db129aa5678f89e0766fbb79b3bc1b1c3f39643f7b7f01775bea58358afc2813cff823f8ead26b107a8f337560fd12f710781c45ada81e792cb16074d02b66bfad1a3b23e1169bf74cab5830d1b94f1e6c5c920f13e36f560b96fc5bf86e9e943cd7ecd59d101bc19fcb9cdb16e70e7eb0f4a8f1bdc45aa23f2163dc62c23dea8c6f7ba36cf085f1a1f9ad85994f8dc5a6a4d0332ea8b797a903e3ffb825876b5b32ce37bf2f7746c431d5ca2d804f28da04186ddd42bb457042e61acafbc09553d0402127c89cdbb8b4dfb122d6cabb41bb9c7a6759784c336801603e61feed815d68a8f928583e7a11088610d8e692bd4560dcc86336f7363e810fa8ee4ee4a142275b491c1cdcaa11f5506c07eeeaeefffb8c2f7ff6a068429f759444b886bb9751b534f1613baa86e6b9e8c1ec543a09fd49b402265bf8851ebd8da14f5b6b709c0b97319636e3bfa177727c64cf25e965d02442df0258f2b386727154d50e7a27e6b551b534af1da9cb338818cb15e63b6bf66a025735662d296dafefbcfe63cd37ebffbabde09895e99d6aa81b1452af54743899639b638497feaaae602189a5c94ac16f9abc0b7891dae441c48c4c5f889fd289cad0ab77475971245f3bace9adb1446fdc1c23cdcb86b5aef2a8cdb568024f3bca7c570bdffd4de069fec6d6c4b63c7f70eb5ae25fc283e845f7b0273e29fbdcec891ef653ec8166df9b0bcf00b81fe07d52e2835bea3aad6edcf7569bb157ffb99add7ffa4a5ff111607d665e99fbc1f8687c4c2d8e02fe0063ae9ddee9a82e7424d0839e29707fa9d160c67f29980aabe19098fb2adcfbc27ded850f6f15d977128e19ccb5656f948dcd583f516b57be0f638bbe483a831e7b8f9ed4217088a291d1237f75ecea26b48fd6b780fb3cf3bb28e55e449c257e67e10083d2429f52742814b128c096c5b2a7c4f21c9e7732de19b3e90dc6f333f029e2e19f50e716befd23e2bb89ede36f838e648a5eaef9dbf89866f34861de4177dd35b103d631c62572bfee6f9e139359af2a66bdedfc4157f359efd38bee97b921ba11d0a3b3fae6d48d006eab45fc17bcc25451cba254157c835b78f86fc1bfaf1f23e813d5e85d6d1cd44e579532f7fb059e73d9ba129cb4cf5ea5191f63d11618530b1ad869477c0330479c65e3509fb9dd9af963fd1b1d8c3fccada583fa5d1338f0f237f1dd00d876f7311a22e781df613f0854ae7ccec5e5916bf316fa307a139273385327f234e28bf5bb28f593f26cde62d677c1a834c4ce24357a26597e508d891be3de147ae9531b7ff2daeccb8362cd86fb6813f8c4b491b7263cb5fae27af3dab7b7e6dfabcde461f8637e376d0b6ffa517b2ab7d44a5cfa7cc70e7aa70fc04935f0d7cebe9a31ed5f780dd30308fd52e0e51dc6da61cdb82a447f4dd36f497c2a8497c83ce6fa1cdac367839c970a73513e5b9697182de03e640ff9be754483d1cce32d3426752b1ae9ed4e69ea217bfc7eccf516eb7f14b6dfb7c0e6b9d4a7a41e45777e9b50f628fb5d1dfeebe671987bebf5fcb38771ad2745eedeece44a2eec4ea2a459f4e1438d3a5d7a57b6c81332ed29ff874efba1b3407d069eefb5ba2b836985f1a9cc6b661d4ea2f8348956d62bfef61c6ea7ddc5bef71967fe720f0baee9fd20d077a78bb5db6ac4bfda57c135a65725f3a86eefdc3a35f74a7af48b6fe09705729f317d01b229f7ea48d606f2a2bbb5867395d8691d8501fcd82741c0de645ceb7fb8e7c8de7582efa08fba7d4bbf61c77d9d0785e7dc47f220ec9988158b83dd474d9e2475418f3913bc116b75a7b897a2ee3496df62d6dafbd63eb7b180bd7ee6b95cdf5203d300fd2013379a716e724c57d6d503fc2dc0619effd318e7b67ead37cc57deee057ad81f73afbd498727cda8b3afaba2413ecefa52ad449b4978938e3263017f472c562bf4d7925265eb6755615f6e64be38177bb2467d3152f43aa9a60a18e46c895c43a18f1a37ccdf62e112c48eeccfee77c6021e35d54362482ff1c48de32f8123b638f9f046dda6bcd555f821f7c35bf1c2dab178e1a5c9117ad4d6005eb8a2a72afe4f4f85bec574431364a6aaaf2fe090983cfb5bd19067e6588d1917be3526be99382ee371d5f192e94b3c3ea0bf9fe9966be416752e45fd03d1f9437dfb98465be989e42d7d92d0572157b235e3ce6a810393e5a692f7eb56305ad0fe8f4fa3ec464ddd7cb09dc74377e9ed8ef307fd3179fb37e06ab13764d36edd40cfda2b9bd5c6691f3b1dc4f8a0f3129eaae8cbedcb7a55cd9fd30770289c55a545a76e9068f648dd5585bdc7253766fe020e8c57d666ef52fbd3516fc27642afeb1b7a380aebde08fe4cc4f362bd03ee539be7f23bf43b8ca1facfc21be0b5f1acfe9875935bf0d9fdb05e55ba8b89ccf311341acb83720be731d23335132dcd3e7c422fb04916ab37140f9ab019d1cfdee293bade6d1299b82f3639668f6b58d88c4d9c9929ee65cd856edd4cd14b0731146acfae865f7f71644f2da157ef04fe8da23f50c09b1cb1541552dfbb419cc6b86ae34027615ac5b5d95f47d5d0d6031bd642e0dbd868f479a169cafe2179732e34e7b8be99f8aa1e55eb88f968d2a0fed2277f27816664a749e0d3db2b2ecd5a7c63bef2757e77af169e5ef3b5cf58ecf51eab4afd54b4e7da146b11661d9944eb593a2bdb2971e607fa240d2395b166abad97aed46c8919f869dc016ffa7be32e35e303fdcd7bd14b1c56ba1f80ab9962ec25e8b3a6f237ea34a0de4caf48f8fe8635637aea4c40576562c6207596d2be83d7c7d04c057fdba73633b8a0b762e9cc989b2cbcc1c7f45bbb71dd048e985c83966be7f019e3ceac2f19d654c6f019fc0f9a55b5133feeb1fc3ff62611c686cdf51c5b83462e2d3e37fc8c798f89e5e17773b367f778b66a1e67da5d7c33f7f0b386f5bafe312ed359e95ec3cf4ee8ab683de04bf1802fd583baf41cb821364ac02557d17c96de5dc1c4efc1656852f2c1854b1a8a47636c3dfc44b360499d5ef82b40ebd057d4c3beac832ac53dd857d3a2d771b02c8e7813361370cce7a20f61f54ba08dd45277c839ea48bf4017a22a7b9d2e4d15438f30659fc263fd256e3bad942c64afe24e75381c459e5e2d381a688c2cc0dba3ae0c7449b24ec3a5a7bc18186372c6138b6b6fe8e369d6ebc10bf583c65677c8133eb03386de8689451539ef2686863e92b987b12bd89f96fd52e84b1d153d805c130ba7d49b7144cbd3a79e49d0ead99573c2b920f7476f56773a8085e86a8c8fe94c51b787b5839ade40213d8fa0bf72d6b5101ea3f476cdb59ebf8ca8a58d9e67a75388cf6ddb22e3b9e03a5a6ef3069a03cda852f582e783f390f3f146d5f6a8ef14c61ff4a670dd7347b48b02b52fa1e756502be4a88059823fb043fd1ae8d49fa8130ccd24977ef5f033a29fe103747c0f17af41bb57b4fea8b173f67da217f1b71fdadca39438790f1e50d4be132d71dddae709fc4642d125190b87d03e77c473640cbd1e8d7108cf42e83f88d68e7bd63a19bee01e4f2c8fb4149daf6d8b6b9f97b5828702fae3a5ed8fa3de372882c768ea81e33e130d41fa388b7e14f021aed5fd493b6d31dc7be20ca371090fc54d508b1fa3a71ae83d882f84d3f9428cb2ce17a23dffffec4741df88d75e133f7b5688f7c48dfb4cede47b134f7cee313fe3de80bf00666ffe5a8b600fddd780b11c1ea9d96a6bf09ba0a7ef4eb568613ad06d6a13ae27edb2f30d112d9393edd169706f133307bc47e4f0d00a6e38c6ac8ed7f8a8b22df5f4bd8befc855c0f72c8fd44808651d57c05fa84de84da2b816aee76961eb55e0f926d40947dea88e9a1a9f0dfdf397ac59d14b941aab67ed27e87e8aa61ad78f89f5161d5b8f8a631a9587b3b665e2645c57b9aeef1534c552fb797aa738f25bcd3ae4acaa297525664a302c09f64fb5c1da227d0885dfaabaf52871585ba3debdc4f3d091d54ed9dc5a771f3fdc1f3e64cc7da38f54fa50d4e8e190ab526b600ca71e389b7959eb41d19b409fbe28d3bff08a3a7f2e3eea59d94cabd8656fd1e26ff383c47607138b7cdf3b07ac938cf7b13e3e46c399426c6ed67b13db8f8f5cdbe1357540ef0bbe0f61bdaaa689ca563ccf59594fc9c139825b626233fe0d7dd2d5c671af7a5fdd3ea69ce57ec03cef497daec73f71ef881f8e1dd1b36ba4e67d542df7c3b4df690735d006ce12c61f5893801b73d45e41d7d87a4512ebb084ae93da046efa4dc9b1acb74e2238f4d22dc0adc37adad5c388c52979ecadaaa90342ce42029e133c4f44434491eb49edea9a1e2766cfd06be86c5671691f254e76a88191580d2aabdd788097256220f4339dd41c975a853ee33973ae8867ddf4ce6ae5415fb5edb4d8f85cae97d5552e5ce2f4baeff44d1cd379c54f029fdac9e84104cb16da92a2491d8a6e53e9164de050c7b26c6dff9778c7b881ff9fd95b4d3e6ef694bb13f5a44cdc64626ce8646e8f2931258caf10efc6a25dbea5d657abe8e9493ffbd69c4b0acc2eaebdd5a8f295a7acde2cbdbc3bdd496a89038bbe094c3ed240c3355abf480c7ae0674bc9231047faca7e36a3a63a308cc46af6c031b0d781f7daa53639b43671cf47cc0970fda891005ca233aa14f5285be116886eb496f14d1f9c692b5ab5a2419ffbe6f7621da5470178d2c805a91f4f1d6cc40a63720eb2dd1a6b9ac963eca3e4401adee956ab09ba3441217e4ed4015eb656539dde3e73eb0f1eb0964b7ff11471c4f2229665ac4b6e85f545bbe69326b12ee3e3ee18f83f636ad17adc42771fdab09178aef7adfe98c94bc1db685123440c8fba6073d60f5f8a46bbe8760b6f16391578b4d4a93173c18ce5d46a8873eeb582336dccf595bc3890fbc11a63141323080fc371bd443f903d3c9d29790d58c49a796c7954c45fb9d08064cfb8255e3e6f8813448cd632df53a2433e0ea8616cc686c9550bead976f8aea4d35fd6d02dc698875e2735a1b7c436a066b0edd91a82a6f622bdc5facc8110734ea03fe9e9bed5784fa8174eef25d176977caee974663deceb7dd10dae945db35bc4a6b2162296e47c6e3057a10301df2787eb3afa01d0c9b33c1fccef26accddca72ef358fee6d4e0a8b5f4ab52ec61d4d6c35813df420d57706c706dac3e26f4c15847366b64e0514b74cbb1bc09cd6fa9396fadb665525b4f0568f6f643cc5b72756cbeafd0435637f75e87ebf9ddea63f21b6fd1a743ffab74561562c603f587c6a5caa6cffa1be3d251764b5f340457454f0be70d1da3e60d1e658bba6446cea4f99bedc7adaab8bea6aba4b279257dbc927dbcb01965c3593abb5273a44f46a906f05f37b1f341ed0afffbde3173c47cf74ceaa5bf7ecf356d827de99af3ba4557c37a5717fe4ec61338dffcccd3d0feed7883a7b0cd893dbb4751139efaf29283b6cc1751076ae9fd317680cbe0df8f3ad2ac176fa8df9c022b61debf6db816ec662a5b43e7f0ace3213ae0d8cf3bbd631313f46eece7f48bd961b77cdac58fb3de8fc57ef99903fc9203e4c21b8176762b7bbcd504aeb99e6f45a33ca9a5e6daa00ec83dddc406665fb5fc4c8e9db31f418ffadbe75abdf842d5673f02e8d9b512c7d9baac8debec9808b8af957c3e631d4221ff5cd61233b4127ff07dd48769745f74d9198f1d58e3a6570b758cb7b6f62afd05688b37dd6faad65c6be0255a583ce651b789c463c931cdf40bceb352c1985cee9a1c39d6d605af4d0ddd762d9cb298751b68e686b5c5447558ba8d89736d0e10034769e6ca23faf5795bb4f45fd0f46a09188387c2f751a2072dfa36e04f11d324cf1b9977a2df9e5b6f958071585e43af339a92afd896e4c3b20fe3d1e7853ad67cfff2925b559b7c92791dee6fe72590623fd782b909e1e5a2ef4ed0a7d29ba057589d771333206ecf1de88fa34e783adf0fe8815bef57458fc62a7778cfc63cd73bd6ddb89e2f8991273fd61921cf58432791e7a8acaebc2b9ad8aebe3b5d8c698913819dc8b9d6c1fb67f842efc9e298e6a56fce153948df5ce3a016dde39a98b144ae17af11e3b1f2984a8f0d359e4da701dfca98e7f5ca96587791cfee51cb7645739c717d76ffccf9f0f36bf81df0022137dbecd926665abd5023de812fdbadebec7c363d3ede7dfa175ff72f0eeb4934bd88574c2e6df271c77a742b454c464f308a5edad51514bd874dccbf3d01e3a0bc53c078decccf01bcc6c49b09f5e4345bda1ab1f94ca326617b551b09f8eab04ec923f651ababe633e595b589efd4c69ccfc9bcc7cc411f5874e866418755d6c79cbd9a6ca7d0dbdc9fcc3a550a6ee8eca37c6bff7ebffbaff954570bef0f67fe907ceee3af63b75312c5cea3c9736333364a6a426473ea9c45dbb27b445da28066b88e4b62389a20907a46431ef9941e54b98905c313703d7c448d8eb92a746a4f9d66b5ed2554cc213bdc3f72866d69d662735eccbf1573fa6af7153921f72f3ee2fc62e146e94465038f5cfaad07dfdd49d84ed057bf7f61fe3f4c5436153d79d419a95934a1678189f3c9a75ff6167dd4081ae82ab5ba229ec99cb3821f2c3dc6cb003864f66c7bc813aa92daf93c66c31a624ecda75c35c2356f922801e72bed9b3905eec62989183b402b1fbd5af8061dd88b45cfb7edb009acbf9df81d49b0e8073de16738cc835167654cd51037c5fd12be3de2c9d0f9d4902381efb5fd60f4c2246e57d22b468cd0de38f65cd1e067eda6b1f53c552a1f7bb393889e2dbe9375c8f6750f5b815fa9faecef765e535d3f60d076d8137a468bb633fe2ffd32a7be59df381f36f3d9e0bfe6fb41bb8aef7f2cf6bbe3fc5393e6571d4ba7f4c6ad121ff1b021761f79b02f79b193c263d4d6ee13d69da6459dce7e4bcb3230b1335e13affe847b4a0ffe3a99e090a84b565f728de14b9ec566defa0a9c4ef098672adb257a57f43a1c088e9b07637a0396ec7b840efd7ba1ddec77fb6787fb1d3e83cbd0d514c2b346216a55c0cad0e7ac2d0ec4202d9bdbb4104c9eb33daa6a473d8f2c061693bcfbc483bf449694e983f800548289aa92de02d81078f9f64c9c2dba0727457c8da366a79658dee408cc09bcabcc67752b9e0235fe3f0116ab1d65578f75f6ee407d3624276e039c919bc627b34e82c365d608603627f6ffd412b07fc7fb6ff4b11e3f0dcd1c7fbebfdb1d1f67bda7cffadecf9c0ab35f4de94f847a79022c428a5e2f7a6d0dfd9de8cb2c5e6cd2bf9bce54f535514fa8037ec932e4b8a5cae6d8b3a185ec17cdc4e4a2c8d113f137cbad77d551d337bb86cef5c462a0e089c79af944fe3dfcd0f0a08996a5624efad5cc6933eeeca3f45b1a62d9f37a5a0d9f47d9dc03c7dbe37aa34dfe437db39ef4e64ae49e664cee8a06b54eabd10d0dddb045cc402cd417ea3f9f71abd30aeb0b6bdb597854d16a0d1f59e20ff9487f347a129839bb2b04e76a72f781d40172a965db7edb56fcaa6fd454cb87eed219bccc1f86ffa7782085b76b0aafde5d5b4f8bee9c0bd44a7faaa9babf5153fd877ac8ead6eff947f85d950d66e95d09dfb4711ba3060d6c8e594fa12166e64e5cea2d7c1bdba20902f642d1d3ee8947688f18a75c3ce5b07f48ed0fbe6fd415c876113059e8cb16c05869f4fecdfeb732734eb0a45bd7ee8129e234d4b29c6995488f2e77cf315c583f329765ede222a6a3afc5da333946023e0074f01003aa59498f46e22e0f72bc837a005ff9a4f70ab525ea35c5a28917b21e13ddcf14bc47cc6f8a199fb30ee96bccffb28775ec1bb4504bddc52db67f90946a5b7a973d8a2ebf7e121ed953714b6c1d24e69ad81a5fdf7199af8c0f7a12bacb16cf4bf33c89f252f2062789f2837d3ecaf0dcfdbe376b69183cf69d7a5aad9fd543518b96ecf3281b20e75f5537eaf6e47abddc0d778ba7fbf5e2ff12777aaf7f2cf7fac5e6f7afd7346dcfb927c7aebe4fedda705e833a6df49bd69ae92fdaeb7a13b8f2bd8dfddbbf8ffbc1d13131a7c5405b6f7ed650519f0e594767affa20da853dfa07a33f4eaf70f8d92e812b0206137377db8caadce9f0d53c7e2b18e593ee7c0797e25f185b6c769dd2a3b12186513cdd3a8d9fdc634ebff3f4c6ae4da8f3b247502d03f3f868f6fa3b934f2889e1d1b3f7f0fa2408d4b468d45d592bf43ead56e698f8efdf39ce43018c0a71ccd46764dd5739e2a565f1290eb4193a6f54f4541aeb8dce7ce8fe4b969547d52ae85663cdbf3ba19e4d0f496238156bd3fea28feb430e6d13d6690c7d9cf6318a4f2b680ec6a751559a5ce0abad0d5c68e49bf528a25fb5f95b8eba89ee9bf5e7beb23a6a97d8f344be5f7a100eebd9b83766ff6926510cdf33b52bdcc708ebd021ed07b5a6468afbffb616c0f56c7937f8f141fdebde793d0bffdbd733d57fbff50cb903f5254d2c50914363e6f432907abacf3ed760a6ac9ed42460fda2cf1c19ba64c4f4056af6b7c7213f373fd5d035915a177531812b134fce2dbcbac477969c09bb165a2e0cb5347de18b1c357aaab2b6c2571a39563b410d6388deaaee4baf0fb5837bf6be36f6f8eabc7ed32bfea41bfaf8819f052c40dc1b55f7cac411665d5a9918faf25a4c2eaec58399bff059701fcd7adddebf88bf708fd7c7ac118304da9dde093827eb89442de21dafb753fad36a7b54d1e00be3dca5790e5f357dc13dd47e410ce7ad98616fe0cc67ab3f979f5e0a57753dd4fe74607fd1dc9f81b25e7ee496974e86bac1b6253e5c1dd36885f7c09b0fbd8025708acab3385b627eb578b1c87307d8467ab438d0d482efaa7d2d3f5cbc068e30f127b13c37ef337be714da5bda8be9a7bae9faa227685d6ed8bb67ee00df42f73bb4f75117794ebf1587143d92f59745968886c43dfc11f4adb5296ffa329f0d9be281af7dc4b176032ea554d5f0456526cf717aa36c7b80de07f2b0105847ac35db930b3decac3c6aefd420d6c4fac0f1a2d0b7cce1ad28ffaf815bf4a0d3d643ff34dbadd5197368c747cd7ef9d7176223c54798d80fc4a0c437e6bd825afb01f565f340e224680f99b1bda0e7508ffd38e22004a7e1a1368abe8dc9cfcb60d1174cec4fefc3394c023785affcd215fc806bfb71cc5bcb9e7cfeec414e6c8959c7dd149f57ac81f15f299c24d6c6dab989fd7ce1d6d6723eb5fded3f9f93fc8dd8fe59dc6135c54fff04cfc976592af0b60ae945c5e52587977d31e4e49e7ae3b7710dd9960a6b478edfa489713f48cdb8bdb83ff61c5b5e03c5fbbb097ca9fbf1d1d6aacd3d229ec515acf1ebeb86df6a7fffae022609589c31ebfad556b4839737ea484da3c5dd748d5e93ab77cba7f98fc29b7e6a00fd8c47dd8435705fd3e22a9ee12ff0a2c1047dd8eb759455b57a56f0d85b898ff9d2632f1beb8f3bcaa6c42b65eb67732cd67ef59705fcdcd6e2cfa9aff2a896cd6b1e56c7a7f2d46924fc3e72a624af79c5b12fda49b4fbe7c7764ad772a988110f6daf1ddcdfc7081abe1ef73be6657a627234edddcc7ba5974fbb74f47a71b7db2cf7d420fa9063f8464df3248a1bea8a2fd12f67ec835a5da91f94ade1d9badea53eb73c77f01c3e51fd3090de3b39784d87af3848efbdbbffafefb9f4de27e8c397ecbd3bb5765480f9c3bd9375938c7ddd5115bb0b735e33bb4f2cb95672bd3f219f989dcc7c8994d9c72268bb598df01ebedfcc47ffc7015a9bc0958cc57f9e5e240a1c11d669a1371e8de579cc9a4e9ffc0ffa448f2dcfd551f9c9a1cedbf2a8aa7984be24346b96bd24927399a0b7e8d20304e7ed267d686f9adf236bc2fca5c3b16c829b79adf777d397c787f92706f9edf9d04ba2d5359f23e8a5a97d095d3e5d4d157a29d090bc4f54f67596e6a8bd5fe8f35bee32bc734d6e686b52deeb9a946e659e3898071e7a2241169973894f66ce4cab95e49bf7de087d3a477c08d13785ffdbaad2ec0d3461fb469dea193a4afd6e9d7f5d97fa57358bd07b8ca083e77e176c2172a9b32e4479d682b0ba105287fb490ba2e3e4e1b966ae7477c9e73def4dcbc6ee3331b00cdc77d08339f75c26617d631c14cf1fbeae974f667f98f617dea0997fcc3ec29b78d27fd6bbccaff514bdf7ef5d26b77ecf3f99ff5e120dd658afb11f6cbb1c8abc5ed49f9b71bb45dd9835ac506a48e3329da086e610bb181ed27e78a4a6ddbda7b2afecafc323634b0c6d437cbcaa8633454d3c68d05c68193dab99782bf44399cba199cb661d784ebf15bfddbb1c55cba068047f9ff1efd2efa776f21338f1a7f44ed1b3893d4acffa5969fa313449745dd3f6fbd6e925d1fc7954253dd613b7c018a2a658151eb9ab412fcd4bf0fdc62d732a8dbe03f46b6aeaba21276d13e81fed9ef506e774144ddf5a346b1a6a1ac54745afa093cacb765ae133c081c06b07d748f9f2dd1e755fc647dd4237a901cfcf29d16f854f116a9e893f9e043d60e2b342c601be2b58c1f77c2b78e725f4879853e6823b438edb53bba24ecd9a3c81cef5458c75d10f95180bf1d6c471a58fd1b08ff1da0fc5c458a30a9e43b57e28dc0578b809f5423696774e5e7b4adeac772b6ee9fe6eda3ece56c7dc9b36abfdae9a3f7c6a17fcca5bda8a66e0eaaf7168d2671a55655b4cf09e639ad1c3aa7bdf44f45be0a335a6771eea37acab606f470f6f19585f1cfb1c3a44d48ca7263bf94881d4fe7dd6334257fa5f81f24e38267cdca31d71ff661ced8a46cd4af4331788b913d432c919efde5f1153b19558551d890f2edb24fafaa2900bc7d4d5b2e77b3e67c1488a0f01b00db20e50e71331d0f72d78390e3dbdee5fce3cec9da26e63015d2fdd00efe18faae92fbaec8a75a19a9af60979e2d06b0e899f6cc05300d61afa39d43af04d0ec09a53dc93e3947f736c5f747fced77ff2fab775d74438c57cffe00b34ffc1c7dad1ef96e3a5074e94c95d58ab12de35d6be5ae5274fcea3f77defc87b63605a16aff4e82e34ea7ffadb7b6ad5dfdfed8e8bfdb4f9c437be856f8c7b8bce33fcd45057925accd4b25f5566cfc43e5b15f4f886af690e8d0a6a7f2b97b985e5e38ca94d4a2d2589eb63ea81886e80b29a06786d35a32fe0d21db726b7d8f62c4e57935f50d3db6fe93ea2d643ae759aab5a89370d73922df2e75462a249a43d6af20cf0d92bffc7f7aeaaa5d53970749f7c47faa03952931d88e7797ed077caac8d52d3dcd6e0fe6fa0795e77580be8138ca9115ce5c1a82abd4773cd2ad5144da7f3520be6eb209a171eaf7d897a00f588cd39ae67e6ffe449c0ebfa593d1547dd4e93f45b01dd11ae47b97c8ebf8d18a6f151ea1ff0a3be7c6d455d8f2f99b98f93b0675ed3c48251df8efd4d0f3803d6d0da6975a34f537eff63b99f8ad690ee3fce0e1f534fe0b6da57e78f730debbf6c2e38f89b8bfaed25b6fe897ee5d0e5de04c145fdec8c89db583c5cc8bee0e65c3bbbc0c3d1ab76a664ef406c4d5d14688c5097117a3cfc7fc9d7d5913909ea4ef46f9a8456d351fe7f7efff7bd19bfe541655f5fc83b4d8eba1f04a30ab558d95f426a77a25e45bf8c69b5ab44c3907e032606c179102bcd7d127b21e39309f46a4cbee2c96f386aea2399f9c81a5a3557ba31d7ac3c32cf1f438bc4c44e239c7b7cd47d60bd3dd9b76bd17572b2089aa067edb84d20fc3fe097daae16f1bfe5bedc58a7787c18eeb827f7daf1fe8ff52ac63cda7dd07ac50d9801d168046f9aba8fa801c31f53626570f71ceb95198837ab2b3af572ffe20e2b476fe3d019710f3e513b51f474814713cd806c7c38bf2e1ee9f442f7b9df88e621c66921738a3ed2693627b6210b8f2a1bbce826f099fbe6aef59f98443b4f39aff1bf173d277854f398498f1a6ba2d5831ead89094a6734b19a8b499099181f9e8ebb44df299e739ff50ff2f2cd6f86d609fb8f581b03f8aa987d60099d1db39e82c37850d082ec7cad1beee726b61f3e9b9c64014dafd8cc658f793e384b3eaf2dfbdda81f40f74834bca0ed309ce9fd75ad66e516f5f7ad436fc66c35d37b62a04dbe9645f4d9d6f083d9faa29dd9a35e00ae5303dd06dcf758fad38ec3987d2dbef6a5e8908ca9a91913579944d0b2a0475ebb2d5505de56a3f2b201be10ba2cf4f5461f181a4cf0c867cc030d33f80637c08023bf1c9b6bed9bb54b43ff4435d460d8fad8bfaa823cd14de029f61b1c73ffd319fc3c2efa91aa27631338301d2dc54b56ddaa57ffeb3af431d79f9bf8f766bd585503f87c28af6ce835b6e4bc9e04e211b4e49ad0769a64e205bff559dbc7fd3f883eac2f5a70e85951ef0e1cb69e7847ba96ef47adb731f76670a084ffbb111e42a54cdcd35ce8de50ef03b5797801be7ddc8d68369af1d7c8f9508be5621d83af03ce39cd4fe4dcf54d2efb2fd730ac0b21f36e3cb28ed2f558aab5c2f94ec23acd4b071a25d0f3fd696d3231ddf5b5a9454d113a30265f3073c86a12c6f09d3573d4cc4db52f8f2a9ada1a8537aa8aa068c46fbc2a64fdca9d91c5ecb4ebd66a866b9c8b797daa9489a5b3f0a8abcf75ed3f725d7b9ab6f7fbddcbe26efae9cbf1f3dab609cdbd707eee7dfc030ed6e93f8583c539d7c5e7819903667e30171856f4718057f9113d6062c0d0cb99440535c7a8d328bed4d02076a1e5990dbe2ccc1a48aea5ed315b8fa64434f57ff677a29f4936f40417e14ea2f94cff359feb9fe9b89df1eb17b8f9f1afb8f98979dfbfc6e6437beab7bee79dea1eab0fdaabb81d370d2f2347a1475f96237a1d39ab2a967958065c4f637873719e26cdffd83c35f1c19d021e53b4caac4e474d3cccf0afe6a9cbfd1fbaf709f841d8bf4ae9a714d05450177e539afd44e93f16dea8daf6beef45577657d42a2ebd6955a00fa9b2a168908d59ff849e958947121ff3bfb23d45b3efafbe8eaaad97f6d147146c9299ff73fa2867434fdfe1da403b159e2d589b9433aa969f73fbedb91d150fc33b13b7cf67e30f39c76fe1e9b23f6f62ce41043c7a0bce03fcd8516746ed2bf651ff9c9507b31f8d3acc4ecc7168b5b244c72f035e6e6872f3df9bcb33ec53bf8b530844ef30a036de0e3db234ca4bec7b7de87ed4ec0dea04f87bf9ff28036fd0ac5dfe249a7aa36cfaacb2fb0e53faef302ecb6bd813e7fd312e577500fee27bde29a6f506cd878c656feb0ffc5f9a47017da80709704ecec9ec976e12ad3ee7d26fcea57c3ff8b1f8b65a7fcf3f6bf07f1d7ffe1c7b6e8f3a070ecd279e2e3fea6c59aa6c5b6af895c5bd2c2a4af8b5732e1c94f0658089859f026b3be235e09ffb2cd3ffa1bc2eb61c54ea995087d63dfb7f4d9f47f4620accb95ef5419816b5eaea39e00c82e3f85e399fca86bfea325ce131639edc860769e633c6714b77b87e9cd57ef1f0c963bd3a1f666fe763a36a1a99bc4737e835b91cd7664d267735cd4f1eeb72530fde4cd9d01b4d023783763afa377f3f37667f3d37583345cfaac1e3b6f4a88f55b2461b812f7dd01b73ce3ad1bbc27f8c6268ba8a47c8e9b1eff4fec62b6fa6a863e7890761097f99ebbe78bc6e59627bb352330905130f4f6cd1c14f2e34f6934b4cff7b622c26abd9c7e4cdde36b6cd3aba45cc94de5df122785217f723b9b87fe82b5a1f03f1a0a1a71ce215935fd247a4544f8547defdf2a889b1acd99704afad1e517b1c7e97f4ee21e603b57b1357ed7fe9ed035f857a20b094666cc27fd5113c83fc6d094e02d671f8de9878ad3c9a3d49639e2447f62c56cf82a9062e0fb56972a44a1343823734214f03bd538cf55bb58f5e8dcd6c351bfac5c3ee335f7e930337acd0bfef3b4102ce7e59ea6f45ef9faebdab6ac075371b586f21f8d388e6de558fd56935afc81fe3ff8179cde06b021c59013d53cc1797de58630f31918929f2d213dd348f5aedc4f58ea82fea9af1c5fed0ea5983b7399f699fba6169ff6fd6d65979206eb8b49ec0e24dea74ef9b56313452579512dc9be332b6999a18c55d55fa162d97a08bd1ff618cf2eff2900bddbbffd15848bbc5d36afdfd539bfeb7fa47e3967a2b3a5232c6a16bed4b8ca3f4266c543f70571be88536c05de6f07e43ee70cb7cd4cce9db8b3ca0be9877dee5bc435c759eb7cd79de1665e705ebcb9cf44af7fbdeec775f314f1ffb0eb87e0be2c76a75f79b73f1af738fcf39f9e69cbc6f8a59af7d7cb8ffdc233ff7c8cf3df23f663e7ecc79f83efddb7f5b3f0b4dde031f64f52498a3ace05c9d997c694b7d448b7336c7b098e66981bcbffbbf998bf056b9ffb2c8648f73cef38e1cd3845e8c1bb337e29c0ed4715cd2a71f98ab73ef3581b65a5c27d10a58b06965e6e70f931b9ec035a7479fff7d2ff8e9ecebefd6d48487abae7a937ef65cdfcc231f8a59fd5f9f7da25ff6c6f63d7824e9845c88343ff94994b4f085416fa63ca4ffa4d6e128b32e07c434c41e6a73e0976d4b95696f940d2be11eda5a1f6a0fe4a3debfb0ae117805fcb8c6e474e251b8a91b7a6da7d1bd89b58351a5672ad3cf0ade1573e01e4793c07fbff1f689ddf9d5a334a1866e161e75b67b19655be80cc2979a5c5f7744fff146f80b3ef90be4e48eb26df90627d8e938c1fb532f01b757f5f86f6b3dc01df1617739c663c1d0921f4bde611e2cc0d7df1e52603495f8122f3df08e36a2f1490e34ebc3e6b744e436e8bbd3219d38bd24da1ed249d83d7edf9a3c30ae57d5fdb368993bd061999dbad8308b627aa44c81d7e95d6aa05ce852dd5a576bbee7fa653e1b7c725caf7acb05aea68f4a0b7fb8c6ac1363675aadded40c3bebd35c688dfdaca33c2b1bd1110b843f433d0a684fe4d0474bb3dcfa8437c4adc7d40034f1c606b87af06747c273d326e6414eb0a5d705f93b0e389f957e81362ef1ea3d05ae263071e22337b69e5e75e7dbf5243881067e313de1cbc2c316710fc6f83cd1be59c3e3d36ae398c7a3cec8bdd35c8f2c5e407c19c70d71a9e8e99ce06b261ea63aa3f72739446387b8b881685e24276ab54d9ff553e14aac148ce087b2323998398f7a82f31a928fbb611d1bf569f466629fdea627705947992aa931119ad8ce819f3f3dd603eaf22e8fe9cdf36bba7d7cb8ff6ad6d7c7d9d05ddd7d50ddc1dbe20d9fd8e515b18d8e6ae94fb73431454f7c5b4b950d5bf85201a3323eaa765922e637e376af1a6a0284a526f65074def0be837e604f446f1ce8d7f26fd4779b40736115e989f8ee1147d9f29cc6f67b4fe9c4218fb45dd27bc27cef5699f9d95358db9393e85bf9f2bca1179c794d913bd784edf7ade3f3dce001e491ff51faf4a45fc21344b870e253b334bfc9ac010eb80e9300fbe08d1c80c1fc6ee764777f54d4c8ed7d5d7cfb98b9e90de3d2acd935e2d66cf8a2a149e378e4db27f059366b8632fb0234bbcb605ac535b52b96f528db91fb024f2f78927ad452b1daab71e7993baa968df9c71895fa37f09b05af66f8b606cb03359f536836856ed198bc149ae8f5a85a3a23f2616ac15fc1374dd662675415ce282be071063fb76adba00f196d0f7a030fd276941507bc1e2b0fb8b16c69de7f4acf58e38afc96b004a7b422a7cbec130bea07513b2d8f03ea1d96561bf0a4a2ae0677b43801d5609c236f5096d7d4e27a781a1a26899b44257029296a64aac53967393d51a11d5b1ee47562d610c7c51e7d68c6b25f27c734864e3cf40b55347d8f755e2d3cbde65cfb90bd905b3c0d31761047509fbfa6e68ec9d372dc3fd4301f0a60f71e118baf5ff0376a3c43cf99f1cd127d67457e7e437de4b1c4ece2c19ac93c823eb28d9ba695d59b3eeb0e8fd9bfa71f393da7ab92be2be405233f48fb8e974473ea22f68191f746d9fccb42bc44a1353b3b1d44b7c3255672c998ca830f68cb5a6d4edc46551ca8d959c8384f88cd472c64c6b589c1ecdc44dcc5fa5413d2e380ba65f02d5f6d9c2eaf56f4d2ae55d3690cc09f9dda3ddd7c3a5cce27cc3bcc17e7723e1dec7c1a6597f3694c5e611398bf9b7397c7c0b55ad7f06017df75c454b7ea75cdee7fac06c33f8bcf1ec615ffaa7be8239b756c01fcc90f6dc6cb6334f4109b43d73b2c353cf1f0de2fe2297b32efd177253e63dea3b279e7bdf77deb34e69e22f731f796b8c49af941ec1699cc3572cd643f933967d6d53e75b7940b4f9f765425fe029ebe5b604990475b2d75d105e75c449e43efec0978a9ae68e0c0e38f7a7f612b5aa2c2b74c4ee66f4914bbd4de1a031ba36f5fd35fe633ed2cf7bb0afed81fb3bf7d8bf644a9bd4bdfe9257cf9d3386ec4cfbab9f4b5463d7713d613f49086cf660da2ae5761c627348b15d650857c4e65c3998e4b1fef9d04bee61ad724d13449ad2e0bb8cee0699b5cb8a62e198ee511fbb7ed8ddb04f871bd0902786d9afd1e6b6edcc04b177a2aaff453a4c78d5c82b93c7c71816b721e4d4eb157cc99f1ddc8c3653f830693476d946d0f9cadbe598fcd384ea8cb926dadd7b53b6ecd7a83f36914eaa5d2dff07f68dd985c98fab3e06f4fa8a7c4bd2ea1f61ebc72affb5f2f5bfb3c6ca1713e815f8ccdc9895b94634ca2a9a7f6a5ad6179d8d3a0111c1fc9075bb6a3ecec05aefbd60bbc78e505fe7d8f38123ab7d06ac49e412d6cb571a8850deeb4b23a6d3efdac45b3a65abf30f74b8e9abf3960fe5e823f4d8ef7aa327b33634efaa131a6853f7769bfd7ea71ab0d3589e5da8856b7969e4c729a44ab17bdc1dad23c221e290ecabf75cfaa77856f727e1d159f7efa6ff05092573c14f59a87525b1e8afa0d1e4afaad087e9fcf69d6a3c1ef68d5cee08fb1c19873c1addc3ac22fd1cfd0b4a9762f9267b5a32a665daa5d29ac4193f0ace7e4942efc22ff7b3828a7ff210ecaef7ccf3f181fcb52555f9fe15bbc3f79e69a8eb27b4f3dbddb9cd40bffeb278fe5da7e3e7b439fc32f9ac7487bc81bf213fcc4b1376dcb5a0d0a7f12cdab4ed75fb437e8130ffc3c75da510f28ca579ae9be7aa599fe083ef35a9973814ffcb470bf6f71bcc6ccd5ab3ef14f453b89eebf2cccdee25dd75717adfaae5eff5a4ffddf8cd1dcc42ceeaa1a26c4ee6fa181c0bd181e28e2c136c6fecbbdf8c2b3f1521fbfb1de9478de92a300ff3897fa74f1b9c7f0a0e4378535fb0a61b75e9dd7a718b83cdd8426f686e7f6c2e4635e79306bf7ad75c3c5ddb45a7d1bfe28dce18fc23bb48f7703ff43d6b46fd04685e7fe24a8d341d1839e10b825637f34410d51fc03c756fb8b7815e821594da392af4f821ef474da8458323c1f26e249f03347841c4c7828838f00bec1633fa8d35809dfa080deb8ee07bed95fc17dc956ad681805e420949857987ff07643cdb2b9ac5d6ae9d3500f9d5a06f83cea2163f18f939e283069f1cd5ea30b33fe4d4ceca06e6e724cfbc8fca209e0b9aa9cb2a5e7ea3dfc24194b87c124d2333d2bcd7af465912d4b9d973dbe4fcfd2b8ec4dabe9b37e2882ef7bb3ee15c714eb5079d4fdb0378962e82528e6cffea832d72e6ee1af8ab8517be66fe403e5e2e99db7f0f9465d5f511fcf87d77e2971f47ff8fcd6d5c2fbc3997fc6af3fc727c7547a9f2a9b5aff92c6eaf2da7d6f94dd3fa356295aa2a9c9256d6e3c09eda3e4c639f5b47360ba9a47ea9143fb1b35c26afa8c3c278f3dc9a9bdd7b9b53a2ae81edf27c81bf7d7e72d6a888c9b7b92a3b1bf4c8d34ee599d2e737254ed9a3ec55152768fa8dde7a5caacc66a585e593fbe64d05a9cdf3ace6fe8dd8b5eea7f8a77cbd6a9d5246c545cfa98afbe896f4b333e3cf31def55ab2a6675367f30f1a8de2d9bcf18f735de283673e42a76e3b1ef58cdb76b39df972c434fd7ff9bf7b517f88f83ea789d52a7bd2b5973620c6bf980cf662ca477e5e18d7dfd163fa31a5e78196302e2f4cc7e055ef7df606355adfac0c03be8db4d426712bddab72ebcf4d4ebbcb909dca2217e9578d40e730e4c6ade6ee1a99ea26f9a97695efa6f7b4da99a3e63e3d2d6b647d930d1de556db15be7d161fe307c9acf7ad507e533dd3277e8c999a9639a9f6a6867ee4f2d35fec5172332716b12a0b70cdd4860314c7ee343b703fbcf7cad50b363dde6c22b849a51ed4aa98cf5da6975dd9bf1b1ef386fe0e13c132366a8b7c4e837525393dea86a72eebdab7669beeb6544bd6487faf5097b5ed0cfc2f9f588e788715ee887ece18dda505f94daff660f659d726cf6f1c3c5675ea8733af68a06d822f35e735d3c8e71e59b7f19f6eee551c1a7e4aa8e8af3a68e4a13048b48f1dea02e6ecfc79e7f4c5f8e7689f3429f88bff7a850571d07e63dec95f3dc797d56d2df2c457bcc5cab316ab16a13f8cc5370cd88d3ac428758cdc091be0fbc38cdff99ff286a516fa0d36cb19d8ef24eec1bd09bd672915b689b75df15b4ca7c5fb695ef2cfc04baa8a54f6f9922a08e7b480f905695e763ae2af435e1af8eef3cd1fbcaa13e227a63f9d1ea96a5d02d08cc38e26ff14eaf8ecf184f1d5e1d1fb5f5a086465aabc8d701267ff5f2fab7615d736e8dd1573bed7c646febdbf824d444d74dd028ef24f88f10bd21e4d14de0abeda916af736f01cc0d7d018839de3aec41759eca0d3d950b7a9bb57afd93b7f9a9fbff4c1d153c70c3a386e716f092668ed02be45c677e151bbec68d0e6612a35cf16c1cccaed6e8b66f6a0cd7d0d2fd561c74031ee9513f142e7cb527d40ee8e2f941d1e33c2d7a236ae8426b167acc38f6d2ff4e4e6bad1e8a00fcb259e9adaaf99745561c78ed6e888ff70e343a16a81f2e8f7a5636d32a0e16d1f8a0e1eb7b63fd773f685777f33f17dec7c411dc346726213decac86d746e259fae39cf7cfbcac357a2285f8d85cc4be55287bc860a6aa41a21e8a639aadbf641962c780bdd8f151b779092c3dc700f737e8704dcd9877384ff383660dc987778e796e62e926f0a4275adb3d0b31801963881fcd31c7e801a306f560d6fda5cf7e2efe0eee9682575fd198f18c983e8a51cb65bc5e967a5a483e60e2f6e9cba84a5a13a7030f4ead702789626712c581ed4fc30f201acb75c9c9b3c475295a62fd564a550aba6ab7fa41dfefa7edea6ee715b3d3871ccb3778d7b5664cd1dfa530eb668d319499b1b2ca74036df5327d286c1ee6a4d412822fbef8960387a8b766ec24a899a2cfbd0106be36b19bf09c9ac72839a1e6472c68cbd82501c64534e91d709bdafbaf668c02bf691fb1eef27c655d75a0698e5e8162bf1f35ce31710426ffd9202e754ccc3d89f2631aed22e1aff8a22b7b626c94d3bb394b50ebe5b856a5ca06cf261ffc0b4e7dc6f749cd929f11bd1ae66e7fa379f477c7ff929df5a2dfe42ce6edc53934f0a56f457ba9d5fdd0c4b82d7df34a0f1af4c07d002b0d6db1143197891773e26fb11f213ef6597f2f8faacaf14f03f38aeb255ab558ebe8355615d07ad71974127bca294d2ce811e750f492e86bc57b8c733daa16fe7b3ee37ce0165bf12139311e2fec7ad9808f80f5322177235b0a5e21e8891690f800c0bba8668c6de6a23a6ac4f8e0a6436361c49a36f10da85325fe05de15983e056c79de5037d19c6b4c4e04cfa9d50deaf7e61a1cb5d97f2370a44ee04320775fc23f56b056664e588f521f583172e5e1df2fd7083c2d72fbfe9a5bfe18e97fc061fdd7f1f2dde26ef7f4f841f1edb7f1ef62d16e1ebe4087606af9c44e772fce739bf72a6f636288ccdcce583b9a56bb17e8273c14cd827baf3bade2de025a6ae02b37ac15e4c295ce4bd1c576337ad0f6561be809bc3057ba15bbb75e3f7eee8d57342fe6157307e035bbdc62d99c6b83975a659daed906d82e171adfe8e5d3332dcd90673becf551c786da6163e9d383b3ee8faadd4c55c3676affcf590bdd96bd29b023c0f6b4cc75f223ea031bf4135df0d7c84963fcd9c8f326f026d154fa2ea1071e1ce2c69279dcc48ca5a4376e4b6012d0139984b5ea63ff6f92083d4f8fbe1ab2271363ea8ddbd825068db874c1adfb7a13d6ba091bc123788f9136bfc1596d1cefc6f5292966bdedf799bbfee40dfc5a73e43a531e15ea4fe8ad9afdeed98ccd949c7197fb65eeac36f89b2b63b1659c60fe213f693a0f00f26e80352626f32f393687ce8bd8fc7f8f7a5543ce4c82988d9e4588cbc839abccbebb34e3ff068c89d99ba17f711a99b5f4b5df6d63fd7accb91357823a2a30fa0afc77055f25f8a8626c5bcfdcc10cf90ab0b64b9e27df4bcf55132fe2f5d2fa195ffaed621ed2532d244f35823f78904eccf588196b647aa6cdfbb62787fb7e7254113d88e80f971f55a4e0d1fac8737ad1c4c9f218c0120481ce4b7f045f3b73df4d7ca1afdda752fc852faf49c7f7ee62a8b6f33b3e2da26e1c09976bf8a2896f773bbe08390c277894674bf01ef09e99bdffbcdfe25765ebcdafc74577ff6f581b1e86db9537683ef1e7bf708a4ae59d80af9a563a4973e5497c5cc25f9e73b14c81d322d6fb575ce8fd555ce8b45abf98e33e46f0348316ec88fdec6e0f534f8871cdfe194cab79022eb1837a7e63fda480fd9e846e126d4b624ff0f95b639b3f17b3e964fef075fdf830ec7abd9f18ac9f3058fdd0e422ad686efd5c4b4dd2eb3abb9eda96ce5bb5541387a98179bc528385e649e83d4673738cde147551d4b79a49744fcfa3a7a266ff72f09c7e3b3f870636c7920b4c326a4f03f834abbcf4cc73e061bdb2d64fd0d5bb15e7932cfcfbdde26362606fd16c34f1217df5ac3fe8052e246f4bfc3d451cb96e5f634ad44fd85668a45df6edced8b607f5aaf6fd0a1b432c8cfc1db8b7c68c9d51b6f6d2b86ca7d534510f45ade917d73ea20689b17548d11b10efd549e0634fcec6d497db603e04d36af7acf767ed6233bea9d953dcda974a56fb41f5b90efd82436a819b38e75da5c52faf2a33d6aee041b2fb4ad6a60badefe1f5decf13740c6abd2ddd69453f0b95dddfa6c796ad2bd5c053ea042df40d6a9e66dfa38e74058eb837ca8a033166456f9415a57d9e4478ee51a763ec8cb27525def62efdedb7dea8ca6bab3d68e24070d7e9058af859b14feb2aa92b6a13637efb71e0e712a929a1ee6962b086fd74f081c4c7739aa4fdc095bebe27fd3570c6f0fd97c76e82def7add3132f3ff7115c4560b0591feb7a81a86d35493468595f83a76f8fd72439985c416abfde24da1e556b7eb789b10bfe56cc4b5ca366940da067a1989fd8e3de181becaaf94c37f3d9e0f0390f7f9a87e8ed878811c7adc9ad963df0a1cdfe64f20b93ff4c42f437f3b62097a1c1b872796fccdfeebfea7e7032efb58fcc4154a9b2af15b9e41d0e147825fa81c6c2574b5ae038e9a37d54d15081ab1e2d4b55696005d4c48c4368d2d4c4ac040d6b1fa80d9fd8ab4844ebc4b1d828d14fbcd478708879b063b3097c8d38b6607fc17c6fbb7ba13faac2b855b3d8cc518fd769ec597ca9a656fc09d81772c74d7c0d1e1330d798637923f5dd13f47336f4301d49cf0cba4616c35e15471d0dd7ba0f1e89239f2d5504ad7a9f5cbec10b395f8ed5e242ad5ff0f147d5e6c07f502f29a6b770066c514fbc59f968ee0f7019b8063ded9d8e1a5818eaaf40332c3671fb92bd4378cb161ef670b316fa0afd1670e891f38d03e4f8d9f085b527688ff9e61e17e6f80df96b5813c10135f35ecec772e4279d7f43796b5f3bbb1bf4e60fc376ecd5bb8fca35bc555f14e3cc81ee84affb614f3477a416b4645d003d8e719345666e418beec09e72de63fde2cc5134effbbe87aedb5167f7d4ffad904f349a7d2fea849e8f6be68ad90bd1b3cac0cd081a0d6c51d2b0663454aa097b0b932b628e53bfd09e17cf1563d8b5fdca117a3ee879f9ca39b52676357ba21cc3813f2d7a63f061062e4a558317d64158d7c9c0958f8f6934ffc21a317487fd0ceb5d51d24f4bd1333b420de4a4a06d8afab0a7cdf9dcc897b563f843ee59b76963d5b2860466ed5bf41d9ff8bcfca85bad449beda4bd532f899665ca5ef7792cfa167f3c7fd14dd042ffaa5ab63f8d717cf63cd612f1dc8e4dfc7642ef1ce3017ba69300ab9894f4425996da8ce34dd8635d7d7cd43763d9eb1fcb87e99fcbcf5af8eb75ccdc6bcbef6a2cd762cc3e4d55c2cb7612694fed4b709226d18a9a82d93ab29c6abd09e4fea19e6aee9933ade689f22def692e7ccae92ca526b90b2d910e93fa8a93d5bee67414c4bb9b75a61a43739cda0188b55bb517ac8fecc7c2e977ff02e3dbbe85f1d5fda049ef7e39de31cda62fe0cc6dccf7a1e75c53cb20262ecfe414c4b5c14f3f9d168dbac6998b56d7f22f6f9421c690fe6871b05a3f88af26985ff5a8da9975d44ba2fb6793a73ff69d7a5add7f59985811f543735f86cfda2f1aceaffbbff85b6cbeef05ebb8b9865b556b7076e07fdf508bb1145dec0298c77450f88fd1001a0e4506fc84c5289e883b28dd453fe86973bc6951df1e7ffc5115b3faab796db5df391f14377f4b4da901666d205ae326d7271703b5c849747f511b804e1cfd93b0eec34fd9d66af0b7918d252721b598a3ce6fddd357c772ec5dd3715e6d9c5775ceee9c9e94f5ac92ba377516f45ef862c03fb1af9f66a86300dfbe648fd5c4257e1209a67e57d4694c8e226277731ed0fd29d85796df31127f42d66981bf27deba5dca7b103b7959342ef51e35501c8f393b7aba9eec590e732df3b835f190b7c05c052ea73dd72a9223f448c8c96d547e32799fcfb830f199170a4ebe31f997ad6b24c7f79a2f8f0f43ee83ff2b629ed763593f419be190c237633a137fbbc3d95fe28c17c11a46fd4df78c27417d6696e627dcab55357ce1b112e81da7f929100fc099aa862f66cd8616e70566447c723cc442f949ceeb77e7e8bf8de5fe758d141a818b78e02c3ed7c95ffd922661ad3dd4b5ff4ab3a5e558cbdd575cbb19742acca333add6cfa897a277c73df84dbe9077956fd3a2fff25034887f1e7e1ccc9aac9cae37544bada39782e7d4add70a1851bb0e03177859d79d23ae38afc525d7c1dd796f406d203a7b3a2ea0cd769fe8017496bd5515dfdafb9131385c7fd018fba63108ac4f13f6643f6978afb74755a9329d95aed977b2cce44fdac4cdcd222acbf4a17027d1dc134f0e68a6e887e2a067a76094ed668a7a5e8e6a423f13ef2c68176f024fb4f5a05b3f01eef2e6fce9cfc21bbc8cbdc1fe8362066ebbbf9bd05d55eb8af154dcc54349344cd2bbab9cd219eed59de38077fa8dfd5f62c58187f1a9873b2ef55de915add5c1091dd663b7a5ee3b0e7b75c3b7e6bffbe6fc47ac359da1df57e967ae0926ff1e24d40a8803135fbdcf9aa0d7cbdd6abdf4cacf3ae22f75c465a9674ab0ef61877d7f8555ee3bb5e06585ef27318dafce5e5b8dbc7713f89d2757779c33479a1a98e1e9358ffa174cfd497c4ef83d36eeda04feb2e9f0d336e602575170d6dd71cedf3bfd92fded6f9c826f20dc373fe953b37054adb3ce83961ee2c0928ddbfc489e9d6aad7e343e174d818da00e9c7aa5038775f2ac03e75b1d38ece5ff50074e65f75ec7657abdafd76ff268e91f55ffa67e5cb020063520aedee4fe05b817a9395e3f68583f35eb834e34fd07f0ff51060dc25e12c5bd4934f5c8ad35b97edc008f7f57d6e8d97827c411aabd9fa96c778bc79a7fd5fb6cf3ee1e6bdeef7ecf8db954b4f07ade7cd6fb319ff5aaf9543b0b7ff831f150b7d5927b49b49ae9185e7d09f04c5e69f60ee731baf7f45d194cabd533f54e62708546d9bd37caee93f45be14ca2fb593a2bdb69357f56d9574f79264636e3bd2c5370a881576aa1859421763673aa9956ab24fdf6e3a09b506a61e63b4cdc5d5247635af8e6efefb37fddff58ec77c7f9c7d43db925ee0950e701efe7fe05baaff42c6ab3481dd30cbd6eb7004f28647f138fc414d383720e8c6e8af53c0ea813bb147dab81896b5c7081c0ef2802f6a8f3a3e23ed892ffb4ad053781fe574aeebe8b3a2db4c9a4d6440f188fde00c4ee697a2204ec5b59fdf62d7538e9bfe7b0ce5b525fd73999bf952adb82872fd85fe979d91ad1b85e4405757b3741c0731c730f8f068a3d0e73dd343e2ffabbb77a6fd8b1da3cce7a9ffe73bfac53aa54fb93707963338e5a1347808b080d1260fb7bd03f437c909818f884da6217b794f40a6ba4668a387ca510976fc125844639745c33e808d759241a5cd9d7047c03f814848dfaf683fac58d53ab6d891a16bc02a2f141f6685779a7033d2aef6d0fb5f7168650728b1675abbe3c0e805397decc5c7293c2130d49d18d840ed5013e35d44fe73c2237b045acc2b9f0f7bd1afa2eb5bae3d7200ee15cba919b2c7bf2dde3c370777f373d150f4367319b1e571f136b7a9b4e05bc4c92a36a890f047fb50fec8e4fcf92b1f014ccfa189f801f42ce3a7646a297a3a115095d1357e7aa47ac0a7d8435384e217d18a12d6ee2fe6165d66fd1976c35b91b476d62f56c4b0fae09357b50fb6f8055aac163cdc0df3f2af6bed0ffa747cdf280b5dd1c2f56c28d056fc5a387524cfe721ffdea567bcaaed3e059c1431cf8a6d033bf15fa0f19f4d51dc121ba82d531f3d623ae21e66fa20eb3685981278d3922f3a201ffb4da993cda5c9b80dc13e8a13bc060b5c8c56ad1bb608dbf2d85cfcd790f0e2dfda31aa9719f527045a00f043e2ccea5091afa3d870e7b084be025d2bef53fcb053f490d4e7a9f805bdebe535fe16e71f747f3f8a0ff97f415fe27f71562b7a995b8aac8f30126af271af20e3486221d59df3f89774c1ee7893718f081fa017e63d0b8626fc8c635f335744823e4bf7c243e903ec10d34664e9633a4d82369d3b3bf6f0f9c47c1c1cadf1a62ee38c60bf4f4e971f1cacfb4810738f4c6c72d621bfa004636ee8b3b7ce312b1dfd8e1ba92c83e12f4f43e369f77e85f80c7b36e24b5e16ac102f8d4fd0f890d921a419a29f2cd89c9f5184fc1b34c9e8bde5ca7fb3faee577f07ac9f7763a33d0732e2caeb0c65a136de94582f93a60be0c6c123c3ec9e9ab0acffa7882fb95ed5ae1e99d181384660ed7e9ec44ed1feea9e2fb033ebccb7a422cdf659e0fbe2c701dc7bc4f38b7c4a10e15d652e297c1fd1bbe706c98fbb8aacebd0ae8f98a271c38665c6fbd938941e95d588da173058c241f85fb8a7dddb37a04977e2ce26f64d638786e69ea7b824bab44f3735425e283681e6d9c64c60971d8c4bf06d4d3edcbda58e59607ce5824d2f85dd0c802be02b50a9fe7144b9c8fdf277e76fa057aa0663e3d0916c9337b5062bfbfb1de4df6fb17d06d907b922bfaa071fdf7598f5766cfa0b60578144b681b28e26acd3d3dbc1e13c4a9213fd948bffb3c7ebed87501de549ee081fbe1514785392e34ddd4dedc1f603144ff9058f294e77c62ff2724a6a4bb464ee745399a044d876565ff9b9855ea6898fb61eee9c5588be92195dde3fce0bbd60f7a8bfec57171ed96e7fbd752af81e31bbc4d3967683636c2ab744cde456d1a3e5a8f7105ad88bcb6cfe51a897e9699d3898b314ddf64f069659e366a6fe69a606dcf5eb7fc7fdfe925d1eecb02be9fd08676ccd8149c32f75be9b5130b1c37e4900ed7ba094eba1ffa9d9f2ff1c1b57ddff72d74d6db22db96564bd77ef7d997687b48e1b76ec6343053c021a4139bab8e1b3987f2f2d845b6046755cec11c8bfed259c273789ffdfa5bf1a0b395d91f677f1c3ff7ec5f6b56c4932c8faa326b09f4a64e0a7890257123ed907a91e07a9ca45f67d67cd48a7b88373bfd36933f16c4d562df56edaf5a68f6ffd38a6b0dbc0d7b9d868bd98f1f0a7f5425e75af12bcd62f54aff6c4a8ecf2fb81fd6c2a657b989166bf30b373163ed8d9a2a653daaa69e9ec58df4136c2ce026d1d759ca38c3832621bde15ac6ea38b67fc6862ac15c0037e883bfc8fe03f7fdbcf4a08d4edf5d0f9a37efa0e97cebbc59eeffa8e60fc35eeedfffb9dce79ffdaa9fb57f1be010cee38858859e60cc4ab5532e7a9f66dd6bc2463da90bbd8f9ff86538afbf38d693b23807c1412417b8c9e4726c9b18a5e69831f36b293d15d421acbe802ffb4bbb40dc5c1ef42670d2fc570f555585d0a6d371e99af9883dcfec5ddbb2a646f309be07ba095ceed1d435d7d17d24dc935a238f86e762404f049327af9e556675864f8c03f7a56fce9b5e3f26af3573d1ac3353e1d014a5cecbc0e478c0ce6745a9df678f4816be3e3d3edcaf3ff9baff845ff90b86123879b31e5ec1463ad7b0916faccb82c599277a5ab88fc0adc50e752b03175e343ef478dd4914fbe8f7838335250ec987b652a2fda27d34e3fa7dd6c14f1ef7278ffbbd79dcd29fa8d7ab596fbb7cda7d6c8d89dbe2d3407cec94de84cd2b6ca089dba28ee7ed599e373c0da91f59022fc67b78e61a44760dea3480ebd105c650f0d8bd54b44a55f535d1db93cbb5ee3e51d9dac489b7e00402f9cdd5f7297fa7def1fd78af89876ef2901bfc8c0df07ec605dcc65ddf556a03bdae5312010b430e6f366d39a7c607e8fc64f981717ee28c32ebfb69623c3c77a95fa83c72ece6e275121f59b752a5e4ab27709ee8cf24af3bade5eba9c671c8d3f8fa025da50dffff4ef3f347f1345c2f9fb69fb1ef957190ced4759ef437f57a4dfdc9afee3577fb9e3db7abebacbac00ebe8a99cb0b7f3ac40ce042a13753d0efb585bf81c3de0c7c2b6b35532d63d0107d1bf107807690e2de23e3b1f39075c961c8cd7b58ff9d1641c1f117c047e3e238a34c8ef3002c06b43ae9b991b7f49f1b43cf0f5e5ed992deb0fbd8c4c7662cbba32ab1f51c9fba5f1a5ee4693635f3ada676c2f8082d71b37fa266677e2fdeab3837c7f0783d73a5127f0c1c985947ed23ea3cb6ee5ea7df0af47bde67ceb8ebc5ddc7d485bc5133bfd4fbf2a0f68c3b745bc8ba29ebe454f9562b4137a1f7177a26d7fd6dded03349afeb281d46d9f2408defc2a33f4d68fd124be5943da9a778e4d9c33bb114ef44e005c15fbc2b6b6075e578920b5b2fa8838df746994eb4279a96d479c67e817de041892ff1b8347bc663dfb1bfcfe3f8b51e8e61fb4ee3f34f339e3ea86fd38db8fcd035f9d663df71508fba733c7a220c3d7894ee8a7612ad3db52dbd69a581d3062e0d7e47784f70f1bc9956facb6262d6fef94c0b168dbe6545994e0bff915a60def7bd53ab7ee85c7c963efb9bb0160faf063ea05227a16fedebe329e177aaa7a29944f377c1f767de7cff51bdf96ed43416cc567cd4d91a1c77e92309ff3569b8d7987dd3ec49c004bda5f9e69ff1c009633ae8c26ead16682f61dfd1e33fe89107a29569bebfa58e9183fe4257e7ca762fba71e06b43cfa342fa42f87c4ff0672d6acd0d7b4ba389ad618dd97769c246f58393ca4f0e35efef9fb55fc0eb6481fe87c3baf95bfe61ff2c17b886e5f5def67bbe71fd1b7c5d2ff7871f8bfdf2735cffb24763eff356551c3c424f70feac3c13332ac6b8c0a6407beba09f946876894697d903aba44c63fa353f9abdfc6f63da5b752ab94ee577ebf572efae0bff334fb9a6bfae67253595ee4eecc703df71afe00796e5a5223fccd19bd0a1bec3a9a1265be8a1c69dad45bf3da1165b369f51b3561de9af57b4197094a5700df2a3caa001e313c3a4d0cb622fd841cd899f115c96471e02b092e43af133d4a5f254238f3e3d26d2193897dc8bf7656b6b5ac08bb3eff53eb1d2e0ebb389393e6b523fd7a40a60e7e045056cf3b6e3a989af0f348d84eb0e7f0c7063a92d2d9a3ec00711438b1c73499de66c7048274180d867139ce87993133331810f84d5b23bea68eac15f853aabe83d2ad4c3b08f41bf4b354180ef002786f8873487e74f295cdb2b9c5dac59a2edbca42e1ff42ff8ef2dcef0a81af7aef286e9d9e2b066475c87e4d53efa9c1eb08bd6dbc7e4bfe29d11c20b45d1effda8258fd16d7c541575d5a8cd325c8bbe5c8f7974ec0836019877b3ef6b734da05f0d1f99865e81e8db9ad8803e0c55424c4834fcaaac9e897d34e7459f25e7ea6f7c9f5ec3f8f1e1c797e29353fa2b6f7d1336e3b63c6a939f6ea88d070c2e716d273509459f2269165149dd8c6c2e9cb7d2d6776a3d818f4a432d25db6fca8f693654d4c284d781376ee9f5a2fb41a027d0ab6b88b34d4afd4dd1afb02add242ae87bb3095abd3d11bbd8043dd12a76817198905f488e60a7dd203e3c1df6087528f3b86caff010a7aa37aa4ae85e6be06ff2a3d983c82f84ff8b7802bdf681156fd88075d42bc7457fa5087ef620b976aeefb4a7bc140f9f71caaf718ac993becef4feaaf7e065ee64356a3a6d97557551fb11dc8068c748bc59761e23782ff16fc7cb1ec965fdb5c3283c15077d9dafddbeaabfe26f269f12ef13602af1baeda750ab06180670287cce4178d5ce54b6a6f6f62670458ba737120fb00effc0fdc5136c8463d6ee14bcd0a5f8306da925b335b9dafc5965730fc7fb66e621317bddfc2406ad061ed1fc1dda99650f7121eb53d0df1975fa34669f18a0beaabd936810862d70b7d468e3febf9173aede2baeffe3e5c3f6046fd38f708953353156002e06fc089bc0414c1021ee71d837cc8fd4362a7dd424111b997b47cd341d634c78a32a6ce0ffc1fdc4a32fdcd6eb6a9fe673d66bbc010696f55a7889c26bcda1f757021f0bf8a3a13eb005661b5ab69bceaf0e9ebdf4cd33afeb99de04ed2212fc7a4e6c7616a9523f40b704bd0862b74bf12b39eb04c23383c7f69208b18e833d2b8b9b6935a506e1b7f7894f16be76326fbeffb0e3f2a6bc2081ffd355bce1dd5b78c3e13f5f8f77d60f233c2dfa4e9044f921ed3beea3e8488a0fc22cbd3b99d74af3daaa8adf474f69f0b5799cf59ca5b7fe73f98985b986910a8837d5897e2a5cdbbf2136c6698567883ec6aa9a3feb6f85f318c58de5868f323b6e04b78ef7a27702feb79e95c1aad2493a004634a037eada1b65f7cfe9b7c2a1b6e43df174a88183576e751f2f7132e8159d73b83386945eac37d532ebd45e277f67eb96f5afb5ccc17bac45d97cf68949fd358e0c4b7d87bdb0d60e3cb89b49b453d0cc6e42e7b516e23fe92bceaffb245c8b53ad4f425c3a5333c6fbc149cf4e968fe166662f8c4a737ef06f5a002b3e965eb6d997034fe765a3d853a4aeb4873ddb674f312f6dcf3489a6edab3ea2c9b52efa88af7128538b1110fcd012def6aa09246e55f25c1dd5c66abc5bcd6a871eb5f6f527f1aca5ee74f79a5c3b5ff8ebc84d19b3f2f5f75983f5f3e3c3d7d3e3acf7f4b9f7feb2f79e9268fd3c32b1545cb66ffa0bcdca8bfef245cfbb09db656b7bd6a159779ff59e7856e1875de015d52bac233d864c9ca5801f1cd9bc1b35b7ad87be775ed6da2d7af0efdd04c03827511c5cd6df2efce95bc1380ab7fc020ff99a730ece0fb83d9eb235294fb8c5e0a39b3962e24e6a1515bef5d240be995bad91a19702579da0ef95f6896bbfc96bfe5dc6fbfdfafbdd67ade08a2fdb31356b237cd6559d02f7067c7d433d8758f87b4b68454da2d8857fdb83890b0af175296c2edd50dbc9e934f05534009e5b3d15c16f6a35d588692a7a4f4bdc81cf24d1e059415321272fb1e3ab0cbc117ac826572bc1ab347996dea0eee63f22d749e0cd087f43a704575ffe7f604fc4e441ab047a80fdc0d3fb133864666e3f42c774e92fe01317b47a50d4dabf1ee7fd33eda525fab03fc538cedbfdda7f8be12c7ef37bfefd5c337f7ffcd8ba3eff7eae6ddee435bca5f9dc4e4c5ee7ff80373ef544c55b8e7862e1c8c79887e08433163b2af8a79b98017a07a2052df10834d8f89ae8d1bdf3e7061efbd55be69cf44e2fa14dc1f51e9848e6aa5827f09a5927586bcce573a83bc86beff639d454e8cf1392bfccdfd9b39833facfc8f30db9b3ace729f2964d3c5901b37a545172100fd160941507958507bd85b7652f91fe82b9cfe943513f46c9690a0dae31bcd8d358b9d4cdc951cb4ce12714baec274c2f3cbde801af5b78b0d6f4c7ddf6461574028e1a1a15e3a3666dfda4f2929a4fb7ed9bba78083ff7cb5f7322b30fb6e4bd174705ac6c8eba19b1bf268e571ebc89b03726e4d753bba541bfb22d8e3a5acf702cf65a1a934f98586e54e526d633c73e8caab0cd50972b8fe9ec84d84f094e17756a33fe501b0a7de099fe7ff6feac3955ed5d1b87bf129dabde796804132cc760ab08c1339b59286a92dad129f0e9dfbaaf6b604c62d65abfc9dccff37fdc394869143b18cddd5c0d341e80d5e5fb9f75be430ffd7f797c62feb07ea0166869e7441cb5e44a13ec790762b0c7299e77e9a72a636ee19b39f08863dd45538f8867296a85c0d5514346f9b2172b8ec92403decabcbed44f78bdd7ba9698f64f4b3b79cabef79acf3e4af7caa26687e4abf0f1ef847e9e470fc8516de04da00768bc027a662daf47f4e0433f029a0d183fe85d403304de606534697c35d063e13e014d0978bf1f35e607c6c0516dc0edee00c34b4d230b715b459e75441d096a836e0377586c2b89d9cc2dfaefba07ef3278666baefd7634b1bcd0cf0fd1bd751ac603dfe0f451fb7cbb7fae47d8e4974303c61b165b975e4e3ba526dd4a392787fedab297c053a47ee39e2fedb7e3b7c708daa8e0a49e5043c777ca7359ff557c17235e86473f345caaff3817c59a36b011db21e74d9c59daf93593b5f17dde5baa0af5c20a35bd87ac9afb9a7a8de0a96983bb6dab536def66f73bd6ca0cbfec4671cfedea65fbfca0fbd9571a025fe156ab3f554bfb02a3cfb5fe3eb788731ea7e02636fcd87ee6bdd7aaff2d6e9dec03a7ff13e370f194f416ce8fdbd4626ce35b3301c6a9e120d6d4b556f510180cd5ecfd328e508b414d75e259d035a39635b18bd4292247c9e038f41b76a462fe3e92315786fecc51d0be4a90a7ab628a3f1c2ff7a96f5822ee01f66c0a2cd6a85647acb9acf9481c2c71f2091818791cbd7b7ccfbcf99e06afd260486a68fa50bbcb604ec0937ad3eea646480d3e55a1a0e1c6d7cb71c48603ebc5efd5dc524f887a5f3c6749e6a0b6b6696a578ce3743d455e66fa6535f03966ee012fb7f1ae9cfba5cc7d0b9a414566bf9dfb44e62eb95f13d42bea2175406cfeee337686de9b1bcfa29694c2b95eb137d2462f1ddf43f53c3baba0adca7aa55c2762926c890992627bf6da052e309e92a703fc1bf4826cfafb9e7f6b8d3e751176b0474e3c4fb9197a53f41742fd08fd75892fa2780b6d98e199334bef53edef1cc6a6e865d2b706b91eb40c3be07542e3897d01e67acb9ada5de1111ab33bc49c1d5ccb7a7b68749ba80116a2dfcfeb0e3da5735d5f6286b7effe723e57f2b872d4c7632b7015a1c5a5db7fe7277ae850bf6b8938cbe8e3181f657002f1fddbe67bf3475dccd2f2354b3bbb859bd45327a956fb5d317b54379907b6d8eb64eeb99cf34bd40f791d465556415fac59575037a41691ac1d09bd47fd9c39d05ee61672c4ca78615bdaf04f74b136dec3f23ae482a8c7539f7e448fbc7856987155e2fd243eaf3e7cd6f97b11cf8b31dfc4f285d10a93d71a5f135923e9d99b3579a38bef139b5a10f4cf76af780f8cc3dcce642d2e46f21aabd13734eb5815112f8fde0430bfc0e38666decbbaac95de78c6a317f846cbe87b1e2368bf349ffbe6bd02fd3af42802eaf86d2cf64ff0bb95d17891dfdebdfced58abb8f64b5ed4f5641fc3b5f3f3dc5c0fe4dc4603f1d4e8c6814324d7037a832387ef91194c367468782de43a54f404011f009f9be35aa8093144d482eb76b8fe87c4f243af2de07741eeb5321ca5d063ded168fee53cf7c0e604c7c84f0a7edfc0a1466cd8e1390d3b733f3c46f7ca9cf32efc94e9a18ceb522f7a17d70fdc780bef1fa1fe386a3e0fde6fe67b1da1038b9c2e33e7bb6bf2c3c0fe09cdf25c5e57fea34fdde682c3b279e7ad0c3e5804eeb1fcd695f18794f57adc6803d24315fbcd16757b6a67769bb14dff689c7b3e47ffc4f37b78d47e6caed3d6ccd3b0033d22eeb3c48ae371992381cb6b4b6d2ee858c6f48bd23ef5faf01cce17fcf06ae4bf9843f2f9180f1cc7f7f0c1906b5b36ba48e46658477015655f45dd88ba14a67e64ea3767bd4497d7675d702e1bad4dc9b30bf9cca5633eb789052d9d428b1b7adc675c7c911f15de6fcbdc989a9a367f73d73aaf4b3837f0a074f5fd75cd51fa94ac79bd701cdecb33b5af52997a01632c19c3e7cfe46358bf307faaa8e7b12763f459b24ace2fd6002b923db732dc88fb13c737ceab32daa181f99338055aa2cfe69c52a712316a60be1be6b9d1156dae0f7480a949594c6bae73660df4c7afd43595f329f1ab8c43b92e5d53c3b3e47c5e8c21b336c9dae39b5ae0995fb8069f9573367032f480cf5cfc13398ff04a9578c1e8232b6a87d6d3379f74bf5b920bddba4faa2537fef603bd821195586f9fd757bd6892ec3a4f45f63de7b2effda62fb42a66d77a9a7f2de2e0a0f7b9c14ef59d613c9631e20283ec5ced7736ba818d7e3cf931713fe41ad2eeb3e3786abc42d621eac59baeb52a02877d8c7148adb9fc4ffbdde9857bb79bdd262eb09de68373a5b6b38756196b2d1bcfd1d3133d0e36c04e95aa9f7526c0d2373e67eff553c0f7fbd7d894d151fb6bc51eb9c41449aadd170d9df8878c3e05317b9bd8cf1b0ebe955b3ff7561dfafaba16a5c1d17cd6e6fced396bcb9cd1c028248d6f93c1f118ac4275a145e1aa77d89dd0bfc4ee5c6a4fa803f5c5ba565bac4dcb1ad8afd5777ffd6afd3592fc41f27c6846cc9e87317c1e652ff716a8bb8cd09bd3fe6c4d6d4aaf13c559b39f1a8df33b13df3126d04ec0f9c0b8c922fff00edea1facc0140ccec2d10df6c0f1ab9cf270dccd2f8da9c18df307679f7fee82f8c72159c2af22647add7d3555a5af3c7bb577a6ddd664fb7452eef86fef855c3ff7194eb7ed6a166c9ea59f781853ee8aafb95b77d7d89657a8f5b7bb71f4357447f110f1007673cefdeebefbef3d8ffb9c79a7222c67b106a373b28e76474b046d43271a11775baee9ba7debd9fac536feb55f7433c30cad5fdd598a3fec8c7bde4fa5e9e8fd6e3f651ef56a9f53d5e3ff14282322976d4e8423f68e750c366673c46c393e1ee57ab8dd599fb03a39db30bf52eeb105717942de68c8c2b6b01df78c9ddb5a3a9dde3ca672e7a92e72bf8264dfcb5a39dbcf51af6933cb66fddf5ebd7a30afdf597311e38c0678dbcd17b7d3d73bfd1d6fbb9b7bc61b1b5425fdf453dd91b477973cbfd29201edd9fa58ada11d5b0e83a23e048e575cd2dea80b5f1592827c084e57f776c69fa411dddcf2ad337fcbbe3796caf5b2a2baf8cb6133cb1cede15f1ae80ae868fbaa34bad0e75d095e52eebe67ed71dc6cb9c1c4cf96d72df6aeee3f9966337ca1e672fb3efb1fb3763777954c5ea15bd931e7a50862b31a2172e6ac5397b9a1bfa64a83a337c5af4036bf2f5f13ebcf6db93857e59d135f5a6a58cf3c64bd05bf819e684aabaf0b6787bae2ddfb6b3cb1e077a361dbf2c9dfe66719f6c6ff29ab7d35f001736f6e1cb4e7c503dca4dddcce135cf8cae00342a4daf1a7d5272a7375ead1f5e0e11714725b415d213bcc4343cd8ba6e0ccf4855867e584ec0f1a5ce47e4cbbcf74eda3ad5acb3f5d388bd156b58e4c62333f8f05ea3b32658e887d510b8dbed51d76bd3d309c8e381964f76d445083d4fb53d75c8e1d91e357e6b08af3745cf33cbe8fc10bb4a3cedf931458f3fb7b51ec83e592fb7f637c7f64aec3f2c421798835aae8dc9bde22ef606a383037de0a1d1c4a1bf52defc5fa377831a893abf0e35610b788c9afed6dda38eb5e4811efd4be195c75a8dc1a8a954f6b6353d2fddb6d77bf7347f90fbb3dbbce62dd69ed04f9e553c7e1dc6591e3d6696d18db41bbdc8613c568a7ad29d6111e4d4f9824785352c46ec85f5bad51ceb81e475923f26cffa31837fc0aad89dfd40dffb88ea8fb5a44b0dfb83baac01202f0bdca4c173fcfe5ef42b4e93f5e2e1bb7fff61de4b4c6a2545c3935e125b5d480cdcb587f1d8419f335e41a74dedb2123c58c9ad7b9e1541c34749bc701a16c497b28f0ade80e9b3c3d3ce6840c177c489a6b92bf918759ca175fd3efeeec35bb98ee95f58b3ef0bcc77352cfaaff046ee75cb6862f04e6f7b8ed61b70723bb13fcd75e579ca469e27bfe1af38dee66a9bbb2bf4c356af923326c50039beb633e689057faf22f6a8e90b13cb805879fae137b58e937e250f83f5e249dfac2e6a2befcb09fc1465bf31b8a0e9596b09b91d349cc0d171242f428f0afeca81cdc797d0ef26861a7e8f75731c6ad8720d8b3c97b8c768163a1c8b99657adfc64b4ec63afd17a13be2e407955ee773ae3656091d41721a3e7a1a87c4575c7fddb05892bf8adeecd4d4a88c972df2da41aa379ea7ac93f17d35f118b02312d3c9fcc8e9abc7db03633599274627b8877951aafbbc94f535f6cd63c0748d588fc59c9f1ef434778cbed151d5d0e491984ed673c60ae8db86ee1cdeb78d8ff4b85015e6eec9f8e41eb59fc1371775e669ee4aec80bac9362fa33ebecb019a2bce49720ffa4154f8bf34780af8b53798cea68fae0b9993b2ce6c3db38ed5c03e569e0d9ff6383f186c5865b09e2ed6888de5b0afbf25de84fb90ad2ce51157303aaa0d34cae0ffab36ddb6b8b268e18ed5fc515bb3740c2e2e8fb9c9de454b5d3afa20ebbdf1448ab7e73e3f735419735bbbc1c5727ec20fd7e59c449d167e97aa32b8c258e66b2eeb75413f65f4d9a01143edc32d703fc44be4c44fc9ad0b0c0a705ffc5cf8b1c2df593e6f483dee462bc9818603f16bf03f3138c8d260933ac4c47836703155d7f85686064f13da063763e98afc3b5dcc6af33aabd1f0d2f7f88c8af83aac13f5f0ec93376af015f02f95c789a33558a09ad8335d8fd83f95fd9d1838f8ae6ad6b0e5b6130567cdfa13b55c2d83cbdcba5c8bfa3e637a2579286b16f4d775c8dd9b15e4da9c3d644aea974ddd61a1ec65e5b911fba0068b0c6d288f7ad2ca33188f03757c2ce3056c30c7b286632c3439e2aee03920d61898ed0d7c658fba5ed13717314b83efeaa70abe46c08f3938af7b191f88653dea410d7c15e7f2db6c689d119362f1b78deb213db06d5d598ee44eec1f878c7599c3dac46465b2bf94e8adc8ef8c955c7bfa50f4e4766b3c5351772964ccbc7195c20a5c25f318f99ad04c36fe92d38339efde309e829ba9b9e77843d93ffdfc10f52c3c3faa47b206576a237b61fe8193f3dbebda287b1c7c73103e6265aa2e7aaf463f33279eb55b4afcb9c01e05ef0ac985ab55317e5695d701d73ec82b894374cf72e8d9b794f1ed2c7ce0069d093cf1d7afc057c2a767da78505bc322e1784ea1d717ea8de7462d6b26d3fb649ba5656f9e1ebe73e88ffa543d70054b6534a6818d2fd677d8bffc3c3fdfb25f60219608f2d2f4a68e7a8f9cda09fdf1337c6cfcfeaba9eda24e9714ab5003d3227b14b0b39eda74ed89bf359cda11b5f90a657cffa1c9e7f17b2006ea44d386a7b235f57f6820732d89c155a9b816c863d4fc213e175800cbf4458fba001fa1338cc7cf1a9a3f8d2f715873cd030fd18bf09a0c7c0c6a4c7a1e7b08e4bc00bb897531b487ec2357e0776cbc8ade56f02b3946885597c7085e07c0145bc47a2ea95549ac2c9f270fc0239e053a2d15312aaab98fda037816b532dcf8917c6ecd981971a80d5d7289ad9f5e0edccfe8773b2cc6af882d2aab9af8814ddde9113c3e99330786cfb3cdf15a607ac746ab2c27f7033590f0c01a48578e055682ba48e40693a7147ac098829b99192ffc9c7ab2b2a7545cfb252735deea065b19987c9b1a00fcdcaed1480ba9c5c373c33a0bf57ddb6a9a8f668f837ae17446f3b4e35383e336f5c3daf57582f262ec59f0c3af248e18c09335438c4a0c0cf776c40f5ee3f11521d6683812cb6a489f734f4bded460e16ac55a6a6555a13f32ba61561b0cfa416fba47b55525629462dae4d4f6856633b5fb259e8b33c480e0686e801933bcb5a9cc955c23970a2ce3b525e3cf85e703f2d60cfd0bfd60fa957b6519df2e8ffe4da1c4429e79ace69c0e5107d015e241e3c3851cb236fba22db91fb1d2120bc9f36b1f752dc454cb63c3896eddeb4aee76cb27fd6bb1bb7bf9cee7aeea3856133f5913a3415e8ce1f45a19b11bc4ce430366fc7ac61e3af9173eb7e3bff3b9357ba97ea5f78c6747e82fa04f5e1aad61e34933ede018e839ae439d403ff2ec8f0baf9bfa823fd960d32bab594b6dec33d5451d7b72e1c53af9d35eaca8d3d8e43683a36772b1c66f1ab50f6f897c24a0f6d306f5532f2902d76863365e3c9ee1ecd85965b84431f4962b6ac5c87b8607f528f1c3528eed98c772055db3515b5d95d1ec515b23e7c771f530f8b5e80f7ecdee93e3ea7f13def95fea7f6afb936695fbc7bc478bee3192580f3e8ae419a16622f10bf875c61f7fe37992e7820f03ee137ad19edaca9eb0a4767ebd6d62dd0afe52e82342abd56e62428c537ac95ac322b747d476661c865bd4732cee99d7fdf2103ba7e0a520ff366bca691827e17b8dbd2fb085695e82a3fc56070247464f3c7b895a486878ca9e3df15745e393aea091d9686076ed867fccbd6e69f0b44bf2b42bf97ddb72041f84ad47eda2ad77c6f86cd0eb947db5ceea3327c71a16d0abf6a879ae6a9e6b8d9a841c4b2f9cc0686e8646fb18f5e1a396b8807caed2d4915cf007c94d3ed16b095c41735dfb6be49dd4ee6e6a6915f5e525dee8179f398099ecbb07c367b274e5b9accbd1cf4037f737c0a450e3ab40fd5d7e8ffb168f7a65c49e62697cc30a83a7c435439d29e61ad6dcd7ac5dbd69eae1f7700ce01a7d1a136fff13573f720c37d1034789dfb9a2a6648eef066e1fea81396b4cc5b2e1459e2272f8bde1794c8e88d1f0a96bdad6377f7a9fd4ab40ff5a3c8dab85739b7e9f2df09e3277edc68b49c6df1b3751810fcefae7923c62d455c7afd098e798e9985e8aabac53a9375e07f52fac17e0f75ae4f422cea0160f3d763a8c33a68ef1fa71d07788c9e795d882733d700d0fd68c67f35918274b335f91c379d4ce97f75488eb91ff05278fd879ae35e7f76cf41b64cca5d42032639f39de79eee3bec73ae9f2a8c0eb5f9606a3d1a1565ad889e1fb6c34d6100b916b8fcf8d31ce2dc3bb94f721e7b358dae45d4253ddf879e5e61a606da823f2015d89c79be316ecbb185fc16dde7c560c7fbf3c57f1bac0bcc2fa9997ccc573c95565edac425fd73257d98f0bd0eb8a2426714e176bc932e77ab7844f36ae0b7f83d19f58a26640fef0795c84aae8ffb598589d61bc2b8645ee991a35fd2d80a5cb4dfd79e62bf049b7397999a89f38a6c75885fe8aeb14fa07c0357851cfabf55695aae7d517b993fc862ac45e1be6dae83a2b6a3157d4bb1935feb5d6304eeac6eb0cf854d49d8d16337af306cb0a3c731bbd8b205771ff593d65cebc67b5ae05cfd34e20f9d377adf013d60fb90cbcaaa1af0dfc8ccdfe68a3d718703fa14792e4f2f02162dd88f528a395c25e6965d9f4791ff8f4c636982dc420ec592ee2ee416d9567e678ce3af1085ab6c8b9a1c329f1077ac8b5aa64bcca3ab4cc2362202c681c235e18e58c0197c004e3f9a92aa3f37b92cb4f7f52d410da9c2ff7ba4694baf074606d1df3c8ef1ef4c38ba6660e3c9425e774cedafbbf9fdbbf66b7eacbd16e3c976aff4f3e46c8ed9bebf5cea3731143cfc51bd58107dc213007537acc9bb1cb3c56d6f4a5e4b1ceb018987ab5b21aac28e2d25ed7813f7d3c321a49f0fecbd9e3cfe516b5a79fc6f32cabd1db3f85d86bb05f79a19f9bc714e71b6a695de35f9743c731421ea3a88113c327c4638e9403471205ca629d3b04f6e8e33cf8fdb8b0b417e9e066fd655bd4563bcce1242e20a6584163ce2b8d4e50930335ba32e6bee499774a9db5b2326b016c1ad6c092fe874165de8f3e77d48db432e4454145ee4750bde59e92eb267fc5e0936f7385b86e85fe377be0f041a207333fe3b4409f6549ff46d4f59bcf54e631f4295c72eeb6c6f3e1fc5ecd9e51b7387fb6e4f3f0baab67ec714c9a7c4ef6a1be427f5fd67d6296803f202e7d74181619cf35fa0ffdb5e9cb94ac15f1bc20668907afd4ad00b7c4bbf81c871ab199c459d4d2ea316785bf20bdaf4f8c0be57ce6178fcb71dd8b6b991163150f3ef2594be59fe3710b18af8de73177ccdbf63f2659ba7b5d39fdce282d773287ff17cdcf7fa9b97ef7d1871b7e911feb57d060ffbdbdc8f888af9f25f780673af6a425738338c8f5c643fc8d9e78cfb38027c4185fe626ae82b60cf621f6f13ce667d02e2ae9354c7ff328def9d070c5dcccdca6b7cfdaf6ca89269e3daa8d6e0f78f4f4c654e83b4c7355dc29d9e71574b0598f65de383da8145a7fb5c17930c68f97e6be3aea242b8dce5a87f9823aea4251e70635ef2df0d9f0fedfd027937a34d096738d57e5d97b72de0306d7602bf91d18eb35c725c0c8a878e0c87768b1ce78a1dfffb28eb6ac1b8f99c677067d50d94b0fcdfda637fc736fc99a6d7ca1d6cf721e7feea179fb3c8cfba972a0ddd132e61bac1769721cdfef8e37eb0bd3aa9fc3fa17b58d326a7071dfad9a7d123112ea99aaf16c76309e8abb677a6a05f0f366ee2cf97942de26f4be738ef77ad4ec8d925f1cb4e4d3690e1c1678259b6e15fbf016ec443237b6c687a66a3c2347e0b4447e96eb0dfa87765284d51c1e5fc05414068b67b0b419b153126bc6b9ece721f6bf24f3267e58254506cf19d5f3eca4181d75bd568a5e44b64a32f454b0862499ecabce02b844599bf03a8f3e739e1dfa7729b064f7a712752b688227cfe4c74bac3948a37b8ce3307a7839b0d7d33d99f16ec9d86fbd6f3d8e77d37d82fec84d8eefd6be471ffc058d07ecd93b757b32bec8a383967cf3feaab7e055fd63a3936ad1d37ef5d6a7645df1a8e3758af77c8267d76128b1df04d813cfd43f656dff6b014e6f867e0aead612876d88fb54d4207755a315683cba5033ddf0cf605a512794180afee8f25a1b3c0fcc9f053c19b6fc8c967cace93ea957f77d7bb9ef1f5781bd5b3cdd2656a48daf42d493f1067d42e42411f40380f797bc9a7dd934b08645f744ac156e1bed39c9659c05342481d72a65fd000e106b700e1c8ac6da1a709deca1f6480d46f4b75103eeb0a6ba25efa6c8e90134f13cc6ec81f178cb0e06176c353ef8e857019715983e7b977df6c61b85bde692f85ec995578a5810c9e572d6bb1b3ecff4ec2d2c71bbc39a6cc61a31bd5e516f8f71bea03b53f3f5c488fdd1f17a9b7de9767a709baeb3923dc9cdbcb93f48510fbaea2b08fd363bf47518255935f1578eb6723b2906a17233d760862ad31fe8509ba16bad8addb37aca0e51aa1a9ed87bcd867ec3d95ab58df7ecc5d6f4e26f53f7af957f86828fcfc8333e4d6ff7e3410d1e20b40a2eff10af11431f07a7691db8e4df9ceb61e87d44f7c0aa5bf487cc1bce8e378cd775731f9e160607a6e101ddf50cde25e7f3eb16bf4da18e12f5bc0e3589426afa9c354be981412dd1293c6810fb26d0d5327cadccf0874607e0e0a0d34aee3af39dbc791c5e1bf81d7526b927f1351bcf815f7665d6b95d5622f6db10dbc3d85999f576c43ac6c6abb5e4b915fb7a5c83c94f604f0abc4ee496c4aa361ef7596d3459a9df8b3559b7c2a6c8753263aff89970ed68f02a385ef6e1765e6a7196ee5ebff3b02b3578b9f695e422037a0b569e3df7a1a74a7f6cc60d1dd4b66bf2e9a85589392debad835a00f99165d8e025d013828fb18c27f05f96c084c97edf75267e58021f475f30c9aba061affd901c3ad44f7333d6911f59fcacd061ef3ef3a0654b5e147ad5c8f3365e1da19fd96d34de4fa65e610fcfd8d8d0f9b945ee57ea695e65126f00d3dcdc5213c7e09c8fbad6057a66d007460fbc1a9efbf2ac75a8023d78ea114c3cf6abf9db8f1af8b7d035980fe250d27f3cdef974bc3f25be0eb522ac116553938116b1d12d8fe8317032bfd5f4e4d0cfa89937ac8d7f489f1e0bfec860e8a18d0cfca1c1397846db51d6d85237f78d176f64308ac386ef89fba8cd1c23e0d6a7f4b593ef19ab5c4df30af878d4a8bab5c13e190d5f60221b0c90473f8c11314de08275bf7c9c3c3ea3f951c197a20e7b9eabd3bc6d8e1b4b8ebbb82f5f56378a496fe777ba85efe7579ebefafeaa3fe31778dce4eff0b8a14e32fb8cab05ee74eaa2160bcdaca9775e3b7a0d963c38aa376e1d8e31bd3b877c8c6579c699630fde56c68fea40be2534bb3b093c8314f166e0d985e4b16c2c07deeec0a34b7e3ba33f5be5791aeb25b4bd6d623556cfaa750f59ef24dfcdd26f4cd7474c17fd6e101f3a12ebe80aeb404707d024927cd0453d7e02dfb413d7b1e42f8307eb489c39a1bf888c318f31199e97d7d75f60c543534737bdebaee1430c9c2f7c49bd6be39ef5bcee69e26bd46ba287ac83c72696dbe0bd8c1fca097c5a7ac0989c9a7e2f0dafe88c5faa658df66c72d697ec35d33fc619164b3bf4f13cd649d4cd899732cfe942c6f0d92b13bf29232e74e3b9ca52c0bda1ced343cfa2848efca6d19ceba216d976dd5dec7fb88bf4c7669e96dfb8898fde5412b7385775219e8713c34f00172e3c2246eb491e64b8c755b76aea21a10ffdcb9af545707d8147a0f60e786c954e4f47f8586f4f8c15c17781f657cedafc949c3aa321c75a4dee8d2ad31b8b97f0411f165d979e5461ae8abb67bdff221fbfcfa98579d6e286379b43cddff73ef0b23fb0d6bd0ed5fe64f880e131828f28f68d0bbe48003c09b488e2f13374c59cd341d3371d1cc461a14af8b4a3ce3f02b69c1c44d4243afa41c1b31a3121ea0b88072dd903b097708d381a7cc0316ae9c73975c7bf96fb446769f93abedf55b3545b0b77d0b9c9f9d04e7bcc230660f70a2d39789177ad45cf7386e83dca9a683c0503faf6c163f50135847ae28f5f877190eb47196f7d47eff3523d6407bd976367a81f69e6ea1572e93881068a8a258e1e3feba7cc9af8b3b6fbbbb5dc27bbd5835c8fdbc4e8b48b3543ea184aae5143fbbee6fca337aab9650e6467954a73f70b1f705b6201f22547063f0d1cd861584cc1f9e5adec8bca78ae6d65de1f0c4eac7cc37cfc2e9e61fd11cfe07cc032d82db0b892473a8de646c4735451a36474f8c7781d7b8a5731ef03de805821bfff1a813b6e7586455e8d809551366203dc628d2da9a9d47a2ed8d9d36afded9f724d13c26834051287d19f9db946eebcd546255fef82cbad279e372cd63e7bd4f041b48c9fef490353994bee922a59138bbb34ea791ef4672efa2f8aba9d15f27ce021bbcecf2df090d8d317674c48f28c5a243409880f990053b9623d09d8e4591aa5585f6dc9c3147547c1c5bfee5ba1dee95b5de8a38377c0ff8dce3a62987e61b85bef74d897d5659c147cfd9e8f2fd82788315047fd98c91ae119ff27db78c5dd211ea85167e95c70d63ce297137ac920576cb89dd941b98a7ce81a58d47a5564f42c6fb078f02384a7213d0bc93beae8edc9658d6d7bd4c52055c51d7c66e59a639ea30e841a0b7fe306fc3b6b580cfca887ba99456c52701a16aabae05ed7c41676d947f397475d20deea28e60715b144e191f538b93f3aaa5d56a996b14d72dfffef59fac35e05e397c5b7ffc6a7755c43d7a85b46f7a70334a6e2d5b3cc13bde7ffa1bf0a71cce38b8e58a7b3a1a359ebd746c74dd71a98c6c85fe6d44b0b2af8a7f95bfaae5aa70eb18fc875c167d7a8635c601da7a732a2ee5dbd387b91cf14b99eb9c45a327eaa18f85970e94fda39c9ded9e0c43ac4a0cd14358346d6c237de69e0197a2ef57c13c469d0132dc00bb07470323a43a3b6f9e4347b5cbf7ce32bafc7237af3b9ffa2e2e951271f7a30c05cb6e0204f5a7ecebf8a7f241fd48e9ee696c47aa837560d0e017514a7f113d43d70ddaa3930f8fa951e74563d87dec4d857f410770d4fac44ac53a1cee12c2b8f7d3de8190233e9ad8a4128bf91da8b99c907e149697a6f216bf7d313f2ee55b1bee61ff6acd2ab5e21ce30ee134779d6847ccf47beee53921db886743be85fa0479941b3917d8b29b073c46b78558377f83d2da36e493dd6257ca1b87f0077999b9e86f5a60f346db07ee022357d7e60341f5f648dcba3fbfca092cc939c4c3d42ffa022665303c3d6764d983d0eaa2cdd7dfb085cf1e40db10f5017143d3af6bd8c17f84ad6ff3c421fb84bcdf83d7552647f82b6e9043c173796b119af9f5531c06bf413f855a589114d9ea555041fd26ea9b7b9ddf6baceef93f5ea3ea946ce8fc32c1ddf66bde48b1c22737655e694bb6bd7373b7fe7a0f3a9dfbef98ca76fb5d6271ff526b2cfeb7cf2fb9ad3f4fcde1567bc1979c2c7c81f197c6c708cfcf5b36e7cf47ce81d95d4f9ca3da37d82fb3fa1651e3806f75b53233aeb84c4fc3acb1a1c15279a7499bf4cf37255acfe5ac4e141a7b2ee371a686179e6d44277695c1b9d25173ee6c02cb7e4d93e6536f2ac5d66cdfdb5c3fc015e35e6738cf716351bcc1e64fc3e268dbff9ce41df2b258ec4681838d45e40ff8cfb0fcfc5093dfb8bdfafb679f9959fe0bf1b7fc9273ec70506e44f8cbf4fe31b389d3f36fe58d78e7c70cf6b6227a9f761fc086cf6c7d7cf43eae395e44805e48281dfddad4c8eecb5ad13270f83f56c3f7bc96e33876a532f613f4ae208bbc997c18d36f19192dcb9a6afd1ec7918ebd4e8e27ef680fd42136655f4c3a6cf0d0d9c09346c0d96d4f4837759a9829c3d8289e711b71112db22fb23eb324e5204f6c41f9bf1921b4dc0bcc1be008bc25acdddd5b831baee31677812e3825a12a60e52195f31f97eecb5d09f1118f465655e5fa33608ec48ee10afd3ed4cfc5daad3dc6934ae546549ece929a3d542cffda5f19c81be7a09fc31f46fbbc4e3a2aee3d96f5ca12bbaecf4a8f96b114373dbfedbcf78541f7847d3c3f9b90978f0e79ad41b8fa97b7ecc60033afff27734dac4f5b5f79fd6d06990bc167596b6faa932bfe7a9779379eb973d817fb7ce7bc32b7b898c957fcb0dfc97f192ddf673fe251fbeca2a62d72299dfd0241c1b3ee0087b8ef695c4e3d017615d669aab78a734b5e9ecd5c6b3e7fee0957ec1e357620f068eac69b11f18acde8e35be8a5c75335f5c73bf1e1649ca1a30fe9778e210d1cfee14fa03f29d10178ca0fdadfdfcfc9d26e807002f07fd74d60d256e08cc3156f9736b39a1bf82cfcbc49fa5da259e30ea351a4b790dec1bfdc80ee7f520cd0fd49581c617e7f7dbdcc3ff491154f4645447cd9cd1262f2a49b593dbab42b7ec4d8cabec467d34dbf5e754aed3d351d7bc0e133f709302beaae80bc033610a0c819d194f40d424e22c274625cb89430d5cb34fd29f9f7a822ebc31b1ff86c7284e38de277f3fde0d27d6706093e72135e84f6aaad047417d15d819e6b032fe421ffed66e52e447ddd4f0eb65a35d67f4768175b089d3218f770efee2b860dd1c7a44f5b0c88c7611f446ca89bf3caa58178d5694d138b2a197078dc5ed019e6713a309ddf33a1a75dba53592cfa95163359e8db2bf04ee6a639573c405d0aeaf9a9ea8aab7c6ff4375501f82f74676441c5c6c25e697f3683c9778cea11939f1d0231a4e3c57cbe7a739f5e05265701ca103cd4af2cd6ac4bccc338c5e147e8f4b9f80ed414df352c600f9b51a3ebbfa1efd9fd6f59be5be7f5c3ab3dd72b77a59ddaf5f16db7ebcbafff686fc3a671e754c7faae1aea226037fa62279857f1af2bf2455f12a54c580c7a5d05bb45183ab80f9b286452873dc5a1578de1e16d33229c23a06a6283c9dfb55d0865a3be00fb257413ddff40ad7f1495de0ebc20b4c5d98b37fdf85ee0bf431ea293817f0842bf4b3da7825fa90f5f41005c05fba67ec46e5d97a7af2a84f28ebcef815ba1316f4b5bc262665df24a8e51ca13ebbb18ce65a6e9bdab1f16a1ec1530278f3f47400fe58ced3163e4236b528f0fd5cf836f4bad06706c6b9074dc893d1383caa3851c41b69f2e47759e7cc07816fc5d26ebf5f75eaf9e3b8bf781aef96fbc49b3fde660fa4ddfe053c4fa8779937f7b583fdca3a957ae27522680305d4f781076140bdad3809553c73da7a0c260f839765f0a39aa7ab6fede72b39bce45aa31a98058b5a78a30b5d2499c3dd33578c7cb111f536e3ee8138c0bb183967c57854de0ffa16322f81ed0e3e61bb97d4c897f8e4000d2862c99d68029f96bca987a146d8529b297958fd4a9cf56e9696bbe56d5effdfef831bde899ae6d61cdadb56873da5591801afa78e3ade21ee9bf841b940dd951cf9897fe7a87d6ebdf708ec361e81b97e50efb8a2a13fbaa8a136b1a47e25ae159ce5c66b16780b62c8e0bd70ce5122be874d6da76dded4858d87b8f99c71fd77bee1d82be2dcc45499d1ec9f4abc2c399ccbdad22e54c55daaf727e8e03396cc9d371e337afa27c476bfafdfafd193717e5fa3adddde35fbb578488eabfb64b7dcf6250674e68ffa7093b15d3b0e75a91c65f229e0b6640d6b7ca324fe71477558b1de481f6fd40989dd7725a7ffc003b3a9751b1e0ddfcd1ed5f06db0e8ebb23538cc11fd9f2aafe67a1c18fc1170e2b5e941d3bfcf69fa1419f149676fe62c97ef67744d5c6aa98e2cf2baf24e3377a08524b1123d22a87b82fea1cc2b790dbcdb6aecdbd0b2452daea42ebfc48b23e3fda81a9c287d4d1a7d69f2684fd49e095cf6501afddeadc37a7e7880df2cfd710e7c9e1a19d47c01cfd6f0e08223bd10b7c64f606038242175648d5f1beac1589f560a1c62ae75e5aa08cab93f33dad0e3575e07f8f6a3bf055eee59dbdc6ab4cd8135fbb9b5e47a9c561bcb955c585b79cdfd0ebc184b4d4f92f341773029821ade4045ff55d31ba892df9f55389725b5a7c0abb4f5b936da6899503bd9f8a5959aba6835b5d7e0db8a736c74c83d59e332d48e1a2e21f20887f8b7fca88a59a870fd5587d77f6911972f79c4ec75081d74c51a7adb9e89b33bcea683f5f77efb61bf052e7166fa995b97da7bf0ddb45445add928eea72ade85d14366749006cfc3583bf497df15a895f42c531794b1bd353a5c5e4725a8f9c18742c57705e7556670d623c395cfd997d858353c41eb4171ee67c0bbe6ad2711fafaaf85ccc569ee2545f21c3d646df5f81e97926b58e5afccb9e15a422bcfb26ea91edf79151e2ebd0a2556a657a175e15588181aeb42a3a53a824639eac61ebd1da6c4a5a68a7b4baf7bd485c9b926dda3f2d7297870d09154f59078ada386b6026acce696daacd05c8536abf5519b35bfd46685862bb459bb97daac79a3cd8a35579eef67a54af3c3579ac4ffb297507dee4df779ad9e06e698410b6e187446c19d375af2067b3650d88b2acf8eb84e1b2e7c505f60d32cb53d214f8a265d9bdaeb01f1bfb1799e9e05558c3a69065ec085de29f9eb7e7830ef5529e28fdb627ae60be7c741e2c238eddfa62e78bbda9e1dfac0fdf25a219ec83bd43c5d7ebc6e1e758d25ee93d86a972a273fe8a717adaa6e67717e3dbcc03c6a54e69d0fd7d5c17b208602075cf60cb3a60fa8a17bf11ec8178adc35e3ac790f1bcfc7cb23bd9a027b55cc9e35b5250ec86bdeff1e97b1edf670f97bf81be911c87a0d3d51561bab2d66f86ef97017cf1ec7d63ced3c2dadfeeb8dea37fda7b1c23fbe3f38a6acf197137ff517f032cedbffbfef331420b7219f0f7e8a1e3d2cb4036f89fde948ff0d5d188f9ad268d92196453f12f5da9cf55a7fbd965813de13c44d9c98734f0fc3023107b483e57d8c1f74099d56c7d47c0be5d13f243f186de8127e113e3c2fe82782cf6b7cfefbeb61313a8193d1787acaf7c567ce9e99cbc0c3a6a27e89724d3fc582969b1c479ec8c97854d7e0e5c8f7ac88cd0786393d355ef30e38eff0b058e3b33177d80f3a995a34f8c2ac71e39c14fcbd818bf7ddd09763584ccb45cf937dba5e6dbc8ae72097738d73d8c4ec0adf5be2f9feebbbf72c64af0d6ae2a143f49fcedaccbc3627e405387ffa15e757ae9ba3e4fcd2431f58d1e511fb4d7a620d96e7027c035c6bc9830ac94dc7cf8a5ededcf77b5e8dbe98e48238dfe3d78beb52185ffe13be13aea9f1fef09357839d3e81f72e63e55e7e13d69f13fbe0dd13717581bb403f81de49193d4deaa8396662c6e0e38bc1a9aba3fe877ef6b2fa805df9122bf301ab3269340ed0dff326fe2a35bcd6123a6b8de7e3a4a9e78407b5cdbff04bc8cae8ba96c7e90b8ea5454db5fec7b99fc2c70e35d9357a818a5cb0b63a2db256d7df71c1c7b8609447f7b99514e3503f64d6cf3d3cfdaab93f76c8811f3b1adab059aeeec197b0263e1f533dcb31c75dbcf6ee593fa07f7b681e1bc6c169558c9f751f9ab2f43cdc74adb93f4e2f8f0bfdd9c7d79e3e3dd6760c3c0d7eadacc13a730e8385aba35be551b78813ddb37e41bd52d4c721966d617a27ac532fa9f70a7e18f41dda7afa7cb836ea26af0bfb8f789f5fcbfb7e317f1c3758b163e4afda707e6d057fbddc8dd1bfa7d7163557738bd76f7b8c26b2e76ff34badded8df121f1f0f5e23d4f32cefcdefe14f5ccfd71bbe96bfed8799abb81fa25eea9c6c7220a7471def14ea1bf727a347092dca4bff42656aaca5b2f24a3d6487b6be2fa3c741b57057c1c25d1d574ebf9add660ed31e23be3f1d3eea0187c04b066e52c85e3970c84f5dbdf25a1213134d4f66fe35baa2eb763daf69bf5aee7fb863b946c1f8d7cab96d4ff4969a20b9be47bc0f1d2162eea61dccab07452dd8895c13eabc52f3757ba0e66b731fd70cdcc2514d2c2b3102e7fba57a52eff005d771067731f0b9ec8596466be8043d6978f18d9fdbf23c9ab92c636a7cffc3fdc68a7c9acb92eb9c1686633a8c93b0ad7ef7e5394f1ebbdf73f0934e41b7d4f7271b1cdf49d73ed777daae7ffb1f15f6ab60f76bf9cd6bfa38ce9d6111d6c45986752c6b50317835eb908a7a5cbf8cc682ab8d2e3470027f269eb85fb803377b1c6cbf73ee4f395615524fec9d0781debce198a83ff62e96c84d2c414feffbd3598befcfc4e9e56e7633ba17f21977e7eb24f349ce911cb370efd699b3b39abe9ae44bbf1f5b8c72e803367e5249e6fe916b610f5e66cedafa9e379fe6cd895aadf4e81ac689a3e2bb3fb297248f77df6bd517f541f82a22efe936790f7cef225fc3674bed327758e4f5c27fb74e9d7326c6d5126fb7dd57743d7fd4569676ac46ebf266b117adf797beaf51878706bacd9a4f93a76c73fa719fff80538377781c94d33af0886325e781394a78caa017b6ed807b38016ea31c4a7ef4a89afb7934b13aa10f4fa0939a74e5fea1b98fe7bfd004f8977e70e0613518048363b04c1faed61bcb78bce587b3cf503ccd5570b2a0714f8c033950d5f9f823b9f9d06c7bd59567389361057cdb06c77af49b36ef777f72d1bb836eeda01816cae1e7f33dd16ba6169c03ce7085fe8b352c924fba59aa327bfe163d8e7a02ac14b4a48f7ae359d0b79b582574bb100b048d36d729e2ebe1dd0dbd14799f14585f608b754b4ef1c8e91f96f7fd9799739bbce2763e934129319a7ec80e6a9fc3139cfc90e55117fd027850f89d417703da19e0ca1baf8568e259e8f3c9d8c235455f8e381c1943f0e05d5ac480023be5185d6f708ad8ef9dca2d7c21940f9c6845ed9d3e70dd43785d7ae01511ef8a3e22c60e6bbfc059a0ff1b019fdaf861ca7b005f07ec84e405c496c30fcb68a303ebe3e077d2e7e24ddb043e0dd49686577aafdbf9a26758191e6779c1dda2f7a03f40ff49a5273bf475aab7272ff477a17e7839a0bf8eefb0347bd1f6a863f0713afafe64f896f83c7028a39ecc73792dae95fc167bd13b3ffe17fd89e1e96bf0b7c08dd9d4689e1afebe9c7b65438fb1d8c9f5ad802d9818fef1a6c1fc4fe5bcd56db1a723a77fcc9ce4f596f7b63f1f8f9f3da4dc0b0f29f7d2430a6be4670f29f7838754fda587d4e4c2436a72e12135f9e821b5bdf090da9e3da416a6bea8628d3a3f7c3ff13cdedb0dfd65731ffe9f11f760979c4cd42d9933425f26243e00ff4fe9f94ddd998bff9be7433c8ef76ebd2fac77df3d9d2b9e8ab2074b0e6f49bc91c323abc1571a7d64453e79b7926b6d9e3bf775ceaf6f5b8f74d6bbd5d3e0d7627b4b39fd9fec094c31270ccfa1d4bdaeb3e891b3a7d9eb7e1fa3f54cbf6d2fd775ea11fbbb6b9977eae7d9e3ac5a389dc93c5d3ddf286eb0958eb5ea759d58d6bb78cb6b451f32c6b9d410b4e94d3aedc4ecb7780bbfe162b6d4179fead785ab6fd357a45d6ed960ba157b59dbfccc8de77ee5b0d7865abfb91f9c8c467c45fcbe79dd86d7346a5e6faeb1c19697cd5ff37ff33c3869e6bd5bd6db82859b6c16f7a6ee769b3d8476eb24fa3541897e5965d9d0e4e979366a70bfaf03eb49bcada7b9f577effbbbfbdf38edd737ba9eb6b996b94e1bfcc2b98ee751832c2827fec051fb9cf18763d6d6c9796d85e6cdc25f1e7465b9c3b86dff4ee665ff380bcaddf2a6715ebf9fc744f7a7c3452cf2cea71af1888358a413fa128bac15b1c2e3576811b4ecdf8d1fd7a72ced6ce3f44775333ec5fc8c733f48e6d3ff4c0e9a35f95cd3ab6b6216c3c937f18c3c7e7f3231a7e5bcab0bb6cccfc6fb5db574c7a32c5ddd4afc229f713ac79498672fe6981fa72cd52fab07a321bcf13c6db7f18842bce29875af1e167945ecd60879bb36d755577f93333cbe68796c2e6b6a3c08f5aeb5d7ddfd2a2d5f978eae6669721c3fae5f6e747f6b932fc81ee5cc7ded28278787d3c44f1cd46f2acbc3fd7d6e27451282ff4b9c7bc93aa37e86b6e93e3fe8c7cc8667671c94093401078e4ee575ebe761dc5217703ab317f7659db983ddec7f9b56e7bfc50905b9bd2a9267fd98816bb2da5835751f2c6bee0f52ede4b55c43739d501b6bbc08e535d0a27bcaea9f5b4bf27a1b380a37abf1da54ae6fbbb57572ffe3304b56bf96fbdbac7fb5e10d847e60cf19471e5837c535fbf2ff61aca8f5019d8ed01916b995142db87ff25ba025392d17e42ad7caceecb9bf7394e1b2a87dee24c5175ef4ffa6c647ad217b087f8329eab7aa485255f4439564129b5951703271f5f4a8a1efd1cd55bcc31aa32bcfd3e7e773eaffb0a75947fdac8cd2bc5e6dc8ab691bc7c5f7fd7ad5bf5bcf9c5bc605ff712e85a9b32f4d8da34b9d257096478cdd1803b8efeb4dd9bbdcea2735779a1840f691b4fdf54c9e6669679bdcff789a39df9eb7d730fac6d3a79afb81b32a8c37f8f6ece7e9c02f1cd8a1d92b7b7a5389095e87f432b0a13fdbebdaa13f9218de812e7b7ab2d1ef832e6adfccfb7ecb58c05e2f1f74b870ec5de2fca8e6b7597b6ae963d8752ff60bcdbe56ff593d65d5bc67553f794ca9d3bc92eb4bafdf408e71547cf7ac9f100f548827e43a4e4f1e3d6b9639749f9167235e38e829e28e106bb473a21e09707df0f773db61d6e01bded1cec9f481b4c4229d5511800f89d865d75a9346cfd28e1dbb77bb6fccffa7b154cb5a3d377aadf071673c62cffde0f4e131976b854ef5969a5851afdb31f9a06b7a791575319a5eec96fbc22516747aaa50cb9e78765b6dff384d8eab5ba9c3fcf96bea5db9a61f1f33d774cd6bda729e2ddc81e401d5fcf1f986e3aadfd6062bd5fda51664a3cf0c2d4883f179a72179a1e72cfbb5cc2d6a7e116b015d6768482eab375d814b2d81b35ee5c6aa0cb7fc741d6fa41afd49bcc759537a73a16fd036464b7f54b36476b31e92edebdabfafe98d586edf666c7573dde2f5ede2bdceafe5d3f8f9bb37751537833a8dde9cb9b21e7330e234c89536d8a52443bc873a5edb7d75ffa35addaf1f678ffa36b916ed6aa9f6dc1fa438e7d3137c2f805beae1aff9dfd4cb57a18a93943174706ab9bf46328fe6df73e4fdbe3ae976161f7b81d476a89322ac50df9c7cec0beea0e717a527d3b75de66d7bebb133db1bfffde7ec71709b358856f8980cb8865561bc223f629be33b67c89e90dd0e7fde7f1ec6ebab7192e495d73efbeadebbcb6aa3115c7e88a34ee8a7f42c8ffe31ebc65fb796c79262f61c3d641e3d5b82131fd3f258d986b7421c366aaacff09b848618fc2e24ffb2f8bcc1b24e1a5ec514b917b0e9f4b9779ad74cfca002feddf85c863dfa73847e3f55f1e099fe40d04169ab3f39ca1e778759dab16e948bdc22eedbe62a1e1bbfb04f7a62f517dc00effafc814721b41cdee234d4f4246f08959d397378ceace5317718af0a7212a81f0cae443d3aa8aa5b2feb801ab2d09654b9aaa8914dcfc30f7ad97bab5455f7b42a82f2fcbdcef943b79a40074bbedf2ad54ede560b69347f9cfd5af5c7eb6c5fee46ce7afd9d4f5cd57acccfdebd97636a9f1fa2c7cc9efbe8e1fe15c78a7e76d0d109de72c0bdec9dc169e26b277a84b6a9bd2af4b386fe7472756d9571401ecf16eb11b43b2ef76572403a18733b89551b4dbc0bcf843df4d94bed9cde8ec55ead0c86e7ec35917fd09ba90cae5cd6353bab0db7a8d7b52e3d8557d4ecf5f0bd62683d39f45c6a74464647e5b7ac5f2783ddec69b05b3af9f7b8fcb4de2dc181021f701ab8c3626b47bd6e730b9d47a34b434e0974a897c7a8d15eee592e7996e496e8aaeb816f2bb1dcbdaaa9edd595f7f7c8d99a920358ab83e6d83a454160f33da67cdf9e7c662063c0a3b79ea2d7c9e6c2c3e64935f78149820f2ed64df81d58f4bba6df3b3c50825389de659abb4931a6a66f3d05bfad6d9f7deac85ab8ee67dfb9d9151e6cb743edcc0ceb86e6ba83f5c2dc67dd596eadbcc3dae75dda365f36d7e43b5fbed6ab9a74cb8898158f6b75783ad72f6283f9ebbdf1b8926217eac7aca406f29fb82eb7b90eb7e32904f6478e15f7d8fc28711afb8ad907ccb36530cff06e7bd5153879ad31e95337d9cc8c66c1c21d748c468e9aa5b3db9c4bed382665e8ef5edf6bd2e7c708be7ae3107d9cfb5cf2dc6a82c7e1bf25eb5d3d2ca61e39c161b9e8d1934db7d7798f57e9603b7f1cec3277fc6bf9b4bb459d167e06639fe63afe8f6895625f4a896fffa0f75f6ae3fba3b7d0247e96f9a9eef30e75b381d7e89053bbc65c8ed29313fa2db95e8976e78fe3621edc2e5ff2f7e7627ed4a8f3668c37ea99c41bc60bb50b1e4fd4f31c45be9eacb7e030cbba99c0977f94ab87acd4f7277718933fd27a2e3a3b2b73d6b7c59bfcc04f68e3f3c11ad9f4a8ea75ca6b83fabd17351aa6955753075379718c1cf692dbe3a878fcd7626259a17f97629e720f6c5d3b4ed2ce7ee194dbf83ea96fa64656607c5fae9bff136ba6e18eb02f76de0bd1170be1cdccbd717a0446aab87bfd583708fdc042eeffd61bf86b116f8f2ace0f2a564785f594afd73d6a0e341855796fdd6bf82bd30b3d81bbd7cb98a9e5bc4e16fbd9afc5fd18f88a1bd953ffb0a6d354629df3758ad2d387d836ccd59967b46c78489eaaba0df7565ecf3e3a72f5b132cf9757b881c0387de2bd34fb73c3c3edb5d72b489cbe357b1cecb3b47cfdae757e5553ca737d9fd7ab023d993a29c6a6ae09ee8a3bf1b5338c577f2de2a01c126b5e37c7712defcb63161f4be4b13af4133c36f157ce301eb78ca156bba57b9bd7edf7e7ec3657f1eec35a3c356bb536def983f0b26f6bb42594f1563bc7526d75253347ff5aa51d2b7918ec6e86d3f9a7fa53d086ebd3e3cccdea89bf4b9525f9e5fa59db99470c3f7c4dea39e6cafa197192931fd4ce3cefe4ee4f684bef42ddcf6cf8c33fd0c746ef65de8e8dffe558d6df83bcdfe57c6ca961b9cdbe31bf57f980e8d555f0a8abe93dc8f9b4ac97120797d82fe3153d6c1e338bbc0de437d6b0502ebceee04d171c86454ecdaf37dfba5a4d5509fff10db4ddbc109c51d93b15632457b1d7b3f12aeab7753bc36269c77e7664af7a04cfae081e75784f6ac64d95332c24369f1e3574dc645fcf3cea67dc392acd4be899a1ff257b397268e3a7a91cfae0c17fc051ee8b8e26d0603bf7c1e9956a95c3b80f0fe6466730f483dc7832cbfff46a66bf9cde7df7f019b7e94585e7e5b65c564d5f3d38480cc13e7b17ff9bf7c3e36dd7b1f9e3c0d43c93f52a98bd668fe3bbc57ef53a4b6f73ef6989c575864552985e4f3e2c96f0368b269e0d5dcb9e670f8b6ed5f4273535086b7d1f1ca378d919165bd7f892d173b70ee55a3ac362ebe98dd7a1276f177e718dbf7456610c1e15b4c573fabcc19bbe7fd01be8afc95c2a1732fed1d7f72c95aaa386d6f5f618c567efed92fe645d7b5884d5b01879f4610de8bbe6e3189bf8101c570d5967e7bc9e78d0ff8ca6a84b206e8dd213b50dfd71aae215f880f416eecbb9b270aee4b7f4e0c3e6496c8bdf5d797526f329c6f7ed9cbdda24ee469f569ecbbdb75b78dcf1b39067cb3c90ef6c3cf50c575c07019e5355b7b9c5fb9aeff2d742e27c6a2eda7a7aea9c354cebfe2be3f72ca7a69de7d0833cef64ec1d9bef17f2738cef7644ff71ac413ff7d6219a78276a7c0c5e8713798f2ede035af1f0ad58a72ade3d470fe0b639ca8257ab8db83f3dc9f58337b97c76045f3ccb1916796b4fcdcf73fc7b6e5fc10396ca09885bc198c23e651bcfe4a38ea16f5645c0082e6dec7b93ae9b49ce50bd8d0f62080399b736d605e86a2a9bbed9f2bce7e9a79703343ec1975badb1be638c07cc3fe5daefd551f7a86bca392a7f61835f381a8f4d4b4fbc1a6b4d2de357f686d0a18fe5b434de87ee7082bd929aa5fc2b1b0f4b134783fb15f5baeec4df39f02c047fdfec850574185cd425e2d181fe75cb5cf7b3cedc5f5de087ba060b32781ec63bc9893a9213e9a737cf72fd849e5e6b6fb3f7637a779cddef9c793ab6b3b48c57e9cebad198bcad4f8bf50e831037782dab9ed6391e8fd0535dd7437afed71a18afe6bec175b9e49ecb188797e8658cf3a8dec527f407473c24ff9bf8461eef839b328cf5f3305e3b5190d749b10a157bb81538847f33fed4a6eb1123b97bd6fb371c66d8339c96a7f6de86efc758b99bb9835f0bc7eeff7c1857d9f7f8fa38bee0c995143a544f590779c2c67335758c2da35f67cffd19737407bc114703ab83fb186bc358cbb8f088cb92fd7a0c2d72ac5f8cc9ab6862493c458de00adec38d8eb7d1151e95c3383b46f1fa0ec730cee02de3054bd647c92d91a75ab9bd2ad606cf963906d368708cfa593ba7dad400e1eda2109bad8a61b174a9530e1c1c7ec3b0e0f76acb4d1fa5bbcaf4d276d9e358cdd255053ff6fd8f6a91f66f5ac7f8f76a43d09b4ee98b0e6c62352c96dc7399efd9662f02a68418d90c7be53b6c2abc72a1d3e74cfca0b3da58ee353cf7bc67d932d6f51baed6617cad6c625fbba86d6827671c4cbfe1fccd6fb87be1370c1fe1c39b8fb0051fe196358c97e59efdbd59dab7e2fbe469b9fff16b910c76b387a4f8ceefaee2aa655d01ff58e22f15e7c728ce4c7e1e1c23625fe05b1005a65ee09cca613c0ea3d4ac67938bf56c82f52c554eeec0673fbdb24fc173bfebce9947150d1651d1c7da620e3125cefae98571ea2eab81b10516363cea3a93f54de62bb9d229351b26fefa1d56dbecf7c45fffc9bdb13fd8650e1effde1bbfd4409175617ad4dccf3a5803e86951316796dc7ed4418e596f8fba5007e32beb45e6385eeb2d8f2bb6a86329831d1816c0c975de8ec9ac61934f12a75d9ddfdb8746bf43dcb38c71cd71027f7caba24f82f140d8781d625aa756ec8f726de5d542c63fbc493c576f039bf9f8f4221f97f794ebd30fdf3442bc4a55f028b7e4bb12472631e8e8a8302fa6b2e77790d737397a0fb9146b14c5208d265ea79967aa42de23fbb245ff11cb22d6568e4d5484da1d7a776e56594785f369fc0b247f9235b796b9adbc2c36b8ef8d57a937dff80e8ef367cfccc70289639c08fb0a6ecf358bc81fc96b1d85fe21af73140fee54e5c9b9c8cfb738375bd3af583f036f9c9e8c269ebaf09197f1b274d1bb68ab2dff3e8e98cc527de66a7ec711d7e28846831975b4c3b058ca9871197f120bce353e3c46beaef93f9e9331e0a116d093e3659cc87adce5e30edeab833f196fb216d4db43f39a9f5be8e7399203e9877f8e9fcffbcdf5f8d902aedc5f29158f8e11fa9a49885ad763765095e790bb366aea82f5b0c01e52ea4d977817b92fb192dcee9bcf424d4a8e9558c83373cee5ef31fe7b98d7531b730e9e2b216ae332df549d937bc6180871bc8a47f25835e4fa60f6dbb09ea3e6a9fd885e478d8f83b9bfa546589c7c1db34fbc13e376ea10113f1c9e8645ebde5f6ff190ec56f73f7eadeed777ab74fcb2b815eccd9fd41aea211e299177a5a76a5828ec5faa1e14c322f4e871e35966bca06fc3be8bae87322691634d3b66ecc8ebcb05f626559bf731f5dced414fbc9afb49c87150cc8a619131662a64afc2dcb475e575a86fdfad96188f19e726fc81727a6ced4f8d174f95b17eeec878e32dead0257c828007eb176f35b41ce39af967e69afd14b5e2e891da7c91c47bd4c3aa5067abc8cf6ff4dd55d5e8bbe7c66b04f89346afdd1c17c00f8cf5e47eaa8ac133f5b496257c2d6b788f715f2da0ad66ee63cf2f0d66e5f52d2ec8bd37cf9f1d39cf920399e755cfb3f416dc68834dc1fae16a9ca71c5e4991dfd67f5bff5aec672fcbbdbdc67cdb76ec453ad82d6fb307dbb2af7e97ea7d40be9dc4133d686984fa522386fe531e7b18db4ee80f1cfdc655c66326b6ec4413ce0578ac6da0dd21c71a8edd9b3ecc1cbd5ff2f72eb562561bcbbae49b9e736468c34073c468531293dce88544e88f58e8954531b88012cb39cb0a1e501283d267a8f22cbdcbca28c80d0f6f8a1a26f7968c7c51f33b8063460f0d799aac311e63dea53906f1a28338769fcbfe86f783a7dce4bdeed922ee1e8889bffe7fbbf13e7e59ee13ee2d4ffabf66fbec2673f1df8fc1c2925e6f81acc59d45cfea0ce3dd5ac62dfaa471d68cfd926be29d8a7a88dd25cff23ee93aa0ff079db18ee419c64748f6128f7b499e5f62f5d85b44dff314a50a3d13552f11db84bd73cfa40d2fbf069ef051c65f464c44bc64cc65c1b758721e685e0e0b653882835755619c832b0bad57689dca77c41c72787e0c1fb2c7dfb2f0b7b9fc06556fe50f7e73f4cb6b7eebdd2bde63c23ea6fc76c39bec34c79cf1909b666ee625e32dec2f95cc6fbd917c163a0135623ff4aba6876121e73e686eed153908882ba37bd9fbe41a8c8eaa5e1bffae2d3d4fc9e32ce939964baee998bdd9eceb6db5a3c72f4b474307fc3b07fa34ff4ea1bf92eb6437ba90aad7b5e8572af3a87b20de7d6a7c6855cd7995e7f46b337e6ef06b6bee5bf4d77ea0ff1bf62be4f092bf603cc87ee00ce359dddc0fa105db450d5717d0f8070e87f72df05416717082af61a361b9b70e0a6bf5ff2d5daaf1aff1fdae96b53bdbf65f6f864ff1c7b42b1a4fc1a9b90ed951a3671c54cb7a04dfd5cf7e82d03039a8f82e0617dc1c1ffa83bf8c9f72617c0765dd723026e10f18182f5a75d413cf9175866bda4ae989e7d29760e7eb9e3c479e077296caf3a015807d3fcf238e258fbd02d6ef25a6667c2539767e244ebcef63fdea91c7433e41f7087f79704524ae1a1d91a7a3d74a0fc33f37de7eec67b71933b7f33ddb74ad4cc616eb93effc244dad9d988a1a7bb0cb7e10314691bf7e251e0b7ba133424e98c97ef4b6d7222ec718943154a16e276b20c62cc6ed3a422cbd3dbe619d247f64cd4f9377603c2f6677baf23c7044cced9bd6c05872de5c3ba84379d1fd49e640a8e2d55f31b149882194752af91bc7aff27b588b5a7afcee21bebb6abefba61997d3a38e43ecbbd1bbf9477c19f4117af0b9453f41d33f57e2342f465d45be7fd86877345e7f15630c896ff45fe45c34bed7a392fb48c34184d727316071469c007d714dfeaa25c6c37550d39cfaa3921bec91fb521bbe5ee1dc490ed0dcbe9dbbb0ad8e5ab0b0c62f4b57e282c17f7d6b025f9d6715b0527efeb6b6f3bef1491fc99a7cbafc3373e5fdfa1e87b989fd1add2cefcb31c3d8a3f3b6e6e7b9e12ebfc521936ee3977f18c6d34394c21bbc9af86d7db72ed6deeff1f07f633c5417e3c1bb5c4322f4da1063daeccb67e0828073b58137bf372c5439824e8c7cb7e696383cecd90fc86b4c9fa9af74e591af57ec649de9283fcc9bdb8b35ba683468ce639131b1a9bde4881f88519db2dfc33a5d5bbe5fb0b03abf56c1798dba5b3cdc668fbf1de76fe033bf6efcaca717e31171e6e51f787a1fbcacdfc6a2c13c65358eb3b0e76ecebed525fcdd99271d894146feedc632862a7813774612976ca82fc3985349cc8af7fdb9477c88de2cc7b5c4b1967c46d3db75e9398858a11cd5414762e008df39e47c92d80471a8c427a883a0ffd3786bffe131f75dcbbad24f8c62e808956aab3ae4a09858145ee561c30ffec718153d48c6781efb23329e4747e5cfaec5a82efb16728bbe45d5c47ae813c4e181b19ee4f6e7bf6a58c8d8439ed39171420cf414f51e5d98cf615dc8f9b9b54c2d283c467e5f11b322632cac50d32a96c4a558322eb725bf4f8311686266f41b2b9e93fcfdfcdb78276df2b7285687619171fd0596d473f45ee2cbd00d9bcf7ac70b94efc473a51e5f9877167705f717d4aa1b2ff903e306d4cd2d7ac5e377b197c4f374d2dbd385b7e7ca51fbbc868606fa29b95c5f2f0a647dc89d08dc22dc82eb613ebb45ceac0c66a0ff4a6dc4c05d6dacb618ea4f73f74663dadfe70454dd523d66d59ba7c54af2af43042e99c42ecd1e62eec783fa4afe646a188c752ef611d6a0a0cdc99a58d4e8d7a126d6c4ae324ea95b27f79b75fb727d30e3f88fd513e2fd0febc6e3da3f50bffa1fbcfe9b8bebcfbaa9e969e5f6b0c86a5eef2930a7d48ad8296856b0475b2b6a249ea83981db77ebd022cec015519557c6fed27056b2cedfc4c2666f0a2ff6a6fc726ff21097148a9e4f5883a96dd856236ffc307859ed93feea3eb8c9b8a2a58601ea397ae29dd454c9b5772f7a5db25f398c295133b5e6b2c703d36470cf13afa226183940e419f595e2ba075c337294337fb55bcefd7e61f8aaeff8acd4b40eaa55d1973d5dc6a779ae5b422b21356356e2e2268688fbce305e53e79258894e04af57194f5d67cef8153aed4a7e8725e33f2fcdff07052fc06daee25908afca1e6202ecd9c3425973708797eea207fe62adfb59d9e0f23fe6b399b3ab32a7dc5dbba6d9b997b33c6a733d33d7f8e316f219a617f334681ec37157e2c562fe382816f7c9b5eb5a9cc7629cfd879ff3db31407fb15faf177bbd9b0532ff069de503e7e0adceb5c51fd61081df599239e00800af6701af378ca7073db1ec690dce4845adca99a3b6b9f3853e77a9aee32eaa6bb88ba4084e5775e6b79627c734dae0ba0e0c96dcaaf1999557a2778c187e49de1eea1aece7f2be3a4adc036c709239861b58a92077e47339cf8313bc812696d14ed561f420b1d2d92fb89e434365f0077c7e13679676acd1e36c3d4f4b68787ff76cafe973eae761dc4f153d7bab89bf4ed5347756c520d4e9d57ea803fdf7cf3adea5beee6d60ff9db7c1c44fd2883a0aa57a0057c14d8ae459c56319f7f6cf3d72498775899183dc295658f74dcfc521ee1c6bb9a72bd9cb72e24b25e7dbc83acee3b857b5d4296cc6d55352fffce62c5cd395ac2566488a3e7cbbd536f792a21f6a8cadeb7aee5f79657ce133905ed59b37f1b0dee67652ec387ee2bbbfe2789a6bf80f0716c6f4e38bc4b095aaba1d625d8246c7e044dc3431a59af87c4bf7f818c74e66fc2dac2bc7358f7d3e0e5804893d3e1ff7ee73795c4b0d28333e251ffbe633ff3f3a3e375d0bf503f91fbc69f97f25dfb52d0efd7ee194dbd9e3205ede27c5fc9bcbf1058e69f66c728c83dae6d697b1d7fedf635e137085f13e9ffcf0543c08753f73e6fef4a8e295a9d785a773bcb4f13ae4506c1dfa4fa84ee8d3eb9d1814f00b5dd63aa1d14b5d10f0b0646d511758d66e0dee13747ebb1d62e08333070cbc23893d5b729127a9bd9e39493d4bfb55e6ac270ba77c9d3d86379923b4c4cca5ca5127c303386b390de33ef8ee6f3a4f6f3a082b59afae63d5bec061afa993967ef57eb3abf9b7beff2aff96e3a16375a1d36095b2ae4a0c7f2dde9bf8e354eff3af73fd7870b54620b949e88fe1d9c5b57a4c0d2c68070d1c83e36babdba0e68fb35df2709b7da836f96a34e996ea21f3a04d0c2dbdf0a0eff303f825f7a77a5884c415b39e086eb2eea16e7454be7e85f606d7a3a3aee9e5afe32cd75f7b4e7db5ae7afff9ba3a0e15b403036f55046d7b1f7af1a8bec7c7277e09bdfdbfba96c06bcb1cfd2a56baff9b5829c8ed6111b8b1a947c2d7eb1e1c8c92fc90e9514f2cc345826f1d7950137885e7b25ee1f896de1ef013fe8ea53fc6d295da74eb89bf2a8c6e19af63a18eaaa64605f844c1e904ee84d1ac8e7a5ea9c02dc88e3a56c7285e924744aea8174df34aed7fa78eb024777503edab0a9ac94576d0167481ce63e0f76ab83b73ae75a3235eaa1dcf0dce8bccdd89675f9d437bfdb2dcebd7660ebe3f97bab9fea5ee7faadd56e63b55cd31a8e5fef66f083ae6f9e267d2d48c077fba361ccd1ec7eec21dfcf7c859ef32e7f57bbdfc54ff9dcada67b8ce4b592f8faa0ec11d026fa608eb05f64ee844920bdaeb96981f88df02077baec4f01b602d8eaac88e86df24f3c6e4a8e03d57c42487e0d6bc1d030d228778a3ad63bcef5ea1e138f14e8a7c22ea9ea6884da105a70ad977a7e62ff92b8e833c4a81272e802d466d23f780d9aba1577e327c505bc1ef2c830e840277cf73a240751afd86c81fe5bae7b9d46f08259fc923c985657fd99f64af58d34f2133fe4dcad1d51b2eda684eda1a5a94d39af89241017d8422038ff84d176574445f73e3b91a3cdb51aeeff11905f87fe00006475db1c745fe48467e6b7a323174788c10b38e80271916794d5dff863fbcfa8bfa421af95c16a367ea9a75eda4e0ffa70e869fe4511b605df0b3e43a773de0bda19b6bb9d40f0dff006fb6b35b3dac7e2df707b570f47fdfb2a6cf1feddb00af3f73244fcbe41a616e4d1b4ea11dfa778ed12eb5a9f5407d3b68fa3e66d6f5be68f2555f548ec7387bd3080e0e0a633590df74506e2673107958e4abb316143057d482aacdd877f9988cfdc431f3d6339c6e079a158e3a6a7f69d696adcbb5855a53c32274886192efaf583f28a647e527a99a9e644c9ee67e5013ebd2782310dba4dafa5cef7ff4177b5dfd7cbcc3381e3bf67a9e96bbe5d3e0d7f269b09bdd264f4a62b2438bc77e379efb773dc047c5ff89db3b3f478ef388783fe2cdbc5521eb32ffffaaf7c85a2cea09d05ea376e3087dd0613c3d40df1bd89691ec7339e34ae80155c094d03fa3439cf82cd54f2fdae0a1e49832f655ae375e853da4a04eb0f2c7bec1cc78c322cb754ff285d06069ef1c15df5ded6f8117737f2ac3b3cf6c831b243e50f7881bd49b6ea5fad0a43cea7afd4a6ce25dd8b6a6f6713edc6ced76dfe2b1161e5bd1a4eb9831eab2d7ad3aa6ef5d43abb1f2ca65ddf4c11575a7f05cdf51fbbcc192187ed55ad656dbfc9f724c7daa53a0f7da6896ea1a9cd64af738f63530a50a7c0568a36c1a5fe31175412acfd5c189f37603cd03e7e7b6e1bc8c88af853e88c1d6b25775d28132789f1c18736ae3181ee3c3d7988261b1f41666efbae4785fce376a128527f4fc7b9c2fc0b305ad35a9ff6bb11fef1669ff38ebcf5e66f7c9af9b1dff2dbc4eb4fba15617fca775b644c6b227fbb9c427ff717f0b9abcc9b38c7fd596179ddced964ffad762df7f4df6bbed2cfdffdd6cacdac67f5d59e76bfcd60ff0cfbdcb2a2317aae16e7e7d8d8d7e1df3a46d67180f942a54aed34fda3197f555fb0fd55747f3fb1fc7d974f0ba4a136be1fcb0e67d7d9aa5fdffbed5be51ebba6b8cfc1c98cc465f4e433f23642e0caf11c4f587a6ef877a018e51c8f535eb0739fb39c683a2961c76478c25fa8726f7f647a6dfd8b5f4d99322a337d9c6b323687685d8c314f445ce75899392fd6b6295a33890bdd3a14e4ba38f054fbd1cb5e06b7db0fbeb7d2b796dc438f4dcfb3cfff5ce3ae36fdae2d4b1b3bfc8ad3430b155d786ae6aaa508389fcfcecb5aed90393bccf685152f38b7db591c1c65aac15c06743cee514da57d163833bcd8f51bc2adebc3cbad4efdc58ac9b56a83f18ad2c6a576795e7e909b5d186c5d2f47fe5359ea51f3368a1fda47e9ac42d9d6191287808565ea592ac54697ed4b836b9cd3a4342fd8122c8c987096ce2a5f03ae48ae08b14125fefa007887c60e3d9e82dd781e9e5a0ce93838b06fd82656781efe0b9e4cf4043ada3d2d33182a6e048621f4bfe92223c46d0730747bc5ef4bc8ec69f658e1da7f8fe6dfdd2efd7b2e7fa595abe66fb7e31ffd6ddfb5cc7a7378bad9ab5a4f7d55ab25a0f8b5ce23ccbf0c3ded611cc810b1f09ac39cb468ba9c25cd97855066fd4001ac5f044f18dbefac47218dbc24fff155e153226f7ca78d8841e3c95a083cdb5645874abff0fac2756945efd9cbf62ac99b27fe6e5b048d6f43d57cd7a68119b31ed5cae25f087a21642c5df0abc988b3501189065e7a7f16f96bcd768e2d7129f417f6a83fcf8fd5a02ad88803ab7f1ae202724a4370e3c40502f76e477ade015b43335a2dd33c641bc7bd5f496b1e9f1f34eafc168e64e3b12f70de381a3f7ad637d130bcc7e2d9f56ebe57e7ccbb59ed6f396b15fc8f1bcc19e76245e68ea625c56d691fbbe6ab455b9efc3fba56b9b7a1fc6b0a9cfb8f04c484fd8cb5133d90725f4517de36b8c5800738d7bbf99bfc83389672f33e89dbc699ec8771cc6fd3b85bd2fcbcfb7a887a36f7bbdee39457ff9ec9b465f33faa429d46e643f5c1eb5c4c2d062e7df17b5d5baa99b7ec4affc84e676979e9c38afde097a2a3dafa25ef6d2d46f654eace91f81c7c312df8ff3b8c4bcdd5cccdbc9bf9ab7ceb0d17fc77ab774d02b01cf66f0cf7316eb8dccd9a05cf853533f4b80fbd10f99356f8b2b4dee9e653c4fd2ce344bcbfffecebd3f7b7e877e50cdfdc117b54cc9b954e31f9153a746598d378ec6ba305847936ea7d95ba389d5591583c278279e8c9708fc1243f04a517bfd9effdff31ff3ff4fcceff8fe47317792edf7fcbe86d594d8d560c4d1fbc335c6fc21bf56726dcc39f6d1e121709e63f55beefd6fe364e4d96ff3eeefe2e4a2bf462fbfd8369ad3f21d0f6a1a90c7b8e936b7c8dba9f731be3a0f26fef87a1f13f12f354135741ebaf421e7df175851d56008fe293e2e86053410bc6111561ce70623ba01d6103131fbebd0d0268702e72fa3c6237a984b1b9f592386359a3d5b976ba4827f1d6a96057c1c702c75faa15381d856728e083e52d0ba778df6a9bce6a8fdc481e7a5e4b74537d70fe8c3ae15f5618efa4dab2d57fdec8b75ab4f9c2e728ab3476baed2dcbef0477bcb3392ecab9a45db7e70da161b67f26b3d7fd4f52d63097ebf4ea7583b91f95aac7c5574e9ad83319af371e8511a5e7f3c885505dfbc1275a31efc234b68e53ac68f849e2455d47824005b8bbd5072e5233c1b80c9ddd2a774037d01f8b76695074d766896c09bd2ecf5f043810f858d3d89f817bc1fbd6196dc7ba821543377cd9c46374bd50d36690a8c84b9ed70bfed17d480b1a8d782ba98ca750f7b9eab5cf4946dd3833dea8de7aaa78caf93df546f8f3c8f23e8fcc1d3a5d7f81ce5aed15cc17e488f2ce046799e8a51cddac192e786fa4a727e0ec44a2dcb21631dfadb621d5917e61c973cfff2bd713e0f86ff7a307e04a59c2b4deef86158acfe5a4c2cea29a0f747defcb0502ed7aaadf18332dfb958190fba25f9628e3a46f03e5cd23b6ad2683987c72806a6b283bddef88dc11f46ae1b3fe7c0ef1f189c56e3e38398c45d19ff397c0ee23c60c3a88b1c638ded704dd835df89dc34f7456b7a0cd40b7f445d22d4e964adeebac378d97cffa61f5e018f65f41ea98133caf5342f5592d5133f71f4beb59727eb03c9dd7af5a8bf6b039f6b03320fad10f8226861cb9e5abeeda9a3dfdd531117abd4ea18ad23e00bffb93e9dfc27f5ee329a5ad44cb3fecfc4fdb71ecfa13730e9d6737fe04007f6e99c6f36ffb78c017eb8b3c7dbd5716b87f7edca38f664dd862e30f5281de83a54d0e3a5e6dfc493397a18168334bad65fdf65353513c6cff4855937382b83f9082ae268c70a7ac4d0e791fd3483b69f7ec86cf207b788fda287ac9efb89338cf5abf1bdb0e8733372a9abf6511bcd606665ae3fbc1c648f8b18a3d4caceca28cd590f9f789eb24e5e081d95cce6bc434d4ae653ae598f2865eff8237cfce4eed7ca49aaef7cf5533dca09fd9d633049e8e15083a90f3f79e66601f09ae63a3a3ac93a737f7d503dcb791b6be394e3774c4f3be898016fd489265d07ba4f3e7a80926719ccdf4045cc3dbc55a19fe11f465f2d7c0f95c0abec13163069ebcf90dc55f3f447357f1c7726f7bba7f9ffb2b8e05ff240aacf3c90dd071ec8e0f7f57b7bb2cf8c1d056c5bdb9af3c05eec3b2f8bfdea71fe387e1e3f0eaa853ba86f72aeb7e36181a38939bbb1bcb93f903c44e2ba1334cf9fb283dae76f9e4ab23f50efad43ddb6ed3bcdf37fab9bbd2a76af9ada6d12afd94643d4361aa276e37df69f6a3a677568e231d98f548df8b0d775c8f70d25a76d39aef476e4f4ab59d07f9d3d0eac9b1c4fedf60e2ff465feae15fced365d7a5b145fe0a2aff3f5acbfe1eb79137f96463dc40aa5eac1cfd222663c70a0795059b6c4a7cdb8553dcb45bc9afe8178d519fbd9e3e0bbc6fdb7d7bd0b4cdf75dd93c17fcce58da003961b7e4817dab43ac8250e2df5d38b8e265d5edf20effcdc5b357ed35366197f9ef7ffb7ab1dc4f3d4c6f51f814b729b35cbff67e7feef7fef32f483cb3543ab38c823f8ef25edfdf7127d585ad092fbae375dc7a254e81b5dd74ff216fee8002efe758db8bf1b2fd684ba38b22695baf24a6d67d6dc0f1c608ef7d6219a58d687bdc2c15a72ff27f60afb36e3cdd6bdd0c1971a342a5ebfea9e5c93c0baaed931fe5bcd0ee002ad93454da3c04d8af1b38a67e013c4f1328fe8b9096dacc8d4b1dee2db11d6c13fe2b999687b89f131be9b39c9f1db97ed0af700b5ca810f2c317cb0d0ab9278bda6df9aa67ebe5cfb9e05ce942ea687083865f4509c61a12cf699b71efbcce8ff5c8f3d1eb383de7825d60be262ea6111d443e09d2d7759bfc3c8985ac71a7c872fbc68cb61115659d5e02603d48da338cc59fbca8c87ac666df50d9f5937b5635d0cae9fc37fa7fd704597417fc8c7fb6df27dfb77dfff5fe9e9fdffd97bb7e6b4b5356bf82fe944aa72a920618b624e152081c59d819440409c6ac342d2afff6a8ef14c19db78edeccdeafebafdfa2205c12084340fcf611ca84d70564eec915f59906706bf8658fcec1715bd47951903d02f208606d8a1b37858bb45569e54b47293c83e227f744655e98db2fc9446fb8ad71dbdc736a16680c35e542c7e1037fa33cd746f79d0f1e3838666ec27deebff49ee70ade0e3aadc5935a6973af55c6ad67a931efab0a8379627ddce9e3b6cc25c9d147ab1ac57a3a73a0d5ae84d648b6f82bb69442bb9e1dc845f39fb246d71449f313e378aba53de1a1c64f028a1ab3ccecc9834eb917da4467d6afd15fbd4a2073fc31c6b0a2e4c09dc07eaf3d0cd77a9759fd4ac992475e791628e43de71a39bd0a18f08fa9f8ef8d87bf40c5e6ce0fd54e5a57d94797252d9b84ca741c07d2f393f460b6f942d9e0543484f9418734ce60b1ed1fbd19d478b594313f843a558734bea4b7be76054c14feaa4a24d05bc9fb9ce662d43dfce39e9b638a976e2a92dfd8ba9f711d36b10d783e7603e9382d30d8faa46bc912ff1e00ef53b6eadfd611e8e5787efdbe5ddecf81583bd8dc194f5c201d6925e3963e16b99f1969f743551aa091b75577aebade3493f921cf86af2036b2ff9f167d57946e6e6b81b4d7f74973542cc17877dfdd91ce37ca75cf65973e2079a30e07d579d072abcd1c9f137f19899cb75124d9e46d9c2faf0381cdf1f9d0bf05b4d61d6fe6c57ca3909ef6c4c7c01fcb0c35ed12ae1ab94bd845ad067350dbd51b63ae9762cbd5d60337b0afa01a883b61a9c86c2ccd91a5e9953ac65bdc76838676fb4b895cb90fd9cf7aa4f327e4f2a8a5fea0c26bfaa2637fbacceaa814afba1bb34fbf9a0f0ccbd54c433bdf271168eea999a4758937b88c71a33e6df7aae9a355a719d6dace76a78e9fb2b3dfef248bf948dcd3f18abe0fb1deb1d7da4773472d433f996665fdbf9a36a055fd54cf0821a9c7cd4d65bee133296a3f1a59f5af3da0f65e329efec8856a2b3beb90fa67b2b7fb25fce66e7c5dde04b07facab8234e2cacb36855aa0f75ee37d76b5ed76b186f744fe1af7f247e7b07ecb7f9ce342f45dffe87a732ae37a36cf134caf41cbe10bf0a771a99fcd9c4d2e3e3adf8ccd9dde03c9ef776f95dbdf9d2ab7f5fb74a5047827e994f2c4dce58ab6ff296d913e32a754aa3d59179a5e38fb2d5d1ea72af2bfd04fd5ee48105b1917da71d65eaa8f01e27585797bc0eb3a7ede5b8053d6cfad077864f01fe813b4bfc9dcacf7e120d3ea8abad4eaa5d57f029856f0ff814e2491d9afd7faee95b5b43ffb709ced07acac835d426de640cd71b553b37892689cad6576bfbf6374a6d5ff40112ea4adfc8d19ddded8f8bd9e4afec6eb6591ff24f598ffff26cfaf26cfaffd1b3295f7ff9fc5fef5b4c437f5d99f1570666bca518cb4140fd87dd115ef2554cde4513d4c8855b3dd7763d045ebbbcd433f3a10f217871d5046d1699f9397846ce62624fe820ac4e9afd2f9347bb53939b6743abfd5fff3c3847627863f2c0b8b734524fe15a5f2d5e7bf843fb3276ccbf2c223750b37e019cb7ce74c4fa066a2d266f47be6562e6245a7b129fbef7f599c233bf662e18132f02ce20cf45ae4faddf79f79b5c706ff2a89ade3db1597b9a69746b7cbbf85dfc1a6e38cebfc6f49b317d963ee83ccdcbf3ba5a7c5b9afb70289b59b54e940f9fa5a3ca76c7f4bef0f0beb9ed9d28f44b6715b5f5e94f12d3efda2bc5c3b4408eafb761cbe745a9fb81bbae6297fb48d9bee618b176f6184177a0951ccea5b6013526cdffcdbe223cb1007529e12f21ae227fe91b318d716f1a6d4c5c13acabf856ddfff9d2db578b5c3f150f9f1307f00f6bbb33ee23b7a467d688ccac11d5f0bfaddfb79c3aa8fdebbb33347df5a0f0977da77b3e8dd69e3edcec8b335fddf5a087fb49ea34ff28266854edb06e830fdd0f5a9347a47dd4f7a1efcc5cc13c774e29bceb77f45fc33ea344abda39a591f02da0abf8c26fbaf40db9c2fdf6a95376dd1f64566d9e3ec0a0b466cf2950af86de15c62c3968c5116b4cb4883471ef2df6c2863ebc4914b7abf68ab738bdfdc5abd7814ee288f9de4961bc17be70ebeb47faa2b73fd91b6994c9f13c058f749ec3eea8a1895dbac827a54e65d645b996e4929b7fd063dd03a7ad7f15f595bea8677e1be2e42af97f9e933af33e894f076a8d2f71811953faa6b99c43b75afd2ae0df328d26175c13d185c45cd31735805062c121f44ca7d1eea4674503bdd37bd1f8aa86de285b3c99f8d38c398d18b868c7c8f762ab45cf1a2c784e45a9bdd2c4aaafb409b9264017c3cf182b7a8f9136ebbb9947e08469cef597fa44c43d66d538a27928b8c30b0dc4a41f045d3cfbebf7319d8667ec5359b7660452e768f9dc1ec391cf3af82c7b0bd4c9bc71bf79789c2f7e67dee2f0b5dfbcc316d5d4b0498eea80f5d2a777c0aa1d6525ea708817a60ef8d1d08526c7b9eb47a27fd0604d2ee991008d8e06da05e430f9ca0716be5487181e04f48cc1a38c4575d22d7b44e4ae84a8d92bb39e223edd7fcb5093583fabc6ec1feaa83c937b252d3d48f128c72a4a65e64a039ddc5afa4de63cceccc54217bde95c898740017c2cfaadf0635ff5e08760bd16a6e8c3c22b82fd11e864d71a35a1d827467e233df0507ae0bb531a99f7db47f4aecd5adc2e91e741fb1d9c1e79646f59c6ffa80abd253c564ab34f9ee91df1a2017cf9dbfe89b9f169e7c53faa59fd3226c0c9066f63e7937b17b6d0890627b62c15fd2d2278fe678aba8c0d38dc01f9e5aa54d3b0f7f3e00449b4f9d3317d44cfea0ee7b031e342b7e8819dd973450fd7fcde67b3968e5b6aff711e8ecb947ebd3dbe06af8c1bbd2d06d56cdefbfd49717ab77a35d56a8e5e43adb19e250e7ddbc6afb8fb193d2511bfceaafd336aad5b33aea8f5a0a3a4d3fd230ec5e46b43eafef591c799f5cab3634a6fa165e150ebcaecdb7b4fedca1ef8a466acf0ef8ded97eab628891b0a6b9513c729e77c144ff4b6d341b23afcbbb3591f5be240cfac0f632d2c3cbe2f29bb7386664d102817314cb3c66f8b7dd6ebc6d6775d740c646d431d6b065f727538cb71c7d4f1787ded7cd638e2761a25c03edcb816fe787c1862cce7dec65ddf4f9ebf7ab9577bb9ee34d21be642d44e637f8c7d36ea96e05eb5c4a5aa129a23d02430f7dc691fa385d43e0be9a399d7cd7b75cbbd165a6d47f1a97797c0062c8467377c52f3734b2ff5c95cfb96cf32f19453f666d51ab550ed95cebad289720b9f9c16f43ddcc2ea0f888eb39927c4ab74af597db7528123979ce0136ce297bb58fe66350cc2dae4a9ccfdde1e37ac89179a091627864fa36e3755a7cf54c5b68759139b931cd50372674f37f00369184b0d12e8a21d94cd013dc9eddb117dd71bb575ea15ae5de133e74fa8a59c972d73fa3858573762b4f3c1f332de9f0aaf7657dedefb9a1fd730ba8107ce6535acb8a6593c54697231c4d8528b6db36875429da11fb4297b880efee1733bc134040efbbfb189c7cdb15a5bd3d1197c32c437460579ab4e3a5366aff7d4d6c4ba633e3f40ebc6fa91013b2a3ee9ec7b7bd0ac6dc56bc595b1e564f0aa48cc319a31fcc0a029d0c5257a1a38f25b23739e6a6bf6a8a2116ddfb346ee1e37ab36c1bea08135e579e139b01d63476a5a01e6056add2b9fbf4f3f6b782403c7ec144de0d1df14e7ed403f3f83369f33628d54f47ec292d705d7b9462ed1eef8da3de697abf03d2a20fe48fe06ade29dd45e575623f0c2435e53af271b0b36c991e3cb1a465da79ab9b6b95e25b0817cc45ad9d24bc7fcb67565e2c214d7283f89577d2dcf5d736e2bea1143e347b5c8c51c3ebf11779d0fcec5c3d059cebf7816effbff26861fcc9553fa6b9333f845adefe0dfe008cf29985588d99c9f3bc7678f44e2955f057854a36c82de39629e0ab5f7a38ec58b9eef71926892a4efdfd3bb780f8e93ce0af2eca8236379e78d7d4df51d47e2c7cbcf3dd13bc41e1b7838f1701ebe7ddfcb6bb7c54ffd623eec8dbdcd667958ff5e1ed6d9daac979fd53be996180a7c5f733fb4a27e5918705d5881e3a3dbd95c554313bbd4f42ccc03f27af40f6531bbafb0bbab93e407c112da31ecabc35bb21f06f4f5be8e6b5a352f7e34977da437dc40b3c605c0a2c07b6ecfb19785273d75daa201aff42cb5e693ae5665d74f7c50acd577bdc5fca2d708cdf5ae6f79ad97899a7e2398fb2bfaf2e943c1b930bfe6af73953bed8d32cd9e2b786cc5f156df83f161503dfa3f36ff673c585f6a1a3efd3927735c0bbf68ccba3603dfaf6846552cfdc815b5ba50cb30b1b43aa5d1e2430cc3073da240309b816019b0f782cbc0de8cf7931ca74681bfde798d0b463439bee19595b62763b9a91c571be1a2528743fb78ecfddb759f3fe9fd12978d3e41b7e7fcc77bf270b3bcd37f2d7fedfe6f8ca1ff398efc59b45592f49efb2535bdb86fc93c36afb9e6b53446be133c46036f944d3afcb960c08f693f0c46d9a665ef340f92a82c5368b60fc07715dc1bf6fa5136e1de1997bd753581b60bbcbefa4e8d1ee04e593c20fb2ca81f83fb046f437d5792a3156dbe6519e26b873a6013d12d97de6d065e95235e74a7341bce815746cd1c63f9f5f9dcbd7eedd671b7bedb38ebf9e7f47dfa60dcfd116650bb6ff182eb7f4abb893c36d7e47b653b6e4d9cac4eaa42fd187aad6a2bfcfb26a44f499b4b5e32f6d15f47cf4df2115b77b09ed59de6bc781b33a7031ed4e45ee0d6b62b603a4d1e8318041c21d61275bba8a88fa7ac8eb387f760dd0e03ea2f42b3953a8dedf8087d52e855425bd2e579cd3626ae81fe04b560cf8a7e26279dede70afb70714a2378f9769e59d48284366400cdd77688df49cdf75cfcbc77565f9fbabcadf96d456f04ee20348d888dc363d77f69ccb9cdaab89d9a58fe8a271fbd77dfe273cd3e78a52f8f38e5cd3e67d6884e1b21f4a6d1c4cc51606c6eedb58f0fb34de16d7e149edeaffc4fd277ffa7fdf9b29dc9ad9fa57eee4b4d3a80e6676472693ef275c5fa7ac5f599bc664d5ff0cc8c579387a35717407b97bccc9e862f39392d0562971df4fea01bdc50db57f5ad5e68ec9879b4e4e351b187fac3c4ce2a82aeebd9cc29ebdba032c5bea90fcc762d3a1c8df6e26054851eb97f7824370f73d3f1cc3c83de34fd046bebf5aee95d70d60dea2e0efd8f14bdd3db8dd9634e693406af4ac7ca27d7dbcc131524f0c54fca746afb5705b4e8c1df076718b5fe1afab25929be6dddf340ea30aea6bebdcbb523864ff148b0ecd8f71e7ee33ee8c6a17e3cb8e9e63cec236ab1f88da3aa085eff86fd46d935b0d396a54f3879d0c949ddca53cf87fbe5afc9e7f440bd4d87c6fd1b1d9af3753dabc5753d2bef433d2befb1ef78b36afda47f15cecf9de324d1fa29bd2f6a1597ceac82370b6344d4681688ff35f5494ccef982957d8383c55864bd5d30b217f96997b3be79ffcb31989fde583359cf7bbf8a79fdd7fa737ae5dd508753a57a5b9f3a603d869eb6de9de985d10ffc745634825df446156305eecd2bf651a981eb11e7849a72c0350ef7b5d3c6155fa15a7ce2d8d307fe757c4a07d0dd6dd65b87bd4ff6a6fc5135ae6f1e030fda3cb62b479b7566bffac2d95f5b6b7cd62666cf581b4c6e1f9f83249a796f70d397becb32f7e125441f7d624ec12b51d9ded62fea4bbc5987ad7e8f59f3d8c7df54e0f1a13f803d98bd0760473fd09486465a58ea79e9b0f63799eb87df5a83ff1e7bd44d834674923e142df0820fc0cf796f6bbe7a1b3aac39eb277d5fd4d4af1898e7ed8d63312ae6c3df9f94e7719baef8bceb6d1f6d6f1bf5b0ebf8dec4ea33bef4c21d627cae7bf73c61afdb864d1621c672d34181dc013cd8fc5c735d9a3c935f486ffa0c3c446822cd5535408e31ca7626ae33eff305dfe965c0a099cf8bf789ff9bf86c6ab8b466ec736dccc957cd14bd2780db2b80637d048e68a810db99d8f5a138a539b42e4e697ef6d9c7b35e96710bcd30d6e0a8d7b20d6be977d4662d9fdeaa459eebcdead78fcfbc5ede305e77ac21985ca3d2aa8b57cc58129ec0121c3825e3676df26f3f357b296a03257306d659516720f68638c4a2b1ef85af893baa56c4b545aa5477d0a4718015ad26d5a85af5ba6313dbe8227742dea1e14ba5db18fa226a77663dbad5cfe239138caa718fefc5be1fa8fcecd217268716d8d2e40af0b78316d2f32bbfd46978712ee3f2f237d8d7a0af726b5eee0ddac779ef2b3f788b859886ed349a7d941f38d7f383c9f5fce0fa9e0abd5bbd2b5dea3c4ca0f370833e9cdff1810fba27afd57a1b585db7c6be86f7fda39ce797d7705efbf3d6e41737fc965aeddff19d9b7ff677989cfc7fe27a5dfd1effbf81bb1d3dde0d9e179f949f78430f861e41f0ac0f119f08d7a9a6dff59831753450e2b9d302f379073d0c624481310a59b389f69df7bd86fe86d9873692ebd9f877edb1e7bd7e568d431ca15bd4e9bd89891d70b91fd91f840fbe96da13fdf2b9feb3cf3836f1f3298df69e897396384fe4eecee5fb47d5ca81f6fd001efe47352b7ad045c07e68f6a8fc28fe65beec21ec619b387c1af4e43b64ff79757cf1285ab9387e5ed6fabe382af8309a7377ecb1ddb7c7e7359d3d99f3469c15d9ba66cedf87f7dadf901337e095f5ba82f7f873f79df49df3053b2b38dd05aec7633f0852de43f93df9eb6b52ad1ce06bab1b7d00c0fb1dfe7a9cf77ee5fee433f3c96f88dbc698136a7e367982877a56df6996913a6af6fbbeb167af13ed9bbc2f3ecf2acd3d1078a501b48e46d9003dca74fed2873739313959459dded9be87dd5f9352ed4aff3287eef01f975a4bb277a31e03befa0af356653fe67a67be3fbe1543143ddecdaa477ff8d7d273bed6e0375cad11bc2ccb93da9d89893173fba1388eaa5d5d004bb1f350f38f3a1f33f6e94c0ed7ce7ec00f688abeb7ed890523ea63bae2a5fdef7047a149934663f4dd58d74f88ad941aeba8ca9d9168c8a566bd8766e00e5e28f0566c174a6d0387ba3a43e420daf616da427cbaf8f818c541d1587feb187848e4c2db80de4af79263de9db96fc02f697cd27979aba660843523d69bd5ff6b7a497f1867ea7e7045f738bc16cf36b768f8a4d39bbfe74fe65933aa760eeb25ca294c9e18c197411e2de721081470d7663dde9d5466b956b173f19e9a39efae1eb72686551eb153b9e4ab25bce9d5366c57e093298f1cf51cf517700a81f9df352616613d69c57901dcc88edcb279dc9a3945be0e1e853726797313d4f4b3453e4c4ffaadf4cd81df2ec4cf563897512eaf2f36d0f68ccad23e525ff1e2b8e847eefc8b47f631c92b32e7dd1bb7ab93ae925255a1d5de35310eea58663f510fca01161bd830e8a01217833aebee289e7d1ed7a2558f9a37d4824ce5b78b1682e0a9f1fdc47667eb0abf9bba5c67bd157fd9a8e834bba03b64d6a9ad236b54e8a11ff4cb6a61c1a35bbc68e39e7d2f3d6a43e016448f407c72939efc967a54951eef7d41cdb0768c7b4f6fff9df810efd16be8347ea0bf8d5eb2dc37056c05b9b0057d3bcd9a1a15164f77eab43ab3dd4945e633498fbcc42ef7eef44056cd0bffbc68986be37755e0aff27395682ca0fe227ebaf6fb76ca0786df8ccf6dd8136d5afc168d7b59886691b997257ae3bc0fe673b9dff17ec093e5faaeb7e2fb29bf4d751ec0e29bfb06f3070eba8d5dd0eb5b95ca53f04895beb34fbc4882fe8d9e3aed63dfe9150db407cd38f2c981d89939e820bff16fad0361adbe5b1df6fbe561f2fca501794583b6099b75b5794a511f1f93e3c83d3fa0ef19eae01e70732d6a41c01d087fbbb6580bcdd73cbd2b4d0e791c65e0d794d4e5dab9a36c98a85f45f3080cd0b055ece138f4c24c805dd0fdc001ef1db16d2e1c9bb1c53198b9eb9087be89343c5f93f3a81a8bb6f9aa2437266c88775d7932ee1ae2a494796e72d016e7009f6be152223e5a81f3c67c4c415f97980e6571d2be3c6f4795c57e611d93bc76479feb0cbae39e78cc3929f4f9f1283abc71a9b241027fe0fbdf1ae70b9e0bf4a1aef6be7360c3e8ef0b7e926f7e5fdee1baf11b662ae031cc382c4b55fdf8b634ebd9bf3c76ec71cf7cf9b76adff7d5f3d6f23ba1496feed9f9e7c1e4bae3233848776759e3943f86b670289e9be18b175e03cdcd1adad2dbc023bf27a7ff77bf3b27fa9057257b22183f6307e74d0ff82378fea23da3b126111ba0dac5133127fb4af617f85a688b8be9bc2db097dcb8b67c6f4c9c5a3c4cf693c3a0f9a4dcbb1b72e7a4d46e015c1f72d2eac75c3be83d517b221b269af861ef826fe3b0afbae8b834d46979fd9e59357bd2c41fd4c06d1eca633a807f2b74db96a8476f9e46d9c453071e93da0393d7afdd98872cfd89b926fbaf3ec33b5df3f67faa6f6a62077d288fd046151cf614fdf7f294ce25f7ccca929cf83c9855714f74a9ac9694c7f55b38ce0de247604be929813a5ca9f2d2fa74798c579423fde696ba516fb0a8f39b7dfea3a53f3badef66cdface8cadaff5e535b6d4ac213f88dbf850831af7f3e55e7965d3e976d9fb3a75ea55cbfb0c7c316add9beb3d2fb33e41cfef0dc76647ad06f5ab08801da10fad3782675751ea837876ed0b4f7cdd9af5d6f11ea39989973cac63dbf0fcd877dceef55bf7277ff8bbf8aae7bed5922ed37979d47bb3466c22cdb5c5819752f77c7315870eaccf963a76a3aaa8858b5c0bbedfa7665d2138fb0eef2c1a1dca1b552b87f16a19a02e81eb96701d7badc16ef56e6bea1f85c8bdd34c3fbfd220411d62dcebf2c12837b1cd51346e4d9ee5cfaad8fb1bcedd755dcaa9e31003bd02ae5f9bb83f2bc4f30bde0f4dd20f1ac169b6c875a93d7652d56caeb205704fe6f3c21fabf5c7fc31f853a6b7e3a4e2a5d3fb6b3dd0cee221fc9435c1db342cc189775fb0da56bb2a2ea9e9084e56f0b2bf0e9f990beef877681d41cb801ef6d404f3e96bb6821f95a6af0cf17826ff30f9a17336f940895ca761fc9f44c367d1d082fe12bfa7b4e771a93df36d991527857a46e8daf3b67e4b1a7829c735b95586f19a9b9c27510f05f32f8f7aba264f64fe9713578adca70cc0e1859658588b179fcb7d5df2b868f86cf189a34a05853967e4a54903cde74ab9e671d550df534157a030b9895b3441c31a547294da3e7a8efc0d49c03502f9a70f7d50738ec0adc527ddae8ee2e722da05895f4c03278d72739d6c2e6572d6f3df7f0fb58dc8410027487841963b1a5373bbeb6fae9abff91e1e83f5d39396da96c9cd346a572bd12ebcd00d42cfd3e4a1f189317f79d2f42beb995c51757968219a0fc8cf5bae6bab00ffc015c84fba2d59df457d74f03cb23529f2927c6a51a0fe072d087a3ae0da06a9b9871d3fa4701f51479d3c63bd452d7875ab669bac3d93bfd673fdf4950bbcc6098faab226166da0309f880103b73e9d0681f20b675469f823083e20209fccdcdbb0d769ccf2be3ad05a873f5b41dedcd4cc4be7044eceeedc50ffad0c965171e21a833e95ab9b40b48dba5a7e9df6839e8ecb5a7b8af570c67501c717f590c0a103e73fa67744965cea5ed559748185b3de2595894be103687e2f746d79ceea28188056efce1eb551626f1aed91a7a86cfd9cf6c1310a84ebcd75057945d893da768ddabfcf35d95ca7342f6b3d307bee353da5b0a61ed28fb9ca064f6a56b8ffe27d9e827fcff059facdf44fd98a0e1973e9a3f037a025f6c1f1d0ef30cfd795595386cf9d26ef83ec27a8a589a75aae7a828934eb70c09e0fb473ccf15ac6222ba9bb25dc8ba656af2c0eb268871ee3a82a6ed5c38e575f9cef779ec766dc9ab17aed3e933b3d4b14e2cac1133c70e74a7c6fa9dff5b2bf5a2e6acef95b99799eb32f82f91fcbfe3851a291582bf8388c59173c586f0ae8a53b5c1fb826c0a7916b835d3b5cabbfcd58c4cce1d933b983a5894bb0d6e8ad393787eb02e3fa6e8dd0c04d7da0a3e695d061d5f3773a6467e937ba53e67af523f4fd669bf79a66324f72e0b08f6a6e6213c6ced0cececb579ad52f7ad303cfac31f8bded4ed696823d4be09ace3ef54ed773950d9f945ff4c8d7418ee2996bb7847637d6599fdf619e178df07c1927729f6e46d55041c7e480ba6c207baa37aac6989b8a35118f3e880930c4e65a91f3387c46bc58859e5d8bb15e6e05fb0b1c437252077878a026f408af8dc1b3f4fe1ce5a993b2fa6cc835d06f140c9568e53e4093e7fcefffaeddfff6df75532d6032aff7ebc3c059faff4f690afc496ed4035f299b241aba4eb1b3ccc2a3da95ee07fca55adf5dab0d7ce4fd30fb28c7ee997c8cfcc8017d16afe1a9776570f53cf6d0c0aaa181e1ffd6297a61e5e9ca3a54db75e88a1ee2f9450f111c919a1ea9f9518bfea2be2b5db3d7eb69d82c892f758833050eee56aee560e5e9cdf2ce8ccbe143f1303c3dce7bbfbee2e757f133fd670ed77083aa1b67a8a56cbb71535ee002d103d44df0b7fe34ecf7bdd1899a296ac536e088fb49b469af694451cbd38c5fe6689a3dbd809c1268f39d549b587c6ca0b116ee184bb74305ecc9360c0ae47a0975b42e34f1811dce3f9c8fde2338c385ff18cde6ec210c147cf9e1c5bb7852dba0011e199f1fcc55357cd2f7c551cf4bf86ebc7834245775b1feb931feb5f6fe2f597b1b6ad5aa93f2ce666deb4d23f0ada099766d8ce76d21fdf7b2848fe99d9947fa594f9dde348afdbfd55b7b99471ee7d1ad3cbbc56639df3fff9c0df72b7fd22cbdef9fd31ffc163dbf6d687b75b59a761e1647f54b5dfa61885f76226b65f2e265476dc73abd87768cd923599fc8c647c4784e2cb826f1f8a08f3d74409268fd041fff43ccde10b52fc8a932311ef00c25757d32f499ced4a88dcd1a04ac0b6b92a5782ecc3c33deb00f37185367b366fd9d9fd8eaba8758a6b2b84ca7a22f3e0d6b75af5e63488823fe265e29decd3e2107f198dd3afe34da5fe7617fcc15bf58db27a805a396d0c54c93cb753b78bb6e3ff61de834e19a125b623125a233018d314f9b6b7bdb1a7fb798f7aa2ffcc735ed9f4e136e4e0d7ba7b53847f1a9b163a84d22ed29a76ca58fda4ccdffd11f9a804708cd26d11094c786b1293428fca59987b3a28616dbbe005669d9479d4ef4ad76a80be333c8110337053ec8bc2770fee8b326279f86b5e0561aea060ca90bf7ab682e7401c0c5c0baef9d6be208f21eff8d911bceaaf83c8dd673bcc7ffad31276d9fd82f2c97129a726a471f30c1bb341f69ce5ebc765bbe78d8378b7c16accd7ee3cf7eafbccd17a7fbcdf8461c20fed21d6fd66a8ec1c7745f5dc3faaeb74e4dad5fcb0d9a99fbed8a477abb06675a9d147cdb0a8f35e098752d70f5500b6ee8c913d383b842dcecb3eeb00bb86fac88c78c4b7f540d2a6220ba1a96ab10fb5a5f1ff87bb3460d8dba0478ebd194dc0ffccb668af5d59937ca06cfba1fb41afe7283289da24e67720b97bde392184a332f3c75d28de5888c6d0e1a20c6a2664c2b7392f51660a5a1e571e1aba68e6a1a0acf2e145d07f1689bbed26db835b6fabdbeebed57be8e16f39eb378f89c31fb8dbe98278d58787c4aa3852286419db4b9dfdddf9292f1728effa7662d6d42937752f7136343debbb51e387c5d37e42250fb6255b2b60b6f27a7abbfa13ec6d7c81f55ecc938e7863e2a03ea2320261ab7f09bb2dfd7f075b535e753cab9e472de72eeddefb0bf6b28c773e478b137aa1233d7511781febc68c3118f7c714ef219f64545dfce39c393466f83269d9f8f97efbb3516597adf77e3c3e0f4f885177b8f479d06eeb2f3ecdd430fa5c308e616b7382ed387a286f7f3bee82d818387d7c9c9ae7fca296be00cbcf2a81e8a163e2217ffffbb5a0be219601515f539fa969b67df8b585d34b107df96d43c6bd6957e32314a7a57d6b36a77d273e2e413fabd08a6e6563f91c55feb796f573c3026f88c6bdf6df58ab8798cb4a28f1ef65ff3ffcbb8b525ee0f3a50579fbf8a6125ee135fff40cdcff0a5d2fba2d679e95357f9c75c6f03379d9fb9469abfcde13f795b8cf76bb85fe4c366311ffcd7e230683fa9efc42ddc18278962d1021b26f0fbacc25239a5d369296e2d8679d5038610f1faa292d7cf49040c0e708523e430fae9555d803aecee4bade2d2c7f3058b773dbedc5c8d2fa9bbf2c34bef7f1f75df71e94531c3d8bc716fb97f7c987c61dddff90b85de34dacf4d9c8d71020fb6d081ff5665e2fbfd337c02efa12d877d45dd172e758867667df79268f6c4f151000322357df6796ee4c04dbcefcf8b9dfe6bfd306c3f698de2c339fe875a36bd6b9a3917dce67fa999f3a73e6da36ad764d18e9a0f31727ab376b4e2e9d003a6305325fda594ad054acddbe47c056a6b7a1b362b600d77a5de3a8269dff5ac763dbc46a60e6a7f69b69ea7fda0471ebe82aee66d31c2ba291e74fbb50ebce3bc342a2ea50603ed971f693f38ab167e5d7894351f9e32aa5a54c06b40af1918839a5815d45a1bf255c6f4ee7ae58d009f97a3c993d86bb3c7702e8ee134dd23bc25c3a378bd8b774d714a89d1ed290f1ec08d78e3f21c99cf839bf9186da486f7f29b741597f6911af249235aee1e72f92db00c357099a85787e2f7175aed6807f89c6c1621f78ac6f4bddc222feb492c6c8ee9acb7c1997e69f95130b1c0bbaaad6030aaf19158b831fdfacc711c609e1b72e0f1487fb46de027d124128c9dcb3ac5cefc16b38ef704f75e337e272f9fdebece49c1f3322657bd1a53978358c006980f7829ef6a5cc72ceeb4f5e131da044d7a2386637af7fdf9713ed9fc9c614c6f16dee7d4bef8cfe3f3b2d477e7a3de869e89cf1ea3b89955f1398bca52dfb39fa363e83641cb0a711cf482637f198db16727d164aeb28d89bb5aa9cb5df881ed4aed168159a333604c0b977c42e8262a9515e8ada403e86c89a71862772fcdcf663f69d514fa9e8dc90d33f06857279d0de7aafaf1746bcd767af7dd99ddcfb69f725dfed827fa3ff40d59fc53be213579c5f0c33adaf517ba15e8198cbdffd433c31c8718f7b1c5ae350af5d602fa188fa807eb489bf5716ad6ae9c3ab0515ce27ca0b952d4e4a66daefa42e96bbe50bf8a631a97fc5d0fc84fcdbe26bcb4a1a7d91b3d13b3bc30798527635df4e2fee635c441f0a5f4cdeffe6fc5cc11c7e7435b059caddc874feb963d43c170b34fba0d9a2c8a03e20262eac6594d167c3661ef766bf79f153d2651f35e354bb31736c15934ee4b7567f60668acd89eae43be83f9ec10fc0570d3a139b7abf179689de80ae3015c76dc67f1b3e76fa52fff80e7865af9ba7ad12141ffbab17aabc4b224d0a6d2fdb0a5365fd92336b2e0774d03c1e114f4bad95a2e08b818be3a9c4f0abef7b7c68c9bbfd60f7a9f7bfbdd17c6ebaa2eabc90b5b6a3ed36bc8fc7f5d6d6cbdc8e48c0d6b489b6f59b63ab1bffae3093dccbbf3897c9bfd1cbc7a5f7280395e8746cecf83d9eb9489e5929435e89a9eb4d00a73c88fda58cf2d4f34e5d07bbcb16e902cfdd967cd3d6fd18436f1423bab4c0ca1cd1ae85dbbff9afe45cdba5ae0797a57b6f442484eda17be49a7d5b948d287c2a356e7ea94468367f2f272b3273823f03337b7e9ae673f9eac96fa6bed5ff50fd6a1b95e1487ef9b4f5a97bca98fa1b245c5dc3e172f6bf0d85b6a18c4a247255836ec75f81bbdc9a7f0433a935bb7b39f6b9368e01167ba633c50c53ef8f10d79cea20f25fd0af83591afd7d0bf81e782be74603f070ff416da8025750e559344830ada3aa2654eefe6d09e1fea9cd4cab1baadf89b9b00f3430f6f45cfb49a7ed1f4dc46ff0cd724b6d784d742cef1cde77af673261efb797002f6c74d8e47cd729e73d08ae64c4f78618e96b84cb7d0994954b69ea7666f8766ab82876016c5e032a5d453835e10f58af6cff2fb4c9c5367e4c07988d39cd21d552be131aec88d415d37160d5af3fade9e1b639fe6152796e74bbd031fb1d5d6726e544bde3974964e69b47982af6d36a846f481337116fcb581c9a962e2bdc0bb51fec5773a969b2bfe89f4b2ef3bc0ada433931fc5c1325288a9b89605260f33f1c7ad7a18c3d5e1cbbbf89d0fcb34f4583fa476de2bbd0bbf7058cbc8dd178c04342e8e177e18af3533bcd2fccdea9c9ca50e297e19fae9c5f7d77a6b40ebe4d28fef524ba39e468b8ada819897d4db6a775223d74f0a1e2bd028f0a87fa02efc3c343183efbfaf9e550bf647a70e3cdb584f1f5cd318e8ad2b7de37e74fcbdbed34f8bf9e7ec89de820749fb21fdd09d32a0b6c9dac4acee34dac0076c94ed4e69b6577a1b3605b07f1d379498eeab5a1b71731dd33db1f7b7a61eb259efd1f732fb56efd2af78bd75a09fc83a10b4cacc7837e371aeefc0b5bb15dbaf17f39903fdecc3f7bf969f33bebd495bd0ec7fe9ac70e813a513fd50d47a27bdf26c38675c1bbb8f98bb82a5c47cfe9168b770a103964da41e875ca8f907f611fd38d7cdd25f6fd69f543ff8169e6f124d1259ffdf624b3ef417bf5a47da175ea7537ee95d8fbefa82b9a5c95507a815b1f67f288fe6ff663c288e857a94ed053f2c7558ec0193ea42a3eb287a1647f5a03a8c2063c9d0c690f5ebfd8fd8da0f78b5eda536d4abfd8c5ef7f23af61e1f7c7e1347b1cf7fb6b192c4a6d8eb4447a0458d8f5a1d4da75f085d7f451e7303ad8040f8a93d78f0587c1879ab4dc178fc44ac99d48aa83b2cf120fa3912d3a99ef5e54cc15f5e9d14e2d6185a23aa05471b8f8877fb21b09e9af13c748e88af931a166b9c9e688b08f62166df91f1729de2da3ad40e6a7736de865e23f55de03fe4a16e47ac6933221ed5ea93d49de643cb3838152c760aaceb40695e2b1393f7c6f059804e80b9fedea8ca7b49540247a8a7615034e27b0a2d06e831d4d06e8696aee235ac7289918b1e1f954f0d5ef83343e374c47b61739f938ea08fdeea2d6362c43753ab2fada83593ed6f8c3b7abf17dec6c9bdcd7e79ffe5abf58f63fa32053d30d598cfaa93cecb6056991861ed690ffcc07a54cd9ee0357987ff3b57d734f01082c69ccb7b7d845878b6dd6befb9ff37f606b3c3f77e31d7ffb5ba1b545fb8cf3738fd6dd04b891f768b06bd9273d2176d6ee0e9136803cd2a6824348fd164ceda9bc995a977acb6d83b5aec77a8f997de1a5a436bab91125c1b17d3a8446ff0f21cd003e9830f58535746709f15751a9893adbf2db3316b2a5968d6bc676859011f066ff6063d6c68db424bcec4c8ed08d76af1012e6c235a1185d55aef41c78a5a576fb4799213bde44ab3fe07f49ee6237b58ac01493f07baf20abd57c79b462b62610f5c63b3a828e1376ffd87a6c1cd98a6ecf03d5accebe7af5ac03b8c91b7ae4ac19085cdac7aa3f1075f54a761deb4870f21397256cf3a0f502b400f8cf5af0c635895d0f5265eb57d8ce2f3ba1a9818bd45ecd6a75e127014e875873570ed5ba7c9a255a99b907af4f068084513cac41fd0976bd4d6fc7d65e6ca5c5583ab31a6ba139f068b6161fc67f672d6a7bcf329b5f5bf177d2619a3a1f523aee5dcad57ce1c1a54ceb9d6c28b4ce39bfb1de9d299348ff3de7f7d69b6bee304325665af4a7d381e0ee7803e0125fc32c141cd269ecea103fd045ee1147a5435bd2e637a64beb9ef668d85c7a959a3cc3ddeca3dcecb9ad86bacc32e742fb261a2aa81a70e661d0b9a242a4e69b67a157b67e893adfc24da13f7914dacf731f43d973c8fa3da95e010de3e8e16cfc5c3ff154db94b6fe8c0017f6757366ac7f540cd0affb1ef609fb5fa7fc06fc1d3a3a0fef37d011f88a5605f156b7f013d50a96d8afd07f763f1444ef644b1965d96e91df8bdbe9e9f5b68443781338d62efe74e7a24dba0cefa81978ae7d2129ea505bc4e892330b19b4e5413785c174b59178beefb31d67e99bd73227e4ba5f95bd9fd0df5f605eaebe99d3ae9d6ae59f053718973c845038b9a689af1a163b52d31e6f27377ce3f0f4e8f9ad7ea040d843eb5105fe90c90bb2d1a1d6ff8df33930742db1f7872f3784de3ffe7013aa0d6a7c9596f9d00bfc5c44d87b3605a0ae85ebee016f95968fe47a5f85d95d6ef8afa25266f13bfe694f564977c41eabdd157013d91403c1bce92cb063c1e707dbe3e986b9253430ef9297b4fca7ae1fdf99af41fd7c16e8859c0cdfabf3197ffe76296244acc9e0c0fe2b5899339be5de26130b6ce5cd3e55e4783041a3173607a3cf1b5384b6de678f9fe599598b953a7f4013279799d45b1c758b66c6755dc9bb2aff8a4e84df42c9a0435e2f906fa820d705c590e0d10cd3a863baa56268f348f26f7f3b328118cb6d9ab54a932fd4c0fdde2c4bac4ee78e9774c7d37d162105d45f671c60d704ed0db35e31cdc20979edfc54967b36f5966f646f8d3cfe18df90b355677d9879e2dbcc175863e66994e831ee778d9b20ea495aa54f90fe49c5ff5ef7f8d09475d218d36128f2f4c8ee9539f147b1cee1b6ae3dbc0e483c04e64e6be5353b436b1297d5426cfba1f3a1cb3d046000751f70347efced873f5366ca037d0e93b0fe0e727e3b2fdc97332f18f0f0ea139e63474e189706bace2fe785afa93bf16fe70b3badbf4bed6b95763212057039ad8fea81ac3bfcec41e2616798c16cf8afa43cd344ace17bdafce5f6b5dc50d7bb9a16b7db9e87b16d4bcff217371177196f3a2995db682f90ad2f8fc721efeef23622e789eada0b7092f4be8d70edef4002cce6748af05ea6634b247379dfe0afc76cdfaf912bb2c23a94767bb53fa4ac3dbe460bb9378ae9d14eba93575e6e99ba62b8bbdd8d91a6ee7bd016c4113b6493f68356b3a1e3191e529cdcaa378f9b6a8370337b9ff96659dd7518fd746cebbdaa07e4f6eb8cd830bea8d9ab5b42a8f569f7f94e5c036407b9cbd03e49d8aba333ef0dec09f8c7b5934e69e41ce207a91e6fb7f1e1c8b5df54715b5f5a0d7b00556d5fc06f60488c3f0527801604f73793fccf798ef481c733ed040c1f1d03ff05ffc94ccbe13bf3b7e6ace8b71df29cde8f7c61ceae67af55f3934a9eae7cfaa9d700b3f41553f6c6de342bb6fd85ed6e93afda3add553da592d257f94d10313b5ea6c803d851c867d2535110f9ad618c389d4152d6f26f05f7438f2172d5bc623c1ac42df1ebda9719b34589fccd8801602ea9e75da87b744fb0a6fc2fca526565951f3ddc467d0fb31b1fd981a52c8a3439b4753afb25aa0ce89dc3d53a7349b3d0b860bb52ac678496f54ad3cd6298971baac4f5dab755207dfe4e439f14a5979f1b9b5822621ea3feb04787460bc4a5762c916f123e6323d3da07d698edd8067e5d32360754ab3356a18a26ffeac1b784cfae4155df4cda871518b1fe9fb3850ea129abdbe36258ebd074debad79bd34798f2f9ac0f01748b9e6b9e0966de1d778d6f9197e200934eed7cf6faeb9032f867e508fdbb825174ba196aba8cddc3237d482b15382a31b736d6b02c78ca12c2acdf576cdfd1e9b7d2382bee439b51ae259787b6ce94f9e160f43e2861fd4d73af25a87a0494c0c4f8e076a4ed27b74d3fc2c3eb94563721ff122ea8d2a15b036251a74265ea05fb5439e9dfeb6440d66c1fe593fe82d23e61d695f7c9bb3cd5c657b68d78e327a4d330717bfab6958af9acb3efa8577d6db3efac3efa3d967af63c6d4ab63beeaef5f6800511b4395ea1a3eec415d6a047d7cbc1bc7697ef7fdafe5e7c427df96f7f4c380b15742af59e8152a89157368698faa952ff8041f7ebfd04653e2439b9f54bb68e10162621fc42a31639c833ae988dc18d603c09972886d457d8ab52d8b69a0cf83a7eff0ff93aa9213f9a9724ce0197297fdfe2bdfb745ec451e4c457f17c16734e050c0b72674c76dc9da568371e7a3b6b50d7ae9d4c46cc0f7bb26ae4fa5dfc83d6327356fd4ee9ecdf8142fb06054cd9e24be3fd33f059ec5c49a5c9e2f71ce72cd0a7a45b32e78d6d0f442ee175c5c9723f10909bc4acdebc094009ba2a4c6d7dd87e3bbebf3bfe9fbb681a7c0a9c2b581a7e305a607b57878046417c7e63a41ce98f0a8c021c63831cf27aca172fc1c2fc6cfb11babd3c02397e662acd2034cf0ececcdaa161e20ffc4f7997c4b38d532662dfee9eaf7165ce3ba1c0d3c388fbadec0b17bfa1ef99daf782fba7b06fc39e689e8b0bdfe9dc211886bc9c77cf21631cf1a7ec7c5bd05a6a7282faec737fa51a1e76db5cd6b89bbde9d0b3151e43dbe70caffdb7e7fef0f7effc57d56b7dfe7e9bfbecfeb8afe6dac07bc9d4f3bebf9e0931f0acdbe97b58deb972bf9b19ff62fd636e2b8dc97757465cef765bdbc8787722bb8b4467cd6ed3a7aecd6ec7ff17de2cff2a7dfd75c7c5ff0dffb7dc59178b65c3ce7eddaef5c1cdbfacf27e209b6e2f5ce5ed6b25b78c92a2b4e7af6969b9c77af616f35efdb06ee4d79f96cf8bbf066fda5bffec24cbcc328b3a6245a1ad461067e07b5ff9639e4f8440d422575a3c48caddeac4ace8f7dc7214e2c6ee46f662eba05d7144f703b269671584f825f1e8ea9dafd13d7154d5e177c22c781e0e05f9e1377db8afe8b3906bc6bf4d6c4e6257d17abe1537a5f48ff53b59da74e0b8d1887e31cb17d43dc6c0e7e91f5dd53f6dfbdf567fe415fa6033536cc6f61ed20863e2871f989477e5781de077c21f70571bcf7f0e63dcfaa1c5eeb6a6bb1970a5a59aa097a7a1b3aecb30f9f46d9e45b968de5b742b7843acd15bcfe5cd5840e744bb22139ae37f6e3f2c3f7bf1687fd69f185d17883a954177c526a31ff3c38cd289b805bfa086f65d46dccd8f1ff8ebfba34637d1bb44a304178ed85bb7af3fd5bce7e348bf962bf3acc4e8537fbd2247ac70d03d6a146ec84be1062e123fba32bd124cd4f3a825f7eab444b01b5efa9f5e30cb10f9b5c47eee191da0cd4374d51a31b4b7cbd7a898b51dfb39eb5f9517c6a2ff4ed4d5c0fdcfc39ed43efc23c8a076e7c529687094f2ef67e75cbef04bec19c33f89626972c02ae95ddf72af631864fd030605fb5573401b59258dbb3b1e999f1997e168f1227659d00b196a2df600dffcf3e3d3a9973ae7c895b1bf2b0cb5265d7359f57cdf59aeea59e9fc9fb4659ecae816b0137e6080d7ceaf725da87e78fbbae8689125d9a19f8733f3c352f1dfa0384bd7f52079c734cef57bf16bf8b4faa3774931672865e13eac8e02645c9794d8e0bb8111af1a5891dc75663bbd1e08cc047a2d6c0d724f518fdafd0a39f4468b133e81f17d7ff067d07e6daabde18fa1d79491f09c5fc3813ac4d037ffc9a1ebebb23344d0e4af6d7b044ddacc307c063c11955e3fad1c4024eec8faaf02c3ed4d697a736b10a74276edd837f2d92a5f7fdbfd69fd4b3f9469d6d33aeacc7df5b1f9b44bb85bf0427977d50cef90975ad80fb7d87a16d4447f45d0f75d5bee2dc328ec4fa833153b23f924b7fc4e26c9c7ad55cd45c5febb2bfaab9b277b578b21aa8fabe682d2e17bcf1073377369e3a9cc9416e9c5bb193d972fefdbf16f9a259ccbfd6adab1aee662f77ca069ac5185f9d0f5c2bbe2bed348a03f6aac33375cb9493c1c308f935f61c939b3297993dc157c053b64f5d426ba2097ce6e43bd62ce0d335c47b993715965313302e296c9fad85b7337a8a8b44991c8c9ad75887d8cb3371c52eb0cfd52f686a330722369cf8c77646dce83c162d0975526de7d36972299fd847e86f9a1ca312cd2d4fd95880bc3f730d02b95e32c7e88d239e3d829d178f838782ef632e7946dec3f73ae88bd29b3351d5709e9a733e28ea7254c09a36f4658f1deb0701df6d136b4093d0acd3792f8b92521fce7e12610f02367f49ccfd250ee8b6befe4c1f97def1f7f2b09e2ebdefc74f8a6bbf8debdce73e6bf5e1d3fbdf1a1aff87b2e65c1a7e5b66d0bd6c4dee9dc665adfb81789d854d62f774f01c4bfbdcc48e01e357f8ef729c9bb1f2805cdf2d3219cb8de060e8ebe88daaf5bf311f67ffee7cfc464fe01c3d43550d3d68df13434ced8829621bbf68a8b9a6a9515377fbc23668d358d5f00e990a16382bf95be88de082733c65df4445d69fbb745fb08c32cfe8b1e68aae5ca9e815e58f2afbf944b45f42879f5325eb39a13fab62771a258899a157da02d3d0106f9304f4e51ef31ac06b28bc7d6ff206e7af5cf50d77897529afe0da867aaea6b7b38f7c0d7d61e5887f3a5f830e4f6ef9d3f6ff9647ec76ef9d3bd43ac955adc8017438dec81f55d4e9f1ccfb736223ea24dac1e30471f503f24cb7c3a06c11c75fbe767cfd9a196fb36f4b68e6e6a59a9b981c9cec93a65eac0bacbe7d3e35ff37bf23eff8d07c4d9ee3f51962c20fb8f9adcd29593b744ef46a4bde7a1fb6f04723dea59535c77df1bd0cc5272e07b7009aa9988763781f5a2da5d4f259b3d5492127b7ef1b00cf03fe6bf6475ed7b8e6668d48a736efcfa526df61ea1a6d3df4d1dba3ef3b6b0325ff0e5c23bcf4cfe4ab03afe72167079670253a9aca11cf70d7ecc7d61b9c7ee2b9f53df233e0749252cfcfc8d352aca7c0087aa293d4e31aaa5c790e5cdfac4ace1fc5d88fd08c5d5df5c97fe79ffec79ee2a5896d4cdc6662d07afaa12e4271d4d4ed6953d111d5d558fa642b5774a802ed16a23b77230e70a6cfc5171efcfd1ac7da526f5415f4baca882b15bc57cd9a3c74c91cd5383ede9701331a98f802bd2b709230665ae664ab9336f91e39c15e2a7c057a8315c02390fb50b4ac8f318686ceb8e847c0eb1eef73f03eece126b743fc3976b087239e0ce5181657d16985b6d48d589da8511b03bbcb9c32e8f16f895da703fde24fd9f2fdab6eae43ff017a12b9e899419fae67b1eba857cc635c0baedbb6370aad2a709b551334bcbe669d0b7bd2078636fe08bd8cc41b5558e77bac1fc6824549dc3130962b9f1e9981afa98b21baedc06fbad4b153a81f823f0abc06ae0dea8ce61a92bf68e6eeee64e32dea4c14ec335a5d36e8c9c9dfcd5e942bf627fb612dc76ee477b7f6b9ba53474dcdf233751e8135a975437ca099f7a827e23c4dfc32637f5a38e3297a46f6fab35fafa3b1bd5601fbf7b1cd41b04e40c37c4a4e16c629eecbae37ca80c930eba46049cd6f2e783ec0229bd82e169d59fddc615acc9e88fbb533ef3f31f633cf67d653df8cbb9ef8439bb8cf917e9039b62b7e082e7b0e716f54c1f34b3cfd7397baf3b168ba9b47e8ce37ec8b25d4f9b3fac073257b80b9767120387419336b9e33f4024c5eb8635f1adf1fb22f4cdc4f23f1ed91b1baf4f9113702871df05a2525aed58368d6b70ad78ebd68e492f25db81f2dce8fffc738a476817d7cf36fcb7fba8f3cf1b6da9c6ffe3e69c78741f315abbe5dc7c1a109d65bc7c31a0d4d9de2c8fd3eb1185fab15ed0bdf3e02df0258e0b14fbf8430609c091d92665dc567c1f8c2df91b961d9a3ae1fe354689f21c612bde61c318d9b001765d67bc4b1883bd23e7ddf9123610e25c2a78c3b1d0bc189d6d233a824b6bc8821871fd520a955912d2a8983e0a72abe0f3ee2a42c110c71525b2d24ec29128b11775178c269e9019fe280637da6ff041e192365612958387aa576b9b3e87d76ba1bd450d2888390bf962f5a9965b0ec0701f703c177b48b88da1c4593803b322e317fcc3acb1cb1291a6a3b0947ddee4dbeee43f7f3a4dbf2a411379b35ada0fe7a43ecdf352ecf63df69c7ed8e3136758cc437332fed6f93fa68adfd17fd5f13c3df189739c57cdf7cd2facd4d5accd0a68b4b97fe5993a31953d36876d9cf2b39f6c1c5723a4fae2eef1a3e895eccdbf933d7d77caf89e92ca1b7d90f1cf5ab8006eed4ccc5caec1d3a81eed51e9a79d03d90f751d3d6296bf401cd730ffc8060566d12956de6fad6be9f3ff96b75981d5687efa72ffde5f71a16e9d4c47ba5608142a97f438bbf11ae1cd7bb2c218f85bee4cdd4acd1d4efe949eeeda553135b77fef0aee5cea5fd20606f3d21fe95b8e18635bbc27afe06691f7df39ada63f867f280269d15753abfaaade95cd3d6e45eb673ba9cd9c4655b87711974d0128bc90cc037e17aeaa34e0e4d6170031af1ae3aa5d04a0bc9ff31d706de39f0cb3fa5886d24b7cd56c4e85a7de57ee0d057780cacd4a82a2c3eb4865e5eb413ed39acfd0ebd58774112cd9e71adc101b4fac4a86bf634b40bb0aebbea6062bddcace3f48720eeaf95fcc6979a0cea021ae7803dcf62be3d68f421874f880f95e788a567f0710ec8c1d99d74365429b878a1cb793d3ee96a4fee449b484f8d982ad5e5014af4efa4e681fa457e34e30dde17a80b580d3aebd7442d3de475e28544cc45ec65187379a9e935e12f816128cdb508d89f3663b980be1defc72b6d3f67c49c95ba84a27d9d22af1afb5d5e85df024cae4f0c6c71149d278d58e9a138c2a784dc46ea6e65e6bc1470c2e6117c2eea625b0c2bf98da28328fbb8c3be75021dc334cb2f3fe75e7ccec4cd3d1333a5d49a102dc45d8bcf563bf31bcc38b49f25d678faea3bdd141ef1d4d3eebeb7822e97f91da8e7f1de74df79566e6162c35bb565b3f5fdf0afe55dfda5f9f71e73711b8f7207bde8e03276ecdefb4bbdf4cb5fe1735eefdbe9149c2aa7e3e7e565ada17d5e78826f7793484717dc4993b70b06338126848e3673edd107563897e744f468c07d3679e2b4e35c524fb3b27a34e097f4c85d965aa25bd4ba5befbbfa6f492da271fb5ae74b090f8abc4a5dcd9ecd7e3342ceac9a710b9e748db51b5892e29466bb571cd0172ea2c37320f6b5475fb75838d1e42062adea879d96bcae063f34eb365ec72588106fbbcb2c3c9263907b560b463501fba598c703b3a67a585fabd8ac633eafedaa19038f63e3f8a2919cdf1cf7d69e4d5e3cfcd87cc5cd6f6321e284d5bc3ca6f745ef8f724d7a05c0cbc4fa20030b75d7e1ffa1b588b18b1a53e91167e0f8eb4a3f8db2c95c798277eb87feacda3ce9fba2b9e691bb6a2ef242c4dbc55141e373031f5ee1685df42666493a8066bda776a55364c9897bc205560079fa20d177ef3f8f78e357d1a34fcffea3ef00ce59b0610173e0d77d9fbc55d094d2d3d031c7d4873fe91fcd12c15c7bd2076852c6106ee74936754efa41d9d885ff9f971ef8c4ac2db1e764fef620dabcecc7dcac513abb9f7c6982bcad236d43c1774e3a9c75120d80bd26be73fd6d6972443ee7ebbfa8af6ce791da17762eb417aff9f45fd3ddb1d6a253ab1a6279c4af5ce6853a0adeb4798c86738c23d6bf03f5aba0762a7d24c89f935e007b9f4a7031884f6bdd38ee88f1df993d8c1d3dcce2b8d64dd04b456f24cd76bd172fd0719b44715364b1cf7a977dc4df8f0a1acbe0db47f45319fb9607c1b525843705eadb73e88f51cb1afc4a13af95a7f4ee7cd22dfa1c5e7a07df00ee69367eae56a7343f7bd46f0a4fe9dcac4763c48b169f001da626f4926801dd36d4c1aabc2958bbead1b706b57ce03e97f0275d9d74ab2bc4cbe83794d4dd00cf64f32d83ae5459e2f3c8990a57f664253c55778a1abe39464c2e53bb3ae94c5df8b585a837a7d9de62b8c0875c0a668bf78c5a06aca1cf6cbfc8a5df4bd1b27faa784d4c1ef1501007e1d3f75cdfcbd8b8232e50f5c380ebdcb01b97a36c65d774f12abbb55e353b16bf86fbe55dbdf95a3bdee1255ce1ce2895a9127808d7dcc709757eab42d6f971c0357c1cac1aacef187f883fefb02e9cf44ed5cc9b429f5e7065002e7e465dbebc8debc46ac8d0dbc9813e72bb36b1989c077ca93d738ca5e49cc8f1c0fd0667da85ee21b0fa3b3cae1ae694e00241b370afcc5c809685e8878caad2a59627f6a86084fed0caa346cfaee978d84d085de55955d22709f50ae8bfb146b60ddc14b55ac4db01fe6e3efbab30c7aad1f367cd3cd08733f24375ab6f8c78f57e8ddd2b7e87d7712c4fa36c3057ceb94da28da732fda4b28d89a5aef51fccda090f3ded9da9f1142d80a74c1f0a7f1acde6f81bb81966cfd983a734ca644f34b9975f1cf5bc0cd6d5ecc6fbbcdeacbcf253e28c6ff11211cca2f74798972d788b275d598fb90471ade412a2972abc7e709484dfb8b53de9181a6698bf26768177d9981a5e07dbdf357145cc5a4f5fea89193ce1a47f1776debba8ff39e71e7bd7b3e7113044589b82827c746854023b31a527079e6fa1c1d6a83be6e29dce523f2456df2bcd5af687f81e133bfc118e2a30d7daf60e555e7ee46d627b79d26b57963fceda5d7ef6e9034f2d7ae517bd9f07c18c01135db6822375472fdab1c09089e69223fab38d7d1de7395382af03bfb60166656e756c5f6bd0e29a3dfc3eeaa913e46d0c3e4b6aae1bfa6a81fb3e27cb4b15ab863803e042031e0bb50ac1a485fcecd56b12734cf5adf61bbcec8fe8a3a376486cb7686995c41d84a24ff1d657edc61cc91b388b87615cccdd2f7ff78f748f2ebd71c127d93c89976dfb73e74057829a6865bd8cf223e324c6eeb32a0ea691c9a956f0bf7b572b83876957eb2bd5d6e45089c9ade88980dae0e4d6bde269319f3d17de66f3f8301c3fcef5a7e53ffde7f77a0c1e9af5d4307968e7e7f74b3566dd903aed917922eb3dacff965dbd4777b1e98c3e826f7bb0bbd2bd5e072ee875ee95eda89a416b5e917bd268cbffa74680f8298c4dae2958873cb03adee8b1504300fd0ffd00ad73c4d4dab3fb437e141dbe969e8de03fd5c245392a4fce3b23171eebd256d65d13d3de234f03d750f03f9e26365070528ecd5d7d725012130397c249e1dc785082591e977acada02d7fdd019653a51e6fa21ef2b8247f08591ff3ad4f05ec9da58c8bdc2e7d013bdb50f3d3e0c9cc7fbe15f4bcff994f3e346dfc51a1e9effb9f69959d72e35d85ede2b1a6c1d57fc9596db8ba71af756257ef7a273dfed8783f6628fc571785e6f3dd542c9d1cc9a4dbc05c627f5c39aae3fda40dfb87dc47cd61b45be8719db4dc7898546a1d372af585456b355bc4764bccf3ceb05225c0fbfeb356639c6ffcf9dd3638fe87fc5b56993e847a7f975e941b76a5eb8986ff5f12ec600f4f6ccb1750c1d5aef318abd59458ccb075ac3deb57a3aeaca57bd8526d77c57ebdbe7ffec73eae50f8a5bf2aa9a58b155209e4e5dcd50b539b8b3cc71d103f02d5e41b0d90d7592c8a3607e144b1eb00a784f57c1345a449abacaaec959508784ffd5c6035e9d5a39d6c7c2fa03b346540d3d2df566e84f4a9d59f80701f1c4bba3607589f5ae4c2e1f3b49b47ed217f3e5650c0f3c68ca88cf16eb482fda923f778e9b44f4b7d2597ea911f9f1f176a53bab36e227b9a607f195cf2b731dbbb9f732bfd7d5ed1a34667caf0edfff5ae6c34df16bf7b5c7bdebf5af9853433f615249de6e7d33a9af460c5e23be0e265e9b2b73df1e90171fe1a1b933797ce126d13ad187730d6ed9eeecd2a33d70977d78e2d75954e2ffeaa100b67dd9778811316b35bd2f3b2e415747b43165365488eba6414d9dc7157ba1c0b12a4ff207f42d52136f5571d73f21665dbcdd23f64e34b9f7270d8ffec0d3de19dc0d6a7a9796d75b753854e4bf85c7df999f4cacb7ecc35f893ce00a7d12f10a8fc933d9062ffae8e0aaed898d8fac6e85927562d583a6053cbb636f1a4de0a1ace1a93cfc1bbfd8c5bfe3177bdd5bf1b6be7d7f319f344beffb718cb13efe9a63577426f43d30a60efa90d942b0af938fb0afde75ecebe23af6f5ee23ec2b7a0bd0829c5557ebbb4fa3ec43fced4957c05b0629f629c7d68f1ae13136a36a3857d9fa82d73c7b4a6745adc1cd86b6712db9d59118c68e5bcd5c08be54d0547145a3023e5fd4d9093a5c23f68ca8143c217cbf7ce0cf3df31cfc67477aeb816ec0bf0ba013ee42cfe7983e48dee498f7df5887ce87fb05f225775c3c0cf7cb5f5fe3fd9a660ff0fb583f3fac0bd4e4c8c207f8085c4a15378cf55533b2bc28f0daf1be86e34835f0bfac3e1ab7666d25170b9e42e411d1a7a17bbe6a6655ec8b0607c6e36314d7e6b56914f7d6e0e1972de32060251b8eff448e01ad80c6f2f0816534fb20355d1cf1d0eea17ec0ff8b2e0b6230ea166793a751064e487d2dde7a84f6d6b59868f04d3cc43d68890f0ac7c480c074ed5093be566b31fbc1359cb2770da77c916bbcea05dd386f9e17f3deeeb37a56dc365f0af2db8053d0e8cf82b3308017bf032cd4fcfafeff5263bdbcaf26ded7cfd4ec06ae2142ef875cf3b39e861ef11fe336898a52657b4f5dc5b16f3ee02a0d647ce43ef21fd19214cf88a3326b2f71c93d703da641abe667e0e9755c8237a9e825e310dfaf8224da27e021eecec1a852c095833f742fde85d58f047538594b049369f6a53689d4517925f26ce22485430bcd8eb05d7fe45d77d0bf5707fd6cefedeb7c535bcc60adf66ff563e340c64c63df73dbdcd09be57cd614f9feb4b8fbfed727c523dfc6ebee87e4e2745e0497759941421e87d5cf7aa9d1acc54352724e5b377a95b35ed48cccd87e261736f4d6d0748de1eb61f21e8b911c55b3670d3ceccc4bf312fe0fd6cbc1f650743fec891f913743de511e6faed57883e3e261b831e3e66b9c7cac11a4bcab63c4d66bac76c34b4df101795169f7605b177c8c26576b8266cf5ed277e6ac7f499cbb3b539fc8ac51e84124a572ce4e12ed3df479b385873ceed23b7f2abe1f0f45fd180de7e9fc7c4cfb8e77633e163dde0d7eaf7683e74fca2bbb6d1d016ee16a6eec5ef7975f7f10675ed5ff63cdcafb60aff650b3136f6fcd9a9d7725363e94d01331c763bf7533d7f3b256f745cbde6a7c4ea24da2a9516a5e17dca9e3885636750a6f5e6f369bc7af78ed6a3e9f0e0a4fc68be403d24b6c1c738f223db5f55c70e25ae2cce1ed209f8196c6450ca33dcb2d79896d04cfe217f5b5f569d55ef64c508bab4dacff67ef5582550d4bdb0b451c05bc5617631dedf9e1b799986e1b7ad7f395f87cdd6ba86846d58a781ed4c4a4ee5b29079fdd021f68e659571f4ee9cd27dc9bd591d8e7a499c1cb8c3ceeee375e6243fe169333bb567b6e5fe75613c13b4cfee0bdb7d611f45f8bc362bfc8ddcda337fb9cfa0f37f560e2208916c0cfcecc9a7af837eb9fa2af0a9d01e81dec3cc66c7814bd83b2e4be3c33b985dbe94ab1a60bed1a627295c95b3ccb21b81e2b6caec60a665d464c62cec72bbd977da3eb27818393449a73ac9b6ffab69cc57d9bb3ec79af7e0de5ff831bf786ef87c561b6ff1ab7efc72dea3b4ee97d508b7147d50a6bb422ee4d74a23beca39ff6a1b1d82357a0a04e5a037e11fa0b786f951cb1ffcfcb93c65abe6b85cb476e43b692e7eaa4670adec5f072b5d83d9f7935753317125f8073e0ae2b93df4357c5bbc4ac24d1ac7dedcd3a33f9d251012f6862a53830f93e30069738467a115d68dfeda06967e605f1831bf1a5d8234e563bf8e2dfda97881fe7bddfcbc3ea2b7e79576f1a433351d6d496fdeb44ee4fdec8f3765459eef63818592d1cbca7008f45659b6772dbe9996deba97a1bb4e9dd5934fcc3b668e0974a2e91ed4957ddf37654c581d566a51f42dc106b1e8bf6b1793ed02a83a6b207dd31f379b34777bcbbc09d55fb27d4a3668547ed60c7ea2abce83d4e0317988ed79f4b74631e0b6066bbda33397cf20f5cc00bbdc89967e62ff7825dcb5a5b7cd26ddc616cd34ccf31a6d91ff146d5ca2fe05f8a63736eb0b7cfda59a6e71a1e76e1b1e34e584e217885c213fa3f863199dc7dff6bb51b6e0aeff96b2e5ed1c551d9feba7ecdaef43face7c7650bdc07b81be087411b24897e24da2d5ce698f147de597fb08f99f31a3c3136bfd5b37af2d7d21fde7d62ad9bdb6a56d3b04e67ff6efd2176a691f6d481bdd6172f81a45471e95363e987a7b28919170e30dcbfd04f68fe89bd75e97d6f72affebdb8fbb4fe4eb7fab3d6ca817e9df589396af3fc0d2f584fc3e0c26fa69e71df7ab706ab0b3c87590790e7fc427f9bfed6d3d005a73e9b3ce959e1fe3c38be89694d8cd6bdf60fdcf3e2307bfef2e3bd72bf459f19fa7effd2b7191ace47890bc01f96b9ef6ad43f10f704e43e27aee8c1b30fcdf8c4a11e91687077badc885144d39b3addf065a81277dcee4e69945083b86ff2dab826efcaacf3d0ea9c2be6c12697f5582f1f50cf3adb9d747ef612ec29264687f6c2f3287bd5f3784efba1b7ae62135fccd3f93918658b1bf78dc57e31ffc2575ce9179bfcf2235e457dbd277c5d936c566d9e4d4ea7e1171ed67a67f5f97e78fa0e71e659383f3e620aee495ccfa64e6df61a688dcca08760d633efcdfb6e8b1d0ff5667dbfdeac0e9f93ab75eb38d04d704e2d0f121eaea5437f2a93a783afd7584d9859159f4795f8a741a739f7856373069f107a5dc3c8e4592a82ee4f201ef6528b8edb24820eb6d4d094f55a69e9b5b201be055edc8c378e29ea776bd9d3a885a4aab168944ebe65d4be13ffa3b1784a27a277b66a88d5593f01ef35285a6810b505b45bc839878727345951438396317df6cc71743b840694b92eb34a99ffb3b6db775ebe039f31ef1f66d4ba50f4586c025fed3bcd9d4b2c9ea7b21f4f6a5fd4aca3bfeb25e13c99c78d8f826792efe077deb817df170fc34fcb5fbcd9d3ebbf1907b534e79b6d3aec95c9b36ff1284edff913c7ed557cc97f580b7eef7ffc87c7ff83ebade1d5cd3ade633f7080ab307307fa8ba578cd43ff3150b3426224e4a62795894e23b422c7d06bd16d794aa3c19368e23baab1bed30ebde971ccb2663d05383f8993c65c5bda316bfeb8ff39fbec95e88e4fe1b17352a87924d0d249a7b21688f6e7889a3a561b1c9e99d45f2ca12107cdc3ade576401bc325ae74d5a0ae041c7dccbf5539bdced143488e820f77a8371e9ce98bb1829635f539a18b58a753786836e01962cd18972f7e39393103d5de935a11710c9572a97bb30acc23fc64c91d01c75db59367fa7b173dd1023aa97690e886b877700badee33f1f9e67c6be955b3d7bc0d7ae98dfcebec6effebf1fe2ba6bbe6090c6cdebe108d297552d1a2224e247047d4136dd5d409a8bda723c46bdba0469fc0e41f4de8d25727f6a7e0ead07f82b1c10e7e4c493469c9af5df592687cd47725f464b1fe65b28f55a1ad175adf9d33eb0f66dc25d48cc94a7018d2be138caa5d6bbd23d25738455bcb1a3e5de7824367cb9946c879a143c7baf2f8a89bd01f65eb96fcd7d849a25569f6f15b3d8db3bbbdf738effdfaea5bbdeb5bf9a22572366bc90b5fa0e8d6d517de5b6e7d0211077638863e710c789e9bf528ef7874e087a22f5552bb7d0bad800f780e3f3ec09d2a5b9f9735189abebef888915300edbf1df43e7463f61a9c2bf52dd0cba0efd28b0e4601dece189c9cd2acb38e688c9de18b6c5e7f284e16df3deaea3358ff7be2a372e14d35b65c0bf39dd68385df35ed3c2005038edef54b8fc2ea00e6a8fb8a1e216bff2fbd88d9e575f81b5e32f87cbec9c3aee13556ed0546c3eccbbf7effffc553b96d3ecf07a762bedee7de6cb33ae8a7af79fd765eafca34a7b6a17e004eec9c445abc94671ee3d9b81d55792f89d6cfcc011530dce2616635d67de6830efbc255491e1b79e456dbe0a8a78ebb6aedf3d025df9bdc6fe820589c39bd8a6af6c90af14a33c79b296a9eae4e3adb95d4f7458f4472cbb8fe0877b5028ec272745f63c099cf5de29ce81d9912577754bbb25957b76ae9fdf86b71a7372b7ff2397df26fdb5f1ce84f225e5d412f91f7a7143c98c9f313db9f80761c35a01cdecfceb393dc1bab576fd7a251366c890bc21a449dfcccc44feaa45ae481e0879a5c406fc5e39b63da67afdb8e45e0f51c7adc61dc3b6a67e6c7ce652c8247685002d7d3f9c9d2773f9d3a0ee2aa7be55cc65d769d44be415d49e114096f35db40c799d8f37133cef2539ae57e12d947ea37bf7ca7a266c336f0d2a9e3a1162bf114ea23d8cb42d1c1c6737c0edf454fcf061c5668074327da3773f4cdeff647d52e402cc647fc6edd9dc3d87ede4d19971ed37b454de26c57a6fd10fd71f35ba969cf185653d3b3c56f8b86af7f779b9c4766df33f3df1c1b6bc198e78ce7a8dfb8c4298ce9439885f2efc7adde2d4f4b7ffd59f5e06fe96f402ff62ae6f241bdf22bbfd0d878a39101ad8ea3fa80a7419f73d1d2985e7232e2575a20d4dcfdf1018e5f5d703ce25738bc575a20a8753b0eb0dac059733ec9bcf494994fe4461df536e82993934543cfe441e99d6ae97330ee813b05bea9594fa0136a7bf015758a3afc14f6c55106fc5469f153d0b2ce7e802b9844eb9b7f93ee87e74bfcebcbbd18b49758c5d79a35af3812df9626e6bdbbf11edd56db7c789cf7764bff0bb7f5ff576d3335b98e5b388fd1daa3d7c9eea8fdc2174d02f6799ab087bf3bc0ea99d77ad4f8583f99f73ef61dffc671b0281e865fda345771d1715bd0b31375166a2b15bd5156947a6b6399b0e43e5bf4b08efd02761fdc28fa26027befc9da554a1e7f3da6407ebdf30be4ef4523bea75613aa91b5e4a4aa8df838068c35fa41a0b781dff9a4765aa3b9b76af1da517080e269977b4bd462510f6d8ac6c448017cc7f5165ada81782f05ec3f5d3f8678de35a3ce932ef646d4b7139d0ed4711b8de3395273865e8ef3c16f843eba70c083655ffc233bbe02cee178790ee2dbd7f2b138e9c69e1b5e7f468dad8a9bf1f5ef438d4f558225800e347e63adb7d0e5abc52bc995bd043aec521befe158f7663f002f573087ddf53a8916a83d17f4ccecb5bcbc4772eeef7f5bf7ffcbf72dfe6ff2d2b3c5dd3a1e9c8b87a1f329d79aff3ce6f3a0eff6be8ed35ee2d32eeb411d2e691b368cd34ceca2658ec49d1696f517e7ba52ba05bc6ff2d2c45abaf319ceb966c4f0f0146df4b8f3094e4dcee016b5ba03c6eaa4b3b5e8f2ff6f3d6793ffeeccb1e72afbf194deb3fffe53f07fd25f39abfc6cd652775d0d9f59d708db51a63df91b75bd81153b93f7de84e0259bdfb9de3af594babf97be272f5e240f45cb181ebaedf4209912b324ef2f3b9f14d61ae7f481ba8ea39e461be29badcf22f04c78ddacb7ee2362fed2d63d9f46d9809ae00fe0c258ce1af8f94bf00b7e78e67deaa1a81ffb4e2df5807abd759c69143beb6a403fd41b7b50e3f96497cdbfef160fc3cdfaeefbe7e45edd34efe37a54853df2dfd7cf5a7068c877cc7e03edaea2573481cfb9863a8ec414e149ef0b77d97702337ed37ed8aeabe2a4a2bdf87ad347c3e4f6e914ba90017b04bbda7a31abce8f39b11c02e02764afc63e2d1a96ac4bd21bc519b72bd623337a77c037ac8fda42f79b6ee98fa07e25f54fc45dd30b4dcb07f552e384a69fe5c9a0067ac199e9b0562ee74472d2b3a25177321fa84dee509b1c7f03c613ba3679d9a8fbe2d6fceac7e26e325dcc07f2b74f59ebf88f732c7a05cf22dd50378bdeffab92be187999deabf73da499ea51b324ae4ddc86fe1674e8d04b6b936805cdbb9f07d150dcc20bf34c7d2bf4b01cbd852f7a8d3a445e7a268e33711bf710f4fffdb42f1e39d00036cf67df96d0f8122cc4df68c7e7f09b33e7524267464f31ef1c9c2ffce7c638c7d575ad78fa90cdc577e605c34cbf9a79d9cce01b369cab07c1a04323267446d5985c1ef8ef3841126dda5156a2878cde715696f639ea87e0e68f599f050616be74d05a480705e7397c8512f87ff251bceda6f083263e2c5abdaf7ffe528ef8829ff9d95da9b21f11d78b84f5c5aef7905cd61beb0e3f82f91fbae2f7d34ee18b3fa946950a840754c20fb51f784974a3b7493e680a6ff37b7d37abd6f7b36631fd9aabafe62abd9beab41ff8697cf6e8639bd4a861d32fd6d57deb0fbf3a515fb208e43ed6c2b172a5a7e0c31ffdee7ca4f76ee88f2af49c1cf337cee5923d09c4712be93f884e64bb620d7f0b3d587f542d941947aadd95aa1a3c8b9e397d6ce129ecd8e35b5d55e929970ef684be239ebfc3b9a2876533aae28038eeb15903bc24da95ccaf7765fa911786af5ae9df83672cfe64f5073cf9f6b247fc5a27f9a5ee9844835bb5c03685774c8a79ef73d677fef3d8ab31fbc63bff8dbe239aa1b3f9154f44b396caba34ae8163c8c85be7a3ac8d78ff8f4ab48845473f7145cbffa419db9df5eeddf17dd1a871b92759de013c947df170b6b9d149578b676a229b9c61407c1e9e237fa23f1b701a3bf499b96e4247ccb13ae4e2d57f4ab3193ce0e879356ec7d415c49ec547f96d4dd8e83baceda89fa4d4e6e77e32202e5d6dc39e70ae5bea49485dcc1c1bfc07d4261cab63a6b3dd51d357dc31b91c7dded00f70e1714d3f4d73dd4e0af354f11a4ec3530a8f97d8c5ded8bfe07376dc51e1933237130e6a8cbd546dffbdf78b3e3dfcc82d9f951cd74b9fc922c07bbd3f7a6fef56fda1627efcd205b8eaadb2d8302691baa9d40f892d8557702bfedfc88532f8f8fc78e6fe827a6d4f039361620e450c2b3db9c5d73cb4f1df251ee7db322ba82738435dbe59bfe8695cc56fa5f40d126c91f47be6d014fe4033ed43ac18bd35b301fb6c9e3ad1f79ebd72f6f6c12b77a8cb3c78469cc7df4f1f4672c6cfda53b5edd123cf6c3adff09275dcf0bcc4fb4b6a3b8bd73c8fb1aee8c1241ced296b33f44b0eeb7565ce33049789fb627cb418489cef567026269ef0101fd4c4c1c42dd7327a52112fb372f02f836ec8499b6bc198e09c99581bf177729238a3667c827abe59d34eaa2516c6d655553b3ee90c5e511f68a70f3fd00955b7d749bc81839ed8613d5e7ac7fdd2ece39f715edfec111937eff66cd4b342d947f1376227a6e1f9e7c121fe0f315b0e7c95ee0377589b7904eee84035d4e8cca96903ef47bca7a1bfd7b0555958be7c2e847e0772afbbf248ac1d7029478b4b1965c0a51c39ee57bd5136869680d9175127a1076bcfe48826df5db592a74dc360946d6ed53b7a5ecc07a7e9dde0b4b8579fb2b77bc3dee08daa5d0f1e785521b8b515d7e426f004b7e69bbf65917defdec459dddf32788aee80e1e3e7a09b0ced64fcdf81b6bc7880bfe12bd193cbac59e8195147df3c8ecb57fbc8d4e9c123785638ac190b2e09fb4d2c3d24b33ecd88e9c1b999b80dde4d3d1347f2f1256e43bdfa011a031ed650e28a7d688ea3c7099d0c8f31ddca65ef72ff84b57367aec94e6a1871c9fe20eb8909b56b3db5a51f93780836e807e03a25a7747e26d6bd5a9978aa2e8855945a3e7824d4e43739e6436162c08073d9f1a9d73199ab6a98a85951ab79091fe625e241c4d2c014c3b38a3d3bcc7f95ad4a952d9ec8e72ec47f9f7a68ccd7a09bdba8fbe2a89db25d576bd4d7818162ff927b05fa72aa95fc55fa74bba3d9371e818f52b2978d4ba95f98185bf6d61cda22fa803da8855749bbb36385b8ffb63ce9765f21ceaf107bb48ccb931362df297ccf5b2db1fd887e91d06557ce39602e1eb7d368ed993822bd33f9f9ce675c0f2fdd1ec747e9dc1a6f2e3df7bcf4f557ffee2d277d2b3e9de69ee46ff3bad8dcc3e091fe16aeedb5c27b11750013531447d5506f47d37bcdcc237295109b24ccdfd84bf7e8f5b9eb623bf140eb89bfa847af29b32795765ef88cd356fe382b4cbe0a2f393e5abc23f7d747f4e44297f5f6f1495505ea95e0a64f51b3cdf8db629f7578ea19911fbaf22efedfa0af7577264eb31f3ab34af80ca8439ab95fc85ebe6be4b927fb7ac7a75119f8b1b5867e575927e0b0e5123beed8cfe77cf2f89d3bf411c163834f6ad1130f54e01e4d3c0d4c3c7b20ad9e06e631e8fc83e071f0d243effa99bf30ef7b82f1f784d356773eabc865d983441e1fa1bf07beee45bc7252e4c879f6189abed18eda5a9e6c09ed7bde778b0b2fc9f5a386544d2dff04b8925155f8d46fbc5cbf133f894cfc11d00b95feeeb5d464c1cbfbffd8fbb3e6b4b5b66b14fe4bea48d53a2448387231a73e4012166706523202e27caf61a9f9f5bbe618d714e090f5ac3be4adfdecdc3e70813146429acdd58c86b1f51075b5fbd785c169b9d04eeeed9de787bfdc4da4ff5e7d9bbd14fe9fc93fbb23fe3063da9987fb97646e6b46d16092eea957da621da927d49433b98f1f8bc7a7728bc14f7b628bb2edb1fa5babf9a9588784a6408fe768049f239c10458dc7b0efd107bdb6e316714b207dfd4f2b608033f073146a57b2b7a73bc6e19cbf26efeda65d8c5e8799b3b6afa3b6f03b879f91de1781c9dd0ab3d7a66b33bf078279aee17b875a50ecf43d7be4a4d1196b1012a7b26e1d3977f93e3ffb2e665f478f65fc3a49f50bbd2e6d7c827b00ce25fb9bf9eb247dfc2ce7e4702fe51a891ab8994fe3a25507e891b756ff8c3536998bdcfb71ccdf30b7bacd9747d7e68d1ff3e96a3e995815da09c0af758f6f58d7e82d6a1e11ff24f45b368ffdeb7c1c5f70c4c0851bb05fa8ec3df4e5393d48b1efa286c4f519fce629fb128cf1e089c59ec794babab2ffa2f6e9894f5def738239e6b02f52e0b3a65de4ca71d12b3479af59f3f568285a7bc39366fde584fa226a3391477f8792f55c7afff8dcc7d666aea186ac2c2e8f7e5b0adae966bf5b44ec61b006ee705fffac34ea9743dfec95e42ba09ee4a8acc45ebcb2de655227127f58a73f5e5e0c4c2c7bf5bf3c0fabdf074e3bfdfac843d02df2e3969a39f149a58f0abe1d1dfaa67eb250e0a7ab54417747f8208dde06edbd9ed553efaf76e50d5e36877dbb79fac89ddfe9d431ae3bd89ae5559faabbc6a60f2f6a67d75ea25f0f185feee4aa9ef66b3ea0e2bb55dfef6d3a2cf5bd587cc95fe1ab0cae6b3f578fd88f7bfda8c0d73837fc6ef5a3f0fb33bd5e1c62ded601b90eeba0dfa3e6d627b6705983ddb15f3f179c6c38ae446fa14dfade10df035cea08afdb1f9f7baef99ca5f5ebe37b0fb6e68dcff275dbd7cabd38fcfc62ce153985593f58833bc9f9d57a511f2f6acb83225d9bbf5177178ff25d5a93c700ffd0c0032d9dbd4e2a78f83ac89146565febf29abdbb8e0bd4a0997f87e27d8f6ba99c2bad2ee6efe4a0e13db96069f317e00ac3b2b48ff27dcc35164cf158aecde5b50e6a65d6a16ad7ffe86e2dbc67f85fc93576d0af3631bfbd07a9c90744c7433f98b513eba54b3f6bd625e96dc8ffe7671747ea149bf3c8503397fbcf6bbd883ce2910bf1eec677600cd2069e72e0fdfdf3f198a306da997d446aa0e76bd4eba05d6a9d71bcaedb77f7685172fca26ed1d7d2067ddf6f2e1ab39556d2f3307910eb2cb88e666f5d7be8c9a5e7ef5a98cfa696aef42223f29bc3253f077ae3b35f1ffbf69e66b539df12bdc703ea7f01f35a3cf2fef475c2ac81ced102f710353325bc3df16a926bb5b663a33ee7ebf06a72ffd3b1ce1e0ae64a25354be96b14d26735d716f537572d6ae6a6b84e7b33671dccd9d0ced940c6c8d0bd1e6beb8bb15694eaa196791f5127c3ae0bf859dbba64adbf614d839e76bf963cd4b6bf638f259ffbf2a2dba016ed003c3287888807326b831d4bd4766ace73fa725eafddfe3a556bf7abf51d11ae28708b577840759d375df2a57fc012e6c0ca4ed2f16fe0c00926e0cecf617f32130dafffd77863e1fa5bbe5f7d990d66df1ef71f58a91f7c7e4b45ff23f0451474c9a68ed49de0f561c6eab443ded1102f6bf28f1dfc3999630ead46ed80631d7dde567c0bb057403f20152cc9d671c95fde40530ef9ce08eb5e60e69059d3998b67a271446cb092712f780de199806f2935abc2253f06b52cebcbe8285b0bafec5e10bba20b821a157b1aeaa4336562b181593fb9ff13eb9720178fe923c77aa8686f0f2d1e9e1e20fcddec41adc99bc0b51a89a7a9f94e788efa1a7b70a253c27c0de783b9f7f5e01ca975be33d7a862fdcd5cffa8a5e63aea19bec5426aa995a0d6584da9dbd70eadbe5647cd72e91fcf6dbd704a2e94d44db18e6d03478f1c8f7851057ebd59b3d17b6887823f990e2466e079987bde0603731da9d1130957167c337a1240132b0bfafab07c36f0da55d14ebb92ff970ee929009c5c496d9fa7efe2f91a41d7d2eac19befc55e3bb1307a2b35c9b4b45a7a8d68f80d30fe44bb9d754eea0668709487c4de99fb477c43ab5a78337bd419dc39ac779ad7810d6cd9838f89b949979f7fe8e59afcb7b5789d35f49010678f868209346be85434d00ae16ba10e26bafbdc7793342bcfb1e954f2f2e8a48135de39cc1d62e16d9978c2e4afa54bbda4c8e2296cdff0a491b3eeb8d60213c29c56793ff4008efd7732eb38e2a0d9453c66aec19a7c0fc455a24503fc17d70bb92fbe6089f888bd0fdab3d08f251ffaf77de69d5ae4fb3f5587fed773e8b88dc33deb2ee8f5ee5f93a7a2515ed9e695794e3f3b6df2dca86e34ebb9fe1c38bc99eafff6ebbd2a871a5f51cb7ad1ce638c5eb6e201bd50d5e3ab3ad4d08dd1d09c9dd13f6d573a82a31da037922e6395e69e3ec06bcd7946bf113e156d1ccaffb0f7794a42e02e8423baf390f7dea92f367bf8eb582cf67f264ee66efcdb66a19cb2dd5451f01cc6755e6d62054f6478d0c6e2d9041d1ee0b1a2d2b9d44fa756dc6c912caedf03bde26f85f0f7a216fcb3f4d1be564fd2599cfcf8d98119db57ef19176e7f2c687c3ebe4ed2feb344635f3e47b4dc313fbe14167b734c1e8423113e7a964fafdfbd76af97c2c61b987bfd9679c7ef7fac96dd5d1ea0f48eefb5a6ae3407d5852ee199073ae1da77ad1f049d21936fcfde24fff70be8f2286ad7e0113d1847f2c0463b756b3ecfe201c965435d92315855faac0f0681469fa8107c86f01280339e825fa2b25a3060537f35925e6e18a126447cb7ecebe0e94d1df26ce0bfec8b76d7807191431d3a13f7b18fd599986e05cc7249de29758c8fc448c6c0a409ee6320b5fc6635026fc9c41481b90e2a8ca04fc447ab052031656aae5906cf7f89dfbb5ea355eafb3a33df6dd826d01ec2a3606414728e6481de85cb634e253750fc5f72122577800e4b4d3ca8d4e7a9e1020d59bd0dcc9818503f139f65ae9760baa38e98837be38a7cf7fc344b56feecfbf2b0af8a27b3370cfe4c1db0bbfc5781b18027c18a9ae5c48b3875c3bd18be198dc92d365bf27256e114da5f7a140c922fa85bb4f4939ad9faf0f1a23e2c3f9989b7a9bb3d1fd62bf442b35312e60a3a876dd069af464f0a7cee16ef6de57f5b72a7d7f0d600be721bb47915f9d81f76e77d69926eacd6cf80d8a6e8889e1fb86f99794e7e3ab1f7016a48acd3f5be4ffae906a7f0a930ff636214db4b7235b198670c4ab827369c180c473951c77aab3ad75b81155d56bd46d9c8b1ba64c0be6caa0db8e826bf5c010b6862bd61a9aacf3fd16cbd5c3fefddcbf2b7e543deaebeec3ee2f11ffac7e079bab77430802fb05889ed859e46bf7f115ba091db99d859bf4ed2f102f5f3ffc4df6c414e32b8de69c1da86d92ba4e6ccfd8639a4c2dc33e3b8f4595392fe299f9bf9d1505f20eed05f367b01f4b08b418afe8bd96773395733af72e13d607f724dde61d66eec09ed90fc6fac0f8f0afe49666d770b7a7f638fc94e2ac5ffb689d4f75527f3c5ecbd393cb4bcbcda9d9457bb936a6ad6955afbe67b8e2f781a91e4e0f0b1ebd0cf05ee3670519fa84a77350afc447cf1a6a87f953ebd1b4bff1d8ead29e8f948aedefc9a6b7b67fd73bc5afcf5ff7fcef2e3caffefdb7b0a6fdf165eb3bf35af8afe9c2333aee5f3f5406ab983feb5de1b353ae9fc0e3dff51e0ca79545f73796ddebfd66beee3b8bf8ced1c36c90334076cfd51b4490a2f0e33e4c8450b1c434b6c710ccf0c3d1aba7138bba38e1c115bb5531e717b58773cd641c197ee500b68c1491810cb14d55257366b93fc5cfe1eb55977c97590637c131ffdea3375d0d12382ae04f02ec9c809d69d7d3e04975c38f201390c173cc0d130f84df3cb5b2e06cefacff43cbbcbc7107def3d3cea4d8cf4537f22d10475e937ba6be967001e5797cc816d73a6cc2fcc1e58abb9d5e38ea05d90e4459364f41d52e967f13f9c41175b2d22d1c0cf2eb477d4495782a5dba9269907b5c4749e6a87c02a296047f03c38fbd55ceb4ca5695626e38231a059c777f05c70c80d9f96c4212bf318d07f6d59898f7a490eafd52676babcca5ff5b7c2eb3da7e717dac4d4f4f127bdb7b5125f1ff2c2a9e10a5f9b7653ddcbc5ce8f2beffbf7d9a17959fa1fd8a21f358b1133c08b1338f1eeb122260efabe47f690ac0efdf086beb9baf42b671dbc9b0af750057d6d7e5fb46a616b96f99b9a0fdbe770b38016e337687b06cf23c7417d347d8cb55b0cceefcbbdbb3d5a17eedfcf87fdc3cafb6b373de4def20ff617baa34e2e1ed52f667d6b81ad1a0dbb3934ef3effcc6fe3551f94bc6ef6e90bef0d7ac2b757de1b676cf3d913167df2b2d72f83fea659bf6ee5673b6854fcc813d817ee33bd199c14bdba9dc981036a8541af4cfc70a43f0c8feebd67e20a4d6c9df0c6c1473fe945e9009f31024ec415bf1af475f2aa3c296af59938fc28dca3cefaeda86eafc05ddc068eac83c1d79d33981077d126c07650a33a879fe0cb2219814364f1cbf6da07acc1a2fedbfd9efd7df0f2a1b5724b7bb6d7460f92c8e444c0669d54175b4dbe7a5215411cce623376f4a1b61a1103ed60cf6dd8379f8a073db45a4a9596ac29e0ef963368713e33606ccd3c7a160e1b396d6bcb690ba8ff1f9d54559c12688545036a540ea927012d1fe007cdf83925e15a6a9be403125f1977c289abb92ec7aed53485f666a5e473781cdd9578a4aefc10b105380ce4c8740abd25f0f9e969e5c18fefa42af2235567f6ef028ff431b77ea1267e581387cdb904fe27fbf8d05262bda87a7c9b10cfd0f435e5397270e11f993c1c1afb03ea67a0af1c482dcbbf57fb85f589e980714f462d19f00ca65d5f6fee704f1deabeeb45427d33ec79e42ff61cfb967e5bcae223c5bb6b488d7f781312bbc1dab2b9a79b37ab8ba1880f38e98539a761c31a7174d64d91ff49c247625f5ae2b4a081c29a9a70c2801deb88bbc84c5eefcbde4ccfb0ae24cf0998d282788c398f97b04e617ee08728e38efa55c8ef4d6ea37cd63fa0f160f50906c2b56a13620fbc646439719127f7c0dce353124e4ffcacd88c79eaf960ec017f677100661cfa858983a1db621f59839854a5783ce66f82fb31f783181778e4c03f925c2c8b2fc17c881c7ad06e62f8d0a6a2c398eeabde438d7eb7166347ff336a351e27e899809fdb51ff1d31ba833d81181347132f440d763bdecdd8b0dc80393c06442b039c43fcce399f0d6c6f847b4e61c753db7f3e3089c0539a7d0c7c1ef43d5adc47d14e82c6a5c5c7a037c2cf401fc5e5b5607d8b9acba5476d19ab136331a3329739b7cc1cb7dc5897f8efa8e7edd2676eed15adbd8eb1e06a594f269ea76856e8a914f49058f4eba568d7602c37c40797cda42a065f0f8ec7353a3b69fae4b59a18131c83ba8a6b0f63f1c1aced25f050b60773e6154397de616dc1acdb43c1cd6627f2b3e15bd130ef8e3a7c8f11787d169bdc80a73ee7d8fd7ac09ad54cb00ecec86127cfa4218ea6c7655e7bf279f551ee65a30ee65eadbb4955f8826dad7b9fbe74fc263c67e159e23ed409c69de84b62bd59f79e803c167ee7fab37df777fc4e3f3cf605e49ce676dd1a0a6ec1bc67f9027c9cd581338fc090827b7652a9aeb006f0877ce8b03c29f11eb81b7fc038feff571cbeef8b3fd587e62e4ef4b0e37e55089f59610e12a3163982cf85de2fb87698e76b0fdabe61899a3cb493e81586783a1959df3d60c588d3de9a5826e89251e0c143a2e7404efdbc8a6e79cabec2f306b52fec2383de87ac35ebd1b09effc4c3593cc49bb3cf57dc0a37e0a42b7e37bd036e5cb4b4f02835951d3966dc2b7daef3eaa85bc79fa49b4f2be43c33a9af8c5ff597a291fca3a546e90c7d02e88dcfa1ad658eefd1f77227eb8c39766479e2adde9581d91ff89ef2d8ef83d0543773163e982dfb648adf05de3f586789d5b31a5da3c007be2e8dacc6c3406f1de1af2bf22edb6060ee057d3ed7b2ce636fe75c677f025a0cefb0d7dc17c8a1a46650076e839700f7b876eee1dc125f3b7e554ff07c6ceee24001abb03b69609dd6580b7537f4c85513de7d1a93ff66ae4137f4efc1f24caa983534f37929e2519f6ba639367972bc57e6f1fd31efccd1f2cffb95fff9edbf2a47fb975ebf6affdeeb77f6aeb7f1f8ebbd7bd6260293eb081fd4e4ebbea2ceb289757df275b22e0e37d4364e676132022656746b8001f7357c271e63f69895d54c69d47c28355568abfb2a07a7d9ac35de73f8085c1f7dcc876e8a3c72677214f1ada2962e63b1a9cf9ec1bdba45ac8f66fefe581cfe7afba8fbbfab0bb4c3f639443dacfb2adae1d41a2cbbbcca63e517ed73a83f71cd989a7ca255a3a049c2c737e4625d7994476218b8863bf480e5eb7c7cb96b5ee81b3d3965c687fc1ffec7bc863eddaf1fe7a2cf77719cddbf3fcebfeab564e4bcfea0e9027f38e819e80773fdd917815e25e25fe88cc01b3f2156bf115d80934ec72feff0edb51a0d5dd6e5d64e1c9af9be133ef794354ed63884c32db97197bfc04335dd95fd2373716aec42bb655dfed37b80f9ad366ff4b496face15077417e08731522b9e2fc2f5465d80793b789543cb3577d62676628e271818ec571d398b85e5425e7e3fe1865ff2d3ed1a33bcf11af599beee4c0c04cebb33a91e2be14f004344ff7168c5200f5eb7e021d4884fcc392f146baf5bd4625dcbc3530bd4d35cd121946bbd7c9954590dde8bad79a42606dc10776a62cebebe1bb55257629cd565279502f371597fa1c6f5029a31661d6f2c77901c56ea33b29e04de49839ff442a7f1f7f421b2f5617c5afbe6bdb3970f9dfa9b5e60ac83a6c393ae969560474fd46032b941e191b3034dded749ba86dfbed42e2c16ad25ffa434ef51c43c4f4fbadbbcd91eaaa68ebbf577386968a8ec4eba33f94ad116c87130463d7af497125faf3d93e7606f609dd5bca7430d88da3f1ef8ae07f3fe71c55ed8b0145da44e8fe041658e43af24f44e37f0f307b694b83713ff37e42096acfb74b357dd064d429e691787fa75023f6868d2d5a23d03fc84bee22b9ef9fde42bdef230bcf4cd836640f08e3f79e633923f79536be0da3ff11eedc9e1e0391c2f9453fa1bb3d77e0367a3c9abfdab8646dff2d7b5d5cdfe429c7d0cfd7fb39ef0f757db0b572971f7f33097dff7fdef77c65ca7a5b73f2d1779fb816fbfe9c5e95273a9f0cdd8a5568972266959ea2f05fcb3acef376a4a5be8017693747a4c468e83fc7d3b44ff0eb58c2eee75b1a1f9c69a4749bdb5d2ea26225e074790fbea80befd377b9edd559ff3a13ca90a1c6da9814f07d22f24f734dca30e89ba1eb4f5fb78c03c475d791e469d704f9d44bc99c01b479fddccb51c758ddedfe8a21fd9631bad46b939665ea0de3385ee616979a9036230a665321f3ae0a655a5c40643b3ee2c88c9bc798c54c3d3651d80cf082f24b3b6e6a1c99b98d7c4aee4352eb9ae2fafd461bcf9bd795daaa1f56cf2c89d9b06e466b29fa3e6c3732dc9ea796e87edbabde8fd1e4a07fd52c64be673bad508fa8ba20fb5668cc5beb1b906d479a7d65f23bddb563c2f4c6ca6ccfe037ebc47ad0bf8f649cf96585060fb7df237d943d1e0ec6ede6c3d073eaae0f761fca2169784ba620d169af6f400ea32e991a1ce3060cdbeff3f1c13fdb007d4ae4e52e36f92116a70ad5ed4f4d237e7e695cda4cadfcc5864df10f119ebe02d7bd4d06ec0f7c959db06b71663cdfafe439b0fb15a68f5b887f41bdcb22eac532d9c34e6c87a1135bcffd14974051a781653b3b0bf76965bca7995cb674cb9cf77d07c35dfbd4dd0b7440f2d903e89dc2fc53e3be245d4dc02f4dea0a12daf55a5cffb1b8b9645ec487c68f65df9dfd2e9b9b4d04353275d15b6e7438f47dc9ffefb98fd19f57ccdbaa889c579afb61833e63aa3fe468d3fc4014df25083cb9b842faf728e5203047e516af3d6c38c7de789fc5f82d7d7f01f907be2619c219ec03edb20b69ecbd8447c62621bc446ae7871e37fd1c711ed53e618d3016bfde8fd38a24f774ac27d474e753990bf05097f9c8bd79cabbfdda9ff343b8cabe5e2f1efd5076ff5066f159ef247a9cb3ba29759db9facbbd6cd16adeb809a605368072721fc9d0693ea65a1d29c5c41705f77279d2933177d6a9f45a2bd56948a1a4fdedcecb5c4acff444703f50ffadef985ec5199ccbbac842e376acfbb6362e2f5bbc74a7e2c16cd9fe9bf7027ef08f5f14cc9f3823d20e04ca725f054dba1937556ef75ea89dec440348a5af1991d90dbb3b31aaaeea49a2d54ba899327723c7b7e28f99ec267884f0a7a1199f4a3c90fa2369ff91c13a3cdc40bfc7348bec0bacff14c7e0dffdeedd003e6197b9fd501841758aac03d50257a89e8dbe88e5c436a06ca73f886dd179f2fbfaf0f79bd7a1857ff5535f87f559b13cf4f78ea485e6e7574d30c9c73b36773cf2f4fd827e73dafd2b17ae7b277b9a2d545fd12eab075a22dccb89cda5ee4466ec19fa33f3df5994f2a15af5ed6ed1cf6c9d84b233e3ebac3131178eed6ace56a6cf2bec74fab34aae330f28841cc02c1f00cd8cb2b037a9a52fb6ad2fb3c461613217b75ccdfa9a15112d720b88cd6ac97caef358359a36bd97332f97ecc39b325f60931208e0f2fea81e84d5b9f945bb8eb00bdd8d4ce5d733fa9bb9a70de07bdee6a3b6c2c4633b19a67c429b97c0d3a679d76146a7f587fa051a04af0235a60b13c9e0fb9bbc2aff2d9bf28ccbe041d95242dac66a76087e22e0e75ac916fc397bdd1df8ae6eefadbe1afb7d5c35f7efef0b2cfbcfdb7d5b70f4cf80dbd49177bc2affa0ca33ebc86865192d566cc76cf26cf41cdcae4622f4a3c813dee21661fc81538cc7368bd39ab51e04d524d5da53093f53e3ea1270bdd59eb130cac50c0b8c4d6a430875cf114434ec579b00c13d496cdfea7707eba35797f590ab7d6ed3d8543abd512b9691803db955751f71c3e2e12d49de5bb983c2d73e0f5002f03930b3dd1d37452e58b242b5bb587a7e4e0ebc1111cc572a1b741abb3127d1bf280f35770eef2a25b9939ceb9203d40f33ff7f6f996edca1b38f027197dec69d77b1a3c4d05b7b9963c6a2af82c331672fa9cddf2ad337b1ac6d90cfa498afaf07c147eb278e1f45a94dca30a936f1ec52bd5ec2583e9fbcf3731d11770f7df6b33d57a34f43755291a10d393ae7625383b73f171457c559ef413fce78e177f3b261c73ee8fc78bc403f6fb51f27af8805ff803987c153d13e110718fb7fedbd4a23a695b37aa728fdea9b37ff75ee424971cde7ff071a327499b57d37ff7fea7c26272d8a743af4ef15eb50e63ddf4e5951a86973e930e7dc8fde2f86fbdee3677c79f9b76e5e7f57431fb33fd23efd2d9415ddeec0daf58ff77a50b9d1dbfe8e6e167939b74f43b5b53ab6ca130c7a8ddb766df14fafe0a632859940d782ad0fa144fa98e1e0e82b33a12079a7f4ae1773a2d15b4ec503f72d99f2da5d69695f27fa885993c260945937f64f171b13b0fcde7cc3e513328023f06790db99d8c675b79dec2dbb8633ec67d50cb1c070eafbd9cefc08df8f4cfe20fb57fde7927a3ae1e498e65f22af83b96ec8f997df673d7f7cd2bc6d7f83d570daf9f3dc6e6d30a3e08d071eb6c8f9ad8b5b53c57f8bf04b5b221fc4be250f0bad4b3738057de52d35c859b17e413d48ec7e359eb18b50ed625ab29ea66a8b99a75ae532715be7c5ae1fe610daed54135f108eb5e43ee46845a08fd3accf58d3bf6f0343577bbdcfafc8967a878dba1ee528097abaa7b3d8f39b7536f79f823e7f63d350cb3074b0f44fa182d70c4e2c982d8aad7479c9e12609663f1555547eb8b431d90a173d9b359b717fd1af26d4e2a7de9bd5c75b711dee34e3c52513b3e2529e660ab7ce83782efa076658bb5c793f5e2ecf7dd495e231e91f4279a54a21f3b677c4bad88981c0d93b345752b5c8a567df9ae93f950f0a585e0fd2f71ffd4c5e61ab37c512d7d16fa47602480bf28a16d4c5d708eef83925c9478de09f0b97cd437b99ddf8ff43d5bc609d7d156cde91d76f6dc9b79a20b656310577c0480775b4187b42ce1877b85ad192b6ab6ee4e49a817aafa1caba7f33535fb2feb068e1387a5b967f48c1b0d4fe437581ed33048c31de336f46d77667f801e0c3d5db2136b08f16022baadcaacfb0f65436fa1c8179da486f7721c420fb993da59277a9e264f4fb31279cbbd354cfff1efcdd3f08fcc3bf3ead7e3f084b99fff7bf7ece96fdab3a7b267efe899ff8f9e25664f1d8a0fdc7040acb5d464d3b53c47cee19ff76b7c2eb5fbc05552a26bff4e37295703e17cd5fc9f9feed501e7eeda8c599f9e9c664d2c4e093dd11aeca538c6cea3b693703ab6ec1d706f9c5dee8d2dfa807d9d35f2c97d2a8ec0f07ff9ae15e2b37f737d0a7b7d1a68215f7bf9397d7d8c5e61d02348885111fe00f838d057158f5d788d116b6be29da9f4937792ebcb67fd96b9fbf98377f24edf34067ee1d7b59cd86f356311baeff45dc4fe0e9e27f151a9ed09c33f8a7c8936101cfe1abcc6a9ad4f6f2f743546c30671838b75df31b92673bcb1f590b2feed1eb58fa0bd37100e76a3bcdb9ea267ed8cf8420321bef6143563ba0d1c65f5d1e6e4dd01d3687598514bcd3fa37e3b277fc5ea0d8aa729b004a2d9e6b1e610592c006353f155d5668d615cd1424724c2dacc9cc2ff7e44ad8dfafc7ef2203cbb96983af27d70bf1ce1a89077483ffd0e7807d4dea788bf13e0737701d7533cb236b1c5f5ee928b7d16d7b5e7fb9747c6d331f87fe2cfd0826fb273025913bda2159e5ba5e4de9bb56f07be5d22d83fe1ad0ed8eba64e2262c774d909b756b87bc4d1162d7c55844768d6881de27d68fd861bc9c95e6e7a4e8b478ee50f5f61ea88a193d71726e77aacfa3a026a08d6377cd801a76bf6a47648ff27f2801cd6e81deb23071d953bf924f172317edb3cbc7c5e1d6669b158ee371f5a74efb93e35794abaef8b035fde06eeb3894bd3cfe004a3bfbd0ddc0dea53e5115a6cbee837ed6a270e734f6fc1c3aca9cd9371dea3bfba468d9931017c355d72932317b1ed3c08e0198073d9357995bf4d4c4e61720e60b68881a2766ac6be69eb78ecedaba378f735dc3351a70ad4d6f126c09d68604ab5578bd67b5692f317bb9b6a7aba978f397fd8ff9f0f0ce30d1e267af0f050b86befb058286571ecdd9a7918f9caf0b74b98bf04d4ce892cbe07eba48c0bf1f4128f05fabfd5c23194f86c1d70ff98a5dae4a1a8f15cf66da031c6bceedb45df861ab60d7b41c8dfc43f16bc0df19433711b74ff3b78383a6593e4c5809a17b9875cf2cb770d0f3af40d834679fc5c7251c72f66cf4fe025d8fb2c59ae62a3bd9a7b5a1b0c941731a6104e32d65c13f3435b2502365074aa584bbab39f387fd8779b87bfdaaf59bedb7c6005dee773cea632d7faa5221edf611d879ace52dfa16f04738c9dc41959c0f8604aef882dfccde027463f0ffd8a78117a1bd49cc4bd44aeb623f680de880d6b7fcacbabc89d87661db79a42e77ee57318d5f04421975dc6c7b4a48ed92c4ec403089ec8664ce726de8abd39b407c64abc227d13cb51371a395ead2db7648ef5d8e48ff48f1a89f78a997bd48a16ed85a977edd9e89ccc5c2f58cbb09865f174dab593eaa512ac4d4ddca8438f61d10c911af3200e239f18dbccbdc6e6abab184634dfc55f351bc0dfafedb544709f44cf933ad7a17ea39ef0a302670bb9f12c56e9c613afcb37ec47265673cd9af1e2a9f45e3db77db5ccf5ff81fef461fd11cb5ce3551a7bafc9c7bf8c2b87ddf3c811dc96890966a81d32d7df79926f58ad0f131fb7ac8b15f42a8914f504118f604cb5f0283273368dd12bcc2b1d2bbf68f4a2ec36d5634c4f80c82bba98f534f87bc5f4c6993bae399faf3b07dab8d0c97a2a1a138793d305ddcfa3f4d5d8337c527d8f6d52e5b14a3fbf613fcaca60221a20097b0a973abf5ddf039c9b982e42fdc3ea1f297a27b16eccbc919cf26ef9c6ef1bf8ca51c81f63f472cd1a14090f382ac5770a7a905f0fce200e7b2f066f53ddab1fbdff7bedead7e2e9f103eff8be57b01dbac2d5a4173dbcfd6d5c9d0df22af2185fec82dce4aaa156d42002f6b105e663513b13687e0d1d7a6be4667d124dcaa8af6180c77db8882ba80dbe105d8946b4b1a4aec1f9a576e6fe47cd731881cffd3c327bc9cbebbbf8a454f7c61fde78502c8e1f6be1cdb530eed8ef3779b6686d6da95f044d2d7a77a1ae48de1db4c03cebcd75eb75f486d8a31d88d656071fc9cc6262515baded1e4ffd0fc1df2116118d2fe063235f9e7bd29b153d2d68c536da3ea78f263556e67dbdb634ef7d0ec71e7c5bac87117d596fe8d2aad33b8f79e1d25cf77bd8ff7d140f56b36e47a22f827301af8218cf58de63f93531348594d4ee34eae888bd9957cc59038157d956fc0d4cbe8073c5daeda35f463f6deb598ac735eb71bef01f3af1473dd2f3ba686c1d5f381badd48f4eaadb84e2dddb8867772dbacca8ad9b3d6bddc5e08ae3bc814b3439b4f92ed07deae8891ff905f963d6cbac63fe057d68e85f493d9d3eb5d0ba02dfa685fedaa26e7b3c27e2b892fa2eec4bb347de453d5f5d75269e2a4fc4f4c7f4f40b55094e6cb5460ccab54f59af599f3effca29ba297823ba82c74827b9bec7bdba609dfc1bf9a4e239e1ea875a3c8e8340bc2ea96f466f89b6fffe1c871e7566d02fa09e9568dfb316498c2a7830e1cb5bdf4bbddb4bc1ac719bd17231fd58e77ec211b11c395b6bff89ce73ac8999a407e159bbd7133f9f1f5ea727acea5293c3a7fb57b5a8d96b3ad0c704f9b7c99d0e65b31ac1ffa39d87b1590f5d6a2921af70f36a63623cd1d1e0f379b85cb02e1d97e638fa5b01bdd9497a2fcee2f87df390779b2793ef7ed4a7dec54f5e1c6a3b366cede9a8bea90b1cef85e6eef6826b893d624acee8a1648d6607cf3c97ebd4ecedac3361f6b53327836335ee24cf6c646f76ecde4c7e7dc63d013d11acff1df7e0b53cb77e52761f752ef6d17e8f9675d5f634cdde33967c84fb337b933d3f10fb3331cb11bd65a0d31e4127945a623f791d9865f66613f45632b32fd36b9a75836362d6d18312ad2d608a1aea6b15edc4f273d09776a041405dbfa2835e1bfab1d03e68c01118ddd80be7ffb0df62cfb27dd5b2a18f2c3cb8e09d95402fc11c7727ebb9ad03f6b535f68ea84be64f79ef2d9f983ea1db61a3f645d0af41bde7d8e32b7b67d43ea01e7ddfa7b19c8deb9a073db3a0e32a8fe299159549540e26d512de24cf617c624dafa02f51f85259dfde2444cfcd177db580f578f499ba84dc38b99f998d1b027dd66f3c9af74caadd6035724e8c65507375315742558a9f18f4d944e39c7c6d8efb16fc0dece3b33bd7b0e6efc21be3f5a9b777befe99f5c5c59d98b146e585c9053bf6cc86ac3df8c4e02763e0848f12f39831e4fee8b998ffe0a7a8f36260dfa3b7d4e17eff7f3f7bed9defe22bb5cead376321be8b8fef8f79fdda7d7d3fb5596cbe158bcd47dde09db6047b7d2f713236f7173e6483af07fa569b63103b73f137d61a1ae198bb79b5473f3079fa8e9a29f6c07dd1f5da9497def166dc3ddcf68cdf543ad63f89b72e6a1097391b74e8f5fcc26bfe495d68ad8c5f45c7fe9fde738bd3b3481ed46dec1fb0ff66ddcf5f955b78ac61a813f552d6f434758be0398cea4d15ddeb6faf3f78bd3f1bafe37778aa5bdc58f1c9336b1ce391803cee02af6b6a185e706e23fbbe86ebcf6368f24abd1d0ed0abc3e715e00d9bff036fd87c5e35b43ef2f5bacb647c4c3df43ac1f1b518ea887ec3f4b1ec44ab09be9c29ce6d7dd2216a68af6a5f38e83b548fafe0349a7cb40597b143ccd145c269dc31878526545126e8ad67e5bdfa03e962dc3d7f78c3bcc74550db83b962a7acd73fb9bab5c490016268cb7d45cd26eee350c6b6b13c8fe1c9c1fe5ee448bcee52073f3a2591f2a8cdbe26ce9f9a329e70d0bd1fb94ae0e499f5d8ac95cc3350bf291be22cd1931824911a08a7d837f1363912f0bd0d842311acbbf8a4a1ed6a623965f159b5da81b7e0d0bbcf7c2e726d978fd0f4b9c5a1e275c3fa19993c0bef3b6b179f3d08d6dd8507c113f610e13c4373acbde200b7819344ca11bf31875a435c0b9083631dc05cd0e0de62afda9d92903c4ef41fd9c71b102bba2b453b093e13d30e1e4f01eb440af35f5137a251db6150b476fd615d10ef014637f09311f511e9119839bd9713395475f2a5403e26be5882f58206f151cf87eeda8c0362538e5c43860db177669dc1fded6c3ea7c31d30115c4ba8e1467db729ef19ce61482cf7d63e37f7f4c59ba4c879e15171d62e1b779718afbcda43a380f7db1c4f7aac23ab2567c656211ac981aff745a346415bb4d46d52e91ae3dfe605c4ba65727da961ac787f5ad50ea58fb6efc8f10ee8e5300a3c7550e4206e716d1d7e97f8a4d3bd873ce341eaaebd8740ec89a67d63352ba16d438e84c91703d1372216de3cf7e9bb35a9a4673c0f9ce4cbbd6be9feedf969f6b2feb6cf960bfdfab19fbfd7e980179ba3dca29d871b0ffc7d8fda81c42ac223c3494c4e7aa89d491505e2852db8d7d8724b1cd12d43af9e75e89962dd79d82a6a699839d4822f4dfe55abe05bb326978973d84dac7737e689394e2cb50147bc15a7d66bd435792f7106a5f84764f248af08bd357bf3ec6d421c429b573393cf00e7fef5e010b77aa88f1ccf8f0bfd60f2a2ec94849b3b7365f7ef95371b157f687df81e5ec5ffa73d2d0fe47324d79c88e399c3e834964f60c6b3d9af845f51aa745ac29f00e31f3a37dd35f7517c69cdb86d87f5b577add3f32e844f3160efbfb4dcea92dccb423816125b57125b8ffad8bab31ac6d43484a7fef1c2ab1dde0be831a2ae65f68918de01c4f509bfbc23c74cde8be7f7e65b2befaf0f7ef14ddf0233fe251f6a997f5f6a6cad3b33aea15b5402936862b088ba4b5873f973f97ba3f6e7bf53670bc710bc795c17a8634f5bea5d0a06cecc912fca3e37730373845cc321e6887d8ebfd33bde9da4fb6bbeefd98719358cac33f12cc7b2686d9b58055a611cbf538ce7757beddfccfe2d3804a57af8e7f99850f327109e133423652efad08901f709ffd3c87ba073abac7615b4a430574ace15d68a51cb95f13f079709dfb5142fa796f56b251a2611f840f7727ed2c3fedbf3975997f9b3973fb4067b8f2f2e7dc1a0e13226ef32848686474d2e727319d798d87eda5df0f5e8c1347702f125eb88811ffad3aeb03aeaade57c69c42a3dc6b325a6d1e442e87107e2bb6e31a5ad70f782491f3fefec7368c5887f93cf3c5474d95bc767bf146bb678564d89e7a41615e689baa8c1505f0d3c1387dc9de244cf9cd22bb8bf899f7c467da439fa0747ea3cadc139a65e1670041e8f5338d48157f436e96b3de2abd252131fd7443013e8f7631dc95af15d236fbe5b5b2d131387b5bfbe369ab561f90a7d4ae4ebd3923c6c5c9f8e6b88796df62fb92ffaf57fe656dd8b1b18fc9d7ec9bf2dbdf1b70f2db7f773973a8ff01b4cfbb57b9164e8c3a3afcaf8c5aca93bf4767bddafb9f55635f32e72a9374a6f55784e55d30bdfc7b3a63878f8674fc6187c19d4acaf3c18bb2badf1c5659ddcd6a8a56e0d8d35eb73248f69aea41e61725bfa4993f3dbaca07183dc1c8ff8dec45eb7acf51377952c6ae658e0134fdbbc8a02cb5780c760faa8a47e8a7dcafc7d8e1ac3da5ecfa322577980eb084d7668fa0e9e718d1edf88e1deb579b5179cf68bc9fdd873057ee3e5155a02f4831cd06b72af127004233faf6ed6335ef58312ffcb4b6df7b1d77bf192a3d9734da4e7e9a2f7e416dda4ca5f27a95edccb8d480f7fb5cb877d957be3b7676f7f5a7e78cbfce029afa0ad8a5ed3d1ccbb843d275f6a96ce3c5c9a5cba4c80c1c9ba55181f93a7efc4d4b74e70a74edb40f68d416af6ec4abf8a66c389b1660cefb04db53439fcd1c4afa295807e95de3addb433fb6f29ba3145afcf965cebb391af4b6d18e43e8813803b131d0b33ef42eeb978a4be568bba9f596ba29a1836171e00d4ae3d909734a9eead1d0cfede3cec0fcf0b4d2f8edd78f7a191766baf9879ca2983cdd6f1457bbf651cb41e1047ed38f1e8d26f747a52153187a811e37e4d895909f567f01ea1295ff61eae8c6ba6276a736c2c3f1bf9c5798f621e434d97acd73d607e529cb463e2aa5d633e27098b927d81b8613fecb3a79dd241af095eafb6170f8de34fabb9e3c4c492bc9f53af9374f6635ff6db776dee23fac36e014e03f592b5d5a2c2dc51f08bba57c3efdd38fda63f9b757773f8337decefab79c5a5aa1eff93fb78d45b709fd0ab81862bc657d1316e9f225fa1b6cfe3423f089fbf7da7bbc118ca6a5778fc0ce6cf9b6de02591199b85833cb6b36373d7726c8e3df229cd9a3b96f1397e3bf7e363705d365bc793f9e750db26034e5d9b78c73c3e29e1b3c425b59c734f7f03bfd2658e320cd2b0b01c4d4f67aa23f66d6a7d3f1bf2d904ebc49ab5fb1c3ebe24269e08a137e6f4eb346a7bd911dc3862c8c10bc2ef87923e98a2a3249ab7a203eb50971f3d935c3c6fc8c7515e041f086a9de191383072e5c0e1b8b3fe95acfcd9f7e5615f814be60dbad48cc93f3347b80b63851ad6e1469e7600bee5073e25bc993176f3aad78da08ec4117362841cd58c814eed0b87bdd192fe06ed797d675ca48e56b3ee8c99cfbd495504d36e6de62575aeb6432f0ed7a7248da923fe044c18f134c4151fd58271353dad870de3f5a5e8da4c897b647ce252272c70d7dd9473603b441f443f15de6f1f777faa16dc7d7558f4196e69ca3c8f1ce786bf30b49350cf44ed10fe16256b82e6efa8d19835b8599971ba2f1aea9128cb5bf158072ab886cee92f6eb54bffe31884dcdc96385993dbaeb106425bb08ae1c967c62eea3df07529e9bb5d294f725a97dae1f09e223eb60d3a9dd51c87e42706e467940deb653bf41da869bc3be96e7a7b2e8c8256033bbb168dbce9950f601a5e1c0f582fb3376dc06bd407ec7bc853c981419d96baeb59dd88f60bfae2f76a4ba487bf9ce7c5f2bbc5c0aeddcf2f9b27bdff4363f37bd668e2a0e64120b868131bb00e3e061f5734a65fa0f79e3cd466cca0bec11a037c78ccfaf727c73f47e428b7f4387eb68ffde675fe638dff1d6b7c71347bb9febfbb7687ba451dde35eb313c9ddb60a0106344cd06fa3cf08668c48bae415d84f9631b87e3f35a897e08f98cd4a5cf4ac63f79f7c3de542defcc0fcdd89bfdbdf21fbfac4daef567ae9377e4846b9b137ae4ae08ef139a1fdaea7e40776b92ea8a9e71c43dd25309de17e08327f3a0e11eba1b701c2e5f4c3cab81ab50564f41f6d8cff4e6dcb26754b4a26f8b3a32346739f6a841d9807702ac9986261c635a3e5a8c611cbec4d47e8fc977a167bf4b5ce014ba06381f4fb0b4a8190f83825e9dd0699b54f180bd19e82936e77356f05c83c72838bef92b3e2b522676f0e23006be979ec9e69ac6a55c5bea57deae3f7757da23f3cb3ec0859fd4dc69508f261f2a7886b62b7c667cf136f1e8bb0e7d16875811fa000907a795fc2298c0a36e8758467b6553b4f00686ee56cf5fb65e67665fc4bd98b6e2a508bf577a284fa99d15ce5e518767df43748ea293124e90f8c78be6644c4c55b51e60ed410f049ff18918837210879b57e0a9d28c5c2b6a3cb1f7473f367ed6590fd97acf12cbb7253e84fd04f8d6493d2e6ace3cdc8cbcb52d78642dfc02c16ffae19c1c6af3fef239f9bf7c4e5b9c930f5f0d6899615d74eedc7fa7c562b3ff43fdecefcae793f9b09b8739d737e2bafbfec0a68a6eedbbaf2a9ddde48e587fa01bdc91921a28cbd749aadfb0f799399b172e355ff257fdade8d2705d6aaf6ee2109c2bf7eb011efbc2c95abe42076c8edcfba89e0af12ffafccafa827e43efcee4ec0f6567f6cfd55cfc93a0fbbb51ec4b28fa2c4357daacb991f9395a3ee2f9b9197745c7da31de7b14bdc901f3accbbfddc94fce3fbfac0fe36fab87fdee839f7cb3e6d45cf3a3fabe6f77e6975ee9c85eeab57c5a01cb5a9e927416c2f31b3daa92fb067e76d2b3dab31785356cea11032b7ea23b1510ef019ca31b03f35540cb0898c2a8ec31edbd5f1e35843af2610277c21cbf116f3d7f52ed17aa9abda21ed5065ed1c20b0d1817aea7d8e3f85da8a561d6cd81f02c5ac13a31275b9447f28a63eadf11a3d2816740fd0ee8c24397999a22ad7e3263783a207606b85df16a138dd8ade8b4c1737438b01ea9ac4f4ce199aa7735fb7b9e397e2db95f7152d5cb8baad6a7240426d49f54a5abb6126b98f820aaa19b340f73a5809d540d6bc385d549819f1b8e53c5deb48b4e495896d47d2e19530037b67672f496f2907b0b3801031ecbe4149f3b6ab6985c2e421f48817f5e9cd83bdfc1eb07388574472d7b78e942f7ac9b546bf440b5603275567b388689c1beb0bead3bb3a68c199740a3b63c8aaf9dabb6f239f3c0a77622627ccb3576a9af958967b1c94f5533ede27a5215e4d0574af054ebd2e2b8b34ed127b8c53a85b1a6ba31b413b5a35ce2b433e16c98fb08ff456a73a18e5988bf2df4c0e15d876bd8dda9c766d6b16fb341baf86bf7513bff611d6b15bd26a0959e823bf4182759ed53b36016eb879f71401f7fec511dca46dfaac3ef0bef96fec7d783598fcd5e3a5be843e94caaa1bb1a89e762952b78f79af3c3d8846e434b2c8c194f99895bdd7918d79b2a0256e042674474f1a1530c9dc46778f8a1e6395092c710e7971d89a1d90593f4f105581df2bbeade230bf1faaed487b2458e8235213a42df069c0873be19bd9dd33139d452afd15cb7248753a5724ae0000be6eb0de374f1d8a6d65d10873f398f706aaebff74cdc75407f66f1711e059e6849dfcb739d2e177fd5ab87fcf3eacb9fc955b8a31ee40926d8cc976eda4576ff75a82502dd41979848ea5a6e2afd0a7df3775e2ce487592f16452f16ffc29f606bf5a0ac97c9d099a433f1e4dc1d9143a6b36b7d4dab436fd6e26a66c6d080384feb9919d5e4d73e56c4a1021be35d78d498ff3b7b48fcab73805fcd05c662687d6cac6e5d8d1e561f9bdb78881820eb976fd6048ba93c6bf03b765e77e426986b3f3cb2a66ae67659ea2f452735ae4e6aae9ede3a2e7cd8d3e93119390e63f63c563e6a1983a9f99eec03b4dc6f2fbd53ccda42affa04fcce474fdd89cfce1ef2bfd70fcdbedf933ef6a11ffa039c536bcb4181e68e7813f913f1eaa2df47e4b057b076e57e77acb3149ef87ed067f9e9bbd623acbb264e17ce6316b01e25de6b886d0a6ac55679070fc22d3800789d71671ee373e87bd4b0cffccf5e62aaf71233719f997fbd179a7bf6425b231632f10f3e97fa1cee35c7e79adf9075bbde070dfff3457acfeffad25957428f4883bfb9f9b44ad7c4809bd899fd058f1cd82b4f15d1ed8346d242a5fbd71f3c6ccc5c95ef69e26060fc883f75be5aad937f717d4c9c2a5e6bae78adb95af4be156a83b6a76ee6a2c907ca414cfd1db39e590f958e3e1cd48f9b30166ef442c1634255a897715f95cffa3dfbe20796e9c317e9c317e9ff6bbe48d943deaebdbf4ed3c56c375d348efa33f7e03b7a4faaa4ce0efc092ffcf3a6473d56f48ae8b09f05ebeeec5bc838efc2bbf08bf4c1fb7ef5854edf3775a9e75adeae93817358aaf4c5433ef90d186debb977b49e7b93b43cea2fea5d2cf8dd7c5e5db481d506ed269539e6d0e331d083aaf95d4aebdf6f62bc58f9df8ff0eaf78985150dc02eaf36c0dfa296e417d44ef6ca7b7befd3e5d363b7f2069f970fb38f3ceb47cdd03a0ef70b7d288fea5bd199fb003cb46f627d62a1950b7f8eee9cf79f7d35ad5783c94facaf26f314a9f1cbd88e43fb5cc6f117c460de2d0e0a7dc26ee84d9ebd518ec4e882d7134caacc9bc21777dd486c4bcda2d4c46f8af19b8fbdcf47dd15b10a6aaaaedec1b70adabd49bab63d55d4dc54f5b850d567c19ec427ddbd583d23734e1e756f22ee2515fb06fa9b5ddf5f24075a07c4349abdc6e45deb56387901355c70ce2e358dc4afcbe647e4bdfac27b6da11d89b8762abe1666bf8d5133853eb3e8f626e3a2b957bbe3720dff23fb11f76155dcff4df3408d5027fb59cede4acedefe43ce7ed4dba163d6727a2fa357d0291ca3e0be41bf91f7f9baf8a1a8abb51c3abee055e8583dc93a7e27fecf8ec73f161f7b5f5db9d1ad70055bf489cc5e1c14c02d05add43ebb1ed7dcc1f78f1ab5ec8db8829da37f02ee37b4281bfa7b4c4f2a7c144c7eef47436eb5597776a5439f9875affb2afe812d7dcd2ed6c7edd06a0e793c8ecd3162e612983b5337c5fab62be5fc6daf2b508bba8126d67cc847c6d3e2f9fbf286b1e8940db8665be4ac353d0a77e41acc2d4e50993ca703bf01f89b98f90134cb5e162a7d7905ae477cdd2e6bed17bcb91a1ca7adc4e5bde784a28eac078e9368e8be883ff3aeec1f47c34681079fb18787deb83dbf6930b53a2ad49510eddbb8bc978bd9cfa58f1ad93ff59cdd49b5071751b88f26c66eb0d657886f2f5ec77d7426d5a3598b0745d7c712de841c7f875830fa60c3072b2b5df47f53f2da80ff6ead6701bca5d833c9702eceb4dbd93c20b0f94132fa1ff283d1f53ec41ed09eba0c58cf1d1b47983dc3013f8d580ac9630bead1a06ee00493f44e0de3fcf37efd4dffbdda3fee578bbfbc65367edb84d1473c7e1d5b9073486defe65d0f22d51897e6fe1665f2455dd5ffdff50e047ffaf996874df7b31ec015177ce74013f1821ff9b371d14d506f083a8d3135fbb4625e4a1c03fdd73ae8faf318d41c443cb1a6ae6155c28b724efc9979ad7e0e97f033f95deb5d76c88f2b7ff9a12bfb5e87cec48f3d87f77acdc83a78effb8cf75ebaabd8f55ddc2b5caabac78c5df49ce0db722b7ebde4a19bdc693b6c927f11b3aedbebb5ebeb81635d722cd6b8dacbf8b52007a8c78ec6d4c4dd95aca7b7c3463dc0a7eb7592de89bdb6ebdcf6635fbdb1affe7aae430c430d0fb996b525c64af140eea5871ca6bd91c3a0371ab5bf6f1f8deabb72aedf53d37a5945fbd3f3b7bcfdd0a2bac1f94e3fffefe8ab1fc0411910b7b60c891b8c58a3a21ea74b1d58e0bb1af5f49fd4aaa6d06d63adea91da1cf473af27f4b8607d760b2c9ac96d42dda25e8b3e926a8703f18bef4403b9832fbaf89c68db3bdd9ad83468e93595019ba69c7230a9d6eeb42ba9270c8d78f46a7cd6b34c4eb63ba92a4f136a8fb6f48c5c4337791e46c12dbecf065cf0cb5cd2b1f9a360f625efac969fe8d9bd33f15d3d07cf113d4e0758668bc7eba6561fd7876fa4fdddbe063d95523c3ec029160e5c5c3f23ae2fdd15aef9d45cdb567bcae47b674d6160e5a393c95f2d46489beb8d5e68063decbc8aeb7be7fcf3627c5a397f1d967fe6bef2eb73dde453d0cf318f7b75c9858dafeb08c0e226f072dfdfc4d429d65130c6a46e71c987353171407f8868300fe10d1f28af264eaf0d3cedddf05d5898f9919b637e5a91b75e738cc3b7b4a2962130b8ed84e367a0c137d16fdcc3d05b69d06b245f0cbc1168e0a41ba5e915d8cdc368706b6fdd54c050f9c24b5b002bfcada05ed06808dc2b78f9e41b73ec6675235a0f8deeb54ca00f766f6cf4bd580cfefe88c1ffdfe06164dc73cee3f1951cd9027cde39621a3376b1f69fb5daf2c27d0e1fbd6404edfad26ad71327027d7670382ec794e89009976cfc6ae68c19bf98334ff00d2b157c6e9439170fe79101d3daf3c52ebc4ac43327ba3b6e5a7dc9bbd41bfc9939e07d3d8d3a0e5fe2e44be1ccc399c9bb9d0df5ba8ffa81f55db3f6e4d5cba71579b50df5ead6a7049e96d9718231f5f2aaf6d01870044b55dfdf8bfaeb4fe5affeafe76ea1b7b02bddbcca5fa1f995ce3e51fbf333b4dce7c0bc4d8fcac3fcace1e30dff64e8c4c103ebde39bb3ee4d5f393febef206ba580cdce5615c6dbee4ed0757ead69800a62898548a3e68f4ddf092a86e347cf4360bbd0dba55483c18319dc3f3fb1e4c7c5c42d33fb13ee888a10be1fd8007d540ef015e81a2a5d35aac7fd915f3609080cf2cd8c450e2f8366853f6e703f0a322f824ba26a7114da75aa5aafcb94fd6384e4641a0c0c5024f3ee07752264ff3843bdf318757d4021a99986fd3c77aec390dd993a2be959b44b53fa9a07b1dccc3e54fe6d3f855a5da836fd68f3eaad46dac1e15b843c024ac7d708c5be7a4c0adc17e3a30b902720ea76cd4b7a2b9b59fc6a3b3bfaec463f4efb8d2699955e048c1771a1e310df060d5e3dbd5bd68cddfc4a3013cae82ba32e9f8c5e43ff8ff5459ee45039ce7b7ef5a6fc9bde05e7ca5d3da5df2b3cd399fcffd4ab7f5d3ca6ad9a79fc99187962978c1c1f3286856d0581e0677af0ffebe7a367b84b7197cac07ef3d11cd3c85e62172f7781438e0d460fc46e46ee3f71d7531cc58cab05678f47a76442f3ab23fe63dd494f6c873c37b986f37c9085a3127e4fdd4aa6dc8631cf27d662ecc4503a9122d8e4a0d5632c6783ce4231db990c323b9f343e4e752670b0a730e95e50c816fdfea432d7ed7d00880f736d628787bc29fda35c75a430b3b68a13b67e6c7a216ef9bc22be6f0eb6e12ab8b3097cf5ed4f6d883a2a5ce70424e7c035ca5f9ddbc07b994999bb160bfa71dfadd95898dcdf70c1ad10ef7cce7a86d80750978a32dae693331e7cf5eb3d582f259d736399cad81e0ffa1b1ace8e563ae27f0ad721cf8b99a63c00766846b59e25ada73a56fb87c1f5cf793823e4a34e0f7369f99bf9db57da0cdea6af631f9881ad41038a715f43ef9be4905cf25d19618c29b48c36fa6a4f72ad678bc5e2773f03e8f82ab6a792ed041eee88f30ed0aeb6987f16a7bb1e0c07a5ccb2fff06ef12fced3ecfb39d038fa67059c93ce9e09f849c055882406fa16ddfa14e17e62134b4ab35fcf8514bc0fe63be872a13f287ba0b8cb3a7448b230ef7d4d306872e70787da60d7a6de2614f6c82f0460f65b3a96ef302c183f291d379c9033d74a9ad8447eeb32d6a0c665cd1ab07f71b9c091ff30c1adf8f92239a7d4f53c7262abd49b5811fbe120f13d6ffa252b7f47a56f02fc21edbc5615ed1e70bf57a629047e66f19798bd57040fc07701101fd2ec8d3fd0dbc7ab73834df8b8f9ad98dfa387c691aedd41ef5f1ccdab1fc9c50df60406d03f0d8c0392eba8c1c726056868ee05a6afe0cc573c361bd0cfe70a8d3d20b12ba5df0903c62adda9931593adc97f0c83169f657f6983bf051c083591fa90be2b893747dd2e17841ad9b777867e2571bd1a947dd4ab812b5f0d21df1d821aea2828f73ab9d085c01fa47e2b1c7d9a88abe2fc9883e2e179e47f63ce9c9837ab4e2dc9ddb5e4fd6fc671826e0b02f63cf3ebe144d2947fa1327dded433d0a6ae86b8f6c3f36127feba99c1bb55de9499195d052190d7dea626a93a7ff9eb9f5a1a9725323750a8fd452f2eefe79a3bea97773873ff4c72a4b05ddcacf2939ff71cff9ffba33393539d7186fd530e0ba199d3904511d885f97bba96ef806637eecba293c400af466e0073b023fb3d62dc611707fc2257111cbccc5ef109a4aa88343c71d73faa13caa27e1dcce7bef06be2f1d8b36cbe3abfa595defda87e0b20764e67a080fc534b67dfb568de0b305cf59ebfb62d69e047b16d71e7a6545f083d4f7d69e0ef9cb2acabbcdc3d85966e36fcbc5c0f9c831dee14f11c3e40b65fdcddbc04dc5ff25017f0b3e227e5e1527bda8fd496ad6a3a12b71874b8f8931f448f36a63714bd7afd935fea9689ec3f182b8e3b8540fd7af9137061e89e4e9317b7d58f34b7a95206ed9985c7d00dc476662a6a8790e97e47185b337f6014dfc47af43b3069ff50e1cab77007db8af3ba733e371b375fce7f0d1d34ed9c91e3430ebaecaa075025fa3bc8a3af88957e337c9cd5ae659f04fa5a6b559abc161b5fc541c179e1fcaccad6dd021af823e26f37bdd217fa367287a5f2a30fb45d1a20fd9f0fb00bbc878393531db3256f0075303e6066b8738e1dd49a7cb37f2d604cb7aff3caa569e7b5c2e067f269fe07fdb7e418c4a205e72cd8597dce0c24b6ef08397dcfcc24b6ede7bc9dde771fa50a2bf64724e4d4d06c7ec1993ea91793af2cc3eff830f18f24da7060e97b14f518ac7902ffeb60e30e6669f180d9b0dfb4eef732178904faacca3de5c24da42a275d83aa27f0b9d6fe4c1ac95652785f8cb5ca348fa1a63ebaf73f6229a3bf7ea7fcc970b3d283cf37cfd8183bdcabfb393eed625780dd0c8013fc04f50031d0a7e678cb50b5c02c4f6aa3b3f5fb7a2b5e9887fb6680f883e2378b0661d8e391eb1270c4d2edc806b8fd8a714bc4b61315c1d7bf58f8af57178a0c5aafafcc2798b5a772b7b0f6ae31c3ff0606e596f1976f4961ab60ab893fcf27f0583149d543a56aa1a528f3bddc482bf7d137c921383730c8d596f92ce62131f316f17fd6e7aca9d887f818f82d4c258e7d7f416c71ea3510b20ffc3ec79f330023e01784ee6e4f0de810e5687fda0d6512d9eb1bb93708ecd5eebe33ddc6b5ae270028f1a99a223d4d7aaa1e753cb3edb52031db58f96357ad65912d49181f13926f3a045af614ecf20956e42cc55e8f980ebd19831c2fc6cca78c1ec7f5e6de6710b4d2cea5950638d3d02871a588a38e46e4d8e887867f37df7d6211ef7cb2f79b5ccf4cbfa615c3d3fcd3eead4eff789edd0e975ab7aaef263775bd32fbed400643fba93fd2b8abcde7731ed7df88338dc54e27dca3e27720ef6b0e95b9705ecc3ec3836c0e120cf43e785d9c35ce424a9f521423f879e71d4d068a5e7e27edd395e1c2e7fdd8bebc0f3222e1e78bd8e5a77e085886f6a516a4f890f38e3433377c8b95ae3fb4c53e9df6de185cf1a0bf077d32eafa2fa39cca151a73dabdf0efcbe59efcc7727de0e9affc3121aef2935d12dae71dd9d31463fc341520f6889da21f48ee9efd15c5cbbf2f2da1529ef9bde06bdcf0bfc0fb6c3fac6f769545aa0ae0a2f30f0e1a3925adbbf7caeaf93f4e5faba600f01ee9131043df203bdb831d6c0e32a4a1545663f214728943a790afdb186d73f6e899b89bc5f1ff745a977e05c5e8e4bab59094c29f41de0d398bfc8359573466dcfacc95e1c7efe2cd754ce59ea7ef361ab786d5b600188a71c081604de2b6a570e56a18287277db362e82bdebb5e921fe4febd7cc8dbe269f6f7fa7f53fdf6f667dea831dd1167fdf678ead6e798b8f5d7b0d52657d50fb587f15de59ed9772dde04792ae3ac0edc4872db1cf6af33c65da989ddd6edc51ad0487f85eb5e0a0cf440e7c0120526d786fef4f6acc5420d506872822337a922e86812f7199bd8e19df7a7e832f905f26073bed2f7e89823eda0e72a75d581f8d9318e01462266cdad2ba0a3a9c9816d57a1e2f705f7c0d698cd3c1c5f6151bf8a962d6aec07453d186a90779314fd9a406d4d3c5702a30aac83570fccf7421f8a1a7483495506ec1551f3867cdf4834a6ee9d7bfa6579c89dafd9ecfbe6b0df2d9fe28fbce49d27bc601d1bd43ef7852bfc79ff561d93bc16c1535df10286577e730a180f6ab1ded803ebc93fed2bd0abc84e1ab8e6e5eb0f7bedc5fe255c6bee5fd8db7bada65f8d55c467ddccc7971b7bccf0f80ffb774dad8c5f3af7fbea51def8f4fc34fbfef590b71fb1f80f9811ea70654a9e67f4ef4ed7ec15b443077c29ac8fd4eea34e3fb1bfd66385af9f3d7fc463e59dff4a6ee277e8f415e0e09bcfb1713b38f9f2b9884bfd0979faf08c53dbc0451d2c57ac338d502fe5f3edcf3e0fe769b105c02752b3626f62197f430e4d4bed1bf269303f5ba7dd542fb7b8b4b13edcd426f726a9e5f192b3a352682a39d070416d75bcd051e9e7d5e3abe80b74d24b6d34f7ad56fa392715da1eaae01c1cf86f50cf1a784c454c013d77f9bd2a33dff695828619ea202eb94353d14adc35179ccd9bfccf75eb08de6c77d4e088bf608ede8de9f5f4ebcafbebed8f9c7b77fb2069a5e6c3c12a84df60937c29bc14dcacb859856bd46480cb3ed42d751ca123f0aaf6c580efd326373825615cea5d4d4ed936f0a969607261eaddb306841e7460f242cb838596eda23e72aeacbb498ab9e643e3a50d7c259fa917b54b5d24ede1f57b79da9efebe5c0caa3f548fe22ebd3878cb745aa9b484b6943ed4d0d9d7d566a10f65bb12cf1ab583e6357074f04fa55e367242d44aabb24943e8d7bb9b6a0afe90895bd99fa2c671c21e173cd3a0634fcd1fefd9e4aad06d25379098c19d23982e8f9ae6516dd669e9f5513f1cd8d87d2575fb0e988cd6d65050bf0deed6fdf5f2b7e56e7f34e36673c88fff6d7ddac2dbb785d7ec6fad2d457fce512b7fafbee6fc3fbde739e17c4c3cfeeb3a724d6c39cfa8a5c7d4151e515f27e1de471db5eae5adf7d79a071e756e4aab392b71618cbc305988ff066ac899ad75c18b887d587834489d5e71afda295f3ca93aea796627cc77f8440d1b93038043de594dab486aeeeb92b914b84a829f2f25b6cda57e18b4d4280217973169ca79a277d0d01ca057310f0262140af0ca55f5394ed0f3ca81a18c198bb0868538263ee905f0da2daec12870a9cd99c1f7569e1ff1bbb926a8fd959d5c8f1b9eb8f9ab3957b55027ab35847d1de7c5fd5cf8d0e0c9a2df06dc86893be4fb61de2e15b95ab927b51d932b484e3b0ce86521757b707fd56fa8ffe8fdeadbecfb6a919f36d1ecfbda87c779b73cecffebfc3effe5bc7627955d37f440becba07feddba37ddf49e737e777f5fcf458ad1ef25bdfa5b2b9ba89d1dfaf1fc9bc7fad95e33638ee3d5e3f0f3d2f85da5dec5f397aeeb8ece3a81339db855fb48127e375c0fac7fa486f87a9cb3a2af8110139b453171ca83978bac422c3ab0d39ec40347b5d8e7de89a1fa53fdda89df226d5d497bc577a5fc0017626b666fe01dca4398f7adaf55841f9b9fc3d6ab3ee124b283a5fdfbe8b57fde78afd7decdf01ce252d8fc9c809d69d7d2ebd797afca07f2ffd7df4efcddfefec4da7660f7d5eb8662e26cba7dc591fc61ff1fa0ffbde0e3c560d6c5d1e274f1ff318f3989a75826b59ff0cd7e28b4637c77ffa39ec712c556cbd24cfbfa78fd7381739c657eb4bff809a31f0c413f1fe48307f5e3afbdcce0dac219c3f767e090ee65e5cecc5de35fed8b7fe6bc6bbd9b75807729291f8c476196b98f091cb4c6e6672a9a040bd73c7ba5ad8d7491b350237a27e965a177238fa720cfa7a3f31282e7ced80078c8e2a9d01a7ae5bd6932d66ddec33eb6ecaf9071f0bcc974645aad16de062cef0e7f2f746edcf7f27aec3ec69d00a379f5f0ba6acbdc094051798b2e0074cd9e8025336bac694dd91ef9d360f7be479f9216fbf66ffdd71e2bf1da3e61e88ef4b27f95927bc086afa89cfdd33f2f8b885379ee539604c97e24b82f7e2f9d79de3d30b39028e4785e23fb8ab8543055da186b50172aa92745a8ae75843beacf97fbeaea93f1430f72a59c76a2d8f71ed31a72a4ad4ad0ec083d13fc61e97ba3cded78319a791c98bea1ff7a1f53fed43e979ef51b2f75cec45ff17f79e958977cdff23d79a314f2666ab66be3b248e2d347999ba710df83abd3590f30ad6fff1edf233d230f2580b7c77cfae8e717ddcdf184f2e964f8f83cc1b3bcf4ffaf0bcc8ff4c4cf07d7560bbeefeb0b6f3f94fd6f6b13aafe7adace717ebfbffc5f51c785870717775a347c205a4e7e5c598858e40a9d2f1dbf5788b81b985ced80eda43583bd05b1d05e63bd4a9ac0fe44a45f8ce7a64d78935d709720d65dde16bef8f65fbf0e69a40c3bd53d470af94f4eda179d9d09b338ff5360892853a11473a74e8b1ca6b81da92ac99f7ce8fe78771fb87d6beefd339117e1239b166fd1f9247380a3ac645663f209f831a7a81df739a2b257cf2a9271eb63efc70e05136f52dff587bd080403f51019b9259fd9a569feb5d8ed514433f74441c32bc935aa7637ff3cc0b9910d7d2e991d3c5a1a6d6563585ef1675f57627edd4e26bb83b25e138d41853bb93ea80f5f31378231565b250d66bb37ef7b99dea752e54a93cc57a23b104f0cd245600def6cdca1cd7e2770ec2c1ae626071c5f7f6a4c2f2a42be16a890e9a391fb5858f664b6c627c4a585f11ad091e4770830325183c4d6e5a475ce2aea5b7bebc07f58eb2d40f676e583cb2ba69e3eecc13a3d6c45983829a13f675e22de15b78a75e85590fcd7d79a44f1a7898d119efffa47a2d127edeb0d7b8ba3ad7bb7b19fbeaf9cfe455fe720f0c185872cb5dbd337346017b4e7f30d5425b339cbd8f716a7800ce0377454e60cb3e7c7c7cb71f60ae9b355ed1538c9a11e48b9c5438fe9c8ce80d6b1f89e7349f37abd0a3a5c628bc5892b0b4dcfe963ed6c03cd8fa7a9b603d01c6d79ba6664f2b5cc69ec5391794f8927bb3d9dfccde8cfdae83a6a4f9bf5038dc916aa90bb33be9706a793cf06dd073f4755bac8ba3c0bdec0b26c02909ff1eba1571cbbe46e6da7aaaa22f363c4bd8f7435df27aef275f1beb32b8dae452f8e46bc7d01600a707d7d6b1d7f6080e2bb5845cc6cd91ac5391d3fbb5814711d3ef772e7ec5386f6825faf42b9c8277ae4756fb08b101720795fd0fb9eee1cc5bb53130f528d89b5287a8c33e807519b8d8237d5ce1836caeab59f7b91e82b7382dcf7a5bf1059e0a382a9343896f5776525d09bda224aa1b25ebbe86965a3f4e6fc4fdd739cef56bfd780e88eb8dfea93eeedca88f3bb63ecebdf67fa88fcf1d7260a88f7ca2d7f9d45c2f3f0d33c9a51e853765ee592ce70b4ea623ba0fc71e63496d57721b39865c8c45f2487cf0578879f414750ae53dd3807ade9168bd60df76cc9c5c59ad5cf3ffd8ef32bfc79285823da76707b993e986dfffeefac4feb4f49afdf4f087e63677fad5a8c30dbdb97de1dff22e9f872f3fd1e4d23f793d7f45cce1d4f0897e0ec76fec8f3ebec2bbdbab19bf1dca6645cf99764efe2eb19ca3b31f9df28bcecca738e4f379f8b2d03eb9c77a010daf6e0edef0bd1c21fd7f8aa7d9be38fcf5b23ecc3ef8803fe6c312433bc2f1b4fe57ea028ffa130df96fdfb5667fba052e107b60446c4c975de941afc9c3f6a137d0ff40435aeab9d08ceea8cf9b5de84a7f3fd26bf8f33bfde9febd27dde51df203ab3d7dd6a09663dacf8437d1c5ef6b332e3be8c7997577119d34f00bbd67fe49a7bb133101994bcc56c47d7e1e20e626bfef517884cb37e9ab1ec583b991b53e48b2c89b5459addba17d143c06d6727880904f82385bf611602098a763dd061e036b3ed6d78c58457a97140e711926afc84ae03cdaa13b0f374ae3faed4d0ce7db5a56028ce3e6155c02f2dd9d3854a7240456a9134fe68e1cbe083c4bd6330b70114d6ea6a999d5f5bde30e7a4e3eb5f5b0f6735f00a734a256e1c13c9f0ecc3ec5d82ee27ab5054f38200f21125d745c3f1323d023f6a11c4c88937078fd583785875a1b600f34df0bc7e7b99da01565f311c43c665f54ed791c141c07f4eb6815f47acb13308066dda3ff33fcbfe8216bf6c6474f8f82bbeb76ab877cb7346bd4474ef20e9787b1e5dee17762d68c40fc1f9d02b55a93c7db47c69be0a8a0f664e22af1a6ec966f96d30c4c303497e86b72f1fa852ee7e5eb5a11271c78798598d3452d041ed1b9e55437e0068f1c7a1c92bf7c52d00fca580fa0af55c3fccbac0105f5bdbc9af128624aec3188a7cdba564057061c7bc4647a8bbcaeb5fc1595cedea8e732742c5728316b1ee6e8d46abd619cf37b0d8309e759c31aa6b278913a7950e41957d38e733016ee3f7332c491d475b37ce43661acdbf6b50bf89cd7bd7695f214b465e827235a6fe43cb4c45e98dc26ff949a6b01dfb91c3929e2114f705cd02e70a047829a08b9d9cda49a298dfb052c89c77e4909dd750d4cef9afd11d46eeaa32627bdb53a8ebc1753f1112d8823a7de265eff7a704eba02eeabd3d4c46ad8dbc93cea57ad4f097cf4ad6663e1dfbd761cfef23f629a7ff2fafae598e6a85bb31742df6f5098b964f6836e1a58de8dd96bad86a736f31ce3a070c81f8b4f183f4edd505729f01270eb1d8ffd66f59fc507d46efbf5f8607e151f38e7f840497cf0a2c84579171fcc7f880f5ce6b2bb01f5464bd45d84df7f14ef86934e1fcdff827f0befa0b4346bdfdbc46a69026fbaf3a0752a71c1a42aa9233497fe3caeb9890b4dde6caf79865a2073cd6967ebcbd052c6bd442f103560ae89a8113592c77a5c4322e255e9ab4d9d53c40758639a5518b5d4fa8981abb6b570e119423358aec151d69e06755dea85310fa70ea883751afef0a5d583edeb2c0934384b6a3ea4e52949e1475133cf1fb23ecbda0feb1fe42bd4ac294017cf812e66ba660df8eebae8e0ef8daf5f575efeb196dce08dd83ad5aff2c953780dc5f4ec09357bcfac8339daa91d7204f2376a4e0d3bf20ca02f259a2b117bd0dcdb03f13195d8033c5ff63e58cf93b81bbeb452cb8b84cfb279a11e6f7931afb83f4bffe1da0389f52d073c02af3e4a4cd0a4c41c0493eaf16d52955cd3c4bbd3cc954d3535eb0034cb54a55f9589773cc59ea1f43e249f6885bbe029d1c2431fb35b0ba742f9c0868f86e2b924fa45ccddfcde872895fa6755489d133875b34e881672e9e335728c4ffa0bbc9ca85f8973067fd49ba41aba27e8f358ecbcd9bbc9fd627dc587973f7421d02fc37d72a8cb92528fdce452d4c674c83b6d596fc53e91525390fd8fb56b7b6ed27772d9438e4faa7a59a854837b643e6325d872e8ab41bf597c6750c38e7f83968afebbf0f62f2be0c2672fab83fe33bd3c7ebdbee64073f757638a1178c8ddaff19063e04ec8e51dff873ce4b2d4ded963b9cfa5bea90b9dfdab5ceaa2cefef869954a4fdeec5d0f377439e8b3fc13ad8b2134b9d54874441665f0afb55ec09f8436a563f67bf250c40f2c1c43278afccc65acb93e35c45498cfda2b6024bcfa289e05a7de1f7a7ead23201e4f4df2503688751e10bf5bdfee200de95726f3d2ce3bc4418cedf7f7ce3bfc7ded3cbeacbd7c5b2c9a3f130bfebf4dc76f67c62d7af0dea45a07d36e7a326346fcc5a4965692f7fb4d9d748f0f65fe4acdb4c87a6c5c7a6d085f21f32e316cd8b7514fb73937bc7ea9fd82fcb294dae2baa45e07bc56e98b3756013949d0f687c6e7a45a7bd007efd6f477670fd7ecbf820b9c75aa0de89db6155f8e6e293904b9ceba7558d3327b16f28e18fc73f2d131f790f3aa6af6195a6638361fcf7ddab8b63e8c8c031e5fa0f3d665a57de47b87c7045e8baa49e626bf2a8929407e333ce13af15a1fe199d26b7814d42cefeec68f5fccb3e37ef3f0f8b27aa83f62dd1f38d2676deedb9867cca9cb9fa370e01bb337aaf115c6b9251e2e93711bf83a53f06b4f468147becfba4ccc1c802fc60e7a7773d4e9362f09f16901ebcbd44e422e456fb34f29ea7a660fd0afe0e2cb7c241f7b277df521d77ad6915b9d45f27925fbc0189bfde788ff1f3c0aba02f5ab75c7f8d8a1df441af1fba29e153953d48eb296fadf99d51b0cccff9b35641e46cd06ba5ffd6737f310391fe614757ca13566fecfe4a9e69af3fc42e59e1f7bed2867520dfdbc8a9aaf07478ef319fa50a8dd8bb7b98985a12bbdb5ba8045c0eb969d1077504b50e20cf4711b8dfe758c5ab86a799c02febd12dfb7c0580ca8fb9331def72239ffb5e543d6d46698a2de9a4465a3dc029f25daa9aec9a5a9d71bdbfb5cabb028ed63af29118a3665866398bcc73e8a4699424e65aeed8aba96261ef7a85537ac39a6f028ef0736ec72bcfc381698f378bf896f296b8e6e9f17faff2c9fa61febcdf57ae312a3170107013daa2a43bfcfecf7caec21e85315b86f1a9c62b30fce3aead9a237e09b79992267da41d794f560e48f83730f4beafea821d5017049c0edc0efe6a4816fd899bd108f8a38c493469e66eb54f100b887103cca40794afa49533c2af6136ae9057c5aa13796499d5e2b4d0f2bdf7c07e47361ccdc8f1e220362e476f635eb8bdac07b4bfa13bacb3cfeaf6079a8077e5232dfcce3f9753e7e05d63370cdda0e2fe194187df611323f86be4046bd17e8639b7389788dd0db35e7875a3fb43ed1ef05a671d8daf789a71d7ac009f148b73469188755d453e139cd3acbb316bd1b79df0ef861b34ef17df7faa3dab99877a8ad7f511f73f19dce80d4483df1846a88615bc3bf04b9535a94fd23f5b13c6a37e631b4d51de5321647bdcc4fa05735f5c8cbc09eef28e96171df2bbc69073f23133378d4825366ec017b464cfabe327b97ccdd8efd1dec5701ea3f596ddeef3d87cb37fa45a1a664e6b593485c42ffb63562e0047800e4769e6802f91c9b0ab52fe4a1db60a0a8837f22be29822fb536e7c33dc2ccdd13ce8d3d9d5a7a5cc08cf57dbe5dddd8fc524765d07b05a3fe16db5ebbe81ec58ed4893bf85fdd3e263da4a0276c630dac4fac1953c3d9deb31058c916dc1ec7e64c1abf4ffd38dcbcc2bfea70a963503ad6074f74237ce1c0606d82ff578518c17a7e39ecb1058ef27f39bf1b883f6a3b0f979e821fede32bbc2f0e253c5ae6e1fe762ff9a0bfaf0ffacdce89ebcfd7b6ffdd689b17fbfbf77a1d3d47f1aecfcfdf7ffefe1dcf727c5f7dde377f9f75b3c35f7f7fe42d37d7ae9a3879453d1cbb4e74acd3d23f69770477662ebd5a68e598bd5af8025d7624b655a1270d5d7dc6b9c406a1efac8809655d0a5e2e1ac782a64243cd9e62409c41668e53dae3d8bd9debd0ee446caf591bcd1cdfd9e375ec19435fc5636f7d7d54d0eb36f9ce5a74cbf795f4104af14ab2bdee1635c039b0c2e271076d12ea7a5b9f417c9e7e33d743f28986187fcb67d8096743f49cc3fcd30a7dbc1de21eed29f69d5ad186e7752905d3ea50bb2e066e9cfe6df0f7afc14760cce3c9bacc5cae43afdf91ff7545279ac7404e3214cfaa296b1d925fac1017225f121d9b69cbfaccfa28de1cbddf9596ff55fe77c66ead63bea3430f846187da7da82bacadf4261cb09f5894e2c9669f37cc27ccf90896781bb8d428854fa39fcc838e35fc98354a334ebefdf2fac8f8ca9c1ff024d4fbc1f7641f487ecf4efa5e9d30bbce787fbd7df8bafda8cdabd265857bc9f90c0c0bf6d774c33990aaa336e32a5d1f39f6a26e02ed233e8f433c471e3c4923d14a422ce572bc503f70ddeb3c6547d416a913d7a23f945aaf3fc7c5dfefd3c5a87fe0ef8fdfe956dda10fa0d2d97b0d82e077eebb6aff7edf5ddedc777f61cef9c4375feab7da3eef236394b36fd1653f98ba96d4bbfc4df9cacbcbea30fbe80bdcd2531d05ad6ee97faba1fb991da9471dd397b98356b60f4fceb9e535987c95efd11d788f9d702106d4c1765ae1c4f882a9e9f8377ad48093845e737c94cff6ef887d911ff43d32e26c88255c28eb4105ff41ac2f5bf0891dd6f0e32334b7893733e7daa01f8018a2ec505fa73fb1e803983d7977d20ff551706881f542a0f708798de6f8e7d79c8ede1ed038ebe210dc4993e740133659a07e53b3de8a47d65b118b65276d72329cdbb0411d11d7967998aa4a73fe2ebf5f3198001bf1f289780bf31e754a4cbc60d648700ad1cb00a64afc6d5d4d6e0bde2358184fb5fd7daaf52232dfa996efd66b238b9e5b3ba996bf6b8efe5d78c7fdd73f9363fceb7ba6c9ebfda2a3e6ef2cb638faf7fef35f910346de3ccc3dfd502386863ed8029ef9acc31163da006f62eefda23e25e1faec979822a6779288f50072c880f36a3066336881a1567dc6d645664f871f9e7ec09adeb1a71e07c47a39a807a0ee6f3e0bfd74853e21e2e0a846dd42cf87ce1cd83a627bb0a79b35077c889dc530d79877513d9854eb927ebfca5d315780de84f50a12ac2d3992ccc31dc6c1e30af13bb80e59434e4239308f296a26e0da38cf23c7917e3971b6bf292e9c7be36db198ed9eff9bc6f9bfad016c7fd442c2fafd3e9efaf51c57bc6881a17026d5063e82e25b086d3fe46d5c135be1e4d75c730b334e3026b0b61fce3ae2d044a137714bdea3e27a6b72da436d721efa749b3989dc36621f9d1e53adc58e1327e5586e8c0b2c4c5ad243947d5c6735327b0b35bdd9f38eacceed6053ad4f9a7195b70a81056d59af1b06f330ee84671c4c5270513cf6e322d601ab8dd91b9c676a6fd4c4a297d0e816ee2d71f8a8b1ad5bfac623c746ad90fa030a7a01eb567068c841e111ef14ade03c11a39b1863e80936ad016eedca2b7e7ad2f0dc9b3ae01559dd5f6a9bfa98b3e0a900f37f94cf69c945991eeddf2ffce29b333717f53668086bf279dbb39ffcf428f7bcc379a4e0f98be73b307101de8b711259ffff4e78c21db8c4f8bfa9f048e300df93d8b44659cd07f2f63d8bdb235e023c9b96e759caf7cf5cf102e3795645d76be974bdc7488073aec0ff816733aee7afe7ca723f84cf0e7c1f7473c187c4cfd6d645887bd407e8b60847559d795fdc6f80dd53d80386b7af27f0d691f43b309e2c9ecf05eebba58604391ae0c7991f33ffda49b5232698ebbe43afd02890f1e813cb99b9d411b27c0833ee0be2362aad842bd2aa83d9376307758c6a269ab28f0abae3dbc0d74f660d88642f5ebe5de9c200fba9f83f5d811e98eec61539f5e0be783d2e147ee488f758e308676fe45b919b5ef45e0443f2e3809107af9d716dfabbf222f758fc37ed43ff4acb015823681c0b8e09ba1c6a51060579dd35b1fac031d15fda31b92ab009d6cbcdea739cb540f2c2bdcd1fdefc84279c99d8dd9c077de281ed35e326e81213b78db0a6d609d6ccc0ec4d66af0056407b177ed65ccf1cc645c057072be092a01fdd15c4cc9fa0e98575066b79871ecab80818cb91e72efa2647f675a02b049f22e99d789ca3d3237912eaa4a3d237cfb36e4dec65372dc50bc3cbabfc35f952b8984b3687f885fb958c86fe73b8f49453dead29cb9ea6d62b7ff6f7fa9bcc910f5ee1753e5241d3889affd563a8809d87172a7244d1c713ec5fe6c5d29f132def0ef814e404d0b209e98db576a835bc3e09e6e9ff61efddba14459afde10fb42f36a0f4b4978282a050252aa73b812a50419df1089ffe5d199109096a4df7f43cef7ed6fce7a25797ca210f91718e5ff4665b4217d9b3beb9774b27ba3bd1bd86180f059f3739a73160b983ff18fbed4980fd50395b56436b6d77ac5e90f06b91d5ff81dfd9bb11b980f6fcd226fa1ae4fac0b982fc57b42328063ad40ada58cf2759759e1df4cf366c15301d28be0a91f5502f2b436f2eb5ae79bba3bf1bf273fb73f0f31b25e66a1875be16c4f9c7a990107d50074c901be60913fd107c9ee0db5c93fb9650db2b635db0c5308e24b47d02c4fbdc32593b27e79af61c8f51766db0666639da5d30ee897e07ba67b49729e4685714e7448658eb82ea7654c743dd6a48ed30c89b96d07f6b60bee506f23844acc118537f09e8677dbc27607d02c95e577fd3d95e245eb2f9d7c7d03dd343b4b1cbbe88b5652bec31897e3cf4eb01d60fc4d665941d43c0fd811ec8e4bb8d2013d982b9b0108b9330f6179fc1c748b1cfec3a763fc6e741ffeb15f6ea03ff638c35a4985fc7de83bd9681de03c41384d85f4cf175e07d3dccdd59013e25c4f8a0b7908075ecfba36d535fc69bda2fdf3ccc21a639c558a7ba9c431cdf56e14cf466583f2bd11ec3503f6b57d02fbca43901d0170f6cb62df6a2a7398d12e65eece8ef782df6691e969847b8021f073e8bbc0b639e6fe0bf8bf137c24b0babc45a35037a15da1bc456ab73eeb0def88eef859c4d01f3b6038c076e04a9ceffdd6a19d81f1817ad665be3666f983f8fe2146dfa12e4648d204e29bce15a88c8a3016f89f0d71bc594100067693bef236e6b80f8835b8855529d7d5cce9629e2d9c0386bdfa36c23dfc3be1ba300df8df1cb3beb498575c2c0bb7a30c6658a31489c17e0f1609c94d82329dd23e0e7747dfea6fc43d1be06929dff57f5fafc6fe01d4b23a5fd07faaffa0f605e33ff4fa8eb0d66cbf1addd6f80f61c04f9629fa0a60bcebd8b39ae0bc4e5a2b25168e405d850344fd1c2bade0afce780394bec3777bbba58808f43ae27727927621d1ef93e6035eee41df26c3ba7f95b16eabe1b81e5275634e7f546f1bc686e02f4f7ae28de9880b8c384778dc106c56791f16a90b30cf85af47f9a3f5de351a12e3e66be85127c0bdeed3ea37100f4b3ccb157ca087808c57149117bb187f5d76893ceb176ae827c4ceadf67fe2db23e5ad5d4108f45dac38e7c4fd693e273cd65e441e38be5a522ce07f47d866b827987187b203634e4432e202784d66a562bc81da1fdb9c8f88508f413882f89e007c658d49df0169afb56ceb646b3763457f5adce351bb33c930ac762c90c6fc120fa17f0b131d616b35c02d03fe6d436dac9744d2bc4421fd3fe73fdf297eb81a9bfd7d5dd4b54e4d5bf71c70e6e2ae2ea11fa94b11f099c2911f39877177b6b20862eeccd4a449f48803dbfa0ff9281392120775602c6ca02aa7312fd3dc5fc63c4f4b8a3aebfbad8de0df511903d06cdef35587c80f7ff6cdb7abd85d8a098b323429c8f9c35dfaa685dbb8c3e1d2acf9680bd28632c7487be265560b144c881825a1eb0a57717ec7d3e96a9efa7e2eaf9583e507d1fe165d6de12d1974bde053dd37a147344823821e2b0d23edb4391e210327c3e62179531c875a8cdc3fc29ecc357e31003b62df8122ce64b10d8f8c107b724e73b65ff68ee12e6f5609f4dab477db3fd3795c529e790238b78b443615663dccd016bf10df4cf1862c76fc8d3ceecb9589f61b1dae61e6045d4be3f7abf2edc664b33c31cdb34adffaf6b2a52a8c77a833ca5b8cffac3be617c94c64653eca5be4c9e3f87ce0f62c7c218ea18b12e75c7f5084b53ebd7fb1d53dd23bc46fa3dfff0fecd5bfcffabde2a5a622f605b22e71b705c51b7441b58443d07f98e55511d63d1976c97d6e9002edfea628db22dc5b261b98c1562fa0c591ce766ed831ec431013399c862dbb317fddbdbe46883ae8b7d2fefac06fe6d49f85c50cd00b732c0bc297a3ec0f6aea017661f6c0da81b4b2432bf37accbad885df1e61f29fe06e625606f4e42cb6331c2dac69e55121d7b877dd4467606f7d11e086f4d4e7589b915469d7b4071db69de35ccb537ab3140571017b68b9b84b5c6805d7e07df39d490427d748ab92798b367b3ba46f23f62b9f7c9bdee36bebc2dc313d6370f79ac2b629f955467a039f143793982beba5813f2b7f813fead7f78ec0b6054c6086b6411871cfbe663adee1cfad3036d09163d3f01e4c9504c6289e2024b8ffd9187a9ed5988f7a50e69fc87fab4001f5c60f8aa18c343ac1b42db8015608d8612fad586525327486cfa809c8f2de8a0109f43fb126d7e43420c7df42f301f04d43761ddb150f70740dd83e893129e07c4277e5bee10b34f484b2b0fa4c508d788c3753e233e2cf8d9190617e4e6c425e4525d6cfa99e8eb4487a59f012f12bf77a1a72eac1bea498843cf63bef72cf637d4461b2386d30ed8ec67f637fcfe2217eb07f321ef0f31fca5d9c929347f51b776cbb0f817f3ef896f3eb518ee2cd68f9534fe5c42cc73c1ea7452d9188d11f30a70e103caa79f7e0f987a78dfae0798a04b2b25ff2f581f720f30a2045a0b846791f0ee12732568ad7c55f70387bf03562f83ba16f0f0718ffe2d611c777767b9ec107358105ad50e961f946b15b0f5ef5883eb3e8da1c525c31469630bf1f1378a91212266d8aebf04fb63ccb01000bb3fd9524c4fe8e76a512c678bd9db02c5f7049c9d46cf5d89886f615c6cecdd03d81cd8871dfab4428cdfaa63bd7105b54390d740f308cbba4f4285fc211059ae02ea0063615ead10037d19804f1efdaa7109e71b6a9553e82b4bebba689c84c8e839e2a02dcd2dca78d8bb12f307085f8da1be016a44c1dfab6deb7cae6dcc725e2a88b520c636d47532be08b8dc984751d2fe4b97b7a56dd958cf96d2bac513cd2985dad200f00a20a62943cc1f3123c9fd72a432cca69538879c9d610ff5ab618ff273c01d25fb966ccd8cfa717a9caf08eb27602e2bec8da4f6a93ea09d105fdcb8d88496b6bb12eb200cd41d17e097a8501e10fdccf5aca57382580accef97f14b7a6bdfd9aec7da36900662b4ffb7c6b9ad57cc537b9796c9762cd43a5e83af73b0960ee14386ad0512c4d454a20bfe953e282d9998429d8b2a085cdcbfe9cf017d8f690e00f6d6687a71707999b3a54664f3d95ea57d94cd107b03bc23c038da0780370e3c65d1f0abf5685c62dc0df6aae65deed661f8491cf610f4db933167782c04184781f381ff03fd4b18db540ed89b9dd838d0cb85e81cbd790535c8947f408e119c53c40720ffdb15fadf2d86fb4f6bab6ccfd6016bfc0e7a5defd7fc66ae9e8991678ea35e72997bf77f669f74da7b8b3c27ea295920e502d39566dbb4f7d77df1abd41252a9533f2e505f15cd8d354ac45e1ad27e32d03b9cf0dc92e5aed990530772a44ab6e6b3183cd171ef11ea0680330cf972e09b81ebc13f84b5f6b4ef47dd738fc87b03eaceec25cd5ff76a9f8e04b58264ac1bc07904bf8ebb759fd33cd8f226c50b9fa31f7c7c033ab4b15eb84a3642198dacb32da572b21ddfa0efde725cae478e6401be9ef38bbcdb39249eb8717d458926ff4cbeed6e894e0acfb9c6bab65dfb0eab45babc8d92bfde6b6131ecaf5581d212e4e509d80303f38f68ff13a84fb09631abc314307f027ae8309d31b5b1af4c8fd0cfbc8a016b057096a0ef3be0aca67639041a782643a087da88f93957c20cf1572f6fa33962aa15378cc52ce999415b0fea1521f602bdab00ab1f68ee59ae1762b780de90da422abbdbfc446337029149a87b12fb797c5b8c8c7bb2855cdcf4cd4b85643b2e1723ed5769b50c3cb90a25f712ea6ef98fe4adbf8691d6273297e6b056b4c79a486310901fb1aac0df5b21de07f8ccc41875ca335e4bffc66b6fb32dd01fc435df2680612812ddf64d27f4b4c33ae265e8d9525aba5bed305b869255a480d74d31f27a187b484688d96d610e00f64bbddb1b90d5a5310a697d32cd9d2921af5ab6017314ec068a83ca70fbc634c716786cb9049f38600551dc0883c892de6ceb7a96979eed7d20ad47a607f82b8067b043db8ede8f3101d3b201976c77b196802d2ed4be7dc89f0fb0bfc5067326d0a6c3ba308a8b71b7a01e0a70cf58bf29817e162c37b8bfad081f871ac172cdeccf3de01c9ce17f627f3e3ea3c2984a7ab17fb9178a53067e984763b71febf76b5cacfe913cff177c80440f457bd4b310b3b5ec53fc9a7e8ff6fbb8d13833e0bd52be0f6763558def5c4f5e61b6752b8ccba19e01fe41c2ab511f87dc68f4f512de9b9c30efc3a2f576880f4cebfeaad9d6a478422960685b40ab608f8bb4df4f49ebf7c4b8aa3fa7f83be78f643927f8f9dc7c6eaeaf710b274183bbb845ec443ed6b0aa381cc6cdb00caa39625563efd01e6229cc69cfb0ec80bec644c13ea7141f94622ca09e54d784501c65c01096c0c650d1c7c9f51504cc10728e2c81d8d8641f6219f6a4ca47b60abd0e889ddc7b434cc43bfa3f58ae02e4ef2066c47297e2987e156330c912dd2d9d89798dff997db27f2dd7a6b0ce36c6a005ac734953ccc312fab4b689f68bc55c3ccccf32b09ff3d6a4f9294689fd9efba8a760bf8a1273ac62f0a1bfa95007d2a77873c476ad30863e3c635ee0aa375b422c9af9b4680ec60efa6f035604e404526c2d8a6764609e17e01aa19c9853590bf12ce8ed499e395bc27525ebb16b978214a04f88d0b1043d93209fb02f59984b5ad675cb5b8845d3986c40718262e8cd81f525b10cf9b8f03fe047a7c83f2c56abdca3984625d6388dd1f6c5ba94db1bf69993b11fab99b15e49d4cea63548e9aff6a7f0033f3c464562049efc6f9fb60eb600d6ce103dc5b5a06615f2c2e632a55356ff49699bfc0678ec77c89bde5b7ddaef08fb76425f80e10db150d04f687980594ff301e07fcc93841c33902152a4c2df17abcab7b46e50b6b166b5a4d858a007426d1bfa6ba519cd67c31a6be8f37b0fd0478cd859f03fe2ca435d3cc82dc4b6b097e35ef37f7d0de69f8ecc13e6828c313e0de39fcb5436ca161b3fe0d600adcb1f058f076d6eb13ec4a0787dc6c5c6bced8bb5a1f87e4b1a7babb4136275a498d3a98fd15f8618b590d38a385a35d67406b57123c8ad82ff29f619f6dec09e2fc40e84bc51c0135cf44b1ac32b11c757a91ec700b16181e6050916d56f8dd63e5a58af06bd37e0ff1ef8d4549c13edc971837c31ef86f7808f7ac8f25cd8b305e46d40733fb9562bf045dad823995b17eccd8df9bc2be1f9bc096f32e87357f4737c8f5481c633b52deefb1cf3e8c09e0e28bdcccf6fb4f622a67952e8fb83fe27906f043978e00bed8bf6e4685ba0bb255be4c9d61d79f22e457f5fc870154acc3f84bda6b84206fd7b7eb1576969f58eb6b518f66af902fc399091af0b52b21d5fec15d460979c2e05cfc0bcb015b191efbfca43d7ba26c452764dfe99bac42ff52ea7b62dda91058d016f586d0c8dc5b11c6ce423778621c8723f0d8a310bb9e2b087183701790f3414dfeb5c00c2cf160c977b78aefbbb504c1088758fa8edba11b087045e837d66168c1fae7a88890c3546177b9b54b48688d036d699a9fd3ef879362cefc412b13601685da0312eb499b14f2cd54128f6156029c258ab48a575bd15e0019618572267718e756d5b03b0386ddd623d8853d68398d8fe6f13c41eb1b11f717f5e117a49b10e07fa10031fe8d39a29321f3e8fa642bf3ed3bbe00c9d6dda9318fa96603d86007988e0bfb509bf15c19ea7ff23bfb558bf59097b85419e404afb3bd258ec0a7145889d2f8cef14c39cfd4f3180d3d45a3aaf78c4afe9ff2bfb107af61fe46c35df99a7c093fff847ea403416f0576d6d63e44ad6d2316c3710d7a3b1102d87676b978aaf624d48a30fb126e179ace9b9dffdefdadf7ff7f3d97eda868dbe09e491754f1153a267eea11ed2d69ff426c99fd71b537b4e5a8c5ccff6d2bb3d09ee20f797883d8e7dd61abf20e80b985f2c628dd18ae61cc73cc632f2c2b22fbffd62defcc29377a1efe471211ea34213fef1f4f24b39f4c36a317a9efbf245ac9cc36363bd764ccff69ef4bc463ceabbbd4b4577eb429cdd5a3adf96d033463b584b45b276bf6ce72e02cf394682292613e71aed70bf43ef9f1c4bfb2fabb55287f737dd42990f7a457a46fd45e8cf9659c5fe469fd1106b3c419719b6f49adaf7f7b761113e600c8bbfe65b34b350cfaff3bd2b24fae0e27af276adbbdbb5f40fed83ff6bb2e83f94574faecbb6a8a712bd5460347426341457ec6f425b40631562aa038db1bfe1f75fcde14e74ad9c178332d4dd723571cb58bfe7f67278fb97161e70b34af0d56e9d13f887973bc0dec19a01a8d3baa3ff0dfa7e92cfa5ad43df66cce7ae6cec11b61942ff731a0329695f823ba1290bf50e89620a57cb51fd4e6a0b8dc5d996e6dc55b4977339bc63ad56caf9b053ac5700dc29ab8f630c2e9677bba3dd396718c8d55b53af497b84a629fa790c7a1fbcf35773fb84c037d5a867ee42dff857a63de42cd7f402580280a9b1352dc484c69a38b4952dfad91022acf503bbd512089da564ff58dcb047eb4ffbb4b68dd68f12db3ebe5823dbaadf097a2f91832bc0f4b410bba4a4f7439d20a30fac3d4b29dd0817abca608cf6a67fc7be92e314b0d155868346f1462bf08d40ee2ae213e07df0cec9afd6983a59bccbb2480ffe9174f50fe057deff3d7d3079f7cfcc53f897f7fc1fd256ae88f15e3985cbd5cdfad7bffe2c9f0cf986707be01b580bdee21b3cafbaff32affac53c6cd8dfff26ac93e7cf7cb29fbfc07bfe133ce6053df97fd926431eb37ce431c2038f69f135ed97f9da2fda5bab484af691eebe87c53f535ff935df4e9cdabbb4d78ef77031d33dc46b64cc9f194aebd1f816541cb61a1783c1582f8b130912f5f9de106bd2a035b402f6be03ac2e017ad6e2df4361b6740ed652d9121b0b630290bf4f73c01c8a17b34bc97dc608fd816fe8b396302ec5d7d4d855aba6a66cd7e3d0bf692dce2fe7665e43293985abc1e51f69c3ff4a9f877228e1fe339aa1f53bdb1da13329ae18fd0c256314e2fe63dcfe6660bf26097ad12d439aa7b503da9a2d43ead3510ce869446966b684dccbdedb82d019f42784bf8dd1fc0cf542ba552296c830c5583260b9a5f6c43a335a9b2dc967a8c1eab5eb9a874d2d33ad6b66b4d5a9653e333ac41ae8af64627f3353cd462eea6e11f8eea9c3cf3ec9f7201f09ffd3dd3299ec0e9164fe3e53953f427f77322661164ddcbce66b7a5e186a467e4bd75e3f25d7d6bfa9c3742999bf879e2dcc0a27879a6617c695c77b479eea83cd7a734bd7922bcfd4e61e4355a4c0bb8be1f2902685764abcd589fb2d8ff6ee39f4cd2c28eef9db4611e2bd9bcf34720686700de1ad6191ef932fae497ae631d1b54da4afbe1913a74c3c17e4bfa12a0358b3cd30fd5c287934b173a61b18aa720d8a6344c6eb2f8603b6166f78fe06be2eb7750832bf2dac3f597b29f08d34de6572ac6779b4190e0cf5fb79aaf68f33296eeb2ccff7661b78621ee9f9b7709155c9c43c4645fca8b74c6c2186da71b90c7de51478763e9d98c687af1c42af7f6af11635fb9ca9ca763d318edc1c6b3e12485939db3b57d7576ea16f8e02dfcea7ea8eca330165e3c23819457ea6b2711be95a150b7216796e65e8611949426a4af629f0ed2a2ab473e85b7b72dfda1329afb3c9b5a7b57fcc9beb9d6bb4100fa17727efad6652738d591159ccde37fcddd0b5cad0cc3cf06ca1bebf879fdbd72abf1913b70a57e635ea3964fdb25853cad00b8f1faa32a8ef2dfb5797ec8fe7cee36220ad3d278f37b03fc7c8c7fdf92895dfe35e9a06be95fad2b1e2eff755b30c3d6d9ba80372cd39debb9744cfcf44b69279fbbabc8d24b94a54e516f8f636f0eeb0aec64848e39e531a23e17f600ff3d3cd5fc84224ba37720ee79256858bf468a8a73490b473e8dd8f1fc5ea40ee992ee42ad2f36db848ef40bbf9fd322bbfa7ee78305e568734f444a097a0e710ba2b0c1de62cacf5559a4cf2dbda93f7869ee571b1ca0c5dd9c6859b25baebaf7de730dfdbf3b8708bb59f7e77c7ee292434b877561fbe92bf6ffa9759a1f0bad12ef4c22cf1ee6d19a6db644d84d04d8e899ea9b1c8d69dc83078f689d15fa8e755acdfb38f15a1a155fabe68af13e16b78ef0e79c2d8be927d890af792a877fa0c7a7e34e48144be92f5fde809359d131e11f7e6e97c6f8f2249bc11dd3adacfd3f7c5f03addd89fbea8b8ab9dfbe99787ebaa70b3a037bf84c5a04c24ad0c35330f37e901e5ee303574a4ef25a1efc59d9da34d33cffabb2cae0ea9ab6b7b329eb93420b479093d593026f7ef869aecd67eb06ff854ff32dbb339c0993b113d32dcecd2f7653fe5de7f8df6b6407e8ba5c12929dcdd8a5c57e47df29ec4b7f37931b826c01bb41bfb6daa9b15fb7ba62a6c2f8e6fecb9b5cefab82648f7d92af0e253c33bf09e707b20fca868f3e47b16f7ec37c2c3de366d3e316daddf8ddc5b45d25d0a3d87d1de917fd66cd3bfa07e6e3fe1d9943f8dcd8a5f5f943f9a184dc83389de341c187ae7bb0a9fd1a189cb139adcad7dfb16e99a0c635e766dc7f6bbff163ea91e80df505a4cc3bd798d16c37d8c9fdbd74e4e2ff7dc9808f5bdb3cd60b5d6dd33cae4f018ea6ef9c03375e06f595c2a9febbdcdddafc4c61ef9ec0c68412c134f16d69e98fbaaf11bc7e7c68e1b9a73c1fd5c09f9da712db27e91d9cbfa911a9f0c3561ff9fc212fe3f87f8b98a16f87b5c2609991f3bb3ab62d023743d2b0f5b5f1ccc5dd7d47cf1fbef33918ea708aff13ec9e2c259845e7098b233dff032e41d4fce2de19bcbc2cd435511a212f819f816133dcb1b7a99133e9fc5e26d63e844561279ab803e4eae213c39f16c420b4446a789fe3d0d8a15e13967d0653df3142e941ee1af84d77f78f73c54c56d43734e65e8c02bc56043d651b8d27d3e07dc9ecea89c9b799c4c5307c7b8678ba16f5dad6a25db2ee826c0775afc660472f6986c62aa5bf1bc461ecc881ee0054794476d9e19eaee36ea994446ec38f940f6558c25578da48140d620f015f6db815f7b434dcaa817efd99965cf8da5fc1ba145e499e47c0e771f929307d2a00c7c270fc70dbffa5c90f5ba57c1a8fd0cca677238dfda39a1ba59970681973b9eb65dabd9262ecef348ca2f893a1cbc6f1a3db41e17e1351aea7a20a791f744c1defc63a50f8ed1de496a9ea93b79a4bb42b8407a88c573f37c4da89f4dae01be3db17e637aa3a12ac7baa7267b9f3a1e18ba2c46fa2d353701c8ebd01b1406eaf71ee8c98be1e07d49f673b05917ee3651e3638b27ab19a75b537951f34ec2b30590b364bc2eeadb9c0c10d2d0bb57e1a2a59fc3dad76ba1f17a30b947041da4259b88fd4ae551b36ef3d4580a033ce371fa5e2ae96ce1fcc6adeb205087df0c35de37eb0bf606bebf599b233bcba16f5de2895badd52c3527e78ae88c0dcd38bfad3db958fbd900de230d4e714f4c1f64c79fcb3d5e3e9c5abab3177c4319cd64fef032dbc8d456aff5008effafbeb5f8906f1d785939039dcabec68526849ec3e94e3790830dbde7dc1c649487b9794d4ab92dab88dda2260b72feda3e8786b711fefa561a2763f3fd774377896e794954056cf89907fb7985be9edb431a496161a8872bd0707edb10b9436d906da2d53a2fd83e3e39934447f1dd635cac0ebe6a5c66d2fd1aea5a45ec7bb455c32cde2813c2dfd6eab3eb13c2570e919e6f7cd538ce76f899bee71c498e18e9ab7a5ec00718fff29c9d3371cf919fbf459243f4902cd49d71e289e78f957c0d756a674e6ca2eb9fd65e28bf6d940ae4aa9e171f544604befd164932d240cfbd84633a868d92c5827c8d76a893269ebc737a6616eb297bae0818db3dfb1ae749bef6924332b1bebdf89ede43f69bf040b78aa541e94aee31943281f0f398d099ee6e43a233f44c3ff4f2fd7ae254a82b29e4fce4f1dece831e9183b6f0b679fc8e5ebb49bcfc148eefd987e7964b4f23fbd77fdb3cff9ede73897ae639003bc45d049efc071953540ccac8d3c0565b15da65dd63f330f3c81b48e1ca3dc71347a6bf7d7bf13d95cfda2e1c9bd7b870f27807fbf3edc977f45a31fbd0cc2c2a4edfb8bfd91a66f1de39821d4d74535d2b133d07db84ce05f496b70dfedfcccf39e2f994af68c3515f30d85747420bbf1b636d174eac3458283ba0a3857221b4654c9cab31710ee142d9232d2b5954cc393b3db890b14d3783382a785b89cccf11234f9497c560172eb2fd4c5504626fcd5405fcb771794b41475cd4be3f385fc996d950df1bdb601210defe39dbbb97b5af89e12adf4d75e03b47e6b73026c961eddd7343cdf6b322031a0ef5d521d9ec8e78ae602f84646256b302c70676059145947786a55c85be03e76a3a094eecfa6957379e04c09f50e67dff1dd74059a0cf41ae0c7d9c4685db33743c53c684e841691a49f2e963c1cee22a0d3d674f78bd3186deb7a7d0b7d2c04b883ebc0f7c8cf744529086ba2604a00311fdd9ae22c93e822ea152fd4b1789fe7f9c79ee2e94dc6a06720bf819ef7be17840b66f7cfac0abeadfd69ebb23eb02e3a73c61aaee2eb1e40a940f1cc252a6f4901ed9daf8a55c443d530b3cfb30d5e34b44f6ddb70ed3c58d8f5f91fd483fcaf6fb667b3b4fc66cbf6e641f2e740f8ed3e5a99169da775ee7d9cf0a9cef54ddb57c42537dc5fb82d06725117be09e2f756d137a37424fed31c0b3568770214b3355c9677ba27fdcbf831d42f9d5db66789ba9ca79edc9a7d0eb7f3346e3f473d97e4fd43c7fdf3c7357eb1d741cc7b0c8f350057ad3423dc9a7faea02735fc8bd8e1fb1873c71fe8df1f47075cf82c23dcdf694cfaac33f0cbdfbddbdd18d74f11815f79cf00dc2ffd6aa7c0efcf4d059934be4e59748772f335539059e9947aacce67a64e369f40b819dbddad7d69a1bd169f7a843f1f1cb577267aa37fa5e52682527bf8ea13727eb7909fd386534f8512ae7c4bb0b6baf965bfb5991574bdf3d257a5ed3271927d257fd9e4b489f317d495784169fd0d524e0e90af45cc38b2f346e55861ed037ac61d8730ed3b6bef913345fbf63d059eb4fb00b776e1648700e73423b71991e672d3f6b96f3effe82e64e06590fc28716e49e5fdbdbb8e76e1f647cf9c06b283d3b76e00f91af176216fff8bae379eeb95baa170d6abdfa611f076232a63c62127cb946647f12cfae3c69754944624b0c0ff00ef19ccff64902bc603404df255b77c267eaf3363a3ff8715aeb479e55bdd2d1896c3b1ee331b37d3a6b31a1ef189375da35b28797b9af74acffd4fa13bd6d027e90df381ed8a5cf63b4fbe1f5bfc585bbc3f50e132283d04feae09ee442fa39b9a596ba4ba7658bb75e6afedcd87b4ffc7ff4f97ff71e34f25f5f7bf22e2e95de5a77cb70a16406cde98a7b0ee86e5111a7813f4f636a374e27e7fe4c55e4cfc52e4da48118e9f374edc942e89b5508b18031d139b689ae5d42e99ee37b86878f5e7a322630a66338710e335539d03d1d4c17842f29c784c80ddfcc8d89725d834f4bde137d86ea7325797ee0c9fb485fede352d986f05ee3853e975f12dd2d63c9dd269a9907bdf901c6a5ded85c3abc1bfc28f08ed93ee5690f742ebc57966bbd4cfd7e85f847cfc9a22239858b968e8f72c3bbef2388776567ea6bfc56dfab674232197e9b958373e03b87d99ecccdfe23f4b3ed1ad66e7509a4c179d6d3c4d0c739c5e5f7bb354aefd6d2ba424c4f15e14ccf3c420f491e7afd733249ae33cfbc7ee86ec5cd61077e1dbaaeb37d9ace164aff8dd361c3c90e7c11e88f91654315d28f25bf3e31b73eb88786fa3db5b6dc353ab78645c6e4fcd51819b5af65ed05e954d5c8780a7333ccc2c98e3fa7c27a426c672a377db38c7ac6c157cdb7a8073458c552be217a68a27f4f710d1ed77dedc9d5da7372431f148fb4e3c6c6869d23e62f61fc99d0a82dd375015949758f2cd85b0718ab7a489372f83fc658cc123dbd049e594d75a73f5d0c7f37f494f7ff5c67a5623e8ccdb7d2441fdc0c7d501aba7985daa485720d3774ddf296bf65f7b118220fe7fd4ab0cec3f37ad491b9446ef6600f0e649ce1244d67a5b2fb68785df5b1180e0c9dd1f7a38f69567e4f17dc79a667a932f47b1eeee769d433d2b800dd0ef47c7a2e5afa0579efbb3abc757825fa8efdb8feeed365fccec67849d519e724263c8aacc1d5d09dfecb78efe4947e8c0ee907d1292736f0a737726ed5531af776a8ef52d9dfd88fc93129dc0be157ce589b307b2704394c6d495d23f4b68f0a776768b74d4c6c64f03d6b84ee6283d678f8aa81fe38dd25f66d4eecc444cf8eb188f60faf6f24527e8a406e0c768967e7607751fb9e8d017dde39e1cb842e72629f105b38d4572f789d29aebdfb6ea96b72e89b76e03be5da27b2ac6da746f83bf0744e867ecef6c46627ba416dbfc3bdd37278efda42644f39f913f95fda3a3f2e9bc1f602daa476d82293a61d3b05d61fe247b816f0b9eae8b6eef7cbdab7dd88e53d7884ef93fb769d3384be152263bc1e99f339f1247c2ed6549820cf996dff44afadf5246e5d9fc95825d48f62dc732ac68bc067532a05394b81773fe17cdc8ac8ac8eef82e87707f21d91c1ad6b2741bad63529a43636ce3193a68be1ffbc2f86374aa359a22aa7d0d3aa4455ae44aee3da2a3d43cfb2b8c4b14c27f191ccd5c273fcfb4c6cebc84f7c4b8fb4e5e517f20cbf24f657ff40fe0ffce181d9084ff47da9434b945ec0ff41f71668eb951df1e573198f41b904cfa5f66dfd8efa1a9049daf7cb5ad7aa295e7be2cffbb4f6f720ede01aca2562070803b0555fd009e1711d9f46197ae235295c2df215e1c305daab785b92f060bace8437c8e00723b4a06b65027b0a367d15954a2f2436a6e7eec0efa50f8a90d8689063e09e39f97f0d8bb00afd393bf7c76893fda00e7de2f26ab8b349e7ff562a03b4c1644e0fc0b3d58905fdf5fd9b004feaeedf85f283733def51d7cea5e310cf3056bfbb8f786e2b76fe09fd7aa2f0289ff4ee73e45be2db07b23e4c26b1fc8f5a9fd2894d3f2672fac6eb59b07eb8e77ae0d902e10138afc66ff5e49a67fcf514f8791eefadce9e85d54c558efc1ad6f4dde18bc9de3a1a6a5018fa2e35a9ff14e84e08b3a0e75ce3cd307b5f0a60bff0eb365b88bbd0bb0b0167f31bba7b8aa515be4b77f268e2641df9dfdaffe461dc486bbc4f01e5d2299d56025bcfdfda7692d88abd3cd8978f3eeb4358ded00ec4dc0bd8cf99aae0359b0e4f6332a99155bdb5e708ebd121b59adc9243edeb1a29381eba2eb8165a19f6dc33b155e2523e859ebc2732fe7d2ba436bfaebc4cc3780d997b13b7449e43c7496420ea1e8d4ed4b20bbbf11598b7af9a1b2adb626373a3cf6cd663ba7cee23893cadbf42f9b27f92570d7ce443fd517ef24aa63fe12dadd8639af9a57c8c45c018865cc950cd507e75ce75a317b6d710cf73cdafba727a1ef8a6b0a63eec6001b1d613a7035f88cd41ec2b434fcaa8e7dee2ea9006fafd104bc314b0f474a55c4fec74b651cc7083795e31b94ebf1f43cf41bd93cfcf626bb8b7d264628ae182e904fd14e865bf4bd7fe3c0da5411e9760e75c0d5d39d177bc133d31de27473877ec3aaa73123b2f2a95342eb257bef51b37df43200d4e91eed2df6e6958f43bf6b199c73df794801d794a233dabde88fe077943ec6f65f08cd73f3c9bf7add3b877d7471916cd6f1d3e5286be2d4693f9858c61b657c498f0931f8b9fd7f7c2babcbc577ce56f61f7ff602c85df6bd4e1929e99c5132b0df4f012d4b190710a712edfb8181ae87f3da2ff117bc2d0efd7b067814d40df03b13243cf0563e2646b89e882842edc7ee8d962a2b39c99e6dd2ff61f9e436352e49c5ebaf115d437880cff4ece66afc94175ca0fde575beb07e185cb5305fb9ce8acfcb590db210d4ee1423e45527cc078daf00fa26f19131af7237fab279059f4bde96cc1c603beb4d828c4ca578d2367133ee1ff347eb8c82e34a65f449bc7bc7d426b35efdb1827639388e44cc53da75cb37cd66e4c40caf2403a8fe7c28af3997fffddd09353249959a42a9fbe686af395bdf205477373e77d29dc97be90584bc15496dac0580a83992f7e477b8ec90b966f3771e4587789fdf7c3cf79c79c0e9193f17b6372ff5eeb522c87451b7cae76ae32179d4f67ec7aee78f0bed4ec4f47b8bfcf779ae50b44ec9f3ffd92e25808cec859a02e604acdfa9a785e9ee53037fe1536af895246106bb72ea1274bb39dfcee8cdd4f67257b863a1ebc2f867b62438713c627e2ae2f65b5063f8449783eb1d18f71a98811e6c21d02ccedda849e9d612e847358fb56cbf6269f693c734be892f264f6fc23fa5bc12ec773a32a9b849c59384ff6352a682c7b03ef86dc76431f5ca209e6e087ba2b85defd1aeb22e42ff23e1517f27cdd22ea9939c833b4f3c0c608a414c6169371eab7147db137f2bc2c849c1f2727fad5da43ec22e42749164bfd7d52e7677ebfd2dca43c2eeeb2a16b54eeb4c7e1e8838b09f95a19d8fc741ce7d0b7abc04bf219e1639047ad8c433f5c45d2e044ecc4d0bb1f43583fb28ef38b31d64eb1f49de8067f84e46cfa66cebf07fc1f65f35c4377aea16fc3bb23c9de26444726fcd94f0ee0f3a5b66f67cf4ee82723bc2e81b509244d8c2597dfb7ccd0c30ceb05946b2ce5c2da0ff3da8f36710e7131e819ba9c27a5a2c57bf31a6fd2bd9f0f3ecc72d7a2d36462ca1d9af3885d1fee77643e594273b703096ce82c280652b8500e816fa541e1e6d146d9859eb623b41242acfc7e247631c6bd8707676c6ba6343fd663fb4be730e3fe6e786d206902a1a3a9ee968d1e4be962ece449ee5c21776b621fa29e7b0af5fe3e51956d5c68d55a657b4e7442d8532121b267921099d5a663c217a5ec9a78f79d3121e7e40eb9d1346ff508f51270fec89e434efe1f6c5f71dde426174b92ab48bae7b3c22de36250d2b1377b4275d13fe51f23e14bfe01743fb63543470ca87a0d54b277ca2df4fa64fff06cd29a06673cb00ddd1421c761a1e41f447ff189bd0a76b7b0d635a1f6e5f3ebabdb19ea0958b31014841ec8b9cd8b35e14dc83f762c4775edc9bf331d13e942e1f697e5842b2ff2ab9a1c2db3ec5f03e95835b9a9ce355ac86d7e0676bffc7b5cc6b486a45d671379e45ad88f3eeb430afe7c5f13d7be994fd5f83293ecdfe372406b2dc45d2409972edf5befad7d5b9eb6e4626fedc9bba817a3dccbef17ea33c07cb4d199dbf35a06d663c0bd26f2bf9143440fa875d5d619564e91e464b1043ef1761ea53eb8844bc897bf275e5e868b2c360a3a067580bfbbb7cd74c1e724604e65e0c9c21b37a6a976db44fa6017f8f6612635d7409e1c973f0fbee5d1cb77821c7bb8a7c84fe42cbe7e5f788c264e1ee7ddb166907bdccee333d97a5cd7ba5675dfb5f66d25de9bd9c7eb7539c68256c685263fb917fd595fde8bb9664feed56bbd74fbd5fded3def3c83f76d7c7b39efd6754e6c6c767c8ddb1fa19f57afd7fa9c7ff876f79e73e00f5fbe2ff2b45b77ac71e182efffe57b7a664ef8d803fd4dece347b17af92ecce3eede437bf31483327abd3702d1436229bcc685d89d9f18155fee0bfedea53f5aa307f992cfefc35a4358cfbcf623d5b9713ae195f6c150db3177c2cb890d91107bdc5ba5987766ee22ddad58bc04647cdeb50bd087c0d6b8a9a364e321fc34394685734d4af993f3dd3ee7bd3cbfa23c6e8a76563a47dba0023d4fa73595de90c6fe6a3b2e8a74ed12f6dc2c94b01e2c7485c37ae208f1e8709df5925e52ca792089d9ccc35836d3fd02ef76897ae67e26b9dbc81b9fad6d50ceaaf862a9dfb7b1e46e671ef95eab829e798c27f333f79e33bcc7b78e740c64bdea5ad140eda75332cfb29f06be59067e5eb57cb3e0b3a3b906130b6ba224b71ffae47b8cd92ef7ee3928dc723a1a1e03f5c6fc22f0db0aec29793f55e3fdd41be218d89a4d6c21f09d6340fd1773224b3c338f7760afd0989d52ad3d791b2e86b7d9767cb134762da115771ff54cd918df895ecbaebf05be99450be5b7e95e6035ada08b33fa44db19f582593d96c62ff3219944aee781270f886ec0be0fb076357db6c701adc78578ae4a65acae1401d177bd218de129c3d0cf32c88d03bf148d4ba29ff63d288e90b3f0d163fece03d0fefbb28fbea22feef1aaf1c91819276364273486f63be829505352d7dc32bfc527e4a0d1f1529bfb1a533b7eba217a30d46780bdc3ef19f8e3843af7e49278f7d3c3fba86efe2247a3796fb7be197d10907f5be7bc42fd45abf6b7b6e1d9de1a4b218df6ee29c2fc8203dcb718827ec8f6c42c95ef9f6afd6c6233737e91f8f8e767bf19378c6373dbfca9ee04f124771f7a721e179a10f58c568d2aae1b5fabf65335b63f5fd73639a5505706ef809ad9f473a11471313863ec0bea9eaee49a996f8ad1de39469e1b1bdbf3f3ba5335e36b2b804e7fbc4e6cd8aaaf7cbc0fc64764dd6eed87e0bbfe28b1be83e68c3fd47f7c59f738195e3ab51efcd88f50c7b1d81da116e3ffcddac11191a90b4fdcff4cbd1fda42721e7a73cccfa17e7aea63686805f02488dc6fec20c89f20f4e4db84cf6c099f85fc2fe0cf26fa5f7c85d84f98ff43ec7c55a992497e0abdf939e06aece252d9af7de7907806cda17a5aafc76c984d53373724fa6195786e35ab2cf16d49f824ade1e26b7691e6789a39d53cabc8b3683f6775144497ecd639efd79eb837694d52aba676ffacce58a9ebd6ff42bddf96ece3cccbcf21b5f9789ef9ea9cb5ea77d5969fb7009dd50b4e8d3ff7ab7356af07d4989993339d03d68111bb6fed69976422a6c6e8c0c7e55ae7f18bba6c6ac7423ca7a6d959e11ce39e720afc1cc6053597824de8d48cbcd7f55773492bc3717e0eabd366a69a35eec074036789f9c59047aa09a59f983f37e47f21f433e1eb7343ebf257c45674f28fc9fc80326bc79e05cff8621e46e869bbd03747ec5ae401cff000ea77fc46e41487ffc0d7bed5fc85ee27f8cbe3b28dbff003ebc06335101ab5434fbcf2fceb3fccfb900674370b01bb81d8096ebf196b7c997db97eff011e4ac7f26fddf4ff5ddd74fcd3980ce41c6865a88a07a413e3a1663a60b4c5d52793672f3df71c95e9614a74cecd90c7aae0e9aea927e5f81ee369335589eaef7ea236f639edcb1c9eca8dab4fa37af4a6e1596e07f387ab11f906b12d71f0b9d2dc85e30e3ea79b019c8b690b07e4d68dc33fc88be775b91d2c8fe5a12557e2b2a55b9e8c1a8ba4f11b4c5d2e0f678f7201f979960730f7a7f5b8ad357bc943c7fcde19ff177cf499ac6ff475c2d744e7107a22e04725450e34dbc1fb798105c33d437a754d7b4ca19e4b2ed1bfc63c3fe29fe31c931c9e31e2f6ad3d9e712d8f79fe5ecbf0aff83a8f19d4dee3bf0f2f889d7347cfa555cf9123ddddcd7ddbb02147f5e9fc0ea6948a18536a3038d67eb8441dd551622195089f78be7ee97e3d0a90cf14b4761fd7488d24076a1002c23f7d27c77b1b7e35adf53cf31a4e76cf9eb15afbce09f36b5fed71ca789e80d736f8322d4c95cdc39cc4baeebdfdce65e299c24fbcb76aaeffe1774b2fde6dad3df98f1f5bb3fb312a4efb5acfe5f9d9e8909ad278ffe21d2ba6e7fde93b7cd0bf5ebfa3377cf50e9d9cfbd0871cc157f850075322d7cecf21916b848fb569b03e53cb5e98c7c53dfbf8b1fd38465e7c8eea7bd07ee0b0485a584f80f384f6c586d0ebdb86fabb58ed766b5e7f05efe911d7a965c3d37afa90ca14947df43a9aa7cfae21e363361ce0c24ecc3cdafcab4ffde7f5a9ff8c0ddad8d0d68fd9a55ddcabc6eedc84e5b030374a1a14f1d99c9c37614f4c67aa82361de4cae2df60bf121a9bc0ef1bd687c1dc0469a0d39cd38db0fb90e8df7b316de2231cdd6d0f843e771f8be1ff7ea163d572a05367dd7e4eadafc98d5eb4187e3374c4108d0bf7f2ca6e7e6d6ba2ad067256956b9d6885eb0d985c9def5e612a32fff485acfdda4b2e38af06c785f0a8b74dc3afe81945d9b53ca07dae39c744bfb3f3dec898fa775b0cf6ad6b54ca8fe0b973586bdc87a59e5fd615bd6f0c7200e947037efd8de7f3f4594c07fcd6d10929265e48ce611e6fd933e967ca5b5a3c988d779c9f43612085be49d61e75d7f24763e60d260bc56181dcc9c6575ec70931374cbb6d9adc1a39369a5c38c8356d6c95e6b9b4f6918bdfb57160fed3f13aac7bcf4e6baf89f173df11fa636b73e1bee7f2c1c56b38714fe182d1a403b2aa7d6dbfc6090df7661eaed8ba3fe658f85258869e3b89f4c126f06efb06f7f1f03be481e82ed5e9dd9cf90383e29e1bba5285debd80181bd943c4db81eb56927b0a37e45d75be035c4b6313577a6ef6c07f26761ee901f09918ee93d9b9c23dae6b81818fc17368cdea75ba39a4ae6f13d946ec8f0c7c8d854bf8c5365c80bc83fca650ba5f83426b627ded3197442781356cad15c454b8f9c0e726aebf49f74d5e36e403eda734bfe5357e10916b73b63f7fc51fb70cbd3bd4e8923d686c62c080edf25afa3c99e959b56f684ab1aeda7e4386af25666bc9d512a2cb8dcf39e8566a96379f6fe91a7cbac306338b93a95823e04a44ce2d24576e616b3579c74b8a3b7b08fd90e807b3d0df3dc8527c0fac3bc4e29e60a8733e78424750a7bd89b8b976631e2f744ede667b75cd4b3feb17faf22dea29d7a470cb9957db740f7198ffbb3131fbeaa7fdc3b53c44bdc44a9b31b530cd52b20721d6e4337a6cfdfed113ba3a2ae42ad37ccb23a149cc4184da67c64f5acf80d88ce40a75be288bb3d238f8da93f7b31ccee5d37e0ee4de5a8ead9c23d6fb43edd62dd2b52d62d5ce4f869e57abdcb1b85c8b3c217abcc0df0375e980971c79c41eaaeba810934fbf678184f5332ccf2fd2dda28db5f7e499f4ddc6e87b6a4aee2554e3f46d33dc23aec17cdfc82dae6e891f874ab1fd7a26e03498252f1fcdcad1f3b2ae0d1909e9dab717eef896be97cd3b0cb01fe1dddd7af306eb796f8fd7bec9eac3416efd97f8974e88db4cd7f1e7fcf07376669ef96c56fae00676e5eeb9dfa6f91dce1bffdefab9a8c73dcc651fface3bf93dd235b9b547edf1d718d77fa3dfbfe377caaa26b69e557f217ef04cd7a674c49f974343a362c7d6d6946bac13ddd2f85bec6dfe2cbe8e81a23dfbcabe0e38fd3b007c8764cefb82637d00752f6f1be5933ea35aeb831ef96c2d7e3a66fa02c391f09c5798e4d986c77a347bf51a3ec400ea338ff1583316cdd552ad7376d918a298c86e4f2b3f5c6edf348ad7d3e16f0c73f4bd54a448ca77c66898be6d149eaf5e889db6f6e707b314f6d3c50e3066eabad55a2f79e4515ff1edb8c8cf816fca2b7e8f55e58873fac118c4c46ae7687078360fd8d444b7d3b1d627d107d768e21c63e835516342001dbd6d688cbfb19d63639f9ef975f355e31b91656b4fcce27d3ee765d05ff107bcc0d93dbd7807b3f9ab995fd30af80e5a32a965ff3fc726e56d79af7ce10b20369c9e4bbe6ab4f1bf3bf1135f3539bd452be362d0835e34ed384c466caf44e462ea8897763274e4bdefe5cb78538717b7633fadd851d7ff80ef2074ddcc39179fe0a8d6eb7979e66fec7ef74ab76b7a61503c8f4d33f6c6274b65d1f6903eca27dc2398e7f2d0954f27be0e80bd3366d734b5f79736f68f52bd6dbe5f43a26f4edccd8cf0ecc5404824b39a492d7fde86d89ab3cadd5a95d1b3b7496ee9ab5ba89b595099bbb7a5250485bd0bbdd5cdaae2fb9b37966c6f5e85dbf1fd6d145fd77beb1af7ccedace16397f5deda2e4706c61b35e57da529da2a1fbc3bbb70e9b8f36f8676bacdd461df77d147f4ffa73e02b24e03bdb5c9b1ea91fd1db2dcd5bf318f8de1f703fd406f051eb796d8f4945e7f3734fb167a36d60249590eb5b7b4c63724ba38d90fe904f99f449e427c55cf77b47ee99214da69edcdd3b0c8f34877d8596b9e3fa63af8e474307b78afd9bbedd79e2c05defd18aaf191e111b07a41c4013db4d66cb6677d48ee0c0b1aec7e8761e92f9422f4dc5d5068db75c9fc0050bb22acfd21ad13851a4ff6dd3743e3d747de44d2e0446533f8955bef2fdabd2a588fa53a9ec6add54fe824ff48bf7c9de7e15bdfdafd342036cdf5a478a66791f55e413e19a52d76ad40f627d1f31bf0c84223f6cd9ffbf87f34be5f3ecaae079ffccfc4f2f5e1eea307b48339614c175087ff6ba8493d17b31c7e33d484a3dd6410a8e82f0559b10bf3d073368167fff1dc97ddfc0e3a3f7ffdbe7bfeb9cf2f73029afbff4ff2449bdca6c19fe406f702dfbc20961ebb2ec9e2422667a013936fe6c4db6bdc99ed5e7f8d0bb1f61db5ef19945193dff6df9cebaa473df30ceb4974d2af7d8345d433c97aee56855b4cd597b9a1881bcdec17ffc8fe3e24ba785a49f937a6cfaebdf9cbdcaeb56f7bc8fb87039647cf30c663a19129ef0b1a6b5d34761a6232d6710b226b774ba87dfe7f31ce995fe2892bfc859cdb166e01d0c738dfb19a5b6af7357ee2ce79a8edc5bfd6ab83d0da1971ff9d32926eb5fd497b58b0be0b6d6c45f00de49437f03eabfafa6e2d6414a8ce6fcdbbb3c1cce79ea12bc91b57fb01bafbeb3e6dc8fb2497cb07407bc0939a33e22f0f14ef84cbffd2ce29d84cccf69e0867d647e2d38331c0df0f6370291ee79fe20b107e40ae71c426fe35fc5fa8a3475e78e0f798b7c5897d6d78f90ee2d83adb8fbb19ea58efb3f6924bd433c959ba461b257de7e8202e06a7f762083a23f96ded3929e0294ea83e09f8c6fd3dc46927e1959c676bd4c16eff05d9cc78d1db86e7495c2da19e0991775f363ceaa5bd4e6ca1f7a8b8cb28ebdbfc04fcb5a303e167b05efc5ad6cff829bda0a657f023bb94d7a1ad9d57331f75e440bd113e69467baa6f638cfe1897e2917d47aea9eb8000c3c2be46faa03469acbf4b778057d333d36739859c5c2367f2498faae1be73cdcb98c313bbb4238b984dade8b5de23363619d8271393d680618d3dab3f63f8410cb7176c92269e8c765a4fc902697531c679614cf26bb2507a01f44473aee01f5b2855e82b19f8cfdc7b49ebc568ac0ef10a433d97d69e2322cecbf04c9f93c5c52a8dbc41192ea056fe624c923c2267c7a3d8adfaf73496be5fd8f8672279be1cc72cb60dd84d0ed103da315889e1f80346d42e9204e08be43e7816c628bdb51f6694079534f6907dec73ed63e2e45131ffd6c2a5423e593ee0d93c7fef39f4cd7db8888f33c0e8b9cb538c679e8c16d6d7ee373ab7f473718f697c9b8e593413dd2d03dfb9c6dbc303be26bbaf85c55d6897501f9c1113cdb946ab5c087d334bf441d98c83add92d0d7c739fa01d56b1f521b43cd3e83cd9b5cbbff8fe859cc513e5f4b1c8d83efcc8fc312e3ab1bebd585bf6fb7e0af406b6634d176e914bc142e67ad4d4f39242dfacc85eb66aaad5f832eb8579bcb7c9dc1097a0190bbeb3558f9fee239adfc0f0f8cc72778279e46cddec1c6a5af4fc1be481fc101db17132dcc141168e89ae2c4e57c2e0ad3de68461fd5f408ff58e5524f5b971d3dcea9e4374a555241c974ba1ff6a3d8548a2f7bbcdb83e1fe841669f01533b26bcd677e487b514b453280d4aa2cf45be750d24b25726590be16381b812357de9831bd227d40d7febe651cc396cecb81c00762ef60f91ab5971ac1ed65d4ff24812fed27af3f8e49db5def3bfd5efac7daa0f18e20ff370c99827d6957fce0a3191613db8b3446919fb49b6692ac98322393dacb798e4c12eb1663dfcbdb52e1ba253b89b50ba9bd15e119331e610b4ebed536243f9a1674e96eaa0177ae63e1aa32eec601ec1ebb52e7e963f3d3d43cd732826c80bbac3398c0eadfd24fc66e1c9b7c477ecc093b350eae060004de27c6612f044f87be96997c04bf278d3a149b5bb66621615da1ece71675ff1bdf3eb8beb9197b82ff6537385b577afde36fc5a2186d55270dedf880ced85587b4ef7835bd35d5c68fba870caa8377c39ae706266a124ef88aed7a50b43558ab527ef1cef4e634d1417e9197f1471ac802352385aa423ff5ee9838a620376f826604a1c23efc95eb067f5f0f727e3da87be335e835c029efcf23c85922b387a4ec65221f6fde35ed25c98eaf59ccc2c90ce60afcf799b7445cf4ad93ea34c4eb1cf4b5d93a39e2bb4f7512176d936ace367eeee25ff2e066520b9a7c0cfaf893f6fafe12b2c19a0e97bf6e10dc4441da01daa6b972e3fe98ed52df23ca9dae787ef45bcf400ab8ad17fe06919e1d16282f63ff286965ee83663857c4872ce578ffb25b91b47b85d3117d62dc3ae1ce88cc3c53c956aad63ef88a8180858df4bf6a49f323d39f41c8ede90ffcd7de704bed25763c0b929897ecf9ed14b7d963d6d1f022e2af49a26b2f2fc67bc77e18984ff409fadd5c4bc923d8e9ecc95be03ea0feaeb967fc693efc7a838d76379726ee8753f3766e863e6129b3729034f78728ee975448fffa131ae5e3e63d5d3c4c037f33f1b13bbeef51cf333e1dd3fb61fafc7833d97b263d07b422fe4ac946c5e28abd69e5d3d8ea9c5b3c7a10f3d1a328ab1798cab237746e8f380f7dfbe75759058d74af415dd41a6be58eb5b40748815daa7389e9c9b5b47ce74ce5684679c9ce72a2962ec55e7dbb7c0b3736e9daba4485087d6f3ed137dc15b7b6e6fd6b3a55078b136794be7ba84ba5b3e93a1749dcbd09377a16f76e4b1ccadcff72bf81327661e485afbeceb761573e378dbf058e1d86f835fe744cfcaa817d35e7014574e4db671cf6ee65c027ee3aed94f7737db28f3487733c8a5f3eddcd00727c85b9ad4f603f4bb48880d42fb77196afadd180d2f76b903df1be1d9868ef8076bc2ef97e72ff72eee857b38a32b8ab7bddf7da9dfbeea8f62c25e016fa078e1a68c3d3bf8359d5f0c0d7b01840bcc198ca43bd42c2405d1710197ee1a6e1489d8ce5486a5d3d12db5d47e8ff6e891a3de8aac6d1eaaca31c17a8ec6aee8c824f4a38ae7c4938fc9e42fce4db2af91278a51416c8c1fd8b749784c0a8dda3f43ba3fcfc67e835e26c1eb587c16edc36c2d8dafb53ebbb74fb1aea586ce72ca3bf37fa90f7e6d3bc49cbdd0d18bc9396edfd7a3fdf47c5b0a1fcf12cfaf6a198b3e79ed1cd25efe6c7fe67bf39af4ec3cdee597b0f8fe727c41fb3a4ef76ddbe72f3070c01743d76933538deb74c37ab060be698cfb43317c5cf48fd6b9e7e269ed9df3d946516acca627bf230e532e983d8bea1498031d508c28c4a1ca30deada32f3492c2b4c1b506da8f8d823e57bb6d100fea58634f25a03fdaecf339f4c44de89bef80d14b319d6229bf04d22ab5d5fe6db655d8b55bc0009506e5c742b1024fded7d7eb1a91cde947791cd4f3430c68c494427e8e9890a5cc9e57d658d39333c4e3434fbb7c2e780c6af4d907ea0faced2f6154391679c674721efc2cd6d452cfff081759642d6ea9b5b9a596f8b35857f4ddaf31abea1ac42fefe7f2fbf97763ecdc8d9ff544799c7f17bfaacedda7fb38ccde17489358c751e7664b752f711ea3aa6ab0f85f9cab067b6b7c3faea5d5439d44dbbf5ee7ddd0180dc6a7dbf1d49fc29cfaed750e251793267c44cf881dcae110fcfd75da5fd4a316d1c485d844bd9f7ba1551f1b49b21078f9e5efca930d8bbb58c775ff9198487f3167e53f5e633ab824ba768c0a5603cde5c34e6c312c58ee6f7df69036ea5c7f963bd5f4c4c7bdacfbe19fe9deeeff1beb58e9d81eb096ccc9b94abc10fe867974f0335a39973b885b6584465f616670e785d68636eb3e2b587ccba179dd8097d0feee35ce46f3ee2dd4d83cab23a5fbea1c63096a9776ed5af3766dce573935cf7bf0e35967f5404d9e0dc3376c3fdf9798be00790cd7c4c73986be29ac3db75aea832bd14deb9c949db2c13ec5833a1f652665793451f2786f5d43df3ecf7ee8992c87b1e6c79f6b4f3e84be794c26b61549832ae4f220e7ba89bd967b2c0772755debee29d6dd322e07792c09d787fb298fadf3765a7980b53c8178f3ccc7fcbf8e8cf8b19c4f587367bc141e70a2cea13e383f601d4a72b16ee386b0ef1ef38cc08738109389bd5cebda2d5cb4655342755c3e87b1f3be1562e3a2ffd4e999d7c4579ee63cb913338bf636f608d8618f98867eda756010e3d4dcb7e56ae02e734773907f8a51215e095d845e8746110f53f3c6f9ca59218e5ce86747620375706ba08ed559c92bc735cde52ec66b313e51e77c759f4bc6b0dab963cc977121eef1d518162b7942afed839f983e97e5cc4e37ca6aadafd2d69a00d650538716e92e914b609785ba0b78b560ab2c14815f73b6c6e43e2af350e650dd3eee39d427f39de8f9579a9bfb49f3af31e7ab6c7aadb01ee2e4dc037f2d34e819608cb5f962d14f97de8062b98967e817417bec119b3ec67a29da6f4d23b496353d5770ef68dfda4b08d8c9fc778382bc3f68cb04e8311148dac5d0897e42b16e897c27fa55a337d4ebb3f6fab4fe619526edf5051b057af2fb569a48ee29a23dfda85e7c9e2d44fef3efd31d59afd5efd3ed210d34c48a46bfbf4c6d8531e493257a788d0be11c40ae0bb1e1ad3428c097c0ef29974b9094e867c82f21d5ab5b63dd5bd033632edacb990a34b08f74c062b80685b68926bb3491b44b52d738ba547f3fc33d2dba2a9464cad9f1c83b1cdef78078c94ce7f1f979f6cf219ce9e135e8d955e73786935cd755ce368a097d0e8a2c8f8b9cd06f46c64d7bee109921c6855be15eb77907e021ef5d86c947e45c459f9f853aed2d0275d7fc7364da1f5b23b623590b90c7862e1f61ff51e71bad44eb617da744ef2eb0170aeb1389fd76c0d665bd2c6a5a9c2ebea21545fde0f555d45fdbe7bb18b69e873d3f983dae9db0a704f63d09bd2c4b8afc1a6fd858e8fef2e71bfc340af31f425f3bec63799711d71c7c07b15120bff25503ed7cedb601de083d8500573a67fd3639fced561e22ee6b521913f786f92f90c742d67b0fbc4117f3c093b11f36f812dc22041b9ad5cd83bc65e7ef02b9b11427b9b6a117d0af711b78fd34f09c1dcb898c4b7846d6997b6fadbb17e87da2e3fce25221eb957fe8b91057477e6fd240879a43ba869c8dd63ad37d0e338cc962b1c56b671eca2d13fbaafedeac15d6d3252ca6bf190e8c9175a3b96a0fd7d5b58b809db5aa730ea79b06939e8ee99ba12bd758d7b66bdf910dd5f92d9cd4b90083c8b752f4598ac7682312799dce28df37d4e6beb7cdf0c6beffe4edfd5aff6ff136c490e27221615c749d09af7edb28bf19fae0167836fa2e4763f06fa27f639852799a13bb12faa141cc2c87fe07d602e2db6c8cb05ff8cc21b1755b63065f61f37e224b9f3f536d9e49731fbb6bae079e93630ffa13e1addf0c3dbfacd0861c303cc2fa5da3fbaa2d63f3cbbb7f3e4639e878031ae3bd26fe7cf021115e84d8f39f4bb95e0343557e63b2f77dd9a7bdab0eacbe2c7d273c8dd5ef2dc5df3ec4f6efb406ad4b2bcd7ad4d711bbf1d9fed911bedf4ddaf72883f638f1df62919c893c0b0b6d172edabcd9703b635707c496fd1ffeb9535fac9ff9ae0e5af7bfd3b35efbc0742545dfe3b1cecfc33e475a192e86881be1f5a9eee2829cedea4ac02750de7f63e3982d945a3f2334654a0a1bd3d9d06b3d2f0fd524eddc53eb6941bd4f421aa809d027d1f53ae36df10db6cfb47ff93e94ee79a82ad2da1b53d94764e290fa2cfaa94bf35dc17fe70d9b1e5a1ddd2d28dc3d9183542ec4c6aee1e5e49d21e427d6b9e7c21a736705e855a53eca30d6272a96b263b8a7765fadbf3995a1db62bc371107e199eeb4b8a11ea92639f46e87f726a941f41f56ef55f3271a13e27af3b5cf14e88002f0719029283379fd3ac0bebe7b22934156531f36cee99e273a99ff3d47d904fdfe707ff0594524dd4f512f01b9d4c899e12191509f62bdd098fcf77a6e15ba2813fd45764826ce2dae0e57a61badf716ed2de15c839e755deb83ebba679de3c22d085d9131ce8a4c88bcdb963c9bd2c5d1d0b36b249d8e6fbccf9c9c01fd587dd0bde6fda7735fb94debfcf443cad74baf3dc02c851ec7a1ef98942725cc17b4c2771e686d53edb7e5fd312d5e34ba3f9c65431d7eef9cb763b4157f63effe5ca0dd10f55ce1dd3f89d64819b033def094aff95f1ddb24fcebe1de21ade76bf19ca73ca5e1a7a6984c1c88d3453bfbb4f6ec3fdefd13c59ae5d76a78c0fcfafcd99847919e6fd7a8736840e3ddf7a8834de23b4224f55b6bf6c81399bf1dfbcf523d84974d3ea57dd0f9e833314759ba1f03e99c873f7086a1ef2af08fb61d4bcf8ec0681bf432d0f7a05f5b1e172bcc7b1ead6e962e56869ac1bb58af087276835ace39e914f45262e7d07eaa4dffca8ae8d98194d5fd55db3cc2dd99128d99d0b574eb7c7f6647d5b1159ccbc4ce30173ac33e60d0afcfbdc425d117ec3c9eccd9757056c1b62c583d1995433af301501e053629e7176063e231c33a7cfd99bf9b3fa7538dd53e393c864c8dbde24bf9654d6491ef305fd7a17dae6ea94f71aecd96bfb8e919cebfaf7d6f466b196e0dde325fd382fe884fccc560b831908b81726224bc78b70cfd1febbc6dacf7ab661c7efb74813d42c873dedaefbb05840fee9d495c0cc4186ab3388c75f0f7d77dfc1b3c786afb3ff31111db285215a4a53db1dd89ed4fc60db497c513250f7cb362ebc57a2763ef3a0db0c563a25778b280fea921d4491890bbef5e9231be07626fde00fd7f05f8b8e9facaf8ee0dfa86612db0ff6c166fdbfd9ad7c49ed6f32cd2802ec5b8aa7fc77d286536de25399b09ead8351e95cff724afdf955f3a3d7e01fb87cdaffd1be6e512fa0dbc3bff0ee61b6b5f4b69a19e4f4ec75d0e07c6d87d73c7ee62b192276f5cadd2635d539d47dc9e3bf78cf67b693fee57cf827ed68cb6e5da47b49464ed037a5ddebf37fbd0fc867bd4ee756d802f82c80bed04727182b557ee4ab697228c6dfc0b730b16aea33923ee5ada2b9362f575f79eea507ccf74c4f2405a393cbea7e9d75caf9fdf837379890ab79f8ced2cd2ef58933aa2bd7d460ffd66d93d5d9ca5963c9d15499e8c41a79342cf01da0957c04fb95805df9fe8cfaecf3ea1460a7b73482ba60b757a9ce33c72c060f17b661e6ee463b4e5f815d2c385f08985d7476cbf89992748abf96cdfecc9fbb2bdb78fbdb1713d3a3452d173f2adde53ae1fdd27d7c79fdbd3fa59fc9a7f2e20c7641fface3222674acaaec9d8cc899c0d5df716c2fe67b81e18cb6af5e13454e514fa735c139ed620067fe7af43fc2f58071ad3c53a3e3ccf348ec8f55ebe1aea90d7237fabe9ae5406a03bf234eab27c9921c78f90ee680ceeb2f6fa9db1f3d7d66387bec8bcbf1df68f9d451c73ed5f7f1c2fad09e9ae07c79b1eaea767b01ed343af73ee5aa4adaae6938011d93c1b794d9bbee85c34a791b5f53ae133e5fc63e23cf0de1f1b2bff99f149bcbea9df3875d683bb8ede5fcb12aa03903d233ad97bc7ae473a71ae88955163cbb1eb2fbcdee9e8f90ee523d65473bdd2795fe178ed3976d4237a44ca9f754a97f40cb86cec19e4e1ccd8ef0f72a8eee15beb437e0fc70c79684c67193bc75063e7abcba75e5df7fc1cb6f8d2c319bcfdc6f1809f3c83cdb3634e16b56583cc68917b4f4da7ade73eea058ff46c74e91931529f9d4d9e9ebfa4653cabf99b53b56524c35ff95a8eb678c3a0cb1b3e27377e6d5ef0862ff902e1dfe459ed6b6bb9fc5246bfa24f8a1d70ebbceb07e95223b6dadd653a0ce2c2f27df29bf3e54af929d2dc4b8467ecc0cf97d2c836f0e46de8dddf882c9c4bda2942dc8903ab7dff7c728643c915dc3ace6b75cf2e91552b66cbc765fa700eea1831e686b46440fddba87d0fd858ea8dfa818d13f65b6fe9cbe05783f5c06bc8b8a86e0c7fd7fe8547bdb8f6bd76fa19b2bcc5801f33edcb2f8bd02fb3dd379ffa94e7adf7cd0af88e3fb34cffe7fdbe173a6eb46934e7dd19638e28cd33277473a23842105b01fa519573e01d21f6c13dffe9bc6b5eb8c139249e4c7128dc9d31facecd51aeef7fdbd0b16ebfd659f8730e7b353ad03de37bcea01fae7ee686ff8dede7a1b6b31eb0079ed062e22b3ba2b3f1ba387f1ebabf4fb998f14c554007ac7fe3ce07e20473b164e41d0c23b0b3e7adeb1806d06f5c9e729bde3a3c1078aace308879fef6fddae5970939d3aa92459324fb803ef8ab16bf2374e1b899e98ef337a7e4f83d3d6781a45d02c93d2d3bbafe94f30f7475e4d553fe499eff601b317992c7056032501b2a3b83fc06bfc9ae65b7313cd83f7b0e39db5375f7b5cdf74ca6ed19ff73dea31d9e4da22fbe90914c5f439dbd23bfd83d4417c7fbb28e4c68ec2ede66e0c73c6de9fe2ff8fdc3fa75f48fc997ebfbc25f437901f5afd4720070edf15c72ba43db4fd1f149b0f3c9e89dc992a617dff787efbabe10acc9a463e67d494cbf2cdcc2da3cca87086aac00dffb7f0dedcc7c1fc7a848126374483dea7f72c6037b56408de5782988504746ed8de3ace68f781fdf2b1cfb8be71bac5783382a8e253fdd7c1e3f85e80a9e260785ab34cf8af9ebeffef2615e4223179bb975e4e981a311947de883ad652af4c069ed01c7bb27d6a5f1531d5adfb7e48b2e5feb7daff36a302eb396f29b31418c5bac99653e1787afd33a861b88af33ec897a6fd12f6c8a11e2bcd458d94456859e7689cb463ef99228c63de713f36fec3cd13abc52d538da861ec31993ef0cf7242c72ec4149f3133bfa31e507761616eef247ce6eadbff236fbe2d6922bd307ddb63e670dad321f52e1eea6ba987d78660ef5478b361f6bf67bd8e4b13f97b71d7d7d7071702d0e941681ce67350d53995ab4f92ee3638117e62bc915587ca7d54b8ef2fcb70dc7ef1bdfd1a9c58f5a7659e303b46a6c1cf91aed9a186a7b2d6ecfced191e751fcda4692dcce0ff4e4dd94d2717d86d49fd82b492b4297d01dfa7ea61dfba2e3cbe99e831fa48dafd724f4e63fb57f740f8e6d3f63f37bfdf79fc8965a5fe6c61e93f1009e0ec8cab6cd00f10c3a8f867ffdd6f593a3def7c8bb512f7c610ba01d416df6244fb43a4e54f1721fe5154f3f7f222326502f093500a13afcc66a2dbe920f6f25f0b74b54529be2cff963ede3ebf0aebcf62febf6352ac26358428e37f4c7085fe8175f9dcb3ff52dfe309fb25a7c8ae624b4e8b0cd97daf4c67c474dac46e4645d673fe8f35ff1c09fe5476ddfd79fcf99faaadb7cb38ee365bcbc7fc177ace77ca7896556d4c6fb9a2fb6c6f227f2e8c99c7f89ef942dbe83794feae3dc393a19bcdcfffa6fc058c1f5d206e4f942f4daa7f0e0e37be97be8da619317f109f48d619dc033995f80ed346aec6636b6dba13db71f8e7f7ca1b377f7b3abb33fec77635be980bfd6d8629d7e4e6d0c07e762f6b0c6342adc6de8db55e09b32cb6b6671788c6926f9da37892e06b9cba02be948bf31cdcfe6df1337672f0deafd3857cf73ab21e69ac73dd0f94ec6c4be42cea9a4c971a99c03ef4cf43931468ccb2cd1b8daf34992c37c6b1ab8119d5126764d54a00ef9c5580acc6b4d72c2dba96febd2d4efb4e88de97e7932eed242b66dfe7ee4453fb44f5ff825c8f8bb36f683ac7d72cdf4051df0b2d7565fcb5ec829f243ec8f3c31c5b06583bca6f3161fa1fd919ec688e9f31ffdc41a39d712a57bc04e7d7b2a77e63f70ce86ddbda47d98e66d9dc7e563991d1df9f5d9eff0a1e1a133cf8cac4352ac1a9c57ce66e7e543a7bfd6c3bcbee091d7286fe5576a51f110037976cd21e174dc353997fabd1da366b2f7296d65595438a7d0378e9d1c8b0b91f74fec7ff87e55b80567d33ffc362b9a1cbfb70dad411a3befcb858cb848e3818d321f7d330ff6ad3ec86341be26e32c4b0ab7b673973dd35afbb610426d5ccb579abeb7fcb4c3ac33b62cd41d2d2a9ce6fe87f86f9a819e887927bb4872ab65311016ba26856e2dd7dfe3ddfd18f71cc0d5ead049c5fbb95fc9a8993abcfd847d87fd04ff6c2e9d9c04ca1bcad00baa3fdb43ef45acdf5f10ddf87ca1f6c7f333240aa7877809a72fd6f1f6ad1d59daeb6b9fe805e833113b3e93861f7fb1162d1de6d4d8061dda7f1e73a7ebcdf9f69feb133fb8d78d7fe7c7fc7c2691774ffc7becfbc7d8c9cfc5f9683cb1edbf75973bf1dd5dc92b67356feba74d0d7d9d3ff4a8db733ec5d2b9d5791c6d9dbfbdf75c3f12a411b876c7ec03ae77c9a9934b7484ba072af74c2e7fa9e3b3fbe47cbcb52fb3fb9eee35dd67249e8cbea631b50fd427ef7ef42777c7ccc75e3aeb54c755baf734f1a087b93e1f6bf86a7cc5d33109bcefb0bb2e0dfdb7fd9bbea4edc2b17b09c70d0f7cba7f9eb323f6d052cfab44772fe1e3fcae5fee4b9d6bd57d3ff36f35bed5ce7ab6fc4a0f34c1f9dfbe7c6fe1ee9eddcbfc23cfee23bfbdba87f9c55fddf76aacd4067f354f6ab375d708708816a1173cbbaf91d1edf7611f200ebbe107ebaa0f9d399d0ced1c1b05d76f48354e8676dbac3d197a52f9aad99c29dc4bf6fd431e1ebbb78effd1cf61fbbe9cbfb6a65dedb699a94a6c148f34cbaeadf73b67d7f2f495b0e7737e3987ff8eac7ff773f73edca37a2c6c6fc2d8c885e353dd51cdf8785f1777bc130b243273d08b9bf82f396fbb768eb15c7172abdb63b5c69b9cb6efc1dcda719d570b754c499143afe5ae0f83e6737fe373c80ce6176eb01eb85e740c07bc91716639fc5f5e2e34391c37d6cb8ae6fced1a9d5295b7913eb8842bd6f3667e60f801f346865ca086789171efdf9dd8bb586eceb4ce2d79f495d67bd3cedd46cc06ea3f9ced9ee456b7f4f5fea5cea1d658ef98af6bdb097db4f3b151ef71b10f13b99f7c069b1fe4c2467e5b0a8ee60bee9b4b63fabe6a926b7609ed43e7ab46fa5ed6796abf4fa91c9f6e14a5c69d79ec4b8cd8000ccf14f4414d60586b501fc08f737ba4347048d713478827d6b7593920fac8762d41afed82d02dc3f99a55abbbb5347ad6d2bacdaab9645763d9aa188659f32ca8b1d29243e8f5d340afcf12f61ee8612f8004fa2bdfd8ef34f75fbe26aa72033c7b3a5ede2fc0f5e4aefb4231da9eeaab4b5892f7d5bc81d629d819d6f6b8550876f61d30f93f16ca21f0ad34a4bdff881d0cf5c365d3df19ed0cf9f9bc246293613d51a09ff30f8fd574419dee43bdef9adcd3ad03a679ed81aa64648f1291ed31b5a3f9b5e3f6302856f02e38e7ecbb6e4dfa84c883948d330f55255d4bae1ca898cbde59bf432cd57d2b58cd6294e86e95a883d14ab4dbb982be93c7bdf965bdb75bf5e41d5c38ac9bd58fd59fd69317f76bb0f97eb7aa79657b41ff6d996c2c49dbd89556d8c5eafee6cd7bd6d629ace55cb4ff3ff6fead3d556c6b1b857fd03c28c4382a1c8a11c4a889a8ecce0432c0086a955bfcf5dfd55beb5bc08c8caaf9bceff3adb50ee6354745e8f46deb6d73b7bb2db77af4b9ea4d97fdcedb8bf539e9425f2e8d5cf74d478b829936290f7747bbde679fce69f932bfcfaaed61c2cf12ca691e77f86cd408db878129c596cccf341843fec09b8431e2fcc19c1f478e5d40fec05c920767f099bda8795e14e3ef23c7d515d60af32c389e12b86d2603f318ebb39ce58cc09e1b46449eb3dfef913faba2a06e2380fecf39b41cf97bdee9ef2828d2b63841ada6d98172f17e462ba3645c5e80251ca49754ef15c9d6bd8494db7e5c990789d7eb0fc6db36298d2eb9df5ddbf84c69ad4ec14b151da220394b73fac319f27be3f03f314f8abd843c3f4776a728b5ed86c32c94ecbd90e9630391838a72ad565fda1e0a7e1d3eae27e61f967d478784cb0013fc9c70be91bb00f3bfba5e9560debb9a4329b094fb7a4ee66450cfa5bc7199c6f25a3147b67face5451d26905f5f7cae9b63845c7cac6d20f277f85c89ba2d9f2c4703f3ae6abc1eec2c8afb4dced1873ebed772b1d6fe93f141fd2134aff0bcf67b6a2ef67dd8998eb4ffc832eda34b73c4a08e5b2ecbf5cc79b9cd3e560aaf80cccb657ce8660979e3769447f60a6aee20874107b0feef852cbb0b837ff7e5aaf2dd7c8afb24b4cd8c3d37a1f594e4daa66abd40a23f1925c890451eabbf913d393daf83d982710193bbb5bddee05c7dced20e93b2b8af18b72df0b1b5ec7d6bb68fbb49333ff9e548748a43a4a7909385bf337c8a51315c25cbdfae8df7d01ce7f812ebd707e76fdc9339a8685f403facf3612415c329795bc72e4eb1ef6dd7bea545fead07fab8dedbe11d29f601e611d25cb0c1d79c1d938d39665ca912ff4ae294b7fc63b765b89ac469e10f716ce32c728d61cf97eb607c27dfa47bbb4a7dcf0891ef05396f46b382fc5ef7858483a76cee4780aba1dc2a8704ea1ad3355039249aeb47ceb77f3ba2fc28f85cd0efc03e021ffe066a36254ea9d84a9db8bc1549774a397dad63a23f6749d72c42bd283f1666d6f0cdd8fd736d0fd4ec4ce7611dcd165db88d6b85cb64994389ecbf8f602a8dcbcc23f05d30ee14eb736d7b7729f79cdaed29c31815426f30975130cfc251dda7e4a28f1a797db6943f0eb895e24ac4e144cea3e85f48d790e5d3ae83d91eeac6f27837971bb4ee68c39ff53f326fe0e3afcc73dc9d0b8cc982e6f7533c578d1f00f858f899051c06db93387e622b26a5b70b83f136b641e7e63c3b4aceb15d9cc9fe5e30cee8519a031f01b937c53d2971e45c2136e7d8e30be8be0c9b4cce2e70d120f702e8cbc8b99a35ef9ffe7f9cc1feaf656968d162ffd71b72ee541c2f57f2fd9dc7125e5bf05300c7a8f4ede21ce9fd8bf86f0feb6ce1ddafeae22f4f19dac0c07304f15bc7b6b62cf61bfad70773fe942d6ca34bce299903626b30ae05d66ef8726be8f1ef751ea291bb0f71ff55c015dabebe107391f8800fb13c77b5fe8602937e7a2d394f6341f600c497a1eee696ca0f8c2daf29172059a784f2e2ac0357e8031b73bbf623e459d8b9c78f45ed6c4898f4efdf2dde39c43a8c9784b44fb13eed72b477afdb10d1efcb2e2b2e2de0238dbb0eb143eff4fb147bf48bef51acfeb7c7875cc9122f9174e66a79e864ffc47e718ced82e8c897b874a5ef9b928e21e47f6837fd7721dec357c6671b0d7a0d5f810febdec93f16e63db1bdcfb51ff528f7dc39d26f851c3bc4da6c9003aee8be94e3496997e856ebddec49e8a3b26eb8ba4e79ee8faa8709b985f5a895ba6dcbdffc4ef724744c694fce968c8309f545be775ea6d7a9a49b53dde907f032487fff19fca2ef034d917ddcb61a4d054704e70807fe356a2f98bcddc9c264f8e54ce225a53a7cff1a8afe9fc8fb64cf86129f15f5a36453db6cccd99cd664fee0b938e6b3333ab279f8e30de2589d0de60bc11cd4fec6e6f2197d99d886d1a8fbcd7392545b5bc44d586e79037b7fa538488e135be9799ed8ab3f6b38c12f63bdc9086202d774d03b241dc619ef6d657f32ece941ae23a6fa063e57b53e5cef18f9bd5d6a67b46e1cf204444192cd83711506db3d7def3fcecb307bafcc9fb1ed9dc91e982efa3f9c17b0e17e123bd979d1b2e9f29805faa9f858f49f1dcb3846fed39f8e65fc1d05dbbf5f6b79216130de259d13be4bdaf334cccd2ad30ed8b0a3590c6d795a6bce8cc059989aa8bd476b770eae99dfa51cc70bc837f80c83f91ebe596d394eed81ec34237b9e850bf3330d665aac6bf53baa88cbb9b04b364f19c6adbd2df38be11950642cc404d81e7587c6ccb1319700750762fbbb4467ce642cd164639ab17dbba45d5acfdeee5c904fa538470ba89d87795a353d3cf27b5b216b6e97482f3e271b53cabf437d03705a949f281ad03af476243038a06ff2bacfdb167d46e1ae64f555b9cf8b7351a1aca6bed7a36323b684ca70aaff41cdda966f346df696d8a2f151e50ca7b025fa25e5e3f953b6d127d5b3e0625a989fe46e51d6b6f4ce11ab8f8836d7290cc67f339ea7b5df3b247a86fa638d1f55fe0ef5edc2b985b6a47beb75902aef91b51a5757a20b9f913f5ae65382f14bb28773fbc8fa48e36e7cdba83e41904fd58dc5eb59ed079497b20fbc041b3d0b4baf8cbbe382f38195229eca38c1003b007e75387b07a86d32243aa5f744e6146d5deb14058cdb08fbbf0e6612a63f6575783bc9c83cae7dc6e90a77e32772ee903d08fda0f170ced545f6ce25d4016704be726183326e922bb795ebf7c4ebe6f01677dde275b3ffe18cbe8e27f0bd39a07bdbc7bf03a726196777d6aa7fb0bbc8956af7c1fbcb7db618b9a758f81ea1beee5ccadf79db98a0dfbd2efaa7f70de618d66c5b1e93fcd7eb2ddbf822b64ae3981c5b8e9c5181798d6da8979ccdb156989694c30c6b68740ae08de3b2c73c249a62abe07c763db667406758fbbded9ad67422779fe2e7a13c73b466c627fa2881878ec862d031399f09b3f7adff2b72aa8ff58d4d5bf85c5126bd6d4c27b53b47e177bed6ce41f283d895b17e3d3c5a63ba27fe27d619fc2d124fc781e662c179843b6863161fe48e5900ef521efb1ec4de859ea8ee5d3a5ff794ef1590a587b8740f500709eb1829763ee519c473a5cf201642f99a198f13e7d861b67e5337556c6bcadd6a72bc038b4fa1cc61e7f6cb38e1b9f18d21c6669ca1544709eff21fce10ea78f378fa6450dbfff77d1696c6251e6cb3c9f2294b4be31059b57891843ff91f90e3123ee1d1b96ecab1ff65b2f2e00cb4ff609d76b77617523f60c376051ff603db5cc21cdb11e8d0024ffeffb279b3718ffe0fccddd732e6ff805ef96fcef12fee60ce17dc9cb75912efb4ec6d63fef9737904fd136b7850d9a7e0fe9fc13f4b7919c9bd00fe6376c7453c9ee9a28f05b81d7a727cef1ceb06f27976119b59c38d088e5fc4bb70de65a22ff1fa1d349fb91e0ba8ffdef0bdf3da3eb4ce8ce49350ffcedb434e1eac5303367eed6fb27e0363abff9dde89adbf45fe9cd8ef97b8db3fd66503d6a9ba71792bb8a11b6df1b58577acdb19f33a544c8f9cd7dfc6fb565b07a97e84cc97a7e6924db6129fce8bc25ff3f059d626e3b279f46dde26e38478540ba686757236d70de65a167749de906faa754275e577a80dcab0c789762be232d5b076bc5aeb6e1dcca6d41f01751bc91e966a59bc40fdb5ee1474c490fa98e859cf93dd38ff583caa5307fce38708f74516a26fe31443ed33d0450ee920657500406e846ade454e6cfeb56d014774c8b106742c769ffa9b53ea57879ae53ba2d744b4860df21693df8c8a7e878c9de8acd497c5e208e8f324edc51be49a979f5beebc53587ad564db317dcb58ce579115680559ff91eb8db3ffe7d6cbb3aaa4b47a131f622047c61112d2bca270c0bf537cd816f0360712176c50f5882e066dfc8b9a7726ecb315f4611f491893b034b61f8b9e8c2facd7c183b17ddda76c17fae34f5637ebf7decd7f4e4a9077bf5b434f19138d91717c8ff0b3313cce90f1d200678a7466d9bbe7d8f6ce51d7ddbf2e300f671dcc649b88ee11ac77057a45c96a79b2da3c2ee08f6b7d63b5f530a7adb4eed1aa93a736c6321b32a8636cc260562c7d0b3983b14e27cdf519e789eecdc2c085b82cdc87b657a5a3edafdbe9805fb148766e0f6af1729fad4beee6436b1b7ab1257ac43aa8bdc3c6b7689585f437a9df23f16de09b556b065f1936fb63c1b912449d4f3c9f3016ac4d416d51dba2fc75e0abff39290b62dbe5a9edf133c5cffd687c484bc1f53ca73e1e6774fcebe7c28ce9fa1b646f4670cf17da87a7659e1c1300ff0e91c75191505ee9d027fb90d83c9616f92b5ef792edbda432ff14f749cf702c9a93c23121a2cf94e3fb52d38d60dc0bf18dc63e2767c5b50dc8a34dbaee85e6a8160fea9412bd2c077f7e59602c0f6b112117943dcc16db62e5d8e34e8438b565e89367b7d9dba2c7bfb7d2c9fd24308ee1cedb2555af1bf9e3bfd7c19cd6cb99ede36efa93fc362967bbf5d238442fda6db60cafd3fb5cf50bdb9e16fac531a1f17c9a27dd5ae33252ee67a5269e72de99af9cea8925c413783bcdbc28febe2df67c4b1b82438dc6e4110bce6aa2cafc69824f4c9c09d6874260105f9e6b32613617e7813eef1dafc1e2caee9578ea69072927e5475d2ef07aa22ca717f6bde84f22e406df4f64ac18a7e89d62ddedc4f68ad7ee427e47f8c618f035e47e85b69da3236a9d75e21df843891c2ca221ee6db2c73cdba0e3ffbd9a72a9df435f0cd6f4c76ffbe363e4b9178cf314b48e5d8b0e28e7a05906cb19b0e3eef83ddab27367540bfacd57fbf9c8721268db589b95d764851818727e607e34e6db8d8a6be41ba563cd7ab13fbec414ef8a39216e01310fc8bd80dccc8bdf61cff50e742e2f49a14939a052bc09f71c9d3b716fbedacf07e0e118306e12ef8cbe49a34a6d6f4be5c526b6bd552cbd4379c97388cd287730f0035e6ab5652f5c4f1463a2f1c671e2d4f236910baed05e17e605efc07983d7734dee8b97becacd86f36ad7f3b65dcc17346a1c160f398adf36a65dcb0b3aabf5decd732ba704cef1c17979321cfb59d2011e7d0bff07718fe55ed2b7a4df253eea0676b8c1c943fae05ee272f583e59aabe3a8e7a918f17a71fc3bf8d53747b59c557bf543e57d5ded037dd5e0f4906aa9ff8c96350ed31a6758f4b9cf5c29bff50117b4529b1d7c822b5a5bdfba6e167e8fc8b8433430f374e41671606a349642cf28e41c9c27be9027c44e49ba6e0ef5448a5b126f0bb04fb0e63eab6f2b9e9f0c887dfc74a2f653c6ea242795794a8399e6101b086b07c6ab6e710a4be328f409a30a16d9c1b13b456ae79768d0237bbfce154e39718d2af6ade39cd75fa1b5ae0057b592d6c3dcae7dd74a768ec8cb5f28dc9215e3a96bee1bd8ebf2bebed7f735e5ec7c246b644e3643e8964fb5fdf154e7126039bb05d62d2834cca99eabfc2376ef92949d3cc69a09c788d78a20369d779d94b0d75b79c7a1ed97b6beb5eedd7a0ebb3ca76077bc293c9e63ccd7d45795c4fdc2d784ec6559fe449b1adfcdc825f6640b9f30e4deb7ad3b91a987d43a25ce8eea7dc575132c94bcec96dfb31a1716c46f89cceeb5f205dbee211a7a55b281ba2555dc4d60aceddc121dc1f1b1d3844d22dd770bddeb610eb4aad707ba745fac4ec5473095fd23a8a73e7c177487491414f7563b02eda4567f8c7c17a37d49e40ac33decb339f35354664e745baa67701c57dc4dcfe0bbf33bf44e5cc9fa0fd63484d84d9885acb6bdadd66361fef0b7cdfe2f67d8bbc49bce05ebb7cf994e76c7da5ce667ac7b55c86b7cd2f646d3b363cd0af49ff25a94d6aa427c17aba504f942feec142e3a078ca5f47256d771521a55541945a877f2c9d2d1a79be7eee4b37f71bab322ac787fce6b588302bf8175a74e104bb1dd02ea2c8fa6cad8e6e8db3e841dfedf07a825f5d23f4f174f5766d3c43efa6f967a9805ec597b4674aa5ddc1df79c21cbb9addb582756ebdee0f331c0faae4c0e637d2bab1305e3de84f74bd84a1f5457517c2ee8a797d75bb223cd33d6adffdab7a2e81ba571a9d594a2bc11c3ec7dd1bfbd35fe0ef5de2bf677a56ee030bac4c8f3a0c55d88739cc30a6a1efe59f385fc4dcec4abdd2bd2cab463fdb9e103f1ab341f57d76cac3bbb60d1df337b93dabe78e789f8df2ef5ad2a841ac0def6b5ee0782bd91edd6f676c76bcd0d9e2f90fb611d77d341727406c96ddce9b4fb5ce0fd9cedb5a6afc556cfeb2b5fef6df6ce7c9d70d65116c8bfbf6d641922bef16bbb046411f5b13817f04feab743bc9b9f24fce839ae3aec9e3985c1ecbef653666ff35ad2a16e9dbd605620ce49d46696ffde562f39ee9a88b9ec48f6cf40e50eaad541867a6d2b496757b9967b49bc93ee1bfa4e3242dc2b7956d80869c1e2bec06554d305c4da1857aced3a5b0a9b6adebc2be14ee4badb0eea6de8bdcf6851e77f7bbe38b6778fede29c0e3a1c1b3cf141273891bfd3793f117b6cbde8e449777688f45e1b4747eb7c3c9c57d4a79af83a29ef19efc6591e17de3d5ab9efcb858c674c0f71e95ed2ea31d6290a661a3977bc0fcabf258e2dbd3847b6d105fe13dfd0a315f24d4918affd18f33177938158c3c900e75db6d17f2ec077fdb91ef4f791e8efe5959e453a4ee11b03dc92d93a8670605e63bdd78bcae2180fae19b70f47ccf784731e8a3e51395193df14ef47b12d3426eb32b98ab88a05c59e0d7bac2e197956c7bc1ef237affefc3ef47bdb98b7cbb89cc6f5e7c49ee7edf17ddc2aa3006307fc5a0aaf0ec3d8c9fd3c8aef3a47d1aea875817b88ff1db9b699bd2ffd1d38cf07298f0d8c29b72f9c1b4fdebb0d4c2dd66d94f77ad583bfd5392ec2c024e7b8fe2cff7b8d03ab9b203ffe76c179b5883ce2e36df0ea38be710e754f910d64bc78f66b1c4ddd31e42f4443de1e9123744dbd6a52183ff13df037a83c60e5ac107dca2966f111f7fae333851c6a3cafb5d6ee95c8f22b912d2a3f319197bccf67c8a3671ceb1c3fa9f219d7fc0f2d6324f228ad90e7c375d8efad7c437896ce0ff6a8ba375bda94e5872a2b9fa53dd1ffe1d8b33c1991bb6e75103ecc9ec8eb7e84f1a4670c63fd32275b5df6b1f8479bdf0d709df5f58218ac1413351ddbac221fea127e2dbba83caac7f028df19c562d198404376c9e3a1cf22f71eeafdf57800db1bf4593efea2fe9c38fbbc3d7e57b5faf11f8e9562378ecef7e69e9e13ca8fc8f73839dbff484efd21fd7e96dafb21fd9d622d70ef26a5778abb51f1cbfdabc856753f4afef496f324fb3ffff137cf41c740392ac94ee5ae459d92c6ede6221f64f078adde2ac5dfdd7a8614bdb1f59c030e82eb9c8fc7c66aad27e749f7a11cdce17c2a7bed886d503cd582e6aa0a59b96f9327dc97d27e7e7fafad65dd2e78c423fc5f3b1732efcd17b289b6ff79dc4c06e307f68484ab1acd3a755b87d8fb6b1ff21a97a98ff6abfc5cadb618eecfd16c99da460578e0172d0ba9cf82aef97d05713b6b172df23b6f93cd61d7a336520f7d89743e92ce4c8bbb63a8718d7c3ee49bbc1fe7588f4ab0291adfe85da2326c3c0fd8cb457bfbf05b7d4dc5bb30e72dfb90f334d5e7a06d5e21ae48e397a17f3b0a7d4fec09c14343ecdd3c4ff4ecec0c4fc50762ea59fec399ee4d86e910381b5eb70ffc0512672ed987b34b2272fa2e135ebb8edc55125e70342e42dda8225a2b909cb5a4d95e138303f5c3a94c2dada354f7f507cde5b938a36336d6e5fd9ea00fa07b126ddf15bf056947fb78d9735fca4f4f63f13ef4d796de0ee441302ed8b9c65a60ccf6667c5aab3d8d3f35b9a3c479bdc4353f695d6790b889b06f75dfb41adb95e68cd5a29279b55af4422996e006e32aee3afbb12ee339c9de2067dffb04dd88c7038699123b5eb6d525e5fa33976bcc9f19e9200babc877d97e8e6559182ceb355ab39ccbaaddb41167917e43bfa79fc23e4f4a8fdd19775fde0b986716078ffa2d6ca8fb646776123ddb7f48f3f2a6ccf5350bbbee13f95b3aca8dd71a4f69fb197f123120aecf1a65dd6ffec57e68e3dee9867e4ff36c6341ef0133b6afd9fb428aab2aedb5720929fe72dc5f691eefdc55dc61f7a6a5c655f17fe46c4fd6feed48f1fa479e43359a522c05e4eb50ae72e4298ffcde25f5d33de50cdf23eed5ba473c0f96cfe13f387772fc8efb46f89d50f7e907353eebd66f764e928ee4a50dae6b5c872dd1a1539bccff4d70e4766776dc1de37e1ff40d19ff20739051bd529279499d7f1ffa17d9de310adc62eedf8e738907dd2d8dcaa59cd82df148dab755fb9cd6c657e7fd6fafc9c5c72dce44f7dbe7b011db95f355598cdbb1b7d9fb40699fc796dfaafedfaffab665ac3c1e2dbd378bd79e7656b8e0a1c65a3bb7bada967826a97af7c4be1d427db55f2faed9b46e170ffa4a1db246eca8f1bb1ce3fdc57e557d8ae53a18176a0cb3afd8f36d714785371f3164bfb517686eb2bc1e8df9ff4aee35c70bfb07c6320fc63b8a71bf37bed99eb79cbd6ffab726ef3ce42298229718f624c37f28f184a46b1ed7feac9894648daf9023ccfa3019f46f0fef378809fdfbbd8a786ab1bf167eaf8c417f96f65ce77408968f78f04fe3b88c2ed87f9a37ccf2a11bedf63ed351766c999f06877e7b5c99ead0edb52fa8bd20735647796c17b4d622d3bf25dd5ce41fc03d2f747495bb3e298dae83b11d2bd98d2fc926db51997288765b8837609e8c77a73531ef1f0b93c716818b91ca20694fee6ab82ea6e7dda360ac47be1bc4ddf116ee1aebb823bace64d0dfa17e9f1c9d414af4ff1d5b972f64571505b322d9454564a5a81b333cd0cb317bad4e87666d13614fac6debbeeca66709a3ba6ff491ec8fc5b61e676f99b73c710adeb69837d0ebf0ecaffde800b9342c7e89b58e8ee48e8d465bc4c0cb38d4419a389b3ee8f389ee5569e96d3da2d78f40de66af9599389b54603db82c0439603431bdc57d595abc5e450de3fab3fe8c1c07879a790c4fd8c4f1eea2c0a5dc7e2df8d8615a089f3ec48ba1beaa6c7fa482e712783899adf07d9cec3f8de1f2f7efe908f272315eb7c0778143c136589ef4290adc7dac23b696cc496b2cb83ab4e068656c485192b51f77a7594ce77a326035354d1993973dc0dc92f97e0b03a89bb167e39b0cccbfa3602bfb012a8e0d2676b658c3c63bd407cbe5517d2f70bca6c40709f50ea59ab6bf8e83a605b9f760fd1936730777d4f2c3ef6c62fddab6b7d86f3296838c7f1106e92af49347fb91fd2ebf47e516d1bb671ae63ab76141184ec0bdacba2ee44229b88e8d992dd99eea8a67429447c07197941ef21c95b322a99e300715c70ab81acfb680b37cdc397159ba243ab6a509ae72b9969ae5e6d0d7411af3fd6cc9bf6b3b71eef6d97ce71de2d1fc049c52f4dc7ed1a7fb87df1173d2a1df1278d13fc4bf7b5aedb91f4a3f5f1ab945708e603f2dcc03e0ade45c3be433c2bd695b640ea14e1270e74b7c198c833bdc79bba8bb25368ebe0ec697b8a4fa849a9b734dca422777e36fe6d5dc52dfab282f553daf46c887c6d936d539d1293687ccaf7c67233e7914052ed9970d9c3cde4ffcbcb6d42816e753c2761bb59a7b7fb4ec1bc61d4ebe2b70811b8517bd6d0f94e3d6bd01b87b2a6fe77c1c9ce3fb0565e3aab4ba644db9ece0bf0b5f90671b4b9cd7e47771de6c1ed5dc95ff264e4c2bce8fef49f2de6c4cec48810154b1252defd6f28adaeeca5915f99616119bdd7fca041e947137185deeaff37bfb28181f902bf3ff3e7eec4bcc96dd2980ef696b948e65f01cba3570a0f7ef93cffe796afd7f98adff26666b01f115af8bef35f2dee2b13e04bd3bdc80cefd39ee68808f8f24aeb9a444ae4d96f31d753d32ffe7d4f68a68503cc66069c559c64e7dd4f48b7a6e1c5b33d02fecc6f994f515c4a42c784ec9848f5597e2123b8c69c7beb14dfd5b3161b116b457d9fc48982c91cb05dc00bea7ad6d63eb8c1a7a1ce5c4143633e8f1e073f70e69e9d5efa27a9e28dbf3d7c9e750daf3ade743ce13f552bb387e799f0dadf307bfcfdaee30c825937342f159bfcff3c2a220cfe18e96f71dc5813079f0be30ff7406693ebeefb3e902f107fc59cc07be10991ddbc6eed57a3e4bf97bf23a839f54593319eb873c9fedfb4b6aef573995bfbe4b6ab9549beb46c1ea04b35e5cce4610ef2c2d2dee8e97a9ed5d5fedb4007ef2d2bbc7fa4d8f16f06fb6477f42adaac1156ad2105b91ead9c8052762e45ab26be06d0e71195da8be7ef691a70d7c27f53a6ea9b0c7e09dc94ecd2b73408ecef6ce202fd04695bf352ea8cf80fdd6c833abe33268fecc392a9fcfc8a9a5b697e8c691d823f23ddeeadfb4cc2ad63b874487b8399d3f9ebb7a26e72cdee48d39fc666c5cb6937ed2f55bc55a8ab88dc025b67a196f9a32e9616d575c977be4df4a51074ccd3341febb1a07e0bda9b7813c16e3dfabb504f81c1ec5fab4d49e83bd0771e0b3e0e79b15b11d32aec17a5d5d654e705ef97cd7e35779d22dcea13c5fc54c8b82fe9eecc709da38977804366b15f920138e8e6540ddce09d69dace26e823580c8b790735aca4d7ee0af54f3e1681c8dec4fa7e1dbfb2f9ecbc4d9e1bfa16e910d790a8ffb48c7f9aae8dc0f6b811b449eacfd0ee26aa55ad81c83c16a6cf8ee255e00eee2577b1aea36bb44171fbaef4bacc3b797f98097ddb1c4af22fb0173b9dec27bb2e5fc3580c71977455d765a03e2d1f3ad3609d64a70874b4d3b47dfed9f74a671deb88ffe615f1d518bf20f85137d68544afd09b49f9aeb60631d0b8fe262653c4cdc4dcf51300ed67e6f1b7713b0a9255b56ba3b89fc030e893cb6afc8c73cf20093c8b88fb90e6e17058dbfe7c071c938ac8a7f811b1b99f7d4f7b6b126e605b93167da877f2b643f22b7450b09e32df1f12b3945baa7cdf958dc653a2a8ed1826353af49d72b22db68ee2f09270df5440a865fc6775f17bd5d14b82f644d53e02cc27e720c4d733c68072e143c53a35649cbda0d637d86bef701d886926e57d7e5701f08ac35ae9163a7448f3b0b2cf19ce94775ec2fd671651c8a744e7e67be6bfb8d6298540c5d641b9f88a9ad8f8fce6d03cbe45e42b4ddb7b13eadd768c97e8eae1c13cee718fd4095179857c4caf62fafd6c99c7887f47561ec94fc800763598f8aebdaf6ce447ebc8e987fad79cf26d45f36d98d8bc4bee5a1beda2785774d00a3d5df4d16f3dbb8227a80318dbb69916c6739b92b5f794e9823dbcb976454546b3fdda7837e357d19de274be73a5dce8fce30ca43dddbc4baf1f764608ee372cad61162f84959ecd6c08d2cfcebec4c4a75b576ebc0dda7be7326677ca24b6d32d9ad8f8fb1ee5ca6a555849f793e2d877a587a9be94b5f9f2ed37cf6e2dc667ad88d3eb3eaed65de9b7eba65b81ce7d14b767b5b18f7a49c5ec87e8b6ca39ae8b34b52ae2ef25cae409e7888672b0f77e15be2e762ff1198fbc8ef412e6ab41b5fe2457f37d918f2df610d517fe8dc57b6a5a53639af7dc319181f71303d4d1e711529beebbc9710fd0c7cf0788611f79053ff58d2927323bd233d27af7f1ccce661e012dbf30c7bc0efdc27d43f22ed4f39d79ef2344597a4ec40bc75d279dabf52bede186abcdcaa18f9fd9f13c099ac0eaf56feec07b7f5cf97d9f675693cc7be45f6e9d32bfd6fc8edef9a05d6a426ef9d8ab4cac39fd6f6f05e6db7137dfb9d3bfa9074b01f5877a1ae6b89b3e02c864c5f863b58ce91a7fc5265dc1d9f92aa07f91ec20fbf6db9d7d222c59cd60e797f45ef21693fb4ca60cc17fa9dbde4d17b41c589ae8399b4269afc6e6d3e923f9bf1ccc67dc0efaf1abf01700bbf2ffabbf15d8e7348ed07d2ef6d3c082ad70b707624c2cfafd834ac3e2fdc7f3bece3a44c8bd4126db0988a2affe4fe6f41e67e75b7d2fb51f06a78749dd5b323f9a2b60ddc3c8b494c4af499483ec0c3a48c2ec9d6cb433d536d0e8875356c9d7abd311887cf39c36b791981544f4ce2327a5ff4af359c843a8f2c77c293e64a1d2fc4a6e45c70664b525bf42e9f113a96464eb4bc2f5eef1ac6f406c72c1838fb60e064af151fefdfc466795d98c8d9b1798ccf09bbb3bb33381a4e4b7f69db3f485be4dfec7c43bcf6f3a4b44d6d853ae65c93659b3c87fcbbd675934a637fdb9834565c1b6fed9b5ccf66b875941167d2ae6713dba8fff73b1d3fb467cfee60c7527f5a9b0e40db80fc8907feb653148c77519377ce4cfd94e24ecc2c25b6abee692c0624edbd43144cb116a3c8adca261b7308354d30af94dca15552165b161b66ed8dbbd3ba2e4e3972bd1ef569f318a6635be768609e184f4d0da7097ca0a41fb4ff1c4faefabe651f33f38f6b59ec7ba43f5beeafb65a63bb38578b5c0bc9ff07f3d6bc2fbcc74fc5c7528a1d0d2cf6cec1191df9f82117b3abfdc9623eb59c31d99683181b9e23b0ff9ad87b092b27e578edc360f69eea3d991708cf6e3b968ff6d375c26036a6351bf284c8d5c1e3b6da3847444e0bca1dacb306ed718e1836062abf1a75f29d01c34fba8b28308fa18ff96e4e40fb34ccf3442b34ca6723f895e8fcd276116328f627add1087ba6e68fe118bac677db7072f5efbc2f1a63aaf3aa10bbf18efc8bd23ad5e6e8312f94823fddc515391fde15f9ff9f7629e4ab8c0bc7b63618a7bd5da04ea09d1709f8aed2829eab3be826f62a9b7be6d8a9e14f9d01df073191c90160fb3b0599f357b61f2cac7129e76ed031d7f19b35dc5f030f53f30fd3f65fa86c1358041e479f54e60a70fca3f49294a73be0696d888d810e1b76e719917744de606c3e97ce31cd21296e9af4cdfd1af2c07bc62be5d008ec1ef70107a379db37015f1cfa57e4aff56f47621345b4f6ab339c2d578302be037db0d1bea3711f9127625d376a3f6689b3d9329b2a0b754b0bf52c7bb557bcdf93ea99d5baecc6ddf1df426eaeb8fd58ab650c790c69691d621bb89da09d1a9ebe4b6d5d8c5d439d70d45b82817320fd7f5ff06704f66df37c21bfd19a7a1ad4beb3c7851afbbe66e18eecc7de25b573a85b00381de0c11b432da275303f4f36b43d2b2d241d4fc2dd40cd00723716a13f87b8695c42ddff735499fb2818431dd2b8e2dca664dd8a30981d9003fe9963e715fcf5e289c8debde3a7c7581fe780f7aefaa43f5f723546778a9591384556aca61b699bde77be6e2e898d88faa8b78e82f125b4b43dd8b22ffbcb44f73e637f785a23373dd153c979cae341ef929409e5f5d0aad9a77399554fd74935bb47fef494e8d629a23ade47e95531e7ee005b234fcae20eb112b2bf74af8837a696eacf226e0c716217ea17c43ee4dcd7ef5f88cf93e7855fec7f07cf2ab19588ac6be2c5209646f65991508c4bdc75f7911497c13ad8c6298131fe63ae56a9be1e8fc1abf325b063c8d3f45f89e7eda98e61401d3dd021aafe2e5c243f9c9721e3d1627adccf49e9dd44bcf7faadb8dec377711ebfe45a55de1d30fe91619333e4d1f7e83bcc66c2ffde7eff9bc35ebedc5cb36569bdfd4eec320ab8bd7f6473dbe243153c904b8def2b22d75f15fb8a3f07dc78b8173147499ec3afe39fde8dc53dd18e1e5f62dc13754c5d15eb8656c3c10d52bf38a6838e542f9ad6ce2cbd73a87bf7099d03685be21fa4df39332e337a17b6f791bdf7a26006a13f6df89ca4342e449f1138ba9996fa631b39cc9a78a0a4eb76c22df2a0d4c6378c0217ce48b41b17201b82f181f2b564bc8f7a9fe9f1e8af25cfae14fb87eb8cf2b8de17fd1d3b27c8c7600ab90fb5b92dfedf93126a1b407d42f8cde6ed7fbbbfcc360b070af6af4c4aaf58d2df90e350edbf9aabcdeea8d6feb3f583771c9fdf6760f753bd537eaeb5efb49eef25197947329f73dd38c5be715e145057558bfcde1d7d916673bfd4d6828dd955f367abc8f766725f71ccadf72f39673047bc8dbbb0639de1b8b3f66fdac42f048fb3ac130553a53ff39d5792dfc09fdfecdb1fec5c88e79a185b8c6928678fe392558c27da73a99d635d4ea91e39dce914cfe400f73a95f3b6798c75374ff43ce37c8223750c0cb3bc08668314ea7902b786f877c5ff7d5e4bcfbca93a5693274dcf0bc89d019d97635350ef5d981bd6e6bfc0996993cfe9039cd92da775e4e4f8ce9faf3b8ddfe72d5ccbfbc89ffddd8a2dd3c79758bf15a1af722ab3fab5bf18e33fe4601f77a232022e19a83348f7d0eb8b73f8debd58dcf93b98dbe0115df16d48f959dbdaa1fde331099429525fc879a398ef95681f6c69592e53dfd003ff9168ef53b9038661e0e65e5914691bce5373f3d4b6fcb5ef75e55c86a56f5ddbee0df277f9b915398b7ed17a67041d8ee190b1a3505fba0dc31e0573f9b920f2adbf1ff5c3d3bd7cad75f264d0e0556798d7875cea2ec551cbe3486d631977bd2a6ce32fec185adc995dd260fca9e251f759c8f3406702dfac830d7dc7fad38fe55cec5bd7568cbb6f5d8345c2fb2670c02dcf32bb507a3e616be2b5e1e1d99a78e998e373ccbb98b3fecee7fe0eb256aefc5c97ad495b5ff89a709c3dbdeb6d4b0bbde810f15c04e51b627f76547cbe87752135f0add07b8fcc19d4d8d63da8b50d352b466911faa7531898aa2e658bbd3def224647e433b897956e74927256bc0ec573d2fe23edbda4b651b1dc05c435f17db227f3203d7f4d4ae3b40e66c597df12b82659f72ad2e10cf13918f7037d48ecb99c9c0de97918efec57fd1367a4c9b7e9c2fcd1fafd23919f41f30b2e72fd8bffb57903d417259d77e57c4b3e2a5be674c09ad496162e4c9dac3970c23ddc5747fa1bf87ac7eea27f9b2e105bcecf19f5bb2f9193e9afa4ea3f3b2f21d9ffe05b94f717eaa5699142ce01de412e3f1f09c522e35d22eea6e1e175b1054c4fed2c017f383bf7af43b2d6a03bb239a1edc11e404c103dbbc021ce7dc5f99ceddd5afff8df210e4db18bac2faa9cd9663f471cefb75fe99ed63656f2f757e4ce6532471d83c5f6761f754eba96f4aee577026d439147af22762cef89b2a5f6473d96c77392ea7b48c492552c239cf10dbdf3a02603d423e0b953f06d1e33831ac0648f77427c4fcd071ad4709275f901b20174465926c0d9078cf720d9c9be73ca9928cb935abc6fd65d537e42f55b0d9ce327d6eb782047ef7b194fc39f6167afd94e274f5439f743b2e789bc15b93752ee3bd1f1f85e5b3d7c9fcbdf87df6fca59f9fdbb942bd3f87eca64e9e3f795bdf8156fb382f3a17a028b537f2b3f909ca7bba2e3297bf6713e0e3b8b6a3e0ed321680d81b65a302c8fa4c9dffceff2fcee98b7786bd53de86fe9f8fe5bb5b83e63a8b9579450cf97d5cc62fe111bf4a343ec1798e30bb5f03997879a470bb898e2f34bee64ceb33c3f4f07826719ea8cfae925d96db3a56d9da34eab6f94dd8f2be1bf643e5162e71d5b6bd1400d4fdbcbe39d96adc4dfb18681df6fad4fe68c985fe9cae25ecc6f9771dbccf69e428845356d1ee6837ab55ab8e8bf5b6b8af3d83fac3385be59af35e62bbdff182b24f02b528ee020bdb3fc58e5ae69ec7dd12eb97bd433237e7b27771f9d0fb8237e9d4b23fafed2a8b722f329f33a1f0cb3190cc6fdb0b436917fbd243ba869748a16c63ef26f57e008d2bd7bbc305adb0806ce7770583f7f5d9f65bb8f41472ace4bdb3bd77913e26a5bcf8750b144f6338f63310c11c4b184ec6ced3fd672e91ce2ed8dd733a3f735e41c722ccfceace2ae7bc1fac752ee6dd5032e8c57fbf930d9cd8067e3f5253b3a038df36ae05df9c4fbb7147136e44dadea77f736c3bc82e773a81b67329ed487fbf90c39848fda2536dd00fdd3e47d5a8785d857508385dfa354f79b94b0fe7b96934663e167ea6b4b9cad9443d1b96e30ee6e7cbcbe3cfff0fce279b128cee920fbe3ed337f9e2ea3e7e9dd3990dfe6fa2d8f03b38806db3fe8da6e270c37673f1de47a29729ea8a8fd935f2603f3b4f67bd3c87f92f0c7bfacddc374a380e52eaf64bc8976bbc4dd59f13a62facd358b82fc331e79dbc89fd7f27fd9334a0d2851e7a5abc97b85e13d2086c36a9ba01f9fb683f973e4f777957f3fbf535b8ae1c8905f43f77a938129e19122a2d3ed6bbc1bf45dccbd933937d68ba3c2f503582b7267531b11f26a15ce15cabb24e6e3bcf67bdb28c8dfa30dc553bd3c916f1f281fdd2156b8c0559c80fc2d051b21eaa008794a71157c9de5f8aab87b788d868862b1695d42cca75d983b72d7fe4b5cffe51bb2ac817da758c916bc2df261c31947bbad899b2767ca16ffdd82b5ff13385f569d22f69fa1c607727da655e45b9f88adef315d478bb5e8bc2abdb25e2329b50d3b2ec645b4c9abc80f9b7d1d58e4ef8849e7f71b799ee15364ae3df08f93dfd45a2b6db94cf05c0f6a9dc3785fb81f57c9cfa1be1c31f732361ff15a8bc88feeafa4bded10f2b2a2ad53c3610dd1a741e7803eab9cab106bec5cdcb2b788fc704ff4c63997fbfcae50f8a6eab98decac848b6d162ef2463e15ca65e7e0d84e23078fe9deb29e49b9dda83f40f251036ea7b78bc96f12a717e933cbb74900c786f7783a4a2f3c7e608d8b68a7e6828736d1df664ff4bb78e70ccc411ab81aadbbb3c03dd52be3eeb81b06e32dcce300f1aee0bb20ffbd003d8ae95519cd35d51ceb544875e1f374e4e6a19e937503799006b342e27223f3ffbcb0dcd97238eea423f7128bdca2ffbc0eb6cdf6292629b2705fb273c1ffb69bc27aaadf0e0f4a5eacccddf572dbb0b193f7de831362fe7c97f4d97046c7f364d3c3b177b5cb3b9dc79f0b86bb30b3d052fd56345e51457e643ac3a152b39ed8d771e069340e48bed1f6dee037de937115e4ddbb92f3229f7fa8ef89b847b2a64995431f3177301ab4c4be3b89eecd22bf7379fd8a9397e5537e7146d9de9f0ccc18ce1be60296f34293e3e26d7217fb20d6e45ee75546aed6f490daf9250d5c27d66f106ffb9dda815407e13ac3c2368e5130a3f502f9b70e2d3a2bc5d6135dc9dc84feb88807469502c754a798e879118fcc22d94d2f51303b4df4963a87de7543e680e70e7ca33edf6feaedbfaeb558ef83ddbbc45bf1dcaa4bf688b5fdcdef9e63bd27e9f9b32bf06b59f8ad5fe530055df73207ddd73bc1fb2ba6af5b55d29233dcbe86d33df93bad65d8b67ef2efdfa84999e798034beeecf63942b955cf07917814fef1de696be3db352d1f9c13361e49efe5b601e350617324d90fede3c1e744bdb05fda84ebd6da93644e6b7d129845ce4fe5509b478ec9337baaad2e1f6046791c2d87bda08ca9661341df36622d7fb95ff587fb81730cfca3da86237a6e685d423167ab6c4d6c6adb3a87faea1c58b7f3c27fcae2ee78cbb08f61b9caa4e78f1433cb3955a8ad7477ec4e27e942ed773d5a98b9639dd83c9f590da9b83b4ec958181fc7a4b86ed43cc087b59436ebc0ed827f7f00ff4df48eedc407ffd98e61b36adc3b10cfa73857255797da1e3919bb635b6786c98af4428ffc27a1cf0f1ed5a8e15cda34f623fefb716d88b6ba3673c987761218b35fec1362cf436db5dd748fffc63c7835df14f0de8e37ec4c9da1fbbea4b1a055271ad1ff3e11f941d76bbb06acc218fac4ef8e8179043ec8d1f42838c36717c484f78ac897fb7fcc44df487fcc03d1b750e61b25f0614bf616e2baea7616d589791be0d3d042bf805a144276f0f93ecb7341c75fcb91ef69c06550327cab27726e2da2fb1688a996fd09fcfb14b387b6def3cf413f7716bfd126b3e90661365d866d39d04437f1128849a04e25e740137dcb0b4ce005457d55cdd1fba8e07d2b2a238839b7db754afd262db5adcff5c0cc558e79771f06f30c383b836996927b0372a7a57c7c72b7959d4b0a7e9c567db58c3726af1d837267dc893766776d7b679a572df100ccb3d4ef9de22e709bb7e9a2058ecbbdff4e0e36cc995e1c63cb3bc73ed15be6fba87caad978c6d963df1e501bc0f3ae916d69a82386f00ed539e539de3fe61569b7fb6ab93642d7d57b1e9bcf4939eb243b387b4aad5459e70dda72444747182fec9b91c8d14c80bb61fe05dfc110ed3fbaee6b880b774e91ef1ec8fcc7a36d96b27dc7f3b760fde0dea1f176350641fd220abe0af62c8d1d782d382da2db4b75b5bee137699c1711f754f24ae937251b0ffe5db3b3e9bba41d690d328ec56dd4a010cfffc2c77214df348d3a3f482d4717ec13d88bb6b0c3d9f95fc21e26eba09efd967d2ee7e8923683b57f3b8a7d4e65018ba1ecc697b43b837a006bbf07fe3ac0660c8b3360fb4b4f73864427bc5d9212eaadbcac21b6b93a3ad62c8f4aab5a2f28fe60083cc965dccd288f3dde73746f6c23ff4674851ce23b2fd36ae28f0fe9c0849a88e40e811c063f056e32568734b66fbdc986e6cf903d13cc58cd557826d23d728ef5281897b16d74e9b7a8acf1eec8b1ef16b16df592ca3ca26f15f09379bce9579397a136abaedadbcbf438fb9c771dbb737706791e9646271df4abd9e0e9c9b1ddfc2398d218e49ec740b1ed82c934d0b531776a5ce06fde53e4cf3ab89ec529f6c9dc12d972eb291895517408970a3fc116ee5bdbb8468143d6f50759c370c1723a9e4e9e37bd907b34a98c20f29dcbdc33c7930ee5bcd08ccad38d6aad7b95abdf2e61691d57faec92d8ab4b0231d7e214f94647f253329fdf6ceee53fdda1379d7bc5cfa5073ee65918b8fbc9cebca455564d06fdfb74b1cd2694e7ae16f3ba4781fbb226f770e96df97744bd2522538fc0713410f3350fdc59bdc654647bc7302866c8f5486c6d8fd81a663a24eba301060530c8dd84cb4a969fd3728e71efad3a77e7e56a38c38ee95bc6d05ddd4cdf33662bf041ce8ad462df81bbe2c8f6cd32981e9c977da6cc9d9217a6ca7789cfbd4887b33dd15b22df5db1f1beb29a192017ae197cab3646cea1b3b866cb9515069a6b2d875614689d258fdfb5fbb673aa1755b17e831a791c4b877579c91ad1bd3bcc523e1e535bdb9606754c588e6e79eb39f60c725940c70b680e8e6d405e0ed779db7483ea295b965e571a179cdfb89c15f180e2914aef1adbd667b4308b0fa8f904b958a42d856fef1b7ec73f61ae07d72cd46f05d93f3f174cde8b35e53857e163dc47feed18038e2abfa45a5ec4f6ed12f0779137e995e261659cac6b17f7c4067946db30f388c8ac4dbf43fa4274c788e933d0b76c4f7d9df7b56d7417b6778cede73dc4c017dba3f3b2ba4e5ffa3c5745e270e5bec677db3da41b8a17d0a0f698110cc666323213e7b3c79f7306e69f6b6c3f7baffacfeb97e97fe8f79e277a767fdf70ee5883fb455fae97c82e74e6971473c5fc92544e7c57f7e2fb2aabe95cc55ddc65dcef0a7b26f2c91a1d214f07e206c134c39cd4d9252ea30efaa7897e9516c43ea3fa38eca554f7363457355bacdc09cb0dc56fcae74dd6033259b7abdd93df38df7836aa0772ee1c76894d2ed5761c690d4e6eea4b3dc5d5e3efd19a07f0ad7a2c86eef787fa25fe3e7e207b442ca5ae6f728e78e95b44febda2ece6f2b42d875c96ddc46e4a4be3100deabc11fd4c92afd9fba27ffd559d19c797f74e26c77ee53e7cc6b697279bacce9757efdb33b9db6af75d235f9aec45b7342ae0f70fa0f6c5211d6d8f605736ee7d223b677b72362603f3af34986978f6894c267777278fa57b6f522898af077b87ecd7afefa65add7ecc1bacd718019e923ca7fcd1bc2de5ce1c10dbedaadead8bfedf0fbf25e3c48a86fd23afc93d0ae63f702e24ec20ddd36f1bba66bc0d16dfd58e8e754a253f60dde6457d026408604f3fd3c1033d5bba2bbd11c642887d4b733deb362ee0b2789cd1e6f2e9ec0c2987a27f3b7e2ccc6314cce0bec4fc38f4a5816e49bfc5382a881ecbef3fbce7b85d8bbe14771f05db2cb28df3b83bcf929d77766cab4c217f6798c95c7bb8cf98beef323ce65f8e3d26f738face77de1173db6779a27b776794428eb3b0f566f09da8f4f2442fd0a7379a75423d83fa1fe1c214b9127e9f712f76503ed570678aee21f3ffe0b7925adc5dec6df390687c6e33c4afad245e6c694de4d818b99346cc1fc075801831d28889468c32f02a907db24c614fe788bda03628e261602e84dd45638bb29c91f50ff29beb4725e6976607ccbb39f1bb372a3d2dd4736233e7af03c67b9a01ae19fa0478ac27893b5ac826b91faf03ce79f397cc6911052ee41f00be187261868737b52d71a78fb4039d23838fd936b3dff5a3c873a1dee562ede83c83cf84ea34b21daeacb3fcec37fc28273627924e5fbf4fff9bbe99b6ef012e9be7343df4cb28314f79cc429ebf705986d81cdbba7f810d6bf2a6d09c2a25ffb82cce118d434c807fc3393a1207543072650e984bb4c1f815e3947a15cf2529fa4bb751607542ffbaa7d821d2a682b5227f7fc3778c96daa7b24dc8db8a4ae332012e7e87f35150dd468bbba4cf37e0794dedce95b68d7776695c288e8cbecbe718709bd40e657d2f63fd99e1212bccb9cd3f53dba8de7de05a6fe0e3b0aed9384f36cddf6af302edd0be0cc13690e604c607b825880def191f36e987f2775c438d8d8f62ece1d955e9eddc20bf36dadd09ac32d9d3529f25fc20e71f49528b7274d8148b4f9e67397fb0dff119d6875732f79f1d3277bc0697da7f8a071b487382ef77d776718c16fd3d796fb2d0300fc2f66ea96f1d5fede812774ec7c8efa5b8f6e3983c1750ae33d60ee87bf4df42bfbe150c7b38590e799f698cbf7d8c16d131d43ee233b0f6f775706079f6642f9d13bdf8112d1a6392e6de3a26fa4a9e2f43fa373d57a49f70aec8fcf1bdcdda23fb1972836deffca67e0771a7e477e059e3b1492d0efa389e417ae1f5b7d47553daa6326003677fe49e580e95fc2ce3938a83be7c864a2957536b5b0fd64fc787fdb60f8329f4598de3a28dfccb35851cd5d5f7d692e601fd6f5d4bff6ea6ffffbd9e6e91045e1e0f72723ee3a9a71da94cd945c19cad71630e7e31a7498af640cbbf5be4b678e6919ca5352558eeb1babef46ea01cecde21decd9f188680fcf62acf038c0d72979b79d0f09b98636e47b5cb7d9a9fdcb237612e9f0cbc0bc6bdd4f6a6b4f6e241bac3cee1aed0a2d56fca5476bf0c8b73fa92c16f8d3b46f96dfb68af8bf893ed518c76ff34157365505f0fdf2b142322730060fe299cc5da1e419c3df481deb99b8fc02d96adf74a6d8eeae74dcf0fc4a6c273a99d30474fdc29624ef9bdf25f1bb383387915c70ae37dc0b3c6c78ff796f3d2ffb3295fb0cdb58ff77a4306e07e2332166bafa23e73a43ad201f599e3df3006e413919f4579419f55758896734af321e43e913579a531eeda1d0e6720585ce1195f9f218ee39fdc01a21631d46ca1678feb1d744dc93952ef09698da46f92f5007e1c9005b03fe09ce76c8f315c605bcc54c6463ec0432bb136610bb16793f3a4abf830772d7111b041433f2a5668e3eea9adfb9bbed15a1cd23a018f56e41daf645d6ae3a971c2f68a8f914bed60c9266235c31bb62795d59f4d7c26f6dd23f7c51e6b41503fb914b3f075792c57e99d4efaeac9f54f5bf066e87bcfa392daedcb63ddf793a7817b11b16e3371364fe7890ef5b2eec0a7fdbd5ca25d14b8833098152be0aca618fc11f23622f6a785eb5c7a76b29b5d63bbd05e07c9695c15f1d412352226d57326efb77530031c8ea86720f9aaaaa78bc06079ef14e3f1adfec75097bc3847daecb806ecc918ed60fe9d2bf831a380fcded326be7b4874f0559db0764687fc1d78f752e030e8d0b976ef13bd779904fcef7a188cef7026cad931f5dd624539b8158c9d5d9c43fdd6896c6f49e412e3bc6af303b39873e4cd3e43c655c4659592e3c1eacd7e824f54e2f1070ee6d2e8c4a57b88cbf425b68b22deb90bf4d1287e883bf4c7cba43a5db45d18871791ef4f690cc2dd16e172b5fac1314fb67989cae81e056eb0f65d6d6df765df961a931ea5fb35198ffdd51ab999c0532958fd32b68d3c1d3c31ae469a9bea52be4a368e3cc37c50f6df45c662cfa2cfbd4bbcd16ee0fff39fb27530c758977fdb621d5b880972fc15fae82cac85e5032f28faf4ec6b96d8c553e45fc99ac15a439c462fb6a99d01ae7c6d7b8748cf995ffb32a9b85fabb6eff342d49a80fcff87fb897c037cfae8e363f3ef447eb15b63febbc08e954619ed66453acc0ba81df0f2651bb886b5bd14eb5109715e1cd79f7c1e592cc07eceb0063070ed9f9211ad1b6b17fada770bc71ef79c973ee7814bf5e21e2dcc6eb43021a72b1c165047651db8bd70005808ba766ccefaf8bd6124e3b22ececb10ef67e09c343731b927290e85ecbda45c65e18b99c9fda59cc03827567a8846e46e7dcaa603191bc8e203b0ff439a8b4deee62e9d9f8b536f63747b765e86cadcfc94fb8f3a4c73ad36f2d9c7f79c011bff96d6c19f699392ae9ffc6db6a603d04de8d9a5dfa379ea647d5a6ace88381aae29e4c087ddf999eddd095f838c73d2b0bdfcb669e9d30865952fb854b4b8db17eddac6d5193c7399227850c66a9b3bfc6fe9d950e206ba401ecb72cfd683acb946ee0ad15fc10714db5e99bef0678f911fb5b73b12e38777e4f1f0d88cd9137d742f89fc8c27e51ea9b8a7afee22f99ebe7c25afd9dd0dfba3c1ad72cb3f10ab50219e81e8e3965cd3858cff486b2823672be00ed8fe058ce699c8d5a56df5e2aea751be9553e45b44861f52e043f6eef126d59c919baf8197bea7c5959987fa0c74b11a1ffbf9a11ea3d4d820b619ed7fe37e56b12fa17e3b1079b6e2771d79774cbe0dd8acb9f2bb244be9bde5017704c5594a73eb8c66878fd2bbabb5aab19e39b91b64eef9c89f9ff9391d46870fe04dcfb57464dedf36cf97482fb4f5c8db00f675615ce3ae798d82f15f49c5feed9c42dda8a2857148bab34e144c2fd3a5534d594c16efe3eeb765303ebfffb6dc9770c44bdfd2d6835e1e024e5a9e3b2ee34ece0865dbeba2ff4c740325fe4ee5c47b6d3e273b7ca7b5a6deb093a776760efdf1fdd556cec299c91667a07139d3f65dfedc8b56db133d360f0ff36045cc23fbd136b74b38fbca796fcea745cebee0d282b97ad9b3f9689395b45f2eda01dfcfdfd8e17ddc5a2f09f9cee16f4afe740bde8ae2dfeef5ba08988b8e752a543fba833e39896f8cb6d1d1764d0c06d6967225fcfa3bad1735291bbfb5e0455adeaf9a39c09392c5e25ce460025e3d56cf8adc330fc659ab6df24046b3796ec864563b4db29f6ab5ae8bbba4c3d11a270adef63dd57bbc8e18af4f4fdb6538f889c8cdacc7ccb0f616f27463ac5c0fb365373d4b36d3f3cf41fb73fc9917a9b6855ccbaaa987fe8b31e4abe5eac69fabe37a283609721f42bff709bea3a1d195f25229a77bdb73cdb6a99fbcce2fb20f7db257815f74df92f7c1f8bff6614064fd73b6d2f39c8c63551a178ca9d7b82f2ca54de6b396393e77ed5828e1fb9165219c9bdab8df17ade7fdacf4eda53dff5db2912f517dad682e5dcb73cbb56d6de36eba8875436bcb13fda8cc4322ead41dc95ec77c62f56f4a1f891e54d5b0df2dcf885c47e73cd1c59e5deae179bd9b7d2fef4eca557a1d313de69a85e01f9dab7e24e09b75dfe08cc0dd01cf9cb17ebb714987824be0c16f1c87e796459574c9d8257b073967cb30986991c41dcbb9652d45ee02d73ab97bd47c25ec77bb1c67312288f1a39d09380a886d305e3ce0724f8319e8c4589302f70172e03fb17ed2b54f32a8d139e27999305f724d8da43637eb60a6ec9b57695e5f176d355c7b90fb45f404f0df733d049f89ece73a5f19bddb20c788d8c17caec8b743bf5320475f8ef5491b755d154c038fa9c8f533d0ce72edd836ba6e593c2d7d2f064cd2a0735a0733c0c707cb7d16975e1181ad4fda83fae0dd30d8b6d53dc05a0b45bdf6091f3bd68cddd13d4ae793d6af7822ba4bdc9d6935cc9a8877c03372ed55906323d85f23a857825cc78caf14f202185f6dafa107497eef6fe55e92730073be027c6d9b8e2eda167549ff70243d9cf27a436d3fe4b94976af8b9e166bb74baa7bd51c6cf80c30e550f3f4a5896f93ef1c557ea46087a32ed0fb2be97c2f07fa419db2e28b9a9f8a8c96e6e1fccbb65af07ab5796de81ed26fbf21138bbb87354944ed52bb59cf56f8cb8fbb149e5f418dfcd49ed3ffcf76c1a247e6b4f8181ae52bd85b620de5365f17fdff30ac6a23ef47d18ffe5b729ff445e886ed3e34d9a7a29e75f0af42bd0bf71096b76212d0f52db41f8e6ddd13d2eec2dcc4badbc3b3641d531d7265d49a2f0abf4bb65f07b3f6397f7996f3669b1c352f5887613c8c8e7137b5d7413e8bbc13f0624cfc0eb1150f7199a6787f483e5ea1331f547db8b715b553b7d273aeaa3f35f56090e358e752703cd07a8ad26fe28ca93519dbd6a4d18ec807157a84b4f6ff27f48654f83de8ddde22d31067f585eca37ae03eb53bc707f5148b9a2edcaccf34c8882cd73097abc0fcc3c03b84faa94836fd3dd6f9b91549778af1d605d6c57e5d88bb28d1214ff996fa85467e8ff50ef85c53f04f50ee1af0158d3b887367f7ccef9c0dc67b09fec5ad5bde2ea9161d3e869dc2ef9a55dced9f62bfb827443e773847a624ff693e7ae96d57faed427d9664ecf7d4f6aec46e2163a1b59d51dfaecce152d304f695eb78b47ef168768cbb2ee027415f66e392ce08d4a4f17bb88618c3dda3ff06f2bc859e8c757ba0fe1db7e1ebbacee3330df737bfbb065807939ce9dafea51cd86e1159bfb1063ee423a76f1bb31e2b435e4894cb6cce1f9d3165ef42ecabe45c414c276bcbc3fe5dfbf85fde6fca771b355c1bf77eb30eec435952b35d446c1b6593b0375746d9369e75305b21578a68431e53cbef8fc635479d96da230d5d46914da28d3ac695ccff68dc21fd557db92df7a088697f1177e267729f8edc6b72df5f263a709a7442c0816a97c436a07ef57a37e5ff9ef8b4967330bba7be779fdcb3fb4c7038b7d44217e768b2139c00ac466d54164f8f6d6a56ebbeddc727dfb334d642e77a8efa2ec4fffadce7b7a2f201b96e692d141bfd6921ad1349fb23da1e4d8f2296696d80533b7025ee0a97d54a9338f8381706b157811f3e2c6f1776f66a7e0c3a6fc8ef00fe6d78f6f8d03fbe0e66f63a181751693c21f6cbd2d77e0adc2c939d778f82b119e9302f0d9d7b529233ec3d2df5703fd679bef20ef8b939ce54c6ad17d62fbe21f4c641ba825aa57e4f237724fa16b55bad0e2cb6093895c63995c72ce722812f87f2b9f72683fe6d4a7328a7cb61db9a096e10c0059b9bd83688cd0c32341ea5f94730cda260063c60eb60b627ef87bb2dbd7b80af1d741dd5ffc9d7fc05eb35ff7acf3779be9536ce896ddcd7d45ea73a46b90ef222aad7ae947c8464bf0aaec84ecd078af5a459eece92fa8d7fa107f1fac7026fd65c1b8ee11f723e8f92d814eb917b8a07c9d119a4a0478f3b9acc7759d327f35adfb607e7e52ac7646b35b11fcd31cb4da0fe0816fb41bc00f91f70fc4441be0f03ef0eb55a16e6260de6646fe85130bed318d109ee73725efd0e398f2fab4ea3b62e6002d83a92ef84dd7111821c183ed86b3d79ef4a32d62dd2d23b427ef1a6778abb87436cdff2496954516514f1a6e3ad2a83e8f4f749272dc28d41fa03fc5dfc1b1d837e6376886ce00c2b3f7cf8bbb6b6bd9f61dbb34dbef97b52f534b9b6398d059c63bd578c2bf0337fe21e95ebc7af1e3ec7bfcb782ebb26917f1a7d261e77957ae964bf00c719d62226eb93a6b27c0abbb3fb649792f979011f8c4ef6dc10718b94872cd104e702f8f39aef8873e5dfb4287076e8272dee6e5954911f5d3ed0f7046388cae2083967209f608ed87bb571abbe28292756d997e29cf2fab54aae66f39caaefd7fc48c22ff4a8062cbf33e9fd374c0b220fe99d748cbbb322e9ce33d07d02c43d0a19d42b22598f173c3690a3077a9defeea205f2f327506706b89078de1cf52f48ed8fefb4fef467521af7a4323749697413e0ad1877a22e8d1f7f23170bf4c8da5ddee6ef401f308f1751d9c7febbe6a7115c3835bd8a73f757a9efbdd7f48b5fc8ce465b80f1493a2ef09949fa585d6f39f01a1c4d5d775fd7635e17bd6bdc9d1d681e173d73b4765825df1f66fd3b4caeae929d5734e7b4deff6d5d0743bf6ded3d9a6b5497f7cd3152dd8fde1b603fd56defe65819e6787c8946dbdd7f739e7e2b962aeee1c69cb27128b25a1b1f637df6b7ba4f25ffcdfdb762c433a223ce03a243113ba23307fe087a3fcbb8cc167f2691bf9784ddd388a551fd7e35dce7fba7964dc1b79b3e8dabfe0f6790f6c62dfda5b990f907393334ee1ffbd693e297c53bfdb4f69f04a74ad939c4aa0f87621c8d0ed1ed04f70a623f9ab126f24dc0909dc8734bdf7a42aef3279045b16f69eb21d412acf992b08fdff6218dc02e3ac49b9cb47d64b8b309d49cca5ab8aa49fbf92c0cb27dec17677c8ef4af38bfd6de7de42b76a17e4fbe5cfb6eb114fc25357b38aaa260b65fe9c5365a714cf9b77de29467761efa2ee06a78ddd891994736609318bf7a738c02c39e27ddd921d29ff61f5ded8867b2ad5fd9613230af8d6ffd1e46c24e4aefbeb640ef617ddbb7ec75815bb08debdba67f6d62d0a4bf4958b3a9c07b00868c3c27736b7f2b8612e457726f7ab6e184c10ceb8e897547cc7fb3cff0f7c96e5c4423ef335aa87c186bdbbaaf211fec0ab9a72a4e86fe26f1c52bbce08a7e92e7894ef6665f700c8c4e46db3ae03d0af837a2f76871b7bf6b39d31c9747647a581a5a6a1b27e4f6aa9f6b865deaefe8bfdbda43ecde0b91f5b722dab53e83f87778c6eaa4f6736bbfeab876acbb7b22e338f23507fe64e80be4df463b376d69eb9eda5695e23cd07fabf8746a1f9e237ca688cbd67e7fc676714d6ca297d3bb15ea8df477a17e3b2423939c39e62fbab7cd615a1645dac56f92f7a4ff6efb1ec3a2e19c531f4efbda889a3f30af5db9067ecb5849fb6591c3fe2ca47b03c77379ddcc7e061dd35b6dbd9f41b5bf406d164f79ee9c94de36f56785ca899de7a13e3d3abfc84108fdd92760efca599e0ef258befb9cc191c8c8533070b2d78aaddd35fbe299222e5dc6b3213837ea7354df4b83e7bf9c8ef17365790bd7337ebe6e8c38c0da619f6130dfb78c99b40d7b37586cffc7c64fe4aca41790f125cea693389bfedf0ed4961d7ffd0cd9c716e5135f5c33bfa31dde2ab0634fb1ee1ea2b200bebcd4cef374609e23dfdb529ecb22f42917ecd07d5fd630267846c06f55451e3e8b3283d86fe36205dcbc6d7b4d3c9b3c7a867285601b7006918faa807777b4ffd734181713ff7689f4e213ea3edb5077aa4a3a5ff475d5c9516f117d5dfac4ce6deb8778367ef80cf615db90faba8577778db9de28dc93640c449fc57abda3b45a072efd37fc0e719457dba8f86f34de12820fdc3a45417a49ca23e31b39d4f0bb88c1a5e3f4bae3436aaf94b1d3bfb5c99b6e52161ad8b18394fefbf1f895b6fd488b8271f0f81db1562bb8c33ce08df075653f1de95e39aafbe19aa9eb06f523e1ffe97741af9e0ccc4de44797a4f4683fae598a7d3caa7df6d29a2eda9a47a5e86b1ba393dac531a98cd6671fc654284e1b71af720ce3e912d9c6691278dadabfdd511f54f0d56df1088947f8abb604d6ea61bfeab69f3ad66dac6ba734700ff1687a697bfe61bb645db6d6d33a98d9a47fdf9ccfafeca2b67980f30439a872fe5c978ebfcbf4fdb6d837d6c858d9d61671febcfe9d329f6cec8f74ecd6f1b7e88d0fc64cce461e97ee2ad6b83ef72016063ad491e9bdc84151d78baea02793df982ea7c6cb9e2e91dfebc4c1f41fc6dbeafbab2d967ffc5e8e9ecdbe6b9ce3aad38977de3df2e72756c72d91ea18a7b6d198f7965a3e5fd83fc911ef4b1923cb7f83fa381f8109d8db84ed87ea518d1ffede5eec01c6db9eff49ee592a8fcf90c3027127eebf91efea1fac4f939da4232096d5785d6cb3b78db0b31ab8dc87361fe76ae0ef525feb2ede611dc5da38c877daf6e15eccc5356bd18198cddb82afb6aaa434baaf96a1d45502f96f1998ebbb70251d64065c046391ef807a1ae5d17a5f983fa186cd8ece9725fcb550fb8ddc53f82dac0527d78cb58d2be8b6bba968a7e47f93636479b21b5f524dc1f7d2bef6a4bcc21e3e77977d94e625199950d71ffc6d587b90bddb1827c44fd5e7e57e34ce35c36ecfeb6b30c8d937e47da5d67622b294f94e87442fe9991f76717789bc54db6a7c57f5ab1677af8438ca67e85fc9f862ccbb627697abfafc1b7da57ea817b94dca2f506fbbeaef582e06f557d1fc96e44f2537656035d6ece7e89a3941637edbeaf3b4e7e536ee035a47bcf1f7fc928cc0d77e9fec5ae48c3277781ed43c2835872a0cc655dc4dad769f76e7101780d721f39e93f563bed78f4582f589bb7d728ed1d721ad7fec5b4f50ef0fbe4beee3298ba3f4400e70fb19f2fed0a722f317fbbdad6b1725f28d32790539bfe8e360b6a547792c06c7bafc3bcb36a9af834e903a032d63762cd32992ce09c6162cfaa7e6b7e89a16f81d25e7b9ebe6c9ce1daefd086abcfd5ebbca18f0b996b56be849f44c367deef8bcabc415443c97e65d2d81f3e745cbe8bad7e312644ddbd699eef7ba5fbfc7dae539aae41c4c07fd1f8ffa3f29592e979c0b4bf610e32f65397cc0a55079b6b1406e480f3893216fada4733e78cea61b36b7638dee978bf342f31f89dcd15759d2f52a566310c79d64916d14890ef9d99794ac4379bba4945f91ada3c451fa49fa1ec139350e31e27b78ce2cd1af13bdd846c80d576b037dcf899ab7c7fcd80d7fa6afb33367a6f5f3a4e4b1015753ffa49c718b9d05ad294facd3290ca0befb55dd67b32246de65c3e17976b3c347b9ca2655bf226dd1bdb2c0fedd8ab8d0e86fc747eb24ef3d1ae7807b8de9cdccafcde6f588bef82dcd5b25b232021f96638fabc8b7fe067d6234eb11bbe26360eed77eba8f6d90ff44fe714cbd72ff7454d945e7f3e1fde8ebbd3cf63df07fbe7ea52f806c3e199381f993ca9c2dd11fd77e748882f11d792add58f4c18436595ce9ebf7e66736a7ececc8efc27ad0df7fd1cee141de53c1781e83eeb8883e6b751ba99c22dfa4bf9fe9378e52dc99df41f27371d7043d2cb92b7a177f766c2b3a8eb8c74a9123247da34d2ffac9bf51b985946366bc2f4c3dd68b2d9125e41ef775e0f63c09dc199e9360017a676b3b359c51f3fb4b8d63361bf8dd4fc6dd02be17c480e8e45d88618b7c0f6c9bebfdf5fb97c95d563759c1093464bc743796024fc6efac4def96fa5ef5e1cdc818817fa8fd9ee829b5341dbff14c2b56e1218688e62d25a5f1190533b2bee774d37b5b6aae1568de9b47b98582c1983cb34d7dd4dfb146f4a9d697161c515d67a9e5f5002fad6e1c89fe4cd630d9e4f1b843e7e4734fbe8b6bdbb96ee4dcf738f0eee9c0dc00277a033f0b39b41ae4cb5b33dfd5245ce20662a2ab1838955759e83f617d283ad79381d94d4a628b171af28f58e77a8e22e3fa4df5e218631f285fbb751f57d76cdc857b08fb5d3ded8245efaf582fceaf83241b57dbc3d76b91e572ee18d39324bcdb999f93e6b93ba87c3361f63a32ab589f158077f17bfa64db7b7787de4f77d5f3299f60e2ecc8336e07ede41ed4bcfee76b247c778175dd259529b07a765f5937c79eedd7c0cd62b0bb9bc530205745e02e7e3187753eeecf7a1cbfe5dc95b8de927e55cba100d9d0529bad83395ffeed10972bce7954e30e22f75027b6bdfb577817eae73f877ea778dbf47754dfd9a1ed4a7427c847d9bed17c37faf7ebdab6eed1729f8d75f421d3bf97f1e79ee94c479a53823ce12ffb2ca23ccef4d92a0aacce3a1817c97d9ff955ca380d988e791f77b4238b59268177484aefbef0230b6a578ca63f1cebb84bc87c035e49d4a419773a60ef7f37ffcc2bad6aed5b583becdf7051795a7bad28f47581cd33199815f29a5c3316bb9cc03cb7f8b01efbc07651e0367471959b8bd84a1dd967597ffe51bb6d78fcb6f6d8738fda69cb13f8559bdfcddff9357ebfc527dccca17b946b34ce13dd937dbaed7e5bbdf5d947fdf5c3607c60b9b20fdbb3a438679b3f7874e47895fa7e113e60e0dfc077abffa20cc19a459d186c3ac044803ec76a640227cf208578e3b8ba51fc06d8798dbfb3bd8f32c7d3e28ac90bf01f8be7891ca458db151d37620b850f8be7f6d8bd82eceda40bb5140f0c1b9874bd0de3d2027f8f3fcfd0170b71c3f90af8f5891d71b8c4c49e2a932cd4ad33b91b42bfb763b6a06b998bc90031bdc8ebe5157180df87da3ab07f86bc161b8d5776d7feed4831fb507721863a3fee212d0b5ecb9ed676bb2bb94ab675055cf008f64d01b8c79d79f8b0bd6352f51a391bb82ff839bfcf77c5706539a8b76f544c3f60a7a82ff243ae1131da4a7e4cc527d0a53668979e7bf9b76d3272e86f4fe7c8f6f4b53f2b5630e7b705ecf94ae6917ac09b3242dbf795ff7f0675cc92917320b67b34321957a684afd9b6bcb77df89e8cadf98243fd1406e62aeea05c49aa1ce6635a9bc380fbd85c8649aade54bb5dc24398b48d1efb9b6cbbb0bb6fc16206dc96a27a16fae4e47592ef29be9695e2a3579e97e58afcbcfc77c51f2dfb8859df1906f12efbb6959c02659c0c0329b79b5ed395f519125b07eafbd6fa53b6fd2ebf6f6dc3c044fe03699e42dfcd897d98968add59013fd6b0752cf5dffe543834b03f77e46753cf15b51f411f725e9e1f9e3b66832715c44844eca6b5bdfe4e3acbbbb6765f6dc94ffcb2cf44fbd2fcd07e8f4799186bd57b92d74b3afbf8dc52339c517459fb73c45f827f8dbdeb2aefe27c4fb71f2296719fecb6f29cf7c4bae0733217251917f8fbf8f7b77fd66b47251de8bbd86b659e279ad1a57eae22d9b9bd57c0882af2691f06b348f67d24554b3d8745b6fb582407958bb2d8224765d32f8dbf814c24f7db2fe4a1e4f397f6690baf513bf67bd8c8b563b242b235645e2e17c685b834ea8be3bc7d89fa4dcab7c57dec8394f962837acce221de1af7bdc253c0e453dda66e791771a62df9e2af2c2eb5917d0b9cd7f0413e4e0333aee436d1dc09f0c9adfd29e2b747cd7cc0d01fd33a3bab5db35e169d4b8bf905fbbb449f419dbf058bfbdcd5ba4fc8d5958b75e9ce3e93d238c6d47fad3c3fe2b9ccadbc216db9ba49d74ddf36661977c79f118d07433d57e00aa2bc3950279ad5485e35d702f0c519e92be5bbb03671372a986ee3a26f5bf0f2b1fce58179482dac1ff005cebf2d3752d957891a3334e8d98258c06bed5e031f1ac4ef20ff46c190a1dc1a333eb772bc216756e8d858b3c33b47757f9438d30c7ff0e7b7785bd41a693d6740daafed43a87128ce26c672584c48e5a39339593e16fdbfc8d94a469e19eae07fabf838aafe0d781c58ae64ad5e1bf5b17c316f5fcf79cb6f6c5e303fa4a63b00f737d1b3d4dca2fbda770b1f7c8c343e577d339fbf50eea653730fb9b17caedae63455f863a13f4fce606f3cd037fe705e86d9db86f2d16f441da77a9c35d48d53ec1b67ccf5f0d4da41129e82e39e850cfa21cb1b8e7d96f517985bef0c6793ec495aef4df289b6ed07d9e7f9480f95cf1cd7b51fe140ea639c0cfafb9636c97981e79bbff5623c5388055fdbd6dd5ff4ff7006c915e3e2c96e32307fb2ef8f6dfafde2847bc682ba61e4ae0e897e30bef77764bf8fabe4e85806c3dd6f433887e979b293f3fac85d96ffd2ee607c8fa4fd6030a6798837e086a798dc27c4e88eaf1f836b46ffd6137f2b126743f496eb86f2761e894d36d5e7df7cff9a4da18db6f97b3a702ef766de0f1bff998dff156349e46e38c57a0f7d19c1f4e80cf2e61c7f3a5facdb53e577c18e8fa0062be85edbec5deeb775dd7cb516d3076bf831e8ff4de62a19e5386f8ff6c0a773967950e1ce7cf4adcdf6518cea93e9076c0f534c8f56e31aa4313aaebb6aad581d1eeb919e6bc7e2c871a1da59adc7ac7e65d73cb48ba47858ed994153b7c65a70a05f7ff19e622f48cfa9b695185b2f8f6ceb8a39b35fd8623a9fa3ad648f35ed0be49babc7d5dabf21f78fdaf71c2f017821fecd73dd5e526cd4a6cda5f4f7818d27c50899bdb7fff2bd9afcfeb7312dc415e2f938d0dc076e0371bc55931bac0d0fc66d09263f690eae641b81acdc818e5ac8f52a72696d40cf6acbad867c9dc940e4da907ff3fc9ceacaf36b82450f78846a790857d18f07b9cea347fd56720a858d287187d19ce8434d67018efa58bf15935d9a27e5d3deafd2399da71fce50f0f638c3d97245f600dc1b05ddb326913d790abe7d0bb8eee352aea7195d62fb76013dbb82396ae6fadff7d27d145d92b28377c460acc55d93fd1b6306d6753319988953522c94c7fe1bf2881267f304731e101dddba9d61ce358e6bc53e59d74dc8f68b47fd5b0f6266e20c7b029fb8011ec81cc68563021e9344ef5c90235f59a3fb64605e12e036ef5c90233c2f127d55e73b403f36c6dfc81c214f9cbcef37e636f2c99dcb6423cc7d0d3b23e20c44278ef5def163a1ae19c6c8c95e34ae21d616865a0ac071a9a7e8131a743e63fd46fa8d1c2d419ec781798c162df3db49c1fe421d8abc6b7640af6d608344df68bd5788f1e26f16fd2ead6951f68a0463c4453dde8b7ee93c277319fabd1edd97d2d951c70b3c25a541be715efb9d9cc94ae0cc288d43bcc976ce2039bcfe033d58f86e25dbe365ff5b1850e1c7956c8ccf7d4b5cae05833c107e2736cf6f9b562c6cc3e7aaf8555ff64d2c208b6ff39ccd96fb99f4b36b76e6feec3322e7a8b4645d5ff507f1f8af940384f564cf0d1c60d5cf5b79b7591f999ece711b7de3617e2c9f37e6cb1673e1d89d3cb1809f1b75a68739b694aba4606d5c5b7d3d4496b13e36f145bd467cf7810f59e0cd4be96e27f74de0165157f1358a7b69b9cfbee903e6f10281bb94ef8776ee812fc6453116df5c3329e6ff4b5c7eed1dcce156e212dfb70d646e1f5b9e8bc7fb5289e3f3380595c79ffb6cac0b7eaa71d5ae17beb1fa88b24e579f7fb26f6a7a94e0a3ddb6d846accf96968ec68770e7695120ceec77e6360c5c2d298b0de9bb7226c43cedb0be7587d75790fd246369afcb7f97eb24ff5fc16fd4ef761e57f5cef06d7ffe83eadf145b01361bbe5bcbb753301d8d76713d618e96fbeca32b30174a2c9df3a0fc2297acceb1fbdf8f5b5fe18c505b85ce1bff1bc3b70476cf68a927a762206b71c0efe47f087e74e9b952e425fdc2fefc35567244fdcc839a4d44fdd58aaca57f6bd840e2efdfb37d5ada566d23efcef0e3922d594501e08515194dff56c76c8abf7fcf8664cfd7e234886769c42ebec0b529790d6c6e2d3987de5472afb92ca073c27ced305e817396efe37a9beab7e5bb87b6a9dc2bcdef90b36b85fe6c5fb3abee61774cec10c187a3f0bcd5fa3120b6be6b21a6ea7648ba6e11975ef53a48693bd7dd6420d54f58f43a898d785fe05025f743b93ac836576bbd96d1b890eb07e3b35c063cea035bdfdfe8431b67953c3f590343da36df50374b9947f73e29a34bb2f5f250cfd4da8f8d39adf3c8d7db9a13bdf31477a3c2451cfb741dccb4c8277640c6634ec4de90e4c8390dcc2dec25498e093d5e9efb1a46116d7a3697b5fdc0d780da6cff3ff6feac3b751d5b1f873fd0b92830217b710924363884ac98e0ee0edb0926d8402d5af3e9dfa1a96e4a9649b26bd739bf778cff458d5a3bb8916435b379e6f3f8ffd0774058535a8ff74fd65f36e85ad27e41ad1d60157d0bb8cf9ce29a39fe91d870dc6e89832e7065c50f5b164363f825a8fd9edfa3fa72769ec64762dba033a24c5630977a1c3bc9ce8c7b81811c369f9922f76d411efa2f0d0bc5308329c743724e990dcdf1f036495e19cebd44aff74ee9c316b8ac680d55c6eb21bfc381f33b65790ccd9f53fcb81a5f8f928f227b3efdefa7610f72ec1fac0f1fbccde1a59574faa7b83a2f551d55e2b3025fa6a9368e72d140ad8af7b970fc75283451d7028b691c5b560344c6300eba6b340fd6e46fb456eb75c3ed816f71c575b87dec23ac5ff7279c59784c8f802923ff3d5b9e58edd82fd2be8995eed53d2c17fd37f3da42ad6c9204762bb2f22206cd546ca7fe479ccc3fd09acaded819a26b4ed138a7551c9bf47f34ed50d80fa9a656bf077bd6aa7b8e82ac08b89ff7603abf19b710be7eae5e2fe7af986b7caf7ea6fc4cea7fcbf8057ac7c356b4d1777a353e270d6bdaa03357e3b66fd2fafbbbf8db53131ea3892b817f9339b7139b7432dadc16fd995e86fefcd7d2ae8226dd85c7a21c3f5c801ffff78aea2d45347628f4e362c6999a429cd03eb2f8a2b508fc0e1da733d7b9a11cf9645e38c0dd216af50083d17199fe2168b7cefcc7b3d4eab3450ce64239f6dd2ab10e05c4f1f8739d694eeb3cba6bd0c22f7dd88f98fe4b3bae383ff4eb32b57e2d13c707adc00838afdb857897a22168831e47daf18bc96ae08e1defc43414b78ba0fb87fcfe1ef48ef16c40df379a9ee3604aebd22aae03383825abfe2fe0457c901ab351d0ed6696dd45bab243cea109f73ab23e92610cf89a58412daeac95fc8c42ffcaea63a82ee14cf6357a182c614ce57be8780df36252a6c7f1a3bf8eadf9f2f9b37f79999d97b3f9fcf23c3b2fe7965d92fdf5c9d7f8b96fe9127f4bd763cd353aff28beab98cff8daaeba2f98f7d1ff9063fe6b3d96b9e60798f849b9ae14e59e1d7422aa3bdc4e99a6d3c2f13f17d5603909f325e34e5d4ec2428dc96e9e29dfaae5ef131b6160cd7df81657b5eaf3121f29de333feda301af8f6a6f15acaaa8fd0828b6d1f8ee4989af6bb87ff6cdfba58f26e6df04b8e17abff8deff419fbb8fc2e2d7c229d6b1e31f2755b71587643eca678d877bd4ff2cd6fe3b6ae26c9cabfa13fa79a1e80034680ebc697e88ae39a0ffde74d6fc7d6d972f74daff732d16dd17d33408a92f94b856de4a8233cf59aedf21a7997e221d9c2f348ba89dc2738ed80e33e8efec9292e2f332a7009f87db1de1db56ecfbc49e8f47ebe5829c6dc1a51385a017644541b18758985fd38469d2c63c429ff438aae0c7576b0b795f38677e7d8fe17d356a2848de68938602609df4e7d5b9e2997dd8649fde9cb7a67734d934ffe91afaa96e98b4fdeae3aacdf9daeff2fd77a7a7e2728cadc28a833b62f700079bac553ce39c39b179f68b50e837ef13715e9f97a9881f9d9759d8e7bacfbbb4f30a796cc6ab7d4a37d334d900f73bc39766453684f383d6af38bdb38c1d0c4e3c2f31b641c36e99109f9b6aca7440ef1e9e61b732c7fe5ca0f624c8370f9d6e2b014e1f9fdb11bb7835c893cd5ae4d821972cc64fd6560a7b9cd878d67c03cfa69a7ba4cd553c6b7f46c1e5330b000306cf0a1d255687c633bb622c1fb18b9e56bd6f7188437ff43d68f4bcc5df8a8e8d565b62897392f84d643c843daf614ce8b75563b6d857e6bf2f8376cbcc25a3cf43e683ddb22d5e547d9021e8993db44ccfeafd9ef5b74f764fd84eaeaecbbbd2f4a8b5fe323d2c564bdfff178a03df8f6f3eb70bfa106a2c37a31c882a477b2d468afb9791be305e05d9d75fcba093ed92a2053a049165b79ea85f692dc2693b0a2e81f433a81e41383b9bcedcad3e664f33d247fddc227d3d644fc07fa3fda6f8bafe39766c62333df3ef4ee7978c55f3fef071917b77717d85b38fbc5f7f8e5147ae768e4596bd4fecd6bd7cd6a01507973db737a3d0ddc46addbaa1767eb08d4397fa3d5a3b100729cc6b7d8ea6555edbb79f465e9e9664bf5aef7ec0ff0c3e9feff4543f826af97f9f9f9a5e8fb9d518cf33d7fb97bade943b9aff1d611b780d257dd611b0952305f72cae957595e239cba78afdbbe4f50c8cbbcd6057be57d83fd6ecb055af4836fe21359e6750bb2a746c1a6218724d7c377641afbb15b79835f11b36ecbdcab31aaef93b35d73fe29d34c55deabea1c95f6daa59aefb607adbbe55ff4ced71190b02cd139d7ba2a5fa0952fbf9776ce4b0fcafc6b9fe9eded9971ca53df4f7a63e21ddd9dab793bf99e600e08c6cefd43c16b29edb7cadf9db254893e05bf5e1f55c371953173068eba66f66d2b1855c6b25382f6fc6626a7604dbab787c96ed6dc4a61ceeb1ee1aaf599bcb5a3c7a6d2262c1ca7fffc17605e7c282b8b18cf792b1449cf24a5b8cf7cf94fa1d7e3dcd67d07a517826e59537b79fd6dca96d603139d516e2eff4717dcb48ad2382f1aebf8373ac29f7bceb63a4b6a18bdadfc263ccfc4be86b03069fc64cd07706eec6797bf7eef86b1ff4459166f3d0c04d6fe21daff1d4f3ba2f79d6d05a59d31ac94d678eaaf9f6b035c41f7263db7e57df5a1bc67b5f9aec092d2e89dafd95ce26b765c02e7b257b7139dd2fc2c199729ff17ab4f38ae90c1f719c8b6269e4de17d3fc4b6bc1f4be232bcfd3d2fecc1cbf2276d622785e26564c79121cf49e617e4a5783ed22005eb51d7e07fcaef864b4ee309a211cd96ab05e0431e55de4e7a97f39421cda298e8bd0db45c165293050358dedba8e41a346136ab7b417c97a83dcf69b9edf37c525f0f8abfc83f6d10ba79f513828649b209699a838b9f3d2b562581306ddba6feb59aad876de06786f91ae150eb4cf28e8daa935cd53c77f1073b3621a51b5d88fa643fb950616f0fab0317950712be300eb73f375e1579e517351ae79e9a7b67e1c3b5b8cbc563a7abe9f54bdcd22f4b6593026fed96162c57964f9abc4eafd99581067469aa28fade7374f72aec9fdcea49f2134db349ccd8dfd4c89d1edd216e226abef6f2cee2639d19f0cf356ee9fca7882269dae6d657e07e55a66b1cebf0cb8c511d4c130cdc228cc7749e8037f641c3c726e13d82b62553398f8bf50af4cb9cbbc763c6335039bf592733b8f9d5e293951f89c1c9cf9dafb89461bda0374fb62cff934a3d0ed4e86832ab17adc2ec9d3cd5adb1f8077f8c1ac99325851bbd4aede853698693f49f939617a8ea2b1fab21a68fa1db25d8675adec712c9e23630fcd6ddf8fed83d6ef2253797be35dba991af652ba7fd49f394d9e058640d799a1fe9af9be5b1a2c53eac7ddb40bfa663b139fbf8fc0c73f054d53dbeba6ca9e7d36d913129fe4d89f511bd99e0f2db0a79f903d3a190e645bc1465c8b1878144c3f996dcef03ae46c69ef9255aed888ea3358fdbaacbf90bf9582f3587d4e29b584d03b45cdb6a93fc23e06de54fe1cc6d55fbb6e6d88eb8b6ba48e13f53b918fe68186c25b50dcc581377f0f0785ba161be799c07847da5a9e6c18ef2fe3b2557f6336f7d0f01bed1bcbf1a0754ac76acbf987d5794ac780c7508ccf25dffca1a9ad4be3f3b09d5dbf676dbc076241cdb6f04cd8e1ffa09efa3f1e93d0f3e78f6e9e16cbc676a9b88f1f6247842e55ddc7ace974d6e3bf0d1a9d9013e4b9ecafec71bc1f1a62c0027754ffed416d1f9fef54afd2ec33b2f615729f81b636f9a892f3eb41e1b0017feff981f2abbdadc7f73c5fb308a74797f2a89da18d8ebf1e3b8039f83daf682dfdf3ea6e390b78ade3a1780fdc5314ba6bea6ff4ce316817624e4d57624ca08ecd2dc64e6f955ad3363917c62372befa5552fa39f11316e1abc4d93cdafbd4fab51f3b03c0fc085e70ce77e390fdd75ba72c1f25d6b0e322be9cd7e522b813f811da97f312b8a325066517af063bb06518df77eaf8c7c970704de86f0cd353306e14948f9d9d999e37c70451ee37da4f594b2afa34f24ed85f6263256211a28e14e2fd3ee09412ebd7320eec2a19ad8f2a9e3adea51d3f4f500c56e11d6298a8df33d3dc64b187077106e1fdd1743dff9df16ffbd7387c5e72eda0316a03e4a78243317e9c6ec9d910bfedd1f87b27721fc533091de2fdfbacd075d81f1623f79404f33d70e2725b7a03982f2b0a2ec4c624e3d8e59ac330b60ffde5d3707f9accd6cb68e3b7b04dcd6b9080d705e5e963a87972afc86e25df86f81a609f265641ecdc6316b45771e85ed9bce8c433a44b0678d5e99ff108ec945d6a019723eed35b14c4795aaec5f99a56831cb49403b74857b0be88add1866fea5cbae387f372f2f6b8cc2cc0ab91b3ec73316cdf2756ef10071e7eb613073679269a73149f4ce6695a012eed90582e6807c741bb9d3836c34bb4898f0b6be4d5ca891d554c04370be5c7cf9ce5310adc2bcb75d15ad582ed59c35fcbac2cae5960efe57efc7a24be2779d7e4d6dc1bae97bf6df4ae87fef1f9a17fc1dfc62bed7de2b87964ed9780417b83dae997a4f32ae654381c2fb3705aa46b7b43ebb134aeea59effd69b8fcd73860f331bce449e9558955ac9f6677bba7cd348f4bbb5acc7abbc9c62bd2ceeb36296d6b116479e6f4aac986cc7577105bbaff0a1c864deb85f3d93c4b7e31c1fb03b12c7ded4e4ace2b24ed0d436dae8147917e8b9715c7f85df4357d2fcf0df1dbddcb8af2977c0f8729eeebbeac06dddbf85693bd508bf9ff73bcaf5f62ea4cb612c7255f8651e8465fe25aa91df3cd679ebfb4774cf6d83b680c2f7fc2f18afd75b28feed272bea43536486782bd93c5ffd632c70ebe563e19025ef43876fc3bc061d07d8fbc17785e98cf2e9e17710c6ed967f8d6fe2f8a35eaf298f392f9b557c02b38f9292d8b7b1a77bcecdf67023b0af5178db51c3aaeab1e336dca497c481bcd3b6556b748d7fcde3b9d7bf0efda7b9d45d015df5bad339398f7867b571c3bf17f8991785171f8dc56207370cbec50fe9d185fe0d96c9f525e6b8a21a0f8355113c77218a0dd02da6f0c4741afd79fd3bf1f3ff4559c09ca77805fce6c5e9d936f326cb0116fb46d269ebd5d3e1baed3ed6a7a9df21d416f651266bba410f8770523fcedfd55c1ab10ffb07fc8ace228f68b0dae355063ae0d7c3074ac47975f6c8eef2625d91fb86dc035eadd56325474fcc999c06306ea98323ec3ef7e47e24b2b1c6dffa5334ce5052e70bd590d3f5be7a8a8e7a2bfab9b89b92aeae7c7179cde5f6a9ed5daf553fdc9bfa8ae36d69e963124a18f466b9ef69433f16becc7577eb9a8199f0bbe0173fdb4a6054daf51eb66511d26d671e1d7cabca2c229a16ad3b16b718dd5977a76ea337e35719ba8b5700f5bba0f2b7ebdc6bfacf235fe8be167d035df78a6e0e558b2bcb5182f8111929ada22bf7c1a3f8c892d2ec76c23edf7e74fd3f3d7f5e7cf6acf173e23d781423969e53745a74a7040887dec9a59452bb296cb27a7c6ad8ff7a64ff2bd686de3ae89b75ae5731d2defd198edd5df80471cf7a76bee8387eb6b717df08ad84f0b853b8bd5fd704c5661e04ca9401b4ae1907d7fd80abe1da54e81fcf6b655d68bc477c96fc3cf49d4b61ef639a28d5b44c11e7344b2b16475a53f68a7da9665ad2d3a3e4d8cb5f80ec58fc793c6537ff0cdd5ef7aa77d57ed8c91e32cbe812fc7e303d75733ad3181c71df62596f03f681fdec3988fa5ae3d437b24370ad58b13e703e4b7eb7a162c4775eb1c316a63beac28c78d8641c6ef33f2e0a83a9af2ac537503bfd6d354f607654fd5f582ec6b3c635afcf85be039dd3ec876b75b0ae77860c93602df2ce44cf837f093c4f18fe1acbe9762bd3ba516dfb8eee49c86bae342f9ee4d6d919cc3a3699248fd6ad0b47c1a99b42e99eea1c462e0f6ef5e546e82faba33ceebe65884b2a79bec2e2d8ff1b56e8b9edbf99bf90bc3b37f52ffda8467fbb2fd0df799de63b09994f881e17793bd67c41a29edec40be6e9e7c8db1fccb8c9b39ab7bbfd0b0182bb625cb9922cda39a3ef35ec172a9d8d2e3c4f28f59d036eac2bf570a96e26f68802bfd3cc4a1bb897dae919b716e2d152ffc4feaab5bfe5dead8c7d8f64e33c7be2e1edb79fadfd0edf9329ec2e2c448434bf0d521ed46ad660e6b3a36d59e28ba8fef1d73fd09e20c5239739b788574bbde427c47d857bbe50b343f4fe73e32f116eabc43f837ecabe06b14fc08e66e827c3ec7a8a036233c88ce8b54c3a2600e60335e44e56e42cf6e6aaf8e95d1dad0d57f5739f76ede6b78768ddf09e33b6b9cbb278e27d7c70c5f276cbc47c8fbe81cc547fdf7f7d1abd1cf7c052d44ff8ee9ec18f449bd87c4ea02afb4fe2d2427ddf666db9afa1005975bdf204f461c2f4fe682c2c1b7c76354e767bedc1e7f27ce93d1b4c6f9a5ddd73477a4a67f6d7d72ad7e45cb4868fc6bf3043f47d76c3dd7e6057fb6aa795fdbcf7fcf1af7fa6d362ace71d02b719b989608cbf98da9368fe847ff7eec98f6f15cb47d32acc716d24ac3789171c5f34c9f5b61cef726a929a5fa5a644fe2bffd55d7a092da524d5ca7aa9efa6dcdd8c0d2e7d72fbd0ff7a63e685ad2c2ae5031d45c0f47c7ede40a761263e97e57382eb455f1f0ecdd28fff4eba39923e5362fdcec8cf7e5fd78e49e920e5e836bad1e42f80caa2df6558d8451a717fb896bd33756f8cd4df1378c4715cfd2620aeab710f155a97baccd29c481d34a4bbb15075917f82491b68ebc46e50a6ee2ce14b14136eeb5f93132daafdb46de4f4547ed5cd7ded7d623da9ff1f3a99ebce15c20fbbedceb7f35b55bf5f5e7cab3299682d7190b0e7ec103017b11c5da609c3f8c83c0d53c53beed630cf96ae06bef51dc7dbee37cd911c2a7d3ba0925762039365ae6b805ab53949835cd87a0753bada63114753d35cd795a7362aa654463aed44009accc64d6dc1e89e733be933f43bc97c697b6d88ed2fc36c0162a7ebfd62e51fb6378df5ee58de25c6e8dcfe258d243f37e29aef96338ef8e34e6efc95cc84ad3217b04be5ff28d1bb5ee051e8163c5c4ba197c46c1dd322ae7cb281c9cc938c5c0837fe9021646d5549673c256e2475faf29c0c42bedade9242406fd7be068f60fc83ef73211ef9035bb7fe2b0b8624e16b42f1ce3b2577981fdb918e6a8dea9bf5d587e57e388a4ed08fd7de614e7846a6926b59c8bafd47dfc89c3f56efc70d763764d4deb49d8083c9e671f609d7cf379105b23fbf13bd28423be597d9d4f13d2a770d6ff83626149c4e2634fabc181f88e8b70b07f477cf137b46b4c7b49034e847c67e0005773306a6c45d13336f312feaf6afaa236a05864d194bb93f88d6ff2059adebb8e438fecf9bf251752c33b1cbf45f6ab37c9add450ff4af134afa1df4ada5fb75dda15c077f475eeb11e0fa27159251f29b0e8edccf9f5532decbfafadfc8fc659748c0af30b1c7f2db16b07345edeb5416f5ce6f2bfcc35824f005ac9463e1efb90e93cb86cef37af376697a2b9d9cc5fa9f347d8876fae09b50f34c6645acbe76ff36a26e6f6eec0dfd8b4ebb583e565970ea9aeef171a5147e60f605f57896bb1bcb2316e05dcb3e859948bf6f03d6d01ff00bceee1acfb915a875d6aaa27fb34e67fb00fade582a42f2e7307cfb86f940faea5e468143f1bddf75d5e6ed48646eda97df6c89ea9e86689bf1bdaa8dca3684925230fe597bee63207df556f1fe24c8c1fe31cf80d83e91fd58f57c7346e58e76a2c52c40e54ae76536cc451633828f6b332c67d6afe684d23ab317666883569dfe11b3137b2aed03eabb5b924363ac6ca28e3edc4c4bec56bbc36f70ccfffd6f7d5efd3fa4dfcab227ed4cf33ea472bf136d073f2d7b5b372a4e8c29d993f5dc581a7e65da58d2dc7166bda28f80e43de96620b6bb8a4a7118b356cdc22b6953305b76b97b68ccf34615f20d6d4d00ffccc928c1fe827a9e3017d4dc93a257b5ae0394dd781ee2bf005d5f058bf3e86fd5cff769027a806c9cd738af9d969e9af9571f25b646f226368bf8f0679527a37d676ded4ff9d8ad1abf53b697a3faef76cda2b9e665df2be7664cd555e79c7fe8c2a55afd5ccc147ae43eff9a11d4173088d361e3faf544d991b719d869cc6bd529bab6af5297bd4cbaa964f503469789cf56525ff8d9f67983ff7a6bde6bb7bc2cb6a70631f984abf08b8ba4c6bb1b5072e2f650ee1bcbd8835f1bd02f2b99a96c47f1ce38dacbc88acc315f292649f2bfdce1862d74b25169604f69f782ed7c82bbb8fdc035cf9865a62af2c5a19ade1557489d5b5c2eb88a95d0a3a65c39c627d67b4566decac97bf15dd67ef3a292f455266adc5c37eb998edffd47026a3dbef5cf82d8c276139c81fedb5da37559fb508a76fe0dfd81ae6ef4b8c1fac41865939e8cf0ce2d06d2d82690e1a2fb763001f26ecceefcfd6f2597b6ee2f847c66b879fff2f84bd81d8c1a2a677ceee57797b0dbe29d77d5335c3f0fef0a2f2dee3b52d6d9cb7edb22167a9ef0df7751ba8392f066bb92987267340f728ae568b7ba075b24b0aecf34c7731e542dea56d72367bbbc8b2f7647f6d9823ffe2f140c07bd29a6de0d29b53fe7fc5cffd5dc95ac197d580f1f5685aeb28ae0fb1429b61821eeed49838fbbb16cf02bb1ddb6ba0533de3f919b30fc9b808f0defab608bc42d51854d70cb13dff0bef51f639c981a98e11fb5d62e12a1d4b46ef9f6c06edd45a6e514c3ea9ef1b5e367e38f764ed82517b45f75fd43a32563f9856dd73164eb7382ec9b060b53e8733513328636eed0399db8dd7367c0f3c26d749e9435da5ce754239c31b745a59fb6fe8ae968bd0bd668ff12e1bc19ad2f7dd3a465bccc7438162290fd08e0ed85c5467ae019f59ff0e6c8c5b80b9b9c6a11adb98701fb3f36cd62f2273cff2a54ddbe2df0c8fc9afd3d8e95711e8f6ad21461e3bfe7511ba453c843a4cd0c1a51840ff3a7e79eaaf410b605a44a1fbb9180e40633c2d14ee0b5e7bfa3b5ef377927562f29d7e2d9fabfefdf8e1d170de5d4e49a70fe38638bc3e12a7774a87f9c742d3e0e567fbd7df0b74917649f9aa692299e25c7d35be8dd629b64d26c0dda99e9518735b5b571d6d3db17342f228f0f53cdd2f8269f1f4d0df8feddeee6946b519de676a9c9f5ebf373c53e1f5a1efbed6dedbd371a01f18bf3b5b6b7850e847b908bd16c5db996d7de62fdfb6b5ccdf4bc31f8bf6a7e392ae17c6312dda2fb418df30163b3ea5abfe96e9d0edc07e64dc3e6f56ccd7e55ff4b73be01808adf561629a5776af8aa95e3a9e7fa671f9207b0cb393707b77c6b55ee73a3762b900df71732c71dcad492fd34e20b6e7b78e6167fa6711c2da8258c48b7eefa6fe9d1adf2ded35e90b84d382dab5106b9398baff134d2db2eff4b956649194e47dfe9aeb29b2bf9f178e7da5d793f3eb4ed196a4b1d80b8f255fb2a0207d74e3b57fb708a7a00f1a5419cb47bd6ec299a6a3c5c7d7ee5d175671169aa3bed8b77b2f558d27a5296770d2ebb91ab0a7963916ed5dcd781fd56f4fab419e521d6d35def403fcab21bfa3f6e37bf91fa38f53afa9be9513fb0a5f2aeab10759e89d545feaff2d9ce9dfc19636e3347f10a3c578d0cd0dffa5112bd7fd6eec43bfef764c568bd1131b340e3cfa1d873a8e55fb5d99efaa0fd67c9d8eb1acbfb386770d2e7bed19f7379f71ab2eef0b1f5dc52669ed1e69be5c834d96613f476ff7a82167d6cc3b68d4e1d33537542d752d2e407338487f5d68e811bfb2be97617ca51cdb5adc5c1d9f6eb9082ead381c7fcf2e9476c9ad983b8e7968b1943bc475d4da69f54ae299eaf877890fbc81da773226ea1ed3708f1e5f7aaefbe023f71459fe35adba45b2898e6febdea3e7f7ecb722a2b6877d5e916be211abc72ece2bcd5ffa247327b12ec50462cabdeac9de6fe652f37e0eb8ae5bebca92bac263c7dbc5c3c131e9bcb238670a9a5fc04dda51c777fce81fd38ed4fb8a705f1dfc4ca6d3183e33ce22bc16d2fd789849ce081e5bd5e37af43a27e98c977198e74938004ea570e8425c3a1c529e55ca17e416e311d82dcbccf925fa110e5d1e133930cd44721682ae8f1f4e0b32d6119947559bc6d9283fee31ed784514bc1e8193b5eced92d572331ea63bd547fe3e2729e088fdd6fdf8919ecba9e517098ccdafe5c2b1ad18722b3d622b1d401325f4b6e391d749885db071f3f7d9a09d94f4dc99acba889b54c3e851dfb7693effad3c42144c3f033c0fecd6ff7fc4f6be8ad7f9876fc4730b890f437b50643dcbd8fde8d0ab611f6e60c9d26a7d4c2d621f697ee5ecbc8c56c63d0f7ddf6912f9806f54ff56dcd4f014f5fe1cfb3861ba13b216eb27da0ef5faa0065c96618edce499877894c4dae548dfedcc78c8cfcb948c4b49f61b7f8d70790a56c67c8d6a2b28b9b286eb353ea7fbf1431fcfc7eecbaa7f56fc6133ee4dc7caa27e01c6957c4f559363d83f005f18d57f2ee24759df27e738fb760f5b1c7767f8ce57f94c51cfbf6fe827aa31469ac1f899980333d538339f2ac80b8396721c084d8c2bd62ce1185afc4c16cf3e68da25a4dd0dcfcb117f471dc3b308a7836453c01cf236fe3e19158cffd65fe3f567d0d94dea7589ea3a09675d88cde95aea105f36e65c518cb633ddc58e9f996c10036ffe169e49f1411a5725f58d10c688edb7d896068e67b0e9d3d22f2725fc77530d42737e10e5094cf87b89bbe7310cc09d5f81937c3428d24f251f6e9ac7b7f1c51b718fdc3bae0df9d139da871e5a263fd890a336e0f61fb64bb7836b2a326ef79a72ab836484f735e22bdcac9b44e7e9453bc3bc2a0b7cd3bbf47a11866757c6d0b46fe2fb7e6b7ba89aff191afbc6f9e195fa11aa0156ac71fd88a86b082e78bcf782f3b2e07a47c639a0eb86cd50bbc78bc05bc7c11dcd97b5ece3bb0febc8c982cbfe7d4eb1ef71f0bad56b5518465fb45de370cdd3366bdbdabf46964d9ef1f53b583f39a73f3a77907ef8cd38a05233f1559b5fbefef6520faaa96dd76df36fc2ff1eecd2365e4bf92e76bc22f9dc367d0ff1de85635fe7daf3e387adf9ef4c638a7d6fbeeef36ce4558bc06d678e2ff70ee27737ea67f171b65bd9c8dd451bbf158712cf80d7996b415dc041fc16e2b5dddeb2fe6c5e560d63b012fbea06628bb336af5b38c4bc5fc3f4de3ca73cb49ebb3d9afbf1af89531cb3617bbd08a7c06f3709bac5fbe8f540fe1ecf063c96774aca5f872ce8b653cb5f4f8236f105f771386576bf51639dc5c860bfbf1f0f333847908e3dbc8f7c1fc068b03323052d78b81e72bbfcfa1b71577136a3f52e63b0e51d190fb286d264d3facba06ffe4fe3ee856d2b78ab38865cc3617d8d2117714b7c1e936fd502ddcbb97d8cede99f058babf94e2f0a664a9c81e9bb41cc97c7a7354d81ff045722717bc906f0038fa26d10333c709bbe957406d9a42c8eb1e3dfbd599191bb05f01f80ed68418dc9b3c421d3f828d8189057e8a68e4ffc75de271a0f1966689c40e780ffde5c7747ed0b7c0ee3f153f1515c978ec69df8b3b1fd7d5d90f3886367c1668a9367bb85af59ab63c4ae41989fd43aec500c153d13f0869c775d7dce3047ff4daf7b9af5ff3d26ebbbf4abecd1db717e099db73db0586d03c376a83ac2068e2b51bb23f7b6f787ed32066d545be143033e28d11f6ebff4ef3187dfcb0af751e16e957df2e57e6db051c5778639f239be6da77e8ebf8799ff1c1f651cbad9a67d5e750107ffd236c6f2d74add978c6b9be68f9ccf2a5e5c9de718cf6eefcf9361ff1ccef49832af87c36b5dd4d1a971ad8d5bc423ff33d6f3cac1f473a2ae0725de1859d344a98f053c8c9c67af41773d97df7e9eb4f358dd43ceba9dbf1735744d1a0f571efb3d2fdf3b6a2d6e48cfd7357b668d8723a6350b861cab97e19cc43bcd1bac89ddefb2b9e32aed5639b0587ee4d6f55d2dbe7bcbcf60e7b6b4a9c78237f53b79dec763bd76b84b7932474b39a64d351d645cb45a6de070bbb696357deeefd998302e48b7e79fa9656ad0de613117ba1e57fd0d5f7bffb9ddf17c3fb6f79bfad86619ce15f3f71972baa28e0dd5a67e51bf66e050d2620cf5f6fced9a211833e4cba33d0dbe9bf4bd1c5bc6db83692b0bec3dd69fd66b6a41d77aa4c4965b493558317d78f2ec735af6c89cdbbf63edb5d25f8f9d6e417d31efaaf2d0497f59e815086d0816e377daa714f89dedeb22785e6af8a93c29559ddfd8d9b5d38e57c4c3c1ea5db60dfa89d709e846d13ec2bc25eb200e0774be7c592b45f648916f963e21ce8b490cf57d3d9e81c7c0c87da063b205ef155afb157966dc5993f99e479be92921f36d96221f4e89919bf6ccff6b7fa2b64ffd608d577160afc5f5c44718d5f65d3a16f4cc24f68a09a7d16ceba39a52c65bfbd39ad1db9807b5d6f8db3cc06f928f0fb490bef9fc9ff2f9927b06a2c6adf9b9e21a537b41ef1134da8cf7434e6a11dc35bdff390a0bb2a77e8b038f6b83346ad7529c2fd33ce0ba5fb7f8dc4cd7fff772179ace35ca6d36d7777f852102fec18d5ba456cee279d487baf13d9db4f4af0b1b625682dfc15c73ddcedf8780313a44a1b77d43bac051f8bc04fd80c7f62e59d5f240fc7d701f6ab75adf3c32c46bfffed9f89fd7d3ae049610d9e86a0d2bf20dccf5a80c13fc86eb5b67cdb5b43a0e85ee85ba9f20db7093e3cb509f6bac49656d7cc5f734d5d1fe84d3abf69efff7eb4e7f54478bc76844f6849cc61dd17d99e3b7168e5fe177f0bfe975a8e8efdfaa3f353ddbf4fb9bd9976dc5a1b79567b1e2d3eabfe973b6febb3e2f1efa7abdb67ecf5f46ecc14f72205fd5fde9f30738a91ae68c31cf2f6dab5abe45abf931f14cd5e365bcf6a4169f11f5fa262e846f62ca4c38643d3752b74f1e5acb7158c76921ed52b1d77d658b98e24e353e3ab127917110fbca16d5ff1bb9bad47cfa0ffce8a67cdfff523da4be067db2f7d03854eb3d1c14548fadb64e81bf1af98cc00fa85ff7f4557e6323e2c87ffd0d1f01f401f4772a7c66107bc0f886c11de8b060bd8c8781ccb7631de7b066bb9b70863ae6b6a1b60ab8f76ed43fe15a3a513f573b77ddce9a8d73ef2c6ae5b4da463287651d5913e7b85243c7f015e61ac91aefc530ebba15d44a726cc4660c39658abfa8d54aa2bdbd36f7552e728d37bdbd639a11da77a8f37fe3da3439863ec234317ef870b9945c92d2c7abf19e2bb567f63eb38dcf833d58f2cd89f3f55fe3615b598b981f1d7210fa5807c5f18d8d37c6c92ab5b1c033a2ef0f82d3fc5ecd45b3bfd76b35efbef59e86f6bfacfa87a6da4ac62914aa9a80c531b22e6d329f69ecc4aed292f82222d6f1190597cf2cb870bfe29a702d4bd0244c97b1d32b9826e526516acc7aed6c44d70ac55e2a711c6aaf8da6b276877db374e39eb296a215cff71811ef48ab2ebd4e9bcbb44d99d85f853d043c6db46f926f93e99b3c5ef2f7a0d7e65c8dec19527b5ec95b601d20b44f411e9a699b1ab0585afb6a3cddf82ca8c790f61b36d69f646da65671cd1cd2fe2c034ec7bf71df6423f1fa8c77c2e4c36d6b35ab7afb8302e66a53bfd8baa5f59d5f3ecbbebbfd2cb4cee95c76857e1cd6ea71581d3ed57dbf2681bd4fc81c1879db28b8d3e639bff6bcccac3999cba02f9b5936cbfbf59126aa5c2b109774e276e29cb9961de2b1b4f751c7dfb31a9ee3f8b128d95a527871c97e9d5aed3c71843f40fa04f1c9a4f4c95a603af6de8669e5e59a6e3ced3be72274a6b982d1acb8661e7bbf8ffba3ac45324e80bbd6793d894f9e59a0ddb68d67ddcd0434845d1afb953cba57cae5b95c26650ff785d5ea03f7273f8b76b51a6bfabd9f19c686c777b6cf43034e88ed659321db27da788f5dd7cf277e2681dd6ce272b9b967731d0d7c8e1cf8dc817d7a6898af644d0c5b8d76dbcb6a7058045de82f7936ddef4083443c7b2ef839e18c3d88b38bf7c7263e33aee1e3e7678efd2d33af4ed57c46304d8e3f63fa7ecaf73adc2bdfe8a9e2632fb0cc53726e3f55bacfe7055403b77f0f719f47e8e31f75fcf6e67d60b86f1a3fed1bb367b16bb80e04de4f315f323fb3dc55447d11ed3e23bf7149df51afdfa75ca7d837667de1fde73af2c49e6bb4151bee11da7e3eb12547975fcc1f66f3a51663e4fa7654d34f5ccf7103628e70fecca9c84116742edd3c83665d998baebec1c76a9bf3ad9a1d772f70a8822385cff31fd896c436e3df60283956df641ff83ca45cb5c0fdabe6c96bbe163b8bbeb087c99c57d6dc64d63cbeb8369cd6ead7e27a9a6eafe0ecd230c8afca3e29633ebf50fc343f2ca8ce391acf35db7bee50befdbc34dc9fbf0f73628be3fbf377aab344feae68f37c3546bf8d386a853f0172c5353d21135613f8866bdfae892742e4194c7cb821b24d1afca83bf0a320d743f630c0cba8f5df8cd7f04b9f6e78c3a72b6a75e7180f62f085b87f3acd54be01d12fba76d0739e2a857fe343f7c14c63c3f010273cb7f133449f15de223926268c3fd8e42cbff384fd31a8d3caa7643ed3f69fd15a2c8e4f347e4de7ae6cd37e6c7846142eb7b4fd67653df367f0f98bb9ba6e8d318dfd1be6e203e6f4a0f807119fa2f3de3c064388d91ae6b012a768dc6303ab9b27819f096c0bd511fddfafb1ef98722d2cdee9f847c07804af0c57cef22aa3c1360aa714a341e6e08a5f1f1f5fd05e8731dcbc46220dfd1df15166416c93b5958d283643603dda6d81f5fc4a0314b8e7442c31cf953d02d557d5d7b0ce5b6de28c961afe2a1f7a5dc795c695ebdcf00db9cd97c4f20aaeb75baf85ef9e62c7e7bace379ff106f9aa5a7bd06f861ce368bf5c84d3b1ffd87e469a156a9eee6b3dabff96beb94933a3c69ff05d5db54538e56d13361c7e96e1f746acce229c8a77cdad699e401d9068a38659aceb3900cf4ce39c5239f152fafc086c171ad795faaa58a79bdbd4acd6e96374a6b85b899dfc8c824b11ccb8a6c5abd0ef243e02d231e1f6ce98d761e167090c1f7fdeb09f13dbf719b0aa832bf195637f4deb8d291f10c594d86c0d6e38a607b033948b99d593113b60ecd847d42ff23ef0bbb3724e7147e0a7d76ce53459fd3a8d1f95671ee2c03ea6d560970d07ad283814e4dfc986f8fdf66764f5dae4f9d9c8cd93cdb44c3aee81716574e280ac45fb3a76581c69d8bd8567d16b0d1f12abcdb942a9c68af4ab7fa745bc4b375e3b0a2e72be4a0d463ef7f6c4b7f5cae22e0ee47ca236a6f8bb965f4398427c8dc657a5f137ef52ddef78b48f1ed6e4718aebccf6a66f48b726d17d2c93d683785e71e56b84f1ff69fb4daef77d47637bc5555c63d3b9161bae55730f065d4696a332ed134fb579a4d7487d433fe7c7dfd673d336ef8ff2be2bd2f597b9197636bcb13ac767a993c335dfe749a7afe654f46fa1e9aabcabcf91b5a62369f7f1b9a6fbd3af41578e2df14987f65773a87457fd7c114e9d4598933ee3795a8e87b9764e99e6c3239cd754f73d85fd88d8468b91d74a47cff793aab721be53168c8f91d53b4c3accc72c7757f1ef55fb33e9b8c5c42aae69c72fd2ead7e5f921bd13fe5b7dffdf9ae6d393c62bc5bf8fc88596bd75ec735dfea6f96ae4eadba5ad7cfe36bfdc9a9f1a7f5fad5eafc9fea8add9c990e20714ce3007d5020f156d8e5a0ce34dc98369f7ce6edfeb3b3d14c300fd9e6b3c635a04c631577cbd93c4332f79bf8df6c793e39da20e7d869c8f32a6f8e1ab7c7bf26c536a1a2aacc5f35489757a54d626f66361fc94fa07562f0d7ee71f7276d2f9d1c56b18c71a941a6756bf7cafd533a37a399ea7d06abd516d9c56b76f18b3739d9bca2a8eb1d3eb70fbb4095bc6af6bb4f74cf8b67fcef6549f61f3b1add9c20dd7c9b67dc7c7d0d6f791ec5b1a8f14fc8de5f7d038a7db84dc3b5bc3fe350e0ce72afdbd995b47fb1e4f0ef10fe6823792d84da93537f13cdce83feb03b20fe85cf98a6b8bd8b0ea7e25db55b7850d6b8bcf7d886f625daac986fb07b49e493f0b7dca7550bfdef64e69f39cff6bec486cc81c30c4fe973c6834b7323d65a10bfa75e8cc21fefce7c29279eb49393d25b3de250bfc2bc35b9da60febbbe9755e4ddffc9a1f9174dc751c8eb73836ab611a0f11e5f73bc661ba7c0becf3936a33588b10ecccb5e0d5b6a745cd8728fd2b7c3fc14b4be62ac2c9545d62ffda5130dd6a3c04325681f9431cc9652adb3ea618c9d91961ecc7626e3ebd713dafbb655616d74548739509afe7e3588d6a50261d5627e07845ea90f3cc3f465651a42c9746ef7f053f22a1be433bdd4c7759e9efdf050f23c6904ec95e85dbaae040f8184e4a7b1d2b7da6b5137a9e00d59200073fe6dac7e381af236b3e68b7f678dc271b630c845fbbc3fc30fcba49199fd2b59f47d652e3daf18a54e33b051b6e68a3fee5795ae5eb38ecef6a1c9f743eade37020e3dc4c433f1d7637e45bc78e4fb97c55fd78766efbe737e3f88aebae646f85763eca31b8c959ea4b5e5f652c3ac4efe29cc5f567492eceff648e93bd7c99b3b95ac4c3ee36024c9a3edf359b0c7012340f40b94bd11a7518360b634b295f0f6e43cd3ea97100f13178407c255f9c5d74af71e5b7dd3c9bf71d8af3a862c83f43ae91b4fb585b8b98b79f3ebb881ff17803e6159ef3a47c87f55f8def60b1c49a3d66d8b7bfaa75041ed09999e72db29e899f708c2c9bd8d8d08e38f0f0d83471e099e7cad0dcd6c986f6876b9c506e52a4673733e8346c5aabc9d0fd2aceb08e03881f41ff13d1168e8f643ec0559b374a5f96780fe4f8bb82fab8a996b7127f1767d17ce49e92a0b8eae34ff6a8c4ba58f1acc6bdfc4aecb14538050c626af5f65939df3ecdbaad85e31f9f1adb26ee3fc72c5e063987a04bec925d52faeb17e53d6c8f60cf8fcbbbed13c211d4f69321e24619a2bd037f53d9ffbf909f6c8813a3f813c392aa3ca97a5d49edfa9fd7c058de2999b571ed8672adc9664fc839c3ed3fee5b8e9e6fb4f5b24b3b9ee61f7b66ae58430efe8bf6d6f2e40d63f0c0eb2e637bda7a0f2ec517cfad5d6f1c8bfabea88c03afb3315c67d64c14eb52f13f64ed8ff8dde413c579e214eb28f48a37a54e11f593f35874ccd71aebaf82ee2e0dfde275b336f60dfdfef76ad87ecead4175d1e76ed790b7107541ea357fa3e64ab4ab7e5d03d732d6fdd6eafcd45ab345d0651c09feef7865f66f29ffa3eed3d6789661cf9ecdbbc1ebfce27a76cf7e7bf4a7debc3b0f5bfe6cbeeecdc87ee7721e98cfed721674ad28b8ec62b5c67449ec66891db3abb8c3e374832ae9c4bb98d880c0e1e977c74ebb4d6b6ae7cb3828285ec0795c7a8fbd298ebf936766655165233f4f507dea6495e2b63bb379d7f51ffd8fb7c7deefb9ddb3e785fb7b4eecc761f6caea56efc78ff6714ccea5b238129b6aec506d8085c0f0613b61f0f91e4cf7f18c9ca1cfcba8f40b38f768ed5c110f1f973ecd2374238bec05c4b61dace200f071477276a71bff0c7617e803f3dce6eb329a0d5669d9eba41660ecaa289c6e717fbc47df79f5fd67df267df1dcb756f70df89ee919abf28a0c338e01e05ce328bffb7c4fce75f6f76b3672f3ccf137efc04f6eafe08c0abdc225beea5b3dcf44f643bfb4f78b40c6c2d24a9e8d58c728b4008bd5c3df1df1cceee9df9fc5f9fd1aba5514aeb7f4bef57e6cf7fec4e17af97bd63fbf54838f85e577c70f67fadccffd32b40ec5bba6811485ee266d1f3e9896affa6efef746eec27e0ef75746febbc214fb13e7f1f01169f2f74b7725eb26501eeb563cd4c433837c55935dadd424320c535624a55f45a1774a57f9260eba455adaada4e3fe6ee018375e73836fbce9fa1bdce3a84d6b8587dcf82cb54ecc78ef9ad8a0b42ecdf8fb51d8a88afd8f6bfcb84fa2d8d880a7882dff1887645df4aa375917b68e83c8c09172c868bd5b733bbfdb9f678aa7318f4929da6b1c27d95f657c6ff5c554bff7e8cde3813fbfccc356efd57f2c7ebf15cf501f77eb393ae78fb25f74dc2202ed227a063c2998e0f3127199d539f005860df5a929bf38eca39a415a9ba78f9731cfa1d7e9ded0f5732d5e779faaf5bba547cebb35b6795e56832454b82a451fee1bf9de1e3ddb5bdbfe9bed7dbcb507f3d9bcf732afcea66fbb53ea82751ce5db96ac45dc4659d370ddea3e90c60961e2805031782fb2c60c8d95f23e85ebee6535f8eb43a997a5b62fb4a5d316bea786212de23226e7ea43e2f879b2f1cf5ed9bd2af14281cf2dae9ee393b3ecf41ed0b8635cdafbd4d271bc32762fcfce3ee6ac919c184a3c04b436e9dcba6e95f9adfc56e557aa014de7db6b40f7e686b89652f70d9cd941af1c8fa685fcced3017f4f030799f97d025f2ce70bd9a394b6b6ec4f5c47c9db46ec9628e8b6713ccc0be292d61caa984c841f53fad2c4876698c788e310fd4dae95a6f75d75bf4fff9edce71673f96dab6064d47d684dc672bf08a7225fc0fd44955f744ec711e1da21bebef18af711ceefff6af267b75fdd4bf1830785338aed45c2d66e7c36df637d65cc7aac8ee537ec539b67935d0b3a07f17070a2f525fe8ec55d8ba4f4485b7731b17783ee7aecb098513050e6cda4fab54c47ee89bc3f730a86f133cc79c35e49ebbd4db140bf8a2d7ff83e075e966dd06ea11899f1fc36cda7a31a535cefd878bc652377970e07a72c7c5d0abea8e055d94f15cc29e6b6fa22bef8ddd85d6d6f50e276ada3e49bd162d23316b3b4a5cfcdb991d2b2672d02e01ac276ff32b57e916f9f67435e43d43ba6c4360ec79cab68138750975425a5bf56dbf5eb04f6a2d33bb23a211377d195720212ffe095fa028e7d7c877c887d4dacae314eff9f6b44f4713d8efa3d46fe7111da6de2b33f917545d65c39cdb3616e9c8b13c39ea6d46f57ebbd1ab3d4783f864a7c90c6a26ff076e8fb158b07637eacc618215f57a6988b1edfd6e7b1c89198f5916feb7473dd14c76e67ceaf066d38aa8f9d3805cec1a81ae0a6f137e9e7d171abcc632cb501158eb1cf71f3382b6b8cf12db2f395b4d7ade9d8f5551d95617d1cc701e8dd4c9b62f1e8faaff44cd27109bacbe978a57229ca9c1bab75b5cf2baa71745ee1793f76dc82e999805e1ac41760ef167869c02d6656af5a54779b70d6fd776215c7a761ba74ab757d8e6939b09a0dad7e870f98539c672ef0deb251b1977aa6829f6c3def78ddc499cb734bb337a57d6b57b1551ca14689f97c86e71cf175b5f3938efd81f8f78ba03b63ba03d4df32c665db795a66bba4a0bca55f3c6fc86b2e98cf65e87f57bf766f9ccb0e7bef9a627bbef13c8a554075d74935d827567703fbba63ff81ba510d631af1f76ca64b9ae75278f5f664df8e878053fd8c027def80777d46a17f8d6783551664a2369369d5923d037849c6a3e9693cca0ad7baecc7a32c27fea1c0da6e004b5d71ce45751c20369128dfb4f6fdce626ebc4a0d03655c1ab40cd835775fe95a9ea3d0bdc6f3789f80cdc1c66cb5aeed431fb59c2bef07f4f344e6279cabab3cc171d3d7f6f48dac63de8f70382636463771fc2bd4da96dd5346390481cf8ed608dbe7d4b97411ff0b68fc44644fb32026a9d5ecb26f397ad66a98d5982ae2a939c2fed1f6a08637752e3b6273c5333eb6777bd01fe23c8d1c63e6605f744cf1caa3ac489cf3320a9fa18df4db4badfa48f8fd7728e66aaad1c896ac1f54d7cde9c3f3b0fd315965d9a4dc9d16c1ddd6adfa9b5a8eadb68fe19a2e762e6cfc233a8f6ce6835e9f867abe4ecc11b286183772b79d428dce7cab600814df98da9eef41f7733cf2cf319c850faba5fbbc04fc08b5c3f26494e5ef10639e2fe3302fa20e59fbaffbb143c6e50ee222540baa5b80ed64d9d5fbec6ee93bf92e45fb376052c3e725f09c6efc3dcbff73bd44729e90b9d0156d815aecbc20674cda298e11c4aff33c2b0b72df157209f49cb9aaf5def45d89d3db2c82e7a3d65fd0b55a38c566011838ff9205e47c5f2fb310eaf28ab412b5df800d5a84bb22623c9a11c7263afd25ab05ba3ecdcecb28b874a2b0b86aef3ad3393ee635f857186b9b636ea7fc1b2d93c06f2d9c1eb2730765d2713f639f8dc59beaeb137b36b27c5f7ce39a262dc7cc7a45daf1aaa453a8d8627dee7cd67126069fe983730ea31ae306be0ac3f9a9f8b970deb1fb3ccc73817d5cc3b924f956a1deacde1ec92944cfa1c7847275105fe4137840c07750741ec8b95391b5ce62494bc6fd0a1c01c28710ef98d6fccd28e87693a057c5fab8319c8c3957a1f8f352bb6365dabfff59ffc468fb3d162ffeda7e9ecdbd0f6f7eb1dfe6fe8b2f7255e6fdabc95fd46225acc665da4a3a6e61e286009b50f47fc078a5187f2ef5d9d663c7ed2a3e15afdd33f8c48c5f4ac1f5a3364a8d9da69a142d366cae9d17dfcbe8eb23fe5961d3538c7fbabb1553a9f374e67cceef349c06f5bb15bf7fb08dc2988f711e95c57e117a5d9ae3730ba8c7643c3759e852fc81d8fb794e11f6eea2ee73339e61ab774820cf03e7ee276078e85ede5a50bffbcadec1cf477c162f232bcf9392f26d64a6f768dce99995ef226b49f18c2bcae5c3e64615cfda5516dc81ee207be74189c1386e1159763bb5e6e6773997536c159f600f323dad45d06ba716b169dc3c5951bc25e5f3811ce92ee990f306b7919e0d9c8f99cc2f32cfebfd2267f3a59858c531b27a55cab06eea37953c64bc7e588f1fabd7695c79a67988f9cb58fc2d590d8a28986eebdffecced9e5a1d6e3414fcd5adf7191d9738b03f1738b6a3dacee45dbbb41a948be0427d3dab682d58cc671174779953e409ab871f8fa6e73898c273809b7aa6c775c647ce7d9d047e9e6ceafbf002e267829f89b4f5ba08a72d6e77522e72ffbaa0f1456d0cbab5e7f9ceaf651c74af5948f6ad01198b5ddaf1687d24f0449cc19e193bfdf53bad53ee8d3bf83a6ff9b3b8dd0f7198751bf0461d35c2de95b2a6ba29468ec79df6f5364e4ce458db80e369c7edde3eb17ae7b4ddfb20ef797ea86163610e3d716d95d22ba006ffa1ff17e0201cff6efc70fe6abc780e5fdcf354edff37cecf8fd0f28a68e36f42eb724a3a836bd8fe05fa01cf350c30fd1fe40fedde47ecf8c44fa51afba3e94758f5ff67fcf078d673885f9dd5deba7899f99e1db62ebfdfda830fcf77676fedb13166321e0e5669e9e70b633ca9ad8f55cd1711e327cf57c4610af5ee0dfeeb37f733f60e310786ad8ba91f1168c61547cc8b73cb1e61fc12dcceacc7f966ca9e6988974f13a66d5ccf83f039bc526c59c33bba25d2b452fe1776988e862156fffcf5738ddccc788e2a79e85bcf7a1bd7f104a3430ff00437dbd810279371e65bed17b165fdbbc15a91fa4730c6c02164c93dd1adcceb85cd51a8ed257b99394e4bfb24f93c1bfa8172ad8827b8215ec638fbe9ff375c23f3be2fd85fd7639a348e03b50eac3fdf881f08dfb187e70339c75ec369372979de0cfa7120e7e22298e68973e9cabfedc8d92bfcd2bbedf06dec14adf128db25ce7929349f1dff2e0ea66d8adb2f4acdefa5dc6aa5ff1987d32b70570f7389ed6431df74e31fc78edde2766562813e1ce8bc654ef1b9a80a14b7407eb0e30397624d4fb9b67f4a1c08adfd195489d5dea5fa7d120f6d3c37504c45f5c9677a0e5ac556b3efa69f913d2d1eb3d3b033143ba0fbfbfcefb33af6fb8779722d26d0e7fb37ae21ed297c8e855af3f11ff9b2342e417df1707a9d94fe315b755fde5ae41cf35ffc15e54b08872eb9669d311c4138acd7cc40ced0eaede359b74837ee295de5ee5b110fde1e8bc7b0e53f7bf3b6fd5678c673513d2be43c91b8d5b911f38e7e3f6a780b84193261f6791ecb5883a47f93d25d61eef5ded12b8b2aed783cde531b0bacb795ace35dba99b67c16cfe2180c75de49ac8ba83d53f2a7799e95822375b5082ebb6cb486752b6280b3419e96ee2e1bb9c0171f59bd753c1bace2203e89bc9043dbc2c78fbc87c7d9043675e4b6899f426cfb385c63ad9ae2ddf13f211732947c93a90598687a9eac809302fece9f8bdf15758acfc4991f15cd1c1e7f1c65db98f88ed867a41cbad7f1687a4a82f952e511e57e8ab78d420ff33e9e2827939ae3063da021f8a9c4ff24be689be7bbb13f0cbc98742f2c33c6db19cf10e661a3be2b29e728eea1d4bd5459d095b6cbda2f631a07d1e2835fe63dcd357434f7796dc0106939cf6756ff653857d9735c47c50782c65c75dba6d1ec99fa731a6d1868d3daa87327ce66365e43f9ec49c9fe56f75dc01e16582974efb7ec143a669f124f065ca00c67f6babd61d71871618addf5b65d368e7d93fd61bc16e104c5bfa7355fa15ef328e704f1ff58dff03ce57f8779f961ba9f8fe7e3741f07f6310b070ec43246c477cf957123365252f64ee9637cbc592fd950c7a46044bf384bd5b3ccdcc6b8ec551ec445d4daafb8ace7f850edd951cdeb687682f95db4bef6cdc80bd87ca6b1fa2cccd743f12ad32a0eec56ec233de0e1af7f8fdbbd8fb9edcf3cbff7f1b4eaf118f9486283c75b7e86fc437c6ca25defd5c0a0073460fa545fd5e0b78bb4cc8ad74df10275ca2a0e45a90964f82e5a278ef7c2863a4a7efd6428e3a8785fa4e349f57b794d1ebf27b0a6ed74436bb9987ea0b8efc635b03f400d34d55af957237617bd17b70f6b1a60ad9f97d540681845e1f4ba08b2e3d3e8d09b0cf1fbd0be8c9f599a71c031c3fe36e22fc37c9776205f7ce471b4a8e3578caf0aced92754df4cf670f1fb439dff818f1baf51207d15b8b4c7c27e7e7ba47141e69ba41dffcce68ee87b067cbbfeb5565f2bc7f94f1c16d72736afe2e1fa9804f659b3f3fec4a199a3427edb43f1cebf398ba1695c0c94f396eb260eb33ecf692d36a09b58c5b3de7e118c4fca5cb5286f2f60860c7a8c7391cba7f5566e4be4bbfe9d563dc6ff73d945ab1eb663a44ea3cfb0d255aad634d23ce8339973b027881ac1fee67584b886ac29b10b4f8953ac26165e8b3dca19f978a131d392fc4d7b4779d9a5c39f8e47bc5f84fd8d5a1397033fff0fdb4735bdd571153ca13f7c16bf4f6d575d97efa7cfadeb04aaed35714dfef81d260d72bdae0fe71b5254df7763be15c9c63fe8dffcbd1a98ce1a597778631e885a8ec0cd536bbe61790f47e4721c62dfb7892df234af06ab2c28f6f170d0896783ce82e692da0c1fc4f31705ad9bfb05f57159d05d27c4e7a0f98c635271cd47ef3a292e479a3b807bc9ff56138b619d45ee7f40da09b63fe4ae1cff9acce87bd2eaccf2a1d9290b2eebb143f65afb0f6854388f32ffe6ecae63a7774c46eb651c74ad45e89e9292e9d128b55980fb6919cf7773ad16abc932e29aefc7f601d6c3c4c0233b31ec37e41ca9afefb3e0ad9e0c293673629ea37bce791e02f70ee047b17da0e112291f2ac513bf2e43cbbfa31a06f46c0fdae795c031dbe7d5643848c7388726fe366d91f9160759371c8ef7141785b0d84397f1082bfadc1f9cafc507cedf5e3bb3075502f9206f1787d3e7c4ea5de3597e4d3a7e05711247b68fd80f5c3799fd4efc19a1898c38827a2f15e7efb6c999d2e2356fbc8688deef4fc879a5e6780ec57bf8bc4dad5e3b2da705b1dba8ad7228de67e7e5e26dcfeb26773467b35f2e66fd5f82e3670ef71f13c73fc61d6ffb520d7634dfb25fd29ac8d6923f7b66f9ddb47dd8856f7b563b25fb8a35f2c97d4fb3fefffc9ef5cf4f33c87510dba51d93b6b1feb13313b026ac6f09ad9fdc93fd409cb1fcfa978ad9c28a86a97f8de710ef5c45c1f4cf6408383686ab7aa538b279bb48825ff4dfbe5bc42b9adf9bb39832da7bc85afacc86b53d6b1d87763b0acef85afe376daf24ef98e671e9bf517f1ced6ba5cfb46f7adbc4eafd49ab1e69eb5b14c4bc2db57d57af6f93dc4dfdcd44d8ed63b88faf0f596be00dd2d160ffcecff816c2f0cada5ea1371d858373322a28fe337ce6b5bd4552129bdf5fbfac18af665d93368f375e911659b508bd42d1a61d2ec99cfb9ff10878544ae22fc4f6e5f8c17c8b2c20f3e20c3c968bcdb3b4e146cfb46689d8c723b607afee18af33dffb405be8310ea79f6959ace2c01bbecfbfeaa3bb8be65e915ad36a11b845fce8767fa0bd6bee27f3255f56fdadae71ceed4118033116c28e841c60a6daf00d5829bd266ed06bd087f84be791773b6e91043d2b9edbad6ce4eea20de825031e12e366b478126fdb2e06cc4d5fab2d02dd3af4bc251ddb597b8dbec7ea7d96ee286766ba799a75afa973d965c3e566324c7780c51f7945baca77f1b0dffbbd1aece261b79596c5e169c8f87445ccb9bb8b555f9ae1e28b35ca17ef543c5ab78a83f6292bfd81ac179c6f5d8bcc9bc743ecf8d7a8e3eea2d25f479bf5e6e9ed508086a7fa0c72067eebfe091dabe3a2eced9215ede3d39bce8dde425ce15fcc174db72d14bc9ede466b13fee6a63955d3d156e799ff8d397527e3f3c4d72a7b14733fcc3fb85de63afa9ce8e3efa7b799cccb53e2cc374fb3353a13fbff42b1befbb12df6b835e0d4438fcc8f5506f967eff4e6f43a71e83e44e1b4a0b11675ee0b9bb12cd6c0b13b827772ec562bb17afbcc29ce6e059cad9b547b875b418c5aadd153e2457c2f22f390f24ca3b953ef73f3dc53e2658c8b963cb37457745ea59dc17e11be6eddea4cd612cdab3ff6ca27758dd075336c5dea315d032e54abb350d638f159beb7c6f7acffffa29899629d765a7b7774e0dfeeb808bc5e3444fa71da7a46bca43d7c9679f3f6ab6f171f6ff3dee36c1ebb9eefbea11addd3d36a47faf26fb0c1b986ff0d3eedd4ea1d749ca2e44f20b643718cabc1ab68378d8dfe9bb4f36935e8a78e5d45414b1927c92f49fab05dbe8e06795ada0769870bbe64dad647c0fde7c96cf017b72d3f667a7c76da78edefb0a5c772951a44e98f74ff9d560ae6abf6cca8ec9d20eefad9eee9cf14e7e170d04aac6c93080d3ce1ef483bb9b42926d1e91d2756af8c0b7d2c0e57328f9232edf1bea2fc16e617a11c27f21d85e45e56f079554cf5fcac7806f91883865af3b8a71db226bb1bd358628ca7e82f9b5b10f71b213f429b17ef2847409fade6fc5e993d07b5170e8c6d67e1f87a7d0cf521d9b5716d5e1de4b8b3efa6e40a0b89ff8b04462f37d46d145791830f3c759e33bf24ad067ff9c08344efa176aadf83bc1e6a2f3d33e01cf9f7a4ee43b5811f895ebb35ae9da1e46ac07fa37ae5c09bd093bc2297029f6f729e8abcb7e44fd5347e4d1c0b0aa677d6df44817b4dac0bd9af3722fea9d77d3efad3b9edc561abfddb7b2c9cd9dc9fcd3927add059bfa8e74419ef62a6294ee3935eb808bd2d6082716d73eb724a3ad382e5e6f663bb57bc3bd37d0635b7f28c136731d9d7d7b5ba54e6ebe438eec7f95eb88dc06d4a576256f878f3fb97fa3d0247f29bd60c3d90391695f6e7a25a6e9f6660c7a931737186ebeff13e33e5dc93b6c44c724dcde2205a479d39d611d29ed345f1fa7eeff76c70cc82cb1e346c8586fc56da4f6b992f9b977ee93ad3f664a3e33f20de9c083d3e71cec727e207f33c3c702b84d3e2d5b2f789e3e691b5df3e41fdea1de261647516cd7dab305eeae9e6788dffabe3f0bc6ac2c3348c87cdcf7897f9bb67e08160fb44c6c7676ed965ec33cc02f591d9bf858d8bcf00c903cec659ae4375fce5df919d123edf93fd42ea2f233e1083e6578d3f84c5a6e0ef3ee274617ad0e6f5e0ab1cb232ee20e603eaabf04779ffd878a167c8fda9c92f1d73ce4fd031527d529aa3b0db8bd0857e0755568be1b96d5937467df5bc8e2750f235d82741b62f1fdf8aeed31893c3f7a808d9d4a6eb6ab1acba0fb253300c48af03ef37caf76e1f84ed10624ce8c6f0bb966356dadbf49c12cfb96922da64b79a73bea36991d9fadc57b0007b635f346c833a9eea6fb53543dba1ad6b9d7be77b7ae87c2e285c47745decc7f6819f0dfbda3a1d02970cdd23fc96be868e7198b774ce0eb26fbc05fe21319c2b0c63c56370dbfa19d8c53952e50cd4e21c109f56b132224f0bfae8e8deaf3853ab388c155e0e3dbff9313b2f31663f159cd74adcb27e86309c5ec31922df331cfcfa18f6736913adebf55b23f3fe8ffaade3e0d45882619f56b8fe94bd14f515f6a1bbe3a4ec16ef355e15362f51fc6e321cac17e194f6e391d624f3bd0b7daf4c7c13955b18b5e7acccef8971cf3e233bf2bc047cc3e3dfff4ec877faf5a1c65ab04e4f6fec74417f1930c135fb579ee1da9c95b1711327b0c23ff6e5b72673fc332d7d321e7fcb466fc20390bd3f2e8bcd448f45fd37e6cf17b160e3372fda755e6a8573518fd74aaceb57f6d778f8c8bf6d1d1ff4e51aeeaee390f898bd6ebd2efc5bdfb39d009f5f718c8357fd6c44e7cf33ccdda6ef9756e73ac6ed969da59f59352e3883dd65e2fd5079886a185f7606317e2289014daceefe7d3680da418a3b87b8c007f7a3c34af57f31a6f44b8cd3c82d223246417e4aacc37562f9770bc76ea71d882b1d62c73fa7c84ec67bc9b7d7922df618b1be53c5ef9e738c5783b625b1ab79cde97e3519ba2287456b6cec5d82701cc0771de445023570906be7d768f80a96e35dc9dc5762b50e0bc7df0396b6eaed294ee44ebbafd7494abf923a64af8def4e3ad9310e5da97f58cfc169be26cde1711c1fcbfb9175f4653e0feea3f816f4bc2ff37436cd77cb5ca386c5e844a14be3431c1bd1c9f2b4049e12353f174e3fa37000b9d457c057f77be3877187e59e854d9458948f469c311da65556623c5c71052da647327fa77f68bf5eb78cf7b7ae45e3d05cfca474db1007613538cf585741d57d14fb65fc48ef7d62cfa86b8df6f3f12ca7b88061f710875e4efa08f91ff15e7b9f3d1e8a77aa9dc8affdcc46eebe76ed66ba5d04718bfc1df3d38a71b4a096baf451be9cac35ba67431ca37457fdad2b71771bc05bd0dfa8663edeb319f71e8fc54faa2d8f87cd818784c6444e097046f6ae71d05f2e9cde695191f33d8335926e9e97ef41af9dae68ec8dcdad138fbd21ad2f1a93647875b2efd33aacd7e3d81e9c320beabe29ffc9c305709289637727d7ee92eb4826307677189342395c1cfb73e1144556524c7a145cd8bb3887bc5b2c1cdb5a04bd0ade0f75b0c529833a6e11c7a0b8fa91bb8bad0cf0e4bcad3426ea5f810383fc0e35d23dfa0ec6434df64aced943af770b5a0f1431ac8ed429a33c0d39f0c7b03ae522b5a64b8a5fe81ae3efef6db7883f2faabed343f7d758d367021c41102d59bc52c6921daa451a85eecd18eec76c704a0af4cdfd5a2c96c5f25e21ae2de2b0edda75abc4ea01cef777d8c2f15a69e3d6e3bc4acc1cddf39938c5e7a2ed558b20031e2688993f7abfdf667c4d31ec3ee0aa0bd82f13a881f7d764af05fc8ef3bc637c3f2dd0751a0ef618ef077c7a2c9e8bf70488e794bd13d973204e39a2988ac4eace12abd77ab52e27a88de09cdd92fb90e53ee95ee5f3b94539d3593b33d081fe3d03ac27cfdf8b78a5c012d1bea0f7d1bd9fc524c9bfb7ac2655f7354fc99ab61bf0bb6a9b25ee9cf96b7caf5938f631762e057bef43140e5a503f6e88ffc59aaf2a6220dcbeb3bd3c2db3826a8d664566bb455cf0bfe564be22ff5a9c21dbf1cc167b15dff326c3fe067f8bb133cd53c0b9917de07119b17e091ef88ddf226b8fac595af7476b8222b64e000b67f50e29e54a011dd9a4ba5bba55ffcf789869633edf3e41bc2fe798b6624ce66e07b83e73babf923dcc6ec91a3ae0f53949de7dd073dba03cf957df18d9c964ded4c7849e2185f411038f9eddc3bc789a51ff78114e81bfebd5baec22eb50fb7d1c00776abe08bad727879f1fde3c0add0d68b63bf323c725090d26e2db77c8b7acc537b611600bfd69d2f1af342fee5fe339ede7adb9c3e21c3f18138db3daead27d6b9617062c42533b277158f8e9f087ed74e6c705b269885d51b775fe56fbbee173e7721f153e77d480b54358a4078a439a773c54df267d29be6e605d84149720cf44c815f331ab406b396817b153103f1374d9683f7f9dc64edeca4683ebcbead729b68ad662e4af98765e1905d3222a891dd163f66a6f9776a6ed387c3e3d7ff6cfd3ab87ea3521f725e63cb3f7c8bed7619a8b47d6e6dafe436c0fca85abdbdaa0473b8b8398cfef2de51ce51cb09c1386ed790a2f8cc47f02179f53b4a03e90ac73c72de2b247f69119ed57a65c3f217b4b1b8f914db9e29d38a7381c96770d63aa63bd92bcb2cc4fd93ecd8486de2a0ea08e64c7b963058e929c8bcab790d800a8d32bfd43d289957ac479e9e751e7959d99736c171d0d581b8e33a2eb7b2ef660899f079d0aee47e5ebc47aded7cfc173e33953d7ae6d7a37fa1ee45b3bb4ce117461ab33390fc87e374fcb62135bf00d8a5a8c83f2dafc5984745d33bc34b72b76dc2e65359ba25633b1bab4ee939e573ce7dc21d7c40ed47b528e18d6c714d79dd135cc75c3f4f95daf13e6fb1df3496eeb63097f5aab87467c184e9e27a5b78fe7ed1339cf9f708d378e778b9c07c7d41d8af7d03fbfb171661c66dc1f066d5f7246937d310bfb9bff6fbcf5f13e14efbe7f6e1e6fd8ef0e89e5ee1207b0b2795a1663e27fcb3177116fbf867d84bda2d78eac9cf9f414f708dfa5346a25abe753d05b2d820be42fa3d0ddcd889ddcc298f77e0ff8d437b0968b4939cd13e74cbf7be99ee2d1fa1859f92e71bc2a0eee76c0fb3acc8b84e6ade43c09cefbf1303bc01a86f53c27730562004f5f69b599e294627ed2f9fc6ad967e2a3e3fd41ab4d6cdc471aae2336423b7d6cbceecb6f86f3797c0fe6be3bb47db654f093380f4dce27253f3034ee6daadd25f6e5f95e5fef13ddf661b1383ade5d9336a16e0bffa56ae3fde3b12f915fc7712f8c074fe999b551759de57ec5ecef87c4eab6a2a020efe43e13b395ee94fa495a5fcdf1197a6d34f2df610fe96ff07ee0566bcc81dd4e9c33d6046ab6cdeae3b67d9a755789e575d9f757db416339c6fa6c160ba2311d3e37d1fbdd55b434c786d47b516c1d3d63b995d8247acf5862584b77456bdf2725f16ffcf97b3820be858ceb92e7839f82c606f1b367c165ffc235b2beaa8985b854962f42cf493aeee35bab0dfe2f5b23a7a410df7e2d315402bf51c5e1f4948ce222b6a91f9fb2b85ac8fd148ed510fb4ce35c127623df8799ffa2bd036bce725c8d9fa7e5a53b97e34e3535e7c20f2bd202f04caa7fccceb12874f7ef3efb76acfd4fe899359d5cead7b0fafe86fcb2d33bce793b8257982fa25d01b197230d0bac5cbfd5afade7cccfcbc052eed9a3b15dd36fc0739ab7dbcb6d7cc859d8725edefc4e351e981cf2f0f00d868f3dd8179abe1bd3ada1e30cf9b8e63e76d8bc52c623ce8c1abfa8efb28656cc7f8c296c25a89e0574c2cdb5e0d24e0ea7a011fc5be12760750473bb4a4bbb3b298b2bd789d3743d4cbaba0a3708e47099eeb8d0a7a7fec635718a63366c8bf36a1290317b3d90bf534e7559374ff66ef29cd46238e0c2a4eddc8cef4a1a783f126dcef0b606560bd7a31f144db85b1accdff82e722ced33ab67136b06d6d8a369dc6d62f3607de19cc7e36ed46fe7a9a8ddde6bf181769eda873f21e32623ed909c79b896db3e07d621ab69e27d939340e025dad92e7372964b77c9da2b1741ca6a3d643d95565f45635023c643a6609d793dd56597b27f8b3a4bfa0cc6417b11314bf08f4bbf9a3bf61ab4001946280add2ae964223eceee3f6b6da56b84d666aa3681523bec29b59d93e1e003cf3d57e84f7abfb3725ed57ee7bceec3b3fe5c5a2b7f156b94afe183a6a557df03447e9ce36dbb26fcabf8e68db96f96777d356018142c89c01f0aed0b13aef87eecc4bb77a857fd45ec14f8b75ba17a08d95e030e42d3d71c7927847f19a41b377f9fe54d7c0f2a77aeca7542bf1db2c95f742c9decd7bdf8378b07a68a9e34d65fc3df9df17b5c9b7923546e0ec3bd351c82c273f189ceb657cefb4fc6d9f4be1a6f345f1fd7ad79dd683c6f93617f7b6b0dd4b9464cfdb959ef84bfd71a706de077137fa88bf8c8faf7e3617e73bdfd57dbf2363eaab92e81d750b40b192fc27d23b759c3bcd0bf13dfef34aeda7d6d0cc49ed2efa9e76597b765877157bf2ba94ff9b26ada9fd0b8fb0d735e6286bfb30e8f741f4ef7fab860acef7866d37d50ea33abd8d0ef683ed6c687b6b336374afaf79bb871d31ead72c8d4be9bc0c43e6c6b678fce3bac606695b105ce0f731fd5f5896a95fb39d34cc2b8d5bd362780a30073d23cf9f8ec6f29189a27ca4bc762d9b73126347eec3dbeb56afef981f8ff1a7644c5b6b4216ff6151e45bbbe8e717963dc34c4964ebfc6b74c417b9cdae63acfc85fd80f6c8a39a835f0b2468cbe373d4e3af8eff5f6aa794c86a1a9ee4efa6f86b10ba3a0687965aff21e7b53f05fb4fb7dcbde658fc416f67ebff9f5f1623c3e42eb12b81e6cfd6c467db1be65f3d5eaf9179be91de8d6d8bd7fa79da5a2b7cec6f244ae99846e3bd978bb24f0a98ebc8a47196641b1cf989e62d2e903ae22c2757f569f73e79f387644c58d0c761ca310033e8eebe94ddb69c73b25c4b662b5b1630734e4f75158000fca78b83d219c92c0a6903d65526d3fc376efd5f75d3b6cfffaf7a4cd7073c40fd964795a829fb87d027df601d9334e80612fa87f896250b53a666cffa2b3c558eb25ed321c3f107a46e81ed5ce633e8aac3f19b979b299ee68addd76e9e3ff2e64bd176853f23a69145b49ac5e0b63fea2d06b45c174abc457107fc55c895589e7d4ce0181d978a4fbf68f9ec7b9ae6c54eb35477fdb3c6f713bb56fa43d0b8dafa81b33c4a2e8f81cb18dc5fd4b1ebbc0bc27e6350b1cb3e7b4eab6589e52cf5f277198ef320738dcae71e8d9ef4ed18a034fd621511ce5761cb2f9b7996e934eda501737e67812818bce04ee6250fbb6dfdb43f2eff911dcc6be821dc0fb7d5d38bdce1773fbbee1ef109f984a9f82f2f38867715b47fcde687be86b86e7ea9fb4980affe6800fc17c992c6647bfcdeb8e6a12fb770be084cd19c788c0f2131be21acf589c467c37af8a822ed382bb83d8dc38e0cfc0b11ae5d94a0e55c402c55ce639817c173b5e011cf0c3e571b2eae669995df5981bb1473d36df9e185f3eaee3a37ce7acbd65ef28aeadd59fc0b73d256bde4ef4ce3a2682f1df79a7649591b3f638016c31f0e6d2bc20f02c5df2f7d9a0b3708a3dc5f164d7f1088f19cd19261dbf3529a4e68e882306bd36f713f8deae7e4fc058ccd3d23e8abafb61548e8736ffae326e893193b3bcb66ef87313ab3b661c5472cf97d8b1fbf150ac834ac76c89b6213bc1d3716794575bc911bdac068667b2588c8d6c411c2b0cdaa74cf0599171c67151f46d1c977308c3baa5d860fbf81e7a5bfaefa21c8f32c042d2eb393ff3af7a8e4fc913f0fa8ec13e0e5f9734bf08714dde974ff8ee23b748568d7101c1cda0d69275a546a3ac57bc0227d0db56eae9f31a3a743d6a73f9b21a1c903d296bc470bda77e9f693f1cc1fe7c3f1e3ee6eafcd3f6a9365d6737fcafa6fe323fe6acebb57713e0e51536d595f12209df4dcd8946f7c63359d426157c0cd4dc88adec63bb2fb881d81ea1d4cdf07d43b16bd8df018bab68f95b5d3bd9780cbb745172175ed06d81168b18fb969c53325e4ae7d6d0c823fb416c57ad4f5acca938a235a79e6750d73838c7814dd625ecd57adbc9def2b2fa721ceea13fb0df1afac9f6e19795c8f9927d671d0777c6f163efbb3d96d7edf7c6f6015fc763c0acef122740cef0ed22b8acebb56d62ed8b1826b6a988cfde648313df685222bec08d9727c39c7dcfb3f21c882f893da74bf7c035f703d647b22f93f5cab4d3813741ee87e95f0d3973719e50ae5fc467ead8d7b405fa4592cbd49aeec91a86dc44a8d5a40cb7cb287c1638addbfee85ec7e87e87f3cd7e2b3c7bbef61f2743feefe2c5c3dc971de6db84ca7c3fc41df79485fd93e22be8fe2efe6ded1f6384a3507cd71bd7697e708b9f69af643feb4ca9bd4eb995910fce31e3ee90ec51a9e557649f4a9c1ac7ac72b6fb1d37aff9f36dc59e08d3d2a63c507aecc0d95ddf87103b81fd41c60f06e978c3c6d022d7b42bca07d72ec2e1f82fe4638abccb9c9e01520390ee270a2f5de6148738e8b5b387edf2f9da6736eee090742076c9d6e2f89ee30cd9efeda464e7badc6794e7a2bd89fedde7f979c10d91c78ecff9f3641bed839c3fedd6fd7898c1bec76bf58396ffe23ffa336fee652fc04145ce37c0c1e33170a280f24d7cdfc7e6fed5254f3b53e0cb667d45f6011b33659ed175c7fbc0e39c93d5dd919ec153d2b63dc73d187c76beafd27d6e55f74b9f86f931b1c0d6dba52d983739dd3775ee8ce6f9fa44b1e328e78c6c6dfa8d9b63dbf56bb749d95bc7b3f372114e0764ae4721d45e28fc17acfff5dcf5b7ce42b946947c12b59780eb45d8a981b7f682ee1ae10aef35fbdd4e4ac4cf2cb96688efc0ce57192b416799f66d2eeab94efcffcf2d3e8b8e8023913e279c4b69e9037f1d70168c800f769794e06fc2b8525fa97f7a5a4d3fc2f6c09faffd8fb0da9ed87e7d8caccb2929652df4137a2e199bf1f0ee38298b23e462e89adf2bdc84e2bc9893b312e6eb1b3d27b6ae45d621e0e7f0757bdcf6c9867f7f74efecbc8c4b7b2d38b1db07e041c8c26906f85bb41fbed235a55c83e3c82a0f38d87cb07e27a5e0df7da5dfa8df439cbcafc2d65a431f8ce7ac47dad87cc6c27bd4f3b5ff6f1a73a4fb847e7e9963bd1083ae9d75351ef29f9edb8f6e9e5abef42b258f741587d35614baad49c7df4d5ac2d6a8c796d55815e2bb760b321fd3cdeb09eaf23acfa77a1cdc1027e776cb9cc740b498f55cc43f7f1b79be1fe15b615e56f806da585da3202e3cb2c73d7abfdfe6b077e17b4cbfff73f163714619e61f3b27f458279d678c0315f9d5351e58725e5db75c03b08e5f78d82edd8e774a87e24c536b584759158503c83ba0b8b0e2d7d5706b988b5ff897c03749fdc0861832db6b73e19b511f47f521790c87b76583717edd8fb003ed3dc7c12bc41e9e0c7fff3d1b54b20e35377ddb6dba5ae39899d206f14ec786fa9eb0ddebb0b3634df95473e8c3a4e87d64cc36a3fc6763383f23ff1befd5ea69a5fd6ef4ed58de0bf8a13a51e8ae696c99f38ae37341e61c98bda1ec9d373127c8d6483a3ef199e83c857df4bc647fa3d83b8479165c68bc5e9ee10869eec82f9f46879e1e6fe6b83485035cc4d06b6b7eabdf9fa07d05f1d5a0bd264771f3b3ac2d46cf207b6a16d87bd557a03c7638be89343997bf2b6e0b6ed535bb82985c9dfb41d667d7cee310ecee7c18e17d70765ebe576047b0f6b339694bfc1bb11170ffe56f5abcfbbae5cfd2bff75ec58a237c8b9aa3256bf8330a5fb7354c4ea9686493be27e1ac10f152d926652cefc78efd998dfc3cd1e214324688fcf0612ee632b743d478068bf5d46d94269e131e8742d89fde6a81b90221e695216e129de34ae30386fbbd2bc7879bffeec118abba9c03d853c45cd5fba9f66d67e2f5125c9266cd61fecdb51ac51a9e87b611c517c9b36ee034844641546e8f0dbc599f0bc707fd21ce41a5dd77cb3740e3d7159c561a0f4b0d9f27b12da02b3f24fe660cbc34fef5057111dfee5b7f6bfe7e58d701da25b4071bfb81f814c93bdd11d77c25eb664df5d90cbf2bebaa45fafe785c38c5fae6bb24672119db35fb266bd85b67dd5dda46bcc822bf42b550a9dde09bf9c5eabab127949380ba03549bbec1187b9907c9993f21f6f457d53fea37c79fd9fcd4e394d4cfbadb8ec37a1e8afaef500350c3c3605f5cf1f555ce1b7daeb118b4ce0107781a713ea2fb8d5c51cd7183e93eb1ba889b46ee05d217fbdb63a7da35ea6f065e72f031a54ff6b655c60cef534d3edced6fc2c73cdde9df98e738c4d9a7bf87e53cea1a7da6f161f9821b7abe4df5cecc5f949c1fa5b74b3b03f2ec178e5f7635ff489edd5d53ac4cffdb4fe3b37f997534bef40fb751387d001fb16ae40e42d718eb9e8689d56b512cede095d8508b10f93d340eb925e72ce95b56166bae8721fc267b704a01c332c6fed66bd2a17b897ba535e08847e5007a7c4ccb7e4163f7c728a0b5579a1610b1bdf70bf07f1f9751c7bf664eef20f3e9929b1ae56577f18ae5649d4738f3e0b75557d3f8e1bedaeb52e7dfa8fbac52c750d8a7fc9a1aa76f4e39e5deeab633dcc3e27f82db82f87e94f3fa3c077efbe2ee09d7d00fcf4bb723c67853b3931976d3cce9883410b8d6f630137a5a089f20b18e6acd0dedffc37659e30518ca3a50752c304f5b548e9d3c4f5bb4cf4f12eb54b359f4f1799a993440456d88985f9362f07b6e0fec79d1fbedade337cfd739d9daba0ea9d8b3836b7f3f7e1864660e34857bf3ccdfc76253f518a57d90361ec5f5240257eb53fd48b586517260c8d88e774a66ed6d1c5cce548f4d5ea3aefd1fc69c1cfd0c3aeb399b9fec3b64df982f88edddf15bc61893c578dc00930871925356d36f13dc2b62dfc82cbb4a204e6ddcab7c1a67f1aac4baece380c658305e320bc09f69a5656f9f38c033f75f8d6fc97301ed978db135d02d72164177ed3df6a66f100fc7b130d3efb57180b854143e2fa96f29bf55387439bf05b9e6906efc23e46afcf34a8f73791b378f2d5a370bcf6ac55514644c07e0dbf923ad5df955c6cef2eb0f9ea371ae754f69d9ce13a7b88fe75e41d6d393c3febfc68946ce5e88a9107bb0f51e0e8ac48ac8994bc69feb90700e29a85be0bfbd2858231663a3bf097b09ecf237fe778631a0d865ca6b62913571611aad6c6d3936eb47af24be36ad27a6f912d0a8637f7b73fc3c035deabbd3a4c21c1e6e7b017c8371916ea68c27ee79196ddcd3c282f8cf361b79e7f4ba3d4d2cc0c5b6a31599f7ad535c129fd83d25d6fe24e295e1f49a05fe75727dada66f769aac7e9d18c7c867144e8bb4523412449e13f40b1cced708bc67c798e6f9aef1bcd7ce863db067406b019e053c2625f04c59c0ff48fa75483a315ae3a0c52d3035481b849ce37952f65a0b87ece90c33a5cc0bb5a61cd6de9ab463f93d8ec9473a3f409b2a1cb42601af1b045dddebc2b1d7101728d97bc231f8e871e719727109d57178615a27357b20b0281f7b14ba1b8ee730612fe359b7c6a9f4a2d75282f606d5dfa33a4bf4bf550ea6f931296de06f617c8b09d36229e2c72ed5eef05b5aadf03217d7081e1ff62e5a932ab09f0c6f26ea7fd22a6f097e26311eaf0adfb3e0c258d5317650efe62b1c8c37f2ce228efe467cc35a0e9a73ba7c02f73ab53f56e97e3ccccac49ab6d32acbb8d68da695216c70c90bc362ac2217cafc2561abacf77a0cf63b3156bea7b09ce69bf47151bfa9dfd4d372e5a7a4f04eb195ed797fd9be24f2aa1edea71a6b1921a6817e833d12c7cd8ee4ac89c3fc77bc5a6ea2d06f2555baa3f3a07f7836e7a56bf35e7c8b35d4e2d778e21807c18f31d286e76a3946035efaffc7de9b75a9ca646ba33f685f1462ba5672292808369982d2dd0964820a4a2d5bfcf567c48c8608c0cc5c55b5eb7ce39c6fec5163afd78420da19b37d9e09d335681f989ed2ced3c6b62ee10668f5dbaa5a79cb11b66d490d3ffa774fa2ef74ea2634deb226ef315b5087bcbb93692817d7500ea17ccf9b7a3dbbc31cf512f5ad73e0ddcb8fc21de3fb8ee46a4be45e6cbc5bebfccac52e945de2d7bed3481e68d184cbb53220de5a06f2998bf3307f1097cb30ccda3810c37f501d74b6e7d6a6008ed5a380cd42ec7c7374acb156b7228701cd89877cd8ade897e5fde1d34e5d2aaba6755e73ab7d2a9bd8996be54cb4f80325ba77660570c80b182c1b2c1f08e67e13eb14e9ceb0c68756ceb2a6139d05e7e735f29501c71f7ee7729e991fa88535cf6391b3bd0ff8f2edf1b0dc702c2f73ec8f6ce15b639d89e4d0ecebbd5e654d8c2c65a6a9e25878ac3e19ef4d52037022d8d8e4dfb4af76d2dcbb749d1cf089fe17d649067eebafd609b87b9fae1391dd220f45930b8ec767e2fa8b7d0b2dbc096a577fd377f0cf62df715c72f3dbc0e6a4b579643d0a18af907743640df14373f2adbad5f95efa533c4303dfb99d6bf534bf5f3c8f298739c264d6737f78fdcc11dd4fa07355023f01ed1bbe77214727bc067df7d1e61ca27aa5754aea9a14817789fb4603fb80af69581fb9b3718df6a4bd2fc6b02ceebd4e5d09ce8fd0f6893dff1cff7284315eff6e1deab54e33524bf29bbb2b589b4ff130d833cfc641ef97534306401ceee9f927187dd8c6e8e4817ab9cc0ad0cf9bf2a0814b0567e83df1974771cfddb0ae5eddd09d5645728fe54b595feca5e7fb87da25b52fee3fd55f879c4bd6dfbe7dad7d39620e9df04e9b0b86d977f8bcd618c7c23ed5cf095a5baf2741fe4220ebd2b47ef6699b2d3d9ecb0949267616c8595dafb06a625f117def3017f552bc770e5307eb1fb3d598cfe36f7efbc2efd97a6d3016249d27c126aa73201f3cc7b625637981eec02ece4fd6df9ccb75a472cb69c8c6c797fd057d0c7053c8dac139df35eba8e0eee6d68fe328d5980dc4e9ef7c9d965a45f2228ffbc03b29cff683777bec7edaeb8147ecbed844fa996cf7b01f7c109b80e15ee323f3eb43b9cccdd14b3a776ea9d53b13df536fcbc51312535fdc426f5186871cd743610e098c33aadfb6e47e8bcd829b4fe0f9efd578e593b08ce57cbbf1ee6532d97318e7cc3e03fcd8cdc1c5182680010c32bc8aab977489e48a0c718b14d99051a59651017c7f18d71163a2c76641ee07cde26dc134965fd13319f828faee6ea3a959542c81bb3d28942c2e96745ce49bea2ef05e905ccddb35c2fac39c247964dc0043ed6dcb62d35feeaba62cec92916fed9cde655dfb26caa6d6fbfef269fd433bae89fd7b535d31e2423f507f328739c6e72a4535a65dfd7b576c19dd2b9cbd706cce03c6e468e54ded2243b9846b5647c9db1ca7f65cec4f4f7389c7b5bd6f4e4e9cdd2be49d3c883fa215b3a6f5758dba17219e0976f9e8d8a8b51eb6f2f99ec57b9b393a5cce4557de0ff5d7fce2e6e12d925b3abf90fbcbecbddd918b7171b9b76e03bf29e7e2a32e3b3797dad6a5769f94367f13b114eb785c477b80fff85decce97dd17c8e79e007631a90f50f28f899d4785fde8cea3013f18e7231ab23a645ede43fdbe96416ed0063845c6bf4d639fbe6b2ad2797a84478fc9c6b74a2da7d549c4b0c35c958fa8ef5681bcc6b991ecdd45b471798c55c2c788fa53e815e66b000c65fa7e0b4716637e311c8f5b5c2852d447b6fcfab231f4c7aa9f5c18172a60a7eaa748cb687b27fc8d7dabdd7a2fd911927b84a7ef9af8d62e74cf7f423f4f1a18b5422c9ed55975f2ba116c7ecae156eb054c0671eb7a097cf5164df6478ce38b7522c2f9f1e8c215d978031978b5819782c6d9f20b9ad30dc4a1633ce707581bc60bc3ef2be02cc031e02e9f22bafbf62b7407b8b0af311ea5c1fb9121f6dac117c3f9b7355a7f4fea6dc7e23b62ddf722aa9f71137287f3b98965dbee4f33fa2ef3d3e6529b3fabae89cd934ad5e383758db7596ce6f935417a8d1fe6d80f1996a1417810f4dbd6d44e7cbfd369a5c2bd0ebf61ff7eea6b26fa9d70679c52b86bc9bb53fdb64de45cda184a2f4177ec963dcf30e0d93bf5dc92f6194f4b7f836c9409abd9ce30b7d4f24ceee862e3b9a7507b416d97f4bb8e47758ab00cbdfb1edb26e839751b3aea39f16dc00d02bbca61fd627e5ce0d0c1be3ec821993ac33f685c41e33babbe7d0c7dabbfc198b80fa82f26e3af7de7f45da4833de3e7ea71b1a85e23af41c02ec59810c0cb7fcf43bdde9f719571b15277ef16fa09e24418f7f786f4159cf32362d4c17cebe01f7c103c0f2c235b9881823fd40bbc7b2ff41b3ca3dc19c3f337e4f7e37556a9596808393470465ca453f87382a9125e23e3fc40ba56e0e39a03c0ed86fc7c8835e5817c7e30b9c3f5df93599c6116fa7b7cb6b41ce2388ca744c4f044dfdf85fee2312bdc4bb21dbcad245bf725f7cda5fed13eaf4743ce5c2bb7945b6bc5ec9c2772be05aed361c6e5e9d56782e8529473ddc2b971ecefb303fa5d3a4e9dc129f40687c4484ba46ba1f603d97dc4d5208f0ec165b557c6b6abe8ab3cc0f68e7edba267c2898be55c7edba2f778794a7d5f336d7870dbb1f774e6a891e52f9237ca8d8e65416af98b14c997d0b321472729f4d3c65b72f3a2fe09fd7d0a352ef8cebbc6048321aad473e09d73e04210f7379c510bfcec425dcfc9a47b6b74ecec3fe896d437333a0b587becbcf4ceb0f7f0dd87648afd1e15779ccf0bfb697dacfbdfea4317a76b3396cdef6dca4557e79189bc61427c6146ce45477c1cdf2975df618f36b1e5915ce9941f86783ed0dddfc14b76a8cf678ce4225abb4b206759bcd7a5e96858ce0ef6d5f5b19e1af88b7caaedd97371dfdda2bd3b1d8d19263887c5348afaea00d9bc9bc9329d1af3d21c99b7f96a7e8e01cf16db1e761df73e99e3fc1254985bc91c23fd46453ae411d99371e13e42df92436f097ac814e32dd1bb83e9650170a940ae1ae0ce4707e0dce9f13820cb7c319ef994f3eb5e06b27b012ea042e9817d48b8bcc838e6ce7aa1aff2858eee187436368cebcbba4610efc92ba497467d6b00b90313ccbd18cb4a2f2e904c4336cdfa628ef58b89f113618d02ef96867d2b639c67f0ae9a217d29e1c61ec8e83dcc2f92401e424e63fecba56bebabdc5eb5fbb680bb9cef1b8751f50ca376177803359017798c718b8f98f348b93ce5b5f378ec2ccc2bc7d98dfcdf3a6250a0bf03ff76240f30bfeec4ba268602f17e9c83c6b7d1d08bfd05cebd18f3cfecdbf95abc1d51e7dc0c8342df86deedcaf26d1c85cbdf721f9153bfd7cc9bf1657267ea90c7714d7c1c370c7d4bda78ee636528985f8ae6d1ecd56de05979a4292c876626d758f7a1bf38cf7ed4668d7b26d84f7dfb5adb07399c79a45fa33523b60bc8e57747fd4c0c651917f97983f321e0b999a6c6e6612141ad71efb69dae4ebc9e4fef2edc06bd63faf939289413d2a9deb14c48dfb6ea8a70b36199b33a11db41d0bb5b7dd878835b02fc51598979364ecdfcf6323aa83dba8f7ccd22b941766c623b90fe5de9c6cfcf2ff1c495de2aa60b9511ba0fc8ef5e6f3188901cd20652d44367af57d23c8c5a7fc8cfddfafa29053b0fc9b50ad7da6d3c89da68a45fb77403392bd0d7d8aceb5d91ae48bfc1f2a0802788faf70aba2f6edb0656fee3ad52a50d3a33957a09fd38853b68ed5671a154486f5d8e55713ca01363de0372cf64b8bfecef32e831ce00f76b2271b5dc195a2712bf12f70bd22fd6448f4177f5eae09e03c0cba0e3476d617df70bfc092e97f1c6e3927d8b4b413028ddc4c84fb180ebe04a1bef8e7330f3365f9fa8fbb87b3843c49ec37af5fac4dda558c7736e9cbe23ead889ac3fb05ed1ca2de6dbc47a9a902b5ce3dfc05ed2158edba2c137d0eacf5ee48b869823d28f5cc889f7fbf5bbde434d04bf94ec4a748e4136b03977a339e7d3c07e8c1c8f4d63f5a4e4fbddba496b4ee0bd248b71cd8398474c743771fec4782fd59d883e769d6e4ba2ef1d536407060493c79c2cfa1bdfde6d8cbaf65ab0a5b04ddbccfb606d615d63996e7cfb816427cce3c4be923b97d98ec4eea2ef5d1bdc0e251ee710ea2cb839403abeb846f89c37da15fc0710b3c67b216b3dd78c8d7079cdac0fef952aecbfb7461f664dacd52a13fd6aed3e410dc014df2d9f9101be61c1a7332bee795424d246a3f12f246fc13741b1b9c97b2fe9dc19fec3d49553e8bda4336778473264aeed4fa6ae907b6b787fabd44f74a798a35beacbf73cda9d525f3ee71fcee94fc3568358a6d7c3efa2f640f7879c40ec9b8d7b6768cb5f75c6f9490cbf3ee3f5bf0750d7f0e164d4ff7f32f53396992e1773c3f9873c4f0fbf8644c676c62a2bdfc13eb926c7ce37b9d4cf6a57f87bb7e3fd25c5233c81ae05588c4ca675e0c19ff30f7f7ea41cf653c871b47b81bc6ef804082782764bc322cf23c326fe152e0e87e51cd3b1e63bce6627fb8ae39b014e86466d52f32ce0dabdc22dbc1e96fb1cae04e844425f5ca9594f063659ab2d19fb9656980ba2f10ee6ef45cf46648e5cea0bc33e9b3c3ed865e82fe6910c387f9f847f26727dbb8c26f3dadf0efccf19f673111fe24c53b9ff7613c29345f427ac1b7eacb1ef97cf83c1f29afada2c561f45d7ad31269e1f8cd4d0a23ba3cb0735fc51dedc577767cb97b9c76313b0adf118d83a3cbdabf5d3cd6fbc27f868f03ddad957efa127fc9cd572b3de9304230fea2330c63df36757141357d8c3f959582fc827a073213ec7cefbaae618a97d3f9afa19fa99147a837dfc304b3e2f23e6ea8e810766fbfa4f6a0f2f65e5f6e15b65286792a965bba933ace6a3f163e6c3183046ee38cc02d9dd46b2f267a6a95654ccff6d9b7ab5ced7ff4d5b1ab7a7b4743ade5e75e5fc148d3176d5b4c63ebdce2a15ee39d236c179b0ab04be6b5e42c95ed9f91062d371dfbd519c92c433cf01c5b7a938bd88d407c35ac3dc913ce989d50bfaf635de0e0ea16f8f43df2a81c307eb5706d251492e0189890c581c81fc37ad65e639ba68dd73f62ef26a09bff3ba98207349bbdc5d247e03e9e81d7cf7ad79d5ad3c905d341e129f251c49646f523d6156bda6a0df6b98177546f056e283bb4b0ca59a15c9782d854bac5f2d7a31b9bfe2bebb9d790c6f8b9c51c6b94a781f99ee7a9c229904f5e86e857994dd4bdc77abd0a1f3a296b1fc7248b07e7c22bec91d929f81975f4cc3dd8798cfb4fe9ee88fbf85a81ddf3c02df03c9c16cdd67ff81bd80b9aa78ffa02b937172be4866bffdf57e001f32d1f9df384eb53adef77a35c7c886c77916be66c1da213b1f9d456abf91b8dc15e3b8221b4ee9b3f80de6bda5eb497063f079e3d72d211804f176b0dd7883fd143f23e0b07cbd0fc9ba38c2fe3b99987b6b45b100883e23c5073eb706740c3cbf75fe13dea7071e2fa7f16c6d2f9167f19a73791c789c759b7cdf5a6791d9787c9f575c8e2cfa46ae7ce2ba20dbc21899832cd21797c0877c06c92eee5948f2c2126fddfcc6a74fea011d56b37b5f45857e83bc41b0cb709f43c829443aeee218f56d2df4c26b5cb82ec17a388af8cc6cde4eaddff1bea6f732b35140ee17fa299af0ebd09a2fbeede7f385795d84f9aa6b55f8da2cf50cb946b20efe8ea08038e5ce95a46bd04b9cb5a6ecdcde3a8d3c17e96dfb18389381c37a1fa27bd35b409d0dad6f5e7a36c44e439873b0251f89af626e32a8690619d50f7cebb2f10687b8c2b612e1af7dc486bbdb78fa0938e9e535a9aba13e50dbdf78f7d30a70a69717bfa7d46d4b768e640fb22f007b92d55cf2ebde6e6b5db8bbd0cbe5d0253205ed2574af81eeba18d763ccaf515ed776a2fd1d1f5cd8d7cfcf1dda5b70ce917ef1b00d17f57517105c3f3a07200f27562f5cb5fd30b1a19c3e906c326ec765a7bf999e3de6fb457d1b3df31b339d8e8b9d339f326044e93ff1230bfb13b86184b87a7a58825f1eea25f831105c86b920abe2ba2645cc61acb178a89f5318173a8fb6e1561b3fcc431dcb19fb605d23b296246750ccc7d282a2ce49a37ca0e879fb0affedc01d549fff31e12377e99a76f8eaf15c9402be18b10df9356b8e119d17c70bd2a870fb0d9e0d753dce1f609363df07dc4dd80f8d7448bd08dddb16e99461e1ee3ebc05608726b272b1facb342828f7383e9744af236b0338025974a8730e914e1a1979117a8b4120df73c0272820ae496251f75a5f81fd4bf50c77604e926b02b905c9352e4e48472d08668b84d63e407683ece6d156bd4606ce5d40ba2f1a73e89be974349667bbf99fa9a3caa16f3d8017a552d15a53ec30cec786633cbcee8a63f94345c43a87335100968e9e94917177426f91a37d82e5e682d97ca01350ff5af31bf41c331c45411f6870ca0a7be899cca275289cdf216ef88d589f17187bb6c6707ca6bf5b0f6affa83970e037fde5dc199fe5eedb5ad20ddb55fe57fae8ae07abe53ad47d99dbcffcb3e09b7e61f1e2461c43903ddfebd5dd1cbe75ce26bf968d77a52fe6b5f59db89357e2c9dabbab7ca1da7bf7f3bfd5ff2fe6bcb1ef31ae26d365bfda2745ab2daae7fccdfe20efb835064dbb8fb4dd43ad07b9272493beda1b5f8cf93fd3cfdef37342b1c1d8b9736b79c0e555f6a2823f57d8af46fcd9b8e664727fed7abea9931019c7d930eaeba7deb5474479057114908b587eb7ec31fece6167b871c736b0643f2737e14e9b15f07ba3dd419e48fa6d43e5268767c4ce8ca04f7c6bf775aca5887ff55e0d0fdfe903536d7f10fc93a3636ac9499e70b6c2b2708ba86f31fc37f48ee03b34b22aeac7a90d385a26a7f343ae1060679ac63d0f657df7e1a8a78d17e6413fdf4586fb302709e84051a1483867016a99f290c40b449d48edc532e8d910bbe4ff668ef5a583ec70fd0effb3aae19f0616566b5da722e6cc016266fe3c6dbf2bae5deb3dc3c2798c93c555c07ac1f19f2292efa7a89fe0ba08c33d04de62d0d0537eb5bea9654fef947a0fdf608d7dbcef0fa6767a7ec6d0ba42cdb798033afd813c6d9e196eecff30b524c6fd867ca06ff58b268edbdb767840f2bd31a7477e1c74dfb5cffc97df6fc8afeef15bbd3bb22fe22887b542b69e1cb6f6a890235a855eef8acee46cabce434fc7fcd57db477f52de0e4101f648d71a31e43dfcadfd077b6716bff6c26b6144fe6bf66955204dbc13974145a6393c5fdfc12543d3ee7e5cceba5330fe3ef58accd26bfc590b36b87afefcef0bed8be54a6615fd15e877327f8d1d09ce53bd348f2640c1c1c72e8111fc31a6ae768ad49adfffaf33470d47ed4b7fe04be05fb09c707d769d04b16044f64e7f62cecb733f24b52287fa85f0e747dec072b838a9ffb75edc71b0ff24476ab1a2b65f0007f2fc545227264e32517580b74f6fc45deb407d0fd49fdb5a19f9571df265c7c0dfde5df96c5c2bdfab50e477456126fe9fc9b88cdff5ca76ede939d6d36cff9a3517f067e5332afa39b62823d62a6a1a1203be812f597bc9ffb1bdbf0c7fbc47dba37f835e4da5b117b2929dc0a73bccfc17ea35c26091a2b5a5779708d810f0a6abbf8fd85f7436fa1b98e9a7f18f92399cc2fdfeb815fdf8f4ff0347f0b35e73fd0ef6d23dfb3363becf6460c5bc8ebe9b88b53534b468137c0ebc7f91fbef3e14d9dcebb58da18ba84e488690cae04e3a5c4983fdd63986ac8bea6f11b7e1ff37a4b5d932cd490fc540f77d4a7ba693bdec9eb047619321f15cd57e93c67e38d67d3eff171d09fad63a3dee4d9736bcec7f5773ed4b580071df8f93674ebbd4aff26ee1d7447c0bdf098d2ba0abca6f987e1ee12d46f43e9c55bfcb7994fe7493d87be7d8ce465a32dd54a345a9fa162df96a33e6aff31cd19035fe87ee32dcfd4af8fe476d4770f1b8dab8d02f9af9c42a321ff89cc8f0bf79e787905f597bec9ed6dd0239b7d66f96a42fb7a92e33cf525ae31253161cc3d97d238cf89e87abbc083d8d03f2137ce581c436ff187c43668fe3bf88902790d32c9d7acf65a68025e2b9a370dfcaa706f413d18beaf9dc18b386eac5f441ece9506df16a9eb0dfd7014c90329f433d47e4a730c661c2e22606e22998b6b64bbc7a2dfb67e8fe821e31c384fa2423f71722236051c5d8801e581ac833c076e4fbf1eab69f4708c99cf23c439f9039a33d5ece35a7e25351d275cff81f5e9fc0370421765a2a95fc729c6e129f062deefbe0f7da4d3f4b09c2adc63e08765d4372fcdba8d988d7359c76d7e12531175bb7fd058c57773c9eba46fdbf6b96de08d3f9347348714f7b7212f84f807607fb031f2f8214feb839b7edb8e7ca35b24df076101f72ed4cf99dbdb36f214c00f9fd11c721e3760626551615fa3d5318d0b74e69433c1c6aa20b741ee5968be02dfbec6bbfa1907d65197a2be557361f0790dc0c56c237de5117aee1e9debb56ebdd948bef9f6d19cd8fda8a2f2cb7ebc91f74c0dc7ded05d8531fc20c6368efaee364277a1cb72e285ba40dc5789e425db2bf4cd463c02fa81e31a34df1de712af65173827b0df6bd08b3c2b8fb771fa5e911c657d0172e96d3b3c4ee9fd0e6b98b23c0f924f8ce7721df6a202e698eb63daa8ff031def1a142ed2e1a6a137f803d8a3d5f031dfaadb8dbfc478bd1ed4e91f037f71e4e3dbfc598d49ff4d2d3d927fff3147eacb4276f78b95bb9faf025c1737c1e3781fddd2f9ca2ca7ce30b5b6c3db871116f4ff040ca456bbea076a3778c4f2dc9b5773795e9afa4bddeeeee57fccd1783075f67fd92eeeef7c15f416bba01fecc6adfe2e9c7d09f6e2bfd06e385a64f35d202d8a467f47b7f4eddf69b758f6e7a3a51c3cd6edf9adfe9576c9fceed6bd606517f3d1be6b7ee56fe7b7ceffc67b5e0bd2f92463cf4e9de115cff7f0361fc1ff5a585e752d81b067c9f9a6ff7d4c6dd9bd84be85ecb107dbff0e3a37768eb12de97982fc0d7c372319c26a2d863753cb304e84bf20788f48a7ed651f3acdb7cdf20fa3fe3baf5337fbb344fa4ea19f85f7c7ac0f8eedeaaee35abaadbda42bb977def8b604f14e7aa7933c784eb7813c46a8e1190fb2d596e82f3ec5b35597ebfd603213fb71e5ee0a9067e6e828e89d53ae7f0d5d505cc3712f4b8cf41216f72bb227a8fcb5515b555aa231479efe22e616931a56e72ee031d35a2f36775b75029c6b852ea1f1d0b6914d9178d629049f706f8b6c3c2eef2b8b0aa4abe13cedb936443277174ddcc7c60fd158a4a81adebf5cb3adbade00e6295fff96537fdd03fc4586fea063a7fd825a36c37d0964f79668d4fec901df19e27d86959b7056ec3cd472fe4effe78c9b17c8d719d3310e7f89b5e14d392dc64e9bf3dfae19c6f72ecd69e8b80f4b769f120e08cc4f021c05fd8d91ef36ec7b8387091cd43dec6b21cfe17a3276d670bd26cb05cccf21b5c10ce0911d607cd9a417f850bbc6746ca4b7aeaaec42ee30982321cedfbaebcd63e05b15e076188b5edcb7af914bfbd1cad33945f2228b74fa77a8bf6dbc837151e9ddcde55e8bbe20e37e457ad59aea2705d20996042be899cfe7791e00c5b65f73fb9df9e20cb4e7d05d8b7425770778ad637de9ac8e78dfa0fdd1dcb746af8cfb8b322ae2c3b43b3f9ded9f06a67b11f52d3df016c7b67ce030c53ae403ab6f766ee9667b4b935173cfd698161b924b0f7b8ce5f80fcf0c57633bbcbd55c3f3ccebc2a360dffb27c4a60d6517787787acd905cf4906f7dfdcd9634e77639ff232a1dd771277d1ea7e7972d9c0b5e0c7513f436a16aac0cf09864777dbdc33603f88fa7be3590e3b2cd1f65d73ad085821ac5fe0a3ca706d0457f3fd7c0e775cbd067ecf3ddd7ce7d937f9bc75e9d4ec43539e233967ea8b63e28505f8cda9bca0b2c2bb0f80df9262d33acd31f1f716e66fc26d41dea1505ff27ff7e47f664f369fe17d6e5df70f91bf6dde052273e8dd83ec3eec63039eca49e8dbeb00e32657a1aff736be954f817344d906fe22b76557720dfd60551c26bbbfa01cf4edf7e4fc416b4c30861fb1ffb62aab3d31fbf695d6180638271f7084e2c22d42dfcaa36291c715c90bc7983038ded2b3716ea49644d47f628ef5c78737d8d94c460e12abe68585bd89fa8fe3e4678a439f3e79fe107a03321fc38347eb78b55a1f8afa96c1f67b2e1d385eb82aea6783ae6f213bff639227b47691afaddf18ee6ed3c7f18f80f85b020d72f431f7a80c3c557bd07b8c711a8ceb3b26d054fa0d21ef7f4963363df2df462f073d77af14a6ae90ba7cf581f67de80c6fb3ddf832d7e9b390237980bcfdf11de974f4f91be8098efa7b7a60b510a98bf1e1eada3ae2a79ab1be10bfd2619e7ec8d63592ef79e00d1453af7f0f20e7d1c572d3207ab437c498fb82ad7ca3392d94532b65df41fa9f07ba0df497ccefe7acc81ff55abf1c7d822b39dd826f5579273cfcfcfcf9d5a08ca57a9ea79a9205c5fc4af521901b23e97f286638ab6128c4fb9fff6eb3ee8ed5164a748fb15ab2cedc3c82272be423118e1e8a89730d9f9fb10cf04227f3947211203b2631528abd47e22921f0d060bb4da958cc09e995fa220b0bbdda38c38139498e1ba49b706b6bb1b312539fe020c69c05200fe38ae4d201fe8e998ab51a168df5e13a53728682427f84eb244f7474ee9bb576cc5f29c1795d11ff3dc808d01febdf65f702e772727f3527588600ee179329e2f3313eaf480e500c90382a7ad770e29e4287fad53096d9c65fd4f200f022cd93c964d6a20ce501adad05cc92d877cbb8581fadeae5eacb04ff2cc7e78797b178ece2df49fd1cf1a9a787d956f9ec7a4e90bb5c3d1170384df85a361c970b288e98876b650283aca5316cc815b5daf821cd07176402dd779f4e5d6fe4628c482a43a508c9b4be3a68f601dbcb83569b4b7c2f32ce5b53073bf0c6eae51cb50c0dc07ca01c99ec1bb5fc2176ffe44cee2c5b3175269b958f7e2f21ed32790d73202bb70fee5b78eeec6b47bbf5fa1fa4d493892de3e5bf42dfa26df33e49e863e22fa448ee951f382e7703194fe468ccb053387b4fe83f273b9b6bd592438b6b3cc9e97d7da4f55714af26ae6e752c42e3fbe5560d3f69194bc85e42f7af4ee78ad433b1357efdd486477637e3bababa9e91b40398a9e0df92ee027e23c33495686d5c8de5c7da40b2e79e9b5afa672a63ac58737463efb6f3c6cef907c79bec9177fc55ab46f512fa497d560d611d6b3d73f4ca38d0367e99c7db8ce257105cbe1bab71f3e473fee14a04d34f9867861fc8e96bbf041c8136ee95d0bfaf6ac3b06f891bcb339cc05a3fc475d2fee22df41bb632d613555196d1312febb1156ebfe56baa7350c59aee7fa9ad1e9fbf5873609239e5e21ee748b67b91b166784ab85e5d3807a83fdb9966c17d836568fe587235efcf65adf85cb75e6ccf37deb94b5ed7f7fdf85e6ee4f581f263239d106ae2bc25c154c31c4433a869ebe589915d43cc059ec7857b0964f73123be19bccf29b6088e8f0b389b072e66def13d2cef703c8fce27ad7589fac9a521af699c85e2a835312d914d40cfc41262efd5e018f88bf7441ed4b5ce7c3fc6dc58992ec9f1a936be19d7f838562cb917b4167181f1ce3abe5ddf17ebfc617b835ee4b955e059277e2e7ea08f9fd09a429d80f792063c06813c6cc4734ba663632eaa05fdef73087e53eb3ddcaa9fe49bc358ce211e3dd75eeeb39d4a9fdd014790ac541f8e3a0fbcc1813d6fe855e049e947552a6cbef03dc3c7ef773096eebb641bc9ca29f4f4cba7a33ab54f11ebc201c80395e8f8a0973f4c43bf98868095cac9fd3bd18b694e3fe10af2e89da40e433fcb225f257ca1647ef4d7cbc65fa81c762b8f3d70c49847755c9a7beeb739918e946be47b5d9e5bab2a8be6ce2d9d6f6fe9bc47b1d98fa04bbfaf5e78ae5eee6cb56543972c981abccdb04f3f2ac13e67cfbd55aa32d5f68001d82d7b049f5fcb76e0b09098adbd32f23f1c1e0560957c81372bd31a7e4b2679bd4e5cf2f546a6cfcefcc0f1177a7470cfc82e088a7b3e2bd03bb723ab87d712f05f851e916734eefb5c67e6d7bc531603fe9167137c912edd19ee252bee613b03eb8afb438d3da082ffc2f506597cd83ff56f90bff3ef5d22d9ce01d341ebfa2e7021013e11af679b63f4fbfab239cc53cafdfa950c8b0a65df394ea36e1fe3a6d5ff8d6c59e1f9bf935f9dfe04ec4b5f52ffd1bfe34778cc76c3ff93fd0860e38698af39437ac6bfe24b10d72bc3585d5e7e494619f9ed873249dcb747ef2f64d1933dd33c0be97b259c8163f79e03ac3778cef11780b3198eb1cd4e70969fe8531d7bb1b67dcb98e1b0b5cfd0c65fac3ebcde36926f9dfa4f003147de1748ea6e012f5ae9c595ca70c902ca8161e880fdcd9f31673d309cf5c072758c3b646aaf185bb4716622792023fd00b5cbee3cd883e39462ba52ecef9ad718f2f0327342b0d32a15eae7c9b87e6c377f7d06f24bdc576bff1ebafb89ec8f2bf537eddbe784ccf5444ad7f5df21a68e6c120e2f52b44325c0a96177c64767ad20f33d002715c104c4be14237fac0976e0744263d67cbc8fddddf81b2ba10609eb72348e3e9252da86a99d528efb8ddda13516d110726ee75a0cf7dc74344e6795cac6011c25ebfccddee76f8e6b875367f80f538bcfe8f9b72df3377febdb490c6516629ffa76a69914a7ec9fe6186c098ceba90d8f41b54fe7bbe17da1f5a0be1b6a8d34d508bc451e14ca7553dd52c71bec04dd506fe0a1180b747f80ac8a8c7c177a03ac9b030f8b89fd74e39ee56a35764b0b4714e740a5ab713eb2d783950d58dbc08d4a7146ab485624e0142d306ec707f61b425e1ab313818394e6fd513cb404f207f19e237cc4e2395a6dbc5e19197a55e78b537c77759bf88ca3e314c998179cabc32843920302b846045715eb9d70cecea1cfce00c91100ced32de119d9e36fdeafa8adb8bfe8e19a829734345c39f4eed7d8c05cbba1379037be758d0aa26ba1b93116d506dd73b27e22dfb805be7d8cab17749e187f2af695deafa18c6b86089e0ec82601a779abe6d1212ce342b9101d87e6bcff093df7c6af552c03be329a9332203ed210709194be98f780f7478cec09920b4f717308fed6a73d763dbff74a7017fe0e239bc87a8af357e31134755aca1b58804fe2d3976cddcd95cf768d7f7e4974018380973dcdbf1f91cd1b793a3a378423abe9c7b9e7d1b681fd56b1d82a7bf6093e1de0d1bd6f8777a47303569d26a57367f8cb1c0d39deb326d703e598807fbf421f762790a92d5e09e8d7027c40d0368ee589dc122d9c3a7e7c7a154ad49f257118d8584e469efb8865fd00fe1c2d61780c6fdbe141a89d4263287a59a20daad0c79c2653ed358f2be530d3beca3be4ed0a3c1634970ec89ff4cfb4c7c72f09f748674e06e0025d912d4ef230788cd5666d04dcdd48979b1504ebd4e8e5717f918572dbf7d3c27d21f9c833473a9b7a9247e8dbde1afc19a1e16e132f39c0dd4d6b6634e93c731bf9d618cb232778037da47be0bac9e4c2626eb272490af7b2f170de38c7473488fa6b8ceb3ca138032047a5c05bfc69e490239bbcd820798dcf35d84cb19c4bf83d5d42322df101938bb4539f1f18539157426cbe338f253ba3731f7889c013096d1b8ba3a9652f680d684e12c3057d76e6014bd02e59fcedbf734e2be19c6e7f724ecd7fed9ce63f3fa710b363e7eb5b1fec0fea7e86a925d7f832cfe77a58f3fa79c3daa748eab618368bd6aa614c4d2d61fb815f138b7b6efa6cac987b7abf010c9897460e958a744fa9c6ae61789a502f0e9c96a4ff3ed4e90c7681bf3c120ec7b65f97c3897a9297cec649f3d7bfe722c2760cf8465cfb4a6d2d64ebce3415ed35311e4bf62e5ff34ef6f3ff401c73cbe5f270fb9cfb9de5c9b6b98a86c0651eef4c822315a7b43f689f4f5727f45cbd771b58a8a8cff3fc5c52fcd318fd7bd5a80fe47d6507b362b882457e263581bf9bbc94e0a3c7f9b607c2570ff35b633bc3f3d708f8e06cc2172de03277fc3dfe2986a99e408d1797d3668497862e5171bcd0a388e4e6861ec6b50f8b97969dd0e47d14f2e7b44efba412308c31ee5ae337b6bf2bcc83cdcb3701ffb50abd30a97990beb71be6d5ff87ed86e2dfe46cc17b80e03ae5adb80cd9b3e78d3f67be045ab3f5c1d72419f701dacbd896c7b1cf998f3968027a8ffb566e1aca2d31b04d121da08612dd4ffbd00ff3c8506e986b4fdd865e9625457e8db775dd2bd48b8f8ed7991c6e67452f9ff50167f59c603e91f3c67b39839da0f3b90ea06bbc477b32b7637d8739611a187046b78dda882f1501c1dc04ec5accb1837d82c08b189753a20b39fefcb2f1178c6f7546ef2b49b9d804bb73e92d60cdc85e6ec4f2a0ae6c80f361ef6520e780a194f80b6c1b4df8b12f527302dc5580d514f5559c5b8f6c44e395d4990bebdf5103f67a358d4c4a2643be1e5f58c799975f663eb4036bf2e41e69e4ab8519e0391e727fe3db4717af471915c96a63e4679833c245d1f603e073025c7987b0045f20ba2b8d5cfae0ed9d03e1499a24795024353716be37791fe330f001bbae32c7fa259c58f9c6516781bf38067296995a966de4711a780339f0ce19d46bc09ca88fb7edeb35446b3e71b75087eb28597408b38dac33ffe1535f1ee95707af5a3ff4ac43a4658788c8cdc63d53df4f248f7d8df677dfcaa2d5b1fd5bed63a7f8b9c477784c29462eb913eb3c1859b97dacf13dbe36f42a191ddbbf311e47f591c8fa8de48d2c03df92001fbdf15bcdbb9fe4c91872c841d78d1f47a88f5c190ac5bd7bd4cf027e48fe3159fe328de4d4ac8b116a87e9b8e52c0b0db79a4e16c7c0b3f33887f74f38374ac06027b58df879a845966f97763bf8bd5a0f4e4eb3036d9bcae0ecb131f43d70de89df15dfc3b5da25e65486e78ff4fbd35533f720cd507f703d3a7e660d31c85e9ef0e3433aab7cbb2c2565b11ee773db5556ee585fbbeebcece2e08afcc5818e956fdbf1064524ddaf61c5c622d4532490c3a1f467857e0a7d4b9a1abd4758edbb74ef732cc7dd75ebac8e89f4bdc5f52be4d054a1a74b80dd202755e049c7a470abc4705fd87cf4ad1db2af191fabced6a50aaa2eac52e500f943cdb5666785ab21c1efc8248f81f485ce7906beebd0cfc83a5aabb8989f608df3505fe7b6eee9caca19eb63db359b6d164fda7c320ebcbe766ea9b6d4d357b9fdb99632d51ebb8eb867d0fed2a5c4d0771b9db5c9c63cd3d058eaf582f1fb36b2998ff55e67737d328df0c1d92887481b9c36dee04f3d5775db5fee5dfabc8b73b7a0e658ec176a7beeac0733bfb7582f5ddb5d57fb2efe50b4afd05d829e079c0d32f7565484d795a11cb8feff2fee5df68d666d302fc34559eb64dbc40b0bcc89896b881c6fa0d5bf511e5ffbb14667d1b773a18607cfe971837ef71756b4b77a611162cec4d118eace42ca8b3e592cd19c24867b36472f697070016fb1ceeb6ffb726c1fdda5fb14f338a97da47b26de4b0af83d8023beb821fd98ed59624b91f8659a4c9212b0ce094777abbe7eac8c578f63baf197506719211b9af4cb9c2c201f8fe8d2c8cec8434de4afa6fa4d84ec1923bf45c69ae6ef3f08cec031015b3ba9025f3dc6fcda83bf82e0cef3713a3206bbb85f037ff998eff1dd3635e8dc32fb12e90839d5d9e29e9ac77bb486523add0eabfa8ca0756a7d07f09aeb36f722cf6d7da7d3fd22c40199ad9eb76c27ba9fbeda83e88ccc239960d31ee6c05581cfee0dd92a25f80ad64ab5f46d292ef26d4271a5fc79eb9e2418547c7b50b7feb9eae43429b13f95d8d713f7b2011c95de7bbcd7a5646295c1c12538746ecd75323aa5d3eadc7d6f511ccf6fdaf264919397f8c798be81fa355b8df9f6c1970aed43fd0fad3d1f1f482e006a3702df32f6ad7e0a188cb88d139b17f04f20598cf41cd2bf7dfd7d51c6363812f9fe307de8857c57e4e167e3237873a0cf8f6beeaa5a4eabfb48761fd136914c03d94febda7e81b86fbdf66f5b3536914ce9ee57abeeaabd2716115ea7c103ec6227ada6d8275fcfcf8e97eb225e666b0dfaeb7f7f0d74b65fea7e8af70ff0f20ae798f91d857dc37c54ff1bebc0cee3ea28f00537fbd5aa49227e055e7ff66458bf4b2c231b717d9c6f09b76bbda784b802c5d36ccc67b72f55b34680ff66004e4ab1f1921eb62f5d09ec4da84f1e4860df6e5535323859033e948ce0012f246417d09a08abef7e5ac0b3e4161b3f3d119cb42c010e77ab971875fd8425eb9f16f0ecf17ba9f765ad6787fcfa8eb3a161ef642c8725315e4fa4e65ab8bb9732e0e332d9d9e18fa4dce9f57d222d30a65935fc3395853a1452937896a20a9dc95ca86d23fe43f89dc38d26b1759e7b61d10f7ce2eb473ad861c9d50d93314cecebaca34f6c9f0bbe7fc8ebb8bd5548c6df78bd6304b88c1d321ce371d8e758a8e7c335ebd34a2d39bf3f1d33f1759ed20d8de935e6a2b6ab487b7dfbca3d2f45fe505cdf3a4f66bef117d252d6771b9cbbdacc51e3ffcee7a83d40b79616a7d0d3abae5ce5b86f67817c1e45869bc5dbb8acebd4706cca467b85e05e3d79778ce633e9fc6e92275db9717dd2b6ec4a7c5e3469cf0cfc0eff4b4f216d66595cb5fbb9965de98b3eae427f29e410d19c9eb87031f604cee1c902f99406649e597d02e62a913046e439ff707a347ff616787915377c33f1c42a9302d9492cc74de04069e5e74a783f7c3a6a047bb9c8f3b82791ba98aeefe1bc5d640791385fabf67e8dc77264ed55226f6168e852e0d43c107e4fd907be9d91bc00909f2b237f24e34516c8593e35d079b14aa46791b34bb93040177e7700ff2b23ff5de7cc6c5fafe658df875a8dd5837330d415aca73cbcf8c600ffbb1a3430d8ee39eaebbb23ee63f47d323e8107c0ab923ddd8b98fb59dcc3cfde833b57e39e975de9f9b368ffd5cf3a86fe78faec6121b4bb26ed3ef5afe9f8391ab7227a6019f7ed11acf5faf9398eb8b55ae279e3cfe3a9960f2e3daf5d67acebb967ed4c42bfa3ae576c6302e7aefbfd67e7bcf9ccb3f7573ff8fe0fcebd7ec173bc6c9dfb468efe2d2e7239f0ed9cf960c5dac4e77569fa19ddb5d5c6731fbea3ae59be9d4f73f8d46ce35be45ce0357c928bc7cbf9a7677b837331d09d779ef35c6906ab9347fa133dcfa980c73b02fc32d6dfdacea1fe12c6eb047b71caf06affb6de0abe3f00bf169379675cf3c571e9d7fc554b3cde431ecd75d061e07defa127d36e2e183534963cc70b9299824c0bb4411cedb9f3e53c953ffc9ec27725b2099ebeeb46966c23dd440a9d84e8b1f5777979c4f747a8bf01ce8e65f3dbe83c21d9caef836ef924c88d2c038cd82fc61a93fb93efe7b7f26accb527e6f5e671472e7ee88fbbcee22404de55881f929a3f354b6a2c1b9cef87ee4192a3cd73cd0544970a3495f2559f699e6c6ce8657c98ff38c7969d578a7b816b65880e0dfba78c0e8b5b2d1bf8faced33f3f1dcc895ddfdb982b089d93404e41b7eece5327f852878ebc5c729629af09c59701fb8b712e625b28d0a47ba075eb0381bf7844f2c282f91d2bc5b4c60c427d663a3ccbcd6172a281b1c1787b33e0f39bb267a5730b23d770ef53a63b93e7f41e39bf98c352f499325f512b0fa8ce4312f8e8cff3eff341b2b8bfb80624676e2507421d09c4710a5ddaf861a78ecbff5dace3f8beee0eede9c05fe278f104fd4e6a2a40ce235d7290610e6e01c3e2120047ba4bee28b8a70fa16fbf05843b9dd5eb69c3038d07b0be3dc9518ec818288e94a863e40f47760701c6b3eaa865e1ff1ed33a5d2ebe99e490bb0afbd3ce12e0ca522ad350cf81afa6dfdda3b51e4ceac426521a79fa8d9cbf73e0136e46dfcde3c3fed27aaf4f72ebfb12dcabe43d6e2d84fc76f1ec55a5501b42cf58ac117db6fb1e46ebb1087c758c9e99c2f3379c4726e623401b30ff9e7e9be5ca27e8ddaef2d9cc45d9f88b59e8e750373585b3c1f0c7fe81e7548feadc499ccbf6ee0c0f34b7dfaa004bbfcebb071e882c8be5f4e0d35cc6d191e8fd0334a7dfe6b5c3def7f49b8dde11e53bd4812cfdc563e325178e3fb7b376aaf11cafcffde89ef8ff6bbd2bd9e7b4a6fac1d72a61fc057c270236435ddf0fb217ef63f705e909189f90e89a75ae3ccc39ba43905e45be45f939a2405f6491e7e2da6bb7cce342497d273b2613fb063904dee21c38bd92e2e8c2b928f4d3ac50aab052f240ee65b39529cfb7affdd96e7835fb8b3ca87a90a34e6a677e85be752578ac646d91ecd54f18730ee2ce595ce40f88afff2b3284daef1db80de8aed8786117fe0339438942ee70a6af537eda06b604bae349adfa4b5b367d5d7bdb78af89c920e2754c591d2d9635334d6dd6e4e0b8836cfd933b9322eec08ac795191fbfa8fd6cd4dbe35ad1d01f1fb9f64f2657cff339e1f1a469bd503bff15fce3e8db30a7e81cd371ed051f5c1766c91773d0f28d7ea10fd4b802a25ca37daccf63e77d48f2d4ddbaf6b50b4b05eb815686799fa04e107c95344682cfad38be40c3b51decf77d2f8f8b247759bd5952229997f8363e0bec5ce33ac86f7d515d3827352ec7bae5f7327ad7d0c88b8f0edc155657d6d67baf618da3cee41fc82c72173cd19fe9d9807e503dbee3bde67ddc75cf1c391c0dd43f6eafaa3cbf32f41d62373de593d8529f7e856bc628ce06773e787f77c77e69e354f0310ae00a2bc232ec136c0127fe45f2f7782cf943c8e30f3c7986cccfe18dd6cd09bce8493f2e72497cdf65f1869a5f9cd4e2d7636ae0940c99fc6afbecbbf586ae73fb0d9638b79619b535f13ce77789e498331b3491dd6d6ce8bb4d4fbd4613a453d3f8d6204ef4bb547fa3e64fc5582ddd354ac23b07354b8c0cc6e1f5eabfcfaad7947f86e4ff2a02168ba66e3f30b76596787789bedbec7f00b6935d415e799dafb9db18f9299c58385f5c3f63aefa891d27637a3e075dfb8db67b32f5db3632942c34dcbdaf99273a7fd08621e05f70fb09f7d19fd887d05ffe6acd11ed037ea6c65361737cfbcdb5a1d07f7f3a7bf63bd3b78ab6dc9cb2f1df525fb3ca50bf6d679acab799f398026fa44e7aa6d7fd427aaa882f9996c2d8f5bb54d72cb1f92edfb8b181df08fd7b22d5bfd7cff643cfba810f97e35d79778677f22c1e776dbfd235011d9beefdff8ddae5d55a0ffc1ee66674d683b5bd4ef435da3fa3fd6d3e8aef6fab7db5582dfb8bd170f00639040c67d1adeb21ed3c3140fef7a203dc8d682fd718dc0c6f4ab0532ba811f7727c0e34e5633a7afd359fdca3b9230d7cf71e87dab1b4b4d70e8c31a4539f1f4feaefd17f9775fd7d0ff054909e80ecf71feb817f8779c2ee348adffde9a811f55dbeaf7baaa72b989b51cadfdcb13bb15d86d9d58b276a8e6c22e02e9b10acb47a1cc4a7f59fc25719c37f6fbc25f50dd5fe1f8233f8cc07b4f189ff87c3f568f967b1dd8ab99379ae03f10e607946ef0ef76fde8f3cee9a33337d137c3b0dac786d9c316c2f0e6384e4b3a64d7e8586be89fbac8da1fe9ce20680ae39b172c75fb81b6f20cd90bdd25f32ac148c851f0af90aacbe7cf492ce5663d003a82e6239c33bd4b88f86c2efeff59c94df634ce50f522fd9ae19c77b0af419d3c8cfb14162d506c9e9001c6ff57386d6d5b7068186f930702e43cd0387f3c8212e81f3d03c570a3cf0cdfcd81fca619f92bb734e743c3e568f6316b126e0ee3cf775727899c29ec77615e185d46f1813b2c957d1adf751dc0ad8eb752ca4cea3f80223a7f55c0b3f52fad64f02fa8e8bd7a34bd6ffb7fc167f854de588fcea3f8d79fdbf83293516f9c39ee247b5b155d7dc7bd3a6fe8f65dd28311488a9b2335e9feb8b18e3331b9c5d8a1401ce61cd33b7ecdbd7783bece46837c7d08610af99620c7bd12ff438b7b87b989c59498cdbec277266dde0c9af7dbe8a1cfa961a179d98cec02bb0f4ad43039b594bbcfc9468bd926175385fede124a7fb17c7b4509fd8776b3f76d1786ead14334da5187ce5d7f8328d773bfc9476a154ab7e72798ed5175ee3bdd28ff8fc179a37bc06fc2882b1dff13ef1a72fa11d370be4b42bc605f62c7ccb514bc037c3f95724b70f63f2fad580e1f97f29d78d5c229c2939e636b524e03b9bfc75aceb95c363dd45f2fd84fe0d67079f69f1378cd741bebd4ea33ee41c7f736f707d6d639c96d121bc6e400f051d8a725ba033d38965d3d16f5e8608fde5f5200ecb9cad65c7da1dc5fdf0754c25a8df13b1c964fd91e8c88e4cbbced62ef017d21adde71a9fc7645f1dd91d74ed31822ff3efecab43e8db9cef48e0ff04bb83abbda5fc34ff0aa62ff3b17660fade13cfadbafc48744d397f12e0aa501c5ff8f773dfeb81c37c11f6cab4239e1a17ee2392ef32173f7d727750dcfb25ef4782bed4f7075b636e4d3378665663ae3fc7b51d0df9fb84d7a9711beddc8b3ef8081c0e3b17e9bb06e692062c3f9afbc1e9a36ddfce52f00b93fd7504cc189de46068a73fbec3e7690a71d723fd8ef04da4ff337b62f88f7afd3b306bbff6d1324e81669c92ab8568f1097460fb95b144717dbb639a8dfc43d87faea12c61cf75e7130acff0ef2786b222f1b776ff389cf56edc6dfd81c6cee96b101fa07b8cd6ad209d6ee32f0f94c7379207f97f4867fb22b7a10b13dbeec4c326315af0cdc7957a8db69d3a20ceedf5dbe71364a7269c7172fe491e42b71dc09fbfdab62567a4e1ef059c4fa89bf97b2cb246bc765f635bd6318cf4bd5223a2bf26e6e8d8da57d349bd17b83e7c6f67d4f74a07d6d838050c3839cf2223ff85e51be155aeef0188c793fa23ec5f019ef35cda184a2fd1d447e2ab042b039ea1f7715ee35065a83fc7c01becff22d6c0d6db23581b340f8ed56319afe986f044010f6ce156df61a8b3e729269ec8ab8479a8bd650a189b4c0fc9ff7a4f620eeb5e164f785cc867793670972d027fc8e5acd73a50132bfd2718e7748e3af2f49adc41fc7dc2f852de1d1e37a7f651fc6dde1ec5e063d8e8a0cf736363b93ef4ef37ce4745cedc93f344dbfedea621582d9e7e6bdc0dfbd01b48103beec0d326f8ffd287c3ebf8608b38a1bfe8cc1d07fd36b7f2b82fe4b03e42df5e473d8ae7d899df9e27fad7f2fe47b141fdf502f362e07c2bc82133943c96a18e05fb173127323aabbb48c67c0a3c86f0cfe3e6825f0664eb134e02826f82ee26989b34e66abc9f701f101e400bdd1f8f04eaf37bd06e5de329dda94c88fb76866c9dd8501e1b6e3e087f60eb9bffaa9f893bb75fe980b03f3066f3fc446b80ea73ccee8bc6bec84086add1fa69191e2bae8ba82076edd9687dca64b22f29de1a8f67f9f519a8fb259e01f7deb18ff358d8f3544fcabfc09ee7f0901aef3a2cb7b865d79431c9b1fbb739a0bae20478dd0e1b3fcc1b18df048f05d7e604de8b702fe05c869fde53ed18746c285017b6f1f4936877d3b87b8deff324a64d735abf6e8fc4374c43215865dc18b5b6cd846c9b467ecb2deae33d157837610ed8739d7dfd4bbce409c989fdabf9ff0ef7bdedb773581bee28f0ee0c3776c6e229cff4bb34e3f6dcb17ea653c7c3fde8c09b65fe2acc4f84f427fcdd11973fd31997488458c27b057c19f8fe5d039703d727c08f62e7664a635c1c5f577d0f0b7ca4c0254dfbd8c8038436c99e2b91ee47ed502e77a0dbff4d727b50dff83b3c1138369ab62037875fdb74689c6cbf03eed688f8eaf2db1638f33146f22ed16f5b1e67d46fdcb1be665e665be514c97616cb596c7ee3a721f18053240f0e21b51346c73432944b28bb54a726582d8b13d4e06cd547043906f7cb27f3bbd07b34bf000eac772f3f0aca5b7ca675fd346ffb96f8cb34ec5b596ca40c0f8062c3464542ef3169a3a9596424d7b8407ab874c1d85d840bc2d04fa1ac54e00b74d4073a4f21e8ec480fc4b94238271eeca61263a6eae8bede211b68e32fd30f2fcf23c3867ea2efc75bf516c9ac0eed11c9f71ea92fbd607c7accfd88644ae2935c73e395f53d4173a6a9a7c0cf715bfdc563037926a0376609c6eac5f65ca14889a19cc9b7aac01bfc892bb58fee3f522f7b0a3d5dc6384fee1ead079b1f984bfd621a831cb0ae64bdfa705e52c750faa11f621c991a035b8a092e3ab283420ff07300032df0ee87a86f9589919d0997ed3592a92f35c993898db1a890ecf2066562e459847965ff506e67c8e396515f40d6e521c1afdf7803a4135dc9bc72ebd87b74e1b1897de1796307801709b69b43e616c9dec2dd053e6086965013e1dd4f98a798e4111cf6842bcd6aef17826d1c790a5a2f6423430cdff1027e3f96c0b956efbf3424b85ed1644fbeb5807ae9c42058fe13ab176dd54bd4b7cef80c209d7349734e2fa178df2ee3627de6f19ae347c9fd1de4d17db6552de0cad7d4435ce8b70d8e5765e6d8566d1a47821c66f382ce5f3c71258a9d8171edd76964e8dbd0bbf398cf34d70fd96d024797b836ea35ee2f7fd247ec3b26df2358cddc775e600f4d27ee25c29896a78d5fe6a1b64f7dcd82fde46b3c2fcdfec9fd47e5838dfd05462cd6674cc212f060bd658d67d1c6d2d88787f931d9b6799503cfca016fdf882f80f5ef647213a7d787dce4f93129f207c637b9a5c9f679bd066e730063ecc0e39537fea24c0c77eff5c304e71558bdb0cdad05efa3bffbd5e0bcf15e8ed867313c86d5e09af8b61e1a491e57993c756e425c3774446c853adfc72ee22acb6787b83435290dab418eda981aeb7256f4ca08d91fbb1ad794f86184b9880bfdb2a9701e2bcdc999e5eafb5acad78e8bf31b28863c60816aafd7961f09e7447ece8a5e166b59e43b7b2c7fc6f76b68e88f8d367c08180970a79c48bc4fc8317bfdc4b885add820b291e87c793da924f7d11cdf9369bad005ac043ad70246c44ffa0e3e085d2a795f035d370e8fba13d3606adcb3a0704fb303199f83df9d36314af5d70b9a1fdbd3771b2d3bcc0e04b7cc9f1f61ed29d613d139d8dddcaae5d0cf50e38febc3f09d4e73ade0ef499914ee05df3d6b1af7a2cf211954e72d1bfa83c7c10c8dbc60bc2d8eba0d7dbb1f7a2ec5c264fefcba760bbe91061853538a2bf58cee9bc877cf75cd55b75f2996efb89ebbbaa55cbe77adbb5503e0a3991aeb4b52ed2f64cf9eb9339ecf0e4149e77de6a8875901fd4167e7127939e89a3cffef54c8f348f2e0a066817c76a3229743df7a04de7d81ed53778ce728277831d63582fc578a99b8e77339390c704e3fc41829545725793b4cf7a67670ebb9a9dbcad5136b584017522ac063a5b6a77edb86867e880b17e98e34df8fd8267931adbf4bd69e7d97e78a17f28367857e0eb59ce61cd2f78e5e8ffb562e0973f2c577f931807e1f313b997d833d83be11f47329ea2f7681afe676fd3dc8ada5589f534187b6f6819754a17bdb529997401e994bdb072cd7bf68fb1af5ed886fd7273eeda993e19a61e17eca3efd5ea22f73555d4ae74fdbcdd6b66bbd2dd7f7cfd55a19bbebbbeef75e25bff78af7ce81c59eaed3edf19fe87fb36a28f08051bb03eaa12b90912c6f735928d704ec0bfd866bd7681b6a9c2099476acde83ec3b5e02ec97b8067afa67e9788aff112f76dcc873526fbcee7b1a5ea77bef816db8fbcdfbaf53c7f0675e5b3ce7d56d8fb7eef958dddf12896cb177d20f9cc4b52db846c59fa3ed68f81eb026a80bbde456778e3413eea2932dcfd8ace7bef4ce6cfb5425d6af5c3d4493e6e7dbf94d16121614e309bca92872793395de77b9f3bcfe8bcccaa2369ef35c56df53abeb1446bcfea2703e2ef6363d432b09bb00e994b145f16cb688277e1767d0b63fa3159e4fca4ffc8767d320fc6fe17cb475ee7fb99def14dfd2e45a323e5753e75ad072f0bdeb618b3bfdd77a8a9afdfed9a4bc0ea755f426fd143f3466a21895ce5ce6edef12e7dce5f44f55eb413ca01d7e11338995cee77e7df9feff752dc0bcab33d6044c0e7dc38db80db47f2e43be693cb6d075c9ef880f35e7ff03d87e964a4fe8ede6f5cfd361e73e71ab5f2c76bbfefa3bd87c47556be973bb83f847f629dd6f2b28ee14ec539a7e7f981e6bc3d574fd7e712416c88c9c66ff61ecc1ddec3726bdf619c9bf67c7dfa7da6937c321fb6ab7cce8af9d3b3f9dd3a22b948ef74e21b40763d6f5781eeb831f42af2940bc10e87b3f737f3136a4dfe0cfe5c0016daa9fe3ed6f7da672e2fa69afec53cbc1eebb8c18de011ee9fcbe5afeb4cd83829fedc4c537f9b4fea4aa0ef238c938ce34252f953f9fda33bd420b5248efae9cbee63c5ee2f643fd3b95cb4c7d953984ee0f7a93ee47efad500e329f336259bbb2fe6bfd6d928575d279f0de8b33ae5ba1b482c4e04bcf24fdaffb676869795cfdabea51f94f36c754c2d899eab38c5353a6df9d7797ffc786f0c0f7e4fc9e3fa3b277372a2362add1fdddffef68e0239b1e3eef52280da108ca389ce599d8f62779e6d24f342675898a3f12fb1267acceb40fb99c6eb67b9d4bd077be007b2b6c3ea6dab9e43df3a848e8aeebbdac763e4205fc3da96c67c01240e19778f11c9dddcd48274313a7238be142f283986de4b1a78f72af4f4fd076aa7fae9b8b3d7f9ea4871f373d38098441d03fc1b397b58366bf7eadc1bf8de17e7a69ebbfb94c5dc86ca573a2e1f87f8a6cd97a9d3f28f74ee75a4cb72efd1980ccbe716f2ae5bf629e521acff0d180ffe6251d73076e513b5642faedbc6f8b43476c5b0bea738bfaf7bdc5fdc31f136bb10fcecd6b8bf962b0338c7754e283ec3424deaea887d78757ca83e4fcf64bdb84655c3c6a77b2013e359d84f46307aa15677e3b1352dbfd82f975043e36775e2fc3e259837a7d6d9225cfcbfcd897409d0bc688ca708de9976af5f5d177998ffab72ed10faf698d68eda8cb388f70b8724cfa37703bedd22c758090463342a94cbcccbb2b8e85da3c3bed6efda6bf185cef0f2753dee93bdcbee79c03aa176565070f596e23d3dead2a16dd1de05de05c6d9d4e4f9a6ba29606d91670efeea947e3ac35f4feca416860b6943a7f757938f9b8ee5ad5295bf3d7fa196a16f488097ae259905b8f8789ebedb47f4b98e6f2a3fd1613b6b859c0ebc116700fc727fa5dbb7b8df6a4c8658a893e7ce57ad3f08b8633fc29f9870b209adef8f7c2c42ff6f89679d36dee213e7382b9f7f335ec080d56f5b5f33bf38c74fd601d9991ac6d3fbe06d50e0f7e3b1d49fd810f5334fcfecf4abbe579067de92c79f904fc0fafbbff5bfc6da0c8f1eee473ad786dcfcbda602273ee717e0ed97e7ba3be59c21d83b5eef06f1ad2f7489b9b367b18e50ce1fe8acd17c4fc231f320f59617e076e47ca048670a80f72b84d803fd6e5cb8878dbf40e7bdc9635a855e52c67de091d87df8f635961719cfed4279f4bafec6f9f9694d22701404b27eb1fa4be1bb50f3c7f775e25e485e30608f414c06c70af96f1d2df99e7d784a0fee7a2dc13e5ca4bb430deaad7cab48cc898d03d72799c6629018ca239075245ffe1973f912758e0cdceffcf7bee1fc147d1551a51e2243d906de4d1c9b9695b3627d41f75f54d8d7a41a08f347f354e8fa4e85be7e9f6fcdcd2b570377bc22fd86f8ead2b9f3bfb28ff9bdf349e3252067b7703fc5e65edde298ab720cbd3b92e50f53abebb591ac22f9ee4c97a51cdc24e6179b5cccd9d74c5cf7486333b53d4973c0715de34a4a7dcd22f5d5f7d8c4fd617d6cd8d0a9dfa7eb8fe4f9b1a173b1bd81fe8674aedf1cbefe6f535758df1be7a96b4eea3b5bb6fed9d02d996d0e7abc7edbd67d1cc4e616747ed48766bd27799e71d4d3e7f0feade748a8a57d47eb73207fd36f5b7374ace715f57787ee30a4a7d47d6ece13d23760cf519e7c2e9fb539c71b7f6170fadab5233795cd635451ae88ba3de0e83e108eaa1a0709f4508c4bfc851ca5b957f83d9607f1ee7c715f8de6259fdf85e363eb6fde59521984b13026560fe268e08b7e255c710abaef7e717567e85929f072cc7b6a5019a75ee309e61da0f2909f4f12e39a077e7e4dfce5b16e9bc55d09062e7000525e113af6e3475f3ad55ca3e02f63dfa31c79a8cff1c1ad6b0c0c7d10f55d89f6a7d18706aeb4d5c37c11dc9ed0d20686a7d0b7667ff91a8413f9067bee8dc3120bfa18b78ef67f562c06741d3e1c9ca393f8f635f27469e3013fe7c0443274e29ea06e84d41726241789c4581a78e803aedf2c96c67d93fa90f9e7923cd1c32c6af851ebdfb31c3071905dd7cde5299ca92979ee1d7c65b74be0abb768b247b235078e5aef9efbce3ec5584bb7df4d5e37525fba05fb87ed9701c60431f24b2859d70fc8dda8eb293e46e35f7c0de0c74afcefe47144f37f49e47c9f18e991ab4138bea1fbd4191c432f3f6c906d44f051595d0796fddb603b78996fbfe6200e0af3f2313271dd1d7a1e381aacedec1037b97a201f063d9f54dfb799e05cf5edec9056e86ec2df193f6df3636576e4bbf09c52a8ad7d856b6fd1f3e3745a419f8f1c3655ad4fa1e78bf4fb368b948e7d30df0ecfe43bf7669b788d63868f4fe4d605e77866a78d675e6c9cef79acdbef211950923cd0168e57202be7d8003c6301a3eb93e14fc0193d207b0e7259fb8d3d3759e4c93879477752e38e7c84be3d41ef4d693ca17916f01e41fb19dd67a4b648cca30a2565bbc9cfe0ef675860a3060f34770e62d9956cf4ce363d40de89bfc863a453d6f208e7a3b8e8773a463686a325e31cd0d01f1e78b9897355dc55e8537e6f6e7c5a82f34a65f7866c6ceefcc1ef6bd9bdd1fc22be7f902323db65bc15fb07bf4be8f78efef521d737ef7c477619b7560898e5f604e73266b07e8dbfd5be1ecf3e846b9c17357d22d3f95c1fbc0760dee95c1c806b80f94aecb748b6f315e443de7ec26bcc38b13ea95d64006703e41411ec7492d721d43293bf039e3c92d1786dfdf971cae5243ee5d83270ae31cfa5d5e4b3c6670ee75ba27307dfeb9d79fe15c2b545642fe43a0dc89d668f375007b5c0776fbd5e1cc7650cd8e72b9c2305edcf8a7c3fd5f62731d73129c3898de4ee05cb361e573fcb81ab7974847ecc0aa10e0fcece1b992bdc76cee1f09d882da75c62594136c82992e32397b7c5f7a934d999213a84ec4a042b1573354f0836dd64416cd306178eaeb035f065e0f5216b587393a367443e7c3cc7bedc5a87cf8d2bb5f225c973978dbf1841bdba9636f9d1f07ed5298e5ef649d6ad44cfce3495fef72df0ad3c3a2c8f53f2b716073db5853d7bcff2c731a65916f6ad9cb377b1ae89ce1ad62ff208f61e7e67aaed91debfb78bfc846d45fe1c66386754ac852498553afc8de5273a69392bf2c7dad0abd01b48e8bc21bbcaf4707e61827e975df43b9a9f251b1fd9075417a6b63de07a18f7bcce8d079ed17abdc919e2e541d79acfb784cb09fffb95b6c79f3d5fde575deb0e7306f17cfc8ed753ca795e73341079a6e3bc5a3c4eca3b0ee3f496386713da1948816f1d42bf5ed39926ec8df3c6437bf1e517afcbc11c0bf741af8cf6f73cdaeef9b3d627fad037efc2387cf26c29d4dd16fa395c1d695fa17f0c83be1e03d98bcfcf2e7e2eebda1b58b6181dfb419c27fc0d675836f510aa77509b616ac425afb38712ec092bc47537875981f708e1a76ef17cf9f2fec1c984077064d56db01aa4b74afddcace67fa66d9eda12e7332470ef389e8df7484f6ac8f117ae3febe3c6e3b9861703cc3fc8b8c9b48f75be9f1af97eea0c1e41df02de03344f9cbd78e9d6d1f0d95feecddfa23e58dfd701e6562ba322d1a2be70cfe27b6e6d6975edd0b0d6d7c7f9252ca0fe67c0ef9b8f91f9cbd47a5654e03cd80f1e8b75b2bfbf6dd5677fabdeb6c3b3e30d0aa83d99d477433d37f49e0caff11ee3d408773abe1fbbf86721372ff46e4c66cf0e8b5d5ce8126a63ea0cf058053e503677485747ef2d301649af8cb6199b9bd921bdcf34d6fee54313b869f9e7405f5f21fb501b9c033f3d927c586d09b6c92d851c4ac33dcd0ea9c0dfc83d379823f933ee65899142aef294efe76a8ceced051a5fa40d06d367e35999fc78b20f8d1fcfbe12c6e3d4e3f9e4fecdf5a90f7e18612cc87610e6afebbd63e3bd41eb3dcaf5396972e9f3ed60dbaa7bff13fbbad0cb2857af71d5b4919b7fcf6e6dee8e9f9c15b6cf5ed606aea16fcc8ff2ee0c6fe6e8359d6bc35fa696dd6687349d39c2feb8637efa7afcc9a3d5fea0a3fd6377fbfb46fbfb56fb9b51670d8bc88f39497f11dbf56e6aa7f44357778936fc27b18b4fe2b3fb5fd46684675deed922e3be25717baa89bb2cf4e5d6aca1e16a7c98be4674dc65d45f94942f97de09c27d27c4be87e0d3e0d73b8478acc4fb207388f7323f31c522bc6dd15ce3e78fb876ecd1d015c859c6bc4ef76fe44d6dd350bf6be0e597b5a13ca6c2bca0b560e7fb4590bbe8ae66f223efc0b7deb77ca1e0e3223eac8da123997c09b9b8c593fad531de53c48738aab1b8703c6d4f62a8c30ae3d3e0b8d7b31cf59956c7fc287675a7ef95cc83a01b7af7435409ebdb8b4137647170ae26e845f0d160dd10ee13644b8bb84cb84e1bbe85b1161639e02c100c8600e9bcb20bf5f7a15166810c7535d4462c238af92eebe790d4f5e0ef31dbfd3ff1bd1cd7807df13d5c8ffbdf1b1ffede78e39b4fbf67f56ccd627547ca8d70005d93897d8d1cb5880ca53fd38687956e1e489ec729f442c23d6995a19c4978dfe3ef865f7ccb85583fe49c09759d3c8e3ed456921a33f47b08755678ac90ff4ff9b8849acc01fb063aa3b19c6f2386d3ef3e908d1bfa763fea5b7f66fe02e3d1f9e9c99cd8b8ffbe5d011e41dfac6baf35c86539e27d4274fadd51886fa0fb7e65b817625b74fa44e6ecbcd7f340b19c31761ca9d186793fe7a13fe4d79bac2bb659485d32b5531af55bd83f073aba9b30bb9fefaff0b7af6c47e60b954e75dc33437305f155629f309b15e32c247954b855e0dd4f1f8e7a0e3c9b614086be49f20af0dd8ee61cb8e88d2c8bb6ea29ea271ded2e6af922bb97d0b7b248ab6302cc9786f58c62e32f1b3eccd72be423faf6117feb350d8b9cecdbb00cfd04e29e142f2f34a0d6fa97399adf881c4772b8009e7d43df83af9cf8f720dee40d0e36a9e17adbaa7cbcb8fefe58bfc5c61db80c03473d23d9b9f1d5d3c65b107e2d5aa764a6d3d10bd275a408e79b431d08fa1dfcb0802d43eb06011b087239d1bc07101bd1259ab749fd62907f3a716f9c5c157c4e8e37d84513774ffd7bf143a8e568cd1fab618635754f21ae2f2ea362714a3c1be3b2a33b02f0317af8eea2d8867d350be4759af80bca4590913ec11a07dea08c3c5d02fbf68b3e402d0c3a2f07a2576c290e96b2c7382354df5888edaec3329ad879dc38bfadbf6f894f4b53cbce7381f757fb6c34fac8da75d05e71771b2f2c838aad4d7f63b8177496375e8fe261968049b73b915c39fa3797f9514c233f479ebbdfa076bdfbc034922bdecbf631f4f2ca34d03daa9f20c625e7fcd9c8a2223f133ef37142b1c676c774b11af27b7dcffeb625329abdf782ebf57d8cdd1c7a03e03cc0580342fb7a80ebf79fde01a1a73f70cc53299a73106ed53c827c7daa0f58e04b42cf2f0be5e5e939e3ed062e6e48ec83c75ba5fe362760170ee6ce0dd9c42764df223b069db18f4a7d81df91bd36894fa69152cc15d4e62596c36b5c48bf1af8e2e8be7b0017bbc3f6cd2deacf3bef81d85068fc52e1e63c6bb44978f9d45b84f3b333f13b201f702e50915f02efd6defb149fd9d3f7a083f2b5ba859b85933de42b0af711bacb887e8e9fc1fa6adcb7af71e30e81dfb0ff5fc1730fb80058f7045c7715f44fd0599ff1b7d1fcddc9fc79fe4af5b7f92b34470538565718bb6c7dc235746e0567a3cef56331f1299a3bf93e080bc04c201c6a344ec372d71fa6e14a41f53c27a7ce5b26fc32db6146ebd7916dd2fefb60bbf106fbe9b8c66714b94286c7c448ba79e375e5147a2f38b65fe31d317fd80cdd51c582f02bba7d734c30eee87bdbe11df5c997ef79846cfcd1387ddb0e6f53e796fa32c1251d8d7f9bba82398834f5136ab02bf513b804455f2c7ccbebe16767cef08ef1f76a4c27f0c7731c5fac967eb2a882fe9cafa717c61ff7ad1d2f87eb393ce71ffe9cfcbdc6a66ef8c6ff347cfb75debd91489e7c06bc07d406fa776dd7b2d815b3d538f97f00fb8ae6a474ecdbc55fe70fb2dcaa27dcdbcaa72bb9da7aac8f9c9ea27bbaadaff70375a52b8b9564bbabb1fbe93fec4fffd1b4fbf246de271e17c4d1b6b7ade9f13906cb53e8e4bf7dcd62b51ae64e523aeae10b2bbf6d69cdb7af99cabbdfaa85ff47879daa844e5abee58dfc26e11bb46e2a2884daf591c2d5ac4ba7d0d9fffa413fff51cf219f7b47f3566c373120471de966b86f87e585cfe15b1179e8a27b0db057dcc7bbb73e4e7de998000615b28b3281dbe7a35f634f71794fd2d43f631fc4aaf7fb7375e663e197a9b12f3fe4bc981a6eb471a5b2c60781ffe6eb2c712ee7ae977b729ebcfbe7f2add89fa2d1319b3bf7bacef670563e57e77aafebe7d227b9d4d389c9edad7b3513fffb3275eed5acb829e66a788ab7b57cfbf4d9b82eb3425212ed7e991568ded0ff5f2a028f8576cf6730a6974b5465d2cc58979f933bab1de9e02dc3ef4cce0d3ea5f16d06b57a65f9e9e4cacc78b9c4bb5e735e63f3c0e919fa6d6bae7aadbc426b1bd23cbb4b8d859cac032f2eacfd97f563d2ec69fddafd37ad2ff1358be6ebc7e6412a675fd7a44933fdb6156ad1dcdb763639d35ab86c3e91ca4f34b787f6dc4efd73196ed3bb55ac0b6b9b49ef1efa7d5fce4669113a79bdee23784e82e79e9f59c9da86f0bf667d502df396bfb1ef76afd4f297701038b80665ba42dfca2eb38379dc38fbd3d7353cfb93af59351799669e3ee446ade66a78a2739b20d93a320b24177ccda21c98b1b91dd7e77eb22cb95a9c0afb099665b41decd1f7e2ed9ddf37680ef9f391fb7ea3a666629653ee0c6d7ce9146d0797775166961f7dcc29feee2f0bebb0bc086bba529ec906322f900fa1bc153caf59fe9bbb6b94b73e7fee96c7d0b9c766a1c7e6f69e4f9d7b0e7ba478edda23acef7f5b6f41ee027cde46bdd8cc6fdb99f1728cb683c7fbca2c3f9d2ceaf8de2e32f4475ca9970f59cca1a3770be1cb7f79f79727f2efc1bbe72a805583cf729d270bb8c6a8edc1cbcc077cb2cb8776976687fd99be3bf57b4a20df3364176fd0f7f9dccb2dc89d53b4bd9753ff8c730c0fe99dfbf6cb7cd7bbcc26a4edd518c932f2dcbe7af772057c6c865b096b620cf2a4522f532da36d56ac7fa371397b98a7296bd3647d9d3bfbeb7c9b2b9fdee214f88b8739b17e37f279e93cd27cc85dd0776f1bcfdd737d66585568de3efd257737f47edb7dab0c47255e87fe93f9a8d83af4379e2d6d463d89cec1c670c12ff3eeade9f71e89e1dedebd57fadf87b8c8f7ef6bcabb0eb89ac70fca9f3e2ac99c2ca4d0577d687f229d9291f43f04fffe121eac6be464bf59dcf680bf0d79fb6392ab42de813d30318f26b2c956e372eaec693f7648a70c7d53a1fb84c4f08ac85060acad7e68afd5d4b993f85a788a64b42f3bbe0dcfb1ef5c0379d18b8d3c0f750be91a595424a770d5831cbb8d93bd61ec60f382b9ee4275a5bbfa6c4cf136078ba59b7dba7b7deeaed7a7d9faaf7e2fe9ba505fe14a0edf497faad0b347a1773fc50fe9f6e92539e0a31beecda5f998fcf9ef9c1b9c3334eb7373a0edffccfd1ef815c539116457e71cd2bdd3dd9e3ddef8307f6fe0df33ac6b7c98d3fd8e73a476bdc8873b24bdbdaf7a528dbd9cffe6e47af9be1afedeaceeedf51d9d212f88bf03d0b3f14e78d624fec5dff1f6f4674ace6d88ce0dd291dc73e53bdc9a6b4131355e94683b40676917f8cb233d07a18fe77f55c0b8b751df7ae07b06ea30f1981ed26d3699a3f769fed279be3a23fbf2b85949d59bbc7f7df7d6bf21af0ceef4ecf1beeb5da71eb2f3b2eadd7bfd1def6e4afc3843ee4b84e455b1b846c5224ba8fc81bc84451e1977616ea31cc6f2323306519c4b970f675fbec9af4a5c9deead3ef93d85c472a52771fc63a2e5bfffe6fb20b7274bf8eea743ec5cbc57847b353af4bae792de19383743f17a12772f2ecff3d58b3247eb3311d6509aadf4c493dd84979f9f933bed6bb5f1ec28d1a4bbef9e73dfa9e5e9e7e486ee37c0149d4ece2f6f87e579eedc076f85ab4c9defdf7f77c637901bdae9fececb151d9f336b1b1c7919eaf5977fe66e2f0a5de912c98b5de2ab65e8d9af9f8df14c1f643c078aab68bf7e6a48cf527bb19c1e3ffae92ff4cdd964ff2bf42526339ebfbf44ba7d897487d96afc3fefab21e890c2f8f45e143ad25d380b93fbabd87f3bf1e4f579ee4a1786c338b9bf4e91ce30711f1b2dfbfd312a25e89723dd3f6b99fafcfd9194cd911e6bacffcc579de7f6495f4f3fe9eb9f9ff5f5f4acaf7f3afbfa7ff45e94eeef3be9666dc3e76b4dde477dfd493fe1b92ff7a2747fbee6cb33ec79bcb7fee2ec7cd5ffd30ffb7ffa61ff4f5ff5ffcfd7fdafe77bfa18bff23a9443eec70e3940e6e4bb3d2c3cf783bdb2fe33ef9007784f3eddcbcd734774a7a040df7defd497dafb1ecb1cfc8def65dbf7e772faf87fd8fb933645b1e77f187e41bd6840a99465260a2ae0c4cc4e205310502a71005ffd739d38cc8366f5b7fb77ff17cfa2afea94e90c71628e4fcc924f250e8507d743ff785fd1bb7a78dcf5cbf8484c7d15e2dec8cc65afd3372c5bd22bd2b5c528bd9914ee5f2a9e0e6003347f0b18fb8865b6cd6b04b281a5e925deccb70d1a5d53c1b79085d57df305ba2f2bef2bd66b8a65b9cbe6fb4a85ae3e5aba1dbaa0828bcb967aeef593bd84483f118dedb5b04bc453f06d87f535c6f35e8f7ea0376609e3b274d1fb626305f9d93196a185e5f9a3a01dd7f808702f3a1c4b4176ef9a021d2541baa23b25eeebd1b641efb91efae6b2c977aecfc0bd9642dcd794da7b36d6948ad6b0cbdfdbb46a90a4c3ef3c97d7d8bcaf31d64f607f54342fa453b0657d1359d3dde543b53e156dcac83e3675fa64f32ab2e398222770af8fcf4f6d01991e4b489642ae58dab1ddd408d9c0dcd5a2e09e6ca3167982dcb83837c3e358e0f7fb2fec1199a62585ace742be1847908ae8fdcaacb23186c6a02c987a7ee4cb71f8f0fe4c3048c239855b3b8f930f9c3f382f856fe9d5b9c23545cfcf15f6a376cfcee648f6d8a6e9642f235b6315daa71db2bfc602a54ea4793a71fcc6efb4408dffda187db66aefbd13892dfd709e847d634441d37b8d443a79b43c35ed8fe6d93e7c5be8becebbe9869c134abfec2cad7cb4b3fb17d43bae489be7084bd388bd9ec6ee3cdc5821f0c3d88e9cdc4f3b4ef6859e3d5f2476963e36c68511f91923c92959ccf9c95949ec29f992ee455e625ed28e9c9e5f7e4f59bc59ad3ddbccc10f4a6e74b5b5ef4162b7d66fc34be8dee3461f37ef05f9dde05d17a94b1b7fd96013de991fdc8be4694b561269877f1f69b00dc00fd3d475dbef447415afb1bff1bed1ef17574e529137993d4b1e85c7ac661f2d18876522919f30c24f7c08199283b90f226022255f7b27d2822da525f65c8ac5ccbb0b911923ba708e74bcc90a1ef3f4b9ef573246902767873d9f1d96890539f8f52f8e3712a2e0b7e5078993d19e39da91a69e7e00dec4682743aec283ccc4b974b54e5a62f374e88c2406d1bf1871c1fea4a1fd0d76b56ba69c3ebe0c22a9f3b27584fd79fd3ecf3416f33355f920315fdbe8254f2fea6419c76fe8364aafef4d07ff63d133ad47570beafe126fa3bcbf99fdfe120ff8e5a8c1833c23f76de5feba739f9c16941adf9eab881f93bdbae1f44282aed3d06b38571f69ee4646fc2af71de1be4d8c93a57d7e5a24dbc2524ef1cc31cf47297d7fa2324bc49a2c2bce57be565721cfcdb7a2f406e3eeea293724639ff8108b3389eefb3ff5cbe17d4163788f91fe6b51d073b93ea6d7ef8c0afec374e84b40f62e1ee7586ac5288abd10f2b1e05a6f2f1f4390b56215851ffdbb49d73b7c3f5f7d73dbe7576fed9d18ed622b2a75e2c4a656798e5008efdb5679ff75f970168a3800fb4194b2a4a299eb275bc8aa8a578b4867ec7c87a60bbf7e8d5fb7e300717ece0961d4b55b115d5af2a58f8e2e921c325f72daafa32a712c721fb7bd4e13eb8846f735629e38ae119631b9cf11913847f22a4cdfe375ce873ec9e27986d9e8e3b3c4066f7b9926ed284c5d5dc3fc43e9c452eb31ea2a3ec6d6f22b1af16e78264476b1c12e7eadc3bb2f8caab8a2a190c4971cd463a1df96113ef2fe169ec3767d8cf5d8b7cb918c0071a8e0aaa035d2d019d3b22dc55096b1e88b79d5f4c931837467246f3fd934dee8eaf513c9d35390d80fb2e9c3cef983a92f1f023f4676e3a3d0d30b9e919f2bcf3c49e73d9a133f63ece3f8be79cc7ea17d761532de1cdfff969433b2bf939cf7646288f741986f8bf8558c74219d6a5de7efe87a82ae1b480f52de1307d955d461628fd289334d1feb2c388b47f57bcf0637fb4130023b2685d17b2c8ea4bff1f3099251e81ddf1b434df66cf22dcedfbf852cf805f7528758a4269381e7ce8857af7daf7cde41b69b9c1e0bff481e8fb9aa3c13dba7ed19ea1df83bf62d577ce3f885e45ee1174667ac1bb3a76c2a0c16d37766a390b92c6b62af5951eab93344236624e4b94badf86584745b45e7ee9d986c7e06902d88cf67c06c4e5bc0cf41763da2bf6abc07443b574121feb27ddc9fc465832bd2255c7d150abc9ae824110bb257c4c9e22f39a8db9ae53884f916be93d799e734ee111b650c3132ebb4fd85fde2bb9b338d81169d08d784a2df85d1b6c0d34034e4dba31d615304ba46a36b658c45e11841ae8d91c53916f5efd4ed570b7ab05a04d2476d5e8b5cb6fa6ea3f64da6332c27109de2bc7e64d3daa3f7f6fbd06f485f46ffc662512ba0c4f5fab5508c8a1a8294a8fe3f6404397d83714ce3fef8595e53b0f6c981ebb07efdd7cab19c2f653f9c80fcd03946dfaaa9b633883aad62ecfdec50ae9140a9d77c6d702c9757af2ecfdcd1ef45bf30419e648241a0f997f9311b1df1a9763e15d8b818f74d49bc3abfcaf3561e96fc01f90c388fa9ccef699f97d86af1e7bdbe0b4d3d85ba66a588a51ed5bbc83391755a85eef49c496c1a58c60aebc506ee9fad461cb1d727bf2439859c479b22633b62e6483753a9f097a5e63d408ee7549c97766385e1847ecf6bbced48bbbadcea9edb93bfd6d30fc4ab19db3f3c04e54208dcdd372906fa6d88dcddb77bf2a90c76d1c095a8e5545c73f9fdb6d7cdb3c12e4f968173bd36c6b6969bb238db7e70cd7b3e5c4d4a7d6be4aab6f20a90dd56d6eb7277df28b0e5b87cae7c183ae4dd178c74f2d37bc5f905fc92f57a32835d7e0dcc37fed2d5baec3ab82ce4a3841b5d9b7ccd2f4cee5bcbe3a244baa6c69346dfdcaaf7fe15ebf0796c546fe45b5e713cd58b73ff1ba62d1f72f463410ffaf02dcf8e1f20fbb8e0c9553f723eb49d9088379486fe65f63856fab0a1971fceeb1bc82f8af5d1d22d9e4373457f8bf9fbd651fd7d215393ff8c30bf3048d771d920d77526cc5ef6ae62837f7f6448668b51def7245a85c866727cef2ac874def727ef75364f2742452fb8971eee470e7e53b1434b1ae81f5f0ab2376bf98fe0cba9f21a1d3f48dc88892df6fdbe510846e003a675d6ab1cf01351608882ef057447399c7cb1cd77ee65c891aae5baef9af94e0dbc40336a63377ec987f895de68fbe0b3cc0afd30cf4779cbe5fb2f3b4bb7158f98fc7246047ae68ef837e8e0b95ebc8e38ac63ca01d283ae8087366ae4a6b4c7513be397668e1360c5e4f5bdc7f673e3f893427a21c1d827c8c7badb3c77b4542fb6f85d6807b84ea29ba3b5ade51777754e97a5af65ec3af26e3605f80f79ad86e72c8ef179afef024ba79d851f0cbecb92c3374b7ef92e88dd98511a225e509de571baa1c639fe908b6ce655512b64a934d86f66c4644ee68582125f73dc04636fecce0a458755ecbcc82322e2fcbfda3ad1a14b0cac518de7ec95c246b2623bda4d6d8abcdb140dbc07dd2bce178c4e1289fd40fae964b2af7abcbfd919e432d4fc0352622a8407be4479968afc1d9e351fa45dd77345de6416c85e82773a93bd76b919b5f75af8bd58fe4dc958a71857a75c578caab5d9f3cc0d303b2a4c896bb30f1af82e4a7d76a1cc6291affad86e8eb368e973d126f3d058ef22bfb22d92805c587b4a0622ffa3fda9c6c6df63913f303017ed723264baaad1f03d677182feb089539fcfa9aadd4132e7137a60a511c4189573ba50c8a0a499793ab14ee944e067385ff74106fae3c36d8cdbc7b4a7a177ce986b7dacc25c4aaab1213e949e377a68db24899ebfd67a9c237936067a9dbf3f994f08f3b18e8427b12183e4b689e4a89ce7f0f00e234d2fa70d8fbe4154d81d94f32d646191fb7344eb201897a03e16bbca0d39db1413a0bdade139015d7c2a3887e81fd386fcd4cea50bba71d9107a31d6fc6c5f1be5fdcd78a4414d367f21d96c92783c483e59bc365628f36c71972f430edda56f95efc4bf05a0eb7c5674ff972487cdb36e6889cb87779bd71af936b57da405e552f56d9bce988d1154bd9af5060d6feca8f61edfa331fd94eb1eaf29e8bb96cb0cc4ffe993a5d3b8ffb5b6f4ec08e9f448d7cff54ef69e09917ab5292b72288d10a748ae9affe8b935f59416933d7bb90872faf4ec20fbd7f543c6242f2703f1a17999eb94156b8f794dc838554ed45f1b65162da331a29107928b36c433b440c969cef1717eecc0f586fcafc557985e9b444e6f1b79c8d691869ef1869e41b2b7381b06bbf805b1537d99e07e7a4f69bcb02f0831624824db4bbfa53cc9447e8cecdd9b6bec4227a87203c5c702c9d03ede76b194345bfae6d9399244677f38341e32c4ba73dfb54bb8892648dfba6d8c6d2f3f2ae32ccd6b34f02a7d3c71323312e612d31d1ff0aa8bed43dca7efdab77da43d347653e9193bace5e50a3236e73fae423e441de26137d158201987ede1d32a75c05f1227c248fded422e707adec85e265013b0339d297176b28b87d7d964a4877917a9eadc8a88772a97b89e9f376037c51b7d7c2deaa55d5e934d9d0e6c8a389b594235ce182f7dafd9b87e06737dd0fc6d65b92d1f7e2cc5c76c2cb1e96da31fbef77261e3af6e4ee665e02b33deabdf4fabd8f6bd0cd7031cd2562e2701fca567af457e128bf39d2d719db38ef63271b2e00dce6dc3c737035dc25588fb7aa4227badd4175c39f916f4599e4772f024397833b5e40e3c804dffb77100df57d17e909b79a53fac4790bf50970bc9c6d8d9aef6427ec969b0d12eae38871838bde1efb57742fcdbd347db3c4ee26d2cdf4bf451e80a1a112da36d912b837fc3365f50d72b5b3c7f486f21f491e68afc36e7f9ea01c922492118ab5ad7f8a93ec1c3ba252e7721912ccbf70be3783dc8ab18e5f800c62e5423ee6af1cc45e0eb3c7ff1db92e99b15590fcbd826121b24b6f28f9e7bc363e8e349e94d20f11ea37de9dfe3cb4530482f8f53ddbf0cf2246497dc173d068c2d6b56f381cc9bfcbe95b79aece10c0cea1d2192d73f38d719e281cfe9880ef6ba1559c6324476b0c007b1c84f70eeacff9aefdb4732aceb29c8eeb6b33cb78c1fc7e0cbaf72b36e39ef6be466d4ed02ab63172c1ae731b70f607c583f9c20fabf6dd0de96bae104ce54edbcbf495382714224b3abdcb3ddcc52c0cfc27a3788b9fa6928f2b3589c4bc5783da1ee5f98af602fcbe7a61d1b156a47c4f9a2b439f39ab87c3d42f45bdcf0d5e4f3b6c30b61b4e7ae6b36fc0e7a1a59e6c2d5c67dc579a68c5bff36aeef19b4f5da31103c5e4c2f37116c2fc8d93e5bfaea5ba9722a76aece054ec421da2d9f13e76ab51739ffc2fd5667b1c12e2327d242f0ed28a4a75329d25fc93236c062ddd5adebae2ce8f48f8d4230b5df6317fc321833026ce2c88a9d13f88d627867145e4d2a25e1bc7077dfa1b4a34dd1c1d07588dd453b24b3ff4634242ab3c4791017490e7efddbdfb22286744e3ba457c59bccbb6dfe876fd5c61d2d4f2ae2ef188f03f4b665648fb4cce5bd725e1292b5ca2c5e77ef7d58faea660fbf0bd9f399053a9519f58cf3e61a4b629f5fafad615ad812394d1d378666b762ccb9dc2f74fa432c9caaf32b68c41b9acbde583e5ceeee235a301f93b3fd20a00e4144f3091beb8ee8eb086b2b37ef29d7eb48301b5dfabb39ceb8310ff84e86e752acdb978ee55a5197214d73dffc7458c6f4f9d945bdae43f5df2350f57b2660370fdb406160e95c92632de7ba1259d3cbd2817b2ef57b1ee02718d4930f89f518d463ef6b2ae8b5b12c3f48f6bd767e7aca7d4b357d00e3893b7c1ad66b395abe26c83743bc0230bda704b397c3f8956cebd8314a112b21ee48c6492cdae3f7b7fd73fb2613fad600e83ebdf55ec3fe970796ff41e2f813c6c9d29bf8201f792e9637a46f4bb06fc5fe4c326c0bab037470b88b759de6b1c07a4caf5d956602351bb27b123bbb90f9de74bfa3f4c9b9ca27ac67442a4e39b7f2c9629fb6ede35aa8bd76e98d9d3bc5996183df357f606cc841d2cebfc9f94756ac93209fcf964c12c263160bf28510e4f88ae5de53b9d553733eae6ca0017aeae85e1d9d695cf71125ce917cb3a2307346db5f35199814fc0ae3192c435cbf8d64fab2f91b9ff3a429f0a7ccd2a13ebc96e7f0dc9f6cb0cbbca7de92008c0f5cdf1e8ad1ce73f9d919aef3dc036256b83e1aeeb7790d9d5f6fa3ab578be70853467c1ee7aa6179649ead7e7fe464c0968f9691da6b676f06ecefcd68712dd669a3ddfd5a4ea7b338c661ef3954e881f36946ddf18603e385dfff463a2fc89d29e92c6ab9a98897fc6b733f0dcf1dcbab2d03581565ceebdd5f77df351e78d738d71dba6ba50dac9596cbf0f9e25ae82a9db5f703accbcf97b8c69be78e7b62d89e71d9f40afee7c24e7820faeb8d01bf1571b005e219207fc7e0bf11158294fc7aee0de97db28714c94641b9406d80f3209b79233ef8ebf137a7f81ef3817106cab8fa14c9f27724cb89e736d4fb37e609204f2abfcabcfaed598c68cf42bd04ae9966d1b7ca5a651c6791d3b3f82032e1f49eeca7adfc22fef01be8ed59bc1dfba19ec9aed2867c3ecfedf51372890f173b837c23346e5ad42749397eb88e73d484c7e237dc57cc075d2bf305934c8818b07b85c25ee34d246b4f1be53db1a610c3a1370375cdc683e8cfc190d3cbd033ee71e019e5e9fe366a45ff8f7dacaf628be3cd94bc227e6b830ff40072fb53b93335df248d7da087ef6a8fc6f9f99930addc20fcbc5ca3c1e99831416f9f31ed5ca19c3689a297c02bda71463bcf39edcce6985704923f3a5be4c87399cb05938d01b1f007e89cf8392bffd6d5e20e7f6df4ca776be974903f1fdad1ceda1cc9cab70af707857f61f209fc2b606ce017f417bacf789037f035f2047ae7656348b1c8cffe72915e323719b3c8c942fa55465e45fece9832f9585326e4b25959c2d8b9be6f3e708eb3e3d3f5f8f6d9f6d3873857139b4dcf38c7e0677b5cb397c376de20cefb23af82cc9c05398d7bafcbe423bf9ef53f7f29cfaba88f63913a805fa769871dce9d3c31b44670ef8cb1948bb79992d99a9ab5ea695466af5cc8cd94bce5fecb6351a7626aa4ed6a04b3503e185cdf48e7f8b63f8a21bc7da1f91817664da9d7cf2971ae68e770b1fde0b667a1568811e615fde4634ea0ae43f60a5a2aeecf8afb819ef2751bc80f3d5b729afd30ded1c234d8e2da9163cfef72f066e5f5be96921edb7592f6115fb38fe5b57aed72b9b6ed3c6dc4178cb66e0ddf0b5d2c7b7339d3f0b781dcbb6ff866def17af4dedae303ba6f5cde57e5e78f214659d6987eb8fac87397be757c55d7213c2e41e1fb3133900f89c5d20f7bb424daebdcccf768d67709a7768d0cced56ddc13a99d5aaf123f006a5188741d8d277b6592ae8f98566b671c64ad305dfcb6fccb197cc5d9e52c223e8ad6834f3d93d21a7cc0e292bb21a7c7668e78230fbce1f7fb9c12e97a7498d4fce46f9f6c2b0f62a622b9b94472534136eb4c62245da5447e01790f2ace8718c179c9387f9d0567f5411eb13eb4436b7f74670d7fbd221679cb9416dbacd7e81d80f6b1499b69fdb745d95fe4b1880579d80601dd4737cf66460fd7f3f13bfb93837cc812f3e19342f37a2f65b29901b6d0d1d553642317d86bb44259e53bbbef41f6f32e7428a8ab68d6ee6441b25788bcb60ee24ca178eac957f483b3edd39ec5c724a2216b6691369f5e2d63f5d804e1e48b1f5f4d7df7db355684a5ef78574f133bd21ece83606490a9e37a7dd05f3b239dd83e1dd5efdbc96654cf0f47dfebad37cac867f3996c5429c6feb700e7a3f1908bb7dce80363ccd269212ff2dcf5aba9af0857e79256bee7c592e9a15cd0589c814f22aabd77249e0e0cde07e7fa09f1cfa019173a128c25d364b18fbb8a66aa78c5bf31367ec28847f577737cc95992c94c246ab5b4c3ef4f9ebd5ff0c7a4a05c6e9b00ec9435d45b618caaeb278bd601ebcf8241325f80a132c4332e63747ec5d3013d8fee0fc4d3eae69cb6bdba6a0dcba4a87f9a58e097dd859fd3c9455262a288c56c22b5b8e76f4939dfb19e74673e47abf35eb708e711db864120fefb03590772b85ee7326ed59d5ecca7b5cec1ef3d0b7a6c2af26390c58dfa9a56cda2a83fabe59cc54274b8a0f595944b229ef2f964259e41f0398d4391dfd1eb8866b00c24f3dc963be3ca34f429dee23e8557c87bcd3c429c5f8eb59c35a5c0ea5e235b26b735956ebca785cf56d393e7dbc4f6036673eab7c1dc29f117d85d6cc258dae56ac87490d77a7c6f20ee435cad7908e317f919ce1f42ef64e9c79e0f23772ec545bd53195fe6d3d0653f088c917cbf3a94175ba7dd4340baf4fcf0bd51efb89e24dad1c28394c4138ebfd87e88ece304306679ede87218cfb9388b0ed44d219a7c5a77fe820692549027e727f7d0928f64d770fd39f8fa8eb3bbc406374979bf8bfcbd518759f808a13e8af55ee9233701ee79527ffc8c0ea7b36f44d74fd74479ba26345e93e0379a4b7b5e6693e7fcf58c1fe5bc73b3793aded7fbb3a6ee0372adc849c1b8da30e7a7b5b693b3929dcf4ac63c935df95e9e5369fa1e8b8fd95d9a93f5b891fc743e3f58db7f733eaa1f3f994b2c0b32cc03efa53c49a5e9472d2f3d6544fe654dde5b890ffb2417bce32b806755e67344346a186cdf8bf31a10c07dad6afe3fe0ef5ade789967666997d850c8b7bd122359f10b726bcb7cecf8edcba8e369ed006736cf4bcf6aef4b1c3f6dfc8d6c72c7a713c88fad63c78ec84a27f7e9cbc6403c933e6e74b42e74d08e015932e0325ec56892e72ba793a798a1f899374b477c40cb4c7d99004e2a9b9e2c63fb6b6f1478a9ed9838f8d087f3e84b6c57332ab062c5d3eea68e761992191acf9d96bef50abb76085b3641f46fcfb5701dde7d25c74436d82523c82ff1709d45038f5573167e85370b36398ef110ddb5c53abb245b21e0ca4c49f0ef08f27dbc8c9ab8aee8be158beeb31abd9436350c5d973523fc1ffd6550daa398478d0e8975117751cb5acfa313699ecbabe7bc776f2e9fe80cf2529ee3e3c62277f74b8c780e6a6cbad8c0f37c6d4f3b4690ef598173ebe47b07f18f1ace6d4f1d0c21e863245fa04ebf1d7ba99f0f4b23193142fbbacde79366825caf07c6b941ed9a857a4e650fc6eedf43bc215f17c0c7fd52e2411cd97a9d2ec6ba5513835d7a10bb453639a6915b1f8d9463aff6a25183d9531f54f0088ce90ce7ed9d31d825a2cd2be0363d88543088b34ef5d5c2356be08ab3896c0abc67902bd1e07d968ce64b36f1b2c15799d776ebdac3a1b8135adfaf790a58b55f7abd9f5c80792baeefbe20bbcfd4dd7063ec265fdcdd4767b1a75e2caf7f204367b4f22c4a65dc793a81799e1a63b9096cf8d6f85e8e4554ab13276dfecea0f3b42176c41ad7a126f6a8f95d536ee1dfe6b1f18db1fd1bff7f4c88a7a27f6e630c64b19f982e670c6011438dd2ea66f34cb6d1d5b8b926f7e13152f0ffbf702ea545349f7b32b7ea395c43da1ce359a8f620b32986301e648eb39cd7cd53e12f4b9b3052f3b97b677d79f35ced0fae4d33b0efa4d60761654b1c19db27d0318e181fda83f3973f175833a0e3d633446b9d1cf4adc63e59ec1fd1075d9bb7073575da84d14992819c183d456715f1a19e1a686df2f59c47f6d54d27d57b1709d44147566c8d1af232c7188ffb6a4c614f3679fd8f60ecce4ec48c72ac0315c9839db1cc2a0c8d8bb3c07d6baef6687b30f5f1a156035860d584954cc07814829c5e1b38588dde9955ee90380deed2d449d74a90ad94ed68357da7d7ca2c16a7eff1d7fc7e47ba9524031faff7c08896e89c9c56a1acd3845062f1b6f65a2362713abb23bd0370a7f460224d99ba0fed2a504122b141a3f6798ff858957b8271c6eb7d2e3233aac740eb759bfa63e96e463f185b581f5b7ccd7d8dd9c658f48cb15ef39964867cbf0b551d36e4628bfc385e53c1c4392671ae1712229b7cef6bb203c90977b48c5dbec05fff403a4a19fbda1b2b1ed74caa55ac2c0a1f3bdc6f36fc9aa79d5c1bfc6eda5914b65bd8d52b6aef05bbb8869d1c3b04f46d3959c6a2f14db47696ee86ce299d0ce14718ecb2c01d6af687986fa3656ddc48962c7dabed778f2167714e24e577739ada45e9cd34b64cffefbbc9d7bc715f521fb71271eb5adc337608da539ecc6131df22fd8529fcbcee1ce9b1a56d4c38f0dcd3e76bf4b20af73ae2fb253d97b107c120b0ddc04ddab60ab326275767bebcb93c03fb2646b8978e157147cb587d35f48adab7118f13b9f6b310db871c94a1e7161cd3f39c96ba3a973824e4afab3695864e04b5de0339406dac6ace07bf90aec69b2979fd2a720abaf82775de1d0ae013da963a0ff07cbe86cb0dfdb84967118489cd6b27f0f716e778a68d4d4ac375ac61911bd4d0574a4c2367b4f34c2a6104cc6709418638d9715fb3a900679357af06c9607e4f325f1b631b8bbcda58ab3efd3bd7ddeb72a2f31ce80a35fc2a64b7590671cef93dd470b569439c1f984fa21ea38fa186d88ac2935bd3d391ade916f4ded58f2beca2d65941e7f04b4e2931dadd5cc8fbdbdd149eb95ac432eee6a834fb268873f36a97f7ae549bc8dfd1ddf36a8de744e2e67c27efa31d766b890bdae2fa7823e661f34333bf00d17dc3dfd8d0e17bf30bbe9ed987d017cca3c4f9a190b15cfb3c7dc9e9b2e7b775cf6fd34d437f053c29c09bc8f19f98dcde297a23b4fe3ee77fdf214fb017a7800dcb7749b5f748b577b82cbdd6d454320846decdc2f556db71ed3a9406be4156e518963d381af807c9dd50cabe0f180ba8c4a82243f154e2affd026ca053ee579ee2fcf6be9e5a25e6dde9d092eb1f6eeddd6d3da3fa8eb1bd2aa126291cb35183dd520938752707bfa4c7e0dc2abce37ffa4dbdad1f203b75c17c12bb18ddef50e1cd8eb804fbd0a1dfeccd390e9c63397d58c63236f554b78ce503d18ba686b3f50930b7a2bdee9255ff960f24cb3565967e29e47226abf48736537ff5eaa47322d1a783dfb406dfcf9d07de47326b426af2378c2b90597c7835bbe71adbc323245f56e71c43c843b4b7cd68b3e851f13925c335b5cc2c9dfb5e57d7adf2bad27b7d5f5e3fd6af97fd907fb9bc97d92327ef79429c0d76b9b44f9667f361b0e0ab31235dd3e2b5f1daff7016fe85100c92116752bfac7c2c67edb3fec37344f49ca35adfb4bc870bd28f587a5cda54a700ec40f184ebbea5e33f38afc82e68fe96d6beed2db4c9d53238d2d4d307e49b73bb9bcda37dc7f5dbf939011f38d20396bef9c36702f033a367be0c22d9662d2c2a4a2394d132d8eb3492a75db93348371d2cbd3793e21e96fc3115c3e057173bef72348d55b8984957fd18b7d7fcd757d31ebb08dcdd97751ad973b1c57edc1cc0c3839ea3791cf17c30d8c537d6ab87e864351b9671e5b8f3bd3d9498b59f0af826ae9fb51aaccf63fedb299d94f2bee45f67886dd77f47bf21f9d3c2f50a1d43f3eca7f27d7ba861b4dc2cff635ad9f615fde7fa43fffb67e155efe08b3462805f4ff4ce0297f017e429f880b7d1a11b33e7a9486f79d237aa8ba1388598d5dfa232fb559eb748bd7e4e2769c56b208e56bf87867bf21c98ee7eaf129ba2c33ef9df5a9fa33dfaa007f5734c7b53a1c442eb3c5ff5487b0ce83ce1dd47b45b60267eb21767e1df31ad16bd9dc8bb2fb298cfe5f4f36db08bd860973d73dbc505f68f44b4fba5557195622d734cc0025faac4052c714f4ee78bcbd2bfd66d3b22afe3b6e43814a8f16fdbbfc44214f4ad41b03772dfd330c66271b62e9067c18f8bf1d1303ea583e9f9708c2521f0ea6f4bbe5c8568dcf7ddb369acce5b8a099adfadf1766536aad5763c56d9f9ec4e89c72a8b098190c0e7bb9fad6e165fd2f8589083ef6d567b77c537fbc6f0b08cdd14d9d103b2b6f4dde679ca552f30e0270d9df057cffb63c82d882ccfa4b487314863174e9c0509f8ed3bf4f2033b74b682e76aebd1b67ff2bca3419d378fc56dbb7a1ba2459f0eec91e6dbbca6da447ab32397dd1b39b67e87ee76199aa3c07aa111a9f1e638fe4b7a2c4056993e5defe9edd9b82ed973228eb0470b905dc3b6f60ae9825787d2b2bdce255aa465a00f86da720718fadbc1d8a5343f9026b58ca448caa487765c512ab99ebe237dcd17838edef77c1c73f38aec3d78363c3cbf1730e616575d7e313ebc36fbe7b6d77bf6033b6b2af2a52f53e9e22685a5fc33a89a4e7d5aa936b90b9dd19691fc67b6515e272f7ffc8c9e78b5434f6b3486e9c2db2864b8f4cdc74221184b0e893da2f92cc73884fa1fe66acf8383e47fdc1cfffdb1e0ebe3950eb6ced10b7e192ee69093105b11ae57110a3b2a64827aff788d6754cb5811d08b4eb9281d3982eb967a75ed222f30cff74c9c23a9e435259e13a967c84be283eb671e379420aeb1a8e3fe9598706a567d4be0c78887c490af56ab61837a9407732be4e7c05e4d36cae26f691ab7c7f20bc6e2878cc8b579c90ffd6104ed7ec9697b8da0f715d46f0df131ff4381e7aaf13cedf5e84ed310f2614fdbbf2ca40b9cccebde58ad4d157a84fe5dd3bf424199dcd73ed1b8c792039c6356609a74c645bcb96d3d67b40c3b7c1eeb16a37fc8bbdd9e677fb256a362dc4ae7cc1389f220df64955677da72a9908b415b741b309a12ec3ed43018bc67a7792fdfa304ccfa994f4c69c75ba117c13232f555e8901d5f6ce14f875cbff6b3188f0f7a610ef244650ecf1148de14fd6d8a9c87ae8c5e8df6c6eeb8c7f1aedc2eb95febf3aef9da43835d14b68d2406cb8da6d2b3adb6b44a1b28bcfb6678f70bbb5861e9a512ee383508376a69ebd0ce220a9dc5b1fa5ebe86d5759f741627b2cbdb42edbaa7e89b0b7deccb7cc443992f01fa26d8031b3108d7da4c936595915fc8873bbebf9acf8bfb537cbf66fef0fd19be9fde28c17319292a1cf32c6762af6b0f61764f942cafd3e27af1b1ebf905cdb398818fb8f5db216ee096c9c15f300eae237719917b673e8974b32327a934e4cb318837ed7fa0f9f6b33fa1796d0ecf2536e5a4d2745017cfe304e9cdcaa0e6b05aa7963f58c0bdaca9d247cdabf186527f5932a38a413e7ffccdcb5e1ff7c527eafd56987a2d430d2b2b8418e97c112da10fe43816f960e240add302b0419d137ce368f3dcc569d317d207b8bb5fe4c1b5f058dbb146dc1bfa27f7727f70af460cfb93e4b4edfb497b7c3f59c3ef84e41aa5fe72a7f475438d7fb97332b67cafee835f22dab5282d13f8b6cf338896416f5cf1dcd6a504d98c7a638d3df1e30adb996caf13d2673a3e59fb41b6d7be5e073e718e4cb68e82bf404f89a03f802a9edccc34de5fc8fcfb7d43a997054b124b5dfde5b25a08cf46a4f7d9471b5369d0c75dccc99d76e764f5f899edf63c438c7754b361c24d04750c48cf8b457efcd73eaf71b0fd20d91b24f4287f6d472d7aeca849eb37ce15e75227e62ef2b3d66f2b579cab8c73ace5db3c681272e594bccef094f7142aea0cc1cfa532a61c24ae41221e78350d2b742288e53df123790460d43d9688475e951933371eb3fb8b98508d1f1d5209fc772f783fb74dd402277946747d2045cf13c473e6c49bd2c2db378d8fbba577f2344b5bdd19ed003be34b4e577df6fe9ee7b2add1dbabbeec7fe1d47a70393efd70f5251acf59625342902f61ad8746269e56a409f779800bd1f3dd013f532ba657ce7bc9e4365c8fbf33ef6f827505589f5d8f9cd2f2eb83397b798f6ec8af3188a4fd8ee7fec0b6cf15e7366ee6dbba8f2fcfdda189cd63f60bf450f61fc655733d79dbf113116f5b998e1dd23d2379e78c3ebc6e9cbd9963b051a46ce95bc4e648dcbfe6f7543a3ae02ffe92d30ff1b4bb6988b68ce514e974cfe6ddbe5760c362cff8a731ca9039ef15e22e9676787adb28ef89341d8e41e4eb09f8e0b86fca0f638d7f225b39e2756c12f48aedd99243a6f203b4f3d2dab96c358cfc17ef857e39d57b9dc5293f33643317a723078765db9bcb422d5fd1e71ef0334d63f9b0642f06bc74bd5927f6220e94f5e807b79e3850635e8e9fde70fccb613ec98fe5708c70672824b39587ec3039ddcada241b8e610ec72cd1591a7e4edbaa8fc16f2aea2c5d6ac3314fc04450b925b291be76b3702e6b3be5c91c396538668b6c8bc139a8c46a6910f446e3184ee73e364aa0ad358e99ca334e1efede6a2a6bcc5a21775f7aa0c9cad03c0de26de73779a0dd173fcb7949e547f3005306fd5bf6f1c5671ce24be8778825e133fc65f39309fe3dbd7dc929df8ef77cce7799a9af08950a4f7614467b7de5d9a7dd6cafbb3d79248d9ef445bea8ef205b880f989d4f5f4cdd45b60069f1e01bfadaf30160a2ef7c5adda9e3abc33323810fe275e65d011b8a0fa9bdbe0b85f9221664fae4b21e2f863b4e015c37e82f1fec0d2b46efcbdf81bef50d586fd1f86acfb7e877b48f718ec97015a3126b8b1666e6559b696b414e635101ccb61a46ea84d9cb79cff7481b2d6644622a249fe35c6c55640b73cc4c56dda5c64917c06957dedf5ce5ce980aeedff639da46cb938a78fa6de95b683dee0e0f7559cec2074cfcdc17776fe6a665de15f62dc7b5b6a7f7bba0e7f1ef024f0e30e1a13e3dd91cd17a4880b3b89f92cee208383ebff0ff432c2811e752a9ab0850c30deb877409c289b823ac6d2e3b91cd6ab3413cb056c7a56f41bf019bb73e2c7e5bae7dd9631130e0cdc13d07bf2b6f4e24b659ff6bf9c15f1b7d76c13ae33b0338f32c57cefdab5ebff3f870373af428acf4990c7a37b4e9f8e1b47a5ef5e81e9702dbb5e80d28203da475062d9e21d119fda13e83e6fa5d9d35861167663bb782344ff88cf5e51cb4654b2b76cb3fb139bafde1f45d0035a7917632913dce06f197feafc9e4f6dc3d4417a2ae42aca5b38e795ec17f986781d61ec7dee11c35785ef17b628fc8ee9e44e1438fb4cc1ef495625cb7da77a2e511fa7115fc36b147dd393b949658e1ffdd7e177e6941c1bd0b0bff3d8c23e0028b85f8291a7f22e63240009bd21bcc3b1ed2753af6ed3f1c8f25dfef583769ef891bba1c8ead987a915bbdccebc59c57e73076c83874a209fab6b338be5f25eeee17dfaf8dcb5904b4a7f81fcee218433e7f0f2fe9f14d757b31da90cf18fc0ddf7fc4441f4fb2f434dae5f2ed8fcf01f0cfd619d0ab3e3e68af76fe701c75ddb1998097cf0a595ad005fad7e627ff259f68ac83c0ab09b2d9ff500feeeaf2721af7f8c9b28d0eb536895dd6d048454ea6575c7395fc1a7f2fae1d8b6bfb29be565bbfb2cf33d2ad446a9ceca7c4d93912677b4af262b8da2ab350154e6a2cca5e867b0f07b1e07b8f8dec9d37aa7955c90f49d6b6bf6d3fb8087389d903e6517041f2dc95e3ab205f32c1f7bc8d3ebe3859f00db85632990972fc10a8c96f137a3fabdf027f67ea7aa0a84b973d7ba9785246924214a031c6625d5fd4cb3c02e08dae4c9e05ea8e7febe58f3bd26ef9d51a350bc16eb6a9e5a880ced9ce4981f15c9cc5917616a73e393b7c2efe071e9958e5de8e8bbd8d8bbd758ec5b54971ed515c338be7e62abed6c0d121cef683ac746d99c9650eda4395417bbaf3696cb7b0f14d9089b305fd0e26b18074465dfd2df00123ccd5fa7db57704684f8abf111d791b7df23b3fa3b140a9bf85f982c9ffbeece5e0dbf6e358a0c6bf1d3f4574561b1be989865ad34926173b8bb12ccc825b71eeb1be9bfbf44612a69d91f44ff940f2940f5471d54450185e8c5648d7232c15fd7688d781793529e65eea65729b67dc31cfe8f2d88e7fb1261bce35f9fd179e7758628bc3b9c0799ab0c6658e1c5aa707f4f218d0e73e6e6ed7a796f7e741ef2b7bdb1f767eee9352994898ceaa9a2fdcff942ff2c410adb6ef45f6545d6f76f358ff5e19a7b856f7f0b657c6f77516c64b65c1143d59b0acade9f4bc1a8bac1703fea232be03b629e478af52c73fc4553f9c3163296dbff9f8ea44da716f7c6436b5f26cf610af23ba875f40fd4c4f0e50d16339f7adb14195a330c3792deb42df531b784d357a0e120b7a5854f2aca39bf95e38f03ca2f958e48bf586fc8abef1e7f9039a6a77f7b6cc49ebc854b0bbd310ff8b7169aadfe9e2f7b4caab4801bf1ffe853c84daef51fe7be1bb6ceb9651787de2136faf73a99794359dece1ba022cab1c3baf476777286dc88ffbdaef3633ff4477c7be45e89786d660c5e47d2cfbebd2da7a90fc24dfa7bb26b90f317822efdab1a05e3ff909f7482b75db3e5b2f754e9df86fe31c80dd911de21a3e40c326978a5e01855e4bd0a14571c4deb0c2a7e74799dd1ab990353e27c86958d76184d336b18f64e3bb687daa1ccfca8681baf51197a16fe3f3783e8b47f537e247557c6e8c6d4f3ee8b5cd112fdfeabbe0ff111d18fc19ff99fe0bb1da5c972c758a45a16fdc4a5da4d04ff95957df7810e7321e046b7e09914ee13cc84c341afb1a6f90ae207bb78dae5e9c2ca9cbbc0b60cf8c2a1e23c8c9d9f189b37d2401235d90ebfe43126a7aeb7ae25e4eceb64f36787171866a7979d9ebf864f79c0206693b3ec997bafab95ca769b14e6671ed545cb38a6bf3a058c3a841e72315e9f3757d34117987b17ce26c4dc9a8b596f78d7eb808f300e9e775f951d67f227dddf293b33525ced68324457dfbddd4c79d58902f6741463afc9611e6ef8ccd92b490d5e51179cfaf7f0bbc7931d11ec9e96583dec54b17230b3ab626e82adaa4b13776be777dbe97b60ef0ffc8b95bd5fd6f989ed25c2f0dff3bfedffd760835f225561ae487be8cf97762f91cc4f23b31ff3fb23158e8858faebd217bd255eaf6649d36eb67304d9a36659a6d0cf5e2f8e9ad61a71a0bc46312511fe76b2581fd51e30fc81e059bd2f1cf67b817e9a286fa8dfe86de38861423fbd3c92e37219a35685d88ea7ecf097a17f4f3b4d904f12e52d4a5b85f5f228f8d5864619bf6c965bc77ca0f7cbb2063cafe8ff320e7837dba1eae63ef3b1335990b7649434607b4a71c4bbbb35513df92b5ca7b3d065cf71b9e717e87cab4ebccff4c5fc53a41b78ee1a53e0839813bff70a9d14152f1c1f4d6a7179a547ab3a38e4ed8a7473de539ff8eef735bf7e7fdd8966cd006fb9ff09b66de1b6196b9bff91efcdaf9b87ea8b4fb067953770ff2390f9f83764d19d05a1fed845797cbf32706eb3b1a980a759da24fbf7b52d354d876e6d5d6b913d2f95d88f5d5ce4bc3e61c33a22245cb13e49adf3745ee09cf28805788f66546df5c9ecbc71c14b91f680cc7bd5abfd633778c5de6d9d1ce73a2ddda1eedbc6e2feddab8f37361511aa18e3e42930a3dbbc0e008ab78148e75011ff7d059efc1fe2a6cfe1c97e6900a320d5834f97371adc6e9554cf6bc50de935c5f871899f09881dc59e7f91762887b3cd93e7dcc738f905d113bc7325678ade774ec95fb5d30168cc12eeee8598130af054e98425990bf84de2ba177b324d2711acf8bca0cf1b86b3d1fd6601757e8ad54f5c588457d5cebddb8606cffc28b45ce05c1445bcaf31cdfcbc788f4d58bb3f0c777835d327db1064b77d1fe51967c8837e4dd17b5bb2f8c16bf9c1e7f63c38fd1b1a3f17ed77acbfd445f2736b277457657fd7c800f58f61e5dbfef827132f0fb2648bf377f22ebabdea95721f31e1bf9908ab2176ff4f1efd637bd8db1f82df013c694c99b2093b130427f37e43db207be5d36be09a3ed6f4b0e2eb61fd7e54e631ef5bef3586678a4c88f2fae7ce98d9ba2336a52e1f099aad502ed8dd5de3296b7b63d5bcbb7d8efb4e566fdfffc399c15e710ed6599f7b1d3bcad42d09c12eebeb684f7a1fa97b0ac45cacf51dff96cd4bacfb4cc891838773b8c4b7bb079cdb37834d78f5f68fdf25af71ae61209186f6b6adceadb0e79d25767a495f87fc27456f6e6b51fb80fa2692c3f5cf670c7e78e46efce7afc290f05c797633752714ccd27d1bd37810a7ed9d9a54f4678e669380fbdad7721d989f38706ce7a816f57c5b97f95feec41bd2f7ca879ff20b7abcbf4fa8ca5793a813cb9869dd88833ffd5e7abb3e7dd3adb7f238f67d0271d7181d597cbfcefd8703cf4332e75eaa016cff588ff249e3cebd7e1b6e063eacf37008c99de7ceed933dbee1f8dbd4f3fade724b86c5a8b2510f77aacf3a73a70dffad4bf61c9b9ffaae61340bf21faf84f62ab559d23f88a9a365c7f6cc61df6a9fe0fb1199a18cabf68f08941dba89e177bbf7fcdefed5c8fd6f7eef73e9d1772b8866bed3af6d7cea791fefeabca57c87b9361bfeedff9ef45bf9ab8e07d389ed19ff3b4d7ddabab133fc951fa4b9ad6e3105ebc99bed773a7312f9bb66215f93d7d3ceea7b549969c72e22c747b6377af6b1679fcdc2a759ee470376267f36d9f5d45e43a4b795f9f7d6ab0cb478e4ffc337bf015dfccf1ef20a7fc3fc8af28649e2517e7af1b7f68e4aecccc3c8f5fdb58680de53c5650d84a3c97393df9ec8d1e4eca7b027dafca1eea970f44e71ae5c52eaf3d1c9e03ec984a9ff042410ede045dfd161e45de74d19bc40b37fcb8d1c3db443640c01188cfaf739d7ea1108ce39b91c12ebe01b75821b3aff9fd6cc9c9b7c8e17b36f93d457f10c1201b799ef95a25ce83b8231d5e62712ee742f6c2cd91bc0a4a52c5b2dbe30059aa7e0b590a73ddf1e109f2c7d9202e7bffeaf70bb29f0c76f166f7f8a3aadcd5495d7e1e8bfea9793f782c8f40f79a311bfd5ee6d45bf91c6d8ca5cae5bd8093aad71ff422c37521a00f43ef74c239856fae42cec43aee277f88bff49507b83c508f5360e7a86dec18ce392d6fce91c136408e6fdac46002fc73e82f0175a4d401edd161af8f0f85ae59d497ae238d314fcbd0d42fcc90aeabe948ef06ccf9d0623f403f463ab8652c0e4b12bdff8ede7f5af01cb19857fd1df1b7d5c16f7fe933c619914cd11bcaced2686348175326498c1100f97d9160bc33f6e352f98679f32fa9c417705a79cc66bc1ea1775539ca56d6a8298836d3f782460264136a336d0d3904d9e162f9c19b33256f8d1c5c7e1bd77260e3cde8bda1e73a9817e7f885da539f50a91363d993e4ff62598275ba615e51f920f3fb49cfa2e8d89d6bc113dc9606a66403cb96674e908b40d4fe9eceeef5be6f85bfa9e51bbd36b0c4d13341deaf03edc1747617f920de4c01dfe1bc971346423619e6f7053fdf5801e247bd75bf353e312ef3c0f70a715f53c1c4522eb19025b1edd39e33ff08ed687b6ec73e2b5c7b07c7d5337a2bbfc0e028f646cac6e96a3a23d7ca825a2912b99e06a3b5222592b2c8565393581d1d7aadcc88d54322a5c732141529cbbfa16a04f3a5ce82e79820c53e4ecdab743c3c24e5404a8ff791a438f44a3950e27441aca641b646df560ed95ad98ea4a9495832f1907c24179cab3a0bbf24ff87f391c7e4eaf13e5a2be6433a9aa3b5b21daf159312a7662a1da54c7a48f45a5147d2c31cad8e567d3eafb0200bdf75261e9d743d5d8c2534dee9965c2befc44abea7abe9965c1db7d47a1aa4abc782968eea5d8ad40be0c1c8e91c7cf83f9c47cf99998b81b655b317d82acae2211d557aa5cca8d5747b5f3d0e0f4b2688d509e698e77ebd7a874448c7d908cd017fb7b71ee105168c94c1b3504bf1fc7baddca37bbe1f2febee9bfac421cd9f53b644f8a5048c6a109aa9ce98f54ea55583582db6da73cc1d2cd79698e65abea0a7b411de7d891ddf77ca07e41a3ee995115b8674def9e9bcf07d6c3bbe5f22d114f26dc77d7ca904c7ef348653b9d552993183f54c5fca85fd1fb03cdacffe442f66e1b988c9f64867cc7dde32ee83f5bcf7b7bab8daa3658ce435c681a097808737b3627b8efb0a633f68916f766724b9ca69db57bea656fe083d6ed8e96cdecf959f3473db78f5fa2907ed1c751aea8ad5867e7a85e76b391ba2ae42ef49f09dd6eb587cf47ce3db6113e3e623ebb109bce21975a4f9ee7ce999a3edb94f7773b2008d23b6289ab465b0c5d8fcef8d15ec4277ba1c4b5dbc3cf025b77025ea352871dff72db9710f927d57870a4fc86ec07afaa2b0bd1e88c6d1bef7f48fb9229958f59a6bac2be0ff14b1d55a6dd0b5f67b7d9d06f7b93e6ee8c30bbeede6deec07eeb7fdeaf7969edc4f2bb5ba8abcd7682cce25c669d637dd0439f5baf33d0cccf7f072be98367bc74f43df57a533df27f7bf982feeadda9d2f3f46bfc7b86f6f63be64275716f74bcb31a1f1b804167a7eb6e7d53caf4ddb301c58336260cd12e893d9ac9d3a0b727a6eedc59fbef78ff6c299767852effdf5f7fcf3bd30993ddbd88bfb4ff7c27abce05fb3ffe9bc46bd7bd1f11b4867334b4f80cde9d337270a43fb94c76e021cc7db4561e2f25ad6c75f6a35d0658e5bd1cf19eda5007b1d5cf0dcd21bf42b2eff3e031f117558cb04f2daf409c81be738bee77ed9db664adc6b311cb6e2c1de43502ef1c6587cdba3bc971ab2e1d8d9d939deef424d5e6dfdd24f06fd03a1d6f2316624f6c93d0a71717cf2f66500fff490ccecd30784a89eab25fdb5d1b9c9174b3e3647d2db108b8a6fcfa5787d5c02ef2e7e7b56ebbf39beff2d293151f7bf69323d533946d9aa166710da5625424921c62f74402e149519f9031c3f56e4d4223f5defc12a4b37c6c51cae791ec602d3876baf574ff4a9f4475887f3d98fb00e1df9475887a918102fbeb96244ae9ba3f41c3b1bce4adf73f1675f4e4dfb3ec0e37c8ecdfd25a77aaf0e398433cafeec992dc5dc3fbbb6fec0186b98817d3a75bbfe87d208bd1b1fe879f720366f7bfce1e7fcc3b3a31d679facd0e6997b8f9fa2effd1d3fc8e01cb9aebfa4671c844dac6e768989ade15873174ba4b3263ff5a9cb1a39b007affa87583fc0ca311347ce735ee7e79e7569db17614f4fb2565f10eeee237e03df8518eec7dda6c2abcbe2de484ea4dd9d487b804d827887fc71c33114f5b0a5b8cce5b5c75ee7ae8bf94762ea7408392ac6ffc7fd3fe47f8ed5d67ef627586d167ace20ce9f7e90e83db834ba9cf7d0d2fbfc7a05b65a9a35fd5d134682fc54f5cd79a4a1305abc3959f22de8b4bd972f374321097db472457ef22d8c8804f3da5dd5676bb0f68a7e33d86582e40ce28f65ef84f0eeafc3bb6f7029b2f5197db4730bac9d7dc3d6fd205a3999e3b276b3c0436efe3d2afefe01aecd78a3bc57efa9fe7fb45166ff3bde6c85df1c36f09b91ed5ae2373b8cf4f3fce33f8a51e35e953fb99773ff30b7f9adda8b716d5e416dfdb83fc1e98996512bc6dcca4f70ff10dfacb6f699780a7edb193d12f5c9f5538e33f1e4d4c63cb97eb2f0dbc541766834b9ba59b537c56f9f3279134f87df8e4fd37f10c39f2e7dabb576ed5a29a9b0cd1f3db1776f30f67e3a308081aecf6ab414209b702c02567c6d0e199a03ba8ff4600e194d3773de7f8073d783dd67b7731f3402d9961decbe92560cb5b6eef5f3baaad790bcc6b8e3fb7abcbcf7d490983d18774e17e38edf22fb8d168d77b496f406fdcb926774668d07fcfbdb29aeb3f1593c0589ad9011b2612cb4077393b13264c39868ddc71bf8373ee5d7c742645e3f6bfbf629c763d1307f1b59ad57901c7f89faf6777ddf2c36a6449df8fd6990cc9a4a5eea20b59c94e2bd451edf08e25af33ac67138f9c27f2f91ae6e472101356d2d3c6c7ddaecfbb4efe9f9a10fe450967d0358a69813e6e3b5fc64c1287a60d4b043e7dbb8d553d1ace79e7dc9e9f79feab8458c3eb7771b39e49fc57ac19a1ece820c3de999b2d6cfd859c856ef9bff9fc8fabeb57b25ebf723780efb904fab30bfe7355e2aa2572c676e206fb00f16d9d7e8dfdfd0c7057e8fa1a703d4789c82cb1efd3e57997d6993a7c906fe8de3fcfa5888003bfcb83116bf5d99f48468023808761627a2a1fe76b2e06666e97d237b9e70922e8e1f2782cc1cdb34b8efa7c17345134023f77e1a797f462340bbdbcc3b8bf3f712c36f7f7caa577cd97a8868a1d16fd5a048ef73deeaed153297bdded13bbe6c9d1b7f163e101c431ee0a9792ea34ec72e7bf8334cbd17797cdbecb53e82bf0bfeb7bc0710d009f8c9ff40b6114f7486b7466d2ff40bfab31aab1f62c5b6be13207acdd0bc301d2fae9f0dbcc09fc896b62ef1d18395caf560a52e012bb52d5b5a6b7e13e75262ca2989716f0ecce768153a51e8d99c85ce776c53b426abdbe17e5dd4b9c7d6e3324b9fbdcafd427cccd8eb3b62cf1ee222cf1cf12099d7628bf270ee0fdf7e7fd127a817e7c013ba3d867ed77c6e9ea43ca9998fc28702e7ea106f289cb387ce4ead96039f29d0e3f3fe523a37d6d9433d2fef621a1ebd815e0e30c7956978885f973d980c0ae95cd09b295f2f32b643c4e76b39b5e8ec2bf5ef84571dc7777ef7c6f3067971a77e0cf108ccd3d8e6df8b8a0f94311c9c2b1136fdb3fcb9dd9b27e75590ff8878d178336accf517e407a37b6afd7bf0359c6389e7cb34f8d9fab42deea9eabff1fa8e717e32f0c2bf9b7b037822708f88e44e8317a644b93fa33a3f0df2f1a17b2eedb99e2d398d913c73fc3e7acc69e615fe4139eefadcbd9ef7013d789f2d5f465fee248c17e9009d9a388642fbf75fd4d696fcfc27b5b5d1eae6465a063d5c91bdc9d2749e93fddcfee2cf3fc931f43a342d9bd1426f9cdb6819d5ce0f3ad755ed3ad0e9d2b7ea6b7e16947b936658332acef15ea7d139feab45bfb56f7063744637d306add2ff513d6fa5331a552d4235ef716b9c07f4dba4f61b3a3bd132ea9b4fd0ba0f72389ff19dff84d6f63faa01e03abc7be99b5e83b721bac075dd98379dea73f3265f152f9934f8d93c9d54bc896eeee9bcc64b1a673ac735fc9ff4a22e4e88cb6b99436947772e9d2b1de93fc22a7b75c664efda59437edc59bb7d77cde2ce5a195dfe559ed75735c4b99ce8a1cde2bc9ac3bdab5ef1616decf0dcd5e2763759a78f7627b7f0c7351c2fb069a467d834456fc4ee58e4064fade584fef04c0df5a3e21bfc33aee5ea011640871e9449db5e69e9346953feb5f426b1490f4c8bd7b66d991aaf0ece821cfc02df3ae66f4dfa63cd5a7f2fac6f410d0a5c83bea1b9bed0a0d131f41268e81364585c1364c053c2b6d6bcc533abda8ddc16534b1a17f118919ef157e3dd72638ce83a538e4b0efe2b1c889fece1b5636ffa6d5bb3b337b1a09ccff6316dc9d7ae3d0bb9b7a7961caaad1fa613dc3ba5f1acdcded3007aaab4f94c670fd1d8e45e1986c6c87dce77a1fd021ba9902d55ccfffdde5703aa5161e0f240f761fdf7caa6091a18fc96c210eb48ebd7033937b6e6bbf32b1e563baf7f4bd3b8b18ea2f18acffd437cb1615be96f697abe484a1c36ee79d4ea79800ecab3346ee28dc159fdab3cab8dba1fd8f34979ad896b86e9322acfdddff56b4053e5393c34eb8b301f28cf7973ac603784a5ac6f8e15ce7479668b1eaeed3586fc1cfa61f36d5c8cbce748b3fef825efc5f864156d15baad30da2635db1ad99da6c006df65cd5fc99711efbc8462e31d58771528b5cfc6fc516fd89d4e533a59c7de84bd84ba87a2f7757d3f7a7039610fd1ef8ba20772835f5e9c4548421e6d5b67007c389e81b5ebf85a1b7457ef3781799ba8cc9296ddddba2760a07f56afade6857bdd3dff08ffae3c0bef4dfa92c957fa0c5aafff2ff9d45fc37c2ad74d66cb3fc772faa9de335bd2c27c9bb86cf867d85e3d3a8ec88fbbb1b93f3b7fb90e4130564bb7111e64d8d2672eb57864bed70963fbf773db6f527f4fade61af3b426bfa97c4da755e872bb5bb1e77dbab449315797e762bb5be3fe328efc039febef3fc280cffd1265cde1bf6a2395be865030fe1003ae4313884e829e18eee03721a7b97ffdd17a2c87f16c7a6438c6f088f398c1e15ce7e9c8a6019edee5f3b1f858241db98078faa887cfcb13a86d698f77b856fd75fca0ce83853fe88ffb93b8f50feadb0bdc4e883517b611f479ff931e3dcf7d4f0dddb6d2f10fc990cdd063dfe4ba6cdaf417eb6ae56bf92f6be4cbfe42459fdef40a3dd4e5961d39ddbeb4373af10faea7579e46244e37069f986dbb8424de9c637adb645e738d8d457b6d6fc8ce68d914b7b64c77fc20711ea9d77a1fbd31a4b6dde275dea7905e5bfe3b59affd50faf77fe06780bdedcacfaa07feb31ed5cf7cf2d2b4d0d389fbbae1d73e54feab291362ec0ea0d74bdb67de58f3d3b66e97852d3fe2a5f495177debf831234d07fcd3b9cf1dd69ecab1ab81fe9b3ed2968eff57f90dc0a41b37e30c188f1c9e13648c916029cc758dfb605c3794faeb49effdf61efe0fbdf7dbff0ef6e22ffc0ef1f07558cf27d743a82b79fabcdc1b9ff8619f6b15f7dcefd5715fe46ef2313cd7a0d1b69df0dff7af6cd4bd7e4ec738e71fd999a7c3df2e4b8fd711d4680116f9e7f49e5fa7fbaf2bf9f30ac4a1d1751aaecbc5f5fc79856e5dc7f87dab27b97e65bd5b976fb77baaa53d3dd532434edbb9590fc8cd2aea99f5f02af013c4db1f50bb322f311d2fa67138db193d16e712f8c1ec122f928c6d5c8f94408e999c1eabf771e35a2cbb56bb363bdb539afc9aa7c70dcf4dbe58af3b06198d21e81b030d6390fbc610a031d0bd6390d118a0dee82fd74827e623f572dfce02f239bbb1eb57b9fae395321bafa6dad19aaaa4749c8dd7cae10e7de25ed46aeefd7451d46a6a0ff20df889b6229ce3f96684a9e364e7b3c1a523210b1d632efd36b83bfafb21f887abe097bfc5f8b7ed4de4b58b33dfd1da8bf7ec5472ab71f8ff97ec24c1bd1eb5c7da67d06fdf6296424f7d3b58dd6c9df4e07716df2f72e87db163b0879bc817f53fe0ffb96e29e662ebb35f22993a8256dcd77ece2be7226629e144e145457abc4ea3ef7fc25cc2d411a693b3e89fff46ef1114261f2bc388b364a8c7e9c9d2998b65ecb24fd5f2ccd1eee69c02c69da71388c3724cf8a55cc416efce2c9debe97d8af537c841522e04927b4ea4dd6dc0ff38dc7432756cb4ae2171b3b2d459806f22287395b48c06dea78e7619b2412dbdea71202a33c06f43b4661acbe39ef59c45a0ad546e6719ec02fabc09f81da16d7c109f1ae0a828ee7c71b50c2f34b1ec46fc8a712326b6d8f7bb20e3fed1f691cc2097e3b4bb293c33aafa6942fc3b839c0e8eb3ed90c0725983ff87be6a15ae6c6aef352286fabffcfd3817a1994757c3cb98da232db18a7c778cb372d0888b5a6263d47a027fc9697b0f464e1476fc5a3df1ea12b36e4769375bd708e784f14ec5593b97501be37ab8ddbca489615c0702cb2837b4293274e74b7c7ee443dcb38eb0870b35b62d8de8daf7b92e83fd5ddadde1b56c0bbdf10f0dbc60c059d1c9bb3b0fce82c25cc15f352b69e097ed5f9c0560a55c049dd25cdc772f2db055137db473318e5de82c4e44defbf7cc408e4d599ba1fe7ad2bbf5fac95e72babd10e22964c4f9c70dc9df753458bb2580afb77a7fb30e0262a08dda10a49b1deb398c39be1023f205260813dba76d679c0d4c1eed023e17894d63ac7f96fb84786885b9498d277b25f916a8716cc9f4dd35566701d11ffa8f385ff36f75681de98956414f51183ae4e56a20fa27efbea0ddfd7a6da125d3bf6d2abc020e297aaf4124361f5e2da3f06dc66d1aabd523a88c4e22bd83b88b80a3467fe131edbaeb54c9fa37fb98c6eb2cf9b6fd30144f1fa4431dceb24f37eeefd2c7f66a8cf07e22ddcea4989b13ed623be208cb58d97648ba0ddc1164b7470c929dcec247fc0ced511adb91e63927c0fef8b33d1afcf68bfd9a9daf8dfb65c025297b1a8adc05e9edb8be662e75e84da768d7901bb5f1a118c5b7bd3e3e1bec2241fcf54b4e710dba0ef3cb3154fe707eff90061bb492f5cead94617bbd9ccf371a37faefc5bcee3695d216c55cbb67b89ac79a52afce5c7b80dcc9798c1835d6a2f78c389417da7c5af11d3fa8afd175a3bc438e951832679b4a5fd2b0c122d9b1f8967d1a6a690a4ca35e5aa6bc9bcdfff17a145803377b1e9e6c6afc7fc567924fddbde5983affe6fe56fa8dbebad97c5ae4ebfd77f32a7c818687ebb26b325298b7df85f80a113fe79724237233e67334206bc05f61ddf6faf680b149b771db0f52f2ea53c8235dc01e2de912275dc3ef154abf828af82ce898021b5c9dd147b237b6672da331969bd183e31f5573dca139f34cf6299798545b5cdbe715f9d8792fc7458e2fa7f136cf782eeb61ec6a397d729d433cb841a7ffc99aa858d6aa58fe9d9b3d82558c777742f4489c01338f4f63972de400e88d36d895ca7b82b1744b6cbc6cc34fde84ec9209bacad8e12533903e6d7c24a6be0a05ceb9023fc96d0307f4e46d8a6859e4838207edc4139e77e7dc535a5346fd83b902463cff9ccf436e6b4dcfadf7387b625754f8f788a76b759c66ebe6f81ed62de5f48ace1c7c1bf4c9d5dde643a23c0f721ac3f99c2fd0f9bc6d9a18e213fb917c0ba3456c29e4551f2ddd9e7d32d03ba15623031f2c3eb7b87e602a1438d27edea75db5129be20881d70087517c761ddb007fb8feb0d6255e586dfd07f5887f65fd752e53ffffeb5facbfe784f5f5c767e2859e1a5bbe47d954182c709ca6812ffe03be88313a5afbff435e63007e63e53f80fe8048577640579e30b65fe912ce31bd215dc2f1c370a3d3b6131235db1cbd0bbd9fdc82ffe22421d919481adeeb42f750e5173ac7ffc07b9afcc08b918d50ea04c77f7dddb785ce07f1b29adc2f6aa2d1fa0dc8c0868f0730aa4057c8f143f5494d37984d5cd00d66e82cdc748a73c5d33274f8d4332915bdabe1c741676b39e5407ed84772f74abf44b634d8447f7cdea1cf7c610fc4458dd266b460f64afc28f67bffa77ba9953ae3d9f153e8096017583a433af6bf27a773fdf1a7bccc29f170f2f59fda147931e5ff1bd99daf53ef9e0addde88cff716af7145d3b827cb8ff5deff5596547ea5706a5369526090b5cfd646f63a3e41ecdf3c9f756276d1a3d9e5332462917212835d4ef2b310f7ea59a7b4382736c45d95f7c43992616dafe2cd7c81f62a16f471b1f679fec63234f5edd9d22e71cbeefd09efa87c636a635dcfb60ffef07dd72f9ac7e9b12e9be5fd2644c8c7502efb7fe8d7c3b2cf585cddd132c6b815212372e7abcb3312e0f9e47cba0f1f0662dc80273c888bd08bc5ab440cb1e0c38bc3a721c480782d68d860e1dd5766e17aa7ad543508d7bbecfd9cfb335bbe33b0df921ca3b77e2dccaf1d04edee17359bcb2e2e4cbd8633c498c52d8c115e2df39ced88bb580ae92cc225699f009786fbe457a13307bc43a4b7e77b4f86ce68e559945ae519419ec2ea7b2363fbc50579b0f34cea52eb41b305dfb018325fb94ff5cb789004e42ed7f757214bdca5e2fc08e8d9d3b6e18bed3c27d3479b02ec5a12ce1fa2755e6384626fe494e8c1d66fae5171d659fa68ea6952f69c7a9a63d25cd3aa37f0cb1cfce19e05cdef433fb31abe3101fd8865facb18e1f91b2492c5411b2385a9e244b92c903d62e95b4473dd3acf416e16d2615c90250bb4cfedb5fe13accef6b33fc1ea0cd1735ff22140fbdccd6124de2c63fbcfe2c924c988bc46fc9331b9732281ef52decdd5d3408934ca3296b2a573c7fdcc0b9d2e3655d9e37a20c7287459fab1e719d2e6776bcbb0422744bc777596d15c640f6aa4ff94a60672912a7e35df81ada2e6f380baf048cb1673fced058fe6a2390b3f39e37aee19d23bfe36d8c5af9c57fd32d825c89e2f03afc9de58a9cea9db1f2daf937a9973597f4727ff4e4e7bd661b8ee00f2ec7b3037169db876ad7f10e4b6817ef577b146eb08e410e1b2b817021aa36570a4a9a79d9c837c9e805d86b1d19fd445e81a51d60b675e37cf544edb395e69ff1a0ce72df4ae01d79b9f90009e7fe77b413957c09968c5e9dcf9f66cb04bae863b0f720b624efc9274d98fd08e563717e75e14d74321c334bd5008c63e32cee288f3a9ed630c7d98043964f2bce09ededd792ece68193a232d713b180421d26308d0e50d89d91acbcc3482b3e407572b0a2117558c48cf610fe7a11ad6ea999011e4aa9664afd3845ae26270991371b4305dc46264c5367fcfcf49f37e18878a7121db18087b639563422dda9809f7aae76931df0fbffdbc83ce2a153e10fd293a1358fabdfd1ec4a3b72e97dc0d85ccfd8a9d6b69cf35f4fdee3be4daf563e77a5abb9e59c68ab4e75b469a13c826643e89dd4609775fb24aab3b6da9ecd4953a888b38db6d0c225c6b334d56096daa4d07b110a70a914ab24a735b6d3188a5a8044ce3bbb23a8c492d721f1b1970b76bdf9f851b65188fb13686e58fbff3a55cae2dfc349ce30e58d4de87cd33578b5c85164576f2ea73fcfdb6ae7bb429f2ee1a3be85551a73be1094deaa39dab531a92d1bde3d1786403a7376b142aae4e5e4ca39b4bdfc48be9e656ef8d156747bbdcbf8df108b05f44bb5ae00f467c62876d6dec3b2b69cb21f3bc161ff0e6ca5e0248f775722c4eb01dab6f817d85747bd35860dc82d67326c5e0d8aacee5cf6e3bbd08ec535bb7805a24d2e5b5e58ff165aa3547fb02f606f0760dce23d1cfb320ef17c9aa7a0e7f6c9f3e4877867d1dfa8373f5c7875bcfdf6f7d23353438d7550d63c52fcbfcf0ee7cb6f5f133224ff7e948adf9d3eb9ff4527222ede1ea29d1476726c55cd0fc114de673c4d8ea7f9aeb8df963bd6f30e24db02639c67bbd96af7deddf9415c36771fa5eeec9e0bcd9432ac83fcf511fae43af72eb77faee64a9553e2fb27125b6acf944fbca59bc1beef830cf6d47b6f23dadd75ff6f20e44871516e0c03d9cbb5166f17a70ed3ddb4534cf118cd4a0f99e7b34829158f02174e8a82e4f5fd0e3d93456ed73dcc038a9deb5ec3b070f8ce7a81df706e4f2ad6c6a17da5ddbb294973df7f69e857d31ae28bc3941adb67ea837e853bbb4cc85acd5cae377ee7526935b78f88836bfe677af86d9303c16ff900acaeb3a9d9a6fab5fc755dedf2ca5a337bc5972f22de86124b05c4bcfb884864c878ea179f65cca76acd7cf2373da044c00a3e2b32ef741e0bca702ab67391306f8704e6fb57ab5d9bd965f9a7ef5ca09377467cff6add74f95eb963bf4cd3e7a8b1d42bb5a1c8e67beacd7e1b947676fd9205afa5c57ae9efae6e079059d0cd25e17efa0d83b6f837457965e2b24b354c21da7862b6e4bee960a410fc99436ef79aaef40ae55c93bb5c0a2b4d9dec8eb6464af875e06e4684e234372b8d8ff81735ad7337e2cffa017d9697bdd128c043e4095933bba66df9ee01edc5d5f6503a7b8ebd71ca26d09f3db21fde10efa03ce1f398832d86d7b9cb3d888413dd54f06f51b2d3f5735f9d4a767628cad7e7a29f5c5694fcd729736bbfb3ea0f3eebb72e1555fbfe7fc6bfe8af76c87f9cb804ede3edb5b3dbdd991ab58ba0bbcb5cf97dd53ef38a47bc4627bcca3dadff57bb90b616897d0d0fa79d61ff8077be7f90aefd13eedf0772b5df6251f69f6f4c1f9fba6be7ce0fe1424eeb3315f14f5009e7992a0cf04c687841ee497bc0763dd7f130a7278035aa86af9ead7af705d0ffe728e4cbc3e2ddef2be85b856edd1ecff269e0e17dc2fa6aa9b803142bd60dea3e7f1ee6d14e26c3fc878735afced3c622fc74d2b64e3d992c3c917ebdd1a750a80a917d47be585804744ee325757cf0b19fb2aed0cc9cdcad725f06a2cc8a9b308969ec57e0415bffd389a7a7a74f514f7c000ff4d7acbf7f46a53b46c534bd219eda6854edcd6455ff4c928d7436c6375e6f372465ce6b25e2c44c1b7e3c759234facee536467678c733d0159d8dcbf2069f667acc6b7e0579ecdaf483bef178563950c23f22121065dbfc68b9e09f72f398d5d969e35e5e3ab5a102effde6aa3ccd2a512681fea8bfe64d2097c2fd73effc70fc7b85508e89dd692e32ffb6774c71afee93b96af31f7d1d9e743a2ece3ded3c3b51763bf194faeebcef1ff6b3116a487a9947682f1cdb4ab1b6909e86dc37828e0cbdbfb43b2f9e3b96cce751eb1e8e9c89fcf4f7c0cf741dd0a7400ce6de56c1e6d8a264c3dbce23a5133b2fdd66f3d38ff0d59f5d21e92bcd7f6d0475b5635ecf5ba6c6de7efd4ed1c41198cdf757dec5a0fde5148343075ebf6eb4299257bbf896327e0bc9b10ad5b8ed74f0cf4b23bdb7e1a235d68e99b79ec69dbdfbf8ef5003fd292834e4e8941858fa2dfcd469edd45d60b1b32cd482756658b9df77210d7f18d5af3e9f54589e1ff8fbd37db521459df872fa80f0a1c2ae53053051547663813c84c145076e1005efdb76200020890ccaaeedebf6fff0f7aad2e932188e19ddfe76988b71e50ae63538ff7334b7fb8a5d9ccd57d63875c6aeb7cbc37a24013b8f55e1f46b651e310ca78df62e710bc3887e1609b6306b09e2d2481d39716b6cf1f1c167351a13e7e88095cf4aaa3bec04ef722fce018da15b06fd08fddf170b054d834c70680ffef23cc61fc3bc4a1c6bfc3f7e2dfe173f0ef7be2fa7d7e3db0a3d52a8f8e6785da7c47f644b49e2f605be75c1808d3ebc1666b94be1b97db568f6b1c7b607ee15e9ccd0beee4d92aca79a7d2b732c601ff596055cf562ff6830d9621f0b1c0fa1376ff981c4fc16962f7ebfbe019ef5f363e6c17deb614ac5970add60b98fd74787342b0b6c14f748ea05d89f74fbd160cfa134116c72738768cd5d94eb17da6e39a4eb867350ffa8a53ed6ae1be29728c902b30cfc7e6b9a1d4d2d711e410f2d99b25683181f95b8f3d8d871753bf042ace1f5932e4ffbb51f2f40f707e6c018c27b8eef4c503f3a275c0542fec3364bb967a10487b371095e406e406aad718956c6f209796d3929d1e6d0560bf79e9561fc476d976be82f921efdfcbfe08d8b2e26c0ef1d81c8a9c307b5e60f62e53a9ee4bd6f7865ae79124b92397b31547c6daa8ba3bf56ea272b19621c722bf079cbb04f63248d31de4e1b6f4616f3e61605ed4492fcefcf0fab994994bd37fa8466804c67ab58818ae9dfa7fad74f5b21e9ba12e0f6f2eaa99007a25863d593e61e766ef3b0c09fb1eec0d8afc082bb222702357f036767f7131f5247a0ff96e1c9bd9de9fed20e769c6b107ec25e791e525c1ba265e714e50cf76c64f80e7fb5abc5b536d46bbbafe1a9cb9d492bd74298c6260eb2d67395f5b5cc86a3eb454afc489508b9fcde6b19d268fa53025f771bc3c7dfeda1a2ac4fe5f9e7cf4ff721253ce526e63ec88fc53f53da5f9a2ed3ffd5cc5dbc0670fced77fea78acc915dcbf14a65cdd9e00320bd813094b792e782fe4b32d7af946e1e2b4fa518b69c05c54354f2ec158bd73489ef901d1269c868b93daf05c95fa5cbbd37347e1229c7e69bc967cf7f672c5879ead471f33f5873b1e3ec9f5eeaeea148ea3f63751896e8b83c56ed36a7c12e602eb3197070ff37b739da8c11006d1c72c797ccc126fdb7f12433c462db695ffd349cdd0ace476e01cf068cd283502c172cca7259fd94846763f19b90af76c2d7eb6f892d1e6b46a5e7f0263a7bcfe77cf3914eb641f82d187c08d3e84e9efaed377ed4ba0db2730b71136e9c792edc42c4f9fc07e1e80b57c9f4441c13902712487f077250a30e708b8feafeaf52efc1de23c96aeb727904f7404ecc16d6f00ae87f819e603729780df87f077057295c47b74fd5fd5eb1df8bbff57f57aebc89c4561f4973de16e9bf01e89a9e76d85cf1fa6129d45d9bfad0ec9692b7f9e9dc7f0b8edaf7e9aa9ff4b9ca92367c2b19bd32bc4f8daf4e7d7f7091b42ee09853d413cac310379a4103616fcff21c493ce7e87d8d2d9ef03e2f701f1bb4ffceee7bfb7c964520e37cae05e299e4bfa46c972ccd3652fb20b23b23f9e5a8f92cbf7669f8eb4315afcb900f101e49cadf7c5c17a6c8f6fa30f61345a8dcdd079dcef255f98b6df8f689f9a0aebb9633acf6d597f348f1bf58a0c48bde96d8fafe0ccffb59a252353b9dfa16c9cbcfea0e78d063ff3b81dc2517ae47e6de60b1bea8f6aeebd4dcf92ebbac1f5994096a167ad471f38affa3143184e2e292b2b7eba55ce474615bf18fc968a057f0429f7834d38c8e5fbca877d85a30fa1fc9b73f07fd0e4b47d3ca3713fa8cfce6ca74854d0754efb7569769d491f6b765d905de796308f49dd9ad9698308e26037c513a8f29eee7b91eb0539a71a755bb3addaad2eb87a6f178c290dde47f3dd9edabfc60ee2d2b963c2e6c6bdc6302627677e2eb4efdaaecbec40925b19f93ec28873d224ddea6ab41c7b0f74560bbb1ff5b4a2b89e280c62986fcdfca6fcde41877bfd867b81cc5a70b0165f1832c0d7a4d573dbfddfa9e7e6be53cf7d73674c0cde4b95a5547f30c3e584788983a501634129e2a984ba18f543e5398b1597e78f48fe16f0adbde064fb5c28091ab33a7da6589ede96b355f401e6688cf8b5959e35b58c5dfa3e993ff5bb71fde72dab1575b2180dd45d736e8531e9dc1996753aa19b90cc0b3299671f47f74da8feb59a70d7edf1f5c7d298ff748e11fc7fe778be38c7a2b6dd32b2e70d08ec1a1fdccb14d7474cf11c98430bc0bff7cae0beeda9a3ad0ee321e95666716f61c2401fffc8dec0bf2d58130d7bcf6ea21205db0973d92ba3b373642ece21b96e65169c2d6ea9fbd1e6e0ddc0d97227ccc5067fd347318c25092af87bf68c088e4707eff67f80f959027b73c25cc0dc6e653680b8f10ff8efd25896ba1a5bc06e177cce4efd9f9632e0c058c87b97c2805bea8378af30973d9483e8f9f9f3e078079c9d2637743d313639017395c7c9ece3a0c4cf8ee7de1367bb119873429fa708a35343fa1ff2c2677f63d30d7e9e3b19703661972c8df90b9e47302e068d7dc8c15cf7247ec17d0ce7bdcc70e26c95c568425be06ecec1bb2efbbb4894a34054eef5f709c03ead8edd63b6e03e857d88a75d24f6069877451dede54be3f758ca30127be571c3de5f38cf6c00e60f7ec789cdf7e6be844709f728c48127f7af7da8cdedd9a27f2bb3ec01bd1645e56f7dc3dfaafe45bc0fbfc3bb6ec17de05bc34124f6714fa700ecfc4b40ce17f9ad7b6518883d95b01de72f2eb0c78d1dda7bba5afb56abfaadc6eec76a12a1b1d5fa80d9f4c3c0184fb3752d1797d7aed46aecd7a9dd5f3ff6faf0b4eb71ac7dda71ab71a96617e9a5deb0a84990a7c9e619a676c0ddb786c46dfaeb7a7ea6af5d5dbeb51e1ae5dc09ae0d678c39942abf116b46c8c62c96fa7acd38d4dec7453da0331e66bc69c35a1f75f337df9718bf0bf794c16790cf44e3f3c99ad5fbf2e417f8b948bf44703c048ea97d1c4618970dfa81384f4ee4585e21cea47d287dc3603b616b391a184f9f7245ac72c278ab318e33cf583caf053f0831ee828b09bc0fd9bd052638f80dd55f0f09de29f2fb52f47de4df3e63e41bfb17f27d408f227d4b3c7b9c7899de259e0d7c629aee3c63dd1a9b32f28db0df40cf7b21bb665bc4ee77dc5c79457332b9783806cd6e659685fe0ff4671acfc72fb1cf72cb596d5fe7fb46d687796ff2b3fa3e88952d70c72cff20ca536eabdeaf92e6019f72a1b00bdabb803db4b27b6baf633d1f7d4f33f7ebcee734c597ded4a0e01e34fb8b9bd35f4776e84ee0591dabe9566112703df675170a3bffa98c87bcce4bbcea075bf5c4c44edde67b94def714bb98b6561275aebf508ff4f84e3d92d3c7ef0d939bd92b3083647d28d3eaf63a7262cb955eb8c490135d943bd4d652fac7b06ff680fd6c108b1bf96a4b603ba2783ab04f924d6f04cef2636f44109bd04e713d5b3e1724969a77837189a6bf29d3d839c09c65558ec3d880087ca2caba97390e06f53d4fdad287cade3e7c76c4f037c32a8e7e65fedf9cd3c27b2fcf7537ee711813c9e7fa21ca49bc55a62ff624f188fefb584ce34c161eb73a6fdb3c13ef27aca7f7ee979586eb03eafaef6ca6c919c89dd6799ba9f5792372a56e55261c204f03f66ff8dad9fb9013d69db02f3b26d9ee988b216b6bbeb98f6ab19018afa5c76bbdd5905c9828536e22b3ee4265d4e61eaea926fc6e1f98ca4af24e0d6632dfc619cbff8edcf0be23374c43e2964263fcaca1863197d7e3a6b85b762d1e17d487962ebd39a1e67d4316e567a1b1df04da51bbbcde663b5991be65b56e1662f6c05a2468bf0099e38fdc71de0f0ceb2c89f3916e0dc9de6b0cb017aed03fe42f91083169fd174b8e39e7703e83df960afced62a70147e050de56d04ef6aaf2f49ec953f45d55fee237885be3a4852c8473a5dc1f141e1b3697a7c23d97a76696c77c5c30cf5109ebf4bc1a27b12827f4bfc9c931ab33da4fd87879fa7c315358e37126315c9c09735f0a26b7522ee1569882b90bc1dcb9c01ed3ef3027b93c7d72f05ee17e7d57d823c4b24eeb7cf0a260fe82ef9593e3f2f479d9ea9fb1338e391bd8ce078f05736ba6c32129839df108f812b169ec88fcb306e342303e55e79682f1bcdc6e2fd7d21267a3f43c6cab26911daa59dd4584fcae019127f349ffb12d66162d614caec0579e2b53e47b5573a544ecaec8e130e72206e4ff076180c37c49b494bd00dab0e3e15094cfe782239eb03df551e41c196f3541fddc789f3fb6903fd1bfd887dabd17547b04e34b9188f0c8f17589b7953fcfa83e76707d97c178722e7b301e58476b43fcf4f319d6128171cb7eb4ec8d80cdfc58f6462fe24c1dad66c9c8550609cc334ede461fc2f4af95eca39a0b797a27386ce0bf89b87eba6577185fbd254e88eb594424979ec533ab7baab407601e5850a365dbfb8ab8e44fa0074c54138c9f135cd51a7758ad8f008c33467a522bdf97a26be70ac3556d5bd320fb54329ddf82157d5a47efa17a467d555eb09d300945c66478a8994c611a644a54c24883f52fe0ec8f38c4f7be02b2e2b115d41707d87606fd394e0a9f93e582229c738c708ed15b1a7320dfd8a53e7ab10f3157e6b6b8ffc71e5f8e62b88235f5a69cdcb68646c8e421d67bc163c7ac8d26ac74e023663a6589cfa705e52fae1343987817886701d7e4ed6c1aab4f2bd4fa9631ff7405cfb30fafcc7c966107df3f9ddee8b31cf31d7c9a3dfe6a43ec9e453017a4c015b414ec654b97ea98b48684392c993bc4f8532ee976c2069bfefc979816fcf82e7f490de57203fe3338a7d86707f632e71c022ed3397be5e2dbfdf8eca40cb7927d98a713a1cf1b706ecf8b6c4105baed51e97dbb8ab2193ae914c671f1fef0b6baff6209dc8ba93067538e1351d6820fc33deff5241067926d6a4c29bf641ffc701142ecf87cad5d8565f4feda057acce52f9e81f6245bea5d41f50831e5b7ca7577b2c7258b031d512e21efddd896728ce05dc220b649ae3714bf3a6efbeaf57d3204faeca7f918dcb17d433f9fede7faf1ec5c7fb4c928ed2d704eb0773d32fb5a5ced03abf59bc8deb5e8ed38239e231867f27fc1fe13dcdb211ec075fe05c69ae42405729d90d7ff29f5aa403d03796fb26766bd2ad1b247ccddb45c8b27fa95de09a32aafca3665438f46494f37e4a3b3bc09d726a3a9fc7ccff9a5baf9bd0a91a7901bf0bb04e66c8c17702c7301617bcc059675fabbcf9ca70eea81b7d8d2f9873b7ebbd9a1fae9865aea0ada00e27b11f6188c4913df9ae3720a3eb79a5ca2ada096659a0c6570ce5dd59e0fd4801d1c5b1ab27f811db61506403f5fb7c69cec61b8423fb803b74d8d1b8ba7706369146e2c5cc3eea4c301cac7c398eb03c7343db09f89fab1526da293667697ca89c214ece907b66b3cb0a7c13345393e9b70efaff0de9f8273f2c03c2b9c38f66ec5b56770ed005e0bcfd428bf163dd307d70d45d9bfb9489ec5db0943c6f06fa5359badb06d79ff6bab4c1bbfc3ccec476105c6f340be07b2dd88f15c44c86bc3de8a6f2c8d273f4b64fdaa99faff29e9d4991a6576f6de586f6d1fda41b47838818f8a7b39660b06ee3fa5bcff363dbfd059b33907f615f4a18411fc7f2cfbaf2d1818e09de95218454b61d0d47f5ccc9ff256d8000acf2d671ab3f4d72b85592f35265024b9b5afe9b23298d8357657d587be7c7b1f119039e4b3f1bd3b86d3608d49f7f77e66ef85b18871fbb566d33b8af7e7b57b1d7ab158773c54347ef126abeebce3bbf3e77fc8498ea767095a08fb83711d862b0481937a9e3b06efc8f671528ffd2897b816db088318d84875bb8d89edd9efe4f293efe4f2637796c5ae28b9ac27181946afa8cfaee22c5919be651593895dcbb2baab622eb14e4f4b2581676a184e3d823ba8b85e51fd600a6c5cb08f5576b190c69fc0ee38bb13f6053c6baff3b1166a29acef0fb485d41c07531476a1caea702a69de07aa716c8a7531b1ca70b206f6c854330d86d5145e5a7ced1e58ef09f6e542f19dafdcf3a6065fb9078dad8499f9e83c072b5d75dbf09b4ad72b9ab6d2a6c14e61124b62da70a2d65b3590168a2ff13acfcd24955b4b9a24eb2aac83cdebd69abe8fc0eb9dec051eacbd2fe1f3d4821975a4f4ab3761ad3ec32400674ab1fb0b268b178a109b6fcd2c832edf067c376a8e29c71f7e9ebbc9ce43d0f42ce2dbea7df8e5e7ad9b9e418d77121c6bb4fb22875d8079f4ecd08debdc8ba51efdda9a34e1037688b11edd565955ce5bcf210e719edfc57ee15ab5fb6fb7ae3cc659ef6a1b1629e4a592bd602e94ef35fb3b9a5f77ddea6a3d6789e744323ccfecef321ce0c6b9c3d73d597368d732392775e67332da00ec418471d4b0b78a33733675f0ef9a3ec5cfc4fd9fe01904e6f1aee781bd1158532bb26752e01cbabe477a6b389f993e08f21e31ac3fdae64909b9d46ec14126b03bf3fc34ac5b973f23ca7ce57f83fe602d37eb06ee9416c7aad92bf5f1f6344639691789e4c36ad4e5afd473057d53b09f35e9f6c7f8dc21c7fc8e9a63577b5cea4e730c3d6fabb0680ef8f5cd3949395ec6b6df78cf05cba08a9c8d724efc9cab4d36438cf3037916c5b1ff6335a15ca78c2e2b250a2abf2519472d39476a8fbf582aaa5dcde5411b2669e60b52b8936bbdcb5a1de7af61ceae5f9d339ccfed3467f6a1f39c5dbf3c671807af693f6bc63a707cc97385e953fc1f37bf966fd253c80e7ca633a1cd29353d832764477b7d073ccbb93d7a16e5216333240713891d37ec597a02fc058c0736f4ec71938c589f2d7dfd4b0939a609f39ece25bda3ed0518ef03be0f69a3498cb655544d558300e67df3de1d4a3c5883f3ff0664f0d9eeed3e2d810b9c14f349f6b5bb2370a93b7e6bb2a13e491d8cb9b21a64f1fd499ef615d7d472e55c971255e2446ab49db057da7bec9aac27e49a91efe5fb7b8d13b2e85986dc93b3c6fdf304d38e5a2714167c13e09cd77b91c5261d4cee57dc7b6e877cdceccbd7f01d0b5d59ea45207c39a38a7754fc0dc728aea67e3fc3beea0ade8595ef7b95baee4ee6af35e3fe61df8e3adf0fcb9034c2576c7a06e94f32ad7ab19e638dde6b31c9007cb307fc59ccdd1a547e7bb10f101f7163191e0371e3421fc67494501bb8e3cf6843c48aecc3f08aaf8bed071b2dc361f03edb9d21e78b312fc956511845b80e15e805227ffef6206396087f0e3f07c8e9cafbb729936c8e54bbbd852f9d26ff9af602f11cf993baf6cd7ed770ebf81033b147b129ffb40f36fa68d6bd54d959f8b7c1469b25a32f8e63ada9892aaba4dfeffec618908f4d9d5fb41e21e4bf62470df338b46539e19702c472a3eae8a7b5377d7c36d19ebbd93eb225241d7377cc569df0df889aae404ce308fa4c86645b1a83f08f8d37e61ddad58d586f60fcf0dc019bff4fbcbfc0b397ca9cc2caeb4b29fe2a78ccb7f9c91ffed0d2a7ccfaa8a6abe327bb1656909f7c3fdb5d4b311c16f56b7588759e5bf7ec93d8e7caa0bcbb1ca77a8e3b05e6a3bcefb35e62595687b327dff068f906f81c9595ba3c87a13d278f673dc1fe5a53e7218ff1757bc689f60c97571896d7f8858562cc59dfdd9367f5d1b3dae25eedf3f176773bf0de9bfd1d784f960bbfd3facc9cd9aeb37cb16712902d77773c0cf77ac254b18561bc66dceae79fc5bca6d2a2c5d5c3afc4d5ad1a56eb57e2ea554cb24e71f5b088abbbb49a50df9db02f8acef92b7f7173f5a16f1a8ba11272bea52d585b68aee994f4a18f73c063bbaf5d2d814fdfd521b01965574f82e6da51c467a6853cf0ef99df78cecd0e39dd04b2f6241518f5d3af7d87a272d355c08d1556db48535ed6354ed6d4a4b93676aa6da49c6760b1d5d4e174a72d2c835d68cab4e53d4886e83b35e19540fa90d4e134c331286af2830f35d05692d218ef5e2bcc70abf9fc4a82efffe658187762b06b4165bb7ff787723951f156897d43ddf3bfd517ea7e67cf9f20cfcf6c776dd9d7ed7a641630f06c8c87cff655fb73782e7b0ee2c1d42ccf16109e508607bd0b39d60e25cf39051be0b3a9272db69ee4326de89348ccd2ffd21978f2cd563e5685d9a594fdf424570bfdf66136f7adfbfbd9f7015f8e983b68b76ad69b32d5361acff18a2f657824b5fdfb440fc1ba3b62feb68acf753b935dc65ccce15662d61f2a63295f9f47178e4b9a2cea63309eeb50abbf03f39fe9d0214d87bed7b9b71eb23e2ce46f1b371fee0dfa9093e177ed7eab0ff572edfe2e36ff3bec3184dff641fb3683d293d4f9db26b01eede337bfab767f97ef32faf9775da8fdf5bfb366934102f9c47fefbb6af777c2792ed6ab47fb2eb76e1375fe2e983300677956b38dbaf67d9c20667ffdfe2e7aa697db56338f661b0e6ab11e5df2293618f5ba9d9ed46269b46b73ffb4163361e2f77a1d471e2beaf26ca717fcacc76228cf3d4937cca552dd07dc72e655e736b574f6e6d6b9f6b8e5d8bb56b824a1bc968c456af7e7d1321c7ab6ae7210eb399482f729c7ba532ec43af42119ded132de329c67b436d3baacfd502e7c6d1eb318557d8fc652edecc1f8567dfcd31a2f61e3b7e233b1e8c269893990e2f78c1f81cc0b937d32ff0a4727057385328755fc2d87a20329184f797e8876ed87ec0ddcb1ff2242eee1620cb88f87774e8b9b73f00b6e547f7853fbda713fd5620be505ca1ca9183749e98a454df2866658ca21aa3f351e90b7b7928b63cb78a93384358deff3ad297c5e357ff7df866b1dd8a735eb84dac434de3cb31750654f038eeb535de38e9301e251a9ee2bdeb7ea67a5ac0be8f9e30c7fc9833d70da28e74a2ef29278cd52c4bf0ceb426b7d64357ec518fa83b571ae634be76bf2b532068e8e5784f7004526107cf99c3b1e46c087320de9e6403e70b51ae32ff614c47dcee2fa444d396deca77540e7e4c8fb26503e06cafae043ef4b6e9d5b1acf257b6120ee20ec13a9613a35eaa18a3f3171b3f345c116afd9d1453e12f5414d06195e43d6ff57a91b1fd4b935886ffb8a3caaf43954f715de8b1e6dcea3f7ba7ea8e61af2bd9be5fb2963636c06bdaf3ab652af39e4f257b9d538a9ad271987de0a03c48302751fc12d5eac6f6094f9f329dfb6086c9deb51b8be4bfb79ae4c63fbc8dc09aeffdaf76e7a83d15eb95cb3f878f93aceb60306e3a35c1acfb47db82740a7c1beb7de02c8c55f249706d6290b204f7794faa5b20ef002d477b5f66ce18ec793e392a271a949e4f4a50f0207f56ef7d711c2dc1d71ab19d1cf3d36617fbec172688fb3dcc7d6d845d539ddaa39af02e66b57cfb08eac6ccfd4ee83f5dfa735e39cb4233a772a05139362ff10f82a8ec03df6a83fe483c042297d6bde0757e19bddd739ffcbf701bb21e7af7fbb39bd00d971b0bf8da24f1aedb58a3c229ff528eb6845081e2e3f42762eca15d630b4ab3e3fa58e2d3b3fabbdb166c07eb38cdd99b2de97959c5039129c50bbd87dabcebd4c9d5f7ca6648ffa2d4026d2d60be140433e75600f1efe162ef53fc19d8eeb216b36860cf458c64d579c334bd89d2df9eeadc60147702ea64f39178501a557dce7aa9812390fa33e7cb8c622d8f5f8bba9af2377e69fed4351a396f342ea929fd71e194df6f8fdfc4d7b2da29ce3fc7b60bcb7bff0912f16a8e0dcb7c473490c8e23ec21c7bcc85aee033f8977e53ccaaf151e651a8e63ad3ff5e9b9427b79473b979e25486fb670a7f1b5b7ae7d29ff5aaf27bc52b0402288113b03b670c5eeeacfdbecae94a8a7b88ae83964bf75c9ae6ff8be76be1b9a7f2670d79acf4ed491a05e65ca3d72e59c0b036e35b95cb7992cc13272d31bfc12d320c0df785d926b250ce0fe74607d9f5fc3d8acc50c4afc1574dba5ba275c81c358161ed26995fd4ee5a0a1c45d3ad69cd6f78872a1ac55d91784bda7100b4efd7cda0bd9eb807583622be122b81fcc90bbd982e6d9c1fd00ec1df0cdb09ebb22b77eb71eb4906377882706644647cc23671e2e6e762f094c1df8d40c07e709f8bb351faaa845a2e2918cf9ea38f33ae86c3f6e8f4c52f8d0a40d91d9214c2256f17c098c0a8c09f67c4d21074ab1a64fe6218baf7c6fcdbaf57336acd92806762894f1e41e7c3cd9837cd7712edcc5c16a8f6b60bdf0adbd204ceb7a79a6d6f572fddca4861c107ec51dc8af782b4c091fe20e641729a33dbd97b89057a287e68ad00fc7ad3e2df5f99a0f28138f4b998948fbc3d42e47434e580253c55b21ecbdaedf9f1ab2192a27ed62865a8a63e08ca5bb8173a8c7836af3af55e77f95c9af3345c7dd1b7aacbdea3ae776da912d9f29d4531ae618a7c2e75faba29705d80de7fdb876eeee9473079e73de0a667eae911e21fa1b20cfe66b54c57dfc306a7a8c22873f63671c94cec17af254e69f2873e653ec8261e5b7d490938fca6f0f434e2e5b65faf2ae0c3f207e84c25c5672098fa2b735fc17f730e5b6dae8c53dc49c2d97f6e849ef5bee52d81175c1d3fb07956b2db9393d8d8a5757898390eb05f770c6dd42aee16aec47cbf134a1fa5f1de3794643dce659dec8ea92eb447615f0d937c06757fb9498fccc65b6c645b0fb8bbe692cfc1dae6985365c735fe178af4b9113627e9c908f3bde57b7a39b6a390ce6c5edefae52c8a56e8f4fad29eccff69c9067ecfebc3d473c855cfc7d773c6c1fe793ba2e05621eba0ccd8eea9247cff9f3c719e7be07cf26d82feaefd47df0d47af367f938c59da1f7ee8d75fd0cc07a94fcfc9c09acb2d17a968ce60813a684ade2f297a23673cc2486ec039b5b71c7c3bb3b1ddedc6970857e372d665aaadd66ee9bde80c4477bb10f0566c45e6119bd37443a0d7c7b886a70959e79869c8165ace2124604ee3103637a98fdc5adea13613c81cc1604d7453877168a821abb18d3ca3e96de81b9e130f609caa76476373127957587bc5868efa35e860cfffe7e5f12d8724b7d102d793f8b9b1cedfedb10f5fb2551e5bad83ef8b12ee318888e7c0bfc3c703d319600ed9b5c6fd0f8259ff74fb993baed558b5364d88e086bb8549b5ba9dd1d7d147d0f41a9dfb282b737afe09b14cf9c96b18b94d717fb58aa19be9235cb76c010586a1af877a5cf93d0211df1456afe02b047291c9935bb15e38bec619e7ede3c4f7a40ce535a9b27c12fcd9373783a4f0f304fce238988797a64f3b41a4fb9ad3e2afa1b642f827849b385edb02df385e5da334e42ab8c399ae1b61edc71128171edcb35df102731af59c831eb205e22b0f5aed80e60f45ee02ec7d37b053f95b11932aea2e173fa99c9aab369ac65cb788379deacee8cc2415b8ac9af944bb025f6e7a6a702db19e2fde93df5b22270a8c0582d8d69ab8f07e3c0b970adcb58f2ef83f32df00f35d4ee302ea6e31ab7d9eaec8efd1f288fb380fdc290a7b421ae208efd9f997e7042ad07d7ef495ea284672927d78c13d19d2d583b04f6c72885711db8a677ce3e52312f5f5cfe121950c6ab97bdc6c42e7f09967ae06e8d0557991bd83f50cf6991f11be65ec466c8f5817199a2b79cbf5c0dd8971aff6a90e38128c3bae85844672f2270e60352df94b02a619e6604de7f2bbf7f547dff0dbc5f1402db39c4bfd0f773254ee13d3e4f5057a8526019afb4785ed2319ed78027d5517781f56d90ad9676b9121c3a50579779ca21863fdb324e625f5563ccc0bfadc63f107e4fd51f5bd6f04dd710dfb4fc9b04fde5d5e4c26e85e98b2bc7bf449db39df4c292bc427a7ffecbd5984c46440e83f4a69a9d0d9d8ad35fc2256ad88339c70ada8349bad5359b3c4bf681c971bde690e301f13e99c622d084d1b9c4b9a5f05c29678d743c81f7d27656323eed96b59587c1fbeccdb34349b59900f850ac85f0faae46358609edd20e71cb92adf9c610f55167bcdfc1fd684f6a285f87d7c173a749601a6b46f14b32fda1f4171bbb2f9d29762dd43704566e81e17b64996d4ffd99dbd4855dd96d6d4b3853835cfe933db0f02c907efdb18cf584f525cc553abde06a3184bf727ca2832697603b2dcb5c621fdd56071fe7a82f448f6461af2f753546b6b5e662fc2bcf0935d52ece30b10703422eb1a59e24bc661dfb346bb67eb8080723c2b67ba9dafd95b105ad638339f00b81c3597af68fa532fd59dee723d46f09d79f8d6cbf3d0753ce8f202ca546ff4546b233e310b22ae7189fa1bf5663883f1b6c917d4af6370778df07ef332935abfc7d055661b0d5c01a249e6dbc9ead8a3f91632c2bccd93eb2ea325cc7a6cede4561102f95694c8c3b126536101fd317e0ef2c0ed036bdc39a80d2de017acbe7208fc63109f2eb941ce3afe4ffeee59a1f44e5af718ee4fe1e71ab71f280782b0f683b40fbd4092e3731bdb860ae1c968cf12eb8e534cffdfb966e4576a8612ebb05b3d7b507f41d672e938d53a1d4286e981a3e57be66ad7205ee9f6c9faa586630b1f25dac3066e87ec8c9ea3b35c5ca2caf29ded26a8a953aae4136ee36df18e2eb59395e5e767e081f625c7003ad6ad70d69d77dae1492a788e2b74c5ef31c4849cec81ec2c726e31b743d7d8678cccae8be39c13d525ddfad32955ad73893f92ee2aa41be5931d6d19ee2976658bec4757fd1ae9b4fa60466f680f02d096ce4927d99c528601e1cf2b0484290165c8203c835ddaa570e5e847bd8ff5a4d46f74d3820e3f8b1a9b0b7edf1f5c76a125d4bfa22b79b8aeb377d95b069ee9c1d401cdf929cdb6b17cfc87869a06f7927f026ef2f4e1a73ce21f1c4077bfb304afdb2dbefd6e42b014b5beb2e71b26d5eb7ce2f68b5d132ed4c52ea6f6bd739b38ed735d495abd55e8093e5d9338d823544b916d884b3c550a58d15cb436dd6b1aeb72de7fe2fd7e27ec89e0c6b9e67f38e35cf503f60eed7e1cde5d7ac337bbb3927e07fdf0f4b88c15aafb97f9fed70ad89e4edf5610d0f2d9b53b5eb9cfe6fd64a1fedde9031f5e0fa34ded2b51e532feaf1f25ad59ee6c27abc42ef78ab09918bec521351f259783ccfc5fa83bf13dc63f55a6a5c83f5df57d3dc58835aaa4f443d268bbfb33ef76fa81d6eecbb21b803769cce327116376aaeaf5547f611e14fc0fc86b13ed3f61919f780bd9ed5bca021053887f5a4768ccdea14235c777b13e564fdb42e11d6a337c913cf737a9e6219ffbfafb985183740d7198db5ed7ead3e049ca73dbf0e5c7e44d6b9d76b45d30badf63dc7157a56a3551a33e5dd2df5b64dfd52a5b3ea9c98d83298b304d66a2a315be5f545143e69fa5075c77e439f40b9260ed5372c6e765ffad8f4a0df0b310373bc24681f97ed3e4b1efeb28c9cc366b41a07c156873193d0cd78611a38602d79d833f584b5940bbcc70983d37e267194dcdeb9324777b756939c7368e6fe38de27a9dde318230daaf20afdfe605ff63d6db839ed6237e46357577f5a72125bbac56c42cc410cc7b5fb897192e1b7dba7fcdf47bb97dc9c633475c709b03d75f44dd1939a6c64d77dc8f09ea565f83f9fc8d75f9601b1fc883a14ed63ab4c334e47e4c3218ef1f2b73f2ebeddc73caec63c067e7d751d9d035a4794679de3fc92c5a09a202dc3508db6c757823f884db3ef203974b2dfc059b7fb6cba35e6c4da621e0f21df5f691e5320d602ed9f08e34f2f22abe7e5eb41ac53b116877f781dc818be72bf6f7b03bce7d907f0b5f09ee19c3493cb56f43ee543a0df657df840f10a700e5779dd349409dae89798264dfb3edc1bde9b759202c70fae4e0fe29f37c710e11a83396192fc3c431cd59db7ad9cf7c5c14c90fd34cce614d876b1dd9fbf20dec4e9d945785831f87f5306f64ec1256529ec91fc7df380b5ef0f8807987a2cbe3f96804d3d53cf969c4cc1bf5dd9f3f0dfa2e5641a2d673bce04bfcd76987b7f0731b8b26ba0fd3561e1dff3790b39c634a44001f30fed30fcdc19928da29cb0c4d8e2959cd7ce83b9f55c4193f7ba7b76c7c5584419d7d217b19198fe7d03eaf7d9872f7d5fdce5fb54b4a7d0b3662a1e4bd37ba87353fabeb27cccf60a3b0536cdbee2afa233a7d57ca0ccbe42f6cc9059023bb6c06413f6c6e20171ea668b61c63d9763faea6a8462ad3b5cb799bd478d0afdc39c2d853d2f4f6bd6ecad03a7bf063a2b0036af6850ee23ce37e5fc04f6494adfb56a8f1f89af0b75e60e72a01b04866818a44e5fe2e1fdb0061c9c8942478aba85b8b5b16d2e2a973c0f280a2ab71f0f1faebe3e5ac6fa01cea605f6501a90d7976ccaeafc97d6b16e1fe67a6f8efabf883a772c3b61ce17c924142bb7986536fe4c5f635b10fd7f2e07727fb1f877feff7151e7b1bbc2989d3e64326c5c27e46e2e3fe22c25027ea4e784da15c5a12d06ca9a0957ff5d577f9232a81873027b5f2cf8fea4b86fc2061f46f37ca9d9fd15ff9cdc873966799eefb6e07c61791e647348ce171e17ea6dc9fe5e8c29eb37cfff5d7c6752d827c577fea8d824c1e654cc67f67cca9ca5506e4d2ad7e37942be38bed7d8c5e49a5a06cb2d2bf622c6d48d9cd39a91f421e39c6a3e55561f54b11589b360ecd0999e5cf2fd88c703ce2b31bfd5734a9cefba3e2bdb75636a0d2d81298fe7a59acb31f2fdf442c820bcce7164412c51345632e759e64d23e619d85193e29cdb073384753e7aaeff5f44dde7ec437285bfe1fb481c7c8a8c82becc53ff02da0a5c960378a3e5007675bc94eef587d31a8f6c97b8ea1b905d4ef92c22dd208c62513069fec95dfcbb6244b45802ecd9ade4e84adc3e556c49b34b0f3ecc09d3e245e53aae7a0d4b975844dea753ed3da7e47449ffaa16a7eabfc57b1d6234c3ba4118af9a34c7714a71ad19135b870e182d14bfb28acf4bfad1e0dfa241f66ee078c0f8332af712d4df4fed198531bc128e76fa2127e177ce586d7f51c6d08c3d53c6cd6e899155c7f65fd0c35eddf39db10a0402ab0063cf58f5b803b60fdcd922b034180f29f8844abdcaccfd43b908751cf16fc58b1827d482afc68b8831768917d5c6fa5b3dda2729b5740dc6f2f2be138389a55a8e8816dffdac9f03ec674b941e810de332cbd3fae69c6a7f433a1fe1c1c77b58cb54eb077c56a316b5e6d567bb0ace36ac054af178ce7bd97fe9d8d74cef5d6dad151a90f9e68c33b3e9dd8fb63a3c60e73b87e1c31682a3257b75eec16a6f91ec5f9d1e97c2d83ed2e337182be921ac86d538a93e03e5a3c2b5e78ebd60392baeadd7c9cd8b3c73de6b332f74c0e435764abddb3b6e35b9305b81d041fddd2f310dd2e5e98d757a9f679bbd30865cea31679ed5fb590a0be612eb9ddada546ba561cf6dbdbecfa7c5fa2abddb489fe3f545790238b7300ffe77cd2b98c31c5b63354ed2527ffe84b96ffabb915df457bdb863208be7992cbee97dc985671ae65cd7103fa14b3d9f027caf0c2f84ac493a26d5fe644aad66269b29b96f39d1dc09fba23673b4ad9a7161a7cd58b93ebf5299663c568d5f682d98af538519aa3b86975bae517495fd78f61e950dd6062bc99afae41a46da2a8134d9698b661c5c7e6d291ab77bf2f7e6f9427f7f6bc127d0dcf170d701731c5cb77a725d82af7b7b725d8aaf13766ad289cb52337657b87ecfae3da16ba529b7d1a6eb37d56fc7015d2a6b6ec96bcc3280f3d4613c4367ee5bce1cbf8758ebd6f718e3856a8c17e4bb8afdf6ec7d87a8f2bed727ef9adf2bef6a5fb7e07e5869f7035e13b8c777cfc6745cc031ed7e076b7bbaf88eff3706fe1f78af2b70d33d949b108b5f79d7d983ddabf665052f4edf8d5c617d46726eed393df513dc9f9de3a2df6f51de07cae5681aeb00fd8ece33e55a550d347e433eb7d87bb4eb0939433eff9576ed8e7cae328972f90afe8d64c8fdc5ecf140578ec1b9db9c8879cad6d2604b793d5bf69c79a05df7bde1cded0d3e2d2100faf201d6683ec3b996c39b333f5c208e0e65ae71dea3e6a33edc5ec098bdcff30ef818ac7677042dddc1f141bf911c6b499696beddb7de147e5d9a5352a696e709fe567f6ed31af884ccad3dbfba06afb5e756d74099906b98c9dad21abc7dd03897f4e12f3be4faf6e1cd2fe675f0e9f4838b19723139ffcffa7377a71d900d997da7d3e2345aed9c624ebe7a1c8c5bf2dfc67905fe89fe9d5a53ed94d79a26543e825a9c893e7e84a3c7c4f5eb838744c36c69ba96c2c140b16392efd6151a06edbd10bb07f2aa35c70d7826f3b1de9fe2677a885f0bf740967bf60751c1b99b739a81fd046bcc7596891bb8560aee2792a730adfab9902b3ee77cd8ebda23e38ab7438e990b590c2be35f7c0b6c21b3dbef07d1601bebcac46fd68d88145cd59c8fd3b83c2c6311997aa25bc602ca424d0da65d709d28f56a6d3c5aad3544985f0bd6116d7aea883ed7852d9ec55d2cc3bb9bfad0d7046e6187ebd8d5a540a4aeef1af2edb472d63da93d82f716e763d3d69383f9b94afba001f3b1caafd45c0bd691ebaee11d13881d200457d390ea35af841fe44ecafd0744ce71e3ea6cde1f2956fb1220f6219354b19d2ae7acdaf353ea5da3ae3b7bb91ab46f483f613dc66a7249b7440fefa63f87382c7a1affb23486db6b97d4e8b0b63b6311982dd856c0e75c667d434fbf0dd67533e283a5ef05185f06728f4f2d7d7a7ebaf75ab86fbbe0926531fe3a265d3526c067d8480557a6c1b37b23e396c8f82f551abf6f5edfffe4fc7a5b858daa7342e96ff0560a2927f05a3f9b7bb4fe1073a6613fa5468e1db3e6df05fee88ebdda78f4fe02cc4f4bbf7623be5ae5d9edf8daf5ba3e8293f1c97edcf4774f65258a8bd065a2cb33883b52e7631cb77d91fabb2cbe43ddbb4d58b9a5bec5a71c7b24df2a87f0204ef43142dc8ceaf3e9f57d4046103c3f52047437e49b3cb6cabb71e19327396f1aeddbab5c6aee845d9b86745e86acf73ef618ba6d51e81e828f85f02b06e53a631ad62d9415ff7ddf23113e9438f6ab3522b4f559e17dd96a0facc65f1cf7386ed21d81517eef73598bf9a8316f54cd262de58a94d7afda2cbfb60d67319b53f2dde03c3edf1743d6562bb6ec13ce61fa186935e08bc00db5d4e9d56a664bebf5e4dbe32cb69adb142dfdf14fd69bec996fd0ad4397187779bd89faa98c9b561cfb394f41132f31ce9b50fa2fb25c37a7983a1b34f87b4f71069a78fd97798edf3c93716cba8dbb8ae03ca2dc7f284e5d6619f20f882104ce72558ecbf59c1c91af813e54075ef06f610fec61ff5c510356e37f07b69d30e5ecc2ee9c95c63ef663179cbbbe3a7252337495c4db107d74c43a135cac83b32bfbb1f9606fe8dc149cd6cac1634539396ff57b0be7f72a760e641f1ed18708f4ac1c9378dfec76b6fab15222762b4c61dff46a46c5e4bf3b4252cb478377a8756cbed83aed225c0fd78227f41579d42c8bf23eb53199a7f3e41a9e288c07f8058e3f3d8749e6ea9bc61455f89c49599b63dbb4ca8731c9f55cfea63df14df6c18fe7fae0ba37d653bb3784f9ea4dcfff25a690e3387208bef35dcff3ecd00dacf167446281d2fe4e6201d2d64f03eb67e47dde357c6ae79073496698efe41cdca08c7c3c959137a813e9faf066c8b93d9a8a065b606af3730a2f4502e397483e55f141dedc4d7f95735266fd36642d8e09f7e2f4e95e345bf6a249ac1bb0979fda7d4f6dcfe73cf4054eb1c62c4febb3ddd7626b3a843a450d35cfec7973cb580490dbfaa4c536c58e307bc9cdaef79a7c092779d3536b71aa1236f6135fa88ec143c19278b236108b41af8e630d39115afc75fc3d9f553c06dada15321ae195b4e4a0c873c7c5b6807bb20398c7a9ebe7fe5b7bad4f05bfa75db674c7f481d8146df6498663ad54fad6600c2fa9f1e75331329beaa3beeb23ea84df4f895d957c36b9e4a3976bc9fe052c4ffb30a4c631dbf3b1ccfd7d2285ab897b307bf3c43a7eb2ebde6eb09abc3dc7c21054881d6819ccd9ecefa225efd16a0bf27f8375457c1e48dfe3735baa5bf9bf1cfbadf2bb37d7b275e28da7d849181388d106351c970c6fbd0d07bd096f9d86c94fece739d649e0ac398616b9985718efc9b325fb355eb3ea58cb1c2e09b2abffb6d811b06b0b7e56d23f7f5693b937d6135be020e687a870450c4139dfe9fdc6ebd8eeaf03aba55eb081dfbe54affba765d40ee114fb62a9f678dadec7fd2cbe52aef5a8f7951a901bbf56f75ad23554fba6d0d5b9af97ebf65d85f7c28fbfa6b335db85385543b729e660074c815758d6d505e6fdd4f2a0ec3801b99fc91b0d710eab09908d0a789e1d3ae7bc3eac654f3ea973b5f23ad7aa5dd71cf3fb82fd80f8c11521b85ada1accdbd562ff076d878e3a796734e6ac9ed5ab005befba3cad03270c3c9b87e723b27b434d5677edf8d393b7c1fa3165d7fa2e35f53963ea96b799bcde571d38fe09ccee9f406feaf55a9ea29f00cf6d8643563a53aa05f32cb80f39bbfe600790ebbafa7b6087d21d7163b39e3361516f6d078ea2063ce0530b4ff64b699cc08f28fb0030aeb53576b8b78e87d800e0ec14d72dae90075c6183ce3c224dbe3dac01aee9cfcafc0ee8737ba8c5e1f2ebcc7008f9f9b73aec07b66a1cb6451c9d2687a83d69a531107819253d41f0cd205b173f5f4358b2e2d82ffad9d0f3600cd035a48088ed57f2941e439e55c40b43e028f6ebeb9763c564ef1534883f53c99194af55916cc3b163c109b90bce993c70fcb2368fe59c44ad278d1e3796df2a7c1097bc2f915897d55e1f066a1fc8ade1a9eca756bf83f9acf09b98ee84c3fa87e09a37b4d815bef4dceaf7c11a7fbd567f42bc83d40b2db8c12d7be907117b44b64f695d806d1531153be54775dfd778aae5cf54543806ea527ecd98c682219f479e3778e6c7153d5decdf9f94b398c7bff11ca31cffd8b3dd31aa4f70053e75f9fc1931fe9db7438c973cfe8c0ca0fbf98056db489b876e7bad757c9fd43d5dd4a114eb5aca1d56f223648f6ad66bbdc9cfa476b566e8bb159dbf639d7fa6c651c68db1ea1a1e3f25fe7c159538c3aba5d45a14714d53977c491ffa0e5eff3da53642397cde4599e4b1836b75c7eb1ad5f9d2b48d28f8b4fcd36505b108d8521e3e5fa37c1cd2da345eaf50079c02c53276c0567cc667f69261553a87e115f7acc54e169fe7514d26cccff438d63eed5e9e9f13ef21425c6acc3b82cee1d23260cc822be14d36617937c8cacabc37eea1c6b9c17c73b8ff1ee260437f3fc311eeefe2a67bc17e46fd173ec401c2f3f14becd3e4d957b830a8e7f5996d67b933f4de27fae3db79af4d850b443776e70c6ba72ccfd93f5bfb42792fb22929be48d6eb215c6ab66c6e1bf4618f3ac21c512ebf7ea76e725fc31ded5037295cf2bac97d5de672cba9c76c8dcb46d2dc95ac0edbfa31168af6b692346eabfad242f17955d238416117eb9db66be8f760b94d2ffa9d9adaff7ca7a6767f92b8a50074ecfa6c1a8b4747fe8446dcfaa5e073abc925da0aeacb1ef63f0fedbdc670ee84e411c0f6883088f0b833bd79dcb3107bb8161be8c811d8863b5fabe9b5317670759d814cdbf4cb3127b0f7d4bee499bd8bea0059217b5784ad20ddf2ef1907dc738ec142177e81cbc39907f7c37286f31942b5c6d86bf88ea8b081f4f52f6db6f0cc9e7ade031d25271ef0a94d254937bd29acbf734ec18b9dc69c930e818dec43fb4efe8c44b02ffd21af3130eec8993d1ed6ef67bec25cf698b950e649b4885a5f777209dcf1f0b11738d616a40d8cff048bc0d4d76719c85e281ff2f9be411c8dd30ef508d2f1b54af8e804e676bc27fad29c239a37b1bf8b214614c1e563c9fe8b0d39e4728e8807eccdeb6b07275bcfc96b6ca7fecb1eeb4727f563fbc19c9d23ec2564cd13b67d53ef26f60611d0e1049f4ff461cc09fcf7d77011faa8b77c36afe4fdaa18d6455f7035a695e5f14d02c31cf10af0b6ab65f6d0eeec96f0f27974c689bdfac7ce17893f75da5d552658abd38437184e96a6c166a749bcc1585bd567dfb4f130b4fb8b8b09f513cc4d82b3ff7004a07beb766631fe423e89fcfd30e7c159805cb473773ccce5f1139e2c0b9d853c063204cfb2e11e1f3eac9cef6be1cc0f0194f5cba0558eb7c76504aacc391be3f97d7958e3773ccb9b440c1847864ba6d1faa559f7777486f1ad3e8cbec42d79c455e6ccb0ff5ee7dd8a2116b651ae4955749ed98f8797bd0ed618cafd4a6d5f72adc5970f9fa87716e5f3d38cdf64795a07eeb4b0e345c18fed34c1fe02f9bb0ace7184bf3772587adc83c0dec9ce5f150f34f898dd3d5150475b6505eb1b6aef9abcc6da61688a0ac222823e4281f17fb6642659f2e6551fa35c48f5efab71a22f033fc2b83c607eb6451da7172c952978be057c730df1abf1300742e33deb135831396730c447845851043f3cbd8658f0bbac573d1f80d62b85bc4fc7e48a6b8ccb78fb93cb6d2bf840dfe4be9ef360ebf3399b83b58b4d888943fd5bae831afe0ed78dfeb760f43133c11c6e4c7500e47bb83815ff36a12f477027119c4a782f05ef3329b0c3ba8e823d35599db751f8e4a23088b1df50ad6905fa2aa8f07a1a103bafff36c45829d112f6cb836b0777b2b609e8b74d6f34b28fa89e45cbb87c64d8477e59c949b41446f1aaa41702748e1bea16a9b845781f817d681f71fdeb494ac1de1305f5b63af8f11ed6b1f8a3ad3e4036a006311dfaa6f10ae606f86497bd9cbd1bfe4e9f3fb85755b07ed71a1f5ec98e42efa3ee4fa5ca03453b934924422ee9aa3c51e3bd4c93278318d850cb19988ff2b330ee25f077e27c0dea3c2571765d89afe401be633472aa6ba8a2d803b2c72f37847f71b96532c015386a2cf7776b29493958f006141c7bc6787e16b5fb6143c8194a9d736193299708e5f4b5ab35f69cf901fc57aad9ca64468065c60bd8e78b8355b9efad7a5fa61bae5837dc727bcb78bb5bfad007ba7ec9df0f223807c5b380fdc1d86c6ec735c99048247868f6a8260c9c7ba0cf23f0df52f0c97500be36d6911ab029534bb33c5b087c95122b2dc96a5d2d647505bbc73e72c1261c00ddf34323e27c596c54cdbe4150e3f5d8ff89e50ca13f3eef58f7d065a2300072425f06b076affe77a4db2c11c7e4abe7c83e60dd26fb3f2c253288b82ace954b328a43632e99c734d3c9d4eb1af86788b8608e117f5d663d67951afbe56cce59853dfd52928b9357cc8759b6c75b6529bc27b92d2753d2478cb2b881dcefd86fd96fe9b5ece75c7c187716d707e8c3c81d7bc1ffe5da972ff63d56e3dca5dc01ee83cc63f43806f85886dac011f8ab352dde21227bfc3f0db561549ee6d69a0f39e76c8e1c761dd9c65bdcd267f3ad9e45651a6c246dadaa7eb091fa1dfa883af432e473d4c8cd48ab49f847eb89c85e34ccb113f44c3d01ba09c55a532fa8d8ac994c0836443d4d7e8e0a9cadac97ee8e7305b9ac6daab7718ec0df9e8feaf397db6929c1f98af2a1b0fff07eaeefcb6a1e413d035b6e2f3fbfc63e34d7e790f855edb5556df574f5fd45f6ba3de9eb79712749d9166c5e03c81587faec2e65cc77caba2c95e9c59d94f644eb5cc1b877c1855a1d432df7037b33eb58854fdf51c209ebfa1e05da3206e418c53550f57bb31a695aff436d2c5f939710a334aacd35a55ff0ded8b748efc9eb300e5cff36fe8cb60c81df71a4d59715f9de46996cd46be6c87e835abe6ef21a157cd48ba948d42e94e5e0a0a5879b49c4c69a2ded9a71e876d023f998b728bff59378277adff4c9381ad6a7530de3846ff886acb6aa3186e66578fd2ec28046f539b53ddc344743d6d6683cc394be038a2cf84a2d61b5d7ae38cff57a308de4214658e6cfeaf92a7515bbbfb5dfed29afaef28a6b1dd5663d259b21ac9fa3cceb86e489ed20ff2cb92aff764f64df206ae1d00cc4348eed43a91facc00ca8eb8f1f2b25825cb7b4bfe1deb16e79ce5abf5d29975acdc394f0192b7b34760ec59c41dfef5fe85da3d826198750a54feae9fa46886fa3b937cb318ade2c9bd29b95c70b8cc675fc4aff5a6dcf02ffc7aef57f11df25f8d172cc5f734c1f196296c058d0a6077bd9885ec7f5d9d487a78a5d7fa2fe1df78051fbbf788b118d64449b2f1bf22c9861ed9e0ca3e890e3d53ed1bbcd7567d01fe2839ccba95a4b4cb7ede998156d782db55c1f8dd3ec4ff47311f5b1c41ea0c9f418f725c6b4b150747c73aea98b2d4797f75facad266b305d889347f195ef2dfd7928e75b9745385641d6b0e63aac69dca5ef537bc04ed2ae66bd8fbdd14efe6d8eb56efa3eb2c380d23b94e3fec3e761ee92261ddef2bd1ab5cf5de42f2ee46bc1399dc267ac63b6c93ae4928aacf1dbd5d5d98305e463cffccce6099c9df9b4547ffb290a163ca3731ee6aa8be7b3f7c37ccc7cda86f670c76f074b7ebdcf052e9d4f06dc7c82e28e79ed5d1133a2614900fbbb3bd774194ba26e2f20bc1eb236bcc597803522b84f67f504e39e623396eb37bfefefa0dc2faa4d3c34fb37b896ef395e55b36d98d58376991b86ee4f74e56de6997fbe0ff0f5fe3e591c56e19c5de90b6f3d59b1e6c30bbed507388d68fcb0e2efd47dc9b5feb20e755fd328affb526bf526df88dff64abee763ab6ba30fa1d43701e598d870fdff507c97e0aba0f6cbe25e9df34b05fbae84d9de8e6b579e5b24073ecf2bb27fa21c4385e74797714d7003e64da7fecdd9eeaa329cac4d838d34d54c837ddbcaea50fd16e65c3b26946d28914dc40bcaf6ca38a0f525957b27697d89ed5826992d57b775eb356cc59cc8cfb1d2c0de9fcba5183096e9c1e863cc0795bd32faa0c5551486b3cabd06e1e2548ecfd2e69de8aba1fecd3ef87f633f6a0b965997f87f0bf7c79cc013a9eef74caf17bd35943353f1115763ff671396c377e28405d6b2f63bfda6b4dedb6afcec4b36c46a72fe520f2b0523e8ded28b69d2e201059759438cb26e7b62ae71cf9923f9f6097593a0f97381bbce05f43d736cff20bb9166cf94d7589487837f03c7a9e3d82adc49d4f3da0593a9498e91f59315be0892e7a1e1cc082a4dafff99b850733f24d9bb47efd9c3b1164a4ca861febac7816873d8753c965c8fe554e454bc42fc7fbf8b37d48835f4314b68784d31e2c3b4aaf7d4b07c7e1f6ba7d1a7206355375b4882ec9ca1ba609a2e4131116a5c1cd5f6d0e235652eefb29d575d8f467d829f7546bdc5bf192709329945e18347b1fcf67818b0871bc7f9cfc549caef5e37f8bab49ea01a8f34f59c9670b5a75aea007f9ebf1f902dfb06e36a96befb843e0cb29d3eb1af0b6ba9683dbd559db33c35c40fd1f31ae7a01407aeca49824f8ad2771f51384609fe4533148b1c4f0da7b0f60dda1ad867811dae8352af775147641bb0674c833da7da6cc1422ea63c9e7ee708cedefa79a072f0af95bdcedeede65ced6fe100c9a77f097360b2bbaf1feec1d477c9fac81fcd70f555cc8123c41ca0f4596dd8dfea83da7fa7a65dcfb9055e7dca9e23fefd86eac9516d3bf45f2b9835519e3f0cb8c75e00b65cb98ecbe879371bc605504c20b7f77415f2b896f97e29fb14f5ef7b4e806b0d659f78c6003ce3bad52eae086b573dcf61c07b123ec7ce4fbdab280775be8f108deb4b18fca84eb9e293c1f803e405b07b43dccfacc556566b0271a2ebb153a7e705b670ffdc1bab5c4699278d990bd9b8f8d492dfae761fc9ac3c068deee3ac62decf762f013ef4f5c3c0dcb801f781e5d687f160195186fe5f891fb4d8bbb93c60608d7f692ffa88a3ebb4669c9376445c84ea4bd68bf4dea79ea7e69e3f32c741b1b35d430aa818fccf78fcb2bd97f59e9facc016b8bba5a2d8a21df2313d1f0463ae37e7242d602f53cb7b2ad8543b85492c89f92ea6fe131ca4e0e26efe30ee7e65ffd0eae9800d93e522af04f64c84b067e25f624f73b7a8c79156c75cde8f04e6900331874a35a7e56b11ee7a038eff8a5b4d2e8f3247deaa84e36fb397c7b771fcfb445dd738ce7a403cf3b43a9b28ff71b243cd87f716f92772bf35d94967c8595fe19f2573d87b818b69dc004b25c3dae60f4eea79b0365d77af962ebd011b59acc8d68233a0646f2896c1b3963e3c421ffa298e78f0504370c6f9abd54be83da9e32957c5e6c5f1cec8ee2f50bd73055b8be6e31bfdf5d902fbb35487087c57d5237264e41c57f679130fc0eef93e27ec22984355c8dc19358e7b2e3099ee2ce6a6286a48d0f84c20e751bf91ef15f5e66c64079f5047ece5695147aef3037dfc49e349c87b3674d9bb627d93ce517c0fbc67bdd787168aefcdc9f778ef7c057b91c4651046c53827aff04ce17f5bf0dfc2945b29176f3b6118dc1f8be3152af17dd36829dc8bfb8429fade195cb3db5661ce90dbdb5855ea4b479c2b278fad9e70ed386bff77ea6e9704ce05de67b1fd80b5b6d80642cf770e352e895b8d3782ace1c5e7b9881b813de3537e6fdaff5856363d6f727954eb777319d25fbbd5351005bffcf7ff3ace8b9c6fbc29de85cf36f18c9a0cbf7babb14fabf16dd467246f468923a32a97fb92bb1c4f1351b9cc800cb7fb0ba67a4d0967f90fe620c01a5b4d5856595c0ccbb012b620bdd6fe2c163dd89755d5ce502e56c66d9df78ed4f511c466cffafaf6c5f3a25cf669c01e6523dbafd668d16d0351b928605ecdfee2067c92bd9ca4a29c54c702dfd7f48cea58964ddfaf5da2fc1cf10cb7d7a06cf1608f2db39e6869e337c3fc8c7d3043b55c7bd978fdc79fe05169b1511a6d61c817816ce6bdcea5f5fe2dea7b2ae783c215f11decd1c6badd4eb991f48b1c2324dee8afaa9d52aa171e7f7ecba613eb36efdfcb3f42fd06a22619f2285439ab6afaa2c6a182beef9b9c24cd9c21999f93e1b06775cb0c1157a8ee6bd42b3cf64b38a5cbd98e8c39d07038abf2bc8a3bd1561f54d30519df1c698b6fabba15dae7f89b887cda730e17e07b5bc1fbd483f55e4fe2aed0f77d9f019f39b815f112580bd1b30c6f0e65353d7e7eb3212684a6daecdab3758d1e4f83faf6dbd89595f54b600f6db63f4bb181a6f1a4deb53baed3f73847f2f382384672fbce55d847cbb83cd45709ed11600fb3440f375beab72cd5ea51e42d3c972b92df04c741c8354dced04f9f24f1e2609db7c2ea25c715283dbff26c6670de039fe798f19c34fcfdc1de5bbe35ac7ceb89f8d6d3a6f7f94bec13fdc39324de3ea63ff793e4b84d9964737ca3f134209bb0ce9f8b784566bb2c17589501b92d2996b01c3aca358a4c2bb84d48ce7d34069cff236b01ebe390efd82690705e2828e1f794f90fab76bd59f30510ae6fd6cbb68b96639ea9d479436ce00dc2c7f8ad3aef8cebc31d27ba3bf629b5f415be97d90ed57a43fcfa4a6d77352edcb8561843ab79ad22da5aed2b6bf5e57ce4532cf2efe15c67f8350d31bb9a7d203ea635fde3f2f1dda8cacbc937f6377f09c4074fd54725ccaffcbe3bb752b84efd40a681e33d3389cec3578eb3e4f8abcd717e0afe76ea31b45cd91fe34fc1b2be6e2b1135f672be660dfc2ad5335cf38dba9fff8cc34c2ef639c9a542fc56e49d95729deb136e5a15d6513673f2efec5e32b47adcf50b39e8d6f85b9e771606df9bbf9698b41d5c22e29c64767564c8b96d58c5a80aa0cc3a74c34287736778a5f8e6b31aa86c0f7dab476056dd87449ea9617cd5f8ab52e72fafe5e7b37de4f2b41a9dae18a1d1bf508fcddcdf27abfbba6785966ef91b413a6e1427fd563df64c0afe1f2fcb6ff0b2688df5bd91c322fc97c667fefbf1dfffe33c2ead7df1dd6a1129b8b7b55ac4466eea4a7d22811744af47206b6bfe01de9a69d173df601776aad3a5d5aa7c1117ff1b7ca2085bf64ff199e4754f5d7bee9ee79d1b391a1b3969c615fe19437ace11d7a2bff3fb723bf277fa8afe2d3d6685e6910facc92e591f17c14ab08e5fd563efa75db414b4a77a0c634905d55ed65d6a86f6a1c2d9c07339f6786b4e59a5f906a89f7a39abf60ba131e375433d8302b0f9c9da123447ff780d0bc32e143f586b2afba1f9fc4a56a50f9509f69212bd983d0ed8a227d758786698041b8485f8dfa0832106ec4e5bc8b23a9cfd16df7921f30b5e2f3a6e548607d558db47c329f99825b5fab6021fa5ec93fdb7615e143e2eb507ba791fd738d8096eb24aedd8bc8ed19fe3c194ed8a4addabc09c91bf066b2260df2df49d751ec711df7c3b7dbbdafddda71572a92dbf7973219bf7b7187c5f86fd0c7b248878c8135fbee8a13932490b0e4da9fea4a82b4d82a5df70e668757a7e700536d95edf7dda27ed62865a3a17b8703ecbf2186f917d782badd77cec8570ef8fdf9cf9e1f2b5f1c917677e78bd64758166a87eaec66f37e7f0fad7567e6544ed7e68f415bbfbd9a5f1fe897aefdafe97ff2cdfd76feac8b5ac0e178aa6ad0dd67a53a6c1d460d70bdd579fd4de4adc52185c9d9e96ee753ed660ee28b8d981b690605eb351165d56b3cf87799ca71b5d4dd7c7f9637d74bdf511f64c6dcd300accfe0ec8dc1062dbcc163747d0525700f60cea795d0a1a274e2f40565cad7a5cba5c230be4d1133b1ed66f0bead5603934872cf7b13576d172ec95e58ac2e6e3cb7bf267bb9a0f22225c1aa0cf5317aeef9cb3941ca3e4853a6793069d6690fd3fdfae913cd630fd346da54d83b65ac9ffe2beccaa1d51f3db48dd85f13a5bfc208cd326191ee22dca62d7c86724bfef796f4d277d4ee5a3eceefb50fc855c87b6fb0c4ff80e738e8a3c2f5be7d5a8c649e9bc98b8162fd07b7f238fa5f676b367c109cccf77382c9ff684cdbe13172fd720647e9a72da7d8de39facc93d36f14a663e3f89ad53e05e63ae3e2ab7d51ee7c6210f8430a8eac88d28f851962f718e155f73dcc80b41eddff94a4e01e281e2f73887c6fea7eff8daf1bbeefe6f728e77b423f47fa18767a9bc0dd6bd296bead364f530872bc54936cae7d76c8159046c8188620bd4e6676b48550c8c8fbdb1d6804e96049e31d5f5cd1182c09a30deca60622754b977667853fa6f44fe16fafc1ef2271a7dd132b75bff2d70421e7e7f235f53a33fdfe17d06f3b2d7ab353d6b68573bb3a0f8bee6398a1c5603fef3d434246fd7e3ee7b5df3b706b0f3829a6d600935fc23c8d154ae29df35d435e63d0ff039643d37e4d551287911da1a8dcd10c578a4e26f19ff025f7c0b9453c2b0f13b9a704130c74f71eeaab5f2459f66b828ea0e88bd56e77305b67f35d6f37edafd20e7a331fe88b8e47ebae34a5c682ce55c9e962e452e5fe845349f51ed9d2a3807b35d95c373e94eb860196afe1e72e350e48b723e5bb0f7c2bbb97ae22b487fcb96ce1ff7532f704215f8be9a7d5ab3ceec0dd8a6c0a72dce8efc7644b2e4fc698ce7bff27e7958bff289b1e2869eadab453f19ac8ba2af5dd35c3de70f53d15c8d3d86d677bbcc6b6f87cc723607364fbac57a52396917a9a4bb214f22d17b302aed6faa7e9dcda3a5a092bc82b78f59722be71593d13ee744247810f1f3b23c08e2789182023723ff8e268ed088d4b33acb44a2125d498c221161f3179caec41e78a2c3bb3efb6a29cf9f9debed03f5b92df793bdf75c6c0b591c93f21c83896bb2139e0129cfb9d3f613c1fb85d6991afff6cb3231eb8baccb907cad886fc6f6830ffcf4867af1411533b5bce72a39725437511d5330fa10fcf65a1bda1c13f677a99662362fce4eceb13368eb4baaf1ef20fb1fc9216cc7566aeddc8d288caa67e8f1314b1ed533e41c32de34e20cd5cf3c6dfea3e56c7e75052eb3fb605ff607b0357e235653df6b5d38218300bf97b043e01ebd393e691fd4f17a9c50bd2a21b77548ee5ac21e79c25776b3901d742d635712ef3cb4c67b3e9d9ec62d678b60e977b06f9e3ccbd4b50e79982000efcbfc17bb5ed3cc6d7a5c679ba65c075cbbaf6b4ff8f3b50b58daf3bbd8df608d70dcbd1e8fff502e8f5a7c10e8be56ae2ec29ea8f641cc764d3daa25ce7442e6fd7027751bc4d2d51f56535c5f18449b53937d52ea3fcfebfbec03c536e27966db1b90fc87e43b337d78d51f6faea844418dc37decff74674cecf4be99c3ec05c1d22fce9d04e653e052f2fc0199507f7e0799305b07195ea0a9d3f638ff8d3d5e9bf3c0526a739ef7fc97740e6d5f547a3a5d586ff8b575fd43ef904aefc8d67746ecf371c6bbd4928b98eda0ddf12127de77750090ff842dc883efb2fb8bad8378b781dfecd29edf25a60fe423ae4962a93d79b9de23e394cca3193312f9caad9c9cb0b7b652dba357f2d9c8de8a9a304beafd00f4719278e00ace39613e71c6d2ddc0a9632ab5e254358da75c0fb9ebd48792f513617be958ea67632f8191f1abf6cb35dd75fc6ef329a639215b6bf14aca1a12b1abcf7b3da68b7df3cc762dd5f10ca85c6a9de60de687308670e59d54debc067ca422a6ecb7cd6f64d0eb222688b7d08f3ebaf673ea9df773b8f087acad2f0207dae750279c2ca3baa6bc2bcacd58ffc046ae739a37aca5318fe9eb342ab0578c39198f3856f02e4ab1dc552d5659eaadd860ec68e01b40fbdbea69691d9bec3bf34039f3c2b4fb3c94e3b18fda9ea6ca0fd62bc5e63187b1f3b8b0641f4305230bf219a37dbde63ee424b694afe7f05c6a6cae5897068eb987db0b20c735d0d1668f07eba22f83cf9f8d63e599ebfb84bd6e7a0ba0e77e6d7a6b0fc84bed30b4b23affea5cc25ee893cfd9c7cb01d845fbc7e5681aeb60ce9b57fd18359d37c690873fb7fae0c53c2d02538f5f2c410b4d438b81ad57c7f4216a058a77a3bc257f3f404cc29956b5571e34cea767f22e8fb1cf98b836ef152e41aa2dd4772357589f45600f17f3676e4e359f98362783f29c77ba6748dcb3ef78cf4fa28eb5b7f4879e726afade3f5093da051f9336cece3d81f59ad7a530a8cb83de00ecef661d2b0f074b61707d575aaf19c26b8eadd7fcfc30bacc27d22f2d38ed48dea60df218ae6540dbfb9df3c1347df021272ccd7ed4eb9862cf3002914ca19e253ab6e3d3bc595ecf43c1442af7f496e7aad6db2bd996d684278c7b0629bd385096cfb472bd2a69df50d7bdcee548a9ed6cec3d6fb66930ae50f67c5ebac9faf068cf349fc0c3a0eccf4a7f727dff7c2fa7f98fae0dea3fda54ce8aab97729b3e710622dabe6ee71d6e98c362bc7fad081987f43c735e29ce7f9ead1dec81aff308c7b8de08f2f2367d3ff04b2a5805c9d7f60bf9defb27e4fe9ded0a9ee106dda8f734b7945f1b53388467bb2a8770914f3f7c46b0268e2eafaca77c150dfaaf615d4b39546cb37e1de3b43ed6ae313b7d29686e932c7de68bbbbac62d8524f86e5edceccd99b530edaf1f9e6f1ea7034be95423c75ac046957dac5729f14039397fd986959322ae96f54bb5d8bb66359e056d4449b68cf5cd9e59cd369db086b1b5ccd7429808eb9a6cc335ed5fb66580ef5cb5332a71222c0f3bd93d84bc0ab8266c6aede037f740d1f492a076f7559be304f1be5a7b47d6d909fe5fabd40c45c1e756a91fef957bbaed417dc05a10df2ccabf0d618cb2b475e87a8efaf81c1dbf15d3ea69e8ddc4bee8ba7fb23e04b8e7e56ff7350e2c6537b4c269cfec993debb8403c3382477dd7937c0a9c57f84d4ff318eb00bc23afc3a2f1259538613e6b7c30453d3deb39fc08eb37d67366643d6443fdeb37fb24e95829a51e0f6abdf273ae23f80df05a58f73f4ba06d42a959babb35fe9c722d07d61517d378fb80bef818e53f960285f7e16479f64ca3608536d5f9b1a5f102bfd7457577b17d648365380cde67bbb3a8c49e7d18fac086de209dee5b63ef9abd0fd68de9ead50eb5813b2ed747d2ea75ed9394be6b6bcade2bd97b3b77d2300f219013b08ef32ccac3d0ee2f78535f9fc5b147fa0c41852b1ce6562d39e09a786a600cf029e63c9a2b9273ed43f66477ecc756194fe013cc453996cdde2c418b3554a35dc638eeaf8fa60eeb5a511c7bd21cc7ceec075be77c4b4f509f80b1bb4a7eb2dd69d242f11d0263a355cf00bbb3228fd9725e4a908236be02ea58c0b9c1dc6f921f9892bacbb9641cd8afb4f66c413dafca313c671ee2d85c703f6c1516ee69bb677e56f55a5bccb9796ee038323fea61199202e40fd421a40e7b124f755bb0818a1860699da365c05dec9e14d83cdc6771816f00e781837ce6f0ff35ee434e4edfb0792ea6e145b6a15dd4d922307bc1c3d2d0d96ce9290b6bb20dd79753f902c7d3732d672958547c4b2057283117720e38883b5afe2ddf23f9594098a5f9dc2c05ab855b6554d339057743722d61ceeafc60afb3acadad23ab378cac30389afa909184e0b437200659bc27715185e0e2eaacb2d7ddeb5eb722b3c75fdda91459bd80413555659d298dbd6b956f05e9b3dd798fea32ea735f9c8be71c92cdf311398c15db3d9ee9843351daa740de58c1d2b7560ac3abb027709634ad1d18bfa04cb937c8d5c5720ab85e9952c704fcadd65e26ea780c06c8d38a7e936e198774532f9f315e688a7fd928acbb31c6f32f7ff3b60f9f21d802e7b94270b5d8fba18847b7df6bb0eb85e2bb2b49e198ad763f4861728379d2d0b9a8bd0062221be3f94faa8c027b3d540b7979f0f0338281a5ef3e451e9f09ed7e10fbc55ece6429ea390b905f3fa3cc5dc87afb1eb0dbb4e3dea8dba5c02730c60bccc1b970e6478683eb07cf79358fd2c9e7e82dc3e0a184fc06db405fdc4b2aacc568bb47d63c5e9a7008e7fa847a0bc4d9ee3f15f91a2dfb65b9b239495c07ff6ad291a7a7611d735d4ce3ee1964f2c8d6f95f96f6965afa3a727a10a77420429b29af93bb98fa25c8e5baec81bf217ccfda1a77905735df27c3ab9df63ac8ecf25a3d3874df77ce8762763f07caf417c65407b6f9d54c3d8c6dbe0ef6fafd8cff16db3d87c4b5c7fafd331265bc47c2e466a59fc96aec47b90d589331ebc0cdce5acdceafe82795f55ce1f36aea8b07eeefadc9f5aeb516969cf046e39a3eabb9b302fcee8bdd5f33f95e5168755324661781cf9702ff6dc0ad261cb309811c77bf150f825c27e122b01493594da460a34fd3b58eb84eac9e0af63bd6bdd99ed774538771abd67aba8df27a5f3fa6c38d3267d71387594dfce1ead4813f2554c17b337c60bf3c276f0ccc9de5761bace7e62c2319a1fa89845986e0374db559b09edada345eafce4c03f7613b2ee096b320f82aaece52a83db799f3a227d57bda75de5743ed61f7925e8bcfe25bf2f06aea6ca0091c3c5f8acedfe19e2af876e1df613f4ecd9f6cd6b775bd0abf875b0ab5b1768dbd04066d0c9df6bf04f6fff09b711376adcc07ebe36bba3eae92f56395ac952058cf98f81dfab4fcc5d2a41b94692aeb39ed3dc3383606fb8c9ec53f7d0b8e19fa8d57ec2b80df08dd867c754b80bd0ae837fe7e10f135851c2e5f57e852cab5857ec5dcb05220f2f703a1af3e5526d8484cc223de43786e3e6ae706d85c999ec5f206ccb70265f91d3fdb0a72ff965dcbb2bae356637a5e86c6299ef7a564f9fa4e3822f77ba3bf3b4b466dd8b35b9652e334739a783e69efafdb4361bb3f69852a590373c7f61990b56ba87bebb560d1e6d81c67dda65f7a56ee8baaec622155ffae8177ad1adf0579e35bf64063ad1cde0b351c5d7a2ea8c33c2f5cc40bce7e590e7f28970f4a3ea7a87faef7a19131a5087145ddcf628e7959a9dbcceac84e3bec7b06577d8cf876714fd1da343c13f17110d7c8b56b2c71ec67fd57b5bae02c775fe60c49887ffb884be6e93882d1c7eccbe38035d199ae10f94bd7f1c4c82f5e9d2b731157de1719b2ffb3feeda8e7258bafe53d44250c13cfaebe63af0f4befc07c28d112e1434dc459798e96f9bff9818e7ae3aadfe7bdf3a5efc35c2acfbfaffbbbd15a881a93d541027bb3b6774b7390f53a3d5af6f084abd5bbe3fce50f34f60bd305d3a5811f30c7c911950862fd6a07f2b9593cceffe9865c648d5fef9b10cec332b74fbe811fa5b34c5657d73e47a8d7acb477a998812db1d80ab698e9e23a84658e11fb6dbcf32a6e9949f40042ffcfa8d5e22fd8bd9ef845cdb65fcfc390f5c0199fde91f15672126de569027969c6c3c84535de37e7007b06af7b817f28597c9fe81f740ec3ab65780cd8d3ce23c304cffbe75eea5c7dab68395b41de21a03fe0bbc77e6ca7559e5aa217cee75249d0d2bd6161de5af3bc57c07d289749bca35663fc142b6f9cf59825a33dc1a35f91358d7cb2600d4afa422d6ab1b37c98a9b0cc320c18d43fc3a5e2d82f7225303fb023f090a6b84e7d5ae90b78f5dd71e3f86a3813785cb98c2c30117ccc31557d3e38734f9e5fe977c0ef289d9f0eef91ba7c07d49d3c877c10844b44607df82f9d7a7b43cfb34309f2b89a2877fb730eece7deb4dc978a39cfa11f342ef1d57b1de407d2c1532bb57b2caa03a970a6bb349e737abf2b941d907b7ec27d5bfeb919d7fc38e0967cad4fab6c3b50f172daf890aaf9b0863e956f72c9769097cf7356d315914b6cae6368b2a5fec41ae87dc9159508d5a4c1da528fc695ade775e6ed58aad0de508ddd39e3ec140d96a3edcd4ef3fe9cf7e7a96fd6762ef2be541a865db7bd05bf7731dbe13e96e4ab3af5f97c77e2d1aff70fd3ec5e12e30faff593fd897544172efd8abc207a7ecb63acf4bb5932e6f27f92cfb474a297f24b6705dbdec220c73e20b9ef3be02c47149ce5b4056719c556c612230a7eec1c8a7340917130feabfac1f469dc0afaa2529b9c6cd2fdb49aaee6d803a1f3508c28ca7cc3cc0646b6665bff5a0799963f3bb7ad03aa9ca8db45755bb1627f46599daf48e008bcf760effb4fca5c3cafa5ff46ad3e4d1695fc0d2817a97a0fec891d2526f24c16d6e328339aed4d3d87dfde23ed72e6bf41c7966558abffd2ee9fff719be78fd4370ab0beb13843547fab0103e437f59e1daa99dec3bef31fe97dc99f9dd5ac37c84eaa2dfe9b7e31d87bdfd1e17f6e0f16e3287ce8eefd939df64dab2f83643df47bb7fd6f9fdfe06b3665b52fe9cd453e598e43726db4e75512fb7d772ef5cb4e5eab7dc6953ed972efa67d68c4e18b9d2373dff4e723e21ac4f59dd5783dd86fcb84959c5c6b7c8f07c87765b819f79f3000b6c46d39798d57b21fefb54b9ae3dcd562b9a3122743db7cede52699d1158f01d62137d8f7ed75c8464fc3e75aba15fe65290ed0582b55e9276fee8b26f3c8044e9195eb5ee946c45c90ef4ee76683fb19c598830a26476e1f7f03d77147e2e1c0fc26588b2fe6935a6abd616e1fc735d473f67c57e028b112b7e9fbfff8f735c463fe91f52ec743d033eb351479ecb1d4d3d5d8cf55ee01626c26e718ce62bb8ccd9036d73f3ad7fffcb7b2992f3afcc7be93f03d23fb24094ec85d0a2c428c1f49c5e821f938ddc0e5b39a8fe066fba85608c6422b35502ee24c6be43dc964ac3b4639bf6fe379ea9ab77e68e1eaf8caae742d308f3b58a7f2aca6c4e8a9b1ade735253d4b61ed1c479fbf1f96fcfd503a0bd96f644e862d5d573ab3c6781e9779d4e0bf2b31dea1330f98f89dd26b51e7692ce4993b4b46f0ccf35cf0a15c06147c66afba96f99e9293eb56f6600d2281fbcf6d0d58c372b3806fca448ac20cae8ef0ff91f7676daae250fb38fc81faa0c161efe2b01cc0b99459ce04aa1c40a5b713f8e9df2b2b011212d4aaeee7797eeff53fe8ab7729424856d694b5ee5bcdc85afe0abbd105e392634e7bddb17d3f96582e82be9d057b251babb7adedb4fff87ba5e96f018f716c49cac77000e323f95beb427839a8f5ec23dfaa01f5267b3dfeec2bfbb1d64ae6921db3fc97186bdb6900770ddd7f178ecd24184635671050932e29fe4e513d1bf86558ac76f50c324ee146a3fbd55e8b7ba93755dfbb19ec6349800f5bf212823f538e11ea460c728ed055479e0df766700d747794f9cde1d1ed8e687ccb2420dc0e41d3be059a92859a1de19a8f62df92fb71e3875e7022ffaa67cabf75e4730deccc3393bab1fffe62790cd72b07e9b9027b1bc904aeabec52b26b94f5f6ece76df0a7c87ba3794e1ebcb7edefcf17bf195e8668eeb08caeb14c16f89e1813df64d6b19dd769c2be20b84bf97715acf6ed72afb408971bfc7b6ed9f1643fdafacd7515abddcfaf47f138f4f2f43da4dbe4606f33e7531ffb1a9b02b859f8ecc8cbe7de9d269fc8c729ff561c5962f1440b7ce7e2791477e4e9cfb8d14a3ca3bd473e6de88ee2206bdf427776cc730ee53c94bf47eb373668ccc2c565b91f5d3f49bf16fc3bc742387436c161f6fabc686c5f30371f4c6fb2ecbb420c6bfc5e45de91c81aeebf9a1dc7f9d9bb16e37e44fb94027ea2cbe046c3b8f8f5e0b1e00b0cb52286abc9e3507512a43e066a6eca5a00dd9fc6d22954613c652d817aca5c23959cfb2ca46b118a7bc8957ba8f93de210d974623f7f3df609e13937fc1c3514601d8bec0b67a3c13fec33b111f75ce64cda3e872576ffa2ec27cf4e7ffc2d60ebca41637dd41deb42eec7cb907abeb8b6947c77cc95b338f07fd83a8a5adda6e25e14a66f5fa03385b8f3798cc4e7332be7adf45c3e1917c3f3ebc89290476d9c9d2f63c08fb0efabee06bd03e3877036b389f68d1c8ebffd1e42fcdd98c822c9993d7e07b4de55ac017edd4f3717f64f81dbfd78bdd93c640c3cb148fe0643656a9eb3aafc055b0a37593da33d78c73abe8aeb53f53514b44f37540fd2b3352fce71e05ca0d0537d41fee1a1be61ce6956ec5e7c69de1fca0e91ff95294bc8067c3418592a9ecdcf475cb117afcb1075fe05f25357d7f13f6227581b987cff1d6ab19e63c8c5f6a18e9cd123b5f6263e4b93c3fa1476db6df7814ecfc7f789fdfb5f4c9c52b5ad515c91654b649f31ce2b35c67117d915f95fe9f95a7e16acf7691f50c0f59866732b8e2731ced309e50df975c47604dbaaae2ed7919a27267f8b62b08afef9e5c13b333afaa57716cd2160cae73cf65a8b79ff1585c987f9aacb7731aa7a91f7d533c697399cb1df1c0be251ced7827e5451edcffffeda46ccf339b95cd95242e99facaa93296c98dfd8ef4f0ace9517e7a1d067b53e39796fb426acade37d8182935f65c67de1c6cdc44c443e604eabbcef487715e714d9dc5d505cfd316037be302e242b945ffc56b5b94239a2396b1eca505947f17fa21bc8b3ff53d979e1ddebea07fe77e7c08984fc82e32eb5defd38769a2341ae84b5d7948eac79b77630dca60c4710cc05f2a7f73fcf57e5fd01a25e8347fe1ef4c9f2bf29f90d494c9af3477d969c88a2fb255fe6f9e35b7933938d7d832deedf42ba83ab7738f039529c3b85e7600e0ddc573972fa76bfe0ce3c8c626f60efca3c2af12b009f22158d370a9d594ccf4b5dfe7aa2b5f2bc0c6337c76eed7a0872ba95df9ae7127361b0b8e4dc93844f2c9e9bef277f274b9343ced149e1b699e985c13016ce19dbef4c3f83608b31cf6739ce62d0b99e29dd0a7b2de2cfea9de3b9d6ca71e472df909b57eefe32ceff91fc598fefdf23f7821caa9d91f3835681b327f4f963e543e2708feaf289d5b8f8b6744777cf1d5ec2e628c1f514c5f8b6fcf8a493d5b0944f49f9a8e7884a553d5ed4f4344a272b8a07865af7bdac7c34463fed230cbf8c74fb23fc26e87b1dc593bd720b34e5bee27157997c0fd463ecad8bd9b735bba7a0671a86150eed5e527c47def3eff23ac064373da33d379f7048c03c35c8ef9ef41d4e5d7c2d79de931eddd10b984ea378a2ce62e0cc66719314265f4ffa4b01ab00b84c6233d4d4dd4ab25bcb867dcb73e793eea65de128055d6bb88b04f0849ee37d6ee05cca7ecbedb434366e204b9faf6034e15ce9db7490be85bd223f509c8989ce22f87a507c1ee7025e2cff5c18d78fde234532d1ae6243f9cd77ce5616753744df2ce17c2ffea26a81981cb8c7632895cfd7941be0d60da24adf6f27f69c536ded5af53e65cd8e7e0cf64a93d4da448fe68ff9bbd4ede7a92df3e3d9633ea17a7986daaa9a7b6e04f72b78779e61adc4050739bf3e77cf51b36563fdbcd6bf5823ccd16e3696f8ec929b7738177e36266ede05632bce8e1fe2aa828f6929530a1f879327c6c62d0a99adac2787f34a6c47b3ceb6b90d39f123c2596f4869d9fb893ec77e74de9f54e244c4171de91faa366e12a3f8248e01f3bdaf939ea654f96886627e9a460da6b6188fa618cb97913685983dfbf8b01ae81877a1114762cc850a578de87796b2b71af6016ad708c61b5dbb37efbd337c5c2fdee33c857394d6dbb4bba471c8eae678b7d2ecdd4af280bbca6b6c24df51ee155c6ee8ed019ec20137c7fb95d38ee871e98e7ef02c55b2f77616a2b57ec2c14fd618c72ae8b746ceb55789c9bab80768e5ceace060c7ecbb11b9dabd979852f4e7545e77a2deb60135de9c137ea8d9ad00f27376341ce8d7a13642be22d46ead1c251b0ebc3838e8f167b783b967b430a6fae5e3b9abfbf43b194e3bf25ca4df80575a7204fb607c57c309e08a2d50dc7d0e06b6e4590af2392fa1a6125bc6afe1446b9d3c036ae93653f374f48c767b2ebaee10ed47fbd6e5b3c4463eaf9c36de13dd767bb4f5125c63bab82c24c536635db5a2d9d49466135b8a4ddd4ddfe0de8747f76ebf70ef74be90ceae61cfd4b181e472a80ccdf7643260f820d0ef73be70feb3ae9402feb5888f48a564579d259e66cfbd78167b0d39f60f42bcc582bf18cb9a1d790d2bef0be3f274b886d2025fc2334ee97c275f0435dce7a989ebdb80fff880b9049d86f5676a4b974f83b92ecfa3231f72aa5b9e45ef7df2fb373f3ec7202398c733993ba378128f46bab4b1c6469ad4e928d847cf7b7e183d2abad7b2b189978db386f9f0c263a8c9d7a0f940a7f279f797e6b7c87b6856b94fcdfe6f7f7bfa3336a87a416a7f913adab72f0d6a4b2e9f3da11cb6b0bcd1f2abc773777112ec55c5df0af6494f867a05b1ec213f5aa7e746457a61e1ea1f7e83b7378f749fb957a252f7a1f9c23aaf6a0b492e997b26cd7d93df77e5ced0da3597ee28823eff2eb3d7fa9e29b37f933e9a4f472a7325f5fb32bf3e7f7e0df71ae5eb410d8cd886f032cb9f4d717dca0daba64f19b82ff33ee5df98a3d2bb06877013ec17472413dfb17ffe365618dbd37bdfcc4d818e42b10627a38b0267b12a87020e0cc01070bba3c4c7d8b449d0d4637f3f6b235b341c5063ec76d05edd79eeec4eeab29209ed1733eb96f7593c9657e094c3e37f6ad719796b8e120f78ae74814ca5653d37a7a7ad63456645fb3261e26ec6afc96da51dc1de10ec2bab199fa1c757a0dfbec38d29b43b4f79f0c28207cf7c8a91bcb94cb488c3499e209de8ce0e762396564456f0d96e9494f9d185b23295bc2e24c97b06f2ef01d3c8948361ac5f034d39f98db0adbb9b9de77630cf5f7744d7f240dffe2456bec8fb7eb977591a57717d4db9c03bcacfd7c7e8b78705334fdcefa06ea27d0f072319f2ab3b39e671999f72c370f92c11beef77d6f727f9230fffee1c344277e5ea47b2df1fe23b7ba6227d1c167fdcee70ed649d60b83dc763f9b61daa72303c4827cf958ea36e7432796e503606bbcb68dcbf4d4e2ed5c8eba37157c751e4ddf97c842b9db8fb1c46b1ef280dcff292e030abcf2d5563dec3ecb8723c09f20c7d9e9334e70afe696c4ffc6da33ece041d07b97d066fb9a12741047675ba726739e6f407c5e771413a30e721330fa58f40e28519d283f91a5762d2d83f2cab9f810ef55cc2398c7581c1fb5869bc7447ceca9d25a0c7909e753999a3388c4bffc1d3e20cebe534099ac83ee9c0dd89aec51c209b4d201598de49d82d6c22e032dbfb18729e5e77bd01dbac7239d8aaaff1bd78ba89f5bd49d9d42f2315cc411efbb4af9e66f7412ff17935c617c8fbc40bcc303c6fc8dfa8f808ad1a1f2152fc12cb04f26c2b249fb297048d58f29c45ce734ef94495ef8df8b767ca49ce69f6857bb40a7fd5abd4a79a18af4df671de7c1d6a6f6ba837efe27812c79d80d128879ab5f634fb166a9bfb505325a8836e0a38460de86f922a7e2335a77a1c0cf46300788f2c1736f125c107c01cf70c66c9ef60db3e2eddd9473e47548f565662c59faf1843b39c171cdb11bdd0506e9ff6aced97e3b8e23e444ed6003f3974f55887f7e6f36cb9cfe66bf62688f3e795e3a7627156176c193ff537c60dc47feb648e21ff4d62abc960f168fc71c95d90af1591d9c194f4c7f0ef26e205a175b2a7e918cf4403d9809e8892b31df20519f1dff07bd4e835ca6fcf60dff6a97d5bfaefb96e12ca93688fc218d4511c34ed532e670f738dae787c55190bbb6219c3b1632163c427c06b40af1560981acb7dce4b06ebd0dd1471f5d8bc29d3ee723f74ac822b12b8da2315edd95c26f6a3bd053ad170da86e7ce647f80e5f8cb954e1687d1caadfbe37e2bb523a118179f3528f124af6d2ffd6e3c775aebb274f4c8d4d47b08f566694cb81712c01a13ecb38f4cbd30bcf2e6a9ac09715a97606f9ffda617ebfb380b9af95cc23d33811cc378c8fe3b065b864ff63a27f252af6bdfc4ba763055fcacb43d945f0e7a77e84ed1da143610f9ebe41d36f31cc39dc4c71fb88fe3126a6ae21fa6c7a50171ed85f27b8e4b03fa8980ff6109b550809d22b63b9a9a79b67eadede572172fd9b5c961fd06d8f5bcaf70f9ecbd9da76652bf2fbbedd67c6fd5ddf7efa979bc09f724ac45bbe139e9b5cac1c2f55ae6bac46937aafe04ee7f3f9ea8d82d5ab923d81ba616df5f88bbe93e0f3af67e25af7bca7976fd2d952b30cf09709f76910ee86cfcbd6ef9528cfc2519c58d50176794f911f45e7357e7ea33dd867d090fa23dac46489f2d9dd9119f433feeabfb24b63397abb01bfd463ac5e3f71d70a3e0b3b688d2ef8ba3bf4de35adbd7ecb4d19ec8edd1037964f60fb1659cdecb7104f3bd4c9d4d63bd023cafbc3e15fd0ec7dd91d02e207d25e22a0dbb302e6a4ff76f946dc2be7656ce25d3b3f21ff974757e321af3588b727fa1a8952273caea9be6b0a29be2b72fadac1dab59cf42b7f3f8eb5c1e16cf455324a3b8973dd8e373899ad840c4b749bdaf2e1adfabb51580512e1ed793dc873a2a721fb6f69827c7d7941de6976f11bffef6df72a509b1b6f0b3574e3b09bb9b98baff4f78a61f612a111b1b5f56eee238350abfeee437661b5c2f71de427d482c29fee13fe2a6a1e697bc6332d9a7d765039f2b95ef1b113ca7be3277a284da87d9dc7cff1dec721f41f0dbde39a3f8a9e9f7c95c53669ee7344721cb1d578f334cc5191ca64b50fdcc964ecb2a9e565cf00225fe3e96c6bd69e1cf97b2d6f641b749ed70eebcd5ad09e852d794ef75bfc73a550fe78eaa7c99678be798b2a585939eccf27702be9d5a7ed6723c5b8ec7941b0ff09a0ea493cde5d3e2bb09f80a8f78c2a4db4773f1f0b961f7f40738e8057311aad2666ecad349d49e9b1185cb69f64b9d60769489cae1c5233bd1f1b5745a3cf3301b7911c62c7958334bf3be8ae533ae91cfd83525656edd2e66a47ce8d41911379f80a9c863dc078041509f97045c2f6e8d5a740d07272bbe63675e838f11492da6684dfe7ab05e3578046b8e93fea361977b412057f977138d5c87fc015552cc6efbc394da6afe79b1178a79e5d766eed88aa83ff5c11a5e6ad6f0525d43d2db23d071e2f5f563c0b966ef6908d71bd9734a3e9fdae0f29e07d17ef44e2bf7bd9e1358380f37656a88f152c23caea7f56d63144fa254d563bdb075dc9a9275acd17db8b6b1c48caffb5eac735ee06e229cc65c7c25da2ff35d1fce160a1ee1fe0db04fca31cddabe33ba16e7263573013c3014b7b009b81be5b5c8075cee9593485ef27d3016d9706a4f4e0de09efcf133f27d44c62af972debf01b919a18d79605f4e9e915ecaf383eabc281fae294bb5f691c88827d8cbf07b1237b8a67c118ded197fe6fcd19a0be43654a55fb9de113d6fe5ce3ac1dede3ccb4d8b654cadd1f5eae5d3e2ed51358e9ef6ce0fdfe7a3b9f833ce62e13e779a7a887cdefcdd4a9caefeadac0de9a7cfd75f8853f9432cb992c391ba3f8e09a5d629647ce517f01f057ef884c32c5385fa0ad962ff200bd707f97875dc4d4c6cc1621f71d864145764c51f991ecb7511fb573a3ee39ffb319c6bbfc2f1cafb23eea2f2cec2f7ddf85abaf09b281e055f490d5c7be33f392f99f6cef143d9c4fd1562d96cd8e190c5ebda4ccb5e7ba8c916ccc96bb867b2f01d719d90a6de1fc4cf96e74a58ae54966b70385854eca97dca7970737ca4e9b682c5643c8f39cd837d5eeeed0cad37e02139611cf0b893c90bfca9b18f711a487e58076eed5c077b0ec660207e9b0538803fe22c15e00136e96774e8675c609e0003a2d80b789c363dce5631beb12b7f73fff371ea6430acddff823116f1c583b9125fd388439cf32ae57a3c18260c86f1fd2916ef5580617ce7308c8d7453f92c2bf300648e495ed1d6aca39fa5f789d67ff44ed7c9607a5a32fcb96be9b94e17e9db2a4f8f1a4eb429c7af33d1d695cf66afaccba98809fab95ffe40968a6b52eef7e5d9049aafb3ece23891d1c97e37dd4db475f2e54abf2d610d09d37f2f576b414b1c51e9c6f72ee47b81e2fc71d337140357d7a988afbb6be0bd1c6727e01ae4c604f2a79e7c4a0683bba87e9cba7f530f85bf2bf0345e89f5857d29b01ea12a219fe9037420c4ba9d1fc7e7ff95af51cd97188e87c7d77b3f850fed7431aee3d448254667f6ea39b41ee8eb13c7396db33adcb3a5c763d65af80c51b44e5a7c79a1578f5e27c06ba959a7b3e78e9ed650821fd01be21c9253e0c2d27b2d76512c9de704dd05d19f7638a7e512fd5dee7fa9fc6d514358cc0fc96b1cc36ef1198a6316fc19739a041c3e37ab7348ec7c64f503d2b9edbdafc5b79ab961e377215ef3bfe4ec1954f62ce65cc479dd2dc6a87e01239fc71b06aefd7a8cfcea5ca378ab56e67e12939738c615bdb8843eda221e576fdb8599603e622af6adf83b28662ff08dc6d0ab22bc7f2abaffb03ffc0575aef4e7555d4cbde318785f5389fd4c281f28c6cb3ca7ff6ff1db8bf7cce350ccafc6db8b853b8a97398edf7f2e7be5fdeb74cfc269b77f60273afe217e662b9eecb3e77a58f0ae274e3757f4301a5f5d9ceab17ed3fdb99fcafbcd13ce775505beeb88f5911a6ddee7042e0be068e0f4dfca25b15c5fb9d4f7963df253ec3474d493d9689b2b07ea714bbda95949811d50eacc07bf51e137a2712e9df464e17e69b07538f6ade6ea85316fb15635f720f5539c5c11ccdfdafa294646f1be8bcade226c9b24dae7aefe8e8ebb710c27dc37df88698536e8594cbbf0c873735c675353b71e37b71caf1bb2c30b26f6c97b6a7a43dc47e37079a2a3bfcdf90b69f96c31387a458cdd97f97e96bc3eb6a96f8203d4fe576a6ee5cd679fd4743a61e639963231fb655d1b39cfc636a75de420dd664712d5e1fa642e484d15153f4474adeec5bb57c711df0d4d3971e36bce8e9e939eaa7da72b74ad685c0d010e03b9e7471d578b91566d7a5ac482b122c440f1f8ba2c8ce13598d2758145bda495e786cdf3acb6b6d6aee327a1f838e839ccb8b306be66a8c8a551eb96d563ff57ce36bf82817e2fb0b14d7256877cc8b20ee986ec03f669ace4a359d65fa17729e4e81bf87a745de5ca9d0dfd06ac8f0436519ab9e301f38c9a9e26c0d513f810f1dd6fa49b50b3a3fafaf63edda3735a3aa3d8c7b5800cb64ee8b4490d3df79c72dd09bec903de7a69e98e24e88de95175955a4b199aefbf3d4df95de55364711152cc15bd57647fbfc072d0edf457c8b768eab187eb4091cf07f7a1fbc172992c6bcf84b5d0e5bdba1d15d74017f58deb701026cb86b5f60636f86e43ec379e97073bf135b41ec17ae92e00cf57d4ef8d64b0909906ae5925b58ff1b8ecc124b98274b3dc033e39db67ac45b44d29eb0820a6b1a778fd707d26e959883c35c7b0d9c46cff638a73c57b250b1b6ae675a1f731c1ebd1a7e35a6a0e37390e5232297b9ca0be08ea9c908d76c3e3ca49e3b166d17d69f75053b3b0af635c5347941f79c85dc4d515815e68d6ddabbe5f4784914074c5c17309aefb0339371db505f558961e7bcd51fc006380b337d3ea1929352f1f0dfd5aadababe9c3c4df356dc96b2889bf0ff3fb1f732e2f8fea835eba9bbc8ef610eced98e6cdf6f977817a72bacf1fd7b501b75573a5c527145f33fa39b7b706dd1f5ab9af7154a607d15a51f2c9e79e4e156cb147fdd0659d31f4eae2beee6997ab19feeddfd3843acfbf52e7f9d806901a67c04d25391b72effbdc89a89ee02179ce5459317da5cc33377377fa7b6982ffb3991852cdb3d41cc352a0c73757ff79cf59613fbe8c94b3bb955af29abc639d4c2ed8ba598821e28bb5b7efa1934a792d6529b3b80eb2d00383c537f4c0ecea1ff4cdca69df098e676d2d3ba57b585cebbc8edba9d624dba4debebdf1bbc06b543c0b732796e79a04d77d031ceb32964f347f8467f124d2ef4816c7067326c5d42157fcb96a7fd4a5da1f05b6b0ac1fa5eacc673946b454791e730626dc6b7d5e96a8b8a5181bd4a40e1689489656eecc04ecc87aee3aaece3b686c625f4b45f20deb0776eb39171ef64f84ef56eac7e7b82af83ad1bbe53ceb8ff53b372e4ec7025ecaa1e8d921bd4f9c3d60fadaabf7a81b9f0573c9e5ba79fb583fe738376b611f43c8adf6331e48e273c871b00ff358f118766f65ad35ff5dfa3f94173f51be141d4f9ee8da736c3b001b83af15c4b9405cefc6c67c584e98d8b5e61e85cce1b9e6f32fd03b8d6b5e0742fd8ffc2fc17e83dc58a153c9f7129dbf1c6d3d89daf3c79c4b50f00c8ad7a7f54a6c5f700991e71f91dd79146b1518de153d93f33d7d345a7fc659c1c541e62cc79885dcf585e07570ba9ee17da8e5a9e5fc4bf07fc536e81b7915b13e7b96579995790c216649593ba059df3f0feab6774b27cdebb948bd15cd158279315c59c1ba4556bee6ee22a9f6bdcfad02a38fe2b9845a325a2771bfc376752605071b721273c7e2fad983dc9f10e40148ae0ef797f5e5c4c7fd7a78bd710e50d8df80ece4a3da2e2c03c8beeab395d302ceb4ff931e7d573a9a8e954cfaeaff27d79ec4cbb395d34e7c473d415cc9cf59ee931679374fe043827fca724a129d5f919b2edd13013aacef19452c2bcea519d00f4a7aa562c52bee4d7cb4321e8aebe2211a938e9b2b90ef728c0ffa9698f85b24b7be165f5652b53707f0768a792ef75bc8f948d55efe32877a8efc66decf8d7c97023789ead3467af55c3e478b33cf9951bdd0396ff3cf6204a18f867effe8aca84be52480a7ed5fe878311ec8e37e23e00eb295711fe2698df321a97e98dc37e0f2beee6ce4c7a4c7b9276da6a5af9804d2ec1aeeedcc731674ae06fda6e737bd38d8db91d5b0a5b9d14fe9bc7381b100f7bb3d384b8c7e536754ffaa86a2783f5757beccb326b205e5b86a7d1c1aeb006abcf56a1f58252eadcd4336a05eae888585f7dac7f745436978eea83226a1ff4fad870e5c5a7c0c5f7c6f3ec2d1ad5bc72f2443c23a5bf1794cf58c42fc8e659ef179cc84afab1b8778ae2aeb47c92c8573c2cd0dc66fe6e6500e347d136af6c8e46b4a621ca7eb59e858425f9de16969da17a47be63b299ba8b7ad47f2c901d2395abcf1bb1d1c67aab7ada0277d641a18a34624330f722ca2352ef7778d0c8af7458d0c16fb432c83dfc0afe6d6f815df46dfdb391ece4054f753fedd89c1e6b0be4a52ea2931fe6a713ec772f37ea746ea6b99632295ba14b04e82bb7c99f0fa989c63ae6f65fd60fcff183615c8dc6ee5e848ef82bd7d208322dc9e8a2d67f3cccf307c482f584d7f3db31f8e4caeaa47e5aa447eb83b1b050de5b47c28fbef2983c3f864bfd7c40ddfc4e42d7083aaf7ba05c8a710e83f741d8a2b7cad7574bb23e8afc6f839ec3d01774b4bb77e8f7042b2ef251a7f712661581267031e5d6fe2f3a2a8ae4fa3824b9ae735f0f9dc4e785e58d6d900efc30de74e49adaa57f62427850f48e54f90afec6ffbd03fb78814db8cf48e15471873d861b8102f82f7bad7e610718dcfa63ea744f34ad7dcb35be1a9a1ebddb3e87bbd248d4a8d633e87392662f1378e7b2ccd3a420c57e275e4737eafcef9446bd5c9b84a74dc331b82756153105fd0e78ba2397ed203e019cffdc4ca19a654be2bd3035fd1f77282e2cda5d3de798eb2873a0ca7ec23e66c812a15f81ed31dc6f428398bb87c2de42a3d3e5f57f5af38795e194c3e90c281aecb031675585c7f8da7d562e7e53611b8e03d7724411f11f0a8e7678724f612e8d8d27f4cbb48477a9a9a3de5c8afe8a46aae34df0b79dd3c91f70d5f63007908a1eea6e731ec16b81817e20ffc0e9a61126ab3239cf935669ba061adcd6ebb6bcaf687de570dc74c2e488f1856dbd2edd1c89487bf978751bc744ebf970d15c9d17412c51f76df360c4b313e80675b4536ea17d675a3b96db5fb0b7be47db94fd66db038f9dbffcbf8d2437e43b7ee0cda87730c7913107db2cafdee3d9c43407d4a3eaf4ff727dccbdb2c9b1033fd5e70feaa97f81cdea4a0d7311f53973e6fe73041369e26c62d7e016fa3f7a476939e83d9d27dc7353d2c1f12859bc7c82ad86fc81115b9318c5335a670daa877bc85f08e693c36a2938731f91eebb07e48db5e81feaa19bfd6aac3e3abd44e49cadc89fe1ed78cd5df0a6b574efe16fefb35d6a2aaaebe8c8d34c1e7d7dc3ad6f9452c9632c1c77882eb1417186cf97d095e282f8b25aedbd3dedbf2fd1b4b279545183f5f688f55f467b8574fa1f3fcbc51787fe198d1be1f5d43a71d2ddd511bf4b7cb63b909ce633e428a43e3d9b972e18739ad8b9fcf6d83d4949073b971b54701ad19c13760fcb3bd55e01755f8aab9f912603371385255d9cd750fe0d0617b168f0bcc2ba1def84e9ccb8df195387751c6b9b6889bcade5bca27b27db5dc546db7f63b75f6e8bbda7b7e9967fbdf9c65d8e21aaa27984a70466de3fc56fb1a1cf4a3e78e043c6e2c67157a9619d96f5f8305f291d0ef3fec261ec3ca9dcd8341e70a798c27f5e643a29ba73b49190f1667cf384963c392c89850ac73f61bede1d249f796966ef87a6d8871a02f97e0a396399ade39ef213d865d391edf17c9c85c14fecec4ec17b5f9612f8de7cdc52f8fd2b3c091e4b4f6a3dd54817bf4daf81a23fa7b7a4f2ee5bcc51743534f5edc392d9d76f53c08ce004a9b6fe5f365eaa652cca525317369da77ccffe5b9e95b88eb28ff4cf33576ed8d37186d04bd87681e82e1be2dfbce280ee2db16f96c481690ff5eb5b7a3adf7e2b56af8dd3e8a92636ab11fed007f39ae703b9da1bfa7a122dd2ad118b5a1b6898703555e3a7ab6041e15140b746eb85ee6fd48706bffb8dde109feddb000fb7a6cdfb60c5f7bafa54c7b4a3cdf49b7b96cc793a8ad7ec4763c8967eac7defa6b6ebeff0d721c07bf600de45079c52f196dbdcafb566dffb41ebbcb481341ed365ab764725803bfc7e4b0de8ff6d1e513ea375a97cf0ae6af6f6c826134dbf8fbf635ec768a7c00b2559ed14943478d82bd7a09bb1d649fd7e120bc0eb53842cf5b39b38ddf25733998428ec2df52675c5a74f9ecb5147fdb6ecd1b680cf0ef363f7fdc772ef9cefd72417f5ecc4880d5c1d42d237de8c16f41573dc8117d19a903fb227bc26177c0cfb6a467cf9e3de7af53ed188d2fafeb0d1c211e261377737c53797f018be37dc13e317b6dd07baf5e779b72fd0f7a8bcba90ea2eaef4a19e891dfffb01f8c89514d59fa666ffb6bbd87fc9ec8a87e0632af058f03c65f233537c2791ed0b5488ba7ef1d08fc730e27ce16e0c4c5029c38999bb36cc262e65d27033a4f9ee7a901eb2dadc593b5f273e16a0f9cb0bfeecb1b802e9126b1127d760b6e129095e273f3edf691e7349aa5be9d1f16ecdff7feaf42464bdbf3167699bfff9e98fd5f8f79a7d07ddf6f13fcfff24cb3f90e3c4c81d07f7980eb5fee89f697917273c7f9a2cf6b006fd381601c902f8073f3fa333ae4d7a2fd21184730183dac81351d555a75db1b6463a6a53e893ecbf38de813eaaf64aa0e0afb7525b6a87a867c3dc62b45df4998eb6433079f60db863eda6087eccb4c5e1e72fca74d32bef7938fe6221fe711d9526c6387c8aefe62f2dccdf71be4b8bb1293df0e7a7db0c1cc67a56cc07d704fc539186edfd76cee9cf449086500fc824db0b72dff5ecf8dcc632d14bfcbfb41488e3a56260355945fa57a50bec513f215f4d4da7b7e3e3ff38b3e4532f7b3735de11e7891bb0bf46cdd3dac7a9f939f8fe25abd6e5e843921febd203722ba47895fc6c586a4aed59237a1b6be2c5d7de3ef86474aff5176735ded7fc1357fc5195a7be3e3fa5ec05f46df85fd927fd3ed0e2f98af2f8f47d1bec0fc2b953d76417b0ced9b8f2d7c5fea9b2eec8773658fa598bf85feacd4c7709fb8f081d7e4995c7d75cd5e92434d740600fb4934d7222c2c5cd744f92d21ebb3c4acbf625d3ebbb23439ac199fc533daed89bbb8507a8ef65b501c44f9b2945eec527a11f271546f55b7cf70dba2e78fb6cb1b83573e8892897adb623c63fbe2753bcd95ab1f2b3e72eceff5c24fc6f5057a30dc0af5c7b7b08fc57bfd19ef935a601f57f95d79dea76f633f801f3bd9cf36be76237b258dc74cad52c17556f53521fe2dea751ed62a15bfb97f3a12e713e3dacf8affbcb75b5007c871efd03577028e57aa2eb5f29c8870c1f8d3eeedfc6146ed49576a7f9871488fbbe8a7ebc99789d64a58df53e05b18eb1beec5e3f9d7a646947c3490df6c177d50b91e0c1db9e8c31d1b52ca6348f3f75b612e023ebfab45c0d5fac59d81953585456ef0ffb17ad2a21e10aff5537c73242ba6138bce914bce8ee738145f840fc70f55c1190ecb8d51df6f4361b9cf5d418d28c5ed51fa1862db5edb97cec8bd55c9f332fdc7053fe3d720ad9e37977836c2f32ac82f3fb5efb02705dc684189f15f93a35bc37ea3eb6ccbf997a8f355cc21e034f57058cf79b4099ab3c46bb463afdb890867cadad3ded6389f84ecff0cd9e81363df6b7b79cb67ce1d5b741688f1f9dc51e23747d0bb2bf4ab58fcebcdb49b124ce95b46f010ab6b92e3c41c3d23e2cf98b9de17eb44f12790f3e9f21cb4c0e37850d73161b86ef0794079ce3a024e4fa4c7995c5acd7a8bf72c533358ec55e1de207535cc3e801cf142789dc04615df019e0f13579035a5b17ae5db7622d75c93e3ce62fd9a9f4d21ffec48c535a57ee9ebb13fd037e36e84fcb004e30809eb53311710155fad8aef884f21ac2b67ebdfeb6b612bd7097510c106b3407f3ceb1da5641330528e530a73a8944d724f639da275981b6aad6c8b7faf9e7c159f1300fe1cc18d19f7de4f66b7ad3aaaae5a513cb7b6d07bb4a9d619143df4bd7e22d075624cd3ee3a9df46f17dddee47505f479b134da7af168ebd5d5279535fc7c2ccac451e41aa9c63ecd564ebbe65ee2de44e67a416d4fc9afb2e97b4e2a2db978afcaa155da11e677705e27aa8dcefd3f9de807a89114bd1f9a27aae6fd512d31e5370a65368c4375d6f69fc7aef74f475483c1f8712fd47f17ef58631f857b87f729a09e47a02f61ff6319aadbcbb98e004c912ead833a18074d60e7e74d764da97bfc62c694eb347514877b3b0b003faf46f770f3cef62a22ffbdce26143ebf60be28bf89e5f2a1ea2edce6aced1bfcf78ff6640dc7d1a9a8592b7bb7397e695efe0571c0207d1b6b2d65e2b4f25aa6646ef67fe3b3b9dcbe2c30a7ba21a5c599c10ef8d8afc579a8b141fbe63a77ac3ffe3649688cca9c1f09d799107d46732a0d86273fabf3dd6aec447def345c2b9853765f3ebd176de7eafaa378bf92cd9d421f90489730fd222fd4e217f222bad7376a0a7ed20f1ac3eff678adf2feb38767c1f8bc773a89ec25e5bfc504b37d64c6c4feedded28fc342e4ebe5d796b672f77626dc6ef197b1493d233a397c0e53f99037357c92369f9b63cfffc107d74177a418e7da95d033fe05ae19379657e67b596275c7c2fab2a7986038bf7817f62858f6c5eb03b757f93bcc235c7396c4dd330eb34ed73336305f8e66911c00393bfb37bdf9155ee1c51eebf12ff3ec3db239556c16415d3bb90e3037eb7971f21ae3b2579cf00771f7c31cb4e519fd2f9c2fcd39d9aa384ad0231e43bd53eed323bb00f8e031e6faa43eff4272c7e5d25eab5fccd7895c8feda01aff97f58b83c7f5d2359c6d59f94c7847e7795df6227bc449f6c27300ef49349779bfa83d2aeae85ec8cd90fb576bef38d9847e5739e77f7dca4927e4abf6717dddb778aa2b3c80a795d3fe93db3bbeef553c764fb3b7a1132ec09fd252be5e4a8e2e7ed366f6438d8c258154a91714d64c55f70c2bbf9e115570d75a0c5f16c5655862b574d75cadecd0949495b1dcaf5eaa1d14be0fcce7c249f91ee2aa2e677225f243f9f9682eaa75a41255472aea65eef85a5ac595bb8fc56b705ebafa6ed58f2f56433d3f3a6bc778566942f91f9ba1bbb87898abe33ed65ac968eb6dc22ed5a7d31c2568ef96f5f0693cd1a204f7e32e2e0b49999afdf843b75464d3b9730fb4fe799d1875a67ac4e3a8dbb7f0beaabfd75fc5d241d7828e7d2aef7c4ce74df68a4cc52bd293717d479fe4b6e6a93e013e69727f3f9e6d7c8739fb15e524196c27c036ade00b51589217aacf24a9b15d97b19116dc9f1cc6a349f387e0fca4e1b4cda523c7f95ea1f89532cc6531f2a7b644e15a75129a87d1775469d9d888de17cbd960e4073407ae2d9d82f89c95bddf52e61a11d50342f546423f482ad459fe6116074f62d90a3e628d4c94fce3bad3e66b8b191e43bafea1946f418f635c532f8dcf718b7a69645b5b4cbfe39ce5a459fb0799adbb1f88de418d3c116e9560fc55ae72cfa8e1c3dfc931c5555edd0b04cf222af53af25107493cd65a27cc953fac7cd687faf020e7a41d0cd135e5df5a894399d782337f0f86353e821a3de817af72f2d6f9d8345619bfaff33ea817786a737f20afebafd1f7c055cfe7ef89ad6dd0bd672ce651deab55c13c2af10d2bd7e5d8f9683d56357873783f533604ed79554276249eec714e34c83619d4e152f5cd2bf715d9fc4e1cc6cdd32b7198e711b9f88e3fc7f540c019fee33d2ce4007fd587cbb159f9fcdd43dce4cad931c6e8aac485b538cd4f3099c381f47bd5e0f225d7e040b0c206b38ebfd7010fb20e57939ac3443087498d1e041b55e841cc470dcf1977a3bffd2ddeafc136fa95739393bec63ff558d039f6d8332eda120bc8dff1fad0df8af5e1ca942f94bf47639d1d1f61366339c2f89cf4993792597eee3ba7a5338bf5c328f62c8c5b26cadf305ca3d0eff0935e1d06ef2821b96ec00ea7708e8a7e56cab781bcdd22c79124357c93c1a27acfac526f3ff58c4d3044b2ef8c4e9ed191fcac43ce505b6bc072239f0d07781c6e777812e9ac71ef3d01d9c279623c66b00fb232d1ce551db20d9df8e4f56534d6f3d249a9738caa4e48a1ff99969715252f81405e821a79f1ef7246d94fe4775d09a6148fdf68b6b2b17bbe92b8818b19f4bd92994e7c5939f2c6a7d60074778129fb568789751c1be98659c762cea609d55bbb99138ca55c0e0bfcbb08cbe258eb9f820cce26614f2e8d28f9d8b7c0762ec8fd8afa6c728d9fd1fe5c2c5a9f9ddf684b4b27bee418a92ff960ac2e7caabb0996f7eb38a8156c096eafee47f2ca4923d3515bdcbaf0792ea64fb1c8e7692d25ec56fb155bd538938e9df3f143acbdaae4ca811f62cff5e01567a0e39c0309f76e9636ccceb10cf37cd130c7c28fc71ae5333dd66f198a3d785cdf58a9f4f4713a3cd0d2cdb2612ffc46daf61acac5205c05cfe225cff8e1dc9578c830272b1a1f1363548be414e9a1628c4f7110189e03f29b6c2392dd4434270ff5ad885f8df11965a906ab126cc0433c63b4f682de5d730bf565d73c571de47c145a5fb00e7df13a0c2c6559eec193df93e59a71eee639064bcd3829bd751d6d97c7e02e5fc5f7c2b919ffe0c5bea6dc3c0bfba3fe5e3d8d4b5c80e3dce8a71f8d29a517a6c79581f613e65120bc04239fdc37d8a627be360ef06e12349e15d4de4427e0e92e6de2f56b90de19cc686d9a8ca137fc4d09695c204d11c920c40d22ec5e018ffca9a859c4b8e795358a6ad608e28462af045b6aafb8f80c32d8a6c06b41ef6b1a3bcb336fcad44883e1de83bce270a037fdac83657e305daf9cd65a64cf861ada0f3a9c33fb0791ceadc67aff8ee78ce835121b96393cdd694790c71b2ce8d80f3832fe47b881e53826b63f3fc7e4f3861a75ee9bd757127bbf74371c3623e65e1d52b6e62d8f0d1ff943c795218c354ec1b6c02bb9fbcd11c18f4eef0ba71d117d7df4b3dadfe636e4e66beaceb3bccc736c1c578875e2a9cedfff4e3f322f3faf60629c8b3ae7d55e706ed948447601639f0cb8fc8032d1b8ebbf730efccf4f7acb57656ff9b09e5702e7fc039e5748f2f2dae8de8fb8cbbe96b856fd3e771754bd881efba68ce676287a27037fffb44626d4ecf397910aefb1c89ffb34df4cdebd299d8c9f9e1b2339d0ecb0762c4fd6c8d08a35726bd7a809b95faede1dcd01b76ee4daa9e0ba2ae714ac45916703db947c996797f7cb141e9f9fcafdaedc99eabb1de9d358d3f961963bcaa5e54a2679ea355bdb591957d0b0a571afcf8d17e3ab30ef9b8c697de526f1c4948afaff606f5f83bd1e075ba80f94be8c947fc746fceb85de24b8b7f0f7f933f8fa53d6e7c76b7811cfc7461a9ba76c7c58bc15dfe3f7db8fb6eba3674ae8bb84c10786fc5fd957c9cc9166fd991a51d9bb69ebd7f140f8dc786c446fd3ee72ef192507307f0d3e4b5abaa3d8d6de8efe16fd26fa1df6704f3df31be4ff773752fdbda2dfc2f5ce3190d4908f0f357bc39fd33c91fb8cfc0e9fd570eb56c86eeddabfdfe6d5f976a593fdd427616b0cc958702ccc72f293353c2953f3ccc7b66e127f609fbe7aafbbe72e8ee87df13933d59f9871d7023612e9ef9402a48bb24d3cb90f1358f7de399edca5ac660de39a359c2d5dfd3839205fafbd1b6bd675ba8d12ea8c8019a7079cc5a279fb4e5e98938957f2c26e898f7fe6ea27beccf384c7e281bac1111a3f7fa6249d8c7ff30e7d613cf9ec1d26e53b24a277180bfc23c07013e50dbf8c94bb3ed8db67bfe909314384d7bb760c7c7e553fa7ffaffc1cee392fd9d0d2cfd11f6363cf8e2b278d887fb059eed35864170bbf85c350b01b2586c2ff1ade751ce678d746baf24cf977d0b0b395a39e6ca89d8daf7e6c8ff45ef21bc5acde3e3e84ee08deed63dbbf017fbcb8a717dff7794f2f5cf765a4fa0f6de60e70ed732c2a67c4707588ee8bd77c83629a1c4b70cbe5c0c578aafcfa36a513fffe6ae4f5f96bf97ca30d31bf3d18c99ec1e316e67242f91ec277a5ce14b9777d6e7f1ecf23ed7bd5cee5337f58e37044b7248e297966cbcf942a47677e7f9a4390f6adf9f9ffb66f5d23238ff582e5d8ca444da0f637d8c71b5ff5e2e0304bfc46db36acc5334c98d6cce9a79e69c99e3395a6e6b4f161ae0197c16c8cfef19c993401acc7f8e2d948df75e2e0a02728feb51cebe4ec2d12a7bf47025cafdf23ac731b9e3bba7b9692799a5d8b2df7d9c86dbbf5eb110fb157f1cfa016d3954e23c05c8d1f6069bd479e81e3f91cf313fcc7de7bf265dc8aef1ed6b477db922f11ce54a4ff4c651076c93db5d6c933a25f7a7371091a4a06f5290c9f199f979a00df5e7a85b32a92c3f9680edffcfb391b67a784ca4d9d70de7671f4e373e61ab132e9ea68cd137f1f9e3c57bffa113e27adc3bd28cf4fcb3c56512b62a4451e20d45a7567b6db524f5969d56e2c291d33e5fa87f524afa1e4391bf4d8b7b8ef6b6dc684cb33a9823cd388b22d942e31fb74ef3cfd3e198579231853ab3c17d06252775a6019442b97e0511970f62df9dbca3e7637b7a5d38e6c4dd143c7969fd41c5e0897c239c0fcda543f2af32e803f126aad0b701f34e41beebf2af1fc9935211caffe76b95fd1b86d5aebb204aef98d709dc7661bbdcf067abf84e31826c559dade6e059a7af1bae27b55f526f9fd89f460e0fa76f358707b7f0e3a1ba81716be8f701dd309ec59c20fd6cddf99e7f97f786f432c23ccbd7b18478cc6c37e610e32f11cf4993940b25bc56ef3f776126a9b38d876e8fbad57ee74bda464c5ed0e918de46470e5cea69ea3361ed4f5a0f57d59f6be06f00ce0a2f0ddb2df46f4cec0b78cee2dc056277abc9eb3b227ea232ff6e09b67307f032e92e0babfaad791be8ddabdcadb81f432d122e6ec2928ce9e043e19d4c6fee0fcdc48f37e06c9df6eae13ad5e2f8dcd33a9cfa33eeb466f2b63b92fea4a32c82df3ef59fa4c62bfb09a1b28f1d699fd56605a31f23112ad37c1fd21baf2b92f58ea55573a213dc5fa57b47e7eec3353b27f1c9b0a13bbeba54c5c28f9f8965ea0b0e6595d44e1d36279a0d649ac0b195f16f99ac2bdfce2b9806ecb75ebf02c1697fc039e73b00d7c6f6295372a3f13c8cf2009df36d9f7159df208ef74a8b1fd16c8bf25716fccd68777a46aef51b057ae05065f39bff28ac74a913c47aec45d052e30534fb968a8b7a5334bc202f7ef514c4ce9ad6ebbaf5b5ec7b652cb95da73bd6f7f2d2475b1b066235b8d582c336bb6093475b772f5f6dcb1956fc5d59cefd3093f2a31dd7cd73fb9dd11f49f0cb5f259434d9683e662bddc5b6b8ff0ac04b0ffd4cbb0a7323db0fc38db48af5cfc9dfc9b6035dc51bc1048caad168f77208c517e81efbff712af6967781f1c818f57efdbdac2b6a7b6aa7c9892aebad2ac63f5d59e61ebde035cdf58a4eb4c6efc2fe161f5966e67b36cc4d2a72b9d3ca7aa83506c26e85912f12876375251df6e4880c1c7dd0f7f2fc0bd5c3f92b9aa7d4c02c93e07031dc5287f4f7b853f85cf42a1ee21ef838d7f51363bf31b8a3426bd2d0f7be658dc8d1bef9377c2efd8c517ebb22fbc6eb0fe0ebba7dc0fc7fd715a2bf9d8b7d695feb02160d20f167fe6c877a17cb62fe13a8c62df511a9e85cf079fd5e690f38ea4c4e4e6f33a82baf957eb4585ef12e0ba15c8df8e313609f0d4fb3b391b576b95bb7d8cad0cb8530fd6257f6f6373191bb7cd14fad5edaafdc0396f59077efe6fcaeaefaa2c56cfcef039c9cc0af67669239ba3abdf14730d843d25cf6dfe0a07f2539dc962c18bf0ba0a3b90cc9dfa3cdd8fd71372b5dc9aea659ee18dc6f6cfe7f9186ca3dfe55abeed47a41671acbd157588c1b653c146dec4f3462bef2928cf9e81e32089c36efbbed214d9d7f40fcff5e2201ec54b677634343b8358963ae72c7b736ecab4a7e038650f3680d3b78ff2f22c7e5c816102f21076531a6b99f4bd2cd6e4ec6c0dbd7d5967e36f3ba6ad0ed7a0cb1b76345487e770308a3da3b3f10e60c392b0db392e516cb4b7637fdb21f76f57701d903f2dc863e2b86b8874238acd85ba7a4fff6ed6a9cb35ffb8ffd8484bae023e06dad2b2b870f5295a3f9f3e8bc47b06e255cca1b1beffc4979868119f6f190cf97c0bd44357fc8ead948d8d34a173f144575da8b8392b6ac6f3f897aeefbb937aed176d899f896d09ae992b6cc95d684b1ecfed6532989e02e0f360de93bb97a159c9a42b811ef2b7a0ab492cc6f272a17715db1f55f6dc11e7a3fc7b9e795cc78be6e5415e905c1bdf7547be8583086ae1283c0f5c9b7898c5cba67e379bef50774b7f56d1dbd598e614764bec2d72c676a4fc6ef04326806d670346fc74f7f49dbf83fd5e9d8b93c06fe2799afec3f7f7b7fcfbfbdbeafb47c9abf8dfe87babca9113c3196ec2e1e773dc3939cee0725fdde7021b45f585577500d2156f025d31e574c544eb2b3ec188139cf71cc7462acfcdf7dfa1996ea89e5099ea093dcd9d3ea991b10a5c17b06f955804ec34fd59b6397171f9600875ac7eb7623f5535cef17ef275825ad8c134f9d8df78bfcc54ee9303c650c176367f16f891c7b111fd42f62f686caea19346263e1b313c47ddadfa9b3880d880e16e332a7804996ba423d83ffbc73805f9f9cd53fe045565f8df9655dc75553aadaa3571b6740aaa9fc5d2c9dbc9c787ba5a0b9469ef7c986b4baaa72fa07afa168ab7c5751c5e167d6fcf69fc3e5b66c087183dd0f569e8d8d9a7b1d94db4c529e846bfbcaa0c201faaf94efc82c5b77d285c5fcff9d0d8ff7d506f96e72df85a3346b7288f7c19fadc3497e39c4f157303ad6f45ee6a3fcb3c47953c6b93788d4d1c44d85e07953a1b764d6fe7a9f1d09faad6f3613fac27417ccffb54611caaf8bd9ef49e72b12c9e0f5d34d799e7c8d7501c573faf6b7ef10c8ab79fa57d19e6587d5817c0b970d0b077e160360fbae0c3509f4dd97c16975f4ba571590b97bf9bd07e029e496ffab45ebc86338ddff3d5eb62e06e207d544ccc7c5c196996f7829532dcbfd1be1ddd5791f7be89edc18f7a2ee8dce08b76dbaab1d596205e237d0c9575f0b7a98cecc9d8887f077759fe688cd0befaf3258ac9dde97e74983e8931cb3d3cda7a8f7de1327ebf8f8df42af42debf6b9b0cf86f673d7849fb6f491aad842b96eb190cd72da123b3eb8e79fa941f1dfe05e062ab6542ea466f615bd74c1f713e628221e9338ef9f78842bf5c00736df6e1ff5be237e5ef7ff6f7269c0512ab08b1ce6864770f2fc6df47b65b625e427853d19ec1a85adf6672ab67339ced962e98ed0fbd4d73ad5e407983530a2224e2de29622bf21b26fa40697c66de8633cab8f4c27fddf8bb20f24ef71823a1492d731186c2ec8e554f23e594ddee73a7787541e8f608800af01f09ba0397db8f7731f89aac72af81ca87309dceb4862ccbc6e89e1d9d4a8da712a670d58093575629057aa70480bce945fadeb22765f616d14b3bf92077e06ad77c439c917eb2f6357a8135fe28fcde7a038b7d6354526f5950f79f7e67bebefa99948730d9f4f23dfc7dfb72ed558e5312f5727f30ff877c2dac8ee43aeaef374b0becf1c7b3fdbe9bb8fde289a695379d67bbfc119cef6e159d5931ab23eba47c1d7ef69f67ee5b4636b30ba069a9d855a8c747fec6fd173c85e1c54380f31f7fa95c7a2977efb8d17cf7dcb3adeeb4fcf4b916cf0cf7b4536944b5e3f1570d8472c5f0470bdbbe778eed86f5f5aebf2e88c6b32585c960d15fa74318fba957cb9807b7a99c4ca1719e7977b97a5b1713b56de5b296bf8880d3536281eacf0b64709cf19d02a74e6a73cb3ac839e790ed625ffd5d9de27ab67ebafb35ebb6ef5ea19645f57f548b54d55ff3223a5afdb4a6f61773a0b29b61cb3bebeb85ceb1a7fca86be844bc8f8ae332dd82b67b44f432dde2d9dd4f4b57857d3efcdf49586ddc247f86bda8d2a3818d41985f9fe7b65a65211b7f430473bb6077aa7c46f7f6c8bf5c3e8eadb1ed4772299b31a69027510ea39710de062a66b699549dd3c5862ee2eeab768ec1b5c47209daa7bf571bdf57bfdd9524f91aa78c5d023c560d847bf2afc19c4c6b637c1a073facccf42e99c0b600057df35061dcce96af02f879b57fc4b31c6d7e2b2743b377f10e598fbf47d727ffb3b3c33188b1ee20d51dfda42fc5edd3692d513f1a9a0f649b456a27c5bbd8e6c5daa7b14d99eca3c34301fe46ce3abb3d30ae9ebe7fdff6c8f4e9f705135ecc467cedc15e013cf314e16ee285bbad1d13322b4df918ec5f587469a71d83e467a45fbccbfa7f147e30df2552bfb7c754bbc147a7fded1b5955a2f14e7bdf9bbc237dc30be6123f67d592239a67e32194cff8c9b72054be43f3d23e065c8646a7a447d30bc2d82fcc2f0bfca2ffc7eedb9add38aed4d7f74ae5597439d78c67f9c43fdf7fc96afbd3fe092a7f7b14bf16eaac3239763efc790277a829b9bfb6dd5b948ab7341c5861b81fe91053ca32711cf6865bf93fc2bab6f96462a4fb41b60e009eb1649afe7134ccbcbe410f788af0ef1b140dffcc42632b60debc6fabdf33827f29a9e15f6ade57bfdf9d9d8abf6a27eff93e757f960265a8ba9a5a9c9bb3eb469823511e76e7ee60390bc0c33cfc9c7a16af7308efc64afde022d6d1772483d43b42e0fd7f6e7f9b424e7530c0723d9df4ff39ed69de7c4a7f16051e40526d4b957b5be0ddd0fe3a3e6be22f45d533d3043f43e2d662f151897455e93b7c7d9269bf41f8c8f7c1734d52c84337de897ade6ef7fb0efecfb587b3b01a728e78fb563749fa0a97f784e7c5869a36be80e45f9fe87b541c273541562c2e409273bf801a1d6a2f3cd06e400cb1c21fb5937e26a0e01cb676fdfc37e3b5e39e171b957e400e24519d9b1c7e7b803fd42e1f771f82f2f3e2b990c9617abaf9886ad8fecc8fe32acb66658ed91ad46c9176d731edbfde7e3d55afb515cb55b6a38d1940b8dcdf5ea1933c65fd52f791e107854e1fc04ce77d9bfb5379e77472c43503fff02febce46f977bb73bba848ebcf5dc5130dc490ae82078d7aa6dcccf3bfbfcfb0d44fd4d05a7f98eec67d723bd65cbacc0a7fb3d74a6d5f30279be7b2f711d7bf26e72e85c910e1f1be96deeac09274b59f74e72c3b7f94e96c70e3ebbf868ac2b35f46fc7d0946f685cab6ef46bd5cdfb6974cb97915f6ac7636d7aa2319e9cc68deb3918f7de13f67c3c65cee63176e23a2535e5a4d6310e59397c7ebee5097c324fe093798233ed4fb2b70dcd3a7adbf43036d22faa3fa3cc1be3734bf40eed89b67859bedc2c467b4311d8c157739a63cf4821af29f6951ef78f424e718bf6645b0af6f6f21117c964af36bc2caf2195133f5ec3796481f5a8aea17e61027d035e95438de163190f167f3c23ba4ed9e77bdf7b7e54797e449e1f5d2c5937a02610e7231ee73035f5f265a4c94f7b68a7f7a83ddd75f6b3c642f676c3c6d4b16ef87e1bc6ff7c98df3d9c2beb9dd4adf7075aeb02efc4a4afdb00d63d5b7b5e7273fb4d1b9f2da0f56920191fc54ec17b5ad6c38c912c22bfffa0679ebd3eae8cea197444f047a34b253ff770ae3e1b6c4ff4c7bea6275a6a875f465ae4d999eb340bc57f34af0fcddb7f0dc999312d53638d3bd7059e93620e8c4dc2cf01ee2b5e55ce88cde6fb7ff38ecd0597ff071c2ffa334606f873856add80578ef97f3a9f0fbd7013adad8c35fb3236d28d809392eed589c70f70e23e9aa23c37cd130878a65f6e13eb47577e53c26e54e5437b35dfcdf1a82d1b0a8a75b310703e878ac77352713800d5f9a3f23f05af328ba1ffdff64250f5ef12b147ffe4f8fab49ca35887ea3f1ef9fbd92974e0ec8fef35a3fb22fe8f38bdbe8c8d8ed62874b83e74e5a3f9e3733f3426f927f63174daca64809e3b8a7d4d9556ae175b8df820e02a61cffcc8595fd86bc7f33b3ef30b9d56a9abf81e70c01827d8bd31f0670ea6990e3c17658fcfb457f8f8e87d32cf4937a116373c1bb0a5d16f5b48b77d76a353b0abbda60dd718d1efa01926a1363b622c90d9266858eb692fa1de9f1ab3ed6dfc810d38b928565c36d4bb67bca71f87e2bd65fa7cd4065e00eb186c531403ee96ee2c1ef686bf4add6d5f28fbe42c9d54f68c4d36e9cad4f5d327d7afcfa4d6885cbf78e1fadb991abffc6cfc1377789a3851f241e667b67b323f5d3943fab1b8fefe7c3e27eeb08a31faa0ae70130c91eedfaba795b358fb0d88aba4e100df0fb8717b1d2cb7d5f717620f5072db7b2772dbba21b9f5ccdb6d9e49e9c7defa6bda7b4b3f769dbc1ff3c49fd7163865b127cfa400e3f732fd984be069a9f0da1f66b1d7007b30f2f77afc59ede16c16dfcf974d7de31fc4bcf8c816ae1c25fbaf3024f8de8759892bc1bea3c4bd1fd49a209b5cc4ff77cf092106349c76e4b96b85aaf92ebe33c95ace1d867f94e001c7d760276d2afa4112f1d6fbdb28f932cf75f9d3922be759edc61edff7cb48f9bc24e63ee57bf7296e22fa1ee0abd3fcd18359ec65efbb614f5a539ccfd5794a44cfa6f1fef898a1e0b9e0f21e41c33e407cd78f916fd39a631e55f63324ef879aebf782ebef05e6c00e70a4bbccfac4c5fb9b6fb78f03bd27cb3ef3f29eca0ec5e2453d27f9ed04bf33922de17c40dcbfd731befb032efe694f52f2daaeea7b8cb6cb8d50e60e45ff0727c37313b84445e3a164f6153ee072ff0aeff79d9e778d8ba55ff13f4efe81e0cf6933ae3e85ed839637410fe705565d96a7f199eef960f98381976429aa395167375f8babbc56755ce23096e56141e13ceb481e6e200f03e0c362303aa91ec3128f08e3cc17f5b375bee8ca14f02595bc4c15ce1d88154ec85ff77772e5bc40bf32ef67e5d84a28869f55d710bd53cf6fa4a7a5dbb97b0eae61e3d7b3f0c1f3de39323ee0be2a7f4f6a330cd2ab58dc2f033ca487bfd1dd4d12a035d8870ec98fe3df55e798c321b76a30fb99790759cf7d0f667ecbfa5290b51abd0fd8a2103f7f575f6be905e9653a2e05ae78114729d5affb2a8f50c9952d5c5fc07b5f349493afa9b7a041ce012cbbb572d138da87bc8ee629bf91803f95eabdcf3e1a16d573d2522abcdd3c070bf4a245af5cf767ba055e1d5aff03e67dd825b8a8e0172c8e9e714a21c72058a7a5a3631e278bc5db1761d2507bf2a96c008777c5b64e064325e7a1cef5efb81bbf7d75d5c26e15bc58f7517f0c7e6d8bee93ed8d710e066cd3a4db4fd97d806275eeb97fa6e6f93aefc931effb9daf65fdd2e2f87ccedfe07c69b4f52e648fe0fa8e8cb2bb8650de92eff2ac9a8e7a9b1cb08fcdc7eeb53acb0cb43409eb38eb9a25ef1b60f163ee853b756e24d67bc06526e2eb63f209a74adea08eab2fa1b9fa904c54cee9a877b0301726e0f1165c2897b9239665cced31bbfa5aba0906b338f71bc45c44f11ed77c8be4aef47fa87e92f4831a7fd59f9940af1dfb198b7f077cea68be12d05f6efab632a4f304f725e09ec0f874734d59e2e4b47b4a27ddfe6d0cb9d8aafd7ed1d6bcc49d436c62af9fc07db55b81adecefc46bcef077d57364650c475693e6bee2d60bfa7950ac08f9346a9f21ff16f935a4b62afb12ce47ce21c9f560f1d85ec03327ba07f817176f8079936aed3ec3156a9567e5669fe5c078a6577aefc904fdc7f032b2f7e6622903fb0e6299c8eb44b15f57cb87487167be22cfe3fbf0f4bfaafb9ba3b72fad759e98057619534f073d0d6c3d1dd4c3f9f2f93ecece21f1cb189b41ebb165cd5efb68f4df4473f2d1e8235b7e759ad33f63597ac146f7e9b3b90cf6b87cbee7b57cacdd884eb007b5f032d6de4e827bf797aebe21385d423bfe084f14df3bbd54e4ea84b9647959b3b8187193d734f2762ae7c835cf022c98e8ef0a8641225cefc12299a8b7ad0e39e2c51a7366ded684f7731d366269d5ed442bc7db7b50c7b1582f99786506781b2b23fa35667195664bf7fd120c80aff394fbac02fbb95b69f66e25537bc69df5fce6083827fdbd7d17e8d02abe7ccd9eb0efc43e4a45cf598d1ef8c076e9c2ee051b784359debff708f9cfcbbd1a0d0778cc430dd66f1d34f54d7058acb17d5fac97ee02721e34af2ceef5047e9e9cebff3c356af88da1b627f65706c3370cf9e3a13b2cf84da7d1e2e8d9c8ee171cc4a96b4449a86d32bf19ac4106bb8ba3db1d6d97ce621d343ba795bb586319efc468ddab630ec46bf59d5c3cef27bc908b5f36da79eef128ea155909eab45fc6acd7363fc9191c81bb496b5dfc226fc7d7e8bd581772738d1fd490bcda9f5cf63e4aa3ed126ae83c23965668beb20ee83edfd8d0f83bc599d770a01f3da37325b9d7358ab586c40e0fbb6b9cbbeb9e83e1f606fff60cf4eff7c4ed0ecb1e5152d3b6744677d02b5aa490bab1cdf2007952fa4cf7afb9f9feb767b6006b68be9393f9fdfdd7d44cc8bf835fb35d12cf77d26dde68fd85f4d9f47ecc3ef6f8dfb3de5186dae4eafc566a5a17d953cc8bde0fea7aaf93c3fa1c6cdb2d8273d19eb8c3cba759626305d9720f7938a7cfee434d42b2d25b3aed8bdf5cac0bbe5703c5215699e7d790bdec4861e36dbd72743476a893cbd724c83ac1707bce68dd4fcbe878303d2d51ec99f72cf198cfca47b323de0f746e87db17d229e0ead4859876ca64f0fcfe225e0aeefe802d995e83861d097aca6e7c7f892de99a2a09302debc60436fe957b7fa7cf8c7f8f17facc069da2cfccdb0bd6ace189e24fbaefbd8e9b5f9968dc6f5fd5e7373f9645bf7f457feecb9c6bf824e74af1406bb3dc67a2f01f3a12cfefa56f42b407ff05bf573060b9bd3c2c3bf197793e3c3d5b7981431dddffcb48b97bbdc83b71a3ebdd44f7797cde53c172a5c6e434f550743fc01ad794bbe73cc5e8c0f781fef582579d1af7cca7af63fd13e45f84227932f973b27adc4d86d3a8f20cf68c47dd7b56e153b3bde0540c15b2b5bcac9f3858fc991a100708d6b256e71458c7a0635c5df4def7a5e3c535efcbd4d40d295e7bf0fb8ce8ef692f39fadb766ebbc97e974e9e3046c7fbe5698c8ede45780f14a3533549e83dab7e5ae3b59ea16fee53819e6be31e773c4774bf90f43f87833783fae4fcec9770cb56f5ef31d84645be05c588d57c3b8a35573837ccc952a8296638005ed6da7572b66dc997801b36bf16e79d0734a66647023cba1a9d61523af7993c94fa5928bfb56bf32836f6307fef9f29ae474ee6ccb8b91e97ace492eb48817c4ea0d788896509c6d74e66b8e9053626e7b22131e94bef53979b67f83fa6bd733227bc23d535370f80e3fa7b659cfee41c6542d9a0b0e885faf9451fc4dbb785fafd9538cc6bb4f1bc80ce80783eb29af63668ea19cf09feaf786b8bde0af3409de53f7a36c69979093b90eda97e013f1062eed653fc8fa0e4dfaeeea5e358702630d6a05603fb75bc2f5e62161ede6f15fe94dbd4243ecf435c1b62e77aefb96e627e0f79affb99aaa9ff571cc3b769afc8a54968ccc579eae13da5f37f41afcf621c3e582beade9c8c50efc2d987efe9fdd7388c795b3012da825cc753f38efb0545f3013575a0f3dbfeeefbfc671e174f407d7eed1e26b1f779e5143d4bb769b7dd2ab0c17bfdcb279c6971fc01d7601fa377dcc0fe8e480d8c20eff1a46726f2b7cf72188b8bdf1c254816962ee859920f2ef70335de53d845ef0039bd4dd8158f735c5cff5eca0dd425bd333cad907be82ef7feaea54c07e91bf07cc3df807f8c7bcef7f2e6b3bb81b3ab8f5de7953ea1de4b3d5a9a2a4df64ab642df692acc697e0e53ae552943600b903fc6c5defa556fd857dfb1a52a8f2183c9305894b8495a7cf16c52d7966d7cd1f3b07fcec94512c865cfde337cfda0f77ef9a46b9190bc0d04ef50d870ce77467b7a331e2caad86c91bfa5f05bcdfe232e1924f3f959fdd133407e4a6cd65ebff0a7c7c88f47faca48a31a9b5bd8e8da7a34bcd7337a1c746d396feb6b65f53621fa73a2e19a12eeb7dde86f123371fee7b41bfd82985834df684d1b50fb2fb2434fb064a78f3088c18e71b120b20f6efa1652eb50be2b83c39bdb8d120723979dc1e80a18b6b0cfbdcdb2a90397ecb8c473ef7d307de16b85d679e386f5cf98d17b72a95f0e501775f934e9cfa23f9e71a4c6d96e4f5c4aae8123ea859e4ded61cfe629c8cf778b35011da82d719fc27165107d777fe13a824517207d662cf7fe1dfd3f66cf8630a75536ef49b7d1d6bba2ffd7705ddfb9b9ef6e12584bf39ccd7beffbd176535e03e7a8c3bfa6c0c13055a8f52dfa20f3cf82bd023d1c632d02f9a6d6ed4aeebb61eeabbde1fb52f79816e776faa5c8750af6adbf5732df514f2b97e79ba5d696e51b2ce406734917f88f2ef48cc563b1cddc004f5f7d3e87d813555a3aad8c914583913b4a0fb45b8ccc899ffb424eb586e7e9f07e2bf2233d5574ef929fc9eec4c1a113fb7b3d5936edd3b2d27bcde2ff20db56627859b8de650a3d469a9d05c8cfd4e25de8a41bb48727421d287cd7f3ca697bb57687f4a5fb4e4cebd5cb27e58b4d0e9150bffb4e1ce171d6c7c2488f52d709edf45868a3857b969b3fc03215e9481aabbcf75e7f1dad4b7b944dac95a792bf5d24872b538ec77beb8fbf4d2ed41e4d90ce9837971773af7e7c6cd7682c95fb46ff78c6097d5ed599fff8dbe8ba12cdd17e76f29bb3386892fae6015fff57ad6baddabc30e7022ccec0ada4ec4db64e9e2d55b025f3ba9b215777b332e5c624923b8eaa380b2bb5758cb3007159a18bab63ee9258c83c2773e78de51acbfd565c6b749d686d14bb28f079afe02f7874df746c9e8ec14ebeb31c63d847189b29e43e56a69cc1bd554909b2f4826299b9bb207a36c7255a5c96f83ce51eaaf83c89da2fc947b6c9007b9de74a03599c6b80b99dccdd61fe3ea5dc90f75ae67a7f0035b23bc827bb3389db3bd499e0783054425ae7189b725f1998f36eac454ab045efd50929d945e3485d5396913f20dadfd5f7adef2778e26fb0f103b2a1f1bcd7ff9bb36dc8873994b2cfca42f446ed49e67d0beebae7baf9bc7437cbe7ba506d31ba908e290e6ba12e847c06c905bce2e30be544acbf5fe38364f4d23bd307827df477ca6778bf0d4d49f177cae583f2e9f9df88fdfa82bb98b3db6cad59d07ba7731fe51c96765c091fc536b27e0d04ef2c9ccf3c1e81bdfd0efb9a929752ef77619edfbe6a7fdb4f281c71feb7627fe284ec7435d610d4b4669f946d5c89f4b1288ec5ef74226357960d555a36d685fd1b1a1b8e1fd0e996b52ce1a082b12d9c73c009789a175932b176bbcde445c4f28b7b2dfaeac96fb40f66c3db07d53eeb2a9f341d8334174f629088bebecd5dcfda67ba865764dbaf8f6c7b70cf31f5666970581c836d928d1b6ffff859745a9ad26d32b02097ed6dd7b0bfd03b416c71bf29d32e5b53a2bba30cc52035750d576fefdd3d77b1f60ea3ab6f747e79eee83a71f2bc5c07e40dfac4703d20f4212c91ef71185e832c95e78ef58f9f29771aab98e41e2f13d73aad8cf346ec77cdb87ab0ff9c6f47f08c7145c6a9fce4732e8217f39354def1f20935f6eb132d3b73c7aaf8bd6bc5df56727f80cb2e8e9bca1a4c2f5b3ecb797ccb66de6ef30692ade3d1335be9d7206d007ee55efdc018d6c8c65bca1438adc4f92e8b9c03d4d926b73b9a1a565bb564dd30acf660dc855a197aaffd71bb43ba1f11ef37f9b69db0d7a6c26b0d7cedd8be6d85b9227736f49ba3e473af5c42edc53c9959c993097de47a3edc7f9b8ba5fcfb4dd8a57c120bce1821767b2557f55a4dd6239c889a71d8d86f83dca5b189eb6246a12ce3f8b3e36bcac5abaf25cdcf48e8bc5d6bcee8d4b3342ecf69906c9c19fd0e9808dfd4e19a2db233c7a53b3b2e1a4a54ef972c2f1ec126b735658aecd1621f4b74ce0dd9948fa6fe3937a7e9f8f0caf5519977abe0d385ddf893d84d29407635db48f35deb3edd422ebe31d9135c165bbf9a689ea5511232b169bbc5d429c72d657aefff136edb11c1acb17c29bdfafbb0bb724b7e2d3c67d1c9b3db2c06acd64adc881da3bf6bfd35bd0f1fe56f9ff796129c257eefbd8211aee7b1c779e588fb742bbdf8c48ee1187adcb050ec7c9d6e6f103bc3df06fa3b562683f8f263eca2fd229b9a413635a7b2b75ba453677a9b0ea45389a5a2c7d013622319ec407edf73a7474f6b9d3e9d562e135f755800c061d9b72fe1ae4f6ab78ef99e943c47bee94ebb31dd915edab21ffe1aeeedccd7d49bd5b00ff919257a66715edff4e2609f6e0275167bf7a192e7fbbeccf31797bfc9af15e335d79f759af499e8e2bfaa59397178b8b1000f57063cd883e792dc586e73bb1baa374041f1c969e9764ccf09528cdb045c8b50fb91d74a8db5a86ede8afab9e2f3b2c7945d03a3666df0992537e7dfa985747f82b9af9698fb3e8f1543d7c755b12290ddcb789e70fbe2093e0b77d5cf665714cb7c0e780c8afcf71f0f393db99a826aed4126a83db8173e2579a7907f9fb8fa2ea231af5ce9b72fe4bf606546c8cd6250f16d5ec38764dc80b377f6f3ee29054c3a9e7fe8eabb1d39d4d0b352ee9c89f40202c6578e01c9d413366ca8b1623f6b13fed188d637480693b0bbc926da5b32d15a67cf9498338f15f444c1180a4cdb928334ef456431b65606a5b70c014f248c79aab0f6707df48cf3656cbc6548a7cc07d3e28cb18885ec59ec6b708e025840419626d03ba5b51e5f3b989ea01f5338d77ccfcb13dcaa38cc3a9de030da7c96bce0b1bf5f9c8bf9c67d2c7fa63c6e7a3c37dfcb9ec4422ecf97792933e85ebffd2dd438f99e71fae356e4c68f19ac5265a2c9c23c51e8eab199eb2c2e1f0c35cd257e0696b779aeb7f27e377faf9eca7ab899b4744712b387baa9847cd7f2bb45fe792c9c6f88f7e26acf57898bd388235ce3c9bdd3bd6e2f08dec32c64b6aa03282c0a7fbf2058b9dcb3904d51fd8317fb9a72e37c48d84720cbd02b52dcefb0e47b2c71ad1d3b066cf38475be9ed38e283d86ee99fb04e45df9ba3ccf6937be8cf42cca43ea4e3b12f5138bfb4adb51dd7d2c90e9027be859cd357ecfc183fd4674edb3312d1b2806b45bf5f78ab99e866a7c88644af45e85aeb00a1f21af11b82c9d5b8dce4d41577e56ce78f375768d7453f92cc6d8efadb2ee1270df8bbfb38287c245fe537f3f3a0ccfab8a1ef6b376e153e4d8db6137cd310641afc2d90ded331aedc4dfc7a497253a31df6df3ef2c38af193a6f55bb40f3c15e27073df6dd8eea1f96d9983f13cf7951d918a3bb91c60d2b99201f4a5b73fa7e659c33a2efa5b936c56722da9ad7e5e2f5416bb2236b72c4f66bfd166c8b7cad4007e6783bed0df05e6860178e982f00cde3f40d7316466fabeecbf7d9615cba143d1fdde7b4eaa5d968ebbda65bb529a9555d9f826d7a1d8bf5d177fa0685fbf729c6ad53f40d36447d83e1fe5ff40d0e7ed4f7d2f00fd2093d97f0bf6d564edb04bd027dcd628c933c2f32eda6170adfe652edc707ce3a4d29fb4ad173705fff71e9c417a437b14f0758250c2ec9ca40b262292b576e0217a7b189e7834511eb4c4ca626a3e143ad39e4bdf179a9d6423136fa9ce0b9c0bba9fe5e68dba8fae896e299e74be55968bf209f80e96b08d5f3657c57c3b1794a902f817dbfd65f73971d275ddf467d4efb3cc9dcb6814b65e9e819ee8d83e79d8a67c0d9aef5676a9e337a6c70eea29eb389a9866c9db9ee07b1947c0d521bf35ba851b0c77d254e737846f11ffa9d6b000f7e82eb854f7fe89ef489a962b922b8a168cdfec39a6aca86549e01b5d3a06f5fe17661b02a5ead9bcd3918e17ce2b1fc03769e7f976e1f8db7b7604bf5399b1823a6b053782f9c01ff7830f27d593a05f1f93ac6b87ec947232235fd531a7f0a6a26d118424d413a0ffbbd7c8f4e3d2607c5c53006fca2f4447c27c0d29a22df57b38a39fb68b4fe8cb33846f10a9255e02f070ec6f812aa397624cdb365e77aab25d25b9f7c9d44ae8febf04594c940d8e70cd77bea4c5e1e48ed27af4f45bffd8eee6efd44777f6a85ee5685bd443446a40439b5e7f5f0e67f56eb7ea77bd2e8735190992ef4d8aaa27e308bc2b128fba594ac367628df4ffa3252ee9eafe65b3e35e8fbe07effca5ae8a51d1d3dc57b06be13eb6f9e4b0c38d8183e9632e692affe5ee9ad3435f10f534a5714be2ea93587fd7ea7f03313af3fbb86300743655ac6411722d725566793cb075de838723a906bf1a6c71843add86f734bd9e2dac71c27c93a865dc0faa2e716e9869ddf68dfc3c1488673af9d1c97dcc9e7b2a7311f475f25bd73aff0115a82b801e651f21bed98e8d6073dc5a2b99f2913e17d5fe8f529edd881f4bf8974cb91e9bb72600f915eb510b876aa18dda467eaa5586f05d76d04efa0461e8f8dc962f6b13609ce6b6bf037249e97fc257c3fe47321bd31a2f0fc68f9fd33ce28ec57fcce687f0376548edb8de21ccf49af8166a1b1943d25b172f61bed6b3efedc371c035e7f753e9eda8b87fb28ec7d1bef90c6322c71c98ce8b7a06e2fd70347913cd0315c9d8c0b725b1f056707c6dc1df98705f8bb853c3acac597727fe8e9fbb0fe6bb9c634264f827b5672aeb30df1b9ec4bb8b74f7eb313031f4105077e5583bd19ece4a4c2e39de5b9827137fa2bef39f5ba6bdcefb815e6cb8ec136952899a17520237f41c33e20bb065ccd9a72015fa75213fe55bf3e2fe5ff457bfd690f22e63ba9d79ddb877cc86b73df5626fd427f479ee325fede5e047be586313dedfb18625fa83538ea4e2b99f4db7c9d43a3fc7b88f6a27b962a9ca3d45c460c16017736a452b8038d48f1e87c58176a1f2eaeace0b99295afb90bb2fb239b24d4050c07b0c5adcbe373b4c54f784f8bbccf43ee35b376bef8b3345b709616432f45f57cede4dfe56aceee083977a7c05cc2f9390a1fcf6dce125cb33d8b83e68ceb031e6b6f277f9bde2703386bfebfe250f84272bb60b13ed6e83d589fb98c7b0b7f14ce9628fe1059b517966e2cacb6e5ca33559764d58c7593c993f7679b409d499f4e1aa3b86621a90b571ecd6dabdd2faf4bae10e30d62c80f4fa2646e58ed2f2b526c332af1357c279602a8299113e4eb4e228aafd98a2d2bb2bfcc7e3c33ec058d8f6e225fc4d76c73e5e8b1d79336d479e57de5c8375f8bf79f16a93bdab1f7b5a47866f5d3911ec75f7aa4f6ecbe62fc97f1c3837d8efc00bdc811a8459d1bd23d2ff7c69698812ff430d3b569aa70fd0143981a9feaeff5ded2ede0b5333609c33dfac2b9f8bfe0443d2d45e7e2cfe66e509e6b07e49c60d1506f56536ffb9a75f433e6fdc67e23bee4df05ec77b395ab6750e7e4c4d258eb43ce60b96f299fd2ac63a98a61caf6476d5fae91f61676e74b8fd28efde41a0bed337ba4d6f39633fba59607dd889491192b33c3d60dbd8ecfdc48c7a6147fb8d248b5237bfa0a57ba65db1d5d1d75cc18ed177b605af687ad4e6bc741f1dae3b1d8cad4b0e4d18379a074ce6c64da9da961799e2b799d85accfad07b1d0428c37caeaa5a7f10f7b3d5a1741ed5e45cfbc806b2fcf12e8fdb267098a9d44f7857c806b6fbcc168e31fca7cc2037f3c15c9fddc5d9c687cff1afdbe1f953ef03f94ec2b681e89fc7475db53cd2ee5bb08c777bb51f5e75fabbd92f831996f6b76c9753cd6db569d8ecf7bdfb6143e90f0fdc646740a7bb80ffb990d9b1a540c458d6b684af47be2fdfbc2fdd06f2899d66d4bed5b91fa61ab8aa95be14cb7da9695c5caa4cfe1221e2a3ae679fc4a8db74e5e0c7aae6bcf9b599b5b2b7b8df81c6869e21de2dafeb3d22fe5af0d7bb7dbfcfefe2b1c4827e15e546789ef764e2bc76beb7b95cf7389f66393ff8d68fcde4b7b47b8378532563747151b523b3f5ee5bada39e9cb493818c5a6169f570fe214e19e11dd136a0feaef498fb1ea633d908b8bd74863ab114755bc2ffa7e02bd28bce7776242f19c3da909ebcf2ee4b9db1063d2f6cb5a653b0bf6a2fc2a5bd36af5a3eb74ab48540f513ac9b12b1b0af2cb70cda536ba4c22ca07e83e8e37a7d86fc0beb1e44dff7fd4bd599baa3ab736fc839e830536b38ac3b201155b7a3813a82a1450e6b4037ffd7765244080a0d67cd67ef7fe0ed6b5662942484646467bdf1be3596de68c7e8686ce5f3d7cc263395a92df546c8527bf112bbf21bafac5b1e1df6c42c354f4db8b637b6a533cb94fd0b84fcd2f78f27ba3390e96fdff88ab73d7bba1f57c5623bbe9f4d09ae735b21a23665ee0bf95b5eccad56dd421467745324e8e057babf69d087b54abe0a4f4003b65c309861629a21e2e171ab79c1b5ca429a55f94b887018febfe909e4adff39e29bf83ecdb68a51aed76a63236168aa13cb057cfa2627cb4fe5e8b8ca5c50f749d17748d1746ead818a9f7761b4f6fe883624ee03a16fe16e642ade1837522c09dc6382750d3726df92eb2d4f4def2dd85e2cb0fa60517ca72e476fa7bdb7222e057cfd2bbacdaf15415739cfebbde0902574aaf7e067589a4ceafa8c740f6e2d136d393dbf5351bfc562324f7e2485da430171b3646e89869e423fd2b89275712ba9b8e70b13b62676b812cd6f55219b79c6c84859a167d3ab84ea01f7d4e9495dbe98fc97dc3027fa6c23b003c0710a3d462e152c8688e4d4f7853a6daf8cddd33e5aecc8d6665bde7b4c4ea4f3c4e895cc9e0301774ce9398b2f7cd30a46ddbe2b78ea9b88ec1093ab6e1406ee7f09c8fd356e38205b273477cb6eef47e39ff837351c93daba9c6f42f9aebd76f97ed4a3f0c15e7ade882825f83c6c3b4f179bdae6024edec18e98db267d7c07d0a78ad8e8e0a3298ac25a60c3265b765ec272fef3792de19b553fc455605343f2b43e7bf7451d12c5e595bdc72aae8cbb90cdc311cf81eee9dabf2cd4c1682bb3fdfd752f8e66527c1cd22c0096aee2fef58c5d9afecefbba5a6742d58b0a0f63bd25f2c7d94af591bb7671503a3ac9daaae417e7d48d75f62fc10bd8a09c592a1d23e6fe23d95f89dc5faea6ee756c1e1068cd351d5af63ca0ac6d81a696361a4f2fe4ce7f4a4edbca2f921a8bc169255e86d28fb1c6b35c545dc9743f31fbadd73b937c9fd0b7dcaa1736619f8718463f7c348f03b41e202f745d8f02fec92670af7af0d99320d354c90ef19f7af6e58e81346ad28239708bc15fafbe3772e743fb2a30b1d63760c1fed575a67adb22892b353a53ee4f13ef45a6beb5fc1639125e0a2b8c85acad457f5397c21ffb64363a8f173b1cf03ccd1d5a6cb83b5c6a3f18c153d158db11ecf0e9b1a474bfd2cafe0cb5f7c49a8e0e2e4f2295bccbdfd7a3d60733d5e89db6bee813cb775ff42bd5c59d3181bdda9b8041f667e287d653867d4b4ebeefa332d8cf4c776ecc78d5c9bcfe3735f61e25fe621d8762f5edb373443d818e2f2cb180b5f1b2e1037dce9dfe020d7dc1d1a3bc11219a7adf8e1de4459203ba1869df9e54d6691dd89ee80bf6a0aa163deeab521e7add94f5c333a63ee39a3a7947816749dc90dc96f814f3eee23ff77edeef9b70d27acf5509969a1a82b8630d0a3d9c03404dd3406adb6f397765efc4bd8e2f0dec0b348e45b93900fda3e2624ff1aab575e1c648eb94c008b32e4af48ffb6d72a31aeb514613e6ef072068ea46c187ca5d5be5bccad58e2a046c2cd8b8dfdd6823ec7a5db512277d83fdbe619c908aca9a30651c9e318ddf5d8087db31f428da7a43772d8657e6f8074c63de7eb831e8ae6b831de178bd7a0ed1dd93d2a501b2f9b25ff91bbe76eab4eefdd1f16f99dbc5fa6c004d627b80616e934821f50c119a67e7b5e68e7640df70ccf7395aabf100750ebba3538a42f1af2b6b596aa632ac055cfe28c049ca9869c118e45ed963238da22ba7780cc31e6bb69bb8fca5530392b3ddf687db557f6a9c15a13ce2db99b5b7423aea7b63a7a527077e9554ced362c782f837ad0f219d937738e09ee90cac22b787d7e07b59ec31c27913dd78b6158a97729ee8df9a2eafa8ce64fc33c4814c6fc4ff611707e36d701e7d8d0da590653c73e88615eb6269fb806608e469f630aff80ad6b7e927b6fd1bf8f6b5234096a4a2ef370b9d6f8d958d5fb03636c7c6d8c99ba31a22f438c368afa384e58c51efba8618f45cf6b56d07b8f854b6e3beb0c9e90b9a85cd6d679a31a82aeeabca8f3ef596b1c471ccc2c4e301563f6b568cbc1a929bad7da080dd5bab7c78c98f1a8f61c25ed5bb4c7914261d57a0f8b7bd3ff9bde0e71f637b69c0ab61cae2b1f3ba69f39268bf7b38c2faf461fbffd21c1148e06b32f3555dd5dffe2766767db4c1bfc3905dfede8ccadc3226efd265b9bf3da985dd03d2c5e9969baa159f76979ed883b135f6fa36aa7c41f9e04344e7d1c7d19e368a918cbafc59ed2b713fc1ed8ff6b9c75c8af4e9f62d63cc613a9e15e6e009706b0c79ef71ffcb426e8323f7c9f1db5df9b4fa682bbebf7e7a67ef9d41ad84f01d23d8b5d90e5b8ca680eb6d67260778d067f4aeedb53676f0fee3b4cb3b585de878fe607baa63ffc2d4bbdcbe710707912b93bc57fe3eb92f57e80e52e8eee5a67c6f9d69219dba4797fe9f7025cc5da7b6dd5e311f07d605ce11f6f077fe3ebd4f07d41d6795b70a1ce064dbcd2e6bb52b201b121e89541f217e39834a99f6be0ce610eb0e919c732d1f5fdab17f3812b45bf1c6370f53a11b7b59c665e139f3fef0b5afe471f48eeffb0e4de1ff59af2bdb3d13d84c590602f119f7dd5ddfc87758fb63d55c4480023976fd933c6d0b194ae631af5bac1fa1aa2fd8e633c805fb301fcaedafc56b81cd1778e14c5ce2e4848ad19ba0770313ee49cc4f587f97d8eee9ee7d692fe8fa3f2dceab0393b6af89f424740bf604f58ec924237cdcd5e3247e71ce846e5aac762b835c50ba35681b2dba8dfdfc7bd5cded0996a203db07fc0834a726f5e27bac8927ef62bfd31bdff2c46027aef91c61b2b636ca81b2e5d6fb8b3a51a4b7115f7de8befa9b3043d1bce0d8bbd5679fcb499f3243cc539e7704dd6fd6178f2f6b5b5947ac9dca4630fd3f7b5ca17f3b1ee4eff34757092517afd1f6f07f7ac9dd73338c76b72f9c4af9efe2ed6d6e24e86849fabf18ea847efd9e358c1805a43ead9c436583ec97f9632f58e7c63bd6dcd9e8c01c71c19bf2bee59aef3e3b990446e4edb21643e402e9ed86824b7b6d0c6d14ad145f5855885eaeed0f848ac421c54f4c174b2a1314bceb6158c7c6bd6718ca22e41f40eb3abb7e76e658c15d98569e48fb1fce99611b8078577b5065ec9c9ed420d92e698fe02fb854151bb41d749a2ef597112a725e6d1f0c11bb9c919ef4483c08bc573939b2d4d1af198fb4703ab65517f9fee226bfcae631c72ce111a23c86bc30e22d88cacdf14df317ee775a2d0d1e83500de9700ad4d197f36c8d90931ebffb66ef9ed51acca29d76ee79bcec6b666816b2d042a3f06760f7a0fef4071d8c5d1c9950c6e83f59ee29be2c59f18e75a0d04ee5368a9112db086dabed77ac26a68c7a41fa15263296b9c40d787913a053a770798c0c82f46f7ccf1668bda216b73d174d1b6b8e542e397332df4a17ec0e252518b0469a32f758d2f6b40090e0c60a468664ff8e404498996225dbb65f14b511f8beac650661ad72fea00daf3dbd14ae7a2b16208ba61cc5616e85045344541d342716371ca4ce79581162ec5a7358c6a3a328c99a918a04b75c508be74ae3fd04561ac1a4b7da3f7478a51bc57bb2ff47c4e5a7ecb0b2bbec17d193812ce6716ebcac22babd4932f6e658c6791527b36a53ecf2a7b99e25684fd3a8498402d9e52f6ec2c68dd50d6f895b94fb27f29bc2c4abf79e5deed2e1347d2593aaea90b86d57e9885fa648c944e5dec7e3cc6f4afc648d53b7a778ab7849aeb366c0b92cb6bcf1f97fa997e06f5ef29e4f95d5ca35e3d57cbda865c7f0a6b7316cdc3545422e5fd4bea818fd776ae17581350c7af44e06fc6fa450fa3892a6ede308f6e2fc7d846323b723b29e0c6dad6f4e8a8e1af6d8e9b0dfc8402ef4fa01657075c71a9877b52cbdfcfdc43fd7be4a730f707e4bdf2dac0e75cef0af93c2cf4b223f5de5e908fcb5ccae76cc394876d81a95e62e1151c8325d648ec402c3fb72b36477797ee1cb5afaaba3f35868cba0a35cde492eb3f025c4be0895a080ef09e80cf1e14fcce9612b8fbe9d1cbd2abac9def7e27c218ce792ef960c4ba2466b6c9df5975daf2304c3e3bcbc0ebe8df9b4eafd24b926378e35ee892ab4f9f6c728e9313b58ed2d64c4f8ea50cbc1878b70299a3cfb73498ebd5bf6bf96cd63c537cb3cd31783b8c596f1f66916d9edeec8e7877d4c108d9a5541f40c3de2ae2f184f3e4bf7946d947003e0a5ff2dfe8974f76ad35b5d661ee1fecddeee268a3f954fbfd2a77776efb503c036a92e34527ee2e080a792979e0921c2fd757fbbd397ecfcba77ae631cee9a2e047c3efd7efc95d1c4321bc1ce8777db9c48e62ccddede1bcd919e0146efe95bc1ad824794cbd19fb673d078d43c375b7600b3dad5753c737e012c57a9af30ed19b7be7ff54f0e8f0391c616e051d731dec0053fd8279116ec7ad761316a3f77415d73927c22b5df7b155c3647d60d8ed38bf51ed83c17556688ca96cf17bdb52f6dbe1434e2e5b2eb9e6b955a7e4485d0c6f37881ba9e3f4cb9afec398639c3f1b0657594b283d8ec7e298f9d892ebd6ec1df3faa2767d53a9913ecaedba3dd71f23b73bbb380d4e9b12332b8fe3fc583f12ecaccf21c4f04e68bfcc0fe119627852812198c7234ff3899eac3a61795e96baea1f5bbb0976063c487fd61ae5e7abe12f5bebe5df9d6bdf9d1ecc37953f45f35df89b990d3831e3939da5107b7ab4ef8043953dbf6bdf52e04c6f8d01d1b665879c5da30fcccbd6e495a06c21cccfc4d0dfbf75e4e3738ea47306ddcf886ce5cdc6980d8c71b4a67d08465f42e31d9bf622e1a0227b97e1a3613c03aa87431ec2ba223d4e7ab3f89921cec435c5134ceb0fcaae4be7cd3962d887acb3bdb07b18fb84ea1d51bfa176b0d11f34a2edaa59e4c7c609dea9f4e3727cff5b738ce364b50b22dabe6be874f6da17f286e644c97dd98e90b9b1913d9917cc13c9949794c219a1cfb6667ca47d7c63e0e4801aa226360fce211bcbd437c58cc1c3fee06c2b39533f878c9a71c899847f58f6cac3f1bf76dff37f775ffefff57d7f300f984b492f73f4cc739bee036bc5e7648c37e7226ebbaf124799d755d898bb959eab866eaeefaf14f328b2e40ececae05f7c4eca7e4e74d95a0af4ff3c9a2f1c3fa7e3021bda8fa4635ad8df337b2ff9dec0f93c79eeef54ef955e587b9ea5ab5a6d3ab02394c8217605e8bfe65946307a8b7ee86a4c02385cdf2bf91e6f97d6afb90136019573d8a0b3a963446e98d7051b61050febfe011c08b57be13554dfb3b9348667d23c88b2f4fe077aa0714e8ace411f6df55ce40064c0f90c7fbbbb74bf367b6737cff160df82f607a06f733be23364ff97d72daf5e16f0b29aded6d614f9022739a4723d133d994b7661276e87297aff03f1674217f2b3763297368293b1b977e411b251c2d3a7c61fe607cc11b1318147604de4f9b8506f673b0bdfda63149b7fe40767bf337c6843f56535fcf5e8f79f8f6db0b0c53e6d8f1534637475d92b6228dad8900ce41bec38903fcc49d3efcd81130e7882ee841f0eb829727e205babf203b9597295bb8bdf446e3239eefd763321984b37c1db2517f9b0b8dada3921bc13f8399027bf9d308769bfbfce9f897cc2dc3f1cc133814bc31da6c4870cf371f6e5aef1cc7647beff2b767b82eb1836173af6b4ceb874b51f977c4858b6239c031dd7fa1682fbbcfb2437a39e2e4bc2c36ab36ab83a651da0aff1f779677c7247dc8df28fdfdc517a2f71a5be05473d5fe5f8f66667fd1ed41b0ccf59be8f70bfe237f2af81bf169d8ddeaee2ab1f1f9fb78b642eddfeac2d83e93b231956cdfe0f6cf834a1fa1e1abcc44c3bba8c4995b624c5ad56b3bdd8b61db5c75c296ce34b4e5e380791bcb6712a27ab4e89d751d4f4035e94987971d9d3e3e8582ec0c7ff1ff06f54bdafa9ba225abc62e861ffcb080dd5181bb6c52f5710871a479a3116571bce28f21cb2f563ffe68dd44fd075b93fb6e19fe427ffb318d662a8e3c5517eedb7bfd9e3eef764cafe006eb5ecb5bc937c1f27f3e18bd71ed8ebfaa99ea93c41bf2fabef656c14ea41a38bc3c31ae03aaa71ce95754a299c34968c16357fdba26efafbc57b274c7b12e275544ee173185e5f9cfb3f68cffdf53aa9393f12bd4ee18fd6e971ac302cb0755ed8f3f7c5e3796fb1c579e6b98d31b98cd1d69aed993802159cd905e6fee9b26cd4cde5f3f1b81ec76f461fa74a5dcf904b5ff77f5ff39b36b1d171ccb425def9d8efc036eaa3b309737db29e0df9de664f41d35f446762897f197c8e97bc77704aff654c3003accd6f79343ed3b1f167b9f4f97dcaf43989fdba70778c776be9b3a06ab99bdfb1e6886041b87174f64dde74ac19e758c1b8c2251b0d2ef37069e89123be94bb6e8fe3d1f9b6f67a6d29a4fcb2460cbb25bfdbf2ef5df53c27d8a095f35c3b18677918fe67ad4de9ba821fc6e0303ed2d7845967f17a0c2f0bb8ff26cef5d2998c6d828257f85f8e8dbd941b6b897b95baa25133cd783faa2702f76436640e70316de015f58b7efb0dbb46b989adf3c01e6bd1252f639634dffd151eabc1e54b4d97eeaebf564247530c1a0b43d0146330d0435157756155eec587f56997c5e82325f79c69d172a68c8d2f4334542d7aa9bee461dddc7cff81b12fccde65c31baa111a2fd9974ffa105347e53a64cccb8d117c213f4ce7a295c2438dce9736365e7dffefd568f0bc4f02c9d5982f6c26456ae510a3ce0baaf68bd5e356ab4ba363eae4bbd69af8790343bfe47165f7d36d5a9e63082baec119897c1612f350706d61b3b6bbe6abd17ca23ac615a338f32b7c57c0dd70bbcda5b0d24beea8500f4b6c101fc7e1383f727701d86745afc0e8262c8a1a8dc23f24d803f84c96270ad4cd79bb2267d188816cba46e6c7fa11b86326d31c77e5bab6a66c0c679a737267c77a7753727eabc15556d3eb979a8e5bb9758c2ab6dbe660c44e6c64641c8f6b8773eed0124f4b773b69e4c5559f8fd6af98e702ad53af1e973efac35bb018963520b55e62f4fd790b7c0a7c56f66870e9aad3c3f69208ef50e26765416676041ff814322eb554a8135928baa3e3da3f6c537a872555a7f29dd0310cefce5fe7daf4cdbb0317c27dae7209e61ba9d5950d83ccec2efdf9707ccbb1255bdf31af7391c68c7704ce347e6d8e2b7c1f2ee103021c2b83c6d81441a66ce3f457efe78eb86cd5b9bdaf2dfdcd1d9efec8261e33e005503167db389f2c15ad4f2490f75fd856f5be73a9d73cfbc66c8e7c24f3709e7233de899dc80bf11e79d62742703f8b5e7143124e0eb265909dcfb2fdb573bdde0af318a97c92eb4d6f0f7df825c62a60b484c95c7a176a9c1d97961cc1d18bce57e05199cc3067a61ad2d801f7b5367ef3ee37c1bd9fef14ef47b0d6c6c15ae3efab0e7bdebd08703c02d9e22f0c9fa57d5fe33ecf21c1106bd7970586ffcff732d2950cf9bd60be99b0ca57a3b6c96f04f3b5adcb2f8d8722bd0b8bfdf9ba1ef1d9aaf30efc2358b601d786e2088d803765aa7d00ce39ce6d88777a3e81c338afbd880d820bfb71dc1a8407478a80fb6695f3b218cb4b059b60b239e5b1530abf16c9465bfee8e8f1e7c052d3bbd91903774e11b71e566404edf9f3627fe6a1d7b9ab9fe76acb7b4e96ae6ffcdd7b12be4e38aff1353f9029c251dd7636c8d6bf5c2b17eb17bb3b8b00dba2136576278de4c92659756699638a7f568ddf2d15431755454b9ab96ae42f5a3c4b1f15fcb40fde8b8e0fd2be773497f4f7c5d08ea716b3eea8819d8adeb76e7f0036f213dba46e9314bab06a935c728c818a5d52f4cc3fb64bb6652f3efdbe157fb1819338fcaee665461f8d5ad02a06a352d54948d74ea68009469e5d1f2b5e9baa5d82cfc94a7f606b1d5b439ec18e22f723b219812fff1c6f939a8b254b96ca33c450aeae6464444e1ef595b5fae50c4c53c07651583e9a08bc236d7a1e7a1ee9983edd0fe3eed2aabceca2bacf59df2358cf83ac7ddfd0f9ea52bf51c00e106e9f7a95b715f66ecd767448de4fe9181759ead1bc6c7539009b822107113eab43b67dcc9caf12b7ea893f51ed8b2598dacc355699b5a830e70ec503fcff7b9b36b75b18e7227a0f5fe38317df23c03ea3e8d6cec413198bb4b566d533ad6213dc904d705a8f787ed5b9219be0c2b60944d715f159f995dbb6f5b3b2754f11bddac4bcac61180d2e8fe29bcc5eb22ce5d8cffd416f3ffb2c7bd6db3f760ff8b9ac3dcae00629e4a6c0b2c971d04a8c961ac64378ca31601cb58601631aae1b71656e8060c030f8e2066d7cfc5677c9dbb19fd9d6e0d8e8c9839a9166df9bddf10312b70efcd1534eb42faf6bec9cee2cf0a4e08eb1389ccbda3a8f1d6bc06d4bd969ef45e244260e9bde55023b9e611ea21cf39c819bb2d01e7025d03976365f3fbcbf76d854b9accdd9c18bc5db7682ce7105d9f6f84c01bf06fa000927cfa9f4f1cddec5255c41f3c954d8d6b997d5ef64d5dd5c3eb534cb6b93dd283cca56faee0ffbfdf501c72d3453ec99ea7752c4a131d6a4e64be2ce8e8d9a8f9c26f85e0ab287f6be64848aa91c0867558563d9b1787406dd1f6038205b4695a5063ffdcc1f86f12caef14d98d125f71ddd8efdbdc9ecb81ed3aad585ff025ef9d28ebf32382cee0ccefc80c199cfafc99908efab7e272cfe7319edaf11da5fb7775fadf82027e45b5670773ac6617ef8b8ad2d03f460edf3143e1fc278e8fa2a5cc7a2f56b9f8d2f9f955e28740fa899cdbc8e7e94d55b20137c04d7147b959aa18cd4cbd43f53fb3d594baff343f0fe55fd2ef1b8e0eac5d12fb7d3e76cf30632e566fdfeba79dffed704dd23fc4ffdfde687e8fdeb095665edbd1b733497de8bda1a1243286c5efb9efb354ae44d94a35cf638d17c3bf93823cf320217c938c453a2f7af61b02fd65c326ebef47da46215458c624bfa5014ba970d8d4f5a24abce18e3064adfc917cd6b224e8f55d99df9f371c4c96a5da60775991ecd764e7dcfa464cf2494acdf18b21e3364fdc090f5706dda753d14b6e8a1fedadc147a68d50d911f22b9dd59d7b66621f4721c28bc5b11d95fb31de1e4cbed8ddb7c129e1cdc43336072b1e3f96fcd6793796fd5e3d8be2d710991cc804f6025c8cffd67313a868eda3fe31e8ff06275d2c83928f84c9970a74d833ffd27b640e3bc79c51618802d10f72ef8dd8362be9e60184cd0ef9e62879b3d74efdce69fb49fe7c6cdef8819cc65b3c7be9c23d29b5fe28435642f6ae50a8a04de9bf881172399f0e85ec6a4e559d197769e306321685f18cab51587dfda547c2ddf1a809ca2336e1ea3f3f11b7acb1db5f15df0297e1fe91ed7451533907e07d0b1e6f03b598ff8a8f95d74318734cf1d97ae6ab1becabc67fd6b452f8605e673ed3aca561b7d046b8dbf7c4d6eb7a9c61ddd3d775ea849732c955edc3ec69d1d32df299135e152f64856c607f104db9a4586f47eaccf1dd8d20dcc53d0f981171bf6a3be5652cb59bfff6d316cbeebbad3fb456a379bd703cea2ff17387d03e6fafa9250e0f4b1dfef45fdc019fe979a3664f925bedc4ec1973b64d78417f511b7c588e7be266965ff7aa3b1e05804973faf8b387c646bb3fffe0531ae5458710d8c32b466413b4706d48f678e393e16cf2eef9d96cf064ca121035ffae0c646b8b16691adb5aec910e704fc8b632a03341eb9b86f6123dc8a9a8ec34786d668d382d5e649c2c9b694c86cfa92687fc39c01b6f9b0e83184f3de55036f1a2d796f82fc6c239c4e700c762a45771223bc58c3291d371942ae086a3b0757571239c738229b3a1fe78d5a9bf23d7648761beb00b5e80ee479a2d0d1f318d1c33963ff26dfef3f7b7ee271e2deb79476eeab31c619db984b1e7822ff421eec4e94d95de36c7790ff317bf2ac65e2c54bde359748576645dce767ef05f2bde0daf3ff488e6c90cfe5f8efe40e8fcfed44e193f729aefb5bf9debc346fe575ffcd3e7acd16fa2bccc321b269ca797f827f4fe3c00dbf31361dd4ae87bfd199897b0dc264ae06453fadac12cc3ae8a70d93f9bd90c78a9e69c981167867047b0f300665e89dc6fdb6b2ca1d1d951e47af1887acbe67e45961bdee8489a93ed9fcdeaa7c2403c72c5ebf477a8cd5a301fdc0d04f1c9ebc3bc62ef476c8ef0dd1f8b3f944271886ef2777c427e83ddc2c45fed06f77c807f2413f6d47181bd0dba5378245789d4bb6204bb7df5bb8e62399771627e7ce1de796fe7b3b3cdfc967157ef1cfdd399677c1657e389e1db5ff4b56cf07791724c5df44e65c4940e7e29dc42b499d6fdd27a8d7416c2ab5eea46624a231e965a907f964c0b7a36b1831572b8dadf61f2fb36379b210bc5d7872effdfb6c671fbd3b7f45d7923564ebc5a6ac0453a3a61fc9d8673bbbf11df49d4f36ccef204780fb00d1f3f75b6bb6f74d7e0f76f6b33a11e80f4f33f83f70d540ef6332c73cadfdb9353dd91aee3bdf42ed03ec9f6c2edd84c52ec965f6e866e97d2e8d4fbe1a9eec3b5f7c0e7de8f1fb1f2f4beef3897eb2d52490bbfa6f1ff76cd1bf2faf93c6f47594ac90fe4c293cdb99709a4fa67fb643e154e824d803065aefbd6fa68117ce125c03dae0e5aad898e5be4c13f27e1cec8b3df6ebb759c0416fd9ee3dc375d167a41f4e0b9c1ba0af396fd5f3057d077bbed3fbb355dfb3f9684cdb00f9f5d95c7acfd78cf06f3c1a6fa5d6a22abf04cf71abbe1fb7eab921db325a570a0700ef77ac97eae3da9077f576c995bc6b261f16c53859676353a6f4f259a06b72cc817734d7bf60ae77686f9563b2350a9b00eb9efcbad3da9afef655fe2ac763245b57f9b0386fd5849f4bdfc2564d82b935fded65e96d6dde7ebbc3f35e8e177fb6c3e4d8c08125fd64de30bc2ef2f3049f7bd7ed332c4615cf0b9215b9d3835e85459666f8f3107dde87cfd5f0bab8d7f1961747dc0f869fb935fba3d7f6a65ed15dee0ed7bbb1745703bb1cebae3fdeee7c9d4b634196c2dfb8d67ffa1bbfc3fb6f742ecaaa80f665fe7d9f7cdf27dff7d1f70c1909e6133df922f12fc36cad6d24dc1b7ee476b83af61e9dabaf630a42ee7b733012575222b40f59df434dffa888a7ffa8f6712ef5847afcad8809126e0fa5635cdd4a0d7fb566b1c85f40bed318fa6674722403f94fc28a379838fd90db6ff60eb4d430dc84c5908da905bd056df1e732afb087dca93ee3b7661a3aa44e11384b74525fc0c6ff2ae2a3d06741f2b9ee2e5dcc43c336c686aaea823a1fdf2eaaded7156336d378b0970c667fbb249c3e4dffcac8d515efc2e8b5bf503db20c6e215cdb214bba30b718fd2b687da958ed8ab6073a06a758418e454ceae1606f69feb09f39267ff5634375ac01d4b73822f6ebbc2c688bf913ec7a869c8c3e8af8e7d65a8a5e2c848ea98cdc0ef057718e99f6650a4fa65aef5eefdf6c7b06779bed9c8caa13b8b7e1e657d623c2f10b6f876d4c6dd8174d5111f5305aebb0d6d12a5feb46cdd7e87c5d4ff05c6a07e3ac96d8cef97cbeb9d9e94f6173de7379c5b6ead614325c63d803be6c5b7b3af7f7d6b967f42fadf72fccfb647162c90ee4c74a9caf8ddb49fb4e47b8e03aac2040f634922db73bb8b9dd65826db010cddf0ce3cfe7f357ee15dcafd5d00989c72bd9d6c4fd018a35bb429d2fc43181a7e9f4f9a82e10e74c87e873d0731305f2f5be78ca2c820157f1ed2ad8c68f7899c22ace939656fa93d1396634e2e1453d5b1e177bc8e941efe3b5f611cf76e2439dc5ac09cabe13cc7958e1913db6e1103acf65ac4da726489fb4e97bfc1b78f7bc6e2a62f6bae5f16e98ab5cff3ed977ad73fdb026b71ab79aa434dfcb3b5d4344cf4f8119886d11f8b72ee9c7c5108d09d7fd6d8c9943f8e3a87d479dc7848f0363af37e4fd50d4f33cc741c3bc1e556eb389630a67aa278dc84a8ae698f5bce6febdb37de3f9648afb13461fc25ae30137a8d4a769e4a8fda5aaf7679a612c2dde1968e3686cf1cb9919b6d505be0b5be0f79cbe5173ff9fb56944f3909f6961b43474fecb08c585aa0347ec5651313fe2d65a8e36bc77f4310eda756d4d91cd9ee4675a4defe4675b507289d6ec278c918b6bb4e81e06897dcedb6a7a9d4f16ade7790b6e3ee859d71a709fea3783b7a58ed9f611fa34be9338b8ba93e8807545f8cb1f0e12f7406c015388a7e33357c1aa02deb59cff26e0642de1a652b53e40b736ff54f5780458a8b2763c36ee3f51a2af49dab8873951debf9a787317076a28eaf748388a6bb5e85d2c3000261be69cb69d4f4ff222cc9a4adcc3d12beabbd7a30d259ffafb620475811cae0b2ceb56ea38645b6ba97b7144fc5223733b4ae48c216703bc88ee2444f66044f58473790db11f1b27b73b88884d7081fa0035cd728c3ad78c2e72de57291989d30938647f91fa156b6b2adc76f85da9217534e04328b127cc19f003ad01a79eb9ef2b73ffb8768abb018f229ed3956ff2a0671c0b9dcda0ffdf1cb5b465dc7dfeaec8afe1237f32eb6bbba0aadf87c1a5edccff014f5043565ec90b19669117329b795deecd68c46fd3abdd111bdc2398cbc7f96fc66ffed5f8e362fc697b5e1a7287c897aaf355737a5709bcc3a6c1b5675bdff5cf12c2b359af53e3ed787975a594e06ff467c8deb02de59afba2ad79ee32a70df947f7b011fcf279812f2e39db9a71556c0e9ccf5d6b14be8829f6725f05d9d7e08b9a06d277b8765a3ba7f5b9851a8c7afea7e2331473d3c41da4e66daa8d4f9e8939697c49386fcdb21f1df2eb669fd673e86c0e1debfb8f9ca5f577079b0fcff9582873db0fe6b7560bed758d1de60125bddc6184744ae04b4256a947511b75d14f7e9bd7b19ce91abc3dad33d4b2fe05cbcd84a7fd74223ba55d0875559672f462a14b6295492127564d6eb1ae29f4cca7de3b36e7b3c2295a3f837ef9a3f797e689f80929ec69aa96ecc1fb16f53ce85cfd52d386ac79b17176bb4e23afe44b41e6763d12f7c2f806b9fc517bff28635dbf42b63cb2af59cfc0bdd47f21d3dac7ff86dc058bd18f64a9f89d5cd70365fc06e92cf6dcbcd837ae588acffafd2b7ad833fbc27c22e25c83a55c5d33dab7f38c8d193655c2c91647e272492b7faa83e36cafead503da336b4b1156dd8491135f063e03f7a4dc47c9a538efa0bf259f7b8851a2b9fef5b7736dc47d9ff5fb57e6fa3346739dc05c135f7c46e2338f787a83a949eae3cc7ec731d3ab97e35ec5fdc01d827f5c626140fd2ed4d5728ce7e0f8738bff4bde6b8feb3da38bc7639f5935fb857fc5b257718f453ff138e3ec4d947ea5c74a1bd33918a85dfe9ca0b147578f8c89f4b1049f98238df44645792c06f8e22b5ca0945db705bb2e7c27f746761d999beafda99ecf6c4de6b31ecfd2704f39d2ffbf20c757be3f8e774d36276f47bf9b2894ff1e90b55d5edd8312203d8ee7be9973c8395beb7ec86c429fd9ac7ba175a47d28b0cd99f7fa3c6ce83ad10b753e44afd69b633f230c88afcc940dd27792d0f340cfcf9cde8bcc3857e14302ffbd62f2377f121e654da8c4d65607e6dc9239102af1945578bb28464062d6b3dcceb45bedcc8e113a1d63695b1fa42ef1bb8cd59aca01c71e1ab6e60dc928d430e9f8fdc00731ce8b79d85f6ba17ed286fd95c6f545cbe2de4c26ae07f4ca8c8c26ef59d95b3886b1817f52ab83a5c776c1f644b076f0f97f599bfa7941f956a4bf319eed82b2fe10bf77932fb7b41f2247f2239afb15637107759d8c74e1cd367da44ba02f5193c49d63a6cffa598ab92af219717906437c7987b15a1c0bfcc7372a3f7a29ec3bd2436a9bb3c805b985fa645233b649663b87c4f4cb7542724bf53c2119cfc782e6285a9b21c9a308fb82c36448f77a4502e83de021ba11ceaf46ccad8ca74f0097f69acf7dadeefadab21fef6bf3bdecffc03dcfb577457b74dc36d6b5b6033ca1f2dde2f1c56bbd36cd64350db02d308b6ca88fc87be774c126f38ccfdf7c0f97f5f673e9d67e4d349b295ca0137d759a6a9c90ef0fa20fe1336f57adbfd324fd680d67800f3995caf59b4ad0f773da9a4bce1a4e4f2c0e659c37d06bef6f20593fba5de3e48cfbd03ba1c746607782a963cd2259bced9c58e0dd78f3ed91983389f97d03aeabfa71b4adcdb7359cfe6979e61f6b384dd07fc0a559f40318701e1b9319efa841f0441ee9319face12c76bbc6c5190eeeb8f757c7f2057f2b113c4b6a5dd79c9705af2de07ab53d37cd648b17bed4d47eca71d1a8dbacfa4035f9a6f9b7e9fdfc8f3fec5fc8bf9bcf50bf93558c6b54d93a87996775e6b1c0fb43f2bd945ed09a423f8f6ee0de046bfa6b3afc8035a4fa6b9bb253d5554cfd94634915fac9d4cbfd7a1864e48c4c58739aeba85c576e3ac2c5eb44775f6a62f03262e7457f77f16ee334b063e354e6386657e0abb7667d2d1642c798f1c09d46715e6d2563bfe590bf2f629d32598edc4eff8ece048801607cbcc6d8ed4e10d99df34fc65f9bc7ead9466cc8bc57e37dad7d547c3dca86ccaf392f545ccb83e4066a24f09e8239c8e5a9557f6be7c81fe2dc9c6feac7ad3aa6f478ea4d4307e66e3a312e2e7ebf93636ebea136511dc0b90875bf745fef9ec7751a786e93d2ef447afabdf47591decef177270bc1cdaa7b00cfe7ed581f23e01970a4ee7a1822bd2011bd70713bbd73636c45ce60f1e42c2bfbdedaf5478e39cc096b4bafd8f7e053a3f9b3a695cfbd3d1f7c9576fb8da957908d3f263e71c3ef64ea122a47ad0b8bd1392afad158f68c768eea3d79b4dd8465474f48ed37158b2ef6db796171a7a6fd46c75e5aea6ea99848d93f59958b365d4bae6fe77807fb821358b61c700ab3ec5788d7f429acc0c2eebdf8b178f2711c3c61da7f13d61c54cfb027b59065cc6ea2ccdc10eb9cc24e88ce9c55b1a56c8a1370807c30a26b72f9ecbbbec8099fb866740f3a5bd24f701fb5167753bf1399c6486f7b3e6b9d0fca55ef2a488f1f1ab10d528b84e7957bf387fdc09b0c2237de209b454473a7905e356f7ffc9e0e07de7447dbf6b40f4ef472f51e9e25f5bde9ae825313b59cb1518b0d897c01aa776f73b1adc1cd31fb21e8cc09f5b778db59620afd0ce5be1d70f41c603cc5c659dc7e16357d9bcafe65eb4abdae2b23cad62f31db889ef49f8c899c4fa7c61a523aa6c46d823d21ba31b1b1278ba32f9e6e44a686a06f2531fbd4fb574732549f60e814bd07c0d92b1e6c8cbb123a7a7e267fdf8a7d05e31c044e07f071a0ce397fd642adadb5710a16ea2d5818dceb3e9249c747dafd24649f2e46e76c3d9abe79800d007e13ae0f994c5bfca629e84a6dd81f6abcb152c6a26a02c7b7e17a1127604c240adfecde32e6ac7dcc808f518c39a5ce2f722ea2f30ad904da2d5b75f53f72063de6d86f31fb7d0d6ce3802f7c17e956f81ad85f325cdfe01277c457630c80bd6e90df2c8416bbf0cd1dd1360c3d37fac9065c099ed8d9e2c9a5bef7b828cec736976ec917f35cc1bdcc4e7716356dec46bf1ad6cfa6782bce3bf659857c838cd85ba21b3363528c7b0e78c051a67851e87306e351326df39fe40f5b7c8dc7b154532af2870ea3e690fa7b1081ae1ef6f7b699e638c8142eee2cf2bac6c91fc3792016e75d23e788f7711d9f53e796032dec0357ae120aaac545ab0d272c55bd3f596b2516ae368e562ac622d5355e581b8632d1d0df772ea3752d3abb1db5ff6575f17c5afcbb806c3d1263c9e748287b7f09ce968af181abebd0f81dd27317af8bec49ccddeda869548faf6fcdfe1f3d36eebe99728a1465e8398ea9c0dc34fb77281c21f21b1c132b6d7b4a9f15bce0453d305573f5682ee752887455b27eb66ec3c23f78db52f97c8a2f2773ac25ef4e70af8fd2b0050bdc41b4f7b54f9323f1e920abfb17458c6918265ed74f7c69799471ac00f9ef1caed78ceeaad957f133913e4376cd06f796eca29c7b331f9bb6e1c49516829c481a3ffb52f5fe48e3f899167abf900d3b35dfd173676e44de7ff89dc826c44513f76044ab8e2eb8595ac6f8b874a685679853632c7c69bca12b9c80ee57e7ffccc7b050f5fe1ccdb9c52b6b8b130c63ecafd1dfab388ae5a1c878a708e2c25bb3cf3bc80e01dd87f537bc6739f70fdecf17be4ca86b81b97b3696677d9b246e7471b3c1d5b79483db892e4e3608b716b6cba612f6eface1f4f438065089db70cd774fbd29d251e6ec84e6d0cd06b07fa612d25f90cf457648e2c6deb7234519c89b71db01f61f354fc886f96aeec5c43d2c23af9143a03011f27c6453c71f1dc06ae11a3a00efd5e8b09d2867b7bbc4bec693784ed5874923e0dae944bf2046833165df17eddcd0381e31fcbe915c4f8ab119a8ebf7b51aa36110cdb531d82884ff5df14d31f46291609dbee7583895cfa93e0603e7a4fa57efa01c1d6b7621364df373e93d59777abf0c1362322bb73be3b612ba4790c956facef8fc2a6befb729aeaf426318231f03dd63311c0b79ec58c1790ce02804bd2409bc0b185f4ee44568ef2d8faa64648e1a78d3388f37285d371b1cddee2cf98c858b2f89a7a98475e914c925d4bff6b9a9245ca612d8a0c83f3811dca75f5bc67a7b9319230f15bd996affeaa37584ef9593bb0bbc6958c3fc3148bc4cbcede42e9de3afc6e9ea7ef98b763d1dd7c963206f45ec6e88e645e07df09b70bd32f91c6a1cf2f89a2bf58ef4dfc88fd99abd6f1c17ed6179ef4667a4b3c95c40fca4122364ef3fa8a96c9c174dbfbcd04548260a3fb3791e82dd44d54d3e3b93de9edd8be4f5567e25d7b061cf7f77d332ffba40c561df641c9bac9c315f9334c764ebbb2aaec9aeeac11203e6c1d90cf5be8e1a094d4ed496df4c9af2ec5b83d07ee6d7fd4decb6acfd8bda734b3d88b36fccf444c522eeaae9acd0facba38f13a9fba17220c8f703f9bd3b963270a5b4fceeb09c3921d80cc70592e1ba4f311a27506388f7315dcf97b8f119dd6bbc4532d1552287c4535b6a3020f70e365c56c5232c6c5d49cf739c4f7384ab4eef3fc8077377dcb9810fcdcc1b42ef4d42cbd0aa53d84a11d8bd1a9fc96a5aeea3a11d7b78cef01a410fe446d85a7ce3ec6cce4f813745f07d587b169f432db8650f7bcd682c2215d772814e29eb469b7854c88625b281c7340ce8f82a8573df18fbd1514f29cb072bd7242db067dbeeb118a6d17c324dd0dc6e55a6bd14e2710dce5b6b79c69cdc83c027712b76ccaac08d7d8603f7ef61b499ef6fbe96de89ef5ff8f8adf15de0bcbec1bec5ba15af8d97d1f39f06106b306f0d2c309c1ba3749624b2ce8ab363cdd079d9777556ecab811bc8d449b5fcd81b9d37a1ea19a3ba2fe29a46e640ef3be5b7d474d7033db2dc9afdc435c5d3637faf19bf2bf405f1eb281df0c89739bde28fe5f6e51c720980959acd552eb74daf65cd5feb7903ba07f92038a644e99eeeb2bbc59cf3850fe1a876ec527a32c7e45e135d24a3f7cd42c069f8a9dfe631ee8b755cc577baacad053d87edbe580d83fb799c2141bae14ae5ddf21ebe00f95b551f129f7160278cf904ec5d352d30832d7e39dae8fd158c8b73d67a84fcc9e55ad3a395d2e585ad46e525dafd4fa8b3a0f35b452da759c979e3f340427b67100326ed90edd3617bafe2af458cf705ff722ede76bed90fec388da613e53a95d03e387dbb9278871a47a43f4dd6fd1b731301bf6a635fa1e70abc2ff957f45c45320e5e6c346a694becf157b046b9dbfcef62e689c745973c3e83f1fa367f64aa87dd87bae7c7e761b59eaca1bf93b5f6419d6155bde635ea78cafae39635bacc764e226727aa9fb1d546c73aae1d17a9e0dec47176864f0c79c8e5d58f8dcc31718f648bad5fb1b3f3b8f20fd685e5f3903e4eda3682580bd48ae25e6e343f70dee2bae75d634d93cf2e8ca7ec4fdd9f7748a76ebb50d3ceb0d9a337bf1103c77ae5cbe2a1bec91fbd5edfe40fffb5faa63cee766fbcbf2650b503683e089777d789bcd808e5c994d4ced07dcd47923bafed815d90a1772b6b05711d4dddf701fc977ded9e2a53169fe79ca0e671d366ab6239065de45dec8e787273dcae4a0cbe884523df6fe3a8415e2b54cdbdfc3bf922d07d8dda0435cd90fdefed6fd9aa3ba5ecb0222e43d78065480648cd17d53f8dce5b5c77b10905430b95811e45250e2d79cf66cdd2b4d687dd163b7b3907c1d229cff0aa22f4bb2f35b0916fb3edf41af115eaef6f64c77c92dcab3b09497e3ea5b0a317c9ffb13c40ce33ba723b0d9c237a1e082eae5ef4139b662ff9df5c0fe0e7882bebf18df631d557c63570cb3b39ff7d5ecb40f7f9d6b1450634af1aba57d47a1f6b53c3dfec41fc63d569f435d078968fe2bd25e70660db103c549dc5df3fe0bcb25fab8a2fba4b23a8619e2c906c7cd5c688d6eff75ff7a318c8cf68bcdf2b6bf8db3d7068edea73d6deeb311a237daf213bd2c57be08eed2decc7503db9bf71fd3a9e638ddcdf616302818d4fd93bd9dad4ff5968c7f3027096c2fcdf77f439d5fbfd6bae8d4fb6c627eb4ed99f0bdcf8135d70b4f7dbeab0a1799900776d7dfff8e55678ae4e6f14be3567760d9fc252d5dd2cb8989dd4cff93f905eb5b3f26cb6ef39663577f4d593e0e11ae0fb7cf221c8d2edcfda2478da385e709cedecc02b6b9fce0bd28fb11dda31f5798e857b9ced9c5b19c3fcb87de5fd3fe3a0bdff87d852790d12b55ff6b6ce071ec1f8d94eb837b5518383e3ba4d1db429e2b9d670b634f4545775e46f189a21ce908ff12de3d871b5a642fb7873b46a8d13f08a90bc61bd0fb8761df894c02fa6f56eb9aecde3cec8afa8c7a2e1bf4a7c3cccf3068ddeeea226432af9bbc8f99a61bc13fa9da7275c675c7eb635ce99a5f67b327fdb41ccbe037c5a98e7b956132b1bb79d6cf1d5b1aa50178bf6cb94c9c78c7ce527b1d6e771d6b2c75f96cada24d9e24e8db5c73c05608390385bf39cfde9da9a746f218e99e6392759a530e22b5c517ac95faa89c27cdcac79a0fa875faadba8fb0aac397fa516b0bac796acb135b84e7d469d626d2eb847eb0173846df0c7fce352826484cd0d44e3fed5f5c130df6711eb7d024762e444abba06cb57c97914117bf937f4243cc5192ac671f3611c69cb7cfc041795b52e4fcfc4a97b20fa55f41bfaf54b3b5b8dbeddc9ec8a6c2ce4ef5438b20f8bd6b3ee4b4d1bf7d95acbb1dbe9376216cc6b7fc0716c3470b45fe138f62f39169dda69c5a2437a06f7ff1d96a4ffb707bdee3477b30e357a46b656c7544c3d083c9ee0e787257e55e31aaee5bb6ef5b7c59c47b84fae5e37e4a233a08653e0f1cbc8959cc6f82bd7c57ddead739f1f16c282f13d1a639dd3dcbb97fcc3eec138e773f1ec3a4332eefe6481cea6a7dc3de8dd7c748e37f1d2efc66496f87114b8e3da3bb4e3d9424e036399d8f1828e2d76729e9adabdc23eef023e0dfc764ef05ac32ddaa3669fa3b96e1c354d6afddd84bf2fba6f30976a88632bc40eb4aa71698a3b309ec56067655f931b704f6c553b86feb04a5dfc40a06ae2d32f359db3747edbbab07a4ad935d68f7eaf08f3f199c5899ef35b973db475797e7eb6b1ef73e04e4d792830b568997fe5fc3c6d2dd6fd9a7bf82fc7cd9a1fb44648c7df9b7be535d90559309bfc9364cd2ebec9eb8eb5e4bcecf46745c91bf3ec34ce9145b07cdbbe97efa23f9f2c5a6d4db313f97369fce0fbf0cfc2a8ec6baa4eba36bf3bc0ba3d7919e4d1ca75c27255d769a40eaed42f8d39cd4e7fa878571ebbccfbb55fbd1fe3dafe5dce4e95f3a0bc760af5cbf32a3e52676b8aa7faf8f2fe86b914265f93db9171bfe25a8c03b3017ba4f99e01355769341f7d601ee7e7d726f3d138a9cf51ae37487cb33c138c967d7158d0982ed41e80b9609e9bf5f982fc075b9f34ceb2677a8b357f2c1dd9669b547acf1f8de9ef75db139df6aa3de85f2ca60e7bc1161a9ff339693bd71ee1497cc319aa53185b93cd19625258e7c86d7df236e8985a1ffca1e05f9ab170961caa96fa47bc41d0c35ecbfd17d85bd86e27f6fc88e610f2f239287aca0aecdb90d44b092b8e199b2ab897587e264356efd5eb03613e6e8979517af559af189e638575afb67ed7d27fafdc6353890b58c3e9379a9be970f1bd56a93ea4fafad5ebe2c4db6e2a2989d7dd547f07b8a2105793ff96a389f1eef877c0d9501f571a3d7a26e012c6add8cb551c048b2d2bb39d0d761b2d2f055f6243cee13eac757a9d6f88c831c46a26cbc8c93ef6d31147f725d764ecfb0f5a47d853c30fa15293496ae5d406ee1be1712c30ad9ff42ab6de278f3f32f9b99fec8def777ff47e5e6849cb5cf6b9f57dfcabb24f25fd9fb956fb2c8618ec8db9fe3f894db7edd3c77eb85cfae1626b9cd38d85d0a1e399855f866325745df4031f0ae243807fc43778e59eea0157ea1dad61d3ee5945f538e45fd5129435b81677d29b9c792ff7c55a1da85faef79f5673c7cc6788a1232e6fae14316363542c28702405e9851be885c9a2d13fcc7aff79ad1eb9ad4e147334147d6a59ae5772ce7cbd3b386df3fc29c45920060b35b0a42f027ac098ef37362e0ee19a6aca64ad361fb84afb377fb2a0730b6f0c8c5d90abf96140cedddb0deccd09158f9dd4efb9747d913bf9c3db8dbd1605cf7fb91e0ff1acf586de9d834f5dfd4cbe4f298e7dd83b176fa2dccd4ef3f7169afb9c4761d4bb7d4d6e01cea7099953727e66ca10f09db2af497a99ab5c91afc6390931f362b18f7104aa5ccade9dbbad3a828b7c122be760068c05a2bf2b323516fc61536f2fb473003c810ddd770ee4ec94b8fcf92e6767bfb9a64bd736389a9f06f082cdeed247ef5c9cf5188bf0b255832bf9f7a6e0c622f397e7d3c15e171b7a851153ad7355c07de5d2c70de93abe8bdb5170df208e1f57b05d4b9cbee93fdefe786ce84b1267dd423c264d5a744bd3b7fa37eabea1ef88c2ed20eb3a8f8dd43745c0d3a8c588ca7fb3c7f97a4cb8b90eaf9c454a79163531f7beb4f396dd5319045bb3aff99298e1bd13ed99ba33c756c0759d797fc125c7bc857c3fe44ac2374712eafcfc50134d9e057d4804a7acfe7be8c97734a403fde3d64c2359d2690cf3f382ce0f88e8cc56ae68fd73fe738c45d538cbebcf67d92bd47eed0906d249961138935900bd2122c45638b3a3ff59181cd46d3bea295d75427a7cf12c32a2f941e46d53c96c6c7fbb5b954bf16f235f86784fef4d36c34aad1dbae64b4d1b6bf49318bac9b4f39ec5d0930b792ee772d1c5273aef879cf3792eedc79cf3542f00bcab0167be5ec10772f25cf25069b3b1a25a2c1d9d7b759f14f077733fae1a3f372efe7e4c7253c7fc1e917bb0730cd5df4ff12963bdc4fb3d40fd475b3ea99a0b13934b9e5ff200cfb4f099f3f53bda6674d1cbef12bb63dc0bbebe8972972dee6dc6ec19af3efb99ed85eef5a5de42969e00aef867f83d60439c19f31db8bec8fbc03db77fe1dae129b50ceef239a271c0fb977547ffe51eb813fb5d81c3f7194f34b65d883f52ea3ca3677615df52fb3daaf7f8c1b59b3f0b03de87e6b37b77f742b48afbc27ca8b4e24ed06795c739572fc4ebcbaa015e3eaa01fe6fe326809354f9ec5e89a5e0da43da5fb82bb190611d5a601637e6b088b9d0b22c9e39883b4bfac9516bbfe9f47da893ae5e7fc1d787c997699cbc8efe0df3b17f3a1f19633eea7d2529a3af2463f495dc715f49e533ce52d353ed33de52d37d113f40f66877e6cfa5ef8a1cb93c77f2467c2ef70170b217d71b3eee977d3f7b7b4e58a876ecab7cb0d6b894ea0b3c611fa011ab2decf8f90430efa2b93446b61fe411288c23a4cf5264876cadcdd1ced263119307fd3745fa37f187c16d2ed9c97c28d2ba313f87b0dc6601fd3b06e703acc5218f27fa9319efc68ba33c99fe71b3f0bad8852767c4136e3625433a451e0681dcd5817f73d59dbe3b991dcbd2f8dd191678e34ff7903c999e1cc247e80cd393aca6e17aa2173d88cc3cc50438eb475b494c70bec23b79591ace273a3abf92b9e4bdbb7f3316c93bb9ffdd580e2477528c05f9854cdd2756f427038fa11663aaeadbd7f55533a755b10bf2b39ea51bca9e01e813fc236751a5f609e3386caa7a80b6fb085eefebf3df3bf9c334c1fc98cd33ed277655cbd9fad8ae1a2a456d828f6cc5b6bad30eee3b5bebc4d71c4d0b1b4a56fb67dbfa38ca525bcc3fffcd22f952ebd88498db62b1c75867953e0dede3cddddfee641d0a0e36e8f34376ae71be581acfcdc3bea18d53e0aa317443984b46b2b6ce2b434f17c085231ae2ea70debb1d645ffbbc178b3b57d27f413e1b9d250c8c01d243f74abcf0cb816bc176701d8317e61325a9c9e9bde89b1c3de441afdd8b13901de14b61c397042c1e16ee3ce607a26bb38bb84abdff63313a73ebd1f4cd1f223b97b1267706fe5c757cd07fb555fb95b9aee05d77290c3de4abe29ad7b6f1e5758b8dd86233fe86e5119dcbe65df471ec3bbc6891b1d044c1dce8a9a158d017943ded9395c2669fec64dae0645c35736ab92c269671ce2c5cdf91d4e5f10b9d5f6a9d0b43c85c533c217fa4be372b9833dac79b3fba65abee8660457d0779dccfe370efb55fd67844657d09999faee2e3b1b33e9ff96b896006337f37f3012f63f481afa9e363ed41472239b95018e5098c99212f6ec4fdc701bcad5058a834a760e51a618b715cdbf6e5c997c62fd40352efd129317c2d95afaf1d6719e7024f12e9d1e67e7b8615f8ecf986bf1e71b73557e9d7f955e90361edf307f87df9f3ace16cb0da51b9ade2bd4e37cb4036e4d99beed2b6ef33fcfd60d8728ff4c93d52b80773cec4d061eaa707fbdfacf418d775c0e9f15931a6cf8a32aed3c03308202eb8eae4b8d965ffd86ce7248d3e9f43fa2e973515182701c70fffa9cbaf6360f94573413e1b547a7fa430591deafacbf0910e93efa047f1bc8ec50a96e956adfa178bfbbfe45f68e7ea1c475ca3ff6cb673eafb25b38cf3d5524f7fbe98ebfe83f861f39c7c257ec86dc9735973fca0d78723d87f2597e11e7a1a1aef8cf379f5b3843b3966ed33466d32651f00f66ad9e3a444d0a799d7b21c94c4b1904f14a2fbe675be976d93e3aa810707e7710b261cf2d3eaf59a8ed9efd43e8bb634aeaa285e1ad8729d7ee09a7a93a3aad3f82cf1b8e8ee76d2c0978cb0ca1b456c461c9be2b6656d1591732572274ab0d63e4e50d7f158a69b7dbb8025b00ce00cc43d6917e24f56f7cb737fbc1e63b8e1bc4c63bfd071b3664fa33513fe8ff5c11dd87627b33e08af09abbf18d7e89d5c49bc791d82add486b985d77ae01d66c1a7fa9dc910d3463a13af0b6d43213bab128f2839622b3109c00f859827f4e96da04e8183da4b820f11547ba4311f4ca387af22a74ff3bbd15db59657571239c7545a7ae4ff266ed91817f20d665e473801d72b2337cedc6716634c185706f66d5b7f811b8b6747e339c638f25c23931777aa060dee49476573e5f8230acb05ed9572bfa133f752fbac720fea4c4fb02ec1b57c05166bf5b738bfd95dbc53f174aaf76891e3abd2b1dcbba556f2aa97f2f3e8fd6b18a0e7a614deed83df9cce7353f0650bd908689ce3643e1413e849db5139378dcab9b5efaf767e82a77e5d3d6e5299a3ff2c721ed33c77ae25255ff70bfe18abd68325dbc8d6fdfa01865b152b0df2bc74fd109655647bee8fdff55e316b385ba87a5fd4794555f5fe648aeef1a857ae3a27a4974affcf6268c79571809d4bd5910d2bb21355fad3bad4bb770c7f7e0801a78caa5b4b2ab8d9857e029bbb694f93f390857b48c5e196cd9c57892ba6ea5c999fc6fdee2736c65474a7757aabee52c5dad84b1c7f59b563b045291d5efad6765cfcb6a8d9a0fad368fd1e712dfa7a7972bbcba8e14734e2848fefcfd20d734df4dbf0253553ec6d4d9e778d467de8f37164542cb0e5fe38b6148c1d33e5ece738c915d968e92f5ff926bf217542cf6a3f2bf3c0b81f967b7106fc321eab47ee87fb96c945529f2bed1cad212eab9fe76ad4a80bcdf758b1f7b446cd9837ddb561d9f05717ad41a71fe5b975a8516b93790a0797b27bcb9af4dc0e4636c950296c67aa77e06c778c96b194fcc3ac5c1a831be1e2d3f1416ccbe35c6f0d5f67d5ddb49c831b3a7e1ab907fbe258c1cd36fba1210933375e9e7c5389e49a2e972d9ed1a7d9ef3064267024e561bd3cddaf9763aee0daa5c591f8e88dbe08e4f7cea57764d7def35e1182815672d6e3dab493adf157f93e263c1f4c9d9fdba87cc5e6ec88feaa3bbd3896c8db667a5f849ba3af125e73730cf6856c15b55c098d05e9ed0a1ef2fa7c3ca8a3add8c9cb0aa78178dbe1daa9cad970010e52feb6c3319a06cfc2bf790e52f72dfbb38bf14deae71daee9a5f63ee85bc7c03ddb14376ce51d499ff69fda3955bf571e57c17a12f34b94f39a7db3cf0cc2ede777a2bba3e31a28361f3cebcc1a0bd02357f9ac62c7b5f2b7547e332ae3e653ab3667795dd67d3696279b52afa9afdb8bdec333a4e23354fd6c96cf50e257d56b6e0946eb939a6b3382eb5ed309fd3aa75eceb3c2ccb1513c9745cd9c7630ce253e7a59fbf9b0c7e97f09cf657e306e0ef21feb365b8e9db61bb7c625e8bd53f5f1ca7bce63f1e649699fc8f289ce57e4bcf78ed68ca336f22b06f796e3bbfae334b2ad25a79a8e699b69e20c8346fc5b1e7d60de35ae97cc739b898a572ed482bfefb4c0718b8acd28131cba8da52c1c53bcfbe3283662f1b43537390664057fb6cad3d7fa3cc20775031c56c261c1699211785d65e6444ee04a116036347e5fe58a3a31c690567800e119c8d6300479ec44b29a268cb85dbe07bb6e77f6676bf60ffa6416d99de80e726c0aa163deeab1b4e25ae03cb3a6f5ef815b5889c57d93e3c1cf6c6b706cc6feea1c4ac1a5fccd8c77a241e0c5e2d9bbf3dcd704e3d77e69e7a49e7b41eb6574846cdb892e0e3fc81c7399789de8ea86fcd5918ca68e2d3086fcab179f1337f6375e6cecb7d612e981a5db512277047188c6b3b62692c5196798fdc4b38c885597dda8e9aae2f6421da582cf745cc33ed910ac77981fe085ad62265730494f05967bf9d95bdbf902183d93db714bea0d758853d5f04bd5f0e2c469e201565cafc03c85ba7a620f6dcd22a64dcebc00d994d79c27aea2f3d5ef44ee4edf2ab9e5dc7f94de8bf8270b5736c796007fba71df2029f310e47e441797f869a0531beb661f8cc49514cd3767072f166f75dc6256fd6a81a9837335b55e8eb085776e2a6c29fc41f7ce637e0b7196389d80734de1dec4fa4def796cd2dd051759ad60195f65ed9c35708787c15d56d38ce086e458ea050e75deeb2a4fa6a097c8bfc95ad5b068313e0e9e47d8db8b23c1e16bce63d18361ec9cee2cf0a4e019172dc6413e6c280c67e84f69f6a4fc843f7928425fae114777740f07706e0a4e122cebb1fee6ed72bc3590e713a9c73f7abb888a877f844856ddee8c9325fd34c31cfd1d38b375217370df6f8274ea5c8aea79a11ccf4d74ad01f769e498b97ee476f8c89fccfacfe3b970ad64d37176a3e4a3962dee84f61f83e718cd63c6b4214b5dd2a6bf9326567ca10f019bcedb9f2b6ba89a3db486f06fef40f51992339371861c494ee15eeb032dec21b4ee789f9d2fb2d4433a256ad9bfb11337de15f2db456c97e813ffc1594061a35f663bfb58c8a4d8bc96e61fa3d7a8f0f7d0592709c083b7aaf6728cd13e669e6519f476c01c1a66ee7b86046f63c97b0787e0c8233f605a6062ac47dcad114bcd6545c7fcf005b750c7b8baa6c1798710eda97a3d2aac6d8e692f4fa6d06f52e862d8d3df24f7164532ee79f9c3b806744ace5dd286115e729b84455f505e7f46f60dad938fb5672480b300f995732433d6a27cbf19bf35d390d64b32d4fee5cf2d30500bce7d98e7d22e0e4a6ecb9b50c4a55f9ae3a469030dfb3bdf8c4e0ea5076469cc3e9b8af829ece790dd7b97460dec344a07c8920e1c0ab57bddb16d51c7212d7e07f3e5913a0e38076a3d3ddb961e3dcc3950f4e85dd7d6948d978131ef32e074297c88e0fd6b285e21a746fb9c9280ecfd528fe767e758097c698c39ebcca21f2b6be90dc0f9387110c9934552ca07e1f1118dcbd612f91cf7d646e71c4bbfe27c155bbf36ed47a22f5b6dc697eb24d97afe499da414e57255f5a9db7bc4dbfc8c9cb7f6f2e09a82b796aadb67d5665c18350de92aceafadd4b6e4d75218cbef67d2938cde6bef76fae83c062c86bceee829863ec88110cd295bae9dab25a4b95a908e2e7b3075c8e76afe6496b8b177dc32f007d0dea17ab1323a3ee9a82c5dd04bf2da562f0e59bc3795fe3f7466547caaee726f9b69949f410d1cac8e13a333d96cf86242ec20d916993859704f67c4050bf5f6bc36b185c3a3599b58e94bced6d6a6e48ced2c0357324097933a810257d5891d6437d86b0a2fa5782f8da36a39a2bb8eef13aef3bc4eded368fa91175167fbeebbda0ff1bc3f848dc9deec87a8d764648cbaa6b23f845ad7f6350d59eb9931d73263af63598f09b54f07c79a51be2e92355e587567759b36732c7c0f566c48df058db8cde764933ca991abdbfa5c8bad0ffaa9e4d52531cad8b8db1df154720f343106e975adcb25f2db7d49bcd81de3eaecf21a9097b0f7dfb65a7aa1e2a75043ef46e7c452fbbdb5d977b70677f91c0af9fce371ea4e00985b65acbc90e7b9447ea3f117c08a3a84d796fdf0a729f7a70ce35e51fd92711fe697ce13b81192c9309e45e1c5ed1a957c948b71bdb3661c053d5b67e92255961a73d383dadeceb3bac8bafff70433bdc400b8547959ca1e57a753f64e119948da64622e11ce3849c471099a234b3284bf9495961a46babe08d927b9be0c2f4e1c9d5cc28902febef6f1e6ddd38c92ab7bdeaf4ef5c293fe9e1970d8c9c32033bb4b7f7ef83e37e46218fe6e91a1643ec63d445e2cf06ebc39ca9399ebf1dce5b3ac37ce65d391d5a4458ec3931741adc92fbaaf54ef6ed0de3cbb5d27d263e306e7a5a9e4f9dea39bb1656d4bf09e9c8e91d17e63ab8d836b41d8633b70272f6ef58fab36ee13cc87fc8c7a6423336aed4b9d5bf637153a94e02809f34943cf96bc0638eef29c8fb2f62cb9eccbccf7024773b2bbd8d76ffa05d0d3c35897176dd54fa9efb37eff0ac7b017179858d76da3c6a0c45d23fb29f34b1be5ee983eb1c3fc7b054b9e618b9458f2cbc8c97373dd85e04fb893d70985cf0e929fcdafcfcef2eac64ee2748d0cf846b563b098f0c2aa2334d66b2b19fb2d675c1c71c019b191f992d17b8c5bf8428d94c9e0afaabdeb5ff159b5d8a9ab02772c88ecce19f09d7cd189bc83127d327a231d03f41b735c65ffe3f2e898cb3fc0cb3f514c64ab3b56d0c408940c97ea633f2f0c8eb20529db3eabf09f3db2452b31dba63d5aef9f11fda73e2ecd995ef1735bb0c5a57761a19dafebc9b48213e3663926f6cc75f9f27c863897a51cbd58e84e21bef281f3eb583f7f3b663ff4269bebb6c403fcf626c0795b91b3a92442dda323193d8c49fe0e79ead561c0e1bf816fe0da8c37c0bab7e3f51d989c7eb797d6a0e4c8acade753cecc2a7e10e58b5158f10ff7c48bb644455e1fe2594afa69abfe851c36fab3901cbe37e570b2c8f9b0193235165c0677328ed5437e9f5fd77189d46aaf9c3be26eabceeddd562bb54c27ba0714ebb307b8c6599041ef6c969e901de64e96d15442fa6cf3b436d3be37edc16ddd4634a0a7bbdeeb7172ea79609ec3f53350d3f711cfe26ff4fcb8b56fda64f0e962fcd6a3a5a6e1a3ef31be6b2860ac74167eabe3cfc5f707dfdb80ef4af7263ec1783dcca5cde9534dbf7e8af1dac4272d797eaa18ac4d6c576a6c27274b43d94af31aadc7789ebb0a5e6a7f2ebe23bbbac27b391b52dccb52ffeaee78f0779de120a98de3dbb636505be364676fbae3bde9ee8cb1fb24f1e2e01ad53efa7b6edc7632ff0e3ddc6ea76eefe1fd4c72f56c1cf357cfa861613fbdb03fbe4b9c2fac57476e273dd9d6e00ef2f460ac548d6b23b6f78cbfaed2876931ed9cffcadf66bd8b53d5858f38ed1e9fc92d71db2df4d085ef15ce967db5671dafc7f2ea4a69e04d96918c7de913f2c731de45dfddaaa7cc821a8886fdf6039cdab2ffb952f78fe301dc237cf455272cfbfc80bfadb58610f72f5853ca36d0498d7e592feceec20ace79058bb7f98e8d396aa96b2278ec0516d7e5077b785fc8855af0d8223b23aee4306b7153b38b9f6de11c7dc32ef9499cbcb9a75e89930be8b9f7729c7ee4b7d74dc31c581d43988f85dd3636f6feb01f3aa683de29c733e7b626f2a584643e5926795d936d36e2b9a5bed4ea71dc4193c3a03b4b9c4e74b1cd74d3a8a5e90eb822d659fb9d371a68e0039a9b7a6cf7b630f298e00fe3c86674a9630f5b1d3ef89c7c37faefb666bfdffcbdd8fbacbf736779f5e27e94e741730cac65334e52fafba6132965afe08fe2cff3860e9a61ac980ab7988f6c80938eec576ade903fd63e577a9577629746384f4bdbf68333b2edf19ae9df0ef9ed54e279afbbf9b663fddb8d85cbdc4a222f16a03e76a18e31ef4179cea27114f888047f248f2d5c3ecbf3aa8801cc0f215df37d5b88e5fae3fbb065037f57dc2f71e308d948991b1b1985937e83be8d096059681bdd112dce581991209ae260a045cb99c6f5bf94501c1963417d806f11b4e8008c4552c4b11fe05e127c1c17b06bd05ca4d1fcf00dd8729a2972db61ff6c038778bf379774982b6f4f707362e09945737572d47e1ff298c5fdc41edc0f6a2543c84357647a945e0a0c632cfbbd754c732ca23d12be7b87c2a6c27b49eb5fb1ec2d18fd69e3023795c68c3224e184fc1c375e467a57e46d6b16613d4ee7e0687edeef409e2ce2593c4ee6e26da710bfd28ec5702a9535fed38912795d05eab66d8b3bd98ddc63846c8891db9d5dd09ab4e6413b7ce21ebe059863b5c7d7f504fa5cce2a9f27ee01f26dfde6f5f8f3eaf5445f44a71b8d135af4335841af768f84f1db94f55bb46e2ffc367be1b7e89d58bfbdbf3066f8ed979a3ede0f2ceca0e2bcfa48298ced7a0cf81f965ce5e70891a55f14cef9ed33d709c380d27f1fb7e23765dce7ea4da2fcdc393a2a43af0c297dc27c7ef3fed433d3f299c8a6131bf835f0ec660d66116f247a20c3bcd701271fd8fa5c66ee810637ff53ae85caf93d61ddb33267ac3a0fa4c31a715dacd7f4cb67d1a7449d01ecb901fcfdfcec74ccf4eab1f33b05577b293f62ece8a4bf273f6bcdf0a273a2a41882a845ce9762049b8dded7545d58599c33d8f0ca5adfb5e4c1f667d6590ebd422de7f0e573c873f3d6efceeddfa90f7ea79e3956ef50f1be07b61ea4f0c5365b2b88dc31f4fff12fe2b63ff3ffc1d7c8afb5c9794b7ace9b7a4c0d4f53755c892db0f83d201630a47d7536e617e517e4d7ee89ce77e9f86c392ec0de791ea7b04a7c121ca7606222963d582cbdcb1a13cfd5f8594afeb0724ebf2bfc317f37ff4bd6fcdf2c3abfd23af7c8fe7a41a7f3cad5958ccc36fb7bc758225f2c7b88f3ad8e5364db209ba15947fa57737c63ceb1c125f3e138781867fa7f235b49c13dc558d396b947b633f003d5eef5f33146ac312effad3126ffca1879d618074fc6985e663b07fd9f8e01d0f6fdfb97a4977109caff4472dd7216078ea4682ef4fe1821e4341fc9328b634b0da067a5f5bbfb98cabf8e03965d41fa2ec17f62e27d16fc4d8db3fd28ab6924abb7603164bedf4f7ab31afbfe95dca86d62bf6a1e2d074a687c297adfb438c3d6c7e24ae7a2b51609d2465fea1a8feb2ddb621df3bdc77fa9e9da8e93c8ee6e2e8e64c45bb31fe5fbd797a2c8cb8260aba67cd1e721a5490b3634e798fc0d9dd90b62cb6e77257f8b2ba17935c2822789f8918ed41756486fd43145cc148d8995637a10530cdf5eccc3fcb0362daf738c2e4ed1534fd9b1acf7a3fc6df22ec7eadf4ae488c5bd70bcfabfc1a2921a73f84a9fdf699b637e4bcbb675fddad258de2f7050e6d723bb762b85c227175c7d71907c4ac649eff4036f2c92586af26677848b134707df9a05769c46abdd1838aded7aeceeb0bcd8d6c70fe5a17d9d1bf519f8fec0a30f71a82197ca187ff1fe1c7fb1c951df8c27898c3cf30c701a5b6c705c338deddfdb560d48ff398bb79760bf1e44deb1667d79323d7d76aab2b38a5b64873b47807f877b6466be649c2bd7e65cdf1de384ce18e805807a9df0e4620cc7ab23190347c2fd35488e1b6bf723395efe8d1cefb716c8da4595044e97a29e63a670c66cc8b9f8248e7bdbbe8075667742f48cbc8fe3f60ad6591bce99d529f74423462b899963f6733e975a5cb4fc1d555bd2c4da07bc256a6d465cb0f8594fed695bbf2ea2f67831cf37ba1e17f8fddd8342f0297aa7e6f5699953c39824c9ff31ccb1dabc3dc537a95ecfee7787bdf3eff55093f306e31d9c3e73ae19bafe320b7fac9b4ace3c6453e2fa8802d303b0050afb2ef062e382fbee0bee5da60ce475fb4fe5a0c429f826e74c8b1c17cf39ba5d05fbd943864da906c95ceafdaff5ce7fa901e07a38cdbafdf63c4fe71177f4131e47ad725feed57be2ba5b4558759cbadefd9fe3dcade63c19b51106d4c2b47f0fdc3027347e769e38827cafad3df85e053c44ba87e2895f35cd71e65f8a2b50b8a3d8af7a501f20d76ba435eeb6eaeaefb47ff8084bc2a7b0241eae77958facf5bef2444f702dc0431e045c13a2de6e8057f0c2b55bf5866c2a612e35642df138e5eac6ad7153e07a7298f5bb0fe5fba9ee6eaf6f5b32c7f9a2eeb0dc88f99eafe88fb8b4c9fd569bdc93b8fa79cfc81b3fc9dbb2311a305f9fb8c49837cdef717e5facd6cbbeea1ba071fbb531935ee14abcec51af705b5f10d1173866ae7e275fdaf9d052d73872bb33e86f7763e3cee811cbeda403e1e75e9177e6ed43f1ce3096bcd7d9ed844707f9c89359ff137a2ce1390483e43bf93297812f2d8f45eff5707cf4a1ce69c9415ccf14e2e9e458d67c4e36254e9988ae59fe3126b3c0eee847bc877c966cb1c6d91a47703abdb29fdf04dc837b51b35be5890cf55add2de3f97774feea388ff8425f2a60123caa2fcdb9cbeabdc9f55a2c7cee436d4a5abf36b731f26b8037d369f8274fc7f2e87d701c23c6ebdfc2b39941afa848e1f1d19cfb3b6aec79cfd7ae51f78fe56d47d509b5cc1bfb1d5be68455872e4e1bfd2ef309f0f0556a789b355b7f517fde5cdffa9a45b2c59735a5f51e23b386e9dae9254ffbb5cc1ebbae534d33e8b9d9a373bde8b9c9286e80dc1f0fb66a9000ff508baea56d04b9b4cdeabaf5e275fa81370caec8b7f776613c8bd9fcf3b214b95ec49d3cdc97c5d06bd5de8df63c3c633fdf697b31ef6786f79cb9bb07e702f4dc2f13b92eebe45c062e510a1f01de55247d4a938abe4f1ebf534dc62318c3334c91461f591b972cc6cf29fad4136a8d5bfb2e7fb8be498bce7ed59ee8617b82a9f39fd91387d29e501af6045d7f8cf633601634fc129ac3ba6a43d80723d62531b34d3ec7a71951329311cc9989630a67c752b2469d577719f8b1217e4acbc89b60dc456c6fdcfe32ae978f59cc1cce8fdc0e27f8134a7f8ca64f6bd25fc51c63cc5bd4824d75f9b2b8d3a7190a9fdc72a08b82aaf1c64a19b5c43fd574b431065f9bc8d08d27d728613a78768dce8bc6c698b57208cdc7fcc014858d1e1a23d5207559e368a21a8af6a02e2b6cc35f5162e4df2b740f716bcf1ae890c92c21182207b4e7f079aa1f176a08184f485793dab8a3ac9636d7d60c8f2c39841e7b386f1f60770dd17996e3ac95f818a55cb2307a7ac53b963aaf90338a0f2622bda1d03fd73a4f7a6c84beb98c1c1a5766ffb0f7f069cd774d07a2672f3746f0a58b3371c345a40e4399295ca4ebf70a662db65dbb9bc7e3dbc179bcb72d65bf1da27f430c3e9025fdbbd613bb70d430f1a52073bbdeb783fcc948b8db96132956b0070c0ae8e5c4fdb5658c69c39cfb7a0fc7576127b7e9913edcf7af7819e00cc0dc1ec57b47b53aa0d7d63fe7692e641af268f8ba9d6f3ab163cda4ad15d4e738c3e745835fa4b009296c99765c8878c63bb11379215ddf52fa54d037d588ed3d9ffb55a31fb6988306e6d103dca437e2afe9c83e958710438c1db52fa946202a05b64efe0e4ef289ec167afc934dc147f35866bf99fb107ccc827bb8c49e62f883f97986d66c635bb3c0057ba6e5f7b99fd1c8e73d5e8f86af0ffbb182b79b6cd5803596a4ec6365e82d6bf373bdf58abf3adc54fdd5b24eaae3e846cfee1837d233c17d31e70330ef1e63a1d53870725cd8ad45c641c53a4b7b91925d3a5ed0c0658a587becee588ae8c6cac8b6069a3f89587583adf2a000ffb578d3bb4adf051c45e6337e12836ec8ed2b35028e449e5bcadc8d997f78ce2df31af72dcd370f7e8192404f7bcb1a436f39f0e92d1ed9634897ad7c93df215b9ac603a8f98119e058c48f7d43bbbb8967d16de71e8cb31d1b99359c22bdd7f72438afeaf6ddbf84ed02fb3644764d85933f0339537c530cbd58bc50b1813bc6637cc7760f034b6cab460c4c8a591d9362e4eeecf8096ec5de1fdab1359c5df01ccfbce91ed9cbd10df6b7547fc7dcee5e30724a6346ef6a3df734a3f3eea4fee3ffe3eecdda5375b2f6e10fd4070d1af70e87d1088a439459ce04926000e5bf71003ffd7bd5aa020aaa5093dfee7efa7a0f9eebf9f50e32d4b06a0df7baefe8e017b948faa675265ed0c3109d8514ae43b85f8fbf70deaffdce326807b3f5f897d6bf2d83b9b291aa35ddd4004ab09f59ebd057f88fc9e2b01d4599bbe3d8133dbcccf43ce9de1b8b94b297d5f960b67990587efa9a0bb3e29b2ff104246f960c426f045c9e9245fa1e08f639dcec17256fd572e3841b88dd092fc8c656af33522f008d72e049c9498f84bcf38b925f05f4c1c14fe7dd776b0f5c8c7bcc8ad92e8c575f2fff768dc305631d9e8ee437828fbeade43649f2b35b84c54c97a8fffd992f46d19f059d732b394c14a93f7b1d5fe6ca333af7075b7d80e3a048b28c687d1313351d2f4ff3888ad12610b79dd682bc7604d5b2e4877faf1863d9a49f0fb1dae8a6e6dae7baf7449ee52ed69626cd27714aee679896353423f3d1e793eb2d728fee18ef3636e2255fecef63235c2542e35462233e3a393bfa4361651dcbfe22fcff45ae0f2205bbc1dbc6a4300444bf70a58f2f1fc6f1837f2e36727a7771f8fe4493e632d31fc9d41d1ff0492e817c141c47c81c16bb84f745121f035bf88b18a632af86f6647c02cd173d14f0bb60cc2ef96f64bb1fe528f8166ea0d92347747da95a3edd23b6257ab1447f32a36b465b438ce7494317237deb45cf9c7551697b838eba12879e12ff722b7c14e44799b5d1b8f6dbfa54adef7b15c2c5ebf15b39a50edeabce9c923fd180afcb67f1ad02ddb387e716ce98c67a6de432e8fc1d3a17eab13cb8144e9dda5ff937f53a7fee2351b953bc6679dff294d2bdad7076c39e6ae272b70d4ddeda8ef8bb06260ab87da786cc5d2784fbbafaed3dfb513fc7e2d9912b394b53cfb18e5cfffb7e7ea21beb81ed4af8ae805d3904a36add64d57f5bc277b524dbbe3d9acbf6fcb6b113e5b8327cd19c3d9ace691c08c61dd5f11cf693d3d59e5dbb15a602f71ca61b3b072ede4a2783677bbf833dec3a076ee7d73feafcbac8e4d73f8ce3f11ff5b0ff88eb55447ecf91c6b3dc58d3681e5b383fb119e7cb52aaeedc96fd6a5d333e0acc3556fb9a459393e291b8925d7b85d385fd2f6b7824e6f276f91934f8af543d6f24e46fbd67e05ef077acad417eacdd9382b9127b5e017d5455cc03355945babace52301529c518f0a8d41e41be2decf3d96491357930fec2f88eb487c697ece19033b622676c338e3dee5a37870dde0ff2fb84d49e63ccd930d373718ee2222af7bcb90a97b7dee27953ebbbd535ebf277c6f10bf80c6dbaef8af601c6343e29f5faaa0edcf4bbf0ab7c66379f27130f7f6cf5c7e2e1b68fd38eab2bce28ce99cef014591c9ea218f3fe6cdbf9b4f15198d922dd9f35a6ece2613e79c9dc1ddde3101eda9aa6ea647d633c3f337f94270d8e26e5b39db7ff1534b8597c693bca23d0e07acdf784f350f4ea1c5b4a38bc23aa4e3e58d93e3e4beb5cdbdb4c59a76fbdceef1be0efabf64dd2f29b0f5b0e1e107898477f79af29dae91b7bed83b3d78e9cbdd6e3d8b1a795f57cdaf4f2b3dfb3ae818cb559668a90bef5376dbffe69ae08e88c23f6c84d6ff4da87eff210fb31a4cfc6e9517e9e3d407b1b722c2b477bfe80f33897e693305d3947e4af606ece71bd76b424ced0397aa38618be8fc5d49de06fa8ed86a56ced5c709d693787629fc1c9d5d8175b7e32ec38f2c1de6a632aefdb85d9223a14756d90fe5e826bc4ba530d1f991ab351d36f9b51ba9a66fb3df4cf7406fd139d781b749f12d3f2f0fb6bffe7ef0f98a85befdbf6851b7356f626d0e70785ddbb3fbfcd38e788d6245e8febb68f7ee0bf3f680254eb977cf75d8debc6384e78f7fd863f39f911feb3b77584ec5d894edcf932ddd49b003eec661e49831ec1309d4777f7e59d7c12e806dceb11ec6df5fca9ea111c5b3fb64d9e1d9fcc09fe5ee2c77d50bafbfbb6cd7a13acf61827e4bbba35c4a967b4638959b7df5ceb8ea0334dcf850637475ceebda8c16b543da71dab71de05ad638debefc398b5e6ef018e09eaf91f7a2eff340e71f75ac0fbfd237528b40e494e50bda13147efef529321e58e2f67cdb8187b43ebbfa9ccbb92f38ba70d54632a4c7eaf82f2c4ed459829e671a1d35a6bcd7c84abd7b5ff75f179f07683a7592f3abd8fa2f3627741ff7b00ff5b47ff3bfadbebb3f84fac4f9de5bdb86a8a7462726a75ff75fea1e7cc7c6c9d655de33197878d3dd8b7794edaf87ff6d97f6d6fb0eff7e0def01dd81bec7a7b606fe8f5de78bbb13760ae5bfa866f0faeeff4bdbf6ef9f72f5150f38f7fe038615169ea7de83973ef47c7c2c276827db707c6c24862693e1e947811a26b36e0735efe2c67463d0bd7b14c45cadeeda0c49a971a04a42efdf7708294060e3b17af52a90713cf8c346ec773effb75a22626e049bd494474d00629d1413b55f1c098eddf6e72cbc627d759707a44ddb39f2c6357d6cea4bf9de83e83becb3fc46002b7e375e568ff99da43fb3914d7ded6592a5e5ffd726dcdf48406c7a4e4ed45e94d60fa8c3bfd067a1c6fdc3751f7edbd368c6bed39b33c4348fd16b02995566263ec8b90739e5886ebc8a25bfaec068f3f08e618ef65141b101f89c1ede05c5ddd83630fe2aa376c84f6213336289ec0df6db5d749a7ddbab1b64003ebf5a776c69b809d617eff889d59f7c8f7c1f876eb2ffe0d3bc39d6fac314ae31b5e496d7c81e701fa2ca4bf9caba775a67ef24e90b7074c623576e59efbfbe3b6ee4535df06f4bd5cc2c5236372b3776593309a4416d1246a69827da35ffa277aafbfdbdfe7eff213cd37e6ed45368fc5e4a896680ffbd3443d7bbd3cded883c7b03b0cc7fc1038e6d9ef1b537a68556c7aae730f18ebbfd5c3703e59a0b3288473f34e7f0ec660b5e7482efb8bc878f1e6a08de991692c91d83e37f5fefadfb82f7c7d08f4e857a057bdf2d81fef45070fb47f72e9e15a27acafcb6e9348674fb1422fbeec568608be287c5b2bffaceedc2e4da49b6340d548be38fbfbc0c92d5e38b9c5646533fcde4907bff77e656f6a7e6fa1b9c7678a9f6d47f9855ea3db09acd147d75fe13c987bbfb147b1cfc5c9b9bfb375f4cc69eb0ac4b41fb66ef953cb74368932a788d2f904b41ec95e516ff7cb40afa316fafb580f40072d10e69134598b92a1c5cb8f35e08db4a119c71f666c2d349df6bbe213d38fbbb78eebf29e491c973dfff35bd88486dec2f82738849ae301c5c0cebac2ec63cc9b7070462a7c1fc3470cef9f031f71e798389af4611c77edb3dac39a91659ffd69635feed725999ae3a28df9ccdbf646ad352d1fc5b1a2e7e2b8d6162fc1243accf41acfd2d4aa6cebaf5b4f652fba097e1ce618266393613d7e4bf5e22abe817ad66cb2cebc1de6dad8a2b3d3bc9c342b34354b550d91d2601e37febd717dbdd6a2c6f5d4bf37b5c9709f635cd773ea3efaf2dddffad39aa35e792ef9415a75bce00df0aa35f7f1edef2cf077fa57fcdeba3978e83bcbebef7f27a5dd36a6efaf3ea2e3f67abfee73ac72f51b4efc1770303d98bfdfbc8dc76cf0872e0e1b3dea1c8f12e31a746a37d5e7225ac76b5c5f8a301fa31c525c7e19e600dc24537b4ce90be49e376ae82fa5ab9e0cdcd1466f003ee14c1967de28fa77538f356d68b6be45cd79f92be32fcbc20ded18cac6b7cf486eedb0a187b8296e7f0f705b31f580fcbce9c9d0a35ae513707dfb26e72bd94bb2b777634f912e658fab97c81968ded3fc9f282630a43018557b8bd4e7e29359c68b7cfce361a647bf1a366bcffb86c6da7b84ab96bc8789ffae8f5b364b95e60aa36327fa8a86de7d817f1b9fbd283eb9c9339ba77f656c03cd738fcf4ec2894934814780d51dcbbaadd7b92de63c2db23f1f7ace9c4575ad1ccf25d38b43e5895d7dc8acc72a96de5b1757911bf7d1ed41e2959c99d45aa9e61af36aa773b67f6e1e8ce27f7cdfb75eeddb32ef3ed28412db1838c308e7214a2de781ea25eeb9c47672ce6b32f70d3c0293bfb227eb563fbe496bb894d8902af604ad0cd05bcbfe503ae2a776bc6eecc2baeffa87e3e3ef9a7ab0ccf82883b8a19575156374ce2d5e8fd715e9cf30f6d6b1c238c01a43f677419d9b95461795ef7e3a003f175ea75dfbe2c09ca7d57981f6fb386df22230eba789e39894bdb6f20974e0fb6687c6359c2b55ac0abd81768db9e5ed1538d74780bbedf4f378fb89ca8b9eb6ce52f69ca1f0ae7fa62ba171defd62e6657c143e2639b3d6d4c9fadfb7c7cc4cdf583b9253dc07a267627e828d03b8166931623845ea79225cb554cf77f9db81b9b73297f03e5536685fd7f459db04674f6dc78c4a63f514d8e20878e91519f6c7ea6b486948c457dd7eba796ecdb8e7d6773819195bfe481d7b57e122e5666e7a8a62cfa67e39d438bcde20f6f68c2ecdd5b583922bb05317e72fe6ca8479b20c3da5e467cee3f9648dce22433735d911645d33c799b76be0e91fe0086d737f0e81fb93cdbbb4f3332a95e7863578f612e0cfa530d1cbd81530dfc6ca99d6fd8e93b5e4f545693e09d29573548d78a96a63eb636da9f2dae8e65e35590ced55b707d7adadc56b478d379db5be2167ce0469652dd37914bf99423cd62c696846d6f043cf8dbbfd1bf79f73092642c6be6ff3ac58239ba5482734c7f7f11fd41877dd9be6f1c1ebf2f1f1e0def33b18e51ff1a31a5b47c8825ed45ec7b7f9a10df9beae157a9f4950e95a194ad489bbf027dab589dd60388bbbb11bed1a06ed77c13a68d43017ffb086c9fcfea11aa6124bf3715ed530b74c2f79d96bf2b33c0dc507da3eebb5e0f5397275b447077b4fb1040fc569ce52801ef9a8f54e102f40fef62d18fd276b0dec9cad7a4f557dea2de1f92c9bc46de56a0d25027dbbb932903eca75d6ebe6d5accee7fde3bc745eedf742bdf24d607a013ad7e68c371f93fc995777fb98e4020fb34bd7e3a8f727630573656cf55098bfbe645c2cca28021c9ff163dbe242ef1afbfb07fa0dc6a099b72a6b46f4f8dfe47d69d61684566d61b5059eff28732b3fe2763ed6e57117f591ff27e2f384c242af8c17ea9c2cdf592a7b077614e6ecb8b50714fe8e8e11591d3cadd9bf08dc2b56242f2cd37cc447793447d9c4c3594761ae58c1fd6f1e7ed36779502b9bf163689f057330e1f9960b3f9107b3d7690af852e542785f5a582e0b6b78d57e359ce5dec212246a5e903d3f92da388d532dc087e9c6e302bff1c68e4f6007c634b7d5f7f4555bdc1c437faf86effa6731c3b6229b610c594af748d6f1d3f2ecedb5706b0fe0be348e0bc51cb3aef5675c2a2e6588656dbcffa9dfb318b616e676dd934e8122a75e02f3456381f3393a3fff13fd627a9eae8cf1d1d5f36265b2389f596bae5d4b20e3363df9bdf8978be2c2af979a87cf94ca1a55b51f296d12d817762f0e66749fda036b60a63c67508ffd1be34fe3efa2fa19548ec5db5a82e435f5753aed8dddb382953d80fa16ec9b89f8e87ebedf1741f66647cd52edac598ee376cdf2ca590fed7ea49cd38f54403f92f1f2db7bcdaff3fd12e31d891679a326ea605dee997249e7caa7b4783d1e56cab85a276fbdcf3fb322fee6bc2f32dcabb406de86408fbaecfa73cd95c4b7b30c57d5e33d4ac486dcad951a6c2f53bb4fe925aace5b86d362089c166cece9b37c18ca9aab615e72c33772cbbb0647bc40d6f9d9dfd5f962779427743dadebec5c8cf23d7acf95f392b962adcb68f6a283bbcba3994eb0908e90ddb0f5cbd65e827a36b717a0d63ca6b020115a5be96ab2a6d616e8363774fcb13fb686fe630ffade9e9fc11777521827afa0729957522b1c85e70edbd47c673d2ce69305f4cbffb5f5787bcc141423dd3a174bdcdfbd33dd354406dbd4b0cf587feab4325b7803f6dcc75aad4a85db4c314f4eeb3a59005e93bbd7a1b3a51da3df593398b3803a97ab9c73d3b6a3753435c64dec3af5f755ad5fd0e1bf4898636d170ab0fe4b1f53c67b80f66d6b5fa27dbec427d759e21ad1647170010bbeaedea9caf537d711c159fd7c9dad7af0aebf66b807bdcae321dbd2f295a9fe1ffa19165e276215a79ee64a945198f53257dede23c27cd4d048fbee99fd6f1c271e0ec041508f33f89c8d7c64d73ab1aa77466b10bf7322a5ee68f8d07a213a803a933f4fac1078cb683fe71eaf7da72df9ec5c97944f22cde5ceda5df37e3cdd36e4b361bf133441608fb7f9037be6bf670ff846680d617e8b077c23b4c61c5877748effc6f5c3f2fa8ef54ee5f9b12e30ace319d7760ee28da3c67e5f2bf7dcbdfe838ef50ffd1dde03ef73e9a8673ff62ddcdfc6016ffd75d9986fc74af5ba0829ad98cef961d70ccd33d3b5669e1e8d331f89857e6ec3f50e2d9b1b67ec6cf4703de13bbefc3fe76ca0f0160f72d8b03d10a4df9de4ad3a310f4d5e9a9bd752fc202d7bcaac9bba7ecbefd3827a73e657182e46ebf1268744cd8747f3ea94f80ce43b98077f97339c1218d3d461d7f466af22ed17fbd70a7b44f8f39e0e5beb7846f1b5dd7bfe03be5202bac3b53d1a85c5cc389e883f51e71295e76c837cd6b8e55feb97cb7c32c57d307f6b0f3462d5ffe2faa5f05a0c364b16328fc3d7c0e08acaf57b07b343af5feff65affd9fa7d15c5cef5fb2a665d7f7381e379f3bca5315dc63169c5d57be078b8e697e63af7292cc3babdcec15f037f530f0f76cf0de64ae8b93b8c49b67b41309f0c3d975af3eeebf7d7bc4bf2f7eff49a978f89a3e707bbb7c16b5e7e2e391a4f33f44c51c87cf9b89fa1335bcf8f2b27627816fc22fc9819c7afd6be10e7ca26831ca41e659b56ece98df2fd5c1109afd2dfdd1fdf397fff6762583d0f57a487bcc953f69936f8dc260bee3524060e571de3a8ee3687ae75b1d1f3b64d2be6af2f19ee8d67eb23736580fd79e82f5ea6b3c9225b8cf20e8ddfe8ef9dff1391e753477c3ffa93f1a1db3173d9074aebea91bc79eee8b1b045be6981f9553d3df4a709dcebd36de09486a18f71dcc274b214fdc9f0ecefb5d8952f3b5e6f599597074c8b75f427da00f0a46c6cddc4f25c5f7eb1b9ef96cdebf45b4d6e4c743bee65f18bc08bdaf00330fe2c18d5eb1bf06614d6cbff22bec2284c291f20a6f292678aefe6bab24d92937ceec8f7b7e3be69e6177f29cf4ceae9bcb1fa0ed7181bd73c50fb93d5728e3ad673a9e7dde4fd359388e00769eeb7cff25ea92f0629fafece98a3b6754dde69594dabbfb5eebd7a154fe4fe2717c529158f17cf8ed2f834b02f3af699cc9413ef1d66558d92d558a1f138760ff74d91fafb2b15dbd2e3d79b4783d0e0f2160ea53791e1136771e0f7b5ef003b63f138d99bb690a9e132f58dfe50b0fb809b30791cfb1587119777f36758884a4bbbc1bbb626fc90c3605efd378ad9ff33fa2fadbe60e0cea4fcb74eaec23277fd56723523db41fb8ebbe8f7d6e0ac8b1adbcce153cd717fa6cce19aa7aefd6edccee3dea531c5ff819a76370f2895c3bcc503ea76f08006a306cf643cd3f9bca0fff51a79b96639df42e7fd099f278f13369df1ed08c5014271d7f2d789e089bc9eee86edd8cef7ad5eee3aa75f710e37b96963deb390bdeac823726d55fd4d0ec76635b94bfe43fccaf2d3ff0ff995fff5437e65c6ce7fc7cfe83873eef8195a5a62bf4c85c17e496fe2f09f686cac7f82f73315b4b6877c3e43ae4fdfaa77b77a152de5be8685de5fdfed795c1777741a99b52773d69e0a76ac8ca9e737f49ae7ca338a31cfabc9b43a4be7c6b88c1953d6ae59d7d944f53c14a3c7c733c4e846155bf2f25771a5e945f141fa457e4b1bf247e3ab4e1e1adfaab783c574f3c6b6ddbbae06b05ef93c9861672fe9c4ccbc51d4ec0f375e7e6fae7978b38fb307fd28eb3bbcae6c5fa7b220cffc0ebfa6f600bfe6f23b5cb6ed7ef70ba7df3dc7fdee0c972d972355efaf5353f9271ca980ade81ccfed28bfcc954da3f78ae17a9da4021d6fba57f13057d6681f452bc5efee2deaada9bc7324b99cde227714fdeefcbe4984bfafda370ccfe8a1230f7ef9db7bcd559e1edf6b3287b74211387e561bd7a206f3c9a7e4142c77b3a747bf0386bbf933f3d01957e28ced4e9cf17ed1ee47e9f9791b13ea37b90c4d0abf18b9d053e10eb4bd1a025ff20f31a08b575abf15bd8325cdc7da3fe472d5626fbf4cdd248eddb18adf11eb2db35c945fddbd24069fbfbc7116dcedc9e857bca6dcf3e743cf97bcb85353ac93df8b9377d32d36444797d58c45fed5fa5f0b277f0e5e2fd262c4c99f45f5efa74a7c9d2a833360bb77c30278ebf497c362f474998e84cf85fe74712cc8a175cc33701f31ef5bed556eeea49d4b928a2db29b8a1535f11b793c67c68cc3b9da5753b48e5cbbc1b71acf294d5e9fe2fc63e7b0bb0edc9ebbea9d6bddbafda2eeeddad37813bfe23c0c98dae87c2c767304f3be871dc7ccdbd5bd58a44e9c421f025e03152708e4c0776d0edde836876ee7be7ebad07dacc0ed0b5ae11dd717a08b58f63f14b54669cdcd48f2dbdcbd3d1b611d0476ceb86be6719c027fcd74cc291503624ecf945d97ad1850e7efe3efc4151db6e64eef82583ef7763efe2f6abcb4f28acb3aafd85cf3ff71ed955a9f6e095ad74a9436b89e60dd9173601f2b3ee87a127d523d3fb7dff743cfc75b7d70f3ccb9ad35351c6e1d21d308f77169bfb7b615ade9e747dfbeafb275ee6b581976849e5d6a580d3b35ac381cc6967293c3983ef7e3c05e665b5b8b3724df4fae59333cc736c5417b9367b1d4b9167eaf993d509ed1dddcbb5b7b50716b3763fecfb433bed59b584efaec6870c6767078b7732a9c7741fb72c88bcbb936f87e0e897abe26cdc7f24ff30549208bbcdf3fd28739ac7aa2c76e679d80e6a6e5ac1f7a8c482d534b9bbd3242bb87fa14d8a211d8aae1dac115c58cdfc90d30ebacebbe26d6df0b26aae8258b5257b080def5d1673eef99e9cc117e6b3cae79ce1aadf08498ffea2636c2fbeae26016f259975e0cce01172b3d4ce7fbcf23f033eb12f7dbe6cab3847c80775d3ccdf7513aef539c01d652dcc4cbd8ed2f321ffcf8c533dde76ff6ad9dd9b3f6fef578a56a86e1ca7e3abd8f8ed7d97e9a0506dcf78f5fa4e7b97221fec9e2b0d17391f225ffce5e6df5acfd95bd8aec36cb31f00837b4f237b8a1d967ff356e68f6fdbec70dcdfcfe21def4a4e2869eb4b9a12b5f969a432b91d19942dbc3566c8ac6c2456ba5e1ffb5ec440b8fe9029f05dbe7283fd13a02b0bf995838bee2775a4b53aad7d275d4c27096fbf63dd1bf7b7db5c6a97eb5ef67157e2215ba3d88b676d5abd9b807d6c9584bc1247f6e7dd72eb05d7a6ce21243c1e8fdbf8aa78a675bcf475b43fc6d4596be8e2443ebe24cd073e8f3d4c6b1618de5b7b560a1ff56b45852cc487eed8ab33f8ce3848d03c378d33b567147d7ba65f45e6b3f0ec57138a651a2ce3878367a2a967a746f4ed38eb8e1d0b215ec9a499e287f895e0b639a13b583bfac39e734bed78f1b78f0d8dfab673f8a4fae12e35ea3ea1c70c34d5f3bfbfbe830d3075f7e6201c70e6857f4b502f3d14dd3c6fa8ac4ab7b15fd29e55f4e1564ab82d8b59f3e4b0df5a9b214fdbd1b4f15f9e4425e6f2806a361ea1743c1eb3d7f7a8a5cb83df373265f7633da676cf8c392e825eb3fce68fab971d69fce68fac7de0d8416a7f4c1c7bd8105d4b1f5a33fddc5fe748ffc8f80f15f7c11efefae7e1d5a8fb7e26bdc5b098d2941e7bfd68b4e86296f1c41534d511b1ad15246ffad45ee8716abc375910a4cff0cb61df6c6ce5377dcd09b3cbacdb5c2bbe68fab5fc2d948aeeab1784c69ac5194a8bbeaef05d6895e37b04633277fae6b65aae8d2d891af97921be86bab585f5b7178f67bb1b075dc98accdc3ace4dc499607d75efe31126b8fd65d9058f89d479f298c7becca66a4ae4cc14cd4383a797d4b407381ce054f793a382375b9b59f3e717c20c0dc76e0f2f13e1ba1797df9443670a50ffde92e3b2cf42e8c3cde5fb5ffd1fc4ebc465e3ed1793d253ee2f4c1753855acc2ffc2ef3b9bdcbcfedcb17e8e8b066eaedaf7c897efb2756fae1d209bdf732dfefa05fec4daefa8f65b9bcbec6392dfbe4619c477af99a4c28cc5ef97f13d591f8ddee5766f1bb96f44e343f09a13cada95d8ec5d6a9f41cdf398d92f33fd1252b80cb2363b7b0ef05a2efd37b3d97b54e5de88cefc1d7f813b8fc06b89cf6fd54bb474d393197d72ae762af31b9567d7bac7ee911c1f8d076b6a9676f83a4d1c77273eafbc5e79e89c63f066b351cd99cbf17df81833eb7fffecf37b62e82997f6d9973673363f3dfb5e5267a44a376cc9daeb2fd35bb6a43c0b99750fe356f3b7cdbeb17f9bfbbead0bc5eea13975ce95673613db5639ff4e7fb0a50fb76ed80dde390bfa525c7e17d6cf7a70ef525c2f1df76edb49562fa2c1bd5ff2c2cc95b2976b99622d8b48e2ebb6446d8ef3b4cd714e71efd7bcdfbb88e653c2360cf28b52f10ed87555dcda7954eb574607578f79f609fa3cf05e1463bfbf0cdd4774a3491cc45bcbdfc979f3e7f35ece3b4821b6d107b666a923435ccab7f3a710a7a3eb6fc639b7eff1745918ea7d3e3134be63b5e213b3ec369f5819f7dc8f33bdbebaf47b7e3bc62576b39bc7873d97a68c6e0eecf5d75a9389abb56e5b84ebecc29cb32b7b50eb6eca6eba728ed55cdca8cb0e6d59928dd87d34beb438b9156c17ee71d611bfa1da6bb86f2963fc8ed7e7968db49e7cc5fa8278b1e24fcf197bb7aab859f1736a5e6cf3a1eb8187b0d1a359ad837fd7d87bb09d1d3d9db56ffab6ff9bffa6497399d1242cc7e6142456e6f5875c1c2e078bf7bc60fdbaa62fdac007a756b547cd81dd88d9aed905fa45469b6436594bf3af97cba2d46b2cedae72689f293739cb67c6319e2768bee5933b560733ce1e28f7b1476a9fdbdaffaa62b83bcf38359fb14ee7cad36953f6edee17c82e3f7f8c4276cd34b85dc919e72cf72bebb25b57fe4c3d27b8b61fa37b173eb251f2657733ffe454737ff22716cff7123ca1e6a1249a5d840f408d7d452a8251e84fa3fa1d9cd114d96666df326b99c9a936b8a8265b8e5fc2ae97bc3d17e95b7f5ddb88d167fa31b91cd83d2f840bc60f05ff5168f813b675f57bf2beb9ef585fa3ec0b6edb65dadef06c72f377941fbcfbec18e77a5dde19e721f299eff98ef41ea9ec916276f89672e1dae3038d0ba9e7f2e9a2ee5c6195984d9ef347d6313c77787677c34be5fbeac35d60bb89eb4c3fb7ce82f8e479ec836d974f80879b5882339ade1edfd677f031e617fceeca3f7af753950368bd3bcea559c574a21d36f6d327d142f6a7bbdb71507b5d97efe027d6c5ebab028a4fe0f9d66587fc628ba99bb2e75f675f0f191f96d751abfbe3aad89e9793e8da63ccfa077fc619a93af92e3c46d0c357f9d9a1f7a8dd6ae71be8bd1237efc71fa37aaf37f3f2f73876d9dff0f6229557a063e37b755ec6bfbbb1cfe5f7c930def4b5d81de33ce3fd77a76dbd967a36e4d6e15d565f4241e5971afb9be2c6698d7dab9ff29be79859af3dc0a5793b31867ca8f5dd35d0e6ab699c4f2d9f2ef6a7bb886b3fcbfdc5c5d98d648b8e39989857e4e6525fc1772a86fe74771466e265f7b6c3395276cf48fe743f0cfdfe12fa58dfe2cb4e8b64d5185b6364efefade1eabcba8f25a8cfbc3eef9edfe173667cc5477004d6967c4bf5ed63387f1fc88759743eacd6f3a2ea07b35144f890d2b4eb3c2773cfaf39b0bd99e114fb2516c13a65de2e6afa197a6e7f331eb53b7ddde2a636fa69f13a2e1ed034b7b6f00ce2234fe41b7d9dda9589211559d8901aec0f71bd9760b2a0b116d1c6d1c2956d496ffd0eecc9b7fb3f97d27cc2dcebcaeb13e461726b2c5ac8bb0ff34eac3631f79d3cc0d7b0f74b7d01f785dc8d5dc97d16b2506b1ad1ef2d36c698ea59c1fc4e3ecf46d49cefab0d3ae3f7eb1b7db16bba6fbff58cf1bfe7c6f8d756793a793d381f84f2dd38f894dae7e2605b825196cff4983b87aea38df17ae9d2e1d7c240194bc1a4e37bc7f8ef77f358689df3c66caf9dcb5c73774fd7e1142852332f8d319122955745e397f2e7e5413bdb1f9e9cae79bd972b9bc855dfd97bd2d90b80ec47b4b6f34ca7749b30575b2356426bb8cc774466cfda135ce8ca4bf241f39ccf530ebe01dd3b053f1dc5c8fb654cde85939fd20cd70eb05db932d88c5aefa9e4492ff3ae5dd744cb73600f049a377bdbb3627fccde6b7a035f466b36af9cf5e3df36117ebf73313e75bf537bec1ff1e5ba7efba1e7bf783d056be2377a0935be8274f226ddba075b67f95ae67fdcda8e5c8dde207b37a01f807916b205ed77aad7cb5d7e39184f6a7d49f349cae2e7fba02372cf96a6cdf918bcc2ef2642766b3ee8f5f0c8bb36f64c9f736fc022bba99768434fc95b6b64d0e66fa0ecdc8ddf381a6f5c90ed9cbbb67561f7722786f64fc7f5dcb945dfb5e959575fb83d5624d79d6d89f6d8d4b9ff4d958e00d4405af7df7da67c5e3d38af4eeace8d5786206dd9fa375d37bd69c3d4dda6ac4da3b8865aef6bc2f7b149caef00ec06b58f66f0ad11cb5fdee02862f14276cf02dd9ceebf9b7f169690213bc8e7c88abdad2564c85febfcbbdef0cd32baf7af3defb3c934f38afc3a57681ed83ced9a9386163bd18ceab24b18071376da79d03676d462e34487e5283ab9499c79a310e69aceab377e07fadb0dae8013e5ef5c317feb73d6615bbc452c487ed179efab638861fb5ce1da6b871e2b8e2dd97dd21caffc3d57d4fa7f8c5d2935eeef9f39e9bd73705664296f6fb7d7f44d5e19826bfe98e4f1ea4b142a6e215d28b8f756e4ebc3671ccbb59956fdbd51dbeef06cf93decae7cdff7293609f64b285ef06f9eb90febf6f40641d7397a0f6bfb9ec4f81c4896856bcb826bca99c79c634b057d27579b88aea14cd2143477ea73f4eed935c3dcc53179ff12af31f4f671fbdace7768f514fd427136f299d1bc6efa6abce1d8a9754f12e1fe6c6f48c98303f6e41db89aa2865e1fe04a93f8e48e7963b5384c8d97744eaed3f97ee20178b215abc4396fbafb6df212df5a044d5d38821509d8f8bbfbdda4a931aeebb13d6bafc33e6df9da741ef601fd20749f32868173df386e98b5e884f1a6dfeef1ece4c6c59a61fb75a79e07f629bbf713e98d65df83e35b3e902f28df87fffb8e673d5e6fb69e5c7b29061df55fdebdefacc14e7ffcd6da407eadcdf093607f47ef3c2f064cfcc85d476d4dc3fd9ab219f55aa7bebf1af37bfbed816f4bdf9a3542d5fbc27e1dd8275ad3aefeb6b35ffb1ad57a9c4fd6542ff2e0ec2a14677f7f19bb258f507fc1681406a3c161e32cdbe7ed81a709d1aa3796987c661d905c3e7f9d51fc39d5fed33f3b3058dac14fa43eb1a18b2a0771afa6597f5b9347a37dce82ffcd5b5f0fe4a05b3c4025fea0b40dce483d79c5b01dab5da70ac6293aa3298b7d23b68feb6bc5b5ff37a36cbf3352138c591e9ebcded3d14ba4c8b541ffac610f68ec6017beafe450aaf17dc3d04bbaf180810c3dab827d5d06fc71fc4ede3dfc49de7db325cfadd7ff037687f60fe4f0c7fe01f2c92aacba9e77c5db141761ccd35dadfbdbbe1af96956c7c9685e8b7c015b41be00708595eba33a83670aeeefb33b6aa9254eab2387760a762536bfac43c4d25c8eff09af93fb137fd0b6cbe76ae72ace912b9bc6cc2fc5c71313dbfa168cf2d3ca59b7b189a73636b1eedf793a79a51673cfa475fff2ad1ea65ddcce285efea863fa987c73631cd95a1cdcd7051f5167c79cac873fedbe33ba6778e30c57fe2bf8397f18cd0a5bbeb0cfa4b86e885f69ecd79907dcd44fcfc47672b5c0bd5dcd3dbca5b403e01d4683e3c67929b9e51b3c38de2e4adf7a51a34704c55af3448edc5198ce1cb13e73f0ef958dbd14bc3ee07f2bbfb9c680c6af5e2fcfaa585c9620cf4dfd9de8378531e4e595e33f59bbccb83eb276b73df2dc440cfdd7fb3cac5be07b8f60ce403b95e4bab7ddb9eeb3cff4fad518a70a43cbe830527a504c6f1fd879d95582d817f2baaf99ce4797756aac11b4a07aa3df826efffc617d82aa3fa7ff42d7dcf6f57aaa705d92dbe0b7c038038c11157e6f79ba4a4a8e6cf943f867ea3d30fea1af86bef27998119c311a23cd1e44c0bb96c4e8cc857a3eda27ae0ebed55ba9dd5eee190fb40d4a9b43695150efa5d9daded5c353a38f5f894fae69456ecfba1a0c970cde07b5b6796c7a7deb6b3b46d79b076f47e3e099f9857e6176acf270935899eea0779305d7c6efc6cba194dc9b3c0dcf4aef5f0fb93de1947f7d26da66433f096adb8175477f139bb0d8d86aec8d3e098f1d854fc3f57569ae3039e45d60c799fbcacc75dbc7c5b9939ed4731d3576c7d43815b57fb9e94999a7585fb53e568d67daecadd4536a7dad1983e9d34a8efe2b8a6deead4f580777fa6a9871a973b3f0eed0db02b896fa7bcabc25f661e22b3a1709be3034fb5364a309a6495bb9917499295106b8ce09fcedd5ebbbb19f5811c1c89c880d2fd0f7e2f8c54dfd5e8cd60c791ef29900a3f2ff183b0a31d2f21c245651ae31f86e87b1ab0d1ec53b7bf3cdeb113ec4d6be24310fb52fd7d5594f7c7fd863339cafed7a37b477ffbbb60278649e083e57db63ed803899294f684e28bbf199aabb4d8873d7d5bb1bae83ee11d7f97bea7de9395defe321ba67973e40c91f89efbb3ef8bb58fa8efdb86b73478314f9d0257614f95f5b45be1aa53f56d4f6c6ad7b49b26d552fc0cfc5be0ae4efaf5e2f473e5a44d63d1a7fc2ddfa7999198463a2e37d67ca53b61845bfc87865b0cfc6f53d89dec669fe3ac69ccf5df687d88b3bbe585d7ba8d6da728179b87eb8669c1b7e41573f1a6ffed19ad723066709df6fc23942fce40830e13ece4b95d848c841f2d74965f34610cb2a72f16e69e7c05e1e7e62ff9a1ad6f1d5a8ce4df33073f267b08562699fd6f5bf51b93bc0a2367f43db53b45f542f2eb17a9f698527542c6c5327aae8ea9fe10cf74437aefd98100cb2bc1c78d0db145fe9719a017e5e166a5b84ce48fc7e25be10f43326ee19c59eddf63a4ad4c494568668f8bb816ac49a6cc64b792d6aaa213ca17d50daedd6b3a22c1841ddd5de3acb14e30cc1ae848b5194625f9a59e3dff1a5d933e0115fbae6e09876e7a6a50b937baee3812a9e607821c9b8927ed07fe2cf7ecf777584df3a933721fc3b5165bbe12cb31409f79eb27e4c653bb8fe15f4d97e8637ecfd628d6324c68fe38d5d5597211a8bc0d9d76fc50584e705fba9b8ce877cb30f3d9f72f2f00270898d07b89e87bfb95ccff81cff677e7aa72ff0a08f0ee347ced9f65e3e91fdfbb5b5b5d8db631bd1d8cf4efebc188da5c6d90db61473eeb97650b836da779b2440d759cb621ec56fd6d8d24dc17ab5c6f1cad8458ddc04f06e29f2ceb52fe8fdd0fe4e7db18cc9a4c4e8bf1cb67a2ecc6a8d82646be7e8dbab79371229722ded5cf1af92739c5d8fb8f7f22e5e109dcf13e0257dc3b814fc9cd266c1f31ce811bdb9ef786be43b3d98ecfb3fd2831956b1b6d5eb8cb571efce98cbe99574da16e0dfb270cec3accfe0953ebe50f1388a0f627fef76e6372c64678d46dde282c6cf75d41ee8d7e33314d73f68ec1a75efea1e8ef0db6af7aaeeb562630fae6e22151ed9db37ebe5553c59d9b32a4753ae293206687f9f7ce4e724620b0fc28b092dc37564d1ad7a04d7182b7ee77d717fc41383d9a9f7348c5de50fa1b5eaed9789d7578fe023d832e1e8aece430ee7f73a7deb55b5c154ddb969bbcfc4b5cd44ddc970ae573d974efe3c539ea4a9314e699eb4928314726f44e78bcabdb538c07d56e7e8e16f69f1900b4f07af002ddfdf185324482b67f9fc3159b4f27397835fb47b642ce89181f1d4a3ccdf61fbee1711d660539e389afbdc35827b7976a0d17b0a14a9ccd7798e5ef13e86d439dcc441814d453ece98f23bf17fafed3c6b722a50cfc7313a9d5f08b9ebabc21f74ac4d361fcbe2716b3f9bc142993d2b0f6c0b786778794ec8ffe9b9d3512fbe04747ef57e8f0465bb44692e337df3f41e5d229bbc351bf51edebea2cee0278a2ba0d6b8ebe64d8f28def42a16a5dfa1c58f41fa526bdbf806f3dddc8f85badb1ce02ca47b789427bc3e26d3668e999d2312a7357b44797340efb7568cc41b2796c7b73f1c74cd2fb3972d9e0e0c933f66cea17afdb6ea76ff2d9b6c8ac87f4bc959f0df5e3fa55605f9967a4e8d1dd6e7991947c87b4f0d41f2779b6486735b746d82ca6bc5d24d9bc6da94d337c607db412edf668353b33a2b28cdbcce3a0d68e8d55cd7a48f8c7b6672eb355b9d3a1f003336453163d13ed7bcd2feef1ab52fce7a64393c205fcbda22d81fb7fccd79b23cfbf0fc7b635ccffbbaccdb327d8bff85b1d6bbd62133beb56fb7b74eae89ed18356689baffe63a7dd8b7946ed8908e71dc851f6eabafbec4bb42bd6fff97f60a7bd63630d0b45f1ef07c7287c3293359b77444865ac06a39f16d0ac67e955cf5edfb082e8b9f61cfd7327e9eac33a2874e74b9597f8bd1b16bac71b0ef61e92306238ccd29f9b5787a2bed35d279e61477bf757367cc78bec4dd775427b7df91f21defbddfe9d1b9a86de1ed777bdfdf7eb7cefa3435cf8112165edfc71a998a707046aae525c793d70f4e53ca464c274b71b307bfe017e60d5cd3b9b22abfb1b145ac35f0883f51c6065c7f8270d873e28a762e9887efaf7d5a5cd7236358e9e37a3b1657e676e4a2378eaa931e343cbf54fea3d24eaecf8474f5f592a849f4bc1cd53d0d6cec7bcbc635d7a8b7ab72fe0fbc23df4ffc960edb4fb8a3e4a0ca5be8cdbcc567306ae1d4facbd3c6199a5e2f8fd1fadff44c89c640fac9721d4c16edbcc6d5b57d4a77acb4e772e62952dfec813646ea2581e989cb73e0a85faee50287ffa66735f310bdf8bac69adfb8875e79405b2dbeecbcbd75dc2456e18ca6d2ca41e30afbba9d772dd72e8b9bd2f3b62603f48ecc9365e82925d743ced5c2998d22a82977ea6d311af895563ed679b6d5d88f2fbb9521c29ca2ef6af3b953581a26bfec73744eabbc525ffd32a1d7b9c103f50aba4af65ac2350dd2a33b6a68525ebd44be588a94b98e4a385f55e9c338ce594cef20f4656a3e39f9200a6f45f58c5073ddafb5cee7c6f817a5f35cf956ded731a5f21a45795ee398fe59a2ebf3b0e6c6eed98fe1bde2f75158cc4137a68a03cfa0530e358cf561abe7b80fa708cf333dcab0be6a54e92ad2efaaee5c5cbf1e8574ff475eea03cf9467a87f7ce8393356502b96618f295e5fb55d47155ce7f36edcb3783d9e568a59f524bff59e20b6c1bec020f61d2bf4268b421b85b1dd1b041c3e548c1b6ee8495a9e170be9aa7bef53387674ad28b5f5abe763062f45d6cdf36d4ca5a20a94cd2936e250f08b88c91bb6d7d64c31332a370ccfa27a2c41a30770967beddc388b4cbce7b02e11ff9dbb7a35c97ca4eeee13f8b85cbdd673e1f6bde19a7379cd6f176bb0b7e6c86cf6b0eb9b64d6fcdd71a1377403d395f1f27b6be4a7765ceb5ac7147461c8be226bacc686275afc2e6b67d813681f403ee4f95f2be32551f7653df6f9cfa2de03c54cbf848bdb6b987f7f1e7ead1933f5e61170e2d96b33b7343d4f5768ef4ca6688d172bb027951df8ed631c21edc7a3b3e6e4bfbe4818ff0b3165a33764be7fc92b6df7c9f44f43af0afffd324f900f2267fe551d438e6592b7ee3fae780816d1fa108ca2169efbb1b36d662fcfde5e4bbdbd15d77e88907f3830a7e79ad36519bb4543eb18f945e71b7b335193e7676f87d78d57e4e9ca99d2b175ca9b3be887b6f3cceb07065af33ef2f544347792e827cbd84a804be38bcd51d5fd119b077f1f4c844c67fc956fe0bdd97dfa08de7bbe75f073e973aeb3f70a626ea2f3fb7a91163ad8fc060f05ccbf7cacaf1b09a01d4c7ccdd90dcc2df29720865d391ac51d29a72be7681891bc76c4a1ae994bd514e295114bcada5c9a8638fdf5de5b9ebdc44dddbe556c6c35738d43b89888d29bc0f63ef3ed2d5dd310dbb53713f9176cdf2dacb996367f9a126de2869fdfb0dd10d70b68bdcdf8be0160b23397974f69c512559d57d6904fc3d1a0659f5b69decad0c79779bb4bb818dd7f5f6473b6d4f7bafa26317761319753a889ce300f74c96d7658009e4295e6634e5f3ee92b36c9f77a0a9ab787f2ffb55e5ba9e76955b67541ce02647fce0be013659e1dbf4f34d088b030ef5a1b8ff308f63d992b4f37b48249ae5579a2fc0f38834a5cf6c9eec5c1ac319603c113c8998bfd2252b7f9bccc74a8336765cc3643fb9587f7c19a3895ce67753e8fcbfd7aa7debfc35c4356242f2cd3a471ebf5196b1c4f944f99ae1c0df9440d3ef1403e9e88de714a38f3e295cd60f899b5ffad7a349797e15e3d3a2df71cd8800e3ea7326e68f4992f764c9f7941d6c26c8bcf9ed4be0e839533adf630b103c4c77926b9f814eb31523136e93da77e17439ce2eda26c4bbe95d2c5ecb98e9a6d9cd860e20d0edfeac2b8abadc7e76c32535a67c940b1c53a91afaead31cf257ca5e57e58fb89f5b57596a9d71b2cbd9e86f163045389f61be40cf4cf147cc3c43c6951bcd1cc75bda68cf1d9c3fa8fc6a627678091fc9a9e17fa93b030ccdf5b6310a358c435c446edc975c4c774e927538e26585b7b570ea8395a6e1ced304fc4d4db85b36d4397d38dfd240fdf2dc6df003febd1b98318c811b1bd7a70dcd95c3eb15177386d3bbe8beca130dedac10170bba42e6af5e22800dc4ff4ffd0f798c26068cad2da8cac57dd5aaa8630f8d022f9d51a4b3abdbf2c45325c3b4feef0a67d56fb02ada33d194771197bcae680af1532d3befddcdb5c6a2fb9ab0b8307f8d0665b3dd72a3e34394d39b8d2bad70cb4d772d0947cefaf4f68ad7a84dbf0665e80c7990d7b7f08fc162cdf767c057f204663f322610ec397cb14784c36c9b6d1e383fc5bf3e48812b6ada2f4b172d6b84f9db2972bb3e22827b937f3807e1b8c1a3699f91daccdfd52f0f7d617e6c1343397e7c3002e97d573a27c2cb0af7a2f3ad0fdeeccbea0fd2bac573bf494fc1c88b04e2e5b7bb047ebcc437e5fcfb231c7fab2a155e2c35a7261ff10ad59bcc68a10f402daefffcd3a74adcdd71943038e9ad418e0d915069a997f4e4c4fd779187fc55aa23839c69a1334b73fc9bfea61cafbc6ef9cb5eddf3e822b75d1ef1ce160f5a2743ed23a7905b7ce52d93aea3568f68e23fb7a44e7c7c61e085b6779dd986a1a4c969897e95510170573ed68eb68579abb0bd95d0f38a5e2bd17594f654fd78791457cac2cbebe9b536b73f214e9e40af02ea62768e700c51a358f5be35dd0b8ab0c6e4e8e383d3325d6b4374fc83d2ded6c54cf5a34b92928bba02571e1f76b3e7807c541b678f622f81dddc755be9bb1b58393e6849795ae217b9bbabd81fc3e19e277e6dfa7c1294f9e091c13a4f6f20bbeb31ce7317e67578f68ae07f6f9057fdcd01c96f765df470cbdbd96fafd65b84e62017a31ec8100df920c44cfacae3bfb7d0d3dabb586285d3032df709f228f677adef37a71d43596e81bdf13abf084fc1cf4ac02ff8eff0df3d78d30d73ff3c5eef8d89a2e31e0238dc11079220fab526a368f7faad9dc9b27f9d94b02785f4b91c65edfda79700e4499f725fad3af97cbe2f56fff1f70dcf6c0562628665207141e09c7a6bbc135b0d56b5d33aae38fe557a3af1cad5f71b32febaa9f17e817112fbbe9089ed3fe7b3e7f1d17b80f3f8cdf272f29d4ff7ad1c9ef5b3bbf7c8fea9aa187ff6e828e8f635d761fdc3dfd8d1c0d3bbf0fe4685ea22d792ed8a924bec7b914aef45050bfc6cf2bc54c57d7f1afc584bc77738fdee2f7fcd7eacb2c3ef40bb295bf5c4745f6a8ef3a2adea33731acebe463f77958189767578f8e8b725d3fb63fefe7f64779ba32cce2ad17fd0b72bcba7024f9e688e82d8eb60e70b1a5337d2c61db00da4769300a63e4afd11c71501be8d73ed4d250cb5c95e0335cdc6ddb80f32d6d7cf2a6b75430367c4af2f783e243cf63ff4bfc5d9e334d5fa1d407eed4df34717d1dfaa38a1b7a2882bf6b7187d85ab4a66d1d8bfb6ff4ac6f9d296b23e15db17642a92fe4e29e963d47c7163044c164dac29ea8b1674b18574d9f51ad3508712b6067f9633ddf7f26ead78bc4395b702e663418d0d88e9afb81d49b18fb8eef0b5a1ffb4f696e9ba7f7511ecff711feefb6be873345dfded056a23497bac744cf850f3d67e687f63d1a6be23efeb4f9dd13ce98f3fd0d610eb9e89cd233597e953af333d667c0f7aff558be360259afbb3207465d477261503b9a68c53fe869ea18abdbbe673051a5b96215f3a839bf24275aee4bb8d70d6e39bc5f7783c6bebba3c19ffafbfb1afcc1649ab9ceb4c45e9ceedb18f0133678fdbe445b767ec026db64ffaa4a2cbdf506ed714f4a7bd459a7a06d84f849f0bdebd33bd55bd2bc26aaaf81fe35e6999d6be3c6b877ec513c06159e00fddb8ed65c695ce7b6af43f6c8dbb7f7c683e776cf151ceeef1fc839a27554f24d388c5e64037746ce90bbbcc2383e857ad1efadd37ea71b3af355ed8060801b1af297cb4c6fbecf7cff09712bfe4e6a5f2b66b6d0a33f0ddc573118bc953aeaadfbce9527e0d3e2fc2d4767f1879ea7ed7dbe759663af37e85e27862ccd9598b12d3e8d99ec85a1970437b8d4e15c659ffd3ded73e6f70ff55d3a958f51f0e78aee2f1648ee98e4135ea729ccb372399038a9954768d4535ab9a4e58ee5268131437101d35b8973d366d6aebd30751bfd33fd308e457b2c7c2a6f7587cf7146b87acafadcedbc9023647e7b3f3ee85fd4b64c2d73f8825f6bed7c6df65362d7a0ae9936c68ee0b20339cb9db6b658f7fcfca6712130ced43b74bc37e10e237d0da3289da3df5a0fff366ffd569a4fd4f67eb9f88975d9386a6c569a7d77f50baaf169f8948497e343cf9935007a96e4fe14e6ba13ef426355668d352a409dc1ec4f4f5e997737a5cb0c8f69e612ed583a6748eec57c27c11632efdacdb357fa4d143f99933fdbfae01c386bb40e915f9379bbd09fc63837e9daebcfbad737021da3ad3de8c1bd89de10b386a9dcffbdface8d3dff708da2d1936c61aebaf6fee7ef35fe9e6ecd61e1dae23948acd7465eacc90d57d50bdaf3f8adbdff9d189cdd078fe0240ae4dba1e7d26befa1dac6442df0dfa2aebd807b36e0bdac13c379ccc4d76a314faa5ad2ca1f61fe06b42f2c73a01a42b5b6d3b6cec0ad3eaaf6b791efe1f11c94f7bfbedbe2780bf57e35e6d4a41e7e6f538c97a0f71959ba660e5e359d8c47a2a56e023dcf80adfde1fb8f75d355344b958d682957dc816d1daf927789de13f7ebc0adfd320c68cd07b2af72c710e30fe378fea7b691e0884f18eb1b49a50ebabf8f7fbb9893027afd3d451e18fd9787f6f79cd46fa7c650daf46461d3fbace2f0a9cee92318456989b50f5e8fe9cad124b8d67e4a91dff5de3325762e185f831d2364bb1df16be3685fdb11c105a13d5e0cd9777895d2b7bd46e12b2d69ae48ff24d6e4cecd3d3f0ef4dc818f8b5ad72ca60fb8555afe0ef0ce225f0ff396943c034c9f247a2fd14b3afaab6afb7466e67e94c7737959cc63eb4d37a5378881fad3539bc7f4e69e6d7f1bb5677573606a966a68e6d2a4efeff7e3a3a6c4a03dcaebe97dfcbd97ae6182e6956c46d6db5a30cbf1881eb63937debf6d6f883f7eed8ac73d1b3dab91e7fbda2a72ea812ea3f5742f7e9b2b26076340ddbbb61badfb5ad25b7fd95edb9dda0cedfc1e1d4fa0e7503e06cdc37ad512a94031d3d67e3af0de03c570f07be04646d70d309615ecb090f9fd7f722633dff7c8997cf5f7a52d970b0e0f2c8d83c51c536d5ec73e68c88b6c9c64f55c7b80b12accdf6214d714c1185fc3eaa25999eb68b1e6b835de97e1939476db320e7b9ddeade1309c383287e391ea6370f1b34da8f53beb9336b6169aa5c99cef8e6f7c17d5a3f179bd8bab512276cd33581b9983b55129cda4c6b80bf3287e33054bb7ea58b09cc794f32d456b7ccf1f8e9005ce547a17c87d5e3bf3eb63cdcc656b6c7663497b3227dfa0c59ec2e1bbe7e8290689750a64385bf07cef06e499e8ec62ee7dc53c36791c28960cbf1d97f6a053ef0cbf8b89c750071d854fc0156f983c11e4743006e4be3ed27993a4bc77041b84e2aa5bfd0b34c744b93edf6537f42656bc524c6afe9e8f0b232d9ff984e2acc036ffe5ead4f5d7f12fee1a47f769ac9dc6bde8b187fb357e4bea63fc316aef8907b453a9eb3ff43ce4e4b6546fbf8cfd7da77ee327f71b61ffc1b96b68966a76dcdbd8d8624c788c6ee55cda5a0c785f8d6a6d198fdc035d53fdbd739cf86befbeb61ec756729ff1e0592258016f5c1ef1e5368e2acd275651db9c9b1a9b9f0b6c5b6adb7a1b83f6881e67e8ef72d1af30a339a333fc611cb39fe62b2187cdd4871ec961e7550e7bd3efc861c7124ff3a0a143b255e46bf9bdcd1ec630f4455223896a4e9d36df12fdf79ac3bfe4546a9ec15e191bd17a81c9320b6cad1a730e5fdd97d757a39aab72cddc8360c9ee69139e2a9e215a3fa3c626a1bf9baeb314fcab50f355f5d4e89d684d70b45a703ebcd5fb09fa45567070edc1da4fa48beba8a0b93135c6dff24351fcd77d26333a865fdec48aaabad617e543f4d578d3930a97e2f2447ec45b8ff1ef525fd48aade3a61bbbad07c0e629688db8007a0d9f12f56b4cd7803352fb6f8ffb5b600bc0d18a7ebbc1bc8e435749514cd8d0009b2966539bcd7829fb05a99ecfcf94e6a4c0fb672096dc5e80ff37c6750ddb36133589d07b161f93cb6545309bae21482b674a3d6b28d5f878d0fefde2e60ac8da657413397c303c7bebdffcbd26cd15669e901fa2fa8276f6124b75636a1f72f2a3b57e1e5cef6c15eb44bf33e811b2cf40b6835abf1dda22f775d1f9f7d90bd9868d4dae14af37e6a0207c5e8c0e3eaf27d7367fa47bd0cd258979a3192dbc0656657cb9b746681bfb7dad50ca0e73c78ca3edf7d89cb4f7246f0d903563ded7d224b690fbfdce92e2bb7d806f4faf79145c277fa6741b99fb90f13c6dec0bd824644b5b5a8f0ffc460e30d72b779fd5bfafce81eefce426d10684fff1e1fa60fd9b65bbdeb7732731e6f41449be9233be1b5b8b1ec83764de2e4fcbf81b7354109b6773b42fdb676291fd796bf5ac339cc9d631c63dbcdd7f9f416e732179bb2ecdcc38982be31b7f8ffe34b8676f69e2ecc262ae3c677e9187544e189d491d5a501b8a43823d33eb5e7b4df57b52b6c15cf2c00d4870f0ed7fa7ea9403d163357bfecc4acc34e6524e83240e190dadc6fce5cf33da36307b5f0817a34bd8e917ece85802fa4b896d9e62eec6c99abf9e6a4c6db6d5f378fefa02dcd70f5c9b02feb339fe6965d34087747378ec2ca4b8f009ee92b1cde8bd4aceacfa99d4193495a6b49634b15b562f8c3dfa1c1d6d1aba575893128d6db56f535f5041e30af0b24d1e50f47e9cfdbd009e499eef5d6bbcc1fba5444380b5a5df882bd8b3e291b8625990e7a6be20475b14db3574576ff3fe416f9b298681f279dad8ea7536591fdd3a8f7be0683e52ff7b18430d7534f8da00af258c7fb58748dc7da5b48ec8de19ac48aefa526a8ed3fc6cd097a60f3e70bca29d1df1590a4651bb8742aa3162559f86807932e83381f91db23f27bfaf1501f0ec4c2517b81bf8357dadfa86e6f8ab80cb908a60546abfe198dd2f1afc09c2ca78f91dbce6ad6b2a9e91dfc1a8e667ab38f6ebeb806b20c07cd0759e0c74145c6e6e65368ab006202f2700f52051e2f623b1b96cae5ee18ffb212b3d197aeeebb8cd9fa8b1afc84599fbc05c8ab4fe807079eb99cf642fe25cd46451f32df5cc9a9fa2e609afaec39c2d26ad4b51e68f0e1417355a275faeb3bc96f57e1ff37b9c6ee4670ed00f35c17a87a57d9a8da274b357e38d7d943e6c2bf37be6278cddb57bec20b66ac58f2dceb02f741e980cd78f90e9ce1aad097da6b4f884f45c051e89ca8f66fa540b868308f904cd7f2beaf99323b7d421514057acb49ba1ab684493262ce614c7ed0d0dbc835734388cfc69a29ebd5e1e6fec813ffd1224d88fc035d77a1ffde638b472fa2d2e24655954f1e795ad096c38dcf9ed795991b81e9da7256fba5f94fc6c293b5654ffcfadf1d860fe93b63daac6f63ecf11c125dad209fdde4bac575c7f2a35146aad16b38fe236621b08a794ff255cdefad3e7addee8572fa87ef533b1e7577f179ef03c13df59910bdcaf0dbee0726b0f36c075ac3c573cfce599407af8eb1ecfdae6614efeea7e8453de969f6cace3739df1c788b7773b7320d49815156f3d394f805beb2a0a6fbde767b783d7bafe8e200e46e199c49f57127f5e5d47052d8cf7922bda59b49f813560c465e8d916d10809afd8a79bde592394f62b6d4f0b74968837d70f5307bcd7ff64d73698d303d58edf858ef81dea67956e617befe8613c57ccb46127bfbaed643387c0d8b3b68dcbb18d7b6abf6bd1f1aee79533bdf5ae67c0dbfe1ff6837ab0e7864c5ebbf265edf8b4723627732c19baa5a956647de8e640d1cd816ac9b59febd9f213bace88acc99ab90ec5d76eb1728e10cfaed17a5464ac7dd4d55fe308bf7d6e6e5c4c1fc8711cb7f64042dfc5c59f90fafa9d3c0475afa77fb94efedcf856cc6b7de1e504917db99fdb11c3f7899031dfb8d7ce65ff5d371fe2e11428524bcba88dd317536f7781fe6ac2894569587e660bcca3c9bcff77d61d7f7eeec41893218a31127f3760d7c2ee767dc7edabd27c5cf5c947aeeda65e6295f94501788ad19c2b6e3123f51197ad8f486fbda0b36e7a53f76f84ec8189ceb583b7c37b63d67bc273398ace8b5d7e5ee9614ad6cc9fad8ed7ca4c7f2e287c65b1529eff3d37c6bffcafc1b9ac75ba3fc56a0883e043cff73fa9afa1f124b159f44f62330734a68412fbf61d7c44c6f041d2ba98c8f6d45877bcefec272a7ed762cf10d3ffb1782f0f6caba5555063ce009757e627a9fc05f0d1839671dd07093ac9bda75380b50bd540b18eb3e698a79cf3f93b18bbf66f1fc1f8c4e8771f7a78f17751f6cee95fa2f959513c75838be3846cc082c1f30cceae62160dfc1653231b726a64325523837be48df59348916b4c25afec2d28b9da9d508078b7f9fcbcfd3eb3ff315e0fc2312ebf4fb4b8437b803ec324c39685ed6870043cd908efaf39e034d059d13acb491e07ecd7644d6c5c1e93f383b7eefef2ba67f01078ade8540e13e6737cf21d2bf6f751e993a773164b817fbb6bff76cafcf6ff7a3f39ddf5fcccb5e55e5d5b68e8149fbd3e531bcf20ae78152e1fc6f183a91be0b563fa89c5f43130f9a8fad919c6cf0f8b7904f59057726e62ad31a343bb54b1c220b1ae731a2f5de9dd64bf1bb840b2270d05c57050a339cdf44b8e6b1655ae8baa59e0786bf6fa92bef54ca89fa033c2fb1263e4573b9c7315725c1d9860b44e6bad82c6f8a60d3ef3b155f82876902f3b92bbf9dcf4e4939748c25451e3a92247ae6245d389769e2ad26983621167fdb955e42bfabb6b3f7dc2da4be2187a4f0c669e693df6c8afde11fc36663ec93ae6c5a8151e6d6b0f52a87936d70d6f0f74ad17ddeb490ce6ead69875d4963efc443a0765ff3299736ba2c6d0b7c6fb3edccf033e2383b713a393d7b7e0ec46b6c5539e0ef66e2078428beb1ce66d51dbbe5a2b3a0e122ba37de5d24fa6d6305a8f981344e6e0dadb1c103f1b17accd23c335d0b3cfaedfc6feb865f3f1fe1f657fe6e0b7e4f1c699b6f47c092ff3644de53e9ffeac8c29c5275872543f917c27bcafb432900f9ce5f46f577deada847023da66a55bf5d64331b95571be615b1217a5eed18cf4a592fffeb3d023d0c52d758d3e1c913ff68fdb67665d3de2273bb59f7cecee0d47fe9858d72726c26faf8d99db633d561dfbad9d580de4e795b9ab608462679187c5067ff0c6b9d2bc5f5fc898f77938c638c68055e3e20cefd594c40aab16ec3bcfb694c664bf75e7fd41a3d244b610384ee3b21f05f6ada787fe34aa7f335544d1efaf3f3789f95969692472e68ca6b59667afea1540f3a6fa301742f63e994aef628545221ab15227cfc79cd46d8344cef07910c6b4c6d60d7e905e7b4d7a8af4c5f4e4d37c8224678acee7995e9da5b2bf0b634eafe5c7169f4f949d1f0ce6c01180ced6521380d298079e08f7a7fbccf66291f7fb477ca19ebf87b13f553547a2b1eef5eff0438cade243cf9ffcdd80d49d5ca8a5a3b9756d5a87e7768e41771ec931b8c57c12563906ad8b472096be804baac636dee512707a983fcb75a6c027a07dcf8654b53fcefd50ec2a7a7bcd70ed00f6c7ace63aa1f5cf2ff59a68e2a216b82e2dff3467a4f7000bccfcfe111bacd5fdf9ea0d1b4cefe50fffab936fab3c6fe1dc06fe74e3a872be2be560ea1a1cbdeb5e44746ae313d17d6de786e38edc3060d6ba716858738baa87951c85902fd6195b2c472e97e3b1c5976c8c7fbb464e71861f63aa2651da92087dabdd338f0b4bc802f9183b3a7026d2fca427e0a1df03fee5b2d00703e0e0a5e346e5e9e4bfbe809d99ef5ff2f93e62ec6ee58f8f401f3323fac9cc5cf0fc5bc231f500bfece3985b5c2b12e97c5df38c1a913857affcf1b24685cfe3e213eb83be2eeef6103da8859279edba2295236bdbf6ad9e1773e5b9638d7c87bb9ee1f278c47eab55ffd778d0eee565b85acbb8afa951437167287281ec9446fa7e9b3922f0eda10e65d8f285acdb0bc5afb86b61f7f4c0cedbfd821f81b38c29dce9d885bd2b822d04ecd1deca5a7ac4682e3a7ac86a4c5085036cc6e4878db334bd9ea4b84e8031ae934513935ff111f071f41b478d37d65030b08f7066b843facdbf21bf689344d9ad1ad8b73485a0261608f3489aac45c9d0e2e5c73a922c23d286661c7f98b1b5d0ea58961e2b0a933e0c7de89f225c2abb7b731665b516ee53a56983e38aa7f4514c44a5bbc37e671ba380bef3da895b687e57d1f95dc59def7216d4773db7be0bede1ffad7ce396d4a2199c36934b79a2f9e8a91caa45700c904f3d78bba8a9f18ece0f63fc9bf40d2cbcde32acefa9c6f3487a9b01c6ec72aad71c6845fe995d0927dc558ce78916036edc8e4fae59efc959d73eb554d153ccccdf45e8d957f6d9cfbcbc20c5bd63656ec4c1079718a7fb7b8fcff9ceea79756a2fd0ef80eb5658ffe6c13df18dda771b3b9397188e2fc0708cc697f9689ccf8ce31934a6c6043f69c6098d7744f1fc5b0b07516a42436ddc5a567ade18af2015b351946dea9c2ed4ebbc3df6ed597d72ebf983bf2f5bda892f5130a96bbb8d33476f6b540ee2f9c494b64efe3cb5c7544df3360ea7eaadc3d89ecc2b72b1c65cc8912bf37a98707d94c2d3d6366714655eff26f6cef0953c0d085e88730e5358b86a3c638cb71aa4e8fd713d16b070d0c360941806d0cc20beac3e88b7669efa7d8c1b36fbc36ceb54b82d81c7735d8f13bcdb6d8c608706c4a63fc538bad1f842c7bbdb0ecc7eb9ef31576b65bbc8f87e563927dedfea792af513e1bd8d565f138cd52dec636d7bf09ccca1a642fe1bf4df62ce7c36b574ef620a1aeb9cb73e80739567fbeef6786c5a63037e110fb7a2c8574b91ce5a62f5490fd30d2c00dde7a29d3dc18d0391f46df5396b07ad317e5fd57dcd4259166ef02ff3e2e02a5629cfbd36ce1bc50f24f79f05a37c318fe2376b6ce9ba29e933478cbdc9329e2a7132bba301b92ee2ce1ae777dec1d59977e0ac01646f2a1dd82e2e36146faebd5e3e707bd2c92c357261fd584f653f28fef7cf743ebe9c342b34354b550d719a1923c24f14c52b7317b5e2cf17127f923e3db3ee2f2defc7e06f47541f61129fb10670f086755b6a9fa9caf1c5254f75733c5aefc9c55d55d8acaefc6c5261a40103198c6aceb92efda16fcd21e6045acc2375659983f1da52ddda069167cba5a672a5e556b80289a715cb6b68f059029a8f91215a6fda58d66d9d6767cadc41552be9e40e30fbeb939f5847afefc666625dc026da5a19cb70f572c18e624c634c6995158cde73677cf472233ec21c6534f6a4e405f69208ce09f4dfa66272c7bbb55653bac7968e2fe7fba18835b19faafa59399f04cb07b954e84d15b522b0cd03350fff5a19d3cc19a9099c4da36103bb359d0469a07c7efabdf8e4f6f2783ac1dfe68ca6ccb318df7bc4f30fca5eb8d6ba1977f7ac34d7e0316e6bc5f1cf92f81400f79ec68903f8b5086fef869e1247757febed33aaeb0c69f4453877cef7361f2455b36a6b79cd4b3e7367ddcee3a51d79bc62654735c6b36779de2efbe31862c1ed2dad3820e31657d60367b57383f70ad63fcdd1cdfc96d6dd6fc7a357364ee33e9fb75ee8fe2ee6be1df861d0216af76fc1336ee04778bd57f01bbd133b25ad0cb1614bd59d5bbeabe8f72cca57ac63c68d033e1b8ed1fbf7f71fe8f2ee3b6c7c37ae843d63b97d9b31d5f36e1dfd893668e21f688c54f44fed734ad967e1efd8e798b1cfc04fa03c4bded73124bdfcaf5611a6a566a1b74331a559c78738be3c6df530251ac56b4ae385b67b8db9867c72f1804da7fa295a36fdfabdb3177febfdf3b679af3b314f03c3447c33b06dc8ff99638d47c89760dcff67a9110d1c07ab5e84be3bdc245646c6718df7cb53fab69f620e689c2f2c3104276edc762736bfc31f7ef0f71dfe3ce42d5a31332f97f2cfe3d606eec1d507a0d549b4a0484f161ea7d9a8cc4bd1e31265fe17bace4a0d25bea275db785e7fda7e5ea533e8efaa67d1fe75b70d84f97946b1f2d94fd6d9b6b38f8717077de6d3ee7a08954f64e7a2a54190d1f7a8f0d46ccd02ec13ee29ecb64ff81a369f42f7ff3e9c8b075c6eeb5e234d98399c5800d7c4a958cc6ce57f86f36014533d564dcc90ab47bfa99eb2b89d67321dc0855131139c09f79e29b83afdcce5d953f2aa17fdde33ed49e399af5e2fcf6a7e0a93e06c703e9c37e6f438ad7b52e62955af79f5ded0cb331ab3bf9fb0b80bcd510b0f7232548da8286b9a83d0b391dfd358fbcc3b77c5628df7e360d4e95aece2f518af482ec7d85bc78abf3589711cc68f2b6b6c8089c7be7ecff581d423db7b2fc3f961b6d65af768d49a2dcd9c62be0d46942e7f3337d9f9eeab2ff3b22a6a6e8cce7ad08eee5d47cf95d725b6c3eb97982bb798f173a3b42f87fe3d3427652e5c2ae609be0f687bebd1afba6f9f7f4d475d84e70b255b7bc089bb1fd7d4e2d92536cfd43aff71bf5ddcc47573b4e271ac5f69cae0efcee9f7f93fc30d77d53aeee841e19ee588aa8d2866ba121a75955f8dd8788ffbc56cdb4ce7e32573de53fe39e6fac23cdb344619f3e9cac3c2b597a9df8b4173ca55c02f69d738f7e5bffda3fe70a83f94395972864cd478d38baf645c4a0ea7eadf0c5b8a702d2a6abf0fad019d337123bde7e01d700ec2d84f0f8b11f028d7e7c1dfe31745becb3e180d569ab0fc3005d77084daff7544d532c6e66fb29eb83ac024678df6a7e91521f683387384cef4d5977029e3219f6824f9134b20f11275ffa7c3ad67563dcdf7e68760bb7f303fc537e70734c85ad7e48d6b88aeec7fb1d65cdc980b5c4741e78aa59d67caf3ad71fad7ca78f977a9e140f47f2e81a38584afafbeff2ebcf5cc2ac6bd37f75e7163ee1be78bff384f92a3ee81cb9de06bfddde705c577345e045f23d3d7e4980328963e8ce32b1777e6a8fb5b3cefec1982d6c65170f496ef8071ebcc33ee8c55a7168a4f38e839734a734465a4e6c519eb2a3e2e5c67297a13de35b1846cf93f38b7f8637a07cbb7aef1d43b16cb27fcdefc132d09e5475a123be057db4f4f9eddd2a127675bbb2ed3e6d208461c0e090bdf13f91a46ff256df8abdfc5a48d07c25c89908f9bdef671a3dac79d4c519c7bdc382f079eafbb057c7dd52b55a83bf744b8145abd6ef05b65033d8fea00ec0fee07a1d67f789a81de7bd8e60d4136ef097cde787a60bf4f2de69118fa63e9326b7229b4ede485632791ed0c294e2071653fb7f3b66247de365b3914fe5259487e81c7ca1b45bf6b5cce22519331c1e42ce85ed310c52cd4fcb27dc6f839c643bdb5dfea716cf6539638449e3f4ec666b76de94c803635c3bd4e6b1e086decdade4fe4cb96c1bc410d7bb175960279d694c27355b6c7ebe503c89bbc9667ea3a6bdb3ac0d0623c01afc7adf41f2167d6752fb7af86bef2897f2fc731e99ffa438f0fe85b986eb8e9af25621fa8b54de5e527eb44dd85f13c963e883dfa70aea2306bfbeb8658f1089779b219faed7eddb063ccef004334b8061355040c01e445bb7285d669ebc822c61fb071674be707634d083683c4307960cb19c96b0a24df0b7339350489ee73775bf9446477880da0728cc0ed4872c041eaf72cd977acd0035ea8fc7956c600f2302efdec1ae715a1733edb3a2f8732af04df4e7891fc8976988da2df98870cec13f02a955a5f682ecbffde62febda3eba87bacad4efc6ccefa24b68d8b4b41efa791b57397231bae0b79f81b9ca3196ba2afe429c4c156b9a738589c8e3a96d30b8a8d333c907a3bfa9dec25da75c662cb1fe24899d7736abcdb02c1a403b78c8ef727e6ad020e19213e559a5cc866a3f58f715cd4bf8f73a2dbcff9776ebe24055d70d01fd146ef663eecd6351b87759da7fccd9ad69e2b6d0ad450712e367efe183dfcbbda168d78b9f90ac3539f6d4c4dea29dbea79c5fbe45d2b3b44e5bd9f71fe0af812d6e99cfedfd0a34cffef08fef7d659ca9e3314902fb9ead13977f1124ce26aae286d3ce46f54f8155abfaae96707c817b9754d7d268ceabc0e652779e7fd99b78f3cdb2adc9e65bcdb22b61513c60fe4f60813bb8ded04a935cef4768e7dddceb10b14160dad6f823d4371ad18fb49109bfdf888ed4e7e9d71e73bbeae7ba04713b7f5e540a785aa397860a362c12dfb9d31efd261e32cdfcafc3e8d55abdecd68e89e5ca87c5cd5eb359bacb32dd6e75fcc236b5363783ab986db7bac709d61b6b19731ce99ca17bf67957c6237e7a0f62ff9e7c74ffa59de7ac08b0779de8d33bc62bd658c612eeb93b3116833139b5ed625cbebf15ca2b873e6346b3da4fe12ba8a3684be01debceead8babc8828bebd0782d2a39836df9cbeb91c60255f525af3adb087fdba8857b86316dd69ff03e32bbf2cf68ac883dd03aed14e7ec62350875ac13d9b291704f7e4e7319fb7bcdf292380f6c8bc303c6e6e5995a195b9bfbcda9cbd53d5a9c67967d50ddf8d252638aa3dd568e457f58e14b803bb6e6d4bbbcd7fcf139634b65a17e8e05d8dd365637db02fe9acd4dd0185dd7ce9336aec253a26c6a8cd97c158537873d7d03675c3d8bca7b13ac6c43571e9d57edfc4a178618d79a5bf9311a03dfc4fec66cdd9cf65f9bf7abe70caf7f5f700baf278e5d67286c278bfa9cdaabb1afe4e1a6673176026cbe1ca7f3647970ede59f521394eb0fa37390f02cd279c472cfd33c8cdff87dbdb7f07993012f579dc3c27a2de398e4ee404788c220130c13f2d52bed39a8dfd478ea1a8b7cd7cf9c55b8c4b2a7ed18b734ff20e6c13cf9d82f6ec479b48671998b52a4ecbd8ccfb0bdaef02b18e758f28242ccf5ffb6254683f35c6ebfd22e62f25f744cb8d5093fc208e297326e80b5ac2b555d86e3d3e4bcb3b7c685f063cba2e45a00ffad23466ecf3ded5f71c60fd91a1c8b30f783da14ff6f18af4bfeb6e6d59a3ad7d64d3eb37bf53b2e7ead690b5dae5f19fd6ec78b3856a07acc31b689eb7ffb93b8c216ddec6575b83959f86efd273e4bbf1d7fd1bd4a2c6e0a749cf177e1737bb22e7b41ebef6ef7d64fd6291f97eda65e529de9433fb1429eefd61a83d30f62c6c7743178b822a2d582de0dc786724a6964a45e5faddfbbe2958eaf657c68f4dc953f2235067a4c5e5fb24d629ecc289ee832da6b53067fb3d0f39dab0f74dd0ca616f88d51a226989f9a8e63a7c6cb1dbf807bc63ce61376fbc4df8dc31bb915f26ff85dc0778e93d9088fad013938d0b849e7c9e0ec2762e82925574b1d9b945cbb8b2fccafeb51b9137f87e263f904b18ea3c61bfd33fd98e4d4fdc3027236af2fd2ca10d38a9f7aa285b3c9345df59e2abe49e8dbda850d9cf3d4062d8137e02b9e4c612e8db1a5a07972466a84bf6b787677c38566bae674b24c5dc5245c488373301aee5cdb3a4d95188d6bbab1f3f43db122c03f2b4f0c46cddfc15a807bcd1516ab45ff1d9dcf2e607997a6bfb7e2e6b88605f415c6aaaa09a139d3737f9ae0fcd3549192a98cfffd2fbd2f59bb39c7264c1beb1ff8ff6f73abffb7e2991bf135f75d1a3e68c569c58dc52bff42f4152d2ccfaba6efc43b1ff0fed56d7ce6620e757eefe5fddc1ae90ffbe779b5765e94d602018d0b7a3f2e46d1bfeff984e87c5cd4b998dbd7e911f4f336fdd26a5c1bf3d3114fb6f273e3ee3aa82e579a2555de6414def4597879a2ff16bff11af979e2f2277ad0c6837ad0c683baee95a614cee745a0b9d2899b94d13b573d87f0f72acf8afe46fa9a4cc17ab5c6f1cad8e5f01d9c5a1d3e4f30e687aaff353187333aff4ff754f622a88922dfe6bdd7acc3be251d75d85e5dd303de285bbe34ae6de47b874259dfa5346f4ec8476ad520bfb68af5b51506677a0e5af8458891ca18d04824ca2f8d19cc21a3137e474bdb7c544bbb1eef2a9ffb31c9e3c6dceb5c5c7fa22666e37714061fad33d2d36fe1bf9731df28447f336c536ce8eacf31969cf8f16e083526e29fdfee2930710e4427be88d2f94e42a5b7f37f3857a6182fdbdae1a057be2ff7ac967ab675023c0babd90e7bbfec9f287db12dd45b97646fe415afbfa6c447d71e607c1270fb0bc78571bc06bdb8d2e9dff4e4ababc37c61fc5cbc94d7a2a61ac2d32fefdae0d041be6efad653d13efff3d65b867ecffc44df649983f6f5e1fba8fbfac6f71be9796547bfb1664846bf0fb346de92e78a1776e37c1e705d43a4f4f4f1baefa845746a22541c7fb8efa31a1fd843c48e35c6b2ec7bd0cbf113f2b73dc420e59aefb45d4d0cd14b1b43c48cd7e235859eadf29bca5e9d9971dca1676dafc7af8db38ca7afe35ffe17f2874b3bdcc486b3d74f9bd75b559f6d637ff87b3ca6eee39afccd73c390eed98247edc0afd6f9f36fb477717f5af46b8675e5e34deff8e6f5b5cef10f701eff913d1fcff4fcecef0667a2333130fa2f78ddc099a6a95ae4ca6664bdad05332d6deed6599671f1ca8d242e3ee7af716ce879ad7b42c79fb84f446063d7714a7145812fe08ba5dd9112f47dde2e4fb126c563bc500c0794cce180b2848cd19b8985df7e3f48036579984da69cdeb7cdc1ff129b3de27a7e5e1982d4ec59da2433e5596af5c6667e71dbb6d5b889f2d9f573d49d5b3ea7bee717d93768ee63eb0d9db36f7b8a27bf7dfd3e7ff6ae98ff859ccfaa214ee9776adab65bf7da6d12af18dfba176b2bbf7d3ff5f963320d1f1a8b7d651fc205f09c727cbc2f219f5363b532a6196bfb852bbe66e91a66633f494bd27f1774734cef192c36d58f837c79e803b1b4b387e2466cb778bc5c7dafaffe61f49c6fe392aeae4df0a08a76eae400e5f3e2d4ef4fe9223ff0ee31f7bd2b5d9e50f013f98be466e16f842bb0cfd13975b6e877f6c0f47a398a254f9b9eb572a34e4c7eab9fada149f6e1019f6070f693ec5e3f4ba3afadebf7946f05bc091cbe41c3756411ce221de7a5006b08f90c9c6f021d653dfb33b3b1ee19cb99115279f265ec16830bb29bdcdca912fd5934e7fee4bf8edbbf8faa7903ccd2457a786ef5b8de4faf476a6f0959c0d546ac6d7a37366558eb75f6a07feb642952e63a2ad4638c9e5bf713c3fb4a0dfbfbb6e7d53caa5e221aabb29f71dfd37a0a262a3abf211717f4a462cbd65e9b35bec9f477301a84fe6498bdebd0df456119e0bbebb58dcfb80f576f73670704571f9e1afcb23c5c28f1a90cc7ca02256e69d4007f28bb77be910be0cfdd3dcd99a0e2203626ddfcfad498deb26915bfb3c1d5bfa1afbdc77b535ffba1e70b064b9dc419e68e6ddb0d882f591e2b1a07f8caf92ed2d346621cd08da8f9547c880b1bb505e3e5b7f75572c17671b53c211b74ef591cee96275c0719e73fe6190e64eeef1fc17b2f6a9e4ab677b9ca9932eb403b1b8a95fc7fccfd4977b2caf73f0cbfa03338809ac830a234828ad23313505140b9022af0ea9f55bb680a9be43adffbf75feb196445da2aaad9fdfeec60dac3838c3c7a9eba4c48a9daecfe037635c1a336ec8a7ac2318f77e2a6447be925e64597174ed0fbe82de68c224a887e97aa10b5f225a2dffe31fb6ef33fbb5889c43d2fe3c6ffe997616a0de68122c49e7f0499b8c130505fe537184c1cb9f6d2f0a820f612b027bff63b36e32ab00bd772299257bb02ab6dade0124ca1cef5533b90dff27a5c1ef3c2db9860ef444f1b1f165a97447cc6f9c9f6cd0cdfc4a444acf79cbffd3457b28074a0a2974be8da54a63fd1abd66eaeba895b611ffa2b5fe7b32eed6aa3a162afaf3b0ef011ae3b8da6947384f4006c23382f0bffbcbef8c7b49499f11faf04bcbcab7c966e7e59d0aa35fce3956ca5087756168ceb8ecb29e57c48954aca9c8a427b75240fd6d79d16dd16a75ecc5ae45145ec9e5b0cf24b4d07a7b270cf03ad38c9cc2c5d31511d275f63e012fbc648e2f3b6c330bf13cf7fa3e7158b785ec43ebce7b1fb2ff8b54ffbeb6fe882dad2057edea30b92b8eec9c948177e946f3d813d6d12c082285f5dab75c9879ca7c5db9ca7164ba3279bfc67f99c52e28daacf4c6d0db6b1966e51aebd6ce4b7ae6ec1ff61fdaebfea5bb71f482c96b4c97727e52bf921cfc1c5b8c01e60010a3119ef747328f0a7c7fe89f6702e6a503ec4bfc037fdbd3c19656fdf63fe1fbd27fe2fef8983bd5618fe89fe3467ec6263ce2758477d5b67407ba2dd8979f70673aaf12bbce137ae92b034ce8b46fbafb8cafcfdd8c50f4eea98419047f07ae5be726936fbb039e95be740966cd7af3188732761335900dcae54a6ef476926fd7eaf59df2b98431fec4966b48aef47b90caf2a7d3f6ecdfb111dbbe6fd286bb92f1d27484ea61debfefbbb630adb9a9ef3ceaa3a8eecd7bc4044b74cc1ac027e42917c06d1893e16171fb9fc26f6079b35e0f1906bd944bcb68b27037b1a8df1b2641cf7f33487b57dce82717fc4dffa3d77fed77c348ca9d0e82dd06f2c6bfc5e2f7b1fa0f1a875cca6feb85bfb1ea4560621fa5fe3abbdc01d6a71c374928e1eefe1c226ec2622fd7778f042f4fcada2f422cfeaa91f598b0b1c430e31795ec058ecf3361ebf1f0310bde00523b4aed957fc03c78a3ec509a43d1a579f871ad2f60bda1767a5fd8ca55ccada3d94cc795db3967cfff3bb95590f1320dd8b45a70363ecb736f686b0e574e384fdcdcfeb96dc2fbfe9b0688d76b2d7e3ba6ae3c09b9cf306eb6aa9a52f70c9def016f0193de58ea67ebdffded3c86eddbfb255d7742e73616f1714d4ccd666172f1ec5306f4f76c488f043c72d86f123adeefc25c54bbae0e2b8a817f2c36f3a698be9d7ad99f34bdaf8f7b2d8f3b8fe8d2ca6f975bb209713fbfe856ffdb9a6d574f1e91d6b5b95b8f1bc9842743026f329bafd0df914680cdb38cef5efb2cb4ffe1ad2c7276f7b58e1f1876bcc439f31238319853e4ff274f089fe97fbbb75fb9657757ac4437c83d6d494db6a10bfd5d060c0ff3245e94aca15408bdee23b7e15ae4631486f6bf2205dc14cc0f653637e07428cf42fcd3f1606c4f9828c3d7992b17b7a629b7f04feaac77cd46acbc4f7da27f65843018d1df8abfc271dbe8b41f606f311f87a5a3b6fe71b73b5e8ddfbe2bd9eaf9ff65bfb0e33736b1ef28a56b435e100abf1b90edc0bfb0b8195dbfad55288f1d1f32b51bba5add5d6b7f50e8938e7e5f7d69ed47e7c27d9f67c7ff1782f74b5da90fe653cd9b79637cf9a3fd598f99b7ca2de18fe8ed5f6533e48ab7b6fac22ae659a8b77048c9556f75ee0f1ed6ad33dd713ede2c305b6dce9ecebf37fe37fc67adb079ed7f4dd7b70ec3a193f8465baa7b5f45feca1cf73f417f6501e6a70af6b7a7744fbf4a54ff57fc3dee9620770fe6f09f1f3dddab9609c80bf91d3fe361fbec3fd04ac5f51baa071696dd1902f16820d4bd6ba6f96b9bfae8ff0580be1fea21642f102dba57c391efca424630afcc1baaddbf3d8bf7a9eba35dfaed71f72bdfa713dff36ebf22177f1a1f614111750afabdef8bdd42d7ec7317a81b59e3dd9164cb02dbcc8a11dd6f6a035c4d562da64a48a30fa7f3f6f8035d1da44bad88db2cb3b6f7efbc7eeb75746993fa01bec87e54fb5ca7cd1c43935cf75821e68d3af7511093d6942d7b197956aafb3675ce05ebb242670ffd91653236695d9a654ed5c37f9b96144266f5323753333f76b8a5faf8de5dce4a38f1db3bc79899bba03249bcc3357bf207d8c5d514fb52b4bd7dad00e63627b71c7cf7ecef5e8303eae2fb099ff3aa7a18e47d26421ca347b9daa03a9e151b49720bd6e53ba9681e6f763fb849db8a4ea188a14d7c87bc64a019bef53ddadd66fc7ed0cf31a2466e60d262f6ce4cff6fd0e07a3b1e71beffdc10389d0c3c74d2c5b0ff305c95e353e13ef9dddd813d87b934be8253ce49e3ed6e7967536adbff526ebe9b5fd4dc6fcbd96d95ee58d83ade5698ccee615308e06136a6bd1104fff63ee12f7e337645bbdcdb96dc7bbce53b93a38e7166a897afdd8dd0ac93e84fda1c723711fdad849c8350a2cbafd36a80dc94563559f411ce75b2cc729553cd938eaef5f5b4b2ab0f8ac69ab8da37b8e31466bf4497f0bac51ea312313b0e4a9a76f6f7166ebf556fe34176feb19bfa7276f6b64e37e0d2fb236416375f198f543bdec6588642a979b5001139fc08ed7cf9befd1a78758da071cf4fc1d1d7df7aebfe38bfa0b39575c5ee5195d2af1d230e28db631ccbd1eb1b38dc94ed7e664b2a662c3d2a2ccfdbbb63f5ded359e00f6d7b77802145137f1fae33a079af2baed5e4d52ec4bc4b582694c035fd4927da09188373cd177b45790de6cc2bd8ffcef2ff13c5fd5ec7cb2b926f1d5b1e723b35e5b0177bf2b24b63f9633abff2b395379b21bce031c1f1de5dee9ce2e085f1dda538f799140dfdf8ee9327413e3e21f0be0f5359656aa584356d5a5f4cd3ed71dcb8d61fd3dd40a6a7c256ffb51cdd23616a4f51f6e4a34573217a632334c954a4a1571d1f0c7febc1e419ece6a1f6353c73df512bedc99987e401fca22fdf59bcb22c4b1002f64057b0232a8cbbfa0492f7cbfa0eb63fef03ff9779b77a035e302dfabe3dbf5b4a58b583feee1b02e1f7538727e7ec4626deba9d3d4fce8926d63992fe9ae03264c1397df9d8f55c003abcf9f7beb43f5c54dea59f1478d8513ff44ef1bdef3637f618ee6b10f313d4bca145822073ca4ba31327ee4f350ebff87fac54dbebf2b9a6077ebf350c8ff7e5c534febf3c7f6ed65ea25c193fcd0e6a0fc922740ca658f7689f539eedeab85570563bb645ed5ec93d7f2a02c0c114f46b2655b8fa39ec749edcb42f4e1f650f30ceb206584753686cd115d74dfc959c99c761337f6e3f73cfeffabde8f65a3f56551e39c743610c453714e7d2f4f1ee309422cbc3cfdaae3a4ffcf30723fc9bc96e7fe347af8db9875f02fdbda431f5f8eed7f894f7859d3ff379bf8d23fd7ed266685f42667b0313cbac93378aa9f87f92d2fa1bdbf0dc81c1f71ddf23e3d899af81a8c997f863ad6ddb8617e1d2be765ba4b905cc062d99a3bdc653d7d9157d0dacc968155505b220fc2668c6b40d08cb53d2f1d1becad694d47fb3acbcf76f6583dd114d12f4c33cfd80e0ab8f2f89df4b32cd2b799e0fd4c635b5543c36addf767d9eee77af24b91ca7466fe07c9dd4ab28901dfc344f33e89fdf306ecb8ba2d659bae1ee6e41526eafaffd35ae3ff97b536416b0db55bcbeeff734ee3ab7cb8061be0950cff43bed185c88d8278aba67623b9a71bbde1ddfbddb60653f473ed0ab1e3abfb7ecedbef396b8019f277f93310133290ae5e135361b0f75a3fd3fde3c8d4a358d58f318bde87dad3e2a5aac7f3d8b120be6505b93d51107b54aaebd4c8f641a790d83503f9a02a916bc31a03099dc33c3262efaac197e8bdeb9ab6018ea910fdb46647a86f3637dfdb8c59e9161b055611db9c9421dee08966bc3aceee7b2d66ebfdf7928fdadc9cf619e3d0c81136277d7ac75189ed7bc3abcb85b1c2df8f1b216e625ca11e485d4fd3407b00b5290befeacec4d41ef2a28977cd4c616d9a0b93675583dfcc756aa4fff80e71fef40e5fe04f5b0a62966e5e023cc6978ef7cbdbba5c830d2b638cca08c9c336378798693fe173a4e32a5cf86eff858108f518ae4ab24632bb2f91359a6b9c9f9ffb6f42ff1b5c1ee539f6b9e9e7c53f1118a6f6b2da5ac1752f163fe17a65de892a1e75a2ae7e547e5585a8f6c1123815c749ea3dd51acfafb616b7edf7e95c18fa143bf0e26efd35f5e2c17e0135a3369e1f53ac6be6a5ddb789b0b2d6c6bed758b9a45c13b3ab5e4dfa710f4bd5e6e6ddf7c7f72392c1519fa0ee4b1d3f343fbafacea28f1e73276d9280f9363fba94c59841934be1425e73e7ab68ebde738d4dc9496c6e7e0d2cfae8da735f3a512cd06ba8bbb226e49ffa1de71cf4967779d8805f9b44ff006641fd2cd4db99d28cc7c49104986739e35805edea2985fb1b7dcb3495b9027b75f54b188834bbd7f35ebd1713f5c9a86d3b82f1afcdcd9bb93b6cedc501db74b05dc3498a5889716c563366a4cd4312e2065323722d37f5123342f7cb36c99726d5a3fdef2fe786b2e8e5c8b3e6378fd407635cb348b2862fe4a128f3a1fed8b0c5580679dccc83d56053eeea3db02ac3660c413682fc6e8d3aa8a7af747e7442c0bf2d5bbd325592cdcd4b8c4fd95e5c7dd1acb65c982a674c2f659b3e39f6e6b4e5b04ca2da79ec9fe737ff94527b9b4e905ee309c56887db87f76fb551e431b87e9277a26f4a9b9b1625f3a4edfb4d269f073e2cb5363aff38c2ed9c6902f37849d28883a31d7a3a7630a53dc8c1c2755c5fcae7753c1885d69dc3b0a82f942c2efad8df8c19c80f7b557acabbd9780187715c547d12a8e6fd08b832fcfda888700d63aa4ca9c2d6695faa715c104d0cf89c02b92de2e19caacfe17983de686b2316357ee34b67eab2adb18a7703aab587045af15207267cd21087ed9ee7370ffdc679e323e2dc08f4426e4479e5e3bde3e6fcc3fd0bb68bdb2e4255a38aceaff97597748af54b279185192b0bc33ffe314fe5649c2a8345aa08b3f162ca7abbc1e123e046899fb0b9723e643b90cdddd263a8ebcea632d7a43e1c7d58a874feb99ba69472dedcdafbe077cc2a8219ace2fa7af32c9787f259eabf4fcb433961e1febd569c7eca9952ce873f01371ae2d872d4166ae7f04a9e6c6c9de899dcadc736e04623c532ae3b42c7ac73d6efdec0bf78c77b296b796dc39adc82324c95a984648ffb2ff30873b0835af7c675c741bba4ad230c84c3d5b137a17792208f17b04c7ed023ea7e85ce79714132af67f1430bbd37a1532f3ea432c8a574b8e3a33ce046f9d61ab910c3233cd7dc25e5503f31a3c05ac6724f5e78d087ce397a9fb38a70bf3d2bbee23ec4570bc9ca751f1401b57ff820f3fe03f81f3a0a60f8a23e47193ca7a7642c53fd1d51e66a4ddf0bf49cdbb5c90fdbef061f197c2bd29711afa9fb37a23d6b1efbc7d1726d867b83e2858dc9420cdc8632b5b67f67337712b354227aaec7acbe365cdea6202756dc9852d3bf15e697d2553778c7a697934d64ee2107d70878e3d8f4af6b5333464f6dee610e9ef4389207517297bf102bc2b08947c9dbbc942e9f255f277ce5eaf4e76e7ab92b62f4b110dbd8eedc4c201eeae41acb187c3aa7de7d9f81381f913477abd3b72636d36b7149a11e61daf904b2d03f629eb01a006e42cb7b764d1d4da4cb257c1658c6e7dbbe1c4743b9a22b44177eb86784ef89d9bdb50c71bef93add3106bb63b05cb03a6fd83df0733ef3c4187fd3404ae647beac7961323f8657d58aaecd3aaf31c84f4e8d894d3e8ff5b4b6ee5cac24b89d7de3db4868cbb5e7d416f08f4dd08d95f3e1d6d8d1ba716b6d593f7e9fd2daeae8269eb4cba36ae7c2051dde61cc6a9dcc6fbbba36425f57049c39b1ae9df0dade896b0bb116fd3cf7fe09cdfdfaea61ccae14f389ce5e2dd98b2b96d57298dfc677d5bcdbd1d13cd57a191335b24788f77311625c91ff3a8f0b348f556f1eb14dea791e45e96fe7f1d19e0b7c8cc8af42f4bc19cf973953ee738c635ba715c92141620e351170df70dca458f3df666dd0e6d567f8e4c12e1d3fd989709c223cdfb72d0748b6e21c7bf968f3276325ef6ae72f097d06f11d27594cdb38f0237a5e3947ff06d3b4e6d387effeb58667470fe7215e887ab0f500d6f6737fea356c347dc8109f1db66bbb39afc1f9d18fb19d627479a89b87f4dc3b9e23a41f179f2e63bed753900cdde40320baa98d86f3a3f33c4e4d8c5eb7273f1e69305acf7e83654bcc07f64d3578c0b09662ef6ce68d8eb23ace0a457815c342a5ca8c3d6e13f31470a3464759fb097b47f406e995fdf12e7ce98cd7d39a6169efbcf9fdfb9f687b43a342245f217d30ee727966195acb6e129f83aeeff7bdf6abcda6bf56f9fb11c6da44b2747e76edf5c72f752f304f43f28f85782931465af132e748feef6be6e462dff5af6306b26e7f4f7cffc4d3106f7dd85f3fdd3fdaffb7ef7cdc7357d70ac2408899a77a960fb18a6dfdfe733bf75083a867d321e9c7391fae8e20a7663bfd92c3deb4a9547e458f00b76e19ba8989eb633ff39fce26aad394d2e5eedc9f781e17c6736bf8ed1da3d83b757ceb05bde972307e68af6e67b0b537175857dac338d00d76e4c337201dd9a4d277edfa89c9d4784ebfe66c054c4c6d67405b9a3cacaeef5c4829fa0ce4fda79aa080a1690edfd4ef7ec68b20e850c38fba7ce6f525e032a89bf29fe94c82b145b6d6e8bc4ed821d86099200ea6e9c39ac33e3b45305ec6f03cc9315ca723ed18d01948597c62f1af64717e684d49593c5ebd92c591cef077f27ff48bfc3f67497b4ceb976d72ef3a1ed16019133293d4c84c8003f62833f9155db632d36071dd4d8b6bad3b81ac53ff66fd723494b502c9caff7847ac3fd5589ff05bb517d71d07b1a1235518623d0cb095eadf209b4548a6bbeef4d1b5d6959a36d06fd4c648b669d66178c04f03fd754a7fbab8e6f2876bd32ca2f548d6dad939e59fe34fffe824ed37e29a1be8fb9bbd57fb5eb0ed71abc5e4f3e03791edcdc54f5824e75c713b7376ff6ead4ce9ebde86f515b6eb09cb0e1dadaed7d013bdb5979c93b0c37a3cbf1dd0f7b1eef7c3bde87a732fd2457f796f84ee1d356beae7f7e27bff33ed07bbbc1bef6621c4643ccaa4f55ecafc23b6232ac20cdb800613c041809add83d62e18e23a61cbbb87faa7850d36784dff0e971fec04e033079fc5740698b03ec396c1d333454fa6f5913e20ae53c5feba381ac488f46c618ab0c8b65c9134f3dbd46fd98826f411634e84b122ccd2e73de9a33d99c85a11a996df61ad977cd4d844dd297dee70867b71bf23d55ab73a2ba1bbfdb300bbbfc1fa744ec47351a5ad15996a2f3de2de1cea3056f448110e6c90b0a9cb7ddd15ee70d94ee94c391ffe38e568a458f7eb4e4b4fcaf99007da6828278beb4ecb6974dde34623796090d7477272477b7bbc98b2a91215fc265e7f6ca7c3bbca440d8ef3c7561be9263f9fd498e5185b1bdf9bae4acceb7cc0556fe7beb7d7d1dc7aa76eaf07e2f35e77392791ac75b7d7458975cbde5e2f5b7f49f9b4d7afed5e1786c45e6ff95785f9ec3cf62c96710da2dec453bcf6731e9e4553d91670ada271c0b5f3f1d9cf1792d880cf531c831f7d2ff4fca68aa4bfc2bdcb8291f9c728f7b93056c48de7d154aaa2f796f1055d0bf8fc666bd13f5bb82ea5758c3665316c206bc54daea862c50c9b312e2107d36259425704d92910d83bc677f931b7a28e5f371e65b4a71adb3b1dede378bc87df14d81be74717c96e63b0374e596a95988886203defc18ee54e74dee491dcfac07badb551981b1bcb407b0df6d2637f296bb0beaecf733a104cc11bcc4fae4eddc1461ecd4ba85391b0a5c39848ce867ba1ce86c597aace633b7b7ddcdad2a3e2e6327c89e435cf8a4f8d3d5d17d8b363cf917c936fad25d8d403bb18a3bd49dad45fc471d4f154783faa3ac57a47e08d6ca08d38ff6c52aee1defc64d96256e198ee51ec323cb5b5a17e548777280cd35d8deff9f8fceadcd4627e6b0b867a6e8ab8c81c9df66cbdde5b1d1da2556b0cfa4a2b530877d4cf4ea6b0ee8d4cd1ab2bdada612a446b1a99e291461e58b46f5bda248c2faed6b525831dfb40d2ce7b433bfd297d2169277e9fc3fadc08fbf5b4e2acdaf97085e8199727b5ede084f41f17e9397a1e2ae709ed23d9a27cb0030da45fec405fc9fcd8f605c92d15ea276907f2cbc69e7778b203f9c7d60e541276a0075bd4f0e73e3077d4878ce8438ac69fecc3566b6c51c6531fbcae0fd757b628c7a6106dc33179d683bda80c4b3216afa73759fcfdb5adbea9db91837d6b05b54bc71fb5ee0171df8d5e00362624d372e15511f3e1eaf485743ed0f5fd137d928518303414a1c5f0ad7c7b4e418d864e5fec30f4f4b45444f3bab537960bf9afd207d2a3e13d2675dd71740ab1cfe743aa3063d4d6650b79eb883f425b800de40d6816648c263e53fb59be703502c74f47f2529783af32c607c439e839d279c2c02aa8d5b9e14960c3e3c147790c7d295e527ec253ae158c24fe7e9499e1b7cd49645d86d4b3274dfe6dec7293916b6f7ce908f5bf495bfe9ec8b7813c901d175e556b34de8b392b77f649d0d13798ff5e6c6e7e83785a665461bf759b2bef4b4d4e338e273e824c59e76db8d8f74ffa8b3b19fbf11b932e0e11da10e7b16f9ba95fd797a8f1b821bfc461d8ab3fd894019ecb50edead0becdc3f07bf9d8933cb09775fe057f951afd93c7b917f3a3cb436d4a514ae6517469f3b68531bbc3baf087cdcd05d7e2d15e8b6d0ee9641d462ae84225fa7e1a786e7d0c63a35ab8e665af3f15f8d13ff75a71538871803cb6412f1e207f9cbf807b3b67a73e36da24f5cb49e9da3cbdb5e7b18bbfb5a7433635b63b7f76bfa636c82b38c6acece25deeefe734324387391c1a9e8ab1f3a01e4a28f16d6ce4c1b3cd2ae02617c7766369ba3e7803e9e0596ce96a93b53758a6759db72b5e07445dca0ac958e3b11fe725210ba37ddbca5c5e997dd76305bc76ab619bb36a8d11fd646471ee2d78c0444af7e23d0c8e6189688155f1c10ffbe1716cebf584f4a14db8b5201f0764179f6ef3794a0bea5e3698747c80e434f06fc7d9dd36912cf7b63d616bcfd118855eb23e78028f7e7763739c847e62d4f12766115831e281b1775ec3989174dd2ec34f5cbb39f5a5b88d9f45f250ff9baa94da37f8773dac02a7af7b5971a527fc0af1ac268e1f7d5380e47303637dd5f57720de35e0e25e9cc58eebc999a164e3fad10f7b9cedf6f8a6f7fc4683e77fdb0bb0f7ded2158eaf713e47a94fd5f86450afea1dad9a1fbdc1a159b747579b84386e741eeedafcad0385c7a15d8bc9fce4401e3e9187f34b7f69da1fac0f4e621c1c6b78a8c7f0e031ce61c94d6efef18b813c0a6b1efbe725a6c5dc28f10673deb19697473edc8e13d420f8bbb63d6694edb4c9c963469463c5d77e7b31e219bdf9d0fe6e3e52977b498fd07339c4e19bb92f9d11df8baf2e7d3f2afcfdd8ec299b9b070ac60b1aea8c732162c57e98b338ea8da736a9e3cd24a0378e36a96acc57f82e8c91f918fb4bc4170f008f9052ce8047367db685b6fe7296909f093f1d75b1ca3056add9c53b161ee02a99545ac721dce5d930adedbd47d5021cf64f729c8db2d3255adb2637036c0d427e473c2cf3caa2528459d6da34a6d45d11bfd805d836d6d7daae7a467acd263143c4c7dc5eacee0862f254cbc9dc29d2a5dcd881fd6ab6e7773a7d56a1e67afdbc4dc4459d66998d68353d1eeff47c0fd81dcc8c9585052b69b38b377d7c76e9d934604935b9121fee94a548deb83a03bdf1a5e84dfe02c4c651acc78d700d7a9dcd88e7d387fe913a4f0ef8237a11ae188ae07f0e1aaf21bad61b6f0dc9fe8b7f3d6e7426f3612d860e56c91de941b48afdb01d5eb4bda831580dd62f71ff5683e5608b63e12eaac65ff762f1409f67ac6a18c93cbe1f6b8ce13697c0e64006e2d5eaeb63a115bc6cd7f8f238c7eaa3570fc3bc1f6b9fa12f9dd258168dcce78abd223a19d86cb9ec5b119d6fb9ead778b0b9790fd3d8e6a48fe67d5d7fe22b92a15609f0e814c64a2f682236364573ef6a216d3171a0885f995d168c221e5245fcfa96cbc297229af6c44ddaf591c2df7d863ef952d4c3677ebcfed867728c1efbfbf43db0065a39c8789283f01aa9f3d145d3db9a54c7cfad03c698b58c4b60e6a90d31b9c55de1c759702c86489795cbecd3e6e63837c4f8e13bca87b96faf1dbee501fde6dacbef7fc84341f7a720f3b5f6294256028cf35a3f7ffd6cddd63144fba0c3da7d188b261f1f8fe718dd73c3f7d09e1ff7c70ce43372cc400e7a1eb71d977def6d077dffe337bec92f78fe56d035893dfab82e8d32acfa346289be2babf3579b76ff425f33af5b66740b907cd2d1301c3f6c428c2f8bf47d4c571ee3df9afc12d0cd62d532ff0f743388f9bbfb8979dada50dba7c609e8e1e0570ac6dacd037b13068dcfecd4e485d28826a53e350af5637895f531b34ae03dcdf594b89ecafab85a255126d9ef75325540639d561e33fce7ad6cd6e3fb52a8da48ff32910e717dcbeb4f05f9adffbce6fb73181ff48dbdd8f3e3ac8b3d17a21ffade1f3bf548ea94b303d1e77455ce0a90f38f4ed2d8bae0f85c8c6571cd425ecb717477ec79e56aa16c50ec4a69641f264e70adf2369fe1a61a38e6d017d8813c9ddd15c0baea6ab1201df1c98ffe602b6ded909d7cfa8f87fac78d2a6ceb36005baa93557b18e90d6da71ef710d6119bbc6aeca795c50dda477f5c2dbab9d8ae745320ae09e9d89b7e2ec20ceadad75899efd78ec7ccffbc5c33b5dcd5d47e6b688dca186c00b1bd0ff3c6409df627dd879435c0764d1c3fbe03e9f76e5d23e7dd3d32f897da39eac75736b5d3848ee7a8a719a2e917d7cceeb61635bf0b5b23f2b46a59a4d60b708d5a5caf20c6d8ab4e829feff258093b7df3eecf7763fc20b334facecd4b8ad15b5dd7a620afcb7dc89d20e8d5ca2b27355eeea43feef453fe83dae67272fc2fb623a0239087e127a003976e4d0321c784d8770121abed88fcb8def93697ae3f8f7bb1a01ee4c87e2ec59bb144b2ecf6bc041b0e492730ad5e1f5ab95b437add84c08d99347a2fe8253d1de039961272381471c1eab856788b3746f80511ff8e55bbcd1bae311e00af13c99157b476f66211a3f368bcbcf861dd89b5fc2accc0d715e834e98b2c56ccacf13901a644dfce7467177a9ea9a2f1e97188f747ac4fe799a2f380458b7edb5a61c802e48d571673ff869a4fc778bc17669d2f8bb03f3bdae81ed8cb8b2c8c5345e07b6364722f72d8e3060f6b8431b82a9ac258b80b36e001172b542d8c5f1ae8748cc7e7ce3a1a7d5384051b6874b5eac5355297ad46df642d3d295a582af62295933b1ae73a869c3ffa6598c9fa9025e3e49d32fad703dfe978ac5a50d779ac5ab30f47bf839d6aabdf59af4a4feae9eb5fbfba03fff04f7736d0535a9dd2e5fce896ea94ae649b86356070c5f2a7b87f242bb46b89ccb1128c7f09beffe1eabfeaef689ffcf119f6fa030d4edfe140bea5eb5c1883ded3ee67a4f744d8d6fd6e5ff7f632f02fe2b8d6fd7a71c9048d3e832db779cff3bdf5f5ffa5af2d26388f6962c081efc2b3899a89dba6e65fe377343b7bc7ea2cb1b0bff53732fd93fe90bed479800e683fda84cac60f6660bb102b6b0f3514cd973ae7dfbcbbc12b00dfa282f4426c137e8ef3638c666f6bd8f60639a06ddfdc37fd2274d98e8e4f9ff59fad35a2509f3b3b3ef5f91ffa4f29497adb5ac38bcd4939964dc7185765105cc9d84e578bc77b2e6cfb8de6dda3f3d8d6a970c1f5bfc115ccc441e33a4d5feeb32dc67327d6f3e4ea0dd6077f60de7d812d0301efb7871cedbe7c53ceb08ff9047edc0739872e15719daece39b6412451f6c0f33ffc33f521e9e0bbb9aa65f8a38ca3da521670d10761634e95073979759eb7f19a9d3f06f154b0a96601374a5dc01f78c6f325f2a4548c8d18b17a09b59d10af5ecaa27fd96ac5a72fce638789a1bee6ea0479c80ff617e07d9dac357dc6a3453441d7c2812c0cb3dd6052bad632c575542f3837fae1db817ff47c225dbc2b8161d8d67f23f2d635d7e223d796101f028c19c75a5f8232bcca1ad43821cfa5e89ca3d34725226bc23e63a47965513df0c857d8987b990b61cd39c711923940f7300773c81995b5d10072eab5304474e15dbc859eb0a567f1599bab581f7731148f183375dee2e3f9f87edc6be17a2fde2fc694fe2472b827bfe4b3e19ae8cc28f6ce1b1d72d5add119d607912ff7f6bea98431128f88efbf8d69ede546209dabc31faeb1a5702ccfd56d73f70d347f1857a3f33d036e14c82aa2d19707b468ec9fd8707596fe347eedad155c656146fab587abf3e2bae3525a11a30f88933c9becde0659257c45df5b6ce0b2c9692b6e6e255dfabef375aa3043ac9381acf33ede4ed1c25419acf305a6c9d9437e4f2d8776788c7e197a0137ba7a0c92f1f3ab0db183b806bdc5c481addd4b19642eb691b96e806f0b3a518bf73493673046d9ba0c69999047216f08e25da48ba315b4ac15989ec55fedda6ceaa0795c71821ccc776b41fc62770ce47a7e38daa88ecb97205621688fe7ac2238ac2cdc599f2b4ead3e3ee0cbe0271e82f34e73325715e77ca2f311719ec4c237feb85a7e9593116a2fc53153978bd7e4d85af736c756d6d8135a13b270bf06c2f8bad3e8accb5b8d6ece8022d75182e3a352f4bedc3d8e86728263ebdde368242721ab88d8d76d70a3799fbe8c589c636a60df01e026c59412059a666cf606cd9b6b73ceab8c717505936ab0419484be0589f1d18f13055f36b11ecca0be0f6af6a3716ef45bfc9de1676b673cb7f9612d2ddf6bef30294644ae210debd6ade8c6ef07e32e8b79a3237db4eb95cc4979875971266254b0dc123dd5566b68d5bb18d6e917d2bdced6601328e770bcef1d3fd3de079d06e97da122dc9ff2e89c0ae7d1b9d6e68cc609f01f6a3c4e1c5fb578175f757a195f5586f7269e0be8a6e0b32ed6a7d03703eed4631f763a7571f4167b21f3ca3042e36f57f488cce3b4cb3a8f931eb3bbe73cce5c35c74d4c6c169ce88b2cf89987f7fb50b59dab0bb17d46b6d169a696dd11dd582bd1e8e62774e84dd978950c3f37667eb635c8f71ca23d581f8ff071848e73745dd1dbeb39c402c1f163cee0ece7382d1ae20cf6449c56a6da0fb99f5c13a7f59cfbe97476dff07dac58f45fe3d54a34efbd78b536ff74f1d4876dd78794ec03f0e16371969fb06e70dd851a630868b1a453ecd65e5fd711af6bc67bbc541d6368e4be5063dc0b8d2db8971bdad28bceee50dcc06f5715e5aaccbe3db23eec8b7cc91736a1d81502c49f6eb6364ab6d628fa899706104362223ad2accf52b50e48ee8a15e1dee4ab621a8b789b2d75b4d2ecf892ca0c3fb67a1e5a0c1b28e7c337ce9d28eae3081f6be8d844d7f3ee3a3a8ef0b14db38a3063bd322b56cc6cec9fb26f9999a57e198658f72c1245f07b63b8d5a97be7bf79a6a3680c3b1e3e63a17e8ece9eadc13c5825aee7c7d4a78ff41c6186e4f06fd5c2bcd98df312ed1d55ff6a7e8fe0374d9ca79bf313221639babda2b9d88eebdeb6d6fab0e0662ce239fe6013fb1c31bf3c603e578160de158142df94abfcf8532ef35cb6003736f6c4655ccf1303181ee09baaef9dceeee8bf5c5105dcafdd2fc13163175af48faac37ea19404e30ea9b649f5f3921d16e9757b1dea8f55013711faf67929537403c937622dfb9b48175d54f39af71ce8858ed637ae5d20cde69ffe601306427c9204e0dda0fba8d605c90a926cb7eda424be0dc8afb097dccc63786a79da34ef2fe5246ae63e73ed751b37b5d5f31bf6c5637c25c0c2e5f39bade7a555497f3c9a62014f512bf0719921b9fd110714f487f511f0c071dfc4390d987878cf34fd8dc9feaaa76151c7f4fdb378c4ff217d30e20662b3ded18b8d1dde917ce15aeb43ade35592b8b9bdb44f9723ec13abeb8cd5f5bcd860daf6f1dacc1de0394ca53fae46d1caf48ba825b229b7167f759902e9cf1817c88aafc1745136314e8b32bdca5d4da88b631549cd7feb39fae57e7b7981fa378d1f2559c65bebde97d70523259f413aa621cee3e0f4ba4fbdba2ea2997933e0bbb83fbc997ae775b588ead827c120ea6d85b42714869f447f7baf84fa5faff579efdeeebed067427d6ba7b10cb4b6c8648e2a88ef49d1bcfcde1ec4d33698fd8227b0613075a817df4cfb02d8362fb24d13bfeb7917f3662d7c045c81c7879f94aeed7cb85a418ed787776cae6fcaad9ea60a8fc75e13f86a3b4dcb7d93bb8df16e5adf9a7a9a21b99542bc68a18def885ec37fd160157d765b7045a66a54a1540d6d2a62d833186fe8d6d49ac371716bc08a417bd2c5b528f16f0d6ac25f557151c7a40f116d1e3b1ac6cf012cd6d388062c2cb48fb52255b19d3a83b8d4ae1656e483cd8a8ef756431b16ac2c2ebe032dba2d8ec545d5c25066eea95249f5777d812ca0086bf82e92de3435debd2a8ffbf466c89a5a88f4b12ce0b3524ecc4041fbfd98c672c50732fa16618dfa87748dcc9dd2d796c67093916ac3bd48f6dc37bf65d01bffa60f407b907c7897e11b37a97736e355bf6f238843f8a96fc910e8972c38ac0b32f030dd5b307779dda7c4d60aa6f98d9e55c4c37feadf5e2c62c0463ec61087b7b546b4ab1334cb3c5c765ab157042a0b8e45bb2e70bf8def8549a52b6638de413f7dd4cf21d14fbeeedbd9d68a79f35b6ef46ff1c0aa3aaccb060feb657fbb7ac67115884bcf3529b61d37f44e9e1eef89f1837326f5696921b9e7b3fe7b16d9822b6e8a3e4bbb7931ded08571ba62e07bae1d7f87630ac91c5b9dca61cc076bd467aab70e3b2ce3fdd6da5448e76ae97d4d6390dca32690a31a5bccf05ba629d63f1669570fa0bbef457d08a0115876318f4e43f7b9a2a3fbe7bfe02b5c946199b5c9f50d434f70b1dcfafe99ba26f18c5c23bc328b5282375310dba7d339c42b9ef244b5fcccd3691ec9371ae4d2ac915e152bb388f5ceed1e5cbdaae5d1f82189f7235a94075c11aa5694bb5a41abb6848e33d51aa3e3936a2ffef8651ecac92cdb4e695a3e1bdf1e97668af8c52a27e3268b8b3f1e4787f2d978b085adbf65e1fec729e9504e0ea97c467a781acb6558c9c9210fb4f4246b29d2cb9fbebf9be3e550358610cf59afc5d34ea757ca39fa8916b735a2b7f692aae9a529d76bdcd68a8e266bc50ae991fa713492f5dc95493a5b16fdf794f7bb228cf3c523bfe6979463cf29d5fec2f476b66017557eb5069340b54ccf45b2dab1b85a8c0bc73e4fb16e898e037c3da6589f2b52b81fed07334f6cb4af85189e5d1c8bb2a9c78cf69b22cebdb67dc4db6679bcc3f430b575fafee67aae880eba9ebcb90ee36eebf4b9e13580e56c8dce9e6056ba60a2bddbd502b63691d95e372e3ed66332459f357f7db916c7b922993e547b63dcc5b83938c6ad59973451cf03f1bc10e7d1c21cd236ac4bfcbba587c20ce83d69b7f538fa26eb777673ec9f774abac2e77b743b758fe14db5ee995fd127c4ff6b1a4f038d3f17e300ec697e0ad83d427c0d2c03cfb97040df067a0fe6b96b76817403bb275729ae1d5d3cae38c97a4ea92f642ec4ffb753bab4ca309607eb746e3fdf636b771c876d85e3bd7000ff8fc58488ef01ed5c3107d635f38bade7981f70c548b50e78bf4cf348b546decea432c99e415f6ade396af6c50eef0bbc47f88657ad31af2a63344623d55a673be8c321dd0d222427d5beb31cea60293ae0738ffafc1bf6eabe1b13a83bdcd256598cb2402baed6200e148e2ae04f88515fd315137b41af2ead7976ac0230b6ed32835c1ef49c6a8eb375997dd76de5f5b7f6bedd33a9ccd74288b7c6df4637f2438e6500f81db563c0418cc5a76c8ed977ebdfd30a5a11d668efd2303fa83f0c1de07e99642ddcd865f80ce46b7efcbd38469917e7b98de8fb6c912b5a91abd61a6c20cdf8767d3761defa7ddfb4fd25fafe30973ff7dde50a5a1123d8b75b3347cfa616b30908993f73ad20f484f8c3d5c2bd5c4929d0269e62ed12cf976a47d9baa472458c58b7ab7583759fc126f4cf6bb426695ba7478a0073828ed177d3e818cdad8774d9c19bfd82e6fecd75188773dc7e3bc88026c5ee5a1c368c81f05236992d7a742a9852f75e8d4882be23f9645dcb27a4ec8064129081611f9aad7c42d2cf76fe491db51c5581350f6b5bc0fd1dddedea74f7648a573aeca30cf32cbf5045ec1d63b6377e0fb991359d4c3c8145e3f29c2f4ac8e10137be907435e0a26ff2d8053f61638f0863f5f4f5efa2a4afabd3ecdb3b46b7a5485d028eee783b57c44abb579623b9ab97dce9de5a14f7f817bf4c7789c9f6f616d85e713f77344bf9491c7a4990b9f602eb8d029fb9b5dd68950c1bdf7ab54ae20683a6d69d2444c76faddc3acd3efbb2d3c80b780afc868abd8e1755c34366dfb2b846fb3b5e9435bdb61775ad21f0d997b2352f5d8bff5e0dd6ec86ce72c59e075896c6f4b2d5ef4483f54bba9aeb8bcc9bd2a15c86945ccd5274ec54340df25425c1f1764ac7609f14bfd0fea26cad4810ddf0782a732b746d59eb0e90475bca4918a0bdbc38a617a01ff8f71d684025fdf181f6e1df6e4c65f81907e2bef0efa07906f412c0ca40ed223942303d9fa6d8ed94b08b5923cfa131d671cd2390ac5beb2df42bbaf1e90a2cb609f7f6e4a6dc9a10bbc1aad682a861d8d84462ace74ceb189d014df262740fe032a1fdbab783cbd62a625930c85aac641fd27d47bf532fc99afceb963e6eadd1b72c2e102dbf11f5f2f79e105fb76578538405a127cdd840cb2e7e9915b26654ab8134def46300456b20811ee36831eb5a45e5127992fe316ee28e28d5083c45a34bdb26f092059625fa89f6f60b5ab144eb9675815781ed96acbbd8bb0fc6914334e3915fffa053d8af69d98bfaf5c4de5cc27a093a59bf7f0ddb3863457c414be9bc92ab79a05ac3c7b1af1481b49fe07141ef52fab5eb9bf350f3f42d2daea84a11976c2fef92377a35ad1b3b10f842ac61e65574ac5824aeb4f4c73fe6373961fbf190adefb0a873c388775510c718cbdae5e21f690a7cf25a7855ec752a1fc39b6219649c3919db5829d62c554f54b5a816f7e5c9192da67eb59afaf472ea17cbc4c817551bd300341b743d9d45cf7d2cc45ecc6ff162ce5bbc7ef318a2b1cb88b118ef7987181b5c4f762f1696dc1dc3fdb2168d1fdafa786c0bb03088f10d80e6024d8c156b8668e1151d6fa7748a8efd295da263f744dfd0b15bd12739597c6fb9f4a2086bd6e7d2bbcc387fdc13e13bd22e972d97468ae5ff718f51ee71978b53e2639f8bbe65d1f813687926277734ee273971f22d7a8f7ebff7d7c4e1e9bb3b9bc682f58e34a580dd0fad6783f5e1f8ce7a251d2bc282f5cbb49299d91f472b2eaaddb699f953eabad4c617bf4c33c59afd09b428734fd4c5e3d2133ade72d11f9f2bceaad6d7b189b59120faed96e9b9dfdfa8b786b16f91beaa53aa5cd4fe9c861f7ac7ac40344b456bfad8d3d952a493f931c4edc6161307b51c5ea9b6942fea58e3d560f18f6a0d9379627a019f57b649fde355909f50211e02ef28a9dcd673ca1a2c10af61b7368dfd44f87da56a0dbf1738a6e7730bf996c3efad3efc6701f5178ad81a6c3c2fa60315b791da2695cc313dbc023d10e07c89da46fc0ac7ba3809bc4b94a036163e3f0a6c7d04eff3633a981f5dc4d7d11e2d65bd47efe0bb1d9d8ead01e2b148a63c7caeca18f8171aa78ecfb46d8f1d2d82eb5e49e50fd76fa86f4e5ddbd3ab8a4e5e60e03bf05eb2371e9a0f5bc7d842351611eb9745aad8d2f7421fa2357555cbd06dea6bc2f713f3ed9554216bd187fc74aee83d23db748f5e6d893cd7664f82bd1bcbc0b59d11c714a17154ad7e8cfcf6d16fcb6777bb9f63203d62175a151fecadda1fc7079f0fb9e81782d70d17d396978f88dfc3854e9cd71f6af157b42fc5f7e3dea26f41621a5ed960a4d4d7cb8c756654d41e0f0ef74eb63f14aa96537bed4e5c8f88eb11ba1eefad09eb30c5cd67cc35a2d332177f7639c2ddbbc01750f3b2dd74c676bf3b3bcc4e27ce13f61919be2385bc040fe29737b73636afbbe7a0739b4fb20d79b06115f29c3e6365c6641d910efd64d1ac8f9e5f5216d7ac3c58a772195e552d47fa4aa95a062b334d9edafdfe3e3fa4c34e92c479e80a315de332b4750789fefddbebbbb6f9dcda543617f3726f7d7dc80d36be35af5a3bdee050285694aa273e567477bc7f794f5428b654dfe3a4e4b8c33846852f1df354ae73dde501d27f8784bc34fe56adc9642ee657987b66c42ad3af6ca1dd0b184b8eaecf9bec5adb7c7a67e8333a7757a633741fb99e0ab44f1ee7c03fd307b05d5b4b8ae08bffc7ebf210edcafcbab71df43fc5c7f4756fa687bd5dd7057981596a0f8a31ac5f9146eb3af4078b8336c81ffccd449df18af66c9b06bc3e13eadb9032eab88935f7d0795b8b9ff64a332e6d1c777d8c718296d9166a1244e9de8238fc177bb8ce49e1734a11cc0072340097eaf08c931a8f3bbf78dbffb4c654a74f50afac9cc8cd7e803a48025ba239b29846969b07aa99ddd19a58e9ce5d991af7054fd5b953b38b8cf61083d628757175eadbd5221c07a4e5a5ac0f595918b232334c7fc8334dbdb31b7a421c4902ceebabf7506d37d8c49ec0d35ec28f887a007b87894b6760e64e8d4ddff82936497173ec35b39cd53692a9f487c049e86afeb4fe1137c675f616efe31cceebabdfe261b7798b4d5f869ec50f558b3c8eafaa6534c723b80eb19ecd31badec9fa5b6b9406dc21dddbe6dd1578eae55c12e3a09cbbfb08dfea756bafdbefda9b6cea253185d65ccd673e5dc1cc1cdbbc3a76f4b11bd4985b554a2902d8983e5cade8d91ad05e0f12bc26fc2a4d5b1f74e7d73a6dedf929b0e8267eb5b31531cbd44f96b467d518d0e727fbceb51bcb71259fa49e2dcbd50ac0e15a7045a5ea5f4836b91239a13755987d7a65c62ecaa2922baa24e4b850d5a53f58972de8e6b75ce75a2d8ee9d562c6df8b18302c298b41e70f88d787d806f9857ed3607bb0375e80edc967f41bec1053f40cce1ddbe9f45db116995dd189621d324fa7cfe83838d1113ade4de9917c8ebeed32dd2b3383f5b4349707ce9fe058cc51bf6431fa131ce9bd9c5038277916a5901f40e8331ad22d2c235f7171ac6ae14966fc54a9a46cab53972d9747b2362e578c99f98cd9e91653aa5028a8bd7b92cb9091cf87dc2e535ed6d05c47ec96cb2e3b2de5158bfab3e3a23f8188e55349305859587cbb65745b1ca9c2d50fa8afa9aa85179959a376bf1796319413ead38ff30aebb3f346b76dfcbeb5ae53d0e01fd2fab8a1de94a2e4b381c7be92fe042685741efc1bc719a48dbf68c1f5fc64e07ff54e45dcad83ec1bd116c8a56346015a2f1e5a2f16e00e5ed07c2fb99486dc3ab0b39af55ca3df466d07426b03e9de319a5fd6d1d073b1e79519fabeb49e6bd629e96a6fcf632fd9c44ff147561d4b6eafff0da6b5bfb44adbb8d41dd3edddd539276d9e1f88c67aad2d2fcac03e344dcbbd563cedad553226f763d5ec476c139388bc935e3d7c9c27f2e0635730ae5aebbf72f5225d95d9b7abf5e4616c13c635b9c7aef6324ea0446bf9c1ee1a2b15aeadb13836b90188ae020ec66d816b5cdfacc13c40faa347e765b33f3d3aafc03f66b1f5ba6a65e2d2b546916bcf75d70aa0de9c4c60cf041c92154d4a42e774fa0913eb554c844f7cbf5ce6888f87aa6de0e7e1bb3b5bf1f377804f07bec59bd237bcfe16a8ff57fc2d07b4f642a027359df7c5f90de391631f884fe717b4f61471e96db9ac825a7b9c93b4f727e6d515ccd260cc33c4ac36cff110177d87fc5171ddab9d0d58d4e756de619b77ac1396f6924d45da9621e6a1c62e0fa62c55c73bd9ab731d17397dc4695db6f53f7602d43ba979689c6f3b7e06fcb0b1833fdee7d8879ce48348df7ddb67066a8b3cd9ed9b3ebb3a1b3ff59923632796d9d6fe6aeb01b638ed563cde737c4ae06535dff9d9d4f740b2dd16f2d88bd4c27139b076708da0960f619b0003588e600fb60652be8891be0e1890dd39a4c39fa57f167a96fa478a5d9c1efcada79c5245e933e03276718c53f0cbe814bb35734ad1e748774fad01f831eb77aef385498ff790db5feb48684df240d3a83a96a85fa355602bd79c201d02c909d7f9d1bd92e32e27cbd8130aa2fef8a1f343f469d8bdad1722d2adcfe121a601e7a0743cbe84b81e882126e6535cb7b2846b15595b33f908f97714e833dc28adeb2dc48a18a7ae554412ac7bfaf19947ba8cd686f264b73dd7743c42df7bc7323c60847763610fea7be265ec32748ceb0a7436b1c6eeef55cf7663f4accbc4372f59de5cc168de1fbebb0e75d0f40cdbc7cb064770f62fd0748b653afd37ca10cdda5a23589ff09c167dc802e11f658ad4e75ff6b95284598aeb7b12ef15706e944783afb5ff7e3a2b6dadb859d53290419761af81c0a7b89e75ad4b93fe312d8f65c065c6b8c38837ab3a8dd6d9b30c1bb31057dde24e828f69c3cac928de5ac1c549d812ead2f7e27c5fef6b57c336be3686f1085890cf6d3ebe9bb4c77636969327c4775918a635d6471a4cd36eaf0a1192494bd5eae1388dfd539e821c6af5e3a121f79fc0eaf6aaa25a31e36f559740d673cd3cb5750ac74703ae067a0f1fa8608b1a7f03dd484c4f1622f0c7f9318c93270be36fbfa44a59332bfc5c76d96a59256b6689df975dbc32af147d96ceed6520dbf9686b9999cb4dae2b06dbe22471c3ee6d7aefd474968c5b7d963d8caca73f30f19590617a32cdf6418ff0cf2d8dc8bc8abe421c1ce88f540139c4658795816934b1a7ccbcb1c386aa35067b2311abfac09367881f632ce4464f164c0fc9fcb656c4106b7ec4ebdcd1e970ae2f585597fe7534aa5c25b3ef855694481fc0791bad9f2a44b2a163d26cc084a9271817077c4ee3647ea4007fc7e9d5dd5cb2ddfaacebff436d9075323f81cff0c5ba04fdebb91e6d5ccb3ee710f1cd9efea8747c386ce3cb307fede9a1ed7d16795f48f26b789fadbfdc6731594fb7e39fc6535e73a36312f2e9b58b598e902c441174f86a3171b0178babc544688dffdba35fb3f8ea2631d4ff6de803e0ba09236f8bf531fc5c4c655e8cf6cb3290f5b4b77f37bde7e37a4e2602e8da0d4db68958d7de7e86f5d6c7386c6cadc29d75cdfc8a783292f7f0ef5a87ece4b6f3d662af0ec3462e8e77e9e9b6fe94baaf065f63ef94df31cd00f91ae92e25d25dbc291d5b8349f3fe3b9627c7ec962b2e6f7908579c64ed8e73f25b1e7248fd8a0e21768d2b6875d06221e03e9d0dd662ee9943539fb59fb6d1bdaf4a1d77bdea7cfeb7ba3e7d6bdb9489589347be83fd46f7cc298b9b221c52b9af3b78deb1b82b8293417c61eb1f21f372a90be15387397d9483711b87cc2ba3b417ab45e710cf87dac03aea827548fecb80be75f2984d2c0bc3cc879a324ee2689dec0db44c0ba946975508dc3e59eb8d251aab7a2c8799cfd36c33e6bd7759789eeabcb66a7e74c3962fc62cc4c5a0b5ea9745a8884646e0e7a58a68fc1bb458344ee696d147a0d31e7a976dd3684e68d9fee11bc51a73c6ac79fc7ff9d63ac74912102f246affb572c0fd42d21b7940d2a5e8b638b6d747bdeb5673bdcbb7b606af69da936ef157348db8ef49571905042da2f7e6d3fa7af26513f133442c438bf94c7c4363df8eeb58152979c1df301dc0730d786d5e950de767e35f19e485ece2819ffc72e97d8f65a44a19a6f0bf5b5f704dd62fd4cfcfc7d7f7cfc75759bf94f0bc30635d2d6bfdf57d9d6e8d9e07bf3dc835c43559bf5c1c9d8ee5fafd72e35fc0f392075c749305f89fb5f15ff81a1ae37f6571cdfa6511abd62cf34f34a1f307a9c78cea750c3270ba82fa988b6caba37d367e4777af8ddfafa6fd730feafe00eec4d3fcd63934482ee8e76e0b468de51c12f2fda4f418c085bf3858470c31961392b3a314ed6de56c5e7d264cddf3fae2d3704f85b1bfef1722feedee272cd4189405de73485b594c658e99877dfc71ec3745327c8b4d2562bc2d9f6ee59ab77cd0d1a294d4d11461c882be6ccd7af97eafe89663e629e679bcb7d52888cbf44e45ba628620cbba3a5dfef0ec15c68819421cae22184817aeeb9c92f4aa8e4511254487701e11d1b79616fdbfa143a83fa16ae66f65a47732d7ff4a9f6c526e1478b637069d9e59db1820beebba6ad6aa30ccbcaac37c721bcc27ed8b5e2506bbc432746bab03dcdee9fac3d52986a84b88fbdbed21f8ce463f58d5f55f96a7345675e9938c1bafdb2a515b8b5ad7276555afdde32093f6f195b4af623145ef3cbc7ae710bd73a515eddaa8e9775b7b18c675dac7af92a611fab6828c416cfabfd0515b46af8f5b1cdb44f204766be6258ec91b82fdc687d80474cc8ef71c5fcbed4dfee7a8aa63296e32ae797ff50713ecbf13a50cfc1b108b25c1fed863198fc8535da70fb9449fc1b4206d4bd4835f2356b590825849ab7b0f9a4b595c7f2fb928de1298bbb52d08db8a1813db8f18b3b1295d6dbb183776a2fa1ce44fe1fb8ccece54ef5988edd73a0c4f1763ab508a8efad8e525f9679ab473b674b6b197b4b15038f70bc7eae8f77b2d5bc6ea949c93e1939e218b122b77fb2bf58e884fb1a9ac1721d4a9eacd299e63b90c43d596523919a67bcbccd09ac0ed0ebb764fbdf5fa5bbbe18e7bdf6eb3fefbeda2f91ffeb3a875c260dadf834ff6fa322c552d24f714f050efd8e45d8efb7b585c00df7674ba94b514f1bd4e6e1386e3aedd3bdba393bfb4dbf0eed7ed229af8d46e838be221ddc9b6e91e2f7888d7be0444dd4cd8e7a771b13aaf3b3d197ffbbf8bd3e52edbf78bab13f75b703f85e845773f8cffbfab29ba9f7e9409faf5fd8f619bc742b4fd4fcfaf5b491f0b2e1ecb8231eef96f2b444b47afda641bfb8481f6465dc7df984599d5d82bce935b5091f573bea2e758a149d0af8fb1a15ec71311f7082645d47169e721e0f2badd650a3652c6406b3273b5bcc903bff9654881dc968cba18256144ed064bcab137a9534e6a2c9b75e6ea54043c445c43bcdd438d70243ffb5243c7f8fb716b0d0fc1947d81335390b982650f774018ffe08feffb8afd0ae9d30b8c4f3158f4f32ff9bcb2f5fc06f1e0803bd0d6c387fa9150a75160bdc531c5f17bd6f0ea307ce67121c8867e5950247df30614c19fa38fc778831a1789c40afad38b79696200db5cd2c6af3186fa1b011737763aa2a628a299808197edac38f684f581a8eb9f796501787b0a977dfbe75effd237d8096d6ea06b15610058736c8321c7016657bd2fb6d6a89707aaf53026c29e7dff113740037fdde1253601611345b257f65027b993235b9b23ea7b8badf0df62271ebef37f8b9fe8d988fbefebec206d3d8e1afb13c601e33cf76d7cea494ae6c9235665ed6be96141a4718375d8d8d41e737e5683f598f0b3631f5249fa71a9528658522af34ff56f9c1b715375e98f0b72c0bcb6c9865788c5b446ded6a4901e77b506129201726c6b433a0c75f100838506bb1cd213db180babb1d145ff2c2c235fe85f04ae34dfc5f9eb1316e371e69d5c25802f3cf44f740fdfa1d95368ef60d9288dc975b7d76a1f8e4efde36a515ba335e0c0aff08f6b66a57cde048a55db82ed628ccf813f2d87dfc9b0ce677ff64b794c013e11c79e37d8c6cf7d8e5f7cc7b11ffbb0d569afed0bb64b53728391fc68a33661ae0a57a3860d0fd98af1dd1bac2f5b33ab6c8d4ead26e725a6f26d8db9fd989fee9de8de58419e3ad0c975cfa7eada80dbfddc3711d15a7c6cd718cee4758c754cbfdeaf3566c8fa18c69d3cb28991fee26a9317f34ed8636b1e4fe63a1139f18ded9cf20652ef1e4588d85e6efcbb674433037beb8b5c8f77cf90f7103a531bbfd1cf735ef4f3f066b8ae1079cfabdc3d3226239816f1aaccbe038206b910dbb08e1715c52e4e2ca5e8d207ec653dab736120a7abf54d00462ce8276c9b0bf3b8465cbde7d3a654c1f894cb9c92a14e454ed9381789b8e7ce2e8e5007b2ab1fcc39ad7db03796aff05aa68bb43f562fe6fa3f3c47b687d6a78a6b2b363ca2978703f1f826ce117eca2fa4b312627e605fb11eec29936217dabdc435de7a794e378b89d1da0f54fd0bf159c61bcc6f5ec2a60f721ae69b8d3d4c5ca77b2dbdba567cde0af39b0fb68b2e46afe3b788eee3b8bc161ba65e43102744e6009ea58c1c835532ce1ca85984ebe3adcecbd6478f7d63bdf554f56a5e713d8cc87a5e1b9ffbd273b1eda7c18b885522a652d167685c1af9a5aaf5c894c05601fcf380efe5d085ad0e72c23a620076bd3be46537f973addc33a56fd6c084b8a140332a55a74a7560e48b534acbd52cf3e89cb6355cafaaf90e6c8735583faef39b418730fa7130717681b5ae6585ac995dac214f11be3d8831b9b8b0cfeee4b7c6b216b36d0e8408b69a50b6698cf756cb7f689de0b8d99052b59c92b5191b88686f42bc792ae9348113ded832709c7a33367e1d37027a5a6b8f5c52aefd85eb6a08462aeb4316cd9b7f9c615bc619ea38a5ab32beaab6447ccf9c6d9e7d8c8d27fdbb5bad005a8ad6599d7f886ba74fd39b229079bd69a5883dd92554c436ce94eec5abd5be5f1873bb184bb6f1ecff3cd6b9a25a48d47a1afeb3d0a2da06766703ae38a9e6e5e26a340d31843c952d8ed1b7750caf8a4df0b1a944e4301e70bb4d4ccf94beac98cdad96cd53d5e23d9fa73af9694a6f65c1c80390136278974c5f2ede11b789e59d7b59e3455f540170924eaa75c8bc298df130edaf8666df11cdf6b9ac50046807f236bbfc18b456bf589fceefdd5aadd70d3a1f67178f6ed76949acd3cc071cbb2899c7dd78f8cfe3716fc64315c81a135f2d0642b78e012bf442c61179225dc7e1499707bed4d4eba1d44183ffe57fb43598c52e66e8f778813a6fa22262a40403e73213b62f8c13f4104f248c599c5b5be7320b46dab731b63989a57c9e239e98393afeedd1d467c075f15f5e0cb188d73a8f2b55a0ee4b136b35f21c13fccf1037fc029ba789579402c0e05c63bb77623458a3179c1301f7acebb1c1987cbaf432deed658c1e577c36b1e964fef743dc6cf610b7765545e9d33b42ac1999f3993671b45b13c731ae066b220649fa76b5e20676bf842f9d12e74cbadafdaef0b31e76df636c5913d3a7890fb1267f153fdbf2c1760d6ded26b7a628718c37f8586e487fefea85117d1762c871db9a38d6b4a91dd2ae2d3d8f5561dcc481f6625bbd18d613d2759b9c8c14625785da46acc52c59a7be9ff31165aee624ae366af334f616cee16ee2ec1e744c2c2f54f9efeb495cbf5a4b46bb97b4ff1c3b49aca5a82f539ce7440c0fde2f017761173495f9ed715de34497fe207d0874ca4e0e8a31fe723d7e48c7c471d6204f20fdb5893bdb9ab0efd276df3dc4383a386e1bef3bad889564997983656c083cb5e50e38bf2919126343fd21bee5757c635fe7a63a5ef518373d647bb68b0aad9b61bd6e1a39e9492eede65a30d2bdddb5f53fc72ec68fb9ec3086dd1aab6bb76cedf5a7f4843ddfe2e5b23637e7d6e672bea6ef47b49e36f47cbee159dd30cd891119e8ba6844f1cca6971bd3e0b58d0958fa29965b624ab573a83d81f170e7e8b8aef910534a349f18543c05fb853db97989790df8e5ddb196a997f81f4b7dc22a02a269af30f831df50db784283f5cf4043114f2a03ae3e770c4b59cc59459c53500b4beb6ad3b5d700db317f89cbdead7d8c01eb306cee0b2ce0591b8349e82039a862714dbb17dfe0896ba83d0cbe4a7bfdb24e3d9927ea0f9afba10ed1678df78a78602343d10117a6b24dc89db3d9c52bc11ffa897dca687f8e3b6cddd76d123546e6a1cf189f1daefd66b84a8ceb8e2ba29d9ec6803d0df8fc2ea24b57d75e56ab6449613c562af3078f35331afc5e6cc38518bdc1a6dcd9443d2651622177adc653867affb6446282572d26784597cf98e033d62febf5ace769932fb71b1c3e1c6d3454c408fd1fedb528dbb6bef07cb84a66d71d9787ca39485d7173f9f9be6204ffb53c54921062430311d19ba889edf9dc4dd350391fbe1d6d34d85a1b6afbe699bd4d9f1c5c67158d7dacda790c79a2a794da633d20f48462b4c3e354cd8f4ee8d7b8e450c7fd84eb71e0bd1e01fdaaedd0a54c3e8ff11b5bdc5a571be176ce2486c61a63dad7f569fc12d653e6d8bfcca39de75b6be4aca2ba16f371b45c9be1dea0786163b2733ddef01bcad414810e77fce143aff16f95889eeb31abaf0d97b7a97865ce4c71634a9967c5574b4f57753de4ab6ef08e4d2f279bc8dc6bc6c8d818016f1c8bdcb143976c5333464f6deef59cf2cf31592bb054adf1a58e272949bcf7665c5703c0ca7ec47b0f55449b316fb83a382f22f59280f306874f471bc118a8427485fe039da97f4fe95049e8d48b118f990196af351da54a02e38164fee6378bdee3d8a1236b45fd4c34dee277bbb52f157e437c037ab71665f533ae9a44f8dd5ad3363fb474683bdcf1d1ff9fadb5985544f39186a7244e7fedfbf8b9dec2ef75163cbbaedda46ae119b0b27fa1b501373a7a032477c657979adf762205756e5ed4ff21eac8e1b80b8807adeb652be2e27ddf13e3bff43d54ad11d5d8b3fd63740d12b6f498d16dab85de6ffbe93f5c9f58fc7fbd3e0f20ae51fffa0cf4871cbb81913ed65ef0a6145a4764ed85f021be1e6aa9404e14d7eec14fc95a5c5dc45ff5fca45af7961f34fc6a3ba54f8ddeb01a2cbdc0a41a5a7cc1be551ee25d10edf24ef4a78bf388210fc54de2ab6315d9cec6b4c2299da46d0fef25d497667da4f3a39b363e360feca2edf310e7dae5fd0fafb89d394be838d51e70cffe6a1db6f55dd098002fd4bf3efdaa28fbe3bc781a6707c7c192e35c5a836580d631d8c908ba17680ddd3310fd79a47b996ab7bae7a7371d5538a7681934bc158d41bffe83f14bfd0723991f799aa8ff7045f4ac5783a2f553ce9eea3fb85d4e784cd47f68c76d6b539927fec2b340b7a5eecff2c702e40f9c77d3ab451236728703b6cf07b94384b16be50ef718d24a6bdf6f6d507734bf7245152b626c1bcca9054f7d6eb58cede3aa63d9c5e3465520f065c01fb29d9e66ca19e3f3593695d5d7917cef20b9a5feed22d96cffb0f65dfd97b5afa1b53f23d6fe90051db25bfbd766edfbe5d3da8fbbb56fbc5afba93290fe2cb421bdd78a53d0afd3f4207bd2a1cfbdaff904fa728f078758363ed16788bdeceb8f3fbf4b701ad91aadc128002c85171880844e2533506be306fb5dbb148be984dd9b54ba071b8739847a78e282dd229d0ace47e9aa9432e938fe630bc3837c9ccc1c7b134b33176ac104dc57a19ca4eb822eae127739c8c22295a6d27d31f5f3c5e9ebbed2267a20988c6b0d0fba60325b7b7371ace1411597946bbbb197147190c4d456e0afa073e823df3b7efd9166f4dce4707c99775ec6d0768cdbd0acd1c9134da40b1c5c6b74712c446f68a4e75492301f49fcf2e40d3694c46fc046e0685f639f59de02718d7454b4c6808e04d3ba2d81bfbadc44f193b89266f92d60f84c9a16a7ad1d86d8074fddf6495e82cf8661078e75bfa9d097b4ee2b7f7218f31e888b83a34d22343e0a370925810e7d26cb248145f2fd01fbe027a197acd17db9632fbf95fa9b8c7a4efd123d578fadb8895d6ec2b8f6bcc2f12e50c7e1e26a93f3168dddb16eab7e872984b18431f90f6d4d4471710884f121806b4bda47faf4795df785a5b616fdf03cf4f9e979b8df68e67c047d47325653c3bd7ec7cd16d098f6d6e0d913d8a363dd5349ccd1781de603b372b54905f682c1fabca28b2b9a5f09cbb9f04d1b5cd78592a6d4a157e3928b0e3b586b5f07f48769d8e6b665cc2bba5761369f0bed4eeded22df55b36c29d2e39d1d5dd42a1dedb4e8df3d177a9a102e7d7a43d95aecdbd3d9bf7b3e5f7802ab5b71b0b2edc297e27c6773f3408eefc73d1778f63108e4a37f732bdc7f681bf715c66f97209af3c54a1cebdb8284daf28c193ddd187c60d1cb99c1d3c69e3bfcbb8a41bf4eb6d672ac5b2c5dc7558ed78c89d665e88905efd8685fccaffb194f79027f0d84f8246b5fe89d7a80d6a9c097ae58cc1c3bceb02e86b1111d0b1d8fceb23631509fa0bd28589a62619ab3452a4fc71f56497ddb66e1bb6246edb5e85fd92c7ce7c8c2f83f8c67ea59e607e2ad6ba6487d0ebecdb38fd4b7cd17d15aa3b7b6d63c37e9c6841bdf247e1ebb8c39447bd3b14691242e695f9cdcfc33a277fea1a365a34a42dfa24d4e8eb5bcb8d6fa80e56ef3bce52690bb1bd873d8f7f8dd932eb797c0a592f17acfdabd269a9453de0f2e4353b236f984e7f9eefb24eeeba69413d71b180787e1aff3c1fae0239e9cc491ab4de840581cb69673d8592c2d89cbefadfd75f0069b8b8b64137b7ef6cbaf4b60e3986c57fb3a9be666ba3afa07cfe2ab6d39b9fb89996ced43daf5fbeb200971227161e827010df916840f519a52acaa7d1512e7249290a75eb251dd63087b40d6be5855a70ef3415dcfb6f40ff3a3739034b4ced637e5bc89fdc1fa82f772d4eeafee5b318d41fb02eed19fae433be87a60c15e06df3eb91e246ec23e8f61f75c4dd3c67baec6b921da791c03999bd57d9da41e9203806eb3893483394cdbf9eae6aa7eff175bc7da01efa9e73cfd8b7ea6eef1ebb2b5972bc718fe344e8d5c66ecec49dc60f5cca9f8dad415c7cffa7fd3663be606d8584767dc5f53f006f3dcc136b36a3b587af09fa60e7bf1deac1f348e3dfa07320093575619b4b4764e53e9f3defb3a28e5f8b0b68a0ce9ae3e635201d203cb09b5158c43606f4e0a13e40137e9d6213761b6d6ace60dd04eef7d58ee84f3faff8fbd376b5354e71a867fd07db001cbdecda1a020a85489ca9033862a5040dded08bffebbb2924018acee7d3fcffb5eefc177d057b51032acacac296b08f5fc40f601ced92d92885ff44a7d24969afd3d80ef00871d69977c6c05d950634c8b7e98649d43efe75b67fdc32cdb349ef449f8d207e39b2c77d474ddd9134c9b310d98c8c6dc2eb1ecdfc5297cbe179d75c1391362cb999e8e437868a8ca31f4d6787c218298bbee98620b765f4e7f7f688d2ddc07d0998f7272449223601a6296931f861a1f91b73e76708cc8969806133c0abd72f2cb5063380ba6289c16db817d9bc15c01975cf167b22827475bd7c62fdbeb42affdd6956fb19e1cbd4dd2c57b528f70d39b930e39b65d278d30cfece205e199464d379ceb97a15e125348efb16756afd73234b7fc167b761e952fc7a97ae38856ee4bf20dcd572fd7b4edc3d90adce725f07eff6d083807b8f797319d24ef4c3e2be23cd61a9eba955081cfe78b797b306f8c1792930725e505837079c3703922cfc6f2c007cae31cb91746e786fa2e425dc33c4c1ea081d9fb9efc5d6addb36793777325456a9a2d36cfdeb7485fff307ab42b7bbeeb6f5866196f0bed8a75455b132e7d1a6f67687aeaca98e7d536bd2d0b3bfddc8dd3d0752a5758e3bd1f79fdf1af74ee57bccfab81f7e1f684ff3e7c777d0a37935fc67476eeaf5324ed3af43ad8cedec2fdf80af145333a17498c07bf77851f7ff6bd80d7f25ce57d787c7ad90ffcb7e61ff3ecdcd03ba33fef793e866fe659afaf607a82bf1b75921bd35969cc9f3ff1dffedcd313b7c786a1ee92d5d600deb4da0e8c394b7ed0bfbd3137f45da46bd962960c7c2bd06ffb6bdfee04ee5b6160adab1ff46fefdb68b46abe9daf06f6f741bf8535ae96eaa41ac0e515c525c0156ad328c1aeaaa62b43fd99acb693f3c07702fdce30a600b3e4a31c3e0fb19e5f11c3e94a898d57b87f049af1eebb624ee21dfb63c6b0bfff764cf34fc7ac06c6dcfd77ebb4ff744c71684ce7bf5a27fad33187684a40d749f83ee69f82b8033ecd683c91678e788c85c6647426bb631d99dc59343a6206e7c92da3a3b7c96e912e3f162ad86e1ea1ae1dd0866bbb839c1a17438d8e03b87627739b9cc272f21fcc6bf0fc969b2879df4f8e8b323a633a48ce10f1a546c5f38e65da56bd9d324b96e5445aa959b2d84f9eabe9245994ad7ce4f7c506d30dffb15427c2c03cb61446a139b24f66f9005d05fe4ae38cfc363353144344e8cfc398be25ab9a3f4e4eecf94a9d5c0d7d9d989bc973a54ed20ff88be7a5648416297d7aab453fe8df3e1d3910bab7cddbf2fa90dcdcd8d3a86ccbed47285df370ffe8e89c22b1190fc8894cb6c4ef0d3dbf193abaf86e5cbd90291b9db678a688e804822fa5f1efe44bfe5bf24dd2c8e49b47fdacd633552159f56402a125c77cd53286222fa88c03ed07f59715963deafe4cc9ce51a189e17c7d7c6fcd93fd8bb18c9084ae78c5f204e559c02b30cd8f46ab63b3bf7115e8721913bd70a8bf63b891b3e5281f9b658d93c7d075b2c073ae36d1d57e74e7604ae235dc28d95255c69f5ee75b5dbe21e1e578e45b574890fa48f0b79f9b06e74c09fc08883c5e9d5eacddc6e35ec9fad717bafefe9a414e1c5e73303d5bdb8db273547e6c31477a2e86ceabefe2d37b265aef47ab32347bd75bb3f872bcc494eabd491c6d9db87b7edcbc0abf8197a1c600e3a52b5e97ae9df1e3069e7577309d1ed823e85b480d36e7ee77b0b72fd66a8e00a6789fae48b7234f8d779ef638363866dd7bf3f0ecc3ab3e4dd1d9adab736b1db83f477b46fc1cf133377f4666c9c3c7798bf4bc449e652057cb9067b2f343c780f37081b3a0035ec238c6ace9d7d04e47621715fe267655a2e36fc8dddacdf7c08e06b59ec8ffdf9288ca8c11a173433cb2756e1bd97cf5c3d0789d20dec6eedb71a9123d1068b9688b68135d0c35f690bb86778e9e8af04e406540de6df11a795a6d8a961862399ebcb742699cf918f7f1f773278fa4fa9d875cfb863cab79afa762746c7edb47f38ce74ce663a5f1dc29e137a3639c7e1182fe9a121e5f9d1297a375a6704ec33d8ca923d7a0ebd44ab216ed119177161b777374080c84b318aaf04e89dd08deed24e741dec98798bc7b0f473e99afee1c389cc3705df8ee58f43d734ce196fb4793fb2da651619dea7914f9853da7305ac4ee38afe73227f35b7bce31f628ef15ad3c9adb39f12f816f3efc917df70b87ae6f7c8f0b72374e7edbb92fd1df0370e465aaf7bd12723ce4e8933991f54bda95f07c85fc1566043e145e5bd276bdddc48ccfc42dfc2ef8f85f90d125df7d5c0cfd99877b661352f0338cc3db786e9ec3223ac5857661fa31e677587f86bfa0eb1804d7e7c4c7db207d72f6d707b4e5f933ee0ff76156932396a3f06f2a37107bdfbcbe4fc37de1b9cbe47cfefc87dd51d99223d0bb1a7327fc4cdea7fe63b55146c8757e418c3dde1bda765d681572d7093ebfbe245fa98d38213e4da44d30b785687aba2f4778afd27da8cbc7e5512943c912a322bf47e5f816aaf2afa5f426adb6c93d2c9c5154ca52e03aa365b5aaac2a9396d54c789ffad552b0d250b7c410f8a488e77725f313617e4b57bb21551c23572b979047e79cc68556f923f31ccdd7b7606e5f438dbfff521ebe67a6e166927c0af21e7221cc85c427724342ef0d27cd1de895fa4899327927b7f75e8ff3586bd932983df0be2c950d827a0f3b82971b85f773ace08e8c8c0bf840ef33d288d8604eb16756985e008e409c2ea9614dc6191f91677336ace4bc54391bce4cbc8747e2e34cefd96e4872049bc6d6020ee6f53ca781aedd90b4633672212c955d30774a42ef940ad325638ed7497037d6b512ec3e0dcdbb4575ffa9e07b269e1fd7c798da7eec7ca166c97233392d06d64ae68edb27a01758fb0ccbd9a305d841568d9c07f737761a48bb645368b7d8d5cacfcd4488f524f1bd551278eb24807b9de7c8f7f20ae45b98ff25596d26a748727263966fb7e5e4cd3a4c9e0b879e57cf48509197d1889f7bc7a6ff72de205b218c8b00f7e9e462509b6f3de79975f2ddf111511b21d4ade7f77a6ea5a1bb4b62c9c903728e8bc033abd658472b8f192ef4e63a00671d9da3a3d5da2b8a0b63dc66514e24a23b115d6c55662d1ebe96d2dc972ea02fe0f1433d3f06f3f535923409f3efa507f2c8351ac567a24bc8077fe49451e164f4befa108e4cc8510cf7c57be51c6b1cbce7209fbfc2995da367ca05c26b57316e0803fbf4ba3da589436354c8b38d10cfb77c89b7f43d1d77dec1c319f38f84dca64097a252d923cfc6ffbfd5675a6d9d29b85b276b5827cddee41c2d80f3360b5c54c0ddf2106d188403e8caa7f7a92faca693c76a3af9c72aa93e55f383c913ef75273738ccddd6f302edb3d7bc02ce8d00e786f007a70cdc15d64d1f51e154c81d0b4cc683bc09f4aeff73c372bff2f87d82f3880ab93430cd2ac8fc9bfbd5c9c850d3221c19c90efc05b5f182f2999a56eb5ae9bb4262ccaf1f7e71cefd912d1b3a395fbe46f956c307ff66be76e4de03fc00f8da40af6cd40d4fc738abcba3e64e919db9acbe13001f2ad246fed84c1e8b961c4bbeb5e81d3dbd7f69f46b5d1e61fcc2cf3dfdedbed853de0577aeeb2b866924a5f7e8681f62cfeef3b5f22c1b739486036b6776da176bff15b8e30c624db19cc2e64ceec8882cb315649a7787bb9b6ce66e4af0eed8c82063068f6481e7a492fb2bfe0e97874dcd77d518cbe1392af21b96df87fbb3c791ee609c82b919e45eee4e70607d1cecb7fd0d3d1322e585e40e96f993069ec57269e0b6e717f3a47556a36e5f354c3e47c22dd6652603327f5ee893f5d7d8cc938ba10acfc5662c84c2f31e4b4eb986dc5b84867d51befd020e14a6f51d25b7b7e43e1ee94e11b8e37c89f528de3f45a7b0def0fe30938edd88c751ce4e39e56c3114ffbf364a9de3c85053883bc1788bbcf4118e4c212ae93da644653035e2f1e91a4ab618827f5bd3be63dba1f01612c88fca9f2fe979f70bedb22c5aedeb7b39a6637238252f685e25327fe36214f915fccb54e56f63ee546827e6a1fb13af0b72ed186a5c2257c3f326bcf2487c6c4201dd768503f49ab7c3c5baac87b999a37d5a22d7afd7dae091869f83cd359ee70ff03598e3f60c4e8dcc699693bfe8bb1f06e76f44cee853e464d084b41b1f620ff3df31f828313f534e9f91093f1be79fe0ffb26ecd1dd37724391be4a26a81fbcb6617e83733ea75d0b810e0e30c06b42de3bdc467760f77dd77bb186f90eb9fa2c229d6fb2e6f525a3848e7cbe3079c537f9325fea65e73bdffc4ae699c0ddda8bf657bcde8eab23c311fc1695438e087467c80e81c8ee01f5705a4967502675637532c07e1391b346e2a92b08c033ee3493c8fef862e0b81ee94e05b745cdd785f405f5792786ebdd171593c991a7bb680e1fcb1c1fa02c6a971118ecc91ef9919c0514d1f51213fa2f2016383afcd9ee0fb02c383e529d2ae79a83b507f63a92a693cb7535f4af1bec5b0ef9e95afeb755c31fc7f6e34dbdace4c319edbf730732ec43771fd1f76dfdbea5f17732c7f208de0253b17f5b3e30af6b33db64f614f79184f3ba7cf3d5b3bfeeec3bb5e1196bf5c1bcf5936e697db723f266b1f09d48ff1947c6d72ca0f95c41fd4ed9412b9483166b364cded1b962142cf117cd7bc2080351afa4efd17df1d303d41925c7e926fab5a47cc9fb7d6f9f7ac7c4bce11ec6954a630c7a54ac6ace96c7306c448722cac3f2e5a673c19e4bbdf9d5186fb4b5509e1bc6d081ead73625327720677f6993fa54ae7d0ec4905feb505c33739ffd4ad4becda39f87c68d7c828b4ca538d8ba13df648cf2b80996b47463e6037d164caab6d2ff0ec53387284dddcbc47ba53c67a9e47c2f31e8eac7c31b7eeb1671ed0e681f907f1a775d767637ea1fc8fbd9fc81f1b922b6fb169f1dfbf990f2491ef8117fcfdb5bd50399b7ebfbbe69f1ee822548e5cdf02c91947655a61f9df9776e7f792d031fc7ca92af837c8a60b3d4bb09cf75e2a6763fa48224916a3c2ca37f07d9337c6d0b35f8b324b3e4be517f2f0370aeddb59222fafa0b66949e81bb7d65b00f1c3e907daa7f8bbb3317d938de9e44cce26cda959d6fa4d88e7e761bd95adcdb9fe421ef42d7338c6e0f137935b0257047e0bf4ca5b25bbc249fdd19ad877369363447e833c56b7c5fb70b4de0c5dab0c4dfe271a250d9fd41e7bfacd1db7597aa61892fbccc8385ca390f971ab3ccd57ce9168978187cebefb3480e6e92ff926d01cb09f913610db1b6e923395bd8f4619315d6690bf015d3c3a42accb37c0bff9eaf4c9f44537069b2cb1112b59e059a95f3c73a4123b6900fcf5d9b289d0b625721fc42ea9cbb735dc775dc86f4c1b3392d705d3e515ed0bf8bef3bc7d35ba06e081e1d92912c66938c003c9f89394e13dc0a1d637bbcfcd3ce49e7564bb7aad604f94668d6fd7808cd56f4f79c83eaadb50bda696d9ebda10ae23f81bdeafa7e9ab7b8740e55bb67e26d732be312ce36bd7d63c21e6794ffe021cb8ef79db3f4faf983cbb54952bf2ecd4db36ba1ad953c613d3342cec0bdc81bbd47fd543e0b7feb17de3e46b908339fc01bf421e8680abfe86c8e98167eda222970257bb6c608fd313e1fd6d7f433ad62dc267ba706ef1acbedbe4fcd39a3d6078d3ac75ddf63185f887b1b03c5a423852d698f7fa6e9c9273d9f625ab73f8d478c2749f098ff378cf486e7515cbad2ca61bcbae759b135d474b4e1b86f335ffdcd9f798c84b64cd6a230f35f21f5d4771cd3f99cf6439e9f84bb2efb18c41dadb35ef6baf15eca3fa331f9e6f73e7fd55db551bfee38e1a7e1d4acffc7d3f39fa94de70f72df765a960fa84f1e81cebcfb13187bc1ca0af2155a942f08fd50443cf05439725e49965e0da7944fd662342bb383c5e2781fb06722cc60fbfc66b32d6b288b00cb6f3dd28f92cdf6e60a31f29d5d746f97bb97fbb05ba7c0f44f66c42e52fd015cf91a4ed43ddc9def70aafa773f730da9ee698fcc1b737a63f5bbabf313df16debef81ae1de0dd11eefcd81e4ab323f13fffbe4f9e2e3776bff50fa34f4b52a24fd534f3471beecd1dacef99677f23726738fa61a81af71bf7c37f3b69adbda635980e4f5fac6dfa139fab0bc0855b53fd6d73667e74690fdf06cb1db62e8fc2c3a9c6ddfa595ecb830d6d3b8a51c8e43aa60f60195ffdf98f21ca5f3bcdd9d88efcb5d8cbaf74942f2afb133e3d15fec3e80ac9df5f9f8134aab06c61016d69e6dcc089e9f51f1b85f4c9d16886e3f85d2899909fdf917221d06531d60057f3e8689f9167ad4249aed0a69ed7172f3bf6e88b76a53c61bc66ba56a343d738f3c398f1b926287fdb305d88c22d2767663163b68d711a8dac3392de4e837dea5a0572478d6b9c9ca1d57b4575c08cd1c89abe2ccbd3c113e5b5e3989a27fefc6729820c765a73f932966a23d3fa9e55056e7c83fc1b75bf8fc46fcb4097969ee1fa3f409fa0b8b3d810fb30f0988ce1cb18cffb11b27b7a88338a997e0bf204b3e7107b13f0a984c95e3476ef6e105a053138fe46c902d0492de23300705246019669742b6de25b947d54c8a3487220c60afa90b48b3f722e7027a6619dff67124be9d997922496f24ba82aa416d8c8290d5dc3f22ce173c755124b7219bc986f4b769c9b6724c579949965388a2be499584fba84a3e8043940daf78179243dcfe1717dad69f4468458e025d494de256b62cb63f79757e4e1b33d1696d2f8bef49c1b5e2f5245cc274a04fb28dfa8ffc42d94ec7c59d03b8f19cd7f31c5675bd82f55f30cf68ae39ac9f4172cb7b76d021093542107d34e4566760d7384f7c312cc0acbebb55d6c1715da2dc2670fee41db6d979e5dfaeeb80ac83dc0158dcc7bec4deecedc4cf15e529b24c6a17a5e7d1db9b6b54da2c221b1b9aa7c0a25f95754ca3dddb433bfca77516e63be34b33fb6bbf11de9bb5a8f59eee5a1f7ff7b7acd1eee85c03e1aeaf90fe4ad92f6da1588bdf60bed108c30bea579b8277b08f6433daf602fdc35d6cd99ada805736764a6d15cc9a37f47a7ff663a890dbe39c6a5fd1b6cd4dd67351f0ca5b1f6a9e74cc7b98799f3067bcc7fe3a5e7b8e6774a8a745b0b0b7b15789680dc711e51beec43cd36bb44ee1bfdd63a05ee13e649697e63ff11b15ed4b77f35f221e4b2d920d7879895086c21b42e1a8b5df817762c38bb700e1e6c9eb52dabdd9726c4ba7608eabe8c8edccf8f950ee1dc29da67dfc8bd1c0ec13db49586fa73ef135de33fc65c49a342bbf2fcb6b68f72362cac53346b6aecc11d79b8c1c932ad717159d4b1b817365e5bb7603a1bdc87fe63e84e15eaf92d561b5989d0744b58bae93d94aed55272de025d13a3917d8e8bdd15e9ce232a27ff2cc5e66ea3cef148e5178aaf6c7fa7adb98eccabef3ecf9fc5ee847114ea9aefb38ba15d318e421d7a6fd3c503263f91f7813b3ef6eda4178c0b65e86a97c03be78bf639392f5525acc7c3fbdac4bbb1337bf2dd7116ea0e6d83e5d33f1e23476a7b0dc8b56306fb1e7cf0b953193e3778b268e1504acfecba9e3b3ecfdfc0869def3f823bee8bc4f63e125762b4e07bb8e06fb0aef2a7fd63f98d9ffb773059bb7666bbe36cabe755ac3bb73fc11fbfff0d8cd77f6ed6e32ecb5352f36ad7b9515b31bd231219cfca3ff514cb2c42e0a17c8975b7f9aab617ff894cd7e6218ff63dcfe194b4e5e546a7e375037a8e7e74f1bfdfc6ccd1f4d4397f26a71329355e42beb67d17d7f31b2a5b6d31defd68e356a33372fbdb696377c76438d96dd7f02175920cec23d75ecbd0ccb9a1d9f31c8dec3c2cf8f5d7bce407f7ffa6df866ffde0ee930f819e5f10d6ed5eddd9a929966184d85b5d0c3dbfe131a9ac4df425caffa2c2b92de650db43043da4043e780e8b711ee59dfd247698e27ddfbaefe17ce3273fbe910d0ee057bdabef7d4e3c4f6ed985287ef99e2df8ae75c27ca1b6f391fb98e48bd7091abb6e1d0b6c68bc4c38f6a2427b44ba53923b0526b7418e8bcad008bfe8cba017f0497266f26c4b7805a32770cfbb867cb2ce1bd0c16fd64deefc9c6928619c4e05ac0bbd9c37c91f52b76dcf573944a3152f57e2df6d3952a738b667f26c745b4aec594706aef509628faad75fbeddbbef40deeddc3345ba564692338b3d93daec081f6fee9748bc693c073a88e74af59447628e5afbc3f5119d89dd343af277b921d8c9e08e4188f6b40ef84c2e166a7c8dca88d9dfafabcde42f889b217134cfaefe4ae7ac87ba9cc6f88ccc8db3a19e48ff536a9be8ac13b922f109755a73d6c2627d42ee332731e38f04cd9d92fa2281ec8274a011b5cd93d897ebe7c42654db28f97b74aecd662276fd51c8fd37f05c7217a6a3349c5b390f2f464731ff8fc07732bf22571663f5b5cf05cc4fd5402e23b65abb0cdcf8883c5323b6cb94bbf39d1c639e3f14ce0da9d185c696f3f78059b3b7935f3c5cf8f9468503f996898f32a1a10bbda61517438d055e1f412e89a36ac51fb57c4c38f8f0f1ee7381b735dcc3c2027b7d7474d87d40cfe6f1cd1817e46a25075bca93b81c0c9846bbb284ead8e8c62fe0c53d287f37d55a33e62f2d9830fee2191743c773d5a0dd126234ed8ce63de1fdaaf8bde0ef2f5bcf41ee3e5ab9dde03387e724566f35e57c31d81a77ce35769fe0dff0b151727ca67ccfce5b724406f1a2bcef0037f60362f3204f5fed4348723c32dfe68f8d7221badd5bebec75e8491e16ebe3b291fb4a263b35316ddfdc73c3588ec6e6cfc7a3333cad9f519f1663ffd8737e1ebba8c88f4872caa854d270cf6cff0aded3d4d0e333fe6d347b79a3df757d04809e529b530db3ae2f22b91fb0c9dd0e6d4bc7bbd16777ee2c77c7d8c7aeb90f75a732e6f1097924a70bf1a3a47c616e9dc211d437a06d7749ecf5e67a20794b9e5407fb7d5fa8f34de3f33ec017f5560db42e5d22f62876c702b1e4bb8ba19ba25f981704329095e2b31eea1a9e7f9b2637ed5ed364becd46297cf759a1de3d1d9cb1361c802f292c6f1f8f67dd76981f8b2ffa6cf3d53a37058529f886ca8798e2928fe517cfce6d726f74328574b7dd3d09ace6ab23a74fb33b29a871c5daf3f8b4541bfc5876e6ccf543ed81f6391a2910e3d9eeabb96b6367a59157ac8ab3bd65a1245c03ddb960592d2a07e49b798f07d7f210d2e5ebd24df370aee4d171758f7b74271a8ca7e9d23a26a344cc3f64dee4c6a973e48fec12c3dd1f59d502e4f61de6f9ec4e60bc80dc3f93a359b5bffbbf2ec7fcdea6dc8611a7a3bce0353d5870720f3e1b981e5468d7f0a3eff83807f76357af2635a4b27fdf27f9aed71f2f63f471a3c593f2211b17da8c1b9f1ef04daee770eeea2f6d9edfbed78df6693e60d36af17043bdb0f513bfa9cd909fa85320b8f379808d076cb97361d07fa6ef83e854863e4b7ccdcc5131496229bd47d28ef96b423c4bec111f56a42a67ccb7301f4305cac19eaf3bb76844ed5884e75cc3912590bb10765f756af7077c40be115b05d428c07d8f02cf3e2df7ca1cecb5901734c3faf905fcdc3c4d0c483bf07dc23a178df7c0fced4af8a353f96e4cf987320a74a7441bc8392605ae2c46a5320a47e62f1277aed4754b16ee24095d6d6ce8664eee04ad342a60bd7be442ecc81eb9902b4a8c24275bf2b90d35c8ed0feb8a24ada0714ca92f5939d6d1e02edc7dabfd339abd27b915bb3c9cc189e41a04bf3f907dc2b9937fe7e7b786b8b85c8875728fb1a0df7474b0b26babeef8aae2e71adddbd34b79f7f7febd1743bb121f59a72f4783ede0f73e80d35012af81670be4aec5ffbbc52ffaf748affca45b773d5d38b574dd81f7e47ee77772089c41e0c1bc7d15156f6d5fe5396ffbb7eea12b9e218725b1d31761df27b96b337ca9b371359cda7ba3fa45f7d9126c20cf31f86cee1f90b72fa6f9411b5ffa47e28ecc1c317f4da03bbf81832657c8b3d751210be1086c541f689fdeb11ed2e41a1c6a33918de6de7ae03df82df1fad017d6657773f31eeb32f8586d25ff14968f246ac96a3f6f9e0835f5855094bf40079e0ef8b1b29898013f1a6f64e5e48edfbe83afdc4e2e16facf8b319f0cd1e3a1b9d77777cbfdd0dac7ff44e263ffea9e9a3f8350935477cac0b3abad2e633a7d8a46ce7e2d3dd368b4ba402e49dd29e9efc66fb169738b389861786ca93fc3b2b0f09911d026ad624fc9a38cd4fc25b65cba7666af9f5ba23ff87edca92d0bf24ddd96d281211ca962d79c86ba5681bff9c879208ffdce86f4aa693852c658b70ae6eb26a7eed6bfae0e9372b57910fa39b3c6b12e57bea43dd04699e2b961f8069e736dd370258f0af11c8dc87d3fd073b8f730c7861e633953402ee675a844ee0ee2cb7c09f25562b918e87d78cc12905525c843bb8f750dcbd29867a4866edd23e065d4879bd4834922492ee2799c46058d03c0eb95e44380f701722a3259dea67ab15204ee33871c9b787def8bc951b3eee8688f7ccfccdf4e6abcd83c683e5a270d31bfa6feebd09e6b6bcce373aca7f7d8037988e69aa5362b3dbff9d25324fa37e1cbe1c8019b22a68d4cc6833ec13e980a51a908218dadc3747409f197ca784978f3191db30bbb97c4f420764dacbf9f96c4ef44888a7c1f93bcc015bca3798d972ac42cde31cf8f24e712927ecfc8b3a83f7e9df3771b4a488825adc4323b89abc0fa2ed9db5855304e559057159ec727889fe8c245cf2b4cd3a2627c8ea414cb00787f33b6b648fa09e78cfab570b983d13dd49ff7580298e1739051dda47aefc80b68a3a47e81e542022386c761210b78dd347e156283d8fc196ed66de6d6c9077f149833dd2f2723b28d76617178be243f0217cb787209f326794585c0d5b09e42f2ce42aed92138b66494dd66b64b7682ac3b5aacecb25db27156c94e333f9c2c9fd9bb75f27652a3b5b34a36cec73e31b10c109bce2cfd709c75e208da669769ef8e96255bc14fd6bb31326657739bad2fc6ccf1779aa9edc455b215995d22b776b3a769eff0fbfc7d2d3c1d7b96bfdba5a2e2feb699bc33664f73bbcb77786c67f6337166a966e0b9e5a6b2cd6dd3765630d676e76cd6428a9f29eb2c5f6d1c1b2d297cec2cdf6d3367bb2b157d2b1ac97aa3acd78eb9dbec2c673bd33686a638bb5cf9d8093b3ce799311b7f6cb3fcddce4d739bc5da76e7bc3bea5bb2d9bd25dbec67623b48dbe6eb6487c79b3d604e147e8ae3d8c65634b7c64cde1833eb63a7e59bcd2e361c5531b6c273663bf89da9e175ad77e6caded03901acacd57a975b4b5599ad77a2620b0eed47de6d66ce868eb1daec3475b37b9a8e9661f81bb6631bb663c0fcd6f0cfda6d76f2bb3193753c876d6e6ff0b3a5aaecb6a2b9e3fb74847c6b6f1ec9da31cd9d00b0d777996c31d86d456747fac1dfe4efd05f36d6d6a26d6e85b7c411f2dd46ede30d5e13d92b676b6f948fdd5ef9c0bf777b6566efb4d566379eef4ac5dc02ce39f4dc581f766e7b6bc7d4dab9b46311eb2b24af8b35783f81f966ac3b58279fd5728b9ae69f2ac444d4bc7ea13b6f202fb5620713e6b3c9c5784e0a733f3936f26a04723ef292b331fd99202f0df97c4fde66f2c3d09db7f792daee49dc9e18eb39e4d1189a1f96cd22cf3947c5ee644acf3bd2b52a50c71972cd3b9683d02622f914485f0672b5c79ff595e6be3739525fba6e6c0c5bf72994cc7f3a36e31a26bb517ef50bf9426d5a91c1f5e1a906f87dd4f1849a350e5df31eaae3339e17a9db4eee2a3dd5ac3e5d711f4acfc8d873725b330fb0b1f1326f6b5e9df8d07a4c5dde078746af663627aca7635cf99f8e83df11b9babe87dd9275d05865edb1e7f27847c61ee38b72f78bd38dd6f52d63d712304f23ed198cea7624aeb881dda3919776c947a944c691bed31e7bf0dbfdcddad99d5113afd0d9ebedf09d972711d90df49a997542e0db91e335801d75a912b9aa91f93a71249bb4c965ddcb6b4dfc3ea2a3738875b96cc519cc59bd09c881d1ca3beda9e6d477c7b770b4263192504b80cc13ee71f559d2867fd6c4490fae91fa923bbc2fefea54c7d6347eb06c6d24fe8ae8d46788a7995e926033f9496d7f5c6d10fcfcf2ab6fb3b5f348b2cac053081e6ce818e2f5ec3536a10c79d6212af20786cfb2706e581e8c0ab05d436cf177efbfe68f04151ac6792e0f00f3f3c47b05f27a11b8b1c8f5d9cedf4cce7e64d01a3cf87c03ad6bf59375fb1d45454e6317fb79a61b9da307f7719d6f427d74fbfc853cc82bc3c3ad654f1ea067cd9d3be812690757896d37d6e5daff1ae375ace787da47a27d670bba4efd4e9399af3c7c8f3c53c0b2d6a283d76d1da93b66c6d358f0d5085c8bbd7b899beb361dc13229c8e53e8d9de8dd7375e6c4d95f5a7a358b23d835366fa00f4b5521f0efda95c8bc21ae10e345976e7ebbd79856ed1f2cae91a7b5b4de4e6d37bcf0f133e1d1b922cf84bb077667cbfba6401eea223fc6dfb48947e6392677403f087e3aaff30970f7c47e71e6e21c695daa573496d1e2219a3322b9179066df69ee8793ef99e55255ce0371b95f3eb4c9216675a3cb178c03f819b95f50be02cfa6e7ded98502a98fbfd5f36be0adf97ea16d58c8b74dd37e833c8be6da1e3c4324d78403faa2114a58ff4cd3e868b4cfc68c8cb92cf28a5f0fa6e90d3cb4327a050f2917d89e3aba4c7260ec88beb9c0df613ce9e443f124fc1c6280e3f7d6f3b70e1d63cfd7bd3b3b92735e1eacf140e326cb4f3ecf43219790f300fa833b090c9f90c944cb82ac039f316f03f9b1bea2ea92189bf48bc4b6a45f90574293cf4dada98cd665cafe3634f956df0176e2eec87a69cd4a4daeea7aca4d5e2d2e162d03398c7ec36281e97d457636745a5fbc1b4bb651682dc1c90911fcaad74ee1d7e60f1476b86d2367b1ba5e2d7ede82632d1f38f20d64294d3ebb22f8b703ae78aa191beaacc9fb32f09ebf8fffda28759dc2766c21d0a72fa4b2fc3e51e271fcb01b2fcac94718c75f9d895b288d4d9067318f734ca833d29cdb6f651713cbeca19e67c48fdbb946f335b3d930de2446c50eebfab7a5db9c0b8393bb3cd5e0e3e8011fc1f6a0cb23734a726230d9963d67f19e3c9e838f208171f2be5746813bcec251f437e4981af0a966312361f1f34afb01dc2332cd388d8bfcc8647c631e9fc3c2bec7e5fa09f172cdfc6e61a14901c478ca25965f491dea5a9fc942c9a23538f0b7427b6d653dcf6c0535ee585bac67c15a5af951081c10f33ffb62b2f2428d8eececd03c78449e2f305f82335acbc89f2381fae15358d33e50f1d6eeb3ef4f220f8f910aa1fbcc99ccc5f68ae4c6a8ef136b7d82df332c83111d808bfba37a8037623a496a3833716537fe3a3c4c1a39dcb104d82b7ede1c9eed467649f8744d7bfb7a10bc1fb7fb04db27e83345b84f41f7095ca87577f32587e525027d19e48ba23d26f82ca919c649f04de2f310d1fc096c8cf6dcebe730663f761fe6cac5a813dad3d17bc1278ac79b3a5f0dc17374ebe6da41c55b5b676c7837d3e7583c328609872f04b6c4df84e106bad5eb25fb45f33d75f789f0dc57fb63b80c8fec8f28b3eea1fecc599d3cbacec21ccc3d35f9cb18e0e7f49b1f833084675dfd8ece0fd601fe51c4c74f7fa6813b66b1811ddd5b7984ba760e33761ff43fdcc7ad509fd51a5f558dc293f6dde070effe027fcf64d8ce9edc5fcc9f3dff5fc407264736300c693eb92e1eb2e7df9fd99aaf1219a1a119041ec4aed3cc693a3b53b89d23619c6e69bb0e3ccee1d1ce91d49f5300f727711eed5fed25cb65c8ed47272f3fbf9ff8ff9db14fb12e5e1a5ad73d27406b35e6d7d1810dc821e6888fa18e3af0af69f5601e9c7e6db0015b53b3ff145ff11e000ed7361f8e3eded15e69d3ef69e30fc6adbbf655d98ecc69283d2f184f61cd5dfac4fa99c9e55a922fa1eeb0fa832ff6a4f1cfa7788c7587033f068563873672bcab7d2ef217f06feabbb6f8437bcf4da945bf8edc99fd8ae6e6392e202722cb9dd59953ebdbeebc86d6f43f9f9baa01cff3464a19780872e1465886919e7907770fe1c8ccbbfbe54b728936aff666983f533b35f40776709ee68eec71a83b55a03b79ef7ccc2de1d37de670dfe5bda45b1d9981a7159363bbffa88b138d7f228f93d437f0bf198f7e7becc0320f3d45f8745ec806206bdbe3a6ee5c9f0e007d24f48fcf31416ad035ef7ab96c96e54f4acf957354b279f4ce3eaf93d63482e86b44e6243943a27abc65416b69a8f2a7a73dab45b9be2f3ab9f65a7d9724e61bc6a73544c322823b6de48a8f789eb7fd4ab9fc77442f26b12ea4a6a3390ac85dee086db04cfe768c55e55788759b797cf2bd75124bbb635cec1224c9427bcfed7bb87b490bb25012bfa5c7b53d7b467c5659db611d66101eadf5e079529d4a2077a4b3c43f9af77864e5d11ef29c9c6315cfcba9c27d2c183aa92f1be5bfa5e7ff2ded6ed7a2eff12cb8e701dffd7521bfbda24b1d598a93eb308e8a7be4115ab53c26cf17cfcbe1e7d98bf659d993e7e6e63d74f30a75e5d3b9528692788ea4dd37b2506fdeb5be10eb691ef6f88b58f5641e6f751ae8fbe67be88c240deceb2416b9d1399747a7429ea92009fc9e692da2e41e7ad619794f4c3f328c6f5fba932169770f689c193d5f8fa890f758f7ffdc28a9a1e3316d8c4723dfcb982e2f40ee69e2eb715beec79c9e2ce6a12b9f3f491c037f2eaec815ef241e17dd88cd35d7c3ee9d8a7bcd3f77a895933f909cb15df4781bfd3e390fd844beadb7daabc7d3c095fb8ed436e76c3a1d9aa6956844ce2d978f8ef0a9960ffce40ff2f04e6a7b4dcb4edcd49daded80dcfbd7f734c3736b72e5b5eb17e23557ac2e3eef2fe74a79dcaa3dc8e7a36ad54ec2e3ad6e41219fc37d723455ae562a8b636ff2f81219df75aea194ff40aead873d1d9de19093d9c5dba977bf34b7f250877b4df02369c6a2fa6411c339e2d7d269532296efb6beb382faa214a7c66934572e9f9bb442ee13f26fe23e397f66b237927608888da3c66d3423b5e67d29cdf9fd227167b3138619cc0dbe75c24014cefdbb58e029a436b273fde511da736b7c1b61fd170af7f360beb006a79bb57279e0daf01f93b1480e39b9ebd3da6adbe86ab58ce763184fcdccf7ac13c4b6b1f69ddcc71196e7fab4ac8ae70657772bb92fb4abb274cef162231f976a2777ed7e881f92fa678b52919647fbbed5e511f2cca9ef597c0c13f569cc6ada0e7e075393cc1f78544dbbdafec110c730c09f4676b93c9a39e653beb43b2dcbe4ea69cfd19fcf5b91dc4a8bf19c1d0f7cb87e3be7688ec7736e6866a5a1eb5cbe85f7dcc474e60dfccee6465fd69e43aed4f3a73af905b6a5fcf2f0366321149d07f1b52479b2a19e1cac95f85811f93379525e79e9e44c6675b02fc62bb8d179415dd6727d64fd77d7ea4bda23f06c2e57074f23ac34d27381e51868e116e1011d7999c48f0cfb155b4274b8be921d013fc12732d384c574721ed82f8c7b048f47ce9ed5615a4c67e79e6dafb60710dbaf59267fbde797eb4214fe5a4c7ffec0ff3ced1979fafad717feab3db3458eff3e6eecf96283bfb96ac811c34529c61f226d57667f2d36d9b19627e6e6d12f6609e83045bc77258db67d9c162a9c1726ff64ab0dd4bb0d4d4780daf0208fefe16f1495a793594e7eb5e60e35752fb9b7fd798679cd57ff2c35f65d027bcaec35e67406757bddd2893f4aa8c7cffabdb06f87e7139d175b19da2e201f3c3d0345bcf777e3fbbad00e8108f96586d738fdf9e35fcefbaff7fdbf83cb4775faf76b7d35af323bd3b99f898e4bec3f91f44c494ed0b40ab56bea3198a8c370fe57fbb7c9ff702f0006e71a3fff60bf179bec2f68ab7238a9a755a86befa1c07266a3eac5da5eec45f46ff7ed5fb77fb1c697f319c2d14077de5625e46b83778678792cb779ba7491b2dca1f8b3b2647e8f9197480007b2ff07b79a5cdfddd91565b3ab9d8b7f5b47e1c8dfd1f89e75405487ead957b8770b7d7631f4ce7db63e4b3e54653f5c7f41780eebf0b3e463ffe29be9ec65ed80a6cd84f35312381eec54be4475c59e4d03fc61f2b08058fa93bf7924fe003f596e67c902cb7dfdb67c2e7e329e970a1836edf800ad8aa4fc18f236f7e9cf81f7e37de08eb3260f21dce1b4f9bc1e0b9db8a497f228e155e81e919cfca541725e3f59ce6b22fb7f23bfcf99adfe44eeea8b98e4bbeeca9dccfe329ca7f800b5a9dd711d97dbc96f5be7e7063da48965c1b272c5d949597b5e2ff9a7d64bf6582f817ce0b53ef65e2aff2cca4b27ae10be83bcbf30a678fdc76be920f631d6984c2cef83fcfacbebc519f66b86e07de9f3e234ff9c9a42ec2997be7cc1bf4b4fe0ffca9f217576c267bcf685a375582c928718b7efea9d236a673e212fc5ba25adaf121d066d3c3d7984e41921b551d39cd854f0dfaeeeb96ec5c42d5505cba2fb56cd884223f68ce94c6af090f86835fdf37332b8f8d4fc16ab29598323607ac8fe7f3174338d242e2f841e0d7f9773dfe543dfbd184fe4be13bbdf0dd9b1fe60de83e3bf983737bea5fdf9bc2d6e3cab37de907fc6b5de378fdaa388cf02d4bc0aa3fd234125a66f8fc477582c2c96131ea795fa48c8bf0cea2c0473ebe26f92c7529dd4ff169c5f057ebf3ada6244f3a8b4eeb6b8770bccb7d5b68f129e6f2b1f8bfa48a2f29184ea23c1f4b79ee7a18e3de3ed37a7d8dd9558665bcc2717633ebb18f3752f1f7bac4e7e127bca3a595442b2daf6deffc798cee0fd723bf8fea7319d41ad6bbe864184751e357d1aaa0071758bfd4482f89ee9cbefcbd6f783e318b85df59b714eabfde46e4c57c972a3088bcde41f63ea0fe8249361bb49533b6f83dc58fb9c4f4ea6f806f217d96b904932b3cc6ec84b73bf4c315e9c3be7fcdab5ef23c9110c3d1511b3eb637ad2c6e52bd6555bfe58a42fa8a3d9ca2381f90ee48b4a2aeb30499624d6ff1fdca7b999e06767a8eb5df98f819cf8240f3feceb4a1aecb7e9a7e5eb54f33c7572ffa0efc9b9a9f3f5e1fe31ee8570461cde5eb2e2d68b2ea1a4090b5dc4f4e1dce3a7b8ad3a79901a00abe483d44fefc5c7f3741ce8139ecb9cd4ad65716681b74adc6a72813c089a486b51515cc0fc76bec23885fbfff3b5e88fe1b588036bc16dd95af0ffffcd5af427c4c78585534525dc0d91b96c270fcf69f24e1aaa42ec142ac6fbd903cb03700f53e768b42066ded02e983e3d3d6e2fa1ae812e627afb7737e7bebf99a4dfd53e335405f4a64e1e8974d8a770c6c16106707869273ef0b011602dbefb7c04fa8cdb4f2de6e62bb3bd8b313d94e45b5c38654ce2ef4a24997c1ef903c4fbd3d8edbaf6ab24fe13b867ac3355a1f476f325f9baac8cc76a9adc5753e38ee9e8d2b3ef4b17d369310d8bf5957f16efc543283defd15e847c02a18a7f8f25e49990f378e96a1724c925c4437aab6be0be5d8342937ce683afb5f613e0cf6a8e75cf28f1b9021eba07399bd4442ce14e484d2f50a3f0b01317f4feca77ad5354c857e2e3dda3077f776de211e004c1dbe5016246a0cf05e89d4a45fc781ef07f4c774375f28f315ff5fbc1b4646a60dde102f4b92567022fb77ccf3e2d8fe4be6a3135440be8582aa2ad5922c9384598e76d1e98e6fca27ca25ab46aed2bc73e0c92d2daeef0b87d1ea8d35ab2f57dc6bf9ec775681e3c7d64366877645c0c3dc2fae1c5d0b5f8a53c82f17efac77208cca72b8780cde61b3904bf7f2587f0ef1673f3e8efbf9743bee391641e3d1e89e7fc2d8fac61260a9d7b83bcdae916f76e500f22f7335b723f837913d6f15ee83e8740d76e61416dbb0e8d99e9d12ba87b7b43ee33f4a5340d8b711e72bac07233797a759d8eddb147cbe8bcb1bed8cdcb3474d7d38cc1e54e2b9e77df831c97f41daf07d6f2c139129543ac5dcfdea677f7d45a2b3706e113f8dc625cdf0ef00ba8f30bfca2b4b64eccdfd30dcc811b07e324f1f7699ebd117af42fe87de08e25df7d9e11df4f9dcb64dcbb2763f76b9dfab0f5b7afce2ac1314dd8ea4e1a8dec8fb0704c8027c841740f2b2d267c8bfd363bbfadb87b4716ea4f252a9c35f5f1a37b74c1385398fbfa77d9f95d797df92f8d67cfdcf72c612b8df38d67419fe6de4f0c57bb8433ad448e02b692cf6f6bdd10b8869e53c52a9edf23f18b1de41d805c3b2c6ec65b01fe87d218e2d95bb0666b9b2ba76fe506caab41ff6ed51769cf91b5ebcb52da25d25fc911e41d87676c3e544f19be176edd036f400e3873bef4a4cf3fc02f3ae77e1d9dfebd06bd17ecfa92c965586857b47d6517196a9352d9a26f9bf325f9128eccca95c877fdfb3962af6af98ce1be0edf8fdfe8a5e477ff5e7172f259ac0eccc1007f6cfaffdaf79af3fdbb4705e4d42be3b9f308f55df31da985c6db83eaf57ecd1f6dfed4cc076c3d91f4e8f537b85eb8c360f407f4840772adb3ef3ee89c1d8841085da762b13bbe3baeb06c8bdcb1f0cef400f64f132e755fb3b15ae310ad9fdc8c63e6086a7a18f538b4fe05c6bd0372cd4becee7e18daa5b4a0feba21bce3fe0f3bd1dbd0ba03ee58083c4d445e7c0a3c3b87b91c76409b57d50e7ff3b41c3a1f5d7bc6eeec4743bbe1bdd87eaf5d7dc8070fe33e578788b4d9e07167653dae7716a3a23537da869b5be19c91c4dac0580269633c9a367915790e9bb708f33e2458271b5b399b9779f15deb570bce1aff6e7c087427f3dde73594c659ab2f028347b3c61aa64c16021e46eb3becf1198f8bfc1eea0ed9d7edea6da94e845509f396ea796379507a031859073cc6ba8476cd9cc5a8788e6349bea3e929712ba35cedb17e960858cf5a55f59807dfb5f3b899d71860b4dde1719fd641a9db05ba56c6f88c791681d7d61835fbc8b793315ea7b14e60bfda121d17faad9a76e1c84c433237b277a4bfb706b6163e97985f629a01b021e302dc9ed634c3b0ad2cb1d5be0adce72f7e0fac29de4fa3e4fa2d0357c4ba1499df01f007f729716dc6befbf60daeda69545c9b3931bcd8aec66c8f90ae9581d4eae7b9aaf09c67d57bbb9f63283d33e48ecb505ac39ebe4fd7d0ce823e3506b3ccf7cc5f6864a69f5b0cb799f40e70f3c764aff26ebb1cf163c339517a6dfea4af404ad340cae8dc600d6f8093dbc9a8bd5e3105df337d46ce2fac7732b4e67ba8e71272e312b9ce0dc3f01dcee8ec61958fc49ac6adf101578a983fa74f6b603de1c83c047a4ecee076572dd58908fb729808ad798e483e7eb79a55b0eed69986f955e43c531ca956786ea4afad51b6fbb2729f5bc76abbc6e33edf01ef66c24a6cf70bb9b61bda3ac2e7d23acc866044dbc69897e1b602c006601a8d3b73805cbecd7eaef1591ae1b559557b2f318f8c3ce71eb0734ce02301bd9a76dab668d1fa8dd12c1e2791eb3c223dbf05157796e14ccd84e66cda39f2942a18e5ed33b3cd9e1d1a9805ae788c0a6d4ccfba487097e246039f7388614ee0d2bc071c9e880d6ce40c494ee91724eedaad569476ac3be7199da3c2d947457e20eb988d80d755b8ddaac19d02cb0ada2596d233a36f8c361038ae1f4d5bb9449e2570e7909ee7153e639555e31b127d29ad02c21b697f93cefce23470c7958ff5a08ad27395f032c2b3ea73700c74b98ae73c3f867d637490eff31eea6b7e0d4f809fc6bfb7f3f068321ef204986c7dbc2755c36b6afc7c52de599276c65b0d8b86ced4ef605f0f693defa870f2f070623651d2ae990b9caf4fd7b9607e407023aa1adabcaee950a0cb37e4e519f2a201f9a0d99f4097851ede527c7b6fe8ca392cecb3ef8e4ba8a5816901e05a86f9edb881417e437a7e247b1389f49c3c397e778e0bb92430686415b22f759b5f81aefd0a481b81ec2fc3d7bacdc5f7501e16761e01ac8c8a6b575adb81768579893debd4e689449e6b70e199c6d298db83596911590fafb38659a83b58c6c134b640857c6bf5b99d74641d62236ecede6c44e49819a1350d6c2e505f0df8b776a1384be0c7f049ebf439ca53324f83cd53ecd011da2787c3f33c875c6674bf09dca8acbaedcea5c6e972b59dc1d9581119f4d9c0223f06739b879940e6b222b2d3d4eef589feaccf47e08e7919e6f93e3540266d78098143246997d06dedc3d322b4b76c7093b575529e161179302273edeec5dcfaf5d9f0a8672dc7ee09cc3af3edf2a9e76a4be41c68bfdd55afdaa33f6c1feb4e1e3632ead3aa7c22a3c37c1a7e4cdb8f91fbbc84a3a8459fa9ec2f706daf042f39fac0e159e83adcde523c81b3df5aff8dc293e17f7d6eeb36ae76c47a9acf9ffd8e1e15ba5a194a741f096d7cb4ce9deb6481e75c7d4f137d574cc1af919ca907ece381d02d6e1fafc8b5cfb12bf665d4c344ecf6db969b127c3edfac2e6ed2b611961ff42795c541ce78aeb606e07323bf8839d27331f4dab211c5cd1191356755af6fd01b1c4ed6372ac2ff815f570d1da8fb7f002c244efe6acef5d3dada5d7808b1673e63573e4752237fad0e9331d9df5e7b2970e50bf26c46ff9fef80abc693d077ab6e1fb8f68d9c734e6f26741eaff9d99c47f11c1e6dc8e113525adfe2070d2dba069e257c7ae63d925ab206e18d0783db47f9e04b5a15d4b8c8b5db26cd1e169ae4bbe7fb80fc42f5c3a8e2db7ed6e763d2a1c3f20511df67dac78ad3af39dc979ee7b8d6e59301be2e5f020fe5686ea63ea1a120ffafb6a0cf560d2f914bdf1d1f117f86881cd28c457584a870781d9ce8351ad78f949edbf2ccac243ca0defb87ef3e7324e1353ab7a890697f40d7cb5505b47854f73957d250e769c54c2438b57b121c345bfdf6e4ef6d446d05491bc749bf5dfc2b29ad7c92fd6ae49e48d71ebe97a7786f235eaf3eac086e6f6b5c7d20573b0473454485df92ff28be884d9f4e19139853d97a55819e2cd6733c87c585eb6336a6e7a96afa788a14cf2187ed6aeb5399b5d6211ee128ceda3a7e4464840339f71cacc5e8a85c102f4b7664cdcefeb7e86854c8d5a70bf56529ad4d28af5eb575b5b979ff74b54b23bbf89c1e6294355ecead14e9f605b5fa0478537dbad6a75afa24e1154c169ed53c2992b41b9ae7507f97ca3744a6d8fa0296376b9bd4bc4357a73ed11f378fe4bdd19d2be46a55a03b97969de5b0a6f856cbde55e03ab7b098517b129e5b02f6246e9de7708ea8cc49f7780b32f0f3bdc1efb67eb75d9171606e46c5f505ba2a2717825cf1de951fe7b54ecbec1d14e78dae7c35204f181c7cd71c7cc7b5fc47696e576eae22882d8d3bfa4863a3aafb1ad939729ff57a2da2b710797c9bd43817eb1a95cf660f22cb11ddb8c1693bf7dd4763a7e9cabc106b6709616d4f23b20f951da5661cb847bf73b83f26fa7f7dcebabc4f22f2aa21907daaf181d21c4a6f802ecd989e519fb318726eae79fb2ae32163ae4d4f4feeda69491ba70a5df9176af1c335d5556a99feb55c57c38acaf8bc3cb0dd092dd9cde9e55cc9e3999846fdf871fa3cbd4773924fb8e3dfcbfc6febf7cb424c23be7614f17bedb481677c3f97dae795f3f96577577c6eae007c37277f83bfb0aa5cfa77c98dcf2ee7477b1eb8bbebe623f985bcac1b8f260473f31e978a161dcd7bb44f8ecedc3c2397e4758ac06f0cc387e4d2069f5ce80b72ea1d17c33ec5c4c76bd3f7093654215975ee89c13f8df96dd33a1cbe47eedbc2c23920cfaa7ccf1c77f36f8592f98f2b5df34f47483eea9c24bd3be84ede3b16ff36189359ef75fd0db7be9eff299d3bc088cc9bd68d68deb7e6c8e3c791cfbfd7bec7fba2f7e14872203779a073354ddcb7c4a7f0813c027b0c0be51cab7105fe4750eb28bfc4a4de0989b9f32cce273a1e3e07f5f3ffff1c0c9d03f4df9d83617c6acf8db47981bfbd7c8cbff1836ff2cb501cd21d2c57e60c8f2066f848f25d92dcef621a699c9f8eee9488f861dc7c09625fb97c6593bff8bc68cba392470522fe8a85950fe4427b40be05f0d16bf76beefdeeb31b69fbf345ad423e6f40ff3b960312cfe177dfdb3ae45bb985a3e8c4e50360732e7db79f53b9137bc8c184afd9d17d3786da3fc8b384b53b3e872ea98b641fcd347477c33e989d7813be0e0bc3093e175d5438cfd875aa78a6dd025724b5163254faae0871f8edf86e81cf3948f283f6e77c0d47e7cdffe97987aefc63f7bf3ff71172cd5f8167ff1f9f7f2c39fb40ca85ff036bb84622e43ccfa391ad84457e25bec4633d2ab46b37afe6702d48a8c7d3e583ff620cae9e8fcae7e2fed6dfe41bf8d1da635d9862d94bb3cfa1ebdc63ef9b9a4d2c1fc23e7dd0b37e6efbd3109fe415f895f98fe15afb6379d1ce23f8ddd9ece6a2f8ae6d6b5d9c4f65dad445e27c70e66d9ab9ade923d659387975666b76a6395bcdfedaccb4ed4693b7f6ce99e1b6ef5b435a35fe254bfccc3aecc4f76d46fc37a7ab11f883483f935892cb60b48298ec786e8f8d798c65e7df8ee309daca01ffd95df50ef17f2cee51ab825993d7730339287ab1556924a54d8ed15d7e8be7ab13cdf32b109f1bbeb69495d37af62ff27abc252be2a7d6cedfe108033e5e93bf5af93144f079fbf16a9d148feecb52a9906e5e9723164f2e9e7ccf3a7172cb89e53f882427472db907cfc71c7763fedeab96ac928747bb2479109b3cbb751eddbe5c40db8fb3501ae71d59651f154e1a548332473d4fd82b75f28f31bb248b928d3f2632ea46f9d98ad9ecc811f0edb49d2b87eefd508e3ad86fc8877574aedddad9c875b26e7c241757f71f633a0379a0959ba4d220876e3797d547d9c78177a8bd811467f7dc7942aaec84f46b27389a4df788c8e8f63edcc82ca7d415d6a275e40abcaf0dbc6eb12b245feae4d1cdd787e18bf17eed3e7b79c16a18cdb44baca6b88fff67701dce340713a49ff7abfdf73059b0f94e1f89b5217910603f693cb8c1ea287378e24bf2d5c7fbb503bcc8fbf4c1ba872e1ed331302c91b73a117c9b5d082e2543794400ee10673455de5687c963359d3c202e0abeede639ed8e51e707fdcd5c58bbf444e73690c38eae4bbc3cbc57f3d11dc0e121dc213949f35e2e28823b24ef6854d6e33f97f44c236f350497b03997cd376ea5c4fc77f8f762f3e8e227d75eebb4d7e285237460caceb9cdf2aa76f9647d362281e57705da7fa178df3e0b946e6238f031cfc4d63679d439ef75fb0ebe82b4467cc3d36b1a43f323f17d3771bb0699431397ccc734363c89f3cf9c2461e1bcc51d5d029ea983f9a8209e9bf5dff7c527eb643a3fd06638afd7f3a2bcc66d59a69bb79ffca37a1bcdb5deaf4bd1f38b6ff083d0fd4199a87fbeb8dcfab0cf0b9e57a9e4ec7773a811baf12a6f21e00ccb990c795cea7eda7ca2e18fbc7e4f6b29acd4277b06fcf09de5c8a339d05b7b4aed06bccda18ea1de903c2eff2fe102c0a4b04ebe674e43c9ced7defa047557dabac340bc14d75f0167a49fe3be6fe3aa693bc5a95e3ef96e7ea861992fe56a223d28efece6bbe3f73e1ea6770c6f468379f0002759cecb86a6f0f9cfbe1ff33b3ad5eb776e09d171d5a151c08ffec43e85f9e8ef6be7cc69ce7218cb0a03a71fbf106c86e3eea83c270f9da9c56fec94df7dcbe87e5f6ffaad5c1885fb9fff20e979f70bed02bcf468dd437d476afd129e37f23df346e0ecdc401f70dbb518085ce2342ac6dbd853a08e286d0339ad43e9992f8ff8fd5b937b9ac69822cfba605aba74ed7324414d942bf86b6c945b588af5f77c4efda8d00ec8b1c488d410c47294cccd1d9fa7d49776ff1b63596b27fddaecc63b8811a4f9739699a8b89abc5def90e609f9bb3373e6b66340acc1fb76f2b0aad9f87d6b88d6341256d36ccce97a00b3c045e3ee5982f82e372f3e37c9802eca78452b0f3ce6a56774ec9d0da0ab788c21db59539389d769cf7954c8437dfd409e797fd557576e0c0bf9deb74b8fefe188d8dff85cb9c446dbcb915b46855c2e74b1424dbd2b66d7bd212f4a582d8bd0b38e5d3e164b5a19125ad45d4783c3659a87843f66bd7c64f4f980dec2eb812fcec32435dcfaf7eff3ed90f30234ce76c74097d170ae5618af872f78adfbf41a49513db765791ac271a89701b5df24f98236937f967c3e4faf99c742cd86728c77754c924f018f9ff36790b7a37267919be7cb3c205cfb50978f74ff7b74959c6b87a7311dfedda301c3341170e6edbec078283dcfe1718d7911a973c26a3bb2d81f26afb5758e0be8f42ff2e2b2bbb0c5fc2a2fc91dc2b965d327f74229aba31a8e22a895fab951ee684fecfc9c2ecdddfd905abebd1ce223a55b87a1954fbaae6333903f9edd37f0f227cb9fcad57778f9edf2486a497139115b79228673040fe65aa4b06ef2fbff41eee3c19c5500cb1d99ff406ef3fa1da9ed341013e799657b5d3cad74c4c0ede594166337cf482e2f1378aa31572ebe6be501f8603965549273d7d01c6263a2791a308d4cdef7243fb60f7491e405342b1a83bf9f5cf1daa3917389d5c905bf5f42be28318f8afc80f5a558cf018749ffb35f8b72f2d398ae24c81b4cd6b837d40bf4bdd84fc4d5665218d35d49e6901786f6d8fbce634fea108fefb13a1943eddee94ca07fe96f438031a63f616e7c7e5e636ea621966537751e36882fb7882e78f237caa7319d89df8cf9b4c8fdeb5f2c963d2c1cc1f7ec1ccf3b2a34ac435d9b5c79b4c6f97402f77cab2da9a5f6ae2a9fac8e03fb6641f3bb9039180f3cffd5d64fdef7136141623ac5b078e6d1689578aa9942bd416f45e224f41cd3ec53e05a27c86d29ed127fa394be3bce4249686a62d0bc10ef903b62f25c91b5fc30a66b022b5d1602dd29630972561338aad92dd6e55aa65b6dfdb3313d2566291c0106e42ef81eeb690ef95c3d0bea70e373cacff37df3785aeae3f9be7994969a415e70e49902d47f771e7b3a16c3f7819a711d1b8c26b39a801ae4eadcb13bd3e61e9ec9c4901b422039ee595eb65e9e005adfd026b9e06b9a305473ee45db8e0cc4eadcda3ddda4ae8f3b5f9d3ca969d7d15921475a3bd71cdc77b7bfe9d6336cdfd5dc23bedf3a261c9d43fd99a399fc8849ee9abfbf5a36e25e5eb907cb2bd7bd5b1fca0b5ddfd7036fc27366ba483b874638520407cbf65301fe0f3941b81c7a7c6e16b8ffc56dc42b864bcbae818afc8265a32df79ef549fb1fb2f57e35fb60311f8e1f862e3f620da5e174d0fecdc9aadc98d456fed5cdff5e38d7708472fb68dec317347fa80dabeb87dc678e7974583850d7bf4b9f9bfd51d2e868b4fd6048be88ffb0bd5b6e84de9d19e625348703864fa78e0bc603a8915745faf38ce59560f348569bc13c0dfd39d636844e3dbdda16d0f54be1629a75278db2573cf299fb9ec9eca8ad7a8b94373e20f618f285b4e1d2cfcfef50bdb5959b9fe532c7ba2ba16b598b177f933b9dd0cf35fef6b7756e698e0e524f02afa77546c85ac85c90fb68d5736d684c9cc71acdc3ac3b19579bb42b031c9167af496ee534475abfd66884bf9d410cfba5c9eddc96d958eee5566e93e63b5aabd77960f9722d6957e43ef83cd250c7774bee99692e98dd0d956fc9427fa67ee15c1c29cf621d723fdf63cf3ca04d967c6cdf924892c5a8b0f2adaeed91fbf402d716e85dc2706dd1fcda8cd5b533c3bdf01fc1acfaef60f660fe54bd1ab96d9862fc873edf7d5724b6ba4e7eee05d72737d699d532591611a6f117df35f3508bcf686e9f96aa528523a7f4a51dc6cdffd4b0dcf1304edbf7ec7d98615850fb68db1e63e8f12594cc345415cbf726bc2d86f2411b9e7f38cfdbb23c1d3c515e3b8ea979e24f90315ff8cff070e7fb39b5eb6c0ed4dc2675242e756e51f0336be96790e77f99cbcc5f8af03a7efdfd7ac8fc1c2e86766dd59378df439df13cc6b28bd6bd5be8e2d0fa44ebf84abefbe8f828901a189e44729132be85f1e77dc80f83b4efd954f91ac1f5fc0a3b0f754740ce6fe7f8c5fcb816c0b33bbc5c4fcf5139feeaf81af2bc74b8e63cfeaeeadd0b5c381ef48bf85a3ff694a647c6fed9b3cdf769bf71eaf9d6bdd8dfdf8d1be85ae5a9c685a3cb24eea67bc750129fbe17be3ddcf8b52f682fb75cbf9eec83b3315c21b6d5534d4ca77f0b07aca30fed55074f5a78d5f7b1e1f2f9356be1f17ec8af053fcf56e48e88d5f887f34ef2d1b6eb93401e64577b60d98dc9b0f8371df7bed82bc75097f7befb4876922350fb06b19701ec7c2c7b62b870fd62f84cf839b1396fa1f6c5ff9ceee07e68fe97fc23627e9d9a95b7f21069f201688560a5a1fe9c06ba7308ca94e082daeaab9537913f4f6dd9dec27292803629c92dd3e030e9f368d1ba3893473f0f23ad6b3d325bb0305ef87dd2bc50a4e6743f07d1505f43354abbb51a49edc89d5cb235e13d7d55bf94d611043c1de8fbb4e8e7fbc2b21cab2bdd1fe7d8d40bffb3bb2d5a237b78bdafef3ebfd18dfcdfc87d3ccdf75d3b0358e790dbac33de700d664fa238b2237cb0ce250eb8f948dcd1008debc136fe2d7d19de8f6e9d1942e7cd9145ebdafd094fd232f47b9e99227d8de1dbcd354e7446c86bcad1b7411c9643fc3da3c3dd98004355eeee08a5a126909ce9ed77fc79fbb5a83a79edfe80af307efa5bdea2c919d6f1627df7bfb55ef90fd6fbf866bdd765378fdfff7dfecdec29377f64e63ec825c446fc873cf4e47bd6ef715cd72aacc3bdf4896ff350dc47cc6a80fde13c8490defdfe160fe61ced1ac0016f047369d5ac1a3a8b5d3b11cf6b169b7111b84f017946db1776408ee0fba463df005ea46d8b560df8c30e9f89422e6d573b04bf3fff45383235dfb54e0b1d78ebde77ad5f4b8a276bcf3cbea24574bd35dc176a76abc755d383ef3e2f7ea11d82f241da0a5a49ee723af496b371d4f8c0d35a72b7786ad52f071a4ceaf22c1ad988c824ff7dad72901f162d79d2c7df41bfef6d99859789f8ba902dbc6f6a01a787cfcd03f21bfbaed8b53d42de19567ff5b56fa531e05b69fe996f650ebe95f53d3d77d779f864f5a979fb1fe4cbc67d6857963bb8f75ed5a0c6eb42b7c62df981ddddaab1c2d7db3574518c466b4c0b2404f50aad7b54ecf09e17c83373883bd1b51b52218723d6c905e49915d8105a75eabeadbb708c0a598c58ee5398ff983ca377ffe0a736b7ef86ae893406f3ec631d770e76f202617918e269e2321c390f80d3dcb9452325f7a5bc085c276bdf8fd176c3f76bf4ee8becfbb2b0d3589fd19899d6b31bb3bb74eb6277dbc5ba56420c53d3ae6347ace79398929321c9a9ccea7b9f123432efb137817ba6b09033e4ad8e7dba0b7610924b15e26e28acb97cd32d78005e36fd915ac9ed77c8b58ff81d4f6310bdd737058dafffccf28dee11bd1bfdf494dcd0955b28d979244de06ec9d7c97afde925f9746591e56644459e235549486d2536874b624a133edeab73cf4df39cbada2fb4613157ec3cb35af8e22570aff95255fe893d4b30f4e73920f741ad7ace4d1e50ca7fb95a244d4d1e881b867a2335ef21b6a7f7ad686bef7b6514e8cecd985b777c3602a8c303b9dc53a4db787d277c8e962ac87489ef3eabb084bce579a8ef6ec1d1ba87fbe4ccf68adeeb009e30ded5d4b06ef9ee1d308ff54759cd57eb1ad294a6d43c86dce5dd909e1ffc3a562dafc89d1ebf9f76ed03e87b76fabea767de5bdd306ef92427e7df5f1b2657001ca06d1daf57f335e51e4939c099ef27d2e52aa0b9fbbfe68f16be7f4e793f44dc47f6c3982af51969ad474ddf962ad8da1fe1c83a53bef9f0ddbc6cecc78e108ac426f8be6fd1e21a66a4fe2fd85c13df1d67869ee6907f44057c26785c2a986f1e6217f2aa64860eb4ea84364a8930fdf5e09e93e1414ef3d25711d6875ded62a8711a7bf6dd2c3bf1ab84d619c8cd8fc17cfda3ed7b5ecb6ef0ed4ed732a8f1549d5a34bff1e1b5eea1a7407ef37521e3b5566b2c6bba6fb55f6f0b7ef3f8843cfbd4d0d5e67b9217ceb945527e0f8fab242c1c8cc7784d7bb2662c935822c917b0a6df439c4512ebf9156d20ff5c1e1e2d8851051f7af84ecb6a9f4f3daf62ddb9615ef2be5742af8d53f41cc31e905ac8aa72093c4b40ee388f8e16830de52127462b5bfbcaea08be971cbdd3e5d250e31ce9711e9531eba78ae739e4c3f81c09ed3e986d5ccf311ea45109f6ccc43f6664ddb43e7a7d068fe4f7fbbe774ec0b68c3c53085ca7223a341d77a354841793bb69d2af49f38e3925f045826fc0dbebb1485df5e9e7dc1e86e15cb960bec8e648fc6fec1cb76f8f456bbcd779a0c9ef8de48ca36a0026ba532e5dc687494c7228f9743ebb0666f38ccafa34e72ed12de0ae0f4d4fc4a7ae3d677c86e0fec8d073c11cad400f0f5c3b67f1df81b7fa9bfadb015fabfb5327271a274edee90ec6b92a70c707b4811ae520fb121f0d1bcb38e7866e3ac01320374c239f5498aff8239bc481d07e6bbfe8dfccbbe9b3a6a9ac3ff00169d144da167cd386e4bee94f0aabc9d0fc885f14dfe637e73df0d647c063eefbe65cca874082dc2ff5fcd8b37f3306a1098d9c8075b7ba1fd043c6b770b4861ce5a12b4bc85dd7fb814666ea1724b728f587ecd0eb34a7be165dfe8ff9ee312ab4bd5fb4e8f4351c3950ef3d2a80c696788e511dff9f57c65c29030f61fa7ea96bf3eb71e9bb26d4f2c6b4a191f9b8e77fbe5f745ec4e7efa3243cdaf8f76b3cf8ee1bc0ad8653c373d3b018f7f10b72e4d37107639c1a599997ff86f61bcfb786c3b119ef7f841bba56019c4616f12575e3135d0bd85899ef5fbd4e5dc37ab204f68c7f8f1f29d603630c3f526f438c2438b737124fc964432a43484f3caf1cd3c1b070464cc75da8596bccd0d51e869ab0f6ec3ef33f8c6e2c1a9edfc4311f4ebd5c1721f3cd21fce1107b26e4270fe7d9353a3a37f09f2d316cea98e28ab303d4ed3bfc2031e69a88688e6eaff63d68e87a74b40e51a109be94fc30e6d7b6acd5e462388720e7e4874025b0e5cf932f69500b1874662cab901c022d78469255423dfd161ed5631399b0cb6fd83724d708a659f59a29aefe30b46bdc9e33f59dd0e502f85e31a6b45c21bcbff16d3d05ee33c3ebf88d1c7208f4fc82305fce9bf386bf8b595e06b5cdef7dac3f1fd7a04bd7b6afb999c685534692765993fae703f026f5cfc9dc65319e2b22954785a8d0a0e690ef3e389b46830360db9162522787ca8bbf3923605b02f90964bffceabb319175306dd6e514faa9e165eeeb79133db7d52fabe98ee5012a578ad191c0c12772299c69bf90df9a399b5352ab1def05c2b8cbdbb6de5ab16a584fd89e9295d6c761822be919e1b13ce511ea39935b497d7617cfc1003f444c3fb9365877b8212f15883f49bdd63b9ae72ac072be1a5e2f95b5db7bd6d036bf90b3cfcd23894b199f23bc7717dfcb994c70c7b810eada98c9ecacae421b1fc8de446c1d041f391b0e9e67063e90bef414492dd8a6ef86b783ef48b39e560cdccb71886fc5dce27da220175a07e793dacf623bf4ce4ea322ce07ce4a62e8620a391701becfbebe0767591e7130e2ef93f059dbd335b5f00f6803b92bbbc723eb7f3e4f35be06eefaca6c4266f5ba0db307d56db48edda6f63524b6286f34e175e3dba73a5c6f76a8dd409cf9709f9b3fecb315df47ec2d359d77ed35a76f038e45459eb1ba323d7b1c379f86ded7ba4db66bc6ede51d8a8eca9dd4f0ab65a85adf461a675f68d7e67960f9e863a31c3e3763fc7f3ec600fafd2ce43ba971658d97c7f33d9404becd57a48e399b026f73c163243f0c352d31bc96c724596e60bcdba79a25cb52f9114af2b54bab1673f3118e5618ae57906bf6e3f16233b91b733c7673bfd4f5f3a7310570cf89c8dd47e875f086d5686964d3ba7d2bff522dc7b4e149eeef25a71aac593daf6bffd7b264d34f2be6a0ee87d50beccce5168db0febe3e2dc567149597fba2eb7f3470a7bca4750f9b315b3eb7dfe6acf2a567d5fa76306f5592423ba84f635d984ddd2ca381b815fb1c1e3bf9c4f2da0fe2c1af95dc6be3feb2eeb9a476467687ed5c03cf86fb28060fb27e731c810f566baf98ade0e797dac8f6fec8aa3a7707fb4f0fcbd2ab5e4cd4428db7c8b305a879aecf129feaf9beaab06f12df5bb7740de21346fcb8025d16439de86c244e5ab987c5730cb23dd6495cb30aa5a7083ad446b921d7caa3919546c70caf7d1781cde4671293fa6398bf90357998373b02e65fd1c8ce7d777d33b93b296a07a5eb6fd6371817d3e8f703ba0ec0aebed769f9a392319a776ad68d5d61f74a4ccfdb22572bb1ccdaf199ecbe3ff5ef979a3b1c6e8ff6e8b8e2f545fc1be461c3ab9f65e8b8aae50fa4a3aa6da34515bd036af0a340158b47273c9ed87da2b995c7ae7df72539a3755047817b3d47ba9305aed68b4b6df96b4b4e1a15d6c92ede4e5121df21ff808e6e26e497b0cf11d615f4762d5182d7f20360745cf562c7ba7148b4dff3ffc7de9b7529ca34fbe21f685f6cc4b29ff6525110a7eed292e94ea05a2c41ed76c44fff5f199109396155bf67bf67bfebacffc5b39e6a811c232363fc05f8272cbb9275dedae3016fc39f8cc6d7b8bd78c8b13271bb0fcf718df11d319e10da973003f13de407d5582ff0ee80e7073057196ff048ee232126dfc94b6a579230fbea35d2f2136e0d9ff81e31ce61db2bc6db5e16152f87a87801bcb49f65bf88b7af77b02dd463a87d39f01ec47c5f263817a8ed457f17fdf29883df95eed80fc411a0f1016d663b595dc2f64ecac706acb73236bb886354df29f437182fe58bd1311e2df2645b3ffbb1a5df3e44febe22fddb67b92edf476c762ed4eef6036df79fbe67bdcbb89534ae3d1a8c7751d0477f90fadc075c8db65ccff220c697e0bb05c8a783b35c6bef17f29dc5f67d55fb07292faa7ee36d0d481f9d6be4e05d4b631376e13e1fa18fb5437d16bc4c5ae9c9642f943ea705fae7584c75bc475b813b8a847aca4f72f3cde7315fb8676901f1e5a66f8ab92b4827d17189e7c45c2f3bc7c8da1ca5180fcc312d7697753087bd15f361f1bfd5b2d38af7a8474e46d151ae31a8fa7ec74552cab11fe44e8fe2b4c8c711f5fbc9980f955cc0ec0a43dc1396af901622869a124307714baf65e478b7d4c9b8bec4d824214f44a21da8813970e5fb87fdae8da349b7824c0177cccfb2bf98b235b3e0cc2da644f6a67b20edd318f2f947e165ed4bb85a557d6fe1be52f608de21ebbbcb776a4d5321ae38718b5af60a2c578a236cc97bebfbede8c99ee9f843e79606f3c364141e9f607ac0dae15ec17d5ff306fb6c2efd85869ec9dd19d9919362fc88d9bdc494a7bfee739cfb9b52bbf69114339643622e407fed657c3e18e0ccedc8795d55b10974cfe01d751c8b3de60372e3e162197e967c5f1d83dc3551f07ac01ad0f08e5af719c640e87d258ff569ee5abaed3c00b771342f43caf7a3f6027ceb3f60eee06757fba3b583d3a27b8c2cf17cb06778776526e6d8b0f1dcf8b19e5ce7f06752ded83e6af90b6dafcbe847cde58ad04e46c6f3a1af450af180fb711efae7c4fd68ae09cce4d594dee5d44ed758e3f4abedd273da5ed43cdf9c163caf427e8fb161f92975bc7222e64caaf3e6ea82ba3e279f80ac24d0e2253101e3d22432d9781bb2bb87c6cfad246c4939978ed303edee71b6a5f70cfefd9d9b578d3154f67faddf5c2507b33ab770bfb3efe67160ee4ae1ec556b0635d77371ad90af3f59ab8bb256fc9e59f665ba9f038e65bac5f5a0be68ba1e2fca3d31d18e2da57c37d1f2ddea7eac7564cc4718f4b096b017c5a9d1c46f61de6dffd14f953bce1e5e3047306bab7dd6f8cfbcbea15b0fe4cde9f3fb14ec14359f7ca3eb24f4bf15da54ee5489c75befdeb94df833f008f57b9e8f57ef09f732dc51509b5ebd7b3431c23c4f094cc00df88679e9f7dcb5b20527bf673a0c224af725c44c2eb9bb5c5afba49d1e53677e70adec17a135954f610e7c608dc97a109dbf1579b7ed0f65ff44db46431b8887d9d27d8fb9adaedd3dc566f7abb20bbf47764c65d9b0bdbb400d5dc7a3b28cc8a379f93330abbc835f9877aa91c5389934309b72b4ab7b4c950d5ae75fba9ced88de75629fe38e6f425b783e05dca91a7354ba7f155ecfd3ffc2bfd7f209c4d0ad9ec928ca9a325914f84d437df43ad69bbf4ffa59ea6cbe817d94f04207e20488ee7f50c7c7eb264ccf3968f632c36756aed83b79ec15665b985afd07faadc1976124859727e4ee0e161fccaecc7288a3605ef0765abc2317c67a181d933de4c6409b3f34b6993a3e765c240f1a934263a02755fd4be005ce3a183f527b9e87c118fc97ccaec4da9fd4b69c1dda721665ea7b344e33073b12da603ac7d05c9ddcd1fc10b7c7807b9f3a590ebe5227ff809ad5fefd18d2ba0211596733baa0aed2ebd673eec0b98c468bc3a2c8cba4bd60f322b497131a888a17b40b0d200788b6b3c813fd37958d6bed1fff24ed4519ae240c070eb781e1b210fd5cf45bf5db554c9b10e39fd2d83a3c07131dee52157759d728ad6c251c2621951be879c479519bcc3fecbb75717ea4a37126c5d6d7735b6a6a3130b9ccb2e59a06dcbbfa5c328a6bc5e3cef2bca3fa5ec0e3c4676c0dc9b70fbfaa3f573de7d693f40378b5924d405827dace38e5f314b4b626aa4b464efe7b0dd8ccf630f2a32cf5ef1477ba5ec705b7f7b57d4db24d80ad0def2e7d9b1d986bc3fc9e7dc7de699c37d8434ced782fa21dac23d892807eea1c23c97e4569761801c6576a7a500752b2efb07c738a7f49b1ff8aee35b59aed5b130ff06dbf51fba4a0fb50fc9463826bc9e7f3d63ad8566b97fa1317dd76bc93befd4fb63bf1773c95ed53bf738e882eba1a7764dd44c1e8e0b158c9fd1bcc674416a96cf88a9e41f7ddf48c85933f54bced344f87b07eecee6ca80940de59c4f80edaacf87a3642ce6b5523a9da17196761b80ee6c6c461baaa8c9da6e90b6410214f7331dd7b37c80358e546e41beaddafd2c20230380aafed0eb33c0c7a526ed4f0e43a6ed37aefeb710f8fae65706b9a6df9bca8c917b175986ec4e976927faf1a37d01b8e9d7ca3e0ebecc8b824998cac3b7cc774b24a6f5df6fe9be84a3fb6fd714cce69911befbcbe50eb41f07d433d1a6a27ca1fe990ac519a47e88b16ef9f606ebc121a32bd3cde66ada9d537b5b6ba00efed89c0e3be6fd26587c6302dae93116251d5bf11bd604374cde3b4c098b6c484fb8bc63cef54fb8ad9ca888c97b4712f438899ed75dd614e74decb3a587454bbd2fc1cfa77228718a0574bfac953597de499822fd7eeaa7b5c63c410b917f016d23dd1ddd1762cde3994a751deccf3e945f17240795db2335476c86e7df758fd47ecdb44667de039c59c6dea53e39ea12c2e8fd76dfa1ef825bd4706cfbea9e60a7ba5da8f1bf2b1ebf328631793f6be297bb5947834a1d7c1414f075cadad5f4dbccdcc8e80494bce88997f8b969b23e0eceb74db11ccef897d998d75f1a87973cd8fd3a54abfa99fa33d8ef31b547b6c76aea9d981f9f86def48ed0f6ccd8dc4807675ba9afc0efa93b933a1d1b9d53881065b725c007d6ee3f6f841c77e013a74c6d7a4c8aeb1f97a982c3bc778bfc893fd1cb1199137ca764b1e8be9d7facdadcf1af9dbead7edeebf6e3303d9c2e900cd8645b7045df86d2cd987985f87aeff565dffea9d5a1ed1f33f9dcdcbb14f68bb5668e28f3b8a604fc1972aef5f8de340beff2ed0cf56f519416c3ebbc746e109fbdda9363d72cef2b3b9a67622c58e0658e6dd5df446f8f15dea833f8f6cec20ff2836ad67e79efaf0af09e797a339806d884ff5eabc3fde7fff2efaa519b6c12a7e48b82afcb392de758a2d18b192a9af40907999bcf4b364b95375ce353ecb99bd1f9eab36470e0b5b38bb342ecf92e52c310614ea03078b83e77c9774cf3ed1b1ffb7e6843e6bd917cd9f0ff4a7d3d8439dfdd73ba2fd77f5dcfe4be30ec51ce59e8ee6dfa67bef42e365abefb436deda7e09be15ca47356dd631780ccb2bcdcfadb5e41f63ffad4ade57dbbbd4f7b4623b16c6ca740dd51e4cfa479fd4b400b94fd716c3876d4d8b7c37d19cf35fde73bf6d2dff7b271adb96a5e6cb6155366098bc49b8d18aedeab5e4f80939cb7f92bdf7589bf669dc9e6d42ffbe8fdbe363ea6467d7ca8a35c6e89ed7fecb86f4cdf224d2d1388f96b74d18cc1fa9dfc2dffcce6e1d8c59ecfb3e29ecdb9adae0a6e5f7cdda6fdd586c4de4bfb29c885b627aadc8e97e808ccd72c5ccfccf3a20b2499ea18de55ca6c1fc0fd4dd15f4a7eaf703278709f16828732d1cb4db713a36f893447d4fb6150918e7cff42dbb0b7af7d8197716552e35d3c5abdf0e138957d37bb64167a5b665d17e41656b72be953e2f54a755f4cf78ef9ddfeabe186fe16a76f2b680e89a141e95873a795af619fee325f55bd4972dc5de0c8775bb0ca71869234fca3eafe76f18ce484271dc05dbed7eb6499d2ce3738f12d32e22ffde719d562b853cd085ac57029dae4ccf5842ccae1227273f3f44fe5ddee72738936c3d9ee3b02a361ef69d2dc583723c14dfed1cc26046c7f434464113e7a1e3012796939a25fb5772968c35e09aae405722b239d4aea377481d3bfd89be5cd39076feac6d8a715ac552268edd8eb77817426c6c837f00cfd1acd249c8b7717b6c4836996c6af5b78d98249c2e162e779be9923fff5fb413d8dd6aff419f2477c297fc3b954ef5e6b7ba474dcc450b6de310ffc0ec7807b0cda9ef9adcbb75ac84fe5d22537a3cedcbf4aed36512d333bc5d7e891cef05e31af24b64cff37488bfc9712a359e27d6548cdb10ff1a433b2bfca6616c3eb64fe9a34dda88c671b1c8df6dadef4a980fd64ae3be51eb49f6a7452b27f24ce5bbc2f8b28fd86c6dd77e27afcee26886f682d10a73f069dc99249f7b557bd06f289f3b3af7578c35f7e7f43d363e86dbab399b3a7fd870d814ff9badc819defd4b7e917d6cdaa77f9faf24cbd3607c4cda8b63f890b19ebc565210d93eff60fba1ab19c06a7cfdaa7c5f95dd9cab0fd6c1734a6b85503fd36ec6c533135eb7fc3f922dec372293cab868b0f65bbddf86e64b74383ef7f1be147dc8949768f730f4e6e44c733e07be9fbb240376af70176bdac23862d94f915e43ff063285da4f07e84292290e51e09544f759fbb3a6eff8773ef18be07a36f844241f0ea3bda6f971b6aceaceaffc3e1fefcbce871aa3fd7a14f4a27a3dd4f7f199f83ee55b5476471f9224bfd37837d493b08d5a57e2edb3adf907c37552e377a3b7d0ec96913e26f82376ba8fc85fbc45c1621cf1b8f1bc5cd7eee7713ecf3959cd8d7cfbf637776694e3187d7358d9aea7cb7eb132e78467c6e156f537c8f3acc631cc7728fbc058dea2e075375b72761a3ab7d06f21067bc3dcabe7abea4ed5f996b2c859ac62a37b8bfcce1bd5a5256c43e1f98162bc1f234b89e1a7eb58c5409c44fdb07f4d1cef8277eae2312dec5d6465c7c87aeaeff878f3f3cbd4c2ff2f35fec0c4e9de709e8d73b8c5edbe9314ddf35b3546b956dd7cbe46db7f35469dcd33345ac77887f633f85b634313f6b17516708d8365c6e6c1eda7a1cc691dccc7f1ae713ec7c4c82ff55c32652f386c71da06d03f8d61cb7793063d2cf4173bcfe9fe646b4079c1c91dcd857d6267d26fcf8f4a1c343b93def9c16c6fc27d46f90b952f0671db03bf87b2afed459ec09925f233bc3b0ffdfc82f55dfa1c9d54f60e6eef001bf230596aec29a3fe3519927bac55cf53b02bf41fa9e3dd92f2f487f63b8eb6fd76b44ccd68496366acfe35059f64378b2dc0e6cb637807f3b021dfca53e35539fa8198d5b55c73a98e47ce68ec72ac8f7d04fbd80fe653837168ed50f57b345e9ff4a9b3a5811d6e51c74a65b1efc19981dfbc333c07dd654563a173599e733793c1e91f6d7ca5631b6b8bb71fd5e37a1ea7588d29d3e5c272fdc3bb82dd89f43954e3b070ce722c3a8ba3aad73434ed73b4023a89b12db0258c2359dee6f6b77e0ff2d9b458c6152f81b8a793d69ea55d3fd63fc5e563636db28b71f3877b5bbc0f3ccd9c9ec6ea6b6dd34cef4bfdce4ec531e3641bea5bfbb1edefab3b919e8540b1bde35efed85638afb730482f48339ba3d2fe686e4441fff1634bcfada4df8bf1cb709efb80ed06fc1bf0066e49d1fd8882f983c8bdd43f2de4d260ce2c2f4bccb9f1d7f567c1de6f539ffeb2ff003e18507d89f7cf94885141ee0229377e15fae71cf14dbe6f429ff059c44289b6cc1e08b828bc9df00a7688f6e2b3b872bc4bf3ee2d2972330c08eda8311d4fed38fa78ee27fe60a03d3335b01fc825a2794b105b49f12cc362b501fba8e9191403248b9d3bc593b903fe87282f633e30d51b0e6130aff0433d3337d6c37c376171044bad0fa98eb395f82ba511582b7e7c147b8bd6f9404c079c435ef0f2bb600be2ed545c7e21c4d92f3b80c537b15266c7d833dc54465b3a5e179add4b4ae8c35f7d7666d157d19a9721c89342dcbfee0e687b4e8af919bcbda439f6bebd6a8f3f28ff411b03c8519d316270a56f4931dbfca0ed6afd2826f54596548e42dac058917f276d8c5222cffc2b747164388388c79863fdc2f63c8f28a6f9da4f2f1453c768a285d0bc5f13d3db3159d86fa70d3e9a4fc7f3230a924dea1019ca36d641446814f525c424c2b18e52899fd53eb4c86fdd9027c359d5f0e7de1fdebe31a1b6512f002cc9dc7552aa8321df401f5bbf4df6418a3fbf4e4bcc5f888bae81394e73c494f25f6ab9d996bfe9ff5c69db59e4f11eea9a11b96ccfe680d865de03b1c2ec0bcda53ac66defc1f09bc533f5fd5a8d09f6b39299b57be7faf963e9773819b99196aab524744eef893c0efab85e6a7e43f1f47db20fbccda8d4e65828fa5a5adee09c69dead6502efdc66b23aecfbc79377a9fc508d51e3b76be651884f9296fd2c1e41dc77475cf3d793eb8c5ba9d56faf83c5c17552c45ee0ec004d672a75bc7362335bc18dd3511acfd6ffc6fefc7bd65cc86fc1355e003e14e19782dcd14a1c72663c4e7f92df077c9f0de4b2f0b846c3bc207c60dc8e00ef926134217623af03819e04788149e101ce92a02fd95f887900eca0570d361d1f0fb16ac060e572221a9f37c88c2343b02363fc06f5fb02ffa431ecc5fdfaee2f8230183fd68e7d8a879fda97ff9762ec5fb9dafdb087e7c4a17821808dabc597c01aa0a3f4b836f35be42f8e21e65814b1d3ed44769a257bacb5abe0e04bcf27352e838af9d2de71fedd796762a931bf81199de276bef34cbb4ccc8cdcfb953d15fd21cdfbc0f7fd347ebdb18dd70bf38549df73b237d85c957957765b8bf3e7ab78027abffa7f3aee806c9f1fbe7cee0f1f761e09c4a8be6c26dbfe0fa50d077d5f6f66a8d8bac01f34ec1634d6ba29b699f5afbcffccce16060bea6f9263caedcaefb76e8c27c7f515f011186ecb10620e8fa17f871a481ccfdac4be6d2445fe22dc63239ac713609d578cefa6352160ed84b3c1eb6717a69fc5dbde7758e737f2b71ed3610d71822f9bf112f740d4d5c0577d88b7bdb3eb1c8eaef57df3a6addd426b219177a43b15e6699f2f018f4946f5701d663e17f70df7e0d2ef105e7d4c470dbe3f9479c771911b6bdf3ead83630ef958a3f1f1dd026cd01d957bc18600f794d9bd246da29f8b58a1e8f3ea1c5327cf6227ff16d158478ca7ee9fc36051ae834c909b690e226067139a27b237ab83f2b69fdf15df05394fab67efa32cbd1a8dafa109326b8577f9b53c4a3c937fe95ba77de8f32593f6f8e32f7cec46847e246873ba67717f9bca1fa4e4ec63fb60ff8cdaaafd532f3bb2584aef05311357289f8c143b0dce01f4dd8aa7409f13cdd8317f989cf3ec67b4cd603c1a7f3dbc9794bddfc0bfcabe41f5d42a8f0870b2584d09daaf18f3fdb59877e41d582712ed0af60973067780d34d692423ba0ae257e39e86557c6eff8158b66e931d8bd922c8397da4b6b1f9c98d4b8d91c63c96a48d726a535c7c5c782f557bcbbeaceb036dbc89ef2831f3ec6c4788fd5ffb439db40c83fe81d663053b9d6ba544a78358ebc84a90568558dada0ec0d95d1a6ced28b3a556b5bf0c5ba78a2f25fb5bd516d1ed6f9d87c8cb06c598f274bfbd7804cbde7fb975fe824e1fe1dfed72ef2afa155d6f2369617cbc8a75037ce1471464757b482b5fca8b473a14f58086fbe74f651f2cc9fdf3f28feb9cb4714d1c0f2bb9d8a092e86a6f1ff877b31d31ff837ef15de95a87cddb96e85a27c50e2ff673a879e5968ecdeefed6f551dd8f3ed4f382587c22a7b81619d741597f5a2f1cea21ae6bbef04bae7556d36146efb9fc0fd853e8b95a9bc71474553c8fc775de10a7cbdef78f888dc0de6f19a45fdaf6f9b7ec2ba27260fe3eaabfa5b443befd422cedf3f89baaa6f3d02e23c33ba1ef48cecd63cf9ee502927b81d65a44bff1e66709b106750d3088edeb7d037d0c63b89ff98d2b39f03518ef17fe3d97eb4a557c7ff795f1f172a83aa7267f2af297712e62072a3e1125df0c65900cf4b0296022ebe32401d7abbae7a27e52a476ecac0e18bba3b5f1fe16eebc7aeea48f060c19465fbbea4cac73416ee8f2fa11f89506623c13fafffeb7e78371ae100700364aa8a5c9cbf90d7929cdf2ae88b938bec62bcc5fd4e16288e74ad70f3da7cb8a9ffc0e1a3080555d44c57e906d4f8a5f91f3fb3ec3f390f7a8ca6576b4ebabcb8543df6c155f083ed506df2fcd8b59f60e6bea0b596f75f1bc64dd4157547dbba0c7203e7833cd72fa6e7537b2fb12dbaebef3d4efa83f1b739e97d476a3dafaa4790bb4f6294dd4581f60cb7a9aabc0d3615270f8c0987f24db5060cd598c33b315713193dbc8bf9f62dfbe2c8a6e19fd6fdbb6a87f18713d6b7c6ebdbd6bf53f69ef12d741e26961e19d62a795c5bbe89a14af3cc602572f9fb7dff09805b29d6b9cc7cefd1cfa1d276e8f775cdc1f994fe37e7cd5c6258e75f12fe034348eef495c628d2df1a47f8cbb55eecc2fe138e40c8b48aaddfe75fba26217ab7152ebdfe498832fe58ffcbd2deea1c8305cae08c4034a3849e27cd77ea7888d5696d4718cb4f6b9123b780883f98fc84fd177e6b1b59e774293ca49886df78f6cf7884cf4317a743f5edbf907db039f9327ab785bcdbd84cf507e63b5ee187615abad44f48b0431ca77dc9eb19c86564c79eaeb7e27e11f6872bd39bc09b05114f9e38de8347cdcdec890d788acbd5dedb3626751f66a1f812d31baca7266843904853e9791c67ed2daeaf51e76c0f7cee34768b13b2dfb1a16aa5cc2dae3e365a92e72898a2ea18b4b0235f939bc85e50dbe9bc8f594736d5c21d6756e92794146067a851832cff92edb75c97a016da32f6c719d8c16d7a6f85a0edb1e6447d40d5e76f84def9b4bfe2fd8a77463aa656ecd786ab9fb93b170fbd93087dd0573f49fe9042cbf55d297eabc574546a6b68ac33a98436c389e2fbb8cda18dbc0d9de373fb7bd3bd60ae59eb74ef740a8cb5bd7bf12ebe1da29d48d9271b419cf2d80a7ebe7aedad82af9d26fa9b6c6b892c325bce54a97dffcf343d515c086c5befd927c4cf974154ba6c4bfe863670233c55c9ee23b9b339c71e65b5062d17899d2ee56efa3ef6475d2c52d2605bb63abbe2e44c696d74317e3086b00b8444dba0b9e6f8af1096bb0c29c36c46a47d9b28ae5d2e14020df40dcc0afe9316893749fc53fd27e53bff3583b7951c9889fe92c8e8063bb7b82db509f57cc0f643974b08682be5e2a3e858ce551be53db0ac5a9dd4de91dc4e84567a397b0b6eb3bfcd18cb55d9f038d4f89f79135d0a1cece4eef0e8ae18b31d7aa7d17e92d62d81d5ff3d91c91a62b8c083d068f829f4b7866a7a277a00d01a79f8ea5d2c9443c636a1fa67772bf8cfc7bf6eed8526de01e570fbc7f0afd39c5cfc57c3bd0273439066bc7fb581bd13501ac666fc9bec5ba1ab24d0bedf30ba8d3bed847de384f9c7b169ac867e99edca716fa2467db1be509375c83c7f044e75a4e6b395d879954f903e9776c9ffe687dc5d5f9a3fb42f769b6ed603bb43603fa69104fa96a17fd0f1aec6ff2dcade9c361f81d0a0d95d33dd993d7ca173c7b6b684bd0b9657b74b596bb2a169dc6d636eabfcff24fdfaafc53e11cea7c6449e1dd62c7fe88fc4585035ecbc10d98c7c08bc0c69cb3fc5e1a1ffb8febac9ee4370b7687876f7a5a9c89465f9c3626936287e3ba5635ce45bd877b9fc75212737c6b5eacb913c99850fe61583fb0ffaa8f8d1f97ee0e85f1ee644c9ee7670bb0c86f9bd4490dc68b017bb498e33d6b014639fbbbf66b515bc7d20f1b30166e9bd45cf1b5938d86386ca8a3386e8f73ac0bb8dad33d6c8815d4d75761ff85669687e699e8d44073ab8a06a11edd81cef39114b313ddd713b79e2797ac8741ffe67c4b5fc6a2a23e3299f6d57b42bdffb578c1e8eb9079ef51a95d57f9383146b5d24597b5dd22a4ba65435cfaaf6859618dab67cfeee68dbe24bb9b57e7bbc218f71a71cad8190c4c05c7bfe95c319ff82f25f7bce14cd57e55573e8bbf9af0d0a86fba0c8dea1eaecf96dd253473acf1963471bf14370cf3872a9de617a1b9c912ef0c15631a73cb93628edf5a2771ec16d72ee2b0c9fed0fab9fa6dd5aeeeaca4a65dc6dbcd7ed11e6789b3a17102f691c869e1f2190d2166833b6436ac9733d8d1ac44633bceb2c468b273ac9ed41669928fbf98bfdee01b425c24e1df7aeca44a6fe4eb343e9dcbb74f9ef3fd5c9a6c45b4ceee3e0c16c7b4f0024ab783777f7e82d8034effadedd1a22d11edcecdb19649db2ee9b998a3fe33bf27fbd7c36ccbe225049bf361edcf0f80ede6d837ac71e76e264e2b4f9de1b1b2c351be1e9b9d3c705e885ce9d1b8d807ad7556467e2b5bfbaca631d4a6849af649eb7e81989dc2fb88fcdc8c82d9260c800611579fc62bd3bac9207ba666760c4d42b3760bc6c4eac39bf75318f41f347681d6c2eb9e70ec2bd94651bf4f7d0ed49f70a2f39a87410f6aa6c7be7d042c6e9a77539d27c69fabb9a5549ee66c075887808fd7cc93fdf89a6cb3c4dd9d21be27d9b6de52c73bc6dbfe392567d919e7ee68dc8ab7509b2c136bf8f60e49dbdb4e7c8ce3082c57a90557c72779950d2d29bc73e8e797b5dfd9b35a10184f25e264503e887939abfc52f1f515d8bae219f3df0898618b31c45c727dfa0f8697c7f28aed3275b066e5acd6cde661d08fd91db0f43bcddf6cc56f983c267f13171e9fa3a5ee0dc5024a8ad5196af1d15ac9b58f83e6172ffb59ecdcaa184e2e2688d0a541eb76de5dc7be4496f05b957babe8b14e2767b95b1c46d9d91d0c51bffd60b961c659c576a8f4ae4b14d0b9b0ba8edb0619d73bdde5e729cb49c2e7a55a1712edaa6fbe7df3dbf3326c19b496603f4bf60bac0bfa31ac6b79ac5a59629fc93d94d23834612d10d38adbebf6f823a075e3a5fd25f719d7f7620fb14d6adf52ae39b7a6fbf92d76f28f68991da756ef2ee2d4d6f55c5ffdfb89e90aeea87f5dfb1dac0b395a5cc5bedc4d6266d7d4bfefc81cd2b27f8bcd1ce4d6b814e980abf72a6252d67215c5f8f5f4355c245b862c5bd5dfa938b014cb15de457ba3ba0f920c00b9e2a0a75771779e764d013708ed6f4cd7457c198bde17cefc9a8c72410e93c74ac724ee37b73742ddd56a1ee3bf9d07e345ffc6798c9fce83a7b137bf6b321ec230d518068c783e649ab36b5bd867f580ea7bea39b6a97cae5bdde32cd79d2d573e5bd5b985ba41cb9e7c1605dc2cfe0ee2e2baab3de06b5dbc12797334cec2f6e2e13ac34d44e5d014ce22ea8f98efb221b2c047148c0dc42be8b4627f9c275bc8193d47c122637288581b03f068cbd09f1b1e6d53bdff3b4652d81fa9ed5d52273fa15c63ff60eb34b534f74779db20ce2ffdffea7e8cfdbc96b16bfc8407c4530f5ef4efd198e95733bbc66db8872e8cc727857d899cee391ee59af8e71a1febcd87b88902620ab71995e7c6595c2caef1727374ad83e6deaff9cea4de8b4a4662fb101636e66f9b2f5c3c682567cb6dd21a324df2d457d6b5b65de0fa1a6759aea9e57b552643dad2e24b9a12bee420365bb714f1fec0fe10c35c5aad78d9ff488357a89f1efa2f7adb865db5b3449b78a7963fdb63f0dd93bd4cda44ae637977d931323718735cd8dbb57f3fa6746fd726c831e5aabdc8b10ebc802589f2613e37223fbf4cac7f2116e25ff3c95feafaa1aa4f9ef233c9274fef53bd4f1e7dcdbc4f9ef980f7de25f63db206d6fb32e3ce678fc57137e48ba0fda0b9de81e06b6f612c198e4fc1d9ff5b5fb58463b924b44478f3b0057e98d0f48eb1c5ce63ff9a96f4efe27e8d4a01b37203382ce4d9eefe63b6bd6d66db9dec3b7fa44ef7b6823351f71115f76bdc760f3c8ee6b4ec3f92606c105d4eae312ce06d5a3de91e653ac966ff4ae8dff1b2a4fdba9955794088c39214de3df573b04ba30d40d15fb2d849af49911b6bc7d88bfecb2a6ea015178b1cb0fd38ec14967f1db7930dab614df5c45d04185f1d568b3b4b4a1a3fcad9b320e7b2e896445fa47630c8a9643c95f9d1d68c27d5d8032cff1cf8ead4aae3d469ee35f665e59adc15a6efe0586abfac36b65bc2f02434c96acf36d67910ec6a527e09c763b3ba56967d3e4e2d5dfe96606b6b7c87b3738bb898b83f41b4ecb7d7447e1e61ad70cafbb680e1e9cc5ba95561fa1ca240ca2fc6399dd77e6790068b37bc1ff5794ab8bead63bc9bb7b036806e9d75ef5632919223c49d81a3eca7c43b6ac8f69c93d1d4f11399e38de93e7f83492bdd8354a77df2ad945f67766fef948f91efe5d818f939c6861a27578dbf9070f3671c6efe4ce7df7968edbf4e97c885341f02b17de0dfb2df52f40d2bb8535abf2fe3a9e0fbcdc106f413fd9cc86f3f4ef41dd907cceee6799e5abc7cb812e4f6e6b578e5d6e255b716866e2d62df33c295202f1b54df38ce85b80f43927f5f2b9917f89ec5744c88e1bf2636606fb13beb28e7eb737c086211d2ba9edf67b2adcc3f1ea83b6f8037d47448c785e350f3b9c4be4b8e5fbd0136f2b26eb7c2406df73bb20e47647d32f67089cf2177beb6eb65c9684e6430761f3da06db90660bbdfc1f33d27e7ff20ee494f91432b9ba73d6ec5db5e897436aee21510af780136cb35910711b3c688db3d7826e4fdf3f9098fe15fed41d29a1b801f64f1773dc8026a3e61e13d906f28fa8d3cdf526e9fc817dc5e9edc815bf141c883dbef40f685790eb02f8c2b45393904cc69949113f3fb262aecf2a7be8ef063b6e46ca0687f7cccb6f56fe36db851deb3c4bb41f59b511e4fcf04d8f782d95d95cdd899cc2faf6d0febbe50bda9b20b06b3bb521ffb73fa91ef18a99e6f3f8f47f3bcf6dbcd4acecef75d192ffa7094f7a4796a780dceab920981e65c559ec579b135b5c5f35e7da7d4714946399e7d889dccc4fb6ee07ebe0e9e8885117d8a854168796e247bef238558a3792b1e2d34f216912f6afd85d51e68d8e74bace28e3662e933190be2bf3839ebd75291c745fbaf822baec4078bf61eddfb343f32296c330ac68f6829cb187847d5e74fc19b277ae6250ae60ff8c6e36c34c02be4fdead37c2fad9cfa6bfdb6e2eec0157f2e6bde25e648b71ae4575e8e42ac3dcd58c8f79a5c68a5c659f59eaee63e9b6f8d07f9644d943812614feb1c1309f3803fe3729d72c1965de5b2a8b53ae4bc5047a0fd8fd86cdd62b303b1a37016f7e33c69f7af7181f750ea90f3647fac31bff537b5473f527ffc88a8ed4297ab5cdbc4685fe4cc05a45d6d4c56c37b19eb47b7d7dcd85f39cc0bf15c70678fb57589203e85cc49d4ff75f5075d618d5ea9ed60a5d4faabed97903fc6d5ed057bd561b2ec14717b6c131d51e611da980daa63467ee79106e3ca17b90e6658cf80c6dd332c3531f7ab9fc5c52bd3678f4989783e8417866dcf90fba17670966b41eef96ced771e553c3ec69e917bf8c2f9ed0f4d71678cafd7fbf869ae55578c71303475eb551e1a9add73e2742f91df319ee28470efa18de94c64a5473a1ab7c2f662c0edef41f41bee4e4f6853f41378927e381a2326b58853dc4aa15eb32760d208e37b1ca4f1dec5d81be7e5126e5f84f3cfec256bbff3118fbc5de463ce7b58ac685bb6b1f6c7a76849ed8328e75e63e7751306fda33b9adf227f2ef663651f71db3b45567f4bfde9d7b4f07698ef31247aa08174d9cad6504f00f2f9c95a1cc518879acffd90ee3229efb45ef78f83f8ef5cc277b244db2c8b73c79a3f8d7971206fad9cee83f6afdae7c5e787a4b27f6a70ae469b6feea87779af70a9fa1d32bfe91eedac601bc65a0668b7f3bbbbc8bfafe2d6388f8b459e14deeec958ce848fc7f6e2ba2a0003ab8cfcc56bdc9ed3fb2423b2fcb7d8847cdc5be8d7f57ed49894fe0b8e6bb3996cf11bd73a91f5bd4cf79bcaa6fafe76d82456a7e35a87cd7bd1bdc6801bd8cfe26da743fd4c642e100bc2e89bcdc373ba731c6fff9a98b867b2ad20a9e7b18a8d16b98b4fe25adf68bf37185beddf50eb2dbe0f0e9b09ac7def4cc7f83259f6aeeee8788d4d439813bcb7acdeebd4efb5b4fb14a2eda64c9cee91de2b029e3ad84ddec65467ceb264ef7eb6f6e41b22ff08e322fdf80f3bd5ae2d9159b6f21d497e13fbc377c7796462dc049f0722d62443ffb99227620d89dcc2db47373f4bbea636d4bedefcd8327c70e617eaec9ef7e76afa1b7fadbf1c6abb91794afa05b57ffb3857d186d714ff806bc3eaf79071abb64f5657d13ed13995becedfede48f05d6a2cc89dc1acb98916ccfa8bd9c8c13dfbbc198d5d800167759f316f25ee557429e750ed55a4ee4b70319677d4658de6f4ae9e6df9757c46a96505bcc257a9ec7546afa2bbfd6df18fa23f394f56d7a4632c0fdb25a62fe821a130176f0b0f0f66bff85e575e471f1aad670a2758768ad0c38b76803177d1beb60ee00ed39ab03a11bb96655ecdbbcbf14f68bbc37b560ef8e426df82d175358f33af29ecc13f250ad6f7c8e7cfb3271ec32a9740c2af3e07ce51af962aed012ec01ca79c77a433cf662efbf3534f3adca371173cb9afbdb6afacbbfd45f09fdc13c258c3a1a1716b71759cce7c008f86aff1974913a5d83b4317918c06f84ba13dbd39f2fd0059b27910315fa889c3cd3dc1bf4f7ffffee007fc5f229bf7a68f8d5e36bfc6a0efc8ae8149114db98ec9f9f8bb9a59e8bb9fda5736104983f5be7d854f839f353ea2ff2a5d33d511b6473ff1a3e30ff1a1f6889fde379c0fb727e4d46fc1d09fb42cf8f7b49ccfb313457077afe4e7897ec189e0491df1f11a713d3dc4472df7c97f880740fc3b347e260fb84dea6964813503bdfefec1aeaca23c637e39fdbde4db2e1e1f859ddb341efc4ce5153fc5f08f17f1d568791f087cdc4595da2f28597634eeeb093bd6d77a0bbd07ddac401d8e0b6d1b277e6de057b78ea64f9fbb2bf8f4bcc79593b2be643a86d31480fd7a808f95a2cd7a888c07e4363c42eb1f972a6b5b67386b35de1182a3511d5f59cbd819ff9bf58bdc4e9d250652c2a9b24b9540f12edd732cd4afb8ab92e028fd5d49766f21be131d395bea6be6bc17afc993c1aec649abc49a8dfba87bda0baf06ab30e5e812e53136bc68cdbaf9bd4b459bc26d818d6fe224fb6fd436c22d63d3fcecfe3472b1911fd1c66b74cf9981c4aeb7f5b233224fa90e30af12b88a33ece93c03b268587b6c0d1aeca9980f51fe5d774d9dfc5e6cb3eb5faedd0ef18104fe8cc0fa1dfd9474b1adfd41e1f236d8cf83d67f269c33d7ea635c768fc4a748acd6e39c1efaee03faa681268e614f92f9bf192c899e47e10cf6a1dbb0334076d4f4a22039f36b11915cc06acda5839ec02eedbe992fb1670e0f876e14ca5a05f0e5cb99e21de7d8eb79fedc759a4d83f1779f41897a1ff7a20ef68745f5c8fbc3f26fa3979c7b5be6f666f9b9ba42feca360d18f8bf4446bdf0cd7c15cf1db47a667bcfa9d7d4cf11d164efe4810e3eee65b886797d83b55af65f146c1228b3fdc037def84392efd7042e88abeb31aee36d3b2574ae33bc5665272b231fe5bad43acd3ff8598265867a66b39ddfd84d206d7d763eda797d437649999fd7ea8eb68e2f97a57ea77abb58f259fdb0bd12b859cfb1a13efac7cf3ac06a4278cbdca1d56eac55bd96db6bc6d9281c6ee40d703726eacec91f858873f190c4feea8574e300f8db3e1ccef756e309f87c37e57fba2581ca0df240397da607af7e95e38c73b90b346bd72ba871ab4b7d9b2437930e7031b814d6af76e01a622d89ea291344627bfac3087f40d6204dae333c36556b0a673cc5b5cb521eea68c29c6f064144ae3afe4cdae3b0ab95866b81b9d75307ea4e41c989ee18ee6ad18ebc5d0fc0c7637cf196fa6790e28dbb35a6afa7b93ab25dc587fa792f1fffc5cf6cd1a4b80e17a76ae690967d424778bebd098e5fd8ec50b3c1daf2ece5baaf55bd778b6bb8aada48a6b1f4510a34ef8109dfb3f4d768df4e32cd775bd8785f76ded7be5ab5a1f8f7f7648887c45e8cbeadf66dbdb26d5d864278321a13163b2ecfd76adcd9dc823e4bdc9b67f9b11da1ab89bc9b67798811df015e294012f7684fc1cff7ec5f73f447b60e28ff3f722cf93bc6f3c1beb6ab4e8c379b1c879c1f336b5fac66776ccaafd9d6d4c46bddb74bf39d1f3846dc0ff5feb78d9d1ee9b3bb2b751703c46c198f6d9e9c0fa2ce9ffb7f07f634263e4651e4c6479cd5cd8effc9a1b53abbf93ec4c66843552c5790c868c17dc14bb3279b664cf38fb78a523453997070bbc0fd602e6b413f47972febdc2fbe062aca92d3ecac3b2f302f458781f0be05f826d9e8c9b8ce35af7b710c702fce095abfdd6fb6f77d0233a25f52ff541778dacba9e1dd103238be840403f66e4630eaccceb24bf01dae3cb7a3ed43ebf13f799bcb793de03badee9edc663a8e5a6c4e9613d0e885b985a60c738a1fd4c3d4bbccd8abe4fef5db03f93df4f2eb57ff2f915b16fff89308fb2807571c65b723f92fbe3fd8d9c870d390f1d38c3e56db3b6764cf738c601e852c7d4a23998d497ccec7c6bd3b320c6d3c92f9131beaa78ffba77b26db815eff7b070f575fd3467d3b5fa2fb3b783a09f71cf3a4f9ebdcc3e0e82eec1fbb9dedfdc6f82cd92af9f374abeb9831edfd6e1c7b67713f0325419641b6e3b2f33aec622da30c6dbe97e77277231c562e1f9385b8fcbfbc0e5b07ec00e40daebccb6baf636a53b78e9d2bfef5c3fdcefbb7b93de21f9d5617d710c43097b7077ffc1c621d5177c1fb8dfd858a41c820e597768efcd95da4baa6fc8dda0edd3d97cabe6c2de79b3f9384a4e5f52d6bfcdad33daaf0af7b2b6746b9860de65bdd607583ba5cea98e26817fb0b57951d6e66dc8e67097d6e6a55a9bc190f0131873f3fa55ef1c645c4adab7fced81fe7ee073e675f64cee1e027feb2bf0a6c5312e522b6e2bbe0edd3b846e9ffadc7474a5a59b8a2e12eebed2ace1685756f4b8adee1471ce0a2f9e9f22df2e3f9d9fe365c90ef9f6daefec5f8beecbc419d7ba3b3b6bbab87576c61b9f6d4abd1da43ae3aaff64db83b54b4bce964eda2a36956ccbed21ab47f59c3f8f684dcd953a4f723f8485cbe5877cbf56ef2ffbdbf06388f12e64cc1f2ebdcb160f36aed912789fe877ab7ec7b6c9fa4deab9ddd9baf0771dfb7d8afd10be78acd6ea6388ebc1da851a2bf46fa15ddc0bd6eeda7f39b0dfab76df8642bbef6f1c364241eee48cfd0e77e80cf6a9ded3d9b28378cfd82ee355d087b437f9fba89fc5c542dc9be1b8b3d2fbb63f7b9fcc85dce32797b3eb329ec2cd81c809943fdd36ef964a8fd2ba93b526ed1e39da6cd339c2fd345d527ec7d127e1519a3e3bd0e752381ffa3ec9fa8e767c9f87aacfb7aacfce4c8a0f8882ec16fa9ddd27e75abf96a24cc2300776f0bcfcbfe3b765fb35c57c78ecfbc13f73c13fa57df6f6e4bbb7e6efd8d991ee5f89b7543ce9ccf89a2c4387852bf158ef2571ec4b3414f9cacacc77d4e7f1f99ed8f363e4780f81e7b258527f016dfe7bfd63fdba1642e5cb041c10ac5d66f5b7717b61405e8d73cfa3fdabe8671941cdc8635c249c4fc7e8fe5cf604392c75ba37c4e5a830c358bbe4ef53e44706cd35c7fd6bd578ac92bc53ad0bb70e80af30e3e35c478b2be62a8dafe968718d692e378e3515ea3fc48e57a0ee35aeeaeb70e3b8ffed38e69abc55e19cd95dcc118158245aa7ab5ec7933b78156247d9da056dfdf8b935fda51bb76b096bcdbf5372ef547b20f4d33264bb0a93f7cf6cdf381e46eea63f3f97fd92aff3c39f5d32174906f8c3d102c7371376265fea33b9b97f895f0af9f8e3ad9a2b6d3f1233dfc792dca3e8adc11c6cb51af98fdda7fc3d74677212bbf3c57b7688f3c13bf81f417ed8d2bb9dccf543b8cfcbbabd5df9d7f200e36bf49e9f567f0fb57a3b5b8728988fe3fd02ea23856de59ede0afccbf11e4bbf63401cbf3f371a652ac4e8fee63add0bc855583b1de9c4027be13575b23cc9057d99aee90b5bd352ef5fc13a9f72fe3cfa6ce9ba2e7bff55af9756f7aef13db7751def30801a2bd7b8589131405c2bf20b71cc4a9fb82fdfab7d5d7ea14f4ff02d313970f393d1d060a8f50d0878ebcce76bda8fe8ed001855600b71ec6ddc8e72d7c1da5f1c7e0bb7d6584f89d2dbfd5f5ceb4e35ef259187fef5b506dcff76b289db8b43148c39fb315b1f7aaeb6ec5cb95f589f963cef12e5e697eacc7d65de48d3b896a9993fa2e58df9ca0f21d6d1bec6fe6a43d63c29ee195f03abd619abb805c1dff0896c7794f91659f7a9d57f995afd8ec6decbf8f5f79fcbfe0be236638e1a93b798bd00d672606cde311ea3e30e6ecca622fbd130fe74f8e9589bdea3b2bcd63edd34bf5b6a755ee8ff3b13396e56683f1b7fcadb3f795fcbc73e1923afeff1fa16caceda35b873fa9ea46f09b1ced0d70a723aec4b64de739ee7be115e2cd7cefad23719d00ccb8df72d8adde3ed4eee283d46a3c5616af50facc6472d3f25923f6b7e4d8a4e9ee4e32c72f256c2b05d6d750cabc2dead03ef3151db3ff2b1526bc73e4539be83353cf21dd145984f57786f97d15a31a4dfea6ff0834b35112fa9e3958949f354f633a6db3fd2d138a37711f821dcd13c8f4c94a7851802a82560839c086bb852daa439b690dbfc88fc14f4a52993af00ff08e54cd6ae242b1a71bb8f18fdf6a6c243f62d72c76759ec44c1da5f1059f38f66ddcfdc1e49f92090076b84c1d8f06b3cba88e843d21a3e6f63e85d22715c7fa4719d35e3faf3799b18eb51cf9dc3c7692fca10b12167646f783ac6fc13a07db02101ee5021c92468336038876145ef5077bc7b434cfb4508b5c5eafe4fdc7cb9bf493b78174cd418a29a8e86300e4e8e829c4049776bb4b97eda8e62dbc43b74496998a73bc8dfc67c9cae913add7303dda12cc668c4aa6824843a56fc79c4fc0d41cfaef3b5619fd81ad674b2ace8d765f8aa13c88d1f5fa260bc0cfdc5310d66e0ab677ad50fddf86afa13c73bd08ec38e8b4554e5547ae0cb3a84febd583ab496aa656c42b35bc6855732ded430bf4ff70431bf31860d788328471fdeaddbe67dc9786c85bb194d2d79ed6ff23a56faf8c2efecb8e730bfa9c56a5da938389f9f1dc1ce23c71ad675c13e6be7d1803d4869aee6a7afcc8e807551711e4c2693f043a8eeeee968d2506852dd47d51e54c7a7e3b8e8d9ff84469ae99db583fbf2eccc7c99ced476979c1d83adc5dbff15baa47a798bdd4727651c20f3f06b20fd7b7963f2f751c969f9fc2e7d5a5ba496a33fbf932bdf99c7c7b2201d26a6b7c75a0d781f604c219b278b639570b0880ea8e595325d36d3a0d0c6f33bf9efee7a385fc01b42a06bbe1f19cf8b3cabef5fc6abffc8bc7aba5479f5a4d4f1ea4ff70274048ca1f580972406f78ef54426c57971b4c8ffbb7a0ef366f2d67f3e0d7e2a9b664931ab69548afb0a03a8a720f1628c89f0082d038d37f0579069e0f920c236c29a0f6ec89e031ff4a8ecadb9af3f6b4fe0abac3d9eafca3cf107175b1c1a5ada3972fc0de8e7d5cccbd0bce79fc9796f40ebf31cbecf994c278e776a3da7738621b96079f198cb7c1479ee0be4c993ff238ef7224f4cc4914b028fdc370ccf137166e8f8951c00ddde4af735f3cba86b358f67b601fabc66eecc67a0b68f7e9def54169f9133f46a42fdcbd26fc226b4cf19d4d090ee1dffd14f21f741fbcc4e83867c05a05bfb531d6949b1e4ab39fd954ef29071a2bbb715ca22ff91b42b8d8de92ad21a205ec013dd8b61afd8f17ede4a8a15a54f69ac5bc06c20ff07fa8c1cefb10ec67964f5efa96f97e45d1eaf6a1d8c3f621e1b0a7521edbe4bfacf333abc0590cfa1dfeb2fd2afbc3e4dfa56dc3c865b733f3c6e8ec0d399cf89f66feb65884a0695f696e7c14c16653c58730f37c8cc787eeab3cbcb172755e76f3e1fda7da475a5447bd26a7e4c8af9e9a95da9697c9cdc289fc3ffe778f287d1bcf7cfbef59e7e1b35e96ebed9389653735fadb4c1c660315f22dc299fd0b67ceffc953dab412712dbfc6bb9b55a23fd5e620df96a3d50a71a208f5b7d455712ef4c8eaea571ffbfc6abbfd77e5c790d587ea75e0ea0b19bc81756a23cf66fa7694f8cf1f05b555de1026a2038d9312e52c1d7b0f63b70777b45fec1f221551f0dd08dbff6e734ceb6e289a7f7c190e82a102b14635cf209e38116d7d8f14aa823bb14e374280e5cfd5c885fdf28715ff1087c10272e8e0cda791f28f15e6c3c2f559c17ca581d35ae8d8d79574e84fed518a778b4bbd3791d9558749a2f01fea511dee5ef881708f103eee8157f7be3dfdbe16f48671dfa9ec67786f910cff786e55444c7d0c4b8c44afec275c3382e880bdb91fd799995b7cdfbdbece91e417cb7909730fc26e27140dbd8d6c03d429e08e49a8ea13e531defb9297f6c853dc258b6c10ce2d827808dc38fa3ce3398bd1d043ac0d8f7dd0363df418e352017b4b02f21575316e2c2abb1da2f13dcbf0ece9b8cf5248c95c59cd667a5db4a47f363e4503e05fea7f4c0c71690bfdf290602f232ba0fdb1bfc9bec4d6af53f421ff23bb7d1b29fb94e76acee182ee78dc591fd1add369037c7e2bb46f7ef84567eb2f89265fffb2fabdfa1fe5dc9474cf159cdce83ac09e6f66df62ca706e6847efe326e7b7b8801dd26c74f7dc34afe6e857b778d9d15e60b5ae92e2efb67c094863832ef9298507f0ceb89965c7d310e7fa1ae1f06be773e97ee1a8fa27c15785934024cd70f0503c9ec9ed2c25ba4bebd4b0adb58fbb34348e4dbed6d037511013382c5fdce305ea7c289a0767588557137936d7f4be8776ef57ebbce90fcfb43ca8d2d9b7313fb7120c73c50ecf724181b2b0ec786e6128afcc659e471d13d43ded816fae7f956199b5d037897b53987c027e6f764bf5842ce26fd569813d4aa2667b77798fa102743c70178f5bbc8ef5c6339aec83ed37e6ef47bacffc4e77fc6e6dd8c56f3565834eec520f5c7c7b0c47c6922e74eadfe6e5a6182d6b88350330cbf81fa2161dbdbaefd19dfe6a95adffd8cd6d0ef1fe32d396fe333192f19eb1af8814b78da11f0713f6627d7d93d889e939a599e145ed55f82b205e6f5175e168b5884e43bc40344b9e41cfae9312eecf27d29e03a56edbdfa2f9bb5dfbac50ec69086147bacc2e01dceb3a4586471f11df0a5d74e778738db06e529794ef66bf6b632e688b94aceef211d2d6e3fb6dfaf91ff7249cdfccf3ae803e6c8b4e89651d96daffdf3716ae03e0426e7236f2d0e91d7bd84702f79bf6233fa45fa09dae36bdca631de145b2619cd8fb183b86233ebe5361bf46e33aa778441745dfbaf981319cc31be60bfdbbc175e1997fdf6dac94fd1b2ff27f2bd1badbb04f8776941f837d4667a4946e33c69d36fcdfb15eb03bdc0f94b7d4f8c59a1f5a484b3e5407c59354e393e27dcf6ae3f97fd8cfefee15adfbbd5b9715e37d387b109c533764ccc79b9f65b644fc1369e105adfde36d1c83b03dd139e013673af8c91aeee332ab32778fe1ed38f1ef006f07fc0592577c9f7cd8fe50b8b03c41c81e5a69c972f37c8c1b5c007b3257f4f06bbcb0c78cc6c335df64a6caf77606d31be90c0fc7aadb955b5bb5b07f38fa4c8cf6bbf93d178f33bd48859f67ebb23c83129e1df1fd5d906fc6756bfa9c29ac2f9412c1de4bd972f3789d7a97d49be34c41f76499f421dc2c8c91f617b7c24f241e8770c0e830174eca4ec7d27b2f7cfb277a6f7fa2d6e278769303bb98321599bab3b985d082d543203d6e0784cadde9dacd7b4ec917de0ee13580b8885a66d02bf9b287bcee1f9b3dc44ab777307df37d315e5cf4eb73db15a86dc973ba8e410182fa193d992ec2fae1f374f867f8cbaf1b27766eb3d29fbe0234b6b9f05d109ceb365ef0fe1d5a82fbd023dcdb66cdf691de8b6774aed1362d2d7ffc69a4e560bdb7953da95ee9d0dce85d0a1d5423f60b9e3625084beb02ec06891278571d73c6f35f4cde4624dfe32aecbdc332886375da79621e57937d0a05a8bb19cbd211e38decdbdff76ad1647339b3339dfc23e2d7b955c087b3d7265bae363e5e8f9e923fe49806b41d68dec0f9eb5e1e3ebfb641cc8fb287b024da832d1872c470c818612babec8ab48db20a3e0f9979f315c097f7e4dcaac247397ce458bf45df11a3226903d704ec2bba321a7ef34d235ecc3a492f1a1df5dea93b512cf47bda663654d716daafe3fe2f6ec40c7ba99948c57d6d81d880dc2ed99bcfe8c3641bf70efb3b2f7bbaef1d37d4c2c36c6d386f059aeefd7e57227f1199eae35980ff6e2cacbaa4c6f53e4a4b60df9d89ed3e5e4d6b985f9e76e658f011d1675961722d7a03ebd41bda7c652437c05c067273c2e3fa7be81b8160ee843886340ee70c09e26724dfd5e25a7703575ebf8663e1f98d0669a47ac8682931ed3c2bbb0da8bb48626da19db5e997232970718d2fdfd3a88aa7a5da1d9cda30274558a935dd973188d210633930903bb15b25a2eb4ddd4cc40a600b970446436ef145bfd5602f2895782ae35ea5f890c12167761de6b5a8b97b43319ceaf911f156b7f7ec43c21c4fe65781091d5dfbe2f7b2cf71ff562a80939c47b7cb481338836809ec1fe9e6ca9ee0f5809fd9719dcd19b07d21afc5de2bb2ef71d7d17ee81cd037f03db7007bfdfdd2b1d05fe3e6c204fa8ec615b6fd06f07be1fbce2df5b78b7e4bea3efd2764bf8ed21e0ba6db9f90d76fcf8a11dfc4698f7439877d93bbb8390ad01fdeec4be2beb79f53ac2b8b7e4bb19fecdcd978ef1cec63d5df6cc6aee5b6a3b61df6d35f329f9f9ccf8f9e07a6ef9f9804cc3ed9751cd0bf9beb877d5dad3bdc3f767f5fbc2d887dcd887f5d885b95573e7f6959fa7cbcf13dfc73e04bc18e0e74be4691c3d9ef97de3e649da617bc5d31bec7735d6253756c09f60b44431a21d6f9bfac921b0c61fb1e91511d8ac0077ed9b6bdfb6e063049d15fa4edced6d13582e958dbf93677fc87b538b3cebfd0119b9ec67501bdd724fac8d08f01a8775ec03a727533cf294da9a3dc223906751bd15ed0ac85ffcfb3e6e8f8fa9935531849fe9b1d887b0d6dfa2607cf59c8cf0ae436cde77824e35e8dde59ac8a1df526a8d0958bb58e3acc2b7c1fa65446e0eff6175ce5cebd47507ae824140efaf2cdccf0ec81be7316b6f52f6eec1126c49ea98218e1ef544dfa435a529fe5cc3b3ef3f9720234b3e48c23fed7355cf4cf96ed75c7394aecd74df6f25e6e640e8b7921be46756fdacae1f56df63ab36b933c63960835986b007e48e023f06f9ff12f1b9527b0efe05ac69d7807f0cb5ac60fd28ae86500358c6f6f948a9ef93d71bf04c1ad57c7c334fa716c836c7fa5cd67ae18c626dc39ab6ce47b27f936d85eb11af3da3be6b84f7c8f995ffbde17cfaf316f535f1f2f2fde9d8a81c867a2cf0d3af8cadf3b5b1edb8b1c13ebe811f137270c535c4fd035e063590084f509e237fe26b24ed227fdc8acacd9e978f608fe9585c2b413f2c3f7ec2a73e0e8c4f29ba2e4737474dfc34d15d00bf06ecda5ef52ec5ac10e34f30e7489e3be25d2faa317bd5337d7da5863320b5db54ef47c609a5f587f473a0d842553f83af6172ebe622db1a116b6db18a0d3e0e5ec1286b7aef991c2de57a748b683fc7da12f699dedff00ddead62bd7ccca520bcbb8db2107d97de93b658cb9ef06a6f7ec79845f237f8157fbb5063c4033d6a52629b98e37c60efdd857afe4ed6496cda8e191589e9a14e4ade17fe7de2fe6d4bcfc5b1454ed7588dc6d768e47d609e095d075b3b468a6fba009ffd645b8f59e0abfee2f7aa0d76a55ddc5ebc26457797fa7303311685feaeb4fdb7a4c61887fb4b7aef7b137ee07a94df56eda13e078e8d838e73d5d6e7194e2ab96707bc16f1b6a83fcaca3ab8a72eda4b183d543e4595b6e998c87b59e41c716e3cf619e03e2cc6f11e72e45f63f3de89ccee05f120160f4557fce4fddac7877a58528afe3b0ded8bfe501a57c9fbbfdd517a4c9dcd262dbc92e8b1a17f439a5cf68d35f381d198d689e8ebc0dac4e48e04fdf19ea716a183f453ccf0aaa66a358f3afe046c53eadd8a1825ecfdd619f66896d7f14b343f19f3f5880c44681ae5f5bb0e2b1764f5276390fcf698e35cf57f3aac09cd0c86ca38c087f9ec5d90e96dce8fafe5c14dfd417e09ce918beb05fb21d07429d6e542bf36a5ab875f56f33e37cf5b5ab7067c67c02c793336ef181b01e3fdb9ecbf4c96446642ff21c62743fe33ef27ff2ff493835f539bd7f93e90eada8f767056aaf38bb69a03c536817fc379c61c71c8d9059d465b7b8cb4f5b27957eb54b5128bc390af6be81ea3ed0674b59f56bfe35ab95cbb14687e529ee4dff935d36222632da8fc52618f6b64641cb37773add506d658f69b34e6243763a6f218eb12a65495ef9a98f92ef2fad77894ef35f5759adeabee61a847ef311abb6d423e9ea88ae9bbb1bcc8539df708f279c96273b03e0f8d9313f1458ca4b02f89195d93a2954736eb4ba9d1bb0d8379ce78681d1344319b8760db7a906f22d336d64194bb34d753c45ec6df549bf598c502c1dde9eaf0f1e8b79c5c9b11790864bf82c6f7e410f77975c5df6e8126278a5f1fb455df14d932047c62909f32c03326fc43832dfc8407b1efbaaed5627f6bf189c5183b85eeea76f8b929766f866936e3e27be6d7a4dc9ce95c8438a084d65d60b6ebb5ff7298fab8ce2c9e929d31a2e3474bc04a3e04d6784bf3f4a9cd619c2526b96b81a71ebf823d9b8ec659bc9f835f1aea4ae9f8f107b9e3c45ac7faefd85d85f6713e4f18e410617cdcbb16d4397b201e1077d6d8dd48ef19f01788d8fafa73237f373036eb2a56fc3bdac12cf12cf926de3970a7a09c08fb07d8779af750ef9b1f63ae4eeea76b629dbaae53c55f7ef13b7a7f819fadffc162f1649f32daf3e9fc1fa25ccae1ddc898d6028e55e4631cfccaf4106f9afebe72baa7773fbdc6dbac814fdd36d3808b95acce11cfc78e5716ab979419c35fca238ce97c8b822ae75cbd5ff876468b32f43b8f08309da16e1aec8bbc1e752e107ebbf4117fbf9a4bcedaac62016ffcb969be47681e7db52672aebfd41fe20c54f26f9d5b209cd5134717dcdfdadc7f39dfbf95daecceeab0f694faf3e21d56d7cb50f3fc01eba74de38039fc7a580bccbbd0e4f68b7c4f8c0fffb9042cfa2560d5d46365cf0feabd29d8281f4ccf7e95733607ba3cce833617e4333ed8b03e8477194d75c212b3db4a8a79ee052199a3199bf94ec46c057b509eb4171ed4bb18616c4aad4f70323ce274c939bf8fb8ed95a1e9e1f722cd8835373ece4fe53369acc01fe744671cb882bcc6fe8e1cef91da9e09bc13f810d44b28e5fac288ef58c79457391225d1c375fc7e912a6d2cf936b89c5faba98d5759a667357d1e9e93e5a9837e67e92ea9d73207fe2ef175ba4fb981d84cfcb3f6fc9a06e38fc8f34cee7ed07fafe844ace60ad658f9a9c9dd9c56b6b945166f332a2fd8e043e6e644632b76528ec9fc361b412cff0d6c00b54d4859bb9a0622797c1fc9a0df01fd0a6d05d5789579aa6ba18e27a8c6f3e7d978188d29fbd8eeddb16600d1516abb109c6d714f77513037084d4bf4f091060bc5e640ef6ef4afe3bad5f9076dcf50ee062a47ccad5a8e08dbbddbfb17fb81f5c9215ee42319d82fbcfd5ae5d9026d3faa3106f27e77cbd4c95e108bac81be1b6830d92f0eef280337eea9ee4cbdfaf7db1a63dab08d677b09791f30c6ce97f64be4831f717bde8f47fd43b894ed67e41d3a77ebc0f945f059dc1e1bebd16e33f930365386e926f1344a9f2fd53e5ad5585f9aee0dfe8cbc5774033c8aade7efcf72651266631ed6f66dd52f80f680a9d5431b1e1fe7e3ccd19eb7bcd1f32fe34ae8dabf75dd11b3772f0612cf69cabde3629a9fd69e6bd0992bf9a3d69d75e7aa94eb7af0b2a18ce72ec88d27269f2a750882b1b1f6e7b94667aebee17268aafa41bc5f2d29bc0bcd31e2f2dae7ad643f267713cac614a3628a3eb292c8e3986f47b169a4f721e75db08777f2f791d016e4974601cd55e7b01ce2c27ba1e36179f4f57bd0df937aa7b5bfaf61fe9ada86fab986b50f609ea736e5891ce6a57eedc03f57f52df044aff15b0e2741ea0f78f038fdd130d61a9b83e9130b919feaeca6835bdd8f25ca7c2053c9b53cebfde031a1ea395636497acff0f64b75df23719ea26d95dd393ff4fd6bd649f7fdf8d9f75fe87ffe996d57a55b4bdc031e1b55fbbeb4673c6db80abd4bebfdf8abf93d1a6cc02c6e41c8a3fb0ca7e5dfca2fc4b3cfb5add290ca13c4f7587b60275df2b204fa48a240b4d9c8ebe03ffabc1c9127fbc531343dc55ef253c9f1edd47ba9ab0354f53fd3e338db8df65a663be074eada0e9138b65ca346676b50f4e344b1a982ed457f4750bb078bc3107e637bc7bd23fcfb495de27fc19754d11495e542c14762ca7e14e5fd48f77ecda3a59ab64fc6d6c82fab75f8b2cf09e8593b3e91bf96f25da2da6b2bbe8b7209f28fcaafa6e34dda7e1fa28f0bf267d8bed3fbf5c7b61f7f893e3c03b0b67c5318d7491c679eb271415fc1fc91faaddc1dce075e49c68f74ef8ed223c5b0acf1582d293680e2030a73b30c755c92dc5ff9de69ecb7b497678e6fb139b05815ae2e1b97db2ce8c18b5995a3bf14e352aa7e41c7a8e7c0f9f12321366029eb479d6b52b4b2d8c9bf45fee227fd2614e20fc0874fdb1e8af5c4abf97335e3a2211b07c834dc38be576dbe09358609dd513ee678bb375576029d5039bb44d7d5f6bbc1d82488efa2f6198dcd5692b1747d44cd7decfebe0fd46d79dafa9f9d434b69ffebe3d7dc39bafe245baf8209b3f0efa775d07f2898ae2a2e811d3bf763329a73f8310d365dc73bc54e7e4b4c2f48a8ae39b5fa39fb7e39621804624c04d6d88433f3516354189bf781942bd6ee47681badf046ce558c2dadcf893967ea38b87cad9bbf843c35755c0fa97ea29a234aeb879233ccfa3bb15aa250b30cdb17ebb94541caf305a8e73a5d620c2ae7a714dfb31aeabcdae754eb2321e3cdfb65dc06fdfd48e50ba1cd69097dcb38c3f184b3734e313ee0b7aebd49097afc415aff23c6487997d5687c4dc0ee40e499de1f7794cbf9aa98776ce49766fa43acb2a5df51e94e8717dce85f507184df2da82750d1185dc78e6b19bc9d96aecf06f215455f9f8aa5f88eb474a8b0401adeabfd369b2a0efd9dc694ff2432128d4b425cdf3ac756965b931272c58f71312f23df7e60ce3b671fa1b9ac181f943edc11ea234c46e1ea5336e244c9314fcf307874b5ef9ae208d8591430fb87f32c76e6ad186b21eda67046c7159e4e0abee82ee28ba03ec5d13cc8bb711d6302f154558c20b6cff9b3b176a141e4d3d80ca90e25f8b60b1a4778472ccd7a1e1427a2f2538ab180185fc7e2ff228cd7fbe33a556cde4e89cb837c0eacd919e52cbe6fc162fb0a162b18d9a77b20f213ccf3aebe89d46f304ee1ec56fc96d0998ec7c9b9985fcebb57f300ff965f8d5e21767262b5b65cac70538e28f8082698679189b820af65ddcea7b9a64fda59cca116be586f0972ef53495f4a87ad0cfc430296c52bd41295f04d8e713ecee222cd570d3906183b44fbae6be6196f7e7e015ba7588f41698fc5dea7c356edb397622fe978b9bc81c53c0c308e4bd06d9cfcb22aec4b647aaf2c963e19798fb595196f648efa1a12ea98e49a397f87cf70897cbb94f17fd0fe228f0fb1aef07c61ac6d5573e9595bcbcfdab2b12dac6152ef93667d04dc4e712db56b43f356f5fd7b4623765c5c7859b293f08672d4afc2602c631e45bc4d48e737c5f31fe9da449b87326e5be46da38de0a7686e6ff7597bf780e630fdd0e33e36d003d81f74fd9d1ae6d5f07baec1206b8ecb23faad66bdd186ad1b276f2be2e28e633fdfbd99d16a3d1ae7aa0cd43a12f91f7281fc15879f22d57add425c6686786e5857232c2166f303eb6ad0ba5d14374b5f736458d574a1765086fff01db10848dbaea66d5ad3838e41dfb62bb7ad796726ac0fdcd9804574efcc96bbeecf6df632dbde015768ad89899e8c368fe968f798bc19ff35196d8ce96867600c34ad65d76ceb94ed6f4ff18275720e622501eed1cb1c6404228f567528699f33a5ae3ccd8f7fc118df8d9017198d3625c65157b90c420ee1fbe015ee90f7c12bca3ce27ddea16d77b0ed9dd4f68eb65de5108a6dbfd1b6df5e5186e2db1e7959406b57c318b08efd1df24a9d45678ef995bbf7c150e833f5c7bf50ae58bccc3e86f8cedb1062e2e8787ed335e1c7d20a4c17fb7a637dc1ba90be5eaabede5c598782ef5c1593808e05e4b456e875215e2ef5ba5bc917da02b96ce46dc95ca7258c43b2c344a764b480739b98d9350619b4779b7ef46e422c33adc916fb39c573216357befd47b6d70726952d3017b488477d83cf0954b0a5edee1964878101f3236712e63930585b449ea0e3b8c1dc5006f0b6f06fbb7b0e834de3bd4373525b21dba70fcc5f00bc047f58edc367f70d8cd5b28fac0e2baba1a1e44b69e483663fcdffe9586b9ecfe303cbfdd0f86ea47fa42dc00463b4adc838d4be8977ddfd14412df239d1bf3ed6fe2227f2728cbce1c2617317aed335a3607c0a837e3d3e01bfdbbb44557e7fb77047f33c34bb9788da6a399b2ff070f18e61f86e8059604c28becffbe055dc7bf1eea57c6d916a62ee078821d67f801f87c519229619e1d1d7b878e574ac0e67bb6679788b9f51be3824859757b875c85769dc58ff65562a3900f55ddca6d80b2dc1de4df171a5b572a263b29f1b950ec9d9951bd70b30f45e191e1e5d2ff7e97a614e8fe8bfe36335641cc8a7367eb005401ee42976bc1362ddbe9c43b34bf4ff63e47897d4d6ca4c5a0c4aae8e3dc667507bbb5ab369b3f99fc811e0e2738f81f302791afcfd1b524c557754fbc426a3be919452fcb39527f1f6fb95b67166b9b13436632cdb3126b44e19d4bde2f30aacdaf6c3fd1db9b47dc1f649b13398afc4b5b24b2c8ccb3872b694276ba9c6d1368efbff3c86f649fd2c2d56782cda31a4773e04fd581b9f8c38d25edb1dd21aa30db19c12b6ded5e362c321a69ee5bbf07a2bb5bdfdd4e66ba86d34d4e0e3f3fc1eb21d236e71f312f4b7fff9dc824fe3fad1eff0242e9faf4343cfde80bfcbf47ba4f1697f962370e0eb2789b1f93d6e6d2b5eced51156eb5708fe6fde6f0472a1e2173f34acefc9b55a1c1eb7806ff02fc4e337c67edcb85873fd7e69ea1029fa0d773e041efad0e7d4307f96e85bdd31ff691523d5e067ffb5861aeb40a3f8b7d59083f871da04e6ae6cf2b78bfeec33b4d5e46bf797fa779bfceca45f727e34310957173177ee134d1c8eec638776387fb9261e49f6afe3d84ad2be3e775227b3a26ff873dfbab80ea7c69c4c192bfe8b356ab477d6d4fa0b9ad1e4a7c97e056e2f329d3cabfa212896887c67e458cf408db7b1d389528b4393afadabf9c5e76b4b79275fae51c9623577b27f73f53f920f59cb3aa26f535d378a85f3e41d05af20f87f21efe5d378ce861cd086984e9a4323e491b03c14eb2ec8e77cce475a748f91c5e11a56181f3b0d9621d49aaaf302645ecec70a2d3fcdd594725e583c8098e3c29dd32aa69ccb6bf9c3e7b5d0dcb817c127ced5a5d1c4a92b31aeb48d8ee457af6a1c34b621c77156b4325fad1dcf083f8bc75f3e8db53f37e778842c6fb0f17b7dfe068729a2d644b8325f0ee4fc8a588ddc9c309f76a2e67560bed008b1c69ee475f0b93a9a7c971de6972cbf9aefa2e487d47926d578be9267a2cb9bb1abbc993a46499337a3c90ffad2b9423dfce19b4f72bfaa1c93fe8b100f8bb6dcf8c959bcd7b930bb4fe2e8d838b8f3f849bf2cfebab11f4edf17bf59b05c9bfb7b1d9705b69b869c9cfbbb1cbf06f9201b5586ff347f89e6ae0c8ccdd4ff7afe1497b7d215724a1ae808e88de5acfc35adccaf89619f1227cb74f9f26cee722e8c6bd5392b3f973d1ef75689870eb17e38ec6d3dd60dcd8b7e56f368dea9f26be45ca0c61a5d721d95afd57d69923bc236e8ff1d4dad22b5e6a0d2777d3e54fbb866acfbcaf7abc63f43fd1345eebb3fc391e3effdc044ac90d9e044ffbe55f6505e5799d3e792aef23f2d47b3f3f76b0d78b93d83c8afecdcc2f8b873a97b9fc60c9e2a5ed2ea1e01ffb1ca797b521bf23f6c9fb46392eb536e1539ec14b75372b6c79abd891519b8a5d711e47a6734aeed9a9a1e87e9b6a871cf782c6dc827a3ef0e753a4933365dec74db847f29be5bf0516bf3d324dd1b7c4077d4bd5f892c2bef85acebfee3dadde3dc52ec435fceab53d7ee0c7d535b51e35c9f7dc7ec3fd325392f54ce51b079b4fbf0fde7b2a2810a3faec6945b2936f3e635ef6bf33584f9bd7db52dfbd3b6e4bb92ca04cf694eb7068d3ea58e1243d034de46ac07f53cca78d707728f457e4777fe046cbe35dc5bde45ee5be543b74a6e9c5afd2cf6bbad782f633410faec69cf38c6e388d87853f55cc494de382cbb9684d7c7f88e26b6abddaf627620ee96c600613cee89ea08f43dcf38caedae00e7fb3bd464e1e5ced06f5d53bf63602d172e8e9eb34d0bdf4bb16f52dbe81bae3167d5fdb5cff5fc29fe60e4779680af5d7273007e5e610262dc0cc4e902bef91531fde8dcd1fec6e51fa5399151c260917be4ae1c76f81c6d671d2c56718bd2b5128ff237df66800f02394b4597d65f41db40e8771e520e136f6bdd47e45e2d6c23f2bccb3a58fc1071f5c0dff500bcdff62243be0efa5b16ef676c6ff9f68a3597c3ee395dca9756554ed444aeb7c3e3cc7036a7a8c8b95cdfc595616bca71b24def4d9ab000c1b7cafb58708ebced52be37b8b53baffd0ee47f2cfd4e41eb9071181df03c7af63c0c32f87ebaaa62563a53ce9f18fbf60be6c9b4c6cc6ffffea53c2f9c870e2350cc3f8238cc23a7bf7674cf651e1dfb39c6030a75e35a4788f11a6d6afbbed3cadeed8d5c8b0ee63db5fa2f9c1e5fad9550df8ef4b32432f98eeb9bae091ffb09fdec4eee685763fd58dfaf58afdb33427343e43f88634e5ab52f9ceef90bad317575e9d8806fc21c45bc18c8d31fb880ab47c771067cd97ca7c7c4223206b3b1e1dffcdefc5abfad249b9a64ebdef67ec377e833d2fe3e21e31a3cdd3fd20fb3d9f07672c0ce0acc5d8bf33b3ddec53d09b57b42ce8d25ed891c8f8b7b2fd3c331e6f19531c617f61eb033b9bec3208b947a83b0e61c3d4871b6482fbdefae65087e0c49f73139ddc7047f8899efa260867bb45564c286350d9fad698de752f60e538c5d87797ec506cffb4ab9dc8da7fc59e185a647f4d32c753c8ff08db742c0a6fa9b3b82e63ab472acafc46a00f5691bd49fc3d5201130e8309fb85fe1db311e2b6035f6fe5bc6cc03acef52ec9bfdfe83eb4bac0b44636186144bd03a75c1ffe0d8708f827dc0b72f420cfea81113919f5f03a6838c77d8ecb3ae68ac191ba15e23b04d8b739f94e2dc142c344a7b6be4157ccd99ca4ff5ca3002319ff285938d45dee2ec6ada66fa9d995f2656aba9adced768f9446bdc7906ad6db28bfc284bfdbb51e74adc36a9df3945c1fc8136f0106bb2d0580472e755987b4efe7047f333c478417df72c8bb7759b5c7c08e72f81dc16c45bf42afbb3226fa536f55b41ee0aae39b32f4d9e60a755b28c501394c50d7cdfccad9b801948fefdc3a2b825b8969047ceea574785dd8a47af55ee8e7e4e8a0f48d63bfed65fc4e4a46a1ff93b80cbc9bacfa4f9ccde7a2777b091b1ee48ff8334582c897e8258951ec38ee173f3e4317ff6cda1e6552c0eb1f722f5bdc53a42e3d774345fc52dbb15fa8b01d4e29031f658add2bc6f242d5abb88d6c2998c7ab7a9d5bf414d3c2e068dd3216e33c43d837c51ac0bd22b891e8f58d93dac2330e81da11ddbe0f77c4ff61ceb04adb4fecd10ea19cdaff17e51c626f3e1bf92ff3fd6558d45d4f5a05e4f09b57ef2a48078a52c3257987355747791902f477d933617b36d7ac66b61131e777ac5da4583d8ec802d81c9f6d23e5921f085fb200dc666b4823aa864cfc85d437d9f359da87bc6c57ad277dee85cb81ab9c778bbb9cf9737a8233207ddb2a2d74aaec6b5cb687ef6ab589b7730bc117a9d592fe59c8be799d4b5753fd2d1f8b41a55f9ddaf61fbf59b3be85d6603cc7bfb55e39757b167a19f12de70591becbcd2fbd8f18a30f04e805b44f35f43bf05f52117541efdb125fae906c73fea97913f3f26667e8d3f0e5cbd94e189c64c1978a7830de29b3b706fccd79a9ab86e3fb6c2deb4e93e1f227fb18f96ba3c20412fee4eea7393c78ef7888a97dd1cf031ab9a237bc237e3e2f44d8aabcb22d35b867ee7cfc4e9dee8189518f0a05dbfb7a8d707e45bdd3af26df1ba916e2dc99a37b47f891cfb9c38f92532a22c6c2faec956f45127a3711e9af98361b434b5c3bf278de7983aa0a383bdf1591b6ba8ef66d37804711c6c1f9f7d5fed754bc12003593585fa629d5fc9687c4c89bcb8ec7cbc6b62e3f1bdc5f67d959671dbbb71df56bf4dac9d843b09b5f0e9fc16877530db85fb7c9414dd566275209e549e13d01ede494a9fd3c2db452687a559e32db4e255dd17f02dbeb68c68ffbea47eeb07f4dd9adfb1b607f7bd75d8c47beffc866dc8b80ead78856380338b63e56ad860ac35f0bfd1b815b65f59fce12d6ecff3c882ba06596812d97b07b1bd4991bff0381b8b222f93f6eb267680371f42c0cf1e62ed58d3db113d391d8d8fef18bb4d6bf1227f4eccfc5bc46a91403c729a8fcdfbc975ec53627edfac4d2f4f30aef1635d72dfb7bd33c65d7b19d17f43b37b4afdd645f6c7b1f1aa71a4f5faaddaf64ef1b9d3f656a49f27df2adff98b1dde579d2cb6fb656c624d669a5b92c501917b5327c43c61c817e5f78ec6e397910ff9ca97146aebd2f5b3399cd1e638979a561eda1851deaef2bbb2ab6c7bdf799afa51f67f8bb6153ed6f2a58a19e1c64e64f8df3fc458fa73182cca7590c5715ed7fb6c885bff88cd7b2bf63b6fa9df8a51cee7dea7f8316f45b74de48ba4e87ea00c8db40dfb9e6b626bedee91d387d9fad89193c2fa04a6a4afd4f1a43b2253fc5cf67378b775feb51631b6a8fe37fe58625d1c786f5a2cb2d4191ec6cc5fbee4709dab7898c53e1de6bbea3c2e3bbb305864132b35c2604c64a53dc32f5f38ddcbb8fdba59fb9d8f78e411d9e6149bdd5b52425d6c380bf5995472201e49311f47348724755263e9abf918ba1a04a26fa18e87e27915d618cb7e46bb7c3719cdcbd0c87762dc2c62f4377f83eba0f9a68d38e8549ec2bd107c9b753e13d0a2a1a1c547550fce217b22ad532ed821e177bfd5bd50bcf0b6fc2de307ee68de8a9fd06dd232369387b149b9185e3cd3f60e79e9e208f77d619f883c149be32c2cf2d33a5874681ccece7588acce784552d9f6046c23fffe88892ee9d87f22c410bbba8efd119ae047a9c68bf5376d83e89a44f64e283f9bd9778557622d175a1757b85f4e3abe46b124d037b486186b9e8f2f4a720f24fb795ef3ff5bbd8eceb803f2fec83bf3b932a22deb50c71cabfce9d75ab565616e29c7bbfd56f777a0ab358eff21ee52d9dbc74e7e59b7677bd7e9b652ab5f2445f78cb2c06ab3de832e9c25ed792bf657589bd4bf1199ea1a16f676eddf8fe9688763a7f711d15b1233dfc684ee084d7a025ffc2cb65ae0e16a3c754f3e03281b9a589b513a07bfd61fa29f95d9aef14e39ff8a3f10c32e1988edfff2f89c2c5dfe508ff164c2977e131d77edd80f584327bd2276c8fd181727c84f8b837e2bc5f5a8718890976f437f7c8c9ddc58fbde4394c7445e3e2b6b7bf3acd4d0c4db4ce1e7bc4c187fa09c86b115dc3a97bd3faeddfd2df218953f506ca5ea5e0bcc9707d6ec60b44cf8c3f9d73a073f9b70de57845e3e9eacb12761a599dd7332f200b7243619c6449fe88479bc8f7294f3fbadc4cc2f51d9bf817f7cdb3f47c1e2109b0b0db619e1a7dea5c23cf90bb92675bc73622936446efd7672cc671905d1316e7b8c0fbfd13cbef63a581c887c2862afd8a7d8eaddc7ed395b1ff24d3f1ecdafe0d72d086d20cd906f315fa7c65b49cdec48ce5d6ae6e4f76db424eb4278a9fd60fe6bc6a31aece6062727181033c4cb65fa780a712ff2f3aff51bc6e035c488093e2da24f55f217d19980c7093af03ff86f57a169acb34cf6a49fe15eb0758575bc71ebf8b9cf4639432bcd19ea1b91dfbaf92de6af916439ccd99ca7fedd5807fdd37b7546604f8c359c73cf5cfbdd565256359fe53c49892f861c5f0c757cd1d4f145e90e29eb7d3d949a7dfd3d53ee114e56b3bb9739d409ec1ea166b0742f9236753c03ce8b4de821a2f54b787ebb406c0a3fdf477e87d2f038266dc9b127327fe0efba38ef9f427f9e937bee8de3a993d1228f839e207712bd3e2df22bb59d8a74cbf3240d8f80b9887960a47db069547bfa5064b8ddda8f0ab6f6323f23cfa2609c43ec11915359ed4ba7758d46de295aeec09e17165d423b6c8d1ea28c2bd1357737ccb57743a2a36b8a11e79db0fe01372788e34921ce44ddab5d5bdeabc8c98b680bf2e32ef2ef06cd13cfe3d122d39c9571b495d6c1c91fae73cf93f68cd9fa41be27e35f434d4fa8c7c772fb4fee888ca5b7a9ed2d9dbd2cdbb2faa25101e787cced631dcc8fb1f9a2ea01fb711efa27490778e1c72cd809585d7fa14f5a9799da43f8b6cad0effc91ec7725dad340ce5263b840ae80f8e7ceb4985f63e7cee28e0ef82c97f2a5847c7d993753db4d076b2b0fbb05ebb7295fff878a295456f6157a47d7f64294b1980f28f2ef79624617ce8e5af96d9212b1a934f653a835fd638b7a3fdadf2a1ba7648f4ca96d3803bd538b8f52617b18a70ac310ceb5b7fbc16ac551db7088b50abeb9837e12ef319689ca0ca7289817f1f6156c28ccce1bf96919f9de00eae71736e82f3c0f8a0607d15feb78fba4f0f257c25b46e38cc87aef2b1e73f4f510b7fbd466c8fb0f2bfbe8e6e7525c43de76aaad393002fbdd256cef0eb23c43f551d01dd74efe981654eeb1145cd44fed7442bcadf5ffb1f7665d8a2a5bdbe80fda17af605abbbc5452101baaece8ee04b24401a5ca167ffd1931a3212208ccacb5f7fb7d639c732ed6a85c8a1044cc9831dbe7316ff198d664d6f3adaac3a47382f9992efd26de91967e8c9679d825183eef837fb7ea3f291f2b9c71724ed690e601f6187e474fcf298f7a1a5a8b3a176cd05efae58de43659ae945fa3489ffc06fc1c646b19c34300f12bf20e1bc8d55401f84bb9e4930ceb793b4e6e11c6828167fe508c1bc695717343d65a2967ab94dd5bae39ad6b2bccb725f92df01a09f7ef11796fea2852cb3122df33ec587aaf5941eea138d7453f875ce73b115e935e191abb92f47f68f171429fc1def12b1810d29ad3f71075097df62a85f956d942f81c11e5b1c5a79674d0a071afc6bbd7b5bfc8cfba86151d87fadea05f918cac8625ce033a7964117b85de43f13bf13c09cb688c6c6ef2ac75635dc5f89734af6cef6af85c9915793635f204e2b99c2c49b2dbe7cfd64ffaf968ef26d5b5183ba9db8c41465db7f3355d9233d961fcbca2cd8664f967e22fb35a9ec55ec6868dcef9122a9fa935866cf6b13e613ad5897c3d4f1ab634f195426c8373734db83b2d88ab71ba08c76c12eb3ba931a0f5278b5d7dbe0c6f4151628c109c774e23ebae3ea3646c19e813a2f7e9c1798d632ff0dc7fcbd792771574029787529ea3f2b926ea098c6d13f8e9242ad85efc2e3f6356d46b3d055f4cb8beffea7a4966997e5c737286d6dad745bdc4cb2179a6244bc35f925ebd71df4b35f2f57862ed528618fb5bfe7d19b5e857614fb4ffbee5f972ecbb99c797c728d9b5f5b8bea453857dd9ecc969d8b6a2efcdecd6468c0fe70090df191531b19933f5bd612f616cdfad3fdf05abe113d9b024c644ee91347f47f61b3af73e56bd62eb3d3aa16fd3677d49f7f37d089fe9d515d38792bc501b978dabaf25f45c5b8bb6a820a72dbe47bbdcabf8069be7c3fcfd4be709e1a15a56803942c6a2be37d864242e8dfcc4d12ed6dd338d7fd17b28c6c4f46cd0cdae61919f13cbade8b3be2447b5fc73fb05d98a708febd65b9ca62ef2871a7b5e5a238ddb539d468f18a937003eed4ffd8bfada49e40fcfb88e70897c643c47d8464d232bb9c545ded95a9dddd67bdbadbbc367e0a5e749778e7cb77be84f604cc8a6f08d09c496080612b15333f81dcd4585de62172179d5fbd5b63bff668f48ef02f036401c96e93b385b68ef8cef74ecf1304dacf4e91bf533033dcd03fd4cceaa340f3cc056dacdf7c3d8a67acabdef89ffa6b0a333b52d275ef37fd4b70a74f30cfd8d1de43bd63e96749f5ff598a0f7973eef2cf9f3d417f8259fbb527d0af593e56be9e732bf28f3cdf0f9cd9e7fa5dcdaa127ff86f60e8bd713df99f3bffb378203d0885be0ef68dc42c44cb1bdd7fe62a0f7af5156d772e07bf50e91debbe2f12e715ebbda95e83c17fbad52f0c5a09ec87b08f17a666b5618bb202a7ae43eac57b499f7a6b136c86df66e4975273519386f4ef74bdc6e3b8a3d1d2dcf6df15d9fb8f699c540600e9650dbe2445bd68bf50f7d23a1e7f37cb6dfa1be3dc57dea595d0b7e1cde922a7d42ff1a7c97abf59b2a77463896f0fb0efa44ceafb0c64406f0fbcc4f8afc781921b9f200fbae4f6b20389f86b34506cdda38d997c13508b4f6e0345df59e81a7e5533ca61263f4221bf9816c0033b2d0b3d234ae48ec49c4d16cd63bf0f940ae06a93e8b38fda58867496710aeb338d2fa8a5d393b3a69e46dc8deca306eb0a883ae5bcb7cf275044c36568a7da0f54bda4b1fe8fd0b1a37eb936afa4c7f7cbdafe1fd5ebfe78beb9f3ee1ad57f85f4f762fe5deaac7f317fb4c955fe6e487db6b66bf54e642c6ce2f7406425d03abc9a8c702fde8b9b4e75694d3283e43cdc40a6c8763847395b0866cff8e9d4ff240736efc73347eee5ed2f82bf5f891cd27e98cfa1e10e77792a91c07ce15d897929d58fbe7b2deb8a039fb54772059a8f5875c8b28dab0429fb5d6bf25fee20bf747f274a7f1dd521d7fa0b8e4edb6178e6313fc6c1a13ce1f57c0fb2cf243b8baef623dbdc5c8cf46e3b45cc0d1dc7a4e1aa1f7b3f294f4a6b1badb1f462f0bb0fe623166162f13ed977f377e87eb7e84cf5edb8c4e8eeb263f7b56cef370113ce41e8dd7d2787d3607fdc0d5f112b9d85a661579fdebd69b7fb3c7cb2af136a4f699c89d141767fb49c96150d72e935c00e52ec1f1758cf940ee0fbafa1bc4abad475b0cbfc7c5f00f91d57f42cf55d7f9721c3fd01fb7187aaf9ce75fc7f2c97e0ec5ba68deeeac5ed4439f027f7289f45e093263f6b9dff5b8ef5ed41bebf57acd8e540fc8585eccf6033b32146aacd9770d5ceda09b71b904a7d7cc2338e7a8eb205fe119ebcd585e1da3e3aeab68cc5fc847b05c04892191bcd64eb6d38ba4e2e2e2c5e3f6e12dfdc09f3cb7502390f2e75e9d631a2be645cc1bd53268b2f86559d7116bf7c4071f8a7b0faccf43a807cb688f461a150bc0cf0f0d56c7f8b6f5347456f0b2a9aeeb94f31d725ea6d11b3c10b030179c1cb79cc530af50334af210b176297d297f20d4e1ee691dee096a1548be91b3654f2a5b967244022ee276df5abb84eb458f3192438a7b81e32c6ebf9c196c8cbf7d018f517a4ead9fd471201c2f7dafe77f0ee7fe1c6a9c16cd784e4b5dd8ab7b85cad8485b9c406be6b30d93dbef8df954af2faed192c7d31ef3abe3acc2f87f2aeedfb03754fbf8af9e2dea0a1c67717f6d9b3921e5fd787f4769b7f0f77fb6ebf7b6d8581db714dfb12d2ed69a0b6ac49abe1e0ffb4739a097b14af0c9712c4bced5b5cb782326d7acf5149e2be42f3e990be69ff16bc2f28375bced854c1179a03c4824d78fe66ee569f7c8722f8053e52de85cde63ddd542ab7fc071301c0f4ef4fccfd647367b9ee23814b7ee9d57b1a8d6ebbe6a1f54529d4436df73b9dc95d4e344e32ebc6df0b4aff8f3afd905f3fd57e345c26fea33517a0ea76f657ba2021fbad06ec87ee6f33cec3dd8d94dfc64e28f03b7343e6fbbe16a780d3d375371f461fb80cbdb5bae1efa939e6df5917d4e6d09b97627db7ae51fb4070321af9effde76d1be1a9d3e041ea5fe0dd9b48d39e6ec5d3ad7bc3dc7d952dff8b9ad6326723de9f29658e699c37c92fa43ea333be6ec1e62179c84bcff7fc78eb8f2b9cbad80474dcf8f5d1aedc5584ad337e5cef67a8eb933dedd44557a6dab5b787d9e0f3b1192091ee70bf9c0c867ac86999c9b566154e33136e75e758eab6b9939bd56c770785bfe7f54f7ffb11f3c8043c7ea7702efd1c0c122be6aab0ff3bfe2afae7a07c95fedcd8a561df7efc66f659f75d5fb820fd6f05b5f3cf38bbe6ba5f65db91e5bbefe4ce173ba2dfee532adfdcbbfcfcd400e643c4c63a49bccfb7eadbfeddcc2acb61eeecb8ef460b781355be6717771d95866676b0c8dd05f7643cfbd125f439847528784d6b78cf7c331c618c90ff688f623e03e55dfb077c131dbb9dea3da7ae7dde238015cff18fbca7be1192fcf3c24e3491e7abda68fccd721717a80d40870feacb83e93f7397f5e7ef95ce2ebcf5ee54ac2aff4de527d4e9ec3ce4f63847b51adbb12cf94f8a8878f15e339c7381f16b6cfc439083eafc71b418deebf7f493927bf33577e8e7c4ad1bfc39f2fb89e6fac9b9c5c8ecdc4badb995a97fc637547cf3e3774b7d97ff7f44bfe813149f4c0bb37fc2e5cd714a69131f817f805aa7a298b7072a1eb5ef6e0f03e79d2186fc8c6db1eebf73b4eb4d5dd5e6bcd2b5ea321c16248b75eef49f6eb1564c69adce222bd45faf249fa6f894d21d9122fce5877ff3abf83e50d64c1f3f43c69f64f86b81e681cd4f6baa2e6599d4b1becec911925459e616ca300d7ade8fd3c3ece4fd315174fe1b02bb86b400f09b18c2ff4492ddc8bbef5706f48b2efdd62cbbdae0bd843fba83b39457a1ff9049cbd42ea8875b7635b3dd87b41d1af083f739e146ef541fc89563f7234bf820cc37c01deb1d24724fa07fa4a659c255f7fdca2eee0142bd7c821755961146b0adf09db366bca494b31cb02cff9a3e82d5db4d5b785ad356d0b69cfb37b2debdea6340ffcc1897fa7a9353adbd60b9e2d6b1905183732f374896b6b45eacec6a616fa2e37f703cc3f55e41da49309fe641a1779fe323723d5cf097be375fd9cbec5314acfd3faa54f62038d7a317318f9dd90d63f458d9e05edf28bed05d93fb796fc6f458cbe96f84ca85d9e54cee74486633d3f469e295e6772d791fe102eae05f57bd2bc2d291771ac939e61ee7e899e9691b5d94d0d73392bdc4b3c5ef6a646b3d689ce1d7aee66d5bb23d956d8d66bfa2cbf1bb4d5e0913314d9352a9dceeb3fd6c7fa1badf1c2bdfc4af20eef63287bed3979867e68fc3b2ddae61d55ed11eed3cbdc735de39ae4c9c8a5f697f1b1c9b3a9d9d79bb5ae623eba8dc742f63df0b37aa43f7e799b8ee392c393fc576b1d1bc5cc00fd1b9a91b5b9e29cb0837c9deed43ddf6539c5636ce1686473ce7af6bb1477c3b5be93712a7a45543a53311f2e172b50f5a4cbe3c071f758793649675494689dddcffd30f3b4be8ef15661dcbe8cbbd5983ff3d2c57140d8a3189716cda14bfd6ef573e9da6dd839c7f5c38ce352858b2ffef7fd86c69e54431c5b006c82b7dd468e7931fd33a2f8e15da5dc7d1643ae75ab467bf1794c286e2c65b41f2e9572610cd05e27bf772789e55ed0bbaad6ae551eb06eeb2af524a76b134dad6755ba52290beb0e5a5ba41f76d34a94bf96ba40640bd2e71ebd6e826541837bbc1a275d975fc9be59a7d988c94bb6e8cb7881d897f79bebbfdcfd3486432cebc239f799fefb057b6a6482ace39efe96f38e9371984732a71c466deb9e42e701704e99fd565965f75c717bf67df475bd4278013dad0fb224dda77dbf6becb947f2db3f68ddd17ca8e7809efd49229f658dfd27ef5d3efff2ba0715db67abda3efb8b1a14afae9169c73808dd8b47ea4b589de9273832ddad95a333f0b4e1385b7eee15b9092a5b4fe0824667fe2d56c99424cff33db3d9d0dfdff13cc7952cd39ff415eb701ffa5bf7f26b7b106d4dfc6c37f2bb4185753dfb9bac3dfc7dc37fc798c3d1d8011f71886c85e72469e4321a7d47208f3007f6bab373f3cb93ee2dd5d81755ef19fa8b137adecc18be838d817f5f7ef6dcc6dfe34e1be701e3ef882b34bf016f2b3d1b72427c97e998af55d5143da90bb927558cebc8b930a8f375f3a880dc0aad6957f6d1115bfcf0b1ea1d22fd71ae71ef710e4b9df361f1503a8f65285cc36aa2e1ffc5f13862ac4fec3f90e255526d86fa3d58bd7b7b0f427b7d7b43aef8be9dd6fedd4c996fab3146e7571cd3c8338c95afa51fef2fe3165cdcb6ce7fce0a3126d788ada275307aafe6acd95b8b7ef32ec4a25fc408f396de60e01bbe6e3d279f19843b0163669d424f4b132b2d03dd042cb4ad67e2def7a28eb5ce8ac901d753e2fb4dacd155921121164af49a2a2ebbff580db791bed97956b65b8ccb5be8a725d67bc3f1a6d37f072cc6751847fbefbf6dcb7d46567e4d0c2ddbfa4e1a148fdcb67ab799ef5e1398534d0ffcc9d3364eb796fee74e4bff33e553a5f868dfec779bc43ba1d7ab080bf7908ce7bbc4ca2fe10a62210752739212d987ba92407f68717799c7fbe1312ecc6be23d902fdef9580d3b51357c46ba96db96fb9658ee35793fedd648778eb03c6dbd5e11596627dc102cc5c36937dfd7b9d3c00b0bb4bfe36a7888c6ee13703caca40abc9e16596605716723c5bdfbdd491e00b607ae71490af39c789b3389a95da2ee046a6512df017e8be91a8d252d67d609b0e196abf4f714f7475cd0dc71b89a0fae5f82c695d3c880be9dc2b61eb7a83b7c9235cc03cf39913cf4d5365de443a580e5e22319bdd37181dfbdf5b47b5cf4f570c5bf9f182f8f2bacb7a12787c77b7c9e76f3c3805b332dfdb0f24be201c7f225285c82f722e09c600c642bcded91f6be369ab98160357c6e3126f32e3eba048fdaec24e349191cdd4ee8cfbfd9e6197440325e565b6fa22596fb9ce9219a7f2d2edca73d769fa1b780770cbb935be20f68beef6c5b793edba36768255bc371984663378fb9bd4debaff0f35fd72d37fbf0b58461908afb288f0a13b0a2a6fb3ee80a125fcb9391d0a32170ad84fef227cb27283049b97816974b106af31887c7ac3aed42df396fbd5e67e6b9d7c09b201beaf78cf209d438c76b618e9ab8ec9d8d9e5fb66cbfe1799919e2ba4818ec384f69883dee2f300ec535e6ec4819ef10e70fef90af0cfc65272ef27de2935aae9558bf5e7326b373198febbd81899b86d6728e71f8648c65330b4778ef4d479db36dbd9d418e6acce9173d106fcd78f848c3dc7ed61be0c5e398759d27c0bcfb975a662ceedc6af0acf0dfa5cecc185ea57578265e4739ff81de3fd3b1e2bfefbbe880ff963838d03d1a7dc3fcbde2a2df65f61dfc8def85fe6ee6da1d2dc2987c8e87f66cc5e602d959899a335cb0d7aba81b33df837f9e0ff76b603a399e867f33dd0faf980bbd7f2658f191af1803d2d371d7bd34eaa9ddfacc7747fdd1fa79da05c5e316e81774e6327ca4089d81567e8facfc80f175dffe8762aa90ba50d0fdf25e8b3c4d8bc68bd36275df2df6f75db417f95f164dccff2be0c3edbfc4977b55f0abbcc00e7d53d6372e08ef64b4473e4b9948b9b8366cac3fecde15bdf7b971efd758816fad7105614c26e00322f91a628e4ebce65b0df8420c4f3fb3cf7cbd4c64bf535e6f497fbc33ac76b696848fde90f726fd1cefcb59c3169ac09931dd539cb7c16f382ba435f73b981f617644badcc9a7ef033577cb784039e5ee683f847e7a0fbc5ec6ec8b6a7897d6de819c0a91b9f5ea8e9e85f45bd9ca3b35aa39a2681d02b3ad1aba29bf86c5234dac0ddc3bdadf9b7618d46f9c7edb637b37dd23dbf24de40b33fb4e13d3ee0dd68fe6d3986d65bed5f77787b74477ab1ac7e8a58e86fb29f6c6afb57b297d9933700458b6e7fafd5c86fd2bcf1b8f8b3835fb583fcb1c5266df69ca549ac61de7161dc33c2e92bc295bf2f72063bf609e0ff6997298d3b5aff52160119f42cff983ecd5c05f503c2eacbb3c276778cfd89e855a27a807c1bec5d336f07c37e44faebb3ad86d1cdcfa9c9f53e0675f9cc85cff16e6fa7d74c7fc5dee351c511cf40cec68be7706381ce47726f2918c2768de20ce8cecc44957bc6e02fd314e89d6c91e63fcb5b8512b11541cb70f1e8f91fefaef8f99af6983380e9a2ba8234f0e527eb3d64918f7e90b3c3d682ec2261f401a779d326c72ffd1cfd9fead6d6ba727d919ccafe0f9ea3f9711857d477a2bb0ff64d7b177651d82988783fb356374c8875845ddf892e839f849c8d6243af849ea89725a3bcbf07591fcfb19b131cd43620cf7a1f7b845450cfe4bac9b17de9fe2ec0d88bb48b2e20867518ecea2c163fe3eb8431ce47d749fbf0fd431cd7a2e687c5fea0b50d407bb0d9e64768f9ab770a4a8efe6d791c4ce15b19eda17cf4a958d249d99f53d9f0dd92be3ce528bad4719e8ca33e4b91cbbd48ecaa7d6fc313386879a4ff6955e9f3f5ef911a4efe030cfd11e1e7eff85ee0bfb19c74af1fc0cc9f7aaf829d76f8bfbb65a3972eb1813f48f35ced0b8702f5137ccf9776df821e3491e797d3ddc70f3e5cfebb5e0fcc4173620bfbeed353b2ff618f7bcd7f96eacbf4a5c4f76821edeadef8c127f88ec18b00bea7b39e44cade3269e5e264dbc2861fc4f3c0f9bd3767fdfcd5fec0535476afdace6f9aba57171b92519bb06301c24fd7809fcc99fa81bbed331e11e87a6dffeb53e2f927ba9b92748dd1cce7b4f456e3f056603cf55354ce3c2bc84fe92d53705dee31875276562a5971fb43717dfeb1613fe9758773b6b164be031d688ade599778a874d7abe3a51352c93f15ccae1beb19e30f0535ce17965f83eb9475da7641ce77caee93faae596ee4d3122b57a0fe3bc4b26603e2e19f7dc66177797b7404fd3b8bb2c83aaf6e9d62bd61782f47007e283fef0648fe2dd143041dc7388718a9f1f9e86e6beda7a7338dfeb5e82bcee8b6ed49cd7ef25706a1ee00cc47e1ec3fdc6b2b25e35fdc1f95ee0ecfcb556f36f3671be0eb6a23e097ce752c891d776057fbf9cea5ec0ae62f805b5fe0d95e77c839321f7e53a503dab3027f3a2aa65ac17118c8367d4752ba403a6747da5df6f71df7f363f0e6fb19e63ae611d9e7b4d2cb3827c8491d15ca4d4a3e09411cc71922726b211f373e04fa0df053fff0ed86171d51363616b71fe30471dc417a86ffadc7aa47e6e1443dd7ae23d32db9ae4f6d8e9459e96431cb4c2b16f418638bcebb57bf9cdf9bde53cc75c05b19e5f045ed1d1240ff51c38de40afedf938b0790ef57eb5f597a7c865f1e77562b977fb7df48df01c883168dc7bc2e901e4db6dae04bb4d886be36b195f4cb6f5cc23e61ca871d8026f99adadfe2d1ecf6b5b13cfab702fa6e3d099610caa1f7be2c3f27e16f26b8d3a1e227c3712fc5b2c1fbeb34eacfc1c8db45b5210fc0d764ed73a4be64a9ad7fcce2c3fadb8573169fcb67eb7c04f27fc77827da21a9715a6d1d8c96bfc75b446f36f5ccce517d6098dd803e8f859413eaffd12caf9d009fdc1ce792f6b3b7b047187322ac233d85ec47fadefa5f07f85716dbed916f3356ff6d8c9c315b28d87ff42677ee02d7b503b0abdc5690a3179cf053b27f0d0ef96922fb44bb796f95ce8fd6b52b868df66b09e645cf3fd7de7c8f58156fedc209bd57a385137a46778273e729878429c51c861fc993e857ca0917839d2f19c0d42cf049ecf87e3eae56c0cc0ebf29de7d64bae2c8e4c6c0264d37ed03a5493d879ab61c6d94abcddb50bc72ec16d65baa2877330e44cc23e8dd3e01992c6a3b63b53eefd3299f7ee952dafb48726efa33a47afb6abbeb57c4e308eb543f47eda459e596df5bebea0f340fa41a9dd46f1c8238c99c5f5ce115dda9d133e0fd1a6e3eda258886b2df3e8b804bc30c9ee2b43cbbd26b8ffe34dc10df8d6b427cd7ddc2198dd928f1d1c9dd116f3359eedf1a8959733f026cfe918b041ee53850f1f5acb21bd971c5746fa75e14d9e4bc0334f496ee6be8bd17fab267726cbb154cdf129de2d0b4dc2e5ee2d5b9f4fb9cdc311ccc3893ce36cb7bd37e92143fe321f378957830bfc8670dc0a63193b8f18387fc5bc1af0ff8f77ad731b77cd2a31d237c5bc221ddd3aaf9167be71f3ca304bd79ef9363386f799317c28e483e716977fd3986fc5988ea1bfacfbe714dcfb09d71f38b568fdee1de7f2e8bf7066f7cac4b8ef92227f6efd85e8af8c87b718e3b4a571916891e75e93716da3daef6f3b6705e71bf7bd13396e6767af3b7d7bec5e43cb2db65e2f0f8dc1ffd8c8d6ea92188b76d6fcd5e01bb2cbd0ffd35a06864556b81d6cf3f54a5a934162dc684e94b98ed0ca2fcc0685bfef3bce4fc8b65e478a4502df019acbc5d45a9611e73fc6cce61b9dd0bd387b8ed61ce95bdf29132345ffcf64b8356e8ee7f284fe5fb19e195b4b1e63df72b5407f205d934607a92fc8770f11cc9d796d5f5fde9f075fbcae9d3b7476730997a2f68bbf2e3f73c0216aeced33d987e56b3c64dc6b0f58977a8ef9af21ff0f78834fb0adbd7e1522dfa008cb40cf01f337b1beef023fbc6dbdc50ef6adf9df79877a1f672d389643c669b1e4e65faad3525ef3a535aaf583b4bfd9ba9db14c0ec8bfa3b3fd8efe6eeadfa9840f1079e6758be6d66a8cf71278bd53e02f3b81f77662fea781f705f977a9ac81f86fcc31e331d0d20fa9f70d73f2ff2fcd9ba1d5bd2f2067bc1ee7b8fa59bf717eb52d278da18f25cda1ee04b8219d03b113d2c87af46c6b790b7d07f8fd121fd91e4e1a79ee19ff16f7d2717de04faf4a98bccc3c6ebfef9384f48f2bafe5656ba2812ee17488134dba4c1ef2c473ce688c81f77624fd056ccd62ed7c8cd9de159f8ff6ae842352db5d1dbeff3c25fc548bb3fd4206705fdd80dabccb0667bf3f3cd73120d05745b467f72ec5d8ad7687da1264db59e92d64757b72df01be6f632e75f23bb3b3fb35be0bdfcd0a5eef4a7524b21e5d435d25c436c3e2ed14796e676bf5b3a95a3e612cb87ed45d507c9fcdaa8e45c93a92c351bec4d6bd757fb27b19749e85b3a8df52b3a7b5d4ecfdf9b11f5444e75db8bf9fa1d783f84b82f68dbb44e7d9736bf5cfe13be37e7ed43de6b4bfffb49be8bc6cc5f59e1fc9fcd0a33bf9bd104ff9b11f463ed165e8ff9391760b2de03c007f98fc063079497ff66deb2d9fb4ef9dd568a9ebb0b2b96c4389df2bb04d04de00d687efc8bc1470cebfdda6fb611eeb8f323a2e90fd83eb2b692d25b3a3a93e6dd8af4caf4dc7cb5e6c6dc81e42ffe29ad448cf33b91e6b660c2f024e39c5d3e860f9c3b97fe04f80fce244bf38a1b784799b3cf9b835e84e8c75c37efb7d27f65ff27e378f73c3d622625cabe3ce4e3c8306a7ad7abf08efe3e97932e5de979d716b31268af58dc22636477ff11c1e4b7b58c7a6394c920dae8366e3e1ed57b20725be1301ff47a94bebf515ea20af7fbbef459f08700f6ed1a61eab22b7a4b886e419abfb6e5bddc55abb4aac51898a258993aac72dcc8d975f153c85c83e2fc5eb4c15c773e33a4ec69ecdebcf2dd7622e1aa41b48cccada026f845642ec113dbbae15c558779e79d80a7b6c037e06e844af7ffd4afd15ba5e91b3b86cbd1ee14766187397adf7766ad637665752d7cbce08345624b3421e016c277e2d3086f2ec88df498a0d6b5b883d9f85b99c19a4c6783cc963e02873af8015017ca0e6d5b6de2ee06759b41e77c3f81f5bea6e0eacde106ac0ceffb62d89db93db4fb4c7bca59eac99bf4032b856f33ff37ac8277345f3f381d7cb22bd739a42af0de0c3e16b8c0ec82ace7f64bb6985d7c9aff994e86fb19f6ae56984e4cc7b68a10a2b877bb758bb1c08e69bac3f5479cafa77cd98db21b2cc67ace7c54743e739671c6f0c7b53c57981f635d79f2deb9cb38d759194c3d4308ef228bf86457e95fd76cc05bd136b455fe4f304797b55f30bbf6567637d1e72b62cd585336378c03d12fd321cd3bcb2fadd1a5c5ff419b027253e3dfaeef81a81a318fa6d0d2eaff832ef0c9c188a1821de872cbeb997d753fe3eaddfd3e06b73401e8e51a1217f595a3f455d8d909fded47a51b97e6f74fdae2df9d8aba4db1a9c4051dec4c9a77171882199124f08f073706b6ac8bca9fd03b2b722fd91cf8ac72dacd2d8cef0bbf8868df62d8fd187fe3fb6f7186330ee3ab740cf53d06be3a444367de4b919e81f63fecd36ef7bdb38ef22b1b680c5c0691fa6cc8df279cd81ddaca3b44c3d74c999f349ed5f52b81ee819df798ff49e1efa9363e82d4ec96174b6c741357b65ab1b4d1b96e8c23438ce4fc9c1decd56437dbeca763f714dc015f2a67e5826e37cc3f155aadf6183730ec897e2733572ecf4d5b5d371f09819437dbebfbf7afe57ea5df4f9ea9fd5b9240713e98ed7352e122faa388fe8f780ed80e733bf94beabc07225fdc3f81e6f5f7adf66bc8be405ffae9699e5c1a4187a1e7a3d23f4c21b3ad31b3d2a9e7b5d146e117527797dae687968217d3b87fcea17d645556f8bfb1509a71bf249e85e24b68fa28e4a5de758d763c97556e635b4fa9735bd6fab1dccdee754ebd5b37c16d26b4067867ebc5bf8932af0b3d3b622b9bc11f46a3d23cf3c47c6300bfc25e09a26e339ed1713b8d23f70ffdb05fb61c0f97f0d8b47197417c0e154f79ed5bd6bb1fe7d97e81b64f7029f6c540d0f5bcb3d6c2bdc17177a1b8ca9a06f8e49b1d905dea30a3d33fb58e1b5b481afdb39455d2727f544b476674f6480d9b6f88c2439cb1a17e4bbfdbe11ea0821474fe63a1a678cd708d9986c4d2b013b4eecc392719845d9f9f30ac3513e6fc89e2c22ab7f8bf729c1d227ebbcdae1be01e91c9bbab436232fec71924fba610e5c31859b86e36c17e829e0b74af385e67b8ffbf0886c18c8c6ea433c10fd06e6d8ca3bb6651e03e4071929897f6b84afceec004f97bf7c4e573cd6008ce58af3e6fcbd4698a318e94dafd761f24b716973751f7dacbb79944d7234c794cf6c6650b903dbbf54d4defdd7e6b615df8aed2947f0879abc060d7c11a8f10dbd479a58b91e7a8f9e6d3d52747eda801102dc5a1d742e461570267712904bb320eb06b82794bb097308961ab20599ec4a731babce10e0dba8fd12c012407e8e9287a39e6f8287c0e392931c61788ef47e3565b5f2784f811db36fe091f3b54fad35e06cff357d8902d9ef0bbdff4c1a3647886cdcf7a8eb74a6e3e12dc1f9ef341af5f2a453cb7a5d17fc3a5e10d067b4f406460c77fd4da859e57d84489a4f72cf3f827f60247c7ee338e3eee5e9bd64660cef5117e7f903eff123f41312035b347d0623f9539f1b717baecf726ed83f906ca38e96071eae1d12ec20f2797bdda80277518e35bde23d96f5e2d13d47ef7f512bba1f1c706d495d3b32e3e3bbab21ad753cdb96db09aa9e108fc3b54e837e33e6daac2f5d14ee71ebbdedb69576093df31a577cdfb026dc97af8791cf5f525ff5672af837825f24e0cc9179e6fc6ca1ceecf1633f9c44680ca48e4c88538cebbac258cc5fe03a29c0365d3a326724c691447ea88bce7cfedaf7da7f9de31c83915c134fdb87be7d94ebf5856b573426a1f1f7e06c98fe3d19cfafdbead3ba45860504e334fb9d0f7f98477a40e7b6116b9f129b6da2f7f7dbc23d24462cf9cf72fc118f05c7f3a51887348696580ea961c23a51184b5d57456ad5ceecdd25bdd4f0d91acf94c7fd49ac94ca5efd6c418f34f40696bdcfead468ad22d7975f89fa93e1e529ee856bef85df7ea7f3d1e8f7176267756de0fc70da2d889fce6ad96beef06be89915702272f3a5b2e524ddaee0d4786bc4ef9a9ce63d1a831b81de2ab4322a36300781bee3b1224027d2d84650b8e748ef1d63641b3f4fd46e034c939f7c4dace108b85e9fc427d0f370afd4313bd17a5829964a64418857a9e4839e3369749c1f85fdc8afc5f3b45b422d1ba9c1a5580b10c3657af16c8fdd7b08bd99b8469f1b93c0cff5b2d6b4a5e73ba07c8116e6ef22fbac19d325fec012704fc10f226b4efaacac491e59fd6b88fd15b25eecac91edfb7a8dd0bc1fdd32b296acde706acdf99a4ad2bfd6839a2335a6aca22faa950f96f8035c0c0d7c324fbb27e3ec6c5b13e457fd018e2f639807fee4fcb11a14b685e614f71e4685fb9618aa9e31d033376487444789071ed79eba142b4fd07fd6a48779fc1c2d021c8fded1b64c3dc498b2e05350fb20416794955f29d73fb3a972890f9bd80bb49e4a754ebce0c2e3e274627c1b62dee49cf7a01e4bfb355f410cfae23fedb36d2dcbc8fdfe9c1983eb6cffb6031bc3d37e45fb61a21c9f9fbc8bcf12fb20c4baad018f87d0b4170a5affc5fb227c6c68416343199f6b080d25379d16b9178abf7a9d37701b5f726636e451e9eb4afe18dbf3f9a56ce214a277d6a2d0c4bd01aaf5f4f465a2e60f6e62de4585dbe5ceda8860c9b267cc2ab5bd8eeb732937ee77e457e56027f1fd07abe129f0e710f7a0b140e48bce8acdd51e27a7d07b93e4bf77839e842241bafeb0b5cc6ba8bb4a5e05db6b8f9b2ade49c895a0f961fafa883e87fe227deb2f7bae95a273ef14e98face9337fb1065dea5953f007297247c8f792f347d446aafbea028c31a8c03163b2a6c6586bab85ffbbfece3fadb136abae37f83febfbf0f7071b08e497c7de99bc8f044c1da187c63a5fb818d67fd13f61f1447eecc21926e069d7dc67e097cb3976f0e315b1c9fad9784fa26b19475b17ecb75b548465d8a57d296fa46e1edb1ab5ae51f50a414eb0c418769bddb6aa631c620c91b7fd3589938a60118ff37be821bfb3c54fa8a8bfd1d3226f92c7fbb8b4dfcfb4860aeee177a97f95b6f9572539ef8f913ef98df6c644b63d05f9fd673e8b708f973166ea9f7dc52f11e2cfd4efe3f654c307faff80ef41e6c454e577fe3677d9e4f98ab5cb95da304b0bd9eb93cbd6ebe5e86cda021e5b6d1b0a5c4dd4c6edced1d9f78dde17ea50d65c3dd07e7010f53e1fb358629e3091334e91e3e77331789ec53cbfca0fbe8bf55f959a57e06f7ad248ee83e0d4d118e1f002dcb8c013c9f92fb457b8eb1cb69e09fc6560afe2186919e98b5d54736500e748e83df2a0bb207e0f9e4ff21bcc3d69f5bbc41f6de8331c2b1ca6687d906ea4fb938f970b3e2bcb3f74a03680c5c9f978e44a893b310efdc52ef01e674e6e09ee0af645a91c431e818c43c6e30d849a80461dc0857145429d16e7ab1aca5c63d33e33b02e55e08403b66428f48b22ff0ce3f1cf8ce13e2edc745b0d6f89bfd8a17d188db3dd643f84be32dcfbd9cb3fc60bf9dca873e97a0ff92d5af88283a03ecf9c28c279012e569dd671745d4bf8186f6b0ca622188b457edc7a80b108679fb4766b2a63428ea596e532dc53bfba7f0d8bfc98507b698fed582c9b8f5ba2bbcf843da3c5c730fbd71a57bb3deeedebcdf808e1c8043b00e2cb686f8e200e7de27c835f51ce632cd82f62620ace1bcbd1e2ccb9d5f5313d785eac5d2ebed2eed5ca08aec7eb027e4ad7ad60cd9a7ca1c21a4a3ecdaf48817bfe69dfaec1c9528b5cf1763291abff5b7632c5b27f97e2b97cee5d75cd498a33313de0aeee354f1fd907722d70e26970f6465df0bff3a800fef714f0c2fe3bf53f2feaff785b8e8fff35e347f43d3cbd9778bac3d7ef414fa0eb5eaebe8bfca2bab77ada9e0b13ea08591ccbec1f5ed5a4f9ba5cabc8cf0ba97f853302fefeaede5bfc7ba2eb1a39417e4d1ab8e8a1e55e235d2b23e97beef7c2bb61ec088ca1077fabe2ad66ffaac435b7905d0d67267acf3f3f5794636c19f9fa1be09b0718534fa1639d08e23a2b8655f42b3a3431c4e5f7993e6b3e0e4feb5fe7b916f9bad3c0e853e73f1cb8d6d39725d9cbc25c621efcde0d9d25f04e07857ca8f7a41342ee65f2dc5a79834f29f1a1ae235f7b180b37d6d332365277660c7fb9cd38b09427c8786ebd35c65d1b56a11f965117d90a48ef0c3faba5715fd54efa9a4b73e9aea7e709c3113432b97e06d7c8745db0273ed30dec7a8b607fee073796f32a3abbd96af098aab147fe991ef84f6d798c3b2af82dcdfb9ee97dffbcac4f6d608c0e289e35d475a03312db7c9497958fdf883515e27ee76b5b55b67b9dff90eb5c03adf3c2b677483e55e64891f6c49ef4bde23e141a2be072bd77be8ef32cc5a5fef82d78283363700c749ce7e67d0b6e5d000f16d78f0c6f4995bedebbfb3bc8ddf485cd589f0903ca8f4ab0701b359a429e9edacf04b7408987c7fc7593f9539f63e289f169c1276f9eb3732a878717985b07e9acad9f4763840487afe9f3d7b8fb2406c06a923f3bf3ddd5ab5c1dda030d7cf2ddd4dc40ae64bd1fbed9a339f0b3c645fe3675592c03f325f27d996bae878fd6571b9dc7d7f37e1b96df8b2be48f205ff0516e75f7fc416bb5189e5faf0d6bf8c0d5f31c3037880bbce2dc3afc0a9e76c366c17973378ae00c9b57feaa8d2f727809a0661ee9e75ee269fdc35cb677c9fa603ed079d55ae759f71a70386af8b73ee5c2e174c854e4dedde0fa15caff887b68d0b3a1e77a3514ec625c13426bf694fd1ebf82279363fc771bfe1c9adb4aaee7a96d735f9f3ffd959a77a2795de35c6bf65d1de78dfa9cf0e87efb38e6ef24f72aeffd22f1cb6f1f1bc7c17a54c1fbda8acbf6f71870ffa466068f3fdb057f573b238c9df32bf8cf5da9ffed972bf5dc318ed9ea753c38b2dcced633f7113a1368acc5ecbb8a3e2fa9c6f46bf8d6cd5a02b917e8fbcd1ebded3e8ce13b8f8d03df997db7eea3e2c722c5646bb9fac7e3f6f5ec59fbfad9b3c586f9b55dcbbed0abf1bb11ba97dfc4846b8dff4a63ea7063eab48f69a1c2f455e2fdbfc61727f3fa5461b60e5d4feb978e89ebe76bdba0ae2d15b843394e00d7bdfcdaae9789c7637bb763c9cb5c66751d830a6b1ccf7107b89d7262539371fa7a99d4fce6f7d65e90d7fd8abcac29d748e3d648e3b0c4fee0b5d9b4f6d3211f6cbb765be5bbc54f6de60c38eec47f28fb3af70e7abb9c055f977dca656da2770cbfb0873b84b7a797a1f36deb2f76cbcc71b873ecff25d870f6377b54d787842b6c17893974ce5e037f73c0d583fc17624e2266dff3c7beae6561fcf0c7655963aa62bc4d77c5d964b48e69a3e590eb3b3aa7ad3f38a1e7f95ab3af51caa749b8748b6f0c031dbffba1ae05403e4e4f853bd7deab847c00b3effe93fa80afc430c5fc0b9f2b3bff11fb7849ae685fd75745958055d7ddfacb936da5687d72a86d1f4f6e4161eeb798f7fecac9bfe4bbd07b2f1e5c5eb17e67825f27c53b15b6dcfc9b5047ccf274cb3cec4ef270d32f8438cafb69e7ba750fbed82f791170e620374ef02b880df70dd718205b08e78eb61d961bfbc6d71f10fc08d1c6c3dc71bc4d48702bc243b496bf73ead8d11eeac42eb1f5c82107033dd3939e6d96b770350cb6abe1e0a3e8e71f5686f5e22859af3bf3ddfc307838ecdd787e1fc08ce3703b52820f55d712fed80f8e3c26d4a4aafb83780ee6c873918e3fe0bc0cf03fa571b1a13e3dc60a42fa50378f18b7432b195e07f8768f322a2e69a86f7601d487a3b9ef5fedf7d36e6bf5bbf8becb1c7d8e7c75aa6ff831303e33c13f867a35aeaf026357a0f74ab8fdc3bf176057ac4fd2f7621d27f2fb12c8014ea0b7a9ee8114ead7d3d8a23852c30ed76ff78def73e6b8b91aefc48fa19e2b8c5132d197795420dd945481d74172fa2f9ab726fb14af4177720cbc5e19ebb4c7fe91077e98131edc14e985d0dbeca663a70c0ab40ec91330d5905f66f59fe12a83dc6f5c2490778f3cf34f08b554cc3f6258ab4b74ce8e27b7b03b49419671bf5cbdcee3e414facb13ce637f87df903167e8cc8c8bfe312ecc0b978347ff7fdf127b2f29f26f4446b977d746a13fec6c012b86974ff79e58bb5de02f981f1ff2e35b0df77181e639ade7ca233da5c437c5e708d13b05fabcd631781c32afd82521f13ae2e3225f16638fd5b1dd1ef66b8f186f02ef4b2affee10780975eccb119d7ea4386693a7bc7712e0b443fe4fb88abfd946827cfe63a33f51c0df5e5472acb9159f5bf441199eb7804db397b0696a9cbf2af4c23c3e4ef270847909c17ea27a60833f83981fb64dce5baff727f092bce665c0f536f17892874877176eb6f01e65e0cf818314eaaef8b807adffa0cf009fb9398ef61e1bf87dc3872772f10efbc17714fc4ae2f753b1a785c499082e02c4f4b412e97d6a47505f00ea3fd0796d0c3b89fe1dedb15b4c73bc0d6c582745b21be29ce9935b27f4ffb3d0cfb83c8f8891c2711cf3eb0bba4bc03541b63b8e59a8f2ddff16637f5fc019b2de1e185357899773e0cfdd65ad0795f16232361ec3a61dfb47e869867720783c6f0f3e9ff70fef5149f7b8ce315f4e13e7e725668532162bf73263ff41777b422e1bf31c5cd1e73f44fff917c89cc1f0d99e9e7ec93f5c2d42b2106b973fa19f277e931f86feee3bc6a7906bd7f2eb8a8c417826f90ec713453c0bd95fe5ebf5085e14aebbebf2e729aef3c2f77ce3eae4ea73d11e3fb8ba2fee3ef2f9680462af995ca3a2c6701238707e897c03078cef85e3a01ed2cb199a5bb18e72be97ae393a119d3f5fbcf642ea86495d289cb9c8bee882bd4d758f70067d3297d21cf0be1e3bebea73067f6eb945f27eda05cf118ff75f811f0c9fdbfce77f423ffb863951d0bb3f38be6635f65cdb7309fe10be17c11382986ce1a489911ee6fb1ec6c059657ff17cade9776897c37cd5c33a19d798b37997b1ac674707f0abc3153c9fe971c609c2d6953e5fbc1fae3564bd32021e2ba929a37562c4eee0fa53bec0add0a2337eb5701f69380fc7c5f0b57ea9d8fb687efec0f9b1eef4f1efe0ffa51a46a6eb55b915b1cf4f712e63f9045ba6edbe305f64bd404f793a1d4b2e71d9131e7f385f9d28788e4017faeee590f836fe1bf2245407ce2bbc5e5a14745df277a7c929dfd09dcadfa9f961682f39dfb359d47e0ee9bf047b4d8a51c27b336cc9b6f751f61db1713e14e3dcfd34b839dd37e7b459aba1580bc5efd479a38e50332ddb78ac3eda03ecc61619f8744d7f637de1401e605abd1ea76d80febac67afe2d5c65bb593538a1fbe2ff1ffcb1ad7945eef509c6b0f04e17d20700ef23fa1871a9c6978231117d7647ba96e2af953f74bc6f6ad9abf3e6b09644377acf21e4eae72b721ff77cf757eafada4fe69093ef7aae249d866d431cef127ab4695c6debcf777137bfd058001f0f75492d4bd36655e7f7b6ebbabe08fe6ecfef35f00f480c27ff58439e9dd7fbbfb6eb4902efd4d479301eb08dd626c386a27af0d7f8beabeda5ece113fd856409cda1b47f493c9ae27ac1585ed486fc431e2ce15d6df95d7ffb78ec2d35979c2db83613fcef24017e4f222be8bde6ae16c17be44ddd681bc35fd4d6836b0f4d9eff96da2a79aef15c1d945caf8af5e373d65925c62a9d73e899577becde3186ef88629f6838fe41e2b29c9fc1c726d9b987d67ecffd4ded05d88fe80ca8c7c0f7fe7cc6c716ea6e67e13dce0be86b5856a1d7e046443a6218598f7788ef8f2779b44fab48ef77a0eff4688bf520248e1c17fd5b62d4384612de31fe3dd11b422edc9f30ac317c0f6663b5da6f185f60728bba8b2bd88a46a67a2f7abf73e88574ecb54e15c63581b8fe74f5e2ddc935e27d143536b86f7724c49264ce08c535e47dbe34b7b6111f95f35b3cf2f0b8007f85bc3bb6998d464e13e664d35df2bdc6aaf190f9bdef822ecf8708f7c0f7369d0e5fbb2fc4df568db9ab63e946039beff0b1eaa5a1b53809bcc998fbfe9b6d2424a618f3b637e04efdd8cb36439efde0dfd138ef26d5fd88fe85baf8f1729d8c27627d15d9f79c1ffdd97830afd757c633766e893f01bc68984f98b387a847095fd78f3d8fe997ff5f19633d47bc9f85ae5902ee10f2c1847e1da5ed9929b0be61ad311fd95ac235ff444fd47a0dcb25b155c47b35f8e5a57e92a363c545ffe28e2779935be4d5b54cfffd21324cf331b8ffd68731959ccf2ee14fe27d09b8942b6eddc713966ff6b40ebf46e80cd149ff6724c722b795aaa7e5fbcdb696b7689f20ff5c4b8c61272edc7c660c9f80293fcef8d8118f5590c6d5e0017c70457256f1befe437d0bff72b28ae3a8925e7a711f72cd9dc823c7b9c1f207680d616eaf81debf06bad999923915794d708d94a7376bac22cb4d93c27d4edd46bc409ceb953cd730c769620c4136547345ed69d16e815c531e7801c1b556c4f6cc4bb35743baa7aff0731b357afff19afd47e7245d6325af6ccb5aa0719e55b57054069a3860afed03e51a70fb34e8664876ce91e512fb47d2419c6fadc066539dbf25b7dff7c0ab36aae31dcbe3e416b990ef92e7fe8f6d203993ce5ae97de83cf0ba43c60a893b6115e9da06ed7fe97767db3a43fdba7c160b386ab00e48fe7a87c05f9c1afb8fc3ddc43853df7fdb96fb8cacfc9a185a1e15e61e7a66f77d82c5423154f33c2ecc2a805c987916f8ce1a3df46919fa93342e9cd3d673d26824709ba9780bb0fdd5cdb89e79a7a7ea97c7f587b88e91d453fc1dc7ec7e58c71018aebd8297adbaef427f79987d89937651f15801ff7f0ee47f210782630746e82565b41f9eb6d00334396cadfc107877618de57a2909f3403adfb12f4b71ddc9595c73d154c37de82fbb189314f705c796592259e0fb4f63b116157c54f19ece39ea3a50dfc2d583f318fedcd9dd6bd4c08bf74ad398e02be17e0e8e3f11b077582c1bfa64a3fd300df5e41ce9b87761eb87b96da4fba8bbec447ae792f88352e21f3c4b3dd0488e2ae829f5e7bbadbf7cda56bfcbcbdb17f0123fc7d4526029a963fc5fc8d7bc7fe77b42763ff6c3a8fe7f2de1b98c2107b51f5e85cf3066fc37bb8e25f46b1b86af63ef897da107a93fc0bc5c694f7c8db12dc6d5225cb31971e7238971e07bcfdf857af8f7c07b1c12c01425b56a82fe42ba20c943ef8dcad53df0f24ac64a6c899db5e0fe4c5ee2e00bb5cf6ccd4f80d3bd5d2beb6829371e8e518e316f9a8c49f44ff252b59da691be76a7137527b980810072e43ed1bc854598c7857b4dac47af25764db03886bf914c71b96f24537c4c96ef6d48580eca68c4d5c41889d16e07f2b1fc2d79f7ed7ef03f7cfd8ffd7e02db10743dd7434fb8c5b9d8ee5dccf7e61d625f41df48f9a29791c6c4094eb8926b805ef3db772fa5788d02531cde898b15d6f9e4d257e451d87770df13c96fe25830a985f8d6a25f855a43dbca20cecc7dff5be9ffba7c4c302c81eb1af659fd0ce5194078b1713e0eefcd68352ca3e3f26603d62fe513acf1b4586d534b9e8fab4b835c1f37768c5781f7381a07ee2dd21f9984898ac764f56fb131d400cb4dac2743673289abf7641e789a8bacf3921b36072701d38f9c53148315ea5dd1bad53da50a5c168d700964027e4ccd2f80ff5eb03a169e03f84e7534b5df805b0ae9cdbac657997747b6726d6f3f196e0a5fdb7521f828105788496d1d6703f70897711a5ae82cccafb8b6d0cdb69e597db01abac11fca395fd7dfe5988fdcca09b6fbf256d788e58037b8157995afff499e1ed95b0bd1fe79e9d7f03a626e7638ac166e7e36cb3c1e83bd28f821fcf81af57cab4c1dabe4f526c9497dbc881f630c77f788ce3f249fb04e630738ec3e56d40fea3d653cc198b7954722dfb45893afaaf1c85435c35774ee2d61ffa582cdcbe34dcbf62fc69b7be481f7b64b7ca867e8042b8ac1ef3ed15e6bf241273ce61ad31d8d3a9e3d9f67e8699175977dc477f17cf8a4776ddf3cab7ebde86393644dc1c3f1ca875c3cb85a69c9be7f0835d53f1af6bff83da99b3e05fae8db6b5f34f95fac8f8effd7eba3c5de18ce4fc1353f7cddf23d2edc22f427397d2ed155c233e3ae5b2616abbbc7fe0593cde16d0b58fe98333f3e02f700e1dc72df424fbb47965991774c237f8839d4df07d71f425dad79892dd07305e1e7e7cfb8686ebc693363f0c03db8c346bfc98ffde0317f1fdcb9ba67e8538d8eb83e1fdbb902f609c6753cba24e7a29551d6e477e46b7f212f6951fc36385bc57e18acb335e0cedc0f6f7151fb7202871ee1ba48acfe5d5def7b06ae61a63be8587d3745e77478cc480db153465e7e0efc09ac0b375f6984ae192737ba3eb110e7dc5cc3ea8de114ff64f909e01e384dbaa43fc988711ec0d4585d714bed6f0327fe8bb5bf59e40f680c04be47632032c25f07724af15df13d7ba2ec0ab9b35d3a7d1f5c9dd5e03bda6be819c0796a6977645fce5702ff631e1f27b7789fc676c69ebd8b7ca88fad02af770c57c39b2083abb79d3d4a6ec9fb69e71b761da7b69697d8c8d4b875e33045fb79339ee42189374c742d0fad1c38466d23b9e0bd7e67b5d8acee5aca15d8ab14e9df3234a106f9393b3ab7c8db9c048ecb71a0e4b84cf6d83680da67ca17bb22b50864af4ca1b639103935d0d950f4aba979df6f48dd74486a3558cf82d5bf8698132612e6457cf76be499f7291f17345209bfb81eaf6fd847f15e83b36ddef713edbee76343d355ef77a4e7d7a981e62d2e67c630b673242f36d255148f1ecde138ea2e802b6bbae2e2a1686cfbe6dad5712941870b789bf43c9b55a75de83b67b4df669e7b0dbcc9395c0d7ecf3482595cf3e1afb79e5622bd887c35057643e39a9a6b93c6f93ee1ac40df3538d9a067e014c9f6c74b6ed13739d6760d90cfe12598bb0478779c14f8a3257d84fc8804b81ad31473f9bc21db5c473654886c32cc7f728b707f1ce8388edb98f339e8f80697ff808bf4cb1cae24965ad6f9ccfbd7f86361ce53589b6d6dab726b96296b37c4fda4e28225bd06850b31db4d75dfc5c26f045c1e34ffc710e9e8c67d932af44c8875d855334ec93072043b91f331c6c23858ad61e82dcbc07b13fd0be2a761fd96ae5b72c3820e6fafdd1bde31ffaffb0fee955f058cd4319c37c057baa91afe84d01742e78dd494a61f866a4ce6dbd4ac79129af11a88492099bd452bd1deaa6d893bc44f63c09c9ff4305ffb44788e30a686ffcae4f7deec3b042e1cf3c372910d9bc60aac08e42f2ffd3447be52e04f9e53ebed6c9bf6d91e8d247c63e4cbe707450efb45acf04dc16307ebb5f274cc0b641be7ddd6edeca6d570287ff6732f63db43fc14fa5a698dd1f64b5c866cec8d3d483174247f5881a5d3abfda42abdce8ce17a660c736e6e5bf82b274f991ff62fb9e664bed2cb7c2d7e47f987671b91eb54158b0d3dd62392e335aaed74310eefb6f196013e75c8c98ca7bba5b276d874a22dd4d3bea1f5cd5fe0ca703eaa848948f176e47bc9784acd3a3f9cefa7f3d69425befe93e0cde078d557f1f8b8b9c47f8bf220d4cf879ebc0ff8d830b706dae557e8e509f6c39b9fbfe07262f76bea01d613dde8d3a3f28ff73df02271f2207361097be4cbfb42ddabe4325df1c9dce5eade83bcfc847759c66e53e62d82063e1ae1799571e9a16f41588f7cab884b6fbdec1a8fdde7d6480f0dccafa68cb2fdbb5a11cc2831ef857cdd35e681185cc41e3be53b4bfa372f5fe568781c3d110b62f03a87630ccbad80ad7552e1bc027fc5f4d9d96db44bb9c57902ba7fd1ff97fe4b7e3d38273007463d0f8a3c00993b2b6bea0d93e0e88d1d2dfa7c2d38f97322b4d720c7e2e5113cc37dd1ffc3e30e64b59cb5ec29197be015d66a1ad23e18775845dd611aea1853a1b18fbd90c846be888bfe3dc036fa2ddaff5fc27faa9af84f6bcfbc4b39e44e54615ce2d8ea030730f0cc796f35cef671927e88b1fa327c9fdca3ae437038d0b32f5fea875460b734795df97be7178a095afa0296b988cd4271adea35c800af22b6cc23c3f17e518b101d08bf8110af225c9056bf8c8e352701c1b9ab883ff6c41c6fe8fa1af343b8d69ce3dc98e49f515c3bdbd83d960699e7552ee26b122e14d126ee3f132fef483cb0a938de05e54da9c0f7f3e7e0ff713683f09c0d79ffb8709fb1d5bfc67a5ec71bbf30ce0591afc00fd3adf74883223f431e9462ef1883d37cb380daf4c0cf4a3a3fb89742c2022279758c478b6cd1135b9f15e5ceb7f26f4836a36241f2178bdda682ba4ce6b3f3b83f388ea6e0b720b52c0db9855e3c863b0476e1fc007f8b7ad67430ffbf6cfb61d920b147f3897b03d33c2e36382e28c9963d764e51d73d87d6db3131801716eaa100dbdeea1f31bec244f43b3ee5127d53f6d2bc3853aeca9e14d23bbc5ddb3b1bcee053e30cd8401f875dfb0eb87642156b798913eaeb59e573ffbfcddb704a33757f1e9f233687e7c073725bf09bdda76df529af55b6f5cc63a403a63bda436b4e2f60ecde467c205dd7d83d823fde2a47f38a5b978a5b17c9eec173386773c8f0d9c60341d7497b6085ceb1b83bbc4547a76cec3bb3e6ebdaec9bbc572426a2c2dd6ae2bb1d6c18b723f1586d728ca106d71b6f77b17747c4f45bac86695298481e1afa859bfb6133ff476ad1947d651baeaf6cc3ef554d3a5b8680bf06bd6f83fbec3050621a43aebef97ce1ccdd1c074d5db217ea229f61135befdafe0e01f70e01dd8b4d5c33ab7f0e39dcb27abe912e9adce1fd72e9fd8c013a07d0ded27d8669dc7c6fd57841f7927ec8add71331c65adf25e6de2506bf42c446cfbad2bae4306eadc3635bc8bc33a4464b90d592d6a381bd0d5ce72ff8629ef41a517e716ec904dc1c0e03b30caae139d2498e885cc77a1e4dfbe559a9d2b5be9ebd717bea0def29fc778b9f4fb05e05bf43ec1f21f637e87e1e0f77f590fbfa206707e7d47ad4b8c7c29d7332d3ca3921e31f621955e2c11339c5e7c00aadef0f83f91ee873f1fa91b946f75e001ee38ed3816582fec5ba51fc5cec1567e7d470530dfef5137a5877aafe46f4794563873f9a3c1438d63132d7caef46500bfd6b2bf7458ab1501803c64db65f8e61e1cebfcc3f21cad2a9e2d6a2aa65e954a97a4ab18ee6e7ef54812e30760fdb603c7f59e069f7add73b4e919f68a4ebc6ba1d26095cef996f53e8ada67528347f8cae256b7f98bcc2e2976502e4f31f8c89feeec2e6db38377e0b7a4c7f649e8ed690eb6d977b9947a3761bd6e4b92f659d97713a2fe3f4b78c294bf3915fc09737fbbf39dbe137673bfc966d0761cf1d30e705eca583604ff464bec7cd7118f9fa09db1984371ed6f67d70b6cd097c0773b71ffc4167ff0fb72363c2d731067aaf1738eb10e7303a7d7a56fd10e30fab18ce366c4f6399cddac75f63c1b3dfbde2b7d81e16f51a1d16f51a1d16aad809b2157e3bbcec93714ddf47bb19eb1b6039eb12cd13e11981fcc6dcb8d3f7a573d3f15719ba97fc5be0c588ac25bee6c5fc61fd28cdc9e77b06d668c6cdd3a77b77dddc23948f93d441dda26308758051e1e4b5edc6ceae59239e25dbc5eb01b7674677ee3c7ccc1b5ca9d84659829c9a11be865f9bd1dd47ef0432abfcee5ff6fb60f7b31a3cecf713abdd26b9f588d80e796d3be457916bae71bfbe3de2e3e4c3996d9c85cf042c4e2fd84d47678881036611b35d6afc23c5332ff6fb086a03c8f8fa75bf0ae831a19e063834560a5d63f6098fed6bfe97ed7af4e0ec93c77cc5f92aeb9132be18823c8e1ebe4a9735cf2c0e8ff8c4e311376c4bbc2f378a67c2be077b71be361398730bd9b6278dd753e8bbcfb869714e95bb17e17206eca9c6e76cdee53a25258602daf7d3eafce5b39df0e6e375021ffbad715fb407a176793fec86c07d1be6cd7dc89f079863ba15ffbfee5d9884967b4dacbcf8580939009ef31ae30043ac3597eb91f9b8ed84e6076b6e313ef60af989d5cc180e1926bd8aab51818725e5f484e7d43c1cb8be62037d62757e6ce5f5b2ade7d4710315e7466b0c53e4d750dff715174d4b9ea94373a24e146898c70ce752daf35ddbf5a812f628f83b72fc8c7ea7c8d98c87371c2bcfb3f971788b755cefece984e701641ef03880af9ed7178af927f9c2e69a78dde12d16f342624e2723fd53c688d63a347b7a39dc53b0ed98ccf76e102383de2fca79e966b635e2ebf04bc088ad86b856cb106b6bec7102b1b8b83bcc033d2fb69e9b29f392da85fdbd823c669ad0bc3717b37accf38eb297b3b5bebdc9f1a2dc439fe3a3739c1995944b66f225e641e57c9b581f8c79b130ff5ea38f979f17e5783dad7ff0998da8c8914a75de8a3c694163a81b317e9f012e1f9191d65ccbe1f4220f837de2c01f7c6b7f4e4fceff404df3d6ea9f3f0ab75ad618a9ea3a62dc1bfccd1ebb48bed138f290d4b086565e859ed309bdc5378abfee5b3d8c3d819f954796fb0c8bb72cd8d7ef8aebb3d35b342ef3f87012724ec277aa3c133d5b0c13c9441965fdfdb6700f89c15fabb0192cb30abb24c75c241ad45e8f795fb5ae1995fb016dd2bfff630fbfc5fd03a6dc3f35c983ee320fdf4fbbc09f1c63edfcf0796ca1b5123788c83cd48e9f22fdf12df427a37a0dd09e6afb8e7f5f3136827bc6077ddbecb7adf5155f23fe8e5b4f1c13e0d722abeb1567c5b28cd19c5b6ed6d4a7ee99e7249772cf59583c5201af5ffcfe165acb0987b144e297cb6cdd753bd2b5b857d40cf3f8b8cc3fde551812d92eee2ed3f8b8f4427fd2c1b52ec327f27da32266d7fcac682f78584663e09485f59e423f1bced1211b1bae37ebcfa4f1707de397bef41dc15891ce641ee78acca7e423c0fe9915e12dce20c729d6e4a2b96e708fd2da1e58c33ce2b15444ee598c45e83df259913fd7901bdd95cd1e47ae560bce46f44cdcff0198f5ab14b8b2656ec33a97eb76b8dfdd127f99855e023d40c97822f527f2cfc37d1a5baf97613fd0ed844dde541ce77d87bc1adc1b5d8b7ed388a5b1b986fbf6edf791c2ce6531372c87fb6c175ae139f0384e70827b8764728571b14ac5b8245c49a891f9ca337f26fea2b4ad6511592660fac31cad2f2416d7cfc2515fc3787b79d688e7497587302ffbc10363cfa2f77e93304af8bd2fbd67e3de9a243f941f1cea7a33916f8dbf86adfb31d2919db02bdbe559c64111e607e474e92d8f444e591e3d343bb43e86602265a5626ee4384f4b2f2c8c197ae9b8f7d240de91edef2dcee49d3ab82e76719ad23cfefa05b69cd0dba4c20801bdd9daeb85f669636fd2da056e5f52bda48823635de03b3fd0bca13952f879783fd5f753ecd59efc1b2c6bc620b795b1e19a4784ec9912cb31c1e4f316ffe665d6f6a88c674cef4bd7d567888aefb81197c5ffb1fcabb714fd127e0f802e746e51d1c367f908cbc1d4c8dad7a5653f8978565496684d20d1c90addf74bfe4c89eb49c7bb3c0aefa4c39a3da3ae5b05fa86c9e5ccc0e700c50f43ef03cf773b2ffcf98e9aef99d9fe8e168de18cf9b7187f71afc806123915e0bb4e5c9865f47eda25c8eff0c212f9386c4f481850441ff17859f49982bc301901dc6c2c57aada3bceb651d4d741dc04ede78e5bb855027e1cbd1fe8dbf4e74ab2379a5cf13bd5581bf39b4bb166e19e68df9167f2674a9b0cd07a36f11ec504db51e82c01fe01d90602ac72727e29be57e905bef7f289eccf365d4a6cf32fcc9534dfef9da69d670c845a08256e71a3ae639736dfa7f92cb4d7634d65cb3564bd1b788f3f0dde63dd3c6fab5457c574832e70405c9311c32dd47f28f225c171794b7cb05da244c81f92fb78cbdf33e8fd2e3781979fc9df76e899927d53f36c513d278ec14d38bf5bb617d310b05dd9797a48fc0970fd834de876ae31f24f8e35861efd2d1a9f8b7c307c5e9033d3ccb6b916cd4d99c3d3ccb6599a07c42e057b58bba0f749bca7d996fb14c7b2827dc8e64065abb2f7f796bf57969b86183b9dbe1bfbadbfea155befd1097dfb6b3648bdb7731ce3313339672ae22eb2cfe477e87373d1a6ebc95958fb058417408b8f933c3a2ee10c67e3c897e9d693e34df06cfebd4186083f223993e86f1f09e7fbfce5f9b6011d82e6fb739b0b6287e23bbc776a397a6fda4fe2fcb03d734dbcde736be54562a4487e1539bc4927021c6a97c9afb42f5f6191d4faaeebee13abaff17ce90d9f77bcacd0dcca76856a9f73d83b6c8c60e7637d22eb4d3edec8f6381bd39ec568610d64db1efb1e64adbb741c93686e6a89c02bb192fb1800c713de899f3fd09955ef18fa4b33b2dc0b92e9c5319f84908fa3f3ed9cb65e886c8c52de0bc97882e4945f3be2df26793272cfa1a721b9303e367936e5d69ae99f9568d72bcf009c9325f3836cc4248dac333f67e4d9c887e0fa35d9f7ed75786c5dff1bef41ea29b71ed4eac13e6dc9c56718cb03afa3cab6a13a2fe478999bebf9ca3651bf273deb91bf866c36ce1fe57a15e15e57322735aeded1b9077e729d52393286529ca0cda668e2256fadfe3de84e6ee171b909fcc9efc0eb195b8fb3d38d062ee02db69c2ad2c38e6b99d5b630af8b22476b7d2536e049aa5b87f56375e94f75cdfa4757e041c17e17ab3dabe33c0bbdaf45c74583d728d0fb97d8ea5f814bb212f8c949cfc4320df473133b6e1c96b19e77426f692ae348f8d9146fe516f9c35b84f45c635e287e6d3d8ee97877b6c759b3370cf7387402cff9c3e98a8bfd3e6af075246327c7f146ceffa7f9285dbb477a2fc7f341e25954365af51b9a870b70057d60dbfb8de430613c18f72a039df721e9bca0eb7662dded30bc703ca7d7d8eadfc18f83f881b0c7cbd9aaa3cc71ffedbdd8f5edf1ba2cd4659c513a4f5436f1b98863bf703df4aa47c40e58532cca55af8c8e90df60782a583f67623f5a3dff5782177552cc81e2f9bd22ea4eccc043feaad05b0fbaaa251601dfadb08dc76154cb3e6de39d6bb926f8cffc3b43cce7cbef0c3606b7077a184f6a45c6dd1207b53dc60b8ffe9d205d8ad693fa0c2a5b93dfcfb30263484d2d45fc408e0bb59c5b6deba5988b6b58e4e7c4722b696d40ffa8c6caeb5bbcfebd32ee3c6e5177d0b0eb31fe81bc666db101ee6f7edec773d6b3c6bd53936b8ce82e419f9b4e0e983b4dfd55f273b1d15dc0dbe170f105db72660cef813f81e70afd382c3f40b02b2c13ecf3e94ad4dfd36767c7f5c5b6f947720ca40cdf4fbbadb710b0baa36efccdb6f26c5a9df9cf0f89cffc542e87d68889903e5b58fb5a8faaec0d690e888d23edb35d392b309658acb35c28dc73dae41c21b98b1ef4054d0dc2b7f43e907a2a946b2fea7b1ae3d4ddced223f847a3496fe5356df3e967f1529203c2b12e77121a77868fbf82186dbfb3b5dc0ad66893673303afed4af0b9685ea655d7a9f713c5c1dfe4198e25c07e6ac4dd249f84c48b9793d0a8757b232627edc5a80b7d323f38bdcabd33e17791e30d95f0ac6ffc785bfcec5b62a5799c11dd87ce5c715fa8638fe2fbab63cf75be56dffa4e59eb3027a2f7f05b7ccca4c89f5bbfd6a39e0eff4e884fafce5380fd4fce692c830a5d88d610ed37495f98cd7bd9c6b0f7633f94e647ae45e7e6647dc2ffbacd7b3562bb2db16a3c5fa393bcf6ac87d19f2bf374b6d1a647193781f41e7759769afe3a1f5369c6946e49c5d7d9e657e66feae2dcfaab1ed281e73af620ee4ff2bd527e643fa7390e2487f7fe67f756c6755ebe9fa309b1d9967c03de470adbba791e49f3df940731def999bdc0e7e094f38df68913f8cb13d4f9edd3d6185f64f5bbb3fa8c13c76976906e52e4d4b4afe5bb5ce9ccffcb5c178e63e0fc56dc01393da96b3c98fe7a910f639857d72fed2b1cd77c8fbac49f7a1f48dfb7d82456bdc72222870ddd4e71a26b39e5ed01162765fee47ef0785dfb28d602d27be17a3eb44f69ad0c70a73da72ca6d0160bcd3325bf8a98d3e2c74cfbfaca59a1a5b1b4ae5b21f7c2dba3ad71a592ed116667d6bfe3ea11b5e4fd44eff38c2db31bed53e9fdeb3e23c10f7f9ec4ffe7ec53b18eebd3988250cff569cc0273c67f12d720bcfde3e53e78feddf53ff6c353d41d1ee2a25f24e6328d8b328d325156297ee567d72da4f9fa741ca634776372dfdce9c445ff1aea8fde82bb7f23b742e677d35d5691de3b46e3fcfdbf1dbb61b59e62fc86f355964fb17e95d51c1db68ad84d40f2d4920c4a36358bf328de6bb90e3db30af49d8c15f44c907f5324e78f8df26ca7f620b513f83d46c64bf2cecc0e6c9e3f5417c57a5f8b0b27afcfce5aa689bd0875ae3fd81c72b690f5b825483e303ece9f69c57fe7bec5d6e316176ef683f215cb3cb8754ca9e1437373ab8c3fcb73d096c7df7a3da8d3649c39f82c127d58e977ff209e43ed6fde6e075d3e3b127e2c037cb04c8c81317bbcf17be8536fae5f03f3889c6d8ddf7f663b7e229327eaa7ac5bceb2861d4b6b3e885cc9bff757bdfc638cfce249de7c0fceaee94aef6c625b05c903df9bd42ebf92ddd925f33f12efa77a9fe639db299bb57bede3643851d0fff0fa7d9479644eef92b8df2731d4ba27e9c7b38d8793b391687cf738bcc54d7f95d78534264863692fe20f4c36e5fb51db92d85dcbda7ff87c0e259bab19ab0bfdf41e59fd8ad4ae32df50e1ebd631ca2fed2975df49b32ea1a788e9b2f9e3e29b5c9c6444fb1cb09e71816b3b55cc7bf652363036774356f8f821fb8ec40f85b511f312b446898fa18ab1e2c4873946ff5e432b2f382c0945ac8fb34feb73f0efea5abf52bfd68c3fb7d6be32ff9ae80831bfa6c09c7a7dfed26736f2c96adb9ce5e184bcc10fb0d717ff998dfa899d457061c9385e5ffb039f61c8b65b2bdf9f9cfbc9d839fccdb5c88efdc4be3b7f657cb24dfafa9e4bb907a2ee4be07269503fe73b45b4bf635b430faf93f711aef784cf17d5cca87f3baff8eb16fc751a7f9d23dc2fe6af7be3affbb1e2aeb3d073b5342e2eb724133893b2f9eabedb76641ea5975c68f09bf63e92c5831f47b0bf7fc1d780df7cb2ee8b87bf6a8dadded118383cc0fc63bccca382d419c01ccccff61830cab00dcd30c3df6ed3bd194719605b65a185b9e4d65e7edd7a9a16ad866bc0adea2ecf1f2bed1d749295a7c887dea0717af933f4e7b7c5eabc9bafde1eb3c368e75a29e1a473e328736ef13827dc848353506580bf3faf3ad5fc7dd4b1cd491a59c16e53bded965eef187a8f67a0a76964dd77532bed24e3c1b759d5cfa322c9a3b173d8029766ef10e99dd2b77a73e48f4647270f8d21d415c7fbe1668bc6bfc937f6e85106ba7b8df50d7faf5b6ca1cfb06d332bfa5558f5cff43e71d57756eea2f4ad37820d8de667007861f0aeb876b183ec074f1b5691ae9531b26b3ba33ff6bb7d9dbb9d9d6d9c6e34dfbed1964377e4feda8cdc1fcb51fe6359313f09eeabbcc7eaede1af068ccf0ff7e93a9b85bb34fd4ee8ae47e1643d7a984bf0b9469fddab6abd9736315799fbee8edc11f40d1e08b7a0318c1a6bbb476beb24b631689b975b509479005c3efd2bb28113c21540e68361e6c580fb2661b85ad929f4d31ce9efa85bd73ecfaad3cea63c7d8579065ed5ae7b8fad7e95801df476919e778bad47baf5de2e02fe9e8ee486ccc3be3eb73076deb08c8e046fcaeb17b665deb78043cfce17cce3e30fcb29f4d0395a62f519ff1d1ea3886514e993df485f72f3b5a3587eb89f6470acf7c9e6365fbddd6707cc336d1baceea303b813ef9da61c3d55cfbe43bc3eb136f59ca3b302e3031689f728b6dee3ec624e36b4067c2d3e394361fd012766eb9967c0c61fbbb9f01e468b8cacde9e336350cd0ea3eb7c2fca5dfd4e931ce266e6240f7c87e00372fd70ef2def55b869ac235d57bf175c635e90febd6c7dd8bbc3693578cc0e9b3391fde70c30499a6b10e93d8bce07b173599d88fcecad655e43eb01b8aa8a79bd45397927127fa9ebd6a4b9b4d2342a9667c01c6ece27d2e1fad65be6bcbc438ca0e8579187fbfe675e5a86988b035dfff6a19c63a4e7d39ed07b375e9e42efed1b7d7fdc2bdedb239f608a3f2b496c901ffb33f187f7a83be98863aaf7809053e6df89f8de1ffe308ff460c7ed6d8a4dceedffb8e4ef392b1ca4ffc9debc37e47756a0737841becfcef49de2c2853d277d5f32db6ecfe619e4c51e998b1570642d4f91bee4d6a4174705d2013d746d27ea027e3d979b96ee03bc5cfd7382f9431af7b301df1e8ffdc75ec4f7a69f4fc72f38b8ad651e59b91efa369b13aa0f96b93b5f66f97c3d72473363700c8fee392cf27364e2fb4dd0fc114e5e5a2f40629555e881befe26ace198c8b291521e2115167f167a8f32013e0a98fbb3ea4c41e3a16bb221fbb76d3cdcbcc6760ebddd9dade55eed919627567a0bcdfb5ebdd74767fb7d04b8fe82cec1fb338fa49e582cf7e92dca422db2c232b21e39e415f4de0acfc7528ca1b0f8ffa492e3a2ac2faf70df707d18f46cc359c6c540dacfe6fd5b57d491b4a6d796f513cdbf5621d299e310fa791bef00e3b8ef263afdfc7ee473ff2dfab29a1dd058bec3bf4ede11741cadb99e15fdeb86ac65eb78383d3833d0999976781998547c1ca3d5cea86687f90dff1b8abadb18303d82fc63342e550d249e871ed68f5f5c87993178f2f60d5f3b89cf03b607012b35f0649d4738232cf7bcf5c3bcc9ef51ef61c88deed9597db6ad5e1a791b76d6321dc0d5ed73b640ffe76ab87647e666e9f617cb4d6fb4daf4c6bcdec0f7ef613b95d61efacbfc0b73ff005958ddc9df73de9e15e4c1d3d1985de89522fbf90b7286ed02662354b28d8063dbf81cd890796ae72e83ef0f149319dba3b57c0cc187509edd2c0fc59e25dba3f987e51e127f99e3bc736d8fe23825dea3d4d682f34c699f67f578dcfe29f07a598471d8f19a1a83a3b4cf8f33b6dfd8def6289f1bdfcf20aff1cf35672366ee74b97136cbcd823b57dd5fdc5c30199ce8c2beae9fdfb0d3442e1d7eee62cbac122b3f107ebf67e82f8087ec6b732f8cab751d7cbdb69dc8fcb7ef1b24df56728ef4491a19683ccb49e461be93c4da7c23b507bcdcdda6fbe131b2fa7bb03575b7e35af925f4fa900bc5fd9a0d7bedb9051f443b6cfdc921f1f20ef8d7ba93c75d0770bbf03b8bfb98ee1ba16760ddd9cd8d8c9df7649f823c6f09e613f2af12c09e467ecc909325c09c49b17f3ebc01778960ef629c8afa7a889b6af171124585790969dfa2f859d31e6e3d37a8cd6fa3fdfc946c7eac13d1f9dbe09b477fcf4fadd8c322ef06377e1e4ba7899f57cb92136dddce49b435843a8b57e78126bd479f5f134ec7a033e6107a481f6d7681eff4a2c239c545ff1a75dd27f255bfe0afe073d7b8efe695e8f7abece8186af234ccebc3ce03b0fba88d739cae1a328f63c215d321e8fbcdd6d3f2a8eb76702c697eb6df07b2ad7c0cbd1e95bfb4b673dd16bb9ff9f89c5d20ad3b778fa9e5ec6b3b81dacd75ceb5b67f855857d32e95e628d00916b5e46370f98b576bffa0f2ec54b56c3bd55b87b72d49ee24ff182fa3c8733b5bab0ff51b01b2e5e1f345ad97847cd82bbb27beceab3bfbdb313bb50ec13dd5cdbe55b187b8d1539e8c273d750f2aeb393e04fb54c16fddac49fa440f3c383d50cfe10ae4ba6acc1dc4e5cd4ea0ef5afa04895c1c993fa2c0c5f8c4a6937d7f3e472bea5a75ee89f4ed44fa430f572995533a77720dd727633139db72d0a8e5e2f65c6ce7f41e9bdd063f5f23e7e1a2d6376e6cef6b5dd1be367cccaeb93f1bdc90f5fb32ff76660cdfa6a2effb0c088f4240701f037f724c70ee5215db50c9fb539c13c6ef45e289f85cfc3086df7f71be3617db4076b0d04b50ffb6477ddb13e0749bc87f774dcc25b93b06ba798d8a7ea7d6451b3e8ed9ddfacb936de59d5877cfe13e2e153e466d9352bd3e76b4b848802337e2e605e3618e76be31017fd637ec1dd31764dc534b4bb75e0f9ddf9da81afec69c8d1003c15ca2e67d1fea6e27b1dc0a7eaf07e2fdf41e3bfba7f2f9416a28d0b5220f67fa2b19e7f7d0eb17d3f1ae649c6c246e39a9a0f71d30d87e0247e3e38cfb86602e6f21fa4e7df6fc9bebed13750f8e41219df3363bc2df525de34bfdf8047f04eb134dd427c343e02f0f5ba3d963ab920949cfb5efdb4a113f34147220709b31992736cb66177593ab6da2f7eda541f1c8e30aeed1f28e9384f9715e2fab79416cb6e6c05de93bb1bd6fbb87b4e71947205b3b1c5bf96cfd200fcace6b5c5b86b128f85eb34e7c94f9b2917f80e517e9d9b8c873f8bd79df43fc25bfef6d8bc4759afaf993f5701a7a94c432f1d93bde9de57b319de6d67a55f469bf2077bc6d56d787f07649af59ef0afb8ce9dab069e3f3e731b9a6ad36fad3f13d1bbe3457c7f4c1f469fec53374cec582a4b3f3cb7a36af82ae0bb29bd4b90ea41bd32d7052327b94bdff74ccd6087a29c51ee587bc5ee4f94b76ee29cefb4fe4697e9d37de53e4238df7eada30265750274862a3128e01774d5b9fc5e7e3d3e4184cfb3ac83dd73c571eda9389e59c6c644b297a9f6dbfdeeb53f79f8e91b71fd95ab2d8fc54ea8b68b75be6e4de4b71bf0b9822e29c933304fbcdc40fa4bd4bd41647ba573c1feb31b2d8b991be4d3ff57de7d86723fbafb6d57b948bf7195580c59b46e324fdf0e7684c7ab81ab27bcd0ae4cbef4a1a1709fc61893f937c2623e573fb7c9cb38b7395626d3893b90dba17e86098fb05d28f0dfd8ee6a5c97d148f6b5cd0a9dc3b67f5afe1c6b925a45e4ac0f1c6f606cb6bc8f62537c7e50cdd4fc6da80f180ef0e582f8177e7e5348bf41eade1ff337d2a6a91ace52d2aea1e03cca73d7fd9cb4f647e08392774beb5f107ad5bf0ca251e33fe794d0e33f45fdace77ccd5a5014fef78085ccf3f54b884be53ebbdf70eba3e65b69a1114f67840f27cf5e72d757c65ccf6b6d217bb137b4de2310fd34855e3877c55c53a2b304dce929ce77cac55bc96f8812324d3f8baff08970ecb291a1792b37b135b85e5504edb15ce59bdac6b5d654aae5b526bf36f2ea7d8ea7b89f3f917fb7c55ef71297f487d396efe5bc684cf0f29fe0af25deb0c653d84b07eecdd66757e51ec5321e7143f9fb89e4fc4a96076ce0a6357525fc536391b0ec778f81a86a3fdfe9dfb2d60f9deb7044bbce67f5f96b10eb6c825b2f22be048571abe4f5e8f61e1f54a9a7797d78aff6e3aa675e814b39efcfbb4658ee6e742ef5718b7c8b9c5c586d5828bdc8ef973e93d403e6c8ffc46ea7bf0bb831a1f24efdfe322d769ad48e8a79d10f2fa6cdeb38462d21f4ebbf97a709f9b24f74af9cac8bf3ce797df1db09e5a9cfbc47f1339fa151bbd6732069c89be6df6efb3a3d3f940e3467e22faffc279d25c29ba17c112a318231c662ddceb1e59660ff858043fe36d87ef95de22fdd2f6db341e0fcf1f1ef05428ef1d17fd237032555c9f0a1ee32df287e7d0273811752f0afa5d1117e645c1a90df6127a275c4bfac8136b03587061f1267f2ef40888dfd53cd9f26f648c6c7cb661b968c56d6772d8e3f837b95a74b246813fe96c383ecf9f2bb296809754e3be637f9f3f9b77dff0b37a6f7c7fefc7fa04fca0b3632ee03a359ed95df6229c6be39ec7c94c3dfec3c76a57fe3fecfd5b7fa2cab63f0ebfa075b11463cff6524940899a880ac89d40224650bb8d077cf5cfa7c6a82aaa8ac298397badbd7fcf7f5fcc4fcf20873a8c1ae7f11d8c9e001fc4f01ae2999b232dcd90fe588dc6e420d2e1b3da8b9dc9ba069cbd0a4e4b6c5b4791ce87db5e5abf7e78af2857de1e77f08ee156b441a1e6f9bcf01f8e6f9a1a1de15c2c23a3f3297f7f7f8a8cc6aee49365dfc8700b766436e8bbfbc8f7085fcb8686755cfa4ddef363e937cf91d09788e6d1709cabd729ab81443ee25f7b8994e3a0f4ba8df22c877cad27e13b6b294786dccf734f177e7b1fe60f8732760a7b7e5c18de8ce246cbb92776066b11e5e36cde720be85163eaf24fbadb85400bce95adcf85d50b9e9657150bbd735a16abca9ed7f1d14a6d8a69119add4546e77715f7f2e769605b9bd004ff1da3c56d5cc09a7db21eb371e06589efa979f6972a9ea1db8bf20d3b27ec7dc7a0d52b96419826f6fc28ce5f57930b7405dfabea7331f61526df60f748faae5e67eaa11c267b0f75aa58f37c03f7edc2781bcdc3fa4b5da7a53d5f89f318d880a14278c929b2aa730a39ce45a798c8bd07c475aad664c1b955784b6e6d42cb3d493c857cd794df75637e223d546d7b9d9dba1671dc791e16c83d252f0cae3d57f390ded126c07c37811ed8da42fe5c1824fb287755ec918a1c7cd5e0dc01ddf49d53d872b2b8351270b79439c19af60e8b2083587765fe02afa4eb83758a54178b722f0bfb23e843bc805e1b4c37e8addfa6f2b989ecce2916e881f2cc53dcef69f4816e99674bcf3cb5c76be92d31889d42f163cdea7dc3f583d8db8debe5622e18e33db17d49410f51f80fbf2ef320f95d45fb3dee3bfb04e2ada53ea4d00bea3a33f9fd8ba0778efa9b5d4537b03a67a14778f9fed2a6afea4f8affb15677c3753d86beb7890b38d3eb9061fbdade66603bed812dca0ad633b32d7efb9ad89d736cabfee507e6db25e38673f66c521e82bd5faa3462f65ae073b0ad736c5fdabafb16c184beb3579e85a684d3477b91000db17a7994e7f4bdb0276b257f9dafdfddfb5b3e53a121ab191b73252fb39726c138fb0e4f90f68fd39fe6bcd49ed59a79a8e32567f151a17772cdfc9ebcade12bea584addb186662afc81d233a59dd3c076206737f23be0970db7ce299a6a65f5f5ee739f7b2de89520d305e5c5939d36af97e52d97fc76372a311a28cd8569dc72f3a8e5b41681a3be3f5f04e34698778ac4b08ad0bc497b02ef5f5d4a9d92d693d9d96738537365b34fa25b7f8ba7c832a741e3b4a28daef8fbb86c54e5d32fb4cfc81c4a3d87eacf9a5c885bf34d1b03f327d045d8677de41eaa35956c2fcbfd50cf601119491106e3eb73bffb7dda6618d8c17822dabad2f9bc56d6f0fcb7d7f02afafeab3a1dc60493346ef2f356ad73a66bb908bc6b385d7da50fc976765fc477b9756e2b35fbd21a69f074f1dc9035d38ce99bfa17d6d9da1eebbd24d823a56fe08bb325c9ed8a8e35abf00a03701394f3c6af4fff06dffc7bb475639d792d09933b5a5c4f8dbe08bd4695eb5feb12151ce8716b1174abf81d86757e867ace81ae66f93db69fd06eb23ed34057ab6c75ce8b6997e734d462fb8a713ca5d740d0ea450b8c4f90efaca55e2556e7ec1b4e826bdf4b059e25c6cc711e66f283d8fc4e715e392d94bf7ede3945d358e04db00e3ba7d54ba3757c189809f3d390bf75f771ff8df85ec1dfb365bd15e35692c650939d413e81c65ea0fe3dd946b891a7293c733b4f93fb5cface293665ff615dbc037253c176ed1551ab7b84bf555c6ca41dc1dfe4417d2e3f0ba2dfc8fb3c2efc66a6f69aa9bdaffcb6c6be2cc70eb118e979f5193d46f497fcb88eef7dc3d664f122d5de64d73147a4ea1bbb93ffa4f176a0d07986397e95f742ad4b4a6492638405595fe7ba97f30369cd0dc8edad9346be7755e8621de75eba54e28021ebcdf6b8d77cabe4e9d2f734bf8766fc438e955905e4b3aa7e6341ceeaf445cc8de0718bcde89b711cb0f9b6035673233d5b1fcf9ccbf8975a9c59ac7181fb7262a78547715ed84f007c78a2cf1a702fd9f5780b7944fc3ea04df17d5ba719e56da6cb531fa26cdb0ab53350035afa55b94e0e185f92bd4bed7309c3caacc919e636a8b799facd7364ae74b2e31afa97bc5ae325ff3e0dc6d893737ed92f0df065c375219f1ff03ec5be3c15ff9e4d63fcfd7116d9a11337ac22ceadf6ccce7e87d3eebff1fa62f5b2ee4590839835a8edd26b26666f0ff626f405a57d4c5b13382b8b60f3199177c87a19c5d4da68cfef301fb7a9ef9ddabbaa2eb64a17ad0de18784975ab4ae7fa3eb7925acbd6c5f5675458ac17ba1347639f8d79eda9f9dfbfc6ee0ef032e499d5f7498331cc7098fc743dfb64745b64b310bc62bc1b751d21fd3156d2f8d33ab19069eca43a5dff47eebfafbff8f2eff0b7429fa744c955fdfcee95840dd71d9437939557bd077050cbd39f23afb122dd5be6088a529f98104bf03f3c72bfd4daa3a68dd9cde155b83e8790be3922d02c74d7caf89387150bf9baa3ec4d0f60e8b6073073f7533c2bf9166d3c6d26f6643d18ed2e2898edb5a9fc1b4fdf136851c6faeaf54f2d2fc719be9572ecda10d4d4d7f4dadeea3e53faafdc6cff9b3423b744d7e609c4decc146f652f04d906f9275907bd9966b3263b8432043ebe4b2ecfb019f3eae35fa82f0ffc59885c283705fe7a2cf556fb756f73deb9574d876880ef04ce72cdac1fa1e5dff8bceb04203c35c5c0b05bf9aae67cdde493913e80bbb28f52b3c5eff435ca3bafc4b8d7cc1fdf2245d87ecc90fbdfe72df7e8a32909e51c00742fc56ef4ab1fcd32818fd9fbca9a555f9b965307e8c5a0ee6e4049af1ce2aebb48f1bac7f733765cfff97f81bc34665f9161f6f536697cbfe32b0bf6daf48ec8cf549794888ae64a67fbd137b44fafd0cb5be0bbf29f7e1c0f94a34e6facd73d287b57ea5b840c7a5e1b5e342a6c5e7a9908f80bd1074fe40ddbb6fe89fd83b5f384f3ba6630e4d799ccf3c1ed9216b7a0c318ec5e541bdae501d97e8abfed2675b59fb76c96f888df9383957f45451feb7923dcde5ae1d43b51e81dab8adf1216ac5db17b50731e28365f1d6dd03a678e92b27346c8c54bc6ec203b74eb6f00f95bac385615dc369771be6d63551ede82fe73e90e7aedafa356b22e648c5557f93bc4e2c570d7d35e49c408e11f4fbef8f47cb60dc7856d6839da7f7be7a2eda1f716ba4e69e2afb32a63ef12ad6d1d773815a2c65fc4e067867b9b71173b906b3c62ada7a876a5e2ee5095b962ba6cc2d877115a1ef4e78eed887ceb7d64b618f6cc2b394fc28e13b6fe0c764f7c9794c353420e4ac91f195f3f3ecce3832dc2c1272d39efbce396a8d0e833ebcfb80e392f3b6517fea1861e01480ab04f7f45ac3a2775ef86d93ca8d6b18b8653d80c09739cf875c6a65bd6ceb38a17db36eae37bdef75aaee5f2f8d364e5bb7768b563659609d1ce1dbe785fff0e5dad1fb2be7f3ed71c7de777c33bbbf610d364e5bce51a3f7ce847ba7e2bd72cdd0bbec5742fed90ab378ebec43c483380efaf169608f33e831b5ae5d678abfea41ff1c388bcab90a01637aa03d738057996be3472cc70f7232f9fba1c767bb19d9d5fe9ed446c1f166028d032eaf783d65633a228676655ce0d3afeb8dc5c602f98337c653e5577c4ce5583e6ee5a3837e099811719e6dc229e420ae9c750fc687fb13ee13f3ef9f8130cf1a5faf29f94695df906775b44fae7bdb2ea3fd6d18b8f63270fda5efb510f32fcd97c184ae3dd88df0f722ef1059bb8ff2c48c5aab037e979c0b7703b1ad9afd60dfab3fc755b9c8f244e9b3f077b516417ea6e487e13eb1c233e589b7fa8255ce157dc78ec882a8e5123ad813bde60df7760f7b8afc10f007e12cf4c75922e480d69d11c44c6c335d6da7a5e99a3a9544de2fc8630d7d69cf145a8631d6f5d637c43a161dbe3ac649d81a36f598e7551ef983e7d76ebbb81f9a5e6d753df913bacfc48ea9e917a43faf30ceea59adf4a6b9d19bbe6e1e40af8fa8bf92b3bdf4db69925b87a53fe1b4124edbdb21b18dd0d66c2ca69b15d173e2a29726817b423b719c46f6a54dec61c0ae6f65d4dfa91b6badbd8df563625d04b1efacc339a8d8119bdbfe2ae6db97ed62d5df5afa6cbef6b5f27bffcf1efe5fecbba13695762ffe98ad4af9aa6f1d131fb11a304f94d0c86405f1ac4ade605b958d624fe13dd6401e56cb69f727eee17db16f29fe5113f316fcc110eb90e35ec42ee8aabcfa027e5e5aef2dd21beea722cb688eb8560ff5db7bd62b44f1a3a9e7877df3df1a3d067f9b511c2d4fa9cf7bdc4963acf6c56fef311f70a3c4336ffbc351f71fef168063ddde7e83df403eaac26be0da1d7c06eea33c468aef0ccddeafc46f9e3dbb6345b99abff57f7ce6ffefe23c626eae1af3d1e5acd8d671897566908f2dc684782fbdc78a0e2bf2a15f9c0fad810f1d01e7b8ac43fe55ad43ae9e75f26fdcfcfca5e6c488f7d15c9034ca374abeb15e775a6ebdcfd8724faedfaed19d681e7990360676d608b92fa847b14ab479fb072d9f56eb86816e937d649f57a1f1137af32cfc6cbbec4fa0f600f075408620ff875a84dcfb247a77a8e96149e7affac6aaf5c36a3f3fb4c79027d03931de0ef8c8ac9e4bf4f56fc78adce132528e356bd614ea09c558f816ef95f1a9f5bcb4f44bef9b51d09b470db23e1a1d1bf260a45a305e1754fb1d450e27c69ce12234a282f012771f6e37abe7fa1cff4d6478d7689d3406b67b22f482e7b9d78c8b1ea119cc3db7bb1c5781ef5d6b03b84f4b3f6c3f9bc926cead9623d7fa6b73bcc5d80dd2d3b811b57af0ee77565b4c7d7a42bd1ce5bf73a9971dca9bf147188caf03db4d13fb89d8915964bbf07b685b8d45252e6b3516539d5ed4e3793390ef84380ee27cf2a5ef1dc2c7ddca31e05b5b31c6b5c8b3236089373c036ab9d6dd2d7e2b16eb17097f3b250d678ff675cc7b2b4beff22f87a895ccc2c06db0fa08c8db17636644eed89d960b5856b446067380c5ef5dd93bdc20cca2ede4c7c04c368bc04d1db1071ab16bfb60efcfe33cdb868657c47c1e9a6ff7dd62e927db3070ec6803b8a1e4bd0df6acf46e3bfb8c02af01384bf3cfec2d18fd18f43f3be27cc93e2e0daf3d786cfc8be18912bb74e9373f93c085188e30a7660c7bed613ee04c3bef75e887a738f7fa61a0e6213b5998778a709e64899982bc27675ec2c361f778e32c5173a5722f8f5a4e3637bcc633caf6c3c0eeac97ebcdeaadd510c7708ab2eaf391d19e85c16487786895673e163efcaee64ea7f02e61bc75b12c1513e75d5327cb7479a5bebd33845c86304dfc4b43aff3d7c5bcadc6629e7dc6f6798779a5252eb9463783fc51f6ee6abd26ea4b4cbfd1ff5ed1b3a8feb5287393106b4dd3934194bf88a9027bb1c9ae88d7928d96fe673678fc89d7d7dd1f03eb13d63d60b9be7daf81bd99700c2047ecf62931992ed73c9077687a6f5dc959a4ba8e5e072df03ad60fef700c1ff8dd610e7c67e718e1292ae2c3c07c380ed75935d6d11f93b3780c8b14726dabbe26c4d4016ce1d6007c18822dd396e5dfcfd3c06c03cf7836933c327e6e653c238adf44f42ce06d09e52531f8c212d61f037a9a09f11aad9f89d81909f8d864f9cf7016ab989cfcfb46760c0d4d7e1bf5270d73f9dcd37dd0f69526ba2fd205be53d4b17da2afa08c4918feb0565fa9c403f9198579e8d6756876b78bdc2a9c428911b03ecbd4a6075c23bbd39a33de8f312d8a3b5ab559746b02746c780df53ac731b2b187fa20e81e453e3c35bc76dc1472bdd57952bfe3c2bfeceb7c89343eb05bf8ed2dc5bb60639d305bf86d8a7e08959fd4f4e12ef7d72bf9e4d0ec7d00769551fb5cd5f7609e57881955f13dac5ecdde418f41a4cecd431c0ff0d97deeb5eb249f1dc6f7698ea67edd707d15fbc7fb3c0ff3701ffa974d20e5d62346978ebe75bdbc4b7dcc3b878083defb5c04bd33f45701fe665d9786b751f54099ef748f49d023349d517c8ada7542deda9665f9548d7fcafa3ef06bbb7324748f988897f5c21fffae1b536cb64f92dcacd90736f6989da726d76fae546fba3d8fecf33cdcaa3a919748efa4fa940677b762dfe8fcd922ff7f2bbadb30ef9c9c2bd1459d345ec7abf7a92c07eee419e7c8b6f6d186f5dfbe292f281685abb1b789fe033d3b882ea8b3dd7f0fcd9ea1c5dd823c165d0f70d0a99477758f37f4af8a6c106b6b0283fb26ded1b708baa868d3bf6bfd13843ec03f4aee1f4741c5b748c605faca6991efa365b3a19351b4eee34bbefafb064f7da7f1083d2d4a7e981d9beb2fad1f66ad9fa7b05fefb23f759fe8f967e967863e4378d6debfe4615647c935f7a2d86ca37d6535c91a025edd7778977aed5df58dfe2ddec6f9b3c2a774714dd43f15fe57c935f83e2f23b20defa3f45e17eb3b0fb7f5769cb6b7f23fe45d3897ee91dad482ef76b57f2bbac7e1fae16ebe3461f633f2a53c5adfe445d06b0bebcf716c1a9e93476bc43bd3d5b651f903fe77ec7105eb6625d057f6bc823e9ad38da2a76592cf45ec2152a7ffb23abbaf7532aafb9abdd6d2ee1cca1e801a7e6b75b4ba30d5fdc93c6a68b4e49f2ed213bb57e3f37232cc3560f7d4e81c5ff5db16eba973ef16c60db72d459b27f2ad7db475d3a5ff40b16edbe922cf0ecba0b453b8df88dba4ed4a5c0268d4e3b9c245e8374f493ea7fe20eadbe1bdbcc86fde13d9f30a0681f0db73bf97c6b9f529e5c7f5b9bf8adad16a9f7a5cb71aff5006f457e3634aface3e34922cde84c719d0f46ee5b4d8d91dd4dc7bc38f53e39b415afccc00e798fa14904f0af70b7b57e630f1d82fc4d81876d55bab7118d8c40eb79a11e2e371ffdbcbed1890b4de3416047c41cd4944bb057ce9ecdd157b9fdaf39dbabc64bd1fa0c17805cfad1da8b6ec63c5c70178dd5fd9f8c4bef75be0cf4828fecb3909b0273e8d01c199067c7dea6b18fae41d42cd03f227992ed19e5c715bf20bff405c54e33fe04f06bcd3de36449c976c605ff6718bf62302bded8cb8ea90fb0f3d5c1a4bdbfbd4e97f44a7e3bc18f23f7b876530d90d9b97382e0e2755b6a01e036b08cf96facbcdb88d123f3ed7c48cbb423d088c3b5bf8e3ddc026f2a0994541aff186dfd5ea71d457896bd0acb1ef586f70f22e8faff7ef30d85473d1f1dd1f91d16e2cfd7653955535b934982f4473545ea7dd3436dbfbc86f3613e83bec0dc9baf9c667f6e6d19823faa8a86d0ef146f1febf65cb4bf5eb5e27e536b485ff5fd13de11efc9dd8d281f154b33f5de62f8fc83341bdcd4bf609b1f66ae2b47a9d501357526517d7abb87e44f5833afd2f247a2cf783bb79fb05ed71a263dcd6a1589ccc05994071ac6b748d88e1687eed53a3585dde51a075ece506b45b7b8edec5bd0c8ccbfb62aaf189581db27f805540f7139ebb151b15747e1b642ec659609f03237b5f788d1abbe0865d6580ecd2d547943433477ac17ca9ca7be4b9cf06a5ad48fedfecbde3fbe4b98f6aed28615ce8df021ee6373bfb51d6a8bd1fcfb24bceed3c6ab0fdea7606a6751ee6aaac26b6289eedea7c94b3fb44ee734f2ef47757ebcebaa25dc6fd9c2efa38c998ffdf3e5fde3fd63789fe5bc62e514e973a4a26c632290ed69ce86ed6fd31cd75a92386e06f727b919da5b1e15d6795fa359ce7c4bfec17c1388b1b9d23d656b8a72a966d97e5ca37a232fe7a06bcc62722cb897e4673c5cdf661198c1bb4a70cb58926f4ff45bca8ee31f1957b89de4de41bd80bdd636484397d27d34b46787f3b8b3f8471f07d1fd0ef789f4be61b471d6d05ff6dbd6b62f6d2413f29d06e87d8cd7e118c401721e303db2c2bc718db88334d7194008f6386f8bc12e6035d6fa293129d8cd85b27b547c55d7129db2a42c0ece9a1ae27f73b3ec6c665bf30e647ec9d9ea6719e34017fb35ff68a63ef536aaf382ebdf3f8a460c6737c8a43d96b589f1f07dfb59d74611c541c20f0452c72eb6359a8bd2c645b39cc1747868d88d7ce2bb2d793c0d9ca38ff7c1e0c33bdd26fecbd9a438eb83446bb17e709e88a0b786f9be8451f8b60b2f30dc14f52e9af0667ea14e6217f9ebd0b7038f2719a9869547d8ec60d8d07cddcf0f91bd81f65efaa2dd3b168bc11790de115cdd898339cc4cfc8709b913d47ac4e23cde2add31ef47b7be86f55daafd7819d1dc93d6f7ea749eb01292d7955fe813626e455f806fdfef4cc798ef3f874e0e39a4e8a60dacea39663119d57c19cff2cfbe5f27c50e13be75544f1e5992f9dc73b82711eaddd8d0e6fe4451a6b5bcc3566589065decbc74e18f748cabba9deef6deade1d9aabfd508f3321deafe24c1cc4da70e55eac2f9ef2f756ebc395b1576bc11f76cf2acea3703fc37954f1fba13ec3088f8ed837dd1e1f16c1f81a06233557805ddf0506ffff2a3e77c516e6583b88795c3efba59ec97a5b81bf8862be4b3928349eade42ab2f7434f7ed7b73e543c9e8571b9dec87528c280f7cefe88fa23a5bf91a2e729f157eebb90fc91ab94daddd2da296360b19062e1436f39be4e14fbf28a78dc49f96dabf311d9d695c873723e9ec5bffb979f0333de3e4fdb9fd8776d750aaccbecb9e86c9f11cb41c0ae903091285f4fd3284f10ff8de3ed97bdd6d977e6b4ef00e2278db3c49c5cc471b0da5dde8310fcabdc5f4eed634ff2fb48b6df9a6197ed88be2ce7d16a630e72de36f545cbb992f7e67df21c52ef515c67ec037049e3d638d3e400d3d8b0b761fd21188622cb770efdf16ff47b916ff77644dfa07efb9ce64b9e61effdc98a7fa779676ebbb0f677e6c87ed0de42efe5b7a8efa1e237f10ee13c4de306d226cb3b9fb0e78a36990b9eaf9a5aae812fbf43a71770da7ba2f16e6daf35b1aef976fe22a3bda5bf40bab0d3342e4a1a1ed89d66d21f43fd16d1fb123b3d11d91ae3ef95f80dc59a97f65953c78d7908be6bd1bc1c898e86dbf1fe2da7fd51b47bf655ddb1f4fe8a5d2cd128f693a6fc643c13f9943c56cef732358745c8f7421f1ef303af59dedc9c6319202e2dae21ad016c2c6dab41d63d34e9ba17fc9c5ca5f5a5b9b36c6d859cf97f117d568bb5d7eaa589f1b02b79d6a61a2f9bb6b3c8cf1acf6642bf1f7f85cd07bc46c5f50e6d17f7f0aa629db91b3c0740ff74ddb5b50814b3d33d85467208e7f41c94fcfe40e97daf7c7bb708c6da6f2f6debaa7cfb05635c8add66f3f3b45b06e3686435341842708fdca3aa8a8724d02b394b29fedd8038bd3aee4664245b4efb5715bfb8b30d0dc643c4b53bf3dfc479d0b347f3e1d252ce4cd5fe963f210731cead8fc414cf7a584406e0091462cdc940bc87d808254ffb5bf2b32e26407b47e0de7ba8fb50fc6bbca689e9a9b2979d0d96bf8d7205714c12233d49e70ce6cc79c5cdde6843b3b72f6b4e16527fb4c1e379b5f4f57e6f99b6d09f22d75a94327922f1a47abaaadac1157e5a628e8bb892f5ba835e2eea7c6db25ce4cfb17c05d5b614ce5f95cfb3f3d1af604fc87ad653fb94147aac5d812fd2b384f816ec7c78482b1b38aba655f2099dff1b6478a92313be45788fceceae8c4d2787151ff22060748c7861f4ec7b982f3b81d8b5b05e3a7faeb47e7ef3bc0ea97f31309de49f8db5ae8642a62dc42310dfa75bc7af65668d1ea0e92f2ad7eee279867a895f82dc166414ca60ec5bbd4119cbdf073e2eeeff627270d0a7582a76076aafa216b14d28cfb0d334815ec84cdf1cf1f9c74db12e9de12330392be002adbb673d36f5f8bc089263a9af4cf6c32dd5ff3da17794dfdc27e66a4bbfbf7dd6f356c5b75ac1ec865807a52d05179ef9502bf2f61666b82cbb8a52de0c4d16f7aef40220efdd69c720ff26c93a11f3febb36b554e7548391a0d44215e359b7c6564d259c1fc04657de55d6f0819c286380760af92989fd7315da3fc97d50b3cebf23d878d4f757ea53c2da0a7b7f0d0377bef49b59d4f21ab24f49c5e14499a5d080a88b09f395d75b932b20e97ecc6f22f84b8ea29ec5ec20dd6f5ccea11f4bf44f887dbb1a91f199455ba136087a6f5b8f4bdb2a5ed6ddaddfbcc481754e030bfe5dc3bfe63826ff3a782dc36b614cefd9e2df29fcfdecc1b55f78ed13ae0df1be235eebc0b5970caefd05d71e2f70ed159ffd175ec3fb26f0ec25c26f35f19bf0ec6505ffdfc76fbce37d1dbcd64e580d0fb5cbd2783b82fa32e835843da7b2d818a7b13d877c85c8f61a98ff09672e4bec313c8fb87e16d9c353bce99cc91abd0638dec1acf9f3757bfed76b70fef9fe78eee018ce1bf67bf0d1fc8973de75a4f1e4d97111386d8a1398c6797685da9a5677f5dcf7c01e2763a2b93da55f7f3bdae39e39a7c8b8bcc68fbb9583fbf56ffaed94aec39bfcbdce29b2bd147a78faed34de6ef6031bf2d4d3c4ee1471d1dd25c198accb3e5a031f4f91cebd0ffc3d633ebf02ebb9badbc01cec5eaf7b4a03482befd6e71bc8cee93e1eace3d573d1ddbe9be4df1ef95bbedf4c7efacd876d30ddfc729ae7b5808348fd4ff12aa2f59f443ffa6a5d0666e37360bba704fae15bcda8e502260ccfff62d7f0ac1d13bfb90e83c10fc0abf19d2c5e4f2ec218d8efe518ccafd668b31a4ec918e6c7b078588dcc87cbe863d4189addf2df7c7e197d205d45be07b57d8ee16661cbc9c2e0b207dd05ffff9404ee26f49322f4e75b0983d8be9c12a293e3b9c571d82c36dcdd2da7ed6cb816ef2b7919edcb04fe7ceaeb7b8c8ccb21f4f1f7675af31e024d5a8da835f8313013d8afb8d81df06c8d7e89b415075e16e71959eb34cee784df42fe52d9f3697c8afc660ab207f147b2d04e321f6a80ba9d8199ac17c1601b40ad4467134edbd7c86832fd9dd6417ad785416c180b73cb80e62fd7e782e69ed9e3dd92e6a4d131fe7ecd947bfae3268dadf33939267b3e29a29607671bc6105c608cf44cf1f986765690b5223a16f95dfcde70d6a6eb74a0fb05b55bfb3827f4e16d5cdfdd42be1b1bfbf5fc598e3161fd15197f86b8c4d2c71ef9afd3eef6f9f1e70fe4cd97d6d06bfe247f0b676f3b300f444fff1dfaedeb302f793ab9ee149bfd731153f9f9b412df0db918202fa56f1f28ce04bfc6ce3ebcafa57e8f9e211a835e4c592d4fefb00cdc2ccead03e1a9cbc0dd41ec732a9cf1d680e8119f8bdc2b504eb9a7a5e11d216e56dafad25884f1f339317d92e6abeec2bc0379b97141741b670f790753c85182f8339e078cb996f3c0dc76fe3791997906f9ed346e9e22ceb8f70975cd76b61998694ece50d44aae60cfd1fb81eeb7109b8578d833ea2472fcb3ecef8cb1c3560f7bef9ae715eb534ceca6c15397edd931617df214b9c47435f20e690e399331e43c3bafb1d9bec6f60574e077332e73b1a99daef4f038ddee5fdec37e1d76e72cfb72cbbd52c739300fe4ccff9ca05c38c58f4cb7c6f50dedc96a30657bd66e509e05d8c90b2aaf66b4de1ac7dd39d37eb725dd48f77679ae1ea1dbd25f4c7ddb0ae603ecc10d7f76847807a718fbd25774e4a8d53d2e899d1ca4afe17ab51d4ce3fde0f1a153f129027db8fb48ea13d9a0756d9ffb18d79ed94cd95bbf7758fae37d02d84cf02ce4780cbcaadd0463847ed871c7516cca85d139267676146d56baf6d7a591416deb62ddf9402cb7ec3ab0bd07422f0b236b44fd0d8ff785128ed8d7fb8d32ff09f806ef7f8271e73df61322effaf9eb19f666b79af9d6ef70da4b690ec125f1bde24dce29ff45def1bcee75b16f4caff116f4b241ff734efe7d9ff6e64b7b8ebdc289ddb1f53e0766ba875aa832fe81eff5f09b13ece742fdf89fd7c153992fcaaf41ce7e335d1af3d5c24f52e8636b32be30a7381290ef01f4b5805a0df763093261776231d128f75a73223b110f52cc67388641e2e27c4bdba3b485f819fb58dadec792d87ed667426d43a177fac3e9790d3d4d7e0d9e9e786c425c0fccc59d033e1c916bc37577e505c486e9eda3ad9b858657b03abc98f51a060cd71ef355ee017fc3f86cc6661bbf65c1ba9e62c0eb040c5dc068a0b99be439c07084dc17bb437e4f63da8f7389e71df488c46fef896e31cce475f360fc2286c2eed7e009752ed41fbabf86c853fbf34dc79b3fee5623f3c27c1aa7e7f56e35013950ea3d400fc47622f6dfd6bde2f71e5683a7f1ebece9624d9aae336b3cfc183c3e1d18cde37701afe190d85ef10c3ec68ddcc37fdd817bdd4d36f29ebce9cbba5b0c79efd29fbf9ed73d6b98c7c781f509f9ceafebee2528c7ff34f1dc5ed018bfcebc5e6fbe99ff183c8e94efe3bc41976a36caef3d59f389d7b1fca76ce63dee566365fe2eea61d1abfe3973d6e88c5ed6dd66cd58a3d0f6b671ee65d03f236b26e57a352defc97a9f343ae3f993357567bbd578adfb76f707d8e5a04b4df8f7e74db7e73d9179c6da790e506764ebe3b88fbbd58b766edd6398774ec23e8e26de78f6b2eeb6b57332c7b8fe66e35f03734cf4513e266fde7e9a7a0ea101cbb53a96fb94582febee45a529fadd0ffc6ef53dee533675e7e3b93b77dfddb9db276b339aa9f484f374e87886333267278dd77cce2fb3866b05cdf1abe7398ff88ec1adb5fa7c5d7737fa77b8bdf926b1087d8c667aba726eaccb6cd37972bdce8b3bcffad327e775fe41de33b93596ca3b268dd4993d4dc8b9d2d31afdbe32fe27d71b3fbaf3f6d364de9e93bda8a1b14ddd778136d9b3c5cd673f1639d1a1191d592f938637f39e3ae42c5f6a680f69e0f161e5d8306efafd9d306f723e3ade6ce3becf9bbdd1d483355069b317f593f48df049df6a40ae55715e810dbaf50e837eefb0f0c719d45ad95e41fdb8d7c4475e8ef80ebdc759a3399935bd17d7eacce64f17c7b3bb256d5b8e0734f4d153fbbb5f13f49b0af62de46750b95d5e2736d0cb96fded6d98adc4c7acc4e1cab9a01f5bdbbfc0bf6443e19dbcdf20ea0bbc873ce32168a7c63f12bfcd7c0259c86dbb669ad8e35d35cf885faff415e2b2d6b4a0ce53e05565ff7def727c9f9e99fe5efa223e762be7ba677f832df0e7d7046c9f7bc7d28ce4e7987d8a32dcf6ae4a8d18bfce649aa6e77efa0fc673888cf1efd09ffc8171200e6264773e96c6b7e8e40f8e81ae457e392d8c4fc8db13fdb943b3577366c27d6c647f683f701d923cbb2ec1cebd730c79ba0f6d378bd67feeac7c7b0c5bb758f8c426b5002beccf9d15f9bdf7d246d872d245eefc19fe8171e76d9c5beb457e3f7d865b270ba77f6e4fca39ddbb27bc1ff61fa34d8ea377ef18f2ec181bd9e64faec3f7c790140bdf59a3efe84fd3c33779f89f1e8b4c1b20a7eea54f0177f68fd18784657bf79a9479d47f826f40cee054cec1beefbc109bd53b267f8e67ece3267be7bdb48a3ef0c8f6ae71f107c7d110dffbbdb1fc315e9e67d78991ee23fb6eda38c5dbde6ee13ffc31fa5c06e357face7bc7708c8cf67f621c8f4b3b3bdccfc3c0ff7b4afcf63fd90fde7f93ecc50cfc2c6a4faaea9ecd55d92be600e87bd6537dbbd38c73e8334ee63b5904d0b77347f3e150cf20ef36bc46e51e299fe36b5e8638a27ff2bc001eeddd76c2d26f9effa40eb80cc633face7bc79092fd4ff23f3786853f6e2c83f06e790298187f6c0c4c1fb7c833c6fdbab0932e8ccf6dcc7b87c47f6e3d72eb6369408c9162c4dc3ba6f629fa8f8c8bad51e5dd32cd780d7216a1cf8a54d7323daf16658d21c4cb87f9e028c7c3592eb65584d31ef6a9c79e6ad7c477588dc9157daf9dc6d2f6c8339f493086fced249f33cc8613e487ad7ba72887bcda7dbc1d235e4eb9ce9b30187f847e1bfbbbd84f4781c60e037b20fe0d6bcfeb6bd0df71888cceef24e856ea2bf9592f71d7e7512384daccb75643fa4d8da5e930c5e316e23009b90bb7e26b57d63f5e7e662ce5bd92b97976c78eb2cf6b6993770ac4d11b1d4b7e5feeadb27e7c5eb836abbd58bf55f9fe86f343357651f11bcd4a99720dfdf36120d1a4d017ddee9c962def0c78225603f92ca145f44be9c791395968780f648d9c6205b125edfafad659a9132ceb41843510d78ed2c8719977f6d11a63a53496be65f19561d1bb468ccecb3809e08db03858e84f782f0ae82fe13face6252d1e79fc80d6ffd21ce443e85bc799ef3516f3f16e1138580323d60118976ce1b7c761e0a613cc6fdac52db7d0cd2be90f88ed738e6ceb239ca6d09b659e7b5b3748cfcf341702e373abaff20800e3332ce2fdd094cf09d2d8ea30302717bdbd31b9309e27ec2b3b7f4518a03f73665bd7c4b29a61e0b4d539f339cc2f69dc72698c2c15ea9ecfab3048d388f679a0f135a82d8eed4bba30306e4fafefabf2c889043e2160f13656230f30ddf838a1f6998e136885c6eb679bcedc9ded306e8fb1cbecad4f9e1b5f313f74dc8eb66efa66f67661e064184f447eb70c26648e1f919110399e85666ffd36a5f8f0b655c486077409588ad35e3ae8d375e2f1e0f615312e7a6968ef53e82f66f29ca0635448b93d88d343f6c7f0b268bd216b778e73ef1a1bd929da422dc16958743f69acb4c473e7dfcdae887feeb0bca8722fb2cf7de0f1b1b6a396947b87b1cba2c4be8fb71b1e8784f8e35a8c31826f7b9f983da22734699fab7ce95f2096289cafc3c0769a898967d2698dc86f59d277db03c00cb2f6a1912246fc3649e39cf539a375aa64fe981b1951fe04f8428075d5724e49d01573b17e81aca2796998239d6d30b7246c43ae4c3fd98590afe6ad133fd9f23a10ba7e2f149b6ac871bb92eced71c77959790e313f899f41bcff1cb57acd88f05b05233eb63be7c4bfa4893ddf4972907e77680296595ea9dbb13a45e82f0aac3d1c1f96fe380b2df7346135a5649fd7e7d568ba517a5fd3f1c1734e167e38b4e687e707d0f87d9bc5ac592ebb94c7fd16f4b297750fe2f7c34d329d35bd8984098679493f84ef7520376a1daf5e8b1ee831b1d92d7f875ca551d9ef65aad747238e45366e10bb9fd949942e7fd01cff03e3ab44e6bc68641de1a961407b29f67ba7b8ef1d34bdaaca7d537857ccf815eec3b5667f1a37f7e76374183c3eed95fed53856c4728177f8d79e54e74cbf7d64790ec36daf191bab9d547fd3cfce649d3006df9e794fd6dc9570f529662f5f1b9ed7a2d7776d8ebdbfe7fed6afce06e6bb7e3c63fe10cf3b59fa13c8377d66beb17fbefecd9af5376eafff5cb7fe7bac6fc6e7ffc0da3baea95d77c0038836a5dc8e8b741f72dcc7b207b96213723e27e694df770e680ea4f9b0738aee6f290f4bc8dffbc37bd3aad99b87db7b13ebf646cd3304def8621dce122e1ae39d39d655c745fb9c04e3ddb35c27da8eedf98f8185982993c6a5376f8e0e527d9a7f6962ffffaafe26d554de7f762007d80dd27ddc72afdfda33eb93e5f6aa7b27e44c767f0fcc78cf727ff1b9c61f93412fd30af6245c1fcdbab817803b037d7f292e4d4a9fd3c82131ff92cba2a7f31f386f3417c75b4cbdf15ca41fc4d29ffcd0e9eccfc278bebb9f13663f4cbfc317699d447ff44be58f62ce2f9c458fe61eaf555d43cd1795f75ff35ec81596de8979cdbc0643a005a556aae403cf82ef60c8f58533dbc34bcd79bf00f694d5b94676f611faee3ca27d359ed9ef844e8abbe8a4008c0f9537c8b9a49c3f8c664e34f21a95f7123e2cbfd391688ff727e87bd93418cf581ef4ebb4a7da656fca99e439d364ad1d33de0f73ef21f4473bdeaba4ecbf5bc94bc57b3c276e322cc74a6d2dcbf9a6b9db6dc14f13ef46650f03d92e9a7ee5db2dd784da30766477d204b1dd9a2276af54b7f5b7cf28cf9713f92eef7da4e3bbc2d9906403f413617510b67a2eb4f217e7f4ddb39e774ed1b7f49ffa730eb53e4f1d6a2b64ffe3fc7d34ab62f7d0b3f1851efb741d9adde259d42fa14f159d5f79c61a9a732bce8fe95d97b175b8fc53992ee648fe2d3920e1179735582febde3a323a07c86dbf53578bf01b942eb9ef1c7927ebb159d6ac12db84d7bef85fd011bc7b7a9bf76b72bd6fd11cafa9d2c98a3f4f77f33abafb427f7f6a0ecdee55a53bba1e252d658773a0d2a6ba1e258d1afed5526994af472953c208f135ff89ddace4e04af4c6b0bbb576c227e18937e85395855abd56e1f16c8efbbb6d70a39dbdf5996f8fd76e657c5d3f6ae85a9093828feb9fda1b151ae2fd372d5e4fc670b2e9b365dfc379cbc39e208f4a8f3edfdd86f3f129a1bd11459fa3f85b050bcb689e2186f4a47f16e90f62398fe43ef5bb11f8569fe4f1669fe2d8799dfd70da957925c5cba9ccadb63f7befb008c68d39ea119893fad8d0ad9ff8cced75845a23a6df5475063abfa3babeda35b5d1873c14e2e313a3d38cb613c4e250d6badc0b414fcdbd4d6878b8d626d64d4975e775fb42efa53d134e142be134b009ed4f28ed8978a0b0ffd01355a819f96a0f7f3f631f12a99e4453832ebeb7825d8a3138a906a71115bd7588fed70360876d37f4bef08475a710e703bf77fc85feb30c1cccd77d226bc965985c83aaf7bf7139a4d665fe531952c10192f67cdc8cb74e166ddd9940d78c2e159c11e8d9228c6f82b4e85d544c1b4247748f80c6b3a449c7626e3438ff981f01e79fee9b7a0fcb8f609879747fe57e2ed2776fc9189d1ea4d43328b2908df165ddbb462daf5848fd2de17d699c27d05f928d55984387e1f9015d95f106d68f5da0f7de7549ce968dfd7a690f5f424b2b423f4bdb2bc8330bff81be6b7c4a02e723ac602957e34f753629ee21bd67a66243e878c3e137ad1f6d85d3a408a7bd63d48a053a84f302b110be6f6ccefd644ff8b1129b617581acf6b4aeff395de3322766607b87d8985730acd87e0d5bf419eba2e207178ba6bba5f243cf534adb9ced39b997eaa3327e12bdafb1081c8897eade29ca85381fcf43e4d7f5ba7ad52694eb65ea69f49dcf5fd6d1d8f87e946315fad910fbae6018f5651c6b59d21aa787417fbc8b5ade21348177c2fd51eeed43235d93b55ada9d5368f6888e0335d2647fa335bbafb3f927f41ab79c0fcf4e1a73093b5892b550ef4ee5dfefe7ab3637eb9dd1269df31d348cb45b271b584c3416f1f16ed83b4446ff0979a179cf9fd413693f4f41feeb74c61afc1ce079e2f84cc44b50f9bbc8836ef2789a9ba23d8ff23d37cf22b77385ef7ef32c7ab38debcc37dea3f7e43d050defc96d2832c16e9f42cc678af879e467d04dfe4f3efccfc9870aaf52e583ddde45466733bf437fa175ba1deeebaa60f0b5b3a59fec1679a7b8adbfb06f7e4f77a9d42eae155b9f8c6fb6a3e3547f63eb00d8317c9c7f8e36f93b9b719e9e2263a2a7533c2beabe7e991fc3e3687cedf43def857996b85b45c90731bf01e6730cfd6cbbb41d329fd63270777f82d72f30dffb6ff177faecff2a9ecefbf2830f1ac657da794a7f71cc657631cfdbba9bc77f605ef81df603cdcb96fd0737739fc47768c7f74d59f0387dca46520c9bf675a7bddee837268a7c60383f74ae020f7a9f96b62bc77598421e11ea66e5dc56b1919e12ffb219d8907fb50ba7ddedeb3a5e2d0317fba42bb8eb34776c04fe0cbafe35be47eddad4cb808aefe1f7f395f20e63be8d73d0fd5a020d53dc3b72fe712dfe881c60eb2ae09048bd21bfa6fb8ece76a67952a52f85e8f1803d23e26e887cbf5c8f3be8fd10fae1dfa5613c0779b65df66feb3bd4f6117d7db7ec14da3789ee8d6e0e551b88d17af5dd45d9e73e09ba549e38a7a8c5f24b3bcd289fac6209038662cbd075fceeb9acd48b2b6734b2bd9cf030f8573dbfb89e3f0680d99d362a3948d45ff222d4a9ebe4a6e09f613a195f7fc4f5676792fdfeb45af01e7f9d03d259a7313053904714df2f4fcccd2a31b2c6d2eccde79967c9e79c7f83c71c05ff0abfc6ecbd85ff99b1bc48aa7b304c35b4d9c8f72c8936545fbe9067d8d5fbf23377eacd855e89fd26ebb3c8df01f8cde0db25f3eb15a11f5e999e2160017c96183e99e29f1a6789d96bc626e593f44cc4b2fefbce78f337e989aeb36e8fa90c92c6b6213c2967783031f3fb5a0a7d33fafade582613cfb1669922535066b401073218ade25692c6fd1eb1bba07f27d1c512b3775dfa2ed3e5f68091ab975be53a297904200f1e77256f402cedcfb8efb6697eeb51e5cfef15ddec4b1b0478e2d014792e938bbc1706dd672f476cc47136e827d9c0863e571bf0fdfaed2de2f0207fc1dc564abf7e4f96215fc906810ea51e5137fde387dfda7e525687ae23ed7556271b297d0cb0d7c2167b0008fa4229df5459c57971453783fdca8e614ef190fbac3eb34696957c5d6fc354e5009ddbe02e1913db637722f029bff537689fcd81d0658bfdffa04ee77aa77aab64eb0492adc3d6a44975d1326640f8253fd79477d31e18a58d047642b88f5ade95f08245eec19e96f280f6c828fbd2f0352e79416957f26b57698cfc1bdafc7995a7c35eb35e29a0dbc9f4afc807cc7329f786f5c55d1495b520e7ad5064d017baa1de2fc7f6e55e1f02deefdeac932ce3b16e161be32ccadd34dafe3d7b4cc2ef34ff694e98605b614cf2cb98a13e3e096bc5fb5cbf0835640ba1c6413d770bbffd3131d2bb6335f2dcbfbe9fbc3f0cd04ef9569c96eb7ed671d118efe677e44f5573075c6bde185bb38ddbabf00af25ec3bbd25c8094c80de8f7a5f84e54ac56e9efff7df61a99c7e3f23f6aa749e787c708a81e2afb4678cd24f59f34f5fd3ee535aefaeeee8d59725fb0a6a789645f207e669dbf42d035eef0fd819ecafa77e0f8b087381b2befc3f33978b492aa2d4665fb1d3e6f31efe00ef92b9ffffb9e11ce4175ee7afdba734a24fdac7751fb3e096bffcdf30bb98fafdebcfd1434c793d9533657f450d00f5fa8edacfc86baeee38ed9008aae20e027f3ffd7c6c204bf9aa2c7c3799b947e4af6fbb49726747d22e3b219f4c76762e33e834f23253c01c6fb3ca5fe458bda45a21ce6df90ec2bd5e6623c07f03b991f05f5865e1ee71d56eb06df93f98aeae712f0d06afccc80af26f5ef6d48bdd9e20230a233eecb20b2733baad8bc58cf9f7d2c03f720ea9918b7f51a44b7a7e366f6ca45d193043afd9eafbc3207c6b70579f05fb4e17ab3cdd89a37dd8acf1e7b8501b6e93e2e7ad7c4b0ce316090434f0ed11e2831cbe5b354aed107b1d3caf929e744e213442f56643cf457a43df8013395c806a51fbada2ff74bbf3df2cdb3c81bd879e37dd1a8ed93856b62afb6c9f96a85d31ec53c823e29c7b0355a2d02077d6c687732bebebaa18beae447b9b78fdf919b7a1d569669dfb6efa43db9998faed26e45cf8335dd4779c87ae3d4db84b45e45d0d9eeb5f5a4f18e34b243de0bf84e1a5ad6e3ddbea34d8955a9d06f2d9d8fbed0e502d916f8df64070a731adce5bf83ef13facbb353128cb85e86f8d8d63e627c58900fe42c4bf3fbdabf27ee19953dbd8f729e440e415f48230c9c7abfcafdfe1199ae3ebe174b10732a6fe4ec71bdaac413ea6c967eb8877e1a5fd882a59cfeafdb8172afc1aff89bf954ab1f27865544ebd5769e7bb4775e56e2484b72fb41b26316983f2f8eb311f17a9c15e24b18ddadaccb721e59f6a1abf6abfa3a6f568db5d39c8fa8d573ff4e0c85f5178c9fc6bb25c5df8fad277ece58cd9df22de04db43fc17962a4bf85dcc9d56b41f7077202f1f7e116f4906a3d93dd39332cf0d75983d700a958cd3a9b5fcdad61b133414f3d313bb49a9bc8fcefd6313418de3bcdc98098fc9c61c58b3524749dda0d367f393f8d6131d7d972646dd1470db136a69b69b0a935f395fa90b0dc176a7f0a31828e909f303e113d9de59dc97621f66463f9ca3c4f83f249b12e216af51e97f6e19830ccf6bafc8b0fed5a1d23c395686598637e907fb5121e1b13c7ca743f1e5b6a6bdf5be62b50ba15be17370fe780f792be64906f11745789df6ec6d84f87f6da61ba9dd7429d59b647d431835eb0f50ed1a30e9fac096785e24fd4f613d7e1e684d336d6863d75d64ba64714bd69e827d65bbfbb739a0f50dfc9ef33e5fef7c362c7fa28bc86d037e8cc72a41e887c8c5b63e85f32841abaf686d248be0c1ca10f80e0b7c9bdcf05c55f19f4ddecad3f3906ac4f836d150bbfb17a6b519ed76ac8f763ef8022f49be9d26f53f9e43d24881942f4b06bc87b3550beb81dad3c182fc524f227720c7c8d3627cf63372e6decd16711be0d3ed130481b03bbf717ce797060ef1ad27c94a1298fe9dd871a2dc02367d821446f885bde67388777a8b8481f640d13bf99b9646ceb547c1fcf33a1b9e0e47911570ad7f851bc076431e789377a91620e7ec1fd85e4badc5795f61e873a09a0bf71b4cc143e6f3f40bfd161cebe2bfe467171caf950bca9d54ea6cd4db557cab4b67684d215a167296e0ff381b1ca7960ac76ffa8e9e77a8ab6e366e4631fdbc8a375fd827c2d6981f003f16fb90696efb13fe17251ce472372d71273f90cda7308f61e628af91cd7797d5ec506e866ab85611dc57a0c8803aa3c2293cf7da9fb00bdfc60b4cb6b61700f7e705a663600d3e3f0df8380d3c4cfe1cb5adc4f1ccb3bc76c12fb8ab0b59d635f79ee3bb1360cff06fa3fb57ae9c2f0e833708ed368dafb8bf5947a57ce3c9c67e41dacd711ae7bddd967f7a24c63f1f714b1f67aad25f4701b9f17fe38e3fd397d573cc30c878aef9567a4fbc4f6ae31f8a9a05fae8007c9692a10dffd2cd18ed2db09f7a3f6ac0c9b6dec235694e704fbafe3fe557b6c2b748d386b6aafed92b73ecabc76b81d37175ba67ba6028d725e21d62eb35a3b9a372accf3aaa10bab97c6db71c6f31068dd3ae66e205e94105303fca438f7806713bd95f50fe579f496a0ab678c0620fef439e87f322c41c9a74c6589946b49ef637448cf52fb3ab0b1d67a017ca91a7f480ceb0a7abd416ccc719e20fe141bfb616053dddcefaea296bb0b03a7b50cc619cabd8e843185f59173553ee0bb249f8f4c3fda3edf7d8a9d269c1d1a33ca8779768cfb5ec303f929fbdb5f84f79631fb32cf10be05f5ad35fe7ca56f37796634e37d8a249a2bcfaec80be63bf13e96138279cdce9ef0c9707d838f88fdbb1e0f7f69facf13ddc5011f8e380694cdcab72b358e2063a67e3b8f8a369337fafaae7e92c6f9c3ce6956686d85b5cf023d826d07fae99ef09ac8ce364ea1cfbd0d738be8fe5fe22ac46b7206922b97dd1bc84f603ce588d829f3dd88fb6c2f19f3b323dec7832ed7aa1cb3dd61f610d1ef4abb52ad4f2c633319c638cbf51fe6b0e6c74acdddfa5ca1bda189f3517d666803e1bb89ad47d7a7d2d3bbcc67a4bdcd510e676f76d680bd157d1f06acf33e025f92d0135bb2bbe09b353a0ae44630bf41190f26cf3c1e545b498f9f07369493119b22b22f80a1c7f80fea08bd6b6c7b1fe85b198b79603a1f80ca07443a167fa37ea82473081fb65dd0491223cd5087f78a709a5cc53ecb34b74cd2c1e5fa48496762b87da720031c80cdb0d828bdefa89ea4c90517f81aad1f2e7bfdd35ece3535ca42aeea17fe1fa99f1fad198e255f09f2b7da5ae5521f6335ce62fd94c083851a0faabfb3ef696b82d9777575dc22cfc3f5d903df851e85dd9f2a4fd660c9a21c11d673c9e3511939334da25385d333ed49defba0f56ae7a8e5421f4b8abbb80ea7627fd90c7be901966592819fb1c44d011febc2f03621c623c0160b6daf21f75ecb004768e9635e2bf647c6be99aacd104fdb9a3af887d5c8ece6ceba77516ab2ff55e9bbf86d9edd85bcc0a5df3616fe650ff57bfe384d02e8638ef88fc168b5c83b44f74ca51c6689975ac790f609449f53f9dbdd72a072eed45af787d5a8c657e955787b17f172053de7b9e86e890e24ca28c29f1686053d839790870cfd013f13ffd25806bd4338adce272e6235be25f3e5ba3c73f51ccd1a9dc1e3d31fd9bfd006fdf203fb3a3cac064fb406acf47b5e092fa47d0a31bfd7f6f2b0f407529f9f873d20599dd894f917441fa0771dd8569e405f2eebc87c6e641c0bdfdda0ce88b1a53070f2a8e57c2ef07c10be78057f0bedc528f5b66d0daabdafd730365837dcb77183e84d4393c505c5bcafca7b4ee0f3e1348978a56f7ea709ba45bfcbcf6a5c006def167e7b1b629e0eaf29c4b8883cffe15aa0810a7fe7b62ee8ddcc9797f8e38f30185f590f4bc137d50f597eb75453eb64e0a332bc23fa36ad2b592f6657c21a222f63fd889b31c45bdc2cccad66d4c7dc56a22fe13a5dd036e88f4f421eec6109b9de60e3a13cf4adf6c076f7611e66f15aca1bd847db1ee0cf824f89d828ad31c3bca57bd0815eca09f5af73df183d237121d9c5f34a2e14fd4d675b247647c41313ed0b39ce40cf13f52d137be2583e9b3c2efcf12eacf1cd08b583fae7662ac638b5abb1ffbc6a470356d2b30dfe21359e735ae4bbda9aaa12573ade6af889bea6cd707e5568b2d41fa81f0ff0c1fc857faefaf0c81cb2308d00bbec5cad0fa37b43e473642a3a4f89bdbf0dcc0162eee5d6017854f3bc76aeb76b30855a1d5c33fcc65f6acc8ee70ad31c28adffa2cffc15f00e5d7f80ed006355649e201706664c759f129f88fa21c0efefd5d31ec6439bee69ced6873e3314e20f151b8ee6e4bfb25c5c1a3ba9e07cc1b926f3a3efdc522c3611efb195ec137bbc1b9829bc43f1357e2c089f65b8164de7d5f3ba3fe49c18d9cee0b99d88098d783140df554cbbeafe2136b1ec7f599d8726c32f96f55bc9bfa8e80095b1233619d4f04c3cc77ac9a4b5aa8c09f70fe3196827438fe023c5323ba8f7e3d92c31a1c467049daf7eee6612818c66df04bc7ef407d058cb4e78cffe794aee457af772ebf04c71f6e0ba9924cef5db6b83bd6def5917ab0398e28039b516e82b2fe72fd3227fdf3b5d3f917629fe60858e386f729a07e0096c1d02a3fc0eccd7eae03bccbf3d77da0f782f3d27e79094392d740e85862ebede5f36d647d4298369ace49835957c478bf06c3d7ed9ecbef10a745347977a7ae6631d7d73bf3e95b98e20b68ffc3665fc401ad7f37443ee51e408f00b5c27afb17d91737a3a4a5d5f4ae48284bffde5fa705d8b62b4dd4f37d3f9e42b3e58ae4731e2324dec2dfff57ed3decc5f9c4941de1f51cf2ff9fc9debc56a607ed4cd97f523be77ce341f6c5eea5629a31f5ebf2ce483ec457ee75c1fb670aea92f48909f3b46bbac8e5d7cc737e65be64a7eecebee917b29dfbb07b7c65ce6c255e6ee14d4e6ac5f37297f49d20fbe41b7bafecaf7c8f3c84e859c31edf8587d5dedb8b89fa5e5adbf78177fc75defcbbf1c1bcdfd3d0b792cb7f490cb2e26e7c84c0fcbfe48f0e5832fe5df44ff738aee0fa25f239d8e9b8b35f9d7d9c5df903dd863fa5e1ed5ddeae4dae086be5e5d0f55d7add22ac7c010e953d37bb08a41ec6461df23fc5dcacb207aff106a3c0f87815da7f7431f1ec2e777a2af91d8372cf7d0592f564b9acf44f76023ed4155d726e7eeb79e7e7a9da1d9dd72df92aab7f7c70dd06ba8fd84397ef57dabd02728e6116c74790497d20f4eec43a54f55cb2d06e6a1737b4f682c602bf33cd9ef85b6a744b353f0ffe9c68a7ab4acf3e35e5c1b2ba738af44db4bf1ef369676761d6e4bdb6562581f4bb44bc83b74bd96fe62fe0b5c678c853a8f809b46efc76b2f3cee87b99082fd0e78a6736eebb73b623f2e22632746f3acf64762d79fa97e4d74e6a1d913f4588ee1ade49cf07e5e625c711f37f03d641cb40f19b5dfcaf7337ac3f76457177444f725f1117b92e2bfee507774895dbd17e38fcb60ec2ffccb2cc19c199e6bc1c629de4bdf41ee3d80fcb7c68df843fc3e916d9e03fdceb7e33df6ff037e20f81d390651037371f4bf2f83b113e5de85af33f7c58ab179c11620bcc7f61e66c662e7144fe4bcfe8b9c1f29d620f8c55fa7e2beb4796df7b319a74093a20fd56e9f92279e57843e3325367f733c8dee3f184fd2ad8ea7669d31f7578d91806f64198c6dd093c99eada18fe73e6ed23dc4bf416e4ca1877ffbba0ca01fa4c897f3f279c2b72c993ecd452e5e9b6dbdcfc1e34f32eed50b912b82dd49e856cc4d8dac92175674d87e036279647d591e756877309f614a659d9d1d63c33bc646067d2f4bacf8ec1a190f9817e33ff0e79360cc9e9f7996e3cc3631c78e5e06e313d595217699e4de11632c2c5ec7df7d0c0b76be9c6b594386eb0d3af65c1e97b8f7c279047f8db4b676b9ae84f7cdec4e2b0c9c473257b1a64fe919c0ce30fbff63627746512bc9e20de89c526f499a47d05a629e9764f70b7b8eeb6bc6bf5ea7f18f4a7e18cdab14f8c271097818e96b88be18726d3f787c90b07907666f1de75ebabc8ab17fd48b9d62d271aea2be2cf73a2cd7a9bd8f72377b7beae4cf9c86ced258c4dc69b256b09ebcbe71b37afd68ac468ffab8281b2bda4add6df0d1d88afa79d9ab57d92fe1dcb36f3e339de2ce6fddb1d6483780fb53b5c3165b275bf80731df8fede3bfe4b5cdae53bf9dc5f3f1676c2afce3ab6febecd95b7352d64fe5ef80292ebd4bb7efc466277cf49bdf36a5f5dcc78dec1806d66384be43819fd7ef2de159a0db54eceb1bb47c3d77fed87a3f36eefc368faddca02139ae29bd87f08729f0be34eef70e6f1c2bb5d318d89df3d0ecad9360426302b00f57d61f90ec67e25b07223bc8be9575e3d62131ac36e486db569bc8d368dda463ca8e61b3ac4d44395aca5ba2938bfa8ed06365f5de3faf06beb8a612669c34e781afea58d59c4ea94fabd0f7147b5ed03d93e227ce29322e848e44fdea20fa68cb7ea077f3da7f4b3423d49f0867e0df9476562f625d4a85973e49674e88030b34fd93d1c38af53cd1f2bfb574868418b9ca8f3cc2fff2a5dfce98ff0e3006217f15739ddfecec9a68d7d37b5806e386aa436b7aaa8a6b9112de0a384c500be46db01f28ff1ef4785175758cbf429ff5035b0fcd77a07f34bd97fa7f37b27d6137b3c47e52632ed8cb017aed329954dab852cf72ef93cea5b193fab2ae7ffe7a5ef77ad07fd9f86cc69893c7f25899bf87f6f3cd56e23ac605f42d451f934fce54bb3130772721cfb6ccefb63e1325d63be57999fd64179678c8029666c99b057c962cb2b1bfab5a6fc0ec6bac13e8fd45634b0726bb8666f7385c3facdefd6ea517a9faaed0bf6434b7947f0ff3b8781f96d5c24f004b26b12e4716a355ecacca7ef19edd253685d4835ff5bd0975d344472cde149fc4c2487febfbd4e3187ca3ac470aa629f55d406f66a6f7ee391d6717d6433aa27ec3fe7cd3f1e656a3d22f5ba60b3987558c97519f952447d51899d8df93f05afe3c39e7d86f9fc6cc56b7c68a7e72ef7b63adf4915eeb638c92bfa8be4ff6aefabef34ae9711d4739dd9b26f3bfbb89ca3784d8a9441fd4fe96e278b21d23f394a53fd931bd70e94ffe127c0c488bd6a7e49f0fd418b2c9fc8e741e729ff48fa83fba639f610f778b60fc083d188b943c776b2fc7aed4e3cbfbe6fadc13ebec7d2bee27d840b7e74a780dc89c54cb9bebfc3437d642e977f6ffe45a806cfc736be1bcce1a97ff9175507941a9b3dd33c7cd8df3e7f6bc27ebddf55267defc2e3ff8cfcc2dc45ea3a8776af5981bf3c9bc974aef90eff2e6f993486342dda630f7be654a71e01c6ae3235ec3ccf26372e053c01319e67c59e78075cb21e218c23d2ccfadbc87f3555186f786d0b362b407bf942dc881f9e030e8bbdbc4dc804c2b6dbdf4325963af8667f465abef23e3b87506b096b8d1b6a6f36430d974a6f7f36ccd1c381d404d33df07620f9167877959fb8bbd2b56fbe1767c8afcf94ea6cf076d6c255ab7f77103debdabccb7fc36ffc6d0ec1db9ffe8167d557a0cdccf17551d89ec17a31fa11f814a2b953de6f297d20a7b46a09daff791f52cb9ff6c54ed4821d6c87af054f7b1d34cece41406cef5d9dc90797daaf1ad68adcb11eb1d8779769d41ddf5ea9e35b873ffdaafee93f7ee3d5953b7e1cdff080d6f699f03933d03f446f520c827cfe2ed68f73c6d5fc9ff3fcbdf3beaf5e887e33218bf10def36ce27ade5ef7075e4f774be7c31c84fbf9fc2d9ae5f903c29e6bc658e62aa03ec6fededde6e3a073bc78f7db00b7e8531983489f884d12e7deb18e3e1785963e35fc04df35347b1f77f212010ff1cfec898c1555a5c7327fa2fe3c2ea6f7ce57c0b0327be97d732e7183fe8cfc90c680eb04bc02684dcaf7888b3a19a28fcf6be848cd1fd9dc37e72a6ede9fe13b3c86fdd519647925c2fa686410c5e52bedf4bab309f878557a35ab6791fbbd6bf95167347b22f2347b9d65dfd3d31646e780b9fa70ef97f6b37c3fb10b47bbaf6c6477938dbc27ef1bb40a3a5dbef42f0dda7bf50b1b35dc477d378bd7a0e34a729be9d8f8bbea4be4cf7d44c6e5c0ea9d9471409d18629ca47b86530c3eadc7276297af0646788a2876f0d2f7ae43b3f72b09c68d819df05a4e32bfc817f0a84a3ca45cc0d3c41810f21af80dfa26977e249e2f41eb6e8056cb5a60866b358e46568363ba08d83b8eabcd25ef49f31f1239fce41d42bf99455bd77c9b679b675a8f46de2be207313a79869a2f610dcd8dea432f6ba4b196c7166854cd7de7f5236e7936767c0dc53948f9303b960ff36bf0785e29b588555c0d9ec7aed6557ffe0a74f5ada28dc07bf4b0759aec2bb5a76a0d4d53c4991472a6b2ca7e483852effafa49a85f21fc425b7fa15f43d5a759d6286dcaf57faeabe3506251ef9558711d3df173a6ff1ee51d58e748ef05dc9b9fabd0ee64b184c7c5f16c52c4c64f0ea29ff755c68ae0fc9ee6f668fdb9cee3d34ec37f9473afadeffcc5eb3bd7daface5fdafa4eb93f6cee1bfba4923f55476bd3dadc3599c6eaebb94adae26bcebe35966a95a80c64f52214638e8feb87f0ff9b11cd8f0af3ec90d85ef1c2f9b753ca05dc13c55f2b9c7b014342c4932bf70573ca967efb9c04ee1ceab7e4fecad27d35bd0ea05e8aca35cc1dd3f617ee9ee57b6afa0857f2dc680c5f3dafb436ac3cab904fc373a9847bf655ec3b8a2f6276dea01ffb7a727a9e6e562f05c51ca09808ec0ccc5acea3c48ba5b51479045d27dfdd302c4cf1dc733cc6f5573896e3d7d9d3c59a345d67d678503089a91eb196f1ef645921e2753693125381c739a41ad4307f90d64baa4bc2bcc234b43946ab544744711e7f7c850bcc74166d2dd36c27cab16f8dbdac3fabd913d8cb554ae7a1c31c51ce3f3f13b4f6b99a33c0eace2a356b36391f9de2d94c7a72dd71b319b7b0dfdda2e564588f4b6b2885dacd17c057034cf1ad983724e95ea8371cc9b9980b988571df39257607e9a87939fa2d9e83c9b1bd20af72dacea396632dfcf14eb1f9cfba58ec5bdfcda27c82f4913f1c06fd2eea83538ad9b3c5f10cb78847a4eaca9a77d2f32f60b53c0aba2e7fdf78ff96ab9831b7de47753eddbb72ef52b563379a38a398bfcbed0c9029d1ba7d5df8cd8c63cbc86b774aec348bb3711669ec8d4150a1a9dc5977538a9b330bfdb3f21bcfc1256bca6356e2fd881127c700e91e89fca7b27e7169afc037fc96cc6f9f8b4fb0a1e299764f4a9a6672227f10ea6163512e917baf61feb0410c1f5ceb857f394c0247ed4b9846f6a517e773996fab72def00e33c3f9c5f0866be5dbac6a37d3f3af8d1b4bba8a5aef42bfc9644628da67347fbab4b751662f41968b765176d5cadfb2d75a16c95886824c9778556d4db2ce67f2a7e705df50fbcad3ef466b9a83deb08ab0a8b327be995faf62ec9816d0ec2470b69843f3b08377343ff7c1f4bc5a721c8f0de4e844eb36cda74af97343b317699f6936d49e43285f72aff11fb343988e1784e4ac2a34e319803f45ce1d3dab64fc723eab8081386518889bd5aba9f2c4c36a393dfc566881d6d860bf7ce451e35e4c74532287d6b866be912543b3b76763789e76c9388fc3dc3ac7f6a58d7509f0dc61607d6a9f09a60ab63795c95facad82fd7b030348f5eb48346b6968d6fa847a459d8fa2c47ccd164157f1cff48ad05f2858b70c9b97d01df269f9993b6d3f4fccff527c485cffdeec2a7e017b7c8a6ce00f646e7b157f98acff4cd0a5d53327f121e95ded11f78d4c55fbb3a42b71adb8cece717155fc62c21fb86f26adacd5a6cc13d6e30054b154c4ef97fe0c659f325d2dcd78a4f87e6aed40a0e96b2fa1fd63a4b590319fb5679ed93bec3c8b7a83e443bfed434ad3b8c17d48c1327077537fb2c37841b661f135ba2e3cee427b57a5d1369b619f6145eed2eb2a1d893992e238041afa789baef660eb95cfed14daff63f2aaea271d5bcc3ef38cacb17cca36986fd0de87e66a7f4b8e311d64c6fb3d3b57bd3ee2bd70dce4ed489d9b20e3a43580fc666a07b79fcdcd517e4ee13b3359c78968ffebf21dd598f3cb97fec66fd3da11dffd0fd7b5ec23f0a38a1d8abde6fed37456da480bbe86ff81f5a27ee6bf7726996d41ee8b8df0e8d88b639526bd0273e1bd43188cf368ede6c3dc3a444f5611ce4b9a003f5a2ede93a6d5e7caf557bf1b065693d6c308fa7a3b8b032fa5f96ce275b0815e240c685e1b28e19f209e0eea85d0574f87e32dd6f1f59d94e8e6b1611d68bde16e1138dbd1f4bc827fd7f4df02ff1d9b953a4cc117da295c32475807ab08af4f2a56e681e6a32af401eff91d0655dc66c13ff11a6fe8f335383d4bc303dfb753c4553ccb6ff896662d879cc5eb7319bf50e657895f2898839fd9db54c64165efa4f4598fb3866b24fae13aafd3ee05e374e4bd1a3dddea60dd20195b13e227ef71dfd927b9d508abbdca1836f07b6cb61b716e9133785df81786c5d421ef1b6edd6201faf1388d9ec62991e983fee5e7a0ffd9d1e05e531d67bcf38d761af9180f94fe26cfd2fc6bf9d9348d713c8407ee4adc1e986bb56721d0a837580614f3c4fa84e7f4710e1cf7d4ce6ee9bb7866e6e95eee2da4eddb2a3dc7bf8df1c0e3301fa7917d063e14d3f372e31c8973eb54e855cfff886df5417816a593033d67f4df01fd975d9f5471d124ff82e22f284a7f81d06758c50e867c8d9bfe02fa2ced5bc6fa279ce2bebb8ffcec5a62a2760a39f601f8e487c8faaa061bcf84d6ae62bd9e991c53cf439973a2b18d52f65b3dde2bef63fba57d74033f539e4f153fb3c4ca8f90c773fbae727ee49eee90d711b47ac53208d3c49e1ff93e6a6c6cde8757e1a30393f79fe5bd00857bf5742bf0b18aced9eaa589f1b02be9e28c36e374736471169d1f89db92ecb9ab624ff2f7e9b0acf91af2b940efe2a6da6f409649c32d9ba7dc0b3981fca679c99ff3ce31f49be7a44f6c4379fd6ef807329401b7fc0395bd8767d4bdd7ed91ec47aa62e1845c36e31cd8fad5c9a33fbd8f0ba3f319f99de344c83b52f8cb4764343f23a3dde33db6b6a39bbc46cc6112f7eb4ff868a0fe86f391cf7d5095a5126d81fec9e8a73f52fa3594b949543f12fe86181a7f9754df2acc0f728c85bf877976246b1e1bde47c279977b6518e73c6e68f60e4bc8e310e221742f583f22e15ea0bb728f7bd730706ffa7fe4316962e46b1e43c2981a99b39da6557b855fafdb73d5af7c4d6cd7a6f9354a1e979823a4fa33d0ae8a1bf47beb95642fdc3787f629caebe621fdf65f9a0be61b4a67f9ee73093dba8bd07ff831a03a936293dde2afd877afef64e033a33ade7ff91c92b93d4ae3c07511e57e39ce0f5957bcd5d3467eefed1c1c8ccbf27bb1c72819c7bccc2bf58d7d52e1d1b77cab943662db6a45eb5478ffbdbcf7bc728cf2fb4eb1a1fdf2c6fb457e21ba97ca83af4bdf39201e6dddbe2b3e364166aa39b451de6950fdedce73955de77add731f37cbefa87240a6115a9fa1f45ab8e157c0fc6c25c71af879d639c779662c0257ca0f1672dd5219ef80e1fa94f399e0f93a84c1585d6b7e6e898c8f8bff55f3eadc37af4925e646af6bfac8903359e23561ff18d9debfe58ba4fe1da50ea072ceb93e3c98d5f5412be7306b39e7a56d1dabfb52ca86ff913de167aadb91737d045b8ec5b1c43cefbe2a8bc43eaaeeed7828cf011475e5d29e11fdb4a13da176eeff88eecbfd38bc977399a72cd96ddca722f2ff35e15344467b9f71df6d3fabf8c9f80d3e4785a76970116fdb430bdfdd301b5690b5b4e6e1b6aecd632bfdd181c6aebee0a34d217f59ca113ec51b8fc8f6c7b21f7c8a7b426cd5f57905f5297d6f137ae0c73d109a05bdd0c88cd01b37c2a02bd7fcf5211731926ae16c77cf7bf317bd59184c36a3e96a2ff701daf0bda5be7a315f116b74d918696def1babdde5fd1810fb5dec5ffc4f684fe24fe8c365f928127f52d64839e34faccf39cfdf567c49f80edbba4ecabe1bd70abff3c7cd783bde27b9374b6ceffcdc7f3ae0ba0a75dc7a0cb916d0f814fa1b943ecab58cc545fd06ec8c5d865b42df6143ee050db1e877e57b9ba53f813c97677c9ed67657fdb6ff648e81216003c83d82ab35dd8071d2ee54e9ddda844fc2b955d790e781727e4d78f244a847baade7deab5fdec8c31078c13dbe20dadf1a6b1b4a7d324b74be9d814fe68a750db4368bed55d5b735653c94da10b5fa29e72fd8eb19727a7a599887fb859181ccc55802c88853b866e7ceda84e68afa1faa7538037323f4215ded03fbe134a43d4f977ebb1106ce71e19fa11f08c31e2b632971f9ec937b4a2ab9e19067a962171c17c6a519224602e4462f02679b50d927e840ff62b509e2effed54a68cf6642db599867c7d09fac5e0be829d5447e0df5bf12ce8c8c25c3c65ce6ec5219711860eec93ecac787c477b339eb61e5bb9b494933520e9a682f421e1af3eddc47f768e398ab7d3547aad4436ee85a95f32fd21ff325b0d89cc20b2ecc7fc5fd513afeb66dd6efbbe555f0299fed50ad7f51d693c6a85a5c8f10f9258db708bf370f97605ac5df193cfeacd2c6e34eca8911f2287432186da83a194cf89825fa5e797ea4a28fb99477b9bd2877059b35bd0c916fab7553c233935d3c3daf423bdbb0bab097f29e5bef12782f8f7b6e87399fa7173f59c7f0ff03e7929db709e4deab6794fae3fccb7e118cb398d576486ba6fa0785df4a9fa218b7c9a3f5e43234cbf80de4e0e6e191d68894d7cd32ae03180ab3dd8ae156398f2386f9a4e0354e7e0ccc04f02458effd81d95b2ffd36f449748390d08dee1eecd7d570f651ee327cd9b24fbf897920512b998581dba03d60612f788e7a7f9c257df26c6225106bd9ad1cc34d13fb69abb9671ee7d93634bc226e7806f51b28ef738ba59f6cc3c0b1a30ded496b260df65c75ec097d7775ec4bbff999046ebac82fd9d4f0daf17527d93f8e916d9c2b3dffd38b206713569f5d9d2f79aec5eac6abdf1c98dd2de38dfcdd3cdfb1c1ef4b02c0ffcae62db71dd973fa1e8fd5a41e58fe36f4a49dc37afe400cbdec184e2780392dfcb6137249016be365dddd22adc4fc9b613d1df0f575f3f60be64075b749dfd9874692c5ebf21dfcdaa666ffecec330abcc6c2770ee1fc337b0b463f641d26d98775eb46b1136af6a441f847184c6af684f1dd585acb32bf8bacbf77266b42eca337ff92b1f7503fc39ee6815d172d07f27d5fd63d2a3be69b51d146bc16157796d07b6bfc11e7807f56d2bccdce94702eb4f75987c8eeb42680cf991dc3cadc299d37c7b5741e1b1ef6a9e2678aace5b8c09ab5b87a5f939fb12be70dca3bcb7d0e8fb31cf3439d167b6e5019bfcbde5d1d3fed37e6cd927e7620ef29cf44aff3cce286b9f719b5c26ccec6fd28f33df6bb5bcffff8be09749ddd5cfbfb794d793eead6ebbef3fc3768cbd1cdabcab769dea7ba2ff3fa7db9329eeeb1bdde8e39ad52ec45550ef45539a09c9d22f49ba724f7a6f1dfdfc74247bb1abe83b9cf0a1d2dfd8a8f73f35ccd839263f5343fb592db733b8e23ead6b07f4467d6d542d6e814a813e45683e223d3bf819fffc57fe77c5eb94fe6ff1c131479fee4c2738c40ff5e697348c0ef427384141d95e9cc4fa19f14a1ef0975d329e4b42c72eb6359dcce577b2e75c4516474ce71b52f404dbd2bf7cd72fd6d66774e717f54c5f254f3ca984e3ebf9ca256ef5ac5f0956237626db39227a6f607a53ee18f2fdfa3e01775537a9d9d8d4dc587896bb1c1b59e0b75a062ee15bcb3acdf1573aac5dcf4bc9d2d5a6e16421f4bc498058c2b995eb12fe4f5466c4df6c97d4446fb18fae346e8bb16f694bc5d9352fadfdd2dedc356195bd51f52d63d54f611e3079bd0001b18e8a9c6174cc64a78d4173d8d282671cbc9c269f7f7ebb427d0750ad861445f2773bd95a751f204fa2e81ce6ef5ebd3e77a51bb39481b21b1654abb623f647d77f8774abeeadade36cebd4cc22d90ce21c7ea22eb57e94f887bc4318900ef08f3dd71bd457caaba78cfe8e3be790f1e9f2abec29277b7d9192875dd399def5ca8dd577098a4bd12c647f9b83a8723ad6d81e7d47c20ed386fe6f9096795c77a362c77a299fc57f70b9eabdfa33b6953c4c4e77be409f5acb91cb392f7c9013b3c6e88fbc5f790d8e47f527e14613051e202b4cf6e991b8f3880859c237683d7d1fbefa8b9e33108fca636e7afe4311d8aabbc613235ca1a3b95cf697bdc97efa8fab4a0bf454ad641231b69ff8c92afb1f375c07a41f53c53ba06ffa1cacfbece7f20f4c3f2f7c19702fcb6cdeba34b7d647360341df9d9919d8797aade61625c692ce81fab6d48ef778ab3422f6c9dcef05e3d3e1b5fcb9f03bbb967f2bc3cb3cdf4eda9fecc4e728c918867d731d83be38352f35cae3779af1e07a794fb800fb2fa4bd1a93f977edb011fd9b7c604fd1efec3eb547ee3debd1378fc76682a3e46faae2160e4afb4f957ec9ec123e07c3d70ec3c2a43c87c662daff1dd7145c233ffb9f5ba2d0ff4fb283cf387e92bb0db589f947b0f895dc698d13638f31af8a8e5a6917826c49a14bbd358f817bab6f32a3fabf6ef3d25b675e09825525d576723e5f7e6d5b8f1cd5c6dd663fc769e1acec7049d8f62c47eee8329a74b3d4fbe99f745d6e02cc6f4f762fd0f59cf11c5f546feb713edb175e887a738f726510b7a269da26c9c55f0136c2723322bf47a27e8dbe3778ec4b62f6b0bda59d2ec9de2e2bc8a8dec00b1191e3faa8f6b86728d4c5dff366d8e87a4679916c4a722bbf3b1346a6d9c5364bb93a835aac97fef407fa7c878a8e615dade81f63350e4d5ea4739f7f683d887e3b5e81dc32021df3bbe99ddcf81dd398416bdef71b71a9917c93e789bed0033616e77aec3eda6cc4932bbff16bed11e988d55645c36ecbe9775f72ce695e862bc2c1f6a5ee671434c64302567f8d2584cc998a056e28cb68e9b457d3725ef67f6684556eb7265587e007bdeec5d97fe05ea24d41a7c618cb49f445624fd0cf923f8139dd31bad2752f3cec51a3d46e7e5feb59f427f21e037953e69618fa91f4e1ba738f3b3c07ccf5ff8496fc7294a5fd7cd6fdc1da7d0fbcb43bfb94f2086d63e257696bf4de5b1d7f94893dc3a2c7d77180619e01e39add5766876b76fd324616b4479443f0c54ff16e50bf3244b2ab96c145f98fa26851c0f2a03cbbc779e5f9c7b79d47232c25b943c3b368659184c78dd143b2f226df27794f4a07d86c87ff0e14d2b39e747cdf7295f441925613cd05c8565e034dee602ae1695a7ac56b29a4b6de9bef3b1f0cbf16a657d95d7a9f95c79b4c61ed902cf17fb3c721eaef70397bfbbb69733dd6658fc14ced8c36ab1f51a44e6411f403bcb97fe38a5736844458ff0994d1838806b37e07cc02de5cc8736b6c8f5f5b756e33050c63214faffd23367b2f3cb7db27f2776a18b49d4f8b4c57354f153ff01fa15ce9b2293790e1e932b3ccf4fc81fe363a174afd64d88725ba945c55a1fca8785fc396653d7f3e2671e6328f7ab5a83c5cfe315684ca72bf03abede61417469daef06ef57643ac51365f245f5c5b17cf80addadd373d41ac9f248e76329df71bef9aca7cfdd03cc36d85b6d1d6e8eb821bd93d4b798e66f95bd6a29a688541f346e0fb7e3c622701a138c29ed54bbfd9fd552dcae29d4dcf74ee6093e8fbcb30f4df44955fdaa29bf2f30c223eb3db1d4e499953eed2a7d0ca4dcdef991dd53f2fb875dd0027aa93c53b7cf823e23ee358c57d3fbba23af41b3d63fbb686d8e21c802619fbeaae1b872cc9674e9b7893e20c98dea7cdb9aba0c85e6b7234a8b1a79c2f28835e793d68dc8f2b18f3a5ee59b76962766ba59fa0dec6165eacf37f34b11fdb0da435939f7b6bb8f54faa0cf123a527cfe0f2f6ba1b7af9d7d0eb7ab3de050e1ff83aeace01bb6abcf6c8467f4fa35f759d2f90d681fc2ba3cdeb24731cc07f1b6b7dee722f70ae8d3a9da2b37e7a89b43fd18d176b122321fa83f27df7bac8f23315b6750839d40633d6d15ff43aa456c6d8e71cb4de3ad6b622c75a56277fdb39ae79a3a11b1afb7c09fcea2cd27e8303bf56c531f2eb5b5ca5c2885c6ced4a6fb5dda49ab83ca6b883d17531bedb9e8313bab2d8fafa1af43e88ff764fed57a6bcea774728de90595ba039dbfbd86e7d5be43ae5d68cbf228073d8162b6de5523acf2149caf55c35b70aeb32a8f517144d373645bfb68d3a1bdece15e3526416bd1b8adba8fa60aafabe28170dc5a728e28de07e71b09f46354ce09d33f347cb1f2ad7bd709b08b89add5b986c184f61f74b22877b318fcf1e97e98cf41cf1bf4c71f71ee65d17ac3742f966b5dc167c7dc09d4d7c14751da07e23e68efe1eb27f6a4bc59c7f5701f1fc1b3fb23323a9f90dfd9da1cdff2ce29aade735ef80facf683fcff4ec56c8ab7ec3c6be5cbeab5e891fd59bdaca57cd00a6611b523c8b70ad0653439a4ef7d5c0bdd6f805d2fcb026d5d9b50af26c4f365fa223a421478d7c4eced16d0dfdb3a0ad8ecab85dfde4875dcd4df087d214bff6c79f6d5b84f39df0aeffdc7fa65b5b6a45ec7e4e3d1f735d5eb86802302672432dad980acb50f3dc7a579b2ffb08e44e283785ec91cfdf36a382534d6a63274b31a1648973add90f15a1cb303b267f045de88b8a7c4261df4935d645c32d19ed2e8bfef1447a03c8b022ff0ecce98ec776449bf9fd16edc9f2203eceb345aab756a8a4e2bda38377468c0aee7f674351783e9fe95319b1b3506c8e4f5278edf3dcd7358bb22f42b769c3a979aba3e72d6b04ef52bda817a153bcd80df957a7956ee89c06f6fec4fc9c7613eca1c6b30836e7e7f7c0efdf1feff47de9bb527aa6d6da03fe8bbd88aa17679a9242068ac1223dd9d409618405d658bbffe3c73cc86d96152b5f6d79c732ed6b32a02b31f638ef61d495d5509c4d6233a9f23795d3e83ad4f14ad73ff84de95f322f5b988c29db729987da4e9c2c8e4eb1a7375421c9c2f29e3ee41dde4c7f8ab18ef0be3007dacd15d5ed3f3c46269d1b35d122d2e9856a0ee2d47bbe89eba15b95319c9126c5170dfd1b86816dbecd8bd75947076c227d156a27f07eb08808b7efd5abe2f8f4182f31979ec413987869e7dad1c43f512c81b916a3b73f721b337030634e8721adf3d6074e9792ac1e3ef6568ed1bdcb7d48736c792ded3524edf0f5d0c441be7c8d53d6b739da53b076a36c05db6766cb4af05ce8f26b58e1dfb9c58e313ae41e355aef342e2ce882d92d243abe32a7624ba66aa9fe39fe123736b06fcfa75fb405fd1e6521545d66bedca6fd44fd9d0f6f8da68a36fc4ffa46f17b5d5e7da6efb417b40dbe1f0b39e383fa9c4cfebe01847fe21af8355da97c6dbe7b0afe4fb16af373a3f8b2e0c2dbc669a71da3c4d8df4fa0837c674e01d12a302acca8ef1feabed87bfff37074463ba3bfa5de3bbc3e32dbfb9cf63656cff6bf2cc9b2be8ba1cdf42fae805ea76b5324db7ad8ce8551df2ae7eef10bd22f911f28c8747813f7f71bcbab5a7fa37d6ab37dc3c9eceefba3da17af884fa4e8fec4ccc7695660f7bff07642153b54988d86d1dbcf7bb882b65e133cc702d2a751c9121f103ae1fa4abb4586e628e78a71db88b27d8439edef5329af88ece26fc178fd9c7c6a6e1094aac2d191fcf0fa2417bbf07ce70c1d6b769fb91f606e9870a9de8f9816c93d3db7ac8ddfc999de9e4dac307e71c6c98f8dda5f46e20ca7c1d7679d07d3f8b6d6fe9dadf27e19360a748968cce5b1b81f580e639fd13d1c297ed55ddfddf3327f85887c901e9d988a725a1797f2c97c3f830ffd39c1fe5df924dd78d3af4e3766e822d81d4faba805f251af7de259c72d7992379fbcffd038f733d9a59dd477ce2c8c9b2349fa341e77c4de80ac70b7177e107cd1575cf69382c93f0c6fb159436704e2a7e9ff72900ae316e5bb02349fdeaed50c2b744b60f74dfb6cff86f894cc57e937ce372aeec5dc895bdd3f98b58cbeb46c85fe17ee7e6407ca748ae5cd4c32735f77c7825eb28e5377b5bce2eb6156262ac02e3a31a26f34d3db6a5615e8f6d67900b61ce76a033ef85ef417fa6cfc71cd61df91ee70a6fe3adf9f4ba1cfd4df46e74075f63c46b9ef9b636107f10d7eef9fdd9dd4ca91dcf3a223dec3cdb6df87c7bf315c6e56d67bbf2e65a7b3ad65f784ca6298ce3cda5e3305fb79a712875fd990ef6f4fab647f360b6faf767f71b1a6b9b9357de7ec078580c81f9fab1477db6b96077d486bb992dc74fdc7b7bf86e3b3aa13688cd96cfc1e7cfc767b1220f6a2a61fd8ef8bcd17b5cbefaab28b763995ecc67b77b1a5bd4e85f127ec135c23544b85a0e8ff45793e44f401cdec7fbd2bc43aee52a38431e2e60898cbfff658d8a47bae103df641bdf82634948ff1c7680f5b84e0187ed2460c3e93004a3c148171fc8bff75766417d6e393ee2988436e62d382e44fe661b97041ffbb9a795cbc81a76c634e038bee0b48e00bbe1473af00fc9aedc7b0619439375c426b0dc106d6d2e011f84f1c5e3a3d8adcfce689d0ebc0f9c77d0899d71d560675cbf869d3106ec0c619d3b6327f09d98d6c31edc0103c033c4767007fd477038b7fd764fadf12eabedeb7af2ba4907ee2647f706a96b9be11c5b2463dcf1f9f685da876e88e333dec35be58726e4ff27804378fbee62fae8c2a7eac6fcbcd3d831ac07627bffdc8c8d5b953548f60aceaee3b11a72aed53bb98ed7cfadf196ee576e54c7d41a6f91ac943b36603fa1b9c1ba38c113e0be4eaa2ab7aab61e0bb10326f5b0898d15c6d11894e7b866753225fc23f55cf1b28c10bb4dced674a2c196a6f6c7160f868f5dfd9ddc489ea6997d4347d7149f9ee22581cd80f52fe0ba49dfb4794271e855a42603eb2b9be0b330b572ee7cf5efebe880d6ef940fbcde2cbc15711d1c11fdd2fac2241e77c7e2c19799d46fff906e25dd61921f9289bf57f414f0f9ef379c5e8379f472b34bc3ea3c8bf0775e539e332709a1e6e352d4335227a8f32fb4310bbd431cbd9ee07d2b3b48b10acd3accf7bfd30ea92fbe9b0a7a373736a7a8689b4a0e6878fdc6db7708edee3d03ad5d7f0fb56350db4bf39a5478dda5f1f6d2c1e82b6d9ce2ba2ab2a68fdedf4da5b58beb612f7786a71f5bedb938adc3a7d3da81ba223d3a6ffa8dd754da1c28c91ebb8db722ded7ac1665cfa9183b279fd96f9adf8e7c1c39cb851e245556df8a775c434f8c91a4fe0b4cdbe02b05df85d3ca3aae43efaaf13e8ec657a4a741aee2647e489cd5263562e6d74e06c1318e3cc90e4cee50c2ff5a9f3789455e8eeb35d63f31fec2e4f5c0cda39f1901ae5ff146ef8f56e752fcc6345e6d3012f203f038aa5ae01713bf581bab4d1e8d36ef75d0a480251414545f5d1b419559829fa248eb058c01f1e5389cff227e7b3817995154e0e36f867bd9478ce4ea9cd4327bc57976481ea6f50eae723c692cf30922c7ea683037aa3277368f6862df718eb5f4d4159784758317eceb6039124807c836b366d4a8efbafcbbbf1ebefbc6b5bb24edd69b8e775dfedd5fda77795f955c37291af77327b0d6a17d0f6afb9887c17d3a1937e960fcb20e937a668daf593dbc2e803f5c37d9c4bb642f88c6890c407c183a5914784acf3f2475dc9197afb6e33b559d6cb97acd727bfd3607aa1dcb2be84f6c9cd8df406309b4f52fd0bba4afff729f47583610da473a889297bf45ebc4c688d709d6ceb5be8bdf5b7b323e98bfe49379306fae4d2cb7d29a73a30bf96e4572b0fe76b97d7a909fc264b1ceb97cecf9bd3a7e69acec1b7ead7d188b96663e3f838b38f481dfb7e790dca5d698d226f8c91307f24c7e921ae147ded71938df55dfdb8b7dcf06c10964cbc9b8caea391a6b9118abcd3a7a65b18cae933448177f45f76633bac97948996397d88e41fd9a663fadab1eadcbe8352bd5ff36990fd6104308b53e5bfbb2cecf0636b4d5c61b1079e67ed0d8f8998c3a58873ec1881b6d7e82fd00af1f8d0f9aedc6355ecbd566dabeff0dd396e273fa88a379e5727cf087c6d7d1e66c12b9e5ebfdd376212655e75702fffa72b4837a4cb5bd4b96d9374ddc48ab5b605ecfe962bf3ba6d19eb6316dd8f80e88965fb79fae13927b1eaf1139bf9c3d83ad018cf9f93b3707eed96fade57f6cdf4f71b4f9df9a4f3b4695be39997ef437b7c75df3417a779187b7dec3b908f78b1c072fc53f7f46f783f193a762b8707e7be57b265f7c258f433f663d0637be576f55b2f34352770f9dd333d99733d66b4c52175fc10cd2bdab992becbdf02ec40c6aee4c68c3065ff1901fd7743bbabd3e23795b6d475fef146356c0deb3f6900e6392b363e2675f9c1bd1cbce79681e728a8d64e5d7772bc3f1ed4897db91fb6707fdfd9706d708749ea026f208b4f98fe6d74b076361df985eb5f32fd9277393de7db86fedbb5d73f32f195de7f6df7fbbcf2fd757904560ed298d7f36af6d3af07ba9d1d7cf0de97a13ff922ebf38bff6fd7f364787b413d0f324fcfda773c5e711cbc8200f619f5287ac2d9e611aaf89f4a1c1cc42725502e76b66f1675fb6e120b92d7945ef820f05ce5a6131f96ef77ae6e43bddb74bc2538794c72fd8fbc97d5677c980a2be49d79bff16fc28488e9d04bd6405ed605e1ebdee81c66acacf85b923998fd2c251dc17eddc5729b691913df27f67ee163e9bbd4fbe57e55c7606ece17556dbfddc193219569877c0ee343677ac035f41875b5b57ad2ecbee8d263bcc2cadcecaeed559d4cac0b3c8bf784d09e754c8af6cc71991fb76e8bef40be0f5a1fd34c53ae9d155cf24173f4731007a9ba9d52fd13abcc13d4175dacdcdb58eadef0c62d3937a5573b2557b6efeca2cb3c823ffb2246707b5fb16daa85f248fece9fa68ce8a3c26931f53e00caf6c1c6f2f681cd4e7f64bda77614cec2efd2771739fd534a4f1263aac7185f76d8a68303ac78a0f63fe9c3a41916ec17e42fc15520e07b551eb6a8690b61fdac3bfe82f1231023bb0f4abdb59eb17106b749e53c33ca4602f107237e8effb16a705cb66efa47ecf3234eb35dce525e430d0df67abea9cd4d5791df9a6d64747652acd18c1272c8e8fe2b176f89194e7fb787b059fad3b296f336bfcf48afe7e6beba341ac95333c7b8305db2f5aab4eb0c339dee5dd09eead5fa378c2fedacd8d615f404c6cd9b8566f033624058b91cd8de6e53cec1fe7cf41acb6e453299e5e976dbd1ed22f8c83e287c01e3cbb5c0d6338a788fed877bafd907d2ec45f3fc4f3bcd2bfff85ffdee3bfc9d9837f830d65d3205994fcfd2ffc3779f783bd8bfdf630ee2bfdfb5ff8ef3dfefb8d7b17da2d69bb266eb76cd8bb6dbb03e0fdb8ef93eb809d906079205e86681edbedd05d37db9537de7f89e30f08d6728b07d7a446df4a079b4fcedbdcc9eae109ece58e7b741db791ea206c3f5b7fd7713be981f95389bf9ff68178fecc1a6f5f610daf9bf803783f7956e21a6d221d5db33aa8d751512536d8b0aa6ce79b727c4936f1aaa4ae9e92d05f64f5f09a445eef7d595ce27a7fa4b828d83e89da6a31afdab9e4556e8f9b244c0eef4e50ae26de257382269f94fbd4f0fe9e51ac60ebcafad28c55bfc691d7a483ec6bfb81dfddc764dd48ed81a33b216393781aa9c504b5fdd74e5024ceadca06af7a5fa57c6f7d76b7b018178fc819b40e36f95b88c9298ad449c6594572c6b0efe81cc37c722a435cdc6797f76117d9cebbe47ddfcc18eed1aa9559d89c47bf5c2b3be1b6b253661445e6ac76535e0768e37184781b663bc2675ae8cfc57a1cba2f2a412767765f382b54df6358f592fd1ae49b8cf8c167bb7913f737fc73537dde997b29f7c9b0d81ff7e9ef72fb519fe8b9a64f4187db08fb968655190af59c4bf5398f73097e22fb981bb6993563a8d9902c711c01e09644c9219904456a913d6fa8bf7edede17adad7f8beb64830cda64f57040f908f5519173c5ee56b8430672ce258e2d8b6bef1e0ec859b27b38a66a374f291d4710b333fef75fed7cb6dc5d8278ef3e0e6ff522f2222697d118aee7de06fb5dd8f9e7f079982fe709c9976bc73e26a5dd0477a11f7a5f805d51df4fd6c6a36da9ef687313dea9377cacd8898eaf7d2778ca1cfb2cc7e9811c6f8d6e9c3f50954b5a5e44d6e54a65e523194b336373d1d45c7bc01bdf1c7b9b603dff53de48defd9fe48df4ee7989a3f95ee225ca5de25ae2fbc4ef04670cedbfd7f476546651e27ee91c5e7c52fb7fb4f3eeff9dfc1ac76170b1f9e49b429c031ab781df85988981df105bac180f47da53f3a2115d543bae3e581b5730f0abf7c9e284e8621de667af9173c4924fbfc5985e9a6fc978026a635eeae588295bab2b9b27f966c7cb0b923e7684b88117665f1eb2fd936407c683add12e85f37b73a9cfe4d3f6eddf1b7768653c2d68d7235cfed65813af91e41d1e4732b49bc4a8cea1a5ee0ffdc677ecfb1aeeefbc9744456f16f68bacce0fe9b6ff24c4e074b5bdfca3b6cd476dafa33960abb3b35f57771fb09e957d68d2814fb0be7e631c9177c91d1b7c96eab91cf673e77648eba0b5ab749ced7410f452a73a27cb3eb1af6407ce1722df7597acf6abaca27e1799ae37bbdc099e72abbf4d075e9944ee4917ffa0e43ea2fba81e368913341c2d91363c55aee3f2fab01d2b53e53ab65f5e111ba75d06fc7c71126c589df3247b5c0e6b1f640074bf8e1a92475bbd4f70ac49ee7cdfe4c6b059834e0ced6f6224770ce655b6e5738a9f907c52c4c6bc9fd5f6c73a447ab3185397e2398b342f63aa4eb2f61d9bc4a649349df7bf43ac387a578cb9c0cfd73679eec83119f839d8069c1bd805526c2338bebfb96a9d4972be2599f1486250186f992df19878bf524ae2d909fdc7904736c9ff6aed704896b8913876c6534eae73db477757ec0fc79b90fe40be81396ab083f8efeeb951f56263b399b2bb83c8f9aabd89fa23c1f6adfac03be67c5772908e444ea3ef29b94ff1ceabe2f0a8f810991fda08ceb913345f1e83b4ee645db14d82ae2bd8496f03715dbf361e1a4ba8f835511ffcdea939aff25ac0be69d66c9bd541b1be3fa8d930c80fb983648802eddf21319e989d59f65bd271e7cef0aa5dc3b717e12ca1355cebc62e9eb9ffec3eeac6606bf7d114f61162ad64faf8e278686ce4e7e351da4ec1e6c46839015a761e9d6d1d4e028ec3c6d83ee3edfb728cf4f0dd3a7c22b82b44afc0cf2e79e41fd7a159913c757a4f083a5e3a01bbff90f1f20a68621e47fe7e56f78b77ab60ed903be748f42b4bbc774a825742fc28568fc90d6f4662233d336bfd0770aea7f71e2fb7fc127d1af2dd7c253a9b78b74e49be0ebddfa60d5d13f3675206485f6dcf04e695bf7eb2753313344ede6fc1eef9a08d61d2dcbb07f45d7b47229eabdc85ff6ed7b86cc43506fefb476b3c6df8353e6ad698e5e20de2a8babb93792f1d7815c957eca73b2c0f25e1829c45a43f127d7e32af32c76ee2c8afd249a5f882e38ad9805ab915ecc3a35d1ada87742bc78af3b6034c7fd476a08f23f6b659ffd4f6c3d907e2da5b10d93bc776ebd350d4cbc19e0ee75967174077b4f43eb9ff378df43ef9bd6c347aff91e4601ddfb95a29d8d7053c86e8fb37f3559573c779e45fb27ad8035bfd73af957d01f7a2955367bb792fabc478fc380ad03ee2bd5362f2abfbaa8db5198a6db5f13a1cb677ed09f2742b73e25c7b31ce0beb94d57d218c01ec3487accfdad7619ff7d64ed08be18e93bf070c04adee0371cfaafe334eebfc08f500381bc38f8e79e8ea44c159243c263686f729a289c82fc45a4734d70df254318d22d9745b90b994380e9b5b6377427242a136018e61027d19ad27cebdfd48a04eb47ba277da548cf5c43986ce77243fef094f86b3395d8af23c7b37a4ef96e4dd927b57f517eae55031ce91eafe341744870941ef429267a18bf37b4a216ee2f624c8a9ec3ef69a24b47f3d8a23ec9497ac11592391fe1eca41dabcfc76ced466f19539ebe521d45e755178c617e40a4e662671363dfd9c4332e7b7df9bb37efe1447a5e54382ef86fc3e9d6c8eee44c5c8c5bc1f6484a754ea13e7c0811c60cacfd4bcd8f6bcfcd88e9f5c6bbf4134093e50c8f3453487eef6e222e60110cc93c9663325743a6dc666fbfd71f31e0ec5b510e85bc24320b6c5f7679bf815297f2aa88e67be0a382564fd269b1b916f09ff5901dd123df0a0f09fc9f8e995dc456c8d39fd51c383aeefcf1eb147f36372f198b6a54e9fa43205e257644ee6d3cc22f3dbd27f7bdcef1efc2e623d13dd8797c7d0f8a3f236dba17301ff6ed8bf77dcef3bf8fd20eab178de54ce5a874f7bbc7e2fe7f7e595ae25fd77c3fddee0df4b9d2ecbcb4f74ae263757939babc9cdd5ecc04326b90a4cce58a68305963f2adef795a3df778afc5279178c4324cb30de25d7cb31cb74e06b6599553dec75c933f8995ea621df69e51af29d56b6c1cf1ec9371e9af32319e7919f82a3a32b8c4ba111d96fde147f6596496c3cf437b3489d2bb6b92c399b8b4c0f1aff77ccc99c14ab226931dc5a9c03f0836dda5c30866be9dfa12ee776dcc451b6c1781457be2ec101ce118d037044bfce32ec5f53b5b68de69d02fb503af11930d602d812abe135ab2b03f191593d17b00ab0ed32b0d3dadea64e50527c34f9f7b68603b62f26a15da64e7027718fe6ac2eaa38f48f4934bf4bef6eb9389a531c9e686cc121ad732b1d6c448c077b78d58d9b1f33c560e3edc0803926e1497c6e2f26987811f0e20a9f8f00ce5e12959c6dd26f92b05fb8ceb0467b914c005f1374b0ac2ff878109f34c97704cb747c91dea1be58b41ee8ecd2bff9353bc5a1d98fc39b0d765162effcb91c53ac558ad32aeddd77c576cc682bc4fa3ee0716d053b2d928b01f796c7b0cb91ace18ccb7534bfa68e6dc62447cc7586e774521e5dc7bebb1324ab605d3ae6f227694cf5d4aa20df05b59541bd8d793fe3f020116d4d9d2192951bd7498a78e05fb2ddeb2675aa5f80d7037aecd820f1947c7ef8476a98f77548302e9d1be22790e74cf2ea0539250e4d33376c732afae30e59cf3f6483f1318eaa2a5168aebafb4e75cf9c5bf11e06a552efb8cdd1916de46ccdb8f84c316681fa07591c20ade1d4f687ceac1bc939fa448f12c64d6adaf07be7d868fd0ee9cebfb88efd111bc33ee0ed1ac3735a071f393a2bb40ea4e35ee20630970f6984cef4fc90935aa1ae531c08af839ac7745e3f6af392d62b8c5f8865c7da035c014a5f9de33cd31af690230ff93cba753669fcc47eba2c0f92ff968d43c2764334c73fdb6483a04eeaea03ea7f2119b19e57ee2487d8b7d4b96e00f7c81a7f4b22ef02180fe10ba9958368ae1ac45125fa0a685ef16a788dd13a4d4a31e791d4f0caeba0416358b5369fa198c7c230f745fa85f560fcfcdcd6591b1a49e4a17594ebb0b0bede06e32236aadebbc6efe619f4fbf294b2f7da3c7e5d3d2edd5c5d5ddd6724b3d1778387be2336d659c4de5362815cabb38e26ec41de8879a3585ecedd98d4c97e7d56f20a64ac17c9f6a01deb43bf9d6b8d074bc73ee25c4ed927d4576a74f33c3b1d8c71ed99c66cf3d5315ea6ce26f2b5ba00380608e707abb13ff877a9fe0ab96b07eddd38ece7adcd52a9d7c2c58a45389647cd6bc6ef6cd878a16664e451bff95ea3b780bd7409bc97f8cef0ddb98f43b3447724c148e5b184ef9c5e7b9935df1ffe27da3702253628b89fc4e738b694c5f448cf693c29fb7ef92c3d97628284e7aaec4a65a3231e1bc81da22cb2ed8c393b643da87fdc79ae80172b3594b434816bed859c0ca7afb7f391479e9104984e74beea78103479bd3a11de83e8fb9e4f3ce2cfc7f2f4dab1cf8973ab48fd66010b2f6b46fbac1ef613638364f127d709eeb9539d400716b0023fdffb2f9f0b6b0432a0a2778ab181c7363e073df7e399d5c6d5e54ede0b659c707a9e04dd98b571cfeab9d006c4e65957393e50ae735111ff11afbfb336b281f7112eb936eafe21b14b7eecbd64e027322e3c9277e5bc0c29f6519e7fa2cc9fd93b31cec43a347b6983ee9b393aef3dbadf247749c6fbacde9f5f36b3b7de26ef213e23e7d3c35afefab924bcf74319ffcdb57a437a17a86b867d48dab6ff902ef15c41ae3d64e81c03bdcd857169cf9f1ee352a62d8cade3d86636f08bd838aa79e72d5fbee658bf62fbd17e775ae493579d3d11c71c4cc6bd0ce7d3edb389dfd64520b915af5b7d1d004a2ff03d6062994f3a7b26ec8bf89ea97f0fdb22c87bb707edc9ef993afb308b2584713e41fb1db8c5ccff90847dac7b469c1d456cb322b633740ef46db13bc4afd268a4b3c16ab0a0d919c0b4bd85f3da815bccee6e6ebc65f778dfc878df3ac78bef2cd29eae1dc5266e7d6ac7c1b44c69757ba5f449e9ef48e999d2eb8cd26843bfd1e03d4b58b1421d0b07e99649b5a2ba35d6b7b64974382491bb03db99fe9d7e5a7b68dce81e3cc575f06d1d068dd7e0daf03a9acc8c6047f00c1fb5db8ba3e2a0e68cb7b25d075d72713442bbfaf340f1240caf7aafab2adb6afd2cd477a09fabce4f01d8bf386ebbbd4b481fd5b897297125f8bf6eff058f7d31af1203dbcab47db3f7fce2dd29b57e0ed71a2b3c0ffbe2bf3236f55cc9bf915a6f3da84ba0c9a5e1c6c1d709fb9bd509db8ebebbf03d9f43b8d763efe37688af00ecc8d77c324fd7958abdcf780c8e07edcd769b96ce743e348eb7669305c625d2de910acfb8e616aee5acbd3365fe0163295bfaed188b9a5f44efdc6b6b8783f8f400fc1d88dfab356c54cc73b5e621ce7ba3677c16de0e4826417bc5e8d7ea1fd7e189c8a181208f3cc24de762d2717b3abc45e91bc0d0723c748f6fc07746ec2024de86da3b841aa4e27affa1acabc1764f3f5e5a9db2b5c7e8e4fdf36b44f0bf9da7dbe39a38e4fd36deb6b5e1686bd83d3514bb2cfd701fd6bca3b246fa61ab3a2e77bed30fafe379297edf21fbb2efdf142cfa2fc912fcbd4cd6e1e955ad05f15086a0738906203f346a4d1c5ded20d04bff8bc8a59db53d7227386504235ae71fa6eb04b66fb50e9f2027bcca3e641c6fd68b819eaa73ee7cdfc4e1fc03c906cc9e487007a8ff435e93ff37c9fe7ccc1db6bdb6bab3eb0c1b8a91e73afe2133b07d8fb365916f80ef303ad7e9c624776e9319d5375697e8535e3014e2f648ad34c9960c323fc3e99ed50c5b117c264427a03606c936a5cd5d1de3fc3061fd489e43ff9058fd360fefed1fb7d5e6d7fd93b606f34b1e791fc952c42496ef287fe75dd215ce6713ee2b1273943b769318418fcf1920f4b05b3bc37b6eabfb26d0c097ec9440c3b83d5dee8191efd3c1bcc7fb1c881c6a26d1eb4e67e34d8ce2920d3475a9813fe74f3afb0ef9e6941a499d19416f1675e42170f74d8231b9651b2b994bff92d4c93d8916276c93d6d95b3fa353e6f74572d12f34f6598b2b4cb12176efcb367e117cdfd671930c36fcf7043b2237a71df6e847f992713d2cdf97adbf3333826b1c7948473abe2fc775560f4fc48f8cfdd51d39940b6887c6427a976452f1580480d39d1abec9722b95b800fb9e19d52e2dd59c41dc76bb0e5c7c03c9c120d81314cbdf9e1f00fb99fb360ded731eda473f2aae31b1db7dda8e556ce3127ca747f7f9e5f09fcdfb68f967eb8bd0f1cae1efd11c95b3f9f3f5a6b117f3cf3f34f662fe7cbd69ecc5fcf38fdfb1178f4eaec37c430c9786c8d0482fd0f8a2ae58c6803a438adf86dc6f8806d476a75fcc1bfe4fd101c3f165b4c0c624d3039be79fd044dbcf9fd105fffd9fd306f3d1fdb7d2472b5f903c52be4ed76ecef9523fd72b94fdc2b1b72cd79bc4e2ca7b25c5ea7039dc226d6ee392628e433c4f67bdefd8b85571e469d654f8fef049fe92d2df67f12abadae45ff7e9d2bec4b960795ef77ebf588726c5bd56ef6cadcc42727b159985d833e43b4eaef3e0507fbe92bf457cc4aacf6945f4497a16b47ad26f8d75b4a33a2a2f5fe9c6fc685c0191d1fe93e3d2c97d8a6d42961d985ed0fade703d52721e58ac10b65fa07de0e3425ab991936fb03ec9f093381987c58ab6bf115db81ea2b3554ff9bb87c64ef2f719dc4fe6056a9c6e0bae4f1a93c7cb596ec7385a1b4efb5bd63566c0367a38078c99a0ed47fc96c4ca72b52f84fe19a62c9b2f8f7bda1167f2e97dc0ce89fe2e203185f8371e6b7efbbe1cdd5cc7ab62c3ee6748f70bcdde3ab48febd0be430e8f332fd22de0dc374968dfe97d9bd7d51df53333823a81f81ea82b7b5f4787ca753cd37d7ed9e038a81bc4c1248e902bdb7927315903dd471266538bbf43c6afe27ced92c89f2551296344d0df814e5bfe37166a75d37e707c875fcbb1e7b913efe57aee6c4ca426f6cf6604384faf56b9f9f97c853adf741e3fc498bc5f789c349607ff0d36032726e3045e82f463520f88d2caa97ac77962bd640b75af34baf497de65bcfd9331e09891d03ea4ecbefa52fb6f58fffebd7e14be4968716d0426e4a94dfc1aeeab4947bc925ceb0a8d51c55f426742a2a7f125ebc17ca4b8bcbcca252c949533bc2f8dc01463f4782c9136ee53c1b9988c6ead9e4bed019b4397ad937cd3b4dff84556e7556ee9be116397b2ad349789cb61dd8dc4334c620688acb7e771210459a98d43dcc7d17cbf0ccd5ed6b39bacb6cda97d6aa693d16db6db1c66d698fcbba4ff6eb8df1bf43babb1aa918fb4587ae21e7e40cd8a50dac797ea94390a4ecca377f7444681f32bd56cfa1c43c5f1b67f12030ce719dd8b70fe39dc3ba8671dd48bdafb89c6b384f7f610138ecf1c9c7da1ad3c9a2359f12509939fd48746da47ed964998587189be9b233e28d486ca23afa1e719c66c043d51fe2c16e900bec335c484b95777faedcab04f496b43d8e2ba6d01fd16db86c0bfe8d1dff871b4354880fe307de7d1bca2f5dfbc6d8cd6967c5bbdc561bf92782a8effd460beada3f9cb1ae3bc55a25fb38dc357e3d6e91c5632dea05c078dc6aee33edef4b1b6691d54890d77ed316e4643d7b2b93973f1ab3b9ff195bf2657310f13c7ae421ea2cc3fa6da3684b8560987c7ac92d05f26e1bc481d5ebea735bbe4bd15f906ee9fcc076ad2f8d5aa861a7a4d12fa6f0423889b23c74f38ff675cbb0427a4932eb9f3fb2ae1ce727bb41c6f63110396d596e3cf773c089aac22bc9eee95e27b2339bf621f02be25ae9d161039c9af126cdb46b4f75f2eac2dd6a1e35d70489d05d4c041734d908c0ff1e4fd2dd29b097fba24dbf13d0f21c7e7cec9dca4ae2aeec77782fa4d906146dcd9c7319fd4eec9d58dffb7b4d6dd3aa6a80fcbf7399143a89d1ef787cea87c8793384012e34773253af4ceae7b5c8907ecc4afdcc7b57becb0d71cbe8285afd7c3884ebfbd621cb97a58be33bb58f92966be7e7e9fe8e0934efd1bd6726ad92c0653b7eeb22ecc6c017cbb01911f5ed858bea8db8beb21d95aceb1a2dfeb6c1e9d676b1e87d5f9f775e5c76382bc7fc87dfbba1eff9fb12d3c1e17b52facea614ff63d2bb121faf55a61beee77da67d478291ec7d5dbce2c9d6d8cde17fe321d2ce438d0e167679ed6e062180616ad77abc323207806f41dea1fd6e6c8b97cdd5892bbd2ca4880ad48647029c6fd9b3bf19b3c5c1d493e87a827ddf718679ad4a653e8b4f3b9409b5d7dc8fa4fd77bf25e76bdf793da9ce571717212f936a0b2b2b256bc9c87e549bf4a4a6f4bee95f69bba3aa64e50f26b8cda89a3e0984f5ef77c9b534d9dd458bc5f94daa8adcd4cd4c7593e24b64783bd01e377808c88e3ca9cea4e6472a90ef4e640300d0a9c7f931f135c9f1aea0b300ceafafb058dbfb593ce597e58361857b151d5eb30285d24835a4fb45e1fa9b157ddd1bd9f848ba33b995f5c07e915f35fa45fc065a7f164e8fe4f439c1b955be33a8ee6bd04cd7157b1fee228b9ac43be2e20dc6190ef08f97fd86fd124d1bcc7fdddaea588a14dea004b31b54bb8b33166fc7d9c77c9b92206c7a8003c751c43dbea3eac963191b5d11dc3d5df263a075fe79ddd55c4462ac8fa4a5d5b886f6cedd1bc0e80ebf1036d1cd45ac6ec9b4febf6b763417c883bff77cedfa4a9b72f7e971c52e756252f9476d41ae492bd9ecf4b7da88fb6ebceaf5bb7ae1c7398b770de5692cf89bbffc439b46b86f688a76939c78cf100892ff0f5da7f28b50a823babbf7e17316762e6a30fb8bad9bccd43891f2175d8d53ac20a1e8cf2ada4bbd4c3066c769cfd0fea3158743c847e9e8f60c3ebc84da1b518e01ba11603178bf079edecd13fd6c5c5388aff804e2e8eeb8f7473cc176c246308fc428e9582188d3af888c3db471e425eed3241fc20f2aac4a6f8dec13d5961fedb1527c1d119e6813baa2fa835e5a796ddc621eda4b6db7a826dad0e7b78a071b691a13f2791512ab1b6e45bf19cf48787e8f31822a2d7b0f8f687fc2232707c11b16f1f84dc40a1fe8810b7d2e16779d1f859bafc3da5c6df436223557fcf138b6313e35ff4e37853fd3d58b6d4fa86a0eec1a339609953db8ff8ed1bfbb603a341957512b0c954d2deb475ed795bd4b4c59ee6e3b8d9f95a2f47df69adf6d409cec9c0dfff68c6876973e46d343c6f61b56054fc02ad9d04ec8cfae71c6fd0bf27c70669ded1c64c68de1331d76650f377446b7d303ef4487f827386e49567c1eed3a1d32cbe380e24db3f7ded5d6a7f0b28becae763a73e5ca4fb7d71fc27a41b3f781fe3e4f7d8fb34eeb1630e224e7eeb4fd08f5fc4cf9fa7726c65b4fcadef581ca5f25dabf711193638ad237f9cd6fe8f74e01f925db9f70c3ac74ca151bef60fcd932377ed668d64392768dc897f017f8ea5e2aa609ff8bc9f0dfc4bbae4b034887f25ebdfce485e9f2dc7bbd4189644debf269157030e8433afb29d0f670730b9a2d74dbc0b7ae47eadd29d7f7c0739deeeaf23afca003bc0ebbd873006d07332663f5d50ac8d2cdd7ebf404e8431eca7ce6213d7ab4d5c07bd9ccdc7bce4d6f8941ab0464487a0580b5e3fb7880e85f5e14d1c7915c6d1586c10df4ac2792f9d949b244aaa6c570dd6a8ffe518e95be29822f73cdb9aed78269e09fda3bb798979596a98688e68ffcec980e16a94eb68fe91d5410fe2afa2ea9247fedd9de4fb2462d88fca7abb93fc9287b712e9577168ee92258791003a8f09f769523f95eb46d2035fec9ec2779de42cf976cec49e3964fc16af91880f43706d487dae8f77d98fe3d09aca404f3f589b18a386d6788373fba66b9fd6d1277ac1fbd2fc488ddb11ed8becd7c37a8eb64da1b600aee946f401fcfc8ce476c0f6e3fd8156016b20613c309ac2b9f0e621ebd35aff3cee79affd373d6f5c7f693dec4ddbb929fe7c92ef7404bb1fa9df8af748b16d5fe27a0ff603a8bdd0ca6767798f93fa69df3917c3fb9b1bbbcc732836d125ab839fa9e32f080e02ef43c43187abe131b1c797acc16b37b3c6077dcd23b08f0b7ea2b8f6c6f90bfd1e74c8f314bf77749df2d0112bb04b22bf6b4cfcb37d2adbd95b5f2d1eabacf7b7df52dd929d3582c954643bdf8a018f909d7b4237669d0e3c1bc9a55382e3fa66dc4aa47b4c97e67d1dded0195cb0dafebbd77d523fc9d82a7b560312eac0e17324ac27a961983526e6971a799ec8367c9c1ca381598df50e498f22fa0c7f9ed9593d339bae521fef758fed6e24171bdd0180f14264f8e5783b335e37b9b1da6535e4a3036690ebbc6c703dbccd261e541f98af2bf53a08ceecfc92c9b224b3eb487afd84c338a33adadb1e72bf3283f4b12ce57dd3ef8d11f4d8fe49314c7a1ec79fb376ed882cfcaca9ed87752c4ecf57f7569cdfc37d7da4df111b11b121923a86d41ebedac4dbe1873bc92b6fe041ee50665425ba5f5cc72b0087dc999bb171ab241e81787385ce82440f5d76ea3add2e843d037c09b0a13c95af8d49f63b397bcfafb2bdf4dfec7b243bd418778a3bc35b6a537df00e6d47b0abd2b804a2bbf0f114a8adde8ce8b6688c2067d6687c0ba6bfc2ef80b37952ecf1ebd0ac7ca73af9b5795778b3f49cc631d07b8bf85efa19aea55f6446f003ec0850f3d4beae23bf489dea5bb2a4be10b348591dd231f90dea90b2ef3c03fdfd1d635177b42f7e8fe5fbb79ad84dac1ccbe2166077e37776c115c99220e3ad600c44a7c576118241c38d01e3dc780dc4b813db09c88d60cb86bede3ad7e0671ef95556423fd86e188d0fb9631fd7d1a19a6afae46817f63334c83ba89fa027df1fe53aec7b69343e4ead4f6a8ddec75faf35aadaf9a0dee7bbf4ac0b0b50135bc1de51b19f259cb42fda00e578ad15e1458013a6fad2c04ef5e85e5073865bbe100dc629d95ba84bfb46f6e2afc915e3473dc40386b52e35f597143a10bf6b7184138bc3c45162abf99c7e52bf499b230ffbdce07891793f45bc3768f90ec10cd0ac83208770f883015d13a2efa279041873f49fd4e077169a7a3eedda7e160bd0c69dbd74faf805190df8b79f7e89ce55fabb60faf60fe90adbf2d4ba5801aecf053aca1c701385e70ff12b5bdb729bd33237a5670a3613d143343e1ff68e822d07f66851f6d6e62774d8d2cb75d8a3770c3d1767c4cfa2a5824744ef33a879a0c58422cf6611ceff156b3ce178e8746b6e67dbd16d76773749687facad31c86af2b9536b148d1ad7dad33ee9efcab96fcfa37f48214790d486d80a3521c4bc5e8dcf89e723af0feb21b7b23bbaa3e7f671c7d9131ede81911cf33a69e91addd718ff75a3d81f1382c9c5fc556a0c51a5e08848fc4cba9f24cc36c6374ab4e6bc0e3edb1d2ea9d1937263fe781db87b36c855dc7116d7f6f3cfe8f5535ac13182c642a6810b3f2e110381d76d179be996dacd701dc3f77a784905fda6dfc625d2385aeaa35da1f924e7ac29882c0377ca3797e112e6e81b684b91e3a8fc0672cc7ee319b4d65dfb0d6fab492df3cad7b3efb08d779faf2fe0f672fa258d855b903af7624d477ca7d1381955676934be455d5d7ea84b21f8bca5332fdc7f2003b0fcc84f7cce2d1f916bbf0998969aba6cfdaed84631e695e39b0febaaf1f1d775704ca2799d6efd23e18155c2d738146c4c1b0927bae33e93f06dd7a476ff14eaca3ce0b98fc6647335eefee09c496b4f686173403ce4753bfa9bee09cb57c5b63a412f22d873149352d4a39eb9fadc4e55e33871051798fc4ef1b7f32ab7a57a10e259c7b534043996db7323e8917d157cc848ae11ea85d37e7919afc54c91e598435202b604e7bbe5721308fe01f83d9ce121ddb5f4d1caf0268d6ddc6b6c801f1cce2c67831568eb941a7e95dafe858b436e6d1cdb629744fe2235aa734eeea519d6e9bfa5c6f034b5ca238e2f1817e97673f8b37551f5de7598c07e68c7b47ba531ceedd8389df89faf0dc6fd8ab13f0bcd15fd7b2fd7e7c477058daf50ee55e1ece0fdf3ef44ef3aa7a17d956ccad74e1b2c60d3df56695f7ba6f699752563b96e32c7e6f39887ddfb31bfa43bbf498d1b5d3f25f72335cc5e560f8fd2d8290f90f8211b5b83ee5188c13086e77ce25d521bd7d2c91a7c7e7e2835f619ce58d758ee4998432cda9f8e6545b1a43e1f0bf64dae907e4a6a00c9720df1a3fae8aec37429ca2632e678eb0bda4f97263ab334c6d14e6bffcad3963a1e1a77dc3d1eea1bfd07e3a1b1949f8fc7e91fbac69186d59ff60fb4fe267fafe69f512c39c2bf9533fc8de3ddbb245a7cd3bc7364315d5170cc9f494c28d14f715d1af5bcfdd8b6b489d6fa87e64cb29a364ebf9f4e166d4c29c81338e6547376d4316bce2091d1f1d835674233be9eb2a7b630c7d33a24bf3fef39d92eafd0dfed5efa7afec1e93acceed7a10be1e705e8a5ea9918a97a06e834103fd94bfbd86eb8807a4d588680e748b70ebd7b3e71f7381f5a8a7386bb86d2fa68e8be0cb7eb3af8c82df3571255778c1958a2b358e6e1bc9278f125aef74722cf8b72d8647e4dc25786fd47f42fde3fdab0f5e85a83d6d67889eb43aab7318ef67aff18936bb0de628def99137ccc2016a154fc51c4a687c67c86f3cedbf39ce1765d9d1abd8d65d4e913fcec6ec6fae615c7043788be1707d587a8c663a686f77738f0f4bab5a0470bf2cb63190afba88f64dfe02ee0efc7ee7ce9e176fd01fce7e84e4ec3a9c003792c0e82d336f12bc8ff1ca0f7dbfe397ca323c5555b12197d46f0d6d89d46fa9835fb22724c3b07df319c912a1e2c36716ddfa1c623928f2abb9f449ee93a81817d41d7cddbaa5ab9ceed101b686c1827713df17bd9e4f5dbac19fe9d454195edca733af0763383beb7ba448eb9cf27fe35bbef2fb3817f4c26de3109f322b5cc8fd4e85d52a7fa4842f39e2c87a775b438b1bf03a1fddd3af2f779e89e6363789a19875b1e06cdfb92f57b89ebdb25de0e4f249efb920dbc8f9981c73fab0ff7c879fa7bd6276bfc827f97ef183f4a401f856f49ad132e169ec4307a15f617aee4f7043f13275f90b36d3a319cc9f6acb5e701e90e73d013b1ad59fbfd2adb0515a727b57136e88ec1f719c68b40ebf68cd63b1fe48d39786dcc4b566797c0762faf1fa3eb6b338c7cabfff2d6eb9dde608fafa7d7a68fcfc4e4f504efdc47f7d7fbcb2509e7a778d9bfc703ef904d16a718e9d2a08f9afbdce91f695e1c59bb7306b5c786bdf7685c093920bb792f0ecd8f2498f732d4c67d2fc9e4e63d77ec736c046ff9c4c3baa436af3faff0d9cdfe2dde5b6c5fbec97745c77e71323b8e355947732f0dfb55e25445ee040bf45e1ce6381fb09af7d2c1f84a6cb1c4ae53dd711d4a7b17635de32d7786e84e29b9f89443d6f3aba4b6fbe9c45f64353e7ba41df16ca8b6ba7b56bfca7538d16f689df13abcd0b6650cb7ef17f705e2bdee49e4d2b30d7c3009e73d8ef79273ed9b19f62d41fbf9a4ba52bb2cfed687d8a5b8f68e605f990457122754a6c6bc8fb154c7a7382a376bc73692e5789b84c119d7b03d5589352eb206ad3d9dbf2f8ed541fce685611365dbf1311de4806b940ef233e9ab97d541f503ea0825108f437eff48075e83ffc67af8ac12b0eed87ef9345fc6466b0ff3c271ec9379133726f367ace8fa929a4af4fc05106b30fac6ee88b2a55d7207d1bb87d8dabd0fd77aa17175a46693f741d65bdd331bc7dfc01d013205d695d06f38afd53ea6d698d0c0b84c22bf5887370e27969e6f32a74f6c59edfe427c5b83faf8e46cc8f8868b3c5a009609e2ddeb0862ead0188c7588d6168f2789bcde3a0ceeae33045c50522f0df3613a571b789f88a584e86bf2da89fb047e831070c7aaa44e0eb151c15c489e0f60afa49372131bc3ebfb725cafc3e0984c201e0472b4d433326cd6617e486bfb48d7e5e792ae29e2a3d56e1d9a454aee10013312d33be37d64ec9896962d86349c27f1d937ca8330ddf1b208fe9df86ce9383ede35ef505d4de89bfca619e7b5b5c3e0facce9607ce7f12b34df343a3988ef2fd3c96d1fea58412e8de6d7389c0b6bc5ffaee99fc42a0a7b427fd3e6b26319b55d43899792f3cdcd45a2d54fe64ddf55e9d8017c9e1ec4b070b2ba104fe97845660425a209c2c7ae713407398cc38096fd34b41e903276b58628d88db8fb4a674b526c52dcbbd8eef63be740f2933dfdd892da43d6e86f3a1e5c93fce9fc6edd04ffdcfbdb1ee60d18e2db31d800914e9639f679b6abf83c6699073d677580e388d0f8c37e950dfc228df0fe438ea8d1075f6142683a718655663ced726bbc8fa3a4427b900402ffa1bc0fc9e36fb9639f32764fb4f770ee542724d3c461ff0a7ef21788673aa7f570d0d640a4320abb735e98df7c2bd8a2d8fdc8ee29d1c7f7857b8cdc4b15c45b497eb015b7bf0a9f537c62ae52a39bb4fd21634056b56e6eae133cada3792f6bc64d1e3e6dd611d62f484e25eb9fde031a3cdc6ab653db957447fd3b96886dc1db5f908c26ca6d4f92cc08b29e28ff6df5fbf048fe136406c9bedbfa5b5e91ce74488cea1c87372c832bf5cb36851c2342dbe6e50e8a150731b336f0f3223148cdf1ffc85ee8d645cae35b9abaf5d5f984094d409bdd72f787a827c0dc5eaa531a06e51af1d7409ca71833f5db72bda06bfd90dad1adab42e34e076d3eefd99ef9100bca72c93bcfd00f45772439ef5f9b8f22a32a762c3cb66512e615d4e9b686ef53fbf43eab7abfa6cb228baca7fdcffb218db6663e6dcac3cf667121f19b0dfe86e41884762f360a81bf5259326b46fb6469ee66db71e6d6f3e33a9cffc2f151c13d73ec8f24b86e714d4ee29b0bcd435e074d66d838e68f9311bce6e96fef4e6245709f50a7316b10bf1a9fd3660c36b00cea1baec4bc715c6381f1d7ac81f8dc266b28166d706e755ba85775481c24ff23f9b1e2ed335497bb7bcf9bd65e3cb1fb71783b2475556525c4bf16592deba2da77f6d9dbcbd19dbc345a7d77f27223f9db378a0b4cedbd64ffe610fbea0477e92e21fa611fe26721c701c75a5da635d8adabf7c9e2e83ab74336f0abb40e9a19d52b5e86dbf5767fc1f3527d4e39c7cfe858e2d02f899ee810195b9cbb6397099199fdbaaa52c7bf4f2d9a737f001d2789b0dd2adf2dfec6352bc6ff66ed1bb476c6e999be2bcdf7230e6fc7b8b63fd63d36bf7d6c207d237822f8eb97e9f6ba499dea9e3bc139895cc6efde0cefefe916d781d7db46599b12bd7b55520f9b64159cd6e013106a36f3cfdaf527fe2f32df23e2cb49685619d43a8135fc19d7fb0d1dcffb80f665d7b913347ed83fe4cf7ba9be6dd24b22cf4ec3aad7ae2bd4b8c7f3b7bae7ed5a6cafe91db9cd436fabd85288fe9f2c3707bc3edfff6edbef3e2f38f67d25cb42383e5d9a47c6623ed5b3c1d643934bd1e6d4b17bfe833b27f09cf23f998e9746606aedf822ad1fda6f835336f1cd378213c7c55df3e711f602f27ba4d8068a2f07f56607180783ab11c4619272cf017b605428d80ccfdf3771e4ed7252773cbc8f73c0a60bfbd77c5271b80124468fedd7c3fe6f6abb36b4cbf7ddc6e140dde1433cf02eb310b0074eeb684e71b48cac19ff2476e633d26fd6610ef7f46c093212f848b2666c334c10a7823c9774e71f88fcb0c172f62739baca9ef27597a45c7001f3b38d63050cb2689eae032ea61362504ee84ce40c1f90fe0dd818fc3929d2b5119811e71b277e35ac830aebcf780ac41dd3583a766e79bb73ddf269383bf629179f436e668fc670410cf3aecff9d4202f999d492433a703ffc2ec0dec7e4b2e591914b151101f811cfb223f2fee09aedd46eab572f708f825b83b6f7be5f8f8f108f3af63f2ff04b074b2ba1272e770bc45729e0aed0871342ddf075ae4de6bf5945b0e18bac921895c290757ca7f7b3016861f6c0ccfc9b6c58794f411b47f35ce91189e138ce9de409df24f6c71b45d24ab039fb68a7fffb5bc92dfaf6a7b8daae30898b994c723be4fe81d3041995fa7dcfc6cd85e6d7e6cd9bfcfd900dd4b8bfdac7fcbb2e6781172183ae98fefef53da43f73cf8b7b0cc01e79bd09d1c9b09bc8cf9059228e94d9732fe3ba2abeaccebbcbc1d88c417e05c22a86f94f46635fe9baec7aa0e7649b4a1394a60c70b49cc339629835c1e1b964365ff21ae2549ed8044564d5f839e1a5f2ac9b8ecddaa87f6e604b29d7d6ca2e5e89b9cd3cd72366a6cf36b6de78c26d11a1fdd09d86f89cf99c8ddcbeb268b822275403e6e66021dd133578a31ff580f6c206f1f704ab05ea1c48f3b5e9384f62f11e70fd6b4489ddb256fc6d5bb53615ee5044556df4cbe2e9212db88e3330023d1e7e423298e477ebecf8c00ea4ea648b66372fabc4a9df8ac9157c9fb262f9b5de27aafe494a57530a03ec4a98364656cf3e5dfffeb114f05f9fa13be0aef3ce4ad724c1a190fa36d9e6fb1efa778fec7d6b75b2ab22ee58b426d4d252ff8abfdf48bb511e8e6c4e6a1896bd3e60213d9f815c9cbc05f23af89a3724f7ebf4f97a37fb5f342f442ff6dde33e776c8adcd25b26ff769f39dcb79e530651c82ffdd20be7615fa7b843f44792da9c9d4f240fb74d0c6df47e3de3bf5833605a2d183e60e41f4c1db8d943af884f7601eba5b9cc9df7b51af67f598cdcc095251f756ead4637e6369307326cc074479d22d526dc882fecdbd8bf8d7bf28ff0def1ec892226e06772f0834d2797ea49c1518df37caeb447ec4cdf96d2ff05c1657457c40040be31be313a2fe48789910f3df495ba0532a762f9eaf8dce246ef73aab917edcca782a56421b8bf139dfd6ca0a1cc60dce11a7f10e34a646e84f9acbcc1a531ec7eff157e43b457e4aeaa73df79e7cf6f1fe0af2ae79cda3f97e3a916bfec1f8199d8b7b89f38cc1df46fd8c134273a28fa25dbffb5e18bf7086b04f07dd5fdb389cffc2381b5e5fc22c8535fa41ee7ecd7800bf83dac888ef8fd8c746bb18e2668e3bb1c6bdb0dedfc43b5cf49fcc1ad9afcabfcbd9e1b6669d1ac3ccdd56627e1477ae7e6c059959b3162fe8beb823998cc568223dcd282a340624ffa4547eb1280623d65192c813fa85b3fab1a7f22fc80989e363df21d8a441263f2483a089a94facd2d323b3f5ff0774904778362dfd9a2a9ed46fd1aa269e07eb8197745bfcde1c5a3abba4f54a8a1115e293ae10c71c0e8d6425f29ccc322f491d2bf17af48e9d89bad491a78919d17d64bc7e3c1fe6ef90e207b15e9c84fd433ec1f97c2e922d9f471a7f8ba403635c8671b6f38af765a179a7d4ca11ad1dccbb73713aad1d6ef72ad61eb187c7d420b94ddc3e47c6ed920e46fbb51affcfd9f4d038b931f54f1cd69cca8ba30189291463464599c9ba12de7115efb2077b43e963d6ece979f9bbad0bacc9d5b60a6e0e2ca601e9bcf8df60f760b21660867acd7e37055cd3d1de0d05de537bc29a98829c00fb6d65e7e936c3b8a4ad9d528e13009d9bfbf680310d37054f67b8ee1bbebff9df718eb8dd244b616ee29ac97606d23e476fca18f96704bf91adbbaca7babcbd7747f46c88112eb91a3b23252e56b0a1caf9cf4b26ab7e8d3ed57a088a4ecfd308875d7b729f5f302ee707d5fb7b27fefee668a2133b5ac747b33a38a583a45a84b7e39b449f1d796232bf6c92b07fc9ebe0b5dddbcd6ebacd047d2cb3cc2a0dab1ee175481ed825c663790be982596d2fe2c82b52a0cd7e91ee82227de1f759e079fc1e733e778e0fdcf9fc3bb39f727c38eb097e03f4bd706618066187fd6fda1c451e6bd905e191d5fbc46fe2605c64b57d927437e919d818c5dffa0a4693c4bfb0defd1579f28dd7c9196e84baae5c3c8e549753b187caf5a2717c96a04f98847f8a7213b681ee79df0b89cb12df136293c4760599581c473b971f60a330117f796672006f2311ed43e73cecb7677937b79230b9647560d3f3aba5d1e76e7d91d0a672d6e9ef53a7d4d9b13ebfcb949a819c4f91c60e025f6cf79efe4e6a2874de0d5fb80fbaf6e12bdff6d3ba423ad23d0e6f3f947b85dc21b29f752aeb860f7c6b1afe8ffd3091b7a334c6c65ff5148c0d62db79ca275eb172ec260efbf74e9a20f19fa02b816f07d788e5bffdb4b6019d5b1d20daaec0d748e58f2ff98dcb8e3970efd7207fc0de8bf72892874d24bbeae6a5d10b211e0bc62bd2427248277e956d0b11df5ec19b19493ede2b9645b8b12a35f0798c3d4ba633ce5ec2f9767e2ee9d85b5eb06067e777d756c1e96812f98ed89a9c9e6116d9647c7c5f16bc5db3c8ea5c390bc4fe59243bbfca4aecb3d6d844bbfcd52adecd57edc54c97c7bcf7619c4dd7376a3cbc82ff2162cd809e794804fe46f455b136e2909fd7039cf287fc5ac50b06ec57d02b5eb7c541adab0c58a6edd82a4d6c34de1beaab57f68ac8e205bf4eeb68de152fb497791569ef4a711ad4f6b12c35e5f9ba22473cd4cd0f5d32cc6ca96010c03baa6d9dd9147e72f50ea88cc8c9c21e6049a0b9487123da77308f0f3e7267d8bc2eaf782d42b4566ea3c82dc2bb5cdd38a6879067dd3e4326cb72fddcb8f8629c37c08d817bc6c5c26af093daf5437ca68a116d7dbc9c33c33e25018e9111e6d615a747f798c65d49f93bca1d49f005baef45b90663bb4ea26ce30a3a9ca6ae40fb5dd7bd28e608131e2fc822146f19e9a9ac36c954fb4e29efc5b98d452b785984da9245bc17b56663af8d3564b12b45e2f8c4e69d1c92f056caebadf35f11dc02f027f0727dbe5b9cdbda0e2bf46f3e1e139ef3b903a81d399646135b25c50669ef36828fd1799fe96279ba74733e76ff5f1dfbf70d3017e4d8345e9691e3a64439477fcf556dec18c74ba9fd44b16fab328d62ff003d7c560fcf206b76e835444e3aa786f901989a0ed02f1a37d3975b5dd915fa25366671ed77a20db1c386a1e213d175dc05dbb8bec9fc93dd3ffaf8452e0efdabb15f327ea08c4313cd9fd74e754caccd016a73120c1a8a878ce39f6e9550c344f527a333f3c678a2e28fb59ba4dff21690a71bb1ae2c8d7125cfb4d82ee02bb695763eafb18adebb77e16b305c9d1377d77de01c8880c5f8c8f191f2732156fa811f94da473be3393a70b6d69a7887eeda2b729cc1a68806236a17aeb2ada247fd456d3939c19c237e79220fb87bf66dc9eae11cf1183faf15c89d5f62b316ee42da87c403dbbe3b68016cdd3c96261ba314dbabe4243880d9d3fa15dafbe728da1b65bf3439c734de8f3fd3dcddd95967e5bfe72cc0feb77bbb39205ec8cf0fdd9d2b23388a3e137dbdd2877b3551fd1c125d68ec86bcdfa55d23692cb2cd9ff013a8732cf196a295bd04fdf89fd41be9c084956a1e613ec89f4b9d9d949b2f3b2f828fe9531986cae69ccc40fb19a7ce8dd38b5e95fc6cbc3ff6317de1757b21dfe67f739de4f1ef3b6a89a9f66d819e4df9debca4f58af7ab7167445c7b19e391d2068981817f135ec0cbf2872feaad627d3a6d7d2d1d26db49ac9984b1ae2aee6e01dfe87f0b4d3b203729fc3136febfbe9e4ffcfc28bf917d3c921d9cac155fbf5278163cf3b52d7e105ae6efc7073aa126e701db8db871caf680ff49994373cf7c3abe3f388f4a5d1c9d5c20d4cd69e573c93ecb9d9359f39dd4c0a9903ed5402c04aeed7249216652cd71a67c10dbb7475db86f72fe2c8e49831ad8ed59c89a7199e21cd97302b537496d1ba7aadf71ed175c5786edc977fe39cb11966c5702266a5a0f7beb306131c933f29c3b739c6d68d1bd6e1a6c3c810f53199ae2812e17a84de87311de0e7134afb21ec14524b2f5542f737379cea47e83a49bd39a353cefd0e651e1335eafc31b965745ffa382a12e615fd27adfc27d345db6edc9bc8bbb9b2b5a6b57b0e1e01ae1ff03e326b889bf3d6e6cb34d777e95d566915ae37d12deae49e402de03d82f589d25c8f7c3f3c43982f704f2ed20275f3ee78375e4efb9fab407446f34f704e9d9196717caf098b6efabbc4907c155d687e9ef1afc7ea5be51361817b9a1e23f92bde0f2fce7d738ca85da43ff9d7211c733044c7e5c377e735063bef1bacf76e37e666cd45a989db5c7015febc177da7a92ec2c0ab560697d693a169b97ef603dbfd1fe18ff936c45b42693b4a7ec6c4606f52d913baac7db0598cfe32fda8ea6f6ae0e2b02d72bc67b86c6d0648305ae89e2543d6ff04ae2fafa17f8dd189ed270789e0dc655562797acee17e96e816b9c051abae3ef2cde4e4c3086685e453bb712d79e0d6f15e0fabc0c9b85313c623d08705bd9fc149f415b6ba9ca9b31af0371dfb4b48e7949d935b6fa515f24b61e8fb944fcb98b5e54b94b178ff6994c82bf7b2c93c8b21d7c23cb766d5d585247bca5bf45e4eddce7ef9b762f98ff8e3d9f59e394d87a0fb4364cb42c373fb6e376ad88fd7dbda4e3eef2cbb231e87cae649f3c3b7d44dbb26f4df029f3314c786c3e1acffd0b3a14c4eddb03c0206998bfee9c0e162cd725417c78392ee27a68603ce3ca4896a35d12f63671f844f22001ffa73dbf957017a2f62479cdbce456d1034c5ca49b2e65fade14b9335c62fdb0032343d089bbf89f64479c004e32d875357103dc78dafb83ed37ffadcc3f2b8dcc4cf23ab9f8c776ad45feffcfee18a5cf45a70ecee533c13cf0d8d83a9fd78e8dfd4ab89d0e7ff3a6c8d81a6afccc94a74d5ecfd924b8afc14741fc3d7f72a6dbf6baf0468a7837bfa49380d6c5a2e397f3e3b799313ce6ac960d695753e381f87278395a97af6eceea7e3f77a0c607cbadcd1aa403e1f3cdcbd9f4fe5b8726a2f73b928da43b10cb5dbb79150f16fb74e0ef9388970f197d16822f0f6af3cfaf493807bf4362c1bd597177ea26de9580478231008322b185bb94dd4fb44f9d2ecdc98c686d2e1083fed14d975c8c88649bebca1dfc9c663899ea2335aeb7ce3aebc6f0886b2c0f7b6b878b31e1be5d197da4d3e3982b45b7bb6ec85a48b1807c1bb73792837a7c0de6a738bc1d21f7b5a163dbe3671fead8de686ef2b3fd968636e29b0de483e37163dc63a8c5f3053914bd6bff961c0a63ef9243f1f8cc7d1cbd121c68854fb6723acd1bf95d9b3fb7d792def4940e249bffa440b20d3e6fdb0e1c788ddd3f1e944a9e6beb4fc2e7429e1bd973821bff54b2f71ee48871fce9a16cc462969e5fd87b9a7389fd2c781cff96fb8a43bf94630bd16f90536db1332bf93bbbe52db4d7bf59f71f9d1dc906c4de3924bada684bb38c23bf98d555a9bb8bd6a1f913ef6d4bafb8862c3b2311d21d97e162bf0ebbefa4b61d5dadaff6bcfd8e8c45e40a7e1f8ac401cc93e32bce1b3fbe723c8dedc5b37b247badabd9d0d28f64c34e9caa4e243c26f8edfff0f94f9da086bccc4ff46dc0759c2cbe4023de053032fe6fd0d211f6ed05749fff1fd25571484b7a5654592fae87bdb5659e92c8a3b55a94d84d7d7d2f420f785d393951fd5e7ba708be54bb4c20aee47ac3f917d76666211930e1b1c25bbadd12ba5d5ee999d4d1287f97415b3fb6f8ffbccd837cffcd9d7818139c7b066b836400f47ffb26e3a753bca132517086fc12e91a0bf47fc5d72cd4e5e6cf02c62bad141d6a9c389d759924ba517295995c48dbf9825cd84b7b684e021e29cc85d6b94ca3a007f5f4562d4f863a1f4ccf927ce67f70ef827f49d2b31ef99360cc8ff034545f08cc49d6af483c4009f46ad9440e2e0abe5e89226f49fbfce5fbea13bb9da237d13387f124cf2ee00dcc2bd7e957599d033e27f173418ea0469fc774fe26d9e2c3a0498cd55e3d6b423c0a5e8bdfa8d528f85e2c9bec51872d4cb6bfa9f8b4f80ce29c038a0b40dbd4c9ca77216e897c2fe2b4c27c698da1531ef95073d56fd77dffd8e62efbfa09064734a2b563d1bfbf6a8b86f17dc5278ac7eddbd4260d6b604bf633fede216dfb52cdb959ed17b9f3725e870ba50f7ab7ba61bfc8882ea1de310fce3fe93fad7d8c9b28e96738ff4ac026c0be49f0871539b16bd0794ab40563ba2711dc7bc78ebab7df8479dbb23c599d132778fa41c728621c0c7f874eb1fe8a311763a34072ec21ad73412ecc4372c7ae6cd966d04f6b4cbf0b341f354fb63b2643952d0e89a5e8d9b8deb12a5f4af7125a534abffd227bc6f3617626d43eafef537f3cf0d280d5576cef0d4407e334b2bc12d161ee04995bf5d819e2c6c7e69fbcdc8a6cc0cef581e6d20ab10234bf12f03abc2a736e90c7446d98d9607cc92de2ab72507b0b6c6746fcd2e1e34315ec56b99fff729f5f208ed98d8233e69141f9e6d8779079b476763afec0e373a62966dc6c39baa9778d3067b2c76d3b1a9a3ec6d1bc87cef412e3b1b2bfbf40db6afb9dfbc7d124ae4dc3fae1e79086f675b69b57b955f0e3526812e2a5b9b14b982298069ff79bb5907f52ca3e78c08610eeb5edf89035e3733ac836af3866729351bb90d6a74ef7b777d2c88c9a182d8ae50af6d54d6654e7c4b8617a588e0fe9767c4d217f1bfe0d313b18b3493a6b020f189ee53b5878b694ebcf321e003556bb6a292b32a5a4bfadc3852eaef49c38762f46bce3597c1fed2d6a371a8ca05ede0f992fedfc06d7f0037ebc23fc58ad3d6ad9e4ddc7773f8d8d701db34a425c9f80f29f6e9b2389d987f64d728ea4b8881da3df716e153a2c256d3c9ac2ffa2d7cd3a7cda509e03b23ec44c011eaee02fc7f21aed57c6b865bfeff53e128d0d5ba0ed0ef94ae78bf94d198bfa471439ab6dfb4bb2166d4792b7e85cff7332d7c3f8a8d62ff2d8b64a6a438834d8ce3940f7dcd7629ea8af9ad62211e36cd939b4de3be9df33f13ef41d01375c9967c7bdf80077e0614c9d9c9fccc68079912adfc96b66f7a64e29e8feadfdedcbf1b0485e967c3e88b714489670d2ae78021a5bbc03fd358d9438912e5ff6439c46b06bfc864d1e7ccc5a7d12cd99c960f371566704b710cde9b77cd7e41b9a33541ec93885758f23afa13a273a9f9fc5e2a2f7d5b864bfafc48f4ebc2a99041fc9b2a8d15e20393777aa2295ebfab27927058ea9afceebc83fc4e18dd4b2ff9fdb1fdc7f729ec2bfaf6dac81e2f77f44db494131d858ac72683f4972fc298e36883e8f7efd74e4f65ae1ebe85b3497d9aa3a2735ac8d29ddada7382a04bda78daf7b15eca55fb08dc0f9f99d585b6d3c061e9711e3d87d210e83ccf91c47e36b3a29f72d8d5e37a121c558f47b907b44bed9cbe77caae545b08fff8578c1bb929f0eeb8ec684c6a6e889ef2fc4dec3e5bc7d45a79364fb631e225a40fddfc4f8e3b73dec27babfbae2a5d2b03acb67651d3e7df1ac54104bb90cd19d681ef2896c43ef1fd2929fdbff159e47684fe479461cde7e97e7916ff43c4fb645a03505df6f589d559b5cff80eb38b5f4dcea31d5d9e7ceff6fdc63221d017f83faad6731b60ef49fd33a3491dec5ce1e87af3c24f13b45ea54456690fc7a9c8757a7db459fd1a6919c3de709ed29fc1e3679dfebe3faa1e4efefe2dfd92ffe6f240fd35a4449fd54ce9726cded3b7bcf2bc07d45e38267c17117d9b72cb2f29cbd1f1c77ee52fc7bc6ffbd34cb7598d449e455698d317bc9ef4d12de8adca90c29ce831bdbbc1feffc260e317e29f9ee9c0e16fc7ccfd2fc6ae96fe1f9acb6cf89d5ce8f8fdf90d6818fdfe0fb7b97dadf4f9b72476aa49ebde720f59acd692aaec1fd3dec9f92c86fd6e1fca5633dd03bb056dc6f4fe9c0657dcfeae4ecb77192f41d1a73e6a4dcbe6503bfec7e976fb363ed6b7b9b19e8d948fa4d1373f3ac8dfbbef0f52c49ecb524cfb5f1b10fe2a677593dec6790a70a31fa3b12b7ba93e4141a27adf4816bf4fe5e1f24fe55d30760ffa8f3708697cc7ad80757ff9eafa546ea4b2f37075c8b80b373b13c6dfc4c194b7f7e80bd93f48775347f5b87fdeb831c635ae7076a074f498e3e8dd1c1f5d057fb69c0d55020b5fa488e3e7e26c7020fbc4baec8ec9db1dda22d93cc4fd0413f8f8de77d66780f9f1fe0c76ebfff3d059ebddfb82f5c7c1260dc8dcbacb60710b78563b2680cd687eb0c9b04d1115f7fce01bab9e4a159ba8e5f65137fef5ac5311d6460ab583bd56e6d954752a78ec508505ce0691b77bf25360588b39ee2b5fcdbb5c6455a2f36efdb3eb59bef536738c03925c521313687d976b4099ca2caa0768f6fa6b8bd3ac17530f7782c68dfc670c7aec3e0fe03e67fa07d7c9b85ed3c66219ec78fed781e47e526ae579bd8f12ef9c4bfa4cbf177b40e995314e916fddbeea379fe658d7be960bca163719de490ede63dd7f19b38ca81365c67bc4d077e2f35fa1b9caf129c5d677cc9768005bc7127f97e1dcef738f6cddfe398ec3dbd47ef71d8afd81a3bf69dac69931ac39eeb0c6b56d3d4e85fa1beb335de65b57d5d2319bf1e1ed1ba25e102e2e6705c38c3bca1f2dc2686f90cb9b1c0f8efd8564cf73f6952a34fd68e9ec7e125b700bbf59884b68164f2d488493ffc19c99b381aefdb7522f6e88957e440b3af9b78e25f3267043430dd8eb8bdef7f70582cdcdeb03da03869dc3ea873843e9479dac7dcb0cdacc1e73f6b580e08c4e0b73918a630ef9862cf398856f3733af0d03704b7767e4977902f467ce04023643d951a8eed3c1d265f6f3223e8e5b86e327756999f664ce32b018b90d4b045edc5d16213a3fb3584da6d6023ceeae01847fe21af5778bd9bf125c373bb247cfc4ef3b4715fd07ee790531b43aea07de6637173a3eaadad718169b0205817ecac8a7331aa636a8db71c6f41f27e2f1d8ce08ce0786b1ab74afd142f1b38af91bb8927fb13f1816d66b89f0b27077e5be2676fe9c0536a73bf9778ad56c6b0c9ada29859e3ad84b9887db4ce8b806f82eff0a2c87aedd97dc3f72db5d3ede368fecc68ed05f3313ecf46887732829eef04d7dc213e6f15c7a6f7cec9dab3ddf89e4faa63b2dcecdeb77d8ea6fb65128d7b6b2b536dcaa48dd98e9c037287c751d04b9bac2b5e423b8f161fe3f082fbc3f818afcf6a2d92877dd7c35eee0c4f5ed3717f59bd5b770d64c4cb57674a0b800566e5e8dcecba7090de56761cf5aa1fc1b3848b65e584cf3eed841a856c1d4657b9ae0badf784f8ad0ff16ae89ce455fe827f9b3a2f07d7ea097b1b7379faf8ee16be0719e2d5d26294e07d7df10f491d2b78999c9ebc4b22f053917d51fc22387e05af1df36d64647fa656cef807b9f38aac5eeda69a1ae2f8fc99587f5b12ac5e03786de7facbf95ee81cbd2e47dfdce791e4b71aed689d65af2ff8a4585bf4acb5b590a8bc14bc30fd00ad7d78abd8fa2fcbcd6ca9acd196ab43c3f2d2beb027ac2fedd9981cd838e2a579256bbef706945f6d76d376fd4eaee36af7c16b4a7ac6258c6bd2bef5a2e4e4b632ec41181fb1b5d37ddda071ac719dac03b62f83afb04996a37d3af0ca84c43550df5232f08accd96cf2e6fb2675ec7b6e315e7d68e986b3932ecd6b6a0c8f98076f904c8fe7e90c2fe90b9e1fe189620d49aab3e3fa52785eac96c9e69bbec6c9668ff4b7d7e5c31cba3adda2ff16376dded7cb93ea277816ed6b0fec863f3ecd55e9cc29577017057b219ed7a736209c638f6d40788e5cbe569b13a7c9d722f67674d60926b42e6f6b9bd541b1be4bf1c324d7fbdda97aae03fbb04942bb492725f8fb5a5d84d50bfdcd3811517fca9d21c66697fd41f4f7a526b705d774697d1dff214c1ad22e8de564f1265ff11fc4915cc719ea98ca781ef7d4a93e926571cf1dbbc9c11e6f6a6224710d2ec46bc2bee4ebc6e7ed6d1d1d2a4d8c85a62e965976d62087fa61ec0c439b0f632961cc9df884ecb9c0ff151feb1ce9d33db427af722cdcc02f322ef76b6554df92e5e8974bbe7930b60ae98d3f2d05cb00ff2eb787e6adc740566cc3644cad5f11e3ff915c4f13c7e371981ed0c79bd6c740f0b5699d12c637be849bc362c8697d36c90e9141bf12561accf7a17d863b370256c54dae139b2d8b43b75d05c7c870f509a59c2766bfa9d791779731dd482ef303bbcd3c7db5bfd43ec4d7486387dfa6fa3b1fd3f840ca9db27a9bd7afcd076362bcc91809108bf5d00e25637048ed022e8eaeedb41e9e1fb6cf627671fd51b5befcfc92c97985f8b77d86f4a697e4ac60975a36ba67ef48e7f2eb2739865acbdf75f1ced03ea97b4e6d6b698f9c67ab3c67586f63fd74c527315a8071fb55a29da36fbd07078fc655897481e6e99961c96496ceb331dbe1b511754bb93fa23749fdbc974477f8133ba0654bb2be30361e2b408e113b2299438be55949b143246e2a9162e7245f2cb113d3d8488267a1d82df1efb2bd5aeb67c5f23b8d11c639200c9b11703b912e423085716c3de365542f957da478bd00bb9862116bf2fe54dd918fa774e6fb75782b5327b8434c1dd880c6453ac98b77b071815c7215f3394cddfe60fd4ea33fab35d3e64ddc90b5a57671d5efdc4b060bba5ed41eade6310cbc0fbf5ddb7b56bf9eb933a889a3ce7bdcfba88faef7db750b6dc89789a3cd9eebefe84efc1dd59567e81e7ec3f1b374af532346ffae3227407a06dddb2ebb35f83f919c9c59661587a41e67ab479c91dcee87f6c75af0c3109a08e6661a7a4827e925915750bc6031270dc77bae06d529ae87c765e457596d039e976433825a36a991044073dbd1d0b5c699bbe36246edebd67de66d49d5bd6dcf7bcba3f115f1b404e20f477ba81b110e6bd726e324b27a64791c5dfb99bb1dfdcbb5af5bbe9e7264b980e140db98b236ca03601be31a7e97a4c2e303f9c41e9239c47b3adf59ddaecd74392a68cd1e36cf0fb27f119263cdde2cf40f99616f5367758278bfe5f89c367d3c5eca5748be55d66bdb5e0d826be660becff382762fc7a96e4cc4b7c8d537d2d64fedac1b85cf2da2e900c9dce7dcea97eb680eb176b3f07648ebd526adbf9fc8daaafe7d1adba9ea7e3816828f19966a85240e896f05dd2be0da56b14ea9ce29ffcec9077a594da2cbc8a0671f30f1ab6ce79b722dbcb40e9e64d90b7e93d7968b27c0711134c64e5f1b01ecc8bbb2b5dd2dc9bef44f876973ca35f511f4383f5466c7b1accc16d5199f6db57a4c3ef1cc59ed5f521c5bc9e165f3fd8a38178afd07f5fbb01ec075a33bab334bac83a6e619fec1397c10b72ae3ed093114d8ee42f9c5db7bd8dfa6c6cd235855978ce59411db8c11f4de1cdb4c0741cf77aa53129a77446f6f8331c1bd4274d8d62ea7670aeef7957f48c300ddcd977437f7d27a7ecc43bf7a73ec2dda5f2487c7689f83db99d49693ec412fad3d08ad11d4f499f753c7ee25d12bf6a1d0fdd9bde23e97e3720d7e8939c6f19f1c37efd675f3be44772cefab6478be18ef25c47c21d5cc55c166d3bdd314175a3b80dfdf5458a7bcca5f6ec57b38ece72fdcdab4d8c2fbf67d398ec93fa4629c12d09f1b913853c7fe9544f320b3716d9aa99cf385bfe7d6939eefec9bfb3c92301d37dfdce7b1962f49d84a6cceb31a7c052ffcda2f43f3239d0465b2ba15711d1c336dbea1b745ebc8f1b12df81ed01dd2f32eef7cbe0ef0ce0ad79592f9ee7dbf896bef651df6ce7923f25b9ca38a9fadf91aac6f8fe5af477dd1fa8a39bac7abfc906099485d47aacf0d02c40fdc24847cda3d5f9ff32fb96ec7645ea475d55b47f38af803c5338deb7a54ef138661778ca30a8de5ee5a4591d7c343628dcb75941ce07c6d01dfe85b12799769a0d600c1f3340754d7c475f9e0bc9cd744f6906d31dc37f4df7017bd7e620b83773579047934879ccc6ce01769ed1759bd6074c6d1ead175ec6be6dc4c7732be6446456dc27c9dc3c1ac19a3f519cc8cef88471cd290d47f09a80d00d66a910ee607d2ae646326346ab77d644d41be5b1cc5f188fa30a9c546fc66ec4c135d6173e8ac2bb4edf289d9e7595ddd5714d7dee2737e14bc003e77fae37da9e4bad1b9031617c60ea0fc06cbd424c68e620cd62dd69d949b8cee853038a548ef5a9daa77591e035ed7afd2707878af835912957bcc9f3bb1de2e09d2cfc2c55ebebbc4392667d42fae734ffa27f1d6ea9848dd6a878da374274995011d3d81ce9139c3fb9a6034b63c9ecf7d236781e0c44fc5bc085c2fdaca19fd611b6776e473ebc9b9f9d69e2be6e36cf7a7ed07d1fe89d4a8bdb7365e09dbc1b08ff1007cf8d50aea8d55e7a491f780bb2f03b81720d73d63ef5f09dee1dc8ab757580b9d3e1e1bc199c6cc49faf2d30f1a0bd1f3b6b3dde6e65a47ae4d73e05adf37af5b911fbf43fd6cf68ef90a36574c338bda453ce7e23e7b0fe56236877ec2e5d5887c1af2930cb406ab4db2f32ee972fc91406ca38b630dea21d24f702e783d7c72ad0270e1d23af848a2f93d8ebc433a2937afd6f52ad5537efab11dedd17acd769bcdac6df7fc6e959be9760c354ba1069198c767b6df95e2774bf13b5e96fba1cd5512e7fa0e584c789fd098a64ddb565013ecf9dd46bc9f26e537d7995710d3b9354db477eaba9aa6762c13f54ce6d1bc3d8bbda4686b62307e79ced4e7b5b71db772c48e9ed3dc8909e602aee5fba2f4d7b6e56d65fd9d7f36d5d6a6b5fb9911bcd135f26b1be33128f21193ffc1a721c73d2bb452bbb8667d78aa16ec7ce5563ad8ece5d8fd4775c0487cd1977022315f45eb8c69a81313cf19e25aa8b5394fc21ee1c7d7cd7a59cad80c4f99639f93170f625dd0fa2ceae1d362572d5203e928c596f20b74a6e02e6e4cf3116660cbe7bdeda33344d68f9ddd45edaab8b646d0f3ebea1c87b7453a0099f69484fdcb3a3a5453511680759c59632dae475a0783d5c33591eb89145f3c3338e78fbe87da2776b12216647cf3aeb4f5a6e8e46c8c7a9e5fb4bcc61ac3bed06f1eed07b6c9b674994fbc22ddcdeb74e09d1ed586e4c7c3cda397d5f63933924b56b76bf895710858affdf185f70fcc2c88dd98d3bd5d1a81a9894de17410fbbc0efb452edbc51ff87d891dfa8bf89320a3a0f386e9b3139395cc85e97c48d7b68fb016b88da32be502b6b812585e4d56ac2fcdfc0287e21efe64f5acc6dfffb21ebedb7db6d97960dffc40f3d3e12111fff379cdf8cdea2cc8d88a9d08ed792b47237921897244b7478d6da7ccc166525dd28f3d7fbe7899e885bd23c91584771590837eeffcde8e41d7c8657bd650a63d4e7613e6d86202a27590eb6976dbaef0fa9b57a6776c0bba169f6042297c88dbe7e490ab395f984fd6556f119a078a4bf4789fc635d461d0ed9f23de033f243d62564bf744b4d84b3cfaa0e08b20da77ec12f47c71afae71e897a20c44eedba5bcdffff4bc8c2b7c16b26fbc8cc2af931fda77652c6afdd64fce4972c85fe4b322c54c72fdbfd7c34b4a730c38db3e8e25e06429c73ee378b047d8e02c3eed921afd451c9ae3b42e69dc2ab74e4f7b15bf0c7dd313d6068f4d59c76b1c3e7d93c7a662caf8fdacb6291fd0f0aaea9296ed3beaf77f46db7f29f28d5ed7a239c130c7605ca4a5ba67222d76b45373316a425d0368afd3e788cece6c87ce52b99770ef85f346ed22b37a784e969b1dfd3bab83229994480ee0e469af8a435f94cd1ee9b45c2d73cf20ef4d701b9e6457a3fd72fca073ccab897749c3ea9e2c17b7596d1f53abe8a299531c8dfe64dd9ad4e81f32a126041ec77469427ec5f491bfe8d1ba223dc5ca8ea21e837eeb3c57da75752dec43fbb11d296d2b77c5a3b555ceb468efd7d932a99cd3da3bccfb54964db475d8db39a3fb44cd199d9bf80ee2ef24c83f3d4afc00f3fae6113d4977db0ef80f57b353390388877d4b8de149e59fbfd3cfb890ed6fa46dc4d7f6e2ddf4a46038686c3db86e556b176a92d02edf97d219c2f4da41dbb8568d8cdfae9c1f4af3b6f63e526d4eead9e91af33d778657afb9f2bc167efb67bc640e31fb7f3ade3fc616a1edcafe4db28edcf9f92758e9c5da085ec95cf64954f4207e73721a0a3cd99262109de02ed7ccfa6b591e1ee53effc0d84d6d1cc4d2a4b53969ff2cff9c3c079b04f5e589f1122f67c66fb0ef4f884985d8ffd5bc888da29a3aa7ea7d79dd24f513ad8349f3593fa9cdd9e6d8c4e17c9f2c594c0bc4c02f0cfb638df59dbf32cb14fa047f844dfdc4c4d654db47661bc658a024b71df4e48fb513a46b2330a365a9e71fad5da7c545d0c8eefa360966868409aec5c3086e677c668535c56b10e0b9fbed79dca3f667d6b86ef9d1f857826399f77134dfaf18be31b66fe371b3b9a87d84fe1b5ecbf6ee7b501bf7b3bda6eb0431fcc0536bd1de8cbe43777dfeff70f726dd8923dbdaf00fba832b84c9930c41b60418c8048cba19929c082301959846fcfa6fc5ded12b84c93a75cebbee37a8554e10a16877ecf6793ccc2959620da627fa9593f1a871138fc50ff23cb5f33786c9ba52ec7d098b751b9f6afe3efaf99db195c9a603f863aff5b1608eacc85daf8d2976fb55d29e9f419e19d6ad1e0352f3ff11934ccfbdbe168d1cee386fcf7856e89c016e6c0c383f2a562ae7d413ebb2e3f53178fe25ff785afa641e3e32c01af0178c632d76715c756e53398e302aa006b2f4b74b5ae3928553767eff487632ec1fda5ec5ecd4b4847c8e0a3834758c6d9c17372981938263eeea9f6b1c57584326da45fe75fd37fa5a30eeb94de7eb398098db652dcfc5dfe03bddaec291f5ee2b32518b4dce0fe96ede592afbe3517e0f2d86e715553680e7e4f5c63ed430f6ea1cda32469eba5f7bcc7ff82f05f345f5dbddab9b6cc054f16f3adf6a9d07adf31607d712780139861cc443b77138fd206b1a510e93d705c7f5a6b9bc34c71430d6b6b53b7a4c71385f290e4c64774f09c456fced9cf2de997f27d98338e7872f387d18bf48831d59c700e07bc78c518e79bec6fe76caa43d72c9babdd2bdd5687b3ebc8f415729b3e07a7c5ff45ba9372772e6367472f51c01de3ce437d0fa42acafc03a71814580b2cdbfc418c734c928f60ebceb16f90939328b8538c3ff1eafc030987698ae320f3a909f153b3a87dd43b9ee8809dcde9ea2d2b5223b87bbcecc4b36e2717af2bcd247fc2dbddb613fcafdd8cc91674cd9dfeaba6aeb87fae5c7ca730f09601a22d6421ce6870cfc6423b2966dc42918e519e4420bbf581d7752ad97465f38d1918d75d435399f85fd6d14ce8bf8a58ee98532847284faeafdc1b8409792acff35b8183f871a62254fb3f7bf94e376cd73d3ea724b955983499d8b8fece90071ee879e6fc7e1a843f64352a6eb2cecb1daff7306b52ddd4ac14450788f90d32f95f745c3bce8b8f05c56318e2fcfbf453619abcbe49b2e1fe57c7a453e8da1fed3b7d0b6eaece240e48fb0ba6c866dc6cf297b86dd3b2a06f80770afd9fe76ce65b8fabb7afd407dbdb5b3a7b589f6e80cf718f2c33a19953329e382835a08592f58d99d7356f5dbf142b4c7eaf16b39704a8c499d1b66bf8fdaf8db51c572510e2dc0b8288b2a5e600d2ee51136c90a26d7d8982459adc439ffce5dfd82f705c8c00aeb8deb79457f6463c3dee7eff936f4a6c73870abb4627753bf4c3c77477955f5bb80e9633086c8be1651d041f9a6d53829dffdb9eef377e4b9d1fff01fe3efaef9e06ab83ed44ea3f7b5319ff8e9146d581d1f9df7c1749fb4fd638cf81b37a8032a7db2a70a9657f7ea6ca1f63b0ae3f32a98ad53af6bc541c75a05ee1130e1118fb120fb2b6afb15e41716755de3ee7ea3b5c13feafe368673711897b43f5ff06e693ac78e8c09f50799efba9fa7bb69113b5ccf3847e5a188e01c762ba683a49effb10ae2434cc63d189d53cfafb241813693e756a9cdf57dad3e8eb64feda7d78194635fb30b1957a6ff23b13b2f7110e75970b5186f7cc638310c38ebf2f7c1cdcd0cb19ff5cf0a38dd5b88153c4d26be45ee3235dffd4e8d594d3fc2bdc77309b51a34b1664bff049c2741bdae8ac990bbf5b935f985f7967ed6ebf8f05d72bf562bc02d60cf19b984b09ffee7252dbb9718ec2ccb94e371ce4abf4acb621b7bfe89aef73d1f34d7f980e379373ac4debc480aaaa7cabe623577fac0f3e1cbee69eef96514fa47432c57c439b89dbb247afb2e0ee77cff2cf97eddeec5ded5f0864df7969a83a1d86ccd67ad7f22fb302d8b0fe37920ed047eb50aa64c1f1773fe157f4373ad23d629fec7f61bf4e5d28895229f69b31ecd7e7b4abd38a0b529f518eef3f775caf171faa54f6b627e48bf17f81f8fccbdef276561d56a14763ed1fd0f510bdfe50336ea44d91bfabda9de4514cb4ee35b424c17e4dd37f85ccc3ac847b31d74cf07a6621f297be894e1781ae648bb0b14eed0fe47da9e48f27dbb8ec2c93a5a087f4fcc704a17bdfd6ad129c68051d5ba45ed5141f47aba3e07aef380ae9e159983fa5c66e7e70431b650af24f709dd57643f27e577e5fd69bb5f447651ae027f3b74f21fb34d7f9bd8fe2dd964d6d0738f8871372db201e4aa1e98cf57f341d5b0a8751fd5bdb5ff0fe84c5fd67b7fbddfeeeab59abe9015995b1f33c54b91f7cebd3d03713a869d27f948b7436f7a4b2ba13fc4143f47c22a3ba79bbeb83ba86ecfd6fd75101fa2453f1f7aa34eeab9b7b4a27a8571eda8ccf13a79122c8f0ccbed0baeb47fe48ebec78180fe5ae687995751d0e1b164cca1042c99462c33e5feaaaff525f1dc43b2ed6e5680d5989fa2a055e366855a11e4fe85fa97a464fa1e9dd75afd34c86dcc572cdd4fb5769aca61aa6bce76c5250aa7376a331fd96fc7c20e5b629e6351abd1123e3b62f7cdfb4939ff813ea8adc106bc725961b63d333b167eb366fb53e73626e3d3f927f01905b74bbe8f8cb603f55fc4b66fd1b3209d9f7e9996dd4fc56fe71b72cfee9d6de79efcd7f7235b2372bef16fa1eb14f49e65d8d7705e1ee767c4ba4bc0c150f9689ed63fdf80bbe4342236029907cf3dbd2fe8bde037d4887edcab0d35eb5ed27ebe09db85c9088a7f585f03433f986ca2b8514bd606f56d3b7d384f637eb75db82fc9c7dc5f560ba5cfdf7f6d5f2bfaa6bac7a1ef1407b839d78dd67c7fb5f7402ebaddfaddd2b8ef467946f528f6bb47f46aa88fa7bc5b2a2753affb13e2b34fbbcc413d250a3a1d26e78df5071f8f63f33fc2b7c6787b1a7507e07591ef21fff6ffbbfb47d3451af800404e816c0d27069fb15617f96ff14c3cc61f209d75cabbe5f713efeabc87fd3c6d4f0bcac5796c9aab26ee3e73de181df702e507d62c5c0f99b33e87eef5f65a7dd77906648cac5f7c0edc2ec5c4baaa752d6eb739df1ecf5a25716efcaae3e8315b8aee5926f76cff46cf6ac5641fc667bf9679663e03ea470f5a90cb1bbf507ff462bda37b6ac7304dc0574ef19845fca9ff3b29891e9f15a3765c087ff74cf83d9b626b7a6c468d19df565eb7ade3c891cf545c21ea4f694f6faf4eb65d8553a26f7546d5653db23996efae99fbebbe3c5979c5b686b94e3e53fdb3ccbeb8a5d57a177b05d94b39e4c53919e49f8daabfe97bf67cc4f806ee842ed4906550df26fb258ccf187237fe03720dead71e8b953d8e2dfc6fe79b7c9db3253d97d21ae437ac3db224ffa0c03bb5f9bc0abc53d3fdebb8e67135d7dfb1f8d44fa8779239811a6af1587f41ae3b6e039614f8bcd63f689c44fc666de44f11dfd7fc7477b86b795ec19775467adf21c6c6de69a837e2b56cf29ab0f7390fac8b9ec7afcd31adf3626dffc5db7ee1ed69ebd5fabad6eb4e1b9aaf0bebcadaf4792d7793d6ac5d049ed77fe11cebb18b3abff1577ef5068c6d8ab3467d6b2bcfbd219f08d490fe60f8018ff041fccdf3a563439fd91e90308951ff51f1881aec2b1d07ba49f6527c89e726fd5696f1a33cb23f016f8ed66d6bf2bdf6fdff813dd11ca78d4af76365036e1ee2a1540df9092ccf94ca5935569a1791fd29f681c374437e067f6b7866c887acc74f642c7c21cffe04a38ff499d7508bbcdd5c3c23e37f35ebd1fcf947e2ab77e568fd4ee2f26f55b17ecd0cdc8e22a7545e03f3de6dd570b2b3c10865efae555b2f6657cc3d9fec038829127d55ce35057f715be49dd038d86fccc780ef4e897d94d714f82bdeeccf6015b8204be46781d767d9fded97458e58ed504b0af1d0b4ea9c1906b4b2f62feafbb86e601f21dfa6de0f538e72efbf733ef5fc869afe65d29dfe09fdecdfd5bff4d8e43a4fec236da7394ea8dbc10df52f0c0f136b7df5d88d8a4163beb30027087394c45d35e33e777196cc758fa69ad5b43dfa609ccaa9dd6da5652d4f806353b2e732b2f76cdffad178ffe8fb3bbfa5e5e400f594ce3a37dfb570063e569effb192d6fe15f0382f8636b7b43d689bfa09e6bb0cebb26be7ef15be438ea9a6bbba697ec9d8c7a6361777f86537340797ca1cbeeffd79beb2fd9b1ff601d70063e7348fbf96bbbfde91b5f535ac31624336e7a736c5f314fbefa0738588b84a0a7384bfe5385b1413a487f347b9fd299f1ad129d8fdb3e7785b0bc6edd0fb46e501cc15c59d93f2e43b56147c1669cbbf20c602723163bdc6fd1a80515b9fcbf4c8314797f3222d0b1bea3188dd2fd76330cc3cfbf8cdb826888f07fde5ebb6c4fc9628985ae49e906a54eaf51e4e46c637029c17c099286cec5b730e99c62926d911be8df64f7dcdde03ff36aa00cf45d725ed55383d44657134ea93fcfb6b217eef2fb575d8f39a879d25e682df477f341f4c367d35275c07a8cd8bc9c66a03deda66155c553b8bf1a5d0ef136fb9c35a6ed3f913ef6cd89f07b5cfd279bd5b77b3de515ec79cecd7ac5ceec64e9fc5815ee290e879103705cc08a95e87d6e8747fa38dacefa32bcf8fa2f7ffb7a6356198e8badcfa615c6f1fd699c50945addaf09494dd933616ad86a1a763f436e79818e3cc42660d03942dea98d70703a626f723fb65715b119de41159ca9ffd9be7f1efecb9667fcd252ee899a63c3377f6298f83a8d89df35decb377fa8abe69ba3b8047555adbcc34775feceb4c99c3bf236ff91c315fe236b6fd9fab567c88968ca3133e0b989ce2f7be249bb573bac79cb4a7fff4dee4b25360f94bfc8e25e71eadc665719b012ef5b5885f46c57b591488cff5a0fc08a70ed18112cfdfce4affdb2af0abdaddcf7dce2a3ee943b95b0d7695e07ce2fc5c39b50f58fc63abf1754afb7bda4a7771310e79ac52bf7b36717838c4e110cfc7a0114f156aeb401e2973cae2acd466e69f4feb9fed444ea0bce7459ed0fc39453c2b791f55b5fabcfaef2196c7f217d4da5ee9fb76f377340ea8df355a3e9cf83c027e605a5bfa66e4ba8577bdb7d93e546ad8180e7b7b15ce3f562ff2d9247787fb29fcab92fe68dc67dcc792a76576d3f368f59cd65add81fb99d1f84a312e535ac7cd6db813d4950653ebd5e9a38fc3017e4e7206aaa153e8392cd0072977177d5b1b536d0fb96701df187ea3f88424bb3329e747a855e1cfb9ea73148736d980de9027e1e484f504b3237dc7516aa756d7112f3abb31e652098cd21dad4171d66b982fef4ae4c481fb66245e3e32d7523c8ffa07315f392e9ff0fbd6f112ea792922c627e693ae1d8fd9cbcfde1ba7d48656bbf6c8180f926f47ec0327e77c17af8ba6dfe609d1f95356b3e364998c13f9f53cf5c057726f0e2977d4dd7914d861f36df2c2f473227bdc2a6ed7b864aec3e7ef629e17bd6f22efb753c3846a8e69a83c35cdf18c061f682da62def7be01158ff5cf472a2574641eb36c61c536f1540fd02d8d4aabfc44f8ccfba9609439ee29a92739115b1c9dfe97f8a7d561645e2cd33e44f60f2c91cdb52fc89e2599117b884b199e7a99ed35ecc982ed4dc96b08b0cfde0f90b3c37ddef135de111dc28a90dc8f5c45890da8e1a2333cc81e33e3cf6a129f66dd823f2d9cebcefebd476ed989cd1600a3571e40ecc801fb973ce58df11333b4fbc0bf0b448e3689ab7ae61df74eb6744c87ed0c18c9c05805df5f5fea23e6ad8c3d4b66e9c5f5a43cdeeb3c6f73a3db1cfb16690f1d719ea84bf1abb86c7e6d7fb467db8ac16ee39b1af47c99f4b79b272ed1eded6fa2efa3c3d27dee5c4f236963c7f47e42390e790f31a7de5c367eb7f0073b08d7a31ef0fe6edf29cc5afde09b91e4eedbe3998d684e2276e63efea66181b31ef736d6e589da02abbebf3f14bcdf5fb9a3ff18bf8c2b29d1d326fba5fdabe65d0b984aed732efd32f74b1bfc563df2c33e3431c5ceb7b1cdf6547c185bc8bf7533adbf4be107b5df93dcf8dbda03ff14e5e97269b04668ca3c77dee619c7e2d039418e246c64d30af496277703db47595fd92821315f7d78f8d3457f6d351c4dc481f66dfa4bba6c4f963b86f284be7f5e7e4cf797bb5bb62635c23f88ee341d11c4856b346e3bfccdfd230077189983cf7ec0a6e3f1719cd2510fa42b78c3936641fc7ac7c8ffb8ff7d193f40be5395947e1ede9f7dfb73b77f9518a3b218f10e75115f340f18438874b661780051073bc303186917d3d47f66711338c3949b7e0eba8c4d06bdfd7e256da7e8618ddb8040efd63624f7f1379f0b3c2f51b3eef957c730def04703bb18fc71dfb2c2ea36f43276b25257e2eec6e6d7ddd699139cc3f896bf463d3dbc5ed511e95a31cfdc9b80e3599a0e38035c80c93df45ced3003ef536d181c9fb201ff080711b1aff0e3ae8eba0fcd73436b7fe61e2e8e3790edd9318076993af5d1993f952de97717fb859b663fff9d976b21be97fd49e4b7b42ddcfa336c320803dc9d7a5b68f1bf60deaac7f367fcccec63a7dd83fe80322f68981df89e51d26f69334a6597d0f715bed6fcfd37f751ffd33f300f9f9cd73e169fb86fb83102782cea5eaf3a93ae2f7cfba4f7e42f7e388da52669ccdaff2148d7ac19dfc18fece67430ecc636b2c62218a3c423f3fd125f9badb7149ce641674e86f5c2bfef3b327c9835439eb29606fc71dc3fbc86f603db91cd4e67ec5fbf41f8f83c8f5d4ec9d759fb3863d069ccf834f8661f8325ba632d7ca2df49ecee3ea7bed3fa92d1ea78a82cc7d1fcc2bd0cd0dd8550dcfedd91d2de6c38899b7557f578c92b07f7c9530598c386f267c1a95dffd611ef25a7ebc81f7413947e86fa5fcf2f57c119431c50d7314f45a4db047cec96e7e48343e3c533e2dc4eb433f4f3c5aab6aa8b910f514802f2538664dd853f7f830362ce76b0fb513b19769f3b26fe4c38077e3dc007751601fcc7c1834d7049fefdc92b65f453a7eb0e055df650e6b73c9734ed43c1fa31d734aac828cff13781ee8bc60ac027258ba748e2826dde883fa66e033c8a5e2fa65e7fcd6f6add8ee1e923273714e205e2e724e705f90cf801376c83f33d833defc90b6dd56145c696d741d0b86dbc680237d7cd8e6a1be9fed2a9c5eb3c03d525c0d638e11c3dd56310d1fac73123e0572d68e2cb743e2d96277e239dda8f8954adc96e7ddb9bb37bb532c3cca7d6ccccd13cf3c1caff8fb32e4acc42a5a0fe1cf3c506ba4d669d2fa9aa6bcc82f73c5c8f9cebce2a4ee1d9dff58e422f2d8d8a2f391d89d13d179e2604ef7742df75ef643ffc5fdd09bde7776c695b16e9aebaa48fbfccc13b959e8f54494bba544d9459ee7bccb1afe889e8b46e508e35faec937b98680da9dadcccbcec01103b147e47afef986eb61f2e92596eac323fd33f056d03d43f90730d7ac89a742eb939055341e0a72ef9fef1319eb17b5038f9f7ddaf605736b17db535c16c7ccf32be5dcbdc9be31455791f5867ee25d87ac66bce9fccf82eb919cffb4e2fe4143ae8692cf21cb2183bf4ce20bbc6998a716970f49a8e3a1c277d3518cb9d8fffa65d0337edc8ea63ad9531ce696e27396f723b15571bdce5938df25b65f917349ec79faf92129a7e724c0cf4db532c81d5c8b79d56547ed6ea13c981ef2f5226646f7142ffac738882d054f4ee6dcb13ac5fb00f4ad3a76df177c5b642e1eaccd3c219680ff94b98dfc3f07b4839e049fa1410e0cc32960c52d82f92db03b87d8b54cb1bd1bec6dabd8a6adcfd32a40ff2bcf21373dcb79479eeafe7d759e0c3cc85f71cfacf3a4f4db6fb0b635fd6b93967ebeba1962b01eacdf21def4899dfbb1024c0df798387d697ff5f384724de86bcceb733de8fb2378f0140ff6694fcfcfdfd10d241ba6f391787e9e16f32a0a8143324f5e283e79a33ffcdf899f8a38e9b8e8f258f478677e3f605399ec6086412ff2322c813f4fce5826d5ec77cf19e79eeb1f128a71327f7107d4663a27edf9edc71d3beb5dc2e704fe5fbb2574d5db1ef72dadf17a95f85f25ac89631cb825e750f58a13fdfc65b6c49a53b20e59e93fdc8f9ace7ca71f49d9ad92c03d2650b3ef1e13c47ed9af82eb362dfd13f4c7cbaa28ec232e43d0adde7d8e1f63adc87e5970fed42eb583ba3f376c9f03b62ae50fa37e35b6ff6f7b9ab3badc9b75cd4fe153666dd5c672598f6c94e37138ba8daaadc066f4dcdfd182dadf0a1ee89462d1f81f91eddf52bb0b7d69b8effe25fcfb6c5e539a53ed539f94fccece392d5b79e25d3bc8477a2d62a986e70fe7f3fbcf00f5bd9f8b3ebd7f6af329eea5c7e753b4659c4fd489eecd6714743ee2706a25ed11c52bee5771302ffe643e57fcbce8f359a09f09fd273f20a7dd1b119d749fd8ddadac67903930f952d4ffba5fcb06af53ac826c1f95dd6ae575cff1b334977f62d7d03c2cc1632b7fdfcc93fca09df3104f26c817c0d985fb46da2b3dad2f77b8fd68fe58dd569178f08c3e8ea3f47ec0f25ecbcf517fc271e8b9dbd8619852c48e40fc65c483e99273c0e6eb519f89a1af7fea3f999e93b283b18297ff962fa5a66f9dc91ca45b757da8df04edb40a7d1d3fd06ea338019d220e66b4fef1b85e0580e773a33900c7c4ee5ecc1c8838d7e82f9374d74def62b27d789dca80db3f527ffd64e2f2739bc7de8c71b55e875e7e4e1da29fb81ddd2e83bc06c08e96e69ffac074bd88c6443f316f80e97db056f8ee2f712dd47c1b8623fd2a9dddb1837ae2eba253322e4916a748da439e0b3f767abba4f40fb19d6f9236ca262e2fbde931694f8bf8a52e57346cdf736afbdb37ad9d2639a3eb7cfafb21b612ccb714d3eb2bdd8ff9e42f71d0e172362df37362d7e2a4a667947931f9d1999cbbf73bb9b680e7b904d743144e416e697ae9a9761f2839beb3da9ca8319fd9a93ee73eae8da3e42f5be3b2690d959c686b5caa73d3d8af76bf48b67a5b38de39ca40e19bdf111dc57c9fd13cf7a7cc63f5cd6c6e2e4c0f67f2e81bcb757f55f1f6d0bfb32c3e53efd2b486cdb8661b550e3e92eb22e4e5b550f57be66b12398e3477fe23b1af3436d83dc9b2d26c03812f097cc3629ff7fe173f379f6362dbb3feb3f3cc6a30f9391eccf3b4cc8aac411f60b27c11b42ec9973e8fbb380944a63f52430bb2df503fcbef15291e4f731514acb7bdcaa363f2356516f5cf096cfee7eff079833c01cc65ec3fca95a19331bfe08ed91b6c6e65dd70493f33e7efb8563618429c97ee67868173607819f80ec5467bc3670d355d4e6f1d85732b859c02baae4ea6ea9c753eb07bed3ee60bfb83f3c6e7e8cffcdfff1efefac6ec0bbe936f6c65835166c48b698f3eea7e243a7ee133857ae4bf7d578bf6fec8c7f180dc445f7d2b3b64de5a929dacc60a7542df2e2c25d7cad992fd2eff96ef79ea775f2626db0cbf0b57e1dc9cbf863903a3b435ad22a39d46fbe37ddfbdfabc2ecd5c7bd2d4f707e339b1d4572aeb64bdcf8095f7952da4e01ec871f68f77fd8e71e47c70b827fef58bd919805529bdcb2bcaa1f7b296ced87a055c0b0273b8c693c539e6245d389ce838bfca7819bede489f07b36c95fd627bee17737adf87ea3b65ffd8be565f508b27c9bf9d262bd752f345d026d3e2e4f762f1f0fc83dcf060cbf0985133373cecbb97289ce792bd24af37d41999e34c4446cdcf6fedf99ed604513997e7e0e3c435a77b72b6478c02a801e2580aaf181b56d6e891df731bcd38269c77dfeb2e497fb04e80f47144b1140023c365760a9eb962fb2acd85d07b943abe077ec7ee2da3ed086b3163f6f6600afd034e186d0e7daffb13e664833cfaf077313ffb2c1e63f2dfa32fea99d9d9690be4533f29e7b42d53ccdd9c6f61aa2dc03c82de09e6c22a6e4ba233125d46faccf7b23a276fd36f019fc2d5c66be863633cb757d3379bdee7339dc971d5b9acf91c1e7bdfbd7932d8e0f518e49fc513259b9ac714fff4eeacfb5f6e7fc38746eefc97e6f8df1ddcd2e6d803e5afbb2bd768ac4baeddbe931f00cffd637946227708db95eda312efedff77f9017c3dfea9bd463e47cea83ff0b3187c8d5cc792bfa3f7a8d9eebd6f9ff17e99f5957aceca3f9b97c273b8bec86f83fbf3905a70ffd630a0e839b45641a755c3e9d26a34d4d829fa26f9bde914357f5ad36f843f53fbcd43ba3cdf5f8feaf244d796650dbd73536613a24de65d8b84fa707f700ee69cd97233fd1995dbf6b21e010623c4c38e86fdb65d8523c54ffca7ef1036eef41c7b45856399d5e24a38d6f921d5f7fe57fabeaff77f7ad76ea535da455cbaad64406bd99bfaa8d668d07561fa39ec61764ffcebd7e202b63e70fd0c2647f1dc5d2ee7da1adef5af80ffbb7588daa3f338005ef3cf5508fc5720270536fba87697d07bb4e1aee1729961c2435fea9cbe3db91e8b61c39f13fbb88e00ebfc7aa4315daabb8b58b382935e3c2653eab18dc69c59723eaf8a7c57f0a4a571beb90c07117e23df41b53afd01b1475fb8ee3ff181d71cf559a33f617a889fe17962f75fd5fb0df5ed5530abf52bf3326b15cc44ffdf644c5be69733be8fea1f4defa4679672222676f7f7d0732d76776a71082ba918b7c9e883c5cd129be9ec529cc26863ed998df517b1b1481bf40c5fffe48e9e009ff5b48a2cece3c4fffcabd9de5a56b1e75a11cf095e56863937bdcb8adbf343fc3c146b5baaf650532c6c15cc2ab14ea3ad62e318fba9c8143863fcdd0c4bce2bb69305cbf79d4adf4dabc82eb613b36d76493d212f11b311fa77a53134fe1e96932c7dc7ded390e3dc3b29b2df81be29f219ec15c7bd8c4b757c88dba67e063cadedfe45faacae47ded1f7279b7f2c9fd0a4ff3f9253083e98b7a0b845d51fc42ebe8cc523fe608275c55a1c4af96e8f393c355d8edc1365537e21e57e8267cc1ced808fc4f6e5c7fb9d5804e568401ca7704e73ca47e7a43d237b9572e8411ca248bce89430fe5fa86f82e7c467dafd132106e289e35b68fe60dc93f82ec1d7077bb295ecf8184e9493a3a62b92b5a339509f51b8a536a94beea673525e3b4c1e4a72596e97cc4d95d85d8b9f7339feef758bd406be8fcf289c13dd7e9dd9f921b2d734260c72b595dacbf52bd47989333076fab7a4eaff9585536b38807c1894bf54371d0ea687d813fdaa7366601f1741073126ed4e91ec667aed0ce048652fc56926cdf32bcaf7a3b2cf1cfd6e656bcdf9a6c16e536d22794f745a09e75287f615bd5a5ee771d373833abe7d16201616913be312797d1a39e9e899e07a77433c8d62d440be809ee717dad773d256316c19860cd17d875e011875747e3b500f3800aeb90fb10ef37a8e49d8b7983f55e58d5937ce93b041a69fe96056e7c964677021efd9b982754bce99710fe06fc91ea8b50df6e9a6b3897793bd818f1eef85e73dab133a6ab634cb27c473e3aa7729f445c77c873d34db6726bf95549f6f1e47641c839ef3aaec5b7cfe44f4cf79e07eac9c5ca9afc3b35bb339a93fa49e3ff3ea6c1bdb32d6e820e785a99d75164e5b1172eca3ad15ccf57c60f4e7e31aeda370b267fed5c86e5d32877d26e5eb98bf17350d46fc21d6cf3c871c71afb8216ead7b31e088c0fe16e77ac9f26304b7b5b35d277607c695d89ddb2a9817e96eb2a6f7c27abcb0c8beb3d2aaff03f5d429e0ba103ba7cecdd552fafa4be31296e3138a0fc3fbaeac053febd2f3c341b65f05d762e8e4cafd22f0969ed61315075a70b9ca67f7a6d6f2cadf69bc2e92dc30f11d34e3589b6bf65b2dacf1f65da1efd0f8b8a45340ccdd17b90ebffc3a2e29e4470b99767bb323a57e58ff5eaebd9a69dc588a7ef3a2c6eaa3f6f628c7b7b4fad656521657c0f65bc83cc813754d36a013a83cc98565c000e9fd2f6268d1b9691d2bc4cb1278ff52ed2cf025dfe3d78bc35195b487fb91f5a2f181f53fe16ef7f23c2b97948b342e889d1ed94bc038c23cc0e9392d97268e1e51838b5821c80912b8175aabd01ebeb4f2d4995d054624de3569e9737e79c9f6d7ea2778bca33eefaa3eaef80d340e37394f4dc9abc3dc8afe310a8ad39b3dfa0bf0f6a4350e6efd0ce356bd5ce0424bedd570d11ac785f50e286f3ea3e0b35063a57195d8d67ab59b923581fccbb4f46f44cf877c4cef02fe8bc4ee7cc48bfe91d88e6961c092bfe7abb78a2dab63c8aafe5b1cceb693c597f9aec7a17761e7499f43e60739def1e3ff95dadd13f3e3b33d6ff6a9e6f02cb589259dbd76c7a9cfb1daa306ff2ad5a3b62cee89734c639df27a0ca6adb45cc29e851cfcf6a88842cc7f1463efefa3302e002bc62bb643afd8a686dc8bd0e6be947be3f885be015ab333f05bbc6647aa6151b0fcdac8cfc2f7969b1d322f1fc54e2eb5b5057b56ac39dea5529feec74828e717e508a4fb59e19b3dc49bfe252d8b73bae91f6247d4ce0c3dff69154eadf4cb380bc57403f9c039c0a88c3ddc12fbe9c8649daa13ddc71193c69cc7de4c19b399935bcd8d80dfdf74ec57b55e06633c5c3e9938e78e446f57f7bc12f3fa05b130b77bc4bf557f939ab341ce288d453099d4ea1e42b813d1be23320a6b19a639b1e16499b80a27eb287862588ee02b53e4ff6e721c0e889d00f1676be5b92772efa4a5db015c33e9bda67c38dc0fe8b3a1588e1a07ac21f656e7a839f07c4f3ee67a5ec2b82cb6063e0e7eef923d3f0cc85d83fbbdbecfb9ad764843bf5e4feac16f6f44d75c05b3a3a11eee9094f3e2fd79cf7c364c0e1e4d7e228a2d0e7263f4ecded505d55a65d4a1d477e499b29f9cd9d580c5cafaf3fb55e1be56ee67f49f4b3e4835be00e7eb1bddf37c5c517bfb0df0695de9ae807c1f32676b13ef2fcb83cbdf77c5340a7bf7e4208d438d8a68e71f126f4e9edfd7e29a463e2f7636dd6fefcb569e3e8b71cb7d4d795ff34f3d87b3d6cf45ff53b2f58f8a0e1d8c5aabe0ba7d0bdc8ba61f2bdfbdd6fc14e44c5b52fc4279df290ed335f9dde8f9451bb7a146b742ddf72ef7e5db90f9baf16f43fc33b4b7d517fc978207b4d53d4cf478b4679dc8bc52ae4bac375d5c0c792705d16b9f7e60bf9ace0a70e76af5085f738a483aa2e95c1b72da3ed91a47618fc531a9ff8deb5b2abf3a91a341b4ceeca5ac13582bcfff54f436d0c7643ca16915072ee46008fda1ce8b29deab61fbe33dec3de2cbfdeffed7857e0cbdcf220e7b681f0c247e927002352f69bb3845556f4fee1f497720b299fe669a27c152c1e3197aee6de8e9364a41dfe79e6207fd94a4bd98d8b241672bea04fa795a01ff689521eef46d38989f250e6b2b69cf3b29f82b3b26dcf01639635cb7723ad26fe02c3ccbbee7f14e1a33b9a35f187f7c87e94cfb19debba754c2b7afe32891b3d3b9659e7b8a6cff8d72aadfc153e258f43b759e5273fdf082c516747c2ccc1d1a3bdc7635e44e83ada08cfb7520e3ea33dca0cb9a9f3f19e340d466b498bf73093ea166acaea65a6a3ccbdba6317e2027e8636d2a5c77edc636250eddbfddf649e223df37ce4dc9759f07d65dad5bf865d84f3ae77753dfa99c52fc1c749e9b6b886e9a8d2dee0fa8354b24bda7ee036ade4fdabc1d87ee278c335cdce596688d77fe6915baadf891f5ff93f7531d48e16c329d5da33d563b6b8758e6a720df3be96ee81cd7ab6046f314883dd96aa5edd93a2a976b960bcdee947bfb2c09dc0be4d256f09ea6fdbca37955b036b35df11fe9e74339e592af08eec5dd56e8464a7c1c74f21dd5c985af42c6e6dbcdab77e4dd3a65835107ce1262cbd7d7da9b765ef57cf545ff0c3a56d8b7d0ef2b9e37cfe3d37615a81885c6b9ad61152e4fa9d73d272fa80fddc16e9063a386399952fe612d0f93e8e76a6e05b7dde4e769dfb90cb99b03a26020fa77d7665c523dafe99c802ccd7fd665bf8afd87fba7e0357b7fd0c72ff7cfc37ddcd2f72bdc7285f0a9d2fe8daa74fd5af50fac7690cc6d12fab7cce96fe245ff86777956e7e134eba527c8dd83f774a8add9745f808fa4765724f6e8af7bb88bd23dc3ed8c2fb92f053ea31c47875cfea8dc3f704f28fe24625f835f392929ce4f4bd79b319640eca22cb81ecd35b7263c52e53d64cdd7f16e744e16fd5352e1fe1535cc523d8b896f56b22b52ef9aaf82cecfa83c14517b46e758cb791b4c8b8c63344f3be3ddd48ac291352b5d2bb2d72a0e0fce2799bb13faec545b117113618fc3bbe8dff5b82af569623e520fdb32e548738ec2a63c5598371687439d9ad55a3afd3c051ca4d66716221eed70101fa20572d2bc3a8521efa7756678a0358e5a91b776898349dd772be7b5615dcd66b5e97c9dc3c4ebfae5e7a5bc3413161ac53b643cec3206a2985b1e9f34e223a59eff21ea47c45d09b5ac68bf1d6287c55846c4e6b15222830c38fe49d0b5690cad8e83a8f93fb8cd0bb50eea18f867620c2c867a670c6cbdc518483bff8d31e06f4cf52a12cee8a2035c51afb86feec6d0cd1caf300ec66f087ed13fdbd39d226b516e4137ce1397f4638a7700e3887752b07ba5336bcaebe37df8b9e84b3280f155cfccf96e4def47de57dea6c83d825a228c09bc0d3947b2b4570e34f6c578b3f39f8bfaf3cdf53dfc7777e38edafcab7780f49ba1577ca69e5f45e1fc9095fef17d7159a7f6f775164e0becefb51ef797fa2078841ead1752c65dbb67a4bd25ad576f37aa7abff97bbfbaf3d57366e06fe94b3e36a2c3937390dfeb83e0b774f55c03ebee9930e51751cc11222f2f497b7a401dc27017edfae7d42ea8fe5c7b5ee42e2da8acb03b677267c4edd1390b7b9033219f3505478473a3f91fab16c5d6d76d12ca43ccf0ad5fbd23b5c97c2fd976f22458f258d1bcecfc88829691eb9a9ccbd03ed2737748562d630c927cf76b55897d813c94ddcdaae8fea6f8b897c0fecceaf103f9f70df2ccff843830eb6758c7f56c925fecf778a72ee3d35be97ec6be55c3b9916bd684cf54c959d3e67bbd635c7cb1931e874e46b90d973bc061e0fec954f4555f130ddb5fc1c577004b9cff5bca21a8f783d61c319cf21aaebcd2167e76afbdc4eb7eac6c7f3baa2e82eb01db00be889184038a783d9f94d362bd1fd9591505a38dd4975d5aba1bc44abf685c0877e746c15ea758ecf278f8bf9bf4c4c8bee6691bb0081ae415c3ba66cfe9bf33e71846eded290e3a5b454f7dc4e723fa46f3c09bf86b28ce9fab9c779e13a0c81ab87bf6ebc8ee5ede17f985e9bd726e5eea756fab10ecb16f909332d8ee53479147527ca1bf4bcb6e2b7ddeaf890d087f3b57251f13642ed4faf44ee20cc8cfb07c6b7ffb63d3bf70fe3dcfdf2afd92f7ed1bbc4fe170909f657b12da2b19478af44e4fda776facefee262a559e16b817d8bec2e7a47d26b7373d46e1f486b578f25d8a7967f80cd893f23e033d50c34539f0d837fefe322e79db8db985917dbd697b95ef2d9a8bf19178ee2db5fddbd03976b18686f257421ed4f49856bd6f43275dc3fd4bfe2dc5374d7b16dafd306052cab63e796637f98ab700f66a2de7fb4eedbe168badd7047dc54968c89ba1f6be7c3e69bf58ee2d7c2fc78f34bf27f9be736bf6175f01eff68bb9401fbbecff7fd3f835c2693fdd0d35de817f0b8bf40bac14ead3827dc46d05989b5a6d80373d2676e70ff24e50bf7bdb0ec157c1ef41497e62be895ba51b9e030def786de40fc658af9a77987fbcb3380ab4d51ce348dafd8e8a65c5d7cee0171f15697b0ebad817eb7a4ae02e2d166abc43ca3f34e5cda9f9899770d1cb755b80f17d66523e1df0324918c29477731bbbf3f3d2eb9e13e7eebbaf86775f1f7bb76b7e37d6836818f85fd4a7b0f3e0636e3eb947257f3cf593d3f8efa29fa7bb51fe1e4e20ff86e512d3d825d6883bfddb2a80dcbe76bce89fe2c0df0e07f333eeb3ef67b27fd85a623e26c3a88d0fe96e6aa9be77818bc26ba775bc122acb0cf5975c4f947301437b0bed4d9ccb1ad687d5d0c8394d6f13960b48febe27f3603e21a7a055afa58882f9d6f7bab3c4ee1e298e03e836e27eaed5f813bb639b608d0b9f3bce3d4cd715f567a586a186fb406d98df71e05ff43996f080713d294e26ab4d8d82d882bad6c284c1d639a416d491986b7f0680417cc67c828e85b9572c0fab2839fe26bfd3297e8a91bfc26c43a8eff14fb10378946c2c8778c3ea27854e49eb5b598df9315ea87aa47cd768b9b80c1ff523b13b1f5148315d42e6bba1725b8b05b1359eef46e764a9e5e649bef8a6e794bc1b19477237bd245ef1112ff2c3d8e95da5b93a8c1716c7d760b8c1597591f341684d0d6f4fac31d5030c5803a65c59d39980bc97c946cbf1abeb0352ac809c5fc8b9a98cb5c1ac5dd0a7612dea183f15c3385e12799803bf9aed1e1956c37030dd276de03bbe659e5b654ebf24f3b172faed95e7d35cfefe21056cd179114bb95621d185df86e45e2aa270b44c4bd78ec3d12d0aaecf5897bf667517e0075a0533ea73c69c5a3216c54740f1160c72411e97e0e35f9075c0fd0fe78ff9412bccb3bdefafe2f376a271b25616145ba5464bb5814e59d0dac4e190e59adec665b1d5cfb8fc9d143792df25edbdfe217332c88311b155e3bb3166e9537f6c95cbed1d68fd2bf547a577fb27ea03a67902fac08ce73a4979996b621baf9cfe21d9d1fc67e60baefaa3b9d347fd5c9defdf43275b133b9bde8979b2c92ce96ee46705e55c61612d0f8fc7b2feaf23f0d9ced644974ccaee691cf2771fe4fd87797ab017bcb4ec7e4a79f87badbeca909bfa87f9d674ae755b3cdd8dcee966bd9bd9ee897241f33cead4f6894cdc1ae6f51f9a43e03b9072b2613ead15d42b155b35d794dac04b72efb4945a1caddeaf7e57eab58a34262aef33297e406445b90a3a64dfdce26076a47bfd1887b35dcaefdc1722774b5d276032a5990788cc8bff446419f3bfa415da1da86f4df59cca4bd2aec946e147f840dd3f09dcdfe0d30d4705bdfb194701d601782f6be1f7e88bdf17063c46af7b1befd6f7f260499f4eef0ede258df9c178f6f1d9863829f58f9fd3aad3516df6c67a747d9e01b7e14fe699e25ad4725719ae116dbb8e7981fcc3a8af56025f147c6314eb60d4326065d0dfbd4979f9ec3391e75acba5dd44c19ce187fe4c0b29eea5d756e1bbeee03b21ef6b6a3d841d41f98ce13df8bb56036e04b9079d9e88dfb53ef1b7aed5141b6a2501b1d9804fda885b9095ee513e9b818d7d08a59865ed3b6aff2665b72dc7fceec53430b682fde7fe73c08da39fbdc1dd67aae334d69c90f678adb9d7ada4b8349127704fc9e72f2dbb97381c1ddff55a4ccfafd2b25bbd3ad973143c913129f213f6a8d763794eebd7aab78b88ae13cef7c3817f92312b870edcdd743d0dfcf1a5bb6558ba6fedd192c65e1b396f145dc5713fde170dd8833087c61ad8867a1dc0b1267a3df87688edb90ae73761d7cccf71383d8dc81c86f9216dd76a78efde63b47dea932bb664ee46768fdd65a7c4ee14ef5e0179ad9983734bf948617ed97cc3dec4dfee0cdc5dcde7b529c6dc503380676594c72ec300ee563ec3cbaa9dd9c7eec5668c2f8aa56fbb30bf5c97c2da8e54bb1f141e03f0c9db88ef053ac7cba8b30866427f137895469c9ec7da10d89528d3bba76400b5cf05c3135de139d9d23d54e72dc07be8969693536abb9ff122b7e2b6a1b60c71bfe57b56b72bc9fbd45cff7a6e29fad9dba30f137e90b083c99eacf362025ef643bf6bba73115f4dceb9e47289e2daa87568356c554b96031c9f5b8e9b6efa1286d113b7d9851ede3a239fc4fc3674beaf69ae1ad1453ea3b07f435b54d20507d333ead3a0d36fe20519abbf1d7ad7c3cad6f0ae76ea9ed4734bcdb5bc5c77a8e5b1a5348f4df03df118d5376ebbbaf2d92463597f1b3ef755bf3e3bbfae8c53cfe33666be35dc97c42e5d26adfe39b16b35699d7129fb1b736a83d77d1b7836705e6b3e00c61fe57d6775f3ada4643c1bfd5b1474802798c615e5dc33ad566726d5eaccccdc326ef7307554dd02de0df1167c5ed5c56b9c32bf566ff39a4f016d985903de25cb615175c464e77f46a55f31bb7aeaf0dc15935fce427f0170f4b33adb9a2e41e59235de49391daa5e22be7b36e23aa30ca5792b0bdc1b6c7c3c9f451b3fe43e213fec7c26e5e5308ea8512ce587d4f17e200707f96b5dd66f43dd9792a742f65e86388bb88f9cf725b9dbe933e49e37e5f0f1363ad42e36e09c52ff41b26949f72ecf1df9d7d03b40ce36f39d11d9a0fcbebe9e88d952521c431517ae214f8161e7fbc778ebde962cefc8c8d7ccd7214fca29fab7370c5f9caeb39a2fd65e79c5315ef4f6c3006a65c03fd788b723d95e78263b37c80df1c46f0db990fc6c25815bad2a8a5fe5b937b18ebc3e9fce23d680c15ed3f54e161bd6e6c2cca1f8d81ab07800e60b89fc246237c7e4ef725a34e45f917d61a11e4df45dc015013f7f1cc60a9e80ac7fd578151b74ffa1a3ada334cfe25cd7f35d8c3684e3c2bccfc2293b978d7a2fc31f1d0e00ef9fc8db43e2cdc95cebfd63e73a9968f8ece2374facb65ce04815ba2d819c5b8a2e20ad2dfb1bea7328ae21e63c731c8df5ca06df473b5e083f827c87c4ed519e7ab9e1ddd34ed8ee814f6ac69f67b8ab8fe8c4941393dc9992ff46d241249938e363616b449fa3f6be7cf774949c6953dd3bc5a43160fd02775da1d6804b363cb51b2996908805b2b3f9bca7bac917782d4d3cf8e46e65fe7bfcfbbb88b7f95bad66b6d58073813a04ac81f86dd0ea1ea666ac0bfa7c735ce84bdb22986f812f176af699cedeb18153dd73ad98d7594abc9d0ec56b0a2718dfa3b5911ce395f36e889c7c2a9788ce76c373ac60f1223f50033fe92bb72fdc6dec81af16eac3d0de2e4ec4f65b05e47ef76fb42f9688175c1866b9dc57096f78267c7baa3dc5e656c296badf47f358998d04b844c738702b5f8a95cc289e7a03cf04b5c7ba7eeac1f8deb2417134e8a91043461e04c43eca820ec3ced6f6d9fcec8790a35c2cdbf30e8da59a30114f49e057b1bddcf31816d4be50dc2b656fcbf85e9437c3d99a9f9564f857b1c6dab817eab9306341d4c6075884d9a040ecc0b67f8a5f46303fa9c5d78e3de3c0f7648f59a3f3bb58db53a6b64974016b15c49da5a8cb3cd479b33ae7cc2bca779fdca7f32225fa6e2d8789c9ad4e91048535c37583b65f9d2c8f3d25d751f5f328f90e1a3f9758b31370ca3aeb1d39eba3aa39f62a716f158917b138c13e0a8a53148c0e895758ef0d795022aede5c3f7917e34ba9115b420d429d5b8cdb6c4db92d8764373d509be55eae4a037797c49503b868226f40b9a7d9589beaaa583fefd49232fb4adf1fe07791f24da4fbeb7f86cf3dc4b6d37361309f58d6efc8bda6e283b916707a09dfa12156ee839d7b1f7b6c61c01ef31fc21ebb02f698ac5bdcc1769572c196494b9a4f43ce49da9a9f97741c8b80629db72d43ce19e69be875dbfc6e71d47b81c722a8bd2de174e4b1377faef393527daf8ec38338d4e0ff001ba2eec7ba35e8157f87d307c6920b1e1f43be85346672f77dc441671b41ec0fe5b7ec67d0c70df613b11d364de395f8a6cd63fee06d7c3c366e59b77e60eca2fdc23c7e9e6f22737706f36d8deb90d996340e3a0be6db58aadbf5bdee82c68947f1609a609e65b17d750a13b6afec0f16390898db23720f28f656145cab3870b7ef4ba2f7d4720c54ecbc267fa77e8696c0c32fb0567cab1e5350b0ad78dd6673dcb4764ed55c1fe653c078815bc50b1e5bdf0ebd6b0e3103c94621eb30337011abf94974ad5fc45eabe5163d321f8b4e2bd99136624bed2fc38ed7fbcb72e54ce7a995af6c965b773da4ed19c44be49ca6ccfbce652ecfcb7372c46b2e97ec3bc85548028623e39e86b29fc8e96fb3007115eb5ccca4cfbe1555452dbf483e5763a70fb13ccd1eba83c5a7e6d0c2ef0a258716b0d2e435e2b17d853b91ed43e8eb220e22ea57a1b2ad7ef6ee72569bf9d1789daf94df857970af062cda31b55758aeaebc06883b83b9790fdb450bb46de53899a4d3336cdd2f6d81bbf327f1812c4bbf7c1df48fc8ada1d498123b9beeddbf6b37f92c268098ddc01949ec848b16abef5f12ef0aebf34763e3f215f49f2df36f69f9a586ef3b877820d5fed6ef2a7666f1be724745bce1358e68d32fb43c3f5627ea2bbcb817834f57c1a635dd79cce7a1612ef067341ff285e689b1779d540c47351789e201eda53b918da7d1aff7f3ed89dea1333d37a6aedf4a7e28c8317956ce45c1c63a7cb6fe47f2675671101bf2edae561c8e846f7b3039ad82f92d68f70fb16be97737f013083ffa1cf27fd2d6e76515cc33a3cfd3f41b1a8fe3f5a76f8d387634277b7e4877f38ee40b433b703015b9862a8e81b21e35fb0b6af7eb77fd6bedeea9ad5749da63fe3dc0f970357d45cda7b6592e09fe7da9e9c39adfc936c974cca931ea3409f94d58f737806f64ea34e30128fb65302ae292ac51e703e5e677856b0571270b2bad1afc32aa8f8cf1d9b23e08ff0c3bb73a6e2babeb479f8c25fb6498ed67c8fb035986b2755a45d585cd93cea185770c91853ec8182b6ecf8eec5dbaef97c6728e8c0749e434617c0965eb95de732aaeeedd3c22a9cd077968b8bc46797565bc5246ceb8afee9c1f7a1d3fcb2fe37742719bed887d782de29751f15e1645ba31c59f7aa22f8bce76158eacf725fa6b564167372bbb4f759f594fd2c5b4bf452ea61e5364f5a94acc03b1deeaf5d1b5181cdf4b6a4ca29eaf47ef0161c7e7589356f3d3debfafe4fdf4400e9ec1ae37e4e0b5f2b43c424e2cf769b8723c15f7a5d1f761c89d517561ccebc3f99c1634ffe38b58c59ae5e55a3ac60aca35a2035d8f8b0031f50d353327b506e5695dc73332fa484d98e15a7c3d95e2eb29c7c25c12dbd1bb8ea8df49ab65491b73f5a7821bf02df38a63f2529c52bbd8c6fee7afd55b56b71d71fd5be41c311da86e873d3cd65a0e59b423f6edb1d14e665c9ee87f93b1283916f8d7f87ed2bdf4aae3e3b07df5a2d45b1cde4b72b780ef4bd76b2996482b4f767e9e78d70ef7a72d781d949596c52eb6fd6a38c8ce98ef8c588e80691cfa5662b7f2cc2b3e280fc51965001fa79ab360f0f9eadc2cf5f931fa75796d7ca36fd7e02ba8d9ffd4269572d3b9af97cda7c9df8b3a078fd9606dcc20db2755bf4de4e0d06b9d638fe6297aa30e7d96becf3d92f526f733b17f569073867104e623c73c7aa3bef224e92b4fe0d731e887ea195a379f218c0fd7f4bfa0d53dfc70eb3561c3d0e07fc1fa06da9ee28351d716cf9f3ddef917b0fffca9f54e6c5de7117fba615fdc9a30b904ee91ecbf4edb44d64ead7bb5b4753cca2733f6ef8d628eec006f04625ac9a6df4a518727f6308bef1dd197f004797c32de6a66bb1dcc67c8f671f0a4d9cc80fdc43e873884a83f017fc739033e2cf798683e91715bd428c680efd5b56afa31eec75d5aba979503b87b8c0bc1c63357a83c12f5735bc39562985331f8e3b91f5cbf13583cae015fb56f252d5e477350300c447c03eb87585ef33362bffcd8505c18afd8b2faebaf719324bc33f2f90e7063390657dd270f783e37624345ed19e70034c40f6a3642da1e7dd07c28798cbc2dce33abd554675e66ddfb5d9d975dbc6f8ef9c437961b49dad178d1eee4394fabc8a279505a7fe47659ff1e6f77beabe557f11cd6a90b39538309f86fe57769b29bb4bf89005f2437c7a9947c2cd74eec623bf4e6add4bb1e221bf2cd6f1813edb7688cf4a6eadf94e380ddb78658d3d8e97f2636d46ce3fd42fd5f507347ce7b0832ac24765ae64d4e26def286fb0dde99b47d0bef1fed77ff16bf724f8eab1ceb1ccb86e7583ed4c280d3c76a190d38640fe2de49fe7de0f344ee8a069e78511b58cffd5d28b971f772a4043e7edc9eb33dd7c06bc5f3225b0a3e1bddc73f0c7dfcf51507958e8725f61aad75cd0d580097751274b72087d15ff22fd9670eb937835111039704dead6387ed3b912f68e2f1009de7c53dc52f4cff5beff0be4855be8e3af68c905f12b659b32c44bd137d60981b8b1894a4ef9acda8e0b4cd47d45e3a2f692da624af79deabee13a4bfe53245cb29edfe5471daeec8ac86bc506aa36bef31e5255d56c17c9958ee2db58b5d22e757be40bd9e729fa9f8097b399ff6bf2b0329a716fd8e63c1a615d3f38c791c474d0f6075c6353d0975a38e9e5fcadf372efdcf5538ef436e1de24ced4736e897e72c9cedea798177304ee85ebf1bfb74ea711ab4bbe4388dfa1c950d36c788b99bbbdd537c1b34d67903bbd2984b2ccbbb48cb6f2cb6bed7eda7ede921b69f8c987bf76420b7359c0ecfa1f9933b8ed664028e0ade711766c71cf9ba8a5cb93a3fd09d7befb11c1bd0d9e53c9684e7d37893a3c427b01d3b02233a66b6343c17c9cfedc60e624f8e9e5fe4cf0fe4f315d8d453e04790db4b94f69ee4df9de5e752477a6ea0b45f29cf55f273f36c5cc6e774ebe791bdde2b38c8c0f5d0177a91e09897f2792eeb74303aa703c47be0fcf83b1a176c8f80bfe1276fc3ddc61adf26c6f4bb1755ae99f04a94584e47b795483b8cf35df0b619303ad077f133ddaa79a449bb6fa978f8755e1678e6d680bd5bb7ef1033cd9b768cf292da698213620931206af3f13353bbc7751eab4a3a5fcef681dc7d909567e082da6587d446eedd74b06538ca80ab6490d3668c2cdeb77b3931d72ff9f3d5f9963869648c0cfe2ec4b99271513876d6c2c0d1adcaf0e24bdf9837ed8c39f6965e2fa6e452b33ceaceb0c6a9d5bd083e17fa5ea1d7503c96fc9c0e88ed51f33553d98fe354f69ea6dfcb582c4d9853ac1d9d730e6240b4e6f57dd1b757c10bbea7eab0fa77a881a09ff19c61e9fd1c43a1869f8de789f2b0b3d83e9c73c6bf8dd815da770c3fc6a8c74be771b62b0688f50778d017594668b605aee36da871266af7717bc46ad3e9d801c391d63066f5fdeed47c672c6fe380d85659a5d77691b3b00a2ef0b75937e063dc89b16515d475196c2795f791ee3d2617ac51670ed8acfd04315af5389aaa2b50eeb8bddc56932d658c733997f5aae41c9237c68923e9437fc1f8cbcbbf86dede7cfe0df206c6c3b8eb1bec2794095995b4fdcb0f36773a762e6fdb3a0a0cbb51feee7ffe151a6a4965fd886208564cde200e5dbd26dc648b993f6bc2097e482ef1fed4e26b3599c46410ad0340cc901a6f0bbb5b8c78b4da396a9245a6fbc988bf47db79bdc3f13f34d8b10abfb0ca77d1c51a531e2ffc66ccc759e4eafba43bf92bdd40e5d9d91e86cf4755f6319b51e5d8d1f16244cd5c40ee6b90474a9f342c1695db87fa90474ece3047cfe9c68cf72ae64ae98ff0353906ae9dcdf7bf865e764cec519e387d2ff1ba79f63ca9e8395ebf6eba708f8eab7d3ee4f1e1fe47168ec0ef2bf9587771d029d2d22563047ee5745054ab20db674e7f1005be15054f6b62cf45a1bf8d03b735def4a70b7fb67ef38a8f38e8dce2b7fd7a35985be9f3fe3cb6fdd378971d5676718983f9215a74ce69999e33bbf8bd5a74a70b7ffe8bff6ed1fb6bdcba9e64fd32b6fd1372e4fbcf59303a4416eb7bfe19801ede8a278bcb3af1d7608b046f433507fca5e3faadf9cfb7a23bf25ffcc5cc9f8fdeacce1bd9df5319cf553c375d2c3bbf96d6f5e7f2658977c247ef3291b15adda93fdbce47feb6785b2cbb3fc2567f315f4e474babf8f9b6017fdb69f2dcbbc07ff77e67b5fa815befd7e4ad27e3c7fe5eb6fbc755d0297ce4e27e5b8587029f7b519fb3ddcfd4bb16cbf6bc485d88ed91fe5fc71fbdf5b8eaed572dc0573bc53ee2dd2eede25bbce87d0e9f5f4e1347c1e42dd5fd53bc6561ff92b44716cdcd058eb4c48ed6f3f27a8ec2d96db2a5f717f877002f99fb284654d68cabfdfa2da43111bb63454171227a27c42ae49cfc0dee03291fc89c2f8fefb28cdc23124e8cd0fbbeff357c91312b25bf3fc367d94d4e43677f6ea803577d06cfb37f0d9de3ef9592e7867e43363f4a2d815db05a827458d2f715970dea51c4ce777fbc2a39fd905b4d39538bdbbc2c4eab705e189ea9c549692c44e3f690f2b3e87a0444ae05d7561c4e647cfc4342f311835bef387c76b3e1609427655688b5c1fb2ff1d75732276f816bad9ccee72a78da93cf64fc3e72360dcf54da334a3b51b866ed5c9adaa1cf54f23334cef41605ad4be2f9011bdbcfc5177bba42fd5bdfcfafdee75bea5dc93e5e0266b30fe7ea20ea19ef3f2761114b9cf52ffb68f9721d3bfd7cf6363472f34c164f97a163ad2715f9ff7e1d2d5faaa17394ff7dd5718465b939dbe4f9ec8dc847b73fd998e264bd1b910baf1be8c37abce8d9e2df2f3a5fbc7c3f3cbf9236175fb579b78d8f28b87ecc4affdb2af0ab57cf5de25cdcedeffe559f37320ffe6cfd5af51decd305e689e8bda40fbed3fb3d7c99c06ff867cf77727f01037d7a4cdafde2c13eb1f1f6d5f7f7fe1a7aee52f4af57d1e71cf373c7f5ac82f5aa6143cb6b4af65be6754fcbd2bdac06d373b22d2cbc1b97fbc85f937e0eb2c0bfa52d25be68e2bee6f6ccdbd60ffd17721715cbb93feafb2fc5cfb76202722db48dfe14a233809f71695fcf9473731787f3b7c4eb5ee2459ecfdb7e91b6a74bb88ff18e8e10b7a3565f5b6febcdc2fbd394bf45cf46b4cc5a7138bdf93a5e9a9e07e84d5be90e7cef11e432d9ee51d21f9afab91e2ffa79f0ace4c0b2795d8fdfac75d4f62b8c45acd7e3aa361f5fe874bcad2fcf07bbcffdd23d92dfa8b8a96a6df46423d67502b8674679c4d655af93fcd4df45b98441c755ce2ab6ff17699fcad8b7ccf32fa84b801e76c5f91cd66343c633373a24a55bbdfbd35654ce0f59596cc91e0a1c3823644f3b86fa27beae6357adc5666be13b2a170ddbf752ceca36a9d498b1f82de4bdf4c9b97cf55c87c8e168f972183adfd793cdd345d1f3a5bd509b2bd1cfe63d56f345ca7bf6693d719e2e750e13d7c1dc3cf6ee87303ff219c467459fccbccdd63a833cf6e5faf5a59567defa1405a39bdc2fc817bbaf0397a34deff7ab0d31e7377f397a59f8317e5774a7333fffb5f0e7ee72eb2ec96f974a0c5b3ae7faf8cc6785c89ee5bcec568143f64d2d97e990ece645ba033e26e07b437fc7d3a569efb0b300cf2dd47d9478ee2d73a77912f6696cdc78cec87d7a95fd35e86b5aff4b9a7f7a7e681e09d669f1cf469b689df8f43d3ed165fd226d7dd6fa182e7adf7fc25e3aae5fabfaf73ab77e6d2e80cbc170968df5f2bdcf7150ebbf7636e75097f573d1237712d9e775d962eb6df8d9eba207755a5f3fbb24f7e93524764b4dcf9b2662cfb0b9b30eda3aef40fe5af1392dc09631cdc93af68a5be634c9394db6049d43e615e4f7a03b80cfcbf6d97db08ff19ef192f6e8ce9d88be887a5b4fdd06dbb449e73fc561662576671185fd7d6a774f8b700ef63c93ab727f9a6bdfc1d63844c195deeb8ceb439747524db7d4ae01abd7f89ba82c4e5138ea2cdbfe26f60a7b15807d138d0d7bd5f4196041b6d85a4fad38ec837d7ca72605fdbded7e150790bbdbe2b16b8e7d54d7bdd2c1a8807cea816fc58bb5ac5ffd52be0b540c49d547d58a26940321f1b757b4fbc83ee09fe9f772931e703f8f1879126419599239adf9cc109b5beebbb6a7e4396ac4d0c0dc5db4df886dfb19bcbd50f905f61afdac9ecb4bf7aba46bd5db253284ea840dbfef5deed4d5e601cde3982c6af80da88f3dbf7ce583cb136feac4e1e11087c33d39d7fe0b911d6bd2b703fa9ca81f8af9f3241eaf78039cc3cf89ddb1d2b27b5c7add83092bffd59ccb98c87d7e273627d1af2479f6feb687bd24e25a97b5e13795e1379518b755eb37e5dcb00023cabd6c243f1c9f8bd01912db2be13adf1b936b176c7fd1fb4d7efbea5f36c20e8e4ecdf99d6a6e8a849761a58c2748e48a0ab943bedbb5847fd31db5c057b1fc6c6583793e1c4c2f1483fcb21a14b75530bde9765f5202afe139dd3cad67c13c4f07f32276683eec4b5c4541ab48379dbfd2ea82dc57e1e810dbb9357cf93cc7c1d37a56767fffd37ed0d07b3abf6efa83551817e49c0c07739a6300fc37d58afa9dc714eb2c1e2037237effb24eede2330bae39c316c89c9e3d798967cbaadf5e05d723e7cc188c5ac906717493b66f6978d9db0cd61dda38249bfe392de745bae95b4985f209dfc1eab263e0384d3dd75a394feb19f0884ccf80c5e6b937167f24cf22dec1a105b9a2b43e7615b48aa1372f12b26e8ef5391cf837c04fe239f27c3c9b389cb7e300700b3fb2819f270efbbd7b52fbddfb1c2f1afa3be8131d57c62e927ed7fa48ecce2d1b8c723a177952169f748e999f106378e27cbca5c82db958dc66cdfb5b8971d0fd69b91f91ed1f63f6fe2d9133e49e9b17af03fa7fd3f9705ab7cc43fcd2186a77baa46febb43d875c8677a7f739a4bf1f9762dfc8cf641ff76aa259ff7cf015529c1e32d690ec99b9e7d3bc89c28e17f921290b6b15b8477c66791c7a7372776fe3107342c97eaed974b47f3adf1c915f924e8463d8ad89dc51da1b97f327329e783093fdd8f60fb267d5fe9cb24def37d963340feb9095cb533c88d6af9bfe365378e5f879fb3694f4217dae65d91aef46072ad34dbf29d3b2f860d8f3543f32c83bd9f7307ffab1e9b3f5b595770da26f7fb4777ced9d667bea46f7ef88e85a711bf734be3fa7fdb89079aee5fb44502bf11feffb51b585210ec7faec66a02361fd08f91de6682a6bbd4fa57d49f6ccc4796a1119faaae9f5c06dfd677b5f9e9ff5eba677197f90f70c751b648b39c97d883bce43b0efc43cfbc05ff1a29c17767e895c732eeba8da6af3307f22ef94e23dd49fdbdb478bcef6dde9fd1e3e0f4f1362d338f906cfcb711d55e4bb2d9c27f2993e07f120de423e33c4887ae7e173c4dac8c7e5dc069ff4067dd2afde10cf51d5ff20dfbd92fbdf9b91cf245f9038c364dde8de80bec4837c8b36d7dcaa3f1fc9cfdbf87c6c789eeb4ef86c33c79b69cf2f16b7b917417c77d4796dbe6fa53bc2e06f280b8bca1a913b87ebfef463d3fb547c0ae41c3c2bf13e2e577e6c30e7b759bea83c91da1ebb4421f22d04b77ea67d07f764685ff37430c55a53a50f88f396787e15419d1fac3fd9535788696abeb5b98bfb6eba21fbe3e532d1dbf2f23c2bfd5fb27ea2ed5d4bebdf310aa756d8c6b5176bcbd783e56adfe2657c4c6cd792d60af3929e9717890353c85d965bbd9b1634d6b397e694fe76286c0a8fe8982ede834467176380b81ce237089e2a69ed4f99e79f529bc7ff59ff241bac73c85cc3bd0cb601ef9378de73edd8efca7a4d57e91fc616390e32cee5f7bf862f60c3b412383b18d7237b3c0bdce370303f401e23609fbabf65ccc915f2df1d9280b60f9c64600f1e63c0c9472c57aa4755493b3ec4809343f4bdf981e6ae8878aaece7a88d45c737d8af973b9f71b9dd56410bfa8ffd00f978cec2d93a52f4b527cc7310f7f72109fc5f89e75e00535d92b9cbedd19a97ee47e675abf7452eee7265af28392d4417078cc38c7204c40baebf12dd50d15d95183695f9b42e44ed93f35dd953af9bfe8bff7c1fb711e5bcfa9c34bf18ef793efe4bc7f97eddf47fc4616e8ddb532b0e55ffc678b33f4b7d55ce9f3c6f8b80e83d5925eec1e51e7da25d2a9ba156423e0770cfaab94edfff1aba98f3caea640537f013cf55e1b63ad81214f3eaf985dc2f4affc63b15af38f38acfd8ef1ea390d81eb3f5ebcd5a4fde227d2e46318d7147760eb16dd217e04ff3ba47ca8554017eaee76fc70c63b9aaf70f7d292f7b1a97cea3dd449b93ce13f8cc55995a8e36fd2991d1e3d2dda455ae8d293a0c9f9fd619e94b3802cc66439e691df759c12c78e267691144ca3e23671bf955781dce51ba1b8d32222dfd6b16141560f7413e1a970560cb53cc11d5467ae95a2bcfaf32bbb811bd48f8555ed6917d3da76d9f617059432f3f03c710d913727d8227f9e9a8bd8635b0b4bfbb099103b7a424672a3f67c89948f19438173519cf47d21e6da93d79063bd72e6ca8a3f580bbe494bd08f9a6e73ac83e876150bbd3d63fabdabdaae6b239f9250e47c4c6b7100be75a645ea31f17eeefa0dd2fd2725a24bb39e2ab7abe152f40ffbae0dee1b8179fc3e797c3707059cbd849bfde24bfc98ef2d017d7138ba34565c1e355ba4f2a6afb9b55207c5fd9f3cb7138e85dc74edf9a6c2eebf459cbb5f2586c15f25e994fa5983dd04e0d1f54a965e0fedf2229c93e65733233e64e10fd3edd41dc7d1f937de258ec33cc1960f139a91d5e132c712fd31ac83cb58b538c3c64745e33c8c78ac2e1ee87aa47b2cff7f47d47e4f0bc88fd65f6f351fec6de6fc0022c67ebf1827d06790b7cdfa83993c8a91a07719e05574bf41573d64736f9f792f4f143cd9d5b5fc61fc3d6d821f6c9cb11e2edc44e79e63ceebb38706ff1a2754836e9377d9fbc3ef74ed3e721f91df98de977507f657c2f7927bc77f904f93f5417a67dfd5c054f9f50d77adbd7f6dfc47982fd32712e60b3fd20ff5f303b086a320e49e9d7da833959348d23a5e3e89da6b7199d93f43ae5ed6645144e8b71d06d654eeb46d6b7a16fb71f0becd7f4b6c4f6dea2d6bd318e43d2dfa6f59959536cef3265ede2ff3b5365cc6e2ba2381aca98433f8f9d8631bf61ff26cf6b3adee889aec94def2bf693bca3613df93e9ad9f4fff4df5bab79dcf7da9bb1715e26158e7b42fbfbe36dd9626d22e70eac41ed1df8f9a4a1fd25ed5f8fbdc766eb3579db9af6f117ed0dafac9d09feff86f36b3a4b8fb41789757fa6fdba2d957d04751fa19fa73bf3baa7bba6b95d77b4b9b57fb0777c0c8d63bfdfde8b4ddb7b9ae299b4a6ca996467a738d1f373cd0222d31af6e54d9cc5c95b6a1af321318ff99034f6316d69e7e849ecffa869cc77da1bde48bf700f4daafbe7db6dad824e932c7b9a0a597699569a2cf3fca7d4ebd6da8dc3fc9254e6f9fbc1c745e5cf6dcbf6faad419e15ef83feb9a17f579067386715c8dde6756d6e67c1c6a88f6f7a484bc3d9b58b2a6a181fced7d385eeb5ce0ffcff6d725b9acfed9db626cf299d1bcc1fe57bb9798c1fab70f4d130576d7e8ede26ec5e65eddbf21ecec269416bcff364d127ef382465761b6f9ea8ad98515f54aaeb16ecf3bdf02b5c643fc151f605d4eb23143f46f7e7a2a7e715c9fc84c0811671bf6abace2ad54e9db88658aad0954e90671eb815aded967d1617c0b5f40ead24ec417d3fe868c883f6997a9775ec758b1479e2891d817ced0ddc0dcc2ea53917a618cc63f3f556d723ff5c07fd239d8eafa7a41bd6f5762e5b700f8f03268beafb5aaa75d6f3a35cb2976317f3885e07f34e4aecf2e6311df95a5ab1d84b14cf80e9a2741f5dcdf9f7fe29aee5da524c089c1788cb435dd8a3bf47ffaa1d0558a746cf8e976c589b17686fec087d59c741cb0605e6b218f87845fc25ce1373df21af7fbc43bc44ccc75822160db40b3551e754f309433d21cda54b4bc0e3db67a57bace3104bef2889be8079214d3ce88c2f56ce87279f11bb4ab4b1d5633dd23cc06f0c3846cdfd4f82e2841ca77ccca48d5ade726d2e697c5eabedb1e81ceea10e9dd849ed7e11f1da425a9f05df752e7181fb77e8bc74d1f77d81b9a7df631dc34270c1d56420f8287ba7d48b03fd59e4a2c8a1f68eec6ba57de85387aebd7f02dc695ae7325aa47a9d98b043b57e3f9a13a58ca796c754ffad986b189f541b669873b81fe97971e179b451d9df0d32604c797b97eafa20e6133d53f8fefe1bcca1b4463f2bf9b7388f503fc17ce7324e219785bdef6ace4f5f963b9c2b5bc39b919e7952737ec4b82056a1ef571183c6fc50656f822d3f9f913168f3a062c09533960b4ff71791fb4dbf93b0c53cce0dcdef07c89f621c8ee043d81a7d1dc81febdee280bf13f7a9d36f948944de0bd9c97396544e7d5a4f2cfc2651296abd6bfda175ccd08f7eba936ab51fe2dce86cef6352b1dacb2d8b015699ab61aed035582106d52966dfd7381aa707796f220fce56c22733d7f233597b6fbe5780f5b16dbe47dff4fa7f3e5f8ccf0eb8c11fe1d835fcb658d5b871efe5b5917ef9db5938aa9a65b7742734c8f0b43d2f52ac692d310f697b049cd0eab25e85d367c0b55031150fa905781b640fe4ec199973266cf7609da14d092f477e260a3a07fa1c79a78cdd21bfeb42d68ae987f437442f85cf149e1e3ce34b88e148cfca9f2bef6fc35e3ca4166289cb3c7794f3e1e37dc1ef45f60e990f8c622be9d8e7eb5cefe722685d54fc739475d2d8d87eae63100f7c72a6b98f50da1f795216bf52a7c364c1280991b382bd376d1d774c8f97b9fdcd7b92629e064f3c776c3848cf43af9327815f3ba7f49de40cdd8cb8ce1cc7abefe2b3fa3d5b6b0be42cc6aa90972c25f2ca5eee47ed7915051d1607f8ccbce293b43d0e846f7e545dd6e90b3dab9556cbcece708bdce31359f744d9bed3eef73be7166c409afb96b6a72d88ab0c4605f6d5df3219fbc5fbf9daeb351cbacc4c4af7335e5ca00ed5887d33e09891ca9a18624da7889e0db63fc8fda8e308c07b146e89fbf381fd03992d8d1138aff49a978afae0957e8e77d3e32a9816afcfc3c3b86ce5a98675a6c795551badf73bf9d03118eef18bf35a649d37ac8605a2708233ce533237ea9c52dc639c03a2eb8fda2c573535618fe1bb298e059713c22e67586aa718b085259b1fe25d2226c3f39abee07935cb2269bddad304faef5ba728ec5f92c1768ff728dd73d5c39846102b5d0593f50aded1dfbc2f70cf69fbe0b4022e4676afa2cf40da17b7c006999399eb9b5a269b92fe36a5f7495d2e2a729ce9a89aee6a580f43eebaa6c7be697a6cc37380bd56b13cce91e57bc567bcd8aec715efaff0b1d4723971dfd2e7f274d03fbe0720e71af463de26d1597769e9dfd839d7da94fa78d17863157dfbc2740c15835b7a66a3f911841dd0e539fa9a0dcbe7dbf38f5108785d061d4edc4b0cd3ae9e773ab2965ef766b8f7673c2fe143d7753bdbda6f44acb956d7c39f073dbab8cd01530beae472c61195d8d3df7130ab61a0522ec3226bf5cfc81ffcd935dd99c83734db8bbe4f4eef54ff27ef1eef0c1882bcddce1393ed927d089fa37f48b427d6e6c2ef821a6f42ed9e89f3c403dc603edfe3dd96d99ee43d06bc22a865c2f7f23b62a98e6f218faf41f7ae6180c9d883c85928addd3e29fd3669ef1e672ceb43143cc9e785cd5b6ede2fee49dd2f6e8da788b607672f0a9eb4da3af7b40a004fff14b7fa39e67fc1fce5e02b927d195e719bd9ddcac0652bf233ca8cf45fe33880679087cbc9c57836621f44c1d3e9ddc0e34ec643f33ac1772ed61a3e3f8abe425b067b343ddcd1678c7b1cfac2f70079cfd6a027c23b3b86fd0d9f2be35afcf9fea6e717f02a5f9d8cacdbee81bdb34aeceea741e6c0e7dabe20fdab3dff5e76cf8986bf2df2f53abb807ccfede1c339b12d1d879bd92f3579556f473d9ba6338dcfe15ad0dfd4f608ef37f40bfda8af2eb9cf5b87a4803e1eb5730ee3a66bc4fe36ee9db103e7e6330a7378ee0fd6ec1b795ec71555e327fad9833c37f92ce13b55bf05e5bff23f57e16c3f6ac78738cc0073a4e95d940707b03bb5bdd1c15a5b8d8706f13bc18f41ffd6b8dcd93a83cdad9df5669f8cde56131eaee82fd8e2e0e332e1e1529c026e43501f27fcfb87c1df023121f6dcb3e99dc257a79d1fe4b2f63f7f51bdd4c8cd247c7190e38f78d83b98f722ddcd0f71384da8efeb74a79d82c7551cfd7e32e5fe087962f423f2b6697fcaae1d87a36a15cc8bd9aeb844e1f4f68af7d591cd25ddffb40f9aae0d7156e016a4eba2f1c5d3bb8f739ae01e533953a08d82f3d909fd8feae164ceecac8ac329f208c8bab1e24be2f73260f2222f875c63a4ca121a93e2fb8dd9aa74cd15ff3cdd2b061f88e427e5b5bd753d92fb5969fbaf989b79ca82d6066a3e214665ccdb92f99e35dd96d52703ffeca981ab42f97dcdff266158e1bc2b713dbcc35eb85c3a279b3ff2c3519d05b02e4e2b19b39faebf76aeea9c547c0fc83609728782ad62da23ce7e6db0931af604d473f713efb24fca6e7b0c98e66aec01b16901d742e366724fab25c83c79ccdbc4ee1473f61b1907d7abbdf767522e119bd6e1f7649ddb0fe59ecef1d880573263ba9d9223cb310b9e358e8ed02fb26069fc0dfd4eaba11be5c9d63dad14be2dca451344c8d3e2411d2cc78948065b456718d3d87f6a773fe370be07ffa217574477c03c7fb715877e51d317d8181c8e99da50b70deb708ac31c71ca711ca7d4ce0ff16eb6d731db697ca4781fcc6a778ff44eca878ccf35dafd85a25301275554ba1f2bf42be9f83becbb7d684ff3c4bb6ea260fa5be79d50b836a056ba2bff56c2aa23b63e7009fe0fbd67ff1a2f2cf37dea4d37c85b28bdb7f5f9977ea746f6707f4fc751fbddb921aeff723f712efa776ccda43a2d8b726762ad00cbb7a63c4187989e25819367d227c43ed3f294918fe48361e959badec4755915e7c618f3b92fc76a7b49c8aca4ddbfd4300fd47dc5e76c85b941ba4f92faa2f273627fa27c5470077bbaaffd92786e87e7abc87792de2695a9144f42c3f163ebef1e136f9447f6e78d8faba4b5ea351ff6f49cece68744e3a533d958c380cbed631416e01723fa25ffbc742fa9778571d4fd090def416cdb1cfcde83fef11d3034b2fd2ab816c381780fe4ef07d72de792f3dcd33b9543ca5eabada7da5776c7a04f123eafaf73fd19f35c9bfc198eabdafc35fe7856bb38b266520d15f2dd5ce0dd63a77f4ada776dde5be6f917c36f8edcbed7b18f1ff1f5a97b527ac6bc7fb53e29b291dfe5bb519e04fecd2cbfc59e26b2e44eac559a53326ea2477ced8f4fcaed29e2f514066eb9fff3675ad4a4d4f1ec657d5eb9ff550eca1a36ca9ac75e5147e53a8a643f629e207c4fef7d498e774d3cabb1d73dc54bca5744e3d289b73c18fb21f4e02a0a3afda42c3826b4b87bfaae8a774dec11b2e6f363bce8e7c406400e1661db085dc83fc64b7227a86b48f53de9ae5a32dbb730f31d2c4d1c891acf81146fc0efc9d9d8269ebff5bd1cedef05da9ab26e29e71d4641878cb59f9470772aff2676ceca7391dfd79def57c043b4e4b91b44c7835a3547c60757395ed3d23d81cc607322f505b0bd51b7e73124caa943ec11cadd33d23845dd13d1a5897c83ba599873a227439f655d99f3d948f3bafeb9d17350212e7e125c3ef32a0ad31de33f316155bd2b587cdb5322b862b669e9b69bf939b92e23e1b6337ef02b6098017e2f931bc07f2af9802ad0810ed960427558ff06314ad25ed8b7de7d89a313c7dd4aca56919659f1eacdcf49e9bbf29848df253bbc489d9472b2b0d8987f9905d7a3819f653b917017204f7e009c558764a3d4e249f9ac9d1bb7df603ccb6fbc0e7031bb81ed849fef59eeb25c07fc63d3a7f988cbeda452ec92daf371306b681be434e65a7bd3631cb8d5126d01ed79e53bde3e8df968cfce0b228b45bbf8ef5973dfb77170cddf97b20dbda6b9e464cebb17ed79f84cb4ef6e63777e96db07ee3503478eef75fb629e3a125f7d9d3787e696105bed56c310735c913bb2f44f8039688819311f829c73087bc376c99eff780fa6908393d9908b704a2a89ebcbf6b7aa5edf685b9f92c0af627b49cf36cf25c3f919808e2d8f7b92d830a79a1fa37b91e7f0cdeb9e5347c15883b9a8f581add96ebac882cec978074b7dd17531788fb656d4d751ebf36b1d5752e686e53246e7cb96cf4dda1ab592b2c3f44c3346dc7f6d7d596df0f7f5db7648b19be473d03f92710f07d901eed8302fa20a64ca3e0e5c72afddd2aa5f24bbf89096dd13e3b1216360794e71d0019c79c1790e3c73a7d8e917ef83fe71154c0f19cafc6d1c4eadb4ec92b34b6b93fd8f389cdea210f891cfb8977ab49fd773d2eec3fe64e390d770e5f939b927d3f614301b5f1d43ec02e759e6a994e458e7b6dcf9a7a434eacdcca7784f0f2bc89d90b6957de4a590e721e7a7c8f2b9f326e9bcfa3bb9fc7fa53ebda8bd3d68faa8589716e8d99a6fc06ad0c1602f57824792fad27682e30df1066bfcf79ceb17620fe2dfa7a8f44b723731ce3f439dc9310e67d49f24de331c4ca1d63e2336a1a79c6f656e39f75c49eebf6e15333eba8d32b7624c5ba9ad02e726b38b63f202fa05f593fef99cffc27af6c6712f07a343d21e1d32af20f7bfb2bfbed2652887de290a328e3521dfe509c8c8fe390b47b738b8da7128cd91971751303f92f3035c10ce9ae974e52a1c01ff4204ba440d4392d58f50df6aeb900de645bae53c348aae91867e9e208f7985f5ec6e15bf69f2d4f4cc42e240f97839621cc2072c0e05679dd68b48cfae354e4ee9bb6143fe87822328de23d580a07d23f7a157c751f92a675ff0c25cc7bb29b1859771985bafead86aba28d5358a0cb83ec91e055e70153780f26ebf05ae15d9799156c80b9678c50d38fd8053933e638ffe3260abf13e00af8ff8dd495e9fda5d24ff4ee44c37d53b91fb10ea55e230061e9ea8dc4b1cd81007e15c42a66768dc45e2c7e97c027f29d193a5f1099edd2ff873e45805d30388cef6826dcdcba248bcf94dd347f2d89bbbb81ef1210eae5b36df71182b5c23e4dfe312b90c391f3cfb5ce602f6a61d8deb48f8502cf09715ef8399b6e6c23f3bb3bba7ccf39f32e7f17517312462cbcc21ef6fbc735b90d781180db9cc296b5cb3e7bd1897cc3584f60719df9b58abd9b5861f118e764b712ef6e4df5a2dd98de280d2ef8c3132e0e5a8b5d39c3727b085c3d14e8aad69b28d71684612bfe5b48a89cdb2045e592b0e87fa9ae8dfef6b67cdc51c64c44269f04553ff0be6555219abe5a9aadf713e3137090a2bf3a02684f661f4331de09d02bca4a88f7ee56fe1b6852c8358dbda79e09f3760d41a74733e3fdad903fb4b6efb9c6c72947d8389720f8ce533a2f85e90474bcccdfa302ec1af6aa30d7fd1f7dd76b25038b78ef2d932d57d222fa95a7fc9b8b7dec4d933f3942dc57993fb24dd0feafbe5fd837b469eef93e1bd4c76dec64efd0cca32fb757191fc89c7830123cfb40f280f9bdf4fbceb64154e2de003db4d1ac6eb1e931731e6b432d86da57c5e3a4dedef1f5d8bc4ee14b57d542ee57991d65b9d832ffaa6b7f39f98df73524e0dfd9f16ffc47e2173f39f3e0b70f634bb197d57d25926f7d560942f3db78a82d6edab7e7ff9fb3fe99bcc55ff66e8a7c2654fdfc9f8979b640deb9ba473d071707f25ee9b19e5a79c7cb91fd89dc4ea6546cf9313dd7bfdc42bf2d4f66f6ff6d35ebaab0ef21d16d9dd2a0ee2d3e87928eeb041ff14df341ddcebec5e059764cddf24db72ccefa4c873c91614b888829bf2e7a27f667710fa81313f59f7f10b1bb37321777ed2eea35f44f71b79878b3e86d5aeffff6e0ce2b95384be1bfeecb81cede07927fd88cbb81cdd0c7854928da88f43df0bd29a92670b8cc9814fbd4c36b36a5c92b95130bcd87737819d0cb1d07316ea3ae5357f072c8b9cf7dfc0ad237173d77287c51c35d59c797e9596ddead5c926b40f6bb1ce12dfde607a898329e8a2b103d8dc9f51f0590cbd9775e2b91dc08052635d35bf4b3d4753ac13afa931d482135d27dd8dcee966bd9b2dfa588314f464fe3bc6c17a8883196054503efb5ccca11ab7adfbe36a3e169efb28e643cb7fc4e7f8bcd13ac1e25d6087ee47367fff116beb248e39360f2fec99afc7ffff71f76eed8922ddfbf0077a0e1ec0d8d31e462228517bd4c8ee8c4d5a8ca04ebbc54fff5eb5561554158549ba33cfff77bd07734d47118adaacfdbaef97e2fb2ae9b86f51bd67568199ac9e4b3a5ef3b0720ca873d1e36246f6d620f2662b727fc8a1818f03ebb78ffdfe39d9ce004b14ea45ecfedbab3f3f27c6344bece529f5a7f9b39993bda4fd5d7e7afe2007a4f05159ff1a772651fecaefcc78e083cee6e498cdebdff1f5051e79ba7ef899d8eb2edf77f5037ce3878dccdb219ebb7acda8adcff6c18ee34fee8d4deefea6943b7b017fed208ff9079dbbba7f73a3d24d6cfd657fafce3395ddb7a4009c6a618f72dfc3197ea1e71739d7983c9b9cd8b956ebb019e787a9757795db633e2fed6da43a13f369bfed8f65d41e74200603b52d721d01d4a9e3f72f38967d60d0d83ed413defb1ee2557ffd54f4acb37d05b52805c4787e804d51e46f2c5ee819dc3bbb1aab095c437c84da32913765f1d298cec90fe89f434c56fa7e2237b2ba5e83c647b04e5289a74165bd9803e2d7e15eed3d3beb7c9e997b579a47dd44fe14f30788b70d79133a3ffbb84855fd1558bf0435138d39b1e202f873372d781d5c7f338c2b7fb5738df8acc06965e06f85bc982a764e6d464ee7ef9e690d66e867fbd4c4da393edf813e84bbc167613f79dc116d9ac87b580564de0c378fd7fd027209fe6435ba0db41f2f1bf27f7df296b5ece9799e74e665dc21ba7685b97ad3e2c6fd5e6e498c21d4f177c9861e803eaa625273554ed096d7458e7536bedf0545ef1c37f36f1f3dd7ebd8e81d280f914ec64ef16e5b7157efed9d7774c4dddf823c847779fc2f8d4d12dda0e0e86de2cd2afde0a2d79013925f798a35c57cdef5879bd7d37c6aad33789fb1cd1fe2c6f4ccea4a443f1865979d37fc95fa8c272d7c4078c6843c2bfee629ee40cfe87f90eb5191ff85eb56dfe47a6feebb3f88e9659c4c9e9e538a91a5b493395d31337abad827abe4b252debb89e3c6e9050bfb48aa7a773a6f2237bd889d7d4f07817fd1d194360cf73bba06875f1f8c87107962c2781b3185eee6df5a13c5bc29cf9a741e1bf71a2fb4466eb43917ea5a39c403c49e64d6f343fb753691ef68af0bd16e6b5fdbae9ed873e40f913145cc777c6429cf8b397a26d7298636f7bbd80858bdd386ea7f6aeba3cc1f01b61c1933970f1ff4d651e1bea566f757e8e7b7e7bb76d2e61416bd720eb56c2296036fd3b46181fc862df5978c79406d20b06d424fbfa4c34da3fee283ba50ced1b7e11f7c54af8a7e4a557b50d721b4f49dded523814a26dab83ecff7638fb407895ecbe9024ec7f0715d16733d858adf48f25d94df752f1b8c2535ac321c4e5658f74bf68eb38fed1ceaee2add32206762a07cafb96d69c1223b06fee3bbf557ca7c47c1e687c7775fa97a5df62162b6fc1d14fb3ce8cc4e91e17693129f2d9d539eab7b8f38678755b478fc3eb2f38d5893ba116b52b9731e617df13e1c4ee348ddb748644e06beac675d3c23df28fb356d5ab36a4fbb63e2e70f58fe766ebe2ef3cdb39d6f9a9856d77c5cc0bcef4298e3164caa456b5e91abdb20b69aa5c743ca9768bb45e0bb877438d9d138d72ef2e6f9dc9b6f437ffa779cd7fdb5955d45f738e44f876e192e7b27b7c8f3b403b18a6fac2e98eaa2638cf591663cc43c187f8fd8ebc13acf8aab9e6c7a97c09beed3e1e61bc3dca5f1d7fdabed1e9680bbf2fd9b88ab58d52edea2cefc9c58f32cb138ce89a7dd6a6ab2f1f6f4c0c89681df5f4643274f8cec1cdbb36fa3a7157d4eba0b3df7b03400db548bfc908e6550d53e065b772bbf03f45768e125213617d8752e997fd887523c51e7e2896c4d96b11c5ba6bac1b5bfef822a4f7d59bdd25e70c00430fb97570bb1499ab5099f88d70e47a74f3fefe3f93da6e39a79ae5a3f7e2cffd9187b65eb1471c779abea95de247ba7e89581e12e70aea5dcb2946b60b5d19f78bf5be4efe5bc5319fac057ad7ad69e9cc7d8cec13e41de63be3f8ccb8d08f994d5963d8b8fdfde95edc893b7a8cebd342fc893c4adc39d3c805a76835ca9ef9ff7cbb8333fb358208daf01ffcfb399727e7172183562cacd5ab8655d1f3f4b8a9e1697efc55db364b49966e09f756635bfa19d0367281793e5c6d25ff9e688d8ee27622b3563dd97956f3ad0d7907addcd78fd45715afdb27e5efc7e1c3e35b23cf4ae2f21c55f4b8b5c6375426db8b623b3df097ce7f46c5dd61e8c3fcbd262b94a0ce4260d3aee2db57b472603a16e600b383d46e4cfbbe3f5e3ca452e1aca73aa6711b1b9bc9e0e752bc3472a2ffa7a5c7433728e03ef7a785df43b91ed9e2ace51f23b0ff83ff3c023ba327f0b170fab91959fd3459fc86c3db667027f50e44f5629c5050eb70e7906d8d095ee82fcefb50bbec910eef31678c09d9d258545e419dc2780b5b91ee01a7f84b8e1dbc90aea16cdbe4e6c48ac9f9c66c0df65137b28cd9262896b3ae8bd200f57b80f3b351e55e04fd83c54bd99e43dd1df5e9e7c7374b74ef4a5d3d7d097accfe39cd3cb8d9c1e39fb9bde251d4e4ef46cbebdd6324baec195ea50210ede38b7cf43a879b935edca5a06c199aa723495fcade26ecb36796f57b1b2fab9ebd5c7e40cd849f518889e4f87cef97591b0facbeaf9359f2d7b37391f303fc74bdefe823a31e0a14dd6ab66cea7babed18f75243ee238efbdbdfa0ecd27423c42f47b582fa6996d6243b7627b79823d61cf7fc4c6fc9dbe1de0c9a3cfafea3b9e223b3f846df7d30f17ff0378a5723dbde4c3628d26ce2d916deb70d1cf5f87f33258f46f8117e6e3aa9e6559d51b87b978ffd87735a8b35f56f6ed0d6a12dafc50ef9aabfa95dfc302a0fe7b9918d312fc13b3c6f2e2e32fc996c602a4780bfdbd1a3bc06c622e820fccf51f8cb7d8c3079c90029ea71ca3ed9dd8f968d4a9e475adb5c87d29fb47bc2e1d6dc7c4f659379e5384b9da168a8db0a8eac7edf0742f0e48ae6d7f56338f355d88b6cddcce8f4cff2762be5d27b65c426c9f1765cedde0f88ac91e64bc096fb171859a1b72cfca7f35b5158d27acc4185cff4c7b3400df91bf5ebe2e5c0bfd6a7bc6d516769c2cb1572bb0c9eb7a1fa8ff119ecfeb197b50cd65e8cde467a12eb4eb3331b229e75b9d3f426c7403ea8737b48692ff5eae9f14724f586f73817caa507723d586d2ba9cb6783deeb7f54cec41321bd8e0d5bcbd749c277e7d581f565b3c90f6ef096b2ae472c5e764c9d6c95e1719f62cb6f4ed50dd268e03f7338bf3a0ed397cb79613ea6367c2da61dee7f9a5912fd8346bcbbb67a2a7c4ba36b92604afa9e3ad0f1b31ee813dbe2deb03f230f2a720f7c57953f495d47bb7ed7e27aa8f8ac8bb42dd1eff9bf7e60a7edba8199b6f1535f79bd0786f5ef09a3f9c172bb4d3af98979cdce737e7057f2bcd0bf693117931dd517b659b14d62532fb87086a75f6f3d4734b8cb93d6e445df1b87967ee2806b8b27eb89239f77a12de39afefccc3fd7e0e7a8f5b625b9d38079cacdd73938b81ea315d4f6dc8f155bdea89142769b1313e5a4f2dcc47552f56524c0d5a2b88f849b56ee27f27d66204a7b0c80fa98d9c8ffce7ce13a7e72027119e981d8231d863fe5a7104b39c8503d8a54496878bee76bcee6ba91d16e9705edfcb9a2fdc25f4d96f5333f98bd57fcc37d664a9e1e7e13ac16798d925eeccc9b8f7d42fcb5f877df4f1887f635887a0e31e18e6b16f3fc03c20ae08cd59d01ec4d4fe4e7b06abde93555058c00b1b1be48ca15e044e0fdbe926b6754bf4eb89ecfd31f88396c6d7a527651f7b52ccfe3eb5a08ee5960ef3225e531c0dc41a9064005797827e14c58ad784580d9fd7a2f8840d4c2ebe460fecbb8ec041c1f2409b398f8bd55af321c69b91e7fbf1af919db7e020e4b9880158637021b6e6354ff4e39ec7caa3e37d48077a9eda831ad71fe2c9acf7653e0dfd798638274dd9177432edc573b560d1c5de7a49a7621c303ff17858cdfaaae9436ad576359ddf6de8cf9f62a3ab857ea62d71cf70cfdbc8f8ab17c019a2b8791437e6ceef2f2bf26ffa39ea75c5fb85e89ff1bdcd97c4beee436fee501ee56e538fe01858fed01d3a198d8160ce1e71cbb264f8780aedbc0873c4947cafeff08363b98f2f42f12f222207b5f93e2c827addb7ee25b42d2d74712d1664dd86931a0b43ccddf2f790de9fdec7c37a2386892e616a549c39507f039cc5b54ce4f031ead8299dcf70c0b0e3aabe2176cec99e01dcffd077b4c8736f7332bfebc6b93fc7f6fce975381f873e60f1e5a946cec1319731ec702f4abde41546d97447714360bd055f78e89c9301999bf0a694190bc0efbec0f8b613c010a9fc499a074a3deb30eb64dac27041a6c4c67553fd6d1e564ea96dc9ffe3c2edb0cf051e0c03f9b15dca8f42ff8ec3a19bc503fabe5c8e156315d32c30328659a9d281f8dec0b17291311b51e6707b5af06729265868cf73ca690475853f5b649e9063a373dc8e79ca623f14bb8ecc77ce639251ce05e3ba59d8d66d46afe3e7d433f294d6222d97b96b4931ea53e8a7a3c09f3ebd22c73bf99beea13c8e5c0d31f550972a646c96e15909296e51ef10c267d387d4c4982b594736b61f329ec1704e9e3d25722df4708f531df29002ae6efd39dbfb120f82527693e7c11e2cdc0dd49ec159a8c65538adcf56e0a073d8b869d1db8726d6cc70369cfab9887144e74827ba9aee8ffe4d81175de3ef76324dc4859d305c3c3d2cc27d40ec7f7b740ec02e68cecfc8ce6fe06777dc35c6af7b05bd3fc399e57bf4450e26e91d7e6b9c76376735ece4cc05c601f947003be9faeeb35f3c22ffddcd12f1809b98df147f18e2bac3d929e6afb7dd127adf6f58ff181b5d629f213705f05190333efd35b2d97a5cdb30c7f833fb4f7566d7e4cce21c08fc516b993f4ac4fdad708587d338ca95f971354e31dadbfb708d7d00603fdb55ffee2aee8479b275f6e02bd35c40c2e66108f84ac84300f66898051dc040c8521abfe6ef15d9d66d349c7622ec7fde8c0d76aefb9bd8706f888fa767d003990bb524e77109fee2316ad8cdb8fe89919f026309f91fe86bf0278cbb9f8ff5fdfd6c775f27eb0dc494ea5c6b9fd9838791ede8a9d9efc41d47037bd8ecdf22affb162efae7b4c09c0a606174dc436ac963ec93e751393fdbcb3538ac269ecc3191552ffcdc0a182fe2ef043c4e905d9bd573f978fd51f67f01ae35e55aa86dda83a28ea2da07c4c7c8930dc829aa83c338d2a53d538d97c8967acc20fb39bde919c786ec97ef43b14976813f9dd4cf568cafc5eeadcecf42e07385f5488a7c1342ceeb9a279d09dd87dc9e835aaea916f9612e632da24dd6be1e31b1c57c87e8ad53c29f7dfd08676e5c20270bd72bd158bb0a8fb9bad7fcef6adc3276793526a70c3debd78fc6fa697ccd751ef80e913d5952f60fb1d1dd8ec8f9b27ba77041d778dd7f6376fcc8ae71b713798da45a760e33731332b9671d91b76681fc1e1f7f1fde6ee9335e9da6ad5de75c884ca0bab2c2c055d69df17916352eb850fbbeaf722482ed5cf96bbced8c67d83d0ab6a40f7e3037be9b84072e7f57d50061cc41e51fcaf802d45ffcb02d4d6d71883538bccfad1827b335423fa4bf69e4752826bfcb6c7cb0af9d92c6306cccb747f612ed459bd8c12aec410977bf219f362aecc17aafdeb1432b996dd5f18b1a4304f31cf4ec9ff89c01e0a756f2bedb86c701be2cbceba06bfee0c634de72b821b69ebd2e202f875813f8ee5b88392d52d9dfabee51f72c3bd3ea993256209df7e79bb6722dc79dbf8b0f58f935bdd120ecbf58534bf05fd7d5fe077ba39e3f0ecb4ff23bb83882c227cc2e49e11ae499e37abc2c27fdee7e429b0afe4df771e51f55f310117facdedb55ef17374ea89785782437f631d3c7b67b4c8673728f4de485c5b2c12181b5d25416fcc5c51dc93b836d0b35984317704d211654c50559dd6f7f0d1c0526e4b9d81edaa8e4099983b078388586abcdeafd5bc56dc4f35fc5952a595afb42c4cfa6be0b5e0375973f3e2e2bb096ba35465d8dfdd3d7313f9c712b8c6ceb90146e16625eb09acb84c58dd8ba173067e83b9bfdb7b8d3ef4a7e753557897ea47b224fd5b830ea6bdb7871ab7c343b2f16c7cbb916cee5af10701999ef2f9dafffa11f1e713e7870c7ff16f20b687b3d35f0e655b8d6428f062fd3774ca6ff4364bac237e3dfed9f06af8ae4ab347f2ffb2d14dbcf956cad067f0a8b8755b1146e9f4fe380d7dd74cd7fe8627c8ce3a191e36218ff5e4afbbd190f7f63fa7ccc3f7f81f1e60fc7c905db473ce74dd9c7eb74274f07d26fab1a0c8ecf1acf338d59624f831a3b58e232e665ec1d4e63f91d5e2a1e4c6e6cba42a777320d64b449df999e61cf90eed588c1bb87d0ade261a07b12bac6cf8d713463d4238f3c0b7edfe498b5bb67de8f409fb97f0c3deb9494fd0d59d7d4e6386029fe11f91cdfa551c70e7640e47575c65f111768cb2744f61789fc8c53dc615c15dd3cf4e6378c2f38798553e3cd055b1bef395a055e58103b036a298a5c8b3ceb00717ec008a7dc99d097496314641dbcab4ef6476ce7bfc2058e35297a87b1df3f475e571b7b7332ce2c2ea67922e00536ea11903fb6a079a7663d3f391f15af6dc307445bff5b731f5d65bf82ad81f9ea03ef6c1e3eed56e9d0d14357f4133ec2d92aecc1a60f83b112de9ea0fd2bb28fea9b4eb537466f1f188f7bfd08d629dadc75bc02e5a83d3f87fef4e47466c427679813c42e05b985f52b5dd91eadd688ea8c6a3d645bb4deaf1277d2700ab5ab41277f83de24a8597d58050b162f9c7dd558abb1010f2eec55ec3ba3f2ec14160fc84bdb785e7e136b1ff0f7755c8962f751f9c171c80136756ce879158bb4a1ae99b3f75d03de77bbe16a601f77344f9c31ee301a073b73fef12af0bae7d4ce886f7e8e8be59ecd3772b633d981716938fb1c0e03e2a15f73767f886de0597d233650b8a0e778c130bf91e3a65a17df61fbba70b0e68a9f5b22834eacce1762f276251fabcf19d733cfff43e5d6b9aadb023b1963c46171cdaa351922a734f5d3f15abe9e00e3ac259b9346bc93fa655097b94eb5d1302d23e83384b82b1beb01e320b9e67426abc4c8b2046c4ceb883112acd17806ec5d87ecc33de035a3bdb00b3d577b769bfd473836c62751ed9b53f5398d0707867512c755cdad30ae6041d66374c4b99a9e93612ec7603027547429273f796ebd4ee2e78d75a239c3035d2ff798d8bd32f09d3d7023413e8bd58eb235c9019f91f8978011bfe81f237f7a53f711862757d827f5b812628b6caaef55f120855c9164a1923f50b471c00e2c5c6dced9260a7ba1c6dfc06783effa83dbfb558ca8967134978f7c304bca61beac63de2c0f5dcb4db15f6550e908b35b714285c8c547f1aa33598f346b9fa5f71d17c003c57089b9f77e3cc505c434d6a80727cd5a2ac57dfe5ea8c75ae96d83c70590f9a59b3e3b6f23fe584bf71e4e6b3f498e89a973e7127795549f8c7634e54782fa6c754d09fa5c524d3bf593abb977f998c785c53b5e976919775cdc47a21f8df9e78e437ccbbbbf257e478d37c53f37cb126325f373c1ef17b6c5f8450e54ffa0bd8ff8797928e4da85fc725d8362097ed52880182af2edf0ef8d9882ee868cb3aaab7c11c71b1bd70dd647b82c7e835c3680e57ecc5f5f44be70dce7cc3e9530deebb10af810126ff93ed1bae7d0ae38e2b649d1d313aaf71d03eb361d2a6f01d315ebf818163cf1d5c14f8ec036e9e795df69e3bad4bdb790eb3904fe1ee4e278a1b17c1ef4a2c445ef34f658bf66a5e72a5b39b5bf93b3b849bd29c3b366fc8a2043d918d8f384f8431d8fdf845e978fb7b4c4d018e62fbf271e7b8d3e74f57df71ff1f3706fa425ecdb7b7db9b84edb6443e35138a621fced8bfdb935cfab0be7c533f0fee08f5bc7c17c19f6dde575e96b597fa9653f979a6bcdcdcb6a3e70ed99eb4e5cab379ab9d391af4fadf972fe7346ae55ef1b562786e37819c8e74bfe1e7897c7267b0fe53e15f7ba3f8d433cf7a977eb432c02d678909f52e097be1c000383f63ac03cea47bcbfabc7134bab7a77aaf5508e7df4ced8477f38764b1cfbc03a7c68fcee07c72fc747585dd312d71e3896cdcb0ac72370eabcb746b5ff4f6b9a500e6f4af99e1f1aa79bbea4c377e61aafd9259d79e9b6cdf99d3859f5bbbbb97c96db009d704b878e17789753406cd7cd94c8bb7e6a66ff88f853e29c4e16d95bd478ff47f55cd9d39d6a4e197e3bc6c21f8f90fb45cc9a556af4caa83381bcf9e4365a0545ae8da8ae0ed6bdb7d130cd4743f7162efaebc89f77227f9a8f6cccc3d1fcfd71349c1e217f4efc19cf81de3f90dff694c8e1735810db72790acb87d5c47cb84ede26e0e324880f9525e5e365643baccf6c47f41ae5f2acf61ab5dde9f39c0cc631742faa6727c6f755ecf54aa23b222f3d51cc8e536a123f3f051ea4c0075cc79cf97b28d3f353c8bf17edc54c0c1db8bb18f76e5212dde26c893e20be600c3516dd7352e8596c56be1af18333acfbc11e9bc89fd67c46b4c785cd7fe43d10399d119f2930685f24f3750aac1f4e0b97e8b0b7c876b3c49238c4060f647f9693a7c70bfb4f3a23c4a7cfe24d578fe5738c9c46a797ad7bc4f3a6923b8fc7c9cbe881ec7d7276918700b8a4bf8f9e06e50ff43da7813fdf8d8bf0101bbd92dd6b447c09bcf6bf649ce30572e38fccdd6af2f2584ecdfe77e05e7ddac1bd1b679c3f8756af8abffbc666f537f541a93dc7c7aa7faae398609757fcdff8bb69ec1bb9cc89760980afa28e69d53533f33cceab7c04e6cf9bf5a0f2ef5b3048df89d573b6e9c2eb1631878d24d52ed4e3e062b0104fa975b91317e11963c44b19a348d6fb786d51dbbc72fd5fdc71c8d9dbbf16eee6859e0d565ba9aa7743ff87bf37c8a1bace60d186df77ff5968dfe4a7b0f87e42dd57d74454f631efefb5f743096b36def60be60fb7f140c645af8c3deb10f9fb3c1c501994538ef5613f4bb65356db794aec107dfb0667b9be0f8d4c032c23c474cd2a79b6a6dc6d26d4c09dd3ce64157a5d3df6a702a710dddbf2f3b9b976890dcb63e1aefe2efbd2fbd298c1d30edff5a991a332c225c8b91fa9073e78fbba08b5330f42dd515ab86e5ce45ae8cdabfba07d0dfab19e6bf5f3a9fc82fbfc20cf27cfc55acdc6bd25fc0ef704bd13c0fdceef87ae4e7e53d5fed5721e7bd48d2c0f7cf037884c07fd047def1ee4984aa2abead8f9f7f3e86980fac4ec835f9194fd13eadcd50ae28e6606f9c42a6f6dd7f77996f10900a36a796263c2f826be3b993be0baf5e935be7b48edfcd2acbf87f36a50db505cc3f2ded9da5573e1567259697bec02e39a075e97dc7397ae37875a9ea8385f57993c0ef21ea9d705dd7c87735569c3d1df49cf54e1f828720492bde5ea532d59cb7260aac1991abaf9d8ecff6cd862623d06574fc86a0baadcf2792c737fda55cc2056fb46b3c36830b7e61bcb7db1e63f1703eb6561f55ee64b77e06bd6c4b5ea7a75be9ed0373625a727cbbb7ea0d5db4fd60a5dc9e613fd16213ee2e9bdfd2497f3766989710e8a2f2bfa1b6cde4a4e47c15952f85cdb6403ba81f856076aaf727e16f046e167180b84fb2cbcae36f3aeda331b8775b8fa8b0bde17febd91ebf3455f6a41eb8c3c671f172ec457427fb2a3bfbfc8f742d97dcd82c23d8cecf93ea6f5d1e3b227c6868c4333bec2624f802f87f798dbf931d1dac631edd35edd5b54760f81e7e4f160be8f3dc054e2f1d931be635bebd0bbd6b1ac3a3ec5e29cb163e0731d5d237bf5173f8ebac77cd31827ebbf088cde3128f253b884b5c813cd2a93c2ea3edbf575aadf4b71a7b7d8d0d791d7cd1734ae32f39d32f03738ef03bc6752c27b936b8fb1d19dc0fb9b17e13d9f395943eb2358cca989c16ff4f4a498e62f1f99a7cef49cface5bb8d071decd341d9bfd77d681e2666ee96f971f9cbb61f37abe4f1ce22ee2d85feeefdf6adfc019c1b9cd6fcfb0dee45afd1c6ff059e49de28e5b06868bf33b807dba7f966d4acab9f4b1b963dc52bf3377f4b7838fce5df37a79eea4b17fe5dc69e813ce9573477503f4740b71432ec65af59d2bf0439d21274b4b857c2dc53c3af4cf2f9d733864b1dd392f7b4edcf762ae1bfbe7cdb8e36c286e49eb6f13c0d6109f0b1c4806f80ca770901f811310fb3f377cbc705c006f38c480e362eec49eb5956b01102f11b0fc95e3e0be3f48bd26d81fda98b7ee25f2e45e2478df6a0f7b067d7f63de05fe7a639ecf8a5e19da6e393611cf31ec38805bb5f0f42c349607d8377e1fb1acccfe25f2dc745c84fb7828f33c3eeea2b20d63e1a0b27b7bc84134d781035e90879795a7a9ed82b1d957c75fad5effc59aa7dc79263a09def17d995ecf93f47b72366611f5a923c157829800990fa2bb310ed062cb603ca1bf0f5da25bb1ffeb5eac58aefdabe7b17708ad7acd891fa2cc6d346ab8297733eed111f47296aafee8a558bf497ba0e55e543a3eeeb95c9da7996c9bdf63af7ad5ffb79663ec9b95c8f308bf3d54b266f128fa5bedfa56be4753e6abee25e9b177eed99485ca7b8af2fa9d7b0afb943f27649ec8d958422f38f7dd96d5ad62ce177adbea7c6fdd6fcfec74ea9791b50f7de7447c51c09773b1c79eed31c06ab35d2d829e2aa9fe6a986649d9bfa5de143881c3ad7b809e7fdaa71f17bdceb8eaa1e26370e121f0e780ed47e3a075de7171a1f1c02c4f8ae53629fbbbb8937ce3ef8b180742bce1db6bd967b9e36f14c3fd803ce3ae162e693ef8466b9916e027a18e2af96743efd31678cf0ae0483f8cec9ceccb3cf0282f2ec322907e8775232ee216d49806dba4e67726f72e43bf7f083ca8b95ebf521c03887bdabd7dbc9d5735450c2f21b0eb5c7660b1f7cff3d89e411cb57d4c8fbb68d1cdc78825a9c51de469c03d50e556310e4dd73cd8e697c09fdee8ba56353fcc57075b7f5df7a8f07ee38fed81d5be6c7eaca12f468b861b88c7d7f5362970d1411fb7d92f62dbd2803baf710fc49ea7b9cade6facfda79fcbde1d78f1c5fbd31c1d2f3f5beb2a94397fa227f9b9fa702dedb0aa0b15e79aaf01a8fbfedfc9b9c2b3e0dd975ced313e07eb68b93a00edd5ef4bf5b91077e16a6fc5ba67be1fd35fe0ef9bb50af96dc6f658ddc3c9d68e1fe73929f26d5dcb486b693bac5684aba395af979e41f67da8e33c3aeb80fffbc4d69c1fe75dac38790e0755cd10f42ed5f555c95f62dc23cd538bc6290539c83ecf84ba458c853dbecf9b2cc51ce5f8ee4762ba35665b4bcc56d1afc3ff86d66a35f36f523e26b2ddb7489f9791976e43dfb9353869a107f6b824eb181a0dbe4aac23db3ae7d865f358cd1db757245c90e1fccce2e6c40f22ffc698fc2317cfa298218de7f3f52b8f15966b3d86cb2ab57b5ee05d9a795a3aff900b415b8fbb47f7967ace2d1d8e7613f3b29a941bac3f3353624f6e057fc8b0ca78bddaba28b3f75c7dc845ec65475e9ed0ef9721f083b89bf1fa7135eb38397018d8d35de03b5a52f6f5c420fb53b4ed4736fa2e506bbd9d6aa1676dc6eb1aa313ed0a7713427ed03a45febccb7ac413c477849a34ca33b083da6b3b87ba4a8ab57a0cbc23d6871b6e19793d3d29a1364f0bbc23ede5e46219522ea1e28c83da99a99e6cc37ceca34c704a56072a6076c1597fa69cf6b1d1bb081c77b643fcb003d4f816eeb7c8734b8c69b7e408c0ae7edcb26ba5674ec8fdc9337f0e597d2be096413d6f5cb86f643d687d67e53b55d86d768d371c148017db4d3a73e22fde68ad8c3017426dab99ee888f9edad65b5426f8ce584b46eddce5ee79d1dd277a3f432c4aca3184d750bb75d6b8e67921d433d4bdf9421e81cbcdc1e7cb9d9467005d3036f979bb34f4c0b35c07c39d1d4fbfac43a8759de7bee908fd5230cff4bba60dd9cf881f9dfa554dd326f4c22cf5ae5a5d2b0a762860ccbfb29ae3aa8e5da96f56124f11c7a9d0945d2a7e82ba57b8f6e5ea3ce1e389bdcfacb645f8dc06e2d4425dfe5269c7053edaa852df142f1f257ca63be356f0b5a31c20fb35d52adb1a70296a3bba4517716368a9f1847b57f75c57fd101c3e814a7787c8a9a05c9791d9d43b3c9e9f802f44fc828fea3dba6f68bf65275ca425f4ef6fa77a604cf3a4332d52efc2f6676d7773b6bcac2fe9dc52dc8dbc805a140e2344daeb1c46748d8df6913d259f21c01ca1d876c27e029f6daf279dd98af87eb4c6631f1773f0ffc205796f1e3384ae9dcbd705ac326ecde45a00785777e8ec43239578a615e706e75af6d5b21830c0c978219f5ce196ffd13ea4782049e15e62db7a0b992f56f947fcb94bf7a9bda2ebdb23fb6c1f17161fa323e35e835eaee551bdbf4de19d3a01f4575c4ba2835fb9be929199a14c03bfd82de28e9357bac1dc1c70bf802ef907f4dcd0c913fb9a313c9167bb7b269f516c34d893443711bf3df09d2edf2f40e330924d0fb845e4fdc4de28bec6fa3764cafd7ca55c6b4b7b018ce5362996abd4eb0ab107b607a19e4a9ce7b63e4be69b10df7bcafa55e6be53caf6a9ea1a112732cd92e261e768f333dd8be4b9fbb0ea09c94f6107eb6d890c8f3de0d35ea546ae45764f4fa16fd821befa2536ba1bac0903be96d5b3bd39858b07da93f208b85fc8e7926fc8189ecbc76d00f9c509f4e3d57e08f6f2f27120ca21cbf5a32ed9ef3b913fdfb167b21883787db80fbdeb8672cfee7f94e46c6e56c1a2bff2ca96eb747dc5e334a2acb8ee632fd746c3e91b3947f819878949cfd49d67af6aee96da4e653222a57a50926727a9c6fa8cbc3f0266c68dac4760ac2af9c9621a0ddba3b802c60feb17e2e798c85ff6bbda46b06e448e805f5d426fd420f0e7d90fae5f46ea2344bc031aaba0632f22cf3d84759f16f0058d8bf01c97dd75e08ff60acc24fc0df623087339de4e2fb19d6bcf667212399da5df32df15e2acb03feee3fb54789550b3c69e5f6317405d078e016a2d1a7de472ff10eec5bfd9fbabf893600ce43ac0a6abaf2563b78ef4df32a6941a3346b84f6b7d06e27c455e577b61e74d73cb44e2ed53cbb166cf900a132bf49d37a2e31b78444cb7d27a95676e2e957c689c4e0bed1ef42fa21ed8d0586b08359f90cf2ab91e38beaf177582bc3ec80762a683b8441f06745c5de7774e894ca23d71104bf6e73be020663ce35baa8bb6ee31f49d7d50520e2c33db8f8be589c93baa8bd8feff3532936f23940ffc1efd3532535a43d95f39e5e32feaebec815f95ca8e08e464ef34f6ba7aec117f74b26fec7f95bdf761ce38feeca4fb7008781de23b0cf4ecd57c3cb2d800dd73d3c87b68c55fa2d7f89137d7a216ee42f61fedc32d42ce571f99da91ea26c0700f3a738afb06366b06b29cea10861f171bc1eab570cbb8ec9781d7dd863cbf4ab15c311b00e3f5f2fe80339227c5346ff06856dfabf09eabf7aece00993f7e9f8fccc67ceee3f566352ec5796f3e4f17cf1ee6aa91e37e38d5c1aeb0bfaf02e4555f917d1b18c42fae7d44653f21ff9ea6828783eca7ea5e281fc5332fe2fc71d7fe67f43450c946616e26efc914ca3b4cf40fe20ecb38dd8f5cdc6c74e5f62bbef752dfc7f9e122f3d15536d45b5d37c5e2262f9ef5e0ddfa69730db0f76652d5dfb2b8863b8dbc6e3c51c8768ca326a5625cd9ab75b8b68d2b781b28c6959fbc9bd336aef564dd1c57e067f144c624acc635689baf1bb19b597e6ff4f47d35593c7e53be732b76dda0ed9d3f746f1877ebbda707e0f3b18e58cbbec578e033597ff3b07a1e8e4a38676f83fdc8dc71fb7773180df42cb55727ac6998edc2db80d891bbf0365a8d17646d37ab674e873d2f2eab17cfd222b38bf51266b69e2c88bccec87c1f47f6e8fabc78fc879317fbb1d917c745e6998c8bcc89a9ad8217795c79734d31d7d88ed5406525706c74ea3ad8c4c88f890db99b5b5c529fca9e12bf4c63fe20df175ee50169fc14f0446df721b1a1dec740bb1373701827abfa2f84b154398935b3d5586e4fc68e607a3dcd1de20bda83da3f85f801d88b750f7ec3b7afaf57c85d8615c1fb090d9c881193892fbb55605ccbb1d57c1fd63b947acb6f23332d4363b443bd3c3d24449ec01e480e5497bfc54307ea1c894f323651f7937b93f38ab8c79b6d035351967da2cf4f651eab316fc5947c0bbceb5bd513ae90197826e4f3b522fbbd71adb49715b6ea354b6b1c64caf98bfefcb39473005c7dbdaac995f6c585bb57bff24f65fecf36cc10815b816277d6713ec689a66709e6a5df62e37a4e7de736b2ad536856b5ecb78f6131d66751a57bc83924ba3435804b00ecd43b7ed6a1cda66dfa7e30d6027ba780fb167ac028ffc043e44f69cc00e3be0dbdadf6fd3f6d2f367da66a0f9c046c065cff8ad721f41f898f5d865e486c2cc088adf913580e3295e7bc8adb73cff9abf205167c1e7cb67aae707436a22feb333c52c0e4ec90ff02afabc9ef126c9d3cf00eca5a748cd5e765e84d35e5782966438587625b5af0b2e7e240c7064690bc2f988fc87aef90e3b65bc4c6f7535058a50a0fc337d09e4cea39a776f8ec9474fa87c89fed9cf2612be0df2b7ecf728c3ec45bc9d81bd7f3986a3fa39709ebafc47f9bfd9fd4b6e771bb0b675d7d0e78eb50bb5e2a3094ebda49e61ff5aa7f0fa7b16f6c6e0afbe8a7e42f737f5f63f66ef2ef5aec4ae15eed3d0d4d7d4c394d31efb6c8047d53bd8385f956a95ee0c0dfabf2c11b718cffb7b2e80ffdeb4b52e4a7b4aa3348ad643bdac9b25d25c3df9983ba8681c7e9a970e930ce1a196e9e98fd0cb8f90ab70c11439ae801187f25b31a58bc955ee3ea4d0e1cee4e55ff9587e6e38e8bb1c9f17d7c8ed1cdb13737cde2ed5c7e977552b85974e3e3c67abb6c291ebe71324a19f38a1bf6bf3c9ff4badca9eb3a2af95161da64bc6dce7cd538affbcec2e241c0b86138e014d397e149b21edb75e885e784f2ecc434be5bd51ae5ca3590b16c704dd8b89f1a728ac619ba8bd0ff48fc8bc5bca77ad2999f63b1079de135dd28d62cc487a4da952ab67d272e0db2f39dd837d92bb49732f9f3f8db6764941d9e9605d6967cca36fb0d99c4ea41668c6757850db685781bcb87557221f2c077dcf33879584bd7c89d83bddc127f43fc7d168367bc2d8bfbb1b6fad99b865dfa95b22b307a9757ba3eec4cfdff4a8671bccc7cde40b6bde0bdb7ee2d35fbb750910be13024abba08fe7eed76ecf72ab705751476be11ecb9358753aeca8b20d61bd3df4afd49e45a44e72c29dc1b195b00754542ad03b361219f1b79dd2c06fe66b7ee13e6ea4816fed46ce67a29a67d959fee3b89a6c67b6ce4c9eb7a5b0117afe14f109b99cfab0af6cb9471c1a873aa98cbbaa5b64bdead912f66b878b171ddf03500b877943155e0e245eed0eb3e2e0e5ccebac2edaccf45e1761af7fdc03ba8fbfa5beb69e05d2abebc62065ce298a36dbe03c4b4719cfb84e61be41806e539afc6a35efb472127426504be37d90f540f8dcc8cf166ec5333156226cfb4c688ed5761de70af72b50eea3556e100ab720adcfe6be4f6e91a1eaa7d21d4230097299e8b9a9fecfe5ab4e1a5dda9d768e6f41b18c4148f43e43d6c700600b72af177fb151e6a7d16efe052e36fdfc5a596f9f0fc064fb9aa2f06fb60ea5e5cd0719b0830d2ea7abe19f676dd66884bc87352429d20f17fd3616e42ec137285cef97580361ec612645cdfb679a0b103990fae859b5a5d578175e7350eb4843fb7a07d3a2f6aec6b8a3f42f6ccdf98439f01867b5266f49e721ffc1d6c211ecbed135c41152e338f25a61fff91fd5505c6b280c95d6332ab302255d8aa2a9ff6a3b8c1f5da2d957254ace71ebd1bbb93cf33ce832ff71f99a2ad3b1262520aec00f72a7399322c02d6af6344fe5427fe01eb3f405bd03ac426cf83fdb84bfd698eb53990933d065e57f85decf53614b388dab15681fc4df929f229ff10c73fc0b0181af2c314f94682cea60df75fe01a08053e4e055f6c55bf04ef7593b11ee9d965f3c47335ac7eacfb7f55183c2f0fab575a273d36fb88a939d49abd25d5fde765e0756f1170a976d5f27221e29a7f96cbb4a58fafeed7184e9a98e466aa2585754a8c1cb9ebfdda2e73ca8de82f332e43dfc9683f0c933517bafe3ba7c3bfe7c3311c429f0ef9f7f679d1bd84d45f16d6cc760f01c7fdd23a366f9ec7b605e3127a1bb83ee4a4c1abf1b09a60ec8d1ff77f00b349eeabaf7b6ffefac97cf8adbb8fedd92af51fc57e3ba871b24e91a76758bfdbeb04beb3e1397e2897e9e9d5253e11607ed6feaa92cf40817d38bca707eff0ad0939d7fafd6a4c7b71dd12a9dfa2c9ff08b2963b0fb447c8d2941829dcef1ab96e359f96144fafdecb35ea317398b15b98d3e678a19fa3eeb3aa7effd498332dd615efc5f071398cebbf4bc5f74fbb7a3e9bf786eb45fe34719c91d7ddd7b1a6f01c79b3d5a4791fc0ca9f0fb1d662fc46f1d1e8de24e726b507abd4ce89eecc252c6bf82dd6566415fe52e075f7b167317f0631eee8b5a3e13e4f8aefabb8d3cf0223d75e1722fe33ad3f071ceff7f904f877d12a3cf4c4c8a1373f19ae5634e7769339d05057b3fc5ec63daf961fcfc0f955619bee52bb27e35eed1bf6865d71e4b2b5afe5c8e2916293ebf27d18bfe339dee2fc400e65e8e8a99d759b7606b7aeeafbad9ecb7a5d9fe95ea1fa86ccdf0df8d0f0ddf2a4c8dfa097b79a2b8e5f8cfa1677e68bc61ab17fa6aa2f1bcecfd2f78d331a32aeddc6b5f23c51795e328c88eeb7d077ce909326fe833fdfbd36730ca7c8afebfa9ae37dfc45af19a4e6e33f74dd581ef31c6fa7fb907142da3d3d59b318d81d8e4f8acbc2c907a6dbf658bf58e1707c7c6e14f3007840d8b75fed31ba768023f073785935c7e0428e1cb106a5e703a640fffb4f53314feea1647803f5fe67e390eb61387900b6473d062ea72fc8632eb7087294f679b1f835f456c7466f43e50d6049c6457ea4fa9ee116530c38e26f23b726f4255952dd15dadc70169a7e826013a76803f51af856740f12df9d8c518ec9519f107b7dabfe091e83dabc70e7976124615c26851e002947ea7589fccf533c2765539f095c7f795ccce0ac325b2cf0ae87b893804ce663222c3f95f25ce36b168373cb7041e612381b18474b9e1639d466421e59fc1dec9b268fc52aabc7afee2155c67e10fb80b76569bfacc49d88b10ab246c7c89fe6ced36027d8bb43274f8cde212d24bc37ba0f42ef9abd2e643b8df3950bb40567953eeb9d9e6dfc8cd899f07f73033893b197dfc2c56a3fde427c689714ee2d36ae462861ada9eb3fa1dffe1c0fc35cea35e2d67773c2788e889722e140d67171183fb31dc9b59972bfffa87c7ab15688b3a9bf8d6c724f7c7fb15ea79f07fe94accdb7f76c74623f107b60ecd5f907cef697f0692c3df45d3236b465797e8405b1cbc9ba91b9ee13d9b84f0c2176d27b5e742166f92c6093ac14bd6379f16c3e66511def5b3dfb4d5efea4708f7127ac7becfc8a93ff42b9adf935c0d88da7efd381750a07e40ce5c5eb62b5a573b36579068917197041785f84e52864fbee6785d326ea1fc06fe2cf6501b96daedf84f65e7ee27d701fb9c7c89ff7e362fe23eeccf7e176b3733aac9756c28f6a3c1f74189713a0310229d627f6dcc9d8d4152602ed0f457943f5c981f56c237e479aa756759fc3c8ee9daaf8e35ae217957b52efe0c5d2de70d613f804e32d594f79f53ccec7e1fbea1abfabf3bcd0eb2d7f9fb5bd9f606fc646b7ea99127bd4efcdf1fe6fc0a5caff78ae659c1fcc73f0b103f499599c548c05af69afbc5de544c959a67632eb93c77f8b325df6f7383e3bb45bb4aa8f8cbdeb1bc318bbb4c47f40e728e33ee3a23ebfaf14e7ca2929bf5d855db651c6af61be35ac434dfe7c6fd7f38db965f9cc7ce28c08984d1739775cc7e6a9fd58c5efa7188b1e32dc0deddd7b513dba4fb6f3eeacc2239bd3fb4c9f806f78b16a8995e3dc1139382b7a0f759cfc50d7da54794ae823cce222cd1197bc8a3bae8335f89f17aca7c1be72c426004e7fd041915763a471b9131c07addd4d6ce0c0024c83a018557c4201f095b987d892f92711ef14eb21c17e5d87fe7e0ff50da6761c0da767acf70c111bbd00ecf86264f72876523546ca116f1521c506a864c0bb38078fbb0a7f026a4834099700ec7e2dd6dbbe47bfae71b6d8bed67ac5d2b600cf35f4ae267b3fc92ec1985b7d1d602e24e56a3f26efbe71b3c05849b65bff100f60ae1bb619ed9d60df9f88fe2663896d7733a3e37e369b3ed5c8247b009f5ded49ccc1ece32235e34ed6dc8f8a98376f6bd07300d7330e1916776ef6b52af1d23e20032bbdc5e7852836239f0f7aa8743c7d76f40238854ead27a82fd2c026c13ae16a1fb07714644d53967d5876f1f353f3d08627e76920c5422b9b043908287e18eb690fbc07450ddc126a73e13bd6276b324c30ec4707bc0be839ea9d46c3791efbfd73525865e45dbb14d78bea91ee8de141417ced03f865cc374dcdfe21f4ac5b6a3e5eab5eb52217fbb55d5e47ccaeb2afd89ee3a47b6458ad15cbaf2c799b91cb7dbec78b7ca93853ad63cac7ca797bb8f2b9b83e59c46e166b800053c6ccde10f3bb9f0706d199c0f5b7022c6fcf3abd2e36803f46aea1b19255e0851ac4ea587f03d61b1c452e64960fd17a2333f987ca2cac2ba2f2ea79bddbcafdb6756df7773a66bebe1bf387227e128fdd22e04348fee3bb9cefc2bcdce38e55c6d715f7f00cb94f85d5138b7c0db4c64c797f99af41aa51fbc964425a9fdf329538da38ff598d4fc6e50d596e2119bab748befe1d0ebc115f4f20f666b09e981d8e7723e39d60bd0ac53960fddbc4868885daa25cc8cbf81d11bfadd15fd13c7f702e9e9bbc163f252e0531ee21ce897c6d03134b88bf0efb87c0cb4f2f86f34fe84d353aa67d0b3e075dd77e4e749a58cbc5e35d7172caaab9f0616e5f1afc4492ac79ecb1f990b92f5a79ba14cf7b6ecb5535b94ce87d456cf6967c15ee67c4663fd15cff4f55cecaef54b64f25bb228fae09d4c2c33c97be5483096b62f5583c19f959b97a3b258fe7705ebe2efa6f643cb1d97f0ba0f719cf706af7cec2f5dcbd55ebe419f32c3156656058c7d0bbecd8389fc577ec2962a03fd31ae3ad371abaa71a1ba1916f519d8fb2557ebc8c0ef5b82f143b73a3ae95b07a824c9828fbac28fff6b6af27c66a278fe3b7e488282f88cedaa6667f1397fd2cdee65a8475d25cdf799a13dfa19e2351ef35fc2629de51f7dc8539f92ef2aec0bf5ac75ab17f302ebeafa82fb21263112a9c9e3edff7d1eceb6ee31c6438db9de450e1be0ab82713f1d9a5c86f8b18241cb70a9eb532f4675cee196d39a9c60bc61ef8b3556cbb19b1c9b0be95e21f19a15ed72c4e5077db396039612d992817a0dff6e991723328ebb97e462f2391bfcfac7048512642ad8e20b7f21a17d36de17068e39b17f3b235de19977755e6e315b54d623efe9f26ce85f41e72ed20e309adc6c0e4c53e157539c60d597d8ccbc7eeb672ed638d2f1afa3517adc4effa93aff996cfe6bd3cbfdfac2d54d91379fab6c3ffe7d23bcb3d9d520d38d98b9ccc028ca457979725a81b997f44ebc2e9fb6c10038f3cf749a10386eafa1b756eb8c1472bd6a3583dde8edbdfe34ca7b8b6b0b60a0e71722625bd88be215befbb358b422d39dcef1d7f83ee119cdf966b99bfcb9fa10bef6fb471c654fd1cbc2cace50b5d970acfba7702bbbfaa23cb4f9cfe7cc3da78f736b2affb08b9e4aafc8e543bb6992cba75bd36c38456faf1c02bcbfc6043f2db99afb2a2baba0c91efb63e27f9bf5eaf2ac6bcdbea37ddf778d2eec4ca050cdf478ed716b123e0fcc17dbad013cce2b29cdf394dbdab16e17318679316f97daeaeb4e6e7adfb931e33fa5eff65f534551fba12cff6f1bf55af535d9bf1add9bf25d5d7fa14db797859d17f9f0205461eb52b10e74eeeb1c79ed84d6cb834a687b5ff9c4cbe9b43967c34eebca8eaf7c51e73e49d93dfed51e87bf808fe6f7ddffadabf191ee61d198cbe7c7e9b016ec2a8a15fa8eea03ca0d4eee5fbff99ef55eccf91f7b073cacbf619b100f6ceedd85a9751efabb6f7a8f3fbdc1c9da2a2b78fd7abedc814fbc3da6a6bd5e34fa017aad91328d7a2fda66c16e37d4d2ce22ab6d8c39e58f45d997caaf99e24be07e76950e709bdeb81cb152af317448ebf674770f6e0dd3c24dc8bfa1635b778c5dddda687143998d9b5e2e45e563d14ed313666577f30b6a68c9329f9a6451b0fdf91e799dea978a6455b94da6e4a3b73c8f1627c6dcd67a5b7eed67c7e228f2ac6bbf8ba4b55ad6857d28f9c1c312deef7fdef3f4dd001d42e6c95cb55de5f94cbf373e84fb15f1b62cbb3469f2370dd74e69477b79b87defc86f5b94e4eec0fe47d9fff6e0daac1cb0b1a6bcd63bfafbd2e1e7b7f13ffcad3cf69b1e47a979a75acefc4f724db84f7cd3f598fcbe37b366560bb8d3e14f68ea0e714bc086a1e047e1f7dc49e167051785ed3daaea47b5be40b15ed589a6bc9f6f1764e7571b3ffe6437e9424e7a56bd93bf3679bd8af0dec6b2ef754fb0220c7f03dd4b99691906b090d5743ae164b1bd9d66964bbc7d170ba7f857ef15e9914ee2d21f6ca106bbe8083d9ce1f886e853d6f5b5ae487b44e7db00aa1bfb8ead712ede875771bfa732b76c9fd5d27cefbfb57db3d346de995585730ec3f707b196a7f032f3f85bef39474263bc708cff176764c8cfc5b48fbb8f95ece5753cd99cbe5b8c1079c17d773e0cf76c9705563d8cbb55a35d7f3959e51e4c3b1dd2cb4af39c38c257e9a34c76f52ef2ac3b8478c6003b8b8f977a37bb1d26325e0af6de759e475f3643355f9205c8fd36ff6b5d8bde3bcca9fb1fe16eeb914a7929bdf4ee475377127d94cb0567a131b7ad50783b52de93e2ee6e7b49c5dc7c06504fd6f7a6abb1bb47196ca5a8ed4c84fa1ddeb103b84cc21d40e0c5d2df4e62f34d6203ceb7901fb6b56e7d9681e93ebf5e271e3d5e763a23a1facaff814da6e197a33b97fe9d4bae74b18d322f4ba9bd07772c6bbd5d6979308f902aed7441dd7a3f233cd537adf5a76e6d4fe14f828847ccefdfdcddfdbc9529dca523a4e416f50db11f56a9a033e31d46438595af318c13911f2b396d8c3e43c4d609d9785d559d63d32aa3a997da23b795cccf3a470297ee9fb3d4cbc5f0cf882787ef7f116f11b231f7897b2785df7a289394890f9b28d568afd3c1fb4bf3e9d2394ed2c5a9728da597b858d65d0fa77e4dff9f85ea970c4227fcaed5fac5956f88ec67d0c1f364f0a7cf021c514e16d08da972ae737049b106384e4b9ea7a59aeb6928b13093daabc1c90ceac43f6d76b2da35a399a780eb2a4e3ae057c029bc830f741da9f17997f49b455681cd23dde52cfe1ea06f4388275c858ae9eab7b63fc6c423f51f59c1f947724e86c76cf2cceb358ed511ecff3b0b0f478c8c94e8a8781ffce63f1bdf294e173b6cc1dca67b77e171e47a66d0e5fdaf7dbfbf50c7036a90fe11e2e7e551fd6bda5504392035f5a53fe3c707db80a0edcfbe7ada5179897dbdd2cb6f34c8e918a71f9c713e571bbb9f6f7bf54fb57e2d2a2310bf85be22ee2cef6677caa2aafced6ed51c98fcee522b9e7b01e16196bb28f9cf165e37afa79e37a316e22fea6fe4ee50bdaf96d59e967ecf901be748c35b2fe2dfcac190b147bbcdafaba700ebec546ef58e53d8a29d4ffbf16bd73bc5835eb242866ad6803d47126de0640ddc7bf03c86422df54756cb59d04bd77bb158c41ce85b660d0315eabd4237e8db38f8bd48ffcf9cea5fcf2e23985f1e378dca99614f929d4d37d6a672eae238cf1301abaa7c89f2bfc6d3e2f0af684a0bb536f09730e713c7a0fb9f6ae655ef78c7b95932f19e52316e35be2ef76811fe6dcbb36ef53b2bddbcdd3c22d5f1762cf45aac24baf6d279d93c3325ef37ef4b46bf2f8b7606a45b665846efbbc56f154e45d966a051fd56b50c550f52c31a5f75a5f56cd186973cfbdb37fe03ef88e102f6a626bd13e8eb6f86a7b3cfb37c652d532d1796c6249f5a4356a7deed7cff7fb739d74e625e07f0d83fde8e9fb2a5d3f7e6331e53699d17c47dc7b75dcfc5185a9d58e4dcfbfcf3bcf569ebb773024c41a272e165f9fa366aea09a5fae374f992be563e5d519e5b97315bd1233f47d065cff543ed502dfd1deb107b3b8c8695e53b25b1a582b682fdce1c0e0eec5c78a37aa5871752de418bdee7ea988d7523e6f562f58fd46ae19fc882d51c7d324bb07ed7c1ccb7b75941c9e52ec59bfc2453f63b5fcb111ac227fdec851c5b6b58f37aca64cb459da7a3adbb8e7988fc38f99cf053dbf28734a7ffc8c673947b696e3c2cdb994fbfc983fc5d54bf073d1a82354e4cc6b5fa891fba1be38eea149e44fb546cc82e64a5e0ce79f8f73d33a357e905473ccf9445897acf5d6d19bcc6bdbbfb5d5c74a71298629249f937b7589e8837dd0878f11cfe8533914fc8d3a8792d29e69695defc400584d0fe4c552ac4f619f4dc967874901fe33dd8362fdb0f28ccbdc8c022723f8da7b55fd50fb3e05994bd7a27b49fde9ee5978664bafeb1fecd997a2779adb6e11f8ee21b504bee151e04f7777636f832ac7780b3dae7eb3b21bf1f789e1e6a1d9bdc576fe56f78ad0ba042e3f3fae7c9acb61644f77c05bc4e70f89bffb26d57ea872752aac2b294614abb1adc4fa0f8c05893187baf7046a16157ea1710fd35595e392eab5c9eff93a0b653c7e64e2fc02b6c193b68a6ceb160df2536a666f11c57286cfacc3c5177356f47796f8bb817550fcf6ea0b392015ce1995ff268d4dddf13da9eefea7aad3593f7eaf7f7f27bf8be3a663435f97fee62db2ad7266f436e1d2d29eed9ddc87f49b7344d632cb1223030c88bf17789f85d7d566de557ba67b73cccd65bb8e12b8f06aac58f2dca77774098b9d68642c2ba6b3387bab7b8e37cd781491ef0b76ff46cc7e26c45e592c6a6a428d1ff135eda4e81d17db29c592127226ff2446ef24ebaf4a475531a6776d35b8cfbdf349b953cef176cef294f01ba1afa3d69f79d0999f8167a5fecd09f49e37d5e2ce48b2d56add88e7d17d484d16e7835e19c82d857ea68d8be92db949b554edd87c8d7e70aaa7f9b1ecb87fef192e27d4572eb877e172abc23cb23a5e7ba7aeef579c1dc98e3d2971fc1a312b515f0afc92f49d82cef426f7795438dbb49748d13fd27a266a2efd0aeb2da35caffba0b8e6905fdb5698709c5eeacaf93f6d5c406fe033d9334d1db6bfc5c6839437adfd0dde0eabd6af706fa13f5fc61a3b6fb31a9b93cd87dfbf845e7733df3ae77809cfd845708e58eea7f2a704bd5ce582e8b960f82641677362fec3f3a29f2576ae784f784ec3bf92cee83f6c1e3cfd8e2f45ed9990d90303fe7c12598ddfbf57531974b2ba7658555359ef7f32eeb70f9fd54ea601864565a34c647971e36bcc3f707e2e4d7fb1e5fc0c79fcb2dea5717ec8b3698c1bfd4337e538a5449dd8f45f501ed29e0d21f65dcfcbb79169f1b2eebf23337d8b3b4eee948fdf78fecff1767e5eb23888b9e1b042d8bedbadc8d96de26328f414d9bf6fbc9eaa643ed97fbae09f573a4c3a0b2c0edaccc1b3de34f92ce6b11d5439f816bfa7f95de11e032faf70401ce44b65cf907dae3ef4d5dbbdb7489f6a09ef3bd9ce2136a6bf96857b6ce0350eac13f25d92df547d1b509707ba8761ef328c22019f90c583592f8893c79eb5af703f84bfbb65e8f70f8137cd9fcd5e3cd6f5f839d776be75bdfd341ff6cfb75efc9cebf158d7ce617921efcad51a7073cc6aaddc691e03be0abe1bae0bffbc95dc1758d55051cc00ca83cceb5bc4670e8aeb193815b81a0d612d86a8c353fb3be3b717fd76ee5aae47e73fb00fb831933d5d7fdfc04712d65eb8e776aa07dba996acb3e6baafabb3ff5e6d30998f2cf218b6d2e3b6aea16de8343e1f40e711fdbd99d785387e35ff8b0fcf7b937b9fc6df5be79deee3f7e61fd7efb8083d4dc0e86cec776eaec4fedefabc809ce6ee07b9d0ce9ce2adf4c9dc1339f8920e47d5b39edfe184e7eef7eebc834ff874f8ab694b326cae74127aa1e6dabd19d6f935cedd31f0e76f91b93afbf93549cadd665c36e37671d1c3be37ed9a87dbf932d669dfabb86724ce0141e657ba7006d8d67886fe5e08fbec147b961618abdd58ef26fe70f2cfb3b9faef8f75f73b9103cf8bc37f9f5d32c67de20f0fbbe7a7efdfc6db2bb96eff7cfbbef7ad6b4f35f6912f9e2b69cc8c6f7614785781b32b31b23cf46775eff96db7627a46be06ed6a6b1f0357468f71dbb31edb75eacf900395b305107f80ee593b04ec84919d9f7eac293f06b7b7c5ba46a70c3deb570b2e7e4386b098583defc77862513b4cea8356d9e3b58e427ddb7a4f559ebb7a5f879c01ec27adf4b8caeee078bd2126e6764656fdd9b3340e65ed2f6f1b14157e4bb35f8d729f2c8de31ef926121e67e01caefb6b909bb7dd6a51739df0faa040dec9fe1e6d5c87e75dba45b69ba74f3be431698c9bea52f26c5aeb2abc3bf2cbe1f31bf9cd8febb81f1fc246adfd77c59ec031e07c88780e38c61af752de33f63b7bb0d13bc9d68aeaab063658abec257babd58ee67d803699c9e125b4cb4deed9e342cf527bba7b367baf209bd6b3b3722f5abdaa2efcc5768bd49a9fb196b9895ba3e6bb53e111d77a55d63f4df9f9f0ebef32877fff40f9be1baf991cddfd25cacb1a9751d085cd7a2d26335f2223a71c6928eb28a66fc1e6eac7baef101b1a795d10c7281d22364b6c04957dcbd7be825cac708431375461960b7212ecdd756ddbc8312dc57e6a60642ae46983bf499cf36a3f0bf682c463ccad55cbf5d7967804c849e677b167ca58aa928f86f57b82afc8b0b1a75a92abf1b11bb5a377d6b6b2c55e0459c8db6898c7e0f557c39ea278a6c3e9afc86735f412d72ded25a77b5aae7b78d7b6fcb0bccb1b7329e37b5479099ea30b6c72b35a2765be63e40bf7fa98dea9f7ffb7d1a0d259624d38e20b5458acf11bd32d0d5b93c5d96e640d691c43e44df21857299e53197f81f9784b7e0d0710632272a6c117f8b15e1611ab41da77023f30ccb325d52679976f2017604ff3fd761bd96ff9d81e69f630ef99aca2f6a994affb3dbd2bcb75da5b02584992cfc3746d750e2a0e474eb7de8fb13a8d7d79272ead88076dd4f120da777ea7d78b9d97b7a433d909fdfa8bcb8afd0db55cea98105bb717c167d5d89eab7c841d5fa77f2fce28c768c2df8bcd7c6d9cb47a7efdbc46bd2e1f17c6ba932a1604b98bb510f3dbdde32c6178eb604bd37f3b4f83bf046c0ec3c9308690ae8365f73c2bacb74877f2702be081ed12e30ad745c3e9e1de75a1bfba51dc36f8b790d3b4dd87e97a76c5fc94fb30adf39bb4c7c4d28285b436d06335d825c0b7973f28fb74ccf495c9c2d00bf7afe6e3af919926be45fd45eb9a3c5bd7046db52c267ffb43fc7e9c6bbf883d04dfe5e4ff97bd63b2f859ad3bd146d5b36400e391eb208f81df1f04fe3c7baec6d0a82f20d7f413c4aaaeea4e9fcbc7ed4f1c5be7b973a1be5fba0ea07739fd8e3c88d92db607782df25a56f32c7d6654ebfbd9f931df9d97037e4fec4a789ef00ebf75edfa4ac7b0a31cee647ead322cb16f9bdd03fe6f7ee05a73b361f192babe95d650f8ce6159b8dbd0cfb0c6c33a6cfdad5bc69630ee1d7ba6a75f1347bfacfd97efd4663e26be9926a35cfbaf38aecdc6292f2b477fd8c545ef142eeabfc7ebc3de3153d64f42f158c27dd2010e3e9683e36da05d809c86c8994939d143cfdd24882bbf0eb1977e0f9822de6c157853e24f6f68ecf13cb2f3aa37a5961988bd40f3054ce66a11ea5c5e8eb375fa466d653e9e7e8cbc876fa3a747fe33ac85bded564e67fa3df6275b5e6f479e7e89edfc2df2e76e759da1df9c3af658dd8bd82681e19e88cfcceb1f26b77eacb1879abf7fec81bd79113fb31e7eac1faf93b67196cbf7c7582eb7b5be66b5e8c03dfb167a5d2df0d29c5cf77f619cc23d7df790daf925b69774fdaad867afba0e38567a7fc785fba35e6b3ebe44793cde76b4978babc5b775b03b27a6f059f6fab45b4df8ebb09ef610fad31b9b0fc57c024fc78bd1cd5fe8dc7dd59cf29f41ad31f45f4e947b1ab01f004384beafdbdc9bf1a6770a97e4bf7a6e3e39cee364f12573768a8dee8fd04bb3d4ce8d7099fff17989bcae1692fdac5aef8f8de91277688fb2342fa1d7d5637ff28dc8dac4b64a727640361ac05fb98fd769aa7ec779be34f26f644dfee4ddf8e7c7b6b50ebdcbd657ad6f7ddf8fca4238a7b1eddec89e6ddd37bfb1afbf62bf26760f70a6d2df39e38a357f6f9eb10e7daabdc077adfbe416f9fbdfd037fda60cb39d7d68e725f179888d48fcdef7efad9085508b601d62bbd7490093879e2bf7fe735e3cab1b14ee8ce9834fbc13f260e9fd3c29a679bc9d7df9d83e25433fa22fde1b076002b8d3c0cfd7a1cbbfd79fe8147cde92b309daf67ae067fb449bef13c03ebf2f8322bb5746fe1e7ad66333398cccf4107aa1961a5619e2df442eed52e0a19f6dc7e6e3362da02eed2df02ef8b70f3132b4f18cf93935badcdf969edadf953226b1ad0df0b4ea3536826b7f97e6c9257b879cbbd8e9a4fb7038dfe17db31cc68563ccc898880d82dfe9fb780d9f1f037fa57c7650a4fee20ff5047205a5fc9e6ffc8e9febc077b5b84cd34fef37dbd92eeddeedcfcfd4e7e56650a48bd0bbd2fd3d3f4b63c8c99c91f3e595e93e2eba7982f3be8f8be921f5e6f9d8ef67a10df1edad2fee713d1ecef7890d9c3a6df2714df64662bb99acd3053d5ab897d0b3508f76e8f5a6fe20fdddc5bdd13d8f7df6d9efadc5bcc865f9c6cf03b147e83e6458100f704e02a36784fee8f7e6419b9671677a7be938fbd0009dd2f6fc8cf85caf9e7e4e89ef01e7739a8fbd69197af33cdecef78177bd39baf63b7be129b6f3cbc7debd7b0eede5efbe2bc3d0382a7489b8e780776e09ef1977c23c59ffce9a22de9ef41c8ab977673e0097cd91cfa5f8bbcfbf7f1179d7c39d77bec5c6754f65f321f2ba79e08f8e61c7c9423b27671de62229ac4de45987b197968137df839da9ebaafd7c8e8dcb1d999be74909cf3a11d9a55aafd8e81d641dcb9fcf57cfbdb13df13bfb2e263ac2adf8b73e322f9bb833d7420fe702b0236d77a37effeb3e2edca7c07f6c9f03c3d1d3219bd79e1e533d98742c3df09dbc6d5e9137e80bc6cdf4aae71cc285720dde52df313e3047944f658472c1ebae190fc8d873f2d72267f27b17f8f90d382070ed6fa19752ae66fc3b1d3a19a77f356273a8e7212467d90e3c7d1f0f37dfe4fc4168b8c43fddfa550c32398e30fe948c72edd7f3d3f76f2cb634aee25247f83e2db5157c675dd6fee2b07f5e6f36aa384a58f44e0cc7e39e2c496deb10792833e3a257c69e75a0bed93ab6f36bea2d95b604de3f457be48e9e12efe99c631bd739287a07c693e490bd60641a5ba3c9cbe3053ebf8d2e1398ebe436797a84efa64fecbb25fbce60dffda8bedbe0774f83cbc4bcac266f8f97b1f948ee71183dcde0b3e90b7c66e067097c467e3f361fbb93a7be6abf416dfcdc76dfe20ee56fbe6363620c10f6898ebdece4cc71329bff9b9cf585ae4543e79c7ae94eb9a7a09e6d4eb106c373526877ce6ef7ccee9dfa18af0afc29d551d7736a107bdabab59c2b784fb7e364c9fd7565efd7490a0be7dd700f445726467ebbf30e7f13bb352c88ad969677655027dd45fe3c4f800718df27f0baddd4c8f2a450ef4be86b183859601ca9dc9abf44b675916308922df596dad62934ae39b59f90c3a6e573624b059d791617699b6ca2b18b2c4b4007b7bd1f7f1ff43b90f3aae57353073f2f409e0a9c8f8eab35c6694cf554756dd1d352bb77a4f3d2fafdd857bd278c631df84e19521f28f4ae87c8efdfe8775a52e4aa31cb9fdf12dfcd12ba3f13321fb6b58d8d075ed71ce5cf23db7d08bcf44c7d1c76ef5de8675968f44e95ed594c895fd4f2f9f228dd6717fa7d4d7d5fe1f3339987ea7e6c1f78bd377e8ce4dfe23e996721d31db645651db145f573a54fe9fb86769ec55eef4475a2117a747e8aec1c7bce39a2fa31b17b875718975a27c6867e817718e4a7c0b8eaa1ed4e02cfc9e3e1e48ebc60d7e233433f7b8b87eea6656f67c9d639a7fa7417f8fd7bba4563ef900e9d3dbfcfb8bf8fa9edb23dbb4f8ae981c84169bf707feb6f49d1bb517dcc7fbe0ebce9afa0e39629937b05bd6f677a4d3daba4f77a8b7ce78d8d439af3b7c8768da4607b0665a8d28ff69d32eea4f63b362bd8b4ccae89ec1ec432d4f6c27c9f74fa87c0dfdc5923861f3763bafad4b23e46e44ff741911f227fdebd33be5de4cd3721f5d3d222bf45edb6d6378e976f40ce467447373039c262bc899d65f41c65a93f3fe3bacccf89a97ed60231ac9ec85e26b6e63dbfafba9fa167f1d6cd62f53d3157663cdc91c5643cb80f88cdc76c91ea5d94eb9665b19d6fefda01b65ba48afb2645be8d8633e5fe8ab6ee2db5f322f2a6efdb19efdc1fde81c660da74bd34bfac26e18eef08b96f692ef58cd631a9e22e65e8a5f9ebd38ee6f6575bfc7fb2578ce910f8f939f5e7904797c6760cfcfe25f2ba5b55dc2981bceeea1bab15708c6bf6eaf5f41473f5db67553cce989650fb2ec7c53c0bebde6eaad838b3e1019f357b36d35b0036e174e794b962beaa7a81df9a333296399db7fadfcab923f333f9f3f9abc6bb23e72a19bc3f8f645ccb3f9bcbba76026298fd97fb731acaf1a0bbef16160f7772a16e194b634e588d0019b35033c08f7dba07fde3e23bbc40dd6d467bdeda7d7b723f3976f065cffb7cec0531eaecfc26fb7158bb79dd279d3bf9096a777e3667863500f33cec5ccb80e8c8f772dc1d270bcdb4cda758c49db95256be9b63237691996e422ffd9e14d6c6e1e7dbce8fc8eb986b6e7d6d63bc2d7e11e8a6a4e869813f57c74b86fd733cccb7b1d19dc5467e4aabb9fe70cea4b1bec2b8fc308f37f7aff9e2bc741eda693eb7218e720a0c578e134a71cc799e6ca739ad5b6376cd265ce8752e596de7e273888f06b8885f3767f59e48f29fc3fec34fdb3dfeb43fb34ffb0fe21e12edecc4c8c9fb6971a9838f486d243d1d424cf798dadf8f3807e877a4fefc16414e617e1e7b105f3ec69dd191e5b1319ee06adc7d213eaabc2fc619cec95a3f804f20e502a0e7c5b89279d563953c19625d2cd9cf3fd642dd5b5d8b84f85efd643baaf0d466be532a70973a11f49c0176ce815cd3d6e788f338cd1263b99abced859a63fceffb997c1faffbeb70f1988fec1e628203c74fdebc9ec3e18375d3ac32c90f177ff1982147f23c0fcb04b12011a3ae9f6c9d786269ac7709f6026257d7ef08f8228067457c0b778bdccac233aed533409e250dcebb11e3fb7b1a7c13e60bff635c74aba058a2dc5900e7dc766cf6cfc9ba4fc6b58a8deee1d595e64fc643c3fa53ba56f06e94bf8a7f1fc010e1de077022e439ebbdf33e9bd00bb3d4bb6a3ff23b63927b7cf0b73db18ebc2907027f4aeda7668c35a432d95f67b784d6d98a357b99544b48e5c65aac3bac62b0804378a8eb69cdc38ad82642fde4026d6e7f9dbda59eb30f4a9dc59fffc567ef7eb3ce52fdccaa9e51cc5bf0b29be560681cc8623120b21ef9d8cba90fed92337b24f289ff3bf21e949f81fc11eed3d35353bfd5f24cfcfd18d67ec98d41dfc76b9df8fb1bf9f963dfd2039663a8af3da7feec98f86e466300d5f8c7de540f8afcad711fc5e7d5785abe8378d7567876f55ce973614c8aefaea9979f52b331478acfc93bdcfbce7d48ecef8d31857e76894be57df2d761ff2cbf5b60e4655036c60371969639da27c5449d53a8f279f34184b1476217dcf5d9c79e734e87f3734c634571a96b71e791c6e388ceabfc63f25dc9e76fe2525fc79db9161bda91f797c9efaa58a877cdc36dfd796af72e63df817c058b6310dd9c983ad490d49fe1358af1c1758acfe9d854e3c7cfd4351d1093b9cdfdec02bc825e4ff68beed656357291efd5e47cce0650f343da352729dc6f60955c9fbd8c0dc77435fb1e39be9f06c0b156f7ee839e2a4187d922e7e9f4e91e4e95c6f72d00a70ae07be8429dec8fd8e846a1ef9ca577c6dad5a277f20ab78c11e7f84a71f0249b07fbc2803ffc69c061a5814e85ebc93b5458a6605be0b5c8bf4bfeade04313f95329ae0ee2bb438ec79fac02a3a7c7f68c5c7b815e15af0b5c2eaf8c8f4de2c395c74cecb309d1f38bc74b3d2ee8e316f96459dc82e14e93fda4c6c7e4ef9bc9f76df0d47efcbe6d7b47e0b795f701efcbbebeec04dca4c0eb76e99a1d946b503f03d61ef068f1babf54f60af0352dbbe778e31e9321c467f9fdd4f81eb06edfc8b3c9ffe567530e30f29b9701e2f6917f0bfd45a3eb73b3c794fe66d4f61b9133b97ec7ea59c4361e7938c6c91ab9b5424fbfa4c3cd15d6d2a6dfbd35b888e81ea578af0b8857eb817769f601535e63b07bd9ffcbc7e3c87e38056bb23673ec77b00788116043fee602bdc7acf79bf8b20bb2772c9de89411e361f591af48cda5b7a2b1b5efe791a971cfe9e669c9fae5a00f03b8405ec1df851e59c8e72426e0a1df203e5ccc0fd09fe1bb5a6c004ef05be05dc13ee7e48ec6703d853e0d1e17d586de37cce598808d2ae23abeec568e71cd82c23dd4fe27f68f103f778cf870750c6a48f4534afc6f13738e936fc895159cc89ee7e22b442f6d43dfb9799b5e19da104b0139392e708d014f13d61e7dad9f8b4b7d76112bed1bd171802de73be7d4461ed5f67172f19c757d4dc55ba8d1fcec6d873c64eb6e166f3ff06c4fcf92222576d483f2d985ba9656351733aa77ebb9b04eaf1493746cf69b6bd381f93fc69e5586467e1afb9b2d77df2ee68967a7a0c837b5edd3cd620bb8b63ebc6eb8a7741137d7e8e94931cd5f306640ce7cac98a35bdc71cb80d8b92cb6a0181fe2067ec99a54cfc37bea65bde609f7be39e4ee5313b10997184f23b2f99373a21db89e27da67fcb8657333f6e5f559fd8bebf3d9b1fc9b7be5836331c2223188cfa63ab37fbe47539bbcababbdb347b5c077b6a13ffb5fedd1ea79ff2ff7289b9bff0b7bb47d2cfffb3dda18cbbfbc4771cf5d0711e4e1a78845f2a4adbc4e736c501f67ea05ad0154ce0d5c3308b3d8cb0faf8b2fd9af456c74b5b18f757f6a1d07b589941fef2b9f9956bd098a7301d7b8868b3ef157e85391d351f5ccdb57ebee1479388bb8e31cefd82e7c8dde17ed73903db4ceaef5b93ef9fe4b6d15a8530c0f712739a61d274bd46b0b32efa5ba36fdfa7178d6c3d8677d305f75b6efcef539f5e710e3fc5f3d97e66676a147e3500a79a1e8e7fb23791618bd63ecf54eefe95cb4db43ac7551eb3d565ff3956bb0a3f754ce450475cbe9e96b6409f642a8e5257ef7a93de37df5fd7a97c09beed3163df25ab865ac717dc9f9fb672a28acb7c8a8ea1db17f43bdb6f8dde7ef794e6ceb2df2e75df5d991fbcf9d0ff86f7c5defec58f5d295ff1bf91f14e8fffe3bebc1eefd257b671d779c4de88f8ea9916f525b6d27a2eefc4aff9af67fac758a69a15c173a36e72b6d10f5fec0faeb761f415527fea5e3d9eb4987c8bcfc8dfa036a5926d7fbd1fdc2b0e1288e621ed99611798889a9b439fd1070985b621be7d8b87e60ccaec17a5e946b67f40e4aff0deb47f7b19d031fbd3a3e55d5b9aaed613bbf25f63553dac2fafe6fd85b6ffc1a6cfe289ec5e4c08b11ce02dfc962fb9ac703da13b49d08354f2d7326d4daaae55cb84f8c7c1d7957222f54e38d5ef0ac7edc56807e0832cfca356ae0697c2896b715f31c1fd14f5f28df213f08fc949ebb197b1fb3edef8df175add7b5f0a6be819a65b5fddaac6d56c50e94fbefae0cf836f690db1764badfc79e0795bed8e075380eab54caa03f78be5a1e74cff1a69b8706f6a02fbcaed22f6bc67c6b5d29caa79e11fa0e39db6d76e439257ad1b6ba7c7ff4bfac97ea67fea15ea53d5bd9ebe2b3fbfe63363ada0cdd739cc3eff19d5c2137a9a15f99231e5a8b0ea03e2aad9dd3394c29e5deaf6b3fadbb364a09b965d461c770e896f7f4596ae7c7f0be3d25decf765b75c267ef45ae07fc7bafc68e53afb99b41bd89ceed650e270c6af05cc0b4004e30f06fb7ce3e6cf03a7238354be04f82feb6a4c8371c5f7a0b1628c5c7467cfa8dc8954cebaaaa9c4e03fb9f62bae9c8d565f7cef18072899b1b96073e23a7d36a15196e776467c0291bf993558a755334a67559e1997bdc45764ef699c6f8f813db2d29e6f33af09cc3eba27f883bc90afbf0ac2e570baee60f607886e23b5e42998f93e66365bc365887a5730e87ad72e5aecf5cafe3c7fd74bebf4358cf97dd9d7d71d74ee844debc4dffd4fbe7c332afb62390df0b646f19795093d1be1fef9e23ece76ad315a1ed7ea57d7cc37be997d8b87643a3771afbfd73d46e7756d72d91071df826bfc6f7177d06c43718a963d9887d70efbda00f2dacfa03c37d6cab731461911fe27b32571ad7676dbe7bba4cf2d3d731d16786db2227bb44977dd48e93debfc66118fb532dee3c1e197ec43d3d9ce81f9f170e03e298400f17573bbe9db4c4d1289e906d6d01b3fe77dec7e3b086d471138a47e19ed20177eddd58c007eca2a59ebd7a4e5e61227d4d9eebc26a1cc67e8d4b3486de3a958dc3c629e2e47cd179c4b197506f98619e456d67a86adf3e3b06d186053967d2d8499bbea9622b7f2a2bd87dbef66cd338d2ff286e5d3fef5ece49c40551c6a2799934c88f8197e66d36ae24bff6b1676d5bfc443d29aeb74fc8427a2fda675ce113aa6321323ed16f3ce7b33ef46fbd4b6c74b5c0cb4f3191456a1ba4813ff41bcfb9c55e8ff266a8e55740fcfbe127e4addf3f337fa73dd79dcee2ceefdeb32d67fdd97be259fb90ec2c9cedb220fe0ee47196f127745d64d3fce9bffc9c1a5bacf5bef0fd27f64811f96afb3c28529b71b87f4c074f0f91ffd8762fc0eafac4b8eed9e5eb504f479fb8d75d3f04b0f73e63efd15a862fdbf75eaf08b7d31c31e15ad6d5eedddaf284181f9bb5e944ae5fafc57eafbeff127b858feddd227f4f64ce31ed38dad8437fb9c58fb8878ff135795c2f3ffdcf72c6dcb3c69eb30ffc49d5efd0163395314bbfc66683de147a96f475e459b7ba47a26d0e1a58a15f37275e76af16e5ebf282f8deecdc1f8322cf12d67ff2bfb5df217e5ee907ba176a1c8e7f6b0d4439117af36db8045cab3639416b2aeed98a804d87b9c1bb730fcff9531b9ce6d7ffc44f67e368a9cd2918d65eff03e3f8c2bc321d17e0e999fa25f0e75ae83b6d3e3ede6f7b579fd031ceb3c458ddafb52b3e31bea6ff8ef5062dbe3b8b1f7ca096a6f6bf4dfd867d5bb5edd7166712b0fdefda4c533dd986efec65bc067b0b7e23fef8b5b94a0edf50873846eaabe7b8b1cfbe466757f5de61ddb7af3e732047c8bc604cf08b6a38b2a44889fd93c7c5fc02780b6afd20630b7c8d9f6cf44ee9d039c7a64e9f4df6a47b19fb600ffcdb7930f00193a277607156885f01b6db346fcbf5477c8cabb00e1053f6bfc64e52cc4707f5685bfd0293515ff3fcc470b7e80feb9bc8071cbcb7b0e53ca86b98dddbd7eccb691e1a80eb754c697d6ccb7a9c580ce0abcec3abbd39625fd727d6ffdfb15f004b758cb9a223da70f5fefcf76b3ead8768a1736bdc126f9431e6bf462e82bcf9c0796c60ab7c8d0d6b9549d1eb8cfde95bd0a6c7b6546ffae1dd9a92cf3ffb7a8e3b8f47bee74a7df61163e82b9f9974d23c6c8b232036e1d7f6d170eb3bf68027bfc279f9976b1799deabe5dc422f92a277a478325fa77bc47a856d64f76e696baf62ba8b3bd3b618d339362e5f32ffa1919d93ce47e229ff5e9f4a730cfffb5e996a0cbf956b68c483cab0adc6afc3f8aba1fe641d77567feaa331ae6da8ef088adec3d7d6df2ac6fb45b5b88c8f1362cd9e737efd4c5dee7d99fd0639b785be0ecb3facdd16eff595357d1959b394f8c645f247b57c3cbe55e8675aea3bf9d873b67f5ed3d576dfdfdb5f3ee373b7f37c640bb5c5c0599dd0da8c44177abf2f9187f1129fe30ca57de097c8734d3e8efbb27eec8d9e0606e5125c87de344bfd8aa71dee25f4cf97507758e10685deec30b253b22ec01918fad31bf2050e80bf1774d476b67a593fee803376e8e4885fee96a3a17b0b1739abcf21cf3a2543f71699992a97bd0f17109bbd63bfc9f1279607a8f9c89bbcb503e4ad15fbe59bf3f47658458bc32f8127d4ce7315efb038660d709622e0dd4cdeed9368dd731227f1173c5b9acb969a866abf6a1cc731b977f792fad3ddb3889357c5ef236f79444ca80d6046c9b5f42abdf111d940ce45c5d58b9cc760c78e6cb43bf12cf0dcaaee2634dc3e604c033fe751d43d88bd3c4b0ab7881887e790f1fb0627e5f7d6a1b2c3185712994f1a8f60d8ddd04bca7dcf7a7fb7ec5c2a73d1f0bce46eaf011dd357d64f2106f79fcb7eb4fdefc43f79ac6b660b8c8bf09c6cdc2c305622eff0b051df48b1c229dfaceddeeefdb6c1975be105c17b533e7cb2ae2bdca30bc03a831ad67101d7f0b587d89740e683c88d21e59e86bfb93364b6ac45c9ffa66177fd7fccbd599ba248f337fc81fe07b762d1d31e2a16885b8d5ab29d095483252833aef8e9df2b233293cc04aceab997f739986baa15935c22638f5f489896849e974807357e289d1bfeff247dc7f71afeaf7ed7a4f7d7e72aec97c873f8df28fff83da4bdee111f45e1a32c5f78eb3a58dbdced101dede26b66672ad4a0cc0c391f79a6e08ecf8c61957b6d305be0a6d61c9e6c0be3752b2b3b073487272a6f09f451dfe377336348ef2a8dd51937152fe0c47377347837c8d925d3e38ca1140b5dbbdd34d0202fb708d63731be79a2fc670ebe6ef96c4fb6b5b846f9a690b0350023177167545e54f5dacfc6800b339e131ae6e7437405b61f2883cd53680c893efa60cff8b973f4bda0087bf60fb10648b40d85fce71fcabf2bbe20d6e710fe20d5eb709ec4cfec6d279c1fcf87459bed8ddb76fc1e11be8e98a234bf83f62238871ac5ac191d6b67cff951435dfddb8e8ef7ba2a42d72174760d05df9f481f801ded66b57115dc931ff678718dbdc967b0a17455ed21dac8af7c3ccafb5794dea475026db1fb53f1549ea7fc43a245be77526ed90fe5df029e5b3d0fea6dd74cbfa26ef1867aa4d8a78bd1f40fe8f5e50d310f40eae748687dc37af9b373039a7fb7b20b9111424cafc2e983cf5076bcede43b22bcbf24bf87ff535ba6eddebc1379e4c1dd78c4e32c0f774b6d7680fdcda2c34a5f91757bc337227369efead6b1d69aa37f790f5fcfd907beef4f3f2f32bfb7bc6ce17729f03ffabe07efe15f1b5fcfc3dec4f4ddc5712af6a837d2bf036f2fca3f713c9c7ff7fc77e06531f05d9177d0cf6779378d8c54a82f181ce139a325ff9fca2894e9e79acea5cce1e16ae7ecc3e95c885ebd72cdcfed3f78578063cd02acf5216b6e923905b551f644ae87606fdc0bdf5ba8f64f1a5a591a698e2a8ba4cf1b752fad7f892d39a70d6336ab07f4d434628673fc8f632382ed82718af162133e8eaccf61196ab7338d139d03c1373b791e3bacfd96f9fe7fe77d55bce0e9fad0bf4c3152a20a9be620e29043ee7d777515eafb04ac9ba7e357b9c30c2bb365dcaa5efb9be3d57348e43d11f2a59ffa61f87bd5dc8c7f737e0286670bfdf167275dd94710125a3186575a5bc3fafe5f9047b0fbd1c8c3043e8832a891678877b8c2ef93f5e4ea8e62efd492d8788b2ceacd9350f3553fc28ecdcf36922458eb87d96e48ebbc65bd7196b3fc9b41d164c77b1ae11b83db5b39fcb55d0f7e56eba0b89da31379e6efa958f3447d25e43d9c778e17a1a765b160e7c2386e4fe0894e87da0dfd9bb2d653a8f5ff8ebd41e21ff67837a99c42d948f6b4e24db00eb4a5a02e6a8af3f9b5050c45ba16f2b7f01b653de5b43c89b201ed59e089208bf8efdc6ebf98679d3f2add0df4754eab5843559dbfab9927c8b93a54cf78ef4def592cd9fe35f920e85c70dfd6721f66327e63cf1091ded53956be085a8f66ee03b63fd46ea37eb19bef4d1ee49e54f8e10c6791fa2de81c70ed825f85d28134773c737c4f1768e10fb17fb56dddafa176ee464645d3d4b68dc243a7981ad4ff74a8ee1fb135569693fb9e738acd4a37217b29d9b1c827f8390bf8acc7ad376f1ba708bcf971ea9c712ee4ec0e9defcea1a0ba9374ffb9df8bd229d20bcec1eb0dcbad17a4b1b5e17eb6adeb275393d8d1ab2cc8cd6e385e2d255bd078adb0692b1ae6f57d1ed10b9ae7f607df5ba1ae2fcacd1e9c25da44d9c7789585f952f08d01a63fb1b714fdb4d1afcefc203f6c23fa0cac95d8c7a3e9f9cacffd382673e3455bac9f3e5fabf920f2c2d6ccd41778ffd35802cb097d487d350e3e798f17c8fe6c90f79313d1f9c575c8cf563e6ae8d1fdf9daadee65a3effd873d9a0bbdbca5de1264ffbb117d5e5ae36300bd34f91aa59e12ce0b912bb5d801eee97dfe59d90c92ad0bb6cfe60a7604e5cd950f23cee2dcb9c4e339bc1ffbe8567b407513e99930ff29f4e5a8e115417e8124f739d6452a3e53f5cfaa3d57c7f140df9fd3094b716f30a78de561d6cefad9be72cc2da743f3d7249a9e436fd3da3ed471aa1e125ef7532ca1b7dde05e5feb57dfaf3262d389fbc07adea86b91f0d280a6695fd2da59411fd0a763356091615dad9575026f41e69c35eccfd9f7121e6b7bdb0df4b7f7bd5e5f53730de8b3736ac53a6ade7fa55e84d6da625f23a9c7e617efa9f4c996f734d494fdb0478386711bf8d293f12836f381e6349cb6522f9c1afecf53da55b111c9986bcb39c5b9d3d9ba8bd47ed5b3d8dd9cecd7340bc7410698c9eb5b1269e6252abb8f80d8053bf1de51bc10618e55dfe1da7b7bac4ee38be730de42f6e5dd17de0539df3f42ad7f0edce5b9f66c7d0f45ccd01fd0531cfac58bf246c65a156db4963bc1723aea98cacdf74cc6a901ba435c9ad0929edb6fbdc52db44c7c46ec3929c80d89d605fed682b9f2a3eafb283d5b84f92a43d98d7d1ef19d6637b6247e5ee19828fbcb3060c91e35dffdc90170658ce63b206297820cadde59c34256dfd18a8fabccf119be70db3b6bf3afdf6176fed4bf01f74cba8f0a6eed35c88347e02dd577aacf3ddb3399e62a2ced1acf6bc44a697fe629af109e9379dfbb34370903a4b295f76df7a715cf44dd1f29c6e1ae327637a47b2e63ae74b684afe5d159b00b0e3c2fdd35857c85767f720d9720bf937f67c043c47369c12f40d9b5d7dfc475abb5f3797642daa9faf1b73d2bcb93d7d6e7b6e89b6edef7e667cf7e6f728d7a44d7cf08eda16ee5ead7f090117d48d2ffbeaca35575aeefd5c4923d28c81906323f546ae8d01f3ff316e750eb77b6883d487eab4bb9c35fd4b192f52dde07d9937509f57278bf268fcd6df2642fc5fc368586dbeb00153a6eae8dec96bcc61ffacbd1bdca17a7186c8706cc82da3b993fe83f309637c922cb49e9995dc2b25b06de30f3bde593f707057f5e91bdb5fc0e2bbb3119fa941604bda94166b5acbf5916d6f2cdc898e5fc361f49364b8b6e27dd45a67fb1ba569557a8f88c2d775f98af6c330ae34a9f533c17182f0bad7b118d178a8e03f911e7aa7f39cdfba736dcecfdf5641b9dfb8c8c3752fe867f0f127866f4aaec09c4e3a16f15c38050e8bae2b15685dfd1ca13857a24292f197426b9dfd477c6506b9abec597bfc0342163cc0d91367f5e596cb62e47689e2da56949cf6dc84b5578078df372fda1ae17d0f16bfe0853f6e3b0f8636d7e820f5f79773b26099c855a630bbdf1994c47f9437119a4bb56c545c12f82e3c725d7a5283d6e5d9df6c08f54ddbfe56e35d4c0d27888b22ea8d5a43629ab192dabfb561bf328d82bb571d49acfd8eadf6aba965413cbe6c6e9f8873d6aa84da4f86181b561f98c07e1ccaadc3e904daf37428f3c06d398170cbff9e343cbfabfd65db5a65fcde3d4584f63ee077b164f7b3676adbe8ae28ed13bf43c6e946533effcc7d6ebf6bf930f17e7e62976373fec91c9f2e12f51eeec6377912971e2cfa8373fd9f57c2931b650d8a34e327f877cc09f4a6cbc0836527ee9db5b392ce4f8028f9960cc86c54c0c1dfe3d3b10394a74cacd71d2c3354eca5bb215f2872a6c57f324fc9e9e8d9847b878445deabb5ed39e6e23b1ef935ef317fbbdc5e34d38d35febbd7006429e608d9fa18fed0b7f848cc38df2547f7bdf373c83b96f5f8cc3fc4dbbd85b7524fb84f5d46dd13f5b6b51e9dca212ed9eb7f7bdde30ee5735ace4b78a5e588f1347bd5516093e8a85c4639ec595811f5d14df38ab9babeaf5d0df2bfa9f1f811b9f837a9de10f7b642bf627affb6ad48b696d16c450662ef043a18e05f49ffa78323657a3ce85be67b9f68ff2fd4ee04d1ef57aa4c1c1ef3965acd0ded63275b23e5f3b8974d3586babf06f96c3f9f035f314d474b986da28a0e34e67e1427fe2dab3aca609f5a9fd0d7bf636f822da6b91da6cfed6daa1361f8658e3abe6da57bdafa573c65e2e6e55f78b3a4b736f6c951fd4eadc1fc7c47df8277bb488ebf759a96127f45bd5f837e116f0b3a27a6e9de733dbe269de07cbb77d22ef289f7a269758ce31b5df9be6926fddfb297097079eb37b9864c1d8f90cd6729e00e1c3331a6b9572e5853c9cffdf7378ff4df923e4423d933f725ea788574af336056cd2ba9c1ea19c6631563977a2ea6d6a5bcff31a622b2da252cea770698e03db1788d5d25c2c21fe2ecb7e0bf87a111e148cd54c7a6fa36ef026cf4df3b13748e97bf1126375429c5ac83190315eab78337ebe39625ec10dce53cc4ff381dfaee4b131675bc4cd55e3c8bf2243e7bdc537d27eabbf1db2b3fe66bc5aefe37eeb95ce959bfbe095c7c6119fc45b1c03d7e9d4720038fd0f3b5b2b7bcc0e2c2edc2fa746f40330be097f2bf7174287424d06b393511f011986b5afb29dc3fb5ea8f2af59af06b9b1c80277d3e84f9063da8b4f5f922d4d3e0593d5e95c58ac3cecd9c78906f9a487e95a27faad10cb17fd068be6df3e8a53a8f56f4d7bd22477fddcf9b1759d92f1dbe95a677582d76897a07c7f2f84784454ccf2c5232aabdcfc1a8607c6dd11536327c5f5316f782d6147fc5062e8d7997b2fd4f826f3af7f210f412eb5ade58dd38fb36fdc9fe61a25ea4f7fd5de36cb26ddf2cbe72a7d41915bcc3ff5eeebabd1be71bd4c4629b1d4fbe2337b7d536c6aa116e7777ff7cdf7c56d340771a7f0b0fcc13e2732b3817e9fddabd1b2b3b9af3ef7dfb85b66e63fd26cd13e1f96b7d134873a967d4b9ec8b762261ac7eb5763c597f9a723d4e1119e4b739718bf7c15fb77e377ac0f37e19b4c4e62de1acb5f8aa80cc5fc477f3dfcf4ddc511fbeaded30fd729592e98900f29e785f15ca888c9945ade93286320868cf6e324ea4cf4c8321f5179a379d7d96395dfd3b8e2d5b457aa730a767c5d346f4cb0dda9ff202ac9fc5f0eb131dc05742d81bb4cb6ee4be2bbf7936d2d3007d018a661be24723d8bf24db2f51697496f99849ef3b925bf75f52cc8b30ef42cb616a9af017e263c1fae876978c87abec76b2e012f3ec85f8e747d85a4b3f15c33c22f7cba47ce24f486274733cb7097a2edcff4cd75b517cb4376f3bd4a175c7b0b2bb4cc0eafdd93fb15e7e4bbb5e6e8551e3bdb4f865bdf4da3f110fc7ad0939d9f4370f2bd25f670c79ee5d0c7bd698c20374fe48c1bbf5f0f2f31d9e7d1cf64a2ad88aef30931e472f04379979807b7fbf08669d45bb0dc75b656033f9f277f9683436c4409d4ccef22f1b7b8679b7306fd6d8c086a35e93988cf119b09b0e1c9de003ebb497b6bf7e60a7d3a641e27dba2b4d92163df9280acf195fcbd17c785b92e35f3738b3d08888cc8699dc408e80f74267af6b05f404f19ecbf5247496885eb945696db46924ec7932caef24a714ce7ccd7e3adf74aeedf92ef21cecb09093f5ec39a3be21c41175bbbdd5b68c66994bffc937bca7296817fccd6fc2cd5bb486cb4127a6eeffa9fb42e9ad23b3c97f8f926f1b5340df3380b3007340df3ec8c3160fd615bfdd2b6fa9d2dd127b5ec11acb1160a30f42d87eae1d81b3c74cd5b64c1d926be66c2dd26e3831e973b7bdbb2af7e393cfbdef046f818abc78e20dec3f22b5670bfabb3486b74d97647c47b36556acbc2dc21eb4b218f72bc4f222dbbf8bcde679e90fb625bdd6e6c9944ee2521f445b7818711feb3859ea7591eb80bddd7ee5924e693133ac1718f8496a6dc361ab03510faa8f7ca17fa5b88bf9f1d90af4e997cc89d4fdf73c8de17b131fc0c7bce29c0f34dc31dd495a67057300f1d749958a839566c85aa0f05a57b26a3b89d5bea68876cb27364dd3d9ff0d1e6dcde13930102af64e77452780f5f7f55733920f782da05c2bd30fe216f16e482ede1f8939dcfee5562bf7792f0e09c42a91e00efa0674c368497d4faee8ff7896fde7650cf9e2fd2b89a5b647f1e13cfb00be13b3e5fcf9890b37fd8564664ff69ebae227bc7edeabe946b3caee63a156b9858df131edf19fefc6548fe01941d42df8fe97a904f187f7ed63785ae7bd2059e4063a09c375c83dd90d522d275acb2683cc97c0def07d4305803e0fba2bd4cfe3dd10687baacacea2ea0fe00e88e6144a0fee2af057de7fd54c970ccb54e08dd6d5dda5f7374126bb1d0be35247de90a7ac6212e228de870a0bb14817bdf47e5e08767bd5c67e5e0cc7c316f3b42871bf44fe1fae1df42ad098e6174383db1df305b7f660c2f8831bd39436db5bbe4cf869a0f7c84de09c897e773182f3a11ed01638f8e641f1ef17882ba0ffd7d6ca5690c7797fc07f8100f867321ac999d5f11220d148131fc8c001b19e7eed3fb43de138f27f06c90d7e78667fe5a3d2fcd5b7fc22f6eff753d146503f7a17d12ba0b4793bd0fb511587340eb5bcebe7bceecf1a24be44c7d8d38c6d69b039f47bfe91072746d23cd667974b18d58d8df2ed0f8a41c5ec2de3299f4aab1a06e731d15127ec358ae8dc075a8fe2c32072756fc6d0f424f0e3dfb3fd9b94a35eb2b3db2689d208e0bf813d1a3890fe21c1af563bc5b923ed174ef447e08b4ecea7f8779bf17ee58cd882ebd97d12deab60ed84bc4ae0f9a6bb1407f65bc91c6c9d37017776cd88bec10ee86dd10ea31b24be022360a996bfd4cbbe9c7ba928d58f752e16a54fc169f9fe5584b23ed8db0d63fa5fba50b3577b22f9aebfef83ba90655b117a8ee9c3d36bd5509361fd67ac2dfd33193fde786fd74265197eacf520fac9f57c447e8d0fda0bc04eae8bbe956633c8afc6e98f9dea21030492a1d84c9f2038c756cb17780ced4f522d6864a7b80e3d058230372782461a15cc212c706cc8272788addc5df5cbfb4884db9f81bf429662394c3222aa9ed037aaa738ec62b1df829ecd1e0b85debd96c4774c2554164d796e30bacb2d0723a01d79de7e27a0a959e55fdc336fcdce6f29ecad93202dd54a27d5a27d46c9b36e0cfd47031aa7808e39fc2776cee14f356fa6e1fb8f72cb61c437ec6e17aa172dfaafd65f4436580a8f7c51ec8d994e8ee5017381e02e69374bface0c2e978dd78dfc5b8068de5e0ffc57a3a1ec3617429d6daf556a523c478421987086c8cc05dfe607c72960717f1f74caebded54bd75f19bfb837b10982a76cf2a8dadd7137cff0a7fcbf5658659e7030dbe01819eb85fc91edd9205ea82388673ba7beb418abade2bd101ffb02d07fc05c8efe8fee5dc57f57f7fae073da061fa9dfb18c6f6a8d3ff733d38044684ba28ae81f0c04be045c926770e2b2fbd4df99ec2f79728770e819714b3dc7909dcb9e08f11cebed996abdb44481fb9efde1f620d3faf4325f476982761deefb01a46ee6ba2675add5d1eb761f400f606c8c952dffbde2a7dfb7769939eb3f01ba2bbb9550c13627a944f8875a4946e46476a373b7b71fc20cfb2d05ad2f1cd70ee745aeebda24b75ab3a5326d3692f42512e0bb4f4d2b747afb7365a08d78c16381d3fa107feccffdb3481ef45599377bbe1785544d63d9bb6f46ba4be3701d701e455117ac36bd45b147e7ee7b23632869d106452b7f263b0b8afd96fa243f2d92bd022eaac3de69b2174615bfd4b38dec33d46d90e321574567fcd6c7d3b097b36f9f785e38d496b4d523ca30dc598b491af00fe13c352b68b6fafdf51d645e9e6ddcd2e62dc166c8235b797f93addc72a9e2ab65f6cfd4ca89d9cc696539b3fd57f16e44c2b9e08ffbeb0fbf39be727fac98af00035927bd423ea3c5d8cbf93f7fa5e52f35d709f08bf2b66b87038ae00dd0fa00fb4cd2cb313384a2c9bcb856efa61083c1efead33faf9cd3bc274e94956f9239640336cefe4dad434f3b513d29cb0ef3ee4acb2b3365f6ce8cf4c6d600d310384fd12f55638a7c80a5c515f12f652f84e5a7311eef48a9f36fdaed203943da1fe0d0d7d14d49ff2b78df541024f269fc5d4c7a15f636398c21a8116286fd9d5b025afb1b7bac5de3289008f19ef2360613e4e801d19e7107f27fa3639ef04f104d1de9c96989754f9cce9fe546b81677c23aa700b8d7afd7c532e41c3588cfe18bda34d6c75bbbe96802de7afa97c24f4ad659dadd5efe23e4cc02f5cdd9b61168e1799cc3f31fea6dc3dc45978bc56b62b9e653d5f05e5f3e77c57d91f84b6980ff44dcd9d192fb8dd3f774e378fd284ff98847393dbaffb6a2ee00f23cfdea5671d7c36e84db2c0d5abf9103968cdefee634265e0f0739e9d4a0f79c68ecc491e7b70c43bd6bf316c782283222b4d85fd20ef7f48efefd2b96ae06f4ac3f1f0e8235d61feb3a00b107e3785392d604ecc2e279ffb0f13c6025b63f45aa05d92e0dac0d739e4f99834a6c865c6fcbd2fe823f3b279fc89323e8d015ab7a48a95620e10ca16a7b447f6bf843d2ac47c1d6e4fc1bae5dca8673cbbcecbd0aefd9a76f5a7b9b74dd81f35cc0f9e275dc9b0765b448a8535db24951e207e9f6f5de7c4f4c19565767ca059516744ff2591b36f142724d804a710f0082b9933cf3a85383f887f10d96cf8646cc6b789dccfa23cfbaccde1b59b7e8c8eccaf6985563f8d8d5490df8b78dab03f745ef5fbdef8acf9223c4b645b838e4c75dac7b1e6ffe73c49f551b4e876a8dfcab6958dbef373ecde3b5b6f780ad6510d93869c63e553e3ba63cd76abf13ff70ebe39a66f47bde169eb2d8fb3ee3d8acad3752aca68d156032c58536fb49fa9dd81395d6acff0c69ee37c1e6e0f9f17f2d4fa35598dfa20e049bc7bce29b6b25b686d780c45c8dd4b26eb41691bafc446b8b5e95da28f47791fdfdba5372929b6a682f1e35cb6deead1fefd30779efe9efad40d8c4f2b797c47df5b98e1c139435c8bf31abdbdf680e734927d14723cda6b0d6ea2cf57d185e15c5c2d8b1be3660a4d8a32706b998f95ab77438819a669d4712eb1dbc19828f7210e2eccde52e427ec17c35eaefaeb4b750ed88ffed52ca31dc3491e88ba5b2ae61b88fdeb6dc2339ac7ec8679d6893af298b1ab17f1782eeb389497dac6a96f1b69618f5e92b931f817d1d9209fc1880e53a2b39139557cb7d13641df07da3d956d81f44c7d93e2e747be3fd27cf76dbab6e0b356f249451e7458148067b1c17322efaece50bedbdc57837bcfef1a95bdf05bc94f4c9ecb880ea4ccb1cdc7f8854f439175e41c87d101f42a198b579579d25c6a78c25ffb2a0cd1df369075cdb67589710b4388732b34f0eff85a8116247caf80fb75e8dfc3e860b7fa7ed81e7dcfef383fd5eecbe398e01d59907368f64b8e17845f97be4bed796f9e10de1256d86e19e173756c71f467021dd630b3869f5bcbf9dc026fe93ea662cc067448b0eb4adbec73de08387614037d96e3ef9e62d8f15c78077d0654f6e05ccfbfb64e47e0c7fc4e65e14eb40137ff2dbaef36e0627fcfaff7efd0bcd3949bde1c2363361d9c53893638ee21e6d889b622f92cc279945bd7ec10fb15b15e6bb936f4fc58afbb5a6e3ea54b5947dabadd5b6865c4c670e07ba29f18f1edc388fe60b593b1317c408ed4fb4b128dd3165e89325fd627609d5da21f45bd61e66b19d151f74c3f407ffc2213ed252a57b88f8d8dfb25afce21dfa520368d436593cc376adf57efa8ffb65d2619a638af53e02d94357f27e627e851c823d6811b671f06ddfbf13d0ba19e84eb75c80fbabcbf29e4f7fd32ef9167de322e5bc5dc25712e4dfb21f2aaee240b34e705eeb2b27ea69f821da2e927c831a3bce9633c3c6ddd4511b3714af2be21e15f8fc05b493e545bf2e7af3e31e796c536ba696c2d8e5323fe98a27f87f935f773f4fb14f47379bec6299994fb7f817fc688f693722ff31d7666161d5fa64d3116406801e7659eeede7bcb3e91bb41c7021fc3f8feb381ae94bdeb0afa87eccfb73d7a0f2076843a4dfd3ed6e846984bfddd7867abcfc3f13e89c609fa035dfd11119ee3125b7425ccabdbace7f3d832fa4857f9fdea7b4b1e0fa07c8c9c39e454543e6c1bfd8d16ca12e69b03bac15c9bce96c80e39a7b120f4c37cb9aa7db3f5166ffea6ca17469b10f72c6072f059bec213fd83f994293f2e307f087c8a9497d2b8b9456c8d9fb4dfcc90d03bdd4ff3645be7ecc38baf11f4c8c92ef67878f2dd4586f9d0725f5ae48b3cbe9d40af6b6b70b2ad21d477fac62d09bcd5e7b4c127fb9d7db0bfd80781e6419f09dc955bf7ed71d9a5ea13cff68d9de539f616d4676d5ec06f6d390716db68d2f1a15ed58db368077eb9b4fa378bd37f5797ef487e70b6d6ad37a73e267236827fa939ae54843b8cc9c6ae4e71bf9dbd9237c0ef2cf867843b8c7afea2f38e7e9b2ae68c3e49e11d7b319673f6bda4e1ecd04fc9cf6cc77fcf620ccc562172e6337e259fd7f3088577b4c68abeb2f9c9fd69c3dc7de2776bf0235539738847466c42ba47c6299932fd60f493eb03f8dcfe899e3dffed182bd36fa2bc4b78ce239073f06e5b2fc53e10edface09fb4e91b3a77346bfca211a27073c7bf9f3c0eda8fea632f096527ce59bfea186dfb17deb54732073334c2633fe55d1e291c5fa0e81b7324307fa584dc26c587c58ce292a93c2368e725d8021e4fbf42667dfbd1710ff6377cc7d49426fd170c7e57985defc20ed199b6f1935e5590b3e8a4ea51f52ff5f5446c99f553c08ea08e7a34132dd0d957805f341b79e77e9bbab2fe78eb5e870efb81cc63cdf491a18bf3dffd2779707a0f32a2f751fb85119e5e65eca276b5ec30f790d83269e26cfb3dc7c9bfe6ce367327f1fdc9aeb6e39ff25bf6fce57409e03b6f23be0c437d70b47527f2ce53ba23fef9aea5464b948b195dfe3b1cdf6966264ed93b7b2c91f01584357dbea6b01f4fc373fb7d49fa7c6c2d8d844a712ea4ac07f3c3b2c88bed6991afdc81bcfff9a99f7282a8b9f9e797f4ccb9f6afce42bcc75b66618f339eefa40f4a792f9bc49b98c6cbee6f9d7f67d124b79810d3642637e6baf1ad7abc57b2a9c7aee93043f3fcde1556c65e627af8f21c77a8531681c15f304a97ec9f2a26bbd0650f76fd3bbbbd29a853cd287905705f7636eb4c7b564f9d8aa37ffd3f814bd0b6d7292e3c82bbec501d88214a330119efb2bd4b2cb147caffbff4cfe11de675a6f5bbbcb9d187cde580f135afd727e58752137a796172be4868c9d5b68a9f1ff6ff869ff713e22cea9cd3748e7d39e13d69b1cfc5d82bc089e7520760d181068a3e23e60cc9ad8a527d46ff0bd6037a2dd7aa8c5f976fa6eb683fcd94764999fe00fdcf53fd18610e261e345371a0fafd161f5cfe26d4db900076a538b7a2ce481a559a4e62b5b41111d887ecff22ad13668d2eba94dd21463017f21c758907d9a353e85763cbc67a9627c28f4508dfbf55d657a2d5d27d429286b273a53edb31fb67996f6cd93685bf6b3cec9b8a3c11ff4ef9f64aee4378127c5a27e6ddfe7cd7ed671e59f0973a7679b932ce8382f919196e037b268af8d6e47ae9db05ee9da9224384caee15af235d23a9558da67f4eb42cd238e6de864fccfc63bcccfa553934b349703de1dba6687d863510b5fadc984677d06e5bb8ce7a265802db1c1f359a01f87e95c3f9310efe20fdbfa2216d21affffcaffbf90d6feebfdfb3202650ae6d30556b667f911b1b53812db99f544977382453b53afd54b6e0fce23e6eff877e5926c9ffd83dc897f57de605ca1c68364de635bf734829a55b1de327ed07ec0673fffc9e89ee8fab4be6c51db1bf41b9c4d7c67c26bfe6afa8b2aa34a6617819e82fea2719c61cecbf0e8bbfa3eb41c9eef20610b9888dba1d6696eb09ef1e8f72adf07faa05f8f68bb0d8bf040f1acdc7ecec669c9dbc7bc5f61ccc67a46c3fc0c7b936c6a2d7439dfd729a3bc5f4e8d7888580877c843237bbeb54c2d58d3fadc7c43ee7d1e78930cfb8eed6bb513ea7ba91dfa2b1a4f8a38373b6883709be7f3e3fd98f8bdbddc93cfc139bced867ffc92fbf2615ea7a0d711de2be23f44b9f308bcd526ec301c9c25ca1bdeab06e413c3cc01be4bf70dead163ab8ffd82656c9d97599e5d181e99581fd482a9c3696ed263b82d38078c0d4eb2d0edc3be86d62da13de25ee231b3afc5f72e4e816b964fde85fdaac49addac7f8bf24cf3bd5526f525ee41ddd4afc8d03f3fc49a35cb39d1fe3c9f1fe44e5a0ee0e2b13b82712841ee59bc3756618f6eec8c9fe04791b359845bec7924d48b2d55bca4f6f385be3f8017957d706c2301f36a3700bc24d48f56459007905ff3d1eb48f4e16bf7cc7775b35a630abd4ca157eca1b2c703f79e3de9a198c97a2dee2ff90d3d878cea8e4a1f23a471fadc056b9a9dd72dd83a038635517bcef786c466cc82d7ecb2f5e8da4117277c7bc1ce98638829f9a87f309eeabbd985e294a8d8512f80b5a9391dc7eabf32bcaa2f31a3286d72bf31db6377b5af7a4021fd475a9a05def2d836479813ed171fbbd92918cf69bd2dd43fd3b828ad6f86d802e0e496c42eaaf069264df707f8965afb2adab36d7db084b3bb887c49b69dd14f8bfb1167f16bbd37d5c71a6b29b016752faef533ca1dc87df169ed06e705c610300c691c4588ed2c85f5da3cef84e81301b167b4ace36b09e6ed636d32e0c8075eda51eb83df0c11c309e849a4f1eabb6cd1116cc2ebacacf69ed63b08b192450a35e310235a5dc91dc5fa0f3d03bc0bc4dba0e32ab5c4744d7f4acfa08f086ba8e02cc1a786780144efd3b3b81cbe57eba8cd5bc42729843a08c6affe9e3e4e0c8ba24731e9b28ff132095d270da17e857c8efd3d24b9d63d179e2ccfaa777f1ec5359d6a35ac5696117bceed76c47ec190f3bf79f2ccd6d5f78197fcb02dda7bfd77ee3ced2d1858cb24d4f48cd55484873d600ddae34997f042a89941bafb8cbd09e0c055fbb26aba630f8c598af49328b81280f9c26594d22fff80bf37cba047f9b2522f8dcfd472af6a3c186a73461d1cb37bbab5da6e8a0c6bf291893ebaedfaf477532e7dc47104054c1b7676843eea39f567df1bba14af90fc1d8a380d5ea30dd64d23137326d5b855cd56169ec5bfcf507f3fcf1769e83a2719c742e84ba9e443b07d27fb89797faf7d4576d7fd9578af3ea3de621d135d557a17f44b87b1a6ad3654dd4e683e775b3c77268b1e5197d0efe6c8cf7e7d637470f7d632364f60fd04be84fd3120be994639b12920075b8e552bf82cb04eca337c2d4db7ae8eb676ad1f627261b825023636de17f67b77b5075b9edab980135a0e4bb27fdfb987022fe7fbfe15264c4533106f20df9d598c22b2cc42e2cb72cd7d735dd558c1c5216b126bffa1066fd18d0e806327ca3816572eb0a64bc61642d959f34536f1f064b61edcdfeafaa68a714a735c05ec8577998e20f7f720626d2ec21a7e80d0af9561a2e0baefa7b017d11c82c5c3b6261ccbc28718b5730acd268c54867900cf5ed0a7921c678019df397ae67d3f2df76a9f35c0ca9e957bcc3f156bfe1bebaeea3acdd6321f1b2bc3d8d57822c5d31a63306c0f9aebfaaafdcb599d9e84597a89c6ce632b9fad1a7b04d9447417d42fb8fe07792881bbc8a2de228d0e59bd8693d3d7aad205f6d96309e30cfab6610ae75b619dd6306b9f8ea3f8ef6ab6ad0ef635da93ce37e8e6acf0be3a16d4eff01aac5dd1f7b5fb3f66be037a5e78c71e223e6cf58c78dff0b3590ee77d09ccd595f91870edfb46df8eef4d4adfdb1f29ef937212e89e017d84f9ca223aeefab0b8863b3a9f75f398557e75d33ca9dd41d7bf3a4caea1c372f3eae392bdfc70fb5de051da24f5f3bb6e8fe36becded147378e53c2a7800ed99e5aafcc4f70b2c78b22cc17993dceaef13a267a6e1773b2208713fcb01c8712b1833b629eef13dbe7813df2e6c2f9e94cdfa2769f9e577b56d3d93f3fd6b7640bdf29583d951c6af3153deae3a77f455aff52b7d9a87f46c028633e9440dafbe6f9d57c9b4ffc58b33c2843adfb4e71972a3a107d3ad999cad61bc7049faf85bfc5cfcbeaef8521fc2d3cbf109e5f743b176273ae20869cd66d4821f792d8588456a61c4f3461984a0f3a5fd86bb6572c2f5cd20d0e58b32f3e17d570a305fd42b215c859d03b5bc9307dd59b5c636ff8a078364c5fa8f8d00664caed8bdf0b3ddd1bde3fcec651deefa24ddd327ffecc39fba8adbbf6be59e0a19de0593ada0984070b38ad483bdc5728e6c9535a4e2f8117d37b53c33768fe8ec765e682beb3c8981f634aeccd2efd5bd263e797d81bee7d6f954979748d350f75594cef27e35127ba36fe5e757d01f70371fea6ea495ff6d3e6b21de5d5636b39596cf0f164fdc1ecdf6687ca971db1fbae3997c09ba4b1e5b0f9c09e7d5d47d7c0c70deac3ab785503cfc3f1679c5f893a8414fb7c083ca326872836fb83fbd24c26eb647e83f2eac6d65b7c91b7d538e614cfa0f822d65dfd96c772316603f60ac590fc58233ecad4d80bf8a083fe9fbb6119b88b34b4e6e037acf037300ec26893dec91f325eb07343cc033a5fa32e5b43cfe9f8eee4146c381ee8636aec2fcab8476603d038d5036427e8ffe62934c02ffae0ba8eec93af70f285dee60ec47520771e3096015bbd4b632b109370b81f9fca3bc8b30dadfee7f67194f420e885adddafbe763afa79ff2ae14d22cdec42adffb5addbe41facc626748be38c7e522cbfc10fd957fb2cef4fd0fb64dd5258d7f3be45ad3aa34053305f6247f488fe93e51fef0d7b257ebfc6bd11ef10dee7c935d46e5fe725b7ac2776f543949bbbad1b00161f9e0bc4e54b9a3357c7ce68c8377aeabbadadf53fb77f551ffe405778345b1ff30916c161ffdfa13b651effed7d94d6fc9ca7a1af8fd744994548d6c57a9a603f1bbe3fa1a66f20f6a6ca3ae5fbe9789185660dc3eecb389844b728cfa81d985dc30cf17bfe6cc2a26572a9892f5955bf8dda3adaeb9ac89ae0992fcf5c7d9ee6aa02663e629ad27c5bbe272c4792f3cb9a8fb06dede87797e72ed5bf3de7598d7bf4adbb26cbbbc8322f40271de70232c75d2af26a988639dc4933cccd5d68397bca87447a405b14ef412ddfbfc97721d2cbec507fc77feb5e35acf73bfa63838f5fd41d9d47e04d96beabc3772b5727762ee09aa9b88151f6bfd8cf96f9809f1a65c89f25c6606d32c71a3654439eafc267bef5be2f7afe7d87f77f903d709fd167710db5ee7f793febeff86fd167c37aff53f4b90db5fef96bfafc5fec67cb7cfebbf4d9b0feff806e92f75f441dba6d6f5b9f33fee3bade2eeca5a27cfcafd36cfb1efcfbfb4bf8b5a2a3dc7cf745aa4145fbc42c831ef811d2288fbbd09352a821a5f9fd69b86bb4d3412e287513fbaddbc1788b714b022b3b13dbf4c3b8251f62dc70bce86db10e578d9fa9fdd720563f1f15b5fc4e907fbba468c9c325eb557000e858ef45bd4697e3fea61063731fc358b5fb79ee9fa1c35e4e7ac961eaa8b9a3ab02f155c8be2ec2b9d9a9d5fc8ad8f36176de6fdd6edc56af40e32f27c29fdeb5c95f8456a6d5d845534d71b537e91ff638815e94f6788fb549c6b05f9f33cd85afdf895b5d1636ed4993bf589e931cb7c5ff90369eef15d4a4933df5e6978f51ad2e1aec081c47d7e55a173136cdea68d397e633c5fb323b002ee3cb5bad46a4abd4ac54fe395a6f7cfc68c051c1df9273d0619e1ff5baeebe5a2f5ec58a9df3d65b1e273dc022d7b6aed38bac7e192bb87e4d63f88749e6bba766daff6cbd47870f233a218d64f5fb4163535fe99f4df4f894366a7b0bfc83f123b8876f2a6e01e625d0efcdb876ee48cf474217cc16f930105f5bfa6c1d61fd72451f64ecc63b45e8c3d5564588f131f2dc57ebf8dd73dc45b993567e13ca6b841e200d3281be43bfc656967fac93439c6759dc1b5ea3c3f2d0d4aff3bbb26379d8d7ed99fd4407def3189ce0ce3eeab92dad793262bd83658a58af0abf7951e413e1a7884f3903dae83e66c6f065660cf59abdfc8f68b4d9ce53f699e7ac21efadea2694b13e7d6f91d9a3d71f757a4c6fa16516e1bebfdbe6ce676c103913dd9ecb18ddf8587f9787038f7c726f088d027fc33d3c24755ebb16786dad4eaf81e7194f79de0be0708debef6992050a9fd69ff3e97d327dfc3fce4fc95d31e2974979831a56f9bc441e17dddaf95b74ff5ff336b2afe4ae7db527f4ee66a19b75a6464cee6dd2cc7bd43d94b079841ca6baad46df7109a95f72d20b8ac08b6f616fd269caebff964d670545acd818419e75a6561533981943deefb1a62f8fab396c7a8809c77d79905b1b14b1593dd33a6ebdcf574593e6a20331ba865cbee739f4b8d75e6f80f630d652abf3c5efded5b819d3f1ebcf4b3a7ecbd9e3fbdaefd577cff21fdbea567def15fbe710782b6bebaddc6a8ea95047704baa7ec0f5382ce379c43ea43612c53e19a601e19979f425fe0bc4c8aadf435e72d81b827cf55db1f6491813f3f415390af5309cae685d3ff723b4fb74bfabe30f7ffe32064dcffea8fb1e9a316e9ef4cadef99f35dae77150717f1b735935077a980bcf89cf08e759d9ab13f04ddf9ae2a2cc1fd30d73b2dfb111f6922773c0fcafa8b7e842be5c3e51f366773ee6f1b79cd964a7e297d8c6f065fe7e246365b3437297b1e5867af5dd5efdee65fec97f57d67ec7bfdb97c2fe4898717e6e5f62d0d5263b3206f4f8caedcbc7e855dcd39dbfd38fe803b12f1fef36f48cf477ba3e6f8b9f1b265fff7b6f320ab53bf77188fc5095f1e2dda8782af455247a9ba9d6fc34d378facd7703468d402f7a167ac3cec7ba159fa6ad0740bef5300f8be7ea7625dca49dbfc33d46bc2e411ee4d80799dca765de7f11733250d644427e07f6f1ab3d6309bd04f23403fc6f43dc1fa04bb8b7d567127fe1bc4de47f7f9695acb247c7643eaad7ce732c289adf69bbd9e33d37dfa65642796394fcb91b607f10324ff6b7611651474fdf7729a1a31e9ec5808f47e86c6be0989446ffcf1e0df8bfb706fc5b893b16d750039d6ae17bab23e21b25c7b81c9ced919d4c77a24c1f5c91e6a3936da44742f7f3dde02f615f0adbf849dfb5677207fa2c829c9373d0616fe15ea3ccfdbf263f59e89a2f2e7effaf2fbeff41d7f2c79377fc6c1e23bb3c7f07ffbee91d926da6e8deb4b634c2efb15f491158ab5320ebb52f6fbb01ee393d8f29f057e029c9b404bef132dfed617fe73b19fbf2e3fd984c214f9aaed720ff26e7b4bfdbc689f19f02ce6f24f2de4ea33da7f059bc03f42e28fc92e8303fd01f27c4149fc705953c28f0ffaf7d573f044a9e02d20c627e4d2d42975067f052d32dcdfeadd12eaeeb8a80d5d5160746bed0bf513e7ade0a36b56dc0bfc9e7d7684c7850b7083f451905f85d7dfa7ba0cb27bc96f30e425b94a70a9f9135c267f8ce51a7b66e9a8f44748a2da3713296aacf0af7036a463e466db95bdcde21efa43610aea9114f0dce63f093d69c9e7d2f8579fcd61c157d223c38673f77ca29bc17f95888fd6dd4383afdce7c815e4a503fda2d42882575eab96d7937fd30399f2334f02dbd59d693f9f8b27fa7fafc883ca6a603331ef445fec7937852b5b6df8b491d84bbb54ed55aa222fc3c72beccefee5ab629845c0e7ec68a7d509dfd58dd7f3c5766537d11b77b961f55bdfbf772ac60ef37d82fe6a8f0354207949f4b589fb28e24f8f702cde9c05d729dbd53d9ec0a3dc4590cb4d6cd02d19e1d0fd32837653c842f73391b6b20963ef22172b71afc7efc397ee7b85dfbaefa13fb2c7f0770d402a83f9c404fdf0f53ed3725d31fbe6b926ed1e752c5f4145d87bf5b8e3117354c2f1e578f92c0ca1ef89c8493c3de0571daeff0d6c8324bdfedd6f465d6c314736d97b4c7974a079c5fdc7c6f928682ff5dc94555fd93ecf9261b88e2a7e2d8be3bb9c61ed4cd628f5341b6567e084637fa29f0822c1c35d41056cfdcc2dea2a039ecbc67401d736778a598b8d7c0724e8ed55ff3b33787d748cb50ef6f1cf796f83da78c72e78274de3929b4593462cad3bda27b7321bf0f2ca70cdcd5f2b7e65ccda96c9af357358f84e66de395f7db01fddba17e9c2f6332844ed9732d740af6a1598446bde65fc2cb5fb31af1fe8dd39e50f7549d3fa5c39d2c67edd14f55bed774d3da183579ccc6a8ebb752df1ffa7bc0613584be6dec2c6a755678577f8d6f89ed72bde207d50f7efeaaf472e8f5c4ea1f710ed86f3deccd85def1b4e7533516f9fe427404e51df8f97aff4fb0529be8a3814f2db298cd9fd8d73da703b449e9afc92e9823b69a78476af603f267e8dd25ef47bdc618de8dbdbbda6d11fc5ef6257f8c8ec9cc83df94c48e60ef9cd275cf0e60431099729f1d882d7a4ae8e732a6d278ffc336ba6c1e947777ee6077c03dd575621be2da751d7b87e0e76d3e95b61e021f54debeed90efd7ed0ffd427bce9635eca731d5d7f0ffaaafa7b25d3e9b6da2e67e18e45e14809f1369e4eca18617f6e2bbb654fb7c81b7602e0fe6203d5b4ffdb79f4781373fb3c954fbabd390e3d611e4a7922bc479f09735eb84c71d0053fe5b7953dfd071d91d34d59a9e40b401c93bb7b8d792df9acbe65a8fbbefd89055bf989bdab3cdf6821bd5b71b723dda62a5f5f8b71283b8557b52ebcba1a1fea737d6eb43be6e959b419f7da9e58254cfede5e7d43afeac358e01348d58fed29c00df12639a11c38106bc45315622e37f7e372effdd3cf4ba0e1fb7e9ed6331f60436fc6fe59fabfc79653979d0a003f0bcb03db103970dfa2c622cc639f7e7861eadbb01dc97f1a408b498f6ff56f5f3aee5bbd989f6ba55f3ecb86c5811fd84e6e735f4e1c21e07aeba070d7bfe245e52d9f2e80fa1b67183efb1fb1ab8813297ba6d4efde3aaae8dbe1888c1a9634b7b5ccb39acadd713e682be5642c7f0ef7f90f750d9bd1b9843138ee60ff087f4861d66a736f56cfcd80d7e2afe0de0371fbbc1ffa9be0de043a0cb36e4d4d6f4e91abdc874f8a41f94cca38e8a5fc1d1685c00f118387fd87fd9378ac916766ed003db30f13e319a455c74ea835b00665bf8dae734ed521f0cf92de36d4afe7d6bdf387a160df98f8a5d69e80df970dc1ebf801f703ca8f1daf6bb27eecbd3f736e47708ef5dd3f7beff27de9ba4e2efea5834b573267338b4e3bfc877036c5988e554fdf16bb189fa3bbe8a93a34caa7e276229ff8fe3ea0bb2be2cfa54f2b235e7125b842f8a3135355742ce1b0e34a7b3a4bfdb58a61c8fabfbb8c9397c595bc6e215dfc9516897c1b47e34ef43bd58ebf9fcf3fa31a2c78dc85962bdc74bddd7f64af73983bc5d292fa1d91ffbcff2759fc6e7ff412c5ec043fb5e9e02cef91c7b2b98dfaa7ac771bad6f3ad7bef008fa8c66e8ddbdb2e1ffbcf68bfb88616cbdd7f7936f7c61c8196dae176192ec5719f63b8d7f79cf588312f93de12efd27892e17d819edfe43e1f29265a3d7f02e2c9ffeb3832f723b6c501a0f6a4c5164ade6a31689457d407acda5ae7adbbe278b5f87cf2c336d21eb1c7a9ccfecb36528c2712bb9ce63010b9322b07928dfccfe28a825d5fab2910ed4ec4a454620965e02db2d8486a3104dbfb566d1db5c5be55e7f4fbba2da579811f4a31055a3ba2e85998835af39f8c86a2cfe1a4c6acdf76837b6507ffd39cbd4ce8b5eabc6fbd42adbfe5be3ca8f3d7b21fc13aa9e3af497409fd6646bebb38628dacd093abc2b6283e721587003eabd7d13cb3bbc5fc68c0152332c229594c43fcac81e6007381ac79a9999f5bcc37ac7d867dde01772dddba7a16ed06ff6ac33a14ee5f8503318e8b305f5de37279c73cc6c535f486ddd872f61ceb4698a78ac34e7d1714d34fb247d3d0c0dec54f30f3e57ee41cd329cee20a9f4ba758df47c4ea93f5a05fca7cdafc70b196ed632bf9614b7ba57f86564678a9b77557848f9f71dec9a1ca89e99e0237203a15e1239aefde209798e68b9ca33c3b6cc7cbc354e9e7b9b59c22d052c21f00e394d077e0d9175fbb174406ade9f784af111a475d05f35466deea1a1951d1f89d3bb9c6e3d5355c4745a32f72dc394ec10faefafcc83db9ef7cc02ecf72dbd2aff25e0c8e80853a1ad0de0f801fbe0bd6c36ea4397bc4a71ceeb75e50e0be0cb3d89a8b73e8c11e8e8ec95ceac74e650af9bcaad5e618e0544fe2bf95ea2bf1cca43ba7d6d545f4ce33f9a68c7b0c5c381f45efaae49cc02bd4d82bdcb3a9b1bff0b394c7ce3ec6ab2cacc54f9d97d8722ecad8bf5fff50c9dd2ffd8cb457c34e18bb8a2dbd56f35164702d27f163f44a646d4965eb99e5f3837cacf96c310f713aae7208a9bfaee0be7909d77f7f7fdb0d8e11c8dc57e6a7bf7c80dcaee7e67cbcdb6c2efa7cc7e7a25773e9d6e5b5c5f21aedcbc708f3156787e42e7e0fb8dd5695cf48748106debb53cebabe9f0aad0af14093d2455d568c9146857342baaf9f0da3db2f74b3c65e3490573a376a7b7f93f67764ff60f3a9ed3bbf1fe21851e3f3e4ceb2fbc1e53dc308827e031c7fb2f0bd4546b1e6008b906183824e8ef9b3b5cf03cfa63ac224f5b573cff726fba8243cb57bf3bd55e1e7d969ebad74d097f30a7367969bddd8ea9f426df1f77bdedf330c79617c19b3a6fedb6e98c7a5ef4e8ae090bd85da0af1c5ac67cfed45cc20f28c2660ff003612f6590b8a30dfece725c54baaf844be25b6cde8984c34a2f3bc56bd7a2c629b41aeb209bed5c667cc5368f57b4ba253121efd38528c1f768eb4176a7791c563905fb5380ed169630bf44cf041bced0687c0323bfe3aaa3fd35d955b373e04dee4b1027f483d2ec4fdbdfbe0f24e7b7e4c7aec77766dee2b36767deeddc85a55585eeff47b9ae3c3e46f943be7b017642b32e7f763c272f2272388d957df09f944419e65a1b5fc611b319cc784f7c2a27eeca6bd1ef3b55be19ef68d31e20ed10702cd298531f867ad7ba4e25fc1f7b467c77acf74d2cf2807ecd51f88eb925d82f5f231cb615e47a1d77a11b8f73d39b7485b94d8f3b83a3b9fd18670be8dcf015e6c6c6ca97d598b5fd2f3dab49fd723f0561df049b0751bf1c3ef4da0c78cb03ffc3987d1ca61c1695c19b3dacb5c7fc39e5b8303a7b15d6dfe6336766dfe0aae18fb9eda0145c5f7bbd73877ded9bc95fbcbbe7f6dbdc73d7e6e02ad3fdffb6fdf998a06dbf6ebf99d69e7cfc0bb66b9d981be86eb21fd37d0da1ffcfb03ed15b2519ee39ff3e7194f1c11feab62c0227e2dc6422adc4d78fe93f69ea8f219abfc56d4bff2e5f1a3d739d1cf0b09bb5db1b9a87f5cd4c7a96c415aa63a2ef45ac2be05af49dc9b205eb031fc2bf29c2c3aec9390d6e3e37991df6f2e41f992f8bdac13f6169f3ee0409da4f7bfed06fba9117dfabdfd61bac6bda7366e6e1ba938279a539f7642f7ce6b1f641b0fe303dbf1ea1cbe327fd052b2d36a3806b2aedf97fe9d512cfa9de0efc2fd2f033742b929ccefcf52b6693c6da147b903f502525f29c4054cc3f124f3dd958efdc4b2470c7ad23289b4fe19f0ccf3e06a1b6936cba38b8dcf1601f46e0b0a7fcdf63dabf087714ef07f8825f5aaf832c66026595042fe3179e622f631a2bf279f117ded118f27d78fb5ac530136ecf8cc706fafa1b54cb6aefe882df3e26b9be4cf77d0f76ea1657e06741ebed63f47d63d8b2de7c47a67f17e0cb4971a5d179b3b914769c07153c97b093f31f75bd7c1debeb437690b9d886b6a398f0ef442e3bda48056bbe956db2451cf2903e55c09dd87dafc10d03d8eac7e01fe5b8af50efd347a02be35ce19efa8b5d0c5bbb7b59c14e3c7957fa1014f0c6b3bc47bdaf20c8de75e605ceb9e45bdb9c82708ef28424d7ff07b4e7dd1acce2e2af593ef6590af28f10e7e3f58efb734f369ec3fe84d8ac0c0d83fe671b17af95bd3b88cf7f0b9001fcc575944f94f85c1cbcf8df58d3c9273b7473f9389b6488157965fbe97db24d84744a035a21f640d3e19fe79ba0f5c9f63b5f8eebd03bd0f6a793230c657784595dd2cd60fabb576f41d5fe308729b260dc72b57c45bf822679caca996fbcdefcff35c65c9172df36de98e70190d38a284ff1ac33db1d311d754e4a9153f21bc8fe306553631e12dbdade574b696c3f8836e5b691a95c35de03a1741be6701d71dfa37f07d1ee63f84bfa579f9e01b74f6d5f7bcdf9c10ab3962ef9857397e42b1d3a5f1a4da55f705f38dadb8f4bde1913d175ac0d72fc41678db0d434f5ee7690b7df9fbb96ddd8ba847ee9e53f23e7c9679d96ea0cf17eb9923d7ef518cdacaee247c4c882f59938cf519daba5da2eff0baf280da01c2bd011d1f7109cf7d794cd057843e4e682f56760fd5d546472273a43daaf438a51f14da8b6cff19aff841fdce27c1af85fe03cfae7dc7e514e6113ea7236b9545bd5519f6f649ac990ff0e35977817e303769eb2e524a1b3cc7a29ea3f8f36a8fe363e0ad8e443ed0382960c9e35e0e53e8bba73997d880f815e0cb576be131159eb3fbb61bdc8375a75bf927c4ba8cc13d78df547e8a06ac3aaa7f13be70445d57e2894d75ca829dd58cd7f6c598dd48734ab721fe52cdb39e7bfdc5984df15a659ebf3d26cc73d3902f22f810ae1fa680adb9173102b96c401a10e558defa3b61eccadf22ce93e5810abc4ac4236ef9fc4cfd2d42efc5264c60cbc9416e51fc6279ce35df4cfd5de2781bfd4aeed954f0953460e48afb44efa174064dbf11e8046d4d11f34ef82dc66436552cb08e2b30f817d34fde76a29ea18c5bdd2d56fb58d5e6297765ba266356fbf2c1f2e847af156faac505872f6fbb61532e1b9d0fe4b3618d9b984747dfc1fdc4a39fca9d80dc2325de38d4fffd77ed9bdf05eb1c723fb240cb548e6457a831536a6f98fd47ed459eef1e8ef7e7e8e0e0fd2bc9fdcdcebe87f314d6c39f57e464628fcd6ee041cff5d0ab6225557f35cb7c2cc1ce00dc02bc230f966b4dfd453c1ec67b4f119ba2136c9cf3d65b418e05c341c7fc6fe15eefb07facd21fb58e712cee6f0d7798d54d6797adb764f8203bb86bb487289f5b4b7d1fd4588af45de50e8afde85e9467681e21cb975575e2fbd547df3cf86a541f4468f553f0edbfa23f8de8eae827bc113de925366a756f6978c826517758127912691b6657c0f8b3c3e21aba1be8c311bad92310e6c3f1405d5d5f7b8b6594f7cf5b6fa1e2be70bd7ac3c758de67b9790a8d94bf67bad6a1266b6ae9d9c778c9fa709f42cddc535c7bd4772cf3f1e1ea9f5b3256deef46da5d9f19b49ecb725e02774ee4f6233686d760476cf2acf354efc6f709fbc4ce9d8ed5cb2ebe9696a1a65f636f71fa580ff3b0477d32b973d9bacec5d71c35a79ff6a05d747c6fd221b6636c2554dfe43d7313b927c4f01196c35eb01e1e7d2fc8ec31d97787f54edb056e003d36e17c2d7a2f7768ff45b99e86ac5703ed3524f4548333127aa136e6a2fabd3db9031d162b77bb556c93e107c0fd5b37e84699ea6ba1f6dc9edfaf663f17d5f945be2de88f8c06d0d75ff271a1e68bec4ba5c7f76fb675cfe2dc3949b602aefff363ad031d6caab18fc2fcff6477afca09e0f9619d957bcfa28e79095eefe987dbefc6b5fc804516bf129d7f310cf3d59ceac562fe1699d305cecdb825a1a6ef434dcfd4bdafeba44c2eefd57ec6e0c7a9c65fa8f955d7d05a99d06372d4c1b15b73c3e47b1c6af7fd0a7bf256bd0077839b729ff9f8dc3fbafe1e9e4954b6d515b29aaf3bb139ffa476878c5504d823b4afc9130c167ade6960c9bf6fc65a17e7bad06779ff12ac934368997ad8733ae0d71aef0f3343ee6babf6b269393fa9d771f50ec471abce35ce6cab5b44bd45165079c2fcead0db6e0c3de881e61bec966b90fb27c22ba006b0374f88ac62fdaca4f9119a3362e0a79312e810fe6e9edf6a087299e5e4125dd695f018fbd3b57e0df30df90eefc578d1097b83da5ea9f8821ffc772bf27ff2fc35cce16fe98cc0afe9768bd8480e8145ce45cc63eda871666a8faec85d7e283eaafe0cdf2be62908f296ddeb2ab78b9dff3bfad933f12e0562bee7bbd0637dcdfd6747f9f7fb0bd1a5aafecd958f5795d5ae26f041d6074de08dc29d8fd57d863aea43bd5666ebea452cf4c7c7e764ac5ad42ba0ef35e71bfc39a723e9415486a877bceaabb369c9eb23b475e0bd6f781fb9a925f6dbaef52a04be8d3d8f41ef916a739bf9730abf413e766be9ad2deac0e8abfe7064da8b7aab343a907bc075df79a8f56f62de29cdf9c7df0bbdc5e97ee5d073147948e26be62984d8ff0970d3a2de30f3b52cdfba0ed16f1e4457e767bdbb515d81c8ba65b2f5560dfd6a83cb54969be43d757c44cad7a6464ce719a9f2167e27d79b608ff02df4e403dd8bc97c58cbd6322fe0bb3e80ae75d87a8b0ec52be07a8adf9b64b06f7944f5ef61111e161ddfd53f0347c497faa267308f2d3ce97d2fe474635f3a8c43609c027a947e634f82cb64f45a93133519953bf55e1f6acc63d449dcae540fcc7428e8e56e5bf6d5075d2f26f21c6d0ad461cf74bf5372ee84ef4d7acb24d64ce697fa3b709d9b6d651d220be9ef8a7047715bad57de5f9b9c01f85f982f4b33cfc17ab8df7a7e1278ab4f292f5be1b74cee89fc5ef64988fc9af6c497fb4c55f929e42c5e613ed0a32eb6fa609bb15e8c5ba851203a5e96d2982dd713ab5e74fb13e32555fcca61fdc394bcb50cee6e982fb20deb6328d93ccccfcefbab2bf832d96383eb57c7659f3fcde393f2a2f179657ce6d7cc6abd0244ff68f39c9b3069c4f1941e2f4deba0fe79e01fb53809ae61eb2dd6782f6a587202162db5c1d7bc46a5ba4be619e453b863b614d669030f1ccfc91dc55ebd567a8dddf828c5078ca1b6752bbe49eb93381d36f528a0f6fd35dc55b4cbdeff9dfaa1e6f351cf9f7fded08360a1f35cb887d22b438ccfe2b916fc3c3f25fde141ec98a5ab17a18bfaddbbd5bf46629e1cf02d7edeeb2a6e26eadfb45689eb4e2c361cc9e3b4d15043ad2cdfaf2a36caf3527d6fc163fb8e9675b6afd95ec96d6f7c666a65fbefde2341e7827ecabce6c62476753a098cb4080cf59ec56897a19d607c6c6af33a04a8efc0bc96878c8df3cd7b27d6afd4df05eb537a0cb6fabd041ed0f84cf934bf57d46bc95e8f42ad7b03d9f08abee07a2eb1b9277a5efddd3c26fd3b3c8ed9d4846fd87c6c8e7159f52053f443b52e41f1fd7e7bcdeab80a1d987be8a96cf5afa1da9bc55ded1dabbf843e2c16c4ed9ed75c4867decd22c0c3c3df8935c3bfd7a387e518414f4c984bad160773b3a08f33ac036dea4743cf67715f446cd06ef81bf355ea27ab5870ad8652a8a7f8f6bd11f377006306fc010aad9c09fdaab9c9a1dbefaaf941f5fe39727e508bbfa18e89ead47a9d37f174117f40b629953a99ca473fa0b8785ce76ea8f1ff0fe74829b17fb05d95e79bfd3568a385bde153bb4792694e951b223ea3d605a973e0ef177ade4afda0141944deb97575cd77ef05cd77c43a26d906aff9f9143f40a5c3b6e4b7cc8c3a5e32f53f7ec6dea2136a1d31c69d602d0fe8e63bc8a15a77a1ce848c4f6cb8e810834f3d06fd9ce6c408e714d2bcc8e67c181df26a18263ee6d04490d3e3139b20371f9372f0a3c57f4afbe1573e1365af881e5dc6af428c687fbf86bd81baa7accf732d4ea73cc7f440bcbb52dd31e7079f1f8a4c8c5dbdf1aef3cf1bea4ffcde9ed713483acd7f887629ad15b1297c2fc70c589e34f09649935f4af0f54d7ace85f2aec69e267e4fd55dc4dc185107e59f37cb6762f78df7c7065970957cdca24e7258406c50d203b007f4d5cf8fdfdb7b312749d12d553c95dff44ba34daf399dd56192455aba0e5c1ff273555cfc28771e5b739205507bbe69cbc52274daa4f791df5cb6eef238157d500d35fd6afc96ec5103d6d243c25aa2b4e97b93ce1273a88f6afd21caaefe6ebb13e576b38f63ebae26e1be7890b3fa733dfc43ad1d64cfb17c7cf485a9710b9a378ef94a47387388c5c465538f0dccfd5c5d97ee6a5ff76fc8cfbcbb7de1995a3f13889f4d911e0af2dc7c744ab6ebc14fdb226bd2ab7a74f8fcf477d37cf85e00ad92b5e16f5d2dabf7533244590bfb76c15a10bd68eb07661bc39eef4d2e53232634f357a4f52fd80fdc045fbf6da56998af4e81881b500e7b5b6f75042c3acbbcd8afd9ab6d999d783c29fc83d3917cd8f2bb20376febeadda0d613a6a57f57e5b785bd9e9451322d87304f9adf4ee899f922f7b6d5451b3cdf2411f58bd4cf46bca71ba6e3b4d9494d675204afd9057ac867e722303b129e4ddb9904502bcb3108d2260c02e13f72bfb20fc8d3c3fa4d36377bbc207b7f023fe49ad70cecebef053b19e874761876232d39b6bc0bf11fde8f106f9371ebc46780a67e501aacefa9523b2eacbfd19fa1ac55d223222dbdc6ee7d6f5b930c6c9bb6f521bf3a10fdb17d6df42ef426d7d8039df6107d36d01ff5fd841d731f181403067fdb46cf5fad2b61bc84ed3fdee3a63d12f16b9e7dd6d83b89c70263ab3f0cac65d1448790df68a4a8db6bdcfffc6b8b38f54827024ff2b426ffb37027cd7e27ec74af81b12263f4d9186eb75f784a7db530d75f018dd1783d7c7e62f60bb0399ffc86f33fe99dc8af5aeedc2fbc6f707e474f6b3947657f1b640cfab7bc49e97bfb63a84dfe12ede3d6be6042ec56ca0fe2ef95e5526d5c853fb66163313e21e6097f94c30bf3b9b8ddcec9b69c7da03934cfb7c2c292f96b5ca20d773a84587f7998198343e0ae0ee46fafb1cf587b3c23e84d7e4bbe05884d73880e0d710cf139b9f708d14bc4786118f4264fe5223bc727bd635acf48ce75884bf58cdaefebcb1319c76bcd21c72ceaaeae1b5af7c8f4475feb9faa9caf44ed8306bae62c0f8a70bccaa25d2ac7f089fdf2acd7a3618ab2acd20fd53318778a591e5ca3bd9312bd4e8a37125a6fba073c2f6273d97a8ba5ef4d689d756bcfb8da1e48fea706d9f2e45ea04c5bb39a3fd1866e3b9b0ecbc579606eb4d9b1adc571ebdef7c4de845e89ebe125ec2d79dd6a600c7bb3de30450c5485eec6f4f3f1621376590e899e87bd89e9bb44b688b81f0dfa3cce91db4fc8cfaaf94c8dfd05c74c9beecb8dee37cd4f57792b8d67493ca6ca058c2da70c5d67bfc55c283ad6ea013d1ad6a077b0f5ef3ed64362075da3ddf0b475f56c86395e67df3d67f678d185189db6e17b06f91e565006dee20831c5c342bd13fc7d88150ee77721f26be59a9f5be337691c7b8ec1fb36b993535ae2f5c55355c713eddb96f828f06be61f688a45b3efd0d679a871ff16ec3de06734a797e71061ff0b1887e222414dceafc86039c14def474c5d9c27f649f8de9a303f57b1c794eff517610e340f187c9c307f86ef0abdbd79cf3a5d6f3a23c841008c3958df4dc57397ef68fb9ea19dd398238535fb383efefd0c6b166419d6647379c8f1caa3936dc4bcfe6152de9249af5e9f809fb7f58087311aea09e0f3b69a0090c5ed3dd6e1b7153e4259fd3b76f543949bbbad1be8302f8de6d91f781e71feb18e159929d9aebfb6ef76a52b92bf59bdf4b8eaaf4abf6bcf5700db95ee6bf7fc6bfbde20a7f97916619075043cf626d9b2d05d2d88e15cb373eea9b24194c3ca19630e80be977c14bf8df3dbd40fa4097f9a624b105932ea24f6da24f45ac3e8e3faedf8dc6fc2650df27b1ad7719ea91ddc88dd97897dd86679378d7e9b6f82fc643e81e73cb2450ee3ba7405cbefdc6fd1617e4fbfc0bd3d4479bf8b3e39982ffd77d26803515cdfdabeb95a5c863de7e6b5e826b57574cff81eb4fd43ef7b3d6e9fbc97d99bd29ed778e133de25e63648b1cb27f9d07897d03ea6b978cc1f426516a11db4a19ebe1bf767cf72f57dad7ffb58a715ff55d6c27b5f5579d3449670ffadf82c1dbba1568cc69c1af0871b7edf5617c6deddf6bd7857f1fc0e1ceb89cbe086f7497da8a4be17522e2aeebdd4374bc6596e787fbdd68cbda301a3b0e1f7209b967519c4f6b3e5fb517dde0c238b9e37d3078a86fdd885bdf45da84da9cdbd55be35bd57884d214ed0509fb6e5d7d7e772dcbaab6c05b6ede2cf30abb078593d3a8d51b53ed7306627f052c237b3774d177a00d01e6d745eb1e5bc10f9126cfa17a1a753c319c5c7c0754e1bcdb940af0f2f28e2f19ef583a3f1a9c667ea63e5dd2bc6bd26a718f74bacc311bf6bac67c1d889dacfa11b8507940142feda6542fdb4e26701cd5f05dbf975a2af8126f5903d3333aa3cbaf9fa06764ea40597c9d83f09f84da5f45c7913deb1149feb8acf2d76e273d149c2833210ffc46bb7c96e51debf55f189614bce1e601f3e687e20933bd7e96e9845dabd080fcb33efdd43ecc7b2db0dc91d739767c207a372f0d70c73025157b29cdcf79c533c9e635e2195a9419e75949a5fa5267d7585bed9348f55c00d452c7fb50edc5a15514e74c07a9d32e0ff6b69063ed91d1d8fd86aeb611195c3fdd69b907b4cecbf7dd88b2fb16696c1789e4cad7ec9fc4d1493107b4d61fe661a1ef649606525bbe3983f8cf5a0d87bbdeafff9b61b3c58dd31d4bf718cc7e135dc0df32dd5b37c2d2b7d0d30816a6b88c64e0772dac6ab63847dc73e438d6198659fb6b528a27c710abc39c84f56a7abfcae13f6064960f57be18ee863f43d38df4394675fee5f08bd971cc02ef0dd17ccf7dbe16fd1de86e70b5fa3f553afabe1aa84bd46dc1277994cd95cdf0bfaaee135ccef3addb74764999fc0af73f333b6fae5db6e709f7d465d8156585f2d2d5857cf93fdf77bab6bb4bb25a165968106790cff675b5dc8af8d7ac3d4d736894ff442cd21f3be507cb5e3fb4e3766bbe165a6bdc2fef99a49e4e8c3b6fa5ae04d4ebe3740cc494bc63e7edb499812b44ef027c5b85c74a2dc2467c5314068efe7c75b39fcc31e27f79931d409aff818d9277bbc2f893e4e6c968f72f8029fbfbf9eec31b9ef09c39648e3bc5f04af7c5e0aae17f4da2a194ebc6de9d7c0da24612fc8a2fc9e4606f402d5e9ba72c41f92d7c4703a63a2cfe6fd6ea02574efb06e0efcaa9b5541f860a441edd624cc17a7d85d65ef96b923f644131dadbcf4331c3b80898777f89efab973825a7ff705f24dfd9e736279e8f01e966f4debeac25e9a4525da756c0cac2318a6a1155fa33ceb6cad2ecda7ed5fe3f1fc875ccb2cd035f4af9b5cc31ed9a77e4eb1173a51ee6498f301180145e89aa76fdc8bc7d6caf2d8603485fc04c674b3d2b6f494c84bdfbd25cb7df0aedce56b94afd83878bec6b01b8de334cac9dc281f32d2d7e5267e87fab4f19ed223cb0701dc60ac476fe3a9e355e9bbfa63ebd19c0dd83fa48fc8ead3cf69cdb0588bbc27f213735cdf7683ee9cd749037605ff0e713684dfed606d67b2c660476809f5a4faf84e1a6914cb4dc07b11d691f9de026942f3135fc8b9455ae53ae2491edbb128bebb929751fbfe88b4764bb6ebe6bcb8aac707afd7865c233946bf3afade92c8bd4ee04dce900f269fc111e4a6b6ca94d827abd9ce02e325b15fa1a680d191f01df828c9fea4b17bef103a10ce3f09b8fe4bc6d0afe1ae2bfe968f07bcb03aef0c6a12dc6e1658590a38526b98f385ce97f32e5a63f3607990145fa68dff09b8bf649eacee0c7f8763400d5aebfd146b70b0569ad6f9111e8f798784bf5e222db846b9da8b0b693dc8fb65b84e61ed336328f4636c3ce7eafb4f967783fd2785f724fe7a78d8a2dca36759f5b19bed864ea43979ecde180ecbd177f503954fa7b017a97ac305f4176d41f4d48a9fd13a51c434fdf9976d398f90c857a34befd12699eefaf00c8d7b65f16b7609f29f4df93693300faeb2ff41f1c71f385ee071a24da03620b6d27ceb4d1e2c378cc514316f64d1f6be87fcbe1be01654f87a7caf219e52e1d72407ff00b4d1d95a41111d161dac7b9cfc25d5abe4c219bff2795a30cfaaa6acca9fe2efa57d17c43c4f8a991c18e91fbf88be2ee9ab22be06e438a11f64dff64e9de8d89db0b7d223b2ae8373516bfdab9cdb2a56e6bb5dd1d7a5f80d1a7253590f399ae32ae6beb2f166b98c8916f07c22b936511e0373cf61ce58537c61b9ec6d31b9e63b3448c39d5e445d1a333212b9ee6857c56989fecedf27cda5d2e7153bb6d2d747e2f3ddf4c3cace3ef6b995b119e8e7bfc6125e0a97eb4b77f517e489b258ec6e70a3bed2d66718be52e80dd3d8784962a84bbcefc96701afb5a4f977b98dbdb3dd73b644ddaf08f3d8087b89888952e9389dc9f5c390b1517cf97789888902d8d9026ec9c7bbfceff871043f718569ce315a8e6f985fc7309f8f53a7e19ca87ea4e00172ffe17b6f22636649be0bd0bf0a39f7113e53ecffea1df5feeaac86fcf9b8e25c97181baffc993c27b03dce2fe6f3865abff355fda298cb55fb6df75c78f5fea3bf99a335c4b13ab87e967713c879bc627f283a6f9ad399cbf86ab8678b617498a41f6b9ebf2a61e5b13cb3df38c3cf8ff5cbbee979f52c95deee82ddadf6aee16353fec3ce2369eacb538b3f201e66ffc27df4583f71913f97730fe4f5e89f123d4bf9ad55ee6c08b55e4a8ea6d93f41feb2d9afe762505cd950ebdea85fa99a4ff7fcab962b82cf131ef41ab87119b814a75ceba24ff5759505bd4916ac2bdc89b6f76d84f5e1efff618e05faf4f7743e0c63aba0bd79c4b93e8db148b44aefec2c37f701e08cf2f93eedb7f134070c79f335c45e90726caf297f473cb7d63e6c2f42ac60c8fc5bb7d84ae5fa611627837aae89becc03f85ec48a45de81754e2b18235175a834b0569bb0833622d3a3a4bb42ef51e00d3bdbf12284dccd9638239ba7abad623517b85e47037c531cb7da3ffe6e6abb76cf7b39de23f4dbd19ccedad5f3b0847c90938c2d90117dffe56d372cc41c4d9c27e08c57b8152cff5dc17af1b5340df3386bd9bf4fa879d79c57588741e760e959ccf6b4de4f87ebc9a093c8f32f941ec8b83f1867e0bf83ba4ca54f814d6cab7c957dd49ea57b20c4f6847382713ce78cbfc5d89c5077354814fac19c5c637809bc98aeb9c2afa07d58009b80611a51dfc335a03e51cc955b54780d543f9be5933c2a5395f7ffe0f7966397493e58b1f69c7f5ee1d10505b19794ba396deb2d8ad8e0b65a165831d86cefdc36bf311a69ea2dc4e42bfc5eaa9952e435e61f657b051ba2f9ced1f7896305a88f191f9b494e64bd9a372df28e2a1769710cc01606ec36668b430e168eb74cfcc33ef1f3e021f3897e1959691aee2bfd5cccd357f860c9f2f3f1ef1b3dd72ff21ba84c63f9ac941642328657afa990789bdbed8bb9762a86c8353cac8a50da9746d97d8d0e436227d3fa59ca534c18bba8ef29fa5ea2dea208243f96f3b0ad577666890f781878cf047c2de41f80b51e5f56f4ce2d119f59e2c138befe4a79e13036d2bace89fa85c433519673bd4ccc41f98bd74fec889c42dd44389bbfa6e5a989b6e16ce6ac0f9fb708b759636f6bfe5c731d25cd25f4e697a8373c6ddd4536b58e275bc1d1b08de15fb3750d83a37e96f5fcabcaf6c7b353ebf3b8ec50793fe793a363b215fbafaff75f612b2be734ffe21ce55a2ce5fe3c84fbf380fc5f4a1f4a3ef9a3764e96f988b4ec10ee296fed981da24fcccbafe71f00dec26ac1eccd10e3a38a3e507b86f17cf43b2bf91094365be59952e7558439e0d7955c6786da4cf659bb0f20706f6db55b5968e845d401fff271ba065c7c9a1f93a6119987d8ef72adf687441d37a27d8b66efaf2afe51032f6fbc737ff33b57923b97812d10784a5e77a9ea851c8fe933c45873b51fddf3df0df65d81fb4bf68ffbe28ef4f7d2fd0a5df345d05b16beb73a824e6fa4a84383fcbe25db0d8c71a9c9a006cc367cb7cef4929f5c1f475d40d20731bf6671dcba41277057e1d65dc54f7ae5c97a47fdceb7e85ac2f919a7642ee78c729a75b56cefadebf5c31286c078d26de9415ef930c5decc95ce7365315fe6730d5cc03501fcdc780c786dbc3701ca1116f3051ffc2164711c232d66f9e6c2f817e8c9ef2f5cd66cd783bf091f55711cc5f70256ac6bbe6cdd6e1ad6713d57aa6e4efdacf49c96f5da41a6f71c10bf55f53706ae7e8f5da71bacd34b2bc627d7df5f44fbba5ed3693974ac3ab67fe43959ec6e54ec38f11d343696b4bd83d9fa6df90bbf3b7f29672ed6d202fce5e62b97b5f6e8a556b346ed0042bfe807e56b5673f0d89e64fb8d9616c101cea691477b9a730adee727e11cd5b1189db0b16ab9f3748c4bd8733a81d6cfa283dcbb58cd31fcca869fe5d90375eaa4c09c6cd409b696f980dfd7f3e9c59c754e6fb2ad2cfb92a4bd79efb07ea7b5b5c59a5986bbe4b0b29c0ebb2781d5effaf93d13fdba111d0b7daf18b3f40da8a1449da7d40bc020314ec9441b90fb67f86e76c2b84b358e2ffa728de13e76379053e2f7b24fa2c7dac6d089b44de20b3e2d7e67599f237700788c1f6bc8df785d6ee2c76ca7d68a0e7751eea4db07ed49e3a5456c60be079957ec55f8fe6a5f7f91c7a97a2a91733236597a2532b58abba19d17ba34ae44b1b510b752cfc8fe92f5869693c679432e84ac9b9cb7aefebaf5280e1cb9fba381dcf346c2360fae5b77f5679c3b656899b7277a5647d0b33aed76cab2c5effa52f90721077bd560ebe9b46ff5cb85c50d5756760e5cfd41f13e6b35f6024feda11d34d9cd0e515d2700bf1f195f3fca723dbbaca0ce95f6eb5164bbbc97b7242e6fc9d6a8eb87788e71c6f39f34ec7308bd8b2ca7f4b1ef01e21abb2f552d9931dcf91ee09242ec3d1ecf01c32304fb3bd3b6de8acabb3eedd98018bc14c74d8c27a5be96668119633f46cbd96ff87b95dc6e9abb1c782b0fe308ab2c308759942fb2f050b3a9da9eabf91e29364cfb3ccc73bbdd29e00740bf65b7e99dabb0d21db3667c950a03e195fb7b04dd0ee74c75ae91822793c399edc2dee451e9a93aacc3cffbe5d6ea5f837affcd5be04d20a70bef87d2c75533a1d713e8e8c23dacd7396c843a874df2a731bcc0faadc9353aa8776cd372c7aab9e25da8d6e376fbc5c269b43fabf7ec88ee4f7429d00b003748fa4e880f0256b061321de0e87bf363f53ebb0923f33bb6288dbf01fe841003afd6d58ce930c9ed51bbbc424c9ceca2e8aafd861841e5f7b326b9e8ef93f7b9b271fcdc67ba3ec51a762e8cff93bb5fed09b1c9008bb11b5a2bece9ef0639f406c09c0dcc27a2751eaaaeb105bc9a44f017c3f9709f66bbefe0fbfbceec60aa47c97ecd75155b6ba0216ec3805eb2a9fb6bf13fc223210f0a6c5bf0f3e4f76e4078ab8bbe34b1c6d67727d73877a4b3ac78e9e06fb4efe0bcaeb6457d0523f9ecabfb77fafb4b7ceaf1220dbd21f30d09720072fe1ebedbbd01265865d748775f98db5518ab864525f284261c862a77f47e0d73e6e79d27be477dc114f35e38bf361e24da5ddfe6abd25a46752c1df53bd61792e84ed161023e7e4ad3d087d607db8ce836505fc3edaf1030b86f899f9b0fb82b14ef4c947daa0f30d2fa65fc1ad4f234d8e753ebf5645b761d53c71b7ec64c1634cac854a8cda3bf397cf99b9dfa9bc0ca72ac37336f7e6f097da3236bd111ed07e459ab22207c8ee8d9a3416b5fb3485b649847101d114b252966c67047fd2705cf7b10ea5d612fa0d798f3087731e0a810bd9162dd9e7dcda4fdfcba37df9b1491d6bf44cf7dbd95cd4ed657cbc7e7bd1820df3b009b83d07e908588a98bf323bc28d759ee36f3a77f8656ff21f5381063fe66bf58ec5076d2bf7f56b11021de0fdfc9fe20cec388eccb3a17dc97f411f6269d55fe22d9740dbee5a3a7edb50acb49f65f87bdc96d0b78d2d4870d3a1ac5061eafae91d165eb47de68aafa1a8b11543cf7498ca027e8de3dcc7dc0f7bf37eae091ac1f28ef627909f218103be8f15ac62a6e4a7de4f34bec329f40ca7cff72dc4af5a756f89454ae433fde474c7d4c1be8c72feb45caba5f8475bf3cf1edbec8bedde10eb16e171d7a9eef5baf005fcbbb6b76b6867ef6bde428d2c79b10339db5fc7edadcf794f51e97fa027e8c8e899fdb978fd12bb17789ddd1b38d9fc97cc77379f4b71d7cfe325f0ffeb6adc96e9627c9ac1c94ec4e89361df70b9a80c927c42ea0de681f435c40f2bf90359eec3ae626bfcbe25e107b79c66b21194e50859946785483fdb0ac7233551f13e199558e65ad8e92c548988ffb612b3a1f3c7f6a8a4340cd96c675faf27762b8f39d4e6316359fdcbe797f1721a593b8a2b91acf6778d9be4a638406e27270b50d29770c6b2f463f05bf32a3d123a371a439eaa39c19aa5daffade2bbf810b78e0dd34b612f0834c2bda3ad6ee8ff1cdf1c79334b0b26ed45d74026f58bb4f5bf7a55aebc84e6665459fe2bd22f637de03a2b3d5f8b88867f8f47d646fa3dcdc6f3de7b1e9adb208cfed645bdd22dc577b31adc54293543887cfad37f9ac63d9a10d1959fd47d5939fd3d5cb5b75e72f1f64ffa01f02d01ad9cb64b6e6fb8cf3465f3adcede97af0977456868c8df1f17e24ba81e8834fa6bbe19e9f8b9389febb6619ed0daf029e6a339eb778a698d353df6fe3c875b569392c7d7755c4dee23db69c1be5dde72a9f65aef8692176c4efd05ce0aff6e8d6b747f3e4cfe631817ede76835b838fa7b3b59c8e0f32c326fb823a7a369c109a7a62b39067ebf7bed2c5185fe9131b1cfdab2c5fe67413c7417dedb56663325a0479f5a456b9c201967f0ff282e8949653ce0ee27ecfab75e68b6b54a6740f14de0818f4a0cb67d14ed709edf0391947766f1ee49e121b22b65e0bd116aec5ebabdc1d2a1368cf4363cf7d731ba1fe84d67e2b3da7141940f7e56bec669dfaaaea3589fe7fb326710cf924d8ef6034bf0963627f87b61a4039d7f7496d44ff12f556a50f7e5e5e0345fbddcdffb0c7a7e463f47ab2c77b626fbecc77b7e4e3dd4efe3ff6deaccb511c5b1bfe417df1da389c95beb40983c143a427a63b0351601b6c677ac4bffe5bda5b12928088c8aaea3edf39ab2f7a75651884c6ad3d3ecf9fcbc12ddacab567e887a4fab76968a196ed57ac5e4ce1f6477bd2ce62ccad63355a37e6f39d40cdd49ed69b61bd839abf0c79195c5e406d10e6c1b85dca2f30bbfbee0cfde3a8130f3780333083fdb174bb5847b6c6fab1928b50a8811b3a2fbef668537d1aeb585c9be8d058db02f529b376681a2d8c11d09802ef2bf4fb85d8ca022f6f59c7e73e0e61c73ec5667aa1b52ca4cf648ca6efce5a61c76a5cbbb937b887c09132482db3dd0e478b53643e9027ca0bb2b28eb17ffcb123f6dc02f8ed22d3b8063aac1fd85b51ee3c195f08ce37729110db99d52249b931a305c639bd013d3b78a61b6b7870cc5c76849a4fdba3f59bb45e93e1120750bbda7fd23bf927d31bd6c3bdd0667c0c3c5be813e5dc23363dee8994f146479d380bbce6faa00dd42eb6a11617c6e21ad7d22f86d899427c03e3c0795600ae26e4063d52f2dfb887e19e65b201ce7480be317eafe37e9c01d76cac65cf60553d1b6aad31936f42bdd721443b75b7e92046e41863df27cbc4ba8218f4015b7ce6e6bbddd6c615be4dfa4bf36fe9fe23b2a8595e2c0760abd23a24b14eea46be1b28f569d1f39c04cbee6122e5e8a529d1bbc6de5988270e2966517260710abbd883af82e29a1eed0ef577e8d189dd09ac860fb03ad5b32b703f836c1dd9644f9c185728cf575c0af55a74cf88b5818b915320aef4cb37eb757d176bb083f2b7ba9ac2ab65b69f726de1a2dabe6b3cb1bebba9068ed635629ea5c0cbfa02ba02afd7c35a365eabb7c8b333b9bb95fcc8caef63945967cbdcd7732f0879137f2ea5bd20b64bf1e1161962a56557a8cf55f731ceb77cb6d81aba73d2ff4168de4bff62f91bfa62d9d9c2d8141f8b50bb49da780bb5978bf86ee9afb4a53a3bf2dbc66d5f02777122ed84a33df439ac9e3b902f11ab79738d3dd18b1bea4c77befb38fbb9b1dbe0bdcc78ea04ceb101f0befc7edd23609da3cf06f7731e76ec8bb2c6629d21af492d6b355f6ad759f89dd775802c12be0379915aa605ee4bf5ec6c5f12c79b6544de316e61cce981bd4b6bc4591e2fafeb2576c48ec881f25e5c3c2df44d319d4b1cdb2bca5187736e0af575ac2e8ef2157dc443caf858174f1bfcb3fc59ac5144ae32f55b1297d5e460b72b3e0601b71eed195a6707f68c523b28d5aa497dbdfb9e9d869c93037d3ac835c7daeb724c7d257f54c89976a8afbf6c43bc2fe4676bef0bc4ac5339bc75e3d3f7e4dc6df1aefb6aad60f716ebc9e1edc0e27bd149a91d137909c89d25ee6986c7d063dfa0cf88fe0eb8c71afc6734e6df4e379aa3cb3575a9c42b2fe11dc81cdd6a2dde37a17f2fd3d53199963ce75de5df1d5a53d7d9b88bd6464f049efae41bd665a5f42e4ce8bddd92fd9ad46e937c0523f2aebd9d1c9207b1c504df8850f7477d842bee2344df4856e69cf2b807ea554a0ddeac035c7558cb23cab6e447d12f04bb6fbe24b67a8dcdace670582acfbce6649154b7b958731b7c44bfaf7f97fc32d3653537c4d25b653e21e53096ea652b7918fd7bb9073fa801acfabf4f8a2f18dbdf96fb93e1d70b7e852badf9bc72aed2a18895313dca75c5a25f2c82f7607d150e9bda9c13c53fa5fab49479603822bc364fcee3e9b643d7cea2ad783e998d26eb176acd23b50f6a6b0aab7be2aef83c06851867ace2efe1efaa6f70a3dfe939405f18d913ca78a5bb50c016c964bb46ac79c11c069a8720722a3f2876e997729de07b07a7c5e2d3647e43b757201737f0865e390e849eee7cf7e540f422de96d3b0befa91ccdd75f65c4b3c7d4447de980660e1845a9bd85627b2ef11b345ce01a0e76e1776c4b834f882f60ef5e590b9a4f34d9e3b4ef58a7ff8b9715fcaf7895dbead7d1f7c4495f747f64c79ff01325e39b7e36afed9cdd2d3bdaff59ee84f24fdeeff62fd196f077ba26f8f3957f3f41aeb44dfe1b2a9c4c1190d88ad2ef8ed2d355fab58b9d975a20f8a86bb86c62c2af506ecef2c3fbfa64e99d836882f28c947c18e26727e83fe5d26237f92bd22e90145ff4164ec643554f3880a88558cac267f9fba1e881f20d8ec308fb49f6a5cbace975de7737c17fdd1753ec543c6fdca35dc43f7b0c3654a19d3abe81b54c60abe411c67f654f8a3d8ba30f92773d4d13c4d5f4bd38ddbc5bd2173a472dc95a8586ccbf10ff28d37afc160926dd820cf586e8e5662ea413c1bfd121d3b8dcc14fd1ecc37f83c26d3675ff5c7705c31b42f82536cfcd70ff3ff1b3f0ce48c672cc6d2fa04370ae3faa32993df69b81d6491e7a4a18ef793efde8598209f478a2bd53a531cf39def39cf2a565622f86163f83e91b110a37798bf32fa66bd0e45ff34b963cbbba3186c036f417433726f113bf60478629acf65ea78041880d44fcafdba2c1f1e39f2d0769675ebd7663b9c9c5962bf92bef0b5a33865e4accaf8684901beeceda0076b27fbbe3b137d70e47e27e5deaef1f9dfa31cf9fc23ca3f2160c0b1f986bb3ac881674eb117fe8ff8b34d6aa734af11c30dc1bdc0d7c8280277988c71ce8a8d4bf372b46ecb07df92956c4cf413d23d81b652f377a82d053eb4b2bf9e9df9cbfe11f6f7c13e61eda7c45549dfcba80ca3fbb9457debbbc6ef0da2d1e00cbce0e63009891c32b37b68663bdf5b9c20f789e2125a7af2afa9be4719e5a57794651c1ba608bc195b2bd82fbefb38b3f989cd3465b124768e62d3f8053c4828cf257c47c54f24fd46fd80621c918c83de6fdd27e4b2ba4eb171a7e4be3fc7ee9ad651600e5de9677ab0337f246b8f7c89d8373c87e45c3c203f89e164d27800b9d78b92bbb0ac1d835aee9c615554386651fe19f129c09a50718cd26f637a4fa97a36e630066994670c738eec13191b7314a4e1c8c928d65ee6bbb323cb7d2febda993f9bfa1d248c8de444eed299c2d7fd5f1ff67f7dd8fff561ffdff361a3ce5f873737bb8598e35c6cdcd93fe8c7b61afdd8a21c5bd1fd30390c8ab0b3b8c5a3ec1e2cbb458cb6b454975de2de615d09f54b732e5099df983fc7ed25114f4ef64f3e6ebe76e96c3cf43789f94fc0ff0af9ccc233c8afa2fa13d34fdf937d87a20efe4ffbd6059f33c563c0f37a1c2fbb448f3bdacf13e3203ac8187636d881a16bfc0ad6b24f79fc017edb8f62f0812ffa28fa7d1f6fdbfebdc44dd92bff8ed0a77ca077a45ee6f1107d0a787199ae45f5a03f65bfe9dfcd37ed7e21df14e6d701bda3c42fc13bf2cc750fa697283e968befa58009f2597eef86fe063eddb29eb819c34de89b887922e270a16f047507c068045c5e8e0f48e4ec2e761f80bd2a62e9e2581c292794b521ede91a1daef4ed821ee2faeea30d781d23e7b9d153b91691fc46ee019c3b21870bc7f546c727622c0875f1941783ccf1e02ef38b52bd4de4812ff14181271c7c3d23fbe4437c0cc7c731df28f716b947804b9bf2690754dff54d498e26e873409e29a14683ad21e3055d311e8fbaf90f5de3c51a61be6d9803a6751a69ce1eeeafd1e0169b44c664e45eeb723e3c7237bbc63d329d22aa8b0f18bd9390335ebfaf8c5e6d8cc0d3702f4875aa4eb5ae3ecc5186d0e7bf56abca7350898e0afba436a795cc09b5f5693e2bc40f883d7c451ffa5eba6b69ad07c5b4957466723600f79de982505f96957508707e1cf60e8dd1c939e4983b52cb836d5dd9f99f2c07e9e420ef2759e6a2deee209ea522dba5df58ec81ed977bcc6b9e84b11d1637b90e96cb1eee9bf9b11c846ebb1d4bf760c72920be39c477e16c53fb88614fd5eda7a9507f3285fa13f99c7f01a749a338a7925c75dbbdd354c204a23c914a3f855ced7f556b85d0cfb971835cd84ba97f9856da216364eb64e92d9041ecdff57595b44669c7e7c943fbbcca75167b36f027ae684d571d2f119b6b567fa2f6af19c7afac6153bec3642c99df932ccb6644776ec9b6da34090ef62d5cb27d22c49194da79aa23886791dcab224eed89e27bad189701abc5227637f8ff74d10f8736aa14bf9362fb4a0ea734c7d48f0c3e3e90bf2d627748f9a49013666fe5980f6232af46c179691acf15f84500a7889d93ba9c6d36374acef68b90d7cc62b6c6cb7a2bd61a6457a835384467aa5f9ca83ffb52c6c5e66a1c0372bfd97cafb7102faaf64f3f53fff3621ae70fcbf766b3d87db436cbfeffb35e874abeb8bc8e621c92c7abf47b1265b356e0f5957d2362eeb533b82f3b53d9f782fb58dd3b654c14ef42a5be7b2ad4774fc9bd541923fdad4e7ed05a32a2ef32b977f973b39aa9716c8cd72bbc3f3c77a02ebfa49213d052e30fc9a460df2fe3ab52ce09cd4350fac2628be57ed3bbe2df585f6f52adcaebf0ccc628c8bd0be09d35e970bc7641adb1ac939f43c4f429753a959b43c9ed277bc26e83ff207f74d13783dc24b199a6e17650d6e82efb475f33a0b6bbe4eec82ab21a62a1af72bc363068dc6ed9bfb0f920cf8d5ffb35dc657f3d96cbe381fbf62914ce6ed4318a58c0bbb0f463199bd7ff8d315ca2536c957a258c359fad91d5809f45d7f5003650513e6325e3a79053f0aac480d55ca65c8efbd460530f03f7d1f2d7ed1462b360c748f8a3ca99ef576b5775a17615eae3e9f9556b57f57a2c334fabd155dabdd3cc68d5ace9220b4718a366ef91399a2c077f4a9cf3eab8e4b9177ebbf3361bf0abff8cb6bf8d6bd120f71a302d8c1e3eff6a09f716d4aab6555e7038f3642e97f575f5bcbf659b57795ee45a1d3687d36db7409e3889a38cb4f58becbf8549ee5563e67b49032e4c19e7c17c92063fb27c9fdc699ec21facbe7ee3ce01bf4ce00169b86b7c61cefd0fe6dcafc514a575f9cfca9ecb5aeafe17e5397f6f92d3fc07455ff03a5621eecd69d12d242c5dd137c0746ef348fa2fb42de0ff6d1bce4c2748435d5c6786bd293f17977d17ef32f0dbceddee01f0c70a22d3451fd7f764baec7fb3f4d6036af98439186f073f2bb27ad497fc34656e20cfab7821ba0dcc4d99af077702abd352ea5abb52fde1b2ff8bc8a169531e88c0fdffa7a45f0f6e4487001b20473b96e2f2404e6c037eabe0bb6dc220aef8e3988f762ee8e147e4ce1031fcefc987bcab149f2528b9564f32168fc40703f888aa2dfaf5bab397db387b5c1de0429bddd62dd1af1fa75131e84479d68a21866b77ad619c45b95104e6f7643972769ba21b8579da8a4783e7dbf6fb2deec49d49fe3885f9250bccec0a38ffcbde29dcf60e8167a751beb86de03de486990b7818a88706b7d07cdc62b4e3d3e8b03801e75cf6b86e468b56f47abc4db4c579921bbb70d9bd457974f3b5ac45633e575f0b2e3fb46cff63356cbdad92fbec15efdf95db237623d630c11a401c60b7613e98617c8acdb4ed6f896c3fde583dde62e8e8ce1a30b66ee3ed89cced4f6b38d8467996055b723644be235ee7c6cf18d927320f8ee8579f0ae7e5fbcd1a425c83e163957c42b99306a32c4179c9798dc49806c64e9690232ef23fbdfaeee3ccf146e438096d8f721c493537f037f0d18b312d47e6132be34ba3f8b8711f44376d235f6a24739f09b585d1c101dff99cc59f96187bdfb8dd76d8719e60eb09fc6b743e4f51312862ca932a60c9019f18696f7970880dfa845c1f8c6967c4b68972e749d686bfa3c7e4ef07a50f9d8db738d6bd37d1077994f72e25c64bd6dab8c6598c93016f21cb9382da41e1b7b61c77acc9e73044ee301cb7c4514671d4782cf740be61cbed02cf2b6da7310fca416c75990f0dc725c54dd1fe2b79db6ccdb9067afc71ecb7a996f01f8f832ecab6215f81e16a73ceb43dc8297ecee8de2fd75ae6798373f76fe622fbcff1bdada5b86cd9ee93e5fafa6ed0c2983fb9930617dfed76c15f613e4e91e690b3b867fc85e59e3bc1f7ca33948a394879681acf8d502bec139b8ac882c354e100cc6e61b63892b3b5317be7e0f5984c776b31b7eb2d76db5bc8ebd0fc64e32d32b6572329cf0bb82b33bfe3603dea087cbf99c48f769826b137d893f564723338d859a425dfac574bfca6d754431d422e5bafd81498136999460eb50f940f32307b575a635a9f6369f01aeb04cf55d6faa4f6faf5df9657f6c5baedff3407e65fe5ea5ce7c635307b17882b7c2c9b150e89a99c473982bcc4ec1d7218a1ffd21e1acb9cb985ef76f7a1d63ebde7b57c96c6fb6851f812e72b39b37186732772fc40dce20ab918f877e058a079b6546e083c3186980f3997ce0cc643ec2c1a39679843ac6bb8967981183f1b2f0717f0237a903f5608f97ecbc01bb4c3d10c65b9249b2abf53d954cbad564c5fe72f3572a9be8f929f243a89b5e68091c5f787c025fb2ae4810cb37d40d61b30b1d7c9d824727c700d3cc0e93d5926b59f30f7e714984e1a0e013f7b4afd11ca58b13de0215f333f5a0a3c1fb571a1d7695133d6e1c60b4e91d6a3f204d6b08dfc978b43b024e7c2de811d01f9e2e45be43c913ecc4e31e4a18b7d82fe1a44c6c666b6db788bee18c75b9ba7327d5a1cc748b8dfb2a883e7b5cc0d4ca5bd305e227772a8b5ef31e40cc973cb7dd3941f84ce31f69f8e25243a9329e7304e972f853037a3283710e795b403352329e6d29ac635a6fe437206e23c6bbdafc8fbe5995f21ce713b04fcc7c67b828ce30edcc11d9be68a76dbe13ac37bf7757897f86187d995dcedbe7b4f62d3b900de1fcc25d94f88cb1cbb2d26e7f61b6f4679a2db597898d3fb8db5f158076efbfeb6ed3fa6af7d45aef7ce320774ff28e8aa2df21eb18f80b31eb9bf8bc05db47db04f24197225f7744c733da5b1b7595e267e4be0a7be4f76fbaed09f69d88941df52bedbda9033aaa537a2778d4d3b0b691f37de94e841a7f03057657a67037a18d111339ec3ed90b97c85f5bf335b73521c7fa23d34e8fb07fb14b83ef713bc6d794e751be6077c3dc7646e1a455088793f47e0dc042cd1329f16ef227e5fb27800ec4bc6f92ed5fa869d59c6f295845c98b2c656e1bb845a522f6d11dd7b4c6c2c5daab7d889b51c3c1eacb4c16b41745eb34b793b1b6c4bd4a16a6c29b04fd17ed67acf60fdd7393e65eece8fea8891c353cc0f917399eac646ce06ef1be4f4459433b3e44368c0eae6fa3afa37b17e027060c53822e716460c777a570bb29aed8949ee5c36defc28f95c47d93d581d135b2bed62dfb35b7621d405b1fe937d47db12f355c4fc84b5e6b4ace1c29867cec8d25bc9427bdcfc9ce82398ffebe752fe08c4bf715c384691473470ed7620fa2b59bbaf2d25e7b4528f385cac6d6701f962381f52cc8fcbbb07e6a2f033935d83bca7fa65993f8bf3b4f81d3b233a353b3b94b365f7bebc97732d9d85339d9bf4161783a9d41e9e5fca039f010e957f700e81581388710c3a2651e718141b888d4bfd90faabe059dac196dc93467be3d959a0df9348d4216b79c6e5b5926b4ab91e28ddc3e5df1dc907184afdace04ed2ba67b019d71bb79d315c5ae08776016fef2dec44c7b1c23317e54e0ef694caf558da3b474577c1e7e57a3469de26fa00d753a803c6bd53da46a8a726583b9a3b449f79fa9edd55f33b1af637b197542eaeee2427ed8bf5bddc4eaa726c29f310bac629dc3f6e61a7afd63b5e7c37bbae800f53e6c7a271d3aa7c1a3dbe439ede4eea33d1396cc809977ddc646f9d432d1ee2994d236bcfef46625fb77df7717e5f0e78fb93ed6085ff0df606d3b9444efa27e40918f72dd659eeebb1ef444e199deff36158609c36ea2cb24887f628a6577a8ab46c877c1544af79509bbccc93c2dc6be76ebf0e953d5bb31f0c9aa7a6ea2f02deb6dc4657d13720c64f6bd0914ba8a283c9780fb7507b881856d4affdb8052d941d63e3be5d212e6d167a03d08d62cfcedeb683c8daf67f7df2bd5315bbf8e3fefdd0953c998c7cb72eae2ef7d151da0946f62dd207c4de2572f2023a8de780df91fb4bf497644d7423b497d09e1c39adb2dee185ad391deb5ee19165f96ce2bda0e282d7fb98143cd47da875ab7c3e50372e721f56e466e933461c07f407c3796bbefb398fab821bcde51bbd6356fc2e4bd3a818e4640e23e06790f0df998fee4ac630d6639e574fcea42ded73940952ae56292fb2d0cd5a63952fa646a7083bfd8312d7627df8a6f8c865bd42afbbdffb3579e10a6fba507f5ccda788b3d898ed7cf79105e40e607c60f46f4bb78bb824a399196e2bf78258af4cbf21c9269e7f5a1707abd30f68ddf3cad78c73e08af5cfcdb27eb314f213a89e126abdfb3a775a927e547f77d7eec12a375d50f8f41e96f6f8c14ec32a9714623756f203c818686c444fcb3e0256832fcb8e03dfcf15bc4de07236ec0cf1d9dbc4de99021fb072bec958c7c559e144f07f8d9fcd717f9a9bc7fb56cf6390b5ecce54f077f2ef3d030f6a1b5ac15ae234fef0ee90fbb72077d5b181aba98e33fa1a76008784dbf880bdb0eedee242e5c12a793fc83b9325ad413716a7d05dabf7bb184b590b7670653db0c62928026f7694395aabf38bf7b5d10ebc596b2ec64ee83ea2fbe954cfd720f37446b971116b142b58b7357b4dd9a7d2391174a6a3a26348fb48e4cf8834076a7562d379257a0b91a1447f57eec94abd50dd5a97b514e59db331b327cb7ddb98c629a41c2118cffffe73ccfd0276b1719ddc025c07e31c9a348e5b7280dc001392c550d12f04f29cd6a6277eee90fd83fe636f9f0439b18d664731660b354e82af40a96dc2f69a6d6cac653a40bcf54e39f2f8bd2ad837f439b8eb5389479bdae4b199428c17dbead7cc213e17b8ed53ac27073e6ea22fe8d1ef634aec67b7486bc027cb1759d459146147e50115eabafeb171fd8dbd81e7e99b35a4f9d15033f952fa8fe0bccc8e969989b5d98c5b91f2321a2ddfc176cb33cdce3ae20a10bd4bf189dda3bc073611f77779f6017c28e43da87dca5a6167b6f3613e4f4fcbec6d37b9b3a3fe9d645efad4710cf2f9127c60a23d8f314d61efd25a803a9b5dc5b0a773b496be73f43bfb73392e498eb3b524ebb1da98bd223667548fa1f721f8866bebdbaef4b7e3b801b74d90cb2a26f31f1ff92704fef9e7bc8cab306cb3346ae13d15bbddfd8ae7edf0ba31d61ef23c3f8f89db6e95356bee621db638373ccf8d607a0fd480ad8e1ca72b829a3011630df197d79ad37adb0e42af7c9ff2a82f6e0bb4abbf59c6252edf636b82dc9fcabb109f60dfa6f35afd76d51e12d644f65f97df9d9d37ae738dcbfaf706ec38fadcb0c464f03bfb6b4ceb5c84f9ade06bfcdb6a13a14e70f8cde2befe3a3cbc8f6b142d7dc0c6ccb0248ee3f26e3ed5d412eec43bb17e1fcb7a92bcffb3fd349f5da2d1c20e541ebb0f70e1e4b8e2a73585421fe13e92faccf0e2be90a728b6f3158e705ecb28f6d7d54e1237e2c69d17bed6bec7c36cef6a955cbd26ae75f0cb60ad7b4f0b88cc13724326fa006ac3687c97e76854f3f93ec0de93fd18c2793f279ba59c9b59c30179f2d47a125a57176eb9ad2461ae8cebf427ca0b40ce28f2a3967b4438e36f8869913d57660ff3dbe877426df62b207359f64568ab4bf30d5f385ef2c62deb89956769bd31dda7c23b11e087745bb6881d683a9768886bc9d696f4495eeb17b6ce0defa5a7d05c1401d60208f55672bfb8bd99258871781030f9f5f8a5a95f82df37a0f325e47f2687f7a5e88314e7b997078759161b09c7716c7e66ffc1330c7793e328766a9fa3728af37fe649ed7842d77871311623bc5bce85abf77fd5b6ab7f4fa6bbdab9bd6cdc2e70be34cc9b0f7576c26f54fe43dd75fd98dbe93bcc49d31aee937121fdc6317d3e68f344defba8cdc9f237db3c0cd260f8c8288f32d9fbcf601d9c43cd688dcd976bd4597443737db43bdc5f7d182f9bf699b15fe7f8bd7fa22d87da1fe4dc459a6386662f8df5f44af4e977f7918df598e3b1d9c5be7e0fc3f8ec5b3c5adc4286577098658bfc71f3bdf931dc76692d369c6fca0b119d98df8ddc11be56d6fb29fb066565eedc63f701f5c218ff7b117d329567c6cbfeff13fd5a58bf2be68fa4e4996f1f3eb33bd33cc1c5de32bb595cb07af3aeaaefa17f8be3a1326c5facdd14e69cd5650d0213f0b35ad101f19536eefcc2782b43d7b8377f23236b66a3be7791e5af21de7165bc2e24f3bd1c9c806311ee88858825945a23e4bb9ee8a4bfc40e465ef92837b4c0b3013f87e6191ca2dcb86f3026a02fb2691276ecbdc44787774cc9a56e5c62199b779146700e38cec03cd4b22bc3c213391be937b12d193701726c7f2cfb97298b0f426ec102b9e5843c5c9e134bc728f1cae11e1ee198685fb14fabc09ddd208fd7349ed4f64fc99ae13d426cb62efa8ea8efdc77bb653ea829c748297f3ccd8b4d4f98c73e23b6634aec4436cf3ead93546a54788dfe66093551523c212c6b6e1b3120b03645d23f643ba546bf888c1ebfcfd99dbc74e7348e373b06809d93e52cee196e07479fd8c728934037c4bea9f110e09d4dac558b7ea3cae749cf1bb4bba47cde5c2fe84c9310eb8501076b6366e7606467a2cfec93b17e749eee9e96ed3da725ea0bac6efa0a3c92ab8fb9a248ff97ae4fe68162eb2d6e8137833a47868188782ece95d8c3646f0297b51e23ef27c5ee0db55e4be2db417b829e85f3afb1e65ce979877e497e7a9037f82ee72fdc12fdac818b7b68ec035dfe26e69e95f6a610cb56e6af7c469677f87726e39d919dc6b953005e86c0253429b92fb7efbcf6959f830eacefb27fe4720330d9bb7b15276da1392d91df03e5407022fa8a85bc3245e0b66f98f33467b5ed5cb6a87606d907702fc2d97542fafd5fe3b652d78536c29f1b0ff4c58ff6166fb7aacb535d5c3ddb741f33ce493c4fbdd3bba1f681c892c79eec298ef5b2ec966763a7f2baa5e56f5b0907fa5e139b1e94720ff5e712ef0bcefb35f0221ecf07ac40fadf91e6b4aa71b3e67d237c43ba27c56f832cf01c2ecf692d7fc6d61af2fb0559f001864edd1c546568f3b913648f283f553c8632bf674efd68902b633a2f8ed9a3770f60d4fc153b12ef636396c5faa776fb81df73ca3ea339c3abc05b840a868b780ffde4f710e07ad0f3fb851a43cec7fdf1f9a063b9fcf41ca9fe507d479e3be3427d5f7fc5be477f9862df339f75b260b9a9bfbf2e824fadc9be07ec1c78aeeefe45198ab9b358d72adb54d0376e73af3fb4b9e9b3cfb0035cccb6fa4ea4f5da513ecbaab62d7cff1a93bb17b847c1e6c84adea3451ae571061c1805cb5355f37fcb1c6a79fcf8fb8a63665474faba7ceb93c26551f7cc3158ee159e8f9abc6c9597d47da4516771f2b5ac05986b66701d4b71f14a9eb5da1758cb85d44e9aa936464d3b353a15c64b7df7859c1da8b7613215de7794b91ccd6eb167ef8275f652a3eb9d0263715bc2194c43715dd9ba2f79fd67e923f23d1b7860df6be485e8c7763ba0431b64ec9303dd0fc3ea1dc7be45fdd375b2403dd77cbf56eebb11fb0ed5556ac62cfbc3c9b8e91ef6d2b892a3c3e78fb6a70f7bea376aee457383d8deb75883dac15da8b52f10e3a76384b8b2376b851d5bf5659e7d0d6aa973d2c66a381b8c47e23cf2f5dc4fe433ccd725d05599c3f711af17883ace056af4a82ecdf96c411782dc2da28f12db06fac331da3335e7e3b1f3d78d735dde41c6e5ec6b465c83c1c1b988c9fd81f99cb81fd86f72ce438d9ff213dd88ef65657d451d72b21ad23cdf723c6cdfad345fb4d3af1b777eaae432083e8f2fd8545fb5db4b5fa8d18e957c0ce484d5cfbfa4f83ede696bdc0b73b6aee53da5ab3e94cfe7afe97cfc1f9e3f21e732399033589e15e769e911f71dd6dc9fbfc8ef80875d7d4e38a3fd5fb2cce8279e6e5dad218f01b29cc29d0fd804f72d9c5f9ad32cfdcee6fbb0b8ad01d7aa7b18ebfb64acd89ea48dc97680fce7af47f23dd2bfbdc43d5fca3007b107d7c9c65d64befba07768652fd17b966303fde49cdf7affa7ec43536b786ab150641d466ebba7ea068acf1165642edda1a09788354e65ce48fdbe5fb03827daf6427fe49cfc459e5d31fff62ee43fd6c7d2051b99e749487bfc79a1f9110df51a06d6c948f962e47c711c72dc3742ddf519ea703a738889856eef8af17b29d788f9ec806307f239b6422decab8c814efd6f6dff40ec2d07fb28e52da4623d3b6bfbb871897e6def36c007d4058efd007c5b901bd7d998bd6750930711e5bd1badcfc7b686d90b8c41aedf01db79ca62e3abe1212a06f6c2a87966c79eb1ea9e9164ca9b1aff9772284e62ed0fe348e1f77525af8facd3f0f13a5f22bf12e7f55a596765bff0d826db5f881bea9c686cf542fd89a03b049e7566fe505aff55845a8b6179dd808741e056a1584c34af33207ad074de32fef43de78562b03e58eee5747b4fa6357a845453f36a253fa0ee617af5b55e3b94f8ec785d441a7b89341ff0acb900bf57c0c7b8e6fbd402be0f222b9ca2cc6d2db1fb36de3cd9b01ae29a714a358b1f706b71fceddc79329f83c00ff6695d9985b56583d84b4fa199a5d1612f8d93e2be829d8c7708d3bf304faf712f2f69fbaf5fd8d35bf5d9dabdcdcf0f7b36ea38dbb2ce02f47f2673d248a877a3f93c8d3942d218e4bca2b25f3c9f88cb26c4341f5d10fffaf598b8fa9de9c6df2c23eb4d90dba30856a71a3923fccf48cabd60321e3786d70f322d8ba0d6ba9dbebf1e93e9769f0439d6436fdceec76d533fc6d24b9231fa09d1174b6420dd2f5181391db25c95646c0039606a8c84e82aba503f6ef63ae44c731fab547f187fd24fc829f34b6ccc6a9e1697414e0fcea352c7c26597a719ed77bd4e4ef1b96894593407fc2bb64029cfa90f18fce279afb529f131a05e21cce3a7e86f5e7aa9947b0d7a27bfc7a86d37ece54c9e8d97fddcdef62fd3a5e8972af5523abe536d0db65c43049c486fdb7e21e6dbf33d2bf64fe2f5627ef436f08f0306bf673f91eb1c30799e34a69686e65d3897a9582386b976c59731c0d97c7c09039cfa6e988fad269fa4b7ff8aff803e57b1ef95fc8a0fe3a298970376bd1867a1f66b964b7e7cacc5b88605f5b7eaf724d22ea7889c5343b1e35f296ea7e00f2ff12c659faeaff5ae444f8ddd756d9eb2e857a73e84065f08cccb3a6ce1de70b50f7c255ad92ff73988bd0a16bb9d451de78c391c9fdfdd74ee46ec9c4d145fa98ca59de5969e30fed322f066ed7034afbbd379cdff86f2bbd0fb89fc3f8d77ac0be0f9590297d43370bb2d16bb823aef727f4b678be6550b75433297e694d6eb70ec24cae15be37bf90138a21ac4139579d9c35d1141febd738d79fd5a26c974c1b6d961aebae07fc0b92ae85ced6a6b1a8c38b33be47c1b67c4d72aef1c59c6dd29b6a703fa70580c7e010fec689681be6c620eb270976c497b1bb5e6e29398e35c96ab883bf4f53990f42432f7153f7a359f9acf09dd43df2c73ca731f9b6426f8b19b6ca0dd91f419e2f872ae31c3313fd13cebd92d34abb6c94aeb9edf97520ec33e70ed6decc6fc7ee5fa7c0e71308a0b23d7b4d33e48b5c68cb3a44e577cdb0e9642dd2ed30344fc3fd45538f7ceacceb668aafd55eff12fd608df13bfb35738bf85dc2f59c6ef4233cbc2c30231cb250e6331af4c966dbef638415e00e5e0f81207f15fcb83fce43ec958dec65b580cae81ebec31fe6ba761beb8856ef62d6079aa1de72ae073ddb0f60bf21aa57cce1a99799de475f70ae81e69b8ed9ea216605f666a4e83940b887985148b98f60ff8b78e09cd7793eae1a49cbba580414c6bcfc107b4e55c7595f8bec0558f3aa2e6b4d61ad1491c3bdc535ca85650c179687aee833a1d9e2fab70f350ce7265efc879d9720e746796cdf72a67cbf01bf8cd30d7bc5be6a527c5dbb67f21fb89e8d1f1682f708637bdb357dec9d43a41b5e64fe14014d697f3a905b7680f98e747199bb3c25d57d61c7e35eeff993eb6ecee7d6f918ef5f814e8d149899fb2f904be1b8103f8146e53f137a2f35fab799efb86b62a7cc2e26fbfd7d6ea837ead1afab56c6aeb837ead1afa25d5cbeec57bed19ac6d7d728830cf5d18fb44faf7b0fa4e9ec8efac9477564315c3a1accbaf60bbaa387effdcfe010e6716cfd5b2bd5d64b157d11bd3c69a891addac857c9d905394513cb30a6fabc8c720d62ee33d35d8d17ce86368d6e709976b9310fb0fb04022cdd1e762deb3d4debea9bd406e6fafb677acad81576a3a154ea9bbdf59f844a62387fb437e76459f5df16703f6ec46ace3fe24d7eca3bed4cd5b0d3632dd43e2fd2462f0b72af7c9dbe7f572dc27e450fcc4a860f81125368a146b29f3deae81b7e8841dfb975cf726fba5deb62a0e8c52fb86feb0ddfb52eecf5ca8996b78a7c46ba2efac3ec684e2ba1babe75d8b6354eed4bf889d22d6c9a17e5af47b961e2fd937313f576c332a318145dc8811e706479b9f8d4dae3362f52d0d1c729f61050c543d63bfa67cea7f4ba7a06781d7c609f33cae6012307c9145b171e343208c754d6db5106d05f48b7936c4ef7df771967cdf88f3985818f394642cb5f9545f388cd36eb3efda12ae187de7f02672d5d4ae4f356ec56c4cb1fe577a4eef426d74891b8138cf0a1e05c579deff457c2bd6663dbe15d40497b6fde92b7e767296432d062ee2c074b6b11b25a1eb3c23cd3840cefa76305e53beec507b6413e49fa6784e1037fab14239742336253b23a1d93b2c687bb2fd94b6022f653e0588c9d66144412c95fb2d88bdb9bed2fe1d63d379895197c1f7c146fe7e2bebed3f978d6b86cde44d13c04231b316e0da94f622c3dce93661ee34c5b544b945ede79b9f9f321ff8e81f740f9478a71bef44f96dff476427c30b52ed5cf8fb87b2c1e8e13322063ae5f601ee04dd8ec8773cf3656715d32ffdcfd32da1ad2970a4d07656ced099f398fc08f8901a9efd8def198fabf4cd7a79c0b0d84b3e40c4932c4a5cd52ec37c2df933d6203b4dc40bfd1853a3c48fe7dc1b90cfc670364bfe40b17dc8bb6b68bfb6cd838adf59df6e5cf85e40ecb2aff7dd1814616790061a7c8762a4720e335e93109bdf99df94e9ddf728efdd7d3706fcec0fc752e2554918bfbec04120e01bd3b820c56ac56f31aec74fb0dd3e94973cc792e955d5bdf022d454d5d4f30b7d041b614dd7a25ad3ff57f692a8af8c00d77e44eefaf8c839c1384e3d8baf819c1762470f09f7372a289fd4c8ce22d339f3763ae89f26773569ef7dc9e24991584b9486ee5a8a1d03ef32d805c03376689e8f4ff5a82fd7e99439d652ad732db766d0982359e6ccb33a6b31ce13bbedb7524fabe667030726f9cdb86f298600cd2faacd2d92ea2b84fbf42862f0006e16f091c619e273dfe9bc0f52a257897abef40eea5f98bfe61abb8d3eb8fb6e565866efea6bebb3a5a783893ed0c7c4bed5537da20f0663e74b75e5e53c3c9b73d2594ce373dfe247f11c16f339d1588e1843107da067f29d9f967e4ea6ab73b2298017b31de2997abe15835f959a77a9be645dfccd7c3916f7fbe539951cb96aed644dace96b784cb4dee103ff23f35b02e718e480ac9bfcdb43ca35b60b96e9c5f74a5c2b6ef7ea6df2f7645cf40be460335e045e20da4e0bebd53fcabb127266459ee348ac3965f795c423304c22d338d15c045aabff90f075851a2111035d1df3df5d837a1b11b00c2b77c3d5c21ccd4779fee9b7f26c0ffc4aba95ac3066fe8d6148d218fa75e3ce655fad37682dddf983d71dad86bc465fe655c7bf013f2cddd3138655f12afb5df9b3cb7efa63d512df455fbbe2cf123159ea62fc728c1ee4d47ee3d919b3cbc97d446b64899d710ddc19cdb5b26fb199b0fb95f248d995987d606605be0375f1e5f8e47af90b9f67f1ef52ac45e0efc71a74baf695fa739abb21fd5d5c978befa51093a29c843deb75f8478d4e2bcc43d72ff783d80f72bec8dfeff23857656ea9d04620e8ab76b01d6c43c07ca7fc5d4457f26cc6b7f0f4dd36b1e7d26834207741cae3354c7f93b808791c46ea3360e1f1b8bf347fe2bd2abff3daaa9343c0270dbc1043e05e1571c7d475699051e29cd763f4965c976c9f38cf92c7b62e27475a8bb33a460507ec16e74e119ac61d396a555e5c69ed996e355c1503fede24bb6fdf9adff9c19e2bf70ae75690748225e0fa2a7c9680995c95a9983b05fafb2d3ac01aa5a19c13c86aba793fe518216d47f663c15c96730b79cabcaf6aad04e5b0bd0523e78c7c4673956f83dbe4a85baf9318d6a157a89ce7817cb731ded14774981f1559f1b3e6ac49e709394485774ade50715dca7d289d4bf6b78bc4d51f6dd9f9c21c31f8ef65b52f13b50d718c685f0458b785f331deaa7dff2ece05cfab56b119a95efaebc7721059d923a25cd14fcb5cdcac61f787a37fb03f59be906767501b9e7f97f61bebdb06f29bbb50671fb8c496f86cbfcd1eb16b14c051c1c7e088bebe11d15d7ded716278ba11c320c0dc032afb64dd97c6236e1bb7db9a2e799ecf6b686688e7dcc6df84fb5f925dcabf83b15a67851c0b05ae4b760d86b3f386f2b72046c2fcc8658bde7a54f6977e4f26ab61652d791db747ce6bd9261b0bc54810f83f880c5d407e66f3f9705016d33e4f0e09b9dbee8007f13abcbeab357ae57b81fcde5e7e4fddabe57babc883f860b9af9d848e55f8b7b8ef9dbdf2fb5ec94f28c729f0143f23cf6e8d85dfd61da3607328eff5f219e9fe657f93f6fabf495ed1df213e4675b82a5e0ad7130b8aa527eab327f9acc33cab78b820a3513f62dc2d47792fd4c90bf5fd65e3fb8df206f2a3bcc13dc41cad02ce7126e916291bf7c69b4d693e88a83f307deb16e4c133f016bea5b7783fdcd7c6e702e939159b52fab6f5f1b7b7e2b7cfcddfde8adf3e57bfbda4710af29b71df7ac6e3bac03911f43fbe56b42689b5c1ef167a7fec3ff48fb07d26eae11fc40ebf59c3665ebf58abe1c7d6217fe71a7616cca6e331f4b7ed6010ba909786fabdcc154573455f94fb22abf34fa35dd7e2ba43aded26fcceced0999f177db087dc77a3d449110b65e157f434bc9ff97d27d8130fc4bb4a4afd7f8b985acd78be8d6d1595b696725b32afca22f8b49f4bb59f7bb59fc197fbb954fbb957fb19d4f793f3959179ed11bb00f9ebe9fa1ac8c9208f83e7334a7a5af90edc0fe21c0a3aef00f433a1fd0fb09579ddc4fd8b7131a82f1662e7c09d04355a5a7af2b504eac39113ac2fe99596b9003dc15dee69fd38d179662dea9b90ea0a687d0db9e7d3308fdba149646d99e341fe9bd630b0ba08ac4d5ef65aacfe94e1fc54fd1ef5ba4d7ded54839eb224e706ec9e408af318b3239141b1473932710ff902fe89987327dac641fd3392fd6c09cf707cb73f47f7642ae26d1a11b7d139fedde8f1dd62f94094eb60e3d9abd0ecdd31576781f7949154e2eb6bed718b1017c222cf38145f59f455cf296703ae4d550f13ebbded82dfd9d78d3b67b5a218b304bfce4bc27337b77d26db2dea033a5b256e2bde0b46546903ee0f71ef517f5160947e03668fb03b6852f4b81f9e8d0762bde02398319d53e5a98198de7ba7c5e34a91b6fe661941861ccf866c1b6ffbc7d8eb9fe45a36ee2728fd06f49c88e7342aba5007e1bed6e86b997397ed24b447049fd393e8a33f9644369c93a5debf59af564ddd899d317e2c7a27bffa1ee8806e00b57e800d26f9a9c6e6e2166b2f27955768aa539e0b23017937d5fbff92cf0beb17d87bfe9b3c56e0e57297fd5fd690622d16353a82d9eb84b24d105922ae5029478b80717731dd4b339ec42e5d8ab288c9358a65e8e7bd22309da2666cdff97a517b85629e9dc3ce20b35eefe8f7c9e8bf811b41f837fc0efa2a3d830d6bade3fe96311c95f921fb7f4bf60bac29d8c7f57bc48633c5c704f1dd6e6d4da2ec9ba47b7a985d891e043c7dbcf617f1233f98a77ffd87e6e9f2c93c5dbe3c4f7b32a6c5966108fe13fb09f0f44dfb16e58b2c127889f8f987f30e7e64b833b9cc7d6d31bb5792c544e64bcfed5ad2bc8e3fda4f43b42d5d5d988795589b3abd02d68cb1a772f77b32ddd5eda70570fbfc93f3e4e7bd566cf62e1fced5f63f365797df99abc9f283b9da331cd2df9f2fb99dbabb3500bdc8328d16bbe7985c55ee3aecefaaacf3aec64fab58014c1e7cc455311762d55181f1d61a5e58d586d995b9230ee027509baf92a328c6c2112f89c5bd9ab97c24bd6cc8f298d6a8176f853e32cedae69a46258609f925ab8d77caaab1f2d20787e3bf738c214bf713866752eb7f3339ae5643ec1771c16a62ec2526d167b848daa7184bb4ad8ffa4163d09d12dfa98a13c6705b3ec557cb3ec368e273f679acb9c48732983ef60fc5d564bf9d1c5763984cba5c4f3359f2b994f29d95f9967dd380438de3556a6c2ea58d23db07dcdf4cfbef6b0eded3b4de4ec8373983efdaecde62333d857974157ddd731e3f2a7de71bd3788ab5843ef2d1436c6ce33a44e63cebe2d22a5f22d705e5b92332bc2e7e1628b911649dc81ab50331f7bc5cdf1db7e50aea6f1d4d29aeadb0a62266deeff8bcf9bcdf2b3e69350652dbf6f6a3b6d9dea9f56ffb131deac77fd6c5d7c49a0b38f7fc7bdd174be77ee8c7e490283ecb47f777fcd4a12ed477758c22d653f2bd9f96f9788118fc087cd1e77775fc42fc8bfa9fef61273a06f5f83a17cbbc9fad570b7db6f84c053b47adabc61ce87b5d1d53432c89f4f97b12be363dbf579fefcacfd7d73c547cc9affd2a8f9a109b9abeaafb18ea52b01696cd1bc617e9fe405f3abf4bf8fdd155eb0253f68cc895a09c272e97422dc823cd6911bd908fdb493e7e76293ebbafad53a7fc6bcc17d3e04306ec24263b3ff161d73e5bebc7e6732ae4dcda2dbc5b995cf389bdab812c63350407d09bcab9839c13bbc079079f45f9fd53f0aae4d74b3629f7f597792a8acffa6ddb3fca3eeb8aaec6f723fe3d437db1fca6c8cdfa14f8733ff3df89799ad5bcd7027307459e91cf7235178cd7fe4bf99abf95432bd53f430cc5107943c5fc1161adb50fbf771072419ae6f0bff993b20f8c61c7309da8a916f95497d3c8f411f70bb5da324f47c9ed43bf1b7c5a23aef8b56a79464bbd612e61c22f71dd91df9e8df98e787a2307f020885e51ea722f88354dc7a78e1b70076bc6fc5b75901427746ab46319cb19e685e78fffad7c51c04aed0b78fa8bba6fb135f0192f07f9775dce58d3bad5be5391d9802b10597b9a9b05f732d4c6a771891b58f685fb8451cef2bdb6fa445696bf0d689e17bdf39153a1c44440fc391183f41fcdf5fdbb75b2747f6c32b23f645980b9927cceae943f69afe068624d39e5ea68c20aa8d7c1abbca034f7e005f9b0f8b9673986f57650f95e577a6f59fb5e507d6f5ecd671aa1dfe61de2628b2ec4e447fb53ddd803f4519ea2cee2437e54aae3bd28f95ce51d0adfc0fc24259719e53ffadf859a657637612ec73bd4f7ce151e59ca7ba4e869efaf0a972eae9f1a63efaa3ef3b72dee77b4dd982ec2e3eb2fea790a0e721eb59ce3657db346b35fef1e7280465a76c59ca6f901f26eb4ef89af3d6ec8adf0bd9493ba55c3c55b17a7afcfd9fe022ede9aead1a50e3212ea7038669bf3b2f198ed4fb9ac46b436a7891b93d5385359c66b8501272c6b4580693a23f2694f79eb7e0bdb6e2562dba9fc9ae5f876efdee21669b33432d70deff07a34f60ec78fe77bb72e275c9ca7267daef6992ffbe1fe33bc3f1c5b86f231bcb612b72d711a226732b5d568ad969833867120caefd1c8d543743ed286de7a34f206c13342ed247277d4fa60ed4edddc4662bddd0afb0dbc24dac6033fd035106bae24cc5405a312f55bca83d4bdc7deec38c98d7b643ebae372de9bf5d3e72066f7670038c3e70f791ba6464bd08b111f9aad23b96b210f0cf562c0e48f73e76c997697fdf78461a9951cd06cddbeff402ea55adfab582f01eb9067cf8d37a7ba9c9d856e4f037d0ef8a77b97726d2b1c2a94b3127f773b88793a2e2e153d1df1ecbec429419fadf85eaf5fc4a016be95aa6d08fc213c5fa58a6767c49965f6aee1682f6280717e5f19eb4ec0fee7dcb38b1a1be02ee2edf175c7d89f7155f91b6b75222dc8857ca0f2deabea96e4ae137326f8dd47f799546fb21ed9b7c8340ec08b45e4306d97e1d6caf27c9d283528629e02b78f2c9d3cf392ac781fb9ae45fac274d3ab35e43c89a53f808c73a5d82472ad6e322fe7f25ba9df96f31b9bbd553c825a7e9967fe93fbf463fbb6064beab58a8155d96f58bbf337ebd6041c422d83dab59a1a5ab6ce2a1fbdd80f555f82f55074b2fae797fcf9e033ae9fd8a57a4dbea6f26501f5eaf21c51b9519c7f1179e981be2f8fb306037e197833629f969c65b47f9190bfd8a01faabec7ebc75c9d258ede47f13d1533856374986db2ae6719e7e32ed41ed7e0dca26c497d6dd60ebd9a9ae46a9cb0ae3e59cd77fc420df397f04b28f63c8d25946d7dec37a277f93a779e907f8f3862699467a54fade4ed16f1f67e23ee887910f571472a3f6b30cd547b52e15212f2595eae75f2bb064b491c7f646580e7d88a398e92730d4c83ec1d5a675bd6c1d1fd5aca4185ff0db0e5680ee88fe580cc61067978ee5c7de64431eb3e7a86f1b07ed24ef33382edf1bf62ad20cfcf7c69f6b72386eacd32bb59c0380ce11e14d7a85790fb03fd008cb7ae3cdf1fef85d92f313f81bd638d384601af492def58e0483ebd7d8683bb2cb16c3cdd7eab6983faca07f32877b48ddb6b47e219de1d9331ec3b495fbc56f8838dfb76a297edca985c70a79faaf53e8f53e8662df4230ccebe3bcb4297639c622ecb16742c62f7146127403e51d73e8566d67a7744b92e726d0935646676d9780bf4632fd3abc0d17c26fd2cefb00a9e25f04840fec3c82902116747c18024fa87f85d3176182af59ed567a576cb788e1cefba36de45640c6e466b555f2ad86ae19672f44b6d7159515d47f3e5aa62578634e7bbc2854deb57395f75e51bfbea379674dfb15c55c5d7620d819b775edd7fe7eabccbb19fea778cfb76bcec7e1e032a7fe31c2a8cb3213aece15e62b259d86fecee1c50dcfae27d8db9d6be679f204653a9f396f948987e608d80f355d207843b40befbfe7dfcf49fe3b2d6c4927fe8ff24966aff48f69aefa53e5d6fa863182fe5f8442d962a70bae29e83bd8077d4a9121b29f737e55b2d6b27e8fda8dc752266ee0b72a9838f959e3bc57f4cd794d510b298c799ae31e4d154749aa5248f55bd418a93ae455ff0b656de0afe7d316670ac3f271fda535d8a212cbecbb8e1e93786ecec0bcf54e441b37df53bfaf40a6539e28bb13a559e3f70e7b902638c476cc11667f544a22e6dc645e01ac0c53736b32babbd0b8b7d129b691a42cd7d027bfd4df261c21df90c3c5b033c22da07319f6582f695aa8b9f376efb140bf79298a7a7dc512cb67d2eebe4ee8087f10136d614da475d12df5f957293ce4b25eec3732bd8fd0c753349a967bac68b8403c86b0b95b8016fff287dab6cff58ae8d82cbcbdbc439afe87bbc5640901b808949f141caef31eef9f55938bfdd376c37190bb92a93a2c424c0fdd76aac67963878a41c8ce45b99bb2260e88df6e5df6bda977253b75d72c69614bfff9ba5a7148f8ce6d32aebc5ea11d4dc867f322775d1c087b3d19c8ce68ab5a2dcd86db026b582c3ed5539ab9e449f27f62d8b75507ca7e786c84093d97d73cc9f00cea0ac406c7b8ac79cd5f9dca96ebca6dc4323bb3b97ec47d5fffed9f388d750e15d683e73f3126b0ce605b89305994f64ec37517797f05796653e0c8d21208ff810b9aa43950f4fc155090fce39d4fbbd1f1c0f6d61072a46444d3d3d8f27eb834eb0c45cc7c0ec5df959906355802f53729c53bf88aac737ca759a9fbd936a63c0d7bc66be43d42f4abd86c6e8ff2646520d8f2093618f34c0bd9186a35946f5cf19d139e4fa43e4b6070e0b9dea24602752df11d10388be3c821c80fd9ad6befcd80eee54a71065d95dd4b9d1b784ff1e1783fbe4304803c3e6b8fb784705671ff12e1123b4a68e67953b1dcbc476c0c656d689cb0d1db8857fd1582695317d1cc3abb43633a26fa9f528e25e633e843f4777b647414783dc49bd7bf7ddc534708316d143c9bca1fe26d42ed1bf097bbcf6fdbf300fd0afbf360fd9559d07df4b834fe601744d711ec83bf43b641c7ad859b442ad25ec897dcd9ed82b7b625fee8921ad7f28f33df2d0340e90ef3cb2db412d0601d84fd8178c01de957c1d3e6e6efbefb8eec6fa24dd572b323f8e5253a29c0fb00fa5f391d1fc6b3c1f8ed9bb0b7b22a8d91381b22702614facc34ee99fe56718317deb3054de882cc63ee0fda5c62acaf1729cac6fc23e916b9cb92ca57788abfa2aef4954c64a32cb9c1d7db77b8098b937e8f89ebd57f7128e4191d79fc9d1ede7366754cb0158a77bbc24ab1cf033d3308f338adb28f921271dc51efde85cbdfe962ef247054b4e73c83e2563835ccb50eb026f6a0577bbe1b90fb06515be339a7bf0d9fdf214df413f5f48c68eb956a1f7a5bc47c627d11c13127001b91ca8e390f735492f60586d4a3b423fc15e15fb3d0b491b349652f3f7c1f73f753aae2dcb5d62f33b67dcaad0bfb18a7d41399ec3ce220d8743ee9ffacc4f21639c7cca7db6c33c27e11d364f4a2eb75ffc1e3f985f745fa09641e01729ef9f29e5c7907849fe10deed7ef8eeaaeedd6e29cfcbbdf393ef9d2dd93b533137f667055392c6be614eda979f52ee21f4b9cac3313924804158c5b22b7d2293a25f8c2b6d5579382687a4a869ebd7a76dd5f0834c0efb6abfa88f6523e6b86e659e90c9615f087512c4ce3bc27a6cef55bf6b21f9726ed6ab25fb1fb272cd62d00fa79c1b84cc9bb8a6c86b3ce53c20a4ff02aff12d368df31c63a2bbc901ea6777933c5131e476a2fc9a1c6637b0a525be90299997dd745b8b71b19b6ebb1de09a785a57ac05993ed8f7a6cb2ee7461d8b3807a344f01fa36c795f0af1cf118d1d6acede292a7f2fc24e6c89be693cd74467b06f713baaf80662b3d7f2ddc7608c7521b579cc0edf2faa0f7276deb8c42612fc499fca5c49567f9a5f0e1c8d8a3cac8b1f59eef4a4f24b5639f0c47d24cabd23937b3f41ee49b2ee28cb3ad927bb73b593cae14efbf351bcaa3e46f18e7b44e2b8613e51255ed3b346fbeadee6b13d65ac236cdf2fc87e3c8b799ee21e5f45a6b1dbb8dd923361e43c0377e1613e149cbb5f22278528ebd79d41ea6bd935789675c46c2f8ae73fca7b9da50e737cac7226a66c5fff4bd8b38a5cc5180db6f33bfdc179906233642dbd591600b688fc77dabe9477d0c8f3653ab9ef39e77834dd635e15cd25cbb3d6db16eda24989b3ddd9984e6b633a05e65706a798f235c77996c580933717f2ec04fec0d1200d4cf05d7fb35ea777a14da28323860cac19e2a393efe31d2ff308bd6da5b8f0b9c49502fe8556941b44d764dc244c977ebe15833fac11dc51dde9f29e00f7d4685f10dd959cf7f762f0027f5f0dcfd6283a5b66c2e62c8df3de291872dca66fd43628bf3d22ba67803a25d5b7446cc1d035ba140b280fcd5e471d13e673756fb13ec8c2bcd70eb42489600f604ea2ef05b78dbbe0989a6bd3d80347d2f3984c577d610e9c977864a7d66876f7dd19c4097ccf16e2fcced31ac5c09badb6c9d61ae71c9e1d6e2017143903966e77178e9c7db07ea47eee9ca3e7310972e31c69c23c0c9d175f7bb469fe2df0cefbae9d85c8df2cd51d618e2fce55c9f11691ff7e61fe6fde065b4bf771083bf62936d30bee2936ced8f4dd592bec58dfac11b1311ca20f6501f59d725c3713723f52cb6cb7c3d1e214998f93af192de4df0d521f38effbc71fbbfe09f7b7f31221d7f38d72ae038f29cfb9813506be6562bba4a4bfbe94eb08f3005cbfb137c0b5d47aa47f57c0efa07e22e12c1019f2a41cce694cf6b2696c43c87b25fb614dcf06ce3b9c176f0ab6e8c66da7a13e78123918205f4db99e23fb1677a68d73c3fce4e1c1b9a02d06cf9739ab665c6cdc05eb3fac7d0cf9d4c129cc9dbdd07f56b3718ddd168b479d63b77da53620cb2f3d218f889c0b20d962a5af93d642ec93f74e4b38735457394cc9d92dc20e39b3b35b08f5a0e09bc842d3b910794af70a914d8d73e0436d38e7ce177cbb641f20968a9883193dcf49b0ec1e265b8933269de883edd83b97f83de690d8bc2d7f991c620df54dbb80fb6fcbf9d43a31d51dc97d81f12adfed9e42d76805ab9a7346ce30e5dc05593bb253724e69de95c8f520e44bcda476c9d81623a7f0718ebf59afebfb54dc13e56fb88ec27b16c6b59e28b79cabefdae780ed0fb17dd780dcf06699eda49106fe6dcad19e5dd83737ae9f046e37f5f307e59ce1bf678b3c3bc7a653bc49735ffd9d62a39e2d53f28df19805fab9986f4eda0b62bbad8d69b42cb3197350986f21eeb02ed7d09d93fe0fc41a26e1b7c43feccb7b581f486329e717da780bb5978bf82e6f0ff0b24b1b87fcb671db97c05d9c483be1680f7de6fb83e50b8e307f1a6b0f06c8f9b36a3cdfc07de5d3184d79cf2ef03dbc2f9fb1d9bb7f704fa7a1f9d8faee8ce83f57aeb78f88fc461949f733912517658dc9fd7e8db4e016e52d8efb26c88ada75167e97fc55e27720eeab651ab91b2b6767fb0278b6c1c13953d9b2db907b41a33151b8d3454c319075fb8d37db113950de618ba705f9a85c0713c7368af26ccfb890c6753e26a883ec96fc49afad24f0d256e076f7e3d1a537d10764cdd2d87db4a262b1976a3e80db00f5ea0591bf43ce07768ff25e2bec2cba91b9be4607a7c2f13ad615de63d3287cb7fd446c0cb94f126f1cd7d5010b218d72e3a2f8bebaac0e91b437c9675d299e02bc71355c72cf7a9f9bca3337c9894e951cde0eccb7185570d079ed17dac8153c55fc3ef5b5513b5ab041e0ce68f059513edb76bad11c5de6856de6c9b45ebf27cd7cb244f7e4fd7b99ae8ec994c787075de5df1da84b5ad21c2d3d39715e47e0db9e754b9f4572a2e7429d9fadbfed1eb196b87f471fbcbd059ed3558bd817e27c91fbf649f32c9f637dcf732745aec33172bf2bdc7dc27daba75958e1c1ad7289977172d29fe451c35949fade9d3a8f5a9e4cbe66d57a64b47360ce7a1cd371bc25bad5e3148f66ef881f32cb42f381fa34c8de19d12f5b1172cd5d63b7bd053e41e030ca2e58e3f69de871e70dd111c12f912a7e58e71ca20f98eebd2ec4b7c51a71f4b3b06f5570407681fb384745ff27cc4b0e7e0f320f9d0afe77deeb48ef639cfc88fd5b3cd5e741efab791e794bfb37f6bd729ee41a07daef0bc4e12b7ef7761a9af7639c1b67a50605fc11e4ef640f5a1817aaf823b8ae45fb46eee831eab0a8138af18ec61a74ee6f3a411ef0276dc93e0e382b17a22f43cc0ae656add7ed333d9cacafe6bb77652f57f343041f33cefd284843a5cef44fa7ce7f22f99818876711543974ce8007b24c497f141f148c89fc1dc684f1c94a0d32bf63553f09d41c40bf957ad51aac16de47d778a9f3b9c86d75a5f163bcb09dbe63ecb4083bf1b35217437d228d73d8b01fd08ffac07b2e37ce4abd4a4f1c17f7b35439146e6bf66de11e83fe3c95fcf316ec2fa52619ff66f135e8ff3fc56f44f6c637f56f6073515c583247387e66c73edaa1db25b22b8bf235cd37273abd2093115fa1b5317be4ff35df7db4ab9cf7291b5bfa036cbec719f1227baf306ffab0fecc96e700df7f2abe4f3a0773b035ab383f14c37949d65af8066238b3396cd8b351b916f0be92e32ec9385f734e6129536fb4df826f9f9f598ce1b7e9b8cab5caed2d1d873047552c2ddc63b4efe26fb09f8533b10bdcec3c66778ffebd72c6688ec10d6c93437c825a6f6fc6b874d2d85bdcd03e9bc29e8ea126047c1c69609eda11707fce7661c7069d241c65e2bd780ac04fcf39ba3b3ec4a1fb676b34cb701e20f767e7bb9013b68fdd59c6d69bd6dce0dee4310f714d71edc65b36ee177627d6d7fe8f6617d01fe9fd21d7dc716cad038dc712f977e4dc0ad8b7137200021e1bde4da3d9096b548d5f6857c5e93bad8b0ddd1ef0ffe27eb82791063644d732b3966506a7e8306bd5ca273d7d86cbfec57a1d9e006fd58c00f3b2696c80f1e41ae750784f953dd2bce9e93928caf623adf559fb4ceef3f73e926df532fb83fd60f620df202672db5dec3f5c7ffc46076aff96fd233d833fb98ce0f35d779f827cfd13c6bb64739654ef67b6178cde19f3b31e801b45f42acae352bc539c91c044ff35ee17a760fb21c8b3829c8db169ec83d13421ba2ef5695d88bdb5f106e78d3ba375f399844ba2ec853fc9fa8f8bfe03e256468facf1bf7e2c3f1827f22fc3fef5b407e0624d97fbca1dd77c8f91b9c2fd3dc6effdaaae79992bdda45b28f9004406318c9f1eb30b2605ca33b5069a8c8d630abdb690c35ee732b5121393e33c80ddf094b086415e3be790628fcb352d708f90fe594c7fafd4582af75879df1a5aa865fb920f4afee607f5664c676fce3510751d8e3523d740a8cf4594139de666fc198dec539c1b2d097352c4ad15f466f22e6079f3fb08f230ee61073172ebef23fc1ff30b9375ade852ac5d25ee84733bb8318ce7698dae5a53af7cf5734bc8536371dcc529749d2b70ca1ca6c77a1ec9be9cd359ee1925663398b31853dd1c634cbe0b7612e41cbdd6dd23985f49f7ed2f6bd457e29cca79e0f683f132967ebb27b13a86ca5e95f321c4b333d107f23dc7cf6c591329d99306c6d47e2c077ffc49ef3ef45bf70f7ed1ba4f5616b91fff85312d47d55d11ef43b1d730773b157ceeaa8ec57cdf302e87b4e116f16eb28c00f338ec80fc3bd07f1379115bafdfd11fbbecf3b888a06755ec19d0696afa05b61ab517543d8bcc23f8f18c33193be20be6bd0ee20ae2bfc97b90c744f3ff4abd9e722c98df315f5d9773d563cfa6398064cca24fb25b83714afa28c767798e158fdb2af69bdbd30267715be5ce4b3cc46f28b6dc25ec049963f6de022f6dcdc9daeb4935af403fffaa8bf9937103170ab571d53b047faf9e69327fe3e25ccfedcaf61bd817c3c4d78c1de851104fa0f9f8cbc1c577bb6de0ad17fc44128e26cdc5085e6df2ec3c44dbe10fc9d61273228c1ecfdbf0b406d96cf4549c68ae4f546473bb77aac15f2bfc3691758a5d27c4ad3c0de20fb51857513e8371109b653cb2776b90a9b02f80cb54f4bf83df8d3d93c31ea93c335e56f406a29f5d626fd6b2cc348df375e27b73a2b7a4448f817d0f75c51033db07ae7f088caa6cf43a748c551d929ce36f96d4f7478dfd7cff26f55dfe46afc197f267548eb5571d6bd37d95113ba61d1e50e6c159569ec3f1109de22ee7128aba22d471af9331e6231ce93b28ef8c1edc9f285fea7535e11bbfc6cfcabcf51afc3eb02f846fa18f558a57d67deffb0db18ce7648e505e13f9a23e47fb0debcece71a6dedd1cd307da190bef4cf481b026fb1a9b42fe862c13aafaa47c5f31fd785e84ae0175886ebbc7f1f1c67a16435d0c991b653e41e637f7b391735a96bb71161bec2c8b38a9ecef298f254ff47a4ccd77fd9ebcafe439459bd6a1985af36bc8707674cced0fdc07ad49ef9ea2368b5124a72aae0bf77fe73ed92b922ca2b9d79a83b840a338e3e7bd56b6429e734b92afe5bd04e794ccb5b4165a39868d3b3f8e2b1ce67066a93cace8bb2fc8a30bf20ece0de4158aba3be2440afffe9e4ca1f6147dfb8aced615dbc3fb9bb637e43998bf549d6a02dcdf67b03bde57c32ff824ab7e14f49319edd8ec419cdad78cb3e01fa9951d744f1259505d5762d755eff58a1fa3aa37832e0a326c4c6d2b96e788589ce5bfa571abb97923e428067d4cb5d1d89a0ca5bc56d23ec655545f8baa7b29bf7f3a4e05b7b2e43f92db797f3d26efba7ccfbcaf8ec97b439c4794ef3456fe1b712976fe2b1ccd650e81999e989fd5d7d274e3764f611e531e795ea32bc665b3b2e6b48cb74bf110c4f6079c17312f01eb79b1eff80ceebda8b3b845af4a1be46fa8ff618d495dac3d7b5c998ee66bbd6bd4213a2ff9cd8ec22dbcc3310bdfb6839b9f9f32bf33a739efc629ccc1e773aec3315462db6fc4cefc0763db5935b64de5e0c1b9aa98484cd6ad880dfc37e2de723c1bf6cb95ff4d8a493be7c053fdf8f0b73f68de0bc359a4389590bb78821c2333bbca796f0b99179ce56db0d83bdb7b9d3d7017fb9ed30a35627b6690abf10e790c03c4de76e734afce790adfd991fe11db0bf2df3296eb015c3e4fc83d590eb2487b00af20fa04bad9fb68ce383b529cefec698d6659740820c72e2a06d9bb695c22f391f17d07727091b1dc3ac8a7c9818f0db005c3ce208b0ed393901ff424df88f5f67ee3cd201768e2c2b72ff4dbd7b068337def42e63e6a4b31f81de49f8bb1910e3dcbbc4fdd2c74b3d6588f798e06e21946275a0f7887bc0dccc9a376c4208df5fe71aadf93297281e2f9dc76b713b0c388cecdceda348935cc09029b95fddd10f1b99213d12bc2c3ac45e401ad87927ea73e7a7e9fb37c538e83a4e63e1cc4f753e12cf68f0adf5b55ce8e926fd66b5fa975efdfa51817c4ce4bffe9c68d0f81b03f193f09cd39ca7c777664f99ec86192a6815ec5efa6772c99bfcc07dba577653cbc16af9f9e5f43ad9b096b867274199de5181bf481716df27703b77d8af5e4a0f4f5c06203f1c83e055a9c45657e13e434b1dc59cab3c6f634fc1691f342f301c91d1069691615d967fd86776d0907ad0b7f637723ebe324772e1b6f7eb4355186f70fecb9721d412e5139333bfa901bda3d40ce5151e670b13cebb27e09b099ca3c25e43627df80f186cbc13670831be3af795ff271321e0249c64f0e44af58dce251760f9638a60fe4ebdfb94f73e13e15f1e11a733d43d7b8c319a335679699edc7cb7eef07f5996e78dea3fd93ec89b06389fda67967d91f825efe0cb536d147ff60feb8f7bc770b9bf3e8e07e82679683339c65c4fb04acbaf16850849a95c49a718df541bef1c07f87ba3fc6d8c8732796571fee3efe4e641a578ee58aeb9a11f9158dec9bbf1d747ce42c3b615d1ffaded09620cf65bf5d0f1016036de33a9dc8ec1531cdf3e5fed76dff29e699462c971df309f38db7f86ffeeb7ff35fff9bfffa7f34ff15653895e5b9e06b31487f6759ccf5f3b48a57aeeadce0af013df21ae8e91f7f021f9850cfb495f045a12e1c6d01f55bff33b680a0a70ab9a6f0db95eeeba35c5f39b845adecb9c85f90136b2be6af8afa5e992725f1676ba2cd2bd455b41b62a1529b4df1c2729ff95aeffeee94ef8c2b5c112fc7f1f2037eaa727c4df99f0d7d936bc7eb62613c8e5aea59e2dd10d6c457f7beb7482739e53f94e3c5f7b0f3518e118b7f415e52ed784b7dadf469f2dfcbdafe1a5b21055b4bb47f27fa40d2ef995cd82c2b75eec29906eea24c6c9baed7a982c5c7703714ffa5a82b7d3e176a4caf5dc7b52ac7b4a98d416b98d833307ea6cb6e981f82614f714e79227b8d76385a3c6d136a87a9dd179ce2d7238d3596779e789f8505ea5c14a79ed635e2fd1e89b5774fb1f60e741faee7fcffa57691dda36fcc77dc3c667ab7307c58016f5eb445db52bb64ff0d63c0ccc01aaed9aa2fd676eef96fdb3a1de72509811ba151d721ed1bbe37c3bad1a6fa35aa6721aea501b570ec1e0ab6832ccc8d6d683a7b5c13f6bb636edc472bf0ac6fb2cfbff27bc3792af763c4ebb4073d61eca9524706b58181e9b402cfbe903144b2fe2cccf7ec18769c73a003ce205fc3407f49aca1ec87287f03fe096e17a16ec1c6b22ee717dae8dec26d5b7c97b707f9a0a55f94fc760add761698199993f3fb92d6722ab599c8cbb178b2b3eabb8beeefeb40f81eadd723b66773bd9e669c43d34e7ded2cfb453b8b5b847b48d495be296b51f86ef719e4bd225c726c364136d6ae738d6c421b4bf80ed19d0f1b62cf6dab6767b21d3891e6e4b17ba77e34c4f2a13587e7b01349788f68672c4e913623776c26fa949af5283b0df3c52d5cff837a54d1a447a9dffa77ea51582b24e685bdaf7e5bcffadf5d9383633804de82e54088b601fbfb67f24ad4dd5e689dcccb74d9ffa5d676d09c63c6417c449c0dc8f33b89f536c45ea271b5645c308c0e9cc3316fd3b80666ef42d67f8cdf3c8eab18967f34fa33bfae0bb179607ebfdff52d7199f6633908e95ebdfa6e3b7bdbf60ffe0164546b43f37d6d9af3b071dbf7f0f598ccd9ef43fc7d55c6207a139de920dd3474d7df2c3dde6d3c7b179aeb03ce277230bd6d07aff87767ca630087d699edb330372ec1ea98d8daec16e6c0cb576cdc69a58d50eb022f5f9467bbcffa11766659652c5aef19b0b36d3cae442ea8f301b5dc7a74a6356397c8bc7fb386502ffe49df413756fb2cf9101bfa7a479cdcb9fa2ec5cffde4bb1d2ab3964a9f55b949c6ebd4c8d721e9f763097c629e9d45dbafca57ee97969fc97bad8d1b200e017b96f15f519ead8072a271b97b603663ef6e2316932807e0ef20673bd2be6e6d46f62d6e6597a0e514d156c5305d20be89db3e2c3cbb10e434be473148c96f61c73adaad61b2319d34301f590458015dc6b14beee62bc5b328709e2cb2a7d240739e36bd3f68fd2bacf73a873bbe083ceb1a916f99bdd6bb3750e2a40287ac636744af887267bfee2cbaa1b9fe46be1776fafb29d56fe9bc7615ffc935ec2c4ec1612fc54068ec117fcbb39dcf62c22c8765d4627be5baf1e6956f6dbc9915b8c61e72c29f721c56faad48beec878b4cf01b2a6b46bf7718547fcb14fb67682f23c47381b99e67f67d921b0559e3b596a691e994b9aaaffdebf489efc273073b0bb4ec199b4e3187f58e571bd3b8d3fbb53e968477531a11b9df9e1d7d6f908977ba5f6de78f3f25df065fd3428d6dceb5de351ed9a9df61f1471c07d193e13bcf13d70b3126073598d89762d0da50ec0df2fbf8b57f863a09e023947c56adb013a751ce305c1ce19de1196a5d21c68958aa4c9715ec3f7e967cf79ef8dee0f496957ec3507b9c372ed861bb8de9ec36c5e085d8731887c57108d816b7d88d8f73ad770ecd0c384351df75f6966967640e306e8b6d4e88fe5ef0f8c03540dc608df1d9a03fdb4e63b237c9ff97bc394f8e9b84febad698cead6366f709b50b3896f1612fc466e314720eccec19eb69169871d6f4ce441ff0df011b6909b55074af2c4e91a1d44def67b7d07c9c286ea1787ec5df8e9073b504ece76f44df21ba7468aecf4cbf479c99de957f1f7362ce02165105b38b62db519dfe41ed48cadf0fdfc13c98c9528869c83e9617a80f56fb7080dc1ca8e7e5f94d653f94fadefd83e2b0a6e16176a6f6f2f51d304f11eb1ff37a5a823f421907600356c6d1454ef5721ce3a2711c27cc49803520fae177f2ff50df374a921f4436bf5a90bf0ab87be4df4ba877eb5aaff79e35da173518a3accd8abe87e316edb2cafd24da6c70762614ff7b02fe82f84cf6803267d5f535c8fd82b1031ccf91d7d611dd99eea11399db77a2ef32fd55cbae63f0793f32b536fadd696cf3b9715f8436cf529bbed67b36b669cc76be4bec75b297d265d8016cd63dd67765df824a1fc4e7b3cf9f37cafdc9fabd069e7607306b2b7bef55fd5ee5fdee87efafaaf79e8abbaff449c5daef3a659b19cf55aeb11d2a7bc9613ca21fec29fe4c7a8f47d333e74da1eb33d1d5b354f1ad9271cdab18ae2a5e9f8c531a8d160a866bffd78f65bfa8cf31051c8d968ce1cabf8f7991a3c5d3d5f6505f263f6367b131684505728c8effe2796af0b18b3c00adf568c170407a8aed7a472ed6d93a6c19353a285d83f6e246f48e31196b15abb508a86df6d7e7b89eff3b6a9c5f3b8b75366ffd2bb97722bddbfdca5c34cc03e8ca816914c1304e91935e9c8759cb47dce5fd4233ee63d3d907daba56770cdcc5215876ef11eac147bb8339b476b1bf4666e042dd36d8edd0c6351acd5aefee231beb31d58fda4fa25b04cbe834390c72076a82d7c978db2f1afacee2a20351d753fd3ccc6727e98fcb14ec469acb7715d700e33f3362ab5e8322a5bf2bb577a69363dc42d2639faeb6c882bc1bd7d7f7a9cf123bd28995fc42219799da99f8ffa20ca27b77facd32ce97a9fef2982defc964d5bf4e0ba273d6ff7baabf3c277aff22fedb5b3ee49a1cd467143ff45fd273f85ddec00dcac640ce8f721653c18fd9669cc9476a1bb1f738d7d018f48fa390bfd1dcafb15aab5ad52fb0fd6146eed97de00c6ee1283b845a97f783cf81d93b0126f7aa0103c4a46dc839f267b9a6de396c86e2bcdb5bae6b4b6bb3287c2f52d605fe76c4bc29e725d63f5f972facc5efccfd477752a56e80d9548aed6787dee03cd6e37ba83dba81d6bbdac55e1e53dd3ccbf328da0ea28eceff5e955bca5ac9bca83dd1a71868804929cbc9f2ce3f637cefe5549151268d37acc5f1ae8fb6d6bd85f9fac0fd49b4a68dd957986394e5ef7cfdebf609c4304fc161cfe781d95561debb45a59f579c9b6f8167df366ed02d7dbd683bbde74e11926f526c56cee35d2b3b93433cb24f748f49e3606bf5b61d84207f56ebb3a5b7ee93dd94d8adec7fc2df67b1e85bb6f47a995ede11d1d9d263229ba95e107df69ef06c1be23c7ec729e2bcb1dfb2dfa07d96c6ea2dcb3320acdd351ed9b79072c493b113db1fc7efc47caeeb6ce9dc7ee5b6335f937fe6ac2bb6665d7de19dc85c38b74569272a3a28fab50fecdf5f9031557d70178fecf31aeb89b1bd1c70a58b507ba08ca97278d37716f5fd5ba6ecf7706a903348eeebc73c36ce0fef0bf7d358d1a93e944ddc3f6a5c82a5229b468b27da0253a10ff82d512753cf9b9c0b53a75749b6aaa2a3a18f036220affdebdbaba8fb7de92c8967a215b8cd67187d58559da2fe6c0f84bdcef5e78cec73b720cf0ddb54ff68897a08698bea23cdff365ae75a5929cc23fffbd76d8833eaa20eaf872f75881aacf2d1a2d8388316c51054ec83df393bfd5fe0efd8963ad2d7ec1c7e365a81ebccffbaee345b07eefa1fd09fd056d9b8dd27915f889f087bc7a635247376a7afd91d3e4aced6687f2ee792e7ef7cf5bd2cc0f76af3be585f847afdcafd289d3df2b722dd855ab74574f0dfdf339fed937f9b4c15f7c0efaef917f5361633b1b368db95eec5a5dbbe873a1d470ef6c9698c5c01d9fb682eacef3d894d272376b86ca37e494eb198e4a551dfc88dfdc6739e6fdb3eca97aafc29e4fb78ade81ff3764516bdae519ee928b34a1b49f29d8b7a26ff7bb94f3f9be73bdacb0edac8cdf612c598d0ab7edcb70a97c2ec14e5b373b0a676c752c048347b9df1687e056e04d2c7570b7c80d437780f3bd131d6bb5df435de93e9760f7e54f1f771a3bc80383addd3761a98599bacbbc26382e318d927b2170459f174ccde203a58473107b83cf778f7b267d9f904dca16dffa7e0b7fe684f9fdeeaf200e91e595299b1367be77737be85193fa7ec1e21f725396b27c41d55e6b9f69eff8fe970ac6f5f9603d1f63fa71fb1f5aeae49f7a5e66f30d7f23e226b0cfbee5427d323ce4fa1d69cd2bf174c57aacf138e84786fa0392d6ae750d98eef4e0e83673ccace60f7e03a1cc6cbee3dc8880de6646c8dc4e730c6185d22f043afc9f3885bb8ac392bcfbfa5bfeda2bcf78c885d2470ee09fea1fb44efe3ff4afdeba9ca3cf413dd93a9a867e5c63358cf8ab0337baec83927f2fc59abcb01defec6b39fb13e38faee23c7ba41c8cb831c32dc670edb53b2bc55f44bf26f8a2300785b9699a6a1e953fcda34839cbece02c7cff2762499be28f550b3da7f4967ecd8b7a8339b121b17ee282eb79bef78ec5b7a0a0e732ec3acd1ec26732e2c4e11f471965926d1e3e3acacd7c33ef13b0a780c17bb8de93ca96f54c1e495b1a5e879defade2c9b2bfd9f1c66e78d3b93707ab94f19fabc60fc14445e88b22599d09860e55e19ede1bbd367d5cf0f9c60af6bf15b77b7b3bf236ed1207c5f0d628c574adf569f7f94cf1b9f3d5f9eddd73ab9fb8ffa30bf10abad95c3ff43fe4c7ac7527deb77efd82f9e85ffda0dffbbed06bc2f5a0f72af7c456f509f3fb26f8afaebf83fe87311740ab56f55ae7db6ef9a7cb19d200b968d7767fd1d59e30fa9f5f7fd1b7c3db395d5feed316a545f95c759f8eee2147bd36feceefc9ff7afccab7922bbcafe15633534bf77708b8bb4353924c964397899e8fd622ce61033db077256f668fbbcde65db484f9bec0ac0b1a56781cdd959e255fc30e6f39fb609fed6b992f324eafe46d6589e0bc0d9076e80ba3197fc5f4add03fffb11e3c60db55ad278e22c1ed29c301cfbf16b31e77b3536ad613b130f7355c8f38841bdae5bef0a77dda7f111d3c9ece22ee40b50992debcff78a1eaef83dc57f8bbaf9dfb57ba6ff986fbafff87d993b7bc4ae517c45ee4ef597bb286fd57fd7fba3bf1c53da6f5ce3426c8c2fac95d0a78658fb6a5df583ffb53be04b7627d9a7bfb1af7f7b0ffb5a9ac507fb166e3fb52d2f957940df19fd7f4bf4a7a1ff8d3dbb55e7f0efde9fc4ceddb76be7e66fe5a3e09cd7ef7599c7729ed92c179ee3dcae47f66d933bbb581f5cc28ef30c90675e5f1ffafbe9126a957e123b79e9765b613b38055e7c0f3b76ab52b36452ae5823395bfcbff70af737d62731fd4dae4deae5c1619631bd0ffdb7e46c2c5e892eeb03a682fd1a9a59161ec8df7a4530526abf591bc347466ce01fcbc12dc88367e02d9eee73104bbc4b5a90479ad37228e60afb77d43ef39c308a9f0ffb5579a6253f334831e766d69d1cc87f272789df17304cd8efa71bd4095539818fc21c127d81f57d1ab8416bbcecdf785f30a7f53a3924274bff4e7154c4f6f64a7b7bb1bd75d8e9c37bd40744f374c91dba27b6f6b750eb5dd4ba20b743ec15c4df6639f4743f01ef7630041f7b0a359b7bc61b3cbb851d7b5fc92914307731a789da791c33cd29e67babbe0e80ee1d614fe8f39d521b4eed89f2194b8def623f77726ebddf9953cc40fe1efade38f766ccf6df929c09eecb60f96a2013898d14937d7b8b8bf9037503e0376ec726afc5388a632d7972a93f049e71981ca8e4bd11594073d08e545faaadc5f43dfb19ac8373a819ad317d0ffa630c0ac4115b749576aab922d4bfc3f96779bd09918370cebea97db23b5c47bd84a693c7ba500b476b03ded87c3928bfc67a5cc61c3d9b71409ecbfa93defde37716b748fc8e69dfe2d102f085e4f94c0ea5aedfde869d452bd45a87b1538e9b6383e794d3f22b63d6ec5b44f4c16dfb4cceebc4e332bdd48d72c0d9fce8dd02eb1adbb4f6519c37c42f54c7c2fa88e3af79ef8379e0efbaf49965f97e992f2c9c27dcfb029f817096b65df977899f5ce1116f7e976191fe51b7f79666afa05c7874fdba30d790af5ffeade05ce5827cc6fd18bb541694fbe640e64daa33b8fa79af159b5c064a7b81f581cf5d8e77cdb8186c89ac83faacbc32067a5f13d9007246e4e83faa3cec655bb615762ce92e89dd2eb6e52e3ce887cae1be94e7abe15d4b7cb7c43315e6b61dc8f2d1e4772af8cd8571977359331770fea5b580f92ee781dcbff2fa019e9ad8069cfdba3a55f51e2077b071c1f3a70f483b676be45c239a73ef1477690e263a5d17ac6164ba12d37d4e21d1adccecff63efdfba14d5b9f671f8033d078f62d9777ba85820eebad592dd9940355882bada2d7efa7764ce24242158d56badfb3f9e778cdf418f2e1542c866666eaf6b17f8cb7c219e4d74dc16468fecdbc78262b637d77d69cfb79461c5349fa9dd3cf0c779dc595a0c5bb9a677313fa29d137bb90cbc3970352f196ef268fe332aeedda93938c6ede535f1e642bf64bc10aa6ffd08890de4cf5b551b556e29b13f427f9c91e72785cbfb15b77a9708fbf170ed5e3b30d223d3b9befa6e753d81fb738ed19ed8dad607d46cad2b6cd037a37b827ef9f375d4713f362a0fa7e19ec22dafb113f7a45043a7ad91a776fd3c23f646681ddf88de1b7ad0df8772f65fc89891f6bc760beb5287af0c23ea1cf8e9897c46bd9f7ccea4f39eeb8723e712747617fc2ceb901bdb7a2c90ff1ef04e400e6ebb1fefabee21f0e743e0f9efb8645c19b7a4d83f5a5b9691793d44c61df82a26d55ca53fcb7e3937fbdf9c61834e89f57eebcd689cc746768d6ce08b3954e3deff5f6798a63fb6e0e3ba3a23d073c53e20cfb9b53cc485fbd8d8bd13d4e198195f97cef07bfa03fae034f4a17d8cf2f97d09f574fd9ef39ac35adaf84b8913352adc2cde81ed549ba337322795be0578f29face91a7fa7c0a32aaf4b95e354c64cd985afee295c0177e7c919b1f7a8614b91df2f1b7ffe03f09a541c79bca67a971abe3e9791ffe13822dba445f67a6cdf911f9ddc276241377022e138221ee94f728dbd563859c81e762ef1c87d6c2827a9c421e9ea6a0da477b4c01764ee28c74335b79c2b0f781df8f7dfe535d03c364b8defaec27b742fe278847e768c3bc8ad8fb183da3d8cabed1631eef8e2dea5f88f59e4add3f76d9bc8cefc5de66e409ea66a3d8ab6fcb7a907760160404cbd651e531f00f58b20b701914792afe0700eb81c589c43dbbd51ff0b8de3437da130067f742ff04890b52dfa78deb7ed0f2e5fccf62ef407a86352df830eb3fd190714e9dbf35a23cdf8e5e7a3bfea1ee3168ce3a18957c2a1ed7b06f2219077a9f12f09d7e118514cb9370d5f03e0b2e79775c77addf873387f63f6b7c0abf8b31c3ce2f5f2187716e98fede0bcf1ba6ff4b3e6bd402f2f43cffaadeb9bcc01f109e7d8b3bdbba5f558b086543e25387f61ffe9c7497a07e08e637f4b3c9bd5defc26edcd6113ff9284112fe5aa41cd770be44d1d770f6578a7b23d28de5a07b0a27c8615c3e324f5f34ae111126d11a92d66831c26553e2cd46b8be7a752077c00aea291c0cdf021d7826e901beb20722dfca8e1ce55bcc622761f9ee532f71be3179baee0d9b5ba63f6fba484dfafc8715cd5d5b3b1207217af051fd16163425b5d6c6b27b4b583b63666adad2e6baba186e7817e5bd46ff0ec61350ce747e8dd0bd4b360be780d1c9c7d2a8746550307f74f8bf921f4e6bf31a6bee03aeaccbcd13c95f454cdf38d8dc989f1af696548754e53ccabfe4dada36ac2a5d0ee4fea57d0614d12bd3230ce7806d6eb1729b7509fe7c34cf3de2d2e7203b0ea947a4fd09dadde6dba1f3f82ce384becf941b986fa4e2a2ec02ff9a1554e6cea33e47dfa4a6e99d206b37d894c91fac4394d20362bed5dd465da80ad1dd9f9ef7035c8a45ca611cbcb1b1471d13b03b7c97e59862a8f0ddda3eb0ef8c1993cf98b7dff43276f868e7cedd051b9c6cb808ffffc9af8e38fda3bdb490bf979fac4062c4383d5bd56f3539d17ca5e074e7fa297006618ea0566f208bd84da4d31e69c345c978cc619ee81a7d71d023f7f24b6f5b129b5794437ea9b2fe3b29b45f69d7c56386e1aea8b894c2efbdfa16e58e67e4c278f16e4f42a3a2cd3cb21e7c72df28f8dd73d26a35d95230535dc793235a15628da80acb694cf63e5f39c7c66737a441927ac0732d6f2390f781faeddb3e1f9b60bfda97277681d34ef0fad29973f97cae787bfda69796e026fb92336379505a28da0e1eae658f612075f4d5f10ce5e890f77347e4c0bdc671447a8f773d5df0785fb6de3b9e5b8041e4c32d7683b02463dea8763a3dd8e46cbe397aeedccf3c80ef6949f4dffcc4a27d5e698c72c676c3fbb04defd14d3da79e1ba22ea38e984e661305e3b9cf335d139c5357b896cf712769607ba367bce7051abbf444cd7fcb2a0eff82faf41e1f352f9ecfedd35ba4c3c6b1717566be3cdcdd03f1e43dff9aff775b2d2f19c812fd522670a9e3137ae33fff3b3b4e2f322739418eb3d391302e37e051e6ffb3bcd65c57cd560efb6c83911da2ffbc41c1c36fe22ddf88b1360ec78e39c72811d13cab341319874dc8a8fb898a11e5ccc408e12591e1bbd765cccd5f3b815a2ce0cffb36b1be47e16e798b748daaef421399f84faeeab7c253c638fb5b6f69c373e12656a85ed46cf2786ed8673f0f2638b7b84e62100debb2772488d76df70ffd29c09c4320dc57a649a1784d7ede765d0c26b17528ef5a027d6c98838796c7cc62247e228959ebbf4babb67fd82dfa5fa74acbda0efd70a3b4bccb568e1f73cf760754bb5e365b48fa1d97e441db70c0c864188d7bc0f0f2093222f6fe853fb185a3b719c311fedadba2fee8c3f687ec340ca1b1fb54e8e0e73c14cce1b6f717e3e56e4b9a98a0d43deffbcf19ecc19b96fb4dcb3b5a7cedb57b144d81efa0a9e4880f118ba6ee7d1c66de9f2c3b318754e3577ece1198a5fc5b64a5af785fcb91ecf3b019ba1f2afb849bd4e49cc09049f80eab3a9e26b150e888ee78fda3c5db53e9ecbe3c01fbfb11cc578dbe5798a2a2f20d47d6fbb2f53d9afd4a5df77256c00352fbcae47d3f384db4fff67fa55d387047f29d8474d581635fd47e0b044ece18272ea331d230d3be32cb6b3c714ce83650bb185f1bc883cabebd8d647327289bed075464916ed176980790197d09b579c1a2b818fcaccb6536326f8f877e9c6b68c7035d8c7859b25805f7d386fa06e314de3d1380fc8daf5ba1fe14ae6c247dd23cbe256e51f8ccbcaafc7f795d9ff1fc0dc93f98bc12646df7046ce2ac9274b6d4ef42d93bd6eee6af9573a5b95f4371e8dafb1995d83e27062d82fce685036e41f00c66c5cb8c5c6cff250c83998d8bded667b43190bbac998cfafde774edfc9b6b6a1773b807fd21cdcb0edb4d1668eecf5c5ef0cca8d1f6689e0bba67148b0812368f3deec2722efe785c7f7d765161b69dd361b8df3b0c85f14d946fb96bd06fefc809853781de3d116f2f919b7edd3fbc765ace54880b150b098c51a1b946be32db33de9fb22aef3681ef17e11fddc4cce81975fc6ed963a56c065c7c694cb43796c40de62fbb746db9f71b22d39d67a5fe3e386e79dd9b5e08fe82c4b57f48b9b4937f467fb1a0f8369e54901714f8b61dae3bb59500fd19077aa1d5b1af77e61f347d7ffafd8ec96b1312fa136cabca563e39e05857bf2ccf8c4d74b6d0eeedd2fb7b37ad2ce687908fd65f6d5b616556d32df2f8ace787dd7cc015b174bdb7a0097bf99603d89d7cee2223946dbf6cb333f51d4d97d69bd608e77fb1cf8e3fdc67b39bfafd4b3559e0ba8eba29cb78ed94a69cec3f57d88f98c13b37d2567d9d4eb7527c8bbb80db6832ca2b8f98e9d5f02e3de0ea1a68dbe8bca3d4f9eb3e5cf016e58f53981d7450e699bf35d3d1cdbda025f92999d481fa2d1ee58e3a8a7b8950c0b7cba1a10397e76ec5e57999713c5a7442e59c0c25c1ec83b479dba3f98d83c89fdaaf3db7c50bf32d62414f32bd6ebb8ad4053fb141b39e0d18bd88cac6dc5e6c6eb8b5e0b38a894bc04f63df595d46c44c4e983313dbd2b7cf9c04739dae16f8de77ecd8e243ac90bf21cf71e1c9b72343f46e053bc2bba0ad3d353ac13f05ed24939e856f79f5295b7f8978cf324eb7dd447f63eb4b0f690ae8d70959dde87af27b2ff67baf11ea5773acf25e251ae0f11f29890f93fd66b1e072fb33dae213ec6b05e61bddd357555b7f7e1b88b78ab629f1cec93a6169ed78e0e5ba9570297dc91ac7fb4abd9fe071b3f0f89adbf5f728e33da278aeb4cece9c12db2f35ce4cdc7777ebdbc030775ef85c8261c37c45e8d3ae05b83f7a4310cd8d3f1282de1be15dcd7c5fbc8bb755ff0be94dd57d278c5157d1f30c6f5e76dd9f330af5518071663f9620d1fab7babaf73c1a7578fc169f951eabe8eba7e80bc3111f0a710ddc8ba8590a3e630fd4eb5478ed14ed111886c33115fb91e0711fd37f7bfa77babbaa41a0f661c5ed41747f6ebec0d7c76ffc36cc9e9aa258e2779e792e804f17e9e3b36cdcd44fc7772b67d84de328f8a792ecb72f7c4e3bb3eb32f65d9893a54fe409d59e59697e392301e2bf077d2eff19c55e7571f97051e58e04755f30c945810690bfc46f4fb19e4ced01c0b8af5a0d189fb7be68f1a978df7034e19396f437fb1af639fd4f9bb2196fc01fcd118873193d1c60f892cc81ddb35427fdc4dec0cf327f6e36b4473ad1d7b7c7d3713c67dcaf2ea885d3088ecfb98acc97715d7d3cc049ea6b4043ea7ad9cd385b937156e3ae468430e9ebbf3f2f935de2f73b01dfdd961b2d2e7e850bd189f6f9da5da80f7a1f5219c81677206820c1fa5a592b78f711f5aaf1779d6cb0465f70b97abac1edd13cfe0f631da66c853f526e777bebf8da567077e7ac0b1d8f16753fced9799c7f2d952cc511e8e3f685bf40cdadd039adb46cf98eeac90b95ea24e663ee17be1ebf97df8fa0df8b5783ef2eefe03eaec3906cdcbece300bc5bfc9e37e71be9b758f3446d3bc177b466bea3dc19de585e9510235aff9ed4f16df388e724810f28a9f3b1813e7b8ce9be55655c95d3a6cb6d627964bd5db846db8972df6d9bc687ca5aa65b827d1d3f640e3587c716ba1fd1c8dd856bf0833c54deb1fa75286300230230185d510f51f53290694155b360469d2c8f5b981f1a1bee47626674de6ffc1d279037d4cf94fbc6f57303e2f4706f50f45e1685a3f1dd90b161b927155fded7ce36b6c71bf27270fe7fc5827f4e67e3735d660ffb4eb68f86821f93e71480cf9afabd017b1ff3cfc05f26fcb6527e332dddd97a7d7f85f3b544ae6aab84ba28a91d8daec079a6d533b5e65f84585b542c03310709723920b6dbddfd8d7e427bc2dfa1462f807ceb8dd795e334627e9f389eff07e38bcfae8b0d774ff39d9f5eb7b1ad6edc596681716ac410a6b1725c7768535fd8fb000606699fe66b60fe44f7c4f02d34bf55b1f9f6a0153fe47583b2cc3a45af02be16d7cde4fc99277979b5d8e8a43ce9627b205f1c9f6354a96706972d2ce6d894ab1778f7d34ac0daa01cd6ba3cc06d5cb8d9e651eb4baf16f7ceeb7904e273b471f7a2f732dd0fdab1c1eab6553d5d8ca77399f52c3743cca5f86a6e465d1e3ced57b3ae5dd5fc8faf605bcbdc5da8876d2bde1bae9b6dbb1f8177ff48bc7b96d8ae1427d3e4e6cb75dc621e525d2e5fe2fdfc232eac56003e547efd316e65d9bb3f6f01cf218df17f329ecafde3fcbdc8f318eddbe73247caf3cf1f6fbe7b4aec7c4b63e52cb7e57379a4b4b3aee446731b9d791e1a58b3a0debf106213cd7da862019ae7d31a8746b9760ab731eaeeafcb63dc199c026f8eb51d267231c6e560b7f101bf0aeb99050e21e0b03207d7b8801a2dc4bfc865bcfb8d3fbf79e60db86e624ba98be4e71f3bfb889ed7ddc1f57056dd528ca1d2ffd5fc7c7fee54f32fea82fcbca6ef5ead252247ab9a5fe1da55d3b556752d918156cae64296bded5359f11e0ce09c64ebb63a17ce8b64348f666dcebb51d373281768c0f35a688d3b1d2bf5ba507f5d250f703cd9bb09b1f0a1beafb41d8b7cc76a3e99fcc0b9606d412c99e226403c9b8d0bc49229c7308d8f333ea89e3a7f6f55ae9a58ef006b11c7808d8789fd236771acce215e1f0ad787f5ebd93c2af94e9afd4ee4f246ac9d3141cf38c66dd029d8ef2c97a616676aca4b12f4802d8ea3459f391e246606f933800d3da2eb89e5e73c9609c5c3537df45b5cb79a765cdecea36ac7adb7d330d6415ead35ba77312f13d7573a5d0db61ee75d537d1a6cdf93bef1bd78c675f269bbb87e94b50773a9e644ac280ff72b9e45cbfdf81a41ae64ff806da727b6362614d780ac6167b4cc62a8778631b84ee59a66f27cbeff60cd0fe55aa3da5ae7f62bfad4c4b34bd42bf8fe313326fbd24909fb2f9820a7947ced4abc76c7ae0da56b2bbf4c35e6544e4df9b8b27d5aed136a0b9cf9fcd465ab7e6f7e29e793c54005ee181339b3c6ab7e49cf9f9b2eef6383fe0849e794f3e62b5c258cf9ec80cb4bfa5d5cd3985f59faf0ae98973993734970dc56157f0dc4548614d70fefbf43aeaa709fd68fc7fab5a56d55fe0ace3936abdbaccdefc17e2fd9efa7ffefdfd3fd5764e6df91911fd2359d65198d441b87e609edfbb777f386ffbfd57ebbd3dfeeef528e12ecd38fbfb33ee3615fbf3eb7fdb3337c455d8aeea978b494ec0eaa97811f8fb433116b3d781ca70f319c8d37abfd8eefaa97f7f17050e5607a557e660cb99c44e6f78fb5b61ace0eda37215f39ffa0eb82e536df663c4f54dbf6fd1ff4f3361bbed6dbfbf7fa2ab7ffc4d7b441dfecf3b9b6e7ad783f68e9627e3390c5a43f645fe3f943cfd85b626962a6e8bf3d0625d417d1f6dd4b3852dab7c7b71960c30ceeccf658f80b90b75ea77f13c782ffddc1319a992fad1f6fbbae14bb81f6768ded29e349fb670973f7cae7a0b17dff6ff7b75d6feb5feb6bbb81874c384bb1ef44df898783179dce49d7e7998ea37a2e333da196630ae7b0e1b6683ea51d17bdf392e82d66a6da4d9c8f9bb6f55af50fcf00edef2bfe3bd3c7cf1b6f91b25810aebfef571e8b439d299d7cb4d2e9dbabac3398879e63b6ee355da75dd9af122f30c6a4293628d81e272ebf6539acdb5f3991c560e30ffb4767786adea34dfa02dda3f5eb614fd3b3cfa99f8fa09fb50ef43c7c48e769de92e452a5bff6cf13764d593b534bba26eb589f1c9788e5d8aab9d11083c0b818d177d76119196d98db099df7293fd777f4ec69d06d3f992f36f710f32834f656077cd479d851f49a555fb47b2b1d037450d0e7c1d71d7a09ee3fa14de1ec3d9331fb3f649f9d984e55e52a2bba45de20cf8c1b1913a39269f0b9a57c2ea9fce9aadca541de20dbf0beb6d2ce43f97cd7b4abb30bb682fdaf9bb3afd976557b6033e96423b733d06ed2c9c67f2c17651c111d2e7ebf879cde0b099393e3dbd430eb140c585a53a160d601fe87805b476b24b02647c07ea1182a62dd46360cbcf921c47c0199cbdb66b8226116211e127cc67c769e83fedb31e39363c6c08b2c60d5403bb86fc476b479b81fd0076fe905de4d9d17f137313e9dbd9b9988612be1b14fb6fdfbac7c79cc4bba06c95afcd81d914717c6909e295f7e27c05dabf7b3e91d74b886025f3a5f23338a3523f8fa84dc26cd5aa864e593fa06f04ffbcf6225b51826b4ed1979a2c89f4fe398149beec1f277653fba6c873bbeecd7d4d65b54e70d9ddf7116154bc09b21f307b5f3349f61fd2a639213f94eeb6060ace51849fa4dcbd9acc4b4dfdff4bccf625c43b209fe597f599ecbff37fd15e34f72cdd8afd8e463a7e6f3ee018300e27df44c57cea0b833fe58db3d3ccb3ae38f3a3680d29e35b8d2fc987d021c39f323622cd4727f1f7131f7ab762966bab6cd98d5b331ecb2837aa6913656e80b2c83b27be0380a9a5a68bc0efad7781de350d2d6aa1bd53a9ffaacf65b87878af80c81772fd6427bbc6df039d19cde6defc3b1b32c29b08e70635ba790634ef4683f055b5f134750f50dc8a1449d8ad6dd752147958c955bf6ff420e9170c531ab4b989345d499218732e851a8c7434e23ce9943da80fee59c8fe6378c7b1bb10da6f2fabfbc438d3bcee3441d0fc86f4e5a6b8e8f40fa4bd722702f1dd89ce9fa4bce75ecafe04faaeae2c0b729f80fc1f74dee93bfcb5b47053783fb5d01ab4ab42ddaa7bb4f6c7df9bb870ff8a5fd92da4059344ab2777f96469d308ff763c0660ffc592ac4efd38df7920686456c8e47081c29df89ce5184855b02deda08e39031398b8afc9af8f3d3bb5023508b572af90102bfbfb456409f90ea5d19f7cebc1575c639e0d2b88332328e3426d77d308c88aa4d862b679d828e0b9cef92dfdc9fd5e2c60c3f3cf4c8393d6f038f3ce621618ea0f5e7cfc41cc4bbfe994426b2f8f30e7433863357f99ddb0ddcf38ce70838c8f272e5758ba8f2519339167cd7fd4384f6c38d9c1771675906146b25b2f34be8cf8eff204e4d6428e750a9fad265df8bb596986fb89fb331d4dda7bb466cc308815f66fc23ea8ccf2baf6b84fef881791d836ce38fc751115ea7fb90dc7f8d77dd6b5cb4c7d11e73637f48b992cb7db8ae7032c4f716ea1a719c3df13a5596723c3d8c755b895e2ef338f7e29c18a87793b6b46dbc2e3f6d83e8ff896d5d02c37d8c4b39aecce7bef5a2e656f2dfdcce4cc0d4e6f6ecc91971fbf8352e05ce2c6eabb267d562eada58be68ef321c405dee338cffb0ff1f87ac09537a07f29d2ed7b103678a30ee557d8c1bc56aad96bda075e4d8ee7224bcbf7b7ef8ea59fc7825320b6b691eea6f887ba29ca54426df128bfa7c50b785dafec0eb7e007622e66c207e8e5fe92ae3b2ffbf80bdd3867bbf31cc4ac849849c028ddfdf5bfe95f8f356e82de7f05cd01bce72cd33b139478316f24ca57738af1eafe48c11fada7d41fe8cb8946ab8df0e10838b474bb207a12667b21d74c0972cb5bb2bb1dd31f7234ab2bdf299d0bc476bb7d9bb8fc476776fd0fe02eb0f46fa3d0b750edbc16e0ab9f7c776dc59e6e12b3e9fd63234c8043c9f43f353793b8b8cdeedb9fd03f59c957c31074756bbbbf2e76e548cdb51b13c855e85970118f2905fd286ebfe818cdd6dfcf130eaf03c1a515e8abfc9fceaa82ba9d7b3ef25fce26434263a19acd5063908f98d71d13b4d697e9b2a13254c601aabe27894c8b37c4b20c7868cf177f91a692f9e6efeaaffcd1901cf1ff01c8452fcf97e8d3a83d78def68b19622bb778dcdb698b3237130487898e45a6bde89f535ed27b22ea6febc137aee4d57d347318e5aa13f80da70bd3ece78b36f67ac9b599cc91a8ecd3670b0e8dad5e94e2c574998b7bf204ef6a61b1b8681b2cc630b303414df08c8a671dc762fc19e8cf33d0f25bccd03daf515b6b7d4ae3477432dc63c8c9de0c385cf4b3b87182fb51b172b298e8f359709f3f5827f009ecb3e9fe9e7b7a4d31770e2383759d37dbf6bf7a11e7c8c8a79197aa0e36edf2157c0bd31ae34ccf3ea1159720afcc10d6be1a19dc7d41cfc0efd3c0fcdc135dacaf96158ff886b86bc135973b19c5fb1434c2cb22780f745189b533a6e7fdf43ed155f9b8c9b85cc89280be65168cf138cd50e88fc41ee166f91fe2cb5d7a533b3ffcd314fbf433b2f1746af4de49d672c3f7c61ddf13833f4f12cd85c153f13fa057a6d9677825c57af9739d841c25a310fe9c43e9031075b6ab6022e3a6e8b097cb6e043883acce7899c3eb3d50bb40163f18a188b936dffb0d9927503f1e13bf098513f00ad8913eb398fd1eedfed63b5ce76e0ef9b7e903ef1f54de4dd5f8e99fd05361bc4425e8f30befab347c027863e312eb71a6636c70bb2ad63bccb2f61f1fde4d83b8619d1b497c93a17e304ffe02cd2e87b4db9977cfc54bd9c7d2f62b3887e19f15af6bd782db93fd69d69bea8bb54fe16e5d92d09fb85d8e73ec5cd67637a21f6bcabf6ef35559f49ee7524ddbd92b57a0c40a3774946e36b64b6918fc76c83bc99fa704fe319a59c935f6d7b27e89d7b990b463c8b91d74339ffff573daf45bd7a66b5d21f5b49defcffd599e4829db1bed5f400db62fa9250db759064cb7445fd82105fe5f55ddd1f5bc13785396564adc15943f35cffa3f623c8d99ae77afdcb8fade03302de6ff44b917684fab26fd59e41fe6fea83ba3a43d4c17fd5c75ffb6e621d9f3006e05fc3cf63fa7927d4ae3db96fa5dcb7ca697fa81fd10faf1b6ff970ec79161bee83d54f6f3c229fe68f8d373e91b398e6b83cd8fae018e7bb4adeac3bcb32044c07b01b2f73798dd7af7b7d55e338e78dd7ad64239cc72e9177275eb768f7f6132a7326c05345ce9b9dccfd51bb3f33d53ac5c8cb2f0246fd5b321ae7893d3f4c4dd69ffb352c339447e4dc335f6eb39594f3c0f628dad0069fd36aae84f530811c0f896b91aefd1b3953efb32df803efb361fff8f9f94ace4bed789e84b585ebd54cef2a473df62d3e91b377f686f8f5b3b7fe0ddb7d7a0e9373553bbe5313f710ee4b1df7128d6fc13d16f85aa8dff0a93fad8a0b7dbf3ac2bd02c7736b63e717c7a6f61ee606d6306845ac598d8f84b70b67a65e2fa0b1fbf1bfa40fd0d8dc3a7fac3b49168f06826c95ea019fbe8bc49952b81f89dd2bdf8a5e19adf34b52b8658cf12ff19c6cb0cdc5f395fb3d94f39a7d2f62d669fc22ea7d45b3ef44c03293fd329a3315c757394715ec9eff96fd573fa71bfc819ab69ff805990cf1bf6ce3fb0962448f541d82d616ed5e74fa4331969ff5bf551d787e99d4740bd5bf78e367b9db9931cc7f1e539eacfadf785e93c67f51d305c8de29d53e56ba96f71824cef09012d9463927773afdcb35aa5c897aff402fa21800d93cf1eeadcd8ae5eb8c254e13f4c5eff89a53fc478dba36bfafecef23391f684ffa3f3658bd572cb441c71ae54754e1144ab8b05b860b1b6cfbdf85b9fd8f633b3abfeb85ece59a8fc74c6fd30fc699c7f73fd4a1ab39c69372709c20064db57740fe33d935ef109b1b6dd9fe798673aec668cf645faa739f14bd63680a7a22c35af7920bfa8bf37db477cf131bfc8cd2fd937a8ef419e752aed3fc67feadf316fd5bd5bb537f441178f793638f21fe86dcb0444e2057af9cff4a9f6725226f18fb8eef29cf1827da183ce51a79e6bfc477056c71a8f173ec5e09984160fb12fd9fddb314fad5cea2e2b97df149deb1764e95f1ce7ebeb5a4fd4ac61be615f80de4e76b6d152d9e59e5cfc43a1af031831c84fde75997aff44373dd3747b3d6543c75a8811802ee15979d12e71bcf39884b490651b9f4ff62115f884554f29071f368620ae9b39802e42808672ce4e6411c03cfdf93a38b6fac9ec53740cfadf40ccc718571445bfed3f8c53af0b3e39fc42f643d7799bddbf947e0396968b8d7c8735bf17e87baae396825c6f71472cdf633b2b65f365ebb1db97f4b6facd5ef2a58fde299ee2dddf17ab59e0fdee06c49c8f8b736de3c8b4ce93ae7ad3d1e7bbbde0ff7d59aa14f2abbc645fe0df9ef6e7bf12c7f7b756dd74a06eb1d7074ed81836f946471b190ae5beff2d1ca5afa0b77fc8a3a3bf26e26865586f2f35fdfdac90fb765ad96d8cf5dd4492e9aebdcb5f0dcc41f74027f2cfbcc5e2dd77dfd0ebf07bedb8ae4f1f893387b95bb24f8b530af46f1a5b56a7e2dc8a111f71efac374beb958f5a5393a5fda6af85fd4bdede5382ae6a7c45be68867e39a91b1ec725d598eef67582f0eb82b445f7e6c108f4d9afbc4b65e36e4bead56476e91bd06b1af82cac36d433e4061755cb1ad11ecb3d78d4feb5a46ee251e8daf444f8f0d77c7620592cf03ef59036681361f80fcbe3b632ea81c8383ef76f9636d43fdf1056572d5de74ef5e363ec80ba8851fafa4f506efe9923672f4fd619eaff5b27101fbaa2116467eeb8ee356370f0d0bf816e5fbba0bd0bbcdfe7788f5837eb1bb84ab178e8fc5f21201afc355eb52bbaf9f8f43fbbcf15e043ba8d9b71a8ec097bc5b313c21ca2db7287abbf755ff7f1d33a3febe13dd07984745f4ed99b4ae296fcc6b85a1f986f841d770043afb81faa47f537ff291d6687c23e320eef310eb9ad8bebebc0f1dd0a9abcfafcaf53bf9fa37e5fab7575e17b131d669e027d9fb0a3109432f2c42ca8be98ce2ebc6a41c31a3e501b09abd84ac917668afd3c80828cee1328f46cb4cbf5ee7ed60b7f4572a7619ff3edbbd0317e6b2b3a9f3fb91dfd29fdb5add21c75b137d6ae128035f57384a0e321751553f21eaec1cfb43b245972f889948fa734b671acc6785ef7987757dfc7dc87cc1fbc8f631caa0b8e36e9756e24c4683ddfbea9686b6c25de9cfadf7d1e0b4f1e647d05741e69071c55c25a16ea50cfc04ce79881362cc6fe0bacb9f52cd91286f58acce1b3fc87b4e56fdff51beeb4ec81a7fcd7eae77f9e6add55d2fd637a22f5767ef50a98168ee0b3fdf00d345917d44ee2e5f7bfe5b0ed788f9e02da19dd4ddb92bf7351f2ed637fe4eda3112f11555dc19cdb3c573bfa97fe299df3ca6d258fd411fdb920f60e3cf3da2cf70d928f4a33606423d4e75dff794ecfb1f643dca7cceb5eb62588b07f2ff8b9c6b965cde702d1f43a3db8e56d92d92b9518ba833fe08a1960e722d108b4da9937756d9316eb92fb17d3f0646dec2387640d609ecb7953f5f843e69a7db42eca8fa193181fcd4ef10730f8cfc12968323e3dec558c13a4d8c5e3bb2176960586dfcec1e63c4acbf26d23deb34ea0c686ef79ae8eac0cb4ce410ce57d0b486455dae18139d0bcfa9c635e3ba03d411010b8d8cfd4b3ac35a2c5dfbb3e53a5c2bedffcfb3f6253d943f03e494b8871ea1d19d89f58928536f98ef86bf31d99905fbd92112e41c8eb9bb637b50ccbd55e2673b4526d5e6b75eff08b5e21a5d82bc43ff7f1d8c53687e3fd47506a15e0b642bc4f16f8d383228874fcf9f6f137927c614c15ff11bcffb9acef297339aefa35dad56087509c36dadfcf93a327ac3c8ee614eaa84d59fe4c92bf00a5f17c8c97308f575493426646de332db4d5694db95ca2e711ec9fd3f3f5afab9157098191e52f56cf78dd65fec437f398edbcb6bd49a9fa2ce3c9fd80bf58caadec9a535199a7751fa407410e53d76323e95f04c2ab384e7cccba064358dd575ae9db4eaf5b7423b88e727ca2d1527f712192fe78db7cc038fecb95e3b014e77490f39c66d629b6b7c6123f2fdf21818d609ce69fbbe0dbcf9efb8869f7947bec635c59d73e7121e2a9cbfa3c189cc2df226cd9d068c8f13e5736158cb6bca9f248e2dd1418ecef0d613e3c53aeccbc8427e1386f9b6ee8c3feab86f4427976ce8d4dbb61957e54194a78eddbd26a09fcd6f94ffe328d712c13bbc609d02f329755fc06f237edeee64de4fa12eebfded55d16f5f4f727f31064f3147589b5d692c4d4d1e326062efee0ceb79964b58214a0dae3a9fc00fa2e35016fc14830de3d671b06e136dd9d5e0127516441f7dc436b121ddddc4d5bc3762df88ef4d64a5a8e71f6b6b86cbdd1471d0edde83f9db6a18ef9003e0a8b6868ac32de4ef423e186210937f43e7e48c72892ba88973979ced6f265b43e8e70e0aeb6353f60f54e63d1d9fa939d826fe82e800e5a6332367ff2932079d8dbf3c103d2bf4d6c45edc423d436776fce41d445bea24ad19650d3cc5bad1ec93b0b04e11f8efcf0fb5bed037fe5826f87c7e550c15abf745b9b0abe4c26bda2817f47dfbd3f55de54046450f79d53b03f25d1e9a797d8d5abdae2217ba8a5ce88a724123577ea12d26ca95bb8283d94f1dabf7a2c886974f65431bb0f07f9175ee77006bfbd7bbfb443ee8e7a3865b09dc7c76afdcf8c76bb45faa6348b12905eed6afc9d75fef50e38bdcc7957ffd24eeffb2c2ccea6ae7a2263ff563d99d957f2867dbbd975949c67187e3389c9da09db67e3c356b6ef687637472ec713b31079da833fe1d97834e087135c0c36fc5859b139b2728eec7a8481e8aec15b01a30662a8ee1d414e5af953472fa6b710330e738b45d32ef65d471815f8bdb9014ebc12ddc523d5bd81ccd4d758efabf89ce3a29fb8766df93a05f6cb90e0b7aaf14efac9ef332ff745f91795c3f393beae3e877d216ccffdbe204cf80bdb56bf99ff86d6a7bc6d2f457dddf5f1f17ff0fc6a53b5f7db647c8fb05aa3feeb37131705cd6382e5b1817c3d7f10fa8f19ffdb27c7797d785d12bc11ffd9a433ec2c65bfe49de908ceb406beaa98ff5573c1a1f93c26a852b11279ce6f319d6c5b17b9768b44b03d607b3cadfa37bee1275e2cb74db95fc060d78b63ca7a16e4bfe414e318d5bf0da702526017963323fdfd762265fce2d6679cdb55c65c8f1539edd1c3b31ebcf5e579c8f6adc8672c46bc6417f0f792edea362b014d60e794c215e95457bf71c146e2963c1238f86e375db9137cee36d2660baef6a389d81b71c34b62973a706c823f2f49ab0861b5358bba5d705df80d2278a2fa96b13f05eb47d6d680b314e5a80fb72a4fc6997c46b6f43df39a8f8b16a1f210fb43318405ec06b98413c98c8aee14cf15b50ac1495cb43c274c96a71338a3f20c53b589dda97f8e831e752c26ba17a0d3e73f8e47dc02f0039bab705c6ddec0062e80e699362c3c4ea9e86b5b458cf6f551b90b77110cf00c627cb6b53daa79bbfd2f1cab2f8fe3c9ab915bfb7c2abcb387d39feb2f05b57fe2de76dd4d61bf5a3c075afd63016b05e85f7f92e8f8992cb61bb9790dc5be5ca801d34517327d477b35aba3ef31c61ef612595ed227394b2b10c1bf982c9dafef4bdc9fa1e2c189f24fccd72f16ff2ba50d74c27cce3e29ec5a301f0e2d4fdcadc0f43f6218e2ffa542519821c3eea1cc87a93e659c82785f956b7b8e8fd457446c86fc63c4acaf1b54803ef7e25f7804db9627131f04b81af33a65818448f436e01caf3d5197f301e59e13cb84ecbfe21ea2c0fa13fee6c7c88a5c8793580a7712736f531f4ee3bd06b913be8a8c156fc885f35d82d6093627cae86e9525f43ac9e81e66fd7f15d943d77f7596d03ad8d6ac2a6a1f9ab37882f50fb36ee9079cc48bf1173c39edf9626f293059dc12bcd83c1df19969bcdf20607d7703b001e08fd58b41ac602726db2c8ce1fa1b74843db3d25b625bfe7f0409f4fec63d2d64d39c777df685fbb44570c3a83d9d3f71e71dc1185ff08ea084e34efa2ce5f67cf6febd1f8bad92ab95354079e7c08b82f76d20efc7116ed977908381e7c0da28f45b6695eeaf26190d0719f637d751ff2a658fb1aeee29a7ca9eedfd5ee7f3e3ee4fd611d2e405fb55f28773cd35f240c881999f349b5e6885d2ed4dadc285ecc8dea6537d2a705d9d780d7c2c7b4dbe53162958fc546df31d52b884cabd9edf5b387613acafb6902eba785eb9bd697c4af16ad6fe0f8e25c56d6f8e3eafbadfe1c5778ceea6f3c47cf9b97eade87cecb90ccfb7ab41c47fbe5a5be7606d2f3151f6e7ddd504ca505794f6bd05a79dd569453dc1a223368ddbefe0c11394724bc52caed447540e0811b67e1ab6545857456b0734be18656ea7c791c8c62d6923584b60dcf9167dc86c02f63406df0312ad63c8f25ec2c52c8bb198d7367b4bc3a76af9d8ce680b503791480f154dfafb0d7ed5e6b63bb6562e40fe4d21631515ed2c4c84f9139e86e3cf7149ac4be5a1e48bf276e1d53d73788ecd2cb942679a859ef67a1e64cc76dae910f2d013b2917d79f8e1ff41791ab22bf6aec8f5b13ab579d17d5dfbff9df2be1fbcfce8cba3dff8fcf0d1c5b72867d87bfdf346728bda6cbaf11c6ee97decf50320c29a55e0deb5c51fe390d3e8a8f18708a0efaf7320fc2f934d8279e55065eb7157ae44ca9d6678c3aff57d6059d0b2af386a0ebfffad37304c685ee7bf0c5f031982beb465edb647d4972644bb1d32cc6e32fe858afb03f0f329e57554739a5f5c0f47f676ac29aacce926a6ce1dcc15ca11affd807c42fd754afafc58834e7b08aefae1b578d8c27fa7b6567d4f8536b6706e52a783af613d95621faa1a4dbff8373848ca9f61ca1cf7f792af31bcfc6e53e791575892e3b1f7f55ba49f3f924f96c65dbe39a146e19d9d62d26fabf120b8133a17081138ae1934b3160c4122b365e17ce23c61b5cc70cab7090d5fac5b8b3bcc6853ba0dc120d7ebcbf57c327e695fd639eb9aaeee8299f57e8dd8be7ed08580252cd918065578a9ca4ea6f145f48f251519c40d167c4e759c43175188ee9166b4ffbdfd57a0101d3945cd373868ea656865c7f4be3d122ddf84b7867c5f7cbb84258fd81bc278d7132556584e150bc768e6f0db999586731d886feb2137aee85d7bd8c6688e547e4ba3f3e87def2083ce4f6328f89fe50505e76ba66d5586000b8e080c125f543c0ffd2c934e5bdd283bc5fa1e6e9b72a1bf059e384c6a64e4e6d3cd8bb37dd3b67f736f068b6154c4acd5a017f07c576d4fb03cf5373704e8635ff44c3f87ccaa37156b130d57ba7abfe5d7c1f093352c2763c9f7d4926335eaa9dc24d338f22ca01f159fdd517faf610fb1601866cff36fd58ab718e8a47c8633585566ba2f67f75939ee7192de0fd68f81e70c4237f71d48e4f9d23433b0653533736f386efdd04e65f931b2cc5809b38e62abc4529a6015c4c859b87e6a01595033c4bc8de06df905524c0e1ad9c2d7559f88447f526f8f984bf5d5aa76a2ff3b0b0dad168416bab1614f38872ea96833cb1e7cafe01fe2a8c355772358058337f16c71f957cfaec1ac13f4e399f16756cd415c74615b99f38ffaad2d69b728de0a3df418eccbc218ff9533ec2ffe639b46d929ddd2c1e0d4eef2b71edce4e721ecb4e1a33be572927a676de57bb3a3f959e8b2077868b8a7ba291dfa9810f41c7e963ef90d3076a13e4df3578b89c2b61f3863aaac4c3001c4ff57c31dddaa9da7995cf11d66f81034ae51f7bc26ff56bb37afefe9ce72a7f22c3ab3efcdac8b92512beaff4eeeddeb1899f4ac07e47ced2b24b79f8c36bbce371610bf1eaad3202ecb13fe52e853af7273851029e0fec09a8c97abc313f3cfaf1a57859cc637e9013adfb2dd4fd86eb7b07dcceba989e286b61ecedde3e34dcddd21f97354e5dcd5908ef605a642e4e9191ec436f69c57b45e783e7ddafa191e4e1ab5bd6f2fe713e3b813fbe4ccc04c6deb1fb80ef46e3ebc7d04c614ec7463fddd8d603e20230570bb0f198ede0d8d62534078fa81c1c1373708ccbc191e8cb71077259a88f6959067e4cd6c300eb5a17e9bbd76bc75bb4091c5ac746e6795ac4977adc033851b2c0985f63e43a3fbdaf06d7783b809cfbc07b4903ef4ef4ca4be02f8f49b1a6ef316891336fbaeda72ed83ed0bffc7dc4f2bf06dbd0cb32c48976d2c4c87296abcf30bc19e73ce2e7818ecb6bc190637ec06db229af757b6e4321c701acdb21f3db7d99e780ee75b4e5781c565ee3a605e31aa35d43ffae64415d86f25a266d0e395d3ff43915be05727f3997a023e5501f029103066dc48f77e0c416be7fc53d38316bf71e5cdbda527c468177d1bafdd80e2ea11fa76f9e751b0f5f0f15f6ff80ccc7b75a5ebb99d1bc8285eebc38077ebf147842c86788674f680e45689d6efe4aeb4fc17b2b2ef7ba6f9e733ab7b398729f08edde7d851b5a9f6756d598457bf71435f89b2b0cae799e0c0fd2fa89c5e79a3772ee9d743c13647c67d53c5fc867e064e163b82432f6a8cddfa6f732fefa5aee368e01994f79fe943883380f716d1e6eb48f2aa77657c27920631dd7c69abe772d7749c23f63ef29e0418beb92720ab7703fb26ba87d5d869ed50a5783cc192d33907b76af60f84c10272a6fe0179c107d6e3b3881bf8c5fe33e1c7b9c27a3240fbd17f0c347cc67fe7f89d7c49eb7e37d98afb1be558ff9d771cba4589f690dac501f8d318b8d975ca2ce38e7ef3d4a0e5139c8e2624df373c979417ea7bcd77e9e87dc5f4bfd0cfe2e8d8dec9a78f75db44d5aac8634f1fb69dc21e784abc51499eec779e4f58cd05b1c58de0d3def5a8177cee3b67b5bc3fdeb83ca810f5886e40c14ce5011ab83c6ece4f1a973a12bf19d8a5f6049e792fa5f50df91f8f5e04c3c467b912ba3c65fa2c34e41ac137f6c842e3d67a90d9878dd6de2757791edeea69eec2fc37974df705e7536089c2dda7645db12635eda7181faa7f143b356d7f963417d7c8829a2eb8b8823d6ae30879a9fc7afa973aafc3b9c2f2bafbb0b914f91b47989edde357acd2fa1edbe68395ae86f780625ade97e708d8cfb382a96f9bb59e37e616719e6ff56cf3b896df92bf20ee396e6792097965e1770347eaea4b3563e9fccba4d96c075ae45f43272eeeb65fda01578e353b886f822e4d12be719e02efdd80e22df55e24dc29e888d6c0dedacba8fd05f1c68fee16eaab42ffbfd69df2b1f263ffbf5fb451a8f4be8ddf30a0bbef287cbfbfb132c50accb15c609741e752f62aecfe7f8471a9ebc7abf896e2eee1585a3849d73bc8ed5b1dd2c3052cce9dc62fd3fc69616c7a939f8880b97c87d5a53cffcc6cb07c76579ede631eace80d585b8e6a057ff5c3d4e6962f7a0e684d93e78c6e54437cf2046b09fd17e8caf441785fb05fc588aff0c6322eabbf81cc52eb47a80b73819f5eb5c8274cd08f9abbbb87dbea97c0a426eeb17f684942348b1c09642ee2ad19fc22bb1916635bf6c9a8979b464de5c41fe6a398dedfb899e0b6a8e2cec23ef3148a67b72765aa7c876d9b587c9aa5b6cc01e720eb22db17ea2a7ae2f1b7f6eb2feb0353531657d4b39934ea167950b7f5c06feee20be1fee27e9de5b64df2d6a8b1451676c051ed96bcff02eb93dcb6a50eb186ed4b7a4f2e6605f4f0deb7e70045d18d638d343e687a803790bdb703500194af66bb0dfa51b90b399ec37a9bd2b95bb9af799ada8aef6a6c666c4f107997357cf008ca9c2bd8de789920f29e69fe0995ae465dc411f8b9acf0d7d6f9feafba233fe407f44756fc589553b9b5ab4ceabd8f8e347f28a7a64625b25ec2193e540b4414f8b3b6e19e2197925e71ead9b3956b61bd4d75fa3fd9c7c9f47fb459a94dd72ba5f5cb89cb714d98c1c66b7c8e89de8b978006c09c6a9267dafa963192df3c8efb3b3fb3f326ed18c71a9fd47c61642791e7aeddb734eb9a79c17a2bec0b07fb41c6ccfea06441da2996bae19a79c73ca41edb15bba9f72c6d5ea0cf87b441d97c87be7199f5c037613e7aca36dd09c72dd7a6baa4de03c75d7c45fe6f12ea35884a9749e57e3416bb8343516427d42497d86980be8cf23bf53e5bf43fd8e8bede03a44fbaaa6ef59fa6729b5107ff02cf29ef2b3a4bd2df029a8bad8d8e85ee3fdf2307e1cd299941f9474427fded27cff80da3033fee60cfb622eea3ef4ac47a2f93e2a7a656267cfdb1b2579dc59ec7f6cfb37312f87f5afa9edd820eb34cb03d636f78188795c129ee82fe4a406fb19ff369f60820e4fa96fec4ad99eaeec656e534b18bfee09e6cbd89572fc53f0575b3d3813e0ecfe2c1742d0057ca3667bffd2e0eec235531fedb171b96338b5dadc36666b897a08f096aacf42fb49c0d65c9c951c8c5f5fb4171bae039cac3dcd7fef6c6c17f20ca9bf15715dbdfb11f1c8c8783b69d419ef42c08198d1bcc571ceb09e2b4c283887f631d4d4cdce78d6f4cad0764b6dee9d0ee775d5cf906b739e45defae01b147b8dfa8727e64eeb13737c715d08dc7d1ee419497993e36d80e7adf9daa3f20fbe9b486b2bcbe216b3d1612cc5b5abda19c7ba0ef5f5fea8f5088909fc3780cd406b0d58cd7c1523166a5fa706f5dd78f31c38d04ca94e81dc43e4b734fee2f9f2c6f3c6293769bb396f4ee04138297c9a525e22cd9fe3d8f455beddeee40cfb471dc603b5b169fe9e7ade4939e23fd9f8e8c74cc8a9fd2f8c19791779ccfeb55c4399db948f75f398c119ac1d33f451d03123ed5763a66987e6093d18a607e76a156da8866b945aedd419a577ca85c19f09f257c59e18a525e5baf8e4ba9da63d4b779da6bdaa06aa3aaf6ab5f39fe16a6af268fbe9fbf0f59b23d62434bf9fb6b606f04ade0ed23cd79ef1e6483c1f5f7897dd3bcf8964b9bc2ee4434e57f531d4ad058a3d589b17ac2910e4852bda31a25c17b8d2f7f37bbc5f1c489b13c4cdfb0db878e6210d473bfd9aa69c0235bd4df85eb3e6be39f65233073bf2fd57c64dc2fa6d7a36f01cacea79f4b4be86b6e15cdecdfed5b16f9af93cf0f79bee77e9b41c9cfeb46f32dfa9ae1ffdb3dcdf6e573b2e121671ebf22ee769f7183f5ab81d003e34ab678b4b21060bbcbc2e600089feab2a0e9da83254dc5fd06edc6275177db92618e27c801527c8d7f921e43cf58b436d3dd25a20e13b8847cde819e4d2b8d04a3a9364b98cb10aa916097328280fef44dd5b56eba4d96f4466d33392d77b9d9cc61a263577fb731e5bc4b9d7f26f286d35f9ce6a6b479d8f6fb21ea3e671d4e499c843a9dcbb3cc6bbf935018ce7da7d703e27de3d4b6c77b752ce192243897e545bc3b6a0a37d1c52d5dfc77c6adafb449ff2b07eafa8a3d7ef277687fa7ef05d6dbf33d92e9c03b56bd83a14f8a3b4edb88f435ae325e33e93b9439fe1d4f73ad8fadfd85ad43d7f4539ae54ac01da36e4ead3f6e16fed3350dfc0e7a0bea61f0fb4bdbf49fb5adb67fc8d8e8b16d7c0a9b058bed5d733d745447c123d6e18398739c6cbaebe661027ebdba73843a88388f8306a7f7bf5f5a4c3d63fd4cf38a67368f96fba2f1517594d77d2f1695fdedfb463f132fb3868f5c146fc30a2a3e8fbd49db9eabcb6eaeb8fcab01fdbba8ea59e674456ebe64fbe26ff7ccce5b3af69ed7c73ccb674f67ee5f9eccc55affb555fbbfa73fdad69ee0fe9d46fe447fe5abfaa33e2f25e9b9bb6d43f294e28fa59b98f6d90c59d791e5a951cac30d7458ea9feff369c41920cade57116bd5de8cf7f325d83ea648093be16e4b57a9dda8e6a57aa7d16ec4b35ff92cbbba66773fbeb4357534ccea7aa9e053991680cb0c81f6bdb2a012f9562a8b0ef1746768c6c963381fed98d3f5f04fe38273a8ff2fd7063e7a7d04c8f981f49db8738159cc387c9aa9b45fbfc2df0dad48789cfa3feeb86eb10fb8df78bfa63684e4d31c638bed2af5d2ddec27da99083578dc51be5aa431eb6ec978047a48ef1c9b17ac7d9f696a22fa8160f6ec6631b21b61ef0b340bf15f962f528c6499dff7b42fd8653a2affaf347e82d17d5babd81af726aea7d7a0df57114634febeb13f92f9e8fa155f9f8bed6d727e363f5f4792ab6f5b2597dd60fe01060f852cc4f77d2edafbf331ec9689c611c01f3631cb7a7cdb5015f5e3d36c8732f85fa9b3be0c2c25aa278e058635c40ac7b9b7dc65755f7f1c9ebe78df719734dd5b1397e052353de2f54b7cdff8d7da2e5fe6bceed93dfcd8a0aca43a3bc8f703fcd91edb6e27dbe8e5af36bbc072c48724665919defbebe5e75fd40bb6f59f4c87546e0dd8f34a7d70ffcf105eade69bb6a4d341b53a596f2b3f7789033335ce35c328c18a20b55f3d0d8d7cadfbbc6fa17e4b3761f9ff691d693525b08e2c06fb6b50dbdfb3fe803d6f268fbc030f7205e0c386db00f589c9eb5fd4bcf1977639c71b1d9ff2ee60409399237254792e696649cabe1d70a79cf48bb3c5f608435df88fb6775e3ce12f0541ddb32222367b9e1905b1e115bd8ee15a22ee18ce6adc40b01c759d17d1f8eedb682f2e558c52406e25a7778fe609befbb5a3eea44e4f22e943c68e0b0cac81a5331f572cec545eb86841a5cacef7d6b61eeb10e13fc43c1637f92ab2ad5f20c4fe966d5fffd73d52feb787ac83302f531423d09feb6ab7eabd50db27761754e2a56550d4fab5bd5d4ecd4bc779e771d172e70780197ab2bd5b1ec437ff9c6cec94f78ae9ab10cc147d484672871d874597c58aa0f53780f922fd58c69f7f62a84fc88711e5a9457a85617cef370c8bb139b4daad59a08f8fcb59a07c36d2d181fb8f545bedb3faef3a97882183fa552f7add402e9311ea98f4ffc0df916951c5975ac233bd0dd5b71059bb1c431027b9c9c4986750a3aee29f097f9ba20e7a35b86de92c648d55ce06a6d9231256b7322d784339c7c5ded15993794e11537dc1fd7f07f16bbfebbefc673a164ee715eb32b738db3bacfbc3a0f98fcdbc31a807746ccd8b3340e73b37b0ebc6e3bf0eea04724d6f2ba46b9238d03d6f7dc006727567989f5353190c303bc8c706f97f27d90f6648e9d04d634d41635e4bad0389859bb4eceab11b14ba19f0c3351adf771ea399226e28ec745efa670e913bdb98c3a7d811ff474f7dd56bd56139fd98e8a9c6350c17e28d77b25a7f1c67145a09e03f8149b73e9e9f313af7be45821b09fe27cace05ec416c3dd1820cec67670d0e7630d100feb41ce34f47957d7d17babdfba1ab9c7f8f9ebf53a38ff19f290425fd4f11373ecaaebcc36c6a5f2c19862fefe869a3ae3ce62c90f8a35982566ff3edb0eae63637e8a8cf96f35cf2f02ce79c0ba11f1793a537350cbc1f211233162e320f0a37f449dd92100dd6c8d3cece68d8f8970dd63e3bdc8d759d5795ded6507fd213467296e9fa96e93e4c9ab90e7b4cac0d73f715b525cf70d700e33d857889d46f61462ac25e52ddd98b7d4ef0c70cd5abd1bc46105deadfa59b460f57717c6a3fad57388d78a49bcdd829f513aaf59aea4c0d7c7734672e06516cf2b565358d5d4d03a03333d927d237124511f3ef206639bdabcbf2a578ee519b2e768730dabba04ab14f2d1ea78ae34af73eaa12dc170d0e57ca31731ff7110e755ee5b9d278f8d551b6be44bc6c9a0e7304cec44e038d67121c23b8a5c7b67c43f6bc31a6be436873801c73cadbd371f6b4fc8dbf0c232325a6794f7a4bf4c8eae652e70d9afa1e34c7f92bba5d385d65fd183f2846373541810355e4958a39fd7e8d031227a0e8c0f69bba6fbd86e8bf96d02a3778eed5e3b52784c03a15e01d6bc4eff12daa9f18a838e05cf14df957262c3f8b43097aabfe7796ad29ebd1fa3026bf884e7d77c3ce26f0d7cb0c2f7f4b9ac06ca70f790c7339a49efbeb1ad07602fd15c153e16f0ce94d31afec63e8af7026eec7e7c0c6d17f516cc03013c1faa7766eff64edd7bf3c0ebe2f5fafdc26a9ece555df742e6d5877dd1cea21de27e30de4d6d7fcafebec2fd6cb7a292edb9fe37b59da6bdfde659171c23fd3eace44f25c3c7654de655ef6d014f568fe229961b6f995773f03d1d1b1c63ee9cd8dfd95e4e7fa8ed9832d72bf3e52bfd95c77c585dab7937b97de9fce8dfe9f97f0aa056f47c893ac9a5c277acea4b017b918e8983f17eb97e7be8300cc28cc8b68dd1bd26c60bc7148e8c80d5cb5fa3ed80ad071dd7e96de6f68e2cc70d79a021374df0692c384773c5994a71fba43e8d7f6d188e25ed47627f97e27cce283912fd95d7e273fc62c186b3994db65375b18fd8429c13e455aa63556bb0b9d5bad88f98e80988218e7b73f8bdd696842925626eac04bca00a73aa099fe9ec0cad0438f8edf98de24957fad410f8a6b03f55ed21d66cabd72b3e6dc08af66775fdbf33fea0d8edc017be1ed17cd74a76a53fcb41d49497027d95f1461e919d7f84abf43635fba52eefff2bcf6bcae96c7e9e88ab52f9fa00ef44a817a76348f6dc00b17880d37c91a8e309720a751be0dc77072dc1a616fd07fbe4b5261741fe6f2897d9d45f5ea71ed86f923d24ad73589f028ea998abca7c60ca9c2ab284da49d21c4b7bf2e78af914db59b477b3e895f6d9ee2ddecd8ced559a3754bd53e51395308ab4f215f1f214590afa7bfcac5f525c93ca16c4f530ac8f8d5d71503b36e85a29db4b8e0d3e65b97fc273eae3b4f402efc6ce749e9f2bce11cfef6a9857ddd936f57ae5d4439f76cd361d5a149747c04e7b3a97cffa08f9bb7fda47c09afd521fad7343beaf881720d5ab56b68f8958205fb4f5d87a3bfa5a5ced86bd406c3e76f6ab754a9adf56b60bfcf813737722e3ef1b3995fbf46fcc89abd7f9fea3f967b1f03fd91fed6bbc6d9f026f9c4766acab376951ff1bb7df9eeafea6e01318317e012217216ea37066549c8e1bac9d026c21e8cb2bad9dd25cfbae5e6be99ebd539f1dd631b8ee1d3cc3ee9d26aec90d62879c68dcb38eb75bbccab6ad600b867ed69afa10efdbab9cf86acd06b443ed9ea8d3dfd7714cee5dc76c91be1ee47e2afbb96a671b7596adc86835b475d2b4a5c96bb1b38c7232e3fa967461f72531db07883f1a2f02de863eff83af63db2d1275ad99fd341aa5e9f4ad45d64da98d0fa3fc3f04dcef3d863da6ca14c78435f29bcc5bf2709ae3ba748e71bda9f264708d46f93e32bae3ba8c68d8cfd6993cf78cebea066b70ba82357472ec3bf8b9c8bb4d49ff5670dd01af4bd349097d3dd1b949233bc5eb94f6c8759b2160a236d594e87172700f08efb2a87415e068ae8d21ea69855bac2bdb823c4f97934de4e85bec71ffc583fe7da0f79f90bfc7eacef6346f5892dffadc77d2e795d76dad3bd60e79545a694cff9e8cc679980f5a53137874b2f7b731b50932cd7c36b4efe5977587e2470f5ba017b167d5f81571ed91b6c7d2bb9ad2bbd7d6b446e7a8f76f58bbe7bcf1ba6ff19a8fa7fa5c650eda6a5ef9d7e67c5be3b314f7c438da2f4a717c3463df90a3a87947eb54fafa1cd16f0c5f53cc75f61ef3a49e33b8ab71358aef4aee9fe5f3bbc433c43f6bde55a70b1bbabec07ed3bdd3c3775bb531f825738df464f953c328147c4354efa73c5bb1915de3fd328f762a2f8e18c75f800c9a9a8352e1a77a805ecffda96e32ddcf6f81373f4645cce36c13aced92b0cc857a44e08af8091c2abd32b1dd8b9a8f2eefe31bb1734e80cb467148591d31b5bff0b3dbba848675e3f169e016677e55e64be138c4dc0f43c645f04757d8a73ccf925c7fbafb828f44c456059f57f559f08357d8acf00cf0e3099f696d90909f20fb59241d8bf2c54afe2761eda97aeba77aaf268f4ff263b9978dbf7c3cb3ef38b6593dee78e07e6553f5d7edb4b69fec73fadc5e78d62f291ff503fd310960fdceb3c0c8f290c8698827d27a4486e74d6b2494fefda786c950f71b36ead154777e32af3a3fdd33ddb95ffa06e68c543ad6f3b9fccc8efae33e7eaadff33e36fb59f4d81e353b5ac50da06b6e1ffacb1f647c694c87afb786585b73cd278f69516c853c3986a3e501ed2be5370177616a0e6eb3bc0771acea6f214e27e31ffd93f9e7f9c17fb03fce51c739e3397d5363d6cc4f26c7da9ee63e087abbd53b419c7f3417ec241c33ddb5687fcdbf627ffd8a46146fa3b2ad025d9bef2bf5f93b2d1600d189b1f65fb0c334fcded416fb15d95ade6e1a5b0e332536a9da2bc697ec15ab675476c6f21a6bec15dfa03619f6ed596e71d59631be26a3e535d2e5141bd42ed3b4a71bb78d0db627f399d76d4f2ffb92ede91b9fdb66be41ec177c57d5a652def52bf619aca1c903e7fc531bd4eafd1d1bad146cb452b0d1e0d9d315aebb29f465879fd1e6fa45edb13ffa1d3e0bbfabedb3df594da6cec7ace562d3bebb905fb355b914045ccdca7663b66213d779a3fde6771aed2cf10c38aa7d1738feb380e8afd6fc1eb2b8f988fd9dfd6ab40fb5efaddab6820c516c39df109e39acf58d71fcab7dfbae8cc557ecb9c8d7da0c70defcaadb604b39d663f25c65d5e6fba5dabf8a0ddb53e7f28beba5acad17799f35db7d56af0cbd7041f4fca69a2cfd588cebf8049c0bec9fdb7e7c1e87e36afc4c794de8def9eb73396e9ecbb6662ed5da31116f52e5c497639c9413b88a1dfe810d58ea6d408c277d620312bda7c906a47cb3b06f0f884dd755715b0ea22e077ad6f696c6db2e7b1fe69397f271fc55771ff8fda7fd90383578de32e590906d41ce8bc1ec45cab311716e001d0747651352ce8c2a574ec7a7f17325cf91c6363c04fe9ce5241cd598909e1b5ccf9b5d61fd37f174ebefa3dc161a5cfe7116220e8b060b54cb7d43fab80d3c3c536b1c014fb816e626e6a8a36ee25635332a8ee6bf9277fde739e578dfbcb3f1971f1bb3c6bd2fcedb47406c52194bf99b38462c275ad17158fef041a8a1a8f3740bbcc2426dc742e6ebae618bed422fcc12efdefa21e242d672982bb95c5fcb2a373fcb6b9639e5453daf29b79bcef51a6320cbff37d7d55cd77c9e8d73ddfeafcc35f8bd1a3827054e20958b94d6a3e872da57524ebb90b33e80da17863381b501ce89e6099d805bad54f2d8050eac31e64788eddd597edac25fec66abec3623baf3d02167dd636a0ea433bd1a0f89ebaa7e0fcb29a8f2d7c59ce41a4fa0943bb867f54abd1bb1bdd1aeecb2e72d9251a55f03eeab9961de1d19b361ff3f5097046734af652c23e3b8083a6a7dd2e977bd36a94ffd2cf57b254c7d7b2c72e9a91cffb531adf291d87ac57a29efb1047fc964a5f2e18be3bbb84f38f724bb0f38c3a0ddb90bb6d7515bebb46f0b79d16b568f08f5216bc62d4c319bbf5223f295f9a371ec5fb1d950e7843994b5ba1dcab30078c3b4d6ee23f0e687d05b708e186744f48125cf0ff33b7d22bb4016097346733581b703c7425e4be0e763586222ef86dc5e85dd5fbb56a8c9107248b535445fc97f8d0df714d6af6faa2bc2b1c53cde4b20c8828ad7428b8f7964b593585bb7665c8b9c074ce49940ae49955765d08e8dcc14f6e2017d90b4d657e1ce9beee7a78d37cf27f6ee44f6e5a4ec1b93d5277c760d39b6b5bd5af1934ae301fe585753f36836cb8b49d9bf430da38e7fb0a196d1310712f759c359c539fd366eab4917609c8494634b3aa3ea7c43729cbecad136aaf52ad70222bf09cb47ae9f8b55acf9b3f5ef75949a4bbb926d4aede58171fd567249b667c919ba1969ce6f8855d276db02e7fa9b528b2aef696a2fa0ef5588c7105d6920fe36a9e74777b02e4bcaed3f69f2a879ed42605827b1766102b54ea833493139b7f205cb352a6b6dddf59764b290e729f3fd2ef7e19af16add391600bb47ecc3b43ca4a171bf06857572ece535e8b890e3ee98876b4d17d96aeaebb6dd32f4c47a6f884bccd0ff0c67a68835aaa9b993cf15e45e71a92e8bb570c2b8f3b8ca743f6fc5b9e263a5fb20f207ad7777de8a815f2e03be7cc03a597da1ae99e594fb197026820fdb92f2cd297f0ef6adc69f436b03236399d37c35e04282dcb13d8fa1d4ae65f96b423de141c5d466b837a1bd3c46452cb4cbbf93af853ebaac1e885ddb5c3be467ad956d9d365e7211eb1aabda9d65fe3e5a9c37f41aa8ade92c4b4d0d0cb4e5169fb795149fb6558a3aa0527b4af58caad646945b3a5b04e6f395f9e9c538f13c23e7ced8b8e7e17eb117757f5c03d53c525f723a5dc9f3cc781763dbda85e4ec7988fc09e332f4acdfe2191418d62324675b81fc395f79e6a4d43df3f4e56786b65b04be7b4a8647c18e21fad6fa12962f6960b8e0f7126438dd0b6ccdbb182f1caafb4619632b6c1e638cef7cab3d63a53c0372b6e033ab83fddb631c14bd5662f7cee387f0de23b206319f017359abba47f8bc66714de41d9e94835be02d771bafbb177d90c17e9c07dee9531b12f82956ddfd14f8e097bbc8763fed8b9a8b2ec600f16c837522f8dbd09f8a3cc4d826f7d971bda8f97ea617d3f821c632c8dcbc49e78c785ea1ac7fc53ad6b8a4b59df2f5c8274bb14096764ece9807c512a9ae97ed5fd0cd296e08d4102c6df794d835bbb5e9ba43384ac999d655fc1f553dee6b3b4becf412f8cb2cda66bbf755ffead8cb17b5d61a3069914711307f681d6cfad3946341fcfb157fc65f8ed9bad7e690f380d0da5fe13c166ad606bc9f12d7a1f85b769b610e908c39612f81672a1ebe5e209f71d4bf4df752ad20c5e9eddf01077635b8cd4cbed62a1e42b2bfd6d847a88d582ff368b4cc26f6f2656a92362046c0f401a9de6f518d853857dc9655facffce92d65ae5a33903b63c0ed9a00a6e9229d02d7771f7c0db3957c86cd56f5eb2765e3f5a7780876ec5db09dd08fa1f46b66aaf7bd7eed3efe3c5e572eacd7f521227363427bc7ba6e18fc0126cf977c7fb71fffb60d3f7278bdc98f263daeb257cf1b6ff14da34f6bf53a81eb12f34dde0ecfea893f698371b9e9da60f5d7fa3668de938c27821c7d79b45f00a732e5a2e3df55756cf2f79c276745eccd3a0f28930db436e61295340f12f0795ed2a8f89e22cec63c96f193ac5d680e3e42880b39529d1d7dcf3436bea741d16b4705ea8f41d17ba17535a0bbe33a1a7c04de0bcd0bcb5b28dbbe5f05bca29b84810d783b9c979ddb7eccef0a7cd3d4b6aff4315a4feb2f57b5753b9ae789357e2026c4e047e0b501ab2b2edc6203fc77ccce127c91808d32cec3227f09bd25d917b7d01fb7de5799bc6e4d8aeff1dacd220f7ca465e885c777ca959a7822fe0de907fddd7677c41e8b6db74c46bb83641b43df7ab7b7c23a53fc10e8c794e7d2f1bc3ebe7ea0bffbd9614c639f9e199fa88f8ac88dcb3b9735742cd8feb076fba9895c7ce4b92cf75cc8afde0972b7f15c64f3b2b4f347cc38fbc9fcbd022f01e78657fbb9f0dd56d4c2f3605cde2856d44d7cee519963ca3157e33eaef03a05fca4a033ce89fc51b183109b2dadc5f69e5fdf459fa1c2ff549dbd94c755b5935f11cb0febd184b8db4aad55c3fd1419ddd3fbaa7f7f3707b790715a227694540f59d58c525f14c7fbe895e16a9093be0af99647181f3bbf6c7c8107a20973cb3ca5f355ffbbe443aa6a53d1aff568a57395bf10fddc370d77e3bfe5b3aae7d7e1b9a9e4cfa4fab6f22f3e5389e550ff318ea555cf59a3fcc45feac3dcfa5a1fe6cdef5dd5ffeafd83b7d9f090c632e7510a3584dbc14dc5798e0107baaf604453dc18d8bf0b953f29756ce6bf547999608f33bfea37b22ec5f8e3339eb9afc566441f6d17f415e43177045ff5f8bac9c918093e67d15e15e583b7dcad597fcdec23065dabcff2f15b80b32fe8c282cfb3cac7590d684d05e85db799cc2388eb83e86a39c353434eddd8ec56f80fedb3fc59ae03bf6bf8a0f8b59abdf647f39f0cfbdf9cd1e2a6cc7f6bf67620efaeb481391390e74f9ea1be5709e7aa518d69575c4760ef2abff3f75439bc1c938ff137bede84df65ded7f90deaba295e1ddb177c2dcad8a064acf97301b349582774bfd15cf6c18e9c078cff91d70e736c01d63eca5789174a94ad568fc747205f5bdcc33267d8ef49a991a9f6fc865cc61c07e0d7c6d5c842321f3bcdb52bc407d0e58eb27bea358630a6d57c63be6619fae1306e98d745a77fa98da582cfe598e05be4d88713f21c9c13b075400e609fffe27bbccdf82774fb7c8edcf278fe2187a42ca3c538d55f3c4eb5ed7f1764c8d919befec7b10fb5f16fe8ef166210ed1e6257612cf741e4f6266f9d30860b5c6ee9643bb8405ff733324e7fe199d66a7c17b8bfe9b72de2564e9e6099eb649a764ccbfe6ff9fdad84cf03e67e71d94bae5993f3af7de6ef027289dabf153ec85227dfb9fdff35fd0a3029181e614dd7a5fb41880fb897f0695c40e2e3b0a26229d9b913aeb3d7e25ae87351702836fefc8d727a321b82e3fcd03cee7dad26dcb478ccc0ebd0e7592d35bf4b8a1fe8cec8c8080ba243eb30a0989d40d6d7b86cd3fcf15e11eee77962aad852bcdd4762e42d22db260ace93128f647935801724f93cb99fbbc243d7ffce63d7df34edaaf1ed6ff2b953cbe1a53af00071903ed1f3ebf99dec0cbd93359387f5fa4d5abb0139543c8f76d6701df256df85eb1877707e0901cf722d9e159d7095948097932bb9d04fe2c8e4cc8895387a8d5f527ebf5f01fa633e62223bd8ba054cdd038c9d8c1ff39a4e5783a35fcb03d7f46bcbfa75803cdd80d8af95de27f6f1afc63e5639cb8fd083d893d28ed4e7bf1cc84d56cef97affff5239bce4731464d41b7dde117301e47105dc17e404f88bfedef87e706dc3f3d4b523ae91da7aa43a57d45966113b531fadd4efccf350b0bbeaf9d3fd4ac68c96d7c4b64ef4acfe9f9fabc1352cc247e82f20f723b2ad476291f6f475b4cc4711d9ee4742b93c1baf23e74ca7ffcdb17a1f75de24b93daa1b7ec3794e1aae65b9899adf84188cee3e4d4e782daf1edbc1fa30bee71bea891d72b6176eb679e8f6555bddff9a6731d9d467f86af479dd8fb849ce18ee1e73c5dd133997426f51adb726996389f644ffc0cf06e0b5abd6de64d5bfc23c48eb48533b40ae692d69cebabb9fee1777680bffbe35c850acbbaff629d9cb9764d8875cf0d04b5e1313f217de2a7be5506b7f395a103da9b56e7ee716e2dd011ee001ec3253f0bd8bfb0ef454abb21b5f2dd4d9f6fd4acf5cdd52d8d39057b8a89f0f348e2262ec31ff3aded73fa17e0c7622d799643b83ee131ecb6baef7e771dbceb20cbc7aec96ff2ee2026a7eaf726f4ed2ef8ea6ce1fe521ac9d9baeb603f8cf74f5fee42c18f61bd610b5816b3251c0986df02969f6d153fee549d97f38c35b1a51ae65cc29ab73e40b7bff18b79107a661dfdf66a68e478eff5ef361015773c3188979bae2f5359f96f0ef57d359a2f37109ff78ce30cd2f23760960010ff5753bb8066b7e273eaebecaa5f4444637717f547defff59df8d1b60df11d9f0a7e31b557ac0afcddbb8568384ef5dc77bc0effbf7a7675edd9f77227d9c93675abd63cdb728bee39bf61d1ffc1dff64bcddbace887b95d84d14b385fab026baf5642fc03f50d779e137d03b425b57abc5f7d1ce19bef41c9bd916ffdd73347e057f19d765a6abc16e56ab07ac745eeaa77875ccef0def41af1163ba56af353575e385b1291ab7167c7cb7d4ef3c3f37c458b7de3788ff1acf87ba0d48e35be99ee55b8c4b293e749bee5325de548bf50871afbec4d3f9596c46780ecd45a8c7a144bcfea5d7dd493987db0a0399e3ad3eb7e385386a7c94b8010aeb16dbf72e8d5bbf6e3ca207cd810f45ac1b5163df813fb845a39ce6972c8fe42c8d8da67cc8bb10eb66f99770ff02c730cbc3576dfe492ec5ad580ea1bdbe6cfc39c4db27e6aecee540df49883beafa09fd9a9afdfa589a4a6e8c5bc51a1bc6e914ae6ea9668cebf541dbafb5a9e12f3989314c257780e63d926b040e13194f3c7f1f89f893499ed03177010b00c65588bbca39157cfcfc99d0469d4b48337f27fa6c391e0a7b9ae770b1be0b38dc8809b1a1b997cd58e19047e5c705f200c29cd6710e3ae4f727798c108fc57877f2596c99d5609d1c2e0f9232f00743ac83c0fac0b88cc5b104bb1173feabdcd2c46bcff873c5f7a098d949679cc5669cfe84bcf703c3fb3f077ecab064b9fd2cca5c965f1a17ed45e88fe119520e6bb5de1ed342c8a3b3bbed68adc1bbc6ebebed14bd32720779bc837b781ee0848e27bb56c295aef26ec53575a1df8be3c3726c6bd7b23541f4bf89d067f437ecd209c3daadd617d165d0bfacefb310d3ff4a5e417f2f61389ab19caf80efc2d63b396b2a396741ee441eef97dd899237fb6fb78b7be096b27368c5f7927406b171fe27fd65e3289f8b361bffdd57c7b7beb75ea57952dac7f77a93e65aca7b6332771ffaf40cb0b81cac9d5142db72ce9ed5ab644b532e961d224e19f31d0fbfa7b21fb9b5277b782ce3d6836fb92eb7b25b58406edcbec2c3e93e92d1b849feade3c2bac446788d8b16e48d45b60603c5273671f711020fad060785e574f39c1c35ffa79a7b250788e5d388d85e05f838d5efff5b394152dda38867df5ccf2df337fd93fed46ba5580c8dd8dda1d7be25a31de6f392368cf33126ba9f8ded0586fb888dfc12b6abdc141aeb8079d3d6769af1be010bbbbe1ea0eea87b450cb22ab7ede9f51df746f626fa4364be2cb666f17dbaada88dd72ee05a2e9f7a5f7a8e71bf26c6179fd3c26bd5e748f1ac119cc594d74aa357b0da063c5beb7b00d72de80b0a0707d321d4d8169553e71cf376853dc26518f92d6671d547e087b933a29c5ce5e0186e31ae41f77abaf16744ffcc9d1170eba6813f4b83c22da2ce3857799fa8fc9d86fe2e75384720f8dc8575cbed1cd02f5686db25ef01efc5f0260db73b69d81f825ce6368d4bc6ef9562d3a14cdd3fcb4979df270fe4b9ba6d7debde9e7df46f8bfcb65570fe4fb23eb4b8c49dc169e32f0ee3f63d8eb6f151b9fe1cf899ff44ef23bad2999e9b4486dec25c950dd0ce3529dc322cee57e403d3af19e0d928c253d489b5eb47db5ecbbac0ba40ce8b22b27b1dcecbe275bb8991e571b1de2bf7c35a8bc136003d0ff158541c7fa35786a3f92af4921c70a0cd5ee45bf7071bdf206ffd9e3e34f758f33cb62db236aec09f26f46de175bbc0c551c6e98f6d7fef9871539dea89c5e722c017451d4cccc1884cb9765bd2fd614cf01ecfb8271a3c6af21be8a8429da0a6b64167d3e13a9ad4737de07bb7e4cf461d785fd5ffa9391dd59c2783685fe7b1a6755f6564cc73e037ae304510ef7d3fbf4576de9a9831597f7f45467e998c8e9db8d35771784f0c57a43a13e8fc3fc951c07c677817df19bea49167bdb875bf2cf09740fb76fe7046cb6b540e4e91d1ddcbbe125c7b5167bc8bf918adf91e94d7db4e87b3f548bc317f0fd475649f9118fb84bd36ecffc719c5e94f933d57c88d1cc59a1c12b99fb036b05f51d2aefb23998e14772adc96b8e36e710daadc7cfdf467c9da3d08d7f57f3ba3e41a17cbb7d01f644416c23ea0d736c573427fde22f6309567e8f710fc3acf7c0989ed3e125c4b4d317768dfa5b232ee2c9fac6561ade0b5be33bcf51cbb9dbd5b757c3bfcf7fd8aefbc48c3226fc52570d27c24fe18b8e9e9fed1f823e7eda0c03d3079d0b931b5e357c70a7eeaffaefa4363720fc7eee6095dd71a3f2ec5686573d8e85b55652dc38be06b59ebfbade14c531db45a333dd65fb64ed6867b0b7ca21bf4ca4f71b230a799ea066e19ae9207d11922cf3a46503b8bfa11e04bf88b7443fe792f69b0aade87cf919a1b013a4e9a09fbe04cf584ab9f9f637f348ffdd1ba9c0d075b7f75da4dcbbadcfb3be326617f35ccf5b4fc4ecf87c1312e075944f4246fd965785b8eed5ea28ebbdfc8f98d4d7dd19c036da53623bcc6b99413dea8372d280f0a7d06b145d5e70afa09b7333f6d0ffd6fc4d607ddf556f990e8796126b16fbfec454c86669d0c74cd93a4d7e9b963743a6e1ed9f7633c9a1fe332aef114f906c88b66fbd26b67ef665b57a7afe41bbba7c8ce6fb1917f0b3d889beec78a9e127af7d3c61f3c36a8fbc44e7e8f9337e736fb0863e743c923f3ba1f6fb6f5485ee70719974bd695ff5087a0b65797be0fe02182bea9e477927d2ae9ef81772f43cfdabdaf06c5c65f3e743a35e8a743adbedc8405f29de9c44ff396e8d9087db6926362673fc87b2c8cf4cffdb6ca3c4da8ccf18c3c71cc933847c7673a14eadf99bff19787b7c27dc1797a61eba9265bea711c25a6a5f6ebc16a65cfb59c2bd48fa8ada38c1ff3172a39aac7a898cf027fcec74cc28653710b25cce43413d7a2a2fbf2bdf55eb83be41ce1eff1d0f3e4f2ba44e95e6e5f83fcca0b693c84fa96ca1f02effddc2ff67a6cc79de5312cf28fc0d76342c8711ccc014efc796be385c7c0c01ab527b658eddacf300a44bc83863645be15d93f26d4086ff6ee23b1f362e3cd33fa2e148bc56a27f67705973da0b196ee316e018ec461a2faaf3a645fcd0fc0bf25f45393f7dd885b20cfaf803350e3da6075f9143f58cc0755640a7f4ead8d651e16563b1a2dbed5727cb83f2961f5897bfd5a7fee431b1bf31c7030b771236e500ddf43b37e9ec4cd3e93db4d3e5dd987f6944318fd19e4cc845c2cdb7a6c2c8e55c2f42d38fb445c3e319e229eb7629b60776cbb551c634dbf07cccaac64d800440e2f680d1bd8fc724d74fe0e5cbaf9256c332e4d6cc733aabefb6a8dbc9f1dc9de8e8a0430d82b3f910673457d460d4b026b9519d68298a34bbe133150021ff302982e14822d74037f16f8b7ec761ef8f3765c505c1b3b7f44dba4456ca5c05fa4813727f606996f099f2ecc45fe5e592e8445ef92986dfab98e4553e509e6dfb4fe4123bc46fbc5197f6fe4112e02af7da4bc5aaa2e544446b735f5c22cf2f2d3fb933e2446154b6b788f0e8b7b34faffed7906980c828d49d7e390ec9785615d92c292ebbf1fd46e467d88ae49d0098681d735027f0e35a164bdcb7ed1340b687b12b602fdee799bb03f7791316fd37a25567f6a4536ceffc44c3ee8b5a22ff1635688716b9a5341ece8167df716d670537d9bb571090db7b5c05af797c44cf7b342f251e25a426c327e0f5d07fcddc2d14ce4e84ed16f377e44c6bd9dd882dfcec61cea107348f7d3b75df7c75b7e7b3763a9adc4c658d2b86c757fbcedbaf12895dbd81fc751b1a4febcf83c5b29f717f963e38d8f919db7c0af6826878db7dc85de8bd20ee6ed87fed84a0acae9b9eaefa3a27709599b5cd78031bee09aa33e5ad3b90446ef42e4f2c40edf582cd1371df2ef382de6d7a898678999b1357a22f7917f9355f72332ba1f81bf38e03e22f78d6fefe62076b63bb15dba472419c7f46df00de9e3c1fd5b2d9780e625808ce63e376a3755f2b059b7d6f82fb5d893b6ecdf8bdb54e7146b4b3c979c191fe8439b95a1d93d879ef548fc714e732d14bb7450f9c318ee89e11e23333b87feb2dc7873eed751efa15c15c7f742b0b1aa18fb3cf097876941ecb2ac43ec551cdbca8e1462e93d87c7dff9ba6073f1fbe74ac5d7a9e683e8df2ae68f50cb5d3f9f5612ee043e637860fd3ea97dfbc1e71e6ba27e897834bbf12a361786cea6d1e39cfc0bb1de4fb133f307e0bc55e7cb316e412e958a1786f1c3d76516a3ad51d54195d5df93b2bf9faed01f2f73c08fafbadc1916775e12fdc5ecff7678fc777c4d6cae7b4bfa50d459be25881752469d85a2978bf1c5f135213a11d7a1595c5113a3e4fb57e64d62b95b8e19144ead3da293f7487f886ea56f57c0521273ebf471c7bfd17ebddfba3e5c13538d277d556f65784c755c9848c0607e86e1c2c790add582adb9f4a8c391899af1f09e61b8091c38553e66fce49dd076da29782cac6f92bef998ee293e4c7dbf964ff6f3d3bc3de477471c17ea5fafb09a468eceffcef08ed0e761268cbf94eb0a44f79530a05e41e67420c7b9037208c6da7dedfdf4dbf3f9627d9ff9adb9eb5abdd5723d5fc339f391f2eb12c32aa3c2dd2d3a6e6b5d50fe1672168ee6b9b476ea9c515fc26984981eea82e23c3f90f3578bdd487f6b8c87f37b710fcddbc9689c079d25cd5f8d017b6b42db4d381770ffbb632d7fbeb57b6f6f6b6bf666f586aebbfcb5deb943d704fe2ec43d2c2a8e2a67786b1cc7492dbf24cdea63a9d47c93dfb7e9de057b63f091f8cb32f4e62dc40373533a16941b1ff0432ee4bbc41c6cc3d5a01d1beeceb1ad96339a9f03ef7ec2b3d67d38a3f9d5b1074a5bf9c319b98fd05ba41baffb486c370bcd588adf68e77eb42c451fa998972ed8e7c2b3d6fadc0f3afe1b7fbe08fc711eed1787fa982973d991e71178bbd85a439f7009d8c6a32f5e67b6a57e224736725cf0b87787e847ee4762b39c68e472abadb1afb40518fd1a2e6d2ea7f1faafe60229e3a1e37610ce42b92fb1dd3bbd7bc935dad67de71c1b5b8bb789ed4c7dc6e1f47266d78fcbdd25517ce8d5bb293cdfc06b78ced7bc1fd98de2cb1ea705e42ca9fa5d95e3817359c38cc37c6fd04dfe23e780a797b870f71b7f4e6c8c61751ee4d768f7ff63efdfda1365b6f571f803fd0e9662ecd51eaa090851bbc5c8ee4c20138ca03e6ddce0a77faf1ab5a176a0e97ee65ccff5fee7415f9d04288ada8c1a9b7bdce37a487a6e11975ea59e7192be65cdfb7c7cff5dacb9728c82f92aee7a97089d03389fbd0fb6877565d87651a712cf4bde7712efcc6e1478858cad8efcfe35f5bd2e3e03bc9baaf3bb8764e7f671acc4c3385f6c6fe4499976955cd6e7279af7ca5d9fc733af93d9e087f64e91e595c80688c6c3ffb1d17945b87d317ffcf09b2c13d0999774ddb3477834a665b748ca149fb724ee24fa30b57d167ded4d9c45cf17fc3e91a748c7e74063354c0f11ed212e06dfaa578bedb571c6f27e4fc6ad6e5c8bd0c7feea10ed6de9fd355736f0d69f16c6e01497756eae5cc745579bb65e4bf6292c0b347fd5ab35efbf2efb908f41b8db6ed3cd3e8baca24a27dbd3eb26398afc9083930bd78a3196a93391038bae537cce17d31de5c563b284ade15acf023df5302d0727748e633bfde92fdb72f2d0f8dc2538cfb3ad2fc4b6cf0b75dd7b0443b7623a55ed63f04e49e015a94ff53132f65c9fa4fdd74d2c97fa7b405ea8fc72649fafbc63b402fdeff63a490fb1757d494ab3a7f8e91baeb17559e23c8a64d33fc785dab65bf66f0493b789fc790ebc7a93b4b0ad7e81cef0d4fa9ead2dd3003d600cb54731870dd19b90be3e2d9313fd3d31f2220a1659ec434cb84a2aae9608c46a905d069c629cfe0cb1fc8ad56c19531fe0701f82ef94fe3efac43ad2e814f716595882ae728cd11a9e14453a2e84b8972a2ff0da27f1debd5ca3ae852b0164a2670d3c3c7fabbbbc09e2da9164b8d7201f18bfad268f65c9ea062878227dbc06c9de61deb6ef7535d0c47360057e2a7abf8bf9d9f7afba3ce93bf2259d385d5926c975d0e498295abb6a3ca99507a98c77025fc4bf64ff95383f118eab957dc87155b91e4665bcc97b6bff7a74274e9e5617654db5e23bc46faaa63b827725b6d7aa8433b08a7c97c91f699d097ab3fc6ecc5502bec423e65980bc38b50e43edfbaba665744c83f95e79b7a7d70b5e85f8884e36c119cd70c8e21981f1baf45daf9ae7a7a4fe0dc804cf29e2d2855a366b7f50ad03f71005b313fa6ef075f7669a3cbcec141b7defae5c1de765cdf52dca46a27735cac787ee417a39a9e161937548f037e8bd4adcf9c758aa4b40bfbdf4b60c8fa2f1d925d505b84f497c4cd2238bdb02f480fe736cf44f84fb41e62f3a241d8d2cc067a9361626c7fadaf6baba0ef0791e5969c1d739617e62a4bb336c2fa9f90db86f361e38beb3493be8eca0b625c86a9cef79b327e93ef29fb2c8f26ee9c439bffbde763a1ee17309cbc50de81ae89ce938e7f7717690f2052066c43faff389099803d40f5af76739dabc2f6b4e752ca3469728704a8e9716e340eab923780c5e0f16f6da2d5ad571535e7e32b9f227baaba46721b923d48d7a20a7f2aeae8af58a3c26f30f58cb25f8140e71303aaefdf921b5ae7d6a5bd8967d0eabd139da8cce71b9ca6223ccd6817b037ee2b24f784fb0bf246172f1fbd91ee7795c2eb270896c3924c7e6740ec81e9b217da40fedf82b8c1144736a7845bc199549697e22bb40c64ac93e45f0d58eb37c1dcc9f63cbcbe32ddf2f7c5eb27ae690930bb5185bf65b9ffad9d0997a90730feeebf614ff3238c5932dc72f5894f5989aa7683c3ac49bd12e29cdcbda14707eca9a7436a17296931a50a8bf55e477cf69e96dc59c63c0689ce39d7b88a51a928065040e5aaafb629f745c0e3a985f60740c83ed37dbea9f659c26a7d770b169f64c5daf7bd9ec87b7c723e04a5bfbfd6ed450bb1e6ac6f686a7a8e79cd360487d39789d5512360bd77b609c908007e2e743c3990ddc5da03bcd79fcd636329adb11b098ea3ae0f0584c1e11ff00de1f368cf54b16ed9c730c31158e8b9dcbb1e2755ee013a9f5a90af850b07c1675aa375b274bfe456d60fc0ce133916445d01b92daeeed3225e871bab039b8cc363afd97f9956e5c9b97b887e44aad0b49f9ec8fd603dae3f6b65ccd29c6230b63ec939ae349d57f626bde1cd4752cc02f05f8880bd40b79e3eaa2b13d06ef0ff8fed73e311cefd4e57d6bdab0b56d18d4afacc371301f18c61548fa29c83d8f1f13ca87e0dd5ee9595d739a6e236395a135182e914c1d7ce29c90fad9863577e3d6dc0d9f5d6067486b6ed6b8e6661b562f1473d5703910d4ef32c3f11d24a32badef859e77644ca14d788e5f774f82ad46cebb9b1033aa080f379175ec6c9cd4758d126e4db235f5669f929ef3e1d79c46425d62cdfaaaa6bb791576b7185f5df5c53ac49a7532dbf43b510fd738966b82eadb7777a4c6b1541f54b327de6ccca5cffa0f7cfbcdf72df9fb1ada5362575ccc13fbc3b5cfd133588d7d35c6dbb4ed34c7d0503bc42ff5a269a7a156ea8fa55a9fecc7b24f7d42943b619294e6262c91bdad8b8fcabe63f07d0ab8669c8f7878c3b5b95d6413dd640c13d60f795f26d2230edda4b7c862cbeb90d819f858a41a1f5ba46f90ba9727c84f9decb3c41854299223fefc5793deccf63fd64db74969eeea3a904f19f99613e073264e1e69ec85a8e7e46141c67ec2e504dec5b690b61bfd36f7fcb802ee416713717589757a645a85beb389fc05f3cd50fd7285d61960bf649d0a9ea17594efea1c24d67f9b96c5c945e3d7b9e6efbe27d782045d7f5aba55e827d446651c332df121f21cd2b1da9ea5b51f410e425e0ec639a26fb133baa7a81e8539341750ab601d2c7624c7aa13f7869cfedf87332c2cd1bececfb1e1d67a629b0d24ae95c7e75e780e6a0b883108b27675f3c1c7c9b17f627b5afba0a71eb0df40bf3f9bfd2eedfb5aa8f52ae281fa98dfe6c1f7a1712ce7c58aec75b66670bcb48c7bce47e4b17c6da83f5fe79280dc5aaf900cb0a8dcd2d99a9e90c7fabeec7fa6819b87e5b540cf9018d2fe75d9efc41d74fe99fd570ea745c6fe86bee375423082e6fc9cec38ee2cb2cf09ee2f47df9796b58d3b2da3433c718b649337e3faa57828d9a750772e443a7410157cbffeb55438931ac684fa8267f2fd77ce00954fe05dfcde87e4bfbec617ed8f26e6896b999198e7279c57b3e585c443ed23c180dca663527f734cafade835835dabe8b58c5eeb07cb3e5a5726fae657d15707356bb8fae0c5fbc42de272b127fd02de89b837ba91ba6c07b5efb61aafb56c8287c539674bbf9b239d55f6b3a58173041ece72704b3a836aeda78778734176ec2c36cced6338fae233f4d382c3b157d3f2fedffe35b9103c4d5da3a6e631e7eff562d44f19e71e4a7e41fa77dbc7eb82be0fe2c7c1e81805aecacd0defeb1f62dfdc45cb7e1e592ec6cfbed431edd7717a4463017576e8b834d8af8caf1df7edb4c6e3de882f0bebf1c17d2032d3ef79556c761aff2e8cdd589c07f0958bef87da95519064641deca94d1305f323921f53df3d2486b989add527c9c73cc555b78be44e24f829e0f953e8bb5b37888a78e7ce0013e0f78b6493ed626b9047504369707a839f39ece99d6723d0d1eddd742cae5169cee85c15484727d827114f4379f5c7b3ebfc2dabecc93c8f4ab35a031eddc33907d6f51cfa0b6ac37593b2b8d1da1461cf3927bdf94fc8d1f19f30078ce555f184c5f7d079bf4f27ee25b9edcf53c3e946bdd92935bccdda283ad3725045d5e0b6b606bd005dabfa1f91b1fd9fb5bf18ccdeecdb8fb7e449b6eba11f9e57ad294f1ce0c153646fe63fb81c1b8637a5f7839eed55f1b87f4b7da4cf3b507b7636be68da643ed2c374e79edfac410fb01c01f8f0083f0892cda6979494ab4fd5f16c9f7fbf881160732c8d217085f332e603af3fa8a15102b77b27f4e1dcd9b21c075d8e1c59e3600f56e4dbeb7839db7fe2bed3db28f8796ca334d55ec618eafe36ee2547db740ac0b7af069bc4f0aab4f4aae9783447e73ac6c1d47f67359b413f713fa63ba7888ce286ced505e0098a53a4c66da88ff4685b9e41de0f71e1d882777513c37b0e83113acf385986ec19ef86f66d3aee6ed7c11cf48ca98fb1eb71f9fd33f5fb806d9b06519eece69cec36ab08d7241e253b277f5ff6d179d4897b50ffff9418d74388e613f81bb77bd4bfd4271cf2e3513cf358fd908fb837ea8bb5266ceeac46eb127411fa8d07b9c665b8e99f63ca97b8cc37d331e0696eaf0afedbfda8db53c730ea2d1ec2d4a656da5906f397d8e8e05c821ea9f13f4951dbe714e3d4eabff335b9019be6ee689df7c81a7ce071599cc272b07d5fc2b3dbd8e8d6f92e70bf84959dd8a704b89706553a992fc2607e433a17918f48871c907a74bcbd045c53e077b2f24e3a19dd7e6cbe9f23a3e8ac27de06cebbe52058aee6936907afa337c8f1f24e51e0fc4c26d84735359c636cd8e7c8c83e13cbdc45c1ec1c05f925b6cc033af7a665776b1b5111c2fcac3e23cbeb50bfaae81f9a7793c9e89cec5c64dfdd12a33048ad540ee34aee9f387d4dfef299d6c17f331cf0dd4ed1b983f689c7f1d14d3e07800366ef488e321601302b1b210648620e6a5c5c37ee4df17b2197fb5e7c5fac6345e547e3b907dc1f7cdd416b70492733c1460d0d13d71ab1bc2ad96cb3f70aed79c0adde52b437b1feabd549a63bcdfcacf0bac079649aeb72fc8dcc532cef376b707afd92acfaa2dc31cc633cce79dc9d8a7d43fbea059d49834f9c63d0bea734f9fc55148c8ea13f2f682c3299c09acfd2ea7b16f746c08712967c6d16d4ff793c2b3a2a47b7c59eff26b7c77176fd8f7cedc78662aaa4ba706c4ef614bb26d5941b9c4263f58dee371ed7a6cf33a798b6e284f416e2dbe0d72c95d1dfb08cbb4adf3dfb46be9fad370e1bb24772755a9adbe845963d36e8adf8fae0f4ba64b21ec9d823699b5bf72c2ecfcb6e2edeceaeb3bec7c6d337341e8cbbddd2f643734fadefff80754ebf79b441fb17fe56d4ef176dad198e7fac8a1bf8a28c14ce5fd5ef00782526c76bbb1463d29d4d48b1c20ab689fcfd181bf35fb55f8de2e9b1bf2df49d23cd0769ec5fcfc9c3d2f95aff689ea9e61bd93368df513cbae88fd8ebcf6fac7fcbf668abbd5908f9306f757d10592615b7555d0f44f17708fe80659fab339269b03d989f00e9b191e155dcb92c8c1dd2bb23232d922d95abbc2ed7cf63dfbb014e633ce262760a569f3e035c894ace36f850884f91e4e5bcebedd016df30e94b4bde638d57313f49fe083c236026b8be4c4bef731d2ce45a9a67acfbf7f398ecbf1f9b5121d74a7c0f46c58fcde804bca2e2b57a9c3ef6599d93cbe10109e6b401ff45d7c93cf5af1db41e9686d777ad414f3dc38adb5be01d53738eb91b57ee39359ef64d18a1e96ebe5ffb51077803002fb03ac5bed709579f05d1fb8a690975d8a651406bbc75f377df29d0bda17f8567894f40aacf661e636bd05b59e609789fbaa33ce9cd3beb89734efd74afd4e9f5afc7b8972e42bf8ff6dd0eceef9ebb4fca413732b27d04df8b6cc1412fdecd143f307b3e98df522baf806b49c851116d3f5873cbfe1ee78c772f80357ac1fe6d6443221986df09f2691bf7d2d37437cae3b28fe585ecf787b179c17e682a97acba1e1a958d61e91de35e42fceb186bfa730335b92f62df47173a16dc7ad6ee073226d067bc37d0bcf7efec0da6b3c2b7c17c403bd8778ebe07e924a1dfefdb1364bf806d4b700ac589da75b6951f908c4ccaf9fe7d393a24c6d32e257dc772fc82e414e8c2d00eb706f4985858b3a7753087fc31712efa87a44bfb42b13de60373036397c7d6f59cead6a182a3c7ffdaeb32489c5c1a0cc9fd35d9923755ef1f7e1f28f51668dda6f485c5aa64ece02d0a6adfb4821944bf7bc74b20e29677f47e05c726c9a5c4f03aeece291ade6b25a5477156fc9e2d62cb8b67664788c791bd43cf41667335d47977e2ad5b857e3a0b8342b59f614ca498da63dfcef19ef50fca3bf8b9d3cec3a09bbedceb977ccf63e3c3c52b915c78494a73f766997da48fca3833ed3cf1313285239bada115c5b7c9fa06faddbf8d521e8b21f0aa97442fe3dfd13a5e4e11fb03235a09ef95d711c5afc11af6c859fd3b739974d4f7b48d19b2733d6b40c699d4bf15ce5b731b99ee99ac31a8bb43724ac00fa0e360487ab8960daefb8b9f87b69f252e06f4b7973c4f3a341f019e3dad2df326e72ad7fe4cd0fded30989be27a827addf07cec7b5564aca47834a91553cb100db6ed89ab839e17f1645424a27fa21357a36d14b8455276c15f971af9016a261bf921b6160c370cf92156718a01278c3140b5ff6f50a2733434069f89053940c49680f637d1720471dc08e7b7deec495ac416cfcd53cb419c87c2d53324f16b0edfcbe6d9b5bc5b6878a7c8324fe964be8a3b102f97d7621e59ee4b14cc3f22bfbf0d21ef8dcc7f95631b4633f784139dd838f3feeb780bf3b860df8873a5932a53f0a4c457a33d2bf079093e16551e889cdaea7a1b0f073f97a353ea5f8f77df897101a7b8e7ee813b69e29e918e21d4ba263a495cf68b644b700275cee85618b32ad3e4fd69bf435ac378cdbc117c63540e2ad7373fd6e35c731e6cc5580bd72fcc014330c02f041b37de3edc5ed31c107931c335178531d58c7fbf1bb35c48e1bb34b640cd539510cec6c8288cc87f92f75427a94627e01cb19c731a38fbd8186c61be30f607e3772c7c1eeaf601ee43ebfac76b555af7497521fe255e26c3b83079877dcd9f0309bfa7d5c16b4ceaec14f6b6fbd7665d5d9183b81ff2d92dda9ff1d7d710f9ce3e1b5f8c6b59ec81e3ca72adb57fed4481bd57eb1f29f9a7cc076bfb39e6812276025903e05fd2f36330dfecbf73bdd26f6d8af517caf942ea8e8be725e5e394fcc0926f99ef5f8b2cde9339abdba3b90a93347f873de06e896c42e3c0c718902e7986f39a7ddb08f20f086e15e9dd809f8dc670cec01e4badc125f607b714ea9dcd8ba4e712ce5d72a6131cedc2ef7f44c1bc13f79cdb52945f759f2539c6eba53f987c16ffaec3aa249bc7712792ceccf62e9d2388afab7b5eb2e3a32af2bd177ae672981f59369448d7273e3524578f1189afbdb23319e35a3467e34efc063d27829ca300fc98e3d12eae70dd02b099b0ee8c73d2ab11d2fdf611c4c8f23c46b6ae0179abb96d39683def41df18e797b837bfad7de7f8be1c15ef9311f09aa7255ae36e15065191ece6680d09b90e09e6217dd6e386b2c3b48ccec9d6cb4323bb2b13383baa4137d3db0c521d19a8f520eae00a4e90fbd93eb1354cf0352eb5c15e0063c4380ae819b44676ae85c69ab71d60cf15a9e555b10f988bdeda2a3ed6fcbed934ec3b233fa7fe756b5be999e9800de7953dcecf980f66d045fa24c1b9c23747631a47c4e7564cf48729c7918d6d0e9a0b689e42c3bba5d6a04a3ae2be537ca28feef3a5ee0c047fa8767f733151ec33c7e716daa7abb8436c8506ff69d39e88cb41678d73b3411f8fbb6aee90ed63fff69d7355e267267ec30f398f293aa0f944b272ea5f8bb4f48ecc5f24e62d91bc0f8c9be574c37a8dec0047784e76107f83b31dbfa37f967d503fb0cf8cae29f4ad7964e1dc776c07f0ebc091f88ef30be199392586f9192db10ea3f0e52a63dc95f55df27ec82921fd5375dde96e7e0983f404befc0d920b44ef63cf6c4fa9dfff8c905dcafac2eb8778be22e15c1473ba09ae1c74594177d2e582f339f42deb53c620e37c504e27d0f958de3479579c1c44724eda3b07edf80afde2f5e6bb7adc1d8c288993b5d9ed82ecbdef9b0fcb6b37d99ae89d46b472cff18a9e7d8a2f63134fbc6a41f0a8ae35f864e7299723c030e83c16833ec3ee1fe6d47ec3312b0eeb53d2beb07e9ca08f9bfa19696e797e5312efaaf94da7a5734c037baff30788ba429ea7a557e38876f35102f86e1c1f898d307b0bbc0ee6e9eeff0c77f322d94505f40bd7eee2f26a857a737b7406af4aefb60e0ec59be1dca2c031a2c051da57efb13177cd38c518c0b23845fe624774c71ef60d61bf7a6ae4454c6a5a85bd6d1602072bc690608e2ce2aff21734470fdb62d6e053e4b3d28e033fbfc02b807d5f1cd60af6add7b35fba5dca77c87d87a443a07b14ae05f44d45625c0ff16ef11959c50dfbe0bba4864eff3c0df018df8b29e038027ec7837184cf3470218e10075e87c61134f7513b17cd1b3cc3c6c227b6e54daeed4c6236c47ed77260f03c201bca03b2cf7e8ed9fbf85c82bf74fc1f4a1f71de10b1773fff9239fa85b805b90f736a010fe039deb93970ad6e1a6bb854d312eada54313a8b1b6abf6be310e3a1c0f7636bf03be2758e1b48e33b4c36c07d0bd8c528b04ff49c7e1378fa8654efa53e596e0ff7cff4e7d709e6e0a57b67ba23e71ce8162b05eb84fd83184bf46383f364f97e6be48eca6f097d4a01fb906c015307f851e9bb8ef6387d79eb74313721d31d258ea1712e9f190fedab349817d1b86b848123d4ced0cf71fd5d0a36a920f84c8c89edacfdcbbe99dfc3467adc2921728fe5384c3a47fbf9e53293717a0fc9269c7bc8cb508abbd6cbef9ceb33d5d9eee238b7911f09581e9cc3f8e09a1a0be7579e4edc6aed3bddd4f26ef21afa57cded84fd68483e01560a38116b9b0ef5a1e6861baffd3ef006bf321ce50578f608c73a60c3e979f35b3874ace3b49d6dca9921e376d999a1c1f4befe69ffe8bec2e3f4d0bc34ac69a6337ac150f11b70d790ce033ad114787cf8759eeed798bb8a605157fa7a0070163cb176447d94e866104fa13ff7892d80cf9ebb380c312fec5cd79c137018c07db8f6b19f26863a6f3301bb996cfa877817e5b15510fbbb1ec385713d20d9bb3006e7a4746f24cf84b3c5f9dcc97aec145927ca343a6eca9a52f1dcec5ee095c5b54f711e34b26b9cead2300edbbbf2b89e5fa82379887df36f6f3731e6556c5c8f77db9b30ccf70df8ed27b856896da13d32ff655b48775e515d2f4f26a3220c202f2103cc4aafa8399af4e328e90197cc3128e7bf8b74eb2eeaa3a8d78971e0e90ec929c06abd50ae1a4ec6cb5c758778eb9cdf4d1af32a3438d7e2b428074f145786fef6aaafa781ce81ba9de2d80996584f9f3debe3a5a49f0e70acb06f96df8f71234bcc7744d7aa8851021fd03c4f4ba487171f908308fc28dd3370dd59149b86f50aa787ed7ec22d7741fde730c4d846e3f6d7ca823ca47aef4eec13d8052f5cbfb7680d209d85de97c9355c9f707e5243bbdde345ce43c6f554b97714a33c32a87c009e4d89af007349dc798fc2d7b1e66addb73c7753f2a46b6c1ac6052efb9db8e77dac211ef35dfa7d9ff98627730fe5e9cbb5088379e7cde8172b6b705b426d2ecc7ba6a96fd652338ce35eb8c3e789c76a48383b08d68ed91f7cfd2d386f9fa086e464780a899cf5718cf4322dc99c9b59f6f3b993bde3fa8f780e008fbd85bf27e3fe476c1568ad47f8ef5c5bcbe1f79fcb51df1e1fd93c68fc0f9d37cbcb939efb332ebd45dc9b3bf16e7e8870fe9c52b7cb1e8f3649e9e5eb9bbe1ea0eadf6b6c5fefd3dba81c45b2df4eb085096693dbbfd2bae531261a0e4e82455d71be4086c1146d05c9bfc5efcfe2e6711852cddaeaad2dcc47999acccf26e57801e69e724e93dc9836bb6dc47db3e324dd069c0b9b67a78a7cf3975c978ac7a70b63c0fad9a2934875dbf8795906738a6d79789e592d36366750bff29c06483f740be039b6c4332cb5a89fa4b8d53840f433e471605f4a20c54a6a0cb6800782f79ba36aed77f364b7cdd68027edffc6b98acf068c13943963b96bdb3c8f4bf7a89c399463437b86e55ff30d03473dc9077c6135cc78dbafd50fc8c767d6b8c6f54b18b8f9b4ac732c143921dfbb43fa32a92bb9ece3788c84310a7b5b5ab3a02fedcd1de567f2217785cac90b6a8bc93eddf9416403e3ae5afafd4edc8d0e5190426ecfab85fe9fc733b373b4e9cf5e473e5b09961dd72115f410a986665c7a39e1f7a88027a0747f44be59410d638e9f00f50db06b188f8dde79246bf148b186728d1a681bf4973ed2fbe079a99fdb86b86885b93a523217a373d29b1f8033017cce756cb479aebb806b5dd131b50677ef75bba333b645d0b8ce14ceadd0c88bd0f8b4e29eb30a83d13e36ae5b0587adb9e7558e3d6dfab8bef816f8ca90fcb9acadc1317a99432c27b6ae1a0c27f5f520fdc05941ede89ed77955d6ad9b27567e8e2db7be47f0c7dfbf1fc6cbf03a1ed4061d74532926a09ec7a01754d332873832e40403cf1ffefe8501b142e02cd6e6dfc9b280f8ad7498606eed1475cd10e1bd30978d75b0b5781262f7025e4497c330ac7148777319d8bd24a761b863f33b4e8eaa0f127d4fadabfdd8a8e343ffbd3fe3fc07d887da77a2b6b6dfa0bdeef11a78da7e293e4f296febfef8a375d8db9e22bf7b48857c31ee9f45f2bb4bf388736516df6c6bd5f0fd90ebf70dd760c16bc6a9ae5a5f2e5793ed9bbe5e38f4fde9c766c4e464e378bed1f134537dbfba1aff76475397bddb92037a41fb9d7d973bf12a526795c71490735cb69f9d6e3a71cf71a1c6a0d9990438c4e14dc6204a7be2e37de2be211db1919b9af06ebc4f5c33c57137698f3f309ff53ca276d037dfe09df2babfb3de5bd779e3fa167df5ba7ac4f83c5274d2133aef68cc0ff8adc712d7379c5f365def748c0e725d029d1c22fec53cf91062a21aae29c817ed53f913f6f28e1b441da58679d17c8e807e56b887d8af793e5ce0c7cc0ec08b64c2b57deb7950ce9f084e66477312b0ce8bfd9fab8973887db37a5f8e3669e076ea3c2c89930bea0161fc32f83c147e08a85b83c6558923e179a27154dc7f11fb063e27165f2578b51dcef5e90b6324c92ef49c136d46b7d8e816a995832f6a1dcc32f0a7639c13d2d9bbc96e7e46f6785c921afbc12c8bb87c4752470eec0c8cdfc15c5febc0d5e4e4c07736fa5b6de10c85189d43b0f624973387352aebd0f41fb6edbaf9daf030678d82b3e7afe5702ee9ce61bc1ed45c5af95f0c35898b53e85f719bcffb4cce5556cf41fc7ff3b9f5d819f8a86cb7c7a33ebbcfd3c8f1c6b37048e2f2ea19a9d329188704cbfbc4eb40f2d1d779a33d270f957c15f11faf87c4bef98be6e8bf8e53c0f939d5563d83c6bc3f513a3395dc15b29edae2b16313cbc55d8dffd7e785913e6b708bc496011d9fc84486138c56b067cd1a6bd85ee3477e1fc35d7a358e1afa3b6e5e3b3c5ef787d6f6986bdff52f4ded07cdb9003598c8d9b8770cd8bf5013ea75d92f62bfe8bc0afb30db41be16baaefbc6a63382bd9bca68571cc3898d79243bf84c40e76862149bd8c21854c9cefa78879aad57de97dd201778bbd22d789c39d2059d477043fc9a1473afa53c77525b99cbdd267f6f928f0a9693dfb777d7508dddddd7efa439259706ec418d83c2f9477bed1e68902f4d7d25ba48f3de8fa1e67dd31cd57b5593e321c9205d1bbcdf926f17e2ba68bff4961093ce76989730a13e00edf7e058935b85416aaff137c09e73aa0bd63f35dfa1e22fc4fe68751ee663b025bc8cacdbe0bc5ea693ed668fdc0f76718d2d028ee3fdeb12b0cb704ddc33821eaaf005105de0689bc75dec0f808b09e9890ec4c6dd3c99602e63fc7bf419f7bc5be4434eef2e585eb26829afc796f3b0415716f12b4cf780b5d7c03344cf11d81bfecd4d21d620d7dbdaf4b778dc9c1df5cdadc05e237ac8734763cb67b48f9740d1219acff07fa9ef96d71af581eda663eceb93e540fd4c22e9c462dd5aa28f7239d9729e19b7f74c88f30dece71782e3809a0c658ab993b2c4324fe25ae1e761be8ffcf92fb71c541ef319640719a3bcf4fb87d42af2d82abe454b2693b1ffa91c3c81bfb9e76cd77e3f4f857c3da19f175c8f99fd5ee1dfc95cd4be3cda3ed4b1fbb9e47eef7668cca88ebd4d3a8a3fb029e69c1a05ecdfe97848f702e089e4982e7f6d6999a7c8ba129f723d075fc16670e7d907e52522ba8a205b582c54c1fb423d7c7c8df21aff1d7e6fdc27645780cc772daf0c03ef28d789e5fbff4eebdbf6242cf3e470267c66e88cff161b834f5e4e619b01fc9cc027cdf9a5435c4786c6f294fa28f4996aba635cf74ebc73cf5e5914696f744e768b7dd4a37bfa92919faf8182b7967cb4d2f8c720f7fa0bec8b559f63feda367fee4df2b1131946dec7ef1de91dd866a3785f25df726c2af63ed6278b13f8a703cc276107ca99c26c55c2bf20b753f7a954ea70d03e35fbea712e0e8e0f50d9bfa4e7ed85c6f9f498713cbfc73060e323ce87652a79d6ecfcd59e9df298ba8704d7a58ea97fc71e77b873c5e1e30bd9549035dd7f63ec00c7cf930ef47fb59e384562804f1c746635d7965f7f9a58bae53e614e6dba07869fc29a15e46bfd3defcf30b7dbf7f1f02fd4c60fb5dd3ed7ee55d3ee55dbee1b697709edf635ed1e92de02e7ed4cb2ca1e1fb368b2ad7eb4c42cd6c1fc275ab39e95a3f5477c9b84bfde2a6e6fe8dec2dd03ae12621b2c1f768bf481d966f8ffc85c1589f1d9897ba355188cb8b15f542d6bf453cfe5d3c8dfa3e0759bfbff9bb19a164e12316f0aafcdc8bf76c265531d4cfe9eeca0e1492436b5774c315fb556163d7afd5f930ba947a0e884fc7d5c9d5ba87b7c51e3407cbffb973498ef5f71bd23248f647fa9d036e19e436be3e2dfccb4411f6b7e1f70570c7f91f57511628dcafb4c902fafb74e1659c52d31e57d536343f8bdaf89496be2c86eb5467679e0603b7f3223fae325f3ab94e8f3dd735aae7648ef494b1c5b07fcfe322175e8715f9d2ed2a524bc7793beacd3f5797c5b7de69f21a6dc71ceef2fdd73a4d4dc1bede24e714aadc138eee573ca2124ed89bb7a3ec1271fe212d7c7937df1cab958c7a84ff21eb4c7a0c3601f8aca4bf4584cae8e4d6ce25eae8f4b3c125f6ab557eec4dfe438d152b61bfb42ceaa6c4fb4c477789d418b81fab27dc4d9fc02ef3fad8144fd9d1b8ce9819a282467109d914949b186a0c3a935ce9af1169a7816aed59b060b5a57ed106d48cef2843b634c39bed0780e35d4ae9d3fa52f9e81f1487fbcce3ede272ef1772876adc069a7f32fdd8bf5b6c52e651f8ae2b726b21de90dda5c20cc15467c96744c245f4d8b7f928b0d37c5caeefa7520fe45fd695a1eba619b2e8edefb13af8feb77bb8ebf68f454f47de877350ec5e5f6287d8375d59097d47c7f930cc3ffbe12574927c5257adb678e317f4af139784e83c5ae018b7077bd3d24dbc6ed3e19fdfad3c9baa1a223dd1f3bdec727fb28dbe2bb646cb10fe7df3bfea557fdff0f6e0164eef3daf23ed615c8db5eb41ce549b9c27eeeaae657245c03c8a63ac0f59e932756cee9eca23f4df1e1e27daedabb1315bb2f60170a59decffb84c7f01097a91997e626c6712bb0c5915c4267525268ef693813dc229eb8f9eab921a752b68b76de2d35b10f37f2dd45e83fe9e40ac6c7f9ee82f95244f9f58963f9bcff823dbbc5faee50c568b03534dcf3f6357e0faca9833dde67efe5e01c37e92ed47f80edefcfc864be9bec7533023f92b28f351ce9d2f7fc9506f30ea9eb5744e6282779150abead157744e7427b3e13f955db1bacbf4de727d3fd915d0cfe3279df70bcd90de716e40e5ae669b1dbee236c5b2c643f737d1e663b58eb3df4fdc95dfc08e369d3e275b02ff8adf48a6802fc3b0c336a5b6e97f0bd5d421f3089795cc2feca52e6a373059d0c9f110ff8f51afd845b9a0b8465466f86ec25092bf2c438616d6bd04dc750f7b803f1957148fcbc2b522717d7dcb5ad6e3734723dc644d2917f2e8757ec53cb29f686f183001f14d66b243fbe0e97f2b8de78d7175841dc12d92fc8ee78abfd8d7d453ebd5add6e3c71d13dd328285ee01b703d65f43c93b7ae8f795a23e03c60d7bb8901392a982fb8e3e16ff4719d658d0cd2d9794d3ade03361bfb4e7d3f816301c967ef1605ce42778f4e1795b890792e57b45619272d91e712572c5e07d3066c16ce63d3eb127aeed9c7f43dee3c6bc847d13fa7393bda9f97e371cf3a99689f706da3fe26ea105e0b0fb036b73abf0dd79d9bed4667b00d39bfbc1e9ba0c683695fda62bb2c1f61e2e469953da48f34d92d94b323359e40fee2bdc4f00378de298f872e5e57db39ddb80dfbf705be628e7f99e75c16e40ddf6faeae9eb23feff74d8e1d425c6a6fe35831c83bf233c70b8cc601d70b8058eff865406a51eae55ac3357d5c1beee5e3dad81e1963fc33de1348e6a729e1bf6fd05ddaf4df36db43c57934ac1f82a5d3c81a95bb9f628a629a1f03fb7523fae9f0dffe0fbf4bb169717d51c080fa66d5923f4579727ab18a8bfd929f1cfffb8e79c7fca72c352097f4644fdc7c8d7e96ea05d9b2de5e4a79b75bfefc8235abf1f9ebe531f8a7708e95101b8779da3907cc61abcc013716bc0ce16bd836f290b470f7e9705a4d7832b25fa9ae087c768393d37cbfa66d62e38e53e893a33de3b8b197f0629155b4cc6f433fe1bb81e7f0aceab50ff717eb4ce89b974d6de87317b4dfa7fab935584219b3acc86ec6ab4875b46483ebe02f8339e174c4e70ed9430df8c8ef67c6a70698c5260cefa19bf46a9c3e8ba7817ec9c5344bf740f451fddc623927da5c0dfaab5deb22b27f186ac7de39cf1bf162fa3555fbf148de24baf601b5f427ee3e0c16586ef8f34eea9bc778b24536da968e1dc66603fe4f8b5b25b9b3678ff9a69b30a547caf5d79b8e29ef1da92741b1ab4d1c8a90470f799adbd8e81748374d4a2f8f26451b96f61e56a0715e7418451dceb00df72a71427fc373e07d01ebda34cf380f39eeb9796ce25a285a8c173b03879706ff641f5dfb02e61afbfb76de67083c2d758c91d41feac6be53241b2e9ed82cbb85fe4f77191f1714e3f4fc5ab3069dd0bfbeadada24cc7fdbe3d3e0e98ef41ce9b57ce3bdd3e6f91b75f8ff936be9f9d73787f823f451e33214eaa1953298eaad5adef8e2ff77e3556fbd058f3b1df6bd33c3563fc753ed2ae760f0bdc684bca8db6cd7e8eb51894969aeb3a99ef9a248f51874757391834e7b7be1e978bb96ab0bd817e96ec80e6394badc18aeaf7acdefb0bad99f06763d96c2ba7ac46bbbeee22c4d638d9debfadd138ed5cb22e72619d31ccfd38e5ea6c91b8ba569fe26cd34e7ec0187e90b78df8517ad6e9e2a44c9e7a0ffa3671ed86cedaf2aad4286ed172740b8388f1b04664dfc35a9ca4b58ecd9d95099cf58b8cf73f2406e1739d38456c99606fd25c25c83707de81f939decd3ba1dfef283611e1ee75b9fdda6e2377947abec0f1c8f589723fd235466208c5fb64c17c1ab4a62439832fa19f16726ed763788cae0efb7a1febaa605b25be3ff5dd72ad05a48315d3ddbc13f7468ba41ca06fc869bdb70838ef079715d4943677242754d451591b1a0ea3e51d6e23b2a6593d7fa946135e97a3c1744c6b4d524ea40738dc882d9c0643a946f708e35b02eff2cfc3e97e0587dbca1b217380dce382f873bffa9f703b6c787e26e06128929ecbd522ae71ba34a648e59db236ea33eb4f738fe4f6c0ee6acbe5e7beff8fb17ff7f04b4a2eb57c2ef4c8988ff5f92ffabc02a916ef035c09ea59087849bce6cb7444788617e87c4b888fe3e772c4f3f432feef743ca27538b3b0043bb4a7e4946b7c2af7fc904a6d8c2fe17ae8dec1b9ceaaedf095da91c31d6a077c8dc08527d7ce6d8bbfb7fbe71ae3ede2b9a7c54f6a313682ff448f91f9d77254c49379a170bddec1d6e8fc7b2a065dc8f16ec642996e9efc7d58a84e88ce0be59e7b79bf7fe63b95e2597afc109e0f9d9f9bf800eb9c7ccf322f8a3fb661ae04dc221bcf3bf18596fc7e0513a5899f2b78659a83cfe531503dad0d93c1e5ee0fece7170997f100c635f02e2ca70dd94363f0991b2436d04d9ae2002d1824fd3e24fe71190bd2ec33c33a88556ce34d4ae2ccab2c5cd2da9c6605751cb875da96c711f90bb1bdc928e7fba27d568c9b92da600b9cbb35e13923eff5a11967affbc6d41a9cc5783afaa7f13b68e697d68ff5ab14e9291feb8ac6408604c78c394bb498e507e6165f6fc3ce2af871ccbdf6e2162ca747ad5f7388365cdd356ceb74931d70c31ddfc9599910ce7a8a3f087b5e951883ca463aec98e29e304fa6685b0d3ea300b72ddb26bc3f59ac2557cf379fff09b60ef56db271f9da1aaefda3ab2c0c1ca887c5ed2dc85393f7796d6ff5779caeb0897b99608bdd6b27aae512fabeedda7761bcc47c47fcacbe16b39a2b87e5e7d3f655ace37d98ee3cd6ef57f308f1c5d4ef333c7320e7b7d6f3a18b3f506eccece74693d3f03bbe71c5f7f1784e12cec1d17329a0b33f3406c79a9b56cb8bf286e632b656d2fce9d627c9277beb70b59a616e79ce063497b8ded557f3d51af94fea18b4580b95ca3eb0091fc6e30af8c1e7a370ae013e8b1b076f525c200e8ff5d15de8bb5ba417a6e56a87b1c22a0647ef2b13728385daf18dbe35c217c1add5bd5f411cb91bd36f1fa7e9eff141e0b6e57dc170195d3de78082d56d7d0fe5477d748c08a7d166b117ebf48bf57a703cbecf8d411ee35cf87a9f37f59f712628cfde1b4f9daea86081343e4188d734fa04050cad46176f93bf0d754140166bb93a90bd6d789d857f3d2efdfe38ee65fb1a13045c8d7ceef651f47f5d38fcd03c5538251ec6f8e8e4ac737e1fff47e46a5b5e506d179683279d4df8b81df31fb5510e4acc8bf11d7a41dcf38ed18b5370e7a19cbfd5745f23278bc4c542d70cad058f754f5fb85608bc04e43b1af24cd01c71388cfe0af8a7c65b6c5b8cd33cb2dc03c669e9e2d3b0fe19d600cda5536d4f49cfddba65714c2d5297dc4ba10edea2f40439c3e4e1782bb451afe5c7f35a885df1300e85f0e21c922ec7a124d42543fb642b9c073a8c82462efdc7c704d7cfbdf6c200788aa15e3d950fb6559c6c6b9e23dd19f3c270e7199ce59e84356e8b9b50bd9ee4d792181bb5ab343e9616ecad5a37b605a7db8447ffb2ffef77ce8d662e92aeceb665727d6e76549e96aff2ee7c99df87cbfd2fd29c72311159a4e033f9b8a3d4ce6fe0a69afc37fd200ce6ac96ebddbc36828f023e2575cf69e3ba022e8b6094b432e28b982aa95f350eaa11fb75a77f0c8fb5d27ddbe0217c2bae417464787c56db03c77e1a386548aeea90af37d2c4d7d48dad4be37d612fafb14b5afe93665e0d5c3ff68167443fcc03ef68e53590e3428db6bbfedee6dc0f3976a7b57f2896e3b94372f9f5f7729c2a1a9fe03d5e6c6ece649e1fae8e496ae445e45fedd0ef6f634b530f56ba2ed56ca17af22dec39e7d8ba625cbf9f160fd6d927750b46dcf3c9d1b68a5d5c0e2a5c5bd72be271b713575d92cfa4d4e1ff335e9d09cd6f22f9681ba5f6c9df1d13ac18df7ccd39f217edeb2bce033abd8feb185f9d0736fc85fbdbef076a5dd3bb1c37ff9a5c5af31f74d7c5bd3dfafeafb1aeee8e6247a3b93d441b9cd3c4bf23eee11812cf033b1dd3791e016f14e587014e3d8833cbb96c5f8aa737c7bffe2c0791dd0373e3cb793c2cc706727d7ced3d52fc6ed9d7f0496572bc724b637591ef1d59bb95ae2ec7e823b6bc3c019e61c0f8efe5e76bdef8adc459c0620b68ffff3edf7c9dd382e7d884dc3d9a6f23c9d6dfb5359bf5d3e978789dbf0d0f3a1e9da80c7571c0625a12acdbb2a9862cc405d1f3e81bf8fbcff6b853cddf86a28eac722da3312578b86d0bd7f068bbf6a3b2ae6be115f10bf7aee797cbec59ffae47dbb1c7dfb3d9dbf022e423497a6c6415650432127ff32bd4cbc2eb676578b85e5a101dd2c9568917c790f3380ff03ba3c33ba99343f22fe7751dd1e1b581075c7a5ed1cb90ac29d7418e6c995b6c0d7a1873e51db9da59507b2fda0c8e6bbfdf7d1f93baec6578a6bc76896ebcc6fb81fd3cbbb5c46ce937f67c2c9fc93902b21cc980bfec976e9e5ad929b106bdd7e797cb94b4ad8d83a1b5013ecfe1006a041b6991f4900cf33ed696798a8c95ea77b2fa45da65e75c352dd93318b36a9273658364e6fc23f4af45cbf7d4e7a4ccf30d6379f9c6bd4fe2af740a88cf94de76753f7e5fb573c63b7a1e49851753e83789ddde1f43fbf97be6f44687b89ceff1b99a643f36752d3df2374d2d6c8c4577997ed4c7d8732b2fe2c9304bd13ec067196003590d37ba1e27f33df87ab89c2c92cb8cce1678076a7fbaec3e50a753ae113adc61b972a9cfd31756ffa7b60d2b12f321754a6dab4ff184db3070b6cadec163809ef9727da287faf33bed77dc9f6f2bfc8e1557ff50d65565fb1db08e8fd7ce9dc7bdc31ce2e3dee8f06e2159f7c8bb48be8271058efaa82caac88fceefe657eaaece3f9272708ce55abd13f2f79786ba4e8fd5a28538e63488f26437af6d9a1d691b8d7977944786a6ee92353f46be597167bfe6394f53cb46d7bef79b3a45635f957a5fd3f1b0aacf7ec04f0a731459de6ddd73cfc978740bfd284fca6d9658c5293432a8b188e500a98b7177fed4fd1819de0df08c41cd13ccdb56ecba87af37e130934d7f87da4803a720baf81ac9685a9b4eb46da4fa788043306f9e35e88646cef21834fafa36369e76e9789447650498c5149ec9d038196b7f8eced7e3daff2c6cabb8acadc189cf8dbaabbb5219ba9474b8df194f7fbe0ffdfe0ed7256eae65cde5f3e449d73da7fe7c5fdb32a21e81d7c300e2e0a11f95805198e0676ccb2dd2b2f84036546c15c82639401da6928bff13b929cca15acb5b96c3165be7bb19acb935d2df90bc0cdcbd6de17d8ef11034a7d5eb4c85fc56d06d0013b1e8159db837ff08835121d6de643296c82b8a9f009b00eabbb63dfbd57912738a3598e3d5a09b36c9b0bfdde6c635c3d5fa47f7e349356f503df6425caa2dd6f41bd8a8da37b2fd323fb3e6fc22fc85c097d5340f4614384dbe9d2fd4b96bae9b279c01655d3387df7b77b99c6a6ca2f84ddc5cb561469bf9d91a627d9c6f95d5a156f878895ffdc37c9aa16b1f661fffef90df9dfe8c9c3338d703f3fd25d6e0001811cc357e59fbfd8fb5ecdfdaf05caf2ec456a04d0be946e6293456d755ef85e565a2ef0e7de17a16965e2735bc02d93d689f225d64b6a4764f7102ddf3d926392a58179e06ee791a106e1dce47181ade09e964a80fb13fd846fef519cd7514d85722c73ec8efe4fbb04ca1392eca992ad64b3f4765748b027716f951673a66bfafe21eb16d899f8fab471aac7db7b31e5f845aad4b5283969f9f74929e5df2bd49979cb3a44eaf544f1ab86e43bfff11c95cafdc3cbc4eb2eb743c82b97e7f467aec56e02760f1596af7f5cc2a1d67fbf7673b9b2e474f33e0661a8abf57c3fdfb1bfcde67d7ebdf99fed2d85f6f7e95fdb6f55af0de92650e6bf2fdede5684fb20afabfd1d5c11efe493fa9ccfa5f610d933394ec01266bc8373daef3f7f876300f26d4679ec8ba93ccd3ab7fffab5c1b5eab23e8b80c29aea6b1b6b7be1eed8736b7e0e1daa85817cb1faa8d7a974366e29d22cb4372a1881eaf937a8a7b093993f138113f33fabb9423e2e549793d4494ff5cbcbf0803079dd395cad5bda2df59e0735357fbbae6914f26ce795d7a1fe90b7023f96bdfeb25d6a04a210f0bbf330a00e7219f4facb6379c093abd017808073de065233549e5dc577cdde4ae9b6973fd62a94f5e47c715fda8dec3f5dfe4fa9f1d6d710caf81f62c06bfd139ed36e5d6b1eb37ee3a97b7abd6e116fbe4a4badc91477509aeff5520eb78fc1816dcbc8afea053dc4be3b9c9e5059a1df5baa7a98951c7a6909d714ecac5d7cfef2fcdbbb4b777f3435ca6c7c8c3cfbc215dc7d7e44a229b0bc9ce952ef69e4b1856b2ff287e359869fce18332dacd8b9a971f6a1670b2cd7926f3406af8cfa4fc47f2fccbb588704d4a7a8eabfbc6884a6cef0f2e50ab87fcae70e20b7608a94d2fde5f35debfcd8bb59fee713d0efa6df378d615d641390bb2ab5cff5f9409193adf041d459803d0fb68ed775e76f175f33bc2378bcf237d51799edfb721fffc9be59529efabb7c2eafded05c721c475c6d7e9ff646360bae744f0f5bbbdb883e63a2d92dd1cfb075e8a536214db08e303b29f687c40cf85981619b3cb403b3fe3b0ac9f71ea67768f3e03e349deb3559fa9e7b57436c30bbe8ec700b86090debd1c7effb914f4453bf28bdd7ab2d0c824f344f1dae867297e04f7bceb7cfbc2bae3f5f4e140d017adf0fafefc72b4d1ff6ff07f457e477d16f6a1a4dfb3fa0b54c7fb4a5bb5ce3e1cd8e6714fe6ef1779e600719fcd257bc56d65af159aa3edf515e24a8eb85f259d1f62d7554e75fe2bab0d6299a7e92e83b6f198a1f6e7680d17c98749794a717c7bb9cda634ae4bec24a4cbc3ba039b03e9f5de533a1e75c26024c44a6afe6f1867be0e45f67339aca498589db788c6d7e439c8b1deacbd06753db4efd0e60eb2797a33df92e5f0bbfe59175dc335885acfcb5ae78a7c13cf615b5e303eab212f98ea245c5eb016c3c6d5cda9c8998cf4c1ed5b897437ef96327cd7628fdb847a2f706eceba5c3d79ce8fafc193d2feb31c8299503f50575b15fa74956afcb6d4af7ebcceb7c0033de1ebb7e9f29b1ea8710a1cb674ecf55cd2ef6f7b36277aae1e898342c3db916cc85a79213874625753ce38b9b61bcb71e4e760c3cdc1e6a13990eb2cff770edae6e0e337f24c7579770fd7625773a9996dac19f74738cddf9ff7cce669e67e223240c727afc9d37890e751b61149cd0f5dbea3a22fc3fa1172934a01e3aac598e87819251bfb29d5d40a6abc575b87fbeb3517e55a2cdc58b6f0b1aa5827c19face09e641b4b8d85acfdf414f79c428a11b138596c3c656b7f70033c1ac42ef202fd1c19ab2ceeb9fb28707aeb605e20f913f79ccfd0bf1edf97a37edc5b65e82c4cfdebd6b69cc2c6f963e01b643c2d56cd11031844dc57c0864d374fa7574fc64ddce3a45470358fe0c7387fbc204f557b4eca63936d099d2d4c6a9ab6d787835c6db21fe9d9ebe9cf5ecdb9ce6413b3ed1b720a5bf047f7ebed37ec476d2dfd4639ea4a755e35b8719e3b0b63d4097716ae4bdfcc472dd8c7ba3ad7b43fb4c6f543f99bf658e67811eb2cc3782a1ccf5fcf357898eb4ae6efe2cefec7ea827f3fdba0a77aac365054afc3a33d991f903d43d7566a14c7783cda44cb511e59800dcd23c33c34d43497ea34135b6ab3d8f33e6bc88369e6feabf991fc6b217d93ccf749720b08dfa77f6de003d3e729fe59ad69188f55dcb91e921e3abbc5f5a7d33fdab84eb5b94a5fada7de56fb3ad0d4516faa3f22cfed645ea42f70d6aec2c0d945c182d675d171b5933a1a759d6c396621d4d0c6313ffd5a65f18aa6ef7d5487e2628bf8ff867b1ed0431fd29f08be0debab2a6f8274eef07f53e743c735f8959ae47a2e7d759d37f0e82bf7f5cbb8e798a13fdfbf8a988c967ce3a7967afc7643edf4afef17a19ed0c375fdefe4def0fe88362e72256e8539d685df49fd359c6fd3c2b5d260e7e8ed9b06ae158e47a0e1cc7f84b74a9997d61a688d5c214acd963fcbdfabb41c0bab3018a26773c0ec582e3776dfcff6b8f3395d763e15be42594f318a53645c0b82a39a235db485d7a7ed5982cb750fb1bfca7e2e87bf845af5a23f5b83b713ec24c645d688e3bf7b3fae2b8efb8373048433595d1f34e7e7a1f101be0a8c9b60bc38180f90433c05db1a61c6fdedc878e9595d759e7361745b5b836e6c61ce92d4821c910263d65c615fd0f749faa9cce7a3f0a7309cae85f17050b7a41ab1b1c3750c07dd48e0e619660ddc136afd85261b16cb0bb24e173ba8c7bd6cd4339e982dde547fecce59d354e7adbe0ef940ecbbdd895711ee4b7d4d6ac53e9a7175689f34dc54587fe66a8aeb6c8345cd093b1cd8e6672ae5099471cfce5e495d685c5be598adc107db3fa73567ccffdad6f6d7ab9a670ceff78d02e2b868bfc5565124c5e701629f307e9f07a5e6acec8f263883d958130b7a6b8df7c1dc43de1ed131706e186d4f887fe2f1791ed6b11d3e6ed9c8134ab9bf914d0ab59a1ec561f4d6e8be1ee68faa9f5fd5f80ba93d257f90b3ddffcd3ca3c2da798c6794f8e2f1be74e22d8f3951398eda7948bfc6f7f99fc65970ed7fa3d86196bbb6cc0effc562fc178bf18fc46228b5d9397949d6de3d792aadff43d201dc2b1f9703ce2c750fd4382b882d4b6b15e2d6427f347b0462c150ff31967d700257fd8672d5efb39f302609cf4dff978e9b1ed73df8fc8b3ba7d0cf9fb55c70e275d169ae43457084efba334bc21f90b378b2d2ec3df29d4f339c23f8648ff75934c99435174db62a4ec194700afc78ca7810dadf379077dbf7e5f02fdb72fbbadccea4b7c067d124abecf111bd5ba8add45c2b89c6efd1f34ffcfa5a85c1888f03573c3f278d5f9398f52d358a4bb41c7d404cd8bf1e15de41c2b7c3ce30584bba18c4d77384f11884d7f767bb7dbcc71c2e04e376143d12f0189bdfc7b790be54dabe785fed8ba3ebcbb5b52f58c7271c280c5f81d746fdfb9e8c17c156d8045b41fe7fb333d99656f0d905c1e08ab8db721600deb69c055bfcff8efcbedb56afeada2e437fde897bce5b22e148a0fdf1770503aeec3115c780f4eeae98df5be387f9f5cf634ef8bfc37e96db55dba37d97f118d7e9c74aed27c4140695e6fdda765ef5ed130c3ce31ffa4827599d5715cc408e63aecd7a2c6dcb3eb35a07141b5e0106be8a7cf3063e51c56f12e561cf3d2730cf4f60f7e3df253c09f012caebe289cea58405d1f85e441deee37df21f88273eee6bb9c301feb8ef55c10110de6125ee7e2f6e7d2ffedf6603cb352c95384a83af03fbee74fc670d716c8593fd4ecdfd3b71354d6ce9615eeb17cf481fad9b89f716b28970bd8f5e7a48247e309d9ea4d862bdbcf3efe692c775cea5f573c76fdfeaaf6f5c37bc5f58f45ffec97ed4705e308edca6381f8d8bead6898e8743eb73e2f8d2d15cbc4a75abb5fc7a569dc7a57f4ec383f6a7fdfc0abe43e56657d6a3c0cdaef2a63c5e93e351ec9d8ef35c91f52ee8a4f80c61b179d5c601bc09e4c0e9397cbf70bffeccc1fdd0e5ead17f7773f6d87c0a7505480d56ef9f8df7d2714237cd158f73d09c1d241eda84b1fbfb317538de0c3c50fff831e6e40cd84f1a4efd060c8e6837297e8a87eab84b35a056274d9d2889dff17773ab601fecd7e00f37a91e4d6225993e06745f5eb47279eb739ebfb277454ede466ce1637cbb2d718a364ca19e6f97ad2991bba66d7cb4f933f2b91059c59672f06a6bdb29dc892f1a2c7896b31a07488e336e6b8e6319ea740c31df1ac7018d7990849a402a5fa8787f569f3fc35f9c1f91fedc0900673fbc497a3ccf358dd6df9ef94fc747b2afe7dccf5e8af30266d21e966ab401d60fe6397badc89c16f5cfc07f3afe9ecdaae12f3c76dab66e425b1ed756976bcb6b6aab9103abfee682ffe611f79d0ef7b37bef9bbfd6cf5bab7ef298eec7c9219eef0c63b7700e37ae854b72b837430dff589b4fd34c59dd00712f6dd7befb46631b2257c6f518f71255766f469db81a6d231fe96a5033f8accd33c7df44e535c426302f681ff07dd198d6e17f94ab8ff1297d95cf4fda6b501fbd1757347fdeb9d9cf9dffd73cceff8933e4519e77d9efcae3bd28e6b4353f509be3c2f3d8aab8a0dfc129b6c56e45dcdcb4bc16719976d670fdf8ab05ef5904d8df2ef6b7fb790896fd7f2513e790966647ad593ada46dee0f208769cddbb736e61cfc9536bbe9f96c5098f1fa93dade18255f51e4d1cd91c109f41736c03fb3421379ff20fc038d6beace115d7c319561a7f3ff824bf9af3a89cfbd84f7adf9fdf987748fab2d3f5c5fc6a5f2a6d5f1ece8194f814487ca1e683b8e7c7c5f96b8ff984339c4bb9219c211bc219b2b950ffb6a0e3d4ed127f23920f22b784e0d75ef55e3238b79aef81dc42bd3f9b7b07ff1d9be159f85deb8768cb23d572366e81ff72c9f849ae9afcb72d1a2b9be69f6ed01c420ea42e570edddbb7690e29bdf78df2a410be4b8bf47123ed8d5a7ea0b985bd0f6b734cf258b5f973e8de2db9774bef65bc2fe9c4c9e3ddfc483033d93a98b1ba4f49d9cd63abb8213993961ef8c2d1fa2435743ba9f19df74dd7bcb8a6328e8769b93ad993393b5f315f14f1894f661970ace1fa58a81dd087536bb08b02771f911cd8445fc7a203b1c1718ee7617ccc22b4d7c6a053563adf700a31bee13e42630f7a288c11d6813eea5afed03f6bde8d2db383be776dad446e18b11fa017ccda727045ce679029d0dedb0b173bb075ebe612fa4f573907989cff682e3e63c385d882cc7103f1bed2033e35ac0fc0fd1f69e054806fe6383171dc5efb6d1fe9c481352ee7d962dd745f7f07e686be4e7799ee3b503b7d7d3b66433bb24dcec6a3d2faf627d9377b8c790e4026e0b1bea2b65fad7927d96534bf17f511fddc416be5b5c2dfa8f5b1b6b6b7e5dadbe2f696acbdbe641bfe2fcd6188fd811171e73fd44a91623ad43f13f4885f1de998ececedd3faabfafc48aec67fad0fa93575e9d94debe92637458f78b4a6c2edb7f3427e27ff44c6f9d7e3d210c7c8a41a080ab65c1a2bb1ae43c333acfeafaebe5903d6f25fc44fa1a9afe09de38dbe0e444bffeafa0e3c1fac4e97d3e6362259c5e16954df2bacfd1f54be6d141f0c5afbdf20c7eec3567c2721a93ffc66f4add02f8e918f79217f6cf05cb6f94e84b8d038c53c2678ff29752878dd418a9bcb6740cda781ce6b29f7abe6ca00dd518a29002f013b779576775bd2aed397db4d367ddc7fab91071dc7b24ca798060ccb25d5b9792477ef4fb061a3366cd8a5111bf600f6cdae7303b5182a05f7f30806ee4f307e5e1bc6cf6cc4f8b1ef289ab062f7b0700db1a73bf9aeff794c1cfb8e4e23e68fcdbba7c734f2586da93eb016a7f66ff3e910bea25a8fcf089ef6665bd7c3da58817e19235d96f5bd61fceb9c7a7d1cfd59a7835ff3a4a77de61806f38e4e476d8bd734d50ee66ad5d0ba9b18e3e5515f92b61e1ae4013dc6aff1788eafaece98360e4fc6b339bff7419f559d4bc3d5e0c23598b14efb3b7d019f5f352d2167d6493a789c21677b99d3fcffc6baa2cdf83d7dbe1ad863565ec41be11b3e42ff295b5be625b13c9d5ef007fe337d5beb9d774b4dac7346b456eb7307f254b475a86e1a7d8c8df1a19bf45cc6e9dcf6fd242f15e7ea7559dea8a4f734e59ac09921f8b7b43a46a3aed1a01f519db4b9f69212b311cf26f79c5ae67165e407c239d61ccf7c1e36e7c83c8f7439b01a9db4ceab4efdee06f81e01838bf1f1689dc73bef332cbdea15fc252338571bf31fc5fe9fdec7c35fc4ef7451cf78365e9db8e7e6b189ecfca883eca2d75b876081c959a8592f6cdf68d65f63ff7ea7168b3c47d88ec1b54e961a9f66c95d6fecbbe88376a176c88b3cde753b9e763ef8ebd740e6e97c706eeaf79baa6ef2c83c71f5bfe4f35c7cbf865f455703b8755fb5d7836adb5f92cc3b2506b22ffa1d321efbd41a7442fffab6b68a32e5ec400eaf97114c9656163c56f7b071ffe9f503b38e45d3782a8f859f991d2d3e4dc9332bd0fa180e7e2e472c8706cd55f33efe6a4dc63bf3d6c8f3d282c9c2ffd0197d46e75c5216e89e5f91ef5d501f427ffe0bfc8b94db81ec21c841b0ae796a7955ebf9c7d5ac53e2e65fb93eb97e5773f84419c5dfcfe23e249774a6d361f0b3bc6c382513efb6c6bc6c204bb5fc0f749dd377ed46ddc4c8f64c9636e49fb7e59a8bfd30712cbc96cf8a8eafeb0789c3131ffc48b2e5ea7eb4e56e329b97e425824fcc537535d5b7e5566b3fdd458183b1219319cd5d07bc02c6335d32bf92f301715e3bc561dae3d4207500c077ed743bc8e63dfefd185e4d0d668699c972beef7640318f2cc607fe3d382730d62fffb91c81ddd05a47de326f5a6e2a7c0f3cdf869dc372ec0b1c153cc60bf28309c62bd0737de171798cb3e2a13c627c5f3bf757c39ae4e7e841f9d78e9bc3f7083c17ffd6316ec2d1e17e5cd899f1b16fd69d1fe506b98babd3edf37aecffac76be6a3b377138115bf0636d791feb0a7c0224cfe952e7ec9bfafae214b7a7adf9cbe7c32d693edc56970f77d0e5c371ef8175baf61e3def21d71bd9a38db9816d67ffeff23737cea7ec57c6e37d09fdfe49c923e3f68c94d7cce476cdf501f53ba92f1fdac3f67676e0ea55b2f7e83138de2d0a9c85ee9e664c86798cad416f6599b7a447b91320c68ab915ba0c8fb30883f92db5f22aee79bbf598fa012e8dbc612ddc57aceda437efac27ce39f553b53e251ebf163eb8261d34cbefe1fddbd6cc5d0c9065564969f667bbd119f4e3062c08576befcb32f6311f16fe4763a38bddb659dec2394e7416136a0e425ca39d0b89e938ecfeaf9c21521c03742fd4cf865adc1216aeb14674e33868c6ac756f93fea13d357e5fea70def5f9104db247c7accfe2b95f390b045c30898df54679735c8ceda5663e4ed62fa25bedbc5388f782ca673396cf9cafe69fb5caddd6fca84659ab95bf188fbe2a579f2ce661aabaf31fc40d2ead7103b3256ef0503c88c517ae8d711299eb8593137f94972ee69e0307259cc585525f01301f64ad14b6e5ec6c0b78473ec2c03d271bcaf3b3c8c272952525b623225c4bf264038f17f870737b32efad8351614fdc7d182c00671397de01ece00dc1c6f135a881db6f06b5a8f9d884cca3209ea7a3265e9b6c3666318186dada845792c561707f57f4dd15f585b7f36e35f9f1ff2379670dd8e3af71cf104c525dfbed4e0d40be26261e7b1af3063f11de4f34c7fe1e078d729f580308d664911857248b3e91bd8e75a3ee71edf701b3350d3cc00f47e3ae1106ce4dc74bd1cc63b4e0eb39eab96a96229f98906339d1e5cb8d9a7019cabcd039e4b98a22bfbf659c3c1fedf5e5689d646ce7633916975c1d26b41fea7985383e576f4e77cfdf55bbf48bb1435ad38c1bf3e6fa4a4adda7fa39710f2a71e64ac9f75073391e5c077a5dee3e87b13627b8bd1e151e4b2e0706e93b75fed413bf86757a905c83f5111fb4fccc3d7ea446fe22ee9effd6aafa2f3fd2ffe7f891fef49c10f7c5bcf36e125e866799434d89bf7cbc4fa45c35fe79c86590b02d0fe4203ec411f11fcaf19771624d1c1022fe30ff4827c01b84ce4a899b54cfd7c0e56d363feba9fd51782ec59a047a6c179d23cdfc3c9c7f2ce67777c260f87f9d23dac01fdfc037d03867430573d318f711f810dc27cf322fbaba176df3f728c748c37da7a037aa88cd7d8a303f7e233fed9dbcd966ce99afd8dc0d7682ae5605b1074f31e43938c8163cbfd7f99a3877c20fb3d458318cdada320dc81b9838458d3d433ab9ccb19529b596982fb3b56604b1c91ecdb956c786e799d5ce03de83e85b495e43393fc716fbe63daefbee8e62ebeac45b745f5ee7b09a9d23978b7a0d967c2e31d46aaaefed76447eebfab90b3e339bf20df9f61fbaaf7af0bedb83f7913ceba1c469fc35bf51632e7c2dbb36718fd833e6977968da6340adb1cd66b926f2f04a7e68ac7fa16f0e80a7f8c529568c8f7d21db5e4df7e1ba080abe9971eb17b1b53ad13545e304c487215c83fd22f2c648f9a368ed321fed26ee65bb57b0cb5c6bed5f3b600bfad7c23380d7791c795c6d07b6e7d09ee4dbc8999f42cf730eef3cc546bf888351e77da9894f7c11b7a1ca4d0d4e43d5a5693e67fe73393aa5fef5f827bad92378e6ff9c3f48f6a7cbfafc36fb51b5d4ce31d5da39b6df6e57fd677d5d7f90e7a3e447d23ca397816df5bbb17569c0dbe3fb3cc3a4756e0847512b0f92842d877c9717bedfb49e9084eb6ae6d27f30a7e8317c60b33e267ea72ed74ae4a972a45c1e510f9373c6f967568a9cb0797b468f416da83f22f7099e855c26a8afa18b7934f6ad7e5617b392313d4aceaa5a7b82c54c6b8c0eb69bec71da21f684507722453a3b8fdf3106dd74dc5087e20f6c2a65ed10dd35f569be9dd989966a6d333da7de90eea347b83ffe7e3eaff63950ea7f447e7feb603f36b363398c5437a9e7a7e6c86ac44cb5db4b8d189276fe1c82f5cb9a7da832be72dc61ebe00ff8801f7897c9bdcbd4bd8bf0c2e2b86834d1706040ed23c21bfc6c67af15f008ab7e9f92e30e26cfd0986c9d438bf398919d675b78cea7e311c62c58d7be3d99e7b1bfcac26096e1f95d65a1713d84c691e4c62c708c8df8e1b51c420fd5d7d0d7e6a038379dad8b7461679ced7e70f5b39c6a8bf620d3b390dc0803bee646aae027d5fa898db8c1a36d1e41b6e0f51f7dc456f1b1aefecdf285c670274e915866856cc5b8aaf9f9711efebc9bec9c22deb9c7f7258b516c51fb11da77d6e0144fb6705ead03b0396ff126edd8965344fe538d911e8f2e8097b25eb2d0f0aad4320f31cf2721e32e1bf442161f6cc887c0395ac516f701ff8dc632c3c03923bd871b4b64bf52ddb2e63da96d5888af60de6907fa3adb0cbfb7f15dd7f14b8e6740cb3dd4e16a3cf6cfe97894e3fa2c0ba1ce0ad7d7c63c1fc09d70cf7893e202760870650d77745f380d792f78bde787a42bd814ddb8ec16499916b55fa8cfadf71cd7619978ecdd4e578f3fa16718bdef95acf5d6e75a31dc827f51b4b19a6be3d536c46f7c433377ec1f7c6313ae4da921f755ecbccc61ff9bf83bc14e8bcec966b8c767c93efbb91c5e7e54a3bfec67ac0308dc431b997b88cb11300e29c64c0e7ae8677d9d90863c2fde478439cbab08e9668423292e712d74905164cdb6c535eee1e6ef61f8fd6ea7ad8e94724637f9001fa97573f7392403a99f4ee7d37cb806d1259b6dbe1ab77d516413cd25b4716d2ab2f746bbd81a6c42ff02b12307d733ec13f9b7a11c2789617ef2b9b2a995e7e97854457e375ffbfd9bec9f78a85690f19bd8a2b61cf18958a7abc91ffc95bd5bdb8ac95ef0218cbf9f956b858a27c11881288fadeb06e7b3cccf7130ca53abd8acfdeb219d6cb3d832fb90830c792ddd9b3dc1f8493e2f997e27e12dea2796778e36a315de0fac36259c2fbc2f413863680cd4284ea9059c5b4a6d2a2c4fa0de206e1bafddba36a2702d977c7175bd5349c763730bbe482e9e2a714fd038f137db5a71b147d10789c6293456dfece717e9f9628bee5ffbd1210a6c6803f3deb845b22db6b20f34f4d3c287185e1fff3c16df9358e62ef2b6a41df8598ae339796415dda49bc13da9516cd11e9c56c34a7a5715faee210de611fefebc58fbe93e1d0fcff6b3c49131997f804d5ee03613635e45be7752fa46fffe06fdbf853da4dff523996f9cd438c5fd433aa5e175e4382139dfff57c654402d4eaf5e8b928f16ea5faee8f86e1e5e0b4563ec1473cb7e53d618ef57e6f6a0ba6ecd6d6436f6378f2c7741d7feab5ca795ed39e74673aaa4efdf474b0ebfa0192f8af7abc744da3b94e7476c53ac95d29c4fc0eddbbbf5e1707fc6185b40bfcb370a35870d9f3d9729a9cf32ddb1fb1d560b71d967ef5e6ae2b2b6d8b75b6221bb71b55f2f2fd94c8305556a923159fea4fc2cd437c0f2ab9b58e8fcf7d85c2ad8b960b40d03b76d6d6ac7076a9a4fe07e6edd0cf789a6de285ddbc9b88fd7f35818237c0e4bf2478ca517326682cd017c8f70660dc959097e0ed877848779cfe7326bc60ad77526fa95670d480d5959a6e35acbe4bc5dc51d527f57de2382ce218f5d374fc65f1a37521750b07fdbf7573d96b737e2a390f6783d07c17c1ef7bc5bb46c964bfcbac6361a5eef8e817d8c4e05b92705b72756efc1a820e76ca7a1af4d75092b8895b25a7d97cce9b176b7712f3d39d525136b8bcbe38ff7aafe1b1bc75ae514b2f0f7d996794c4a2f8f26db6c4d3095918c197f846b4394bb7b89cfb5610de652dc82af39ec0a78576e9cb99f9bf0b7f609d7b43291fe534dc7c31d5b373beff28f1c63fdb9f0db6328606437b910fb7ae5718e5f5fa734676e87745c7eaf6bb1a5b57c70920e1e0f34de8df1db0fd517c67c91feb58a7c73fbbe1cedc9dad82af58f95f3571a9f163927f8675bb0d77fdb5a2c594dd27fdc383e54af4d77c6fefe58abb556356bf65fdef544cf38d0f75e9c653276b7c0fbd82332788bff362dd3028d39e9e3f1dd4f498e9a58e73df4bbc594ea2f931993055447613510cac136f2e6fb30181549f7139ec378907a3fa17d17054e917cec918d7c48580eee08eeffb1c1ff331d9dcc6b72dbd3b3edc6ae5960577e13cf696c6bd635fb2e59687820a77cfee7e52523b6c8d1b6a8ad21617da17ffdbacf9b3e7023ad8c3c4f2ccf8983d1f1759c5e62e3da8f8c019c4dbff7de0b7d171b636e0f1d6b8c00d623227fde79437208d9359c9c56ae2f73e82f7a3f9e9bedd19ea48768e2eea7e3d13ef28bdd7ab238da93ec684fd03590a11a0c14c38eb06f5daaef7a9a8e47fd29d45f2b6e541f482afa6ef4bdc009154dc7a3deda773b6b62dbd5e3407ee7faa11b07a45b85c627d66d9fc53110ae8d599f2ea1ef82bca9df7dc9d69677888cbc33651cb04ec8fd1c35e944641d3af16e7e8840c7c663f2cac611ef07b65e1bda6fe84b3c1b5fb2e91bc42759bf5f05dcf313d5a7887dd71faf76c36d34eeef22741e9566275a79c7d82a2eaafe37ac7365eb79c5738639bbded69679898279ec18ac8dddd7f7f17007f53183d12d5ad6d85ec020dcc439c3589bfc2336d0b834cf876ebca439226b8ff1f356c237ad8acfc4baecc95ea372edf7decbcd472d8f887d67781fe90be4b748b249b9be6fde1bc29a50d671d3da546440bd0ef6efe34bf6bebcbb1f098f30db2f544e80cfc61e1fb3049d5ba007f139296cfe317f4017efff1f1bc1f610aebdaa72472f9fac7901e76791713f6f9b64147e47a738b96cfd3139f0f0deffa3bde7e198ddef9ca934b639f5c107da4dad153e5326ce3966f7cfeb7b8de2141a2bf05b27c0c988658e6db905c6238cce787fafb2a434b7ebc0bbd9168b21ec53233f209b79ed3f65307ebb591659de05ed6fdb1a9c08f73519b7015b0bb11132cef308ec83b44073175b972c36fac7f7e5e89294abcfd0187c2613af1361ff14cb0f4dfdfe211d8f8c08d7febc4d0b76dd82fc4d03edd5eb21348ace3bf1b1c796d907ce73f29eb05c7dc3ebeffbd9368f59f23c3cdaa6775a07ae4fda5dcccce1158df36c79c93cbf7ff00827fbead95ccc36976cba793ac13c6cf0f5d48c0a5cff73745a3d0f331c8b26b94bfef5b8a2e38b39347af60bcee7a7fa271f6778dd0c2bcee7dd5c1343f32cf0b02b7c18348f6bd04dca79b104190cfe8e833dde6733a9167d6479b7f405d92c1ef090a7e5e0108d871735e789f39d4db8b8caf87b067cfb72ac04adad9eeb20194b78e40f482ecc965bf866be7eb21a0f1d6da300726e48df87177dbcc73cc6c45e4eba9ff07d2c9706ef81581c87bc8ecbe99e1d0f7fd9cf2c4f0ae6d0efcdcf69e07c442b3246e81bb8d809c6ede52f11e14c61cf19dcf79b1de032bfdb273cef7d17cd09e7534bba9fc278bc56c32bd4faaeafdfe29e57858647c71bbe43cd8b732077eecd373beb71ff96044ee795f67dbccfde5f509f1748b6d33efc654f0ab8cec9b73cb6ae0bfa2debe5f02ffb193d3324f86fda1e70fd57f1fde7081ebcd03ec7b02677f490b8343f239c2755e729968031af208681f52da663c0fd8095323f6bff395bdfdf84f551eb2d10ef92ce2b9ce750d74a6d3a8b74e796743e119db0eeb7602f2dfdee251e67bba41c74e372f199b0b32339dabff77e450ffda7ea2cf89bddc5df6b5bdcd3d5e6fbc89fffc2f27c217db3708de94db5dea3b7e1f4f69e149f673633fe86a5dfbfad7db7584963f077d812bfadb7c0196902fe468e1bbc321bb99e3faa4f73b6f1cdafd22aee21fda35be13c83fe2eb6a81da1f3171cc9da7735f77fcdee607b88fb8e9aeb8b9703b5ff03cefe97fe2e36fa548e59ebc05dc5ddf935f5cd2a5a669de97878795dfe93e4454ee5651efbabdf9513ff545f035e3fa6039836c0feac545974dfa611649256a7ffbf96092467f39c94fd222948bc1c704369919aea9e5c113dfeb56d2e6b0ced21f4e1ecfc887bce290a9c258eb3cfb0ae863149cf84f36dbf28074f1a4c23de33b4ee93373ac79362171b4f6c1c24ffd557d61fd29fb66bdffc6cf47d34c71434b53cb12f77017ea063966e9df3bb12aff9f77c13d489b28a3c5e3ee0cff9936fb2061764c345bb4596045e9e806f79f4b10e9c8f58aae35ef35b805fcc89b7aa3f80f699fe5faf59a487d26f035be097ba4ef9753dfc947c7950d3475a77c2de6fc95353b8b7483ee933e327eca1f314afa17ff338fc92c6e1f31f340e9bb8e776009bfbcf1c8b5ff2584c5559f4b78f456c79653a1ec1d90df8076b7e48caf9b101b3dde633a2b289fecff42fb4df793c13b21f436350219d82ca685e4743d7a95c681b3bcebfa6e689d73117a5168e1c2f256326f3b03ce83f9e7753feec5dca3eacecc138d07117f6bcce34e0db4ac10e6fd01b3fd2e0cf7540f59d09173fc073f446f9ce36a35d14b8cf69e02eebf77acf648dce884f66ffaab525ffab4336e99091e1a1f1cb53cb4363bb4aca02cf853782789e100368bbb7ca7f37664338a12e8013c7df49f6db9662bf95bcd03dc6730a324b69733d01ec2cef3757ee797f01ec0060798533d5ca7b8a9e36c9cdb8043c3b275f8ee83d6abb2b4dbbf8ccd9abed1672bb440e65b4be34b1a5477952aec00f1c1ad773687cf6d680cd185468ed4cc7a3438cc66d33dcaffd6e0e1c2f81d37f5d8e3a6cae96a34b8afdcdf17c7cc9e65e57c61e1039f129631a2f6f485e3fef33bf978f233f3dc49b4bfd9d20572f477b42af811e7244f279517abbb5ffd4760d9fbd723eddc43d27a6036be9c76614bfbf009fcda7a65d347e477b52c8ed3fb97e7f8bce00dc37f1bacc091096834e6a0d3e57f88cfe669b9ff03c7a97d80e5e077046a2b37885fa75c9e4fed5cf5ca55c2a7a0676a1a62efe36791c0bf24dfc580bed3f09633716af070d58d37f804f09eff72e9219b59fe131d932fc65e39c406deceb15cef7bd60efc97dd6e4985fd2097069c580dd37fa1f61b03885c1e8124fb67bbfdb39dae6e7c76ae2dea63bf79cbc804e7f4a7aa3e3da9f17afcfc3a3fdbc3820f9c6ee216b76ba9b5f62abf88896d9653a1e765e918e06dfdda7f3bfc4f2abc69a223b643ede2259be4827b3135d93b0f794fb0a3137f06b18800bb697605c42a87f65b805cf8ff57f1e2f44b2ef05dbf4b6958fe35efe1fb679f17a226d7c48bac6d1368f685e3f71cdb0bf453736986daf701848be48e67b6ef6bbdec1b6dcff3ece47e2df86477bdcc15c377f8bee4beae62a7bfdab32e1017da3718fe8d60ed50b676c0d213dd59b3807a273c2be64e7e1780bf52d9af0263416c9f685857476b75afbc44f24c98cd7256075ffa86fd2397680ba2f4deba7a0eb85ad23cd9cf485f3eaeb381727875c5f19affd15fba434aba4f48e4ef7eb3126c7a0efafed0beaab07bb82f9d6212efd839f37b72c3a9e3578037bbd5ced91ce341b6fff8b95f9b7ea08201301e7994ed2b36d458777a8f3bd40faf231f5bd1bce1b253cd6a5f76ded83ffa09beca2c2b6cc4b3271ceef56f189ebbf2b72a7331b434eca69f6b6527493146ae10e2fd30fdd359b5ccbba1a3eb105d125881d53db9d0bb27e17a4af68dfbf321fcd319b6d867f0967666ddbe8741ed98f2f71c8131d2b185d9272f0846c81d4f2c621d446bf3ea7816330592be64ff0e356f7b9e7556909b2659fa07e2bb9d3dfcff2b36c2e26e83da34d08dccd35ce05e6959b4ff1bc8439fa84399a989b28381ca2c059a42fa6ae8ef3d30fd0e1e68d7c1ca8cf1a3e8e266e0fdc56d1d6d6fc4b6dcd5bfbe569da5a281c86787d75a00e73e23bc57b59144931ea2c74357826d93718f766de33fc8d32efd9525383b26eab6a6dabfba5b63a6d6dcd35fd4a9f5fe45c749cdbf706f971d7b0de5723856b8ef05ae0f16ee0b5c0fd52782d9a3832705b4e5b5bb7afb5e5b6b5d5d5b4d5996db64d7a66ccbe754ce7ba73b4adce65bacbc8ff4817e95cc9ef57f27b457eafe0773657977aadb671cd35db53fbfbb228df483616b2a9f26432aae25e7e887d4e8f78c1b205642896b9a08f517de72bcfc9bad2ef3c4bf44031df9ac31010ddcdc1b93bf322ecb9b3b5df2f385b498b93d09fc9ed678a649ba93ad84b2d3bfed467b7b600d726604fd53331ef811f99f3c16bfc6ad42f33e0ecb36cba1cedd39b62af639f8ee8affba5f7d7159a76b7d0aec6a7d857dac57111d55f47ceb68531000e588a358c0caf239d99cfb1017c0da0b36b7219d4317d1994d16e5ee0dc46f53d2ce79adea77e47efcd88cac4f03a98a75de907c9efce7f4665748b8285ea9be9b9556c8e3afeddbecc3b49795db0be98a30f8c59c37a0d895b53db3b0b03a7403aa36dcd8fb131ff951a5027f39c20dd7673c9d67eff140576f68a74085c3bae7a5f6e056c6d9bef92f0be131bf2ebfecb7aec2f99e08f53c6a37e4ef2c3b1b1affd937dd9f7d7897b23ecf7c17da1be44cdb34f82af319d38c7d5c40d5bee937c9c748ee5b36524fa9fea7e50bf23ec11ee3db51f553b1692ff7392d2b545da6b7cbfd6ff9976746ddf9b0ff13edeffcae6d5ec4a67579db32cdaf4fd43d275cf38af5af1635ca4f3e6b40ee6abb837d4d6a242e7e6b474cee9c43dc72bec3b5c07f3318d81de7dc623bec4b2b82dc87903f254c11fd47e8d7432fbe7f8f0989fc731a2d5fc1cef2076d761d89917f17ce5e5cb63d81926c7207ea2bea74f9e751be55dbdde1ae4dc0ef783ee877f061e07fbee7899f577f8e8049feb24c23e570d2ee1efcfaf1a7e123b979783f55afb3b7cad1acec550b571bf6cbf3fb22774f639e80bf8bd2b19c3c95fe37d874c0755be1beb46336e0daf885da1b39bdec1c741f68b47ec3b9dcd39c92a4e8f58103b5bf7eebefa6e2f257b05bff34d796736ab462a97076d6f23b727d76ca731dc2ed6f15e906d919d62bf40ebf082ce2dd546c2e3f4e69b4f1c16ff330cb2fdfbf3f088be576b7b4f8a393ae37f2e47f33070f7d312bd33efcfd05e7eb3b5b6e9fbaa9b43ee05eb97f9f43ad9a27ef571bf74dcbc397ecf73277bc73c824ff6f365604ff27918645053f57d05dffbfde772d4c71c825b7c3fbc4fc7e38b65706c78650463cad9005df7bc0abc3c7a999f233f2ad9b821fbfd59fe2ed656151b03a267cdcff1242aa08d8993a756f1f16ae1b688fd89df5b609efcd018145119817fc59ee86aac43fb46e85f0f91e99ce31ed6ad93727046e76e541647cc7b23e46a550db545195e6f3686f1c23c8a131bc66ba67005931c6d3d4fb1d0278ee3edffe9ea4b49b24878565b3350ae3bab707cb2b680af52906b529f791b6505fae1e00473f532d8401da471ff571414c88e556d5ba9ad161e1fb28f41df3ac7bbd9dd1ac1028696dfdbb48fddcf83560631fc15f559aafdf60d7a8f563675987da6ca54aeeda63dc9d7f1d5ec2f8cc739c44a1d520d6734c892ed05db9904874665a54e86109949627358fe761be42f1ed3fa7b347527899fba782fb682df0cfc886f48fe6daf583e5db254538317e7a2f163c6746524ab36517088b0bc52f58e56fcac6ecd13dc5ffded3341770659b8847d0defd5d69769d475a43d3769c0c1e8f80e3764cfed9ab91a16ccafa4e44bfc41ae37b10996dd2fe76d505fd5df95bf41db9b12eedb261cdf7fe36cffe4381bb17f902d8bf98a42c2a18ada4636c65ec6ceeaf2ca35ed44753b5b6847c2d4fed2f2478ceb1a99c98b778a4c90519db8377ac39ca7fa77223bdfc79cf4806541fd7c9531f177dfc78db105e719ecd3b5df3fa49607fedaa4c3dd53f35668726adc736262be501f7843ea71c1353b47665c023f28fd39126bb72ab624ba8ff71f1f62a37f5707e1649feefb1ec125ff37bfe76fcdefc136bb8c3fff67f813fe9bdff3c83785e49be27270a2675fe42f70becf047c21b2bf04c7297b1e3a1302e2eb1828393b528c5f5d43832ef0b85139fadc91f314eeb7c170c4c0972be44888fd93f364c477cbf915cdcf4a3929a41d8fed516efeb8b8cf6bf5ff63eeddda13c799b5e11fb40e169830d31c06820d06dc8d09dee80cdb194c908169c2c6fcfaef5295244bb221c9ccf3bceb3b986bd2606c592a956a73d75dfd7316b1bfa59c2ab868f9bc318feb658d3d22bf8ac79273f22fe2648eb0cbfa25ea9cff764dcbd1a86969fd9fd6b4dc998b2309496b3cb2dbec1c2480f1a7656c5d6923be91ebf645d8b513e77a48475e951f45fda9fc5fcb119abc38f5ba2525f737294dae9cc6b9fb873ae23fe043285c86afaa0d6f627514ec1cea07d557506398b5cffffc4beb475ed9bcb2de87e75cb9ee6de2ab92bc99b56b141dee762a9c23f0555678ce202968ebb550f0872d72c86cffbcec80bcd0c9cbecc86c9afbcf31f97b2a5e864ce2218197f05b7ec7ac04bf839fe1f538b0fe3cb576fdbbef37d7deaf5667cfafe378c75addbee6bf7d3647ca38656fbb668cad525bf5608d259e737d779e1ef8bff2be069f3be8b9c4823595fc3d90d37819f2ff9ef1bf41eb0ab980c565adc6a21fcaa2c57447fbccfbe6d79ea5d8a2f53537791f06923741de07d69fd91d61ef44246f8998ebf617f64a9fe9a85c70147e4f9696ff78afa40e3b9f6d36866fef156ff1f5bdb27282a75872a57cab1ecfc27abcbb72bb401f459d4b1e930873faf64fdf6df3ad77bbfce339fc4cdfdc97bd3d89faad7f38a79d4fe6547dde99f97eff4c2ed7ff582e13cbfba7eff6a4bf1be816e813e2058afdeb746956f6fbe9cecddf16eb7226f5a2cecfc56d4d81bb67baf8e1fa8abd68703f615d1e559fffe89d66b0b7786e6abe5830db6679e07ee22fb08d37a217c36cbd8a66ebd9eb51e2672a0eb95e81fd12c7704d6ab5f3c4b9d2949afd06e849b57f80f76cf0d466beeae465c66c2ccc79edbc6bba9bef3db57f80f9dbc1be377e199ebcd754e512bfcfab267e2ff2c4554c03ea359bfa02e07bba0697959bc1b38df1fcfcf47763c1e7f5f7af8558276e13dfd43a872fbccbcbf8c2ec6b0ffe5deb55a4cba0ce97c6fd1dfdbb9996cbb8f37b85334d9755e3fdf41ed44c26da4bc995069c702dc0a153188f2eafdf1e8f07e37938dfb51a123c238137fd3d50f75bb18a2afda7ea4ee3daafd96cec374ca71873f0357b9650b2488f63fb08b6c7f47528ec91cbf47d7603db51fdfcc5cebe765f779f58ed4d6251b023c252b16f064fb7d96d266c1ef1df87fcbcfe8c5aad3e627009adce60adb6ff8ebde49d93c2cbb362f9a19dddf2dd9f4f3f5f97fcddd336d3b9ca98bb601ba87f0f9e3af87f3147ecf74176c71664ba5f958104e614e7e0327d1fb7e5b3c43d074fa57826cebfcabff7f07c6b891ebbca330f0f7e7bdfde88fc9c60ffa59cb41b6c40e498d4d6675a408f18399e1a9757159f5074e08ff37814dcc8a2ff1e87bc1720f0800637128d3fd24e9fc6162d5661b055f0c7b7f1c83b035768b4e5584cfbc67cd3b433c77e99850d3d9dc723e187686bf29bfdaee2769c9d5645efc0f6943b48cdf30e7224ec5ddc8e9ca70fb77cfe3d763ee8dbabc995c9e662f9a7d9538d7f2e7dd9d0eae64918640db542bb84bd8365630f493efe461e3bf92c818f83dfbfa74590038f2b70aa7a796c016f2ab3116ee03b6bf11b9517afe26d68942f8773368c4c79d06ae6601ee6d4bdb8f8be7f8a9c3effec9439f48304fe79c99ff70dce37d1237a9974fc3cb1fd43122ed7c8f18a392fec39ed3119865e20e6b3459fb1da339dde85e712642c22e9f45b126f507d8f35921d1ff0217ed8be6423fa2b2e0ed85b5e8b478ce57acbb89eec136d5b6c7e89152cc43bad50ce7abf167d662753e82dacf5f6e93ffadd7af662f05cca675df3b4e37ff3398dbff9ec194336b7015b5fdeb745ed7ba6ca7abae91ee3c86bf96cbddab88e15376b65a3403fb7c86e93c86b91d07752e0d834b0acd8eb0164e9b579cdea359d8bee8684e49c166c1ebbdb7a6faae73d299e98ac97abb057ae22bf5b8dffc799f3142b5cfd4c7f3deda047a9335f67d09b967d763dc685fdbeeaccd69995d364837cb469d1eb92d08777e4fde350373bc12d1bb9e7b7d0982fad3f53353fbc9e5a8e91ad6bbd2f7c9fa63bf79c6ed6bbe5c83d241d177adcad404ff65a729e0afbc86b11cdb9d94d6a1caa88c38a776a7ccea5a4e89524e071b8ad277bec09fb33b6aa5e5ef20c70c8e9e7a65f249b8aef262de8392d680b6bcbc498298e41f6f0cb0fc4cad9dc57d72ff43927514e63664b86f335296899767c7176b1b19f52ab5766468fa4787159c76a7fc72a87b899ee94b91eb4d631f4e51063fd90e333f5615c0445d271a9d07973cb3e268e9bc7d6c7cdd4458fae9d8cc647e4a3bec25e9b8abe91a80b8d38aab7415cdbf8f4e89e956e52fb976e45ffd2c3f8e582eba6f62f357c02f67d68d16c5a90d3e4c1f814f935f723bf4ec8cef5cc71e877f02588ddabc579f1bdbb80b3db74dfdf2a3e6c3c8737b2bfc62cb1642e5bef816df46ca9f7b5c53e3dd538794e9f9dd7069eddd82fe2d94e8da35dc4aeb76cfe5c9a46014d3b3ee85d759e71bf8fefea89a6fe472a1689e727bad3829ded686f4d06dbc3f8e528b8b3ab79aaebddc2dd3ce7e9a67b5b59f4e2efdc5c9539dccb0f744099974a0f7c797f3c2fea7808de774a9e3d29b34d8a5e9984f629b6829f4927d57b5e29e7c0a4f14c68e8e71e76b7e2bc62bf4f1cfb960df533efee736bbc16e313f34dd2c2de0196503ddb5e5bbdf108c653acc26e53cff58767bb32ce8f31efdb0bff7e90b311631236cfdceab593ddfc6b63316c29f5ec6fcc0fc9beabd90bf329b2c1f177632e73d36cc37d6b4c6dff9c39f651aedbcbf367dc1cdb0c6c59ca7b23309f87db8e0b4d3f19bd8a1b9ff7fbd742b9dfbb2e7f203fb6b1f6daf5d8f31ffb900dd79985b94c763e49d959f43babc8df431ff882e669d92fd2a2f7c16d0ee803b50a7bedb4ece7591194719851f487323a76fc33f4751f799755f8819f3b419e5af4f8a6d70c3c94b774d395f75e72f9e1ef2f7293ea9c9a7c6430775c87513224a5f0a148611f534bf5591a7a867fae4338bee8c2eca26b160637fd7ca9f7ca4ead8f43fa601cf23e43fb8475bdf49c6cf1fa89aa9b855eafce15a9c7e66117ea6c99aee1ba712f74905f3c1d547f84f7caca534bd8586ebd3769edfbfc9c8e102f559d83683702b66ba07cafe66377b007064ba82b30eec9e4577ccfce61bc66c1ec9ca4e39fb311bd808ec19c6e21fb040fab712206e3b8d37b38a7c7f1202b85fd087dd6f85c04ce0ff8379babd8ca5fe290d948deeb2a3a40eed1b56a7845b83e8edc32e964dae791e6dfc57c1e6afd4f1ae6add97e48375d792dc621f9d9517dfffeb6d07c8b53dcd1e2f3ef19fa7d46cfbeda6fb43e7493c156f0e39524ead3a498af63a69b46f448226f4fc2a005f5a6a803f624b4b7e39107fd47a1f7b7adf9639d55d8dd269d743b5bd47a4d6f13cb6b2721ef39ca6cb5c23f67e5fc3a2dfc73dc093e08f79d95dfe0f3d8be717aef59d8a6c96e7e5a39414e5e8cf847c7ef264e705b3901cd86147ee3b67b7f45d57fef6f917f4e2d2f4f9de02fedfa41aaf7c2703ce623de5e85cf37c8d4fbfc1577682be978ef101fb1d4b936ee33f25a6fe195a6564e49e4f793914be3d0effa517e48794d86fa5ec40a5a7e78a5304743b7bb08e77bf3bd268be7fcd7a2aa5f30ecab1693137616a42d889930b9dc9228ff4536b9fa39d8d6664ffdb8e333d931de3d6772758a2de6677b3f418f8dae3fc6837437593cff1e0fd235c6a494dfbd36c6fce11c1e478fe7a4b137afb6564c9e2b7999165e4942c455109cc7bddbc167b8badda5c9f4b4401931e757ab21d59edbc578fe365fbe2e2fcc47d94d37296265aa795d4fcae7dd7874841efa2be0cd79fa036c6c07e3823fcb7ecf55ebf19d9cc6e19cadd38d446e6bcefda589263bf3a3b80efad93b3ed36fc9cc6e897c56b18adc5b36e8df92b27f4c3a19f44031fd57633d386728ef5b14faaf303f0b736f66341b8a1e4dc1760973b2dc3359999831c8ea9db1dec26a5fb2c8a7c4c677817bd94cbff769baf3bb01f0d62cf76ea77f4e2d0afaced5ea47240eadba2fb3d70619b39d5aab706662b13b71e49e2683ac3f1e7addcce9dd62cbbe9005e2cce390426e6fe5d837b137c7a3ead93f77ccbef50f71d9cf991e4cad1febd8b24f63a77bce06c8a5142cb7ccb76f11e00063671070725c48e41edf16e9a1864f927e18b305988cf2b3e1a5b50e3baadd79d16256d38116233bea362a62363866ec9c74dced2aece69923399d6e24bcd2caafef3d41efa711fb3e38c5a17bc4b8c43527ed6a7c15ff8b7b5e51769e60de603678baf0fc43397b87dcec096b0b9e3067f11ee367379ec378dfb6a357b0373fa6551fdb8fb4088e31938701f40bcd9558db3ee9109a6efd3c73861a3719717a9de47dcfeb86649c0662783f791d97d227f39c595db0256bdf8dfc7215663b12b95e62f9f5ef1d9fd99c3bc07c0a2ee9aaeefb90144c46ece3d2b14f3f37fd04c773c171d96acf46fbc27c78e82301b65e50d96df8aecc56d9f98edd8af59a914bd2f16e2bb6364b188b9d38a8e3d2db7e1db6dbe67db067f6b03e67e8bfceffe0f1b807635bcaef986f10f0de6a33a64fc2e04846b3b5b266ada4ecb7e2e8197233a9939f1367be2611a1c9cebfe9cff6e749c73ba0dfb15f87168e438ce7f1ff159ed7917740fe3cec1dbb54fcf2fafaead7be863d8b84f33f78bc56e1b3eb756aebf7d9ff95f525a15d260e85ba9eefbe5795b390b163b05bc18e15be24e889fc9cb5c8c58825579f5736e196846e9b18d71127d864612aefb772e8962c832db182dbabd50d5761d0499d5e896769f5bbbbd7bd5432c7745f16b9f4d17da02f2c93b365ef141494664cbfefe6723c193bd3c2eb2be8d0c83f64103f35eed1744d25fb1f09d66f0c925150fa61378f8b2b25c63892b007ba765e5cdb29f77f411feeb66b227a19db95fe63be5f6c05dba5439f48785d00ef1de25cda49a8fb41d35dfff0e604c765c1cea11f87f1cb0f256fd3bdaca29c2636faa9e317aebf5e9ac7afd9fba5fe9d38df93ce788d7534344f06fddf2bc009f70a42abf16befbbed5de2d08378fbaf45bf1a77d13ea38fe91eb3c8fd953af6fb2af2bb3c3e5a1adf2fd3c23ea59d7ece7ca8b803b1d9eb78d0aabdc36ba79f430fc33b6bb41ce5d57cbe0cffacc6eccedf6c17ae4977787f78e7dbf3e9e74be5eb42adf8b6bd79757a9d6514e409f7a971ef54b24560bfdaed38bc32bbc78bd1b755b0c3e01f1dd93e26a1ef241dd733d7226c577b9430fbafe39f53dbcf53db677ef56de5f48ea6acddbdee45d9ab91f73b737a97c0b12f819397cc164daceb76b6f9e2bd06cf7f7ff39978467c3276de777b1947fde56ae4329b93e9f66abf367f6fcaedbd67fdfdbd67d917f8ddd06fa7852d6d25ef55e6e8ca69e132fb94e9fb9bb95e9fe53b1e5d2b73544cbfebfc476c0fee5761b6076c9892cbc23ccf4ce64ec6cef59c594139767a2722f8e61c25b6b39bfd317e995f66952d4313277889c3eb3b3be767b7e74b659304ec3c7b4ab73e4d5ff7ebd9bbfaddb59b52e5bbd765fd3beafd5e45cf7f8c5f8697998df90f39877731f2128fac5d33576320d14cc6bf31ae9a31df8dc7cbbc36f83a61eff4eac06f4f24726f889936722f9bee89ed3d02fbdec881a25df193d789b239fa348652cfc1f098a793530da3ef7839c42a1d17faba660ec779387681f526b4e576666b35d7a1e73dff45ced4c1def7c2bffef5da5abb163dada2f9cecc532796bd9d28fc66dfbf2ff4ef2c93ced6bcb7cc05ffbbfbdb5b32480197a0ae17e6f821ee06bdfcdd12f898695604a76c887e32f7e3f8f750f7fefeb6e8eee3c87b617e23e08386108f63b273f71989d3cb1f8de1adc0be0e8fc7109cb2416ae010e8292bece32af401d71f87de9e84fe6a69f520dfe633dfbcda2b9fcf55871c48945d928edb72551c92620762fc72bd137ea25b5e30a7b7a8e19fc02ffe27f3017a19e29dff6e3e2a7fda7d61f670b2f35f12ab5792918773b5507849e09cafc75c216fa5c6226bb9cbfadc109877c08731bb5ed7559037caa1aed5b5980f8598b474175003dfd794f3356b3578be88e7dcf41aa3625ac8bdf5ed5cb1baff981faef397817dd29deebc56d2e9f79342f22f43de78a2f0493ce015d1cec847f973ce65c1af4d79fcb8fa6d6851b307ef0678370a7a823ab79b1e03ca9c0c391337dd561cb93b952b6c32f277d9a07b26450cf2c9ae857c36f3d5967ccfc833637c9816f62575ae5dfcdd85dd334f8becd62427723c1dce9b5a9d4f06a6c47d51711ac6b5e7840617e2f078e212ceb39b5f7415db413d07403e4187bd5aee8d44aec5c65dcbd7c3fbf536a905bc29e5b4f00f296043bb1a76ab866dda618ceafebd6bdfb339b8b13d950047cd1dfd84e3063df068dca945fff847e32eae795c0447667bc52dff90699816bf7c33fa64577981ee26b1fc6e3567de7e155eb713cc6f6e4878053bc977a835e1673b89bce32aecb6a6211b9bbd499ce547023d3afaa7a46c630c4de6e35aebd8627a68bd9e402ff723b3eb0ee47578193bf49676023a1eccaeb397614bc53034e24636dd43daca691cfa471279352c4d1396b0cafdc97b2573ea5ea603cc81c58b0bc72f8e8fe321e89977f11d1988ef826c5a9073ba0df2d85aef0d9c6b9974fa959dc4fc70e88d9ff3315f98ed7a4e3936f72fc1938079b8220baf477fd7bf55f9ede165f6f2bc9e96cfd6ec05e73b8ebc5b06e7497c193bc207eb5fc02eb682f7c4ea6e957b6e4948606ef85cdc602e863ee468b330603a47e7271879341b0517df81bc689bb033a604bffbd664637dfadb16f28e34e615d839bb917c2ff5efabefd4de624ddc1237125ef14c90ef95bdc2bb36e0094c9c0cd4ff3a01930df3da07f76de4d56cc220e05c085c08f835416b155ef6cdf2da84c510676a7024d1ac76a6366031c6c08139c820d659b363061a6e06fbc0e93cbebde90062163778f70ad3a2f895db26deec2de6c4835a3f672264629177564cce612e2e6b02f9f2e0b509cb36d6eafe15ec0bc46dfb3465fbb068e749e1d1d7a267bc831c539e1599387b3ec73934f2e6713b854a5c47234eb689fb8abd37f8fbf647233716cf65b4a4cfb4e8d2b7910f79b4660e3f2deec5c702791df5f3bdd0cfecbcc9ac2560e5d1e7a227c09f204eb5b572ec16f3c7b2c8637a2487387c04f6dd9e844fa6efb615791b9da3eac7793ce2eb3eca1087e2d8edcce981ed145bf631196dd771b15c93e2da869cda40604d97956c80aee1b89c916770d889fc6585316ce4cada748b6414dc56763566cc99053eca9fc9d7d7c06f0639be25b397c0c66de0c563e7164dad2bdb971f70e687ee912cdaec2c049f761a56fcadf077e1633cdee4e5e3b50649076cbf0b89dc22e9b81f71d87d27cbee392beff20b1ad82676ed038c982a73b8e7868dbfe7678a16eb37b92d25c6ccd81703f30c6be099e3b90e2e973bb6fe42b7630d08c9219601fc61b6c03d1c8813e4c9a05fa4a399944de2fcd065e7ceb3c848dcdb3e2683fe99f0fe1dcc76643e147f2e628446ec5d0273bd654d0f9b8f7944f25578859837d773c764482e695b60cb8073ea98009e305dff2a9b74d07e3d6be0a653ceb402b0974b350ef78471c311c43eae7e61dfb2a1774e3bf3f5a4616ccd7c9280b32a4968ffaec995b4b7d4f76e097c68133725ec49e55d9b3924253ee2febbccadde0d79d77599023f7a043570987f7ec798675ab2b9b4fb5991bd241daf059c4411d92d25d6e8befc7d3607b29ecff84cd808f82e282ffefdb1fd4c5a021789e333e4e4ee5cc53b97c6e1b169be6be3aaf10d567c60fb55e40d4984f89d6a5cc33dda5d9775aae5592ef22c7ac01f0a787f1fceb4ee91f7585bffda3c5fee7097deaf3355c6f7c83fd6c7e0d3349c9f52a6dfd5b1d81f87c8b46deecd5713eef0339930794d79bd95eac76a368ec99353c93f8c5f708c8e5f9e6a18201c07ee8bc4eac2fc4c461e4d9cf8c8dfff70571f0f6cc5b682981eda703b6f9f74822311f8d492dbcb03b0d7b6d3415fcb974d077d6183d4b9a9715e0d9bb6e98caa73c1cabf9bb85ef55a1621af6a7dc78fbfa0eeb077d13042b5f8c2785fd99a173557c0e57eabf610aee27a22beb4f9711edbc18d44b3f5ca0aba6909981e2ab10065ff238eb65883572cb97de441fc0e6bf79627c5ff92188240e664b12eefd5e99d579de0327e61f3f4e3ef71bbf7d7d20e167ed0fb6bb2e9a549d1cc93a3dad412ab66fb6cbdda69c1e3a4cbeb39b13edae920df91c89f9248e5421276698fa6ad00b9f0aab8e294d747e66991614c6034d3e5156a01d4efa12fcf7a5cc3713fffefd8b14bc27162c0e3ba78fe83e7020f64a7e18cfee2f836880d71ce35ce5579f9c27b6af7e23549749bb6dceec20a509e8aa0331eb6f37430bfaa7e028f35fe261175928eeb626e0e6a26bd387adeceb4382afaa2bc46f336dfd1595640cfe71389d2f56b685fdc97e1becec372b592911eeb526bbcb3e107c5fc3bffbb768d7f2691c764c965729538741b473e15eff6602dcdb8f55f71c7a5c06d03f33ddb7f3eb79775d891e3f94da2ed1f63fbb22156d05a84fecd2f7a6534181f9578e6310b4deecf0cb07d698b9cd34dfe5b974779b6606dee5d8e6251cb96a7e3ad97276033cf810f79ecd0edd8b91e981d043159c47dc0fe8d063aff77137ffe2af4d95a0ad9afc94f9dc78e6ed51e9fcaef01433a71d87a367160ae73766d4da78afba1dcbd9268aecb9db0b546dee06dc9eeddbd9168be67ef3785cf678fde51c6bfd8b36bf838b5c719d435efd7d1c0cd89e3bb6448cee9f683be05974d85f361fb37a046ef0dfdfa05ace591bd9711f7017b918d7b3c1836d42b3eab7b92e92e978c3c27e98ce13793453727ce7cbf0ae7b5f7fdc23b6d4978a599137ce7bdeabff96fbd5bf0918e0b9f9d332d125c36d1223f10232663c644d55e6cec1e3f37fd740cfa84e365b6bd42ecd105ee852fecd3e6df729936384c984d83ba4b60a2eff7b278bee83d839bed30b387aaaa67f8184e101737eb9f341e0eb59761a5b3b2a82ff526d3d5a9434f84e924faa91cb45347e854eac551ffc27c461c537034fd0ca123b07eeb4a992e9934f4c94ad9dc6cb9ee17bac40aba30e7e19ceb12ba6de8f7fd9e456e29f4bf22534c07edd933f5dfc87cf991b0f747dc0d5c5b8de1b236f715bfafb9b7e5b341f7e8efc575e7077d5bb2ebe9760a7d5d982c439fdf12efb1fdf36bb2ccf703d379cb769e8efa87a4c8d8d8d37155336cc5e1b50d984a3dde88ef6aaef526a789b36ceaef73c0b39fad67f74006eb068e65a64b89714e28efcaf6dea0b66fc519cedf856ee59eaaee87faa461cd2a79f0134587a563dad2f5e063ddc7ec9b711c792f2be0d00bb65f3bb7d9bbe579daf2f671d8dd215e6b8cf2d5d44b0f73a96c7e4fabd0885ff2be8a69115886dc2ab61793e1ba7ee7dc90346be97b057403e826d8834db5b0ea1ecbc1b628828e76a63f9eb703f065a34df5a9ccad224fda674d7ac1d46d6c6d178e7d9b5b799e1419853d26e5f3faa3dab777ed3b63af3fd67fd03b42d8aed1e7efa35f3fdf2723726c5af7067b98cb3cfa3acc8e7a1d9163ad37a823ed62d54ebe7b7fec37a13d8bebc8ab9598b1346e6f89ebeb36171f5bf9c0dec731003f0d8998edc59e83b6179b8ba9fc6e66fee6981557c97700f3f6258e553ea6dbb7d7f31b6bb91476e3312b0cfba4d6bb016a4ff81ada629e0d1bf78b3689fde9190b7b1fcecbc6b169fc3d86ef847ba6a1c72572e0e86724c7c7083b0e65077925329a8d1087817e847d82f300eb9ad649687799ac2057f68f751cfadbf1c83fcb18f5a07f5c455e6bec8ccf31c60c6e887503fe9d922cfad0b3a6894319c754d596d5ed28d405776d984d7d0eeef9013c4ef1f5b583b31fe7920cbf6437b379663a5de0b6a4aefafadad6ced5ea5c913c204fa778f3c46baaf9f8707f1c79cdd08944d9f14dad8582ef6953afa12fcbcabf9f533853e1799f9fc1d5b5b8e72eeb063d6cf22555638fbc7e36c861cea7ecb925fadf5f3cfff671e47d7eee39f60dcfbbc6b1a16df0655bd5d44177deff8b675efa0d1d9936ebc8a3900de3bdf89eed0ab9fd2de32d0333be53d7a1a9d4a117213b5f5d931bf9c2d98df7afd6449e558dbeca97ed2aceb7e5c97752d7447946c36f04aecbb4e5c7dfb361b85dffe5734fbbfed1d957bd7bcde6a9fbe6dfd94395cdfec958238b3f03cf33a16ffefd7a49dfe39fefa355d8c5fe6f620d3f3f030e66acb2298600ef63f7609c1a4e93d6fc50b4a9ee61af1ae64ad58b5147f7819be4418f4f6c4d7e3d7eafee8de37e20fe91143fd649c787ba04c4c6f64b12120af53a16cf0f389add5e71f30df2d3b4189fc60e7bffa0045b239a1976462ecfb6f1283b64ce5acb3960ec48e030bfb076df5cb77f13df587dc5cfc3fa2a9c07e483bc654eaf64ef0ebf877e8c798507807e7b2ed8639351ff9c01f737d664b13da963928cb8c7176c267c37b86789baca58bbea7db68915dcfcf04a17e6de50ec51333e48c26e6b15b93016ed771a0f1ffe87bd5aae14389cc5b8792d1ac4528ae094097ba61e63bcb7ffbed23389263bff901610efd2720e64007938e56c7b1c2f044cbbc2d323f19c4a7c5cfa3f43616bfb4b51e7c875f12cb17abfb3e819b09b12838d39b68f55d85dbe8ddc31e497df977f2a3c7d80b1450e69f8b7ac9facf831b15e3b09011b22fb6ae05e7ede731e52265fef71e451dc6bc8ed968df272d9f1693a5caf7f2d9edb02a3897bb67d00bb5f7f7e49c2ac9d3895bd391d60ad3bdfd387b762b95e45f3f52aec029f676a0537b1ef4968bfaf80572db88c47c1c59803ee7b3f7f78621cc83b788b2d26bfdddd78e47dc4e1f54800279ee76863d92d8d3f48f16fd262f921b039eab3e22817cf127d9f3a2b27388d9d6b9e169986dd41ce6e2f4f9ce57ab50b6e99eccd375e13b6c742af958cb6eb09ce07f85e153f614e9311d34d9783f1fc5562610f71af7ceafee458b7b808ba89d5dd8ae7be153dece112110ab5c48edd25910bb5d4420ed2b20f795c781ed33fa15ff1f488fa2fea412d27e2f39f9ff83bdfa07613b0436cdf64143049229f36424c80acc58d66e83346e4bc0ae7ebb8b81e84af09b5f7c5354f39e68df7dba2046ac8788f25e8f5fa5c8ab595f5b3831e5bfb4312051fe391c8e12d796f9d5cb95f3b7fb3d9fde01daeb397b1e8010e58a824b49f5661bb9dc85e348093caab7b06f57b6dd79fdd4beea7c48ad7b1b2ff0cd90d32871e45ee7f36781275b707b2e9b7530bb8b100b755ed5f7a1b3b579a76668a2cd3db74d03f6483fe21c5f39ae9b0ad213b0ef3af9322b8f1baefd34f31a7bbe098385db8271baf5cbb453f273bc0a475560e657b90e30b982cb7cf19f067b2f160ff1f5d86daf9db90b413e77a229177c3dc36d642ce5e9fb91f2bf1c5550d1c97e124b44fcc7f851e4b1d5d3ed22562bf7e2d9e2fd3f7611be7ec19f58d636fc9203b56d84d383bde018be4d8c7c4e9759083a25756cf876bd8d955c5dc1cb0b50466d078be6d919636067c9fc112d73bf4b7ae7531f07d783df09e38762963291507da1971b957183be24b10dba6e1da4d7c15ca4dd798038b00879afdc174ff0af17dfb389a735e1197e29e37e70170f1427f629e998dc3428ca1d0ff26060fe760abcd01ce1bb303298c2129fb1bb260321d6cc7a30c708cbfdee30bd9f56fc6fb55d8e2aa4e97efb76771c61df0de4cf7615d45c569d06f255646b9ed843c72e6fb410ceb7a4c3ae93a097b4cce257e9baf15d4df408ccbc999cf46c13edc887d1ee4c92edbafc22b35f6d8904436d498a19cf3daff5df01143fd275b1bb4753315c3b9e0bc2f821f1ab0c992eb55ddfb272197f8deaa9ecb68067acea571e4891e98bc1e43bcfff28ff12093efeaf2deb0c075b2f3dee3f00afd61d57f8b6b560eddad647dfb96dd07ea92a126dea1adb74526b0443c27d23d64439f92c26e2723c139c575f768c6b970fb221ea2738638f7711f82236515922edaf37d587789e778d1395bc0afc53e2cccef1e249db5f12cde2392d70e57bd2bef5ff36a9122b5028307a67f48dbe4905a7493384bceff111cc88ef7c1e5bac70ffd1dd656cb735fe70ae1d72d4147745bc1282fd116a42772db633d4350aba1b98bb732eb11eee25e16b9c2ed7ce1eb57e708e735093471628deb5bd68cecf49e647afd0af3d5e0b702e30772c87b1af23a01d1bb45f40ba7a755e40f4948f22cbcb6d232074e9c1ac769557324307e58bb236aec0003d73d727b5a6297be8025e3f52022e67e9198d2fb7ed0567b57262b59d41faa3ac6a84b8777f603ff05ea6beefa03cb533a6272d86bbd457dc0a7e36fba2509ed9be0f06332cfe466097674ef94de54fb1cf142da391fcdd6abf009f0ff4cb700666ce4b5e39d9c13c1efa4e201dfe3f0096a1b52e79ac716b737b6c172de7986d88c94c5a0b9366632025beaebb255402ef083b4941c169f6302ebd0de891816e6113f24ef40d54300e480826e0933112b4e984fb3c07e2ecdcf6a7fb498af15211e13f16cbb96ea73f11c08f379825b1679a6bd2d6ca86ade8ae0fd2df480136b025c871007807346ea7c5e5f3211d85a657e9745003e35a96497d77ad4f82061ec467d30bc672397c1c86dbd8dfc72893d07efcc7d57da99b0cf1be715ead7708ce83f9bfd0bf13910d313cfd4d6a2cc46792ba5f62dec3059c93358d74a5754ebbaf39fb291eb23e728ca3b3ff3d01e11fb9c9f17e38a73fa86e7ad7f2005c6afb201fa8e44f850dc3f899cae1d0cbd0bea02b947efccf997e41af1300b5d8eb90c57f7bdfb1d6283991e5b38419e7e8bd79dbd3ff487caf9dfa2b7c5a136b79aacf3bd2c6c199e23e4f6aae48605ae5ee8d5470a76a6b06b843f9c004fc1f53686dc16ea138e65e43a973e9aef2989e83269dfd12955fdebfd5a4b9e779bed86867c7fd0b7c03f3f9a7f6683044e0fe55be8b53bba667573af2a072ed7d5cce691e775bd2f07e62ee2627c1c8ffa4fbcae8dc7c4c1a7009dfef5bd5cf5e450cf6655fe305ec079f33bdb13fe5bd670e3792c71db320e78546253558df7c0dec41b90cb4dbce97638ffc305e6c87137d3622d626350e3b28abc9ff1f2691f17e353566e6b9fad3807c738047c92b58abc03d4f8086e8ef04a65dd36e6489be45df296d66ad207365fffbbf6d9daddc422de7b83ef176bc4a918bf6db4d9b01e0173b891378f712f7c7f9cb0fecd78c364448e6c5d78cfb97712d2e3c4b99ec96dbce76bfbb7224b873bf5f347886d0d644c4dc5ce1f39be457c277485c6a1cf9ff53fec3a19ab827587b1ff0fc6048c7cc527efce7527f822ca3b5e924eba9f6df45c4e15bbc2eb09c427410ef7e3c15ee81f75df30fdf30aba3ef423e4976072c8e68bfb439a2e61bf0fb6afc809f0ba627ed206f70d930fb07786ee8158194da9bf8fc3aeb70a9f44fe9f9f295b73bf08dcf52d2828f2308a3cd848bc07f21a2cadfc9c594f87e67a74f0574cdc3be7fc17e706d4f08a7dcbf12c4afe5aad9d853d0ed8947566d937e85105b1cde084b64def60c4c7790e14fabe337fb964e70070539931e85170030e77a74da1dfafde2b88f352012e84ef1df1efaef14c458e1ce4cd80d87251cf5d98fce7ca9c54bc81e6fd6dd997bea7dd7f879fdfe1e091d735af53f57db3ac834dcccf5ae6637b7b35be297b81f338197b8fb1e3d2c4e9010749e6f474ae9ef04a975c6e1783e71f7c0f2f357b70f00c31fd05e040db8784e2189af678c3fd986df99a39c165a1ed6b112755be7fb9db5fa425f218ba0ed3f7f2b4d49f35d934dc3ba8c992d8dfe3f1cb13c468037857e421d2f77ff57d503ed051a5a88313fddb30fe5fd943cca6a4378ec5a1a42087d802ae22833f066b6bdf46aeafd8d0cc3e907edf126dd83dae8fc0ff9043baf35a9cd3046b7a3907068c05fcbb2e8f177939d46e4673c13f7c89438f82cd8bfb92d9049abe60cfc2be2e79b90cc0eff195de9e1fe317b7eadbcfb90688e3ff2451b67c1b997da5b4eff68d7b42f8c9c21f0aa4bcf3f7c6735ec85dc0ed043e5fecfe72beb84f79d4ce013b957c34225e9feeb6c21f56e70bf35532cede3db3b1c556ef4438f7afe0d73375f8db48e3b169f17980b903df850eab7ab2416b3d0b5a727f293ad7180fc4c14e6e67be26c0533e3f62ce0a7355f142f26f9f139ea7a8647f9db3b933f7389c71a1bf7d2d820e93f3aaa7b83e8eb458eed2b27f4aca7e09e778c5c50f3878b05d2bbd648e0b7c12f60e304f8a3e626310fa93cd03fe1bf24f11e65f9e7f986bd730afba4c35f71e82f316f80996a44cac962997e6f77bc43370ec5eb37d7686b9d90a1c435c080c838ccfdcb1117ebdb69aed87f75a7f0d196307dd823134b0f9e179231edfe5f7acc57ab0061bfc12d576d1e3b7744122f07d78dce8096c5cf91cec95077ae86de42e446c695a404cdacf42fba870b78aba4a19335e16c1f59f8c3be964a7061b8df35ff27551b9159d2e65f6742afb4742feafb51af473257e8e3ebcddd4f30b6c5ab06d27e5f3f567d93f8e5f2e3d69a7be1cd7c9a089b76c76df8e1ad479e463b307325b8b4a6680b35ec5629875f00a179462e7323d145c947be8f384b693f15997e784710dc06f181cd7b3c5f3ffcaf912b2ad7207d3e675ae73dd54df4d4c5b60d3052e7ca6a7a705e477dc24b477649133dd15a443615b499d728a2d9bd971b729ea37e59a35f6e8d5e7e084b9df75ed7361334d517fa0fdca6d3bec7dabdb01c6bfc7550f1c1e572a821bb38bd1f6623edf10e3a732de599d0fa0dfb02f0a7d1bcd21161c8cdc3cd979c077327911fd86d97ff26fd90ff94d7215064fd9a0fb9e38410e399ece7c5fd79dd84f573f2b2f6b613be85c6cb04ec097e1efdc7362ac83e69f8a1827c488979843547a4b00c78d95d338ea1fdf1660f7a37c70fbe20db8f520c77ac035ef77a616cca3c8391c9222137b46d503956e173623e7bd3275b7b1a7341f49e80ba86793d834a91fb8df82f8a2a4e875989f43aa5c37e6fc0a36ff02538163d4efff439d03113f6c259d2c4f0bff26703980b7811cdf9566452031d0e83be8fa95e951037babf24afc9580bdaeef5b66a7b1fbfe2ce1fbff01dffbe5b88eaccbc7b4c60ba2ef2bc3069531aabb3129bb779c0e9ace09e887a0f8bb7770578e7a9d5a6fdec4bd22f24b78b6c9bccd4060469be7016cad3b355286ccd4f46d8d1b0de71dfb9cf0e768f80f76961580f5113225fb9a01ee00e26810fbac709edc5693e73d3b2b07b69e5b0d5c9af25e84e639fb503e5ec6f27c9b02bf39ffecbdb54e427a7a1d9123ffac493640df47d6fdb32eb22e659d3305cfbcc89a35f0bce873c7e42db266359e8d461e18955743ab7b35fb4e33bd616f122770d2a2f731e1bcd84d7a81f359b500c385b9175c47be56a9cc6d7f4d47c4cc9f713807b7b8d6b15b247295b1735f07f108b53d56af9992b6a72e778d7ddf8c7376e79771d8bdc1181679e3d9a7723618670ddf9739ffff45c4cfeafdd581abafea83649c79e88b49fdd118d33a0aaefccfc7b3be8e073fc458d899b99e96fd9aae31cfdd0ccf5ce8293219b41fce451543a862351597247beff51f7cae01cf1270bba3e2d6e076c0eb1ec751f1a3a36ede607d85f483f15dfe107353e194799cc9885356f7cb29d313d9cb7eadc76524defec67f338b439726b6b767e7d6cf4df3e7dc0f147df6ccf75b4f6e0fe23336f4a462e36467c1abc008cad82cac47359f69d9bd6491b7d7e265fc5a916be035d44a4dc0458ddb1df4dc3062d02afc43853d8398c046f8b90ad657c415359e65ccafeab87f25aed394af892a5df7801b19eae21e722237e097f5732e005e64554e8ddcd29ddfd6f2c15a2df867f94935f763e028b43e803ce7abf1bd70cc3c8fc7ceb5b3a4a16ed88c8dcbf769e4b9c7b31770736941b7420fab6b277a0d63ae77aec459aadc25e0ed9d3c877807f892bc2ed9d6fd2e756d45ce4539473147029fd94fca67bf2765ad27a1a87bec5539cfeea7b5830d7df7eed7674533c11756ab4d6af627bbe7578c7fb033e916445e63ce40db1726de1f6df353d2c2980870d5b7835b533cfcc13e91e317f1b29f65ff30298f4db5937fc58a0f2db01c2b115b53ec1811fb8aac9a9fc963ed3c87b8407c333bbf951eb42a06afd51c6f7f56ce1d3dffa0eacfeaf95cb7a30c7fc491fb5bc4d7b8adc1e4d1c847687515e2ddf5355179dd4b59bf73a838bb945c4218af5711f34d82d60a717d8841777a1dbd3e026d961831bc32d61a44fe01ed23b02d1aeac2f8f3012bbc5c13f033a5cd745b85dd77697359d72decd345bf134733940f9c0fc07fa61d98cb2ac659c58c81071d7c589e8f577489c057711c81714604d57b9b5cfa7aecf4c759af655a027e14ea6546ee41e2a7d49a25114baed693d744d09ba84750f60cd823fa3aca78e8fff09c4d85151f70bb82cb50c31922b0397a5c7cb3adf3bef1f3ce5c5b5fc1847f616e0a3d4765dfa0a771f8b44ec2de2d73aeddb1430e8973a584d77da48e7d032cb0d3b3388737f4664e0688574e4bc03ac0da2acf698d1d8ce5a22c0bfc85d10b5aa9e5c82cfbc6d68be390418f714ed416dc0fead8fbed8ce368d8fc254576fb1ab602e2fa0a860430b806168baf2d8f414d8cfefc0df1ef33b7bd3a62fd4d2c3dc653e19a4262fa5b28db6929f3ef4efd3b3da68d5cf76c3edbfd74e7e6b88f5d9fc7c964cea4ee07df7bf6f1b792d3d4f7decea5505b56e5761ecbd557e65ee617abf955ed16c85fa9f89d064ca2c0207e15eb22ce0a7817aebb947a09f5ccc8998dc8f41ef34f486897ccae00ee5c2eb73fa52efbf25ac0bb5698ba8a8bdd38c304cf6f61f452476e868abb419cb57fe8b6806aa7c333d87a57f632e0a83eed05a25effe02c6fc42828bfd5cf73e91bd46a7bd5fc3fe274d51c3fc65d2eb5be145867e88a3957c72c6a3473e2cc6b6727c4fb1655ad8da68b404f01ffc5066b65bc2e7b0e1900b6b3c820feb4d4e75cc34256f27a1fe3c9319d02dfccf18f827b05f652835f1387fe56ee813b38d1296280a26fedc52fe9c16abcf277809f91d8399479f31d1afd470d33aee90091bb1698002de758610c3ee268bd274e5040be5fe60eda8784a6da7e53e304c8e5ab8ea9d9d6fbb5907de3e01e558d95f782354db3da3522dfa1f8590a26bffb11871f146b0fbc9284c169ceaf9f68e7c5858f8bc706647e578f0d89399a165e0e35049c3b437c3f19a42519a4352c28fb4d03a651caf8ff7f64eb5fec273c9f1f70388b7b4b2e68a6f39afc3c91af163866aecbf498a52e9f4f3d2183064fc313f4b95030d726a6e9337955eed38c736abeb6c9c6d06a9b99cf0979a9ad5da685dd9dd4cf0bbdd6fc5fe5c49aefc1f5f882845e6b227efb957d217202e0a360cc781eb9651c6df752a76a6770f5fce582c7b054dbdae4a5e1fb45f38bea711bf489aa5ef2f5be840d1c42dfc295ab3dfe6d6efb48ddd08487be8fb9367ff7393795ecf971483b508725f007bf673b3b01be5ac32e36ae3d183d31953c5e3b7fe3f8d478d37b47cc5355979c8cc851d43a637eee19ceee24b47f577d3283a755c4f45477b72c82abcc1d9967853e266153d4f891ccebb0a6befb412277474cce2ef3d988c5ff3da9b8d0ae15870c6d91b0559b9bfb763af681e373adca27d8813f392e39edf4f3cc7ada4f16fa1855de3afeae7fe0bb5eb5fc441acdfe60fb54b93f7270381ff44d72d456365c2af70df3f7ab795bdddc6b68b1df60ed07898677fdd5aa76b276ce5cde389f7be43c9d271b85df7fd34b93cd97eb03aef7f2a10293a7e38e8fe5ddfd36c4ba82e6df2935d05a9f589e6bacead5f8bee4f1c2972f9c53e037fa340d805fa17e4661ece13addc1f7fbc9e2f97f989e6d88b30919ba4e77fd73dac4112ab979d89a764d4e2869e3735cd0156cb9c84b6636af2bc11e259c3b2ecf3383631e7444bdef12fa2f4bdc43582f28e3a9d0d393d736723c358c8de7f00596127b328f9d5e3b1bf0f831f0aff8671e8fe26bd0d7e27c86acaab850a39698de444c22b6825b6ad9e59bcc0b03cf9edcff22767497274fbe672d570b76dd2aecb66bfcc0ca98ab9e31b2974459e90f752ddd8d21fb03e88b0afc31eef96d50e78ff9166e405b87cb430c9bcad3d4d4abec33ac5485bbaef659b3fd5a9dff7c9f369ec15fb75bef9ea5463f268ecfbbb977f50daf396afedd17f8e5442f2fd04f4c4f051fbf494433236e0f7b7cdcc4435f7d2fceb2aa070ad4f20c8d5cbf168b38908dc0ce3279a8eae8991e3072f11bced7d04a306e71ca908f43f61791f2569d956c9ebd7990ffb55876979a4c2eba82bfdacd9ce0c33c6ff06ce5faac7c10abd6f9242b9b65f12cf8cecdf80be71d10baa8ff1133fdf1408e812700f32f9d15f03a1eda69672e63a07cee782cc7a5a93917a04f67a72cbc6367dcb73dcfc956f203d465be78aaec4d9431e5fa4072bdb2eb1af6d599146478af37dec4214a1d5b730c0c6dcade49f6568c66c731fb5d436ca3a9ce5af00ea465b7a907a4e021b8c73bf107e88dc63e80823b81f7707ad9577fabdf4564a77d2ffead5cf35af4a0af9b7a9df69972adc2bb81635b42df30e002117c08241a1a5c9a3e4d17b22e5eda476abf1bb507ab512b5de962ad1e11ebedabf8428be73370adc88bcef177afa78ff2dc07fe761367c003df5b9e63e4a4e8544d6eb5fec2908f7cda63cfc2066e5f9c57b6eeedc411bd0f6bfd433fed35f4c9bc3fb0e3f4fe490ff2a1683fa1ccf3fe505db4f5754e36f5597fcb676d38f65e8fd7fe5d7b966127c099d0fef83b5a7437ba9db0aef76cc2b344bfce096e8bb0db22917b03ffdd71379ff5625238c58d5ea45fc28a35f4c6556458e9c96470042a7d99707d3fa96711dc17a7b8088aa4e352d1a76d29fa333994c9b2c0cd0c0d9fe7f053e7dd295e77c1c72bf279dd548e998a178bd9a2ed0d600dad58707ff1987f70230a8f9bc02eb82fc3ff97fc69db19e409c6b2c60dfc74c72e8985fc4f7128f87c258ef6ef8cd90f82d369d3dfae2297c61dfff8b678dec7b2d616f8af00c3b162672cdb9fbc96bce2ef3a9c13abc5c7303bfd7c157e804bdf42a8f3414ece115cb7567cfcfc2d0c386f53c59b11032600eabc002bf5052e23feece5456247919f898d21cf1c6f2ff99f105fc06c3ae4d9449b44f72fe077587f3c76da4d7d45dfe3f0fa9ea24db58fa3fe85cd7795af6ed338ec76560e3daab29116d8cf8af9b0be13c07e8dad40f691f55eeb5c4c445eb7c43e61bb3e459da4e5c8844d66f23ec119c665f1ff9ad78bafd1f349ec2f1779d872e2cc7789e4f273a13e3c86331ab9b663ceb39740ef4becb38b396e374f9c8be4a992fd36b5e777cfd0c3ce18c34f630c5991d6f8b5443f5b9e73429e2de46c31e485ef37e01904d944ecbd368ecaa6a8d6e33fc2efa57164f17b5f0517aaaab738a72cbb6fd55b1931b7924731869a46c470ebb89627c119b98923ff7d6557722d3116b66acb813e52782cf99c2afc635cae78af7790abcdd442be3c136f96b6551d6b3f717ddd4f8b2087bdf3f27c990d9eff1ebfcc2f92d38ceb17ceabb3cb06309f9b5598ed74bd4bd5f964f33dd6b0e24bc1dd287d23150bd45939418bcfd799639e016b3e1e496e2f8cd3404c5be5f378de132b38a11c039e43f4ab053c07af7d60ffae78d20023c5f66aeb10394fecf922bfbe337c81fd243ab27d744aadde912cbac7c44a4f4c5725a3ed7eec404fe133e24095de7ae5f3e167d9d738945e05d7658ddfca88130e853eaf712ced9573fbebb1f64d15fb537ecf6bec780eef5d8dfb795dd9fbdae0a88a234ad31df4dd9071e8b78e88932d4fa47c5acf36cfbd5f9b7e22e466b6103c9fe3723a783e4d374ff2cc7addf433190fc16760dde830a399d9cf5dd8da0ef333d4dc263d27551ff0c67ecd506bb179fe5bc14aa9e79ec189f571402e74e8ff0c9c6e449f07c526c29c68dcd99e62ab774c9c80db636b1d03bcf3988edf66eccc92b90e9712765654799576e6d0e3e40e578fca6306bf5bd6b9b85261db177caf815fa1e4b814be98609497cc1f4acb6e3b29da342d323a69fcbef2a3e0fc17cf5efa3406fe3a8ff2debefcbaba4da9bf93de6f3e297a5adf70c48fcaded99faff94beb8eee347afde0dadd5616e5bccd867cddeb81f605b9d0b9da3fb5a98f6f910b5874369689515f9b06de39ade5d9fad7a5d52bb3419e4f07fd4d337f03e06fae29f40c1fe2dfb75a0daf88d5a34e57b88ab01f27e4a1f67c0ca60cd36c145c7ccd865b6bb115d01fc3eb72de81bcc00cf445116c4deebfe9ae5f261dff9c8de80531ee985380ebb774bb747a67a821835c2ed79f4b3b8e5af46730985f9bf856bcd719ee733e96571be23c884d40fd538b2141fc57e3a957f954409f7871e4efa7bb3ed323a5ce4bcfb15c4c8e86ed3c73d6cc0e3d24831cf9852a5e173d2e3a68bc7e7fef7a157b2131945fc25ea4c7b163e2c7e43c28fb6dfe87d0c78bd09f27560ff4faa4fc30d7838e87ed7e68f7dc57ca6c4059cbb189dff7104bafb0504d3939ce63fcb25f67a5fc4cf011ff3156ea54c43bff843c0a5bff99f21dafbb79d9cbeb784f0f9173dfbb3777eb96dba3caa992def6ebb0ddd23fe3f2ff73d34fa2ea7d986d71fbb979be88ba136e079d49b9de417e76c16575f38cfc7991bf1f8fd2b5cbfcaeb0bb1d3b6be56fe018a26999ca736f5ad0ed7420ee51e100f8faa875c1e21a991bd2f170de13d65088fbca39507301db3776cda02deec5e4ed69a6e7fae0cc9f86e23eee66badb0afb779bf03ac24cc14220ef0e933951cbc0ec360ff2637187be43bc67901fb241266b4ca19f3fdafee073a02d2d7afff4df117381f5b5b28e8ad71e899c41dca9d58f6ddf069735196d6b98203e9f2ade7a56f1b609bbb6a90625b81971b1efe11b9a6d2ead26e5ade235533fff43f0a8dfe33b23052dd38e3f22d15cc9e320ef8a6f052dbdf6a8fa5cc5e5a8f23c5db4d3c881fe0f4a4c06f9ed5dcee383b2abc7dfc47a4ccb1eb389d7024bc0ce0fd57e867c4f74d47986783fc7f1a875189bf5dfff693e31ad9eb5c625b69d19f5a566fd8cfb32acdb07782fbe564f3d3d7e03fc3df81c2db674a7f7a0ca8fd5942744bb45a9f9e272db823cf5af54c61c72de1b09ebbeea7adf55fb01ea7640cbedbea2cefed3e42901ff849f57a9d3eb4c5ec63aae64a49cddc8edacfa0956627f1cb3e29ac19c6ae3b8266cae35ded24d15bfd5c63f22c739f0935f6986e7b2183ff8218bc87b49acf685f7eab93b0f99d3be8818a5c113847cee6d9f26517f86dc9a667d41e335fb3a0787972734b891a57d0bd8f3b83ca93907766e411d53e42dd9bdb2e2b2377be57c67dd392fc4cdac79e67c0adc8686fa6e376d79e724ea43ff958953cd53437fbb8f54d3918aac8cc831b4aed9cf3bbd7d800bfa4e3f6035eecee70bb07baf80873274b1f65dbe5d45e3a63ee52d36875cfe6af900599377bf0f9f9a73c0bdcff9478843cb9fa5aa2b8057ec88fc3a7a4d1dd313ecb3c9ad05bf6be829cef112dd20b5827eda86f9b592417e9cd46adcd9f52e3b5b7f1b73dcd3390bb8ced0f49c3a67ebdf2ac700afa5617bef3619b4ae938a370473b9bc6fa2c060ca35bf1d21260bf810a82f7229e47a39bff218ea6aba9484c0b707b5cc55bc85ded43555721db5bc92d00f3aa7d71071fbef22efd4fa68ea67a7d8b642ff1898d6ea0ce07650630de7f87e0d8ad071d28eabf510d57d41b36694e941454f193c264a5d96e4b1e275d9c8f9454f71a5038f92f724f2c4babd274eef46228fd98d1b0279892a7626e61678139de023757a651cb987644455fc22c4cc901b602c798a79fd98ecf3a4de2bb57e54dc2b4e460556291db9e714e279ea18e08c59a756ef6cca6bc0c634c4f74dcbf57deca06a8bf3fbe9f312dc10b3a4e29784bfcb6cfcd6875b6e1bfc6721eb8d9c5d80358a37a67e6276a4bb99d43029eb3c2e4c5d853949f01f96ee390bbb5b36b679d17b9ad47ae5aa5c505bc4e3976c8f089bf9718e793c90b90c131fb589371791173d34e545efcb743d471917c2a66d197e493b5f59c18cfb48c69ca9df2187bd66e3497efdde251bcd804fefadd332ce58de9385cd2772de633f9877198fe1eba572b7201fa088759b7caaccff9e701ee0c9a6ce892a39b32297c60bc9190b323387cfbe6edfe9ef82f750f0006acc428d51d4c71212d8a78dd8a8aa2f1cf33f9e74fd8a9fbd5ab1b8c701f8b6d4b59771ffee2d75ae87d85aee571077101c57a60eacf62adaf1b07ea755d8bd91c86d71eeb67652f83cee3987b5e5eb7748761e4d7766cf35b6d7bbe7aa078f7721a1772005851ab35f1bc933c8757aff230e7d5e7709b5937906fdb9ec32d330c37c1e76c129b5f203d9cdf7fcfcd0b87e38efe0deb0850eaa2ee26bc671f27c4ee478d4da801f67817bbca77b2417a48e7f13f1b7dfaba87f51b8789458b97996a07e8498e540dae63b65ad2a1f5970a95575d1cc9fdbbb96afe47e5291ef57f67825b7ea3daa1e4b60a7ce49e42a7a40f721c7831f35ec8016fb825e38d92c8e0edda5d227e7d7e2793d0e759fb7cea1f74dbd29712ab2ce4fc7e270bc31ea26f061ff4a47ee212bec165974cbd4f24ac8e9bde8f5836aaff474c7f6437bc7dff545e1a528610f8419ced556d49289de04bc5f8fd3db4d0619e07eb14e988d83fbe6dca7d67c00fe4e92e7ac55ad99185768311fad5efba360f9f9fa6d6bb8c0b408a0de41d85e988bbce699ec9de9197b99cb65c3efdcf2a2f6aed430bc8a6d577b178d9f106283f4a4c5f403839b62600b5d017e3ab705750e9481ac5506ce89a5139422868c9ceffaf9bd08bbe639abc4dac47bd5cefc26ce27bef7d819b9c498bcd867b2cfc972ed46b31dfa7c55ff6dc51e3e56fb4d3b6b4d7fe4945a4199bdf0de3d8babe637f17341c68655bf43e5e346ce29314699e7df64213da22d189c108fc3becb5a3cb72be30531d8a380a9d1f93007952c8e795cb2c94eaf73b4731f4fd3655d9a95f28ce01877ba1d0f821b933b19770de71a2eac263bda3900f29327cef59c3159dc51bfca8bd4f70adfbb826342ac236002847cd7d7b53e36233ea09f3b220e8cf7f884b74ed3f5651c610c8fcd09d62af135e573a4ec4d2d8eaddb8b3c7f2878b796f424ec18fe1e92738bf7a7963156bdefb1d445fafe14985ebd3fb5e457c1785215ab903e8416ef6ced848e54792eeec410141e36c0cb9c92d1762deb62eafe1aca8615b43826446026105b03bc0e944a5b44e9adae3cdfe4cae7b65ee359688e95af2793c76dd56706fda45dadaff2273d0e1a7d23d16f05b803516ea13ff228cb996f08dc168013b779ac57f28c60ff4a93ff5662927a0732e86f92117026019f04c766dc44fe413e8ffb7d89e8650998a1e09a85f6b1e213586a9c867aec9fc926fa9a7ed1e3badd9d090e5a231f80f14425ae2ce65c991f0bec1f89fbbe622d587d1fd472909fee8bff603f958ab3eed39cd126de483be73e76966366bfd24fa5a14f4a13b6db94fda31eaffe6cedea6b55c579ab6761bf7cfa41dade476241aff31329f38a9f70c0f3fb8bad399e2a6eb0e96e11070f76d456e14353efc339e2b0675ff57fe48c63fb64a1f35fdb1c5bb220917dabf3877feb1d005fd5c4c9c673e3b8ff86f466c4d675f94479c4f8f25765d151e2c6158643c6fef19cc7bc802e4bebbcca41417f16e1831a753dcf8d75013a665aef3592ec820fe0fd6a89bdc871ca5faa57ac8de39effa0d85e22e6f47188f4fe25146a7e019f0bbd64796da18c9f0acc22c857b2e9774934177a4de8cc43c50927d62ea8e5baf8d959224ee9693d33730c527f21c76583ef2bb9ffd1bec33824e7ccfbf298746c8fb41dc47d8c7a01792635606ca45d70cac236d8e68bb02bce4d88bd0b7bc9f4f7789c8ae3c801077ccec2eb56d4749228cf11b7cdcf9a86dea81537143d715c34050c20cfa7983d051a656e30ec09ffb2f2371a39fdb5f7af74406533007eb25ddbd75fc819dd39e30ccec8fa5e465ed5efeee5468e44cd36a305da9c954d21b910752c7b55a367410fe133bcd346f6f6d1ec8415d8d7021b06f37b9e96cffbd5a24ba7702de0be99dce609f7ad56d0033168655620efc731bf07e3fe0765bdff8bba438f2724bcc72be0355e87b2ef8aec59eff40ac2ce06c58fd2b89036820b69dfccfdb9d1b93fa52cabfbaa7dbc303b1bfa25c81a9b3a873729c88de314fe36f2589bb408f2d5edd358333e5bbef3a5a6c3140e757ded3127754e0acc03c4609fab7d70c03e3fa85c862a5f09ef7da572e8083f9aafd356e719a9d53973d956f9adaa5e25325e09f5230eefa1ace164c02e3b24bbe09c45b375d271b7c24eac38269af4b2afe95cdcc33fd81a88f5f8f34e0ecea8b7127afa0b7557fa79c36367874cd575a1f5633d29fb0d72a2fa2d06976161432f70a8d383f787ba869d828b3a108d2fa5e27ed6797275ff58f3591b79bd95dc6a85c7d0314492fba29229f52c6aaad14e4b66f3f581dbe6ebb614855ebe32eec8b9acab7d28f902ce8973a57167bece42ffc27b9f297d71a11ee9165bf616ea51b06647d933a0a721ff27c688352939c7f9fc50f4aa8fe375ec636241ad0f70cac711fd823eacc95323ef5a5a60af9615f6dbbe8d5f7ef01cc7f31f3cb6a8f1af497e38f0ffe59cfdaf72ed9af355435c17e4dad0ad7cdd20fe1275fae52a224c0e4fe9ce7b4fb19f7b0deb5171d1415ee543c425e75f88fb56b9adc6fd58c321ddc11cdca9316d8cf56646bde5e3f85aa58368436ced403622cfb884b31679e7b02e43e3c3d4e200f2ac3e64837e4e0a4263e875db3b29b9e8b5a23b3f20ae8eb52d4a8cb096d7079e00e817a47315a08d3224e774cbeb0e307e20cf34c1c1c7f555a970e8d4f0244d31e65aff8811d70d02332062c0e0ab0c1fd6be731b6e1f4784aa7eca3fec255bbf8ff4911ab8a3459fbd2df34fe7f5be43fcb3a6fd9a28cfb8572f62ca9fea0fa4d88f54c485ab1c5183dfb2726c4bdab60d38feba7d213019d227547a6d28f7bad56338ff946ffd1e4654899b983907b0a7664dbec0bbe903fcf35a188ee9c5f3b623e454e77396ba83d750f2b302c68bd809a3afa49ad353e340b20f2df3b102713636f798bdf38ee22c92f19591e7265bb1f612ababe2f4f05d86cc57ebbd0bd93762e39ceb451d073eef2b76c35f3a87338f2b36d98a753fcbc8a57d772daabe059cff358ebcd6c2a8f3c37a1cb62ffa342dc8392dda795278f4b5e8752675bced037fdc8ccba1ff9c5ab6c5f439f4448c3c85fb1acf2d1eb3d3b1eb2f462fdc68a65e23b9009af449f5ae357d02b94b35beaff3c08bfbebd87b1573acf1742f394fa0d44932ff22f78d3ade8a170befa5fb48556d8de4ceaacf755507a9eb062576d33fc6a1c7638b2ace88df6b27717860e7ddbbf7bd7e01dfee0561da3d957d75cf666ab27dea58166ea334f70c50733b77f1d2867dfea84eae19f3ffd826d772f0250999cfbddc4dcd3953650bcf4181c592bc496a3c88ebcfa3ced921c7cee6d94e9c652d4f901a3d963897d2ec4dc5409af2f362e2e1d779babd76cddc3e7ea6e4080c19bb875512f2cf314b5cd671af1abd83d8384f69115c12c77ed774c17bfd3a22fd1fcd276daacb31f68b56a703b6b51bcd442f46d17310eb1bf8b320aea9d7e994af23daf01ef538c53892ef7535b9d01eec397effcffca207795f1cfb519b2fc0f7e93dce340c06cf0dca35e075a8c2c7133c0b388fdafcd472e4880968c87f85267fa8bfc07d53c951cd86e26732ee43dec749af576de0911279af4feb6cf74de3e4f9dc4fce6cb4e1ff19cf9a5e6fa9d5f3c05a0d6b6721e77a336c79cf054e00d4b93eb3abd216dd565c37c3d3cab16f0b8eadab6ab369a1c656a13fb7d5032c15f08517aa1ccc8f9c331cbee77e5d87d9193c870bbc208d3684a1271ec57d6b36e4a2c6eb86ef6b7f547888a0d59c2b786fdc93388f0ba59f93cae909f3e42715ae8166c83d5dd52e183dbbb57c8a8659e57a0ff7fdb1c2ec8f86d27e5d443e4d1646ecb00197a1df8be989619d9fd4b447ebfee3f62eb759431efb3b7cbdc22e6b904fe0936ae00a65eb206be5957c1b72bb2c3036867bbbc60daad74dd57941eb3ed31deec5bb98db45f742c2e0f744f26e1a7b45ed19d219b3b3e3980c387f3e3f6bc840c634b68905780fb15f38870ed6d3ad22ff418eee8e9da7e387d4f3ec906c949e3550d71e6cc7cef81c97185b49466c1e7cd1432a576a36607f36619fe439b3e85e92cef35e3bb79be2417aae10e2e94dcf52fc987d2c7abef3794d99ef13b9ef98ff9473c97c57a84b14f3d69847ac740ef61f91b82588e5d4e6177bd07c67ae795e13fcb4eeaeca4db5cf690762a5adc4c218987196fea9727b9a73ad9ccb8ddcb55fc2327e964bd531978de73c60d0d43cd9cb51e5637d106bff67e3d6e3b4aa3de7711ed1ee6de5d0223338da1acf097dbd143e1e1dbbf609860ef2eccc5e90f1fb4d2d6e67d4615fd6e9285fc4917f48caadc95f0dba6e5236eb1f7c0f9d374fc44c1af0a01db2e89f4808fd88007b86fdf7a1bf531773a6702fe437ab6c3a78275e07d38a553b14b804253f7c9985cb26ccbb915f42fd913817eccbc5fd7702fd44e57e35394a314f8bf2ff0007a0adfd039c079ea7a9d3bb4c064d78578173c05c43b35cf40a5536d4dcfd233951b8e7eeeb35c8c155fb7d3a001dace81da59f58f59b9386a168c0be2af680f095eef904793aea1fdfb84fb0d4f77bbdbea15e0729f965b027a1e493dc4f6a3c27f5382ac85503060eb99228ee2b5af72375fbdfc8437c156704fe346202efd7365f133dde2fea5765be49d8bf8dfeb39193abd5d430dd81baa17b480a9fbe0d7bc544a9919c181820bd7e5295211de710871ef4321f3bd7033b6f94fe735217c9fd8763953dcb3946bf48cb7e073840d16ec9c74efb90767cc0984f9ced892c986d4368bacbca15d369e017405f21a61fd431e0fae87631beefe0f987c0fa297359c553efd5a8dc399732abd74e9c39c6e71770fe52cc15dd3f93eef918b535b23f70cc764b893bc85a581c4f856b2a4948d4f914dfb3cf39563a9071d0af60413ef7f5798f6be4d131f2ea349bd2de252da8c5fc0aa33ea5eadf69f72ef7f29111e435be948f5462734b23e78f31c0d0d2e33c75fc75adef22cff5db97d4b976efea53d0cfd8838fe3e2953537656caed527c91e453c17b9e4e7218f7dd7e28486befb948beb0b785bb04b11ff9b1f98fe752d58f39d89cb041d835c9ce315f39907191beb8e9d47589751f16aa5c67b4c07cfd719ef3fc3fdbe262e6936ce2d93d5660e275e17728f4f9af33e8b390c9cbc2491b767e7982b7a6b0037a3cafd2c7822bfc2373dbf56fcd0f6cfa40573011c8f3f37f5cff467567c90fc5a87f95df5fb7e8d77fa11676ed5d723afd52cfcc5df537049ffdcf44f89d5bbdce56706bd1a1cc86efb7fc5eb2b38c81ef2facedbee4570fc553c95ed4bc27d78f5ec4e9ddef12dcccec946c3205f128b9eb2d197fa508b6b3fc7868ce08ce6d7eb3810a52ffb71157669e0fcd8a7a3f9e90d6cf6f9e94dc574efdab5f7c846ee210ebbbbc4090671e8fd8e3b419915cb7d75df0b7bd743b2f36f538efb4a8bde71099fcd0dec24d6282e47f3aff425fc97efafebecd59dd808e70f9a23bf62bfa5e9e8aa265ff6af024ed1c03f4f46fdd674b73e8ee1ffdb867e8572deaf5968335dd15a85de4b16b916fc1eef5926d6750ee31e749f1ae6ef04fd11e518e11aac73b5abe7a2ddda55f7492b2d689e14d991043e250b03072fbfeb9f57808562365340977c1de59ee21c1df2b7854b89454f4bc7d631bacafcc445b05b85dd791cf9fbaaff948e3d6732b51c21664091af395fefafc8067b87f93764835fff2ff6863a7e365762fccabc35f0522d491870d9f2a99ceff6f12270acca1820efcac6a0ff565d73b8875cf73b35be5751e32bc6f969fe72d46fc97719f97a9def3f907ddef35cedf9764ead00654279b6f2eec8d511f4f3cc59efb5386e5db6df5791fb9e38c152caf117e43b85f1badde9a05ffe17e55bb9975dc6655e822cedb6c7f1688c3c019c3b6a39dcae279be7b25e5b83fd08b97c0bd9d5dfe756d7a9c1c8157256ae82fe97652ca57c2db5fb74bb5febafc89ff53996fba28f4dc3712b73763d2445b04ccafcc2e5fe22c752cf3f28bff38e49c7a30fd74d95c1c1e3332fb668195b57aac830931d369e92e9e32a3ffc6fd7bb8b7b66eb2dd241374f77ee396b7bfb38ead305b32beab577a7386c53b5170bd63e3cefc10e19f47ffc35107f43bf56e19fec2a7b84d95bfd7332a2bbc47a92fc8f6ec72f57a17d22d6954e43378fad8f7738ab16689f89efe685fdbeb2bc76ba23b4ea3b975532ba68b748b8dcfdac9d41b29e7a27e6771a55f7756f7b39ef813c139677c6e79549c7bbb1df28e7c79284caf59677480bef08e377f8df2237bba04952d81f04ed849e69e321df79ff4f9143e29f55f58b777a3faa36118f9362ecd6f6cfaf1df7c0744b60d1d66a087d33981ddc7975ec0df42d80be24d9afac084ae69fcbef3bfd3cb698bd6b601c357ca3993bec1ed256f74c9ca5812d1bf377c0effecbe3bd9bd34b658cd9df19ba9b63d1bcfd2a24adc0e9fd4a0bcaf46db48afcfd1cfa93c1736771e862dcd9cacf590b78fb8f71b495e34a1dfb9df90f4d39c1e6f5f4e5bbd4e3708a1ed062eeffa9b508e4b31b9ef5b5795cca39a8adebe77380b10b52f53e9b271d1775cea77381cf0846398fa92cf51e72bcb633e53de3a6c845b4483a1c9fb9c1be725f93f3867a5ce0f516fdc4817f4ae7959073a8ae8bbb99ee52ad1e372ec6a72f614e05d6dbea420f8f37b66e65ffb68a0ec0e9905a8189ffabfaeb2eee8d59af63980efac09351e554641d744942fb96584f66cdb1fa8cbc892b146d85de250e3de01efbb58075a8f6c968acc89b516f24d7a6d987aa710aaabe13b767564ed08ae1fd339ad9ee39e3d84cfdb9aa4dbabe0a5eaa37ad6729bbe7b6faeed5fc0ee23b5083adf6451d0ffa7bf11b9393869dd970ae77988de8812e4bc2de19eb248d1ed04e4e3307faef35e46390132711fe64d35a2befce7d3c83bf01b0b74fd87fb3c77ce5d39bd6eb99f72310dfd5f3d160ef706e62e01e9c8c3c66bbdcde16f51a2dd0bb3b1c13813e6e6c9db4ebc45c002f0fcaebfd3aeb46cecd812dee51cfd56c2046e72661f68ad7e4d0ef4dd5615adcafb1be00e6fd4c8a5870152ddf463c8ebbe8eafa66cbeb011b7a63022fb4d32bc8a6fba47dbe909f771f7388f461ddde148cca78d087f57a7b1d3ec8fff68e64981d13cbcd93a17d4c9d3cafe77aabbd3b6eeae5d8700fac7591b6ff2e717a9b38bcf693517f1fdf911b625dcf71611fe7e1f5b272c00e3a278e3fd27ebb78fe5bd1258defa53c17cea845d8ce89b50459e7e7c4a9ea35d495bce6b067242fbee056533fc31ee81c672ad658f0a61fc723b687991d50f1bd7f6f1ebf39170ff08f0f7585f21cb697619f0eda4dfb4fd9a72acff7fa03f4d5a0cdf7b559ffb3ce53ab7d4e3abacf2d6c8fd40a5a8bb0bd5bf26bd879a99fed5803ff09a7676d0f18b680693337d826a22f1a2d49e8f15e4729d4e5240ef82135db05f70cd3a5079a163dc59668e0a3ac5db3aef395605f05cd0f009b046cddebe3fb0faf795c04c725ae21707cd7b191b2461df527f6bce9f3d885ca8951ef1f01efe09db3c87d27cbdab34c4e66a6eb5e934e50c656803672f3592b6cacaa8724d68701267c8ebe17b7459e77a9d56ba7854779ad4b6d9e02ec09f7b5f9b2fd3c2dfe83f336c85a7104b8a89d8665dd499e5269e398b6ac6e77e69227aace6703763ccfb7fa87ac082abb69706f4e82a76ca8d95be63ac15c2bcfa79f3cff9276fc2e5b17b7037bf4a3b2cbd2c374d72f82c23e66e1723de1fde249480ac273d5d573f41e258ffd802ff9b84dfd3255bbff9a85c12d1b02cf919f85f611e64dc734948d7806bb57ba502b30e4b607fc7d34f045ca590f795ef19b93e997681899e27af77789e31eeffcee9638eedddfa5d67573e777ad47bfcb1ced77dfe21d52f01ae05f89beed4d73ce394721df3a7ef951d3d569d5d77baff52a5b3cff51d5997cc78f8278540e72b22387d4a29ba4e607dfa977e36718db239007471e25cdb72391e7b2f32add7934eecc3937acec775bcb05ac22cf264e46053e7c5ad01bc620743b8173eee764783d24c552d64013c969b43ea89883e9cebdc51dec09392de4ef54df81c92ee46c61fdc3aa67f8d2e995b8b79a78920cffa1de8303eaf6e2c8937e74c8fcd176a5f3b9bfadc7438c9a17392f58a3b889437fb60abbd4a83dfa87ef70dd24f6f7dea17e8e5c9a74eaa1395787189cb4156c89b584fae77128d7c4f0d7c69fc63f9ae21de63eff42bce3ee99ccbf37ce82edbf9ff7917f8ce9f7e6fdfe39fe8df997735a8fabdd8f6db5159c9cb74807f32b7f675be16b3063e1c63bd7ead5f433e53fc4c3009c90552f65358f519a63fe07ef5b5be3afbcf7673dab4d7cceff1b7ee07b7babee03dc1bbf925714f6d5cb72f7bc9d2d74aeb9d7a2b7e535730f6d15c8032a313571b6fc9fc98da187c59904efb3581fccdacf264e9daf9c318d3aac691e3e8d13cb5e9cff75f96ce451d874b771e4e7d3e2da4da91943add5c0ebb8249587ac8187eb01d6a0c6c1f0a0affb279c55cf865d57f5176be221e19cfc8a2dd5c7de78cdf8f8fbfc243aae59c95982bcb84968ef2a6e0e3516c3ecbbf515e3d1ddee6c71e17d02849d57efc1dfdc9f8200563e2eecf755d9071c57e2d88784e33311974f0be4b697bd293ed123fead26d76cccda592c6dc1badeddfcf87becf078d9a00f79e1d976be9e6c7ac277445d03f9870f5dff68f9abc7f2cfecaa47793543f7c07d798e8ded07e62bb791e7c1e000417e10e57b2f99b55b186b1a01c60dea55c9e0f97fb55ebcede32d62f6bcd64b1671e51c9737843174084d8b6b8eb14fb597af5293b0796e618d9176ff56b478ce99cc325b9dd7b76e99bfc1fcf48caf5d78f3b3b1e0da7ed5eaeef680cd1e826c6abebbfa7b959b7cfc82769e7eff40f06d693d167e95fa9c79c883a4f2023cca3b09be7b665b3ee044527ca47bef833d0b503ebeea1b553c431b121d0ed05bbbe397c9a00fbd41b0e70ce0e537c82f747dcf42e09fdf4e05f7b8e31f78ff78658cee4df15b10b3be9b9de2f07a4c11e7247806e0bb55e4fd8c974f7bf59af0d6cf26f51e3eb7d7c2fe8998702f677a81c09ee13c7351ff9c7690ff96f3cf6dd2a2d749ad80f95f6dd299ad27bc8f726ad9451cb98749f0194f0ad7afefbacec7be16fe3269f5ca55981d129a1d32271fc46aad3fef4973f7daf706cc8a119315f9aaf1a0cd756633864ccda9dd97f91f7cbe94d88f25edefdd6401b5046dc2f6b3c839f07388edfdd77ffc0c900323be44f2641450b667f55e9980d979cd4694d7b0e1de48475eeb2dbcd2c92083b14c23fcb75b6ea136cfd03db00f028b6e799e89ef8bfe0defbbde65f81d7be70ba13816dd4ea027b2f4f274f0600c21fbbe7a17bdee5c8995c1bdb4d8ddb9dab77bfeac2aff81dc5c1e4d1dbb448e1abb4ca10f40750f51bf81b1195a12a6db77ee392bdbd5bd47fd32e9f469baf3bb7a6f91a02005f4d2b6c812efadadadf29c89b9f6463f656ec789b8861a93e4670f3d31dbb386a3647ac6fad065eafeb9706938172e5f3b17fa702e3c588ffbf84d437ef8bfef5e3fb7ec0bd62c71d979517db9e04802af9516bddfecff2047babdc164ec381ef16b964d7eb1f485b74460cfc4ef746cd96d5ad8c764d46f21c70e3dc967dec7c9bdc4d133f3d976f12e68658394cba14b916f1ffa639c815f99af2dda5995ad929afd75541b443bffb55a01d01fd2a76fe8f525b884a1a77985cdf90e5781f4a5d93a5663a9db56d267699473dc2bf53e8a70ef3eecbf4e53cfcaa63df6ff46d6e7915baaf8a5ba2ce1d8564e9093d1ccf071991ebfb067948d18a8a6396a830c36ea0288f7e83df76b310ebca6d1e6050cca74a0d9b4877a4f27035fbc3c9c57e113c8750afdf4e73b4d4f5b39d499379d11fc3bf55c04dfc9ed509a96a911bbcef649c76bd5d73e7b423fdd3c13f1fa6928f003ed277696a50e09e159067726e96c1f8df14370f84ea36dc39926fdc4ddcae9dd8c3cd2fd7b369cd7c6fdd41cd6a8f1ded5f733c38660fe12cc8176b63cb487f21df4a2ee283a11f71ec697b573cdb8b71203d5f772fee81d0e4db8750d0b3368c398a661d6802b56c6267c465357f0df105db7e99fe39eda9b7187afd9a077c65df3c5efc612efe8cecffd541d17bfcef91ef86e8f0a6edff2e72e1fcbaebc6e51d941ba8da8ee5931df54f50b6bb1907b75af8fe24c59c4f1e388b92fa7bb80d723e4b789dedbf98b3ea0bcfe2ccecaa5636f217f5736daa8f2ba69d4cf890375c7f7ed5d316f01e2612026b9015c8e98a3791cfa902b6bfcddd23b274eaf6cd67552ae3f62ab774c3ae34aa7d66b0a4cdb4bbe47657f99be26d843cbb7a84ff9faedb04635c57c4da4cc7d73bd8866bfb996dbce46f29ca8c7a06a670cf71306590939d5416aca30f681717ae592dbbd4b3e37ea796bce253bcfa783eafde730776e320b5a47655d5e12eb7a4ee9b18c1697a67d22fbf6abfb186b1b7271b6aa7bb74ccb6e9e38d74b369a1dc783ec9658d70319a40d79feba3ddac039d6609fa25d9a8de8a5867de61cd130ae3b3951bde78ecdf6f66ddec95b1a3e4de5c31c411d90ba872e6cac3cde3f5e2187bed60f027f57c98dc293d916751f4a1f5dc567f499bdcabe6f11c00235ed07f4878963df5683f6455cdb74fe2b3ef1308ebcfdabd29fe093fb0a3efada9e5770becabbd46b6c94399a9208f42df61c2d7a8764b3deb95c2694dffc2611f5904fbae2e64e99ac0d31debab0028c55b17dbb83b9c5fcc2f2830a3cb0797d1d73f741df966d90851a5f07ae351bab94e9a671683c35eaf31cda3279ca9ae3d0fc77101f90b2cd9e7b2251ba86fdf5e20e0d2e15b6b71ae7d5f8ecc16f96f2fa269e6bb59e09e3eede0b6002210f2be4736df635837c14d3336f4cdf46fe9914bc4700d8291e4d77a2d764ff9659949d49ebc9c8efa60dbc056c9e5ccb3f67239f9241fa879153c8211edef298debd9108b1013ec86c9ecc1697f52c681deef6b3a02a17927d238be71dc8bb136cdddb41c302abba01fb3955fb68a2ec29b656991394c9666be63fd4b11ee53887c266879c4b6d6f7e67eca9d53baec2f9ee27d57ef368edf661fbc1fc34f3c870fe4c75bfe5876cf05cb89be71ce2ae85bdc5584d8d0feef37a46fd2cdd10b045f5da4bc31f57eed966e71bd6e88dbc6466b7f07c681faf915e3ba0c89d7ee6d7386d238f8e079988696b735bcd3bd8077f34fcee1d7ac8e339def4fd47165e5babd0a56f05701f1bf25dcb819790031f1cd7b3f2f9079e7d5a1e1cfa2a79835adf0e1dd31b31ff1cf28fef73a899afe66c158839fbc0e798ffa6c6bfebf2a3e3df358ebf6e7d6f77bc565ad80762e52d6dcf55df5362614ca2f17b2bcfdfa0678cf7dbdcb36ade34b2e4fcfdb55a3cff1ebf0ca18edfa8d386efd875b5fce5dd9a6cff16b67b8708f2d6f8379fb76fcc4b8d1fd9b063e15ca8f4c78beebb29fe81ea03297e2f8f032e72d0f51517469f26238f3efe8dd2df5f8be1413f349887b103760a4ddb46ee4695b9ffdc99a18e51d7c3f647761f27d018a3fa04978131abe45efdd737edcb55e48de388de32e61fca3e24757f63e5d8ddb4e3e7b175dc997dbaf47ba87616e7df35dfb131fea5e2a6793e0de372afd87f7d2de2be709f65c7cfd39d4fb83d7f4b0b0f630e2d5ef33aa87210f53e88df1b5712d2ed34e2386ce432be4d8bf681c831b1bfb7d5df237f970df1be1c1b7e54720e3ae770a1c44bac9cc6a189f7c1f576adf6810cda37c4c5016f387bef8f55e8c7cadf44f9fbf33951cfce90de16d51aab7bf67be3ec98f384f3e087dd6d38d0d6d54e0a39de16e9f85f5abf4ff74fbd06bc29d67a017eea685dd5bf380dcfd5790f0e69ab9bbf6ef2a7c902b0254ff7f2bc6c4f021716b3f7796d21e27131bf3be1cfe2f7e175e0d5b55f8fcddce7dc157b67e5d897c63ce308f8c70e6f83e7dfe341fa81d7a71fa995e7a9b3d4e3176a1f61e3be102fb6bae7a460bff9e2b879be606e5d691cb9ce8acd4f83bf97228ffd133bbbdcb22df27f05bb5e8979219e7a90ed13eb7a4c3ae96efcf263ed5aee3973d6bbf1cb7eed5ae49038575ac52dc097c3fbb5d8779786585b2e64643d299f77d310c73c0de1fa5a7c87e71d99de8c56a1cffda65accaa83df69f507b5bcae9e47a9c7bdbe10f7ab6288357c8b6affd6638d66acdac009ec62eb87e67b4e0b5143075c98e7d4a22db2ec5d488458b2c4c01528797cc8f7ccf81ed0d6c2584f55ae947e7df46de497311b8b13e482679784c196847e831dfec9383710dfda9288e98d2effac7dce221127ab7abc608c0fe5b629ce357b5fb6a783e7d27b5d1ec72fe3b6c77c3e253ecff9e5de31aef520672a7eabdd4fedffa4f64be7e722eedfbdcc6d29e3e27bf705e66b0b737dd465f662e88d8bacf5e5fc128df90259f7077d5b7bb755e43339a2c8e1c46be22defacf7ecec41ffcccca237c1010bf218d9ed2ad7cfd776375baf22ce5de9909284cbf5cfff8fbb3f6b4f54e9fec7e117f43bb81543dfeda19280e0901623d399401a8ca0ee76c457ff5cb56aa0aa288cc9defbbebecfffa0af8e0a35d7aa556bf87cd6859c378ec773fdb8ac6bb3d50af303e37425f11ac25942e6ef7009f03873b64b6adf7452d539f6f0fc5b829d94d67715ea2b3a2add826098726736c14951da2b893c76cbe210d3b3dc6379a302cecac4183e4d8ca13e61e79690cf25c4fbcd1b6790c899a2b0cd826ca7e734b1870346454bdd8f601f7036c09a8396bb9fecc60b880dbc9176e6d807aac24f916dae82ada12ff2209336819d8c3f23d89d89b7a9b131107c2cb53f8be62e3219f2febccbde0d8a1133d45fd7439de4980a318aa166b6c519d1f3943ca38ef349b4e207e682223ab3e675c8bc129991cb73f511727118344651c0e819d92741ce04b318eb1d5efa05fb6d8d555a973797ec8815bb2f703650d0c5cc63dab4edc239b8039b19ccbfbe1d93b68f257f35e11bda2c6b1b29c1333d16ef0a3c3de97925e6846d60bba798875e971d999c9d9f7b5eb2f373b199ad79f72df5e8455ab1d85e19bb9fefdf8336da2c976dcf7c7f1bb8673c56982296bf69a3cbeee534a9d70ed121929e0b78242bff89601563bb3ac1aaa51c3ff85c08a659e49bb7957fd56dab9bc76571a171a2b605ff577cce23ace965714cac0b3e9b055efdc175620c2e1343ce31cf7ed8cf0319b7e387fd3ce46cff1de9fc57ceed27f563ec955a865e643923e9046abc824731ebc4b9e371c732258fa514e302b291da8a7919f9a98c20318629e0db99a7448bce49d9c17c35f8fccf88ae82fa7c8e7bce3ef275925badb0e38a711a700e2963cd6a6c10ee7c6cf86389cccde95cc0ff2db86d25b91f811d264267b4e56d9c0af466e1b7b0ecc3dd82bbbbdfb1c5493a1c9cfda22daecd2fc4f503ea1f2bf21ac4fb885aafc77762e1b775dc73774ea58eefc0717eb5ff7e2c9c2b3ae6797d11ee60ff91ee643f00bfc2f8998d05dfe74f7acefd10f6d79d58abd82f3a607b977d7723b52ffe11dbe703e37d4b47ce79a52def61eadf9bf3f3a41a5651d0dc17e1769311ac7dccdbe4eb5a1438b7c86b8e45a2cd7274e7992e06688feddf4bb89764934a5cc7ea7d911defdd25a4d8a3a7893138beab6277f89c934a917352e9b7d08f0a1c53591c433f6d7219093a70718caa4b063621abd0817f017df6b306460a1d4f8cc3e17500876334ac62cd39447e177c1804dbea46e34a636bced98d1987dc3af4e7d90ab05ebc9b6de4e81c477a10e6b9f1014f589ff833b0dbe2587e82cf1b24c0e54cf29cf62b63f093f1a68e84df76c0c12be0a9b4c622b5e53aed631ff5bd40726f8fee83ab003eef389dbc373186123f1ac457dd585910ef53ac23df25e5deb5d5913a010bee40391326c6f0146b6ef145fcb34bdc03bb38bc0bbc3368fcfdfe498a5582df7d8c6d7c4e2a8a6b44e21fcafe26f2b03f3bee4d199614d17141af7ed31ce0c1876717fac7fb22dba3fd8e756ea1ae2de038956ef18ef4426c4700fe09b86b2efbeb15c618919f398565718a8c9c7b4e28b7247aa0eadd1d6ed7257334c08aa131a3c7a82c80cfc9e9e13b80036b5fdf44410337e112f9268ecf004c1cf40cd24de9fd95cc9791ae437ff627ea610c8249e01489e5e560173652126f9ab07915ee0b50861770e348ec66523c0afa6d99d5f35ae6c5ca4f77a98cf540e3c8ba59c59579a1f15e6303638d36e7daaddbe025d9b81aecbed66772870e9c02e90dab202a26817b6e1b67e66bf1f5133a5bd0b9344567d688c6b7a5e174dd5cafde4b3d060bb071e45f9afb95e581aff35f6c27890184717a2406f023b68acb97d7983f3bac82c176620cb6c42eba053902fc221b55eede33ad27d4aefbc4a8edd991b514e20081ef42b0cb02ae1bacddc877a97d08af4303e962e6c74aa3f172dd3d96777ccc66cbd81a3bb2aea5fc0dd26e0e5bee6b738cf1c48e09875ff5c87e47fdf660eed0f948f7213e73623f39d17bad27f2db1ca30eb4119ea1eb8bf84050391f24e7da26bcc8bdb8e7fc09033c8fe4cc5c838ee43f09e7666c157fa2c590e4e4311d19fb58c01f531ca36e02fe9778eb1d6203fc2afbd84f6d217fd9ea7fe0bc0274efec6fde17c07f54c4a5fb0cbc82069c7994b7b948b4eb3edece8f9155dc42df39448b2ef133ebe74980edebfc9d3ff653901d68fc2625bdbf276c4c487e16f61bc13324e6c6c432a3d68dc4b1a4e3bd30d89c502cb766592f441ed6793a9b589be15c4e435fc79aab03f788dfd7a2e56cb7f2af9b319449b90cbd1bd27b53a3bb5905b33c2cafc5c4c7b95071f9f3487235547e821eedbbb82e683f525bbac37d692dd3dcb6967d8e737a8d344f418635e27dbe5f97afefd3d154a80bdf5b92c2916c0c69f56519417d4348aeb17846a56cf0dce0131b40efebe7335e77582630df54537eb6def1bed457ba66ff277348e50fee9b775a05ee4d759e398b44ba1f7f43ce0a7529c7311bd7e7763da68db8977fadfefbf33812f1a9ee63fc129ebcf227e13499833d0d6c4e5a718aaa611107c3ce3bec79d0f77721c8f7d92e29fb4792d7cce43cb1c5a1ef20166ddc624b48d9390df7b77ce53f6d9b1c0dd80e8df6c19b6f7656867e5cf94f3ba6d7193f3374bf239f6df499b775a5d5e02fa48b839da6becfee6c63d7a765cbf1f3aaf6a5a557394ddb756d972778f7b16f3ee1bde92dbd0addabe9ddc75b2e8cc1996273e232926cfcd1c9c83dbcb6a71acd364b72f9a9d667b36c427446cf4cb24935a8c8597788fca823c6190ccf4937f7e2b220f8255fdaeb97b837db137fea53db1e14f5f5fecd37f1dafdba1cabef769300cb6d16732edf37f85c23a813b74b2d0f864fb671e8235d838dd962d81b2f067f91f19983cc7e6e8d63c3efab9e15e7e81c9551e8e1b3e6cbfbbfce936b3db3fe2bd7b584f1b9fcedba1e1967f4ceb7c7d9ea9751f1e038ab9e15c759aff7c2a6de0b2f19bf173a716f28e469c13af158fbffc6dadc3c323f68ef44df9d1fcebe7d7c5fb4eb15922e0675b2f5a7d26f4638a6775ccba723d8c58c1d191fbc775bf38bc8fbaa67c538213487c577e50ecd0fa17defe272da6c0e50175e2fc6dfaeeb917146ef7c7b9c611f3d38ceaa671b39667cae8a80a9926593377666d4fee7c5e0486d0e7e7d3ed6f633c008269cf4cc6e36b8a8e739a538d9fd3b78d2ff95f39f1578d3e86e21e582533f767def757d1dee3211f14547f7b19df752bc2c87bb9ebee198fdbc8824ff3f37cff59d1debb4a7b8c2797bea36899c175fc79d1eee131e6bbe3bebad70bed246cefb61b253dd4e3d0aa65b82bb73e3fa6cc6a5b98e2d6f3316b935be8c4b7f772c05bc25d1b7c1d920e1fc407751fa9de2ae20d87aeef864f2b45cee9478fcf7f687c2c7b90a063b391f4bc40557ddd9f07ce3bd82fd5a49f748f80360ff93381a2c83c65e47e5db25fb8feab51ba6437a9cae2bb4a5c12b56c8fcd87d95ff17cdb7ec5f51f953a606fe87ed48f8ff8551c795818fc5687268504c8c39d8e55a7371aa289875e29e53a87c904d79c8f2fe58ee22dff7a4f4f2d4f2586ee398f481ae2d35b6081f1f067e833c1db905f3ade0b18279c1b179decdef6199f3c6cd35d119f601c16a14c712e63064f3bb607319d0efbc97ec737f1af663a963f8c0fffb40192a9f5cc377d4e455883a124f038da96e91555f952d2db2f4aedf706634fd863303789231ae7b596c23cdab3c2bcfe34d77dfc0673772cabf84639e243c00723f6b6003bd97fd73bc6038d5c447b43fc75a6727c719d5b893620cd6d22a9e22ff4a7ecbe43cd5435a82be380b0377372967c5cabfec62abbf9daef31fb1d63f82aec6cade503b277086f3f82af60830e4bb49b9cc08ef39875ddbb8635fe25eb29bae31ff4e33ef82c669762f69e0227d79ffcee14573b169255a4b93007e17f27ba1ddfcbd1797795cf9fa1b700a51ac6a1e33c12f4e93008d6fb7888c6e6bd9d2da6cb6d3a8eb51f2e88af17f4cc7a97976e999a6cb6b8ee02312bc6c538531f365beb432ee391f18bb14c7d14bd889dd44f3ccd8f2fe8f60060a369e7352ce0a2ebf4219d382c68bf3c9e05ccff5bdfd8b396c649c6ec117ae383fe436b15cfa8771d9a1ded32a98bdc2d9adc05a8f6b0c4b792f1c30775bd2e466314cf21bc68d2765d09c80afe04761dd76ebdd52ab2857106f4062e2897e4c30aec729c4c747fb50231c19121715779e763037c6751fe1d8d5bfe47795670d60663b79a279d8bf82f12acee9c83dc78ba495dbed5fc0a027399a9877432957f0786f059d91d8f792724638f7989ce7f828083fc9a22bcc2df77e27eab977dea73956ddf6b56189f89463c3fc4dd718fa6c7b7df22ec57edac0fe1e1b26d776bcae929ef3f126af2db81764796aa59d37bedcc0dd52ae121a4f3c5e7c81ffacb116ccc3ca4f4f781dcc0ae02f5827edebad346f914fd7008e894badfe91c66e4b67519e8c868777afc69747f5d8412b9fa2c835f17f173313b787e64fa9e528c54b0159a9c2bcc6fed30b8d0b13f0ed9bf2b7a9c3cb9c112dfc08adf5d7fb2439d8967949acabcef1df1c00bf64e91d9458821cdfa30a734de6c2813c07692d4c8ce619d98cbb6be7996cad97e5a37c656c15f3fbbfc1c7eae03b6884cae17819d5715b928e81fdfcd4ce86f16540ff2231eb3cee8cf83d17a38fcfd176ec7dd5fbf738bcc33a3f80e4b6727d0bd47cf8e49d131f2fffeb8dbf3faa651c8d9bbf13eb8c73129e3baa39fb51ff8d73da7edf19cbc916add78cb695e12251ceaa90f1e5e87da2efdfa2609ea5418d25c2c75e931845a823b09e48ec282a4bbf215d16c9a4a8ec57b1ef6df03d610eb8a7e80e06e3c7f27471ae7d1a0c61af73b16e77f5dbbfa7afda0a7dd579485f9d16b2be0a6365a171a0717e5cbbf0394a6cff2a3d212afba7d4e892cf09c403264a4c5ed0b15aef31b41cf4bb80a5b418fcb18df4f22ee6b7e276bd4479ec1787f785428fd0d0ba9f1fa3d23caefc2be493a2f953e4a5923ea624beaebdac54a3fee7d6b2cefcfc29f4f8ff7cc21fc6f8ba381d19cb57ff21ace7731ab84dbce756ce30af03b1df6abc3dd496b3cade4c720b55fa3cc95354e75bb1fa04bc39711de03dd265fd98f8f8d90656b460df416b077328008f1cd983e36ab0b58d241b578d39fe83be77aac11ff60e8e916f7cef92f543fa21e3ee8e63adc0fa1bf18339371c3790683f33dc977a4e12d88bdec9e9cdb35569a2fbdb86f90ab0ccfbd7f23285f2efe665f6bb29c6457ae6eb92e7cebf9918df8ef46d2ee66cd23244dd62dbc1b157a6fbcb7df99945be7e4b03a740f7b749e0dd20b719f25e751e7f16fba14c07f37af5dc273e2e9be6f6d2d81099bf25f4dd7d8af9605af913668b267f02bad73fc09fd005fe8467b6263bef2d184ad0ee1a2f09f2fe93d2dcac02e027d1c5e760ecd873349e6eb260fde16c9dc38f7494b5610cf1ef9338ff0ced07366eef68cd8f9c3cb28a6e526df87e30cc1dc82d1eb19c591d95c9e21e8d0eeb87d087add90d7da403bbfbb033eb26dbe8d3b226d8bfddd65fd46e1a5b25f41de7ceb8e731eedb43efb48d97aa4d0ff7999b37faced7c606fb0df018d13941df09f3f2115b7d928723af2fc83722790a5d4147a939bb70deaf02ebf170c79e86b968df043ec60b93df9ced41b081d5f1cf68fffd4e0cbd4ab45905b94c22c6e3260c6690f754dfeb7e6622464607e35d54821e5089fca2e23997004e12c6b820e70af77c22f83e53796c34afb324f547be3b4f4ac053006e50d607e39239c48642b070b61cfe8aec13e7ea865c275fc0a5d6cc6e6af5c93322de08e50ea6e72de5e843fac2af6ad8e1785ab3d775ed87166c7c23eeeec7e968b59fb17f8ac458959aa79dfabb55b6a9ba6d7cff649c5a95bd7817056edec4259d9fdab1c8d59ca374bc050ea9e69dfa7fcda1f3459d7eaed0e9ddc76cd0a6da061df4066ccd70790962ee025bcbc0437a69c3d24a509f7dbd23f288346c14a86d77f96619678894cfa7b077ef547572fc575fd193699ce79d3cb10ec65f213881a15f9c1c34ced5308fd7c33cb60af437c64d033c8f6ebef29f986d7b6c6d4ed1e289d895ea3549ef8a2abb15ceb534f7481671ed62d83c348f5e8d8f04f7e6f03bb2ca07fc2a6aa71162b2600c7d9a036292672c6fb31c39e7c4f2aa74b4d97172fd60531bbeb969c8be5aef77b670f69819d20dab08f6b61b917b3ada27342fa2962122fe09c382257aec360a880d19fb9376b22c90642f7edf7861985668af115b07c6c420712bb64f70acc8f88e89ef85e25fc13be6662fc967d4a61bac27cc4badd2dd897dec8e5d8ff8f0310630f8db29b6cb7f6c09e7c5a9063f6c23d9366ceb41def1aaefcc5f1d23cf7400c95f8bcf4816b73dc7630dd80d8cab663ce27c0fc680f811ae761d132faf11d6f623927d2b5f0f9bf7c29c8ec91f9bedf32e92817b1c77dbcebd10fb661569c5c957dc8315fa016903c4143671ac982f86da7d59999463b6e1e35e59b58dbfe5aebb0bb11fa981d5c3c6bdfcb40c4d59869a0757ca03c8916cdb128ca80f246f69ee37cbf728effb29f8d819bc3f321c9b47c7beced1a1f2e5cfaf059bef485ec34cd79438319bf664292f85e92254076acd21a9751b2eee80d78f1bfab01a0b179f5fa45e1be71648e3cbe45d88e5178c0fdf967352623f818fdb8365a33a2688e4b55fd139be6b93ab12b6499ddb8e75a1624c742f316eab6ee3f4b9f17d247e2f8c0187ed1b91b524c73461dcded4ea5f1a38cff7b06aebb526e2f4d23641cc39fc0d390ed38fe317ca667ed74fcbfe1caf59f4ab0af1b312a78a5a679162cf3fe76e59c73d6713058ea05bb6c806f2acfd48b9c4cfd8af22cbab780ead96769f9312cd4fb71dfb8ff35fd77d74191fc5bd764bf1e5ad3c18b26f98ab871b9f27aa37aafbc8b89b489f36dcbcad657e553acf29bfa7b3c96228b499717c48f8e1492fdda3f3d136722afb4599c1ed99d8f2ca54c66147bfa3ba8d0e5da3c16b037fdaa922dffcf32a70c93eb0b71465abf656731f48beee7adeb7bc5cb38d0ed323ee8e97c4911b7521bf94ea377fec673b1bafbff03ece3385f7218ffcb3f7e538d9bbebaa1133cbe94b0c83531d5729c5ab72babdc1b76dde6e7357ca9036fc3fc5995272588f846b2b5d878b6c0bb63812b3c2f59db30b832e7a007b796b9bc13e8d7146b12d9ec6327032b2b65d635bcf05ea6e93a363887375804fbee66244ef6db6af8a79c0fa9ec7e3c52afd2152de03c1cc6bfab4c4fd84e3b0612e49bceba4c4b9156f5ab8637e816a43730f1b7b1ddd45051b378f6b59a6e1c440eb7f73407bc903bee5d49e18834a8e7556e6593662b861ed2dd0dd7c8cf626ae23c2752450c7c290b814a47d7d3f4618d601e087f27321f14e13bd09d61696b705c53e42fb096c318a33ee93bd6652ec2131d72211797ba4bed5e7de9b84c1d4c26bd4fa3e3d531ed8abf4dc6cf197a9e4081da7765fac7cde93f5fd880c20d84b1c77ab915691e6e46361cff2fd73e2a9a9dad7d233cabd2f3d5308cf34e71d72af1ab620247bf6ceadb54f321795eadcffafcc11f0051c7dfaef8b78fa6c6e792e16909da4df640e149c12026f4abf932a78535473fb184f8be25c2feed5afe66d79a4fe9971c9a6c5dfadbfdf0dcb6bf140fd8fac836c520d3ad81e35e84e8d659694de2d0a1c2df20936ef28ddad80cfd729d2515a440c5bd1edc5f59abdc9ebe991f108169b06f7c55d1d8ec860c2694239be1a7a9c2ddfff3ee5a2b9a3db1903215fe6d37381e2c079e44c6b39c7e49c24f5d9c0641ec609a4735f29f608c1e85859458797e5cab346add7deed03f64fe6fbd4e270a5cb346af93e007d57f87ef097fd6c93737670a4eb8aaec3f15a71ae7b4a9da39d9743c1a502786eb08ea322d96eb03f5f8b3698a31af0656f78fdb672b07cbe6eefea09d0be1a3f1ecbbc69ebb9da7e7eb33d4cf9f8643da3d1168e07bd9603830a9d2b9fc69f30ec10dec688633cc61f7616aefb1fe0cb026c33c02fcc56c194e0443c65a1e69dd2915344c6f01caf710e4aec179bc8ba16b21d49c4806cea3a77649a523f69629aaaf5deb4e7085ce8749fd1efc558fb7a2c93efd999ab30183e138ca4292e47e18fe0f41f1c779273f1595fac13ef8dfb3668765fcdf3d88a96cc8ede7607c6e3d088fb57fa285ef6dda4e7eea3b2f820be48f05728f331adc6b3346795e1c5bc56426e2bb521d0e700e342211b919e0265d88a3a5ed7c30ac6d76cca6255ee04f6595f8b683bdfaae40d6f079e042a1b859c83d2da6f6693feb41e9f9bbb9b7c37c25857f87e34cb637f9985c1340b03af130be7abdcaeda3e4e704fa8dda4a10b229900e555785d48e34bfae128f4cdd6beb7cd656daf053c09f02194d8169c483299d9bfefcf25e458e59fd765fd0fc6b8bd2d9fad6182efd2382b55fb14e30a23f96c4938365feeb7b01f5beb827c8bd1e7fb256d994738c3f15cde42bf5bd89679b32d881b11e48874d7fed43ecfe9929db83790f80c799b385a933991fd35effd6431b8620c1341ce36f9dc54f6784ea76773d1e482c4bfb37c1759e7677ea5e3af053947032ebec3e864d305d88da0ed0b12c775cf66da329670cf1b933310fb440e596c0c7e92be0bb1f9b121c6e673eb513cbf1bf6e5a6ee45eee7249f04d7e56bd77442fb6e5c32ea9bfe94074fb2fd915c0e3cafdde32158d0b2b2039d7b59272575613f1f7f3e3f4bf6e03bd8cf78ef0b7ae1ff53d9c75ac761443989f13e6563b19073fc75a53f0cf2c249fc00c37168edf757fd7e0abf9bd1257ec74d0b4e83980b25f8f78c2ee72754e29c91bcdba7f3783ddcc6567f1dfa17c6656b1bbb7360e9a04fe1382bd0a3ff2bc65e2d09df0ee4ebdf8dbda2b83c9fe7e9601d0e975be71bb6c7414d157150b3c7721bba2db9b8046fc11579faefc7041b8a9860f3a178b04e4b3c18c5ea78494ab327c6e773ef7372f5d77ad0c53ea946cc31c4ac108c4ab47f36f6f3cf66fef2f34ec044b9c7798f3117585c2ec6db15e4a4105386b1825ae33ea79fc57b9e79cc5c0ecb69d7e4eed3bbb1ef14c93ac7b8d406e69f6b7cbf50c77661accf591eafd38e6db955182464ed0e7babc0dd897339acf1dc0a1596d06c17f7bc43f402b97d9c7d12706408fe76b44fb4628dee57e34772a809379a1c2728ad593ebe8ee0417b65547a686f6a5c2cd16edccc099138826c911fe84de6fdf90ed73af3cdf238e4f43b5607bfc654f8d7c0e3ba06cc39fa2e897b068c10aa572831b155efa2b9c77292f0658cbc8b3dc2f9af224693b396718ddab007845cbb12f652ebb30fe08dacc3b5fe345d5cb289efac27dbcdb5e68a1d9c27757ed621d6cc8d6d395bdbc278345c5c21f5453bb19f42ec1f8f035ee730293193b7e2fc7b558c71f9d651a73846dd6115f70662de0d5d53e5f5a5963da83eaf67032fa8a98f71394c9e8a5864355fc1e3efe8dd7889df83350cf1c878fe78cee1158955861c4a03da78375792f519ec51a87e9a1fc9c72da0f306d69cd0675f2b529ce3e51c1a7185e43b2eaeba993f6c796524d977a8bf7ce177b7f39e734e7a3392a3fdc4adf9993e3620ff4cc7324689a3ff29567688cb3f93f21b58b5620c113ffe873f246e731b0594df61893946a16fc353dc9b67b1d5cf230b72277780731dccfed82317f88c31b6d3b0b7b2bc13e518b2adeb39f4dd2232453f2160ab7ac77db0a8f11ae614271ad7bd43e30db665b4663b98cf8ceec58921ea300d3ddbec5f26a5e0df5eaefc6e91f4dc3c0ee0ac7b014c85523fa75526ebd654161f57813b8c4bf7354677d2ed46de6f5b0923abc90f24ee771c4b6a10bb643093f9003761e0fc417700e11cadfd8c1276bc7380cf7e33c690ac39c907ab941f9fc7fab0580b21e6899e07ccc62ae30bb6e41e0a67a2907fd8f4b32aeac0cfb4e60f8a7154b5df5331969ff9538531dc7cd677da2e659cfa5f109b20e3e33fc2d543729e795f14e88d8be12d09bc3c2919ef17b641631d08c73888ba088963c6b10cdc18f33979aa67760dd96a39dbb7def093bc878142df1f3ea6efe3bc077ebdf1380568fdb4f29852f91896e9afa4cea5eb333d801f0bea37da7079ab5cee14c9ffa6fe5b1c1fb3ce1a383861e956ff8bf190fde7af1ce622c9197d13fdfd429cfa5ae807cd356dfaf50ff59a17724fd7d1c811c7b452cbb67aed09bccfb0ef08d7ab720f713cce751e9582937139c238b60d59d623713ac1f01c8f8a6dac3d1d31c6b77b6bc4927f89f75fe05123f7950b60c14eb6cd38ff269f23e8b90a9ec7e6f7e80ee477655de558e0fb649e275a8ee6781f97e96d2c8f29b62d5f62edaa475affe45483ffc8e3cec56390791aa2bbe95fb1569cc610f3b5416b4d8c7b32065b9c3b2de8eb07db48209e8bd7ff3fe59ce43948bde39f2828d266aca7c01d89eee624ff46c2ab90782cbfc53589ca91702fe19ec671a0b6d9b9eafaef70502afa0be53f50a7849f52db5b08afad2caff8dfc6868c297a9fd792d90bb6e40e8feef2aa78c956ae38d027296755c3e6f9febccba68cfb95e959faeb7a7091ece1ed36beef618d62de50e07111f029d93ec67dd675864b49f3aac5f5fe2ddece06ef20be8b7fc68729c5e15d14dc7935de0bb9cfd4dc67382f9e3fd701db674138db84b5c171323d68bbba286c5797c76c5743b05d457c4ea09c57e3ebb795ef16f7cfd217c5596a3e76963670fd6ab99d949e362f536aeff89d18baa06faf7cbd919715a3fb04e6673f44818b7180b97bace45bf8cdeeb2661f7080c83d8bdd8f5f2bf48cec5f60b600e0130dfde284f1e16abd36ec6d76f8dc84b3748ff7c597b99e3ec4f225de33b3bf57fbb68b53a2159b08e32daca30ee5b8d0617db09cc85e5424eb84d8f91e7b87ae87a61f4f35f6873faf0a8ce395af8b3192523c0b916b55fc42d78d1b075a91e2758eefc77eb7bf0f163ae06bc696d78968fe20de53f0fca4f4aaa4ec570db93872cfa945b9e6af456a799b717568e028635b3a1a9759b5f29d227a516314d7eda9f5dd4063b8c90adc2fd167c3ad4de51a073cb945ae5cdbbff0597c64b2a4998f26ec23b0ab37efe2e837c91ff4f36c8fbc4b043a16d50987eb8936cd5e9bef66498fc4616ac0590bf6053a96442fec26167a86e9c214ffb2e16391ee06202b9756d172be0ef7687fc97780a4f4f07bb57edb9e93aef0414c1ff3415cc0072160b6d6f26be53f9a93feb7e567e30e2fe86f23fbb4b2cc1b1a438a11dd82a3375ff9eafb5b621502961c5e1fd4c6d46718da94031bd59bf4dc22194db3d08fd0dd19ca40ba19eac72a705518e985a033297dba59deca45ccfac2e91fc12c4e3007e66b8d9f4ded76484680af42c481867b447620fc9d8feb21c6408add1471cf556b3b0c1ce02d92f503f2bde2aeefe649792c62d1fef12fae6d859d84b5856fc360175966b5d2f422413a27d24b9e7f66fc77afebc191fb0c1c14f8b3776ad33f42b0bb419f4f5130bb913efd07dddf5fd7836af6b654d87ceb3a953ee3fa7ede6ab708abfa5facc4a7fc5cd754e98df88e22facd557799fb3aa77c7eb4ea9fc456d2b02b816ca4b1d9cdbb494e6d13edf1027738b5c346ecbf4a8fc6d85721d87e07db70eb755223518def17e26f7f9e09be8116058e8ef1b1fa2539c3d649d9ef259a5725e238d7713b961807ad8e1579202fe05e2cf8ede5603f9ba91ce7611bf7e3d01fca07b85beffc603f3bdfae37d1fa87953f6fc62cb13c47f79c02a7a52a3e7ed83e87e6f1d336b5cbd66feec556eef43bbc1a8a38e926c745a33d0dbb378e6d6463752f06478e3d96f7e4d97e9eaa72a4b6a1f653ca83a45c0aa03b027f1492e951e0e0d844399fbb6e03896fb93e839e0d3e7ba46778558df583d624c43a9ec8778077e834f24aee72ca7f6d8e1ecdc1636534fc49f762b51ee8338cb128c3893e84f69d6d1527ba2f528dd389894f80cac71a075457dce11ecf8dfa56cec117f25584587f8a1f2bdbc0c4789fc659f386ee9ae5357f17757581a7458a1b6a9cd975cc94f72b2dbd2ab64cbdc971b2247adbe56eaccd83f69b25c5c369de3b703cdb5881d92c713028f5698a8bcdc76bb19804797cb5fc9cf4e64a1b3df9ad81c1e4f48a22a912891321ddc5bd59a7a953a64f6a5f247e7ee2132e60e33e064cd453fbe2481b39aebf4d035b80975f2bab7f4b5feefbf758999f632d1451198d146536ea51fb42efe15fa74f1363b87de7eeb0c44785ef1e04c3938e3b67cffb8bf8ec446c6e6320db8cc5ef3b34362057f5e94062e1385b268ec591f2657778ec5c21ef93caa4d63675a85f9ae7f7a9ef8c0a9d1bec4a922ec8f471a90c6a27dd457e54ba52fb26c6b0612ba0f786b1e595d1461e5f3597048fe932f153e0208a7ab5ff8c61e7a9e690ce056e2fb16d33fc2dd19e2bde99a47951fb3aa5f2a9dececebddad691f331093987d326eb07e437a15c6e9c791cb84b169526ba83b0feb0fbe7dff2cd65477697060e57881f9471e8399c7b713cf93343f26d7ec49697c7eb21f16f16656a7e23aeac656d306e044b8a15f3640cc5a5f24c6a627e7ef38c92307659ced3ad11bb0936e7b42c6e2bd02b459e04912ba3c18f49cedb42c08a699e05ec5c3e2614bfa36a8d4d39d3b1107d188d980ff69c324e43e4d6a4ed247effcfca53c5a3f067212baf1df760c4f9de2ad863f41c621cac6305ef9c147fc962d6903c84dfb81c3b8a3da8f22fd4e3ccc7f0d2ef449df6db319fb83e61dd71ef534cdfdd78c1b05c2e749d28fd6f0fd85662baaf19c6f510635c93b913631fa4792f0e15c6c9a665a8f0fd64bfe481daaaabc89f75428221abe4c9c3363f74ae137925ee51f0afd3babd3a1e77bc1e54f2febdf76c3b0f606de7c1f206e7c04656bf482a21a668170651615b66c7b6ae4518cc3ab6d53f458be165e52fc1d61a6acbff881c0a4b66076eca286c17a6321dd741d79d174f4d82296e79a7a4e75511c6dc40b2a56c60ce92b5ca61a1b27a9b38b44486c2d9d6ce0942c796fecf9f5de88ca979f3584e05e639bc0d5312b355c4db1970d0a1b30f6cd72cd6efd17d5e7392bc7b353e08d92b84838fca22918379e57b8c93a1192783face3819f8f79e701c029ca1fcf77afdbdf03cb65373f282607ccb71be60bf56ee7321be876263f31cf3c589700933dec885b1e1f9ae8f29acc5689f1ac37d4cda249e39d73ce9b9f328703e886f11f2bb001756cbf3d4181410c38af7e53ede7a05d15fb0af09addfd1ecb0f267684f9449d93fa2b56f9b87cbc4185c0331ce4e8acbc738848dd8fccf759c27099b4fe73f4b5c6d6cbe27dbbb3ce53c6e3efb7bccad97e6f92ae699a2b1c09c0a3cbf61c36fd456a7aa1e3c9792aed08cff7ec1f1dfcf9d2cec15c4bea5a3f2046caab78f663c389ae7e9e2e9f426f19ddddf1f1d886d5a613c9a268614e13349959878753ce137ca6ec70e5270917ca3fcb6b85c51cec99c9e9657411e27c470616ec94935b84e9f07444e77f304edbfad5b449a077b392ed382ee91e9f330853dc6ed1966431f0d8ba49c15f1760e9c3e4e6f9e2523efb63286eb2828ce7139cfa632e601f70ef08004b3ceb26ee3ffb39f5f247b4efdfcafc5e06a1b9d2cb6cc5b6ab2efd5b8a718731cb043973d374fc8fb930f1833cc555a0c1da6ef10b9b57cc179a942bb88cc4948396130cfa66f761657e9476cf53f56d530477d8db49f59a85dcfa176ecad8259d1c0a1047dc27b89fc2bc171b7a5b6eceaf97a3eaade35639cfb80e6e81079b34e1838a03f0865135d60e5a727f0b55a45c9efa9c962f8230a9c335e0f1e1debf3a402fc93c28177cc43527a7934da6461e9e9b1a66f08ae4689f450db9aed93727688f8f56074327637c0cf7ea481033851540edba3146c78b6959e6dcb29defdfe89da3b238cd5fdb10a1c746f93e313e8be47f2f182e3c2e4f3e109c91bac3f8b6b04adb50bf71ce41f37e3bd8a132f13f8f5c4dd01957c22a27e56f38af05c22e233661592df2706c79121ae59f6d9f5f58dba9cd921ee917388e75426e7d7a7fecb1a3b8ce3ac012e990f518fbe6b33c131729c1daa31feb74e636df3f764d8af2fc001a7013f590fecac0433ba0fbad5bcbc76938d5bd0bbf3f46d7021ba04e5cbb75681534465ff09f3cf1797c8ef97f64b7182fc11ebba4c084f2bcd07e2e3dea82f02eb9ba182fb58d63b658e839acface67b73f3d47aa9b9dcb05f5dbc6352cce3b28fc66723d599abee7e3c6f43ebbb6a1e4a881b427b74d973cf09e62fe5d613c4ec608e7cab5f45de70ff6e798765697656fe4f6cababe7bd17f9ce9f55807126eb32bdf92ac88bd8c47e232986f314fbfd1f186f1278b8211e44ec33e8d6fc7eba7dedf9fe97da137e5af6e02af3db8d4748c774cf69a56fa220da879aa20e7496193f33b97c7acf48b4eb1e38d1ace216823da68b79682dfd3c0970cc4583bf79ad5f42bf38a55cfc718b0d495e9bf03cafdb2696b9afb908a7f59add0ef395afe647acf393bd2232ddf3bce71461e0165c7c7c23df9be302fc2c47f083b4858fabdc8fab836043ac7921499fbac77dd08c6723cfe96c5d103ee5267f24b16d44beb7f1acfe33e1e6e7f927c5b82d013ba391f7cfd98ef422f2dd65dc9955916f76a2256e6f0b3fa432fee1755dffcdea7a93c602cd25e85db4cf0ddba99a97515c571fa4df23e04802bf14bea3ba6533c746b48590fc0e8cebfa1afadd82f12b5860ab38703140d2ba4ce1ec43e7b28007fa953bd95ad4df710e9ec42d00f15c24a670a903160ee454f875fd13884d1b10ac5ee7c6e9d9073e3781e5a4e3bc7a1153543116180bb7bb65e36a746fa9d5bf4c82da6e90346ca4024739c62cc67922d0ded0bf1ca31edcbbd1f92a60d870d862350fc24291db3a22fa23c32e251cb84bef148d86672403c6c6e620c76944bebea9df21fcd02ff7df89fda27ea7eceeb9671bf6cce819f88b36ab60d61993364e800f7faec0079be3b56915b7d4c88bb8443a53771f89e56ee5352de1c9d2b5bfc0637badf78091a37a71be815f6c26dbcdc17e1e903ac0fe877f5f5cb2371fe960fa310cb25d047e817935e6e35655b108c4ee43f22ff8f5fe1fd97fafcac5787fdb65532e86f6378dc55be8f53a5d67fb89296308d5366082b99747965b4484774435872bceee2bbcf352e7fdf3f353af4f97cbe7e4ce5d72762c61accd835bafe75d33b6727061b6d63a87eb50db9bcca771cd63c738e61ee1507e78bf98fd5b6a9915c7497a8b7ba0d39a71e95e62adc0dceff2589bfd82dcdb4056a032906e89747a9ce736dfc9f1f98f8e1dc463f866c58f5dd0237b068d1f6b33c4a7fe467b977c8fda747a7f6c7dfe46e34d395489eccd7e5572bc7cf603ed0df1bbcd0ffb7928c44dbd524e551e6764d1c831fa9dca7c07e0d3f0361eb5552ade79648d36e6076389d5589866bf57c74ed98a7d601ea20d877f68f6e97a6336b1864cb30af029504c4219e752b2f5f067c506dd69c8b9abe69311390cf8e75b790c52ebe7f10e7ed7a3f212f022c3c0e1e5e56fb677cd3ef18d0c8e648ceb1c44fa9b71c9821edee398d3911fdb260eef679865a85f2a5e937fa14f7f1eeb53e71fe9531befc4df9313d887c5c6bd60f2f33793afac4f6c0e199e2eed63332eb30d339ac3b5abba18dff25feb53e7913efdf987fbb48e7b6e27d63a478a2df8fa69ffd93b8a98d9866e2cddd5e9bd02e264f364533f3f7e60de9a6b93fd766f4d00876be85fcb668cdc97c60a74ed2f8c931a0bf15f1f2359263d364693c53f32466c3d29f73f8da9eeb9e7890fd8afffb64c6773cf725c1e92f15f19dfefcb7c3206f7d612e0914e02f79cfcef656963dfd4bf656cbd3c30ae4d8cf8169c4c9b8fc515fc8e59deeceb86f7cb7763eb42fc43c509f3cdcdb9f199530e1721fe14fbeea94ea7dfa8ef997ee672d920f694deb36b4c28fe2e5f3f5bdfeb593ef323b624f6ac6d6dfe8cf938ffa6cc3885be4bf971ded05a1a5b799e74f9fb39703ed69fbb8081f403d535a9063b09dbf420f175605bfa7616afbcaeccd321fee6ddf94de4e538cb5c3b7c3c08beeb108cbb7573ef37e32bc213b7262c9183e853ce5fb0ff0b3cf7624c9a52f6500efc7b7627c1ce24e12839d59dfac958c0ddce301bf58f17b54d0c62ac898f2f0a9c2aee39745db7f3ea28ed564d9b1accdf467eb73576a59a18c3edc418ae27c630af6355648cd47a0c9d9eb30dcb971de67cb2f9f5b115b89bd61c3794f502cf8d1709c9cf24e3a04525c98b3ac5bde4608f6645e4776fbc5f83c417edd3d1348b7be989d860f77199c278436c06676fe6e659b05bf376ead73a5e13df95fee13e62390fb2ac1c33fbb1c8b305f1c696304ffb77d62e154e2d7f86824db5f13dff99eb635fb14e646ca447f65cdb5e13f6888bda602838b6241c3a68ab21c62e70712aca3209e63cd6abd6fc9d352131dd3c5fd8d76c9814b39f95f9c2cf8d82c757e483b3dae441d3c6a1e288e470a5eedfd3efc47c3ce87f55f2ae419ce3ba85bb4deeebf35d3f2d3affb7c4dfb8c1fed54929c82e99cbe3ff8aac075fd8ff54c6337e196e0fcb7a12aab3319e78debe3296c9fa9245d5250bd7972c64b6c6fb6df9ffa2ac6f72c9887c8789d09744e02513fa2cf18fe1f8977047dbd6184f1cfb26f3acb5ca7c05e70d3d479a5c6d23b1ae0764ff5ba38c761d81c8bb367f1ac86390372af90539d88b2eeca5f69877a10c8c0143ee3cbcbfccc17e77d8a7c29980f74c1e0b764c219e91c446b4ca2195dce1ea51c9b9a65d9f1b0f2e17403e07d1efcb3bfc9cb4adca3d2ec6ab436ea420c3a1cda2ece6daf389cc86fd6a3a4502719b68bde95ac8b047d9fa39029ef7cb2c8fb7519e74718c9f5af698a8eeea6ebe489dd79863ee6ec0fc407f8b3ac69ae0bf96053eb7300650916c66077c5ecfce71cfd9242cff8070277279ca21eabfe0bfe539859cb57f9b093107891c8b43f067c5780db1bed877e6ef342603dd47d7fa3106dbb86ec423af5a8ef23a56868bede5c78bc40d542c96670b58dfd55c33d1feb911ec90d95bd775de3abaf1667a8ba0e378ee26329745fff5ade39ac1a28e5141b211b016005bc33e4596d90917fa3af5a3320a9c6732cf18276dd3fde5bd14bfde36ced4f39cdff3c2b3dc0d2adf5dcc97692ac404356295ba6ba17fcd5820baa6381e309abfb013cbbb89b124b0d63afc7cb1bfffb24742ccd07f9bf54d257943d76e9d0b83c75bfa1e709d9a75239993ac75da17662769c59f1fcdf2b45c6661aff8882def063a2ef0e378d218a1f5dd67e718c1f6ad6d2323bc3771bc23cee9a6b9172afb4848d6cb5c5c5b19997fdafe676e8dd0fb1fe933b7cfd614338ce6eef07377c89cdef0899e85aa7a69fe418dd92ecce11fdb482fef1ccec61d3b4b35d9cc866f45345c76fbd3b95798cb62aab0b9903e109c161c1357ef1f1ee79b7e3fd9f2dcaff83b192b843d2bf4435a23cf7cbc0cac3f8ad77de2e4111d47aeef727b1e1d3321f686c791dbd31c86d562f013adaf7a3fcf7e794b7da98e778236434c4418b8f9a474ba511921598bfba979375f2bd2d7c658736b43da638a67771c9ebfbc97dac7829b233a9648474b46d95651075db37c5dec6ff13d2ecf768d759f34708ab7c03bc0b803a7021f4329c629fe7aee8831beaaf5a796e34bd7cb979ee798b50ceff0b9fb8ab6d85f59bbd9783dac26a0572299e4cd52ffdaf9e27cdc294318b7a67c57ae034ed6763ed947f2dd67eb143160e1b867458c18e845ef65ff1c43fe95799a18c30b3d8f6b3d84c4239610f3588debb55fc63de723f2dd673e1e0edd0f597e37897bf5511d6f3b52d7557e7f1efa4f3fecd1308fd7ec378c6de45f0f6f96a9478173a3f8922c3e00dd8fca591199c327b2ae5019e4ef3eb1276c5476bf2af275059ed26017f786c49eccee7ce76454dbcbebdf415fb8a516aa6b66c6c1b0f3beecaf57a5f7c1e53f137b191e8339d345d1dcf52f2446edd4f85db0b343bed430b6aed330280ac215c3da44f0def8dfff2b63eebd69fae17d09b95ef899b5543fc6eb38c5a302b0d5f078db7c39749e56b1d63f8ae3a00bbfa9fabdb4cc53cb3b68de3fd77565d921f4bfb10688de2661a2d1386c853e6a3fef946da3fb408895c5d818683f0a18fb584718d4faa298a757443ee63152e813af91ef6d922ec1cc13facde4077b57906f9aeeaf7caf9758fd2a35306ea662ada1ef77c95abfac7cfd630539c7b076ab499943aeae8bdb83d6ca36d2b8dfb7b3de2a181668fee2927f0fcbe754cb8bc8bfc2bc231d4b8cf5ec9e617d6d9c438af7193767e26f6a0cbb7a7d0af905ebc10fc80be6bffb10eaad756a7207119e2dd83ae1d7dd0eeb75dd0bb6f3c15e81fd1ef63690f38a3146c19e077b44be37ad7c1dbe77474e1e75d222e9b95d12bbdf3ece1def1005c27eddc71be7fc6ece8ad8f2a84c823eac70fef40be8175bf63b3757ee39f5673b52c70dddc941ce9749f6abc272133082313e04d15b1b7324dcbd084f5343c6c3f7f2b86ebc13c4c8fb73c0c0b4fde2342ffb4f4bcd3bd0b82af1dec7bf1be591e59948670a313e8ed00ed1d69d29d67803f7ae9a6cd19d22aaef96d89e74e173009ad899d4970af8a69c9eef3cc7d8c6f81c6bfd2a1acd48ecb9184f99a8effa68eff1f74af99d2af24186db38de3645737b73aa0be62213b9ef2a749e63799d435ca2a3b955e827db8981e7b8857faf391ee0fbbd938bd23ad6804359897bd8010e98b8e775c4d8f96b11f2bf35f6a2bb8f7def9c06f306760bbe770aebb3893785c67b1355a1df85bb5f0b06036aebdadd3ae8fe7893727fc531e29ec338c2fabdfa7edacf32f6d9cf33c5454d340fedd73c368665529ac728986661e99538dfcfd322ff295b59c576650cafa96f1ec04f4cfb5bc298721874c2585ba1ef16ae1f95685f613f16b7a76b5ed96d5c0d3b71353cc4bdb448d67c3d504ef5bea8db866439e629898aa4340fb6d53987ebfaf795656ad162b88e7cef84eed2a05396dec636f23c2dfbfb6834cda2f29a27607f4ef602161add93c23c3cc17e59f9fa2cdc5ccf69d7ec86fed522f535c63559eb90d7b80cbc3cb68acefbb2bb56f59dcc233f5e0dfb5288ce800d198346fc7157b033c1deb5bc3c41e75fa7753ddead73ca739455187b99608f9deb7d95ed6dab9bbfa3315e0cf3a4579cc26ad89b6ced536a3c311ce4b1b139d8d6b1888201920f79a81db2580b713e1fe1f344ba816de1755afb569d22d4cc6ea22db37031ac622ded72f534deabf3406787c81775188e4b8d8e117bdf25386849cfc57349f0bc716e9d57454bc0e9e5c70ef27ae03db0a7e9bfdc170f7385715c8c8de78a99f9f6e23d7b66df78ebe68de7253bda8d8b17d25bb01d7e50dd169df9f89e22e9f164cfad82a880fb0cf60310fd737f8eb5363c5ef199575297683bc53a32aa1bfd2db5adc067a3bb4f4b0fe9cc423ed2fbf30edfddb619bb77bdbfd1ef8a1a8b8ee9951170ded5f838d0ae1fe4ff436daf344faf6b41963ebd026eccd3e99dcf73186dc8dd4dd7e57c2ba18f23a7480b5c37d24793d2d3bcb228d2def09cd03c71dc5f8de9b52fc5cdb58a32023d08ce303f21364581136174fd89fa35d9f2f3409fd7f1dcb267a0ad4f542780766c07273286e01b4fd9e78d5c16eeff1bc5b95866a9669e52ca1365f57bf608641960d1d1f32e04dd75788ecbab6e8f52e0784badbcb047d13e0ad24bdc733ab655dcd03e057ba5d5cde3b2b8a43ef0bd6d6ccbeb84d56087e434d22b57c17c9b54843bae4475cc8ac828443ca9a02e7b11cc5e567e54629dee65d7a6af62dd2dc7b6cc6088b11fcafe06c9640923516da7afa8eda7294bf9fb205f16bfafe85d917f96ea06588e9997c4426388ef84f608cb594e26f17b05df578d5d5f69f3b6384e508fae89879fd55b9fad394a6f64ad6fa380e471faee6aa9f52b34a7ae7f65f7085c07e753b4ba6bac3fd9820feb1dfd5b5cb2b4ba64ab26dfc8dfc08cfdc23b682f1ae92602de769d7cd7457adc56c19dd51a5b31fd58762706607f1fec67bb3b5b5c1aebcac3388d9730403ac7ac25571f624f16680d8d47d9c106acbee460f37c307c7c90763d8725e58d80f8c7e2ad37447a4f9dffa1cdce0dec1489c38c9ddd26c6ca436b3616635fb0eeb06ecc13acf3893124e70899cf67394736cbefe81fb057c77c4e3bc448c9b6d33aaffd2b3e302e1f57b66993fadc9bdfb34f6fcbfe72b1ecbfce37576f59f40d6f1959aee7fc764d67e8763b323f01dbdf12a63377ae0cfe12eff0cd7c3a2a97c7eb21d6e5387b1f1e6381eba83eabf1f926bd27e0ff521b8b6c97fd4be5abc3f39465822facc3f9d994efa871e2b14c01ffb72867784c67cb63f6b7862e22605f2799ca3fc7df3bb13fca663e9e06c7bfc0c524620c933d89ee32c7f1f30bceb7847fecefbd827b0ceb91345e41b0e948f8d92db26f4afe11d9d7cc8bbb7b671dec48990afb2059f778afb6e2e393fb2c9633b4cfb29c6970586539beaf9b87f8e59abffb5e7587cb4ac0afa467d284ec1b81134fe2f90f35f3102d72264f220fd6fa3d6e2dde06dbda67112797d95a69bbf832c45c45195748d481dbb9ffb5598ece09c16f00b8a6fc67259f3f1f6b26de47f8f11ed927f12e924ec360d6c1f7d26583af5bc203fb3be532dc05615c0c93f71311bb92c4c7c7ddaf381c87fffe7e1371b5ebfa494c55e9ace99d220ebc0ed8e796de2122dc346363730a19f74f6ac4bd4cc2d05794c9dabacc1e88b9b8ebabab6dea381f3459eb77cf1aefc50b3dd35bb81e3b6752613ff4082f81701e67579c9b0cffd8df225ff30cf26b60ff174e11f6e63b2a6b946781302edd6e0c180b4d590a311a0d7f64d39e07b694752ef11490fdf2c2f6c60fdc4ef13c6cf1ddfc2058c5076599a2bf4cf0ada8fc965c7bfbe2fac077b5849c25cdb5c2dd6d9a673ebe03af871fef0b7c3f6be4b4a33be5c78ebf134bbf93736ddd3cebc41c62e6c3fea19a27be7f027ec176708a03722e2b72fdc7cf836cb240fd277742c04f84cfd01fa90dfaeb7ab09b1a83237707d5c78bc1b9beb776953a0c2f4b01d7e505e40bda5f2fcb8d390a5418289cbd06f4b44dffc5f53a0df956c7bef0bec9262652b2d6b18e28bdc7e67cd1b60698bc10e3fe46cc0e20cbb6532adb04a4b32e0adc253e27d17aeeeca68b5a37a8ff56e0f90a3a87286363df21e73fafbf53b90173daa3b971685dac14fc032abd8ecfdf53c91754564a73cad03a289b79764ddcbc7e371dcdf691e519c0ef4762e169cc4ca8f52b8825ed791dcc05d865633cf19d6d2bc7b7b27c016b9fc6877cc43d07e334072ef0084e0236cfc7b04c3ec1f37f045b98b47de96ce702065ab3ef040f8db5650e7c8e7cfc665dd627d8f238e704fbf0bf32f7b017de994d70a6133b148f3f87d62df3a1093ab4802b8ef7711b961cd2a171fb72d4ae23b5fbe1b5d3c5726821ac2b4126d9c64f290e51ec13fa1d7d267d394be783fa3ecd711a8c99cf7a29b6898c1d96a78075c18d2b2f033ba8bd829f8e3ccb6138dceb4f23deb861a37ecc6fcecb879f67660727b889584f1bde56befe112d86bd6831dcc4dad33625766adb2a3aaa98244e7f035f951acbdd7b4a2dca433ad32725fd2cc5ea6e87b3d0d7f7f4fc4dace284e3ff717e4fb2d677805bbdc1f21ccd53a4a5fcefb7542b2e70cf2875fe7bac876dd35de47b07d0b9fd07e206b03f9b9681cef53c2e8b63081c9792bfdc42fbd1db441ab391ed56e0d772b75130fb15179cee00fee6e8f2e69ba75530107092d158bff9ce3396dd833e878326fe5688be05db579f8fce3acca47803581fb51dc6dbb865bf7a13fc985cd96063b6e95d11e9d5b3765f76deda46c9d6fa58dd6d3e10ac0bccc20d5ec3a8bfc43e93fd5a0cf2169da274d6ca78808acaa1c877adb8e708fde3cba6eba0c57ef55f05169baa8d929fedb1ba259c3b15ee5b63ee517b9b777558f32d71541863fc9139c43a8f778b96e46e03b69ea63d8fac4b611cc4b5e948310d14fb90e9e3bcfd4e117b067889808d3d277736fbf9e7a777af363b1f6ddbeb9ada09a5f7f0ef3297ff07dbafaa31088471fa8f6da4c23a74aac10fc17ef3fcd533168fad8263979341d316de2ac2894f6284c47241fe9de2b28f656d75699cb5a85d806df189de4839a848ec6311bd70f7f67fa04e456cc326f29d6e54356c0f980bcbf2d6a99fce01436b346de4ff24957e8a357c16dcabc7f69bf18c78ddb7f9d6bf749751faf0499dbfe2f2aa832f6b89f7369667b9e47fc6791b1883b4d956ccfd81e465773dc7329e93999b067fb1b8cf3acab3a5bd3c2c83395b35e15d7a69e2a2d7b8b6cd782dd417cca968e01c163bfb55a96c370ff90a68db7eb4dc13e958085c5a0ff84a54678dd4e686dd18c91d011fbf6977cef7105b66a5856c77a56b9be0a8523fa76a6dc3ba9e180dbd14c9b922de72981f4ade49c6cb4c7d80666c117ede4ace1df4704caf9f1c24ddfb50eb8577ecac107f8af66ad222bfdc22dc7adb25e0daa96509962377ea30cc466c36992f610e55f8ad8d7da68a5f52d974917eabe5e7b4135df0993cc85b6c5ff89c14759a37777935e75df7f77cd30f03129372d72efff059aa3ef7961d6fea2e67cba0e3fcf2cdce97f682e25caab898cf735c1c3ac162d0c778fb2189ad12747221fe93e8619db8e77dac5ef09e4d585ca6be55638fe2bb188d756ede67d918c97c657dca8789c62429973ba7c7c7b376d7712f3b523eb94980ed753c67c2a4e2e3631a7694fb7caacf6abfc27dcc8a07da2be79f7ac0ab5de73e7faf8ceb3f5046f5d53254b6198a51d332e69c5da4b1162f01f6dbd76b4ed3712e2decd93afed7bf39a96d749acf9aaa6767ea67892ec9c9159c0f2af113fe5a0f2e4ddef97bf9e2525ebb644be3db36f19df33be0c201b7df3fb336e87e68d8e63c197348b6c171e3f384ca7942edc31c8f4dfc0b3c07755efe03fd54f39a08d82d77c6f7ffd09ab155d85ba29ca577a0ed9cc523f56fab80e6f9d3fb6fabacdd2bb059595c21b189505f8782270e63b8d27ce3a863d2388073a215b706c7f377e59b46ca5d74d751a55a23c3bb6b242463a3b6257fba5e731c9b85edc45f966762db1f5c9b027f421169c5a9c1c721cabb3c29a70a8ce3fb7dc13800024e383bcb882fa1b28d1dc5a19e2fc4d8fe56fe38e91e45fc2ec531f2dcf392e4e491f585797148acb0879e51eb12bbb8975ac908dfbde4b224bdadb3f2bb8567f5175cce1ce6c4d962ec9bf108e2f8977197fa321598e1db21ac6dd27782cf935da7cf830bd89ce536bcb5c5073c1e7fd27a8e35653e8941a3e50c4eb3db9261957ce1ecf852398047c1713d4e5bfa8cf736e6a0766e2f59c4620a06b03f1b6b01f6eef008b9b4780f9668aed1beb02da43f27a47df645a1cf1dc32087b5f16b31d0a62dfa9428dfc157729be2983e58e753e3dedabe723134d30b8e011cd45c4b65771faf7368f3a462ed41f3bb97cb7ee46e72f71ea288236fbb8f103e2e2e47c3fe615bce6115cc339a1b1bf9f30c627db78e4e63e9139c7bda96d7d26ad76bf27bcf9ed217c68b78cfde26d91d5dfebdbf879321fb8d7b79076288ab56bf31b607c87ee311f7dedfc4d8e0f5412e6756b00d2bb9df457bf40ee2478c6187f0fb16604391e337bf1367c2e19d72f6675236becbdec9876b6284f7645f20f35536e32094b9e3c2de54da1f6d63780c491d344fbc3d26e6a2c4f79075ae86be33ca894dcc91726df97e727cd78b1ccf0dc60a3c46dcb3b46d98070e9dd9335db4bfc858253ba85f3d3e8091f294ac697980bfb5e3745d3acfe74935048eb07b75b5d481deed4d8c215f2e6f4752f0110b360d3e66f7211f04e3e3166c68f9c7fb08e7b4e2b5cffe6e2ff3edbbb6d9bbfd2176c3b6fe34f174eef4e785d8eb3adcdfed65dee90fe74ffaccd64c732c79df72df1e4517c9e7c77c582b5fdfbeb5c5a4dcf121aace28396e9ed8928b08da00b160adcfb6fb0da1bdad36bd46ac3eda937ebf4bb82c917ca4f99d3b0177c268d861dbcb21783ed2febaeb036c5f83c2b816d14b744e3642dedefd98aa96b153e720b6cd31d2c9a4f8d49bd8bed877681e24d2c12e223fb84a0634e7f89ebd55ccabc37572f9855c5cf545c9edd7c0317e282f1be2188eab60be737af49e90f079bf14a303ce068c799c9038579c6b357ff9992dadfee1dd4fcf31c1b640e3cbe19df4c879318fb5ab1e697d72cfbb8bd747391e598ccfaac6ffbe107f9784e187b1d2794c1d8e6b97626d1fa24d26e0e708dc2384034d7d2f15c68de3c1f3b62b5f07fea13a3fb0abc042aef92d6bbcf304f888717f66c47ec2619ee3330f389f92eee18afd379f7006d7e373aaf1b57f6653055770c37e6bfddcf1fc0e18cf0cfb247c6d03dceac1e292f13c1eaa67801f96d977ea33468cbbebdf228fe303153172e89a59c09dd41c9ee351b18d353ccef779d568ae5183d7e8c0c6b2c691a9d74591f0785667864f44b128f07cf0d855f2331f71cf394581b3e038a0b751e0ca7da0bfef588ca1c5eb8002c69b7a9da9e750c9b15acb83e89cac073bc2c9c430b502ad7dcdccf0ef222619c9dd251c4e5e0a71b8d179e5cf1b3c5b91e5dd52d3036e52c847370697862f10b705f869253d42aa83ce1dc3b3cf260bbabf5b7d7c6219a82e6397cd8cc191c79fe2f560becd015ecfc0153cfd9038a24720475af7327d57be6325386693e370c894ef913dd4f029275d7717056e8eda3709a86c38d6fd2c3a4279b43fc16270ac65c9911f973ff6b3998afbd82d929ecb7e9339b9a332ba4501c6d892d7fca4a27628378fd739b11d981f710f7cb837cfca8bd4c21c9f53ce2645fa7799e271bd60fe8b7e19a13b9d200785be2adedfe0f7170fbcafeedf47f26c02172e9ae37155f75739ae8dbbf7e0fa0e673f9ee3588bca44f33a9f8def837b42759e7c24cf705ea2fff52fc43e33991ff6069777e392c1ff2df942a21d7686ea857712246bd1b80719f91f3e9f93522f9202306dbb4975ef5c6c723153dd628971d6b30472ef30a733b123603c651ed315c703f4f03b2ed8b208bff7df3933943a46133bf227930fdc73b60aaf4fd64942ad5fc5a557019f5f80e32e010fabd98fffedb9817131de300fde304f8d6127ee614ecac8ba165c6e772b87b78ac70bec042f661556c33229fb47e084b4dc43b4c0e5a7d6cf8cf01b65101fcece2fae4f81f321eb2a544f5472ea8c141c3c23f53a6db46fe4e0186c886f5f42fb285f9042afa17b43c569a3e445c2b9e30a5eb447da6639e774e49ee305c69489fc88b4d353cc8d59855df73c1e297873464a9e1d151f980ef9d3a2ccdf136ee661524eb368eba0f6706dc163965afdcb9cf853ef8f5bb34e15e7d67bdb5cb78edbfebcf29f30deb4624de1ef617c603cdab8a8bea1c31a988faa4bf440e019cce3323d9077ef62de336c81e69e57e8b04d5c51f51d4889c5fa457d96ef071debbc715fab6dad3c467443ee08d8adf7fd82c4e66f121e5ecbecd823f79c00a7acbba1f8c18df9f5fbda17e7577927ba236768fbb8f6036e79ab3c50d4f9afca8f3b72b4c135a62c532d3b1eaa8bdb5f4af9f3b5f97874fc55ba05cfdf94d0f8e16efaff7ffb724aef41645f3ea781a02f3c4bcfedfe8dbda890e5c7b81715ea7585d614592b1bca55f6f7f7123a1fa81ef546eeaf6dfac7bd75a9d0111aeb127833a4babe213be4bd85ea91e7f51f1a8316aec0c7f626e65313dba5d4173e198347e4cb37c6e0115d41b5e614b250bb9e298f38b6e349f8c4e47e312fcd2a29bdc3dfb1614a5c12c2787f6a83e2b89af9fc40e1fe31ca0dd8cf603769cc295fe6934b78e91beb94c73b1e155c79cd3dc1cbb1f7a577c2fe8de61a11ee3d641ce73daf4a81db43bfa13b5e3a627a8611064e15f9d7e7347034e008d9826cebb4ea19acbde92fce46b16e2f87e43abe103b8180f19c3f5a06b9dbb9f4794156a723e7b01cb9e11bb5033c77eef51ddd4fabd81c76e8f34b6b06b683b4c3b5f17f29c35ff03b682dcfe12ef904f34adb7777df73efc23a437b938eb5620f268187e3bfade2838c0dec73aedec678d2b2d17ee39eebc9bfdf6f27acd923b76e0ef6a830e352710e6dcd6e08b92bee3eecccbac93612cbb0669da4bcce533397cb3ad8a39cfc0f9f611f3d368ea8ec4bf6bec4e30932fd1be348e780ae319f9551978dc6913ec7d61cf7fb23f30df14f8fbd7b4d7d880deaacfc19de5b700e31f9f5a7653cc9ef97ec1bebb3fddeb6c5b6ed95ff74e1e2e2d0e71dc12ea0369bdb14c9b8972e2ae3843e8f497c1b963f33222b8f7df61d3a832af93bef105bc525d1bcb7d4f22e4b8855accb5dbe004f6a674af6bc824fa48ecf2a86ce6b35dcdbcf976cba1efcc595017ea1f10dece3875530bc45deac1305c3b755b02feab368b68f0be06765f52768ceac4dbd077ac03952c71a96a84ff91e8f6157a157b3fe7d6e83b36605fa3b2932eeeffb36b97fde4722fbff68fb972df294fdbe0b350fd551f9c625637fd7f703d0f7b93e90cf2c66451d83dac6cf35cae7716f8af601fa5ffacde9a9ef19ccbe5dad94f70b1607d2e45e319aebe997dce637e067f9f36b312c62ebba4f46b362d9738bc404bc6d29061bda0ffe83c84763e9841023be051fca6de5ebb0cec6742f1a07fa1b5b83f8efa9e0877ff786788fd5eb07c9820a63c5cdce847ff82f58eb1f83fab77aede3e76e0391371baf8b169bfca0c5ce20cc911877d5e0d36cb7cdbf9ba84f17d2373146ac2d37eb2159b7fef9976d114c4903fdde5f4f8ce130d93af93bcbf3bd649e5f9cd2e71c7fbfb864f3f27a0ed783bf265486bd80ad0bfc25ef3dc1fef554f3c8f3f9d582be0cb15632172bcb2d04fc865937062e3cc683c9f2f4c6464a797eb6e337ca53394363d799f8ee3ed1cc756c2d8f98bf6f788aab2ece4b64f621da2e9e0f8ac4a8d7bf09bc3b94fb857264fa5a3d5634767352a6455a6344ed9c9bb3712acc3524da1fb246bce7c2efe691d6e4a25370a0f0dc17946f4fe4bf803c498a57d1eda6161a0f8fcb7314f11fc212c69ce43be238f295af6fe765ff49c23e467ad882629d13feca72853957195fd65cbb024fe15ceb9f9312b0cdf832389e258ef764eb1d6263f09ffa6cf5f6b191afc3b5de1b437eebac83f17adc784afd7fe47ec4cd13cf45d2050edd8a9d59c5cabfecc2d23ead8c4df6caf5a5c19dd71b16a1e6cec2207f59f95dcc35b3f58e61e95563810bc37c2277ab3dce51d6bbb1ef14c93ae7f935f2f717e90e8edb7de171c929876f14b8738117417c87600b2a389db87611dc3e05fe35efcf67b197c23c907799bca9ef9af79fa3750a73b09d7d848cd3b3f64be21cd2d925f2679b37df7c72ade2a8c8f73c8641fe06fdf52046c389cb681f9745e75df2bda2795842fd9e8dc672e1c39adca72305eed427f328f95de536d0f1ffcb56bf9f4d2ab2bed5bc0677dbc06c2a0b190f4bec1f1debf17ad8b2ce066776ceabdb51af23b2df621fe97cddfcddc473e65517a15ecebf4cf7ef5f6c3ceadf6a7eb20fd64e25feb41ddc9b7f6e6d8e9ad8b0c29a54fccec607b5e13ea7239c395406e37caffe470ad80ef353d8738a30700bd7bf16f82ccab614afcea1fe25cbbba1732635ba9b5530cbc3f25a4c7ce049cde2f2e791e0a2d3be0bf529f8e0f833e899f2efad14b61fb2a7a4f21ee5996b79ef21ae3e6edc0856249c651bc6c5b6e5713fc646524546427d858b304077100778570173dda2f9de708e766cab7f8a471b901102afa895e780b1aee93fa2c03923ddedbdf484359572f9a698ff92f5e1ffd9cf035e9767ed6f89dd6fb53389ef3e84cd4de24e96605b49d689a4b7ef6f71cfe9101c829b74167c8e536e34e53f3e4b4519023a12e0a4626c7cfccc700d3ebdd114782bf07ca45518f071f05c7fb738c722b6cc4eb4c88ee82c7d7f7e017d1dcb934b36f19df564bbb942dc0bde8762fe175e2b3c4e2e7b57f53c190b8c7b42f7e168baabcbb964efdbd939d9ba189725987e525f76059c325cd7c17e7e41329bfc26e8d92dfd069de4698aef13202b817f7eadebfc779fc5e3c8f311f6bc2a29918cc17c0bcd7cd4164e0a83cfe361f8c070cffe25df574619e58678e2e647c2f1acf923ea673c251626778ea0b3a02d9fb66d1c397c65b45700c358fe4e17f301b05ce4b189d93c36c67dc0b812a94da2c6ec61e51ce4fdf7597d53c0e1a3f33ee0d752dbba1370a427413d0690d7bdcd0eb6d1bdd36f9aeb86b98c52eb67063988c6701d55109f53c4e53c8bade24f44ee03b6559c6c0bc75cd823f76c5b90c39ab1587b3acebd614ed61cc652194db395ff94adb6c32d9f27c7f4969a976f2d631371fdddc6567f1dfa57c2e136dba796f72bb1bcaa5e97832dc4d159c5897cd7908da29c853c458eefbd967561d9f2ce56c2f654c64eb5d525e7fb8ab925f40e289c7b37ee8e5df2dc11b63633dd33be3fe7ebd9c7fc605b5dc8d17d0f86857c077e0f5c7277333bb166efc28f50f471c09a0c01b3300a926c1e38551814149767176e8b0e6050493ecafaddc843f7e4579ccf51a4d5107f7e31aba43475bc37429e07a38e1fb636380782d81be5ba147cbc30aec496406d88a48ffac7ca32abb9d6df444bb3c3d91b6b4ed6d2eba4817322ed34d0ba1a9b472813e2d199bee8ea89b5fcc18f2bb1a361df3fe87c3a77af1eae671fae9794c532eed8dacc40f382e67423c5fdc11d9bfe765a41ce75fe2b5a67db89c1f225eaf5f011a2f6ee27db5937dcce3ac93adf433c2fe13d6dae8d7e371d0dbba9c1dd176b0ee37beb04fc64b80f1bc96620fc26d843ebf164ba5a27eeb8796a99de7273d9c53ee42ea3b13c08773dcaf355db27d9bd2ae9a5fbd49aed6cbe0f25ed97c8298cce4047730eb1661f9391738efde2162d921f7cae0e1dcbb8f47ab639ac62adbb4fb4e566bac805bb48527ab758bb6aa03794de5f90c3dc38efdcea5dfe4ee01d66fb528cf780ef36520e269f330a7d40f7eb2c56e85af53fd49fd9391e4505794738233eb30bb23c27da3fbc0fcc64eb9c9375b60d857984f277631f708d904ccf49be5646b11840b607ee0de6dfbaae437ff6c7a936ea3679d277a38eb01e27067fcf671c4b525943e04526eba348b676237f16c6c8df83ac8e0247c41a90daf17b21dce73fc26056d846ba4672c1b9edb973df29d29157917dbea46383f6a717387bcfea1bb38ff92ed2bcce9c7c373636fb09c492750b6f545ca296bad0ffb38ff9f695cb23aef71592f55eb5f2dc332a776ca545fa42be5b647b114b8aed07f4bf361ba167eabd10595e1906de217d56f64bdce39c3f83c83a885d7835f40b708e7e6e53acf75dcfeb2423afc3dd270e548f6ab159f2e51d6c23dde3fce03eaa7bab888f7c9a94fb0bce51176cc26c3dd5b28ef5f79c06ee250de65c5d177a3790f3d4697e3257de2573348c893cd1f697c897da85fd7f78cc16b5af8e8de3423fc59a5b2cb53c4f2ccf8983e1a1e9d3d2f3d85f1eeceff9b654394ab7542b3aa196d1b2459e7bbc1e99cfa565fd13fb30c4a39acc3f037100223712f5c7707f47adf760790df7688ed3937a5ff07a7857cce9faa62f901f2fd53e259826dd0bcd3d7c607c943967ff6afb465cec21b7f743cdbc458063027910473e0fe2f17e34e21a8538c64ffc96ca1c03aefd1f69e05675cce1b29e7726d766ddd4e8aa9f695b1bea78cc7fb2dd6b1293fdd0f8d378ff49807d229340fd3c2f3f797bc59cbcdf969bf25d3f386ffba9db8a638b1e581f34beea6fb7419d2b0cbe242a8b094e9153002f382767819f9d7133330e5bc8db8f7bee3945673092357066b8f964331bbe15d170d9ed4fe75e612e0bc8c7be815d9193d5e142c497641cc3ac1c77315fa233116335833fce7ac179eae057019f382d8b612bcf3b7defad98b7d5d9e4d659439c065fd65d2c178639c4da790f6705da4ff297857b4d73dcd7aa7355cdef4f71a7057e18aa636adeed75cddf39373b3a76f38ef9ea6dccb7a0731dfa4b6fb1ac6a6e981a7f66fa83dce3884f39a7e3f23c5feafedc9bfd7e7b3123d773dec68b6bbd6f95bcfc3b7c3fa077d697d635b267bc2f16c3d2febc3f6cac67bfbca5bee4dac3740d7a76265f684b7d776273d00983a11dbff4cb686376d2910db6914990166179dca746b71306832370535b579c9f4331de6e7cdca39b272ff9e14d8b4a050ed665f23c384c8dcb85e1b0d5183f747c397ef587fcef9b55107ecff7ce61b9123ef7daae73bf5d27827df7481fc8b35e9c5ae665615d7f4565344c476e45f019e4f1e263e9f295af1749417d29d8ae4fb928012f01e94f4154d039e0fd14a4bcd3fba638459607f111ce6db0e5e309c57eeb805f1895d7730a1861e96ee5bb9bc87fda4af982b52fe4b99371b6b88ff785c0692fc5a5e37726a579492cef14bdcc762bffba19df1fbf7db3bddf1c539ef379d9cd313f06bbe3f16bbd9b685e35090836a591fcb08df4146b7ae1d4bc93db89df3dbfaf55cf26c7d8efff98f8fa392e97db9aef297dacdc87f6dc8e6139a2fd84f7d586af0bdd5320866712e0f503ef68b84db2ed84e08fddd0dd93d3edebb1320fa8bfb749e09e537fb69bf82691f3183b84965bc779e13adf7cf3e25729c61836ba39b9a36c619e68df657fe81d3b5fab9cbf35b12548cc23b14b28f77441e2b1fab6e59ec31e962975cc10b5d3cf778e46cb61fec322d1aefb783b3f465671030ebd4517c6dbb6f4f324c0b10e9cde57e3ab713868c40e49ed6ca788c78136b2edb49cf3b8f9bfc212ec13a795e6e94995736b7903b199ae6f7eac0cd186b46af04a8abe565f3ba6354f94370b8361bcea723c63022792ecdf95649266ae13ad7f4803b7a8f10debfe01ce75e07692b258a36790fc06bc3abfd83815ba1b631f2c607c5a1b9e5788da9728d6e68f05e81590aff0968e9c7d5c2677f480c15128ef13991d06c34b04b144f93eb6e63bda6f6e2eb8f9c4bfbd955e118d90be837178560aaca1dae7cfeaefc43daa2b4d451c3e0e7f6f4ab1c2d56b98ea2f04f707b8d0401eae7ca79b5acb9da34199c7953fdf4e8cc136c698e8801329e99d7f407e95fd4db4a8edcaaa36d1f7244cf3afcd31d55104bc451c23c0e4a4e59cdf8dc7da4270b9bed706a28f43dd3e60ed6fb97cb5664cea33c49bfeacdf677af4f35bd77bf59e9b3249c1a7c274405f2bd27f3fee4358fb4d1d92cac3fbd88bfb60d1125bd1dc5f6defd37d4cfc722c46210fb7b3733cf23a1187d5fbd9b801eee20bd25b9d7db845ef665b5c7f771f19c901ddb7895f0ad6fc8ae7a1f8bc6c22ebf60ed21fdf91de60ce3ac05d5465c7d56270b49f5fbed3776d15ccf661591c5681ab63f999ef23cb2de27502735bb78de204727ae15acf93d110dd579f575671880043ae1dc373a5c0434ad6fa05ddbd938e778233cc9fcb1c49248eb37b49478511626e9e7ca57906d82d906edd41fb938b03e1fc42712f7fc6363c5be91be27edf85a52d703a513b067f7601bfa6e5ac27dbec0a799010f761132c170efb67b4f961e3984d7d0a797e100b5201afe6b3c3fca9743c146d27ed72f81c2cb9fdf2330ff701c7a62438069fe3037d7f23bf95386e9e9dc1f4fca8e511cd61fb5869c4868771f56ea9651e93971cad955de8eb5b32a782cf31f4677fa21eb62501ae5e30eb847ef7b2b0ccdb5ccbf3b84c8bc8c88bd85a36b86b82de80c6e8a273e914f486d52a88f2d492b93c6794e3f87762e8e7d8728db67a09a73c7aaeb56df5fea2b6a4419e68e6316a191bc030c13acd240a94be497cef591e8bf745a3af6cee22a423dd86e9a4e85f92b2d0903c9e94c0f384ca6df821b1de9916e9cb350f4befb0d03cbd8133ab799d37cb5c47fe1595b14375a8fda3de01f306e8bf9391b34f4bb3132df443e83b05c57547e5df59c76f046b680aefbca0be4afe0ed45673764e03e7235ad66d1ea3baf9f8cfda86a79afb53a2f5bb49392b48bfeab1bd333f9e6556d258a8e66919060efa9febc317e76bebe64959cf09b72e5ae68ffa29f09d408d135cdf0f646e201c8745e3c8bc0d1d9395d5efc5eb0bf03fa1339de31d558d7355fb4b88bd43e6e5595c900c64fca01383e89b0b651df7fa8ac756ce27167e933989960790ab34f6ca27f363028efc69620cd17d17b5fd17c5e357ae71c641c4e2a296a053b4f595c43c45742eb5fc9c6a4fe88c3f22fd1de9775fecbbb847d463203df37f7e2c68ace7565977db9e04bf98b857946b5f7ae6cbed03ce43ef102d198fb0722f339e39aaff12bcfbafee37a747da8b744145dd77e427db7bf3b2ffa492e3ac6d2f480f6ac8a50238325af9f43f3b679c73342a0c121bfbe959d3d646321e50b77cd6c0f8b5e5da3c7a16bde0f7934a873d887350bc633272f57969b7b75b3a77dadabf14cf96ff453fe8fec1fc9f54fffd78f82c436d7ce02cfb37d60c1b4bf4fe8d9d7d9897ac888361e77de9ac5bd6fc3ee9e0f7bdb2b8add09d60697696754e0ddf9f7bcfeec8be54ca43b5ec53ca8a3b6b9ec9c845dc7371bc6a817ddd77f7a9e99c5312f38af9eee677f42f548f737e7f213ec875de9009444f6a932179646119fee6a3f5519ce4b685bebbf1902c7be9a279dac7ebfc92945eb90a8063869e2f0d3d3c193905c688748aa82c9e80af95fe0d5c1f9dadfdbccb9c2a518c351f9b0cb1d89dc916b05660ed25c47e3b1e0dab086c42293eeb7cdac6ee93536d4e8915f9c0cfb390ee5e50dee62be5e942791e8f77df263b9cdb72a4bc972d92eeb03326e710c6496ae4745538b655290baa449b5561e07e70b953ad77b9643b8bdfcd0e17bb3ed45f51f9dda31e3cd20fbadecb7e07c720eb984fb5a187dc7bb65d1f6eaeaf6c8b742490abdbd99cbc8b740672afc8a88d10c9b1c8a936e44cbf73d791e4f8437df9f49daff589de3f5afa7613f437d247e9cef2605fa5bbc4437dfdec9daff53525674d4b5f3bc21943fa9a8ae7d3637d55c9d80dc3b455accf7bcfdfb9b381df03c7d030dc0cb13ceeccffd63abc67c711757bee7ca8dbd27a1756da81eeeb2cdf5a5bf7da2fea14ff50fb15facce7edff5abbbfd05e9c9380ed8fa2be3be6d730b33d0d18269daa6fea3e893926589f2c6ec0ffbb68e4e37231911ed8b1494cc0cee9c11de5b8b2ccc3ca4f4f1c075d93b387c44cc59657a6061fc74562d30c1df461622f6cc68f6f9d22f40f22568410b707315242bc1b1ecfc109ecd81017d456268ff3c0953f9af556e86c34c8186d29ff1d924be84ed6d542ffba8fb4a79abf6f21c7a5b338b84edc1ba8db073ee2ee3a5cebbb465cb8e554916ffe11393f855866824bab1c539dc56289f1dfeba4f4f295c0bbd155e52cd7f7d3e796fb807f2dbc515e610e69915f4bf11bc4fe88775c54be87732e17c04754df7334af0336bf860d93c5066d62cdbba1f216be8ee7c2323bd816b77bd466ccf419c9d6f543b68dd5714d5857e6ef5faf8a3bb4f07c5317fff1996edff63e951d729d0a5954c784f9d743dc4b8107bc9e93e214dd7694bf457e761e060ed865de470ecc0feaebeb9ad8dd080e8a98eb745dc7a6fb946c6679a8e505e164247e9de66f38864bb4ffa4815390f5b24bd65cbe118c159e57c98efad9fc113b165b33c41fc3f9749e77b2ede0c0afc1860e233effdd796b3d13eaf78b1bbb6fbeedb2553023ef44fb442bd6b1e50d53821dc0e75eb17b93765db7ed4dc56f7f6b6f366deff51e15ec5a68ecc0ae26ea2f0fec2da90ee7fc2ece69631e94ef35f761db5cd33df4e3417d8b95b30a663ef6775e8bd7bbb6039ce3cbe24e487c626c396ccf49317acddf487e129501a03f8fbc2a5ae27d361ed9074e0f45e381f6cc0f950e86e6b39e0751f6bd12be215157ba08633717ed38ca3a1e968b9fde235ae69eeae0648f4aba9d425767e5ec932edd57cb1f68ef9177d85cce0397e09228659f9e14adb2aff11b967d383623f255b26fc3e260624df712e09604dbf673e85f3f922a17ec53f136ca63ab40f515f21ac0189ed703706155178255c4eb29105b91231d2f24f220d1f273ea5f37b635db45feec0f8e551bde52df3eae344fb72d771f9521e610d0bcc21eb9bb3098633c83917781737831cc3187a37ba3bfb3f22db34aade223f5af79525e75deb6c9c9a5d34a38d7f97c720977403a7b266501bae8ca778538daa4ca0b31e77c7813f7942e8c258f7f40c6add6bf2d41867ede561c4f97c7db4d1612dfb36d09ed84718a16c343181445b29d71793fe21afabc7f384e380d8027b520e59e636b9e8565823973a94f7a343be3f98c709ee27ab88e201e5987f69177d19d364b4739c41ac2bae274521e2f11788e702ce36f881bc2fde773967fcbf1420a9ffbcdeff6f782bd8acf5334fb9749d93f442f4e1e6a4792b7e32e577eb7487a6e1e0783ec713f7b9793c3dc3d0fdb184fd1b238512e5dd9a609f64b5f47fae714cfd9749794de55d85f77e23cf1b38c67e9bfb625714019832c1e1515bfce225fbfa6bed7e5d6d822f2a37d5c12dfe9c829121c07033a7833afbebecfcafb2dd6f4972830bb51e0156345ff6959b1e51cbef39ea4773cfc9ebcd71e7a8fc7c9443a0fe1f85b580adb9591c31a4a8c4b1696fd732c61cb039e1ece9b52e561937755b9d7b0f6c53cac46ac13706ede286fb9dfa17176986f14e318f7cfb1c045ddbc17d2bb7004bcc262aed467319c525c21e4e0c75aff20e26bc8777076b7bda17514f6e6dfeba78283fa5e7f590e1496a7bd95e57556147763e4dda2c510f2aca61b7ade14a7a8c2718da07b6ac529a2581b383f8ac48615c7c4ba6e3047647189fc7e699b900f57b9c620fff5d6c99c1e8fed967039b66e3ed9e267a31721c64ccc03d69e244c558827eeff5a0c71ce065ac7fe5c693b24796e721c9b8cf585f3cea02df9cdf57588938c30f6dfc97efe89f92f01dfafe6f714b012ad97531a909c558c112ef441912b2c8e9f119634c730813266665c021ee2465517baf32cfcee76a975cf71cf857be67dfc5ae71c6b97566cda15e4487b6fb1df3fa3318bcb94d56f1b2f9453b5056716e72cf36d11c710ea6ec58ce5f0407b91effc59052ece8df666c758eb77602d8a3188e23e13f14d7f2ceef5a5b14f047ea8db57de853c76695ea2afcdcb3f391fb54fa01ecffd9d716c9d0f0e7f83b527d5bcf54a2b3a77c707fcfa5f980bf9799a137fb7bd5d294f1fc94a8839853b65d8738ac8d7f99879611f7ec6874265bdc8b99aed986cc398e41f49e915f1a6ce1f41722e301c4e1eb989bd1efcc7362f6b12638d748d4d60d8d9eb7af89b96375696b7d9133eff9dea7d017791cf61c1f75ad538b470b2b5edc7ff15cea090bbd19379ebfe7fe4fd599fa24ad3378c7ea0fbe0462cbbdb43b10441a5db89e94ca01a5450573be2a7dfbf8cc84c3219acea755defb3f77e9f83f55b5d8ae4141973fca3a1bee3d8d0b3aecacb857b509e25bba7283f69add0fbe84cf1818be910eb7d6705fb6ecebeebb0efec2dfb2e62dfbdb1ef7e12bdb1a5c6261a5bb748e8074c784de0f6f6bc0673a8dda3bc7fa735f87d5657c0f46956734ccec3ed525d32d72fc10a6ab6081fa0b55dda29f4b4f3cfadf633761fe7750e72b7083c8bdc19eed3287f0b981ed5df0ed7d9e3fa9be3166957dfed643fb703e1ac1f946775eee1fb91ec09d11b63b1be7ae3f6760b2f55802ef50b3d238a7f348c89ad768bbd391b3bfb182fb2f06043fdefcfad46bf5f48f3c65aeb63c27b41e74ec1e642f7f409b586cf23e161c2dae5b949cf32cc7bd48b8ac08d4f5117debd378dce2d18832e8ab61ae1a986738d548a376260ed249149fe618ffbea94e3846e7f1f338ce312ab43f4413c036fa1976b7f433eb3bce3bb1033e8b0f16cc041abf22ab20ef09988cfbccbb106c02b3b58a7c070f4e850cbb3879ace28cff6c1da29a26d9a6f5ce75cc1df4da3fced682960e35ec3ee9c8f17107e398c924981340279252ab56b8d01d452e07a20a70331fc733b63df05799611db7a520c0efe504bc331d195173db2cfb09e423b2126c03a21772836faca87a765a6a15f03a81b7b4bc2bcaf98869599465f0d3cab6035a90d398c88bd89f3017e6da9f62dcad707d1a606393c82cfafe298aeda4b43d7892bf6b7804723edf311cf4fec8bde809df4629cc67395ed51c6b71bd7151ac4b6c07acaa6f509dfff1f59e767e3fd67eb7da41fd0fb3f1263a8e43ee71bf771469cc1ce29ea12fa8b92d0d07b61d751445bb68dd6a4b8f1888d53b183f9e70d1806b87f14d782631549f8d3a2bd28dff7dece771fe709da0522d619f38b5d7cf7929963bb1311f9cad70518b442ce12da71c43e31c7d1cd1cdb4a30d4d20830181fa78dba4ea679ff3a1966a55c66b432d4efa1a19fc27d7fbb01ecd914d722e4145671a0f97a85674afcfdb6b831da3e62cd00c58e17f0da187efc80fa12c1b693f234812fb9bd2cc23d0ebd069ccd528fe99ce2f1228bb689509fa588b63af250baaf6ba08b1fe4bd332abf245a869e2caa051868bc4e7899329952f86e4f917043aa7909e47c192d8d822b959d52ffe5861e2bacaf3ed9273aaf850158ddad78873c67220ff73d568753f93df8c22a7d26e8dc745c83ab06d715c83cf07d30993d8ff2be12762ef4dd4e8c7abee8374a6ab90e159c1d894ec41eea80e3e066e8bb18425faa2226ef33c8bef48ad87d23b6f6292a34ae334f87da332cb434f616b74075986f96d823599435e087cae77d8dba8b343acc136beb27a62befc1f46075c20a065fedf707a796d739a961f1311f04f60d95b169eb183952bf8e060c5f7a77e53329d87e0d726bab55bf237b279f8b515d2bed69fae5b590bd49aa587bb26f46caa7501a7b7b73bf72c7861eccbf96da8b3b45d6d897faf8379ce72daaf93293a6fb41ee8488752df16c814639ee6c54c0dec2efa6b90e767c6cd4737bf0beebd70ddaa8543eb0e781c7d7f276d04700bf69c227146b907f73de00bddaef89eff64e92cf5cefd77902cf932163d8a147eb5bc3eee058c53b14fbbbc8b93003c11613e65d9e5fd3dd3face14c2479f7a59e34f45cb2d0cd9409b72b16400356ad1f8d286f5aee93ccffb10740f5cee7d01fbf08bbfbd7f7a57caedd1ff897f75b985bf5feee6ab57b359aaee06c497501826c6d908110abaead0373e83e9629b3e7dac663df57e5fb77a9863593f2f9e04c21e713ef555fde6b7d1f8c1c35707bca02ec8805b11bc5b9a581b1d0e3dcb9c6a3e014b88f7d54f0799e4dc351e33adfcae2c3fccaf5a87785f38e9f0dcf51fda4b6074dcfb2fcdab677fe1673e40dabe3e798bf22d5021c9cad9f3fb2067e5bf2d4b1d591627e6329f7fc8ef949f36f129d8c19be76cb39d66a1eecde84d1fab0a5e75349b368dbe7f3aa5c3dcbe7c971552e1b6f416c4b798ef5ef1bee505d870cb88e27e47d50ba9a18ec5dd62fe0d7546e5579dd2bdd44accfe663ede4730b043df313bda779eebbd6f3bc8595b142f5ed1878016065d6b181999c11f7b0770bb729a1d1b369d8db7fbbf650ed6595fb770bf3f5dfcf45fecdd779a4747ffa575f5d57e8073efbffce7cc656067dd7d60ff02d85b95354f6aa08dcce2dce9d19b75fc43369a17391aea687fa1813e071f7c4afe139bfd4c1ce92dd8ff3d242e331136cab0aff6063ebe770548e1f15757a17e535dcc1e1fe1ae50ee0eacfddc7796564cf98d82d9ef5fc2b1d583a7f7286151e879fb1b3247c300d1bf4a8a6f9c13e0fe97900afd42f72afbb4fe656d6f908b937344eb09c139a033936771f27c00151fad74945979848fc742edaa0e8771f5b59643c525f5d27b19a299ba1768b3d3389bb16e0800443c1a7ba15f429ec1dc8ecd73ee2f131dfa979c0fe346823429fae617c8dddc7d9423d97fafd205671f073fd192c6b3e18c03503fd5d85b32d02772efa67a10f04b1e736de3c090ed62d847ec676c5f762a591ea0878912cd75ff0c96e1369eed36139a74a8fc9ad60cb0fc958a5afdc946cfacaef96a2dd21fca66693547b5a0ae3b5db2e751da8b25e819ef5d2075ed507e664cd8e80550a987a8f5ee947d28ba0cb729f24f9ddb63ec0bc0ac7fb23de8f7be27bd62166b95a827e2ada4568b7e1fa88def36a8f9bfc1bd108e96ee3be257e46ef4143fe53a40729d6e55bccf770a77e89dab3819792f53d976e6f093e47fa5eb7abfd24b4ec2d07e9afa50634de64e389bf7fa1c357fdea389fe52b7ba4368fbe39d65cdfbdd3fbbd483760d777eee150cba3bc7f310db8134db681640b8afb1835efe39dee1b7d96fa63d9de74fa7c3f5be7c2ee37f4f65934cd89ddb9ab4ffb2e2eb8de027d106fd11ef2298f0d78e515bb82f99f84b9223d8521f547415df66b1f45c6fa1388f73830fa19f4efeace717d0ce3c320f796ddc537885fa0ef1b30d1a09f011907fa168c457f44746ab3e51a78ba8c432c61c271da7a06dec2f6bdc1b18c0177d2e8fd58896bf11cdd3f819711db2894624b4e29e769fdd137886fe9429e2ecd05abd54a0be34cc6ac0f877c4eb2bdd049a361cae92d74f5fbcfad1cf32bf39b2fd98737fb66ea1785f66f0019e339afe715a98eb2a2f1b6ca9cce3c8ec77b86d0bfd7f47b8976e7f5358cedb6355c4275d1817ea49fcc7f3ae4cfb2be14ec6f7adf1fa5bded3e3ac4f69362015f38977fb9febf39b3ffde7a1bce93f61c17e479b5865492f57cdee0135ef60e5389a6de8e729cf89e585d5b0d8ae854e675a46994c71d9aabccfde5540f2ada6bfec57900cedaf9639982cc980e35f19dbcee1f7323d6d7a07893eee964180b7c05b0e89e711e1da643edbb397cbb4eb75a7f827b25ea6bafe65d8d3d95f56895bbcbf502cc256ad50b7e2f11d3749a47d533a8e95b5137382086226060ad36864e78e059ea0151649cef7d714d0d3d73a41a551b696bcdf514ec77d3a6a708b184afd3cd193169597f8d35ac97f7ac276b1c9f93e9f6ed4af47c61ffbfbac64e6d8dc31a0fc27bbbfc0acd957edaa6be7ed44e2aa2bc5f4c86b1c5f2f7e5f3d5525fb5b3a83b4ba26e768d0dfdcdaad93d988f85f4ad9f43a3df8d0a2d853ee539d11120e67005bbc4f891f8aebd0b3cfb59c9a520cf2981675d7df771fe70684c665f8f8f4ff32a7f10fede61fefec6ededc2b1b3277686241331ffe214e6b6fe01fef9369d03ea1fcb3eeaf46f69ecc3ac35df07309944de519599ec7d07c68f21578ff14d96ff770fcb1c2dec0fc673ed7fdccc614aecaa3c76ef34df22bb6ebcf949c8cfc5da4fcf3e06ae538bd9508cb3e7c670b258f01363dc6844f57ced141ea017c40ef37a11a72352d32cf0e6a766fe083e3669ecb2377425df367f64611e63ce17f620907a34e0388b1cce591ebbc17ee8e15a8ce03acd3388d98539f4f82f1a733087f59e4256571ae380796394a60ece331e6acfd8e817d8bf704dcef51cb8b602b17542db39d6e844aab3378d474a6c5d388fec712dd7d2a379df8b5b43bf79e13b39d767b3e4b9f465cfbce2ccf2aa8e1b8fe3458b74c7e6f78df00fc4cbed979892a0a7123d78710a5086c765adc35bdda7813907bb0d60b5633ef8cbfd195bb7c8708a78bcff9bfdd9117e53cb01a7f950d55a79a1ff5d95a62eb5dee36386cb9ac25d93f216ca3dbcf2791b591615bd7becd9c789e4ab06bde91bd3af241b93ea6e384fa7a6eb57fc2ed5dc8a8679b11ee310f7c45c3cf93bc81d04fb0c6389551c70f2db536b0ec196e5101c935f43e95d62fec03f2df9037f2826a3f03b3bdc6475bb9be88f4eae035e1cf9b7ab5eb28f5a7e01ecc9c5f7c0ee4d7eb5f6adc39ced8ddbabc43ae4b863e97f18501c70c41426730d3c4bd9b8ce93ce03ec45d613413affce65ef7bf67196dbc4d63c4f88bebbcce226df00fc6e38e833ff414d9e63aef329e4f8b9a57fb056d3a5f2bc0c98ef3487bf1b6abf82341c3b19db57b2c7b51c19c41596d63d3d689d484d8e957da5b99eda6fbc6f8f6acc1aed44bdaf4a384c151cf8dfcea3b93f268d21a0ae601f7d37bb12de2cf0fd9287535c65ec232ff106fafb187ccc905b648cc81869c87a122cb51bbd03cc9f88bda4c7ce25f4f60ccb1ec7d2abb2a37c6fd9a344e6457eb7d27f735cce15fb41523c2bc3e6588ad5380fc390778c3ea54b8ad74f7b70b2ba47c4709e27fe52dbc76ee7f2b1a46b6472dd60bc43037dcd841cca3b5de33a09693e52039f65f8d0ebb053ce5f92910c978beb41ed3579d46fde5e9327f4536179ab9c365715ec3241aefe5a0af51987528635f140cc812feb09a47bfcacf4ad588a725892bb4c9705db48949b2dfeb57f38defb76f083cad4520ec1e7cd759b8c5fb0dfb8ea29967201293ff2bbf673827ceccaf382e1b71c3fa532672ed77b9fdf493c6331471e693ac822b487c81944e66e769dadf6d79973df8a3a9adfcd94b06bef7c9aff26c5ab85ef843e8d92dd4ee47298ff10fac468cfc870761b373805eefc4c6bd3f6811ba4b1fb5004db9de7e27c520b263e57e62052fb8fe50212fd99e98cecae70be6e3cd28ddb637255ec23d9587f8375ea60bb88cfcae3025e4884b258f03fb1d86950f18fe1ba85dcae529711724e653929605a36f92b449bb7ddf6774a1d8fdacabb0f6f718b549bd8c050f33681b5eb9d8d676593612c7e7f09f2fe0db1c4ac34da0e4e6c6f45da981ec819d77461a93e8ae64b1501ea86b437570ffdd65db0a3ae91fa38f9eafaeaabfa39946ded3360f0339e9ac74fac7bd452a26b42af722f55d8ddf03deb1015bd4e78b08f1b3750081f8f8dfed357f57b79d7c4cf20df30df7816d181d3086ac5e577627d5993bf6556ebcfcc63b2bc4fb73856afeb7b16c8cda8de9b14eae21a6a0d85dfd067685f51397648f472ab671a5667e33ef6e6d8ee412c97d9e3f23cd4c0b39eacb70bc43b041b3cf0d27bd8b53373ac75fcfc71f20b9a6f3c4c2f61d756c2f1bea9a6e2d430ceb36ac74ab49349365ba9e7d1e729afba30ff10cecb52a8ac28c70119649ecded8f7f3ca3c7f4878befd9cf8d1b13fdece817fb64ad66d08fd1d4c9fd4e3b51e7719d1b84eec81ad6c96a9dad3de3ed1fecbbf776c09c6bb8abbb186a5fdf6e936d537f20da838cdc05777e21f41e1503784f899fd6ef8659c9dbd7ddece2e7fd33ac65c4f400e8bdf12b567b73a6ef7d38762f74ad5b0818c1b43ec7d09fab6e7c5d0b369a683bc83e97348d1479ec9f6c5e286bac4871aeb1dbc922a8ed5bb7bfeb50be63e9d97a78702e8167419d58437d8c122adc36527d97d63b660f057920c6fd4a3b01306c556a3bf4cdb158778cbcd11b2fa278bc384679bf4b7d15e09f5e78561176cda3c5c7eba551d73e052ad691957526d0933a0b865a77e32d8eac7735f800843a3d8bf6538da94de28d17fc7eb31c719c7f4bcff5b17d0cbbce39d09d67b0ee11b9a006cb84af3f1e5b3df66f6fbcc03cc5756dee27e199282ef941d97708bfeb53beac78e339e191a3c05b80feec1f9c43d0dd4bb67ce0f6085f2d105be62d09bbd63e809aafb724541ff06f6797943ce130bb56de7f8cc78b7bf43cdea6aad509bab3abafa6d0433d76956bd8b50ed3eee016ef92dbc6b39f31b157d445063de2defba7e05d5166abd11becaffe50686fc12ceace1fa20e4e7bb01c7cd7da617de2177a73b984263add08fbd015514933f07ef7e9d09e66b48795b0ff65ee7ffdae529bfa181bce337e1f9ddca716b37c0b9be54cfcfd39fda7fbf89cbdafd5867d2c4a5d09bf6baf3b183c66522f237cde1b2f94c0b39559763e7805d488b13e5c57b0c9d6f6d187de428b6c62ec699fb53dff3dd8c4b017340f3b5f64d1ce94f80ac4bc241e96416c292a521c7bbbbf129b7822cbc86b659e82dc256763856156ae9bf95cc9bf29f64011184e31dbf6fe09d5ec3a194687c992e21c3c078fd96ea6d82bbffbf37d7f681b8762c7c96ba5ff069d78bc50a2f1ecdbb4e86f63377e4e739bf0abcbc6732ed3bc5f0445ff3eedfa6f53357b465d278b8afe3ef016e9c6bdffefc69df767cf41c7cea4fdc3fd10eb10c977c338f5739bf0acc3c6c8fed9a88f4b48ec28d063a26bd4d5ce1b6f7eb48ae8d4ee2b7f64988326f057424bb09776181a0ee451e1f9d26777253d4f566d7708e28ac2dffa3352b343b84dbfff5edee959cd4e9365f51c3ae53dd21f8aa5ea5b5f2576417cdcb8a73fa1d1b9865ded111d6cc52ae43997fa7289f1807bc879b87837791f24b20e221728ae49161d4ce13ec33df5101be8ed10837f5f43deeaf67aa6d1cf693d4aeae77d35586a4a5868ca86c8cce24ef82fc81ddc63f86e1b2cb5a7ef06d9b43e27895f087df69bf59f3619f3fe23a9effbe05b45d7a438c2c446a3386f4bbe9f986b43ee399d0be52d37b4fbfbdc966279d113e939495f81cfa5bc2032f7f7d177733c4b7ec9b12fd167f9e43e4ba407cc53116ab426a2cdd3b93c3d165fa1cf0b363ef839897c437f924c37c817ea3a1260b818f723fee69e6c54a737a9fc96f0c9b073f91378b4bf1b79d6c1bf7f0acf95fc50a045b4835fe97b15b9c23f6779eb6dbfa373de8bfcabbdc75df9dee69a33e13ea2ded6a83332bb0dce693ad49e1f6e671baa0fe8b3d6b06f4426dfdc2e1bdb0e374e47dc43e9f7de4a9e07dfcffade96fc58b8eb21b7c7deb6d3a1799b6ca17ff93fe6086a4cb315d4c50627e8d3ccfad91e6609d53f4f825d0fbe485f8538c981e8199b21f757821f78b2edc3191359e08cfaa315f66e263a27b9ffbb0df4d85f2750c794eb078e7db63b616cf07d7435474457455d1c6c5195f011b2bf1ac4b0a342fb35791f9d883d027dc6b6da1079d023837b6a404f08723e5ba2cf85aa9f844676dd7467c9aa481e13f4598bfb907d18fa253210577352e23e17bea71d697def2376b32258268730c7cfa7f4ff56b1673546ff9843b62fbd3430163f414740fb1d7c12605f76ad343212b0634ca38f3d9cd505f04473784cd8b8d35cdf07a3c729cccfc7d9f69ecc4a3df00afe17fa1e5f38b3d8488bc05d27d0e7d29b113ebda763103df10f8e81eb26f619abf39fe6ce5b64f48b18ef17eb473d86b5bc5fc41c17c8f7ddb841af7d5ff019e829dba9ee35ad852073a318a4b88e94cf49f6c3d17a575cabe89362fe22b21f634a8bcf786c75fcee026a8a37de2c095db22fd85710ea860b6dbf71510ef89e8532cc807c0ff453a12ff20acf829f06e81ef62e2ade128c99e37961adf2e04069eb20fa2ecd3191d9f6b17c678a587c50d34dcef4f284dc73435702770e741e1b691ad3774fb79a16e67342fb57626386433a8772cd6c7ea708f394f7e817b2ef814bfeeddce99da173d73266afe27d7e4b1c1a27875879eee4419eed368005cbc780baf2c0b32e5101fb7009dcce2d3a804fac130fb527e61966f9c6759ea661df0063b740bf5179568045c5ebc77f8fefa52f13316a0eb1db3b459e93adc85e2ad9dec2b11b6bd209bd476affccfc4913a196c3527becfee1ffdf8fc91a6a6017503f4f632a82ff67709dade6893f76ae1b4fef046b381b2b3006403f81e1dca3dcd9111a0c86bdc833de0ee650ccbb8f9d485d27bed1e984440f445a4ef87ab7988710b8faded31f57a11f36f92dbc4fac45b194de2d36d6df40aff2081fcc9ee41c23f58784218939f87a271ccf133f778ebe179c20563e0a8a50257664bf6b428f282df35dfbc8780ace419a3f39ff1dd9e38d4bb14380875a6053c6432d35a5b5258017426483ef39e718b0d2e14e648111e37cd95e2ef7578bfb74251c7aa12e5e7eb754337fa89cc97b25af94dcabd12203bd2a775262db601d14f0bfebd495cee4691a645db0a643ecea90274e7825bd7750974dfda1b790639492bb5bf24f8a8b9a9a467c8a7307eacf364cc6009efe5be2a869c6f20e443a880a0dfa05804c033bcae1b18498d090aa5fcdb19dc6f93a89d4fe2558f2fb867c7c64cf9de5e0385b2519d1f301eb658bf19cfa7a59ed7259df4b7bd95f6297e8325cb6d5e30fe55dbd86e48c8d8cde29f0d996f64589614ce532e479f422c321bc82dbba3c4e417d06027f3fc8fa3ac71da031e8c13762f395f99a946fbe2b89db297380c9fe2d0dfd497411c2a3607dcb0ed023e1d98e6733fd4389727db729b453309ec19905eee200b288d84faa43ceed097521924c1824741f747c27daa2e5bcf0d9b9daef848739c416cb3c15bb1375215689f59c205ff17b31a701e4ca88bc672dca5fd01f961eb997ba1276cde3a4ccb565cfcc802edf95a4fd8ccb589123f2d982d84574cf1dfb14e6f119efdaf92ce4361039f02b263611bda37347b350d60527b26ed3e864bedbc3b884416ba8d0de633a22d5fb9ce774ab3991ea1484e7f8ee5b12759d6da4dac5c6b532f13c59ce4d98f7151a4f4b7cd7bac580298c7c50c43d117953ec21568a6ff4affe50bb04dee218aaf3ab394a6fb1eaa880ab54ae8dbce319aa9d0c313c2926af47785cff6a75e7883d6264ca74abad018b21ef9f8221b933bdcc579d67a4eac5877857897cea428f38c2c7c4b1bac152eb22ae0bf0a12270ed5b44e43cd7e5f8da3a906f3184df10fe4e7462c5341e99efd90ae549cfd8b59e7ed73af9b9534c3301df7964032df9b903b1baa8ebdc997e47f3e390cfbad937ea0bbd96fbdf17e7acf9aadd21f44fe8272a3462178af3bcf82ed18588ce05b89beccc3b14c3fa29cf8be14e3359c6f1fb453df69b480b986fd13bd01cf064ba84fa4cb8bf883f4dfda5ddd9377318a78181bde0596d9e45d6ba1d1c183672d9bf9fac6f40f9f6e002ba081b0be54011b890eb456522de4fba7f3c2785ea609cb7fbbccf30db8bf8497ffb5d5e17dc35b29e53b02d6d23a2774439ee37e55b287b30ff42f267c3dfc43e82f9957d91293d1d22fa5b018f0e9ff128c64cc94f282d2e809fb05ec9e893eedfa261ed39e04d2f9ec3be72fb0ed109f38d6ba7bc17bad1bb85dd418925efa527c80f6e7e8eeb0dc817b8ce0a3582d1d8d98646b63347fa7cb93a09f156e47d6bc40c11ebef992d02634fb69a16188b6779b63f90a6980db6d5ac80ca37731c9f62234902355303f72dd9004f7a10feb9ff58121b327b92fbb571dfa47794b91347acb1817b3142fd92e2e9810d80b58fdd0db109bc20c39c930ee57303daf73d12f2c2e742ee95b4a6416410fd4641da5e677beaa78375585d32c705399f53906759b47d4be6909b6321c614d1270ece85f014d4e7c899037616e8c04de3b82a59931e03b68191a17de5de139c33c570823de931be843c1a30cf086fce72fe1ddbd33247eb1f46275197ec5fa6103bcef716a990434468228ddd187c62c27e527dd0e922cf14e69f09ef1f097df030ffbf6feab86781179f3f9680c940ee23b5fdfa05a7191ce7b0f10222f7886c20f7f91437e2c289fbc7f8acc67d053fb7e5bf451d615a1cff11e968ee2ef698ab8e3ca4816ed72017a57e8c8faeef119d94e959e4f7bd2cee08fb40df27e8434aacfe60fe047a4e207bb83f88f91ac4fa337656e29c99bd8ffc16ce8be930fba97016d23a69cdb26910bba6630543c60b299e0f3d830dc358adfe6ebcb82ddd39fa7f0acc4763e30702def45fd032f763137e4ff695d2751657796d6d2ddc27f71d7d060ab1c1f1b7eaa3c7cf85cd5778cf94f36fee13fa26fc5bd2d72afc6d49ebe09fec6ca5bc429413f45ce9f7b5739c0b9f212ef0e7e7c5651bcf6764310a863949ee3eeaa114030bfb9f818e3f19ee93d075948dd1df4b77a6f1ce82ee59c42ee617d1b3eefa2847410708decf2c76959035049ed5dd787626ae632af490637804b0cff2df5fdceb56de406b4e81b750fde02d59bacc7ec41e57543f449932aceab9a93866f93c6014475f97093847a223103dfe1aa31fa7c0dc226e33957ecce15ee427ede3d0738e0a8c33a15ec5f6437ff2fd74e7df993d691a7db0bf63357b4a3cbae4910ccf81f149e9ef57bc72a13a0ad06ea30c97e5e027e720dac92ca798e96b8cb6ff42265b19b1c588bd54ca956c4ffdaba7c033bf7fb6c7e6f802bffbbd041ac1bc0ef9bdf2d9927b26e59680acba8605b125ec233b27c6bf1bef07dc5378ee9bf0ef57f7621c80ded3eb84ae45f49a5bc07d068cb6895ca2b2ab95b770fe29fbf6a9fca9ea5dafe7ceedf56f5fc49dc2f92af62d96301294cfd73d5edc62433f57d6cffcb2551b56a09fe38debc8d0d388c80cfb3decd2be5a2f6ac4cb7830f2d332a7b7ace1fec29d015b8fc54e2646467b77cf595ca1131bd86765b294f85a9bbe2cae4dbc6b341f89fad4a0962f63772f87de6d43ac4b407d949e49fe15bd01ce9ae80d05f60fb151be321d40b81b5fa03bad1e13607806103320fcb2799c6df3fd127505f03309b289e567b5f39726fa987d13e5e8ab335eba3d35542f19fa621e671f7d63b7d2678c73e576f6a7f793e95c17a3cc834b8116269e92408cd4b0525f3d270b817699af6743e7130cdfa85e54de4b711c1375fdbbefd94fd863e85b54c6c37f6e3575e3d927b0db710dcd7b26fbddbe816f17f244d24f65caabbd8b73a7f8a0fe6232bf89a1ef37b9be835e3dfc6e2c6e4c07a0bac12dccd75f971d23494e08be90ba4c99ca3a13e2072db5efc2191c914ee95d2fb23ecd15845e4ae648cced63b1019e4b08b51b9c4fa86ccf1d497690ff57cf94da965cd7207606aeb393c5865344cf23d111fff15d1bfc43f42ea5a0c3a38ec7754b625707ee236f59eb2dca33f047507947f512ea1f1d2fb8de4d74c6b06b9da80df909ddc01dcb823afdccf0ec3fb7e316653e6256e5b7ed7e8466daf850cabd9da0fe7dfabd94e8d390f253d18e81eff11ebdc9f1c9b217188ba909e30e126a1f4b7de96af792f284c0a3d87215bf5469bfb7e9f86847b05a205a23936edcde53f287e23cf350855ea618eb63d88a121d22bf2636e17459ea5ce638a6f1361c0f7173abfc59534225db9b43a5e4ebe0af81b8115d8f730dc6b3b3c4afa8bf678a3e04cca7c8893e809f4786fee4f1db86d8ff6459fab03fa7c7738d0e5fd1dfbaeb3c2303e42bd21ef5b7fbaace6a5a5222f3e361dd974ff4c8d8c8a4b5425d18eb4107329cf189469d7e1bb8f129cc68ffc015fc5e093ccb0e55d0c977d437fddae6f26c72879e3c47a42bfe16e8648bd8e2f4be0b3e50d4638253943b92af82f9e32d95fb540f2cf701e3afd8ef0b7098f375e203ede8d78f25d6c641dd76394ef3b9097b05983246063828e2febf3c3b6adb72be21e57cb03b8cf1e0cff562fb1cb87af173abed42c349a3ed43a847fdf18f7c2717843fef2096a0a619ecc1568a9fa69ff991c475acba1ac4b72856e62df4b433f884a97f7b5540de2bbb6757b87fdc3fd9cfcbb5927f8fe8dd94fc943f579d85fe93db19551964f7c2bc7fddb80aadeb60fad3f938713ed1090f33268b4ec1b61a435e5fcb1cfb4f7c0e9083c7ee2f1fff15ddd33c77625f10de45de6f727adcd0fc9a169b577c8ff8ef5f9151e6c6fb6a1f72a2085dd21807cbbb2acf6edf5f2f5647e697afca82e787dbbb857976a171f343e0315f42f6b94f87fbf67c695d80d7596886ef3e9e1f4b5ab7ce30d10ff129529bf53da81b21b4c17a4a039dbca2f3382334eebb6f18275e6adbc05b74031770d8bb61c16cd8dedfeda1f1762ae5cd1bc8a1a65c35f26f7f59d7e15a746eeabf8ffbedbe525167b49a75882e8ba541ae6bf90e941192bdf405ff0ffd6d96cbf92cfd6bb07c63752f9f9e1bb76d9ec7f2df149ba8ac65076c37888fc56a46de9b06c61c62c093619650fb8ce80445b04c4e655c98f938406f87b57d2c539475ba96468779893f6074082d2b61d75a8971d7a848ca67046c1fe11d65ff4d11efd6ed5f37dee2166576c7873e5ad9966287566b8f897e7a5e613dabf8de6ba8be7dafc4ea8bc0d3ce446766f5d4340e4e6dec7e0772eaddce3d2432eeb04fa08692e6ab115e41f815a1a5408d210645e5bd38c6a5229fcbb510da79327aa8cd15f27bc29d801559c1b9adfa31a6c50f9acb942916d43b66179a674efb01d09c0e1562cfcf78ece4c1ee24e0328871c09eac6f405e3f3973a7a8ca5dc8c56dd4457a4b721662ad33f5c9cec91d9be6ce35d0a5f7bf6d10e349daaf5fcb6679bfce9d54ea8349ce50ed17a80b5ede598c18b138ebf1daf6df834dd6f47b298ecb7f9fc96740f93be62e0878ad7ed729107f5b237c99dc11a20fdc788d19abe91f3bdb69d7eef85be62f11ee9b3b1031249a6886d1bf884941e8701fb88f2c50219685be1797e8d544f602bfbf06c683e616d7fc79ec9d1c774b3ac7365c2ad63b98e5a055b084eb67e500bd507bec5cc965907a52f21c99067c8b90f23fd43544bc60e97ddfe4bf1b305c5ece5ba411366ff4edfeeb7953791b3259fbdf9c37c4bf607e47e617990e312e5ceb1bc5fd80587329d63bd6fa1d41fd0ac62acbda4ad67fbbd9776855eace051dbfc99e394eea78b9a8ab11bec37513f49d2d5d01971ff365539c43a5770be6b130ac78d4b3f8ba59fc52c271957cda1c93693868cdf3e0f440f36c260dfd5bea73c2bec0d8935157fcd5a7fc89fba3ac2ee3a5917c073339f7ce55e93a75c091827549b8418d392662ef24d9cf2ff41daec9eda6f369c65220b68e1d32daf43eb983186394e959a44dcc6be13982a52ecdcf782fd3fc5047df6b0ba66259cbf71fd1ed3dca1d95fa9ef9de4f73b4c964ba4dc5672bfd47d04f1b0aef6138c65ccee6fda2b98687ac2998a13f5ec071199eff6ceafdbd4abc7ab7f76722fe16b0865a7a42887b03fded175903ed9598a378f618ab192a179116a3dcd9855d6b0f34b466f966484b72de9a9433dda82f4ce4bceac65e1aac26a84ac765fc3d653eb133cd9760be2991ae5bf2b992530d371bed8f9f0dfc8c8d73c2be5a25ffc6bada6c3fa9e0e9c446bfe93de0879b2ca166be8c4fe3dc1be683be0821af16cf9edb49776aeb883cb2ec5543e90ab1d4a85f551c43ac7512f2d3207fc257fbb770f89610dd3d847a411ec37f9a6362fb800c4943c0be896fb1fbd8a38fd3ee84ee9ae8d58590075ef67e6767d759dcc4bd5d497efc0a3fe0ebc59a5f5c7383beedea7f20b794d86be318632b4b9a0f3276eea141f901f423c4fb8a583076161afe2534fab7686c0b779bf9322feb50c1f366e73aa5fb3b69ee13d4a8e3725d4a94415c1e34eadb15be55f6f629f3759a793dcb9b06ec0cf591fdc57da1fdf7b09e85629cfde1b50cc3da3b1a6511d1413e1993f9eb4bfe5f62558afe1846fb4e98678fd8fdf40e0874f1e366ea8b5f8bd18f6fe013196a05e841187322b45ef34f97f7ee62611f75e8730d632edd39bfef53ea53afdefb8d67db90c3be76f6d45eb9947f3bcf265c8f49751f38dd67cf9590bf8fbca7f4f1d5e652911954969e2205eb2b16e00baac915697eae4ae702fac8e0ded85383e3fcd99d200f4e1f649f86f1c02a067fcc61f267a20ae3113d82d25245469de99ec21ef9ee85d75009f7fd4f39063b67f1b366ddb5828bfa09bddc39adbfd6d9851caf526fa9fa3bbea60b577436f3fd07d33729cf1e7ca3fed757f742d607287f17ee31eba356f95c1abfac5ddfca7a03de836c0f674b7b2eafd44067d8fc4bb747730a52accfe4f2a646c3e41d3fccf7c15fcca1f757b29bf272c44e70ed0cc7bc2733591e96f5f1eb265d14f6e9fa97f21cd77ea8cb6f416efd6cd0654fc1186ac64e61bec83e46fd9cf7771f65d7b96715beb73fa22cbc8b73667aa684372decf3ff903b5bc7c02ce7c1f4dbe9c10679182c533217c4ea6aec9f23da2cd8b786cac28a1efc57b4c2def1efd63366ba03bb2fbd67047850ebe3c65dbc4d8783c7a48a51faf7329adeaff57f22a7395ec54b9b4c9093abd21f40f7a8c2674499a6034edf33ec5a65ee2dc5568bba5a86f5b929d6d9ea9ff22969fc89e4f368b6cf401ed17f33ba6aed617d70cee17be31d478c830ab6a5cc0f5fdb46155d599a8fab66719db6e4bb4e6b09a5f5630f267c8eca9d3ed53d7fd66de74145eec0ef3eb5c7043905bc1e6b367b3736ee2b9d08639dc997ed1cca07a43c2111a387fa476a3cba66db2f7b27514f1131685ffb2a5ae85fce01380ab956359d7403b29a625dc8f639e09c41dc49c8d5fa85bdb3847d8b2a3c0bb15529b612d1474b6cf45afe21b5d98df2ef49713935e00df3fc23aad72196462b3f6a3de33cec5abaefdac715cd4faae8136771ace950cc15fa7bbda4ee735c43efe58a5e925b5bed5fee35c50f6d9a63cdbfc368a25f405dbfe1307b5fbadb53ea07acee45b5e704ed61dfd6cba2dce7bc7f5df11caa05d5ab2439753605bfa448abadb2b3559f14ef62ef17df177a0f3e1baf7a3722cf39c5a3208dba653dc98bbee5ff86af9eb9af6955c3243f8b796354a747599f735d1e3103197f253a2f9c690f7393de598ca0c7ec4519a77cac7736dec2809ca9772927f3c8fd95e23d59137ba3ee4fe0f8b2e57ebdea0f5ac4eefa3bad4b3d032d0ea5fcfa2b6056181decbb41eb9d31ffe82d991faccc77cf100714e2e07f4b1fffff4b1b78e75fd2415db7fbe23953ba693e633ef62376336591ebcf7adfe1063d0db16adf432383bc4db19e8862015dc22ee402281c8fe430bb9a23ab085cfd0fd04421f70f176de6d673871c803863316cc4bd0c4e909fe5f67ab43e26892107e20e75ddd16126fa31ce1b97d80c16d4eba12e9c01de2be23b69d0a376e26abc1e95d5284deb72e71aaafd3bc4b3bb5cf727fba2837eb1bd270b22e787f5583ae22bc74fd3b03aa171e6b968ac7e19e2b0dee288396d647d10fbce28be40c31d688e7143ac57aa77d09eb16743fedac20ba0ef90393cf7b11745ab7c6d8f637ffa6ea57c37efb5de80974064e2fb00e4685977ceef55f26b5bb56de41832cdf9389475d9d159c8cd93644ee3fb45ffcd4b5ec3fa3c233f89310fe856e99d0c780a729f0bed543eab9da262f098eeec3701e343d918fad53450c7dfb8bdc4341eb7b03b907cd06bd5c94c43c4d58c4fb19176fc6d6f17aacacd777baaef5ed269152367d857a2dcc9a6aa9585b97d9cba449feb9cc26d478d8acecdcf8f1798a7aa896bd846b97ef5d584fa7eb52cca7dc436d46bf65b65bd83ffe579bfa34bf6e1d9c25e0d68fe6a7615702f5ed11fcd015f4c032f7b8a58192dbc1ce416f41374fbb994e74e7bc18af8242d7658a3bf0c7939603f36f532a1b962fbafc80ee87b28eacc751d19d7d1c4d7613c22431ca5ae5737f3ea9dc4ab11ebb1ebbb3d85628d17a16a6750a7adb3dff7fe8d1e6e857bc6f3fbc544d435abf1fa124746c85fa758a56a79e7aca2b9eea97a5fb93f1ef211a4fc23b05d584c9fd779150d3e60c92691627f71d5675c8fc521b638eb1f6a1a8b5be0d9882fa2ea441f5242c494d8115d680a79cdf0fb6b9bfd4b6dc13eefab65f4445f05e202a98fbd695805912781673da75b6db531fa9dd0e0cf6da10e7c6c67900308714ddaab6dd597719d5ffba432f6d99463a7f13e50d487aa1751aef726cb726fa6ab4a9f23039f99e66c2cbf31b6eea36fefba81fe83e9af605b8e5ff33f53dd3a70219788ce8df3779ebfbee174d1e24b319c2bfc1b65628da7e09c32ec65456456896dd2e6b36dcf2be2cf0c2e33a1cf24cb019f6c350bf488bc477bc794b877e0b7ca01b7ec89b456628f40eebd78a634feba698861d1be28278cdf647bea7f60bdaa381693e893a2bfa9e77b34f4fd6c88615ea59820efdd023a68ab7face2e3aac5691b7353eaf906a80f779452d6fc477b2ee63f1c6f156cf84f63291bc12f46f794d7ad301fdb92611ed0be3cccbf46e383d277f85e728e70c6d2771b7c27e221349cd3c6d09f1bc4133a46dd45d95b14efd5d1f76cc0c89c0defe05bf2d5b4206718b86fe2f93de3b129f58dc45806bf0bf01e7a5ed2fda3ef227394de51bd97729f2f6db7199b843efa800fb4eded36865ecc55622fe9cac4d80bfebc348dd424216b980c53ba9efb0ff37d7d32870aae7fb84f2605bcf3bb984fbe196a3f9047509b4785de122837df67859f67502f121bce81e55c53decd7919bca765ef3f8b19d7fbdf329aea296187e3c8139e9558ff3bfcbdf7f709c417f1f7846618b6f991f7b3a5bd2426148f746ee89dd848896eaa85f9a208dc7db254f5e786e8d0cbc191e894a6a15fe35cffe32ff7898ceddeac837a02566c0b06e99eac233c689d78d449c35c3f603d3cef11b98f72fd40e6437ba4097d5ca2eb545d14be1b5f03ec35f44f89452addc3a631681e687266b9c31bd77e56681e7811b763a4de3c25c6475bddce1c7436daaf645cf66b6dc04f83354eddb70bae83db780cc3836185ead8df166a2c56ce3e16f3f151c737b25d84f86317dfdb135bff191b0ed6738e16bf564bfeee33ab4df03d9ad7a1c799bf8f67522d20799f581bc7f0b8b10f9fba014c3062cb2dc83c59ae2fb1532f810bb6d7295295afd5bb2e0797b2ee94e7e0b76211f1bcdfc34cc21fa1581c14b7c5e758b9a50e7da9d40a0e9250edad20cf5caeb73f8a711da88534fad7c5d84a83a7fc1ce4e2a8411ea98ed2f49b7577718baaef769aea83c81d5d8c083dacf640f3dfea9fa17df65bd063045adf125d09e6a8f44651debf97b9bdc4e65d9ca1f6a0966f48b17c9fb2ae23ec71536f45a04b67bd2feb1580fe7a3c4eecacf78d711053a071c203843b8ecf3b8e35a9fbc6b82f5d98d7959f1df595bdb21b847185dfa5844ef7a1e11451d1bb8519d6d134c7203e9d0b9c531306663df6c1f0937bb7704ff858746c7ad7bf9cc72a36faf7bf9e47662be40c9ade559b4756c9ff5dd3f7742e5487cbf6d853a1465b7da94fd830156941e2b96877adaf1b7751b3bd02faccf4606510df53d747996616e4732578f1ce26bd1ce4f6f6be15f4c181ef81ffaf30473af456da2cb529d11f7c354dcd619a6ed451c264de6439b89946aac463edf973fbe316107e3476b6d3dcbe85cb7e4ae4da46d5238683dddefb49906d1236f7e2e6530c0451368918ddd3eddbcdf116a7703cbb05467f47fb8b335fdb757398215da18cdd4679bf1ba94eb1747b7908b8a7802f708af2f5d12adeaed38ea36cdcc773aa721bd30af3e036cd4f4f9abf8af922440f19317b68310fbbf689e3fcb5be3320fc8ddb9a6ba3ffdc50ac4a3ecf0ad6fccae57d284e20d7695fd0a8aba53ed43089b96cb456653c4b2235a5b99744c6386ff1d84a7d8a9f131e385683d4b3cdd4b1decc571f69d4b5a90d4eecfa19f53d337bfc07c704853c8342bb201648270bdd7ef141f1f100f3efb04f606cc0c1d0b84d5bd55b44be18b09c977abc92d648c9bd500322038aca676e6f2fe2509b43ede977ad5b68dccfb2ff08f2a557b4e7e4aae9fd11d181806fc5e5f799fc6ef85c4f64ac5ce9bb7dd377b06e8e172c7fa7845d67b71965d05327e85a19ebc50c7951957eb091915d7d35dd846affb22a6d9264569f2bf6e8ef3acfc0d16e0d7debb2a6def73c6664f49f1fd823fc5c7f86cda5fffc58f23ee2d23c915f418e15e6898c6372276e71d143de58a9d592fd55eb6b64e887c04900733d58f6eebe1b676ecd5725c672b45bd4859caa6c7ad0d24075fc9f2f9fdd8bcf064dcf56fa4667d39cc600753e2fea7f5c04cd7b29ec13f822d657e64773218f91efc93e546dacd91af6b6a1bae84da1aeb27f0e478f2c38cc890dd7257a50d88dae25ff9b5f455ec8fd58f26f5fcf6b5999d7f28bf3d217b7a87d0de5bf39ef9c5f23d52e42f571768cfebd71bfa59ecc757fa4db85333ee3f9c9793d555c28a43fc8dfaaf5120ec0d667e720fcbb85be9026419fa9c58aab777c42f4d2f1e5cd7c3f0a63103b00753032dec712f0ab292ded89aecf79c7efe5bee94ef61bef177f27f45564b4d9f47b8137699c663fddbf31d19d34e855e3bbb1806ffb253e02fa36f49234fa77ec17a61f68acf0648ecf49cb77c7c9ea5cde3d7c6ee7bbbd5de03e86b16bb15e87340e50fa9671ce4a13df27eb1db17eb6b59ecbd5bca7a1a48f42ffc4ea3bc89a4dec5b8efc6cc4fb1ae0fc9dcf6893da2eebc52952f52db1ab51f79937d06b335d422f1a1df2c8d380d5d518eb53d3dd6aeab3f5b5f9756eb16767a89f7cf9ec31d708eb5c4abe85eb6b91157057e16e0a7cd59f0e3581efee4f7f3bef05f492f86fcdbb99c663a3dff1d5d4829c7e352e02cf7ebe9207187fefef03388f32c6c1e2ff18f7d52e20bbddc52da6797280c707fa17b36f342554fb2dfc88e3b6ef439ac3c0e235e007871e28bd1de89c44ff406c326637eec5b84a38de37f0e5bfa741bc8f6d79dfe2339d8635111d15fc44d602f300f37808bc6cb72906c4267c34cc91ec01e8a80bb2a76e70fb1836fef6dea6076d3c7b16b881323f384a6c607dfd047401ab138f17c00f898d3e5b426e5c95661213e22990df496bc7d657bf7c178c2de50ed7e44ef65c91f98ed878af7420511e0832fdbd5566897241bc67cd77b4dcd3f54a59fcfab9d5b6b1dbb99be3930579ecef6db428ebbf78c77aac971dd3a59e516e731d46cc496cdc17ba56e0c3ecdf54f6fedc723dfd6c8ef749f977d667bcb9eddd4db6259149968afc04f26197d1b9993f36c9eeafbd37f60687e990df3faab73b9c36fe6bf74fca1f8f8fbe3787fd64f42ae0c22326d0ea47b2c23ebc9dd0786431fa496f1256857cd6502bbb5689de672bd8c308645aa3fe1aaabd27b5c9f08cda6915de0b7ec00ec58579579258cdc8fbbad3bcf4214cf3fe156cc52e3ef78a96da7e1fd1f947e5fcd9d98c369e0d3ddb8211f2e1d6bd467f07cfa708d51edc83afbef395fce07ac75053022f55b086d12975062fdd059ea698a34c9f38ff3d5efc7b59b3336b34fb75fdeaefedc3e67b14e493614ce525d66cd4eed21a3e6fbc179fbed373ee5671e7fec895dbef44aae344c3163ed96c13ddc2033da37149bf708e19fd5c2fe9b53647f07f73ccc15b98036d3d63de27027454f0afd23bd7a4afd4f8b05c97219e0deabe613e475dddeded81af34eadbf21e54f6c9db184e160effce6ee0794e636a6f0e3fcfa169a4ed5d0b4d37d116dac2208f4abed07ec7b9afa26e03bcb2139bed89e15fd87d644caacf3b14cb9bfb8b1aef30c61d03f7a1f8157f9230d645f615c5593c42d9b436fa4f72f6b2df4a9c0ff78ffe0af200e254643e10b7613e3e5dbb456a46e553995fd2faceb19585c2f810ab6c9569307f22f7cb3574ce770f7ae354e7b60867bad2ead3c2b1f7dfc01ea163bb4f3d36875047406bf4fa7970b0b3583f3fbc56deaab4d839cca68c8f81eb9c17867396ebaf6beba2e7863a5daca659e03e46f4b39bf93e5367ef98a335c73ee4d9b463a741ae179b86b99576f5d7c60b0c47f1ddec6c0e7f24d3d59ee6c2776e1f79760e0dfdcb778bf97e404733884db148a75083f7107c94953bd0c05b582ef19abe4f8c17483287f18d5173ae5e95df981ee733448fa73ee4c77b99c3f782d7806dc2eb03b02f25e4db384fc472ceae9c8f412cf92d617a118b6703ee26c48a596ca955bfc29cad83758bbb7616edb36b90ffb8f2bfa93d6275e3cccf2fa778f8ca6745f91ef7c343ef579481231acfcf9da2948348b30db290f2f83bc36639b1bc92cdd8ba85eefab656f5dcf7ac53dbbdfb9c2ebf3cd7d14ae9509a62675ad7d71db847f733f3874c689ee30af12e9fadf37c75a768be108d3f40de37a7ab4fe9509429d59814fbdb647556ddc0b5fe6cbc793df6d9ca9be75786cf42efcc6c0358efbd2cda268710cfb18be7f8f5fdfa0acfa177b9b90eeb5fce7731eadb94f65674bf1bec27a4d7e990c55218ffc29e1d51abeed0e07ff884af812e47ff3d2f739b3fe56781ea28eb96988e948f9167d740758ad9f29ef07fb7f802b8af6f9812197c083cf321c62ea6289bc9e785f0f9c91c1e9389119ca08e6037ba4afe6bfeb9297cbe4f262f6572d3f8fb96f1f7ede32f5bc6afdadb2f7451077d7436a1a7bff7ffa2df2df066521ee0afe5e0f132eef3c2366fb54769cf7ef0f3513f09f8e70ce7e93eb5b8ddd62cfda7e88f4cae628ca3f6594b9c41ca6320fa06ee9b5c5702752de62bb902fd2963e81f384a3ef2fe2d5cb5ca33f0b3713c465d3b85b97d94ee41cb1d91e607fadebdb25fba5c77db306e80fa570deba4810e76b1671518cf87b9ccf87e0cb5fbc6eded36fae916aa1df6f9e772b71c1b73a59be7593913bb131d2cc845803147bc66f97fcc31ee9d4bf67bcd3e7fa5b70c647d4fa869fa8adcc33bc7646c9a4df9bbeec94737f966d6ce47f2ebf77e6e35e16ed9442f2fe9d3535ef8909bd60931b0e6bd79e9ffacc79f5ef9f19ae23dcdcf7fdd4ea6bc490ff3afc77e9a620e70572ad878e2390b31599e1f15e4fed1eae219d47c9b0e7edeeedbfcfc9d81dbdb8bfaa2b0d6bff5c5d07b6da7616ecb3a0a9de7c2eded1befbbec876bc4e8e3670277ccb9427d3af6dd83f3fd0b3fd86ae3c6444e1828e3ac35c657eafe8f29cbfd68b9a37f15df6ba5cb4fe2c654d6087ac067f1633ae79e1447fe8aafe9dff9fc69bd36da4be08ba2ff0659077ca61a5b677f131e52f55795f289c530a09ff37249f133b652de1459b7122086ffb58cbf65b4c74879f75ac6d8c6de3c217a7a04b8cf88ef6d8e69cfea520f62f2f97fdbed531c7be9f6e651de3f10dbb25aeb259f71d3f370de50d3fed7718a7fcd23bef6debfe513f45ed7f206a779fffa1ff18aafdf73bcd77ae9cbfd3fa253f2383e5b8f7d0ad4de395853fd38c3f7a29fa52a7fff1fd7f9e4bd19a14e3ae1bdc3ed146bdab11f3ae6b225a81f2edbe28dff4d19dd3a4693fec6f0c1e60ddf1dab7a39e42988ba8ca3b4e8f9adfc681f62fdea8ef664c1de2fc887088f51a6321dd21e0202561acbff821e3c288f57d4bf1478268f3506901351b7f1315742a8f3fddcd7827b40f96dc3fda57994cd58af953c769ea76e567b04b6d4dbd6e413ea80fcd99779305843f6a9fd58e6bffff59cf6346f5ec4b0687aaeacb735d2539953deca7f584e7bf2732beb8acd75e322ef217acd7f7f8fe43a21f8ef1f73d4df814d5750d949fde950a3e33ae7b227519a4663227b6757a9a6bdeaff58deb97f85facccfdcf6d0b5db46a89f2de751f6e2c0f5f7af6beeaff9ebf3ec445083c8fc4d0f26c78e6d3840ff763fa3dc3907aefe0c204ff0458f4ffe9f10d337ec321f7cec5c2355cf83e55be2a8eb2474b3c3668c7940613e12c6a9e4270fb52c36664dbcabe43107860df69ff399bf7e3fd519a81e28fafd2499dc9657f3ff7b31e4ff8b6db586f3698bf14c681e55350790630b8875a039c50258f6b28fb1768b588c08ea51ec0cf509a7888d2c039e2bd74b6bac1f7f5468490cf8d78ee20f6b3579443f5002cfbc45aaa3c4865388f7352aee49aca627a2e3848833d333c776168f174457039ba1ac5575de7cb7730fb187c43f25ee288e2dd66a4eb683e67514e977d3d00fc1ea98d8ef569fd897d4dea27b762476411ae57106321dea8bd08f5ff63e1a28b3acf9d9d96ecee23a80d70b632d07858dfe957fd8dc2896fa291c430c6ceffceb359867d3e8a5a1bbfe660ee349a8a657abab9c9bde3d1d6aa1a5c2b307a6e7c218797626e712b88b35dd8b6b98eb976099b0b5947dbbd8186caf9ac6c961cdb55e1cf45d9093dc885700b84cfd67e070dce753e0cd8e4837d935e8cecee57edff9bcabf5bb81ebec2385ce6b3be89b239e1322d5f808f5d157c4804af38dfb20b47a623574aeca7e4bfb033bcae1a7807b01985763dbe0bf2b6bd4b1cebda9a701dbb3ed6bfc30df730ea85ba64f7287881d0cf7a53c4f3a5f2bdc384a1d6fa2162f94e6f427f0f6d08754d8df0a1ea1de09548833b59ec146757a932a36b280af20614208eb09bb4ee1abebfabb645c08f6dc15fabb75e32bbf07e3fd119f17f6ac521bc9f6c9552fd907c3ed7885bf28f419f35d7b1778f6133099e06f9ef3c7e979bad5ac40ed315cbb3a06c8ae0133ba3aa78a2f93f69d6fc285a4bdf028be7f6b8f1bf05ddd62cfda05cee54fe06531e400e27b5bf182e8bd6fc46315f5ef48ed77a2dccee8fcbf3763d6bc6da743abb9be71aca5d1c1cee66aff8cd84f3d9907c8df1f7dfc7f899701b11f7c2618d9b7d0e81770b7c6c97df69e65c12acd03de83ac8607c59e87bb1d751705b953166276ee42f5718bb6357aa29f57ed7cf4b311b96076ad839f8938633067ac23c1dff2be6d93e18fa3db79db79cbfd2d28ee8955cc1fd6fbe8c0648cd08321330d2705b96830b9e9bcf9aa738fc9bdf7ac673c1cecb8bd5b622151ec289843d56f02f70be87c6817511e1ffcdc4a7d216e11197a11a9ce7e5eaee1ee7bd6335867e4deb2f53c63d77ac663f3385beecfe6fb486dea15446331b0e71cef8ad66bdbc53ef94079708bb6835d74b00e816a6d45fbbd3e97c1917e66119ec4d618759d2d6097bc8f4ed3e1e0616ff7c9aff77bf273b84f7e0f07f70f23c8859efe0d3176d6176a706063119a257a7ee0ce81476e0ce70d72ebf34e1af3fe67808f9d05887d10995b3b32b76fc962d93b4cb783ddec5dcb83dde03edd6a63a82dc03bf8cd1c468037027b59e511e5fc5ed22eeb912ae5f735dc0b9fdf3309bbabbccff21e7ffffcfeda6a4075c1a81b1ca0bed9d34eb4dea882d3f138f9dbfe2e543bf78dfb287bde60fd31ffdc319c4b643cd218dff18c411ef72f9191115d380bc9ddf1109b57ae77ee9f37ae792b9fed63ef43a1a714af5136fa97b6ba69df5deca72eeafb53b7f4dd54e6fb8cf3f80a7ba0dfb79bf14289de8fb76937eec645af3b2b881c886eb3dde03e1bf6c9b391b9e3b5d66f88bbda83b1bda105182a3fb73f6e7137ee4e0fd1739af78ba0f8f1f8b9daf7a65dc403f5864dfcd1568342c6e38ac78b629eeb878a1e44e6c0e306400ba5fcade169517c2e251e5b43df8d90c78d9d6b6038f9c6ed55f092b9dc90c6a86258a38e0bef3cf90747099ab1f3caf9d3b9bcc0ce836737aed5890de725865e6dec35e8bd801126be43c23ec77d6372b66ff2fd8843df5b28519e6d636f91ad886e2cc83e61efe4b150df80b3ac61d97583c3a2f41d2226d63848c3b1937dd677adf25b584fc3f867b3e17dad7c407c670b5e5123fd7c427381f8ce4699cc739970bff4fb96c9656f68ca18a3957737d725309c4e9ed3fa735da4f4eede057f2deba723f35bc19ffbdca0ad49f851234e9db4b63a261de76f810e3c2c253a7fd94bd6560345acfbcda097303907589b802b58ed3b15a8fd5b30bc27919a5d7d759dc42aeb51deb985f925fb0099bdd86d0cda373547cca026ba41beb050981caa3e037e478cb9b37f7f6f9a3fe20b334cf873e333b1e1bc611efe22fb1897358e809de82ef644df89ba7b86f141ecffa639d1fada3ec58194e9629af7f300bf17f4408c1d006e1de2ea109bef5bd31c014bcda1fa33c754d357d40ee1732efd95d2ef1b7b01cbef4c895ccdc26155cf4c522ec7dcc59ac8319fd876cb7dd2fc39f8a8a9ec75d6a5dc4ba5fd10ee7e233d22e6def908b596eebda9ffce4b1e2fe199a96f47f41bdc135f35cfe6d879066b3b8dc680a327dea17da876b83f8c9c7d3d7f515ec794627d4c87dacedf22bef35cd5ef648ea22faffd5cda316683dcff57f36ecfbdfc3f36777627892e7c857e73759c10c207ce881d08bac32e547b4a85362a7748bf47c46e18d9c78dfbd84f0cfaffe6fe2df8fe2a0f947bb92ac456607b5cb77139c6e681fa4a9f557ba19ac789f58d28df10db17f3551a6ce10a9f7594b928cbb3d9117b95df93eafca47e052db9d715dec4fa4d69828e41e40fcc8dd1c12b4ca59734d0d61ba5cac33e5de3cb5e725417617e999a3d2cf64ee6f66505bf58a6a7839dc523493f594dc6a8e38687d999c8fc0f941bdf36632b0bb2fbb6ee97fd7f767f70fc0be808ded0427dfd793a46b993133de415df43b996428de1bce91e52bf94fcfd97fc3875f9496cbbc3826120c8ef7c6febd1d0be57af78fdf440e4f4e29df10b610f988d189907ecaf0467db5da0cdc330abf41fb24da8dfb7c4660bd5451aa969646ea97dd51287582056a368838d16eb4073d68fb5a738a385e2fc5eed757bb1449bccd31f6fb3774db4bbc6ebbd3e5feafd9f2b65a153db2bf2c6c97da6dfb7643d30cf11be6ba93881a72cf4d528b3a5671d7cd633de881e61117b94ea9629ef07d05d64588ff2e386cf016e21f64333b2bd39d63b01f41e10631fda93e1350b6745713db5533066bd3721bf01b1ab3b8889650e8f09f62ad44ec1507bc4ae035853fc1e1f04dcabf27cd370ab45660e7d0c891d16995ba213c37b58dce64cc6839a678fe25e010d83ae718b54674f742bd370ae61d7396c86da29cca95f04f742090bad43fb509e3f845eda1f4b183f0b8c38fbb9d5bec7441616942779ca55d8b7128b177ba766209397d2fcad40073e91f23d53a15ff71efd340ac381cc4c83adf708d8aa6c1cec6f166451ee801e0dfbe0cd38f617f87d7367e77b3076979c01f632192591e114e46c4217f022babeb7072cb0d0e8df3605d4853f03879dd580bd3b89bd41e2bbbdfd54889345526ca78c876d0c5d65772bcca304ede53beafa4813bbd0e83f03cf5684357583655c044bed10aa4047e43c209f10b0ca96da3df0ac3cec5a179fe516a8a9e2bbd69962a44f7c2f48d7aa5d6c3c0df2692af86463ec2b90dea2f142c04e45bc614fcd9e0b232b98efecd752fb0dfd3c0b7c7e3a24e7b73845b9b38b0d670f36defb8f24ec6a4a54f4f6844f2036dbe09b948727bc9ff6fba4fd0dc8ddff01f18189d1bf03c6a97edf86e233fa7d3b59425f823bc82cf9f7df64bc178afd91f54f9182344f7834f083a277f4bdd911e70a720274eab0eb5c83ca18a8b3f73bc476fa29d68e97f6c8cc77ad2ca43119a453c4a4358d4c81dafa4c9acf199f1fc87e9977e99dbc5636c273df12fa81b357d3acec130b7491d2de9fc057e43d66396188e7b932f46de03e0cb0bbf41f57c4bb5ba4e1617e94e4d7ea3f9e0bf08696b9407fd77f3917d51c2aff631a8fd4cf9db3fc7ec4fa2fe3ae025ebd4073f3f23cabfd3ef0dd632dc5da0c2653e96fbbf47338b74bbfda5b3ade0e2ebf980e3db6b252bf6663a3ee4dde2161110f3976f86f5f4d4fa1b12802b7172e3a96b61ea5bf57fbfe6881f1a5efbfab98f910e7f293e9ea0df9d2babfddc8b47642ec4671bee4376bf80d9df3cfd8ed6c19ee359b4b44f437c4f4fcfebbf10c4ad923fe0ef2f82a6720ec4f177e3bea7542d7ca2279aecfd8b56be707b19425fc16686aa55affc8e7cee7f1eab778e77469bc4ca043f1b7ac57c33f7c9ec4b6e43d2780b72a1b83f5084faea6ce71956f61fee8213e25ed5de3ce13ffb0a77c017d43a0731b98e33ea538a25447ba1219121b7d887d4eb33e8c3957fb1dd413b16e87c888093f3713e423934b1bf74de241622f8950ed11394eeeef0ef25e54866f0d32e854d787686c7f4fdf75d08ab0bbb881cf6fd9fb8d346713beaa605c9ce3b7dc26b43697ae4bd0b3c1774ebec3ff961c4795ca2339b6bff1ec91204ba4ba8209d7cd2b798545efb7f43bf08352ba685e0bef1bcdfa38c9f1dca48ee1de26c7be34962c8f64cc6aad8a51de28c7081db07bd9483b60ab5139541923049abf577b17fca69f438f33b82fef8d6b863bf2f3c599fdfd1e223f17d724d210f69d9075624e3f5fa0a148759485e1e43e3927e8a5e1ccb80c96fb8266b152c7b5a07d607f4ff3ecb910f73177bafcbdc3bde807b9065e2c61f079456f47683f36889e994adf8bbd5004feb467df638f3fdca3450e3d16a4dfff6cba03cf4fe9b0c25bbe7a56b07fef44578a3fa775ca333fbfb75ed1837e4a938a3c479ce39763d0dc12a78a8b70acc63402f791834f5ec83de6ebd37f5c791e129d03f66a9a1d27cbbbf4de78db184343fa703bf778bc3f82deb7edfddeb8bd30ce14ee77f8ca7a68ffd1b63d43cc5a783ff8e0cb3c5b692e2c3729a5bd60e87e0ef767e9bde3e6de3d5e41f8947389c68bde04f096fcaba7f63bb17e51796dc518d7f5391f2a7533691f0fb332b6259f551ae5f113631aa52ff1e767eb2767e8eabbcd30552146d47666a5ff4bf44ffe8fdc2f08fc36b0eea8ec23ab4e872cae28f6056ef02936fcb61ebfe374f1b777f7c930fa6b7bbaadfb65817f31dbaa72bfc87a1a72af1a7d83e6fb5b32abf6c664b283f6358b33d055718f1a7aed37e68797fe4bc6fba88f84d01ac46f8b80c6052b3d051fc4e6a4eb25f6d967bc93d0819897d6285ba5f833d387c91cdc9ee27603c8c392f4f3729dec7d821d40d74075f0369bc055e2e5dcd14c4fe9fd5a8c9c988d83f1c346f970aabf9b7f778f7267cff7affefd2df616ecacb85dc1d7da7576f5df0efe4cba2d32e05fe808b46748bf8d17b5c89d27d9974f794e9ea611f6dcafc8b5546dd0af985f43a6bde29e20adbc5e078b1dadd87a866de3b5cba0bfba9ff81e169f005bba5e3f02f5bc3096505bb00fd435974bdc5e3cd861e060ed68d96b89f75ea8dfc755a54763a96fbf731fcab09947f038dbc1ba850eb5a7c7f63bdc15a8b59a97f793e6f107ee238b8d75e33d14e3095ed1cb7cd73eb2fd2b6d69b8f3b2cc6371b0ba9f9ef3ec351d478a9971de2ed7eb0786730ebc45d678afc57996b97dbfa739e4041eeb7a4f06bf213a07df2ff0eb0ab56ab5f132799cfaf995fca03cbf1773e072fe5cf6c507fa39bd1883f194f67976ed8edfb5a567a6cb8e4463541f2de5c2bfe02de2f935c9474643728e72927e4acbe3c531cafb5deae3d2a383758bb66964eeed34cca14736f8c5d8fba16eda182561debf4e5dc1e6a3b679533c8af302cf76c29cd822d93570e7c772ce953c41e6931a89f2635dcd89f92efaaae66a3f8b72a2afb0df835f8ffaa7595f2ac81785f8d4e489311473d7987f0e752f50bfbfa579c179358685b69323faf50cfd4a7476e8312af57d293fe77cb2e8b1b91c011bddb395b06b36f75a2dbfa7b96f7ead8e2c36d222ec4609b1dfcc91534479bf98e8f7ed9ae5c6430ee8e04fb93fe7c41b9a89efcd84b3ede7a67edf9ac373126f077f5ee23ce1fc2273ab75a99f88fa4cd789bfd4761fae7d0e9cfbb6b95790888b48ef1ad7a9d7255dd4fa69e29d6bd23fff153faefa4175a61fc8e7dde4cb6473f41cf61b311e20fb393e95ed599fc93e23cafb1776cf2305792ed4ce55ed7a81065ef3ea86353a1dcaaf3ee139adfc46eeaffa398f813bc5efde2f8187e367328f45ff36e703108b9674d36573efddfa3d156b3e5eda1ea56ebb6ddfe7363e166f253f89daa64b97f9275fd4d3214f54f6b137d1626def84dfb4f4912e7d13e2b3755b4ecef766fecfb6b3a8faf74afbbc319f91aee5e87b36d87d64afc5f9967e8c4b2cc6f75fd2ecd8ca02c3a1f53156dd3edf567c0e1013b05d716fe967e5bee279517da3d5b740f50da2c72e9ece56c863f9c4ee8d793dcf17e60b768c2fde21883194ba12c35b81e73e992be82eaec8675fdb20bd6ce3c6473fef17355f8e704f681d0cec8328efc8fe052e91abf62d3accaa762bee6fd1e2873a38571c07df3b2de546c757a5779ebe4a2bd81b40cfebd8a395b518c2ba45fb86f5b195fcf9c949ee11ec9c0235ddb2b3a57b219d3919ef45bf6079cfb91faf7caff8fb8afcb9066e76d818d60dfae6c9f536f7cf6d4eea6fdb37fbba5a6a1c776157eb013635d145b8ed02b1d02276418f3996eb2be3ed3fa5b840f939c71836a478c6b7f6b8fb43ca2b0579f47e4c1ae5942ef830d15f03f317630dec9ce9b8c789804582b40e3616bf93f42cb82d22fb9366155f25fa0ad126aef4a2e7b598a95aed35e8abfdfb87e0339b8cfd1739f5029649e94f946386aaf54fd5bf18d47d68b837a52fe2182c7bea64496bd4eadf755fcc1bec7cecf980362ae6faa4d944f4433ab5f3a1fdcda88e5448be20a9efffc6ededb9cd2bfb84a57720f627f810b84e2edaec157da4563b8c7d41ec5b34de632d28eaa6ec5d559d9ee93c4fe60f63f368ce25aceb34520d5b69ef9cc26df9ee36b9cff7ad7361cfc69fd49f95350544dfd1d978e5fa5a7bc97f51cfe17e0eba875f8a51c8b4342fcfed5e9da72ad1533dbfb4eced4fde27c632b63ffe415ea9a14f4aca8f1bf4c5781dedb5fecab7cd635be0fba0fedb5a1c538ebf497ab6e980ee6908be3839e626dd5729ee47739dec5b78b0151f7c40725c50961f5fc86f917fffefec1ecc95439feb5fc4c1c518fd17c778114713750ce49f82df54e08d5ff09ba28f46a962054ec6c15388b17c21e6f569bce8f7f440745467476ce07a5ce89ec4c57f161b42ff1cc486baff263e24febe268f24fe167dff72dc68fb83e17b94f203e45e7436f50b9de33d710147c289bd6586581c6322cbd157fc51686c4d6188b572c96ff29b2e9e3dfb4d6bfeca81bfab35be8c3a019d9721d7bb89f13e8cf138abc870761b3738d19c44a90f04ad152c82e700eb9c780c0bf056ab3961bdc8706e01d04e447b2d6b9199539c08f0edf8397b9fd0db0ab0cebda1a57a4313f26d08cdcd241bdea7e347f7e9c12f6dd482c6b29e836b5cf653865a0246bbb3610ffefef9a5781ce8a645457e89758f65dcac737e782bb90738d9e37557cb7c966f5b893735d8b6e55ab67c2df5f5358e29af93dd51f769c75f5beb5bad76242efb81c8672dd8f87c3f1cfb1eb8f629c833cc23aa60430ab807484b5b9a8b3e349349a1a99416bb2c9f1cfd8391e43f86987947acb54db14e449635ac7e353233f41fc2ddaaf9ef80af616c077838d9577b1d2ad97ed29ca37baedca39368e3b29c57592ea05c059eb8dcd7ea781aee5c85074a39789853338678d27f120316e5b7e43ba2352fb4d7409b3df3f7fe7a7f89b4190c31c71071dbde928d67db4457d8b8421e15600e3bb4e6419c37e4465af150db6fdcc5d5eace93c04b4f11e4e1db37c87d177b4d77ad0cb121328675487e6f201e84968507bb13e56b9acb476d4ac379db706cc4ba2fb8eaab157cbf5dc12668cc7f745547c017a9f0d982f3946f9feb3b5c0e963552822dc2e38ec03f806e34226b1da3ffcbcf8fc7c6fcbde13d916a0cb86cfd713347ce35ea3a05cdeb4f03630ef646f95b3c539ab79942fdc3c1466c8003e0c3f5e87eaae55d23f3eb49775ef8bccbedc3128f288f7227fbc8d7c7f2b98adf5cc853657bcd9fdd313f496f17e5c83b575dcb0af34c59103e7ad81f6bfeb68e42ee3bbfe321d44b63ef9f689f5d37de420f0f8be26399d67c5fa29ec1f7dbed8571a7c3ee2ed7e59af3063e7d0e3ea7b1bc3f936aaed557f308412faaf9ce241e27fb9ed6802df2b2fe90d54abdff1072a617b7a53b6fa53d595e6931ef31f77efcd7bc99ed7f3dcfa1c64b3fdd2762472ffe6fdaab5aae84b867b3b34971c35fe7a54971ed5a9e88c4c3649f1dc8e4495b4e12600af15e51ff2be4c9bf5eb3ac37dda96e4ddef1adc227ad40f21308bebfa15699f75e9a37cb159175009e0322fa97e1d9494ddf83bdbac6651cb8e48d4be48b2db9013559f3e9b3c48eec5c32417fdc07aec0e3327e7ed7786cf526657c127cde6e378ec14ff8d7bfe7390a84065fe53b9cc2ecd2f59cea1ce57c95b0eb40ae8ab466996ea94daf5c5afcd25ff40f64d705ad0168a0e54e85864f6126c54530974cc290c9aeceb61697a4b2146b76a8aef0a4cfca3ec0a1de69f3abd15a8557f5ab62fe2a1db3e26fc59c98e4a3a8bc77d953a92dd7f959505fe897e235fd0edaaa0d79aa928f00f51872ae4ee98b287366a43d249fd57da941794ea21f85c8567752c9af32bd0ab65db947b82fcf17fab598d38c3ce43995f3d3f83dafbe777a60d841d177c1dff0699c08fc91ebafefe3c6ede99ca6588c887f26fb44185d523a6f8cd795bf857cfb9def715945f6577eefb221ee28e1586657a2a7d33e88c5d2ed9de211e51746278d86f7a4ec954771245dfdeeaa97588a6bb1cf8a736b5e0e7b06ea68449a756a759baff958cbbccca57211e726f0b38bef69e1a6a37c6fc37bacc96da32aaf83df643fbd523f97ceb86a4b7b4fd1f71349b670dcf921d9d495fa9fdcda123dfd4df6d9216f52420ffc3eea4fd90f53ca251c8b3cd7925fe693f9e98b51ac7bca45779dfe68b17e58ab25d8faaddf35e5fe34e53eb0bdf955b4d6bf7f136df786b347bddab30e5167712332f2ff6d6781ba29aff3263a2ae1f1eacf2dea363fb75a17fb8d725d45d6d1588d36da6adce754f5b1d4e411b3c35ae9bfd47dab3aaf60f3d5fcf09fde9d72add7787b97eccce9b0b4afa6b94c17e6f6bec5bd8a89fd9fc646a682fe3fb6b2c8734e51be3e5ac5dbcd53c5efa3b207edd8ba85d81f48c6faebf48b50ed2b1c330fea20adcec67d285337bb9a46278b8df4164835f7ce93610d604d3bf99cfa14a1cfa79511bac639d09a42c475b07da49343e02d7efadee214e7eb6394f76ff1f09e580ae1651cffaf19c770d4492388f7996713df49f8d9bbefdac7606d9f03572f1af0067f135e3857f5ddc670de43c349a3adb03784878eecd457d36cc1f2c55ebf6344f5bec384f71c16e7116758375c3d1b611cd5217b7e16e5017db7e9a3ae503d27e1fd691a15cdf35f532cea17735f05defcc0fc34022ef83be6283ad0d78e3c6f1af84ed3e058ca98376af48b600938c417e6938d0cfd141d10579fe37e8fb562e305e49d186b1869581337b63a7e77718bcae7d228d72fe6f88258cd9e92b82ac8b753e0d9b1a943bd6ad378e85b8375ad71ec2a36f5a8dc9b89c1de39abd8c6d935309c37b26fd3d548e89fac9d857e2944fe161b17f41c1e1bf8550cee68ebf69428cfc4be32651e04ea233ba4bb84e9565dc8ab5b0e8e93e2722272e36338f8611a0dbdeda82e8efe1db0cbd8de841bb7b70fbcb4666b44aaa3d0f5f6580f17f8bd737e78921ed4a174f0239903961bbdef63bab7c2fef9c35e14eecbbfab7982b83e32bff299b9fac87c0ff0306d4ebf4b518774424b65ba490cfa50c33d7bf1fbf595e1af0bbf1b232672fb6f3686feacfc86dcbb97bf89eae3ace838ad58382bfe2cc41eb6d3a1799b6c4ff43e8c9208e331696864dfc0579c3b45a4527cb3ad9678452f0fbb964ee6e3d33c6cdfb30adfcb9ee6383e91b3827e435de71e19fd2286672c7cbf9129816791fb979963fb487828d4818f3fbda777dfb3d270a97d9fe3587d53bfa414473d71c047ad1751aef790dfb371d649d80db268dbabbda7aca3edf5a579e1dd16759e5378086e1b95c8120d7a96117b86f646a2775c1b9498fee21ca94d7398253e9d1fd02c8d59ca9898f01b1d732bf0d9e9908f9555f528bc6709f6b314fbcc1b628f46ba270dfc01c7dbf3f8568927191f37ee233387c99f89caf8d03d69c2e7a2f610df3b366f97fece5bded93ccf6c2e138ae7cf7a57cbf8e45611b8fa9fa61c1529f703e75e6225b4d0bab8a7f0ceed7d4be48ba93b4fc045f066442ee5816765504350500c955c2f366ebf13155ab2a2f8c8fe502beba7c7b32bcd2181b358ad75dfebd8da62effc5eae7bebc53ad6d784efbcefefb3f7e8f173b52fecd5bc6bbf0f7a3f5723aed7707a27bc4cbd3c419f3468acc31d206e10c6b14ec150437a5f76ce1be807c1ce19e909e970f0cf64dfbbc5c6fadb647b24f7e21415da25f016c7509dc3fb42a37f8b54c053dafa9e9d0166049d87ab6aeb50a1ef35b47862a44a3c1e7c9b16fdcc573b29d1bf083d86396247f8eefd1a76adc3547576a13bbacc767e317d46d7d9f0c72e529dddd45bdc4aba11e7a90da22e603cecd8dfa18bfbbc52fdc4eb303e609fc8b998eff3eb6cf87667cffaaaae046e7c8b0efb6445f847a72ab7cffffc66f1bfa5b6de186b1eab45f94cf6fbdc7877fdbc4fe69c86072559979f635cda459af769ecdac7fef329c4b28d6c5f9ec99dd9d72c5e974c5b7a8fd039407d0aefb5fb3ee33d44881cfcb57ac3f1e11e505e8df61def91c6e874baef58abacefced70f6751f6e6b84d8b41ff17c30f7af19ea5dbcb376eef148ff7b539b0d863ebbc87d113f5f6b631e1ce48bc3562f4c6fb1234e412318c5f86d3f80e78c8578a3f7230877e2ee4e1634c7e4bf822da8834769899efa304e20a43e9f31fbf969a3d77d2df6b4537164edf5a650b7da1384bc1066ed6fd8d72ed8cbfd07e2c45e03ae3d0e86f7dc4b3a8eace10af5ba88f9b9feb67d1d6996cb511d1f7fdee3c090e5616103af6ac13c5d54af8f8ea40e241f0ec1afa9e1431e2e6f0fe15e29c01f39df69ea2fd0a4a9e39f47373a8f3bf694dc09abc077351f8fbbf3cdfd0edef63f791f943c9ee82f5afe877e8a793e76f6dfdf2dc0dc6df1be7cfce06e3f22e970550cfe7802e283dd73877887393758f9d33d9cfb9dabf846effbacc6664ff94c0ed3dd127a7d569a172166ccd0b895680266c71aeb8e646d9d5ffb5c43de2ef10fa2699a345161b60ffc033a08fe759eae78fcc3434a22342beba0fdff72f26c6e7af9bc3ac4e338e568490930f3443d7e6e8124dc8f40c7e6b62734b73a23215f82bcd97378d208dbad0e715f29ea7f9e9691a6916123daa3217f0db3a8eb281fb323836e7ff117b43ae25743c9bacb9131bd9797a00fdfdc9f452cc3de8fd131583c76c78be4ab53a987ff52c698fd318a115893ea7076e37379d9b70b763988755ecaf40bbde4cecc558e2957bb3369f3adc59d9a7cefbd501d65be0c6a9dfdd27fe989fdbd5cf89be955d832239c4442f1d46a7863df861be8feed33aee2eac75cdceb428d75f7ed6db123d6ee3f60e023dcc199d4d738e857db4ba70861c83fff752db0186f890f6d7ee82afbbcccb6fd1dd047aa0768a857aaf67cf051ba889b79ea28e68078a7e09ea035a5fb28f669fc6157d40ce34f0b267852f3b885919dca2adb68dddec1c0f3ba7705bea57b22e29f13b8ad1b8c0b917adbda4eae3813d631f03d7fec3fd1e0ccf137afbc17dbf079ea56c5ce7c9f0bc500ea569a4f4bbd0b71cfb6061adc7ff87b97f6b4f14e9fec7e117f43db811434f3c1422086ed262647726900615d469e3065ffd73d55a55451560929efb9ee7ff3b986b3a024551b56aedd76751feb982f8d373574fa4968e8a369693632e3be82f102ba676106080854497503d2d51871c7b32b2064582bd5615f0e718fa1d7b85ac6abb91d8be965bc4fb7981f479e4f65a52162ab17fb8ae669955e82bd9bbc2d6a2fe1e6abbd57de3ace72c09bc22d9efbe6da7a5a22d69119d43583bf08d7b77aacb357519d0a797d88b82cda189e1d4a0cdfabece5a3a995e0fec3b1b784d989b5c7a7786f5e4f7987f9ad02ae4d155b60578fe845e59df8c7abc76edc8210ce63f5315fa59036dbd2fb56de8df4e13ee7b637db6805f400f30fb4dc91c15f3d693bdb74dad41d5ea5741e739ddebbd44cd0e0ffb7e497111a748fade49ec27c164ecb494749e7a0fee924f166da795d0cbade50bc53d7769bc52f485267db717eeb82dddf465ded3b1b7415ada497e4c2613f1ac7eedc396cf2ecb03467a01df0deb192afab9c4f7897e72a62b8f9d222abd2a82ba7459e672bcd871e1248a47f4e92229cd0dedc1d3e0591ae733efabe2eefa5a2ff6bd0af4bc7a0ed962ef1de3f1e263ed3f65b1ef296b6bb06bcc816311c77de8517b4cad8cea5f73c84dc5b8919e27957e21bf271b9dd8adbb30009f13e5b76e63bdd859498bd49c6bb1ef5ce2b1dc2726523d45e673c5dbbbdfdbc4eaed5ee31a32de43fb7f40cf36ee7310b08081f716f1defb88020775af71fd5ee0876c0fade1b7fd5b6c8f7f097c0c79afe4f3a638cddcaf55f755147cd682fd0a7891e23724fde2232c07a7a4aafd513c9e23addf30077b3f882046b0e2cf0dff638fe74aea3bf8be46ffdc9a4f34e2d38c57d73ea9ce383ae761941708cff17320bca3591fd238ef3993ebe32870f99e0bcf37eafce8f777f72a7a7c0e3a78245be75a1f926a531ed895d21e74f869695f85319357bc47cd1d31b5a96d1bcc33d41fe87af8dfa7432e1b992c44d94a7d50408364eec74894ad5c36e333dc0713cc9086c72cd7049e673d27fed73ed4451a483e5436877f126361cf723f29d725a15f7954321ffcffc29f4ae71ff3718d53c6e229426ef49dfb571fc493ffd03f0aeb25f92f4cef18ef174f54a675e9c9dedad794d711aeb1a42733daa2f9e5e01fb3e6a758d50a4a9bf46c3abda824b2ef8f69d248fd88e8d99c36177baf24f2a541a31bbccfa63ebfdb252e579fd15a3d6e4b1fc4f9d73e583e76778c8fde2f8f6b1f42f9ef460d12d5710c5aaf5735d669a3c9b1ca4ddebcbe790fdc82fbe2286d405db7bc9f07a6834da0d67171e8baa739d776bef0b775b26d6c0dced14ade2bd11fdf15ef95fb62e4c46ea8655ced236fd0ce1cec9190f983ad5e01f8c9bb41699b03464ff735d14396c36aba5d9c6726bb774edebd8ffb8e669bc4eebcb5e86fb2e7fd4f257e063c56b2a7071facd7421424e2b774d29f148b6ad11ed08280dd2ac6a6b8fc2fde2d13b09dc5f590f4c831cbf7738fc48699bcd8a726eef97b35dc87cbe487fd3222728afa7fa9ccc1ba850b9155b135d84fea715b7e62bf7fca1c75b47fdd0c6ff65839d963f1ef5e2ace11deaf0e086f3ac56ac2f503cc41c65891f0db2d68fbb43fe9032dd4d0b6703eebfdeaaa0b94fccf62cfdbb1f2355fadd754f25d84a5798f56d1a5dbfe20b6b567c57d5bcce100ec8f0e9be377cb3ff187763ad1c1892e1cd21ea4809b3e9ef712f80e66b3fcf7f1da6feab33cce695b03b5e6aba24e51efebafa51817c5f88ec82fd6bea6c6ea07e1d7d7087c462eb16b10ef9ccfb93e67a22f418cf930ba7ba86fb0fddc115b20affb9e8831d136bdf1757036a14013ddcf4f290d4cdebe67fbba745fe57804eb65c869ac4ba6534c30cf60e3fc63fab2d87b9c9fa9aa511d687e10beeb4ef759b091745aff2bf56ce7f286e1d887d647f14eebea4343cfe372c1f79bec19dbebc8f7a8ff4307bc02d18fc36860c9ef5dc9f8f0568fc8f8e2dd2a947ace98ff18060ec44ee1fa583fadfdf93185de32747fb1e74e23eef7bff367f1ef5bea97b4f4aa693b67a9c61cd82bc27a509965c9f9c56939f84dd63681bed0e2b77e953351ef4347ce84d02b86bc13fdad9d367143160afc6229c87be68bc804df5b9ba7b6e9fcc0fc315f9d992e7d24563595d87984ae883e1e22afcab97db9849c9823198be9e6ff64bf41d7c735bcf3fe3aeae04cf63735feccc697e7d1f251dea3c05dc5d43e9b8ce7425fb62ff24a44fd74243eafddd7c151acb324df00f2c545ec1aa916448ef10ae39a276e1f21469f54833ff82ff44fe99b65be58dc1fda382abf26cae363d263be81b60c5f0773ea5bb876fa01a1af936f2aa19a09beb71ded5b35cb52b550d65671967cce633d4fad5cf6758d9d6219cc4791ef5dc19745e6620c92c0d09e03f3164f5e9e7ff83d2d0ecc5b1a2c8fcf13f323b137693a5966ff79dd64ffb1bd5b325b167150dc1272cf2f93fcff7a9e2c0fff09cceb6de2dd9260f97c12fcd14ed2d34fa15f9c85f7bd07e6ad3fd92c2e1dbe33885724957e8c363aa3c98cac37f4bc6a7efb12f9785c0e94e6f504303a1ab92363e798129ee6fd97791f1d67d15799df55f9c4ef46f532eb813ea13a9758bd15a12febf321d4fc7bd9833c9fdaafb4e47d3e11b7c3a23914ccde69e9b9c57da97a9a804fd51d7fa8e9fdc030dabbe30e521fab8150b705f149c469907332c45a7f8c6d0c1bfde5f5e75f067f7e601be99d9d15c0641ad3781ec410d8fa3dc1b52e6c09d6a713f19c8a3bf34bd67a7e37d621b1151ed4b955d1aab8afac5bbef631ee31ddbb056090723cfbdbb36d98709f6b794502bef9e199e833a990bff26bccf966edef3446127e07a3cbb5ffd4e5cf3c7e27f784ecb9cccf90c7adc6de7ddd99ef2d5e17e3a2c5dd2d6f793a768bb8f6ffb7e3aa4a740a0357897c0dfcddff9dfdc1de3744be67e8f734d0e1fba8de564501f4e3db524cdc32b64c25b5bcf3dad7f6df97b3dc17c964f64af48513bec0e7d2a1f330fafdb5d47751a09379c2f3b16f3eadfd5e2f26ebe4cf7bc97e4e7b347bd7d4cada3c46e2091f809fb8f6e7796aad06eb606eb16f033f32cf69fde7ba9a98c7e6abe47cb8d5da9f2b01e855745d91a7711f2df5b35c43c8ddd08539129ec5787afb5d424e2ed9b35e3c5e0cfc5e8fe5c91fe3b250d6be79aa7508768eff4cb7013f95c56950f0c77d6a9fd1fb9fa84f6b77b22db748c6ee616a88dfb83a211fc1759a82fd3f97faf0fc81df98cdab957b8f98a7c5166c5de027b93807f26ceb9c09ba0fc678f139363ff24c1c8838878037bbca26c6e937d7e7eaf9b5ea41251c1bc8a9a6f9ff6613ab16d70db07030874e9c7ba74c6132819e0be899d1c2bd379e2f444e867dc8355723ffa6d5fbfc54e70918f93d0de65b3887985f46e817622ef678ae849023713bc67ea124d5ee2cbd83d9a4f49c09b2929eebe187fd323a512cd423e4982eaf19d1e9b027ed42a05fa947401b07147fa76b89716e1ef7eec0e7126b673956575df3c6dedfca1942bd999f391e7b68ebcf8f73a9d9bcbe9637f2fa35f568267f3b7c5582cecc6aa9045d117904d8615dfde9306650d780c456f13b5a421dc24718e480d71e19f8f7da177d0de63654bd2bb10142aa2786d87b96e88a4adc77686c0c72e9aad82fce585bbf827cbfa4f43e529ffb7bff9771b3ffdad725daf4dff37575fb06b0b7a849c626f216e5a2fc5b4fc841a26bd7b23165ddb73a76f8b0bda774ec1471e07d30bafc2c87c6add75fe0d9924f0cb06243f87bd0c4b465b54b03db506e52bcaec62dfb9fc4ebd016e339c93c7ec76276e2bb6d43dfa681c3314c853d3c887de2657e4bf40ac461b7df940c7baf13be3b3cc03e8d3dec8d0b75f202ee97f45ec44f11c782fb85bf316f56d0a1eb6b478e9fc2c73a346824e7dfc5f62525b46a1489d8f3a0892d4bfd9284a67aa985d86fc0ff0107f4263d6bd7b2f831aed77f993324d05c47bc7d7e49c645b5f6d3436a0c0f61b5cb66dbe16d56f588fcbbd36fb7427f5e10bd6b5d5db3a5af6d251d95f6824ed4410f7a5f5873e80f843519c536f235f41100edd03ebea39ee319e06384dc38a21763ff8e02f07a98fdfb362a5edc95f6e62ef51268975d5fea504b5be3360f2aeab302dc0d7b3cbfa481b3257c2f29a53399c49bb447645a42f521e7deaacff450c7d768beb7a64c0cd4a789fe48ec581be37105e7c9e3e292d2bca3a80ffc324ffaf35eec43fd2ed6e9222e9ec46f214fb12c76d152bf13db3fdebbe534982beff0adb46738d85adae97d3904acada4aaed09c08d433921e2f4517fb37b417f4b7484fdf035ec694ded95d077a09e2d554137de244407a7fe0afa9b16f75759aa7a15db0f2237893dd7b253983ebcc77c6d72f6c8b727aab98f967a7f4df4185803d0cfaf093917cc1fa4ba3daad7927b7aa981b24a5c7fba2f380ef4cd318fd417cbf1dc626bb05ffb33cccbacf473dc5f64915560fcbcfdaedadfc07af1831d62566be857deec5f39bfc4a57b445e7ecd685f737236f2a9a16f087f20fad6d4d0090f2fe5fe37f9b5ce27f6cee946835efb81e2bd7a1bec2be1f4a5b9ed3b30b8192db4709f1b3aa9b2263455617cd60d9c2aeedb074715bfadb67f13f4f91688dfa77f406ebd9f16226612ab7be9c272a4b99fdb58d5766ba4ab36260bcee19f7e0f9d1bcf1de05883221f75941eb1c5686f7bef09f42394bb9750459e1fbd9cb294e862347e1dab4f1f443762587c91e5a950ef5b1655ac6af0edb691641349f71dee598e1fc605085d639f1ba2cb25fd791ea92be85f6f5be62eb20a564f96ad892e4d680a7ae13b60eb27d5d35ed0e58f5f6060635c2070f68813f4d1497b4d2c528ae1eb70dde165f8c7ebcbe97def148975cb4375759856de7daa26a7165e7225e5ebec93de87f0fed3efe0ed94fd5a8a3274d7319f1a5fc25124daf5d7fee04479d85eb20158fe3fdd8f691955648ca4e75e56d6e08af82f27ec99adae089f002cc950352bc2f7c272d003fcf29a87ed214f537dcaa2bd93c7be97f05e4178c670aedb360ed203792c8ecde2e734be0ef447f1b6a578d3af48f5683e3be229bda9e121ae3168baae4bb9a149d7f54ace1d6d5e7fddfcc91c243fe4655a0c7e51fca75f01fa463f7b171947c83f90b1b01fdfaf0d888d067eb83e91c778b657507bb922b626e6aa186915f9e63635004f56aa07a771a8f3daf7ce2191f716d16fc859811ef65938f6ee9187723e045b7a7e8c30578af5eabf86c41624ba8d5a286b9a6f43f3aa00633e464cfc3854cd536c3979a89ea0962258e68774ec5e93fbe132ed3b454864ea7e466b4edd4bd89f5dc87d49d523f2f8838c39f5dd4bbcd40ea9d53bd9ea3c8faddb26f4e7bfa7815344fb19d103ae6bee77aaaf438ef27e46f143884e073c0862acb60576d032f2c3c3c407ff4a116f50eec7a5c7be95e8a857c2e351a740fd2bf2c32c2cbd635c2610e7a332fa18efe74ae49b3bb46f6ff97b599cdec9f9c2fe2870ff3a5820beb3ff94457e5442eeb7a84f587a168edd3b1d1373840c3d8e7c6a43031ea2ab84fefcb082f51c0ee0db56f57793df7f8ef2d5dbea365a0791c9fcb53f37d951ca25223a329dc3c4c88ef68bf27f5486fd2d60ae15ecf9c992fbf4c4fae48ce5e4d8169903b159101f057ba145bdd8babd8464fea59b271b4df8775e8f2dd6af8a718b8e7911bb4b186f87becf8136310a7ecf2faab701b6b8ca736953e93dfcbc0d9f23ab50815eb6bdbfc4f5fdb51c5e7eb2bc264bcf249f81985f06b436e73ecbc0d2bee26f84fec85a9cc2d2dcae7b4e1175f6c8aecfe284e656835f67699fec07b94a6b5f2376f59dec6b3b8e372036cf312ecd936d99bdd4ca2fc97ef6c31ef57a6bd5bbaf0d7d9194e63df417279a939c2725d559693f96b53fbfdba3b48897bab35cea9b581dfca6f40a67fb75f37c49fb697f5a0eaec406c25edaab734874776b7526b6e6b4cfec9401622c8fa3e3fb46fcb7a2bcbe6517ecf992abebe07089c6c539a4b8c953757e89fdde25de0c9e62ab3847c1eccc7204990e12f77585c568d7a5a986c17c4b74f0d4d055b23ee88b72347b649ea3b153ac97fa14ea11d43cefb2f3243f34b3d521c69b17b4a64149d5e70ce6b3d4ef919f522ccf1ba737c0e2e843de3ae10d7fc76a01fa10e52dc778af13597c25bf13d9391967b7e978779b2c871fd3e5f0f0fe629fdedfec235d6fb45980ef1667321f7bac5fd6d897e5f0fe323bbdbfcd8eb6a17cd846fe34376edadcd849f4c1f3667c56037123bae81d6c02a24fa898f34eeb237ae918e657d70307b3ecddb866ef80974e7d679043807edc581d5491559c69de30b5535759620d8e602ba9a1349fdac7756ce79dd5719ba7d992e35a9fd6be46ecab22527be0fb08d5c12581da45538982f967e368ffa3719e669bff6fc669fb19b51ee4c7ee95ecfd6596ad540f6c14dcd71591577b94238dbd69e12d7cbc622dbe33b0c7bbbb6dce0ba23744ffe5f7cd0dfd2df2894db9689d1390237d67b7f635c827fbfcdb167ff86dc7465cea49ca11a034dc45afc778ef16c97e5eb0b3cf69b76f634e587f27c47ec32c2e070c1ba73e43b42712f6667c7a14f317ce1cda21ef10bfd8dda606a18d6bf6fe669f20b66245c704646ee3dbb19fd6d3ac22f7ce4ef63823b6ba36a7b5d5c9a335336fb457a1d057cb1a91f7e6e4bde17674b22dbb2236d76c79cdc23bcc03fc68448f59fbf323f23a5833a411cbbbc5bc269ce6239071c6304e45e6986c17388e91beadfdf4ec08b14b581f8e81ab5de2e595d7674c0dfd9cfa0a9d03c530f1bdddda873cbaae31447fa368773dbd6e8657d1affbfe76c8661cd3aeeef101b5708cef2ff51cd601d66546d6a9bfb600339e7efb91f061d411815e886c1ea16c7a71e89c0ee02b0c0c279f2df527db18feb60d7d335bea1afdf776b61c025ee1ccbc6e589d37fba6f06d44be459b6d861f8446680ec466063a6176b30d724ea8ffc19add886ef0fe629333a5cd96e41972cf81d0d4a36fac6615ca9864bb607e6cd06f6cd83f623b8f708c975936a9e0dd7f03bf304e59781f51bbc6c67a9ab71179f7d39c7c9b65d3772fc873db19cf351b5e261bfd656d79db75a5df094d509a92e6621bba136df44ddc770f4ce6d92f335c5ffe37f01822b7f8dc593d62a282efb1a655386720831bfccdbddb967bb12de8ed20f002793d049f1759975cc024a9e686f8f7f03019db77fbe56960bf0c8fb4dfca21d92eb29f5b259b1bbb4775c344f7fb8b9cfdb87c7e20336bff548b56e10cdb84562b7e1ead11e8e9640fa6848e284641b8855ce2a759053442fba2e9db19e4b8670aeedb8c3c43ee21fbadd4710ee40918035891f34ef7c4ae6a3f34f001884dcf405f20747882f752dafc4de6c9fa11c17bc95c81ce6ca433786e57219d35e91772c2c81eefe33de6a88af3986e86a0ef84e54059335dcb18dea83f99fd5d111e1979eccce9906b09be99f11cfcca30ee43197415f429e1f731f869f9f9c7fc3891ef336c08b64794a696324dcd362d9abab569ca069a9a7d83a6087db7e4d556ac458373396b9f0de1191647429a7b24373bce8d5bc4e5e043e0111be06974cfc3ed48f429535940fb0974d773421ed96b05f81a7ad8777bc4ce42f97e83f31d0676ebcc88b57f91e59d6355c97e1ac3abfdf29c4d7d3a47e3399b6d863ff89cc9df749dc4e767c6d3553a131827a0737f86f83ac64752a22b57a017604e94ec4780d889b605bf5f9900df4b4d4e9380551559d093e4926cf47bea3b4a529a80dd2ff82c581db812f76dcc95b1f8fb7a893510624f302ef05dfafee6f34d3940e430c4dc80f7037f51d859dece1a792ed33de4211fe2bdf761bf5c09fdfe07e890c8236b50467b623b006631f9ed77fddb2e9b5674fdeabc64f66ee42344c6199c86b66c5fea77effe97ef7e986f51e750b89790c612dc20c2f3d2caa578ba78646fc7b34b640db6b4cf859996d8ab6abd9fedbfc877ef47beb38f4768ffb1f7b4edfede252e0b05fae05ad4860e9c22b64cb091637fd0a3b1bf6b4a7d54a9ea6d22f59a511bfc18f6a97c25b2d08298c3dd1ecf7be11eec6a622bb472e5990de095851a2e39bebbbff6bdfe749f1661999e5c3efe7c608f5bbf75e681e1dc6e0ed8cb234f45dd33a76b51fb291af1a8d6753687257c375f77312f87f090518c7827a7753087fca5749c1e4315f2cb4aecc384bef478ec14a1ef6a36e4d4007e273f87e043a8d7f2478b1fb7be7d76eefcce7b675faf8fb88f7ec0644ce8d2db214ed090e5a80a38c064af3d13f8f34ef09722ce48f3be59e49baae85f7c70df28eea7e785e0efc51cb61abb18e6e779d72fef59412ffeda3786319f3af7c29a9fd6fefcf727e3ecc2f2f6125bc576ad3c9e7742e445312f62cbdba6e65c090347a9dfe1405c7e45ecc39746ef5bc0921e76d0ea0cfcfc02ed2e6375a0d4fdd7f11d6f5671c77c35c0cbae734458cccada49368ab45fdb83fcf7a6b976b7220ca2e27523ff2de0385fc0ef6b0dfa713d16ec5df31e2f20bc90ffbbb9dff3b82fbe87ecd98adf13aab763a89e7eb0bdaac77637f1087f7bdd08fb5435bf83d1f18acf61a19a5722dfa37a9fabc827df372fde704e2f61a093b344e6f5f09a50f34975c6e7cc1b0d466f95ee109e1d6f520563ede8b7b0c7e9e19df635c17a07ad887cb7885e8e343713ce28f236abd82695d6c993319f4817f65bc0b6b0ea5c4f91cf25a5778a7c13d7575a0329e7f3abb3dfec8727faa19beb7d009c2e093fa8f16e1f7b5e734caf669f4129c7b9deef89559fc5569cbfee9db915cf3dd60ed4e335b18722cb392d80d63e047e417839f433aedff759cf40cbbcae3ffd867f6ffee1bf3e77dcbb377fa046cb5c985b0b1f8a634b8a313becad9c0af4d2e81d238e2fc8088605258cd5ea532de35be8623f98d639a03cc74b8c7fef1b3cc0e4fe77f701f8eee6dffb06187ff7afef03ea04ff263d595e2eeb00ffd27e801fc596d6a7d5b39463964aba04d442096bb36fe4ef50beea817d2ce82a4426dcd7321d7fd6b78aca8687fcfb9a94de760dfc19fc1e078ab3e84c0dfd696ae85a3ba70a3060bd25e2bc21a6ea6a774ed4e247d495d339d62f982fce9ed3ae717f4e73c2e4bcceb565623fedfa5ea82515f360e57ef8833bb109a74bfd10fab792d865efe8e3801c5d767d52d1eb022e30ae13999ba611bb8fbefbd91e633fd7f725f937bb7ec2ebdb2e1c4e1197b8ee55dc4d3729ed8deae929c835ef9c9ae41df935ee77f78fead00fa0370959f745e012fd87e8078bb83f3bc0f71aad3dfdf44c267df782756b7a1ea926cddb5bb5e8385a6af7d41a607da965eec356de1a397fab73e778c617bdc721ae6b9e43d53b2df6de06b0d31ef67eeea4e303b12d63cb1bad8339d4c844d4de697c4bd7371cc4da8bc7358fedb563b9f6225f4994f921f48bf314734befadfc706b07b529715f879ac2d04f73d15f66539cd609e8f1c3eb6ba51f092dd73ce6e3be50f37ced3fd5b9eae41ee334e8e809df7e0fd6c5b7e6ebab453a2dcd6b62ddb489983b4e7b6826d5ae55c3d3b9d7cd5a9ece5acb61835ff51e9f9907764f335f92d03ef8a3e59a9b567cc636748dfc26d6dac83501e63d1dd1bcea1796632ff553c893beeb25964bebb386b7f6f3a8f37956f1017ab4f18179a596a910dd9bdc2fbc9fd1ee5cb0859a3d138bd6bab2fabf65fec0eebd66be0a73b5306e78cd224f39becaeb43f8ce19f21be10cde200ee7bf7c487c19f928d895c5b4647c4bae57faf49b3cefdaecbdd7fe9eb6bf6b5a0eca6893eda9def0416c46a7ba66803963dd986d06b6e4e44d9e73973f2c56a37262a4b85e8177ed18cb4b8c4fbfab87fbee19b0a650a3b668ec55269f41a2a7436e9cbb647885e803003e6e70dfadc2d615c63c48df23d89bd09787ac6d3f3987bebba36b3543df9256249b6c9f941ec84df27d69a0efc2c02d16c21c04dda7eb7b0e357603adc5a3fa0efcbf043fdf7dedbb98afb777f335bc57bf4781a34680eba19d686d13f893d715d567b04751916c0627d401f582ed4dcd7f616df2c8a2fb36ba616fecd2abf8def9308fbd78eea45e9c0d3da4ee8528dbf211e2a0b7f64b90bf0d5ed693f515d087247ef07b520d0bfb85f6aa7c19768c0d3e418a39a62b34ee7b84dcfb4adfa4feed14050ba88920fa6f8d99ca6bd3b6988b3e3fbe975ed7d8b8a6c615f275a1bed4ef5d010bd5bf69f6d8bb46c087280628d205c69aa126c43c472ae28609e376d391745604fe67b2770c894cfa740d69dd4f1e97f3221e39bdb0744eb46f34c8df69b3760974c395701e441e95357814e8861b81b689cc2cd3eff1b7d6b344779075513e1fde33ee915e269f298126d1d74274d65318cc1597e6d1da5093f5903e8fd12617ef3fbe577a93163a6404faf3047be2649b1fc2386edae4a3a27df450460a7e1ce1b96d4868dcbf19a9ef300c81d66fbfc657418f12ed2ae7b12c335b728cd7dcd636ca8ad6b5d5180bd2bc8d11604690fd6ad71f0fb32e7db4f51b624dfc2fd658da7b8665d1fcc626cdd39ac0c6d969f2be477a60de9299bf84dabe5f42fd38e187b13a50a6a5b9637a35d3c788fdeba8b86f11f82712b106fe731d067dd65d7482f826cb56dd1fe8d48d75792cc3fe9fe00f6615612f8d18f0a6a11fb1a92ca8aeb522bc01ecccddc9b6849edc028fc07a90d335e8dadb4eded9a449f792aa9a749eda3a3dfec7ea3ca86f11fb416df49cf2a2b33d8a2eb175bba42ac47f774969ee110bd03b4506e4f733dd6f675be0c3e57a9d6db118d4b1b9afbb589d631d1e8fc7694497fa47badf37c6eb254672b2ad3c8f4bf7c4fce35e303cb6f6ef41ac07ec53a8071ef4a765fd8dd372704e20677cae247d374ff68b96ac1275b85a4f5d9c6355bb43dca1efde53cbacb09e8ecdd13d26aab921eb8a3a5fe7b84d3e02e7c5bfeb4dba7a8051c0ed1b6a333462009fea41ffeff0a13418fe896e88f56148efab35ad9f9aa850d73582dc7963776ac907727eee2d99de6d4f19c30f29266868a7c88f944e5b6cd97876d97a5689fbc3d6de53ccfb0edf12c50fffc4eff4dab11e896a7e442baedb9c3bf41a2a5f057a69f04da1e6aef37922fb45993c35f42268d002d216f42b8e67a6d2a50b7dff2c8d89de1cbdd1dfdfe0f797e61e721ff416628b3df718fb2bc2ebe16c2d243ab966f397e1157ae0406ea0f7fa489fb00dd6377275e88e3b3de6c99d3eb3b68eb76dc6acb90feadb3a5dc36f61097fb7f457be4efcbb789c65d431872e7e80bd343afd8faf2dded1fb824708fd62eb3e1fa0473dce9f1948d7a7e5b1c6d07d84e54b71ccddb67f81dbcd52adc767f7cbf925757fb69a8edb580e9fe4ac89f93ba2be58e78870bbff02f17bf5a98ecbab51f9bad12f5119a12feeadbbf738f0507ccf2bc5a463f2bec6ddb04479d8cdab1f8ef1f0bd5139a1fac31b6004d6ba4052f739afe5bea155e827f0da7e84c7e3502c67a8317d807bc33045895cbc7d6befdff6de29e67a48579d56635fcac125e13e47b227e10fc2dbe3fe50ec4173495ee8bd98b73f78d0a3ff1cab832bad31fee2db9c2aeea7f728709cb88c2e60df8f1df25d551397252907fd44f5aaa5af9531fd26ec97dd887b8dd3635cba9794c6b303c32136501195c539f2ddc4dee8cfbf8c615eeb52ed1e5513f3ba894b535d83ce30a802c3c69cd4b1d38a97bcf7c85cb9fdc1e769bf1cc8bb137b73a3f3647293f5331efeb0cdeb66665e37c2b8644d2bc65bc873ec1ac6b6bc5cd603b53c2d8b3de2a0688417560b3f0579945a8359dc4f21672a515787c992cfe332ada0b75715e2bdd9aaf4f66e905fd9bb12c833fb38820c339e0fa9ea6dd66aa14cbc531698d74bb0cce3c0bcf5a785f27bb27c3ef1e7103f12e638ad72c0d00c97bbc3cffbe13cd94705c5a83bfeec7d354eefbe063cb0e16562c1bf8fb6f1f0decb7b599c626bc4ee677f1f272fcf3fa69bc37fecb1a3be6ec4e777ff99566c3df40fda1f6e608f9d7ee43bbfd7c182d0691156792fa4788a49ddb78e7e9756bc5bde7632f6f2c9527ffe65d67440e7ff780c83fca6214ed06850127aa39836882be65d3793e5f0d97e19821f41f846714cc08314682726ba8c4833e279e7efe667cefe615bbd3cb5e607ff6ea6e05b20b468d827614c5e7bf8baa1eb649eaa6009f5e289bdd513bb60f4aae0f9d823dd36b08c2da233f13e40be738fd51be6dc5b83fb5ac466845a63563f4c6dc13191d51ecfad7c905b4ae4d5ce65cf127d53455c07daeb46e4270fef050ccc4dabd7fc360d1cd0a1315f5af613847daf4a1976c18b1cc78c55e76f882bece7456a42dde139355a36c12eae3a75b8fabdc6690058b01b8dc8cc7b14b8b3b64edf984ffb9915eaf2a26da508787df9252c0fb4f7d6e1cc72c457441f869a6acce3c718959c07d08a679a1f7cee53fc0e628ba562deb1401fc33000bf73d555df6a1b79be56a126420dfd8f7cb21c5e6ce80daddf5f37cf9788ecddd8db4ccbf9255e0ef2781fe56bd54c84fae66ef93396f269e7a1af113aab28bda09d46656a23e7b68d4fba190491ef8cdf8c41673e9daceb89f1c6ee394c58deb3a1efeb587c8b2e8f724eb1a82fc8ef67e3619eb14cbfd1d8c9233565f109ee0f6cc431b146a2d4f278447d04818331d0be726ae73990f5fd7822727006f58ac31ff68b3e9031c6a4353d8bf99d1331266be460cf117bad238e47e4d8fe519e9ffdb93feeafcefc8c17258b96da96da8e51dbc7d6dcdb66be630e7eaa4865b98dbb07f6b3bc8eb44eea1cfa379be9a7490f6dd96959ecba6d55610ce88d5aff3d2d07e715fa84bae242d9837b0f4447e53184860df4ad58fb5839b235f102a9972ef395b7e6d3a485c7b9a45fafed237aeef23b705d7ccfb05fda34eeabb47fb1ef76fa4bc53188bc16fe3ec7aaf64678f1031b9ddb21e02f2ce64adc1fb67cc9bf240cbceefc1fc0a85f6a627e73d7ba9fecceb5076c55e91c3d98ef1fac993c5e17fd0a36bdb00e109b92d76547c64aba69b86b1df17ea0e3f77e96bd6e5a3e78ea37a37ca9e9ff627c60dc8cfb3c38079ff9e25e3ae6fc099f69f92bb80e07b8740ffca2b43f41bbb77213e796e264d7e34f369847cafa9b10fd24b2bc8af52d8ba90d4de3c1645d3fe24d6f47747dee5faf288e0ff7d9afce51f5843d7cccb9eff65aef14649ade8f9644b7dcc9ef1ab93fdfea78fdc91ea7872820b298f6ef34d322dca533ac67a9655b635ffe166205d7a41ca8348fa047ecd9988d8fb5651f913f2774744c54a5b9bf7fb7c6adeb85803fdb8682d883e52a8bfdc1794d6cb2d2db4ddbebcd3102c4733415fbac503cf22858b07e9f55e4afa49cacd7d6b8e42c711efea381f7d5f427ff8d3e186d4478a98c2395037e3fea8b8b63331e2ebc07fc01528e8dd7bc77d0c84b29ced108f8c2ab8b7d1ca4790a725e38cfdd7ebc2f65e552886504cebdeb6c51cca02fdf45f58c22b6845ad16fcb884e1e5ee32d33ffd3c63ed988635ffd9b3a71c230366b3fcbe77e270ffab5559ff86658df26f051271bc93783bdf5214703fdda3f97901f57d5398a84df0c2af4db9ff67130db4f8de13ef6073f9cea9a397de68b484eb6915e9c9e22daa74771ac449d5fa087399f67dbd7c97c27188f1fee454c435aefd01c0fea16a9cf9ffb80649c6cc197aade2e61699efe70fc7d6c0d36a17f6d8f2fdaeee3f936ee63ff8b86df096c3bb2fe71df535ea90f4e5c1b624bc696972705ece7250d16d4c7a70be32bf5fb3dd867b68f9d39a2f5de719c79c4f20d709e8043187845d277f5b82c28a6a96625a5f911bd9db249f5d1f4ab513c781c77057d9b8b27ec3d4adfd5fb38323f87b8269fbe0b3026f03ebf1f1571e95e92027a5f1fdf01bb225d125b2e0ae6cac2d78eb18f710117f00457fbcef7952cfe689ed77e0f638b3bc432b45f7a92cf0ff7d98b5bdf659c3247793c8ed3532066f5ade7cdcfbe3f4d1ff915290fbc87eae01a2db5ea93753876d1e2d7ebeee451a15fe27151ae5107ffce3c588e46c7989d67a8cee76ecf5bcc035a867eb488d59b1695c5297ee17c6a20f10cc1ae019eb695fd6ae0b718d7b82810af42cce43c35f49262b60a3513d8e3d0b6d223d943864390029fc88ff146ff20b227f535e8fb9970ec14690ca14705d505eb395cd8bfe5bea530af56bd48bd87cc87e016c93ecae351b17b15d716740997f3758a5140e39bfa3135748a49ade7a96a6ad342e4190d3d94cf95eba195a8934c363ad84949a5835f35157c8214ab91c7f8e4b1c0c723f142c88bd9e0ffe9de9ca4fde57614e656bc6eea7fb77df1c2f774e489d3f10f321fa37152bac74b1f7223be73c60ef29aef9a63424f06613f0f93c679a0675389fb7abd6ff2fa0cc46f6cae4bbb5683cbff96ccf9faace6126d4d443e5aeb706ae8df9c8861de7e776ea547e9309369bad6ebe47737f7a78bbebf5aa70eb928e84195c45bdab57f955c970178c73cff03f12721a7f7305942ae365ce37a97281f09cd79ee0572fea01f1e911bd939f6cda7c9cbf064bf8c54628f4cc477188aa8871da5bda07c00f680f3f57981f782ae7068e5d24b7429d4b949ef3c35e62a7dcb606a207ff5ac01d8a0d29c30cf83af0f60f317a8434e2af9398967f17a1a819735648d8c8d887263559ae5ca1a9cde89ae665d0f6b7fd12defcaf929f2cd0acebd3fe8a5467e8c84efa2f43178a02bd7b1d17e1d277910cf203430029d0ee3668ff4efe67d07c0ccb5cc23c49e65fd0afc55b62fe6d177f10ff79094837ef35cb1ff6accf8e10fdb485f425f431c77d503acffd8f7ce10e3a47846a20e2ce7f0a78df185f8a7d13c6b43daa7c7fde98e9e7fd8a67e492db0ddf3d82036c8e09e5442fcd5727a51a53569bcbff65d05627dd23cb80f2680eb2fadb37188fc62bf463cb66dac6a4ae817e728b0b99f676979c748cd9596cc782803a11f4809182e2fc353f31ac6930e106b6aac11fb861ff6383d4663f720ebf9e0d72d68af881ffcdfc23dbfe839c3f5fd4eeec12d7f27b4fef2d199a73225741778278c4337fabea9da9ee2a85cd7e3e28e3826e2fdac278f4671e8c1a77e8cf6cd9e98e919f148b233bda7b3ffb4d0f7bf8cfbd05b02fa6b4490ab58402f05ec2d3dca22e8f5f494b17103b9c70ec396acdf8b581903e66faa7bfd00c642dd43027af82d32628b05ad3e6c42df552bd712b5d826bd79918edd635ca677c468292ee9523f478093cf7d55c4c6839e0e0cff1231eef5c37b3007bc9b442d3e52ff06390b748c6de83f65896592b3a1c57d722e067dda8715c7aa74f0ab4d378051774c0d3207c08f833e6c91ef26880f3912b1812f71b922b6f429c61c5ce603d83de8abc3aecfe81e1ce89a9eeaf9cfdfea39f1fc1acaaf70bda5da462bafe27e42e52662c94f8c9462f6e8f774ecf4c23e6044008f47ec32c0d616729b9256adaad4afdafbefe9baae17e47b2d8fd9f9ae9c8fb9523d05fc93346f52c05e015fd79b4ff6968ce3165169f6e231fadbe177610d3b690df208391644d73bcf104b5bf5f284e55f3eac876fcca7735fb573636e8d75879c512356b1f7b6888fcfe2b022ae345fdb3eb143b43d8d390ec46b6139d8ad7defbe50073dc86f5b0eaf8d75c49e2e65ba4a4af39ca8d1252901a74b588ffa5c815e44d76fba9f5f93b238473db70a7ded0efd17303702e4bc80a976b147c5791db8c7d0bf1ddfcb554d0fcc361ca78710fabcacb2b505b56ad03b05fa81e159f941fd59649c059b1baf89b268be59e15e78ccd7d8c918a9e3344f7a7305b090859aa7af307d589c1ee5cb215b595e05df8ab577d02f260a86888fccfa7f0511f041901b869ec7567a49ca42595b755ea5108b68f660dcc42ad4ec9d7f2d31b6887c117b54bf43eda192256a7e49fddb0e792ee0ba1f2176e12f40b70fcb5bf15ae916d17ba15fb99517c93e3d26eaea2c7e0ff4ba1ccf3558bf25eddd63611f52c4c87d263a634571b369bf3fc2ebc97dde756214a803135b3a805e3eac7f099339e2fb2e827d5db47ce81dbd0b5b34cc6bfd1af157b4cf576f8afbf315faa91577c887b3ae844f42bffba82caa6839dcb3f57164ac83da5f3be275c18fce01d9f343b3ce6c5a3d672b15e8177b66fa0335a2b9a5d04b4085bd38461bfd1eabbd02e927cd215f16b0c7886dec6836f6be677da4609d051d877ca7605f09f15fecaf00b9d38823336439e3880125c7f2017311ea4b2a8697a6413c26b59ea1cf293dd3a7b89f7cc410efba6621c531053c43a82f45de9754b43f1dad5d8c8cd6bc4aaacbc0f7d4fa0bd3bbe1fc55604357f2bca7aa7389aca24894f925f53529efa7ee81887bfa467477c83d3695b5ff9cfda4188facaf0ae047dd59af5c8a538df88cb027b4af549e94ce311d3b79b2df9da71b4dda67c41192f809e40641bf48383bde6bdc6fc76c53d5e4f3c43e74d2fd8ddc0e8c67917b176a9ec7655a44467ee4ef5c6997b46af6b114d7939f0ff9997b1d3317ebad9b7cce6de88921ca2727b26a3b33a9f41a5f44e067538e2fc36b2116fcbead74e619c6891335f2c26a5b968c21ca0f6fb72807bbf725c6cb96fee238ddeb97e49bdf45e4bb34ef0d600bb39a2b8c632ef53de1e1f1a60b9fbc1503fd0bfbb469fb5f341ebaf417988743ce3ada69e5daf72a711ea28e5de3b767ed9c403ae6d7cfeefee1b3f6e0d752ff0171799a07887d51703d26d6e01c8f7740f3d817a2d88675ffd74dacba9a10fbacf77e3cffc77b8f67dab944e31df30538ac8ff13a3816d108ae613def0a7d6b35af816bd853a85e0fec6931de813c795f5e33da8bfd9c08bd7ba67ba8c1c0f88675855a405a47709f1ac3db44ee1bdb2d1b4ae805755afb5827b928074f3226cb4dacf7fffb133d80ea7feec01edd8e717992f637dc43cec0795de947a1e7e4833116e768ef5ce240c9defbc4ee28064d0c7fda0b07df83bec15a5721365c7de6ff623dd3a77bf7f26ba9ff05b92481d2e82f80fe0f3ac7222ec5f138d63bd9dbd9dad77e0b7bd58c8b9fc8f5a5dfecc12beaaf09f898a92e7bf755f21d1f4e24f450ae7154505ffe043ba595fb036bf776e0baf6b48caa5855ce9057d7ac991fbb97d77a5ee7d47a86fb1a79a70ffa0fff03da80fcd4515d6b43fba844a5a443507badee772ff880ee227f08c7d92d34ae5938dedd4263f841be2781fed55167df07e1b98a3e5785ac066f0cb63b8b933ce4a5b2bc407b17f13c1bfce2918c10ec2de80b6f21fe71a47aca62e75cde8d4cec5b7712e424c3dd6574eeb07ebfd0570dfa4f7979a86619f28dda2e892d538bfb9e628f45db95e2de0b3642b81475b51cf8e5d4e072e2d8a51b93675ddfdcae91cffd803e9b3b328fdc80e725f926cd9fc77293aaf6f984fe6d1ff79d636ae51fb4e7e631de107d1abe07737840a72fc87375af5c4126c8365071467f26f0efbb906704bed0b05c6521ed57c572abf87a59e629520715b1fb62dacb33f46ffd3028247a4a4aef23f48bb36d990ad0b05f540fe653db14567186bcc8b72e39437bccd3b94fbafa16c21eb31acec73ac7b46cc81c03e5e0b4acc727fa9dbd348f494f3fc6a556d4f59a9feb278823f671c79c2ff700768becabdb037e09d933c03865fd82ddd33bb1577ced4cfd564d5e7b4c1494c778cfa233ffa8b12e3cdf929ca5a5af1dc1e76c153f22df055aa46b7b5e133d4cf8fe6f9e374eaf48974e01791ad09f12fba8b29ebdddfcc23d267d4213ab66ce978c3d4a7d981493680bb967aab773aa2bb1e1d16f3682fcb77de42fa4bcc730d08fd332a27e2ff63ec867f9a64c4f8b743ce33e8f90d850c84b20af44d035d99eeea83f52d863f049d29e34ba54d325ac25ed6d0fb60c9315921dd690bbb07faf9bfadf9fda03a8377379dbf223fbee3e5a6a8ffc1b5dba3293ebb51e4375e528b0cff6087c1efdb812fb06b31e81d0bb187affad2d4fe24da9951f13f11903d643613e5adb32efb46ff12bf2e0869ec37cd57de8037c8eeebd01a1cd25f45084de83753c876285e3333de8654ffb0d80feb3b6bc3c32ea5e5af09da20d817d2c4ada47aa63ce88f91e06c426378f7173ac6a7800dd84e8c05d3a38e16326f5d3dd0f7086574c87f964affd9e5384645f54edf4ee296cef45b9d0e977efe4c9c2f5d7cd039df96bba137d812cd7a40feb82f10d384b4cc674ca54ea47e498fa5fbf338f7df439213654edcbe1f21d6214e49c410e2df85db83fb0af1761e03c9455829fe987fda2d775c0185b67b9b9e5fb32cf136bf74758d40dfde110aab6e8abe636c15af5b4a442bebfa07eb6c9127a709ba13f3f4ca4fed264aca265ab85aa4ded30eaa3e97d802c5cfa6e3aa5727129f2549e57de8df328d2e8c4227a76cf89a047cb407e37eaff8c8734319ee1bc7e5acfddc683863c6ef29c8dbe7e9693dcb61500a7cdbc277def235ad6cf85a8efb139fd90fd39d426c1beddf85d2f12ee5c473fe5c7ef62f9d6ec7d50eb063af3b111672dce6ba5d8212620f20aa2bf74634376cee132ad74252663802c62b2677112f43e625f6ca8fdf8a3ed53055ec5638758770cf772fe3535f01db22d8f393ff8fc8eebfbe2dcc5efc3fbb4a3a86b7561c7f29849ef83ee15cb5b7e4c934d9f53177e6ce31cd07b3f1f9be5fd7bd6a08d5520e92e4f0747e53aca7e6ae8977887eb59fb073fc51f861a1bf403f2710eb50f52c26e25bce58cfef2acf69757d74cbcffd3ef6aeb5590bb4de629e59a1359bc191e285e6b038795ddcf736cffb28dd3ef7517f6b145df83581af8ef601eafbdb60f808d3b2de97d1ee1012b16e3cb23abe3cc539c12d41d57e716f67e7d1fb11ba86ecce6a43db01b5ab9f18df9c119e9c4a48bcb4279037a17e684e7e4317e507dbebfb30e15c37efcc76bc1f5798ad5d2588fffd15ad4fd23fe783d7a029fc07bda3153e63ba9b1a0591c62f2f979833d5af158a7d407628371def90bd1e953def39ef32af64e2e8bb1de2f17c61fb6fb3f605ee13115fda34bed18c938abcd77fffeb91cde9af2b9c97f6a9d02f936be07f7e40bdc66793eab62d7c669e6be5e4917c1ba124ff2e3d1fc46f43b77d8f031efa7c1640d8b41ac1ef88ba98ce9a461de471f318503a78afbf6c15185336eec20ae43f300892e4a63dade79ad6ad09b9fc70278ce454defcdf9336c65ba77759c62db9e33d4a976e3fc9d2167cb722eb44e116897ffb6a3328aea7e5df87d1043ebccdb402c5d62b3bf955e1fe4a22762086890731596832af92c3e55eff9033fbab9433f7fa1a7461b3b0b6d68ed4871d3904e1af8528fe431e45492e725dc5f8aa3ba8277cec3607e17e21372ac926231517fcacfa42cf66b5f23fbaf71ff12adf56df34e8c4fac8339f3c39035f88778dd4dfedaac2f16cec4aad8097425ea480ddf979887328fd9b375fd6a1d977f6f9c97cfd61b7013447db7ae29fbe4cc8bf1cc6e1f6f52225e21d5cf902f7c0fc75e94a1a0074a7ca9c6e0ddbd630ed081ea974c07176c9a2eda01de78a6768bc8db31d70ff4de477c0f9f65ba71d0c02c48ad01f01edbe8d82f9c23e8d2cde798defbc9d9ce23cb7da33e9e833047c8f958d0d8197d07d3c92479c1dee18d9d3cdecf89fcfaa06b41ec05f44548b1ff66dce604758430473ad6a73d1578ad3cca25662b34ecc44fe24427b96e11cf36bbbf2be684f5bec49e62b291618d2e918e303e44ecd6369621b1dbba748ac7f4c2e704ef9d2c050c56d5d530e70cafb5f44b5a9f1757bb4e7a4ead67f0db367a7eec883e05f8340d3b89d7b18bf55ddd74c4f0c0382df1b8dbf7cee6e7f24acacfaa733a4067b310cf3b2ccd4d3cde818d1c598373b4d43751e02a11e187d01f87f00d4793f5105176612f3b992e989ea0c17a346b66857eadf538f776ef1b7c572f7f1f35dec76b198a33f3ab033df767bcffc4d41856c21a626d22ad61400c9e53b65e0e9f5be3df859ac387f6b9f8ce96ed84f7f6dd431438c87f6a9b5bf69dd43181ec67f5156f833e9e8f79589b9e31976d87bc13b0a68539412e48ab9659d287585f1f719c965ec6656f3b975d1ceb33fdbfeb9c76f90ffe54fed25813cd4b5d8ab9a7f5f80d7ef64a733d88def11aae9ea8fcd63e405635ede9eefc62c498b1f0bd72fee188c877e8c1e754c583f32dc67e1ec4b9a87f97eacb87309841dedc3a70ef904fc27277c734a666e8793a76abb5eff4528bf734fcbbce4def15a1afddbb73311521379af65a0816679be2a6906b98334deccbf9252ea363d4879e7afc1b42f0fda3be3705bd08ea0261de81e1d4b13ff3ba813ea363e718ee89ce73cdc8b9a5f104ea1b20b432cad6109f2814de43beae87ac63134a9d474fd72ae779f9621e13ae71bde6428ec3a21c5c88ee18ef69ef1fcc4ba4b16009635a8e9db0b57f3965516902ae313d7ffd75302f9abdef255b3098637e76df39466a71865ecf1edbcb366fe7fc945e839c6d83c760eb58ebf8f65cff8eeb087c017935917bb978ff64b9fbd207fd38d6e975f9a1379c1f7eea0314ea183bf4e74e5bb99ddbf42d3bb9a33f19ccb1f9dd42ece36f1bb064e7a05b43fe0ef014961fc7f44076b6e69764ef14495fbfc425abffa0b487181e2cae79ac6390c2f9aff3d0de52d4c79edf280f11f3e8d6be8b353165512472aede097d877a7f6d15db35e58b8c3fc5a55744e359ed2757cd53d807fda4884ce14c89794df5fbf1ccfbbd0262ad809338bf0b7db685b5eca6755e2f8239704d7bb2338e91544dbf05c40c1a76a8e407e17a083f2b420f10e1b76c52b177d47805d36a789f6e87329e6f130b16f051b3a33d3e651dd8750cb3ed4e64401debe37995ccb6cf6383d62405339a43aced11b39ee976347786d73300cd7c8679d8e937e8c03becbc6f22c813ce73702fde045b41c6b9536fc7703360b601d765519f83b9dd69dd7f57ad0cd68ca9abc673bd2229d3a289971c978c0ef03acf37c0390af1c1c7efa3f1847d9da72ed63e115ac3b1c5b5981a72ec47ccd7401e51ec22df3cd9d6ad88cb949c731a7b053d359b301baf8fb25bcc7b20fb18f9d7a38c0b54c744055b704669f487fd32bbca7da1bae6945f62f5b4c79ca7240bd5411195d131540bc08325f43f5deaf758bd1d23a3cecd136d3309af877d8332bf447e54425fb3edf03a7bc94e32de5a13538ad920838f709382de9156fa3656bd322a8b2d6070194fd9325890b9f61295f51c778ac4f24e753e957b4883a68ea51580d91d44853c6f90db5adc5f117efd9bc8f1d4e0f9cd2af3af24357601e84c21e400626e1bca6f3b7bddec1eaf09f0a5e8988e773f6c43b94db7f6976be15979416471633fd0f7b1d48d3070ce841f2cc7521e1de4ebdaa643635a60b7f523df3bdb4676c53c5c4dde7f1378f23626e72fb0891e47d65789abe18df26b62eb157c7de51cb4fedabf417f0aa20342eea4fa4c75606fbf369aef62672521ef419c305503bd784df8e0c8c9935223eb6da7c1a2c913cf71a5efd67e54468153af8527af5bb8077df6232a0755a8ae32fcbf477dcc289f69ce5611620d26c8dd35e1adeae09ca8c58e8c1f199fec275997c0cd91b6bfa66b77ece4515d57daa2690ff33094b8d2efb135e8db960bbeefa40ff1cd0fa8771f4bb98244b73c4544ae8edd43e83f65b3aff715be91acf9cc607930de1df24330c794d747d5f5995a132fa3ce0b23df249ff1ea6b5ec36a0d1758df4feb736c23dfa5c68ee6454517c859ab105f84d8358d1a8926df839afe55df2d0017ecc5a67d14256cbbcbb4d203a2ebd39a1d56b74d75af811a054e85186f4e4e78ae6d4579d8772fc97ec77b9bb17e3072ada7d90b7d7795941eca21a10692d51eae022f8f4c17b0d80097a74b56ed611c622f14619935e41caba7c6fe1a58af28c89db2791d6a09bbe42ff6016272ad353e60ac5948a78fde21def3f03d80b5e9e219ec7e97c7e404eef7c3b5a33a0d1dabb57ed3cde0b4f6ed4b22dfd7782760aaec2127acf55df535228b1f8d1f05de09f0e6394d0eaa865ec16a95b97fa7eb7bd00ffc70dda431c43a2f1eeb037d0ffd6b53a46b5ef74a74069ac377677e7ec2eb449d41aa79adc778637e5d96f70eb97912ff15e30932cd779d055947bc497618a7e1165de734be3a3bd98f9e1fb7e9e601ad1c84f597f0089177b59f7785dfa5f9d73a20f5373997f711d6ee7bd437dcec038c75b3ee25b5ccd39b90ff86391ab0e607f013051eb1bf200e43f31711d7127811d1f16f79d25f60cda729d5db5e53df39adfdb9fe55dd2dadd7c1ba266af74e21f69f42ed6f027e80f448ec1ac04b01acf19a86e2bef3203755bba4d6ea876d121e6aee220363bdac4e087b71b258e4ee3059ea1f11d11bd4c599c827a0318a8b9f8e77209f306f52ccf3a4b6814ff117c66e91f44187b8d4b984e639841e925e05f706b3cebc41f6edaf1b9dd399104bb9a5beb9f3c64e11bd1db2a4e6d99fe560ebc9dec9df9760aff1d8c8bfb9b6bc8ec6203af02a0b7d77c773fe8c5a564d791d6fdd9f0273d006e7785c88df406d2b6f477d024a14a08d3925cf9590ef0b5871f658ef257bb8f73eedaa59aced971fc2bfbfc861677539a28f12d72b55f323d48f74ae9b4d7307e45a83ee3c5ace077e48bcffb35ac74f6ad5996ef9883ffe797dba5443be8d55ec5b8bb443f3cede4e99fb89cfb0b10f64ae8d1a8546bf5fcbdc867d8fcedfb3a87fa155974dedec4b5ad2de780c6f1cb035dc62c265d255927788df04f368e61ef4e2d2bd4ff7acf76ad68ca1d5398135dffc66bd80b98bc6335623007d7dd7108b433dba7ec7b13b6fbd139b839cad1eda83c1ec0cf23b50d83b441f0df8b51ebe43f095d53a1fcf053f03eff00bb051934a03f9ff6ba9e791053eb4c6d8024ff35dacaf69d5ed606c46def3c7fed387f93a0afa4d8157d775727bb9ef734ff6b3023d68d734981fd83c1eedb19c4bf2457d8fef12dd167d9560fbcbb80e61b0e0351575bde7d77515acaeef17e27b77d502ff7fbbb72b5391b196878776fe12c5bc093a63789feeadf8bddfdee786ef5ed66fbb738e40efd813b995b11c98bf1ed4dd4b3ee22feba0305e7e673e7eea23f9b7cf3ee12f2c56ff1dde6f74f27e3667da0b33f4b51de42601ef5b9c29d68a665b03e8c19daac55dec5121d425b1b9b0da24895eba6326723e205fffeda933bf6eedbb4f2cff0bf692c877cb7b7a5343613f657ac467aed90cfb7af17ee5527c58a28f39d4c947cbfc188db393fd3292e8087b0e701ec3fdf18ffa98d7f2c629887c9a18cdbcba364f6af647f8064fcaebfc1c267788ee25fbe5bec33f6a5e34fcb031a60958ef543713def3942dfd307bf7073dc441a1fe34883fd919cbed92ea42590e13d480cdb80f8edddba94776625398bb48ac8d6acb9d1bab5f996daefcbd6f3c0f83ebca01c5c73b35fdc66b7f7ec4de411d3ccec77760ecd2a4eff92ecf9be77109358179642d684fa23ac709ebbf9bfa9d60eb73ba69e518712cefe6f7324cef3acedf9a6bd3774fecc40f86bb1206f37beaf70adb4a4fb1ea006e61ac6ae5da4f7b88d522d64935b14c5a395cb01e759dd01fedd78becbb1cfe1fb167ed9767fecca2e1af7edd0c3f66cb7a4c4f45bc4359ae705b81e597f01cb20edc1d8653b4a5bed08f30707e376bc9934adfad0347795f76ca1736fef7f44a933eb79f6521e1b1d0237a504a7af198db4aac17b558d3466c5fa865efacaf533dc5b3064ae8dfe6dc0ff0edfafd968fe1dbdf043286c87bc617a0b64a41dc64669308b6b8c4f7ea18748da720f340560371b64dfe3bd497c69bba6705fb0e56eb2edab3dfe1970f7231c45adbff955c65b1cd66ed7777be23cb331730339af255b6b18add3be2e8f2b3b0f6b55d14e43fa38d7c1e645908cffd9f6d28b7763ebb70aefa3ae0b3e0fdd76cb66cd6763ce8c924d7b889fe924f73d99bfa475cc2b9dfc47da7a9b78ab600ca6a88df3b45d2775fa320ad317036b9983ff65d5c8adac7407d8f48ebcee5dde0f90f5b72ee1238dfb713b7611ee26c3846dccfbeb0af41266cc272f0f406f914730f73dada7d941ed9c4827ce81a077a1786fe4da25b594717f469f4fb9fc938ddeb067d9ff3d82a30d775e75cdebfe041dff18336f527f09d9785d2b257c7e43c7a4d0c05ecd15a9aa7d45f617ee42735a9728c1ef479751da07d42c768d07cedaf9e96832bd0d87e76785785782d9dd7af4fce0bd1f5a4f3f2a00f76cdb3c5f8037fd7d7b8363cee289f2dfa6d5df447710d10634dc453eee015023e25bee78fd7adcfe787ef0d9a7db0041ddbca8f757eef2735bc82cc16f696f06c25eca47b963b59d740800ee5df4e713f117d549053b1f689ae4263c2e3e8182e995f7d962d3cdd79a535e534ff448c299cecb1de0bcbdb3154cceb5ab065052ce24332f636c49e5904fa518823d4f5b4c275aeeb887ce5919fae91c7bdf0e7db94fa46a3e557f9425a47feac5cefb0867cda969d25d61ea07dd7b029c95cc087bf44fd9ad9751c87133028c06f9353dff9113059fa8b2cf27b5772e6847350fbe497da31decf8b64efb27817c7b79c503db9110ff8618f9e0f88417cbb44957e16fb4cf1dea5d6ee63daf685d57e0d9e275834fb33115dd489980f047ded2cb716748a887d5ba55f63b538a706cb6b465d281dcfeafc0443017b8ce5adb4ebd8212789fa62573fda35a5ccafa7d5b9b32dfe58d750511be79c94de3d0a162dbf6feb9cefa53a1d1aff6dd60cf1f513e3bf67563f21fa02857b079d7c4ff03fac97b25ec4f2f96b39961ed6feade8dacb465cb89e0b1f0f72f5055da2ae19034c898d7db21ff4d8479c2d5c3721afcf471cd2147ab8133e9290fba0aef6563cc0b95e02ae98913f115be9fd6d74b2c759353574d9aec5b8ecf9fd654464ffd30ce2c8884b2c5d7f83ebdac3eb2f363ebf79f4bc8dcf0bd759fee2837cc25514e444b6319c54a683fd6d9b73225300f390dd2360abd19eb7a6125be6fdc1daf0b127e3f9f1bdace51cc6baa18f881a22ee33ebb7758eacc116f1076b0c68deb7d9c813bb9c436fb3a477ddf05c013a5e3a867eaf20d7a7ecbe0aea8d5e625583ef9898d7cdac74137bc3720070edd6c17c8476a78c930cfe0879bcbaa7007d3654cd735a9af769c971f809dd936f16fbfd03cff62cef09fb9a367218aba74bcaaf697f2715c7c9ffb497f122704f61306be1e2bf05bb2c2ecd23e4f8fbbd6b6ca1bd1b4a7d76e8fb88bcc171cef6a800bcb2d81af49356becded12727cf85e2f1ebbc7047c5cc547e8a72cf7e7625b481714eb671f058b8cad117c33605cf13e8c39e015d3be3f31dafdbc4f34f3f3a656718a82f9220a1c4e57c07bc12e98533cc7fc9256fa47e86b9a3027c0c4873e8dd6208f2c9a7f680dce91876b25f2ce7a0f6adc21616d4a013f975c3fc5aab98b2067bb477382bda7506579d8f99161f78bef90b1934658736231fa62b97980718d79163ee249836ddbd14b9ad2c0a16b8d1a79be0ae1b7494f2f92c2b9a442fd55d237abd4c885eb6ef13e463cfd5fe36b367b1b56736397fd049f30d33970bc955afc407a768fb1e5dd579657adca419fe76e20aef10cd7ca752238a7c39b709dd055118dd89e21ae7b7ddd3d267b57e33d5846c58e5f1bcf7faf03bd8846788fdcafbde65d3c6f863f07f9a0bf23dff592f20672c1efd5ba27eb2994f4f44baa7ad59b1a5613e1fbea732cc6eab8ef32b10bbc17fc4b1b8187cab980d7b89f325a5252f5f91c18f65fcd1aa229f34b83ae02fcb78eb552bfb3b0c75fe2b94b6746a845a2744eeb7138868978268e31d4fba00f9bfa6d5a7864893af810cf8fc86768adcfddb50ac81d89ca5b1e55d8fb14b0ad54ef1477e3b71d1305f798d851603f7f1a53c6be3de0b7daefb2442df6ac3f0dfb4e016ba5eb7dd83f71c7df29fdfd690e02f5cb2715af07e925e595c5b7b6b17a3b45febcc61da67425c8d73c2567a67b5ecc3ff783fbc5be81c54731ece999fef6bba02f153f43144fcdabf7f333ffcd380adc7b27e62ec56765b532b16feec5fe0735bf6d3e5b804ce9c27d9a6cf4bf62352a899d67bf008d2bc4369d12ddc2a2fc1c7bdc62ce309109be738fd55b0fea7e1bb163ec4187fc88af9594df24ea3e1d7e5661ecd8f772427b6b2a0759cf98a484b3afacc93775f2161aebf63d250aec1395a7749d4c11f38de1ec0bf2bac6a982bec2a5f7941a0d5d0eb0f26a9a9818bb2c5407a7d8f2b6addc1899265e245c5b4a170b190bf9f3fcab7e710ed5bc8a55ed9206736277827c60b877284f31371df782aef7467fc1de4fbd5dacf672a8b750bd6d1a38c754ce8f3a610cd864f6f835b16ec7473966a01bbc1cf0ff340ff94ff0e742f55684814375c8ac55ebba7e9371a61eeb9b353e14d84f2fc3bf00234a92655f6043f1f30936d2e7effa0a6b03f84b7e8cfdd44bca6bbb86b7817ffd73c97422d781734de6e0f7f65ee09c9a781ad0974c38df0f7158317faa5de757e3697ce79dd82382ea804bdf7db20d6580b56342af03f4bfb5ef7d5106d80b4ca0fb4ae37db365cc84ce3e1d4ea46a97a4c41e23b45e03634d4d3e033c6b406c2f32f6b9cbb6a679aa8467ace21edb278ae36bc2eff219adf2877317736c79cf40cb73e2625e802df378ccd63a49fe086b7e49c6bb437bcc2beaf39e7b61b252ee678f7d31a2403f85febc88468332dab3b93474c5de879294e676ad7a3bb2df49efa335a740a8e94f4aef1a5be636f2dd9ff4fbcfb5dc68e1b9f36b82ad2de98dbe2ad3f0b4a4733515c4b8f96a6ed27af5f2a4fce03ca47e67578ce7711daf209f0f9db5c5821ec068137acc42dcb3b8a4cb279a7bfe0936a0bc4e0776de3adfd7de33ca4f6e5fe0040ef2c8e0bce724f59d14de83f1b4a60da11dc260fe3355b545520eae11ac69cdc71abc46c42b7fcc4b9622fe7147ac80f5d7f5eb783deb3f3edde1bc5abdf9894dc3b11ccd7b3ae2dfb17b6f623b35af3771cc602d7afb6939afe2fefcce6acec9d881e1e4713938bf13dd319827b68cadf51155da252ec9d880cd24f871b256dc2bf6cd6a4d7571392f0778721506a99ee2be018e29cc495a633966d2c83124eb774eface16735671edbf25afea1ef6cc763db470d7c6b55dcbf6a8d6b7f2a67dfc37e5b16febe028608649b218f325eb713fafb31f3b79aa980ab5251946c509f7e09a357b378bb21679a6d0b3e445a1e7bd3845ab862c95c797787c87cc6ef6e1411ef672c077aea8cf43a0c55f12dfc23c1af00508fd47b81ec29edf0cffefe7b2538f69c4c03af6b189a123f7d5253a6fed177a51241da8b96ed33de77f747d9c54a4419eb7ce75e315d9bfa76909b48d7c01784972a2f421c4bab56dac5e89fe29f846aeadbd9beedbf43535ba9e41dfe943f9d317f7d949d99999eee7557817f7a88b07e3390b96c3566f945a176dafefb4aced7711c78daf9fd0afba416b5f625074d2b2656e1275704a0357a4af8ef3d1a2b7816de479b89f5fe2b1a74867c778eef4294e96c3e79fc6f02aeb4403c2bb56646f185e0259e707f3ca9ca5dee54793ce60427b7681dc52cd93279eb3cdf0d2f4a575cd8bd86a9f8c51b4c69074acaede2ff5d964dff9ba69ffd6fc8ed78d5ec5fde424cad358bdfe009ae2fe36e533dc20c805439a2a5ee37e22f16dec47d04d730f7d8035d61fe69379acb7b54bf1a8a1afe437e7b46bc56d23cb3b85c18ed5ed816c9b429d8bb6a5f5e884f7f4e2b1cb7c2d5cee24a5073a86acbfb47d9c0d1d85c748a8ad09bdb2e3bea7743e2be7e9c9eb639c062266c6b7d6a819db031cf1e6ba3f65b3b7462eafa8d342ff36a92f4d47eec083b98cd3635cba97b4d2eeac573a7e7b73fc6b367f195ebf89b9b68dfbba8698eb0ae0fdb5715a01d7ee458855d5f2abf78118741df2a48e17893590ee65d1c75c6c593e3db76565a1a0cc11ce1ae699b9976939bfc446437688f72de97d1d3246e4d3a9357849c7d9197512aa9fcadf7ba2b98567e035c6419449fc1af0b2e6b54fe41af4ce92e5dbe94b3debd3b5fe8c37d4b68edf276bf227cf839c425925c65da0a7cea01f05cecf686b1f621eebad7d1613eb297336c343bc197ed82fa3e364391cfc7ca37c69dfc3f8b4d8c7da8ac8f7ff4c4baf4acba2482b7d44737eee1823c2581eed4f09b127c4b6412c9254f536917a43fc710bfacc6e63e803add1782ed66dd2e7b19ebe3f639859e007077e6d0daaba2fda078bed421e1defd9adde3cb27718a769c430611ed7f37a5f63b03c883dd31832bc87d868fba4343f5a71e811c5de0f6699b76258033837e4ab1803035f5509b577d5837874e7fb266d5c22dd33dde572e578dec87b0b7abab92a068bd5ae982f3dd7f176c46e18aab4fefa9a94c50791fb88a536cbdeace20cfe1bc043865e2e9843329e9ded11628f400c649c41ae0de4b8aa8313d9c39fcbe19dd0c26c2362bc49359be44c18bee79aabde60e17aceafb751f1ba24fbf0626793cdf03083358b887c51667787d6b96ad233eeea66beadbc57cf18feb64def18ef17f7d9ceac92d2d4a63b2712bedb7c1b797377a5ad26cb2bc8bd749c5e38a68871c826e3ec648f77d904ea1f6f976453c8b622e22a5a2b8cbf35f24dc87fe93529bded3a981f2946e56e1d781f89a197c4fe4f5f4efb56bf39639839fd284ff605e6fe97de766ed0f76f1fde7f811eedbe798c37b91aab285f9dead631a704fcdcb139b092d2dc2ff8fe7cf50e652fd951a6725e978363bcc9f681793b3bd5ae8139c2d7c7ff647d44bc3ff856421f01e4bdbac5bba95f92fb83f9a822fe9eae46fe4cb12df317a537fcf666ee107c87775efbd8179bbeaf17f4e7dba4f48ab8c0bc86ee754b7b715900fe2d91fbe9cb224bbd8122f4d9fee49d9fefa79c5705ffedd37270843a02bf384fc6b0bf477bfc602d2ac8013e053dd97e6ecc0f7a4a91759a58e62fe0c596f74474fb69dffb95a8c42ef5ce4c8ecd8c27c0e6996e87c7d72a69e1de9239323d9dd24f1ea8c863a7a5b989d81eb4d771e0c8b956e9b43c5ed6fed3c1e991fb93636b4dc67a15ab6915fa4ac3bf949ee4f5d0372960f1d8f27d638fc8e8466f47fd14abf39ce68936c6451e2cf6596f3c4be4f599e2b9811f08f8478d9983bed14aff31f5b11ead2d77f858f7d41a54e02307bc41af6f8f905f2df65e19955e357919a920478b62e57af35fab91b70c949bf3b63b1d1bf3aaf1e511271eeb8ccadb250c6a3e3819cf95b8efe491ba6a3e8f74293cebf9c5397d995514afe190f4dd0be11bd1b2e1eb1ba7c768ec1e1ae31d582d957cafd863be81694de86fd58e43e3be78e7a44ff448ef0c584e26ff8e865f6f7868f7f881ffc45a9d3aefc01a65d1d8c35eb801605c944cf6020eb4c7e98fd0fb2e5a3e656e90c31ea706d84364cf51061bdadf4933bf91d735229e34ef37711f1d27b24c9a2d57da94d81af53a6b9bf7c02d58ddd383efe2b69b1b10deb9635846fd68a957a9ff9461af46f25df36be8cfebfc1bbacf21c5e348c7e9315457595816fb4865fa46fb5d90ff69ba3fddd1f30fe86f3e9e1791dfbbdb96d38bcaa84836fa9de8bbb8be37a835861a9751dddbde1e7b77cc0316f3ad904699eeb71e7b7bdeef743cefe027b58f84e8d311e493bb6f5f9ea9fa0c9cc37da1442b867f37fcdb7eb18f5d7c56781fd1b3114bd2ac792ee2c76844bfb550bed7e7a66b6e9365177facff139e79f9ea5c768edf953f5b9fa5a7d482ba851dea00ce7d0a71a89cf180238d9fdcd716e27003f6b6af5d523f3d609e19c4c0b2f5debba7867e894b22c3897eaf3ddaa7267fea5ec77b97aed0e24ff5b323943b9f3c27f1d8aeb57aed38b38dfe35922fbf8e3735e20710d769e25ce4fb18e89ed8678b8e9e3728cbd0e77de3f99c5d734a03f718a38db18f4d946b132b3d2dd401dad94dacf9b60c25cff6d0c6d118b6536d335019e515c43ec67fbbc5ecd83517620b1199b71a3b97a8efe4f132bff2715af9d7d44f4beb1ad0bea27219b151856bf53853438f1d55d6579cea4af43fa6ebeda7445ff206f7b0ef1491af819d0df7f4bd5fa9d0b7c0e929cdda4db6b7846f177109bdfbfd2870c8faeb5437a576462eea0b67713edddf9a9ea6a577069c148feab323aab332392cad87466d8c07fbc7f92ac4ac4f02be1afdbd559f35e8d0a31ed7c2412f4bef3845dde603f44222d77a5dd80d9416c187447520cc4f06f9e6f9bbf3da5f74e98c7846849834ebf7f68e58292bcf749c45e1d57a4e4f5f2e573dc71b15bedbb5cec23725bd0f1af7c77e1388c548e6af3d75d1af80c771f7551e87ff6dbf98cde7b5aee743ca37e567314ec1d7b344def480ee047e388ff9ba18a76cd6c3183baeff9fce1fbf3fb5068bb83f3bbf77d227e5997ccd16d9a41af6305e027beaad979426b78dbe5ecba69dc371e6a0f7bbddacd11b7bedbe39548ec6fb792f293d332e07bd48cd6bd9f5888f3574f3c95dc9669ddf1755848fbe09fd0453a4cb462d97d2b25b19f600f69269f1f25e3327c91675bca6edb0195ea1ceb6f1fbf48dccfbd49031b51e97f4d33ca9eb7c77ac973fc5e2663dcb89dcc55e1e1c5b2b3dc6d6153167967a2fa9f49f9397d151a80547dc2cc46e607e36fa1ef3f4daa12fa03f9cd03259c72bb3eb59bfb1d261e350bd167ce55d753ea2eec8753f4a8715d4c7e7f6383a426e81f5cc75d290ea6c142bec37f90df31e1fea195cbec57d5d431da9588481a34cf8fbae8c1e2067ef0bbfd8a94577df79e62b7ed6acdfa47cfb2bfa64f542624f9ed699237a684fb4b3baf743b4b7da75b2229f15c7a27aae387eb3f75f9b47b0fe19209fdb3c2239d9cd58397f37da9630bf2e1dcf126a53a01eb0b5a6608b3cf4a33f9497d4efbaf902b74c94f97bef2ed88b8784eb469d7b4df48ecddad776dc2e2163eccce56a674681e278ee2e32579b2b3f038f750daa07eca05fc281e8660bcf592ebce2d7a2f02c77e72da7821e3cc5778ffc95a6bfad8a974071970baf856dc1e609398d22ad7c66873669aa99e3d8fc0ff4485f3b021dad7a39d191de5fdc32dd34742e81de899e8279f2d74cfcbd737deab5e63ebc59191e20f64de5e7742ff9004fdc9f51fb303a75601993487a97dad02317e02bb7c81e4b7a1fbb8fc8ea93fd629f603f77d1ec4d3157e277ceaa3ff17f03bed1239afbeedca84e7acde6c615f6c95b696fcb55faeaaedc5fe08fc2f5effda3f96d88adddec5725cd739794669ff2ef3b9e8d9bf3b6f3dea6c6f03a351a7207e20b8ff486b63ed090631f72dcb89bf7867bc09c59c50a8ed7e6bb8ffa9a4a7dbf04dfe1f0ffa86c3faffd07b6a12cd3eea96a5e259926eac0d5b5ee9bfc1d9d7a496b37f6ee8cf5efffff9b6c13784b730e4c6f7ac8331af7a33ed5253b7a5fc9a57d14b856634fbec7efeb3c13794f5f1ef4c1c5fa7f5a33690b7140bd84fc1b887ba0fee3523c09d0892c2d5f0711ea6ca582fdebcbc12ea2314fe6ab74a1df520e7dfc43f59627fd19adada3ba217d1e7107525af7c87af8b21817c45fb1f7ce467f5b5be695d63bb1be0347d417e70a792ef56f79b291eb1ac30070ba2a7b649ea3b153ac97fa340ce6d0fbd736f27cad8e3288c1fb1ff96439bcd856aea463fdfeba79be44848ec7de06eca6e500f20cd6aa99b0de21ff4e9c16627edf8ad3266af1017e4ad373a80ecdd785c761416fd700b33fd93c65d067d7a0bd984047e7f15cda83697e4b7db38a964f198bc7213610c822a1ae86d7ad7d5a33d9f0591f1a7592df89012bd4f7b768c680136b708cf78b938db1d1139de389e9f1785e897ecfae1fb2e992c63bc7337e1fda63c53935042cf191e40b7f7d535c13f29dfe48ae7c3fee4bf320ea9eaa412b96bb4fc64e11aac51d73237a456415bd38186611c654c418d79e7cc3bb0f75bf341e496d7f889f69c27d5fc5f6fe2446cbe269ed385ac7f73563b1fb307095a42c3669e016f6382ac2fb2c0bbd81a89348dfd8be7f41eeef9a571d2f85fbecace9a313e38a625c36f64d656ee8bda02fda17d2d86a18381ae206d23974c67d538885432f0fffe980ebbecbdec5f7feb7b1d37dae75c74f11cf4a5c3bd4756fbf5670865c6a0729cdf53ebf139e33967d97fe5d4fc97fafadb9d7e789efc346cbc332ade4f5a5f1fb76dc5ec6f3affdc422cfd8b35ebf14f31f6d8dadf89ba037de45bc79f4f18ab458c7b678bc04cf74edcbbccd81efb6f981d44361fcbdd88b10b3947a23fc41ac537cee2cf68c17f331714e683788dfbbb6105f50fc4ddc5b696d04dba9a346efafce9a3ee3334c3d8a9112b43184591f735e9bcafd2c8392e5c13cac0165587b88f546fe2fc4b9595ef582f5ec136b1739ee01f42537687c4ed84ba18e16f5904e3c71c9975dfb5137223615fd764fe423874eff8968fbb3eb709685fbf16cdfa43c63a84d5b41bf9e1f8dbf451c33e61f857e89af1bf96ff1ddbc86cbe318f9c72898fdc09e52b73c543d5ef303d8b4f2b3640faad70dd73fb09ea4c6781273c63ef3bdd6be22c4f13950f9c16ca5dff6cbe8d8ce49d07ebaa355f673ab7c377e4d740c93f0d3f725f6cc213a8c3d767af146bfa4c122a3d8a539c4a429660a3de70cab4949d5621b2df5cdda4ff751603fc2e63ca6867e8f7cef23a9789e089e37c444a235b5de6ebad15f38defd46ef252ac8f48fd4bf29eb403f719c28a67f5b792f5257b4df697e17f27dffe5b8f4bf1387fe5fc79d3bc63b03ee31f7c5eefe429d51c28f28902e339ac739b8be2ff5bfa18e0ffb3fab6bdfeb4b7d6484784823cebb10e2ce7fc9b9fcdf8c278fa55c1361ddf9ef8d1ade4febfe1ec483f57d8c35a9753cb7cef5ef717bc74a4f1ec6810f62bc58ae81f86ebc17f93cc67bf1df52bcf79b3e4dd19706fa13ce0f7ba90bd726422e976d9ef60ddd0762b9b51e939c881ed9c8cf63f15e513fdb07126efbff2a9efbe7e3503d54f26971b90af1fd6bdd77899d79e6a7ebcee3bf8a58a3445e782b625735e2b2b43e93c661d97d34dec5d7458a37020e3ae1e19ebb5aed0ac313eca995e9386fab62b5f422136282e3461c528ebbc27bbfe137ca26d5f006e319bdab1c9bfc6773835869a148df0c3cbd51ab4d639d7f32cf7b50f7eff6968d586837a64087beb1cccf5190ae045a15cffbe771896fc65c3e9f0b9c99435a5db3b5940fde1553e1be6e321701cb8e8ce1d5380b63b7e2f89bdd34cbe296a0dfd0def75d58a00d5dba2b6ed8d0b739aec1a7b8e7aca734c62b65dda5745a3a7c67bc92e80efd6889185bd837aa11ab345290414e8d0d06b2bcfe3fb3679af13be48d20d35678ef0a7a79f2dcab93d873ff7bf149e4ddff5e7cb20307b1ab3e19755f49cf8b7ced9e064ee1d2dcb115d70d859c95e6fc85b8fe23fc8e2e7d78623cff2d5cdb812f6c79055d0bff3dfc7b4af866ff11dd12bdd996e7ffad3ca7ff269687cfa24eea8cc2c0cd1f3d5bebd5188f71cde275b1ea398bde60b4da99c1a45dbb2cf298069647e35c37f153fecdd81cea15cce753458df19afe94542d76a9959dea58efaeb3760fe64b65f982faaaa8bfa5489a7316fd38c6f04e63a2d6db68a07bc695c52dbf714efe795cee4fe64b758b93fdb2c01861e1bdae9462fcb6f34681e244de086acd086ffedfcfb96ac7eac8dc69cd3fcdd9cdc9fa2dde94e2d5336727fb65d8e44b47b9f6acc68e4c08cf543db40f366d9fbe7cfdfb189250b3f4d6c24395eacf68bc00e266d1f229f368dd2bd698e98730986571f9cced6bcc5bb95d22e8c96a22a624e2f2fd6d5b85e2f4672c27f61a06f33be2cc810d5325a5774ffe7fecbd597be2c8f227fc81e6e20861aa8b4bc048ac72b169bb43922d6124a08b557cfaf7c9885cb5605cdde73f33ef3317e7395d464ae512197bfc82d82f880f795f9bc616f0e9c0df8fbda3d8df64dcddf1a64b7b6bac682e37e041d29e06c0b3e235c5d3197f5923b6da333d95f1838a7cd61accb3768eb8dc535efb2130c5606cc49204ac15c4bea375c457815582f65398b592c0bcc97da658cfeb3bc5f182bd8d74c807ff0cf4463a448c3de88f4ad64cbe3d1d248bd5361accb6a3ee0c71a64f9e3bafc2f7a23adcbe406f8952df05fe1256c7b8c3be969e3bba43ed3ef5b516fab12abf4fb2c39dfb556b707a694de33274ed24442c5505e374c6623e031be80730fd1632ce88f0db95eb235ba0df8c7b5bd9f6841a604a4bd40e5cc198c4a60e748dd8709735fa3a24bf1b8f51b2de6498d7dfd398ef8463214afec4ebda4d52a2e3b805ac5346331335de5878bfb31b3647b9af471b2f339251de253c81fc6de76dc298e2696b0f6b210d165343f93761675f51cf2af4be6a7c4132df50b735e8610b350ddc3f79a7e717438fee4525a61cbcf3b6e98a5e3c1453f4d7528b473ac33408e35f6cfcd77d3c5d769ec01f7c7017794cb106fff1bbf700693367e7e967e9d15f81ed0e3ab01c23f558bd861207455c3fa067771aaf1afe00fb5adb5b8aab8338ffec1bd2b7fe1bf1e490d1ce604464435e2f472cddd7b07fdedab1ee6f0d7816de477fbfa5fbc51874d33a042ef442d77d9453398f5b0b1c7e626349fd96a333fa0fe3337d067908991ff2a06da03746c1aedb88fa8d24203aa03b2c8c119e279b363ed36b573dcf63e264fe30b67aae33df1d01ff24b41e65e1c9cb0cec738b73536420cf3935198f23732432157a595dd958f81dc0bc4fde9d7623ea810eac61dfd76d1c65e93d728c23a1fd30e7f174a81ff69df9ce77a7928ca1bd0cf99cdbb016d9c71636fd9d940b81bafc60a4e0a99067d0c766103d209f18b75ccdfdb174bf31ba04cdd951bc8bff6379da4e0f300ceb7f5f54ffbe765a87a82ff0be4adf368dcf6860278161117e0fbee2e9e216866ade0a79ff0df78a630a17c739d29a709039ef4dedc8ce7cbdb3f688236a836de3bfee99becbf7b46883cf76f62130e7b40641c9894679a3ec73659e0ca1a9bddb1b41fe88db1b1e2a9f57fed7821ae1b171dda00d9084c30d60367feb5d1683737b447fee5fc77661afcaff3b43ac7b9384c3cc3f04e60dbeebf6869fd3d76e32cd562f64fe78b70b39639ca7c867813926dcc7b515e78fb5064aee2ef5395d63de53b372ad520d1eeb9d057dbaa38397771a934d7704fd89a5faadb5691c7d49e652bb0a641cdba38af85bc55e097f1bdfa71d9e4d0871f1389e2c3a8d2ff6597a3795dedde2bb944f49dfa434de2afe1df2001fd027fcfe0dfa24cfa7e47c2799a1458321f9db3d1a8c2e6bdde674f0b6dcb6be470388cff01c0d600dc682e5e7411dca95d57480de1e56e4ead3ba939134ef97a97ddd28753dbbf88bbb23eecdfbd280f5cab530cf9f699cc37d1bcc2fdfffee08becb6b5816dbd2d97d509e58fcbb9fa5b96f8fd25027fb6b6fcb7b2be4f95377cb6c24efce88c626ad3df6e3c2da478eb37d2ff24c3a172187ce30af05d91731b7efd18f95787a82b13ee4f92fa02bf6aef1fb721f4fd97b72beaa6e7cae4d7b3be7e7f7bdf76cdc7fc0d17bef757e804d3fd8fe18bed6de4596e72ffbbcabebb3abf69dfaac22e8ebd8d23c87e894c35a7a1f8ad88756f85e38cca8bfaa47f852e77749aef68e31ca830efccfed0de371de4dbce6bce139b7a5a71b477fd1f93d34ae9b8971dd90e725d95ffd77fafcd8be6e4ae72afdafa47f88fb2aada38177a0e043abda878fe29d1c687f1569887c7395b52f5827c17008b99eb357f542a12b49348c788ac5fba6db1ae61cdaa3728fbdf6d65f51bcafc7bc57e8338d13c89685338f9ebf1b50438a3cb3d4779ce5f582ed5725cb44bf3fe7063ea375d30a586da2fbb41c423bad783ee34d7709f61aca54d986479b889d05f899c006ce7d1730d6881dc07bf997c62dcb65d94edf444e7a24bafa4c6016167d08b2dd4ce7627c7aba7d853e5054e787399579fedfe88be9177a7e008efb09f176a5b3dd7453d6a7a5a24f0ac562c09847994e2af754eeb9093dafcaeb3dfd0ab73026e2e22fa007dcc1efd5edc195e8e6f7c8845e5dcce638f09c67ecd998faafe53b38de747f11fb24dc4507a243cb7ded58bf3e96fb0b7b92d9dbf23aa93d2adb1218b328d620569d6d2d8fc4fabd792b34ed4bf53e1db18fa171dd887bd30a879bbafb427918dd7f9a2bac05fafc02b81a83d125baff647e54de4bcdd3dba71030eb47478e2365b68f7eafabfbeee88eb1e4cafbd9aebcf3921eaaea7ea3c6dab96d7d77f4cacff95ee46d953c88f54d7c8ee7f484edacdc0b037d3268af4a3ade60bef7dc19cf63c29ca3d66ff53ed0dec9cfde01e65763eb97754ab32fe3952a3c31329324ea75134fb7d210701c5127a23a6ad5b7687d26e6fdf92ee446818d1eb8e0eb9678e84becf3be560a2fa3fdac93035b7b856df177c5bd886703d1ef78e17835eb452c9728338e6b6756b7f6e3d04ccf61734eeb60d1d621fc01f2db45efdf0a79b58f97d04f72d45cbb56aaf6fda4fd2517055ed1abe0db65fbfa5859375d45c779ad0cc3bea483f4ea3bedacf20ee4d873d3ed8d04cf4baf9b7a1d58918d34476b7ef1cd9f3fc89e8559bbf92b673ea094f97d3e03bd71f5dcf9c1cb6e44673e807da9df081f4cc39d057940d5f7b0517f47912e7b8c7741be73050d54eb5ce51e9fff509e77658c41ecd33b3a103943e8c173ed6324e7b3d03ea13ed1a5a05e47d8d66c7f3cc8af8baabe25c9a7178863af30b62d9d6b212f88e13053de38469a547ce4d063b8e82f02994e64148d39ecb63cf795d694f0b1c7bd6dc53995e5178dc3835e575da38c7d109e916341610eb2fcc2fcc46806b9b3abff163d7431377785b5f815fda4d9d9405dda536b027bfd993501fd97e4599d4ca63ced699b1962a3557c17e6636f87a6ad630fc9514a68187454e1db273a13d45429fee10ade3e299e07194f4fcf2bfa5e894688cedefca6fc45df2ae1c96921b778ef3b2f7c8e781fd3f3dab5f6e8636ea5b4373ee61d7f7b2df6d9371ed68cffa9dd00395fb48fee2534ed9cf53aa4725cf1f1792ea1d39461d1610f425a2f0871668143f7c49a502f98816e427446f47754601cbd4c7add56bd5dcf7a87407ee24bcdbd64f82d3ef8ab6b6cddaafc7dc8a1fc87b43e17bcfb803114e8b798f8ba0d383761739e12fd83f0fc79bf6dc19d705a5a8871f86b98b53f7dd7ba730c51939c5b780a368d6d98b5afcff0cbb5d3ba46eedce2df25f7c16c9f1685bfd7f027ea3b80becc0bdfb99678943f888f43735e7f4ee84bb9428c9bfb0b78def0d2de46582bde8b0fa578837c463d163b833ce7046a5937d8afd4ee6bfb71299ea1d04abe76a243b0a163a07f82e7cdae1afe00736466fbf1a275f2dc79be7613d9dfb48f7aad43b0037d231df7b607396e57e299bd16e056fb83b8664f3a67cc8f829a9c07e390f976ce8163686196be28f439989dd70ed4dddffd457ca8f3e3b0b98cc937a1ae86ed45eb65bce8fc3d1cccce5efdbb2dfeee4279b7c5de65b66bf53a67677fd1f9fd6bd1bd4e76757b313bfb1bf6ccb6e4639268b154e7447bb5d0f38af7d4dfa64db23ef97f8cebf4b00727f8ebc8b70a7eb6a8d7e27e3bf1be47df4fa1f74be5defc6bfeb65adde04efd8545be887f5ff989d79c039642a85b79a0df8e94866b75038c2f7708bfbc4759b408f4b6c671bf6ccb9937ba97b5d3d2aa781fa75bbc879f61d63e06063e5f7fb694ce4bcf3f3c67e415bdea7b58def7288dfad66ab9880f932c85dcb7505fedc70b5603a2c83ac25797f6362cf475b1ea69988cd1b72e81dbc5fe84505b46fdbd26f307438eca67e48e72f04799d037289575e707bcf1f703de6831da1e2f5a122f5eedc9bd9ef4e0ce1c263b9ccf98ce6b9e199f91d9ce8bef4c5c727ed718fe7fb12df9e865becfe654bfd71c63b335368f0ff9a1e7585ae418c715c428a0de85dcd167e4ba36c9565f3cb7a5cf798fe4cfd7be7cc207996f1eb0403a5789476ccb3c62457984c45b365ff9eabbc5388414db92f2f031be26cff9e1fe16e35363d4d5cb71209c83e45751cee5697d07fbe9cf97d5fc29aee53f653a807e5c7fc4eba7ac261aeaa2d97fff4ff0eb7fb6e7dfb30fabec11d9861ab586867f88b2fe794e737d6cc44b55f2a482bc7bc4bee26dd079081fe33198bc7b89dc39d1058bebfc1b6abe9a3ec5d605bf1be4a6117d95d932659dbf52073d4465fdfef399789ca79ed935243651dfdaaf9ddb762c74b9ba7daf8a1deeebce7492ff8c97595b5b3b7e8bf5960c9aa3a30fbeb0ee3dd01b29da7451b276e7c41ec27e12d47e986c786d28b79f42dd3efb3d8c5744d027eb195f1bb121e7b29fadfd077eb64390a59a64ffef858ca993ef8dff0be9729442af6988af589f91db3df8ce0c7854d0b4734fb72becd20abf52661f7dc7b857e85b4fd129edf1c3e8311e6d3c8576bf382bf91b67861739d3934360cefec573abf50b00ad311f9d9da5bab76861fe6fafe5405dec4ef40c419c9f5b8abe59d057348ea96da69f43b3dd8806dd4605ad3fc55386667420778561541673f5be1bcb40fc2a62bf34881d7d444c813ef5953de3b330b63ec4828f45dac09803f866eb7368245c5b7b21f050b9ef99617cd5f030daff97bdbf8ddf73c9875e3a7bfc1fcfdbd9a93824a1d92ec7a3f03b88b5bbda9ee97ed1791e6bf42f910be8e80c6f6c2e63d58e1eada72c8f91a7cf599ca75faaa5fb46ee437a0e753b8ffaccb798b0b51d2b7c08d9da1ddd232653eaf221a41ea6f57923a5b19370d025f7e6756da647bfc7e75177d6ed2fe289ecfd6775b5aafb2efb3337ef8baeb376fd64b26579b0801776967d9a1093306dc41f22f6226026b09ca729d48f84035b2bce69bc011f964e710f582f7e7a1f317f4c605761fd4ae48e32cfb12a7204abd6c17313d8bef0dcdfaa18a8948788f131962741f91ece2b3e0c4dfbc577ac464d9ec4df15f1b6dc776ea9e75a7518bf5fe40b828dc2d7f00b7b4e81cf3f6c9c90c76455792392ec3125fef09dbbb263182394fec5388fe4d596ac17ea3d8af92d79ebe01bdaff8ff48baf6414e683d4e5933f49bf2cdef62cfd52ecb702fd426ec71fd16fe29bf3ba981a60cf48f800b5f65a4073b6108ba4bdf5572c663cc4bcad3a9a424c9884bdff6cfcf8391aa3f2908efd0d79c8f39169ce0cadddaff3471079887e7a4767b5d6541eb25cb647bedeb27daada3a3c87fba1ef8cdb99ea37bfce3da98a61fccfe985fb381c8c2e5196629d22d57fd9dd825c61111f849c0fe8db93199ffea24cdf15eb10ba20e6c3d17aa288c556bec7e3ab73a8bea85910585f128f57f213bfe6f19c06fe218f2fd0d2333c1e310f028abff52ff0787e9eace6e4693f12e43cf412c442d3ed16f43694eedf577631d13fc59aa6e7b569dc97cde8bc1a8c20161a0db67b32eef88b7d7ee25c7ffb6e5ace392dfe4fc9c3c6784d15bfaaf5b34bff6379d62b5af7a0e09848fdc6eb62a145fe277a35b7aaf34394b95fc5bc33c4e878b4f6528e31a5976ff8214116a3fe312dc526eb63c7fe25dc74f668979dd277ac31153a57ad9c93efa2b07f265992845abb19a41c63ad358671b78ff3cc65d9496d26c84392742a4287753c411ae3d373acbdef00ee30abc910fd530a678ffcb4551333afa0cb3ef4b9a57513a29fc762d19272925ab4e7ec239ea2d2a8cd6a317ab5636a41fe8d791aac2e645bbbf6c8fcf90cedc3bb35b42f6cc9f2fe1c4b7329d9d50f796e8dfdf78ffd3b0b9a3f781f0ed03f25e55362ee56afbb0f9a9616e6425e87f953b9863bdf9d8b5a71eaff2ade45913b7972d7a67d5e6576e20feaef07f43f34dbdbe0bee7b80543d33f103d1cf241a1a675c6722f53cf416cbfb569e888e38a39981eef6355ad77157299451e7723dafb4e6be13bc6f67df167fe57e6e7a0bebbaf658994db6beb491aa4a3d473e6adaffddc8c4f3ee1a3a0732bf886010bb872ed8fee4a8dae5dc3d7b96ecaf7a494f7de2dd79cd6e6448bfcdd10f617e3ba82ae9fad6f685d2273f583f57c86ff392dcd774767cfb9c68103b5e2dbe1c0bafa8e75f0b3f413f45c4a5fc24f327af6ae2c59ecbd3237ed8bf8d1a3bd93ea6cdab2ad21d1e8659277a7c426966b70b08e8cc62706d3d8cbec2c68b2fa34ee7b627d2911db156d7125fe23d5a2efa5f1cbb14b31a6e035a57c7ab5f73c8b89b3bdabdc2bd4c5ee627f31863d36ae1bf2ffa236ae9c6b5188cbd21c09a8dddc3daa2b96e2880c6f29f57b0dc95689687de768fbeeb492c0493fbf9807cdcba8887529bec5b21c11b99a9c5fc875ea481f3b7a6737d70de83f86a5b17ad10206c9c7aa3927bc6127f03c294ee90a7b7397b0021a6df977f5bda675f0f5968339ed653c1e5737eea19eee82146b5bb0ff33c53bcc8cbbbfa2bf5760f9b83ae03e74f11b2ff27737c45e9bb9d67ded44e785f35235e7e233f2fb9f81d93e8b9e7855dfb68e81dee2d88bcabc253cb6aafd957f2fbd675badc0195d686fc6e29ca10fd5aa999ebcac7d0cf350e0b8421d69ba7c771a9b40bfdd6bd6acbeafa567f9fbbe6e6b33e7765ce876abaa1f82ab4769d427faef297d77a7f27e11fed60dccdbc477d3ba6f179f29bebff29cb0ee3df29bfc3c9563b74b90d91473aa6abe184fc5b32cef37c54fa0e798d67d5ffe56efdd9e27beb2eff237da9b75667f62cee2a3b9b0e79471ee140bb73c079dffa6ec41a8d5d3e7dab57a149bb8f04e23092be6b7762dcb733b8567ebd7b376ad5f5e7648bde64c7da701bd03ab9e5ffaaef22cb191ef15f703feae9c13a1472d3dd73d0bb42461730d0d5bc6ca3a113b00709dddf9c973addfac27b007679a9efd9cf6c0407c94d765bffd36b7dbfdf9ca9eb99a3f9dad42c859e167d5b7a64bad65c06ff6fc63bebd75e7e4bebc8a7ee133edf66bb9b53f568dd49a6ddbd355a36d2efbc680acc17a95e66a76d93e7e46667b190d407680ac0c9b90439cfb8e9f127d0362dab47f09dab046ee372d4ab79d9da3b3f3ea76c32c6a803e34b022d13b80f271a0e14e7bd88b82401ffded3b96c6f0a3dd4528f1dff62530aa9e1d5d02fd967a4e4b1e1b73a94d6347d6386a9c2e745df11cf04335d177c1b4f3306be795cfbaa33c688ee471411fa87c56d418cacfef7ca755b527039fc8cfccd082e6c814fabc3caf461256ae97fc5d7e8e622da555cfb2dfe4e7e91c2ac766bf49cf0f46a9afdb2f95733146a9af91dfe4e7adb4726c83fc5d794e83785ba3f259fa9bf23ccaa2eab1e96ff2f351ea3927cb73bb55fbeffa8ef17be918577711224e19deb744e9d950b9a72ab6b94ca3be69689eed1f7c37aafa266060428c485e97c9f10aabde29609da70a2de26f9e56498fd8cb45b72aee12b12dde2acf3f3d47af09ca30e58e90bff7f5aaef2c9c96365dfa35ef4c2bef15bcc3f019e57706d0e3e6a5ea1dc468af981b7d67a6df92c0eda67e257d149ea9d813e8db53b3469bfe5671068d35aea5eaecec75619da207d33eb65d8bd5b21c7c136ac6b3f7453796f8eeca73a298d559037695db050c2f160bf18c9f67941b76acf262d423b04ff33cf129c601609f65c5dfacc07347bb90dc43eccf8bfaa603f8e0640e7747c7fd227be32e3a6dd76cd53ec3ee057bb63c172b50ef49140d5f1bd5f3623cbf765e9857f7680cdad3e83e4d1f8d8377d0fa9c3f1c8bdf9bda71040dd5ef93b81775fb1338c6f5f11812cfaf9d8bc4e7c933f68dd14ae26537908d61e394fb4e94be0fba74dd5a5cf1cc1d75defa7d099b73a8277bb4a690eaf90fd7d514f7bf6e1cbca7c96b601aa710fcb75f8e77b31eed5393f6d512cf70bcf28abd48c3dde8f278df217ef470bf22dd4ed61a95ef380e620b97315d57e0e720b6e7a28bf87b4e43c2cf00ccabd8cdd9da3bb416aefb31a1df9d9b761a9a9d38d29303b197a301f83fef747c2dcc0cacdf01df25f2cb30577bdf8583d121ca88de743b2b7d7206c7bf3f16bc461ce61a65c631725654df25fbb72ae165beeb5c676b0fcdd12122ba8e7e8c6dc85d10fff6b31be15df4fd4e3c5d744e80c9e876189d22065faf930f7b1a9179493498a7c186d864491a6629f0ca90c5d4cc340d1bb886e1eb2c9e2cba68032dba7766ab96e6aa8978e0c7a21b784dfb1e99ed13e0faa51a9db38ce10dfd071b61737e091cc01285b3a1f59685fd3bdd29af6f0f0d8cd30d0dc8adf8edbb5bf0257b94ff7bd8534eced7f86b49cf8bcc8b9d9d4bcf81cc1feb40b83c025ac1f3b1e38ab950dd7f4ee6728f4ce373ddd0629bd20bd4b0b8587be6f7ba5436ceef141b455b9bf601fa4fe17e7e022e3dd1adb18656d080c037f96bbcd3e295f837f5e9c1b9727c911a3c54f497207ded29cd1d25da392a67e00e8f1863bb721ac7bec11c7b40f4aacaec7be4dc34b927cddab5fabe63434d9097a55ae018f775dec984ed3537e67697da5e52df1933bd034d426c49d0f548d875c40e5b51bbee28e1d21f424277e695f0066e2b0e7b5ead2dc731ac116b8ae2df360eef2cef57f45382f5417c97e947af3f6385ae3709bdd357b07727fcbc6747a2b77b8ef57b0cb907ca1eb37390f0b0f97c72dfb51ac16086982c0ac684dcbf81fb64d9f3a21fc386c6497a86e40b60f39431e0a53a079c8f3206ea47e8c3207bb0762dd6f3848df59734ef43a819b9c0d7ed48b63039d3b24f674ce956c2c1a7b9b3e91d7871a12703f797a2cfac30972b3f2f693cdcd78116fb80472fce166beba8fe6b46d40ee3eb3aaaf9c4e91d6c56f0ade13b0ccf0c74e0c1eda7f47766c7ca7d57605d926f879fbfda0f4baaf5a17eabc2f347980bee4da1df10c74ed340bf5e0a9aad98631266d19dff1dce8ef0e529e4c10f1d4633c57e01d279e23b47cf9dc51f832ba10db0cdc78bce7f8683537bf8ba57fc748cff96cf5ce49331de51eafb2bc534f09bf3a26fff3f157e5499d749fee6d628d8f03b7664bc73bc488b63fe288ec9e63e29f8a9c77c5fae313f57797dbc0771b73d346dc05895e99aded50a7d0b749e52ef61710fb89fef3f1c63ea751fbf37b5cabe1d485fc85b7e2dba15fe51719722d3d84d80b7820e21fa74d0b5509abb4cf2eeebdab401470b7d7369ee35ed23950f105f09328be3f98ab9a71a60ba3747644ed7406f6d11571fe9056519933bdd9f1fbdce3ec4f806ef4546e31d87426f492283531feb5e81ff421d64af9267e1f8babd2df07d169781f7010b48e28b741ed8c34cd004dbdb4341be50df6a25ffa57f6b65417364788eb51f4bfad1786035bc94d167914fc0b7ce9e33df8e91bea97e96dc2367e4b0731432f85a905bd7386cda1b9bdd11b10e26eba533d7b89c62f48b3935e97de918577ea7176a3f2a182ff32fe116e24b7b2976ba57be8db937455e8fbac50ef68ee878ec1e7f7b9d542e0b3941e9469613e362af195aebebbb12ef4739700c98bef3fa13f680ea2dff410c421667b14601608028b197033bc337940766601aa053085ff91effbbaa2f6bb37b17727818ffcabb0de84197a567a2bbbf29f32dd23bca5cec450dfd6bae21dc2bb12f4f9f0fd2351d433d37c8ef83382e7f5fa65be9ccc8fd441a71f453fa6e6b65790618aca3d46bda79a8a7baefdc5a90d73c20fc05f2a98157c03d76ad4fdfed326c392dc8313f82dd61c8577208cfd98abe6c947fd379ee39cd418ce3bf476f1fbc9f6c950ed76a3fea1b81b1555c37dcc9cd7503f188fe3c8d4cb05db230b353a0df2c057b7c68767781d9de78ce2d1e9a7e1ee85a8c39b1adbf43358602efcef5dbc5cb8c23f4a9e0358ed131d04749d023fa4367c7748b510efdb4e8f857d01f7cfafe642be250441f613ac0b0e789f15e1ff66757e6a3ac97c68ab0ff26e4ad6b1327851edd91995cfc87f117e0b1b3306b6b01b9d77dc173273b72cfe61758774d6c0a6a15f59b4ee86c8d985f8079b676a04687d631628d8184a758358755d0a0fefb9c6356d379b534fedbbde4eb780d74c012213214bfa177606e6bc00bb22e913bfac49efee53e1e6196eae4fe7c61bf837e4b6d6c052734805e2cf87d611b8bfc9ef7269d77b36cb3867abb1166d84b0db03e2bfbd8cf2f2bfa1ccac3299799287750571d121d97f063c52e9ae7ef353a35ec53637e59511fdc24b392c0bca25cca257d7ad1fdf4dcf9e7bad7d9fb0bda2b0ce58416ee6a6c925e82fbd53bc6a33c946567ece986e6e9713cc61e786d4597e0ef87e0f346f953d78b42ec0bbb0b484b44c6b492c84cf5ea5c0df977de3709b17da96d29e552c7bf161d455673dda3b0b7828ee1aeee7c77fee6b9f34394adf64bee3be8ec2abeb193642fecdb78706a936747f995e8afd2fe711e09cf093dc44a22d3da0f7b09e84664df3e28aece037ec2305979cf38ec3fc9fbfc805e6f9be9c9772bf338e4df0b317723f79b886f5b958301329bc776cbefd6e49cf0df94b8bab023ab730e2a725bd6441fc9e6e97b758ec37d01f94f71212700f22cb78ff21b6c900f736a8b33da52e2366817ecec4330989dd6ce8b94a3374ac93c7da7f5e9bb53e6bbc2fc6a4a3f8466085ffbb5e0f1f633d49e986de8a7531327faa43689e47bf3a1d750a4bfa83e4e55feed3dd7fa15e92d411fe05b67f101940d55f9e3621e8ccf0a4c67cf79893dba87a2eecc3e474e230da1b7ec4acc69b08d03c057957b9e200d4c9cdb61adaf4a7ece7fea7b0e5d3b0d77db2f7ccfe9796dda39c5515886647f017781e119433d68b52f59aca9d2b74963856d3947545e37d6d189bd1e9aad2470586ffa92bf93c6a5c95ed990b324d968f2fcb84c79c2cf55f0371a39c64d0deaf3021da8c003eade1d35fccc233c36617a3cfa5ce0fb3bd48dc41d16b695ea2b857bb728ce818e9985624c320e9b9f7a9fb90f4af6df86fae910f6b1973fe581747cb015e8dad97fe35aa8ff6745eea33296e43f2d8d9b2bbc96cde51cd03ef1935e97c676c303b1899c8626efe3d1775abbc864398d680bb37785fd5d5937c2cea5d4e37eedb4f6be3b821ef0e01733cbf79ce90c916a1b1dc8b9a979c0fd7d71cde44cc64629fffa32c9bb4bcf21fafa367e5b60bf41df691159917b68cf10feb18b309e759f64b427bc49f4a19718638a96867809ab73291f19e648f576ba47237286d57379c3dab6c37df8da394f979d780d38ef2abf0ab2f699e8db646dd2dd3c20df7ae13d4e697c4c99cfd894e9b2b3a736637bd88b28fee30cfd92d2bc598c66946f0fe4b772ce35b115bb7bcf696981de18aff24e0ee79777d360679f7c77446da1d625d8340e280b454fc2b563df8726e89e704718efa99b3fbd7fc5f96f58ee5e71fe6a2fff10ef8cf4debb3b4f97b487c4e3355abfd72ee4a510795d9065e5b90ab9cf7c286c0eaabf73bca8f3f5b6ae916bed697d54458ffb3fb46391e74fd7ce2985bcd5fb49ee3387f24be0a427c3817df6007f56b113004f7dedb4f4403fa58a2da4a7dabad73d407e3cbf3b33052bca77947e99445ee66bd74f22d32ec50fa59cb536d3792be3998328f7dc4e5996aab695826f665359c76487daf79bc73273511374127970157141c0bc93e65523272f5166e744e6507beaa87eb7dc2751b609c89e56fa4c71acbd82c945d6c6fd8950ebf0d8ce31a1af2091637f293d6259ef92a2feda84dc793597f4b13f84d3a2d7abf07fa83617ab3592e9177815cba345992dec0c94bdfcdf588f6e937156e81f61e3df9f9e2fdda762ee929ffb8e6dd13d14fe12317f22f779df49661355cf9fdd53d42384fd0435ba20db95e7aaf71a6d7cb37d8d9c1be4e4067ae314e8adf12ac79eaf01e0bfbfc49e59e60b85b3606b3664bee1ef46a9bf92e78a6b5e56d97b4bad4df7888f21db0b33c92661fab01ab350e623db5c1573fb49e9b3c59f7bdb28fe59919febdc8e816ed9c1ce4afc0cce4d8c9df3ff3e179f2b8c57ee192bf34be61b25ba73afcbe5f1f336c389ce63d4167dec698e0d1d8be66f48f11ae5fd4da0b78fbe63402e088bedb90bc97630fbb10fb14c960b51c9ebc43c4af6017edbef7599dcadf627996acdc798afe71a97628e3c968d71afaa58395bff64671dd70ee00b57c4cd999ced48fbd7627aebb126269704e6ede235ec73a81b99bfe8fc07eae4cdf6a7edb4ee9ee3a7633eee96d003c4c1f87c32eb12ec2c2ddcd988272a9ee5b104f9d970b0dd1763e622f645e5ff2bed015bef53516b6e3e2be4b8debe827e855828a87f53fbd663be4a07fd971ed5bbbe41a768abb99af02da2cf12ed401a0b089add96941f8ab5cf659ae563b11ccd5ff629627942cc86a7f509d777692d91f9f369dbb6b846c2cfe5ba42b9ce68cc7db957f6fda2dd8a3af8ab164f96fd3a1b89f9a42b6c246a63631e40c26b7268deaf44434c7e37011b6bd1d98ff313d5a33b3f87125d0abb0ac770749ca38bd8c2b81e9bbe6b687f55fa43e9bb5feb0a522ec8b282f616dd3bf21bec2f2bf71a425cb9eec724f30f01f423a758155cf7c71e45d06f7d603542e0f51873a0674d6cc59cf05cecdbdece233349826c7e7fdee78edf827c399a335d41bffc3ba81b0dbfd22faf61666fd78e053dbe4b7aaa999ea3acfd1b7c34808d946ac43e62f843153c98df8b1a5d93ee9fb09b1efb66e8f31b466f5762c7a4be997e92350a7f33c8dd03f75bf6b49bec5f60b42cec892de6bd404ca0f39fe16b87f048fa8d5ade2bfca2af9d3abe1cb854dff916fde3fc751eef2cde8742de93b2078acf8a7c43dcffea5c8079407839f5e3fe1e63ae2c7ebb940fd5f8535eaf9e5f05afa73dbf4e3eb937bac8f7409da49546c41e77bbda3ba7ef029f6f42beee27fb77e0d8272fb3f3a5eec56e83f16beb00bd9b5e67e7e9727a9e1af4ef1013b0774173d41a1ab6b6766e7f40cbf6291ccc5b053a8e67a6fde2398d6b406d433a3fb04be8bd05fdd4cd5bd06b24cce37cd2eb7e4c76961639b4ae81dacf6caf3cbd7d0e898eb4681d033ddcb371a82cfe1becfd57ed7f0d8d53e02eaeb1d36844cfbcefdcbb11d1f1f979b95630b5594c650f580dbf962fb4dfb35d2983c2e6bce16da90ce8956d41a7a17d69e3cb63a8f12afcdb6a60dfd795f108f977b9d6324a990f3e62fecfaa5897f24cf1fd8775ba50efcff2bde4f889bc968a38cd3d1ad81b5eeb296c23c5c6a8897bf09e5041d3e2fda0680fff247056e83b5f40ffb50bf418dc74e3c06c6fa1077e8fddb57921be4ce37dabd29a791c05fa762a384a22d7edfbf18c7633a0fde0143f6a31cec16ba031c79ac579bea1ef89dc6b91af0dfa19cfd1053f8cd1f0dd51ab323e2d64ae84b3a2c85c32379ee72ec9328c99eab626d762137a183a35fb9d7765da28e0ac24cc0657753a39cfd2384545bd8bad539603f4eecfc05727e5232a73cdc5f7a4f82bafdda2315ccc3f6882bf427c4bca8f52f02da8fd007adae3d8ab72b716ce8be2dbc1bc162557aa36fe3a57eaddff9dfbbdaea99d5fd36f7ce73e04cde8fc4c7c0fea4f0662be600f319a363b4ffb26a5da065187877792dd0fa243de22c7cedfab6dec5a9928afeb8935d4d8dfcab996e957f88f2bce3711f9f426bc7f2c9cf3e16b1b41f9be4a77d2bda9c47c907e2fc4d36bf10bc46f157483ba3dac7368a6a7d0a4f8373266a8a9e232783de4ab5e31bf30936a955c8bd7eb78b04f988fcddfe567c4ff4e6862e7bbb3a7e3d1e4ac297fe6bc91ce97c5d9e3e7ed1e4a9b03a9b602f786d3f0c3d8b46aef48798f280bd45ea73f810f521e8ff80595f356e48ce263e7724b7be0fb27e7c37ca05fc8b9ffd9fb07798c0399a6c69c375c69ee298b01a87452b0c5649b48ce35e572e5ada0274ab17421eb5e7f4ab1e17dadec2aecb9c437b64fe649d6df7bec596e686bd74fabeebdfcbba2073e1f83784af7637d7801af38b3f3b5e31f38064606ba1fcc41d1ed0c8ad5a1e47d2539e010f53abb15c610ff7ab43fe4194527a73873153213c6e5e3115b0f7ce1e931ea35a478fa837c4b56532ee511c15c53e5ef0fe7abd4b4ab395b9f724d11f3f156e3f748b8331c23e80bd9bee0757a581328e73b397f24a3211ec3eaea29cfc3bff50a3e4bd527cec7825a6fd34e085f72745a0f6468f1aad94d3d1d6ae393a129d77eae2a7d93d29c8a7a30ad4599d1f5ce181f7ae85f5773c112659d722d89eabf94b070786d13d4f3a0cf1e7983a88352bed1627e7fc811a9f9ada86380cfbcf0ec67a0b7eed160d4c01e6d097bf7c8f201288d9e318e4f7b59f5aec571988fe9099da462cf2a7211594ca7929e31171c69b564e7fe133b39bdafa41cbbaa6faf5d4bb61394d82ba5b55190a51af3bb42fdcf46c876852eff3d1df7511c49aad92dc691a036f1e039b7c33bf830959856d18729d74d315bfa814e2bf70962732dd21be688483a0bc6647bc6216cc86724d96fb6a84151e920a9b7e1448ddb8fe1e0f4441cbe02fbea55a1d1e7b1a69478b194afcfead69ec80595ef02cf2f66fd10ff011e00c52a8cd1f7925c227716874dfb0ab62bcb5fa5b5226ba7b5a3e3abb943146392f04e3ade563aefeffb360678ee553a31f7aff48a712cd9c721f4eb6a3fa73a37e137c29a175cc3aa3e175c8927b0b16229bf5dcddba6fe8e2bd6369472ef128956f698dffbb3b63656ae6f2cd4be327d9ecdbf94d344e7547c8e7fb358e728f94794bc63e089f84ea1a658ae79067f377b9f3fc7ebea77451e2dd57abf96e3ceb2af85e7d17c9df3aec811a6f3d53c5bc8efe6b57b345f9fdffb3fc59544fb1e6ad06a7121a10e52c55734ee9154a353addba9cffc2bb67a9fc5c5203750877ee10caf96fb6bac4b60de529a1b16538c8743b0f32f6b9dbc27c5081d165fc47d93b16f25df801c533c84391f6b2bf98673df592939a16f98e7ca6ac421bef441711c3cbd7d0c4c9bde416e4b8fa4ef883bba9bc68163b486a6fdb27667f1da9d03f61ade733b09b35b0bfab940bed3ede0e9a9160cb63cce8335bc14a3a5a01f8f3787b7a0394fdf3644061877b69ea039df93bd757ba3d740bf1dc9dd20df0b1bd70dafe71a4c8f9ccf0ca62cbf2f191ad70d8b03babd11eea3922b6ee4ca9e02bef7291531de97d826b696eb5fd6607741fc6ae33b491265e925dc741ba1be02fc2872760ba715d3fd23bf11f99105cdd1af08ce1e6b0c18af96f7aee017b9a3bfc762ff3ef94e63e3bba35ffea6fbc1e5849e9e3d7d154f7b2fb7c967973d9b04660a79ade49eb0673dddd07c27ba84bb6d3c93cfbb36c7e126f9d1651a7ea17a95fa375a5b06eb21f288d8aa5ff94c1c9ddf9ff497fdf3bc76e680371c0d788c5bd5ab389d77d350c4d60107fe416ec5cf4a3bc6ec7ecab424f95deee4eed073035eb3cad2dd7a3067bfa7ef8097744b65da959f1f1bc7dba4d7c9dd42cd2ccba7a732e7ef21ed8729c7e854dc8f3daf051d6f3a9749de69ffda74a7811edd8766e7e62156cc7968768a795b1f725df57bded9798bf0c7f0b57f1cf6a2cde8be8fa79b6e7ba26032ab38254cb68e3788411becc879afce81d9dec9b9bee30daf8d16f1c8feede237a7f148ef036ebbefbcc4237db81bf612f9cce2a03982fe306b771a07595b1b9a5103f4f91de185b3438d7e2dd5c22b347814790a763147006befd4da0de5fcc7984b25d540777e505d07be55f45b614da03ac6a4d7fdf45c4b9b4b67ceef04c37c781c3fe76b53e3a1e9d6775adada9d57d68051cc3bad5a46594908f54dd40fc3f3a8c4981ef6433d44b47f4e44f866293ff8099f6d7ee035dbf4fe32df0fe4a8043bc05cafae0955fdb5d23d25f39fc9f7a8cec740d66996e9b91c9be6f616c7c4807c5789c6c2f857cef3327ec8fbff84ddaecee3b34a2f62f92df5b1ed79961ec95d29e3663f7a17e8d524b653011f18f4aa85a0c5dad899f4cc9fd42096724ef978e48e372147340d4c5603853696a27f649d63a1662ce17941e8634b02f32ae95954469a724e932d747962c30f468dc84c5a287fa9fc1a7473df991f402e3ed4a3a8af41cabf0feffbb8947f33b8d1fa0985271d94bbd3dbffbdccda9abfdcff3dde74ed20a3f57ac64fde23d6eb5d998ef12847e65fc88de99ca78b97ebffd1fa41533aa365e36392897bc8722ee5380eabf3f07bdd2bca95a27ef5749c1f7c803ebd8365ff26d1bd088f837343ac38fa77df4d12f025d8d2b9a30c6a84ba9d038f3084fc27b21962739bf00791cd9e3b3afbee7637e975769e13a520abef1e91db09596794ad766f1bc45584de6f4c460f8ef1a869dfc9bd7fdb74769007df0b8fe41b23ddd8f920ff67571cd7c2b8c57d4f737c56d44edec734e74cd623582e1e9dbfaad380ad2efad7c643e7e7998dff9657e806928e0eb68e71a4738d94dca549fe93d2119943036ab97dd78a65193f1c587bc277d76053311b89e8e1786ee301d98fd17dd2ebfe45f6cfd7c9de75eed6e64af6e493d6bbff180ee679e4acaa74ad627d7030223c366ba5ef8ba7e62bea849d4e2ce902d00327dccdf79ed3da4e241d92f2ee3dd0c46e7a24fbc3cf8bec3de66445ffcabeee841d447480ea5cd5d9f9112d48fb58ca1f131898e823737241dfae7c3fc81afad625704607caf3efbeeb93bd3a2a7cda9dc6916b41bf40c233419e6c6ddd774764feccde02deb2d2db276e5fd6cc5d79769104a0278b3b177f2cae64ce4037935e479b1a8d68fc148df88467e01dce8c3cc8ecd6a8d1a8cca3e3b45ad46515f9a4e22afa12de10abd52dd8f0447f29ea1a4c9f65fa4131ee81380b259d1ade917c01899c3b7c1cbe4e9fd26ba56f16727ad2fbdc351a9e73e3b890d5710cf5b982ff86c922a817acd651e8fde883ccad8a473ceb0f3e841a19db387aa2d716c7930e738849405c036420f49a4def81de6278a8906f117d8105fa2fe9dc803be3b9a38afa1ba8f967f982981f47fd2c2aee6cfb04b5b55fc41905de11db47feef2c308d1dc3c11df63ab7614f8b6da77509339613aeec938243bb328d3c32d324e8f1b51c42bdfd55bec79f61cb4ae3f3f9d660c4521cb96868cc73cf81de130afeafc06060b9396d62abe75ee98c0b3a898ca920d784808cb2d18f5da89321e73b3481dec9df681f35c461f34c320f2badad2551ee965cb78ef39df404662ab16f652cd40adc57c85367f483f575384e357e1ec8dd322ea96c97992dc06efd185c397d8a1c7ec4fd1b3ae99d9dcdd24c7ffb029781e31c147ea774afe6ca8b79d1eff7fa6d9e238fb584f4bd4e0273c0f9d4d4a720df64bc02e3d6c2c742dffd0267571d43daef27f35bf8b92a7c77a5dbda0c7a3656da814bdf9dbf42ff4925e64b73ae41563ec8c986df95fe45d03f71611a553d613e68efc8a1e74effa8d70ba335c6a7d6ae7509766a7c70a6b5ad55df58ccedf66c668f568b9531ade9fff26b6977bbabadfd61af5abf56dbb9b1dada7de9d9bcec5fe9c721e655248199fe8039678047c7654695fcf278dc90d606509b538d2b727f7512eee607cfb98a7ac80a5ef59d5a38963766cb382ac813292faec01a17f652a5dc28d4bfd5ca8d608776e9878cc74cf31ef9bf4dffe839d17db2e92e219651b80b6cff02a79dfb8beed677e7c9dab9ddbfb229552cbeea5c40f999a20cff6a7c1fcfd87c808d46e69a8659e31064ab18ef9e9f04a68819515cf1aa6f49f15f8a5b58277f780de17f4dfed0da917f267fe87e51ba9cd21a95edb3f287f0a024e8f3dc448aa7add687850d717fca18e0b5bc41aef5226b9d4af5928f6ac6c8dd909fa577853fcb6b6d69dfe13cdcf25ae0843ecfdf07f9b548943590bf913bb7e4f56d985fcefeade2ac0afd9ef745a8c6e72576b43634ad96a7df0e5e5ea55f18478abbcb73a357f578ba895cd344cf82ac6dc93075690d1060e5fabaad8d99aeb03ca9fb93729c5dbe76f1ddcab5926fcbdfe17a086214b4b5b521c624b2dce33986257cf3bafa5939d715fc312a4e929d426fc35e52476ff672db5eccfbf662be62bdc6c06e43ec62494657d7f51770864d9e47c7741bba167a2688934b7f13b582bcce176cf0741764c04fcf81fe727a842113e9c9213057f1b877fccd9efba5de1315c798d28bcd74437687449d6f01539d9c11d703a98c1905f8ad2412f36674a2e84e85bc0e9a074a6d211ff1e6efdcb650718efe53c4e227df1658b7841ecbb597429fe3e74075351547e76da3f2b0b13a1e391f8e214bf7551e939f5fa8605b2bf928d80f9fc95fe78b3e0162ffa89c53b1aea90e770976f343407bb9b0bf0b1c5e15cb8bfa14e5dc9c4d98d9c9fa5ea833a57da157c42e7747f7b5eba7c1602be90e42c68c075623d4ad341ccc0f807982ba0ac40218ee7760a6a7b53bbf8f172aae3edec58a35f70c4a83d62570567b718612c6b6448774ff693db03a5e615cecdfbe4a92304feebe639f8bef8e367e098b89fe6fafdc136643b1bb00b851d4a6c01824598323db15f6333d3cb8acdc96f0e34bd8a5032bf59d977308f59689bc8ebfca1854329e3ca5938a6f3ca6174273a3dc778cdf95f426fa35603f884552987f57da13c41696f625fe18dccaebfd37f7d456e8a2a61e7ba6f62adad4ac5bc1d3a73ca571dcf9a67d247ae4a8a1ed655e5ef70ca5ed52fd85529ff730ae89fb43732aee4a7cbadf48c23eda795536ded231ae5496c931c53bb73357c6d6afac99b0d2888e3b73e65ba5ce82cb47b01dabec58697c720fcbb1716adfd01c3f1bfaef084c49ba1e357f98d805842f35822cbd818f4cd1d5ebfd7590e7d1243ab4a571bb4eb289040ec889ea5d56a4f8f3104324467bb90617d910fb35e65826aaef98cbea45e734553023253c1afe2ef4023947ceed387cfd194f212f98fd56d667316ed9fa70a1979cf1e1e63cc7d1f2dc2e9e05a5f51afde158a13b686b33bd4f32422309db1bae07c875a7149b9fe8b45ddf9cf19a1a621b057957d2a9b06793a46329b99bf8ad4e5bde4f35171331ef10b7928f49be49f642f29fb4ae529ef579cd7c202aed7e598743e7487d384339b763efa3ed77f037dd64687651ee381dee17c17c42a8c58a3167ef3b3dc9e45a6a7a1f9026f13b8bcaba514ed3ac97dd07edc185be06c0d9bcf81b8a8deeb400331b693b49893e5b95cb25fb9aa57c6588ed93f512b9eb392f7cbcea755f99dc6071b4b826c74896df74ad6a5e94646bd0df5b7bcf9d02d6e313f11031fefd9fe7cb333e06765c738a7b21fccf07e877e9a41ac50a05bf89c00445be0eb945455f47af7b9864abf3d02432b4f17cede6173109b4372b6b30644c3039570fec2b9aa7c4fbaea12fc26aacdd39c5c183f81bf481f39a345f8ff908203faae8377b9a1e0e2162ed7f467db64750075bcce92bfb90116743f22177945c7639dfef8b5a8bfb8a9ed98ceac7709e7f86697402fc7ad3be4bd80e2c3f95f72760b24dde637ad6ff7d1a927a04000e6aa1975f447378781e2fafaf2df3a131d4e78e3e99fe87f93f4c9f26ef61bcfe5b7969529e08f87f73d9cf57edeb0a1c43233cae8e96685f907b98594e5dee9a927b5181f380b69cd45783caefba5a89a2ee2d74ec522d4440e6e7527d5ade4fd59649a4f9639c2422b21a71f5b714470cce71edbcf03a1d31e7ade883f2351f1574fce86e28d8fdac2770f800bf9f3f53c967e5de1a9c17011df56326f3269b6e37d8702ca33bfbe6da9d721e21fa93e0197914a788f61d957c3e73a97731cb5fb30e3ea129dd8bbd9e76a57cfe4af479df1de965ec5a4bf3dcf9c1637960662385beb7db763634da3cf779edb43efd45479b7c76aa7193fab724c8a2ca3b16d5de2feb12ecfc34dccd2a65bba42794eb4ce95e031619dbdbc7984b1f939de8e131c6f8612937659447f5eff4b46b29bfa6179ea6bd07efd09cef49af73774b39229ddd7471cd27afd35da5de3e90c61914fa79897bc871c2649d7c9487f15b99b69f972bd2b7d59c6388b70c3dec5355976b4a7f97e37d491236ba89c05e57eed7de73ad99e7cef755b9a233d0ff4e7790eb26a1adf99ed2753234e78790f65e0deb7ad20eb65f60a4fc5b7780f57bf8b7b0874ab995a297ed00f792e6ac269897fa2fe8ca3056f28c6efc10db4cf43dd5a45ac995a839307e9e3d5a5b361e1ca10ee06dd3c98703ed20fac61d78ee1eb191168e906d904355915b066bb19f79b7b519e5a59c2dd0270bf51b7ba465094fc638926f63cd44a38c8ff6f41c36e5f93fc2562b8f8177a18227f05a22d1eb08f214f83d93713c42d3d0d6bd2b8d472749a8a5e7276c15dc17358f1dea1c56305e156f801c7876cfd53a3bd1e3a6ba378d54b3f627357a728dfa82fb3a4a7ce840d6ee9bf64be11b53b56f843ab725ef8d20de89ccf6c4afea7dd3686b81466cddca9a0cd96ec773313bb1ef2607acd5207afaff0ecc1c1adf1f08dd1b6986f7c126ff5d65c3d5e0e0131a7b848783fb50e80ff13fc1d38af6ddc3fb42ee23fa85b93e0ef7117bfc1bf7c800bebc67cf2b9868e9777d6f3096e87352d32f45e8ed0fe37155fe349c0bedc348e917e76ef0589c882bd1faebb152b7cced8b84eb221057e5e72df32ea2eb1fc685fe9dde6e947aceb1a24e5bf27ff0be4ad8cffd512fec8fc13596f056c9bcaad65e5b2b8d63ca98dc651b8afb40456dbce40355301d92a1c3c7a2bd7fd8bf13312fdacb87f22966ff29bfb3fd194bb9be92dd277aee88be422a86dfd7bc1de85eee9df8cd7cd8ab9ce30e75b766bb114939b1d4afb085fc5ebca3cfe7b7fe733fc037fb62189f9e6edf43bd9d3fd12303f46ea96fddbec647f810d351a64b499fe2b98f157d5c559bfc797bb938df8a7cec24a9c23914fabed29b8ed34f25068c69dc5147785e06ae1153694be42891577facdbd7d43955d644fd3fddfe4bdd9eebf3aa0e8f34276a9c587e6cbbacf7f7776f5087c17168fe926b91c70b512b246a36c0ff2ef4f15e943cafcb4fff811da0c8af80cc1df5f8a85c7783797195f366b91ae4fd72bd0ee6c555d7b216d68db451f6313f92c36883976c08d69b7e611af7e7e4c3f4abb893ec8fbf17fd565fe01a305bfb3af9ec4bb676a55d0eb8e7bedecedf17dda9277076fe77c41dcaebec7553729e256c8bba9a40622bba962df1f57d94b50f7eaf53f63d55d2587ab725bf6a9d9feba19d59fafe53b18c622edac33cf4c237aab0552dcfed3cc0886924a182f15dac47aa9555d233a5f7ebbe097763e918c5faa23fc487798089cd622be6a8351c8c1a41d602ffb00fd803a2467a68a6e7325645575b0f460d4a0b525da11d4fa8de26d71a12992ad5c642cf8ae160be873e524a5d33abc793b02030cefe93eaa605cc04258e6c794eab35346f17df34ee6b09779c62acec22c7c87de89d087dd02e61768c3d3237317f564327bd0b7d3a598df7c72463f57e578ab982f573ecdf81635ce5ffb6e93eb3bfb17a5df837fad93f263beb1238b6caab907f88390b9c19c8877d6318fba691bf3b9d2339a3f5c03eaf75fcefc81df1bfc37fdba383af27f85d734ef455c233629fe83786fc1b5bdf8dad395b3bb723fe969ea3ccce2313c62536f7dd5fa567faef9cac27d01b306e9819679fc879f1df8bb513edd9b3bedb25b2399eb098c3c0a23cca3abc67f43dfd76f0d818584f49debd139d7eb64bf1efcdee71ed02ff8b23d3f84d9fd13ce79452dc14e91bf3947c83dc4958cf609eaf1d9c2fe8442bfbece3fc88ce7f5a35e749b883b1294631a199f91de324ff0a568e2c53146ca15adf485ff858d49a4b6a2fa97ffb93de2c817477db6ede12f81e76451ddbbfdeaba5918403196b948f51897ba3f684301ae46e8ccd1705e346e82bb0ee33c7b629c843725fc7c691e86b2feee22ac62bf5bb38deaccd35b63ee75141773b796e47c2bb9971bc9bb71ee0dddc43d74ec26c559293cebdaf4f7a1ddd3234626b4b7bd8c53ac50dc421ce417316fb4d3286718e4c3bf5b14fa6a237d3da6dec0b53539fcfeb82f36e9bdd8f21d6a9437d329933ab23a639807f0f692fa47fa7969bc855a98e9bcead62afa5b95ef99cb07ebb640fc3feab77e02acba202b62bef0dcf31440af5c780052deb092cd64564f493983c455c131993e7d9fa65b2ae0a5bb916df4ec2b1537dd233a9afe9232c15ac53fc637c783c5ff3a13fe6dfeb4df5dfe789f25cffebb81f840fc93d7e1ff97e081d7e0387aab65795ecdbe53a25f4285f55d5f6576258f1becfd8fb4fee4925d163e97ed4628095f53da55616e6ebe4ccdf9c44387771cfd41ed8259c41ba2fda3fc849e6ba7c955db1f09d7983c8fc5adbc21ea5fec0feacb00f0083ab1e8ba01ab7f21fe02ba15f2eb3b79163d5633957ce97fb85ebe269c59e434c56d1fdb12bb0f0e08e26228723daafc97e10bb97d6fe79bad5085cfb483113b91f1efa10ecec33e0785019fb1d9ba680877924dff6b1fe0c786dd8b4a97f36d559be2ade7f2be1b97a39e575664ae686fd168ab62ce193b8966b98d9fada6937c2fc255e381ed1e93fbda67d8a9c5b1299ed9ce5e54838758728839a0ecc61cdd21c30ca385e6725ae15bc4f7403d0ada8ceb5765a075183b4673934e767b13efdacdd005c311157fd41758ebde7589f91d36804a6a105cde171f8279855fd4612ecb6bc9f54d10ea2987d5b56ab1de9ed7c9dc3fac4dc590f2be9dd80c8377a7ed42e03da97ec34f837b721980d60fc3ccbbda30bb887281b403f03ba546dd0e581d95449d8b40ebede421bccb433cfb58fd1c02afe9bd66aa3ede5e9b7866f525bd26ca46116e17ccd36b11173b089d41c2e6e2bfd833c94826f4cf6552bd8b275350532fea572e7582eb7f237889f30f9b5a2986d5fc4798d9338eb7f0da74bc12909545a1eb1da8803c390e7b45d25eff34305a6bb7cc7c97d2abe6f913bf731d9519e4bedf7af7c7a8c6eeb3040c3a67d9af4ba67055f53c489ee91a3c5e35cb29116d778da2be593dd0b764f4e655d0dd627d1dba7c4eeb80d079a5adf26f55351e5358bd7eea1268dcbfb26ee93bb40ec8df2dfb127d978b165f56210ff7de363d5c56071adefcd729e0d59d3147289783ecee7a8a11d87bd10ec242787fc9cf863d1d9ab78c4782fd15f0bb896e0cff19c96e63bf6765c6dc3f0bd7c60c71c870519f14ff04685dcdfc7aa9c977304006bbf0b7297f60a1531df96e8e5dbebdc796decf7b19d2479738daddeb6b44e941da93683fba81d657de9093b8aed6d415feb5e8341650e4d120eba47d5b7aaf496913112a5beec141bc44c2ea1be6258d0a807e8d02bf1ec390dc203eebc2edcec1e037d9e847a124b724aed33407bed2c1d03eac1978ea1ad7bad93e7c6e55cc6af73f099ce778f4ca94f9724db988e00f7a45783f9585fbba3e2523ce87dc5f6df83fdb7b4211d03702ac05e7b88e1015848e16ed6c66f705a3c4d99bf0ae4dd888c7b09c959b03d40fdabe29b5fc89bc19cdce13bd129022a5fd43d022c8c73a8fb9730d32ae3a8aafc2aca06a859fb3a9f9fc8c694f0cf19f640c8b11639dccd8eea1c79ded03d328d9c62ffd37e908de4bd97f0bf97f2e55f7fc663f493f09ca0614f8ba70bb0f1e87b424654e71c54d6e2efd08692f9885a175b9baf54e8ad2cdf8b318ca7ce95efc96be730516aedbb8ffa89f3dca66ff55416bd2e03d92e85f5364e6c9f7f335c07b7d8fbb8b8eea5ba6f1487a01b6611c4b7584e0e5d633cce3b37a97766f5bce97d28d46460bc784bf6cfaa9abbda0f5dcd99021e3693d76868884b21ee41a14eb88097017c36019a99b09a4b654ed383d257e2a15dde26bc6e41ee75454ef9d277e7aba041f37aea734d0acf49362fc5fd5c366dadca56a6d89abf22b7b24e8e8ccbecd838e239f391e0fbd47e833bad235eb6f061b35a8ee81b79998a2f2b7b800d44f6f3e07fddcf90d79350ffafc6f74917be99efe16ce35cbc62bf9781954686a811c0fa55bebf7bd457d467bee8377257cef55ed9233c455a21f631e4a6007fe2b8f1bac7627f67bf8ff7d893ec43fcfb2d099b73c42990fda0d48e2af6efa9c366fd77b1b5d233d48a3567ff13fdf9ab6435f4036279d136ed6d05f8361093b552cf1d7dae4b7d83f81ae53c89c0df8d2e01b38b16dd25ea3b7e4b9acfd9cf71ace1009fc37db8a57e4d2d9034d7a26f96f24f513bcceae9886ec5fc962ccf69b234ea727dd1172ad18e849da3629b9a7e1ee88d11c37891d75bd0f78f4f624309ffaf3276e7f7b097c03ea1bf6316ffca3b37620f4c967d81d1037eb85b3aecc57b792e4447a032eb3459747e0c6b72804b75820ac66c52c2e361b431e1727a5bd72f09df792dc8d22226624fbb3de9d335c9fc299d2ab642c137fec0e7893196ff0e4e2cb127b9ac388439eb19837939f2f7bd5e377d37ad341ccc582fcf03d1538381c5f3df8b7954f43b87424fbcff93eaf960de7f8c1f27f5a258abb93127f00b8a7a058e6ffecdfcc5d239f03ad387757a95f9806a4c8ef5b9eb25db80d8e2d89f6913e8f3d624b3c8fddc86997d7e3687ab728ebd28f1b2e9e39cc1afe7f731c95a97a0d9f96e4e9874bfec529d7a3907f131f66a3196f59d7af7aabda9d0271d868f525bcf4b7380fe5bfddcd1666c37a1de77679f88ec438c2aa6bb020e05f83b79aebc84ebf228af59ed89d5ba049b86a8e5e13964905ff519e876eee934bf4ae0c1ff5f9227fd547c56ee0352b5978f732e651daaef5f823c56f254287e4d42e4c27459fafb06fefec9f29d1bf25d3603fd67014386d023fae264ff303bb331fa18c87b55b928c7e1eb28fa6ebfa4025f607bb21fe9c9a122f73918e931e435af592f83525d32ab392fd72c54e4202b75324e431375c97ccd859ee2dfab5561eb51f401b77087dddef03cd9b4992f2f1c429c19fd772b62333547876890ce23c76e147347e9bb5bcf9d279366375f3bed7cedce5b1397d0aa9dbabd21e50b753c6b7e586727629b25f439f8eebc6f9b33db9eda46db9dafd2c1c2987fcc53fb6d96d33c79c4864a82dd6c3f5db03ed7b2be2fc61d9be17138b02e913bfa24fa6ea4dba003ceb397e3d0b4b7be6e9b02eb4ef2b5efecf3dc4cff5e433d4d7fefe7d758d49cb3f1a4ba46312ed456d5af81c7b053df8c52f6bcd2f76ca3f608f1f3d62572e706793ecc137dbc3cd2de1b2c9758a6c15123d8fef1fa61ff993d8cfc1efbdaf2df067d425b88b959a28ff8203f1b6dae71b4b5cfd160d4123a39eded62ce096f7cf39d74b73647179aff25e756c0fec83a38dad7804301bf4d761ec56af4e25fb9f8dbdb86fd775878373282dd3ce779c94d88590651432b3e9742ee27d417d2ffeefbe731ecd74af207c15ab66bd7d23cd41bdbc3814fbfd192fffe9b8ff3ca724c788fd526ec01b1617a9d6bc1c7a5ad098fa418a773779407cde1deed8db66be7f03b6cce736fd1dd069093807dc802f386cf3b11ed638f7bc1bf3f989e87c67533ec5563184abec670b81d253ea5d3b74d371c6e3abf916656f13827ffeeba74ee3f70cc23a7afb1e22754f1257d33bd47a601f9a5bf7adde61c31a8ced2df0b765354b5a7c03f800f649682b319694873931dd86b29af4f7bd5e2e8531eb77b9b64f314eb6eac743c088ff298e3a2af73a0711fab9fb7ce813e4fc33c3ec8bd034bf7f821ad788857c9ef67e73fc357c8d97b8b202777785ef5dbcb853d1fd95bfb63b16a998b556b641bdb525e51d838e9104b1c1c63691f7fc8ebc1f9d3f706fdb3e7ccb7e38157b9e68fc5b65c2b4bf66b671ddeb3d57ebce8fcafe16b47f193630fdf3eefcdb574d2f358c2bc64bc80da9162de629fb11f027d6e924973c75a8aaff645a59b2a6c487ef718ef4bf4f142ea4539b0afbe6968feaa05f7c5cbda79984b38c76975ee15e09211792c6afe3f547b99c8d697f344a7f9fec675f385df6f1666e925cc52eddd46795a85a51f38e979e20ad98b7aa29d0e81bf22be4ee45844f74827dc16378ebe0ecfef03cc93d942ff6be82de2e781aec533bd9d135b8de567f8ee2cf69ceb79027c2125e773f1074a8e6237302398efda6cdc896e20e55e1e3c62b39b7682b1bcf2bca95e7843390273427ced417a8900ffed25f61d3f5b3bd6c1775ad023776ca6e761ff27d101e2c84c4fc486f2755ba3baef3d708c6360429c8be227515f1ffe4ebff512cf9cf916fbec42afe1dc771a9708ed10b9f71ee4e88779f7d7d8bc5dfc1c7212b4b5d320fbdaa5387d9f1efb86992451067525f7e1403a1f53f01be86bbca918afda0f57a287318fe3d0f843da4ec2dd10f3a8196e24c59824fae3c2696dd78e95ca729d61408a7cd9526caf017e12ac5f96f783cc1de3adae9dd21cac84f668fe357eed1f20474d5d4f690d059cc83bf41078d5e2ca1ee9c27f26af97c7ce603d55797baa4d446c4bf86fcf9dd19cacf45ca409db347e83eddaffb90f36693c1ccc0f8123e188a6e24c5774fdaa3d734adfdda24e5351933898efd7c40ed38d3cdc603ebebc76c04d9674c1f75e8bd0f25f2c0ff4e17a957abccedf6332a7c5fe6fccef28ae99f53d60fd07c0c7760eb8effd9935d35a68050f5ace8d11eb6075a3d5f449b123c1c6d14ab902c53a8c90eba114c7b2b7ff1bdedfeccfc33ed1b1f8bf852d3880387a1aec6680ab8675f1d46ec17dc45ec1783e6add865c472cc59ebd9e4a37d345816e1ef5a720fb643f7d4faefcf7c5c3fd2ee068f07b43eec028c8e607a21b393af936d50d502715b81085f87a4d5f2241c329f7879fa57311f2f389f304dc02ccb9a7718bf4bc761a8d6051c889a567c3f94f9ff7da107284e7d436ae843e68af50258e083a7613fd5454c7fe3778d989d055ddfdc77802ee5ba8a73f88ed843a8e6a0344669207cd106b8dfa761e66ed7c6c5c37f4fee1d9b8a32c30db4d666f0b7db58a5f8e82a9a19dc91ed7f08f51b0b352a84725721a6a9c40b61d82ddfc22728019fd099eb970986f0f9e4f82c128f59c794bd4d5770fac3faa7cdfbeba63cc87fd96d3f8fa2e3a40acd39dc5919e1e0389af30bff984c7461ff0f1afeee342a247f0111a5bbfecbfa33ae9a8adc8f94131df52d601046d031ec5d3fc95e22c97eefb55e681859aa153fabe4a896df5497dbe953c80d2cd6f8acdc471f1381fde70ac7e56afafbc2f706b0af6ba49e41ae0e6091ef159c0d611fca924cf515797d760715c4d166f13cf810c05ace9f1e044e6f36358de9f1ff259b01ea692dff2c3376dc0650bf5d59ecead2a0704646bcd7d1338f5d5fc0eec238857654abf629a73d720767c1a366794177ea19f98edddd07cf9131e45755ddb7ac4abd8be84cd28097bf175d2abd6bf689e951ce7653c50793e34db576e179a73c2d335bf5636350ec1a625e319b1e7f6be635cd78edf1abf764a3531605f107da7e60ce6fc8ced7b054f831c87f1e64068e8ef31d8379dbfc73b41375cb790716d253d64edb23edb118d83407e65c27566422b597a8988fc12ef1dab7821e571cc1744c630c2dde8c2f2fe1ee19a51dec53180403f62f529105718256bd74ae53b511e8fda003b4d59a394fb57da3b2e079ed769b6be0331a3bb5fa9d33ce271a2e750a53ed950f0b0b0c789b48e5f05f9c872c926f2793f219397e4df0a9f277a76e9fca1be1d7418e9d909f5afb9724f0fe3ba591039cd7d6f641f3abfc1d7d66f1ffdd77decf686f138ff7afec3de119e2573e4e349df1f2b7dae9e18ef55a1057ae7198f977c6af46c145dfe2b3927ddeda22db82ee8b69e3bcae57327ff967dd0019197af43c80f50fcd844269957c83f549e378ddcd7ed3be69c6e659df8387cc53e5072dd20f7ef99b724cc22e0d934a72508541d98f57b0af8378abfe7dde3f0752fe6f0aafac5c24de727957115586dd57308d36fcf21af99435bc98591be053e78b398eb4269a16935894dbb5e5ca5bdddaa3eee223f176397fa3541df0aaab396e30f6aff08990e4b7444e5baca47ea75158c0ba8f44f68c1d1695eac6c932d95779230b3cf6c1fb92f95f12ce899aaeafcd887aa85b5ad4c37fa7c89a7053f297cbf49c72fd39ac4939fc4122c9e19eba7c5d6209d9ba4b3418fb060372bdb785fdff37ba41bd7f21dbfc6ebcdf7ee79d9bfc5ce50d17f95de7a6196ee66ee285fd0fa1062bbbaf2d999ed7ced44dd70371a8bf33e303982bcd186bc613116a517f62cf6621b1d7ccdc8c32de327aa3e2b7edf9f856efbd5b35be9d93dc402955c0fe3a79adf615c3793cdcb85d5257e199b1dcc93303b2480639baa392f9169e4ebcc388fcdb0560e4f5fe53b407b6fbe6ab1c3626d7806fadab50e504ff6aac5ef4ded2fc8dd315b171f6a3d67f104ea99ba9780f6349cf4bac7a0191dd74eebb7e827c7f46f1893d6d6229e127e8fc66ce43e9aa67f1f0fbc529e3feb87f26b21e6e6347d3847f90e057a0bfb25def78825a7e2935e22fd7608b2e30f9e1328e5f1d3bbc37f1be782c70a7ec7fa10761ba11eefa38d92dfbf9becac86a75b69d8b42ee16e4a7e3f13dd8ed6accb71d46621a6883dc06cc45e1e0ffc43a8032ef87138080fe55e76f32ccc93e678a9c60be93e9d03b3dd0cccf4bc2634d36f2016ab939ec7268be1f0bd380ef9b7e641d4d0a4771579d066bd50696f6bf51db6ef79b19f5c37a531424e1f72cdd1da79d997e77c8da32cbdafdd79ea1ba7a6bb681dca7dda84dc9363623c9659b10fbf961adf9fa29c19cafd15ddaea6dc899ea0c3e82ecb75a2a7abfb1fe552ffd05df712f6241b958e23e8378a2659fbbca27dff2afba811b9a037ae518fd9cfa132dec742d46644b49f77a49e1bbf778c6671bc6d41ce8878f0b763a8145b97fb8ed9d9f5ae71b429c6fe806ef58a18eea1a2de8fcf9dc544fe453e7a0907e48e02f69b1634b1c679b285beb1e9dc4d3e7db78bb91baf5a3c6ba69f81691b98030b7b50ce6f1163eefd42bf32b12715b91be2fcfffa507414960b3115b1238c73ca7e52a4a75e026756ca8d36183fe17c9a3ea7de53d5762aefc1b8402fca3784ef89d376dd7770ada720c8da5bdfd678cf59254f40dc7d1803e3e7528f7da4eb8f4946e912b07b6d62a772be0be32fb69cb7297c52f836688f41fa9da59a134ef79ed5ffe27a4a74cb63cff27cee84cfc1fd61f75daa0363e782fe65b16763da6786ddbf99de6e04bb59a10ff27c1f66ed26b5ef5fdf1debe8afec174fb7afcc3f247c5fad424c8bafa93a47a9fadce3f766230c2aee85ea27e03df2a80f243ebce5d097f914b99636344729f6254ccf3c77c06c67cc4e479f4737099bd33832ed3bd65cfc6b31fbadbf9b725f13f5a37487669206836e8a3e5f03634f8e7f09b306f8d8c3c1289d2ca04fc735685adac4a175d88379eeb97e1aeeac24e8752fcc77b476088f9ec57e7394846642fd4c34765dc0e741fe2a62b52c27323293f47dd16d025688d001649fd62ecc8cebba27622811d1af0167784e7142447ccc736e3bb03dcce4341c4487c0bcc64166e86bc8435ac5916b41fd5590417ed026688eee934d77c4fbda296b49efbc7f09e21fee7d8cd1618e3fcf33d0986fececb9fec187ba0c227b20767f8f1c8be8cc77f896527bc6eadc1b0d62bf7ad98ae8734827c67543cec3ed0de3a0398cddde08cec4ed0dab7b48a29cd991fb17e657b6bf6a9c07f896c0238f7653d54f4eb1cfa29d1515ef14ead5ad24cad21dcb6bfdb5e890bb7f0835b147e4fefcca4b7a61fcb6e9ee269992cb72f6b2f4ecf7925d116fdf73accf677474f8cdf879469c9a04d6fd95ccf6b15fc81bf0b68157ecf15a97e736a03428e7b8edc99da03682c83bdb54cb0ddf6cf7fddd14f237a30d3f1fccbb22676db6ef1191e992be3491e889623e259e2eea39196f1639bdc6a77717f9b8aa9da17e1fbe4771169ef966998e4af24f57f9b6a42fa7aadc2bc852a06b41af47387fd9de907a64739923ee34e25f8d0b781d51412f57d69f7f7ffdc21e2af658489e9e3feb75ca75bac1fcb2a4757315354d5ac0fcdd1bb9ae611fdb028b88f0ef34ccec33e241413c4ff7dcd1216842cc98c504692f70c8f9d3c29cf20f9435a3e5d61f2db7e9ca2132edb51f4ff2ce95db89fd46d731daa3653a37e69abd009b7af1d27c5b86fadb727a9bde672fd6e7f03e5dae9afee2789fbe56602ae86dc43f1d4ce5fe96885565fa109bf421071d73eafe59bd543fafc109fd23ec69d6c7acba664ac4238ab9031e5b33e0d1b1737c8cc9e9e62d2dd0d87ec4f7c9e7b0546330cd5ff2fa77129e97b85ca56f6ec3ef2e0ddb28d523bddae96439cd2da350e360b64dc4b55aed174e2b83ff1e6ccb737878fe4958ecb536cf0003251df742b2a6727dd4ebf43cadce3593d7a6177a2ba2ffc02df45debd5e15f77aec3d79fbc36ee6dd3b9aa3153fe6c1c996db68f4add13cf0b957bbcf7d3b7f9367d5bd8731f7a24aadf3c55e784523b484f77d0a38de336777e0e5f3bf1afbc739a2e3a3f86affdaa78ef7ded44701ecb95e1b95afa66f7edc1dc1efe5559bb59ddcff43fe2ef7bf4913daee110e750d19b719edd9268304f1ff49b3303d3d022d33e57f58fe3efefa680cb1c6646cbeb759321d43845477fd13dfaae9f063dec45f20536fd9fe20863bddb1fd587fb47cf9d6bbef352591b2d7a8457e395b0bdf19d19fbc69718f43edff324982eaeb1731f1e87c6f13ee97503cb6844935ea7e1da654c26ac51aa7ab6f2fef1b9b15aebafeba7abfaeed03a6d16af7a2dea2dbce7ce7f581d71f1bb935ee7362677c238455fd720f2f3a8c07e35ee70ef5271dfabb122d5e7e41a44dfed57d42fdbb72adab6cb795e72dd31c3b373585dad4fed4d9617ba26f695d94e43fd65073839f83cc3c3abe935fa277dc21fd4fc998d8b6fa6d99ff60a977bc1206e91053cac06338ec95f9807e3b515ef156995ed8de5bba39d6f53b950a85d9b70cc01558eb0fe9d180753fbf68c365e3c74ecdbb8d0d74a1aeb4078bfe4af5665c4c03efba64de469eaf7b097f498e5b2893a71b5d716de83ae421f0ba9b708cd4528c8a7f6577d1dd81e2e1d3bf7590d6e452feab96e6b4c97616b813c65f25dc0f7b4cf8169dfc3bc0bfb4afb7d86c3b4fd41636b1f6ee3ba199aed9cd837b4560e6a0082e6281c167346fe298dd6f7ef117d7b70cf5722b753c612e535a944efdbf96e35cec5b842d753e89be28056d7655a899fd903df9d95faac29f615e65780ff7ea4a3de1eee887dddce4739f42583b865a07b7c0f68ee2cd25b2f92ee4558d5afaa5847027780f69623ef7fb84df475b98d9fbb2addaad6e756d1fbed711f5bbe27e57e354f6366df340f319b3e998d1e6c228dd83c3ed4332938abc59ccb7cedfa49447108bed51b197a80afca9830c4a660f874b48f23f6142ada16d0d3be1afbf20ff018e87dd4d6e077a4dfcc3a5f613154e3630f66120e34aee5416fe39fec99277142a69887303c0ed3eb2682bc2fda5bddb86ee41adcefd409cfc1771757c649a85fefb87608efd99ee9b3fcdd50bfb19844e1dd762332d3a3db1b1e263bebe839d6efc7b5c47e0a7546d92db507a3d4e779cd1c8f40dce701f44cbb87a681b8cb795783de2e14233832b11ed377e63bc42f686d87a6b15defec3bf747423e74b711d1f8c3a849f5e0c12809b2d39de60b7faecd348db215f55dbec433a8f189f611adab445f67fb8cf98f8686ff4e12ece1ccf433f61bf6ddf7796e61aa01efcf1a8780e87829e1fb8646f8aeb7b3357f51c6fa253ad6da992a7561221f997c5bc14dba0fcd791a66a90ebdd777a34bb0e80e3ca7750f32f0dfa45073da7b39125933b399ee657faecdd621843a3418bb1f6646136aacfa925fb71fe59edbdd13bd69a8f492e9e6fea2f119e8aded1a7c9eadfb9bfc3b91d3affd337b5ff6e37a8b6e7fb60acfecee0d7b9d7cb2e9323fa21423b02e41d6a2beec9634eeb434eeda3474c2cb22c00632ee51af7b09b2558cb11ff9dd95f46eebe29bf6bd30c6c677ec33d69ef8e02b021c49aa1b801db2e886c31dd0503854311b8006a475b198eb95c8212613dddee8b476203facf83ed10b0f4166617f144a7f4c67c5f97bd2fca13eb238ff849c73e0a490f3ebf686b20c56f8fbca6cdfa3de1767d8d338ef80bd74a7cc9f8f3e5ef0fba739dea963ec39f3bfc9f931ec6cdf69dd817e592d17b17df8bc8d9ce934dcc70cf74eb91352ad543f8e08df5874f68538078d836c391e5188fe29a2df34e8332ce67009b25b8bec11f29039a5eb3de32535318402ef5a24bb82bda7216ea4dd64e733c63adf9c9cbdefcc7e30ac1b25beddfb7919f6ad7da0b7ef288b478768304ac2dd96d22ec31a93f38129f6a80938e9c017a57948789ce1999ed97e6c1faf4aded4006a84094fdf4d32b807af4193d01c8f196a939d95467df0e1ef0506e8a95d8c49c0be2daeb16fdac7c8ecffa5e27a2578a6c63c87fe09bd6bece790fb067584b2fe84e3809c3804d9dc5a3bad6540f8b306f5ecec5df13c7e0f7c30e073d770ae384e4b073ce201ca25c058a0d8008041e696ff2ee5f5ecd78eafad32e3bc6e4ee977f9fa1ec454a5de7122b608b85f282b1ac9bb999e3ce74ae998da8192aca9ab37601872a8d731be456b0ee81dc231ab715d29adaf08ad8c07c44612baef1739571f4ade078d47cff1aeeca3cd56c5de368bb8004093b0361bf27957e768732be7c9f4129dfae1e8b3102b4b27bb906345d8322e008d59453d39661562ffe19e7107bac1985f29efa048db512e6374179fa1b4b7c1d848c5735b7f37dd17f26c0af948c5dc00b19f514fcaafc1b14a7512ec199e0320e1ca08dd09ee0c8b29333c09aa2b015ef189f05ec42546da177e14e8a5f7b976e6506b09f482f4a9d222f597addd591d8f7c746fabea4b891cecbd2f92dd24439930ee3da227ea6396cf1ce8694b31466690dfb204be9910da29c630052600eab410f3f217e5fc27798f959a373d39f8bbf9c2839c8e84d8a83b3837e7a679c26ff2e88c95de340affa3778bdcbfc90ee5e9f8ae15f8aa7628e53f9912569a3dbf54f64e417d3d9170d05601c5a492f2a3645be72302d98dfd957c678e98eacee8287d631fe457a8e3599ab6e8a543ef66906f8b36319edf20bdfa0ee1633f458c97facac85c140cdf8af98ecd9fc7a1d93804db5b2a7aee009f81fc2c86ab56a85d1178b279eb93dc85b1f913ec96b563a5e3d7f838ec6937a58ece7ce1f36363127d6ab4f1e2206fc9fac525dc6c63f0f19b1cfb88fa7386e720334e7eddb88e7125637e0caef0feafa546f4c3a5efce892d26644b9ff98901fb611fe44addc399f2ce70b895b0af1bd70dc45d7aedf7f1ebcf1fb693fe5c2c5222e3fff3f699fc9c2efd9fd3fbf0407e9be9b72470bba9dfdbfe879eed7692b734c22fc6e60bb947a27e53c2b0b3cd36eb057099f4bae43e4f7de7e56b2c3c83f032ab11a2ff2df5fb88af0afa151b7379dc4c7aa343e0926766f17b4e7438dbf0339ff610b6b1afc0a6db669818a3e628f51c4b1b416ea61467a57d9b510e7717bee3838e12342de1bb805e40145bc4c19a73866941fd5129cc99daa358f74c74e82ed1f1d260370f59df68311efa38882d1266e0ebcc413706fcfe9778aedb67b2eec0bcb5888d496c0dee7327f65cd6cec12eceac46b81b217f76402f6c84bab1e3b25f4fd230536bd668df9a43b0e9f26f8f7b690c7a08b173a027b9f5c97add78990d75615e66431e10f6f529daa7804b7047df14f53dd31c1eec81649c87a6ad63fd37f45e3b96e3d6ccffa8c496e35566671ef31b8b984bc14f68dffd9575099cc6211acc53df20e75f8a7f328cac0c6296d89320637e6c76c723e81f86673b966dea5eacfa051defec35ed1ceb2b3a3c26cef4c049af1b500cbca8947742e4e8a7244be81d2036bb9f19d05f8acc63a6b74f81936ac4e626737dcb87c7218b33827cf113e8a5d6eb27e3c1bc159a36d11d89bdbe0d9a21cabf5e24fbe677a00b0d2222932f51de92b03dc14fcade3dfb66fb33721a84b6787ff339effbb4fd8bc819a9f6fc157a4e37a7d8977dd1ddad5d3f0d3672dd3ff58df4ade58ad861a671e7366cb136dbb48f3e7e9bc6fdd8bfe7459f238ea3b59200621e49aa8e8ffd2f845e52b17766a11fb9661d895d3f1673380e4dfcdb92f0ec421c44f4c26ad1b9dc0e21e0073279d549868efc3eec33df9749467f33d33b8ca1b734cf49cf619ec86b2be97f4476b31c2a69ae674fbf2561d37a23eb9e640c37f48a5875a5b9e2d8acc6107c7619d6362c756f4fff168f73759f298618c822a4318a77bc20f4999ee81eff2578f155b957c381467d529d5d98d989d79cedc8fb32f67098115dbddb5c9b36ed5bd28f3dbd4dc63e531c89fbd054f85f03f0214bfcf396864da8d54dfd8cea2ae893617e68e66b39824f4737ce9e6e1f1157c8ce7cc4168d43fd27cbbddc06185bcc2390053ed4887a0bf44f077a0bb14908af755a27b09f4d7bcbfb65ed6c8de6956691734579a21b77f4a120bfe6fe0afc4ee63bc67d0df3be425fb835e6321199350bb3f669ed02ee4beebbd62518d8527f291ef3cf657f896a03c2b78af9a7a2d6d54cef4bbeb7983be04bb14af94c647eee99dd381a307f27fa7087ff1f7befd6a52ab2b48dfea075b1008b3927978a82a052252aa73b812a50415ded117ffd1e19792013d0aaeef5be7b7f63ecefa247cf424892ccc838473cc619f79cd4a137fe08fd1be76e233a81bca582e2bb93bdc1fa145a0b49bea6806704359248e63b746d2722362daf0f1c20bf72f9c6613c0dca2870b76bdc67eb3059a8900f3bd1f34b14a430a7c902fa86fe167c76a4bf0a370f2eeffa50d7dd8c917d88c78e4bafe79a06b201c4b128ce2dd88205d10f24facd68ed98bd1e98341e39aff1dac4fcfec65a88f2ae3e17749d4136426ee144a899e3f759b8977b57ffd0993764b235a965e290ef4787747124a3c979d27f32e633d98bf6a2e37db8bf06f8d2b8dc436a1f9d00abab95ffc97fb3ca689ef1b2cd2049f53f57a28b509d159dd7ed1ae25f8324a578a7902b783f45beebe0fbbc479d77abe27bebb1980dc67f279a6b3076057b2be8a545b81fe4a172fe623aa0a77d4d4c12af5e15a4b70f79877197a6d59f6caee445a89c401ed31c25d63fca74f250c90bf2be24358b7242f3eecd7b118dc8d88113d36717be9bd27d82678cbbc4ade3b7cf72f951f518700eb839133da3ee5f4363f27dc0a8b0c610b739a2ffb89e36dbd0770e119c233c16a667f6acf693f9b13a41e32ee135d9fdb2b83506fecd7ebb31bfad789d7de32f6b7cd6eaef945afbe3067911f668ff8c15b7472d7a4852f3d99a3a796cde0e1d3968a7fafb6f59e7ef86f6952ade2681fa168dd16320ff617e687837f8a2a353e8274417a3e3820c3ac58ab18b7c977d5bfdae5b2b87998d67f0fd8d56596d03f29817789c7a0dd9336ddb11ecba01a6a782be6b7e9d5603cc3b95953877e8454e7221f45c3863f4bd89ac7d016e1eda5b59eb45be7d0b7de7afa04763abde5750a967f0efd3671ec4074ef618cfcf29089d76f38fe7fb7009ab67b43b13798a49f4fbc5601f052ee82382ff163049f33c29e56bbcdfd5eb2d7ffb7dbb668d77bd57502772061fbfe2211ba512f803e229baf1947f4dcb3f1d63d1bc0e4c4bc1d8a57df9593ed0aa8e5b75cee5b3127bd3bf937e3f531d72547e59665a201b31d9d07a00fcae2fb2d7b44701db43f25e745ea2c071e81ec2bafe7c1dabe7ebb8e3f9ce11c9669aabb2ea15e7b0d44ea4d7c09eefe746f25a969fbebc8995db85c3775a857ef28fd791be73baaf718e3cd3d84f419f2736eea6bf5f129ab7abee75fc3befb465616d1befc2fbc7ea083af628e4e446541a7f51dcc3a487e8aece7be2f8023a8b85a587d96cc9b088314607774ed7505bcd7229b275e072674e865a777bd3afde019fd1de836fdcbcd5b155b328084fa3792cbcdcba50ba41df80fd37fdd21ace7fb5f345c00eba58a67142f65234de65f17ef6f2bbdec7b7fbfb66b0897cdccf94e08dd4fc059fd3e7e7733f6ff6f566d84378ae2dbaadd774c1f2bad018cf7518c1f782e967ed87877a2db2636b2d1af74eea7d90260b31d74bc829d4539a0b487c20347fb1fef7b410e8f0e5bb497dd743f02d97043b6391433e2fff5daf78c3c4541ffcbdf57884af7b832aee0d8a64efaae8dea9dedfd7b6407282ded1be2ac73eb16f97b4b701cb77fc55e762d5e7a8b56f9beef5b3965266f76a7c3a9c1b92b3fe1d38e6c8ea0a5ef0fcf921decf582ea6d03b44f12057bab5e61ec98bab06dab444fc0d8de19d62929f3a21f6454347b8d43a4143ff46fc7f44fd6caec16cab96bcc4f96aa9596cd6fe1df7cdc2f8aa9758793baf4da38a7dedf2c9f885f7f8f64c95cd5e6df9b9a6b5266d5139857400a6cba2fd61fa4f206b05b247c96fffe67573e17b144f7219bd645073c5db6ef0bc77e2682a85f5b686475e86f07609d233a89d63d07cd949a3e72dd58bd0581ccdbda40faa4b201a070c64b60e9dfb4cf51dfa9b56eb9ac00f990c6af5bb95b45e5cd4e70aebd2f76f75b2b8d527b7ce97e6726ac435a61832bad8e708e292bdf4c2c9c54ba818a758e7f296c7dcd95f9eb2a6ec13f9ca400ecbfb3194b55b18b88740d6befd9e04d9cdc66d13e816e9fd538fbd3435c011c0fd3938fd156c31b6072c5f9aec411dcb7dcaf3f2177207f064483dbe75b29ee4650bb5de7b1cdf819865f5c367902eec7b97146ac34f621eedc8b926e3a222581287b0da65b36dff3eabe45b527a0ff0dbea0333f49d222cb5ebbaba650b5fdd0a3e3783f4b8553439815a7607f7c681bcd3621bf9ea03623ed06784f4dd1bc9b6a70f20f618ef1dc8c14b218751cce9588e8aa1bb5297ee6250aeb15d4ffb4c56b1a249750d36d4e9109b0ae23304af00e70771f9ac495ce2dacca4d4206e332dbd4bba51df97926b0492f7ee91de21760fbdc395096f69e63b2d22dfd8a6a3e2d1ac13217edef33a9871f5cb50ffaf7f2e8086d0771f53f3ae5a63ef81fdafd8373b0d20b6f108f5811af756a4f7b77623b88b58a7c2b5413ba87b32b51bf67353fda7a03d17a1ae673d76a56478b84e9568332de5620ab9dbfd33c48483d979edbf9dd159c63d63497f0ee87f917ec43bb2b623630bf81455a3f784f91ded41cd4c19e2bc7ed54332c580efc33114c5ab922a394e0c4cd38b607659078ec1e205b4e65ad22e2ec9239b93581be9d547f3967fd7b96436f4f24dccfb31540ae8c14febfac331ffed4e46faf6e748df8d7b0309ef437149cd3fd8273316f63f0b4bef10424ea455e7ae99b9948efbbfa69556861bf51c2d34611fa704432056209ed3e59fe8a8178a7288a9ef8b601db8070fef07b277966bb338c39ae9145b076a989ee4cff3b9d18033b14d7579172b32e44637e35a716fa02604ab7262ce8ed6d0bacd9633441f45a2201abb656e696c23dfbec6cae9648d8a4b5875c447ebb3b7057d0b7c71683fbc4b02586638164bceb1b3f0e6359f80de9cde85e00e486b967b7fb7e792f7be9256595416a768c1f5f62fb56baa0f683ee41572073186db31a9068fb8e755c8366ae68705e6db5ec82fd7132c17f6dcf9364026ad902c4d64077af5e118a858cb189bc5662a633a061987e9fcb152a087abc4eabf847c21ef9c8c5dd56de00820bb52d069a02f785163bf17e93135f345143805d671ce5a60aa451c0ca4cf553d3e3e6fb077d2748fffef294605f9e412f68b82adde1c7ffbb27f4867ffdd668e50bc00fe7a43362fe80a2388a79d88ae798d11cf65d7eed7b0aea987e75ca4f7d2dfc774dd9b3d1bf207f4630de6249fe4f9fa377a86215e6c933cd9476a423eef23f4a3c21aa7d0c7037413b3c61a59619e7ee9c8a5eae8518873fe08ce85d82fa29ec37e0eef00be3e47dfec619e0cb6c8da777324d3928ad1f5e913638e5ce2debcc63a8639dab47f2e5e6b5d06dd2f51a04fe376ad18fb68f196d995d0bb75ef21dae7e9bb52b7c09765fe1ada63a869017b1fc9eeb8632cb43e913e38c73de86d2375f045395156e710fbeacfc23cab94c63bb8fe095e956c54f06d201ab5a502b0abd7be81649dbff6b513e935b27f6ff503f2584f4cda430ad3a47a4c64a69bed08eef5315e76e4812a9eb48267b2ae1a29e139fa0e246f17be0cfc37f455c9f298dc9f46be77a37d6862887f03ff7a7cfaea96e62926225e8d1205f68362435b66bf2d1710bdac306e2bba775a1e1f04eb1bc7b93ace83d02390e4cdbd6f060f2457585f0713f1f7db2f9c072cd5b5ad687d1e07b2960c238ef66668dd4f7d36adf12986667bac07f1f17163b15e7679bcdfb5de4172b13ea2ed81dbb31abf8eea12ed6f64791640e7eddfebde4c4b25c4be54a3f17da5b68b96ad6f20f68cfb6c4e88f7bdfead009ba9f39d8992e7cf7e8b821cf1a8c66f6cfdda67fb71f846b6dc39ba778ad448f3a454911e328438d4b2eb799c13c4f2fb3b68705af0fca5dfc9b73bfadfb5e5f183f66b7efbbf36cd2645fc35c379a424ffaf2078ff2fe422f056d931e6b26d7886365acadafb5276bf562363b992b5d562542c03495b0472f1e1795ab058dd6781641b8114d9ab9d37a2ef79a22b3cd7a1688d5f9d4383ef2538f5969e127d95e864dfe53319d1310ad277be3fcf441ffcb64ced325790ee799e27a5a74cd119db41ceeb5fab1ea275e7c05f5b96de1bf837c86fd09fc6c4ba2f77edb4ea0df278535f83b51dcfb2af05c19b2bb898b19ec3dfc178fe271d5bff42df83fd4cf33f88eff3794c1fde6d93942edaab22855a393aff93063d66e9dcd1ef9b81f651dc2fd40f86c64bd0bcb6bf37d974f767da736ea1ff26bc6fda730ffc331f63f720e47c2de5c4dadbbbd4707aebc0ddae0d3407e71a1b30169ac323550a2954f261acdc9789695cacb194c58a3a44e762fd90f9355fe27bb3ec6b31f83dddbc5dc4f5721af3777f5b63f25ea885c4f9f890474be7ab6bd27aa892f57493747897d6ba90b3a581ad3376dfa320877ce5277383dfadb1c4ad0f8c0735971f9749ffb2bd5df17af2efbb5d533363cfa0f924e4779633ff73ba66b9bd5e5914a924f650a37963d3cddb35310d74a6ae1df7eddf9fe7ced0dcc05118140f7816e2c46e01b512842f4c779c4eaee3fc8a94f656aaeaf34669fc83e460405c2270fcd0bf1f23c8035afd82fc15868dbe3ad1fb68fead6b227da37f20bebec7541fec209e4572973ec6eece1a9f32a0157aa696ea6f8c15b8ba406e32e86412a2e5ddc7e60e6b4f72adc15f1a976e9150db04ef1b974bc8d192e91ed34d27edc07a05bad5a40d09c71c387a60e7382f427f2edecf689a60289135580afdc9d03ce5c6786e928e4fb48f781561fc2434272bf20df46ff03ff3e7a2a6cdee797c8c5dc0b36f9c37f8ff27c566d893b5dbb9f9673043b6a8d61a47d7a4b0d4769fad35687fa78bec72c8b96ece15f810c4ac055ea46bbb7510b2b913df597b6f7702fd1f261c3de2da037406109dd43dd6092d5d52383f404bad676253db86481e239b189e574fb182ec1e0fe7ca91bea5423e10e3ed401ffedaf77ac2fe8aeb2df2efadfc9b3b2fc23cb9be94074b97ee53bdbf8f7d248bf2875df55b34c3789c4cf8e7f0f9d889925f5319c9cbe460e9e9395654693d9eedad364d8972f1c598c27c87a3d337e372324495903ef6119cd8fa4f2177c33d245546f711f276edaabf47ff277ba346bed1415b6e4b3e7d0427f9c93d607727482e8c4f99ad402ee399c402f7ef1473654f78d51e740c440b6c8ef07ee19cccaf8ca629bdd05c1dc4879e9c656493e15c12923f8a7d22a76f68f842d70ce75ee2da553ccebd4881b716766a7a67dc7f00e281f967e07c44455a44fee9c0bde7382de53cd1b36c62baf9e7e296b1bee068bf453a4732f7af28d8217d601706bb6c52d57dee5bfa44e95e53f9b6f9d8c3dea984771fb875a2f557afce1693b31cdfe2be4fd803347ef5c37d78b2feb0be352e54070dbc379f2175c94b257280f6214f13ef53a8dcaf316012abb83e79a495137a46f4e4d81acbf42ed1482b9770e6a16fc50ed39d738a15b598e8bb0bfa86a5121e6c05d322f331625df33aad0601e03ef9dece1ace2b34974fa8757ccb9c0dfa9ef441d76c5afdc9708db30bbe7286376922dd749ea58a57ac2ba16f13abb3217c89eecd290ae659526a3d6cdb9de36071cb7c19e7a54ef581f037ede3cdd12c591fb6feadef4e7ade261ddbc8d66df11a2a33e08cd7e350bd817e2339c37016ec78579fe5c6fef422dffb4b5c57fc7d68ed5d2663f0bee3bfd56d0cbd32b223c6c2cb326768a139ee10df6e9ccf23c3a1a06bc0eac69b732d1e73a84fb28b893e40727044f5265efef1eb0f724cf1a455a9f5263adeefa93e384eaa53c6ad1392abd7b4223df5f50e5da0b96e6c8f187d9e9af43a5970df8aceb4f02d785d668b5b662b73241fd8fc99ace7f900c6bebcc4be719be8fd43b2b965eb05d617057d6eec622cc125d2f3fbbb4f05cd89f0493cafc32490bfecf1f9f8e5f7b15e39b6b2afe5edcadb6593c52b7eb13b90337d6a9ff75b86cf243bffbc0e8af745f14eb81f02d9bf1a2f86f8cbd547e4df715f8751ada708b4671a6a972e1e8c5d82274868bed4aad837a4899e3a8134df4f16f77acff514d727901e99f6e340e52a9cb789be3b71fc741f817c9129bf62ef60ebda397651848185e4283ec37bf8fb30a1b298e6ab70dfc6dbc2e09be8d93b90598ba4b639a03730e50bc2b968d225d021b70788bff2f5497f7d2cfa7b6b8cdea19d223d11e910e739d7381ffc3b712dcca18bee7ff63eb548abaef741ed709b4ef4b0a46bbe0e9c255a1ff4bd0d5a013e1306bb7d075f10eb9a1e5266570364eb0cc29e7b4ccbd59e9dd75ab7c47d54dbef156522cd2fd0b323ced73254d05179b90a7a36b7b7fa49b3f4244b4a57f200a762d77cbfb01e8d33724ce4288fcd82f0e01cd36c6bedddfcd3a373647e141eeb91d6e6141ddf5ee05e253fd94bf79828c62636bd1df187a1fb358eb6919e32277317f6e143acebe3cf43ddff40fc76811771fbcbbde346cf722d8bdab40275dc4d3aabe56c41f508cac7d9f774d977b5fe84f7cb0a1a3aab599ca315e009e429f045e2d7ddf2f2ff1fe85e75ede141f4ab45d7b8376fd9ef4d1d12df3b177d443fb09bec1e60f4eebb6c64386bb5edd16bd9e98db3407d7e1e5a23cfbd464a7a8abcdbe689ad4e78105dcbd6d9007c5597f0fe0edb8bf8099a6b23ca40a24397b1a2492ff4e8af04f2ed881e84f68cd49fe1bd69d04080e7ee125d2caa7504ad138303e2184837c9883e79c3f6434d6f753c0efd2e9f289652199bda35d964e4fe3f9983f8912109fd69f87e96508783e3724cc745cff2751aa00353ac6ed3bb4580e5a6ee2d53bbb46b09895de535faf76d06bf43daf377c4de896cf60319e3b186b82ee60f248fa1c0babbd3d9db06e73c1a6a2269a5077a7a56fb32eab5a2f585e53ab0097624b5fd547c0dc9d9151b83ee0dd139b03e49b1ca9ee8afc45fb2ba043d645f9e114f7a2c01e7b6133b89d89a3cff40b6e2e9e054fdbf2c3d47baead1d2a52c2a8b0a6a8df555e6c812b10b283d4ab5fd58aff32eee257c8e0cf3b592587e675dee9ac46fbbe209acc742f57699f606489f7d4ce5f67d3426d255eb8ecffd2c5b125fcedff3c9fe8ff836b16e3a7612abc10b3fc66d9f1cb3f74d2f8f862d9f5f979fb21183f91b7e4ab88ee4e8ea6ff85ded6b34defdccef4ad6fcf99c3ac6ea9cd3fccf54718f295bbfe732b2edeb15ed814fdfcb793ccf2e1f0fbe27fb898fe47fd5ff08f3d8bff613d298da4770ca683d72d3be599b5a0fd37d96d93d6413d8af7d9a925a7c8ee7da67d53f907ae586fec9fcc1c544ef7f37d74edf235ee3862ce7635124fe15e85615e83667ebfcf981bf9af933b9fd9f5fa755ff3e831c77f05d80cf6556613b9df4a42cd2d2ab3e170305ed2b7d4f6c7a12b1890193a7e157c9449f0a1a07e9f0c0afcfcc2f35ecffb64c3c2f6b78cb664b8bfd0dfe81bfe753a0e30a348a7853dc4b086658d6e413c446ce88ffa8e133e06d000e030fdec7fc94745dbff707ac03e95f9f55bdd67fc3e6ef98673bdef04fed7ab69fa26da1419c90f26ace2ec5f7325b86b717b0ad46cef13a7046ebc0017e1e8da87fabdea79fda66ae593c80f7faf32efbb0c346eab4b3e404747a6f59af019ed32b9bafd3061e3b456ce2deac6e230e80fba97fcf479f8c43d606f8a1f6b1e0d6ea4736a0b14dcd42891649a72f0b9f59ccaf20074b417479a034d5e8bb72eb8a459ca98f89f1c58ae6d9087e9186cd24f2a0e6bed73eb686ad23c8ccec20f24532b621f05532bfbbc0c31b6700f85863df4ee2d84d9bab8b065edfd3b66139dbe5998fb1116b88f4c16f4b7fbbd0756ce509d47a0fa90f52a5b5e1223975607cb5217b3e744daa7528516748f15a62bc34e24ba06bcf8ff7d9f01f8b7e90b61ed188cfb7f9856e34c710e91d72ea0be8b909756f66816c38249b2077360ae627cb344e318e35e19eb618a7e118191d74c6f5ad689d7bf62ee8350d71a53a0e41d600f2a0f03ca03ec05c51d98df40a3936498f659ce301fc4fe49ddffb16845883e24993f199c80da923beb6e36214d8173861b1da0ce91f75ce827ec2f8e81dbe7e646b4e1752f6b1e9df9b67949cebc63e65a2bf96d8512d1fd8abb5e7fd8e354faffd4e635b8e9a3a0dc410f15e78a6f7967e2317891deac40aee71f5b7e26964cf573d176aca1b63b5629f2c6e2c3b0764774df401b64747d43fc9787c5be7e0e260f3d2db8681f740b6387a97c5f40c5c2b92067de8fbe62c06db35f4f577a428b01fc89e8ecbe4648da1f7688e7b7a697c3c0e72f4c205b2c173dc6308ead8932c36bd4bd443f40d7a1fd8ea6be823ad6e3fbd961eb40d83c131358d13f410a672dd70a464a33e52dfa6e31eac61ff640d67bc6e55fb257ba4d79f57cb422ede88744fe83583fb03a95dfc9ccaf511d6bdd9337fdbaf43ec2046bb84e6414620fdd411e570d3ef730b783a65ba10c41bb20fbdff269ca9863ee93f8cb4c37ee3624f4e3c2ba46e9c58d3c913b39010bffb2c5707c86dde74e400c27515e8651eccd1be6413e8c9e9dd12d3abe68af1a03c22e9b915ebcba9033ff83fd68fe1839de580dd69217e80e8783c63f51273be8f195d931ea299625b8fe712bf35e041d77b8cf5ef08d14023670cd3c577396364ff41d737e7ff22fa8ac6fb8afe07fc2930bf446efa6be77f3a7d1924e732f28dddcf72b15ab94e9d39595dfe19c8d5eaf09bbcf2f33cc9edeaf2f3e0efaebaf2d7c077dc916ff6bf9ff705fabe4cce3d953525e23740df11d139ff3fcbe39ae9b79ff93cfe7e1e978af723c95a34d2c8797de19be1308ab36cb6ec9f5e8edbced5d53eab41668fcfa0e763de209d85bf37fdbfac61a185fadfce99e2e88d9d55ead3e6c7673a70a4789257d3c3a1ce7960be17f26d8363bce93fa84f05f744f09428b0556b0c74f324b7e5d4c86b19a4b50e23f85d881c9304fa9c2efaf7f7aa9671fc6f1334bf25f54b9dfe6aea84cc0744f3babae5e999cc3f22fc92d7ffc5bc0fd19613795081d78ff2d30967d37079245a57ec12cf473d8701b23572b2de3ff6d7d0fdd1f83c6b643b3de511cdb9bef6d5446c5f6a5baef651184dba7991a360905c07d13e607ce2a99d5e168fdac7e212fe54cbb71fc6f06b5fcf8b1c06817e980fa13e2f5dfa209ca96de71e131dab712fe9e1ddd4e7fe377c27f81d37613f48fe81142e64d2c327f94568e1c4f9cd586f89863ed8ed3b2134c5ed03e1979caf83bc83bba73156d3df84fbcfbcbea78edf3f958d664bb675e9b937246fa215f43e6ff2fc2e9f4c06fc51bf2119806c87ff58c3d1ada923e3fa35f12c3d79ffffc45aa882ecaee5c38ed1be81e5ea1c7ace818dff9becb324f8438de73c82f862596d3459ab67ef68e624e1fe8cde19e61a2c701f09be97d953ff1b79a78f7583b4db2ffaff339f0fd99f35ab899e9f488c1cf3c731b2f3bd53a4432ff72df033ec3b6be6cb7d570b20e4e746c1fcf089f7416bf27ec827a8eb03107ff88836348e65517f8fba5422761e902ce7f97faae4c7d85c917cb2dd79bae8ffcb1a8e9abc9ee45e150f0fd783531b7bc77257575a89796e8ec63976c80bc47305ba82b903c6df4abcaf3eab65e8df1f91901f2a77f1ff26ad73bd419af99bdc752e7784e683347908cc3188b0bfe8efe4939067781e49f864b39fd322ee2507a2ef9d5a7c80c41f880cfb83fd27838eef22be0143e2bfadedbba85efa2eee41872e23fa27ec94c73ca96d7b9c2bd089fd50dc2fcc2682dc2b822d581ac798f46921eb8ace50953c0e9c6f593ec6db4336ab7df9e730c87e5943abf6f98f1d290afabfaca181e74ef23f63bfb8a4815bfc6cbc95fadd7889e2013edbffd478b15f9c62b37844be738d4bf7f1cef9b6d0dcdf37fd1b1bc394f3cfe1217b5fee9e8f8b688ce8127c5e0bedd338275828215a97f1ec60991ab22baab5ef165ed7bed4f281e89ac2f3bc4cbbf07d27d78aa72655d6bdd78827955ae5fac616e2b0800723faf5c4f738b105180bab0c9f6bec5be91adb87fe5e5e3ad5fb97e9e6ed10f7a222d9dbc7c8f4566b5f6e7cbf13c3bb3d097af47ff6a4a335965ee5f0508c997cedabb8f7ed0b1c09ea93c27974601767c8de8d30fe18a9c354877cef7a21378a61d9e05e0cc9b871ee917e0c7a03d145457b8ae8f3ed73f69416a83f6bef1e63df1b0adf5ab5fdd2042f5ce8bd1feea1cf78c5f098d1b72f40df936acc6fae574e0fc73ff871a93cc232d77b4444e642df9f1eee9d14995a8f8e11ee3d293535e8e9c964b8695c22d07fee271e37d932a1ff3dd002c6e1f568aedc260d5c648750fda102bb2b700aa643507edf6bc46cc09f036b3647df89e8fe69bc707cff53af731d6bb09efa19ac435b1f2ca4c8971f42fe1bef73027ac37e544e67c4f8019c1c15e9242dd291837bbbe31a30e18c4eccd9c93277c4efc3db505836adb1cebca5fd72432413164987fcc7739fee0772a234e2b8b55f93d67221dbf8c6ea23169dfece21e9bf5fad140fb0495253ab02ddfad7fbf6768dcc4269f8fc8ead7813a7e3e0daad67b527747dac4358dd8475f6152715f345a49fe447edd641d8596f8f79c6cf7db86d3f6d5e843ef525b7fda1cff3d49a3d01447f6c67ce1d790ead7567ed3e4757ad1ae6668e1ca5edae1ae4ce5c37b7e57bee9c632b9ff875fd70a7af7ad8a0a7e7be4146938886a0ef25c3df17742f9a2303b28df4cac5fa4f95403e3c39bbc744329cd5483ab4e2a9b4b7ec50423a1e7dc719ebeffdc21a8eaa569cb7b60fe9fde0239935734b703f54d24bb87f9f6dbfd5c1bbbe278f83c1d9ae9abe97ce3a0a21579cc7c3b1abc1c0ae6acc9ba6dd1a8c5df62dafec2aae066940ebe8c8f3bc2fb99d4724acc5ab583dcb83df878ba4cd6b9ee69289f502f82c91da31b29edff1bf8efe00d03ba2fb4cda524cfa792c7d4d4e146f14f7d2cb4770ca223ea7b1d42e2b5c2b87fd7380d99b653827a820f8544e61237e087a5ca17d5c26fea9ab57c5ebb815fe0e03d7e5d2b5fe5a76f270dc57a47b1c3d3501c7f91aefe42b601f215d612bffa6f50084e6ae7181ebe5482c02c7a749cd12f471f38d47b4484e64fd8f5fcbdf9be2af5b771f931fe6df2e4c2f8f7e58a30236fd7f5da3d2f45b0dfe7cb572b21a390fdfe42275c6f6c65c7db321e42d75ed11e9c392a37daa6b53bcdbc6319a3d669ee4d8ee9d43dc4b212e36811ab3e281f8c3d7935821f18f9471cf3e87c1fcd0e411edb5ee8c21ee3ae287552376d8589f362dc48abac47581d817bff6d5fd44071991137b8dd29ca03f119e4d6aef5617aaf7b6ff061decd6e491d05758514f9f8bc129f223c8f144ef4f4097c901839fcf95adfb0936fcf746a3168eda6f4b29b315e39c9812e4393773f95253db470ae4c7a82bc0c41673c8b15f9df8fc818f9fb546fc0262b8d8dfc561e481fc66bc9ae680346c46340727b64c83fa5d522a9bf97a5faa2b4781bb4c891f87fa753aed2b6c2b55b8779f87f5365f9353a43373f8574c8610791e9784bf78e2f30bac2729a17f3bd471d6861c22f3f12b327f4362e7deaf180d65c182ed8d2087eab93b456a10ec2f7d40d66dd5a8c5964ed630b9f171b5a9de976743d11e24df758e7bde23f2bc1b60ea99de2582b8373bc38dd8919727057cff35e5ce24e8d58125cec3744e916f54c2fad0dc625fdd26a597270ab6f1938df8bdadbc6762ff71ba59573c02db4bde89ace1209deafdfb0ce72af3df0134097ab7af29d10a636d72df8f7b9aa07509bc9b8dcfdad3b512bf1974f44b527ae7b817152ef813dd19c9c342ba7d66f7dc6bea3b07a477fe8db1853c5d383f0b358f4cd7807ca9d1fd98f4dc222e919c82dc41a41fc809e01de03527d7bc84bb975f97efc64c4d4d0e95bc88cbf97eca628f585e7bc180fbc6769e58171f69d6b1ac4d4d4ea09ff98bbd5da844d72671a5b66d4c7cdef9350dec87357cd3b03eddc88724ef9a221d7a69fd28de499f993c3a9ee9ce6de3e8b6bf27cfa3b523dfd05ea7fa5cac0e5df2a4f617cc385f46c39f56f318d107c1d91d89695489e2d9f19e93abbd260f8635867cb2d484df8b64d8b483e8986f704fec1b6f169f33cdbd13ff5e5c008393b77b608fe9b3a76cb610cf6b2d930679c46417c3eac8daf14cb7a03a2e272fdafd59c6ee96f3b5887e42b9e6210d79c6d92c833cd93b05e26fb5df01f3666e0f4ed670749ba0ef1cbb5bf47b14f49bfa011df30fdc53cac778d33f72fc8ab793d0eff9a7deff0bd98bd305d86ef4991a0ff8bf5abf965fa99933bea5f60be9cfd25c23aab375e8b6203b4cf27bcd93c5f5a0cf23fd6316f7d222d9397026260b15f708c2bd550eafeccb50c15885c97e46eb87d819147936d689a22e1b5691f61312839d2e5bf135a025ba4ed43f662bf231de7b521434ded3f17db83f52fe116db27d522547a2079e671d39d8207fd9ba537f57cae2100ddbf8dbf7adbe7fdff3ef33ef471657a992a6aec2fb1a9a7a68b74d2dfa169efb4e3ae783f5d7eff288387a68fa80b8f775c5e85ef52150a558ba5f53a5cebfe5e9c7d2932c049f2aa3a1e6bbf75446ac707f46da2ba393ef733292c470b19c9b887a2efbe60ef9f58bf2015bc1cf221d84c936be078bc9e8987ba6a6ed298b23b36bb05f7c4d0f1f7b4b4c6387e420473727da17a4be9621decfe7c09cd7fefd0498bd8a7689c66c2efb661cceae7b56349f69cd0b7cddcb43bd9e484fdcf4ff0dbeaf4592bd6ffa7b44534cc6b77824df83de3d4606b58132dcd7aa60f19d96cfe09b9abeee18feb7354de81c0f6e49e929aba7f7b4fc6f5d36c5d3f8c8f7f3eebff29dd53e3a5a9bc7ad931857816f79eaef687e47a7fd57e7e28967ebb99fb1ab76f459fcff16fa73aa9f9d3899dbec93700b7dd707d91d347a9ed2b3381c9df8d8318d7bcf36ec1c7271e67ec5c595451e8c9e911bb9e9b417da18f298a90ef197a52734c7b0b7360bc08b25b505a7c857f750bb21cc5d88e51eeb5826aea9b11fb8a722fafbbdd953835c6be51d8c4f199fd73fd507a0f7a6a6c7b05b9ee19ef36300dedbc8fd58ae54e8adfdb568f6c89577b122d1feb60256f0da570f51601fd3b1338b15ed112df247eadb43dcef16b0c36f101780bf194e34778f804f85d698c5d269bc763276645c9b01716501578be12bf7bc4dd7ef4cafdfe33edea0b7d7f7121c21470e77d8573c2db42ff2fc57003999c2bbbb6b4f0c8df69a073c80b8e7492b018f31a7d82727cbf4de42e52e47a6b7635818044383e2a3201987f1e6785f12f609d5d840461529b86f38c67b667848641c6f1a0545032bf05c7c06b303eda52e6271637cbc35c34942fa8e954dcc5df6b1e8dfdeabc1d11ade581ff605e439305aff6d99bbbf26158f0b82c683f5c3bdd257e8dd4ebcf62486d3017a15b71ebcccc7387bfd7fa1774f00bf4645761dc143845ef85218d88837c5e8de807f17c5efc3eb45facc90f7d5b868e8d98f5451e7048b5ffaf41c35f6ed6b3c9ef15813b0def4bb295629fefebe66fd6c3c71cd0bba4638377dbda07d00768867d0fd2338ab77d8c769792fe23295d6c353b65e9cfe127154206e8cce4ee7b3be42d7a2ff3fb0ee14f325cb195d817c71afd826c2b20dbe7f553c5c1e2372a1425ec284f5cf67788a905f939ac585615ae97f678f19be3daef315f10ac818f3ce9e4314b33c55f22235f302ce8f221716e2878bc1a5c64dd2e46433e07356f68001a3b87cff7f9e371e1309f15364a7799748cf594f22c4a7eb71dc7718431f1c2345bd26a5d7e495a0bbf098f3883f841cdf5f961c362aac45fded140b1b9d03c0c9321cdfadfa7fd2c029a68fb70ce91f5093399e6511e06d69c8a62f4225bfac7dc02754016349297622d6138eeb44fe3c73479a3345742b339c15696d7aaa650246da35d5078730880a168fc3bd96383c9d1be4b2403e4ab0cb62252aa3c0cac2c5e0b4f6d5bf00f7066ab58aaac6fb72aec9de2e921ed21f71af54f62dfa0d72694225cb42c5b85826c6a325f906e0639b528c2cd37b4bc7766e9918bf05ef75744d0afe5b0cc8454e94558d3766384584745f8aebd64b7b69a5f66615dac3e4ea19d6752547e3d9727445f23b05fe9b4bb17fdb125f6e19fa4e81eef102a770e9dc0df6ded13a70b669e000f6ccfb667048c7ee2d791cae5305b041e470a36e6345baae4ced1c06d995e2ddc58a4a727035391d3bc7c85c5d933192277fee0ed16b183f341d19ad23c413140dd1d803e8ca2c2e9144b159e69dd83b354daadbb8675751e0209a865e5cec7b74da67ef7e4c7af08e4b6a1ac7783f3bacfdf412f7ec82c8d663935f7339d9dc1cb93d04d9eee66b5f7d4ccc621f975a15ad308dd51800f559f7c680cf74b5cce81897f30cf14a449f8027e2bf217a3bac11af0aeced7a8cb1cb005b26989dd899023c5ada978cc6625c8c5542c60a8359b6368bfddaf4109d531e52121ec2f114381b0d9cb515b2f1a4b53e90139dc74813784bb9f6d5dd82bde3ff10de322a4ac69f9732aef9065bc8a3f63fcb0d0e15e31cd57a26f05cc4839372b5afcf7871217c2747fb057576fe7d6799365a3fbcdffefc621929e0c2e0dff23c2edd53b4a0582d7056182e14e229615014803b651a37a4eb853e608f48b1f2e76499b69ceae4cc336c39ef6199e915f798b3739017a6c6c64476525c9eb97ecd5e1503de7f98b9a676a6741197de03e347deb264ef5d082d317f14fb6e44a324a7d8eecd32bb07f888a4af827bb17bb07e155a97b0d4c87c57c087ed6a7043f648dc73ae8999ab4836d1f3c4f2ddb9f394203db26b9fb14efadfca308e6f3ca31d22bb994ec4e6063d39d9fbf6833cc15875682d89be4b9febe049c3f6f9a7b21ef13ddccbc286bcee08f43ba78a95fb2944baf038cd21bf1378a8b7c3988a5a3bb718e74f1491e16c93523bc5a69d279bbc48397e59f330f71af6089e6659ff5be493055acb60edbbd25aefff81da7fccf38ee85e5f871c865dac383279a6fef788f16a76ffc2f48e91924bd6f0a659a6a770ef88a83d19986f48d61c23d323b23e3dc6e60d7a4b01fd9bf73c04ac488c8d0679bc817d09fd1bf45e24cf937c523b8ff676f1a9239ee9221bee9c203a500a255ac8b827c178b67574729e4ba34c4aef6daab8456a221d5abe21debd0ea262eae3786252cd64a8abd409debd3fcfd63ec38694a2c09156f41d2406b9a2987cba889b8cf49aa4e7cee93b485c719906831bee5321f245d0677dad8435295da8f1c478b4a0fb201e5c447a0239d4ed7bbb6380344f94a3a33dafcb537a69ca42b0d1c60324fb8e4897f95870f521cc86037cda6b8c7d9bcc8ea673e5309f0f9f3de964e9295b6fbbba71673f2dd2e1a185c337e1711f75c034247bdbc0a365188c03adb677b01d1597da3569ee8ba95ee35e1f636ed6f7f7908c8b7bc925f4dd5d470c789f22d967d035f1f05a1b8e9c60fc9dfd1464af769bea836b3246df4131ef112f44368fd67b15bfb67bafe905ad19fe9e1bc1add52e49b5fbddb03fd81ac399ebaa51083c29968a4b58e58fc86ffb05306e00f4c25262a5d859c33eaf8fd1df71ffcf6e1b88d31dfa872e7ab3f4d35f89e215d190c3522439fe98f6bc6304fb66c8a9a9d97139a3f5b81791365bfb80ec2e8cdb6f1a97c8bc17c9de71c2a05fd750e0b35cc425eeb7b4f0214e7d0915829308fe0d95f83d207e6e105e027df7682e00ee6d8ff69dc5d9217fc096ebe717abf47d29db462039b3b9e72c03491d2c5790e7b9a7fae83420bd3f7ded4278fc350ddcc7da770ba8e9e164ca92ed3bf69770b46a85887e4da463424e7e15f9f295adcf88e82981fd4cc743766ff3de0f46c71c2ee294f67bc138ad8c36304f683f0b3d7cf6de291ef2f7150f8f5f5bc0d6c5eb4abee7c1fb09b01ee742ee76332e53db16ad314b9b3b0f2dfecbd125a3959dc0d378df407dae367db00130cdac6aff3e6063406c81f637a167467b6e6bb4d78bca4a0ea399d88e622f1dc4dfc3c02d680dc862a40d1bf2e71042af514db695fb096a3c485f62a437c63d9b6018fec9d6be8c6b474cedb2ec7912e8c12b9cb76699549e605b24ae06794ce8310ceccd3a70910da30a18bffa5bb608e6c0c7916e13faf71392a5683e5817021b84f4582658cfa67d8d7b2ec4f393f10063772b484f8477aa6b1f6a3ef3783338c67b470a7d751b2d9a63b09e171ff40cb5d6056a878a0b91ed708f357610efbaa17b27faeec2eb608d73526323b175ca3fe6551e24a5714b4c6fd7f491c78a5aaefd443c2786b6a53eeb00ad2dc92fa8cf470b2f19d163f73b4af798f4c0cec0bd09c6f73f9691566130b845becbfb902e31d4e023bdaebfe7c7c07c86a34b4393225fbea1b31b28d8c6b58632b1410edb40d6e69e671b81fc077889a58b3c3f90785ae0e4b8a11de312d95d859448f76bdc738a49c79e4df5c1173fbf861f93dbcbf6b31352f7d3f059023f0e7a6017b2b52673c2b61bfa5661ded47f08cf9cac7a5c96dbcbf04af13bbe480ceb2b60be108ff4b2a5e7dc6a6069f7096f9b8bb60bf59b420cc74334ce8ddda23fca43c0178c65f7739d8ffe47d6e212c81ab63d243667264b4087d373d2df6b27aedb133cec968dc5ad3fc737d13a7c71313fbb3ed3345f951b0feb26106341766e17ffa53cbc490f3f5d8fbf33e6c4c4fadb6479fea7eb21eafcbc7c2dc97eae1afbcc727f6bfab72b51476e62183f1f8bdf53711d449b80cd576bee7d6ae655dc4bb2b8f47ad608d9c15a35316e1baf07fcbb8846dc591a1eb240b7b24925daf1a4ef2cfc169bc676dd9b815f8cd0df50a4cb557d56041e00bdf36e49a96d23f05f426f7efa0cb19b4fc417e43ea6c56d23ec1bc5a369f08369a17d21f9356ff9a71af6849eb5ce2ed171d83e006fe9d5fd896a9d737510781b471b900751167bd2fb94f2012a4fa04765932e57a557fe94de397fe7352ea36384e3f18d35f716911f1e268b9c93b9bb7f4edb7ba7a0f9f88c163dbb88363fa4eddac6e0e6f362de8df3c96c95f678e0e374479a83f7f8d9f77218d722cfa7f6c4474b3ff801bd34783de77379ee03887c95f479aed73791cf4c4ea47eb10b162fd670fbcdda34786ef2c2efd131c7d637f23a745317c7399d2fedebeff7d2f42ea49f522d4b02276672aee71d2392c32ff80339f94479047f5e59ed0afeadc620efa0798bf991a006c6087de7d075f6f8f7f80a794696be3b57942f568924e789d1dceb269d311edf2523d0de7ed579b4a26f95d8ff9714e93f8b8150a3d2d853f8eee65ab56da1b67e43f64c21fed68aacc988e20e4f3a64536bcfe9d9a13cbbae5b92e2de00f4a190e13074ac03db8b393a43d7046396e71c8ec53f9f43c962decbb0675f63f3be4134666fc2e7be5cbc5fc7676794d2291f43a9d7d0cd9332c518eb45e77ebf8ae33ca505ee379a47c6fc1344fed8cd780fe4f7723ee8ae33f054577ab2c69cbeda7c3fd3579fe9655f6d194bfdc35cfd7ddea197539f43c719e66ba33a7d8639ef273971b6fe63e91b375f667a86bcf6dd74aa7fe383a1f4d5f0bfb4bef567f28af5b65a32bc8d5a676ada28adef37dd22363d295a74fbd19adfd6c96bcb37f49ed73ced896e849e85ba6da663d4b4467dde7cffad6e5d02fb0139df5e93cef16f06c8e547cb26a1e75e373a68e915aff986ef3fa17fa6bf3ec554223e65b0f1bbdfdf191f7ae193e6cfc0541f94f106c76a9a3ec7da2f4965ca2d13cf4f071fedb81699de290adce2bbb3d2b64dbea577e8ff14f9618bb693d22b5bf45deb855fac9690ea14445f45f744db1fd911f2da87f822fabfa8c734dff3607e76f64dd40f88e776c8e6be03760ee9a7d2e913b27b33c19ee59ebf929cf30b7706480ee21f34c7b67f6b21e44c72dfc89e6bda348d351eb4ec7b411720f95d9d76a32ebcfbb20e1cdccf67f4c4bf24ca954c5cd3b64e856309743f599d23e563885e785ecaf5f0f24adccb85b7f1fe745e9fe8bbec7d33a8f8b1447944fdfb30a7ff58236387ebb901ebe3c4e4c97e06be5aec3fade3d69c1c3af174129bc5650db1549ccfb40e6642ae05a211d263a7411f6f44dee23c3bc87be1f3e64732d473407db0109faec776cd62b7f43539467abb78b6aed36a60479b412f5ae0befa900be3bf217b465907f6352e316640aa1490739dea839ce4c73d52df3934c6ca936af0589bc62936b59e45fbc1625ff515f2ebd0f950f22be2f168ed62fceee2d32ca4c6584518d8a74fec6f86bc7c8ce9675c3e170339a6be147f9e45815dc53dfb61997601fe86b17b484aad176fd4065dd7f613b74fb467878ce64a7cd17bf0dbea061f6f6fe5573fe553db6f68bce18bf899dfed677e88ffcaef36fea90f12e9b9cc4ff1d43fc4f1bc6f7d883ff6a77e134367ebfcbfe70f1372b1e29e057daf909e952898ced99a9b346643edd0c12331bdedda8f8e107fd9ef08ff78e61764fbca62cc2d7f198bb777e92a5c7d6b1dbfb8467ccf8ca77eb5ecf85ec139647c36f28d2a1eefb244f993a50ae4c05d527d708ccb425afbd067a32dafbc360d37f4ba57ba6fb7ed457b8b139f4bc7739c5c177590a77cd4e07a3008fecca7754a8dfc263ca776fe1cd7db59d6f6e01b6bd874bc5dfb55efed75b239b2f1279bc102c7905719f477e37446243b686e5dccf4459be2d7e1780aff1d462ddfa65c4e28af43f0dfe129c529363ca87f27b959fc19e0cf4cb0f6ef27cf875afc4bdaf4add17da3bdb6571df1a29fadc510c9288c3184640d91aba6f7969868bc4242744ae9839e3f21762a73329ee2bd201a4267dc577734fe1d05b32caecf23896f42ee30cbb97aaacf357509f0a7cdce983779fb35e40540ef2ceedbb4d65ed07ceba68ca7d79bb939d3ea4f1605e81caad2d4a75856ab735c7a6fa92ea3eb8565aad769e05dd2c029225d56c2c07eb4e37375bf6ff1ccde9b7e90e2d3744ea9ef162b3e970efc762ffd2fa7961fbcc6d4ff8a498d8147750fec0f2a92bd7b8c82d9818dad0fe240b73be710e876daf4e963ff50774c56ac1f2a1e184345b8a7e53be3f0daca863c6feaac9ac5f545e0d68ff2c21eb51f563f184bb06f687fc592619775fbbe7f7006797b8ef95b9ff35aae8f02f1f97e37661deba822243756ec2c1dbaed8e1b9dc7b1ce1be5edbb5a46c5edf9919c2ce920c4b01737164b6fc5ec11ddea76c7fae589b5e9ffd5950f30a90689b529126b238cdb8dadb3e17c5ed49fb119c4b6827b81e03e9fc9c9d25329ee79dbf518f7ecb265899d9728c8b7f1d8db451ee7b3dc1e32413fac75b4eef389745cd2177c4a6582d98c958bb9f5ef9b81ed4aeac76ae77dcda5fb60253b5fcb9de1b80bca136a5ddd35bd320cbc13e413e27ed76cfe5dfedd77daf79ae40f4ef5c117e9277bc13a0aee2dfbca1f56e74c749f6f619cea590e07f46fc0b504d85eecbc8fe611619fac774e861dbd71c7a7a7796720df4a24b3b42ad5073bea6b7f963703ef137a4fc3fae11848c5f2e981974c034c57904b521667f28e33c580a375a1b1af9d59ce497d1fe9d3dbac05056c08867d0578e732e9f14bc69b6e34c032482a6d140605c1d6169f6be06e93772497690f6a941f538962c8c1d80d2c2ddcfbffe9b332ffbbf85ea127717bbe50e7dcf55c074f69d6d576d5ddd09a59011f67e9434d0957cb5c1873cf5ebe6f6abc6452a3ec2c2575b53066bfa09712c6cca5bf8de65e01cf607cfc84d440bbf672b542f7434f491bc9e93de193a416d632dc6835f29688c7812dc7f953195e60a995f1a6334eaaf1f7811e1cb0dadd95ef0d8c55a522bef8111570fde057ec7aedb35b6925e006835dbd3bd1394dcbda2e5e2ae101f7eee37e871e3d60633199feaa07b58be77744fcf9873da8a147d2da9f617943d686ebd3cefaf1bc6f70ef065cf7c86acda92d74f2706f985fb83f8387f589ba87dc651db8c7d0c7185730cfe5815fcf53ddcf453da66691c7185fc441f6c2fba6b1d69b3cc675f8f23532bdc7b4c034351569eeb25c69efde286f5d774746b4aa08f6111b03d1929772fd2caef14ebb45fedbaf7abf107dcceafa7b3827da037d8b671473d79be15ce78a1fc33984beba7f7d4f8d25ce7d2bf0fc7a0db5cbbcf4cab867173546d8ead5dc18ae5eb4823a9e1fde1b5d937d9a27e5fce9fdb437dd5251613fb939530cc87a6c8297f9ea9e3470b7dcef9b58d14ef577335d05f8955f6a177e2d939e5bad7d75cfd35a32f6a417e321faa4fd84b86fd42ee89c7a40df79dc1a5f17c70b1675cf11a1bfcbb09e1b3a6b4b2502793531ceadefafdf6d5f63e5ced3de31de0fa8feffe0e99fd43934de2df6f37a757f03a7e5394df40645bcadbf252cb56b5c631fc03784502f6043ced3f3f5764e710ff13795605cf16b8ebefb76aa7bd6dcaf89e27dc4859b87cfdf4d6dc826ed89e785e1f7b5e8e1c97d6efef9fc8c8ab8ecc36fef23f8919defacfbc5fe0c93b2e643a67a8dcab74efe836598c07772c077358d6a49f6f2d53d7358fb55e73bc0c7dafd5bcd373ae7601711e8d2027fe374d91cc933f02b73b128b8f65e819ed9c923e7a5b15d3fbade57dfe3965a952a46150d5bf7ede8efb16f20ba807c9c9a1e847e63bf48ad4f935761bdbd3eaf7cffdb5f969e74f123f13de43ae9bdf30be91a8d3988d80c8f43f6d9939e9f634e7701ff08e7c7c498caa7ec6bf1f2fc36e6d7716e39dba971cf2af4add65ab1f3dcb42b97073ca7c5b333dd3f58c69f138ba7ec803765a4bf28bdd74474c4b0dc597f2cc03c7642ff8c319441e71ae4a1e200ae04f8c770bc448e940cfba347586741f285d6ede331a1c7d131ac6a3b0263f4c3bf59ff2c8a6392fa8e14f704ac0e4e8fc2bd5526ccf7c1f70e7a81393162ba13ed55f4b4ef74370e9ad8737cce619453df43d2e8b1cd700638bb10c7f5914e2c89f6c1107a97637faff2d4afaf35fa46b36758cf6c5fbda5c1bc8d35fb023f61856b56db3dd1bbb0120a8c59da1ebfdd7bfc43d7861cae17b585ab1f6002d820b7c55ea514ffac919f85cf3fdf4359e8d74a6d8eb2b884fedde6f501413f473c09e92ccb4366f7dce2733cdf0b7dcbb87503fb09f1bd850cbd4e92523bd9029e20d3f505fa43f324fafd41e8f7a6bf5da6fb060e1cec2395637c6f38ede296da3685de70945eb40bde77d78c15476ede3f077a4aebf914da3526f29cfec67f6baca8d32828a0c77dd7330bc553a14ffca6f91ec8d1ee9a17c1c565781f6d5cbb669f35919ea1371bc461da3db73311ff14e301b4faabd718c8d467daa4b54e1a61fd760bed9a98de65ae1827f41c6052b2efc4fc9bfbad8db7db713ebeeb9b286258133a27784e9df43c96b2e9e3fbbefad857d18d9bfd648d48ef78b1d7eab4a4f90b2efccead15c3f640364b5cba79576fe2a0c7b06298fe84b1391abdc059dfd8277185470b5398f42ce6f02d7a2d3c45e87d8c717b9ff083ba47dd2f6b4cbe59c0af704ec83699887d139bfdf97ef198c6ab466fc0c6b322b6e3f2903dc185e49f1170fcb9f32a5c17ce376ff732fc5811433e12fb5162f98f7440e2f7137b4d322c6b6ebc1a73a0d1cbb1c69d4274abd84886aaac97fd4abb4c597f756fd9ec7588636c4e91d2bfa1578f8d74942229d342e88982fb859ca3c03dc40aed533daffbf38c53dcff83f5d11f7078aa38efa4f9fec8f46e88b6497d0ac5c35230863ed4ec923e2f1c46428d3f8731b775dcf7afeb0cb57be91a0f3a3ef5bbf82b6fb02a66bf04fe02ebe93d225fa4e9d63d880fd6747de23180f177df587cd02718bd4ddab3ccda3e98ead063a48779ca2d13711d9b98e34063f3066f61b8914ddedfc02f167bc30eef04bb1ffb653f2b2443f9f1a1bfccbf84feb85c3ffd30700a82af0dbeb1a45299dff4bf5933eca3ce4e4deccfa93ee0f0d96f1977664e35ed631ae37bf6066317f67ed5581bf29eec633168f26a625b3f5d37fcfbd8c1f4363e5da61b957b87f377d70dfb9445ac0f74c67e93fbe8f737cf126797b839f411fcc77446f0c5586fe041038ba83e0f35e6177a27f4126f5f5f36b18cf8e705bbb66163d4784618cbafd59f99c9d98f919b7f06ff680f58bce79fadb9307fd20798fbbbcb66ae6e355e8748bb2f69b581132360fbbb35b614ec63ab87b6c82b04acab467c9bcefd60f7c067dfeafdddb17f4dbc46ed259ee3e3d5780ee9d72be44631fc81a7fb8f7bfcfe6cffb99eb8759ff8b63ddbc475e07222049ba9d1331efb48473fdba7165d935eb74d39c9bd137af5bb758f66d2ff9760568d6f1967f3d09805d84fd3f6dcba7054b66bd3dbae6577fd935edcd41f6b05a2fd28d87ab42ec7a03a4d7d2f1f7f0179cc6344897e06a2330bfa9dc2c76d84fc4d16ff6172e6d09633ad1edf822ef9dea1afd89b306bde372da96c9a1f268bfebf3bdef3cb1af37580bc2e28d8b1826ebba0fbd7b075bbbea3b3bf37c11211c6326a7e36e9a0b3ae5eed404f6d3aecdc4357c4f9ac6d02a9b617b87efe206b3b71d739becbdb27184f85ee27cc81f2e64eb911d5b1c77db3af37c5aca87554e88dc2fdad32fb61d285275efb86958e6f17b1033a7058d0fac44a72b065d0798f6d9af57696991ed3d2bb58c66d6357fdbff86fb6f45366cbb70dd7c710e3ceeb6f991760acdaba268ee048e19ce722f4e7976718844dec18b24effe42c34f694ad5773ac1a73be61c377e117886703d34237f607a34d6a1b36f13fce1c6de15e8923ea9bcd389e2c5da0cff926bb4da027bf2aa377cef41debf73f19f68f801fc0f5329f0c795f2afbf673d36e6f9fcfe4d0750e7f26fffb98e617098f2954e70e8b63fc9b1fc363f1d3b743438fc926c0c3043d75b558c946cb2782f178f07a9b54ef14c66acb55fccc8e3b3f1cce404ef0cf843cfb1de10b90834e63a176c5e3f56039d9929fe5fd1a2ac66949ecee6773acf79e3b03f85e1ecf06f3238a4bf09496f0374cdadf263e8fbe5137846be2797af97d5097dc89a128dedb85db31e4fcec1d98cfce05fae3f7ec1dc93de2b098bef521d5bad3088f43f513c107cccd9bf09b41b2b7f3cf0560a8544969a8545ecc95b7ac034fe562e927cdd2938ce393c378a3fe27568acb04aeef9ee263f1f2088fdfc08bdbf4ff42b486c69f54ecbe4eec2c3c563f177dcff3e7638eed1dc1ad388655d231c726a60cc45dbb3065d81a24a52b417c759374ce91cbfdbcf06798f856b87774e0c83c8b1940ad4edef80dc6c1b53d820e54f31e5a6f05bae4a6ffabe9bbc6d75bb10d44b71ef16b7dc49bacc9dbbab08e45cc8c46be48d357f41437a79967223fc70112e7a49e43f05765575fb9cf5c43babe9091eddca047a77f9be0c409fc4bc0475a2e5ee0233d791fcd51fa1bdfc6e35945aff0acea7515e449e4ae8cc5936facfde97c6ed4ce1df85e0b0309d1c50cf82ff6d5e61d72fff6825f357df74dbd204b7495609080ad72e3f28b7deefa05d9f32eb525f5dd85e61ca16b6147bc14e4b8b0a6820d4a7df1783ead782c966b58371ef17a14f0dfa86debb3ba1f21efa081f1c33da7d11e2102beaa49debb40eba4ee1bf3df2f75deb66d8c298c43f394dafb60539ed8813555eb3d1db8786c6ea2aeb4ecde877f8cf9d6c02623bc0e720e9a3cbfce8f277340fa485c623b87f30dcc3c7edd6a3ba2d6e3e81a02cf653838222db1f1bab003bbf073810fefbfe3835d74da3157012349780ff12bfde43d9ee087ec7c8f48e7af74e46773c6fbfeca27d6a4b5b64c6ce8cb183f9f9f7bffdf2d9dba62fa44e3dd07a26bd6f7427f6371bc8ef85f1d23a298fc248e483184bbe380e61c7072295e1b7e978055cadbc8472e4ed7b251a0b609db301dbe82ce5cd103960335be2bd5071a7ea3139a675b87ce8477e27517e6cefab9605f37ee93ca3fd338a3ad390b7335d5e273cc624b1dcf711864e353d6f27df1cf8fa54e9c2ecceb480c03309ad17ba187724e6aff4e3566977bad63a0a28ef91ad3ba8ddd1ecbb55fc91afec9ec5ed3cf84f1e4387fce5ef01fd6d8d098de386c680e4f94fe56dbfcde298b7b7dc08c0e7d5c473f6de0638bb8d7afb1a3eb3504fd62154b72919af9157a278fcf80d74e72f625c0d837499dc3e390d90afe37f4e2c67500bf2c3d5523dfa8ec1ec1a1e5f77028659ff04d784ce2cf6d8ce9e69f186710c6e1df935429dd932f3106d3d72cb42fc2792538682f62f19ccd26c6410173abf35c75d3cb4abb90f3a23df511bc8e3f644d1d84c7a86bd2c5933c006eef211eb38c68af5c8a55671697d4fc83f8be3a256b3aed41ed097d77cdbb3c96b302d73c5373482c3b16d7244d2d433ab4ec7c82e31c2d548a6784eb9802574aca6293023dc2f7e7d300cfcfae76809b5b6309cf059f3be0e2975e11e9d05fe181be2f26b1481c9b47df6265a9529c628207866b4d488c5ccfa1ce6baa209a64cf1e1bba49930732798fe8b2854358efd3858c7768600417acaf16c6dc1aa463b75afb36f8c5b01e313a9367f79305c1b86ef85ff9f7c059db64229eb3b9ba508c35ace31a12e487ee3da453c3f90d17323e9b6c9d05bad35af92901f31d659fbd9ae6de791f6e203575bbcef5fbce7ea4bf237ed5f0d76b425cb1439ed679282b9abbe6d7d8c9fcb34c9fe98ee129750e2977269b3ef09fdaeca5bd69fbff71be20f8e7043bb9ce9b27dfafb7b17969bf09722f97df94b531385fc8689a7727faf3d56d6c6a17627ffd081b9dce878bc9323e57eb0c69dce2af8674e2f7a5f53e31c626627c064c3f6bda395ff88cd4717ba2d79d63c53d466551249b5b96faea11d67628fdabe95bfda73c978f91231eb5ea799b746ce750f35e26d93a9865eb3d602be59189afc5a587e608d8182007196e2aff1e6317219dcdd776d07f03f2febccb3a78a2dbd5f7651f9bfeed09662aebc1d7996bfffa7d42ac2182fcf99fea839e1eface5f13bd7f9e98f235328b72ed7b15e277744f3afd27f49c289eb4c232f9c0f322dc034cad6d1c984b1d032734806bd96accf5cefd67ba1ff5cb011e6e931f6547b0231bfa37473b9d3a3f5b332a5b09ce3c87037f6cfb75fb7963cfeaf90b7ea98e35126367edbc40b395cb27d01ead157c9267d88ec512fe1b7176f44f628c7c4ced892c7ac5bf9ef202f0837e9bdbf9ca57ccf57079a64f8fcf90974beb2ebe16b7a6bf88d6fdb4f56de8dfaf3da2d5cfe66805a4b758e07ca0779218abd857f5fb79e29a97403a416dac780692b42ddb2ea4a6e8d0a4f716ce74c79968c862ee7c4b6d7bfc69dd013a8fadb97e9f63d2113bc73df806722ac8669a0b89f709e2b4822f9de82f5c2f482cbfe91ab1fa9956bd75a7ad5cb4f77dd296b76c5d88efcb21f52ad4ef70623ec0bacf84f03e6e6dc8b773b922ddb938670167a5117b23eb27a7e6ac114791f87a9a4b1ab8dbc9f339925a4cc0c0aa70ef29eedb1703ce0f96f3bd966eb169a8b816fe88ece0d773181f0e11c9cda3fc685ad340e7781c6d661d720daf4d2b0efa37bfaf15f76273627eea0997d3162fd8f5434d6fcc4ffba37879081872e795bfe9f48fffb6ba6a731703ed85cf9fc6503a9e43e78ac92ce9b348f3a45441df41e7caf2695c40953e37dd322c1d1f8330b02f90e38ce600756ffc5edfaf5185e448f148cc7bfe093e1f6f8d64145ea33eeefbc7e4ea20b136e037ecdaf76c52f5ebbc9031ce61066c575677a6fe27213ec74fbc3647c0d1edcdb3d8d472c023c67d4f8a646f5f934ddb175de7593cedcb25e0e277f99e85df497c813fcbcf6a90b07f432d22df7d789c3d477a9b34fc19680f1cae7e55b051781913db0aa543f876c41700c7aade17585f728df725e31e31bc0fd79625aeef6dc6f78b3a244dbf37b70e7e6f90e2581d5e0b92bf18278604f436e9f86e5cb3c8f39c5dbb1ea8f95cb71e5d457e8da1846de1592b27a71d53a5ebcb7439268b568dfc4488098ea1af79f399a7fa9f98c3d7f9be977a36cf2f3a6a78f6d047b4a4f9e2dea33396f4c33c87ffc6dec2f4dae52bf8464fe16def27f774fbd4e81eb6f9f0b35cbcfa9e3af794c6b21afef08e7cb128495bdff753792077cf79ef4961f562bef0bbe84be85abf8ef962b9ffc26fd09077ddbc5894b9bc6f42fadcd46bd8c9fbffd97afead715ffa42783f20d9e3c97fb9c73ff6cd550331b7f755bdc8f2d0ca43fc5a36733f5ae70af1a8d69eb39a091d7c46ddfebc52b01301f3bf39cedfb5195fc435ff5eccc37c66df7f930b43bfa5edf33bf298c1223f6bee43c396699eb3a779bc9d7339fd246fdeea8ac5fe93bd1efee998ef41d429c4fc039663be106cc2ac3dce3f93270dde2cf46560fbc5ebd65cbedfab675afe9bff26bfb72bb7a1fdcc3ff251f367a0c1f349ec47cc096dfa9348ae01ed5595bc5e2b322627279aba6a674dc5933934fb4fd1ded6b4c7cebe8e0709b6ceb3e75b7b56e7e275e77e3468b29d73fbfc6ca2bd69d6891eba7289db63b4cfd0dfdefb0597ffd7e57369f23bd2db3518cfb3c9868b0f12fe989a799eea60dfb0180eee9d9c5f53e58d60c543ef78e6bb98d6e3118c51f8ef426b55710fdba88a1589c422b9b8b9c9d5d59a05f404c6e3839d2527b4f73c578bc7f7fd88494f3ecbd42a34d66730fb6e8efdc434aad09732922f007de0f0bfb97bc6de26368b2d5e33d26f18c9efc0adeb361619f517b7e82536b5bd0bfddd9b588dd9b37c42a86db0f4d48ef7b88682ae0dc6ccaa7bf0478b4126eaf95e669924663f3ce07cde86bc43f4dee55baee7cfcf2335b01d2be881bc9fa8ab7e83cac96f72ce7f54b7d2990ffeb76b569ab9557ffbbdf5febecaebb4026e2cdc7fff554d0c9fd3466984e7179d7931622f00fe7d6d3f2ac6fac0746b190eced542671bf79eec3cd7754f77eecc6c06385667e2fc516bec1cd6d09b744efd2ba4bfa6cce918188fc1c639050fbbba71b91b60f743ee875d613c7d9adbd6753e9bbddbf03c5659e34c7275cd386ed5388fac26b2aedfadef6bfba09bbd4cbaf24a447f3cf4f266584b564b3f137ba9a8d778175dc39e07184c56870f9f8fab36631893ae3887a2e23e1c23d2a3b03317e6bf9d331dfb96c1fa7ed3ef26ad757d2ef7a1ff6f214781ea25486f5c3ec9db6567b1b6eb5bfef031abd7fc7bfc01f332661b7c2c06bfad567d21996357cf1853ac8d795dcb45fd7c6a57adaaf8adc3cee7f89c42adfd6ee6afb8604c791772d9594ec9cf62b72c87a24bdfe1e2024fe2739d3657779ca959b350f7a7fb6e5dffddfc1dd14f238791f45da43a67dbd7d77d7ecec5e7ca057e88e8b63167b1ff5389cee4bdc68c6bc5cd445b82ef69f4ecdc8bb4b5baa44a7e0c950cebc2c31d9fab49f55e1247d22e9e696c9ef8285fe78a34fdd306df9b0963deb6d70272cb087f24fdc0717f043936e7198e99619913f2fd8a4c5bc6b2c8ab880ffd81ce30923989b2ca52252f92d2e3df0163d07a20c01ef2ef48e6ec3e178312de8ff422aeef49427a89611d14c7e522fd06d81f042f11621158d6e1efe4f336401efaf79d65e258e03a9867a19fe648a74c14afb0cc5c4ac783c7fbe6cf35423270ec6d009363a1e5c9de283e75ad43266ac7a4e7c85130bb3a8f51ef497c1f70c217040727d964cdbd167a8992b82cda9f930571c617f1ea76efa88efacf163d93be357332fee07773deb1ef496b53db097509388fbf23df9be694e6c56481738a5bbe02da839cc38a403a129e8bf308fd14f1783aaf7a4e988f6f637c6e6b6c1e05d9205aaf1bcb0f7c1cbd35fade5e827b432bda89ca21fa8de87aa7aca3f2d467b9b23cbf677384f72a46c5eacac87943e3fa55fd2dc122cbeceaf09fc9de2e42df91a67e6de7bde3d8155b03c2cf30ff2d09ae3e87873c2fa1674ff189f4ded27d58061973c76313d0b573906e96af016bb2afb17b4b8271003875599d97427ba66cbafb77893dc3dc63faac27e1be8e9dd77d0907040fafee4588d629350db467953596c4fe80ed9e6adbb5599c2234c70ddffb67fe67aab8c774dbdd9b2c7d8a6394173cddb7f33aeafb27faa02b07e5051676479d60c737d7fd99e6ad734275adee5e904847e8c2a919d4f319d9c07731e69075b23614f7e590ad14a38c1683ed1acf63c7f7250dccb78cdee7e13cdb6b5cde55868bb118e496a9429f7b0e6fe7186d0697c8f776918f31e6269bc115f1e1649f1e31ff87b100dfd932a1d7751605f931213974355f5089bdafcab17913e6331f23fbc3385be373fdeebd243e0bfe04a4cf1617328f3edd83a41afce6eefd033a0f5af30db63704acba9e5d401f5b2587f3138df8dead6f17dc8bd979309c070e271ccd2da9d472eddf25c0c8dc404fd412f12af25dc7e9de2ea2b1b78d16d921f49ded541f94a4772ac38d68607e97dfe38c0da4f5d8bea615a9b723f6a72d15e0ef5cfbf36c1ed87b8a3187fb68dfb23880dc45bccfe0038c089e40bdae537dc063d19df83dc2b5c46f2dac2f5c276e6c4392230ceb2dd4b9856d8c0c11e70af631f25d93f3b15ca61b15d91c8f0edcc07e3a9e9dd77e7a897b76c1ad4b1e2ab34b180c6ef17877a0f8a36160ef936af7dbd2ff5cadd1404a2af948708a131e9b2742ef1b0f4e9f8b9ce2ebe2f737f0bc08ee06c6c45e76e06ef078002fe8ebbdb24e568d7bc1f158ef417d6d36c17389116f0d66221e85e93c38ec8d5dac48e7b5e99d12d3ab924adb26bdc6fd542ee883df9023b1928bd8ff937d2d5e636d7c56036359b8c66ae78da63afd77f1ee56b7ccf572db1be1ebfea8582d56ead81a4b2d8c8a746ce7f1de39e2bd95f749a9c989aead92d2b8244807f3b54b030744e27f737d75c7e1d1f2181aafee6bae17c1fce9a2370ecf4379759fb836e9d83e464a5a243b7406d34714d88bc88f4e712f69ccb1d8478a57cdf7f635ed394552d84554deaf2d9c107e9d0a8223237eafb066b5ac68edd97f925e9685c12c0b94e3e313f09f304d05ba4df65943f79c93bd77c1b9cbb70d8fb1b15c190b572ade571c76d0daf48e91924b0433089d8f635cb8d704e7839cd1595bfbaa1ef75c2956a47d40b07952a5d8a566f6cb324efbd837aa48292e4bd32b53f1b9c5da4f0fa99ea6483722fa4a133f96e1c2bb68cebefa8075207d8222ee1ab2d162d33b33fec1eabfb43242762e60490eae51193da260befb54205e8cd6f61a17a75bb050a558f6a0dff01c7a2866c7af85fb5b78c71ef48762321c1dbffcbef81eea7718422e5a117b67f22e8a5b3ca07e12fafd101b63eb2e9f776be0e10ee2cdf419ae2e9cc4c3aa273c91af5f015e91c37a4cb9f7f98f414a6a558e967e02fcb6f9d87d4c7d82bd84f190b85aa01cf195037c0f9229642f13f9740f16b81e85e789949642453bc5a6714b146f998e8b538d43f39659c6197887bb72d3f74d7f5fdfbbda636ca8418cf94cf1eecad22f4b4fb78023150c1ed81f8d69cc97bc776fe42d100f0a9607c43bafb179cf9331f405aac75aa92bd7b30dd710c78a16b83fa02ddf2f181f89d50b3ec5d25a0316008f638573cce29e27bd6ffa8fd9b08f71a74c5ce3b7545423debb45b26de0528d29c6a1fb11efbcb775306f8e0be73c0cace67538131c9d9098d101e373531cac114fdb982ee919ab7550b6eec8e6b94e36ce57200fbcd5cefb0aaac315e3d1cd21ce0f350606d815078c2737b8c63bc447bc8acc8bfd4d3141f86b547f44faad1be4c754c77b182baaf16922dec69ee16d0ff28c7358fbf75d527a17720f774edec05ea37c8ad2065e8b16bf4034f81d4f21b8616f176aefa0759b82df3cac7d621bc0e7ce00a36b0c78f8c29c28b622771ef07d3ebf77a2edcbf3992e0c5d6bf847b887e085f1ef257ad39fff58ba74b646de5b02be89e21255fdf37441313879de48ed28bc4f1057099c62e97be7b8ca0e4477a578c4436a5bb85cae1fe60da28e8bafa90f38fbde19703bd300fca71c5d4ab07733d03f0037ef04f4e1ab48bf3e4ef541fc64ddb8fb08e622b7d6149798fc0e76c8078e4b3a912f5f27d4b7f9523fc0bc93df6f8e7f3f30aee40d8d9b2504e7ce1e3ffbcee7b2e5c9f75d12b0015787d9a2d0c2618de307fc7cef489ffebdf015f00dc83807a4a68b007ccdfddd27f883e598ce2f08e4dba7d9ef586b58a39faef7312ed3efd6bcc075c84ce73cd0fa8897f617e09c4a2c06823102e1da25e9b96a6c7a4fe6a7a682af7bd3cfbe90aca2bcb7f47648e63d5bafa9c0a75cf66de87c4f1712c7277f748e102fff9fa2b7bfb9df69d1c5f727e6d3efc6fa124f177aff958e4bcefa4ea421e0e7bb93659caf44969d2cb37b2e537df08c171c1b3a12c5fa66f2e1ff7dde54f71b233620f93ef767e705ad0be2bd32fb36a6cb4dabc33690b5b9e7d94620fff9cf5406ddfcf0c41e38713481e4d02ff0b96d180e661e99ae1197ee6c1d3812e4fa6e01e7a51e6be75da211c524a632bb2fc83976cdb86dc2c03e860bb9f81c0f72f00f18b7cd7b9dbb83f809ce8561b1c737248b60bd387c4fcacb7f35e54cfb1ee041adfb6abd40b8b78886870e9ec3d6e35aeb54c2b96498a0bcdef1be69d35afd4eac7bac4aaf7cdf0c385fa58af6818d172af93136dd0ab0a2f49cc4b46ed9da572f144f3ea9300f6cef3df3df423cd045f4897328b8f7ddb2cfaa7f996ed4635caa455234f60ce6c0e38d88fe8589c9fb6c6ffc7c2f5dbdeaf039257ab287f94f229ff17779e8dc77f314aab710fb0f63c30a3ab77c887bf6f1b3047fe909fa19125fcb8460b1627b42a298f00d3b474de24d875f67c774ffa2130bb7a9d33f9ee0a18eea71c05fb3f9f39fc966d08fcd628bbe315a30bc5265b64c2e33fdad22fe4816438a1509d6341a7b84b7abe7b5ff7659ef1df04992fb87716fa02665b15f8fe7d9c49c1dad5194878ab78915edafa93eb0e372762171b2633a9e65a11f956bff7e44f233a9547e2c9cc33576ae69606f31963ff4417d5880518e789ab72339af15c94772161e60b8d3ef2ae39e77a9b1103c18df1addedb9e4bdafa4551695c5097ab852ac8452bba2b55b077611f6dc6bb2df6510c3013fdce011f7bc2a5456880f15d14265fed869754ce2cd00f7442bd5e3e7deca66d5db6dba45fc65954d468e9cf4dc6bbc18e8a95f9c227d977de968be6e126f0ed7c07cdba7d0531ef21ec17f959646659946fe11d8451278c7a45c1d98dfc3b86d268bfbb9f11bc5e73ba37381e82bd0ade3746c6949e9dd53bfa8008379ef6cd7a6b74b11fd17b7cd6479e6fd13eac41c1d3f95e89a6c72c0310fb772629575bc11fbc3dcff2415a2d3e41a99da36a934527324ef22dfb9a23d9996b914fbb77faf7d5501deebabd28777db4c94d1297c48f77765f627643e5ef7312def455ca6d27a78de4eaad331dc9cb440b74af07dcae7143feb215b6f1779c846e6e348799e94a90c3c66ecc421924f3de2e72e6e9ba55f5ca08edc9f67c406cc22921767c930a7bf02dd82bef1895248485e4c140b5d83ba3d425f25920580b1d173f2485965e879bc6ff0fb2556dece31f7aec8f414cbf42e695954b1a29e490ee235d9d0b1bc2a29b52a217948a1efee40162b6a1eeb0324eb6fd1de3b59635abf963ea6c56df3e517e54437f27051503f3ac995cbd5c9d0aa9c6a777cef4579b2196cc2a50c3ef695e24953d3c93f82b3f6aef0be6b379f98a353b8297e47fee8102eee88268a7091e713f9b6992bc60dad63e4dd3653d33a7e7962fc813d139cb7a177ce83a5bc79c7f4937f2cfbbfc3e57dc3ed6d0e7b5b8e2ee85b27a61d879e0463627a8ff28fc508d132e7c377136b2b691f018b2f907869fae7cbb86df8786aa05bdac7526ec55ea7a57b0d7b1eacffd7f89e587b2e57deb86d3e96920675f0be565ae3f41897ee35add45dac3832a9bda33a9981f44b8c817e3f844be91a14a75ff385bc0e94d1f9b3b827e9b27f9b3ffae7c0b8cbb3e160e4906bee30a3d74c766d4bafd9a68baf3d1cf6ecace71ae49a14e26bab88dc67dd66a319beb6eddff07dd68d3dbb1dbde1fbece16c48aeed22035f9bdd66c3115c7387291e6f15aaf43e77e70ef1b568e46ee935a48dc9f1fb6e74f60b2d9f06c72418afd01c6e538f7e5f44aecddfd8b52dbd16d26b95bb23d71e097df6e1482eb9969af89a6192fbaad97030c4d7d037bbe41a7dd6babf8ff07df3479f5cb34d7705d71eb361ff0ed756f31e1ecf33df97e4be55349a4bf89a3b0ae935d3ddb949a04b97992ea964bf7447c6f3646b399c296c1fe8de6cfbd2cc90fe63eb7f4e6b7fa42d15fb3f11d281401775afb8cf827a0803e723555490d951604b9f8b7b129747389753f3dc713eef39e6c94539318b1ce7fcdc0e6bc44717bb238b472dfbbfd77e7858fb239c57a7e7ff0917f77cb228a88e9ecf96e763b4c90fe102e9978e84c69d042c1ef8173ebf523e1b9effc3fdbb7e3e90795971463c626a5aa7b0baef26018c0dfab2b594b4b00acb19d29dfcd9057fbb308f47aa1452a8640776ee4cebf8a9e01c9c40b7ebf714b7cd7bc9ae3f3e7d79132bf7c4da1eebf186678cc982f4fc52bbc6a697e3e7d09acdb9351ac11ae1f8de08cdadfecd9f5d42dfd946c1404a24c0d02d425f7dbc2b230dad572cddafa952fb3a6abf79ffe42c76bfe938816ee35e52de6d03ebb008cb40b7f3a42cea6bcb738d5fb2a7eb3fba7f05721297fcdeab8437dfb753734e6800629988cf6dbee565a6fde7cb948531eafd1eddde951fac4f2f3da6a67398986c1f7f633ca6fea39ebbb179277be70cb97d59a2fdb7e8fd727dffe088f4f8e52647b206efdd30fc55c7560ba4d7bf4f90bc19dfee1fa5add57334345efecc37350d4ecdd529dadcf793e04cf2e38c6da878b774ece8b1a29d22dfb8240fa9426b14eeef7f660f343ffbcfd7700eebf9de23b90f5c6f30b02f96f2eee96f81730b7da7f8f057bf496ec6390d1cc90b9c02f2ee4caf4ac73b2d7c9cf99c9322d9bb2a193ba76363ecc57a1e8962402ffccfd2f356bb9b166dcf350ea5af29d1ca3b2763575d91dce40f3fd5408e8ee6da27e97b6795b5af19c9fab84c0b885d2a7775856b4e903d67792379c6d914b4272ea3d339aec7c5d862c85edbe5abe5ea96253def968c6da4130d634545b6bae4faee313531de25aba11f3b720235c4ce63312e764969e0f89f625431c6a527fe8bdb66ba776eb1594813e3b6015d6ca19671cf36421fd121ef5f1b1d3f2517e9105a5c7a3d6b641dc2c5ed36d547f7a9393a613abee5b305faaf407658eccbb70d3de7732587f812d2a7a7467d7dea3b078817056e6215d2099ee16cc940b74e816e637b54be6d82c53d0e74fb909af2c92db58afc8ee6cc9e5f8f5d2919811eae90df0fe9d8bd4d7d7acd4e8357df49f4b90fdf886786f4db35ce9b80e876f34dbe990e47276b393a85dee91e2cfe1fdade6c3d55a65b1b3ea0b53105631236a3228260475bb5279048abac8946f0e8ffab461550a0c9f3bcefbfbe8d79cd4853545fa3b9c73d2a6ab720fd3093ab95372a36c285cc856fffb427f2f6022bd908b91aedefc52dc64b2dc26208f81d56bf7ba038a52fafcfd85dff65d7689c9643dafc1f8d49cdc6e41a2a92e18f43c87718889003f4495dab2bf4b9e78c7c41cbc2dca903d109d4b80ad4dc790915a7f6f34569e70ed3c99cbbdde838445e84e728be9d6f23cc53d1a9c3dc99facbe919fdf7ed7836b702355f94be228df7e4de624d64c6cc8fa75130ceaea89e46a1b7ff66794b8fb46dd3127929d89cc3a5f6ed2f0da233507f17d5e1b32006be0818173cebfeb6952c01b9dcceaeeddf26773f772efe789fd94a157dba0cc7944bb56f4fbe594e36c07d1f942cc58a039cd0fef8e3e8e712d163055fb1c9df34d6b2c905489e5b02d7c6dd7427253973d4a5962177bfa5989c461f25ba793b6ea9ba5c2764cfc310afb8b8f88a730fea69112acec516d7a4dc408d27f740a98a7016056a3c0dd438e5b818223ecf77b4f22eb22b2ec2ad0bf8ae1939df8c9a8c4315e9a7fdb7a54863c8bbe9ad812fead958f919ac0798dbdd9c11c8de57044abb062e604765fb03874727ebfa3fafdfac8a747a7ec35a552db9f832d337babf707a16598f8a34f6f3ea1bfd17df5acf585ffcf82da924fb16b42997c6eddf62f6daae95f11464a8ff707d88bfedbdde0cecef56a02caecd1e132a8b9aecbfffe17784ff683fa17be737d1d75ca10a74ab08578b0bd163c295299d7af2f6724ae5ed712bab44ee7d119279e580edba99579944cf579031aee14c386397dabe60cd307d5f77b588cc1b582b1053a415a81680775c55ba7bba47ce693c021c3a5f965815c14cb8216f7f56957579f03e2ec1c929a94dacfa0e62a1009fd069faed2b8b068ff6ed2b52adbb19d89c03452a11d8155e2e38cf4ab856b7efdf825cca0f6e95b5ef790c5f4bcfe5d41785c2cf17a48d3169bbaf64576c4e333f2767bc7d41f922398861cdec6da4ac527725221715e132053b9b3f13ea10be814b5f9452dda5dfea7ef3cf4be45b397285c2ef7edf0f5e41defff64fbb0bcc555388b0520834b7357d06621995f5b97d0efc6c7673bfb54535f74391fad955252c3fbde95977c14f7fc462350994e3c51f6b0519c7a6ff0e8a541fbc02f0cafe6c7af297d9ed3013be833c23e76ac4f06122d1ed0eee1aec38601f8e85082fd1e5b3fbfd0db652f7855c2b7c7771c2a6d0e4afa4dc8c8a3302df029531d935322fc05f73019cc958050ccb41746add85febf204ffb8b3df5e2bb59aa2a4214e4972c8805bad666d36fb22fd331146efeb8c1b4f5ae1339333988932c181bc7405914a4affcb196624f25bfaffe789de9967c0c1489cebf58a031184ba3cd030a7e073a07596cc6e2366c6330de7f073381cdc5e93d54a41b3f1768dcdd250b9588ccafd361d6ab33c4661f4487dac1dcf0ac7bfbf3c15dfff5733863c8fdef83685fb0b220df879c34d4ce2afdc5a690226f7df6459c0722f0b834d7614d923d7978ed904b05fb2e94ebbbd9087b5a79708502789e9bebe36984c46cf46976d7980fe1182ace4b3813223f5f9fc186487f83edb4918bd525e45fbff07dd9d8bb9f8c9d40d76b55f8b97d217a08122f57226b036f26d864c93acdd283499ecdc09eae7b1ae803945b737fd7bd298ca36f4e45dd5d9481124528774607d73886b100b177b41ee87270f7992f823fefccee5fc81e855d81ac8104b9b763983b4908fb909363f2f76c0aeb42771769180b137589b380ceab028bd955f78ee49d3a9c716bc39c8ec9bce3d74038d6a81fb2162ee0175846175f99dc37a7888cd15f7579bc34f8196fa65e83f1b43c78bbb337538f6013cff177903a11128f679ee3099919b3bbab44e7afb1372d896eb752a4485f54d740918b0d398b32ee2c8a6fd5af3221abd3265f10190d64ae4f858c53f98a3c2d097289ece52f644c0ff782fa2197ec9d13991f41fb7ca864239f7b1ff4c5ff545f6af508f91ae4cecd57160936a36f64563764a63feb1566c5fc001faf7a2d8dc371700defc6d51f6b27fd2e4f3656fa4deb7509d4f8e1dc7ff1dddb2bca17f746bef8548472935764fe51d9eb145dfc79710f487dfe492eff7fd106215a5bb3f76a63a52fba487d8c4d5d1ef4a8d33e4229700bbc34ba60904bf76024d507372cfe0bb9a9fa4ff5a3fd6c42e7cc28aab18bdab2a0afdbeb988c052d1bfa9cce9bc352cb7046c701f4d2f9f95b1f87e3b09e8c0de6d731ac74b231255a96007d007a351bcf7b90af99ccdc7ca70259a8b1d9810c0bfa4677edff419f903add9a3ee1ed4201f34be88a51e259b3ae6d693f7b66838de29525c9aea8859b1c6466f63c923a5b98fd87da336d66a729d26d2d579b583e1b09e7e39865e097f00566eb03ac14d800b7de4c8db69610bbf76908b6bb7c12a831295bf30d67946bd92db6b2f6bdcab3de23c33a47c6fc927f2d6f673f97cfd48e67977896e65a1c255b97c56928fbf7afce36986dc52a5a296aa1c5cc9e476db17f605f730572d6f7f8df519cbe221338ae07d7ab40cd6ef14a348a9555647a2e08c178ef04a2d3f59f2545ae6853bf3bd8bb326a27b1041827b0b7dddfefe47fe0baf2a619f41d991333f515ddcf679408999e735cf136c54be2f9b3eb6c6db27940cb97a2ce2ec673ce93b13d9fb12564fa89e6df40f711ad8b57bdafe998e65a2cdf5839d05e56b7bfa8aed2ad2803a71d9f33c0ca8c339ec1fc2a36f9e3fd15d824d36265829e00bed4209725e4ca574f90acbdbd36f7cefecba458decdceae2c6fb4df7aa3c9d659488e3d72be2c41fb726dc9f18450b3e4ea6b973a5ffb3433f7f6ae0c44595a271f953137ca5069fe4665e8367f0765d83e732c3f9b67ac5df9d93e93969f7973fda3dc35d72db5dcb5d78d72d794937c94fbb61cbbdcb7cfa372df3c9fc8e5be7dfe589acdf3495a9acdf3f78fd26c9ebfcb80fbc77114a89ced7be8cbb3c7d905e552a9c5d8a23e801be8c42bef027dbbb784def5cd781d6d6dce673e9b648def8ec8009bf17e781f622c905b056a9cbe917edc83bfbcc1b2e01ab921f77e387c1f645134de7f01af8303bef51764098b15e8d9147b0c388a3c2bb1a7c1773e87df3935714d4e4dbf530cbf93809dd58b683d468be17db2c78e91a7a5de98eef32beb327ba8c798ac21c051403dc818f7ebb11682f134f34febcc13016705cf91f1eff78b40d61cbdf7d06755f479cae8bd7c784f2b7d11ec8ac566d4ef47244a37d67fcb61bd895c1d784ea6e7594adf8d86ed4fb1ab095880b89a043b12c888f4d96cf82cc43320d24fee04ea693ed4b3cab0b8483e1de97c70f7297dae5bd3a6284b437f55cf07b3584f7c57fbf667286fe6b09e83ce1011d9b8677b90795f5fbb9747f4ac90e20391a117f47ce87c3c72e7bfa1efbc214bd0918972e45c74e408ef5fca829cd91f3ba5fbae37d3421e23c1c5d00dfdedd156945f590c22b4d972e537feacb5c8b96466e03b0a73a9c0b30fd84b2d572ec2a536f91c0357d2589529de61354bdfbedc75c4fc4a9c3c47f9a390585e8173cb3c167a2ed0e76652e0292f6775763e431e2eebbdd0ebf4cd726509c52887f3d2abdebd9916a82781f9a026819a550169df6a24442b71c1fc2352b435e56a2833d84a8b6528707c8c9057bd5b62d7bf507672d922ea17a5f898bbc0b017931b914591a76536b4e162c3fcb32eff705f107d314bd5f9c71bf4158cbd5a90be4489d0e36c7ada8f66b565b89fd60fc8f99dce08be2b8dfc313dfbbc9946318f44a65b5eeed8dbbdf23a10f8ce7a989263b1190bd2caeccfc1fe1c87583052875ccbdabf595cc6be0eddf588941b9cb2373b77729a57644271b14b4d40e31d91337ccfcc24242ec02f7ca81b996d271dc602e07531c514023e39389132a2485f5c42c0a5b84e19880eeb4395f9c08f4537cfcae25384b25a1ffaa06ffa65fc3a67bbb256b34cea5f27e357e65abe0379aee10d1a9e6707ca13929076c239b68435906dddb25d039ddeaa05606b8c21f741be7577bf3e83ef44666ae4d151a52b4709c79312bb9353a81c2f865556dbb970d26274dbce85b316e3cc15c390ec2b38bb9c3dab2c0eb3d185e2788e6f86759330f8f36fd2617e39e9e6a824f7572e69abe3636144e4dadc15a390ad9d0aca1a57ef8649e4db63f129eebf55853c1f5c74b33a93328cf9e4fcb5acfadf6e7102dcda15e11bbcae17a8f1340a59be4eaa83a947b22fb0b3f97c70ab6c3597dfb76e906bc9c73ba9c3970bfbfedf2f4f90709e5d915b959f1e5bcf66f54feb34f96a7de751b47565224bb7fcb1d4175cbd23737205bc2a951f8bed087cf805fdad498378c03de0acbc0e0f81ccc908b9418b85585bad3f9dedb3547eeefce6b2c8f9d53788f44dda9dbbccf75e19f77e39de4cb3426f7d03ac243d6b9bf2260fe5659d2c00b1a90bfef98f57f68dbac1691896cdf9f26589eeab1396fb44ae566615357801c3927f7ef6d4f03cdc22c34c4bd47e53adb93a465b076cf60c9f30f96a6c668fdfeafa0059c20ef02b4c2750ad8f4257e4b7d6ffd6e21826a00f3c603316dae359ed3e9ec5641fff553ee89ddf72c7fd4bf59cf72f45befa6c6eb178102a2b9f1847a6f06b796f1d7e436ee754e8767deecd3425c81727c0b92d6e2d8e23547acfec5ad9386163b08ca2760cb25b6cf3726dfb4cd87f86e524b0987cdc7c6b97f7bed59b97ed33e20fcfd84c363d094c87f8e18c22fdd2f5c5559bed9bbdb8ed974fae1eab6763b1b8c53be0c5705e2806f712a8f1640ee7982b009eb6a9efa7db2fcb13a9effd73b9fbb7e512fd5a3cb8fb5eb93b577eedd928c196aebea14488f5bccd8500faf7d7b28af5bcfb86375389aed5ad8127fbd78a3e07768aad708bf7bd5849b2ef5ee295708b570ed5917bf7336e5f90f711b7464d6ead154d5bf65c7fb3f574253a0b5df3cdde355d20ab005b9f379e469f6ef58ddc1d9171233d9380737533ded79f5e8b533bdab04f46f18a9327509dbd7d7942c77b48e5597e2fb6867b313f77386c5adc6089c07641eb18a8f944f05d8d8e5587576398ec7da026458b51e36482eefd018e8bdfdf3662cbc7f0da93454f420f0be528f2d0860d73bc95f3e9b975f5732965f695428b71a0329e3026a33cf3a1e71aac2dea2f47b9f4c29e6518342dc24af6dd5c5b3dec954ed4b3db3a80392eb6e08b66b8a2059d4f34261cb01ec9d6666b99e62becdbecec7d1688ebfae04d47fe58256706274feed939dec9bd88c8457381d9b2163eca46b037abae7c3d288bbb350eaf7db93905f96d802f8e78190ed560d7fb656fa73cd8b48f7fb66d20c82db76bfa27237a1070132a4862f7de5a3c69838b763a1c19c3f7bd11791be7d929f434c0806c62f9a62b6116ce8b811ed1ceadac918529762d93f4e57af03cac8974eb307b9875c9fbef54d1ca13a49575f95d0f312ba26f64fec9b9e0a67eb971c52e59374e0d381d8fc3ed9f2e64cc592cf88ff54fbfcceafefcb941bdbd5109bec6c5be46eefa2fc449e53c574ef686ccc9179b7f20f31d44a7de3ad5959dbb2976ab0c78829d4bec7982f4d5c7c3ba6cff20fb12c349d16f614f7bff22bacac3755572c04e9d165f2ebf5ec24eb6982d220eb3596d38df8737a63188ce5223726a16244c6f8d331e1bdbe8a931cd23c762286769ab5f31bd36d26274c673c186765812d193183e66f7c79b69905b8cec5964ce43fe2e7206e472c3515e6c4459c21d5ef88840f637feac1495e504a11c17c84c41dedac472d56f77c4da2d4b889d45bfad3fac4809e308fac3fdfddad8205656232bfd86917d94d9a8fed7edbf3af56b88d886f8e3cc3fed412e43b9947e7a4282bc7d729845f1cae3db3e897d713f79941bb336de82f6bf21a178921c1487ccb7b4dbaba797d5f222e98a5a7eb6fbff7ede3e77c2df0777773466558bd16cf8429bf6eb8cbf837bb6fb0ef57344e013b817646e8e837c01f1dc76c7e14d79d3e5162725adfa73fec030e0cdded5f823a4adab5e5b599acd39b2dfc399174f8675267b33c38e9379dacdbb5edfe45c996d9d766fe82e90b3bb7b9f71ba6e45b5999bafa84ee9fa6ef86632ca11baf52e2d6f7b8b719d17a9ae6480bd456ed5ec2d894e79ea20f61cbb3bb20e58ddb4ef4f36af504ccfdc67e722937ffe343ea57edb9af168eaec48bdb531ebe274a8acd7b5bf2b0fe5ccef35c4b6c5d47738c4972fe2a64c4d69637f9afd82f469db972bb34aa16ee0fbe2b1fe42027680c52d267b3bcac16e4ddacb62028ed4af42cf4a6a5b749b3d83ea376c8cc85c2c90c9720158cd59bd9618476cd472f55a23ba67c59784ec598fef18c5466cf3bd9c0167e66a9783c76289dc3dc8c341ee508c2f5cdb917de71a006e12673d5fce82974b3aacff97ab3e951d789cecca92624431ea4c3fad929555c47a1e45c1481afb19778e03eeafbf66bc994a64b46119746cf2215e3b2d3662b7fe5ad96a86726ece3dc174a39cea3b0f6b4b52cd05ff9d76ff799c4bebb8893360b1203fb6b1ebcbecfd4bf9b10f077b04f47db3cf0ce6e231021fc1d8897d371bb1732205b9eb0498dff6dad7b26aecadd196db2bb41877b12b71938fa28bafd9886a33e77edf2bd9b86dc435691b93a7e9b5afe58d9fab64ad450f6348646ad7905a3b92d0ea63cd5c87eb4cae2167ee4fe3f62ff7f4dd1b6d179cd544ce8fa8ce684ba8ce86f6aa661e96449f626beb1aba424cfd59328da7a0e7f8d51f8757ec6972174797927644abf68c007ff4f02cf8cffa39971fce9927fbc34fdf4806e7598aa8dcd8c5be82eebd88f494e3ece1f043c8ac863267b32f823c85e252421407d3c906a7de3733d6a720f7f866f4c6c7de3767f917dd9b615d6ddd7d4c642aeeb96205715fed6f0925dcf71ed62a8efb714510e3f41d2c2987e286f9203e4515e2487af669ebe30d5b55c2c5746610d3995d0235de439fbaa213b2d8b11c74b3fbe806f1be666b837e4375f97745e658fc148fd19415b9e23ae4ce20f69bcbdd019802b27f2d7c248c38cef09d84cdb424f7e8fe46ef7773a52b636bcab79527407e864fd168e606d96393957589994c43fb41b125637ec9b6647e2bce158ff7e78d68ff5db1f5809c4be6b56b1c3017c5a7b8f0b1d3af9b4afa91d58bdcfbb15eedbc997058140d7c7af4bd8cc63890336d16417c087646c597cbe4094b88e93ce438dfe7a3c89865d2432cafa872fe2f4e9eca7f8f1b5a79035fc9323d6f2cb9e0e73c99d75f5407647d5334fb70395cbf7d7995f14524053bdb89ded3f0886856cbb5decbbde30ce5d473bbc65a39b5950dbb98b7399153b237aa2b75eb9decfd4f64d65eac5cb31f76e7ecb3d8ecb45e99293cb7f3b41a79e9f5e0ada7c1498b3ec95c633e54d53c56db44e8d6d82c2d28feb5e34afd348f13a326e7bd2121a1bc799e106fddb5d4b6232673ab39b35268d397fba4ef2ce1ed614fcdd6d14a318ac778c42c1eea2eb6289fb9f392c8f13fc9269d9c5a93bab5eb2cd11523e2cfc9814c97ac5a9c8ff0a45c943fd9dff9f3f261ef47752b27455b77c7cebc877398cdb75d5f37578a78884104bbaddcc456edde109371ff799eda60636aecad7d1984ca646153e738a3be6be5126fbd0bc49a6db27fc6ef1d96fb8bbfb8c5ba2244a10218cb7fc0711ebf2d77313acca435f2f667cbae88fe700ff3e0b58959dbc4efdfe1381ceba7e0aee7528debf7da987fdcf4f15ac4c22da6dc83bd1866d667ebf181eaca11f005b4f6500cb650ceb6f9afbeb3e96cb2803dfe9765508ce788f4076bab2c18de4c7deefbf947cc6b34f2ddeac116ebbbed5edab73993b549710abfd56fa28f2318e3c626bb15491faac5af639e7cdc8c99740ff3b0d1b3607e91730bbbd9c94ffbbe119448ffbe7d4911753c0d935857a478eb0e71b99dafe737bb8de5aca7c1f223d752c1da79d39b9e3b2fd85d3bfe691de1dc31681e92aeecadc87fa78df52d3e47ffeefd1ed67496bd71fe3186a7dc9598c868dee81579a30126bc3d0f995cdce0821dd304fbd625d64f6b118f614cb9d8d80aeceaaa22139d968f9925b21993352644b688bf96d5ef5c13a01742dc28d9b7623dcfae7eeed4e662bfb6e642a026b03eff07ec9ccd5e6c4bf96a965e4345b258feba33f89592db37596f5b906b81a703eaa0e7b8084e6ba21316beb27b43e6243f78da9de814e41cdcd41987afa4d74067ccb33a1813bd10786da88c34bf3c9407f229e46d9aa4ec1a39377adf6076e4fedeb19cb6670ec857bcdd6c5847905b8d5ccb0daa77e555d4d50de534dedba0fe0f9a73adf8149bdfcc66e4aa9d7eef812f24fb5ceedbd8e6adab75784e57953ec5c5f540631ebefdb4c15791bfd7c0974a6df0da7790efb320cd2ec80d33caedef3cbd67539ec457d5fa281159b78a539bae1061d1f10eee7e74989f236356c5fe38527cc57969caf8947189bd6809325af7cc36c8f7859f2fcafd58fb0ebd0f5aae2895a12b5c77a224f8a75def5a708777f3aeecb6dc31f77bc7624f446c75cfdb625443dc42f7dc06bb61347ccea27144f05d3cd60a2c2f6aeccaddef85f61dd27a9c823c4bed5c1aefdd49cafc19f5c1dd9b4d1ce1f01ac438cdbb7777ac5ddc73735fac04df9d2cfc7cc7d561fded2f9d8b9fad6fc87d79767d843c8d8d192667bdc762f4e05988c9b1d72572851b7da6227b9fda7ba68909a27d41c73d617f9f80b3ed0eef2ef711cad6c5674ee7412866a93f0ed9bd42f3f37df649dbf8ea8bd285d5a9f0956a4bf6a683b79fc0b54575c579f5ed8bfbfef5e57ae48fa70fd720cec9de4701c4c56b11ab278b5f72643e56aaff8e5084342ee9021c75d647198cf7b52f5e32abdfe6a6ac6e2e2f476590ab922bdc624774e28308f61b88bd6de2522d577a65d7b6805b1cb57ec1bfd8cbeeabe5e21f625eb4f8c7981f664f257a0522ed4e17a3d5fca3788cf74cff2273720f5dadc9077a36ccf42d7035880782ff1d418258845e3c69cf2ef6280b9ce0dce07dca7ddfe089611ae13c57ffd0bf8b84c50fb43e6775c8fb31ff68fcb3d50f3a76b432514eeb3dfac3fcfe7f519cb6d8cb4daefef566daed73718b87ba62a8b4f20df894599c256f2b4854859c7f0ccbf8bc0ea0f3347ea8862fe6009886684bf106a30bc46c29b61410fdb4ae62b00128bb622310d9a6fa46ad0dd7a03111ce2d46e3f57ddfdc8bd3373c97229a1b8cf79b1a2536d357e45c12cf12b22f8fe25b4357053b0c9cc76e36c2eee855b5a692bebc44e46c667b2e913de9de7952db3d94de033b38dbafa29afe9f5d30ddd3680e25ba7ec9fc3d61b6dfd01830b87ec1de9e7e87e51261eb8df2e1d1b504f866f6fc98d661fae4fcc40fe727e074e9b893feeaf95d1a9df76b59fd7bfdff290f997c5fd755d4e8bbbcfd1972f879e43c5a979fce3a0b654e9e990df5683e9fceb3efa05bf30dd5fc0dffa35e31e476736a7fecdcfd6566d17cd0ad5c467531416272b756f8f1f4bf6c3baa489d80a74de9fc3a6c8dc0777ce6cf7fc014c48cc7f579b9603f78d0cb97616f8c754b66f20f8d51b3444474235847ad2ff9176c2a8a274570e731890de7cf3450f3059197da78e84faaa370389826867c5afb2239939c1ef6a58bed5e67fdf7683c36ce170936051a5ff6c37bbae7d407a787b3c9897ca6bb3842a27d69f2b8ff52fe95f1b870f7852218437ce985c67e477d8ea9e79c4db70106e085d98f236a17a03926bf9615d97b6a34e2fcc70dcfdcfd12e9f9fa3b386959309e7efb20af854e2076f23fd831603c7f7f8eb7b7515957e665dd3fc8841ceee4fb1b5fdc679b9ce1e1975963e32c3f7395d919ab294a84962fb8c7b994ab2dde1f59c21cda6c664fb18ebd736999c5cf6c8546728435cce196282fab3df9c68afdd6d8b2f6e4cc89d3f21374ebde33658b1955c81cefebe27b97d6f73357ffec5cf8770d96ce1dec105641da49f6c257d276d41f4f05c5478ac3581671eb17b084571457f1d65ec49bd122de7a456b23a67d93367b2db57f5ba3db4694df51ccd9bfcdf2efcad6e29603b1ffdd6567afec7008c087c5dba2e488b7e3933de347dd96ef0fd355cf2befc262218a786b87b12e5fe2ad2957ba5cc1fffdb814215e0df665d2e6ee8c18493b572da05cb3823e1bca0b56ae36f198b43f65223bf4da56a23a7db314156ce3030cc68af33bf1d86d032580dd5ec33787fba22c3dd82b87738bb7fdf6f8e0143e0e7447e75e9d0e9edf3dc6dedc8514e24845f9b5c39bf6b8edda9c6dfdfda7cd933647de9494990defef1549407995b1e77afba32f4e647fecc4bee2b0dc6aeb285892bdc0193eb726e71f861ca393dfeefd580fcb95800bde1fe35feff1dca13c26d24f0572f6678e377dfe7dc7b9fdd3bb8c233b5093f319cf47119e4d389ea40cf056b007537f79ca7845e3d0db8fda1827770138009667b877adf1d534f6378ae7005b00c880cd75b26f216b14e1f90562d40e751faf09b1051e6093391c17e3616fec15c3f8ab5896b64e75e57084cfecffb57187b5cfe108d382c30f255f1ec8e13b5823d47798233383381c98d70bb2775d244e9f6a6c76bc8cbe8718e0d33422e763980336f38d9c6b43fc9c0d6b772a7d91bdbce55e5da4587644723e7179adc858000725d1eb6c17fe159b71cbbddac4282f805384e37907fc80e2dc2967db02fead3a0c16397b697bfbfba9899ef004eacab1ece28c6e52e3930988dca5482c0681f23cb631433c67f1dc2818f638d6c14f5d814ee1cf3adcb14ff61eca0bf8eda7eccc535e8a46d7b045d26772e928edb9ebb03dcd6dce5f7d1192716adfeff53bd16f8535d9b36f1b611f6fdd85f4d5e77446bfb59d7dffadfdfefc62a22e8f9c87e28ae356361ef675d755b938fb2ad31554e2ba3aeb4a597c0a51d72f34af64c9f71ff3675b8ddc6a8bad7faedc3afb7843db55d17691fdb56ab040cff48dc96696161bc189bf96b7b3e3c239523a449e81182d1e83f7e0c329d15d88e87a94c9d942f6962be49076690c148a5bdcfcdbca057f60fb1bea04329ffa8695f7234a8448077cc9086c9cbeb2380535aa8cb92aae4ceafbe2de2f7445ee9517827dd426324bc77b39371a0c5984ef5242f16255ef5cd7944e2e332ca3c17247b8ee61c22f646d1dbc22c32c4f768b196a7cc5206b2e4ac6b3376ae2ec1b3ed3d50fe50c75bdadab72e72360f7ce9feebe26cfe2e5af58fc08d5b096c9fc3850f95286f89a27fb60b5991f8b957579c4aad43d2c47bf4d568b957d438940bfc1e1da2896efa95efb02f3acdb6719a7ab44f7f47c21f1361032b7f05c8837f7b287efee7045bd58df6cc562d418ce37dfba766f3e0e9ecf01e3ecdacfca8b18062fd9babb379acf35bb86ae2321886dbe4864acb0c9f46b906710c390ec1a0e78fa7d66c3c74913df88c8b7135e7e437594d158abf67efae47ebc119184e3c9fde06a25d13dbf9ee903d6f1a5d39fbbbe02acc7ac5b37e82e64bab29370eb4fe978ebf11df6d0335fffc3bca9ff91d5ff72827d5334246c917e446f7cdf1ce60d2e30a0788db990c1b3093bebc7c279eb1eaf8198c560ff1d0b30a77013d349e32e59ff5ece1b861180729dea8ac87377c0c924e4dbb47c16a3e8b6f54cbb7a425b93ad6b77f59c0b67fdb42e10703f85128d69087e582729ac93a65ff97945fbf6e97c9f1830dfa16d77caed4c63147f598b1df6a8eec9db573426e3ec5cc3868fc42ae2be7f7d9db418f0dc687529f5496c1db7cec81efed6f4ef9af20e13fdfbf4b5bc890d2e97d499db8f988ec6c66796b5f62fbdd1ef1321d615b5b341cd9b7906f8282aff35eb95c5caaa44b76ce6c3bd6c30fc715be6a97ae7f67a5ac6835cc89f2f13f277bb5e7a756bffbec45bfebb6341eaf75535dc1b53b23752cc1997ebe1feb04776fb7ebbf65b7998fa90eb5eac01ad47eb3fe3b9ade9de87ea2a47757542757546755520ba4eff17dd05df33abbfe8ce641ea56ab0e4a5ef1a8d6c7425f7b1171c2d7771d3152961bc976be47d94816248ae302a0317b02517d0255ca2cbbc1c7daa9708c16c3af2c74e7250d6919faf33bffd0ddc79f4ef25f5f5a8ca42f854a8aea62afbd86ffe5e4ebf0f54ff48903b49b07beb78f072fabdf6f7c9b9a9cabe466e98f9f9ee083cbbe3a6fc7ded8f3f682e3d45bab3dc0ff0dce05ac3ddf7177be00bbaaaca25fbf4289f32fd9b7c87c67151eeb8bd0676e6d934f1c7d389aaacc9df37e4ad47c01d4974c41a726b5fb168530e5ac5790915229bd9478a8dde1d394ced038fda03e712acd74e16ecfc1d93379457df803596a5eb26974bac4897bd87c1160538d75c2d31fd6d7d42ce274101b9e95e245f7359d49549c462304097d8e476d9d8d7765caef2e05ef87821f4e5bd25ec29600778160f4bed876b2110b3ebd06688c6c0310cb6c48368343232ddffef1d8685f227d31c4ffd3260ec4bec2e44aacbb6f39aede125675ba5ba2dd19d0771846c2e4b02c4e8e6c2cf659cdab9097c8efd1843ee1ee8bbc515d59326ae09f8107c9172869aeeae68ce220e6773f2c7fbf619f45c472ffdf17ad4ad879e1de2fbb7ef3ddab5f749dfbe55e53c3611f69f26e6dedb17adbe08b227e2e3a025989b7c39bc4ccbec8b3b91da1739f935d7729cac14b5a0b28d7c7d3a47c73709c3ded7d97cfb73b2db47b18972669f8f79fb3c36d35ccb5bbb64d63b431ffac5491eec7ecf6d4dbd79ddf5c725d97aa46f2f89de2b07e2b2de0673378371cc7a31a9445f1aa13a223a25af5b16fa8cc8290ff356a4b69a2efe9eece9a1629c7dd7287b7b8679ebe573e8e6515b0695ef1221d3bbf9ace1f9e5ca6225cf38ae48ddc8ef13fd9d35dc68836f75b11cfd7687df21bfc77376302e27bc84cddefc2d7dd18038b795824a689b48e338570a2a1a5be9a0bfa1bf7ae7e4d0cf0a7b6aa7bf85a24139223c8db4ad18c8fb9d8dfa0e3a4dbcb286793932862137403ed2e7f29de93a541e4a46298aa3a4bf3e203632f61509623f2c11f0e567902180c3d1d90579f61de4d9e8b387873f169f63f51aba707ec5bee27c0527e7ea88d9e8b098d60757aa0f1ec4af5e83a556f863ad08976939e0a339a13a4a56de08f8ab396c0ec862c029c274632dc6897ea2baa8954b293627adbe0971998c730abbfbad9f500e3826cbfe799053b9f56bba93dcbf1754366be3530569d8274c8f1dacd52819f04450ac2b5f97b8971b057c067c0c371d6b8a41823c9b9e76dfdc3f7afe046edc27745cf6df3e3b2b698ebc2ad273fadb1e831deeb2cfab088f8d92721456806fe3cfd82773a7db9312f0fb24c37d14c33e9b960ff3a5be91b6c5fa89f25caf669c6dc39af6ec189f9d1c517c8e69ffc1d8e6fbcc5718a7df83ad7f91ac668dde95256037ba7fbc1f72a3c3e9b77610593ae46bc8a3d0b757c8575e4e013f9e0df88dfe755e2e36518e5daaa7343ad9402ff9e14c286f5b457d523743fa84f226a92f0accfe49b9109139a11ccb8bf504eca1362e911bde7545236d291fcfc1a13dc6801837be2d5bd768eb0d7a8692e521f02675fc63fdb98a72d2a7811815f8b43baf3ca1ed8b8368e4da29827385dab92e2d3f658bb7b68412d528ff24fba362507e4aa591ef3b8cf8d615122dc62fa88e2ea806fe814ba31b90fe473587f75916c9caba7c3f5c7b98235a2b070ee7676bfb7ab6a6675581c6d53b9b57377d39d8d3c4f519bb7bc1579c3972ab12f8d0eba8d64f0ee569caabcc1b4dbe835c887c6edfd3c99c35d3079bea4ea47b3e7f0df6720e3fb4a3f24cb402dfc2f1b6550a2e5e207b23f7d91c2fc9dcecd9a42cf90dddabff45f5201e87ed21782efc2f122e89675dd2c19e4931c57134b8cec6c513b818950b19bf19aaa3bf4446e0d78caf18b99692b120e7a0cccf8d0b991ba4ee542e48dffcdce0731fc40fe3aca805c3b126906fee5edd1edae5eea44081bc80259e3d8c3b8d7b9f3d1bf706cf5adeb6cb29d7bfd4864bca24fdcbf90f07fb4459c0f95da73f3ea3c598d4b75b7783b9b0578c0667d5ecef6f5fd62571c527bcb80eb5730c73556dc4b5efcd340fbbda5f88818d214f5fa09ec20ce59722a4f90edf907009d454f8fea41c199073d1a7d8bbbfbd78b231f55dec5da38f7fcd9d2b9e1732aaa3404db9eb8c0f78e74e0adfa5fce67b7792525c17ff3e879f4dfe5d39a64764c345c3abd12fefc4309be93e590dde6378c2a99f67178a6599584d2e8a9509d8aa6b40e41457ba6277923665f4f319d3fa38c3bcc4a40c6f54ee7343fa1c8fcabd6834f99872b09fcb61b275bb9c847adee4d16ef021c0e7961e3c0c7950186e68585fbac783fff2a5cd75f8b5bc9db1e294d8db67aaec247a3e189fd924eaca78297f7e961b8bf85fbec3fabb772d4e49bd6dbe3f99de4ff1f10d0e665cbdf7ca3d11dd63c2db44aebdfccf71dadb1f4dc5687d1ffb7c0d988a56be9071e28a8b70436d710b245ca28e67eee588acd647c0ee5549b3a7fc3b0c23ca510d796497bc8cc4ea21a10cf6d2be3e7782bd5843774185793e1c273a0f57cfef736393c173fad3e7d878c0ba90ab646b4730877bfdd87d6bddb3adc9939e6dcd120d89e6ced2be8353932f6711fb6328bf345d838c73c4cf4f3f87e756a8aefaf54afbf5d7e54b42f36f75ebd31eefa3ee3bebc83f01af55f73b1bfca6f7db3c100d2f3b72273b5f594c9c267fc4a2c977e5d4ac9ecc06d6e497226344ebb01323c0feb1b232df9b8e0e2ec4b33cff9dafeb4f6f3aeaf20991f9a94d8265974308f8bab8fb58e9de079b7bc39d0e36758d3df7a33e5a329bccaed14377833c42be2245cdb71ffe569c142b8b1172fad7f64faef9ae334290336ac1ea04b989322c0b59a82c20e721ab4fe98b8b34e88d1f3cdbeeaffaa2bafe6a2762ef04bfb40bf8d35cca7ff7f4f752fbc663c84bc7f20b4c6b5f0cc15edae41ec2aef397e11f9ffe0e9545e977e3f3f89b72d0fdf47b7470852cf4a6a46f32fe9ac35db3145837bdf366df9531462ecddffef85b0b7b18adc5b4956dfbb21ec844512fbff27d5473b21e8da9566c0939e41ed927213e9eee2d7594b9f7e993fc47e95f6c4eee906fdb3c02ded5ca1bfbc7ae4471fa66b9dd6f4c6450453e63b3f2f162d4e11f5c430ae289007b15e46a93aefe3878b35de3dc7091ec93d1cb03576fdeedf7069137cd63a5e5bd7ca6cad692057d2ef3cfd44f9e19e973957f66f4e499bb3edfb5361823d9e588fa8f6fcc3ed2edf9c9a832e22a86b3a6c10098e86ec45cae561949862597c65d7d43c9a8da58eaefe5cd1ecaabd7161ad4312d8dc41637a22a1977fb653dc351f78e10f79f3d9628e9beb752e47c3dff98ac07755cd7b791314fa1ccf55c7e59277265c4bf958b48b9f1d642f5c692476b0bddb49ceb7f1e0f40ca3759bbc8f793a032e6c79775b2eb3f33bb89ebbb7cdbcc8fe27adeafb36119232391c7ebbbfac2e5b9257d76d7e7f27d3d57abf53da8377352a7e36d6d19b77562889b5ffb46edf7cd5cbeadefc698b41fc6dd1c8ca379ab8c79705fdf77d566ae8e20370799af1c6eb38f3d61fecd67b1b0f394e35efda8d62ddf69fac25f6feda3f374dcd8dd3716973f757e6c785f273c7fac913cc3307f0c31cc36c34d3cc17f933a150d4f2c5fc664d3f1c7de3b1ed8c6f7f05119dd7bb7de7b5d5b9a675f9af7d7f7a2cd0dcbee8dda7b5cbb3656d0e5a46dbe9db4dfe3fa25155a2ed839fffe071ffbfbc4076e089b198d6578e4f372922718533807c83e6d11d9c233e81a18624cc9fc9937fbf0e846f6606356e55b57be622fba1d3c2dc332d857efba1250ec2a3b63b0bb37903bc982ba3a43fc8d92111926ed7d8ff941f05cc849d9642f595b97ce6e0afc82a832eebbdab082b1910465f30ec3aafcddba28ffca83377abdfcb3527612d97b0f755a624b5056d6f97c982109c737582f543766cfccd83366d6e0b6f2ad6b90f29aefb4e5e1b82defe772ac8e4f0acfbaf56ecc2fe9d6322addc1c94ad9151b7147da755ecd3ffe07cfdf6f9b447edf2abb623bbf552b7354f16b5f8b714cb10f2c5fb519c55a1e142bef62a2bab59f67dbb9a070fb44bc19210903e7827c85fc70eee4446483c7fe570b6a93048e15c811e7e761130770d71535dfbabb37635ec59b3a4bba76d09827c3babda3ba4abfda735acdb7de84e3f49ca6439b81c3ec4780e33a4d33162bc0e60bba18d6c7d8b80723c33ad66b3e6680da40ff20ab88b4a4b7effde9bd333fdf06bc7dbffa577b7cd073b9db4be6bdbda959af036ee72c59cdd591769ac42bf346b9c42c09a1fa08e7e2ca2a387ee78f1e97b4eb1a67c34aeb27efbee88a5a6cf2b62e2f8fdf3484cd7c977fe56aa1d358ba8861e330aa8fa41f44c392fb6583cd5396d6965caffa7cd55cbd54a8d766fe2118f70fd1b8a3975e19cc176924e8653d3784f5dc165766153fc549dded175d019e15a98fc9a4e3cff545aebbfdbcd92e939f7ab66ae712ea8a2119f3f26e589364231a7f577516eba7a910c039c0f9cb942197f9478329016ea8c73d70fdbe75d5164f8f62b20ee5360f09eed60eac07f23e79b7dbe79084e734ae86f9606d224b077772b6776b6643b95da5c646e5e48644f92c2689bf3cdf8d84f25ae8f9bafc4c8c7a932f525dd1d2ad0d7c10575f914ebab26e7f5bf24b3f4787b248fbf9413fd8bc7abf1bc9f96e98a333ca77a4afbe91b87f3766d9bbc1f26660653794759d4074ea1db5079235cafbd1323c17fa36e4b126f819595f51cfdf067c3ef31ee6f78467bddcfc3a3a55ef109fc1646a6c09674cce1afb126f46178a1fa6586615c551c6f9298b2fc0842f4a7f99bdade44b4cce87af651b73c17fb7187c37c3b328c5b30aecab077792ae1efcb08ff6ef83b2ebe5ee029c62def1e3523b4e946d2db22e476714a3d1ca4c81e79ff7f76831d9ebaa0ad5930262a66589accf62e5523c00b3ed77f535c1267e0b3dba7f510e41a7cd0546fd326dbd07b120a8c026ca03d87bab7465f158319be1c046d576b94878bf3f91273f455a1f1c7375b12efdba747e47721e09a88e72fd595effe472a7eb908c5b91329c40dae4024675267d79c2100f36e9d62e8c5b33475e501c415bb65e98ac80bbbbe7c7ccda672986361b6268719c652d7f16c549337ca690532c33cd1741e3d582e253b4254d51893c30f05dd91c9ec37ec32cb718cdd941791ebb3240b68175132a0ec4bae97934c14b2d0a15ae1cea3766f590f281ef38e1fcad9a9fe3ef2637dcf0db1878efec5c237202f3777d79c2ff366b81e2e20d1e334cdfa798b8bf0df7a9ae54698779db3558a30197ce246d63b17af14742ca30c3e49b924f7470e0b16a7c1680cf90786eca83fb723c88bb3f0771d7f2a4c2df7d3ea312b0169dfda01fd356a31c6597c803cca5e323674463dbac769c13dd95995f762719d625a5b94770ec8ac6052f46807b764544fe7ec3337897c389eca4cece1045fa5c7ec7f3f74a77399edffe1ef48d6743dcf725fbb42107ea1be56c5dd43b91e620207d80acf726bef28c3c6d0ef3a53bf3d9dc5481276a6bc9f79599be224b883777b977ee1b163fc61f7723b9013ea9c1e26f45f9d5e8e3dc6f78c6f359cb7db96ab9487b7c35d662b86e6bd6d61eee7dd5ce395402f69fc69f7cd11c5a146f076731bbdef8a74d77720fe742b61943ac06e3d724f38afef6f3c5e8e0e18cdaef018b3c3a28d99dac9f200fb3702e9c9a675b9cefa2bdc7b0ad1cde94dacca3d54f1cecd4ef0b9c76481895505ff04b0af156843de2156797c433d3a62d45306a79bc7601c33b6077277571d888e3da9bd64c96c8f05cca390e30fedd5795e2b5f2166f9b313e424bbae17951e139eb873cbbd3fa2f4e9d4f49ba058a936ebd05cfed0ccf7fb9a387fc4c9fe3b64e72abab0fe2ac585b5b5ddea6b9f6af0d6760b30f6cbda7e3f6c6e6eb3568de93db783588116edabe6ffa697604dea9d09dfcf57369fc10d7abc82de6b7e335ab20efc5e0baa45a72a1d358a0ebc15bcb4fdbe04dd355cbd70e7c0d1116a94dfea12f189e83f5491fff30a79ce634e653baf5c7e6e5cf0fd7cf2bab00cef08338a13192647fe7f2a1412c58bece7c591350ae9598f527121757243ae5eee4c4445e03fe46b3fa177383b55771ea40ccee8f7cfda3f2e0ad77d8d3ee07c01d4e469bd334fd7a94c7292f91b8933e4586f55122e0a920ba52e86ab1af38f74df25136750539d43adff4e5bef05dc70a95c52578e4ffe779cdc1866d8ff791ef4ddfbf64cacb4ae6c56a9649baf27c0d19b3aa08847d1d42fd77afc692ace79d14e4bb7320ee0a7de9a45b7774266d0dc45df939c605f68257e037f7f6d1c1bd91770a7d89d3ada7a5aba543e4b5319e552f78564df0ac9ae2b94039d3974eaa2f2f4d5e3f44da1b88eb1abbced5256d051c37d99b8ea4fcc45720773b86e794c5093b70fd86dc3063cf8f82bcd2b19792ebd4572f5fb24fb8b728bbbfc117d23c77c2de7eed8bfb02e759cb37be391544df10c2e5fedb4fc83becef9341dea9b15b11992575d89efc10ebd7ed210d7f268bf3d2325f598cb0bbb7193690ccef3cc8a5cbdead3288df9b534e8060ac25dd3509f27d74bf8b48cf71ed8b42cb2b00f94d73a784b8ad663f5f8e4ae002a3760cf4504f91718273cf00a746565d11ef7b3527c0b74df30f1ddf20678097a564dd7eba34871ac3ee5f58bc7113d7069c06ab6598429b9af19d09133c9bb463af2fa3fe7db3771faface205cf8531d8df9619799697d3c6b8df4efce37864bdb662c61f42cefc6beffd53947e79a34297353a8fe50599c7f376eeca0b3277c19fc6700539f6543af7e53d7b674dde590ce6fbe3dc49a6d2caac14a247e259b4c0b3b4dc8b3b8971b1def1ac7ae37dae801384794cc67a7a277389ac755817cb7516bafc3c39dfbeccb434d91ade93352c67fd352caecb83378d7d715163d827e4d761be758eaf91acc31bcaa528c8f732f527767d88c4aa0814ed1b791af54f5ac598e893fe3878bce741bec2156bb746da6d0eda0d7e4f8bb6c1626d30a10d42baf52e8b40345ebd99b608c4751428d42749b9c1d619ca1735390fd5c52dd6e52ac327c805300d4eda773822bfc1efe904f32250d3451de4d21862dde3ca3cb8e139e4aedb79763a2ce179d91f875752ee0e7cbf21fcf6666ab9571ce0fadc337c04b9e688193c6b09e0df5c637722c0bb4d1c874ce61bd47b1a2ca7f71fee5968ac7dfbca8dd49ffd5d192c2f6b69b9d2abbdd40aff44ed0fa6e84c48398e3b29b042ceea2ca7fe6f4dd2e549baf5ca17f84ebe480e63da57a49c0d394fb37d84b25baccfe59ad6a5ca107086df2ae34efaa38d9d280d0b417d609f5dc03be3b6fe4beddba7d7e8b7dc6a44df49c93b3be43934c7fc5cbdd17716b76004f615f2ad7a4dbf7547e282e6ce9f1bdd58ce0de8271bce00e706e5de77b45c37ccf60a957df4b9017dddf8698d3bd457f545e094298d7bf0643edcee9b87f970bb43df3ccc85dbc8e09eedbebb83ef12391d535c47b99ec3b7651a53e1d0feb420478b6240fb64d6bf88f5ad3c82ba276bf6ac0dcfae699f56eb049e15d8b363fa2c66cf1ee9b302f5e11b963ca1f7237a3ff980fb1bfaddda80b6a1ca58b0df09fbdddcbfb3df745e8cd6d0e689e0dbed7855ebb9fd746e1a890aedb05c07b00a5f66b5c573e18dcc07721db9d588cc57f26c3b6f80fbb639cb33ba6ebc7db481bddb1921fb927d02be806294c9758a73ddd3e74fa3b77ebed85d1f9bff5c06edceba78f25426d88a2ac40958ae941e5c22f7347cc151b4b2ce4437dde2c525f2ccf48f6a2e62c0320d73e72c8bbeaeb8a07e01c6f3d0eecba14bf66522af3cc8788ce3f4927d726db2dcbd8f4ce0d90b81c788dc6ff2ea64cef5e0eec9b906edc12c3731efbf467c2edebc8b597b38c71559f245b09b96adbe2cc01a633c1f45c3637ac527eddbb73b5d1d6c7a64ae91f2dd86d784e519213a0ae5db256d108286fbb6c9433f9aa4ae285f0fa233a1360101f83f1ef7385853640e94883c07e72499a74c2f2132f5785ffb8d2cb8a47308f64c728fcd47f2773bd7e0392d0b142722e7292b8fcae34a9885b2f08de9f79bfc07af9ff9aea43c8560cff8ed3c25ed25badc3d10066d1625b06113f940575adbc83f9595b2f3881b379a5790f45d085c2e5c9f43fea8ae6c90f7c5a840e2f13faab3a74cda39c2e6c7ebff4d7d404630998cb0273282ddc908532223b4d8a4344bc9b8856296860ae806e786d793e80950dfb153333d0a3063644d20b7da0dee15fe720ffa48a86465b8003d611482ce47eeb7182f1bf2f6251fa0f70580a9d3264c9eb3599d2d5267c76deb2c903a878a242031ca823bad0bc8ea8bfd77e8aecfd8031da3c1bba50effeccf7a4c122eb5b299bbdd7ef8bb8e43e42a27a77295e3ee0a7d110ef4bb8e87f1bf913b5d26b33944665b7472e70ef6b77de62ff791fba31e4bf622f6cca2b1014ac001cfde0bd45378c6ae03b257a82c502b8bd664aef5efc13a5a54574c7fffaa2334cff0b26dfb5e768b4331cab05b91f37c849cace190fea39379dcbb07eb607c509ccc9769bd7faea30ceb8f7de740fa95fdbd061e383aaf0e6c5e6132af346527b977d88b4bc005dcb5505716d9d6c511e4d549d7dfbe37fdfe15d35b5771632bdf88ecbdbcc33d37796049ff73f9dbc0e6872d81e7c4eefe863dd12e988d2bc19600986a6fa6d9d88b46cfeb8172d5d5325dd9b3faa3b3ea2e203f2a3651be99d3ff0d4bfe9fadab652bb3cab025fc7cdecc8d7a655639b6805769609f0fb37f88356ecfa1cee73c827cd99ab2e3b94f636ebf2a36fdf79bbd8ff3ababf5063852d4ee2cb3ba384a722d58323c24cfb94575ebb6bc9f629ff938c9479efc97c81870ee1d287f0dc520e4fb0ce29ee6fcfafb314f2fe5c36218546e6d82fec862ecc0ce75a0f6c49e4c76c8ed265ee207fecafebc65784dce3f1f65d48fdcebeff64cdae4106f58b33c51e3839225070e8bc27c36746e70b21f766d2e469b8bcf1fe47aa579f31623645611f8cf5c3bd7729c6d698ccc2b7aca43d9f89386f93a2e19cf0b7ae07c68a06f8bc28df178b738f026a69aac0f2dc627ccf2fb6deb28daba9374354ba96f4ad9490771d7c647619a433d5a594d9ce40fb91e94c53da49ca0c33efb69aed2fc5e8a7a6de52b0f3834227f097239e4106b652a93fe6e9f3551de3d9b361c1694eb39266bbe8aa9dfa78bc5e3713eec5ec315f230de36e3506536b379eb5b82dc79e1f9e0aecfab61de61aead8fdc0ffb5edf60c6177b1025965f8bd4534a905b7573229e80bde8599ee086ffa3cbdd50655bef92f862f5cdb8c7018b4c398ac15f0af65dca1f4ed721267573ed0bfb6ea0d2f732df256b9af215fbe2a4e1a667f9c028273219ef601c7e078c6b3dc8816f82fe2d3a5190afcf8cf33c63658dc83eceae91ef520e744fa3dccacb30c36e095cc77d5c86900d38bd722defe53a1efe7e8c9fb2f8fda9971339ded672e42b8edfc8d01ef8081ef800c973b707dd4c9964bd7c5b2327a6383555f245fb0cfc7a792fdea018c4f7525e6b1a8f31c2b368f87cc9fc9a4d1c03f327034ea14426c3112c2fd4c7322f125de938f5827b117f9969c1fcd1b7e6ccd6978bce77dfe3f9a07b3be93364de86fe57aab776fe5781eab1a0337a2c2ff72fdc06b8b767f5da45e5f982f77950feda30a39ca5646de3f6db9f8cdf13e7edbc98405e9f5cbab69c8f205f7532098b119ae046075e16d97f10abf5f699db80791fe68ff4c549d1ecf73acd3d49f9ba04c899ceeaf5738e68526e5bc65278c19630c14d0cfc32a2ed1f87d9d68b322adff0751ec85c5ef5beb1aa5fe5ab3ecfec2203db820218871b3627e0934162c4e28ce97c0c5adf6dc6cfc51936d332706d29506c765ef4f968776c3eb1f16ef1094c67bd7539bfd93a3eedb3d57291ad383b852b8cdefc1cd65205b1ee4be0c62d56d625da7a1ac50cc99778e5ca6714a70d164507aec5f9053831f76dfe33213fb893c857aac9e7a8e1c5050edc67d899393b2301f736e0dca0768c3a9a62f358e8cb69b67555e80b5457a41fa370f91ff523f861712e25a1b7feee384be55c4b618cfabcc74aaf5f9bfc6ffd98279e07b5a73777d730b33fd2f1e8d66ea8d8e7c01dce15e761fd02d790f0fc7d140feadcc96fd4c634c84d4ff31eaccfc021effccb3245fb211713b21a4c078bb9f0aa77c39440e6324c295e01af8c4cfb36a7f9b9d8fea8fed35aed72b567f76dc7ad5a04f76289cd4ac396d0e64aef718d3ec9973a8c7b31fbfda336f2199723fcb6697c6f3f71cc7bd57b875ba3e3fce3b327fe592e7ec3925bbc7bd75e229b01174289e75d1b419eebb0d45c1c35e9dfdd13b90bf8a7bf83384a21dfe4bc976f325dd525c463aa76d6f1b2c655e28afb908c9b6a13197ee123e1927acea844d905ee797cec8625bffdc43f618a76878d050c018e9ee4337acc3fc4c77c0cf9af157b18c7adb3733182367638dc74231a6f2c7772c35172257aa7035cc6d91b9e0bd14a3486382d2e1f25c4d4bc53fea2ddfff0e3f62902bfc92baaab6f9ce33bf676af2816a22f520f772f21ab68da9d347c7ae4fb4426b31b7e399a2331d1f309917fac869baee18b52958504f74fd328a0fc15df5871c835e6b39e4aacfdc990abdd729fac5522c327746da2e43d32e605d1e1efec7ce8fac67a8f0cab88db7b317f4f5ab3b5720d94454d7951889c0e769416eb4774bc4ee784be8d0eeee4bea278f12b95d71735b6bb33d56ee5f7973faa299f11600705e0dadfb7768dfdaed5b5622203a16a1da7afaa25bf3ec1756dc879d1e3e6b384c6df59a2444008e2fa890e0c3c145724326c0acd3da6ed4f5ae4bb5d6e00e017014e751617e8fc9aff2169f25d392d8f7367ebd6f3a8c62e6e398ef18ccc8796e73a81b5f1a48c262777cb5906eda05c354d5ff2bad2204fee762057b27509730b306dc3dffa69ff6d29d2988b59e4f03280e77b90f389ec44b9a9a3d133db72a3b33cbb172a4ef9f4baa73dbddee946fbbead9ae8b0b4bc17c0e6b90b765fa3d7971a2f1fb5fdbc77f705e524b18bcef733ed6c76ffc6f696c8d536f9d5f656da6e23c75566ab2b2cd68dae503a0ab5cb0ce6b4c3cb496d1c403d69e63570b26e45e3cad5e775633de46cfb83ee45a2e7d298e82eddfadabd39a45f1b6e5c07ec7b7b4cce70278a88be05dc0873618fcd2a50db1cc2d97793db8bd94f532dc664aea52b4b4ab7de85722fce8b547ff28eae00e745ff5eea5cf172f4ba5276d24ad93dc9838d723c036c5916a43d39bdcd417a709df1d7b26afaa6d0c18ecf7d233e16bab203fe0d2446df414af775caefb03efb638de29e95e6be94e3d33a8376e4836bb38acaaca3b60cfe77c9e4cd6d735e74f7d9fbcb5141c65f8bf10a9b9185cd2a25e7f00ae6c48ec802dfd88c4ce8f75cbada1db77ea1cf3fdef1aca7e7c6433d977bbee4e4584ecf85dc11cff4dc78a0e7825f02b86029464ab25dbb589990e77c47f9135a5ed096db1341be8592ffff1bf6b1f6ff3e7726eae12ce0f7edd3ecf17026a1b73b22cf7969cbf49c971dfb1b2b5a89dabff99c0fe5b1e199c4b3691ae48bd3de9da48c5fb4e10885eb943f01f846bf03b826dd5485da7461cdc3981ac74e97d81d515e09413c2d186f28f73f8e7c254b5525039cf8c1dd1d5bbd20064e52f92927a933e42725d7c8ff94e792bd7fe9724ef4785a2f4d2e0875398dc818f2ff93f7b9ff4be4a547e00030a73c3f25601c39bed6f93ff2b5a64ff85bbbf79d6036053e39c46c2f2ac41438f38647b5e54d6dfe179dec203aa9ba5c67d8bd647836bd87ae763970dcaaea92fae7bafad2dfbbc16f4cc69afdbde7fe0ed85833df9fc5e68148f31c3a2dc76b98432ec48cb31b3d70ba02ae6396bed98a01760d3297e8fc0a8e3cc7299b730be8a398ce39ec454533fff6dcdfbee244616ed3f74755863c9cb1f781a394fdbda57f330e545712b1d9cc0de19bbccfe606cc55f6f796fbfb9b7fdf1a6352af762eb0f2dadfd6e0b73f7646dc3843b97dee49959b23ecb7b8ae7db12ad5e53a0972a9042e61313cf98a4dc6e284c52a6bc6887d9ff20bcbb43dd49f7763ff57811a4fee815215600788a7811aa7a561d2b1b044a334e21e8f974bf550a60b9bd327fa3da907d987182fb0d2f77d34f3e65ff00f0b01b50d3fada323424e7c0f5b958bb91cff0ecd8bbf6978399ddcf11dd109f5f947b1119d68d5cb39d3e1bf5ca1f54b511b07d847fbdcb89e9912f9224334e75b9377c6687876f5c5857bc769734af6f848b3115f8f966ba4c59cc495efcdb4de1c61e570d7bafa601772cc7cfb593b8ffaf519f2ef525e92015faf16aeac4bdab4ebb98dd76ecf22b67f13b985d99d247eef1ef04593bd8c9321383b8a7e5adf7c25835cc32af00151be0eda1ef64ec361c39f1983b38f3b9f5a3b187c9bf170531bd3c791f73b366b965c6ff2ee90f9897ed9a77a7d943bb93fd632b3b1e9d2717beadfd287fea5b87af0c7e9bc9f0ae6c8be9923f35e996957e6b335c4f7d3e0bca4fec47a4a7dc1cd59d760971ed718e5da6ec663e07b1f70253d5de3ffa775f9a93f32e706fe22e7699fb03dc4febfad0bd56711dd0b291f95aa347c50e9919ca92017d0f869018bc7e323f7937dc4ae700b958c9ccf1c8fd3ee48b9167647cac7a41e7bbc49e614b88eb0bb877c9dfcb5a6df0365211019b1954d94c584e8dceab2e3236232445b9781cc50f8797024e5f94a45e507c601a1d2988db65f9bf3bd934dc208fa3e0f9feedb2ed1e37267ac2e880ed0977d7d45ba639397fdaa6fe4eeb8336fff8dc5b07cbe77804e9a206f777615bb78c849ba28322e276ecb43d4d3999b58a358c81a9ebb8d283f8b2b4b36421653cea1aa898900ee48a21b879e06b69e0613dfe4111ae8a6f7c68efa29aa12e5018a622dd915bd78b5fbe8b6118d7764fec89bd97229e119e36a9d5f526ae36c725f69f78d28bf7e36f95d3cfc4de46903b86da298e61b6a72980869672b1d019fedd60dde703dba34df3ccc85d415c350574ae9309b1434b67c9260b32ab7eef1497f5d206749571feadb3ed4c0c7916bb97da59833e98668ee6ed075fdf1f486dddd7965665d9e33818ca35d1e66c0c99a6fdd4bcbf3e18fd53386fe0a78fdee0dd3fe3a6fddbd8f85d1dbe12e9cf53c837d8accbd8d7823ed7818b78d7824d74b16ff9405c0d113fd05ee8e18e5d89c1481d08f15b3c7fbef6039cdf0ec5834793a54457e7373fb8ccdeaac032f2d920e6381e64459385d7e4a45969c5c2d691e2999e69162f1e29bf190573618d87647e0ff5f9955ba75e5bfde4cfbf244162be690796c40bc63639340802da8227dae96101f07b959f6e90ae2ba29d605e54822e5b0184e83f5035bdb17ca6970d2223fdf7ffbe611f25737d884d5dc10571d5757bdeae7074b30cb59ea8a5aee11bd5d59f828c72170dd2a5af45bee6cd7b5595bd4e26b59a5805b9ac995aec865cba1aa90f6dd220362ed597cf413de5b788e8bfba736225b5acf7b39c8b8f87edcac77e0d4ee9e59fbebc5e80f9f6bccbdef43c0bd2564bfe8f2fb0de48c26e677a23ed8dd11e3cb79b4db0c79b2f10ce5aaabe65a96519f4eddcb8f7a67587686e7e8fcd91bd179df5aea1b4e8494f99a4e5b739fad1454e8ca5142e6255033e9cb9ba97f570ae402ef71d3437e431ae347735ed79333f28cf381e64304db26f66ed27a969664ce51be01bb44715ae27a126165773e3ce16380f9f9645cacbce1b7570b0eefc3c7a565dbbbfa8a3bfea8db26b7252cee06792b3e2a72fde076d7398c59b675a3f4cb35246c0e3824e2863fd8969a58f04dbdd8b19ce9bd5c2eccaf15831df4c4e9644e8359070c21c5533638f613590bb6a45a445fd9fd69be01630cfe81e7b90da15ecb4b3b366d1e6fc89f68bf626f447d09ee3e657845a3ddd7c8fa518c12be79626703e53ff8834c3246fbc79c8894b7e10decc9622662abc8beccf4f5f7e76f9141ed5efc5ef0bf3c7f87aed8457b4eb9bb8ec30ace46b9d06204f1ef2b45cd8d38cdb59ccb3be6caaf8c3bf96d98b383e36e62732920e7e508b9c15bc7e310be7fcd77640e9df8b3ee1f391abafc5ed9d7f2f6b2052ea9fe3a3eccfa7990a14ecdb946f9284670adced839267039a1b85c1e5d4eb7bf5b37807c0a945b0ae217fe7e2d6f50ce81e65c8067fa9c14ad7f290bd2ec8af3f7f2006d77debfe6d086bfcc9f0178702dc67ffb3e359be68cebb83f4ef08d264702cb5dd87168409e8013e5f23816835c7227ae9c417beca63d226bcf1b9e0b399145babc72f611792c1f1aef5ff30409cfb9fe3b091b144783f866eaf7dcbaa8649c23c9caac4e5be71212bd0759059b2747c9729b3d47a6f55ff26be4d88d87b74ff5e55142d64f38d05e2cca6bc7cf26a52bc5e8c90bbd77dcc7bcb91d6ea2f8bb75b4f449de9c5e1e96cfb9d0e26bbd994a6420053fcb29d4c379142f5be716838d3623324429edf3e13e4aeaa86564dd61572b431a37d3610d5d3cc29e16fb4b9a17e8a7efa22ebf30590b35f341b3dcb92f05fbe61171f8e2ce96ddcf4bdcd9b22fff1277ccd9ff9c2739903c88cb7b7c9ee194ff452e25ea2ff3a211c80af08d52da3ded4bb04bf6dbd3d83716bd32a9fdb38b551a3eff72a06338b84e6da14ff2453de66eca391bffc3b7a51b1bcfc04ff7cfe65f3fe759fffd2effd9d3eb9087b757776667e6ea524ace63ff69a8e16f948ba429d7140d524ff561dec95542ca719527e37062f655f6adf0d958b17807d60f87e7f35aba7df6e754120ec685c327ffdddac5b3befcff9b03eb496ea3a7e3d27ea3c15f3dbbf7649d0ced95cff37ffd9c1b8cc626903155f60c5f19f474627d7996542f005c72630f68fddb4b5b0aef529713642e9d57028dc3edfa89e2960ff3cb18f6784ec70ec959b194bb33cba9aee19c9cb3b21432aecc3011aa9e1c609502d9a3021364085e0e1189cc1b5882a8779c5502b91626c216c5d1485fda457bcf43b9760ada1c5c18eea33230d3a2c96dfb19b772c268ebedbab3d6fa780feb9e1ff3ccfc987f57cab1fc9c71985c13e4eda1aff23cf0558e29265768392f899cb5ae812fecf5533c4a8ff9b5b8fce50f79b3005f40ce9ae19ec9e5371fe68763efb8e87ce0f9311399e63126e72be4eaeef30e7c2dab64c821419f0f93d5f248f4c41757c4b967a6fc590232d2d7b23a53fb807d6d721a6ca9bc9d6da04fed27fef4f4cf61d6f1e138799685e3ea9d93f33ce6477f0d5b2c0a917d584ecbdfdac17363ccaabf5b77577ece8597ed98b685cde5929faf9f33d2d6b3e4e6eaf97396969fe4ba57bc7fcd6d32ff5e684e6694af8157e60872d6cacc5e0639aeff36788acfb990b2fac2fb2bef32deda5aba192389cf896f819f8dec31170172773cfa56dec27937fe207b509d74b8673c9f1374cf60394b03c951766598503cb5ddfac6da33ad0cade1bdcec703f5e8ca26757edd363987dcf2cf615e08d88cfeaeac4bd55ef78ecdf597957569d6d778b5446538bb046ade7dfb5013ddd02e36e2b1cdbfb4f5ce6f87d9e3386f3df92d64396c3663ca73b7657afc6a19501be93238876635227b19eefc432fcd7a0eeb0e531098d5f8091f8bf41957e2d60b8acdf82c85cc7ea5c5f865e5aaaf9fe3403adc2fc2d63bbe85f3d18ded89d5d60bde02e883305f2de562e5edfeaeee97aac30c2229b42e22990b5844e7304e8bc02cdb7cb4c6bc1ae99efc46c60beed76919ce4617ee7ea57bbbb79567135df084e348589955a59ba3060738227f331d0ed662d8e047615edb64cf247342e8e70c6fed84f166dc7efb2db404fa0d4f180fe6fbb88935e8f49532d7f2285f29417998557ff56500f6312e5fd08b16e3f6acf98c517e50d019d7d5abbe3c9621d17129663bda9cc87cd9fd095dfb8c6729b70f94ad7e48f3a4817ec8fd7e964f87e26b830e97c2f4a36a8827fb4b7157b8009b0ceca7c706e3056799990822ee71320b19d1cd562ed997c26c659fa57d6e3778f5d5d6de67cce7a16fed75c63808cfd48eda61df563426b28d39a07adb635b18de8dc87fc941d4be3f9b676734ce85ee015a8495ec9bb5e9cce2b1e15d331116989d8d668cf2957c96cc98f24faecc0c30f9b8ae566c9dbcb5fbbd27e85a8cf5952293b14d57d6651873d872ee9aa46d99340ef2c52d50da58f882f4ad9f963457df126c6a1959b3de4c633148daa0cf518e72f57c9891719a08beab816ea02bc786ffb0f8b24b09cf2581e2bf5a8e997f9537967232da67b3ce1e707a66fd1ca767bbb664d680a34b390cdd135da41f8f698bb664e7b6d462f19ec8bb431d8be2f23e9e944d31c49fcb3d39ab85677a14d36f9feb41d99ec69f084e46d62aaaab6c653dd6e7079b2bf49badd8c563bdfe51df76b0199de8dccaa8acbaa0f20a72ed0225c54fe3d6f70d7779725ea10cf926fdea676df2bf93bdeda73299bf79933e2f8b71c774eb21b9047efe53fd3abfea4fe5713945ba324f82d1fa97966dbecc6c2bb21865caaf683059e1a96ffb075e8d5c4bd4bac166b6f1c690dbea1ffa2e4edf2ce076df67746fbc7c33db6cc230c68c4f2fa37b0f60207a7ee4368f0cd9f3adb9f4ec199a7b88d4d5bee55a9e414c946d0957f00559e7f341dc49d8ac4a0c7208e57364f8cfbf782efdc5b3098d43b20af237d80b187f12910369bceb2c2d74b984183e3cab0ce0f0964b9e7ff86ccd594e256577b63aff075d2366756ab8b51bbebe4d7a2b7bbec2f422adcc6abf1ddd685cb025ec3771b4dfba51b6528c82d36bf6f0bd198d05dd3a32d159d859254b48b4ffb0d8e86445da04fe4ea358b9bba6fe3f6029d2d29857693ff71df31bcb55ca700033ece2ef2077380c05e4f889d9f52ef6ed9fda9fdbfdf6e77bd2fe8cc57f4bb69949e4bcc37515434ed85e9ca593737ee536f7788791b75f9159713ec422d695b5109c404768e4b45734eec724f85dfc10979bd590507c09d4b497b728a5fa6c97e7b5cbeb694bc8ac72a2bff036e0cd9dda701b9da0937d10e3134625a6ba2a8c97def198e65abe833c94347720e8ab1170be9a69a12b48b29a78b63647ab906b314e9b3ec7d4af93133999e8b788f108323b6d1783dce7ac3de18e2fa8cbc36d3ec4c0a77e3d05bef6d6bf350ecf07b7227b4fae2576c4f0f011ae795c3ee41fa0f1ec0fbce068985f9e1b0f24a1b8cf71ab2b018d0becf29fe65a6e807fa21b17a2fb11bdee78456e45e4fa2bd9477505fcd07c4ee0011f35914d4b89fa3a988d888ee5f9712c6fcc1e702bb1f54e6435329e890e7ebd663c4979c1703c135d29cbc32c2d5656917d2d6fbfbecbd92dbaf7c8b8422c4e33ae23eabfe26d15b9dcbcfb46b96777af28e6d6c9c978c5e3e15a2bf2d52c7b6b39ac9396c33a7f1633ec331fe2cfbc0c8c07b36fe76af70dee5a87ffeed924f958898e974275d52bf29c913fa2f2d36fb9b6fd1c0d628f26cf62bc590ca2746bf2d7359c0944eef4c7eb24c8b35bb8e85dbf532e91909e491d972cf00b1cdc2a0d72e74acbede4d23e2f06701614beb2aff1ffc7ddbf75a9aa63ffe3f00bea8b255896c5e52a45543c831c7227582547a50b5d82affe1999492001ac5abbbbbfbff18cffc51e7b9522846466661e3f1f7bd0ecd96bf6efc450d707719c55fe61ad92a39adc80cb7ab25be1f397e3b8c7e7ca0dc9e0fb3fbc6962226737f7d241e2432fd1bd8ea7fd7cedcd9194cb519318b6f91f147ddf2be9cb56cfd2922bb215e938561ec821d83fd8ceadf39fc5fda7fbb8044fb0faed465ee5c89e94f5bd339697167bd9412e93e1d224fd37429f89d138f7b1ad80e5338a292f329f9b732986f8fc0f9ac6553c88612d377af514c0120bdbb9763f75f9de43a6b783b50cfd86ad3e3c8e279ceb752398fa1b9ac3a6f8e519e379ae75adc809e2cb2ecf1b53220765789dabe73d446ef2e5f81ab01ec1f5b8357f59d56b66abd476a13dbd218b2dae408ee7a389f837b6e9a21ee5ab06ae1ea5c1d315ace5d97541fbdf9dd1eccf9cedb7d24ddd30fffa24fd9980657dc07e90b4cadcb4c07b506962639018f72e85980acfbd4f65a3ea9d2cb731db8febf8182ca6758dcd3a5573e2435a1b146501e3b73ba62ee31f295dec4bcabd8b6e0c7a9eb4eaf9295ec3d36315c6371f7264fbcb328cf3a34c6a7d9c3e5eaf556f9726217266d85ff83aa66efea189df03aef474597d8f52f17b9e771ccf93de47e9629aa4d8ee772405ebcce848eb18fc12f8816514356af6a6c748c4d798784719114e558deb0bd66622ff20705371f96093eb2b8da408e2c04ef1e64ad73e4a7ad9878ced2ac06b497ce0a36f9ebb951e64bd5ee03bf07120b71c44072dc9d128a15c05d2036c169eb7dda4b15f6cc759e4d9f53b2c87d56fc47ec400f8d21fb03f84ded6a64c897cdeb36a5fd9fd23795feb9aa2a457db3df684c58703213e4cf8e3cfc043500a7f3f6614d3cfb5fd5fc4e6ca44aeb9a9955458cc24874feedd2fde56acdf509b9cf97d25e655ae5d5c680fe041137afe7761039b3ab0fb01bc27c56b126569b44b9ab2f461a3e3bacf6a212bbe85ea3b1aeb3591b3e5f199594ffe2b8a24cf318a7714f5ae4bb1be6d8444ecb761551339867dca5f3b83713d7eff6b6ba3b7cf51102c52e61f6c958f14795b1b1d17d32cb57b93d461bd8fea245d180dfb488d992df18ec2fc6bddaf7ec3df53a851ddd814cf445da51be7aa2cd49eb24dddcb5676b385fa02ff86fa4075976ef6abb4890db0ab6d2cd663ceb0136f559dfe046c8f07c53989b8b51fa388afc515e400ebed187c87446136f69ce4970681a74a89672bd9476ac5963db8ba0ef0c28f610faa2cb6b46deaf01fef65da93c741b662d273bf1bb3bc3d8d7f2630479a4bb945dc13f46d974962cb585ee61ede5f10c327dc6bbc2d9fbbc6a0d28f0689e763fb7f856ce9cfc1c91234b16ede93e76fecd9cfbf57a5c0078e7762df55d8cb6329e1f94d90287f1aabc5c47bd36d3c17ce76673914750df1339bb590a22c1ec1563746c15a37af335d6dca6ac0fbcd78ad579c8ce2fb8d519874e802555e8fe26cdd8b2f26963bf33ad7d517e0186ad495cd896fdae8fd15d704ebc7ca1ede76c9ebe41ed6f2dee26588a147b639df1c5697fb20b5d848b67acd35d547426f554278bfb70467c208e8df6aa677f1b099bf5f169379406b60092e6ec51d5124bac0d340702a09cf92b0f67ab5f64640fc662e4e001ce33fcb5ce2a7c7b6cc4d8bb7adec0e779aab989cbea1eb16b07533c3fa3b4e46830667cde26fd612e6cdde6647e0ddf64f3bd23f71f9304ec52ac2feec35024cb97dc2644f050ec8d17ff88e5867a9a78b19c6b9310a56ba51cc75b597bb469cad63f87c6818c17aa12debde78b5f25573d376597df71a457fc5bbb6695fb78a0e9a151fed22d9ca93dcd3e6812be7f95e739bbc6fb4b7b818bb7691bbe9243a94c5aee37e17af6fe5689264c82ee2c5649e6e9c19c40848fec0c2fab338dad6e338790f0ef6a0b798ac5ad778a9d25f4c76adcf611f54fd01efe5c156ca83b31b981ab605efb965b7c63df76c29415a82e5929f0bbb3576c97a20673ef234253ac8c90d49f5fd1793636b2c66aa949e3dc9016fbe3fcf8ed338b7dbf3b6f4fa02471e6a3db797c49e38b6038aa4e1a7718f5124f13ad2409162a0a8cdb5e2da3e9385103d585c6375061c286d77de58ab541fc5b9f9e8153b73fb2fa4f9bff6b22be01af3f8257bd9bde88614a37eaf898990a0f2c47301ef5178ca6abc442bede4d89da0b493437772143e5f55b99740fc9c716d4e12f173015bb28b6f7259520e5cfe1d52f49c2f78b0e6787a2ddbad3fe7b83fadb4fe7cf5e03e97b9cf394c445b733bf98d6ddbfd89c71778b8d78df82e92abfe8d6063a3b3c0b717beafa9be6bc4bf8233776676fd6ec3e949111bd5f62f7cfc14ecf8d467f670b0b1e7e7b53c3fb338da1ee29e897248f1ef9a189fd999f1c1cdecd559f083800b0fe4b6e684327ff33830d8be3eafe5e3591fc7838526722b31fca38d36e3b085d42fbde4b88e81fb0d62bdd1c65e5ea06ebd8af3d6fe99ee488a6e5e03b69f3eed5540f272cbeca3cf7a6e6a7b06fb3fba3639e3f12dceabfc60afb0cff0b534e26ca12aa93eb1d285969c75a388d67d0eaf8dbc6ff1e948c496d6aee78d330f1609f58599be53e7f07c7c7ea034398b5892c599c73073c9d9cbf36d617f1b7ac528f67608384e10e7a8b9c5bcfefba393efcce1fd9cb9e74a3df0756c7975a45c670d1fa7e5ef5cd1431a31f9d18de256eb2985c94dee6b3ecb0df3fbb5203ae7fdbcb1e1daf3939eb892ee6b86b77345256f3b9c2e9eed676b9961d60c3e2b1f6334f8acfbce486e0dfb3662acc917722add3913e0d26ec50208d716d86f941b16853ac173cb444ece15f6e1226653327e59378c892fc2e2f60c9788c50d28e7f6e7580aabef8cf6770b21fe003859ad6b985c5475824daccc92f51de2755087b06672b56e4ca628e7f7203ad8d81616ecfe7abfd77864cce7aaf0edf09c79f5fb637993d003729879c7ef2a9cc6864cc8f57893549fbe9f6794ff7066aab4bfc6bd530e08565b56d76288f67af83915b8f32966577247d86fd5660acf39bd7c5c43825b4b7dc054cd3d798e6d0c19d9bbd1c1d93dd6e92cf7526c0bd2fc51838bd493193768d5f3704365975fb3bc835f23e3fd311b020678630d36ce3507d903ec7c860dc76cd12c045e87fefb1f2fdd41fe84c64158add31ff490fe208aab86f70697ffba39729593b42107cd6289b2dfc2bbfed07c72de1a1546c3ee685b1232a5a19b4e1ec8a298fca97af36cebeac9c92bb277945fa4a0eb3e0f7cd9b2681ff12bb57d72d759f5b6700f5a7f40f3728b2960a127689c0d09777372430f3ae74691a014256e1faf478d3d2c8cd9e6cf5bf576a4b50b7bc74a8ef67ee886cd77a1350761102eaa5a8889841c2bd938d710db328c1fc33506fcdf394a93d2efef46f833562381e7a2ebf38556045dd77adaa43947b92f07819f5a3170a3d17f2f342b45a9151da74b3c8e6a1e3e0df1fcff48fd669e69c8735a836ce3bd6a6239da0508b81cde830f1b7ab0d9fa4495ef40e77ea10df0dead658d8f41fe30e7628c55054e62ecd31d2076bbe5f571c5eb4df510c5ed9addc8de93c23560d7c35814861db8d096d5f75827d6bcf4bee29e5b98aaa34acf703984c698738853f135871d7d98bab655d0a8214f461191faceb8e294666726cb63aee5251e7bd7fe68cc15b603767fe87dce1b87d6734f0876b55b0ef8bfd9ba468b149f11fb1c7aacd225c461f93576cbc1dd7512c01258682b6cdb84aebdfac2d7ba9c6fd9d077758f5da4241bdb55d0234b37b6cbe6fe4cdf0bd6e4d3e9b0d33aeee146c23dc28af7d89452ac1fdd4753d76c6ffcdf957e1475c993fde6727b6bdbb9b7d088db5b204b0d9d60d73132c80395830e5d56bfa76b2a5185ef295c2385b0ffc97bfb5e3a1b76df4b0a9b3a6e4bed9b66cf6c5b4f5ffb700e9b158f76d23916a33843ed7b872e3a8ca56471a63a79c4ef4f81ab1bfb1c9dd7313f838c31570ea322dfd8397defeb17dbcbd426a9e5e3a1a41bfbfe5a9f63f7217a485fd4d7b8410c93aba9688ce7a63bd7dbc67e69e922129b51152fec5cb77752bfe0f2e7f8fb467ee9d4e9787c5ba31a5fde7d4fe90bfb27e2be76b38f9e0a3dc7dc79322498062f8a3796beaa3a074d191ec6524af734c50dffada050d8fbd476dda68711d89f783d2a5de585f87d5ef03b93b136f4888fcf637b9010ee20ac33dc96ce40e1339de10a3ac3d1c833d8f98cf5f1fa4ce46f8b6dafe94941d1f582f7b63f9622aeb79bf62e2475df76bc543e46f5733be3b462cdc35877aeef9b3dd563a3e0be50d5fc30126a83f1f7c3569fe178f9ba2d07a9a74dcefe431a2f5294bbf6f1310f7bbde538ee7f8edd1eabc75c8eb3f1c6815ed40160b68caf978df5fdb836bdd6985eb70fd1863c4c8b37d6074eeaa4393c8c9e5af1472da0bfb6d943fabb5c9f8fe08f7f3a527d4e8583fa2c2f49bd004a8b00f5576f1b73592eb41396c34ae72d6ab9bf6ce4fd0dd92845f6aae73f240f25bdd7c388f616696ea65718f1bf2b4e60a88930b33bd6bf5eba7f3d8c8a9e6bfb587ef0fff37aceb27471aee42be764e8551c7321c81337bedba60cf28dfda2f8a3e26bb357b375cacbf8ef1cf5efca617ce5ce1771beb15d00b5f0640e983d72abecceb2a8d76654f566d15a57176afb89fd71627a9cda4a9dba14ebbe6f7464a11cc1efdc5f96463cacfdcc176c9b92f793f7c2d9b7b1f321323aed08c51b5f13ac33da3aeb65b8d38e80f5e21a03ea67e0b3bbc38637a5f7864f39a1b613c4e7494ea53a3bb16d5dc911d35f4ddb8fe4d3a0be23dc80dfc8623f332ef6b3555ceb1a3a46916cec2daf5f1af7db671fb2f03d3b47627c4e531fb11e7f8b5b7cdf9943589b2ad439c27c933d1b631d4ee3231a7af42e50a3aa4d8205ad45f600633fc6be78ea3f1af50deaf12c7074c8505373adf381d4b601fb298817c011b4548458c3948feb2c7fb95146f879093ee9b0eb7e780e96ac7686fae7f33068d9348b146487ad790471c033e903410f697870562baf4ff8d39f734693bc52477ee5a19bcac1851a09180b60522f34ebe6c3996c99c861f22672aa7172162c12564b427bc9d249ee3faa9cf20c95a76ca1ed15037c9118dbdaaf08e6729fad6597d3d55258d50254759b62ac45d03f0fb05bdf89dcbbd9ba97c15a121cda5e8eec4101b696354f7cad08dc6a1effefde059fcd1becab7367323e4f790c1157a81185754f099e3d39b7b16fb1ee4dc8bb84f1d0207e6382e513fbd9de99c8c62e554a97f3df457ec5dae7eb5a77c6a3b6d907677d04b8fd7388fbe17dede079040e19acc3f0d9a02ca32b9f430985f813d8307b61af3bda20acd7665fafcda88098b01077550b7e0fe2f54b179a5ff9a27c7e91e3b1127447834b0cfb0f7f8e244f78f535e0fbea557a56fefe7b1d8f212cce3af6c3cfefa5d7dffda9fa8842e025e9797d525f717056dba3334ff6a49e81f452c883c43b6f7fcdf65942e63179fb1c4d74640409c869a8de5b3c0176e537d4b8189077da2b5bd91d72b5ce91501700fd53cf38d55c7effa41bd9558ea97f4161fcaa6b7b6597ba17378c7fed34f795cf0f2fb08e6f3ec759e628ea5dd05812fc6c011b6714ffa2b528896e66632cbb6e44fa2058edf293b38c9325bade8678efea735309598d0aedc1e5e346e5667f85f392cfa183af5ad788d73527d3a5e29ad7b8aae11430668ae0bfa979f99bdf3fab73c13e88900768ca4a2afa9870d6b33991beb575c345ca9d899363e6698581ec5572705042f31be93c9d51be03ba2fe424f726f3c495adec985a8011e797019c973f3e2fb1d6fbde44db594a54ef8d9d73b08b7c9f5a11b21319592467320fd13fba9ee9a85a66286f4b7c3d2fd2ea0c3390f39ebb76e5cb5ddcb0a8e6abc2256bcef1733f5ed04788f214f90f29c2360991bbfd131b624f6d1049438feb0be8dbdaff0f17753f1ee181959ed77aa350e819f9c53091887d8dce3ae89920ddec11d4696e7abb741df76a5c406cefa6b5bcd27d9bea463ca4318c68a1edd91940f79e142cd25a7e2bdf18c67e4c8e2a96f144aef6f51eb00088bc3caedfd67123e821ad6cb194f4bc7c3f9fb477f4796d38e1dd569133c7724bc76b697eaa5c89ac93bae36fe437a1f8fb37d7797f1c34a5c7faa4d859416af78531083c3ac8185866b27adfc5d6676b4fa9d29fa33de8d15ee1efeed1da0ba6ad48de79f7f639296ed866afd6c8688d47f9bb7b6d0103f2d918b18df0fd99bbbf59fb81b9dda38923b7740cb1514780d7f8e37ce067b950035badff8f7b1a19e0bf097b7aa1ae883c95c476fa6fe5a93177eac1de55ef25faee5bc6a9b7450fe9dd3fcf830f6390f9bd49e9a79316b7d39e3ffb65956252b84dff8cf0a33eaf83a35c1fb52d20fa532aab7bbe3932e1d0d09d6bb4b1ebbf499c8ed5deaba43793c47dba73654685c38b7d3ae1cc055ccdd124eeae9bdbf61784a38de83e93f457e8b2daacf9e6ed9770719e2788e0f57d238733d0b17096c0f5834fc677b34fad9462bef1dcfc30d76e243539a359fe1b30ccd0793974a1af149dc15ea83f573efabd8ccb89041b7997789ad543c67b68cbd6719dce3d64f514d7e9113b841f8fbd1ff2bc860c2bb2ea1b6aac71e77c46a71ec3a999d9fcfa765d1bdfe9dc0bfd208d3c8c21e47b9b7d56ac3e9de01974c946b198dc435b661c68ef94136c77a47baa9b078dc32eadf9bde25fce68fe875e7f3aca49ef40f0cd1fb3e9d59f85d736df9831f8b72727373ceec508308fbf9cd15c81fe765207d4c025063d917d08b52004cf91d6eb041cd66f48633713124fd9727d86db5fc0fb925a2f4795c65ec652b4803a9ac983ff0c7c0b1aefdfd1381ee17815af5bcbcbe6fd589e8aea9ba5b26ee4fc5c6a9b7d905aef80abbd669cdc0d7cc0ed50b76717a84d05ecdaedcdaf7b7fc4fe4eb1263466f5322476a4d2fe6029f0c75ccf4594677c1f075e27e283018628fcbda03c5bd567c0877d028c523702fb96f6f1f8c3677d4c3596b3aa581acd7b9ad760912637a4592f1bf3f710729b94b78cc5c19ede8f6272828d1d0e322fdd2515268f38afd15adefed0bfb2e5fa4c203749ee372ae28db6fc85df99ade7322c7c2f5d66eb748b9f4be3debd92f30922b126cd074c5ed7a03621e9a3107230a0b3b87bf1b5e80dbead8b180f13ea26c2cfe95da6fe58cfb57dbeff47b1f0395616d84624fc41708e0fd87314bc1e6b19db2a30afd95a9e55f5315003c3e941a16eaeacb1495bf57321f8e409c39b223e31c127a0faa9aeb91f4b09c140a5367b0975c758ff2bfc19bcd0b6fcb87234bec61b0bdbd4ec9e45049c87f8ff67e28b54fdedc6e04af897b6d95a86fba41b6b52d70c9a570e53540ab8358dc535bd0bfe8758df347ffb1c6fe99948fa7a2a1f88f825b4ef83f47e19f620f5a08768d9febce3b7075bbab3f92478f92f14a721b9fa1ac5c4d208d636cf99bdb18a9b25ff231968f4b65e8fba790d9fcc4f28cecf0bdf139eb6fad2cfc5dbaa24faa6d1eb146eac00e25bdc5ae528fcdfc8ea96e33a6b9de50ddff887bedfd6de22bda3d770a1a937cf861845a4e339e0e66ba155d85ef4ccdcb59e2bc6ee120e2b65769b8f76ccdead70537c59e578c5978a95627d43708216b5fe26fcb5d365cef0d2990c00475729ec33c6df0598e7fc5e7359edf27417703cf7e1c6c2bee18c5b33bc4f67e26fcfc043b845d806708a375303ce5f611e6dd09558bfd67358f90bcdfb45d7ca0efa6c9ca162bfddefce580177e6fd72c3c11772e2579a0321fdb067da0b2a35d79ef8a5ded9baba35f65aedd7960dcc058a134d7b0199fea636358991fc20138d3e4a5e26967f2313e44c27787d11ed3d036c30d7845c04394f98aee47adf49bc377e15743cad376339dda3f6f459397f56b13c24c115c27a2879fb548b00707d1beb47b1bcc97352419790da5a93adfdf2fbb557974d6c8a1fd676f7edda22be6f09e22dc7e4380a222ccf8e36a0fbe644780326f7d019cdbee0b9acc7fa692c782be2747375fb68f412cfa74c162a6c8687cbd5d87363e1f0bc41a67fb98f2c26e761c27a73f1b90aef0463b0d55f1ed8522afe9c9ebdb466763a4fbc10fc735857ddccbec83e2f684ea54b06202f7046ce963b13b7d4ae843a213caeec73caf4cc9dcc17c85a52c907c4e5413eb6bc7c90da5bb04397dc3d5eb87b083212425ee65bfd70ba20a3382fb4530e18da75bf59ceeacfaafcf474afa0b278ddd8beb21c15450b1b0f70f72e6f078e5be323046e0da9b273cf975ffa54558e4621d1df67eb33febbb67dab5a1de7371e9bb4d002ef23e9e587326ed81a2fd947eddb120c55532a2a9caf3ed4224b4c7fd0dcfd4dc404c4365a902ca6783d7d059fd30bcdcf3f422e97ee6c7f7963e9b63ef3be87745bf7b78a175da58d338175fba0b86e6deee8f748d7f6f9d188997eadc673ac71155e375afddb75fff2a59789b4d9abc00b62f7b3e342cbb326662c7a48a93edde7785d18a60edc77ace41b67ff7a1c713e85b3c76b29f1f635f699003f01ef3b32c6e147545c386eeb57bdcc33df94c6f01ca378e5d6a3c61875a01656a8fdf6c53af9747ede6319c811e4b1aa752b607f9acaebfaac927d067565eec5c77239bd645ced466f23df15dfcc7a9ccfa5f846d1db386ab69655f28c542977f6243a8c8266dc848bad04c94253b34fa10f52ec913f96f81a82f3c87c6c6f2c2d5d23b8d43aed796cd41b75f6a74a4ba8e33e29de88e48b5bb8f756713b3cfb2dd41708d8c4f53e35253c5f0a7af4ee8ba9cafac56e2093d84f1f9d789c4a2c3f81170e624f1e2444dec46bffc37ddbaff7ed0bc3306cef5dc7ffc77bf75836e4299dc17374f30af2722c89bc70f12e9097e343949723e024fb43fc3c88056a2f37a4293721f656129db0e06b5160dc7bca817d1ace6cfa3b13f648ee458077997c4c8193e846f7ee6d41b1dc1afbf756ed5feda57bffda2fe2feb55f4017ffb47f7f1ed7f272348a6431bde45e4831e58ce2abc6e462b57f2a7f2eb7f4a6a30da445cae2895c4f03b1277f7d44d98d9cbd71fe1fbe27c8c053ae1f0e0765a6812c04ba23f429e5dcd9d7a8ab803cfaa5e2f1000ceabfcb55cf43940a76a410db704187ade51c6a27f0dfd4f7e0fcc917169bce09cee15fe5d1881c8e92da360a9fda46c1fa7ccdebb180bef8dad87c3cb0e240f922fa178ffdcef77d7e35ea2afbeb14ef1597c419f0f58e85756a0478a965bd7eba798d37f6fe72288bb4cbae6ec5196455a9b0f1cbf7e0b3ea8162dcd3db57c207d6154b71592c65e8824d9cd76774097c9cadb1b0e7a348da113b3a875a1688b7301f1b7aa4b67cfda742ef5fd550b29a738283873fcf157e1e3e6d71ae36651013ffbe532638fff19423b2875af11e17ef73f372398c251b95019343763dfe3fb561996d58f99217dd282ee27b93d8c26124c416828d7de26d46d243cad9baae99d1986aaed0e78af15a2257712d5739f4c0ada82d4cb062d08fbc391b5a87dafcbce3b799e7bce788f06a117eb888eec576bc28fb90c12f8ab933215b03f666102f34b72beef383bc6239b0a8fc6d9fc8c7963c63c4cbc716dba30eac23bf4e5dcf9b72d887d00329fde0cba1ef7db9908b3d462cc7e5e6dc3aa6f3c8052c41d0038fb70b7d3f7e7fe5246e49e408b5e4689badc32022b55570add57a5758073e46a42a702da93f60319354e7cee68f11a7bfc935d82613ae3996c235f93c4446558bc7f246d03b87322fb5e22edd3bb3f38cc3eaa5b13a56f7adbeb2fae925c3fc1bff669f154b937da64a9d7debe6be24f81c55ae0ad68baff9a29cb25c2e8cc8adcefa8827c97963adcefa48bdeb4671400fc944e529581a713ed77c85e0069c00a367aef9d9429b5f36fb79aa8f76d0a37c184b23149e62aa2785dcc96154e1690658aef0ef3b71331edb4c88d78b75bfc96144f31ebdf8e2ca9033191a46101e4614e3439b5c16783ca06f673c565b274ef2ba9ed7629dce145d9b292ed8b0947741b5a81ed866a4ff6b7245ceeaeedaabc4b2e6f3752a858cab8de2dd75f1bb051bf344f3a5b3065658162e28b69d6b4b89df7f0f5cd9b2f6711d5f7019a6556f1078f63e7723e9ea921843f6b93f5d5cfb04f834ae8de743ecc343e909db24333c2f808ba3cde9ff57970636cb99ae115eab88e7a764b96b3792601d3bbf7b5463a2f2170f495d03d47ccef173f178172a1d671937b106e8bacc2f3c1e55858f0ecf05dc9310f8fb68cd01c8dff877d6ac3338d8a71a6370ca700038ce157b46cf955341b103d97e64ef1376d5ff34fae2f0bb415d01d2accb87bd03de7c165783d87cbf787346b3782331ec3e825d0cf1f070cbf036238afdcbc766aa1e34e0ed32493f37c34d6bd40b72f51dd43ec23a30b5024f554aa441fd0370ac903ee92aff96aea2edd367b6f1e8a0669cfd9bb323664337aa718dd632d45a65ded922b5111ae5d3a8ec302e274bf377751c246fe5e16a5c57c8df546702e1e868e67b61ffb29e53a8a564e723772e7079846b283cbf2f3573c0c49e4f4fccfffd3a54fd15c58560c237305641f6048cb2db61749258de8cdce77ed7cd6bb448997e217570d87edfa9d67267ed26bb09e15125369fe4cfe2ddc454adfd6e0ff8ec91885f26c1b57cdec6adfa887a2f7c3f7d23a7ff8bf6cdd7b978da4f52e7ea217f043d65dc6719d763cceea5b4af5b3570a64f1d18b924bfca74f2cacc9ad86e4337ea1554d66b0c50a778733bf81ef8eb9ef15b6cc87cbcbad1b523bf30833969d4d512beca502d98edcae3b5b8d4e62138d1754f4d557b375e921c2687a75a8d212cb8fa81b74ba3ee5221bcb2f1ebccac7aac8a658d21132c054c1b0efbb789a3327dbf5458895aedabba91f47560dccc9cfea3b9ff3fecccd59d6bb871e6505705319d096fefc2b5e1e7f41e546b4c7af6592f5bc0f5b215cbf14cfa1ccf869e76827e7fbcbfdceadc1f28780f1dd213e0cad0eff0be2ba14e81f58e529d54d9c5df3f2ba7cfcae17e8e5847e2f3e70589b957fc9d425d5a24e25736f02a05fcca759988d8e07276d9d8adfaa392b78d804f2c3dd5793c53a5b54e051fff2de03746911fc6bd6039ba57bdb56e54ef19f0918c7a3c24071b24aebda3754d33a8b3735325fee0386267f62065f9c7e6b9a21b146f94c84cb82e932b930f6cc700b66fd8c4f08d87647e49cc6e692e6b9c4ed68bd271d6ba7cad3c70d1ee92c33489fd74d2430c2300e4f614b84f6ab356659c01177917b630c5fa75a3de7d2dabcc1e78a17b98e35315b05ae0fc6636ffa2dc3dc1f1ade43520b1b29dc9c533385f4fc0f88d194f04d43712fb80fffb17fbfb735a847a7955c8dc89f7ffb481378ae052b0f35c3e61b9fa45b097c51a88d65e4e1bb542e67b8b4bfe303a651f327e4e76a9f236b0bf260c6bf84279ef78acd64b85b934adb19a5cb3e8f1391ed7c8bf746777b1e5c97191287daf3fff32ecc1d64f95b39f5a0f5f42897f5e659e8c3f4baeae331f54fddd5cce6363bed3b1a04b373ed22ec3f636f6099033cb8ff249f153f5c6fa5b988dbb4d273d570ec69e3c480fb69f7f682765392a0c1627df335ca209c3942906b02f8de215fe2f62b5bec3dcf5bbb0c766451b77767ee1719a389b49d011021e319ed34711f27c16eea308b81c4ca497248632db070970a14bbddc4dae9163c4c27dbf9181f141e451ce51980cf1dca0e86ad03e948e5ec0561f0bc37261f61beb115496e3abccfb1a15471ac1a7e778193a9ed3db5dd6b175014cf1aa672d49f56986cf3d8283ad29c38f949e3f8081792a57e600fbfd9d35c02457e27e6d4c75688d25f3c777e923c197d9a527acd3229de666599fed477ac2fe8c78ad7c827e22a6fff67c1f9dc57046ae2f8771efbe96b6cafe2131791c7ed8f53bb99d98a6cb3be48c382ce306562aec53a2f354e5436ee96686cf22e0d2089f119c03f619e94d34bb305c7ab51f606d7fedbb64c6da2aae99ed37d696f537f3b552fb663f8b619f2ecd1aa97d59bfcfbe51bbd83e679ebc6fc52fa42a7b8a07b1ae30e62ad9dc6fa45947df57b6a7399366dd77668da5703181fe2cb87fc3ffe9ae837ea877ac2bf60f12cfeb5aa37dd99ecb85c6f7d866a6d0736b886bb72f07fcdfb95f7f5e508c19a1279ecb933d990369bfb1d5576b2ced2bec1c0e7bdc12eb6df52ad6c3d6bad913d0a8f5da000679fcea9e1b76af7abd0858dcfbe4027d17d8c7a7fda50d9ef0e8c99c837e66f828fbd4c27e7f89ec9d81ec9de4ca5689fd2ed63bbe2f69df38f4cad31e67cd55dcf2297e49daacf9ac6d0f5f41d47e59cb7bb60f52265388e10dd847058d8475539029a5e01b5638560c9f507876a23bd704f057886e89ebb1d39e2e327f978ded2b35174aae20f31a7bfd2a9ffdc53042000b641a5ce6e91db826bd515273e6421fc9a9c22e605863ebe877ee52feb4759adfd8bf179a1520d92af7a9151fed55e247d9d7226d7c1616896b1f133f613d93f90dd9933372e64cbe454c10a8ffaeaea9d790e881fafe15ee163e47ea31e96cbf56f525f41dd2fb7ff30ebed778eea11c08eff5547fdaa75fbae62b87b174c3728646f1eb615ce56a152fba1a646d00b72f5ff77667fcff4f1bf24ccff092bee621fa22b2180bcf429114afd3538dbbd40b2076df75eeeb4ef1a64f2dc00581bad7b68e851c48030320c5f600bf7f36f6a96bffb1ebe32acf94743e2377cb417c705677d7d94587490b936b497d31e64bcdb1adb6001e2caaf31a787b6e77bf50416c852589ab4ce60960e4e171546b8fcfb0ba9f0869c9c3d7b09d79ca11f42255d86139e939fc2916b9cf3e3af6f89a6176613d50e98fdd1fe8af368274a1f9b53c439d8ccff67f1f6ad68ce0ccd6ded0f61714165d63c93ea7f7cbd1f6158891c89dba3fe5ce07b6ce14ab0ceb82590353c4ed9e3f262b1577d7c04361113bcd58872a5d38ecdaba9f2551cec8d9d9c8993f607f420e2dc09f3fbcbe55baf23eabb0f7edd9cde91ffff8e975ee25efa5271f4be4ac1e566a95be9cfcc19f1d6c29f0cf716b2d5c53827a4034e6794fc107bd1e1d82e38cfd0c86a3b9d05485e84a35a35c63e1dffb3edb1cfb3d94df2aa439ac40ac17c3efb2fa7374e6115ecbc6f55d324cea8a9afd43ea40ec99607365ed1bfe4927a6c963358e33a10fb8b11e0b0d6ae684f5586827e5989ef87e5ee0323b3a5c4fe4135c6ad3867a44a86bff847a39e9cb7e4c8e0bed453948f9dd31af5f1b6b5be17175f9128be96f656b0c4a64a3c7425d2afe087a6d4d2f9ddc015b6154bc6cf6eacd9715c94f57c9baa7e2eb1f477bfe70fbf3ccadf0b27c651f5dbbec4b05db38e8bc7cf547057bef57372cf87bbca2696f78180d245fb658bcb5f9def7660f2fe0c48d060f61bc58f75738cc10aff9646327b2730a60af9745a0134e9796fce0efbdb00840af43ff469cbb26e06af40997a12451dc7303d9138a4bbb7adbd86a8ab8f828c5abcd2027fd646fac01ff69d073edc1d9d32cfe5ebcdf1b6fb01f6040bf6ae0a54716577f60f971cdfcbed14ec3ba3ea7f7581a92ed96c145370a7963aa6f1b2d1fa2c9f5cb71eed816bfcc23e95fc7b3a47c1a85e79658867647ddbc5e1667e01ba7b1f2a081ad5ef7b888735634aea3f3effc86fadbbd3c08fce9eae2f5b7d82ebd2fce2b611dd7fd5df9416a63c4f5c27b99da9b86ed03fff4b379fc1c4bf13cddd767448f7ece70aaa72ad43234648ae98662ddef659f4e2f83f9c03a97cac1b62c22dd7053fcef8f5111b27f6f21b78ce543553efad579c67cc2fa1c1e33bf10f2120660d03af3044de6099a5a117266af467aca9f9c05afdeb997bb0677ae8fa57cb3572e8b749e7929ad9b1e1506e41fb59cf6550357e597700e31ae1bed45e1f506fe4dc779f6d5b055c43abaa60f3279ef3a8fc0bee071d80f236c63b2eb047f68d7b04d66f0dbef31290286f7a1438d68e7b9dcb4b9080f5b65ef482dfcdb8556c7cd68acb0bd36b58dab1f28ce6edb5ecb82cf0a53bcb27f14533edddc34b9215a7fbf98cc7297ababb5bbdec32882960d309937fafbb01cee02f4c88285b62a910d63c0fb3af1fbbbd2ebc7af6e59c4c8797facd36d137734dc58b3168e23178ffba56b33e54316726bcc46cff7ed1851d8d12b1b547eb111bfeac4ee14f2695ced32c1a37df67bf372416329a27fe76e855fa9e66e851509b67a235fa77e577f6176ca20c41faad8d5abebf4f83aca2e9913e34d931dc49baadfa8e09fb77f278ec5e2e38fd59e32d9be98d51805f89ce88a115af38b3e9ebc817c4c2b1e4686fd04b54a2c4787da38e1f693e7933d2d6f151e43118d59ffcdb6c23762df3762006675af87643ec120392fd24a669bbdb7e93cc672bfcd51390059c667f83e853e9a08b87347f55efa742483e5ca3ec778efefbbd6cb388c4ec52779d7147a4084f53b5631ea6a0d27d6451fef8b5578ef117d26d6a5d8daa9810ffd72b2d2d36565aaf262bccdc977c27aa3563c08d6e0d45b8c675dd71faaeb7fc6eb0c1b3d31d82600beb7265f84cbf8089c5e1bbfe1cce3b9f13d8dd8ae3c41cf5dcdcb2605ed7b3763dd6d5cf1399d37829fb154845a14e1f9cb5f2ee1e38f5c670bb994aad7ac63feecb4a17321ff17b7783d5c3bc63681f8591a37eb1de81e98097bc08dd81e98d5f88a1d31cac67e889bf86b5b22cb31b6e3f91a3d34017b3eeab2af6d59cd5d9e8bb0d1ffeecaff7ff50e4406ffc1bbb4eaed8c26b6b87506fe2fd9bfaccdd3bfdcc7db603dcea2960c1aa760394a14ddbc9e51791aac1e45b479c4fd75bacc1b76219ba7fe6134e8f9e9e4c678f0d7fde36571de95ae3da05cf52fcad2bcf6fc33bd3f96abf0847548e6a593dc9b26c3a37cba1da7f3c03b536efe488ac0d66c61559ddad8710cd7cfac70fdd23a16b7e76271cbbc19eb63f68b1027ecce53e408e2c5951dcb9dfdfeaf3afeeabeea5a8d45cecedf1a3fda25fdd5759c265dcb7e2707886bf6948d35e73940cff3109d219f1126af87b144f28c632e6f40cead80c5f9b0fd578ff3f8f649be3fb3ef7588bdf8959dd115d3e67a4cceba91c03a56bce2eddf317bec6b63fb97c3087000d2569c3392ce6bd915e3b3a6f405fb460d129d727bd718e78c4be79e7df05c387d49a7b88b393ea36bdeb3e36583cf167bc2f1a765322a0bec3f8f395e81f7c3887c56f16ec493cb62caf978e3ea9ab9e7bc277e3ae91d1c9418d80fd58aa4bebe083e6c45aaedb1ea77c0ed565d67d57ecdd63ee510c748adb4fe9eea90eabebbc43d5b678bf43e55bfd969568ae0bca01c1a66f5bcbdb01fabfb543eb9c9620cec5e66ff3dc07e9161efb0cf9ca134c1b63bdc8fe326cbfcde20394af3c495959b2b27397e07c05155777f3bdf4d3cd2eca31774db7ba6e4b986608f8555cd5443ff91f7ab30de5e8fa94fe688dab5ebe448e720b9fa9a55bace2e3ba6d60cf88a3bf044ff47e7abf5f47c9d1437372cb0ae8a74a747d6409b0cbcbe55d9e20d8cdb0efb6a9b2fa14f77867df25ace3a7ec7ea570ced84cf957023f033cd583f7d4838b84f24f6dabd1ea123f8073d26bfccdfebc49bad6214cde757731984ba899fbfed7a6edcf051619c68f43ff3518376ec81e590e60ae525e7e30b9bc368101eec41cc6abff721d49fd731e95157ee7572a4eb6420db7dddcb74efb37c6dbdafc3a37d647b3a3890dfa8c84609f6b110e59b6a6320d3fca635b910db75a9b8497e7720cf35f796566f68357ade385fae7d8e4bc5ad7d2ef70a1a8b8af1337e38c3c34fa79793bdc1c94c9fc88c255cdbe428a4f131fc2e23b5c0f6f8c69e78cb496fe89a527c30c4f977adbc708c78b897499d591d2bc0b692a43cd37f9dfbbeb62b2e603375ac25d175e8b13e5fc55830f0223562770c337e4a638166162ca62bc93daf223f4d426466d127373f667abaa05151f1ea91b12b77d79948689fc4d83f38d828c3bab7b196190a83fcc0d56ecc4c357723494261234e294f80fb7963a8f785b6bc38a379b94eeea15e063d14e65f1dfcedd9b33cc10ab0f17a206f7b1bdbb509c81ae816233028364aba249c5c9cbfd99396a69b63df74d58c8fca7f37a64fa3f0bd4a2f53ac02a1077bae406dee79f6ea8c665ffa7497ea659ef1f86bfa7829ebe6754773211c56542fe7f93b0fce6a8d9ca381ecd51f2f5d659e6695eb502d3e8d6272184bf89901878b5b9d411c4feaab9bc6f4b3d61959c58c6c8de801c396eec89907472d91d13e08bc749723f312d3337ee93ac99fa353c79a6c769663fdf9c8a243a56ba8ad1b5f6bfb23caf6f43e1d38e1421c7b711805fa61c4e450b4455c3b7e668b3cc318a4f723f517f6e3fd0818cc495e38e6d53db4e2e954a7392d9fa243dffc3fd64dfbeb4557b38b6e81cf56e97e0b9f713cc6343eebade73a68af7d6b83fdb42ede7202f7aef961e5e461a6567f9f5a609f1cec22f1a34bb0747af92e3d41aec9b539aef1333a53fb89e35399673fdb54c1b736d59cbd57d3ae4912668f269efdf6eaca71d3865852d98473d2d2c473f269ae4f3b5d8cf4c46c2115d9730949ecac9c644c7e510a319898c970b3079ce8ce99c2eed7758edada3f3847bff18711c453797fa67dad7b9694c5e41a38825e5b1179b2846b9b7343c6644acb5a566abbd996766077737955df4b2b1b6555e590585e3379bffc83b3a8b52e78afe37bff953fa1595977cd2ec1fb5c905a9242e434455983df82f52a711c16ea2f1b30bd583f336046bddab64f306f680f13c5b76a70e8c64dfc23e8fdf2a9ef4b73aa29f413617faebf031c2f64c44334961af5b22e7cdec2bd0d27122a05ccd666dea0cd9bc1f5736d0c7ca6fa79c5a952baca67bacf0f1a1bfb1ee20f357eaf3a4429fb0ef0a984d83ded5d6ec697b283d1aefd15f3ff953d7aaef009bb314ec43ed9d24d677696e99a9f717cff3466c1faf77714979dc74958523ce749c9e3e9b39ebb26af2dff8e94c742c2f3487badce0bedca64e9cc781aa0a754c446a432b4cd5d521743700043e041010cb80a73d7e07a99231e378662438da5e0d3863810fd9bf4eb6da05f6f9f22623b25509f53fb47741e8a487c7ffc77cd25b29197af46bacf018344dbe2790d48df3eedbd4b2da1d7b99615b7252bae29ed51199c49ffb94a301f99bccbaad013d89623a8f76c703b5fb3261f460bf7d2705323dd5fbafa519ebe8f9da4b4deac58008f47ef824294e8465c71c5b23db334ddc77a8cefe372354ca46f42c863d1baf47a6f1517b60ff09a73b83fe23b85addcd1f560b47d63376cf68d2d73e2fbf218722e1793507f7562efa735e791339a5f0ef60eeb69daa7b225bdf24ef1e68ce6b52e36a418fccb50ea1f9cdd059fd70b3bc8c0a7a6bdabd80ff2e45d02730b7bb2777143f2d93cda66badd99eb23bc897b5acb11bd2b0b6d90e9942f8872c572bda9783d6a4edcd528ce3afb0828272aad1f795d4e7bb987f518d74b872225a57103c2a1fcc82256b3399bf2f91e8137e4c68ff7535bbe42ed078d97d6bdb09497f9d1e3f97d7b8bee7ca73807e9a49e0383625e557562dc58ca20ded8adf174d65756184ae95671cbe276300856db5aaece44c091e43146995c3563ec5e3b1742f0c5a346eda3c1e3c9acf8387550ed49d2039e5578bcfdbbb234672f62ef7763bf5436984b785bca366fcb5a76098f43087ab947b0e9f6c057b5ad730480975af57e08e37383a388e9dbccedb7792cf13d595f61d4bbae4cb5bfe038a737ce2059684135dfa4ceb5f2750b6e2d2218d35fac85afb56c0ebc061a0a8348e7e66966fe1e1ad07b9730fee514ec23ce0669f40f09fdadba2dcccda5918f607d4da1c845cbea65f83362962d5489e097128ced0d591b3a7e6c431bea9de9d7e7368338be05c935b4f4ff5af619f68d721857d84b678eef23f7a00ee2eff946bc112fd7f75fde58925119e4ba79b9786389ccbda9a828ca565ccf0e7ece84e068dfab1a472fc2cffe812fa42cde7fe06dbc75706f34eca6464da23a4f50aa943ca7e88ffc1de5377c152d4e1cc0ebfae97e3ff2da7c4eef9703ccf3eeed53cbf1ef73dd705393d8e8607b79a378c878c119ef68970e0459a039527f7c1d53bcca1c95b017bf369de7d3f50267c5b478f3611cd7b74ff5a5f689a6c5db51f67ffd503f00d86b3bd9a735162f804f73e8c690c816a3e0b2718ee7cf69b1647be3302ae2c5f4777e28217ef54b57276dbe16911fe1fc1d7f50c573f23d8fc6b9832389f07c4c8bb71fdef9f96f476edab5f6744c17fd27de96efe4b0e691f99bf7bfe84637978ba30d9ec96983eb6426709d601df03d27872ff0caecb424aed682f4aeb3f3a00778d6bc7c503d86469d35f6caa18c7354561c4cf142abe5fd5016bcce53bc51116fec53b6fed1dffafb775f685bbc0733864f45f2e13c06c575c030a4d7f2337d7d57189ef686e0343430d894cb3a2df0f9c17cac8b6e5ecf0c6b6d63df875b93cfc31f19e7d21dfb466e1557c5fb7d59ff3d213df1dfe0427ff1351a8787f245b8a5723c875f845b6ad9c52df5b5d95bd02f7f282b8e9831f474c8566fa759e5c141958eda9de77f3caafbd66570fb89af17ebec1ffadece3ff136e9c4d6ff867fd4ff8ecfa8cd99f6cf754ae31eabb7cf51007a77eb30bd9b633f6e4df4a18f6d852fbde60dbf3fd1dd67267f1be737e1f20a8b187ecfeaa2a74d396467c5099f35f84c04bfe3635abc995cfdd5e7b4e8a3c7dbf77b5d05fc9f29d3e15b62efbc748ed588735dbb2b47f9f8f6091c90601f41ecc01f152f0b2dcf74f3ede29dffabb562fc98ffc91ad1df5a786dfe89ce007dcb640df4f2d37bef2f6854f8def90458bf3fe9d1bf7acff4afaec3cf2573fcf3d9d3d487f5b3dafafbbfb3c98ca68e9d49ab30eed2d9dfd955dc18adb74fed44eb7f5ae74a3a3fff6e7fd7afd6fca7776b8ee1fb77738ab703e3fc6dc5abdcd46f7f476b7c8bb78e39c9bbce125abfdc111b38657036d6e729a7274e39993fc63f99e7682ce55de77a73df35cf759e17cf4bffbf39ef08702c921a33703a69c4b6b04fdac4199a74c5f4feb09ac4aa27d12471b92a3650baf26ac4b8bdb0bd24709960ddb2603c45d80ee17ced9460c48a3ee35ab6321e53c18da87f38863aba6fe7d92d9ff329d27e3656330378935053129e5af15221b69ffac07dc462a1ed9c03ad4524f2cee2c2889c2fe4bbc308782b5feb98fd89c49b3b63425b661f0eb1ae316497f82723e8c16dc7a0c5fefb12af1797d70a1ab61e6f83d57caebd20256b52c732ab5c37b66b3b7e43f1baaa3d49f8c22a5b369dc7d53dab6b1623b5d0cd2bc383ece00082982b8cdd9763e543eec00e1a15780eca0f88aded5f97d35e13b7b2f70fe2b45b3e168022c07f39afcbe0999c43cf2cebd39df1f1b4677bd47c0b96e685c649a19e225b63df94c47f72eefecac27425568ff657f7768a37a15f613448ab9abd7ef136337f53ec563ecf3c81fc8ca50599df4355ee18decbb92b4b03b039b70b3cd656fc09623d5c0dd8f686d2aa4e229d9fdf2f3af81150e755f36744d7a4712ddc97c79f754d4922f14fe04727bc416c8f75f55eca628cf8b3e997b198821ce76e95c37ac665b4bdf13523c809eec85ef590bd5b7af224b6b4e42ae0c2fff763f5bdb433e6fc38185cdcda5c3e56e6beb71a2fcb85a60edd87241f8c6008b90033f3676794110c44cb9f850537df5940e783f21b557c20118fa7d815cbdcd82ba591dfecb08b93d6faa1b1d4aff22a23813b255ea4b59c91de3cc2130ed78c8a043f83e15376f488a55d73caf52cff6acdaf993562f7fb463c7ea57018cff47752a5d3697e22fd4c9fc4ed9d15f6abf17abc3c79e7e8195e02cd1b70b52b80e19c726766bc718eec8c6ce491843d04bc5588c3f05c10de583aaf5db58cee536e73ca57d498b795b24e8a5b637e13213fd32fb03ca78db9abc741fb58e7e741f424cf82653e5ecb4be5a38a9b6f454cf4f2d959d9e44714712b8f76fc8c239b62acbb7cee36dc3857f87c9ddcc38396c448b3b08d9173637975cf558d5c328f66191f7f40d1db0585e27b6fccdf80c7de387b14378c5f5104fb395c68fb7c59f33a458cff0d19957d91ad65b78913cae3d4a73cb785fbb806f57e7685f9699c952f7c4d00d70f17d4b8b0d0e35df37bc84be0ae4446f1377a28fa3462365f61a3a630aaf373db4cc4419de1f76bf1608a351715465f85635af3ba11db7c639ee07c3d3873bedfb2c98faab89df5135bc56de2284c8f4f735e2ca7bad0847a806063fb3c5729b365ebb94b830c69bb04fb2e0baddeebb0f71e245f8b42b7d481a388ed6d15fa5768af29d3a351730f2e4745d48eb949171863d9d9a30afd229b32e8e07e5d3671633bfa50fdaa67a6fe8ce538676ddcd9d6efd9b554c64a8823f2385ff1c6da9d2996fcab8eed71e0c9827c21c5e8050cfa3a6fd9e474881a672096bb9acf295e73f5472ec72ddbb0b307879acb95e612576f586e39cc49a137a8893fcd61fa84ba797d400cb6c28185bec886ec655dfe19eb39edc4e2e47b9d3af1f69c6be6f7f05972edbbce3cf61f59b898b25a7bae2e9fff4cc2bf9df7c026322f775283bf7d45a3a2e7da49be4e9739d8f42aecf5576414c21aaf53a4acc3e0bc4893c716ecd463e0a7bbc7c69e61d929692d3fe831ba9fcf95afd67a7eefbed07cd24f3d26b1757836701ad37f937128c06fd6d8f71d351eefffa8c6a381d74df09b06641eeabc71e30c5f429ff17ec4e7c5a13683d4bb8cf05e4fe28dbd4d97cebd14f3b46e8fe460ad760d5a44fd1543f4575c332378a9268ff55de78dd79407b481efcaf9206db9998788caff32e373c214ef9cdda3f31adeaeacf1c9d50e7c729562cc3ec3275709662bc5279f692ae350e33126eb73ab6cd5ba55cffa9c16f5de23f54859c5f942b10eea9e3695e3bee0b92e6aec6182fdcfcee3a38246aeb274a4b93ef95d715d769c89dd35335671136a4da615374f52f1504cee217ef7a33c29d174e5cfa22ce2f0df293e72657bd66bfbc8331770ec794ea7e289ff99407f0af0559912f679481d657db6451b015b61f94b071cecea7ce27c0caae7a1368ebb4789cfabda8ea1fa7cf801354277ec9b2760cb8545f30caff85618ceb7339a83bf21ce09b12390b0178017a939364e5fef87ba8365602ff055b76b536a8e32c263100bb5ac88e334c3f7e2e62d69d86e308f80b7e064506f0471828acbc76d9dbb1536f1a39687a306184d17e4ccf1bbbf829d39520b11cfbeead3fbee9e354e79b7cf4ab0369c9feb62ea1ac525e37dab6b5742c03d003defa5ab8cfa10cdcf328a7f57f9c8bcee744b14366ca0acab2e51b4a36a3dd4c96d622e33dd6c727ab3df03ce12274b4bc6eb1eb4ec2ee2c3b0f86044e5ae618b7078ff1c9fbc6eab822e83da76de3ea636511bc37ed9e02feeb2ab0ba5ab76b8fe8c5c43fa73e7d9425d650b75972d540bf83bb669ac34fbb17487607457b650f5dea2ee21bdcf7bc2a54179c25711e546d726671daf8df30eef4471e32f78fc1c0eb670b6ac887dc5b8a538be606ebdaa7f73bafb71a5b5b8445f92b8243e032d8885b80fe14c689f33e577e7cc923f67a2e63953e3ccc39ad61c1865270706f7fbaba87ffb92b2eeadb28d2d62037c9a57df8b77e2e75d58705db98707c87d02be2d9375319efc945b86618dae6b2eb9883faf0ef6e07e74765837251b2b09c0a62735f7c835185796abd852afe2e6a1dc76fe2c55ee2cdfb34ef70ab26758ee12924fb042ea1f0c5124794e876ef4652ba73564afc894aefaf4aa60ff01cf05f49db0deb4690f6c35cf08869fd8179f5e65da2745f5e6bba29bd79460a6b7ce1f8879bbce3c712d3a4e991fe7f1d9386b7dfb7d3e3859a4ca6d2b1719c45ebfaf3788856bc177566e2ef95b39a46ef6e9a050277d150cbb76e8323c4aa2abf29996dc66da3ea3b99edb419b3cccfef106ba46b3cae334be78a3389da7fb6fbea33aceb63c6fd2cb6a0efa24475655e79357986f6329b1e5e248c7702663386587d1e0e23aabcd113015953b72e6bd0f2338136c04a8558836ce55c1768a2d1f8f1b0bb8a8591d8c3f4b016f2ef15345f2e562b097ad9e6163df753eb3546949734b39c939d5f6bbf0f97925f9d377c097a4f992db51b5e203edc1b1e449e9515e36e0d31cb929bcabf37e075cc85e3040d339e1aa4bb01f34203cfc507f7b273c0f8ed5f37ae88fdbb71ef5b3dd8b2babcfe6f8173a176fba067b07db58e9c64684c3cec07b0ef01898af9c896b5be983af8dbdc3eb3364bc3933534a3632acd9ab8881f49d1c406de0a5c2b318a9caa15fbc55ff1ec59debef8d12ac772eec1c41e57be685ef17dd985c166910f83da50fd89efdf7c43fef06bae6679fd302306f9f7f7fbfb87d3c2f4be503fa5e571e927a0ae3ff2236b27f3ad82fa743993cbdcf3c44172c4f506f245dcf0e93b749716bde9b7c5fd5f6469063e1d666011c9080e799639b88d8d439a9afb7ee21c2368c6c955edf7a78d3c444ce6eeea583c48f83bdb92f686fc0fd97aee550fbb44894cfc37477f5c65965d71dc6d265239f6e8ea45c8e9a94af1b7db73382150c753d8712bf8babe031c2f8ceef922f9f2edea8f8d28df8d519cdebd81ecda1786345e01f14f3ef442f71fc8342bef6d02773d1f13cca4598675807fa7debee4fe789df5f91fca33de8edec5d46f3358eebcc6ff89c7cb6370d9a43c4675fd79ed4b555d0bddef76c5306fc3ce1b3e7b69757a5271739ad1dc1cf9bea70ae549f438f007e2f92d7bf627d04e7049dc7bfab672bddf45072fcaef8dafd31d8c8f9eda829e6710a71928b6e5e2e2892d2cf69e13946ccc9549ee98e1481cfd6fe1ed6edc32e123c5e471b4455fdf3584ac9de6ed7d77ba344a87df8747ac39dddb60159ccdd2d29be59b30ec7e90d79df6057e3510196a9a79d9abc8b2c9653714e897d3259483973326f2cda9f2dbf37ca3381278df3eb40b73ea4906017f01c679cbdf75020c671b0eff4de59db6f1db7ed0e5756724f9bdc7d19b8265f295716be8f8889daf2419743aed63f6a7230eb806705bdd9fc38385f7cfbcb3d53bd4b631f649e5aefc1fe1638ee29065eebb31657955ac7c705fce676dd67cd23168a3c62358fa62aaf53fa99b9679c9af7fab38a7bb3cf3e5b8fabdf96d567355724c7b3c578e7d8bd6a4eb01de142021d856d899dec5e18577575fd234b0167ac77ba98613c3446c14a37af12c3107443c14719a251575d05ac1b57fb2ac55d7516c0b55a61bf72b5c2343622fa1a13d6cf436b9788dda23b73c8cb6f843a97ed2b1a0d2afe43381ff97e9f682febe6757c30447c052adb744ef7af070daf615ce5d610fe5be6719fe321e945aaf9adc4fa1a660f367a5bf6bb46bc3bce697f66c0f80551d8acc553cbf588f6a7513d827590304756716bac4fb7df1fb959ebbda752b0b17717e02badeb4628470d9963dde9aa695a56f5d37cbf7187bf15dbfd63ea0056cecefbd0d011f277951e5cf2ba2f3ed893dc938f58f7c1f9e3ca939b2b5b70fe603b7e5706d876cdbd3ef054c1676d5f2a49fd747245e0a354f7e6cea7ac8e31da5288ec5df53c4f530234b9873cdf31e7ffc8077b97789270dfe068ef32f219d89d8c4bca4546834b6aef5f6ccdf25cabd73dee33c565c1e38e7d6c4326806f923c1d4fe6d947e17d0eb61420ec0b709f61fd76909edcb3079fe59e3c899fcfe72e01dd4a628e304f108b938befd6009fc9e08fdaa90af92cddbcc26f0f3670f367dfccf303d9055bab7891287d3f9ddcb11dce6a0e1c6d303cca9387e958f9514bee9eb67f9d199374914a9237dd65be56249f7fffbc865f1b848cfb99c85b723ba693fc007c75c0532cbb611091be64959d8ddcf94c6c6e1426e9739b1b62ce29b6bb1720e7153737b581fd5fc4879813ff49b4a9928dbc253a96e2bc78e72d70a7509c65af69d72e34eba8436ef659bdd03e9da79df7a4762bd41d071bebdaf41d29dff035718cf8f5990f874ade4f2675e19e3c30ddfefc8fa731bbdf4fe744461fd5e778be8df899bec8bcf3bb749cdcc37582021dd67645d70eb82a3bf618f4de05d88ec1b269816cc6c3433abb3cd99389a759113c83d325fe94c524b29f631ce2daa58db845ccc72d1c6df06f14260a020cdcb6adcac71b51476f4cdd13d31b40fd0bcf1f682ac93adddfbcfef1869cb95a714b8fafc0857d906737f0b5e0beaae269b38b4b780bf1d9fbe58603f0b73612f10b0ece3beb598c36650075016e7f9e407f895d24706fa8e1df65472c4346112cd2e406b59193ddca1c4bfe2c2a8057c09f6effe54c8a97a5bcfcc3eebd01b9a51c98b6f4e7985a6312e70c8226f726c8f653cef8edede02c7fb980dd40f1b6f7159ff6c52d8be1c15962db21f3fb105f78f62e11d44573324162a514bbd2805ab94aff6c64ffe6d5fa499999bf5f8127dfc9609fa292fc1bea63f19969c4f83dba9fad0e4cb01dca78e85ad73e4ab0cd7f0dec7e80cfd678dd9b53dbe21e2c0dfc1fc4e645fe56f37ade38c72a26f69f9cc1aed13e83f1678e36c0eff17f7416abd95a26bc3cad9c509ac4c85684fbb88e151fc86724d662f6ee6b79ff666bfb8a93712defbff43299ea9320b165ebf8dd3318c701d617e4dd0917177b7784e7ff7f7e36abadb3f99b67c5c8c13e4ef1a8c678defd41f211e24fdfbd1b17b33ed431eabd62db2ae1e4ef3c43d5ae3394d789091fb3fe5ea7aa37a77f2c212752e3af769ded71e36c4f3676eff2d1c7b654816d75c0506271bccf4a4e85b33be8ce2b5a2f47e0c29fe0b15fdcb09e07471b9cabbfc97a64de19059e96546bd2c1b39f6cec9d724cb1fe84d87815f7a5b1c9b48af9daeee549dc37adfbea73e530b9a68e79e5e31b0a6033f47730cf87126230b16b0fcec899ff393aabfcc35a254795d3b7545fa1e8ed7278485f1b39ff2986f687bc7b4ef4ab78ee93e7e3b380e2d735fb8e0ea46f4db0ad661517fd9cc684a1dfeece9eb316636be2fd4a37f535c837fc37b1b4f49fc4d2b03f0636beb3fbb34b95e8e8ace8b85da879728d276b672a3fc5d8d22731b6d72a968cdf97ecc374a1e5392ae3ecd3f931f764e37dac9bd788ca2df4a8aca5e2f637b6107023a7c05ff8438e8ad972db1bdd7be93c556fbe6cf5b6ce0e9fc3e1d1d925e02bc0f7504749d64d5a615b8dfd2eebda937c3e0bb8aaeca27770de7364f68299bde5cfd5218aa47871a6792e966fb6dd5f08dee3debc9ed886dc3ca3518dcb6455ef82605f35f50ed42bb37d4ef14f691fcb3fb503931ff357b694d2b3ba23d628f1b9fb12117914703e96d129e36a188478cf2aca809bab8ecd36f2a04632a9eac69ee01df1755b82af22e6f462be8ee41fc4297c2f5d76c65ee0335bfccc071cfbf897aeb56255845fb3dd0f97a309b5a3a09e0df8f00966a451d534367ae2487da63e8e497e5fe0d05fbebae5e0cf511e247ebcfbe3f6492fb96e0c222c1747cdda633d48e6368875a3a8e2220b6dd6e0f8df3e5db7a5b97c3546c196f59975f422731846351edb2ada66ba50cfc2ea9497b91b5d630e7b086a3e66ac678c62d5b17395ca5b5b1eb87e8879884a82619af1f85f9df59cd0733172d3199eefa8ea4fa2584eb34cb7450eda79e80694d7a2a3af70c063fa0530e6c9ee7270561adf4304bf3702be4f2a5d1a7106f56b16ec237b632e05f926dfa1b7cf31d414dabae52a8ef6d2e3b804adcfe99de0a4a9bbf33c521fabf1ac583dfc72857ddf88d43d1b5a9c2ecd656f19a9fdd563d6d79de2cdb0e38b65148eee40df44fc392d22dd16fcbaa158bb72a73af9371fff85f8ed425d653a70e0f3738622e85714f637e96173ed04fb82732f457f5a3161f3f76bdd6f393f73f765cf2f568f7f186736e3bf90df1adb098d92669c367dd6af891e522cd4d53e1af72a13d297b24799cece457e8d81d31a35f0a3dc164e1bec259bc6fab89a442e063cd49deb99d51736eaeaceba23e031c9abf1553b18414c7b0953ecff75f23b8d2abb236c622f6e6c37e763dd783e1c6dc0cda3580b47ebd39a7d04ac5fa3d54fd0fc3de4041e24e645f46bab0e375a97490afac594e285e6d6d890e62c673c158d3a79fc79e798a0cf47e498a29ffb0a1279b473be465c6ff544f5eef45eb4a7a7eef3e1c6d0d1e3ddf59dd0b383bfebe45f8777d72cc897207b101d6c8bbf9fe0a3d31cc86b7bdc10bbe0eb00f16ff3fa3bc6dfe9d6f599555d58a3df8cf5a3975de77a673fd5b98bc3b6e37dcf6d4c50b7c6b224f992dca5189a240764dd5c3949fcb2f0bdf4e93c811e639c0b1f32ebe5aa30cf72da87516309a7eaadf9d9a7d1ce27425fe8e437674bb8c5e778d68d89d6a859fce4ce4c9a634ce7f1db453707faa185a9e0f616b43f7697c61734ba53fe19b686bdc7f2b19756e3ed63c9b0d358be2704bd15107de2675c5f4b406b41457d322a528aa7de851dc7d510ba9df970823328600130fd7467fa9cea14e80b20fe4dddf3c37f67daf8acc1e7bbdfcc49937c785da7d9d13bb315f7fca810b88bf0d881dfa6a9bfe818492c747f5a86d9461fc557a88fac7a318e58b6cbe3649779f6fe5f468acf68f5be7a2cfbabb1fab28c20f61d313dc9f4aaa3bdd4f3abd6e7c882c3e55c3e96d2cadcf6968f59b696b7b783b31ad575dbcb5fbac6f74ff1bd8e5c6d754978f798dee5d63cda88fd3de775caff0edbb2d0bf82cfbb46cdab20abbfe8fd619d16a44f01f083491d2df63bc8778d7af6b8d56bd6e20614ef85f5857fdeed0fb6946cf66fd826e8a8892fc28dc5efc382f416444a388f266fcb280be7117049640c5794da20e5f2c1f2e133de1e5a1c80ebac5dcffeac07849cf3d5f59d9869247650f79e2f6c82e3bd708ed897f97374b6d78396c45cbc2166fd101db82db4e6a083e3dfdccb0b8a09ac1bf1b0c53f0575e7c9b0514f72ae620263f515ec31a3618f991c8e021d0bafebe6d1f6be36dd5f9cbd83f7da7535fe3d58f5ef58f6838a5fe6af6a07664ad5bff3107c13ea9374bc7b7492f03bd7bf93c279d8eb2dc771ff73ecf6b8f106953fcbd53b40febec63365f3f1e06463a64f7ee33d5b8fad2cfeb37737e3da46564f97fda8f9dc6dfdbd862e7aeb7bf5ce8daba4bc61e233a225ab0b2957e3fa3d0d39e6ec6b8649cd3faf9bbbcfb4abba248e436b49eb06b11d341b22edede496b9b2b7213f96a331ed0d2375da8c933dae6aa34d29aab9b1dcec43dec3fd1c6d40393adecf089f7310671b9c6753eca7adbed6e1bb3f0baf609ff8fd5580e4fd17fd1df9fc4caeabfce17355af1c703c26e182dd2fb51401d3551d6415f7d0743ef8809eabd51f4fdb63bf07620e6e3820f73412c59527a486a74c86be6c919e3c5b91dafcca546eb5e5f0d348944f076a20360753fa168bc992ade0d093027fac38c89e7c99f6e4be8ef1df57be676fcbf7ecb90fe91595a7ebd2801e7cd257f0e83da0cf539b0c204f32968688e58a6aae58ae5e89c5c79637b7e601511a58f9bb8353bce9934906e7db649e411f73af9a4385db7b5153aef6722c70567da4fe6561d29c55093551caf2518d29a0f6e0737cba3dd109eb9f7933f93e6fe15db9f911d7af7a27be4f7a7b41f55aa6d02327d4bcd498c81db83d22e656d8c2c61a036713e456bf5d83ef7197e0f7954dbc3f98cafe604a37e4f8a7bd6cf5f4c9b577d0928763c4af9616df5c7b17ebd3dde5e02cb345b5172a7cc088d5f5b8723e3c6a41e6b731bde8b8836a5e17d32b7f0db6a3a2c383c3787928d13ab987ce68aee84e2f136486ccadf557fb445a2547ba4ff0bbad13fcf7b5c1ad0c3da9353f0be96b4c1b3e770871a41fb95781b325a4bfcb6a7db6cc3e245a075856b5cf218fe9446ba9f83decd6dc9755cc3ea47da4c36f6aff8a5555df372bd75c6f0c3bd70fb6cbc73eca95e9d6b515c4276078d95d386080f1df158bebe88581f91479e1772364a33f7e6a5598766dec4c82eb4cfc3e256ae068463ac92b068b44f9f4532b70fbbbb97726febbf70d7ee4c69e2b756f51657b7058d8336915baa94fe687f7ab3b7099ea7dcfd910748eddd72abe56ad8fff5a731577d96beea3cb4eb36d4e27727d43ff580ed299e2964d7f1baf4f2de36d1e6e66ab34f602f47e82bf053198b5bcfb43fad6960aedb7c6ba3a5d9671cd4166ab554dc25a56b16dff384ee77f3e4c29d6478942fa9a01bb4239822fb2bfb806e11ffeb4ff8fc75ef77b0dd1584a28d7e910995242cecabcc2aa5a8de22ace8c0cb780de9a4996e9da12eadbe7d8ae2e8b00ec4f538a3f9d23f6cd125d53e9f3a5ba279aaed33a5595460f1f3eefd8feec89dca7b35faef10ceb16707263c0a5606739c18b65fd84f8dfbf3af16c618f557c205df98e6ca1a94fb103b11feb68832e9f27778dc1a7d327fc37863d203ebc5d7c8327091c6d21f42d3e8d63ced2796c01268c2b701656f3fa7822f38dbe55e8e1eb9295a8ae15e6f61df3b5c5fd27d135647d94e25a0a79d06abd3baeb5949ded5f207ea2a9750e27aa6b8ba1375dd4b15c6ecc4d45b9415704fdb4346ed611af030c15ecc3c82bc92f4ff5595b3dd37d6de9b9da87a8de6919757c46cf74da0fda8199007d05cf7bed21beb4ecfc2d1fcfa8ef2360e3e502be48bc8a74e8278a2197dd3a07ccf895cb4930bd59ebd5a8d2abddf182b3d4c129a8ca4bc0526e72c54cfecd7c0aaec721c2fa87f5caae4caee7b7ee1b68ae3dc4ee741be2eba45fec272cd7d1e0819c5d5d6b602af1e2bc4a8e13aebe14db395af2f0b522f8b0eee162720fbd54b921faef832dddbdfebce7da839e339a65eb747babae07bb6cf0c74b2d7f16313ee76d4bbf55b8535d31645aa3b296f70a9f3744024fc7fe694f25d4a039abbba74d06787c1b79cf8d8f9d0b802939003fae1efbc30d49bda1df7fcf5d27c1fe6ca23b92c2f1bbc8549ea147a3f15e370faf8b45ec5cacabc1278eb2a8439ff29c319765b40caa9eefd24d59fc90f580f3bdd35d9887a41f5bcdfee73dde5671738d84d52640be86cb590ab1701e5780ce11ebdd7efbe47bee217e96d4fae2c1f5709f857b727dfacb5ba32fbc8ea3b7b898e6d5fec2ef61daee4fbdc02b140efe78f1ea8f674bd95145999b5aa5650faee45c255ce1a6edde3c7930f664e97a7076da01eaa0ad9b4731fa4dc0a1a86300284c865cbdcddfd9ee75bf8e54eb9ed92bb1adc5dc480717ccc5a59ce93c26159757cc78db1efadb81dffd1a7b7d4ec7687b52d3e2ac7a7eaa0cd6f296c6797d984f714f265c4c6e8beda3cc26fc45154711ecff88f2041aa74c88f3805f44b8a53e6d5857b0cb6abb69497d1249acf119abaf163c27eef23b7ee4676bd85004fbbbb1deae51711474d67fb806ddfbddb1defcfb6774cd03f41ca6ed77ddd7ef2ada12d8bf60b22ec6adb4ddbfc1af9555216fc2fae86a3c3666fba8cf72671047edcaa9ae09ce57f7e7ad3e9eceef04bc14e05d637d5d9290371578e768fcb3c51fc8b03b04ae43fb42e2dc2c4643b03502a657978faaf7effc39bdf7284652cfb58f4d1cacf440f85f83f599efd5980938479c7dcaf46172c06734d3a1e57b0031edb0c6b5e8ae61fa8d6d60a5c20b89883d2cc4939efb83d2fa4cfd2ee096146b6db1cf4bea0e1a3eede34a398dc4eb57e3bfbdbe8e2177bf930aefc4d9a805f6b7f5e97b08b24fface73ee7b6561aa7decebafd3d92be9475f2aae990f591ffc7f761659ffd6b9f34837120ed78161674d947f7e2e11fc1a11032a9766b5bd90ce23573ce7cd53fd37c37fd19635a75f98409dcdc11e48c8780f399d8fdfd9f752767eefde3ec7db1a37a66cfe8ee4323bed808a7791e0dc009685817d9d2a2e92551ca1423cb39eab4f7bfb0bc978af151160a3a701d14b65076e9f76fc77474f2cc5482b928d097b34fe9cdec1d6221c9241a2dbaa824ca581df9d058dbaa48cd4700d22ecc76e1ea7ae5abb1bf04bda831ef71b6cfbd2d8d49ee4374c6cb725375fb6caca4765d8efe1e985ca15d71ff37671018fe63d201cafb47e30ecbc7f44ea0167345f0efd6937a4529f5353338627c67ce77daafca1bd55c1c11e247e28fa4a428d1d8729017552f220f2b42422f802dcdf0fe9df08f0b79b98415bd2af556341897604a95f3a1f4296678873b781d124d433d9dc9a1b05c18fab717a1af211fcbf930f79793bd8d8279a57f1421ae37e75cb41e04fa1ffb8ea1baa7817b524d5c760a3c7b5dd25e0df13bbc548404f1db44b15c7a33d491c7eac803d78793ea7ad3329a2d7661f44f7d43c8784e3083031d74caf8c2631e9c5e575964af4ea386fe94c344aba7d5ac048d92bcd38479d4bde3672c9fb57c0916735ce659d775d3eb20470e4da674bca9f2d334de56c9ebdd2557fb896097f608553e84831f446553885784ede95a67fcde488f9741f6c4ea68cc34fcd0f6017e7ca01cf13d494621fc307fe975ace73b657d239f1dfbea82efeaae346156ed517dcafac70c0a8ad8cef9d63f9be7c87e378f8165f2be7f1b5be447cad138fe3f8255c8bffdd81e378a8ff3d3c3cf03b71388ed1db053d24c26b28fac2b9a3bdbc90ba49a187f0dcd08ff8f957af8f1286677618c5af04f754e8d9bb005f44bb972f6ad49df3be7a4f5cd767f1bd6bd23cdb286f03d1b3717243e9db1064787c8d3ad632a23e295bcbfaec1562074148f6eb92af2be1c7f14fef8def1991d8dfff818f1e3ef1d1a39c9f57e841c576a6eefc2f7cf7a4f2dd6b7d326be893df95bfbce4b12cdad818e532ca38eed7a6ffbce4388897bf9af8cf3cff30771d97d3a8fdd5b5bcfb33a3f90fea2ba7cb32a667e8b6ce77408fe72ef1fbbbd2ebc7557c6b31e53924d4749eaac0f9077513341fc1f222888ea31d1f56dbb15a338bdad80bdc3ec0ef43f039da39812a2f529f4f9b4edf2e034cf42e3c8766fcbe8307be2bf69ee2b5ae7a5325be3fa947e627b9877e3aa17d9a840f9ae42eea18211a0d6eae0d3dedb18bed596d9badfb1463ce88876e24f5eb5e3d383f938df97b88cc225da445e2a5c7de617c4df487e47bd18ce374451eb27af84c486d79ffb5b47ac3265e177a283dd2e37f821eb3bfc3adf27f7932f4fc5d9ef4cb9d37fd77e8bfc53a127abbcae2bcd04ee0ff73b55cdd3deee9a4eaddfda997eb60c338e21f7babb07e69e32bdc1afd97d8a7fb3cf6e7604ff9098de19f8f81dfe3fa9d0d354023ae57cb2852ae3fac3a6751a4a430b7a3f6f5a4063e0bb00ddcecbde231d73a7ab648bf57d9d1efd5be36076ef594e00376f57871bfff654bbd57e2db42cd6ef6e948ad3c34eda7fa877d4e33c89335ec5b72d692712aad9c1c8d3d77e4c13bf4c4f256e5530c527752fd6d022fd0d82d83a8e3accc3af271dfe688da7d41758ee8905e14b33c650bc89b54b5aab006ba79fd82f84ac7f3d666f6f43baeefa4bb0e348567e5820fd5e6421cfe554e5f88cb5dffddac3769ea48f1bc2178fa2dcc311203abeb349ee504590ecd68f409a4567f36b132caedfdc78fad0062d63c665958e3bd7bdae5e6a6c90d8d02da93406a9fdc7270719d25be16f02517e92446a300b0c216e7dd05d92f17342a62dd4814dd919afecbb5f25ffa62bf1ac325d689aff42cff07b1bccf298fcf8df72ac390b4629df8e49df15921979c56f70b1b79c46c1daa05ad3bba1d2269e53abbcb225d2507fb9e7bf245f153f5b62775286386f9ba839cd2a4e7ca01f6d3ef87482a5d6360207b121d5556f7b3db40bf5f58b81bf3776eb17e8f49cc6a9a1dfcb96f5f94e5a8280f913442e1e9ae1b850d9fcb17765def10f5ee0b7577c69f1b5a8caf97e0b329fa37eb15c1fb68f9ffa3edcdba5355a2b5e11f742e16608ce1322a222276f4dcd124d20a2b68047ffd376a56010592ac7dde71be8b3dd68e74455135db673e7351c9aec6227fa9f0b294f9d07ab8c1890bd8b6a2c038eb925596731c835cb5cf3ab978efab6e3bde53d13ce343ccc1effc30dbf35fdd98992a8b6aeec6ac67a9d582fcbb74091fee5638fd45e33e75d7886ecc5c15b55ae3f70ae1b8da1d975dec4fd263979cfa4cad231c079157e76cb73c1707e62d97b5fcaaa8027fd09dbf07c6f9bb4f9cbff09e4f9c6de985c4cedbbe3884539be05ba01f418ba35548cde401d779410ea48b37279847c5f473597babf6b1847bbfe8c15fdc6b3be703312f3ace6ef6cba9a78c9fad902f86b9892d8c3f51c51cd99352336fc02b99e57f822ca7f8d0486d4bfc0ebc2b272e9f3571eadd5278d9c542a544ceffa8623eb3239bdf9a643c680f00f7d4b1da2fed4ad1a4ec33134a3b66c34dc4865b787736825847ccbc285a52cbbd1e311bded6d8147d83fd03e363cc85cdc8aa9dedb533a9bf11785354724593ca1397639e146317a3b9de8af8988dbe39e00b3b8cf61013a5663e851305beecfb4138fdedb0e04feb898e5fbcec54cc49a3e27865240f6a06a9dc24a9192c13bb6e6332335b63f883a1e36f61dd793bc2790323b23315e3b52cb9e9db2b1ec9b72f2bb877fcd6aecbfda2abeb4473b55f247f34881325afb2c092f86952e2dad1337a1eeccfad985ee445023dbc49cf047b131f8bcff57dba6f627771326dfac153f1e2a51bf3b0ef28bc6768a9c9eb91cb31d613c71d778d9f2a6b57ce8dd9b08f89beb63e9aad92faa3c9bded4b89718314a683ee5783f511dd1fa6009f50bb363d39a8be13749f9bb218f6cf02cefbe7be32e5735f19baee0d3f135f57f5fa58746beefd41f9b77f06718d5782d51cc80cf6274c0785d5bde2d88278c4fad8da917c1ba9d1ab71df371fed63cee8eaf4a0d6c278f1c5b4b62dc85f432d8c5f57177cfe60ef3fdedf2097806d8cfca029d5d670625cfb55f28a767f73175589fc1877c580bdb1d580a3a9245ca344969599b348df3e492f01b77652594d67de928df6ec26869ee2f819b7836ecf9cf49a5b1a5329cb3befc57c293f245659e6dc61c9de0edcfd6ba7eb8f7dc4549f164b62a8f7b746ee34efd7cec5e4cebb7532736a9bffccaebcb3640dbc07619cc681f55f819f2b66c54e36b309cd090ab2aa16f88351649bc8393a11f02f85db6cd7d69a637ba9a9b3ec7daba39fa5df3ee848e6dee5b2fb3124124fe9dd535f6f0a6fb229827582fbb1507e3a5acb6666679b740e7dd83f3581257221b71face24653e4eb26e419655787025c9697431d86ce83f56c9629edcce735cece0dd32eddcc07ee27a76ef8ac9562bbaa6ef683759d28795534c80d45074ee15dd1cff75a526acf361dc814fbc1ea760d365c7c3071df352d1b3917d7d8c46d6d3c3baf5d93af5deb3485be0af4318670484d9e6cc03dc9ab629daf5d917e03bd4ff7b120f271cc0f7a28b15ff4eb9286df17bed101c9ce4de43c1f2738d3618d7c937b354cd04bc0716668bc85756bbbe66279c8b5d0c5875a9c93b9bcda9f4ba6dac56d2f80a30b7d76d34c5ee921b1632dd25700cbf915c689011fbef87686fa1376f3576efdf76b8b357117e94cc7fa0cd933a4bee65cc9dab5029dccf17f69bcb9135fed038da734923fce92b9efa3d0686c39036a9d8fbc11255d7dbb1a326ee448ae9a143ae4d6eff77e4e046c9844b6cafad070ccad4252bf2a0cfc4961e84f56642f3dfb93682d1a01b615f0333087f392d55b5d457ab32a10dbef7a97d831fb70a3ea04e72ddf8bad90168d6ed5e01daa03d2a75b51c25807735af85c983aabe0dbcf80532fa4e66ed0f306ea846faeb5cb5bd9f560632a379f8cc52df797117ff171c4756bc41fdda7c65f79842b4b79149bae8f549ac98b30dec476bdd70466a7d97719e736705cd62cfeca0ffdae2c58f48ea5a2bdbf398b84d84d308f58ae2edf8b26dfb0e7f471fd84ebef724775625925b15026bcc07a54a777d79c5e68f93daee39c366ffc09b80b521f2584a1979d4a4763bf9d2834c6e4a043ad7b03bedb081e2669bf2dac055954b2ceeec5bc2bdd7b821e4e03e8b37f2a3cd378b4714095a9901eb53b3d7ae9f4a8027d38901e751ed7cbc13c790ecbcc9cc73425bc9c1759bbc69b98fd1fe7c242ef22fb01f37f05cc9d7aae94f8fd7fecc71bfaf775b73cdf0f99f207fdbb8f85fb7e498ee1bfa7cdb97b4dbaefe3dd4a794ce3c303fd9b33ca43ba1f5224e7dfe0ffd1f9bbf8fdaf97e5b95da36becbbacc273d1b7ab9425e454c3ed05def73bb04e926d4e134fd4790f74c9b39cc7eb8c7c33637c4deeb4c200393ec66334bad6a529c4462c16db9a02f237697fe2d96ec27a92df8fac8dd791fa994dd78f50ca0ed69475e36b84be892ac27a7d5e9bd8860db79779e16541daf6698dd9ffb163ca3e1db3c51ee5fd2002e687d8c0cc43515993e8d1e4a0096f075199d9c635b634d073301667fda40f15a20f3b5c1df161476b5d1fd204cd9bc6e539f163b09e52ed8cc8eb67dbaa76ac8e1b4ee28d476bb7eb4d3ca6f1e10231cf543129b0dfd7d860d87e36484e5bee726ed1c130908c2e950570250ceed7e4f0ed4c895b196513ce81709b35711b9dd884eddf105380ba9c51de9904f9a9960db5aff77b57df4f8f31213a5b203abbadbfe47d2e2f5b5da656edbad9129b5eabcfa07f06b2def2269b2f5cd7d2d49cf7fb5bf67449d3fbd694668deca275cf7e10ff1afabc4696e7c3be5d472e6f645378d0777ff7ccee2f8dd9f3269b956d225bb0d7e708e2898e15de5d6b9376be1453ef160edda3ab91f9d4fe84185e81ec899e3fb80a5adfa7b1991a7b673f819ab8aeb7b31a46b2c5a2794136d8f4833df3768d798f4c642bac0364df942ef299d501a671158e3e6783ecc6189ef7f27ffa3cb1abfd55d5b076a3aa72a364e69b05ee6b2aa27f373dbc21d4545bd7ca8dd9da8da87e96cc39f7b3bc78aa7935f3a6961a3869bd2c7db8a291181c5fbb1466f2d9c660ee5d0de6981e2d71ac0befb15179bf457b4ab409476fcfaf7108be273e180995bbed71f374bd40a9de0524f7d9f52ed08aa4cbcd35fe7bc3d97f023c96ffe87312f7f0c58b9677608089555e9dec8c7e9764e1057307a8c92c30cf23e7624efee7bcd73bb3cfa0a6fea94647791450e3ff647b75fc53433cf27d7fd95ce4117ef041fd3df04a10ac738b01353436dcb309e995d7ad9bb6d735ebf3be09b142a4a3cc83f63e6be3bfcb2bebc6ace46aace03c98fb735d75bbc65a9cb7fd601db257b07f307168fe7efec49dc17efa30cf3d6c91b364d51ffbeae2d8d38caaa54eb69726d7deae1d6c23517df9dade9718674ef0df697e5085ead30a73f4aec692d50e86d4bcefabbb84f8ef9dde638deceb63617674ff870ec310a5332346f209c94c69666a7dfce7a729bc7eb4796ca17468fc4354e5075329dd071bed39d09f39c5cb512bcbe3cb9e3b3ff5767617a3bd9d07f91ed21f88dbfc2539d6270e536bb1e9ec85271ef6f2168861eab532f2cebb0f3aa673be799853a7ee6c801734b67e6fe6f82d7717cfb9fa677ea6f3289e7b2cdf02ef8ffda35bc337256b85ef45613e8ee5bea36b7ee2cb2a484e66def0b9d1fd8381eb65fdce3b8f6ecd1f319fdbf2a00910dff31b5985bff3cbc17aff954f0ec9a38f45baa4f0102f835cd11f497b7f9534a1e9b701cf0d1eec7d2c077b7cb04d4f2af48d273407e2a116aa7d24800c0cfe0b2fe1e32d5496c5bcb9ee13638396cd5efc88d9fb2ff523e8f9afcdb901c507b09fe8242e7c2ff693f7a73c64d0c4f2d679771e952bf1171417a375bd0f78ebe87d53ed62e585fe0debf5e485e457207eee926fd6dfe3e79e4f2e9b67c00b1d3461d2f0f3c13a5f1f5b4e0905e98a05e19488af73a70ef3edfa587c9ae72e36ad093496f0eb6054b7aecfdbb98d77fb1a9b119f6189ec2d3affea6b6ff9f3713cbf1a972019d2cef5768df96f65b4ee914e8ec2af8385ebe7d1bcb618218cf1437afdeb604ed3a09e6b8e752c7d75fa70ac63d39b8cc40656b86f5b1d22fb66e6d6d3d0c1183b3227366f3ef97c76e92da0cf7cd9e47083a8e2648ba5bf1fa32c130ead89960b2feef09d9fd63bda5f5d8d03c12eb572ce42bab5e49b389ebcda844836613b217dfb5cdda3a33ac7f9d2c59caea3f1a528f9b216d2d99f180fc20197486b5c2f24d17dd9ebfbd9be188c244ebf25b1db5bd2cad848eb20f4eb39ba3e764da770cce3cd5a55f0dfd13c2592289c0fab1deb4fe6a977d9a5f4f507f5e5b68d5fce742db424868503b95ee8cbc7b8a27e0ed69bd451e78c57cfef7ec643ef17745fe013018c255a13a7c2e6568c3791cee83f5fac429b33728fab1207ed45f1eddcd627aa535f8a527e87ecba9667548279d4cc2477013774bda3754ae45e6b97f943bbec516407b39cf90b8af371f93edd818fcc5ced18edd52ecf426c4df960cc0b79fd0efda665edba70eaf0be15f26204a75bed331be91ed8232a9281a40e59d7d0ff0febb5887e5abff7783291adf0abbe13ca7ff2bfd0f8005dfd87fe5c3dd7b81f718c15cd77bbaf0d317dfb5cac7457c5f8075d4d0ab4bffe97f3a91c8cddc87cde8b5e6dc57fd84b9f46f117f2094d4dd9da0965eb1a1d2c07ec4a1c2f75fa79b855d2af7189925e0d68136b6b9ea7a8e930560131ecd607357b31e699c7e59d6fbc64d7ee72d8330b73039fb8f3ab6df562377a870b213e8e719e99eb3baf6876eb77e822c43c8c03c18a1850cbb579fb5c35f5d554dc9c5b7d8dc5cd1db58d9ba7a37173e42f3eaedf7d3bf3d8b7d98cd1bc444dea9d9a78facc009fadf5f3cdbeaf89c697f670de902bd2cac2cecadc54d39e9fa9e378008df505bf6d13d9a16e227f69fc3af49b4dc57e6c0efdddcf9fda2af673c778bb7bf94652a347618da3035be0f8609a207d30629f57c335e49278579bbfa13839e2612f428233edf0e80db7b21ad23c2e771c2fbbc6073d28084704bcd3139697457be0daf598069b1ed92f12d3afdb921edddf41dfa778b2758d3667ea9b79a668ef13e5e1338a76ae77389f8a712475631b1d8b7e7ff023af2caa94aecdeef5de374f6f07536fed1467901787fadd5e7d8932e4824d28ee51e0283e0c388a95f89dd963de780a1731a803c57d7e9efc9c275ee045d2c7d1f53839ed5e0df3a07699c4017bbf0d393ba3a6974fdba71f72bcbf734ccaeabd3a50fce61bcac6c7f99edef57f00e740735462ae9aeefe71110ec7713081fb7ee0f3213b9825b96485071ec6b175c92934dff17db7f4918f1ab7f2e3c20e7172cfdfe1e9d94dbc9cee6988be73ca03468eaa1378c220b2b09fdb7d62a2bd6eae9e759109b15ee03847badb881956eecb7663b0df3166880b2ef232996ec5d3d736db145e7624f7ac400f8cf41d1cd40d9cbe5afc85f87626f1f08667b0f3df4c1a6bf5bfc82b03a665189f1bd6523c718dffef637ab8feb3e955d9f6531cc5ff3e607c3fe219a83c742b2bda3a125a562caa6c0c47b2b94cd35e4d36d3c4b0f5f1fc098cff09bfc22b300fc31c84cd3b307696257d5690addf5c939167207b3ff4b2a01c5c073819a4536c737a69b8c3fc47af87de536e0f6a9454b46fe745dbaf454caf8ea5cc9465957531cd92571ec2d5c894dc891264a7548765f5b5e70ccf6519f43e1793bb069023e442f86d8b7cfec8e63fb3aaab2931aadb91cb5b8c97b3b06be08f4a767f894f16caaa9d1db91cf930a5033c4a42d32fcd40fbc7d4d85e3e1e70645d7df01f4a660c6af1dff2613dcb93ccaa2bcc15d5971bc53e3bf2f6a3183b36900b47e0e924b1fe8732aaefef3397b379273bce9c07bb7754827910f85416fd82e434ba9e4e6093231b7ec340ed4234bfc8e699ff98e0dff6997f6bea0fd0f7c3dcc0c712adc3e1b193394d3e5b6c02e6bd73974cee2ed9cb36e3275e66d427918f03dcc70dfa986fb3a686fd64baa631f95c5713d79c26dec42f65f1cebb8be9c5b14e1ae92f896caa6c939d09c75df76c790139b33beea73dada1af92befb0ecc29235bd7fc60de6fb689f6225f131f28ebfdc63999cf190cf2edbc05e167c2189a99b764cb6d86fbdfb7e7e1586e4ed7396fc592f0d100cf496bf30699507c70e72696ea7b59e76b34f1406551cdd1fadeaedf214f707c30f7edfa8c7e9f1c4cbffc881b3926d1f5a3ddfe5bebc0651440afeb90d8436cb689ec07896975358156f5260b02ef45d70cc96ce8f3ddf4d930efd90673e34ce877fb5cdf737fc9de64ee5eec1f0a3f3c0eb51e51d93d07d743b4fddb86984f79ada37389dd42eaf13ade9bd783e5cf8207cb7e425ee4dcf23405e073f85d4d657c7dc5712a3b93ebebf2407a40e1f74b661f7113bb29bf3ec0ffb923dbe37e305f063918260ff03ba13dab35b61c35a6c9c1ca671f313be9d7531a3c1ee7992798bef9e7fa7e054c8cf5fe87f4b49ef978dfbc1ed52af5b2e3abbf6eeb14f376df2ed9fc735db5e7229b149dab8c9ceb8936ffc1e135e998a71592c9fbcc2f7b7b355bdd1c4e7f75d7ccccc9a03e79d662ba97d706d3ed22ffaaf3db8c2fe007ecaddd0107429a8febef07d48758ae1aba5be40fa37b1b79df7e5cb34f36821925f4b806e3c175ef0753a0b053799bf30896acdbf1621f3345b3b3cd651ec9abbc5f5fbaba47c09d057d92d179d24b730f5f43f7e8e1677b3168bff1dfd636efe3fecfdd582c880bfdca7d13c43cd77094ee2f36eda363fe7b8bed6ac9606cef8ffd22ed704999f3575ee5c59ecd3b1b55651e4f9890b8c8dc2874d1bcf762ba8f6b817e1ff0beb9633935253ebe9a518f0fe4aec4cf9c7aca527ad9a7bdf1a0dfd83d97a2b1f67cc8ed2a7fc6af2c8bff38a6f3abbb64dd3db7c3f5df4d1c55c89f72288e98439c95b607d4c8ced0ef6a94f2668cbe33ad934ffc207ed393516634568faf3ca01e9f0d0a799597687fecd99c3707fd513a3ea5d6d742efc61dcc2adb4f045ecb742413998365df1cdca72e7504b47719a4b7b96d4f3f6f904d86f3076be0b564369103ff8de8d56c93b0a9bc3e3ef78d5d4c93f6ff85b69f6a19003eadeb77b3899c83a386504b20af05dec178ec3a5854dcc1f4911d98f462e3780f70074b28b654bd62672f9ca0afa3b43efe41e31ab127785fad98de3b27c6cd5936b53f6ce14521b75db7b5899d5e519357796df3689cc1e2b99fd7e7baeade19d9821781ee07573856f0f6b90e0a2f3b7d0775c56db3200d56d438802fc7e683e8c90ec965b5ca0fd6530fe6766c5b21e73573c5b88be9d5355f726a1ed1b5978345cda151dd9c7a8ae4fd1f352ee8f7be6c33e3e6c035f7308860fda2f3b24d92ff8f03f8fe33efd4d5e5a0e7a51ab3785c7a85d640a94649e9c4ac82bee716f0e8e76c93a1ef75aec02e88fab6d2e71acdc1ea6673e1b79f80fd83d64463e7bc7daeed279b49c279a26f27731e8e758273c89a06d98bfb3262bb00dfbf6f4b91e3e47a1c83f635b66a7bff1a78fdcb8b84e45c4eb817c82224e3825c677bfd766d771c076655623d683cd0f56a3cbd1cea9083bab915b9ef5a806bd0fe7500e766633b0e7a0df19973d9a5688feca3b002ee46017d8f306b9e4d8f7d0bf3734a88eecd7d885303bf6a7530ae01c13b7207eb380b62b4cf7bdc0c3319db105cdfb672aaed65cefadc39ffe0da7dfb1a4455e9980e83744ad39352138d2c58548c37797f0da269d3975bf726735ed69eb8cafb7aaab17b6b3bebfeffdcd46a33688d2acb2b73580b5d5fdec9f14bae53ee60adbc60c59401c52dbdbdec623fe34b4fa852e772446b0dc60b73ddf668a6c7f88ece61d058c15e51575f4e7c45ebf7cb893b3f9ed29f3192bdcef29a78f51cf3dd014eefc8db540d8c19b798d22db24788ce9aa9b5fdd84576669a491e2caa315d84f4c176130b35d2c7bed6e68fb10e5a0948ee833dd08f4fb7f5a60a7ade0f1c62ee338798c06bcb313ca7c06bebdff9d7758d3fa175bc4f7bf3537d5aec980df69b7de78ee31e95bbac2633834b7233aa385b4d6663faf4293e6580ddc237755d4e8463fc4e5b9332f89ea0e3c2bfb215fe3da842b55da77f0fa6507e6480c321d7c07a043bb167139a126f89d3c1988ee5503737fe3d65e7bc2099a33e58772b9474af1e522f590efa3d625b6ebb8231253fd404f10d57912136f5a5c98c60e5ff404d9b6efc3d30a7bf725dbeca540d9dad26af2731e795e5180718f2e5ffddcf609c3b73f3ed4d8e05d8d50c4bfadaf357cf4c995396468eb5513d8e6764a1cab6a252b65c194b9bc1f16a85c65ed2bdfc867930be87b5849a8b5587a7c5fd2aaaad28f07a96947ad6d6df868358e18bfc541b782d1c9a37f907fca6639663f91ab78b39c1deedd98f6a56d079868d7ba9dedab1506b45d6f8c4ae43772ba47fc146120ab456efb29657c06f68e48087d8440eaeb75ee5c52672c6af69eb1625be7d46cb7f2e654aac73e87c13fa0721995492dc8194ed34a196adeaed432cde3e17e10bf8738b2a77eaf374575783fe193cd4b10c7bcdc83fece37efd21ba16fbdf7bc0feb0af6ed4cde35ef3df3eb2fccf5ef35f3fb27c86f6ea5e7ba79e155ca0ae262ba93ea942d57bc6e2d4623f8f667ef3d7c603385c45a1d84fc2bf9feb7b8e6b9ddf4b5c4fe597833e1c506ff4b42ed464809d2dbae764ffc7cf19aec1accc873ec5879977754f9ad0cee18799cf3e3a1ff83f62d195aab77ebab86013435fb8f115d77f6b837cd7f29a1ca02eb4e9af7ffc3a686dfe373d983bcf593148f7c62677fc520ca604dea98e4b67e6a81d676d67cbfe9b0bd6a931df2bc635379cace5500f65ffd2434e547d21dfd97eb07337becee9f784da2aeef866d7c8e6985e02f13c731625af44e9ccd1d03b9d823d67f3367b4de4c72a20f1bcb6ef7b6b7b6a57fa9d7977f17f3366ccad09f1f10e7b3ac86751722bdfd7697830cf7d3dbea8f2618c99c8510ad305388a9ceedfd6f419dd8ae771bd86c6a55ded8329cd00a7dde58242a55ff371716baaef51ccee5ce0fd91a08f982e925e1a4ba1d833ab4b8311b06356c239a8a626fc5ec974cd32928f8b13ae6b805a82a63e1a7279837e324141734fd3fcb2b219e01c15ae39a76d078ac763a4f6b9e1efc3bd835bae57872ba1d7047ebf06b7daf1382aff9d43fe77aee41af33a812f2a00b68a6bf191ba537b1c8be31117e8cbff0b36f5f8ff84ad711649017d3b74163892ed56c6e83cf48c4273d07e5305b89d1cadf9a60afea6357cd37eef873a4980bf66097c50b816b0aed25e3de33ffa4641ada235fff6c0673a158e80f762af6787712a3ed7f7d01013e0ab97c56321ab44e62c7ee997240a7d8ee809e1859eb0436eda21a6c2e93824299c3ea9d13b72abd8ed63b6b30d70f8373928bc5f5411f6da533dd4277071126c5c76eaeaa432656668849f2b0aad4da6142d070de6a6353fd7f747c39520affc6c174b53453bb2bbf81dce356a3bdb69eff743f296cb2afbd78df9b66e737f31fe7e2ed958d6aeedfeeb6368aaa7fa9001efcdacc70d90294fefac2cb13d43fa83b6fc1fdb06b311d9b5acf1d141135e1bdcc9263e16074ee2f71ae0ac209f7d7808af4a4cf819065c1f5ba41b4d25a7de3dfb4c82bfb27aef3d7bb714a6bba572df01d7c3353ee8a4d65263b76d5d15d7e77fdf600e0dcc33da71483458e9d87d5c7d2fdb7d1dcc5e4dd0906bb5edef3ee498c7dc97231c7035c6760cb1419feb6adfcb639b3e7074521c8dc4b65432b4cfd1f1ae6eadd11902a73cce8cacbd85ca320f95a6167f625c80dffae7fe588ffd6503fdccf793dd589d07bbcf825ca6e46757e75188b8e739601691bd2c3b984b6a100f3ebe3ae639b7a3eadffdd1c76a46b271eebdb6075d6bff34fdafa69f18a307bcfd1b59642f5b51bf595ccb2964e25e84600f7db6fed1aae949711cab7519f4c479c6dcf7ea114525b3a39647ba8727a0fda340ec7a57ed9924d717d5b0673ed2bd79d7ab70e80fc09af3bd4cfa6347149e29c3bec258efe591399ea239266b2adeb4bd6e1b3c41afb69d5a7336037869d3cee91ef247aa1fd79eebf767fe34f5d1b91ba97da1fa08b7fd6b53d257b7fb7b80616a7cf6e7f74e9a7136ef4e30f9035e827ff403a57a49dfb7225b747281a57aa376efdfd81a784f0b33fafa5ff6644dd63ce68a1cc8af0116b1ededdbcf87357c1df4fc4b05c106b675456d9f158d5dc15e1698de9c05a2dff6a938e848c7127c5454255be088846374cfddaae92539a8cff1bd4b6b13a434ced6f917de18f3df42afe34de4d0f520e9363a26cd79d0f31ff7edacd0bafbb987c2733feece870b914c4bbaba1fcc97ac66766e476d0d6f867b06fcfc0cfc5e44afaa837abdb627069f36f2b0e151fd80f96e6c379f7730964240fb20e8b093a29ff1d7e6dbfd3e777eb649902f2f95cea2ba80cfcce9edfbfb31bb751e037e448d4dd13923fdc8a03657e3604dc0f707aea798ad5cb5a98b40cfb987ca02e251edfa476b19ea481655d63b17f72a24bd13308e93ea57de7111c605c8f741cfb699ad1534873ac1428eef83911e1f25dd775c899299254ec3311d8dfc4ea42b5c735a04cb6b7a3041467db6bd4f91de24fbf560ea3307b082682db2b95b87c85e0e0f667591013b9c50bcbd76576f003d24aa82da63693bc71d1f75cb636bc7ec7d309721cd4340d719281aba77f05fefcdec338977cd246f658ba8979ee8a377c67e0e701e1cfbd75b63fdbd94fb0e3d8be4f265edca8f7c5fba3f73d2e9f12a1dfb165b1174c8483fcce31f472b4aa70e93ada8175bb16ae433fa1b8fb5e516f9ffe179ebf94fcfeb6c2ccc23fc63bf3db06d2dba97d528aeb1de2f612e7d0feb8931793ec6e738ebc927247fb22e374564e0d421fc057b66d7c80db2c69466fccf5c93dd7db09e85b1eb85cf9d73bcbfc34e57b63c51fa90c3155f1bb329c56b50b8dc99f7b3ffd26f74884daafebac07f66f39e7806390ef7c7fd0c530a57a97913a3b63963659b41ea27cdb3d36f2f41f326f4724536e957e068cc7dcfe96fb64ac5ab54885765077305fcc74e34fd0c38be769914faaf39934dea4f76a6636d1e904b5f6f0acf5cd51f1a1b129ee43210cf4d8c33039fc6282e1dcf2a5a5b4a93df8b1adeb683a9ccec4759b47d61a0d71fb1d322e6f189712225f689296e7aa2cf1afbd259803c7eb47de51b1b76ddd93736d56b918a17838f40738e6e22c7f72e73f27b67cf90fd345cb3a5437136da1a3fd657f795ccc105f743001bb576cc97d2cb906d57a5b2c637b5d2af9d5e80debd19eea10578fd9ebdb28b92d2237db565b5eae6a2c6baa999630ab33356a3936dda7725fc129def306eef3ff78a3cff673f49851ef223b2aa9bff03d7ea54de344167937d0c72fbd5c99ab11c711f8da8e3cf277ae0ff1f3929063fc9c909f5bcf63b8cad95f1f19ea9f5e834cf8828be0ee287376b7a937a51e57b99526c3bcee4312ee673375723ef4d7190e3be0523f75a16e1fe724d7ef05147e773cff9e39cf3d816213dfadbf877e387233f9770471c911f7475ea2adfa67c1bb32638cf62cf9d9f7d628d1df6f5bee078c69977eaa6877f951df43095c533da4f7f9465fe7bfda17844cf093d71c77a20bf77b98d79b016ae757a1cb8df8f93e7bcd235424a9dbe290b1c0b72481cd9a1bf2b60487b3222db44ab5e9ce5839378b7b71fe95e4dd86e6d63fead2fdfd549e23ef367aa87432fd694d35879177a05e258a097ed0ac752869c06c507e7a3f39a354de57eeebc254ebf9a5cc3b15b37ed58bc6593d7b8dfba75c5109e539c0ff516d36f1b7a2c39a9236c8a60ad644e94141f0fc0afe40def902cdedb1a70bbb6af68af794d1d7854e13a70f18eec8f9caad78cf7dcfd9923a17d3fc0f096f4f9b2767dc0bd3ace08f4db57ff9e4dccfece7b2def458343f079457befc6fee073b207304735e9e54cf0bc792bc7b373bb3ffbdfc02f7a3d5d96bdfcc3e5609ea9f769fb845c481f9099f318f263c09ea16acc7afb2a97ad6b4ef530b950790d78565387e93ca86317363f9801dfc9a3be1e24fe58abb3badced3c6af4cd5ea3e45a374f25f65986b212e919bbf78c362680f480e5804f6389d36c7b3120376567556a717c043dc13223396629e3d7b84f870cf29f8e4908e57fd0430ca517a8385f95b53ed5b38e28b0dd47fb2c76b115d3462fa0bfb1bdd3f93d2cf59c2f4aff90ebc774deb1e757509cf93846dcccad363ab7633e2d60500e9cfe0a6347360dddef99d4b1fde0cbfe1017ea785708e73cc448b682836ca2e25087e14115ee5ba1c864a8232b428ce33981dd8939201b9f5f2fb602dff80529e8bbf5aae8c58516c2bdf52dbb3e033fc407bb785ba7bb59da5778ee231dcdaf5d3c341def0da9d9258939603fe9c2cce83cbf6b96cd18a0f76f2086858feb58795bbb32ae983eb6d935fd807ac253ee5a74bf42961c27b6b7458e377aa0f99bced392df60dd6acdf58dcf84399e9a3a01329602e98a8f25736f9f9f19d9e09ce19a871eb2f8dea794f03edc6c2e4dfd76cc4f3e214fee35e4b1793e9f3c83f889cd71e0ac75dabff15a3b68efcd18fbf595641e867598e4dc31cc57739f5e0cbdb98fd7d5cf91e73fc77e067c6579b3b6b6e2b1d753c1b1fce1bae8d585bb20a7c0770cb717b4ff4fdff87b76b97679b10a3fd7f7d056a785cfe2f8d991cae73ef7790cbf30dfdc3ff3a821c5a1fb17ad7fcc95fffed46fd8eef5006f38fa5f92cd9adc2bee38108fa640f1f00b38768bf9a305bbc7df7feae236cbcd3097aa3731830f8a6fad5f93ded5821fea303e98f01d20ef0efb589d7e39565236b94459ade2e7fd210c6565d9e4dd013f8075c220773fe8fb01f7edad9170fb244f95621f85f193bc869e81ed1e0e1bd9def9dccc1d1d1fd45e37b193a7354fe473fc530e635887daf5996cb966e3c656823ed5782f74d72dbb7e8b7b4e19eb373ce663cffafde61b3ea9b19ec4d7f89993eab9570be69b1eca2334f62719d5c5c0621edb52972bc997146dbe752b0eede0227ab28dd7cccc12a774afb5413f49e869993816e07988acbd025e00b8e4e15f8a2371d87f73e55c2839027d95dadcf083a9214ef69f7a6ca7782f835ef779454da8bc2fd47c32c0d3c30e7d2aa1701e0cdbf6acd58a96c7066414ee59c5da94de3591ddd6f77dc106027c0f3e5fb2b5e272d0ce33c7c23c22831e5893fef1411e711d86948e0e618f2f857a8bb925d2cfe5b9407b6d68ef7c00de87ec630bf8eb5bb9ee4455db07f39809948d20f05e76ce154d81feb938ae20347b736103bfc1407ee89b9fefcd8ddd3be9dd7b38ee2327946d6f87079b6ddb78fb7c43cf7b9001fe6638d7327d8eadb1377771ae770be80d0c581ba8edeec55258d926bc0d78cfdba5ad5198f3ec9f79b7b0c76fa3a6d49aa1f443d4ae9f29fede633d46e7aff8d848fe405885fb0cf966c2c8b11339761c39669063f6acebb9fef45c113f57aa697f7dcc06541eef6d5f005be3c33d350f743ec28ed1dc8797669de27ce693eea1f23b472a8fcb6614ae341a70b15e7ab60687d7d50ef06847bc16baf513f7fab9d0f759b7b1acde7d9458296d15d9e490d77d5a9f2a1af37fb9ffcab850f816b26f6d74ef26b754903ef698c3ec41c9c5676c1f7daf08dfabd71799f625ffb4fd4a2066537816acef6bfa81f17f51b7d695d920fecf7f704f1cf8af63dcc7db75abc797d4b3c8bba5575f24f32662be837d26dc5c93bd377b8f7058f3bdef3cc00dbb59d9f5db21f63af0eb01072eb65f87e3426b8a1c7be2d36fec7b0a8bd6fcd67107347e465bc7d0c52107b633e3a2b53c3118157d43e82308bcc3c3eb9bb8214f8f19d9e483fbe51fe6a926b652fb7ec33e167d3f61bcf74767b71b1cc839cc35c19b99922b803f807b8ff151c0395b4d289af7a0b82e5a5e8da7f91dfa0f96413823912c6ab97f9a31f5f9389adf0758bfcedfebb8f606cf6ffd34edc95f8175777338b206d74fef7e0d2c1c53d1399ef5b35d7a325717c7da48e41ba0b529d8d629fc813bea8bc6fbb658f24715fa59c09267b698720a5f017893ee9c9da7b0cc1fdbda5c70cdeae9613e7641835b6874e747dde131f69753b815910f5d10bb8e4d0ed80f20bd1eafc956ecd6ec3e13cae71ed74534be4777fc700f7ae2c0a727f8573ba2b9826d8cd954abcb414f2fb2a823d906bc1780877e40afce1af7a04b6fc44f28fdc735da5fc09e736de8912360dedca5105278e3b15ee013a83d6efa0c99cacc11792aff7f1ef4ed555edd259b8fe57f700fdd46e7491487609ac910cb69b82113e0ae70fbbdc76f16fbfc5e5a67d3ef1c6b73714cd2c75de87208ad9ebeb03c1e5b1b8b7ce20570f1ba1de1e1019e37fe27ccb50b79498ce940e79c323b776bf41e0aafc2b7a9bea04f6c2f46aff0eeba89052bfc912335feb8571b1507e723d22f05649b8dd654e7db2d3b19a7205fe5d5a9c36c2bfa805d6bf11d4b76d6ead765117e6ad7a4570b6c1e9b387342e5007ca8f9c579da8e1bd33c121cb60e36809af9b9a35697ad68d3352a977edc82fda2faed759ce998bf34ecfa630ffbecb418b3aef7fe530d63671774e7f4f0ef545de33fceb5d85eccc4237a11db15a33e641f57d98f5d2059daea9a6e4f036619d920f5878e6430f020d17f632c23c62fbfd9311fefb3cd80b79e6fb9b0da316a25e95d41d79426d9269b36e7f6decd17a156e877ceadf5ea6b043b4cde97e69b64e30ef3907e7b097f877f2f1883ddf027a37b6a9339fc3ba61bfc49831db9c684f7f66f23ff5bfc426d6712ce9bc434ce62cf49d8aeac1bbb0fc774711f0ae9cfee9137fdf948ef4485ae038d60bff46a539416cf661bd7cc49811b905abbbb4c5e9e098f57573b7d007eac159c83d75f1192ba848470ee8707ed7d666b5542f5a00ee5ba849c9eb3ba8696d6f2ab47db94bf38d6a9c55cec399d77d410fdfec0b80fbd68e353266d13ecbe036b133bba113a9c51abd43738892bc6d6f8f87f8121e14d4e2a1d8379b5ff173abda92107bfc422f647ca174896f9d934f456501fca437ce2b2faeac5255b0cadc4f77ad6aae98ce8ca9feed7604d08d70933f3cdf2e623dd26f2381772316e9ec9b3d027ab5f6b87eb74b41fc75a92fe6343db1dc6d4f1d9e1b537b87764724e6635715d35e5f71cbdd7365846b63254c82573d5e8e870c07d3425bd703b8e25d5ce146df4dc7c4fe411c51505fccbd21ac778b7260b5c0c5b6bfeedc2bf5d2e4c42e7d1cf22f9f7a758f07ad7ca24fb52bd416d85f6363d0cc709d8988e2fe344e9a52e0e06f9cd062f131d5434179b662ea2014f546847d3dcb676f3607daa5d73c306a29e5b8b4d026bd0c2efe867fc77b0ba47146f7644f623a9cdbac6240ed962b0f6750ab134cfe43947273a4a547ab5988ee59f7d88bbdfef5b51faf3c1b532e955d2e6fcfed2f4fd7fe2d6653adb16e7a6ba7e044a8b5fd5d1b8056abde1f83715af63b391750a76c83f70c95dff4813b075fdfadd96f317e96e1ff016d0af691186b2c5f2b00723c0e4964ed31fc8bafe63ececc3ad499f7ecee79d0830a90d3e176ac1f7ffce25a494dd95823c1cdfc357b70e2f38278fec973b921dfca711feedf5cb59107942bd0b8d87f7cc32776af47eca931cc2f620e172247649531b4b6aab64c82d2c71bcc4032ede3b83e66fcf39f1a04687d400e2de05b6daeb5d1035b541b837ee9ddb3d84fb7e79e6760b88357cc35a5ada13457b7fd92f6dfc0cb6ba39dcffc3b8d52ac6fe8550ec9902c7446aea39a2527c5acccc1587f7065b89aa3738179f90bf4ca31fea91ba185e17b703ee1e7f6d30d6427ab54d09dd1770faa0dfb2d5b5ad69bc6c42474cbf49acb0b1c19b5edf21eead4efadc98c2ccaea777db02bc10e636a853cc77d0d3d78403c13252ff9236fc3bdf7e026bbf1d9bc94d43cfd4796b217da9e9eea045d347b0de209bbc702e494e7cc44856cb8b655c71eccdb8477eb64a5c93f7a594416b13f71c835e9852af76d88eca2fbaa6d3e43601ce6f1d492d8593405ff78c213608fc7f574fad9f22dcab06645d3a5627bcc7fdf52d5b0d1359bb867684316e9f16cb0f62e7be84fbf9847e6684e8bbb8d477e9c5d1293e26f87e31fa2eb836692bb6df25db644e84d681a4aec00ef1d6a702f9c9481e4a9a00ebebc449bcc1e5334b9c4a764ccba71fe426e110df2daf507bd9e30358262f902bebf541e8ee31ec21e544bff490d2ae9bfe78cec5c783eaf3ac024ed3841e9fc06590a07d208fbcc333ff793c1cbb806b37b214c9c8f2c3bada0753f9b167349a37dace0fccd68769fad6d507b4de89fef5bb35976d5a5d85ec05ea1cb6ac2d8defc75352e695e20e087de48744e33ce9caf2bdc7efeb724dac83e02eea14f352ae9daf83755d01a7eb5a7935995db445eb4638455bc188b68213a1f9dcaeaf9d1d1e09d5a7c1f2db7580ae45df3021dc228b0f3dfcf627a70deead328d1dad98203916407f2c6c3fece3f732c88cdae7d26f2f2e7c291626dbf8fda6a4f768dbf69a306a5d5cc52eb7ba383aecfb576bb1c1f188059b781ceb4b17c8d9e15e2c62c97f701b16fa7481bda5bf065c79b32f06c42fb1bd5671ad4d7f09beb61727f52f3bf4cdcaa65ec8b13647e473239b5c03b9574cdcbaad2d4bfd741edadc15d9f77bdb64537abc478ebf39597ac1f77efe7d2bf2e8f9b56b9e5255e4bf5db657cb537a13349e4de18886e471fc17a9dd11903c0c44e3685ba7fc1fe7aa0eda4fe68fe7923c6e13cbeec68373b9bb7f3d0b5fcfa2775b5d1d631e06e2b9b119316717e62f7e383ae9996649ed719b0b53676d948e4172c05a338e16532ab8d6ee0eb5daa251eb9991ed2f9b709b125c44e33b0aa7c29fcca186dbb1a412ed534718ac3b7d33c56b527a1dea625b6363e86b38e4bf26bd13485ca68f03b018f21ca7b0d137bda49237815aa74720ae6e3687d7dbefe7201fa0baf962393e666b277a938dea984eed58bb76fe7d0ef8ac59cce7fcf331b0e5dadf0d06cd9f9f190f5778fa16c8bf5d36fbb999271c8f601a3b96853a74344ef3e44b9140db839f16bb591df59d6e31a795919e0e1a53691613281ab3996b2b1eb92f5b8b7d6b64edd47db0fff51a78be64a55fdb2c7d9cc4f401beb579cc3697f40b6ae4d7f36fff727a907113aea32a3be06b6e2ef066842f2ee0d06cfe83ea4d81beffa7c5a61fe41edb94ffd41963a927866e31e9de100c554b568acef282c6f27b8d3d7d1ac66e6531bc6ab1e9c130784bd52bc562362b8b71367a620807cbf9da73c68b2ff275b0566e36b2c5ad53aaa3bfc55579b08c2fb00badf0ee4d360cc92f242781df11cc494f47f5f964d8f02946d7f5dcecf99dd479e1beb1614d61b42e0f7370d1f148e93f618a5ab936ca9b29bcec21763dc28f12db2f5b818ff0b7997e3956fa9049bff34f53e06d4ec1711f8dc2746804d39109037e352a2fa95dbb6f99396560ed727d92deecc7ef7a9faa4f8e37f1b1c74105fd2db55eaf4dc03f51f37b71eaf3740fb9c71eaf3eeedb3ab01bc08601ffa35b235d8fee311b2b257b60f305f8ca31be99f8fddeebedbb3e7d75bd7bab08632a15ec0b64dd731b3df7836ff0bfb62b825e0c06ec48b02de8770dcce9d59b20b94df37aac989fd73e19833a3a0646e9f7760ddbfc0bf8e1a765973795fec8ab67df931a73d38f19c63df0697fbb6f93ab0c87f12559bd87ca227995b4d5700e1e24eef76967481685a9b3227ad052c0e6a6e403dd9b2e46b63ed2c9e8986dde7ff5ff1adb73bb94dee8dc5b1bf71cf402ede7e736c1811bdaa0451bd3b3c469b7d768ecf684c88474c7da9753ed98c6c6bb9cbe8f546e6e6cbd616c02f84ab55b87b1ac8ec914e9ae2c7abd54919dfcf6d9935de3326e9ca7e9fcb47e9b1c20ac81c560edb6762adbb353913c97a27bb4adf3bf92302f5d73877b9aadf038a4b55dedea97fb36def85ef4feb78dfb5de6b5c79d58f2fd6e9e99deb659f1b0c497b39c563769919f8f1c7fffb03685c3858cb440f332176d7397da19ffedd6f7b36a4ee36d340fbdec7876add34312579993a5a56bc25abad1f73220273c6fe2d6679be313479da3dfda313b8b398b653aeeb1a6e9a92e89556173c68dd4b4b0f02c13cd5798c2fda3b9a2eabb9596ee5692e8149ea8b7c7a535c4c3ce0ee4c2778c37d94c2591cfa435e4bdcf3e89614b6bb456743cde88f7bd2860d1f3fcc9a976cd1db3217dcebc255b3bd68a75ad4d4ae395b6e6eae173e9c54bef91ac56b78366df15edfdb15dbff3bbf8bd529636bda7443f5b5d70dc93e194a570df3d28dd91026e2e0e048c4fc6d79fe9eb91ed9bb96695fa315c5fed960db738bedf5ead6a3c06e1be5d1ff13d3489be47671fe36b2ae5d1f48724f7542b8edc83436bec9f31c5d56eea999b6f6f6167fa24bdda190f7d0cfc86af67edf3bddfe3ebed60f979e74b759831e04e9fbcf3410d719e66bda2f909bdd51df8b5daf94a9cda36832bc695f4ee97b5f33cbc6630c7fde790632b1ef0bc98c7bddb87500b9ba5c8861d8eaff638b4fe8c1a8f5f783e3e7190ef428e0fae6ff3bcd00371162cd9095a6348e6da93e3cdc9f83a40327185748103e78c7fcffe750db6c3e70c7cdfc171c86bb2303fdc60fe4adb2aa668ac845fe8e560fc6a93691f261b79dc3ddba4cd5a98168168d4b67542df7b903348da7864e7f3ac203741e100c301e6f4a907cfc13a679b6ce57dacd8b74f71e5598bcdfb514c91ec0d0391afadc526687574fabb4d79e004e27bf478e75e717c96ca1720199c854cb09e3ff6d1db379ecbd35fbf9e7efb99ffed887cecd77c8a75079b38e60ed9c6f5360b19cfbcff71cd29675b9bc2466bd6b84732279436707f28e3ba72798de5ba2ceca8e4ad8594a1737cf61ae06b8d1bc852c350559db26b16612f6663b34c41cf8366a637d21bf3ace3b57076b06d73965818d397b59066d2da297c2e6524b48738097a73a2b58864a8a3ce33c8018b6cea4f76a1c3e9d0e732004c2d1cbf79dccbd5a39ee588062789c62dc8d2dae3a657dc5f13cd6d732fac23fd1aeb15db3c252ece2b86de629e3b6675772e46093d3eb369e165c1639bde01d786b9fa05fe834b1f1ae4f84ea9b32c06b90d8a1354ad528ff4b03e657c6d7386816b49f4d7810dc66fd11e025cb8a13ad6bc447a90d4a1fc76ae46f8c319471b8e83e5b782c47f4cfa31bb238d792218ac06f3dee0c53a7c081bd13536fe835d347f533c29f1e7ba9a7fea4a3f0f9aa50ffcdd913dd970d41d613c47fc4cc69be0ba5cf0e149cdcd88cd47b0e2c4a72239430aef0d3daf7bfbaeefc353d85ee4630e6da53cdf2f75642b110c5b63ab4a37c79c5650f363ecd2a0e1b2c2ba1dfb1e381e4dc66e407fd53d339c07e71bd9000699afa7bccc703ea3e94f6b26c7dfab028caed33b469ecdf6715fa705ac03a15f93c32e07353ab42c5a513e5283e96b7a37ce9eb18f2d8613e98cc7416fff6e6aa66ac08209a4379060f327b5f7ed792f332692709c9d22b8ef23586f58c889c4ec6acfddf35354f5c7ab26e8dcc267e7ac9f19b8c72fed6f2d995021f6cae9c1ce3a1c46417c974a3ae8ad7fde5b87aeb87a68930074b02f1a75b04e4a5563672e674cf711b27536a913e7a1b2a83eadc92ef544fb55d2de4b8b6df112382f3bf80eea139fa25e3a4b76f6a9565f6daff216d74dd5c29a5281ebac89cd49fb3398ab1df850a1463e333259ad688c6284f1c276268b48aee39c11fe2d29ed2895dadc6554a5b26a67929e8ccd41eee09c436272467030379e63300d6eefd28be577f1feab12777db79d3a4d682e00c0fa751c7ed541f47bfacf89d9b97fd9841f6a7891d5ea7ad0de679e565df61cf325d76966726cd0cf215caff26313ecb9238da1e69d0bf43147fb3fa47a73911a53c255a242cfe50bc154915e1a4d0dab5f34730eefb1baa616cce709cd01efb0e8ef641ce399bd94787f150dd6f30baf9f22dfae095f41762c2d0ef73cd9277e87195a3f71726e1bfcc33f9f456aaf60cd665289d605c4953223eb9e2b808cf2d74af7fc4cb835ffffd9efb9a8f4b023e9531d05653ff5306ad926136e9bc5a9398ecebdf5b166c6c3e6567747edf5749ca1fb5a0be915fdabacee2067f729feefa06d201fd2cc83b590126b217d619c1bd69bf282f70e5a116cb93edf35b207bbdcd7c6b30d96972d169eab69ccb7b5ba7fcb357fe961678461ec61dad34587a12eca684eba4eefe09a593ef5b95de8630c09da8f04d39fbcdad194f15852d3549f1fbbe809d371e8e2093a85e32de9e78fc7b401a77605db17f9d69e68848d7fe5021733c1b0c3fdcec0c7d7b79b85c2c572957003b6d8c9af169f8b7421f8b3d30be466db7cfb94f580afff1eed33cc35f494ffa5e6737fa170997d0e3bfc1cf1a5b9f71ddf6fce7f621e8eae5e13b8a8abe46042affad2d6585f22efeb68bc2f45c846b8ee65f15c2a8be4d5512b226fa685cfac6a3f5b4d49fd778c6c606b41610461ff37384bb2de04a644eb7013f14d7ff96fe4d76c85b7dc59e0980bfeded5300648d58b30854c625012e9b5a02dc204d7bf1d79153862942f79b14a60cd58d59bbbb0331762ccc01d9b903506efba4736538a6ceae30dc902f93f8c57e68402d7c1636c9db3488aed5298b9c03fae631d82f943fe580b09edbd5747bdfa12e436c14e1b9947a1a0b150ce83f5bdf87de63ca05eabf13f2e18a358f2b671bdb418c5984d65e62577ebea226bd75c7eb007592cc91eb0711d725713981d2ce4f325e5efd8249be8548177225c9b2103679bcf2bcb3244bad25671bdb58cde3f3b7d7b993e93cd9277699e1753ffd2a2f06b2bfa5f729d94eea2e4b51afd0d79ff0ce3903a3e6d6bb1f9b6b322b527cd7e2cdb982ff87b29f6d3daf86f747e286ae54be9955c773c6b8ddc35f03bd931dfed9dc51ced9b5c42bac652ce1fc8c7629ef310dbacf876cd971cad69f0b9d0f7bbb0e81b46bd38bb18f67b862ffa31fbb67e8cce2774d852cf42fb4f7b9f69e06fe8cdfa87f7dc8a431bb8ab1f6a6d125c0b86f43d4fc7319da7ba2aa1f5f349cfc2709bf280ef0f2ca5c33891d8a93f31ca60798d0ea684f9a9bb7371afd994af1d6bc77aeb236fc7c09b993be64bded323513aebe2b1e017409f21c02546d31613be15a9e30fa6c27f37636023d962caff76dfde7dea91fb14200397cfef4f613de8f76fe2cff4fbce481c463d58140682f0e5f674e24aa1b1702addb77fa8379ef21a685de3def674ad1cdccb58b2b3c6676c73b662faf0459c47f0e342ddae8639f20de4c73b4cc295f1b3d5cde7525c0f13cff9e76b5a9bab54ad9de6716caa77b888397c8fcc7ffd6839a08e90e7d88a240e1b17e530df74a4ecce0f8e0dfd6571dc8aceb79f18a1cd9d5f877e2dd4c3b1efe8fffb7e3b27dd6c6b7ef7d649ebef51f548c5a78a7c33a6b439c0183fe5fc1bac9db2bc1ea14fc900272cd7d7de7eb22f4c19883c96dbbd18425f3fe1fdffe3be0d3fd5f4ed73750d3ed5eadbcbaae93e1bc11f2e56604b8ef9e08a767cf4e5cf8aefe53c13dac76397fd98a9513b7aeff88a3e6eb1bc76d277eac9387daafa543f199bfd51af348b391d2c667a3056bca133c6a7c66e3e4d9d372c36d86842f5794c8ccf5392aa27fdc81bcbfef7b639f49ec6aa8929ff9c67ecf357d2fe84fd9c077a959712b7abab50a6fa14788b10f98a61e38b638e3b01f4fa16eb2be40b221f12ed67dc3730a6eb4758c068f57cc3cb2685deb2e8faa8bd7e4df380ed2734664b82e70107f5b2d157f8375283107618c98673a293850df710d55f9bc447067e19e9c3ed44e09745b2de6283a3ad68179bc80e55e8edb03b041ce42aee8eb5613ed430c3b692e13929c3f7e639bd66d6906bf8c15f4cce09f6d9069ddfc4a0b3ffe4cf4669fabb3f6b0367d9d1dad4b695e44e94905e6ef08cc69fcd883f7bf9d99fd5fbfeeca4c10e4f67945ff5ea4515e6c36ee7bdf23db0058b84f89c5f9defa7533e5fd8df634d9f18bdab091b89c7d13cd311f06e137e4ae0f2b54a8a4fa5a8b72b1ed95871605661201a4b176a3a09f7d5a388d0f101ffdeabad564fdcf34a5c84db158ff64b6a9ba725e4d997f97dbbeaf21e0d2608e9021fcd2585f5b155582b9c6b42ccb2377f3e7a5ec799117ed2f2519d2e212e65b2e8ba707cbe5a8e575e8dc78e3b21c4b42ec9135ebac54647d3c8857e8d0db681e64d1668bf951fc5e00007523fffdfc60a283d46f20fbd7b74b91fe0f8f84107f4d75cb0a89a1a9a577b88f9b076a66d5685d3f565e5b581fcf4c4d5ebc7332662fc5951d5f1492f8b59670be55745ad3efdcc78609e8715bf5df18597a5cc3e1de80fe07379fb05533078a6daeea912f79d59d58e56f4d67e53b36b5ffaef1f58bbf4886496b8096daefc15c7a0d7e7627b311e8eded541363575cff76ce3f223989f56176bf222e99fbf20fd4ee8f980679e52fb625cc8be1bd63a3c3dbfe39f1aea3a2aae826c4375cafa9cd1f0f69077667ab80f9f33369e354fa16ecc72d2b6fe7e5c8f8ecc577af571eeaf083243b20177ab77fd0506f6191abf86d6d0c460fe97efa1d856fa1d58a77fbdcfce31d9efff784f38f7a7efac674612983b246f46315323f7531df3c4da9c517773f6343ed531ed27f9337e2f1bea599ec6359aa319bd07ce49415caf378e16977c30ee91a2f93765f1525b0b6966892fd176215d706e8fe4c817fecc12a7be97a599b408ef7ec6c78eb5c3dc00d174af31a795c5187b23027cfc7933e9614e2eb23a47f73d4b22fb0d785cb5c3f5484be6ec6746159869eda8e7cb36e263f7a27c5338d3fa270ccba6063e7c5e12b17fffc156376931bfa2733d51a7f08fefbcb4dea4be65147ea6e79bfae5dbe68ac776b28b5d117de32af591bf6839a927f277d243f6af5ffbc59ead6e9fc63fb137f76d2c51d89bde7dd17ca175046b11f75f9efef561ac053e5fd87dfbebb476cd200f16efb95d27e753b68a1d73f3ed71652909e9cdae5fce686f4962caf8f53c7432a7f0c414e9f2c736a5eeb51a605ec4ddb723ea67f49b27a6316007cce339c03a03e3670476632ca8f7129def003feb06f95d03637b34215d9ef4a97652e7804b698fabe8fbf08c249e909f1b07225f7fa8f36f07f03de9435a933a5575cef89991e2f1e6df96f8f2b4ce484f8b123881c572361ab3e9728ac8e6ccbcc9e60a78e67ff5e9582339e77cfb191b7ad92edd66d3efa0cd05dd7924c7900ef64cc057ff848fbb79137f28a33bbcc2628a8e03fe92d4cb61ccce921580877e2df07e734e5f0f50dca4d3efe031acd56bf5ca1d8ffb5c6cad15704cfc186beee669826c1a6f1240ecf9971ced0eed6bdb0cd22317865e364dbd26bebd6ef9e0d82657f634c63e7f2c235b5dff435b637f7e57e8bd7acc25ed1df7855b36bc884ddf3409f2b3e0abae7769b03a159e697c07d6310feafb5d56ab683f41baff59aeb67910ebf8c7e70cccdf62f26cb008b3ed129ef70abd9d55a827d01b1e1a79ed970aaee9b98ce9924063fbe7b73ae43c5c1bb1271aa19f52631eca740aabe973e17760568969a6a9273ed52e773d132d66e63e7e9a539ceb3e5d36a1671aea53be7b8131e9b8ff16c1fc584dbffa69efbdb6eb840fb8f4e688fc649bed4ac75cd5ed1c367d39a1e6c5c85c739a3a4fb800e4c3ecbebdae86ebf5605437ea9eb0173d6175734d96d4a33bb56db2e99efd75ad9235eddfb0fe301ec1c83d369103f96c8fabd26d46e21cab7b44708a115a533e67d49278fa76acdd6d33399efd8971876fb398030ed0b176ccd19c169e496aeb615ef59b24b0a10bf841a346b2cd15578cb44ebf03755e7adc2a9144e1ec8b7cf96122597d87dcb1c7552077edcbe63b98ec52ffa2dc24f1678c9127a637b7e69b3aa4bbc75553274b4b6fbd039cd750def5e67e9d679bac9dff1bc1fd2059a1835c16d1dfc1038dc711f9d4e75e2ec162fe08ac39c83d49fcf9db6ca3f9ce36af4876b37ea6233d12068bf9d49be867dc6f661e4aebf9b7b74e91ae284157887c89fcc3eeb99bc7369ae7c1fa74f71ff9f796606add8b72f3269bcb96ab0a2f2bc99c1cafdd5c560f0aaf36072e60416ae4d3f2a032d55638f23bb55a211fff0739fe70459ef5c493e39a46e92c7f94b7bfcaad43ccfa5e62f0fb817ff164b7537b9c6046441f6a9a36a3b69cb29c869feb7ba5c4fa9badf1a36b78e43ee7405c7d399672b655f40d774520a61ce4d62fc7b38dec43ce48bde8fd2e213b7ff18eee5f022e2bdb155ee69f1dbcb6cf502b602967574c2f2efa66eb536e9b2f674593584974ee7e0d98de9b47ef17d14800f3981c796559850706ad99f3cdc9aa6fb4ee145d7f6c39a1d8c7064f700b22e10019d13bd5faa0db37b8ef529a9da2297c43459d7e7b598b431bce798fabe548f593fe4597233dbc3a98c2d789d4941ea373a82caa50d6f835e05127a7767c44bf15fb281cacbbb4abf989d28e63a846e3de319a693c7c6e7569b8881a9d45e25570af4fed9a3de1921889b7b5ebfc737dcf8f1af4e2fe714c60e38fd5a1300a6f89d397615d82ad86bfae6d886f8febb4a92c28c59e51f8adb61af4f53e0f6a51593abf48f18524335b2b702ff547d9e886e4602a57457bf99f432c940ef49c3905bdda218881ead9267e7f53d53085febde6ca73560c6f47556872bbe060eaa5fd6093967bb4ebffc40ff14098f767e5292b86aa6de961fddbfabc219f975af7f012a1f9988f8cb5cf39ec8bfc5d26bdfeec9a1ce7e0f9bcfdb886fb8ccad12e993bf42ca1fbf72cabb4ebdbc0f04a94e7cea2ac6424f3c417de36ae574badb883c97c296a55a3770b52e68983d98bec4c594e37b2089cfc057dcc6f8eada5d28b923fb288e7d747f33b718283a92079c9c95a9edbc635b134f6b615579e6730bc0d7cfc4c2fe7fad3bdd173c9f535ba3e48c9f596ddc47171dd793d0f3f29be06fbc20e398d687cc666ac7f2cdafb2ae6d3bdda51efefeebbe3987c7ce094575b9d16ce828db6599a103da31c8c6bb01518de6499528b918e796b74cef1a029a58ef6a75aa92017560ae037863cd4231863591618ba2f47b4af87786909c7de711cab50eb70d7eb6f2c625e23ff82edb6c3920d65bdcc35c097f5de15fadf3c7115aa95240b77e0afe8cdfbe31a1df43cd7d4b4bfc7573ae828fdc1848a768577221c042aeec5d2be8b2c0bf7423624e87def44a1d9f6d66a392fd0fd13aa6f85946d323f37d4a6c7d006dbec2a0b9c2483f9349b6fadc730166d13d9398c4bad727991147b5600ac4bb3167422e38d05d4dc81fcd11e789cd43738a0fb486a7868381609e7119edf4c2a3ed755b889ecf03fd9168b73216b948cd3dfe8eff91f785c8ec507d3bba6a9073ba27bf92d5f65aa400c63d9e6ff1359788338886b11ae27f043f437dc0b46fa975efcbde7bec61ffabc71faabf66078f8a68b24db2425fa17cf75d31345c0bf3573fed95f2f07d922b91955b8631962906ff7c2ab11acfbaea74c64674e1d1a5bf1a5b7feb7f06e0c2f692baa971f4bd7491e1a1f565fb2f17625c0b9649f5b07b3fcc966dc386295d2fca0bb617c93b2f35493bd3ae6a980bc00cd29fa93dfcf54df013baf5d93af5deb343d68c79fc6b1c7318feae867e9b79fa5cc87c63c7eb2379b5a16d79c36bdc77ebaaf817ca163567ddbdc95f0cab7f7af7fac2fe4a0d6bcfc39d68e6c0d8a7f95f0a87ffe18ff80bc57e15d8cf46485a93d3160fd0d7d58fd52bde956f526af28f9f28b6fed7046873d5875f3ac8906e70cea1c7bb1ee35f3d37c5d1ceb24929e7eed3e78ae33edf91378ddffb26e809f7ff99493697974f4454a716b36fd498a969fb3c51e3c5ade168a835be2f535dbd866c73dfb0e3d39867c247dae9477de9eb03fc72cc415e4193e44230e404ebefc675fa8f5dd57f3d0853a19ffa7b9ae03736ab9d629a7f7d2484e6784677e7c9ec831a639b6d38a91f912786532982f6d385fd2f87cf56bf07bfaa1e5a6d069f9f96b3ff7dfe367ec2f78e09ac6032b7f0037594f13c7acc20fb5026ca57731ae7606356b4fd72acb2a3e70c72ffb5124b256c407f348f1c30a5d7f58ad207a87b93e71ef2fa5574763eadd13eef49ddd673adfeb9df618e9cfae31d5a9e3649fb518f165911e3463a54cd8f4602a5f0ee4beaf85b32cf6725d9694ce7cb5a3eadeca33bd4a83cc28f79950d2ba639f29e588be7c75d48ab6a35eb7506fadfc8fb37ccb07f625b2612559604a5b4d5a7ef7562766800d039b0fdb2a3cb2535ec16659541779a59776cd26c06107588e1dfae61bdcff814db7c239d7906faa56eae7ba3a21bf106c9f4595c92bbb1862777e5983133f5bdd7f93d98d1cd19714ee6f8c87ed6739f23b86ca740a2f5b95de3a9d213dfc49f8cc70aee5ed1c887ce23df273406a8ab14d753cdb997e7638e3866bff8c4412578c246e58d7ac12690ddfeb6689d3f13cd0c2bf6f6301fd77699ee5993ce46ab69d3c3e1f480c0f9dd370fe3439fed36413fae2199dd3d5092f829b837f6ffebd405fa774c801cd87ce22fceb73fc8ddca79444cca981f172c0f1554a625578d995fead90d657df8bdecf381e0f75cea9b3c4bf11dec7da36a70fc861a8effcc87dcf9febfbd9358f241ff7f40c786fd79c7e19eb4de85d76905b91d6d59b24a63017d2625e38d17bded9a6c5c3e3a66bb496dc4593ff6bf0f37e3b6669317f04225f3be6113d43d6197ebfbdcc43ffb24be5de3d123cb6357326be08fe7bf17ef627a76f3f331269c99cddcbeedb4b82dab6e63919170f39ca667e447c0c9d3bf86eb9ac56644cef67494c66cd75ae699fe5665e17539807b466d03b41be0cd6ab91c07c74e701efe5d8793235f6261e84ebac480c6f112c6d730a31341233bde039c018626f6230e41b3d70bc6e4e9e85f392f43b43ade6222cd0fb2acbf2ecaaef2363ece208d2a2fc72d584e44cdfcf12c644dd6d6bf3704ccc9d87eef5bcaec2e63b62ae516be7b90643c683e633cda4c539f4c555ed734642f8c1477062e78b6b1e2f323d869fe789ac0dfcfe385ec986c1026290857771420fadcf688ec72da68904f16db6f02710d7c47b11afc376cea476bea7a123e27796d7784d3a02e62477cd63290d7e73c41563abcd3a65618f4b8b39f225cfb2989c0feafb7d5fcf0b69796fd7ec36c3dfb18b859567b9be16bd3502eb1662dea3fbf0696db2d7c26ac6b120eb77b18263db2c0c7d869f7829e0cd52ff729aca8b20f333feaac2bccfdf3e17ef21ce2f8c7f9f40e437cec2ef8d515acc1bac24f0a23678e20d43f61b193fc9a332f83ba4b72043e33ade2461f31d88e7b373d97c7b3afa4eb0ae198f81ffaf1d4aa6a267b7ebaa9d67b4c6f0b3b6d92a7104785e4edea3793f223fcb1b7e87fb991c07bed8662d7c1ad50d7fc38e6707d60392a917f64976bbe631ff5824e78f7adeeac38f65796ef0013fe891876d3929d12374ec027e979b7759cce3c0da311ec7ee318f6ef7dda963cad39a68bfcddbb7d4f21dcddb5e1e7e3d3f937d7a26738de762027f436d885f5372734db0e98b779e92dd587e3cf2b3c93265b316f07d945769750d88cc9ef565f0b3fe39a83fbf27d6332d0e95ba8e15bdc906733161b987793ad0f3d9a1cedbb168cf79fab36e43baafab2da4aed39d6f3f81f5d28ebfd5e5195f9fcc55ece2bd9ffbdc8a23fd0a1a19dcc810f40e2bdbdce51aacb510be2ffeff4ec7b4b69150681a03710ba8d5724d672ab773df9ddfe373ef9e9dc337edc94ef4fd01e38ebf778bbfd09b77010c88bfde7cdb9cf140b2595a9fbea5f50972981e372d3f7a7b6f9e41ec6abd6b74e5f7b69e9f5df3d4ae239083e6bc59234dfd02d10b4ad323fe36fcceb288e7ef691f8a3daee930c80c58ef32decb942d016381b96ee40df25500cbd2e87d903babd2e7de7e7c675b746a8f63378ef85e4a229641f6621e7ad9a9f7ce3fbe275effcd7b3ecb6b32ee5fdff31febbd992b6a2f623c09c15a221d4deb4fd73cbee27d8774d7a9d5797b7a9dac8254124fdf5e1430d23a08bdcbf11c886f4457e97d5b47740ac7ac12bf9e4f5cd1b84962ca6c260a5a638c244e533cafabfa432b9a67817d88d72096b712f09ecd297cca91fe96e74ee690f31bbb835c3faa033a99ddd6cd0cf531256b5b7f9efe3ea78cafc95e856ff7a48b476521d23f64dd2cf3f350efd07a12ada77d84f5f8f672faa68f7f12dfa0b39942a2b7818bff2c690c2fad295cc5a26f2735dfbf39bfb117c8dfed7bb46b6e41c99e755b7fd4aecb468761b9bd4bbd0b928f5511ac931ffd1c9b437edc06d910cc878a75f58f7e57ef9ea98564a62f1af5885e8c017b8fec05eb3435d0b3d6f3d48fceed9a41bea121f082f6e8f8a61adf10afcb4d2a89c299c68ef4646fb79722c73a4d1cd3b87999f1f099de7bbfa2fb04eb2075cce9cdb1768f63ef7d1b1f02adada0764c63498f7b1f8dff4ee9496c87f67aadfef6bcb0c351625bbd3ff6a7394e6e6dbe3f9ba6fe44c99dbab159dbbdc378ac5304d90adbd742ef1b891063b68ef9e03e2d2672f0dd46df5716fd5212af85971dfbfe2b927bc896559fc7ed88c6c5cf8c94be96e85a8a478d375dcb09b14f17f69e7922b6a7dc3e23199feff5e9dbc852ced6b1cee8cdb7def818616f3d76dfa09dc303a90b851a1cbf1e9e8f6343b2b899367d15b6191bfa8b90f1986bfa61e0ba0ab995073db915b5c7d7e7525a27b41ee8f2a1f4b88debd452dfaf83fde67dac98dfe4637f2c22d4c253be61fbaeb41ff0e558688f402f3c4a96e37bec07fbd8e4d0fdd9813e025f8cc798e3cd88dc989235a50f64907fdb4e76b55df3cdf19b7b51b08f973d638cb7597f5f8d608e1f7ea67c0fd6f93feeb92bbdc92e6df7de005fec4f36f196a3cfe9f0c4237ec2cd317764bed218cdd74f631c9ed7e1a07f9a43b4bfc83e206b6c5be77f09a7de92aa097a74b613d8ed8f6e8ff6bfa5b4080b2fe2bf03eb083c5076c633ee22e9f1001ed73b741d60bbf6d1dbb763bedc022efd72ad79ea8869b8cdf8daa9f9896b5e8b6d5feec627b2ff2daeb78601df4cc6fdee8babda3699f307376dec6ffcef9a69eddd261e4e78a726ae98c6ee623e71d47988ec1c9b5b95f6c42821b79bf9fd7da44e09361b6222a1a7ce678dadfea9ce3d974b6fce928dbcc929b7d4b905d83f2cabc0166d64d850977a99913a6b05ec2dbb3f86d459120cf7e2fdbce1d2dba6863d75051c9eb8633dc0f2cf0b0fb8c6f0bee8ef7d3cf7d2e2fde24d0c065fcff49e21893c1b2cfe7dbd6b4ed1f7bda0ebe5d6463d169218a0f55cbba6f2e33b223fa3f75eab06ef3da62ff4dc69e3a0637a224803f0bd0c819c4febc0c6f643f2a195c34dbcafc56ab18ddd8dbfcf417dcfe1fb2d200672c1ebd72f908da689fcc4b1364bdbdaa572138bc4f6d9976b4e1369c9f007b5bd06c753e15e24f6c9a5373cf794fc7c7e0734dec2cb783610c81ed3bb6fec4da4610c146ceae173fed33392ffd7fba375d28bdf5e1c0bc7c89afd0976fac4609abf8fdd37c73c80c8b654e784aba4bdcf0ff123240b8d18c7f3fbeba95b67f8fbb996f22a89e96dbb980f64d0485cf4073f9e5e9f10a3d47bb6c2c05ea4ece567dd49d755f6e6e727df8df88de8fbb4b2cbb14e0a8e37637f799ba50915b324ebfce411bfa87056104b79fa263289176f49cc86be4f63e70ff6e14f6b2427e3fcffd87bb3264595af5ff803fd2f0ea2f66e2f8512c4a95b2c99ee046a8325a8dd8ef8e9dfc8b53293cc04abaaf7fe3f27e28df34447475529e49c6b5ebfc5fc13935a07c179a4f6400bfd1bda3b05df80e3e318a62b495e23cffea5d8abb1c60f91015f867f39f62efb691ad4ee2ed8aaed5d367d68d95c9249dc6b6a5b27c73c0d98ee84f6d03eda12e19ee21aac88bef9f23d9baf86df483f5c0e92f618db7b22db5ed3c01d31f9b6deef41a5aef7ca57e8171b27d8e5cfb59f81da69936ad73a066a27b826dbe101e9a06c5766b6075617153e276bf13212cf9b1677dd3c3687bf09cda376bf78e369176e7ffdefaed347348d9d273ebea7eb007d2b77d056ede7d446bb754e4e8b7c067e1f519e7b34649fc944d7b234c0b8e7cdd8d59297c375d64dbb69d53fc6657849fdfe71e69fafb45ec2b759e91633dd3a45faf76b32f6b6b15dbcd3b8b0c74c77cee97e710bcbf979fe925d12db2d693f79521939a12151e95511e429a1af80fa358f7160b05aded4e7dcca2f257d4fb01b5f93b228000353b99f6b72afac733ab3e89db180e6c4c1eb0974e8356057ae31afcc22735cfce6b664fb7e4cba28cb2464ecf6a248ba8b6bb29f67688bccc93a1751b0d09cb191a776fe40bb88c673cf043e7d637e3b869dc373b2593cf46baddb4776c16a5ca09f60c5f0a43d517f84f17dc6f7a90def92fa9d6d44682f990f1d3b793fb12d6d339e2bfdac413e23fa9c3087c7c64fcf2159d3baae00c54a5f537cf75d6d8bb7dd82d65abe84dd1ded97e5e4115d9fe843f55e45b677a2769ccfe5181c0fcfd7a735ad84b569d86fbe201b319f0ac34ac9a93f6c51a4b25d601d778e45527e7f6eff061e954b7803924e5cebba945f0caa0dd44e967da660e7019bae3c9f445f5c9392e827fd027219a92c1dd905e00a44a6b17d5b195aaa7f071ad3b40bf7afa9746feea2bdf7b1c13b9ac7f6adf5ac84c1a4a0794d8077006318a747763e1df3539b005faba9ed1ed3b2d845eb49df1ba7d70f7c53521b028f106dc9725baa1eafd804e07caf86d79fab61d5909b24bf83a749b611cfbdfaa557c5545611f74cb145701924a03cfe031bc4f3f3d294a3e4b3cf631dc05f5bc70b107956af6b98aef95eba506f685ad701c2b35ecb5b79a82f3a7180f221d703dac7ad3e2bcae41fdc29b788c76eeed9834d144cae42dfb466f5f0b0ae6520c55e0ef7bf4be8e91af24b8687fa7dfefd7bac7b65b41d0e1c33bb3be689d2182b4e3bda71d65d1c23bd93fbdd34fd21fadf416631aac87721c73bee4ed05e42788075ee06af921d5c904f8add9bc9e438f8fdbbda8eeafb8ec6cabc78ff21a159c033d0bf30a8886c178d7369ac687bbd6ba177d683159171288dc6bf7f41eeb31f95e23b60e7e6be92309b8e13b4b5ab6741f27937ef4edad1402615d654b48d0d44fbfb47f7cac5f7194d6dfaf56c3c27bece7d3aa9284b3ef19d1de332adeb037b8b43dc9d688457af090d33735e5758d4ef9ed071c0f1c0dfeb5803e0d1d699f165694c8ec9f741febe3ee32ecb03623c712afa43c6e901f2cbcddcadeb88287122f5397167fbc561e3471abfa7b807afac8f742b7ddeeeafe5b12ab93ea3be1b45b66af5a94875f820d620bf127e93ec549ac57cb4fd9fde68fd8de5e9d3fa185dcc91447f65a80f2e895e409e28a12ba9bd3b47bebb8f82f909d76671a0b112d768ef167cdd28cfdcf8e905e344800fdee2ae4164f0ca192fc8f35de05f663e8e02e3b0590d7e10b932ee4e7efbe6eee28c98dc525ca2ca20f4ad4ff6d0197b8fc893fba1f89f98e36f77f2b715e603222ff61ed48f0cf8ee91ededd2c000595bb581d579f7de6eb635d67147ee07fcde2be31cf99d6bb2df65ab557aa63c7c17f96e27c1b11ea26052ccb6bd8bb0d71cab82eeadb83784573c892f11796a71d9501dbbc98738ad65fa53c67429c2f344ba43e9277d0eefb0dfd1fe4259d13b2763b78f32b72bd05722e3529d7f4d79a8a9dda576f5621ffb96fc0ce3b31f9c55ee13d7d01e9256f2fd8275075a61ec36c1e21d6bf215c2d8c02646bed3080fa176b1f35c89e7a23215c6658d13b00db2fa2e627d0188a1370d6de3770a99eee21a107afb7365d0fea294f0b3f9abcc3bd6abfe2d0d1687e958881b5268be30af77c0ae2267a7a3f004b14fe00df4ef42cba6d5f0dee00db887bb485f67d3717872c6c91165fc51537eb424fec5e864b7c1bf94b971fecbe718b6cf91eaeba24ff7495cd27b6c0f1e910fbe8ebf82f1849cff2ab07bd7e9f69824d48ebff27b59b88278a20bd1dba0b603b3d7b2da0f988b727c837801d1e7a1f80d6cc04666f12944f785f89430888aa4b4f69107fd139d99c93d755cc7b8e661a86f66423e33b643dba5f524083d1d6890bbccfd191ccf84f54379418fe8191d369ed81f54a2cf431ef38dea1338cf646b1c691ca21657a833c45df700b49bc6c1c0da6e87bf661dd2afeceb16f640b0832bfa10be8f3ccf1a511dfe4cf708eed789dc0bac79a4c86e36c803cadab5e8eab48fcff46fec93e9acc50362233ed287eb73f5546f15db947d307fd0f63fd35f3f7e57f4bbac251d94bedb67636ff7c5d2b9b1b5fd639d8abe47f41dd997da9405e93806f29a887cece95c4499b3e27a1cc76885be54be56fd1b1d2be17cd67a0fbbde1975bef5a1feeea37928ef48eb0477c1886c76ff816e03864552a1cd8dde63b8ab88917dcba2207f8fc7de6ee3f7f784bf26c2fc6a5b136b473a9314cf196c51ccaf2fe66dfd8e02f0d9d7f913283793f7d2bf57bb4b5416a7d4f62a29377f1ce5b1801b083e757398ff7cd5b2d9ab3590d610e2b916456a2a36ae12ce31e40831fa279c271643c69fc19ab38b35b5170fe439d7b67865ada1a64c1ab880031263cc21d0c09a8610ba0bfe57383fea18d02f701f11fa85184e8dbe2bc4545b1f1ab95e2be32fc13e92139920dc1af2faa09c8276f051ddaef3d2cbe6a67ce69bf74c3ebb287f65870fd6ed0cf677f37bcbbc767f3956dd97e8174b04f95db19fc8b4d2d398afa512e4bb8ad9269ed39a4fee28c7e792d7e399ef6ce3f78f942e1cc5b13cd309f9fcac118b95e4faa74c473fd4fdc47dc2b3b31d0ea04d3d3f46fbe541be176de3071f028be33fa4db9b2a07cbbc576c4f595fc50624e8c86df4fb533d419c1bcab83af5b9819f6f789e7f7d2c1fe93c47f5bcd19a7d643c8a6ee44acfb5cac5a6766fcc93cad8d8b7d1457b2bc393033a8031c96551119938b58b3393c7be2af38be3126d0969b553d6bcd35833ce5bf6f4efe7f27111d2f8938dbf207cf2a98c8c366aef9ddedd63a813d9e56bb26f44edf109d6afe472972cdb5a1ab56f82af86c9938e6d5dded8be6d596e0cc7e4bb30bd7eb635d858aff0ae1473a88e3ba7323191632747320716af2bca69ccb7549f5df079d4f4f5897cf907be1b51bea2f977924c22cbc57fe6f310db7e66f77a44812bd9a1455bed27ef7ee8fb10ef6eeddf94c6ffd753f9e7b93cdb2ec77d668fa7e3403ec2d7e48fedf235bf9579a610cb7d8c445ef0b98d52b1f18b77bbc53efff93cdaecf48a9cd7c9df46ec6cca7cb6f65b425d8f03ea3ebb9ab74872dff080b55e5a79808e31138cce9f8b374f939f4399e51c0639c80fcecb8d8cef345d19c2671a7c26c9022be5dc7c499ea8dbe46dfdaf2cf1bfb2c4ffca12ff489680f812c69f478893fb0ab6d3e8180549c66b94efc1f67f8a21e60d638c2258efe2bc012ced7506799b14a729a978cd6cc673e8186a3964695b9dd4cec9ba1871e95691bfcb56baf5d8d88b43b81a1e42ff9c1399212daddfe16a97cd2a017b514f8fa99d7742a8ffa85d43bfaf93e715dbd593f862c819c5d895bd684b9463a8184e78acf71f35fd15efab1067de38077c5d05bbeb2173754f4b2a9e37bd8bfcfe03e2a24d1eef7ba4f137303e94c3acf774ece5b1a233531f0bf82562dfea6dfc4e2756cf9349e42e5a4b0df7ac88ecb448aa5eb65af58bd9b63916e76594c5be97c39e835d82d923c18723d95653bdd036a651606e1bb55f8ec9de6459e8f7708cabbe726e87d9746b8ceafe86d98cc7161a8730986771f99dcdefe258930ee0ebf8eb6fcee8fb61be2adada6bfb8cc75db318eba4f46e49e93db04e87e82fe3fdb35aa29da45c5fdaf6703936f2a4b4ce357eb4b773ccfc9a8c793de06dac0f4e916f5d30a610e221a17632f04a9477797f224e443a46d92f32691c96d807b3fb152d7b6cb57c366276be3ec4c6c7fb05c67437730fcbfaf73c079c4cc8bfef65afa5f583ed6baa178f68d5cbd654064c2ae1cc207d2377be315ec79ef4ebbcc16516ee3d8ddf9d3dc46543dda5371a67c6eae20bb67ba0c1e1aa5e57c74cb564ef1513c4f5bc85c10270c243ff7e8dcb849d4b319fb46d2fafea67f55886df2439d6647ac67db7092645d8e5f16beabad771b3684f57e36641ce4cb405e10b9a280b4a6da04c25613534ed3ff2ff3a57b79fbfbeabbc6228db5fe4f11ea36d2eccab681f133e5bdb06998ca17bda2bc66a627d1533039bd294d10df320fc0e71b1c71fedeb2662e37f3ecf1747f0890831c9f5da66b38ae67606f36cbaad7f9fad86f7e9eac9da8bbc938e4b903706546ea33f218f05e38289ee09781428ef8af930915e10b9aa4a74ef3d353fcb3d149eb5c89e2cff6ae6de359e39c4b657a6e62d4bedc16d661a149fff06b1e6a93d38cf4ca3375fddb2b7d7d1c91967d5cc34faf32d8fc1e4fb2ace636adf8b68bf3c3963f79a002e01f6f1599b7f8f79bee191d0d764bf90c628bcffe5713e6b33298bfd66bc3c39f6e49a8edd6bbcba65fc333aeeb717d2d6ee0e6d6f49dbced119dfbfd75814c29cc79363a4e71ac455748727475983b6b6c4ba0b54bfa7357c6a5c17f13cc425f3e1e0cf09cbb97f121b1c9516ad539053bf9227e0cff49378fbfdea8cac536c0fbab51fd105cc28c4d398671b1be212c87747220ba47a4fc19ac99fe48ef13a44849695a10fb81efd965c58fedd54997f4b1ee25f352e83b5833a4c5be314faee2e0a9c53ad0f0ece897d2f527bfd0d621803e314056ec1638485cf9665710b8389b6095cc8e783faf1b6a745ebc991c801a95d68519d07bb0dfd3bd87ea2d1e4181744fe247d10dd13fc00bb65595cbcf1a410deb9119df1c7167f0a63382625f8aaaad77a2eef9b600276886477cf239bc8c27721760972ade167dd4e5a6dfce5837d3eafee359e8586f1e43fb6f5effcbd719aa763f7b1eeba55ac93df0fdf5a3e13d6f47e4c02af58ea4515ea775c2bbbb8a7bef742c61cdb1817ca72be9b3e2d369ffc22e079fcc25c3a2277b0efb98c83326d2d6f5c101347035984ed3fb623c857e3f30f94772703c706b94394dd64ff51d72d92f11ceb9d836c43c740c73453f07ee2adf1fd6fd3b8382f37c6573fc6f4b16edb15e818f763a4c8e114af04f1ed5be25868ed3a886190ef6e769cc9f115757cb3f90423c9ee01effa510d7f4ff59d1cdb632717727f2846c07166428e05e1b762fcc77556f1f8952aeea6cfdebf907737ab5b166f87bf21a7a51adea5b84df3fbd5192f8a501f5ca28fdb2263a1ed35c6c2eefc3ea98c476a7bb7d658a00a308f28be06aec1cc1c56e4bcc45bf463499811f63d871816722e4ca80988b112ec7e765a7006ece4c378dfe67d7e76fe6b7a50df155667b7c7ce2aed1f7128a41c518dea6b7b2da37a36ac0be45e28f398a9e7bbc655ba203e4d2ffb690e6fcd18a0ffce3997f1a9b8ad670f76543ac6a9dd93ce35a17f2216d2dcbcb5ec6163cf4f54debb5019521c432d933e3ec22ea9790519538dcf803936407b6a7ec3758f95defbea5e29ba9ea4775359bedec3b0d917ed076a0d3ddbcbfb57f0ad027362a4a641742588534bf5ef5c1fc17c00317f1174b79a5f327dc5ba6d9fe090613c0d6238c87cdedc9d647b96faf7e12fa19d560cb2f8bd8935563f7b803c51b4879db2cd166822e2c36dd5583e9a27bac25884e6f7ad74ead754896513e3f1a4b8b5a61d68ff515e42bddf9eb9098c3cd9bb47b2f770b66dedd3f3180af20de7a5a353166fefe7d996e10ba1df8df141d60eb339323988ea100fb813659fea7d424c183d2b9c9fd6749e8d016a9bfd4fdc0b36566eb311c6fcb18ca0a9f69d16fad53a2726a70873ebd3390d121127c8f17b9043edf888cf1593f3f732c4df57f0bb126f4beb40d9503784d5eb4d9c1d9385a0ced225d1c11649efa6883ff774add0e63666e70831da24cc51e6ab459fecc57931fe2b320ab9235f90539a988df5b3bf803fbcf3fb9b4d2be38c32cda1916321f381ddc9b10fcf6349fff04e626ced133e6e61dc263b87d4a67471c60b2d0a8c07e3bd9fc9ad0cab186db94a6ce70a75892fd0fddb17e9fe84e14bb6deb3ce7f85a68b349cf272f42bcdcddd33fa7eff84be4b32c16605f2c0c9b177ed31efcff6b729b7812ef5118d75bb93a38a650a725a39e812bd053032c0ee7defc47effebfb0e716dd0464ddb643eff948e0196b53e38a57ee7f2c1fbf279a1f2019e19ed4f64858fcf0cf60febc8f80ed44deac831dcff5e2e50e6f2aa0d9c975136d98684b6a20d54a527958085fa3294e84243ae57758a7f48b7e059a05bda33b9a3b6ff427c20d19d8c5fa0abbccbb40de7bacb7e6ef17eab3a18f849418f2373277ad80164e0e9eb49924bb8acb31dfe0779d049a19bccc70b7a1c798ec6fe11fd69f757bd87d27e8af4e18b3236da30e87d3b39e343eb9d9b6bc0dfc9bdfbf4be51fcc66f8e8d18e80cffb3d6b76acc9b574a6bff5e19178c2f9f5cd3ae6817e03e948fde3d23ad5e5ce3b177267cf90fdfff86efb3f1fef3fb8bd8cd87ff91bb3caf9ec9f9ff4c269899c66f512ef8f81e0fcbc9d6f846f370d4b9b5f094e7ba9e724e29cf39319de237e1396fc8737eb7eb145fd13feafcd1cd96e58d927d792eb7d4f82950af83ace36f6aaff8456847431fe718b46baee36ce059908f4eb4568eda07d3713ebdf7b3d5f0dedaa6a9dcff7f4d4f089dc2b3dfa453dcb7f59bc7345732ef47ba7923f498d33b326eb2a7e8b7a1e3df1a67a765ecff357dadb44e100bedbbe6c6efaf11afe689dd803f4b64efe2120693be33069b722d37fe13fad54243e4f6bd563d85ea255fd445b8bef15c5615ece2ac5f559750ed3f1fe2d8a36dbf13ef211e6801f6f4bd714d2bf0f75cd467e91d12654b364fd137fa442e183dcb9b84fb5cdf4f9051e99d20fc1dfd8878bfe97996e907cd4b185c21af88ee95421b4f911f517f203cf7cb797164d987fa9b9467c0defa91dd0c9f653eb9dd53599a3d477d627f264f2b77222e071cf7a9ddf649f55a1a031297df197ef71f9cf9868e44f9549b2d3fff231bfe6bdbf9867c33ef1499c6365a0dff43784143be2dbe72be6fd9a6e6a37f62db92f89d68236fc5c3fdc44e2dfb72d687dadf03f7ede4d88bd326b03a91b738be95eb767ab612ecdd5b5537a2ef832da5ff486d2f8f4c90318e7189981ea96ff1b8a1afd88894312a7448ee6fe3bb05f5b99d688ef7b3f3c4d6e275131c8ba7f210e0a2acb308e262f93b355d957373f8fa62ac03a1b3a3633b6dcdf6cf6ce9ea7c897ca9fae52695522b41de3726133ec1a77b46d3e5369ef7abd805ea1a320d59b0c516d4869326af5b4b3d09c734003b392edd177cb63ebb6bbdf84665825feaf995fc0fb84747215f4aa4c562fd0c664f2267523a27a86f1d32b9efa67f42cd616e6dff6578aaf33539e6e183eefb612ab4dbbce775bd98a025273e0c8c5be4f7774b3acee918d6e344731914dfe0736cb684cceff599cc2bd6ae60f489c865d8c7533fd03fee4f7cafc5d68f737ca277b7d7da10c67b0279b23200ff7cea29313ef69fe1a1a4baa5a5e3c56b3a9e5c23ddd2deb6f985e84033d3b8cd4ce311f9223e94685744dffccc5b684939d88781fbcd192fcea17f3fcd82f49a94f79daa677e666bc29c9e367bdf87f4f1b75283e198544a7ca7fd3ddb10dae25b15e463dbfd62e3a787b01c545426058c59888db107a7584ffb1f8e753cc4b18e8d2ad62779581675be119141f402dbb3715c1003ca79a08cd3db16071c431ed2a0da7433e9f7b0bc5fc3ede01c060b2d0a1ce9bbba361799d3a00afdfe2ed63b7f23cdcb1fb3bdd16fd7d74fd9cf772d8bb7bba7f59236f6e09ae8eb2cd13b796cdfc9de641b7d78714605ad570fb820db68659cc260b28f20c734cfe36dbbef22b4fb19a7cfb24c42c7ad3dc5bf4f4aeb12d983f3a4daf1dfa7643dfd25f82f162f8e44873ed4ff51e7d7e2c7ff9cbc83982d834b8c35620ad1bf85e7f27b259d47b936d425f28bfdc69e5c93fd02f9ff8b96bdfa9606f94f645fb6f9efd9c351e21ae83cb00db4f7713fa3d8d7733af4277645c0bc843a6ff92f1a1f914d56c645c18d526ce33732ffcf7d20109f81772a5ab1b86fa47dec7e61bd2c296ee21a778719e0a76c9bbec0b83b019c9fa97dcf43d487d05e577a4487d9228603d1170755647b15c35cc19ce242ccc5bec415a191f712fb341ee41dc7ee74e2b17b4cec7b81182510770e716d515d1f44f00583cef60bce9a308675cd637efd3b9b0fc813ec6e5da0d6e9c8bda6fee414ad32e4670d39839f415ceb174dd00b3edff72776a122edb857d411f1eececa7ef1365e1e62291e437e27f2ddc7baf4ba84169077a7753b839f2b3a3eb03726978d6d3da8dd193e277a7814a4ebb8da1d7f34f82cea5e84c7251d76c6c0a6b747398762ea5239a1ce67427d9dc57b346d66ecdca685401fab28488f50eb053148b95d3ca5f902a93db83a76278ff73b8e35db125f0c75a6367ebf1335f763a03e4fe88feb43aee43be0c6d0f33af33f3eaf8dbdd0f3630c7e7e793fda62721cbee680d19fc7a57b8d57fd4b14e41a8ba3919f1f527caac58aad1160e7965ed7b3bf533c20cc6d857a52583b8dcabe4c26c233315d35cf51c37687e71a3070212eb5adbdb17b5563288086ed2745ec0ff4682dd6406bf629db199531fe7762333ea8e120ac3baf3f50d76f716d882f78277affcf27b511d8fd94eeaaf5f1b3abc085dc29429b08ffa632c824c51ca46b82719890c78db95ad4bf16ccb344f78ac8f6768e65ac5e7775ee03c4fcf89eb6b107bbe45163f5030d33b323abd148ce966b0f3a61792fa666c1f2a7a45a725c5eb08b4b32f6b435e953c1ef857140ed21b79fd81eda03f64627b550c6c0bcb994c9357be7e53bd1e76f69e0be123ae2bc1cb2a979463d166a0764bc1655ad13817e3d060c225caf03f65bb4d6c07305d98eca3a35de35d092fe03fbd670fc422d3dc9475cd76f7dd4f712e3d0231d309b98eccdedb4b0661c936878833a14e5e294068b630a76171768d69b8535481c332fdeecfafb677693d8b77ab4364bc6ed59d6c45a7bde64bdf346b3adf133f60b2d459c398a77c7c787d87dbc56148cf747b8ee417e6eea7b1c6b696d4d7eb8951007b3c35a0a701eb7fd5b520eb4b84bf67a8d7c116ca0c093584cba681764ef121984cbaa113d77ff78fd5e46d9d4f67aa17eef247aa1331963ba35d6386f2967e241ed898fd0ef148e6d3d9c51274f05d9786aee687bde0df0dd00cb0064f56bea13bd6c02714311e0f6165f5f1b2e33b035724771d7dbc6f65a59ab83985f950b678ddcf793b04e9db82ca02e583cde816ce63f8627c25303f08d7c3ca6d4ef1f85babbcdf17cf06ea45b9da4bb38867e0f729bc2c07b247a91836f5bb97fc2b307a9f6e3d8a3588ceb8ce88d606382f1d4750097e5a0375b773a546fd2847a7309c3fe0a4b0bf2bea0dee5d8d592f1fcdbac1a907b59c5fae2312b17447fab00233970aff1b65f44e3f575535a7ab8fa5ecdbb9302701af4e21a6f07afa9edae98ac07cf0898d7c9f696bd99b7ec8dd2a4c8fe2ee0fb836d0cee1aca657c3d0fe0af7a71306e9b3fbffbc3e7812ff4c8f9783387bfc9fbd3add1673c4dc81daf9c971ef85b09bf4f6aff484b9d888cb4417d2f8b7bb25f1e66af4efd5979bf46555e4d57830ae8700b7d6dc8c372cde782d64fc679eee1effa0c58932ba15da9694c23bfff7be3f71f936af8986f8ded2658624e8e9f92bd2732c641bccb68173138ed9e9a39fe6e9eb2f938eb46feb2b3f097f7c516fd9394377dff690eeff3edeee89861361fe765c4fed1b80ccec3cc8cbe63bc392f462f7c24fadc9f57737d7e74ac5ec6f4e69fefbdff382fa3fe94c8efdbe1edcde62d521cdfa763bc2fded7fae23dddce578d3176febcbd7c37d747d5e27da987d52e0bb6527bff607c7919bd24b7c54bf4be688eeff147ed593dd2de76f1eae50b3bbcfd5849e3fbcfcff75e367f0d8fd3d5b0246b5db718523f0760cf5e6af94238475cbee3edc96d6c2107f0f6f632bacd5f86f0ff492d082a63d7fcb8256789de8be814eb449ec07135ee80791079b4507fae77e5f5a6586c66651cb98cb735ae29d8e9b1cead90132ee4f1165ae4771e342f1c9e433f19e713d7a464792f87ccb38b33e66c436c770f6d6d842fa61db00712f945c0a47fadf20b95b99eca8082ac7a0883491506bb13af63ebb171c8b2616c0fde43ffbe126c54acae2eff0ce855cd87c55a46da5b6014982b24b5c3e48e1c6b00d5f441aa35f4c4371376bd476a0fce6b26afdbee350a58ad502217109a23c4c98face5eaf520c8cf8a6cd152bfbb0517ff2fd15702d81c2f87fa77f32eda6f98fc94a1dd787148fda88c692e3eec3ddb77ff4ece0b919d6eb16dbd47abda162fc4063c3663af8c4ac8f9e2bfe3f8b427357cf34e5446126d677bba59ddb2cdf696a52f6d36408657c8b1f868de9281be999753365b7554bb20c605b7ee71ce7399d04e45649efe7b3cf61e9b202ac4b828f0cdc2b92ce24da1c9fe253226effc0bf084e81afa7a21e1b4f377116f46fbc45f8e6d7e583397e1746650c729b62779a89ffe9f5e4fa10d32b653585aef9b2ad79ec42643ac07a535bc86903257b11d3aaed32d58a9312aa8ff73ec138c23a2ba02cb7d051c19a8cd81fe90ce2d0cdc63edabb8e76f7e8d7331377bfa6c9f65b15d6c93d2aade56bd6c150036c629368d6d44ebd425a5778ebb119129ea3c2ed80b438f82c983e537309f33daf03c1d7319949a8d751dc1222dbd4b3aa6b51f8b563b0359f76de82f7ea7ba554523c883ca53bbd8c6b667d1f75b72ccc9393d77c360b2c33c144bdb101eb76663126abc627d916b4cf41d7bb09f5ab72dad757b8e02f710eb4bc4d216ec2791d9cbd6f6bd08834541f501a8913a2b59fb84c61697a4eb16a1efd278233c13343e7e2f9e810fe223d0871d44907fe2f21ac5607fddcfcac1a5bde6739d1f3eb5934bac47e5579e8b4ab085024f126b53ab75649ae351eaa3f3bd37f2783c216b407134a0df936317fbb81c54dc7edf5ef794e816455c2e253c8b69d337de125749dad4c41ad1d7f8fd904555ff1a6fc51aaa0b2dee0ebf39748df87dfb0a0f0c722df2fbbb1f5b3eceba5ebfdea36df6f86750f3fb05c710959194a7acc4c1b0f60e8d3ad9cfce35d030e16cd7b4e8c9dd5943acb68bfb38df040b0dec525bd2ceb33efad73a065cc0612674ab9be649e9bed4f4e65e7cd966692d6e093917cdba612b39f76a942576de4ff4e23df46f59d245ffed6c6bbc26e309ad2b4a7d6ee379968ed3ab634fae915d144975cb36b6f540dbd132637498f6f348eda28cb0162d69a388cae818ea4511ef9758b3cb1edc606f4aebe48c53f0a5a5edb536d9580e58f76d728dc63bb02b2fcbc1ee6d75e37dcf4c5637e696a53af87f3469bfd1c6c7fd30427bea33e88f617dbc0af51f4147affd178e2dd474939ec1fa2dc02f61fea118474375603a6fd94eda055fe5b8dd46cae6e5bc1cb086c05ea3f5739dda1e4ceb7390ffcbd2aae2d27b38a3bc9302667f0770b4291ef529d207d586d0648ab7332f97b436462f5bf9a0279cc91d08eb3cb85f28dfe6641ca737a2638cdd63ec17df88ee30b52d3dd68b5d521955e42f3a684ba17534f439d40248ba8b4e426d9a4c07526ad8bd27551fce70a87b5aacf72e91ef76663ae0f33da2607e0d83c9fbc62ef468352809af9fbfccaf61777e9fbf87d730583ca08e880fbcec1ad23598f9640dfa87d4ee9c44defa84478a58d80ccfe951f3387a7ef7f02cff1e63f4cfac4634ff1cb13d2286ef59eb305d8362a4010fd769fd64a8d3ca62b526d5f0ff08fd810f3f2d292e11afa921f4b5770f51e0e680b3382e6e914ff4c3fafdd4ce0ba8d7d672be84f1681bdbd342aca778f9c1eb8782bfb61b097105802d627b55ec171742f736fe9ceb6eb49602d43741baff2fe2135e46fd1f2fcb3adfa0c67797eb6b23c6fcbe8e1b3626f17e51247bf735b5894cd8ac79bdf1fb8f289868ebae4be471f1dd63d259e4b1ef2de3ee82e656b6bc1f2c5e43bf53acedc183e6c3ee051ecfe3e6e8be0ddaf793f7d9496c374f6dcf4d7daf13a9b510891ca47b554aeb1e224ea9d77546f2e7629e15dff355f39c9076399fc5bcfe97d05f1c9afd727cd449bc5be4a19e831f79ce6bd01955ac0f34361ec43e1462025b783e5b77426737bef7f8017e22d82b33d6dd6314cc4f750c08f3c10c45fc3cec93e73a87d926701f504b02f95c9beebb8f027745defbb115efb95aab8c8f17faa875bf5a0e4a03631702decc608775f717449fa6fbb7aee51776af1e0751a706dfec2bbf73b21c867145fd22d5f85969f8c8b10e18e71d9728487fb6d21ce5aeb7f99be5f329f55b9fd10f7cae4c96ad698edcc633baf3048f829d57794ef4cc2a313172bca129d57c25bcf0038c8a363999c50ec2da7d137e5762f5e958407ff3b450f43fab39544f6c2ae23d11f696d0d8755c19795a0e8e11d482f21e49d783ba59f1d6182f390d065d89c62fcb71bab1545fd07b2c75eb7d637b718d455d5ce867b58e2e60cd293a35c659ecad4ee82f6f70c7f7de49ca41a2750c93c0cba317dcbbd4bf9fc4bda278caf7d4b77673908d01d7fa593f8f8ffa0941fefba08db2932758ab5af87b110ab8ce67222bf84adda9fa7dc0faaadfdfd7b919f47da2eb08ed33cc31a58e55a38e389f033ddf4926d24a69ad182d16f08f577e9f7ea6f1be5bed52e6e97773afd72d3a32c5247f9e47c0e819af7987b2b7685705be7ee7fc6aecdd22dbd222cfea448157887930a9a82fda6e4ffc2e92ee9851cd4ca3a4b519c5cfcbb755e333ec7b2dc8e62f23f1fbc7c62eca74c46b3d8adf415daa95eff678ad3f6edbc3f1fb0f23e539392fadf5fe94fe5b6afed57b8ecf7ae77a4c96a6e440835e229d2dd45344da85637ba5fa8f63426ee55f4fe6fcfba7e84314eac3446554e019617d0e0ff46e81dd42d973b17db4c5e1b3e5646bec367e5412592f46fedd6fad3736e2b8a7fc4c73fe1dccb37005583525fb6c8ab129ac5615d4e9abeb11c398951c54a09f02f6fb9ae6eb227f766caf47640ec8cfdbef584d2c2adb2c59fc33d4ad26739899ac2e97bb437eb290780df89efd0ee487611c078c699f401e06d68a0bf5b51c8366e359c3b5ebdfe2eefcf2660ecf0ec32047bdf492d883c76c9f29bc097404f9ddd5b37795982af41d4b7ede087dbf7046a06df340eee1b1117f48e31fa97ed28a2305b5b9219ed638877e8fac01c40b443eaf81b40ffde2927497d91bd48c328498d0be1a278677f5a3984b93c89fbdce7435bc3a2feb5b333611d76aaac4cfd5314e900b7b9bbdaf01a774f13a6ccc096c382c36a46b55a9999371fd823d344f64ad70fdd498398916d77c1dedcbc5c319c3bc776130d97119836227d23843e10c631df5146cc975bde8c6ddb2277d673c799b634db7471844853376bb7125635813ba15f990c357c5be75da0447b0f7d0b39aa580db3b6098626c3f74b09bd472e22f7ad62fb16f3d926af84b3d83f4f32b9c1bf340d6f297337694d845a0f1bf7fae0c1dcf9e7adea3be639e06ce38c47596ea056b59e4df890c847654b03b41ad7aadc1a3ea3df80918effbf498e8eb93545f6cc5e38db48dff3d83b18f9d13d63606f9eb21c40e7537beab6dcc3a4e2529bd7d8d4d24ec0bd117c97f1d31f5719fa00dc42f2d012b9ac5b202bd49b642ad95a7f555d64807bcc61ca10da46da80fb39a8651e09c633d3cc3de283589dfccba1e357e9f65b34a96a766754d3da0f1b3bd714daa7e4fad6ffcb652dbda7db5adbed25625c4eb3f9260a24de1eec159c9a615f445ee635faac52bf0a8e4496e30df1f6b714df693be635bdbb8eb418c17e4018ebd5b3c061f05605c39a35d16d983cba44beea1754911278bd5f7cb621feadad4b2d37ea1c63493bda138b7469eea567fb635a629d4374c73c27f52fb3bc49e3863a3484a88716275698ec97ea1cd542c67ca4bfe0d8d637c5f8e2797e290cececbf0b200ecfd6167dec41ef8b33d7aaa43c2fa4ca2adf120634db6c3efcefc5b6f661a1aacb1c9621811f318ecc7acbe10ca0e8f8ddfdfc7ec5eac6ed4deacde71afc1c319eddb109e1d10fae0b21a94224d3bd158d93cb2972c063d8f7dccddc4bd13e5a5146afda726a3e9fda6fe4ef52dae5f985cbf807c71e06d846f9b54cf6cd2344afb798ef41171222d2df23bd4e63eb9a6e51a788754a319fa49093f384663f740e61b8f8bb633bb8dfc459e827f0efaa8223f65b96f8497119daedaf8d111b0dac71ecb0503dc039a1f2de0c4c96b5fd730051a8b725e25c89328eb15e9382d08df4a0388adc852bdd8416e79d7c93636dac61bf7036b6dd7f655f320e97fc097a43d639f7fcfa6638881a3bcab253e7d9f412df5748bf24053fef880773dd30d9ff1a9f1a4c3e361b15ecb2e0d2605e12d346e518ffc7b1febf7d29c1e8eefafcab7e45c2e88eeb223b2ffac68e69a907d5951fe043517f47e1edbf7be33f62e513938419c39da5732c8a102bc715ef3fa11616ddc93335a2cbd95f1fee62f4e505356e987dab904dbc1b03d1784e9625da393e8f9241ae7a9a08ba34da14197daf4a493a2270d9b7ae093679ee09788368b961acb827eea9d791f81c01fa9cde4f97bb55edbd0e3b89c3af61e9b27ba1e97475b705d649b4c1b6d196649e015a9efc5bc0f4b13ec2230efaa754cf8de9cc5a990bba2d6bec6b1b13d7df64c3327a7796e9af6d12f9f9bc7ffcd73f33cbf98db66647ac47807b66f47359d51e46da66bbe614deef2e35824ea2f18319f6ebea536f7463cd21bdaf368eeae73795d5b61d0898c57cbb344ddfbedf58bcfbd38ca73c58ff6f6bef6dc46c488b13b39cab16c5e420dd8da7ec26cacac466b066708e50cf06925841f42ee19d4ba39c5fae037e62303466ef1665befa9691079f112617ec536ee22cd855a39148f33d4efa26d16724163df12f690db908eb395d656a39fdb0a36bef7f0f5226d93b931ce1a6c46741f17f1c6d35aec0078efdfcce177679c35e9d538bb93fede445a2ad20ea4793de7a547f6b171e7e8def69ed5b1479f05e040f49b35f7c967c381335671a595b1af86ff71c6bbaa39f61dc8a1b28ed8866107fbff4af63c298bf26dc575a94e5cba8f999c4f8d7ad138ab886cf626db1551cf21fd92ef5e470a4e870beb148d157c763ece11cac675fc8058f744bd2f3dc4fd73fbed18464ffc7375db4ffd73d8d6e41a779717c41082f9ded5ef286e108ee55d6e77b677af09bcb76bbcc7ea79e09c1d09bb89dd07b0e5d47e138e65d6b435d1fe4a6e2315cf7b0b0ed507f78bd1403317db38d17137702d3fa4a3667e8982b461f7547ccb17c0240eb04e5fcc6b9888fee93ef093298e01f31d35b4734a39f92c97d4b4d4f78f89e69d93b1db9f9aeab983f3fc80e7b4428b7ce0e38dfee3eeb081d1c5fd4963f42faf02b720ba26c80032ce15d84dc15e0e733e4f52db3bb7dab0590d06e4c5dba7366321a685d667b9843ecd475ff5328ffa61a96e8235b34d03e578c093c0bab2586716f4b7a62da4927533a4a7193b5fcfec1cc81f5794df3cb3bb8a76904ab18b54e44e0bf6324516917c552df6996945c7476d2ad3ada18e51f47f452dfeafdf4d3b9eb24fccb65b7aef693081b860cc35c3b34dd717f7bdd643f3646c5431c49581de0db256525a97d46cb6bddc7b1ab371909fb5fdcaba117d27194f8eb8c744de74abd0ef6baa7d1272b3081f17fc3ce873b01e49d73b472bf09be64959e3a23b2fc37d52e1d89ab615c507883ec153c346cce92297a7a98d07f10fa3fd126c2ff3edbd99fb2ffa108186369ed9c65d57c37819de3eff6c5a411bd8fe7bbbfdebcd24fc72c263e268bd8e6bec7bccae59e392fad6036c2b5bc4406fead3b0fe20abffa47b4a65df36b95dc0bc83356adad76b9e22d9419a3efe862fa24f782be32d7c5ed45f146fc1b6a86dcc865fa11e3319577d5e7e3b2f4e4b2cc2e046e52fe8a7a9e30b7edfda37ddf26c334e81d687023d1c6cebbaa72d81ae2f39f6653d3e95a620ed0cf1f936dd87fa1bd622a68f686f467f02dab084bb59fbd952dbfa1df9bd8b33b27691d562731a2f3a6129e0b004cb867e4fc7c762391087519d4bfd5c2d7fe0bd79fa1cdb17f2b3b927b8a6a2cffed9f963ed8932caf3bda6edcab247bf0dab23f9702f6fac5fd517d22afff1f586d87af718ef3dac5980719044f7a0f7b7783ca78fcdd8315633968ee5c4fca9cfefded3f191b31630da9a8e277d8605e5d8d68ed693a0f56abc9c6152cd9afe31d2c681faade87ca322d92feb1aea26f30f17173873aa3cf0c4171242fddae292fa6bf0e5d2f175e34a8d9f11efe6e0148d9ef9e29bfc5d8d49617659d956ed3d1c9bcc0df04cde01bf95e9aaed3ed79618c4fc1adbaee033b989fee026760de3dfe309e68810fa584650af395a198fd49fec364174a4f1badbb795b14dfdce0df5ddc185c94e6d6d867ebf9fea7921f054999ea87483c68046815b117d76c9b15f878f16ffedb5dda6036d5ca33222b2b48093d1f411b7d9a568ec438fe2e0a00d89f2a199cceb3187538f4a729f3f68ab2fb6c5698929c50a35da6ab12529fbdaef09f21af252f039676d7628f5ddbe1aab04ba66abfd6d52a4443e0858ddcee1f9999d11ea5afbd66f3837607f4e0bb24ff136d51c7bd2898321f850d08fc665ef6ddccd2e18fb81cfcf28de08e4b1b21acc42dd92a82c7ae4bb862d6d05b9b0a708fc559e969405afa18a588f108bf2e777a6e13bac631e1a671570cc878063de12fb7b88f5fb6e59b77d12758369abff86fb4180472715e48111ba9047e60dfc36e42e39f6a0939aacdeb6f7be0916ad3e154af78e904fb03276318b9be1315f88eb81f275a748edfc1a99e4d9f414437c2ce6dcc74fc6b9f1fb25d4bf077a3eb82626c678cfb6c66b8cb1898fd05f803f28449f5385b580312784d6faeb9333c2fcdd1bdd2b125aa7370c8c1bf83bcafe312ed3765ca811e08bf0769e9e239d7c77cf9312f0031af6ba1acf9fea1e50d36548fd86d1f18dfa1c5bee1bcbd9f9037baf3cf60dcd9f063b428d3dcce97154cb6e651a4cc03fa6e83cedb6038ec9cef997cad33f79aff98e8a714afe66f95632ce4753eed9f86eafce9d409e06fa03dea3a310872bc599d2dc06b405a1bcce6a04f07c29c98e4f691bdade500704bfff76a7c63b529f81f3644cf36763a23c4ae89fc5a7b66062b4c980641e33d378071a56e326a973bc4d57cd985b2aa7d131a31cd698eb6a27af09c82328b7d2b1a3cfb13167e7a8ac0de4e6c338a90d518cb511c6fa50c6fa90c7caf2d5841ca5912813b9796a8fb2a4eb56a9bfd090a7b872cc8c39ac5cd370c97cb00e6b2d8f405cffb35ab9c25ea871d688194368b4f148ed4115f9cb1a539af935a97d69e5f714ffc0e0128f77922c9b54c343b8dfa17f9dce05f22b3d9e37039873a10f18fa57c829462c2e9677c6ed66fc4cd539372f785e385635c8d99003597a3bb4b980dcffe0f5dfe06fccb56dc41e31eca0f7235f8bb9697c775e2cfef76ca59d67ab1a5f67be25df2fc4f1e2f93295186c86d1d11a07ce72dfd067a8c6774bed5662bb7d3e0ecf1e6820eb83ad0a78a11247ea896da10d90d9c185f5a4f63fe445d8d67bac0f2ac21b008f431caf103b3e97c7aac490f7c5b30535f0218fb21cf44097e94e88de01d861e25a719d97c58dd3cf998eabf429da836ef2bad6fa2ebcc3f3039fe48a2a3943542615eee9a003385c8171827c3a9e3b38281d0bcedb1aef03e08a5de36d07f3fef680cb8558224174ddf8cbccd5e6d986ca73759e7ddbdd17ef3db555e33e172c1f11f7e60036f050cf30ae05e946f5e623d6595c311e476519aa93d098943abf5ecc7357d6c33125ac0b865dc4f3aefc8ea6e68edee2ae416d6312becc44e5b7028e16b923b5bf2058587160686faf72ae50d3d7c5f9131d97714d46021f107c4a757d68d0f7a5fc6f1ebf40edf6cd7e40d73aa6b677467b0b62e5c13c3a67b96f4b6bb5516dc057f05cee7db27f2cffe51cf91da839cef247a3d703afb940b15cf8d978220b5fe3f2de6771afa13f79c4fabd93dadee96d655c227f41dacd937d23f6a9a667e8cb88e57d66b104cdfc3bd7bf177067d4f5fd7a0c5086183f44a7157379d66dbadf51f0b14876a9e772e8e9b77266859c95bace39e6f38be7257b968786eb640f6e685b6dc3dda7b631393f8bafed6cd5f9f83c09bedcfa4c03ad5072f9862df7451d9f7c47889cd252c75ebeb79a77a231755c9e0b1bb9300c0b4ade33f4638934b3e655359f51f6af82b37bdb8c8bc7c65f80cd166404f069020636e0c8d2bc8382dbf73036ebcafb20b2e9d639395f9093daf4d9c41e1ce3fdf23e23e7412f2ea9e4f7a7f9ade80fa0b858d636a972faec88e63618574287e7db7e4ff07dd27777cfdf5d49efca31be02e617f46f0eefd14aeb396658a24de696cdfdf5f90762de615ef6f6b6fd3ce71bf35a88ce0ff8fd81ab6dfcfebeced164f57e447c57ef9efa4515adb27d5c52ccfe3d8bc94d8ef5ef993667b184485b6b9d549b5c31e7c1f80bfcefdbe16d661afdf9eb219b9bb7ecedc5f9063eadf1ae22df897985f59daab12ae22ea1f5936beaf7c1de09388a42be2fcb5fad73563d531ecb5d5a6b72cf9c17892f652a7e482df7a466dccd2e34764899631fe33ce4bc3bf5991ee6082ae3df63ec84cadf388e08d1b94aef918efa45da31ae898ef58255fa206284b7d572a298ffabc85f68d42720ceebaf965ae7db3058143ef33bda933cd1bd48913d6b7a29d54fe0314acd9ab7cfeba808b8f6738e858435aa766d35e8d8f87e832fa6c6c417e2849a7645c0d5f476109727ae991087d4c267645b3ab6916533a50d8ea5a1c46db23ebff47c9d03a2c81eb0fe21da65f13e82ff9a9c2bf0792b9f213ea012c748d76c85f840587b6a5284dde585c6ee289f39b51f568c3f2ad4382d8ad1a209f98ae345918ee17c111953fefea5352f5d8ddbfac6e76c9e1ad8f00cdfe595636641ce983a8e6bb326d9ee1b3fcbffaadd89b8670d2c2e6e0f17650d9647ba9669804473a87c2ac6c835cf098f27aaf340aada7e47ce10e400d0dc8e8d0d31cc4406edc65da22f837fe3a2d642fa6a5c248f6be335bcfb8ba597ffededacb9b75e2beb9d612e05c5ff98ed3a93d762e02fd777cf5562723e8a8f6c89153a6c56da59918b887ca1f19cb4d1f743bc050c478a715c682857b8d7b85c675189b1010cef0c747cd4a7fe8fd2e621ee269877102cb3c42e2e31d829d0fff5b39187fa712c979c6bda3f261de318972a4ed690c71e89be1366e34f4a4f5fb7e6534a713b62bc4f1505d112f22bdb73cedadb21f7b368f60fed34e89c3ab69d1a6fd4ff308e521a3b917f8c5e4b4c656fde884fca3e8caf54f252ff43ce644b9c68f5e1fc9a31a35bd93775cbde5e9b751f680cf13f5c835df6736bf49b71ece4b38f62b4dae3b09fc8323d214eb15d661967351f69ca2f771afbf9d7d37ef05ef7191f015bbb87b2eb733c2fb70a7d9ec379e23ac278524463ef3d0ae6427e2762c683bd1e6bdd917b7d43db607a4c4b8fda4728a65659bc6f4097450c28fa9d50bf6fb0dd004e9826600821a614fa56c4b179d4b6d4ac43f53310dfefef92d2da2f113f2b8bc6933caaeadc58795c44d7ecdd71fc6e119556271e03f60b60d77e45de8f1b382c1447c3f7aa485771866aac22fafd5e8a9704acd8c103e325dbb11a41ff22efd53841358e14c4c442bbc2b86ef59986f54c5f600dde896ed0bbcdb18d818a3b1406c81b6b7e4979ea4ad5ebf316fb0f8b2dc4dc79426366afcff768ca72e6f75111db83f74d407ecf3e686ff70fda6be278d6bc0eea161550232a58f41ddb7a0f75c0a022bc5c6cfb1bf5a1d07daa31be66a69127f6eee458a73d9c390db1dc261dad0dcb883c2be9964fef279389f819bed5f64baa8725ecbb609e85e03fc0f80b1aa7c2f233803fc7655fc3da6c78cef1ec8f6a1c3f3803c7e65dd327bfc87b7f8bb86598d380b965f47d8697d0bcebcc77d09170acd87b6cefd47620a7d68fca8dbf38463c36a9ad369c33f85bc2a95265496317058b23fa3df867d7686be4c21ae7582b88e5cb02ae60bb0d5cbe034dac37942fcf5130d97f709fe9f709f599fe57ed038c563ca541389f8554afb3be53648e9d2229d3625aefd749b0133c106351a1272fc3aab6b1a9fac821fbf162206f5ad57da22c67dd404f15f08ca83f01eeec746b78c97881f553e8d9482a23077b4299004f0a577c4c490b7e17c3a3c9549d9e9db9367d1ee414942d68dbc905eb89b4c4dbea2eca0bfc3cf5b5b86a3cc7f197c536991e8eb58865ec3e5557725e0ef57de5b8928d7e763c9f69bcabb86c6b6a6c4e4ca66bc4258bb6c4f956c00ac1b6ee4cbe9a3562b4fe294ec817f2edffff9cafdea6cb636c2be4ff701b4c43bfa9f140a76696d77b4e3f07dc487ed6288e29addb2ee332ca77753bfcd67c0ff14868fefc2fe17b862daae460d0b320f0f8e983e396e29e4bf85beaf3bbe6f34a2c159e53a7ce4f84f83286d7dacc9d6e3cbf6a3cdf6fe4e6d4720fa39792ec44e4a09969c4932ea36594af57b7acfe8cddc1346dd69bb26e1b56fb64eb9c1cb14e8fed5550b386cbd81ec328d8b3f89e19a15b3af0a63de44f107eeb778aa4eb1689d9cbbc00e8a045e454e43788954d31054e6949e56611b3c92ef2d834083fca190de458aaba7799edd3e3462f6e91ef1ec355ff9a94c935d58bdf9bd500fb2906bc9fe94a91edebda43629dd807e6cc11deeb1e93ae4bb12920ceef9adad6c919d736572e6bd2bcef4f3057b186567742687b0b0679bd9ed12aaf6521c09ff55e89fea2f0ec3a07644cfd3da6843dd6c7cf6e19e2b20e6fff26a71475517cae41fb6a3fc5ad5153bfb54668277f6ba98bfd81ad44c10fabe94d6a17e7c8c398b6999c2b24e6e1b5c9edeabd567501517fddbdadfa7ae4dfafa15e686fab3ee21eb0719807f60ccb6516ee2fec952ef0b84b5a7aa7585f1cd3f1eef2a6f0c354b291487a8162470b1b3c2cdd030fd3b16e52043c2cddcb3c0c7d9961f6733bbcb7ea42ca1afd5c417b57671c7ef2ec0e9f5dc9cf8af68688d58ef23bc51ae8428db124ad496dd7a4f9a7f51d10d65ada0f718e8a7de7f7cf9594832adb69601fe51c8794e6e953fe9987fb39910f8e3f2a43a3b9e7a22fafc6c6aaf10579fcdc748c7c3745be8bb85263a2870ece619009f1631394a92966f907751098bf94d6fbea1c53bbd0a3e0d3ba0822e633c404331956a93958b7bf83bd39405cafc81b9ef859a95d0162907f6cf127d21cc3273a59dc75aae8e59079147f6bce30f03186f341be434cf2c54e79ef21bda7bb34f647a1a1d8ce016a97d575796a9f7b45b15f2b613c66de9b9906978358cc00b359f2f8072b2ac2ae7b4dde27bbe9383b393c7e94f9b6a91ed8f63ccb0762714ff559e71899c29a1c94b1d4315e426db225b7add6f5ea12ddd304bf76c306f4645d6a3b3062b5b3388207bdffbd1fcf9e5fa9cfc37ce02eb5c5ce8a7354c6c2f2f8cac9b6c60f7fe3f58e985f21517164df694cf13682facc03882176c674ed0b3966e14dc6a2efc1fc5a70c2dfcc7e0f30e855dcfbbd8c6ffe66f6dbf1ccc7d9e50db1c5e9be376dea746f7b128ef9f8d97884b6ea77fbf2bb4d1c6478571a47879f1f612f2ec978724ded01cc6bb6677e70ed891f9cad85500770bfabe3c15af69ddd697a6f4ecef8a0d62625f4a8791774764e6ed9db56be43b51fa271a71fec4ecf4ce39b7297287f6e7b2793efb3c0db9a777ad1b8d33cf719f051fa28ffec285d33ffc93d8539ff5fb9abadcf6fd5e70fe4f96f9fde6d79cffedfb8dff59dfca6dc675847658ed9cf8a8ced90fd10e4e546dee193393d198fd096f0ee4a7af7c95c76edef6ea577bfb5bf2bcf41883113ee9572f6111fa271e66bdd469ab7388f7a5c188bfc07f14ef923f5d12e2cea50b15d805d7addf5d0bf630acfa9f50d680da335c4a45b682bb5696d6a5627aa43e63cc9237d7d48789b8c4e2c3a617984380a7ae7693dabc52bb937a19f16b3727061b525d93866e5a08cb642bd9eba0fa841d47c3ea2b5d1dbda87efd45a8ffcdd67779bc5a2ba8d35685957c49b24632c1cdb3a11fd9de6649e78dda0fd1cf47e9a4b09354f675b6316053bac9d05fd2cb3b8b4cee047a0fe3cc04fc61a6b3c0e1df088ea5a7344967d8fbb931dcb779d5503feec7225d64e831a2ed784e6ce267af120e7466d4f5a07c8992ab4a4e2f6fb3ca6b5f6a320d77ed4f1f77f39668af31ef5f3d85fef9d17ed3f8e75fe4b685bf24fcd4ce33d851817e66beca4ccf683313593222263b4bd2af25d56cb8cecf34f76aed83e4d31afe0c3da1458734af20d88e3a5b8b177a80745c7a662cb48f52ac5357390e60af72f69f8c1533bafe26e42638bbd2a2907d5d44cc5fd216783e81784d61734c71af88038ee49f5144b0963ca6ceb12d97738733f29ae23d8a44a8fd5b37af83adead5772de5ae2321c3fcfe3d23d45811a4b47d6a1fe8efa41f670ce8349118dd89d3d0b6beba56a6cbd32ee03e4fada5e9570ac9c73bd2e8f83b8d6649fb4b797431676dd9ee8ab90ed32f21da7711e27c13e728dcaf0cbe7a1cdff0078b1967b5dd3da7f4bff7e423b38e721627b8c2f8bf5e5f6922d1acf5737f4fb9a670f5691dfb9a6a5679073ad9e25c072d48b538c798f57c88ba47b8b35db805e66899ed7b5cd6def1277bdfdc614b005ec459ee8eb6f6a1ec23fb977a22d9ed902384f50e348d4d8c9d63e17319dd38fd0ef1441330e06f994ed9da2c085f55ff273727eb8e5a072295dfdb912eb98d4fb8a35ff867b81e6edd5787e8afb55c4b6a7456beb148feaf7130dea7fc2996fadc142c7d6bea6cafcbe9c4740fd5fc25cbf7a0f5bf04cafc97678403b24d569a0eee84d6abf8ebf6bda30857161ac91f01ec49496c27a834c25f2a4f67c02a9e66717fc6ca78dbf28a6f60eeae0b7e5b137b03c157c4cf17bd146f7f179556291cba28a5e9578695ba0a5abb63a11c279a136ae3f3a0b1c17a65ed70f72879a74af395fbc37642e6bab8aba3407ebd1a0457952a61d5a774df083f6b29698b472134c8a6530d9a7904f81f6b125adeb2aebdb8b5b6c17efd1aa0f7b3cb585315437a85bfb844f9471d7f9f76715edd3f5f9d28a4b547ecfa473d955e315c106cff771e5f7cbb8ea0be7b89f2763e3f4b6cad576c93921ba79637d3ef243d6b1ff5c866e8d9169a975ae87fefd88b55af8bba26c2ee9a74ec09f91f3e2c87e55689b70834945d67da2e139dff8511fd6a204bc930ed1e1a2d23a25dd5d16d35814c7b61e428d537e26b9eca2c87990e3527a3b4f1f5411f29a78a21359e7964d7490e1f73373b827f2ff84c9111fd02ed4b9267ae4bb01958db97fc7314fbf37e2f9c5b32ee813799e68836e5c00d65991ecddfeb43146381f6a4de6d6750bccc92b6b5b583722d7216db68b72e37bbb19d473ecbf472ba88d22d485cd735a77e3160513ed6d35dc07a6934d2b8c454af6511159e935295da0b78e79ca02d321cfb4e21db2b8c3273a2491eda13601ab8b83eb8bf1264fe35e4afc9ec6abfcf35819b0f7c2fde4791ae2bbb36defea05ee311ecfaf09c6f9ff4aaae4d8cc7315eabdc33ade4f6f2b83ac5f19772767c7065cff531814d734a039bdfe7d1f7727c7d4cecf8e3de950dc2c5a5fbfc869edb95f3c56baf42e11a1e144e646cca232f417c56c6b18b17dbfa6e81b7e8fed82ca65eed501fc3cc48148ba4611ea64efe759c26d631c1fe39724a720061ae078245d374fede21d6b5573fc10c47ac31c97f698ce4e744ccbd1c5653146f8ec80e54d607e196dd36ac47251d9cf1d403de760f2ca73a83af7b63aaff539627916e62d4bc9792deabc08c917aa7c27c64caadfcd4c5527e9e46f16d884eef317475362f5cf619047586375582d14ff63a27b45640ebf39663a8a00bfa3738c4bc29f8bf7ba063fc539f1ad5db432ce14830564e849ad5f0872498d7119ea77c0714cf4e29cd8f73ea15b703ebaf36ce9199319d642dac5106350d3d4441f907ef8de8602eff8c179c5f75f9bfde2b0815a45de85ac53f472407aacafc518abfa4e829d89ddbdbc43e8da5af7b494e81244d682f5507caf526e0db725c31d9d3ec98178961b217ebe5af73ffb5ca905c5efec7ce3f7a93c75966434dc0be344ee226044ac25f95391dd2097f309cef893bc1cfe7df60dd771c9eaee37d632f6ad9eafae257f7ff7b5f7576d39cc6a1eada8db52d993c6a0ba4ade9b347f21b663664ab94fed6b82bcf2566330f57b84df8ab975b33d625037f2b1c0a629f4b7cffe6a62d83feba3a7f651b5f6b1fdc77df49bf3d8b5cda3df9cc7ee0ffa50e7b16b9b47bf398f661f90d35db4de8d1f14bf44b46737747766df16755fe7e57bc6e2896725b5f5ae72c0fb98ae86df5aef9aed5da096e51a7281267149c60c35a8b00e7f0b36c113fd511e7fe74c71db8a5d806bde7aa7d91d6ec5726bb90353c6e34698bbe4637de1cbc67753f50ea879904d3ac3f2d9a0ad1a9b6cdfcc47f84867e671bfbaa7bdd23a9188db961dc5fa6c9c26bd9f149d8eb727e72f7e90cfd6b65eeaf957f2d60cdfa2796b6d98736d77b19da6b7ad839a77f9a53cb8c6fb26f83b012f07f181f222de2f3a49e9c1995a01c65991c736d437ff7c7ff9d9be1fe3f2fcd9d93e119ed4b6cf0cd3ecd52e2e44b78cc9cfaa7f8cb0ee06bcf7f958065476cb5fc0c6ab7b3b859e1f423dcfe3322dd4dac37c7f9fe71ebfd336bf68eb91ec1b87d0ef33ff10fedec8f793ffa34d8dbdd7ff802634e8291de7fac2e6ea8d8b5bb4623e476b17994ddb7b7b7b1fd1adba1fc47d68e2db2afcb83d87b0f5bfb18bfc7b81587bf45ce09d8fd99c66654d93daeea9784e9ef5f7f78ad9e3589be40c9f3e5d1b656fd8b958bf0506e719a1efee264f6d77ca99f3fb802b09675f2b2e44cf09fdfbf1adf476423f7877dae88a3ca7e7d82a8dfda536db95223376cef5ded6f7f093fd6de1ef4fd75ff94cc074f8d774ca66fa36d89df350cf614ed30fe9547d76798e9bde3b4c74baf6fe723f338d6bbcc3b697f4bce07b7cdcdc46aae2048bb920f8ff902d03578bfcce2d1da3dfb3c67464ba26d1a1f363bce5b1d32c5e01fc91228ea28ae34b73a0e4fe6a3d15638e75886d8ea57628a668b092fb12f5fe4977fe49df878ce875916827e172cb32dbf8e925ee4e8a84e560d371815eb96db475556cb89d78dbc8e13ba6429d4f8a57fa445fe1d83b4562aa38b92dfcc464f1ee751bd3adf133461cba2241bb029f9bb84e2a0e75ad67e27f7cff739c211cf75319ead08ae12ae30d55a94fb178ecfe15f17330c65ec087be7ca62bb11c3fa18f5f8e4565adfd3c43ac534233ee85335e68c9de7b27df117afff6323a39e3dd7d661abdf9f696bdbd4e0633a82f5abc6fe0ded439838d3e843a6e49d7c8437d9dc5fae23d0d8c23ab67cceeacfaee4cdedf7d14b86341866ae4523d913ff9bd1665bf7f78765651607522a87d89788fb1ede589bea6f5932605ab8395743e3e3f915d3c68beedd7ce10a78b8332da667bc6f326d52d8bf53eaecb88d3bb2fdd8dc65e8d1687087c38503b16e3b2686eb558ef9a6123fca88c3cb6298639d439e158daf59d028c34867df0097db08b07f00a8f3eafe2f67ccd9641ce6ef18fe66f416c769174dd87607bcc633bbd2684dfd81ae6b6d8c565d6f52ee4275b17ac2540de13ce7b6df36cd0d8b5822f2160e902ee715892331595982f8bf7a4e631d629d207d526700ff18ad5fabe77c3a081f9fb0bcea86f113e446b917ac7646bd43afb6774ce2e2eb0270d9f20c3dd2d1e6c2eedf70fe956dc353ed1ed87d796fb368ec89a8af939f6a074ec11c318debead8c23e1c11b7f8958dd6c3f748bd91a1f914fce2fd62f566ba103be79fbba8a710c52bc12a3cd91dfa8cdd046b340de116243bf39765a50dd5cc0fa6e598f16b9632de438612ee82d4bedc1a0758d50f6fbe4ce91b1804c558fe55ddd6b94b99ad825dcd708b22dd8b3dbf440add8a9beff0fe42df67d999483336077319b8157cf11c774c27cd875b1536b3fb1ffe45efed8b6eec381ae8f166bc56edaf0ad7f6e7f6ce7a98b829cc744880506198cd572021fc4288ba0f6698ff0f06b02381a961635cfa6223f2d9ae7a6b157a8eb45e62d93e3f1957501bf248bb56eb3177993769d81e6cb022efc735db019bfdc7c06fbc798f7768cffcfec8110973767bc46f437c53ee15f831de0157fe15e2d4beb41ee39c404723fc4328bfc82c627330c0aa2db4679eadf35466b12fb9e873afaf7659fd6a06aca439696da50eb8cf9cbc0e6a7f259562f58a821728b6deb9dd747aee3c51a72139e419a9b5e7a5d5e6f5a88e783da097a0a3174e25965f6448aaf20f2f7463f4df9a115b3e11205e912c68ef2ef4b1d3f30a850371c9ec1f601d84dc503ee8770a6533b2f9a7cea4ff681e82993827ebf63fe4d5c9bc1255a31ac6d718dddc61911d76f03feff11d89b62f46129587d6053c9deba1aabbfdd16fbc86960e83765041e6b40c7fb46eb0ebcad6a5ff9c607d9a1a075dda9de377934f497163d48a8d50c36914db0dcb33a4aa164db55fd7388d19d8ed1ce1e99469e305c39b3b5eeca2f56c34ec6bdfe60cfc6e9919c3d220781cf0fe787fb03f1039fe99a822dbd891bf38533d94e37296e2cf3397ce56c53bb9d14dffadcaef4815f8f9cd735ae17f0322116f067b27b86b34be93dbdd72a1f4daaf67a338ed9c46b7e1693d6d227d4f210eb72851407a4d69d383dbdb5ae5f75936b32d17579d257fe01dd14e26c55ba2fcdf1c938be74569a98bf3c8f45b28d8977aa5d26817d2f9ab2743dce561fd24ab4a3b29c3025e77f6947c7d8f67ea6a557a56551a495318afce81897de83dc4fc72ecea19f1675cd27e001ddc89fece311ea9f1b7f41749c53182c1e0c0f67ade77962af11979ee982444eee5a1da2ff29b83e794ae4ebae932dfdfe2e29bda3333ae7899ebf6fec5136b5addf21d169f651bed14780a701f800e3f9b75935d813d93cf59d4ba80fce33ddbaa4a5f53bf4787c068bad0970cc9616133add88b11974c5ef67e5f121c6f544fadd4bede2d4c8d7ad7ad754f7b6917ebb6cf69fe6e6d23e704de9bdab623dad429f9d897a6f5cdb2b377ebf482ae3b1f13bb7d85e67de7a87fe0cbe1fc5c519a74558a6606b20fa49527a15af9f20eae82c7687e88e80cdd4cb367e07724c68dc4c036729ae3113b48d7f2f928e5124855bbc8d098fa2580e566b2ccc47733d90b58c82c5320a26eb28c801335fce2d498b7097ce91f7a74732568c015a67b16f61bdb815ad2904792a3c7644e68375eda6478ab4056afcfc10727e969ebb5eef0ad3f35c6bdd192c5d6ff2f7da9a4c5ed7c57ae54516e6e466222603d6afd0a257c00ea4be65a4cf5115fa29f02e7207c87ad73984c2bb9d9677bda848f66ef1662d0ea1ef16c936937098dad68c6223343f1fdfbf3b2fa3dbfc7d4931bbdd9feee8fb37679412b900f06023d320fb740e832c4b6daf476d7b8f4d702c84f1e6a97dcf599c2cd5118433cb9fdbf3fa1788efd0017c8f77f13d8f9ca18738a7d81ebc333baff4b9e40f166b4a086b58e784dab13dc8d3977945636f0f8bf7a5bc767ab1439c0bdec6a1c691e19f6949695d123dba26a534375813d72eaa94d59455f2ffebb8cafb35f497dfe84f513f6ce2472156758b2da3b617b19a975cdeda7b65547a153e87344090eb04f95bf00f605d1df293dcff5e7b1f7d716c3c7e8ee80158ffcdeb36c629d42316c7c0ed1d6309b7fad66ad7e0b97540a7be297f9f245f0ce686008ffbb195ff166d7949e921dff6782ceb310ae6df04797f29d288362c716f3cc9e3fd02e226055cf1b5703ec4b1b1ef5fc939119e87bf95b1010dc6f1f777513051717f441a5a457e5445c1e2e0f1fb996bec8ecf88de2de56ba11e5edfe5fe85dcadb4f47e36e39dc1ce739a95d45fe8319abefef0fdd69aedf44e2acf127eb78fcdfe7b527ab0769cce8bbe39fd76018cc0202a8439ee63eb9c38856bf996ebad775ee26c87bfe11c5b9ae8173ccdcac9312eddba6df259fddedff31dd41ecf013b633d90733569ff64be2be483956be664cc6bd7cbd79e37b182c764343301bf9e7cbe72b589d1f2bbf75a2c26aed6b75c6b60fa9e6bcd4ca3dea77201b24b5235fb5dc33deb14a9ed559b555bdf86fc99d631dccec05eadef6bd7734eb006bbfbe475e719ebed7fa5fdc96bf1a4fd62b05879c662e9197fc3df3befd593fda5a4ad3de47e96e40e778e89ddc9939635156a2790ef3a7159c05d9bfbbb83c813fcce6d9be8d639b1ef4552dcb68e7982da6301abc726d551e067f81297169c296673405d49feac816124d67fa3fefb65e012b9969f2f56a33d329bf72e8467e7974db0186d2066bd252f868fd1c3fa62f49d48f7347efe8379a36efd46ca8dc11c002596859fb70fe3fecd163a81712bc2b88def7f9bc35cfd5e5dbf365b5f527a2599dbc66aa12714e3c9b13faecd2be3ba31797c718a7caba23cf8209c9f8182c923d2cf53ac5b3b421396e017f57aa968afb6d313d6abbebff0dcde1a5f166415fa3d95fdf37d3c82dac5c5db7829e12dd17dacb12d4027b81b203b55798becbc96de4fc6936bd4253237d12fb06f1e8b28c8cd542ef2d715b3c12decb54a578245b1e6ede5441ede13394058b353ac2f722166af83f3eb13fd732e7c77a8c775cbc85d0cbd814ef86614e4cbb8bb489ced2d0bcc491ee88b0e91c3e3b5a5a5e3c931dc7b60bba6df7782ee82f081222e16c7b7d2133e871acf0fb09979b7edcc341267effdcdeffcbb21b691c781718a02e71e98cec9b16edbd41b3c42d08dbc6a5eb4bd2f8ec125baee636d7b15bf6bde6d1bac1a344ca047a1448f66fb9636c0dfd2a2cf88b40978957709fdc989cbf923ba563bab4a4aab3f2532a3ce633084759e2b3cef8fda794f838516eb1d231dbbd5c69f7488cc298f8dcaea803f40da673218fb9ceb21adb432516d159e37811a3b02f614cfd3a6358bf87365b10359f5131dac9e3ff347802c40ce2ec3ff3ad3efbcd5aa0ff27aeb3b501fdf82dcec59c0b0c184f1ecc9f9ac6d66f48ec5306ef394cd0b8dd7d0f6d6bb4ba00fca68bf285273f8cb79113129999e773e2216e7f011b0186ac03d3d7db9cf05cc737866782e33a1ff442fbe45f5bd56fbec04bc7613accbdfac6e3359f305acc5e8a331ebf298bfbe4e8b8e3ce669f5e531f73e1fb3f3d198fbff74ccf3574339175fdfa3f9ab954ae7ba18f0baded3ed10ea5d030e7ef1ec4c8eaa7f7a3ee6af8b7f7e9e5fddcfc7fdfae1b83bff7cdcd1bf58eff4f3713feaba03347752c0e194f4cc43ea8bb58604fb02e7c55e2fb5bd4b34623496eadeec591a6737330dc3b3dcd56a3df1bc91f71a740c6b5d0c96eb5db15879eec4db0931fbb40d568f7bfad0e4b5a639bb523d4fb0793099282dd2915c8f733af68eb3fda20a059980c6b6cacfc9399c9d8d78cfa0eeade8839e5f1ab5e35b637f9bedc898c5dfafce88d9930b168bd1277b16db833cb2b1062cc58c29f83c212f12ec29d926580ab80dd43655f551cee373bf29f1e1d25c9a1825be44c7076a8d5388af22dfc9f59a5af34c1be70c626d063a3b67ecbc8aeb4feb684967e1e7767853f6483a678ea9510cb226fea6d01ea19fc7c81c7e57cfda641baa36b6ff600deb463e7c4db7bb93f7262e0adda33d9de74a79fe23dc69cc69bd84fae0f6b6c67b45f455566b326132ee1fc809ea7dfce23b5fbfb39fec759b7d692af8995f69bdc5b8f4ba0d9fa2dd2f520d63e0a5f3d878bfbe631fc9656db6ac29e9a323c8dc52cd4790cda90e0879541067ca6d63423bccf728d9c9be309635e1fdabbc3b330d293693da67c14752d3c71c6acbe19dac717a417e58bbc764ef526cc44987c9134fef6089f67481c6839c9fe05ea17e54dbb5db6c4c66ea4765143807a2632dbdc96ae9157f2f0bcf7677de6a661a5bfabdfa2ecad03ba811fcec5d7edec9f7ae55fc58ae3b936567305aefac4096d5316f5fb047cb7756dd433bcae3f1428a7d041dd1ef1f61ffd79d9ce80e6f2f6e996e73512fbc88fb3d338d32047a7f93ce818ce5939e667befb2f1c13e5a454a7b894e78ae77c13370637b7eaaf779d78e274cc65b423dd0de3270b5a42cb66ba8e549f65419337d0eea5099c38adab7ecd7d1c0f0cc1bcb113e392ff36cba6df80d2ecba258bbdee2eff5c85b059a3777d71debb5589e086d94f675afe85e05d6f624e743d217cb36bd787e725e46d4b616cd5f356b2daeefbc1afe724611e169dafc313192fd247f5bf5c1aec8e897bbbe5baf6bef0799d37c0bba87644ff88afd4a7a5ebf5da2f1244f35a4c360eb30fb846e1aafbb74ee7a64ccc3534366d90ef5e9ab5cdf29b07bd75965ac5f35f7e78fade10156867e7fc47651beadb09e52427d6349a71d83ee035f1ac3f2e0be179fed8b75db26e34911eac50365bc4e11d945270e865954deaf61b0fc2b30ebba80016031b37882a8081f8011778abbce27cfcdb3b4f681be807cf6724e9c2daf379c38f53dc86a5bc464e48c45dbc450ed87db1d9c31b77554ae6948b68f1f9ddb96e7875bb72dbfcb2ba3b685ec9699641b79ff27e39bd3f1f585f7b00e3ac60fe77aacd3b804691e4e6d6354d7c904eccc81f332bcb4bf87f72bd0225a1bea7e4d10a392d9cd2ad7ccc5f5b8cd4c43e7b69835ca6eb37d0e58cfd29cb792dcfac9f846ffadf1ddff67c6e7fcb7c657fdcf8c6ffedf1adfe31f8eefaff67ee09e1fe6846e125a6b22f61291ebe4fbd1491cb427a7b3f278ddf8bd43604e1272179cedaec6fe2d9fe9949e4fed77af1bdbda11be506392f2b89d58b8fb796d9f5b6769e9bdcfb7461e74594c80714d1e74be457df743ca0f538ccf049ee1d8d6df61d77ba4f6e0bc14bee7efb7d000da9f62a75d3fa74f76274f5f80c6c83ef3a7cfd3b18dbdbfdb6ca50d9a565aac86be1ef9f387338ef8b34bd0e796ff8636ed636b20c4d9839effb724df9a0758938599cb7b500dd43542be08f86cf21c28cf213ca58a4baf426c97c16efa6c7faa5bb6307b4fdb81755b531f3e6f8baceba07adee6f0eabc2c2f53226f7983277e880ffac37d5ac5dd04eb4305136dfa640f1bf7b1647b0e3673f085834d60d5bb2a6dabe7a604b9ccc498a3a53e38a57ee7c2e78ced4d884cff66ded4717e3c1f6f724db15e1aae9bd496b83ee4b95df38c954539b517d7a4ec83bd1ceaadbca3deacd2a216dad843bd8ad020e7c0688f32778e11bdf1c38370768027613d16797ece13fa08ba11dcebec3e3387f7c6feec455a9ebfc7ddc9250a9c0ceabe6c7bb7d6bbd3bc879737ac6f40ee693585bb306cec8198c3fcc7eb0474bab94e2df75f1d5b367da7f1515e2b3d6b5937ac0982776d718dc7de19f1afea33dca055cdf163bd117c07eece748b67794d6ddff23eb4ace95638a35fbee383761f57cb1923bc8cf41facfabf62bdb84caddb36b0ee17869ff6095e9a14dbd7c021b3264582d87180a11aae8c33d16f63c43254620e07320fa5b18c341ee390505d51b53dd5b9b02a466c4bfecd282d30279bc7b81df1be434e23f95b884117ec9334bef8d31c456ba0d5f17807accff485fc1257f700639ad9ad69ae6421c84259aa43cd6e3176f918fbd69ecc2161b1effef2b33c59c126fbc7e3035b83184789b5b3c8d80a6d63625c9ab8a71f8c03db7a3908d8f9702f5bf1fb71ef87df9c9779f5c55cdcd7b8eb55984f1c521b32eee76c6b4ca2adb476efb1dea1f93003cdb1a32ad6b5eccd1f7492adb18bf54ebe69c9bf0875af4a6dc89dbc2665b1277b9694de0374fb2eab436add12fb7e6ccb8f71ac4511ad8c433a766f3fb6dfaf6937edcecaf321290797b83bbfc4ddc97ed6a558a9e3497fd6c5fb30eb2e6e91bf78ccf43bd8a453f3fbfbc2ec55341efb8c38ec6e01631b37fb55f72129e719d66d9cbc739b4bb32e5c45e382875149e821f8fef58def759d11cd830ce07eb33c0f16d356601d5690f71ee4194ff7b6ae76cb429a5305b6061df1be82f104b1fbe8cfffa178f08ad19ba4b8639f4fea1b613cf71df3a7ede29dc8cdfc1d8c2567f4ef928c3dedd5b72ee48ca17e21c5865f661a3ec3f671e5f76f69e02e42bf9f47ba57f138f346db987fc96c93ad9890b8a634fefc0e981875dc07c788ac580c3b7d0ef30ba4781365cc1d8cbd66635662b7799c7bc2703229cd5ed3d8fe2f8cf595d290a76dbd427cf717c606cf35e74a71858f11d6fa78526f16b1c395f5ff931ab9a43f183bf01d767e2da348a04e54e7c1e633f32779a27bbb1a0b84c5ea131da797799823cf6afb66913d28589e4cc2ea32f233cc73e94f14b3f31a97f7be338e8e49d743fc14c401dd610de6feceb1bd5da44bf1f06c3e4942733112b596715df3359bad20d78ac59200cda6d809c7b03bcf1c7b526c6c4bdff8836ab6355e183f8dc7bb2ce97a37901d6c6f27618370fa02f6ca3c2cefc5127098304f91f499ecbd42ae874ee66c9d627bd0a5f5b0013792ea6e3772fee272d177ea3cfc2be4f476e7d4b6077970bcdfa4c6b81d25a5d585dacf2cc6dad438a6246052d85e1906de29059dc33bc544a6c0dc0fc400e06dad6bfa5671bf00a7738ed992578574f935f2d7222deba6dde4b2d1f32ad6fbd7a4c2da970cf33cd9ef58eec915f25cbbf3eb7cd5bbcdaa7967f63e61fb79857e61ce6df919750e8f505719f4195e774738073f57ec7e48b5c6ffa273e37369dbcf1f14876166dd2b252f8f63faba6cdd341e93f48df9301aefd91813b8449bed179f9bf8a17fef4488eb57cf518c61247dbe8c4eea9cb0ad04f0561b7de0fe6d41be5add5bdb0d4196b194ef8c41dd0fd6bde7bc46889b425c17eb4874c1e6fcea3d5c97836b6aaafd1bfbb8f95977e3bb50a759f99ce54534e6df9293d17c0673fc3f7c46f523fa9db6b51cde31ee9afe6f5d6ff8eefe8567eae73e7e069e53c71b34f6d340ccd2d6bccb5373be80e34b733801fb40a8b9d2d84b9ad785b5439eac2f6285b78ceb189785d6184ba1f6619de251ddcf5bb7d94fe8df4faf755f7ffdddeceb24cb1b845fd63c79d3a96356a7cd772f4d19a455d6e0efceaae3af44cf8ff1ffc7debbb529aa6b6da03f685f2cc072cef6522c4150a912e47827500d96a0cee9117ffd7e32924002d1b266f75adfdafbfb2efae96e4508c9c8c838beef7691a53ee46d376f6b9a3303fb56348f9ee39af2cabf6e20aee1dce9c716ca5f935f6ad92cbbe9f280b948b6c80e578fa17f2c0c7ddcf436361cc997a41c282b1ffaa1b72c879031ca497f2a937f5eb6f51160d4d436467bee3db718a57e7188741c5bece2731cf677755ced3fb3765476f9d08d5bf869ade74a54de1fcfcb795aee6f2bbd40fea81c6f3d64d3ff41ea056a1b9bdb2f9dfe19d9ab63c3620e42d19ab464ae2feacbd9b5f3d3a2f78f5b36adb05662c2d54974ce38ba27da9f631c7e7b192a1ac46b53ddabe2523b7ce33dd9983aecf53a57017fc4e74bfb0f97e3f8ce6feadf7df337e88f273d3d4f7c4d481b5734bb2bbb753ddbd6cea13f760d7c83dbda5f93cd734c7a9dee8e7f92eea389bd8335a9ed58cb89958134db36df116ee06318643bee0ca635611abe96c657ef3e8fab65699fd77d7ae6365ccfa59c7f8c72d017a18ffc6ca3aec173746f1f29b9f4f533a156641b2339aba00e027c77b0c5471939efa81d70c956e4be48bffdf484e72433ffbc7f8af19cf9cf665bd2cf8f63af3b5ae333aba02ea37e67f4ffe79ed9d297f04cfeb3dff34cd6267b2cc3c027e321bb1f9de91d6cda6ccaac35c42f853665730de1eedb052313d9c49fa17f2d22edb216e962d6ff6cdf07cb159cabfbb8b4cf69d5dfc48a85796d9a9e3c2dd631cec654bbac431c2bb99118307f6fd2e35bef318c41dfb133238237eab99b36be06e86ec7bfbf2f1b7e6a649f802cdd7c85e04c69cfeb95061bca33db78801c9682682d9adc2cb2d144780a5507034a64638d9af81973ff1a0b0ac726596c137b07b94252ff9254141b8a89a5ebb8a76326b86ff75d583f9eda40268361a1e63c1e0e1b832763f1adcf2850a50e8e8be059218e0362dc00df9390bd85e30eb29cf416ecda9e0cdd3b50cca2a4f42e705e02c70ee07a007f04ed496ecb89704ec7d456ebdf30de9be07d6b5c0e88fde69417f4de1ccc902dbdb5a41073d3103e8ae246718340464a6fd39107180fe6af4d95e2163d85196777dfb36b436179e8e01f8ad6f6ae5d816b366a4e38d16f31576f30329b7d535cd677f70b6f2b63ac81897d8ef41fc81edc25e5a0f75ea96e3d77b8e61bf865c2c0de87e5b5a8b19794ebc6984445b2b520ae20de9fb270cf63fd27b4f9d7d44666fca23fc57b76c8dbfd7abea7b15fa363037764137228dd75549718af10e3e732fb0fc7c769cd089279c09ee3b0537382c7f83fb5df4167ff47f63bc125fc6dfbbdfa6fdce70b81dc92f85cdbc7af3af85422397e6c23379854a2df62fe56edb26ef409d436ddd11dfc19fd5601c692142bf6f96d4d38c06e3f681cbbc1785206c704ce2df310396a6f15d83b431f1ca291aa448109759a8958570d1eec51a1ff1b6ebd7dacdb45b269d65ab06edfdee3edf56162fdfcfef3af87b897620c3f1d726515f2fd99d83587ab9700e78d477378904725781f649ec650632f7a1673069ca06f40c6f125667d5bbd98b4d689702fb3b5f94abe0f955ca4bbd03aca386f61f6ef6256afb3bdc826e9c4649ec65f6b71d00acf01e0e3126370515c98ee9c7c65f3514cb3e76cbc0913d3ebee57e67dc0867de67c66e38a6047b3fbf59dc34d6cddb323c32d9b1aebd9a76de8bb324eea4f0c1de7350d5dcee352db02aebc0efc9e27929739c63def56f3fd114cfc64629e43c5bb51fb36a9d44d526adb99ff728c26e639c1fa18b8e2ea9c31f54b9ed09dab567e156a0d70fcce8cb7aa9c8eebf17ecf6ec7fcb7458479ceab0fc0c3920b43378ba81c5491c3e5be6fa9ae41ad0cc57b4167dd537b4487dcffc925bfebd87b776346581fe3b38bab496db89059bccb1afb787e5af9fd7d376740e5e0479db3c77d3c167abf26f7d3d913dff487eecdeb24dd45b8b6a2e61b4467eb2ab076602b297dc0a48f8221d47a7c7f9ebd53a4d1be2031defafdd813f64d3bbd7af7ede376dc92c88ab1bb17bfb9139700fbfd5edfdefd38503b46d2f443dd391f9f8e7f845b731f9729f6f9f5819e94033426a1efefb99bbbe3c4986151152b7d8970a66c307634974b009c147b6b9ee32d8e3338fe42905f6075bb558512c5aa7e749d5dc4c1f0915fd05ec335e4ee65fb8cc7b3c0d8d1b267767378ec5a404cae84791ad3710dff1f123b23fd9a5fd8603df3b33b47b847b213b711bf67cdbf94c8477e2c82384b7b0e04bf61ef774b4a8bac8d205ec2fc21b9c238e2d6d34ea1d713e268dc3a3f332eeed9181bcf3b26af8ff6068933f51839d1a4d3ca5fe07ae7fa7e779e4ffc5176effc43ff10720d31c6283c2735ff09d8a8793a526f2b7d20c73ae10108d44bac17140397e35cc07e187eafe77421e5c0f12057d170e174f6f1cb6ca4f6efdb642c96cbe18ab132863be84f9b64d9aca2b1e64d367386d73bba87c97dc831c536983bc3a331ca2a64837c38c333d73328b60f491c981d53ddef20d0bbdf5e37b0bd280f8357164ae810ce8d51df5ff95eafd6b3a557119ed902c73e20fe2ad53538c06b3b90d3892aa7ddfcf45f0d7fae57e15a0915d75f227b8ada09355638e4fd98fa47bcb6dd3912be538dfb477cd0a3a1cbe8ec3870fc01025fb82b53da2602fd70109e05b391ba46e757a431f8fd77e50a62cff2ca67f45d5d6370e8e6d0d973c5dfd4ba89f517697ef48e0cca2bdc373f3026de7e7577ef7bfbd996e2e59be7d4ef6f18dcdeef9c25341e8f79ad26defef1194275161a1bd173fe9d7dd089a51f4e5ffea6f187e4d5d3fb4464dfed32ecbf107b53e3b9983dc01bee7335a371a51e22dc33039c9da9ced49955ea390d6c64dfb765f79b7b0463e2b6f748575776f6088b8d4b710eb2b42c6ea9af1d44b1fa364e661defa3fc2de00b677b43f75e22df9209676ae7b98278701ee918efb91b13a63c2c1d997c6c7f6159aff18d2886c2b4ead6b4f07b85c1eb6962afbb9a43f0fe3ef8de3ea3d8a3af52169603392e6d86f3e2ce7bf91bc26548c7e83e1a4fab2ea5de9730cf5fef4b828df3f4beec72b1fefe7d49cf53a81b7722ffd2e1c88a26d9c1d0ed6f9debd39b944d5f0de86be1ce6b4d021e868fd1f04c73ec53745ef3f7b80477fc1eb676c3bf8d6f81333c363604770f3970867fa17143fd37cd5d779f25df7d96a0e6c3ab7ba905bed1dd3810ced376f621f9dc2eb5cf541f54b3917a0b7be639d6af8b58294ee9635f9ead69c912c5aa62e57a3026186700db13d661150c8f9443ad8573f3c783b3f4f3036af360fd5a63eabfa0f9acf3e6cebd5a47fc27eca1f375783546b53cb4efd79fb2f6daeba3fd63bd00ae4d57deeeec21ab2fbc5e961eedf1967d69a6d0ab05cfde65d3d7713673d41baedd89f2b0679f93f5bdfdd8792eec0b3427d3f57007366b4b061eea8ff61e71867fbdb7c7724fcf71fbc64b8dd16ed07ef623dff0db7b01cf65b90accc22d3d3c467fb1c35c6f0f757e137be7c6ac3e9f5bc767ace442cd852be6fcbba33f9bdf7926e08794fd3c1e65dd7a07e60f8ef9a4872f623c1ce6f3f49e5fc2ec6f828fd1c379c0e246e271fffae2775ddc1a620f36e7d697cfe6312ecb70476c6a2646d4ea719ed03aa7ba86e68e4cfc923c75e24ead73ef5bf179510c1bf3350246ce8deb83403e18e667c5bc51b886afce5146741f3a2f99e09e5ea27865ea5f684f9cb20aa2bceef5805e8471164d8a53e8cbc88e65eabacc8eadd7cd9b70354d7fb4feff9d77ff0ff9ac3b88f3a765013978b08975ad8a1cc26f84639f1d1d28b071a19eb96bdfcebf8823528c5e7bd1e4a74d5aebfc4837e1f86a4fa5d8a938571d984ae4da5518a4fbb84c290ed4173157f11866db87bd0e0de6d6b76b1fb87ac881a1cf1fdadd4fe9aa2ff565e7be5cbd6218a817b4d60b25dfc7fa62d7aeb3e4ce42f138b7b1b85e721b05768dd93cd52eeb28c82f5160eea1be4dd70eb300d735034ef09db5b8177b077d3fd270dde4231d07b226df22e4ff6b9735e403f405e9276539bfeb5cd609fa3f7df9867cf895e212ffd3ace25e7a831c873e2812e5659b8ed45b1aa897b867a27b49b3e2b27ea86f911ce983deacd40e51604a5318d7a37380e4ec2bf59828c993b14df63cac7b824e825e9f2ff606e0a21d906cd8685f63aca9a5bbb17e2edcebc219536cacc19bed0d2cc7ed7bae3c60bf7f78f60096151913f0016cccb9edf6c7ff28d7d2e8824fe0f5dd58e718d9718f6d01dab373887b5083d4e4cb4a412fd2c31a5ec06366fb9c76e4bea7647da1cf384555f3ef90f93cfcda16a07608d46b10792c12f46f45ebcfa0a7573bc4930d925dca47fb192b7281ce215abb05dc3b81bd83f35247e775d3df277aaf59857c0c886befa3b5da8b1cf514f9dec6d065e0f2a1f6435235f9e0b0f4b62bbfef90f3e340f750a47b173406ca8df2fe689f807dda5f477eba8f8b3afff774ed39af9b884cac417e5f97d2f5dd2d0623cf8d74db337f2e3685fbb03e7b72c7af79a8e75b35d625e0a2ee22e5724f27dfeb99c0ba9fd6c18f7e64f37553038effffd08e6fc74a6aacfdeff65c504c489c1b189e8d5783c10484ff3fb4cf9fb335c5bf4572b82c07d2ca8ffac4ceebc53d13c93892cb1b92739c6b4ef315e635040c0bfaccd9bade3f757e2651bc533452f3784d6a1fc4bd82ad5a4c382fb81a967f5087d9eeffba7be67ea903bf95c7ff9f8af3365ceb2c7f3cb2d9300e8427c87f756b4692d243fa55c0bbcef55f7c5113d0a9bd2fcdb5fad4eff1be66edb73ee5367a5de9c5211ae59dde9647e71f92696f3c182f6fbb2cf4fb7da4f3e232c1583fcbb68dfdbdf5bfe757ac74ef73d59b035e097088d2fe62ccf758db32d4f7209cf0eba41cf412c5ab9e59a755602dd9fb3ceff7e39817c676a076927d0e7bb8f7a1e13ba8eb5477c1c8fc0cfdbe120287c5e651fc9bd8a873c0540e2bde3635466169e898dfa5e120c91303f074bc6a857965f37824e3f912f67ad4724a6a6ad3c32ffac0ff337e60e91de35e54d01c25e62aafeba64046939e5745a5f629a8fd17bd079faf943db3c6401809eaa8d7b4bed7a5b5d634be8ff5161e1792a3e243f73e539c3311f8a90f74888bdfadd37702cf7b5c97dfea9d26753d87764ff5f1dd195edfaa7bb192867bdd7321f799c73ac60649e423cebd96987b5d246391ee1d22c01214e70d1f9da5ed5a1dbadeb83eb2a9017a7896834f45eb30ecb34b654658e7f2601ea562e3e90307eb51377ba7352234a7f5c5392a580f388fe723f5c7cfd6bd8c57694073cc8e6fbbb14cb1d01ffb8f78bd486ceb13f714c7e58f2cf6a19e103fa352cf49c375b7a17b07b896c156bfe6c85647368aa0d6a3a5df1fd50561b909030bd75fa1bdd4e4da636e2e9eab11eace8787eb84d8673cae0fd26ea4c688e2d80f44b2f18b356ca2fa0eb62e71fde1a8fe2a88f2d986e689a37d142427b63631d57f64b1ee49708ea3f304f610b509e659dcf3a464e249021d56f78837eb5cd78197493938f25831e82c35cbd0b704ebfd5f9dafae22ff5a84c1fdfa6fc8b1deed916cb8089a7df792cd716fab901be15efc02eb18ca8f007c1ac25cec1db9daa0f740f62a6024105e12d2afb6afebe79ef399380ecb86b3e1a1dfd5f0a3ba2d1dc7f002ddcda533f3c8ebaa0e47c417f6aa683d24c0c304eed9369fc552a23502dcde7dac8779bb87f49c9c706db9c970520faa9a67c36f3853938a9ef5da0d70f39ab3ff968e1ee9c207fe37bb06a09f5839626588befbe33313cf25f73b6e7e301712d2f1b8d6c3731fc6f4b06e65393328470e2f2b0fe48bda8d3f3257294e24af5cfb68356e7ba51ec36093858af689e614d979c89e4df502c76cc85c035fb57f2d202efb208f8ce3416e06f861c8d69c60cc2074c6c5386f80713648bf58d24bf36434dc454e7f3b6b70fd48cf2ce14ffe2afe14584552d7cc6b17e84df0ad5d8b8b1eee69f6e6598da1089cdba02309ff4cf1adda6b214748bdf72f2db9ba179b7fb6eeb4b6af712ff3edd97e022ce3c0ff0b79932c7b5b035e401f308eeec5ae38ee6e9647c7cd921ef4871c711fa8bd879c07605abe649ec2d4b696b82feaeefdc11fc9f314eabbc08fe4f0321a1c4dcaa38dfc16bb008e8e003884b2149ed7edbba5b2d1e0d7d57d093782e30d677dc8c428a351d747c06b8f793af17903751297b74add1baf171e4be9f5904dabe3fe999832a967ac39cfeed9f15846082717ae293a31bd67a78f4735d113c2c725faddd778138fb0919e89ab3efafd2ef537073cbe877af041ef20fed38e45b21c865f3ee3fb7b0ffb5fcfef3dc2cf0ab1ea73ec17d85eee590ee32b836fd89c8d0ffb25097ffc6011133ca78fd1f00fc02d9f6c605fffbc572355f765c8dffe6d540e2a639463de479eab96f39fdeaae1df53e57e6f089e735203ecd43ec0cd578a87fd0584abfe4c78dc48ad6e1f6cea87f9a3ad798ebd66ef600ec3ec91bcc13d5dc275c8f01e3efacd85cca7bc72fac06199ea3f1ee6eb62f95b63a2d7f7598ebd47ef8d7b86d9beca67fb16d9757af4fb5c5e3917667e2f54261fc633bff45d3bb8334c4d395a77767dea79f9d5bd7db72fc0a97bd32710ab6dec1fc09b2e3e57237517f7aca6cf1ef05404bdef5d1f6a1b05f6a4150beec49ac25a5f1e8395ee9ddcd2cba3c9fdfd05b6903ed8c4b71db2ef48bf20e0d064a1ff42b0541707e8f9ecd94508bd806186f13e9b1efeb08e6f3ea8a36a7ad21b2c0439dd4590d7d3361fce3fcb7b207dd9c9753ce15bdc99aba7f3265866182ec42f9e07bd9663068b00b8168563f8fa7c7b325fcfc48df91c45c706f8b6ac7b249778e37adc898f604c52f4ac06eb764b3169ad67711eead84514a40d1632b6cfd17c432e8ef43d3d85ad90d4d840f5d9df8dd5965e8fa9a57b78461b7e7ac0317ee837aff9e31edb393fcec6b87fa679198af913612ecc9331de630c0de46b34362cf281084680d733f4c1297a8097057dbbb80fac48495e70e56b8755b0cf1b6ef4741f56aa84f10bad1cef7713eadfb0fd0c75008ffce02e8e233f0f77742ccf21f4dc7ce33fa99e57712f41fae10de9be15e6b7823c4ee4a3b9b3f2b8048c995baa681766feced4278dca6b7fb67e39195a51205d65dca9a9add74ab3dfedf18f3f8c8977029ed2917ac6795e22e7ba768ac0d62b4eabe0ce7cfdfab9f2fdbd866dc6dfbbd73026e8f37b8dcf09fcdf5efbe77bad8bb7fa7f7beddfb5d7589cd21bf45960fbadc5c5aceee32de446f30f7f2077bf7fc916ca758f7945784e6111b606c4bec6f6fbd2e93ca78afc2b922585d4d0c2dcb298077cfdc04bb6d4b57edcebe61b308705d727829f3bb1914d5a18ba764b94621b9734270a7951fa7e79aca7e704c9b72e411c24f2b54f8a0bf76d5cbac9f13d2cf745d8b307c66498cd1c35affb5bf4c17a557a9f603303168efa12a2e7978b2c9c14c03bccf0698af4518da91f05f62e5616591c781299cfcb7378354c3f864b6440b3cfb8ae257fe5d6a8eddb4fee61323032ce6273e8638c8d525e8bd8015e9a13bfa6ea2e0ce659ec6b55a414a7e426aee3c039c4411563fd23c0ea43ef353c41ffcf28237d55e8ff9b67fbb32fc4c7c53d3fa4273b69f7f98c1ee530208e9f2713f5f0e170fd3862fb75847dde291ef751d01f041c205ff693f0e3df2523cc95dfed3983b9e0fa842cef515e0763afb03148d81bb8fea9b5dfbae731fb8ef0f76897f17579f77cd5e109f364c1df7f19a3ecf88dfabdba0fa78b8ff08bfa5218ff45760be6760fefe844e0790f00ff0ff30d897ae1756e5d5e63bd28e2adedc612c530e074db6eeaabdfb57ffe5c2ae65f916f493f1df582e42374d40bee6553cf585f2d689f47f6a10fc9d9aff6917e6a381cbddb8cfafbc29efe0e4716e5f4e0e5c579f9cd7a0ccf93a70fe8dcfdd7ea318e2780f033fdf33df5e39feca9f3f7f6d42fe9b5767feb05e9a169d5ed577c4eafed3a3d815367f8f7f77a25e17d3691df47cfc6bc32e25af9cb6c9bc1b3c9bbfc6dbc8ef73006dc470afa797ec7f683f1bec25902670a394bfe62ce12c06b7e94476d70ce86dfc709763589da69ae3eb875e369cd77b3917a494aef731558c542c98b6f6030b67ff78ff017699e34d2072713d9e44aff9c566a1e6f914d06f521795882ad86ecbf8a621d243dbb4a7d0b73d4e99853ee6dddc5fce3f6f7443da7ba774af5228ff56b9f89f3d5b93aa817f3535c43077939f2bcdac7b864c846835cd817f958e0539b40febe877467e4600c874829489cd1bb408e69529c5347ddc4b84fe61206d68d621d8401b257ad5de45b02dc524eae192cd697cc01fcd3fe2d5520b70d983ac64493a380e2a861ec5a9c93553f63e0849d673526ce03ffb089bff5e558bf7cabd706cd4b541615f463b0fa10e69af617f2e7e8db9dbee7955edc66db6fd8b455fe49ce8847317a5c93d14bb234b0700d27e1608f1cf513ea822b759f623ca302e3621a9cdf407cba7205e7e8e044f12f57fe4b16968317f1fb70bd2b0dbef0443dc73d235b56f9dbd4512f5160c27c617c57b1ee7890a7e2ea5b9eca53e11c687baf53ccb678e54987da9fd4703e6786fcc6669e4f1fce17cf68d96fccbd31d6c5c358b558ceeef44035cfd87a8758602736b22cc0a387d80bc444983c07ee1937744f413a35a9d47504984c2ee8b566af1418e380c14de67b46496f855e941f0e531f2fe83d17c5bfc958c9f88d8381b9df900d7823b8d10c675c729a29f6390ed41cd9a6c9bae69b239c7596023d806dae3a724da0f729afdb290a72a85fc7984116bae73ed6dd3f055ce2f4bb5dd28bb6c0e58af3c527c030d8d27f03fe8412c976f181f923001726f4e502e34278b769f33d8c07ffa6eea9bea565b24b74ad823afc2d7e47c0b4f32c09d71ce6b7b44c81a376067cb570aff3872e1f8291b1676be9ed3ad7b5215ce790df904225cba6babb6ff85aebfec3028f491d8839d5b54d34eee7b1efdd125dfb44367dcacf058e0d06f8fd9a7ada23e138a5f572da310aac4be85b05ccfd287d89fdeb29b9edd1fb0f8291c973726e93dbac1c5451f5a39abf0e2fb31e9ac3cbda98e4c758efdfdebdcb1a78da5e77e7592feda555bf3727fc6cf3cfe1653e1aa0394b8c7542e601730b8681fdb91a51befbc529f6616e7633f9e547a05d7bd3ea07592312afc3dfb3f34672f9da76a97ba7a887794af075793cd7a4534c3e17ac35f424ccb6961c6e2d29596797d94895423f9d477e7f8bedb4436656c32dfabb35677f1ba3047df7371d7bd2f3d6c8ae984eec3c92ae455ca6d28a59f73a2746f6218d27424c75ec554939a8a6a3f435f4fb84e710c9a04b305c1798aff77587feaf84fe751f8dd497d8bffc0bf81ae11972c3577a87cb93c67b6d1d70a841c6a1dff92e773fbbcf9b796fd972e3a5242f6a5d81b96b59fcefed975cc513c13e43be57a9ed63ca2d3d919af75c7376449156dc1800cf0ee6a2b89e58ff0dee376adee3ce1a70ef43f817246362c9099e4b5a078d6be526c857b5e15c9dadd545dd83d5538b78adee939e25478eba8bb0ad29a513f586f655847ce689b79e95d639760694bff59c28c531d1af05d273786d911e7859cf46a6586f0286258c81704f63cecfc5a678b3c7c59b2d0f345f531da87be81dff9c8e5efe7eaf8ac14fe74777dd997b4d75fb1c039674a3a770fd8b7688c7e61ef736a72057344650f70e39f929f5afd0fb887e87f659526a9fe998ff2df38c43fbbef05bacb3ea73b7d6f17a174b6f4ab0f9585933462a89a92e4e2bc5eb27558e6cf711b2ad900d9d549b13b2776cb0bf72c6cfc9ff8e82cdbecda74dce37dccfbba6b5d2cd987de5587c78d29f2d3c24727d1fc98816fad66eaa5bbbd0ef6f23978c79c9ee05899c93f53bb03c959f2b641f2a9e8539c473c0e5a0fd74ed7c530ad87ea267c8b59d42f4d39fe2f3c67b417676d8b3557edef24dacc86fa48eb03da7f42c6a6ab33da42ba026bbf95d09fe83fb11d4671ed6e593e21279ec5e43e713aeadf6d077a42662ee6cb29f930be54182fb909aeb1b7d57825d20a1ef5c867775ea341c1dcc79c49d35913e38e2dafcfe2e0c2cdc7b48eae2a7a34de70c42d7636c07bb8afc97d6bb5abb957fdde0faf8792d1fc4d6de03a6e7eb01d9db3f0cd813f8faa4f44eb3929c256c5d64231bc507c4302c69e15f0f0ba43775e091def1e3e9135b5bb0c7383990e99e6bb095e9da21bdfe3a873a3b5c2383ce23ca93aeaed1fa835d36c6f812f176c1cce105fa0398f1ed193b875d2b66ceb89cc6bedd1b446a5d8f3826a2ae23c897e0b3d818f70be09dd0c15fdc623f1fe200185f08fc45f4a768f83e14ed167964df617980f825b64d6b3d857c41743ead53880f12fd265c4718ffedd1fa85683ec6e8deccbb3a397eae7cdc07ce257b720e057b17d6791c2bb2dac4615d2c17cc3bcc466a41f3985fed65cae341649bbdef897c87df0dfcbe2c279f75d7ceefe7c86667e7f25de6e6fe08fa0ddbba56632746793cf18a5929e7a96eeda663d35c6e6c73b9497fda5ebe70d71beef9b13fd844fe15ecff656d3bf26361b9a5637d705e55ea6145382c433ad772572e96c81e74a86cb0ebd73fc48a95e3b1bb7f76de49532b641b245bbbdfdc03eb68f8bf8bdfcdbf6929ab175781b5243967cad95bffcea5fd069302de7506e3f65e964a887cafed14c9e3ebf0cfd65edb27b2b547e77de4e1799d3ab51f728a8224b303b38a7bc6ceec91eb02e4dba99f2c9f35c7cd4d75ec08fddec27d528dbc6e99331dd7d337e366644e74ae8adf33e0f5fc85f6107cb88c8e636dcf5f7d1e9a73edc8e63596f8fc35e95a0d0cdd038eecc61f6dd69bd9bba764e2dd56a35c702fa3a31b591b96dd336efb8c67deb5a9b3ec231b81d9abde9b5b61fb6c366265f99291fd1293bf17cd7cc23e4ce979f1d3bb9ed01f6e5ce8dd34c015c2fdde7e5f9a365c47ddb3a71e6bcd91856cfa4dea5b85a1db72a25ff7c85746ba8cd9434a23fbf5bd719c87c8f01be707d772dde2e4f24e3836caecdbe580f791bbba03e93df2fc3ef15df391e3f6c78edb9f049217ba9ac1d91086dfddd79db1e8f639a23e867e3dc70af438ff0de7995ecf97686cadf501bddcd59bdae14af709b6df8b9b4b7c0cafd1e77774531f3dbff8180fcae9283999d5267b1f0d2f6fbc3e14ee3bf037b9f3caba2b57fc9a09f70b6b6ffdf2f3804fba07b2faabfb176208f53e64f6073e8778dfaa799eb1c363bbb0efd59cc3d836eee8f9aff420dd97c6fab20e7d7b6343adb23d5f812ee6b0343488178eaffba46717718939a3688f7ae777c5f574e77e79a4dbc27b09af2f1ec5ffb44d34c671d025e1ce8902885de2b8e298c648a1d64b8ef56bc7bf178f312fe2d185d46de358e06ca41e9aef2fd0fbb650b40bb20b489f3a92058d72f5bc3bcdbfc1e7a031099dc5cd108ddfc8de6b393ae691bef803785ac69a94eac8e7bc64492991cfec023e9b48d95bd1fa8d3e3844e34243761bf21f6723b58a973be008745c6f1c05761e2a39b6e14705c802de9f75ac8b8e1fd611e9e5198d19633b05f0a3e8fa61ce6eef350c54c8914d895c057a9ff545efcad2b7ef4fcf02768deb7fab3f7e8e86bbfa5cd3079f29d1fbe2f51efe8b5efba1689be87597253d7bd39e3bf499ad7bf0d94f67f847fb37646ed1b999874a763026e6f16dad9e63dd366d97ae15f6a3d1fc1823958f4bd5e3ef57b1f35d192c84f12bf63dfef11ca3df896575f73bc647e7f497c6b725fdcbeeef1f636b5d77917f39d0fc4b6d0735cf3b40bdaf6be5c9049dd92e1b03dd89f506d49800d727894d6ac9d63c27eb6c1b2ada09c712b97b428f261e97bb25b2d4d87efe057c4e34a758d6173b53199c20f67c7fdc7bb14f88f5c86f59a392ec012247d3517a8ed74936adeedf6fca9c4f0c16cf5fc6582d57feb558421e19f024325bf74aa89101ae4e92db9d70383ce0b793bee557579ed7dc5c11c5126d6ab3d967e56960efe29e912dfcfe2629bdbd313ee689927faef47136d5b5bf4347a5f158a8d580dcc664fec7ac1a6c5781bd4b7de3142a83e30c73b1fd1d927c21ed518267dd89c13338194c6e0ec76c896cef23a85d61736ee989d4fa9cc8353793e6f670aeae8c7be667e4dafba4f43e53c2bdddf4ed66dbb824781d65744e4aab88494d6ceb3eb7b44c273caf3597c73b27bd686bd7fd40f3d36a8bfdba849ed394635b6274793b17287bd2cabfde66bdf6b5752eb199137d70743a3c76fcbbcdd62f677ccde22cba7e56eedbf305bc6a1863f6ded8ec7dec0b7fbb8d027b8cb1aa2cd0299dfce87ae0a57a7148aa41ebdafe4d703fe0fc8b4bbb8a7b43d1bd3057df68c05ec7cd3b96ed068b6ecad600e8791106a6c46099b0185327636c1d70cd88f6192ade05d938b4ae8cf676d732eb2f707d5f0b83856243377d7b3ba82189fdc16915d8e7643b676ad5309f12dad771b900bcca950ffd7fd20afae1d13870dd45a45cfbb4a68f79b71ae78ade73d6c6a421b23e1d6db298e42670cc0ff3fe111db29909ee89e3e6a03bd07d793caee6bb03c9499f311f28aec7c31844d139d6af67d03f15e4d0d11ed8911a49f48e7bb4e6911fe5a97f45ef7d5be9835ebcdefc51eba83a7e8fc7f1def4d2fdc5d47b380ca6d70df888fcc126f5af05d58db83e49bb84986ff61cadd5cd2ab02e68efe33a795a3343b143a0f684602d356b59d72f201f9eaf5f80fa455cc73aa892d2bb25fae04478b8d03bee71ed7c015c5a18cb8cd4ad2bda09d7480217476540deac387cd4ba94ad85f22ed0438b747b39a88c8975897c6b1f95c5273a6323dfbe19a3bc982179467e04aefd0a22df9c2c5b5c61895e14a182f96e4245033f3ba9d443acf4b7823946dfd1fbc0bbb6fa3e1a3de42fb215fa8ce0114d9d97cc55bc02ea11a4a6d682f0db161fba063e782383a4fea6d1add9dbfa0ed612af8319cebf7d77cdb414e71ef9bd0fbc9c745ee0bcac79ae5f328ccda7edc1979b00ae3ae4d453c03ab96461e97d8681778bc46bd5e040290592973cc57945c9d04156d1b329a736e9dfd024f29c9331d60e89f2839b072ad7941b997d5e8cf1f7418f44a4660a6344f3d786ec3bbdee783fa21c6c3e1ecde198e4b2030ed391bec36788b93959d9979bdcbdcddf8fec85d0b7a45510156f6b554ab65e417945a645f71d69ff0ada7f9132a8900d427060d69183398967a0f30187691bf7cc7daae7045b04b0153f9b9a44d05b878f9a5799e6e96dc17eefee5be04b0e72b4ff249a6341fb6a15209daac13b41ed7a2367bd957f3d90beb97d8a75e0898c258f754b069e3f812c11fdbe45fb93d4839f8c31bf7f92aac13164f71fd2f311c56b6c61b0d2f9a4b690ada3fd0befb39bb6c641ed2424332d6cc8391d13d249a1e28dd1991df6ec221a65fb47eb499f97546a1b07b6d6cf3567e15af500c3116a4eb9739762e2d5d84e8982ce1def86eb409b337f55d784b36b7bdd875b334fb680657d16d492620c6a9c2bdb273db4061bdaf34870e42d823d6b118ca2f4566312d531aa0dc9c3a17ded9e781ddbc204a9867f10ccff43c76e6f74f25beacb6be05856c2667df402ad7d4e70d831d7d9d63b319cc4fcd9c7f25d8ca0afa03074731f29295a8b7edc73491f24e1e4df7ac7b0ac7178d8f1c0dc87ca15d902041fb4d8448029c7f074d53e4cba8ff54b86f900004f649f6cc13ed9c73ed27fa64cf2999f616016d1d63bbcad69bfa956454a8d0d7c138c05ed2fd047d1d62ca2604ff57e075b96ca23f45d30fcca738df9beae8f24fdac5cad48e38b51bcdfd988b505d9da6da63f42a375d3d73ce9cdb13ea1b60ed813e686f4d9c298929e8df40eb2531979436b8a797c788e63e639e30d6032d0bc70a8e4a7956fe53160d6a1bd0175df7fa0f9ff18613e13b857cf2c42c2fd0972e2a8af6cbe6b152cb6e0934eec73aa6b0743978b84e901c6b1cac859b8b21648c59b37f61c6fa3cd21377c6b71eab2fbe695b73d7f4e2e5d7e8e1a9712f7c6bc3b9ced4d3f67f079595b0df93acdf3a88d8c6c1296d38a3f27b9319dd8efd8df10bd9b873d7b4fb0f7d871ed3157065aaf42899c61febe94b214ed7b6a1fbefee09ed3be5ffb8c3404dce6dc3bf8fd3db257909c7a7a71acf9cdd79cce29920dcb4b817d66a2a7d8eb2946fc6b84c7e550ff0c73f531fa8aa9b3057c665d5bc7b8eea50ca1fe8fe15cc6d830263337e71863efe7f1c4e2df35b016606f613e42ee5ecc38b99ebbf736fe863e28a3ad55a45a067845e2ef36ddef086fd6db7a7865eb9b3b3d7113550ecbeb3e64fd7e129f5af9517f3a390e386e6ab60f6a6357a19fb464bd8e5db3efd1eeb9fbcbd0d4222949af1d7f3ed676018d9db0efc5f7bd317db8dc3942f16e31fe3db2a3567e4471d5db766e95421caf8f6cab2db283e2b57a62cfaada46f207a744e69f8ffd6a1bf3bcf7ec73327ac9963d1bd9eebd556015dd1818bc233afbebba7ee283907d554891dff8cff839adb9032c00a403d1d9dfc255d507978462414fb0ec215d4cea1f211611611f17f705606c5ea81ba0dccba9e2a173378f749b723323db8f1f8330b687cfc848811e6f3caf180798f64e402c059f13e82cb8421f62135be07a1bb81e406413f03d4d3977cf36de27bf4f705d49b3f6a6c9e01b1442aef29a7f15e7f7b14e14f129a2ebda5cf41d0c3558575b1f1c453c4514838f72578baea131624f1fd09cd0ee1e0fdffdf7bcc3cd24c20aa5ebbae1ecb31db717280eb5681c0ff8cebabd6c381e92f21c595d2c7ca6f70130281bfebc0e17f69773caf6103a7dc28b3604ccdd2ff4659e0656c1cb62976ba5a5fbe11ce46507f965c591c8af8be39a7dd8bffc584563308ba4e71da3e557f355dc5c5d033f9339235bd768a7952fe3f52d48ec14cd2de88c053faf027c7eb4ef09970d5fd7dbd953f5f94dfcb0f65e623815f57c9fdc1e3ff7a31c9c6377207f29334c8f085ee31cd6e2abf7c2f72f4e5fad7353178fcfdb29b103beba7f9bd380c35cd32d39d99a45bce5fbe528973eb29192b278e1cf0816bb0662dd2cf7ead76b23e0b37cbc670567fa98c489b673ee9c0d8345f631baf6e9fe357bf347bdcf9cdec798ebf6b9a5fbc51cfeac7e28692f3ddeff0b72c644a39cb5b74e140fd7074c86acc5052c9d12ac5f0e2d7d718eca08d9ca91319232c02d10ea93b6cea13ab58e733fdee71d9e9a5d662b9e9430b57cec3bd77823da43b968f244b7a7f74ee38f88f625bef737c74df158ee9ff9d0db4ce2044fef437adfd77fb0ff705d44130b61651862947611fa57a813c5581010574767d7390dcccf28989f53f05bcc1b7f6f061f00c764ce89e27eb527e12c580acf7d5c03eb38ea35f50bc9f01e9eade7f8935fe7562efef33e36a67a497df3b0f2adba0ee58bdfdf939f676c80735486adde103e4f1e3ec0e04d26de3ad68b4f5257729b9583325ae7ad9c768359d8b6171a3d0e6bcfed4bfaef9f2d3b8797a15d86fb648f376392eea200f90006b685fd17ced766f8edcf94137b8ab1de8bb844bea7b761ee5bef5fb61e62155826ef9fe77bce27ddc03bf3f384fb7aa1af02fc9ab6ff8f7bc06ee904f266db07faa0151b60ea0dd938b93f38e1b5db64ef9f5236e7f72487e9c57288b17176d21bb20dd179ac7b79bceef23232fdb67c8c9e95374fd04b4b6c6152cfc9e0d1919806fd7dcb3ee66a67282facd7c468da7bb91d9be1fe3fb9fea873ef557f132b964cea7fd7b1627358b74d4c5b6afe0d3c05dd7838f19d0f9db9eaa9101fa37d976febe1cb7c74155eb3500605ecc9d7e169fe3abcccd76c1c44e2ec3736eff3ee70b9c61f3f47edfa04d2eb3cbab4f50dcb35f607176b2858ddd1ed8f26b5e46cfc6a1706d67baaf49b3a5227db529d8eb1a8e7db69073f8e8b81b5e3dc02ffa98b59cdc6c4f838ad74ff3bb48eaf2cee07da63aa9c8ee53c463e3bf473b3f8b0106fe3eb2b40166cb05b9389272d7ded14fa6991ac378d3c30f642a3035befa00be2c58dcdc2cd173b9e16b7a5c83f85b87bac803d8739916a3c0e8c27c260d6b6f5d68375e9ac218b49dcba96f73b58bdc0be4b2d273826c2fb419c9de99d22adedff3fd619b142e7c8d413d08f595b4fdfdc9e0ddcafec5e9f6d2d290a86bba9332ccdf510fcd064c3eb5bf6dde83b90fc99603d1abbdff09b673ef30ef4de0e1b0fa81ec76498b514f8be777d92877b0df3168a627fdd7875d75fe8fabec0178063cfbb87b631f8f8dd5808e5ede95c7b7f9c3f30479a00ef02e70d209fb7f40755e446156022544dbc598467c2f65847be6dc53db3b0b7c0192de09d17f3c434f7189c5c2a47708f6eace5a773c9ecc25497aef7d371fbaeed99fec2e5b95c7f3a6a81c6db7e4f41cc1fe2255826f273cd6fbbc1ef3e1ba9babbd12cdb1b98cbc2d6dc2252972d3faab6d738cc7595af810eac22d52c09d7d874f61f92d17d22e3584f373ef8a46c8a72099c1e7936f6f2483ff3f1477e7e21af7636f414f04b6265b06938bd2f59c317d1a7f52d4cdc3de7ef33a1f17a38c31424c731c691a2f19f2ce9d94532996718f346fb5c296985643c627dbc960dfae0ac04bb8fe66fcd0ab848d933807bf6fb7a78e9eeeffbdc25f79e0bdf8f0e03c0feeaecc9a69e01deb51bc31a7c530e5b392aa3a567488f325e0f07eae1d8f3a04c8b748ccf221770469bfa85ae3d65025732c401154fb2d15ef3fb37ec67b1d8765ddb0acf9f8571de74f679fd97f97af8b7d1fecc61b1ceb87bf405f7e80beed117de83894d817f87f362686f75de73b66571f2864763947f76f0e99ab8ef11bd1f1fb3bb13ef69d9ef98f7b9bf8b483d131a33608aa2776de1d7cdb6384608788cbdcd3dfb99d40ce7346ff94ab0033653f198c2199f436c625a023bb91d1777993ab8ae8e7aa0776aac118c27b67244dc772c96005353d19161cc2f15f7ac3d89ef612cdeb2d8dcb7bb005307f9d0b8dfddb9749ef3b47d0b3d0b0fdfa3654fb21c80e4fa6fcd19e6835c39984f5438671873fcc19c61be1066ce6a5ed4c77386f9613197eba5f39cefcdd9c3f710cf19c3a3fadc9c913e840dac4f1d03c36bce9fcb757fb4c4c701a6a314f39f555d4cb29a7ba8e313b0f916b0c37a61602d567eff24da2b2d1fa785e926e71f0eeeb50ea126d33bc63db36fe85e1995c527c6e5c6f59b8952f30ccb89426a6bfcfe26c67c7514bbf5f4c04f3c117c822af4d3377b629e1382c3311b756a0b4e2eb635be8845a23948f34456f771d92f0887298ddfee1309ef5f3237746d04394ceac7a87bbc9ecdde4d27a62cfa8dc8c7011b1d5ddfc188ebda75edf3b9753e9e635cc3d08a3bba87bab6423817200fe758b7299f546d17440d3747b3a774cac729e03c6fe611e972c0d070191eaf9a93b315a321eb778808fe1e605d11bd3fdb662dece7268fd1c56dacdfe3f4e1a07398be77bfdfc6a3a6e7d7bdbcf3336b752f57ddf6511bdf827fef58e92f537d70f92a1fc0d96a7a716275f56cc4ed65414eff718dcf239bef69fd0975f3981b8ec6ac899cb47d91562ca70f982df6c4cc23a93f4ecac185fcee40b0399f8a41600e1ffb1c777c1ff6bc007e821d6bef0862082496d7e02491b9a6bce498f3d3177066ffd3b80efb2c7c9ed067c1ef9a67b5623c8fe31984fbfc8b39d9d2b57385f3f295af162b5691f42cc20988739235ae54eb3c6b387ec17f2418522e878fc99e0311e0fce27bce4a724f16076894e691bee8c6f5efd972adbd486b5030de30ad17135f4b78d830ffa84bf2c205edd912c4629eaad990efe60fbe786fca492dcc693cda8b9d1a0586ebd8f337e2b30ecb3595d52dd5eb75bdcc6843709944719fa7ea16ff249c30809709f1aa1aa71ccb0bc4547d7b836c9599a37e12ff92f43ad1be94fb7a8ce229e0b81595cf3ec5316371bbb674ddccee7ee56de52f64a6e6dac7dcbf7b7e0df89a2a8a8928beb67e3eed33fe726d9fd21113f31c2ade2d91302720d98fb5ecddb5e3314e2a9d43b07ddfda76eb17738cd65230bf20fb5c2c83cf6f88e4abad2b892ff01fd86bdfd6f7647f8a7c8db69de009628df879b5dea4e366f1e8cc1ee548eee61529cea429d73cca10b7a238dac09314a804cf063874336f3c182f6fbbcc61facd0c5d2e0c27f96e8cf21c6f680d4b5dbb4265e32692b515e4c8f1b55c6c41887346d62e983758ab0f625ff4be38fe41ea3505dcbd2d59becb87dfec253873ba7ba963078ad794c8aeb07e939cb5205b82b3f681bcb763e20ffc8ac7799e00d96a712f75a2c0825af5b66ff5f8cc533bf16ff6fb87f16da277d99e406c33d67e623bd648f676ebfaaece61636de3a4d4b6ac4dd45eb7eefd280ecce5fb317bf24ea487b2a98711c51d46fd7354863b5321ebed2fb6b391684f3d359fb47610fa348c89f599948343ac619e27d13c1ac1a36b6a1ff29fc767993a7ff639c073ded90b592b978e7b3609af05c42c676d7e97c946f81b8e47a4653fdccbab12fc55f01d6dd2ff03f8b3be26ad46fd4bdc4b7673e47bbe0e4fd6e892e11a871fd96c393ccdd7435c7fc0bdb7d0b76dd51dd0d86e8eff76a33cecd9e7647dc968cd8dab0ff6f176d1b52f1ed7e9756aa2a212e31990716cdbf158f2b9f039b43e4a70fd337249ed1b37aefb375abe4b07d7a18ffce56d527a37246f667511eb2951aef8199db214e4d1baf138e84310c5e3c4fa026259a708c7b2d81a91b6bdd7d54de5e084efc3e1041733a8378b6e51b010d948ac1c91b5817e7727f22f3b26ce7260e3255fd5e3df8b713c92a908c69eb0f1a8d6fe9704766cc7c716adc12dec99e758bf886a60080e5ea7d747684fb6e71c74181ab7d2dfe0f8c423fd257fb1fefd735c101d37eaac21d9db746eba7b5b30de965ea0bf853c7c57b777ec1041aeb968e771b2069f9ae62884beb390e781c421b0eea97d165e07d5675c0cf844f42c033939511e943a6ff4546cc292e29e3aff5a9f34fd3e8edfdf635e9de20f71fe88f3af71fdd7b8b96fab5685bc775be6d2babea935073da2b398dad4a89c22ff0374988bcffb82e83fd92c1205c6c93f575837ca8f4d50a370c2bd5e827e1f9dc1ebd97879a8e4607f4eb9f832e460ba3d231033617a3db7f41cc23de5423b9afacc90c7417e30bef73331ca276278ec7e13dbf2bf3d7e221c5f135fd78b5ba20f6eedd87e3b7ed7b6cf893db29e8d4cec976fbd433cbe8b7574e6bf6fb8521ef0a0d4dc0b358f08bb771f703508aee77841eadad8ba4eb4f65dd1b902785bd12861312979ce1bfa1eb716ce25dbab496b4c95973f900e99d558898332fadc416e01ffe61ee67cb75e1bf48f7ea5b55da766cf26773000dbf5da48afd9078aad2bc032041bbf558f5ee7cb6adcb3a6bef611f6e1bdb137efbb360ec6fac75f81de7f8d7b6a9f727d4df5f9de78352ef3a5719c7f0eafd6487d5d4dcc7d52a90b887504b604bf2fd42229e57dd2b3480df73c5b013e93897b633036cdc1d0a32af229d64d9e27658ade0bf8bce2ed264b74af4a1498f3353e2b31671ab2d7934991c425c58f9867893228d3494ab89afb1bcc8d3bf85c21d9f3170c9e8a4d799e01d30db08ff4bc30b4cbdaadefe125c67a7320d81245e85f13f46c8255b08c95484a15ada2dc57b83e19ea99aa15c907cda017d23aa4be0dd84c80af8431de0f2b5fdea7ba46715701f70670e22756021cc58045724136c2e583e01eaffca83f1ba9c72830b7e83ba2cf6fabd12543baa2c1f7be64490feb7ae457615cf6fe66a6002e5101b8a4a5754ef482c32669de1db82e284ecc250acce32a58d46b41f8d67a2b7d7014ccc73e9101cfb08acbe2b6aa315dd03b596764c7a43e8377857f5f223b2606acb504eca248c7f9c4e4b6077c448c7da1ada18e16af7d4570f54f71cfde878a5bf727832ce85e15fbc52d51609deb6b12643fe8178c07e3f73fe389b7213dc9495c428fcb67dc53f78077dc3332c29993c7dbba8eaca2f81d4866b1dc58e7686bf7c2c02c66183fd675c66ee64a03ddd352d5ddb899e3cd335733dfbd4d31b6dd45168c4cd5ad54d3952febd9480d1ccf3696b2e71ae8fac25497851d19e3816e8cb537df51678edb1fcf462af0a4d89eb534c60327d0fbe6d253e78eeba1efcce5c69a7bae6d2e3749b6283cd718f7dfbd11fa5e36bdb1373634fbddd06cc376d460e199cec2edbb8eeb2df17364cddd5806fa6ce19ae6725cb8be734de24d647ae3bee6caf3ccde0c1c633ccedcb1e678e3e2d573afaabb56179e672e96b2a5a1b1da23f56d29f5cde526721cb73fb15d595b168b93312eded0788cb1e7db6edf3534f4aceb1cc6e35d4f0bcf739df1c0712bf5dd5dabaf4b598ddc4d3171b445e68c07737beca1ef46b683de471b2dc72e190fcccfeb72ac994be792d963cd5ab8a946eef3ee8d73cd2daea7e5b850179b62ee787604f33d46cff31c3c2e0dfd79f5c6c5fb72adbedbe8f952df7537daab37ba64de78e07823f67ea9e94aeec1186b8ee35930df7661be2f61be061ebad65ec3f5e612dfebcd762dd771076f86969ade38cbd07d0ccd7a4756c4c23335b49e646d3c5772b3a56c644b19cd8d91d9634f5d024fce3c735ca45be1bae5528a5c4fd21cdb41fa7a77c6e79418d3919c49c4d7bbeec3cf1d834f9827c6fae51cebc57aa6609b0efd1bb8c2348a134d7bcdeefd8e7caf5dd653340feb6116e9de3af5933f587b231819a79972dd87ebc126f24d39929bebd3c0dec7af3b16a3741ffbeebddfcba95e603eb32d5c77a8cff5720035b56f6b06a750bbac67ebc161e51b67780e8cb30f7a21f63d6c2bd0719448cf15d04b267c57c000b508ff6791c45be0d359cf4606f489620c4f56470d7761b5c9f07979c9164a5e211de5ea90cb90520de31e2d0083ca849813e02e0556916ca3221a01ceea5f01c6017422dfdee373c694c93906b857296030a0338af4e8511cbbb22058f21883625673b40f00c720d573342778dc80e35d942bdf2267e485f0cde3f33c9d004ec2252907cacac7980984afe4b11eaf303768ec7bd21bc13083e7bd8e4f866616ecf945ae47e7d22dee7915e87605d9ceea310d2c3867c11620e756e89be7b474f15919e0f9839c053aff9c0beeb196f11c836f3a827b235f7ed3d404e3f30e6a82914fac0f7a187fd0de278a75087dec0b05182f0bee355fbf646ee96d904d47f80ec8bd0ac26da2551f8e4af8906539e90126079a3bcc2180e72c0fcb811201476963676119068c157816e1928118186066e9d6392eed3d3d8b6a6c8ed61aa0790d956b8e6bccd57ace3ab61079a7da4ed007d20a300fe51ce30c6987a4e2d61dcb107e666b0e5ef879aa5eb265e9ed09261d3c1fb8ea9cc6f6e0d72e3fc73a60f09dd0198cf3b8985310bf7b01fdb5b1d2a7cf3c275b8bca6ffee1349873d8f640bec3a0c29c6798d323f60752e4a8742dd0fd0043332d39ac4c34e73791ad47f6628db712c2dc14e764adf692b29052c08fe36c606e4ebc716eba15abc355f4ff85bb19f88e6b6bf6481df98e0a76c4421a2c7ccf346d29778d71febe1cdb9a5bccb385db1f1b63eb7d59d88ee39a9e87cfcfc4d8684b635c2c839101d790b1aacb62930107cdc65b92f3b1b61f18bbc3b4bdf9019d8b0be9ea013f5b75b96b4fcc46788c8e2b2f96e342b389bca2777237da9b372ee02cb6d7aa657be6ab33469f6923c7bd9a9eb621eff02d1bc3b13dfc0c7b5c2c17d255755c59b3472f99e3be64cbcd8fccf622647364ae94abcbf1059fb563ebddd50ac77153c31ba9c652ba8ed1d98aced9853478f334d344efb894cda53146e7f1d55cb8e6bc7e56636b8c1dcfd416f202e6c81e170e3adb89fd65da630fbddf7c365297eed87b755cf8b7e68f3dcb1d5f55b7d81ce0ac8775b334d7f33434e70bf74ace0d5b5dbadac4f6e6d9f4f9354072f3ea79a6b674bd37627f2c3dd75c7ae3c2f53c5b33c6e9fb52b289dd08f2b0b43dd3775c4b736f876c391e2cc93a79d8b6b1556f3cc663d554672945a6a7cdffc463373d572adeb01d8af1c3dcc25b60fb6983ecb500ad814b647d21699e2b7963621f221b0b6411adcb5236899d0bf34decce4be649b906b6566343d5f6982b2379b75cfe3774fec08e7a778b456bfed437db4de78e9b6acb8d85edadf1006c404f2a96b6b3c9169e69c27b55f04c3c464943e3a3361dc8bae7591a9943f259b1646d39b4dedec67b33c605b2dfc7dea658229b7f2985c4ee53df5dd932a93d0aefaf59de42ca6afb754631ed904d87319891edc2632fd7368d897cd53f9fb0ff705cf215cec1758dd90a7b56fd0bf976f76ca6d5d63ac74563ab85fe757bef5af41db51d8d91aa448109b9bd37fc0ea7dabe2aaea79fc00b02b186b3312e4ea1729531ceefe014032e23f6cb016fd9bbacb1fe676cd47b312a121f227908810d89ef71679cedf7aabf43d7077a7f005c2cebcb1ad7ad9979a278af31706177e36b81c27e4f636b2fe7e97a9779d07305fef467acc897b86701c663aacb79a21c69afd227fa2d60ffad013782f08d58f3a5d4d702d98a96aef9bed4ac9ff6e6aadae8fd5f17844b0bf029f03e247544181bd0da01be432f015cc8b8243118c25f167236e7f0afe906e370c19809af5d84ce4205e3adc6fae09c28de019dbd217ea733b6353cbc2fb523b2efe4b067cb099cb1d62156fa058717eb493b06c7fe18e92fa795ffe3ec325cf8913680b988bc411eebe9199db52b5dda93fd08f66ecdf135999377c331a3646be61fc1fc60e85a95945adfd04d392a8117fe60e8e63956ae45e8f7917dbc21dce718636482be97f364323f90e710cc34135d5b738b86235ab36ea3cfabc84f8b0fddbb11cc49f81be30da4f0ef0f5f5ec7caf5069c76c87e87d827b5c3f118938ae27e0e7af15a2de2ad77041c83f25a30bc3f385e81d64fd7aa88c458136558638b53fb1bcf87b7a1f3856cba18dbd2cdd8d7aa0acf0a54e9c3a9ebf0338213023d040dceb57722f72463c2f283eca6d4b776cc730acc31c1cd5113df446b30b6df970ec56ac3312b434b8bd03f5a61a0de66acdf30566f387e66d1ff1f23bc26efd15afd1950cc7405e914379b8f5eaeb34f955efb89d617c9dd87a3ce43bfbf0d5a18eb1fd5bee6f23334b07109af16d9abb097fbf47e558d673439fcf5d361f08d081f3a5cef2f283fe1a9191fbaff0f3a87e3c8f72ef4bb28c873cc7dc7bc37a9c7a7738879a20e99a98cb76febe1d59848076382fe6fa0ff57c64426bc51dcef6f2b5d031f07fd3ea8fae47df2fabe8427ea2f82a17b46fa35d607db69ad37d278ae49b80eaede2716fa8cf08bed00b7e57df9826be2bdfa3ce3b862c973c9dcd6b1f33aa60f7c192ed61553caad38525f97e3c19bed0d96be2b8f96d2751948d17ce1266cecfc5eee02ee45f537e09ad47e35c1c4c158377f47c1e648f924613f95102f2d93b28e7b127fccca43252f5af289fc0105c9195d4fe2f37c420e89ea645d2e62df2c92cda034708cfe35f4addd9df982e72d14ed73a5a3f3c4cb59ce6becaff47f060af2e9b49f41055c8094370c7069665b8c950efda15fce15331ed73a44be56f1e71e8eaf3b50d798bf475dae8a73a0b4af119e7f801d1c6ebd7d3c591c816bc6f7a4953ed8508cecc8ef7f46c19cce09e4b5c2c0acc2a05824e5408a818f09ebccd916e945fb0cfa94f039a27536c6a6bcf2afd2cc2f4ef5de7e70ffa487ec150bd70172cfeadf30f79fdb39635d92a34c2a355b295e3f1c514c72fb563f93e36240730c5c039f2bdde57cc4c544ad564184fc6f2a53a7d0970b43b78b58f72422235fc950831b3a39d2f36760e8c7e2c3c178ec689c0cf706abe7687d6ba3af88fe4f2af5cf1aa7662ba1f7a69fe3fdeee31c2f7e47ef944ecc3ef455d5f7f436c0eb0a758e2497ee0fc97306ad7c1b2b87e4dd1d9eff1acb2392fb31eea947b25e0c7e46ba2685dee0679de3c3b8bc9b28805eda3ce959e7506ab848e17ae70273c27081426eb2fedd88f45fb731769a9e9953c3574cf1902dc9699e8bec8bbce6dd1d0d8f80a3a0bfd4352c8031341a0e70bf55fd5b36ef89efb155696efe0e37a075813c90d307ecaa299ea383a1e3779e8d86579613d0180d8fb300722827a82120dfb571849abca8d8df8038db18eb455bf70e11e17eff7dba83ead9b440769e602fd55cc060a7e8489f17d9933a7a1bd178286f57cc19fd5bdf230ccc3c76d43f714cb6bffde9c0d941ec36d867759c8b8e09f0e6154f9ad57b9de4a7b7736c7b68cdfff93d44cec0e2cbf36112058b1dc8719d1bc65c3e486e30f647fbbcb8b2f5eb201f58f759b758b1cc06f78aca107ab74dcdd9cb6253e1df5eb2f968f82f82934e72f7c33ff03ed562bc9ff294f2083f7f16a545fa4afc46ec1bb7f77197a3481eb4afa9b97e191be075a57b9fabde1c7457d83adf19fd8dec58aadf8b0f885dcf9fd4dd794e63d1bf596f17f1d646f62cd8a7f01e95c83e3dae636580cef21367a7ea18b735c438d239f6356c12bf36b2103dd71f665190a371defe99eecef3a4e2f5762333edbd9e777538b6c9f6c6eb4b365b8ebfa5831c5dbbfd5bf48f66ddd53f74ce807f44e857abc36462eed35263ce72cc939b28758c7918fb181704c9f59279a78ecfd28318fc29ea495836b0df02baa8ce55d7760fe4e38b74d4efe8b1e956aaf594f7f837ac5cbd13df41a0bbf87959f97de4bb21bfec6b99f1d0f340660e741cff297d46708c185dc6f0278e0e7f93e7416df11bfd1cdf8b72efc6681d6623625379d2fd735aa013e19d58ce7ac2e5d9c16ffcc63e70154fe2f601ab7744b12b89fd5e24ffa467097af0ae640e656a43820e5941de86b179279614fad6dfbfec2f69f83e421922cf5828d722a4fd1f3087d8b609e401c84d20ff40670560c2b37beb1ffb4cfc73bb796176be887ec0b54a90d3a2f3c6fa9837e0b0ac9ed31b11b1b544ba0330cf94e32fdb2db40e5368bb28751c8dd30321d88d1eb66ff9f3aa17e2b812dc331a5d68ff1dc1f0f6b23bb60e9e17e9d7fd81a4f46ea97f857e12fcfd614be7d194a55dcb1768c904b5c3e1ff7fb66a0dab28b0e478b2f8728f26786dc6917f2d52dd15d41330762e9131b13df2a49cdc395f7e978cfc1b6c5bb2de293d0fba3644776f0346c5b4d1ebcfac01b29b45f51cbbc8b780cb0ad9478fd7e037d9849c7efbe6395fcf297098c1d8fff17ed5b5537d3ff17b1ee87916121f98cae14ceef02fa33936c260def24d78fc646eaf968dddf8acfeedd87bdf3ce76afd3096f36424ba1e7ddeba8e9c1d5deed7c1cfa5af5db05fe6727e87a161de04cc51097b1bf40aec21bf8f63eafa15ea629bbcc5e092eac57115ec29570517b75a8e35c796bc9f50e3e7153f5da958d9c0f7605ce6af1d9f6719416c8a3d6beaf545be04d9d7deb3bef3ed8eefbc847bcbbf1c93ba45c1e2f4cd783dff1b268645733782983d9d8b4f2c13ea3ede22d9ea7fd2b8ff1dd95e52bfbbb6fb9ab836e10bd6a41064b0a3afd81810b66bf5e284f9c52cc010646d14360685fb0ed57c1598b7fa1c73185bf876e47b365d24bf98b73ed1b57db26d7aa391ad7b47868ec6eb78cf3ed718a997d02faaa4ea5fd2c0da4db52367ab07a077eb6bdbf6d4df5385d8cb4caca9dd2f48f0d4eb7e6536fe25b6fba1efb6482bd50a0395ece99c8c73c3d9d2649e6e8235e3ec45189f03fd799df17ed71e67e4e44fb64f6315587a73de75750eff3da37bf4e2b6f4b5db4ae9726a23ddb30a2c2b0cacbf237fb1a5f97b24078944f23602fdb60a2ce2cf71bf916299d6160a7462cf3ebbca404e4aab00fee8566c9cc9751fc3c0fe5c8dd4cc2dbdad1de49790d40df93dab1f6fedfc63041830d0c3071c034ebe4b27f6e56dfde31cf9d631746482cbdec73ab0d40eb3725045d5a00815399f2d0d65befed19b7d0ecf46cf2ac24abe84818dee754aaa4de377e2f8511579661149de4b32b67621c69f3efbf23509b4eb87397af96b7afbb19b7ac724d0e43f7f06d774a624cdfbad55afa935b38b544773aaeee21ec48ece486f245b0f7a81936ab87315ad0c03733f755a63708b9ba30fd0fe96e21e1e43505c135fa9d7e934bd0d5e63a54f73e9e7a4b82681b338ffae9c0ae83319e74f902cd98d7e3b2513f39cea03c085607a66080f47f31baa53efe661c899477c895bac5c95c8a175891ed441acfc2b7a87bafe13e9be46d7f66f5c1d04ee37736399d8451833187d46f33552fddd4d3c0e8ac9cde4cb319f652f3db5f2ecdc7cad74edb6eca52797e1127daf73e6367d7e179ffdce7c44c897f191dc20bb6bdcac19c6e1c8310741576e9684d716cd3fdd53d351fa6156c3bf99fe47668e683e20cf1369d08b8bfa1dfb53a75f45817a008ee88959d0fb2d943c4fd697cc847d71d998eb648f753b73fd68d07dd7e0c2e24bef67ebddbfa6af3f068106fb2b998e8a1f04bff684f6d9fb4d4ec877e9d4196c67a3e1d67c1d9fa69f3fb65367f8b7314a36a67c3d09e2b7985fb8d400bf85c12bc9eb1eaab59a0515e0f8e1b9f4876c5fce3af41759a2e4fbd82131d4de9736fc7371b35fb6c1c9b9e40f31de91a39ec200735930734bea5386cffad050abe304d61bb9d78e8cbff6ad1a9c49aa839a5cfdcfc92563ce96fab7dfcc8dd57a19c92e7fc635cf7aafda720eb5f96622e56764b723ddfad6aa1d4874cc071eaffb521458d274d29c4fd33a96f8b55f886b109a67737e8566f563df3cc7221f41a6dffdbe9c37d54f2ee862885dd1739ad3cff76acc705e80a91fc1fedc3925984fa0c3a02f8cd331027e89e1a0adfbc14f6be9926ebcf09eeeafebc4b2541f2c894fe0867e9afd86b3ff2c9aa3d9d63ed3b8c694c447c07fc6fece8dd93304db17af3f3ddfbc7a9c8948e78bcf9c6fd72014478f9b0f78d612d78e5dd0bea0ff3ea5adebded6aa1c97943b5d500fe8d0fa75ca99d8d440e23a4bac1f6cc5933c5ddb8623b5b7d20b64b7ed23a57f4ea056e6def3d3aca905fb222655fb82503b45fd36b713770cbc22d96e847e1c139f6afb715518244897421d21ba06bf8bd8878b144f724bad87ae998af30d7b9071c0c8eccafbacb4f258bf505d783026563ff6f86737f634f43861dc0ff22cb07f5bd7074cec31d932398847bf01fb9cc9bbbe1e39fcacd4ef1f89de66391b496ec2ca53ddda1923ec63363dd4c4dec0314d889be373c3a3b99fae7d41e770c99c2713ef14137f853d2b48be05eca9968f49f227c7db872f37cf90ed3c92814758026e5e01ff4293ffa171e287f7fa93c11661cea9efc7735939626bcda8fec335098c2ed0e522d5f3730475a31160f4878ad7b273bf6f6b93bdd2f827e88c52068714624c750e31eeec0f8dd4e2beeece33c5fb8cfdf19170689d0897491e8f900e48884e962aebd3385bd5cb655659b7c89f1f63d1d89cbe14d3f86555901ac341d9d615cd3b133bcda5efde8c13725bfc79c8e8a0a4abef9401d49e435d709d8fc5bde6c6848e49a558d4e2b97518bdae0c7f976d788eb751916cc531aa07baed3356fa48674b84fb9872cd8b6cbd73778fdeafbb7c70d69d809baeb103bfce3f76efc1c53da0b6dfdddfec3a2ed6cec35be8ac992612c45e84f153de77227b6932cf909e8173a3d436b89f4fbbe747813e747be6a7a37884bba183137e6af46701b196997cfc9815d2dfe6e8c7290af222acf2cfb86716ced61a437c6a1442af1e33fed34af1fa09e6f8e0ae9d95c7e223989f1cd7fb09bde2e31f60639b048f83e32e85e7ffc8a6a3949ebfbba4677e4ebd1fd7d93ac9a6952aaffcc51ed9c966057b61301d6d04f5535c5e03fb12ca10fc5a92936c7c70a2b3bf8a03d73159a999bf9f0eaef526b159562e7f47bd4a33ee60de8cf3e91a95267e86d77cdecd2d8dc639dc57b6aa503a161f98976ac77f06fd95f06e20a35b19e434f6079bd4bf16b3d27ba17d09ef0eb223a0c7839ccd752d53152b034914c74bcac13915fb12680e375160439d3ed49f6ecd22f4ad1d9679247fee71b59d63dfb65d47dbdd7fe7b867c7a63cf809df39f25f893cb8ad74ad8a7cfb6750a5e917f830acbc7f91cba4f9334da2357ac4f6a4faeacbbc43236fb40e5dcaea989926d1fe09e2bfc25c5d53dfab3e9c6eedcb3379ce8489f57c3bd7d9c492beca776ea3c0f6b18ea575f90b5aa3d2d5d744c71aaf12c59c44be016bff237f80ce29d4a5045fcb6833862527a34618583b918c3aba765b7179b17f4fdeedb7d4a1e8e85ecfe5cb43a8e7304579ad26c720aed93fd6df931a7ae62c11d697d49f3339d0a6870fd9b329f2c777e66d97c5a5d733c6799e28598d7f602a30477fe01cc870b7f4b50bf025726bb169aeafed31fa1bbcbe5d0ca43be77b9ddb243d099f9cacc058493d8ca82e93fd9ecd35c0e7b4765898d740b236a6763d9b0f41f3914fa26071f779c8a735ab660ef0bdf25c848f1528703f230ce69df1b98a27d4d5703fcd2a5291ac8e091e168ee3c17d1afdf4953cf2f984ae0ec439e29f8e1ad73d2bb2c4e8b17a4f907c183e7fb14c887d62bca7f37a0fb5fd615aab6e8ca42b5b57d3e41325a67f066ada4f29daa3af3fb239d403436dc19ec36796a9cf89f36f21ade3227e648ace31ddcda6a3c3df4d5dbe7a88fcfe36d5b93a799cd740cfdf426cbe7e0f5fc1b57d419d77acf7639192f7fdf00e97c0b990df17f19ca9e16bb0b27e9c8db1b68946b42712f2e96743c7fb08620d1bd8a37cfca9c4fa00e29e207f4d8f0d9ef3fe0562493dbb9fe85e6c2a54d6d3b4f90df90cbd83f0196901f9bd664fa0fd0ce36af935bb30009d0ff248eb27bae3704f0991f95ac6494dc19d33049ec5d7de529f8eec03a1cddfbee677e97c3c47cfd5e5e0f510d549c1bc68427dcfeab32feb0e49fce415e3d4bbe8cc6e7fb6035cbbd1069ddf7ffe5c72bd5e378aa30c751d8fcf72765cbfa32e11eef7644dc806d7b579a2f3b33e6beed972206723521782ff0d39e458b1f7111b0ffcc775d0e4dd85fd9c4ff91f387749744caa68b7fa9e8071f75c6d147f9e09ea19015fce3be07c3d9627f41b52df9699ebb0aeffeccadba0b1f9daf2339206ccbdff65bc8eb3b7756d8b34f9145227f975af06e89a562da3c9c5d0692fbae8ec6c5fc3d51270b12ca8c7d9e0f819ae4b63397043724637b125cedf37169e6504b2f7668f3ddd71fb9a0d6758fa3350aee708f637b61502167b521bfc340539e4ff543cefbf25674df6dc84a91de3e6fa77d6a432baf657eac6b6f76ac0a67cff22bf97b97eed76dca03e53bfd767756362e19db3908fefb7e2ed704f5f39161f9ed4cdb132fae17d2965ce585b3adac05b6e6ccdde146fb6bb10f9844c4c5bd063f020c7c1f54a3ac37fd53d0c48cf38c33f3af98727ce27bbdd9ff0cbb6c2fff27c6bbb6e19db3fc2de4843f75e00c7ebc95e03a4477ef37efd2fed61abfdbf7fb4cf198ef2b62cff8bd679923d9d194b89cfdb61bb4f200fed7edee76adc6b3ff7c6f9e85d3bb4eb37b7afb91b87c7f5aa788f11f962748e9df132d83a13c7b9ea4af94fcfed8f6d3732971b6f8cc66dca839fb18e6c196b47fcf19fec591fc83fb68f7bf3f033ff1d3d79bfe97cfa4fd53593784353577c27fe58c737b07d79c9dab5415ff5d8887aa8a6b77a9fec9afd846cce21b239afe437dc9e787786bb8edd380aeb9c21e60de3ceb5bdf1fa4378febdadc9fcfdc3da5dcee76df6cf360a6c2b0cd431d5056d9b16b8527ded8263ec5ff8b2cff95fc730f832fff8045e44d3b7f0ff173f8a8947521f44a4b759bb8a5bbf299605a2530b2eeed2f412756ac38f5867927b56c3abf1bac37ef95a60a37d6d0f31716326c64370d99b9c36f2018e37518d60d2f3f6a9aead63dda5584db7c8012c26392e8b6b0ab8eb246f00eff57bea74885ff28f314398dcfc1ee34815848bece9dec07d22a13d04efdea969c4be34e1f1233c774ddd57bb878f70123843e026a4f921b3527ffc1c118ebc57e002249860c61662ed939a2730337b751d20e473d9fbd5f351d7d20e91ecd031637b00f9a43d6cf3a1730ed7aa0d33245f535e07425cf5b9dc633d3f9c7fceeb2991ad9d1629e88c6e2e5ee013221df5efc0e168e75cfecbfcc246a7da4dff612767c7cf35c13b201807386efb64cf5beb79bcffc4ad97c8aee3749fa86f83d73163d0afff5e2c8c5f3c93fe4b7b1f9973e951ffe383b368c3c6fbbe939743cffbddfb7cd9dee7ff16bc8be61d7ebd6f9dcbd33f59737a2fb7cfc4a7db3a02f607c58cf9dace6ecef96f605d3cd41d6c6ffbbdbeb5a2b1b349be8b7fae304e7ce0ef0367984a721024974771ac04fd7bcfeab00e4605e6fba07117910e03ec74eaf370795d5c6bd5ed6f83cf457638c833d43d1b7a714cf46b11fbdea9e66ac1b5293f67a5764b94621b975cffc82d0d547827a22b8ea97f9556817a881c5a47e5d19809e892b0e7dd527d704473989443bec7e91fd4bdd4f61c7e8f4d14a033a99ff33580023f93b947427a24c83d981e2c129b7e7e3fd4bfb9a713716f0599cb3553e75273183ca875a1b5758d6cece8d8f15e286ed3e63e8726c7fe6ccf0719d767d7eec6bac6cc316f78c37f8c6b635f3016abf6e3047ce58195353c0b0c3e2d8949ae02bb48904e043d98a33100af53cd59d033904e7969fabf296edcf77b94e22dd6ad3f1df544d697daade4fc44e39d83ee5bf97d25568e85a1ab7be0530ceca28991ddadf36bae25fa94cb71917b4623f51205cdbb035f9250aeea7a86761c03e3f9625d4ffc2efbf6a8cf09f3d9cd77f1fac2ce792b9ed1e004cd96e343c0f2b935fea28a9f9d9f185c90de4a2f0e9133dc4dab23ad89f861e82f2dae3218678df3837b9eeab1508cc13ddf27f5fdfa73905f0fb84d6e02ac6a64a3d35e92b62ee57a3e385d5af704dbf3957f14e5ee9a3eb1f175bf525a3142bd8e9d7f32bd225993b778942bd3aaa86791310fb74d4facaa26652a838e9e58299b9bfb7e4f20879dfcdfd9f7e7bfdcc5789e89eb11688f1f334ff38e4fcc60f7dde839bad48bbf596c5e731d12bd9816a966e76cfd38f273c3c0dc26b29d43bfd363ff533426414d02e6f262f334f51cb56ced5a27f5605d3f45b66450634f587b648f19af8bd37c393fcdb5bab60aadef36ee997d43f3a4957ffd4e1cab9543b883df5c9f09f3dd7c7d4172774b27deda867886dbc14ef615fc9eb311b9bf27dfc39e90c30dbe96a92f6c7c4d7cff67b009eafbfc46bd31277559dddf29c56d496abefe3fa76b6a7c39721679a4976b94c6b58d4230890327a9df0d623e9ae8da5a1fb0f7062c7a34a7380f72acf1d891ed1f79d2b6a97bf4aaa41c54c26b03b38a7b267b5fd011c26b1b1b94bd1ef929a23941be2a7b1dc5c6175dfb46be63afaffb5204d7531960afc7b8fa13e1589cc84fb58f09379e5b23b3dcb5c87fe5aee37b2cf96bc977ecf5bdc8d7fe463e98680e3dc5cb57929c279a44f2521c66f528f5a3f2ce1c61dbc225dc0405bbbe9057f457bed7bb270fa117eda3801b6719eb833c7d9d8be5a2bc9ec360719b6fba721ae1ef144b28abd1215634c9fab4f17839392c4ee96b2e7a3733de2e5e16780ed831eee3ede26a15a2e7a07b8d953bbfb9cdeffe665e097e23affcbef4267a1fcddbdf191bfecdd83a84be7c897ca12c79ad6bba7332f1eebfa346be13ac41eae37711ca98df7acf3bd8162bdf46f6ce3eda6e047db0c4be20fc1198836241e594d78b10d3f636e4796ee8a7985ba60735e2100b8f88be43f74ee423277bb827b57b0f5fa96509fd3f355ee524de8aaea37285eb5f095f865aebde9e85ec6a69be8c9eb8cf1763ea6179a0d7dc793f816cdc1f1b5ecbb1f2cc3de73793b99789f395c277a167d5fde786cdf50fe6048f61b1f5caa8f4be582f38a7beb81fafabeedf0b5de77d71afe65c7b2043806ff2f83e481f373dc382b967ceae47f7a97b511fdd8b39a71edcab67155fdc8739971edda7e649a96581b1f9781ca6276317abc072d9f1842386eb1873fd9f56db7916f75469e5cbfb0fe2c7ffae7effdf9c47cca9dcd038caf3f53f60fb9a89cccefbe61ffa501183bf45e338f4fb7ed3bf300a4b6334ce85fb59e883154f60a80bdf83afcfed4545b2d1aa48d807033c586a5226acad9d2dbeaea923f967243b5681636119c53b84f83fc9f7e549a59e094f6446eb7d42a6af6226ec0d87be59a8614d4b0f9d87dbe9b8eea78138e0acb625175f70db73f76cf7295f3edcfb9869d0a7dcc422d95e211883e3bf08fc1ff41ccb8c85d8e2df8c456f8a13b74727969c806f47eb9365399ed87b749f3abe1a50de4cc8cd7ea68125c50adacb5e15f2fc4c4fc74398daa3c656019d631709f22bca7afc5ccfd39d7bd4f1671c5ba9b96dbbb1ecafea9f3a3da5e258c922b06e2b3f3d39fecbae8ead34586482fd5ecb04e9e96e72114dfc19d7c9265271fa2d31e94d71e2fdf346e73cf495473c6ea0cbd4b0dec10e5c30bd3fac4cd37ac0d95dd96e6a06e935c29ac1ffa5b5f3cfc62589eee867c624ddad7c6b67e8f6390aac93d95ba0f3ae0821a7a0e6c9d62a1ade38d0a51bccffffec79cc60f837fdd230ceda57813a2f4d8e02b3ff0bf1fa4b53c78a6b0158dc8f6e7e88eac83a3ff4089facbe468c43c6ea77fe9e026cb27dc26021b6f642ad1b783c1fa64787706f11fcbd73b286ba9e8ae4a819cebd059b23c0f8acb8ff07d70f297ccfa75961ec817a3c508b34cc05b249b13adafde3fb29db67c060a0cfb6aa9c285983798ec73410f30f3c5dcb86e3bd44ff09b8d7dc15e01bf2980c867eddaf940617acdedf809361fd565c309c0fa67834de4ba8789794729beb05fac3709316a795ee55ab0078b01f7132fe8633f3216e011b97c63662d0ad47c0fe1fae8f61b10bc0e6a263ecd8bcf7f7c9dd9eb4866b0e64b8c9d38e2926012be7a06fa7789f81ac23fbb13e379b7371cfe138d5cf2378c36c3de66fc06da275c66d59fdd53a04c083ea15c7b01c1cc43de6c89e27758293b9909b28eea998e713cea8fa5ac2db4a6c0a5a7f43e74f7f3e8f75d7e6e26510de917d7eb435cfb1004b83b95f1deb7a0f8e83c0119c2930b71bc0bbc373849ef53ccf4ce77d3bf20c6bb7a49cabac5dd6e8f14e2dd65d5b8e5fcfbcb60d6723953b4fbee0a2e4c6f46f9135a938ddab4767af11d7fd0d2eb87f1ab867318fa1dfdf014f3ef2a3ff4f067f4906917fc1d4ab74f46b63b3dcad71d946812dbcdf9495ebafeb81613e5979b893fb5363fd0ab6bc48a6eab8c4583bc463f09f597fa13dd67bb5a8ec35bfee43b3581bfe0b7716821ed5b5533452f77199174959008e5ae4f7e5d8f72a5c732eb255d15e2075c9ed3df06b32ff9f3efb718f49f30e77e4965d53b12dd0c86a57569ab3bcf18105b2fb84be6c8de3b3d38343718cefc916fd9e95ab6fe06da9a3d42f0ee94846b67bcd7f9e945e19056611975681e71dd98c5a153980a7ba8fca82f683aea306b799f32b9bdc5d42fb516a4c663c8e4b664a4d4cbdd6d777ec18e67eddba5f062b5cd8a744be67cf143c0611e6bf798e7b8b6fc703533dcfd311e6244f4baf5af9d1bef6cd4bb7b6c3389f1ff9fa8abc4f14f7fe1cc9f535f598eee83ce43b1d5741bbce01c918c507bc57174dbf6762298099263ca741bed8f395c300be13eb403e33f2ebc3c02c8c09fabc28573ee518308b3b188601cd49d735c2641ea7787c076394d6d77c2543750efb95a97fa4f80bb8be75fdf57ee0c6d78a930c074613a7653166ee702be05a2a86979fc48ec03ea9f5f4aadd532ae8611761870afce78e4de4f8fd7daa1779ac177fb4cf14cce1fe258773adf749fe6650d7756a5c9ce40b9ef9fb3a7fc58ed15ff0e3ea621f9e5681fd0acf71f138a6643caddaf30353c343c658e72beed54902afdeffcbde9bf5a7aa6cebc31fe87fb110e3dcf1524940b0c91495ee4e200123a86bdae2a77f7f35aa87d29839d73e679ff79c8bf55b99024551cda8d13ce319647c8ea1de3d266db74a7da86fb1a55c4f1c43d93b8daa7e3fb2a6b5dc78a8efba8bf40e92a3abf719af1b62ebde53e44f883f97d89d94770a724421d6718a5614a3b33f078d5c2ef0dbdec9b1a6f1a2de86e0333792ff84dba49c0b8b3e53623ce99beade4dbf95d6ee4d0604fbfe07362cccff2bae73af8af1e0f5e0c9381365fd53b10d8a599138daf0fa5cf07349a917e2f7413e8b5716455a893e68fc0e369fb79f27d89e5ef3fdde1d0e7ef20d54b715cf34d2ae14e3bcf37ee9be1a270df35bd86d8eaf0885bd704726029e5085ef98d218670303e4a93028af901b206047e21bd82424fba5fb08265c792fb926de9f94de06e965aafbe93c4af7134c60e35eddd3a4fb045c4ae35e724dbe1fcfa9fa7e7c2d98111e685a275ac256ddc6eb511c848487e2f8aa5be38fd7774b9c2f8c6dc1788ec63316c5c7287047043b132ac7cea5d82c05bef026c6097051f90dbc16c6a5d4df33c3789a1bcfa87149338c5fb985817aba8d6552f48d3c33d52f798cf6df3dec16bd47312622f646fd6e25c64cc0e2a8315fe277366d4f385b77a17fd9bd43ad04538815d2b31dfbc623a30f79cb989b5c5dab009fdfbdbf87ebce29b5163f806b06f2b3243ee5535c5e3a3cf6eb5e898c853a15947383c7e0cd4d52f54f11d157428e41cd46461f634cfddedeb6fa66b2714e49097f4fc2a00fd7a97c088d73169aa4869605f7cca3c045f7409e139789ff702c8a9c1fcdbc3e210f186a2c90785b13ffc672051f6c57c47fc7cb60f21af9de3998f5e7b89646d4b1add72cb2bc2231eeea6f77ea654beb665deb4b23d73d2e0b6d8acf28036390c53c2af46fa8d303fdace974503747d48547a51c6b22bac835d50b2dd4b36c08ed09ba8f35011c9102d7fa43d609310e5dad7bc831387e3e436c949d8f6f85fcce08f0cf6e1e5d7789a26e20e89ed3b67b4a56d92fc917a6684790ebf7fa2de830624cadb8ba30dfbc7638d24d306e4392ff3fd83b456c2deb3f7d86e167d9fd1cd758fbed2a8f3519338e73bd6ee5df641c2b6b4b948f6f2bd20f2c7b31c6563dc644ff92715102666297686e11053dd5bc523cb972bc31af31d8098a31edb42057bc508cdd40a8e7f1e5bab8bbee449cf9bd3541f5d2edbd35467520b686e5987491567d56c3aad68f2bf1917dd50f560740eac70ac7c4eefbd5441bd0e988354b482c426507a86312821d497528656c81f0f8002e8fb44ff04c6bb6c7be918325f850f9f344e6639ebabe0ef6c97fbb6cc7ef8e68fdd201f8e86ec50be05ec197b7e5b22a11e58e549b2224e34e300bf00df6cbf32dd92b8c576745e616ea4608ef3ad236eb9ca0b04f85bc84faf931b4e87bceb5f60a2d5a74cb0872cf55d72836f2015c545d365f15fe2a98f716ae6b64b13c11d0cf01c72e70042f31d6af484ad0cbaeb4c69792af6ce0146e79c9a3f618d7eb342fede14aacc7a9e4fca6ba1f607ca83df55bbad1c02922dd7b4a886e44db52aff3c7f80bc878ae79db37b03935f947df7d876709642fbdafb156f8fb68ec6f2f8c2fadaf42e4726f37e41c5e18bb525ef2a4ed3acc07c3dbdb87c1449b61dfcd6fd7e8af7dafe453a1f6a6ca7f20f81e6ef93569fd9f5aec1172fe0f4b8ca1bb925815d56b6beb90f840043c1cefd333fb5be6fcae71741a3c178a9c39b8f6c3a25be2dc40dc06e3c2acd87d14f7a6f3fbb71217ef37f6035e83f47bac5e8d77e07b7c08b4cf94cb80d6cdbbafeb7f779f50ff531d93aa96e7742e86ecb966be26f36d6099f3335af5fee2bef2bc313f9493953e379c097ce15fc57e451f9acc6b47f3742761d0bb99f349ae8b7e399c6fef7772c2b9af7c8e5c9730a5b1ee165ee0eed4bebcce29b23c2fb58abd1c4fe1b9084bcbdb279657dde5742dbb6ba8e749e224f06fcfd396fe19729c857f1f717dd3de179c48b51c6dfd82fdd538ee97631d07dbcc37eb3c7c376fb97a3ad37b431dd9e8e9098df51cc988468dfdffe23c0ba8ab7293ab2d9b5ade5388f34ec431f81895784e86ac767baf910f0defade5539339da822e62d23c98e6b3a41f895c5faeb60ed8ba78261c0ade310c9cced082b5e740cd26ccc92aaefdbb7134be86e4382cf545a962b0ff59dc0b246faae14f14f35b7f276f018ff5fff8bca2fbebfd161f03acd9dfe561a06b84d728052e266a533f5ed3d837cf0aac8f93b426853ac745bc2ec671e0772f2ecdea5d193717af8bcf7199aeae05c064b1843198a3df679dbf93aabf8dfc0b70c9dc89b1c0b9320b26735213483c674a6725febbb3836f7b69e22f09d78e6a0d7cc616e465e0183dd4ce7bcd427352a4b7f5972bde0f1315bfe1075b9b7a710cf54536319eaea3cf3ebdf713f875f46ef53eeb8f43bfb3f9266ff01fd7db23b6508671daaf9827ed663edd6d2e8c259e1322bbd19ac258dee1aa771a55bdeecf157eafe80700ae16587f39d813805368299f259c19173987a3b60ed8baa824bd654bcf03e04046bab2b837eed7bce16b48c627dde2cea0d7445da82ecfd5dc19928c9079ef43a62f4ec49aa5cc5eba5b77fa7eccee4f724a212e20f261097bf9940cdc5dec173f488dd9c739d0fea3d6fbadfc5158b3376baed6cf7841b6231945d7083f335eb4ae3d20f9c38f73eecc710da87a4d46c91e2367b7f80d98cf8ed5b7b2f09a44731a95dd0af293b07d8af66719b79d9fa9de79bc76a3c48574009eeb45596c960337b5cdc939f227c05fc0f9c23a1beab349e03e8c1d8b2daf14f209c579b6782ea382b311fc5878fd0a3e8e5b761c1eab05ccab15b7ed2de08f3d6717e9b90a472e9cff52dc408b02274f2d8ff1d501f74ad5a80172b3c61a9213c0b7065855114fc57ddbb5fb012785fdbe80a3847111f22d042c0f3a9fa91f0e9de9809fba8e4af2db8be0e786dcb44b611b39c5041d46b51c239efbc4dbf2753487add9d24fb7507b88bfef87cd6abbe5e99bd00ea913cec68efe1d96978270c6933c27c6f3b68a2dbc5f7ecec85eadf50dd9ac49e9e5cbab986bd292f39f0c45ce27e1f77ec4cec675133c0378924a125b13f237897ffd8e7e8ffdea4d59afdcc344c7f3f250cf3392df8b399a7cf37369e2b52ae5f8ae1ef63f4a7b2942edbd42dd5c720e087b05fc2b74ae1638bf1cea904c4eb17529e47df6ff0b796086fe643bb460dce11d23a32ff45f859916ea4ccbe322c98866ad7ce95ec815a4b5e26ab97d2c8f40b8bf9633d5c37c7346962f83098911808cdf867a771f5b1e5923cd7c2c22e3a0de30965ff967ac5ff6482f015e4743e484ace76af554f842f9792a6f0c21cf12e35c70ddc79934be488f636dbdad7a87f1acf61c9709623d9ffa778a7147ceed68d5e515c6f78d661a7ad7afa14ef923cfacfe653dd7f2befc22352991ecc2dfc7d600ba0e76de9c717bc87361f4b210ea3eefff25c409bbcdf116e2b7c23853dce103794b8df5aeb021e1f7db7922687f64aa3cb747f3a2cba57f41e3f27bdcaa0ffb1228cef622e051e47d87659efc1bf02ed177135e0a45bc51924109d2c7ad026c3b459df45dbc894e4b8819f4910ca57b4a969f822f83e18b1b3148f0afd1f1c33e4a8ce7bd93831dede2815b24abc6de3e27a5b75efa1324df1fc90de56790d1684bd493889e2cee03698c1b39d3e2f851dd796450dde99c7d25c7a4bcd21a0f36c7e36a8d5afc8fd745c4fa221e775bc6e4727f0ce06ceefbdadd4fa9c636e1f84fadc9f62b3e777e8ff83cfe3d0a26e0170cdbee4bacb720b60e39cd2abf0cf4332f126c577ea6af93531cc0ba4672f54ff6f501becff2ae2196bb9f4ba3bf8e75ef1aaf528d6305189ff66fd587af715c33fbb69e27c5f1723c7eac8e13491cc875ee031cf76cf78bb06aea5beafd46e7642ce4f44971553c4ebcae03a91bc07ee3cfcdc57a83e21ae8f03377ae65636c670aed9af1d86cc5e342ab711893d8fffd35b025d7212eef5ffb29fa6f6428da976a2a7f6937a9fb22d4bfff29e48e7e0ccef5bda5e274d9dbd2b8d0fa3e5fd73eafcd552d26ece6a1be57ede5796a999fcbaae13f75120ded3353e90ba5dfe106662b94fda1356e93ee21b1ba809d5b06ee210ca0fe1f9c87d40f8eef31ab6530016e1fd1f733d5ba93c5ab3973bdee74ea398bd9c21c075a349e2e0003cbedcfd7c9cfb9d7ef2fd6de87b7e8fc5cac5d73b1f65e857bab3f8c0d6860bbfc7bcff70771a6c511f6eff7b8f37f53aed4750f2d13f712695b91977ae6181503e76bd37946ba448cb1be503b199f21cd7c6981fb159dd9121f54a0e07387f526d43080331a644071e5febbdfe2bd665c4dd4e786c7207bb8decaf7f7fd59aec7b092715582bd21ca5e56b3fe56ed7baabf083af931d626ada4ed9e62bff881b174bd5c7af727e39597b9345e341597069383b62ff866568c0fe324f008307ba78e136435f5b94dd3aca34ff50b71dc3cc2776f6ab27d6ae48defc435aad133fb2a981592ed621bbc86ec98d6c2643c4f87353d47024ff4dbe03a58f62c67d7d15ee57b597e876843abf9b1553c22d4b795ddb0ef789b8f8e8fe40ba3df6c6a35df5b77b52c587d2f268fa88f4bba7730a9c216bf978cf12590b0a8c8beff6a4e54b6aad48f7aad45789ef21541ce2fe3d368f8d86e8eb764a7ce885f5dd2cf41e7b9e2731378fa900d83cf51d16787bf51925bf29c2beb2acbf70bdf8b6445524e7c668be85e47e06a10ea949ca1ee69a8ef77a2aff2c3ab8da5f1ba65f197c658baf5fd90311c023ff7b749dbf9c4b8a0c5de96fbfa32d75ae8cc368356bfbf285c67bab87cb8eb4bdfadfacf5f9cd7c8be12d7c51ed7579ffc1ad6f79bd113ea4637fabc6b8e37d7e7c0f73abfe3636d704ca133e16bdefa9aacff033d0ceb5fc47656f25c44300f1772364b1c17c8e6cae3578ca1bef32cc9d368be77cef8e854365cfd9e9a0d48311a4a6ea1fafba8bf5981cfd2d9b55a3cf276aee83298a8f2437735ae51e5bb3c91e3545dbb1be742ebad33f0875ace2eb55a7902f82b884bd158df27b15b7789de3dd6300077f646af8beb56fd23f99c7952a657653e67e06c526cf35ea57a008cc7f70617bc947727700f37f038f49a88c9f9df5efffc15dbdd3acf874f4baf4a74ee7390e5eb8570f5119f18e548113807909e14ea5986fa1e95dd2a661caa90eb52b7ad08c78a5b85b80ebb9694a61e050ed86b02ff641183dd5c1c2371bc489e5ea81755d8f6f661e010de993a9f06e6cd60fabe3ffda7f967e8de52e54d883694b6b4bc8ada3f84cb97b5cbed53649334ed0fa13e15b35da9cdc8fe4d30fba3557f8eecbeb0663b8764adc77eb7c235d0dc7ce95fae5ff95f65ddff4f6c9d1b7132bcbee037857f178d31ea6b9194ad5d5c2e322c27a33c86fa93849f9fda77f7e6c03c603da9a565dec0c901a78ad65f1015c906f6a650978dd88964de425e8fe3f76db78168fba23d0ff6279c17a8ff91dff93e7682cc2dce771163e8b8df2383af8f9121eb7323762e438c92eb35b23f0db5e9408c75053951d77a3e9bc4f389defb8aef21184f5a138cac79318e0e6d53ec8ff89ebf28f7033e2fb61cd7a78cc7c37e62eda456fe483b303e429db27a5ff0df62fda60ab5279d333fb09e497026ab5e16b7dd2d3de384bfbb52ed9c4aaeedf2b662fd67b135c6e5bbc658266ae7f0f6c47e34c79f3d23f5e1d633c575a19b8788d6e9a1df540176b2d13712a7139f299d95a807a9b96639272dbf8fac895bb1d39a5ecc6d21341650276b03f976804962f6456ddc249b8ae8d1ea6fe8e5a4dd9f61b9156d7c625f019fec36e17a33f8af1775fb46a8912df6f36300f9c6125f86c8e729d8067fd5f56d912b0ccd29d8214cdfdb376d14f23c8e3b731b4c78c70ff68e0de858a21f88cccb99adb9df922373c9d742f97bf9796584f77caad2da11f783d776f264d02f2283ac553ad750f7b2a9fbd01c10fe7dbd4dd0eab693d23c231d1c6a87d762e1688c67c124a0f7d0bd44d606d8f6f77885e9f839adee474afb6b763f787e068fcf9135c2df35b83cd37dccbf55851942fbd43ba68af110c6e82f21b782d80319e431caf5f17aa27f455b9a8d766bfd8176f119b32131418cffc7dffe29f857308709ec19b40786647de0dc02c0b74aeba58e9f10d6168c95e777d8dc91b5eac59bb40a83fe39f2a7f7f7c5a0fe2ed9be6632aa35c9631ff86494fe44954cf9ce3772ec49dd76fd87cef0af7157346e6ae2e7414717f08f92bd82e4df31c27c66d85e12f3e3ac1eec8525af9924d94ab357733e33bbde7ced9aeeba78731753b0e78256771feb6e9ee8f9073c6f76459fcf475035f1b453df5d43de01c59d02efbac40ff60935a3bfe27627f5b543df5dab728b16baa7d5ea6b233b294faa3ec4c1bf8bb315fbf48d9ce8476b655fa3c0c5b5b217e63a6a6269711deca2fb81fd99dd0f52db9a61091473d488e743cdebaff1b4725f5e9a3582efe58821fb1b7f3bade98bc7e0ab5836a99382ec6355dec09cf5e99b393189eee54939d962db57397fb436d2c3b54aa312adf3e9c3f19a84af45a88f7f333706d7c43f06ad2ef8fc8316e6ee93301b0fcf5d9e2757c5dccdfa579cf36fee91ad1719c0e5799562949bc929866f97fd0577ea81731c1c999f3fc3246919addb456373948bf03f017ff4502e95dfe9a0f581b120d32c813c1a8fe226446c11cddbda931c8f47f3ad08ef1f9aabc5968ccfde1ef4abc87777903b39bb15e7ab6107452cb4c5f8e2683c2efb59f5ce48dfa07c87343ec4383dbe114782f359ea634ebe83c592f60c7bc8f05b37ed0bd96e20e738d157bf5d2396f82be7b1de92b953cd3b3c7c2d7a4df0414b35179579c2a4ae22e3dce35c6cc1abc297ec5de47b243fbdaa7da253d09a2932262a31ddd39dbe41ae5dac35fb867367bac41fa0e2cc859c8d13f3b1ff8fc271fc595ed17f48eddb7f572ddbff94dab4226750e37e728dd50ba5358febf51f15f10b91e3ab3e4f84fb5035b79c1f46ca1dfb5fcf81f1edd80470f950ff36dbfb90fbc0e313b11e911801e6bc08fd56615b7dbe57d11cd5b89586abdd5bdc768bb7d596d55d1775b358efecdf675c9f49783ce09fe415a47b0aeea15ca221f882ec2c3499acf91f19dba0fca61fb3be86f625ee47635eb09f5fece360fc7f7193ff8ab809f56598ea589d50db81c404c91a287b421cefb7734c250e4ae0bcae7fcbe31c03120e41e95325bc90615968b16f5e97551dfb7696c67dc47cc34c57fe9213f20eaf22f80379bf3aabf7c02de68cb7fb95edb551e97452cb1bb3baa883cbb3842d317a59a31d3d2a910ea668e7675446d72898fe26464588bf1b423cda60bc69ffaac56a305682f701c7033e9bfc805ff067fea3e365fba2cf9ce4d08bfcbb332177d4e82bafd378c66f8fa3c236f97ddecf7bbc90e8bfe793fd3a3945b86e28db8b44bfc8c67e0f9f2f2f7d9ac3bc26dc8480955dfa97fd329814a1de3d46a4460af9ded3a8ea3bf106edcf624db8b969bcf333d6213f81e837fdb77041f3a1eb7979de65681cb83fd438d0f155705f723d57cd25c9d6086082493c8cac0dec0b048e23c6f7da2a92f6248ff405ce1fc4f2e118fbde35d1cd4da4e2b214f8bfeb732372788bfd1b55cfd99470ea515e368a5ba0cfe0ba3a624d4bfafb394b90bee71750cb82dec765e5459e6be0dfc06b9c9e75cb81ab252fdbd3a89db6d3aa83eb01a2356d7915ad471bfae763dc763623ddfb8cfdd7c3f833ac46d7e438369e3f13ddfb1c058c4f4eac55714cad2ed5476bfdc039f371db81dab7a965ee6269fda8f3176c1657e9fdb20d5e6b591c67caed2e8e31ad1b46f568ca07436d5415b728b13f4459433932a621d4d2c0b908fc9ce895a2bd88ec4befb5e8cfcdae357f350722f611ed17a4cfa6068e27f27ff7286f01b58125fed53ae679b499ecdecb45660beb33d18b1fd10cc732c5befeb63c0219615e93b677407bf7dd9fec97fe98ebb51cc390c746478d4bd571fc8cc4478e91ee89750cff55ff3e7cdfa111f39279e0e83d2c468dcf0fe5d9c4e241d9c78b26daffde7cdd9db9afdecc5db818f37695e356687f2e503f03e78af6583c588bb9031ccb61e4d734987c46415f5be2fa58c4ef7f613119dbbac05e4daab538a7447fe85c81efa5118395c6077390709c6cdd9723ac25e9acfa8cf50ed2d734867b98fd968ef3af46bf5bfb4d64797ba4673a2dad819dafad35915332a9f113131bb5764661dc72c3e6bcb39e6f720072bc0aac99dbf7e1bda4c02b37f3b0d8deb9ef5797f44e459dd7173a3f49d507191662fb0b78ef015b1d90d8d2a09f2f03e771fe17210707b54bec844318f4a8ed44d6cb376be9dcec5343e79664edd0c23c710ff995c53cd957f1f9ce15ad5301bb83be07f85648feac3a5f56f73ab5dac7b08ffc8af369a03d05790433963344f373bb8dd8ede3757e1be78d5c578bd505bcc581c46ac6dde54a0dfa27d099e9be6e933a50342e59b72f451fd19db30b8dc9f8ffea93d3bddab707986783d52118007e90f339a9b079568fd6e412f0b285b6acc7c2881d8ef62fd4aa32fa6be0a956fa06beb9ff595d103907ef2b1f8ae82b22be1d9c0788e564a35628eee742c15d42ec908da837d1fc67f66f928ff7942d74b4666b3805368ead13f8012c4f0bfd622ff817d4397b320ee4061f8b704f0333ff55fba2eda8f6f5a0be46817358fa9d02df5f20d904b877889d927daa7a9758ff9560d116496902ef5e3a7072ec1ff5d6727e20e69dc2f3e464c2dafbedb864ddff0675f8a46f793cae4d740cea67fac7306e12d782555c176c2f01d700d3059dbbb90f17d9b781f164575a3f70ea5ff6500bbb52f349a13d3117721dd1bf41f60cc6eabcc8b6bb25d769ceba582794e86c759ca71877ed6a4bf3160f15b71b1abe11dec65d9b41e0e4813995f3d26b5c5c804193f32d1fc9a144e7b33c5693b8c17345b87886f2bcfe857306fbbb78c5fc4b3fee6201d9faa275ff7f23ff11fb4f70ed455a97b25d7cc656f1c9f732f757223bba86ab9e3f6c1f9167522bbff70cc734afc41c456c7fd09c44586b2a1b8bebb5f5be711f3f602cd15ae36d827f84c827c5ba10f3098578fb83760fb19d085e49c2a5ca3545886da41f7609ae8f42f826fb39d20742fffcafbb5803616f48788347d6249f4f920f29e6e41c7e454191d6b8e6d07788f7c2d892fcd5063e549d7b5df36dc0998bd784b887251be9e5b966e7e5423f08d697e54f621d98ef132e9b155862c835aeb7cdc703b7d3685b81376ee48a723bfe34aafab3c89fb490ae9596defe9d9fd1d299341c4c5a893e299281bb039e167cb6a37dcf309ab105b1d3eb70268fb53dcb599be05b986b52acb2ee33fe5961b94abe0ded05228ba96d747996cfa97be3f2006eb5991bfe439c7fb97fb7b87cd09a13e538f14bd538b2382fd6e4d7322035b1d0f718f975a917675c2b88f02592daa1b55aa61b15069cf92f902c314ca1ad06bf231aab2f6b7129f6167f86f8c56afd12f618acab37e04578e5712ca6d30ad8cba4c27cdcb6e5ee205e517ac714fb56ae48470ad1376ca84ed439a546dd2fc6cf61327639f15de1fe1a6129cf5fd6184f39871fceec5bf7109da1573a8584efce87bcf6ab38be5ddb4805bb3961fe70dcd7fe0e8d79e8773e23bf5be2331ecb596715d5d6641f721f712d79774bd7095a1f82feb761670991d74bbf0338e350c77da3e352cf9797fc5f77f909f09ef1ab741df99722b5169b6026d7b6bae9c7927c40bfc36955c3755f25cee3dd0d6e2095fd7feb5e319f1838521579d5bf1a3e03625fbabaa7515f8ea2fefd9eeb2f6712d365765d1691ba3eff8975fd09170aad6d0558119ed377c30ed13d6d2ef0c808ba97e4a712d7ddf29eee2fe8fd420d9eba4eceb813993d70472766be2a9db453e7c418dce4c310f509ca4d10d3770633e0a0fb1501f69373c3dde2aea2d8e34096ebbfb13f6abc6b73657d156cf3dfe3db273e1609dfa87b9a622f6ca2602aee996d184c9c5895b36f99d799ff54cbf1a7fcbcf57e14576407d66a523ccc1777eb5eb1bd2ff8c46e603031571cced19f6853e2dfc17cc8627d7ef734e36b4cea5b6a7547d1ff381ce677f9b418c71ff7f9f93d96cb1e59dd22d19f36425dda8cf38c7c8363af4db04c6d2d4b501f685d32fc37abef24716159cfb0969bd81cc85910f8579a790b440e2afd3c32979592031330fea27fec5ecd8e395b9fdcce1e0efa796a657b917f87d95538a643f6547e0e036473911cd21b7247e076d9a9fd12f7b91a87649d937eed64fe9af5bf941c2b12ff70fd4cb865f7a5452ae66193f7ddca0d95ec06096f09e321b58d6c11711ce47cd13c4fb4e228fad0f0da12ec0564a3fdd770e6ec1ee7cc05393e61f28aaf7f050f687aaff6ca00e47bd35f3f880297e64dd03c9f3c35fa787cac5e438fb15f59ae3e3a2f4ff120823c17f2ec2e21f5936a39707bf24c867e0b036f9f9a522d14aabfa0b676b4a675625df2505fd474a709d4870869bd2aab5580df7cdd2d6db34b65cd758974f159ef3afa4c8e6393de3b413ad7266e3b1dce7bf29bdc7e03b315054ee736ffde45a8250deb1ceb71e46f86d7e471990eb6c5d13c367ddcc38d96f9ba5b44a5897414bcee3d8db449ed69b27fa0fe33e04824fb9c70d1c87316a8fddd4305bf39d25f62fda263cc31ec8bfbb55ab80ca03c72ffb28d3477aedbcc6fef3347b7376f2bf8ed13fd36aefa5d7bd04a3187a654bb6523fbc17a9bd0db9f835967352ac7d48efe1b7c8e2fdaffb35f26895c23ac2677ccfd269c257bdb48ce4e75867e409b559a7ebb2d23cd47a57d0c2bd41eb2a5a21ce9784e55af2bd3dbb0b56fa43775eda68c3a37f6cc9d5a997cac19af7befaf9aeca435690635df223e6b6ec57115fe1efbe5b9d1372447bfa5e7caf56e0e91df3a2d835d31d5796e799347d83bc47af1235a4c48bef54dfe27c259a9e2bdc4fe8aa5ff24e91530e6835a5d9bd203fd670e7994bdae6d74e360d58903f39206b3c373605ee2e1cbf38fa1a1fd159897f5b0cafe7a2b2ec9a8b82491b1dffdac8ae7a17948ec559a0e67d9f6e775bbfd599949f062effc562709cc4b120417f8ff68b5fefb6755c035d4fe8791fdf57346dadba07b0e49606a3bf4bec03c1f3fcc4be2b7d0f3e7f570b63e4557b53e4a6dbf10e262937d1800f76cf6e0f79b893ec913cb7b595a26f88e46e89de6790b7d37d67f8d74453e32c54f0cc65938e0393fa01fcb5ca4b0f6683ec96fe98d04f7476b76b2fabb7f80e3688c8b82f39ce490502cfe6901f701976311fbdddd7be9bd90dcfbadb0d7b7b4bf77f6721c88b10afa8eaaf389e660aa77d7d1c2d4862f3d52a3a4a74d56bdd370d583b9536139469b7e2bd1b3ad532535ee64d6761505fd7de84f8ae1c02940df7805fce75ed6f708f72ccb75b2f7e83c8cdb2e701fa6be43f28beafc00f06dc764e05d97467e49fdae16cd907c9ab4c242dd0737987c8641bf98ea790e9c11d5f4e254ebec0de988247f01fb91719f869c87f9be7f6ab6be5b7f916352bb53b436655c0a9d5b557d2d764d691b8601b5255af9bb551c525fcb983c63f9f97dc0f0c8189456df37bb1377d1fa39f37666d09a38fe1abdbfd71abf286a8d3e928b5cb2354a623f93ad6d4df6916f56dc6744fae64fc598fd86e979907bbd403661017a9bd12fdead4911f9eed5b6fa93a9977fcc17de64ae154bd7ebce51dfbf51b35acee9b8831f585aa68ef44fc8dd687b5a32f034610fae7f977ffdc6f7dfe09dbab1e7abdbbe323ef7189755ab67f02b0ad68d9a0564cc299e15cee5f9c20c03ad65ce175dc75f7b1f0b34de35df307d2ed42f4518d8db06cf8764331e8a77eac79aad6bdc4b847b41f2e1e1df7edf27dc183bc9c699fbe6794ad69ac2a73309833ececdaf7141e23c4e3b63d8f419894958e631ad9d736ee1bd4d5b5d7351383f174577e17af902f21935ef29811a1048af7e95f6c117f594a49ca3a5658a6bf22ad85120f3b1ad05eb291badfa0ea9f38e756ec0a81457b267d0d9a92f7db7888c73b60ca6127e86d79ac6e3057e526c0f5c53ab8bcfc9dabbc186046e41cc3141de932765da02df10b2c706ce292d8b35d529881c637b4cf289acfac6fbaccff4e19181fb14954595b4a7c01b46782d89ad80eca068175904b387fbc7f4c1c8907905920a9d65a46ee680e336c56f1ed1fa11644cc937a167055e029a7b88f3ea9656710d8dfe6ae977d62447b2bcdf175196f5fe1eae3ba7d45afc003d54e629b9da16e01e6be70091f97e4f8e35e84f8df125fd17defd94cd90fd4e6aeb101994bfcffaab48e6275edb96d3015d1e6c6ae08bc46bc47c3e7219d4c17bc82735432d399648c70a6a690cd22de655956280428d8ea9b88ee2f0b59527563f1d5ab9960e7a3f4655f737f329241ce321d6c3037acfc86fe589d112732c0e0c0741ce15c65d6ae17746a5f949eac7675826e21c521aeb0a8d7316221bc5823cd36d184c32c6913f803aad7fe29b388f3e5f6ff826f83e6a6216a533abbc93dfb80d8308cd8f9654fd531ab8e734988ae7d9576dc782ec496fbc83f913c81ea1fa0b3ab77ed7bf7a779fd9af48bf30c1672d8ebd849f053fd83e73f4d7cddbaa7701db7e95fcb05f6c5c734ff04db07c3bb87f8ceebfa2fb2303dd3f65f7936f817382e577bc68507b86f677683e1fe9b5a1f01e1c2bacc756798d71fffabab75f9cb4f63db81d19b7c4fd12e61ef5530b447f0bcfe3ca0197fcf9677d40d7e67e77bdf4a34ee3bc20ba041b17e24be2ba89eccbf0ab34a7be9660467d23ecb97a6e84f89dc45793ae9c564b94b518f3426c05599f5d1c092710ab1f2fced368cdf517a803acb5f20463f11a3e19857ec6d6bc50eb01f432c06643fc1fd735b4e75ae6e87c4f39942391ed2b1be727613f4de9ac3836a07e8fdc8ea4136a4b742e5724e712f56181f3fd86af91375f4f3e5ccf99cd5bce87f7ea859e21fbf3657b06fb5b443bb5c9336856511b7098a26e50ab4120c403f5ee1ed9def6cbb3f84d47a4e3c583f51678b3aa33e61105bb0e736143dd1f19bb42648ba42bae45bd3390eb1c626eac32cf930aebd1b7708c74cd62ff1b601e6fd51b14ed73bc1e806befd219627ea93d191f1ed350f41572e3a47d82315f54571eced03a21df3b6ff2eb893a358d23d88628373bc2582199dadb36ce78fc0e416f5ed7ebcff2f6841c0e24135cd0db61cff1e7818b57bdc704ddfdaecdcdfa28c7bb09f7c859c9c54fae89f168eca359207d40150f21f5507df35c8b4bdfe4dee1d7642e7cce13a2a8bb2a7017297c9339c43c843c10c6491f38bbb88dfecd792da81e16fa1dadc679eeccd791335f170b7f067cf4d9a8ea9d6f73e1e33c2a964f4638225479b23c8f567a5f8db7a4d715f89bfee27f4bb9ae684f8bb53f38e711193fcfea527f5126e49ed177fc55e768196d38bffe977c298fc6ba371267bfaa861ccb9105796d15d7a5299fd5387ee31d9281db613eb5f6f861eccf70a3b138b51cd741f650bf8af54991b4d5f11a8127a4eec7a0bed07b5cd90bc62752d5f911e19c35dfad42b32d2f4fca0bb725099f0efe6e538ff502ec63c671ef9bc7505f644b78b638da03e053cb22bfa32f03e71497b8aec1a8509ca11cb3d3b58d947ec34619df26f74a3e4d164727b971ac2ebae813793e211d346c037f8e1ef9e8dbf83cb379fdcdfc55ee4be13247a831096b5258fb3bdbd8670ef07a2ab898c95e517e4733bf53984f71fff0354eb1febc2efcb6f1ee463d4ec68929e4988bb12223e7e723d259ae3d8c6334b28b6d3c67520d7aa325c8ae75f6b3ea6d46f3dee67bf1a3dada557032621b1cd7645efaad736c7987c8ef68848310fb5c4ccc0509f5e8efd48d8b80471ec72a7eab569c49f91adc54956796045e916cd60abb0caf9f8f018f77804f07b701359484fcbfdfe755447a88dfcba220df256df7fa4dbe7d1b63c6448e5ed0a5a88edce42d803c1bcc83089cd1e0a72a8eaa7af40fae05dc87cf265eae96dba8ac932adc23ea13b56b05f069ddacb5e8f1783eae3b20eb0cb7f064cb6082f164fcbd5a7c0b57d7c6781d157675da760ac24392d772f8200727a9c5b818162d9866216013a0ee7b097e4e90897cbe6a71b92b3e43959cb21f6c0dea059c01e3d59336faecd37b812f34d2bbd5fbacefa556b17f64cdff3e36ec7b3effd047b27e72853ddff0f93f8275c0faac4f6c6cdbe0b887f74af045ccfadd9179ef9e57b887bc97e4d450bde6f918a3f384e776ecd16fc2386c1dfdf518ae929dc2a6ae4646ef22f90e687ba80dbd5ba5af4ee75edb357b7e073e965967d5c43df4e3f1ec9c8d8b96d2be16dbc473da9417646fb0eb3fabc69ede123c26bd67c7f05c8dfd98739cc3fdbcf4b394e75c9327ae1a47fbc1b158a2deff4dee3ea1cf822e2af2e8e1bc67bc5fbf91effc9fbaa794e709c79c2e807ffde6fa10fd159cc7428583fc1af7f2f120377cfd3c10792bfe9773003c5ab31bfce9ffa76ffd89be3516d7b1142b6e727b413ed5314536cbc3b540709b8feb5e63052ef5267707ce63805c913fae49c86ae4297d319a59456dacf7277f5ccf90d87256f12bbae72b5a5c764b7df10fd4429478679539160ba1a65ecda725d5d351fba9a45a8b3266c56275fb3e5366a7a642aee43d39065cd80a5e5ff4bbc0c18c39bd9af799e8f7ffab4928e00a20973ea980f793d7f880b8b279647e2721e612eadd7d0cb8052477cfc0713432fae0bb8902b9d6dfbcc6210a79937ab18e20d7b75fc4415f7b9f51ce5164a7e5795a2eb2b87cc6678be51dd11ea479370c8f07328ec5ae994eb564bcaaf4fb08f6cf877d23f8d4262dc02d06e32cb4847dac8bfca967ca85896428e1d574ae2391f3197d37f9d66541b0dbe45dd238b11c55f0b9ee220bada76916f9ad333a1329cfc7fb8cc6575fb39072fc53bcfc4b9fc59d167a7158fa17f09b8d308738e3a306ec3de37dec5c97be5b409e3a9b4b82b50fd614df94db16c68685584fcbc6ffb618f42527dc848ffb282dbc46ffa07ebb5c0b048ff94dce945bb1e0a0eaec120d8fe110fb171af14e38876bf6cf329898789de7c0c5d0b09b705f6b78f0e2eae27e6ec7b386ed03eddcec9bb9bf8c8c1eb2c5ae41f359ac03dcee23b317c733c6bfc5fb4ac64aad3ff03ed7eba560aca9e07bb56ed78d873154e4b0d7ce40fe0e39877b2bd43f643ee78fc139fbca070c784f9ea74d9eed5c13ebb20b09276923ee2ac712c53a7bd2bb1b35e898bf15e265355d823dabcebb324cdab73de1d655f857695d41aadbb036c57c308dd65ba41c9e640c681d42cac9a9aeef4fb8e80827a6dabf2c9c81f77dccbd5cd0ebd8dc4a39bc7c3dc0593dc4be1156ebbdbee6d8bab95d33aec653d7c87957f0efdcae59c2d6ed7d3b8fed530527e1d73c67e6f311c9f2d447f28ae82cb43ef84d9b87d4e9b50a2d0a1c248b0b7b30d9223d7b89ce8cc1e3b124527701d940a4060cc915a23568405ed3f72cb2b88df6c2573c5e42bf7eb7d68f5813cc3ce4a13e69c581b70f03f79414b48fc57119002f4d23cf88f3a589e7c96117978536f5279fa9df4a6d13cf4db459676930217900c069b64b36134dac1d843197784c42a39f535c33f15d40bbc0674be336aab30dbea58e65323fc3b67748fd4b0eb851f9f91bf5869c221a789fac6e0f5aefb41e1360f0c536bbd5c8e80bdfadd5b9bd087f8f968de6af623d582a8b308683c4bc996df8f29c8d214788e86337f8b2967e6797bee2fe607b927265899cee727f853a40f1b0623589649948b9b00cca3b99653f799f459921af1d5c7f97adcf6173ac1ea9857423d7556eeb6b7b188fdd82ec7f85fc78d4475245bedb0a758ff1d509bfcd967eba056ca24a9e109d0efba06eca933dc7fdb37baeb6d505dc51887460eb5290fd9fd903ef8a75fa7e11fa932dc8866fd4d52032e959e0b8f88cf5cb1efd0d7a099629f26fff0972aabe8ecdaf6403f34589351cc4bd9a2db01fb87c9ff55b8980c7a5f868f0d959e63545b6178959da56b7243a62736e380efa917ec97915bef9b9c435326f703fd6c7bf2fdb4c65efe11cd210cbe8560cb55cea79a44a3fd70caff7c5b66ecf7e4336221b220ff51cbe9be7da0bbf49e3f924e73b09dc1f98c7af6e5bdf9779a2ac94f2d28d5c5a133f6744e767fcba8b5a4de2bbf28deb48586eee6df99b7637b97abf2ddfa479f9eff2f92159325efa07157748cd4f57c76d51ec9012b7457013220f08cdef9ba873be5a8ccb7f8e6cf31a0f31f3add86d0963c4b01249e99551e01418432ff98f1ead3976bf26d8f56edeff15d7d7011c94247b43a3bf7a9fb15c49d0a396e0b3a067bda8d7ae0f311a6baf868982bc011c0722b98219e6befada67548b57d43982ff4d7e0f49ae7e7d86093102592690335efe0d78cbe30de8a7ea589ac003dc909d725b384790b661794f21c6b7c8fe096cf36d31bedbdedb2f93af73dcc93310879e411c1ae3afafdb6cbc52f81a5e1ce5f30e3ae34a671f05aa1c7d750e3cce69cba57558e34691f5832f7c14e397affd133559ae6c877211c56552bf1feab989fbbf7696e058b4f4ccb7fc01f2584839c1ccfe677202fc27b80e5f97fbd6955831a95d956fa01637257cbbf2b749f6c117f573d1d8c879b4341e4b6597fabc70a136a6b9f953bc2eddb3776237347608e7ca3f28c71fabc5d894d32f1077688f71bc702071a67cc650f7b628973ec983b35ec57a7712ae17e430cf0f9163a96db03b3e1b981de3e922607694f81ea833eba7a764b3cee6c8a66829f9986ed690fee318aa3c2639cf65bf59f7ecb6ac2cb96e3034d23c54718bdcf001b3e75e5e1bbe66f27ea5bc13e5ca9ddad5355f27e68ba4e7a5ecdfcc72955f15f075b5f5cdfd7c907b22ed35e11af81785f5fb403c988f87bcdfcd6ba817bb05c95b5660f385ebe2decdf3a4e51d97fee414a9f37fb76130f1e2b2f88c75578a81a67e6717eadd75e4ddd4dd5af439fade66ec2d2d703dc59cd70bc3363ac5db5e31af281ba7dfe33ebbc361b1f43b90cf7f83c34259671df30bd1fd20e90b8d1af9d2f9c59e5160b12cf3ead1319de5b48fcc4ef959f56be3d9bc07727cf4c96e89e78473613c50835deca7e22c91e3ac6a2e2ce19e2fe67a80d70cf808fda76cea4d5e668bb5c865f2b0ef43c0e7b379f5e4f9f96dbd90ad1bdc5f6e4be3b3471c6b057e69bd75286f26c3acddf46bf1fd3917b0d6376aadb0bd37eb036749e84f34f02be9973c6937cec82ad14c3436796c3a795ca605ae250cbc38ade8253b8f8d1670e4a4be5b46652860089ceb54ef1ec2b23b0903e757d26a3e3f7e19f3e7e7bdeb447ebe20cfdba17f29e7be592ddb9359e8773698ef2725ef8d8af167ef009c3703af8ce64e29d6714eb4c929f69d13c5ea2bfbf1d95ff37ed8e71bdfc1df7debdb8c3d3a1f5e62bdb58ab53c8fada8797d33c1d7692ed2807e93d0e75694278562bccbc539f284bf57776a302be63b0cfa688d16b6955671db3b37e6bab50b662b616ce7f6796c4d55780f56ab356c8b7949846fda3cfc8802e7340ad25d3470b7b6b53b0107c2669c917ac7a83fe7582f80c320da38a77846eca900ed3d736f0ffafb103dd3d2b6ace69fee15e9aa5344b3ee2ab6ba9bd1d53e8fe78bd3f8657d1acfed536499d5b26a7dc66de7085803bf5b8e0276469d8633f97ba345e30c23b5bd7b5ba7b5df90f95a7ada361b568abd60f47e29d607fce69566b528cd63a42fb261d5db044ab926e34712aebf7ec67a470bfd02c91376860a3962ffa48c7bc0fe7d0427f0ca72c730fe253aa57e67fd387e4e9a0b05179350934d9eb7636a79d7d4e067dad7ba90f43cf195d98adcbc16cea91cf03512ea39d2a13f53cbab6c0b38bbae755c53b299f451ff43ffa29057d3a7f10b9357eba88c94f2eaa6bc9bf7aefcf9c5797c959f8f16f8f99965eea3752b4fcac395ae43a49f7239699f475c9654d12ae139803765942c1b22de8f6a6ca9bf83bffbe6b7fdfa42d68b7b8cd6bca7df24f6d90f03477d3e589ef077784b9edd986ff38cd65d34eb6f92b2db4aea3c6c6caecfd886ac921bb2629f392d4d71ae3cd79e93c78dc80ef13bad65e0fea89dc3d7b07510ce615b5a5fb5e727b1eeeea2b2c0984723d9febc6e37d2d954f57ed946faec5478ecddb2d0de710dd39d3cc79d53bc26df6960ac60b07afcfb17a5b721fc223006983f0ff7fbed65f2e9d3efb3dc62b2627a06faa67418ecab0ff9bbe669e0540bcbdce1ef4a63de568faf75cb29a3a2c5ae8557f15a544685dc47bf4887b2aed03b47c6b7cedd2af2d3e2ddaa6131074e316ff7b5b9dfc57c8af2bca0b1fe4b1eebee3935d1b985bf8dce4de39c993f4bfd47ef9895dd5ddc9c6b72aee17187f6cc436d4ecfe83e7426ee62bd43ffcdc7b9d08e4b683bdb7c183457724ddbff990c5c1fed11b41ea245f79cbeb64e9181d7d1509637f328782532827de72f698c789b43a43748eb48c8f976aaecaf37bc06e36433798bf50edb9fe2fe82be5e9f37234156c1df2da788f4e21497e61eff7bd24a36ce34f48b0adf4bd7b5fadbbfe0bc8c05bb80ca56c2bfd3bfbead9e4fb16f6a4babc813dde9c4a5774caace2a9a758f71db2d92aafb771844c876a896415f13749b5d7d6d717bb0076776a4794f8991578916edd2019bf7ae6a8f7f18640fb37c797ccf42f780b725aabe61a3cd04fde5df648bff9bedf09bb6b384ed107372a5f1ef201d419bf19aa16712f363f51492d2636334dab845d29e0afa8f88abdaffaaf34c3474235eafb67b8fd7a1e68391e385389e6286fe64abcca712ae8b7e1d1c67245c6bb76dfd97a4f4f254ae0782fd5c65b79ab7d3e3ed1caee894acbbed7825faa1705d05821728eebc57b8a71ee7fc0acf5fbfe74ff3157e23e740c8e752c756252e1ad127ff53e07a6ef48ffacfffc91c058ac78b57fd3c1eb8455276f2d42a7492a32f6168de2accef26e46121fbef98e8d129295b57a93e249cb1af595c7a6df20e09bb10b7859a913c476f27726503c723f0c739ad98c44f016b81b1db84ab32a5beef22de788788d6c3e0f2e257141448b64bd8797be06e93cd220b054c40689c69dd54c0e700cf59d9fdc4d8960ee5d93ba5967784da80d6a5635bad16cee3659c8077bef3299b41de928c1720be77746e34b8fc46463f27bc5e3cf70af7118f936e1ed03bfdd661ca3943bc34803a13c53e3680cb0eb8fe309f9fd7c448c29cc2b742cd3dd27e19b73dc25744f0bad76d761737a17b9d91d1e7756b887d3ae3381321d7b073255c7b05e6c6a0fd01395e8481b37f9f41fc1cc9c2fdd29fec5234de8ca31de6b6169bf8cddcead9d3f5466e35f5f7376cf507eb0c516c544130615f72c609989c6e5075d01a406b4de3f8530987cee62c011b571cc35b1cf8f2fc0524a644ebeb35f037ff2c6ef34e9c1de97d9d2bf09eccf278bc3a67e3ea9c4d0067286289e8d97dce386e68abe24746bf776deb89c593240e8555afb05f6cc0849318f7dff640dbdbe6a119df37f7dac8e875eaf9dea05b6e2665dc760e43355fde9e71f3cffadd1a372dedaf581b49cc41fc1bc977f6bde641a7350b3e0667e5efc0793d5bef284f3560bde7c2b70d0e4dec01eaf715f5bb1fa3fe531e7ff4ff31fa0673bf0957694a62da8df89b340642eed43d6c598db31b638d30fe949ec1421eb25897165f67f167f26fcc5f5d5ca71baf8c4aaf12eba9287312a4faa7989757e82ff3f10b726b2b7dcf0babef86f98425796f0bb5031af55c1af506499d3a1a5796ebfd7dd6f0fd382e89638f32179b0acb8bc7e6e519ce609bd4c143f31c28788b49ac97be87ea21c23cd4b890ebdf3c93f59e217edf0eea824aba66be89025738ab16d23bde56fd7f7ddceedffd6f1e1cbaeadc0579eca04f92de4c6bd7509d752de6f0aaebfd338ca0aa760fd3f1775c8fcd6bfd65184511475daf1ff8e758c3812057553c0ce5254f076ea1aa554674710bcd31d2791af6838764904257a57c304887331afa3fb29f2eb7f95fbce33278bd9d33bc10394aefe50e7b740dabf45d62d77824f793e8cea06ba2f79b2d56cf073809a1e66515591ed277caa4847312e9569b6510152cff2018937c0992f7671eb205d2cf3c2cdffdd2ab62fd9fe0f09de4b1ef91feed8aa47cde516e63c8fbc7b5cf77e960dda891f6efc1fce1f16b62bf9f8ea335e10298f5639abfc3740e96cf0318e923707bb4a74a2c0bcfc75172de92fc03b00b3e63bdb5c2b55a9a357a94dc33e82cf73bc07fe15f9d746450ce154dc1f36aefed1733adc5885b7189e48380ed0d26da50aaf980c7215160028475bf257208c9082df29fb63c2f17e915b7f6c219637a66846be08bda0ce45b253fc21d2ec60f7aad811f13b8cd6fd8d38c57e077b067a27f6e2ae4ab53fcd33dbc5832708ad077c11614bf8dfffdccfe1e95c575aa778fa16e6a8b761f9d536b5ccbb0f743aafdf3f22d7c596e5b741e3bd826b544ced78968ff9e92955c1be56b9e8eff525c5849cf003c2e37b161757f1cd209a43110f241ebb14205d7e0dd9cd1ec63c074c3dc9ee5ea3947fa15cd8315fef6db93333a0322cb5cc596476355e903189ac63729f31bad284fda6e91dcf0abf07c9ba74fcce55b6498e31fe2b14d1b0ff2f7251e7e1cbf273e07e001d6d1b98c7409b08d21070a7e47e387aef99d35b95faa4b4073f8a2f6e4715fefe33cea245f48918388ec47e0fd45b284c4ba6fd510b070bba1a2b61b3b1b08b732cdd3e46b46ea071b47c2c7ffadfa6dcc2755eb4fdd2ea2fcccb87ec999cf83c0d5fc4e6b44eb05d4961ae2fe1f69fd5c51c70f75f38acee0b7558db7a9ea008fe6908fa3c09d3c01dec6f17c5bab3b39a679c130d6484e430e1fe18d16ea9a7c02efeb8bfd43d8a784b799f05fd6bfabb53f0733f6f72510b8a0c9375c1ff806c2033d89c760ff93bf3de16f763637fcea0a5e69b1cdf1039803fcac8c8fe31cc28a3392d74491f45dc2d92bf091a9ce577abedce04fe43e20d579e9bbe87cddc133bfc92595006655e4a7b9cd29b5b4ba9a6d5d4e71bb97257a8e740ace8dfb00c645ce33bc9733d73a4556510a35bad56d703f2ffed681125bfead5a0aac860c3fd3786e96073901273107caf655f3fc9c097383ec5ad18ea45cf88df814dfa7cd36b13e39dedb46aa717eda64cff32d70bdfea82c3629adf57cdd12dd909d959bc8ef20d94feb35ffa079ff9c2f3e25672cbac6d7bd806b65ba9cd34eab65e0caeff204db75a3ddd5455563aae28203fe3ccbd3c06782d6a66897a339dbac3356cf0ce433924f17ca15b043369a3d989c431ff30bc47e011cd4913f39c5a52bc7fb5ff39f9ed97d99b7bc370fd999809d64fbd19eb7dc8f45abdf9faf80335ce77a6adf48fd629f1aad1df0bf07ee36d6eb790da486b59563ec41d3970ff515713e02ae5d615bfd7dacbb79a2e7198bbdd4b02d603b0651312fbb6d34aeae656ad1ac738cdb8aba82f7394e37b175267b7b0ab5c048eeb4707e166b74ae2e03e057dca1f5817466b2c740a64438b759a86b965ec99c20bb2c9bbd76178136f9e92d3a8b10ebbf87b8ed14f6c0ddc590f70678703ed625ada9d3dac5d66587ece058efacbfc16bf7702d3438e7a1cef3f7e48658e37a8964a685f3f2bee46b2439e5f3b6476cc6718d8b60724ac9b9c3d7213a5f2e48c77c416727da23345ead3a0fb1dc91f2ff3126aaede671d0437aed310cdc5d5a7a6f713bd94a7e57cc117208fde248651ecc5f6b329d2e9eb2d1acb7a5ed8c667d88a14f917e61796b7a26a9fb0b719a03a91dc2fc9cf2bb9eb2b121fb1e2177cbd8ff0af56e2bde4cb39f9f9ab49e64dfa8e48f13ed2fa45b88fe44e66bfc98111c2497ab9934072ff7eabe11fd8ad6e710b8f5898e45f5eec7eb580beb43d249cc4991be4ab5e464bb5df73452374251dfa13886faa515599e8af38fe2069cb89cec531fc90a51afc176daccef7cc6036f1d0593006c9147da6981ce2df607d7da58e479a2cc5fc6df37b34cc987101219b6b8c5232b5c179f23bace4dff43d0c6679192cfaf5e83926067e06c6236fe05cd7121f814cfa9551c96c12e27679524b7e7afe6ccd5bc8fa9e7cca65e41ea0ea273c53e8f9bfe8647792f5a71595ca69be2be2e27c43c882eb74536e237642aabfd4a7298551c394dbfde97b14f8ff28d0afef306ef04e375f88a9fc1d759bd7f2d6eb35a5c9fb4863fc4641ab154c671f33bfec8751a40cc1a381fa28d5344b366ed5bc95e147d80782cf7628c7e64c8fdadc7d030af42af6b1bda45acfbb3647b74ccf96a84bd2fde4bed4ece33b366b6a8d46600d8d303eaf7cf19e66813af8bf539fd962672e75c23df3b8a752fd979c5729315dfd87c27c6a7733b75c7e514e78fa9cb27b9be05e6c4c3fc5d347fa7f7ff7ecefae3a9e70c5cafdb5f144edf2735571b759c0693026210228ee2e599d6a2fa416b0a826e6be4323f8ec16a1217a971838b6b20c9a12dd43952c4c5be372e5c96f238d9a4887c781678a6853343ca65aec7df12ddc331a3daf7fb2d2d7b93b06dbc0da44b4681fd03ff966e97fea5b08decd750a75c4be74ce5fbc0e3cdb8ec1807128ec1e58d3a57680da5486628e647907952ed0ef2378b07db06cf15adaf4bcc1d477d8aaf5da4770da10e33afe13e7e69c46ed93c39ab10c765061e70b8fc9c6b5d82476ea5486792e39c584f43e3bde69c5478fc6b79f0f87e8e55149e19cdb49da4cf086b30f23bb1786f406ae20a7d6c3c6b93bc97a5df694533a88f58f078754faefd55fb9b70e6712e9686be066b92e23884f95c2bf53505f643e60014df2fee7bc314f6470eb26924ad9f338b9fe198ed5a1e072cb3b04c8375c0fad1182f325fe734986c87e25ccf85fbc83ea13a2bc6b99067a84fbc2e03ea5c03f4b9aff90470fd1cbfb34b1471618c81cd7f46b7e3c20e9c39afdd525947e3a1fad9fc1cfa36c7df8072d415800b44763de53b031b4ef7f2a49c6c6d2baa625dfba779ff6eeb34d8a70d3a606a34e33242bf4e020f9788811639af782d000b9fb3a141f88b2db38a744f63f199b67744ebf5c1b84c430fa0f1498ee7936b6e2b740301e7d2fbcb7e2179c958c7a9f17370ee4bdb67672dcb99e76b8df3f6316c04d4e77fca46f3d72f71d20d5be3aac23b14c7e85590a36aec32d2a7f0fa6ee2179c44ebe4f33bfb025f6ff01f7da6e4bd733dbcc98114b6ddbbfbeae17a4c744ccb1ef63159dd566af471fee602f72334fa2b5837833189171ebe5f0b83e9b5624c7f7d2be7fec15a6d93220c9c4fc28fa4e0aee4b9dce2f7705e39346f10f3b946be59857a46f256bf9973403920851ad6901b22e21a59ce64ef30be5f6f80cd6b73af9da5ef50c446396fc59c8e9b47cf8abf14eb8bdb10bc9f805b21b90d229740635f08fd2338b8c95bb8004eb72ad65b645facbfde8fb097589f84dccd6fd6162c8bebbc34dfa0964be06ec1273998b4127817ad13c2792528c7fcc36b196436597fb84f34ae2e70d7ff81ac96b8e6fb6fe1a2937db356059129f5da8202272fd94b36d225857a7e0ff0d0e1b63f9bb5df1e3dc3f1fc4619e3c244f679497202e8da34fa4856e631609971fb356c12c82eca7b3632fabb51b938da165af3ad6fc4a5ff4f2e3d2c977e436edce2c895bed7d0b2b184db65677ef70e2f2eb35b18b7add17b56f3e282de5de7a3c576541d5f52ab554c74c49a5d508f21f70ee307b954c4f35acd53dbc0735c6d8bd44d68fa29907df214eade3985989009791180f944bfa173bae6b7fa8d7d417178d40f46f7c90d6e01096fa48581b38982e9f7f786eceb93ede97fc01ff718a689e8e516a98f50765b7139bd591fa189e950fab2557be6b77c75bfaf63639fc537b89f316e5db26d39b6b9ee5fb9c9170f9c128b2ff692e093babf9f1a368987f4d617b996355a7baa3ad6513015630ac758efaa6a4cc2efff8e788032c65b9ad5d2efb6d03a9c93d834e10bc158915a0c77b6e858b345c7f1cc75f673d6839aaf8a1880805d7e85fe8b384241dfb886759eba07fcf88c7754d483025ce73af45d9c3b4f784f590d9cda5e1472a394b5ec125e078f632b6af11c7b96c35c3bab301b425d6eccd11a538c20f6b3a37bb67e753e8c4d6d37f4006f047b4618cb1dce81e89e12f0cb36798955985cc89930c1774bc700e386c8fcdf58c39f646e50bf94fa2e923b62bd25cecf22e04cffac264d35fa1cab71daa6a72dfd4bf245ed176de9b78aa4caaa9181f4bbce296ef79a38e8b6d05fe32cd510c779520d9f03ecbda121d5c57e8bab3e609ea8fdca6b5f7b6bb446eeebafd037553ef424c431edba9c106adb2bf2e21fae754ed60dc5548abf69c551a839f929e61990bd2262d5591e5028e4a7be0bfb2ed4bb55527ad7c4ea525c273aa71bf525e3d23c4401c977c4fd84f6926f70ac3d98d378497daf52e1b298ef0cf30e5319227e17605b081e13f408ce737cd31f26d4236ce41a0a791b02f68aedeb7bb1367a8f506f99f45b617f0beb26c7e35a9da5ba99b8ae8aaa6626ad5576f81505452ae5f53ce29f25e343754bf5bdbdcd78f574197d66325fa4f92cef01f3bc1aadba144b94d82bb0e161dfb86d274f704d8bfafd9ba434cf4bf3bc1ade977d64cc000f56bcadfaeda42c348a3b03ac35ae4d9e472697a312f6a6edec526bb1157813716dcdcd04e75670fde5940c700ef1db4ad2f3d7a8df61db2dd0bb22a815e5ee1234fe96b71e1a6b31167948fd8bb6f4d32a0cfadbb7557f037e86c0dba75681bfd9c876a27e86f525d0197fd8567224319d33f6bd729fca87a487b84572dd926ff3dee0df552eea2a4564a5e23d26fc1bdde3717c08d5d96c0f6a58794887047ca03fdd465587f557d2d5acdd35d69f8ed49efd3943f27cb28ff54e31b4926384e77c3bbc59b7039e17fc3ca2ed88e7795e76d75130deaab82e83aa7308831eea1f1e872adbd5f3e91a713eab738a2ccf67b1372b39c6257065ea42ec03c7c42cb38a082627aa3a480e21fb609baed68a36e1fbff650fc21ff620cc841cc39be30aeff514b59c90ae0e7deaf018a1d86f559c16c79bc097e50967e5107430ef981af5d812f4f9287e23fdbb9ee328eb2ddd35ab29365bdf9d3bd777370fcc1d5e9fcdb92b9a73e7ad235d9ebb08bd639617f5b9c3bfa33dbdcfd2cf6d86c67264f4db6fab7e31da240fcd4f34ebc079529f1bdc36be066b83fcad18b7db6da3366ecc3d695f987be1bb1573cff713ba8fc6d53511872eea49907f34c47bafe66f49589c9ec8eb2d968d1d260f87b30ed29307581ee47f277af74875133a0741d5017e0bf20ebcbf20cf51cc57f38ee9c091ceb4a882b64186d1eba34db8b7d9df8d18258c2fe4606cd66c2dd77c339bd106d958741fe445bc71917ea1830f0bff4df7f6ae91df4b6597f97cc4dc20e49b4b98936b7dcde2f64419991c913de2e2758ae583f86d8344f877b2b7ad4e1efb0bfe5b09ffce3e20270a7f27c515dccee14dc8be04bdf506e60f3f43ce9c23e5dfe0f62c3abf9f4ed2f5d67945cf95c82afe5e021fd3eb0fd1a60d0cfb38d2ddddb23c00375660d8e48cebaf97feee17f06f2dcc7dfcd27c97d0e621f42f7be1596407aca7ede233b63c92df21e910707de44f3aa17e29a47e9697d3bbef0661e05c97d68df7c23dd343aa9b55a2e7796c5d90eeb227b8a1eb14b7bb0b15e3b30cc687905e17de9b58dd6b4a727a15fd3dc7ed8916b79d751438fc5d03b4376f3f9394de2929dd222984f70c9c5d3c6ff60b7ef7f87da96556cbd23c2adad5c2c0f93bf43b423fdc5332989c92cdb439b76d7acd4dec5541f0f7dc3e0a6a184b78a6a913de8ee948ebb1a9c349d741cf917c5ffa3298ec8017e445cbdedb9a78ed330efa78ed9b07aa27639b4e6f9d53ee271665e53ada8cd1795ff70d7f404de02a67ef1b197d1dc971ba07b91c8976895e6891efc669a1313c9b90437548045c8920db3e46a597877a86cec86bcaeaf33bd7e120446725ea1b97575c3e6d461bb48edc22d4bd6b82ecbb0ae941e72cb2a2eb50a8075a936b1b648b43acde58d7385142d1b707e348b0775c76a3b607a1901b46f076415f63bef81a160dc67d30e6389ca0dfc4a09173ac662fe1b9bc121b87fbefb88c9929d6614d2ebdd17c0ca51df3748aadee3a0c265b7aef6d3f016f77ea5ff6e45e691d49b20f8db5d16f477eb1590e5c8be4ea801e04d87fb5be24706169f774de3cd4c77b5b9eb33cd42774fd096304fdd0bfe80bd52738bf8b3ce61fb21f14e4cf71a45f4e91655e995d87ef25b2e64965078a72e8ae8c001dea95c87a858c90ae4b3282ad9f8f5119ed206f7695d33e213db5a6a3c0de54d69b81b56b7478adc655ef02b8bdc69ac731f531aee1b0c1b5c4414fdb421b26c967647faf770d1bfebb637ddb862e63abdb89cc344f36936dc8d72ab6d15f3d6bea7963cfec06eea218cc4cf7c32dbcb729c8cce723d41c6fbb39b281c68c03408c3d45fbb85dac3d768e9eb75175ce52dddb457aaeb9e5d39ee8b216e756e2639a6cbca35b3fafd15e613897b4809a8aafd111c6fad535ddb5e9cd4df7c3d33cc7d5f245a045de7c3dde735e1777132dc8fd0d99b61775a663dc267a5a0032ff5ff774e8d4ef58f5b11c5ac95eec23db47e5939a1f92f835a82d22d8a7576273b23dce71ccf8faa88c4ec99a9c0f829f483aabd87bd8de17b96f0896d0bdfaed2845ffc19959f5d7cb00f2f13ea3f9361b33ff40efeb77578a3c9a414830034913b34830da49eba007dea11d107b2db20a885f84fae287fd4a71179de9bc3571bcd7c277bdae335f47ce7c5d2cfc99d03f118739d084b388ae39740e76cab8ed98d83e91ec11b427e53e62bd01f2dda84d66bf68dd9fb3be6ebf3cd3dfdaf6cb965d17fb82e713e2494cbe221b01ad09199729ce532b4e5b78aed0b902fbad9c146fab3ed231900eb88efc4991b427a7e4739ba52be1fb079a2c3bb03e43d6d0adefde3773b6ca6e7b46f538d2afa570d6137bee1895ddcac5ba8378feec94f862d4e6acd6a627e5477dd1cf6d63fd108cc02f2c13bbed9977f815cc55f71cfe66f7b40e7fabef29fe16dab9718fb94f5ff99ce0da91fba3b05eb361d5ffb55c75843da4c04437da39674b7f2bb6a3c243efa476c12f20b723ae3da283fd5dd705a1cffaf6980c9c22b23ca253da357cb4881316f6917a7d71f94df773532fd3e2761fe9ae9ae2fc3aa556f78cfa967e7d7eed12cdfc7cf727fba53f569c3f82ad269dfbc826177c49f47d46be61fa30d4c4703f97466f1bcd1afa7e8131b9789c0147c4dae8bca0fe440b82aba8d71b7da0feb96df4b5e5c039a555bfb8c139c06c06906f8c33c02deb396d44cf2dc106be3f96820d6a37c712e95bc8d62b4147023d5115c704bd1fcebde83a32fa89bd81e7a80ed7156d4374af6afed1ef5fead8a26ddcd4afb96dfcbdbe569147f5d3dfd669892f4c69f7cab10d7cff34298b535216dabb67b6a2c02bd4ef72f3d47ac5767cdbd9a583f52109bc22f5bd2ff563ec1368eac5f0fbac697bd46c68562fafee0b1c8a7a0af52bab7498411ff8d7708cbb5f2dfd6eb50cdcce02fabfa8b513327c8914ab09faeb10fcffa03baec0ee6d9cd1f86c492bea235d1cd315c1b0ae7a7fb1dfaade0ff6f767edac1b383b3c66af4761ac912e53cba5ea57cb592f87b645ffbae2acc3be5da207c2ba603a612b2ec7d8f73b93724d881f537aeed98677cab2c436fac45789f4b61474b6b4961783be05c9f6a4f4f2445f6c53a8b527b6adce73e1f81ac259096715898f2c707ef2d058631cdc4b4f69173539c93b359f7042fdc15bf049dcd45dfb975169ae232347f6e91ba94d7b5cbc76e733cf75bcb5f7216230deea3aaf21f892995f423cb7001f304f2d13f23e08e71e70f58565816c6d7466804e427c739751e91618473229a4eff0b00d3716f83e297e7189f14452de1cc351a136492dd6e1acf7ff6a63aab375597a87b81d1573bf380e8ddaba349f8f4bcbbc0ef97e04dbbf894f24f94bdc178dc655584b91c8cbd395f317e13b6abab1bb45ba12c94735938d734a567962af8b6332f034dbc2714f8c47ec9c528c4b3a46fe448bfce90fdb3caf6c639f45c23e53e7c5b33194fd66839690f74fd728f6c9837f4cb05194b2a4ee07bbc99b0fe757626fbc6bc4319989fd89d7d177e3e0cc57ac3cb7a96e33919e8901af8231d2aaf353bc2ef9b5064e1e977b55dfaad0effc92eeb53aa7a46ce5b155fc883cf4dc417956a781bb8bd17906dc1fce21f42fbbf7d29ba1f6b0de0767085d57afa9df3abc2f907d5c1c95ba4a9bc6655a6bb877d6fa5c5ae62edec86340f780ebb7cee9a0c0ef53b6873148f66a7d543ec3fb788c8209f0aadfc126b07b46248e2f8f99b98e5e1de2939f14918eb90855e316faee7ae4937b57ad6be4a7071653e1bac167ac231da7380256ad8dec01efa06c4fefa2b67671696ad1ac757d0fd0be6ac9eb06eb76aaefe27104fe6ea40feeb03ea59ca753a217a01bca6b0c8df759f58e566a157be9de572213543a20cc41be5ffa100f399239b9abe7c496d9890967454d1fdc8741714a8329f89fe2765f4b6a988fd42a0ed886ea02eed95985e43e74b63bada8e5ee62bf384655ef2ff28d47f2cc0ffaefb8ec02968d9c2df037fa76daafc0b0657f6293af99f4d3e53aa48007c1ef43e3d3cbc28db78b2d772cdd8fc6d9a8f3af883e2da7b5f42feb39e90fd5e390cc95ed3af4ad30cf19d442585ff277bfdb4aa17dae578867f510b00ec2bd465efb9633e9ffbd7779e7c832b56881cf0cdc3ff4bd67c5bb54f766787ee5efdbbd553c267a1ba320f57d33a2f3c76d46de4fa397c5bef92bf226e7d0c7b549e00c5d5cf2b0f4f6680fabe6e1ee33c83e9def797cb9f63e2abb16bab78fd6f85c83f5c4f540d5bc379e195a89341ee29a82b800c4548b4fb96dd187505bbf157f66b4715af1eafe77c4481fb48a63a4e1bd0fcf14e2ba528c9bea992fde9394e671d992d7abfc9f6abccce3b2ca414e8d4af33a2fbbc729c360318cc36628ad61becf997e527a9fe92b8cf738f49d2286fa30f92e0a26eab57cf799716d7fd6de37708ad8efead1c23b2403b7b340dfd0c6efb9b34f15cf7cf11eab5324a88d3225e3d0f9c4f90fde99ae95e677dd7ee68b75d8d425ea73d95c87cd67bed8536130b92efdf408dfafb576f1ba95bf9bf7d7a2f219e3b1bd2beef7c5c039bd5b45714b56dc7de68bef12f5bfe6febab5c76acf7cb5bf08b6c61d788738285eb88e76bebdbf94cf7cb5eed43a95289f9aeb4efdcc176b8ee94037654673cd311fd3bdb15afac8f674b4efc86ed5335fc9eec8dab592b6fba2d21995ba47a5d62f919dbddc40ddd42fd640f7ba24b58a44797357c6b2679ebe906b5cbfbc356e4db9a67ee68b71ab22bf754a4bcf20f81b8c9915e54d73dcd4cf7c6b5f7ac7c8ead6c6edab7d899e79fe62bf44bbf7817716e5c614db06d7db72faf6335f8c1d3a174f53d1f6f0269da4ed16b147c6efd135f7c8b791da1231e87dccfe92f494e69a683ef3d53e4ada935da477604e677e478b02e71af9138dad09850e74f399aff53ac8718ebcfe6949ecbfaf6475e3192d3a258553a4a55725bab71670b6f7e42a8d9b1c53bfb38e15ba9242aecacf48df4674ead533cb1b8bdb7da4bf00fe22f4b95e0e79bc785d539c4015eb1ac9b1a03a789f60ccfbabd09ffc12f2c076f1a6df4a49be11c1941f69ae5332704e10dbaafaa7b8bc746c6b724ae0cc841c192df22f3bb43e23a39fa703b75afa4e0be7cbdce90379576a3db37c68d1a73532fa57a8bd65f491ccd6218f2680dcd94dac77d7b85ef904e7ad5a6e01b537902d39437d32359aa723f76792c790bb19ed53df8358221dbf5bb52813cbcd53cb73607c5ee95a97eca33dfb367a9dda37e6b318bfdd896d3c8803c3b9137ee79c062ed661311f96f8fe9bd87afa6d73cb5c45d87f50b31f31f681fa6e259f27790779b6ce99245e3b421e2c1b032ceb461b89cf8a7c3bbdb616fb42beabd311fb40fdf535bbf318825fd7ad221f7cd94a9e75551f53bd58a7d8ff547f6f7be9bb2447558c218b63ded9e258ce54f53cbd76d7df2fc4723f44bf29790f9d8f6fe0f4a5ef83b8adbcbe30fe498c81e0e7e479127d3c748c25bc3ff3ffcae39958dd5d5cf311d5afbda9f19cb5f13b6781e13c05865df7a7d7d68c72ee9ede242c8c34671d55dfdeef611f6bfb8ae7d6903522ad733ace64cf1b6bbac6fef5455baab544e79fe72c95398e23091c6078fef0fbe61bef300d5c2dd98c71cd38c3c1d80e9dd88ee67905f3184c8a04fbb0127b837dce51d0071d29309c4318389ba5df79a2cfc4be59457a717cf7ceab80fb2d71bf5edd222a4dc033111c13f8b8d13bdf56bdd6d8203130f4ce976d36feeced299e290a7a3fec97c57964e06722aba8de56a84fee0a9ddb1f8d77995a3a70ae18037b5e319fbeee55b4afe05b68fcdbdd617ba39fd8a5b94776656038a9e8838f2cef2df55b7d743610ac72626fd25d3470b7b4ada585f1748a675f233fca01835191dc173cef3fec17f4bd74de38ae4bc8ab69beb76cede2f252c4b4cf1b123f647376ab5f64be605d5f4e51195da3c04dec4263be698ccbabcd19d65b0e4bbfb38ffca71ff6cb2bc7d3a13ecfce77be07e3dce5774e511b685ef7b0ef90bd70dda2b555058643b9e385fec8f34ada3ac7ed09edbbaceff05a7a575a8b96c7bd44fda2a13fb0fcddd07fcac27291a5b83e38e4f5d7cefdccb3f25d52419e2be075041d07eb3c8314ea07c6801ff2d6b605dfb10b379e06fa1870c0e09c5e2c87a6548f623a0ef926ea3797f4ac14f311030f9ca07ffc77ea3eabd42ff6d16b4db791e5da97b94def5523471373cd127e0dc8bb7ca1f50d04fb4190753867c13cc67a6717ead86e1bde94af3c3e4c729da88ff16354b68aa44c8be1e0d015ea51c33b5ccb2bc300f0a222afc41ed91b94f781c8db6dc4f4be862ce6b9a6e6f33141ebafca37d4574fe22f64ffaf770fea04dfccbb841cc9cfd0ef9ce2b2f8c4bebb85b24da4f7093a23cee17a8536b6293a1f204e43655d7e8dfc4b11b65d821370c877e4d0d688600ba5b120bf0963db7c1fcf19d347464d87d9f06b3cbf5538afefead7c44f51d7afad26b685e531a23d52768f4b7f8263b433559ba05309b85729f7acc07c0b8a75c670d25c1e4b7ccbb7d61ab44bced545a71513f92971fbf3b506fa23c544d379508e1d8fc56f38fefae93494e5e12eb2bc1c786dfd9a3df79ae6f166728c700eef390aec1f581e999f94d31f73bac198d13383d484e8b612f21e66bf0ed2c21e4cce317025c13e20b183fe2e5ef5b7a17f296dcbe9d8967b4a7d678f6b4a91b373d5cfe3729a2d2d739fe23a324c2f11e43bbaaf1dcdf0799058973c94fa656a600b036f446b1719ad73ac1780bd0a4b4f4b81fb95e167454e96209af5f3783039818f14d9ad7aabc07d2b0ec8464fd0ef35de076a8f009f28e4e6e0df63a2cfc3d861db1ce692c974ddecc8e71e1edf65e0a2fd59a233322c8b5b32fd10fa8762d1eee7a1ee5971db813cf5391983a195d4e43997bf627e3af17d907f77d858dbc673d77eb155b6efe6f7f6a332f718af71aa37ad7a7fff9cf5aa9aad41ee217140ab7b1d6ddcd3dceab6a3c079016c91b1c69879f3bcc23985fd26568c9c2d4caf24b8b7c07016d3e2bcc2f90e2c7e8674ebf532b03176cb3cafa6056034ebd832dc37a2d7d9c69ee1ea6a7a95644f52ac90b22d6a2b18bd5f3f677de9db633d2a917c52e3f75bcdf8ada07b31de93815bc441ff44f05a044342f702e5389be4c9c06d25504b212f282e066a3deaf90e78f270dd7fe89fd3a63c27c40e050c537a2235f84f23ccbbb84b8dfe16e93eb1de2930274ae714af5a3fa2c039d9033286b8b60db5ab8eb69916484e90ba74946bf8446ae364a9be007dc21e4cf2a8f4f6ef33ea7b5e6411e058d658f6b4c70c47960c1c645b5544beac42ff8271e5c07982c6c093bec7698f45bffc0d5ec82f6394545f97f483efe7f3834eb051f904b0af87e036894c725621cdb5a063aacad9d0c5fc99a1b5388a9c0d326e94f13f14a38d50db4ef049505f04b529df56bd6d5a61d9621b5a96aef0dfc359ef64bfd8d9b0eaeb78cfedf7b6b5f8615b0b816f00f511e34742df5d93d818c9794fb86d3c6b217dffe91dfceac47ec1fe880f6c23d7b9c765ce179957ee460c53c6fd1ec2208738aa58832690f2311ec56e627c15fa26691e9af9a1583f2b69ecce3d2586920703d984ac6f7c5e31874558625cb86775cfc3199e8b37451be2f7dd6a635a76b5d4ea1e94edf8e6138c21c98743ff1e5aadfcdda4738ddbe2f7dd9823acff0bfe14d606da0bac9fb7f91b2016259e8f53b45696be279d93ff3573e7b662bfd5217951898df7f1211938a7f741d13863a87ca0e31ecdd6f46c617343e6ab31fe51d5a1dffed6e893eabc90f03eeab890ac53b4767101bebcaff0c6f57d138a7b86b7b5fe9db6a2665bc496e3fed48de0dbab3d0f3e33e80fb1e9a8cf91f9d3403778e9a99e8bee3cd7e1cf35f1fa11b233825c4b4aef80d65848f4fbbafe84fdf1d84e10fdf0184b08e39563db0dfbdc8535d9c6bc95d0aeeccf64b23a139f6ff8be63bf38fae8fdafad3cb5b223faf710cff9de1e64d968d66f0327a2205bd15e969fa17b1e3f33ac54cf14477fa67acf7a8fbe7134eb6f95ef99a9de839f1956b56718feb971fedeb5c96d2b2dd257ef29054c10c80b1ea391714effde739de2d6f1bd70eebd03aeb8262f6aebaa9e3ba188611c60fd1b5ad7b65a7952a6687e89df1befc9d15ccba82fd9bfe1e7f83ea714fd5eeaa358cbf992b3ce13e913ef0fbfd6e1d7bef425fc93f68afccd58afa2b6652df6d7abe959bde3bbd13ba0f30a8db728a71343f13d86c0a5f3c81aa8a82d9291f92a8efecb5ea8b322c56da86f21b13770e640dc9c7c8fd497da3981e5982cef84780aec73b45fc99adaf37543e473ed59317e8265b9a15179f08bafc71b6794655e13bdd8c46bf0e53bf1c62d92cd04b8e6ef9deb1189ffd7cf75298f11cb50182772ae937378b17b539cfddeaaae1b87eafbeee9d0f8bef37876ce9217fb5f35ae3232bf04d3502939b0989f03e248920eddbb305dc14b44ddfe3c5e71be342177b551630aee9df1dc311a1bf4affd545acf2f80a197fbdb3ad4facfb92046b3de2550f074d5bee998fa9debd22acad4a018d4e2985a80e9f84c4da708db94232edca3ef1d0afba7de16e150f9a29d04b553d57d6e0a1db35c06792b116dbfd7c9296e3b6b894fe3df2797c0c711541d645f333fe3ad582ccb9d9b75789ca762fe903dc4f006e7ecce3d156ab79e734df3fb893c387ccb7f81d64d3bdda5d664abf2f9d4be01d74137cfabd83cafde56b2ecabf583da98eabe54fd55527af9f22ad516857a2ee43b592ee4bbe893613e1fa4632059a5f6fbd8965345bef9eb619f8d8cb9a798a5295eb7132b6e3bb3288840ce45af1cbff76f9775a22f6ec3b154b579a9eff18af655ccc3fbcafea6d8de29b131159c96bfa57bd0fcccc770277d9a4bb6becd7bc9c64efbd2ce6e3eb37ac8ae6e3eb7979e4376b5655ed3ba6f607d29a2cd74a778be7ae8f9c281d8b41883c3eb00f753c0e04cc2c0dd8e4a73955479057b70d6df8f36d94ee15310cf7bf1b9d568037abe36daac55cf414d8bd8403ae19efe26eeef062f06c125a1f6d0de27dfc67cabd2335fe17abebbbeb87dd021fe5526375702875dddceff035b9de42b789322b622ce57fb67e70e3e2738870be82a0adf61d3f7d1f41f625e4f9f70a88ad8e306d6ab794f9d3bad566b90ccb7f8edb446df3e8be6db0c9d852416f3433a3f8518358bff897905f219dbfd4207d8c59b49916cdc79e45f4a05972bc3f14501c64c406ea8d11162f35e35f74d2d298b27c0e02a641d7dbeb60ef761501449d32f4531fedba51fd56b652bdab5ebf8c5bd6dad1f9b7371bdf27d4bf0ff487ec23e94fa23de2f9f5bcd3550fbde2b1be366be3fcd4f5a47afd8d736c7fb7183ed1d5827380e67d87b056f0cc1106e33fe7e7aae33ece15e5ab368ef132ccfdbaa2ff48de84edcce693c07b189eb56f2e1c9f553d1ba641c973b24ff86c6fe17912373ac0faf1beda2752ff63faad58fb7a98f5cf99df2bd1f5897fc48744ff2a38bfe59dc4fb7882d4f8b668a3d79e5fbe8eb5cc3db790affadbe5a79eda8f605ccfdbca93390f6d47115f0f10da0ed373c6ee02713daba79d6e1e767f5e79bef880670561f69fba359ffa919bb713ba496ed3e5ae33d48d735e8b99f3559c9b112f4fbb84f9f608d1ff647739941f78c6ccb4a7c4bfbecfd658bc6ed17e8f6abfefa1dc666bcb707eb1fc467b87e9ff5bbb55ac4ffb207d90fec87ecb5001f3fc8b251d5d34746bff3b6ea776c43cba2c15ae08cc7ffbd57fda7b7551ff40fb2d69ff0b573f63edf66bff7aefd97ef1a431c12bdeb391b57f45dc8de703b12ef94d9e406a3b60ec1dbd2b9bf73df5ab8ef1bfafa0dbc4bac3b7f8f0cea5fbec569def7496d0d64bf9e97fee4d7d0eaae96ab33f55def043e935b676f032355f7a713bf63916a1cb3c8f86e65fd88f4b72e47ced952f4b9086df9fafe985add71dc4e8b640db6e376e801279d7e9b739a3fdfe4a9823a802fb1d53d46aa1a48ba785dac9bb2cd3c8c8b843a89189337296ccbd9a5562b4ff403a9ebd1ff44cf024f03a9c781f90626e3b9d63103cd355dafffe1ae2f7db7ea75ed975776be4cb5cbcff9dafb58b48ac974dd1d2f5a5d6bfe6a0ed0784e9ab59148bdb556915af929c2b571f74bff50e05a85b8f64168f48b776b52248369965a799e1a8015a8227fd24a36935d8ae3fad067c04f927a228d7a4a6d374fade293fe3bf6f17a9ceb6116d05a3d83c90e73c8bd1ec7c6d399de1beaa616f9e929d9acb3b9651e2376bf546f8dd6a16cd6112ebdcf3470aecb202ae2c13a0bf5cb292e17ca7a4c43b9261a608522cb2b12837ca34febb008cfeb5e81394551bbac568cb266105e43a4ce09919fef556f13ce921ff6cb2b9ce7f0ef15fab79d7d105e41f979b78870cd1e364f2ef43167f53cc99afe1b30659bc92906b9dffdffc8fb93f6c4b1650d14fe4167b085305966083212bd1330ea6648b2258c0454d28a5fff3d2b62f512d85959fb7ce7de3bd8cfcec26a965613ed1b6f6c47706f379ab01e807c2c53f25ba57711ed8d1cd7f686c1efed859e7b19e9bd0405ee0d7ab3cc70ce77bc5771ed7eee3ef3df1bd3f06d39fcf9664fe9dfbed143551a8fd2db05cfec22f4a7c6dd3ec6ee308f9b4a5fb43cae39dfa1df93afd9c786e8cd3e33ed4364d5c984fcb6e0bdf4dd97c0bb1ee4be6a2bd36dc5467eaa19dbafd0cf6f0befa9b6971ae2fe8017c3187bf9493acb65e885795cb8a780d8e7b21ce13d76ba65d49c9fc93b592fa3f1167f4bfaf925ac791ff43583dec707de8b89f56f8b9ac949ea2bb40f7db55fdbcab16f6fcde4b494fa30fde4bd93e6b3b8681b11c448a73f13b335e37d90de2a72ab4beb156f03a7dde49844afb50bfd21f2a53bee29f11a64bed780296ace4bc4311ef377cfdd68e3845eaab1d96ec4c594e1fff839926af736943f27a37a8df77dc275206b5fb986f7735a7980ef22ba8fe2a486796cb60f4981324aef6936b0a7e7c41f7e860b692c8e5d420fca3e91d3e43b119f18396e41fb4d95184361bda1da803f0fd4be5244cedf427f7618205e126cf9c0bb48fda578afd41bf40591fb45e118c8fc9fe302fb8ef19e9ad6eeefb7a26d846fbbbf6bf4cb31f1e7b4bf17ff26bd57ed0dfb874d63ad4fdb65fcd993fab4d5f674fb0cfc791e9aedf27dd1657db0e2eff7ed9a53be07debf8cf6f1aaf6ee1aaf9f4ed27322b677e206ed7fdfafae9de8112afa72bd1b4cf6aa7d38459f33feee5be82d559cb80172fca1aed170e57f0dac241bde76e984d8c3c406b69235fcf79aff37fe5dd417ff3db09e898cf81f62d70fcddef675ddb98e2d593f5d95731e0a0c3aefcbb52ca01e5f8e11487dc4e85cf9c21e64df2fcba6115f8f2a2f1debab8b7def390e44f0992fbab7a8e996200be55eba0293d208fce106ebd8585fd12762dfff478c6f1a4d72237d5d43dd38eb7df397ca2f489f6305c5c0a9cafc91fc2cdb3828cf768d031b87da974aea07fcd2d3f112dfef034c7d609c87a532279e8973e8eb3da388acc675647a68c7f67aa5bf145c3b1dcafd5af5dc29f48233a4efa13de4aafd8d3bb43ff6351f58e9af5113af5b883eaddab3d43813e549ced1f7c67b3de5195952f1af597f5eb207e89ef3cc63feee1a5a8c1d62106a8f79894373d0bf3eebf19e91e35e47a2dfadaaf31ad8eb6e049cfa9dac464f9e02b02ba43303dfb6d957e3b36aff3c8c17e07a896ff99a2bb3d28f0f6a238daffa46f07a0bd5f69a96a1671be192cc4f6d3f5ad6f7d15979ad8d6c1785529ffd1adb08fae4d03da1d84754870f13ec9509b5654921f7459edf68dfc7cfc8bc827f0c3ad0baf06fa7f868a2038b953fbc2556378f1c1778eee8f353e49dce41ef0496dc87715e26fe7cf7bec0fecea2b7a3bb5979d32c7196d05379e5b5ccc83c129f107af5230fa5cb6b10e22269404fcdfee487d87317da973b7b267623d677896f182dfec4efea9c268b7abf6b66b60f91e3a2fcaef4bb663d71afa2ff24f13b1ca863025f0175acfadb57fde5e7dcd768b507f6519ebfb65fb6f621b1f3a0473ed5bb6aef70ad2736b3d389fea9be2ba2f111a2cfe5feec3fdfbac93feb490f3ea9ded357f49e173dba454fedbabeb6eb6e27f4b32cf2bb07ec454c6d2594a98dd874798d2beaeb0ef88f893fcd63a2a3ad641df8c353e86fb663ab930e4d7b1b82af3931418f937de38739d1fbac36704cedac01da04f00ef2f7a11996a137db52ae8d6de02570dff4a57320b60359aba4586e5f591feb47cf6a76f3a0181e427fb21d4bcf9a2c2ea9f62ca863a4f1b4bf592c4db271400e8cfaeead26f772669c61d4173d8f0bf2fd9de7c1cbecf25a67e788feade0d70ccd611617adfc7d9148e70af87621ce102076da207e516c76d215d7f9cb343633e29bee02afb519df1f2fd85da1b914b655cd9a7c394e693ee5f9217e3c9e0da897cb1267ba0bfda9f0afbc7f34e66868da648ecd70111f1817bc4fb138383f9df64fdd47b292829ce16143f6199ecff47c91f75cfe6c5cd2dc955f8e859f0b5e338275f1f04c8827d03edb73a287ac4cd6375fe842d0756aafe5c2be854b112bb81b8790ae516204fe1465ecf2ba5fa1fda6ea5133bfd19ec2939577cc2bf185b21a97c0df6b7a3bf7a8cec65a683ecf81d53dc76bf1df6f8e7d4b1c053bfdedfec98a6c87f99aa3ed88bce255790e358f68432435ba84f6f0af8de9a97a44ef8b0c9ccfb8e6d2fbeed4f529b6caa83a6eeec3487d12e41e4cf2980fd80760be073d0bb931a1776a7848605f04c53557fd22e5995aae2ccdb47db30b643dbeaecd1fef99dd847932889d0dc56f99ac870f8397899227529f4fee3fe6effe447faf825b94eda29f0b457eff0afd8dc6032bcec7489a136adf52dbf8c264c73a7296c09755d3a78271fea04fb1e84ae73bc35e02bfb35e6f55fe78feec75e7385974fe3350c62bcb826775de72eacbd9e06fcaffd67c4fc03c7c1d1795e518f8bdbc3704f8e7f3c77636954bd25eb762517f5fd91f777322d235d2fdfdf91938c7bc04b108dabd89d306ec7048ec8672c3792b06bdafe39ea266b07d03ce066a63f3b816f62705ce87a839df85444e3bb42f86d34923cf25f76ee252d10fa7c027b6893b0d7c1963d5c8de7f3bc702739a0e1cda6fc562359eb931e8eb728aae8f88cda15fc2b8c43cda7fdffab65f02b677e2b85968417f7dcc7588e7ec13c85b079a4c9f1ae4fb83c6c3581c8bdb5dd5b81d39e3ee366a0e5b831ef6a3e7f2dab1cbc033d277037fff58f0deff6867816edbfcbfdc67389e28e7438d9eaaae3ff652177e29f400ee4ff381d3394ebcff9affc0ecbe1fccee1bf48d03b5b520ff3f6c127b6c40ecd96db81de6a115539ec33ff511aa7631fd461acfa1df06396321d3beed1b6c61dce9cf3743b2fb63a98e48e4c5704fd7dab0ccc7bb0596ac4bbbb795d32e1327cba262c6d686c9002a5733ba1e177d0dd06e2e2ff7e6bf3a3ef7ebf18918539eca7a75d09fee882dbb827aefd65773fa4d5fa073b9eb976c457ee14fe64c1a47753eeaed39d9a6df5119f33dbbac1a63a6f2aad3feb9e89e12ef7a207a7d62757e0c1c94697aec99d68eb067d4f6a01131ed466dcc5b1edbe0c5680f9c5623722ee9cfb27319bcec52597f8e205fd4a0f3b661fc69c5c0ca44ec58eddbb2e7f15c07725a66b8847a6bfedda3925dc37ac688b14adcfd44ff3bb573fd0dfb72ccc7f1750e58dea34a1cb23f3f133b87d88535368e1119644fe5868ad9e0fed039da8639bcc3a13803af83793b0fec3c6abfc8b1b7cedfa34deb9c38cb1f80fd409e9763e8cf77913983f85fe4b4cfb109f809b0c3881e66b135cfec2e23036a5fb6a13f4cfd45b64bfaf3cbebfaf99c3493e6b8703f23af775c215f2bd82491d9ca22ab758e8bf81c7ad363b030cae9e7e03c2d9f2ee3727a0bbdc931c1ba20dc0f7f142b9cfdab188dc06c9f92c22d259dfe4dbdc8d786cc1fff369e6f23b695d7b844d407e532642bdb9de96dfc39a8ca0c4da7286749f4f29c2e96ad0f77634fdce5f2b19ea83c230799baf2e7ad4a7ce7a5779ade36cde9e7e636799b18af2f4139b9f51a5373f96b72eb3c69313043ec95c16e789b9c26eb1a19d8a89581cabdac1f7f6d8f57c8d9887324301f12460ef0ee369c576ecfe3bd39e6afb41c83f46ca27759cf2d223b47eab3fe235d7bd4def343fc6d93beae3b17098b76a7079fb4fe9f559fc885fe72777d99655ce4472d3ef393c597ea6233cc5fd7ee797bf71aebc8bcd4deb36ce6c7a0681f64bf67b4eebab109bc783732b6b070cb90d8dac055dc863c565ce4e7c49fa401dba305f8e5b4dff15cc583f45add37b24e2f9d745ce2bcd5e0d53621f1259ab33428eccda00ff88b1cb860fc2c0b1df773e535b2c8c29e525111732c81f2aefe305ff8532bf0e603f4b93b673f3f1c470de3f26e1f2ee3b73c1b7b61322a67e7d51dfc49e8b806e4861df21ee0c9f9d63b575e2b8b0143d939fb9fddb577eb5cfdc56133366be656f0fd7d2656f71c9079fbdeb7fdc46b3bed81d57e9f38ed686219cd9af75889971f12abb18fd64227c4855b84fe3027f215389fc9efc039dd23df7d0921cfd8fa7c5f74c9b94de3a27d4e9c8e9a7f27f6b64b6c9129707983ae23f687e90ea3ed4c8c81c9472677fb32760fd63c035b0265dcff193d2138b27f574fa8dff20033614406bbf68e5e289fcafbf7649c23e36d99bffa8db0fb66bb7655bebbf9f86d524eabfa81ddbf5b781067dd27fd4d650ce26f7945af31acefc88ac9f8b7d5774f4e77ec61f93be81a706c30d4090136cc233e28cf97b7075642e77db095e39642c6e3b54a3f586a77c68d692bf286e788e73737b576f0dbc67eadbd9f6168eaefa7bdc330b6f373d135defd2ef6bca5184e7a967f866b62b7137f95c7b2b7440755af4bf76057e3ef728c16f628f6f5e5633a93bd17af37c41edfb1718ccace7658123dd5c5bf7f8afe7d77e7d9ea91796632e8e13c634d04b1fff9f8894efca58c59f8136cdc92dee37329fb3afbd8603217f5a2245789fd7093d640c38076762b49067ff421cf3e8c8df667e2d887f1769ec7cd19b73d46ac06f7e5b922cf388e620bbd05f3d1cb00fc03696cff19bc0cc8f73e89e7ecc09690748f3edef467d97d9d2d9fe479da7fc78660674df335ca95d73886dedc167e6a8d2dd1acbbee2e661cfd768bf89cf606f109c8951b03cfe052d103718136cab239cfe2ed8ceada6b1c978773c5bfc1d800acffc0c94126420cd0e158b802fd7418af8ed9bbc4456e12dfad12cb6b4e8d98f8634d436030f15d42973acf29fcbb3e1e46af4baaf29ccff18c3ffb1ebfaeb4afd97bab799a3e1d6b43ec3dfe5cbed73a87fab5959e6b1dd2c902fa355e22c7fe0c175919ba700fedcf7a498765bc6767f775cde7e2eb383ee094c9b30c9a5b1cdcdb23d900f46f7240aee2dc087decdd3670a6c4f7ce8226b19b95b87619baca7ec23d635f6fe35b25ae4d6dd0614bde17941f10f421d97b73cc1992716d437f762f8e79087c62cf01dfa03256faaecf15eca7a941642791dd015b2bb3f3ed7c235bcb0f69ef51ac263e0b3943f7d1767a012c741d5ed3a4bab1a64680e57ab09f3af6e1889bb3342adaa7b1afce6b6066c4d6f94c1ceea756f43099bfc87337732966c2be418b4189180dff16cedf21b092ac4f2f9dfff1c200fec1b8707d79ce992ce67bbf80fdd24d788c0871675457e9b9ae2ff730ccbdd7c8c39e5b1fa7a1b1a2a839a8c38ad17c55bb94fda8c0b46fd88f9ac6f1eb7258da357f82bfbf8f2ffbf7f0e88147e5a1c079b0e702662c2ebb123ec24d69ae0bfa52cb78edf11a6d68194ba160cf587f18333756d8bb3f078cf93dec1962ce1896623f96e6219473b7db491a79766be0b84f2b867957f229dd3cf08710fb7a5f74c91e2132769f38d716b71bf05cb21a94afb0e2c7106dff9fe1bafb216a7372c0c04faca7dbf8b3fb2f61c5f99a80cc60df3f70da26b1fbab392db1ef3e16dd485a8b7f2b2725eb4c81c1937466c0c62ce1ca58dd5258b4cb85d75a603f8487713359463991f9cc793930f7037d8c4ec142609595df21ce30a0bfd3dc0d95b3f3a27d56ea4f16ad4fa889c7dae4bfa5d8ff39dee4a711e236c818b4ba788eb3a5d80191d7821888d92632e91099f18eec65ee1bd5e450de9cf636c6daac0360e5cb0bc8f668ddd906659c8ed4fd4cebe921c77b8a9ab3346cba44ce135b330fadcd1d6e5af63d6c4f5de4b35a832761d7893c0393633f4b8e2d66f1b81f923cdd315cf318397a8cb9544329bf13e70ee4ded736301d3f93e1927cec87fefca6ea788e79441947f3227f562bf800b38a78a8cab9a6bfb7595e86daa42cdf4ccef435f1dcf2fdfbb8ce6f7ddf839803dc3fb20fd7b1d529c756e756933fbbd5ef1fb033583e45aba995b0f6ec5b6b7244f45eceb5f3aad5028b9a88677a6d1ef1df2c239db8b575110fed00e0b5a9c1a2cc28bfaf2bfcd25a1b40bb4eaec9e336c25b33a9b70510cf728e37445fff3996e5217ece7b12f52cfd648f5cf4607702f6043178dd4cadfb415d2feab1923c2ae8fba87c0eb69b34deba27aa2351efa3fd91475bf7c8b162c2be25679af809722dd8395c2bef25fabfc1f0edb27df1a51da161d8a14eac89b884f8c6f2d00fec883fd1edeb27e3ffcbba5dc2311e03bf7b21cfe3b25ee076887d0618e0b877ccdffde9d775ca34c72ffa19ed00f74d311d3f18dfc323bc07c5351b134bc67974b6b1e3aec9fe8ccbf887fe0ce96f07191bcd31e0fd0a065ce12a00dcc456e3fc749e351ce1f329f092bc16030eb56e8875c7b15f142c0a8ec5f84dfd9fdfc58fc7bf89c3883cfbe252d9a0629f933adcf35f1c3f22b0fa97d01bae23c7bdb17ac08195b1bd0e785ae4b019609eba681bb4362d83dca537dbd7eba24616db687fc5a55caf24613655dfb50cfd692342ceb1bf18afbc2c63585c52d4d22d655b85e34f3126cc6c9de1cfc47c92ed1d8517ec9e0c92e2c6753a66c77293d4b654bf4bb53b0f428eb0d87d0dcf04cb594abde722afbd49bc6b3e2edca7d86997b48e52dedf35b872ca81ecbbc7fbfa4e5ca3f8cef0b7e47e5dfc32517396de3c8fb6f33daddfd673961b22ef57febca5e42c45aee918f7b18f17caac46f6eee4c7c433781c5ab59b9ed28527ff379cad3cf2bba0bb628621f33707a6b3e45a3c7a3d939f79f8859d29f98a57499fd4ea1e258fe5d906ebb35aad8932387611e53fb5c320c7c8f6cf328d9aa19c9bfa461d51b687f566fbee2bbc4301b89d686a5dd2c9fa92be5a97749a577d9e572d1f05dcddf631a9ca48a956c9ae8d611d0381f3a9fa3156c6f052c570cd6c6f1eb7da4b3e0dda7394373bf10c093b24f6db98d97dcd991c5bfd3d9bd4b39f6afc1894d3e42c2cba7bc051620d2197fb21d6446c13a7237ab038ed3c369fb609d4e761cd6de00fb709ad3ffc760cbddcb7795e07fd14961be53c32813f14ebafe65169fe09bf81e59f34dccd117adbd7c7dfd711f1973dfba4ec41076bb202ec1dc3ecd494f696a1b6ef00f86222625fc27b8729d7ffacde8d6205997f54e117a1f247ae9d65f9349daf88e7b1e49cda6399caf64b8d3cc5be62f76522fe5d91a31463cf7406cd37deab75651c1679bcaef11f683f68863fc779c5ba1f622fb01e28dfe4e621bec016e28ac41f22b6045d877f8b3343e6b359792dda7b8bf5e9b9c7abf0942ed9fddab3e9b710dbe01cf543da7f513ecbf314fc0be41e4863f3b88ffb5dc07f85eb6e5679273b3f108b9c1a71f94463039b34f05ab4cf632e8d4de5ed10f5b84bb22665081891611e34dd32367333f4aeadf1bafb939e3599afe3145ae2bcbefbdd1c7cbd82cafbed701f3af33c5a77d7eff45bd8da22065f9a23698ec9791f38f62576ae7be081c19e9887d00b0de42b417ed8f1bafb9678c31bd98352dd32affb479f66d88c01f7a8f885ac273cfa6f25c8b84b5cb8e6ca6b37e252e253f8eff27f7c15d36dfc7b7edfff69fe8fafb9a420ff23629dc8d541b9a5185707e59602dfed65967eb8f5fe147d2e39c3a5eefb014f957d243ec527e30aa135ac580bbce8b67dba97a93d2fdb20d8af518a75529d54b143382716be8bf2945cd2a109fed76dd0370ee8a7a18f46fc1fac6b5ea61fae51e125c1738b3d3bab32f80b6e92c5258d9bc34f56fbc96c195917c8dfc4f6c3d8eadee2623a94b1cb2c8f74cfce0759fda6c4c5de12c7fe5cd5d46ffa8da91178d35f8a1ea2f2e30de594c7782aaa712cd69f01c7ff288ef63086568d9f4de11b969ca3ac367e47c7075c5d7f8ca3fc4efe4e7cd72df0c27c6ebab53e4f6cda45b84cf2c4aad7cbdfc249d07d1e581286af3f6dc4606b32bea84623eacff7e4191207ceb7f3d9ff861c939ec17961eae5d7ac1af79272e1d2d9a0639072fc0ed71569d5463d3a225f68a49e396dc4cdf939f2f21fa13f6435542a3eadec7e26fed488ccc6fe5dd1c72ceef0f03b23e2f305e6913cbb2467272ebb465cd8440f02c694db34fc793416eb64f98acb1177c3725bd883759ec75be2c370395f8b41c13dbf94e3126cde89ac290383e6e62df91bdd925c873240c5e2493c496dc1e7b3acc3cf29982f717633f17e2587362d83466d1e0dce0f8ea5fbfc617576389f07de8f7a89ffad73f6ca98382213bd2a56af567ed4cf15adf195f6dd41b977714983a67b4b9cf671e5eff3784daed5c625ea80b166ae86473bf413213f1d656fc63227eccf525daf11f6bbec87fe4c1e3fcc23d5091e8b418d90a7e8d7c08ab7a3c525bdb33740ce8fa47e1c90db937d70993b89f3ddb7f2a4216302157fb8d223242adca6947711e354fa1448bcb64ead0ed1bff93090c651c3d98eebe94f875817fe0d0c14d5b92a6ea4762c75fa87d9b6b8575c1c978a27011e492bf1c2e29e1f075ca0cb61232cc25cd581c8c7e9027e73de65356155fd5b779df29c73dccf1fdd2ffd5dbe0f6a33907f7629db86154eca9aeb94e7dc6652bca24657ee6343caf194957bc1bfbacf53b1d17834312ef6e6e4bf1e8d5be5337099ada03d8bad4bedfd6c5db57b1ee28794bfff0b751fb3c8b1f7d1e6e1776ad7a8f3fbd5fe5af9d325f137435a672dbf5fd8387598542ebbe4f931a206fac86f12375fa5864ebba636064ce40ad48bd807229b897f4c74af643fc9f621c335617c10f2a9ad8dec0bb3785becb825b1ab2296d7a21cb9545f335f9ce8fa4fe837dc1f66ac4f8efcbcd06b654171057ca0c4718ab94d67ba8f8b692372ec92da432adf00c429886f8e32a8126fee0ff749611b2c6e21d941126f168f412c29f7f02d71f213cfcb54f27a35cf10f61b3ca312a7a9b105257c2491d9d48e23ba497003c87143ea4ffdafd885740de1b73b3621fa4d2c36caece807795ac53ec86b72b3b09692ce1731919cc7746adf237c7aaf897adb5f7497b5fb4eac137b1e8d47cd77a197977c1ff1b8e9f49c60bd27593783d9baf57153bc57e585567d5a9aff927cd48b32d7dfb043d1b736877fcb7603f3af144c93e9b6d43a416163224f2193499966e7c9fd33e8fbc9dcbd18cca63b85e45dd2f3a45e416027539b3f0f659ec8efda2ed4f622f692b01d690c47addba03da9141b4a993f29a7a1da8b649e726e6fffb97df8b253f2603c3fcaeb38a6e7c86b507e9e8736a2c66f9adf6666fb1801cf60859f08f43a5917aea3178aadaff64121d76fdd222463b06cd4ff6bc80549fafbf1fda803a1b681f21c0d00d33cf0f8b3f1798d792b76dc0db53b76442eb9528d87cffb977e65ffe27e62effae85f52664f403f613126cdaf613e10ea6279bdf51eb1034bf73bc4b5f77af3d15e90d2d82af6d14e3aa335bca1ca1e203eede57d5933d6bb7e00e673f81e81b9af7c97b6ef30f7f3faf0dbd14686e7a15f25fba59083faee986ad7056db197c86c1c89dcfcb9a0f9e4b7877e11dafeeedd3d0535226c6f3d58af876b70afa796e819ab7edfd2b9662bafc5d75bdee36c6fcaf6bc222f177a9f7ae57b89eea8fa81d29e163e4026aed57dfbea732bf6e26fef35901ba2d64e7a373b9b8e16d7fdeed8800b027b16b8b573faa867646d4c41929dc8536193efa8f471516b1bd97991d7e7f93cb0d5dc13b313941c11d8c97886e392e840f7061c534e0ef93dccfd02673d8be71c565e639ff427148b073a1af4ca783bcdd5b8cd459e2f29d6436d0e628b94997496315623cec7b7625da2be11f5773434590fab24a9e87ba1876bfd7bdd16192bb2e6f7e20e6053d5f1a899aee13af6f60196264fec79162abe32f94dc6bdd7f9eafa35aa2fc8ce0ff8cef5be20f30d1837a45c8bceb90407cdf97949fd00e40d436c965a97aed48cb1fcd632f062a287b79ec9fd17f6ce6478fbb77a57807d4e7b4574da03a99e47ad1de07eabd65f82dcc37da00bfcd624727c59cf01a0f468c0d83ae225f283122b067f468c459b23f0555ca7fdc6eace18c7e1b23f3c270ed47cbf493580355c04d35de84d7f297e2acc1fe07d955cb53a5f59161bed66944bfd1b247e73f6fe1acef13be3c84f440f530c12df3701605c5ab7a43f6c04cdf959ab2b646bf09238ed92ed2fe42e724f4143ecb97131cd22e7b2e3faa05a73f5b2725cf0a388fc97f80af671d9cdaa79fc0bc745c4e545c562335e726f06586ab2be0c4376ffbb0073768ec87ec07aa96ce07423af21ed3db7910416c5556fdd43e4e8358abfc59f77197fa677f8f3ae595424153f7eb415583acce5509b42da47f5b58dc373645ef3c053395203b0655cd44912f7d10ab9612f10a312dcba877bd89e7b396cd96f9d17edf388fb68c00767ac9cfc362e7a44b65c598ef8c355316ad5585906b908785e853799f293a9f8e17dacdb220f6b31a89df8f538fe1a58c913e4ae0143bcd9beae3b97ba5a23e0b3fbfa79cc163931bcd1086b39f6557c1eac5b6d7ca0e6b9b55c0fc48f52758bb88ed857aa4e137f1bbc091943f4612d578162ffb35c00ef1381b2baa21b357e01b493f8f53fc97bc99953fa5e707e3ff0176ade077209fcd6fbbd17e83b2ee9d0847e5ae4599fe4be61b9c13a5a2a4b29cf4e997853236a0ef45e589c7f6206f2a48673c20a8a410feea5fc9c36d183449ee038ada06073794f7ee2b337c063c8d6017ecb692dc8ed4b6c5ce53c683d1dce713fbf1ff76eb43fa366b7f58f73f535723f325b6608312f096f0832ad97c6e0fbc8b23d3c04fedc08bd16e8dbefe0dce87b2a35322bd60f49e37dabe977256abf2b7ae84feadb26ff9b3c6b0fea4b149e355dee3fe61a95e3aabdf01c95a952979900375e0b7aaed33ea67fb35a0ffa5c2732b14e2271da7086c605d9a79d9bcefbc9f02f23a95f11e61879bde87dacd14bef20f744d27404f52b9e767abf3ee0ffa9f8b2e27ddfeca574903155b5f515fdf959f7f375be36215f95332afaeef15cabe0cbf90ecf89f6de2a6616fbe7ddc5fb600f28d56fd1fb23d5f94d2b7f2a6aed9620df6ae503c574dd802b4bd27511e8adaeb47eadeff397a839834ce0c5686e467a0f9c2dbaf76ab028f21953721b3a8f04f1ab796c1a3805becd492fe3d9a4b156b1d2d27aede43eaad5d8b2da03bea6df961693957b3b094c13ab15d57af02a7e7fa5f7d642edbdf545bda9368e3fefe75537be91b42e9ccbd5eafccfe065023600e76c52b0228c4f58ce1fe7222ef4f29c8ef8bc19473d1e22633e1e8c15ec35ac379bc1586acecd4ee0540f177f21708a71e37025ff4defd7e2c38fd6e9924e4a32a7120e056ace95ef979f25f1e576ae35589cb3645328b16bee0fe275dfef7bc6fb7bb1bc97bc37a7d1aaa61f18c416f9f59538b674b6eee4d53826499987af6286a2de5ab6b9b4dece77ecb5aa0ca8e1b4946a68ee73ab886b2a58d0b7fe7df9fed6573118bceeb52e1e256ac8eed87a8d4b82bc2a2813bdfcb4f21a8d48d835e05fd35af474bcee0ee5ffc67a09f718f7e7ad01b199a9aff18ee3fbbb5a4b90df04e788d6d3f2dfeb49097d02aa3ae61b7cf74c4f2e9067a6d67f2ff735365b631f154a7ddd633b0deabdf2d3c83e18d4f77d1a5b1db3868b40e73f3caebca79dd7a8f16ba53ce49d9ad17db466b560555d3562f572d05351e3d1b6b81cfd0fc5ffd9effd7919c25e61cfbcc8358b0c273849c4bd551cdd17b5982befe9bf5083f9cf7b03e1dfae0f6a38afb5589c7a4e6a6e2f1d575eabbe3785637fc26ffd491a4835b001cae5cf9545fc475e63c4f801a0e744087ddc45cf02624f0c1cbaf7a96f159aee89d54552dfa3c4338058daf7057d0fe32e92e35c7896b3a820ef647de7a4b905d920eaee691c0f627aa23e6f26711e6dfe247e678c3f3b77e2778d2c71b27fc24df25fe02450e647e324e09c26dfee975e95d7bf51c722f5448fd66a4ff4e84e4f74ba57adf785e87ffe751fb8a7dabe0eca7beff750f8dd3e6535e383f77ce3fdd5ba5afa2c21df1ef105fd2b75b6158e7ea947c3259dacff2db9dab2ded5da973232dbf5751a45fb5c5ba3d14b72c0052247e43ef25ca2bf8fb1d4e386f56dc1b84e631f39d77d6cba9f91d9dae01e26722ecb9202fae164711ff815f14cbb92ccb1ddd3ca4fd3d0ef9e03334d472fbd7451d8a7c4031ed2ebeb5b7c19bc742eaf9ff8bf81ed2e67e51fc99372fc39bb234fe6729dc8f7389195f9f992a368037939b5568adeabc4ec21671299647dafe7b0cc3ec645eb9c94e99ef86ec041ee77f8bea7f19353d48c77a36a9c7d129909ab79671cc310678bbcfc1039f92df4a6e7a898dfb067d2fc1c9907ca834e7bb67b5067497b0384e7c0b4755f9ae2b6da4d9e93a2feb0e0aae07203f6e37843e67a7922f78c685dd7e37e80ad7372abdae34ba2c3eaeaba906368b6d26abbc2e29a25f6dd384b1139b6c1e22cdfe62472a6e7c8ef9e290e9671725e5688799379e352ce53e2e43cb6f1af7329d0713dc255f2b1532e5956bb741f1b7b388dd74f9cd3f28373bd1e93916fa45eb34b74f1cd67785911ff4f6362fb833c794e6358af7fc4cbf3bd38695fce9722278ae8d97e498726f2e34cd6b1122bd463a0384ec937b50f8cc3ee735863a36bf1cf6a0c12f72cec09c4aef07d782f7e7421be4e5c56ed79b96649f09075fffa5870ae3ad8f74a3d25ae01c62917d48ebd83d3806fbf77d68c61ebae8dec76f78179b4d45a8a2cbb93abd8051043fd831ac12dbc2f454eb0ec9cf8b3346eba17d08716efcfb659f9e13eecbb594465bebc37995f1316791e6fff85dac1efd4fd35c5d9f958b075fedf3a37baeff878bf5463e2e2fad97653b35f2f8afce731f33e910ff5fd99568e0d7df1f567714cd277b145b0ff0e357ee59d3a0dd4117a9d06eef53bb5adf89e69aec6e1a759dc9ccfc898eff2e6daf0fd75b19a6f70a37490e38a9ebfc735b177b8affaff8fd9dbf57d08957e62d5dc81e4235f887d23bdabd6e792be51e70502dc83a6076b6b51993cac39375aff3315eb2ffaa5768e1319cfafc4fe519f8a388dda1f48f4123ab605363dd9adbc6b3eb0d25f2393e5182e3cd65cc943e099243a12d7a9c17ba6aab980be846be6e7498edbe2d99671e018ff95e7407086c11c59b575ab6fa13f9339c280637509d767304685ef90f3826cea31a092cd497178bf21478eba1fc562d65ff301e475f5905c06d4e6fac5776af93dd15b57bf671f53fce79fd6d2254e7b1cd6d51936da46641cf3f73a7ece6febe8699e54f05bffa4265fe194243ec23edc6e6ae2363416dc97fa26c0bc521984ffe67eac2c934016996e9dedfbb89f4eed3d7f5e974fc74af3127fca555dabf7dfb4fa6a76c6f859556bc0ef639b4612575f9d8ed7f331783ef9797878cef5da1bced56f1957391f2a726a6ccd798c46ae7f029e60e95cf17cda78d1519f47e490837552f2f855599b9d427f0a18c801c74e758ae1baf33d198cb549d84bcd745b2394fb3ca7a6d47b5531f626af29c815ae00a83ffcf9067d853efc26e2bffcc6f316eb18f09d9853d5b158dde70facdb62f7cb18dfad96d7bcb3be3427a78e89ad5bf673a1ac415dff74a9ce00ebabe2e63c0fede3afd0cf953ce3a35a31e05a56f6af5cbf2063d861fdf675355f837f8f0be04e9d45aedc83791851c3a1e861c85f437d12eb990267c563fbcc3aa413d7d893eff61a9097ffeb63b1f9a20646d5592336d77731fe4fd5b341ff4dfbc7dfe95f4abffdeb1826b7bf55bc1cc3a33dd5e835fe37d98e873c1fc672ea7435f0762dc8daab75ddaea1e1cc759d780bfdf9326a304ee8ba38512f8d9bdd3c30f32c72f21f9023817a55c17528f023732a4ba63b0973c76c5162b7183c67f7cf3037c5839adf2cee770fef8b6e8636e52cc56734f2c4018cfab99e734b797eadfd2cd9e6f738fbc9b7c2fc8f009f53e36bf6a779620b6ce6c8116b46ef39a8b8890bc655faf33c82783a5cc37a857da3ef2d8fc9a83e24c5092f0bfb44f9afee71122e02afb5fd0e9f39cb4d431c96c6d2a1c6c869df56d01b7f09f5476393f874ad3c346de8db3d428eb92db191631338c98bb8681f19ee3e865e55644fb917583fabbb4efc19e51fce4f81796d840eb9ef92064427399d13eed7794ee3fbe9f8cda6f97cac33813a01b2ae5e82fd8b19cf1ec4dd8706ad1da09c04e19ee7049d76037aaeacbb69887d8cce318e318fe1bd8087cfb17f7f7e8318afa53c8771d2ee132bb9c17e40fb4ffa4ee48397c662ac1cf7245f3bd1eccfd17aff1a35e7f9eb7af7f7a0b7cf92c27e0b9ac37ddc071ffa1039ed26cbc32d96ae3d5f18cde9db0ce3eec51cf041181f67b52d39c79086c5f50c3c03457c8ca14fb0c441cfcff934a335279bc49be6b087fd0c7a2641ce90fa3fffadf8b04bc657e5da95721cc71bf4d97a312e3c9e4b7ba0097cee308b8aa48633557a8e03bdf5d15747ce09161b2ff19c547d7e761628cf541ebf1857bfc6e65e792d72e668fe9b9c91794ece29723e76d7f57d27049fb09e6f8de9d956cf237fc62df49650e310e5f4bb2de2dbe0bf9745be5df5e75fe57ee837a74605cb6a1f2e63ab236a25343c091ddb6efc36abc49dbd5be70076b0d5394ed69774fc364deebc975cd3a879377fefd8ea18f7de3db12ee9e4b37318bc54fb33c3185e9687c14b0fbe63ea2ab8633e4fd0fbcd320c186b354f1591778cdf7ae49a12ae69dc7b4eef3078991d062f9d9ab190bf91ffd9f7e6e1529d8363a2c5e9e9b5503f8d72dba5efb6be889de37cd5617be1fefb3145fcbbe6cbebf8c37b71001ef39b41ad851443f8b39eed426761ce1ee7c5eba45173803149f85e17fb1e399daadeff86cf1f14ed73e4b819fac9d05f9ff65132d225da51c5fba22bb8f58b98f1b596701dca79e06efda7f60a3bff5fdb2dda7e70a4f15ad55c8d1c0ba732f48072f14275aecca7017e12b1a52f80d5ea437d3cd1c9f4b79ed22716f15c550cf888eac2b145742be02a8dd0efe89854f237e0688067bf18f5be8fa81b3f8fcbae1d6da78d98d572420feb27e49bb78c0bb5032e447f85fed00cbdd949ae3fc61e9a5d69cf65a8672ce157a09f45e607fd53794cf7c74f7495ec43e2f7432dc48be04a637575321615f412f976a7ed402f6067b923bf5538d6f01bf298f608045e4ee21fabb8ddffe0fa916fea3ce33a77fe3378e911bf8dc83ce29369dfef5ea477e9f872dc63f5eb49ec5b79ef51bfcbf83ac6a9dab3521fcc6ff5d486bc5ae264673297bce71d7024d947729e88ff00bdd519ffadd33d44e63c8bcd2ce535cafd89861d40fb7666ba7be8fd0dd8aef414c07f739f0e389c92c29d0618bb013c28f0f2bffc93bc8a2ad3b0debfa2d725ff6c7e0efde969c838919de939c47c88dcebefdb724fb275e89ef9ff9bad8532a0ca8dbf8f0a22ef683faee6200d1d57b2bb86ad9a31c97cf711c86917b9b4fd45f78ddaf62da94f0ff76118e736d6a45df3f00e5e8ee3fb2a581caa6321f6cc38b4268fe29fd45f6367f6027387fc09ee656ce1b8701fccb4be60f76a38647cbeb25f77ea1e4f41ce303c4fbc9ded07d6733aa2b2e5a37f49278bcd7e6c752e2ae79394fbe9317e198ed9afe9552aea22b41a52f031147d0bb1279e83fa31b00ebf581c927145c5d0ff5e95e9a39b81b2f145e190e0b28cbdebeb3e78d29abcd560efb96f7f3797eb448e6d248e7baa627bdb65e8b8e56c5b9be740fc3df4eb196af8051c13c461eedb6e795ce14fd46db25afec88aeeaee5fba3f21a787439fe10e417c700c725d4a294589f999f88fc0d4ca29be07cb1be4aebf705f377988fd93d87f43dd55e68a217dfca7b2236e067645e0fc44fa5b574bb78bb64786409cff8a4e1a2a9bcec77f3b808cf71d1801a33e024c1fe6a67b08bfaf35de00386fa805834887fe5f13614750c4d2223f253e0d1efb5f8b7f1ef206b4bfe1e7a342745740dca3631469ff500f85fc3316bb50e32ee707a8e9c6b4e73ddf7f0cccf526e4c5d07fc367d6d1ef5c65178f8471207c887f46faf61ec55ecb37bfbe91e3fc685e819e333fe7b4bef6d47b91c716dd3605b9f87bf2bcb11bb7223b2013074b4bfe237b05f8dd884585a7b608bfad8f7b2b3859e66ebf807efe5555ed201ebf9057dbdd2f483d5b754ef5907fef014fa9bed58ba67720b1edd53fb9ec9adf30fde336358e6d4d77b026cc91ccfadf74546bffd42fca8877ddbe07d9f87f4c3ad62d924ce4eb0f5bcc6611b147619156e8b7ccbe4162663ab1b0d89cc2d5af9fb223e0c5e2686bfb8a45e29be79fa92d1ebb00fdcd8eadc267643f7cb618d67db8de839671fd87cf0de7535fc11528f10e0378dbc5299bbdbd43610b7573b76794c781defbbf7327b62fb9af3c0f4d91c0b3d25e2d06c9ee573fca4f4368b35def1c06c1f22c7a5b178d187b696e7c13e26359c0bb29d21cb35bd0729f29cab75a1942350d751992243c6b24cf7a711cc93fc4d50f3a8e47b15f9fa73d18d7c8ee1a27c5ee8e38ab1af3be55d3f567d17d45bcaf2c5bbd949658cb9a1f8b98a3c7a3152cfd49e79375f056bfc1374cb66d8aaaead6a6f28632dc1763b0c58cfafadb17f886d667b4bc79b000761238b6b6d07caf5ecd9979a5e74bf8d775ba8fd026bed23e99a6a5da3675f1ef47aca62ab6253bdd1737fbfde9de8f7deb055f93ed73d05fe231c2afe5dc5dfd01e5d4ba967442d56af7add3fecdd27c7f11e714c73fef17fde2b83d9b6b98a85a5f940ac49fe8d7e690c43d3137871555e51df5afdedb7ebaabc4683db34e4df0c5bee351a6d5576fe866d518f43441b713be13846f0afd1de67dc24b21c49ebe388bcceb43e86c8ed6f395f7ba78f05f7351ec95c6207e3daeafa439e0b8111546289d2fc89ded5e49ceab22abcd3c3fc31ffaadc8fb452df5d1bffd47936eaae97f085a2c7a818d349c2f8b47f2e3ad7c1cbb3bc2f888e4a5fd7b22fb2513942651e4ce5df1c2b28ee956280235d8f3dd0794246e492de6edd8b1d301ea66faf972ce34695bab28d8e9792fbc372595dd56777fbff1f06eab5b2be67f971988395d723ef90f456a6ed65d956aae967abed0569ddf9de117169a3ca258d7d7a3fa1179b3fdc433d86a87bcd883d4db1b7db57099f457ea7cfdfbeae79fcabad7007e475fc1fdcee6673ac7d63b547571d36ae4ee7d4dc2bcb0216ebfd9a7746b363fea03727b5d373110f85bec99334c0faa72c2edc32c05c0c8dd92f654e40b89f7d0395b9bc661939db8779ec5c33ecab27d64ded55c0e2cdee3e5e773fa3e690ccfd25325b1b89834ae596ff462cf61b35c330feaf709e7c2dfdc11d3e7c8a175ba8f3f16d7d23e6ec21ae93f954a2fe54ac91d63f5af623f4da561e4f64fe37c65c32de33355eb3bdc8f190ecdee378a170c5c3b77826d555b621dee71ee93d5932deca3cdd151c375eff359787623feabc6b741ebab139cda3627e0fe7c5bf71e64f3f430ff7572d07800fb5adeb77cc919ed959a367813f47ed5756e53d0bd4d87b1615983fa17b1a7a68693133385fd142c189008f07b36d684eae116da797d09b429d53685d52e08a92fa73c5c5f21bf1c3a7f40dfbd03657fe3467bd686391a3cda41eee446ec403f26f731a0fd694bbc071d5e7c235f62d685cd6bc4f89b42e4a8c8fce37cc95d92e0103e5b4d9b37efbcc7f136bfea03fb0d27304735d2837ce6a1fd3d9bd3ec1d51c787e4ce4daca8aedcae4a76affd2da1f37833e2e5fd4be48791fdd8ed56434d18ff967e0036f2bacdfd7b8727ebea689773556449f2ce43ef6384f638b7fd777f32ae4192f42b777a43e2f2d49e7cbf5346d63d593f4c88bc174e949b259eee56eb4f7d562c9e9374c27f27df4bb9438cc3fabcf91723df5720bb0fb33fe2d36c78dd33ecf62fc2eafedd1fbca31dba5d6dea798edff11dfc5bfb562c7d7f6e4afb5b511e38d7202d611ed1a517f546b0fb29c0560f8d81e7d018cfa26f4a79fc3b2f39f81655c072fbb7472af26c87a3e0f7ae1feddc17e4603a74bfdef29ecfdc0eaae132f867c07c4a17bfb37c8ad9aa0b321be1f3a73ac855f77bba1d35e839dd0ef1e56de146da62df01c413c9572277f063eda4a2b7fc630ab441711f90fbc9b81999741d33d22c6700a763ed496f487e7a4c837e142c9b1333d5144cd217f975c674e73d928878ace69604ff370d1dd25fdf925beedce6313e2048d60ddfa8c4ce3bc2aecdbca39e65161dfc64d1c5f6c4ecf71b13cc77df71059cfd7c9e7acc9e71065f5316a0e81d33b71ec7d4473dfe4effc3ada873bf0aeb7a8ece6881f71ebf23f30e7ee67cafa5351ec009d7b5f3cbbfa2dc346d89c9c02332b23b3b14f3ce3143587db71b3734e3ed3f3ca9fde12e2279b749c2fed7df862b426b44638f2da25f01cf8642dae344e52ad6d18170c672fe408f527bec65cd4d8f8aa5d92df96cdfc1814ed3a0ec77ddc98b6226f788eea7909986cb8493a9ddbacd80bc9c01c9e64cba8b6e7fff93efa0f3838e4780eadf986b308bc658039667cb7f7f81feb6cbd073df32106c3c63e7833b8feafcaf0308b7af96d2e3042620ead9e5e4352adbbece5b737ac296a4b75983c5fa0f14192f518c68d611e16d7fcddc94dac5354eea36ba6d615916f59f8d3b777afb18ecc0be52f667b4ee68c6e29be3f59c7853fed318c96a463715e147c9456cb84f7be2694b794dd07b82ae435d03829893ecf6fcbc22d22e8431fe6d5fba87da1ce0b59bfa1f81ea273c4791bb1b5abd451a5bb8187ef7c13755d191d379f2be897e4e35af1330cf83d36ef4f92ff7f7d566b7a32ba667c6cc5704dc76bf07d01efa0ef5d845e7808fd0c6a04b057d39763bcff5e03f923a4e78bb584bc4c75ce478beef38732bf9d1dfb7e699f8bef50f6e326fde8abfb80cf9dfa8e5a1b605283cbc33e366946f730ee273276cbae99dbfaf56367f9a774d6f5718ed85ce86b5cfdeeba7308effe7a8cf7df2bd6973e5fdb1ff4d9f2fea859f734ab5de77eed1ae8eb9cd5ec41ad7e8ff9ea9d6365adf41cdb4be737f4a6e48faadc2486a8c5aae657a4be200af702eba152e1caf35afbd877f3412fef693d48f6618ff50e1ca43f179d4b1d6f565460bc137b69b8a7956f13fd389c5b4fe902fa6d406f96fdbb83fd1f42e83ff474a0fed7704efb70c47da88b217626e655bee03fff976b416e3867497b601f2f71e1162b3f6d0fcb24a9d1fbecefd45ece7bb426a7d6f7947a64eabe67232af22b39838be5171c3ff6f389add3c29bedb086759e05cdf9c7b0acf06c6e81afddb13f13fbf93a79996d35fc017daf3b0cadb4828518de7a97e92289eb7a40c86388fbe4ace74f5a6c6d0ffa1e7074f397a8e99e889ff6aa61c4a53d2a3da7f36be0e49baf79c5e91e5be2b5955eceb9d41f52cf7552ae6d5aa35ac9e97a457e79d0ab96e65af7fbb827faebd6e5308113d3738d95d3de609dd775bf3297503f80f8d06eb6c25855fe4e7ca2fe8cf79c49ac6e1698e4b739d9274da859c43eb6ac360cf05a91193ce2f5613ec589f2de56e2c63adff8bd73f6b8cf40e734bdd36780c697efc79de19cb52ff1ad11f98c53b22ff51c72686ed90bf7a13fbcd5c4a2786d93d7a4df72ef598fb9d5ff1d1e2efbf9f42eed9f91e0cf5a0f1b80b781baa31a5c4f1d5f57c97a19e8675079077ee36d2c7acbdee32f5aad7cc18d0dfba63f01ccad47c6267ca8e70fab1bf98b4baa9d956ff0fd4be782f539abf2c67e833f437a8ed3e1bd9ad9786211f74c137f0a31d380f76585b8dc6f70f5f37c03eec51ade9e5abeacfa67f0717d63ffd573fe28df31b9934fa1d7e8399fff02df8ff778af1db4f1fe13bc389df7da582379cfed4de2b86075a5ff5d8e20a13f386f51652ccf7c2c8c8bc05fd47097ae15ee77c89b8df8382fb8cffa533986a9f2fbe8f6a31c67fc463e485e3fa62b7d6bd8884dd6c3666af8d6007d5cb4f93e54bd97c583f5d33972da9bc09fee7c0bf9e8717d9332f4dccdfb32ec2e353bd4b706a7b149ffbe6814813f8d07ebc77584ac8e2cf19e7e0cfac346b4c6b54dbcd626ba214f45446410b5696599186fddd3c889b5fd17662097ac6c3b2e9232f0bbbb91b53905deb41598d77d60622cf5e7a21b0f0a3a56f7b2f605b7ed362edc3cece7cecc9decc2f29226a60bf51af3e26917961bce83fbbaee6ec2ed945eb7a13655f7635c84e77803398a5d58d83abf705ee546b96641e1426c202c5b79e824f9c8917b65c6a7b8708f5133cce7de7c1b2e32a9e769f71078c33cb25a45d41c36037fb8792bec23d6742e4f11f977f5da32f4c33cde4e699c067ad0f2318565eb16fa739b8ee3949497345cb4cc31bfffa2d993593cd80ef324bfac470b35678f980f59962539d460f44265edee6169f49e0a42bfc5a790cdc5a2d50c3da85d11b170a9cf27d55fb29c93d74de12c23eba5f4d445fb96f6191532865d9f14f96de5cfe93c4af247fe66675ec465662a784de2cbdbd84f71d40ff7b1991ba1373b0cfa815ebfc8e6e5af0aa709bf6f1e2539e499a5be65a227abd70ca1ae05fac689bda0eed3b2754ee89ae3582f0fd7411d3fedfd6a75f3f136aee9194dce64eb92f8d39db2afad3a9c11ad5774c21beebd3bbc2e52de2374dc43e8cf73f97b753c925fc2f9b0038f8c213e45457b13fa931d7c2779d79b6e3f85592cf53ed3fca14d5466822388d8f745bb9c437d08913bee2634dddbc8da6838996505531439f63af4200e49ef5bee642c17d689a27c18933306fc2a951ad12df95be4b5cd70293fa3a5e7a26a64047d36d90bdb248b8bf96be035945edb7c7e6bc6f1f0ba47cffc868c21739a987619f65a59a460a21ab1ca97296ad0fd5a9d743d878e7d5bd99735e294612efa71615f5656bd0e237a2372f235d17de30dfe37d781bdebbec2ab6c5fd6e335d197f36c6c92bfcf85ee5b3f333fabcbf5e7a2bb0b7db75cf9646fb01eade19ee1018245b720d70505f45bcee262029c3d0c3b409e43c63486678679e8cdd764ef330c85b83ec71c14fc9bd8dab837590d5260dac457c8c91cc0fea1b1a2c8b37f850bf19e81637fbe7bd3c3cae37627e2a9bceb3682bc6c7684dc2df4c00bcbc8347e0cecce69d073b3d071890e0cc6ebee64e53d11fbf1145a5d7fbcee3ae375f72df2736345748a35ecc2b96bcec08fa5efc9c322044c5e522cd395e336e222bf115f95ce05e40b43a2b39d6116988734f0879f941785d899ebc8718fe3fcb2663efaca6b5c583d19d4d9b35a24c7deacb6ee8d72c213bf9cd66b22cf75e077f398f20945cef59cb01a616a1f40af62a2937cb916f30e074f7348d6ac35dfd86f14330ffb77de739d99eb4e5cbbedcf97797f61cf3fe61be082fa1817c86116782d63f4d263587b59af3db25db8ec41994265e012637d236b93fe7c31d2c9a2b61fa6a86f7085eec39801e0e8d789971f421beac4f291131f643d0f5c6cbdb93ddfd8ee9b3dff700d773837b2a56f84af4cee2a3800b465379121db9a50bb6a848bd616cfed85bdff146cddcf95e9626d20fdedbd70cbc8c837ef52ade8b87c4ee77e76c11809e627c71e9e070d7f457423e3dadaf965eb18f89d9da8257ca01bc533b6e3a2dd487a54171019b70619d794f87e95feff75768a36075be039f2a6bf421ffa56fc08fde179e1cdf5781cc53acc6b6d19d6af0de2ce6cee1a47f15cd1afec3878b113d9de89cdfcb46a4ee89ae3f5dead9b68585ce23b97ef6c6d798d6e65cfc9fa50f4e972dc53d2a7750ff83ee25f115bb3112ed2fd68b121d7ffc565d6b2750e9d25ec77792f883d00f5ce46bcddec5f4b6143f07159198e77a1f6a2d3dff95e76cbd06b9c93c27d8d4cbacf9d6123308f79025cb8fb3c2edac3b09f02f705f986d1db41e2a003acc9765c90f1ba1827b552ddde039932a27155658d84bf9c8e179df2b5247f7f4a272f8774bc68d4d85d621ea575defb0be277da8dd07729cf8b7c0f8c91ce878e7797fc6d3ca37c9f816c2aa6596265bf3d47630bedd6918e61b73a69b01de68177f806b65dcabde4f575d9f7ec39e65bbd91bdb9b87fc6809702e6e5226a426ce0fecdc9798acdb65cbf80e785cb0c8a6d427cf92c26b69e37cde3e6f41c6f27c4ef8c6a6309798d4f59b6f6d186c9153a87db60affb99605b55e21c542e436e58f85070ed9b6a9b264bb17fc2b275c2f504fbf294ac37959e825fcf4947a9c9e73e41ff90269f3bd49d6803365f89de7712e24f28b63eca48fa3d747c2067adcef1e7a25bf10359fc7046f7ffe8de5eecbb36ddf355ffb562dfcb72fdbf38ffb067e87cdfb4bf19356bd38f251b39c1ef718ff1a0c84fbe354c0696d1e6efafc6a92cdcf3b3dd3d19cadea9f1d5c3bfc3b2a59d7b312f4237e83cd5f3db1dbdf7d09ed0745d11f85361cb63ec9efe37cb73515fcbb39f16c0ab89394df9f7b7a62b7874eacf1ccc715ca6fa3a2b7e7d58d8b7797398c54e7a2236379529644fff35e8073f06fde030b02feb95d78a079fd8eb3d6aba86daeb5daec5003ea26e0871b50473b7d4a68bcb2e992b3a2ed07dc6c0b10fb1f99cc64d97d9adf44ccc6fc4868f8bf62d2ebb47c0ac2e1ab0efb0ff1abc671f6d699f6c333f85e635a7fb4fee9323cd77bd6f4d6de0ddc31802efdfee9a2efd1ee4a614f3c7cec6781b1c06180b40be9017ed2c48f72bb13a496e609c0dceac4f65048d434befb70efc7e117b0bb3d8a0bed6769ae3b927fe35c829229f0eda73a5b85d237bef816ce23c3f64af8df8ef17e57b23dc2b39c8129469bf2499a63d3727ffae796e7e1a6bfb503c37de7b0dbaf772231d5807210fac1ab9876bc47521995fc12f971d033ffb99f8b3745476c9bf87d1baf36bf032d98f0ba88992ce48aad5e5c3199d10df97d81fd2be87f51432879c67f6ad07c4c4d49d4dfd5b6bf65eb2566a3468fe82ea022bbba7efe5bd4e656cb0af937f22567f20be1d19cb0f65ef4836c5ebbadebe785d8b7fabfc56722cf1db63d76c38c6652eeb4c794e985e84faf753e8b5a8edcb6d41b63fd2d0bb420d95fc3c695fc936bdf0114cae774f5a7fe6efbc4be87361c7d26b5b50033c5ed0ef55f4dd41eca587dfd440bb90e62e69dce10de304cb3474da8da0b8b606ce758fbd22bb8715f015d7e53301830f7114caddf712358747c0be38289fc76bca89615fd60be297203faac8f5f5ec4368b64be87d02399416cf09dfcdc3624ceaafca7ec1df779acebc618ebd95479612d3967e6f7d4485fb8479b529e442a3c23d8cf336c84cf4cda037e429f42ef4d9105f39f94d717df53abaa737302ead4fff3c8f7d37a73ce29afc90e304eaf313c831b73eaae3917cd145fd77c8dc11d447a4784e71ad62c379adc3ca6bfd1a39aa2da4e42ff039d2de32febaffcdeea9fe9b751f8cf9dffc1b21debf72f2db386f8b757b91633cf4acb335039c23ff8dec1fe33bdf46633eecbcdddb17f0bcfbfba8f51113fb0fea20f0f90ff79c7a0d7f377f86f4ee57293ff8e6e4b7c46ac95cfea744e5397fb4af0cf0c5243e8f7fb0df3e137f586afbfee437c9fe08f41a42bc16f1d1d23cc876128ce914f7dddbcaca464ba3fd3ade521c20d4a2e13388ae5a795723f4873f137f3e21eb18f39c24f46e6ac4db01ed1d302cb5fdafd71fc683fc180f883ea7ef5f15ed7db4cee2c1fa92fad6604f642b91b1348fdcae894536a282c8cb033b577caee97fb33939f9662b7f477b4cdd632fdaf5781dbb4fb91ef6c527bd9ee721d4bd4ebf75137ad73c41fe40791c77f46db88ffaf33cde109f0fe4ff6de41c204fa7c6530f2837eccb1ac73927f3570cd7dd5f747de3019d7398bf9abc271b3fcb59feab79fbbe6bacbc4b5dcea29138f9815d7b1fe743f3635bf7f4ba867c3d6236205ef14ce3166d21eb841eb5e2c2cd564dc0a6111d7a065e5bf41144fd11cf33e427ec359341ad436cba5bca6dc662f2b7d8b14f83975e1a39762bf48734760fb6e089e3f09a5da8a9c735048e77323e5a87835ceaf8de791e15ed32f2ecc3cadf2bb81b054f6477cb70d180beaf2bcc19dc5ee5bf9333f6d2e3fc6bd1b6db48ac2e8d5523d675d09b77e70c0b04d70f203f1298698a363ad45a613e036d48e81947fc31df1a12bbfb976fd5f4fca258aba5d3be25963cc6a71ff2dfc93b278ba774e65d0f3c0fe4e427ead7b1b1ee023fccc93bb99de6b40bf26d14bf469e538ed7dd5ee2358eef0be67f626d6de0cd37c83197e531f4c4a5ebecd866b8e8ae430f38eb2f11f406676bcdd7587ec76d4c734c7c2e80cb8e5eebb81bce890f588e7923f21aad9999652baf7523f314f8732227d709e48639273d6068e11af12e720e691e292fe3e62c0dfbee31f237b03f29efdfe7cab1f7942760a37d3be7b80fad562d7e4fc7aa8425cb63a4fbb136762566ffeddc32f8a5e067c9fb99e245b6c41fc018d341eb3328cbbad6392e1ad8cb83e591212fabda20a8c3972726af287e6a41f6a71a8f0af6c8317b90f523f6ce5db49a0a8ea201d7d13c38c6f3937203bcdbab9b8cef815c30c8fe7101ff566c3df28d6f8f72ea940b0072cc367fa77cdf0973f257f81e81e780b8787349c65352cee61cef1f959deb6821e3342a31315bc6f448e3a0fbe8827b753b390c1c3a4ec86d76762b62b7029ffce1177ddf5f62ae2f6cdefe02ecf5e2928ecaa38963947d3bd833138afdb944667e62bdd37d61bf66497f5ecab29ec611f7617fbe7b5d772e63abbba3b1881f644c52ce429ebf1feafb2e280396edf5ea7397862ac72b19fb0ff63d3a7687e86a9c1fc07f13fd7522f2650e673317f905fbb28677b897f5987f07e4933f4296f397e2d46cddb08e0ab10a953983d831acc92931f30dc52d2afb84fe2ee76ee8bb5b3b29c6a4dcb372b4f892f41e2673109b06fbf648f7623cf8946b966d23e90f6fe302c71e3b6dcc29c33c33ec85f85b95e3bcbb9563599097c4771f88fce031b0b5febd344ed6370ef41cea35d67bca5774a9e053242c1ebe2b7f01792a6c5bbad67a3d331937d87af877c927c17312439c95ca39c81d60ac95c5b977eabc6c59bcabdb1e5bc8e13d7afba7389fbbdfa4f10c0555dc0fe87bcc01d0f89ca9c7ff8103d610d840bcae25af89965b88ef60f8409e9ef8395c5f94674befe53958fa2eb626cab9c0bc447c8a9beea7c8f164e6c83d5c843c51718b6f956f843ac772e525ba5c62fbe1af413ffd31a0637fb72ee9fbdb8ecd414be145127dcbf03bd939a2f638c6911b54e65fd6d53ca9328e2769ae9f5e55beaf735ce45b761e9023938eef4deb8926cdef788b32547a6e73e5cd8dd5cb837b8a4cca13e13bea64073f23645dc02f8ee573077a58d7c95fe0a8e2c1d6bd858b2ed44605cd39ca9e9cf91144761e5de233d4f91e09d4592938ab4364b6b621ef7b08782bfe8c7141fc8124677d8505ce38cc037fba27f6badb1fe67a1f52c469896bc6febc0c3d9761aee819738dc46c97abc614f99ef4fea2e8ff9c427fde8c9ac35f639f5d977d895be67609d4d9b19a031a9bdd421f11b0d711bb5f6fe3afbcd625f167dcbea5fe0dd4eb505e5ab8ceb786c79507b9ff78406df9c06c9f884f1878f949eb259512d9c5ecee00e6c0cd459e48a9fb59ae001f36cc6233ff445fdffd4cfa6e49c61997dd4de80ff749e16e28a62b9d9bf629365b794c74863f4b03ef721a5bdd78b0e9a52e198343eb0a89fd42c73aef0fb3047b78f5c8bc07d0778fe6e888cd6f0de531cde2627924df173a39c8cff8b697fe0e7bfd3ae6f8bdee318158ec107c16725f043524ee06fcad86e4fbac9f529a2748699e208d7cf79658ddb5e8f53cbf693e087b0fe6ca4af6be2c4b0a581b965f8b0794bb4859af35da042b6fd8481cc419ddf7d7eef8943de61b036ee4466cb2c8b9309f2a23320ef623700b816db00fb6aec13835430bf284553e74f8cd15ef42db42c49e174f29d845c47737ed13ef37e2d8e47fa7f705ef51ba5b79adcfa8ef52be05b98fdb254dcce53672aeda7bc2fd3bf29b1da1879b73cd12c10fa6d7a5c05992fda7b8497c3f9a6fc435dd8d16909bfa25f3cf0526f0bdc583a29527fde41c1787636c62dcfeddbeac5fd75d7efe97fc77904f79bcceb6c45f523028ce348b4d587703e573c3880b37f7adc18f417f0ef219e495fbad6770d938f6a11f2ae48423a77d223e1ef651ce16f49b7661b9f96be00ccbd0b37f8958569841cf812fbf43c7c33f415e59c65b0efa54fe51d9855c7cc3069549882703de8a6e015879cc6f9ce3fe7c4ffccd31d3118e2ad3610f61dd85f66d69355f716f0e99ced69e4df6049d8b22f4ecdbca1b1e4297e88225ccd71d3f97ee8523cdf1b84f6c8cf21eabd11fd233bfa12bede71a7d73afaee6cff55d6c5e01fffa28c637de4e0f8137fd25de0b3db3b8ef7e579f2f5aaa1e7fe1fafd1217aee038d2c7bc6e639cc3b9ee03a80f696511b10bfbc39cf29888f1137928f88ef4b15471d9857d08cbd6256a4e8dcab3f00cec439d7799ae81f45d37dc0379f14e7308776aabaae78bf7e2415c69d49c02474be4816e37427f780abc2be36d3742c07ab7b6837eb7116fbbe71870a7adea73ad16f44d7a73dacd37273fbaacaf22d6a6ed93def59c18d77de4b2fad7631c15d53d3dc67e682f893ff7588de24f90d9b9316bba067b2ed90b357bfd1498f62130a68dc496fae26bbfddbb3772dc8cc53df0dc8bffbe774f8873c6ef91fffbee3d7ef6b972a0371bad5d81dcd1536066d023678e76901e93466e1ef6bcb27b6373a6ea3f8e8dba519bf5f67d7b2e6398f25328b873892d757847fed1127a55487d195768231911e04ce78dc0a4fdc778af1aec8582dfd9d26c26f79fc6a615fb69deb3fbe35cb599305e4c6d8f6abc58b187024ff048b19a4ae579e597f167ddbe526c296a5f2936976c5f6931fb73dc9c7fc3beb20f91c563b995187c62e6e4ef342e6e0b0c06b18befdb5ec60aeca42c8b251b14e23d05d8e3546f62dfe460bb11b5e768a7a4dc4eb1ba59e490df7263e518a781cdf6a2648fbdc8bd5fa5fecc45bb119a691a9bc79cd84b52bf2cf99934b63e117d61eb6dee2e9e872794434e9e4516da0a94878bf6d3417f7560273970e7524e37aefb69ff7df5ac69f6218fd70b9f2aa6b668e23cb373714ee8f3a2e6744f6d45f26fb403164fe9c27be2bc279185f9722dee7f083d7b43c76f86feb005314fe00a6e1b8903fdba70bef12c3788acc5b8875daebcab9ed3d2f3242f64df25fd61232076d642b253c8bcd0be8ec486845a1e6aff0cfa60c3c0ba44668be895069139d447ccaaf674e53cc133d9398a8a676e1f8c9cf93e2cc23c2e5ce052917c448e2f8fcc00bfc7d5f62ed64eeca3e24aae673df2184e703f163e25f43e8b4df710625d4a963864aef22372fdb9ac2e9dc9d83cb4d577719948fc8fed86e604695fccea5c135f6da8c9d96205e3556b9ea8df24fa3c434e5cf42f263e5fe8b5f2b8b00f517f9306da1c4485bb0d58efeaa6cbe59cc4234ae5ba6dd06f04993d70a6e7c4bb6ef47a2b9cd31ef4d1d77352b88688c10ccc762372666920e7d9287762d8773fb15eab71863c1cf2097d0a39afe88b69e2dd93058ddbc0c1dc1d72f956f04cfdc06bdda202b84d73d88bd613c4e0678bee32f4a63b5a174cf51fd83ebdb8b09b60fbf4e6fb98fbe768cf115d3658f39e8065e24d8d04decdc757005e82ec1b2fd9913551fb57d377a9f10beadfd29e5005c878458efab5bcae553b4acddb01f604ec8f9517b624ff03ec2acc23087f0b63669007b8e39f406e89d86993a8994c565e83d96a0293e954ecb81d60474ba90f1ed8f2cbc3c0d13126e98ed679e6447fd138b93152fbd914babd35028ef7f83050ead02b76151dc7250d1797345c6b783a253606dfb00fbcebfe1d7831a7c406e1dc1958ff086bc4e22c5c0f27e00fd5e755d11e16f6685c66c6d8ea6e35bc9b89792db007a8af02d719b416e736b278fd3ebd36bc115f69e54db19f33f96fa52eaa575bef9f3c8efd335927d67281e31d5b5d53c3953ec07e8aef15eb3425ebbdd1befb13e2f9bd6b16806f3663b906fcdd5272a2c00b1961ef5ae9be16fb9d5e3b63b86cfa8c0bf45f217b67b4687d26fe9c725940bd4b1639d3ba6f95de4fbf53d8e6fd951fe67ced1dcca3e11e801e19375efb6aa13d18b0f15a55db0dfc95a67bc05e2df689e91881d7c59e7242fe2b58772ab7874426e421c7aae05c73dbbe3fe173708f7733f0ae9fc2e75af27313400d9ade73139fffe6d86bc09b31ec315b6345b6001fea897227f3fbc65bfa3bcd31101fd5ed0f1b88dbc539a2efa63606fdb6fe3c5b7917bdb72a9d076e5b6ca4382eea175be4f2f1b9f361dcc06769bc04e771a9e03ab671d935579edb94dea7e8bdc45c6e893e5a792d887303a64ee66c407f4bf88d9c4303e7636cf1bdbdd7c71078d3cfc46b3422c7c6fe7b8a3e97ea8b61cf77d7c457470c0bc519a10f08fb10f6265b0f793ec4bacb7c7a8c7b3393c72fe7a66ae6b108bceb4de270c0b9c73cae8277e0fb51396b4a7ddca7389764efe09942fd20f3693ce04f58b21a28267bbeacf7d8c706ab9da2188e6d40f3f074ad241e46ce77bad0ee2ba1ee227d5dc3fd953a349597959d0f2d878967e7bcf25a46dc989f178e9b85942ff5adc9f2c988f3d0d6a1cad5eab8a552c32271b8f07cf38bc4b94ad656da13d057d669efa3edfce63aed01f147062fcff4fb87bc5ee575dd396abfc9b93eda2f69ba246787e979b1fea2374b25ff4979ca810f74a3c67b12ab7296186fe8897c0395995a3e557a06d49854e6f93f03ab51f3be1dfb66a133deeab8d5195ed5a8ab2dfb54eeadc9ebd7c6d0ca0c7d30ab5b46665be0a211d7a0f4bd16bd992ee964add47e9f23e485c06771db228f26b6da7f2f74c2db8cd626b238df087dbec3a07f6c8f89bfcdc672e73b1e3f43e29471008f3a5979c601eacf2a67827191b49b98a3769f00eb2aeb1989a388da634a3e99da110ff868343b893e03f6b1333cc7dbc92e596b98b6bec20f84f5266e1d678ece39d305bc2f990f388fff689e62c0f8dec995637e80e3c5e8bc396d8669633c4b879567d0d8318e67541ee47dc5f592f49dec5ed91ed36cb06a5d0ce8f75ebbf756766f2b47f61331ce10f1daf525c5af779b2bc7053e26a2d783e690d5b180cf9bf8dd0dda4cc073715879fcec71fc34fb7ea66b74ce1db9de8bceeb1dbb56f54dc8d91176acc2c9b08f8a19db3bd44fa8d463e6b5bd4571bd65ce28d9567d468ede4aaf29d986cba3ed3c8f371433c5fc1e785e1d3e92d6ed2a18c998e3c1c6db58e5a5103667093db8a92d04dcb93226c95c424d73e2357216cf48d690aba7f6b2bd8fa85d9c94ec7797bf6705f2f792c6e6336066c8f342a77d1a36795cc4c0f80deada0a3e9bec97fe7417355d626f1791935fb087f55cf442701a19c41aa96d0d1ca41e7c53b9926aa568ff015a4716c3b996715c4abf3dc4804973f7246191d4b9e6d830eafb49785083634bd78aefd3acbda654ae31022f3f48d7990a068bf12b91f9c03ad6436c2e95355e90f9c6fefda0275632fe9ddadd9119c8f134ec7bb4ee36315ee56e30ff101e567e87c74043c06e90bd30e7ef0acc2c0fcce34db66171ede9dec07d52897907a67d0a9d7c4363584a4d76e81159d012350ffd70a2c839318fa788c83ab9b688bcaf27e9108a7392ea6ce19b349da1f5139c665131df87c456c75c16ca843ef8f3dfc046d7d46a15d77d6ca19db7f2a7bd90f645008e1de25b0b9f99ee3da8f397f7c27e600585ce5bc1be077b26006f3ae5f5b64f8925c71e963bca7bd004ac84344f0feb4cede753e4e527e87da6ac99668333f9544a7c181807de49f2ebaf4772efdd99eea0e697d9fb22367418388156431530bbfe11e6dbd0f9ca92f52515e76d26633a0bacff0e8023ecbd6928f1363d473ae275d2d53c271d37fb7b2376e659e2b80bcc5fd0b8d13d2c28d587140fc3e26f1ad747fb0c7e38e044f35348d659c4976ae242524db4656f25d924746a297a72529c3de2cf44fe1cc682efe6f20aae49b693530c9c97cb1def13a462584d7dbf2875d2d5b890513746d9670ba9df24715b98b2ffad5c4bce5ebf8bdc890eb1c3a739b72579bf03bbc2a3c1f0e68aafc56dda4bca653be3d371f24bec60cf0e8d03b12df98eeafc539cbf84cf15dfb0e5b8ff9df40dff617a889c4be223107f06f9a5c46fb5313e11fb92397bcb047004aa3ed07406d834f571ecfc06381276be68fc2c59c0fc70de555e7b8636d52ef0a734febbe4f62fc30b71dc9ae01b06590db62cedaba6e010697e1c718442ae4a711ef06f68be308db1dfdb8ee59c18770b3c8bd8d8186f035d23d7f67c3b565c91efdc07e0b50a708e98fcaddaa030de37c5eebfb4079a1e841e151b8ec3df478bcef3cf857e6f7e6473cbb9ec6bf142ed4364ceb3d8fc0626959ec7b98a45afc158d1b3d253eb8e2a5cba72bc7cd36a44a87365bccd4ece41547840042e0f71e44ba247f2d33764ce17b865a9d6c71cfe5dc1c69bc3bf5f2b326cbe9b3bb681fdf4806791e1c70e35dfc9f0093f836287bc6d1c3b2ff8dbb8dce7b866c0ebf5800372cbf06d0acfef27bc5fbeaeb87e0675cfeb51fe0be697889815b9d7a3eb6dacec237cdbc29b3ff9da73941e58b2eccb394710ab4336698d2a9fbff136d6fae4e11955eab3d61ac7288b9588be7d95de7912e71a8cdb5df3f988f877dbc69e8ee71098bd74b80e9567081b4b96cde4591be041a1355acf0c8710d7d4f6e0f7c37b87613ffd35baa9e39479a6a46fe36326f662e44cb34a2c0d39a7947917bec0030eb35cab65b0ecefcda3f886f427c5556879aadf98bf9ab5b03abf062f76325ab48e2bafc5eaceda7f3ab7524dc5a37da071ffb6d4da12d335962cf744e35ae46c283526688f6ec7db6903fa6b20dfda2e594b3139a977a26cffa15f4eecb86e86cf4e590edcc4bea431d1c365d474b72b8b635c9ae8bf4fcf91d720f633f63924f265ddd9bdf5a6dd11e0aaa5fc938bef0aa1ef11c7c690f7c233c93d633df647c685185ab0e365ece4dbd63d425f45b4a9d5d8448edf51e53848401ed6f0451ea226c42da6b8b71afb689d493a60f89a788d9bd70c937141fcc39ab1348e4d7fd122cf51f9b8687ceecd23f2b3750cfc745773af49eec5989c2ea7a751d230d0d7accb89bd28f14b94b382536b1917b619fac35bb8e83662cef51a60af245c773eff381f52aead4ffd1b87ec032e77655b79cb7370529c4fd24b30dfe36db7119b29cfd748fdf7792d16fb5bad9f69d5ad05cb4119d4467942fba97f7d060e9b45e77feae692bd87ce37e73922724eb62f848d0e7d2fcb8072c9b31a9104b154939961a3cfcac64f74d04de30415737377ce468b4e56276f9306ec65562fa6cd714d1c92f85b805ddeb173700accf629306d6344f7bfe0b65eee460be2b3917db3c339b8c7c9a4e20a74ec01eb3b4bbeefaf0f35a64ed682ea785a33acc5f76b6b0779bc196d48d80795da44ccd790b9843a6cabbb09b71369ff511e4f9b9c2fb29f0f18bfc6f37e80b1c17743cc5ae1d3afe1c6c31c13f149d7a9f2ae7adebfd99ff07637be557b761fc7cd6cfa46f4b983ba7cf449bb9fd0977aeb5e5ed7e2df82db44f83f3388e7532c37e7ad9896a1877129567fc86a8c243c811135bb0c47b88e9a7323321b37f487a68da06078a82bc30e6fc2fe240d7cda2fa5c8b3c4119c0a20a7bcd60db0528ccf1bb0b5d343e24fa17f1b1b0360b9fadd43e0610f7796c7a67ea7b17200a7b98e9aee29ec0ff7b4cf0b19a7e865cbe2cd2a5fc70d745dd1a27800b5473bd17fa13367d8cc26f41686e72da1171cc3a7a23f0b6310b82de6474b3d75c616c3d5625cc5577ac6bb6b8efb28586f6f5633353f937f27e47b8a599af81d09f330054e01b465fe01aeba97131964a87382586a0d0bfaaac75bf51a40c6f7c1bf5dc614bbff04db5c37b6ea7a0d381f09fa8402ef0df53e19ed052df09efd39f49242ece2f09cf4e7e788f6f717eb90dd74ec37f636e2f85109bb4d713702677ee37cec0e8b7bbba7b809d83e16b7de4465f71435e71a163601eef7c8b13f593d64759dbb595c766f893764b8f335ebab4bcf8cc2ade2526c76dca4f853b65ede3c0f16d05717e2e56043d810a7861a49df1a4e023f078e3a323733c065b61b640fce9d1cf222a147c72fe321efd4c125de53a567098f3b7ec19100d7d9c091f0d7c702f911d86f8afde4ccf3989ccd127bc3849edb0bfdaeb1ea4f046611759bcc73f0312e1ad9bb957d8cb73ca7bea1f7111d4e7c91bfb02f79eb9c38cb1fe23dc88f13ad79af32b20606c5da439f2de99db0f64bd3853ccb04e424af95fe45de21f16f481c2b6ced9205c49c407fb4cf122e83d884bc97fffba24beb0e9e007b0c7bc29de6b1c5f8ffa11717db879487f5e9c8e50ec58c8febb9641fe62eb5de367c1ca34f438ce3e5a0e40588ff3053b06e3dc18bca70cffe849ccd222cf24fc8c3e1b7fc0a3df7a2ea1fc0c11b2b6f9a4580d9c6bedb019eb32a8f717fda885cfadfb847801345b1137b543f2e2ae78cca10e00ac37c17b1c7ed6fd919f2dc319c93c47b027d77b60c4731b6c4de195b9c57f520f6cf250d1df79210b955c14d495813eccd9ed15c7ace7a0940bd19f41062726cc938aa581e0ed6066c42c8c5db07da93e318f7e72d2247c18614fbf110f8a2ffdc408da9e1b710596684646dce507f87f2f32df43b7772ed7f3427662dbe14d60363e5142b5586de93c8b1529c9bf4b7535d1f36cc290614b70539522d06a5707db0f19b3adf07702a53fdf92acb0b9933426089d4fe4a021f87feb2d3063903b6a5d5227ad062be962c5b7d7368b07a4e1e7f63f523dfbb7faddfaff606aac6dc28c7c78cfa3d3b32561947ccf0194c26b9ec5b9c36e3bf461e189bfb5cd4263524ec0bc7a3d0733bb4e835d00382fefb4e0c58f820ff7b6755eddb4ef7dc6b259eac6169b5eb9751b323e1a031d6a5cee3b3f2ec71c1ceeefc1c5b9d1f0ccfa8c5a1e9f3a8bdb49030bb18bfaece71593f8619df5b3b86e3d5e2c4f3ddca9fca5cd70fbf457068ef50a75679e229573acb6d19ca5c0d240ca718db733a5990b9e0faf9c8753ec475547d5de125c2fd8ce3b6c9bc5e540ca7e02902cc0ac3602a18522107981e3da83831f4e340a6bced3046ce79876499af73eaa8df3ae6fe1c393b0a7f16974b80bb6a30bd29f160317bf873c7c7ab7c43416ce0fc141a302f3f3037e8f21c661d4e80c690e5788aa9e069ea65a911353b1a0714f07eb1b9fba1d85aca5a4ae3a8efb907b8ae393db3d5be8db2cdc9f988b59e7d13e4aa8267a495b888a45fa8cc5463201a5795acbb8aa1a2cb789f1555ffa83116e97a359fa563fa79be1b7ada711c2ddac668b36a3df16a38b0d473d366ffadf0b73e8a01ddc11fd018d301c620610d04768fbef75eef94a67b74793f0239f625e1f6b6c31cebd31e6174eccf40e11a547a296581394947a5c2e77752b9fabbedb1d5b9dcc36f04e6350fbc5623b62af1398aa1577a706eb5fe11527f3d8ad941ff96e57db91c59ca380c679e470ed4022befd07d91dabea15ff8087ea5afc1f28b1e821487a0ca92aa7d75bfcf685bc747fe66de1aed29b0836a627d4de2bb5ebfcc7113df764675d752f0865673dc8ebd217a1675f2340fcd461e6de78adcf94eacf5db32e53b79eb8adcf9077246ea55a9e1570047e997ad5de04f287fdb85d5cf2f28776c0527add82e9b6b1e621c3e5279dc549b6159709b42bb0e392b054f187091d07734f611f22e1ea0a7835df93bff8df98e528eb0647c973cbfabe51447e51139822adc6ed23ed8883e61be3564b6d624f44262bb333bfc00ff263211bffb40bf65af8de9ae2dafced39c72660f3f82ed10fe4d74185b1f9a3fadef71ea5e1ff630957d2da58f699dfc93ce8dd4e70ae2caf8ff6eb1f2d3c3a03f25bfdf4243fd7655570b59f95e7629971dfa5d9ca30eed06589357cadf34e631b6e1f2ddefe6af6b7c3fe6559e949e30c89f9ec0bc7a4d88ff265e13f7c778d1b92ab94bc16dde404e39b2e618c794be351e701b1d6260bccf68dc1fe661913f71dd57fbde23f4d00d9a6e197f1e6bfd2ff8dbfa92c6a6a80926671239ebefda5ef0bd63abcb78dc555fb6c6aefab778c1bfe2fa0ebcf9df893f25f675163afb46dc9c3de6fcd6e42fc46eabfa16f6c2dcc94b5dd722aeeeb859f98353e2b4275133c9e30d7065edd81c608c00aeebadfc01e7788cfae46c759f3f2ce5f9c8bbbe85332dcbf65b62da1717f85bb301f591a4d866e37b7ca0ffc5ef09b6f3dff91edecfdb5ba85c5f52ad49f539c5b5f4ad01f454023964ccf731c5b6f8d6b0d4b932e36692c576168a9a77e84fd00cfcae0f32a0c77c833abe31c517b837ff2caefd5bbdb76ac7d06b9fd0dee47113c5befdad9e5565dd78e73fa362b9936bfd1e726bdf1f23e50cd6701a803da53cbf943f94ca14c6318c72d792ae639ca1d46767bcc24c26f3fc7b7d0f44c442b89b3f5807de173a7c335bf948e6b69530e6f5becaf77b66d7608c653b551d3362eb19b7eca132468d1b9ad94f781fe8ed568ddd24cedb12d650efdf57b195f53c8e76bfbe07d81a437fbfb1c7f6c1c3bd15c0d9bfcb55fc050e9d9eedffbbeb46bf11e66b53df471f7d1cb0c1de4176697d27956f44ffe73e17ee9d39ae5f2fec5b269fc52dc57e8aff26f6095fd7d79a75063e39d6872abfac131ff8e48cb8c83f13fbb296fb44d7e225eef85c58ef7a9757ef0c7fb71adc3692b016d82fd0c07ebd75f706cde1396e4e8ec04db39d6b7c84ed32b1455ea9ee7eb8c66a883cac8af5c03e90bd6bf6eeb925e36eadf135f13aab81f99275a3ee59c45e7fe3efe9612fedb8b0a1eebaf6dbbcf966ec8bf18f3df51e85bfb177f71bbfee277fb737cbb7312db8769f153ee20be6a4264adf74ca7545fc42e41f13fc44257267b5b6753c68942334a7bd5880172366b977c6dbd89f9e23f81ee42bc11c2ec36228fc68505b24f38529dcb8fd610ef35d50ecc87652dbcb84f3f90a1edfde6c996898068d3fd7693480f3b45872ae3aa88705dca5da6b45ae33f81d5e60981ffbb26631aada67fdcb3cc0d0b789fa7895fe27c0f1ec6e064efb24d599524e575a8f51e1fa12bdfdeff09adcc3bc1d033fe39ca234f7c57f23f6238f6f3bf37362b626706e372cff4ce4e8b041b94cfe7fcc7d5b7ba2cad6ee0f5a179f62ecd95e06121063e88e464e7702693116ea6c8ff8ebf75363d41948d2fdadbd9f7db19ed5d37028aa468d1ac7f71da6f1846345a3ef2e382857d7a9a3bccb39ac9ee71bceaf8a78907d7a0ef058bbddcf355d52720e74ea471b63009ff117daf0d4be93f109ea7f4e9dfbe3f3fcb29abe3eeed1b7949cc0d2bf52f846e8b32b7202fc28c473fa29e6ee95db6bac475df4565c78fe186ac04d5ece340e7a2f3dd8ff3f8aa8bf4e63ffb4781cbdcec3d924dc84bfe68ba1375f0c27a1bb11398fa40a6fb2e6a1c9350eb953cfbd158f746fbf205e09e4a183de0bbdd7b9ffee3fbca87c23cadf34deb2411a851773fd96f37be23ff8ab9fb5bdc906c5c9f8fbeac7bab94653c7defbce621538f7fff939bfaf9fd41e060faf153d0e286bdab9f11ab9741fdce97e0b9e6f09f27283de7b8133eca575ded5f85d02bd05a0fb1e5e8cdaf7c6dca93c1f387fd01f9858d77356858f748e9e946fd0f911f83b608cef0d5b45f8771c170af73ee35ca763e8b23f5bce55c8c91c44dd0ab571a36b89ba37d82de37b89bdadf5a0ba9727798fea1334e27132a7d0b2b71dccfdb23851e3dd1a2f726b1ea220696c9b7bf8a0fff7659554a4ccfb13d0c9662d03eecd56fe68cd36cd749935ecdeebb6c9f92d70410e467c80fe6e5c1b9cf3ed0c7b22f1dfd26671ca03d4fa438ee1b24a2c58e77d1207738dc3d731fc5bf1cc614bbfe765b59c9b32acdaff4389edec297929c506a776d242d6fc71bccb12305f6a1c338c551bc7e633bc058e9526f424c4ec841e6df751957d6bae0bc8baba367a0c00ff6efab554f734b96c649f28af65fa39b715ddd26bcaeb7fcfa6efcc8da8767ea366999d2dacce0e7aa39711d41f31bb4dc3bc52ed32c4def4c23a055e31c0282efdc799b7a8ed5b1ab9756231ac6386478b75d1d80bc06bbc248e44bacfb7418fc5954ffea35e672ab0401d1827933d6e8b867bce29a1d470d2df871c977e194fa81d682de3605f78e146c703463c0d564f0d18ce89353a428df61f615bb25ad5c7599dc405d4837e5ecbc9c7c0729ac811a2c833b56366f53206bce1de12bfbfccb793f26d6e5f52ac071ad2ffc77a398641cd7e033fcaa3f6dd64286bba172b516b67250c3b0fe7bbc39ec39e7ad9dba9c7a42a725bc65c37891cbd8ab78e3c3fadd80c1fc51f9ab80c7ed4a825133563dade1239002da7246b51918b9ce37bffe05cf98dfe53051fa18dbf8eeee927030f89ea0bb055f939e87e877eb8d45aec943e44c8efeb7ac5e043778f85884d92aeba07357f0076c8af695596795d4a5987fabc8d78ae62eb7c80cbf4d5dc25fbdefe11f37518db2e78ff92da736fc6561b3c51733d8f69e0b5e09eafc24db86572b48573c3799bff77d6b1f54cc7bc1449ddf4f641ff0aafc7fcaf734074e66274dbd4c4b1b7d5bd24fb33dcdf5057abe997fb5d12ddad92785227f106f401af4da5ba0ef43de7d3d4ae4b35ff3e8d271bae439ee6027f93d7d0631f86c40728452e0b74938c2f201632c7cbfc438ed5464f83f4e7b91ef29df29421def6116aba23c6d506b2c775f50bef71d96755702822cdc707beafacba0e155e140d7b5fc6171ad8db1d18fb0c235fc1352844ed8cde77920d82de57e21fa1d68b83f8086d670a6239637e9fea16c699d07e3e2a7e3ff6613430a01d38e71d93036ab2e7e7d10bc6055728b7d03321789e4c5c068c21060fd900ead4baec3c568ff1acf8552dfeebeb61b59c53ff4cfa54a21ffae140fdd5bd8eb1f90cf88bc5b838337fe4418d79a22f259f15599be373d8337e2385c1952e7450623d77c4936783ac87cf78697e3fb52b7bcb476193deb24128fe5b8e1fead0812719fbbe74bcd6bcd6f14aa16f863e97ef536bd407ac7751a33e19c2751141ec070bf9b724ae17319fc3e2ad1c53aa14b8bdecd927ff919ebfa2bf8c8fab9771de0b6f74635cc55cd7402f037dd632f63966d5de782eb77bd47303e7c8b5cffc4c7eabc8e595c5f7a80f54c4b31daeb17f50ceaa6312dfeff0b925fa8f7a3ddf0aeae3bc8d7e667b9ba64dc0de31a37e4f45081f475a5dcb623c23d95ad823e6fa3672690d9f99da16d4c67b9c0c9fb8bd41fd348e551ab7e0277a467d973cc7fe81f5bdedd87c9654df64e97c388881af4bd4d5b6d6db897a0df403b1b7c81bdd94faf511605901deb0d1a302b136de43e8be278390eae7b2f0a04712388da48d85bec23c1a6e90bb8fd705c9de68e46b9e4d180fd9775f5f67b5cf007d8347724abdf0ce7fb87c579e87f62d704e05fbb70a707a6baa678de71fb15e19f879b5b14d5fa9ee516501f91bb82d4ad73c8df3d50b9eab3be55d1fdb860ff7ff347a4f1e01571b318b19b7065f1bc430067db2cfaae2a6c63720d6c5f144f43c1ed32fc097bf4fe367f56f5aed21f2ed37717dd9fc8c04e7fe16f6e16f639e64ac03beff88f7b93dd0c19c8f5fafeb14efe09c2faf05606a2ab1358963c2c7f11fffe1dea86d447e5af677e23ff82d981af8dec5203c226e2dc863b6646bfc54cbba23dfc4f0f0b85cf5564ffcdf4e6ff53cdfac7ebedf09d9c0fbd4e79605bc4bcc5ba3ee7e649e55e63c513955c72ef7600b6e1c8b237e5ebfd9c5533629f32d7947ae00bf351797c493616201477baddd3b9e90dc1a1d8a2a7cc8ac619579e49de5afcc67d4691c9cb371ca7240e96119053d88e5cb7cde8dead0ce9ce2e73933b85fc6addab8e81af1b72deb377a4f3f8e251eb3415a26d595fb534a0da7e4c0657ce61db83a32ce9f490ed8d5cfbabd66f3c7daee53d906dc8ae845bb5ff685b5dc4f265cd777dd2f73b3ac7ffe97f453a16622a92eaa0faf7d3bf50597d195caca2e8b4616e2d11a7e9b114397780d39eb2b991c7c27a994ffaedb626d3a56a42aa713ccf3546efd160588e38af14431d6f6ba20fd19661d764317a28ed16b84c5be4ef61297a70d8b5ce699178ca3136b20f51c3adaa3e29907df837acdf532726fac2e57ab53557bb1238bdf97422da3f2b7b9c465d0f1c4793d4ccbb5acd6559953d2acb9a0f290c6936dbad0e752cc8ba3c897cb30299c8feb61953809ab2b51ecad761db3d3c6091c1d81c8b5507f3b89866a0c9b8f0f7110b4de58837385e3688878fdcb4e8ec7d0111fef1b8e8d712ab6227e7648e2592f8dee769135394cf56b0e741fc49a9da5d6fb23c762ea85ef691c505d777bf22687a77947cd39d735d4078f5e347d94d6c34b4eedc048e227d1b14737bb7852f9fce919b59dbcd06bf55ebbd6b1d4c0173edf34644e627cf3b9c57a6df35c69e2d8f3eb87dab5e0171a5cdb9c0757f2c1eb586baadca96ba3eb90fb91ef945d7ffb57190fef5f5c3d9938591dff4baa2bcce394f7933b0731b7fcb7a7f9fd597dbfb4070eab671d03b3ed9a91ffe037f0af9a9839ec1b1e3a30e8ff6cefb4d7152afb45c7ae053b47dd234ce70ead16df4af91bfa749d1883a2d758191bf455357497c4cc55f5e8202da6dbf4d6c5c32ee72ed1fd24c4f4fc34979945619d5aa1a3ca705e97bd84ead1f8e5c03927748e825519d7c37dde0fa9ed592da321491d718f219bda9c765c03b2ddf5b77ffdf1acccab82fcb16cb3b14f2bdd8e7ce2fc136bf1bcbdef8cf256dc3a1dff4a8c51957fc675217e53ea0cdbae1f897119f6f7afb94db27140be345feddfa66260d375d5754ed77bc3bfb3d1bbe3c8e698cc7a7dedef580321ecb5265e2c8f9b74da744d4ccf7d4618165f454e4acce21f03ef975ed78a0fa0beffadb6ad1f6bdbd26311e65addb76170a9fd88f45d9ff7213a9fd4b01a6720efab0ae71a7e3060879b7d4de27b1af889413f7bdd013fd1741bf4b3f9fd6fdfe118e4427efe65b1f8509e098db1f0fdf40de22db5b25f6b5b7f9eab8d6da4f7a45eb00e3eea7df3810f4dc55b506d3253071a3ef6fb6e55ac0d9b41dd47ef3be56c86ef3eb79ca33a078f3296c6b9ae7cd3af0febb3ff1fe472da6d5333a7c3f9cf4adfbbeef3c10be3e2e467a4c4c7827cfcdcfea7585f0cdf46c6f07ef11c0dc754b646a77c30ab93889c94fc04e37c507d5fac2da4f3995957ac2fdc6ee0feb4bad2b9b999bc686cfcef6afd87919b408e01dd16d7f8d6e819be440ece89e0296bb95ee07eadb94d600f182785b58c460203c7f85e85e7a06b1e38274a704ea22bc9ad8068f9f4463d838c4ff81e3915def75502f87039c7bf663ca054866d02f3c67931ac21ab25460e50fe4da955d4c84d1adecc780bd6e0f2fd6fef336a47557dac955a6b3924c6c38af9b04ce1ddc09c4ea31e1430baf38a5c442dc0daf6a8ad4eed0fccef3cae66957b83ba888ad539b82237e61751582fa10f9aada95a630d5cc9b34156f79f532adf8e8d7916e4bc9e03df359e1d87d8018c31e0faa4df5830cebed423555a515b08c676cbac3ef1c7c1258d827d5a9177df9b11e04f183fff5d2d31c43b853c51bf97d7ac9cf3aab77a1bd0b3425b0fa907c73da8a551b0d0319fdec2ff9c55df9bfb157327ff14db9e3e769e4b6df031db36ab553b2c395f8cb4bb151e113e76c86befa78eadf946125b65369a725e748fdc0a858b3719a7b704ea6c37ab342260af70be70583feb4a0a2a47f8fd3da8c598432d36d4b04879c69ae194e36629f322f2ef100f40ee188e35f836e7386f2faba2226716f77ed7ebcc387eabd85be26fca9cb17dcef2a60aaea0efd9fbc4913c3a12c777542fa3629f0156138bebc25cbba737815518ca7cb0171ed2087bcd215fe6d9566eddb763f477c42ab4f88165e264f44be01b90b17a0d57548f5f297e98ce87c2632ffb66ade2ec98835d6abe27c844dc196b4834bf1d62878309495fa93da09cef588b9dfbefbb55d4efa9d82be7227ef9e6bbc742c53a29b6cff437e1cbc5aa3de36dbef91e1167b85e97dbeafff0e768326fc6a80aaf7f31fd919f73bbf5de1fe67d9a2dff490cbfbb8feafd0ff11ee03d8099ddb64e74de5ecdde2bba762406dcd8c8053e0c91a7ec1fa90d587c793ec304386f7cc7fd35adc82d8c869b344a41c773d90aeb8d917fe1bf0fa5accc0fbfd5f964638ca6d5a85f38c34b1153196efdbe41dcc04869c605736bd4cfab802cacb0d78c451b73f079ec41a94d63eb5c813ed8e695e42b52c620eb90bcd19ce7335e14fb0973d293f7340c48e17471fecece0b6e832d945c480d39bb3ab1c2d73436f96335dd80180dcdbab21db525322f9c64ebd29a7df0bd9a5fb7c06f37fc3288dbf1bf4dab3ec9ab82a44e673ca52bcec663cea6dcf5d9f8cc38c6ead7b8e1ef3465729cbaed7ac0fefecb35fdaeb0f55affe16ee4773fc7c09cc0ef97b225e6f7209fdf11e36ef46eabb25052bbeb902ee8fef88335ebb5aed900ef2759ec4cf619b9ace339db73e23b9bb1d9e9bc3fe06b01f9cba8c03cf76b6fd4c8b9523f50d983a256908fa783dbb391cf115c07ea7e698b63abba6ec3727c628f9c726f747952720bf29ce5bac61c574b9c529f2fd1c78b75ad7c7d8838639fe65d75917cafd0b5841eae53ea5dc9eb20ec35ee9598848df88baad33e8fa36a7c53fc7cc3fc4cf4027506b22fab692f74c562e27a785946c16fc5aea07364e57dc0d9c8fd8a700c1433867fd07be42685da43cd75694b6f00cb29093db713b13587aff9c2e0b28158828cf16b35052f2dbccccdb8a28e85206a04781c54d717ceae19ef93f6808cc1dc7a9dd719f80dfcbb3e190fdb23a6fe7276622f7e369eaeeb649daef866c6952fde69e5f590dadeef49fc22d7642b6b7dc56f4d7beb5644bdd5b4b6071ab7714b9cf9e7bcf39abdca27b18cee76e25b2a88bf8beb24d60bff3b3fb310f318398dbf8051ffa73857eb1160d47c1e2b825c62474dc2073946bd0ee192c4fc79880d9d7b6e5d7844ddd79dfe41571d1aebb5e77b3df7b5b59cb079b85373f3b21fdc73d719d63bb0b10d0fcbf1b3f00b8a680875191853c61c8fa87b1bdb65be9ddda6dbc9ee6b3aaecf751c627fc83e50963f527c0fa91fe458144e6fe9d3d856de93b53ecfb2975219377ec313c34dceab305ec6b3dd0b5da77a55fa91d6b3a5f675de64ad1bf361a33e09b53941ce3e7d9e2eab621bb01ab50e3e2eac65815a07ddbfb86fb375e5376ab549e94dd6d22ad71ae7a7badf016b27d2ebbb1ab9a46ebf49d34b1fd487fd97e6cde4146ff277d077fd58ebb979c8c5b3dc9ec847a0ce96b9ac963c7f237f34e6f1eec63c34f3b70fbd95897f68f42a185c1ba65f01b1b97e168561b695b2f1348638515ffd6deaf0fa3e932fdcbd098e1d61a38527659f4bae74f0174be81566be18fcdbb87eff34a73afc32e2b116cdf7d5d66e78c906f73b15bf57cae1b5cc075023a1f6eee2f338ff36b337655d1cfebda317f13db3fac02f135aa4b77ca4fbf779077ab76ee6c69a7a8944531e570c9b9ce6d2ef35ce44794fc3ef69ad97727a57a52e8a73847ffc8ef51fbe83d7bf1a1c698a5d09b548fec377c59fdfaca673f99e256002cb7880eff4d46bf93efc5f9dbfdd5821776796c73f2c2338ab4e33adfeaf0377b20523a0d163c9720a05e2499492339b71b358ee09e2a6e3f006bd1fde773c131dc8f5402d38c616598f1e8bc772fc8dc22287cc95791c8875afed32f320ff734be74d1e14c141837d1b58430ff5928097c1ebf7657f25f45f91ed321a96fc5d4b8f90bc823ecf21cbe3402e48f2d09425fd86bc023e93f76534033e27cebb915b0b03eb1f7a35451eab18930bc79e106363bd8c2c9e9bfbdb09c958fe22b7ca7dee5ed6c8c7e51e53c0d4d7721f9c67458d09831ca431f4fdf0fe51c62523b86176499c12c1f33566bc39bcbfbea2637ac4fe6b36379ce33413fd96614fed4d9a62adfafb1263cbb7347e51f85bb12f5ce0ab28781d5396bf61df734ca223f0c6148e4d92381822ff5c5166de81c5f9cb7d1a4fcabc0a762c2e2deb3005ee09d54f906f613d76f4df26dfcde208393e662336f30ef7d7e9da9e18fd4dc0dfe13fceec9912d37f5edfad5e502e1b3ce32dbc379063e4b8a11fe0ae28f5b85f7aee0df0b5097b2ec89fec15d5786495b107cedd8ad528a8f82a6a7f32cf9bfc55dfd6ab21279027aa712f37738cc015017633935bc4aa19c3194ff26d4a5257cf31a97b56e3e059dfad10a3b83977b29643f6f5d03d9d452e9571a58659e168023e12e3ddc07d1994c61e665cbf3a0650aa630c9d8cb5fe91597747655c72cc55b04f3de03081788029eb80611a5d19c791bd7e9b1b791a562fa8e914e4ef2bb328c4dc1eea29d11ba8f62171f97a829ec912f87dd4397f9aab3d822f5a8f6062914d8a3cc827756dd9ba1ffc7140322f7c37e74fc7c4b08d6f5175e185ebad4dcab993f019e7229ea9fb439def3e3f6f644f22f6d725d6e8b28ce858f837304e2899a7de20d6d390404fe538a07346f47736389a143e2ad0bd25e75199b25ecd8e1ef5364c30e4c084bd01350bd43687fed1a5472e265e27e7ff490613829ceea373f1c86b5d25564eaed461675538e03dfd4fe303e006301ea76f9cabfbd77c83b8ae6c4c6f35beeb077fe7b8b757e2c478ad1756491c1ef0fd21c3132fdbb115d1aed7fa043ec6e6fb52cf3ddaf2708e69f54a96564ba4725f7ab9e07ee73de27aedb1ca0d8b78a24c6f7dffe534f0a0573f1ff8df0187bf363966652f7dc326e5754284af5fd151f7dac6158bdf8318ab747dcc1aa669fd7d157a259c6df9007ca51bd686601f6f660d0f6f73fbb6f4c08663f93b37efc0f1de4603d386e97ddeb327f2b2103321d36d82b1f671b2fa59d3ffce573fd6f0bb5e13a572f1cbfa29a272bb4f1bb90f2597d99edb43cc78b0ed019f51f8e73fd63ad69139f70cebb8dfc6d7a362a82af9d4df4a9dcb48cf15e8bc1c7f877daed58bdfd218795c50368e664e49c30ae79c427a0fce2c0319d672dcbcbe4dc34dffd68ea7ceefef6beffed595276ae63c65ad32db175dbe6c5e85546703f700c7c73674a4d5e8b384b90d708e9cd2623e7c1ff150c249ea94b94f46b08f70ae373cf627c655bc2b5838dd38d54ddecfee1eae0f311d597c55c314fae87aecad817e1acbc4f6440c6fc43d9131436abfcf5ef22ab43a74700bde52a32e96711735f5aaba3ff9efda6f744c1b936748f4423639961c9d8b37ad8717815dce384b7e346ae4b99e6ce47201b7fc05ef83782efd6f857bd8d86b8079ab700c4bee23bdceb4a586d7f856c1dde7d26726e69e166b22398a5e3ecc376bcf863e3318eb035b17e01eeee27449ac26963b9b9383dfe098d263295dfd038932a76c7d3ea875b867f1874f3063daf8daf00c69705af8a89335aebd3fe6b0607d904be4cdf8323ea19823a5df42e32417397eccc92a1841c639cae6bea1f3551eaefe1e79eb807b4ce7fb13766a5b4f1f7f76c7b73b3cee2dfa263947f53ffe3811dc605387e3b6720eaf5940e74bd7f9469f31e3b432f35cf437c19505dfa59f1b9a0c024e51b829a2803c69f915b55707ce4f89096cd4f7a33ebc201fc2baa11bde35ae2cd84fc9495e3fb4baf604e372e81ebbb483e977377992daed648ed3a6c57e91f345ad33e173063ec77f15dfe78f707ef16cbc6483006308a41df37809d8a643f5ba0f63980ad6464b5e51e27d681c394aee10cfffe14366f52fc013fd287a52959c897c8eca45a0e7a2946b801f4297ad37e7b232f932143cc23b8195fd215eb7310eddbed1f158f9f76931de7e49d7fb4de13290bc36c7d734be67bd2c6c0e9c0dfa3b8380e40feaf57096a46a0f621bee20e0d4e8757f2c06d3d0e1c724169c096d586787160c938fb1b1046f00f017ec3b38e5bb9fabd6f069985b1b6917ccef7f43dc4d7044dc9fb5fe4345e7816e211bc8f951df6feec9be2eb491e51c6bebff5fc64dffcb1cc21fe6ff65fe80f99abc1e80cec3b9a808c6cdad11d5c5fbac82da671e873c621c49a9e57f04ec6a196b7f3c3f1cb77685f5fb6929f1ba218eff8a786a8bd5dc1bd5cb787fceb6b33273ec87cca2be0939411fc5238f7ff7a92da2e1387dc6212375ce30f9a1ebb403c751c9aa19f0013dabf58d37c05e39a5ee6c987b8bab5a37c9f8faa9cede846372495f276afdf437ed991bb56612e319c085249e077d519bf4515ec79e4ffd1df9dc871dc49295fb18174e4af2ed6c9f58eee125ba8a35f9b15638941fddc3322a4ed083c1ea0896ea7c3f0a7e65baa7bef95e79ce2bf22db386bd24ba82be4d22d46b6c6cc83f4dbf6d30d92ca321f48afc58b7ffaeced7c2ea97997725f960c6b84894b13df0390f8e49743da471d0639c27363c17d79faddba4cc3cf794588b6ff2dfa1e40292fd4c41124f7ef3d836cf19c9d836cf9131ecb9b9dda3eb367d7d547a8d5e382626c45e6367d233e585cba45ad33f5ddbb63f06f9393e635d00ae25e62bce59b558155649f26a013d3b9975775c46c313e269326e3987712060dc93c54bed7d560d49beb66f6954c07ad377652dbf331efb13e7e863dfb1ce06b39d1e0b16d8f4655e1d453cdff8ee4d11f58f6f21e4bee4777e86e1360ede9368789339c6c9d09778b7b7026b824ea9c82b40dcf696421e83fa318009cbd6c565fa43dd570d9c31e0b2c2efe2ef94fd5fa0df2b722ee26781e3e53faab8b3780f9febc2b16f89e59e446f869ed33ca451dac318f784e1538527aa63a117653c8167624fcc90a85ce8325729380c4eb856e49455c065c078035f4efe23e92136dadd2ab78232db3eaf4c4c031803f4208588930bb9778e4f5b9645c5f20f3c8ecef3c20c2b8fe5515b65ab60739742feea11f669125d702c6b90e70d7c1fae15dde3ec5d5cae46cdb561b936cc438744f42ec51b754cc4c77a0a05ff958d9163f18abdd2d67fe61e528beabad92e9bdfef72cbadd2e83a7c9aab3155360f731be59bf74eb11e4416675db35c8c9af729d9bb005352e450d47cacc4b623803b897be194462fed3d395de751fd192ea1d21749edd381e4c4d638c4700e19ce1cc60b38269ddf82514d6d48c517649cf0414f62babe34beb9657f09d96ac99d95426f19b16f635d993f7cb8e8f570f70c8770562751f05bf64f419f20eb8143dcc0a5321e90db0af2a898635230cb9a6781abbf4bd9978a9f083a62e18d6e8df1a10dceec7a8ec1436d14e57719c7507b9460ae5f796ec4fd7ec2ef12b6b9ca5ddd8243ee9b79178623d888930c201e47e5ea11f100e6700e4d5eb90e50780c2db3c77b797b849a5888cb0bfb3bdf0bec90871d8b9f313e040547b9d1c381391a8b71c429dfdff0f1dbbef7945bd77d622d76b0bec43ee7f565b59cdfff065e0e6d2e601f623cd98cd1b461089bf831dafd864fd218ab9a47e139362dd7d56ff6cdb37b42862729ee1b4aae1df37aec9bdab17bbec35e195fe9ff5ffd870b7bd6663559a75db816e5937c0fd385901313b10c9857e431dd4f2be4b86c622e89352a536f266d58a77c57ece4830f7920651e5f5bbec9883d35e2318d1c05d4d2d267be640388d1ef018fc6b8677903fff9f773470f88968b33f197df8d7a74359ea5fbd3888dcd71531bdcd6aabfd1816f237d905aebdd3270614d2e0903df4ec54cd37810a9cee2d8a402e7d5c57dc3b0395db0c15057fd40dc501697031ed9f0ae781c9ef3ed6cf7223020cc9ecea4bd0745c12b9738a0507fc0714c37e6de32b922302782d74716291af9033d76c364fa635dd28637d5c8938e9b795281e3b968c1d4336554e437104b9cef25df492af33afc5fd9473d28f830beb7af09e84ff3dafff8de90bc8d67c6b59b966fe09cc552369f345bfbb22ae6101f6b7c8f9a4368c64d8dbd25f6cfa7360ac3fae5f2d8ecb7c2b30565909fbfd3d747f51c3da57149cf919acb987a6e6bb8bdd09fd37ea6b2f737cf5481f93a3a2f2d779746eea6ad3f518f79b1f5165ca86aacbb356760ca24cad7d6aed36846347c7b53d7611ecdb8eec3dc81395f9a2c9b6721e2b0759d4b5fd231cf9935fa9d4425492243d7b0eb543d43d7b8795618ebd8b2263f1a1837e67b907f47ec13fa9bc1f3adcab886b9057e10c3b115b2aaeb3389bfd8fc1e81b9adf4159a18938d5a67f65cb35f31ae8735e059580b9d8f86d9ecccde6fe4c7551fa223770f319c57c0b69a4cd06617dcf692835ca9eff9920e96e72b7276542f7fa783db722ff3cd291d87c72c6ee10eeae05936e2733b755e58fdc840c73e2b2dffe16ea5e188e29eed6518a7b7e45a0206d540fe770e7c18597c6ff65a36fc3aecb757f1688fa2cf9e615729e77e10e938f3f239d100f1371bcf969c2a98a3d6de9566455fe7ee68910f3d66d9b0f7a8aecc75d9a0f3b156e6d3c481506c073ceb73f9dfb0cf67c7fca11dfb9ed7e398df0eeba760df09be4a1770577a59cde2986ba5de733b3babb156c41ebd9e13eb7803bc1816c7cb3dc09481de93b658188b172066606cf718163d7f5fc9717259dc0d6284923ba74f528f507ff904f9176f42f7c5c97f241aee7e2c71904e29c46d875bdf7ba43a679f5ae59afabb4be4e7688f752216cc00e24716d5eb0beebf5f903f63b2cf3cd27be335a6f4fddea3eef7634c00306c92e85a53fdfb36a7bef6e40818e1737b9d79a3f7a5c27bc9ee2953e8ff68d6f716d6620b63194f86184b999d39be8cf93cc09599db65360ece3ec48e47b5c442b2c1d74f2a7258c6b3a1eff456d940c4fbf03983e755618dfa99c7783d06f661296be74b8c0986a784ea5656c36ef24a145558171e794fa2ab1abf36f9fd0ebe615fc9759a78d9daa80382da69a30ec8c3183a8bfbc8fa51660ba9b120a829b416abc472dfa1d616716844aed2f7583cba72a14784f750683c87de8424960bfcff85c9ff8163627122950764837ca78310b182c6c130ab9e618fa41d3c5410af89dcd332b6116b1e7a5646e23b522b3ca5f1a42cbc85c066c2986f78578c27248b1654f6444e84719cfc7dfef34bf9c80be7bc32cfa6733610fc4796c6cb88636cfd1b5d43aeafb51a02ed1cebacc155e6551f278b9774d8d2640358fa6a3fd75fe462518f173756bfacc8b461a3b25ec58f6cd262d0e0621a346adb6a3dc78c7357142aefbe3636af0fb1c4a77121fb4a916361ef3bdf57cf862d0b98624e899cd6f3fb91ffd82f0b6f45f5e6391bf8bb2cbedf43afa223ff9658e13e73ca63ee6cfef1bd0dd41a2fa30be32f6d899b28f1b8621064cbb0d7ee37b23dcf6483fa1056a7ef8876ee241daf563f5187c359de19078aca32ef7de0ffad2fd4d6e9f21dd9b80a90d9a2354ea58d9dd5d21dad186b85719ff49bdfcd6bfee6d1ec8ed793c0fa36e6b0ffb9cd6e72241a35ac66edfc94e73cdf776cbfde21564a8bfdf8416eb5a9fbb107ebc0e764aa70fb2facf0a273eda03d01f5a712cb0cf10435cea4d93ead52c42a647c49f3dade14d162c5f101593d1cd816f978724ea8fcc7cf0ac70739e58319f5c70496db12f0ffd4bc1ee214420deb367cc71e0ac084e367b1c6cb957adf81e748bc8371f4e635e791e2dc8cf8bb3fb60f09b5ff6bf54c96f9c85ce4925f14bb2b14e78356b3108bb386e71519672bf853c76c90d2f7f4b32df646e603bb4c2ce49ecca291c5cebd4366618e01f983e4bb52d6cb013c60fa7b71ccdea85f486c48e06cccad10fa7d14ec44a633cb9b7996335b73acf4823a30273d15975f3bcbb8dc1af2247004784d39e49a581db495c6935b1a062477eeff076d5c8ce9bd7a6155b897b5ffb0031c15762f6208881a17132f88f4d8f9bccbadb0178d038f9eaf53195fd8a431fed6b4ff835e1205bf913701bf5de92731f1c80e2970b2402ef97d59377bb3bbf923b59a659279e1b1155b8adfeb1ee19a16acee5b1acf92bc47bfff799746579219b5f3749cd46632717d397f626401761feacdf1a49f9a358a83599958075ecb89636dbf469d0b8187c2630e740e67545fd5fc7bcd1a7f35dff6e9dc8e74bf156c3f8ff1a05e9238a03e33ab17bad3f6acbe4f82461c30f7dc5b7e7be473a9f8d6c02521e64aca87c47566f72871f9cf3196455c859ddd59e4def16bdfc60cd70eeac8500fcc94be11753ea6cefda5c12d895c6904fcac9679e9d61f5df3e2b7cc8b56f38c3ab3a77374fd77e6859c8c7919c4f3fbe3e7f3f2691db616e7eae2a731f716da43504b0db5f2afdbf09854613d25f6cf458f2ce661eac63df263b6213fe6e12c851a7ba30706eab8e6acd65efb4d9f0bf85efafe10f64490405c0fea1feff23ed70d17a891eede2336ddef355d6fe86f183c5fa78e5c2f33be3aad261013e3722ef6abaa5f51260eca1adc8a28f8e4190a2f1ae384f4c7abe6f9456d06e0f743ddd1e267b0f8c547bd26a5f063e81c0a9b8fdbb71aee8988e3dda979b1f63e4cf6bd4a1f66ab7d05b189b0ce018beddec02bd49e41d715f093f933953393f5ed5ccba40a0fac8745f2a94b2c1f923fa627e4cf092f4fcc3f7ef5dc751a5d30161ad333f6c2fa604b9e73c51e3e2bbc34ce6d69a3fe35df38ebe3fb23fe71e32cc47394083e79b031e8ba6afe2c93319c17b5b72d9d8b3e47ddf7eb77e43cfa0b11ef607e41d8ec6f439f95ee41e01950d79263e4b3e75cf8d84d1cfcb56a4b613f27f20e1621971f1cfbd4d1f6fc2d8d6deacf725eaefed3fca28cc7fefe8b9e051d3d74be63f7751f49c98db572a769dfa6d41d8b5ac739fa2f438ef15d2a71271eb792b8d2635967e98f8b7d3a9eed140ecf2dc78197cf9875f1767f5edb89dc6577f9e059ec3d15d38beacb97ed6617d7432b89ae7d7a56bd8d839b91ff5d3d8dcb5b138f96adfde3b09f451392af873f668bc20e1f49340b4793d74d3a79dd904564d883a28fe593f3423d93d89e9964ebf2ce883fac9ec62b2df7a1c8f12e89ae15d6b2827e19c0fc38bc9e86d7a2ab7617ff26c51619af564fb5f6ac035ea7c9173fffb99ceee9587da7b75a7aee2125b8ce53bceef31c138ee3081816ef6d35ef920b9ac5b039bebd7686208700e09b4bec06cf1d623c509193f1f32a1f84efe8e3b90c3b1b6b2ca7885b86dcfc8a4cf27e68eea3d2755d46fd7e0635b74a1d39c47ed1074ca23ec43d9123c0e538270c87a2eb7eb1376e59e41e320f306cd85aea7b0d71f2b11e548c9b63e76831498ef9c2786fe97c7be45844bd46cd7d21fc5ef798ceed4b66017740296ade22f70ec62db916d4fbc5bcab3678c164521d53c71e6fadeda6fb113000f1fe4566d625f2dffb69998d790c8ffe3b2479cdec06323b2b67acf8ed95edcfb8c61e33e3597b33fe1d7aa320410c36de93229e1556ee41e54ed3eb508eb9bf0d3946e826762685790ea6f144c3bb6cdc5f5df9fd75cbfdbb6c30d9bfb5c54755d987738e9ef9c08dc2eed1ebc2de700eeff24190a96b161bf563a9171e0aefb1e1c7c2fdc061c8e7ecfb5ed85bef3afe008f45e0dc61fd6151b98722c275d7cff119c9c6b392ae17c6bf76f81ef7b2ce206ef05dca420f6cf523d7fb4fe21d9b95e82180f577416f21d6ec8a9e0751125d6f264e02dafff8fea61d51def2fe51d5170597a924b62379d61818946383071775ef268daebde4f5d0dd176fc4e45b72a4eb24ba965915107defdc759c8bee2554e63caf87fdcc316aa2a8fc0c2604cf12dbf08b709d3b798cc6c12db258ec713b3bbf02efc0e481eaab2787149a6d2731dd1a36e1dbb8119fe7fd60f4cc8773b1bd8f92ca64903d873d3abf7779ff50c7f3cd6a5adf2b1c9bfdaff7da39ffc55e3b2deecdea6f811b6db1e3dfdfd523d4accf13faadab6fc8f45df6269e3c5d2b99cf13df57a6debe9f0f668463d2d0f7fd68e1b98bfa977511724ce459ee939e21f3a07bd49c50ebb3c166adc29aea2bea2fc7cea41f3bfeeaa796f3bbffa6e90b6d2e34dceaffaa4e4599c7fe25515bb5851e3933eed6f96d1cdb3a8966ff1680d7c6e4a4258fc6fa75da6aa8d43a0461d3f2eba75bee8f2e761fd7b31af1385c7399ffdfa09fc9d64ee85cbaceac1ebb513706bceadba09f58e2b73d8f0fa4f5a6b1b779bee3e7bcaba70cecd8d6f99c3ab65e03e20da1ff32a946f5acbad3fc3035f6fd590ea57d6d0c5e2f1cf72967be1fff6ff6ff07bf5d4e1a67a6799eb5d7e8e1b8fff85c71fa778dfca49abfc2f30be6dd770e7c5e581ce5f9e35c30e34f16b6aacb7c3c5eebff719f1dcc33f8606c6cecfcd67a33f39aeb77f359ab667d59e51e9268f89eced93d5e7e4a458c65c862485d3a3e20b953423dce02e323102b59b4c54a84fe177124556f6c1b355c42f6d2b6da7cab9147e869f11fd1ef60f0c5df9a3cf1f03bb321d4fa72e4d7a3fb8bc788b85dae9d83182bf935adca32af4b7e2dd42265f0efeb251b0454860d1f34182ce3d9fbd2b9df151b1cfbb4c2ffcfbdd1ad79ee9bdc2941995bd0ff77881dff9b6aeb4d633e6743e607a12feb7b933a8d5c8d5f25b1008b11f7d9fb8edba8abceefaeed755e85e5f2d65e47acdb396df69fc47e6ee4b6c437ec56d308ff6dda1bbec3d66adea80b16cf7d123223fa25fe87f5d7418f3ec76a42b9d47bce0566be530ef8f7b35a45c0d6e2f24dc788755074ecd2366a3c675cb4ae85364f1c3f5d5c0be7eb01fe4deda87e93433b1f14fbc20b76ea38a5bc3d9f0a6ff49c0d0a926f404e76e6fd62dde979aeaffbe0cbeb2e65b06eca60fb77b7c9a0ccff8b35c6da6c1c93b96ff8bed4f40b9cabec1b7eacef8fa6af25dea18c51e2b46b75aa548e0cbc6153efa1ce36eb6a657c46abadc5ef7ff812ced51f6284e8b801702dc3df687bf6df601cb3b8c1268d26fdb4873918b065d7cddfe85c09fc82b5bdcf07b332ab26fdcc91358b90ef749a7579a917ae8ba8f82931683b7c06e1177cd16f506c75e8efc35a0816072ffff1118fff5c44c3cd8f35d6d14e1dfb5844d7de92614ef2df810b05e2d01cf3f138eaca01f033a885bb4bf7071b38738715eee3cb377f9c687627bbf685e373156ba627e87793cb9ada223ad606f4f2b6d5d49863fd12cf187bbfcbf28880dd93ce8783a963fff36b0eff3e25519fb4c5cbdbf21aaf91dbcb2b72d75ee377592d9b7954f6ad50af4d7517f6843b3ef553153caa15e06fb1fe487ecf016d3cf7b4bc41bd04c41be9bdbf743e1ea34edfecd75c34e3c9ec7d4d3cc3a0f7165dc98f35f0dd9c8a8adcccf735b0f0be947358a938e8ed581bee65fdecdcdd4ddf43c426a27a67fdfd5f0597fcf216b3de78a77c7f9adfd7cf0f8fbd698cf8c1d9f6e5e03fa6656285ebcc1afd9e3af624ab740e4d864dc239685689853dc7796d53ff9c645b880bf7b34ad60ebf2ec8c2f7aefbc40a4ff4ec482bc04b15d80f2ce6fb3c5f04ee2b095ce8bd060c67031fdb23751a05bd6c3019f21830d46131ee167f3cabd36821fbb93936d378d2cfb6b37d162da81db8d372059ec01114eb4bfd683ace7c30ab115342e60450df8ea05ef1d59afc4bc733ddda7536989d01bf5c8b5b9465de1b0d005bec7174017b91fe3791980d2a2f4aa1606cfea8a17e23c80613c2f4155da3db12f18f7b4bcf3df9e3f4bc8c5e56cf8e323667f6fa16f5d799056707d4956756b25a0cc831a94607d9e724e59bc50cc47d3fd6924712bf83e7b747b5f29cd5c40d8659343967ce90e7d1cfacef2df737f6fd92fa25954bd78bc9a388b5dedea2e1fb5cfe5d19f3fd86bf635a99d7f9ab5f63d07ff72fcd67e8ef18cfce0b58bfe136f4dc6dc7b87b591ff0814e697f56a6b51c7be18d5ee9999255c522890a81f5d5c0d783f55aec326bf2efd4b17fa7f1e640f556360e353d2a64a59a11f0f94229034fde68bda4bacf0a875487687e3ff55f5f772b8cdf2cd47e39926dc3235d97a4027d83e798abda7ba3535a916df1c13505d41002ee34c32f0e1bfa48d557f43b23eb48de44bd00da6fc5783254f42395ddc96c7e7fc7f1cca90d98594792aded9f49b527c9e045e0ad2dc69373ee857531def0dce839abae437f5c9cf3ea8898158fb39faf73fb8cf7f2fc27da76309ff312cea3d8d17887a8cddb4bac15dde73a3e9db88fda076abe5e5b0b9cffae3a1c7a2d39fe4e6382b562b846d2fefc88c36f4ced897b16879a7819d4ab873dfeefdc0a0fe9fa02f3faea8ddef31e7080efcd394ed780ab4d20fe045830e93e451cee53eac8bf693a6ace71fa0b92557cdf0aeee1ce7bb26dd083b84134aaf47b8766edfab9f046e3341a8a7dfb73ae8c13ea7ea81d1bd6b3eaeec4ae075de57b50ef0a7179aab766a2b76054537b5fced1fd376d0cef06f79f769fa2abab80fa223dc4e81cf5b29ef61df8db00e2c8661c0178bad3b85470c08373b69d91b7f1cbce5827d053515fcfe5321c69e23bc35fcb6868d1fde07b7d5278e519cf4c522d190e0acc776c730e6186f7aef0393b43a8dd947bf9fbd97786bd259d4b88cb0d37be3394fb360a7b4b6fb4e1bd17be636f95f539c516b55546bf713ff4cba5154eb26d7a5e5a6190c6b35d66bd68b2cae513f947a87daf6160487c39651df49e3671ee9e0aea93806d0f7b42ef91194f86532b28c1efa5f239b6c1aec86afbb88c86fb2c22df80b33c1a5d0a8f1c97f19ecfd5c977997fb7851e2be0eec9bc10cf3c51fb3c218935aa5387da2f4756470d6b0abc340a37ee3e9e0fb5674c25b73a70eba595fb0e9cd383f0a0f4df605ed99b003ffe13eecb41123f2b7d5ac1e16dbea1fe10d47e714e98c2737f031786171cb241d0c7feafefaba492f5ce5c8ee833015b07f3f8753a08595efbb24ab6610f39a8dd43c6b9f72df78635d1f06fc0f14f8083d21e609f178cbdcc00376936e4b9fd24ba5ba57149fd3ca89de6720535e8e3a2c4fa96eff499870cfa6fbf23f74bb5d8e6b57dca6afb9446e146ceffecec7b7c4f8aba75f58c3df3f3c277a1ce1db8fe8b2a3cf95e410ac72e0bcb1d0aac9838b815519f9edb628e187706df673dc6a142de3cf7bdf0aed4963c01965e55f4318e7e013ef3c45a28b53af6258d860cdb6942d4b312d781ce4b4af2ed86c559d8b7537bd71b9d268317ce1f0235eb99a8ad58ac9278b22d0457f868bdacc2f78271938b79f246a76cbc819e5886a3576690a3bf9ee9192778c4016390ea7f72931ce85266a5bc5f80ab2bb14af90dc0ddf088b5cbd595f8e3807e376167c92d835cb84dd26d78a063c9adf25c44d70d72c007bb34722f383fee21f346ef493c23d3a6cdd4cbb7e42181386859c1b987b65399571a271670b7b69ebbe3037205bd824f77ca06936312618e8acee58fb55d65ebe17b125d0ffc3ca7bf3fcd15aef08f6c83ee77a17e453e533ade6f3edcab3eb7af9ff97876d0b3f0b5f0dc5e1a06fd7c6013e0be76835e124f9007cd99dc8a38a032b649a3d92b60b1b17a7e7ea6d1b37031a06741f8aa5c9b2ea31071c3ddcb3a1f84b7dc032cdb4d1411927933dd2ea66726a1ef9d91595c926410f644becd9990372f7c07cccaaae8bcef05382fae04f83ef03e21636934536c65d021bc160ef44581fe23dfd31a1f953c5fb4dab892fa6d699456f4fce63542b82730ae883d21a0bb248f8c476eb987eb2be2a6631cbf8a6585df063a7f9f6d43b2009e54724a31f6a6e0b5c0b73c325c32e4161c4ffac9007c1e29df5b81df3648e736f891e25b9ca1795f995533b1ffa695d2c3e38d6ac3fea2b6c905f37ee18de1bbb5bd579cbdaaeda4e811d42fe3678eb55715d1f5e08fa93c3d333e93eb1ef34397d55b34ea432dd49c9e2f740e415f9fb32adda783909e1b43deb38bcfa7ba17ec989af1b9c0599d305c36d4c5c312f0de781d17e0b4ce0659ad7d4fd366d66c4ee84d1c7d78cd46b1eb9dcdea6dd06fd4f0ab733413bf0f5f143b7047fd38bd7f00e30eac77fb9259d7615a117ab60286d964a1f8cb8a6d3b99e3dfd368682de3c959d4cd01ee9d94037e5e6495db83da4faa6b07e125477e91bd2ebbedefd2ea13a48f34117e3a5165ebb25a367d712d06e63bab567e71d8cfb766dc0afdfc82142ebe47b7c1e5eff0fec5a852f5dc2bfb6ec5b757d7037a10d27886bf21578cf2dfa5fa6f91efa7b6b852af5ff94ef9238967fba20a3be6e4be9a28b54d9f8dc97fed418c47effd041c869f857577427be8b377b6ae83c657a270d1906c9beef36ac472ffacc77f6e9ff01d8b6e397c3dac001bd9233de66f511b4ff52b658da2373abc45e93ef32ec28ff9605d3efe3ed31f666723d8fe1dfb561db7ae0fef45de51ddc3e635fe23b7a7868cef64b1eb183f8f992b7eebc493768be61bd26f6dbfaee57b799ce3e9b1b860cd8faee781fffc0bdfffd47cdee773f687efe3ef68d78b77273c57afe5db6258623c55c6c0dad6a343a74a6e653dce26748f88cd3b938e79beacf11abd7f66ee8587dca3670f9c6d6c6c806700f23cad86d4b73b7ccd57e6fb40daf96a2c72893cd75512051cdb92e4551fcf356a475be4945ad70e7fbf89b7c5d755914fe67bcf6e4f6355ae552c8463eec337cd788d966aa3025f26f8c074bee66a3e468d79f1311918ee5ccec6ba8ee2f363e4700cfbddb4a3e1cc54e20ce591c515905fafeee2a93071caf4d8c1320e3af6ab19d72b4846e5bc850b85c788e0fb22ba76fc5a515757a97287f12b7e8d61d3bd37cf48f85d394b7ed6e29da34e3db2b6bfffd279b9a09f93ca1db7a10a8f507fb2eb7ec3d6bcb0fb26acde1cfcfe93dec343ed376adf11e6e7529f2ef84dcf89bcbe3f6515d6bb733b94e1ce88fb9fbc006249a68ef835bee01cac59ae702ee6f593bd0dcffde67b69998d03c2e347b2c759ca4116b9f5b2fec29ae3d92f62d0c007a7e8cb57cbc8f3c9f3e326ec0ad061e1cf745d6ed368e815d1dd1fe9efae1ee4d40a4f545f4ec9e8178b89fe029e822f3cfb47dbbe15df7fe9d4b3d467ecd0d75a0d9eaca510726f9e87624e399f223defda7208fc3b1beb09b635f0680a0ce3a41a6d188f2d700d2731e0d5a87af3e07b1003da178e7d9720b6712fafdc536ea5e7bcea9394fa207de1c3addec02f7ea1ba4989814ee64534ec2da33e9956ee20afdccbd378b54f640c4bf67d6cc147a47be13d811c65782b64bc0fe228af83e234ad8232f32e3b9ebba1731df7473856f7b27e8aee2156967a10d33ed23513d8db737b087e3df076623ec9673cc0cccf22096077b37894e70e920870a01b7b238921ae4ad7e8037dad616efc8a2d7cde0fe07ecd652ea31dbfd4ce07e494f4a4bd09b2a7e416a8ac6611b9a50b72ccbd8bfa5ef5397b8c392f76ca1943df0f7da3b9353a14d502fe8d7bb20de786c7b70093ac7e5b60ec581b0f39b2b367564cf53878db5984dc6055f89e0d269be996c93bafeff5ca3a1b146d75cd751ac17e90f756cd73ae0b8b0031a624efa8f68c5b1b2f249311bc96f161e26f468f25c35100996cc79e01ae8490ee3996ff12fa9ae7df727fadfb47a2eefbabb2df8ab923eab1a89e3d2ee380cca3fe2503db2c3867e3943cb1efa43a32898b7219bfeca75bc0e3df693dcff8de0e6c1c618368b693186bbbac3571560d4cdc349ed46d18d674ceb95c1bf619c9b7fe1fbcaf850f8c1832c7f6b0b1df4e542632eb6aa5f392e7344f98efd33866fbd916ea9c2e69d4e4b863fa2d5e7ae189dab7a847810740ac17da0efc7b42ba7ff7c5f859f01470b94ba83c5b7dc6b57dafdb20a0ffee4ffc5a91f372ed3ab3fafbdc5a7c7f1b3039f066e7ac0a473fd7826714f1a1e833c2966703af18d452095f1b7239a62c4b4e50b107804f623029f3b14dd287b63e032ea3fc5e73bd8c3e0f2facf36ad42a33e06b4409f5e7991e31e6795c94792dcf88293d9bc09f11dcfeffa611c77f999489d5ba960c4f117b944187d79a3ed4f12eacefab65fc0276239e39659955b303e6ab20c7736af4848b5cb9b2e7b6b35d5e8d06e087b239982af33795bad3ec0fefc43256728f123f0d736b62ced45cace67745c36b1185fd169f44b7cf546c52cb3d648fec9b42b059b8af6667d5ccceab7cd7c633cbf41be01a187b54d35f72bf5ec45ab6c909f72ba50f87b98ebf9e4fd2960381badb7d36086f62cc4afc45ec2dc09f0c4f791c12ba6f319f84794f982fe431272960405e547ccb81b065c6a0d357688be97d24802505b16a391ea91342d17f9c54217daef8fed4b1d76994422d2a8e03e2015c271f1adf310ece9c8b849fa5c0fd0cf9cfeb2089c90d6a8aa9ff154f343e786a7be4a0bf19a7e3fa6e358fd2c6774899c3b85d568d7a5f98abbde0ee88a15e97e55b47cd798278a3f8c6d532ea1fd368b687fcc77873f015be7a3893714ece887d4acfeeeb1a709f10db739f571fcf13fa965893e56bb69f6de0d2722e9911c6b3c7e109b03f9133e7dcf447ddd3dbdc3eb1bea932df6e56d4672be27bc8b926c82bb75946412fc1dab841126f04e62b62b890f7c273d7cbe8ba2fc6a431574bc883979c5f5f39cbf4b8196265063b88b90ec25b36de88fd47d7a41807cd75663936e4cfa7eb4a75f1e1c072aa83e5b8cda719de9aef6a8e9b3f1b73bc3322e585e5c02a52038e11da4927df0df619d44916f49c861c1e8b1ddf90ff2d6cca51dbd81ab1ae9675df3e1f587cf9e67b90937c5f46eea1ed3be0dd83494ffa3390d7ef2dd196c0de7d87e5fcc750e3b05d421e44d6c6e7b5fd9ec413a29fe38853b88c46fdbc2f6c87d5cfbaf5776e0f99e73ae491e76c9d438bf4968f4cd73ebaa7f4919e130dce107ab6da4535daa70ec64b92a828d91eab92881c0a1c732faba5bce5023313f870d66f80c73ad3f878e4be80b3e73d89f99a084c04a51673f8e7dfa2db63c001fca5b34ec3581aaab98447161f66f9dcf0b48cd23db5199622562b6b33001718d61df1ffa87fcc641379d4feb0eee9691c9054c4a895bcc486bd73fcbc1732d38851de8f94f3ccc405ffe899bb17d837c144598b96da32193bffe4fac30735b37f99a7d36304cdf7df8ffcc746fdad166b7fad463d89e51c60bd9ab423b5dc34dd9b9acef1184fe57876ce1dfb9cca1c7b2396a0e4acffe1bc64cb2d607ec818aba6b791a70e7095850f911af54074dedd83b4f3619f02161bdb7b589320bfbd25ae82bad188ab2087d6263d4dd5fa4bc7bea5d1b59a425d0b79ceace0f6ea915be17c181b015fddf83bc61e44edf7c6bc9f8ea7d5e695b5dcbec0d66aaebba2fffeb24655ad2fd6c726f46407c6cd57e2faa598d3a7508ba983de9376a8a82fe5797a3dce236d713c2bb721d84badbaf3618772b046ddf3e4b4facedcfffcb0075dc466aa1960caffac85df2afcdd1f6b1c07cb5575f7a58fdbb9e5b2c8fd9d2e980e5b70ddaac925974551d3da8afb19cf209ed4517784354aedfd745f89e919fd341097bf418d148b3729ef75655d5233c78431b89cd5e4329fda886b33fecd435e85653ade400c17f2827dc6b5dde103213782980b9eafc15aae05f4651c52c0326dc4ff60ef8afa48d1db2e7cdf3639e13e3c9d9f4f623da02b9d14b1fcb74bea0f419cd426f9fabe0ee677b7e9fbf3e9b9be536d03b0c37e349fb32bc6b34b7edb9da7039b6403aac787c76cb0df67deb504feb87af49f25fdff68b8c906932a5d8f487e4b8ee97852a6db97d3723c3b664e704ba3e7a35af38bf2de271d7e3070552ed89e78723ec23f9575b9ca9c8a5ca4dedfcc6b928710bbfe39e7f3a9e23708ac59e889e8c0bddba4d195a416caa43a8614f058a94db7d0ef433956eeebc41697d784fc0cc2daebb76842b88d3693efd929ef3c2863d93770b7cd3188e7b7f3c389be6d2fdc52395fc8b83395d907aa2396d1b09f8601813ab92a3c3c610d1cfedeca1727d7b8318e66ec6cf4495c13f692b2ae3c4e23b18daaf00ee3caedb1b405f519d1fe163a6f4a4637e429007b01e6361968b556e7746d3bd8d35cdcda9eabe8dd536e812fd5acdb6fb1c3c518b6d0774765b4392ec60da3c8b22ec37016d8241b0784adb97c46c5f5be88dd8bb8737b1ce9033dd752b3da11e716fabbab5eb421ab8afe6e7e6b93d7ccfc4db967b38c830bd4153f867789155ed8b9accc09cfbffcf51c72ffac25dfa3eba8249ad4456cf7e839c4ed1b8c772ad7c4936de36c37bfb1fd1c56cfc3c6f77c9c07434ee3597577f0c701c9bce4035df271ee2bab467516b987f6b34cf42741bdfe9b17907ccc70f93106546783e2e47b699d59bd956a6316d662957921c4f272f85e7c67dbfeeb9813f403bdeb391bdcaf92ca7d5fd68c5f361a9e2156cdec125e3bdf8cffcb7957658c9e574db9bfff9f2e796fb9f69b7aeda251affdd258cfc63a801ca34cbec0d8c8a988c2d71462a6439275e8f9445cbbf8d2de92f1df36fdce728b6bbb4ea3e09c5728cf53b7f9ded41b9dd2d7dda7f3f8cbc09353f3a3a89fb84c0f798deb576caabfd049d48798edf3818d7d478cd3499561e023f046e71ccf148c957a6e9d0d42e0375779098c3da1e817f98e595cbea7b1cdf242868e9863dcc6f7dc7536484943563b6c2355e7376d04fd1d9fe5983bb83b8c98087cdf038e55da13d34afaf291d51c6b3c6fe868b67f597e69aed7e0091fcab1c9329eeda83f4bd783cb2be7d97aab79fefa823238b7478abf5f511f59c913d2b12b769bea0b52bfd7e71c149b659422ef55dbbc635cd7f89eab1c7b9b1d52c9b9c2f8e7b09f79171e23ae8dfe09d2d1afd0c2fbf0e7b6a4c943a4ca9372cf49a953ce9a76d9ac30b092747b6d1c8ade5fd36f020cf4f9fd49f874037f35dd0a5b7200b967dc8f1d6bc5f329df5753ae17a49ea16b2cc622723918cb5670d64be28fc93e8dae9ba7b57dc8acd145dd73aa1ed3fd035837033ff87f6397513d44cfabc537a8f3d46a39ed6311073dec45c35829e4bd1fc3d7e7dabe24f1e4266434a63a86b0fcc7e6f4b1bfa2f4f213f39d6de70a8bb77c614d20976dd4d84e1dc4b7c65c81dbaa2f979ecb7af1beaf12eb4aa0e62abeffc81694f236d76b60bfa207351c86c6f57fe79fb5dadbed7afb0b679a32ef1f8c47e9cd5d2516d5a505d1759388bb832e6cb155e8fc6bf307fa49ab7bba505badc7f380c0dfb39dec53deeb03989ca19b6f27540ed669743d17b569df68fe62abbff9156e295daefff44c3475b6c00d025e9e593ca9b381bf33e72876260b234e4ccf1a02bdae8317ec85af08f029fa4ec1e23bb26f96e338b57f87dc2fad76de435bce45d48ec159ce386c862fd8eba8c6e0daf7bcd6d30d7e9826bf7f6587fde15ab4c46f341bb3e3da0e5dfcbf9fcb6534ac32c0ac15df6df8e2689ffb737b9f55e9d9c0be6bd5fdda1e7a6f9f2bae8f20aea9eda332f7159b4ab169f65ceea88ecc58bf952963ff97e70cb13a61ced0ce37ce3596e341be1d86efc3c72ffb372b725ac6c10ece35a9d3585f3cbd07785bcf79e5d66fa16e3f50ff771901a6c92a1fd824b1a01f71e37b93a166976ed97b1fb14e5de60a79bc8ad900f3b638e42c53ed216e93be56ee31454e1a9005b506d3988339c4fda385c8e3a3cd26b0f137691cb05e6ea5c7db296f29bd47bc3b64fdbfeab9aeca1ce410589f8ed8efc8fbe58dde5bc6457df6b63302300bd43deb7b933eaf8956d7889ed7a9772598cf557da0ef67df536333f2ec48393ec85aaf3f034e3c2ba4cfe27dde87b7b95953f3fddcaa63b0464eabf184fa082bec35f6d998d546801d029835eb340acdb9e1bd54fd2c0aa9ee069f00f3898a0dafe0254dd71fcd67a07f432356047df4033e3f7945b6cb685866cefd49e6cca0ce96d946c2bfd7b0b594f1b7cdf1c9ac756eb3a37c8eb92bc7d7b04b3aed2f3effef9dd7733d0fb861d0ab1abd74e402da6ba621c65b2d8ebcb6dfd02b665d454366c5b9d856ff46fdabeabbd60bd1c074e9587fcc3b410fda6d89759ab7acc69c4d1abf603d25f8bad2a763b5596a0d05f24a40ee55c7b6913848adb909c8f316d155da4f5fb2b3e47c438c8df96a06e68f5a9f707ab3b0af8ef96d073e77bfe6581b97c693635b3f5d110df7694548eadc2b7517f62e8dae9754f13fa75fa8b9980d94bcb2ec791ee7ced7fb5ff85929fa2c1e1f750ca271b0037c17c72eb37151bec5cfaa9cf430272eb94054bb909fc7feb8d8a5dafea4ef51f1d2f4ba5bc85f8b9a40e4739caeedd7ccea13c0d51a14b7349edc26f5c79841b27744b51d348c01ea6bed21675b05e77c3b21c9607678d3b0885e188603b513dd3ef438b26ffd106f006362689b540b316770be0b0c08ba57409f89fabd341ade78ad14d606cdce691c703c954bee853c764bf7c92b3d1b97e3592f1f3f7f9bd6a3ed329eed8ac83f25d6e838b5146cc3c18468fbc822b77c1092bcfe5e0737e64b7b7da8194dbdb09744e4c0b1938c7e5ec55fe6b8727a5f806aff18fd904dac70436ee9792b31eaa06740c9adb7d7fac4ce2413b2a6ee59d2173a58edd5d76abcc7e16de9ceeab74508f8474fd4f650b8a204be5634047c969f73fb1fcc2f5ccfc96db7cabcd17bde3f5ce2b9dad7c5fc8687473897e01ab3b61a9f77424c96f239b3a0aee69059c12dbab98586af42d4d8d2aa466c23739cc09909df30adb0d6271b13e3b9138d2f4d8c214ae9fe30ae0ddac7c06ac634aca87a7829e260f7c4dedfec5f5571e02624b7c25ec8efdf6e766c1c4d4e70c5a793f3c5e3d8ac67d491d88dd883847e93e887d7f336422ee1cc80f8a3e9e3dc19eba3be4ff1891e3ef8c66e9c3413cf6e81bd0ba37301f886b3fa6d2eb1629ebcb04aa92ef1889546d7a1ef3d32dc4115d745c5c17a64183fda590ab82bbcfe0b30958027efb0f7bd625f5421d41e42ffb6772d79dc291fcc4017701e0dbaeed4d7cdd67aec849e690cfb88d5f116bb349e20af14d6c0dd7c6f48ede053625dcf5c7f425d33e6b114eea72ef9a2eb78d4f65dec4c800310b06615ae7263be55ae48905145ee0eec5d0aee1dbe9bfa36690c6bd74f45ed91a88314d8d1d3ea48e87968d4c3f1f56bc8f3d20a87ec5b9478717aceb13fadf6bd237943fba1e519f45a781fe7e1fd9dc69b7d0b76fcef3426b706cf0751ea475d7a06940cafd63d091b0971034ae5fd9cf71a70caa85fa5c45306e9dcfe9d46e1459505e865ad8a9b5a1f099cd7ca3990ce9187d9e46c465ba205534fadf5026c6d83a75fd6b6e0b70b4efd468d925807e0fa80f5307985d578e527eb81cfc4fadcadec47a4cf6dc65187cc561d710c4ea5c7bb352e08cf35fb573aeb8510a7e7ec7bae955964c331e63026ee523f7b937ac855944417619bb175fc1763eb6529722ebc0fcc8835b07a638873a02d0598ae7be4da4babeef51576d1bec03c3cb3790c9fd0730fb9f5bd6907e173010391dacff9da1e2c19376c013cefa3d35bd4dfbff1ba6be5ddaa8f83f2c3c6dfc677dd35ffe3de873588926f086dcda4ba92262756fbdf845c367030c09f447b2b9a1cd2f0d8b4bddc5e9337a6f99c6e9c0ac5367ee57b9bf5b2b2e7ac33151bb419b3c5fe5a812521bf51c462982f9deabdf6cdfe61b6df95f77e501f07b650b98c831fc9e24e1deb29f3c2533a9835f820c43cd3fde7f4ae9c0f1eec8bcf740cde3f587ae490ceef774ff571ef3f5c56edef6def89454e1fbd5f58b9ffe07b9b7dfbbd527ff09a59532ee2b69ab416794f2bbabf9af5109feb1eb9f6be999768e4e71b63ed88737cb2275b7a543fd28d8dbc9371bd121b6cdcaff173e867257f4699adb51c1fd85d60db8c39af64f3ec7aabd9bb8cda4fad9680ea12816b2f38bb809f86fdbb55e7c059226a1ddb7d235113f0bad3f27c5307c7a3f03e9876ce83acd93330a6e47b0c2c981d8b9bd3f5bc6a75d2d4e6ffa1f321dd9616b9845e78cc5dfcbba113c13fa6ef4ee344e733c21aba7d5e0fc5fe7dd66a2c71dd5a6b0ffebe0692dad2caf887ec396a8f47b3b68a8d53d437b2fffe85b593f77a6d80fa0dcc16fdc85e60cffa3c27cf9e65e4a260ee549f48cc39cf079a636b7e572fdf1297fa2dcb28bca97c1b6843cf16fcef6ff34d4b9dc0aaccade33e7721b7314fe380346b76b18eed89f1cf017f2ef6e381edde5187f703729188d7c8717e594cd1ee2da37e99897e5511a3bb615fe190e3cdde7e34f41ad40ec018a655b04be2895d38ab8b82ef03fe482bc6441b56048b2b21ced0a6f33e3f22b7d7cafdf1e41cf1dddb00b8279e1e1ef7adb8127c7dfa787d3cff40ce1a76a5c903277bcea7aecafd343be70fbbceb88f9425d6f731473da3eb68eee78fcec523c60e943da2c95674b38b26671f70b3cf99cf2f78e1676dbefb7ba3f702ae5dfc39ce09ef59d0ef376bc83a7bcb998f49fd05259fa8ceadc4722d5da506ef9b81a5a0e4955ab82835fdd1f90d6a8ddf67dc8f1a1ebcda5f8773aadafabc8ead3c64d6f3c1f782b2888a5dcbde6e8dd7b4e689710eb57a502db7d69d6b116744d6ccff897aa5240eb7cbd65e2691233470764b923a7a8d6461b937f9ad907781de72c472470efd66bd28c3ff8038a1ac2be158cd2c5623728c6db5993cbe9599b54e7f91a36aad0bf9407734ebb705bf6ee9cf6d3eaf1fd8f16afc03e2abecdc173159ea5b0adbda777aabe7d703b5e1ff0336417d7f9c469b668f143cef139d6291e2473b0ed1c771c7f746dd2e72b9b16b790c4ae1f7a47aaabd861e7221ea5e667b93aeeb20ece516d4d2083c30f81e264b525646fdcc7b1132d25637be8c5f0e885f10904260e26bb154563baad42444c3de1262786afcd6c42c10711fa85f44df5bfd9e466db7f4f3d8789fa86f180d1bb541cd1807f7a3599c7bcbe281f5fd772937602fb6f96ee8fb79ee8dd506515933f16a590c16f210efd85b713d2766cf9cf1bc1960fd5c0f6f607f710e248ec7cec60ab8a46a5c3e607873edb5efea3827ebc478cf077d4dfc7ca1fb707dff5de604500f51b9ecf431a5bfb44ba2e126f316bb963cc501b90016cd3eac666f896ec38b18f7b082bcbe771dfeed78523e17b0fe4deca836d969d4d7c35ab13e910f7c76a63b004381fafc2d73d251b3a8c659c499c8e740ca577d5969b1e6bffa0e11dfefc200fbff7a3d3a6cd8d63ed78f7320fcbc1dd532e7410c7e657976b5dbc02aafbee2c77aee3adf8697c2b07b394e2ceb5d50cf3ad577d9779d43325e7d7ff41f1eff8173f09dfab487d574de6fc684f0796ceda0dfa99933e93763425fd49ded7ec89fe9b52e9cbd0edda4e52b3b75b7943179ae33f96bac6db29d90243a347b8a3fea7b96f2c27cd636ccbf52af01ad909301f250e3062eca8adbb5cc3f943da4e165fdd4f6fcc618860c3fe179f5f3a10732a663aeb3ef85dac9cba8e5fe4ff636d4556f331d47879d332227b9e7355d79353af09c5ee1d8ff1651ff023906e441d1be5fcf0d6af60c6255685c47cc3ed6ed2a31f699ccbfebf53dcd7874d3866bc8cdf7c66fc04581bded3056951390eb3ea30678a5629e1bd774f761a31e36bfabadc79fea892fd9ec662cacf96ddafeeac268fbb40ebdab569bbd5f72a2cc4beed729f9c9de41a96993d7beeaba54f8788e5da6db19c937709eb4f8b77fde1bc7cf93cebeaf562c848ef77cb8ef9b7e6dfbfe37f53a8bd3217f704bfd751347f5e3b9907d0c5def82388423cf90aff4c6b5ca6667cf098f0389d87bee57e12975f5eb0cbbb16bfe14ee23e0c1e8949196f7ca6bbf12a769ef39fba7dd2e60f58e865d60d8447afd4f35aa7da794f9a8f6ba9a431a0db7c04f3ebfbffea8a90d71079cf0bed33b2e3bf25b4aad528b2f1d64cbb0d786e1d06a0b3259fad43e6cd101c2ced538e4a4cda9ae5de379cdf8317f5eebb55f5ab3561ba025fe267c3f2aa37ace829fc5465dc6ff57318c8f6211ede3ef3a373f8ba32aeffb73bc68e51b456dd1473a4fd1ad71400aad664faf3b6bb7e90d59e1ef7cffb8efd7c8ff2c58dc84c7d4504e1cd96399c580d3857caec81347f78de02bf4bd47b55ecaac7d103c864a6c073065726f744ac7cf58f73eb77f67588bc5dfbfa6cf5cd67ace877e1febe952fb680e50b71d5d648c319ef5d2a87f013c91d7ae98b4d17f61e83a2d8f3dd6fa4c0e980f9e35e54ec4a8b5fa6d533789fa841f6b910fd56a13f4982ac7979afd48a23ef6eb2bff6d5c2bfb42d6f2dfea396be42bd478c01f60b2407f3dc93cb2c66f09a96d2d6ae23166762df3c1cb8a61aaf058dc2d13f52f05f1bdd9395b17bdc6b33df73da1767534ec31bbfd92c4c10d7b3b3066d7ec571db69de97fd097f007b623e7087c3578f2a2a2ccabd92185b18e2aac1dc4fe76c69b774b06937d3e7e819af054e5ef63dc8d2fd6e89845a3d39c3c43af7a115d550e49c6c97631ebcf6ace7da0d42519730dbc9b9b340a0e09af679c531d39d963cd85f88e3a8dd49a63c9bd2ef8dc19369b3f0edeb30170140d961ea1fb16f82c8bc133ff5ece73dfc67b0af55a503f1eb9b725d4834e86be67af97d1dd59e776f0216e9055c1a18866641acb31e556502f63bb37adf6b7c43139f7051e1dfa2cdbde4ed6eb13857f1e9fc1b04eefd228e8b33c3b725fd37338ea9fb3cdfed5f7fae7741c1e00d317b00af97f0f451da55c2f97737876ce29e44ae3e092440199aeed9f50c7b82d00e794f370808eadc281ef85c77c3c1b366bf3ef56b388f496b02645f9c6f08685de62d8c04a0de42173ec35f21b861bf475c96919cff64974ddbf29ebc49fa3d6da2f247f86949fb92df8350a6f7451f9fdd38a1cf8fe9475557cde5ab909fea76d5efd871de300dcb07afba1c231da3dc73f95fd41effb35e7e7ccfd2e8982f76534837e8bcc853afdf7e2b17f4e3dc93da070b6097996dca9103758b33dc8b02bc8c91fb36739700f998afdb85825d1e45c28734c75db322a4e02cbd7c3fc87c43728ce79755815d11075cb98ca63486d32c0c1a6e35ac601f5c5aa6554f4f32adc4cd7f65311073da567047acda85c49fe93e1bf54be132bd8a71ed47b202fec363c0146f5dabe515b8fca0cd545c06f17dde1bf717f9d528b9c5256f308f2c2788970ef5df789457ac87b1bbca35e2c0e99352933ec0f39f98f745ca3430a38b2fc79cfea736e89e55e14fd648cc9e63d2ca578b6636b3c4af40c915ccf015bb7e09c550159c66999806d93961caf1cf51360f763cd10b55fdc80eaea1ab0ae5dfb9c79e49d9d79eb6534839a7358fb47a54ed3b1d745fcc2f526dd1fef491c487d8eba81f131f92be05c88558c2588ebdc717c7f759d4cf982da556b7248a31e9dd34abe839c8b796141ada92123f037c05e09216fc578b9e937bdd3b3da9867a87b4e62fb927984da7fa5d4a5c1ebc211f7ae97d1cb6aa6f1fb000eca301b2cb679b540acf471b1cfbc2bc34461dfe9857b56c7cd7276a39bb2ee749ed619d581f56545edf704f4ef8c149ebbcf1ce431057ce2d8eda71257bc64fb6a0fd8e88fc5be782cfbc9dadee783a0cff512cb3571de946de68dd649744599113112a66f0d9b28b5aee7a4720fa823865fd643adf902457e007b8c481eb8761d0c3e06f54776725f2b35fe5baa2ffd83bf85187b996f27e51b6240fb9975c55e04c13bbdd8c58e7f9a5a6e9d57ee10f1a5cb73e68537d95737546b7be97a2cb21e5eff0afced58b7c271bde9374cd723a5b673767e8927751293e765d4df0b1b9d5c4fe83b852751bbe6859b79cb7b583ce75a44a4063e8af5ddb980fa6a1b6a0ed3683669799fcc4fe25c9c326ba85c87bc6a2d636fb96e269f5529b9647774a37a218d6662ac4f9e5be7ebcb4ac63614cc631c574cfda839d581f1f32e410e9aefbf1cbb7bce9cb204de198ffad8d7ef5f9933751cbfc617ba074fca75f3340e187ee7106de2aaedfcedade201d66aa52e1fd3e61f7fadd642dfade216f9c1f78b3900bf83dd7f5ac6810d723987efda3fcdf53982331b7cd7213f7f4fb2bef47ee4bba3a65cdf0eeba9cafbb7b67f7d20b330ef53c796b929965f7c8b6d9259c96a3120c7a41a1d642c52a921712f6b5807e771c7af5331b3e0ec153c74fc1b25de95ca9d0b73b7567b6af8ef775acd99fc1d64b64aa2eb8dc7ee611fb923d28685837a017220527f29b1bbd8da609c7f3bc9dabe259eaff653c7fe95df0e2b7f5efe82188753fe62ebb01798c7f30dafd5fac777472751076dc4f8f07b59bf9d3bbaf1be9327a35e1af3591ba81d60f7885822f8ab742f303ef1869fa6d87b26c7139b3f655eef577cee52267ba8a765bf99e49fd4e751e08884a313704cbaa37dd4577bee2785ef3cf29ad67ddbdf550cdd5f4a9cb2056bf957ea6c440e20566ae031e6237d5be10fc13ef13fdfe396ec7908bd11eecdc5759f45a4f7a3f60fbeaef34afef7a5d5d43799179e8c3d7548a33bba66ab0c31bba9aec3dfe07cf2d5be03fc7daeff2e7b6dcd38e5fd05b0a9b77e2d70571ef978ae245b6f30178defa3fffefda4c6b1e998df27d912f13f600f88d8b2ac23d774d3f3fb11cf58723d717f7d5a09bf933ee7572274f751cee76b533f75e864ae33798d23e0be87c0bb2d6b08e611d4d9efa95d5620b60ae3e298d1f3aa2ea280ca00a1fe4ab6eecbb3656eefb36dd043bef8611e7bc349b616b5c4d4a65ba76a6fc61ccf8e69c4ce6289edcf6385bb04f0c01e57519ff753ab98643dbaae3cd674e276c527fabdedac8673e7ff99cda0cb3ce3a20ebd6c30f9996ea47ee4fcc54fde7781fff1a2acbfd80bac8642e2af1b7d472e9f3be11f2b312c6a7fc0be3977ccb1b2bf1adca9ecac1dee73b157bfa31de1947b5ec3ffb93df17dcfec148cf9c8f3f43770afafed33e84069539f95ba1091ff2aa2fe3a8d278d783aef2f7b9adbc03dbf8c5f9afd65d4f67db8ffa7a5b6d7337ba066d86b6fc63f655f899e73b8fd58db9e195bd57327f6e9a90da715e718f35ade77559775bc8be5cf18c62a9c918d9ea45e778ea8b5360a6ad405ef6e1ba62beb65fae67ba36c393ffc8e3f7b27e4bbd538f6e29b5e23bdd8c5561b5fa3d05bbf4c9c71c8392aff9dbeef5633e5ccffd5ca49f3b77a90efd105d35ff28c631cfa655605644aae79b68198440d3109c1cfaaf4013ad477b83ba25edf88ded3bce6988e8cc76c6e77da502a8fb8a8e592670c6277b23ae89746cf3ed42b2aeb616f96d1cccdb7beb405d5b9f5c29af35a37e506645d95eb9b29d7cca7ebd2353b33c782efbc33e4a3d14f81f9b9c18ce4809b4f7aad7c19def09c57fd327bd4eb597eceed5be18517d68fd18a7906cf7e681b5babec1a3c8eda9ceaf62195d57852a3adb4a8f59a903b21cb5a6fdbdaecf1366d47d943d4b1ee54a7ee8b068ee87dc96b889ee66d7f5fed8dba84769b52f208ecd3c7107c356e5b4a3bd8c829aa7990cf6c2016cb9e55a3fad54a15fc9f9264639be4ef4d7b28b1ae653e08008ff8c52a49621d764b7a66239ee801f3e392df4db73357e593b2afd53d4efdb9176b74e2765136f0b59a44ad4ed3c4eddb04655641cc97613a3fae709ccf2b8691aa71cdabd8219fd838ef99e7def21ee4571f965ef8be6cf161b9cfb9184fced4ce283c42f2baec2531e4de0eac87fd26e7a2692363ddc505b0d9f2b1cce3d3df9fea43132bc60b59de8af14ab17768b97a6a67b23c0a70c847c37e16719b91eeef8ffe0e7684e6c30256541cbce715b900be4f159cb32adda703e599a807f59e74176cc2431185d446da43ce4b79ced3dc78eeb6a897f10ccf8146ffbce4446fccfb78b32b3c17b0e8a68db11ec91b6056abf366c4e4c8f5a4c74c10df205d0487240e6e4f866c4f91dfaa97f571eea70c177d19013fea45e2f1b0fa05e496177f8b2d663b861ac6c1ced807a75ce1a437dfc96559e19ad8277d216f5db2f9a0f5d4ae2f0c2785bc2f50fe38979a8655a98ce90bfeaa3e77e0a3628cef965823ecc35262393c5e4b7df1d6580eb55b452e61d35a07ab3e0f713eeecb763b1df436f03581bddc668b59e4947aa3019d07dca7ee25a7faf9a1a7c6d1f5b5a9f01a66cf024fdf6bafb77a09ed495e5f18fe95e437caaaf09663fc56e2bd6ca1ee649f4521f088eab82ff2bc92f954c4d35d467d920dc2de131b27efff041c248f1cd368d4871cb5159c19f79da803c9ebcdc1f782431ab9b5bc16e38ef45b94bef15b1acf26d97646444d9fda2fe834e3a94c5ff3efd941ae62bce1bd30c6f33e1fdf3c1a529bcd4aa20bfaa854fe2b853fceba92249e88f9f01ffa6d7feffe86b118ab986b968768fc0e762f7bcfb40a0ed920202256043aa5d7e2a7cab958462fe2bb66d59d782eefdf5e4688cdc1fbe1f8efec1b3cb03be5fd7c4f8a6fd77bea87fd6c3b2129c431c51874f9e57f37d77400dfd1f5dcf7cc1bdd58ff789b2c609d1aa167695802579a904db6d692237203fa8ccfdb1a6a5ace29e7f21d234f0ecbbdc1dc4f1d862b330e08b56b8af89ed543f449164d48bea5f78604f8bc8926cb24db4ece1972fb695c8385171ea78e7dccad50c154b371fc44593fba87e7749d668734e4bfcf26299701ea9f443df82eeaa74b99ecadb23820c9e059ec315d0784f42cae33eb7a307c66f6ceff3b639abe3eb68f878c5076362ee2842187a7dc5351d003bcf9ffea5887326eeef56f6914dc30e6d076cf8b1acb64eb86758f1a3e4ee7fba8dda2e9dd9d86d56249d96ff8611c7307e6747492fa53e7e4e5ef369ea5c4952f5c26f60a5ee848394b6ee067457d927a047ce6249ef59228d8d1fdb18c67709e2975582c5f2a7198626fa8e5d1e8d9a07258f3b81ff0900237fde8887dc0a3de3202dc486b194fce5905589837c069740adea781ebbb167547a2b625a173eb916316859b25b509a27be86366df85761eab77017fc0a3631ef6b2fa6e0539fe78429f47e8b7fa542607c13ea9c801f2fe0ca7219ddb37c46d6031025ee713e2f7b48d21f3c81ab0aee743ed8ca0f33257e685ca9d9287c679fec84e61d853e673ba6c0de37f0ace11b7773eb463f83afffdfbe05c8167b19ae280148fca5c21ae868249c7cfe2fffd1c89f358ca35c43d5b7b038dff356b032e025359cdb1215e86b431dbc6ffc5b95af1fe461647c57e86966f803dbcbeac9f341ee1928ff3d0c9d742c71e0744d492b01e061de38bcb05b3c7b4b96bc7e06ac7d9c49c7b1a97bd39effd7fc0ba71c07e1ed824a9ed1b72f31768cf63dd6499aded6f693c117ddaacc6baccade3ed654b7cd6bb09b5b64acc107cd76410d679159e0aef3a5c70ced09ebb48e2e0771b7e149e01b37302780ce2db37990598e127c97d28eacbb7cb38a076a23a372ab780165b33e670a770ca1bf309753592c71feb37255f12c617d567232ee69863cd36f033b8fc42dc0239d5c45ed763168db894320e9157d3eb54a8dc3fd5eab34d2e50adeefc211bd8433d06a7d8e0262e0afced59e13c86b8eb2e8927db2262e783de73aac5bc1abd290ff73c0f58e65521ef7d38ac96f3c3efb67e10fa2ee841057b441deb71ef3b87d5b3d683d2f8de57eac32bd8914c667cce854065d9cc61f4b88cbea9f37a637cee2833cc7779fec6e748eff133f74898414df723ebddc63c27bc479daf0e99de69f76a7d2b9a0fa65c73f8dd8efbabae7b8b7e14bde58d7e20a8f7461e09f7b61c04cedb827fcb91f570871d58c31a666f3f5b97f0dd1dbdc8ea1e19e13c1e4ecabcb7dd03b2847d2dee6d09b5e7c5cde865b91516811e85275caf6e8c3d56abf9fcb06fc9efc8fda873ee8af7acf32a2c97371343c6a5bed3b58103857fe3dfb643593f5ce2f6fefd8f9e5d7ffdd917b6a70ed7bf784f13cbea4bef11ffaeffe49df4ec4ce2f0507cb2163c26f3a49db7ec9ded1802adef6bc5ee33e57743aa05e2d09d0aa7e4f8058d3319f0ff053e3be35341bce13889488fda068547a04613b061154e4d89f78fdcdba935aa019700722f2ee4867d6f4252d16b4daf039e3e5603a0f26b0f73bfc95bfd9ad5d08b3d48e7057dc67b114f6aaa573395e3bba6e71aecc1833f2ec8c4029c5492462f583bea858724def09e830f7841193fc6073641075604c4d7d2e85abecd01076993f19a63dd973bc17f6bf62cf2ae40cf5cf4b2c2fc4558825c6cc31ed686a5fbbc0aab6cb05a0535f57324bf07bd273173b36c5d015bdefabecae290fa2c751a05fd7c1b303c529b60cea28dab4bf73fe93ccfa3f4057a14a3616fea401d8d902913c3e6438c0b619b1dc4d992f726436ef34596387b3ec027a1fab3bdbf8eedb97ebe9dd073fff016523f65b8cfaac20ee1be665ea03146c0db68c7371167e0363c3de177b4e2c2e03cf6546c81cef7b1317f74ce7d76efc7dfdb85bd2cc6d96f918126ffdac7e734f797af3fa80d1f52bfbbd7c48a6cd644405fc61e72b11b755f1831bcce339fad07f208dd382e00bcbf2e15fbf71eced08f74e38fda1e35f89adb6b0c2abd7f6018e656f8920d82de6b14de72cbdda6f3269eaee09219cfa09638898a12f6bb63af96511f62810b9603cb2df82652503d347e96baabc13dce784ebd09e1bd256c1d48ea40ed1670f525737b9046feaaa03ada0a6ba3e683eaafc1d203fc48e99b6eed733e9805691cdc92a82089631fd3c8a57aff9659509f805ccc926b97caf96619a5551a4f804b8471df94d9ba687259f2feaa71f87fb8fbd7264595ad5f1cfd2efd76cdff9a80657731df292508a2a5a0dc4e9c7842c00204d42ebce18ee7bb9fc89199905caceeb9d6b3f6d9fffda2a34b0532c91c39eee337ca00fcb67dd857958d756baeef28d792515cdbd188d6c43294499c6dfa04a308eb62cd676db2c7ca590cfd7c710c72f1e20fac472f5676f319575f31967eca67c160117b02d89795ffc3178667ba6e7de7ae9eb778f1eb777ae2b7ee3bb3cdbd319dc53818641757884b5f185e4382d3df8c993678531f7fadfd378af80827d5bb1d1d4983fe5a8ea4feece296fdea9dc4c29b88976abd7be753d556fe726f9e61c4b3f5cb8dfe3a3827a0f0e5d69ad950a70f761ac16ce9c1c5825a407aa61e185bde1230162ee1498e1a41cf684aabcaa8a26f749eaab5b04791e778e85c7c4732b695c775d5cbd14f5589b9703a7ebc27af570fc6b943ac54cff9eb0e6a9927177fa01d74c1bae89cb15c9be2608bf8d72068ed99d5e13db3647c0ca7c60d3d3b1c8403fd101e5dc71878e5f01ae4c11574bfc1fc1a0a56a2dbf22d98ceaf952e24f1037fa07dea02cffb53e31428686fc5bd2ff0e7a01c1e43852f546151fa83c5c350c43db1bbabb50e3a58d57086aa3382f831d4f860acdeb61f2425fe8385eb1847fda0a175bffa88c74a05a2c9b489ebcb9cd194ecc9a4714ed9180be6b14fce1ac19082fdd60f8b6be8687b5a9358c789bbf844b52e41fda7e41939e2db93aa863a181825e2db5fe1e8aad298cc7198ba8e11eb481f55ac97b5e01e2bdab2901cf54e3b29c5cf7e1b3dc568433237b4879a97616c01ffb03ace84c6fc2e81703fb9c2a6e7f9555efda98b3fd0a337747bbe63bc868a57c8a937c163af950ce9be17cf79d213b79605b1a71832acc9e40eba839f5b90df57cf17eaa2faf6bfa0fa5047d6534c965f8c1d4e8dd815623cbe14072acbef9e8ffb4bacc7277e9536bd3eb5e55af36cc9cbb87bd6a41a67156ac8925317378e9113bfe4af35ef7943cff573abf82d1e4b7c2af49eda87d87d5ec79fa12cd07a407f7490ff6f9386ec6dc70109fffd4a373832fee2c6b9eb93796ddbe8a9cecef4d1f89fddeff6fbab1dd95de18efe7ddd96e4fedf8b4d6ec5de345b233ddedbc0984836ff8e7e8ffdaa53e38cf31b8cab5b32fef28945fbce7570ba3c01f84127b6d388ebd2777b6e97bfe15c7ca4038f5e698ed9321967942edf914d3d853e7fe81d216fcab3c93b563440fbaf003e2ce9db2a3f76f670bf9d6a573f17f940b80f5545845ee65b076338a0b3e139503fd0c38b71dd75d5f316ad0df11bebc978e2233dbb845a7d3e28c7f7d0b6788c3d67dd68de01b29ff5646cc21ada1aadc980f8a79f8cf900b05970df536d308fdcdcca68cdb367af3af8c955dc82621ea0f556c4bd9ed31caa6abf904e48f3d77af12655a9c2b3406712dd9fee1c8c6349fb95b7f3f0bfd679bfb0dd9ede43ec016978f50123d118923e5cc06f883ed0c1d86b9eb198f3d1f9caadb33ff0b295109f7c6575a46bd42b079befffe5181f7df793315d677cf3ec61faab31ffd65966f3b026ff1b6df446fe57dcd6410af56d54a85ff2cfae1c427aad69bb115b8f427a3cd53809243781c947607b9b466cce9f2e8d1f5ba875a2fd2833a6c75b331fce83deaeb78baadc4f61beb934638432172af27e2b1b509fb2a6fda7f2300b6526676923e610bfadea3f8707cf3156f5fcaca59754b1da9ace5bcfa7ef6829af105f663e5f9aeb3efab379efb17a7736b68bfbc28ad08713f753f6aebe70a7fd75333d0f2e4c6fd2937748bb39198d3e8ef18f0f7358f7ba2c29ae6aadaf04b90818104c7f89bacf25e0172c904c0bfbb00e61bec8e69a0caf9eb2b96c0fc0eb727fa065eadbe8f2dec4beadcec21a308c8c932b9cb5ae6f256af4c66f61f63df5fbf4db90d07f05ea42cccde63e27b80c502778d0aee16091058745cbfff137ec5656cf9e729107351e2d5d3bedd1a79ecfb5e12f0a901c12e22cc8378db3d6aa4fa0767235d715f0f961e6f7f3991f7d7d9f499dc1d5c57920a05ff7ca66eb9660dc12d02968cd9d4cd706e715617e8968e68b77d50c7324bc1ca5f5bbdc4f277f43ffe97da7163f447a89827b06df5388d7ff920658de633ca5d5ca06cbba7ca29b4b4372cdd8ef6a3942ed9c8d5f0e49be649bf7777dd6183fa793fbfca44671f4a7da9337b37c9237b32c490c89e159e86f3c465ae5b9205e10207969623cead059809fb2f61143de7f12e4e22010ac926256d4bfa377ebcf2527f9a7381f5459c4a42f06f6c14ec19f027d2819ac995300d824d83ec03d0930d65da8403d2ce002798ef6a0df070303f0474219e78b79840f138ce7aae7a49e8ca2d5c122f85d75bc2b1c687100f97004d304d71251ecbc13c6d1a3bdf0339afb3608203e89f4da2e3e91aa2c105f453ce0e40a119a5316082f87b0ead9bd895c7b38acde7b3abfa8d258c33979d985e020c7642c562f493c7b11e33c23344f11cf53b11ed0731df72f823e875bfb257205ab0c710febcccf43441b2067e81eba828cee4d1b3acedb99627aec2147d136de5af99fdddc68e8d32cf3fed4587b8eb1d9da3cc4c29ed60151bc76297c90eb712eab12c741d5171b74ef8aa6b5b2c2d360d703fd1e87f69d5bb5f3c79b3dcf1a758e868364b17ad48476eefcf8e8d29c6545cb3cfb25aa63cf41555bddcc0d6b8e536368357d38956faba517c1f99542e69d8267b62b3e3f72a7cea0b1867f27bed8bbffd8eeecdbcf2758a9680c82d32dc55ddbf2f9bcabbda3e337e65f3fffd76bdaa981c03c5413ea7dd29ec440e91a74e807e989adeffe95b5ed7b6e95033169cdbba77f0ed551281ee7acc7b7f1ef8d85f395111dcfac661d5570b098bce8380fed1796d671fcff090da1f56fead29df5bfea02a94705dc5fef84e402ae1bc17869ae3d4476c4299c5aa47fffa23747b22f075c9746b759c3ceab7575a43335e7361eb8a48fbeeb007619a965d6c86ff3c807dd00c9aa5a26b3eb307b46e780a7d27b9e003b48b57bef3bd15cdbc6774ff6bd737e9bf73dc3746ff00de069c92d9ab3b9edd6336c16a20f225bcf7e015d173dcf17f8cccdc57467623e8af449cf096b7cdb16efc3391bc3ab3a492f86f912f9b69c7aca10e9ddfdfbdcbfc6bdfb4d79123a2f6decef2e3fa9ed220bbf0bb289e380c851d31cca7a82f1e7708e21f593e0f724b22a0b73b9407a4520bcd27b525fb01e10cf9d1a25ae77e9cff1a76b89f3aeacb4aad556eec37e9c63829bd24b03d45e046c9c42edd9db165f397a66f6cc2748f2f3e587aac8893ff0aa73b155ac4be52b33c702d2cb483fe79cee29c1ea6bd4f263ff5da5f355f50638b73404bd552b6fd156116fdec1029c20c0a353aadef914fb18e95c5716e773eb54989c54e6b35886388fa727dfed173446ebde709e3df88a5e0af56dd413a760fd2e435c9f9ab7f3cddaf22a3ebb8ef6d98ce534f96b0f6f179766a736a7c7d617092efeadf639d8384f02d17620c817f0ff38064ffbf43fe1179d3a20df96c1defd8acf76eafaa6614c74e138cce593af004e33e605e8b7725c00e634ae9526b507ac6f24fad59a3cd7090197457ea6d7629edbada76ceb1ecfee8f7af6e319effd5b6bd9976385f14131af827388714c135f3086448f7eb8032d0b0193363c854ad49679c0cffcbce25567d736525adbfa15af69afeb4ce1e3203f6741d2c0dbaa71c2dabca5579e54fcc6c1ef83ec34b9f4708f7d4d4f3717c27770ee6585330cef9a78b605b906ae0d7eb7875fd27b8cab4764fb7f9a07b7d785d64b62eca05bd4dde3d1afd7eaff663edc974f09fd99112d6fa230b7ca40407adf1cfcce844e493eac71f2722fc3f916e332b4ef5950621f4697e7788fa6eed1135f62cee693f3dd960115cffea50cc8b0dd88f33965de732c88e5d83cf847302ec4548bb7f6107c2f8d5c24628bd35cde8d6365381f93f861e0b3a5f9b991ed24dcbb9ed48136f2ee20c69559b7da875b34ec73f0234a721a209e8cf3845f3fa4515ce5b4c878dedd783459b77d976f3d7d2756beb59e5fd79e74f82ec4f4882f8de6701af8bbe1de17867bd7591df17a6cd8de42d4bfdb9a371ecfb487a9e744d1d21c9de73dbc17d7fbfc726e78dd32b2462d1d9ad041c36fd1babe8d2bc6ec434f7c09f39d1e3d1dd7bab0f65fcb86eba303264e6294ae9d61dcedbe5efbf8f9144790ec4795e352fb7a20feb63936f00a6b7f406bef90bd82d7e1fdd97e57f89dd56f83ad92159e393aceca33be6e83f37cd4b7164e629367f7d2dcd39e86c8c66a5d6b0f58ba8943fda0f10d7fb2d463bfb7f8c2afe90fff43ef017b8869ba81d9a8367d246dfed08da1b6f6b65dab87e8a423d719ec040657b08a3d618c29644392fa3f36360d36078befd9aceb69e249b29811cdbe46b336bfe8af53fb87fa36e9e8bedd5ab5095babc6133df80bcc1ed6ff86e6b8f0b7e6e8acbec9a14afaedd1b9f4f4da11bbe793f091c3980f84e888d7006ad0890d8bd767c6c473fbf90ff6afcc695e6fcd67bb75a4cdf3dfe43bcd38385bb32ebc4be3626b9f33e28f4fb736b25f005f88f61678b4789a162ad699fa11089e5bd3070b3db7d0ef2416be6fff56e34b92fba9cf179eddc2af2843cc873a79eb8ccff91494688e2f17825f52e962554f13c06fac315398dc786eeb18181b490aabf887f6403299c657e7972a1695b0b512ec19b12e21fc766e3f1fedb5c0e801f53d072fc3b527e8fd4607ed81eb7aa10fcf348d681e24e9ab28f8429692be122f8144b0d89d45639eac2e55d5f6b67093fc5cbc06d89f8df32298fb094edcc517c45bfb3d3cc598436e963dc4eba00caffe60d45a079cebf3e419572f779ffd567a367f0d73ebd76320b9628b82b7910b9fc975c431aabe39591463bd6f5c44f7904fc2e45afefa5a61b8f736f5d898d789d780609332f714d5fbe03d69d031f43231d36857d67686cd735197076b273f372a1dabf71935c6724fdfa7e8c0cc29d9dac394d446507c0806d7757568e0bcb0e76010a6bdf949ccfcb5f2f54072fb98f92f8e9e92955df9619c82e46fcd7dbf857b208608312436f64ee347ad7de37dbbaafb69d61230f39ebf152467482dd4e4f5e70cf4a163e42b62ea3a10f7784376952f70d1ea609d7c657552dfee903f1e3c8e575db85f3d457e6c25a4a772d725b99f5cfb5d55c6852f18712044b44f511ce4d977c0f020f1d4a5754bfcc3f8ec486aa4dbaf919e8811e273b304d77f077976d84e57d11678bb365427de35b4211713d613d79688b8af0db6dfcaadadf1a122a2f3f1ba9d1a5c309d7fd74bf127d23782438a73e71f60a3fd54652d037b08fc09509359aa135eb3404e2c32ffb0c8be7a678ce53f7c786bf2bc89869fa5881755c6cf035ca11ce7a3cccd97177d3f8f9690e33f42f38278787058ecfd81966d0f733c3feeaead38eb7dc36dfed1b71e666e21fe315427f263ab9c333f9791ed36a9732a17853f80fcc48b278d351ff1de8171f2041963e3c85a466808ad53ae4eac74eb1857927bf053273273961c23cb59402f8f80f6a661f10ef3515ddb4062ed8ea4d5bd550e8b404d2896b3f1d0c9b3c1669c78d63a5d7c189666ae79edc39a58ae05b65e28efa663248b615c9686414e65f78b5e1e7faa32ae23029f7c6ee17aa37c51d9cb688cad2df241398ed607ebece656e9421f568c0f19427cfa78a536e73a95df016f421a5d6bcce0d79fb3645ce56ea903e3ba2172caadfaaead5ae3a3fd12a98dfbd8d97ce20bf78d6b0720f76ca1eabfb526bf857def152aaf916fe3f818a2518ff49bf2f315b261e2ad4d7aa3088011f5081479ef998db14bcf4273e5d0b85727bb0741797e75e4fb6356aeaede93313dc5e2e05d152df620172ebc405daa62bdb8b691b942067ed75a5e633cfed67b9750b793cba909f60b17e9fcd0d7cd73389fc6fe5ce286aec9e78e59a4ba90b26b6dd5fda68c2c54609d10ff8e8343fa9b636617d7c1fd2375fee5e666c56d6e719f9a24d25c2e96ae39bf1ca79e63808fc81716dcefbedb9a5c0b6bbb1f5fedc7e8bce0bbe3003f9caeceb82f92c56d1511eb357086877bdccb2843dff321d0bb91050af08e8b3b48715dd154bbfa03236a9c1fc52b3ddb5ab98ef64076228e918de3e0b040f617c7cec1a8f614ddb3216783f8a8d99a255c07fe0efda8f2d3a367bc6995a3638ebb78896f10f7a73eb7431327b1890f549d29ecdfa6389a0d6c9cdf7e07c0eff1fad6670dd83fb47735c955f01537c2b1747a16031897e42a55788c7a4a7fc7b64935e71a33a84bbba44f1fcb13bec2c16acc19f619e32c06b99519745da7f7d7c6fba0cf2cbe8a14b67a5307a73a0f8d9d1be4ba25a19d15a1c49ffca4eee3f9050fa3b611ce49457a459dabcae6d1d6e3115d80396388575efda997511c2cf4bb2d8ceb7c50de883d611cce6ad998b9021feb76764172cacf717e1dd456e2fab7bd6f4fcef3bd5bea8fe032975ef78160ed75bb776e975011a15f15b227894cbd7a757fcd0bfeaef3ce9b3a5f15ea18497f276cb3e9875a1ed4b43a967ebdbe444629f1351036f8fc573100a4df8e2fb55f9cea37549f8aa30a1bbc25c3608d1c2f5bdb32f0dcb52d735b6978769da8c29daeafc92eec355bfba5b37f86607154ee43df2807f13cbeeadde7813f864f70fda31bf97656f84af6f0ecc5d5cf8d2a9f6dabc802d2fb7c45be61febe38a17520fb00cfb7ece169278d915e023183b9399eb9f690c7bc7c325c3c46d1fc6df49dfc8b2ccb789be17ae19fe439238a1b4b3ffb3696fb6bc18d1c9ee8a7646cf54dbd2ca4971bbdd61564ceb3c32b9233862273944657d4177c98473b01e9d65a161cb8684362ab7deba3535d186426e4eab2f3fcd02107d22a670dac4f7c2fb5f56709f815910e75f595cdc557c4c34c7ebdf8b93840babc8e3136ce01f1cbce92b1a84be8d9c36b5856b5793f21f6f0c6fd439ddcaf1eeebb99417f195c2b82cec0796bdf91dd96b902eeb90b710e45bc6e6b3acd70be07f80d213f30cc694fdf97f6d9b9f883b6ddd683158b79dd05d6da1ca27b8e2dbccd8a0e57041b1c7a6d2a46e6e6486f06dec2fa6a48bebe81e86c48713eb6188703db61c228c2fdd56e916b7b108f75a761bc750c6a7774d7e209ed12fa2f5c1c7b83fe6d749d9ecc6fe0e23e883fc9fa7d7af6eaa2cab44fad866c9b3dd4c63336a32b88e74a4700fd00f006f69e7daff900e6b1f47b32065e07d091319d45cd7d1b3e887d809e99fb53ebb155468c8e0218880c46e17d58cd1b6a23ac33a5f3cd54bb8639e47746385f53bc0468ad15e8e30a3df6429c3b9a91fe7dd57ed47d32a187025d17d07bd0b5645f0acf96890d8fe62c2239c681df0febc599a78419c397a250904fa132c2e712fc842f187b41c17be2e2bc5c4223388f7d96d09c1e666f1b7e5ca81b11b6b641e51a9c7d4fb1127f80de07646cdddf3119af435b7b788ecca3fbc91890c782f8c6afee67e2775836e4d623b4ef1cf39e648ee49d64bc1f5b7b28f8c282e485b33c72f473960eafa1b2f98e742ad3762357b967ae6d9cfc3c8c083d30f605fa4ebc615b6e1e415f6005f73a70a51b4b570ff26ed57a923ecc50a3f6c53ed5711d45bcf8d3147cc35f9e234273a4b64ef08533fafd0c751e48ded88091ba47672a7434d23f12f67de0da19e7b238c9f0ac13b1ddb39cb906d146345746c4c750d31ffd0dc71aac48976a5a6eae3b5c977ab69705078de47b1c2bfe53d7fc414f0b44a7fb6d798b0221433c2826757ccdfc066554f3813a8e01b2d77d1b478df7911799678e7d439185adbd8a568258025e99f27a407c3438182757b8678e1933fe8dc5232879c8fbde0ee6d0075f17aa7d406b79c639cf0687f793cf76d371e1dad037fbec39718cf19ce6d719919f18679cf4e09cce237fe0418d22a6fb2c67ed2017c90601f2ce22a71c323cb1da870ffd003e332e44742bfd3bf27f74999b4fe47fc57fa95f677c731d2df6cdf10fe637e25f9b13bec29e5b6cbf52faadf401649fe5f2599d9e695f235195cf4073cbf53824b2e0573ad595f2f69ee7123bca40cfbd0653cce797ce59744cdccbbfe2cf75bfe74bb57e8a5cba3617ed040d6abd5c7bd8788e9e535e118884fe43aaab003ea790e514238cc8dd2be55d8c0fe3290ff8c53a31f3e0e39d0c72bb1a1fef011fef94ec1cda5c44fa4fd76713d1977d2ffc4148797742fac3c73bbb815376a2350b5446fff6fa1c201e59203eb1748c32b47f7f7d589f8e671b07cfa4d86a1b468655f448ecbde1439d9e197f5b572fc57dc19fe924d5f3b21dd22515dc4b9eea5d7af91aad1cef8af8872b888f50413ac022f69505ef2b15061c895b93b9925e05484f829a0d07e7e479f99ddfd1f92b2723b4ad7267c614bbe4a4e7d48e85fb0e5897ade73d63c6f53668cf700f81f97a73a3b14576de26910daa826cf961bab6910c1ad1fcb2bd8ff8ad00b5a2159fc13e9f05ef1e1659e05818bf48900b7f4aedc3f1cf0df6231f3d9bd47d49e9c5175ea0ee626b2f3eb5f2d6e45d665c8f8fe6fb00ecb45ac797c24ab6680fd2dfcb243a9c348ab4414d53e87772eef0ef53aed2f3c9f3ae7a3996fdc3820ff24de42a1ae40baf15f1d0d677689d3ad583e7e698f0182c4f9a3a0960183ee8f92418b80c4d8d44557ebdd4f76c8e6e2e73ae10cf7d2128d437959f4bb768578e0ebe2dbf5848379382efeadbe4866cb90fb3b26148edb9c807c0a3694c1de3836cc8f73329b80603a3f46cf9ac95d5bdd5ded0fb67e610d91e87da471d14cd7977e96625c8e89d8b1edda5a1a3f7e9585fd0f5cd1fe07e2cdd390c89de4e6b7bc19e6fd50355b404dfeb12d65374695cf19e56df40d00b57802bc9f6f9bac7c1c0809ed52cfe57bd27ccb5532d0b0656d1fc0e748ed2b4576c6f313c163a27908bb6e9fc46cfa245fb51bf8d1ad754ba7d9dc3c1fe7e769db8996f6536e6549d8f6e7e4fbba606cb6bf5ab3a9a664c6eb373c619adad3232eb7dc58bf226d3969b4cdc1856bc61fb37a9645f30c6abf84ee4f8116c1109f7559ebf317d3c94ec417d8ab35acf6ed4a9d6727324aad224aee5f7b05ab73a1f06e41fb93644eb06189e1aae3da968a5713dc851f039d6eb5c8e2fc8460c736be13ad1917d1766fceaf9b8cf23f0b501fe3cface3cfb0793f35bc9b8a5393a309f0fb88eb7b63596e52856edeaf385bdf79db5fd1ef5fa3bb89f5503931064f806f6fd487a9f3fcfdf51e4473801dcdda295db7b841ed4980681a6a197fb83c923c3676bdc78968cf1ed96e698a97b5d317b8bc62373b4aa1ef04cff77f61cd278eebccafb005f2f27975ed9c59065fc2cf8feb7afd6a9b20165a49be11ca9464d16922ba6e72cb2501ac7fe218ddc6a7f8d8a2fe8cdb5d088ac81dc2b7c26b23383fd4670afe592e63f631f9aca62a7756cc76a8c9a1775ea05498e576938f16deb6880b14bcee08f266e04d111882d5dfb18acd4136a3c87ba8ea2d27fd119a1b214f4af6acdde8e959dcef4ce80776ed4a1e5d699e6ae61de1bc3be37727d30562a7a973560526c605da1df5db59ee6e84cd61bbec73cb6d98f0aaeb3b0ddb366690ef74803bad3cd3e5e7d6fd72c61ff031a1be63c3a3f9b1f8b9b50af5fc59ffe5495610cfd5b36fcc94f621a4b2d589ea493b3b011322493e7ecfc80c7fc0e6d4f17477f60155ef5ceff07ae730323edf5aa4eac13f19311cce4ec416834df3ada83f616d4a5718ce829cc33aeaa4f1b18d7603a86d839c48a85cd01744152e7c5d27fd7e6b8d15ab021e4fa90f527f508075f18662ae0679f07aea3a541d91c239c829f16f111f68c9f42267fa06f4cf0310b9b4388ec0525e36adc44a29728d01fe5bc75565d9a92e2b6fe81eb131b18db209f8eddfd815a8668b9a7f4dceee51677e80fc69146af185f0f7a225772534bdcaf68e01f44c61299d9e9e9daf465db7c16a4d64ba064a567b7eace2b7a25b967d477cee49452bf6a755e087f6af530ade386b5cfaf2103ba79b9952ce8f4bfaa6b1fe8fc33c89f6ae1feb4dfad40e7d8b7496e380f679fcaead3573cf4d99cdb3dd1e83c583c8936d6cd5a1816b56d8e314842f43ff6ff33bac12252a7e1716b2f8eaac267ae3d7c303ee5ba76923dcf4dfb3b0eb1ce8bcef1b5f60f5579f28ccc835834a3cb37f3e66bbedaabe77473e9ff051de5efe9110bdc3fb5891f4030bb916cd7348ff40f62f7a245939d3ab2fadea7efd4d135e6752d38b37e48876af3f0eabb0dc61621fc1ecfb5c947be7c77af089dc5b151f7c0faef6b3a145b6b8d74892a97a8a1db72a0871c49ccefcbb3c0daebcd39d4f513246f133dabd5ab3b7b103e41ed2c829d45d775c3d0d4f0c9ba3271924773ed2ddcd3492478cf2dfd177c0b5d1db179264e0187691ce94b2d7a69d397f8357d35f6a5d2f90c90451d5972eaed6b5ce1c2527da60707a01c577d871abe8203f687b9c033c323e205be20de5a7d08fe26ff049ed9aed9aa783b8d9380efbafccd77aceb30fee6fafe9b73afc7adfb7477f4e997e8890f05ea55c9df3f7aaec3714e6c4bc1796df79665cf515d1ff2729d25344eb4387af6e233c07d29489f7c2baa74b42ab7e51efb79c8030629c63862735b06e120b878f6e2ec9afc09fa7fe6434c1f183fbbf468fecb5a15e6c9eb40df8faeea6091b9250fdfd35a51ddaec7d11d18e741632f1017a2b93aca08e94a04b70dd724401fd83a9ef1d0a5ba0e42c7987fd94eb1d0dfc40f47f306a2dbcc1e15345e88fbaad23c99e8a0955984e740d7acea454c3f9f3decd75f7ac9f8a3f2af839eb589e6d2cb5ddf8fe9b57bd731324f10cb9d399ebbf6f0d0f1c7972791e6ea91180aceeb31715c1c7a6597bdbef3c41744c4032e1f26d269c8f7558cb3678f01ff9be618dd681d5e1d0ffc65ee07e3f3999ec54e9e06d45b7c718f5cdc756954ead2e8e1547e53c00e1797099e37ebd374cae129e0e87c63c80ff107b4c61ffb3c97eb17ec3763f74c7ebd6c9d05cdcb2335269df1b03fceeaf55bb2e392fda8fa6f829f17d7bc805ca01860f8ba752b57449ac4780f36a063e35e659b4e0edfc7f4563d73698e0e8c7c2439fe7c95f34af3aa813606735cd74f6888f8ca697cecec2bd9a767be44ab9aae7a7e075a617b5046b0660aa1637c568ea4077c958fc8e611a3f3ea481a3d83819afc3bf1cdd565fe24bf698de6c2b7636dc5cf8ffafd205648d73c545e2317f7d7af6361759ce9879b8b57a8c16cc69f304dd9a3df58db7fef1cade119f18f8fbf7b1e26f713d26decc7a450dfd4427d5b847ff73c92b19f9e2b365ef3c5fd50d7d8199be09457f9550d7cb2ce33da67ac9269aa2993df705f4d9ab74bf7b7758eea7eea6c0e16ecfff901fa9842e8c426715501e9cf8b939767b4562056952abf3d52a7e3726bf327dcaf17fa103663cf55dc97f68ca77b4f308d53315765b19225189f75c4e9fbd1652ed36b917e651dfc8136542720133bb1fbd981abde19f76121320362ea58aed7316836ef8f8df7d6dfbb9836a2de353169eeffada0985a2ed94f57fa3aee0a34ca2f86bead5d7d2926eb78bb6c1d037a3ef903f577f937bdf7a80972e296c197f4a9f3cdda39f67eb26e3d797c2dde4d786f30c8ce6e2e165ac9f6328d3b67af7a2ee48ad3fcda3aaf96e24d54d7bd71a23a256b231bb15763e8b5e85584fac0703a67790fd207e23afff1ff1cfecad46ff5e9294c1e444d7fcd5cce5fd214e77395fef6d0f75d1a9a972fe5f37b621a03baac37d9bbc37be3b56cc91d9ef56665fa7a5e2ee4262db23124d31e227bfa144ed3ce1ceadfb226cf3c18575ac733930234ff4377ecf9659ef5ea22ec7bb4f9640bcb90f0045ccb4073711a36674dfbf8daa65d42ecd5fafcd2f1589f48c59bd7a9fcde7b7f577762efc7f9de03dceb95adc5203475213aeb12b0575bba90faf6da735d04b10bf23deb6b2c48ed3d3b278c8b92a4d1b21c1de93c66e5e8a09569f49e10dc947d2336dabfced204ad33cdcdff729db1ef647463e61fbd27a3cfc69c89fdc8cc9bacdfb0f49c71e1da8b6c36d5320b8d67de22ade289a44f81b39068bdd1d26cd614e907e8db55f1a2b6ed385398faa3e9fd559d6a998974e88111fbd290f31ca4f3e3779999554ff63fbbb53c74cf870fa83134a37266de9a732b4725daaff7bab7fb77558a1b7557edf9a275c3756ec7683620f360f46252a799e975ff71826949f20f68bd68de8f8d1be4d63db4b3d233a3839e88c5d656af5bc58a0382334ab1790dc1ba788e1693fe904375b2b87ab9977916c5a01bddf57d04b27dd6db0f0bef9509cfbeb1789067f89cdfaffe402d5425ce5c677cf20e29fdfbe60f46d5dfc8fed7a5f1d1835e47d6638bde45ba4530e7a99605ca3d76a15f4c760904b10c01ef28bbe8d2f8e22b72e909d603be3b2cced04fc15970ba34e60305fa0be0fa7e69fc1108591e2ac635145e0a55161f5bdbe3426754f9d2c87cd15ae3fe46b957f88258ead218eac6eaeff913e00b64d477fd0afc519d502cc615e9c526975b6701bde11a3c10e7bcf18150e176d35acf88c1737cf39d51bb07c98b2e8d871d6c9d69142d5bdfb3e7415f4f7afcb5c0df5ed4b79768673ef167bff5dc57f9ec4637ca2f092610aca15ee2deab26e9b7a12a804111ed30de31d4a5abca84fa2c3e3ddbba01fef17481e817ebad83058ff617fa76823f87fe86c7c06b9de5ea34a2f984b8a705c6f38a758c179e058715a9a12039be53ede409319bb75d82ef4fe1afc16015ed1acf27390fb94c7b3747bef21acd947a8fe7524af261e3932ac515369caa4cd87ec1e0c7f2aabaa2fbc9253dc1c02f6456f4f0f06cb9c438d6d4b70bf293e4a90c1ffe40e3da7d575cf316ed10ed2bafe83c9d7469bcf79d515746d959fadec4012a7c649b112c9716edc06fb8feb6976ef6409b6b2e22fe8806fdb8027f6be1c39e83b727f847cafdaabe017e64e3194f309d0bbfa438635a06b80b097ff1ec10c7b0cda0cf7f09f26eaba44fe70bbf99e3b8ee2fde8393877187aaf96e95b48987a2f0278ff83311cf98e1f5fd447b32334757f5ad89e585df1df14938d3b12df0274fe64e7d6ba14ae32360cca031581cdf67f85330470ef61c7a9e377a8df39d776362b8be630e1f81023dc7aafc164463b670bfea982ecee8f90e838bb5935244772f550ed6ba8737ca804b1321dbc937c757ff806c3dc4ff47906bb0b5875c852184cf26c8031c53831ad34bd8772e4046e067b77825c15fb991316f40971dde097bf0f41cec090f66701ff95b0f8d91b18620cb6698e79ddebbf12756061d090e0de9b7827dc1adfef8850af3a3316a5293856314576c1f8c57fe6044f3052af947f9ae2f7839bb9e802d07b59c15161bf025ac1f40dc350ef22cf60f558c9f914d95ec7ebad6ed35c639aa10d7cb20af84ae450ef3fb4fec05c4553c921f43d6f81228e28dc54ec3e3b5d7bc5f0e62fac1b13574bdfd1837f098f018993f97b92a2fcdabe224f81a67b0387907830fa47aade61259af06b67017f7bb3b8f6a3dbf90cf95dd7a42facf57b27aa38837228fd9fae5acc6535b4581005895d02f97e8b15486c79eb2aa6a68c2720ce361ff0df85c238bf4cc0d4a521fa458b99767fb2de46d43bde085a12d2433735fa86a04929dc9e8865284780de4bbb802ba4fc3b9344886437e0dd486dd100dd35a37e8bf45fb802bde69a7e0fa41c88b07ba7f89d6b9c855bd86a64cecc2626d0bc86139bb4e1ab9f92622ba6749eb9df0fe4cd0fbc621c5b8c0f8590f15727216489f805a79e8b3a088b85f25edbf9b8b7ca864170fe2d268ade75138d04ee1d440ef100725f8d0b0fea24c22a88d54325a8f8de8e4e62bf29ef405fbde8ccde27d41fa5e4dafcd1e91357dc15ed4761a3d27127ec68cd01af842f13ee3fda1e377fa5135ef7fa6a334e8bc8dcd86750a11fc2ccaad257b31df68e9cecfcf06e63d20f3e12c5ac5cd61faad54dfc17b34f9d46f9e633666da79a75ef938f1627cb6089616ae098e591b097a3f29f72be0ee227b4d9950f9770dbe948df1973cfb997c04de2d8ba567bbff093e4d31f7803f537d99e0249fabf5857da0734ca3a534bab5c6fb08720bb0256ca1e6cf94d6ea7b47227e170ff1e982e5e5d0eb76a0655e56dc1d5657aa6dc496ac6664723feffd25cfb5a65aec1f16b93fd0903e75427b8f7420ec17a57a5176d1c919d4b1fdb4ec93593827e4c9fe2b59be7b7e1e7bcfe1d6bc458e90221bf927b29bd1dee8649de9ff7374cd80e4224de705ac2dc4cf8cc7fc3f7176311dded15ef5fb22a89cade674aff1ef2a5a813afa19cec5f9d826b806823c1bce87af88d7a03a1b0c5e64392a67eb229a4ba3d7a54969ee35728423b2bdc9e723fe9ce0cfefe5e8a6beddc4eaf9251ab3f824d79d7533fbd15837aa3fcae24f34169be752e9e8fdeb2ccecc213aebc5cec418c233f0b301d65f033396591ff4be3ec3f7f0dac8e209e32f211ab86780a748d6beb68f0a441ff0de8836ded17b99c5673b1fa83a577bd9775a1896cc3c2e58aec758379e5a37565e501aedc32eef5b932fcf9c334ea17729e93de80f1627e293a96afc3c2113bc4a96c39963f4e321abcfb03e9dbac721d2412a8c6f4b00bcb4062e01963d5b9c9f08795ebe2da65bdb3b317d406b9d7b6add3ca8b5ab64d6dfe7e1483e3cfe13f2747ca539679827d5fdb009bf6ef9a9f0f5c80ed7d72d4cd52fb09e89cc4dfd41c8f02ea873b9f98379871f3374d1e5df3087a6bc7e228f4f90530d7bf612d57ec6ba5f2de92513abe067941f9ed367330d0bd7d10e6093b57d37744eca0b7d8776be208ca5d7b90988579dda3cb9e5d7f91ff1cdb03506950d457a9123dee027691bdf9bce91f57df5fa239b79640d9d00f4c8aded0d6755bd4d47b7aae47d7b5eec9c083eefc7d6ac783cc596c672eceff132d8875a4f387f6cad865c69f9aed93a0aabf06cee7774866afdb08f1bf6f1a41fb40ceb849be3dfa157d65eab6a64a755ce23f4d10e045aebddd0e52fecbdcff80de0f0f6dafaf47d115ddfe1acd1fd46f48a758b23dd0f2a7b8b4ac6e0fd85ebff233c0b9f118875ced7a368c9d0d173bac5794195bd50c783100fbacc4cec9b9db5f698ce5b75282dd73dfb3b58ca4ff2bb9be703fbf6700e2fb94e3e77ce9d2a71d1bc499fbf75667e430760f1acd1d97a25fb88f4985e7c6ba03d46f76eeb01ecdece2ada41efd8a7eb53df29596f8647e071b02d4671989b7c63d4decf8e4f88fef31591c6d1800eed4167ff003fdc69f7dab0fa73949fef2de30baf74f5962fadc9f7f0b9285bb8f5802737c23e6259fc59ed1de85e13a829ddda2f47063bbba6f5964e3b37477fe267d4f7bf635df91ff48cbe9763421fadfba4e213e9bfefc9e8ac5be2cf1e3b8dcc9ffa496b9f4f2d0be10c7d9987cce88e4dbf68d2d4159ecadb29ae990914f1d1d221daf2f7e23921f559dc5c47c3fdb1219704f1d3ff905ea50cb35068fb28ce485fadf71c6a5fee992a21db7e8e6c8e07d470827ed3f26322dd05e92b84ae891e76065cfbb7977fb0713eb57ecfc6d8f83ba33987661ca36fad9ec5331aef04678dccb1c51bf0bb996366fc79bbe7c3d53f1827ffd0ecf1c09e3fd2aff52bd9db998f9f5b833e9f8d4ae3c853ebf69cbe181db3231f1768df52427b999f1b84feaa3d2f689c925c53efeb7f84d6ac8bd7d1e33b713086b600df949d4bb5efb57cc97c3477c6b6dc033609bdff4d8d6609dedb5939baf7d0347bfd6b3dc7b67f3e3b6ca706a511f69ecf164de35a3cf6fa7aed2197593541df3ad2f9bb10efc3f4aed7f48ae3c5680cbe8ad5f5f44ea4f7c2bcea7b1ecf643af1450de0b9ecb9abdfa9e9c7e8bef3a3b1f7158d019f068c92eebad434d019bfdad3df8e613de7a91d1e8df34546a22ac5bdd884aa3456215675a8e27ab57efdc6d4244dc04f06721cbd67e50bedbba6e19b6efab7d91a443c372c9f5acfa57e54b6f60acf33aff25baab9221ba6e7b98d9c14a8b3223e0993f29ad6bcfdfc1e07794875f13adfa5e71dd9fc17e061cc67762e6c6e299e57dcf20352ac85f985da8bf0bf34a1bc265a96d8cffb9e3cf1f3d63d322ed05fbfadb3b0bdd1e91e4db56ba8889043c7ec7d23ffe5994dc9c4818fcd71717e04f90ede93e9dfd4ddcb661f901ebf79d4efb748088d229d92ac9d9f8ba9e7cc0b762d593f561fddb158b9816265bdfd03fa72751a632efcb95cf38b8f1eba6aac750e3214c7a95a326df75be3cd2f5bdcb368e9c11ee1dad246ded1afe670a8f2bcfee69e57f7fd8fee3b7bfe7f6b3d98384d3f0d44ff321d3cf5e37f3d17c48f3a6bf22fae47876ffd1e8d347c97ff93fb836b93937fe56c74fcdebf5c7fda1be737f900e93734bc7a8af5e8f4557afb1be75fc8be7762a9bf791ebbfdbc7e674dc5cbafc6c33a2c9cdf8effabc60983df8f0ddb5ba1f2acda83e63a1d00b72d9bb5fade36697af437f889715d61dde45fdbb7bef9fc7a0dabbcc3a5f99caffc6adf43c2779eca84c7aff8b957fac290fbf79e11c720b37f212f7ef52eae20de806ff53fa7f08561d68b5133a1fb8dd7fbc34c313de1391f59fe13e4e2157c40b9bc0f15b16ce4b3122c87aa4702c1102039eccd7c7c883d133c007318fbf6ea19ad909aebcdd1e6b94255bcd81d18d7e090f6f5866c619f3139ddeb669f866772ee493e78eeda0bce1f68c3464f48739cf9d345f664dea52f889c9ec2da3e7f06ce79116726db93ba574fafe6087b4f7119283ec1813b557543c0e7618c449754dc9303f20cad4b206ca24d6ec5ee601585fbc900eac948ed4b80bf3f6f0f8b17ddd178b0f5ed0dd09137b5287ee6796bbf5cb6a46f8ed3d3ab67a6cc4feac48b5dc14a7c41fcd4a5b1e6e7f30bc9613a417d92ede55bfb7ec218e78d9a248c49315d5c4347db7be6788f6418ae43a6efc0f42ec2f1c58569ada2aa3711f4e5813c60125324d89193aac750e4e580df79aa71a6115d8fd3ada36584be206718afe5f8e10fac12e94be154cb48fc1fe24edac042e3412d07a2abf78196058e750af2cdb1ae6b5d9d5d67017d651c493dbd0fc0df952f9dc6b5a567cbfb50be2533f37e58aedddb7c3d7abc0b151d5e8c83167b02e41b898bfde83e7f0b7e6c6d17ddcb6045df1244ebd51990694d8e9b6f487d9a9e7bd720c97e60f912898deff7e7c3d28eeaf948c32a0607737f329fad14072af87e161ce289ae1d56f77c38f0bee7a5ed5e1c5e5c1b9b856958c687b9196e0c4b7b5f6dee6b8733960e375c5ab2686d38eb63cd6b1ff646b41c3ed4d693fbc72ab53e8c34338dcdea82e9d778a3bd32d783f0e2396ae1ef795abbdde5af9c38f033241fc659703086fa7424ee8473b65b1fe3b9742f3ddbfdaeae4785c38bd007e53d99dc7459fca0b89ae833c8c1460ff8c9d12defb1ae14a71dded3445756e26ec015de9a877c1d5db989e0237f3be3fe7e6f485fe73fb5c43d7a6b3e50b35b32130a441380393b9726e2d29e5cb682356c5e83bf9bad1bcf89912eef256e3e536ea26b0ed17b9cde05b4bf7182f10527273f190276d64c99146e92e65a027674674d668a7a8231e573e2acf9d816b470b63e9fbc24de6b89b7c73d1cc0bfb582bcbf32cbfd817a74131c9b5ddaf34b15eb847e21e387ae4c4e612e9e3c6974437409cf36d17c0ddfcd38d1b5d0e7f4079545bb729552da7dcf8302fe5e9ff6ba82f6ea94e9e8fced4f853ec5cf7fcf57852388033fb7caf79cbb547d5ea7bce83931f4bb0bcae1cf601089c1fa5cd5eee8f9e9b19bced1779d7e702b24471d52bf20c5fb99392ae76f93870e7e8c05f64bf7f037b68ed06af10d57105352435ff559f3248c8943b1c1d79b6ca3327cda030c8f15c41199be007373b390d7d9425615ef84b1565e68cd05f4d2f1006704cb1a5a7f01398f1463766a949ebda97b58643d7c0ce774408e12396fb0e716da0f67b1f6ec45e9610ccdd273641ef1cd99145c74e17e7213d1c4bc0cf608f044037e91411f7b5217d5aa55cc7c67cced362d5d78c0b7eabfad733035860c1eb9b3758ce326b71e9e83f1c2903cc5364456634467e129546282e538843d0ce5300ef2e1c9cfc337e8130eba78fbf9a43fcc93da2f562faaf489160edfd6e68e881705536497c27abcbb369f41ae8dc0df904ee61f0cfa5d51e3ebdea03e369878bcafdce9ef0fb2ee1daca940b0f6e80c11aca52fd6bf69630026a4b3821c9900bd8b728b0241ce3d93f6a307ac22c0d00e72f1acca84c7675dbba1278e847ba23b5ac9e01ae3fa12068b57e3600cc8cfd9a077c6fdf61e5003a964a90b7dfae6355d4f5398af9f8b9c3a5df001de139abf8c7bf6c15a8fce21a6d7489d8e635738c79eb0b9a85210cd9835d078a07d86bee7178cfd7066bf437b4c7a8edc3156b2cdf53c0badcf0ae991a56702ee19f41a784f5eaf5eae5e7c7b730d9d45a6dba4f6de61e7393f50bd90f15964c141bde01ea08071ab317503919567578a4bae3d180c38dcab1fddcbf884d1ff409397adb330e9b9c5985ff07d978695300b654cc7fd75aacc7d740cc073ccceb8dfa27c092599e486bd46a660658144311e692ee64b140cb28b5bd25e24487736f80af3aeced3457226d213b1d2a52d21e3b6985e30ae896095c0ef8511c9e902b9dc3d0f105b69e521af8f5120c427bfc2b81c0356ce3be49c65e70a3f1a63d27e27ef5ef79922b5daddeb490df15be7f9b406b8f32c8a25c03e8bfee6dac361770c1c57580bee7766cfaae7557929dd3954fa1dd079770d909dcd01bed446ccdf93f1c1738c75736c64c76fbaeb41b13a9ecc09f1beaf7ff360af7ac79c2e8eeeb3df003f65c1b57fabd6af7bb6bfff42b6146cae96e7188eeb68503fb512e4fd16bd7bf7fe762cb3870687ec1ca25ebe5df90e6afbaf2b8fe7554f5c5c6f7c7c6e97bda9b7f97a7e065fae605d902d6fe4f2de4336825014ea049dc3fff7da638ef272807a8f296073516c17daa7eb0bb908bcb5b24d8c89f8b14ec58dc38fc71b7ef1614d626dc38bcb4d267a6bdefab0b86cbe9645c9b044c5b434d9a0e33cd115bed0a1889dae9d7c075dbfa2d83220f38392c85d29dcfb8afc088461ecdbd603787d4e78ac04584b0f2a9b55c52b7d818bb401fedcbc76fc439d5a0f6f03fd35a1662690c7a5677ba71dd444917bcb97aba5c48867ac68ffa7208177ace6b92bc748af867eb48e707ab0f7d7f6a388ae390707eb8271626f09a25357102f88f7af73597073b95c1d34a8335a9aa3eb2c597c38fcd8daa4d687531eafc45f71f172b10c05b9f46464f3444752179f043c9d3fe659ecfa619e308e694f003d79b9607d6c11f80788ff675e92020e47f7798085f964ad62e6ba5ba409c338ccb53848f824c8e58b2755180bb836491abfd5fa1ec9f72831462fd10f2f5b98cbe84f550a63ad1c7d57a5f01128f285f67b60eac13b6b84d73f66c728d469c1bcef9ce561888f432e60cd13eb357b875e21f223e030adcd9445e13a8bc71a74905be41e162bf48cad139d88dc877725bea877d7f112d7d124bc0ec374eb2c6ebe220fd7b50ed3ba06e88a9c97559d2f2b8d9bd7bd158d7332c3755af84c4bd539217417fc003d443696c6e4f53bc53ac267147a0c72249f057a517d45772ee9c507f83a8af5124a0c76555e3de3e229d92350eef16e83d66d0378ff157d57f73e7d5744279ce7c4dc7ba916eabf75b6ebf7fa30bbebc29ee1952016b8cfdf86f4c21d1df4447cf3857be13ae3876776ce3c1f0896e40b22170c8cd275c6941698b1828bce23fd98cfaa3e798e0a36e5d6e6c1265727e4bca4f55c99f1e9bebfd135e9bca702fc06edffc7f6b078011f30eee55bfba1e04cf025ee3fc6678e8474e1213d8fcc18f45d116dbefe5479f163235ba661891f336acb4ac3dc1f688001bec9ad7c26c5445726f91fb97521bca6c38ffe37f09c3db35f6dbe53d115ce8158b074dc59e7590787b0b31eb0deb3c9e2ea2bf7389842bd14939ffef25d9526f18c395b5ae242fd241e13683f062c600693b78f4f91dc9ed283673e99877c4b3c25131c492dda7e786f0f3eed9cedfbd2e2739dbd6ae4f4e4d605f1429cf7a3d5f8d653ee2bbec7d0d397bcaf7dc6bee27ff5b5ebe2ff0fbac2eff313445f86e365fe01e34d43ffbd7a5e23c84b85fe17e2d117c4cfa014113f91c31c7af8c7be724f5c7bf1f99fd259bafc98e1595c87273579d6b48880d7c0fa815e53af877c4b48fce4da8c9f5881ba3f3332a7ed43aded505f9113cfbe21b9bff185f0e0432f3359d862cc8dab9f84b4576c9b8755d7ff87f4a7fa0c247776ae456def0f33a69f3e8efb4d699f5782d522df12d759046a52f7a984332f8d53cf5970c1c1da23fd86e0525c31eec8e2ea3b63f4feb8961bf7827c84d3acf0ecd51963ff881752237440365b68abb88f23a169dd66e8461209ddf2492dc346d7adb37884b6f5d01f73fe7d8d31635c64174e60fcab8fe813db0849e8189c2fbc1cc8da5cfd14f741237ce6a227435c170fbc016a32f29909d89c4466688f0df4c3cf5e2a9e8cec1db059e41bfd6dc65ca74ba3834f6857778cab27840560b4117e4df5e93a162b5e2c453c78c23d63ed62a44f7a0ac1429a42fe213a7f35ffefca65dcf3617a165b72e588b1bead37e82b5752b985fb9601d636f4cd28c0b75abd7b95c72c5e565017519cd4faefa3d7ae6363de63668eaf7e46dedd8c2a6cf859abf7d58aa1091a7b760f16172aedbe5724467120d8baec75ed1e4bff41dddb1786780d1fc7680bfb73cfc87a54d73892063e3fddbec76e6e158ea47e5715fc77bdbf8c9ebe3eb66443cce8f49b426dd256ec39f1cd057c732caf35a196efc89661c6e8978d09d832cfd626500f0bf4fc404d6ead1ab9863c8eb4e9b9e64753eebc85fe7ce3baf6d662f6fc80e52fe5e915bde7c629188c0bd7c9e0b9e88c6994b757f413b0329bf2cf4efcaa51bf47be4363d2d892ca6054b5e7d1d4e39b365525b304bc67e0df75e64d79231dc1b6a6f17aaa1f1339d3914d58b7abce5d81cf239ff9f6eb2fe5f646b00acf5e70aead15acbca763aea09ec68883c3ea1adae9f5c9f5bd73b26c90575c908bb856b7d2d54787b0f11be075349fa12cd07c39cf82188e54cb2a466e0bcfae7922fb89afa1c7de60edd13e9da1cf567aa6cf75eea774c1ea2beddffeafd57b26d5f923f6f6788fee0b150bfcacabdaa77064ec1a6cfb959467347c28b57fa4d6c1a96caa748e0de6bf683c227b890c7c6bf41d8d2adcabb763a4097788fd6a25d587e8be5b4b3f5b64be827df9158e70af4ea6fe2d5dac8e11766c43fadc4a2e32fe97efaa925db68e7172edbbd4b565c6c4d6aafdd735be571de3f0aa7e99e37cebc4992731f10924970669af9fa8b6abfeefd4ffc06ff8807c00569fc0767712d4b1955a76b2329dca14f6bbb567df3377b062d6b387b66a5b14e9920ddeb9a17e04c8fd223a9765813f359c6a571cab8db1fe5932b296d1fdde93d18199df81b565197afb5d9fc4c9cf336e6bcb0573860b550a2fe41c7474d45ac7a9f929d5436b9b313a22fd89f47864ce03d66da9fc616ab2a26539a6b93180c75baf6784d6117a5eceba7d766adfc986792ee427d66bd6ca1764f4d01a9b0763f4e25c17f5edc8d2c091f478edd45a7e00de5f3d2ece0be8ce47afceb201bd1deb675be16c5de0de764256f84c0d35c45505f1ec553d642b1c0e017acf1f2cc0df729d55140856e6d37ef48a5556761dc1db22f38ffcdc3a903ea90f3da9f2452297ed19a5d0185b41fb8f3ff05a229d36e3aa67cbb704f78bc82e1e7f4b58ac501fe464463f23da2801d7cbbe173b739cfa82f5f0939053a721c4c1914ca8f13ba14e12c932f49cc2b3a9ad3dc4cfede9478574dec63997266037209bab61337cfd5ce293cb608d908dd8ee5fe52b1657d1d504eb7e50f323193f6abe1e8bba4d698fe461b7736b09cfa1f64d40b0e3d15ce96f2be0d520fb905e4de9e70df4d0017766be13ddb7e619f53bfa02e501a04f42cf2f742667750cbd3e13eb63447f67ce00839331fa539dd27cb7d177d6569d4972af7f9091797d7c177c8ef56783e6c616aa7c6ef84c595ecd8eeb98bf1d63e9f84c75c8a1f34e9e6295ac2f9460f77d87be9f4dfdea6ffa38091f03fdd8fae5b89077033d658e7dbc96ed335ddb6ffb63a497c7bdc38b2bcbd264877ffda9f3a0eb35ece9e638cffdaccf6557abcff0bf6cb356ba0d9cdd16cd1790f7417264c0ffdc3e5fa6f1a3d285a67ca4831e04bd4222370fd0d948bc017c4f7520fc9ce982dbda8bcf9dc9a5bb01f9db81eb88ee849f81e688f4136d7ac6df4ff968c662165458e85fdbb4dd9ccb469d31fe0ed90c29d599bff239e3184cafed4a7235f45c7e044276f0134ae7b55f9dd84ddfebd88d56a235277e307acebf33ba3e9191589f6168f07b23fe43e308e43910034b6adf26faec284371b62e12c7bc25348f71033902ea7735d1c46f7f7c3b6d3f7787f3b7bffed7b7651a7dfbebdbb73fbe2db6f90efdf5dffffdc7b72839c717ff9fc131ff33399eb7d92e8c769f7f46c7224ef27cf7f9d79fa7ec122587e2cf701b15d7a4b86cb3e4b1fbfcf3e3f37838ef0ee19ffe25c9c23f8bf3f69c047fee8b3ff36d72f8e760370c0531fcf1cf20be1cd27fee0b347e72f838a2ffc3dd799b64f0d501cfe4c93d7f7c2b92c7eedb5f3f047138fce35b7e0c77dffe7a1138f8f3bfce09dc2b7082f0ff70dfff1f815ff3dc5fc28fbf84d77ffef82172438ee7bd6f7f7c4b8aff0a93cf6f7f7d6cb362f7c7b7a28481df76d76f7f7dff3ee0853fbea987e3b7bf5e396ec0ff10fef8b6c89243faed2ffe8f6f73186f30e05f5ffff8b649c26f7ff11cc7fdf14da9ff74feebbf4edb90fbf617f7c7372344cfe4fef866b2931e67297e89174efc8e3e1e83b4f8f617fff2f2c7b7d139c9d164cc5df0ed2ffefb70f8cafd105e5efff8b628d037af4361f03ae4be73fffdc7b7f9d797d21746974abf7fa9f35fff75395c8a5df8edafff0ff707f707f7fffd6f4413f1ee13d6082ddbb73fcff9e9cffc70fe33c892dde1fce76d9b65bbf39fa76d906ea31dda24353f1d3fcfcbed396e901773c5db31c03fadb79fd1ee8cff368e47f2d77c7b0ee26f7f1d2e59f6c737131161b55df0c9d86d8be3015fab1ce524db15f46a3c76f5f16d77aafe5eef8a73eb6af455eb8ef931bca0f1fed737f202bf381030dde4f0edaff3e765f7476b8d607ef363c82e5b74fc677e0ce1176bf75924f022fc3ff957387e2718949ecd5f8f4dd6f67fea54fef71fdfc2ed79fbedaf6fb45a3414ac2450e4fd963b3d7c6178f314f9100cbc5330b0625fc9be7b8e2a928ac981676b37d75e7c9a0724c1c7a96b878f30cf1ea12d175be7940587fbabcd732752497db4f9e2e698f71ff3f59c7fcf5934c84d114af772e69c45fd6dc52fde4e6cf56da64f574590643fd443231b3b791fa8972081e82c64d4bae6fdb274d4e3bc4c8bed9a2f676fea6066de1ff0dd5a3de9ca5c0c92889b99f72bfaee5d4a0bff0d5d37b9cfccfb117db730d3225c73c7208906e8f72089ca9999fe50edc67c4f3bc1f23d73b8f09cc5c3b5c36cb91e874b53ab3eabc93db385cd656d5b8f40900f60250ae7cc7be3eece9a4b3adf4b6ae159e74c4ff92c182c620f471ff2ada39d3d7b25ce334e54fb7f4b74a539176b1a4f7dce7b032d47b0d2e57ad1985bfb773a5782081a930c53712173a29a19489a3d5c9b64bef65e3b947c41fc44f35c58dd7b56b978dd3e1d67d89aab87e6ba0972f9120832a68134bc1ae9e2e8dac303f3bee0957485485cf0686d40eaeeb7d53a92cf3245ca5958b8827823becbccf5dddf5bcf6faf6586e6d7fb1b7d3fac112c8e966081c76c25c4b19f87b0f7f3c6d86106c81c93fadd3ecc38fe98de8eee9afff161a6b42a2a5d3a67f15d603390d5a367deb999734e6dc10a978e21b2a80a811467e837cfbe67a1b2893cf99c390ecf56171ce8b9d39509add4b92c9df0e4e7c6352c874cd6fdfdb434b541f03826efa50699dbe8efe59a13fd84545b0a0ba8a69a29a9a81ec207fa7d66de4fb30797e8e56b32135e2e5b457c84d23923eff458da80d6ed78b6b6f685c5a7e7ac8e5b33fd1194c3ab9f8b37cf7e1143e9fed073f1e20af76b206cc420c19f3d472bfd812aba26feecd3f3b4e61bbc63e660de10bef1b30d27beeb87710c88a410d59039d74c8b60cfa7f66075816c738bfb81adb18918246e8ef88b9e23ba989c3e1c1e67ee27f79fc02bdee6275de1104fb9239eb3035e32473c67b974d40b2007ac8b98ad88f0ccec07d067b64016c0c5e391a5c0dd104fd80c90053d3c6c722bafce8a60c55b7c0df08dea7342e83c43b403de84f9d63e67e8dee55a4334bade2a72e12be200ba025abdf74cb6cea2a8ef5b34ee3394ece157f76ae24cf15e3fa43847b488782246f67445355924eff64af09479a24f53514de6fc7c9f0aabf526d1e539fa3d5bd846ecaee789ae14e8b3329fcc5fe66f51a2cb2bf4793c7f4c84f97e92e8d300dd2fcc379bf27dbd4af449dafa0cd7278b75349cbf8d127d02cf97179ca1ac1e6ea24f3874fd63b1771f8b7495e8329adffc3e57dc1b8c3751d1f5f9fc6d84c79fbcc0fdc63e7a2cd0f365f85d7a5f4f1e8b879ae8930dbaffb658afb8c56693e8d3a3a8265ca24f0251dd6fa279a216c69e4be6c9e8a126f7f1d2544bf56d9ee8939b382fefabe55a2dac0757eaf2469c277775b99edf743912e78f4d61ee395e975fc58574d797eb55b1597389fa081eef9b49b930d522409fb9c963be76cbb9a916f69e137439151b1536ceb95131349bae4e3ba63b979e4f4e44b6171e926d58761f825cbe6ddf78ea196c7eaf64fbe0d1f9ad709dec1a3a2b917af374a23320fe89ac6dd00dc86fe48c974ba840bac7cb4d35a7339e935a2ca4f4476b3e312067532401451efa038b5bdab23fb7b8be39c6f6430bfbe6e15ac5c371f8babb1aed9aabdc2eae9922dee9934ac7c49b6a71c87b597030b29da416d443d13eb78df1a561ec29c6bb2f18c04bcccdaaf0cc4cfc30ef3fb682357c4fb4d2b3f96b985bb6e7689ce744894ebbc4e52d5d6280e7ef0db4385022f41e677fe065eb5c4c3d13f1305ed4a7e74fcf49bfab072d03e409c182b1d5e44ebc1aa736df23680261e93ae3e3d65e3cf4d6bd68ec0f872be83a04c4ab6ae556192ad6cb17cfc63c15cb8ec2dff38db1f43cccc209543f1c11cd6dd77c772ed5359665a2775c9fa1ca72936f8e5bf3eececc7bb9b45e0b77cd6bba14734b3b3de9b9cc8553f5a81e80777e7a263fd8da0687647e90a445280de3706a943349433ae2752b20593e39e9ca309b29699b8e91cce6608dadf1351032b21f2f97adbd3acd9a7bc9fb07e26d927f834e802fae905cf99df72ee97b07c95d9d99b76388e40854ad02fd8cd13b6d6d8d0f954ddfbb9ff4e9aaa299956370419e25a16364ec3ab4de07a397a4785efdfb1c75e8d215ee99eba8c7063de68b0cba96fff259184d78e934cf365e0f7cef06f84384de4744676ab79e7c7ae670384fd2eb3cb9974b33cef443749f099bcbee4d3de90f959ec9d203f41fe87e09eb6029af683db9deb966bfbd87e2efd1cce6f43ee8f0a08b6f8b826719d7d97475d949774e3fa4cdf33630aec1933954e7179dd9dcc882dc2a4906c7159078cd7b83b696f690f7953bbbc737d741f6d2df78fe611c87ce229b492d3ee62c78dfdef4f32f29ebdb037a4f8b562ada7ff3913e97fcf6fad73cbf1c1e3c07f35d6b934266545d75b7fa3394e0f7e699c9bd93afdc92d9fa98a807763e301779a7648ff00b5aa89e6fcabf3ecf0e2f3a665a780e779cad59d93c4a61ad005d6023aecb61aca715bf84ff67525a846f1dfdb59661ec3de93dded9224f32b0f7dec63805d0dddf4a915ebf1b2c6ed0859fa3488ac7fb5cba3f02a8ac0bdf7cc1cabdfdf1ee991ca74f49c68a651c83dc7a6c15b1f0de8e97f97a53a0b31fe619b75b1fcff3e49e06b97c580962e6e5ee777d3f2a754096b7d6a162dddef72ae8049e63c4efc9cbcb8799a1737cd2a76a5b67c17af49a5feaf9e46210fe62e5591696c3479887d37abfa3d3fba0420fc9303acee6d8ecc0c0ecd18407fa9d99e905a372515937cc66e63dd3f3fbc9cf8be7f7cb5e369b70c55aba7f9f39dc69660e316adfa6e7beda6f81fd0fc8ae37d5cf501abee807e36a606ff7719ea49f6a724b6683d565670e399fc31d80666fea69566a73353997fa21ba848aa8606f7954cecc22d125f5334886c3d6b37e786625e790cd19e379deb30f333ae9ca446cd2ef9dd3a72ae5bff1d236aeee00573662da45329f477c51da6db27426691cb2457dc5b2b7ce8277edfb69975ba59a30e76cf27a71cde194e841f6d6b6062c1f01fa132a849e2cd89f625da9cfccfb615550feff7ed0c499c3a17996fa74c5ee75ac1f341ec90ebdb557f40c798ab80f71a7a14be0585970c8482681710d9228510706b2bb0bcf6af8affe110cbc838ad7f1d1e11587f0e44d8d23daaff97a74d34cf5a4031296c5b564ebd1b3a18210edd37dfe36cad42413d119b6056a57cbe187dda8d4cf3a34033eab5525632bf982645d9a4d66ebf365294c447f7f3cba6b9eab752c39f52a1d6ba819d21dd1f709ee9bae4ed427b66ddac3175d494f3b21cdb53c856c1bc396f75b296aa0196d2bfe3b178304f1536c97cfa6f35c4be2879e670f4bc96e4b7372d7952c9b4de745081df8e4d3c7f41ee333767e688957fdad1f165790074a5bf765cfb657fa02af796f9cb8b4e10ca3e7717d7ae5d64c730dd9f1d37aed5cdb48d74a76d99631ec99b9599df43c4bf5e9aaf0d1de9899f82ea4472f19ae212b240f4dcf760b4407e4f38aa0fc6ac614d9f670ade3d9f227b28fd13343b0bf89cf68924d82322db6669cf7d9e1986ee2183a2671f7d356b01acf6fd0c6d420b491fd08a5e183d031b51d40cee13d514524e3c8d9ab6421f0596552fff644566e6df7e89ad98f55be39bae67d80f44f2a5f00c1b07af6bdd45be8a8f55e4dee10455e8f8ace7e7243664fe2933b98639a46fbc25b1ad2eb907ead4f5e4ee819e01f561afb5804c9edd89217748ef1dce14eba34b937e70672f2dd3363ae2b9b81fe4036235a98997713f14b5d3e87c8c6f868fac44a727ec0df1c24c31ebd1f7476c2eff9f289cdd358677486bed81374767ea0b5afae93eef1bfb4f603ecd7dada307f7166de7da48bfcfd674f7ef3d9998811c6e4f65e64f5ba78d720b5625788e75b7bf8396bee1b3773ce0fbc6f59aa237b149d79332e67cd7d895bfb02088e86139f82c10aad61ae1d568837211db9749db03a37a194165b1bd1f5bd443a33e25d6b5b2eb782556a89d78e33503959d63c99a161d0fb81864fef4296cfa648c7c7cf5ad946ead9ab5385fa41e5eda6212b1f611e1cd57c710af245e199eae95d985c5c24579228f1f2acf025b530ccb4fa0ee9c866597f760751a24fa2eb3c61bf4be97705b27f5c47fbf41c6dec2946e6bd7180e4a4e7f22d50ac8b27c5485f40e71cc98c12f144d66fece71bea57c61df1f67ca6e738bb7d5d23bbc27ab4e461658fbe43e7563cb790ed3296dce8e7c2857bd44f6c1bf1a5fe40ba905aa84981e636d41df58af5a63469d14225e37e73af400e90fdcab544cea8fc62f536757f8e97f6e6b275169bdd9bb87e3f805c3805dce2eae7de29c8f9cc03fff64484ef79e3652914df7748d7279fb5c48367af04f1e2e559e9db560ac851e477f6fba5d0d623b32e7f7fc22fdc35afea8f4de1efd1ffab620b9fa32278e0ffdd4753af46face4cd26ebe701f425619d0ddbca631f03b9f3335b91b33b3e34339874296864a94e8f291f1c18caf5bc82e457b0699a5175790b999c4c733212dd4e416a98846ebef2fb3c1bc50935132633af76ecd5ba24bcdef82f296a8927a0294c77c1187481fce279f7dd7ea6bf5a79f9c1fbaa436c7537ae6309d233d993d0b7bac7bc259e066eb4edcf1b7f90192bda6f4caebca0bfa9fd39514fdffa24fe7f87f65deb4f90e0bc12ba32450c462672319b54966ebf3beebe3528b80e50764af7487eaa9f72db367375fc82ee1748e74d28459bfb36b9e4fbaa416cd758dff8d3d89fbf75979f9ecd9bf27e347e76aef9acf866bdb5d515a7bd999f75763cc4ce08d71301d677ebe3aba25d8a6e0b705dd75a265889f93cc33386f018e57c7c8a66fc4d6844dd7aeeaa38f5ae7c1fc47999c8241780a95c5714633fd90aeeba820bb96f6e412e4568e9130eeaf2d3df504e3098b182a2d9abf7d376cd0e716fae456ec92b4c0a87718296669bb1736b6f42e000ac5e77bfdac4ac77d4f918d322956e57da54f0244d7f59cd67cae6761e6da6734e60fdad5c215644033e9d381e9f3ace4eee813b7e7793df774e7d71f93da9f64cf8c637da21696791fcfcc3b46fecba0724d7c7adfa1b99f6ebd9f854b6d1fe545741ded80ed4ba346517e7be1b4c46ba00d0679c8e3ee560b7f2173b996cba5476cec802f38c7bc9f9636f35d5975f1f9c7c274f32a3b7acd35c6b41f56b8141acfe29df5c977d6e72aa702e98ec88e231d251fcbf5e8c7b6ee1af98fe051a130ee9776e60765f1e960f4c272a6cc4f33a7d2fd68cce6aa2b37b18e971c215ee296c302e96fc100e774bc0f8c72e79c01e9d097868f9994fe50cdf8bab46f17a453cecc610ac8ba658da8e99743e21b3e5fb4c4bbcc1464dbcbaf1f0af83e340f501ee797ad6dbc7e28e9656b0ff7fed44a3d678e783463eb4417a834da207d3efdd335dd7c2b0da1f2c6b457e272cdef913ea9256ebc3587273f5f14a16d6441896c00c68694869ccfc133c01e265d209f5df37d5b7557dfb076fab1b25ba5f4f4e1f07bd731f65b29e667ceb9d0f3cd31443a569e5d204b1bbe73c12f4a1040af9e792f3cf38e6890f7cc7bea99f7c433ef37cfbc1f3cf39e7be6fda767decf9e797ff1ccfbd233ef8267de879e795f7be6fdd333ef1bcfbc0f3cf3ae79e67de299f737cfbc2f9ab170c607dfab930609d28f7b7f43e77cb04a585b11d935a174df207b0af4f749cb4f43741ac6575582bf5dcac4d974559809e84d153f467abae77085956f9ef8af2a3f41af6ee33a481676e5a49adcb32f759ae9aa2fae94bace82761649d0f81f0d5fee58aa745046d7a5fa3b7a4796bfac6b9d3aeb93efedeb37bdd757f29ec37e4cf27d1ee31c929e71914c60f99af7e53a603f5747cfb08d3810684730f41cbc6f9d38db7445116dbf7b6beee80b9bafe3d452cbc7ff385394daa35f0ee30af919e956932a76bc67e3d96acec73bb9f2f121fbfce40ad6434de03c912eb4f7eab92efb5c493bd37c28a4c36e11bd6284e8a2e67d73e07df8fb5b8291478d452084680cfe77c620b6d8c2754689ae181989553f7f27ea6f50ac74ed2c0e6a02bce057e3e0588fbd4af4e9f8b7c6701d0de74a09f57b9358cb3910c265901b59b0e77da78a33dde36000ef8eedca899621b9e3593866b434d5a48ac39338b2671b1ffe403b79427671a0725a2cd9ebb64a76d82ab8aad0b3f1ba929c20b45e743e6990cb83a539a9f20d42129fa67955c183ab7e233ea43a47e129edc8a937a1f9749b4457bc7addaa2e19808837dfdafca91997894e3bb0275717df591cd6032d85781fe978b0dcf39cfe843699d807bae6e1716209950a0764637b1c92a380c68a63bf55ce1e8dd53fa34dd73652a3a2cf20d195d3afe9205f149e2d974693aecfbf416f9df9a909c8a65fddf7f01ca3ba87e6c9a909c8b45fdd4b3b80b4f218dd449f7abf45f3e1a42f7fd2d86c6d1ecd7ff8dbe7cc82ee7f67c4bb37c2aff906edb084f32ab2bde72c304d496ab1fd1bf76f042b0ef07a6d7e6bad6db9748578ece706adb04cf469d8a173c87fe1ac97adb360ce612be6220d197e093147d9b517c759d70fcbb57d709e897defd5f925ef6340decd8273914ef1e8c43dc9730211e905559716266fa1678ed42fdeb86e26d563bb82750915ab34ec21b775b48ce8116d59c5c41c9af90d7dcf427c7ad9ce0f1e307109721dcdab81b35cf1d5c65a899d5c412ac3e97c10cfa1b98ecebc7ece41cb70be01f15377e3c81c8def7bd3fb2b1b37a1b923ecfcf4e6ef884f3cbc4de5df46e33ea33b1a3f5c5204183501bdf477cf378de1414eb4a174e4138d8d203ed759af90ee7d56cb5188ab57341123795380ce44646c50463887e62bb9d517a3dbe0df70fe07f513d1380ea545e0e73def06be6a9c57fa7c4d3aefa226a0dbd3b5a4f90859d894357dfb5fe9eeadb30cf13dcfcc5e3fa650815fc902782ee41157e7ef88d6cd57a08b61974f10bac779429aca5c9b7913fee10de647acbbd29840d4130f6cfbdb9ead77679dd1dfc79e3121768bae0d92261ffa629e2d7e50806dfefcf9d977cf74411fe8d369be785f88677c459b33647b9829d067ffb3b10c9f4929c353f07766e7faee790988ada1b7f44e2df1b2257ee74745b3e87dcba166bc898deb1d412cb77678f233710f793dfb13a7e77de78cd25acaec5bbd1fb0cfe83a0eece92abfbf650f32f916bcef303669b07f3de27c18eb42f7e6598c9bc4591392c7af19d379cbdf90e65a3ea13e010e62f138cf229ead8fc7df94871c962524df1fe2c54d7fc4cc747397fa15a62b8855c07e63be40783bee6cf954debdf117cf0922db8c5288711dfe7fecbd69b39adafa2ffa5df2f6e6ec85389d89abeabc884e5a51a720edad5bff1230820c941d6cc053fbbbdf1a1d0c109b64adac957df67e91ca546946f38ca77f7e8f0a3c1e5c90cc41b50905459fbbb0f20be59fb5f5dafee218da50ff0cb3a00fe51ed4b1f5dc73d40be1a3bbca3780bb57e7573472c15d3e58d9746b3ced39fd604e470c6d7c4fd209625e81c6eea716b451b718890bdac7832bd9c4f0b64b887ca924872d191e4dd42dba07da635cd9ee5e711a7218d12eb20724f112c235e0c4c493ac64915a9036802989bd8037197fdb88a3e794e820903762bf22e4c31d3a19b20d70ee4b1e6c0f80e19128d7544b2bfd16dacd35ffa46740e8c89daa631cd1bba354f358d98b6cce0bbfb9c8af8ce22311b4c5e7a9792b4f19c570d119a9e3e34d1b2705474fb25e96bc0bcf4fee3a3374de71ec541f7bb6770a526b81f316af6aae68de4c576c19fb05afcf1e1ba787b20c8f717988de79114c2401f9ff5da300936506ae74a871c79c8ce2c8e4b2ff13db188ba63f34aefca1d1bbfd72c31f9a0c5d83f843718d1a5e7b29c9e67d9467033c2382fb88729b57b6b90fca02a03c5e7b16a1188234cdd6fccbd133a2edc4e9a52b7b10f9523140dfc51b682fb2f91c6d7b1377979384ecb64e59754f4c97e990c3346c255d323f20bf7d958b88e62e690df90c868c6dd6d3d2176a9b659aa4401aabecba4a3edb7a52d5c91949eec651c4d4c7d19ab35a2fecb02d274611c37daeebedd8786ec55fefda8657cfb0f4179d1f4a555dd7b8bd5ed5b3ccb5109ef4180cebdcb96a0d72443b9299db7d9adb6fc133b54367de511582245806e5cd1cde73635c469207e3ce35ca34f94b638dd958f4c428cef7e7d7c807e682141c281fb7a421b25d202d055c91f936e06ee680239f09c9ffbee137c1facb63df09b98ee12db4cbe5fd6768754e71ede78a071784ca6f6cce1a93cbcd8cf1ce3d5086b76cb07aff2f13e4176dd56fb4ae795867f186e734e7cd9bfa0cb17dbafd46068a4b84758e6801181eb6c7743804cd4e91e7d8b7c5976a9f2bdfc534d6c4434f4b87a1261fb6e8acd8612f48114a1dea16e6d9839e6f5b25ca29c69dc4fa410a38e673858e84ea84b7ed5a810a6da4377d1b0dbf1a49be924c2626b541fe119f379b1dcd5a3e5dbb6f1efd1e877351532ff3fa8d31017f671d3c478ddcb4409dcc34392c578e5e7fae51c4500e6c3befbdee0c8a7c963d2d55d15843fba9b1b27aea5fb8a623a42b86c620feea709926e9cfd202ca735adae259890b3f340627c7283eb9988fec42761d25eb08f52676fc615fcd30520bfebcb207592801aabfb5f95add7932b5fa8a6c1edd5d6f08f9b0b7acbad9ed5763642b9f3ca3d1f1b3cb87fed78d7767e5be8cc67a7e6eacc42733fe0be97529223af5f8a7e894f811377f218d2a8436bda768b3a927e075f47ee23ad2fc7312b7aaf6be6d5f7ac6608bba2f11b9486ca52ce8e95980f3f2405327a3317da86fa3381b6b63a26e6e246f8fc400917f14e7b45574e4a69e816326953f8fc8a08951fcf3299a44b111ef14da03f6fcec7ee2f969c875a606a0adcf23df111dd7d59a383d44d7fe73fc97f85cd8e7fd1ab4d3314fd26d7c43f7f1e539ded2d6354c7286c39f78861b757e8c8cecb439cb77dbecb2a3b3795f21f9bc8d7c5d785ea2203d8020e945c17840f10d70fe405d33d9c8ff6d9d23f61eba9eefcfca15c64ea0fea97f9735c579b0d5ba323ea94bafe5a32a1aebfeee2c8e2b6736c3b16ca5932f0531cd2766f8526a56b11ec3f6e67e5f5f9038f53e88abb5e79f5bfb5bb6d5af7166d9fcddd6faec6a1e957c0a62e22776662c86cb6f41dc91236c08e7f94ec139c90263b742d981d699f1f740da1c4725b2bb492e07f22195481ed0f883ea25835328525911a1fc6f246b65f094ac0d788bebb4a545d415fbdff42c84270ff9cfc2931763da6fef8326e31c67fa9d2581038ee15fadc19f7d3e96dfa347529fe5af21b389cd8f3afe63ff10e3ffacfd783b1a4fdfe05a3bea673284422379b2a846eb867f763246b57cf7fd89cb5e43d7b279b3d307a12dc590f59de2b198386e45752c78fe64ac6bac9ed3a1e9f9ebf295fc02fb4475ab6e9fc9bbb38034fdd0ef83eac6516dd5733665475ec3afb3163447eaadc7693bbd449d5e897e197e97ddd4cabff815f823b64da85d877ccd553c0fc5f8a27afe587fda7af680f31c7516f0c19eb937a36b623ca77377e506fc227b9ec7a87e7eac0cdf9768cfa300c50c069c6b870879f59d37ab1c011c9b5d1c43492ca14c41b85228f684622c471fc5440699374e5e299e1494454c8e015c4b2403481c9ac90da8f47ce1bb7423ab9127f08baceb81233550ed186165af2d9e3b4f5db910bfc01c372807f86a5fe199ba1d87bf5e8fb2b2f93b63a9956dcb9b99268400e1172e934c133c40b0c6640faea56d623cb2b72f992614f4b711fccd94cce14456f6d3e5b437318a72f2363d4f8c24b710aedae03811476062149687b013cd6262140afe5b28a6e324b725729d807cde136fd9fbe46384e218e144a666aca1aec7d6d273bebc5639989295787ceb3b598dfcf4d0f59db072945725290c252ea04d026d0ee659bdcc4f0ae0dff619175f8d0278520828fede4d3fd89b38d4242f0bdf105f3dbbb69eacecc16ebe9d9e35797676ed59e6a7a184bb6ab36340731456284e3dcb7c7e703168ee8089bb0f05973dd4d1233f050728e3e6b1506892785cd93d8ca997401b0277289f6fcdf3745c5d0b9f27bace0c75c0aedfa9227f00eaae9c0e5fe63b8a145e70182b11ea3adc6b3b77be91f7237379905a912727b7fc97d1145e83f2026eadaf70feea70b9c39bc335eaa467be2aa91e797d15ea9ca82ed7e4ad33333eb417adefd0bea2efb6ca997ed62550ce63756ac64a0ee7046d4fe69ec3ca1e4c3dfbe5a6ef75ea70b967eb3bcf22b88a37e78068245d390bc40302494c3c091cbdcbfe82305224710bd7594fc56d280dd931e0ba63a8fbdb830bdcbb8003907ff73cc99abab60a7c79faaa2c85dcb507996f8b1c92d946636f05c8a3d098b6fbdef4ed4b752d7c9e6e8b174483f53b63142780e3e3d4d3fa2dab71d998dada6b3c5586ce657da8a12e01fae0b64f7834d46448e75feed0466fa80907f06e285bdd745fa61713eaafba8770ea94c17439ed4fe1ded9660b0330c3f76c476ff3b72f2f4a5c78e89e8b5be84b65301b2bb92a994ddc3dc9e2de0d35f6e15e944a1eca0b8403385fba83d93689355945bf7b4e96790ebc5e849f13d70e4bcf50727fb7688e41025c6b0c97f08d8ba7dbd1793d5672b7bf68e20c4a43ee7d29e4bedcc2279422fc9c6528e8c99457e2a2779d1bce627e90da73e74e7d038d77f7932b6cbd0a03cfa9cf3bcdc747f83f82785e2d19acbef1dddc5cd7330691867074515e1f9bab514ec649ee6f6b7dc337d03823ed6d5ac544e1187d80ea229be378eb1ded8b7885ddb77046d9bb3df0a7a0f75c0cbc990ffb1033cfed27284fe00acbae95d3fa6c8c554b67834e5c1cb84f69dde56d5263176ed795dfd1dc2bf1349ef08d3dadf264b01ffe0fe0ed3d31c6797f91aabb3a97b585e5f523387643669e3bcfd1455fc2f5888b1d503d8c87c1a9b1c7693bebd67ba9fdf0c4be22fb85a3387170fda07eaddb05403596823a30ec05c64319bb293336f20e651f76bf9bd4b43dc043436b4b72be710e4db55f444fff8ee754fb73998c193a68ed09f10d4c09c6dc239c3538578a47b76fe1d3651433a9316e5bc7d80da40be55242b97847c437bbf701e311d4efc3f5f063f5483027b9db3867a3241cd7581dd8778a7069d01ee10e31744ec92777d983fce848fc76f579960fbb201df682b77d8c6c29671a6b689d84d7350f92796a1e0d531f6aa45386e74c5f955d0bab7a57f3377fdbc3784aa5fa75650fce689da564a8c40ab485337f37ea85f294c94511a00e9f214c08743d53033cce634502c740b6b8a05450edbf6b0c7a7e8a6d1ebcf762e28da34f5e5f3d85ce178a357751e222711d3d9aef0e99f7961d3599d88d6f19c999c2fae33c058db9d9a58ac73856f20ac730ee519a8f1d8201a6a5745c77e500c586a2797128f7cd4badd2b3e139d2df4347877356f5f120769d19982d37d99c4fe09a44efb6700ca1ce82fcde685f234f5aecd77c58fa7deb3c8f55a4f305a592238ce565f68976a798a7c937050c4ff8f990d6899dfd961dbfa23900065b783ac4d80c79ecf0c35e28e3f9bb1784d701b4947c77bd6f5be4f7ed5b1c590b5a0ffd4d8947e4ddfa458993dc5d72fb1fa6c1dd14ea8e70cd384c8f08d70c752b76fb5c4ebab680e092f94a5a8ffff6fe257f605d5f72ea8b98ef66cd739182639882cbca5673cf50e1fae6ebdd02db07a8b684d1252abcbb0108394cb313847d8df8721c8e8b73382e76e1b848c371f1cf705c1cc271f1128e8bf7705cf0e1b81884e362198e8b6fe1b830c371d10fc7851a8e0b211c176fe1b89885e3c20ec7c5b88d754879c6ca766bf923099f42591dacf98a87b4d704f124764d56f6e215d18ddc1b4eea7aece3c439d43a88acd0ba0082dd9be47abf5a93488d698e2ae4abfa28906a3c41cf09313e441945e4ccb5305fbc08e3b3e13d4039c80c5e3f5c7fd7e935f1dc8501c7e4b856368db95b1c5d6774f6655a0f563078032d0c3151e5589d7e22aa1ce387b53caccf3948074471d4269e21d555593c784d4a7236e665f1e6d135067d28033bf80aca7f9d5ff21ae742427e1c10221ca101ea9c4c312ca66f59e655be67f4db70ba3da0ce99ab7e8ddd0cc7ebeed45e202f502d3ac911c9283ec4749b8d516eaf8ceb93c3f1e04c70d62eef0eca4d4567946017e4fe963bd37b674b38864d34915e3eb3f7d5bc3e41fe1d3fb55ec237ae9c5eaaf1c1b1678de7f70e47c73847ae5161e6b1f716ecdcba6504f293b032e2e2f7add2e5cdd7955170aea3c2e7bea25822ce3162d6ed4b0b8fe34b31dd66ec1a1e3d2782360da7491e407b33564eae33ca341edaef339ec57bd478da4fe173cce2b240de4c9f3f7bab9f1f5c7ad887bc43b102faaebe264f8fabdd0cd945d57e2d83571dd5810c2e088792ec5b107fb72c6178de02e9035febf195d3b7ec382973663c667b8dcae925db42f9a6a4d6d11b2bafb5bfdcc4f511c817cb65149b6c82b0789e3c8f82c59e697436a83ec4ea8c0ce648be5af680cd8be19c53118611c12d433ec0f725379c482f43c8a3299d4e9ce233b519513f865df1d98f6fcafe88ca7ea40fa55ee6a78bfb988c0910de112e09d2a58e902f524c48d7009fbf0a709c2f798daff67d74ede3b86845db2bcab769cda8f4329cbe1d8eef9259c9f839fff26d520278665b188a194775d7860cc1985a37ed1782b35956585d2ce6d7dbb0bccbcb9759a9a5511470b778bd9b223c649c9782bb0c969b988d252b38d6cbead032d1a169fcb4511777db2662720c24b32bc720f224fdd6185e8378b077e13dddbfa7ea4ea971c67147b9bdc2c6bfc74ad6c64ad2a99e51e3c971f7ed57e5a9f734cf99c8b1791ab664ee2746846202a124663ecae978887bdb0be5e864b1fd8b6225d3e419b7b60b3007874fd4b6f5fb0ad1e7cdb8fa7d97c75e3a3c86e35e9fe2c2ce6335f6f92251e2e2b292c4b387fd12db90c45095b8c098796ffb723a2e289eeceb743b42f661f37df00cb1ef3bd07b0b6dac6e4347e53da3873b001bca6bb05be40ac25e350fa89b6e5f89e73b9dd3307da2ee839a8331dc34546ff0e580eb189557652b9c0379136b12b617830bd47f3fc7c8a6ecd3f8cbb09cc7ca2b957dc89f06dfbdcc3e29a91ab93cd69dfd74c1bc5f4439da2bfba5c21d99c74a6f2a8f5e94f81cfb36386a768567f2aa6c4d3c8eb11afb384e5f3f2bb5b8ebf1605d70be6bc4881e8f0b00d0f98e58071d733e56f623b3f7a83b2f9659476fdcdb127cf35783377325f54efe6e51adef74e9a27c0d4fd2333f0d0e6e3ae442697850b6fb78ba836b51e4c897fc86e22a9c6b44f8f33879664f2abbe7b9b98b38179d477490ad53339e6f05beb2436315f1ec09f93c3194dc23b57b68bd4bf59a567187cbba3fd513eb64a756d773327fe765018fba5cb3b40f7595cc4d41be72f4c13c56f72b94f3f1127f757a211c3bf64966243e954521d697b87733031aced1a2babd154ae83999e74cf76ba8d7f3a0f46c7d14f447c0edeb06f2db5ff685268f4ebe0c4e904e7d2e2c57b6be847ca28a136c853c84d74a805b9b357f9a6fbfe46c476eb33f8a5c1ec51b5ea63257635e8303b6814093872ee5051b8b743d63934d70fe00e7dae088e2964cdd64976c50687e9fd8ae9bac68c4ef3a4b4fd1500a75b8d9de754600f73d9991383fdc338c5b34df2a3d4d2267fb6d5fcc704dcca5aaeddcee6314bb31943ce8eb035f325fd77d7aaf006de65eb0f300e4559006946d5686e3738cf12c6b3a0a65c8f76837e2335cf30c9dbdbe0e8271ef02f74bd96697705c00542b2a4f112f277d011ae34136ff32bbb07804d5d8a0b660cfbe211dc71e249a3d44f1c2504ee2793a847cb6f53bae5d57b6d916d262fb5d1a83c953cfffce756fcf8eebc17b9b72f599e764f0398e51509fe32b8d03ba8e8ef363de7a5f3da3c0b977240e609173b1b2adcb443e249e33cb82d44a16ceec0ce9c544b1d0cfaf53a3c038a57c2ff3d3a11ca4203121df34bd888cb9d0648b5bd94516ca40aa74a6edfeace1aef8271feeab48e3b7c1eb74fbe5fc95e91341f1d91dd2cfcb9417b9d55fe496b3c80d7991dbf22237768bdce92f72a3bfc84d679107ce22b7778bdc7616b92a2f72cf51f25056f260a7e4aea3e4fe4ec9570e5c3f2577fb0a3c17b92f2bf94a56f2d051720fda383b250f6425f7fa4aeec1eb774aee3b4abe96957cd957f270a7e46b47c9cdbe92affaca70225dd77cb37c01f28196bffc539d47f199c19041d8f07730aa22cb12a3f7468d973ce21e63ea34fdadc846eb2f9ec5d132d7f234d624ef89f7d4f2dc427a49f6c43d755d8def3c1e5350e7a0bd84e336be06c9c5277275698be70e9c2aea5784df0d51dd92d08b82aa36547fa1b58476af134f0378a2fe125c58cc2d8c7f83f256f0f53c8e9f44b4e7e0e5bdfe8d5b8bfac9a47ab3ed719ea31aa40f0bfb4e74ddc2d6933bd754b291c426501d6c006dc1ab3824c1e2a9bfbf456750df69f6758c21dd2fdaf82e8d9a99aedafb703ce0d642abeef3ed05da785db4cce4c42d8ea11c55f59b2b09a4e17893cd51efbf464fca1afbc4a8f6f51e8e07aa81f619fad0521dd22c57c559112e43fbbcd4b5085ee5b742f9bfbfa139dedecf0aab72b2ccb88eba75dc33ec2ef619a669749ee427ce60132b0c9f5d193c757643517f61b0be96ccf9ba892174bfffe7e1d9f7ba3a3f9450aeb6a1e496fc980f3039a9249f0b61663dbd3e8dfb8467d6e72a6f5b78627deee513bf7dc7fdcbaab64fe83db5a648f710c4a347bbef8f95dcda5d9d61aa63989d3854d76bb557965f9a9853add838c5a4ead81f842fc662c8587274d1113e2cd179afe20c0c6eb3750899bcbef2bd8c38caefe1736e9e795463b038ba84ae0d13e1ce02e4fb6fd4f1a17856ee1ac92bca17bde2337fd6f3195c17424b0b7b90987d7074b99b7869b764c1fd3af3daa7d63ca73b525f51f971088e49d55b312a195ef86249c39127e9230ff5642335004b2cffc8ef06ed81d7b8c678803fd7c90f1befed7e2e7c778d07836a28718f894a365f63e53cbb9f1413aeb91e785cf53be9b914e0bbcdbe1e85b2d589b1859e73e981168e9c84ec6af12606188dcd57b831355e12894f229d05c9a22b5d63521e860dccc0de77bd87d58f32adf2d536f0bbeebeb39dd3730f73ef16a6dd157668997fabd790c1acbadaef26ef6ae5f44279b8c7feef26ee15e421efb826e8016662d517e0badf4c93463ab1c2f07baecef7b57ef910bb918ec3eae4c1b83f4b853346fa29ea77f7e23efe21c55784d780d2331f633b36f3793657b8674f603a367197aecf1fc9c5c1f82fc1f6fadcd7762dc1f6843a86a3aafa5befe239ba8ae6b4f322bfc53f317f227b4bfb7e3bd3ff673a7653c5a9717448fc99ceb99d238469edfa39c3299207e7c25b2ebe1b3f0c3ed7e63ca0a542be94cca36b71f9c25934e4f29d5ca27d65a78d958efe41753d5e5533916617b4264bb826d7350c1359213dba079947e41cb32655ff5d822536c558590380faced8540759c4d7fd8e16dd351704678fea184bbac7686f957d032b4c1a9e3bd6b3e733586706e4615201821de20de4dc027416c254cc095e58371d3dc64b6ad952f40c88892736ed0c8a5f74a3673f8b9f64ae051af725784bad5efeddb847f7aef9b9d847cd39bd509ca3e6da24eac9e70fc01b137ca4bb73eac03a9223d3efd5f5704b091c5677f2f4908d4a6ded2e3b956009ddb75509566e6dafd21ca6c39dfbf32a47b4f6371c03bec85cdedc4fc705cad56cfb23aec65a6183d579ac953c95a3db984616942f4fe6935e0e4fe380deb4cd49cc96c13d62fbe5e541fc97d9ee0463a9ceb9ac309f2ddd5d3ebb26e54d7d9ad42b2f5275977193ca8eadb1d5be5a5ca64916ea3f19c88bab7a2a77b7b8c24aeaf4fbfd0dd84e5effa9f1b6d7e66fc44cf2b8ebfa56956bd7b736fc9c7fdb58b3a7c6cad4af99ebbf128b48a27dab93dc779ea283bad7c15fb6a642813112a267d792ad67fe2b70a7505feb8951bc876f57f5a27138eec0f769e908bf462d25cd059ced3d7bf68dc859527bcfc833169317ffd6e6cd6dac248ecd15bee5db08625417cddaa938475446d8b195afc5336a3fad67dcf6a134c6b9cc1ab80f2d3f40550b1bee9e3a0350f725b6befef26bed1de33bc398241cc624c1760493937dcb0e2d1bf847ac5ca618270c4e32a9931e3c47f71d3eec5fa71e3fa5fbc9e23d212c0a3cde77962eb1fda2549804e67332b4a5e3ff92d839dd3ad01dfc22941357fb49f3ae6704f53372065be5db537473d7bef975d690f433376d213ce90061d150fc2bea3f40fa1e8307673e37ffeb58caaf32e7efa41bee0adba7afb4f32487caf2cb2bc263e2ae30973056105e5bd4a7d5e73de423d264e5e8f1c3146172f343dc2bbc6db734f8a152616784cf9dddcefe18ff46fb907d958ba67c2098dc4cee6d9dd322ea2fef8e92eb3b28c78b0a2ba8c2ab12c053bad8b59fe7175a338cd5d89833c6b8bbeb833d3675f50edc08fc9c575cd7d5c89d80d755fef6abf5b6892e8ed6577f4ed7c5fe4aaaf3fc32f214e77f577a5ad6c8ebbf111f43f89c28973e6a623d19085f8a3e6ba82c47648d664fadd1bdfe4fbf0a2d7a46a73f6988ce1ec23fea9950cfbd9e438555337b4e96d47e5e9aeff60bad01c53522b14d70a831ad9eb3f9a9ed87688b9cd35f433faf706ad0f85afcd65c8f6f623eb57fa3fb1d43ddc29295e1441cfd55796a047333aaf31e4a05e5ee3dcaeba0fa21f671594fe4736039b560ef1322eeaa4760f5fb8ce2cd919c8a28f3d3e0711f42863f333932ee13391cb51f4478261fae3e6fce75ce15ed83d3d1f7b1196764d683cd17fbae1e8d74cdeec6e1abf7d3bce5bf2d67adc679150ed7fbff448f483adf9b7d22852a37fb469f486aeb74f68a6473c6e83e9a7e8f62ff8a69285925cd2fa2b9239e91bc76fbcd51fce3de7a60bf0363439a4fe457123dac792fae872fbe235f6941ebde94b8583d711f5d0fd9e73c9a53902871e17dc7bd0eaecbd199fbcfc9f7e558d5ba27ca1b7e6ead1af785f2e3fbae7431592d1ff3052a8f3be25b92f81df7d7fcc5df3d3156464eb2b9144a5c6441dcd1dfae79461ef5b7a37b77abbfddb8e3f7e18d7e98f5b557f93f5817d564e5aa5f7a630c1ced954bd64802478ff64277a67b8477806adcbd531047a5b69bee27cb3c9a50bcb5719269a97ef253f313d3d308683b127fbcce2b8aa06de9f222e7f29bbd1f834f413c00a45e32f35331f765f45d0af51bc40710cd5808ab726d0fb64c4faa9aff48d6a5ea6745f66f650f76151f95ff843c268a056ba21cc3819fce6492a3701dc3afe5c8751ed9fd7c1ba616b19e5b33aee85df531c5fd03510e42cd673931f184268f7db70ea1262f1ecbb93f92c7c6c8c5db39dfbd27f2b5d8bef0df871510c44c1c470c81960ac710d24d47ce20a4ffc95bfe69e2ccfa2b8cc780f0603dc71dd2faec8973c0b5d86f5fea3aec1b395b9a54d5d55f3461407df44cafab7a5f274bfadce9abde5fec217fa9fc09d56f8b575c13ae023f5dc4f31d5303bd43b868c8d73a310ab207c91dec6916e3583c075231a0fcd275d45d483181e0f3c6950ed696c55dbd4d3bf2e3723627a6330edee2874cdcbae6796c6f4956c7bbd95f35b9a91776e6c1359ef9b007e8fd3ce0560e5a573ede1d9e7dd5479395057f5e6e5c85a7db9d83fc73f2a013e22f633144a99e86636115dd33f984c4cebbd16fb333f7aea12ffe9cdeca0cd65607efaf730b594c2edcc7f7be4d167efe8afafa3d90696c7d4ff3fcdca4119c57fee8fd411553c47db193d698a7756c079d23d4a73ec2bd38e95e6e3a7af4919a5784416f951db96977eca3190805262fad235feeda9e7b39abb11b31f607f1af5767a4392eb2375d7621e4a7da9b0866ecfea39e3e22caa3a3bce36a4ec4afb3e680308f152eb44460a5fb5e288bf6ca12f7b33e702c2e5c86b2f74d3783c24e7bfbf59bd7739dd92414c3376397653eefcd94b8a8f034e6e0106a523346807d34c83795afec19175c3284c7a149e1c9dbee639d1f4a1301f2bb4da6c445145ef6e7afcb9bfa288a4d2b5bbd67da96bdda5a5c607999696ffa6b2b74f4de8c0bd383a85fc4956f472fb39d15055cc659dc6cb24ec1c94bb8586bf5e76ee97e9f581ca43ff69eaa06fce0a2bc3c25fe6a3c530f5c705df7a2359486e53c8d389c9b62b1bd68a360b7b8c92bc879ec85e3c8d753f3e81ac514ea268e514cc3ba2f2ad465a18d3ac3efac781ace316df31d50eb55249780b9069e3b847fd5d553f6466e6943b7040c86f83f031ee3dd3de8058efaaed23cd4e7726e6b59a4c4e7eb5ce30e1953e7b475f38e3fda2398f06426073aaa31c6446a2fe277e1387e6d4387c6e0486d689ab74acf3fcb1bdafd3de967b3c26222ef69f3498be0edc9551eedb8cb47d0f6553563beb41729d5c109deb050d5a8b5fd6a573e848953e35bd5b6e319d98e9e51f8551ee18d75bed963b3ff8599d386e6c3d23956fe139a6f4c7b7f2e6ecc13f713bd39cf66cea3ac6655cd5567ace0662e2fc2016bf8fbeee7cd76f8815b7efeb64fb33b7fb6e339458d3ddaf2db75e6d1b6c6fbe85ea48f37f57d46ffa4794055fe71c7357f567e6d53e7a0755bf7f2696fdb11c9758f5131bc8e9788a3ab78896f8b556de8df9d876a75e41f9af2551c3e66f7e2efea316a74e4f8768c35edf0b7fe5dbd3bdd8ef8e0a22bd7a4231ef277f4ef9c3c37debfaf7fa7d39137d241037f5fff4ee1f0140f60e5f9af112bbd93877a158bb9ead959db43504fbdefa33c87ce6c4f73945a3ddb6ef5f0d49fa24ba6c6ffd75cdbabf86a23472fa47177597c8e866ec7977e8139e3d87b47eca1ddd773f51ccfb9d2657f8dbc9b56dfbd2bfda29dc3b9abc63f6c60af4a57f9d1759f42b123efab8b1e3af5d95f27d784c997bb8a553dd52bb29d9bf89675f52d2cbaf212dd1b672e883106721077e4db8d3bf2c1eeac3bedbdf3efbdf6cad17502489b14d3310fe2c1cee75d92fbe9e6ad67b0750735cd42bbe089b5ebc41ef9f738d78ddcce45c7efe4cc37f2112bbf1ec9f3243d32af694fd69f5abf7fab5ccfca2f8fbeafeabcaffb7374af19f157c9ed1ccfeaf7ba8725eea959e78c567e7eaaeb425d32d829cfe89258b7b1a8fef26bac2ff11f303dd0018b7b7d2fb68dfae64c5a3d4727cb4367af4fd7796a8dfe7d7a7d76e41db1bd3e17b5ee7abbd7a734f85edef66fd5eb73f5dc9eb3bd3e951a73e317e1df77fb7d523e7433ffb3f2a177f5fd34515d5758be3bca7eba15324d0025e939d847fa84ac0c27f2ec2a1ed5cc0fa5d8fd150e3a3defb77b663dca731431e6c5ca1eec68cd8adb7f3e2f4927bdf6e8bdfe13f77a4e74f6a561e9392ab4f520df81f647cee433ddca15a3f46378ceececf3830b7ce7ea999c2f5905610a40d8833c797482f2c3c438c30877f2d1fdbe2d1e435bcc4d096c57bc552a71915ce55f556b8af87e1ebe31fdc62abc2f34fe99cfeb00eb9d240f94605d9b7dfd14a4e6557fb3d0d15ffcde8cf3fb2ab8ced3a4fce9eaf7873977a12496a1d08bfc9d15f9e22873f90308628cc1f92c061ca481e5f5fa9c3bd667e0a73367e5e8fba533dbdd8a53faf180f6bf5d86904eae7a7d1e801abb7b3f1e202c72b2665d5825d1749ce437ae53ae317fa00ef052e96d4f3c97eab4749ccfe47ca03e28968cf8cb51db59dc5a1ab6e74972c9f517ecef7869ec3f8b273441f55311d4c53bc77e235f65cfe8e3aa2e4f59dca40b94fd160fb895d8c22b6aee51634d1bb5366fd5feb4f7f1aa37ed04af63f775ad758434f3037bd47ef6ce7374937cc7f8ed0787800fe13a927da1fdbdc99ab7fb3ea31ee948b7bcbeb6cad7685fdb4933703c8df80a194fbd3f744cad73de299b987a4f34b6f63dd5d86eddd3c8cda9ceeba3dc828e795debf06f58ff64faf475ac5d08d01af76752900e2bdd8af61ff2e3260f9d2c0f5deb7f1dcbeddea71b7d87c3cb0dba6471c2f075c866a3365ffb9c8608d333e0bcd2e77bac7e00edb763252f84dec993cc6cce5f9df3eebca76b7e700f6badcd63d839a06b8218e5b237f2c450bd573b270c8eaf29a73af1a1d0f8baaf6bf25cb4cf9d63ece013c2f9e6751d186f937bfcb9fd5c877b2ce3ba7596dd133a4b0b4334c232570247af87ea63634df2be3f7f5c20bd6eab6764dfff0cb1d68594b8387cc75c16416af12bdbea533bc54cad4b200d8f01eabd1195edfa8fb65d8373800bae033bf0d8a147813bb516d763aac662a1be034a5cbc7f876e096d139c8f4dc75862ccf1873a660af7c42aafe65862bcf2e7eb19aa7130f5a2b3aefd6de29dddd2252bfc31e6ec2c7b653b77835eef3e997351cd13e524e9999f8628570e9e0bcf59dc8c1d1a28672f6ae9cc6d3ba4812f46d744f4d39ffa1e144b5aa656bf89f17eb7cf685b4674e6f413fe75bd0fcf5c7f25f7693e12cabb87fc840b9d29920d8dbeb9703f0574cddc23f9f9b416f06e4fd62bdde7d6fb84accb3e79e6fab6fe56f15914cf807ba4f78272134d9bfb73c5bfffc03e75eaa2b42ee3815d71731e9d7889b77ae3ca3f38e684a9c36ee6f03cbaae6b5e353ee8f538599c5ce4f7ba9d4fd5c97b8ecd786325efbbce0119738d7bf0787e577ef47da3dfae516c83ed559cf012c4d7b914b77c217f59ae8200cac938d94f707fdc17dcfb38c9fdfeb55f2de82bb7fc6a6dfef897e583605ebbc9507f5867436b40f2a7d63fb55e02a93805a9552e6c3d09a0fcfe2b7386d2880be52faf5a39cc7d7e16f952740afa8bd7f9db9797a981f38856f277ed43c33ff597cd23c6630d3b7cb11d633ddfd197fe6a3cb6e4393ab9f653fd556b6b9742a18d85c22135fdcff1954adf467ca5c347f6ebf8f6db6b0bf2b3b3ec7124dfe2fc5df33511afefdcabbf3b06566178d8839e6b178b953dfbe639aa3fb5b86148e257de733c97ea6de25a1ee550ef091231f16468b3fc427926bc79ecf2b7bf3b3a894b79d7712979563e8a4b75e8fcbf0e2ddf92e7cb1ec7ca27c4d73be2b977f6fa961df2ebcdbde91f1822cc6daa57a07deffdd8beb376fe2f44e3c1f5f8aaf3bc7e4e763fe7dbf895e67c2ba655f3edf7ef9353a3d273bccc73c25a7fb170afcb5f66de6c7f5f267f8662856812ea7f7f803cceb5431094553d43ee6f51dcfa85f9ee13637fdfdbf7bd426c8d793caa9f7dd96f480fcfad8bfa3c9fe379af382ae32f1bf65f1bdf6e1e7f8927467d9f1f77dfc7ccef55192b19d35fbcd4c6ca27a5c667e4bfcbce11c4a387fd02d8bf24eb7f67fe67356ecb36d1d924bdf30faea37e6bd6588eeafec5b292bbcba7faed739dfdf6716e020811b6c155bf7db62611e9c9a87fdc98f6479fe65e6a21cc08251e4681949c3c49dc05fd46cfd013e5495aa91ce19ababcc8115cba4e19aa8d959312279dd736e3ec49dd23fec2f49647f48d7bcbd76375f320aeebea483f777e9e827482cf0aee2dffa69ca76fdcf0dd51508d21f241a1ba38d2377fa9909ef087218b1177473eec5d6300829d7a0a62541313b93bb517c88bbd526106284caf7be595398bcb6b3b6ab3b3a4cf9b808f4e6139e25692b9092affea68eb439dbafc129bc407abc401cae7aac67733fe1f4535b681c0a17579fb12bd2f7b9196f640d09f451e6f5daafa2a5c235cf5ed9ff36ae9d9e2b7af0e8b8370dbcf3e19ab47bf64784839c2b52763212675cc71b0b3cee17813d7765db56fc5ec92dd78be9587f274efe2fa23323ee542c757adf3f6cb6b4dd3ca19d51abf7d417ddf5d8437b139a31e1cfce0e2f305d0d2e2e4959b584fc5cc1f8f38bf1ca51eba8e9dc3905bcbd313c3af36210fb8d518ef93c703deb35f362b9c27c3bbf63926efadf77f3b6d6059b8b65a860e3cef6a652bd6fba470f314dd177bf62051b68df38a7a8e50ff49382e700db278f0a7e37339157b21aeebc4bfaf9fb3954bf81eaff6cdff976f76f34d925fd8a2cbc699e9e0238ff7fbb5cea9aa7267ce285ff3a68f1be773b6fcadfb897166f2b3e83e2e8ebe6d5d025edc79ceecf357f1104e6e63ce103dbb1d4baeeb4896ce6c077515c47f5afed06b3c73488bdd630ae5e8f2552e7cc7486e62b1137bb6e9d7b5f5a4c2ee86ef40d8ef0d5f2beed986afa9720e4282db8e6bb2db7bc8e46ff78bcf768fcbdd2577a6e777be847bbf892692f099a921cd9a3224e89421573ef47afc55cc3c0087c869f036e1a275dcdbae87b0793164f8fb659e76dc43ebc7fb49674f70fc6e94ef8e6baaf9220afad33d8315c8c8b1c5ab6be4df10863bc6dd195cf1e065f0dac0596dc50b99fcad07b24479466694d3b70ccf1fcac6b1d2e0b3e8fc60df7fa6c9b8a69ef86e97cff9e4aa1c851acfb3eed1f90bd8c54d3ccfa53d4cbc25c2a8aef226d873709f77141d3919d7f7759ef91a27adca2f699fdbd675347f035ce7f0207e27ae31be41477ed96d7e784f5f5362e586ce7483f6880f25e82b9926cc706eebd2cc34a147fe5e649ae8e1bf8d245fec9461106f2e7323c997f8ef726624b949fe9ec649ae3be4ef6590697286efbd089926e0dcd9b991347262f59d826aba2bf92499953c32fa0cad272d6c180108ca96f005512c6b1c2bd5f2531d782938329847aa3e56c8791a1541ad6fc44b497c5d9ba46f96c0609f705defc9d8f7a8fece83745ded9f612ee2390fdf2d42fecff0086bf8d54176ef28888b6910178b202e9c202eac202e94202edc202e26415c7c0de2420bb65c3c932dddb3bc7fce1cbdb052a0afdec281d50b65b3aff32bce92a7567658c91b3eb4c58bb1d39d0597bdaeec61ba3494dc7494a1b2158ae9f2b97f4a5c14f09d4662694be01d57bc7a9af2d9c15d5a4733b1c68b247bd3a5a1ab030f18fc41982d3d7bda8fb460e719be15bee8891b6b6256be1bea44370f732b1d7c73d3cf9755da8b66f6c0d04d756c2433c1ef4592955ada8a5b408abcac85431902f560f523492f95dcc6b4534cdf844c1beb9876e039b3855ac793a747374ef64a1ae63eaf463e39534a9cec17ac2e08af2bf1776dfc80ea1a615662bf99927b4652e10ad4bff7e8efd99c6730e164a5113bbb81f15b12de7e0f17ed669e4610d7791a416513dd8add367ba941dd3790518f34a0edd453e8e808bbd13306dccad173cf28a2d6b590df9ddc54cc2b5ed6e173eed25d555939ae76b39789b1895d43c9d77c547ab6fbaac4accd2ce44afcb9e13309516c18f7479cc7ea57372d223fcd634d5681ffb68ffd74780a30f6cbc64f87a567439d40c5b9cd7c94f9704cf6cb6bb0e3281e43f9d588ec201ebcf97c0fda9cd08ece264ef179e128d957b980678f7397b54c0cca410cc7dde2f7f1c488a6acec0ccac1967cd7ce75aaae59f415ba6f60b2acf223abdf970efdbdc9ff82664fabee3a0059c1d859cee8eccb157d45411af6909e234f33c67ead9f81657ea98907066703da41caedbc8526b608d415ce1d790ced7c6ea60ec94d2b5a1eeba5966697f5189e573d0b63481fb3dc756697652a1e3c48dbb51c56fdd43b2971b15d4920f7201d6cb30e3a8b5e83781069f2a1c2670a799084d2e655d90ae7e9d88cbf1af79f1194c97ebd83fb3118fbbc3ed0e4037bbddf357e72bd49cecf279606bbaef76c215ff7f1d99bc72aa8624cf1b0b2bbdb7e25942b2eeb59281500eab986a90f116658952fb649902fa81f5d2646249375e05d47cd5c7b00cf51eaa35e4ccd33627377ee4f00e7d928a6b75fd9450279cd1ce4b1d9d74b9f1fec14b1aa5d7e55e2a26b3fe838d835445892413a3c7a3d72bf00048c45f3a58dd182eccbebde9974ac9b6c2284900f1f0d4707fecf597b66ddad21caa547b614184e2cec87efa2211d9df9811a4ad6a14d430a08816be79b0aa7e9b28faff7b19a5b73fd53f318f256b4fa8f5dbbd9deb58bdcef87d3957d007f80061bcfa17b6198fa0561bd5ee1b7165ca75c67d6e7ceb8bbc6055ca3f814a4c35e08ed21264f46e3a96fd23cb131088c9b0438683f790e8772f9495feccc41713ff3b87266e67adcc167e5e9ddfdb64bb5d92f76bb8fb5b1b2b9b1a6b7c7de6ff6896af33152cf52cfc318706b01085f0d10427be307c63d666a5d5e95f81c2b63e5fa39d5fe34ef6fd5ca1c7dfbca5706b4269eed6d1aebe29749c7b9932c488fa5dfb73828e76a7d4aa9fcac37cf51e2951867150ca94dff07d62e0bb85e14a407106cf770af51fdd2d216cb156f95da4e87f66bb9b207bbc9f887df21fb9cfb0af7c43350afa81f7d0e8bff50edb367b47020c603ceef41f9028e5eb9c1e7e29e8cbc21e3580c090561029ad53b6d47d9235c27418f30f6d7605b8f0df74bd72e2298c549aea47aa2a5bd83b60383b5936c0c61f3ba34b9d7a03f8d110fa4ffd079263d6c65753811bd524b6627df199d7cc8dfc609d453a7410c3e7f158a5293d508dbe149a64922f97b9369d200ff7d31334d02e8efd916d2cf8c5ce3669a44febec0bf87d1152679a513446f708d909e2899b41686c5c098d1df27cb03eb932e279db2273ab1350b347614c8a37c5dd5b58aa5d7b70e482e9677fa66cb0ad3375b053ec2b7bb99fb4c7d49be92f4967a39626929d6c6eacce4828d2991bc8a52c9c975fd95a3ef1551771581a5b18edfc511c07923017c9eb972bec0ff2d3f3d1cfd7e785400076d2e7f6d14bc26e5b95916a626e821b4bdec525d86b27a22f73a9e2d7e83b466f251e44bc5292c474846a1f756f22fd8e812b8f812f806e7e040bbcd3acc34619a5b7131768ce2f86ee571c00ff3159e63e23ab33d996fe2f775aefdb7631419c66d477d4d305eb98cf67cab48e0a84866b6a2784d9d676a137b12e095189edd220afab3b96bf7a0ae907b7608fc747158a1b3fd4807dd6493b19aac1c37463909927809b84184ce605a008fb78edeb8b7f5f9e204f73ce8eb03284bd63c8bc5aabfa1dfb71967f3b3f06b271f78ea3db96babc06fe9cd9e75d83a44ee42daf7fbca1edb479f372bfb6503eda37fb3751a3cb28d9e19b74f6487026def2e3e7fc7def3256b076d50cdc6b8b94d7b6f1f2f99673b18bfb59c203f05ea31dba94b3e7e17e2ffb126b1fcfff05d735fd9836f9a837ce6b126cfb8b55d80f9ee10fb08f7521dc3f3e5f35ccbef31f0fd1e972bf1973290379b666e80087fcbfe6c9a0dc0e1c4d0ec6d5d16ca62f877e295ae1d225efc8c1dfc68ad5bf6fb0fd347eb3917acffdc959db92f09ff39be3e2b8f2d71b369e830f1197d57cb3835d4e4c5d0ee65409345e018450979ff1cf75fc1fd558c51e6c72330a9fb4dff6d678cf2178aafcd9e33d79e7df3a05d6a0f9205fefd35140f11c9e7fe313e2689b1679f9b634e2ddfa5fa1adbfba2f38cde3d3f3f32a6e658762ad619eff8373529fa0fd3edea188d22d11af8d1b6a5eb21ddcf97c0361c8f88edb7d904d5b918969e9d55d859556c29aeae857a12f76e1d32947f322ef250e472d42faea10708480ff00c50e16376f3d987bc3c0b25ebd0e2793fc47f351b63cf2b718d5fefa6e276c58725aee122d8f43b1dd1f99f2bbf3360f362486cd5ec41bc009e232948c51df2618f1ffba6be536694505ed07ab260c7edad9d725cf0c343200d8f903e2746d17b321eb068c503d075ad9849d7755bf2dd4f881bd4380c6e979cbf924fe7bd8b7aeccd225f3a337d289363b39f9a65af9c598fd668b4f1225ce3664ca08599867a7744daedbe6b57b2faceb36f628d4d70bc1ec591689fb089c3e5ee552ee275bf9727de47ef85f63f07e5b9e72c8e844791f93139b922a945bdea8193c73aca9d53e2f72537f48c01e47ba99a0a55fcad9d73d0d55f15f52b9084baff4c77df9908d7008caeeb802bec10783f283d93e9472309c7a00f8e6e2fcc42299a057c70fbb9add86b1b17a87e1ef29d0cd7fcf00ccfb4b21c0d35497c4e26a48c6e27e89927f4a0ece71ed5afde5c4fdc7703d58d6872c73bc430f3a5c2f2d33ffc1e9a8f93ff60fc360fdf7aa4bef6c63ecaca90e94793e373dd8bd622bdae3e6b9af4427284111ddfd16790bf6cdce1477f208786c705c2fccf6fd696927efda88edc33ae7ba6d1315574629b47bf3f023eaa2d84b474cfd78a6dedd59b125fc711c87a182361610631db832594c83bb6c32e5faf11c403f8bce164d9e9d737c83a557ebdeed88e45623be038df75bcfb41acf39ede1d40ba6bebae1dfa367cc672877de26b79fa3a331ee818505f91d588c4a41aef8432c1e35f0e28661bf7b0be5aebe8c9ca999d7d491ca038a464bd2871f1cfd081b2c31b403b2594ac63f8b68f83fe287279f3e0391ef0d362a0ecb8c73e1079d63926df560ed3960fa58b5e57b680d62094d5cce3431040fa48a35398c273798ebd74b80d9d29d4fbe01cb61eb2db165037a5fd3ad1b5687e9dfefe01191f48e6b17af6fb2374bd66ab51c083ed1371eda36b0c222d514f9e9c347dd5b1ba4067dd999e684ff7a01cd19ce6cc4f834d28454091484f9f18db0df7cf0d1cb3d8bdcf3b8b0ba5e111ced94f6650d7fe56d1ef1d5d4193bd28484184d60dc58d8acc4f4d482f503f4f5c471db475b4f7b2eae3b8a1b9ff2b7bb053b6fbd844ef6a7dbfc33ef46e9b2fbaa035bcd2b37bb1b614e29fb11e2d590ced9772658b88cefdbec5f9d0de307a170feae529944149731cb1fa86f127950d7946fc2bcdafa513fcc8fc1016ad22c3676c36be33a37bd81d231a27fb2015ae6278dd7cea799e7087a71c2dc97a81f607ea23b66364a75de1d9367c940c66c986f610be351797c77309a42272796beff345e2390ab4fde8b3a94e1035637149eef303d247c97c6df59bbdd283b5b18ace5e65976df771588ff3e0d35ec7d5753a08f859b9b255e049eae0d6f5d4ef76831e4b4a8f8fe458c0d33d6df83d0e6ecc15cfd8bdf8fe81e93911a7c987cc7bdb5718a69ad3c03769ec5585c35be14cabb7e6b2257321fc3f3af9920e826dfd1e252e503dc93c46bd49d9bd3b6a12d48330063c3d3bed5cdd477bc4bce7e42707b0b6ac73750e3bec8167f7b27a2ef1a9df8d25dff45560d9a2efd408e3953df2f3451cdcefc7fe05242fa9fdd5902774bc9dba95347cac7f8dd53880efe893793fc81334659427b840f15771546a921e31beb28b962af0996cce37b4f99d0e9bdff90fce15bc872bfadf3cc1e7f3adb846ae4efc3966ea87ab3e8ee83dcb0c7dbec5a7eb7cabe2132bbfbdb4e805fce6291be26ebe16c2491da9fadb8d1cb73bb930a46eeb729d0755e1b9b27944f83bf9165f789cf361d88373e8e89779fc5df94399bf1bf5c25f2077087e17c8167755939c5aa9e7a8c04f67c01386bd501ef54201085a0aed0fb3376fae23cea74e2da8bf264bf24cc35c1cdd54bc784bf3e54fca3d7a0f1dfd47d6fb44effbfbf3f4c85a8e9be78f3d7b7fd25afd5be650e9fc505264e2e3b5171b8cd3b2dfdcc9a38273fb99f9530e96df61a949ea33f2db7ad2b7dfbe6e4bbefbbfd1b7df94e18d6798fb967ffdca16b98a47f28c9fbb0b67f23a3670c7dfdeaaa7bcee37cff8bf3b713aff3a9f7e63ae1dcf1c931849ab3ffcb3fb72a30f3ddd9fbb38f0cc3377be348c5dbba86a3bd8fbae7df9e062d83ac58441353af35838c3793ca9576e6bbd5b1756b63ef3fbf0ec3ec234eddcd30bc262bec2beac637c160f725fb48ebe3decf9bbc523bcce6efaff293e7d761e05c2c3a1bd7928068eeb44962546ef8cbf8160e050da7f90df23a8d7b5050f72327c7ef086b0382eb77a5e8e102d87089b4b076d5da896cb834fd8bfbe8fa03c8774f215e7b1dff7d5621b743fc5364043d65896ee2ecbfffaf2ffebcbffaf2fffbfbefcfffaf2ff802fdf5c8f0bb66e10da5bf9ca1e00cd990184f52089e5ba751615301bf8698d0d847ca9ce1d1f5dcd7b1ec46fbf632dba7d8df87ea083b5bca0e796afb1137a39edcbdf9c0fe33716883f7e77cbdf4878567f94bbf60caca4610ee918e706377bfebb46d3b6bae71bae65fb6c8a9f738ed1be18557eef8d9844755de239b36d9082d8b3f5786ddcb8bef2fdfe8a31178ac3d2e3598cfb16ed916b4614efe6fb632e35de4b8ef03197fb3844e3a8f7cec7e766efda839db7cc28ce79d3e678b4474efd1e9f1f689e03ace02d6bf63168d8014fee65f55cb5d2556edbed37734d710f4ec12b5d8cf1f2d0a7e94902f2a13fc8534731196cf33470f4e27bb13e9f3cfb1e6d2aa90af5ec4f4fe48043fbdfc2f6bf554e9ce2b3e528792075e1473431599438d91bf2357e04fcee3f26a7bc8509d1c659eae8adcae07c9aa9da25a76ec593985eae863d48fdf2b1deb726ba6f55e3d20f334fd6f7f35829a66f5f405bf7ece65f19f29d2dd261b26efbce3af915bedec2bed33fbfee5340b59ea8f6ff97f1e703526f7dcb9f7fa3663da86add8780e979feb7fbcc7fa4deb6f31dd7f9fe0f78f0f3f5a7f358c995f84b4ceabb591fee3194864b68ebf869b0ffe19afa243ce955fd6f78f2c08f3e4774e6649cae1322be4e6b6351bebd3cede003cfae4591b97d1c2b683df3e832bfff504ca0f69b3ff4873c5e833abe52eddbf7c6bdbae3380dfc0fbf3b2ef3476be8c1f76251b815bed5af108fa1351f37e33112f69f5f632738353605a95120b92d4fe4061838374009e262d75533d09295f1c488dc27e30aedebb6e4bbff1be30aed3e407f66cd40fbd93fbb66e0d6fbbe2fbe2030bd0f7f20c6d0a1a35579426c3fc9efae1db8d977f461ed40d577ff47ea07aa7ea1bf5adce1ba772bea4d81718a8bae77382bbbc82d7b70f8a3eff1fb5f9a750bcfd7cb919ca0453b47a745bb37e30f8dbeb6d82e2f8ee85a4267f76abca01c5decaee3fb0f6adc6bbfd5ad3e4918739533316db431916abd7277207422022d1d9e3d7b30c431fa677cf59b12dbce5d3274b3d1055156e2aacf2e8a85e077bcfcd625ff4cb80ec8864d3a6d1b93acd3837c4b91c42a327f9b75bdfb99d8ca0d7b6c14f9d7f57cdd31056180f5847e74996fcd67b0c6ca6eff9e08f9de5173a02de81e480d5f95afe549e0124845046d582f2dc07aace4ab9d75092590aecdd909f223ecd79f9d5d7b0634dbe23d7b90af0d75f8b4cff087fdaf80f803f57265873bcf51207decfdbe87cea5927a27b76f5d14c0e5c40f856c8679ac9688d78f951c5d9bc2f9dd8921d05c576978c6cfeec5ae33cbdc27ec651ff9f4ba72d7a83fdeba687d227b9de926607df3b2bef78c11f6158d5fa81ffb91de1675afa9da0b65fde4c7c81f46e38b94ef45a133031473d84ac125a43d46e2eff75107dbcf71855f2c123e89fcb0ca2bb46b4384e3ca7e4f6aac6ff9459fcf5bfe73d6a3950bf0fd71987dbc20325e11f033eee174fce5f3eb90f53f3247d4df9a62f35475e0ff8d47fc371ef1df78c40fc723585be4178f4904df1193a0365253b6a837f1292746b47fac8b419b5f89ebbc917b3803e0f3573142f1081bfb11dc202e5277d92b276fca656214ff7497dc3e8837dc6c39cd3459d94fb7023f3192dcb78561100f8e13298b2646f1d2e57be8f0294c3a7c0a939f579380e30773ee264e088b3316bddb2c4648a3bfd7d17382cdc2514bd749502f9c15ea51917c7697876c52e6990f0e99b3ec31f50c337f6571956d30914cdc0bc72ef23a76b2c86d54b73d0b199fd171622419ca651266bd00da54bb45db66a5eba0c2794ec6c9a78e1e4728973528512f90dc33069127617cc0b61f84c687bcda8790053d6c47e2bcd9a18af47bd2e3d0bb93a347debd44f96f759fc06c9e00e4030ced41b61e47e08ecdddd567309bf71770fd224f5aeca7972fb8e718d4b5e4694cfa90b4fa59c0fbaccb04f9cd6fffde588bbaff1df261ac9c199e07c660fc0de5b3dfc0257fd4c792f66d79783fbe6fd6ec23aaa01eec93e5fededadfed25f9ecfb757b90b4fbc9e29ef16088fbe25831e979d915abe3deeddbeb67a0b34afa45de19cbad3e669365f6bd74d85c83e581433e82be1587b21a41fef123b4f467d529ddc770aaede11fcddf0b65350ba4022ceadc9b87f2cbb53bf5ee3874740ef2559ac7a33961e64966fdd92e8047f2589fd099af7380788b5bf4ad12c5e6c657b5929c2255bc7013a25e7537eb251fe8fe233a97836f83c4930aa03c69cf75d80c3d1720da6eea60317799cad3db7ad7d36b5ce505fed8f85231f1c4aef1e5647c34cef040471032a423183b255ff23f0dcb8ef8060f37eb071bf8700d59cbf6e97c19e2ba0eb10c52713091844c9392e1f4ed90bd4bc2a795917f9bd803289b876cce82cd83b0f6194600f501e5c5dc6770c43411fb449d468fcd249bd4bc570ad2e1e14aa6d4fa473f880759c0f54e185b2ad987e32455d33f26579af24d3ffdccf737fb4512dde227e77bb4e548abe61cadf995bd287dbece6d4f87c7657f04fc04aecff44fc6d08b0e84ef60399a0e4bdf16e17915f4f170b634869e6d2839e25da6770ad25e14beede3d55b76f097d905da716c5dbd67546bd49a039a33ae5392c87cb619f704a618ffa48efeb54347fffaabc7fd2afd65a79efce5edb1867d05d2d3cce77b38862a99991a7b7762406d5da0d5fbdb88da313ad3bffcc4f737f562c87f713c8a9c4fc64fa2fa49013c2904cdbddbe0ba27264eb1ee9367c3e75e704fe5800309ee952642397b2f4676b3f7ef649c1c4329027edc8ccbb33179b781c1147da2f380eb3b8f8502dbb9344688faa675c640711c8fa9ff900fcc1c46f7e770a7d71c8df755f405cfb5098e816c75d79331eb5ad3b11761b977186a6c8c3745ba49de158fa5b5529ea38b55ed75222690ff04fde9950c5612e25bdd7243a883431d548dddfd9d7a2a4aaf5dcf87f75df09e0c40c7ef19a1b99a86f83a176261eb49905a97e0b28f951d975dd57da1de3c1d3479cb1e6862bdfca43ab29f1327a6340bdff91d63dcfa92150538af9dcef7e42728564864e12873f943f7d9fe611b5320757f544e5a47ef0fbce7862d5990f9dcec7dfb1deb74f3190fe2f4d43eccfc34785596424e6bc298dfde692c5f93f428e0a3d8e7c5d213add217286ee0971cd10d577feeec4f162bf177e4037c27be45c13dea99e6b7f6e09d6bf8625afac50dfe7e25f792d7301d66def8cb19e1fe35e3f8ed7d3ab468ade90b90ef8fff46aff2fafd92f0e0fdc5f1c11ae5ab65efd8ec4d8bfb516af274e8c7b8af35eae15ff5b5b4962b2703ff617906325ed7f346af78e3e0f2ef9e6ff030afe08fe626fc2c5c4aaab709353e65d58ff6bb712acd0e9ccaab58d206c94d091c495f9a8d51f55e2f2e145b819c45aa3f34f8e97b17ed8b6aa9a5180fa933a74124f5c20fea317407d3ceca7e79bd3786c7eb11cd097d1dbcb73df74cde7a575cd02e556c9bdecbc515105e54cbdf8ee45093872db348936adb6fbe5b407b11cd079dc5cae7436437c0cfa33cffd69aad25544f7a213a017e36ca5fbb93cfdb15af06796c499feff6c05af29def2a34a92973e6a990135f06ea7d14207f21e25f12d441a8ad5fcd1feaeb3f36cfe2c9793eae517e1c7bff919c04228feab8a6610fa69eadef3c47f9fe3ad0567d386b6b5d9fcb765cf4a1fcba049278ec88a15e02091c7d5ca77c0a507ee0a8e3bbdec5374608bfaee9d754871303d354c58f1056fecb518b55b8774cccfb477dc25d6b4f727140ab5fbd3cfd91fa5b83ea743fe8138e3549cf025e8c7dc94adafbb87266aa271500e74f60d942f81fb523c8fafc406d6d826d6345128fde7844eba8efd6ced5bcb03197c897c0ce8fe13a15a966a39ef14c5f203d0bfaa3dc45f8d75eee39a85e08f704403af1e2295c342616f2105b221877601ed47dcb0fab8efaafe0766cffdc3e272b87c535bcdf77f2cfc060f839d8d7376c1fdb84f4725949eac975d4c472d4fca6ce7173bc9b1e5cb39a06904f3ff3817e0adef6f174393aafc7ed9cc99cc4836a7f83225ac6724c646c0b7fa3738c7f061ec7ad7ddc7db9d6a362d48f4df06c2f0aed8253247021798cb9cfcf227f3caa7d2c777b5f6ee295a1b4711bf6a1ac9fe7f1677856b6ae5decfdfe8c9b6f37e7f99b80f80d7cbf732fffec0e8648e7fa3dcebfa3fad34b70d9f71ee6ac3e95fff6009fe389bcd3db98b71db48478bc50f5e26962208e2c33816792ca910edf57593fc393ac8bdb573337b5127797c067915cd95ee449fac9df0ab5addf5eff0e7fc2bd3c39d63f09af33786b60395f2a7db8db9f38ab30cc7e304feaecda83ab9e5fdd39d73f07d3a7e187b189cf90bb69f3deb2f3f6b3f6f9c2fc06d5171319b8a5581a18cbd67a5124711ba4c34b803080c29b76d0da1e6cff46feb3c4bdd1171bd718d53d93db3d73ab3a3668db2e362e962304fb657642bdeefba313e93759c5aa15593f2932f2571ef1fcd5f09e8e70cf56abd6e909eca2e5b3fe15ca63fad105ea22a1a33f83d5fa87f28897ce6cf7c77388ab7eccf7305b681d03e4b7b1eb58dc3375eb8f75ce2b7db2e13bffc373939bb477371f9ce8946b79faaaa4622f943eff6c2c1a1a07f8c3d8f234cff357981f1b8ff8b11c7e78bf1257fa6c5dc3fa67e1647cc53819c35293490fe1377330318aa5bbec95daeecb3705fbfa32b71c1e3c5bcf5c6398fb7c7872a0ae9ae647cfb6b6b33715cc2e8b63200d764a5c7c73efc484ff63734cd1e7019c633bd6b59b8c9553d89fc65a43e66eb2353f3bf93b689799475f1aee266315d2cad1a367584232177863252335f8253e27e83d79c3573d069fa0dd19f043785deef3c15ea9c684d7d873d4d2ef2b31a9976e3faf3d6ea8df20df0e3ca793abb19ba8a6dd4f29c665924f6df3f23d392c2c86a32e8164f91c7e63b546adbacc3f90238874a9bbbdeabae520e8d6a153917f2c0f37f1caeeedb0cda66ee7601669929843bea80ba21c94a3264e3e5333b7922c94cb368f95de541ebd28bb5b9886dfd7efa94bfe775d1712fff12d1ef5f473ec3fe739ee9f341e8fa7cfa97103eef5a2b52401e7c7c919d0e4307ab707202c47df82b850dd25e64196ace4ba240cd7fd667faf39d0234d66f0419759df358a66cdee32535de3ca778d9eabcbcade92843ce485dcb085ecebf290557eb6f8babfebc4882e9056ebf3f882ce63fbf3bacfc1f16650377e224feb1b892f0d27903f49c32dce015c1c3ddee274bb00e82c09eac0b0177b65a79efcfe229e18e8dcfaf665d19b8dcf85f6a6868ec565f3f3fea495d34dc00f7b413a034b1bf25d70f47a96b17ceb1d5c1b1cb5ed0cccec4539b7177d2d9ded437bf00dee1fc2acf8f2bffff7878f1fb2d5b7f5eef0e1f7fff3e13dd97cf8fdc3878f1f66ab740dfffad7bf3e7ed8c487e8e8ff23d8a7bfc5fbc30aacc3cdfadb6f9b7d1ec569bafef6fb6f19386ee25dfe5bb8dae4a7383fae407c597ffbedebb7fdeeb0de85bff9c71884bfe587d5210e7edbe6bfa5ab78f78ffe7a10f2c3f0d33f82e8b84bfeb1cdff91ae32388678f7750fff0fd787550c72f8e70e8fe6ce7d1f3fe4f165fde1779eeb7d1ef01f3fa4fb70fde1f7179e437ffecf21460fe0399eff5fdcebffe27bcb1ef73bffe977fef33f3e0df9fee7fea7fe67efc3c70f71fe3f61fcedc3ef5f57205f7ffc9097e8f56febd387df5f5ffb3dfee30765b7fff0fb678eebf73ef31f3fcc40bc4b3efcdefbf8618a5ed8eff73e7ffef8c18cc30fbff7388efbf841aaff74fee77fb255c87df89dfbf8410fe133b98f1f8cc6b04720c1f378e186aff0e33e4872f889fbf8e1cb214ee1688c75f0e1f7deeb60f099fbc40fb98f1f6639fca6ff3a1872bdcffd7f7dfc30edbaf2e533bdb29af1bf3e7e183f7fa9f33fff73dc1df375f8e1f7ff97fbc87de4febf7f41ea88d6dfd01ac165fbf0db21cd7e4b7787df0210af7787dfce2b00d687dfb25590ac36ebfcc3c70f4a9aedbf1dde5787a84168cc156ffb00ffb45c7ddbac0ff86f7dbf277f4d578720faf0fbee08c0c70f0624c76abbd0277dbdcaf73b7cadb41763b0cee9d5f8ddd5c7b77556fdbd5ce787d6d5f0abd61dd37d7884effb3f1fc8041e1c0d34dc78f7e1f7c3b7e3fa636b8dd0f8a6fb905db6cdfe1fe93e44bf58eb6f798c26d2fb47ef333a88197a293da58fdf4dd6f6cf3c9ffffaf8215c1d561f7effb02e51ede605e95ddbfd451bab17bf6f95a84e13dafd3b8b5bd9c545eb854b6da723bf44e8e8992f4f4f48ef82fc7da75fe86fbe3d4c3c783de5fb06d451951ceadb6bbb004139acfb9142b9ee4c8fa10c75445227371ef22bc78b3c8ce1417fbb2019e04c4f56ab276528cf5ee07bb1ffd7ba683cae0b36b13ff8b8da91fbf1bb4e6e1f707e7fb6759d1130e93d64ece49d8d6be86f08273bb52e5acf326da1c2e8e682fea631be450bb384191fbe9f6be7c6e897f518ae0f59678ef84e042098a975f1f982f71c85ae038bc171d138686b1d4c9f63fcebe36a4cad6ba90fc0423d66aaf7b27d42e5e969497b20dff89dae3fd4d56e5e23ab91bf9b4524b7e3eefb10ee35a78ff4f2d6b8abf5387ae9e76a3d591d3a2887754f6ce1ceb3faa806678c7d1383cbad31e934af87873630387afd69f5de95dd836b78d1f8e2e4f1c3af9e2496ab7270f6d3e0fa7d3d24f7997ba19ebec19f01972b2877939c33102e97ce6c67c9e0ec19704c51e4a77a0ecf26a29fd4daad9c19e739aae2da83c497301eb4df798f02c7d2f3772af078700925ab34e0be4905c16fa8ec23c7b3d5a5cfcfbe79b87fdad975f43d7a2e898b93bfdf7c6978c1ef181e75624f696335f77944977d3837bf1f90ef6611b697105d972b781fca0dd321cfc8d15a48c34b88e81efb3a2dde8a4d7eb85df11647de7962debf65dfefd5ef3ff969eddbd2c62a40fca93f9b053c1acbc4e48673b47e925806f89ac475f4085d47d78de2f9892af0803e082474dddb922bde4d3887a4509789f5d512c1423798cf1c102c01d199ad5baaa95b1b72df405a0ae0cd42f3f3b23015490d7091b968fdc191f4ab233c0f7e87f9d6ca9e613e2a8903687f92bd47350f645f918f109d015b4f96e9304173488080690c3db7f4ecde294cadb9cfeb803c23f76cf1e299839387e7d743fb9292d839c07893e8b9e9b084ef5bf0c39cacf3913e07eab7d53b53f82ccb32d0df210805e633f2b95b2abad69a65eb14bd330a65bdc4fcd0db5924de80af199d70bca37acec2efcfb29a8e54e0db43de33452e94d5ccdd591c1e03892de3396ec3317d069103d577047b0224701c83291a6352625e82f39e6db45f9b027eb77e43f33ef87d0f58d26774367ce4cb50d1595ea377a378f389d015c6fb32f05831e6171d4b7bcc70ff7593c8418cf93f566d28f7e0b329beb63656a7ae034e21a695d4efab5bcfd433344fc94af03a8e10a6c992d42eb1df2df821f05297c82714f73757b20a023e3af952457ffccad107686f6535f2b8d9c9b3bd149d0f091ca0dde6395f08dd599c4bf756b6ce4b8646ad148010cb79dee39ab40cf71aedb1a9f6567691103ac6f8f5353de62b7bf0adba5e02c715d7753d94797975bd65a2fd4c83747830a521d64fa4e182ec15e7735eb6a66b05f9b9335a866928a37327812da6392bc7fba29f5ce257a3b4deb2e5088f1f70d02623e3ba209f4f85bb82f972b0c3bc0bce45b7cff0ba22b4ad726d516cd86149c7b470742e4801d4ab00d6a1c49795ddcbd6a905c7ea30bc350952b1bfc47dc57678ccbd8b57567c66bab231ddd2d80cb425d15c9c280bfa28de82ce3ec9db47fc019f73f5dd4faa1e4a35ff4e513d06c9dd8b16aea3c27364d43db628eda3efcdb5330294dfc275344ca25ba5c352b74584d3a0105c3af63abade888739337385690eed31d11f4fa83723d96bb217741eecb8083f12134fa8686519ca505684866793f3803fd3fb541deb578e678bdfccd4c2f4cf5bd1aa4764830004340e30dbbb7691fbfd70bab20f805e1bf051e44bc529e48a6cc55bede75e70dc4c9fd17d217b8f6282168d01127ab04cc0ec0bdacfc4dbcd54c8a35c473f21194ef92b3a2738c7a5e2cff0bb9ea5a239d883ce77fb7d35f3787064ded1f3296e71d54f14633d058915b97c34adce676a419a9fd67b43ea8bd059b604285f17f62069cb0fc3447b7608f850a032d8477cc17a81ba0de541618f7d3fb82c6db15cf1a4ff05ea278868e3e03aea3712d3061ee6f15900e58141f8108e9f9fa11e817f47b43cc3f7e1b3bb7232806500f291a175c73ca15e53488f742c2cae6df59bc0f61e43ef79c17349aa71d6730b33a87b05492f0a306da2336da616f247a1b9a2f723dd5ed5b16d00e57fbac23e71245f183d05ee8565d47c71b992c4dc97867d5d02175f02df3c4b051ed6fb626cbfa1f5dbba097ac785d01df013b47ff8b36c5df0591d9d5604a7119e47126b20bc152444afddfab295780ea2f512db33087be214c0b9eea88ea873e899a0e913a47aecb2af525e9fbbce8c83faf0c2d613cfd6c79eed41fb6951cbd81a63dbe187e5ca0e331f0cb73e5fe0f39132782f9295c067a17d85eb5ed102e2853ce16da46e12cfdfe523e0f28729c51b52d25eb416e9b8d99ebce83c203d01efcd6cbfb23d8efdbec9af110d8a6b09e9e5f5b82a3dd6223636c9c540348362553d429748df617404924ba08afe0ee90672ad5336f1b6585d07be97ae3b3997f43915e60fa347b2df613d07f3df8ab7107dbbca15a47b83df89e2850adc0b5f02bb95ac034fe85d3c2ca3779ea3b7f91d8343819e4fce5508c2e61e543c2ab407cc5a327b5fbf87f4d7447f9f8214ec56f620f245866620cd8eeb356631463dbb9ae3a51a9340642fd2f1e07b6628579bfa00d0dc2b7c61ba5e28871cde4bf51e38ae4bf3dacae710053baacf87507e83809e1d13e10156be15bfffe5b6cd87cf5fe449ba18225956a067f9445709894dbfa47908548febd53acd921f54799b4417155d7bb6af6d0190101e0979d5cb924772f6e839e12ce043d3e7c4049f0f2a2b6a9a0c507e80c9eebbea25835328624c3b8f9cbf156fbdbbbb1908765ee4a605e21bcdb305657ec31eac64de221d9e567cad0756f799345705f1067a06598c72ca63eb67313200d71135ee35d74278d229ae55534fa99e61c991ec732e7bc6704d9e80d7af937f60fe7aba5a031e8e4fe55d5bcd3d93f237da5b17af5d901eb0ccc1bc0f9e4f628b30f3dfe92fa8e725e6e9286f5549c39357f90c888cc3751b687f439b43b22048c181fa862c6978854b4cd69df4003f235c111fbd1fd331a1c392ea80a124ee505c91b5cf85ca56403c1bc95409dad6d67b20d33a22a85390fbb07dba24f60baa633679eb8cd7563cae7a331060791af9e9415861d903d783ea078715ca957fa9eeb7788be069409d96cc4b1213544f8dcfcdd9b567999f86926bc37359eb3f3aa4157b807cad01078e2e5ff43cc99a225c33cc97223f050797d801ae3dc87c5b44715c5d46ba5f86726aeaebe09c45d79951bd3ef6fba4b69b534f580ee3fc18a87ffbc436756d6cef517ea377ac21ee47477d1d68cdc76622ce171c96396ba887f2b328902c6a739cd8fbdd7e42e438b45ff55120a1cf27fc5bed5fc5b26e06a83f83d1c54ab2eee47c980cef5d34f55556d6c5c49e23981cd89782f821b5d758bbc66cf6a1c66700ebc7189f9eda4f2e944d48a6557ead23f29963f91605fd19d11b71de24b677a94f06f5659e12fcbaea1a7c3de9975f5d87f90dd45943daeb58d4293fe8ec838c7d3618431f9f331c476ccc83194ff51dc94b856b427b12b3ba4783cf357cba2facfd0e42aed61bb18e8be83f6ff056ca6704c283762ecb17197e5bf55fa132eb0de5cd95d59e357e676d487c0da2b33391b7a9e7e884b7a9647fb20b193fd2bba9acf69c991588fa69698b4876b2e783f0dd7365d3619d2343353b6335c6fe4cf1b240743065797a3df6ca7fd5b2b1018e8b90fdcf4211c517a84f08c72d1afa2ef51b4411d1fff79e0d752a341610621f36e2912b6796b929c8a97f87fa142dc83724c0ad6cb267927559392af00411d2dd3614553436bcb6c37c6d0f211f3ce9d0661467d93ab558ded60b25fc8eba9ef3a5ed0b5f0692b845d8bb749ed866ca57f68cc378d384e7f46a9bc04b873d3fd5699fed994bfc506b01fb27f1ba377434738de7cead45fd6412f9b9b03da8d7b2fa0bfa1dda161dbf519e65054cad5c40fcabbe2dbee071366d80b019f3b8b0e7ac61ebcb1b3207fc3c28ef2c39ba20cc11f6bc549818959ec891b9a588c78bfa0ba52be46b3451cfad819fce18fdbf696bc0f7546794c33a33eb7b60d7925e1bca11d599b16e9f34ed2a7a1db52bc8fce8b926fe4b9c4f55e9d80240d786a998b3fc86f52762b96e521e80ec03ddf1202d4d511cc41e505ecf63fe5ffb1e189b43453261e7453eb63b9bb9a244e674f0b6a65c48d493cf1fa87d076d901756c76fc5bb649ff3a82d9974d0c6d5ef54cfabd69cc403d7d290ea88943f13de43c643e502a42111ea93b8f738bba6951c477d712abdadb6616ad982c660ca2a30eb5e5855fc00e96b96fe724bb76bc53d115fac7ab2702a80fa47853f4375a54a26dc3ccf755f17f6fafb679bbe17db1c8298425aab70b3c9195e54b8a955ff616a8b36fa02109b179f3981bc9f95751cf65d5d8d95f838afedd1e633ba6de3e6359477b034d7d1af8cb5e1db3274e6e2d821fbfd017fa7509f36ed4784ee41befc8495df702d595b89ee05ed853523fcd2ecf2cb5e581a813606ad3df11abac195dd44d7d4c1324e6f9c9b0afb96e8e48d6756f2b6b9967e6af54d565fd8858062d6435d7965f7c615fdf4ae7ab4c031c94d5c0874df953f8bed8fce8e95391f9726de08d6fb1af836d89ea86a01086f65ae61f787e00fa1dc78c6ceb6ae6a4fb17e42304ef0791856318f5bb8990cad4af82c547e152217883ca9e4017b6d730f306608b64bfd9d15f9141f26267426239aecc20c8a49fc165476f7ffcfde9b7527ae3bfdc25f4986d0abb9dc1e0438d889644b06df01ce6a129b840e74183efdbb54833124dd7bff87e79cf3acf55e75078c2d4ba51a7e55f5d3d75cafb7f3ebfc10c20dfd53392bb725724ce1e797fce4e9eadacdc05b9ae1465dfb81bfaac27b2ceb6bbc6ef96af779afbcb61b88bbb47ba1e5ffe039bef48976d604e5a01a4951cd921b2cec8bf7d9d8d36a833e61cbcd33767e60d354de8583c4f49a6f942fe5daeb67ccd5939f391a1e006b1483a6baf16d682dd1af18b758d2450e4eac1f58067edc5cf3594e35fa764597837c72e1d062dd76f33df8330f25e5a3dacf9d0fd41beeaa8d0de6b3b449f3f66c17b697eb55cf780f57facb5b039e565fea4b542786b2c5a02e0be7e3db9ad73f2b06747fcecd6e078c2b75cf78fbcdf5f1d2d98451f3dbfb413e73348ce6b3f46dbe19ae57185f6c97587fdac57ec89742be1db4df709e18f889705618e69eaf6a8dc0be8e2917f04ab1681337ce1fbac2d20cd4dad0de6e7b96dcdfe17c1683eec53326c1a78233dde0f7cecf8caad3b28f184bdbf302f30d67e391dd013f1eafb99cffd7eeed92780fddf71afab93a3903736cca1ee773c0e7ebe227bf3af94c8efd7f2d04c6d8ab4b5ee5fce91a4f0f566c23a8060ace9a9ba59d9c103d3b72efe29d21cf863ae9795ea4ef909bbace7b3d2f21a71107cbbe16cb1ebcbfb572fdc875565dbbd8fdac5b674531ee6fcf24fbfcfd950dfed25fbbe5e4ecea7ee0aee37e4527333d3b603c9a64acadcdc1f3f2e596b1e4e53586dcf65d624e296eaae6f237ccd3481e48ff6d015769e20fac23403ba2a85ea83d2f07e47aebadfa7a5bbe36e1b237106cbb32c459c66e2f00c6500f7be50ce239b3da34af25e510dbb3f5710fc11913d8fb00f545f41bc011149f8f8febc43d516e7df02c83490d3c9c308ed506c77ad31b8c9813fb3554c3443db55fc41aedde0339e1f5677e86aebcf0d9b293fa732cfdbbb3d270eccdbeb464736bea43a43ac972a6c36a16b73979c40cbfe6b26ee327b6c59b6b6e94afe4ec2bbfe26f38e5beb281579cdcdd7b7cc51787b24b9ce3e8337873c04551bebbd75d718062be8e65bec379db9d13fd71fd3b8bfed7354f6cabdb7447b75df1b8822cb5fabaa9c6f07ee7ee5a7ec9cbf9dcf1812e18f46ff934f1b9eb0631d06bceca8eade779f6971bfd954e192dfbf13eebe095bfe198ecfee677df7fcd49f8dc9dc30e8720dbaeaf7955ba7e5f5bbff835ff40eb5bb7d7ad480e480e0be0ce459f91f68a1bc7a5766589314abd98a5908be13c55cb3f81f6157a3fa69d1e378ab7afff76313ce407861ecac2605d39bf05c77942993a7e94bdef88ffb77e22d41dbbff6765215faa483fe6595ca19df50f8b62f0ba3a4dbe4d36debd32b254d9514ec3522a237d951d1fa76319d0ffe3e9a809dbff8fede5ff61d9fdffe5fa71e7fa51135dfeef055ffeb67bcf60cfff4fa7d1de5f9978318d1a5f192f9c46d65776b5d3424afb7ccc9591b93a1ddd985f559decb491fec2c4e134aa7c75aec22c80ef729d1dc7cac8195e5bfd54d7bf7d57f57c678d0cab3a1ee13352e9eea17b939d11d23762d5b9b7f55591d25824fd9bd2336d743556f877e82b330ca732f555afa4cfc52e3752dad371a68cfca9ea1f70ffccd43b2b6498d50afeceb3a356c6160ac7ffe8e64399e104efd14ce96fe3fed6b36d40cfb6f8fd6e97c13d13f76ebe356f306f4f753cc6ef2b0963b3e91cfef6b6397d3e9e4ae92b6bf1f35eace9f3b8fbb92ee247fa7c3a956e0e6a982b2512f79cb0783ec6cac894e678efd62713d2cf44e2deddcf0dbeb336b5fb3b5c44694f3dc3b51ecf87e9db80e6319e469e5bd300feb5eb3bf5ece6247572e27ea3976282736656bb5ca43b3d1ab8f90817269d6a90ed38bcc876d391d5ae9c7b1d79f6bb72182eea34b95a5b2f72f31a993a72cf95363b5a65ca02c753956e4e32b9f5ddb559016b705f4670ed347b76d71e63bcd64bddb5793d806bf31edc57cdf1be3a3b1dadb27102d73ab994d6b75109d75a272f4616195e3bb370ed7a8ed7362feeda62a3e1dab985313c5b1cc34beeae2db4826b0b1bb96bb520b916cac94ea404be5b161c5365ca31bd5bead6208b70bc9985f51cdb08f65fa861cfe910afb520abbaaee05a2d84bb6692e3786383fbd1a08ca453d873d111af35c2c9d188ae1de770cd1ac76b9a177836bd5b266ab826431d10c29c199dd018403e754df715f39d36e949094b7b79e2f65c9a65b0174b7582bdf6ae9e8f0355cbe4c1ed7959f9d9b90cdc7ec95eaa409d8e2fcad44e5e1f95f9d177b25d18394eebc92e1772948a389c8e525fe765007ba6d78419ec07fd539d8e7b55cbf0298a69ffeeefdd7cea9117c0dfde36a6cf47ee793afaeef64da884a1fdf3c3edb3287f3e4e95495f55bda2cf157cbeaa27eeef87459dec1ea21464c4ed4bdb9bc0be3423de876fb40f773be3f65a31471dd4737bac72fae54db967d8f5419d0e0755cb972c03bdb95e18bc978d7e5cdfcb466e2e7debe447c8cd8399ec9e4cec2f441c83feb38d0ff7f6e209bde3043f4ff55436eefb91fb7c59c73b7ae659d538feb98950ef07c758e57aab36767cd1bdd6573319801ce576ab5ecb90f4cea30ddc3cc19e4b9d3e9a9f9c4e95da046e9d93a36a22d435de8feefcfaa667506f5a05efba8c52edf6bf1647b00daa48c956c85fa08b6676ab6adbb8cf56a3265845f1c6fd7fd96b8227b74e4eb71583ad7add86cb1ae66fbf30f10ce6d2c8d3c2c4f3ccc9de2cddaafa38c6f9d9ed4a23fd52c40a9ed95f07b8bfe4d864f85e387ff6c17dbfd83441197d77f776b6ea1ee43d3acebbf2a4ccd0c9f6abaaf9be4ebfee1f9c9caea2f4a4838350b5ec2b81f35ee2bc87859bf7a2daaa4d136837b7c57aab9af594d6607eb39e0dda046b60dcbd63683227ff5542b6f8453f93de76f26a22b188e2640eeb97bea95a832e4847eb6051c7e974540560e371dce1b28ee7647b669defd62a4fdfd56b194cc755a08a26c23d9dc60bdc1317399da5811bdf32d2bf689f1f7544b637bbb25b8fcbf6b773b7b7fdbc9f06d391b38b838074c58cde65aaf1ef29f91d53be17dad175c8d7e7f47d8e7331cde9f7f9e972bd9ee9303193eedef6cd5907b486139a77d84789d102f74bd473ef01fba538e23ef64097fbf9ac215b2a3cd8d76ebca0bfe4e3424c76a5887d5554c11cedea9d123f7ef76cf2611afab78ae86fe9c63215fa4e9d8eefaa96ef9afd99bc09483e22928f57053a3aada7e27a6d4c767c54335f3a3db634b15f191b3bfdab4413dfdc630bf798ad65154d764b11fb49dd5efba64ef48e01fa7a0b91ecac883c3dd3c134f40395ed25ebb307d66701cebf419f222f5877d03d4ab0f1d25ad01d694f9d60fea6787db55560aba2bb72b40e2a33d9cd8df4e7ce872bd68d71735e1c474e9e2a78af9274a2f9405fc6c21ed4237bab1b3b7b69e83f45f30f78b7a2723611c72512b7c6adcf55912f6c6655883ecb3e04bfc978df14e8bff497aa8dbb26273ffae87c6037070bb4617edefff4db8b2f3b4a7d552467de23d328f5d559866994e03b839ca7b53a1d4b37bff03e3d671361af6e158c33fde9ec26d82698bfb44099903378aeb70e697e706d6af21be1ddb781f36b95907e510c22d48d31eaff6218d867dcf7e4aff968e7aba03209fac4ec83da55eb93ce85dcaabe86779c8ad85f450a7d090ffc533f035f3d651d3ac079b43c66bb8ae0deb2dc1c719f89bda7c16f723adac924e90ff28fb3d15ae27592ff8dc00ff0fc578dbe88a5f5ff32d6d0c596d6c7eb699cbf11fc2de459934f9c904fdcfa2136225b36017951066dbec925e90623d433da47d2db01dd33eae80e776fe97c1d83fbd5adf51bada94ff629bd3c5b779f1dafa298e297e137dea3f81e3b77ef54996aa71a88b78496e64ee35e9ba706d6a3afe51c64a632741f4b7aa8b0148335342fe28ec7a24e6dbcd728239be9681828630fb47f1f41cf7e2517bd2deb1a1af3772773e1b24ef71a75c10c757d3a9f929eb406fc099457a7374de4ecdb4047fb779d1d5d4cf1b28a0cc62a02f7a9352013f12252ee37136568fff6f6d2c9c4c3287e4619aa5197f3f7e640f1a970f2ebf69db365e1aa4e69bd3c391d495f1511ae15c86ce2c15e87fb18d65139ca9bf417a304fc59e76be527186ff854f3780d3d57d1b8ddde8cee74d804344f1edaf774413ebddff9d7e9381fd7a6792399950b83f7b48265d14ad2372f24373d5ac778551b90dbaa4efbf47b7fc163eb3518b35bff27c9ffe3bd50b7f79ce23ddb3d02f774fe52369392f488f301c6ca4477aa7e439f18f5ebd8e9559c7f8837fc34027c207c605c4048dc9b86fc5c2151f7584bba2ceac6c8b2bc8e9173837b6b66d00f88357c9f1c153e3754285bb00e205b38071bf3cce315f8be16fcef69053eab1b87251d21a7490dbf0df54b2a092738e90c7d6375627d95faa09fd15f891027b03ef98aefb49f6639f80fab816a26bf593b9867e7f7fd5202fcd2685edcaeb3109a740ebdbff3d96fd69b301dd31ce93df20cf6ae77a7514ffb4914df911ff6b2322bf4dd7ba48b4db357cfc7addb1b55ad6bf82cf783a708c732ef5bc23cd203e9b7786526cef70e57b57ec3cfa2837a5d8f08ff1968d425afea55f3339cfe3aab5a8e9f6af299709dfdf9d952ac00e377fb43506ced6c74407bb4afd10f3829928bfcf772ccf3ab08eb0ad867496bbe36955ffae2674973b9275ce7e0745aac66ce7eb8b8c60af6cd9d5fa545843e7534f41311fb69bd42fbc536c3461eca4f9acdf1dd7cd65560ef40c7db39ca21c9ff39a67db27a4719d30ddb8bceb83d4db675416b0cfad8e98ffe3a2803884de7eeef72e607ff4f8d6b560614a706e566087eb8166fec47e33c7bdb9d26ddb83460ef42057eb27b3eeb8dc8c56a60b35611bcdfb8aa27a48370afe7a77d74fdbeb7316efa8bf6f194e42971fe5a2e24c99b6e9eea4fef7813bf0d0218a3907155bbb812e6f1487b45a7c600866736e85fa88cfdaf21d8cc4c485904bc064eb724271c533a5ea2edf31722fe457a70baa8554727ef7d3b82775e57d1e440b85f9c981b9de3c56b5e4b8ae31e1933d5f6078fcbe9ad3041fb16ea9e877ba1d8074bf299712d5b5d3355331d94ce472ef6f74fa8ef7d176be0bcac03c61f690efc3cd763d8cf8c87f67df24fcbe0efdfd5f313f176561be7c3b875a85007e7be2c9e2f710cc4e3847591af10aa994f7e21e9692b8fec9ba21db1bfd88ed8579f7d4ae7c3cf28864559d96c714ef275b0603fa38ff756bd41b814ec7b808ed5ab764e261ecab32c57067df694fcaa1ce21078de1dbdb74e84f90a67914fb8367e9697e3164397ce07bd73fb769cddd8cc0763ae7db7dcf9d5cec7006cd4d9e688fcf1836efd4d67cfe43792a5e7278eb3d1ee4e51efb9794a03c661dcf7f98c74fd2cc5d8bab70d57a2fded1462af08e5d27deedea78ad27e76f143d7ce3ec13dfa3e633929cb2aacc14c0779b482d8c67aaccbe5986412ed69ee474b8a9d4c9fe4b568828cf623e3730f38ff619efb607fb44cceb4468f69b442ac0ef7e1f3aa9e777c41fbd3c92bf9e98845891fbbc2c01e7a01bbb7a1fd423292cd9a11fbc8fa321f8f09c51819f979d9acfa7c9d05ff04e43b21f9cea3b78b7c0b2915612929dbc273c97aefccbfe5f83c211b98cd6294058809c0e6e518cf28c13e65813a3373fb4d83af0e7b91e495b0af9a6c75b165ace35d2336f0b88ad8178c71df9dd37041be6c567811c4ca62cb58e14f7eee0231d2307ff563f21d7dd4fd8377b2bf700d6022c5919fbbd7819bfff44d6d06fcd9077c56ac23d2117df5ba9edcf81b6f8ab0a58af7ef6c1dfe6efe10dfb0bfd4d967dfe644fbed03757e7aa75e53c681c4a7ef36c3987cc543965d7df74dbd4afeeef4f9bb94befb7e449d25a7e493a60f11edf3ec58420c83316298f5d613dea3107fcd62da9be591712ec0eb8a265821ee1a56517cf94ea67e26e76e2f8c2b11371407d31afc70d7bd2853bdab33cb377fb73e20beb13a2894c9496200ff182f8c86b9c9462e7e6c7cddb7b456f68df69fbc4719992442b9d86dbca4fda1f34fcf717bc33da7a731ee9aa402e236a817074c7ae68fe6cfd7bac4ba752fbcd00ac449cad99ae5e544186cbc12a0a77fea628071eeac0a56144f151c0ff5d68c33f459773f45c91ffd055d0cc284f46036e39ce91065a9bf0e56827586fef4dd1273397ed6a77dd17eb70d5686bf8b3f7f47bfcbcf72748d5b893b8c41640c76e46c034bf9a605e72f309eb12c1fe5ab0cbaf8fbc2c427b2154275be33424e106baafa6a43eb97ed61fdb250825faf7b4df8403ab0fd6e3408512e1aca97adbfa16da85e35ceedc4f9968591e395d09f64e62952b0fef7420d4857b4dfb978d87d57892f64cdc5fb428e1762fee977ab08f4ff38a951af66613a021cdd341ad77d9bb93167457a7bdffb453471f78d2b31b9ba6f66a44c4cfc7cc9e10276669d8c2c8dea29614836b75fcaa6fbfda22e0738f7b2a9285ecbcf7a0cbe3cd602800d72f1f913dbc41ef930e27060fce1096d42e8d6cdf9d16c4fd85e9b5e13dceac38ae3c8bc0cae63a71dc6a1562630271b2f483056f5cbd73822cc8c704729c84f7e4c23f479ec89f463911e35f85fd537e5bd617e8ef4d253cdb1a91cc3deeacdc9679636651ca638620c5f7801c5c57b85fe64f814e92de320f05cf71ed9d573ad32c907626ef69e30e713aded8b7b7763dc5e20db694d9f71c525e1570b13d3f39b8070ba831e35842b7c171aea17a49dd2de6ce3ecd310f2f8dabce1feeb93afd7c6d5e9a6225fd9e69524dbb9c3e74707c2ae5dcc4fbeb56e71a4fcac25c6c6e683eccbcb9359412c3f1513a8bbc8da39c6ba8e79afb99f8ef6817b2ebec717739c9734c7518fe73835f64f73bccd9e21d7fb58b5723920b93c0a8efde68463a558f3c0fece58432e82f398d6edc548192d499e47d3b1757fbf20e6b5bde04cb88e3f11c3aa36601f6af26b8a3d8ecdc2bb4943fbc942cd84f48dc058c400ee07b2017b64493e4edeabe8f716e2323d2b39579ce09aaf9caf4bb52a18fb39dd62b3e387aae594fda8ec1c53ed09ecdb046dfdee433d1f4eaa96fe8ab07df459a2b3da90af92fb88259fab6029e638d61647f14758b3b30e960673197a34205bba1f50ae2b677f2d1377e01b2fa3f84c7262c90ee44bf43dfdbc481037cd295e6ab1af614ff59a8830be5f9cff73b119ecef33c9acd93fc07af4fdd63e59f2534cef784f7a9171ce03c7844f66ee9e2bab3abdbf5ed7dd80c6dac6f809d9e2acdf406ec28e8e21c50196f1f507b29bbf791fab8a783e1d55a1ca75001867767c87eb29a674fb1bf46d6f10dc60eb10f7fe2efe72717f554ffaa453a60fd1e4b7d71ac2e173211f14e72e0b736e7d61b2cdcb3aee933d7831e44b974ee6721d5697f8fc85722503dc07ceb7dc926f59e9ab98ae6862c83563be2a74b170c27e46813169f95a4dae6dd8f701e67aed4342b84c1ea6d165aec027da936e689e08ab28f3e69eec4844b6708bfbfc4b3f570306fb1a8faffcdbdcc758b0373fb6f1ec08f35b4b376e21c3551dffcab83e006bee3ed44b0a6b677a47c2a2933bca57370963efbdfd84f1c46544f5595ec43ed223ca1bbe2fc7fda61ff35af569adf28540bc2515f12efbb25ec11cf0d943c1b57889405b3ef7fea2b15434161b2c3e8f45837dc6df848b3a7efbfa39b68fcfa9dae7ccc9863e50fd19be33e48f0664a79b07ac950bab48efe9b3cb7d6fe6fa299ab0fee85cd39d737c8725c940e71dc0e7c4f94c3e1626065dfd204b9dc03e89067633c7bc645d436c5ea2cf124dc3325736ae511745888959b9707262463a44bf8d3e3743f83cdfb8cfd300e243f8dc2be073773de665df49dfc7a877f799fb3e73bf033f1a74798cb8e9bac61a2889752da682ba1dbd51fd0cfc61fb320dd7a12aaab00cd7f7a03b0ac4e530b66c6340457b4591cd260cceec16508fe0058083f5d6d775957c9d4738bb07b617f00eced7403eccf9a042fe52bdc9eebe17fba5d8d6fa84b52f0b01755f6149b5189c235cd4985f3484151ac6c548c73bbf0470937e09b9e265b485795c896d9d44f3ddc2d0b83187621827a4f7f5a9661362fdaadec2bc25d1b6b698f35dc35c11ee93f5f594f0fe73e6e63b4fef0177c8d7f76594d01c0d4937b7cfe865a44b2ae1e297e823ab016b78cf7a3afcaa5693f22dd3c4ec482fc753cc494898f765bdaff11df7b58b3ddcfb53ce30ac084bb58463168c0791ce4f84e1bc3dfcbd143bf7fb5ed65f07f8eefbda64808b35346768c73d5ecb951beb986b6652c163d43c46bcfeccb5a2bb23bfbfc1fa837281bafe573e9aec92a8f49f8c5767887594f4cc7bf4a368deddbcb9b91587569e2a13fbdad0dffd32e8ec25b4d935d516154d42e3a29a2d8a078ce8935d7e5c91ef32ef5bd96261e0172136a967656b9ff380f0ff7a77797634f417f56003b5d279f9508665d2d9c3b02e54a3b2e9f861e0f3600ea221bbdb7c10ce4235c37b8bf26106f479bc84382e1ae42fe8832cccb0b697bd0fcf222cffb9f579c63650a64a387fb5ac57577b2a257c98eb554a9ae705efdf7e9990dc6ff30064639d60dc164e452234d9ff94b145ca6d9ac0d9a8b68e789a446f6d5d53eb7b145bf2559bd7dc5d3f5b3f424e454422ef6945f5c09ec21a9206e629e7daa9bde8d4cebd61fd40f58d9f578aa47d5e559bab777ea27d51ce62b46bfd6d778d9d7fecfc965d0e3523a695aba5b9bc83f35dad91bf8c04dce26c467a9f9df0b72b81f658f540b6f4b28e7f522cfdaa361893e50de5b37b9c73b454b7d1aebf5b53d833abe88036b0cd8b78f728f396e66f1fb6b577af7e579e9cbd559dbda855dea827aca3db9a429df200eac3fc258f99f0a08588db3cc3751d3d60c5728e3e7cac399784e330843dfdd4a8c335ede9ec2647132fc50f8ae72bf6810e68ebd21ec79419d81a88a17e756b047221c7e56b0535e0dafbc1fb957dbd9ffaf9ab67973e63b45980d86a4a318239fbf88e7d8e2be5741129aa3b19c80e1ef2a84cb3a9c4c1c9ef2f83f5be67b3d198f7b294efe21824125c47c73504eef3f513e1e8ad8d3cfbf7e027ccb61960f0b9ce9c4dc93037ea647fd2ae33ec8994d7fd574e79c68510504b50906e36283b2f6e5c532f36a02fbcb4ce4fc7a35befcaa0cdcd8a35d5bea529d592ed56ce6e9e86818b83d18636543794b43ad8ed83954c0f10d7cc9adc8d77e9f606d47356be2ea85ec990aebcf8ba831603a43da733a895193f4558b34d32329d63ed62c8f6260359d5f716eb9b2615e2329c778b1460b269dae29d67c8474679e0dec5c9543a6df1cebe1d4d651a65611a72ed4127a7efe56807c92625c79ceb0c494f3e50be39e79a198fead966db4ebcd9f8ea9c064bc42fc67a4439ce99bde438212f72554f31451d5e1edaba84cbb834626dd5f4f28c61a88b23efd12de9f994beff79a9b9545c23d6e63a93288e96517a87fe563a49f15d429553ce4244842158bf1b6362ddae4daf72ab6799706ef5b6e68bdeabada5e11a268efb13117fe03555c479d9cab479d99bba20da07ce4778f543cef996624539b3e17d676efcecd50fa1c6cc5667b5f152f7bb62ac618c56985d52837c638e976a12ab1aec89bbef196bf0dcba0f476d1d17f8bd557ead67f91aaed1ab2ef57030de6e6f920cf457754d426e9c4eba1771782fe2f45efcc0ba4aae1712e2ca7fab0cd531f4b15e51190f635aaa47c8fa3ef44b2c1bd5c77d9a9a72dc8488af41ae07ec21604ae8031076827863fe3c8cfe89bc927d3903c6382b4d2a92bb1cf224b249a8bfaa7c253faaa802d28376e9fd8532794e538aab05fe2ebd53bd81babd7ee5fd05b14499577cbd7b0ee88807939e10834859cfdacafb0bf59737ffc8291e2cc51df44168ab7b8459bc720d9ecd7d85f588f2a836db07b23deff9b3b3ebd151bdd8683a4e23959701d7b357f22fb69709e1431f06f65ce2a9e721f66515fb807418bc43097e57fc939effae6af4b9ecac52b83689a736fcfe97df26f22ff07d1735e85d4f89a8674d5b2b3f466ce68eec96777f13cf798c4324f5dbef62ba3eeed974b4fcea3e88137ebecf99fa3d9c4d651cf9f2bb23d5de924eaa66a427c2cfcfa87e311ebcfc2cdbf43bbff3bbe1036200f60e9e510c8a4594ecd228f62b4b35dd508351517ecabd23d475860f26e6ba9e3ee518d85ff0683fb30f9da15d4cb5f36d9e9ab9db37671dc9303bedc10fd7d161f764ecfd2a9a389ff4312b86416a26bb4aa4bea63853d7708daff398c6d140ccaa9f8701f6685653cc63af93e9b891caac440703785466ed74d2400939cd305f9de4c171a05d1cc6feb4813ad7c4cd4152a77e6ef6e03fe5f4ec3c7731a7f4217e18a7a132c3a9726b697d7ae670807d46fe37a89f1352670230922c0f8e7d6da47e3280db67ce874ca2d45f0ae8e99baa99efecf487aee551f51a8eb9df329ccb82e672af9f9d5db5c992f65c66eb6efde4827d5fcefb70cfd0926d06d711b43511bbbb8cf024e7c3c23ce4d5f8530e0be31cc939a6ac87186debd3f4c8c7015c95f45980f53815d40f477de5e2da300ed5ac8ab25e05799aa74827d3d170a4664db468fdfe35ea61f64dfbcd98fc62aa83af1987bdb16d433f31fa973a1deedcded6d1fe15f6435e4538b7d19d1e4bc218daf82ce43831733e5f368c5c0c95d6a9bf1076ba32c2addfcec5cb4b51fa4b635bbd4ff54ee19c7c9a29618fe44320f6fd3946c55eadd6d635ec57f7a98fe4bec5f9a9e6896bbb97f83c99b4d810d53c538e60c96bc3b171bf616cf6970e5cec22e5a276bea7f61f223b5d18b70fa201bfdbbdb01ebf1b628d5c0b2fd325d9d93fbc5b9f62d7c7a708fd9245941ed1576d92dbb8a5c8f62427dfdd7c5ab0ffaffea4331750979b505e2b3fa763b72734d72d99fd967db37f20b7e1b5dc7a173ca4d74464cfdfd5e6087dc189299deff4aea3e84ed72c43cd8864e85dbfb6fb33beea2d30de816297b493abc9af6abb660df9eddeb71c6ba23fd4ab8439cc8cfee0df2fea15d428e5d7b531cd05a7b407f5eaffe6bbea8e63ee95e17c1debefdfed1dc83d5ee61672a96d9ce4e6fa1db1c67807787e5e8d9d4f5319ed2fcc7a5a0ab05b3fb3086569217edcb12c65a76bdf7ff5b7b25473adcd3431284b0f26fe244b2bf74c8821d4ae53db1e96affabe536374a953eb1d83655b4f65efd12eb5fe91d3c32f905fa1bf1f8cfa9f9abb899b3b676316a6b9cc9de1b96bde09b329d057a41cce196d9ebb0e7a2bb21b1c712631466cf526f7b9835d6bf16167835622f63563b3eebe179c5d767bcd5aacf7da87c1dc4cd4e20cf7e4637c504fd69ce51f733fee3e9e9f88c6d9e4bddb5799d9dd814f9d3731efab0c72a2b0af34d7ea72ed95ce1867e158e7b24eea747c556efe36935d0a36753b05bb37f3efd9a6669b16c7b6685b386e88285fccfd0880898beca50a00939c35f719f6d37ecb6a5c9f24da9e697dcc056b4c7d6de76c5322b2291c2b47b00e7dae41db799a3014fa5b809ce6cdbdf37b9ceda98c37b5cf507f9dd23bf473c0c7e11d4aac4daaf0efd99671a1946d05adc373c716c3f39e0cc7dd09f57019cc019c2bf6d721eed6c5007b24a1060d7d0fc42f5bb99e83af9f37e9aa9e407ff6d20ca629e22ebf729aaba5181c590f94827bad21872f19977076b4c0da05b057557d7756cf879e12f2988b3df66ecfe2479a8773dea33c01e5d7b2de167bd43d9a7fa1104be19a2a173f624ff6210fa80fa5c5f00ff86c676bf3f43171b6243b7e68911e5453bd530d45037e7e5f0794874ea1bfd10c428ce1d33baa81304f06e368d3dfa22df2d44163ad6c9e506dbc0de331efcb0ce6037aee7d93531fb837e969ca51629dff1bd7f98f95b173aa732e710e269def9af9a50fcdfa4a1cc31677a2e72c018fb23fa9d76bb3103f76a98be173f207cfc00970d9fb9ee678774f7d71507bbd225c6b45b51e8b3a3e6701f4a5f8f399463bde8b3dc20a67a43fde28664b9766d2da659443ec892fc2f503e7e8202e0bb8f6bdf2b5fde151ad6a7ad58708b848739f52de666526d0db969a7847b591ffea7a91ce6af0fdffffb5faefae55ef28f5cb9a6a4e200f1001ef879012f92eca047962908f25031e8dcacf2cf089dc1bbc768afef231c26b3d882ff306fb1972015c10e33ca2fe08f031b5c46b2dfa92f51aeb9411db1b730ef1e65ab8afa6fb6af1036cafc63988710c5b1ac31e794f22d98ec11aa9f208ae45fe93de3aa031f973b0217becf366ac6b26835513516f05724e649b41b4f2a0ef11eba8859c2c23fdcb00d6033aea519972a74743ede2795d501fcdb909b9ff69511fae72384eef41ec425c3696fb89cddcf912231713e7464ef3f11ab822f26807f2989dab90eae1a70bac294f2ac4dea6ab28fdc9750358a37478c7fdb7879c04620e7b5ca7d11e72a6f95847985f9784a3576f94a756f3ebe7f85a100fd0cc877c7e39f6b1ffbd68824f7c1ed4ffbef4d0aedb7e49b532fb2df6f9caf1b216c84991a7dc27f3610097329efae2fafcc4f20dbefe89fa854faaa6dadb5e837e8ba9a8666c08f8c1aa8e7bea193840fa2d07c8ccd7579c06dc03e5a9db7bfdca33cc9b2658d3164e459c52ed1de78d5e61dc791acc9f0f42d5d11d3fa79c69cdb1f47fe1395bc86f17db708eeff3c1dc1af359f9df781f733be7966ac0971270941ee016e32650b91f3286c818472b279ef369a233d41138bf365fb7d7265cb37219cf8c720250db3115c999d6eabde5d198ad3fcb4e13b5fe13736a20f78c07359bcb5a1f803b42c833f358ac4cfc4eb5044d427a6911257dde33edf87bf4ef396d7386e0a342ad9bf38ff40e7de73862de84db5ee5959c602e622633ecc5885a8c0bea44673aa338f4c8efb4409e8771c2d85ec1bd7b15d6cdf4fda0a2fed87c2679fea65cf7e66cae1deb7bb609c6c8d0840df53408c0e275d1509d65dda35ccaf8c14618b76df619dbc085d335bd96078cb9cab836734063c6daa8fe3a58528d05f5473e130f49bb6713ea95c41c4afa4bbd704dbe7c205c95eb3ccfd47790431e6ee6875cef38a79e658b357fe12a8a7bd4e79bae6e7514f4c7a7a68ade38e7e0fc71f5605057e4f8fd88f4959f157b5c0fb13de4f87c7d4f18853e93ac7aebb341ee9f47eaaf9d53bf71cef917ea8dff50b58c1311df5fbfdbf02ebfc26a9303f2b6d8cdf53c5701d5d1d829e66a5dbc9cb6f91bac09031e34033df59af336d9ff90dc84fa25cea9d76dc2638418abbf0e2ae41af04dd140dc6572cb7293533d5cfd596eb0d722a57131cf474972e3621583b5b8f79dfa5eb7e67bc2685efe746d61e4ac8ad233e415ac666eb735fd3bc31ac9f4a05ecb4ffb907af76258534f0be27b7a84bde1fd35c8d8af8235b75baa218d137e977395e238a2778ab1608f215e916638cfc347aa29888ae0468690c7e4a86a39cd6af55f93f5a4211e098bbac96cb6d48f1f1d30ceb20bcbf23cb27e566c03dccfd1496db6dcbf7540ff20f95054839dcf30b7a0ac7da55abe9705f63d8e9711d4000f7404f54c54df4958403f0e28971aaabc413d2064dfb4fc0e9dfe08ea35767e1f628dd42f80185498916ec866cc3df89bf5ecc5ff783d2b7387efd7473f1b791161ed0ee0df171278746c2dcfbc5fa10f08c6c1b6637897f3fdc41dd679d61341f8e859bd50dd968d06789d39aad7867a0be537e4b593e90a39027d5b54c499938e39179b08e6ad5863bfb0f7d789ec9ce43c84fb4d66b723e41d7b233e2eac937571456510976e6389907a2f048c0b6c5ae581cd9c68aa13e2da0885eb3bd5d9106b83a07651fbc6ac07f49e5bf5baedbe27e0d4743f6783798d1f4bb2e3b6207e04337c250c77c6efcb7975f7bd6de66eaf5bb60d59b1edfe0eeada1fcc9bbb27e4d69622f6ad18bed2fca44bee03ea5523e241c05a84de36a0f8cb2e114ff7b3dc076eb4e2751b4c474da08a74ba90ea3fb3c779ab57a95f707fa7c9fed8e70b9e9f1bf9a65eaa10726d851754667232549b380dd741cbad91ed03a8032f0681f3ef4a67271aec2100ae3337ee990c4a1173de037c9a551d1fa05660960619c66142d580739ed56b1aaef83dfb554efc71e1934cfe4fbdfb3778770939e6f0096d41f104b9520558eabd88b9fe774abe2cf3a89c706fb6f24bfdbf3ae27c2ad41213a74801b95e5b2e28bf67faccb7913ed07b07a8fffe56a661bfaa9c6b3e401e9ddf8de32caa20e13c11c784589b16ae9897a1d83ed2b35fa96622275e06e655a11e3275c1059cbf52b01f3f7c45df3cfda67a5b8c9bc47e9f3fdfc87551e177bd72c37d07ee3bec8589793fb15e3ea8fefacf3af66f6da671b2fb88f538cc3d31e4ba8c77f219af64c00a395fd47a603a7b5f998a6538a5793a716fc13de72650afec14e205efaaa639f7306757b05d1392ec1adb9dfd07d9dba4dbcf9d439c05f3f17c3b076d3c5bec1f3afe0efabbe23bd8293db6cc812b20df69d2c982397bcfeb8c6acc5c1ce0f64bc6f8b4395df4b8b39b29e77dcf658ed86aed9e1d2fb997026ab80167f798dfe8c1dcb1fc8fb18786ec5be0fc03e653f27eb22ccf6ffd8dde20c57a0523b2e7eb5c6355a7245f7acbbf5f44984333a3ed8473dde699df03e582e6789a4aca9381ff909ed48b2519dbf5b8f61a7d926370e132abb0cf98745361ffa2bd47317041fe49ef93effb29065e44e94dacdd7dae7b77e6e18178b3c38fa7dadaf20cfdb6907a6d52f4899c5da1f1e2dc61cd496f1026cd5fecaf85c86f9bfa4a342d575d4eb5f0976bd209da7efcaeacdb7a782747aaadb9475f5a25f58e6b13a6ca546fea19ee11933db5a07bbd32621ded7476365e4f3b3d1aa1018e00d9a4d8ab1396cf98cf43194a6bc07f9c7f08785372561be68286f87cecfc40b8aff9c17ead55262da8a606f9fec40fc25a87414aebb18a269817007b903e638d719b47c35c6b0d5802d45dc233f275c4730775ceb7ef16400fa5bf14933ef7981227ce1fef65be5c07eecba9a86fd40f601f1611d7246cb93724871a35a8adc177766be8f947c5b87534845e435aff093fd79a7fe3b92f3ae0779e0b199ab10cff663dd67fb71e6e5e52f3795ee65f8c2f6bf1f6c6cf66eb60215b7e31f7fd7d527fa75e39eadbf5261fe467e509f2cd8636a43c9d6d28bfbebad301d7cae33816b5db4f5ed0e17c38b878b8821adea6ede557dca383351be1a28e43f081b0bf614afd5c977737e98e6bb597cce75b0c35f6836e59f7bc43cd10d4fb80cee4faee29f5d1598c35b6c1aa16e8b78b79cbe35562ffd507f2cf2627d3997b6d7ed0fab471e0e39fd627b9ec975e7b8d9307ef2fee5dc13813630292b77d57de467fd2374fd1ae53b3992ad23f82ea5336b82f53e230829a5c5fe531f1d92667f5bc8ffe46fe8087f7939c63efc459bda4519bdfe7f5a6bd7a91491dfd66cfc4c8cb75ad5761ee7eaf1bce98375979ac2f9d8ff94ff64a821c2bf1224adf4cc673edae793be594b75ca23e189be721d647daa447dc5a867cbc9279991f22d5f66b903c85c4f9ed13477db88a62aa1d908396fba4e6de11da073dd8075d7d34ae30bfe0332f23f7e167c500fd132b3fc0af390d4be03cce0eef5ac857dbc83dd48114eba27c3ebeb85822e39e2bf2a72b2bfd127a012d8d0162820ff0118b5439f99b6fd481f25d257d7fcc206e91d0c7566cf46b8eb8c8197b121bc8391457f7ad7c8bdcc245395a271dbb6561beb1aff1d25b68f1de6604f73e431f01e6c41f21d76f0635cfef0a71c1d4802c6c6b857c98f11cf650594f01e396720e754a72af7aea0efb153b7d77e2d24f94d6c48d9ea7c9757f629576b86c4365923ef3eb2c22aaab6df916f91e12b9277b2dcf3af589456783799738890cf136c51f5403a217f575bc71effd457dd0dc6f5051dd04d4a3026ebb323fa0fef952f3a6b0e66de64f08af255b0a5c83d8f700b2dff6f6b858fb4c7d451f39e70a88d36ac13de71ef6a5ce2dd4e2bce9d13a988671ad66e97d39f212dcbbab2bce4bf61d573572ab1086d8f6574eb92ea7188ea98fee95f65a5b9fb58c76ecb343ec9a18ecc14c6b5873d8334b437591fded3dd73427d11bd5fc25573caa84e72e706eb8af3f6aeb05a9cf595f7178f69af4bac7a7bad3244b8a39975e184b6ebe712d38e3e2884f0ffdac88b7d85b52cddb1e02948b01d674b735c25b1c67fa8b313cdd5f8fb0b756b67c7409d7f6cfb654afbe6ffb931f509fc7f34d53b8795b44c833bf34c75a67973de4f6c882e5cb635de90589f7d7952c52ee254c05c7be6be614e53827ba95f107f917f786bfe9ecaa8f6b477ec86c8132007e1df52a4564478e88f3ad8e9d9a2b96d3e3ed7c990bf715d670453bda07d514b1c1b6fe4c75fa3963556c53e27dffc80bbd6e7557b706d6a33d9537ea4bb9686b856fde4b4891dbf92e13d1212fd487be95578f639b495b6b95b5f503d13937f0dbbbbc50ef7970e96546592f89b3a9242e82ea0a7753667f30addf04eb74605bbee25e8b7335459c6cfd0039ebc27b28c334e41e6e7cc73de235de3f7dcefe68b0f6eba4f87c893c0e5a19235db992502b11aea2364ebe47ec4be35866cd433932dc0b8ffdc76277d547b292f3dbfee03ed552b6faa3aa0f902b4bc400cee0788806f5bd385cdd977a5a176d2d14c847c5fa714731089c87807eab6eebc91292854ffdaedc2747bd094bee1fca2ba80b5f4543acbd99558fe5d816d417c27573bb8bfe9ba0fe9b6daf650f7acfa0b7f422d7c8817522be5ae011cd4574cca1aecebdfbb0aebc39f112e17889ab33e3b5b4747686b365b87f1ad0bb5331acb1c7cfaf53b1fb87fde8f297c13ec7b319e9d10d3700ae0ffbafb374ea7cd7aaf1a12620917e9d4487df3de7a77ae65ed8f85d3d732f5d457c43f82e79d6fa1671a7e6987a992fbaa2ad0f2df633d8ff6d7d689c720d2cf8e4c037ebf90b895ca3a597d64b93700fe6ac539bfe467d939a6abff78441ad298679a538e4d1d9d71cfb7b1460ff7de66edb799665c75b618dd24c065c37d9ede927aeea906c5c94136f629657e803881df5965ae6a79a2eea9aecea90fa8ad2373e036181dc2c71d5dafebfd84ecfc8ef3f72ef30cc797fcd7d68a71cfdf431afefc21c60ec0ba961ff2dadae1fa887e7ebded32a598a1d739c932ec77adc4aea5f6ab3456eb7c21c718ed30df72d9782cff432bd02fbc3d62b49fcee7d49e787249e3adb9273a4dccb75efd56dcf52d5fec6ce40aff48ed183055b1e66d4876e8b66817a222d9edaeb9b19f4c3e729e8bb95d0fe3d9c8703755c7deab3bbf463e5256057ea6c832759dff47999f702ed74989ac9f1d36fe1f94e771f41872e013f6f9f45b9ccf58cfc02cf928f998803e66f721b734f1cd90588c1a12e5090cf34235cb0f082b627aa6f2d71189d73f441f314f97ffcecac2dcdf140f5d6fc1e1ef75c55d6508fe87042ba0a7d1b6f45f573e9affce65a3b2beded3b4cc58f96bb9fceeb697f9748e6716be0ecaad49b389deaa95a6e0dd5e2583ce7c6e7be08f4a55d5cc6fdb095fc52d7f65a8edb19ca6c5b771edcfa3e53c1bcb871df624d05fb3ebfa8f7770d3c0f307eb806f281c0958bfca30f576338ed157101fd07b1c050e44ef7cdb6f91361310f32e5bab201f1c32aeaaff55aae2b49bcb7e7d27e8a63247333d3591efd387c90c40dcdf9e4aefd2fd6597b1696acfc45a3df7470fc807eb77ef3d0e977cb4ac0ca86bacc6d300d75a88cc57e3253523f9979bfee6183be94be12724c3d6c13ea611b27f5550fdb642ab0bf2ca31eb68c7ad8b2590379acec754b3d6c7b7ae6919eb9c71e3673e41eb694fcb607ea614ba987ede189eabe57867bd862ee613babbee45af501619d5483b11759803d6c8c731307924ec581f62073a7b6f98b36b64b1aea799ab95808e276e678bfd438e46bcddc4fe4c75c6a346ee5eebcceae796d761ed67f4a9b22efa39b33deebfdeeb3104f6afbe1918bf9d257346deb6436eb2fe397cc747f9fde5ff5259d65487569ef809bcdfc2835b8a64964a74fc083131db9772ba9a16e80f839d0efb6ec63b5fcd4ebe9dfce597ffb6fccd9bec7e7912ca3b73fce9915d14017db08cecc2cf6a3ac2f614f2ca312fb000b6fb4243e23f683d39acf313ba26eee3157fdd050ffeac106c752cde211cc519dfa9528b977ef4e532fc293295b4e998a78b10aaa13655e53e6fa496b8e89585fd482e2fd3cb52bac05aa933b73dd93347e8ac8ffeca7ec77881c62b90b97cbcabcddcaf081ea74e0deed7a48e92fa2d5599d8e471dc9bd16fb6f800d168331edb3bdeed1799cdc8b06e74ac29a7c64cfa4875bac807b1ee53dc9d6297b76b215437c9a466edeaa29d8b3d99a9f31d03defbadfcda3dce68ccfd2f97d8cfcc47c7db32df239f48ea03f3323633d8ef96c979f1a73480f2bf1467880bee79c8b06eed4f84c39bf7115bdf1d94c5299eaa45ed92fadb654bb6f2be63d9ca5f7dc97baa05e42dd1b70bf768793a0e9e259138ab7be11477b5c31be02ef01f58b6eedb59a9593a708cf274ca275bb2fb90f2ea9d7c7cbbe442eb932607ccdfc9dccddd13c721f16738dec9813853188aad66fd81fd7f6e7bc231fab5c2f23ec3b5946b147bcab7df5da9ea14632e117ceef9c8a1f677582de9bf7ccec4e399ef515b3bc656d0f5222b037d91acae70e3a3846093e12c7a8f20773718d390789f212331fc71bee43d3f6e5941e72b4e7a3ed886d2cd720133655b23d29c03fb027c2ada72befc785d72bc7f3159c4e78889a6902bd76d1206b7b5effdc6ba7c5e18a53258d76986368f5b49d76fa36c6cb0ed641b598a99ac5f770ae9bd17e25b6d307ec91bacb5abdf476601931d9358698d62bc2d2f7418a67f78655ddd9c7a176fef83dd47d8be82eab777dea57bd6ffbeafeb5deb7b7ec4cbd6f8537a5deb75f99e07eaefd9f7bdfceeb31d710d03c8e6ffac20fd9556fe1ee08fec06c3d85de2b937a76633f60df1547c4f80bef13c69fd65bbfdce810ce6a2eeccb745c4d945dd3396dcc2358015fa075d75df087b1b236c3b338f45b7eba603b46406e50951172ee9598e378d484cd97e23be59734f87d79813c02eefaca70deaff269ce2665300cf17cdeea056469a33e901bcfbe80fdcbf6c19f390577bd9ce2d0447c274e5e948b7bf1fd868382759af8e0fa1abac7a9bd87b9833aa8544c5acc3b17973ebc52dcd1fbf9c114e7c2cf7a7b3cc765d6f2ac96a41b616eab287d53cf875369a2bbacd0aff9e916c7f353f6eba9ff877a50c9a69f860f84219c35e61dd68cb311bef192b4dc40e918b19ae617dac1fd7d394ed36b6c89fb3328772508ebf026949bad02033d3bea483d5277ccd59b46aac3d52b777a1c636f16d415bb77b96017a45b676904bec028cb0e77aa96f105e78d27375c535bd0ab35703d1f200f302beff18cdbe8906dd43b9debf48ff1d3ac46fc34dba81ee1129f31efbe0c91c34e7aea25cdaffcb87e43fcab7cfe9e10c43dcad827d502241f39d9c115f1943e4513915d7397891c791f672be4d9b960defd54d21888ff7cd5b115d06be127d1e468ae39cf8897366db984819bddd9c702cfceee7201e419de07b93c220fb905f7febdd8d789077ee747d64b764f26759f45b0e7cc77ca234b05b1a689de298fee4fc332eae8b8b70cb9f222ec33b2937bc220ecb9e11a3cd6770f9d3ca09b7fe074d37016cdd0d79ec6739a6669407c512da7d483817361266cafa6621f4ec338523399942163c0848d31f6ccbafc340c109b6079033b00f85acab982827ed36ffdf601eb62e7b7c2fe245978a2b37693fa58574274704a589b13e56f7eb63ead10c005a5d92e7aaae5334bf1b330e19a4f6bbc6b7ebb84cfdadb5c63bdde07f5ceae53ec1ffc99032fdade5f19af7e903fa03f0e7c037995a730a4133ed4eb36ff12eb38377f832bcb5e3e435c39a9bdfadefb7185a92778a6b7e418658e18facb75dffaee83f1e2161f873363aed6a0a018c6723dcd3d720e636e18644a4bbae667915d71ce3e608c7077569cdf1857e5959c9c6d7a2527679bf0fb6634b70b3c5be7906fc09e79f946bb78bbe535b45d1dd42f99c7b59fb9f99aad1f90c7357e28a339fb5d5dff40f01cac04c86198b77129d91b71d7ea37d0d1cefe50ce3ee73e56e6608dde38167cbc5e573a47c3cadda5f683f655746875ff32128493108779b1c77dd9639e8dbdc79c1d536f82e706907d5c5acc1faea22160bd9519d64ff56fb96bffaf62f8a9180286bff4649d46df5b1f12c7a8ae72c615e1a24f757c68e52b5c43bd54e5b53d455023b2880e7cb69254267d4e1bea0b00bc3f9d27867a42309e4b12c4007de883299ac0b878b3e03cf3bec7739d8a1f789ed7f3e14e01b6b67fc0be35965be7ef83dcbd67c42b847ecf31487fd75395e1bdb25799b57dca46ca62d4847fa8bd419bf3e2b7756c06ce9ae7bac4e139035cbeca2ab00191873c96d1bbd9a8639b17a15e70e2c74899df12eb9d3dc45a8a08fd8d5e45bce8c337e24e7f57f50ecf01696b49f764679216fb04b96b3925f6dfe8fca74b6e2be33ae0a15bd75899d507ef89fcf97f6dee25becdbdac28f752fd07b997c4fed3dc8b7d27ee56fdd4705ec0a7b196e16233b9bdfe63ce7ac04cce05d54ea4b2c6333923fd8bea9c2f3c7ab3f4b9ad117ca94ae6ea2b88ab6f51eb13fea6c3d5d7c373c39537ffe06794de1bcc4f62e29fc8b9867dc1d8d3ea3f732d09f3e32d7aa8ef5233e9cf3fe56386cf3887c0cbb7befdedaa37212e3b1bf01c7438fdfa73cc51ec54df77fea88b2d75d69ead0871773beeca42ecef1779faf8897baff9f19bb8c7bbcbe83c914e2e674eb5e967aae9efe472e2397105f6d5f3f0e1732e87c6900da75fe57212d3cde5e0b5f37e39e75c4e11900cb3deb69f7fb7b06f94fb8ec107796ae49b3a41ff76cf18eadffe3297930cfe369723da9afefcd6879f620db9bcf8e792eb0b4e545fd0e6e71fb82ebebf1e75722c33551cb3559d400e5009e0789c2aa3218760c77e00fc015efaa15e6c301d575fe5364ed7b98df90771be7cca6dd099f06d6e6345785b26889f2fa2dcc6698ffc7c1077a7a1321e3d7340cff428b731e0dcc623c5548a721b8f94db008e67172b7c99dbe855ec078fb9e79df43c9e51dd6243e503c95f9fea2fa72573c4414f5f433d7de877601ee4122fe6b867fccac46f26f8ddef5bfd78ceae78a77647d5895173110d907f6f1daa7c1d6550b7180d74c438983ede70bf71be669f514fe5532dfed85b980bf9a673194e47fb48159ec467c85f2d779e80732966d77103e9e3733a7373b5aa0d73fff435620053355bcb168bbee08f27e2147ea6d895cfebfa6dec5a7ac435dc5b2f188b5e205f410c1c1d6e7f59eaff9b11979cadee1053b62d7e9f9a039d9b9002afcca22eefd4f3f15547f243d7bb3ee045337fc4dc53fad55ecb0bf88830e6c3df8db9e2b3e068bd5ddcc263d6a1e4dea837cd3d1854b3a973995ce1e7d184730c3231872e7eee7c1d9219db23aefc94708047c464dab8ece3c65ffb521616845ba422ae39d6257b4bfc7cfb3bc8d714837105b97dedaf44354d506f0b4d58636556871b99fcc57e72125df3e5b798a2a09eb2199def84e38a41676ef606fb4fb9c7c6121fa38bbd7734cf4d027aaea73ef8fcb7aa9e93bffc837052ccff946d1cc3fc75ce27422c8bfc76e84fa2fe7ee364e5c15427e4a794db2c225929b6139295f76ccc795338b38af661179b49477fc266b2d6379790ffa2bd95773036e02cd1a1c6b1b2ae3aed655b1b88fdbc6115c563ee712279904b795d570cd8e2ac9c242201deb2245ad33a5ee5405acecc147351d222278ecfe709218f3fd55670dea0a97f9337d059271e8e95b13b3d1ae62c6b8c9deae72e2722dd8ffab328675b5eea21537f51d703c00285fcc8cccec33a3d3f6e39e4387ec2debd760e1ed02e8db15e84639b9dc84e8049b5fceba9d97562a9aab5b1eabfc291b713d92566f732aec56f738e875d29dc3b6e9fa1d6a018de67e72a012c25da1207abbcbf608fe6aa1651112706e5411ec1b6ccf47d2a9cdfa7fd27b39d828f3fdb72dee190bd529d29630f1ec41692f3d20bb3ebc4922e6e80f9b9e4377a1ef92584adf506f0f7837983f3dc00e3e9791ae38cc6afa4dcb858782ec8c73537e74a1be2770af8ec219d2bbb1e29e4c9f7d39a380eecea8c3cbee5a81477dc072695b5e0df99bafcd01960b51a621feb8f30ff3d84deb3bc2ea9c7c793d3b01c3b3f59d78679e628d7847d3bf68a2f74f76e333ae725fa0ef9afa768f2813af852cf6eb93ec17cefd49d27ed391b2edea7b32122aae1da70ffa326bf341557bffdb8e49bbea3df3b2b83691807cad8e784cf9229a89786e35ae817a51a1deaf37f92cc83d068f09bdbb36cf69ece78dcd4cbd8f7a92eb31960bf8a6df18e4a181ac73a68f9595fb78429c119146b950d8327e4af7a57a27ccd4fd7fd0fa0b373ae25e133676c4c633ea17f949ed4e63846bbc067e2a471276e78c598abc5f51fe9bb637e02ffacf39d7eecf87b2d1e885c8a948ba19eceaafedef6d62c0ce5a5cf1279c972cb3eddabe1f532b4a6900381da9823f2ce5df465e9fd8573566c15c5f27c06e638c13330c76daf456faf68acdee51c98f6dc73a863288c94533eefa157d1bb817e5a635ef947a776df521e01c7cdefb962cc7ec6dcbed05bb056333faa70edfa3a2a3f68beb6e41f924fe7eda87f9a73857739cdc7aa86ba61e873075ddcdf128ffe61a73a67a2727d0de79dd2e88ee3ba078aff8e6ae3ddf830a9eaecb552196b5aff27bbe4e360fd7adb4f6b9b98ef980fbc7c7768e7a3fe8e3699b800a6dc6f306beeaff2f1bda1243915a46bfc85897bec97b57e45c66b0feb15a6cc85db97f47be37565f1521fb213f989eb9c90c3e0527bd7f2977e107fee1afa66666b38732513d1499bf941b7e74e21b721e3396dec8ef988d6d74f58b7e4f211f341d7dfa1ceb28f689393b61fe3b2b7a89e08fb245affeb01cf17f68bbc6a7f9b19f906399771a555319ce88da73a79c26e5dfcaf0e26063966c86dcce209f09208cf57c2720ef5721e431d71adda023123ca83f5064125f92c58bbc03113c7776f1b540d7f575dfdaeaaa18ef34347f2a8457b2601d43d123fd8e362d47297ad41afcff4381113e0eb7f32555b1b8b5c0cc8bb96f7d66be62e9b676edea2a33ea701e4cd67e9236230365e6c6edec73627c3bcc5c4a9b78cd29fccfd57d937d2479ace5c90c45b93bea9de764acfec1784e555cd5f84db34985331df8fd0df24a25eceef5bb4bf3bf3ef5657bfab3066ab7737f36bc5ed5817ddb17a6f6cd3ba639daa62ad1283b5c54bebd3fc35edef56fcbbae2cbfa4d316e3e9da61dc3fe74fcf0499dcbbb5224c21f69fda67d5e74fcf9af90a6bb2b7c132da5dcb8a6ddc7bae611c9be3a771b8b92a4de4997119c019a8d95e31c676b957bbbe25fa2870aff5edbd0aeaa5293783f5ed5a1678ded0ceccb6019edd9b4ea7026aed22c26cc2958bcfc967444e4f355027889165d65b3f5c9de9507861520baa4501cecc516a92ddbd487d2df66f882dad93e9b89276b30e5626d925756c4b11732c15138e734f384ebcc0be85fb458df16526f01c891c7241d6cd03e400f2b10eb1f6b68b15555219f14e7a81384ebe43cd6b459ce74914232e94cb80fcdd937a5973ecd6bb9c6943beadf8c1beee18fb5e7eec7213790aceaf9091caf64176c6b327a722a65ac82a4c894f439d4bca1bb67550ef19e966e20bd9657086c716ce865e19eda77535851a5611f539a67e8856e2c2c77cd7f2bd687339970afc5577af6c3876f7aa84f617623d5d44109fef38ae5b9a1f6d3de582b9a51853f426d86b379301e5b773e84f9df9102bae84f62bb39e3e608d668fef59891fbddb7bb6dcfd2269cfa4a45a2fbae776e2fcc0a5d07e1af13d238fef99d63f4e6d0d5efdbde577205bf7cc3160da9bb8351964611340debd68e2acdf401e6d5137b426fb98cf466ecfa93873ccb93fdaf60cbbf8644f70a64abcac93dd13c80c73bd47c7acaddb6d5e89c3375c5df8b9aef273a5a03a499b788c73ac905bc3e9e43d71d2b4f90373aea8bf13f8251e01cfed0d890b6fc8b17c9e18ae6f2e912faedf9ed5783480434b3f0ff81c6b8db8c32c8e10cf4d3f14e6462237974bb757db7e93f20dce74c886b1419bf691d5fb5efecc9cec07a1853c662f71300d401ffb0bc235557678d7464a670321f6c7ba1aee6198b5b5ad980b8a16c8d321d91730d83f7d8f5cfed6a488d98c0cfaf18fcb1bde29335e43de2bf7f41e7c29eb03279431f8fcf29578224d73047b6ce347e877b72dc77dd8e6ad68fe7301f503c6c96d52c77e617fb439bb36d706f87472e9fdccb80e2606999abffa103b9722a6dc70746ef9ee7ac7ec6a7d8bb5d3417d55cbad6a5aeeffbc934f73fed24fb599c3789622663c4f708e7a2962c49b667e609fa1a7fcac36e5f48a934cbced1e22ed6be4f9136a6376f7a2f457f5db19310bb9cfa3fd4fc0ba8b4142ebfc9187fe17eb0c9c6de1bc3d6f12f46364b2e35647c82344f506b2e51731dd1a663ba6d8b67386a3bde48b81131e6b78cd559f7ff3f5f9866d9ef112833b3b4336797ee33bb7d73cc9eb3374f525b7ff6e294eaa22c33949c4e9e4754fe5026b49c2f68cb04b8c7ac1f0e9ccd0b6f7e572cd9bceda733c7bc8cfb5eaab0df149db15cb03f7a0dfd1b93225f15a703d06c8f9b28ea76ebe9726e69ad79863b015e233bf9c8c5502e4a8e658c274e60c39952dd563a4805baf22f06f2dd8834e6d2bc50339d501eff9598069cee220c51e84b3daf05915e598e3d68272d8c40f152ea3b8e5555a5a3a7b1b75aaaffbdb9ccf135cd996ebc9aa199ca9a9a107ccc4319e111cff52cf4eef4427b539b6e72469c289ca1971765e72efef36c073215706ebcf5433d92d84f557d1e1c87e7d5eeffaa803e387f62c8397b8731e3dc69119c6b89863edb5cf171acf9ebc9ce7f80c5c552cff53e4e168fb7abfa9d38defddc6a3fb3eed09bba80ddad4b6f67d2f19df20bd71a92574df81ffdc3e73d1d13171579f6501da0ff05f8cfc95c319b1f5ae1465b8a863aadd495f89ebf2ace8ece565441ca198f70c0de54a29566b3953f05c3ae2dd162dae47fc462ece4b39178bfe9b604e16b02721d7237cbaafc0fb1a2325c75f58e7bedfb8f1c37987e6720e25d5c9f468fc7e0275de29f3448e01af0ff6ee1ad9d6de3f1fde11734c8d45fc62043c2a6edecdf7dd1c732ecaaddf74d44c91af9e623b23fd27137f636ef46484fdb595fb3dec37ea573311be2fe137641f1b85750d8afbd29722be9b67d7f7ca0deecb29f8d7a05ba4413f22a6b98d57c8f9eed3d9d353aee7207ca68f980a9e175fd5dfb9f637475eb0efcc1bebe46b829c6cfb69161c01d32e421d644ea73d1fb512d51bd5a28c8a06e3fc1cf2913603cc2e4a71de84da2dcc1ecf13c0d8d9e95abd6cda7a0cc1dc1fed7bcefc087e9ba701e1aded7b12ef454c5c0ad3544e30de45fdb201f91558e742e3638edf087ba0c531bbe275b2772d1f92b3a9331db4f7703267526753c6507bcaf60ce4f78edfa7813c5870750d9d6b7a07bc437c0d7332426d93450e81ec447e9c884fa47fe15c64e4ce4b0e731a5b45fd8ec5cc873c186005c80f132e7beaf37bda8aceadc07e87653de1b1804d52e2ea371679abe41cf0076363f0bde99c74451caa78564d3a5d10bf6791db517b3ef3f31ef7757f1b5c3828010ffdc0da05891cccbc36e778dabdb735688b0b7c063d1fd74f07c8b7347f268e4bc0bf9dedc15c4802f60e6ac05ea0a732121fc087815832beef6f9f07f32fdb757ceeaea3c239eb11afa5ad8ffa1973ee69033a0e7222ddf3a5f56948cf81f346dab5e77abb4ff3ed7c059e139ca78878a99ef19d76a8db66695066543fb9219dd94bb01e231b4e9d1eb2b398cfcbfefdf3464ee7fdc3f59dad47ad1d7989717dcfcdff4beb7b50fd78426bd3473b931a9e83b499ff46c67da72bb7d467f0fcc7b1807f1c1dd46b9cd1730ea83f92b33a6bea271f720f62994480bfc52e3e27fd71cebafac35a09f368d157533d387fced9bd7f207fcd94b0d63bb4bf8091628c4a67f76be6976aed02bc1bd50f7d1ec36ff5533161fd7440ff29ee657c46e26b45fcbdc339d534f5b1f6729bdbc0ad4bf30ff61dc44561591cf9dd7a9cab4ae56a3717523a5b487398fce61ec053602ff7f0b066c9b667e8ab7ea3fef87ceccd2b96179d16110eb7b560cfe09c7cd299873fe8ccf483e46983eb8d3d3118cf3afb277b84079495b8f43165c4755589d4afeaea8e74c056f5f68ae4f8a73a1d359ccfebadd7981794cfd3707d0feb4bfe4717979863bded86b0511fea90b9865b44985310e087840a716649f93de409e9cdcf2571c3aabfff77ec7e9f8eccf5b3253ed3e9404598a5426e43a9799cc8e9f7a65e2ae47916249f57ff56be36e60ec7e362a3abf31490aff4c2f12713d64b508788fe3bbddb1e7d5afb8d6a55a8e75a1cd9ff58523f44417b69612647e47f4b9fa94f665a7986ebaa9d1d78a33332c91f01ff04cf8f835af0f2db95af217ef4b2967732a6dac6ea9483deaa0e8af8d0a0679d6a7e4bf4117365a277b5e133737ce03d5b985850ce9cdec5032c75defce09aa2ad7a4981b74cf52698fb32fb3e72adca19d6a723cee26408e5a2f13bcf0eedebf6feaa263b2ca72d2fdd660bbcd0d9186d7e6ee81e66d72bf9cc2af04bed816216e825b8f2d73036d2246f0bca9bfd47e32ebe1cf7fa52b32018b782580df6f253847bbba4bdfe64628fe6b0ac90ef7cfc54533e0e6b022feb5c609dd1bd881b5a53ea2d6f04e16331d4d676fcd6caec781ef2d66f9d35c102f38e8035d2b3768ab07fe407c7673d99780f39d9bc924f14e32c04f031bca8c21badeab84f31dcd7ba826a0770bf4ae24eac0298db73135ce903931e903b5802d69519a79bd37efec77de57dfbdfbaafb2998ed8975999f42263dd75bf5e8b77c45074c06b510ac0005f54ae83651d0ffebc16f36bdd196ad2db5e88ff36c1671d5dee88cf997430fc1b2b53c995c01e373a1f4e326e4d5cece9537de073c6112ff0b6dc4f1924c01b07f89f877356599c33b0c9fe226ae308c8f566a6bb9fd3e2a97ebbe26b4deb5dcb394a78d66ce5f693916367dfff663fad692d0f9ff793fcc7fbc99a68a05eb7e8df147bc831cc45fa4d6f26d88f6cd607b5397e8ef3113b7b9c8eb0d7c244c9aec88e9e8ea4a43ed392ecb5e6ded68708311b37573972c39776d3841deebf19f14b536dd54dcc6b9b33d4c715780ed4c2c4705620f7ec710d62f97cd38f3e52b7f7f1748b214f3e0867902bef2f8cf9fb3ef02f2c23c012a49ac960594fee0acab5f339e77c3668f1fbe7f435e1a98b11e3b0f66c981b28823336847ac1bebe27f73ecffb05d9904b9e6a433d9042e13a32ff64013d574e573cb4d838f7ad717dc1ac1901a74b9e228699afddbb9c090b7e696b03b18628a77ea503d75c2d9bbf00ff9f0af4f11722fda55e2dd6e11409f67fb778b8bac2628a621039995dd4979c628567f511b7b5943c5ef065eabb9dce8037640a3139f8dac70df59270bc7f79b75c3e4ca5d92d448a313fea0defb798896deef2e7638e67c0ea20c13e41b72fe2f62c10aaa77a8892c16fef536ca394f408c5369a6a0d35f5ddbda9b63f266a7b3f5674e60c63e64be8431efaba18846d7c48b88ab98d754457afb43ede7b175bc5731d65fee99c0b73e1004f4cccf10961ddf61eceab0cb13f201735d4c46ab3df95dcf35110a7a3c1f344cd33c7447bb8bfb3792abbfecc08191774dd557c8531149cdd487c681baef528091ba73346bf513f61cc7690cf07b1c89772b18314d356e62b4c8bb054ee9d0cae7fa33e8f2dcc665b3e5f9f30db5b9bbadee76dfdeb90ce30651fc1dd777b87631b329610de600921d6c725ac979dec88f67d312eed7d39b6cbdaa36f423c1e067231713b6e039cde78d619c7b05fdccf37bd35e3d9639a93c5154ed8abf87b8a8fa30f5a1f331d0d23658e707d61daeba3cfef9ac6cb48f1dab9779c433e1ace8af1797f9f4a926f382393f039a7db3309fdb3d3ecdc602c2bf05c4f8edbe07c0b9c67e73b7d7ac722b7edbce4747693e9e04f0bf10546289a9dee9e2debaddf159db1bb1acdd94780bc93eae9bd0d88070f7cfaf502fc142bef695cde5773ff3f36aeb38ff5323dd5d3b7e31a55a1b26946e3fab81dd7350ebafa023bad3dc5fe089cb5ad832b9ceeacaf64dd122747013cdd2e2e3a76e40dfa050f0aceff84fa4778ef25f7fcdfc810e786f07c9c6d8f70a8c704cf43f317227e45ae92f49b7a2989bbdede1196e067e7b2a15c0072f0db559b9359d279c31873d57de2970de7ff57e767cff373fad7e6c7c9c5f6e0fc51786fc07dd224ad498ff7a86ed3f33dc6099e46d88badcceeae44cefecb1c617ee9a4e89cbba74d7bed7bc93557d48fbc3058db07b96cd2dba968f3106bf43fbfc2759b0bfe62761f34ef635c0fbbb8c1217365aa6c1a20cf4b556f3df552be38fd351dc9b07891411229ccbf6c8e927d57ca95c4cae810e72a8d3057751d73985989752385dd15b73e80f369dcf87319ac6af07f7e9b7f29c5ea7f7bfee59dea3bbe515fd16c21b1e73d3197fc4bc2fcabbdf51cf32ff27f26ff0278bbfd1b7c5c236fcc2b9d6967571ed6f4a53dd5fab7df8ffc3ea9116eaec6896931e9571b7c8d073b3f58b39d13f3ebf70299de1fa8167d96f0d9e1bd3df128d67fcc852cb136fc3fcc0df8988fd8a03ed4d930b93df7742ad2578cfdd398fadbe4541cc89e56608ff2a869dc7e288aeddfe74c40d6ff9c335921979b6f7b473e2f907debf88ff992be1ffc1731fa86cf422c29e78ef9e8753a153b2703f982cf00f9c3f3f01c142b789d5735ac9f84da7e949f81f98dfc74731af655b7bd9adc2fb1401c41a61759fc1db6ffeadeb1420e947019c5d88f4ebd7419f9e92a4ff919119f9f9111e651415f95654cfda84e7bce579ec09ff0aaa37a8923c430fd6049bd40f9e98835499eef7f99fb87da5acafdc3f9f055cb21a103ac6328314f980226639b626108eb9855c489e35ff848988ba626ff7126474e264a3c876dab36806153fd22e51b4fc3cd6d9f5919dcde271db57c3bcfc3cd6f62f39dda0c4036572e367f71fe5397cf887d67e6a9ffea397644354c6fc4cde6eb59aaa82ffd90c1f9913a48b1466ae0dee7de7beb709fc0fef8c95803f97e05ed43b9e8912d663e9abe269e10ef175d6b2b3107b94d04e27f0f917b97d47e15c3afbc1b3b67edc1409d50f4a16a78c63bf40b787f7dc19bb37be7f5d2e48b38bf7f2ee4cf0ecfd1593f330f3b9e6b487e059df1278e74b6146202af4e160cd406676e3db1debd8d4d3fd9656bcef9f3d1622eb7fa4698529c9a03fbc62fb7f3f354dfedf0fce948a8d72d3ec39a2e0f356281b90e1f7e7b9fe8439d9bc74ff52c70c6b3471822f1ec14c0f1cbfcde67d2253f09c3dc526e4802fe253a76b1b7cf6ef4ebec0a073ef139c4fbeb1a436939466cfd0eaa3b7aa5f3738e8ab149eaddb60672b59314f7d46396418fa9cc7ac7dfc4eb1c53608d0de65eac7ff359ae4c43be5c3afd2226b6a48fe2a736c66a3634cfe8dbccb6ad0f44b98f37f2b767a0e33ab90fd2a15fc65e547fc5bd48e6e6375fc4eb69fc54b7f1fa1672abb779949197723c0ee78245545748f9eeec95ea76ffe4037e193f74fcc673f9e5d8dab5ff94034c0123a5716b65d202af4dff844de48857bacf89cbd3be5dc5a665ef3a0631d910d7c72aa869cf31662fdbebffed58366e48beeb5544dcce982b9d145483f580fc42618675d4a1ca207f1df3391daa2f8b7f1d7f49dfaffd66f62b8e1163fe6e3e8ad19e7cd9f4c03a69297690672b479eb9c5315c6c64cc1b8dcbfe1bb8d0bf3faea479035d5f863aba1dd7bd887de3d17cf586b7e3bac2ccf43fc432babe591a5dc9fa8cb84516200745132c3bf20631f9cc0fd097af4887a47bb281b73214f259aecebf2d5e4baa0dfa2ee88cc457f5bc8f996b2fade98cc0d99ab073394d37067308bd39f4bb583c13282c3a312de04c79c538d3cbffd5f9113c3ff1bf363f4e2e5efd377e6fc2bb7b648f1f1758871e9ab1cd3f6327eb067bbcda3902ecb90863c2ead26fedb5a77d43f51535c51f5bc27820a7837a7bd76f73b7e01fcdbff4e533acc3c01ce569f8c273e0fc454d5c442d8620535f7b93dd3dce432f7b9541ba713efd643737e9fc09cf7b1c2b532e56177ff61fd76556c47dbd34f1afe2b6fe14f65fe3abbc09a8cff7b7b8c0bd30ffdb7101e088d01263e095980ca8b7a95920bf987cead4673e113e5716db12f181e6ff003ef0752cbaa47e9772b61dfd7fecbd597baacab63ffc81f6c50b18b2a6970105254a224ad1dc09648a02ea9eb6f8e9dfa75a0a28d4ccd5ec73fe675fe45973254075a3463f7e83f81129064ffe950544be1c719d22d237ffee7c3ece66c7f199ac963fe6db3ac1771a2f87638ccd09106ec27986632ccfe592915caeb85abf53cfe5423806f773b9d05db641f50d07f110840745cef30bf79316e556c27717ec5ddc77d9483282b7e6018be26e101bfc97732737d0718f253d3792cf0d681ec452c271fae5702af6b990dc2b464f8dbd637a358d1175cd03d5201c312e9232bb9fa73ac43554244ff54af25407738fe82eb70463904bc6bf1d54b39aff9be5d6ddb42e3f80fc303f97f63b9cf7e78dfc48178f476a6ea421a1ed10d1f6dc7d86b68fbf47db52dea4ed8fa98b683b85bccccb86686fe3ccb9101ad8ce10de1b3a8f1df64fe4d7d92665fe09c89b293fff8ff827684cdaeb63ff04ce49ffbe7f82c5ed8de7fc135bebf7fc136c1cfb29ffc407ef9f50aa3a59ea9fa035ecf3f5d3fe8903cd3148dc15c6b3243906c43fe1dff74f5c875ccd3ff64fe0ba09e49f807c28c4f954e8fd80e12e4c1b390afb21e24dde9eef516052ec53a8bb390b8bc52351bd08c1ab9de11a3813d5e53e91b7c0f67c019ecb5b606bccae7f2a6f817e07aeb5236f6149ce876226431e4ce24fc7d9c6203d5c559a3f3ac0ef8113ce29ae78e5526ee8a024ae42f21059bc1ae9b014bb46c2f60e89450d2a1e2a577d9c6f864e752062b3034c6bab1eb68ffa16ea4fe08249d4e53ba0f60dd6ad51ccc97187f5df19b636a77aa57410e826d466cb5f3af223b4af8cc571719e98920e986de6d6f2c4481eb6d00e9c505f08963bcdd8a3404f94f257e63bc03809ad9cb3c895a86f009e9b4b7a206d89ac79ffc273fbbc9733f0286e6d67c2b9b1b327fd0a1c96ab82f39049ee20d4c942fcec5d3f09cbbfd21ca2b778753b79dbb0879c09a9ff02b8b7d9143d0f72f6fc6fdbd5854bb0689c0bf365d2783ba427e9a0e2fc769bf4d7b2351cd7cc691fd3410c82effb8294e36fe65a1ccf04eb3a8bc0ace15341769a3327f312e6d4fc6df33a483867c8cea659735ed7e34c321634f7286ad244dd7f377ad2afc2ebe7528dd641f289f5bc1da2d7a56b1d387a43d846f110c7ba1d89f01045aee7ca70393b18bf09f9dd964941fac8df2c826f70d451ac18e32828b3764c5e09f13e40dd24c579de39ae1765f635f679d912f5e1fc47f7e717dd1fdc5fe1e9fd8174b18ccd94ae1be9e98b4168129b684f3002670968fb713e706f626e8f90cd114c33e237ecedd9b3ef08bb517ee8a3a03182dff151244ff92872e6a3882467e00d801ee23e95a6b74d59ee42200973173ee0f92492db88c5e444e6210c88c31cc7303ca2b31ee71477086174e4da5cc7f5ff0b3737689c10d222c5e86ce0bdbe380cb31dd713045b6b4cb0e027f4dc1cdac705cb5f56ff4e74e14194d9c3e7dec94f04eb70f095d93d122bb1a87e69537c7ada0380f40a2075f70ec3e1cbd0390513ace36e20cd35fa830c693f513c8fd4603d36703e0cc1ce38dce8fa698cebcb75714f0f3fd7e7044f8af6f5fa1aba757d73a119b8bf12ca779ecc5cf75cf54b683e6b19ac0f4e8671563edc69637e6c6f2587e81b31f6c35d66db3dc26049248bc60700d6c708de2ca8f7ff667385e3a2fc31ab9c635df293623e51ac95669c0ff20eec435507ce93ef44b40f456f3f482482f94079528577c09d2bb5978ef3fab90e7b089308618426830aa31dfb68de91ae59c58b1c562b03eaf1a2e764d71ef22c6f78e0e5d3c0dd847a532f58a26f27dadcbcea9341aacfdc3ef5d5ae1f8c81301a9f19630a79a561e031d09eb0312421afe5f419a4b3c8e9848f05cce4b142f3bcb83cc71dfe5d7a20b9680767a4e9044f60100f5d2c577cacb7c51248ed21e2615ab0bebc203f873badfadb5538761fd4367625cc47699f847818d4ef829fd37ba3ce7274e7c70437f073eebab5fee904c7eafde96fd7ee19c20b77a7ee0cf5960c5cde076cdb98ff389b6591eb4dfb8ef243c7b776556c01d3c0cc1bf6583e9e9290bea7f6c1213ee5c0bbee67cd98b69fe0feeca8ef4fbde6a66ec750fd3ab9ccb6e168515efd48b27a8eacf1bf03f8776f32a92b0004c778008a3df539ee9c565c7d8ff32895ab3ef5a6349e4d6a7a529cb720199a3db40ea8fe5b490d77649834766f4b41d32f33981819c223735ca4f3681ed1315d6acfa2bb62235c5c5cb7976b1e088fa487625acb6f9754da276f8163ceac87cf85c435847c1a8de585b8be03f5d2b6484f8298f80c03eccfa0f525c0c6398a1437bfa7990dfe5b52fe9bb8968df063320bf700f273f87d87eb27e6f3fd8197d98cf23a5413b19466d8bec772c19e4a2cee69a1dc56222fa2ba6c192c369649302a35c26b27844fda6c4f581f431447f8e5d0be3486a1d9d2584673f29241945923a1ffa531d7c4adcded85ae296ac9bdd444368f771d20df834ff2d51bb52e1fde5e9ff03db57b80f41532a6acb6721b527cecaa6647c258818b1bc5416df8ca2443a298675fae7d9a6d42aaf7b11e0213858c2ded4475363687632e3565d992c4a4389f1ea9b937ec2f8257e3780cabd4a0fd26b17f2931d8dad6d7cfd922a7f871bf1c53d5435d50ab83f2eceb7a92a35ff399a70ef1feda435c0f50ebd368e0f853d307761dc2bb9664b8ae6a3a7450cec0b7fc670b7b48ea8b86551d02e69d157652f3dd14f5de9d48a49e4b02a759717c27347b26f764c7f0c0b3f89e2e65cd3cd520d8b937c753916fb9d9438af82047777527d7509c05aec99a0ec169b685b602dfafb1ea359234e7e4f547e80efa7ba3c20427ba1af6270ec0a0e64f1cb8144f09e35e0d3cd46398f56f192c8a84e21b915a51aabb1e758ab754d9e300d2883caff28b903c5bacafc664a00d668bd4203eca86ff70aa103df038dba2de3b427c1d0fca78680bdd907d50d3f3628ac75ae546f17abf8af5fee919d383ad4544d75eba96b4ccc61defe6d01e4e116f915e482f498a0b6aa54d19cceb96383ea30ebe0c82a5beb0f0fe78d35e138b88f250621f68a134eb7a468b32e7407830c1bd30345aff437e4ff9606f9611bd0af5ceabd578c9b5f8d63f5ce31521f9fb3fa8c6cbcc074fd57a915c37e63bfaadfd194b24f69052ec69b070869807a727ec7fe9c3b1209df6706f55fb3453aeec5eb0fdf2a0cd9c7cdfb77cb30576c6ddfcb7bd837b95727b4662ae9920868e71f3bbfdc737d01c1fe3856039fe218aeb4d292e3ae9a3f745626e01fec620d86aa4e6c695302fb13dca6b3c4ebf7d5772c24f41395bb7f20cb4c81d5f295e3b8e2f6b551ebadb882f603f9843b11edb31d8ec527d0bf24aeb85e0a1a704a7631d933831588478afe4f042faf2869149f5fce316f228c8771ddfd285fb23b1fdf9443dde59fcd610d4eb1893463ea116d6fc6ddfccf392726613c6707fd13d02ee4472791b12fbbcddfe24c17d3379faba911c8979e32eda7116d0799e9da1a1c5981f0c915e235918b74232469467fc7e3d5d4efb4f0ec281613673d4e07f17d497d89107d9f431c7524cfd84edbb8bfab3f7113ef117cd2dac7cd117283b711e9f5a9f4bbe3b2c5d1be5c876e4cbfd5ebee8480be9df1792f11ed2b8163d0fac838ca64640d7883134914e6f233c3bc8a7173aeed93c776748ef5cf8a9ceb024dc2ebe0afe0abeaa38d8b73898df1282ffeb2a04fbfe7d8aebc09c39f5952e8c19b71f9ae3250e1f278367626750761a24c722d5bf8abdde94254b89d6e93ec183513fe331f109a17e95c3858e7c3a46e4622c03841fed3ada6c1122df90d3b306e4becb823b7957ceb1b97179cb987e0d11ff6fc5fcf8b85a47ad66fe9d9c43fe7b91f89eb27cc1d045d80629f395c92b95625bb21cf32afe90235c764ae352ce7c09ecbef97b62e78022acee65958769d2bc30bb8868edb2bfe7f234738c110f50ae3c8eadde6cb323b68a7c6873eff8a762ce1f949fdc724acf50ae6e666efa6f7c27a09e00a01c51899e7099f534819e20639beff769f4979319231beb45a3e590e41bdd44f5d677f58823c1126be911d3263d90d83d8ec1baa2dafa218d7520bf503dfe0a7e330678c198fd7666b76380f09eb2d8642b06f8f7cda9f4b0dd97d9c3d69caeffa139dd8b956eff437352702f063b9bb6f7e9d74c3252c8d349ec4b020347777554effc6b96d9e56c936079bcd030d6b81ccbb38d866395def8f081f9caa016a3dae4c416a7fe7eeceb982fb4ac8603ee62ffbfe3b15ed767122798929aa2728e311d9c19c1bcc698e933e213b3ad48cad0fa3dfcde9cd45bfb58ff7f237c05f7b441bd8abdbdeee90813e7cc7ad82eeccab686b20cf58fb4d648b6fb89de8c5d24bcbf57586f3e941d5aff827897cae40cceb9c914dc8b8be1064fc9fa180fff32865c8e08c2eff9c458e3b9e6f4aadccec4bddce10f9238de5cd3c76584758e9f1ffee79f87eb5a24b8ff8384eb9c67e5753393c2cb6c43e4b347fab8fa1ae95d77d50976b786fbf81956340c48ff16eb4872303704dff034a37df33621ee698f7d7e036f003076848771fc660af59925f8ffe574d0f8fb15dbac2aedbb6e7de11a77e63f0fc87f01ce7359d8eeac9c97354c119ae7887075031c1781fa632ac853fe9cb9e03d2e48df58600f683f43508e0fe322dc47a6bbfe585bb7c434a4a5373d2fb7d373e419fb68fd720b17209b6ef2cc2ed5cd72044ecb52fd770cdfdbdae7c4b736a16f0f224595424f95c69b7d342ec04b6cf6cb44d7f2680b8e6323592c7c7b0b46f9259c6b7ff8e6cb6aacbfad161eb8c58ab10de7d7385abfadc6ba6687be7d0bbc249f15fdf35201d9c4b89ee0b3e3a19cc73d3b0d1500c72a96be750cbdd9a1f52de0bc384adf9c29691a15491eeaecdb6e5c18a758313689999fa375c7ef33eb1c29c7eef7b2e4ec64f62ef0d42d3ffe6c6ba55161efaaf95a65e0a99ba5a1a571014ec9c806b1e9a489e9b6dee998af0ec70d94d40fbd7cbb1c3983a5699c420564bea9f67d538da36a9ff7d1d6c9e3224c03c55d01d966fb381e1de9f7a42f5fcb3fd6da29f1e475e88fd93984a621058bdd2af054f543be9e7e82ebc93755f4fc7808e76c8c034fcd221394e381b47a47eb18be8e4de3f435cf569f8b975552f4f7e1e01847f9f51428fd53dc9badd07ccd6b1e6fa7abcfb9f6c7cf05fe7be8a797a86749633394a3c296965eff341e5979a8e4b7c404e59cbeb74e8fb192b88d791fc626dc2be710fae3d7e6fcde39faaac6b7a388d21f90e05c76f4796ebdf9d7483bc7dbd92adc8253d073f691f2b24a3cb50cbd641ff79c3cced8b83bf6bdc56e05693c28ea6387263884be935773b56e9e22df42d9516313248fc6857b1815609318491ee4f639508e79a2a797c077761f6bed968cac7d54c487b1d93f2d7a5a1ead2fab48510791d9bf8573f46f23de5ae7789dadbe644293a67d8eb6b63436afe7a07ceb8f47c93e2a9c7352aa8748b15344df1b462f87d09fad12dfdac333b77ac9ed631dff81e80eff7d1faedf7691d9df4cb65a19f59c73a0f40fe381d4ff9cbf417a95e2d1f4d52ab9f1d18f26c745b682cf243d9b7c13ef19dc0ff4cc0894cbf9db2ff8cca4fcb11deb87151aa748cf90aede4b0def03fbee8f339aa77ee88ff5f83c29e3f63374eda3e406d71315a037aeef2d9cd71e3e4fe793f4a6a74851cfb1094ee81d45fd84ff66df1c25b749d13f05caf51c2b2ea4ab7394d987a867e7cd6742df2aa3de983c03cab8e89782b18eecdea27be6c2bdff577587f10fbd5f49cfb663257e45fc95f1d2b7fe78b85f2ca497536c1a65acb8bb70ae6681efa4ef0bf177d83dd9ec560ee4052ea3f3da5d89e5632f96e45b5862dee037beb7f482d57b753757e38504efc621d29b34f056bf9feb947e5738cf8a2ea43f30ef7b594f748bdd1bba8e856b04be1c1a6eee5833092ce01eda8bb70bdce78ae7103a183a8693196061383f9da1b1980fadcf19b086be0ce60bfdad3fd6935d32722e1feb1f67487b8177dd453d5bfad8ac2e1f83e1b6e39b1a18829f4ed69f2f5cc345f74672861349b627721e5ab723cfb33791a2de125d73e7ae6cf852f8e966b206c8d81f857cfcd8da37f4ce1aca68ee3dd3b8c5a52641191499c00b7d4b0afd55b5c7c37cc8f10876bfe29e53468aba754da384b27aee3ab78fb5a6c55b2bfd5a5ce9f3ffe268370fbce32cf0ad3cda3a96339abe8e8746191786fa39b2a5b8c84fe1eda5fa3e9461e6f59c48d7fd52014fbf171039f8703e667e5b7846b95440f9b1d6d691d23f849e71e2ff0e46abd7b10965f8350fbc6a8c64945ace6087f660e9a9dbda3b667ee9fade4ce99fc2222f230f64dd63a6bc4e221c3f54fa85e84c02eefbc0cc8fbc3c11c98840b9a6716fba4a902e70657a1227e73bd7797fef88be32cc87f16db79af95619f8d90ffa9d4f2817b672437edb87c0b76fe39103759743e8dae7a808f77121e7a15ec9c2b93b7b1db37367f3dc464a20fafda6da4bc75d7a72436769e93ecdfbe07e0d6b3adac37bb1c4fa6bc7f9b5c6c33aed88e8758695873994e96e358e01d7d43f85b29587959ee9879ef1cb2d40c1744403cef17a887ac974e91df38ebf0d97be7da07fbfc7ff66527fba9011cfae746c172c5cc91839a03f735c753877d5d1c7fa6d3b56c66a3808b3a08c0f8267070b4935e7c0b21d78767abcb11763d5ce86b255567ab19b191f2ec246c83f1779f3fbae1c9a463ae5be0f0c4b5be4b636931d6b21a93f6752ffc3c9f2f9c20543f48e145c66b7d5e543e7de19e633fcb7e16dba08cae99c9b6fd61f3aa0bf70dcab31931d03d2bd554e95a9eb961f8bd9b6d2c5d54f67087eceb2fedc1982b92fdbc66208066048c6bd055707ae4f6f7d1b2cb2e3c7424e3ec89ec91f83ec32e59f1be61f73b9ef3bae31c1f3747bce301cd8ebd6330b60589f8b2c46fb39bd05caf4160eb9fd9cce5d75e2cbf678e65ea70b39f9b918e613baffd385564c076f2ff79e7786f9827f27dcbc5d3e44ef4821000698937336f0bc81f93198ca767b6db319b05d5fb23f17998bbe3bdb64d7e92d2eb9efda33604d1c30c6731db8923d008605f9574be7a7b2f26a2d32f01318f9cc813a4bc5bff87d3a7263b03db6e76ffcd88bf9d0982e867ddf97aed65cc2673a5dbfddc4cf3896db7cee99794af9100c57b5bbe5cace7c21217abf55f7363166eee1753c18b37d74a5545b0caf9f40ee4fe7ee11d1e974fd706e25bceb5847545b771d64600e8620803a06c7772c2f033f9d213067004c011ce7f6c6cd235f36efcbf456d9a36e06e9dd311ca33f58c8d6073acf01f777094c1dd7761dd7e1ee5262398633fe58bf499cadaeb9d9d170f3fe620ef690bea47b6bc17ce06acde4596d7f81947f2c323047b437eccff15d8d6f1feeb0b4793e30ec7fba52e33901bf2067f83a1e04073a9ff1fab25e7a323ef3d16135779332f0b5dd7824adc2ad758ea00db2ee6fe3c2b82c7564ffec231fcfffabd4b2d00bd3c4bb4a63d3b88d8d709f14c3d5cfb956c445ff38d61365e98769d8b3d2d84cff1d97adf72f44479a875e88ecdc89ded6ebb8ef1d23c5c9a3d1f44ce53fd629f323914d7f101970180fe17d0da773d77627f8de1bbeec84eed03d3468fa303690ce6c78dc9ae39ea34626b84d7a44b6035bfaf2aeb9600d9fc1d6cee36d9806c5355f78c685dfbbc8ebafbf746237b66536bf3fd3a5375ea1b330c111eaa771a9590efa1ba7db9af87c3e1affbff4ec5bf5bb6bfae5f5e564c0780ad477b3d0b7f27883ef396f13c65bb049cc7ef96ee6a7a50f79e70adb5dc4bfd1b05fa3c44cf771a9129ab8acc8ff1f023f3f27feec301e39bba53f3d9175ed83de94fd0eea0ca109cad0b7127877979eba4ff4d5bed2b9656e7e4e19f809a5831defa7795fecb0cf85d3b3f0fbfcd8ab53e039d9a2e867e13c45b6d524cb87135d6bd8595a9fb3ebcbd093cf49c1e86fb7f438fdadcc5ec7a3f0bce4f52abc2fd2d2cc6f93029fc7646be591d75742573d87a60bbf215ee3c8ca2313a4b1023e206dbf9b79c6e968fb8fb5a6444a9e356de0da1998f9262ed532f4ae79e0db3959ef3ed4b39a6fa1b253c021f46c0914a04c4cf0f2ec9893f2c72a52d4c3d75cbb2dfd3dbcabeba86765d0d68536f218f23525c7fe2c6863cdb50df5d94df2da5e51dbef04d70ce9a04e53ea36f41db61f5d767b04d70980d57a1fef07fb0670b3fafeeb95ff66ecc1f30160dea273fc1317404a7cebd478b75fa7393b4f0c60a17d07f6feab7077746e135df31c60b90e589d5af2873b9fea3b561ef41c9decebaef6773cf689ace920f81b3756b7ac62728afb217cf344f43e7d215b4307583fb9efd4cee07dc1f191fa995ea21ef27792fb40781177a6aed9bf2d7de4e7c3fb34576bb44af64209657081771edf21308b7a537e5fe1381d770a9c7e97c6ff97d3d6d071430db857b77967e202dc421fca595b9a15fd12f2e07793cd4fc827026803fad608dfc9d573bc485737889fadbb78ba9d235f7d86f9e4bbdec94f293d9570cedc39503903f98a84e5638ad6f5dea421e6ef2563e6c8efba8b0bb04974559dcedf7e41fe1bf466a7afc5783fd67faca61b313d040a382526283de49f4ad19c26dbd575ac1f56e47b2fd375b69a946f35bf262f932ad9373e21d9009cf33b9bdbeac0cdf3fedee5611e6f9dfc4b4ff721e7ebe89489ccf7ab9d63e4f7c6f3894c438d7a409a14499e0ce91db3f7383e940aeee49d75a06fab2fe45e42bd412c7b7ace397e4c4b95beb256b3a56f5fa29e9db7ceb72eeb21cf3925def520e6095a9af8e81bf7e53794db8593c70528275bf68e782d05b8259efccd6f5a79dc03c770de753fd8590c22e57a8ed7ed33a6fffe9fc0bbc67abcbdcfbfac3c1981325a6b705c30776b6ba3b2ac632fd0b3c69799df1201ad0745ff0c794db4eea077c6df2a9ae77452c43f1664af447a06f2e7eb069b6373bf1beb2b02ef7a0bbb7cf73ad12d7d478e8b975532b2e4b0ae7f36fd6c45e2a92456abeda3229700b1799ca1317ad745712d62bb0da41528722598ab23aa4f311ede8e8511f90cf7c8866bb92c085f7827dfe3f464ca93397aaade737be1d6a9f657f41e77afb9f72a7eb22377f9c0db35135da33c9fa393da9d92235ede9872fa65e647a8a3c23901253f8566bf87ef31a7e793b3f014a2b357e334c7afe69d4b9c4f948fdf8af7ee63ada5d196a79d6adcc6194d995c2bfa65a080e1d247ba601eea29b3b51afce516237d2699869eba4d4c68db0f2f75fd8e3d33881450849bdd6aaabf5ca683b76bf3b9c434d69109dce5c8ca63253d47e6ec753c783b4d176e5dd7446b0bf7c9287b1deb52d9f84e1617c676a6f4f3b008f0fb9c2f88f0ed7de481456282cbc7faad9cb2983f9301398aaf0fde4e1f068b7dedb978007f376e683f0d5b09a5eacceedd0f642be3738132c38336f884e823933cdc877e7c8a45b49cb76deeba0eae225ef14eede7fbfce2961409e2c3b32dd847a693d77426c24bdf6bfce3ed149bd734a0b6a25847aec5702b7e67d76db9e2ba8f8a03d4bf50fec25d1e0fc791e0f3473df1f203d21d053604fa19621fd424bb5a8becf893fa084536077ebee68b393dfd3cf29baac4579ab4f7b9a52b48fbc6595d22d3d8842ede072ef7601799f9692923fd1af99da0bd32d1352992a18e239687c83626ef8d7569b5f4a7888ec7667fbd44fa21bdf76a1e92ef8e4d7206736d1378d74350189b65a9a541d157c2b9da5e13a363947fb2fa041d7ba427b655befd6adb87f807f9a600d1d7b6ced929f297d09beda0fefa2e581bfe890f4f7e537dfe9bc9f4de3713b33f43baa4ae4a9114eebf4c90bd0fa09e2eb857f8673bd1e3eef146ce199de5363b2566df5cfa691eeaabb26dcb56676ac95a9a982b9c23348f57ef662a25a3b7d749d9ef25bdf894dca6a7a8676d27b2339fc8b6e7947d94771197ea2e31e5c35872b4640475164b4e4c77f52e3833380ea497600ee5a47c4479378aa18ecd7e51c9b9fc14929c8eb8d4f6d15a5b802c7e15f8000e4b4ffd05dcec14f88e14af57db508f0f8466dafc855f3ba7ab31f97ee3e29e5c7e4eac40dea0cd2b794e64d400fbe726bc8e7063bfa3f2f5b5e55b64b40d0e2887c374ce410ffb41b17d02ed7919da3ffa979b67ef7ac2fcc44bdf9603efbaff2a4069956219df90b5ded2033d5e2fa7f27a22b49d9c74e9a9283f24f4ae7943ded5d6c9fb3cebdfa13ed9dd8ada5dcca640b6d25dfd0fcad45e95e392d2f51d51fe0b8d3f036a17b2d80af22f2fcc7c0dedad86af99cd2fa2df75e5341eec560bc5ba85bea5049e75c0bfbb56f956cdb10670aff973bce6d4afd7d635c1cbd287fa92ba45b6093c13f7ba0fd622bf1fca87b1781f19ceafa9bec1e79be17190af15caf41cd90c662daede87b4152b6e5387aa7c90edf9a4a1d99ccf6515f9f6b6692b243ef22963dfab6b9f23b35f2e1495c5d503eaeff2eded843b970e1f34d597d1b9531f16cd5b710b50c03b171536ce93aad3238da9d0bcc1768c45fc7c479e0a9343429d069d09cd0518e6c32ef91873393793223cc719480365b57b1f85693402f9fbfcadffd9b4e31a3c322ec031ea8539d41f63acaf4a896f77c882ca1f89d787626b2cbf6ce11917c457f45409bcab1cceb3ceb16b6becc8e56aefe7ecb4f46d77e9bfc17185b6614bde3d4943742fc574d49a0f4757ad9ff3a484f6be46f640dbc725faf73ed4356d91cd56ef484739dec6667e1b9be0188f1c753ceccfa13d0d6910ff5e3d8f4d283b923cf45ed859431e1feada6669e68710cab175de3547e473e8da7f2c9b309d8cf5a0b8fb9cbe4a894f19c9c1b8d47efcecd225f91fe4ef704f4887eb4d4fb1d23f86f315d6054bac23e37fab48779b7bb3d5e742ea8f19fd76aded4dec3768d07638b2d2a4d4a4a5e99271b473545cd5f128d9c13d45ba24a341c2df465db48f7fa83f28f4d37d0ce57611435a6434c36255ccffe7ee92c238249edbd013c4e7c57df7e11aeb7200e9bd1d7331b27088f5623297c358200beecc4dc679e62cff0ef23d309fa7881e26459ef1f766d2e097ddf708fffcecd2b947b2c0d6935afa1693f915df7fc8e3dfdbb9562797e63216a098603de024ca6f7cff93e30005a44b94c785e5de64dbca89e4fc2e7cbc36e5f71fea58a7407119ef82e3e27a0875b1348d4364f67b0b33ff15027eac467e58735dad7cbcba3f2632c1266175136e238e7ba9e4fd6687ffed611a44fc94d32d38bde08662ac3d878f0dd7eced9a0f16f91dc37d521850df623169e6776cc46885fedba64ef2c8876be605e38100582d1d89eaf81ba1de71bbe3a33d54b63dce27ab6283e23d8815904759788eb7491a1748fe467edb27780b3d709a41dbb7079f73507eba274b5c2d41789bfb504f37a4a8d78889b6f7f720d0091bb1d2a7fc33627feebce1ab1a5972d8f81d969987ee316a7cf048fcd3cd75703e6ae25720df3db57df6f807da64c0cda790cfcd94fe01ee15e7cb182ca4eba7bb56853970ad9cf3c69aea67c962c1fcdd2f62299742df4a512e495dc76cf379a3ad83377c3ebb6e9db0b2ebc2c2803a7dd3d7d3a00128a3edd6f779d92ed2e9d87da47e9dfbf7714aec6ef25d414c5be7ef183a7b7ac7a8cd7e68f9cf86c60218df39232b0d94632ff0ad2c666b12dbc488473ce4a3552c5d607fd662326c7fcd7eb9f4927d94611d96afd769f15401eff5cd17de5f5ed1ce561cd7affb6f7e9cc7a67d083da3a47ac6d2ccb74bf3ba0f9554fa2bf8341f176af1d7d6f8c75b93ffc6f44ef7a6bb8a9e9afecabb7cba963f03dc4ca84ba1d84515db853a506d1d845f601f34e517556ec1392ef2edd253098dd668a8c6bb9da25f268a5186fa5b7f6c1c9376cd919d879eaa079efd0b3d379a366541166e6d2b314119f80ebc0f751edbb2cbeb748fcfb0c1839ff16b13bed0d4d11abc498ab7e0dbbc83da72bc9e55e70d9cfed13afb06ff6aed9ffd7f82fffe0d7b68463d0bf146fab7c77a248daf9058288b47317ef14afe8d697308e7c2fc6fa7d04fec5849dc4832329e577ab2f4f7f8df447cace8978e676c96c4c6c3793ff76beba0fe8d6afef8b921ffdcac3b678bea9ebeddf6cd35e990e647329f25d633a17dd696735a0ee947acafd5e25fc3c077d299a7668c9f413b02e77c421be9c0ed4fb76d36e7791df2919c423faef602c5767eac02cfc9c6a65140be45f34b589ea3199ee3f5db8edfcfb93b5b454a806a2f513db8d9d74273d6b29d9f3a03fc3d61eec69dfd6ffa919b7b026d6d5a676e07fe9b50cffcf3be4e72ae80cbf9207710f9f94c438e15779528c66d3cb277e84eea12c9471bd31c54ec2b29401e9a2043be912ddcdf9755648222a131b62ad7e9960ce55b08efa109b259018aa86741de22c70ae8f2bb97a1773d079ea38528ef0acf05bfe3ee9ed1652a9da8b6afafe3617f1d2ba04c0a147387bf63b566821cf87f75ea44cc6f427daa29f65793fb24e4e1ccfe906f61f9d66fcc0de93d8447086c0d9a1f04df15fb42057e749a534d7ce99ddfeef0d18be80ed5bd6b51e1501d1af940e6ee8cf88beec90699e954cff37f317f613c1ccda9565f57f177dfde3a24779dd62d50fd75f28c3cc9af27fe3e37fc7ab7865d82cedd417f23bcdacd87dcdd83fcac0c7ded1078765e8bc990f8098a7502de9f90127fe37465ad836a3dedda008e2eebb9fbdc3b8db3a8ed2f3ecbac7faaea4e0d740e28fe22a118e63d1ecef81f1e4bddc7929cc6c531afe100703fc8efca9e41780b43ae4ee02eefaae7040a7282b03fcc0e7ceb57e88f7fdbffc4cebb679d131c4ff8b6ae0ff96aa0a479a01c90fd827313f07907deb50c3d23fb9a6bbb00c7a18f64cea77aec2d29a31eb84c0ab25f19e6a5dff43151db61b3f4ad4d84e375f51c9cadad84e56a1b287909793e8ee9d2bdc0bf6be472a4c9c829dff5a4587ad783555eaa7c76d798cf25306fe6d1d0d878bc8eabfa1f5d25757cd64f944fddf0e94f0a434a46e39da5d82f700c5a8336c91b7567fadb793c1837f34de81c375ff3da98a846cc97683dfe0ce51037f38d44fb8eee7d3d8f701b177d39d6d5341e697954cc7674bf6a7c8e8be323fa97ad1ce5a80ce1f70fff213a6dd1c70bca63ecdce31f72dbcec4f95c5d39f193dbac3dd7d1eac13b2bc13b8fc669bf137946b984b216d7c89d485d17ca337bd7934ba45c5568d784f3b896c7181747310df6508df5af10d2125feb965d3f17b26db8799ff8fb3a6898bd2ff7969e232df5f830463e42d55c0cf301d0557fee3aee5cef7a5f3b2f518d5a7c189b6fd95729bfbc2bcecbcff965658d8eeabbe2a83fe76fd957f5bbeccb97e07fc5cfd5de3f1cbfe6f8f9b1eefc118ed27e3b1f0cfe3eefc3ff7ee9c7ec6b241de0bf277ef60bfe3ea8d354eb5ee0f3c8c4b99c986ffb4b4f3d85be85f877a37ee470dffe13e71ec23bfc5d9f7e938ebe908fa593779cedb67f5d7d708fa4769e86f3e8eebd08de79348ee01dc46f3af97f6cf60f5fde751f152e976f816553076f85e7735e2aee76d2a265f503f2752217ba78337dff9828799698abed04d746d1fadc13c953ec7aff1229f929194de1f8988e05b4c9685a47f703d3ff6dfcefdab38bf1bfe91d407787fcfe4fd3f69375559cad51abc321be46ea773c054aba8f488e4c2c1f2ea2f8ced2dfa33c15542763000bf37fc847ac7db00552385f6de97ed7e51e9511647feb3c609b8cac34dadad08ee3eae4f18fd573cac0536f115ce77c853094688d0ab42563257f0de7584ec3bf59e5857f46153f936d857e233e2f0ed7594d71ee417a2fffea597b0e7deb5dc73102a13d477568c0c76f6bf122b1cedc9d534d63e89c6fd8fa44fe7c8c6f92921aa1bf200fcd6ae48f896a37eec4c658fd4647be58ad7ea3a597327b6152601c9cf739f36df2770c618105d8e643d85d560daf05da9fc88e8673d8c732e49f3f980edac4fd7087e0c319e61f4ef9f65ac57b64c3956dcd9140f5f79b789e3c264f3b070efb6390df88ae6b94b6fd6677e6c7e39208f22d8473ae6199f0b53ca27d1ead981df9783dd59ef2cfc1f963dd35d947859ac719d65d397f5f65bbcddf5e894c9f87de3e0f7a0e91e9554e9fc85750f9a7b81a4ce2efaa6a27559cdf84f5d99b77d39209a3892e1edc715f99af08c58d6a38464ff9092abf732da7e5f3b65bb5f22e40dda700ed43ea5fa17133ac8f62dc449acb85d7a5ad03dfce435d233e3296dfb14ac8b7eb77f977e2dc47d15da671d296cfb4554b5be5e3d01c37b20ef59ce8da252efacad273e01a0e91d2ff85fdb5682d2e7e0ee7d8c371a3a22fc1bf27a8c61ddcc239d203cf5111c3710b682b7d79954d5acb1734303612ce1543754ec5d253f3b09547583f33747f69ec7e5b612cfd1c5dda67395717783e90be838ebacb649f98f66e8c3014b97ca79afd66c0b5b5f345730ecf69b36bd52055f1ec4377be816cbb6ed6ff70ca0bc2d571409fd817b486233e886b3be2a68f87e5b7c76cfd90aeeee74835beb18e0b902e6fbc7fe2d11ea0bc27b8bfaf2ddae3f22ede19ad733e080e23a9c22221b5f839c2cb69ae1d3ddbf43989e8e1f3fe5c1bbcd42a43cff825e0cf1b789f857b58c7b4fb33eb6fe114b5f7a285fdd4a289e6377e7f8fdad8637f9e46c498651f2d7d8dc81314c7bc93fb51e1260de7c0c6d8497afbfe88f0931a983727f1b79af13b7a766ac507a1de7e2767cf31f35b44f3f69ab5f35b2b0fbc83409ed6e33d81d2bf2ca14c37fb4a852562e56161205c9ad09b113c1d0d6152c6b7dd79a2407e96cac15add448a740e95ab1c79e3f3dcedbb339feaa10d5f57471e59336fac9e4fa06d38b92ac73af7fb0ce77770b5843867ac7a17e54720bdc127390f0db98b7376b0ee30d96a72acac487cb53a9bc804a8767fe9a912c624c5989e2cfe846c3077f58e63dcd8162bd503a9095d7dae356c9736f081dbfa36ba2bdc9ced2836fb185b797df8e5b7313f905e1728633ae73d973f87f2265a5808cdb828c9750ed72407a120f9e6a3eb8fb1714c3ae298645c8bd859d9aafa37b1933a6aba906ceecc0737e4587f2b2cc17bd5fd389c12b36f85fa5bff7321adaa58f89df77483a783d3d25337d108c07fef04b946244f392c2345b6423ddb0b74f03bf9d6359a3bc523705bb2fa61bebe06af05dd2b37cfdeefd43fc0b34accfc9478aee82cc4f505386ed435c7a7f699ce0d632a6b2c3fe06e0d805fbb03fba8b00f8907ffddbd07f83cffde7da66388e2e90d8c803ecf2f896dce7c29ed9a61687756b605c2a240b57577fdf2427f5b58c6429f63e209eaa4a98f0ed5b6723a9ac8561a813da70fba73f0267e9ee0db245e762f3e527f77689f6368ff6da7cdf7e60b19dad160e84bf6a79ba986bbbeef374bbc3afe759527867db71f1c4e22cb71ee855b24c7254b5e7ad78c604673be9414db4c1bce96d335ec731f5458b7930a9f9e61143d8119704b8a7867f5508deab633c685f4e0636e9517eac3f886ff93ccb5330ec0e20859e0dbbb00e3e66ee97ab09f4cfaa3ed63efc46868fb8250fd3938405d2434fb9b04d581ce4eb10ff2789b2f484efe19ae75ccf0fac27ddc036964e6afa13ffe173c273e8e88eafbbdcb09eaae33b84f45be4e7c277fd7132e1e125fa783b7fcc9f776b84fc16c3bd1dfb6d3c5dbc522b19c0ecc82669ebdbc5cb03a59463308eb8eaf45f0b8bade223f44a8b697dcb32e9fa4202f3cf1289f6034d1aec985f756146f7a305e28c82badc6cbb8d822a70731ac013866db3f4cd6facc7e2e204d419e43f4b2c37884f8caebd854e5c8b3eab900b53526fb70e4ece03dc1bedf4cb8ef4b13a05ce2fa731d9820959e2f3cdf3fc113e4e5fc997b2b5e03e50913cf4963254d11e6f81ce517429b89e3b1bf4703e87e28fd322a4019d7d75e7e0dc43d236af3dba235945ffabdbdad63e5d5689a609c01bc1fdcd9577f23b4f99d3d25788796ffccde227edb18ab837ecbd0bfb79e06bd326cc9fa1d6167ea533aaecf8fd6cf36f8168b99b1b34478fb15a6ead8a43d632eabc8337e852e9fbbe61ec666e3ffdbb96d0d0c57eba589db2aee7f72e9ea3f7268f4d4813a501929d2caea0169e95d6f133959b4c618ca9a67f451dc7eeeda865b0ade53b0cc09706cbb8ef5cace80e2bdb77ae5d0bc3d618f1e96fb354a479114b27e36956fb7113f31aea7ef60df327b16e734d1bab743e59754f78941e7ee684e850f7d2fcff1c0d9aa8d3a90ca2e8eb6ad7abb6addc4afec34ececfbf97cf5d8512d5eb4adf07589fd74e6f352d0be8870fa8d0acb37ea597c6fa0b788cfb946f94fa9cbe7602e3d3b4758574d1aba757f83d69aa3f74c354f0458c19f7c9e4d2337f093c7031a6a67fe5dea8f8677e02ff93eaa5b91915c83f279e95d0ff09ba14772571450226c63ec274fc3519846058a0114a16740d99dc79d73a5794b721aebcfcdb5dd7fe185c7136bee35adcbccc3a17c0b6fed3c4be44fdf824334e8fcc625f0c10daeb75daf2f1acf280365d58c051e6325f98c0b076185b4d6b06ed6c75cd3b8e7d8b19268a109e76ee521941700e792a3fe2965fc47f3fe859ef333ea59fb50c94fbe52c5fbf867f99aa7d04363547d7f86cd9a02d69364d7ac1716e49829a4be97f22ff4dde980cf41332ecbc11d9ce976ece31878c7bc56f7304f1176a2006756d88f0ac8b64d7b654db28a07d1fc6f8403cdf856bbd64ad07bcb7725daafca3db17719cf67b8d750f7acfab6915e2e02fcd5edd2b7a5d0b7aa5e5d023f94781d6279c2ed09c19984f6b0e81ddc47a4fede9fd883568f39b617346f80ed07967541374eaf605fe272d5f2bb74f521eb38f766cc488eb6bf73c6ad5c65e17cdf6bba885ad1021fd76ee2c57c6b3dad9e2ee2fd1c6a29d6bf998f230dcd8a36714f2d317f14e79590bb83f2868fd3a52733acf68e18fd1ef1f79153b67c85b40ec3b7b70bacdf529f19cddb6f9e19c18f667b80e95b6fe6f9d76a752a1f2fc5fb44b81a6f85b57e4b098d523edf81e7c9bd27b3da2438e67d2c878ad7ed42cffeb540be8d19c21b16d76020ff285de32d94b09d3029ae795424d2527ffb5785a12da75f464d37dc070ab875f8c6b97c2d5473917138b0957c5aabb7a5991735ec7deea7c2e145df6034f43e22b687a07643b81f629a34a31e3821595d223ce58efc21516d20dd135eff813c78d6acf5e2f39c78bfdf5be0611bb2f273229ceb6a4e08bfbce3dc287d147d392ab05c9d14b8deb786137c7f0f5afbcaeea654ab2179aa468f9e6da56ffea91ab15aae0eed99257eb6462ba466c0c23544a4ff235d931057458899c230a691ad5ad579dffb0ee12d557ddec3f11b3df53a6903d56a577201f708c318e06bdc9f74f5dab60785744bef25a44d0e1f9fe36f188f8a7e57c4131fd65e7563cad779243e5faee719b221e8fa543287d4724653713e16ab99a9bd57fd7ed3d2dbbec1cfbbf8a453067e07d610a1016a53cebdf023ea3933c2eb7722ccb6676980d9a90dfd07ddd911fef7c7bab3ffda9fbac309d69ffe565a20f212ade3613e9e4eed9c18e19b7d0df99e775db25f5a85282efecd6f75d4e737e72fd8bbfbf280db3ff22eb2753ad64a746b9a339d178ba24f7c23207b17d12c575fc8eb4a33ea47cbf9f855b7be8e65427e0a8b1fafe21e837f8acfeca3223cc3fde9c03d477b76172367d35d13c7f18a6da404701e78bc223937f3444479a06dbb937f96db03c3d9479ecb7dbff537b11ecac98a18d5bbdec7776ceb941db5af753bc80a33f59c18d89e0fbfa347b67506acb702da3f00ca20318e113fd798d2e93ddae67a16b57a13b4d776c74f2290e3bd705be1bb5b9f517e7f8ce77aa23c53d3edf2b4cff46bafd7b64322139cc29eb31bebd26a0aa4bbfda4486d7acbbe17ec0dcb7ff98e8cc1fa4ebe097d9bd85b48d738259e548b5f75ebc5625b81f8bf8e421b6beb944b4fa6fe4e3792abf7881dc3fb851ef0349adb6c439d9aea4ad45fc6f7d1ea5ec3967b7744ffadc2f78edfd0b1c998a916150e89113fb2c75629f3e9e0f9d66b0644fa4ce5f7be8565da98bfb85f09ed25036d17764f1590c635bf517d9fb14f1fd76af3fe3c31ce8d88e77398ab586675e3ae7032b1a67fb7e49cd4656351fe3784df707b4e9a8c300dbea33cfc98ef312be461fc1c50dc1faeff26de9b7a9fa26ebe28ec5354f52112d315eb5704cf2c2f290ecce3bda7753cad7e470fc6e16de2a4560370d71ea5fdee086d75db4d02ba627e8e6fdbe21d7822b5391d0432b78b6e9abdf7d07d2576ec03de81f2fc6f09cec9a7fd4456a1d9cfe3523b452857c739c7ba9673fd15090ebf95e37e3accb741f34d11c64852e479526a3d54e731d7d6a147b1d821afaff74543f9ac5e88f234b9fe40ab4471b9fa0ada63d396d0ff8f927d62ae56f76465a74db4a5bac5f76c80bb381bf57bd2ea87d8e157a8cb68fdc7b9ea6de8a2b5557d33a6747f695f957d5424f7ee6ab3b721be1bcfcb026a9b7d46997d587af62fcc8b8002e980f56811f00cd4d781d137c247de24be85f2a1a351c6c764da3a18f9fe64eba431d2b95529f0928f00ebf6fdcff91bcb9fbb67d3b2b82b9417ed6fd23cf40f9c1ff97bd82a359db15a930d6d88f142ea23ddc3bcdccb87247c0ffbc25cf68d594b571aeb6ddfcf776d71eefb88472490df0d9ef46b53590f9fd1b3da1d11f1d6e67e7cce710cac8387d1582479f65bfc8bf4ced32e71e11e636e8d38cf5883f6e12d3144f2e6f1be933b45e45eba0f95f4b0f4925d6202e24715f8f6db7b208c3d76f5efe471b8043ca3d50754803549eefaa53146dbefdfb0bd162c26ccb0c51a3d309ef30b73df796073e9465d2724fbda617b7175a622dfc17367d67167bbe3298db909e2e275fd4001acef181f4b7fd6575de5f5097cb4d4ee86fac95cfbf153ecdb17fbb2eb67b7837b1299f97639e27463f2edf856c3ddbba71b7eef6e201947ec9d796d0e798873016ea46e729f8ca62b7a6f028fe65c5a2ddf46ab3f829967777018e9fda1589d6964f4ab7ae4866ec86a0c580d6b1b6b0fefad103bbba9d7ddf311d4f702c754889f05e1af0be6fbb46d71e78c9ef389887223265b94238aeb34071d79ff77fc5e6d7e2c9a9f5a443dcb083c7bf7ae0bf3c2f7629fde93bc40709e3f5bb90e77f6e0511c8be0dace5bef7e47ceddaba57fac8bd0baf1b94bfb2f74f3bf4eecedbaccaa72878c3ea5cb9f647edff163b7ee9d788f1312f348dafd0cf8583efea628af8eee33cbc19d346cce4e5b0fde7f488712aa2dd2499c099d5d40f256eae7775951bf049c3feae9b3d6d691d28774707a882dd8e3707e057563cd6fdff751d664027f8fbe61afbe356d28147ba8d60e796f7e0a94ab1c9ae0f66e56f1b1f78e3ea8dc3c8f988f901a3e127bb8df97a55d4b25e6c7aca60e8df11bf1903fb55fd89641fe713e2e58ab63e3e8677f2f561ce1f3bb24bebd13617674ee0f9107cd9c25e1be34f4f1c434cae469bf10cb4f6ce2b5ecdaf9b39d3a6895db93d3e7b1dd46f508f13cfb97877ea56d77ce94387f86d56b4951efadcb26a8e74fe27c5268ef89e500972bc67ad2fa21b441eff924a9ae426d717f09e7de4b8c486ff47bdb1a72e85b2ab565a0fd6095f69d7e6f35f946e83ad94785734e2470c03d65f0fe2f505f30700a7d84e3877c0156c96c8b969fa08b974eca1f2ba7e897a836a9e4fbda5e087e2df211eda9ef2954faa8ff4e62fe78ec873209be1f9453d427e58fa9cf04f9b84278df3cc0635cf4962638511ce2f128c9c7a6518673edb654f24b6ca2f9a4a1c97a97acb87a8d03d15321dfdf4239416418ffcc8ae21b259e9c8f470ef1eff453a8eb325e53d5e629a15cf5d75b28ea3cf46d19c7eabab0c57f9c115faed690c6a5768814b827e014f5c076a96b05d41ba202f4421fca19ba574c3e626ce6c265fdc2427417c0a9c2e5370e11cd53d5b514eacf5161e777e201edb83ceb458ffd3233cfc942cfd1432f3cc705c07907f3ae9ed1340ed0e8afffc0178f315d993edde157794a47bd8b6b5ce78717813c69f33d9acfb0f430769c20df0cdec7fc6bd82fde9f8bdfb57238895d4ff62badf337bd1deb9b6cd11dcea15efca567dff14377c46fbfed1fc7391afe53b1d81ae616c2af758d5338a4b65a3d3eddadf335cebbbe2e144363f6bcd9af6a1ba4eb3ef27249909bcde749f0e759e10b6c242e074c543721d69d580d2db9a76ecf49e3ad63213ad1df04fa515dbf11cd65f220675274c79af320792ced7c55e5ba0f147737d52f1d7316ea312dbaeccac78ccc7c13ce53ea6f5f20bd65989f4213bcdccb7ba373595474bdabd6d29d9b2288bbd8d51d67f3e0702f93c86f633eb3e75a31c627fc4377d721f0f3f3ba205b4f0bbfdbc9c3c290a3d16c4569dd8532b740b920eb896ee55f235cd39514501e3850cfcb173d0df9ff704f7b26f74f8127e71febb76d681adbb8702b2c2e24aff0bb50a684ca8f55c4be7159419e11975a167a619a785789f53034715f1d8605c570bf70fd6ae8bfbdd6b1a22e189f0bf500b4f3d8344a82b1bf0a0a20250ac8a33594edfb14c5ff883f95f4094631ac58318ee15c83f60cc3ce0c3d671b023b8f07bb15b4ad422fdc47f01cb13e41de039700f51441758aebd0777aa10765a9912d0b6383fb3c820cd5819839f2f3419d03c53846d026a86ad8e1d8ae022e1f6b4d86f7258436a6373b603f1a7e2ff4b5342e0c52235ef5940c3d63b324dfe0c621fd849dda188e9997f0bc16c6788bd7f2b605c3f196d42e413d98e8087d2931a1de151ea25e7c18ebc9d45dc7ab10ea75e6350f217d407dad4075dd551d5c619c960a2885eb20785f9112ac02efba8d7ad63e31d323d2974ce3162bf9169e15de9b03fa3e591bf681576bdb475b4d4e989ef2b272cd3e7c7f1da198a471483c7083eb8c100df4cb6529df969e7c894c80f0a9ad9e837c0f13df2943cfdd227d524f903e0575a7898f710318ce8c979f1626387dac79fc82762d06f3e90e86957d30c7344aeb7a49efea1463b9c0b51ff3d07fe3e995d0575f8e0b9be2cb49816f41fd0aed1fc62847b445cf370fcd24070aaebffe33f3c4be1950423d19f9d0c8b7e312d29fbb0a1568235869645ed5b129a7219a6b7a8e11168e9646058a279781877d9c315a8f711a9bd773a208bedbb01dd8f7ab9ed815ef60f561e11ec5b4508f39c203943487fb82e8b8d48aa58f6914c5a87b90a73955be98e764d09ef858bfdda6848784452e41fd3a341d2ee6aadd62d3d8c0671d82b924a4eda17189cdeb3e2418f190a72d7d0dea58903f2821ca0743f6daea7df072799fa339425e8bf60bfe3e50fac77864e5718ff5c757f03e5f56816fe50192df8644ee00e56352e01df3f1085c6a184daeb38f3c708a95fc1c6d6d8b62bd2c4c631d7ad7db07ede1d7debb43e05979349aa2334dbc6b06790dbc7bc4f793a17b683a39b471e1bdc0f9019847c1bd0ae71ad2e5c6a6a58ecd21e9d948cfcd382d3d394d4cf795f53eaa6c3409d31db49f3046ed92f0721e933f36fbe4f72aeb1f1678ea9ef643704680ca80d7f1c0bdb0f3ad7e4f7850f50e5e937c43b68d094ea8ce8ec5ade119e5a4778b6a04be0d65b6500e859e71c3766abfa8d68ae4c33e5c6b7984ebbe598fa500d74a407ad3a3de4af84dac83a1fb7462bdd251bd3d3885a3e91fe3d161f535181ec6a3ec3ad1b597e9fab2fa5a8c573fe71ae4e97f8c472bf87b753abfac92f2b25a72fe231e27b8ce33485cb08579dce01f5057e0728fc859a6f53e21ce2ef067abc0d72e9199233e42cf17ca9308df05c4f3e09d0abc0b8de95ea29ebdafe7d05979e039ead3fcad9173cd7831ea85837bcdc70548c3515ef335fdfef7d1fae17953f98bbee79b2af191a80dfd8afa51ffab67fdb37ad65b391dbcfd57bffaaf7ef55ffdeabffad57ff5abffea57ffd5affe1fd0afc6ebcb9ac3b6c1f17603b8def0c7ea93f32dcf5d750680437b9ebc8ef578e3b8c1cbf4e64a55bf0ced1300a7f5dc6c935da7b7b8e49e9bcd80652cf2fa73f662acdad950e69ec3388fa8ff906ace81653bee0c8fbdd1061f83b717eed985e35e8d99ec18ce60b7b2caa93275ddf26331ab74bfa1f5e9668ee1e6fdc6b3b6feb118deecdb58f42c9ec366b7b214eb1078f62f8bc36e6ced1dc298766b7b575be326533e1681cacddb708689e1cbb6ebb95703ea0841015e971ee0f76b3a03f9270070ed4916784919ce632c1b478e148fa6af93b2ffefb854375fbe738e153b8d4df714f5aceda4b4d9b98b746aeaaf9ee596b6c8ecf17820553e5982210de734bec1bd0c357b5ef522c4ebb2eafd1ae0b3527099dd56970fbd7ad6951dc3857b7d1b5fe2d1aada67c3361643300043f2ee2db83a900eb87717b2a6cda4dcf516bbd574ce9fb7319f49a9e118dc1995b6e16c5637bb76eeb286c6cf6bcf69d3db50996e86a2e7a633d7321698360c5b72ccd92dd8f27706e96ef0dc47470b6351a515fe57f97226796d5bf83c7bd6b4d5c4ecdf02c5b8841516177f66f5e747479a23314467eef62fe8fe6fa787969fb957e158c53d478d4c709b28389ee3a2ff6f7d5b4e46e999e6610ab1c17ce7256ae29629c4fe3248ac6a548d1b79fd2c44b867b486bbf1aed4c472e330d314f91c6c57cd39ea6e667ccca415c16e770f9837f56b7b3d59bf9cab35737b0c702f0582bdc6f765dd4450bf2f356eefc174e98d574427a7b17472b62b1e4754e5319790ecabf25de95dd36253d0876e64c9185b343dc723ac2f7cac350de1252eae69b4cdfe35d1b57d54e4d2c79ac5b5713d4183df57366b2d1fe77c2fbf93e70dd0ce7d377fb4f2fa05184911cd15fc9ab3f82dd5830f5cfd24925d335fdbfbf3b73ed45f9ab57edc7e34eac1502e3587e9199e97deaca316ca56510e869e6681efa41ddf6fd599d4fb10768e51f59334f34338b2f288cbc10b7a19ca7b75bc6b0e75d96468a9736f86faab4d0a7bb7f4ae595c80d37b773ef9e66b4e6b60dc9d554e519f28417d45b5568acf384fb93965e2be1c24c7a5dad75a9fb9fdc75a532225cf3af103908ef3dc7ac5f801a4177847de00c13727f9419db451e5291a0c3367cff73b7f5fec5649d1df87fa43fc798e66923c19c2fd91f368ebe85f6e9e89725cf93e4ff5fe4dfc38b82e26f11eae05f95a42dffa5d3a64b50c1cfd6c43df31288f9a6d732bd4d3eefee9184bbfab768bdb1f523348f4ec07eba9f24c3a688a9b2f7967dcb9478ddac927ee3f3bc7dbbb5e6191d6728db97bc13037088f7a6e0c6ad7d0dc10faffd929ded23bde1e0b61c3217bb79d2316a2bcb67a4e6c54fdfdb5ca2944737b666fa15d9427053825fa656529882eb7135d3be0da5e358f1bbc82e0c532fdafddbf15db41b47ee5bdc2137df9586b359da1ea478ecfee63dd92a7551f0c68d78c80b4f00c68cba01ee504c317c9bd464ff22aaf1bd597409b07ca145607ab226c0613e519a2fef075b9857cbc65e0c704a75e43f972ef23e7e59def2755bd0f79c52652ae887fc2754fb6e0545b3fa60f56effb3557d3d09ced847da031363ed4d5894f2416e1ec21f9f501ed61cca7a52f5db51c68b30ab0fc02e59ac63d3b8f6f3bd68f909e91d594e12c3fab2687a01d886ba0cdfc04cf226ef5c9c3bf5f903edf1837036107addecbb7adafe0bf731895e89c969e7a497c678afc3428af29de563a12ae2ffdd255ec231d4d2b8c84c1cb6adace01c1cf0daf6950609c76380732c68dc334fb35d6633af6cd12f6d669d24fedcc21ff46b453e79b3c8d213d43a44b61bc7f681f28b8df4ab36724fe16d16bbaeb1c915c236b40b95a735784c9486c7cd23ba7a215c1983ad143e15954dfc66723a0ab9f73d1bc31c66de84f5fc7c6618bbf81b1e8694df8c4a3f222499af934f4ff6b7772e4bc4c0a4277759d95f8ce3beb18510f134a9bc417b743bde474e27f44f4eba44b4fbd215cc59e06f92ce339421d61645f107f26cf00dcbb19eaee70bf30ee18ae3142e3a21e500580fbbf093de7933c6739ba8afad7d98b56ce34ae4b407361cfbb5f1db5d5bf45ab759e836bf67b19c2277defa4b9168f22be74118ffa0e2d733f23fb9cf8d6265c409dadb97e786f939ff46c84f7a6f53d529fdcba2bcedd77eb79aa6f421ae57ebab174e65d7cb42f2723c8d3ecba9da7333aa2771ae9a2f8ce36d6dfe0a54c4e22bff8a589098cf32747ab137daede9be9eddaeec944e6d8e0a7a2f7218fafd634dd8a7abbf132127eab4eb7aa1c157c2fd76fd026ed8b826264a80fce56240743d39082c56ef55562dec9f68bc8ac09eb7d08f52ce7856076317ed8dcdf67f85f45ab50c7a27c4fa67aedd6074fcbdf3432f36d54c8983f2901935f24a646e9e6f6cfca301c0bfe4d19768b7aa00c14f7b5a93f88ceaf799f9be727aadd79a80f29f92929f2db12613d278d9a45d66ba656f3436d021e270ce0d8434a75ca64b43ad0bde46c17aa03f2be9e536c5ed340011fa19f907e5169edaef0bd2daadeff50dfb6f704efb1c283e46315acef955661449a0d1f5cd53380e065ef56412f97a29ebd097c2d47bda099ae4ef327e4149e7d0d27db6d607937c719405a6ef7842236339ddf37faa9629e9790de34d5df9df2abc9c74608f7edefd4bf79accc561f2dde761d9b764afa9f0aea0ca1ed611c700c27c3675c618754ba29a97183f610c1aee4c7aff69eef0b22a0598611ce9ebfacf89aeada198d82d6d950deccfbef265bc82fed7c51801ee949b64b9a35d558af67735efa368f2bde51ab1220fe3f437777bab3141e7ff00e961d10f4d11a057f08e319bead46c5b46dd74a747ffec7dd27ceb78c7d3694365ab4d5ee39deaf632f3579093b1fc6c7266cdd29d471ab3daf705729060caabfa373996c493fd7d114f50df6e40adb0ee5e0e829b605e76ffdf1e0ed8fb199ad3eab3d3e51db85d337e033bfde5bf51c4c87ba10bda9fd0df9b8f717621f66c063c8c233d1718d553cecc0a634c71db5ddcfc8d0efebd29cfe52c9cd914630498c12da1cf779d11ba7937ea79e9ce078e3dea169a218fb44d78ad077209dac268a7159cefb59e02537284b13cf382cfd7d1eaffb742e676b74bccc5da71f886b53e81894be906ca67d2b281d55fd42ba6b72de4da31778b904e93d2ed57fc70aea45b81f9bc66d3c34cab830d4cfd65d7a11cd09e9e9944786be0d62c3392f3c03d59b329e6982db84c9f54b8d370b6b65fed7d146ad4ea7ddff0af7b3d7d9b9c9e002ccbe1da0bae0aab76dc0f671fa7ae71cd8fa886c79adc53ddd5a6f799e17bd0a7a3dfde0f02ce8b3d497def419a25ace77f39a27bab6c77d440e901ffd18f3e74cfd47e86f875fdd3d6c797dac7adf53f2e443805be72a39aa0dba238f0f75bed494a76dfefb59f793d0df5bce9dfa7a567f467825cfc3114e4e919f427db50b08ee67b0463629ea3f4bdf69e3fd70fc92f6f5eef06388e418d271305605bf863bf85f6ff7641ab5ef1ecbb496dd21c088d7df9ef6ebd69f7fc2767a7cb7c95eaadfbee384e73fd503b61177e93762e17cef385a375ac38f86738915dab78de94fd2d760b7423902f2f37a53e3ced29ad6977aac4d6dfa53581c8cf725886293c45fbdff68e8549d7130ce3f1d4b753cec865e4270bf8c2c1c62ffc0bb9e6c389d775bb711303e1ed631088e9e69dcba74df361fc2efb03e7b8f746661ed229ff34631c7b9f7877fad4e0ccfb61db3a2b16166cfac8438b8edd82d7f2745314f716f83e7cefb69bb85c4acd3d07406386764b50d38fb8bc78cf839d7f26864e7640c422f691a4b1df4d28e7de077584fc6c774f6e03ed33c08b6469233ba4846f9219cd7e3ea933b672b8ab9b7f2066a7ad1a378fba39c816fecc53dba4779280e0046fae90c8d91b027b069ab484e726b6efa2871df72631f15a896208b145b467c4717d1e66a4bf822df3778fb3eaff267e9b718f605aadbd6f68ddc9b1b3aa7c56ee509f83c575f82f39c9434873618b2c7708c049fa7c07fd629df285e1bca2b27bed879b7ce8af3aedc8771014b09cfd176764c483d8085fc76d6393267423f2fbf074bd3b8c03db07aa8a729aec3bf3327bc0edcb714d5ad74c6c9885e63d21a85b772dae9b314f59791447ea54e5b20ae3068983dd0ad375467ff401761bd7ea7225f76ed0c6c39de86f9c4c7f402cf6031cc3f9cb95acb41bd7f1e6fdbc8cc4fe15c261865f12bc9cd3b913cd7fbe782efaf1417fdc3c4d7ce4b4f9526c8ce783be2fec7f12bea953dd25e1eea54042708d3e98f6dd7b8621b49f0edbbfdf9495ff0cd6e65ddf65407eda65d72273f84b978b5fd58079efd0bd9899e9a4d3c8cd101cf06002758946a3357fad1fe1e97de0beb330cf7c65e68972ffdc17d21efb17ed4f07ededc7aae6e073dd0bec482b9eb0bd91a3ac02273b7baf657885f261af75b7c6bb1afb0a8eeacff791e66a5817244ba7f54cc8e04d76ffbb1d6907c99e4552ef35fb167ae04a68e6bbb4e679cf3afdf371aa3fff37c09aed1d82c1514d73b853ac72f707dc1a95153f0883e0bc837263ec2d684747db5d70ff85d8fd64ec5475a3f88e9da7a7c1f4c1c2f2535a452304f710c51cf1ec92b9c8f359ae2f84399fc83674762b7ff04ad677d000cf86f9253ffe82c88fc673c7e30541eec238bd95a0a8a41ee221cb3ddff8f950ba55ad34dff01d920aa8fe93cfbbf61bdfb681bee499deb9f5fef087f6be95df7c92883f767b74458682fdf3bc3baff23a9cf8bd5708aef80a9a691e7329d663134c2850cdc2e7f2a67cf505f05ab11fd9c6b59a36ea36d3b7171376c83642c1607a0ad66e6d2d203b7a63d129ae0b6f4ad3c1c1ab718e54ae37a6fc8171bebbd44ca558d14791f15fd515ce4990befa01ba6f41c9b7a6342c6fd722b3bea63fd76697c771329f225525478d716b426f563fdf6c274e806ce268bdd1947544b40d739a9d54d60ffeabd3c55849d89fbbb1d969e2dfd93765d15c7e06324f17e4231f715550abcfc14fa63528f8e7b70403bb44e43ec4e4402daae6af9495dcbd20479427cdcb8f614dbda7fc2fe40f6f5df2ae787d67ce6aa83b9ae3e252362254d63289bf4a484f3c4d86f77f80a9e6765ff6cdc07323dc575def0d905f8c7e432c26cf80b6c68a2d343d9f9d0c64a7c4b09e7323ec37965a339ae3372407f018c7cea3cb417affba87079d93f9dbbaa31c9705de0431d17dead91758e74c827f253a2cbb7c404974a87d3687dd709d5dd3db0d3ff63721de7d5bf723d34fe06d9debf049e0de55e6d5f58ede3c3b3ead4d7aa3dfe4fd813ac7fd953f4fff78d3ff8c76cc1ffec7e17b5f8c03fb24e511df0ff527dadabdef6ff82de564e075a7d9f388c03828d1e05bdec50613e5c6afbe0535ffc7a7c1817f991c423fe18d3be8eebcb2af28c5fa1cbc7f9ddc3d86cfc7f3b0f6055af4fb65e504e343f0687233e378d53685e117e76e271f8e9599a46857308fdf1616c248b856f6fc128bf8473ae0eb907a4a577bd4de464d11a63286b9ed1f71c60b973d736dc52f09e8275cf00e53ad5eb9f091615ab97e6f5d28987ebb91b6352bd1824667e58fa0ec27311bf4fcf4496b967ebf5d47a82f5017f4aeaa5dd53d0b36fcd75325aefcc7943f9228db8308b0fa2fa65649f4a8ee65418060f6251ecb9c731e8fc7ae2e881c409fb77eae80f384e2dd19eea17f2ffb5deda87f108485f04c738f457ab0735f1a27a72e41b21f8b01c8e82760eb6761e6fc33428aef9d894d32f5cc7cee11abff55bf455e5fdbf457c5ee15c936afbb145395da7d08fefe71fd6d7f72fbe867156bf83ab10e3c0b85fa3bffedb5c7f15b79d43d0ee17d07a9f605fa37c80c238c48a7b6f2cd417043e6ba17363398b707d9f5cbd4fb54ecfb8f0f3e76b17518fab02f4c6288787efbfe0bc106c672e37ca387d2d5eaabe25f82cebfd8c0ce7059dbd71acf28a48ed22dff797e50093fcb99902795982e966f056e5088f52379269ccd428203f7429cefe40aae56da26725230b875dcfb13c0cc687c8dd443dc5e32c1fd67ac2e0dc8c3bb807eddc70813c20f8e0cd1c36117f4f7d57926fa18c70dc4e8dfc7d864d10784e33b7bf996b2c92113b20db76ac24ee17e4af79bde67256f4cf4b056413ae175a62382f2cff6bd1ca816ff5d97817e879f7c67494be49cf3d14d94a64bd496dadea2892c2c112615757384ff8a7a35e5a2833ad9b00cf5d8eb6df3e971616fff7bfa1ea91d2ff15b671087ee75bb5fde9a8516ff7f36bd314ee1d394298593c2fbcdb236e6982cdb2c2cbefc28d90be86b40f01ee09d4ca73c2eb673db879ba413d597c961b05ef450b03be511356c314a96a1d1ff613abd54fe21e6db4fe0cd561911a383106bba0bee0a9beb46c8f0ce73cf39c6c867ae65ab447c8291e81db12e77875f5077aaa7fe237fbf6d7314e047bded157a14613777ae0f0bd142afaa8eaa3fff559eb5fd0d4379eeba3c0f72f484629eb2fb034f322e9e83342bf019f0f8a5d85c3d1a64b9c9bdfd55f80d0f4d7b0bf5eae196d357a1ad298d7831e5d14a78693e593c281b6b314ce298d8bf35e5bf9d4f7ef5a167ad73c31ddc6ba5481edfa3c8de39f1f0c9b13e7fd543da693d10afe2e4d50be4c5f8ecc59b36f0dd665f9bc205d4b438c9159d2bbd265b7f377cca53989e27bc67a3888fb4cdcab53a88dd5c2f0794027fd2e9b9fe72d33b3b221f01940fd07f783c335e0dfe6e105f27b233dee1fe3b378cc21e5ada8ce058d4dbf4dc717f58de3e9f941af6b82cd42f727bdd793abd65b0f3e2bea01c9df45810e4efa188d3bfb0eb6ce6f54d7bb70af5662e719156609d5d7eef6191cd5fa0d356d2c8207507d5bb4b7b4776f579d7f570ff596dc1fadb85e82d83785751ec7fdd2b9de7903214db6e61e0be68ee5f1235a7859ddd327d17e8f9c17a89bd2bdaeeba9f7facfa1b30be0f3c0cc8fe13c95be86c9d969f56f25f287d43fe2d877fbd907b47c0b7dc7f5e03bb9b3a7bdc392513a8aa480def7ba2ef8676985eccbdf49274427c1e314f98daf0dedea81d9ce754732be861bfa9857777c8760e83e43dfa1d22ff0b9a3f1c91a927388cfa749032fe86febc6b39b6fd03f771ecfd17eab8757a37f37a4c1c77d892a7d68f550174a4629e2ff3f4717917ce19f11f7a11fad3af1d7da3d6a090d8f562d5b9be45cd3b3c598c1398e6dc17d24f245dcc3f9b77aa133bd611617dc3e0f51ecedff7bd82b16f7cf66bd7bc723a4d3b0fee4b4ae20f28c53e2198788e1ebf2f788ac1b686508b8dee638bfbdb0d6edbee760d4f669d4641ca957a9b0e258cfc49de83c84f21a74eafdb5771ff482bb57d3235ad7831edd4d7dabd53bd915f9f21edcb30bea7508ac3cee01cc179ee8c1fda0171e591bf9a66b9c42c356a3c27ea657229e8f87e42fc627fffd3e890d3dbfcd739fe441ad3e7b58e751e568b16398fec23bc27a161a2f4886ca552f3bd2bbffd8e54f587ab20b757f6ccfe69bd0b7a74b4fded76cc007f79eca6f97f3c9be8f687c96c377bc3377de9f4bff8de7277d4b6744630e112d609abfd3d397ca6a7a47703cbb5e5b74ef2e80117fd78d3250bafaeb126c99dc79796facb76b6ddc18549fb19c477b89ec48d2bf14f2c9b9ccc5c6696f8b701f6f6d69920be789de75ab7c881dee7bd0a1e7131ed8c227c572a4c38745ead5383edc7abe4e6f5ba8df7d8d6c13dab90d7b80f5dee664f5a1a20319e5778c917e7ccd03efe5811cc77650dd47cef3a5da77efcb872ace02ff5d3aa8bfc8ea691bb425179a76c342e2f010f2e1bd7eda54cf623db53becc74e19407ed7c610aeebb4688c5b9b570a75febaed51f7fd083029efe01fffe9fd81e77edfff2ae4fb224c65ea6f44dfeca067e293015a54388b2f4fdd502ceafb3d8f8d2cd4b575e28545e85ba85ff19721e4e92fc0ec6ba149fbf652995bf34920fdf61ea634edc3fd55f31336cf0cd57ee36f09f114680dee1ddf17ef7765b1c254eae8932aecf7fefc1e54f1b8b68e49f198ab5ea5909ec5b4db1d8b6bd231a4a5677b9a3ee09fadbeff4ff8ee9a31ca9a8cc1f839e00563cad29870070d3e796fefd014913128c7a0d295476dfdb34b26523dc3c1f8015200ef5a896c0ce4937f684bd47cfca89f7c19f8b1584fc3b91026b6d1b81836a4cd566c5be80bc1710211f6585d7e1eeef8cd3ae89b8c3b24390efef4d7fbedce19cbffccfc791f7c8b569fc565bb6f9b7c7bfdcdbb45fd5a73b786d77dc7ef496a9f69bd32e0789480ef913ba960fa4ea9cfe9f65e1e3ae82cdd874a7a40f9cb3467807c3bbe55fa9e274b77e38dd89fcb7d0bd97ae94d147b44f5c5e43c6ae39b98e7c5c27d687f1bfb1852cb194d5b3e9db9db8ce7e462bf9b70af0538f177fb3bd7e36c5d7bf1d8c7dd7ee7f7d700da7ab10097bed3676f5636c36fd32cb33bba68b67e572806b0e3a9d2d2b7f2877a49c30e60efe3ffefb46d889f88d8e9ddf619a16d8617d1c09317ef1bc3c320797306ea4f563e3e7bfa3cb54ff07bc4477f0b7dc7427bb90dd3485f75e8696f4d3f4e8b0f206c6cfdadb0d66f69c317710737a7455bf53576f83a6a72fb417ed11d1deb301e0c2fd3c1dba5532e43bb0b209dabe5c310e496fc23f1ed7acf7d61ac9be1e34eee8d7713e9b5345650c56939ff2fcd173bc5ca751f28ee6eaa5f3ae67537fe4cbf73f7dbdfff2e956350d674c774ab1c06b9962f2c7af7f77affd77b9874eac86caf670f7decedfe25f807dbee4fdcafb68c6fcb1dee27d1ff64ee42ed6ed762be2cd780ea54f76cf53b7f7b98cbd0b5670fb0a69abe4b941ffbce626d5d71b73f137363df16e547511f40874f4680916434fa618c9c974983cf3e7727a01d62ddcbe7a97d93e599b6b0f3d288e4915779f806ca3ddf27669ec7b2746861deb4fd31e7490965d56c95f848ceee03e540ebabeec9d6343431a6b9839f9d567d46565baac758e565f56e02e51e5db7b183e0f32aed297bcfd780fc930eaac947f1058cadb5b5515fc4b6cdfe76dfa788fb370f03df492705aa333f09fa1b897c5ab8de13ea1a6bade53fbdabffdce91163f52a7d10ede3e35c103c879c5bd333f9758d983aed8d83e2b177f22fe29e738e1feb62e23ccced74d7458b89d9bfd0fb87fb95529d456df860914ec8e958e923bdaca9ff37f1b2aa5edf58a62f12b35fe2384fbd8e85f28089ae1d03ef98d7f2e1e79755d4f8ff56be7cbd57defaabd91faff7276a58fceadba80e68343d0379daeca767cf40fa1364600e86f9c001f6ffaefa950a53aeb3cf501debb95e93827d0ad77dd0738633373e346dffcae7807bf092be8987a65f4984bf0de9aaea6548f46fbe17e1bc71d64ddce561bd1685d940e4fb2ec1e604640e2dfce9364e1fcd11f243dcf79acb01576b7d1743131ce292e1fcb66a67586f508e7eff44cf458a338bef19df27b551bb117906cbebaae28ea81ea541c7d3ce6f70d8a7cfd5b1b4f16c795ed8acc3217978153e6c551ff23d2c5b9e675773b6f5d00bcf381fc2280325c57d9e870fe7fc4ced8dde8df5f8cfd4e0307cd8dfa99b69ec790d8f9cfa6d597c9de9a1023b5b5a4dabfe9df45c9eaea16178104fc611aa1a5192cb86e4adc5e5f1510cc6363666bcc575be025b59208fb05c7cae0e85af8554758619cfd5cf7cafae45f4bd7446718d190f6be9650c63fefbf53999988fb23590f93772139fa9316adb09e2f5b5f8aca88e9be8477778f33f5f9fd375b61d7a8778df0d7a7636a911737fab3667f6d43981d337e8aeb5c7dfa9f111e6110c76ab269efd3dbf67a0a479a01cdbf93235bb8fd26fbdce87f55fa071f8bcd34776df3fd8b8071db15f1cf7afb0c805b53a7f614d8ca0c7497d8ca63f98dfc7e772c31a3286ef3dd8e7f3a1047a46475f883b3ebdd619dabba5174a2d7becbb6757d949bf420f5c480d472dfe0c7f17f8b355aca4e7c4bb6663d3aad58760bd0d630a113b7415a018f018f2701c9316e46c74d0ce9c8c2da69f6adc8e7a1a8293fc7d3fdb83da12f999fa2ae13d77704c95ca3e14cba0ebadf0d8d3e7eb4138fde4d9fe3edfa9c598d5f4da077197dadad29cf90cd6bf91bbc7fab8a0f8e329f41326d7b97da2bf63b2e05e3e55c0f7d8e67b15a09a05354f64a61774faf4c65e471f973bb999751fe398eb5183f4dfdab8ec6f0d3fffa4fc41f44d6c5b44667e5af66c115d3478dff8f97c69a14c44fbdfc66bafeb3f7f62dfefc800dadf61fd17d42e54e33cc0df27735fff25b50beb66ad84c88e613ca52e73d7ac0ea19afb365202b1ece7f6356eedeb6515b46a5deee2f4afbb7dcf8feadca89e96600cb421a3912e5ed7d69beed5c398e3b61c44fd569226effbcbee6ffd4c8c5ebd5f155967a33e2a58a3b3aaf5950a957e715727ebe4e1cfdf612ef799e6ccd6f6fd89983debaf341e88b0c81fdc639cdbf8e367a34e6f76ef7971cdd2bab32f7ebb068093a7daba6dd3dded4db0a6753abf47efad1c65b4df2c0e3ab2b8b3c0318dcfdb6e1514fd33948dd1bab31fb11cd1bc135dbb40dda99d3b2da7d116a4917955db7cf36e9dcbca5a07ed3a9d61d53be38e6e4d6334d5fcaabc98567dc7ac695774df2d51fd083dd7761dcab0ea7b549f973837bc83564e89773d3c7bb7882f8acb65ecd087be8f29d09583dbb2956b6bbae31babd1ff139803823a148609f31dbed3aedbc0fa5be249afc8d7e759792ca4792ee76158f3133e5b37a2573eb5eabd85991f97feec1b351b55ec0ed75fa0f9d37a8ae7f29db6dcbb34475f57e17bc7ce3c21511d29f6c5429a18573ec9d903ba5ba5cd1a10611f9cc67cd17dade47fb306a5c3df80f3ab985fe7c95a12c8ff670dbfc69dfa09a16ec9e5f8ff8df2e86e7e3267e774fb0848cfca46cfc215eac9dcf0d1e5b164e5f079467b26a4335509bcab1cfad35dbb8fcf3dbdff91cfe3f7f8cf737386748ff0888ba5a7e6e1e0ff67efcd9a1357967df1af72c3afa7ef6e4958b6b522fe0f16a0c98041a0f1c489131ab0246b806531891bfbbbffa3aa342331f75abdf7f643751b906acccacacccafce56fe03fcdb5c5e5b5af1dcca1a3883ecf0ab81eea8175c407ff84bdab1ceb50c4d49fe1b77096ee743cdec13b1a6b724a67ecb69ed76dfeffc5ddc659985fc55c673253156fc43ddec639710f155e70c25ff6d016545eaf769fdf2679fe9638880a4e1db3077bb2510f678efacc9fe19f9ed29b6abb863aa9e730f6ea7734751ffb124d1ed8e18fc973b9fe74a6dcdde8377fc179718e1f7c85a764b184f55898237bee803796fcda4afa579b2e57be77ac9d2d251ae486850c82afece3f701d087856fbbcfbcd817bf949fb4a93d03b4c1ee605e9f83f3b1346f75db563137bf978ffe25b6cff6b15778ffb219a7e46cfdea923165ba52a3adf9b41da0e277b6b5426955c2252fec1fbf326ef7f45e6bc0cb38c6af4fe24db4e98aeb0b70283e758504bcfeca793f1933d138bec6580d1fc8e741a24b85afe7393ea1799ba7621b52dbc7e57119e5788b837bca2c576bed7c69f45139eb0eb2e5dd0a0eeb385f93edc19debd83b8adde0b5ecf5524efc73e48f4be46b84c155a2a9c67b9e63b25a236644c59e7a1c530bfa96a6f9cd73fdef3b06e6f78a81910a39b4094fe36fbdcf96919ffa54217d5d759c716beee913fde9e67efa2b4d75bbe5fbd3abe2650eefd66350cf5bef356ee9fb39bc218df139d4e5ee163f2395e4bad67bf1828ecaf792b95f6a21ef141888bd5acce7a11d26c54aacc93927b1415e6b770d58133f3d1d47c3b6dce71cd7e98ec7d11c91e36f8c4f7175561c69c89fa8221fbccd0e7d7d8edda99a29ef6df01900b4dc34d710af45d88bb8a4c88af1296396ac2f25c5e9cc655b15f11166872b46dc3386a9b88fa348762d6c89c9d8e86d1e061bddc71a73d114f7d50ba0d737e5a9addea3f6160e92051b70a5d922d716a8cf8ce4d86cc29f66ed8dfeb97004ccde889e0bf59bb7c6bc47b46bef174e35d72ee29347cf3e7407d740531666cb4c20870bdce618c59099c5a813a83266cf6c4eff12256ba784f862ded3714d1dbdd98cdd9b46cba549e8a3c6fc572cee429fb7aa3f4c8b4d2193cdaa78054d7a04cc23792c9f168c757b8d469c2ceab2fee748157772188846cf2665dce6a48e481898cc0de5e5cae01cc25698fd3412d509b67c32142a9c1dc93195e64e7ce2bbf60ad139df903fa939f7cc19b962cec901369ac823a9c805db9eefb3a9afadf996589413b19233496266725f9eaad88e9ef8f2f08c73fbd0df34c567c9f7738b2e67b34c72cc17adaa3ba67e25c941fcc2422150fcc4a0316662640f9a63181ae29d720c986cee72fed57c6f9fd27af90c3c214396cfff7a4c77a12366f566fe230d764542c6800c0af41543197df12c8a876ad65db37dc6f8e8ae5466609ed5fe0efaa79aa19cbc75ed54b79e4483eeeb425775ec8c330eddd9f630073c3f8844d70aeda0ee37509db322660cf9fb53be3e25ffb4086add64bb29cf57831fc002be2fa1d833946b966cb5271cae7586e3758075d818eff55bc5a021cc46249f4f8b3c4cba0ae401df19ce20be195827df4a80ae40af7545f67565f21dcb762a962dbfab1d61664740f7c5ded62bc7f55c16cf46576286b4a81627c4e21b943773ebcc137a6412786046935a0e1df85df53d26cde72fa37ee66d248f1b19ea81bb20cda77398d327fd3d97cbaaf1754036dc0f3a69fdb5f82b847fd8d066e9fbc31c5317e507cadbca78689617a888a1a26ab150b518b1e450866c6a33e3ef87f9aa4446f41979c6881f629f994dfbc278220b7d1597a7b3ee59b9ab9ae2b7b2fb6f7467c29563d9f0c0ea8c5ca0bbbf7b346d45823b9fedd23c9e398efb7f9573e6007972a20a89a6fa2f15aca1520c53e92ea31423d41ef3a4ab4202739c66b6a37d9a972cd8ad75d54de975146bea68cff7edd82404d74cf74929c6b01eeb958d7b06cf7c3658eb7886234d67b4bd789b92b819068f27f21fc17b7851217dc01f720ce47c0f39cb4124af0dd539167b16cc393a067db67cc6d7e13d2a8c71eb8b924ecbd24e5231919630b73bc398a9c850b2e41f89e74afb2485f2de62a9b545403f9a4868cf41b5b542993014b953bc23cf0c7519d4e3bc1ae2fa2006afc4069f0681ec4d0a8170a307dd1467552e62acca7d03bceddd3ba4c1f194c6814eae83f5562607efce942ccebcc0a7ce6d32553ef354e74905bdc2fd9fc6072f2a3ce4bd1ecf99f15daf16ef383b12d755c3e94bf74dd15eb59f71cd6fb4b56fb5fc7f5eb53f8b1a7fcaf3e25e98aba9396f4d650c08e7bb796ecbb25e541a0b7ca73cb6a3777bc53bf575c01b30198ee07cc33dde4ffdf8187aa9112b2423775def5cff873a9d2b7bda863eaa9f17fa3c49f25abf7b5f98a37db13ac15ac3eda5cdba238bb08ef836e57ac41ef997a4b2589556cb7737a0be46ff28531d4555dfd2469a82789f59bd8758e22ef48f6bbb976a78973fccc77622462ba5a94befd3b4aa1c70d53d30b2ad81b9269716de8af9ddb08f721f4d69de75571661ad1b71e4dbdfcfeecf8ebfdfecc754db9f64cb9d3aaab77cefdc2ebbe7f48970c65b64f866ecfdc67941f9429aefbc1e8fd125f44742794b1c8b13023b047accd029df3df3603f744b3821cd98ac15ded8445f6dd89e553edb8cf3375347d17d68bbaec7a4b64f751495f1796a7d82f8cc355910e2e882f7dae202529e700cffaa3a67b9cf24d82330e7d7ca22ec13747e30efe93deb893a0e63430efc090fee2ff2f9b503bb5ff715826db5df93a77e6369dd67ddb1d6f96fc927f4b1b85369f1536be55b07fea547eb6a89c383be5332116046eedf7a7a1f6ba578dc16de72e88bde6b8e6328e6b1cd0f17eaf34b3056e47753e8373c276e2a7e385dda35d9ad632af2de22984857878ec9068195d04b13e68d60b0422669a4194063fb13fb67049e1181fe28e5be600d76aa728c517b9ec88a6c2c9f61ebfe3bf9d341dba577c15eef0c21af689245ebb8ed4db2804ec898ccb9f5b9f59afc4caa3a455bae22a0cb5e272734bd3badfa3149736ed836d7957195cf2088f30af1dd8ffb8d48e06c3de23b7d744d8fda009b65c3663908ade90572dc6f2b0356e7d80eec2e3d6bb1252c0eceba22f77a6e63a8c6111cd4b16cd475aaed3266282ecdd086797c1b70234af71fd40ac87df51882f41ebca8e34c4c85dcb75c75b726a01b55a075564c747584707759c6d739fe4c5f2cf9d1627740674d268ae85ba1bc473e8db08e2b723bb5d9775e17851d567ae2fb999de68c581306f92454ed3c450ee5063bcf6571307d79addfabaf077595306a1aec5a17ceeb5457475b70d6a1bc3e6e70a66ff0bef17df6e2bc3993dc5ed56ceb82e7c7997d3a6afb82f534df1736cd096e7222a27d140b11dbc89738a59ff4bbb3682d7b16e8e1795dd7cf53c3d8501f69a0f3070d76b8a3b29b19c9ab19a157fd8f4bf555fddc529cdf7afc6eb5ae11e01b9a6237d455c86a67d62535e4d44f0a9a23b13937ccfd9b8ee7ac01efe94b5db51b68df7510d6c4e4a96a2f7ff5e704899b1215ce7219724435fa30d5722b94dfade5b6de7f34c69f14f35c7eb7f0331a51efc4ebd9b1cdd9993051481fc50ce5b407e6d0b5903cd1e6839acc9bf5bb4c2e4e52ec36d72698a5dda5435d159be55ef49e332098ad31a57c4db1f77618ec6d858901fd5a1e95c5de6d046e759c4fab1878a6cddfa1893f55ced436df860f856ea8b351372d8d1feead069e00cfba8ea604d067ce4aca77d0cdbe96e08c1c44794c973b9e61cef0f3757b462cd2117eee667d5ca7772f477c2c9be3f9533a3b3737f091be3891ccbe201c9c04e1dd58e9bd8105fde6834f23a12d3e10023314032bd87a4272d2e7ec246fcc79776b3e9ad6fccff9dc9574c7925f27468da7b7ae8f1399e14b453745983013f7d8d89b713c523a6ef00b3dd20f78c6b5ce1187391ac1601ae1386fac9c582db822905f1354ac4fc9d824ac455bbf054c770d65ebd8ec8ba38732acb734f60dcce34494f003397b69b30ecaa9cdda4b3b94d73c1b401b871d3271a38f185ad7c08a84d3fbb966133d98d753fc3584319b8954bb074b65dd3406ed82dc752599e232fc96c6f8fdeafd5a23164bfa2cd0b9fad04fee5d4f7de510567f6b3ebc521c43738e9203bd249d9bf2f9cf73bb179e59d96fd578cf95451cc1936fd3550baca8914558c83e79c476567fbf96bf0af6e10cace9bace97c95b6b68d3681e1fd61c7b58ddab155db8189b7424b756930d1dc6a9a6ef9eced974d4669ac9856deb5adeb768dcb53642b3c33b6fec0ee8bb4b84ef193bc6f4f5a52cf7143221f82dfe3a6a633ed0f98b9cf1b90db454b742047673dc6f765637db556bb451cc07be5aaa755bd1d1fee5f142641b8f44f66739d6153c3023b13b9702bf3e06880dd2e6ff8fb0e07bc8270462bfc3753a384f0e6de4477496a6d8f4f3cf38a1c1f67729af2d6c4939c6c3695c91365ed89c0bbbcadb4a7be6725ed81a5b5ad8c24a581d6d71a55628ad520c3368c3d65517fa54ead017550ca0edb4882369f6bd6be273052603b45bb7da032bf64e783e3073e48f58ca4d75fa3eb51d07a2212f4019a30023031bafcf53bb7f6183fd602124077cfc029d30a3dd267b61f379d9848990e138f22c19e80acc7103f932cf32b1d9a5836c4e79ae18eb396bd98c0771be8df58af7eb773ad9beef83f1481dd1b53979ff86648d667b2707e88986cfcf42b9538a836ab0b15e346ee49f748eed3e8f3d836b38b35906b3d5e122c5043acfbe7c6e1d155b6fdd262d1ea59d9bedf927ee3ace5ce3a3ed95e3a22a71aadcf9eb7922bef5a87dff04ee4ad39dc2613b0d6bd4c4ff2f5a9f140ff4f8dd59d58fa3fcde25fc351d175bc737adaf135a2b32987359de0839d45470c6d39cc9529ea6ec6a3936721fd3d056c834273db47b6c4c4e0f2621b3d767521ed33895260badf65dd96e5bfabb907db951c78076a3d78377cbf4a311cc5e9fd2b5583057307dc1b508097fef2d9bf18ebaf6c13b62d7aad72b173e8ae2257537bed750ff505397e424a4360621fba558917d3e770ad9d5d451309a394fcdf74cafd18c659ee692b0318955a0f74bb15f5871c75ff20bfd04f5f1fd600d7465e3b2710966a4bb261bf8a5b52d6ce72c1833036d5f87710f146600fd9c08c0b89740d6b712dae599ad678572642b3bd70ab65e39c63bc348d6592ab088c7c8eed20b4dd5039eed3b3a3c1b83b506731231abea7d78711f764077e5bd9dfa18437fa0f4b90abe4692f901b8ae1d4a876daa23cb0c537fba7e1a3f93e3da07eb6c1f40ffda1be205419f33dbb7ac90beaee84b332c70354a34027d8087b3feeecc52a9fb0c3a2a8d29b79144535f1ecc027d6d10c266482c57da4c5e4bbedc9df8cb9ec8529a18e8c19458f547335d1976dc8115e95353b61f455fabb43f552046d732e755f539c496cc142315335c79e67ef4a7a9f471331098892fbc4d3071a3f4754597565f624f22e4cfd1e3b423105288abf3bece21fa2fe7077afd9367993dcf0801d0290adf7af4f9c0379f0dd646287fdadd22ce4257f99a7fbff038501bdfaff2d1e29d3dfcac0e3722b1db682113976327606c41240656a8bb1a213912276c2c6e58f2dfaffac28ff70ba7564fe1571d52b80d63024b3ef65e7ae6a862accf8a3863d0767a26bc1a0af927900bdeba76541d83b504bf17732134c7b5e47efbbba519ae2413135d8b703d9360121dc8b89c1898a198afc3c01f6d4c95de98a1bcb67bbb8915525b2bd93a9a4292653d2eb3b135dc8567f689679e13367696b7028c714a53257f922dacbb8ea193d2e23c69f6d7ff98966c1d683d80cc529bf3669d966fba03e9eddc369ddfe08440ffc49fb5aef8ac37dcbf7f4c5ffc79078df14369caed9fc9234ca213323696b79e4a08b1a6905f6ab7c90e9af24e654ba95d616d12d416e58aa3d7601ef4504eac504e1adfed35d8cb517dcf361b60262b37f5ef6540f4ffabfafda16c528983ea2e1c4d1d3a5228bb800f67b13916fa5c8d39ea8f5c2b3c7866a585d4c686fb80d90e30f84ced3d18a3c8813d6375f3bd9ae80af3697771cf24280cec154d7dddc038bc3e8ca3ddde99674855f9f190679c8ab702faa549ec085d4acff57ef96c3dcc3f569ce9d086026539cbabc638bd79b46b2548cfd2430ae6de2ae2cca0ce179a1d61a5a98773dab0ffb3317d9a040e746b884b3fc09a9ecde29b909d5f0f994f7d4aa7fca1e00b351de2e7bb579bc759115b34c9d7c7896aef456f32f83d8b9d9093b27cac113b17f082fcde570ad67af8e2e8aa8be90a8c7d9c225a217bc5b8262f29ff8ef9345f5221eba6775bdea12e51e247253f497caf270dbcacae731cda6e73b9e8ad296ebceaf30fb18d9b9e4bf9966fa85a3a17a3774dc103c05f4a750866a86fd42eff5f6d7c29ada7a7a9820fcea5b9b20bc6eaea99e7eca5ce898b770fc832af5b616a391f2a76bc9e949f4c20ad905d9310c9715b7e8c963e0c027169b3bbe0ecf7d23667808e707123b2ccde60850da8eb8cbe1ef05db32363fa0c7fd6d8c24f6a4064f722d246e056351a200591c31beff64e15c493256ade29f477a0930efca07f617d9bf3e779bb49d747423247db99d138c7399fe539ddb5c2c035a30938a7429393f706b3f5ae58b7bcce811f60ba72168dd5d76d6673c206e8ae79ae8dfdf2dc71956910e66615e179fe7a453f503958cf089c73d45acf726340bd865c69ea6beb7dec79c5dd0ebaf412d9d76fadab753d1c8390c9b1ba5a7e9c4f2be7b47387fd7aa4a472e7585d3985dcc66ff23b6d28b7d194c635e405b8a1147bba5d16bcb40cf67798f7de76739fbd562ec1b5fd5a5ec32fc75deafafd798ff157f9c37aaa8a8179cd9e60ec4053e2df945781beadb25c4482c8c138c86dab0c725e5958ddad634cd1ddfa8d75215aa8e807a460b3f28a6757c17c863f1be7c92967b7732007dfa1ff45394be6d81ed32daf2a5c2a67a9abed357bb1b9bcdc63de5f80ee515fdb0be58a7a595edbaf37f58af3a1c66b2e9589ee30febbc95506cbc4264b75666cf00574bd3c6fd915eb51d9b3adb68a937d7aaee9486b8b705d93dd6d6c6cb73408f99b7795daf9e65de7966fde05cbdfcebb0ef7b7a18ea439c2b4bd46c7b9132f44a51a2bf0f8344f2c47e85cad43dc5f0f6ad17baaf10f8f4d760c6cde0ffa37efd5626f36d77ff57ebd6a7fde633f5eaaabdcebeced96f3245c4d67bf4a4f08cb77b477b16578dfb68c96d2b2a7f3bc0589f8ac45d7d9208fd05f7a27893f1fbbc3b8873c542fda6de765bd5c656b682edf32022c7fbb8c70371ebbb430dcb5c255607d2e1a785cb09f294c6210723288c48d9461807783cbcec8dfc9f6d4b73762e358ed8d1e5d460b357bdc557d6ad285aed90be5bcc4ef511cf15dfb0a39a651f62ce57c9aac6d969aa57e728b4bf7ceef3a5f3c83e2deaf9631b855e52efaea3301e13cf7415db79d2bf57b5af2b394b70bc69af2dd1767387b8579278657b7e5b7e2719f2a0221fa83105f0da2809cabbe33ed3b4f33097bb23ac3068cf193e56219f5261e7c05ff1f772974bfeb0b1b9df34fdc47a77794ed36a29701212eedcfa6dfab7712358c0dc013bc4157a8fb52a4be02753f93036cd9de0cdb8d25af84039b3cae071d746f6e255471f7cf05b1ae0e0ffc41268140cffc113fe8d2b2ccb8e3b20fc8c07bdc20dc78793f2046a4cd527b8d60b6ba9cd5df8a2f9bf9570c75c50ecc7072d20f42534872d0a55d33f24bb17c74a2c33c20fca17f7815c77ba8294260a25875b3612da3993ce2f87e39e77c23ce3e7a8ea10314076e3562d60b183e1313ba63a8e2826744edec7ad3185599711c894d713a92e6e76536d836c7acdab219aed666c75e0b551fb77a0c5d051b7d4250b1d911f62847e4e198523cfff54c926712c670a24cf56618c94e6561244a93a6fc0f29ed9123511ecd2692cda838cdcc7c5198f98df922b2e725c967de258ce9c9fd603c0bce6ea7fede4494c8fe5422b9a635cac623f783c9b1df673ed517654a9ef9abf7196ebf57da67b0169a8376cc933407e4339320a39675547585f96af92db773f37d6843f64f3f272e2d227df63cba880d85fc82f943582a81f19a4c43bc637f349ef5a9e9c0df09337ff521e1e274861d9ff3593f789fe2942a4acce08ce766d33e339cf52955c576c21493fb97bd230a52fade056b27cd551ac5a832716411546c2830df40a4439d19ccf7169c891b9b13e19ee6bbb66f76444c572691da1eff1a237e27c2f3cbc2206fda1779591bfb13e884bcd6fb4006c7f75077ef0c8b1ca641535c6cf6aeef18ca23ca5d20ed5c2d94632b698e0737593902bc14ca78ea08e6cab712726baba3c545fe5c6a1c65750d14a83744a76c1763565cda679cc975bfb1a21d44a3edfea9a552f2193b576ea9e43de9e7b9482a7c532102fb747d347542ee39e517f5a2b30191f947cf4266a5cf708b0f531ae9e231e439ccd61b472bd8bf19ccb3b283fdfb986d37e0fdd6367aedbf9fc86157a36bb887f68388c62dc269b28d358de35920f2712c413d42a75de73c4d33a9ac8191aea94894da15d23e4e561a5a338b3ffefe1eca4433fcb93597cf691a393c03b1d178e6eb82e4e38c78548e3f422b27ee22e1dc78d5f1cf133b1fbf99da08840e76cc57e788cc7a212dfa99cda29dbec65d0af09256bf6e58587d6379af8bccbfd59842dc4d784e6574de12e37f297d9e358f06e095539b3a67cf9ec11b0ee8158c6ba08aa4c5ca2768159534871335ef1cc7342ab5e99930079ed005679749604f3cfbeacf89d21988af96aa8a39c3887ee4bbe2b309cf9f510fe67e8a46a621e39476863efa71c2f670ca67ac692dca7b1ae593da59fc2789fa88a5e71deaff495a6efffd3c9c97e6388ded71fed53a1e311d47c399dc393d96a3fb129d0d8dfbe1d8f9303eb0251f8f07cdfcdd618e022ce309276377807e7795af7b55c641721bd0a3ca762328b3e1a256d6dfd4d9b1fa2ab22fd47f073e92772b7cbcbb45e34cc8c94416985920a6f9cf04fb0093a04dae03eda9df72ddb75cf75bc97547633fc647ec5d97f320a40bfd0a1e94c528cd52bae259f911e641e3f298b0f584a056164bad7585c4c680ff4caf8a1facac4d9b2d45c08a38d902c79b2ed97c272d76a5c6f7b67a9a6368d01102189bc4b6da0346f57c8177b51165b6c2461ed9d09f226f642a271f7da6965bb2ca13aed7b9ab34ac8754c277ddecdd25cf06eb9a0db125c772233f5f5b9cbc6fc7b1bc5d0f2af8b57e9a47b6f31794cb33d87a67f0ba8bf422d4aee06ac42ab2100e06921d3f17d53316c86967dc09fca57264f97cfd4f92237bdbfa79b53cc040b83e2ebe671224a629c11af0a11371b61b33125d03c6131fdc6d2ccd7019689d49cc97622e6bf901bd79176fbb1b19e9fd55305790ffcb04629ada7db363af07ddc6df64ab924f2f955f9500f28a0181fb87b9f9006def5c8b1b05e57e358df5de71bcf538d352fc702d6e36c75084b197d57ebc46f9fd4e7a673408477bab96fb500aa9cee1bc081bb323ee6d4e70ad2e35353b563dce7a639e889306e74d6d5ebab60af4d4c7137423e036276ecc1acd482cb5353b7a6079c7db2d9eabbe3f03df853b772e8b89a1d8d169faa5085d15624d0d242b0c229d9093da780433a2f13c46f1f81c569eadd5c39a1d6105741d185778625ec5904a4c09eeadc424b6b575a9e54aacdd1b426c8384aa61531cecad83fbbd82feacf520d707ef189f8dee03ab7813b397a7fa785a702a6ab84b08a7e26e381659ae4149a4c5e47afc0aa49b8a89ad80b1f08b144be2401eb13af256578bdf9bf1a220d619c47b9f27f4c662e5f5bb4743bc36849fd884c955c8c8221bf83385c2513ecc16acc414ebe2204f1ccc2b3159b4e49328f327d55076b1ac902ba0a3d9dd56dcace658f62909f3f4b6618c592c835b849c623fca8aa18e704dd92de721ca57d99c13399b3f3a313b74436e2adab5d55120a5387dadb914f21c0f054edf8c0d56863a41f91da6d7b4dd5ae7429f9298a60a91ae4e2086531553ef58fe02e70efd497140bb6e90e7deee42dc9ef61c2a190e7a9f59eb4ceafbd5cd734ab866e4b76321b3d2da206492eff6a9f1f43512614e3bbe9677f0027a2d61df679877adebca6679c5103eebd57494e72793d7361b24ba84ea6ba7a711698623d550c5c52ccdd17656bb61953f0ea26a3deded9d853fb1d55479af2b4046c3dd799e73b5a0cf4137cb2fe134e2e4d4d6e2529c9cb2ac79cb5dd2c6f451fefab11a237cd833ec5a399eb32a424c477dea2c60eec000f1decc77fc7c3d8adaeacae313df65606e128891c94a6bb34307e619fdf998fac7fd6edb63cb4fe99f8b61bb4e54946cfda7747f22d967d8f45695b36a10c2f13be3e47c7ffb711ff7a7844c6a21e55aa1485b91b0b171797ba66ff492ef2dce8fa1ebed5a758a73db3b61477c19104e728d9dafd80fbb58536988a7677ee2cf198d22fa24a11c70965df7f05e6cab296460764fde87a13a18616327f4a3b5c79f4717c4108e81de7091ffe3816eec9a6c10991ebed7955d3850903df2221fc62b6ccda5fef8863ada9a2c43be7baf911eee8279b34fd8a97afeb4d51166283a09e57e16c88e0b47e88cb69a320a068a4ce80a19cfa767ecb35239655f29954bfdc16bba4edd16857b831963f1e7f091c3bac740f707732a73c25227ecc0ba363e81cb753b6a8ec791c1021d8e47be3f21f569abc348bd260601ad1958f74f84c70e71681298dbf052fa2b1533d34967f815b45899c389d9a137d086c2063ec465caf560dcd3d4d152c32fc6cb692c6306e81b705ed79390f2e7778b6da22750de50879b0c27db4a321f5184156bb36e6bde9e4b8b8ef082d77789b1c1ef3b27e32e95afe7d56b760dd6ccd571f2af2f9348c66c96ba6d3e0f6ce9992de89af88a72bdd47a42ec961a1153f34e2aa31ed11f6f8be1a2094d15969a4242fc45b32363261bacf52938b3461b3304fa7370964fc89dd708967907e9b8f788cd1f27af51a62bf34caa53c09c90979d5bcde35c38028efa5aabfb6a5a1877a9cc0679657cefa14df0f278b4606d71f295b842bff41c4ee7e66aac8cba4ce9a5731d5dbd9f1af66d96db3acdb371352dd82193180ab3b67b60de28dc86bec3d2ca22e44f93207d4d15c8b37c170ee6f1eaf9eba1fcfdbc938eedaa58c98c0f7fd3e55f4b973087226e2f6dd61d59c4f53cea37a4cb19cc5f96c6b798eae89a98b197fc5ee7421a18d7ee4e2ec39ea4e24b30414da2fdaef66fa0fb4add83400ce6dcc43114a87b10453e0a3c36147c695f8e875994520e2288dbab04d8756b5ce1216b99951fed6be8aeb7abde895d2bab70740cf46983a5629d9513e49f16ac0c55bc5efee274d7e4e460acae569aea667759a5fc202466e2596e6ce77a3c00c8635cd70c6dd0562d5751fd8e40bc9adf4059759afaa8019e1395ecbb4a4a0bd7f01b586888db3a50c4c0224689a10881ce0a24588752beaad52d6b72295ee5373f69e427991d7f55accbe8ba76d0bae7f74f28af93fcf8efca4fb2fba51bf608365769e83b0be6e9167b527a3708319ee1fddbd578b3f0ce6401781bd0c35b72fbfd1a9ea36679076fb0ab11e4405703d9ea1536f252bec02cf7deadfdf77575f4698581a72ba2379fdd751ce7636c37ef95f36df25dea5c3ef532c0858d7d0ebf6dc18a47363797b560fe9e0be495de2ecf233f55c8d04c2ec120477d49f95ce66350b1f7a85dfebc73e4d41d4d795e73bf91cc5fe6b41ff949ff44acf0493b724fe4595e735b68addbee54bff370a4efc35891f4ceba1803fc2cef07b82c297daad177eab7cf9551ca0338de2f50dc0b7ed4b7aa9c37efac1c1955cc4212fa259ef4d967527f866b3022b8b89cc7429a771bf36494c771991f02576017c99cf39d23e3ccf3e897e6c8003c4021f7596ee041223e5769e0be793264ce594fa54be585f3f1db72bc9a4be7ba8ad355b31de9b1ad02b9f404ad1daff306ec2f98b346107b57e2cd2be497cc527d4d1d2d52ff8f6b65d9a3b8c11661070df4b3b208fb6a1a82a5099b94111f0721bed7b1ebb049afd0757f1b0cb0a9426e6df5b7c1f2066bbc84fa7086db7dcffc264d7b684a7fe9aa4fcd89e02c1f9b73e6e497e16db7e533e9c818d031e07ee99289aee88115ca6b8d90fd59fadb549aacb3dc9af7c4e2cef9f2b9fe76e7d1c47610a13c77ba427eea8a38b65511d0a9701cdfe1ba3208534cd3bbadd33df2c9dc88337ae75c2f6fd30bf12e51a962cc5dc8237e273e99eda3df254f0b907db27d9f612fbf71af31cfa63edcedf19157cfdb9df313fc52cce434cf2a35274af9433d6a83f8c8e4ee3909ee9cf3e9523bd3c1dcde175fd8ffcfced5d480970bf69f4e50e15f8ab999d67127dce332a6ed2db8af35393ad897f141fead3093bd3c8e27c7cbe5b9eb7186e19da1a26fac1077edabf935bdd655cb11a1aff96d3cbf26874726a17fe3e47ee3e45e85938bfce799a5097d9f8fc6e0966ddf0731d799cd73d0a5375a340aac08c61a1731e304bed12267d568ef8631dbe2405703a487f599c40aa98ec8521dd3db36fe26abaf657b7466e35ec2f8ab845ae90d78c0a5f88f8658f6f2580f637aad90595b04f369b3c1c6f44fc495e355fb1aba73a9d659b61d177dc9638ccb36f4ea5ca1d891e331dc21d539c41dd89ec61ba8d346ea0b77822e329fd05a3f739feee3ed16bedf359bfea1afe8897e1cc641d462d8531bca59f723d567abf5d462c84fcc2b3c37e0deb1c28398fe5a2c79294edca372bc03b19a2fff60efd470c6ca78d79b0cf707b61b80f7484c5785505346019fde1b94ee0bca76fe9fef5ee52e27bf3fa8e5ef07cf55c7d19633bc747f22248165fa398ec54220aab198e9ef052f09766b684b016366c5400f19dce4ea586bbf6d8cf9d2c202df64811c02ea97e23c9e117d46f1a5c7e3c1fb86228ece8c052fafe3af8c39afb7b3b1ba4e152f258f99adc686cb61b0b7152636d4656079af140fda6a88693eda5e250641aa8caf8c3d67abe84e512e7c7386d0e72f8da94636cb1371fc25dafdfb63cd656cce6677a875bf12e7923e34f875a431f8b305dc1f8d73c3062198b741b80ae6d357773cc31c01437ee542e2e7f781cdfba2710c4dfd685dcfaa0f3b9ab78bd7f0861873993bbfcd1aaf2cfb394bf3ca5ea9accb79f7b688fefd41975e69aa0b797541e3c338c711b8f79dee776c79a5fcfdb1e5b2a4f45f1cb1cf7067609835c63df3bd975b63bd65eb4c7bd8dbf4f5e902bbe74bbb6e70667b276256c75dead83c9ff42b82d8802cb3b508c93194c7524c43898ea27370ec0e71472d9659ebcaf624de685ac7d4ec58ce9c1b52f3bd7cfe3d198a8dbfc82651f7d1d094dd52271e57d036e1e1087fedb25ca29763eb958ace067b8bddb9f3d9c211083dd655a71147f2543122796fb3413847f27d60469327be6bef2d96f9d4a7786087f2dae4fccbec191c7eb6dde9521b634da7a9c7fbaf340fdb5decc390edbb03ccafeb7d74f3783f75650a840b6373511e097da375e4bd809f3f47f502d65d23e4959ec68c82b60cee86180536d33dfd5bef4b5f4ab86b4b1dfaeae6faee4a0b99bda1dce2275e2aa518f6b3ec51171409c919fb414708ac8ebcd2d5618e076b286404641efd5e791b5924870dee71c75f8a03bfcb9cf4b6053edef5befdd7d0f9d5fd1ef7d3b8b19be6f317c400a27a4bf25f16a373444fbc30e761bdfcb2d8c01bd708166e95e2455deba755a6d31747c0d3bd3aa5a7250c886becf0f502ce43843551abfb6a5ab83eee16d17893edefaf8a9344e5979ec3b76243d4654a2dadeffa5ce80dfb36ac62bf5deff7a7c398b714236663ab626c286400e341086aadb34c3297af8a09b97a7f4e527b03df4763fb9788dffda6cbcc0e5bb2dbfc5be11d54e2ca6dee5f03efe0827829f47c7fb4312ff547eb57fa76986343e157c34be2a7daeb463195dd4cb66f8afdbd6a6fc152b2e539699cf2556b5ce501a4a4ab2e76ddd8ab775937ea6b0b93d8f9bacaa7f99e500cfecdb19b04eecea13d8cfa8e296f2cdf31e5df31e5df31e527e6ea3ba6fc3ba6bc5ebe63caabf535fa445dc0fbd3fc3f086f13ddcdea4bab23bb261b3ce9aa60f167deef34e7cf6c6eb3ea2bf31d53fe2f1253de05b4a6116e6b4e982ccf59a38fd47de2c30b7fc08e10580415dba1dcd5d451309ab959ff04b194eb66e03d6e6c555c9a5cd1bfa9244e7575b431b93cc7cac9b873ad3ab69fef5e6d3e5afcad6aef9d157f9ef713fa2c5eef4b7546beb8e7726c78d62ecf61ce785ac7e94ff3bd95f298547d2e84c0e6e4c46c8c3ba40bbff77e9637ee35148ec428b6e4952ad503781d7552161ba77baec84d1b3b3611f836eb3cf15d6b37ecbd0642425367deed9eef6b7cd887b58ce25e2ef7c9bf471c714b3c64469f8344bc1abfd90ae5bd49ec085d4a6303b335ee07fdb706fa1af841ffed0afdefba18241a335411de69977cf6d3bdfb1d137f311d314077057ce7f788edcb692a4afbc50d2fcacfd0bc578ed68f62adef10ff7acf18c452698a79720c4226c7ea6a79169fbba0fcd218ee52698951f4d27d7cf718c5a294f8c7513e7771accca9726b5c6351ee1cdf5c2ac77dee4e96e05a5abc2c2f4a7379197f1ee499bca4efffd131dee5b8c5f7e8fab8bea633d95047e578cbb5cd52339b83f7db8b537e84bff39c8904c5be7bcd63fe178f8fa5e5fda2f95c0e99ce5f3faee6398677d7e16ea975c43ddfd5c2abcedc7bc951077b09f5eb1a6c1958cab1c5b98e45c29cde261b7c02b9a53cfe4188bbd68d3247457e69ca497df1188ee990d795eadebd2f7e4d99667fd1f9da584a3835d7c7a29f43e777c3af3a55daf0ad28dce668dceebef8f30e4d6977c18a696c3f97f17ed59ac1c2d1bfa8ffe5426e7e25fe4fbddc1d0fe860ce7ec59adf8817542fbf4ebe2eb571ff73a7bde4b6cde02a0c9fcbc6f2cbf8e4bcf3bad60a9bef5dcebc53e51e768153c5ea5e1627725561afd6cdce9ba77b60d49d571acee65f758ed44b2a6fdc15efed649b37eae4e7973bdb3b1acb9de5b4f6f297ca3bcde5efb3711d290506e85f3a17a8ed23777c5d777bcd1dc2f5e5af9bf74b7db7ae2a7f85cc72507ed999726fdb2b2c3761b2fdcdf3ff0bfa5ec3d8b8b45cbf7f2eb5f9dd6f7ecfb7f15e31df2fa9afc759f956b3bbc46b726fd7f864151b04c673f1319ffb79bcfec9b34cee6b50c7fb39c434cafd664e631b45a26b28e40126d09c68f24b11cec4ad5ab5e63c1f74e9e618f9927f48d6574301fd1b6e4ce5a0fe02b34a3d7caf3cc6bbfacb70abfcac33437dd38a7385e577506b3d7cf9c6a9fab7c5a982f93b489395f7830ecaa93008477bab866956c3a9aaf841e5f93fb01ace53cd4f2ca3cb0cb7eaa38c8995fbedddd16f0ae1ad4455fcaa9727be5fed674b7e0fafbacfac65edf76abde9ef253e6399a1fc988eddd715ddb5951d96f998f3fdd1c60cf5d8504698d867b81bf280209f2b4ec03530179e9b62c01cf866ed6d950e4abf3763db205c0b673c857e7dfba922c6fa6ce180faf5e9d68178179fd96784dd93f3fcec8c604b7e647d71a9f7f18dad905883bfd8515f3084b325606f355fc912a6573e3f3211c42623af4d85c2cd687288ad53c3eea9d1cf5f816f55a32712c504cb592c6f2b5e50e6075ec4bc60284e84ef61ce1b2b5dd3766b9d6facb4b65926d109191b44289fe329ec2d29f5c9bf437f6ec5b9e20dc55e986c1019dc5f84757548b3c80fbdcfacf5bebbd40937067db2dbf1a03e516e638103bcdae85e4d4f593d8c19894b2b94d3fa5adbddcf15f2532602cc287c27cf6dbbc6fbc886baee8a7f95f1f652dcd7d6c96241eeef570a717f72ecd423bedfbea1ea47e56b93207b261b7c1a7bfc19f0bff139b6f58c57113296e2552dde383ad1553dc5c44238726f67df8dd21007eadd7b75cb585a8390daeaca39fdc196c76d22ed3ad8291f7ca3778ebf6176b63bdf38586ded7de3609d7aef1b072b2ddf3858a57df78d83f58d83f58d83559ae36f1cac6f1cacfbaf112cdf3858df38582d75ff4be00d7de3601d5dc36f1cacbf892e4b3858998dfddf8936a54eb0d612ba03c6c7b3995de72a1e9add135d9c07ad4263e7c7d7200c810b9ebf08f3e62fa0ff267ca91cd7a10953e87a99b164dba3510e87ebd6b80977e7aab157efd8aef58da4b726d0ab157763b262607d02b9ec669c27425376b83ec39f4d8579ccf67c0953eca6d8a6523bc770690eee0eaec7de02326b7f65b28ca72b5b40b344410bf8cdf86167e1c7dc84bd75a1dff7373f69e427993d7fa016eb720bc65e7e2fc5c0fa82f9bf2b3f896ec770b2b9600b31cfc03cdd6257e2d09d21caed7e1b6e9549903d8365d63a21e5f6e6fa9de32fe23959df6fb1afada7844ccaea6b612b4ffb3c51487fca0691c1ee963ae1decc377556de6b1d61a985b2af45fe5dc7f23be2fd8dbbd4d4ec5867f9c2211caa3aae1fd27144706e2af22532cb4b1543e78258faf4ee23c5ffcbee6e15431de19ab25bce433951bbfc79f37dc427ef60ae722c81ff445cac541ff58efb59653adeafc8df7753ee4c16df988abcb6bbdb34cf5cf179a650f02e802ff91c9ae977b571f401bfb4d960a51fe6d4f48bdf0ef262f627b2c8a8983e967c9c96bb5b47ee072351a6d8192e8c26f2c4f9a8ce096eb3416c2514f2476299b5cd0d2374ef4e2ea1dd24d45d8d901c09f9e014be406cd51f6bbc5fd4fdcd729a30d4d1cc6699c4ce72ffb2c2c6247681a63c3ea37ca9e40db90753df2c58b73c013ab6ae0aa9ce48ee6ff0d1daebaad8b35521816bd6c31ce40b70900b2ec3cf5a8167b2f52cfb3fc1c2359f8532584775b830a72d79ce58c6d7d1bcb5e738637741d67ecde76369e1c81f0bb6d370668d137a651278604693b5ad90cb79d7adf96454d722f7956150bd864246b0ee69833f7f6f91cfc72092d786ea2c4ef9a4a4e71e6386e2d20c6d9847b9f06542c59cbe523c8bad3545f4df7ac3eda0fb1a65b6722bb15af23f66b8c059ff21bdecdf58eccc7c802eec8b95c01c85ab778f1ea5f3d6e87b63289af356f35fabed83835c8e653a69cb5757a71f09e6922ccd55793ca57262def3b1c2fef571d78c64d764e8a546ac02cb73312b920fd6e1634a0726370aee310e5121fd8296dc55bdad4bea0475cd14666d2b4c2cb1c1a741c8c91bcaeb59a70daa71cf71235c0bbef75cd39eb33ab2677302e0a38be1fe35e6bbf65e57461b3314f7428b7feac53c8f1302331403cb3bcc777a220fe251dcd1261cc179626356186c4d56cefdd14ff9b45c7277d9664be6d94ccec13b862206a5cfb1aee8d859b6e6bbd97d1bedd381dd1fe156240466740217ef1cdb063302fbe5333f4f39c87f4ff93f9d67fbededb2f3fe743faa7ac5b340e4f2667677bc3295c0d7d95df01bac41ca87e4dbe7bf8bed87dce8b79c6fe4173339eb9ef66e77e53077c06ea91171aeeb037902f1a6137e79e7f8f6ed875bebb88fce39776fed7a5db33e7918cf7598631c9de9c141aef1b3622ed0dc05fb54ee80670590fdb590da98acec9a9f797d28c733984f5857a607d12f3c077d7442b04ff45efefcc6f4a16f2b6b2be427ac5321c9529cc701366e76b69f21e357c6dc20eb67f20f0b7523e8130f7d24db653b36d867fa5cf6ec816f34dad727cef6ba5c5a3fe35d388f07b2977c5466954c24a7fa45fedd463ffa927e9a3d5b8ff748f7dd99f263a32c91cecf79b257fbd98ff2c14feafa64831f79953edf9bf5b57ccd01bd81353fa837a9e90e12d2ffdfbdba4e216e5adaa8d07483ac58f9bd5647a2ab226e858f8dfecfe3769eff22823ea9a7cfd7744c1b2bc45dbb873f8b7d462a6c0527ce7c747ec39c119a3aa1e6b828cc24f943f4a9e94c62a4e3bcbc764795c9ed91bcd64e9cb945fe869a2e80d6e1f459c952eb198c87c29f4d821c5bacbc3ed16e8b3dac7e7f74576cf8527cec093b5829e6e1ce18efcf7c1ff7a7844ca6f817b415091b1b133736f11837fe86cb5bfea278dad829fba87f1cdabaca63adcd5135a7d4f158cacab3b57aaa7196276245ab3952eaf19d2df19667c65a421ff9e331afc2c6aec57882f93bd1e79e496cef6963cd74d718da4ad5516607a9d115fcaeda6ea30d93fab43ac34d365e3de75dd25aeb8cf6073499db24b60ed2afd3cf7e3aa66858b57176204fc8ed81b0be4399e82a59a821fef4c6f8d2bc8dc0e6e0f9798bfdf297c59836c8384b0b0b7c93959e78646769c84596c7fc2dcdd07ae259dd35b951d0140b518d576db873e5b2783d70763e1e6bd32fe1f7c856b81ba3982a1adab39adab63ac15ac34ed65b60f2f88caf73426075864f7cb7e6c70a65b3c318d8e2bc837bfdef94d390bcc3066b1d877b6ea1a358b51a0de047634965f605c56d96e2dc6a34b6d4bdd745895764cfdec5065ab31d5e222f673459f28b09d63356f6216e40bbcdbfb09130282eef8d8bf3d846d0979cc6ca7b23a5799eabdb688feb080df24ce55e5ae404d7467ed5b1cd0d174d717f83485ce8cae3221b4f9ef34915d3f844f739df57801ef60b470f99189dcb7e6b1c2cd0f9ac207def742c6ab5bd8358759aaaafdb097aaeb6df67d63a73766c363ccb916f4b1a77dc4cbb8d6bad10a598eb90744d45b6df3d3a1844a26b8576607749e4ef55195375ff58848c8979fe0d81d65931d1c1397024261be99ed2da206492ef61d478fa1a89f02ce3a39bf44fa9c05a9d28a20fe4152b698b85cce7248d496d78b781371db5e997e266e7493b7f6dd83b6d36fcdcbf76a68ea2d37bb9d5f65ea9a7826bd0d29ecc39edf70627781b3c7f707b69b3ae34fffde2c0b3fd469ae1f0ea316ac40eec57982fb7753e333d2d40f690dcd673f53ae6761658dfc1fd50ca9bdbf66aae2b2aa47fb7be48f25a3fbc6b0b3565b7d74fdd8d643c8fc9f9fef53497c6cce5778a30c6698759c92d780099cd2dbd0b437a7b83ada63637616d3e9a74ef5f7c7f6683b1293ad0a9fd16bbce36f53360cc5054109f7fa54ecdb359a3b98673fd67e13f42e266183cd6ef900fd6ae5106ba7a5c35de70724ced5810255a02ba8a4548318ff01096ba6a4f7575b4056deaf268390f818c71615bdf5810ff4a5810a95fd6d641b6367109d6fe1b13a2a1bd7f1d4c886b7d399f850eed9aa11c0b9df33118e1ddfd65b80da5fbd4189d8b57f8d21eea2dcea2bc0733eceaabe3f1ebb68c2eb3b5429948f946cedf912c74791b4077bb1013e25c5abf34e7dc6274558eb94cb744b146baea3850566583359fded34c912d0fe85bfbab736070abaa4e1355d6e5a63c72e3365bf975b9076ecb77d5cc0f2146e6b5fdb938a70fe1e097f8989feb379d8eafc0e89cd24bf313af9f2199cd07caf397e6c01b231ccd95dec39f47dc5518bdd7c4f714a50f6dfdb7e67a793922839e5fea7e00ea0adabc6ec45ea8d9def1e7aa1c78e27eef649fd1fd78dadf4c8e4fef7d511cccedd811253f863c0ebd599fbdbeadebf3968c5b7da55bd6737a5dfec10bf2a6df778f30e2e6fa3c74d91cb5eb9f17d042d51714d032b4a9de4ac335df7b7555dd3357c78ea252dca54bd4bc93ddafc96bfdafd81fb09db4cdeb7155aecfe5d8db41dacff66776077ac297eb2fa783abf2025c10af552fe3fe68631ec695ba261b44a687ef7565170e14b0765bef86b93fdfaff048b93f7e032a655bc0ed7835c5bd02b24d15f1b353851cea8a7803ae192a37ee5302c660a7d8656647c64c3658eb533cf3f776ad28b83ed6f2c27ca7f552d75bcb776f17d9078ed13c7b5497beb4bc5840ef6dc8636fb1c1da0ce564a0081b0bfabed10ddfe17b734a63baea6275df62200bdc37f71f3d2bddd5af07de3d70e02e94e39bcb3d72fdc222e0995e69df34b6eb711aaec7de29d7712bd60d2cad3edad7cb4fa8de431febd6bb861b69f7b7c65063b23b9bbf07870cd5f17b9fad3a1bec354588756572609334d491a0b3bb3bc89d07d86031e07337e312a0fa7febf37202ef5c794753489fcf7c24fe3e5cbc542fbc4686bd1c13b8b44667c9af57e3bdc29c1c4067ba2d3fdabd30832be326761beb73017d44f5abcf3c9aba668fdcc0b3cebd673856c7f6f0fe01d03fbd31a351305050ae9c4bed808d855b41dbbda1c89de2de539e19eaf246def5fa32e8dc7806f576db7194e3bb14f7af2a7653dde32e75ed1a5d8a8b94b5772e8e48f67c610f3e0babfc029c8ee678d2ada69081d9b52fc1393f790f5d2f57dd4b1fd0ebbdefa9eba5c5fff6361da076072eba16e1a2fb56464eccfe9977e2077371ea8efc606cbf0c3bdde849a5b324764c8549742258cb2cb57df75ea3e18cdecebb96f3a15e73ff40cf7475e2e8b9df21efc8b230bcdbbd59e37a7cdf9f1debcf2fbd3f4bdfb900afaeb4b6d7dad0e97e11db10ec210efb948e4d62e49a65dff9cfe5b390bc5e85cf3c66fdff323811b37a8bcd80d86d3482890d96dadbbdc5e3b0e7ecc65d6a39bee60ea0b7dd5c84ed77dcdfe2e0f953fe173acbec0d16d196ac0af1ec1c7f8c431abd2edf46797efb979fcde5719e814778134e603ace6a3cd61dec4269ce868549ec7c5de5415f4bf9976959f277d7eb70a592e25bc69a220426b459143ed43c234f6737e82145a1d7591e14bdc1cffc067b4851daf1ec3c4d1d2db504777556dc989fcc5de62d8fffbc571e75aeb6ff9ae6e9f675b843bee8a3b8aea558861371bb67b7b50ae6b2bcbd5faeef521c45ffbc78814bcb8d3ad60d77865763c356eab806f715c6849e7f17781e0e60a95ca0df7dfbfa9d2a284664dce8cb1b15bf5d216f516f4d3edf47cad97be552fd9cbd5836854522e4588739a699b59ee757e41d84572e3ff22cf36985d4de4ae8fe44b2efe9e797cffb4df78637fa19d7cb857ec7f572b31ff2417f2ebce71a77a98bfd3dc7dc357628fa6a1da2a0b9be632af2de2298489f529815326b8b603e6d36d8981ee565790c3585f4afe8df27b4d3402c11c9d1082ab152dba0ce066b3dc971901c9b7d41f1c70979cd982eb2e35d6ab783fa407a6ef06cb02e61541deca3ab7c2aaff267d9c1fce440cf51bb826babe2e6169de25f2f27553536f1dff9feaa9a4f040faccec8d589e3f83647ca6d77efb7fb513d5a7ba0f331b8cd52b7e4d9fbd7bbff2fc7b79e1f6bd0587eef3b7f14236b130166c03c93a533e56ff203b8d51f97e7dc3dcca9aaca9889ff67f8f9653ac1418cf47f0eed66b8f7dfbcf65f8cd796e3ecff9d6503e4db72f55ef93be8f3f7b0db9cbaeb4ec796de571cc155169296bb2fd4ef0ccbae36bf65ac059407e0d11b207b3bc436d35939d45439b6bbf487dab1032da25d8d587d589cec01feac7668d766dd0f3579fde299ad876cb8c1e780c0039d0ddc01b1dbe804f5a1b34c622464a02b436c184a9d5197dc9aa16df19f31682fc7527bf368d74ae829c228ab63a31de0aee5f1e5a7f1d7f2bc19553c34144b7614834d0aa94e0d034dd214323259b93f910abc38ad8409662554f9995a9bb2a4f4a963efca32e38ec53ec3d5da05e308c1bcdb7d91168b7e7f9a04be3509323023710fd73bd4819e8235d491e7e7d05511e23058adf51c62a1d5b1e034825a9ba1fc693376a005a38d46ac02bb843f68abe2d2e4861b191fd6700757ef9aaa7b9a2a50c7d7aebae6264b456652c2964b1ed7032258698a1d5809159b84bd5109d1b5c2786db1649461cd1de6aa006dc03b784c5748bfa039b257ccc1a4946b03cc2919689dc9113cfaec1951d515616612a32f5d9d34ddb947838ebd1792261fba66fc98d2390071224c62170cc2dd464f9c285f03682b413805ba32899ab17eb0262cb554971582bcaeee2fe95b6045c2c6f2eaf92150a99d8f47704fce580b6e14200c597963ab934533460c2aa97c09fabe46188275ec352ce67bfdedb0d7daa7f2bee91b8a38323bf2daee3acb778f264c22f05bf0801adb2ce3d465bedaa0fff33b61d3ce4286d0422639948348d7f64efa4cbd180a7e46ae687a6f85436a8ef8ff197215ed9adc849a2736b42df38cbeb43ab26bb2c113e0d9e7c84e657f1d8395618eb077ef351ae5be3ac7f58523f15c2f038c74ed50708fe48e3e0fef247d169c29e7e5a16ac0a33ce5e3d2db6ecea8fffc3e30a26b8676ac4be0cc39230fd61972d5d9f6c6de2e3f0bfff271f7abe7e8cded2359ee288ddc86692cf667d821f6afce52ab060cd7c4ece84bc05b6ab9b0bc79176f94b76498537017b462ebe2299dc88dd8ba701ddbdf85325186d95a95f3d2dc71ed98be596ee3c6765bf291d967e72293426a6377cbb9c7461bd0373394d73637dca0dfab7d3e8631adb26486f584a5326281f5c492819de4f265fa3dc200cbb0d76d557c3471345698ef2a943ba94cd9f8bc569bbff1945eebaa559fd7059417c2143faa16df9cb753c3e07de3aa6b3ee8d2b8cdb99bb4ceb8c83b9d3e9fe2a8657dcbd610d49f9f6fb53adfbdfa3ced721cc9525b4f3c27637396aa3f93d94e522c83457d3e7279a88675f5549f03a01fa5eb8764c5be389e4dc91c872dab675cd95bf17ae09129ad8dea67eb0ba29d124f053c8413367618803aff2b8f3960c58dd691514ea1d00eecbe1ceb0a0ee48dee5c0afcb7ae9d009d05e669f320cff0d4e9d6b3080ab7c25180dae19f784fa01e7e3c2c8daf79b47af8e3ff3d8c7de7e18f87871f0f23239c83bffef9cf1f0f8eb772d7e63fac45f8d35bac8c606e3bf3af9fce2276bd309c7ffdf17319ac1d2f8a7fda86136fbc786d04de7efef5f3e36b11ade691fdd35c7b81fd335e192bcffaf919fffc5a472b2f9cffdfd0f0a27f60f8d3f38bf144fce333063df0a28f05f8df9eaf0c2f805f45a82fad6ffd7888bdfdfce10f9c7ca27e3c840b7bfef0c72381c13fff17bcf2f0c7038111c4ffc59efe2f81cf70ec0fe2f90fe2e51fcf14d179e93c775ef4871f0f5efcbfb6f7f5f0c78711c4f31f0f71029beecd370f7f3c3d7570e2c7031f2d1efe78c1b00efefcf8e361147891fff007fee361081bec74f097971f0f92673ffc816318f6e3812dfe54fff77f97868d3dfc81fd78106d5027f6e3615aea341df8680c8f18f5043e2e2c3f7ef8e3e5c7c3ebca0b414fa673ebe10ffc89245fb067e2f1e5c7c32806dfbc90e433fef2f8f4fccf1f0fc3e38fe6c3fde78f87eef98faafffbbfeb681dcfed873ffe1bfb81fdc0fee79f8028dcf9179c2030670f3f57e1f26718ad7e5a81378f563fb74610cc573f9786e51bce1cac101f2e175fabb1b1722bf4557aa2b7b0d04f33e3cb99afd0dfe26291fe35345696fbf047b40e821f0f534085f95ac14fe2dc8817117a965d305e308fb3a751dbf9c7de7c99ff3d9bc7abdad3e0abda1bc385bd06edfdbf877400277604ecae173dfcb1fa5acf7fd4e608f66fb8b0cbd3e62cfe112e6cf88b3cff8a3d3810fc1ff80bdc7f4bd868b6394fb79dceedfdb6e53f7f3cd8c6ca78f8e3815774dc0c4798a150eb37565ace89e233cff10bcb0b9ef5904ade38ddb53c7a3d60fdd8ece189b2a7ed01dba7ac20dea9d35d385605731860b1b6c7b6036e482938f6aced77f120dc05666863466ff5f996c44b6386c70a31b2077dca43891320682a667644d262a5b5c132fb59c75ec36498ac9cd89cbfd6082636bbee66c0fa4bc1d3370a11d882a7ef07118d5b84b330f1d55295e3ad3af563f8f70cdbbe13fac6f2dc35cf066b9eed2f678480128e42004b7103133b4fc985a68ec636414eac90daeaaa80cda7e4a7a6ece237b61f9b9e1f0a9e1b2804698f15c634036c99d6bb153c7dfbc6f1cbf7ce706d0285bc232ede137861bc30141d287ce0c0cd95387b4a6e6d75b41884ccd66277e41b27c57ab47b51706c39e0268b37150f6d85cc1469ecad5b99f760c0f1d4b0b74ac69c54b4d7e1bfde92ca73d858954d2bc062f3137387dd5d3c9ef59fcdde0e2bad430cd661de81cfbb6355344d067b1e76fbd458a14c4dc6c098d7e3697ff7a6e26bc1d316f694dc5bec6ea911d2c2f2b0d5a0d75f0e588932a6ee72100d299b8173bffc5033c0483af85011bd8cd51535605fa8f9beff34e4b0d89ee1a63a5b95c7ba04f3382782f08d2541df9779023af43937ee58fb15a1a9bc63f7f0b5d211ecb1ba5abe477c6cf616ee70ba4b8d9ae2fe3d5a511fa5b9d7e555a266ebca4d8afa921d36a87e5ebe4dc15c6d297ef61adb5d32aff343f1d7e60c0f06acbfd6f638d8076bbd575e3317ac516c778367634a6ede5829b6bce0e5a3a0f30c18b4446be89d3921af6d050fac90f12088f9ec35d609197b8f44ea4dc562634a26e3fa3e4d04dc0cc5400f83b5ae4c3c7e865190a6152a84974b8ab031bb5a287582951652f1201281209520005326123c7daca164b079a2a8d29e5be8d3dd6caee09e496cd73610ba3801261bd2142b06b4637272f0ee09239310719395bc8fa91fe77b2ceb970cc162032b1249301f7c407de810a01ebd33e05608c07bb670871cb6fc98ee96836842e93980e523e847f2a6ae96bae7ec848887fb71ac80fef9cb41cf092d2f28d679069fc3d073c2261d9f372ecf0d2b854208cb5ac5a9c0c2f08dcec9b13eadd493d1593e475a4708a083224be226bb5dbe437af5d796e7626fd3ddd1b9b4bb5baf30b437af77ea74fda4abd872d0e343cbd3423e1a611698c78407fb94b45879a37b74f0a6401e04fb08f68f09bff3d77ad7c506ec635c9e3fc0bf8bfd0478034e0d42b096938519c9b1d9ddaddfa67ef10c275280b6cdcf2a6dbfa9684eac4f3c103c3d1854d7f267b9cd37b5b4f7a6649e84e363b62cd5e92ce79d12bf28ed57634afa6f1c1ff361df1b70fc72c009a84ffb83fd56ae235f030b08d82c85cd553a1884ae6b6154c70c0a5a1c8423d764b7296dc1fdb51d4ff90dff89c668f6f0d4609a5f88bc5940a1614557ef8c887272f2b19a26e02464cf62994f035bee4d82dcea2c13599db2914b78f96056f0cc34bbd95990ae43d77fcebe1bab809fe1f120828e48c15bd72ff3f7703c7b7dd63f2be76a08f8b9e5b9b142e8f65b4abb560f77df3be05cc116e08c79df2e368364e8640ac34c01e750b0d671793aebe189ad9098a1e0c140c15d43795c0f7b7d62b477ddd127bf36a2e1da5498ed6fa458fc233496d72917f0cd4cc178219eff220583ba9f82813adda260108f2d1a068565ba40e789a430fca5f3ad607c2b18bf48c1809bac5032e609ccccb4874ac5e7623fe80a7bb323271a21eff9cfa5c97b8feb417efb1c6fca19b9f8008b7994fd033d5b67ca7dc0cc779ea68cbe780f1cb40ca64dc1e1911eec52e083ef35c2c5cd7025e85df0db68612be4d75411f7e03753a1125d4a9f5787e8869c953f6d550c660ae5dbca2eb012f09e0f7e4b7475b431393dfd2e65c4a05e3f13f6f898af281ae0b9c38308f50b2837e0f700464899ec2ed0fba87fb07ea4e4807657e8b095619f2d9681597ea7d1686346345b1c8ce01da484a0f990431d66041647e5f73595de9a1c1ccfa7c1ca9f0606843639b142d9af8c394ab31fc03e1e3e03db88e4580f83d8646538d786879eb5fa68eead0e0d0f33f0b78a531d5d11b660bdd48e1058aa0c04fe0f15b63544de02d10803c27abdcf85a05e5a5f38b75b383f705cf0b709f80c23f3e07b848cd9ac9cc0b54eb271540554f89c42e2a62227102507d66b07682d79505f261083bf31134f85335c7475d8772414837ad05ce11b1d08b95de14325e47d79be4c34ce4f2b945d1b3df3a5ab702d3c4321e19cc1750cebf454f4d5826d206163a20a8986de87820b7c9fd8f92db481d602ee2bdcb5381add3a7d2e3c4d627ae274379b48cc6c32dd311389d94dfc612c628c38c2f8782a3193c974274c245c9824f07719fd4f2ae96775da85ff0f067d9b9e106e778aeaf99c7ae5efc9ee143dbf9cf8db5894187a9aecb88914f033f4bc30e8cbf444b27bf07fd9027de859fd511f7d1ff0e8fbd160d0a7e889ccb0837e404f3acb6eda4eda2f6626c27a478b896fc5338ca167d83096258696a561ac4b0cad4bc3788a31f4141bc27e1892a0c1bae440856d287657e982318fb6a21fc36724ec257d67023feb1878c7a627f210cc1133ef8fcaef72605ec06771267761dd52d01ff457a00d0e3e872fd13824aa3760c0b8e4de8005efcb3df89cb49aa2fa181e7eeed07d0d8d4fd451fdba883eeb53d8d7553c49c0ff3aa74fe1efbb89df877d35316131f1c0773236c15ed2f10c6349627a7a1f8d47c225385732a381791f8bdddd7822b9b48cda8826fe221d7f1ccf24869e49936cee3c380fca0a8e53ece87d1dd28b3c1d3023b05e34fc5e86b4d447b4c4a4b4341274afb2f674bad67a3697b207fac188a207df1b0cfa235a4ca81eacd3ef833ae9a96277d1f341460bd1245840fa31fcd1128d9d4175e202a22fc987fd17313447534943ebaa4ce03c48b04eb06e713cc198debb34446d49886624c941cf4b126c478473dfdf4f0227a30f1dae9b3262119df8e0396688a1f99860fa301ba33485631c5b7d1eb501e977884f42295d2b2c5b47343f0ad54d695d98a1f106a0ada92a32294dc13d3395d3fae4940e241ef46160fa901ec07b5f136fd79b48a324fdcc81be8267503b604d6d5aec88dd742d6759fb4354173742ffd3e25eccd720fdae67fa3cda7f87bfd1f24cef0e18861609b297ee8f74df83f9aa3eab4c611f9f26589cae19e41fbd6917f56f2259e8735f03344d4b602d6459017331f39910d5cbf8681d6435dd5fab74cc80d645c8ffd2fd95f2c1fcfb29dc6fd646ec239a01fc04f40bf139fb4dec969f5f85293fdc4c7cb46e536507c72f76dcae32cd7e7b49e90e8e859bf705369b5b29e38768ce87e9bc8c10dde23d388efda8277b695d8185e645e6737a994a4ccfec0ff713b47fc6ef7d1ef13e7952a1a9199c5b86994e777abe47601b604d566f90ae0897c9db4a69729a9e190adc5b236dc031dd89c468da14cc417f0b784fc67bc119339446eb49d2d217a2785691185a4bfb34497623f0fc80b1697166f7adfe30a527b79bf24a09cd0d6c83d612f49e9eee27d07749d5fb669fcff64fb6e6d9dca6670bc5403a577538b72293eebb3ee22f72ca1ba4741dc11a19e86cec0db074cefbe81d396d5b84ed8cb629ef4167834cc3762633d0ff15982f4544bfef21af067c27e54733c98a6544fbb03e4453a345ca0785f48c1dccb339e980fd03f6fe0be0cf9cedc3bdc34e543defb38ede6166e87cc426919bbdf338f17601e023724e7be80c9e80bd2d4fe0baa4b43b9aa6eb8278f9084be97f22c273a78f4dbcdd72e233b4dcd772be33453403fb3e9bee06e0fd94778d4beb23a2f5903fd3738041ffc7b194cd0d186b4a47e9fba319aa579c24b0de01dadf781fd2f03e10529e08f9f05416b04946cb9f74373b0b60fd80cf211926e349a374efbda7bc233d9f2870a6a81369d841ff339d6c9f193e9ff27f1ed4d91b00d903636840f388c6e118181bad5b7f222dea63476396d3b30d3ddf1b4980f7c3fe2bd97aa6677346cb513a2e300fe97907d796ccf6dd24d9c9a99c04d73a9baf613f3bd3e019c7cd7d0b2fe648cfe708c9397ce51cd45259ca9086f1d017c09cd1e8dc0b7a839ed8cde5bf8ecba6fc7535f1115dc8fb5126ebecb3bee4675fba0f8a6728c4c7895d7798ca2c9a943e83595096c9fb96d2999d3e97ee152ee5eb8299ca2e32b1ec5764496935816da84cde864c90291d8d98942664f4cca83bf4e11c0843492080ec05f58930007ac4138f2238975a42fd6925d429639b57d68f914791bcb6bbfc9392f08eca4d368384ce75249eed3bd360349e05af0ed4255901e8d08e1e5209cf223d9267771b4d81de6596e9d196cd962ff9daf5e937887cd14f33c8d296cdec301b791616fa730f8368f69a1c6fd559fd397c638572a1c315cfee0e9f951f756584db6ce3f3899a65e86376583a07aece4e1c15e8c51da1d0d3f1adc773e22645442a746636d3a57679bb83e4c5b15937303d3a345926e259a08bd356d93ea07679e88165b294ab03fd1645cf87862a043c5bcc95ca3e3a2a275a3632d466ed0a7a77eb14b687ad634c5f29bef71af39c10580415dba9778c82a34cc6b00e56df589ef36c4c5f5fca735d187d63c798c65f596640f80eb3c38a765ea9f27b0a11d8d0b315ce1da83f08df2ebf802debe53d8393d746671817ed4c967c570b79b6c18e81af3ee1f358e0ab5956e5ac2fcc0eb342796f123b428799e9e4bdd1d8d6c8ccc7c7e0e69049b39466f5c06831b4ae2a279e781f73c6d3d76de97daa3af76e69fde0054b95c692da18ae9bcf5a9d5bc74cff0673595f5b9513735a5688c2b6a542afb2ea3eabfc5eda67957196e6cb50b445bb3dc977da7f8399a0ddb7cade143b060bf89e5bb29391b1ae9091cd3a155ea27262f999bdc106a1dd759699b774decf867d0f2329223f9fb33cca01f1ba40efd288e6121a331398093eb022017c1f1bea082bd6bbc9ee55bbac6f7c66ebe8aa1b681d192bd90e9d0f6eebc00b9734b3296ca3fbb2e1390137bd4a3f0adec4d90b5d7974103fcf6c7f74a22b8c3f97f379cd2fc834c20d3462d5cfebeae7ed232f3f30bf5cce4fca97ed476c7dce219fe752db5faff8be7419b5047c6b087911e0538df398adfb33cffa5f6ff57d83eaf10fc60169baa13ee8dc51a11f78d955b13ff63094e9bafa5c6876f8053a671660efefde13fa4fbeb7750eeda325078b84fef32d89eb345bf45ba5535e7bd857855856796ebacf0c0566c9827d9d207eb45708642b55a7afee788639c3ae7f30a634537885277cc8351e04ce75565f42dedb3de4b34db6e04134da9a6cf0a94fdde5600a232196f57e5b29823ce847bbfdd6ad469085f2ce56824497a98f413474c6d38675464e3b6d63a25004069df521bda0aed164893f80f35c66dd00f0434447f4a7a68c167a5a275afff2f954ecdbf1947efe28f1315097993a34207922f5942df88b6b8693542e8028239fe93983fa05f7bc9c3b0494cf649e253776978e4d82f1756512f3c8a900f421e3595b2b94b3df37162700fa02e77ba03345ffc099622ac11eed97baac67c57cefb55c675a9f98ce1bdac30d673a9c8b7c4d7afd27be4797780a597eff704dd15c9a6a6d2ee1ba7019bd484ee130401ecaa40cf5915fa8e354a2ab0c0ee42d157f5994cf48b82fab67430ff2b7845eeab90c2639863a740cc05f0906f0bfcab957de8f253e539cff0cd67066a58e0aa7df2d3b2fe57514348efa9cde03385aeab99d8d91efba90c62c4ec6783600656db3486605b227a087b762bf20e785ecdd1e764effaa6b0de664b628cb2171f937b3b7c8f850e5fb628c0b67de29e48a8f43999dc9eed5aaf279033d80f65ae634979f527e5ddc0b1532d4203f5fabbfb7f32fffb9cc6f00cd8ae1ced55354a17c5e59669ff300269ffbbc2db30bb32c27b6221dd427154e3660ecb97319cf52614d5f39e47b394f2b9cd2323e8d22cac882efb0f2a3c5527b7d5aedbb95d0995394f356dd63b92ca2e22fcb746ddbf97908e9267fa79075e01aa3fe11524aa7cdbcb87d1dc8cf56dadd57794ac65b79d60e6c0e66f529cb3ae0cc770c96494c855acf4bf37d7a7c1330be8ab351f6ee2045fc1c74e94857454c57f90a7f003c85975bf9d7da4c0eeb7aabeb44279c061bfaf2ccb335a7324483319c1bb06fb33b50aea23765fa00555bc3b45dc9a93ac9d130caf3ec798cf8d679ace8374076e17207b7ec9ed5e16718c577edb2a3630475ccdcc191acddc35e3d8fadce8e3c176788a84f7cd7ce64c4a8651e2f68f335aace6dad2db47ece47211fd5d7e8b3746e849ab20a7816f94900ba036b85f6ba58e20bf04eda11bcd7ddbb4723e7cb29bdb412da2dedd3a5dedd3af93a4ee9a55d9239002fd1a7af21dfe39f204a546807a9dd649b8dd350e494a7a577e295738bdc97c6007848c0773567d45b38858c97be57e84548179ad2eb8287358eebf103c82bac10182c43e8533a36c0bce47247c657dbf7a70de5b492b36dda97f43c090ee8b634a76fd36c4e5fa963324cbac665fa59eac8e600e7e2bdeb1fcc45f5596751ac436a7729f64fde07a04b0844468f9623785a465fe5bf6b8eb047db46320692e7db9d638be78ff18685190dcbcf1e75a235a361cc77eddc995448b6ce3ca103339257ba2ab85ab88391645604d72a732ccec7fb51d633aaeb96b4cc9f3b465188d0695a487ca7a4fb7ee9aa0f65ca6c2d8facf75aefba6b207b18844c0eba157e08ea59827d5f9f7385580573197be6396cad01fed675d7b6b28b075dd8f6f2ada4df961ce60b99a0267f03fe2f664ec8101d18464f1e9c9708a982c10c45589a6c80cda719221cb9313d7ca1a9c2ca244832e717eae8e49e32bdda9e620b5a9bd7682b3fa77a58490ed6c292fc53f5a7e951153dbf341e703ee728f930c23e29a2eab3ba95a44453389c6fe73d28ebd525bd049ca5999e23a573c80d178027001e933a2267b2e033cf956cbac7e9239325008dbb80b6b379685ee754def95c1dea65801f5e6a8b644eca641b688328397967baf1a0c4f7e7d3ea1c5f1e7493f57beb58451f97ef095d3ffb8ea3d5e027c7b385b68c2ebf51bb7c5da7fd13dd833089153224b427b1eed2c257d681ef618343b8da15ecabdee1762f3cb3ca6d46c85641c57a1ff97889c5dc03de5be9631a0895f189ca6f39fdb0155fb1d4ce0e7495f6fb9fac2f06b2fbd25624b873686ba8d545a0e0a0a2ad224021bdef78e659df19776bfd3ebccfc8d72bb535f7005d6821f36924d57129446017b64eb86e5b4d15023312d37194f62de0254dfe709f884796e82ab195c7924d70d2605fa63003f0a7cc4e9bced1699bac6097eef5a6264161fce7c2e323ecfffbab1debc3b9ed19c7dde7d123999f3cf231477ef204fef8fcf8f2883fe2a7dde59fc967fce9197b2cbbcb230fe7a3def24f2fb9b73c9179cbe34f2fcfcf5778cb67eef1d786e312e433fefc82916778cb67a33dc35bbef4e825def275b7f8b33dbb43c38b1a3de67f3a8b9fa61755de495de84b8da6aef4fffdf08f87ffc97de9d142565de963f0e9ffd8f3e53cb2e79195fcf17f4a5d7416cee2e7f26bb15a98eb0ff447d9f5febf612fffe1802f97be33b7c19fff5372c6ffef53e3cd76c143db8671bdcdfc1fcee2670448aaf250687cf9a6b19ac73f41d35f477f04ff7a91f3339c870f3f1ea2f9eaa7bb5a2d7f2e975f8b0fd061142ef0df0fe6fac303833193158c57b016e1f26b1ec73fcdbdb724ca5f7c04c66a5efec2d97bcbf2e77de099f073b432bc088c646e2c2b5f045ebcaa7cf1e5454efac57c077ffa4a9670c6d11f3f0dd429f4c1f2962e1c76fad92eff68c746f1616e553fda0449e2d4c1173fbd6835ff8a8ce0e7dcde1a5f767cc9633f3fbc7960971e0e026fb9f2acc36f8af73f3c6375ecf7c88b57f3520d6e68943ee58f7d1991bd5e7941c34ff1da5c05f3e287d0268b0fe0bdd227ebb1f4a13c5fb16be0954f04f954f94ce244e973adc955505a961d8951d54f3f97beb77bf8f1300fcd39e8cd3cb21636a283eccf9f461ce1e5cfa611cf3b44fd9ba7c7ca375e647c25e56fac7853fee82cccf24777be2b7ffc04cca1f47909374efe711782d99e7f7dfdffecbd478fb34cd706f85fde2ddffd601b30f8db01c6269b6c83347a45ce39339aff3eb23bdeed0eee67a4d12c66d16da8735d50543c75ea5455d95cbfce9faac1be16c520b3af310ff2eeefeaa8f885cf356559805d97b9b61bf9e0b0f91be2f8fe10a760d1551fc3cba640c1ca6fd216ac7bbbe8e2ec434be0746edbc79d7fbdf0aeff6e85e61dc0f5db6b6f0d4e5364b7d1ddabddd24d9bd27623cf015fbfe95b3968b7addf743fc21cbb6962ff81e73dd7f9ce0e7fc67ae5b5d5fd19e737cdb55c3c822b9bb6721e013ed7b3ef71515c744ffac98fd0b86d7bffa637fc84bcb6e88fa464e35ffb9e1f61ad1df82f3ad48f58df2d0befa93afd80ecbcb6bb36e33f3fb4f3333ff7bb664efdf967f4187751dbd9ee37e99495e1f7c5a7f13ddbfd26659ee4af8de7c34030c8bbf6db346ffda26be63f373de11dc4b307df0d23302cffb4953f82d77f7788d8cbecc5beaa0c7f5e5a583b6bedcdea03326ce2c4ce061b4cc6eeee4d7e1e3795ddc62e1896de536dbb75b9edb7b06b07fd0002b49bc69e9f7bf3afb15de3fbdf3fed86786eb99fb5859fc08def3999eda6d7bb6fe1d78afbe1ed81ddc511d8764def7efccc209b8b022ccaf863f311b445d9c5c1fc7af1b7388c8b3fd7c46d62076c3f72afc2b02cae31baa9b65f89ae29f0dc057e09792d7b374dcd2d8be121f473b7f625b0b92ac11f54c9b0fc5365f61c36655f786056ba76f6311f3f85806edf34578dfa3b6c5fc483dfb476f6a76beca2cdecaefcf6f5839dc5de15040eebd547a0d307819d9560e4371f93fe2f3dfe7af7a2cbffa8ec7f0f70ff84fe3501c39bfee93671f5c907bc675d1b8afb16ef6f4c3757f7299cd95735e4dbd87d803cf2981b06b48bbb4cfa14e7f58dddc57745e873f07594dd76765e7d449761e6836159d96eea776053f6dd7d612f9b38cb6c70f49db6bcc2fe165fb598d82d9beaf9dd7fb2a6ff1901b6715e65fe3db6bf8d26fbaaa8be14809e5bb5cff5c8ef42bbf3477b5eff0ebef91a7e1d8d7d1d2bb0752bef1b69f9b1a9fc4bda7ad597a3cbb771e8d3a2f687811f57bf83b6e75d877dfffe01adef7b0fb05ff16e643f12dd377c567ed41e7e20944590c56ee7d9e12f69ad5fb4fd2349714f0283b8b0b3b89bff1d3b2c837f472cbbe13744cfeeec7bddfa7b4e60f7eec78afc03236efc6b31f90d272cdb367ea4c07f603cff7cd2aefec06eec2afa0de1da05e7a5e77fd446be673d497ecf00fb6efad5f73c4b86fc5f9140cf1f0abffb7fca06e3c2f3a75f7e6fec549bea7e7cf63d2bb70bfb97f8dece2adf6feefaac9f889f0cdf7ea0f85d13bbbfa214bfab605539fe06ded89d9fc579dcfd2e671a3f2f3bff5f7c4d1bf59d578ec5af38855db551f9ab64682bfbd98efc30a5b38bf0a319e6110658d97356dabfeae99e99ad1bf95e9ff9cd2743997f655abe4382b6dbc5c3839dcf0ba5b0b3b98ddbc715883ba667b79153dacd4389f291fca445fe1b66eb37c36399fec2ecbbf21735ff9e057a71eb9683ffd190f22ddfb18be257d17c54317a8167f1afd00f6a512ff8b208e2df24d7dfb381bf22febe14fd468d79a63caec5bc107ea1c43c531ed7615e088dedfa419ffda6c17ca66665f8a062f14cb8f698fee017ddbf62c645dcc5bfcedb5ff7ba2f3cbf6dedd0cfecf977af7bbcab7a66147e37964dea5d5ff50bdaf58b7e032f9bce8dfc5f55c007bbf81774530671f6bb44ae9a32f7bbc87f6cc4f34c7ad209b2f2372ffab51ef1ccfb45f7fecc187dc7ae7ed32c3e11fe650ff14cbeed3cf66bd6afdba3bf788d5ff7fe47bbed23f4c8b7b32e5a7e4fbcf96ffc9af5246fbba739e75f921fd5f13fb09eda8edf13af5a72eb770f2ac97f735f75bc7f41fd85e2fb3773f4e330eaaaa61ce23be3ef279e089f2934ff8af49911f3676a6717eed7b9f219e9dbfcff8cf06db3fc15e15f7ccd8d765543e35f7ed17be2bf786f6b675f1793af08ffe63d7ee6bbf7f6e24759ffea8ddfeaf45f531e7c9763bb69197c6d637bc5c55d6eb75ff7d3afb8b9f3db20cebe6b2cde63bf1ffabd20ddcf26f13fc3dd94f34f6dfa9fa15f9c711e8181ce23f1fce88ff33ddcb3fdfc81785efbd1a749bdbef1c1d02ffc2676dd32afece67e76e9477ed9787ee37bf94713fb8fc4baf7fb9f6bf5df9cc62ebc32fffdbbda6f3480cf195dd4f86d5466ffe2c3463b4b1f28ae9eeff45f6b412fa8db48e2e792f29c8b4f16ebaeb1e35f91aef10fb26f14e13bc62d5a8fc3b39fabc52bf666fb7d1c5e3a89ef766d5736df2923f7b4c78bed2be7f1d2f74a79a4e0bd827f55e65e590f16b7d8f38bee3bd3d50b301dae89f973523ee31e2cc72fe8dcae3ce7617453ba69fb0bfc63cdff0f03f317586e376d6467df5acc5fbd4ffdee51dc751cfc280eecdc9f4bc2bde7eb27a0df55932ab3bba06cbe9ea57805dee6f8cb9f3ffc05f8e3b0e18ed0655fcfbcbd801b3fb8ea443fe25abff9c9b8f21e3afd8cba3973ddb9b97c869c0bf7b1e2d9c5b9eff993eff68ff4c637f4637de915fa5029fdc431e20bd4635f742dca7e539577e5a40ada9bdf56fcd128f92cb8fefef924cacfe27bf3c89b00ec1adbbdcbe73b3938c6776ddd3bd0474fd0f7b2b1b99fe8496c37adecec0a29ecee4ff5d1b92371fcc2ef6edffce4d009c6e55788cecfab3f7ed3fc71edce8deedef482ab9ad2bd732cf82805df7cc6bf43557e13975efcc13b36f587b870fa26f5c1b68dfefb99c93acdecbeadcab603ddaa8fbdbb744b0bdb8bc0b4b48be04bc1b56f68bf96be8cbf9f6ce6775de4e750ffa3dfd7e7b0e0ce65f873dca7be7069d994c5cd47f1ce9324bd8e9bfcee63af9b36e07d6664b67373e0047d372abf118179ec79993fda1fcbed2b2a2cf3bc2cc097350adf40dc32fbd8c47c84dcd5b18f8027ade803c62fbdd82baf89d2371f46244ff3d05791ed79cd27b5fb0de0f441e0377fee1b8e37885b16c59fd677fb26eee63f799f7571db35befd3142af849be6ea7cb4c5bec9af7af09f4f6da86f98a7abefa57fae63e8e2e34cd35728f0a377f51dd0c9ec228dca8fb6c83b9c1b376e1f3f88faf9b5ee55adba26721e7e2c285f41bbe6ebecfa0bfac978f93be48391fd620ef173f027e398cf818fa4fc15175f3fbfad3e33eb3c4078f0131f2a9ecfd07e7a04f6a95efa39f4def8f735eec1efb9423f19747c01bef3e1f802f7a96afa39b6f1ddf2e3c4e877c807bfeb53d7cdcfa1edc725295fc2c0b8b8b5770f25d67bfc8391bef919df2f91b8033f5acff22af37f2a833fb7939fb89a7f8ef9f92b1f2d6dafb89befe6c3e0eaf6f3b490f05bc6cfe5b81ded8f63b03b4cf751ffbe47bc64e89fbe0a1bfb6e0ae38e30db3fb61a9ffa2ddc81ae7fd7861374ecf6a352f935b8b99f24fe065cf6dd47bfd84fd1afe3c92743c8c711db639c1f0bd7dfb4ea9bca9fdfb49fcf4cdbef30df559dbc0d3f8e1d3e089f22f235e89b5a57f8dd2d65bf92377edf7eb28eea13c09f1fdb93277ded4fde4f7ef38806d7b9d5cf0f1ddb9f31b7727e3754f9d5b2e1fb95141f11af4b4bee47379faf417e0403beac06fd1979d7107d816b3bafbc8f5fe75fb56b3fb78be2de1695db5d573c29e159d9d8cec731d4ab3c6eedbb31d055d8554dd97bcf2b10fefbb23ee2bffed4f9451b97450b56cefdf8208ffd3404bd8f8e7b799cc665748de5fd14fa9bacacba8fa2222e4127b3537fe3fc69e3fc63b2dee44f8b7a3f155fc7e65916816e59cdaf93005f81c2f24f54e6be177f2c57af886b31f9e929cfe6aed1ce3e686c79f3a7bb0e461dbbf511ec3bd9e7906be50bca26b7bb9b95e3751df14f98edf798dbfd7d27fa25eccf7de67e09bd5b4afc25f4def9f753e8bdbfdba7b0c86ea30761a07ba76c7c8d6dfc306e3bbf01ef5ce21ee03c15e35fd36e65fc75ddfaefb86d64430f903e6bd23f0207bb893f8ec64abb8ddbd70ef5d399d04f216fedaedb3783ff7b5af82f3879e97df8c4b2f28baeb1dd6b0bfbeefa6efde9d738f0ce50f40df6ce5853d945126c56ab1568175d7bd7d7dd89bf58dc5bd97de6f85966e7f3cd7dc72dfbe24e6fa9d2f0d3d5f155ee2f76736de6ff78711064b1033eff7ec0bdfac93dfb4afff76de1dca70e740f10befa9e0798d7cba8fbb8dbc03df3365f097eccd0f7b8273b993f55776dd53dea6ddd6adc39bd9bfadd3f651382e30886e5cd56e47fcce1bb477c3281faf767b9c1d709f9247eb774fb71e87d4fddfa4d18bfe4fb2dd373bb73a3eab6f5ccdfc8286eca1e0ccbaabd3e06743faef6fb0878abdeb78ffe00ae823504baf64793cd5378f5bc09c57b41e3fef1c0d00dbe0c075bf7133ff377f2ae4cfd8fd17827bd9f51b9b6889d1b3560e924d317a2ce6f6fc38ecf7693b803e5779ee77790c6affbbbf98eee66bcbf39c0fd69e7f63ab2fb0250f4b95b7dac857d5836c9359741b7f43e5a31063b9bedccbed9a29facb9f7c6dc174c60b75de7e75576e7c4384673d3b799ef57378df6adefff64f434d9c532836d1bfdb1c357db5e663f0945dfe9b3b26f79db69c1dc6fd2ccef1adf7f77f9e7d6855e59e53f9eefc5ed3f6e0406f1e4f4c187c07476fc061ca02f82c1b029fbeabdfa7f9b4d7ef11dfe9af17406f0a780ca8e9b6ff8cf62d0299e3bf2cf406d1c16dfc940c7fb41fe6470f84c7eab996ff3019f41a63278d65226e709d33b7e736be3ecaecc9fac04ef02bd38bc0f794b552f0e6f5dce0f9877f3c35fa2ca6fc5afcb18df016e05d16f3ebe7c799a9afa3b047c2afd9f08de5afcbfeac757a8d7299baf00fe147ffc92ab7cb1ab1735b4049f5bc6f2690fb97797effc879e42bdf22947de9e7f6dca2abbb1f3a762005676d33e7fd8fb46b27c6b116f5deb2d22d38b29df7673ff1bd1cd01d17d6ef23ec13c0fd7be95b65f4acb31889f94f74fc4d75e03f94a16d96ef4bcb3c837e2aacce635b4faf2297f29a4df02de6f85e53f67d43dfe9d56fc89f4f5113f44eb7e4faccf505785b30aabefa5a0dde4cf85f46b8c9f8576fea4987d877a5528bf01bdad71fb06d46ed22f103f24ccf376324fbf5f619e47419f89be2c6a6d1b81af9dd417f2b7d6e116f8dfca49bde01b7c5a94631195cffbd2bc07157e073ad51df71afcce39e0a328f68abb6fbe85bfc42bb67f00bced4ff12de4d3f8c6d5007f11befd2cbc6aca69fe2868e7c2bd96a35bf7faa9b08d8b30f3832c0ea3bb88b673fba28d7e0c7ed37c8bd60efcc87fb1ad7f04f6c5932bd1fbf09bf3c7f3c48c137b71d3dfd7b91be666c67c71c6ba93f6457c55bb6e8ff816507cf284e9f3da35bdecbdf56eec74db94e49f77b0d7dd4cdeb680bb86bc96a307f12fee375fe3df7a68bf759f47500fa2cbeab91a3c02ef9eb7fb7b04fdfa0d9e1f0c3f25d03debd907eed939f437ccee69e4f22bca8f39f2c6792b0e3f838338f3af89fc0bf8557578149e3d6f55f60036f48bf8d19c8bf3ead1ecbab9083f88ad1a3bcced07c18fe77bdb3d9c1d83dfb4cf2e075fa35f17717c0d7956959f027ecedfbfe0efd5ec471961dc764f73c8df50faa28bf3e729fd38b0dd1f4ad1dff81f73fc79efa6d7eda99e26f97ec2df7a5ad02ee6dfc05f3688fa0de7759fa867529586ffc4c58b75a1fce3c45936fff3dc517e2504233fabfc0674a3a67c1ee9fc04bdaa4541fc6485fe1a5cb64f26a2af112f76a13b4418775f45fb49f46e96f92bc4db26affe10bf56809fc07df35d8cc02aeb73e765a0fd0306bced56fa10f2da04e6cfceda3f836f76f10752e023c38b9fd65f3d8a0fe32e0e8b97a1e183a4d89b5e7c261fa614ded364f6a384d2497efb8eeb40e0d79cb4cbe2e231ca9317fd43d0372700db4dab7f41015dbbb29df865afabdfb2dbd8f39d178de6276ee30f2fdb53fe88bdb9b7340f41ff9a817f1cfd6eab945f901ecef7374a18fff6252f1302bfa07c62a9fe05fb6dc1e66f48cf43ce2f18ef5681fc00b9256a3bb7dd9313c1e368d02bbb1f52f78594fb79d97c5bc46f8b0cde36acfe01f753fbf7848acb1fbaa567dc8b6538fe36b93e621f4cb73bda8f6de4278c1785b9b1f3dfc5b128bdbf4bd66837455c84ed3fc3ea7df06ce7d93f4f33877f0741fff99fff3c4f83dfe6846d2ff39b9bbfc0d3ac77e3bedd043747fca8bbed0b7efd01df99fae3fca938de7e5f2d9c4f77ef34773b7c59bef2244aaadb64d82bc276e2f7b73783e6d394ce5fbbc1dad95f414f83fb77e653dfb59df67dd0dbf6c56f438ed26e6e7358ef425e16c2bd0bf2a7ca6fe2fca9317b175eb67fdf3feb64ef42ded4f9b704b85dfc15d295f6fbfbcc5ee6c60ffda97a1f5af8dd6dadcbfbb0b27d319bbf370f667fdddfb63af98bf5f129cfaa7c16777f057f30a7bc85cfad6b674f49fcb430e34ef46c29791ffeeccdf3667ff6dbee699efb2bfbcbcde32d2e9fe62ee3f2adae3fd172bb8b9e7f40270edf2e6fc682dbf5b329208f6f55eafaf364ecafec5b31b805d47dd9f95ed5c445f7ecfaf4e45ff27278c4fb7324aeffbaa77d44fe0e7b4ed1bf029f23fb1af6ce0c731706daad1bc79f4aaeef7b36a17f38cfe229a0f0bbf825924de53e5f75fed4bd8c12aff74f9af2adbc96ed2de79eaeda387c8a52d982fd93fdbf7a4ad7ebcfadfd7bbe7f1b14be16cda70bb09d8bcebe66f7f378eded0a746ff3e92f772f35ebe5feedeb5fa68cee24cf997c17dede7616fe2cd87d72b8791d3b3e27d5cbfd4b563db7046dd73c6f2afdb69f7b3b17eef3cf5bccde9e7c9b84bd0d2a9eec7ab6f3ba82ec29e0ad41fcebfe6986e51afa9446cf16bdb72bb0ef82f5f6ef7bec767bad16fff99fff0c7ee1950df8c394c603a87796f2efd0b79f6b53fb28eee5048befc0ef674d1ec2dd4f9e7c438b9ecceadf203e9b477904fe3a9df219f85ac5bca2bdfebd2d8cfd0af8da4284fdada9fa11f7620eff0eb801a3eae9d880af50cf53009f89df8ce39f49bf30717f097d6fe9fe12f4c1e0fd23ee66f7fe3ffee73f9adf76afe712157d963d05bd9e44f4142494de3592fffb7ffee7e1e398043b2e5e4e4eba3bdae9580aa5f72e080ccb7f9e26f88fa5f1dcc5ffef7fd6ffacb1db9960b726f3f5c0b09fdffd7c14d4bf392aecfffa9fffdc36d47afef0fff70f2b03b3322cffebd94dfa8fefbbf0c647e17faa22fcfe0cb32f382f879aad616885be9c6a066f56ffee38b3c0ceda1fcf33dbbd9e67b67e39cf0c82d618f62fce337b8ef517079a419b2f4e34dbad5ece1e83b6c86eb5c6a0ff4f1c68f6c5fee51fcf397b2b60ef10f78799bd9d5df67666d953897d3eb2ec39b3fe3eb3ecfd19644fe80ff5fce93cafb766e0ff6f197eac97af0dc67f62833829e38a3b86258ee3b8a8ea11a587388ea3268ee34447e2d75fd2d88250750d888ed95e5e13acbc126e67805a79d65a328e73ec61976a6b665ce1ee64ecb44906ea7d61caae1bc9853a33870bad73911ac975689c0b7dec0399cf1339e5d4ed29cc076234c1435d9ef8760b9f9a9209019c8eb72735dd924c06c658d531c904f3618002f00eed60426e2041e4ba04ef88d566356670cee4fd5c6d069dc5a93d542aab29cf12aa50f5024eea1d4a48d1f6001816d807004dafeb25677199547dcbb42a6a83c9da06b489dedbc109decc71339d8223ac2a6e1af4ea161e280781791e6f3121070a5da28fe6999c57adc71f9b63544f0789a28c8bc61920e373d30cf55c7bf3b2d34160cc88d3655de4a776a5b03cc9b07a289736c9516d3d52b661b09841c68393480312ad674051e7c385344797dc4678082cdb3100430ff5ce52e254ac7989e593cfc3d02ce0d9069539293f89209d74028c9bbc34b2171fcb827a14c662eb9ccf87242589c62662a03f57fd4864cb80af5821ca51a621ce290768cb18a44e90e1fad181695fb401084990130de32bcf3a63b80c9f4287222d1b4407be4707c70397454381915a310577a22138e2e46bb1b16275e551b884e1e0b8074b7e53a4e3353c1bd543b65ccbd57ac4f1bde712721c3bfe55847b2b555f1f08c024f131b5b913ba9e260cc7491c57758530e8c446ad35d41fb403e0fa20bad51343215b8e09c5037121f0b2344e13c59b036899703e4deb6d3c758972e42445613613c3d4f168c247dd9f772647957119ead52580c101865de0b445ab6cf106df859c353a2060b1d17d44d878f9d24ea8d5db1ed66c710e8f55548f7c2d60bcb411592d961049c813756fe97befcc8ad14291078597c3308a08828c8f95114b6676f24ec91e5e45bd65d56a597714c5308c29cb72a6c64223ef67fd2c20e9495d0c25d1f3f9f022df1a5cc2b5114fd92581d12eae9d450a1de950efcef6eb33d2786a546d8337044b0f47695dac9d5bf8350e2c119f57c56a4e24605ba4f5983e73c230aac4389fbbf22089a2bd566deae5797a3e369195667e6abe622342730c22f62c700c707a8eec482449f278e3708e6d8c71881780a980b3b9a4586bbef2b868886388455b94de92707a5c2b5cef4e2d611209aece272a5877f8dee327e6e53d644ca7c75974730524cf9a2a391b493cb1c8d1ce3caedbbbb1af4a0be922ab7ca397dd79e047d10cd59a559fe2c2c80a43a7fb199ad580015328edba2d9cc04699ed0416cdb646379fd80328c492b09b2f6b1e386c3b55da120811ab104263f949dbb3b477a957fd74d05ff3885e75a489b002e231678325419eba000b4940c9582fb009f1d4595766737706d223d35cf39d240f14a8d2e209b52eb812cb30801d619a53715402863ca3fc6e351f5856c44fb3ccac100da7bc8c53311162218fcfabfe7dfe1dc75e5de4a34b4574b77013b8c03523cd5202421064ecba2ce3842564303cc0d99069538565fb7a63eaf24b1954c87c23298958705391577b8c8db53e4ec7bd1eab4e8a8c1e35f86542c7895b2a414598aa9620abc3217dfaf632ac196e93cc42974c87dc06646c398f7ca8e3e4d282ba849f7c67e3b596abb8e4696fd0528ce13eb94f2068bd2062272deaf6b55cad75d1e60b062040dc0b791d730d9403cb9395a8178b7649963ca1ba161ae380e4bb74967a7c56419cc6e15032f14b688d0528accf584b8152d3a35900ae90707f581d3d9c9e12ab6df9c0c8d5d3289934b63f920ca22723332ec292abaefa1a87b244482c4c24d2c50eecdead65a5d878acadda48c6b9c9eab22ec1549402885355888ff7bb2a9603f252d0aaaaa0aac2d4e7d45abfa64d182ab516bb6ac102590d8ff9590ba8ca8a64c01b7689aaa29a044871de5c08cc4825674f5d1ac563d9c6b790411bd8321d76ab61ec9ac3198b26e3a5ae45cac9adf63ec2d1a936ef11f15a670c3c576aedc26eb3715e4e02bc0212c105e50a0d566a816cd431f115844d4185691583240ff4306d4b96d1255d14cfa7fa60239938f2a987d1d88a3f470b332f8037c476612eb165a5e0a54562ad5092098ab28a8debd5f5db2a8a6d4272ce3769d12a9a2b70a0110aa344e14b688f94495af809265c36b778bd2cf3ad8043b812da2331e043bc9bd1960f091807f32e779745f2e0dcd2362dcecb7b610912a79309fbfabebd5ba0cb79cea783cc300663d953496e0816a797e0ece1c7b1e87bc818699966e835a8eb381253639c8487917071280cc6a6ca768d55ead7b2beed5ccacc362a8b9cb0f0a446ec2198267e8559ec25572c466c7b66c304699176805a50c5ac5b7c73c892e3e04d8ac9f2589ecba8b61b6913404d3ea62df17442d64a1c50b38ed46e9d7af9d25c9001ccdcf334b19b4d7edaf65433895882a5e8cc22829b132cdfe5c58e2b4b483790b5c6d1c5651c8c5a96d825558f01d31ec23c6de63d42a0168c88cc705a6fe23ce6b7735f36c40e9e9362cfdb0da5e92d6a6c19755805dd86a9b61c385efa318bd8049021724d43bcc1f2832e90b8574cc10e4a9258531db32bd959b2b6c6d29141ef6a5421d9a7a5e8da4d32165a31cb3b3d9f0e8a9a6f5c2ba3b138572d846e7539686ad7b252138ca1a4596979afd02cbf2f8f4755234544de1ef97ae6ce171a2dea0064b3331984bd72a42eecdccf0e2c9775871ce0545bad5842c274fce092363b1a6b9cc6a95945ad60bdf3471cc0d727d4aa358f30a960b319b78c16d505b90b2c698d9671d0e35832c6cab00142bc9fc1ca9152bbced2888aec58eb70721461dcc12f13834527154158b784b77ab07271d72db7e935aad50e6b747e564252c3d9998099683a170ae53246ceb439add28e5121b86b35a63a92279f6357b87368094559b99486e88d9a53146d08ed45d78ab6c574abdcf7fb7de3ac0fe77411a19556eec943efa156a52491732adcadb4b49054abb474c12fa1189203be24c67240a73d4ff2b83c5218732a8a936f6edcce0a408c1a196caa41228bed5036f403848b2e01304deaa8daa519f6331d31cb256f717f7d1ef5ae0d46cec597961b0eeb40ab98633342540aaeb839d3b6c444c7a5ca9d6788693a0327879ac80f14c79de40bb71c291f1ada6e6b551ba6c4e2bdd073bd7c610f2a3f6902c07bd92c6121a3f9aebe513b7440878b0275155cf48e54e47297ac85d6ec8389bd68c8fac0174077c9ab24e6e9deee505f3dc312d629cab85a804680f71c2477091a08cb56cff31d8bd6ab41e08f9bc2571d1dd196a4e805df0564bce3f5549f94d803a224e6f83adaa787588358283566b3c388448c81a2f652ff8448b043052ae26ce47672f71cb04e426396cdf400f88c30cf873e4f0d65cad696d244b525b0ecbee337b566c6756538c7e1aa4ae507c3a27d2040f661874de19ed725f8c898bd859cedcdd0eea9cd9048d4e5e235f094f5731d3b62578631906ea8a657ce3a835de0288a7a8011d34501e7334b78074f62a50850d6785b48176bac96819d56d332d969ec6b03e3595801a3fd843a024c9a9a0319ee3edd8ed305c99afc949e77e15611e37a531ee0aa432f3e688d1743570f1cac52863ed836deb660eecb7b96068b43de42ac989facbd7431506f13851b8881f29530edd74e05a363c6b6e966281655aa81c69cb37c8355eb591305eaa2e763b6db32334127c3fee0c2a661e122864e10bef1adb5756cec317795e5723e5f4e5268c38d3c3432cdc127a884ea68394addac6c1b63b53bc45ca3c68d99b49915d522e4e742122be869ef451542622bb400395f83b710a7466b030735393bd93e8e9540994af64e34b179815c3e7636fccc61de6c89cc10a387ae573ac945b4f502e823a8abb3bd8aad135177d62c9b714701e6194a8d41499af1724c189626e039d5fa4a39e91082a0856df17b557244926ee77abd0c3576ce36543d6567d6a97876e184acc0d6ca9c01d61c1a4e0c2485aca3682171c89c55447bf1ed999ece4b51f9ca20a245852e38c87b2bbe17cf6a4375eaa50b8e1d7dea113bd244ef9071397d4e11a655ce312870a8838decb86a8a30f62ec7a2d7c0fdc046bbcd04d7b081e5dbc54517ba2e520cc2569ea6b5e1d6ccd5ab6eb8ad9038478cc0427808a9e97089cf88ac140d32d1817b3ea9f2024513a24e90b866f9725286f5b5bde7b3769053c036f5cd4e7302e6c474cd76994ee7a9e1bac3c69cb47a4cab2e65f56820fd14f3fb7142d6a8b8f697b801c58512650e8abc5c9dbd79d37382ab70247d3032d537ab5e4111339560c88a50e4bcaffb7e498830a7397825e57bc925a172dde76272561bcc2ed793c77671a6e4e7c6c502f5a0e793d6f801249d56bb74a3eda9cacafa3141fab5dcb1b5669215d5bbaa277120cbb81bddab6129c0ebc853ad1507e3e162621a0d111a2e8ce49c05c9112761c2a5cec2bea676b32932451acd11c46dd989202ba6b70619080f5b76e7e23cee85fb134f09d36e94649ed45a4e131dfc4454b82492703f916ea3cf99d4c138bd4ae066e4cc03b6e4eb4dbccb90ca2ab07dbb3fe30ba81f2ac619fc4d4997ac42035b094346c470c73452705d36677dc67648bb4534be8d0296711108150e6ce3c6ea85847aad6e9743c41afb6d871609964cebcd5a5b653d9ba74d6d4ccd843a4077c92c2f1f172cf120563d71f4aadb59c82555a91db26f6bc643b1026ad38c2f442ded76f4fa645c2aafaef66a96909b2090b57e337b5ec7628067551c56adb4acc68be978a0797f5376ba79090ac86a156b655c620951ca85dd10ab2aab8f8400cefaa2b6e9195675dff0a0846ec00bb725e338e131225abb864ca8c371e51cbcc3b51faf09f420d6c2e0cfd69186d803e9f759a389fee16ceefa437684f0a32f343b171e4c8c75cd18464d83a15d51f5b621bf90461f414dbb52c4b6a0d8b92192885800595d65951872a9b69dbc6410135295f03d7e96d9585a072e7e6149a90d9750c789023f85ac896f7164245c27b702a448520d27f7ee30edfc717fc197106180558e13f0bea5bde320ec985de22fe8c495dd921c2bc361311715f1c352f9b69984b44014e4453970cc56700463692ed209271b7fcbf9cac0d6c2ba73c39cf1488e5054310297e3a44c0d10e00beec81ce2ad8835d354862c4ded3aea5418ec78ba383b1b253caf800b8323881a6a49496e192924697960d7bb0ee2302b142e7d3726b886131a74da35f809dbfb0228589d3d699bbaf401cfed707b6461bcd0e7ed1e9dc219d7265799ce17208ea4ccd80ff9c89b548a4338dbe2db139bf6da193f84e4193742dc246a7c96718090f06348045ea61c946073a1f1e34898c7005ace306e12ab425c415eb794f448c9783132e6dec70f02d85763b76b0eb2769120f7b822d6b831921dce6b14bf058dae1d215887531a3a3530afb78c945ed21a9ab563cf4c73538a4911075313c9a8a728ddccaf0675bd1561284e60a4e8da7c2a4ec15614da8de9c7b4376cd7809541282d72c2101e25883055bd9ee7483aca4e1ed380c4825b8b559ba549a856e376e7fd46dd4e45eaf97bb671c8addeac12603120d4364a1a6a76c944b7604af3c0de5a0268bf3fb21541cf17e7c865675f15d176b6c50b39e8e3a612831cd6163b0de623cb483d2ba291c33367c719f42d3bf0eb33a291e22e8d807190c6be729c5296d8798742d9bce18bd6b68a79e0e6d676056675f237e63ebde8db0dbc23e795c0adbdd196ba82b53d91d1d2b0b076eb35bb94196c7567a13feeb620e16e6626b9ccd4aa5f661bf11534430113e9520f72f8369f20119d8eb1ae6ab9bf05068c59c119609fd172e71decb2d4cfeb037430ba4b51b889229107216e8f2e248a4a5af45bb558cef3b9eea1dd612daeba9d4efa225c219a1dc94b8d253b0dafcdfe889ecd0ad9c14039eea43ace59670e58dd31cb6e3e3b27ad9d352a905839cad8b611f40d509d1d76e3c56abb937a6731edf3523a875a1d18f58c1ed66bc8ed5da872a446ee67821b7277b56ad781808a2b325956ee713a0252897bed006fa048028991b43640cccb3dd3111bb25f5565d2b2327210701117e104f07a135db053a85e4e969693ec48c19030cd6733008ee2e15cee40c9ee660d7746d224495c5470975b122573dcb48658321655988d59ac9a1833d54a53669368203d324939094ff006610bdf5601ac57842db0f22860d31b1caa177810e2e3ded926fc788ed64398ed7c356d2d684fa75948b9a936337435337099c038ec79789c53014e003244ed8c8b6324320514c27a1668d10dc8353de0c478825971ded4d6d86fe101e74357b041c16a90bde67287d81a7c20a1e3860dd628d262aee9a5bd1fb22788c76828b8903279520a62a858d3c6f72e1c69fec92dda20e45638845f42cd7399c3b82fedb3a9c9c8d622879d771c1933cd8ec1713cc29d615acb965987dc311398318aa8589c26dad5e43e614c0665cfd91c93410b5b24e0ec53f234da878a4da90dc68219607ac2d4059372b2db9176937e7fca70f2c8801ee94e4bd622d1263e54e1f1bcce57b32295e9bcc207c2ccf7074db7033a6428466c561b2da61151263185e602a1592e5c48f8044f68a15ee86b52d15372cd48211ab2a86b48e2c593c7d522eef5446918d0a236295da80d55e5fbf5aac4bb191fe9eac2363239a3bb33b607c815793a6fa3f320fb424b5a11e06ccc2cefea8d859e917c8d2456c124b4965ae3ac014e26ef4f222f5e0410d948020be9e53e9487d8075af550b32d4c68875ad97a605c8a0c3b2a800b09d311db2f45ebd399719c928095802c34b44db2c169d21b2a240828176434a23eb4261019b313b7748f11bd46931542e5e79c68f71e2bf50d5757f99e8805737f1c7cb3b1445c1a49a1e85470da7aa3545edc695ced49824ce0e3682359384f1db8c83881d0ee842dfe0255ed892176925b9c5cb25536a6742956894f6cf00bc1f766036836ad9d97834c9e987d4a8597f3c8c9c4b177c00b1655807381607f94cf48c7b8e1c997513c08399c046567bf9c42148730a81db74b79c40ca6ad5bc09de95aa4b064dc56e8be63b06311326e8531b8892b56e3e8183081b83ed14e3a203942b7488d741575046389500cad8e6cd909b56151c95ceea1d408c920dae12cb607081a0f70b508f3baab51936e891ca7c3b06d8f300faed8bad2245dd8eecaa4df33d68ee3aa1c2b7c3677b6abd8577844501c9cc04abb01a694690a54900b92b3d63a5ea3f9645e5a28db2c916a6344887b8c9357f96a7dde799752d810177cd88858bb1608e9240217b49e80d8c551996c639fdc2218c55c76716f9ce180d9e5c981f42495408bb9d244322424fc929081bc0b1814e7a0b021d8dc0071cec5cf64771c74f95c16be10a32badadd77aaf0f44b94c0031fa179522fa19daf75239a47c72f46d9d9bd5b1e807934e038dead5084834140a81ea32d552734122239384daa82f676ae71d0fbeb12cf33e1876cb82a05191000e608c23306cb760853983d3524db6435586cfdbd56caf388d6fbdd91699a48de509941a5ddcac5c71c71d19ac280e804672a7b3369f4d63ae8e7e5fabd2e11c6176b4b41de722ae5d5cc273bab69c34d2288194560bacd5b58bd989dae112a4a00a51bbe734b06d96f3e86a0f1808954dd38a544f088d31312f2213571f1170aa458f59da255b54fb4469aa9a581ba890d1c361e0a7fc60d75a1baff53499b37a26b687930a2096498a6eb651414ee1e506c556166240f141c0369ce5742311e790e7ab7dcc1f8c4ef126cf36b65b81d1bdb18cb411da9d6488db9d0e79ec8bb4b6ae0236532ff6cad00d7f30781a0bfa0841d17e19e4544ff55d212edbe0dc06b5b58e2915eecea46faf035876e98ca20f62bb65563ba31123400559334d57aaca8b4e741c84832a43e99173cec36e512835c07088dda5e71484260a68311deed123ef7162422568c9cac6663d9ef3166b9559020efc091f67419fda35d3646b9ac0a60bb60ead8d1b896cdec5538d458031791ea687936131adb96ad72b412993308cb471c00005322664b73e28d229eb33fd847a0cd0d44d5c1b900e0320e0ce2c1ecb12499062890802074494399c784512b87103b190c1157525b71a44a00eb351d1c4ad57175868d6629caf6aac49ad593efb7eb623ddaa8d5709069739805648aca9e916d9f9a943c19db7152aad55d7666dafaab2dc8bb8a0ed7a4a4a722f8d2d58a9c8b8d4d79bf44486451f03fb3ee94164b0d6e0a6c588003f84429beecb815df3a570641ae29c1fd3953dda38841496a810a4818b8ab7a62f1a799020e42c99174a75e98dbe8091714cedb48c2c62d846ea31a0bdc8292b384156817fa8705ae03329c390501361c7d5b04ab5164bc0481d0c7ccbb72ee7751e4fecc91b6df2847a91d1325272116c05d00c1a55c86e7f2c5a6c691799d79c31066d6c7fc1d95986837346f19985f7f818110384ca7c3812acb195c3e5b866e7c9b376c95e8c9501a8e3d8d571714f33c87e47f161b0adc6b570e975e4804cdbae10b4909629973c918751f0346ed9ec548f3c50eb80689521b5d5dca25d5ac073c6a5169c9f75056280c3c6a45354a5b673c5cd01d0abf985f2606d3c5fd664289d1090918bb987d3cd6ccb6b071d0178e57245aa5ac17892426bbcaca2f13c92685d992ae26f1914c823a60fda68a355145b08444130825e7551b70878416e59ac61593be12b797fe2639b30c38d3aed2f478cc5b67ca3f14ccbeeb80d022a47b4d88c4e38272385c6ee72dc88398a16c4798c14291865ca41b6e350205ec6d1d63a9713805d271bde27aded611839561fb866ed57457e380a0799ccb78ab4f515be22cd613e2103b55b8420940d69b6849285c04d74dac4db343da67d800f8880ec5b9c55ced692c75e1bb3d92edf69682e667b720faed70c98e67176d99ed7b958e76edc6f0cfc681d27ba20161661ce2cb161e894985d91f370303d9bbb7946096239ad75e7b466bd6d57771e5c4542ccd7a230f00a7f6a8028998974cf1807bb40ed2ede2e7c9f36e6f9e832de2ed369282542a3d78d93a64016b42e1c6bcbf44552594ca19b242944341eb1fb10358cfdec873125b70c3652ae7d34f9b88d121cc67c4106f1cb9a853b67877a82bdda070b50ee42ca6e98badd832cbb4a802d890e4bbc471821f7e465eb72f676bf47dbe034966c81a5b9afe4b820933d31e0787838541ceae5bbe48cc7ab13e98c302a02581ef008ca851d093594379b1d23a5cbdc34fbed61c5ea7b83d260db647735ed30c364ae1619e7275f6e2860a22d55f7bcb3e939c752cd8db4c85d175a93c14a028f907f190118f4225fa995b33a5d6059d8573a16cb4d34cc07105a2b860eca709fd4a4bdc4c06217c9e22f0bd308db8d185c72b1680f0774c075d0d4e2ecbc9dbd5cac515339562ebee82970c6f0653ec1de014189adbe0b2981184e09862f174130632c04c87edda70c4dc7927cd9fb0181e1fdec55b240232c5a965b0c4319f2b8a788e31eb918bd4cb74a7891c2954c9e44feb43011ecc172867243e74a42ea93cc245c7c9d028a10e791a35eaa6154577eb91d0d91c216bedb48eb7a2f30d9190401c2211d355b697438265ccdb3722699bc15b6d1e49987038095daae58b6d146a8327c5221984618856877c62aa85589d5417d3c01978157078fd2fb03e7c8d26502e37ef2a6d80ab12215d77dd19085be63a12a1498d388ba2c76ae0375669563053912761a4fdeb2c8a41b5a385a9ecd0d842d80993b68eee527abb0dd5c833a2f9e358b82d2a106ed5ed148e768497997f556e7580b6d6e5ab04b24da226286b8b60ba775eba92140003a098306e02b10257a714418aa27efc0546dcf7c0958155ecc0d1ea73168b8be76543c2bbb9ccf180b8c425a40eb63b091b2f120ec4c59e2873d6acb7d38cc01e7ee45872d52f560f243dde3dbbada92bd6c1382e78e97d01b9d904f3ce3441db73b2fea09dd39d4183df090162b4ec56a450fa76517ab100111ed22452023a60b629de5259625a64b3305dc1733bd06ed7c21ad73846351acee9724d0f9d628e54992211c00931247471126305cc4798775fd03aa8e7b4f1252af19102ae6ca54cd327e1e2ec7248c216e18bdf0e0f3aad843a7621d86319cab0dc3e80c0d6f6a930d4f1e03c66864ee76eb348afa5aaa155ed05440821508a8e4d93a95ccc982c7a4aefdb051f7a045af6b4b3f24024eb38b8c672eb49ba11c4edb2547c0b8861d6f594cfcb83debc8ecb31c6f325ece2ff16527c421bb9c70b6b930180e08fcee049dc67339054096d9b8bf97acc18ac3fc5ce2015e86bda44723051f5b9c5f06d62a4da9e5f702ba60d336cfb2415886cb42b3966c6ee640ac08c82c65432f74ccab539e3bd0b42ef400ab8ab9b391b0c326ec42523d15946a289e58678a054c284e2070598f247c700938cdfded69b35fe736a5b848bea7060408526254f4626659ce8c2133f2558d3daee2132ba5c4ecefd8253e21a2b0f50830ec220ea8cfed16d59c92ec4557b3d4332e23d0ae54357321848de05f2e3ba508554c98b1904911a2de102dd59b1ada9e392544a9691684cc957aa29f04a04165c81b500185d714be0e25f988e15babb0a2b13aa33c4c12a700059025f44e582aaa06c2628555745a1eac5d6422b9b18dc0e3d4476654576c6eabfd66496d12dd201135f8041d2332a7476a7b5e9fa70b3bbbf0081732ed12271c4d072cf355945d0c6964d74b1577ad4329a76cbc6480b46d098cc8e6805424719dab2c4275e6a6d706864f911532f5324068d86e871fe793299d12c26290cc6375d1422e9b45d99bacda676a60577ad677385d9eeb23e728357f114f6adf20b60eef73c86198d109a9916a1923e3698ba81337e9b3cd3987dc0b28d10d7ecebb14755a7db25da657129f82205d524fb008930275a81449ce09cb392a6eb620f92eba90e836ed7089b878ea8e344843a9163a672b820ec67d27b71c8007c4712e9bced92d697988e3862237cd86417c39990e4bd45044d2f5214a2cddb84a53912dfa6843f7e55e2a8a565eb8c0874d7acc31c2b3935455645804101c4b618a5c8e1786df244595ae74172a266585fb4542162b3e6c54830da4c6aa55ade87718b95b0f65500eae83d2287f398295bf85166973ee7718b75b0f55506a815030b6b719356151dc10d8c3da1ec5744a01944d80052b8ce2d6e45aed208e262e4829ec48162bd6900199a3aa38ac2117522968c2b2ce6c79099b68f6260b655030d960727c92f360e64d72b71ce719b8951bae045608cb9f186f1b6628cb14869e482821d06cba9e570abf5f7472523ce3b836164770c89c2c5cfb40a85b7f4f59214f33d86ca6a933f3560dd7208700b31de08ede0e470fe0c3e3480eaab5ad2f15aaeac7062202dc0a09213ea45b5529fc0246034595c913966ac8b13c5e324e1691a1da28519bf4e47624cb7d8e7681005af5f63249900d4c40e2cd4319b46b97c7ec1d3c34e3528b50805007afbf60c5947b048d581e5a9c4f24052b6e43e1f1e9a28d1c4c8f548f205158983d9e8baa870e848d2ecbb20edb6426a163304ab8b354fe19d92f40c5397b60b5b4fc8ac1e53ec36dd4427b7ba30ef5a554cb735267b5176eb77083fa3683152712ade8957bb2cb9e2a8cc43c9bc199dda60d3361444e40000370934df1e15e20060a9a65d463209eb4a5b85c801d5eedcf94900cc5ae6168bc3be3e6b8e6cc356bd749ac48887132b5d409d94c822e6a0f25978608360a489ae47e39cdc5816787b34d1bab243e8884b044077d6fe2314962bbe98c27e12ee6e71396eec051c50777dd1a9949f7d8223809b7c8676bd3189db89046b9198ff0a1d9b9905fe2e6219eb224f030df2480d305d939144ea49a5b2099355335d5627b170a566d39cd41be4b47616a3d23dc9131574767a4e6ae658cbac0d0966c171feda8b85f012cd37a0d0f88a4088c9bf272580433767169b25396dda5e4a84ab3d5af594d0b92d43df7aaeb8d877dcb4b68745804439b8d2398726a7ed89e713c589d305a639522b1ec837b38e60068eef22cdfe508a7d8890e036c359f16ae22b85a704e126e8c4a05af88e22009ae112ef9e690574862c97bc181a7639e4514b71de0e8e0b427bc1655d73c6f282c0753686611f1bc1eaa4270b8d9f27463742fed4ed8b540b4e97d94f61da2df2329dda0de2a0102e568ae2594023538efed7c4bcd744d7bab644cb04128a040cbb3824d23ea6c8b9ba417463e6631182c43e1686ea076dae03491e203aba86b17d79023d698d566336d39728fc14a540385074d9c8eb4ac0e1ab54676db49034fd4849b4c01f1b8eaf0598ff467d85923d8066347f764a8ebcb05778ee61ec5eda589037310d0b699ce7c99cf19d55e2ee020f378973b2614e2f8c15358853ae8849c407b3494473ccbbda255e48639cd8ec88089d34af5b8380b7c0eeda3be55b5fd85a03a0e32b3f0ac3404d76becccc068d112782a4ab9d3e71428ea08031e7978572fa337b655becb6309f442e2c834fbb1d8e7086862a818c7544d607b5b6c19eb3c027142eed1c96977f5263466a46e7bc3e582f81404e75643c452408760d99b44cb761a5c313055b85c1889b2115ed6d8ac9334c81d386e156ee4827072d3946743dae9be4ff54c4ed06e32ae4312264c1c72a7165f04746ae7632e668c000dd2c2d9e646199733c02df27ce2e08cc17da820a5911dddb6ca56c7422448cbdc22272cea1533ad002d609d145165f4c0163d112be09c253ab8680e24ef5806cc4e49b8c1a1cb295d6f83b39bb96708330c324dfd23ca472d7516ac4dc780159a1e595e4abd31d92eab0d2b1612e7ee223b58ce2d904eb2c89a54910687a304a98672c941d058ed266dced41c54790a93f478b5006ee61aaa87a94d4ebb366d1de866e1f9dc04121ddba2b89b032c87c580632f5e96968775c07a2040c752e0ae24a93d29b4e4c51d01a83e85ec371d416797683f2b039feb10d451f4ee94c7b40c91560eae1306e1ac34f64da62820a1bea828cf066eeac1808c2d79d6e25aaf55a7637b713d9471a15db34833a7cdb59bd9b5d59556ef3b67035b36bb44d825ea3263ebd6af68a460967043c91d24ef31361e4edb303e9d8ff2c2083e07e72d7339552954e41e0910a3000f0dbad06d4d4b4b4eb64837e323db5068c8792cda379c9248e8aa5d8eb998bada5402ee2eeb18462df9956291317adebb5874086c20f1f75035f5b4a0d051bf332ea6c62d071fde2eae91afa39e00cd7c4f893104ec1b099110a68dea9317020768156030ceefa5c45e5c8b2bea4a2da638cffc4523b5c939e11d5ec856a15ef62c889c5b8f20103ba0833a59ec8554f5722901bfa52fc639a1f4cda4b19ea1c6b2091f2f4433977e503bdcee08936879c0f734ee47b1554b0b278a1ac01bc3cca438541613caa5c87638a6d26948d7164978e1a52ec51667748508376122ae8a15761995ade31e5aca3d0c453dcd835dc612be670f10789cbb22f7b2d1da01b100e31d7e18f78cb0ed957183bbdb3edc373081d13530c703bb93e9559c91e6b50de2f45dc599671033b5dde8ce403d4a83ce41897b16a8a966b1a12307119568752da7c53cadf4b2370cf4b8a35060b5df8f4a78bea48b80cca4ccd3105260a140d0e72ca4816d6e416724f7369e736650e5a4ef88f620cd593c38e41861936b222b04693a7bad14430e923e3e9c4cae17f8134ba5ab681bea349e270d6900dc5684d85a921dc3275074a5cc3b95f383690dec467257184c1c24d0263846f961264c4cc3aca01c009c26e0cc8b76189947909e6d92ed30aef3e0d095cb8c4822b752e783b1e9bdb0e7565ccb775c305230bfa5daf5a44906e243f814da2b103ee2f8256b700c8212729d894b661c27cf359deeff66efcf9a5cd59dbc51f8ab3cb16fabd766321e3ae2bd303660b08dcd3c747474301930a3196ce08df3dd4f3078b6ab5cfb74f7cdf3bf58ab8cf44b2165a652a994901cec84ab2ba90811c620861b9bb6078ecddac997005b058a0c2255af45c7e68ef496c6c71e2c909eb2fcd261410ba12c5d5b7bbb1e4b51c2f01aba5dfb29bf33d6b3550c7008b5e5122eb7512af2f3d38102c635beac6dc42645a046d6a3e9814eb839e41ed7fb533246b29344248b09e51a283267296519cb9ba5994db925ac03e0c84375649ec81aec9685b1330d3a74e66aee24b62d79b8b96707c258810d6163d0b87f08851a655c48a797d59471e6ec2a960ee320047663631d78b6a954135a2b4ef0f6547ea9d05c984ecb4dac42e3dde6440f87b97c40862e42ef7da9f60b7b3a8ea90c89d6135a97a25c0b614ef0739b8f70a15aa354c42d85ba1e9615af84f99c0eb9b1be1f425faaa4d6d5125de2e57e89640a280c17a25f4c86fc443845f6984bb640b85909ab1ce01884312d23aa2a22d284b52dc918ca0cc6a720a2b140a981b8ae8f5fb8bcd9a8f2760de6ea28a5b4fd30166d9e467dde9eb06ca81c410b874766b226e01d6500358e0c17a8bb981c07e502d0caad85aeeaad224311c903eba85c1c40851a881a24e2e334dd917140001482e7105f2d72ccc1c8016319e32138dde25c7514a9a1e6cc276b6024e2eb793225b1d01b23d976be4dd55037beb6a5ea5b27ecb422b4dd683820304372b1a9048f490413a63e952720361b61b3427200e620b33c52e30ab465d8605c0c5363a37c6ddc1de54de9f1280fd4e92ab1414e66c2c5891ec02e134cf804952c801bb0707d9cad06c23e634fecf0b4a4c171bd9be196381a10d64a1fcaa535d86612eb4eb64035f95ac4b931759dcd112882d9b8cc042cfc8acbe8f4850ab6c0432a9d2932c2e7cd5c3c9ace07c11797d293643438a09bf169e49b76bcf32b6ef155232a81afb42a63e399fbb54533af72a1f1445a399b9367725b6f11a3fe5c9b0eb0af4a050591b24794a12f0674616c376946eabbb57c7220875cae8eeb6d4c029a3835628fb2dc159df21294297b0c1f6987c0a8f763ca2b77ca9c02e05dcd6734b9f3b82db8f38a8497725d09a36093e21a1ca0aa49a30b1ee4f66bc55a1c416c8aeb2abc93821533aea374be8716652086274ca17267a27bf2c8aa77a68f0c6587196026768c0c2cc76ceca8ee704bd473c8b6c7cbcd629b0ab09a14fb1d19aef80255b4bd1ef98be348fb3a4eeba95b5200651f2c312c8aeda0a8a4f9c93a2d210265b6f4c4d8b80e222648be5b878cbc450fccb8fcc2776322df1beade81f041ca4b63ff78d80e20793a9e85068c03a55c3af66804efea19292587351fa0db956f0ebf2a5ba527169989a3c120dbaf423b5ba8f471b0ce4ee04e01a1e86457b22a4ef115b65e4f54a9e047cb2f79454d3cb8da2d90f16a7328c72b8a314b446068cb71512da2712016757bee4c4f1b9cda6d0c9849b7d1969b503374b95748f32bb285c0f0e69329b5d8c1d041e1c619166d10737e72dc6136766097c706862fa8200fe4b8b717d53537f2f2926469441b2ade58f530db5c7b04ad10de1c2d90a932f521c983058b21a37486060a67d7237f66e7eb6cbf1b172365851b0e8eebb2940c7c8aa966106dfa10eea5c8809de909c446db626c9115afd65f01554234c8a8c8021e6f00d550a9134e84ccc1365181af3376f635c679545c42da229360d61d2db5c8dad265002b1b8c10c6db2d06cc8f53473ab89a3fd1490d30238bdcd11533c05dd090fc2335895689b291c489baa0b633c41ee6b83070878cea168e3d07cb102fe3f46b7ac293e19aab0f33e5a8d5a4ae8cb7d2620acc03e9ab2a461a3845628fca868c6004f98af4b7652457ba822bc72f9537724a2dc9f562329963b619ed76dc340a2a23f076f37146aee7536c9b268c332d7883d824d17166f9509c12feee3415f92d3cb62c5638adb7d56a55ed16e1d656bc74323c45aa67ab9a9eeff8e58897341ccdd1d942c3cc1aff12309553fd958d885b633bb0ab2db69b52f3ed8829c8ad1a167c8e52630716721725d20009e7fb39fda5c9eadeaf862b7cb9f4b0c91ce29901332090812220e2da394e337b40194302351ccce1c12f11d7e56c3a31813d58ae3245822c7e392d3982fb3a31030766b7bcac6d26c70dbe93d87c0507e1f80b073265ca4fe9f156c3a0f92a198ff73b1d8f44b99269c0622acc62617f4745b552184783e3cbf0b80cb0c11ce513683b1b0e3dec6ba04db6d1e8b84e19409266e568b002f4ed1794737912a7c22cc70c1a41d7e3728200b3f8a8ec0b01d988258694e67e3f3436aea905f57192c1a560c7e59676b92828f274b2b58af517b8e487c37db084e210b58711904ae8b040bff825ba1cbb335e00edc1919c6db6e166846d9700335bee72336747278b0c96c1621af9263edad841ed231c19aee775212ce8822cca2f9e9a2003c89b116631164469921f86a7dd869e1199ceb152352182bd55e69505891a4a4de2208e269bd572bb496cd3c5c26a55d9962c8cc223b1dc983e80ae169b09b7b26a6023e9f6d6027df8604ebf86c08c32fd09923b0bbe5a1dc989166c8924d8f0563d913607273b2d680d2d7707cef7d36aab6d2802842a0d5d65e18867076e21ad319dadd77a5c2aebf16a431f436e8896be1b14cb547767a5a6f92c6247bbbdcc87e8ca74be38ba4e5623b924bfa60828a0f9d89f50a3fd761b8e155d1b2a9594b2c2cc3894db6533b91c46954d9e6c78b95f6de71eb7a5e6fe504b87c432d50464bb11787ac8432be2e0a788b9c18ea4374b330c8d87dbf10e5d1fe8352a427b270022741da27bae3ef24a965412b8e2b73bc436136cada639c71109f225c1ca91a1b31131da077476b4a39c43964102a25f3413a2ceb1c81378b9d645330c8971edfb5658cfc290a0031b90a44c2c97d489c73721062c3938807dd4d5205b1f28f12127882cc943691f1c1924328591c10d39089482749b45db8dac07c4d4667876b75a4e99a347a3117a742688bd3a0cb321a63b5825a93e54f12865fa56c41643798214d5201e8febc381c7653fc8449f1bb9565eaac43232153f38b1a235ca0f297b2c96e3e946087d8194187144e622b0f2d31823041bdd7ad19493b5a38c79fcae46172447d3c76428a8793ce13810586ca5609eb9003d07573cc98f8889bb4b8ef632d9a3a23f1922a7ed21db57f2c49b10eba36f55e8697ed2fdb29c8e9d05b2e225f870000f847454c61612d31195226c82eceb5a9029c8cfea6a075babdca3b852454789a5e0d6d7663a88749b55bdc28729e3e4a699104e841120f8def10b0dd26db1a7c607581057283373d9820789bcd486f50c5e50c9722202f2061ee15f908b6808e3e4e55cab965f638bdfaabecd09b40d465fc472330686a9770ce7c72d93175333900e8157a6dcb642373a27c22b7fc28de86c527a0a9221aaf4b54209ad50e583b82975ab660fd18a4237ec8880460856d7c47a3c41a7e390e4220b3cc4b1949fe0b16ee18b5a18039530f20f6b822976205240d34c9f22a5a4d135542fe9d21516d32134c0fd0265b291ccc74b339278199d99fb8207be7664929b9e1068746622a578b4c911a1678b1d69fac2a91e7c8d72756f953a37ae9181e521242ce4e229c9033a4b2c4ff61ca5907d7eee3293a3efedb663592ebe10952b47fc82a63dc5374e8341ee6a4b2d20cd70c68d6a3e2849e52ba7d305a7db4e6d56fb6daccb995e0552784ae504a500cf20cc64948e7d57c864646fc58aa01e68013d28aa9404de7032dcafc621aaf1ee2892b04c075375ad8f098ad9692348e446d6ae349d293290add41241b6586d07abb13f00326dc80d58841d509b632cb254cc13a907a4066928e1245c62dba36ab0f3c1c8b1a5893ef443139c8da938aab2058a78488de24aa485d071ba91416e35e61d4de1f7269cad72485ab01327455623132fb5456262243d5a50a325a9cc1695466adb69ea04aeb2b28dd05002700e6bce5ac5488c9e65d1169bcfa735a92d47cb033c2ae3953ab3c4a02ce072e924aa84a636401b50cd6872894c6d7e8185276a40fb866d2a1a91cfb3c8c5bdd5e4449a5319b3d6f5d1a8977ae4af6d17b74929269cc9c8090c7c3cddf0b2166ad978369c1a8ee6cc57fcd1b3b1ed3476d60833dab0fcd7092c02cf9c4ee6726d7ca59855068aac81f30116406a2906026c62c51cc026e4e09441ccf2405763773c0dc0fc84fb28b85617594d56767940d260b207a747763a4ef2388e606a342f165f453d82b78c699c583427b790876ea125b77567d86210badcd49bd9aa3766a021166385961b424da2b45e2ad6486137639fd7e6c51c9a1d3c65b91187a6bd1e6b7b6357af517c401f4129dfed92b1b45dc513a6962b365420de8539188be7f39aac9cd084637a0224d569f6b5af368896aa781caefcca6c43e0cbd34c9c06ee0eadd9019c21db554c9fc6d870ba75a63e4d6fcda943a3e12496f0743288f37acb8cf0e9f4aba22de56bb39b1a8e78a250de5800da74bb9e02736201e2ecd402d2d0c0087a3580394010a74414cd00b80c6780accd66b8274f35671baff64a3ef6646c6accece96e3a1b906b0c9b4a272cafc96a2ac22ab00449f42b5b1ccd2d4a33259e4dc0f978beab56ded4e60cdae591fc4b87ed31662d58617030f7652c0f80e9dc519ce9621aec857a31dc81f188969c398c21d389b3c2a784c78ba3c0551628b21e2d8921b327cc998ca9fbe55eb2a7155a67b95026f27cc5e1595828425941537306f954bd36245fd5004cc00e1a2d4cc59a1903a434dd0ee72abe1bcfe6db912832e051e24e51bdac6b8e308f8a0f3a0a912f622c9a6aa7ad3acdea21ac85129a6ae53ce1164365e36f586e460db616c89fe4e810842252972490d3c934678794a9caeab65cbb88706253f99087167b40a673278286fc5623be1036c7cd13634e17d10e2971566217340b2d05b22605488ef78711bbd6a7b647ab8ce55327ccc2898ad1eded10b055ca8ad7721147a7c9c9db7c81d0cc5cd5e3053b156aaa0c96ab0c93a793a9559ba5e20053b9182994be1d0b528d6aa3e36e7e9adb53602a3bf3dddaa0629f95f8f9761ecc936db697377ba3a4e509a64ea519351404c4d88dc46cca25a9e63869b607e219cc2013eb044e472c099a91f8058d21a21cf984bbb4c000327c7fb9960dbf4e67f0b4c6562a0245c28e0dd653afc433703da991b1e84f89af213234a7880ff040bca31071bf70210fd9cde39d5a6d37780e95f472bcb7d911bd17b75e6a1fc7ec9c5c44a39d80dacbc87639431645f9fc7d3dbd941c6626681ecc1d7d1f9a0f8a3aa897c096defa65b56368c61fbaab0d44efdcd01da15524258cb71c5cce3b80aa4c9afac1bab6a848a3f1f1613d83eaa3bb340888b4437835308384cc5246170637e746c42931f751ba5ecb9cad0b8253f0104dda030db5f91dbdf231478ccb94d96fbcc3973803e3ebf7e58e5bda34ba07072565a29694d00caf0e685e5e179588d4cbf597be5f8f27ba8f27f9f9ac88785f81a3f9fa6bb703dd25b88de7e2ec80645f82239f58d055f913576c563a236be85858cbc73d31d3215f71643831a678c6caccdad44275c77f55d7eff0fdd8d958612d1beaa0a6315172d36369b996227c6dd7112899e31d5cd0f38844c93198880031f8121442ce95725125e5f57c8b433cd3d7c50e38ccac2ca1fd7c9f106452ba2594557b61be5b78f335715aaf516226cec7f8784a54dbd344d3570e8bd91680a22e87f5e758ac444df4e0591e9491e85691e6263bccdd5b88626dd7a9e86c584a80d29adf0cf87151d1b655733b71ca8b0b030507c38b5c287711c4fb8836c1f06bb8182a28c288c11787e2464a0f4fb278e017f40c8cbe425a91c7158f4c667b1c0718d62076b8640d0982c8dcf3f91188644dc96461ba0527c3027a8824c5cf786258f1151f963267801b7eab4146ec0c3853b04220a9422891aebab5748bd264a82841021951ed4af8e20cdae1d23aa28728e8f128bde2a783a89008aac8217a5bd463c4436becc014f42ad07159b1f2d39c98f8072873b90bcfb985982e026b6451a39199f147ca08f4245f1ad478e4d2b44d26f39040372a11a4123055d39c90936069683d9f97d430108745429b8b03814cd6595df3e0840fc17c0086f06a391b2fe4a5c8a0d904b268dea0cee758cc0951da621a974d639cc0a32d520b5b6636a5406f10b184497a5fae20d7437666d7f6861b9d666b9f7596973a6fc543ee42fb920c150d8d47e5a042a4011100ce66fa252cf6511884b34a9e9dfbf48c20275e01e3e402ffdaa3995af11aba5cd3f9cc0b4fa10ace4d6c36b535345e9e48d308f52dbfbdd1ed387661cdf0057494ee4f399d265614e6cc1e89e0493ef6aa1404aa5d42adb2632d6ffdbcb24752519a9e3acaaff51503738c259819e1db9d8c8f2ae09450a3c150f50a089b6932102aeb3c9f45741226dc2d6fbf0ec1d8c0d18a5c47c748286c9c174604bd97618f8bb8c2a96230d4f560b84cb91b792ec5c31a2a84083b78e5e0e4c2920ed16b49eecf8168f801b903031aa90a339ac13c795a0fa6e6ac984d4b4260a9d3623d15b454e3558fbcf0c012f75bb194a92f27a57396c850009a6a2b483fd7d32b76c094ada73cb8af3df160b4c7ffe00121f87cc186b3d95fff9d47d665ae11eba9f5702ad6f727d19d6f4ebb3db2ad3b770e8606a3c178000da0ef8e9f1bfe3b3afe7b00c2e0188586c3dbe3e7ba03c3de9d3e3741c0c96474397c0e3e1f3e070dc7a3d13f387cee7cd8dccbb3e7c66f8e9e8326e753e206203a8046e301f4eeec39687c85f68d7d77f6dc6be86fce9e7b3c64eee373d242dd8b5e9e3f0738316078d11d4d7f20ddcd4bfb83e9fee3afbffffacfcbc9749d1cef0fa6cb9aa7ff63d9891d59766456fffe7f6eaae8c44efc7c57cbe568baff686bf9777b326ee23bb6d5fcfccf9ba3edfee3a7f69e55feaf77bdc3f58ef6df4edc1e0dfed73fbf15ffeeeaf987c387fff37cf8de7ffc6514bbf6a866a3cadbd3ffcc384c523bcb00a3f612f83661d79f8b7b4970eaf6ece2cb73dddd266cc651ae7b517b31bf9edc25f4f71b5c13fa9b34af779f7507b75e7e007a57a9fe58592f71db66f7cfd66da6d5de0b77be8dcfbc7fbc5cce779f7073eb9275d2532bfb0dec72a2ed191c045e92b7e70d3fa4dc1e82abe7dfe5475e96db3725b8a17ef37473067864f52754bf3de9b6cf082df4fad01fa97d7e3207370fb7fcca5c1dba7beaee32bd3ea3107cf3fcf0ca3cb8114b898293fb2720f1dbf3c5edd0b09bda9c2fc9baf9793e8af8f27cb904ff2e6538b84b39df4d704931b3e3eda3131bb78f6e7bcaffe5719fb527bd5f6f466b3bcee5b16c0fcdbf5cce6597c9516f54b1bfc7f8e95669ce8eec651ac71190e7417b3dcdd3c5df866d1f3d1f881eafb736ec388d464062a77e061c0a3dcafb5b356e20b999155e6e373face6bfc73b7f4d3b6b8666a02cdb93ff1f5f6dc6a69fc6bae95ac6cbebc29ff35f5e7ffc0266e869ead91f94d7f7f9bcbf62ec5bac153756f7679c9da68d5e7c828bd32c313e013edfa8fd02e77a51deb9273f42bd2c2becd66ff809d958f44f3899dae7eb5dbe8565face3ebb503f626d338eacfeaa8fef91b9753d7cfd7b686e077668e769e5dbd5cfe89397bb59ae3f5ea77d8b0c62e77bf5496d4b37bfe14c97ffe67efa6f8037b751bc21c8ec284fab3f8f37d25bfad1361db7bde53bb14f40f3df13c2b302bdd6dbabc0ef6f3f7d403aa9b7d783a30eec4ff9d39becd04b133df34cc089adaeb7b5436ef62dac19a03f40007a9aead5f9b6a2b7d83cb51f2f5c7f85e82d77ef2dfc044e6dcb0874d36f9ebe85b777addc23767aeeb94096a785f9d8cc5d50451110c5dea3f9d86551dcdedb7efe719fed78d19f86b9a96700d9236d93e9c45153232ffa26abe1403f04be85dc5d9f92f5f71efc8cee87b5b7c0b471821f5c4927fe93047ae5a471115940109b7af028c79710c02cd2b4f1a8bfc3169177b4d34c0ffeb447cd077a1e7ffbfaa31e785603028e10f808348add4e0f62c0b51f2fd4bff7e39ba7cbbd8b3f39fbdf03cc3f8edd30d0896f6e2bfc8eaa3114cf16ef1ed35e35f80808f4e8d5b591df403e29a6bbd5508f9e84f41277be2bf123f0e592c44774ec0436e0c4dd15d1401a17f9b3b2c7a917043a70b28deb65c5d7ecc68bf1cc384dfa77ff09d2e2670490796112d8cfd8a29d4d164994bccd002c33395fbf6be78e9edb27bd827e0787dfc3db4b66de676766627d931b3f9acabbdccc4adece2eaff3d0eb056f1f011fcf920774cb6aa67dffbc80ccb6ad0fa82f78d3d53fa9ee151fc48fdec30f0471b40b3c33b774e79764991d65c527ac782602765ea49f2f18fc3db5d35e90f30f08e3fcf81b424bcff567dffa7b9a9d5e988f1df9070a2fb54fdd4d3d1fd3387196799f28fc0345ffe7855dfd813ad513f73704cd101cc696fde88d7c4fd5e5fc9e0228f2f257ede9738ee13f22022cfb18d9f9ff57eaeed6bd5fb6d7331238799e9f7d4f15f677e5ff025fe84162dbe9d398f513e18be9db0f24769e7ae6af48a2df75b0243efd069eeab91d78617f43d6e7647618e7f63f684de616b9159fa25fd1447a92b9f1afd890257a1f47fe9824d723e7310cf3090590e85510ebbf1ae97acacc746dab08ecf4c554e61f85969f90806ee6def1c3c1e74c12e9419579d9e70ec413e565b5e79f10775ee43fa1bcdee3fa296591c7bfe8f9cf5480e565667cb41f0329dfd21b7a14fdaa9a9f3a466778e0fd0afda11775c65f2ecbfe90e0fe569c5f11fe5e8b7ee3c6f4249f7b3167825f38313dc9e73ecc9920d54d7b5704bf31983d69103b1f3a163d413362da473bcaff11a51779b9f76bd9fe7ad43dd37517f8057af5bbd77d3e54f514919d9fe2d4b79a57fd82ac69d16fe0719a9baefdab0ef8e1107f46b737ccfe8ec9491a8776eeda9fcd787aa2ce27e86e7ffd1dcdef85f38be1bda738d9869efcc62c7604ff7084e889dbabbc7e4df56b7b744797da87c27e8cdb7e42eeda7a90bbf5ef09fbbb837f49d5e56779b7e6fc4be24f7dfc07aacbe59fbf246cbce4ccce3f7492ef692f3ede3f20fd85e37b4f79b23dc7cd93343e7a4fc1df173b115e3934ff88e85510f367d25c8fccf7527945f4adfc5f117c6b96df11fc83d6b4648d1beafdb245b784ffe0bd991ebc57937704ffe43d76609bcff1e24fa9fed11bbff5e9df937cf82e4337fd78f73ec676c17979a867efc7e90baecaed6ce705df198b5becf753bf33d27cb588ff0ad73ae72f63faafd0e7cd389fc000e3937a3eeec7f91e6ee976f8413d9b71b45bd42b521b70ecc84e3dd38cc3444f9f57977ea48f53cb4e6d2b7c0cb1ff487828ece2e75e7d4f93ea911587bf7f57f68d07f09a2277533b73e3e01f34eca407fe07ea7abe21fe7b543b93f859537a297611eb3cd5bd5f1135f5df05df38c24f146db53e87073f778b0bb68dfd7e0e8f8dbd6de6591ea7df3923cf649fabed85e673edbb907ca27817f0af74ee42f5a1ba79961de5df85aece40ffd830f36756f6b80ff5f88c0ef5c4323e46a7b1e967bfc07f66fe7f98989f61a19e66ae1e7c1b31bfec3eb5f34f71cd3cf8531c909b3f6bc2f3ced717a0df759324d0f3fe56fb1f80ed1a7ffc73c3cfc01fa70d4f0479f07ee5ed0c4eed5de313fd88cbecf4a7e0ca2db4fc19d56ee67adae6f20a5945e667ea997ba16dd9a56d169f8cc62dfab3b1b4817ea4a52f3646bc417dd6a24695ed34899ff424d965edbe2def3128d967347fffbca8729ffd1c1eb9660079aa9b4f727eca074ede93adbb013dee04bdcd3ba5cf0b3d7bddf4133d6820919eff491e3777ec0d3bb2f3b6cddd864ec08bdf21723b4cfed869fac7d473d37d7ad31997a4b1f9b4b1e03117b8ee19ff0e95d8a9175bdec3ee58df3e7a9151a4be0d6499fb5faf42d67ea01759126739602685673df1cd8f74cb05fc588f766f339ab1217b9f7b9e7f7731f3a721f235d47edcf7f51ab67bda32fc1af7722f9c1fa771d4ee517cda49e237f3263b7f1c75fd14781646a01bed064ec036ddf89b2c20f42c2bb04ffaa3de5e504e1c8671049cbf51f80662c6c1a38979843cf5b14740e7153d60ecd8f2acb8614a913ecc48ba75e8264bb7acf445efbe028c62b7b3d33fcf86e30a31e328fa93d966917a79f5272c82dccbf2d4d61f2b7421683d57e331167bcd6ffce03f2f63a8574cf7ebfbdc3fcd1c3a7a5c697a87021e77573f018d408f7c377e8c453ee14c2f350bef43d4cfaf351bb7aa6172e83c2aca3b689ebe17d71df4c57cf93be487957db386f81afc621ef31af809e71b9cd7343f4b5e85753e20f8b0891fa9670f2dca4f602ffdd2d7d0e7e0df7bdc87ed69a02f261d6fc04f7b38dee05ebaa6afb1a96dc68f0ba3df213f6cd7cbad9bafa1d9e327296f618017b5f6ee2366dde23fac74bbcff8f9138927f0a7fd2c4c02fb271dfcd94ebed86afe1af3732b3fd5b60baeddbbf9313869ff741f127e4bf1b31e6727fd710ef684c91ffdef67c459a07f8ac449f5a7258c27824affd16abcdcb7f0046afe35861330f4ecd1a97c0f4e9f1789bf01c745feb82ff625fa329fec02218f33b6cf687e54ae7bb2e49bce1fb6decfabd0f60de6bbae1366cee3dce121b3abc87bd037bd2eb2f396b3eff253bbc85e7c47f502f0e7477bd2f96b7fc2a2b4d34f3cb8dc4c7e2ef494fd8c69f5fc69aaf2abcf869fbfa478445c3e2d799eddbcfe06f9130c70fe1af467e493217a83cb722b7eae5f6e37deb51dea51f41c8b0af53c8f3a273c8853dd789c435df2bd4c7f9a0335997992c685d57f81f05fe7ef23fecb2e733bcabc38ca80c4789e1f849eed3b80f5b8712ff47c2f769b5a3e2fa15ff3e2247fcc8abc183002ddb761e34fe6858f6c6df3bb8f7a5f663773f3207001334eaacb22c03b9013ff71e3d0b6bc47bdba201a35f9a9943edc75d283078f2d4cffe4cd64d4d0331b1d7f97f71ad274be5d9c867ade46392edf11ff84197e8f699f9f07d1b7b03fcfc27d0b7dfa94f82df479f3ef4be8f37eb7973057cfdc0f6180f9e46cbcc7a6b6e365b99d024f5be23ea0e9d4f8d764ad8e5fbe5bff1d6de6eac80744af4cfa23f0a8a7dee36c2cd6332fbb0ca82f57425f42ae76d72cd2a3fd7b32e71fd084b1f5d0c438b1a33cd5cdc6c2defc7efafef43d0e780a147d837d0ad6247ab4dfc12008027a94674f63dd53f69b8f7b13bd080c3b08f4b06ab7ef9871113df92d89efbcfc3a3e09ed5a4f1b33ffc7f276bbc03380feef03eeb24faedf2bfd5fd70fe75e6ea0fb80e05d7b3ea06c7ebaf9e36903cf94ed7a25f028d05b5c1727b3cbe4c9563da3aedfad7ab95198be9dff1da70e703a014edcc68aec47093f15f16201f5be59e6ee3d23bbec9b4fb73f873e8fd4999d3ade59eeadd0433d37dda43d7ae61ee97a695c004e9c644d3180f9f8b5df23e0dabddb463f80931d8400a6fe18b2e9d293fe108adb8cd4fc63018eb97b9b0e64e68b7de637f979ecdb8fd5b8c97d5e51692c626eba29101bfbf24d566e67edb4e3d569124fa0f069e7f91324b50fc5d37a47de06efdb0d707fb22a6b66766f0051119ac9632f2c9c38dd375206ccd87a8c621cf5a0d203bd8d4577d1dce760ee19b3d3b33cb7c32478dac47872abb4c802db4e5a8ff63af6bf983d957a54574096b97f74e712db0bf42e93b18d22888b6ca51b1910daa91fd8796adb373fffb443684315ff6dd99697fd6dbac0ce2b8d62f790e857869d0247e44d32e0a47191dcbaffed6af279eff07b8a30b6de0112dd4bbfa1efb30123ea07f257a0cc73a2eff200c3fa21bf0b38bcca6f7be6753de015a48c77bd97521a1da630ecb4b5717a1e875d94e026d1f29ce7942b572dcf69879c1f3037ebc36f51f1b7d997cf186f00ad22dae9e3cbeb6e69ea3e05e8b4ff45c6d5e2dff58f77a8cb92cd3b805d7a8f2d69f26b3d39bba131d05bc618381f0977fe79b37fa84bb5e24e22d7f21b5396e8a91e766a00247a9af50dbb3592f1d522b6436b5b91f21ccad7cdd0fe26abdd8068f626ef05a69fae7d9b9bbdcd8d4f3baf73de5f6437a306fa2ecfd54db73f59e49bec240e2a0801df9672e7907e0bb83d0acbee05f58cbff18a5fe45e8af8a15acf6762bd42350e67e224dfe7027a1af64afa1e63078e1e768ed977a88b43f90de8fa8ddb37a00cf6df207e604c7f9c4cf7f71da69f05bdca7aab6a59e6029741ea4dfed53ab489ff9518beb5fb06ef47f12972e3fe5c9a5b5064e780913cd136c9379b031eb33c2b7a6a739b7eae97a7ff00b89e4ff12de4657dbde43878933e7c959ea471593d66645564367ad40eaf2f33332f72027b17788efb54d1accacedee863f2d5f38d327d67bbf639b6fe082ca26e2bd16d7abbf9a35f98313ccb4b8be73ed762da30e67933d6536e11798ddbd516f12d207a5142f9ba7795e7b3b76ee64eeda1247fdfc02ea7995c8f806b522e7af421febcfde63dfe3a42db99d9cfa03e44c749df0d3e81e7fd717f9fa02f6db0ecddf127063d53f57be0facda1bfa1ccbb99cbaf487e94c895e6aa0e3f83775e60374cfe05bc711d3e8507fd51651f601d3bf23e959c17269f8aabdd22fc2136497527d43f047f2ef72cff581c473bcdfa2d07efd1978f38de437a57b94bf859be77f05b37fb530ac7cbf26e0df91b9222cabdb05fd2f776baf98316dde37f94787f76d3e578aa6e91ef277c3bd2027a54fd067e3e20ea37349773a27aa2c477fef6a2737421fe63784150fddd0f94ef3201d70e123b054c378dfb99ce4fd0c62dda795d14fa3d38ceba10d17bc4392ef48470bcfc5db5bbac9b55e67788eb21aff6d1bb74809fc045fa5d8d80242842e33cd1fe0103b4a7957e846c4c60d86fd6fe19dcc6c53fe0c02385e575df5f7d8a77bcdc73a2f3d4f04322cf2acf7b263f2689ac6e31fb5382d8d8fff61dcd44e0d7347e1e78d16724dd2efa8fa0d74d00bae927ff800430f54437bcf35957bfa5ce3ccb36ce1ecd4fb4a97d3c1f4ff923b6ddde927e04bd5b81ff1c7d7354ca2f883e96fb95c4f17efb92f382c02f485e44aa7f417dfd60f33744fd94f30dc5cd57203f405aa6665596779b083e4703569cffc0dd3351688771faad8ab71f195c0facfe01f793fdeb505efcc3b0d4e3ce9161ef5b763d623fe4db13d98f36f205c5d9614ef5f077758c62eb5eb34e7a1a799193fd7d046f932b3d0cfeee560eef9390bffeedaf7e19bc5d13d6adc04edbfd02ddaa776a5e1f76ed467c376fcf056ffe0037a17e2fecd4b1fd7b8970764f379ebbee9c3f5fe9b2f649bb187641e88677fbd80634bb259dbbd360f5e02ea99bdcdf844f6d5337b2dba4ebf1c5d72947aca7ed1ad64dcaf943b89b24bb4cecd40b3b6376931e67f7cfbd4f76937275e7af0c687fdca5e4b17efb1ce87595da8e5d26b7a9919db7dfbadca6c5d9396c7e1b1e0cee9edba34eeea81e4be95df9c0cbef921fc229d7f42a33f5a06371f761c653561f29b94def77f35ce3cf769677ebdcefe22fed8e372feed62ebdf8dad73bb250cfddfe0f6078cef5671b2c687ff7a180d06bbb54f3a70bf6277aab066dc2a18873db4a522fcafbad4fddfe92f3e511b7f74834ffe5dd3922f7693d47ef12fbca5ed26ec2304f69809e999ef732a7795f1f427fb8cfa24b88ecdc3b57324dccfe576e97f97996d83c779e72abaf71d64aaefb95794e57a538038a2efe9f747c6dfeb4f6af7fbe4e0a2faad9fd00b22acaf546dcfd7cedfa0b30dbf5f4f3d3b9679d9fafad3f2f193de5f4427e4acfda93855f259bdd869bcbdcb167d5f9f92caade126479da1f2a7d3dcf3dab22b3ff73add9b5e47611b69d5474713dddb87c41d6255c0de2dd73b7c2d2a4763cea237ad75f4091efa0e1fdf3b87d6cbac55ffff6d7d18eac38057e58d2f800751329ff0eddfe694ceda7b8f30d16df816f574d3ec23d2f9e7c43e67661f56f10afd6513e815f96535e819b2e664559f3effa61ec3be0c54238456baa7ec49dc3e1df0161c04dba6b03dea1fa258057d9d7e0f8abdc3721eeb7d0db48f75bd043c0fb475c1bf7fecf7ffb4bb0b3fc722f515404419774b989a84b5ac75653c97ffffffff5f1754c6bdd8bce37273d5ded44c6ebd8ba49029cf8ef6e819f8ca57e88fff7bfa0bfa1717b01586b322fb783fdfceefe2aa89fef05fb7ffeedaff6f8acbe99ffd3f79001236b32b22c481fecc6163a1cdae8001efdbdcfbebf9fec1dd1f9c6326870bdb16c00833f5e558620e8001aa303e4f6aab29d1e643fdd5536b9dc55069def2a4310683cfe0777957575fee55d6513f072abd8640223a3f1e8e7abca2e8dfdf9aab25be86fae2a7b7332f9e30d665765ba413c5f5376bd95ec7a1b59a79dfd6564bda4ee6f23bbbd5dac433ff4e0eea6ae6b07ffbfb6cfbfed83175bf017256b901132a02e4f8a252926367c7da616546c7ac1480b27d572a1b9a687152bf2949973a8926bcc5a91f8c40cb252e1cb70abd0c63a0033b5064fabc57a2243e048adcbd32a2c0323b4407d9eef9755961873e824c38cb5c2279e1e4a7b6b869ecc70021a08879aa458e824510b8855880bfa689252652dfc428589cc98b9c715794a684f3bca7069d19e56af220c32612736a03c53a4eca4f07ed6fe16c0d306d68ea6e716141914148927024c1f349901571156190877b416c149e3d1585598ad05a3ac194e4e9a4283368fee55b9cc96249e199e1fd29e1bc8306a6d65c2300230e9cb6dea912c1754b241d685414a858670f1a60aea55c4c4baac81cb991f2f85bcd2140e32c38163f1e8c9529878151227932cd1e542ccb4a81ccb1098ac166cbc54a0d092d1bd450647c3c3c0e5ec8eefc16a414dd6f3bcda2ec4ebfb102a5d56773870ab4886198099b107ddf5ac3c6d057c64ce4bf0460ea7460e36d2e2ddadc21926018ed6337cb29527862a814d9b8b2d8f974b052a684f8d2d1ead4db24c54588c4d0fcc57733c5991e2c498b9d92a5a4f2ca2e57db253e8c05a4895e161c14ee9f465abe49315399ed8353e5c2fc0cc12204311f2dbb6660d1f6d38089724dad43d314309b414baa0bae74253dc9381d0a059e7b0aa508e35870a19a1adad92279b88ca8c79ecaef932b017d8d18cb87a13e593dd0def3529af94b35c17ecb5bcaa0457f7cfd9926f78759a50c234b366e8a5cc9d7c2a0c010a56e4a9506ba8e9078536bf9599dbc828b366c1c898a1c7252966a6178c77573df735594b8c50bad1b58ec686a5c292a1c00c09cf20c561f36e0d96c04dc44d960a981933b4da3ef6d38a868c900bb430283499f52801026d050b0c58754424c8d57092d19e26d832e419f0a9b0c889602de8c4082d5195cd90f67fa817c1a0864c1f8d190a1a10039acd7b20ced5aa7264854466c9e290f2a1a3b690328da7274bbedcaa6112a8085b68a414ea321adcf4e158e34f9e024d02133cd35059a383c6420a361e7edaf1c1a4e1a9f5ccd34e37e678687a6ab8ecf42e58f27eb69969d5f246e7362d8e6d7154786e1f35d92a8d6d918e9a8705b4a7b5ff56c164a7290c63c01c6490e28dce894dfb2a6ac14e2e3623642a4d26408d770babd121214f34afd17d2ab6667e76c5f5f2901a1b830566c4a1cb059b516d3a01190bd65b2df2c088a45c5368570dcbb6edab45cf87509a2cf953454754487b74ddc9cbbc93adc607a18150715b4772e0e8f2a049cb56211b5bb3b25891377ad2f00eb9f2a7e9333b1ef57419f597240a19e4a9b171c9e68a01777c99adc2c1448ba44245b8c48007b1c6073d4fa889c6aba1c6a33b05966a419ef8965c06db9b31a3b15b37bc6c754155a4cc5a80c3db3297ca4dff54c01b9a53a1cddc6a35a35dca2bab255f565d9dc60f752aabdb327e6fdfdbfed9ea9c3907bd154c9ccc19d5b7733ab1e0a0d0c809b28aac408d305785f3a5094f0a730e210dff0cc42c2c58f24c92d8eb60521b307ada2d4a43e14b77ab4c0b7321d5faace7f5629a6c903e6d0e55abc57462ced0da2083bdc63be731a5b56ddabe19bbd4b13943334d46238b74469a97a54b858a4d220f15deefea48fa1355c89b7162b224726b2964ffbfff85db85df79147f877af28f3cfbbfbb535c3ad7780c0f07fff3de3d0482f07f9f77dfd5f98d770f0ffee5deffcbbdffdf76efdb3e7575f1ed8a863585ae5b977e1fd7ab195d1b8854a9b05453fbc4a02e262e1baeaaf1f162d6aa8967c013d044b84a55a69ec29f3c2324724d597b9b20f31ecd1fdbb8e924dd94e3ad66b4af2a9c4b7927cfe887095e669bf4bdbe900a1d0cfc264f855dc808735a5bac9bbcdc40e8e03cac98159551a134d06406b248a91faaa5baa1d3792aa3223a30e14966855ddad92d6e7e9f8783e6b7b9a08f16396987d096f6798ad1d6ab1916da7c19ad2db2698be4b35dfdeaae9cc6a43775ea5d18a5adf34955e8c088b86e78c06fa64f0d0dec265ad4b6bb71b30233a2030dbfa377cd0596d94d7b4226d66426e54829d414bad264eeaecd6628d5965cb66dd29e3062535668c965a8cb65a675bc3ef4d853cffbb31bdffcde29c86568db99a1545a725069d264d7beabe57d509808e71a64f95067aa6ccbbdb8cd373c69db716a65d9cab7cd6bdf5da832d4f2bf716d2d52aa5a99b5f9cf6e538b9351c890a54a95e9be5c2bb01afe475453ded9b56d7e3fb8a80da673a99a72acb3ccc8bedd37ae4b5b87a895c3de0c25d7ea30a9a6b43ad10edf2dc66bcab8b8941915ddd7d56cdfd1f70385aed48efeec2a34bf8f06f94e473a99b4fd4b6ea68741a1216b6fe3d12e2b32c48a60305662b0152e61ac42ccd8aa5cb0128eb05e49b31286adf00013c460dee64b52fb5708b4fed9a2dabf6296712031d7719a6e9f6566799b6ef8f4aa4b0f66c2ac24589158ad700be34597e9707ec68904c681ebf6afd4d441644e2cc8b6cfbce8b47f4530cb0490c04451cd789198db3ebdbcad172b318ba65c1676675c556e5991d8b25529b12221b15519b02211b055b96adecf566d3d1236709ab2305932db776820ad366d66118ce43b8c20f4345c57f7a8a1e19a7a5425cd8ad280856e692d8cedca2218916acbe64536e3410293c5367d2efb5d3b04709d494d7bc575a635f4e2bac5f110d596a78a4ef33c37716edfb58ff0bbf28345f71c504d5d79b89c377f39df0adafc468e7c5bd7231bbab3268d53b8b9d0b787ad4a8e1519bf6f8f20f12daf44c96bf83ec157f804e37142e96466cd78af6b3f5f950c2b124c4f97b021d5f24107db762e2c9f0bda7a48542636fc01f1269d101b5d12b95697d8b32e8141782f7bbc93b5e49f792937f5602582ece8b28c0589c50a5c3765922cdf9449d01ad8f14a177b5d90ad99dcb68339b07030ebf8d5963917fd4ebff88e378b9e4734e7b57f036dd6f281d3c05e6e553967c535ca56ddbb7a9de1f8aefd01c7b7ef59b4f51398997cd10fbf95a30aaa2d7fe41627d66cc78f39e79fce6de4da368a9353dbdffa7ec1d6d24ce37bdd3bcbd1eff8638074c73f31d874ed159b77d1162ef63ad5f619bae339418b1d7dceb63cc98b4e1f1aba7cb6c2198c45e8992e763ce4da7e676172c78fb4a3b140d62b85a62e62d5d7654f743a554b1d7f45b3c1743ab1efd36074d6b56dfc9c278903d66b74d02a1e782bf0b347acdfc87d6efb4c6743446bdde98f1bb5b64a2416fd33b922088c955afd9024af91258ae978d73651665b594892d9f53178d2f1a1d1f7968ee96d08813da42fdbb65613bcb707dbfebdadade3c004bfc5f3b0d6ebe164d6f737daf0db3a2c6c9cd6ce79bd5c68a1e58d35607df52c5fe1dc2fba3e74ea6d1fd8fe15c4756b53d720a39ecb92bbb29a7e76d6199a15998c6de5d3caa091656bffa4d99d5e31ad0e8812bd2282733f69dfd1ea3f1837bc5ae9b87479d7b9bff17ca7137d5f5357e464c68a84aaf28d5cf153a3af671ba78ac47cddd8f3de262f41aab3775267df45f88a951bbbc737fd8e20d8cede6c5784857182859bfebac355f96c4536f591c44e66ed3b30b5eae8b4ce9e6d57788e898a86f7fc6f787bec7591eec7bdb3ec88ce4636e39a857184d8d50b6ffb2b26896aaf43e8eccc07a3b3edf355cf0f11ef687a5bbaed6c0a73eafa506f4b25ac7d0f2bb8b3151934fc92b92ebf6efb776f333b199899d4d98eb6bcae5f3031d7f7ebde86adec334f6a6cdecb3a135a5bdcda669255dcd9a3ec3871dcea9085d3c367998867f94a5dbd5bfd10eff5236bde8109bd3db370f6ca0390c0189cca7491c6588923bb7743b3ce86fbfd7808b67d5000075d79f095afbd8d21d4beef707d3baf7e8ad5b5f196be29af79ff79fcecc6eb669ca21bfbcd5f65b260c580b72efa40550ffa0076f262e2b35d12ce76b89393d48f19dbc6664a203167c0f62f668154572738999dc7a1b6cc6a326ff4b7957967ebb1f378dc3c7338b17e6c7bdf66aee3598e9dc70496efeadf8f33c7669cb9ed8b67f98a9d8db8e84e33667eeb6fd4f4d9f6757e04922c18f0c2a3c185474d7d5b7dba19c765a2d33b8598ad48a249c7aecfcc8d6fd8fb683234ebc75b8539bf1f69f2f2a6ade7f16fdef3f98211e0b60fce0d9caa7affc33d63b8ce9f19f46328ddd70fee71743f6ef4763d38f6e98a81b3b7fe24c643d3b6cda678798762e26cabe36b50ec307dff30410aecc62cbf642377bec25b9fbc991f05d43ef61898451998f3d7320e6a7bd7670415d604115cefcd42efe6049779320b4f0a8b940a6b460de58a7294057b5c555862440cd8ce1b49dce103662b045347bdce831d2d9c5414c9c4968ca614591e55994b8cd0320d0f332df276a9ed21cc8833cdbccb5365265d929c6b9178422df28e8e28c12e04d895cbcb5c4dcd414723095095b293223ce2a0a319decc9fafd8f219fb62be7dc5572d3e280b8a28c19e07ae46b28ef23877874e1eb5e08ed4828b351ecb2f6591e739547979efaa1a3b16e9068687850649445433f79e6166331f3eb74f99518eaaac1d839cb81a29f9144914da0c0b75850e28f2ca2b851c38ca8233ad6e39ecfc5e5a9b9d9c4bac617672747e3aa1e6d38c5adcc410e6a02343e0e85206a91d4dcf19e9fc747ccbebeb525ae6e87c962e79ec4a4394e0f53dd3c92d9d0c07d6063af3ae293f0897bf5f06bde89c2673f3369682acb3eb7bd8849aa92145deceddbb3c13ca2fb11785f71dfbb62e44099aa1541b70096bcaba0f5fbf7a17635cda4740c69a0093bb362da08b5c9505f7033de86cf9e9e9867e72cf7bf7467e586234f2bc8b0f3db4e19ff1f3a1cc937313af4a1e65ab2cb88b2ecb701ff3101b7e36b2beef6777f937fdecae9d37fcd265353649a2d26414e423e6684418795d0af39df7796e1b6b5bdef54d0ed1c920d378b7d214e6682cb4c0ac2e4b0a77b6445970b7985a2783d09a39c972e68feeeaf9a2df37f53123ffc233b3c242339ce4bdad0bb419d6e95c858146855d6360332cd31506bcca9b0bb450aacc50f2afb27858327f8939399ae2062a22819a78895139bbc5a9e9cbad6e5ede311b1fa9050d19de5d3daeb66961c59a3c703a7bdef7990aab3499f06de9c2d7cb92930abb810ae7f88bb85ebc3ccb7b71b127b74bde7b9d94f63af8aa3dceb39d6f6c142265d6fc9a7eb3e49f34766bdddaa2c64ebde4e365298922fd74f9d86fba729ee393ad4ebf280fca93077dee96ae2229d3c2a08d9b3675b21634a4dde36e962ee3a6ef979b0a3b50f393f3229e79b3ad023b2cabec5167aff556b0ded63ed75586937b9bdbf7b357315e19e602136ffbb2bb1540673df39fdaa4854466c2e29d4dd8490f36a819d7492d696defecd9ce3eb755aa571173ea9603dd64c5831935c793c77a5fe2bf73d051a009a2c9f4a91df3103a301529314369a754eedbb8ee2a5a3b5bfe859cbbad33efda345148f4c2f7cb32eda34eded887663c97483768ec61a747d85e959958ebcbece4ff32b6dcd46fb4bbb1634d59c63996dffa130cd8d8eb1bfbe21a21dbfb0541a155bdbd4198ae5e6d9f972e5b126ec7648a448fd60ccb0c98f03599cda86e49bca9c3d9669dcc503ae71fcd05dde85733be071a71ad5f33a618725077fde5d1d733336a3ebd2db32f8febf9d6f5e117637acb8b8b4ce6f8909a63373605bda57fb5b6d0d01bca032f5bb92ccefa223ad72575f4d9272526bbcb1a0f34a93485801a7f4b81c6f1ed18d9f6cbfbb161dedab70a4bb48b0f263abab26eb72ba830d1d8bfbb71efb63fded899ebf84f802fc6acce0e7f407bbb85e852c655c7bb3af7f17f47e5b14253cccb9846cddc56c7cc85045264d0fc2b2cb2f3591bdfb3d187e5b5bfb4b6f0423b073fa9dfbdac1b9e08f1ad1f92dde619f3f86c87eed2af6d8c1d1bb9fa15bb679f9db049696f295c70ef9fbfd087e67d6f787af19f7a7b7d5d0fbafa50abcbf87a9fffde7ef9a35b7bd3e82c1796ae5661a04e8a57be92447db101c485f79777194d3f5f7095258b4fe589171bd6b6fdb2c58b2227e1c37ce5d9ee5d6cda756bd8d94e37fa747957637748696092935ae3efeb6e56d8b1df2ae52ceffbd8c51751a071d2cbf6bd3d0f5bbdb9d05c7d9d56c65dfd60b1d7d3d7b6f8bd1cd0fd5bddadef6dcad9b652a415580b2e303decd6d769c67c472789ca9027857dc3ef9fdbc736edbbdb0e76a65dcdb0763d7135c3224de1404da1eeec43635328e9adfd2a8ceab9ace5e39ce887ad7b2fea32a2c887ad7c9d0e662d6f9a7e7b5efb5cdccd9bcef381c9830cfbf78acefdd639ace1ebe77c8ca8b77cbc9bdf34becbe2b255eebcbeea500238a166d6ed76c3a89d63bedd22f88ff9f86ebb62462d32e7b2ed70669d7dc4e80d1f7ff1ce6974cfdb877775f2737657ffe85146fb9b712354e53ca048d43564a96ef4ae9155d7d7b91bbbd0ae453bb4372d371e06ab7209693c969815e6def4d3449b9d9c8b1c792cb16e7c8ec69668fc34a4e6d490221b7db3823e6e723ab75397a5dea6f56be177e3165adfb4a1b1210135531d661e3b571fafa7bbce8bbab9108f15571bf6b25d835de3af9074a09304acf158a6377cb9f81d67bbfabe7f5aad9f76bb95b1ab4b3f9e044f7a7bc3d3257fe6e974f29d0fd3cbf8567f12ad8b39b4bcd8ccfc275edc639df82a873eee72ed3f973a3473091a3eeba3e9d09e7ad6afdbdfc5bd1e7efbeecec7e8fcf9cbb65b15a10355e1827e6be76dbbbeb30db111ad6fb1df6ee335a27546cdaca64fb9cd5c84ae4e8e5d610f5b5a31d08c5a59753c10e24b7b77b7f38c7bb9556ff8e76ef96964225ca5cb684457be7333f74d35c56f7dcab32cbf9177a1cddca2f13d74584257b33b7bd8949334fdfe91e7329c07b6048ea80558a88d7d9b755b8057b3f6ddc9f2667e7bb36dfdea133cf8df8dfde7ce5b62f1d63fa8acd9f378a9c293dc24095097e9c42003d0e6314457b8b899b3181e14ab0a9d1b308a5eec85c2fcd8a70cefa14f91575db31f74eb324ecdc11b3f580d6ffc9ffb7d34f3c9dd3cffa63dcdf88c9ff565d9cc872bece2bb9fcb96ab1b9d825a7e3b9be0765e7d332f69c6d2f33c47ec79b858c78d4d686c4cbf95f9ec0b3665ddf8d6dfeac7d9976874dc6d74fbcc87d772eefd9d7dfe3c2f6bece16f6391c48f3ed9b18d41dc6c833ecf8d573776dfe6ef79fcfbadd1e77a9f1cf35ac76453618f63dfbd5d59489e41067b05c15c8b74770af4637b4e6d2c63461d55053b2933ea715e7be8d64288ca0c09b48d29f5dbb265e8f4b4ff5099d1d647984539a688fc1217eae211934cc33b0c77e56f635fefead07f7274b6057779171d21eff681f5b1f4663ef27e8de75c17bd8bed626644bb761b4f7828abdb2b768d2f92d7ade3fd9ac688227d673b7ba8f7f39ac545267d3c79dec85e0d89bd5eddb74b8603eb1acf6ce5f27ecf63632fe0d27f8a51ef3b3b78a33b95250f6ee27eec8b18f204d41b1b748ec5f63cfa39ee4a5b376b77bc014f406a1f7b5404feaf6c91d793e4ef3188228609ea83013c19ea286c8e2ce8c78f5fbf23bc7e003b0427e3ff854f60a1d1e0bff313d8aed6efb6c98ffff519ecbff6c9ffcfed93ffae635df7c92f17566284dcd1aad007dbf8cde7408bfe13cefe535419ca4e0a5f8ed67b07d984779fecb59f06dec68db67cb7477e1306b92a5bc10a6160adca07867c1aa921516b820aae080cdf089c272156a491906ccbebca58689ebec712415a831618246c587a8688c2b26f6596940cd764204b01bd10082ed2256cc8e039cb821a21cdb18d245932eb6b348f0f2a390a66a2a449bc0f09920845bcec9f2cff54aa48c2d9820b8bbec67362400a81c5db223110c884b0fcd349f227b42e12892abafc9a647003d1d66b98adb5850fad410865146d6fc80c2cee99a54e320b7d81696b10822581d079bc1c728ac488754048bec459e1ba964394917009927d97d7c1e0d0d4f75c3f86a4157b21eded3df6e3fb0439c12c109a6f94c4376426e14537b6487ac128c9d608dd5a954cc80c30810f273e4fd08800fb032b646b6dceac8d90190a2488da52826e16ee562233489833b109130aa3d0b42e52951cb84b3b24948d22b12218b4fcd0c580d21698ce13f4512418da16a1031759010b06912a5ab249c4953ec71a3c2ac80969c1d29c972ddf90cb4c9b634b2b94f03519ac259c808480c12c1c9a337382e6f0001524066bcb9303568fdc540e2cddf6cb213377757bcf0ee4c01a9830a1b251a28b207dd044f6a48b90c82916ad8bf44193ee9ed1877cf4213f57256b604298c0cb09c3e13824401cd6ea5794f83c9ec0aa404b1b31480481630c31180a61a235ed6723cd956af124072e6d11892a37fa18d0439168e44f2f2c385837f555418b5c93c49c0d735604930d2f72842d4209abb81b3db4220967304644d117cf8c8443edf3da9fcc6f9f6d1cc27544da88205e0a723013c400e7048211416220481ca3415c8bd7fd2012248eb0fd8034e080e6a0e4a4fa16d2b6278474434a723984daf6087b6c6f08412507ec4997e97ca348bad8c813345193a40b312cf7ba40644d7fb4648e1284803644ad567d86b602ec60215a2b1f61ce6cd6413264e6a0b7e34fd566ee0c1f3e6104974a1eacc2cb1c664285ed5e9fa12e43ae068b4713d1a225e2e6c63cf7548509983d9b89388b36fdc2822ddf903454ade9cc0ae9c39a0c18b1e6105e0e660649e742a4e91c5c4272149f74499345df5a4ba495888b18e4216ccef992b8c6514982b419e737eda6755ba43929909682c448826cd1ba80c1c29cd8db01816e161acf0534c18bda4682e8462e6bdd9760618ec942a32772e0f204755241ee68f9a7a65ff9b620d682e24356c8e42aa2f16b308955d08a4dc2af054593d65242098b84b04448d88892cc4904acd68c6ef88d5e4a4dbf4a79b9ad6f5f3f0a54036b60c94c63e77e7a1fa3fb0422886bd40eb95c85039a275d50f54dc8f62785be605ca996aa464f0d98a3c4c8daea820b37e5acc1b25091646d08012a47fec0c627a25e4beb35dcdb113f48d83dadcb7832542513b5244ce03b7e3476c737898412c3c963bf7739483bc97b3a5e130d3e60745f433491a13598cb0db2f4d7780277fdb41459a5d16b0214c435b81603bcc18b20d19447e81276b0c95c97a064282c62704324ad5d9090a67eeecc0e12810d93809b37e3044774e3441248b7cf51709f1f05f7f921e436e535764df727a28e580c8713ad7ed92147f191e6ae0311e5e580617028e79564a30741d37ede9602855112bde19fdaf62326df0898261374c683eb938d4f7056611abb8f083847d83834d71bf9e034dcf0774d242aaf70ba4c24991aa2bcddda6dd7e3102b69db4b320b6e8fb92c48a78dfc043fc0f59a5beb81140901475b2234d4614b641b3b20278c25a2022b108c2eb09520319d9d5002c61638445082d68ea888b4d17da9b72ba8c82b12c3e1adddc0d66079d06a9ae6142beaf9837302bd656bb6e44509d140f4a0230d1ebae03981e8f010175922840bb2c548385e0b64c2699095f0b2a51b7259ab7e236fbf922f7628a035785d8b51e0ad232e6bda67c954c5c86563a711754f6796cc2da428584b905ac98109adc9b63f688dbc78d91f2c216cbe9151568facae3f0558b4157a3b244cff6587feafb3437e25ec99198337fd7aa24b7059a8a2cb6dc4e0200bf49e27ad06af9b44a26a38e3ad61136dfd41b03c48b275f14fd63e8ab202bdd1453f15718b3788a41014adf14f0a914c0606492fec05b6e77134e3456bc3b4762e69fa5dd9e8831e4a62a31fb60f35ef5b9ef3ff5ff6be6c3d51e47df882e6e0071892e6302e2028a8ecd4998011a450a67101aefe7b6a61d1a889dd9d99e9efdf07fd74d45adfaa7af7c5aac8ef2ba7fedd46f32980cdf6fe588b119ef252860fedcc349c70a3b20aef6d14c61731bf52d3efa56f9df32ba1b4287d699fe8783f99f6b3fc8acac091e9427599060c7df7238f0bb555025993d1b74b0b8e9d6d3fd67b683e860d53656f3b08af3d9d3c8ee10398a1fd292aa4ebb5b3ec6c3fa3c2ebf2936a72b91fc5f5877d74dee8fc8b40d211ffa8d92311c17310a6a2ab99e877c838305afa885fd96668fdcf60144dc27454dacecdfd692babf8db3475451f59747fec33c283ab34dc9ac9efb53f73a86c301ec4f280fa5dde32b9ba498a3f72d9ff3db94c4df8c362a323fa79746098fba9285b26549630293d2642f75a76b6fda523e9436fa36d915ca08e43c24f887a9ff00f08ef8d4a3385ca84ed8fadb440f481c3780f227eac88f55e74f29868e68fe0d8dce8683dcfa69320feade5bf5c82878cfa775b25bfd7fc978be8106f9ef1075d39a4d28c952397a154a0fe7fb77c038bf6d7be03574fd4b4f80e4621dacfdfa6f373fc956e6a8a3e627953cab6da088a2117ce7449db9a6ea684963002e772d55e7341ecdb980ecd5449dbcf5c6589f667984a83af97d6d97e5447d24fe8bef9480e3595cbfdc4367742787b82ce5f75fb09e55ffb1fe1f5965fb5c9fe46a7d22bf78b45059f81c46e26a5224c87ea49dd6417e98716b957a7bf919e8455291fa69c98ca9b5da10ed7b91c3f1d3dc7c3f122b3cde8341b9ce2692c44412c3fabe62b3f1de0f6e5d4d19f711ff395f471e53d18efea7e85daf463bf8725ea3b2adabefbde34cd2ad27fd4f4f7c709e91b377df395c1ff1d90fe65db9f8d485fb5edeb8cdab9cba67fe519b82fd3f475b5a89d7bd1f40fa527dc57339abe8c1f3773b34dffbaef30a17d77a41f5df3aaedc3913e0a247305a47d6a35ebd4c83a6340da3fd1f6db767df43c5206b79f91b5c57e0b137a1eca01b7dfd0b3489ff65eba407d4ab5ee13b33118d4fde4a2eed7ccd5f4fd46fac5b45fd9f4a1f0574ad29ec27e2bd7fb2929dc63da9ec25ca9da3928bcb9116e4f61bdf19afdc814ce1a6def91f63db59983c27913e2fb28f7687bae9d83c2b987ef5249efefa6bd473285b34eeed0869c23909afb5352382700df1df544dbc3a92332b84f35a27dacbde72eea7e95daf46337cb01ee5bb67db55db3c64aaefbb77dc93a13b22fb5a2fdda7d5504dec039e1f61a690ffde64c550a6ffb30754496f4b1689fa7bde7b67351b8433f6637e47da85cdbb7f33e2aafe90f3899f42d9bbe5bafb9eb6aafed0fc97dafd64ddfa5d3ce3d1b34fd339fc088eff4cddbb9934e7ffc3619b5dbb7997b716afbf3182769c351d3d7df36388951db7d57e4cd2dcaa6afab35ef4e1bd2f371be917ef59e9bb7b0a0e763d3f6e45e0357dd0389f4a9611c946cd2e9c7d6fda60efb44fa7a4d5fdf5d376ba5f71cf56769df5ed3d7b5ab76ad41ddbfed4be11462f82ee87db799b60f3d1bd7c2ede97d8761f34616f44c007e231ac5f1206dde084bcf225de2fb63517c02b2660e8ad7410a73f2596e3eb76deaefbe9131099cd3165e16853328497b0ae7adbca73884a5704e037c979b7e6cdd0fbd3bd2d7ebf46de0cc5238a741739f2cfa8e004ffa51f86e93b60f59e796bc1d8bc2378cda7d51f8721807b314bedb16ff5a14be21810dc5bd803bd5737014be5b9f63f640b239329747e11c1e7d834d800bda393714de9cb09f3a4544e91947f1381ec797c40e4df3e8dd0f59d29fe2979ed5ae81ec7347f0a047e112c1764e721e4b09e35a8e9ec56ed99c8347cf2122e747f1f972dcd00c8ec27f179239e81d8fd8768e80f649f69e83e9204771c86e65b0514b0b3d7a0e3021fd08fe583a0d7ee6e83964a47d40f1066cdf5245ce61e9e273eb517c9185831a9f07146690e9e2738de2f3654b0beabe7f93730be83dcedaf3a2f87cb9f5707bfa66ff0e9bf30928bcf7e40d525cbee49a37d8a3f0febe24ed290edf7f6fe7a0f0e618d29e9ce7f716660185f7fe40daaf69fba7660e0aebef3e694fefedfed8ce41e1dcc3b8e489dedbef2d2e595338eff17b9a51dcbcec35efe989c22af730ed5b531817713dc78ce2639fe0d6277a2ff3164fac297c0b86b427f7d21f37e7f144e19b13fabaa6f7b2e0da39087c7d87ec83decb3d68f741e1cb66a47d40dbb7fba0f0dd93f358d3fbc87e6fe758d33e98863fd1fbb86f69f89ac297c5e731a378d7779af3e0297cf7841f4f283e601bbe7446f1aeefd2f6741f41c9ee57f82e2614562ca2417cdb4fadfbb573d1be848e24f43eb24cdb87c2d9c5ef9fa7f771dff25a0985331f93f6e43efa69f3fe790ae703c13109bd8f3c6ce7a0704e31cc787a1f0ffe808d691f0a333e9f3a4aa75f52f76be66afa22d86d5ee9bde46b1eb8548714de9cbaf7257e43be1b9d7dd7b625df07d288f227f289c2ebe4191dfe64f34aee73af9f937e2aed57af4b3ed1fb7cc270debc32b43d337530af5daaf46e06e3c5bee5b7e51385f7291c3473d1beca91f423f00ed26f6d1fb2c612e3dbcd6b8fb667db7d1178079876c9b5fc5781760e72af7b1a24ed13dade6ae6a0f7bac2bcc16674a2edb3660e7aaf032e47ed0bb56e5fbfe70d95157b1a8119e51382863ecab58c5805648e8ab62fda39289c7b326e4fdf7f85f88495abd071adbacddeebc1b279871b2aeff5b4b21d6f41db92f9b57afe76cd1cedc391f6148e3daf5933c50f5548dad770ecb57310fc104a23dc9ec29169f89a0d95f77a3a813de51bc2468e904b8a1f188069985ccb7fe873dba6fe0e8f49e5ba9ebe6dd6b191e9b86bd29eac9b5936f09129bcf5efa4fd82b6cf9b3928bc197fc09e30eddc50d9aea7e753b7bf6be7b268df62473e7bcde7b60dfd6e2c93b1e97a1a9e6d43e5c09efeec93b99edacf4d9bf63b7c6764befdcce69eab1ff05c940708c759cd47d57baa6534669532cd3ee919b1a0643704afa8f4eedadba9a3b5b885ca8ca19393b1c8fd61db3b4f65c59e4dde3ce50f42576ee727fb6657641efad6ede796df936bd98e5dc5644fedfc14ceeeae198f9e1147de2995017ba07da7947f580dd853c0d92c916de45a067c9abafd0ab8762bdf6ca81cd88304ff507e62e534f8a796ff9e9783065ef41cb2dd39bc085e59a5ebfd52c230abe53fd477d7c28dca7fb83f8be7ade53fd4d76fe7aee53fd49f216f90ca7fa8afab37ef501b2ac2eca26c409b327a21046504bba9f03d23622ed2dd57a4f4004c2703319aa6df767e5cc049670c3fb57bf2c82e835428270365e839fcc1ef2dd6381ea98d315c2ba5fc1d1879ac947236ebe9bb20157af27871f038210126139b9630b2ad4274197e6e8b8264b2f64c1fc87938665b9f74b887ae8b78843d5cb9aa702b6d759bf61bb7dbf93114a663f9d0e4d130d96ada8d7bacd812fdbe7416825abd966fc68951abf73e21536984d3bb079cb526710f1a236ff6114d37dee8223d635d4c8ca29c3ba39dba5964d3b18abe6327469193efbc6c2a7d1326d268a756afa86d3419ca4f3323c9a65282db6a65927b151b4d866a6f621409ee67aad974fc8ac75707491e9ae877d487b94cc18dd69afb71931e3c0f2a360ad290f51dfb108edbd20853e92404d5a99af716cffed6cefd2123cc9da7fff91bb68d37e16ce6dc2f1e8e80ab6d82149e4249282758179b3cfb9b7d06e275dcc4856f1801fbb43b422a8b0a046981c64b9558e9dcb1b334f00670405ea76cf738a1c47133ce49b0523bf5a53a6e4c3b06294efb4ef5c0c56162eea13fd6a0dcf1bbf62b1636fed503a69871dffe9a9baf2f7ec9ec274654ce1ddbf7592653626fe70f991d8183bcf307c973503de1bfc341114da55336db92bf2706fcf6863eb7a9d9abf9464d95f4f451ea7e72268324f7c7cc8b2fd98c2cad058f2ba2a0a7ae811b31c0e193a0ec1fa68976f4ddfed14fd159ed4bf43d70e5b33beec73c8d6fb3455fb2f7c0e19989f474d0b74a043816fadb458ecf73708a6db7cf2c1d16cee2d7783ad6774b9c47463906e81ea442026c12bb3fdddaa750827b6040e1cddcefe60eb373987a4f51354de56c32500e3ea743aba71f83d48a2746514d532d9c4aeb6c464a576ce7ce3a5f9997e502e839b9a454441017d5dc114bd0236befe4c2c8fd215bcd87eaffc26186637ae62623f81be130b71af86e81ab9fc748583a0c38ad5cba7dc6a7e73631b3032e3d3050eab8de78de2dc7d0dc292f953bb6c71bf7f600247be3f7942894accc1fb2d7ef2ab65ba23bf394cd383b47b8a21317759c3b6dfe8ca9397af1ab27411dee8f5383c926635900f6fee81ab8bc493e37220c87208ef28999a17b86feaeefd133fd3b9bb8c5377f90b4a9fac7ea5f6ae9a5fec04b3f2a81e019b8b446fe66ee73e02ed6de86ddf8925805384e59877eaa57b2f47458e0b827e180ce6ad553d0f73088d7dd320687a61c8365e7c0c17770e7c7bc14a4e216e39d414163b414a7ce7bfdf19dd4180fddf9926f72654f5c569871b2b03222bfdedf64ac1ebc38d9c9297f04926d22bc040c19e1de83c732b917d7f8d913bcb810093e45bf7b089f969a91e486c9be00a78014473eafb822f353eb79d5d3a1bfd5106e7d56c7ac3095c4c3d26123123f91bd80b18dce9efecee44b49e0802b3fafb84ebb04bd5b11dfafd9a62f4c719e8efe118d1ba676df4fe19e8cc18f4257a163ef4e6f46f1f7458991e67ed1523125a62faeb20d31cc3b79b006453e77d56f6a2530b314c71e0a73933dccb9a74e098d108623a1e7c3f65ee8925d793d250bc6fab1be63b3f4e905c76e5f2fdfd1bc0525f6e20e2dbaf1deba381ce673fbea1bebd0b1049d4b058c7e274fcd3701180dced8abe6fe38c7251abeeda746b20b362c7438219c185e3a914ec2648ce1504e302e57ffc27fd7f7dfcc6a1a96bd8d71199106cf223aa0c42057627037feb2a61353a910669c86ce9591c7eb0e9cc52ae0e0d68fa39780d3229c1760bb7f5ab8110caacc5ff5f4cce3f6e8bb2874f5a3c5edb360b88bd441b1f7dcc85a3adaf7802932df81cc6cb3ce412a1c4251cb56a9f53c1b14fba5c31b7e4f6feecd5462a395a81c43a973e7a4b05c3aba8ad61e54d90b9060154845b4327791eab2826b147cb31eee5e5b260f25b859f6d01be9c44abdf3df28a233becc1191ec15795b15f1a1c25402477fab9b4b378333245fe33513389812dc2fddc5b3362862e084999f888c93daa55fed22f4065dbc06e1e88ff52c189faf03add797c41838a76bfe74743dfc5a19ef115e8c4249ac80ab570e671d703e3d5783e108a2737e720d3ef71c05fa6306b5d73c57df4d533146bcf394e6329fb8ecfacd658537a35026148f5ad5afc5a3bac147d3a634cc15da3fb20e9ec10f7c4ee73fd1ce5aba7a0e8c061f6bc0d52acf096150f617c095d716676f7c8e4fe438b93ece40a97c47ccfd81dcf019a6dd373fc4e729e277f437dfed572ec7c270ac645ec9ef83319613113f7175ff61cce3bb381def77c081dbe578f1ac99af393e2f33639612ac481c65bf9a9ed10034b6660257c980abe67eaf8fef6750654f6f4692615ac2aac232fe3c2db14a4a4b46df04ab2cbeffc1cfbf297e1e2dfee0e7ffa3f839fcbdf0f330c4b1b83c238b189e37f1a4bcd5f6a45e4ad3d75abafdeab3783994e02960853d70f572e9a887501218cf291834c674201f6ed283b1773025780046f1b294ec0c701133db58a729c991fb1c4a51169438defe14947c57863c90393518a4100665710cc6980fae66892e4c70f942e625acd8ef13715fbff15d50f2f1c458c7dd3da0b50525bf718da23731899c696dd8de74c4201ebf9a18c51bd1bf24d9545cfcd199fc663a138f130e416fb1363b70f65cad5a3ae16132de571e27e6c0559f57bda8bf42f81bee5f5a3c28b2a124984b0e9e7069bf2bb86c3628529fe3198b83cfc0dc3d4d2536f3611747bfe6be233e59a9c074e5bd808b8e211ba9040fa9cf2ae24b7a4a0646487ec4742459badac997447e168f8a37970da763d8acf16e5ba36096146776f2575fd74db6f07d9b8c90dcb93e788e8275b8b85ca5233ed9181e9aba74d82c1ceeaa4b1c8fd686e6f43921c7eff26c5e4cff08be1dbef3c76ce74f5f9315a6c314578f351f183cf6dd0e389b31b03e2b0a11cef1523b7f335e9315fb6d774e7f789a6726c9de9cbe80f0f774946433ae80e1a03f9c3b5a8ece5e96eca710bdcbb1baf6637ee873ecc9e778c467bd0429ce2f594e0690eadb2ce11e1e0a107d1edbd53465a16f7ea06bc3789ae258e9a9c9f1a3d7fa8341244ed3d161910ac9ea13ed6c0932be64b5bcb463effd9ec2cba28df972393ec5f240ce5d44d7d2087a6eff0de1799f53b30768c17851f6872b47c3ef048d070cfe103aec1be010fffdba3325b142f0c56dccdd5a8e8b86360492c8069c8dda1e55c7e2a603651f94c97a6abcc6d381bc466b34243b0a86bb75bd5e19229cbdabe7da01473cb975ce25ccf39fd686f3b4b75d8de827c56fbba65d4fe383926df6bb74104d4c701f2bb519cfc139cf9e2fe142dab5fd8214c144ac80b3c8a60325fc0a1ae63bf6dee2ec72e9d8d554124ef85d6cd56773cb6413a24f1dceedc5e7f5a923b5d6a7aa734bcd177ff4a9bf9b3e15c9cfe82d2d3a708e829e9601ee69b7ea691b0fe76ccc5e5623f109bd47a7b76f71bd6b333eab7d5fbaafb8ecf015dcfd748ebbd7b9efc0c3196d22b2c999dcf16614db208509bee78856727a16f4fab9e726cfb2290a6f3693afac663d77db4ec78d4cb46972d454d7fdf41b585ed0a537e38ce616d7e5a945eea5f676e9f0fd50cc60907e7b96cdbef066b3680d479f23fce9d93a30cd27f4e55a5c51bd1e6fa0bf20dea3a64d01bb871d994341fcff4a640e445e290479a0bf5ca75350f0c6acf0e632b9612484de8ce45f6bdff9629ad3957de491760c1d9e01aebc361dbb0a38710b5c756d4976298b1a7a9f073090b3ebe3af6320414e8e8b97a0a7f3be649ddf9d14e4c05dc75309fd1f8d96ae02292ff32ca7dad11fdb7b3f5690bcf659baa65922a167777134a26da2b0e9f0086f1e27b0fe5687016c659e80b4bfab8fbab20603c100c186e45a7dddcb23bb0a25acd7ffd8f656d358c4a3db4245f29d296fbe6333410a37d3b41d6b62fc7afae575cefe1a1db3c60d1d1bccadd103744caee9d8f3dc92737dc34693e1889b18854c6431399b8abb3fb2d86f268b61fc267abf157eb325f100b802dad8c6dd37570ebfa9f9c74fc9055b3df2d33007b69ef90efa1e1e3cce4ee6a50270eddd5899f9e56d9c18706ce44ba7f8aefe67a0244bd7fba8cd2e886bbdfb4dfd3c1967bc277a2e868f7cc77a96b7ca312c15e123bc4dce559b79d86f40d9f8dc69af9a72fc669c622a23f43d4e83c118e7fa6fec0718cf5d3f13699a201937cf573dfd388be523f6bf918412b8f2d1af698cf12d9ef43e650f663c87dffa926d2d1df44ec48dc7d9a710e7c3a663597084e5e7dbb6810ac9f6a1ab1ec2b3bbc147cdde462c0c7a5a04385bd107c96d592bd5b33096f31547e4523315f7c0dcc5d8cf69cb3c764688060e98428d15613a5054cfd5303df653900529fb1f8177673d5d188d991f7a4b989f4861e93be7e737c13e51d7efea722cd7efe4433ee4e23e977e2f886ff21737ced2e3847c6aaaf80d2c1c6d03dc3e82c906187d8bf8d77ccc0f5d7d57e83d8ed63be24ba763dbca8fc07061ebd6b412a11627b99ceac93465f7d32de4576eb23646eb67d3629e839e1adfe41feedfc70add633969ce3da23e82ff8dbdb39fdefb3f7e57acd4ce914c16a6d6fabf786fac44b4ecc1b702985e86eba10ff8bd6ff0fcca85bc3c8ae459c26ab3ad56c9f1c3b06bd739500c80fd7b21078cfed0e7f874e92ad4e7e5698df1aeb9bbcd6f7f08e7429e483c0ccbfe08f35c9ff3293ac7695019dae202ebb626c62906d2e2e03bcc01c16165f465639869a69955412967e81ed5b6097bc32e1fb04d38b56dc2ae58673a0afef0bebf19ef5bdb216cf3bf6587f8976d0e67b6d789cb9cd9c0d5eb3a2c662a291070f0b070f52570952382c9bf668360ce7453873a77fd15fbc3e451fb439b9bfc9fa13d9fe039ab700c73609ef90ec4e89daf06728eff1fe95980de04d11de27143873dc85bf6a6fc7029e3c889c6065b05ad77bdd8da2948b1fe08df89cfcb5dda6629d9240775cc6f6a5b783d1e7e27382642bec99fff84ff501c3a2005ae82f5acd77423b6dbe84626732b784037b2ab7523fadcdae5c11f1dffefaae3f7fee8f8ffafeaf8f35fab03fbf57a9b8fe9474f63564e01cff90005bdf327392ef0ffba044bf42688cf3e1ab7607de72946b0f8ac7fe8a2876b801ec201a99fe5719079c0ffbfc2f51d713d0199faf8695938f832bcdfacf11ace775a7df874ee3ea20fcf29ce7f4de6569e3b7f70feef86f3b1ff2070acdf4af76d71da0e38b81e61298fa8df754f5d7fdebffb160e89cada06f60fea46892e0ae23bf67c670f1f8ef103fc27b9bf3fa10f321df149961416a4000671bfc2b4fd6774403f803f11af71ce3fdfd36d7f7cc696f1d11df8780c6550ff4ef42ae88d390fc47801c7aaf96906982c044611813ff8f5b7c4af7efa8bf1eb8dd8d8452a1cc3b1c604b896bd9d3cc08f5cd84394a3dfd3ab70ac44c1b80fc1f05bec3838af5a6ca6df6212b3c8c3b923c20774850760d05893b102e7988fd1e09f7893df2dde04eb8c7260feda980330f820e660a0ecd4b2e5bf7549ac969272f45ce5765cd7f815f12197b466efc5845e5eeff329dee52e1f81e32712e508c6c9c7eda09e8552015b1d13a2070fe8935298dca241c14730fd78af1ada2b7e8b298cfced02fb3b85aeb6bb09bf1173f00c5e09257b7f776e29a86dfed96d1fa07f717d63a53e93ecb69d2d623fba0b263ae331a2cf4ae6393c8365515cabef96fc8bf774305c1dfaf7f79e76d747fffd93efc0edccff4fce3bff97e635fea5791960b4bce48d3627fc0e2ef874df91094ffd83777715ff3bf39a1dde99f01a059cbbda23bc46def01a9200497e042b9b4a90fcbd51b3a9a4d1bf47d954d2fff021bf271f72fa141f42636483adbdc176e2017c097af609f1dad3f8e9d03dd749e363659f802432c0d6a0e72a9be5908573937fb9a0c97035eee7e8ee05b0cd3b73d66f10c1e9568f02740706adeeb5e6cb811b41af67bf9b474eec03ae8dbc610424df2c399b576270a1e3b39f02a9380648eeadf902ce8e8254db2d1c9e9f0ca0f0e676783004b3f1be028e587adcfa191805fd3bcafc34780ec7cc654cd1bbfdcd7e2447ca3f883b3cce7a1c074b10123ea29f7b8e0697929003c92e67b1d207925e026c1b15b0ae89f886596bc35ac4d38182f98ea943f4f6483e5a387a12a436ba8fc7206e7ddbe4111cc9f129c67c00ce138cfd1662e0e8f1ca909fe55489020e6ea68e98004938a8869c539b2d3aa7a39f683b24a38146cf7b79cf509b3d5cd9f669b6bd71b70645b274355c3f1d0c33e6ade3f71148960024eb33badf7738b8f5c553dee93102a9d163b000e7f85a3c4d8c62ff4797f17bea3296d2c3ba8c1cb8fa8bef6adb8029b230b525e0d8c92cb5116d3bd34dbcbb471fc52dfe96f25d817de7f4d486b7634e7e1c37ae7a5135db8ccae9b8b18335b62279639dd471ff498e8b6398da25488b6358ed626cbb2defc4a8a46bae1b9fd2e657b9b97e167c944360a0304bc98ec0473af9addee85a6fe9944369d1f1d180f7f2bc30a063c3b32491f725210283be85debc1cdfd11b6ff5d8e774be5d8bd5ca5d98478de0dc613fc5a3bed701bfa3e39d5c7438af25c68980b3fef8d7fd66fe75d8ae3e4672c7c73e56c4174f2f4347c3346ae2eeabd0ed23deed308df9eeb96635ff18bafd04c1cea27cdfdcb184f9764f7904fdc9b016888767108f0bdc05f503b3bf8eff4c0516f56b3e635dc73a9e726ddb694f2f3d87af3c6a839f96f277ca7732ab111ca1f77419efbeead1f549f000aa0cbe99ec476bf9c04f2d3a4c13507a4e8871c37d5dd097d0990d20baa10b7b1e1b531fe0ab7868e910fe36908ac8e3ec9dcf1588ce3ecbf01ca617fc26f1311c7cd8ee21beb47b665349382cb828f2d310d6fce7e5dd446d0ccee66df7b5ee0b57e8ad9fb5d1b38013635f223c02c1b1d837810726bb059fb1a18ddef1b0efe4988eae806f7505ca1f3dc0efa90748ff253dc03174f553e8ea8a3e64dfcbf96e63937f77cf099ece639dc425c748860106ff1db849aa6c3fe08b0dbef411ce6e3f9f4257db4d061771513d9b09c636d3c1afed7aefea06883e00b87ff40117fa803981dfe2a6fc6f5298ff02bcda39ab2f91ff6157fe07a92578e9af97ff41dac8ffe21f99fff794f9c3cff92f10ffe1b1c27ae8ae609bafc60698877b3a4cd3eeb926355e64031ccf6f9b5427290093f96b456338bdad12f9a9b6fb4ff2b09c82f8a8cd72d0c69c76d69bbdb9ec3b1d48ad9b5d3afcf697e83faefa81dcb1053fc86b861fc9f092067f00676794ef3df992b8014e74f4251d069b5dbca0f0bbc9bb2635ccfb8a3e90733915cba533da03ca4379a99d78db249ec54aecb95ae6956c0424fde86f46f1744cf227d6b8b17356b9cff1c3258e996e70efe5bd446da6c0857630a4f837b59f80a3b1dd36408295e7283970168876b6ba811e8073cbfef5ba813168740386f34737f05bea06a4ec53ba81cfc75f45c9473c919caeab6e4e4de2fb65adf59677bc19bbfa257864a09c3aeba9df13a691b2242600e797d760509ed67e9bbf2797c7e7b22cfe9df25f41d98ffc74b1aedf3970d5c33dfdde2ff0953975ecf43f3a06ff595bffbdf3fd186f838e6fcb0f8e31ee8e7163bf52043fca69f02ec60e62fcbceec831eba5c39eea31eb186bd46629d95198c27c65f4337fab9d96ae02c1a01faf8c5b7924d6b167c8f98a8b4ae078cf721a31e1b85fcde26fc7508a609d37639a0a252071decc52b2a96fa475f07bca16e168924b09eb24fe0626ab7c4a2741f9e165cb0f3f117b98ccab71925b7f74bbbf27fe1e09ff926ef736ff7ad90fc7ff4a6289ee409b47facb7413b50ea1ef6f93dd5d5dee30c33ec01dbd2ef30bf4ba4f94bfccfc94d43c91cdd7dc73d56712cff0215f8a65c159ac3048d691e34fc9deef78d91a96f258df01a35fd3d8c3347e6a79d1d4cacff512f2da77e57dc0317b3596cff8c9f033f2fd9821fc2623c0b9fd397fa987f8cd91d0f09b4bceca75c9c2f5bb3424cf71f86f463592dc4af1dfe5c4cca3739c065f80bd875348fdce2be6e49a4c6c515f56392ea0c35907d3ee9b26cd1517544c81da9c7d57ca391e2769fc3104153282dc7e8ea792ed03839f61dba7a41c0332673537b5706e28efbeafe7eeea0b17753ebda48931123411cdd3917b9bdc828a4672ee69cd58b6044f01d3e96b33820cf52c186befdba676194af6d3dc04687d0ec23724af20de87b574fb8a9f82e3dc0cd1efcde706668e78f04ce609c30afd6d34308afc54d43cb73f0f53bbf4b0ee04a23134cfe123d3114f660fc02025f151977de81b1254b37fde87e3f3a5c3c3b3f92d31f725a1071c7de14b7682cfc5149b7e0ba7c8fd5e0881d8cf81a36fc1f91a3b7d94a68f25151048e1c53cf0b074bb73684d7bc3e1b3f0faf80670c17189dbebedf8a9cdf9dcfedaf89df6f6c5f80a0c53e1fbc5f88a9f42464777c7640a8ddcc7f3efdbf61560f06f23cfd5765e2a4441aa37be467373d4c3e7e86a5bb21e3d0ab828f639b104a39a1f56ebbb816457666e8ef0d92fb8280aeb73c43165b649f22fca824acedda0b481c1ba91f6de1f405a645e6f21a81b7cd638af8d2fc14d335e2d7f0f99524577b991c7156122ede1dbf8b443f05af598acae4d603af8f34b070fac5dceaaeb2368685cd76499b78edd4516b1ce2c5b713a44f402187dd2ce6531ee3153eb453eb7d3642b0ec362e4b97a34277715ffddbcafb112f95b2da26b105453ad3416bfc7737b186dafa722eb713633277751f25c7b03dc450d733344f89ff0ca828ac7c17884d2921a5edace7317c2cc5cf3edd928c264c46358996903abda763104eebed1b59992fd7206979148e0d2d37a4b57c7be851377bff15c0dca231e4e13921bb3a18fe4733ce3b428e02c04b74b38b46d2fe1b0e98cdbdddb30ab7552046f53befcac7d02a2d0d160b76d0dcff376183e9df5e2cff18cd3214845d61f777e83f661c9f1c7907b8adfe83db0a43f3cf36fc633e78bf4fd994ddc5f093f16c971383fc2c46dd67afd77925b41988eb33b76dfd6be05dc60e7b9c5b7893412d09df01d58e158d341d4b56b94d3b19aadbab56aa513a9553b56f81597ecfc9847bc1b436a19b01baf7dcb24c7c479ddda2379f37ab972f7d9447a3a845254fabd6047ea09685128611e3f5bf548ad9b339c2125dd3ab92fc0e0132493a033eed425789e8cb18e9d7e2e18598238c6c84f356c17f14c6cd78661d98f2ef68bd60d27e34546ec493c92990f13e994fb251496c67ae76fd8c314c724163c86edb8f8e6b00c6a4be0304870df4e0e1209984cac9aa3e297ff33645aef2a82b3527cb70fcc03a4988663de14ffddd0ede218d6fca824f45a9ec14e96aebda7b442038e9e850e53d30a79e9843bca77e2bfe52db33324fbdbdb209281c9bea0bd539dc012dce29913fe188e00e2359339e1a9667e4f97fc9e7d002d7d8e80a8c0c0b56180e838e641cebe8bdf8c6809d01d16333877f7c2c4485e6a7a63a7f63b3915df1d2227e60827e17a67ad0e4e70d8468edc075c2050bd14d591235e453eff6eab3fcd1da2eb69fd47da37f9fe3791092571b394885d7e6eefc35a3eae757d177d6abb29e2b123921b83253ab78b7e0bbc577b0f5ca5ba18e3041c3e593a3ce1bf2efad73ac58b3e71908a078f8b864b09e6884743f7fe5abf96d7d22fe7adc770fc9e0e83ad7a013b9105aec2bb5c71f41c3df3d34090cd51ddb7081dbb5cd9020cb69730afe56d2696e38bef4424bb6b88d65eef83e57226528d8bef47e2616532bb89c9fcb54aeb5c8d05e773309187af79980a1918bc9ea667b862b79bb8fbeb32349aa75c47ea20a17812fb75c0b90b33e014892c0188f1dc403e7a6e3f9bd63a848efdadb6af4d8c8269fb5987e5563bfaf11ad7eabea657b152bb0a9d82c138ec0c9f5eb4476f680bc560ab205a0b91ac3d311a5b2682230cc506d60436176b737b8877b7f370787e37bab6c1b941f3d65d8393d8f4effaa1d43a97b780ee65ee58f9c56ff57da13e890be1fcf7f5c5586b418ee5cb319af1111da5b2f6ffeafd7fca27e52c57ef22ab7519efe033e0a3461eaa61f829bb6c231f1de578cf4c1a9d8d82f042274ea7cf06dc7a27c742ebd3127f63d4e182f46bf563776dd441a3336bedd197f70b9f29d6a95d39ebf7e7d4f857933e599dffb37d5363705c3a8bb53a38ed3ab4e2efc9a0c1d5f59a758c13ac065fec64f315bd03c44b10dbfe90e5978e9d83413f05980f41f0144f4b43d8d7eb98e27af709f649d386afccdc648470d0e49bce5a1f03b2aeeb6ba075f5c5ec8c96d572a26736eb60a66956e13af8e605aeb09a3bb7f30c28789cc878dcba4ba3aecf89792ac46fbcc361f55d2167fa53788ce066531222701d97313771d9f99d851313f3c3e82e0a739365da3c0db0f10720ebea5f5d83ee2a25a2dd4e8a7919464f05d64f1775bec7a859c778711337b6714c5174c1a3de9d13f39f46d2e8b0910c75297bff08ac832d6cf0d6ca81d097166b90daf8fce5588802293986e7f3fc7bb0e4b02c46722b99cc69c659df3c83cffc6d9fedcaa033cefa3e29db7db56d341fd8ccff2e3e1f82d44e01f6d9d32018096c38eeb3e1088ea6d897cc6267c34c02660756d2d34d589df9060ecedfb61fb76fbbb9bb0ee6fd8768fc694ae71eb248265a9b585eaaf9aec5c14bc51ce7843699d374bc68f82dc20f92f72627c57c61e9a23ee84b562268b2a8cd1676df344682857894e916c9769620432d034c71f4b83d04a296e15ccf169d5fc46de2ee1c86f50e8eb7e1268d0e4b07d129bd72383becec8b7933e5934a74024dae05242f5f8eddf0a0cddb7e6aeec1c5bb11dedcf33776f12e7e0ea7a5210cc5731dcec2d519cfd17654f7f1cbdf9d37b8feee94f11ebe1942148ef5c8e322e2f3c5bd66d8ef6eb8386908aeeea2816b474e276bbaa4a3e77cd712187c47f6a1b90ba551b3be70c0ff1d70c26182f0ef390c2dc45f079c48f6989ccb161369f433fcdf16b8fac5f85db9e60768f93dda21bd523ef83296427f012e83f82cc673705ec8f57f819e9cdf75be95cd8c9fa72f662307fe621837f499e205246b70d697dd638a834f3fcf5f9dc9fc1fd02a984ea4d10110f83e3657a7dfe579d767f20bded4fc8a3c8f649f676044e4ae34e7dbe2b489d4d1e7615fd47b3c6fb4a63c6f4dc36a1cb66fe6743e81bf36f53b7bbdf5ce1ec155eff7fdfeaddc7c0be7ba8d2fc23dedbb48569c2d4c497c05eb3b76f9297cff35f01a621da2c3c260abbea3a9ef69661ffa29928d426cdffb3a1cc2467e3a3a0688f7c33a1561dec68e309fc32bbf165e8b331dd727eed6a2d17b7d158c3a3ed5ffbfe1d94bf98ac2f217e0c7c115bde357e147aa9f5cd7f871d3cc997eeabd3f20ebd3bb30d2764ba740b2e8e13dac6ec3a2b15d7f21df5beb736b9ecbebe875bdc1c7fa921fb92f5dddf103f068f4c9ff142cc2546010edf92a38d874fc0f604074b217ba58dfd5b6177af73bbaf33ff68af7f68ae29daeb3d11755677a69acc3ede838efc0f99a6d437c37cf555d527d47c66b01bcd7dbde95f92ee3e5dfc9cc1f8e7729e3b563998d0c36ba364e1d4b78b687f68ebcd727d7bcddd9b857fa7e6ede333ee9ea38e7f7ed8a7ebbe665b02fd3f95a82cbdfdeaf83e2a6eb315fd7e66b716094f9925e02e7e96adfb3df6fce7b8546bc1ba77bef6fafa7c64567e79f52fa25826328d9257a17ef6c3aad3e9bcedff8f5d031d80a542c6c6c448417784332d70dfc95fb9c98d436a4a9641d823ac7892860bfd6337fa10b9f9f59dafa09e9e73505a29583de25f61138792ec4f3cc38a5048ef8bdeb5f54fbf9ccd2d687a7c65175bfb9d359d7987d7fafc83ed5662f5ddb0985815febd93bf0b9ca336dcef0d119fe01c6a7ecaa17f6b31627798e9e9812e480052070f40bbb4dbe574da689f1f3d179bb1ae3724d7dc96a9a82cc4f69cd8e41c4cc4d9e99a630999b2c24795dbdb4aefd76bd3ff5f1193e099af9daf8665f6dbb457c1460268386365eb3e7539b5a04279d1c7517763704b7376044df81c1377bfe08261397dde25cd81779a06a9f7059b20487655e705cac54cb099fd8fb802966bd05f66f0a07cc7ee2363c267d43057af35528b6f6ac80dd33aeb96f6c80b772050538f7fd1eaecc2c42e771bb86b79edccf51f440fd526e74583aba4074d38b7bf988da39b15fe0e8fd5b27f1878d8e0fb8ac6049d6ce6115384d8538e0ec324cc5d897ac7c915a3b39d561c0c1adbfc918920fa9e8075b255a19309c8a00129f7cfd887db38c537ced5ce4b8e129b3a9d88713716f00833f7a5b0d065b8063cfa723054e064a025c5c5be8998c27d7bef02f6fb7e673b5ed578e8fee2e3af39a179e18c50218916fa5d6c1e7940ab80a87fdf18d62008c750c241bd7c99b6da91da2c93b727dfc70bc8e5b592cc91f3c8bda2f31738dc24178384805c6efe1b973f99cdff8d2792e78a4af9babb6c70c7ee24c24129bb3ea31f7e7e8f0f45f7a87aff0565f39df051ff63367457c947b7b616233b98dfd2f946328115c331d28b56ee01f98a323b3fccc7bfdf06e343a88a39f827ce9684c50fe03f3d53ce3cfcc35528e3e5740cf79baf18edff13c5f8833eab9ecf2a7f0aba831410a0fa0bc71d7eb98abaf7c4feffc94bef28cbabe715f47971abee1a7f6f2c11c3dfbc3791a1be68db36962d5aee38673ffbbaf99e3c2172c32a8efe48db7437504f10ff20b177e6437ee75ad0bf9c1b779cd0ff30bcfe76bcfa5cdd7fca5b07a1733f48fcdf539deebd7dcbbdb36fb2f3dc35a2ff6a57bbba24bfb47e6fb04dff78beecdb95df34be7aa6d355ffbb6dfdbb96ef012bf7abe8e9ef04befc8a53ef16bcfac132bfd95b4eb4297f7b577fecc57e84bf6754bbf75635f1b9f634fa1ab4330f868bee472ef27cf55229fc4b8a1bbe0bb77f4225d9d5a539b90c6eadb9c25d8a995eb2446bfa7c6496effc917f5bbc54ed27c238fe78b2239371a1dfea3793da112837f3bb7279ca6dad1dfea686f6f21ad072b6f766b393ec5f240cec95be319acbba5392d8dd4126ce76a4ecb7bf98027a013136739d603750e166bf02e7f49adc32a98cb7c7f4b67f1412e939bf552f75ecc94725c7c076ef27c71961918f0b1e76a5033a37b35c63eae5b964006384c932fdf46efd2dcad2d0e6e4d49d82c393bb13888732635794f6fe5debf52774d4e94c897108db5ab592cdfaf7b7b3f7fd8c76d2401beab15b7d5588fd3702e8537e3b4f353bb278fe021944e07736befbdd42ef554287d476426069ffa3d65efb98b1d30f8d8730a1c1b3b314eb13c82737b348a2777eace5e83a7d9faace37a7f37f68678b797e5588160b3bb8875eaf8a5f6b0df7d054cebe90de1f23a266070338fd8fb3a7383b6de0dae1dfa991c5a67f1534213b3456286da18ae37a379a7cd7737f3865dbb2b97b6ca1f5b1f7366bb8f09dccefdd779451f33b98c6ba75ef9ed3178b6f982319e5893ba8e8336b72fb1fd913c91dd1c198163617fc5a017668d6f0bb5b33a92d5c99940ee5e6d8335b8ee6fac62c21bf914245b7873483e6c598ce0dc901f89a1ce0dce12e424130d8677fc741ffb95f6b7ef8c581f2ae22251260b463f3a23e0006bff5d1f5a9cbdd19e8c9ec25929ebae46602c6fea9c17af09303e5943b48e096d73fe7e072eac2697356e9b789316bf4c0c7eefb9af3b60327f4d70aedae2186c32789917f4de180e67872456fb7eceeb5b75b331bd8be57cc9d9fce57c4be7ecfddec621f770dcf57783f8cc67596ce3680244c324a1048edec8da8fe0ad451ddfe3aacf88d7bc0783967eb3513058937c0f26f3d70735ce095d1bdfcacffd4b71799d0381be799c63e5e07142eef7e4fb7535afd2b436bee8077154e3832ec797b9de60d2e0f5f1bb7aef1dbabf7e880eb5be5b889fba759e23742ebb20b5d34bfbb5d7c40a7662b1dfbda3268fa7301dc8eb360efd924ffaafd187f7eff436bdf844db5f413fde9ffb557a52f3b0cee33c6c23c7215c1594d1adb36af8a0a04c0ebe239e269225cce3e885be9f676014e47db5be44b7c760f7d075713ea4fb79af5b3c71250fad1c4f25ecb371f7eddcbe57c54bd0d3795fb29e57bdf018a4fa00b55b56bbd8db2ad073f27dc8092518dcae97758f775e3845e6b9da1fbcfb07efc6f42efc529efb626d6d4ceec55c353ffed9f68fe162922fec1fa12bdb8bb97ad771f1cdf6e543f878ece35c897ce6a7c1fa6c7f776009388103ae72583afcb6ed237c119d0d716d3f3f8507c07c9ae66edb7d85ed999b388f690e62b6fe1d82818ce1fbc83d2779e2ac7b34ac81554072cad574eca37638c7df2dfdd4bdb510ffd6dd3d98e038056061db5076f33e35f0c63242c746e6a59fc75ddd31ac75c726751756f5bdc234c1eae435336eee29f31d960d255c5feb61d8190ebb0f5d1dfb4fc8a38fd7b7ecb4c7f07e089f9fc3c4a6f684d9bdb79dc24aefc2c4a6760183677cb6f61d790c479b3d25031c3c7c346fdd6ebad58f564f2fd15b9f3cc6eb8d805340c0890c7016f7e1ea6addb6875012cc70ace0fc2e9dd897f7f745427b0d23ccdb423df31d3bf739edfb237740ef8e11f7ad256a4b7581b2681f4209e6848ee17c1123ac8b1f8a502d6ff27f49bd17c4b7db12dc0307c9a9798660694ac2c6730af883303d8fd5d8fc181dba9257e43d7fb03d973f0c4bbf8173afb5bdede77b4f6f88f82c20d94fd7ee26923d9a9c1804ef923a7aaded8079c47e204b56a78edd1eae5c7577937768f9d48cf09f119c9b4f3b5c7f4d12ca596a5dd6baba3386e6031bc774fd96ba729dca5dc0d155f4d6fee85cfef0feff759dcb4dfa918ab92f2991c7ed1b1ef121dad1f4cfd7ffccfe41e44b45ec39daf74fcb07d7fa94c91dfeaf6daf4b7604249c2f3d55d24fd328c9738adc4bc5cdb2ec8f802326be040f80f0a638bf928e799875014cf5ef4f9c4d3b869120de00e19dc897ec4ff108614b7f1fd9c3afe00398668cf2f6baffe8037f5c1fd8b52f85e3c5a57de940fc49e08bc78915301473e98435cd3297b87e45133b4aeaa56fb2fb7a3a5184d3f1bebe5bcfc068ee59be74ba9f7504b38cdab0e2ae7d79816982d2e6eda239bf66dbfb361845b2f2556d1f1d66b06387cf40f7f3088edeb0bd1fefb9ef4b300a98c7e6729c1f9a4ba4362f084634bfd9837b04eee2a1798164a79e6be76d5e765e787348ec7d38641a3e6155c7e35fdad9700da41aef5dd50177e3f70ed86f6653446d9ce2fe3029f3da8e57ce1dd1f7219307d8e7a619ef2a0f184026f7876c018ca89c18c571ee121f235c63b847fdbcb01fd2b75489a3e3dc7ccda6e3c521206df2a0dc1f692dbe2888fb8770c84693216aa3307367b45337ebaa9387bf0a070fda242f7c3bbc14e3d08f6ad5fca45f0c92c95b3cf079bead5f2e1d360ab649fcf64e5740648abbbccc8fda2089fd9fc6261670ba552048ed12a033766a5cf580de0476fb9fe34460f025700044728cc7d9492d03e198680e6efd5444e702319ffe88ae066a19e0f808bd4b60f42d522b08d1968b7a14d76a340c5f3bb6793b513716ab9a09f6a7a9d7d3d4471876eb3828aa55f6113e3ee07c3fa9f5518d84f331293e7973d11be7ab761cdba271a2f9f9f70ff12fdd75d5b0ef8e45603eb6635f821b83d460fdbcbe8ef693477bb8223c118edbf5d222f3983d5cd5f5e16b5f06a960e6ee7eefb9918c6bfc8c17cff266745287fdd30abd11acc704b9df0b9ee5546443e95b3c1d871918ebbb592c335a69a1b33cfa5bdd5cba199cc5f2936658f15b8b1b8e3f8b1bc271a4e857fcc1c2f1ba53af77912a37cfa19175eff8dcade3e57011dfe2876efa699dd5629409bcf1ffb76a1abe3e5e5ffbc33a88ad2cdfd8e238ec8b9af9503f06c35dac9af43c1db1041c3c2c52810925613f8be5521df79fe4b838211901ebdcdbdf0afa5becf79404b8cac0efe98ccf31cff24639ad06fdcae78a0c0c5e37c0b1a1bc656fe060045beb366c4776157008ef58f17d9ef5aecfe4b5b7a6e8c35fa6c382ad4fd6433ca8035ca56a78eaf1e210a6761970883f7e883fcf7cc7ae4249dc07c31bb20e9509701d0af7f557e803fb545fb10eeaba52b5ce60bc38788e86788daaae3965588b47c6c6f95480c357a17b637c4e40fcc821e8d93f36c7637aaf64ea801cb8ebf5728be00cd395c1363eb25307f1962104ced3da738a0c704ffb259acb55f71e47eb66df7abf37edef628ef0fed4d5a02f797b746ec176b126397617fb8677748a2ce82de2e95863564e016769c1dcceada09d3ce7a97d6b093c90faaef2cd9aa2cbb11c377547c78b26c7ef83fab0bbbe051faef7467ff4e67e05cf8665782cc335fc7276a766ec01f1e95388783c9001c92ea7e37ded97d1f86ac8b17a52a5d109a468ff5ab642f47ca340dfb8edeb70a173bc5e5b77bb6870dded35bec7f9fe58bf897f835e3ff29b795b9df823f7a2ad154c7c0349dd9f4498dfa7b9f7f5cbb7f4a703a50a24f170b3ff96c177bbd1e75f3fc723ad51c9e1dae80ecfcc62e514a470efb90a8fc608075857456a0b513d6a38e0b15dd06ae26f1fb14d623bdfba89dd25b89a99a638b7f0a2cee973cff7f98b6a46d7efb40ac73047f7f8bfc10bd807a2c3ea0ff0ff3df5360f70bd7e3f33ddd2311805dbe73e773fa32a1c142f54ee7c06469161796a98312dce4a9a9af45d5dd0d27da70b6a7c8dbd5eb73e1b1b053d1d0675ddbf111c35f28aa433adbe42b1b15e03c9924e938350d10732d57df44fddda70a6243eaf2ce5e8631d4827d70273659eb1dd9d47f1b720f225982cda7afe1ffb3b4b1a33376426b44568a73b361c8bced216775a0fba36139ae1187cd7ada0705276b71a02d673b549288643639b653e0734392e9270f8507daa783aee33734399e8d67e66a7fc772ffd562d5336d21cded02d656024dac86723c94eede99259b01af4aad5685f8650d9dbbd48d263390fddc5cffa5c93182777f127f6eb778cfd9222e693b5a61b79549760623a028b706a9b5bfd76ede8f7f53ace72b59ff7dfea4f86836b26b5fea46298f95261fb298bebe2766ad2dc8c359b6e1588f5740378a556349ee34acc5af1d2cd8737db2ef2701c75726866d143b5a4c78bff5dc7d18b0f65d533393be9e611fa9c8cddf1f759835428e5f1a53c0947444e3bc5b2c41fc3413f25b98c9f106d797e943eda9270ead046c43b6c970edfa17ff22918afe337f7262fb3d3061ddeab13433f318afb3e456dec5783db836a778bdfe9dadea326a722eaf3399ad895a15e70dc45ac74e9d1f7709017755e9e5aff1aa2b7356063ecf77b5b0f7b37a75b9b0f57fe0e5c26273436b9c7a35f9329073e277caffd813c838fe9e7773e3f0fc4dc113a3be863d9fa868d0ec19ab413919c6efd0ad97b1ca462028c3ec2dbd2d2e111dd66a84e2f9aa661e9393a3439d0fef698bf18ee2f4b422a8f102e15f3a5abf332593f91b5b07f02f6ffdba98e554dd2d101f4940848f61c246d1fec8374db764a6aac730817b3cc2fafb12e454c1db70d7a7fe8f46f49a7c7f05374fa6763b4a7a4662bb322b58cf0dfe7fe6e1fc4517c48db22049b97701c296088e5875bfa0a663adee375103abc7ef65c86bc931e824578f59db4f8b2ae19286753f44658265fb98bba266a1c0ed9b33aadcddd70c93b09e2a29a23dad623eb094a3e070ebf0da575ee0fd96a3e54ff170e33bc4f5cdf6a231c3ab64d526384e3db33b57418705ab974fbb8062abe1f6676c0f9ed07ca91ee239e9b2cb665f99cb76eefb197ca69a7feeef5b782ce7de3f714848b327fc85e7f1f9d3ac433cece913c86edab630c97e3dcb1daf76e8e5efcea495087fbe3d460b2c9581680bd3fba46922a7194cf8d08c32188a37c6266e86ea3bfebbbfb4cffce266ef1cd1f747cedc6ea5f6ae9a5fec04b5bff3f2adbd998af82c156e709ae28f28951e46fb4a61fd82e9a18a4cfc71fe92fadae21830ff170d24dbbd5619a80d273427c3feeea15bec49ef1633e84fa5639fab5cd2b05a5cf31d4f7fe26dd653f35cfe3f6db23e113ac43287dfb77d69034f96a6a1b635b9f92d8a7b23aef03be77dbc5a3791fd27090d0dad076ed13504e8c82fb837f7e4ffc63b8ff6dfc437396d4b9a56ef5fd691f916e1efb5bb6c3ee9bbc58571bd7797d7d6238e8c875ef6ca1b54fae7508c7d1dbd259dc9229597f70df8e20a745d6cacdca3c90e0a1f5edb30e7eaf9ff9297aa3ad7ff18db9f2a5d1caaf16a96757e395633d2eae19ecf054b78df5db70baedd82dbff0ccb00ce26a8ce7b0a7a0bc61273ab3215bc477b3e9d3e63bb8ded766baf3994d0ef27e6d6386b8fe002b64e0d6796cedfc231f045f4a3aba11e1b4747824cb5c8135c9c37033dff9f9d91b58ffd1acb31917e7aaf7d34536e9e8ba670c64e62e789807355a1ef4ef3f34e0f7a401abf1a768c0a623978d968eaea1fb150ed64d3daeda47e7fd7db9a8fb3e58bff315bfd2e75dadef77394c1c5cb3ee104862e9392c8e4398b86c779deed22972dbe1f70faf75b0cede9c10adf9e0b9fd6a2909cc02dd9d9e02eb383b72eeb04bdbaeae4936dfc9a97b52438ea7f9ebb0df73539be297c384e23fb29f5a7e26fec993eefa47e2bbf1aeac611f70c1959a292ce51194d6de39e8d8cb7e78dc3bb5585adfdf0f75f6beab6da729c52512e48053f0868369600686d7e38c8dd4a2b8ff86fe780c6b3e25ebd67721f1b3a4cd47fec9865bdb346b9fe7fe0c183c8e3bfdb06fbbbe6e5fc973ed0d7017cf9def864b49fc702d60dbaee5bd1ff40dfdc82883350cde9a3bd0f289cbeb7a9acbfb9faf38b60255c64cc7ef72ae3f7b46d1ad49f31c6c1fcbcd8768899e5a3f61bb503bf439847e6a574b575db7fcc06d7f8aa06303309ca7752845509614083878c0f1e725babbd84fb6e7b92afdbd99e38064b6d956fe456b6fe4c3b59f0a8c2c899ce7c09ce42c7fddcbc3c5491b7c6e2f1d5ea8b774f5dd0fd95f7e7cfd37e302e5ed6bdcf2e8c4778fe629fb79bdc7408983c69fe626df5cfbb0dcd3755cf351c9974eb80b0772fede9f53c9001731b3cde8f4e6621f982ae8d9389ea0abbb3706d135ffc02ce8692c89f516ce7d05074a0206fcde37787ee5425e1e45f22c61b5d956abd0bd7b7ced8a301d2826f6099160bac43507db18682c838cd6bb773686ede2107042be74f40ca470e3b9d8a6fad6e5d527c62906d2e2e03bcc01ad7565f465639869a699554159c74316cc7f200fe72fd42935baee751d2bdbc427a6d768f943b62613b8228be3028cfe2c74d818b8729d7baf6a7eb38503fded219b5c633f1cdf8ec5edc2241c34b516511f224f0fb00c91cd4dfe437d20a941b58bbb3e2e93dee2bb6a14e73e555b1daec68b3dcd5374d3b74a8f7975e9f0dfa7e33de357973925bb35786d612ac1335fb2cfebebc4044876c72f47bf9de3b32bc7623f5c3d39f31bfa19985d8ef52fd97c1fcb9762c7e15889bc9e0ec1e8613b3933dd6aac87730c68ccaf82e3ad35c9f19e9954a3fc425fce20596bea90fa8037f5e623ef6022f9bf2c5e42e9db65ec65536b98f8aa175988ebd23d6c432738bbf65bdc6a475f82c9bc540070d578162b33ffa6cfe8f5f13c2e82608ce0b568704ae7bbffc910c2a0949fe5843f3e980f97d8dc1b1fcbfaf3b7d871ec4adeec6233fdf650de805a5e5eba00fae364ddca05f51cb7e4861f9f13dd95ee98382700f60d6fe1153add75c1c68fef27cee59e7f01f34ff817dce051b6785d9690ea29c479b5c231c43cc3e7e8fe2992ddc501bd856579c36ff78b6270cefc5a13c4afed61b055efdf8587f9008433f3fa5e20bcf2fda1bbc6d9487e3a789c5deb2dd11bc735d9110ff9600cc7c27335c674c472c9d9a5ce89a73a762390c42a1c5118246114dce291afde1d5859ddfe9bfa4e5e7eff136f0e8d33e8ef3d57f90e5ca5babaeead7a0f77fe7778432203c020ee2f4207f1dfeadac0be5b644f4b57ab90ccecf6681c202b7c07ee43344141720370e5b5990a09b0da189d766c6de7f714c6e5888ee9d3f8b6951ddfc54522bcd78d8bc46731bacc658ccfacc43a6446e1497c6af2910de6cbcf2e24fa0c5c337bb185982777383bac636a3ca3286fc6d474cff8320ee03dcf4aedb94589f88a6e8eff1fe0215a1b7189f8beeb7b707a4a8873a66ffb5180f5c1da606563df251fd8ac1f4026fb80ef387d04cb0fe3192e78e0a0a7973ec76f176eff14a438a759377e29fa24ac714c8a0c352648850328fbfd608c63806010cbdf3de3137cf04031c3b172c4f90e9bb5e0f389bee07c2a3257d8ae73abf99ecd0ab760e27062f84f9f4dc8d9d192114fb86e506a975d5f54cf78c817d5c5fcf1a81d4b8ef7d167f8691986e8bdfc1367d243735ec29cbc17b486fdc55931f76545c2abdcd3513c8a97aaa524e6be24f44c097e07d62f3917f36c4ce3c7decded315ee3a934faae1aa718d31d82ef7e40566f7486386fd574abed3ca7c8fd5ea82e9d3dbc7e66f7db7ce62d5da733d7747b34567bf341acf6cdd8aa8fef829caeab8e5db8b1cf107fa0af8947a3faf92b36a10feffd4ff0e8a35b3ade31d559463e8e03d4897d3d558e01ce43a0088d1dbc17317327fbf53ecbe3d667d9ea2d04cf58973353cd665cc7063d12181257466bbb1b327a0382e988cc72c097449f1ec16eeeef70c846f3a108d54a88cef26a0e47a78991c7b2c4c4b374f44d752c6e5e46d1b412a14a7247494b378260b0ae70bbd17e2f6f323cd6ccfcb6f38c6f05303decd3aea7f009388b9d5a26dfe5b8aff986fcec99a70298a3b21e73665c1b336cc6544deb7f136974541dab50e32b6d457d2f6f7674de113b3178c66740b692ec643254b34929af2d8989a7635dc0fe67d29ef89f99b8aedde88fefc1efe97b10f6fed3be076d9ee7cff91ea07b62faa9780ab8e8188ed0590a659b6397e814571ddb24e2574349db11be5adc93dc6423e132efc9b5f994187c68f7ae6b31b779fa2eeb145c9b3f21f464fc33f65c310163f9391c34b6dbbcae6f384b47f9795c9af26ebfefcfa4a8e6f63e9c4a27c16199dcaf58df35f71988a372e27e60d71e7c1827bd43b4f95ddec9b27ff07b8bb5e78268e91424a7f380596bc3d7db35bccee2d6da5a51776ca32f4bc7db8503f8120e3a76ec3a5f2782452a94ba23e23c4973937f217ebd75bc21f643ac4287c5356b428767e69bd7ffa1b3095d12a73c4b4f87606c5724cf1293cdea9c3b46a3e366a65bfda9eb4f8770208e9b10bb394804e6466e5e01e199abb9fbea3e6d9e351cbf3fa5ed2ff2ef3e87039c9bef3c462381a3298ed916736061bc1005a9b503c6f5b613337bb71f345f388eac8efdf3c51ff095df5330cd9d8ed543c00925d19f1797b4246bf2bd39380e4cf3dc577c6e249f5a8b633b77319a71381e07e3397fc39c66dcd337603474e7c58ff3ef753d9160c34287e3434c3fc6f2c16fe305afc65fa1f33124eb604870bb1cc02ae420c20fbb20eee4a97c3c57615ddba4bc926b2ef73738b79c078c04c754611be4203a20be86d6f514e6265b29b1b70b2a06d1e568bad5709ba964b5b9ea8c7d3531f7440ea8a87f4f426380243ba9f31ad6f92a887e477e26f1bd27a1bbc7fafe10b87573dc9daee6629db8fb281c4425a263338ec88a6f4d4d17a66b9bce888d15ebae7713cc97a8f8ccfd019f36f9489bfa012ada3b3371314e82f3f47423df287cf1dcc52e4072680d831e5bff4ffa4a0ff515a85ea8ebb383c66978996bf03aabfb55dfd94d0b1beccb43794ccf6576d866d6e4ca55b3690a8e416247e8ce35f1a5dbfd71baedb301b7de7d56ef120e8a26f616cb8723921f67162b1bd407b8f2ed18db4fcac9ab5e54cd365040eff8137ec50fe468a6f114068ec9be97c330f9a48cf63e9757a21cc3b17ef4cd5dace1fc6c8af0667469d4ed9cadb52ea8f545b1b25a8e469fb15fe2ad3c27977e2c037947f4f12d8fd1e69369796939eed738a59a187256fb1ee2b96ef8d95df7cdc0f43a426feafa9c5e8a78ff39dec375ba59e3e45b3e21560ffb1fe17896a5231ec2e12e0e3991d40521fa09cd73d70779383aa9837e9d87b59225b10406f609edf9f1d34d1bc40fcbd0e3fd5350ed7a3f5ce3ee22f67cd1e55f46edbb473c0ccd07dac06a5e2a16f547433476eda7dfd69d5cf56baf679758ff2b15fcb9ffd8533cfbe13c7c343ea213877f1317182487909c46d07388ecfe533a4d026bfe4eae2aaa1796bbb122b9df936fe7acf984ddf0dddb1c28833a472c8dd3cafdf22b7525b77d24ce726aa520477ce49d3c676777cd76f82a90d0582d1e68efd9e9ee3d0bdbbe9db7a6b1c116db23f295d18fc254cc7c5c9bc53ac89bec33f9b6f2b6bec2755f0e6b7b9e23f8ed037f942fc9d544ebaa757111480b444b6f8e29a76ba6737fcc9b7077d5bb700f7a7d34debacdf5d5df84ae82ed6bfe3839937fa6b17c3f9706dde387b135a2c29ce5bd765bfbd1753cf2d3f6bb9b393774ce226fc9e13344e349bc9442735e219c43f3a79afb5e386447e120f2dfebfef82390ec363e66f4505c652f1c74ea696f171fe842b00d88f5908c1fe3dcb955e8f621febbc9554c6a78cddd3df4535ccb2899c5a3e2c247fb03dfeef776e7eb7ebc7be6126fb8bdc5cdda276d9d319c73379b4ac261c11599c7e5cf13c247d67b80a148f6311977f7219eed719ada074c831c5d98b84c5ee7f792cdfeafa00d5c938371bbc736a605c905f92ca70504db05e64f6fd7776a6bd6decf116b5dd455d4e16aacf77d096efdcd0eed3b0d493dc55bb5012ee43ebe046e3ff71c0d4e060a91efe2538ce6bf579b8ceefb161dce810318628bf87ccd82331dc2e04ece90fbf8b6591348854328d6b91793937227f7e2159b04a95966f0cd7d9af774e6767de47a1fc9f35dbfef2e6dadc72275d40ec0e131eebc156762e21cf56d4ea4db7596db36d371572ff359d81727f4f691ec6f3ae2c1bb5d6ff4bc9dcb64b394c4789cd5471ab10fd747bad41bb67aac2bb99ebbfa1b6974d9f7622f9fc1653fee9f0c8cff5ffc931ff19742e7876354f69ec347c47f5f6026d2e8a171ba7ab85bf54e88bd87eaf8ec1fab43b7e08443d0b3f7c095d70b0ee773ab6368dfe948719c728af3286641ca929c8a5b8df51dbb7c24f73a891b87a5efd889dc19e397d552e170cda7668e768f88e7b9f59b9cd5f91ede5c16ebb6dcde4240bcd8d59cfbb0ad7b0e442df3d33007d6459d8df447ea8e34312d9fac1da25421cd2fdde4b2fc845eb0d1bda03b937ebb9edb32d5233f0db1bcf846edb0f6f84feea8df3277d488ffc1dc51d406783567c5851dacfad9bc5017b16b10dfbf1c187db17defaf8c3abc5de3ae1bcb26437d078c3eb54baed7610a237910c453c9cae53858030926d4b6c42f1d3b07837ee46f937590da55e8144c503ec55486998543d6fa021966d6e686d198b97356eba3b151af48ae80723a5605cf55b621deab5eb5f7adc8e7aefa4dad0486f21cc2dc640f73eea9535b3184e148e8f9b0b52deb925d793d250bc65826c276ea59fa84f5f572edbf3fb8fe6694d88b3b78e086cdbefb7e603eb7afdae93b382479014e5101a39f62ff00ecb3f04de8d87ff6aab93fceb15de8db7e6a243b620312c289e1a513e9244cc6180e25aedfb355ffc27fd7367433abf147f636469fdbfb8adea012835c89418b8b243b5d3a3c6c7151d2bcd1a95408338ee6fd1d154cc7ef210a7a1a927576ab9e86f31a0655f6b21a894fc0559f9dde9e593ada77f49de7da8ccf6adf97eeebb36cbee6be233ed912dc2c7b9aba74d82c1cee9ece6a866cd6b9efc083950a4ced8fa30e8abde746868ff9665c8bf4f4661458cfea8c8ac84bed3ca876853a28b6410a1313f126aefabce2f42ce8f573cf4d9e655314de6c265f59cd1aefb6457cb4c7edabd976bf696c3a5576c597a413272f7edb519f9cc8dbaad80ef066e0b55b181e4c91f90e64661b35efca2aaad917deb09fa67ef4b98259bafdf3797b687d649fb3f4f2fdb4f37b03fda5ce571e703613b07b48738d57a0ae672632075f1263e014823cd05fdc32d23c57df4d53310eca08b6b944a0e08d5901c9b0869150fc2afe107ebdc2df1f7c4e874d0c7e6a67808b62bfa7bcf98e8d78bc4d50f25be0bed3156440c2f5f170fc493844f4a8d6032ebeb85ed40d7efb43fd1d92fff881cfe9fc27da594b57cfc103b125c42efe2fc4259cc7f9a63ef6239073cf559fe5adb64777f776ecdad53aa4e5d209337fb3ab7d3a19c287f390fa0cbcf9b44ef44fe74ffbe56b6fec9f75ac42b726e83f9ddb7fa7756b3ba037c109e5b27cddd9e3f5d1daaeb39bbaa6a676463ff3a513c6d75dbdb32fe19a50b80e872d098ce79ceafd9e3c47fb0e5cbd727b61b9747506384fb91cbf1edfff8ee4d74576cf6fd7a77ad74082b93fdc45eaa0b815533eacf5d158ae12bfed904c577f87f66e58df5225b50e8d7d6ac4c37004e7d3adfe34c17900bea175bce11aba176d941874f08b3e4338d42cf97275fbbd7124c6d542721cc4eb1cee2a755010fd0dc1758c61092670950cb86aeef7fa18970755a686e356d7fde6322f0b77212c7a5773f175f167eb4b3a125b5fd23f32cc6f2ac3283f4c631d96e9f85e5ee80a3b3ecad394c777d34b85d2e558188e95cceb75fdc9d6d46f95f96bc559b58fd8d5b7bac03a4a5c23239a4a3041ef6ee9eafc2c1505c443dcc27d8ffade992d8f407de61a7ef92ff5315f85cef99fe2da17e143392b39b3376e7c8e3f001c23be5877f8976a1acbd954b2c8fbdd2e046bfcc8fb559af7bbda625f70763648729dfc5da8c345361d457f64a8df4e86c23e82cb70c8d675106fd740a4f256b0b537188fe25c59f609b8f26e1a3f1dbae7dadaf4a81fb10dd079651e6757a604f74bb7d6ed5de8cf5358858e982379abad2371730c445319342f701738163d74acac636f8a42578316d627b0d0ee8ebd61b15fea050fcf2d5d8df59c225b75fd9125910d38db00aec662bfbad676c60612ce9b65521dc70feca9f6f146f28d8e681e0c07759e4b28347699c6279a4fb0ffa454e0fc3a73c712e6db3cd6a9af09f581fd0edce45d6eb6ebeba0f38fc4031845684ccac3ac3b70d48f800b736061dfbe2dc9c5a8e37c5f589f2ad9342f39b39b5cd9ff397ed78ebe5410be390dfe774ff60a1dbe044e9891da4451e4a77a0e5ca59a0c92e77bfd82d4de2e5d8d01ae227b0e9ff8925d06e53a7b3bcfb377d727ff06acd05dc3f54cbab558fe1f7b5fd69da8b2fefd81cec5418c4973190710048cccd49d402248a1fc1b07f0d3bfabaa180a054d7ad8fbf4bbfa62afdd51a4e6a79ef1f7b3589879bc75f4faf8587620c5d847027ca6f3f503813b2f26379ced9f1ccb151fe9fcc0a27b7b6dabd0bfa45016aabcdb14029edbe2714e53469eab90ac9715e39c76d6cac85da17db854cd98c39298c37227763f635bd4334a1624561108700b9cca779266f25c4bfdb9fae196710dafc8cfae635d80bd7a5eeb79e5177c768737b9f95de7307bc7b906da87e78c2fb56e70490fb2d0da53cfebf9cdfbe8397d648b7f36efb1e6cda4fbfa037caaf983dca797f7b9f2acf6e5930a2aecb5a375b476f019fdedb34cafdde6629b66b4f2130bc727efe74de0f68e16ae8bcc716d85b86be4b26c133f12a9656d3e1767e5e7fd185d6959ef76f6047e0becf0e4091af4711e0196f5913c2ff9a6917e604bd08fc4ac94f9cfde64c47883260647f233421c3fa962d3418981695defd5c939c2369c3ec85c5b82de44ec1e53543f1797f644046c2d7ad77b9edf31bdfa9b5be5ef74ed8728bf108e62e9e2e9bdbe902d9e2f382e00d25992d5dd3d5baeb189eb8de787144cf7517366954335c7c87e36cbbb46e4f198e0fba45f0f5ddb953d9c872e6bed3d368f31265775af201b9be08095b5b4cd9ab9457ef26275efdaa31da8e3fad7f7e283b5719a763c762403075a4d6e41dfddf6c975acdf8d6b2d7fdbf9d376654eef5c4a011b407f9b7a62129675e3e70824dc367094c8d1f3f26ce0df3d8b3b82b12746397ed613f8514f1eda7399ab8ad7dd17b833a9571e44aea3a66ebfbf8dfc2e467a9f4671199e91be71091c09fa180b926744813b7af37843f222c647605b31b23f4adeab3dd0c72d992e0af02236721b92ba22d8d78fef65ff695fcb2970b40ce9b6789d58ee0804be78d7f13e987a02dcae2fe9d7f4979b73b7f9af88effed7cd2ae1b76b3628eb59711e408863e7d5bdc33e45cb489a7a6c8eef4a7146b7b52ae7e58e3d97484575a7fcdd6bedbd6612fdfb220f25487205944de56358dba35db9bf767ec29fd79fdb4748ee646b5bfd5ee72db5747cab75a7d79cb93bf52046f927f6201a63fc5f1196fdd591cd896bca917e82f6c90aeb41579fdff3c736b97de90be6c8ddee07b2c02560a7c260ba2fee70ba9d3f89eb795edb79b68c66672a7730c2bed121c1cb5f46e2d6ddc24865a5588cf2adc7e627743f076c98068219119ccf81a115e35595e754e5eefd8ab6d544192ab6c23c687beab1a364ed480760afa2857e072fa3c3a7dcd4b2b4ceefb3182997a5a14275ea4644dfe48a65240dd70264804eea5b2c7eb369f28fc4affa91eb5c41979635d37d24b22004d3d7c22dc4ace674de05fbb5a311feda8964da93df356e75eb6eb54831ee8c5b80e75fb9ceeed67c5a1aafe7de7586d671cd8e4e01db5fc7d296a7e7a8d1f9942abf0acb7a792266228fec14f2b9579c23b93d9727cb1ed17f977185732417d47b9c5586e42759f37364586383e453314764aff4e655ed28eeea896400bbbc0f09e659f8c67e1dafd2abb1aabe450b76765cdb1a270b339cd7eb0f2d5cc7b198be668af19a2e8c7d24eb3dfbe40a3b588c690c16aec63da9e6d435ba7345afb9defd88cc9d5fc4cf62c49c3edbbe6b70b55f6bcd5a23bf08c31adb6906679fc7d5bae519af6a9d975189bd2ccc6abc2eddecc2c6eaafcdf802b60bc4b85818d75365fc6873962b0c8c09c1095c46e21d4ea65eeef2b6ae1535b2e5bde6226772793e3ef92cac6a074277a79ebcb9c5005dcc02813b2fb7af19cee19eeecff23c48c15cdb637eede92b14a37c0f6c1c737b16b7b3b332312359b8911d1008580f44fa486973507e158c6182f37bd6c1742076e6f774fa4e3af37cbafdd67c5afbadaddddfb8d31f1977e2831fcb9d630717305495b503a09658b09bf749ddbb8e46f6d5a37cecdf53bfc67f2a8f23964e601e3f7e0e6a6920e4b0890de56990981b3cfe5e9cfc1fcfc52075cab382bacf29b9609e4b2e627c6780243f05977d84f3ae8afefa0731d9b0947fade60df1fb716307e071ee01b316ac103ce2a2da69c523eea340a079a1317fdf9d7c482dee1acb1d2c0e067471169870f6d9dfd0b9ebf7f0b2c49d1679ac36a26bad5bfc4a838079b3baf9951ee34a51e78ae25eb28635f7d2fc2ffed11f867fa4e756c79aa5efbf70fe280c91b4c95decfc1edfdf0b87c9f43bf77ae3eb1fc1a008c38ff979ef1a03b4270e6b47850b3dde2f042a668d748002be50efdb78a4ee80f177f065ad87473919c1f739c152f8c07c1104b3e67da8ec01ae35a2c6297c439fbd047369f4cec67b2f1a316ba4431721c963643146127ec6479f39037a2c9bb58edbc6e72198e29cc9939798688d9b7c4863bfc7f986e5dff27cb559dbb866ece8b2585f08b1de9258435198b5c78bb1dbcc7d3081184f4ede697b603fedbd497e5a38837431098f6ff6d3d175c6676f1ee3b9fd98e79e839e2de781e452c02a96acfd502c19cf9f3a407a13c1b6297df64896d9dc20980e5a756a952fdf64918ddc8ae55e00963b58ef7971d9300c660dc7e86dbcd8e2a878ee05d8a3b896b9067eef229894f8531556cb24afb063b2d65c469bf4bd90786fa7411fe96b06d2ab0ef05d77133112312e44bb0614cbc8fa4eb8c5c6a265e855dff4f0eebb16fa08dd77c7c564937e766ec448ccd6f628f118ea338a7fc767d1fd378b64c12afc842b706dae5ec72f314f8b37b498378c5d866bf84e81b3dadfa98f4dbd049c9af94ecb7b887e3fe4e4290f55bc3f475bb7ac03ea1bd36dffb9139a4bb17ca7a88b1970a402fb508c31d7e429d4fde57cd662ac6adf4d36ed98366b31842bcbdcbfb3f00812ae9ef3326f857a3f8ff796629b484ea51fe8ccb4eb2cb977b6bd6ec8dea3c72f0b5d6de4dc874dd557f341ea09b9e52503522736812fd76b224560eb0956e8c3665dae9f59747061a135c7feaccb4feacec2d351db49216007946ff7dfcb3dc57263320e45a1d9dfb83e85f8924d17634df57336dd89dff5db0202acfc6eb8c6792d7019b257969164a079179bb318c91309d7a5cb36c9ad17b7fbaacf940e79278e9548a1cfc2ad6cf33110b8a3a23771b7ab9ae2ed5ae09946aedc8fc9e13863479ccd4b9a3d2c0b5aeab365dd7b62e2ba8a4a9f29fd07e732367a25c3da7bbdafa611e7be51b5d5b54f3412bf2faeeb98c959fcafb89390fdf32c26f0b816ac62edac2274d75ed73d5fc98f3adfd574569cf6b97cd71b5d19cb59be5d7b24f316c69f000eae55792e3112b1dee4176256b7c333a9a3e75a5da734e7ffe6d8fd993976eea7f4a22195d733fcc51891681ff6fb00b40ac7aa4fe659c39a6b119f097bbee27ce70b39a47c8327ac0ffffae2fe485fdc44fb415f1cae5bcfd6b6caf84c9e068925001bdd0fd60d8eaa4bf19affa69cad29c583de8f2b52e6b6b80957a0b1e0d84f2f3ecb260a8410ba76e31beaf3d534318d5ebfccbeb3afb3fb3ea0750b3f4d2ad60e083d820579cf3f45b7a503473d797370c75788c6b9a16b7c913e697a0309fa2c970589b991f5f1a1e439eaedab9b70f17bcdd59ec3ea9e95e62b4effe17bf666df34b267a2d5b2c77670cefa502de20cd8b3bf72e84f9443732dfcaa1c7a204378a29b77f9b157951ffbecda1ace6ba8b90eb69b736feec5cfd4574e24d5b54721e1251b9d8050720d75e4b5f69d6ddb29737d581807c2868ad3d5f55f9172793dfb73749e912d2731256727921fd035c9676294631c6ce07c0e474d8c6b1ee40dd239fc1dc60b207566f0e0bd0fab3c4eac7347b200e36524616c15643b35df37799ea42ef8fc2cc6fcd66531ce35999f87cf633f13f476eaa0f9cd2090274f47f99abb5ce019d762e8bab79740808c2794be9119ffb47694e7f72189b12c23096333637e53b47616c6bf326eed12e5a25cb0ed5ae1b03e8b49b85f268303e6addd315910dfbc9bf435ca0f6b7b64e37a0083d49697f579cfef97d7677cafe29c0c71ab6c671760a8117a9fd26e9f516c1eba464c7069056b87eccde5ee70f6866a5ad6ad4781c021bb2c73f19a6963b4cecbdd61b8b635663ddd47cb9bb8af8f71ac64a1896f2f77870a47fbb2845904e6520806dac9c4b54ee7c84fd06f35929f873e4fac0b705691a3e7df816d9d757b34c1792f7305dfb51f7a5e782cc798648d9edf0b896049391af4875a8a6dbaed0c8dabc2bb635c63005d3df44a8c07c6d54bdb49e0c337f45b6114feb5a1fe481baa708d5f6b437da9469ef239ac058bf05b47e24599121e9c36c6dbeb713997a07707e7ad2b5e7b25df895ce9e5b3ecee1bceb74c40e60dfd6731e10781f0ad25f397063ec7f55db68c4474076cf01d37a5fe7d87bfe79f8db76e5afe1e5fe02eeb8a0f67a7623c8f772a67e53a7fae9d3b8679291fe9c314a6612b47e612607c903892e79803e97c93f3d2cecb5ba2fb19e3a6fd33ed9577c67d1b81d2715af21fc953973d8cd07de60d5f9f95497e959bd7cefb930827ebd813ce7773940201e72e443d7b1ccbf34583578acef89192df452dbfe76af8e648a12ce47fe5f79f29bf4fffaafcfeaa0e3ebfc17644ba609fff0c94b9e5b5bea418af67491733eaae60aabba2d4b1704ee13292c4b5a3321e1b14aecd44b280f567e87f0a2bfa1c190217969887d3b5c017c4c78763e4cff6208b2a2e542467aa5a1cafe40840ba3daeabc1181adc4e315ef7189b528fa30f8bc9e4e8e9d8755e1d3d3ff9f352cfdb1dc83d65ec23f2dbf1d578c2f1bb005bcf5db5b5416701f7d351369fd6a79d4ebd795972ffb7deb9b69f36ab9db55db316f395f7f7e9ca5ec21d01d67d89feed5f528fd6b31d87c9fc843b053c89952d7759446a40060c7090dc5a45cb48cc91dcae7c1f1e3be33c61b6b7872457c6636755ae4cea1a8393abe75bd718848ba9f8847d17c28c73f5d17121a8e142cfcfd577cb499c0576f9dd7c8cbe3bb8c6df5c9b3f2ad7a6e41a5ba3357ecc3546c76d096ee8640c6ff8a9b07d9b9d9d0edcdaf2bbdc798849fba97cc6e30afbf71e3f6711994aeb2407746fafb11da8311ecb3c8bdb71016ca69f5385e01abe80241fe07a54ba9e61380e8140ea821fbee76b1ca65735de44fedcaddfb9af2f47b51e5c722a96f523ddf956825972f794f7233c04945f0dbeed56ffed6927f56c1febd37ea23c036186c61c7ac89e87d6599cf1859f704331ca9b7b6c4b385cd0f9edbe8fe0011458af2cdc4b3a70f158f90cd91a1ae61b198ffd9d740a0a316b7c51d8ce883e74c8955c3c2d7c21b4ef3dbb91856ba196853bd718ecdd0a8be4affff6cff4df0ad297fdb798732ee15230293974aef9fcec5158e126945cb810f0e30cd81ace9ff50b58cab691e718157fd62da6aa97f055ce55e809f92960add81472088400eaa67691e72b8c6784be775915fa435558db39031c91c64d877252fa2a19907a73a4cf36efab7432bfc0dc4cbc6be31c429c27759f8fca22bc0504d708ca3bc267af9b2baaee758f7396bc8467d77610a2b1c8899aad9d71e4b17c0126a3a19f4086e83f1843254172473757697f4e765be7ecad2da3e598601e7d363cf93b4dd226b83e6cdf570f2726b388c22daffa9389514cea221d265dee5677f19eb4d2df5d723d43cf1933effaa09e73d9ae7cc7526d9b8b02feec1ccc958d6b8f46e5dfc83ec1fb499c37fb478ec47451ee1bd7c05c8ef55d59e175035c17ddb71f285ff4d7f644f8774ff4ec8964f6937b828e0fdcdb17ad3842f7def847b9777e8f1ed6f0899698e695fcd4c7d59eae3030bbe45bc34fd15db758d581d235d40d7efa8ec9c4b8e24559457dfa46553bdbe21d1278745717e41d4dfe593fdec826f2e97839eec31863a6d5e7f0b2eff5db19fa3d7e8fd7a37ab1b0ae290b83f07d46c5db0cb38cb7619c9dc413b8a16db46a62988775e0ffe6be60b9a3cf5a477f683dd81b9db2eeeffef8f9fd41fb4a23d7188c5cbd0b179dd6639afa1b37a9f5e8c4350691abe73cf11bac18a588b320f9ab4fff91faf40cfef27c0897ece1d04be0017d07084ec1d11bfad7f86b24262b9438e05d71f51637be982e0a118a3b06db7aba3de382a4b1f574bbdea3ffe71a03c9d5f3a7bffeab3fd37f65b25ff65ffd2bfea77b3e1d9a7ff6edda5edca9a997a8b0fb3edb446bbd156f4b3c76c498254e8f32797af213eb50c6ee2e6bcc333dde017b047d165ec428eecbb749dbbcbb144741249ee56d58fbb9c4b27f1db943657b7d1c467d3167a6cdf9d6d376778e51bfced3b6c1f3d41f6a18c7dc2faa5a54357c73c2b0b316d5e68fae75c3ed61d471c31917be596a280b87bf71c33f336e38fb72dc90fceec6074eef1579beba8b13e9626e2a5c0385f1f0b0de67a4a13c2f71e178ed493757cffeeeae2fea0bb9cbe7309890ba9c00d73e229d3587b8164d1f5dded179b55789d48dbbd5a53bc7b88e07f3819e238be17523864bedb2273aac3e3e7ac3158e8df94378748bf30608f0e20b79f86e5bb128201d72b629eb242fa230201860820445811b0404fb3616f55f8f2b702f6704b0e89d24be49387acd725d49fd2b75f7ffd7bebc660acf3cdbecd533987f04ebc824b78ee29b950d3eb02f7c807d1573090631fd9cea29fc2090e775bc714c7c80ca86c432ef60053ec682d8e13806d2978cfdb9c4f2c57bc92ad7a0964753ce5326e7b363a4def53337632da8b36d0d3c053219d0d15eb558a3352759ee584c56e73c76e64e32ff34bff36fc5c7f8df8927b57c2ed04fd0bc6be9bd1ac42fc59404f3e896ef3705ab7059cc5593812bbd1ce93a922edee55d5c27cdf9a37ce02be010cef3b58de6b7f445563ea2416b4cc740e01a1ed59247f9cfe1b92132fb9d055960c3f80acfac9d5757e9773fc3e9dbe0fcd3e7b135df0f387aefe6d7b94d3d4adb6f73bb66c2da0921986c0a822f679698857d7895e8ae3cd4fc222ee53b6aef41c28f7fe5436fefa79d7632871ac67b5c945805ffb01c0ad13b3da2033065cdea00f33e551c2adbd7b2e6bffb5e791b1c3c8cc130c379ef1996df16f37c2dbf3ffe711ef7dfeb33d412980518b7fcbe9ef0d973f0991a849fc33dd4a615eea07859e5ae6d854bbd177b910fb00dabfc22cc45aa6d76c6822d4894feb61560f331702412c3c17de8cdfdacf093e91a7882f35cd597f4e78da6de6e3c0870eee84ded7a8977310e4501bf67a39b145637e1068ee439d13196689dd9d1748d755bf3399832ff017acda380632f55bf16f315d2810bc05a4c8d75e2f4636aff197be407d687d70ad71e5d5c5b2df382fb6bf3d6f6e81c60acf45b1cf5922362e3eae32bcedeb1a4ddc1e9f6a33626c09b31a2f82bb4a7c7eb15dfbbdf7f0f0f1cb21186b73abae6006cd78b519ead1d95d11d0d7a8ef2fc09bbebbf94ae43d67396a7fe70456c0b1c13189d025e1d79890ac1acf161387a4e7c2d581fc21c063ab007a720b1e24ae72bfb85eb893e7e8643ae3dee69739ffef4d8e9bbf9d78d9fd209aee7e01fbd03e76a4b57f12a6eba8194ba6c08fda186eb95abf5eab4ff042b4432d14db8d04f56d1cfaca3cfb674ec2370b4a13794be9b09dcae05eb12cc0004b646af6f9fddd6be230896fd3f7a16afc682ebc382c4d2d7b6ba078eca606cc259957791d739c22b24ef1c00c5fabbceb1fca83e77696c6d62a70402648175b5ded4fe6cad391e83b969c5436739c479db8974721d29fe176ce5f47a4c243e1fa2b378024329f44c78f4e716d3b57f35015e30a7cace22718b3bfc150fcf93007b757f1db523703b3fe10f3ab9affaf6ee0cc9293f815140ea7da27b7201e0bd4bc53d8d14cb910f8779d18419b766673f5457dee35f9e357529c15fbff29fe957d63fe55766a958d54c4bc1ec0667abf2fbde708de3b5bbd2df16d77525f350025fe5944a9a9a5b8a2bea021cf4ec2d8e176ea30bff767ec803db2ade2d0efa3bf13998e4ccfb340d6fb1be6edaa3e2833db9c69fe29b5fd15812ad792ab9e1c320e1534fe0234f3037b2fe25fef9f6fbe6411a081b649f901c9589b8f1128e110580ebdb487e5f4f4ec97085f42aecef477b1ecf11c9c1407b68d89d83f153dcf47a13bf1afc952f7fa67cf9f837e4cbcad118d756f7657ece354f39f33e83f1a2cd85e7aced3cb3ecd1a18f0fafe117a8f9eb0ae0a810f304de72d131ef339e09047ebb16c87eecc2f9b979e7a3da93ca7ea76b9d6d646fc2a32570e7652416254e47470d49596fd0cf93b2575bf839ad3944f20612cee50a1bce92b4b9d2178bfb7ddce64d3eeca1c2c9c339e99893604330710de63f0ff9c1e707ec730de6bdf3118a51feb29e4b106c1f7318b471a3b9f0cd1c74c7ea1fe246dfdc33147e18172e8c43759e4c57ff422c18f3117561580e307e2fe191e00ffee5118ee5a33b2dd409bf5279dff6fac6310f1b3e8be86cf4dd670eb1e79f747bf50c1c06cf2fb913fe6258fca177c2f41fb91366dc20988f07357671df7ec7f18b1b0ed29e7b668cfa9a7a498063c1d77aac67632ceb638965799113182f6e727b6ef55692136a31c82e35287cef9b9c0a8cfd3b3abb8e147a8e725cdbabf4ba46bbe39e22b97d8e760e1ce22f41e7c1dfdddc8b9defff24ce6effbced24e8b316e68cbdc5c4839df87737f378aba39fc87856cfae9e9f2bae2d1ccb37d24216cab59f0d6020f0c406df299957ce31f659601e35e9b24cf22fddcbc1b49be3e7335894f4fd5aad77a9e3278457eff5204e5767f50ef65c9bb707df3bdd39725fb53de2eabca0b6673df77a2fdfcec18d189c5b1ecc577bf77eee5c892d20f6e90eaa9ccc8ed837db6081357c6a339c93d3c3b3b589d6738a4fea3e6750cd5f5b624b219be82d988405895fceee7015b6eb7e68be09c279358241813912e162ca43a5488b125ffb1208fcc19fc4c740e0148f55430fd947551ec0bd98eef5fe69e404d60f7ab182cbbe76ea6251af2ea67e4a178b21036ca69987b9147a3b35acb0fb91ad78a726aa5fbf1ab6f579b910bffbc5a83cf39aa44d46edf84d0c671f5847aace3d9cc9bbf63b747355d613c799184be8bbed7a466a183e31071739a17e8365e5ebbeacdbede1d86aede3aafe6a82faedb2a1a44dc4efc124cb65a1bd2e24f63488d07cadfb75e5bbfc67ee4e0abd44dda379030e93119ef8bb31a8ae33d7dc15d1784af8b3f119b994391203cfb68a15e1b6feea7b2b2eb94d238bc55fb957b64d1bf49dc764bddf95fc7d77eb59aef6bb36944220981867434be0d1b5f33498c7781c7e31daf9091f03934ba8efbe324f73fc7b823124aced51e8099079d7c7383ed423672e721214aead418305cd6f2c8c819aca3bed6408dcd6b573d8e4927c5ee6d0f7268e954fdce487e3ccf45d209c897fbc7cf7b52df70803875e9bb20694f96ccd66b7cceae371dc44ae8e64695800db7d1623aed17722ee2aa6fc2d5ab0e63168bd7f2469739c7b7823bfeeac411b5b1202b4a6315eff89c4f83b0b8a5b867bd3c3f0cd3631a707d2db7eb8be0c6a45609bd1c2d84720e1339f35a33783e1fab80d1fd79a8110d712f5e5f2d7f90600e3fd13aedd20f49311e684fdd0d15dc78f5c6c079f092f60897de096b1f50f877959b133ce487e2cbe71ab3337f562ab068346f95b83f367d6e0acec4fd5e0d0fec0d9dad6d42ff802d1da9577fbe657da6d95be305d0b300373097ad12fb46767954e43619317bfe1fd3c3891fcb7cfbcfbf7c681d6c48f745bafd05ea3ec7dc80f80238d1cd62afc6dcac8423996691ad6ff9ea9fbb59dc7c8ae5deec4acd2bb56140e37b23babcfad8463fe4d9b7355f6e37fc7e62ce7f1aecdf963b648657b20ddd7d5f19efd8aeeb5721d89f8eda31e9db4a5bf345cb93f6c1becb45e5cfd3b3a4754ca9cca0f9d0693103ec837ebd5c94b3e806731ca43ace397324137b55efb92f6c9bb2447aac6eaff87e7a2f2095dfbe4efac5f190ba8f723d19d09e638483da44b39da6859f22103acef5b6f206ebefb8abda0dba3ad37b72ee83e2e39b4086fb48e741d350b1c15e9882597d717fa1d8d9bfb01d947f77d2bd5592ae484c8af4a2ee05c6d9b3f2f260467ab8fdff96bfaf62c92e787bd9f58c95d3b551f45b56d3caf6c56eab31a1febf3f32dd2f71ab2f3fbe35557b63e7d1f7e660f377eb17aff4ea4b7da5f41ece62fcf4fe5af2ce787f67f44aea342d5083959308fd573bab93aba097f0186f9f40097a12377508c3017f7aff073fc0659f63579266eeabb16c9ef3e3bf5ca060dcadffc682c11e807868e0562bbc49e7186f01bec92062360f5d72ef943ed92e42bd800d20c38c0f4582e5b4ce08b321f7cda5ea163ce44b68df03ebbd28f3f9b7b70253bd493b7d3c2b53dc27cf67d7999241f00e9ea3cc624f7043f920569b78ca40cd7c9937cfbda87e009986321baf68f7ab678502777db3992fb6cd5f8e958ce580bf0e0d956d15be321289df9a87e340803473bf5e7a40690f8620f4887625c1b1e8123367e5981bfac853a1ff64edb23656d8fbe37ba8816fa6c58e6f9f6636b05ac793404785c33f43ae42f81f00dc9d723e6aa10a493bfebcf0d770b7477127f721d5f48306673e40db1afaf4ff60e41d96f64f304029f7a8955c8f303e35dda7edaaf8d9dfadd8fb63d04a93fb4424f80cfa4fefbf363b71278096ca4dfa5d0bf836bf660ee0f153fcbe7c74d625bfd39d3f7f71acdfff4b576697de787c78b7934bfd8eede755677b0f3cbf3cc729927f0679f356fe258eb9d75090498bceb481e8e900c65641bd9b5bd32e2adaa6dedadef2575d2f07dbe6a7009fa71128e016b453ecb616c6db4173d746f0a56dc67333df499c2c0286d7434a623ba5380bd0a09977d9f5da04139f1efd7090be6114cf217e084a13b2cebba051e63dcca6c4bde64b40f6699e4fd793cb8dd1596edaead32a416781c628cdb2bf983b1c2ab7b6d9a4e8239d3b7ee33a08f62797e80ef02bf0d08eed2d975307f6a5b47ae795bbf3daf31f75cab8da75fd1866b6bb19f5817bfe86c63f82bda68c7099e4ecb04c662945377fcead912f8de3ca9fb6b4be7ae5571feceb14c5de717cc5765d75dd2f4662fc57cf8837b89b215be31ca74755aee4a1c929b3646cc0fb64164d8d5bcdb73ed07e7bd2557db7d8cb41fed23350fd7e7f44ebeddfd77b26b471db8769ebe134e84f6f8773f38fef61d7c5a93ba97e25dbfea374c7f742e0e254758abbfda8373e216f59d15bb8eba6fd5abcdafb938c3d413b402d84f95cfbb431f2f6dbd64c6993f68ebf9093708848e9ccf9944723e09a6fdb36bd458827baf18edbde12a5d4cc2977a6e49cd4f9fad3ec158b0ed672b3b52203888b3b352c4992efcc541fcc3701033bb03bb72e1fccaf96bf2e96adcfdbeefb16d0eb965a9af893c08df8775dea7e3563c0d7369e0a23d1f3576ab675b87371be736586ec391be5d0b561cd839f4b7832370fc8d6ff3dc4785f9380be8f75bae73a86d6b3de15feae7789e7e2ea79fb305bec2bc2a025bc5be8d3ade84ec5c01cd9506c174e03955bf92110ce6c1c94f0e1f6bfb1b670f061cd2170cdb62fc046e178299bee33c0085d327e18cf0bc8f4e41b149e58924ead354358cf482b1214ad9836be805a24356b8d740af636e5b8fcdb352276cb03512eb2845e0b6af93d1652dc024986cd232ffb6e6be708756e1e3fcda110c66f06d89f741d835ae9e76dacff86c9882dd6abfe89e9b0aa79a59e89043e75f14d481bf936019d76be25d37e3d4bc7b63970d3ef8b00334b60b3ac75ea229aea332559ea92898dcfddf8b24875b0fe1dbf435a5f6f6ed7cf207e838831dc640bf9abf16a6e8fc6a8e276e52f6a1d5c7b7e181799fa6553bd57c1c7d81c7f6843fe0302e79205847b98a19b2163a3bb121f09760323a638e3247bb38c3a0583b1a83ee2a7fb7a9304ab78123e1d894bc1b872e7b80c15cfd40f72c9854b5002ac4b6e30c9d8356dbe8fe8ce5b97659c69b3d8ddd22c6a1b88c072ae6ef8c2047f2e8f3725dc97c98ac55ac6deb42af43e323e32f3e0b775e14be7ce8e7d8d573e0ea9bc89a6f227922158095c2c5d4bcc893d77c397dcdc4a9982ff573bed0c54cdc493b3799ed5543c9c4e9ec49999c37ca763692a7af477582b1d1b360dadc35e8dcafede0b8981f3879a285320fc3c544d2df27cdbb94ad32406d299755264ecd826ee7fa3bba9d12071fe7df9331621fe3f1ad5cffa68e9e4bbdc6effae245d97712935e6dfceda0e3bc709e079917571f9d0347dd2fe6229221a98cf42d82274b7dbe49e5f9aafdf96450c83be909fbf808e7c30be184cd2fcb6496e1671d150673e5d966cd2ce007dc8733105d3df4ccc43c7aac74018ec462ac693d5fa3b5018285e771b9c3d826918cb952f8d1c262325b98619d291038ecf39527127dd622790e4e6b7bb5512658b7d8db0309ca0917f9ac55041813db44f7d75e4c3488f7c536c5ef11a37cecefa4f05d8781cc872189fb6b277c87e9e7a83dbf6256f1632cf4bc1e0bd635e716ea475f1bd55e49653e457b23068e9a02f6e9b9cc41c7cf211dde1e30a9a3e7ae8bf1e338c623dcbb9998b4f77c955f4cd5ebc8e4ae41f7cb6a230933ee9d2df1822349f2908cb1e111146256d6afa33b2659db7986755e214777bf09ec118e1fdef03cce2a1edcfaec3cc99357169f0dc3cfab3d2b235b1c8d1f0629986bfbe5769655fceeab1abba53a5f9b4c9cba67b4f7d5cb2c5374eaf7b11afa7c89f9154951e068c86e8abca1847563a4572fe121689ec7fe853790800b7056985bb17c76e1b1f068961833623248911e2c46f9197d1ecceaf61e8c6f9652bfe9c113020988c4cc17b8d4db6993b27da7e4f9c9e5f9f8b4b6478c4e705a2734f7e3a7e6e6eaf7e5fbebf6fd24885c7d5328dbd74cd98a67792a16ca84c8b4b24f22e62e8dafd7a8fe5e776d2d0d1c05cd5f39d6300d782904021cf8977d417d7e0a12ab30133e5e3bd665b9b5b8254bc55d900c2ce327cddd5bc988f33368f8aa8336e766359f380fa6bd36bbd5f5dc56cf329f99dbe0aaefab9e7d49cd1d994b3d8e3e703d27e1fdf2b6cc4899bebe547a5d208cfaf5ba0ac7ec42744a8b9d557ad610d8d2c563f1dd3aa5fc709c68d4cf209d9271d8c1d91f7007e068c5da56387c4ff220ecd2e7dacfaa9737eb10743e87635fd687cf5ae8ee2f1c76003136c550e1ec01d36ebfefd9724ca63debd01db50f9f55f7c0d6065efffb5bcf23bdbce7b9c6cf07a9b1111d5e07fae8cddda9d0df01cc0563d8fcb91a33928d01cf316b677cb9eeb79e74f73b1060ef1c96efa363631f2ece5147e7e96a8d66879e35a26b9eb82d8eab7d628ed6f668f7a6cfeab1f989b55b3b2a031c4974ed518ce6d9bf309887e67dc0c185708032ac70f42a3ba7c295aa3e8f338735f76bd63c1ad6d8a8ec0abfc8e19b31aaeaaf422068aac9ab6a39be2a07b1c215c3ba26fd7b64972c1c2695f9b21ff108e355a3bb00e7a6cc95ecea1dcb7a8de37a1e9adf432df5e755fb181f08cf41e08c911c815857e5e967a8dfd2f1ce998a6bcb8023dd7fd78cfe4dd91f6aaecc04cf210c30efc6d5dc9a048309bdcb2ccf4c3d2ffaf5b3b5ee8f6b7444e3356df0baad076bac5dad719c5942d75a529f3771379c07447f67a17dcfd073af7d6afe167a6e023dfc0ef4516bcc8fc73aa3c7daf50c07707efef51982477019c09bdf5a0174a17ac236c8ac8a43637b1aede5f2d900babbee67aef701d9a7d6e5cdc61c51b836ddd3478c7f19880b62a71cbd841b2e26f195bdd2654bdfc8b7c7b635cf1d803d40bf2bd7b1b1b57b643ff4ac466e35b6fde8006ca6f13d36e3ca803ebab86c08c1dcca8023feb01fc11952fe134a463778ca23e845b58dfa997ba2c3de6fcd0dd56f899e23629f601eace6bd0b87f98cbc21fb0de799f0b0b6d3b7c48e0aa6d7b6d80cd962e19bd0e4812cd9d9f74551d9a34f1cb00ea1a3e745e513f19af347f719d9fb7b2fc279a42ffe2effb6988be53d1f860b3d2fe4848f412d87c223ed03a9e46a7bee2c66213c1dd7f62af3d17e9c54f3f254d6dd629f63add3e09cc4f9dd3e7e070ebc2c26711a4cca7c425b837e11c285937fbb774fcb8906d17c001d3d7bb30ef8ee68c9d3b8bea7f11d04be76e61ee92cf08bfad067ce29f6f93ac3b2fff4d877ea7e6d036631e99609d8276c7117e0684ccf3eee9091f87ea1efe372df96fe37a217d92e9de33d191dfcb9c2613ffb4ebbbc999bbd86f34047476fe8ef17fa39d2679b67c3649efd21c6e328c789dbfaf0dafa1323cf35ae9e475b8be9fba694979df2cc9fabf4182b7fc57f80fd9448bbc7faeca3f96cf5139d03e213ecdd77ad3befa7f61bd63deab121d9fa19ddf233f2f1e6370fe6e0f6f9ea1e80dca7759d9f998b47fa6ddf197cac177fe62c3ed0cd1fcf1f1d3b447d2af59d0767b3c6ab665c7bb4f3040bd751966771ee3e784e8e79d39a32e7eb3b5ade69a197041920359647f393cfad069af966bc56e3ebc31fd5af9e2b801da4fe10c9e030f4120dddad97125ba1ac79f9c4b9bed0f18b3bfa4cff73dd77fba51d17e9b8f7ca3b5382724cfbfe2cd5755ebf6ceb7ddd661ba079aa736a28fc8a4ae638c0968c0e9b1febc2f25c85c886f16ceb14a0b99ec46d395ae75532996a9b178231d5b425f6e1d5907ba1787382d44bb453508c328f5543128bcb2f6fba34f42ffb685948fb60ae9dd1bfdf0c86f3a3d20789c63e7193c55ce1c45d702979f92e8b0b13c9c5b76831148f6b81bb0493032c634059b9efa9f1aef67e11bf7893d1c94bb833b09fb860926772c21d5d363ff9acc9b93af91b3852e10d45ce8bc8df750e8e416412d6ade62b4e87ea9b11e19aaa0b8eab2618af2095851967d896174c46d8afea1887508a40b8a87dd890fbd037913c0c2e6274c6b6d4e7d7e93595279bb4b127241cdbc03959482f6f7df7c02e996c42458fd332b684ce90011c29058eb2af7cf7c0781867504d5ea1621aee10c7340c3713a7f188f82dcf956f90558bf3463162569ebc8e96faf92c6f5729ce81ac389713ae5808780dc337e3f5c535bacf71cf3dfee2ea4ddcc1abe30e777e3b38848ed1e264c63629d04bcebbe673a4bf602c34ac93ef0e04cf7bae3c07253f00d2ddfc4bea016bc095738afd3e3f12275ad97926ced19dfe8fcf6ddb5745dd79d7b6c567e499cdf2c17248f13aef3464af576785fefc14087c867f5f60798fe38c550cc1bfa48c8ccf068f74d5cb12e238651567a564a30afd0442bfa038a29a5cffd01fe2b8c7fe7dc8649230cb6c7bb6177724771cb4e265af687e59553f17aaa110ff77bd0ee279a99f73756b66cad6bc7c312e77f1d83c05024cd6b61553eb57be0fb52b0e94a21d0b540c77209376497f264fcc02f3b8e4e127c657dbc6ad311a9b02fbf7a7b34c9cbaccd57eca97533113a73346d1cf1b75bba2db3c3e6c33914e1e7b68b5a7e2f76cd0debd6e6b204f5ed9e5e4bc591aad760a741f2e596c2b9258e285392f87cab71fd49b6a39e117949c9876ca89877a9c3d5483e550acf670d6b3b733b9dc5fc8a6e9f8eee409305edb20050eae136dc7398573db8f80f3beaede51ceb51f759e9be2fadc54f93fcdf991062001d0876afa9e583f720744810d12e0881b9f85cf40ff25e7a8dbd7f143be9f43b828b24a1e1cebfc904fbce3d3f2abce6dd026642e24cc99d8199fdeadaee2d356f051e65c108c3935fd213946ea72b66b6745cdf1ec4989d0bdb0cad1195327d772e55a06fcc96b508fffabf73495c7ddd281eab5abd62770c60cb297a8bbbcd2735fbced40751d6d2f2720f358ae58dcd848d639c076cfb71c184aa927f2cc7a324a3c814332ee285fdc333ae392c1b0ca2467decc4118089b2348f2135a0757ffc62a933873759353b7af1930aedb5c9d94ed0addf9f0cd109965a57beb62d4e4dfbde66fc6004a91bbf7a38c037a1689332d7cd7cf183f0a184ff9cd778e92891311bdf73f6fc66b224561b1b80c98b7e9ecfc568867313a308b427c16b729f97f1467aef1c429586f17bfbfd9b36f8af1fa5f71fb1a2dd8d97771bb8f9609f93fbe4fb6ccb96ad3db9e7365fa2d5226e2776f9b1ed13d50e9a8c01efc887c1281cd9f455e1df945eb4e7d9227af036572dea817f74a36cdf07da41aaf9938f5d92fdef1a4bd199f7902b7a5eeb942d9a23b75359227af4feaf51dbf15d1596496fa79b39cfa5fbbe3e310baceeb46b7b50cf4bc139ff5f6bd4bf707dff75fbae3cb36cdc4ca80cd5f701e4c23dbeb7915d1bfa3ebb19a6779f23a54916cdab6738efced95dc992b48ee5c3ae5ce75cca19137174ade649df2e6eab79fbecf1334eef1873f8497ce3bbdfcdeb5f3cc6395ce3b7d2d58a1cf73291072d87da7976d3473db29d3fce84aa65579ccf007f29df8205c607ec8a7eb5ca7ca7ff333794e138fe5d0588e3d6df4e523fc4c9bb6abc3409e6bc79bbc2a12476fd9826294b31e0b6371fa9aca33cc45ac037d74a263fbd7f953e47d62b672a4c275e2d4d173c68bae73a7eed9aedd395d5fcd4feb98cf4ffaf97fa27d9eefdb2ff76320ffd498bbe37abf2657af634fdd932d3fb3b76a0cedee3177c6bc7ea63d3d99f5ec63128b69dbf8ffd07c5ec5377eeedc1ceeefdb47bed67f68ff3eb6677fa61fc866cca16b3f3d925918a7ae7b8d2b2cc0be362afda17b7dab18d08aceabe8cb71adf02f7bf6acd6d4857c2ac7f5e699d26eaede57f7a17b9d4a6e840a33ead7cf89c55a91d95173db73aeabbaca87f9bf9d6b7d9393f5636bf0404eddcb7bf8adfb8be466e1bbc828ef3ff5beecfa85edce062b93b92f377e725eaf73e3fe81b96ce5b9fd0373d8950bf78fe5c277c8c6c1d91f54fe992e1980fb3bc0f54d8fd6f4463e13ac40fc1cd2b7f943d0b3eeadd8429d8fff8fcf4597effd5f9b9388f6bdfdfb7353f9a3b4ca67d160b737b21bfb9903478360f2e8acc4d77d2df11c712d231aa7e7f4d93b14dec9bf3e2fb51fec5fdb27b41fa95e93b24e38f4a2fce86d078c17e585b7fd8b3df547614fe9f9a563cdd2f75f387f5ec34d90d67dedfebeac5166324f78eaad37afdf81f1cec3f0637edebbc600ed89c3da51e1428ff70b81caad988b995fc017ea7d1b0fe7981d187f075fd67a789493117c9f135cfc0f5bc538b4b85677a8e03cac0f2a574314bea1cf5e82b9347a67631c035fa3f3528470a143ce65315f097e86e45b0ee8b16cd638af929c87607a8072a29dbcc4446b0c6b9e6863bf0fa683fa6f79bedaac6d9c177474595c871de27afac41a8ac2ac3d5e5263bc0f269070dbeeb43db09ff6de243f2d9c41ba9884c737fbe9e83ae3b3378ff1dc7ecc912c8cd36a1ed038d07fcb826fed8d85738036ce4be7180dd7ffac38856738311e9d8219e10d1477ccdeb547df3e2661e86d072f1853a0aafb16b823e6f2d9a98cbf433a3a579079ae6b598f80e7908e867df075de54f979c937fd413848398ca3e0b030ee7896e6677efc3cce516742a5c9fb825ea2e9c05107de7cc595383ae577141670c275f45382be4172fe3de1a9acbda8ed905a0f93272135b77baa06a9b62f4a7e215267b01c6ac57be3c31fad6d2b03937102305671b89159febcd6b9c475ac2d705627697ea0c7f281716b76cc7fdd12df9df0e330f1f5dcf7cdf1870ee839c59c476fbaf6d2d4318f48de55c5573b20781c0e8b791f3fd6b6c6b99318d7562bdbd7b368301cd0eb5cb7463694faf1558e8f86397f4c32e70b813fcad49e5b1875ce77352f504ed20b921d0be370010ee1d1f68616b320393fd7b95e06eabf995897c0ce99c57c957ee8e70218ca953cb8aa39702ce8ef20efefa4931f91b3be686af33bdfddcab7ddd56b4cd7915dae9eaff3fd50ff294cf0fddac1b1f25195777385a189cf11e6e72ec4efed75e26330176f7395f19e5bb5ea385a67d2b66e72524df47dc549cd60bee125da33bad9fd9ede33dcfb6e6a4f3d7efffd73dfd74659a342ed8b4bc53144cd3fc53b259dfc2d13618ea32a17d35161302d6b7d3ae78ee09c5dad0399b79bb3b2e2c448cc3e7fb66e9f2febcff25a3691bdfa51e5eb8991743b17f47edef6ccc79d7782266fbbbd578d01fc7006851775fadc2e5ed4e52fc75cd74750c04016b81b1d9d9edb969f672e1d3bfdb773f5d8a51fd7dc27169379ec6d2ce7c13ab5ec793f79eaf4e7faec53976d50713d21bdff74abf797729be20a77089ff707c1f0e4309e1665d77f6d7edb3ecdbef66ffc995f1c23a9771f1eb87bf35bc9badfb88eedb31b75cf5bed5bea6983f62d75b4d129ef7bc654fb207be68df64176ac4d4b5ef7ac4fed53ea597fcaa7d471be3e21dfff81767b65ffef6ffbd6bffeabf649ed0fff8d7bb0a52fd17bb0b4dbb7de7680e629f6b683703155d8859e9fd1bfe5e4690f84a7549e5bc7bf9caa7f16a7aa2c0c3ad60cfecaf93b00470bcbbcfcbaafdddf135fc2879eefeff8851a9ce9c41a2e041edb8d6fd6b8f0d841eab366bad0377bda17e047f965e11ca8f78db3523747f651ba109e8e5e623d11bcf8c7f6b8575cf90276dade4fb821a9891f6c09170c7ee6826b881c7a2ce394b48dcf03b364cd2310b82330b05d8bf9b702db4c9751c8547c5c01d22727e314d9c0ae3dda627f8930c37e2fe0f81bf76abca8df400f9905e1b73a064208bd28cc64e15bfa61c7fb85f0c479d128f4e7e3ec1dcfb9f6ed833f04e859320f1b5cdbbf70981a0303b0a306036d0eefdae44162158100b7c0f954bd0e0b1c8959db2af4993cf56cc8bc19b38132adbf4f4a1ebae732663bf0762b4ea96d6b12b7befd1c20f990a23b08f366b083d44b82378c37b2a5eb8cb4c275ae6da93a9704cd51813155765d6da8b0c947e0cf58ae2616f407654c9baee362ad26873f81a1c3aad9da56bfb77463ea196f28a5808547acc30b5c41d77a019b2f5c7643ebef67d7b12e57d822c4ce9f85a93fd44efe2ee670bd51121ecbbcc9c6af50df8b677a1ffd1fae6fc23eab323fd68129b0f3581400c4f6ed443cb9ce38bd83d3992e8bf0d6be467bb2d9234790708566f3f8cc5c6152d8686f0087d4365e9d2d6cb7217d544ef21328369196f0a93719335e51f938c6b5bd2b0af028cedb98de323e9be88cdcdab41817767a6dcf907927fc7bf0b09834f5963e6b857ea2ee57f628d605b85b0b790ad89079d389ef00c9d33aa75eb0421f367b07d75b3aedf75cd7a6839a77bdd9d7727280ef8e82ebe74b5bb1ac412167531466985b12e830055118cac83612ac2783adfb528d2945f71192696ff6ecc5dd49d0b50f1c853947e9a9152e60d8d19f0006189fef1c2a542daa2ff0039fb5886fcc36b9b2ee0df5a9e2e20a0347856002af31fc2aac54e847d85e46bf47e3c5bac9a2fdfe189da58571a8ebb6307f7d6215d5fba97a50eabc8c6f6c5aabde9baab2b60769d0de07b7f28af211b8b61693df5b4fa5dfa6f233f5cd17c43cdfc681792b36613019a5fe80a364de2a9112f3b876d40f50f280be27562c45eebee3594e34eecacdef8b82600594fc5492365727ef16d675d1beeefa3c437b6f61ecf740efe85b59d34df7adcaa5591459878c87380686f9b631c6539d0f0a5b7ce789ba07b6fadd10e061edacf6948fac7917dabf84e727059857ac25d39bbecda53018e07987efed5a712463ccb53396bc049cbeba5e1ff3f33e9812ac21c03ea1794d31ce4802e37a4f357ba9c16863082e55e583c3bfa36a95d782b55d977b6b31693085cbbc3072b74c32ae5c0f66edbcfe573152464ee005e7714dbf1d14637f96e72bbc6fd0ef902e51fdfbb66f259e047ade5e6541d397d84ff86153878de635a8657240c93f970da1cb1ecaf352fab4705dd1a6e3dcdcee81baee7b77336fe53bb3a64ec3f9ccdc5235e077d6b291178d3c962200df8c9ae3afd107f03a5135fc1d72bc638fc6e8f7c446e89bd7a0709df11ecb2c9b6381393a81ea799cdfbfea38ffd56f2b2eb194d454e1bdc11ce8b5af9f6deb4a07b9c1913eae596be4172143b814ad23e65f63a491856dc898f07a09c40fddf98c75808e3e4abca1c4bb36f67d53b5cd253e88d9e848980702ebd14cfa41b88eeab921f3658d2bdd0b98985fe31176cbdd35c6f2f2663ddd04184cc3a558eb5ff81c50781539d207a8bb8fe065fea635e9180785aff2e53dd49cd1961c9cb66aad33b7d22faaf7605bbb7a07c1ad413a8cabd735ef3b3fe1cf6ba1c2b7d1b09fc532e3ea79520b301439cd7eda53f584273f06271f96fde0714e1cc4b613d66378aeb49f6b9c613094425fd8101c92848b492d388c91feb6acb1d24bfc1ac1acb9147553bbac76d04436e942275c642ede43ddcfd82c1fc80938f9b11522fbcfadf69b304ba408dfcdd9da1e7df787f937d1591d3db48731160f77407d7a3346504e00b243258031cb67e9e27abe26cd5c2d84597ab37e180708eff7bd8b6b23608c6344f89cd0f5c45ca1255c51e91a251f203e234077939ebb3c91b6afe11b55cf539e7bd87bee2bb9cc36f7c75b216e5d5664dced8c15b729c4f70e4bedf92907cbbbe8093d0b123e56a6d256dcee23f102b6ea85dfaa13f1b9babfdea7df22f1a28c14d664d4487c1623355adae2d04d56d13212b7eed67c5a1aaf6731a23136a45ab7a6cf038d9f57ee1bce179e8eae3e9a57f34ffe5fe359c337677c9493d9512bf79995401810fcc69d3723eb8271d026f14b85bf1a4c07676443cb71b96e711ebedbdc20986019b805a696fa654ee9a2dd9fec7da89e719c82a96a69f6b932c92f3ef6ed07538fb512b0dde7406718798e6c7e290396b6f713ebb216b80c4cf747c53033f4be2081ccbbb13f28518ec6bf5bb11c0489fb2c6f5f0b798eb1268c40b0cecbad88e705385ab88c9e9e3ef4f8056303e17d68726f49890b6c70ed71419002c7c71c3580cd0ddf41f689b957b62dbc8dbe335dd6e5c4e97277678e79350f6cbe00fa26af6debfe3dbeafb00308ef8f49ce61b1c13ac7d55adb6bdb1a624cb824c8d09d03f44d245ecc27353187aa8eb9c0f1fde11a83d86355c24540ce68cd21b1da41094c365170c5ebb41cd6388dc8ae2a80235eefb5b2fdc616b9d90b2cc5858431519bfdb64ccccc13f89137b498e54ee3aabe7adbabbd578e4fb747e7c0d1f800f3be29d82749cb96857138cac9e0846c210de7ba8bfb36fedecd3d172a93aed8746d03d6981c1f5847e0901da6009b674b79f8d2af2bcdf245c515c3e6a9cb66bfaa2f19c158ac9f6dee290a97885ab3a3bfb38e3dba5b9f3ed3d283896f82a1b078b8738f6ccabbda0702bcf80277017a83fb57c9ae761e4969274faff24eca39253e80bc2b5e5de9355ccdc589edef4d081a9feccb8d7e446126def15f85c1b43e438f7488acc10c69f679f39c65e97a635fddfad8b8626d07a907392273b683632527c83e6af40d31529e54231e29d3575cff2aefd4f43d3139e5f2fa02925a1f29ef823c9485ab1c8b5bbf5e41d95edf3ff473a84c5a18aad7fa10e62aebd387c4488d958bc22ea76284f60eae9910c0f15a3e201da0ed83baf54d02476decfb219389c62ca3cf12795788b146306f0a9297034b42f21973c99773f866a27340dfb790c3399ece55ce02d64f0e97ab3d5ee937f599314ab97ced9bfeb1f95206cb2980eac58c4adf74d6275b4a3b1eefef9b799bd75886f45cb26b9bff28e55022452dfbe2737ba2c7d7eb3ae3b39f702cb0ad4be517c17c2f25c651af6e78f32e6c93a4244f9567288e0912a76be4caa59a4bbfa8759cb0ad4b537b01e70558527f7bb37a1d3ae6ede42770b7b6471fe53399ab8f2ee87e7c33c4f392bdddcf4179667efefcb4f643eff969b5a7ffe2f66ee7ec4a5e537b660852d7e2b69e00b7eb0b132a77f25eea3b20b118970dc5ca878deea80a9fb8d289bafc8e0b3dff28f17a6bdf56eb39019e757b947805e43e1cab3b6742183c8c25bfdb37b164eaee6cc5aa073d7926878731f739bc8db95ffb8626bfafad2ebf663b3fe397ce5f890df5f3ed0016e7e88c3a7374848e5ab75f3b8e4731b4562e466077e70779f6c33c97bbe3eb8cc9fdcc5ea1f3cb3af64a15bbf999795d25dc09dd675ed4d34619ebe869a3ce11fab1b9bb8a7ff5cc559d6ff2c37b832f5c361c7b8926aeed605f733577ee893a3fe787ceef55ece9b7b4d11b37fa3df347c7457fcb78da77c46f19432bc6f15bf672afcff9b78ca7c31efd3df376adeb76e46945de7630f2b6ad7c9784cea191e722ce132078abf0a5c6bb9dafd21adfd37825b1e4e981c630ce9605a47d60179b3d7f5f0c98d2378cb9d92a7b3254a60463a67aded5c727108d193921f6c3c211136927ee5d3dcebc5dfecdd5478cc7c05834180ec7c4e6f937bf686391d336a5ab8f123fe10ebabd4a170677942210b6fcaf4ee9c78ff88b8cee71361fa0b380fd5295eeab87a1bcd34ef81dba9bd0f8f29dcf18298dbb4ffb728f60279d3c13c68bebfa9f9955d6d894f8ddc6ecac4e678c72510665ddd931b0071170c4560e15659b6f80417818fd3267b5553b2598899498295a0315fb9d9bda312972f758a7dc49d017f2d065cdbd5c849e13a9c142e776f2448c157d95631ccb69ccbd19343f2564de9c71e8ef54a8630e6ef3e80f2ddc87c57496cad3195b715c623ff9d40faf7f4fea9c02c2e3138de1fb7c5c9e8f71ea45e33d7036b8eecdb379469c0769206c36fe5c822e6be1dc7171226ec5e869a3e9a39d1cbd6e95e93801dbd7b31c8de71eda83243fea599cf8df8171f8447fcfdf96f373a11a164771ed718493141cdfecd95ed9c6e8cc4a556e63903ca5b29056dfe50b3d7faabe5ba3ef78f56fdee39f96f738e3fef7f21e1baeb7efdeee9adfb492dfb5ffe458d7b4e84d2e9c679b5cd0e4c63da1ef5d675073946ac2d306382103ec517cbf1d9c6b79099c316c3eab7da4a167935c386fd7bc3b607fc7bbc9dd61263867f196df7922317e24dee5ad17771aba27d1bd9599c371e86df7cc877e8e2c21847e626e5c4782a2303aa1ffd0fd20ceb59338c7718f4dc042663d19336bc16cf83a314f28ce9bda9435d93010acc22f9e30be9a61f7f475663172322bfbdad5bec5921a679cc3c6ae6d6b58c9c4400821c577baa96d8d39a9c9068e06fd9d7214a3b8ced974d83bbc6509ce8db75d3b1f00a7c54775f6138bc5b57e16a925457a8232399f9b9cc92ab7bfe69bd4d7b6ba078ecad0f8ea486f71ed7c5cd66f2d81a30dbda1f49dca65ac6abbc6e82c0589f599f794cf9a5c2b5654e7fc7faa4f53aae6abab5f744dd867fa36bd7dde6ce589627b8ae82d577557d81632df677046d7855635979a03f07d71855b5fd7f7747dbfb6476950d75f947baa85ad0f8f6b820157f5b98a19dd70c3998975c03ee6abf7617e016380ebeedbdc6965fe81ddf17e9ec8a7968f8c605e495e02bfded60c8f4307f600e9f7f1ea765e2a8e06ba8e0e92b1aa56a9b3c7745c86c462f2f0ddb6e2d59d35683df7603d70ed95393a05bc3af2121582599ea231078275c075d5b73ceb7c301985256e4226c2205c3b2bac271119656e02e1dbc64dcc8d3f447aad1563992568a93f1c67ae136f701da33e2ec78ae5029df3b6044e80eb712da23fb5ea22bd617044f746f9fc2960479236e5caf5e2865e0c67cbc42cc70567f2747656a64d1e8d47cb8e06afa1cea7b9fafe965fda3ae09c3ac25fb3c981a1fc1fd047041716e74494fba3c861ebec0f98ea6e3c3463b328fbe5e94ce50175cab9aedfdbc3bbe33a28d6c053acfadc7cfdb7701034b98b2db9dc705e77f15b9572cb4c20b2a72f559eaa3f447706b16148bbd8264edf5935f45933aaf6b5b84d2b3d0163c3579f1b1527ee05d90de43b3c4f9f91ff76b92f1ca5cc23ce5e5c96bf005da2e481122d779f90c7b6597d8ff76a97fcabfb3a9052970da13f44fa10d18dfce1e02616ba42f6b703e0af9eb3eabdbd7dbe7a8e6e5f4e88deb16425a4bb7c5f566d52e3bc6997faee61db1dcf76b5ff71bbc7c69e909f02d68a4d21874008a06e6a9736ff13c6e01d025b5b79821503d692b4b942d7f556f286c8f8f23d57b9b69e631c2e48d7724b3e3b7c86b04f0456fba7bcff956899c064d1c4ce52f4de6b592dcf296efb2d932bd3572a7f74d570cf5571e6cfdf4390e8d91677777f77f5b1e39ef835fda4f59ffb7d457691eb5859304d2bec6daec21e2ff9d98f0b8192ed1833658cf90217531e2a455abed3c4b937c13c94b40996c907e25f8f5f1a2e3a8aff11e7b58d60301867c0d66eb85eec01f39533886b076acce15fb3f68d1ed17e5fa943a0b3050fc0194448af5f5f0e5bd751a11853735f88cfb8ce83e63bb85a17bfc819ea3ee214e3f54ce16c3354def24bb71ef6bfbbd6b56e54ae8355ca5c9caf32ef910789c57aece147e4c1ff1fe76d1efce6f326c120e1beffd0796bdf3fed33f7ebe6f613fafbcdd98b810dc2c0ce99e5aec2ec1e5439484762b73fed2b3d40375759b9dfb1cf4ab1cdcb2229dfa9632e2206d95f687e5dd41764ab539c45946fa2cb76387fb4edaa99c78ee0556e4c65e7d676d6fdbbabd39e1ab7de51da52b48cd091dd77fff92efbb6bb4f9debfb353bef4edffa7e53e7b6af1df5ec09fce8661cc8462d9e70cd6d97eca7ea3a4b5b08769e57a4ebcbd1d3b17f3ed400f3b5cd20c6260e123ebbc201bad90b946df13fd2ff3bf258879c3c35cf0a55c3436410b24daff304c31a5faf89498c908caece9c873970b11f53c473d460f177d9b79b28988b913c3f7c074efc0c7464037245990388e4db2598c30c18e98b9bf0db351b1448d6e17910b802d99e3e1b9efc9d56e3fabcd5b987c43ec579e74698800424e2761f056c98068219211db7cf8f082662f63e5499773b87cbdd21f2706d92647ac3b1026cc098091faf1debf2c9f673653e7e426d2b133173135297b44a382610b883215849c04b2110e0c0bf2019afeebda144e24d269c51f547a5fdfd2d528cf1f97d223e8bdb573c0e317a8de4b9f85dd1cf11e60ee99b6b6155613066b7731ddf9d8fd257f346eade906d3a4b099f42bf9fd51f6a234f309fdf59e984ebada176f27909d7c3feca393413b85bcf35ddb5b5347094db7d44fb24884fe3bfe27676f6e79b681989677137e0e4665ca760b2c77716b2b1b4043e017bb557a2381323335ae871fa41c51c005deb3421fe7b4a369c5d47bd0047c563d3129861be74e166cca91481a28c3d700b3d0f5b351e04a7939ce71939972d1e60ccdd85f51e9a27e9665d3467856cf7665d861a7c9f6b634f803b6fbb8f5c96e0af8b3b265bb3d66819497b60f33170c4e8a367ad7dca3fd5b97fe6266ef37dae3c2b7a89e9c38c42cf369fc58439b88ec57885c4f5eda540a7fc5f71b557fbf6783868f9d5e79b8d6eaea2bbef9e1f9efccb7e40e200182b3525f504650cce36297cb9158521691efdc46201e6a4dca474bd105a4757a7383d77e3d01faad06770ff85b59d939cfb462f69ea7faa6707da13bd5f88be17275284f4e03c5cd43549e635bee3cc8b4acea4b988f749f7baa43806f1cec298f6e12dd8d93110b80a5f0a7390def9fdd11220e30966f6cef217b45f9442e2e48984fd0e225fda7876ff1abcefd09e1c213d8041efbdbb972652bc76dca8d90f12d24f37048f70bf11a33e79a4327ec2614c9e6a6f2c0a313386b866b88a33a175ff5cbb90c462acb9147a3bb5ca4f7916919cecfefd25984b278c87757f7c21929b1e3b9a92fcd03dc1824c78766d07612070859ca8d9da19471ecb1760321afa096480a59518a4447f5de8f9de4fac64198927e08467745702473c05edfe9ec4e800496c50e31a9b22ee97eb8996069148c5adbe6daa7b6a19bd7e61fef3cad784dbebbbaf8000d90a3b599e48d806c0fcf5d5be426bfe8539af7cc748ae1b02b775ed921fd9aaf2f936f8ec2fda3ca51df13b509e9d037c37526a2c079c1f52e3894de20c9d23c006d0dfee2390705bc2ed33ce5c5b25e39ceea340e0ce6294e33c72a42b2e7722a9d7ec96712426303fdcd78d2271ab4ef910d8b311c652c375128dfe23cf1fc8fe3b3241315e5359c0e73d0a1c8df1d8a7df7e3ff4ed91b53dd8115d43da2e637844ebe2227b309256de1c636f0fd7b6c6aca7fb48d962bd2923715175e9da03b88ca458b6a5cc63d5efa23078926d7e1008dfa20fbd6f5fd2774c6b1fdf1b1fd9c3f5191b5d021bef4f329f93f370a16711d2e3c5e8ee7bf03ca90ed3b997a97d47f6b133c03939a2d0794f0cff77ee89d237f14fdc13fa6bbe44fa72cf7ef2875ae1b1a35d2377c48318557a6fed6bf9bc8c247903a69ff0479f2df331b75fb9abfada9921bbe9e4c5a4fe6a19619bf4e83a20052ccf784311d7d3f98274721d29967741b17634680904dfaacc094965212c80ed3e5fe1bf32adfe46dfa2055beedd399335f7cca765b7e027dc41acf5f12fcbed5a4ffafcdd8474b931c9d771c069cd9acfe2e40beb2e547ea111e331f9c965f99273df6af6bc8ecf19e577eb94174229af2b1bb71acb779ce73868ee1e798ece6fb0038ef82c26e0e40eb1fc3a7b02bf2dc7f92ceeb4938fe66e08a09fe4e1bb9162ccad3ef97ba3f3b352e8b2879d8f31b8b569752f8817315758f3e246483ee27a97677117ecd19e1123a4af86cccace718eaa98a81073f446482e3fb803a7b333b267fccb3e727716b2d78ee88ee99615af94acec97bdefc3f0b2dcf29fbb1376217d27a86b7b447877581807c2e659dc8ad80e940582696624fc0118fb48dc31bd7b8db649e8bdf9a9fb829cbb3a1f91ccd16ba616f177317a3acad17ddb868cdde2baf7e7951e83f9ef63622f38b84e89c662baf8ac7521fa1b48bd39c643836fc6d3b98d7982f352b09d2aef507f99fda2cee50bbf7d4c6661d58780b58a15f6c9237b88cab3bdc2c622b9b4b7bf69f0b76e6d201c17d8be36be812a978627f389cf246eb78ca9ccf36fa2ce57f7e31038d2d425d84fc7b53dda7a732b068eb2efcabfe9f84d1dd3f0aef2049ca6c6ea2aceabc546620de9bc82c5d5b386cd9f0d7c8e79aa56acacbd306f63ea9dbf673116057c18dfa66ac6709fcceb78adf9a998ef751f883fb7d4c7af630e0cf68357ef4f659e830be100e518e736b4e23ed7f356f989b15ea05ff7bdf1afb7739d301fc2753bd7e3abe24e7dfdaaee8bebe7abcfd30fa75e2324f38c320790ae696d9d1b1cb728f767fd5b4b7b322b8cb7368f01fecc42772de67128cf5cc98becdde4396802a0729428be648ece0f350478092aacb63b791b8f72f6e87c5be52ac7fc6d70d03dc83c83477da5620a9febeffdbcbecfe4f47da5dfeef5d99901d8f8ef5b7cc865fff03e50d6e88c3ecaf36872723bf3467e413fe978e8e7fa7a2f2fe4babf1dcf7eb1cf78bc3ac186dcf9097f2078152bd4d714446155c742f981fbf7ebc73caf63125731b6dbbca84913b3b00b3192a7e3a08a5d80325e58f2cb96f889559dc6eb4b307d9cf3447122338b224b4115fbe00f0f7f6b0fb5e0daf72fcf0827b927703bc578dd3f1c1f7f609c3246beb098b4e1211fc392d79b8e0f917a6236285c7b2079bbf120986c087f4f554b46f9cdefe75a69df3e84ba66e15367b6ae5b87074f8cc44ce107418dc363e3d837e12c6df153af38657a60de3e97ff55efc1e570f57d514058f974ece1a7c6e4053c73eda7cf4a1ef9cc63fd5cf9a47cc26b5bc64c1c9de25d122c0eb048f6551c0163e813dd3af504933abbcc7949afcb64c65de7bc748c3f91481d49f8997354e1a8e2fd6e131ca04771996b4c813b7dc1b89060467047717dd9501dae09866b88da467a966ccc9e3bf225e09bfe897babaea361f6ae9ee50b3d3e3d960775fee5ff29c6ebf9c31934719d4a5e517bc414ac82f8c96086f4d53aa7c17825b8ae659d9fd8c8a26dd75dd4b4ef26c42e987df29cadd20a6f199d0582f1f530d6f552e5997cae4f182f34d631deea661f4c622a3f6456e5841c1423bdcdc1484caeeb4eb97736653d0c179759bad0b9cfddf5f53aef73653ae63e9c1b19d7ceb120f1b28e7bb033aef699b83d25575f73120ba7729bd1b9213138d58be2ac6b1f95317e7207dfea3f354f61ebb94fe69bb7ee62e3ba0610d432d0b09f5259b0b80f4bedae4b9f71dd75e90dfffa47075f279db3dcaa4936d9eeda7ea39bc3a2e1abe63bf85be6120ce27fa6ad3b32ed67da5c96759eddf3d89787ddae59367a300bdeba6bbd1b3e6ce796fba1b7fea65593cd7f6daf183bebe02656d1d3261a6fe8d5b9b5d8d7c8b638a17fed181fc8bd9f697734f06c09fa51f71eba6797fcccfcde3f8bb41c2de7d6fa07f76e879df0537b89aa87ef58db96bdfd0fb483fd443fd34e19837af9e8953b79e60d03082adf8a0967fe4f9d7f9cf3d8b3571ee73dffcc5849fd4ef7383f9943f8dbe4fbbd3aafdf77361fe4f4f5ac738d19d137cf3437ffd533b79cc1a5af78c0dc3e7b87a3bfe34cd47548e8ec990df64dc579fca7f4df7ce71bbc9b8a2fb9d96b35964acff9a2b0543acff3ad3fb8677fd578273dfb99c63be990bffdfee3dfdbde67ef989f9bc7c6bffd79f9f868df3d90f99d754bbf652eaf6b637a74a15f3a9ed2fffe7bc753f9f17fcb78709eba2670c7def7535ceb8fc6f158ee303d63bd3d6f5a6235b56345974ca138d81f8dfde65eefe660ef989fe38dae7beb276ef8f29bb5a7f9f21f9cd5f87a5ebbf9f2bbedab7bbef6ffb57efdafcc599f0ffddfeb13a5efff4ff5ab9cabb6efee5f3b8bb40dba028eb445fadedace61a7bef48fc8ad766d2b89bbfd4fcc0fed97abf74f896d667a51bef4b6830f2fcaa77738023157be1fe597379b2fc090e4995075f799371d5cdea60ae6d0abe248de963bbe99359fc40e38da5bc08e567ec29d812331ef265a07b5583b638ca5124cf27061a4c712c3eb54ae490f1e909b8809850946e377f19dd84aa9371dd4984372a24197e58a1257bfc6975ab256e6b326c68658ccf11c9d68df9f6ccc5ebccb13a74c0f275967d2c55ce4807538397a9c485198bde9219e073f0ab385915edeb6f8df04d369123f57d8520b27ffe64da818c65cf98f52b88937719306a74a83d8df6f353855357e939e671f7aae74ac19893dfda2f9f36c8b716d82495ff7b5fb7b8c5db570986c653f716d8cea0ad30a52319b110c8a30fc989ff7ae31407be2b07654b8d0e3fd42a070a4e662e617f0a5c51739b9e28b4c4665de767cc515afe0fcdf16769cf08de417601ebe78ef45a31253ed735c956b1db78dcf43303d4039c1b912ffc5b84bbb323fc5d8ef310e40f9b73c5f5de78c866fc3d533aea11466edf1e27a51734fea57e254de697b603fedbd497e5a38837431098f18e3c4199fbd39ce49623ee6486ec769350f681ce8bf65c1b7f6c6c239409b358f46c2311ace5b5b718ac57022c5e32f46397e6695f0b1995879605b9760ca148ec144adcf2612b7e0b5235a3f4b78e2de874cba68f0b656deee50e358ad927bb849150693f6e627fcd6132cde17b8ed7adac6a7c1beea049e0247bdff5cc987ee095c4838e5696c7f7e001c69e4b056e16fdbbfc3d884432974d91c6acef8e4b26185c73ef62a5ebdda0eab75fcacb576d1a6e1ec6cf3b92b1ecbc724a778765e1864ef56f18a771b424f586d083ef5662f465ce80bf10994fd90919cb2d50ce8dc367024ccb32346843f489dbe3265ec04ed2f267014aace86f4f72a1fa9c54b8cd650a6d6bfe2c408a6ccbeee973efa3f9f457715da63d6d963d5bd6e628ea38a8bb2e22080c18c7caf111c3674871d1b9ecbd9cb555fda6b893929f2e342cfc3fa37d4fa94eb32c35c25f3d541d131ff41d587f03a77abbd9e9bbd68605cbdebfcac723ef2936b63ae75f4dc951cb9c3d11f111941f14861ae133c1eec2b9ce1f8e2aae66c6af64ecd173a09a973badf57b2ad8ad53fdc1f85f81dd0f1f0e9eaac96789dfe500b83b975791bfec85ed8334a993f423882b4817fe15af8f83d73627ad168e2da9a0e1c74e6546681f9f44abed236ef68c35189e7637cc51d4aceace64805921b80e462a60fd69aaeb765e45d00d776b00fe6985baa08261b725719cc7f8209c9f390edb2665f8f3360708f641353e1eddc914b4c5d7bb893a0cf5ad7fc4af559beeefb154749011c907a43eb72ffb97ed9762b13c9f71f373cadadb96e615855ef008e54bc3575e515a77f56c9b7377d96f7bdd768da876fc6e8aadff5f9e38033e0567dbe69a1537f5ffd3ff6deac4975246914fc2ff93a75bb24919c3a94d97d28400294a04c6d21a1b1b13624710ea424a01292ed5afff7b170f7082d402ea7aabaeb9be9a74c408ac5c3c3f705ea7bebe6a5de226a0cea44437da44f353b8d7ecb267dbc2a9ffb03a805dfbbb4e1dd3cab9a0def937bebc55a671b05c62b97f5ede242d6bf38833fb2b7aa8de88db9f26435bab12769979cbc6b97bc725ed7f8f08dfd9436b5eb70abdad42ecfea8257d56c5efd4b9bda0fc1eb069ffb4be6c25e327fcdd857f9c55f722eb76846d526eda1fc3d2f6eeb19587f78b44dceea222952ec43369c947adce0d049ce8733c8e19c8e42bce5fdcff173d9cb0f71317d2d6bdee67a145acf49911fa0473bd659fd123f632de998607843972acca559e1f3d76be1d6f4d2e0d0b95e3fb8a29b53bde8d120e27c17e0129fab35a395e3a3f6f5ff821e392765f7e02e4e4f018b6355d998cbe93aee2b6b84c3680dfae9f91efe17b57d1f57a497bbf9d76f60379071425cb72dcce2509899d4f1b328883671c14a1ddf95baef361e2a5be7ca9961bcea9f053f354f0706f6b32b639aaeff4e7502c6fae28d7ad3728cd7284cd6d3f0f8f561a077384ec4417ee63ae7434d7e5b9cc6c3c966ae5575ce4353e77c8dc285023d3aebb2d0197290c2aa4edfdd930c7a9a87bbcdc3006a949ce256f2417d37c3b9e13ed8bf446e3b837a3a204bb53588fb71b32f0f43a8f3479f8fca689083ec181716d80da61ed4d3ced35377d1d82fe8950f431bface3eb89cafb3d787c1611b9ff2ceccfdbe8ea1af98714806c736c07678fc1aa80a7f16e1d0cbb0676da93fce6ed43a96b278cc69446829a1a69ea356adceea2ed192cbbe4185734327c4df50aea9d535dd45a1759e06695ead239b68ecf5620cea319a160ce2f2b1f6d67637a9f4c26dacb719c7d9795a812de59c68c60aeb95f03bace649cb5a400d40a859b090759e528853eeec122d3d37ea9f9575411b73ca7a51eef1fa38b20e7fb6b994e1389cec7a5d53b15e4fcdaf3f4ff21c97b3653e471be5c4e0224fc6e3bf5d97119be7a75ee4e9f8fc5c74e44bb57a8ab5f3f5b7d57554654eae1b5eacb126cbc23896c4093e47b610fdb14a5d4eca44876a9fb6df1f7ae2fe532cbcd489a31cee6f6fb49f86ddcd58b3d6d3d05e8e87bb5d143aeb58b3bf8cf2ee93afdacbf160914f03a84bfd65ae80bdf990f6d74bb0050d724e47a01ec16c6571fab8c55a7a4e1eafec1dd67a1b7d19e13ddc4c3503e5010d74b2e537f7b88c35a7fd986d3c4fb97f153975b3206a3f0c77d01742e83c90bbcca087562ef5c213f48c57e2f31a626e46cba3bc3f8f05837ebb60d7eddb54dbb6d44d6ff55ebb76b60f3df3316ed9df314607ea7ac379619d6eea8b51b14b489d53f63fbcc04fd0f7c703881fd9c7d0ffb4b382da6f0d1b4052745aa38be7fc0dd598bb650fb8d98fac0ac7a7d096b959b6b658c87c91066d7980d86a2ee795b6a6f21e2acb4a4fdff7681ee1bd41b1f39c4658935918e5e06fed55e2b2a12e0ec817f5dee0b7e81097395a36c81c694fd98998e1b29f65fdbda0e5a48f9aff66cd9dd1cae1f2e62f585341afd1ca5b39bb543f89f260a99fc8edda24d5fa4c8b92f6fa1faa0375bdbec5f4157be41c7f49075f9bb9e1f27e8c4fa397a95bf21bac2352dfe31b3555eaebc67a89e77460ec921ed42ea8c6e277e6c575ddd329de8bf9da5c8b39abf2979a3ef8c97990efb7761dae7f0497fa07e7e97f64fc9a0e7d65fc263ff8237355f59bd9d57e6ac48fea7d9a3637f4f4e8ba0d42e43cdf8097c0a53f3247ad77da95f397b2503d5ee8cba5ce797dfcaace79650f8b68e054e8d15f32474df6b8012ba9cffed8795ff09b1bb825ed2683f7e3b92ecfa2ce2bdfc3e33f73ae2bb6801276d5d88477e6ca9af0bd119b70850e85d62a514a1e296300c84ec08afb4e50dc6f99f65f7bc1ff387bc19533fb4fdb0b1e35ac713132d8abc8234b56ec19ce98fa1e35749b7eacb50b2ea3a7c349a7de97bdf31a15c7cdb4e5805c86f571ac7d5c44db596029ae6f6fa18655b32ec1cae4baf93a0a1be395df735d157a7689ef9a632545474d07ece473fdbaf0cbbe4798db2ce455a55af75eac95724bad69287bbc2c93c2788598d533e6007b8171286b02947bbad84b65dc4a5d841e8ef7bda927f6e43ca79c64d772ec2a1da8e68405aa52e6221b3b653c30d2589b7eafe4f289f3d9503dc04fc9a315d8984eefd8ac27b4c09ce4f4f5c935e4ffe3a1ac8dfa9c86e6196bc574f7b3a0ad40adc8776aabbe55d7c859b6a1fff278b8039d6cacb1fb6470dc27053b8db58e9a0ebb6adafbba7cd01a6b1f2adba95b8187fe61d9f3a2c7c8d46d2f9295b9490b638b7584b2d774d099c49ab58807b5fa3f1f946dcd3cd13adbb460d9d3c98ca270b27c5c9a8ff1e963b55aa754eb8b0d3a6e145afb7818e5e3b3915bcb6cf3e01e1653cc016dc5cb9cef5f99056d35227f78f2ac922c8c3d12657e66e5bea5d4a3e4a1976d1e5ba30b5f63e4b63749cb52b9dc86f0509571919f9316dbc4450af921df86c77c5c98a769d07e9ee9b93e2ea8268d0f71638ba4f0d7694fde35a8fb47f9c3e7a69e46759b4e0f41f91df58c6cd018e7fc10e8e0e73597d1f9cd9a7dd41facacd957596badf60fff2ddd47cf4ac71df8afee205fcdfa5f97e90064e75dd262229ef7cb6879bb2edd1fd4b1084edfb1466365addfdc3a9c3f88835c766abd53af57d6bd8ab44ef1a1677b23a86376a5474f035ffed0fdc909d7f2242b6b467279e013e7bd68f0a69751de29e9fe1bf505e11c87bbe7583b7ac9c0787d7c766ed5655423ac270b7def1f97e63976df1a77914f837770e4633dedd6953a6bbdf27ebd455bbe576ae319e1cd9a833d532973610e4b47eb0c3efaac1b5ae734c85f2315f3b7dec0a7eafa4d8e37513892754547cb376aedad1cb0fdc9f7871351f7b0663b6037fcd6cef5985a2e1b709d885dcda914fcbaae3b863772f186d775077591808ec22efdfe255daee940ecd24f7d63ecaa0e7439fe35d9a59efb915eea8fefe77e5cc24ae60511ad425de8da3c555deb9d3d65cdb5dcd0b5aec0b5b25f6f906b911fe551701157fc103fab2c7e96b5309cf8196542a7d05ffdbadcb94d827becdd3168bf8e8dc5eb53b86bd84c374ebc3c423d237ae74b12dc6fcb9abcf239988369feda87bc7c6b3d0d9dfa6fc53dff8dcf89365f81872ada61c9c7f5102f177cce23d41e280c75aa3145cc8d6bb55e1f0ce3f5c13d6ab3d052a7c171332fe49ee819533c033146b5dff4f6eb7880f107f5efcdd76fee715cd12bd771afbd7870bf6fc63da7124fbd187079651eb49f294fe03467e9261d2c70bf6eb676b5fb2d8703c822057b8da006f6559a7b1e17fab68c3b36ce8017cbc52fdfdce334be45ab74271f17fe76ae2d3609dfc32afb620edab7e8fa97a97bfc6526d6eaadb3186a0366db68d079c63ebea843cb7774b3ed069c3e99fbb8652fb10edf310ecef6f9b177388efb661a3265f378f8dffffbeea7bbcdec65bedaddfdfa7fee9eb2ef77bfdeddfd7467cd8a39ffef5ffffae9eefb72b7788dff91ac8b9f97ebdd2c9fa7dfe72f3f7f5f6f17cba298bffcfaf3267ffdbe5c6d7f4e67db45bc9ebda43f7f7b59af76f355fa73fcbaccd39f679bcd3fbe2aed569c28b3fb7badf365d6d6925f52f51fcfdb7f14b30d9f79b9fab6e67fd3f96eb6ccb7fcdf15aee1bd977fbadb2ecff3bb5f5bbfb4bffcf2f5a7bb629dceef7ebdd714f8f79fbb258ca2299af6bf942fff4b533d55f955fbf26bfbeb3f5aadf6bdfab57ddf8aee7eba5b6eff992e5fee7efd36cbb7f39feeb62758437fbebffbf5cb9796aafd74375aadef7eedb414f5972f3fdd59f97295ddfdaafe743781f95a2df5ebd79feefc657af7abaa28ca4f7783f2dff09fffdccc52e5ee57e5a73b27e5432a3fddb9b55577f30cb771af74bef08feb24dbdefdfa4bebcb4f77bfed96055f8c3b4fee7e55bfb4db5f955fb48ef2d39db5e5dfdc773a5aeb97afbffceba7bbc9b527d5afe249b9e17ffd74d7fbf8a3e13ffff9ba7addced3bb5fff6fe527e527e5fff917c78bc5fc0540c4a176f7f3aed8fc5cac763f27f972bedafd7c98e5f97cf7f3669664b3eff3eddd4f77a362b37ed93dcd768b1a8a559ee8af13fcc99bbd7c9feff07f67bda6ff26b35db2b8fb75f59ae73fddb91c11e569c127673edbae57f8ec606d2cf3f9563c8d73cb8ffdf946feefcdb7bbc6d3fcabc61b9375facae7fb3f77b481772e052c77b9bafb75f7f23affa9012358df649d56c1f67dfd8f629dc22f6cfeb25dc246d47fa85fe10a6e6052713fdf9f9b60fbc76fe6bf7eba4b67bbd9ddaf77f39309bd0630e7617d1ef7b8de0d394de7d1f3261eadd27cbaea2ea6daf6cbf8f4753f5e76a086663a9cecd3f0b7d7a415ad46cbc332d5d8321918cfb3f37a3f3e7d7d1d6b500754494e9d0c74fb95a545a7d1f6adf192c1514d4eed735a24cb71cf6c4581799882cde0eb7e7cbadf63cf0be73cd6d44dbc62e7db63deefd197d8d9c59aa3c603c6dfd923dded6c515fa0dea6a7ee3c340eafa171d88f97ebecc65e0e49af03f244acb5b15791ca0ea24e6ad2fa7e63bdddc358033d751f638d9f3d2bd829d1b89cf5de7bea26d1267b5b5b2c9295cddffdf01c1eeb7ae57bd6fdc7f7e46c92a1d59f0d8c53dafbdcbebc80ed7e684ea5328e6e416fac28347f680d6c60bc461ad5deffe4b9d82b56445c5ed1f22f91cfe5245319af9cf3bc77036787bfed218f6ed079c5dcaf8e1e05d166aae5ca8fc1dee2b26c9606c73c7917371a6b2f3afb74682909c432b0ecb3eb9e86d67a5a741649f1d9b32b6d68a23ec3b4304e9f9cdf90f689acb455fef018b9c3f582b3f083fd39eb22fba0a8e33030179f3d23a794cd852e4df55d17cb6938fa61b87f724f8fd330aac0ea33fb417ac4d4c93bb4089ff307461b622d7a5877e4d6fa404e2e581d9750feff244ccc45a2e5cfb5793f713ebe96afbc41e779a6b1ccd772a0235e8b29c99029760586efc13b0d9d4d3c9ceca9d6f9a7e876750d36bc6fe6914eb8a7579efde4deece0b89986d6531a3a5c1fee9770c3fbfef97be1e471e1e4e057d576e51adf5b578b29b3e0782eeded9fa4ef411bfa69d86003debe871f6a3ac8b7c9a9a3c6f0fceedb54bef7f13369f4e2f9e89cc2cefaa9b92a34a2ded7212b7d6e9f3cabfa387977310f8efb69f0691ebd9e868e3d0d73c8a9f8e41abc746028605b2b98f2a3f7b3021b19734839566e145a6a3c7c774fe26c361c77e7efd0a5dbbcc0c8a2a199272deba3f3dea4dd56ffb7cfca188f5190af660373ff59fee3156c13698b65dc32cf9f9c33a8da733ef92e97e3948a5dec47f00e62517e64decfbe53f1797e729d5033f207e566e375ea1f318eb5103d553eb56eac975fa98df123ef3b9aa146da67792eecfb4a3dffcf9e33d6d3afd6adf8a13d54ea9afec8fb7f96ccf9678d63878e320dacb588bdf9513a53e7616dcc59629c86b1ed67f1b54287853cf1678d27e4e23f349ecf75a1f7de5138bcde9355d0fecd696ec5cefe363f2fdf194c43f61c095bbbfb4119588d36498b2de241fe45daf03ffa2edea1f29d8fed0df3ef0c11bbfe36de967355fc081f9fab425fad77df8d0363236c24a17b58c685b183f8867cbb8c830ee8c9fc2e80cfa365228c0a7591d4d6bfc3be5ee142e1cf26053bf2bfb3c0aecd696b9dd774c0ee5343c453f8fcf76f614b8ef32d813a0ff929629d6f7c8c18e683e728ce7d047ebc6800dfbd44617ee6cf091f02cd7f8eb523d4a21d61ee007ff690149d03aebf126704cf081b13ff5fe415f0ffa33c59595c1ee5efcb3ad96877709e9221dc73983f12be03c45be8e9023464c05ed10ec5e7355e6781baa0b8b0eda870d4a4c07c0880d7a0a345e188bfbf888b7c8779156d3d0dcdf29d15bfafdd7dbcb2b80edfbdf95c71dcc405435ea9770ef0fd0ad6b6485a10abcaff3f438c07c2e7de0e1739eedbd94cb51dec0bfaf7a9d6cb2cfc8d3fb39b860b7f16582f8972dcc4410ef08e8ace6b6a589b399ed36e16b4ddb8e554d6a22ee686b9e7f2a9d86bd43237910e6b44f8893a9e700679773ec0eff9fae281c9ef081f9bf2c4f89898c30430a6f817c003a8ef0fb05ee2599b79a4e59cc6cfa2d0dce39974f6f1d0d9247856cfd3e0b8851e8c2d3cbb6960e631e0b7b38fb5a3320bbb663a603b5c27e6ec8e0abe3f03eca4f2fb10fb8c8b75d9d0e373b41d65e63e1a664be881193a5b5c3fd46cfd1687dd73a8a9793a343753bc5b84a30bac1dd0a3ef542b4f8a1ccfa7a89d27f4650f5b6053fc16074c498afc99f6a94c0358ff193fe7f571301e6cea0d0c8ebff00cd415183aed44cbbfe03ad53c76713dd3b0fb0deada6a30ef6b1aa8df22adba86ee220dad3cd4d267c467b6488c0ed5034238d177e739e2dc3a0a8c43a8e5598cf7193fb7cc3ce6cf690cecc471c076bec64e333a63ea85c69f2fe201bb7706f929225e0ecf434dda1a9ffe36d53a2af43ccb3bbb28744eb300e63f4b1a40e70171abacc3cf558942b306cf28e473f0fb0b7357c7f7a2d0dcd03d52a6417b150f18d5dde5ebcd5fa7b4976aef4a3c93af4b59bf7bc875fd6aeedd48c42c6c9242bdf21bc42516718bdf4ba0b5fa14fabd1d9636737cf8abe25f3f337cc6dfc9cd3e336cbafb8b3c1ab22dd11c5917a266a305d8986a54447992f33bceaa7bcd842d16ef002b6681b5498d2a8e99025e9c76f4d2202a38cf9d851b58e7b46153c57bc3f984c169c309d65e745af4fd16ee3897c175e8977aa0fb7f9a05c62bdc952c57a240e1f355ec2f4e1ffa3e0ed8896cc6cb7a0c3ef47fe2dfe5159b1df0533c23e304f19ec807f3698b415cbda8353b2a7639d22dfa4e375e6b9f7b95ff296f6194e5afc990294ecbdca7485b07fc1c61ef43738ff407fbccce069d6d344058c45a9bd3f4d7480398eee36c97cf19c281d350885b41be0b394eb558899e790f67923b907f017b837ea6704efb34746afbc63854a037641bcb7538b332ae17ee6c52b0827fef149d534cb439e6fb84ff0da43d941731ca53cf0bad15139f8bc5222e9c6d149a67e2dd2bae5744a1399a06ed2c16fb16eff8b80680c1e098833cb062afb7de9376108362517a429e86b57bb3209dc49af512058e37c37b5bfd7d1555ec3172cdabdfc45d5bf0391ab62b1857da6210d7484e85ff4167067869ec350aad4da234ee7596ee1dbeafbc561785e8ac9303df10395a780f314f0973574e086fc06765ae97362d3aef6e3a7416536db113b5aae5f9d6cebafe5e5cda685f9316dbc9f31a502e0ec8c53a9f53d8e42aff2ffab341be8d86668ef280887facc763c9ef8d68cfef2ad28f8b3a2dcb8b7a20655d772e3f9eb98c067b2df345c03781354a503e44b905ea1a2da986851a0fe17ca0e6d4b5f7fdcad898475579a6568788e4348d29653d6de0637866782fc8be35a9aedf2af3a72ec69e9475560ecb4a2db52a2dabbd2f7ad1d98193f13d233c65bde7eafc1ccfeb364c3827905936d05b8ae45aaabb587e4f3481d3802834f3b8b02ab674a21785718e3cfffee6735c1f80f34ff338abe2a2b988a1769d5fdde39575a6796abca9d3c3ddb8c07b9923f5eebb97f0c91af7a3ac47787bad8d77306f07ef15f0b75a9d3bbe2f91e354e242f5f9eafbdef5f985edc08a426751caae699e56fd1d2b4b8d03ba6f45e3b3c4975bcf73d87729c72cc57ed055dcbda40f1c96bd0a8d68e4577c6f3cd3a41dfc1e1f393ed7eea8c84bb1b5c5261e38a728b8bf18a7627724f9adf6b999e7d17cbe3a5610b7201ffeda7bd5df646d9cd14af8049c6f9217caefe00e6fabf71beacd4bdeedd4ee75b58603c000e58bf52c8814d481aa7446f27eca231067ec805c9c625f6f010f056bfc212e928c61c62b07e52eea07037c3e3084ee27ff4febf62f9251252d90eb95fab98fbdee512e063f1e9fafc7f528cb5b1831e8f9d247677aaad3a5b5013d7182f673ac39b9e899ef05f96b9d6e109de7f77d05b4ac15b7ccccc61e65a8670ff245a2d469717a853e62bfe636c7f12ee7b1fc3c4817e1676fa2af43da0f72a7bc6bfbb460a718708335ee61be8b437e6fcd6de4cbbbbb4994da3b0cf10bcea2d26f1ade3f7b5c8fd672b41f84961e05c73cd2b8ec61937c8e9f395d83788d007c7338d645df61c097453c382ec15e53e51b95ef9d015b4403aebbe39ab89e130f3acfb3aa2c6138fbaa3f9764672ee73fa7ba3c1f332ea27d79fee658d873248e04d4e31a782ad439eb4d8323d487113410702f90397d19f13e05798fdcef290af81932d0c5a83f1a9cf72c485fc1e653301f63a3f9fb7929a396f93fdead67e3c250d250cacd4b4e375c8db5913718f7ee00fc420aca527c1dd1366e61fcd52c70c8660139a09b38c71ee1f27366eed3a1b38f89664403a0b5bdb8e528b106bace92e375149ad5efe05ca0960eea17a24714f5cdade897a27f895af66240fb5d5bc8c1765274b459e090bc2d6d3d7be22fa50d84d5689af009f7003f5a9226420e94b8c7765d9f58d2fdaff2036b8ab2bdcc8f8833739168befa083a2dc41817b3a09d47baccad79b52b72873730becc7d731f831fbd9ab777fd7937809a449b5be371bd29ea556559ec5f312a688e5ee57fd103a767ae124e57fd4ee114f92b1f3f45bbd095ef73693f482ff50bc8056beac26ee8a0ad66e5dc875a8eb69356771317d27648b576c116b48b424b9906c2dea49e23b5b38908efd201caac5487bcb40de55013baf219e91deaa668839d85511e0f73335e719a41eb08b80e9dbffa45be9aa19c0d39461c7611eb347195dffd4d34c88b19d442c9f7717ef90cd4f8c4f75fa9a795d081aa78a093ad4b9daeb89c672951e0947936c8db713ea4df323e8c3eab64bfdaa405dbcefd1cf2edc8b6cde778217ac3e536a0690ef1fba4e558d3d07c89427338c5356f12b5fa3dacf7c071db0b8cd34c133215e54be59d431a981c4fbfcd8896cc202f879dc216f69a15e7cccf09f89c62b65945be801a94430b6815e4c7918d3b293aaf91621ca02e412164bd349f06bb6e32e4671c0919e63c1b60af716f90bf447ef31d13625492bc76efbd6490bf0afb8db4edfae03b617181f622ac7b5ae2259773a4fc38e80c66e1429cc141f09034689fb9ce897cded0a641be05fec93a4bc1171086a55f4ec8c8c4c7f649c6164457304f84e355863191cdbb813ccc38457e043c16f9f608756ba35af3046c88cd9c49c4ad96a908990eed42d463ad30b680fffcbb8c7c2ad9621369822fb557249be53216a887fe8b54cade92b6503f3ec95b079c465cf123922d98dda73ac7e314f66507c79cec62e734ec0a3a2fef7614b4c16644f66c15f891d4bda24552e40bb275c81c64c187fd96945f4e5188362de2f9af51919f62d10b13ec0aa32a5f913c362ee32a2cb4dfa2fc55f95eda6ae90e65e0e30e9db6b40923bfa3dabab638ff57613b0eb5ce6916a41ba495dd4d3c38e0fd0cac972874ce612b3dcd424721dda2f2bd9913de97b5750ba6b83ed8764f733cb33cd5f3a7aa1dbbb2f6b3437eb61460baadea154114725e6ee5559f4b5ae4e73430b6b37053b7d90d0c35d118c6cc04ac165372f9bb5fb53d74e3c219cd82741d0f248d56622d5dc503d683bdb6f09e826c0bb2fb31aff0a4e7583b6e1196a8c3a441fb1405e926e1fa50f6be9d8fe8b4320df1be801fb427fc70ce46caf3c423e705cb42adbcb789c6607e927dcf5cf69db69c3c323a8b92a659e40bb8fd4c14d69ed1aec21f7c299d67b02b13bd4f430bef47cee554ae13c3fbbef08b7a20f71d1773c6f1375d11ae739c5d459a389fe362aa619e53292b925f2cefee93d247d8afea6b49abbbc0fbd829a215e99c0597f976aba4b4139dd3c03ca743c177a0c6b4e90cadde9c49fba8f8be946f89b7f0ffe759458f1b74ceb3509ebf12b77e231b11eaa1536db1488daa1d9deb1f1db4edd4ebfb01fe400c5355776dd4bec331166407c85fa3a2d3b47729ac3a4761493966aa1df36968824c15b798c0175947087c9403518b6454cf15add578a9e72252bc42550697349a7cd4cfe0832dedcfa0e78bb32ffd818bee7c900b3f9d120f18e08d5ffaba343b5c6c4856dbc4b9e84107fb903465c2e77ed6e91cd22a6c4fa9cecf51affb39d02ffd5cf127be44013bb841bbc7713b42f9e8146b1d05eacb48dbc9714ff281a4790cfcb0884349c1b4cae7221e3292af84fe92d0bb23f93ce2b1f98cbc92ecac5276b0d6d3a0cd759367c2b76a6e23e9f2cdf828e475b217a72efbb44b3d47f4cb29fbe8449b78e808b880dc1305a2873a8e477dd5497f6a2fd2225f4d4347c4266c676177190bdfef0a7846ce38bf85e723351e1ce95d397eb56f66a99f89de39f5be3a83597054249f2cd8292a8efb54cd849eb6029d5d3117492de640e8c5b9b0a76e39fd059d21acd9a0a9076b693f66c247d4ec0f4de756ed8988f879b51f7e731f8dfe4960277e9e69a0cbbc0a9b4ecdf689750b2b3e3569bfbdafdad9a7f53ea010a786fcb693457e7b9f1a561bedcf1cbe8ef4ed377a99d6fb869772d6ed1e47e407f70bb6033e72a537281371261fe83777fb99cab827797f2bbd1b1da055a21f2ac1e4fd7e68a58d60c461166b29d7fd4cb0f3376d050ae6de462d7311fbe8cbacf9387ca10fabe748411d658a31350bf46d96baa1d45d4e75ba2beedb2c683fc74306b9731559f219ecc27a353ffdb09c81ec56f51f4d6a721efa4e0c6d5a1827b2491da6a4134f9126816e88726e7b01f25876dcc42893f5b98c330dbb67e44f693e5d59109b0f76f1a28db204daeeefa7221e6960943c45e6165474a7ccc9d3dcd9c7da01edb443e0a36b38839609f2abc7ba9e578945f0a98629d97b77fc39af2affe6953ca7ac125f92439c8855898170c9c7a5709855e7009bdc803d0bda11cb1eea9d0dc66555c65de159c581712fd7a1408c8c1d6bb9f0a3bc46a1637a27f287733eaa1f1782c6219fa4d801a573103e2788c7c1ffaffaf4ab6b8e8a7c1bf764fc93cf715bc4854c8bce291ab013d3f28c7c5882679736c6c2dc277026d62231b04e52f55d6760904f5c3ce72c126df11415d199fcbb62cc07beef0aff3e001c7439bea46fc9a0b389574e4dc6b64b7b78fdbd3cdd4443675d796f0432625695f56a3653a8ebe482dc68f62ef67bfdf750da24e977bf30b25948f13734ef2c74dc69e06c8876d03a17c093aacfc7c2ee5098abcabea4be10058d38a8d6e4e2f75b713992660ca41c5f896b79f3b95d14a86ffd0e71536fada91a5f2cf4908b394b39b78c2bcc54db576ae37299c8f28ddabd14fadf04ec438dfb5fc933805883baafae0db1631c67eb34a17af7912f48de0abcef8236bc79dfea7342fc54f5f99b34e6725e13e370f06cafc1a07fa15bd2fb4c634b5f835c2e884d888b925e4d1b9fc53b249f238cb2cb73a8ccbf890b6b9b060ec9354e1e0f984271718744a9d1bf26ec9edfa355b1d67e4a06e8c78cb5763f1e7490af149dd76acc07c5dbb5665c4f469f01e4569731a1ec34437b1fd44c99529cd46cd041d97695c25957614573ee2bf33f57e78fcaf9f7715993987f7ef095cea3e0db89e6d7f86b738ea46035de4bb1cd248b76b6b3c0d944452eec7c7b2e13cc826843f2ed32d63ac24eba6cc68e4503a34dfb54917643beba227447e02fc8378a78d0d90b9b163e0bf18c5e350ed12e631be1b31b48dd8c3feb82ad40e8f859b448032bafeab7a04f1a1d1983233e934cf50dec9dac03f564a4dd169fa9ca946f3c2762f5ab7131658c807cc66dead752dfaad59df5afc7cabc4a191463dd49f7b1abf2e1b7d2765b9ba7aac7802db7ac0355ef311b6a321e00ec5be48babd85a72e89fcaefbb073c0970204b0aa355b7f538dfd2225f845acde658f215f28f72fa2cf82dc6fd2c4655f96a1a38192bd82925db06aeb5236275f758ff80df6d05f17dc016496ee555f988eb79885b91f4b3ccc0cfb8788a960d5855de133572688fa78a6dee300d19ddc9b68abe9d48d869f339e42295bee0508b3671813641a471d63a0aac176f90ef66289b00fc6afbe4fb1ee45cdf2f6241c7f4fc352abe92bf82f3419047c1979c0e18f9bdd2d334ecae69fda0efc059bb153a59fa0a72ac9507ba8afcce453b5d697793b129d276b24a0ae3301b08fe2c7e63cc15fe8d959537648a7d9245fb24079b613e374a1b36f6f0176be4f2e18ef4f9ceaefc6e2bfd6b627d500f9afc3cb3d0fa46b17543581bd8fb38bd92b53456b18eb09136ea81d1163627aff27f54744e538de9b3d02cf5869575005fbc52b145c9efac7d144405d151b0c7b3c182e3cb3ad68e804b5c1f4b8b5cc1380fe7340dd27eacb102f10ffc155e3aa0b8d9c122a798035cb7611dd3c03849dda648b79e8ce36474179cfdb455da27afd44d12fc409906f92be1749e16ac9ad3b38a758a7f451d9d74878e9a68cc80386da4e7fb34b4726fc016942bf21c0f728c3358992af23e3a678c87de24adee9e7892360b8cbe7cbea8e28dc40de1c7cea2956572fe5cda7138ae018ed03b18cf0778dc229ed2328d6960ad4bdc8ef64961e59c164501ea97b5bb55584ba4b5709f9ea7591507591e637dc4aa8c4d7e18674f703d4c43f3dc8889803be0d279609e23da1a4a9b07d25f99e3920bfb57f9dc3450a51ddd2f98166bbb1ccf06694d1c76953933c9ef64ed63c33a4cd10f82bff9755b8ab0c178526714b609bbe2ab127c46d839b6551ed3259fabb47d8cca9c866efd990bbbcce345cffc5ec5ef56e143727da7a67da36953a9aefbca73eee8a21777723166f5fbfc7516366c4c432173e64a758db53bc2e5651dde75237e664569e7a1e764dcc0d5672fc795cf47340fabc9c970a7b6d3302f6d53b57d547fbfb557238bf4769e2a15fba12bed8916c52eef531933269f9531d6d3aa2dabb287ba7df02aae819db8f489230e78427e29ca3b2763099bb6b25e2d6e56d86c4b3bed50ea0e8f51989afcfc840dfad2ae68931d24adec8df325d6aabe23be7383f686bf9b169d171937cc61a956bf8333d6b9ae21fc202eeaa2da34009b12c892a5ad9bf2a033cc831e095f3cb348c6e8aa89b6f06345c60e9e6783ce89782f9d91b04738fb443fe6d1aa660b68c423a99328886a3604698b19740e1813f2e6fb2ee442191cc639e5e675a19e55a2c09aaa3671598fb269ff8dc2a84bf1e2278eeb9c6e96782fe8ab758e42cb9feb553f80ac598a768e56176c1cf8ee74598fa5231e8b35722b3e37f9f99086d69a0d3a643b96308631528d9d6ccd388b9800929151960e8c03fa100db47165787fa661f7292e643c1e3c6b0b9f8741b45e8e675ce027f20ca21361b49f69e538807f3af41a97df5dbccbaab80876e18acdf8b88fcefa01791ac26c165a4ff2ae67f55e98e273c5af73ab5fadf43fccb8dca034fbacdeeae9c9cf0cfeafe450192ef9339a3d94976ff5d22c69c28d7ebd94234b3d8097b5fc8dd05a91bfbbde2fa9f29dc831a8c702234d2b7bf63473992abdcc4e17fa59258756cdd3c1628f345ef6f7229d1b6326aabdb86af4b1567bb6e60fa5d8a76bb5631bb571d17f8df1d5185382cf367cafc2df96528c01d5ab47bda156e3bd16a759c6b83167ef57f3818b724d36c117e37631d7a15ef71ae37723f4a3b54695f8abaa5e2bf2b5698ffb94d3a54cd626c5bceac03824fc4c5a93e5e37274727ca36bfbfa96fff594c9d6f78d2e738f2f6936dace14b36f079b9ed33b1ab66f3cd9a7a363fb061bf77f3bd8cbe38b9d59dd5966ea639d756dbfd31f1b46d766fe76768e7ae3c1ae672bc6ef766637c63e1cf8d8318d3dd6f3aeede77d1c43d9da8ad167bde393ed1b0efca68eb68cbf773a9ab66f4dc77aa76b337debfa46df5f1e99ed1b213ef77d3bf58dee149fcbc606ebda2c81e782de7161fbc6333ca7d9f5f10646d70e26f05cd4fb6bc7f314a3ebbbf09cdb18ef87f6fb43e3fdddd7f76f1cef87cef7c7d6f73f0a4f3f3ade9f8d7fffc6f3f8217ce1f4cbc7e7fcb191766d96e178cbbf3dfefdf1f50dd29eed1b1b7b099f7fb797f535468ad9b5831ce9b9c6e9fadf822edcdecf7fe9ea7fc7fb2f1ffeb3d717dabe11e173ebed5431ba113e57fc3bf9c8df027e7fed7891ed1b0b84df681bf946375246f0db4cff5bee8beb0d1e3e676f996274037c6ef6a7afef0d3cfb21fe0d3a0de2196be0776dbc3a3eaeeccce8ce7c3a936c54dff39f7d17fe02dc7887f7ff10fcff3c3970d77583e9d6e7b05226a05f46fe64eb28469feb96ae6f745d1fbf77e9f7443107633deddaa70eca267e67083a67d0e939cbe3d0f67dd55e1e3d8ea7f609f4ddb39d4d61cc475f8c99c0585c77457d953de2df9d016393fe9ae8137a7e8b6b80f3344cfb74b46cdfb0c643c6e1d9b6b37bd48ddde3d8f6d9ef4e8fffee745d9cdf70e07be3693c507bb66f8d9c25ff9ed9b47e1be7ce616e876d500f0f98c7e163fb5f39cef5936c0438c5f56ffc6b6f5dc5e8baea94afd14874da4bc042c475e6c2e7d6a6e72deb7abfe3f2cfd6ef76a613cc7d0e1fbedef178983fdbad8d9be808abc41f21dcb311f08158996c03c0c1093fb7beeb721cb24cc2ad3edc478e0f277ec7ac01c3bd8f05ccec13e008c3bf9b2f36aecd82bd3f1bbdb191c39ea71c977bfc5d6b6f2f8fe17868315b314e88bbc691dee39f9fe1f389df17eb77fbc4cfde3201b64a86f2ac3f817b3be5fbe3e32bce0861bbeb8f75b56bfb6a1ff193197426b00fb7d8107e7ce5f0194c9411df7bd73b71fcb56c1843ebf4c646c2e7e9fb7984cf87566fac5b5dfb9cf6703d0683cf4abb8ff3227e39d9a4427bd2dfed6c22ee569f8f5fbe9b769dc0a1b57e85775d7db29d81acaef6e0f730ead9a783c2e995958db6cee97866be359a6593adc7d74cf728f64d71ef9f660ae114cef76a136ef92e7c7ea0337b82b5fb139c578c87ef8cc479c2bed5a83f1e585d3bf0f95cfd28031ce932c4b700cf88d334d6b535b30f6711e81cb6c62c33fb8246f0797cc42f0e9bb1804d39afd147786e0637de19da3e5bfabdcafa958537362cb06bc19a081e9e52f94b3442dc33b85f8aa0016b71cf6c310e7f9e65b6908ff81e8ba90bb46dc1cfca0d3797e7df582fedc9a33bc1717a61c3fa7d8ee3b4feb4ebe8bb2ed1a83ece6f0de033cb870873eb01bed7367daf27ef1cd02ba2431103ba9b9f9c610438e3fadfafdef184ee787ce38ec704331bf66c9880d30ae98ebe45ebd425dd0638021db01ec518648bec967497e3f6766be926f00e8ec33ee7d51eeb5fbfabfec93e217f8e808e677c9ee15899c83befe1bc802ff649f03a4edf7317c75435fb749d3e3dea7417c9dee96b47b08bb2626120dc016f07967f9b26242aebcf75eb44e768217d567b3341cbb51df130bcd37166f5052fbfbc6b12e72fe800f36b778cd3c31cef58d497b8ca6199c1b976a7f8ecb2bc8f9cbe00ae12ffb6bab6daa577e1fc86703fcb79bb36deff076779fd1d7ea7a7f96f355ae18bbb00cfb0beb437cbbf69d73ee73d4983e5b9836df981ff75c26ecfef9574d15623bd46730a1de50e97c33cff62973488afe1f1628fb4a72a4d98a20c624c382dc0f50f6ddf1913be8fe94e7bc8c78dc841983fbb207758bfdbcaa1413b507e0898cdd7662699a3d920abe423d85b68f4906f983dd84bc890366a6d84a792717ce1f710f0ddd604cc742197f0bba58bbb45eb2ce905c011ee47df5bd2188a5dbdc36307e0658cc743a307725d3feac1dc6aa2deba2391626f673eda8bf8777c1e47dbc875e03966882fca5af09621a719fe12c6b4d2aca4b3824f013e073b1d65fb7c246477df37825906e74c347edab2514e7e023954fd0df6182ba32d3b1d8f2cb334bb65f6f08c15c1ff5e9ddedf91ff8d347b59de475b1b7139f6ef741f5592b9c294cb864ddea818c65831dd1bfb7fb2fd5cb10bfddf7f17b51cef164b157b79932f3edb7ebee632d427f9228c33f3c9371646fa3b72e5cee9813ea4203f2a79ea7459bdb378579d9eb8ab7aedaed27d24be7b2ff8ae5ee7bb3ec00b64fa01ebda8a82ba578ef787110fe7fad514e49a11f0dca962f42345f802b94ef215ef7868f508c626c178c56571c09dc0dfba2ec07bebb8f49d628c680c733c409a9c2ae684ce82702c1f932c33a1cf16c8d23ed7bd1cbbf1ac85b0cc4957cb9fc6031ff0eed1bfcef3a36585e7abe6bb3cdfca48b72d6d0c8e1d6c7a898ee78bb46baabe4173b8ccfde57f0ecdf9afccfd7791b953a22d09c273fcef94b91f81fe7edfa6fc9efbbb3dc0809978de9aa390ddc0031aa63aaa94318db4eb2915593dd81837e8dfca710ff79c963d829d42817b6b2936bc3bc9ccae7d8e7a71e6df92058cf110f6d0021d5931cc47dfbf7ae7396ffa9c9cd131a45d6c65f62ab2c6abbd7248d607bc1b3cbe29eb47fd1465fd6bf68916d9270ed7ed1396fd97c973fa769bf03914ffa61ce7b8489b62df073b091334099f73e02c5ba6c16542587bdfacfeed921d6c5cf2f30ed855099fbae2fe31f770407bea357a6d6d1d7d827628f778e4cf25fee8e8dcb01f5dae39dbc67cbe53479f2837f0c8f749ef520d942d5313e5dd74edf48e2a9fd355a6c206f304365eb13797f666f888afc1ae7f45ceedc7998372939f6d13e09b466fe27f783de3f1a0d3b3fdc9dee9b35b77a994255cb06387eee978b6336338d36d5c9ba20bd88f04ecb9fe102cc51e75b1470ff9189f33e5f2e795dfada98b381596313e7c5ddbf687cf4605db34d9470d867799ad1d39df7d7d3d43eb2f5ecfa4b19e9ccf7790eb517f7b07072c9053adccec3aada877f577756122ed48a41d1b70e09c7ff85c99b01bf3e799bf4d1593ebe903319fb4f5d37a1e94bf783da7fa7af87c33dd56492e443be573fe8e0d7771610f49f4e97fed21ffb587dcb6877811caadad0dc0d32ded21785f817ebe49e76af798711995753f26dff828dff0bb679fbbbdd92d1945d0f2d38ed6c2fae3c1ae873269d7b86a13699912bf81ef31d4abbd30ba61f3643b6779dc000f55cc835cb76174a35584b24a80b24a4cb8fd19bb649cd9ffbd87ffbd876fdcc32edd43e73f760f637e0f5bd667eee1706ce8fc1973a6dfd019b2c9e77486d018e0d932a57e07bba42f64700767fadb7730c96afac2b0a22fa8a42fbcfedbf50594e9a70d595fcaf8fc0c3e221bf98a314c39dd6ce8003ec78be14d3d91648eaf2f0e8ec75c90e5fcb37d123836fd94ec3aff389e58e3019703f357a77738d919c0116185ba7c0e6bd5163d091349d3f1cc99af1fed7c0db4fc3dfbf4f47454996f8d92ace267574a7bc00471a79fbeef67e7fca0ef869bc147e5b8d81f012d8a5cd2ef0ca3ebae1618fb80b134b7717730d9a68cf5a760e392b6a4ee14f0567fc1fd4ece18837181b735bf05da99acc7f190f5abf0247813fe2648d7b5764fe210c6fa085f48af3aa68363cab1e2ccfecbec262ee2a063f937e884d4ef6cb0bd96be49ebec34f6c8f142e25bddd633c435ebb76028fc9b44872cc4d16b6b6742a7045ad015fe5382b7c5df754e1df9aedbfbf01a3db4575a7d693f51304ee99a6d9a097d18f59b8a1e8df8c769479249588dde3adf1aaeb009f99a645c05c7c1b57d9de631d21711272a360907f1fed966c6a1b4c1af1b6702fb7d953e1abe6f752dd6bcb79717b06bc29bf177b8dc701dcf7e04efabb0441fb5ef1b467ce31c1cc29db8a4e90ed07469731c5de261034e6023f7d9eb0d18ff51380d056f7582f65f0227b22570feebd8bebf2ff771f8b3cfdbe1347bac00cf1f8a384a076c8e17fa7234d6b36da2a67daf40fe3045d96459f30f733d61300199c81177dadf226d57cc7b0763ef665ec32e325312e03153c54699345c600c9def1f1c8c93784a339fc371c8e9278c1ba606ca3c796fa2601c1fc9ac01c1c8b074a411deca193678d18b9445c1569fb44afe90033df29492a678c8fb0d3affc53c4beaf435d881fddd09497fba12e785b18978c6fe1fc69792ded03974855d18c7da88981418ab72df5e680f5d617b011f04e93b817b6cf13953e4c7fdb94e7a66c87a142bf8bbbd3ce6f8b7437ce7eb09e3f70c87f80fb314828fc6e16280ae12b8c80f1e0917dd96813e0bcd117ace235ff33c1bb5081f292ef4fb85cc427200c81955fc8cd5a8ef0caee1a745f10b4719bfe0a29cbae03044bdc558d9c5a21987477862ad9bfed13ff30cff4a990062f2d4ef62acd51fa4557d4987710da09fccb89e5ed3bf3bc267413c8fe4f073de1f0fad9a6c35e3f45929e57edcfb146c995cc698e826dd270b3e5bbad5759435fd6e0df8b9263ac4260c850fd8f6bf5ff8446fe1cc24677d5bbb823310efc1e5c9a32e699a42342db06fd2b4d8ff4e3693cde81a0df3146338a778853f8b86cdc80f1408b9ef746cf3f39bfbe6c9ed95ebe2735bbe5f8b158073f7ad00649dc0f8e29caed266c3423f7119f303f1b418335dc12ffb0ff3f352aec4b81321a3916e3ccba41d878fb595fc51dbf56bcfa32dc525db4d84ba14e0c782e8d80663f546e8a751a7e0e79f65a33de99e4f7ccf48c754a20bea23d9895a024e001f78cf8a48d66c8bdf123fc1f80543f89bef51277b4ec1f76a7b0ee82cee70d16ff05cc25dbe66d275d46cebba8713f32daedb98322e2740fdcc221a6e2913aecbededcc18923cdbf531be7d65af385fcdbbb6bab10897ce2ed9882cff3b9e99d71d927ea6a19f2251294ea59b2a3ecc35f34767c27be23311d1135f21daf698ead779a41d581bba9b91f0ffa1ce6ceced9539aaac2be47ab4e3d6f9323f7b7e5f41c70b3737ee84dfc298e22bfaa902f1fe8833ea6f7f54a62af50f4dafd2314663fd2e6323f858dab157d2bd49f579b2b3513c04cbe02c19eaba33fc2e413c550eb7f1b4658d8897fab7f034f9113ce5fc9fe3e9a0fd9fc25355e2a9f2b7c253f56d3cb5ff8ba757f194093c0dfeae78faa8034fed4ffcd1557b57d4abebf968cb3c68f69b76931f3ab7174701dfea0d7df6b62da62967e2fed06fe0844eefba7db6812f201beb0aeaa3a98c71ffc3eb80b3ea741d8f7d621d864aeb583774f215fa8e385f3f80edd5d18d7eaad818f3d0eaea938c7c592eca465cc7e17293efeb7b7bd5255b0fc4050c12fd4a5c0de00bc4f00eaee10bd947bb135fd23543d0b5541ffdff4607963ec4d2c67a26d95cc692566d621eaeb34fe3a27d5693faeabaf6aed0570b8ec3106341f64cccd9635e2af6c8f7b600bb6fee0bdd56a57397f46882b1dbfd893fd9d39d6414f77216317b98ab36d9dbd916f599732ee6383aa7e3cece8c5788d3025ce810fdf9a83c77346d6dd173869c7e25182bc3d6b097c0073addf7d18fd0b7ddc30bf900daf4f748b4a6cd71dd768f1bfaac369edbd15f957e3fe3dfc3bda455f8b775e3f39e9e3fd03c7be98bc0ef15fadcb23343b1b3359c2f5fbf2f6cea41da4faaf9930af08ca1ed3397e2188936417e1ac7879d9d612ce658b14678372d837414a02d0ee8acd577773df4b15a1ae557767dc5df3a8aa5d9ad2efa06588e72c5258c058cf675181e3409ebcc98b84bd041221b6d19213f474b071c15f13d26c701affa39cc75afccffe4b89ce35ff049403cb00d7aa7f54078f580fbcd5117d6a46ff509736be199093d63a15d433ef35c79e6919e7902d9a77c26aa3c63d3338eb877652caa7cc6a567bcabebe13c4cc9c477e178b053edccba778d7599e7a718ddd8e77a163fb7459fcea2ffce596c24de9678fcd03803b88b91921748b3840ffc0063ba0a8e59facfe00e0d688c318d017922ae4afbe26711a47d8677369a80ad436fdb998e34d7937cf388e7083c11e83cc5dae608a729d93f51274f50f6e98b5c055bdc03b4e304086b21ffed90be71394c7c0f762c03e90cf8bae87b7e6e242f463db98e1cec67c8777fafac0f78668c6beac7e44fe66b01de853cb23f51ca357a0ae59b2b986f2ebe8f7c8c9bc4efcb71b05e8b8a3e5e4de497f2f573d845b06ee79c56f6c5ba76483911ad4df93dc7d900e9bca3c9ef358a5bdf205f003d9e647e5bca6daec8ad061e1961de0ec50e306d23d64471e3680b0cd0f6a38f0729c6c1af2241e737e4d3045b8143b9cfae5fda50c8d715c93cec01e43dbfba24b7a60adad5527da23850b340471a45b9df1e8c699dc4f389b245193a5029877c22e3c01dc0396b92665b92a5d331d9363636c6cb8ce5de7de47d647f0ee6e21d8dbf6301bd853db6ccde4c17e3e54351c3c0510c331167ee453ada80317fdd05bbb279106b8e942dc6c02b26c6f5b5cc5e726d4caa5b80bc80f2185a0b01eb16ca3ad61675c0ea778647712cf74e63cea94a76ee6c7414eb8995ef4d9b18c5f09a4b88e3395bfdb9d0fd243c2c94c9b5766fa208587546a8d7c8b84e19473b85b349f676b9febddb6bea8c7436e83731278ab82bf74226b448d795fbe2f802f11f48bfcc58da0b731153b1b3570b5dc8d152160338433e00c84b8e6751fe8fb1735c8ae35839c83b302eab0bfe44b8c316a3fd692ecaaf40b339becff53abe53dd8d0abea7685b7b4ec7489f28e61872c1d5ae1d4c15ca3f301f7dc8bb335cd0ad9daebb147bdecadcbd793622196107766907644a90495b28ff1b47bb209ae1e7680738a7bd44e0f76947e73969139d10b1654f09dd616f188d057e89fb3df34d9d8fe57a42be343cf26ff526fe01d614d5e9c4efb64abee37324ec033b9af39eea5a903c9d53cd8fbc2f72719056a63d4bd9628d09bde4959c1745cfce9864e6b60bb2027be0b8e8e8c6c395b57f2159397c50c0de0a3e6bb8675cc73290774564739574472fe9cecc3fe07d825a1682cff0b576281ee84dba634abac32067aa9b2a23d5eba1cc83b6591bedf8da11cf53f8613c67dc840dc455051d099b89ff57c1c6a21c8b34afe113972f490f82e78289886d027d57f86a663a7eef6879bf8cc7eb746d660cf0fd2de82ca9acdd81b53e58d0261d39dd502ef89383b01a5f1913efba9f9a4483413e061a7126f9b7e5180d98f6c599430e0aca365c2ec8c5bd4e329b608a3adc583165ed92243bc0f8914b7961944794901f3a205a90ea368ea59b67f22db14497f91a988f88f7b99f66e6b1f98cd732647d4fd0c544ae1f6307019704f474909540169c28664efeceb6d3a318f0be83fec9e7857c1f6d724608f527de84a7b5b55bdd5be73124df47d7a73c67874978e95578f90087d18bc091995fd646015acbe51ea84fc376a4e7eced55b7877117914e7a39c4c4b86ca1897b69e907aaadb1ebcd492fe23412ce54a3bbaa1cb552de286929ca4b595bc8499cfe814f2d50fb69a65ca16993169eb5b40370dadda0f764077d16346042b230d03efe4c61e954a3c6cb1fc0cee3af393fd66dcccdadd38fd506f7c09217d4c341a606dce1f4ca87da382391ef6ba23c3051ed9549347cfbe2f54057eb5a503796df0711b3dad13e45bbb82c8a31842bfb8c75609abc92d3a22a3fe47bf549d6a07b86fc5319711af4fc57c227a6bb31f347fb3a7cac2f257c762f1ee53a4d74828f26e3a33f47dbb9fe63607cb6a5dcc09fe57bf80371e11c36c89bff7cd8d4c60b963f207bb40cf0ff56648f36c9f97b3bcf6a3cd4a25849379852ac16dad81cf61bae3b34ad2b3c694be7f5f480f96dc359669d845d305114b403060b81cf82176f3e755e410a71ffb6af9fec62f3780d9f8917be85cfc0372c94b7e1f9b779b125cfadfedce2e1d673c8b3a209f08220ef8f1b72cabca21fa58a2265701f68f44415f2dd04efc3784af46ea64c5097f29c5e9cdd5f93e194f7e99dc4d7fc23f84ab525389ed59e7bd4d7b79e23deaa20ade3b2e3a946ebce764bd23a8e2367d06514bacba04f036ebc228eee9624bf1ec916d0b2570ed629133604218bb5164d59acdf94c51e39bff0163d8bf2a313dd6e9e7fff4f39ffd07810e7ef9f1ab4acdcbfe6b9c7179173823cdafa22ce7f5adfbf4af670ae2f5dc57d4b197d18f79d0fe1fee7e5d0da78f9fa07685fcae5aaa8ca17388fe2fb487dd3a9c9b5a74e554fb2501e314e04c78384a3fb299e59d29867e3df4e6388765825ed98dca41d33e55ed20ee782764c6ab4c3d24bda6129ff76da41f2cfbda0095b929dafd084ddd15bdea2095f5b759aa0bf083be0dc37d714fbd6d0cfdaefea6750ffd14bb17e1df0c837f5fdbebc1ba80bf33374000ecab6765613a542e7fd7b69079bf836e98124f7a2cdc79274dec718341feda90f73fd9eec3739cda9a04f7db0791032a38b3e9f086c8cc1a63756d622de076df03ee07e9f15ed0769df5942dcd342d867135ddc4be3a1b4a9a1ee9c64e237c455e1278e86ce838c1f5892ad16f66129f62a2ae906f97c67c2769c99f7426699235d10b6bd577b25f77540581b64afb78fe29d49b626bbadb4459fc56f964e7ee8807204b95e2c7808e6006dec6587ea709b5bf1de8c60e6614d987e501cafc2176a770bf89e170f782f10566e28ecbbfa3df67f003bdd17ba5bbfdb25fc77c453c7e833c9337a4fb14f28ff478aa5c31acfacf7e81f2ece668e7604732e6dd919ea435ed4a35a385fec42c69dc8f3b6901e99a5fd5ec635afe9bd59aa37cfdbeac2fe0269c77f717a68874c15d38675b6babd59a688b808824bde9ba02dc89c489b8a8f7513c25cac93d35aeb1257cc17a46bd959e87cce49c2f440effe5ee2cbae8df2b0f14c30d54a5d51c6399ec41e27820f9dbbb7f6d8aaec512ff748f7f16cca3d26a817977bf4b3cb3daeba8f844f4a658fad2b7bdc21fd1b1de9ddadfd9c3e489b26d695cf698ff7b6940f472256a88d7a4bbe041ba06efc2e719c788ce7138edfa021b7711c6add2c890fb7d0166b51fd9f9d82367e23f25ce0e1c2a731f6e87ba487d6728e350539ec1fa9a6ea178abd36e7beb481733ad897ba0df94203a6037d9d516d14d7b34c412f3ca4c56c4eb5ccdc30871c34cfed887bc9798880ef3df1b0a3fd6c89b3e174096b303d473afa671794db63bc3a3d947f62810fdaa2979632c803d9ac514ed136e56f4d18b6ccdea394836ef829027524fd14cf16acc1f122e4679ea5cf044dd6d287d26e1d51ce5d4a31a42ac52ab07b0fe5298bd34ee4d3fc6eab10cb2c6ac946ca5ada721394217e9f060ba09533cd9824d9e172cee5ce40bb0fc799fb2b6b12f4778b75c23c367df44d8993c2bf3125ba1b6766287ce8844f2cf613aa15b9781263794bb04dac028ff5c9f625ecd3245f416dd97e0077c81857745fc0b3f8da5e5665cc37d8d994a9a8df2b6ca53416d737229de6db8a3cafab6752a87d5157f991eca1ee990d456c3cd0095ff87db727b1be89b2a69ada60efa8c62b3f617c09c460ed0946546fc538da2b66907c7946d96bd2b69fcd87ca7763db4f97e37e97c30cce1ce44196d09d490d948f77d26e09f9bbc1664932f9743c98a09dc1737a5c26c33c43b8efb5dfe38cdf3faceb122b39d63767dfb753d4234e8ee26f19c65d9c1daa1d12f48ecfe34147b77d2b2c9f3f288e6ef45965fe07c5e9da6a52be334c1befc01c9a93f1392056a4e5e4d539f29eed1986d73b3258bf671a5407bcfc3d74f0f781dab74376f97bb0c0dffb8b9e1de457dedfe838bed5b7bdae7ef1bb67f5cbf99dfee5fb11fe3ee8f0f71bbfa7460346274737865518a54d18e19e694e83efb93e66df69c2b0dd84bba53b9cff02ee3bfa849f9fe6e86063366d9febdcfe365618e76dd567ee1dddb0aacfcc7cd67d50da956720d6ed85eb642ed7134f4736eeed749b19d567768e5f1fe751675dcfafbcd3370ddb57df9c3b511aef0c59e39d6bf3388d77ace63b6af39db8390fdf4fd0e9359f71abcf0c764663cf7bc737a2f29d6c9bfa11d787197f3f52a37e3cd8f5a22bb17c33ac7d663c96b19f942bc165148be26112ae735d8be183f809d0794286b14b322ef27a3ed823c5deffa138d17384f926ccf038beb94ad927609e993efdc6b8becf56dd5e35b77a5ec63b36f263f2be93dd0bfd3cacd401e0326f3556f0ec11fdf51af92309e97f51b120feb2638d38c46969dfc4b841cad1df953533a0d6874674727c11b3cdbea3ad41dba10da015c97cca893f6de405d76a54766fe401431c5824636ea737f274b7802701c517b92efce57c0fdf6bf167ca9c14f7246ac265c89741de9375a354b78c097da63831e02363e52bf2d580ef0f7073382f6b47b49ce58d9c6a88813442e271c3549131b0e49f30b7d25745b647a61d2df283bd7818d37eef081e7a3606b7f2a63146c247db8a9fb64886b5247f5d76281f8abd78bd23f2b4c0d87a68d33066ca61cb7ca36ff9957db937f705eb99524c87d312f144ca76eea3fe10eb19f9fc541bea7252dd4bcadb1bc6ec379ca7b518485c51b29be78cfe81b43721ffada3756c78ef6cf526caa4ec19a1c8ba28e8a3e3df536c9b5bd28b21e63e634d150fe5adb77e7364ed02bf03765c97d5e3ebe6105f67410c15c9e76d7b7978b1b93eac8caa7758d4fefbbd7e87a957224b7ff77bd2ff096b6ae684d19dee7aad9c62a87cd5277931a67a929c3f624d213e3edc7385706dccf50c588f27ce4dd28223d92e9ee63ef5e1686df0fdd66654a70fdb96fd9fa30fc71fa20fa71dd53c9b0878913c3ad1082f9f2cc5465d53d41739a706c9b89a83b6c7e1eddc49e01b1cce0ee677e7657db5909912d6582b46f8c2c93eacbe7acbe313ca30937b0fe75a900c6fa18d20694979fa9c9b3769c10063402e6881cc9fb9c8b39d923f9ed31c88ad9deb8737ce1072490737ceb009ff2e732fe984b001cff5eff57942e381e072b497824ee967f7e61d30d01fca75135a8fa5f837d7837ae2e40a9dccb177cb6dd8ecfcde31c7f5a8bd79f6f5067c54a44b3ee4cdd059596f9c15e545168b667e809877ef431e92b5b6578e2eecbf4cc1be1e8d9a30d55ab3e12cffadde1b46496ec1ba4dbc9e59ec37c457c8b9cc49f707bc3ebb18b76fa544dbddd686f29c9596bd7c8b46419cf8177cdffae2f6289747d41052aa35840cc712f189ad8b9c89069e5a9acc4369f0465107e5b1ac8d85f9abfe41cc95535c27e565b51fae9f11eab1ffa5357f7f5a8332c21b32d0e55a24bfb3f4e9167b53192f7671b4df7a2e82d85b99737d706fcb7f18b7fc43f4efabe62c8fd8632bd8f5e2fcb7b79ecb6ddfdaba225fb165dec0e5e398eedcf90abd917b7cd4a7044bb52764574be4d5cb5abce6bddbbb71e7cf5ca6dba1af22b47a897173edf70ef91bb86c1c919f65e21f046c9537608bbd5e82dbfb7850a670272ddf3af9b7d6aaa568c7ace45ccef5f56dfee11bdda9767bce4849386d1e8e154bb93d673ec4fb51c99f6f6dde38335897fad699cdfc046b24b4167a7a13573a2f0efa41cb79cfc6ed79d18efbf2e6bc0ac49a1a6926ea654c8e6f9cd99970677d53a6d5d46135c63200fd59ea24ea1b6373d99acd9ab267459e70443dc41ed6de96b59cceec0d1870fa69dc5e6fcb1a527c3ad4c27042479fb09bf0571d8cedaed48499ecdfc471c5e83e90ad4bfa783c07ede961d47f6cd692be9cab3bc94c8a0f60f75226d1843de0da9e01df9eafe8ada2aec5c5dd0f285613f43a944376f66af3f4862cc5d7d17ff4130187b37b5bdfa4fc8f4bbc91f3aaa04f7259e888fdf60c0bf34ea8f6cca953af3d43b52e99b6b1cb985458eb4d5ce73a11c80e1eb329df69e7226f5fd998d3d44f442e56e810cfdc7da17c474be65f5f97bf0037e719bcdf9f67dfebb534cf69af524bb3eb432e4f8efeab1b30219b02d4b31477b36eab1079d357fb8a94746fa0f6a1d7aba875731b5f23db6753aa87387e207dde3f0b7851eee939a23a255f5b681f349e4a59106d05ee39a2de8b89ac9d44f1c0a4136e49bf75d02ec874910b8f71d154ff8ac31af262442cb08a7bf482f6e358ff0a73f9e705c5991a7427548c213aa7666923bc6d9b98e2bc173c5ec4d05ff0f8a63eccd27befc67d8233847caae98d336cc2df6057eeedfb3c1bf428f4334c3d6b7ceb0e243ec8ea46a2276fe8649cbfe575fea66d6ed31b5cefce5efe909ec8f5ac4d5937b57353769bfb09c4713badcd68acde94490ee4afafd6eddabaa7f7785a93467789469b6fd0683917a7a903a4d1e9bdf39cdfdcc3244bc04e5759dbeb1b6b3b521c747d6d01e5697a69ef8db59d1c8cdddbd8d977845bd09672f88ce2a6fe3fa663dfdbcf864efaaaa883f6623fb361ade6331334e82be5055a53916b02fd0a155bf4f4a9d670b8173c62a257ec923ec6ee609ea7b576290f3fa2b82c4f5b604e2ae8c2344776738e173147247a7634e750de9a6321e7807c87ab7318fbf7e6487df3f61cda51e6e54c6eef437b6f8ee8cd7d7487222fdaf78d9663c81845b38cc1055dfce8bb94effe4cb17cad8da8e3bda29aac516ae80d3bca9a6ae044820675eb7694894a3e67e1bf5745ec20d9f6bb22d745f64a507cdae714d78af5b314114f3a17b99a21c56230f63bfad0adad9d13ce07c277e06b825ed86ec39eabc01deac799d5263fd6ca7ea698e4806a839cd31ec751a831ae1da90e4667e7d05a1c8857b17cfabc16f9a8e2ee4db1b6c0d62ee4bb47f12ec9baf9c4a7be639e69504f9afea3cf4e326ed3a07a0e5c7603d9a72abb915ce1194ee33eb77db43169cdba3e8ffef68ff9f880165a4f62bc54c9deb2c778141bb3771a76310b7d12fdb24799b5aafb593e2893e95b3c4faf4b7c5569a37d8d7db19fa9b787aff689f6ed4a7d2f7d8f0fefed6731a6783fdd3aa2a79defcb18469247da6ff01faec39ded670b69aab7e85919c671cfb2c955df0c8ca1c87a86a02b09df4ce3b715fd46be19f4d74c74538f1573e360af342ef3906ea752cf85f4d5a1dc6fcfdfa23f58d666da4cded603f583b49181be999e1cfd4063298db18e6f8cc5387f946379ee317742a717eb53aae542b1f2d45f8115f963ad5eba5eeda308bd14a84799dab5d5df5a65df814ed767bf557d4f7baac7ddac35a3111d7a8ab3efcdba3223116b1b89b86e4dc683ca5a3618170af1eb70ef30cecfb0661847d9f796c2477b6c8bba29c25fc4711bfd3ed2eea335efdf0fd5f7acd8972bfd1ddcb8ec2f043534ec93e83fdfe9da9a23fbe781df3c9b88bef53b91933d531c8cb916f6a2ecf0233eac31f28ced6d39898f8b7493610c97b596be60c80d7ecb179cee88e70cb9eee253ae05ada9fd860ef18cf1181423866bdad3591509d16da76598a256c604606276edb3a17f443e84fd069d5e4c34c569093a0dfc4ec873b7ef8fb487a954bf3a555daab3332f755dd5bb5deb9cd30dd4ab5b514fd4ea4d7ca7daf7ae5b7e0fb53ffa8c7a19d259684e4fd6f2c1fa269a3a68e6b0426cb15fe92da1523d2792b59c602afca947e774dd9f6a65bef467433d605f11cfb2b181fd0da6126ecec39b310f68278b62654ab129f60bf91a5eec95c8e9574f2ed08bdd974a9d2f7e7e51a264c877683f5c8faaf8578c0745119f612f33df163a28a7d3b29742252e50e0974335b084bde39172aaba589f61b44d7dac418b72a3b5231c1e4e32da9b6779353b83a622cf90b064bf97e31bc3ebf614e17b819c26a8c7ec79e2597feb631dae67e96bd4d71f9003722e07406cbbd3db19a25e9285f1a14ff34cd4b44f14aa899ccb7b9429efc644c87b7476e81ee55b4927b4b6f567d484adf8fccb7e9eaa79f4969fa39d966ed56867a5dea2e10fbb24b7241ac16161517ca5bc3f0cd7e7790cfd57fcfed6fa05508db267e7a9c41fc6f9a2ea9de4fd356cdfb253616b6a2d8cb1c1fa8f7ea4889e3931f5604a14caad819a0942f74b214f48f049ac71447041bbc7b4e48fe94d79a6196bf248bdeeaf8fbbeb897a4f0ed586f33006761c8b5c748a4549fd11f6f06c45148ba273bebcc3dc69912bd4e98f7bbb3ef06c8a9b4995d1f64199404d66e8db76d1cfc3d8a0ed1c72d4f7d867c4f19ab280a86b676544db42d69be94ac3cec0efaada754e1d1df9b465a6f9a4297b885aa04717e43cffa2461e7fde71e94e314bf34b9bd413d5af83ba7922f793e89f41f6b55ce60f356bc97b96e8cda5201f6552974874ff92dfabd36da2a08e3207d918ea02f62d5d117771cc7913f116cdabf5f5b5f65e2d9686ea3505e8d79ff8131adbfa9d6a7e4bfa93ea76632d5becdf9c8daeca1f081f3648a87e24d33a14ffcf4eaceea73e504cf713eaa0ec4b69cb4b8d1bbc19eea827e2cde16e1bf7a23e3ddded93ac750af5e7db37fac3cbde9f32979feecb17bbe8600f67f02d826efe54e9a5b279236e0d7c44b1d87b4bdabaf61893353997f2c75b3e21586f5e979124bfbeb75716f57d4acf94dbb3b39f19f960ac53499bdff0c140cf4be368171daaa791aa2ed6ccaef48d99b4bc9b7bc558c889deb0fd8516da37824d3fa13819d64a1f50f7d315fb196ac4f7ec70d39fe9099cc104e3314669b3871cd558043e44bd8c02f7688efb26b395e3f20afdb8d2f716ef31e7df5833e2edd8de343357226f3fa558403fa45a615ab4229c1da724a7fa818a7eb960d36bd4c5dc7a6ff942906e9e841dca22fae585dd09e6d0b4fb57f80ef04a784ed8ab0291d392838d880d16b25e22c87f95fe98d7e1685c83e306e178490f118eccf85bc648dfec15f4417d09ecb2fa81fa103920c3029d4fcb38206df3f856eddb667fa08fda5a80df7a5d11e3bde6fa2ee43f576499d87fb39efef55e57d76aef5efa74c289fe9df079a183ccaf1807bbd8e802f75cdf18a4d9ad38f26c9bb0e87a9f05f28f3ac1456f0e07edaf1877c4cec6e3753e2fea685a66eaa36dd1bed2a3c0615dda9bf1087c4195fce9bed957eab3ba3eacdf7f0bce6c6009f8f9a4fb079b27ca4b3ee05d67eb4a2f03b7aa434d652c047b8a0d923f03d5c5b8d8a847394926ff8b3d2bac571ff1df8a55ac0fe3875d17eba4b11e3e57d689b37d75ef630ea003b608e61f9de1827acb1b5c578f20ef41f0fcecfe8fda3217b6cfdebe137d6754991ffac4cd0c94973d0fe9b41354ea94aba3aa1eb4a05899bea31d5ddaa3ea239ebcda4b911b7638508df7e7341770edb8e813350ef8fc4485e729cf93c62fe14a76d4893fa19c54d183645ae94172b5eef88b7dad97529062dd19c8cf83181d3336ec5b72e9997249bfd8ab4dd3672ae5e0b98ff5f0a767d67c664f36054bda0b10c6c338f3515654f266be861c37f1bf433d6a4b117d82d2de03c527ce486f7143a78ff9b4b9a8cb3590fd00d167b1167da559a32676acda52afc0d89c05439dcbd19bcfcafad9ad9c6a624fd4a67ff8d6788ec720f6c251bf230f5432119b85b68c8029eeadf9ce0be1afa1bcde54a3b81eaa196f387391fb7c717e937be15fa19e05b296aadba27a2dd51abff0fdc6bc751e8fa2c65c9812bd48ce764d9e3022d07972bbec99a6600eb4c7cf5c97734f2e6a075ffae1a8e6fa44f45d18632d9e325f59f4ecadce15a07fe45ee638d33b3eda9265eeb34fb9cffe1b63b193f4b554f2232ee67bb2fd7cdd94f71c8cdd205b95dac4f1eabd70ca5a8e463fc9b682ee73981b53416fa08f0e23d94adfbbd7e51e63463d8d5da8559e439c14daaed948f2f10b9d0ae5132b43fb53e2b3aeab9a7bd433ded10b95fbeddc77e03dcc1131bb76cbe8255922f442ab62973d3ad7e513596b1cf0ba650ec7ba2ffc845c371b407ef40dde6babdfc966a6937f5acac0220ff7664c0de649757ab59ecae72ecafe81ce79c90bda5d472dca41abf7e1f7161407bae9c52493bb5e976a75425f83969d19462a63fc2ce5dd359de09d3e039de6b2877d4cfd8cc78ab913f9f9936c4b75f7767d8c4ffaba779eadf14764df24fbc33d0cffb8ec8b3ccc94f18d6033c798be328674d1bffd3ef0b2a719d90aa1a60c8ce99731f0a7cee35b71de0e9331cfcd587b90b1841dd20dd9476d0adbbfab4dc1e7fa858c697dd3a6c0f1df90bd6294cb7c26c78f842fc6b4b22dd5eeb1583d26ae5be92f9e779db0b46b4637f359000f2d114f21eac7cc890e516cc37052f6ec7a867cc2ded59c7cd253b34aed57914767eea917f6d95e75a13fb01f94309ef9b7f36db80cf361bcf116658f9f67f6367c2a7d4b3e0a9f846c916fc307e4c87f1b7c986ff4dd01c9667ef682fdad395eab40eb3cdf3066faa4b459dcf6b5f3b3edcbfb1da413515f9dea3259402ba49edc7ebaad67739a186d04cea658138b9f975c1be88b326ff3b68f02e45235ad8c45b5d52106a7dce344f65b9c9cbddbbe49e07f4120e0956fbc1edee5847cbcb84fbf3cc356f7f63ec1c66679254dec3e104d542bf112d6cdf731cef539a6fab622f6147d5a108b65dabe7eb40b55d4b638b914e368652388e3f25a8bc184e289dc6037019894fc40f3fe8cded743e3763fedcfc59bf4dd42c2fec503198d15259ffcfa56de44df29cf6de7811f819d4adee5dc3e27b49b8e4bdcee4cc603d675c2b2af75fac6dca853e4120713ff50ef77cef1d9cb4b7fbefe89b12866c10f2b39adcad7ffbcbcd0c4ed904d5027a9e2b6f1719887e904ef4645de385b9fb85b8b11e7cd5ed8edcff2513d9e4eeb90ad3d6f7b3dac4398e653a14b05a20e8de4e97f317cabfc7a2e6ab293ec30f3cd7bb67c4ba6a9f810de916952e18345be7cb28b9d23e4fa99326af9a24fb44eef613db66aefad923f29b6227b385dd4d401b8828e4acf6cece7147de5674b8fc9b6eb86f984ec1ab25799a5026f0c2bf50eee9b3d6cff40affa06ff3727654da34df0b67cb4f834ff9fc978fc2affb77eb7cfa6ecd74cbeeabed7b764cf741a0f6339cf79efaa6c7976a47c2062d653a9ef54f6f54cf584ce795fc2bdf9bb617559684af9e151fff15e6f5768bde1c8b8994c11783161d39a9f7d42359f3cd4a58cb48c375fdd928551c656845e2a6ac5d565f553a75795b7846d6e4278e38b58307f0bf129561967887abb2bfc31529617b90daad0f52c5df6512058b30aac1dc2f1c91e7a2333f65ae6812d9afdf06fc3f29374c4ca0e122f26eadbb0aed8033e0a6b55e465d560dd72fa355843dc94d5bd05ebb88c9dfa38ac2bfb9a19368de3ecdc2bfbe6bffb8ac126be7d939634e51b903b59bdbf753d7e8f6ce6bef18cb9c2a95ef2f166cf7e11cb62759dd2ffd03cf31f888f811a3040231e541fe45bb755f6778cf33fa17fa8961bb27fa4cc093f546dee22964061aed085d39e1db4fd19d58b265ff028d53fe8c71d58fd996e51cf654b652ed91da9078225725e3caa5dc7e07b83f576f839b05e19c5bacc447f2ff287cefc11f65e0d229362b375db15ef61ad624fc73309c20dd51040bb0ed6689fb4ec553e90cf435cac8c3f1f97b643c311b5643da06374def40eabbfe35d7b679e95ef78fec53bd1b5772cffe63b16d516aabfa318c6a4fe0edaf0c9e645f5fcb8bc7d70068b0997091216f57df5fb877c18b217d40ffa30ac8c7c181a9ffb133e0cf24bccb0bfc87fce2f718ec82f61ad9bb9761ff14bd4ea90c19961ddd50fdaaec7681fa65acbd80bca083e69bb7ef4ad17ac1d01bae5d0f6fd3ddc45ea058771f5240f509d79a86f89f107f7180f6b751b7110871bf907a2af65db06ff9fb5a8daac459f06d77348765738ed36bc8ce24e5b56d9972a9b883a98219d534ff4474d31bfb1ebb7f24afd66c6e5d21ec5ef5a339df2c0ce18abe0b0ef1a431ae9ccb2ea6fbbae1b9a14c799bf30e4d74711c351ed6de9628f635167b42fe6a69852c381da606c6d93edd709a3b09aa3863dc55451534bc17e9a98ffcccf2ad1cd3df14023cd13ca5beb90dddc7a91bf19f5df9c33eb0959a53127fafc94efa48f88679cc6bafca3adc95a5f7d9a8fec6ecce09f5d2fed917fda11f705fd40d6926c2f163b95df077d439fe9508baf3b47fb18e60d692af2a433336a35aca0ffa0f80c3a46bfda1fda0edabd846addfad09bbb236246bbde39421e207a54a16cd275ddff97b92f6b4f14dbdeff4a0cb19ef6b2995422240c7ba3dc29f89409684c3471f8f4ff87356cc09854d5affb9cf3bfeaae28087b587b0def7adf21f3cfe37b539e22494933497a3f48a72e8e9fba7ca74a3fe49472cc4e3ca9220db1afcf58d31e51df69d7e5c51a632c0c7a3b54afaa2f88aba90db27971a0132f99ea0953bd814fd7bd8118d7d68fb4df745aa75e5851ff2cf6b8394b77f246f5a06e8f168ef5a5b4578437995f623a07dd0bbd3bf7686dae7ab4ace619f88c89b10f49a335bf5ed1771281f9a83c2ba97febaf13f1eacb80b0e85047439e631c6bcc85b957bd73b3f0d3b850af9cb9b6592f60a1e119166a933b7a96b4aca8ef3b3940af5e3c5b3b847d3c44cf9cf72f07b8ef428dc61a7d2bba1ff4f823f61c7be86af2412e56c2f15ee36f4f35b265c42d23ccbc9df3cd61dcb16fe325e9222402739ea9d2508ca9e7d9a31eccf035d20ad650e03ec3f14a16a4358735df049ebbe675c57d577426865accda15c8e7d6d8f73173fd07927c56b39e9106196a7aeb8a839aeab225ea3234e39e96f6aafe624e5a1e820fc2f4dc45ac6ff5e9f76a2b664c3462ac679908d107cd4a8773a2c2b4287f7a1844c471f040da13dc43f040eb6d21fc1d72de0566ccfb3ad3ed25daff9683c9ccbfea7de9d58a0ae21f480177d1ab5fa61c5f48c0c2a9b86720bed340bfad27ff11319731e2c2cf09d85219b4f9aaeaea3a1dee4576e00bae26d08d482331bc8bed7e2f23e0326fe40491931938d9bbd8e216a3ef617d7301f870bfb13d1f02706cb5d2838f64a411c7ff2e7a3a6a54778fb9bfa1d05addc465b5dfa3e6b17c27db2b96e88f74fb3b5a0c18601e87500beede8f389911079fad9dd2d53efb109b016a6098b18aef8a7efc43bd17812e7abd17c1fe5ef3518391aefb1dbcd9fceb9cbaa3e2405c73a0d3a262bd6af245be36b6a2337122a5b5bd9218132e854f1846ef79eae40eea83608f4ca8a99cdb31e9725f64d417f8347cfc725d2327f951a8baa9b4e2965729fb933c078ecf90cf48ece7b3419fdc4bd49eb46ed71e9cd889443d0f3ce8139a2e142e3db8887f88fbfb2ecfd5d5b817883d79899e8e46336ecc87b0ac7c9d9e215e5488f19c9f4f1fb18bda0b809930d7de827a874536206cc301f942b49fd75817cc97d0392ed2f2be895b5363e7b618d1e23f98bba63a25c48cd83bd0f86d41155a91416b2fdbd985fe3761edd653d6af869ec66ce8d2397e8c33ee13d6f754d79a224f5ce8f671cf8ad385f4285c1334196478567935431ffff31c0bd4e0c92e299c66d0c569727ea8f404e7bcb651e50e921969b8a5a8439f8c6387731e730138d9db3841e19e934d8fbbf5849842c03c81ceb044bf3909ea823855433c8b81231cb52fa4aa9b8656a4c70ee732620db53929b6ecdb786ff2454e1bf13cb4eedea8ee6c757c142719ad094319ee08c7355b785ff2a7587d7f353023d38b5813b4b946643bee677acbb0b798d7da3dbe8b1870bc10f2382096c629ddf84867c31463b72ffac6fff8ac05ffef55f547512d46700f253ed7497ec933b69e76780891a7eaa2f49d9da08fe3a0df0ffafd6f7ff27bc45b915e3ce6dc6d6c0fe58060dfec11e318bec46d4d34b9b56ffafdcc9e137801ef23eafb46ce0981798453c431c0a5f6bee2952949ef70891c5b1f51e58d4b777e9bff866df5455ee1c23c5adbad160a5dafc79ffd2a2f49cbd1d51ee19c5d1a8a82b091fe5e245f8f29d9f73012e58fb6377a77238f2ffd509b53aea089ab29d744b6b2876b043b1e5c405f15de47bea65f3d03d48e42188b92f9c1cc75f2dd38673087fe19f5669ab8ebe5abbd8939baf310f82ff26ced74f95f9702f95f8baacf935fd2de9186d251e2e7d812a7b8166d25e1cbeb3b71956f2a25d865a7ac269cc378fefc8ce5bde2e6e8e593824b2fa72f03c69b7fd1eba06a5214c7873af7361775f47d4daafae33a096849fd021ff5fe8ff13feed04acf43e777f03fdcc3bb68fc41d4efbf4b0133177c747ae1ddafebf421e2307bfc4ed4bb295f8e29f7763f7b36d5f48df65cfe8e0390b91f6b9e97016aa585778aab528687d4265d2255a70b35f1357e47e7ef7ecd0d557b9feeadf9ef94974997e2b8074d42cd0b1f587b90742ee71ad6b1729bea42e8afdc77f32f8d0f8c6b01f4cadafe5af0bb7ef23a79eb7f263b9fa16fde9e3b43f84c60cc43df2fa08776aa5befd12d7d0b81fa168d1defe7958770c6d05a92ab6b2ecb6c287a397263ed5cefbd2f7ada769d5c2ed4b70be1afa7ae00ce7ab15ddb9d3ea249a78fe837fafcf227b6499ceb88b90ea029dc3a6a983397136a9adf47bd1ed8007d972ae872754c14aeb3791f3d57fde54d8c99578a07c5231e941cc71af4be1cc628c780fb9eb0cf867361809e35f5dc367e99a5fcb204b4807da777b6e1f3dcc75f5cd3fcc6bcfebbf7ec82cf633c433af805fe6f87534c0c595f7bc61a7709e7085073cb9b6a7ef2c5fb3f46a2d6a28dcbff6e7eff213a5f3d2bbd0f7c47a02d25ad042f6879b2c79188a71c53733f3ce5e572ae0725d877f81a19c419214badc301dee5216f7ce4e748d42f8069754b2b11376a56e99ab89ebc3ed75356ce31e63dd8e5b50f2bc86ecfbcb9d246ddac27948334aefd8652fea4734dcd05e6c9b3d2c67eb7b6974d612fe4752cf20fe23563d0b3e3e4efb937cf4538b35bbe92169fd7c3824c895b14eb76fadf8871d7f686a4cf97355c3fce151e32fc1762b12ff13c5c67a1fc0bf8569af2d9b13e6fb73cfd5fc538808bf51067155a2b9a8344436eefa4d377f6797efe3bcfd7f85df1b826ff7c3f405f6effd1c1d27bffc63873cf09bd8f9924b77a23246ae23147e9a54c54af04e64d25e03e3c1e473a2fb423e48923cabf26a8fdeb2166bf5d97abea26c7898eb96b8ec502937b18611c0de0de76a2d98e754db6b426b7514d9cac1ae92265a52dcec4f721fe425e1a57e0b3418cf0fbd723f65698f16dddb957897e38d5dd6bf2d3b5b7f6de05eafa65eb8c6383b9f05ee2b13f624eae4478a3c2bd3a237bbd858179b3d73639908d0baf6c5c8df938d46cf697c8113789b2537ee5bf134e4d9e329b35ad41373356f985168f38c6b10806dc93304fcb98f13edd7887f3f0a4c5357da07512eb2f785648e8c71b7738eb7e889b1862e8d304fe9a926a6cf3b40c9536216018da9c7248dc36f89dbf60bea790778bad580b0c88b9e40e6b2388fd1815d7be493bee77b20af3f90d7f2b473d316be106fb39c6b633ea27b49823bb14934b86bc4eef5175cd55e2e56d2d3b52fe7fa0532d32b5c674861b319c23854eda3d56e0154a5335849c5213aff9d771d929a3f59a6bbe07d8e6336b7f7a1aaded6db4257e4efd535cd7bdfec87b61e5165f3c5f79e6e70bbd82f0f8a13da5e7234dd58c6bf421faa14ebafda4c7d1fddd31627e8b0fd6768dce47d489c7be2c67554d9aeff7ce64f6ef56b2827c5151c13cdcfc4ee021b63236777628abdbbe40eae780794986f6aa9ae05c6995797dcf4256aa8e81f502786e1dfaebd2fa7adf75df33c53e6e1aaf2f9f41b7a3348667e86bd835fbde1b33b614f713f9239980fd160b85cf837e87a5c2749436c5491eed7113b5a1c37d4cb1f11cf394fcb9c479677f4703ff3b4e8629fac003e7538c016b9d388cd8fed7683f72baf78387faa2f34b78d33ec5c9f02a2eb9e69b53718919fd3ae7f7dbbed617750abcb7fe77f70c937c1eb4f105ec8f8f54f150ea3dacefb2ead59a660f1ed616506fafe5467f203bc7dfbbd7835e6d72b9412c17f33ee71af684c6b3b5ca1714c8a3a0ee415c5b18cfc80aeb221be6c8261ed0f390f0534333a39c4da0bd409e284b4b9ff2722673c537eb1fed986e03d790197b8a27996244895ab5e355b766d3edcd9482c67ca7f0d3985b1db22e31d8f4873637f09e76eb58b2b813e88b61fed598b775d873ef7b6fc4ebc4e7f8fb5ce9e31cf8999bf1f4576dafd429e9ff16f28211874d8679b045ce9cfc4aeb8f38382f3ee521bce9f5d8011e0befb126bcff1b619d73f21906fcddc6aea186fec1c69c0a70039faec6f5e39f8d6b60f4eb83184b034f68c7efedd48520fea39c17f34ec4bd9c9316dcc296deb5e30e36a2e5a430dceef7e97edee3745c7ba0c9ab6a36548be19a0ded8b8537614c006b23be913f992e6a8afb2e563eb59bf90e4ed1a51c77c7423cafc75c1b5d00f7d6d0993a71731e9d621bb47adb5aa5b14bbbcf20f919da3c20ac8525eb42c399110cdabe977cd2e307c1787faee20aca67b4b5474f2a3b83dc1638179d1c61d45def9c7330d76bd640c0dc8bda47e6bc1b07f0fd80432eb412d36a31c26e4f372aa479f4a83ef4ca5c74a564ed77091a8bf4def0d98338f2dc34ebd609446c4acac7519ef0143d010ffeb4c34d759237ebbbad7dc6bcca2165ae7fc475a91c914f75b6418f2ff222839bfc9602f5184943c409af30e30bbd405b88d8e859e91ebb3c9531f85c5037a821c6a6718efe33bf059cca3fe2ab384bdcd4b7b88eeda4e8e5a58cc38c75d8b1f61007fcb9c4397bfe2ffed616ed1af601c4b7cfdeafe2475df66a79e19b24ae52d286d7d26e3e16f5f4ff6bbf25356f1c8826369940cd581a844794e17b6253cf6c160e12fbe4a1dd09b3b4f97fd2ef8a397f4dfcca29603455afd71ef34fa116cfac19c7b498470bb5e8e978c6b82a9c2d114fe764b76b147784d1eff48095927186d913c5379778d1f91bd8f370e372ae56e51f103b5c434f7bc0dcb366682f10e3021836c034422e13df05b4861053893e215ceb5bb1a8398e3f664f7d7dd3421237a3d19c919cc7db116ef2f036279e7bb0e31d3c12f3a22560e7fc77f207d305f7cfe018028fc97234615dc327e42eeaf2b775fbb86476ddc715a2bfeb0482b093903744ae13caedf8c859dff8cff8de6083897f3a9073cef9000eabb7f68c9d5322d6c5126ddc4e7963c4f4b55a0250f3763af6d2c9c7f97d57ab568cad47ae27c3bf37fa5ced59cd73e6cf72cdefb7d07cabac0ef8be88859c946d5ee3401c62848df03ee7fe75eb1637dd1b71290eaeb9e9e660532c3c3bb3d25e5c6bbaa41662e13fd7353e64f2ef6185967d3e0fc454b436bfd7530b39784de56a550db3dfb774201d4cea3154f88c70fbabfea65f3cf70dac99e713f6569d379c5fe9f81b33d24d7440c3bff3ee9f75240fb04743e28709881f067c28e0ba0955cf1472d88456acbdd0f743e0562c5da8a510bf516d25e3b57d1b5f73b58646073daa42e756cee601d7a113608ddbca9221e25ef5f999b10280b9d6bc47aa5f5bc106f10088690f33ca9f10c770f88ebf23175ccb5f605f07f9c7e1227423ccfdcd9a75ddcc8360ecca6359416c3e6e9ea7590f517658c03bce3cbbd8e0fc14ac017d214d5a99d3bc0bd2e872ef881be012a95c4a8b7d580801e355b8c1607e95af0846c0f3ed88aae2f1587f757d59f96d5f9fe679c966fd7413bfa3bf68c8e7cb35317fcc353358bfc6444f392e726b2bd6e3338f5d38a2b1262c02e25ec2bb6873faeab7dedadf3a5cddfb00b8a0b479d6e735f336ffa0f97af86abeee359aaf04ead24f21dac0665ff8912845c179bc4bbc467f57a2ae88c47cd6caf5f7f3a75fde7b7a75ef692424e0c7431146ed6f10a684341bb251ed75ea8fce1cb4f0d499e108277ee4cf53e16a91b1a3f3220c179b49e7b9a17617231fb077e4e785f1d7bc71897d194eacf24b4d1c2053e20f3bcf9f6eafa390f83fe35b7c51c6e48fecaeaa2dddb6bba3a9e3bb5d1bd48f5d3ec7ba02f6808a75dea2f3e7385eb6717c8d7cc81ee60f5abe7147205ee1357a1a927dfe4be9142b9c5a46f3649cec458df93799aad8d2c07c5ab899ea11dad74bcd9fbdcda1e613560b8fae9b856d9d9ade450a6f3cdfc64fd77b75a9e15e95ac7966ece65d5f3b4e6385594f80db5d3e5edf63e5ee3b9c271eae914bed7c5a9342ff8893d35b54b93af2e0aa3ac6e4531da36fb71b1bed308768504b271ddda86ba4c47b69c6aaae41da858c63cbaeea7074961e7a67133f17f44bda57bc795e68a51bd5a703b580c5b73598d0bb75aedc6b74ae5c632f308fe490af6715c237aef74e994d80c7a440ed9a4e4c5ade7ebfb1ecbd5f2926376313ead7c59a94fef3d3595c6aedd90b6732fd7ba1c5fdb3d81d5a0bd74f3af592c9a77a096339b4eb5edf611669e47353ef6034f36de488a53e3263e0dc9cdf4b995fd5b5490bf34a7bbb9a706c0f7992b259671ae495a790d369b9b71fff890fd6ea854ef4e80a8fb9cab037a6745bcc1fe53a9ab91a95d59e9ff9b119afc2fdabf3cc61127a15e78872c29c603d1170ee6152d42fac77e120df95c2b65891e98dd877877b824668a9789be5b9d510a57b401c5056737ea6baab355a8af957dfbb40ff80c8cfd7ef5fa0afed2d5d5f723e3042bed79ced4d735e09b78fc3e9e39d2c0f358c581b5ebea74f1d1c95b9b309ef9822b7b06fa63ddcac9c7462164ba03e8d85b16bb8bf8113ead6038cf6b79afdb23609f3c49fdfb59f37bf9d0f5255f355185ea58f146703bbf135653bfedeb252f91ab84f670d3c36ef1a99e58271ae11d56bfa79563cd7217e3c0f9bf8ed19cfd6da4a6610cfb5b81ce28685dacacc72b8174d800f13d17905b58ee7e958ca48f3ceadd625d8c633d6805c83b8d57fb45c9bbd1acccbbc779623ae44e54dfabc4fd3a89f6f3f5de19e990f0cf67120140e69d6e7bfe9fb038926306f86f7f64271a5f790c64faa37507127bcfcd17309ade585e0b888e6326eb55103bdc5401edcab1c1ff92cb98dfd2bc4ed8c7cfcfed2bd8abd601da8f58b5ab6e8f3339724da760f7c1c8fef13259f9f3b4bbaf86dca2d24e497711e0aeca8a05eafdabac2a8a57c56523ccff91c8f7556284fd7d8b2d73841edd244b8ffb7771a85566cfa1e8d95b370afb544915b7c51416e66cc9a09f16880398c667d8c827d29a51371dff6f5d99352ddcbcc6f9f3d5af11f8be5415b24954ebfc6a96973ee8d7cea6918e179aecd4fc9b9672b8f29af47a85f4eb48cf9399af76a7c45cad78458e73b678c89c5fb75e796eb96a798bf83d84223e67d00f9f8f005fb9e7bb5d90b9e01721fd5a263afc2a039d3d22e6f7ccff67b9eb2fda8bb35882ad400ccb127b5b1a10f1d6ca1b374e5c757f61ef285696ec749ef2cf396d51dff661ac9528b67f5038f0be6e5480352f516f80775f6d21eca1a5fbb8a7ab69cf19252f35e01478f1c0bcdde7089eb19f22bf3f36997b9a15fa0d605c4f2e00756e83796787fe0c821bf11ce53c29dd761167c5efb148337e7e954f32f647ff3d0f8febb4b37f8afadf1b626d3b123a6f7d0d59fe9d4194fa97da3cfced0e7ac658775833aefdba543deed49ebd683b33fe6126bb97694a6e60873078b36667c91b77b8b40bf3ec98611e72083ea276aec49e8254a41f3a3aabad858e80fc69e6fec471084cf68357c4accf9c01830c7a10e988bc63720cd9f96cf00745895ae1572ebbb5abbfe856cce70d4293b1f82ee75b2bd0e303ebdebb29d9d6535da8decc01c0fcfe01764f13bf12a032756ec107e806c7013db25db2f6c7056bbd4eba16c70633f1edcf08cbdd6ee2932d7d75aac1fb98d762e22bb52545d8cb124cd64d240c874bb1c5df3ec0f2bc2bb910e6978c76b22742734373e71e6d48d4d81310948576daaf926f110ec1a9b35a73905db95ad894f5ae884777c8f1dcafba596bdf470cdb4bc67c131bdd583bbdd11bf1ce8fc438d35dc4c30af3bde8d79dd936ec258bd4fffbf2f73d2025dd09e5b56586b22be235ab7bb67c2f134b129d64db360bf82f55599f3a7f61e506b94eb63ec61af67e0fa7bcad1696d1ddb0aae742e1cc47baa7e1993b955832ab4f2ecc4fc0e83accb4393e9f61263e27d541d04cf876c31537bd4ef1aee23933825fa9f47184fc817d21d91a1c4ba5ee9c66f3836ae113d373e33d5a5b84fcf3d5ee94e346768fe83390056c43392a6f9139ebfeb1fb1aad3a3fe07f71b4557ff5d8c689f6735728b1903e88fa5eb68dceb579e3b9877f4059e09a7e587c6a4bd870b75d245e1c688c74a733be05c64f5ed3a6b62aab0a79b3dabeda9b3769a715cb43cd5d77dddb730c71d9d93ff5d9d847a81bc9430dec1c8650e080fcf1ef784f314b41a0aa0bdf08db625dad294b4cced9627e05bade6987deb7973c668a49dd762aedd5b18f207d1d394ad3a31906ce621a8ffee8ef93c6f39eb1afb9e49f08f0eaf1d2ed6f9ff6e2e408fe5d65cc8967fe13481fdd3c1c4adaa5f8d2be6a124e4dad5d97cb98d616ff9fd2946592326f378d7c7085e6b3380ef37e8c58146746a6ba8126a46c2ee6208d75ba5b7e785562c73e0972bdc3c61ae133823b7f9759f781b8b8fea2cd2f2af62718d62f1bb2f62f1710f7fd4f62548c5dda84ff404b9f3a7657d8dd1247fd158dbe4f7cba2fad2a73444976b2e0d817727f5106338873c43bcc718a69b6728bf7ab733bd9b71fbdd82530f1bfedb79861eafb1fb75de207cb89d3750b9728762eb7df45c3e5df92407e27c7e267cc4b818f563df7e2ec34b098fd0d820ccd35f2ce7ab9e67eabf7e8bb6b1fdc5ef86a5fb17e23d53cfff422bf937d6349c7183e8a91b57fa6ff3fe9a7ecdaf79f30c88dbaa1ce713349ee3cdeeeb35deac035dad835e1e3da0fa2cd79f388fdef8e0317036fad56d7f3034a2cda0a2dee3d1cdfe864b6877fb9c23635873ad48323e1ab486f2faf66f00c6b2d7c715c89f5763ac5bb1887f102e59c68cf9a31c8744ee908e66766024bfd02521bba5c7c067afecdde4dfebb70a383708fd7da58bfe724131c1c20dee28c6944b31c1f7300682f9d5288fe0311703f145589151a6d4ab7b8848eb4b71da37b610ec78f92eed6eef0cf6e72799bab65933b5d2c534777eb34f3b798571de624067df9d755cbf88b0e7c0edeb56ae9d073a9f6e3c5bcdb900f20fc61dcce396ec52776cec4fef5d479ceb459c2bf609b5d76a138c1f109ff82381fc10da03ec4d1bb4d8cbfa5fe47af92ff40e32a7c84d2e9dff568c0ff9d6f2fef67b5dc5f133ea0d95b239a3a81fcad712d50f053c48d3b2eaeb6dcd994783b0f969ba5e7fba8fe61f338a21ee89c34e367171db671ae1335683b8d58ab8ff9ff9701ad86eca471e6ef63d2ee54fe475c6f9751e64d53bfbeef5aa8321eae09d8dc1b7bee9355f5458f95097bcf55ead2605c647a5fe93c636b495f6cb36bf57bcb7e013ed4f71bf1efcccb51c8ab7426513dafb9ca2ad9f53ccc45ca0b28965b97f6b51ff0db8eac45c8f5b9dd3977f6fcf9e39dfd2c4137786a49ced6a34517c0b88eb8f9013b062fe3b4f6f395bd4dafc64a372d6e0279b877c72a4852b558c04f9fb5256adcd1c492b49c391ea7395d7fc74bd7796cc8df03fb753708f72def2feff1f78f191df4af905e5edd8f07bbcb031d7e6f4be0b31a19a8cff22922e5f04603ec751f28f71d74efe1cafe9fa1dce49f81a6dd671077bed48b45be3d4068eb3b1d28a833c17f60d61cd7fb78d548f53e3b71f3fb876b0ca90bb4f8c7773f469cb77ea2b09830d6966cfca8e0d1c6c6ee1e424685246b7b959d47a411e8d162352de8eedbfc5da879b7044f39dd588493276f6c2733b78fb306b7c84441cf74bc04bb898b7d1ea9704f97772b445d7bd4061d0f602599877d3ff3e11a66db6ac307e4a539f7c593960ffa718cd6ff55dd691743f5abcd5e17bde79acd1cdffc42fc4fc5d98e57ac1ef0f3a98625c529eb17ccf93affd5df07b2e794ebeb6ead969d638c53ae42f8933f74a966ebe20bcde863ed32066eff53785c7ecd7769273775b79eed5b2a252a3be1c63407180f4685c0f541f9d712d28acc9cea539f55b0197a9d3ede797a9cf58bbbbb8c6f5951a73fa6c6d232ea932dbbc53bef8b77d78b6ddecc3b73e8878a39e172b707da35f7b935a473bfed73e34fbfc26f9d04253f141ae05aa16b752356de8931ab7bc93e1eb751de59fe0ae7ff54c0b11105f7c6daf14c6197a88bda2d587fcaab6d35d4b35e7a2e83c6dfd03a5ffe86ad1b3e7b20d5d8ad08a2fd2fb8ff8eeddf57df3997487f21197e83954cfd4d8a9385bb7cfe45d3fd35736e0d6ba921f11e5f35762a2ab7505b5fbd288fbcf7a5018238dd638f0d7b9a7c418381d0cdee41306ef732e416107c52dece0aca6fabedf6a156cbed25b0edea86e5c2fdde375be0b63fa59eed2def6cb3af84af3e084f588cffaf950f34f0ea49f1f1aa2c54f3d52ee5c420fb4fbc2bef518b8fc3137f0b8bce649e3df8471833e130d7df85febc68655ab1b0b3544b3b64357630efe69a72ecb7abc881fa3b149b36140b5c823e52e107732b36cc6192d51c36332d5fe84f329bcd5f7f181f8eef025464d3e27c906f75fe94904ee1cf18da96587da1773999dbc7f329773c426906ecac12e7e35375ac5b5daf73e3755f8a1f2c58049f09c6e7d3c10016133c39784394a4907616e36b6a286ef726ff3f55978cba6b67a88ff177db8934e71e273811cd7963473d24557d82933a7732a35493fe312b635936afe05f74d4f53cb88394f42f9d48034ddd2562be890119f59d49cd5d9da5e5588b17d203d9a40fc9e1e4da4e50fddbc206332166e74439f439e735ae3a92ebee751630eae5ff3a8ddb491cd9ec4fdb613d7e38839779f7092e18ef470c2451d7dd25ce231c1f5500bdc3bfa6b137be0be2b35ece3bcc6340784690e88efe26bcdf85c2bd09e67836b0e91af745c9c408bbfbcdf4a14a4672b7ffb7e0b577e79bfa556904edbc12eaf7958aee70d3562b0762fafe7b8a36f83fd00d652f83fae793cbfd47e31d7caf67cad75ef414d2c4ecb3e9f0fae7767e9fe85ebefd3b375de03f0b26b9b34608ce489f731f07608aaf7c3fe88893b5a220ed8a3dcf533ad358fd6e547b45ddfb6bbb23ec75833f043d494f3daf8cbf26e63f4872ef178db8085ad802370da72f17be32fae6b621127a822e654453ccba5f4ba76ae74fd01d5bbdfa267497a1c6d0e7575538bfd788e6df2f3145f6ff485bd02ed51c8c7b3067a407efb3cab150e88b5c2b2591d200675077e22e15f5853e6889c72ae41b6f42e7a669e88ea2db1211641ae4db0878723602c1b7b6de6633e87b82ff441884efc10b4dc61a667df1ed35bfca93d7ecd03c76b5ff26b3e1df0de997c656ebfa5f8097b78a1f97b5a53f582b80585a14fa623017b329e596d3da5af69c07a77033a77ea8578216e3e5f7cafe35cfeb18e236050676b1a778a35ba1a8e849fb9a565a7343295ce34ea9145e6ce5eeae8cf141af0e63f46e2af960fc3a8bfd2f26cb952b792b048f290624fda4bab2d28a32fafc7f57052354693b95d086332abed7b3aabf3347fa0dfbb44cf25eab567c2489f4e079ceba0f1876ef2477fd667058d507ee68f047348ddb133d32fd71ae46f5853aee59e4d2dacd3cc7c6745bcb7f9ccbbc7fdd0c45c35f9f9f5393e9f74dc1bb1d234a1fcdc4b0717718dbf68f64210905dc835ff2d269c5959ddf5f88257ac2525e40fb2e1218df51ffa37e18fd8861e7ca5358dfbabb8702ca7f6d76648bd30f21dfbcfbcb768a3279dbf414ea6d9fb6887dc41ecc25e71136308dfbbd7a2a3d29d821cb16bc6a3566f7b55dfec2362dc85d2bd10c2f356d4db209ed798c3d0fe62bff24e7c5bcf5458f1b4a7196c86df6370ce8cc181b32e5ad0fa882e6be899c8b9876b561317bfff7b5cfcd8d335b9ddd375edff54667e5b43cd9a5f7cc2e089c1effa02d125fc4e578e3988dea2cdfae1777da065f5b50f946b3f893348b797d5ddeffa40c76f7ca003db845cf3b5f4e9777d20ffff071f28601f28172d37da9cec32ff3b47eca7d7d137fe22f694da7fdb07bad7940fc467c12d9bd662c1bed16087f9018c6f099c7d25619553d3c23aae7172dbda46f1e57da4d6e110e96b1da08fa54794a7f01e0be6a748e5750cf94173e585aed2e6a431f1475f9c3d3d8da610f5c4acf8ccf89a90f382aa4e97275483705fe87c9e9cb0c65bbeb667ddcef9fa7c86fad551bd8f5eb0fe3b9deda7f5e7f908f4e839a6791a5e24724be7a151da3d7fc6acb7149f7bab5afcc7c660a9639d2a15c87b53b8c5ed7c42df1fbc10dfba7af7c62f83b8fa123a2dcfadf6e53a61ee323e6f5353cef03ac0b671cd6ffdfdd8cfd95f7f6bcff5f2d61eb88b9e73f64774c97d73ffcb31078d451f798132f74898924bf4ec3fd0997ec61ef462d0da91dd57fa64c8d7afffadd1781cdaf1a86f8dc78fe89934a9b3d22e35ea6dc9768fbf311e6dbcd5f16590ebcf726ee46b9877ed23636d4eafa218e0407c6125f3017cfecc6cf3d481b8b627602bcebddcb9b1b39719f1ccceac07c2c19f118bdf6aebb3366281dcfedd79fe6acdf5e7b97e513d1cecb365ec0b2abc01f570084da779b9c0def74a2bcd76aa4e3ed5fffed69e4a58bb184fb6da6f37e25733b6efe9eff3999cd139fecabe12bfc3027429618ded910bdb0bff303ff746b6c15b525f7b921db266ac032dd2297737409bbe265c67cbd392757bc2ae72f9f216bf719707006d04605953c93cacf559d558af3953b3e116d747f9a3cde37673b27b73ce788451178f10dccd7bf9514d697fb57c1de0b7609e127125a7b9c228031f9fd65b9b1d8db98751af96f7189f198b005a1a4fdf6ba69d9e150f84d6e3ec028cd1bc1f93522e5ae57d77f3de3d6b859500fc68d6e6fe5143c46d7f93f0794d1cdc7273d4cf3d5c8650f8a2435479defce9f6b32d4701dbc97524c24ad5a2b25eded957385e18975a8d0b6105b8f6b59fab7795bff7ae9a6f25bff1aee2f7def5f9f79eedf7e7e15f7cb6bad70fa0f5b4eb1fa9c79f7a1dc3e39cf924d13f37a27e6efa83f450cfedf9b27eeafe6eaa784c0003e6a4dbdde236d7b8d072c64c99799b97ab83dfeaa9289bf933ba5c6b78c6261ae8307eee9f15e116fb6b99efaced8de4fe2dca99f53923faf718f5b08a9ae278608e78aae51c10bfdd7b368a83b5790f2ba7ee8f3db06654759fa3a375f77bcf0175d852e39c15d6748a4eceaae5a4f09cf88bf1c0fa7d974fe080da577ff43e900fd1afdee7f887ef03be4629aedec7fdb3f761adf8fefbf87ff63e8a5fb53baeb7b83ebe7e8e7f619d41ac70352f7fb6ce306eefbd4747a7f6b7de03f95cc3fe781a837f7d3c593fa0dca8b3a2192b6fe14e4ef155de20d7eec01e66a31de74ade1abfa7b1a5a126c5ef600bf21eb6a07642e13fb43911c4b5cf358519f322daf7bd9a9cd206230d39cd6de2a5d35c0bdda26af3214d9c4fbdec21d9d687666e12c20a44c9b06a7b6651fb1ae355f98379f08b11aea590fa3993197281c4a6aff4dc12e1e5fc3b50e39325bf13f8ef52bbeb3ed3a3fa6ee3bb49f9d0d5604a91139e717e16f5371ef0f9c3779a5be2fca21e4e212e9dfec731e807d1d943ef3d5d300690d7b959278c55c1def8d060fdc36043f91c2935e6b2238e6867e14ecc056b1c5d7cc654c8d22b088366a1ceaab9b6a7e003c33a3d2f98a7259502724ed980c77c477149bc18d5fcfdb7cc8675f3b4400d7927c9d63bc5ff355a73ef80417c2169e015a83d524d3edae78b5f18771b22079857b813c513dfbd0fbf67b0017e013fd4203f49da9ede63e7d93aef02b9ee4f63c6cf045ca590d3a9ed16db50738e2c7e10df8c23ece5f0c8be5959116605d667b9203ebac1e7df1726f6081527e682a777f0dbdfb308235a9c98437a0118cc127c27d0f272ea9cfa27de13fe0def27ee3741f98bec60873af1801af58ec7ba7049a3c418b831d56c165ed5f96db04b3ee230c4e0d333c8f21dcffbf0251e95d4ef52bfe69807211d5ff2e5a8f733c477f3331bf5df184f50501d23317dd6657ca3de2b8a1b6bb06184e17ea1e77d645f07e2975949b50d798e8c13e5190ffb2cf9a49586ef6a509edccc6dd0fb6e63995061c59ea006335e56e18efadc49d761c2fddbd893e5fd642c36e0c6d8675f56c74f6bbcac69ed8839dfc301ce24ba574018b4a5d6ddc3edf5a02d0ffd9ee196fa3e1e1f3297ec45b9eed6fe2263d06aa85c24f3eaddc55d7b01be2af28a46a6658715f1e298bbacf37decad53df2fefd1beeebabc164e32d2a784dfb1a8c7f2923f75795582338da3dffc4ea2b97aeca156596643cf27d5ddeafba9e7ee172254ba809dcff5a872f72239bd459a37001bd63c8b1b34737d892b6f47ba4b569a1d20cf2e04dbf639699ea2d67fe14e9a7dd8725d49d66fd548777272479fa3c6be366835ef84e7cc9f3db7831b6f7c4e67514dce2d0f675f270ffc85e6df8adb0b3406ed88b9b1819f6ec771d31be69cc27dc4fe00ec3dcced701cd9bc0bdef76493ee01d4cf52e056f06fde0b7161be8d35cae0d2fc8db9e9f16fa1d1fb5bf31e666e7fd2ff53ef51f27ba8678a5bee4c4b1803e2f31f2abdd34052ed32f525d5879dfe5a3abd707fe622e33c8df6c1f90dd2ca7e8fb60a9fb15358016367e7a44518ca08e76a534b35169b1df2481a277ba90b351e8587ba7f81e69f24713795840d4c12e4708985bea77e5d1df33a528bd41a2951336b145a794dfe0b9e3f8fb446fcbeedf1598328c15c997b87f314f099612d3684cb4d733e8b4df47f405b05beb3143457501b2e31e6626e5e670d7553ccbb853f5897a8d8cc311e4863e24da92f397ee785bfa330ccb310f36e0a53ec39b84e806f770ccf4bcf52b81ac5e9baca29c3bf9bd816af3dcb04d7c9bdc6fe9aac592f87be73607e96d0458e18ee498e526f43ef641256cb5f1882be83b956a87d426dc83b517df94c36cf5aba47f0790bacf7cf962edd5788ce738356ca807a14b711e1e9e4ac5e907dd35adbbc7e258d20233a0f9f383f495c3072610488a7c8762f91e287e71cc761dbec9539eaa1bdb19fb0002d13ca9d6e06b40fc44764d4a3ebfb171969b5652775fd5261608241645acfd7d79459c03cccea9a02ae09513fc58c3f5db3ca5aec78393a288ded05e37eccb5bba25c56aeb1969b38cfc9b6adda6b06cd35a0159b86ce6ac37fdf1f9bbf2fd8ce35365d6979bb83ae0e6e13232daac949b0f62e6907c1fc78a89b5d782fac6f8d1c2c52becd91375dc7be75c40a11360ac6b1897b42e1bf509eaa735f89fcb7176973beae73dfc1fc8cbd40a1f08f9fae4dfd67e4f691763b069fdf3549f95d3d8becd447f434446e22630de738f9a13972cd35676c6985aecfbaa056ae119e05731668a39ea59ae38751692b3d11aa7bc450bf80dfadd0d72bed20235d027dc77cfc07de6b256ae85989b1a3be1ce6cb3f0c448717b2d9cb8a57e1e2bf927e895568be463e998a070a37e8c403ddef4e74097548d18cc583f2edab898abdcb11c54ac66ed279d629ec4733277b75c05cb7c45ec9388b5907e62d26aeb88062eb5fbe97b9ebbc97f51a3d414f47330fe7ebf70a44f7bdbadf9d5cf0bde4393aabf73a36efc539a76273fd5ef0ac79240eafca3e1bf356fb0e35b81de6574bb0c6edc4d0b72d49a3b9d609778b67ae11f5fcd88074223ef9b1a41d936bfe6b8aef18c74fac9910226f15da7aae27a565b5e76bdee9acfe113dfb8891c96ae7216b6d48abb5e8bf1027875fe88c9dcee9dc0c5fe359b9a7ff7723d69354f5f2da8a676b9bfefeccb1f612f5799c5537263665ab67fb5c8f696c3e88cfebb1dcd4c4835c9b4b8a3b8a8a3833a47797db57feb37ac6f22e52e302f9823bd6c52b38b6eafdb6873ddf97d2ce8d13f57e7963d23cd6b1c616eea3ad957f1eabc99178571f69eec315719444332fa41e9cbbe859e2dc5c3cfb9fe41b969a207fc1b25759447e52774ceb57ea4bb31e5ce8edeeed85b0bb177adf9d9c682f18ed5e380c9abdf0007b616d17bcc721be696c2573467a1f91d297f4dfa9be077d6388991beea86e4b7dca95897e507d449f6c6d8515f75d5aec9f85384ee14bb451d7cb82749e7e6d1fe28e7dc83927f9166d3dba57f802bd0b1807934f823e40b35748932609555ee66076edddb2aeae72389633fde2bbab7a0ef994a9d6e6534ae0c10f31ceda0c9ef9ba39acb59a731956c9f5dc596923874d78e49e0b69fac4e97a50f17ea4f4d8146f534e3678c679c898d6ee52f8bb85408d9bc2f5df976d9cfb4a7d8fcd7c1a9fce89aa6b4fbbdf9d98b4865e3af6546bc6027303d22ed99e5ed615f204337fa7b7404e04d78830afe4ac2ad2a169aefbdd793706ae9a77e3e0918fba8d8cc30bcdfb6b645a7b951fdbecd847fd88cc754e5cba8dfdf4518b67f872f3bb973a233c983365fdb44bfe0ad849cdb3965a7837a7b9b847fb7e4c9e6ba7189decde59d8f676aed94f071f5af30dce0f24d73dacbacb18010f799e87de17f79c119e0d796d2fb5bda8e65497ae0803a77b9447629e38580fa1e6bf30ffe4e7dfc7f145cedd60106d4e23e660cab0ceba8d3087e82469997fde1314ab5e4a7b35dad99ffd89f6f3c0d8d99fcf658adb8c81833e52df2653af57737eeec81f34386f168e587f02f00018333dcbd71b737c41fb5c7c100f941f1a9d676dfc6d97f8e948df7e55bd74354222d062027b0939ea1960e5dc8315eb7fefe5453aab6a80674c6ad994d77de61c1c736f0a2d68632aaaa3c65d0ca386bd59f38afe0e392289fa65d9cea638df47fecdf09ef051a0e114836e4b897c52702fca9f1107670a3ea96cf5b1447517ab3a28e515318f0bdac5f12cb729af34a6beeb147363e182359f889350d2df9f04f938cc87887f974faccf95a0ffb05e6d288ed55f3856bd271fc65e66577d946978609c505805ac2179640e24eaf54f978274c2819359073c07e29eca80f51db9772c49bdf1d4fd4b8b4c2fcc9ea07eed4469e82d81fbdfd5e26c4d63a46bcb3657fd163d01e79cb512e4bf307e300d553c5002bf4fad726ce92c3fb4b9ea838d7691f02bc96114b23e356350d3926c9b172edc88f6f5c1563a2c888779c1f51ede459bf598e7bdc3a30f3996664dc7a6ef2ca80707fb3ea90f12eb0b5692ad892785729a84e34cb241f0ed59d9cbb586771ccbdcccb59a653756396794678a47c48523fe1accaff3a7c80fe52c2bff25c7f1f005edfb07e6ec56b9d9bf3e90370c70386d0fa4b63ee5c43746fe47121873e64aeb60ae0eefc4a1a3f2e75453cca1aef6ed1c3436b39d03d250eccfc1c5fb87737075eede9e831fd77350885ebebbeb07fcc83887f35b7330b9300743f6f4e51c9c506bb9f8b89a83edafe600cf6798834baf869111265106a7661ffe621e2edd79a0fbf7e761b6764aaa7bcfd1ae7c5fc7380fbb758c3572f085982f475be085227ca5d82e5fd6e28fd60a6935e19c50ce274e9bb3846a5e9730fd55ed26d03ab51be2f403dccbccb311f7516a91518fb92714749d543c0576ff856a1ec41b533266e83db5bff3abbc11afe108f2e282ec176b41d64eeb6fef8d05e89aa3c66d20d12f7a10f2f7ea2dd46b9e1abb36ef726bfdd9c471bf0d39c6982ddbfcd08d1a4deea93c521d109786977c53d37986b3f812da857647cf748abffefe1a70a6f145f66b3ae3b5f77d4d27841c66d777c8666be2ace378f8b08f6dd27ea7fdb2a4fcff3cadff746d3f435f627f6d8f43ed9fd6e86ee672aef21cb5dbcf73b8c7e8b96cebcb8d8f073d0cae166df39c9eddcd89832bbdd4eb4ebcc5b138e6849fb9dfae041f8f6215effafbab4d80f844d6ffe479b20fcfbf98a78f05e6dba7cb56b79f7c9a98cf71b972e7bfb20b7aef0c410c4fdf2efcf333a49f0bbb79860483eb3324e8e11e7af369e019127cfce6397e4798c478aa055fce4513530aad597b3daee249b821ae1fc4023ae239dc74f56ca2cb1aec45620cb8dee677b4817cc25530164167cecf446b7df0ce7e734a8e57a57c51b1b451efb92eb5d80cae633f97b55b12e457d0d82715e761a70e71225ba053ee0b7bab1e40a7b5040c3fd6852c9b7cdcc74e5e6fd73c8baabb0ad6dc092e94ffe03aa1b374b9a74033d5daef3c3fc5128f8c598912e6a8ebe430692d41ae31cd6dd9d89454da126d499422073d73563ea62a1e91569cf90adbdcbc5f5aedd1d6104634055f413e51de2c865ca340aeecd8f5889310759d908f8c7348a4eba8ee0ff1ce78e992862f8ea7975660dbdc48fcecee193ab3f4962341785e5e75fb17ca6354296e123f1232c27a576cc5dd3caf46fe3dae472fa5fc9340ee769f70d3ca3647cce507ebe6fb333d14dd331d757055dd18e207718a8c03f698c95a5b56bff48d7a7ec71c7bd1fabe512a9da538522e2a7fffe5f97129bbe707d6b031163709e3d1f8461fb426ead5e8d7efbda8c2f6bd5b0c40df0e1a6bf71fdac17eadc3fbbd78465c3a67d2a693efdbaef14c32d7ce6f9d495b8f34a55dfdbb3369b1813e7b6755f9e682796dd3f21bff6778cea196115ca267c85dc1b9ddda8e1bfe89b1aed19ff1ec15fbda99fbf1dd734d8d689f8b66bff5b5d68a4cfcc23efb6ffc4cb41766bc2720cf99ca0cf8c0fbb89403aedb3de6adf549fbf9d86b6209ccd7ca9fa08543e792db7c1fb47f0dca75743e5f68e1bbb44ff1d4c91dc2a037f33c9f8e080b9f5a8dbd89a7e3c67600bf41fff36ce8947ab44fcec7b7883410ae9ed98cccb5987aee7e2962d400fafc0c56f379588554c3579fbfc52a1eea3e536e97b2f9cd9319816dfff49b87c8cce137410780f03bdddf0cdcf04d420ffd57ef55ba4b4fec45723cc72ee265d56f38b91b65ba837b2276a69ed82f3469a598c772a3f3494e47f5249ad576f73b812b597f06bfe3ac5dd29557df2985b456c277196f2493a3160b6fd6fd4e21a425afef23c3ce35a7cbf53541252da9a96bf2e968386aced6f63bd5be10b9b5d4dadfce92e331aebc6dd4bdcef13f5d576a37af0bbbdf5988dc0aaab0f39dd307dc5b6fcea7f06ee1fad9d42dddd258db32398553fba04515fc1df78d3890f64de862dd29be479f73dfd18be6da928ef815590ae4cdacdf894748448cd1304ac44976fc8b1677426be813d6167dbd82f29625e33a663e6a7801ae4322f709deeb82e7ba47589b50e18909e77481f3487afb0e9e3756fa71b2422d6ae36487ea9efbbbe67c238ddc31f1d9f9c0458671839e03971660d7113384ba2cefa4d9372dc127a41e88edfa9d6de82a1b34e7a9033187b97b6f638e813db5a1574a4bda9ec7e6de9bd528a21c620db8ca58bc3471bc1b8917b6c753558b449cc72c857a7879663c22d655dc7344fd708900fca2b3ac0283f440b0bea35b4aebf91ef865b8c619227e9bf13f8ccdd310c7988ef329db6dd6155dc01e1b5ac985f1bc9e99738e5d9b5c72f4e55ea2adc5d79ee62ad669e63857bacc41e3c3205ec2c05a15d453f9ba8f04b17a796e104e3d192e14be5f606ea2a87ef27835e39e37f3c835f84043aeacf9c5c79e403d8735d0f9be84f906bfac3ef31a13c8cf6a3d802f88f5d9c566a83032cd3d10cbe1db8873696b73d1196ba70b419ced97d25eaa6bf7c765a75e817e476df0b5a90df1f32e625d25c35763556413d21cc77331dffaacab0c7e5b2658cfa2365aecbdcb1ac9cd1eba5fb9779fde1df1543b1bfdaacfef47f84167a5e294fe3bb4351775fd97f31d36bf417c700960b2494f7e66550a575345c493e51bbcefe0dd310fd7ac914dd16a84d39c7bcfc526dac7c01532b0cb6a4f71ca7082bf17424c24eb0e5e1575b93be7fef1787d66865513ab179d6b2cf786af50a576736e1d9c28531c01747d6c0555f74c827339ee9e2fa11bf7cf3f27f630a653e758734dd8bde65e8bad54eb5c33966e24e5f5ef3cca049ecb88aaf03dae29decb4ac4ba65ba9d76b0912be1b3cd7f213ffaae890511d717278477efd5d08867a4f1759f09ef3125fe1afc3b73e8620ecae1f857f118e17c2adb7eaffdd5aff599ebf66c69ce27e2b44934b491513688f0cc71cf84cdbc74ce09e491459fd729197f91e9d15778ce8862991c63f971c1cf8bbd138fad2dd65fd533eba87f4bef98728f40941d22c2e7e3fa494e07c86fa29fa7e2b972837a9419eb452076da49a9473a413db7c63f3ca7c4595556a4c7ce7c43a60ff514caad7ca85e881ae6cf53da7317f98031e7e923a75e453e4ba6e3d0819c9de9d78d7d4f53e604f0cea42db78d501bcdc9b6eb319f0bc47d9d724c5d100e3a99715dd43b8aa4870ff4200e6962ead92e5767b33641ff5173074b4dd9e831eb60a61d7f359949cecbeea2f3f083cfdb5c7f614c336241cf436739b36ce6ca022ec53e06e8b4a0f94acd9a312015c5933f165c0b4cfde63318afc5d6b23bef9ee219abfa9e9da9e69b7c9d4815ae04fcab58fb795c50cd2f1dad8f2a97d3f850e86bec0b9523629de5f007af9595c49ca0403cc89ecfb995e7b2fd9fa20e1a3cbfc23795f205783352c86be756493add89a11f490f3a459de6b02ac6565b3b7f62ad38e8c3b16f5d17235777556c6f5fa7b8b184b7670ea952f83bc178db6dacc6a1902f8897d5fc1d9dabca3664b8a6d788850945dbc382b9ecefc6ad5917308fc6ee4418b57d641cf8ffa7cc4f10b11d637f4a03cda0664e29c7163aaca91a033f9fffa3fddd7a81f8cd5a94c4cb264c2b5218a38d4e1c688777d2aa70166e78107637ae9713aac54f63e8d70e83553baebbec097a733c3952fdcaa7a5d6e620162385357a536bb77de773c45ca017eb88b8e852043375ff6df6c4f6856bc86be2f33abcb2266c92d5a489151ad1366fe78e7554b593a6f6efc53f726f4c82b586bba83d33668405f471cdc27c12afc8d0f86e3e0b9a4f31cbf9dd5e22a3a6ff976e37bf17899af497c3f9b23f2680b32b67ccebee19f48e0ee8c3ff2be32bbbe37bc9c85751eba3d512e7ba34ccbdd2eb6ef34f4ea0c5bc7e1e092fcb9847e4c23263fbe17f3497f199b14ac09d443811afbd5f132b2a5cdbbaa2e73f735db0d9f7a42be43467789b33638db8e1ed7b6de335715638a5a130a9c74fe7016827627f067255cb1fd1537bcf858e7c8d599ac7c4edfcd1aebfc382319f7876047a3bcf6be6adf4a453df3887ea90f2a87731f785747ef7e6381b25ebba87d47b34c3f85d9ea31acebf71ecb6da707388d376edbbc817e4ab14a70be168683d85c1437f2dae9bfdbff25e08331475d72e5cb7248d18d0d9dcd0d96b1c9ea89eea2c881326310691d24aa49c77964ae2cd09586356c31c16ee9f660d32cf5bd1c4479eb45273cdb83fd877f039f670a3cda6b39beaff2ec7cd5d0c9434add3d7f35f6938ff017018801f366bbfafd6415627b80ee47b21be5c07835beb201d87644fc239f21dc55767c4c18e840c96927c04ed0efc3be9d4edbad05ff673e179721c2faef7f342689ca31f21aedab7975b4fcd2b628f9a3511b7eb11385599d702707d1e6275ebb6c709e2f010b1e8fa9c3144688f35f78eb0e9b355eb1f6c0bd601a55c92c8a26b9b6830e7e8c254fa198d9fe4c566ebff14cd6768e3952630afc1c5967acb8d8153e87f633c0b9a87259efb42e1964fec5f2c359fb1e8efb143ef20feba434cb68c1ec41dd7e19f3ebd8b247df88cf4d16eda4b6944e6eec8f507f2c3a6c1d8b23b673ce74b5e1927b13018031dbeb1ad6ff618f60f96dc179287829e01b4709a398ea96fbfb6b067b732321e1ff937e605b21d9f0f3bd1f22e76f97fe28eee24f8ade8cbd66a4e1e4464de5833cc83003e7a229aef4d6e7dafa6ef810f8be36bbdf7e6b1d9e3a091847d6405d7ba67d2662c7fee62fd5170bd056c0be406b631ea6d9b9119afdb5a29e624f8373bdfdf454f433c2b4dcb833e34b0997f412c81bd2565245a7f6bddd814aacd4d57b81ee87bf2be79f6445a3fa26f3e5fb8fe256efcd44cb717554171e009f8fc39fe489eebfc6aaf1266365c94a3e1a7bd25c8875ff0facc76105fc533c616d62173a4d1b5b3960f82386dc036cb23e735a373878f4b1c26f47dae3f938f1b6a45f5e94c422c9699bba59870fdaf39d7aab6fff440fda7aaee06fd21511574733859cbcbd1d89bb5d2116dd680ac544d681a89725e52dd4a5c24f595eb58e3d606aca5f58e78b272a272543cb6cc17a2574d8c648811e6ac4a6999d145e5fca62bd0b71b726fd763e7be4dccb4e79a57301ada57e39bb3c614d888f4b7ee1943bf4372e0fd91a68a5ba5668e20c46377dfc170591f29a7bece6e4d38644eebe84c5a94c0e57472967026c1b31e0aeafbe5de9107f76a9cce43b6c5ef1d1fbc3fffc6ce5d32470ce3832f1e710f48c036c517c51bcefc7cbcdeded9bf51317f56a32607f47ac4a7be6d19366bdd5d32be4243bc79964af4d58cf969ae7ae8861447639d61594dda5c827138b246d5cabd635b413d899e0dbf85357213e3eb701e6493eef95e23aee160c5666e17949f49798e2e754c67e73f7b1ee644d180db8073c39d33927075c6da2ec7dea77915266ae8c459fca3d03ec550468c358e74217f3226f354dcf0f1ef1137edaf38079686a4c9f017da317bf83b76acf35ca58b1a65d1a5f8ecebc664375edaf35c2e988b19f2dde39c7da137f285c0ce25caa7f5b602f57176ac4d41d8dbe7027b8f9d907b004c8ae7d197f2b271de8b05607f98a445dd8c7327b7b164feeb99b409973f56f7cd4e096308e75f9fa355d7af4830bfa0972edbb8f2f2477ed1c573a4aac7abd8c88cb61ef16c0c5f517f393c46465df7ffe6c5e168c2189519703d6d3de6a87fa177785c64f01d3f77c9b74f86974fe7bfe16b34ff16e9fef96aff18fa02b59648d341738f94ff3944cfe5e9f3fb0647d523483d0c89c97ae3e13932c388ce546d4eb5b1c606cb0de4c49f0bd7d7d9979a9ae1677fd58cc91637e7087236b6cf3aa4670d391731a0674d43b3f5b39b7b09ecf5e2b979677de172ebdb9497bde1b316cd39f41a612e4d07bd045cbf83a81747c7afe567fb1b2eb408cedd0c39f140fb1cfc26e75f1ac791b412e344679b7bc23c86b7c3f554b7d84d63a05dc74df3ecb4b8b54f42c4dd3a53e4a51c279bf6daa57ce9d49a60bf394b95671c2efaf9fdf285cfbc82cf835b3e3cc72333ff74bdafc5452e70df50efa5387c209eb0b14fb515bbaedabb8b596c4f479e9548c6b1bdfcce1e35be8e19c3f7780c9c140a9b836b83fd9a83a9f24da6c5f6c54a8d35bc63a8e7806b5bc872dec4125fee4531a4bd0858b747c2a7347b73b2947fa3dd1713b3b5b5e189f3b981cb9ca403b2030783fa969da20a2f145b74ed461e89138ca93063bb14dfd888fff6736531d4b797c23f46dbf5a7b5403d592fd1a6bf6e15eebdf113ebf929dae62a965e6a3f31d74e3ddccbca3f2636e300e8bcd78e27d65f6af916a49e13064eccac8f16233044bfc3cc9dc0a0ba578f0fe284bc32323c966d0f46735eada354da0b37f8a63e797c8bdd6b1cd0754d337623a17fc23f15c287fcde74543a2a3ffb459d14f039dd7b8ecbeb7b0e62d7d3a9b6db626f7a75ced3470cda61ddefe46e24ebee774ed7b5d0e0538df5a8c5ae77e8df2776a3acece18e969ab4eeb575f7dedb58b87751b7ae6a1fdc285d37e76b132b120e2d381377703e651ba4ce13ed4c7deaec93fbad2623f722805e0ef6b2ba92b1c1efaa3fcce4fe7fcac1248784f326b1f03cea6f7fa43a815c6e48bf4b861f545b22cdebe04371df70bffe654df7c21eed7896732f3de1648b0be9623c2afca7c0fa21611ad16f97a04b66896c709573085fa267ca55109f4324dd138e817c89b635e531f41f7c56422f1ee44aa92f411c8e73d26d5e989235eaef123cefd29cf8fa958d97ad66b8d0bc69594993c61c7aee3b9f59d2b4a2ce6f4cfff8372e39eb35b0fe945c6ef4b6ff936a0237af7387563a3a397f741d6abfce96a8f106b942b06d17f9c4bc4e94d77ca3beaae7668dc650732bd186612e249b62fec31136e6ac301754ceafbf47f8ed0bf5934f43b463f7e4ab5a0bc6b30bbd8925d248c887524454cf203ce84cfaac614e3d0829cc3fe6c15ea36dee77eef1d8dca3306ac28d86940b08b95f2f2cc5b1871dc639206c0e734f663bbbac08133ecb11a394311fd5d188015f20491b303fc74f07dc9399fcf5ef51dc13ab9e15cd8c691c4b3ddac7c9e9948bf09cc99fe47f401e631a3f292e544fe5c6a1ce007ae663f4c9079cb3b86bec7bdae6be9cdca9959f746fc6b45e86d443f2f2d1fa87faa4fdaca49808e248a3b12b127acf7de0f98a9bfb20cec3e1bc113d5f1e320e2f0bee96aa16169f33ca272e0897ccbd4469f73d36fc1e875d293aefa1797ed9c931d0b304bf7896f5cd67a9fecd6711e4a7602f6e423d7e890858cb678c3cd93a6244a8aeb150baa321fbcc16e19df7a526ad14f21e8a8f74177bd17eaeb91f11710445b33a80f39e7ac4e31627c19c6d4ad31e70e7c8a7aab09461fd37fad5d990b4bbac964f0ceacf2ef954c2ece05a302f2e380fc1bc5a01f21ca5318c759cca0e96b3b4498b7f4c79fc5b18196fe1b6f7c2bed2909e2b6e9f0bf5af08b72d55ddb0ac5dc60111fe9ebe0fb50898afa9baff4cc688a7a133c4d875debbb4896f640c7d17edb3922f13104f4cfbace8e3a1fe19f6d5c1bd5e18fbb7c47c5867ac0462c767c8311c6727ca3dbb6fc2069d66d0e44cb40ed608c63724eeb703f45ef5e67a86362f3626eafb5f72c5611c44f5945a71c5959eab7886143f7da575f9c9d780754b7d5b3dd7ac645ebe03d7c1f2edda68f39639ae61e9fd28155e127085a895bfcd1556b0246c91e03320c59cdd541318b366e568e14e0665dbc35d3347a9b4891764ebab1ef13c612e4d97f966a916e573eee399f707fe5db25fff46e7cb533056357deee3ce578cc911ccf1c9f6a3027d82c2157afbaebd67242e5ae097b20bee4934eb1af76bcdfaa63f729587214e0c735d5fbfd7b2c63e70c1dab1c8d5a26ae17f766de3c3c593f699dae7666e0ba89703a78ab233ac576b46cf6033913fa6d75bedf961e39f7852f54a24708687eec34ccdbd5e720d77e6d9e58838924405f65a22bfc2473ba6a1ce1a7fa5f0cf4baed72407c244872f589fa01aa4d803cf513c5aab5a53b0956d7eeb19f044f0ac0f237ad6c626282ec3fd11f821991769a39eefad793ed1f8c5dab53d90f66234e07aa3ddebd91495c1ef251843069a5fd1a0b3479a777ca31ae49d7ac7747d404c1ef0b2a87d5636be27d6072ed13657ef736fe8b8ffce8c0f78e139c89b39588c4bd50f5d8a4e9e25fb3c070b3768e7e012ebdc07b51293cbd51cc491d01457644cfde481ebbf12679353bafe6ba2b00b91e2642c6a384bfdb0c53e320f02d462f97aa5f192929e646a299e14c2f93197c817eb4fbad8d7e75e0aae0981c635e67f9af744dde408720831f2cc8246dbc2ada15e9e6b9581f961e0e8f471bc5917347c2d58173a8def95361b73f91807237a425bbf1021f721e574ae78a50bdce94ea2d6476dc52242ac632a1957112f2bc17800836ad68e74a0b68c7c1d1af0441b09f692e909f08b8674e6a1bfcf7ddd736377e1eb42f705b1a21d8eee65b35f4707ecb9671f5bd6679c67f903b5f0437c57e4fff1687dab1c9b64dc15e71aed21bfbb1f6ea85790d768a6eafacf18ffc7079ed307e8a1d7adc8980c168a43853008dacb1ddf13f8d6808b663250b5e4ece0aa3c1fae233f6ffd1bc4a76e7deae90817344e03fc6df7a8fa17c9ce3d10174092e6b437c384ed8ed03c0fb9c8622b307d3e4bdeb906f8309636eaf04497eb75f62076b0ce1edc977fb0ceea0d71c4194a3fb39db3bd9ab3d64eaae70d15deb57dde7bb033a0492442c6bb09fd0db4e367fe14fae8674d2c8edccb0bead94a9203cff3f3621b32cfaf86fa73e15dcbfb7838e4c419976be14e5ced0bd21470e83aa833c792b1bca1d3e95f26ee2fe81dfe68d7484ebd9efccef50bd72629572096cc539e02576b333e4fd8b308f690fb88ee1fd8e665c057d8f81fc9038f99d0df18cb919b649bf4f5b954f52ab0dd3561dd7bf8d4c6de525f9f5daa3344c5e7ffa775d89dd75beb70017b7b08f3fa703daf6919c0bca679f04fe6156c2af16d709e22237eb678b673f97c128279f265c29cc5dc97a97098841558b467b1417dc16c33fd05e38bb047c49223dde3336d41d8a6f973adec0fe1ed9de49979a8eb6d73ae35bea378ae8fad4d8db89672441b516f943f44dcaae566d0e793fabf9d53f9f7e7d4feade418528ff46bfb51b803b01f4bedee1fd80f7dd372dcd5d7f6e3fc27367fc9367fb4dbffaf6d7ef31cd9d857fee01234995a9ef38e8fcb7503ee7ffb51b6bdc83ae4ce85573fcca4fdc9773077f662ac7cdc5d8e3de85658f9afb9c2ebe7dcd76744c6c96873346c67017ba4ab7a83daa7c125daec8c960b7a8e3165563acbcd9ce7ce001f52f3bc4084efad6fe919cc7d552a6e6e5fdd0bcfa410e2eece7b5dca5e2f17ec434dddf37cd0c94ff3565570a65eaa9ce6e67465f700b39e8e2df59b45f35eec8ff3fa51b1e1fe0e3042d8ef3928db9a4e73bdeacd218e93ab3104bd8f1fd1b91dc3fe5cd7569c624d29d6ffe6fc80cd3d4aac8187bc23c42509354de6c5185a51b6b63117185a1d7e0f2f63ec31fb4ac41d219c9c7b4e5833ed28e99ca33e1b2710933b95d716a81714dbc44595513edf186694833e4918ef30c31a75872fc689d76a1d6d4e6ee7fbd46735343fc7ea2ad72a2351ee63ce67cd76673a0f2de4d1aab74d2cce35aed2a35e07d3cb10f755da53a5c1de89ef897307d6d079e8366b83b53dcafa4fef017d445ee94a4dd984e484f651270e4571d019bf5cc839e8634be2cd4b2eb5e2725f11874362aeb157e8e2f19af4971e9e1711e0ca437f61c6b6d20fd9aeb3df1d578ab9a1cf206ece02cc8d0da2edee4feff1081accc950d0757731d52182cda4c31de23dae3613ea793d816ea39c61df6dec7a26693ee64bfc4e10931616f35964b31cf134a6652b0e256378c731d94200af6f3bb6c8ff45fd0425afeb90d6b5bf7427a825905a63c58b6bececb66733e8c777d9e9bdc57c9556217c98afa29957eecdc0d8bbd5c1bb5841575b1d3518c36caafdd5e187f09cc00b3aeb3c7c8fb656ccfe92149e97f2fdf49e4628f6ab692ee76e7b7ac93c7e4baad9320fd58a6bcec831a3293d41c0edf7aeaf2351de2b3d4cbc5ee961ce356f9cdcd6b71e33ff13f5a390be3ce4c9c3a5eb9f0acc553811f3ad8e1097bcd0ca39ad87b765c5f5237adeb47e6ad64c5a45680bcf07d43fcc0e76c175a78bf7c5daf0a936a39db0bee3cd1e66b1dacb2b177be873caf7a588b1788c526fb424bee6c8941ccb7e44cf926c7b8b050f9bf3157c2edd0e303ee6f956f88ea06af9af1bbb2cd43aa9e7dd75c2eb623542dc70320b07f4dbe30711716db11323df915ebecae37f10ef10d52bbd3dd51848e72e788b55be4d877e1cb84ee9bc7ace52f6f42063e222404c87feb26fce39ec6b9bec1f688f48f02dd18601bfbd201de6c697bc944e13ff91add2998f5b24903f03aebecce61e3bc08b1ee356bfacf7df7b1dc731367727ceb3c52e71b926780eaf84ffc17e68e77bc7c8543989f10af0dba8cd19108f42130f80ff22c381bafe52bb700e5f50f349e5b7f81d2ea4e92c0a33563c9c11f8288999bbd8678e5c9ce8af8613a5fbdb1fe767750ee3993d5daa18c9d5a93e972ec66d7c9322b6315f709db5ed81453dd1ae26bf0cee885390fab5c373cc3a8897b0fe1d5b158edc8e3610d8d61791302f35fe4662b3f6ae8473b5f05cf613ce9c2f0abf58c74263de2ed02a98b0b65f630795bd397fb25553f005bed5ee256e0fe63e32d78ed2f2a53e6ed4253e0cb284fb690f848946be6aec515987ecd7c0f3a7c8e9d5dca710c0a3a9f41897dae486bd0e0c153fa5d245dd3bb56f5f7f790df60752eed8637d371e87313ef7d08a6796d2a76ce3e12fcf86317029a8be41f7c2eb78b111c02d95266afc408b660ef901ff8ef4b573c4d02b6d9f41dcf2b48f232123a5bf2c7f76d7fb23adf73bd29df60b937dd462f0c57acfa9279ecfad6977dd8aec34c7f9d9f339e1b16e6f8a3e19f8fc8dbf48637e107d5b897b8530c159132b757afe7fcbd69d87ffdfdb3aa53d843175aae61ec73d45ac0dbcfb076b7ca15d0cee686ec7a1eaaf5bbb58cbd38d78bc633fe9b33f64125726db185a878517fdb67d009c7c564f198b21a85e4e3e0df782c0d83e785c0f8b085357b0cee90535adda3a7713a348e86750318b155d3a310be9892f3c97ed21fe86fbb3e3bb051ff1987db7c3476f9f239ee9a593e37820ec15c40d45157c109f8e0f1c81e2859ff5237aeadbb30479ffc8f70a7eed7b6947b66d3bc2b8916d1b2adb86fd615fdbb65434b1bbd2d0befd4c97bc377f427474c88ddd2faf2955cfdffe5c8809cfa9d7d614f790d729dc40d9cbe293bdbcf5fe3b75960bc5017178cd13d0d09b2ddd10f42122c43646cc1947f8b5e9caf537e4f3cf1997bfac3ab951d27c292887b174834e6d38e4faa59e20afc4e36a1435ef365eb8fe40e1a48c83473d4a2f29f745b61a0a17ae97061e70ccc5bcf722f937fa2d9aaf71af77a99e237c671c6799710d369c524fd45d0ee774f9126d58bf720f38dfc6af9b1beb07c6102d5b1d1b7e9781b44f7594ed366515bfacc4558d19710eded2f57f101f66ab69960df9fc0a17dbbaadbbaa5c95ef206fcf95ee18e0b93057b21cd76dad90f90acf43e721bb719de9610e2993efea398ddaa4baadf320c2fdf206aeb51907d4cbd2ed42fddee10d7204a87fe82207d215b6d56c9fb368dfef50b2fed679e814a3cfd7ad3aef578e3be3d2b96e75e33ac00540dc111aed3cc0fb616df6e2f15e68e72085f80675d2dadfba94a46f1b68a1f1794c04ac2fb0bfb3dda0adf79630be493274548fe2e6449cc8bec6f88182300073c19a2e728a78b61d6184a486314b382f37a2bfde323e9bcb0beca159fdb0a882fd7d8f53785713e6f1c81c4bc1b6e49e818bcafb756af685e66b6d0e4fea5cb7e4b3a7ddcffe3be7745283f2e59acbdcba3be668981ac813991873ac2ff0b309c59d3165fbd63c0f62f7c3160b30966d1ee6d9d3fb1801d4d7239fe842b9c97db4cddf14f61e7161941bf29c8711e9da89e8837832a754d36ab9578927a4209f22b9402e1af1e96dbecb045c04e5d75663d9e6c1182f71f1f08c9b85845d3cd9c5866b5543e21aa27c9d08ee1688bdf4627b487c9c87cd74543b1d1e629af3f0fbf9ecd4ff4b6da2abf9bce43a73e637b6f26a3e7ffce97c82e6a056112f52f811c339ea0ea2ed3a56fb47902dca86c8619ed67639eee4ad19d760acdd9e9f417ed0b4d54a073e21d294f23af86a2b99a95ae031ea71d5571f8ccfc631ffcc555f98927dd253b4d9bd72bd2e26fe98782cdf95fed496b442b53b7c46d39f7c7a8f99672f373b8a0b0a6d49faeef364d859bb2563072fad7deaec41e1bf137792159f0ff7c809cf3afc431339f4ea39faa921e264679eb3a4b51d653b67e5b9ccf3a0ab3cbc8b9cab8b2a38b56b023e07dddc256bc2abb1277c22c643cdfcbf72fe3fd730beca98b388eb3f26f59a33bf6e4258f86f78c6157e6756da058c5d472fc0f4dd927bf4a53c53afb29352ef9fe2056cdfc32a35df50e37789f754ef584f4d69776d0de9c50c6ed81a33da02272ee483eeb1ee395e5488294bcd127afb12f9137d4865d3a88f07ec87048da8283b3805cf4b5adb6a5e70be2f889dc17979105ddbdbae877bd24a9e6ad84794ce24f3d413e70d701b82bf98d9dfe4a7c11ec1beb8a83ec4b4febc171b7bb62959a77dcb3dfbac2f2312b8f718ebf407a51b153ff5ea8d77259d97229583b68fead37e030e9c8e6e3b70773fdcde17af0be2aec65ec8ea44bc648fbc469a3981bac2d539d39b9359d8cec9ff6daf580b2d201d8b39f5ebebff8139e9ef8dd0f83c27cbea9fcf497fddfb9fe6243d5fcd497faf9dfb73527c5ccf49aed5f396631fceb13bcee9b4e7ffe1b472db3ef162ab38984e2569d924b335f45724e3f63c6d310643e26e0b23e6bf4ecf43a5f14bd8344f8e76e41b34cf54dbdf9dadc56cdd72a86efdbb760de7c4ab5edf45f0aeebd6f7d89cf65ddf4308cf11a3dd55aed39be60662106219bf2207bf3bc835ea75e8f46795627217dba718b15dd4d3d8e569ae7ce0862eb4d0523a545dee6841dcd1988bea7efe1137e371cd1d9d95c867edf80ef48e76782e97425ab12caeb9a43f1a3f412437f8adc7d2033db2ab675ad233dde09ebe5c3f53e8c637fad8aeefe99ee24aec65027cd7a758ffc40bae47a6753f75ffda2fb418f45b6ef05d5bcde785882d711edee2e0fe489ebee1019f79386ea3d2857a2bf6eb11d7f5c1bfea81db2657fd6d0b21a1d6d2727d865e94c9eb9eb8bac785fd8953fbe045499f2ffbc18dad5c0baf3943cd4f3d7a9fb8b8632ba8e22e1ff521d6ba9cd9d5bed0ca2bceecc3389265f79ad3f535f75ade7d4fbca6f39e59723cc755afaf2f9f3aeb5194aefdee7d0237ef727ce753271f35672de059ccdd475437715d3c586abe9cbadafede8c6df8fb06b5a4126380319c16911feb42ec14572fe0db258a9bed60099d7c85e480fea5f41e5a6e902616c3189175f101674c7b093109eb4e3fc010ed09d881bad58fdf123724f50a4466a75fc463fcf90178a014af0ee76b01ffd6e3c3769663a5576824aa2f64c23abc3d6ed2ec9a0f1bfd4a8dce31c5654d394eff4100979897805f155b8c152eb57dcbf381bc4d902b43ac1fd858e0fb121af225292e1fe43eb5826a02e782801a738c39e7acb40bf52e8753635f808f46cca96f29807c80001da3dc543a9f5beb476baf77acb9cd716188b885d28a2fa51d420cf58bdf128cc70f4ed1459a7446aee15ae867f78fab1603dffcf6a1c389db9c45a6c2046e73e7abb909b8b71d7b007f939bdb85719ba3a6fec78a7cdf9cb86817cc8146f31dbafb6b2e5ae02709b5bdea9f69cef3253d4bfe1c4f195f89731edeff6ace6383746bb27cf1fbd7161afaeac520da9c286ea811ef61f0b80006dd4b6d5c7b8a03bacba38e3e91f257a2e4f0d1e2f5273ddcd052842fc47de2142e6b921f762b977019b375457345d7bd501c83639a11475f2c310e4975aa3b49f00bbda5eb9fb06733b4caad5a5bdb668eb8a762456b284e3dd5bb93188039e53ac389fcb6a9ea53caeaa0c737b55d3fdcba37630016edbadead141f1771665c427ba19e6dff965c71864f898739b9acef15ee073859948d92dff17a37f113f0ed61bfabb3a8dacf1e5ce284c4f7f3790f459950bc800fc4475288c9257d6aafa35abb01f5b6b4f60a37ba3af7ddb768a383de2ff2f6abfcc0b5bf33457fa7eef93bb976dd43ef37be07f28dcabf9bb374170b6ff0e92cede93f08f09be6e29ac7fbd399fcd8d3b0306b3b324ea33869b9bb7319412e214b3daa0fb8c76873827af0bce517d157c413bf201d86a5eaad5b135f9f471aa3256b1858986b0d89935bf639b9bd50f18ea18f097f07fbad38b1b50eef77eac75dbd872c19aa67cb80d3caab03e2588953eccd8f66beb7a8581301d67e8ebdaa27aea9734f39ed51f1d6fc1ee44f538543f143cefd1a3b375467e861c063922127431ca5a10d5c1d696ca763d597d67e2ff518377eeee0a4bbf751bc1721bef754d91be051079ec577c2936581e05ca245753a893dbc8a4fdffbc87bba00d8afad38f04defa9bd4e5a31701b219f4c96a06d2b84ff4ee7486faf04cdde478ef20fea0502cc0ceeb3e1816bb94be1df51cf85936f7395976dde99faea8f4a3fbdfd1ccebd399e371eecb167af3d7b5b4eff7177bd61cdda3b455b3f5678cd91ee20c6017985c86748f0bd6b87fb6d3385c5083ea2e75cf5b4c139a1fb8ceb80f89cfae0259eff61a6b0a5e087c97d44f6344d6bd62c7f4b9f18270275b333ebd9a569cddc661ec5e11ee5e4984bfc23563536e041d992e6711ac13e1603c218299f4a3c7def53dd83ef429cab781e8c57ccf39e422d3b46ac4beb4ba59097f0cfcac68e0657fc64fe9a38aab8d679c9317750d173a3ee8a28e18c895def138f7cb1410ebf94f281a1d8d333c550c328abf8d8ae11a5f1f14c9caeefd1d69af4c792e26f636787d5cfebda13f5486a7a42b59390d6f44ac43fb0b61dfae1acd50b6ffd77e0d838a97c395cd7727b17eee4d4fa6dcd1e0b193be22ff91c55f514eba18b15260c31e79a079c6b5eb6bda3ca8e617d6bc83c6756ac61dd89b8cbc691c2d784a0634f6b7fcf9c7fb76c63c9b5af0b9d91c04121091f1361de1dfa1f201f7be6e7031bd9d8273da25cd95ef52724697e0f732ed56766426b74855c589eb4019feb245c6fc77c8f4ffb8535d97c95e7db4aeeede07a19f8eded6f0217601e8952605e259cb6fd4b7533e7eb481cceccc35a56505b36c807eb6b6955c15e90df3bbf3aebe79023009cff36aa3bd7da87cf1a216e3f0fb112d77908eb8ab3e668c4ae977fabf901bfd3e3b93934ebec3a0f508a9e0e941e57ae11d590dfd0e755f81eab7814b49148cfa31ac4e7be4f2067aa37ff2d50b1a26e2f99b7ccc8559fe752bb436cc18cf391f51debc703de0e6adcf5913862fcb6c71c7c911a62abadcf9c6355bb5e85d21078c8584bbebd7740fc6a32c5ba41be593beada9eae0bea46152ee5fb35813ea5503ee5886d4daafc57eca1c4b8273c479bc18c6bc841cb8f89f66c84ba9a85eb1fd3ebfa7cea5fe81de4ca511c811f81ab7a499c02f064fd3a7408794aa865fc08145e2038d279fb1c6801e676957df10f0a27043d693ff71dfddc69c01c9c86aa25ad83b47d1e7aef59b30f81d7a9798f996503f6e05bdb70f828190ba21da99e6d557c8ea22e7d5d517ed4e9f3d287ac817b297b1aac9e1342fff290b5ab9d40cc556e9e703c106726549b5d8e4b85475c62cdd0cecd9279b603580bc689f91ed314345acb3de90f3bac335c726f4a4af9ce596e031619ef437d60437b6a1c6ce4e91697e84cf7b8c44a77907882660adb0f35c880dee1704ff79be2791250afb91ff4c645877c93cf7d6fcc55f990e95c03d454bfa90c3eed19c022005638741633d637af5fb847896cee8e386dde18a35fbacc7d293dda43fc6f07df5f92deab38952d77e723e16d0e743f2f00ee96d24a52e20514d8571223beabf11936bd7a5faaf80965c1385dc571a5f24dd043163057b8185e905f2e3c475bea23cc04f0de404fda06faed614e9663c2a86bc5a7354cf9a9c7257310a735e159cb1d6be30663ce9f0db582b19eb3907cbfbffaf9b48bf4e83cf219ab89ebb9a2bab8977c5aafcc29650cf0b78db5b364ee1af85b69c5c69aea07de547d7651b673c19fa95e50f1d791eb9e59b3d6712d85aacf8bf28e01e1308b6aa2c5ac553df36d5eefc5e644eb3d38d17ab712d31ad36f000f74f3fee96ced140a9fbdd7094bec72bf4dfec4386cd9d99bc87939470d239e9b57f67fd19e29ac1c70057430af8cc1573eebff63efcbda1355b6867fd0bef80043275cc601842889c858770cb62885b2db117ffdf7543158c5a426e9b3fbbc675ff874ba8a9a57ada9d690dd1d79a7e6bad9026ff8d88664b403f9bfae91fdbbc8ff5523b5af31dbbcddf494db7f687e91f3b6a765f1836c6d3cabbe7dd8eac065a29d3e3f27b32b7f47eaf807888fc7b1f22cec2742d16d5a171f50f9bdacf989d122f19786e8b8a17273c9b9d2f0c29fd288701e9afc6daf7c5b477b6758e1c0e31c22ee9bea64f73ae3c3419e37a7c8bbee30a2e516fe83c418662f8b636ac653b22ee3932d6c936e2fa2299a87e519547b487ee345581761017a0c4c734d2eccecac4d50e40d550ada98cd21accfc1c47edaf6cc04b0e011f0f958e2df653c390b66bc3b97db5798460607d9b98c7319499919419ad9eb92f716621cee66369fa322ff41418772dbe18c0e41a3880da5e07845791fb95d77614f59ca993a238e8391cccdab71b9457f351928b16b9da1bcdeae1cbb7f9aac9727555757cea51faac359faae8350d595b5cacdce9338b9c8abd3cae704d68f55e833ead1db68d0dbcc56ef70b7f22c210aac339cc4e6932f0969309e2e3fe67d5f8eb53090463f5c8b0d01671cfd1ed8bcf5c2bd37dcaf1c5b85ea7ab63346335e95143be082c83301ef5c945d102b7f4f25a81a17ad37b7e0c09394bdbe01aec69d596bb33db926b08c28989a529018e32d3367fb432d328de988374d160cb408cafa5a711786a299d07cd34dd5d4ad4071f53ea70fc5f5028afcfb18cc35a8887303bc9bacc2cfec70ea4626a70ffb96cec06466c1702eca2787d18e4174ba80a11a2d74e3a2db111bc4eadee981f99449b60e136c7d31bae83630a76622ebe3440c0c567f374c4b3345ceb9a8ae17b186669bee5c547ecd2d3cdf7c7e32e3c0e029b0d41f53e9e678aa1b893ddd98f28b58db3b1c54e652c83891cf2e22e1e08ed5d0bc98a921aa6f1ea7c9c626f870f59043fd4c99f3c1e925534f87bcb5899e1623c1702fe674ca8517c7f4593f82c96cadb8d628f9e1983e1f987d7d9eed473237c2c81713d9888599c1405eb71229e0cce1dc0a428d05276bad6ca708446da8ba11e801435500a7ed3de91c4d4709078cd9c935cec6cc36df0d46647463ca4c0d3842df1b8c88fa135db3fff742dabb269bfcd0c75be65d4c7ea8c3d0357b687ee16001137d1627501bf613ddd4c4009d4f9c4093fcff06d2f51b48d7c76c88fa33445571237634d3cd0f732462f85ac49a3cdf80700a0d7e6e41551db1fbb99dbcbb10a2f50f8258b455bdef5a23c85830743d4939189b6466a0f38f829e6b9cd17cd71ae39c1c431db86c5f9f47bca28d4c5eb7607f31e2ff065c60cc9811ab6f9afecf1aba85ff9fea8c4afc5f7cd20ded5760f0fa4c1755d750d4b9a1895383d56776a89a2376638ef0f77fcfad403547e68fb9018eae01c7d6a6bfd27a3e5acfbb67267b2b665dcfc4eb799f4aeafedd565cb43f4eccf08199e8732b586b177872627eee496a32b5cee83eb26014aaef06dc6b1b753563206748492f80f87ca653e629b5365be6c33cad107ef8170ffc8b07febbf08060b8bd40d5eec303f385096dd54e5cb47f0e9c9d5c4bddbfeb7d6089ca6ece4c4f8b91309ad92aba873d7da4898b113b74d1f98c140eedef544c9cb9adb99698ecd03d5bc0be3e8fc395d60b12bc5e491d6beb7e3863945fe8fcf4088edc8b3675a1b9d1a1a60406fbc3e572bc60256a8917f459aa9bea4037e048b3a1bad0b59e6e63bc32727ae6bb1b99399ee08db96daada086e7453eb4f99f3dfe0a2289a1d6cf2fd1969baf231bbccce73c3ec0186ffdbeda1efd9f27b4d17b3ef596d1318ec48c7786774d1a544036c90ccadc0f5acf3c589d0794769867710fe810ae0a617630357d38db643eb0b2c3955adb3e21a4acf592bbbc0d2c6e6064e4dd6492de8b35309df0780ce6b6e454f6f6c7ff86ef133771364f709f6371f3aebcb2b7927c7ec118ccd1d98f37031ee1ffd8d769187ccd21e2891636be17b0cf78e15c0494fe540ba7ff2acd3b3138b17a03bcc44ec8fde756d65f6820d90586b614d536f0c56ee1ac1cd94c9e0e6bcf20c9eb3a2601798099a97654265ac8bdac635fb3fd4d17e366380680efbefa61958b30828f311c28f706098c09c47ac6e1aec666e45a7203a9d9d5ea22df490332230d70c28e930982f0cf149971231884e27331214d71013c708e753491d793d309d72b30b1847ec946179d5066bcf523963adbeb9923a76c77d306558ced445773e3affd06c53352e503423530be2e9c58a790497ac15857397817fa3f916f34378773136d78b75ffe678ba95f403861dbedb49e4592aba17db4052c6aa9d7c78718e47305c0bd15c547a3a173d05f10ce1b1a917ab3f7489e11766c2bf8fc30f53dab1fa50ddfa9c68abb6a2b8869c5a307c5bc4a2fd6e9b08cfe0fd700d2883711fe1cd23bab7d3e8e9325b6b086e8e160c765e2cca860e151746a9c3841bf4bdb5e9bb96a40d9db5ba793760321d07d93d12b57e766f94f785314af5182a6f6c7f6cc467849f117d7bf220c243e795d60b4f0e13be7b2338d6d71a9acf0fdd8a10debae21d3b51d178f3a2de9c66f505deb1111de075ea5e58cafedd365d83811be7a2ce17969c06d219b5fffb7a5f58b4be1f6014be05f128356d2d9ac6e75f6014a0f5fcad5b5fc32b9aae2ada88e57529d9a82328065cf0ae49ea46b71325308411e0a0a2b1c909f13788feab365879a659e31fe6ba52ccd7750d6a3d534bd24e08de3cc40fe94a753d2b933b9dd079a3f39fdafd28c7db7db49fb30d08cd8b81ea95404c1c0bdd3fa8fc40f3bfe269b3757dba0da76ec430885fcad7a72e22c8ea76b2010cffdfb5bed12975d2fd6c76813f80c4aedfd87ff9adff2d7e2b4af5981fa823847704d7e4ce07c7083584072c5d59cfa5007deffa62e28091ba9a7288ef8f4e0173fedbb482a93912591daafd69c42708efb946f4cb1805734f4c0eba0d66ee263c60bc2729e3c5b8bf9e8ff8dddc08de55cccf2588bf38cf710e4ed340f0b1885834de5b516f5cb2fa8555d49b683c05b0c9de1bab2bad22674c598577d60ae3a1f65652de2f0fe3cd249a8f12ced115339066a927ed230daf27c3b35df7c6959471c0c1e9623d7b7298409a4ae27016ef919cf68ee52626c70bb1cfe4fccdc829f002a36d68b989618358d99b18cf3e9d1c8ee17d98a0f5295358c8534942ad677476683a555d8f627b43244726e8fccfbea48dd07e9923f1969c79c52b56b63e7da8ac313f84e9f0f4973d90579381c239b6bcf42cf184789f057b3ed863cd97574f47c702bebcde2ea7faebd34424cb9d83bb519beb6ca528e7e972790fc6495e373ad5ebb6449ff57ab7171475e77a9d4fb6add57b6358d4a5f5ba886c5bafb7c4a2ee52af1b916d6bf53e57b665ea7554db5a7d20f1451d5baf7b22db56ebc9b3a99c41b9ff1c5d4eed3d5d179b45798f2e37c83695baf2ac68d888a973aad4b145393de79821db54ea8a3d926978899ff64eac1575e77add8ce8b3564fd655fa158a721a4ee217b20d5db729ee834cc3c7863ca76a5d594ec3c5664ab6a1eb4a58936978a0e0ac52d72bcbe933ef51e354ea0a9c20d367de237142b5aeb87f327de63df2eed175402ad7c3d3e5d47a2a7505ac4e4f74b9b177ec021ea6e77a1d090f0df55c58d4a5f5ba25d9b65a4fd6d1731a17fb38bdd0e5e43e56eaac7351ced0e527b24da5ee69efd8e5beb0f53a6a8ef5fa12aea65cbd8e3c8b7a3de00ad89ff6ea7524fcd7eb5dab9cf353bd8e9a73437db94f7cbd8edaab86fa02a7cc4ef53a1237d4ebbd4d815f67e77a1d8963ebf53e57e0cc595aaf23f166b5bec049b30aac9038a9526797e534acd8d33d90cafed87a1dd567addeb38b7b32e3ea75e43da9d707d739f5ea75243eaad5937595f514777e46c30875dfab7505dccd68d8a0ee49a52e2eee8841c3444cde8f6a5d81130d1a1662122756ebe0ce1ec83fe4e1889daecebe07cf8c3d900f130e24de80ffdb674fabf7d5eb59d5e59d2df17e209e569395107b65f9942e4fc936749d0f8bf2195dbe62d78e59d419f5ba39d967bdde158b3aa75e47ada15a4fd6d1735a94f3f1e9726a2e54dde6ba86255d4eb5a1eb4039f7882ea7e64dd779459bf52b5d4eb6a9d671cc1e482657ce713d6aae27e7daf08d27898c579ce35a6eae27f7b5f24d508e3fa5cba971a9ba2d28dbcce872aa0d5de7966d0cba9c6a43d795f0b976e8726a3d74dd753d3e5d4e8d43d72de66ce895ed96f53aaa2d559f94f0b28ee872eaece9bab2fcf24a979377b5521714e35c4674f980b86f17b95e47cea3564fd651fdfe5dc2e5654a97937b51a90b8af3bacce872f2bce8ba5fd7710cba9c1a87ae73cb72872ea7f68fae2bcff7e2d3e5d43895ba723d4bba9c5a4fa5ae2c8fe8726a6e745d01b3efc357ba9c985bb56e51b619d1e5541baa6ee7c0a25ca6cb57641bbace2bcba774794ab6a1eb0a587d1fcee8f201d9a65257cecda0cba9b951757b50ee814397537b40d7b9651b9f2ea7da54eacaf2255d4eed015de7957b10d1e5d41e54ea8a3dd05fe972720f2a757ed9664497536d2a7565b94c97a7ecbe842b9a57c8eac83daad5937574bf253cd0347d4fc143a5ee3a0ffacce93950758712be69bee240c177a5ae84219a7738503054a92bcf96e61d0ede805d5dfb8bea75549fd57ab2aed26fb6ae744ae380030117d5baa393b23b2fce79ccf52bc5637adc74ef49fc7a1227978cd7944fd339c16bf6fae1c48287b26e55afa3dad2f5bbb23ca5cba936741d5394ab03ba7c6229695937afd7917dd6eac93aaa5fe55896afe872aa0d5dc796e5295d4eb5a1ead4a8287f1fd0e5649b4a1d2ccbe77439d586ae4bf2f2f394ee2b21da54eb7e95e5745fbfa83674ddae2c5fd1e5541bbaee5c96d37b73a6dad075c5999fe97353d389a5f27e9ccbfe6b5a2feaf7e4bdd383297197d2298d232e3e7967689c73b9963b74794ab6a1eb82e26ed238e21250e354eacaf2255d4e8d43d531399f944e69bcc1107c52ad0e146d68d98301649b6a5d214faf699d692099e47d4a69b8d03665f98a2ea7dad075dbb23ca5cba936745d01b3290d171a09b3d5baddc4ee9763d13822aba3da56ea73de3a9dd27206e34984ae634deb4f83b15294f7e872996c53a94b8abb95d2f840fb41c1332d7f308b42a7bea6f5a4c138d94fac7358be31ac69dde4b59ed077357d43ec0d8d73cccdc4520b1a719936d4116dabf5bfcaf2155d4eb5a1ebd2b23ca5cba93674dd8fa29c8609f347656f283c12d8dbaadc9c4e6919845d5075141ee1dce2ded13208e792f78eae7b9ad8fd0bb0cdc82bebfde67a1247d0dff0d7b64bba9c6a43d5fd7007ecbae42f68b924aba3d659abdfe6bc71aad2fc4756478cdb50bff7caba51bd8e6a5bab6782b24eaed7516d15dfdb30cfe81b0f9e0f60631e9c9e9678dcd332e0cc952f896b37b75b5f8c675b3f36cf6ff33efe3e1883d05ff513307815e471009d4d3f74b8fdd0e37806d82163c4e6c5e3ce1c988729b047c97bf6ae9a025b63fdf86969b3420f58cac9b1d45f764f81be6d267e6cfeb4d3300183088d21d8121f0716bf0e2478f456fdf2fb19271c02c97c0a4405fa9cb00b62839e9b04e3b781f8d3ee95f3fa89ea030ba6c0147e4ee297ad6789a7c9a08fe756b613cf4c108ba92c19cb8f79ff006c7fa9d94aeaf5e4ad3d50868ec51fbcde6c0962780083fedee334d6938ca5c29e56f260b74463a07fed818c707eb1663f908c83c3091198bf0af22050754633f591f9538f04c366c08769f023e5b2cfeee05863dcb1720cd23eccdb0bd97e2b30189ba9b7eaef1dbbefa1b16c7def7b1bd6f736f5fd9fc47bb8b0b16d4bf71e8ef077dbebb996e37c3871029ddeece07226efa7e1deb15ff19a7ee2711bc6dc94e781c6ed3a2f3456b17f07608727afa7307eda0c4b68cc06783cb8d66cf9317fbd4c87f2b3bc3aad5c8bc5fdc883edd2b1a74b233643079dd746397af3d78d9ffd7ff3ce9e535be213cfee1ffdcd6ca9c742044c95f17a0a9425907a1cb6810cfdf1ebd1ef69473f362f13863f02c9d403494831ef50e963c1c1831b9beb60705a7a9c7201b6c2015b1188fef61ea73c4d6c053a968a70edb33d56d09967fd6c34e8c720743863698c95a33f9e2e17788ca7a53c785d7ac41c3f2e5b6acef95c04a2bf57d7e2ff0696cabc89a715d916c125fe2eea1f9d8d0afd0d807ed626b7019d2d8164c68e6dee82417fed49e2c54ffba63fd612cf3296e83c80c5477eda9f034b5c07037ee871ecc9e378e86d662ff9dc77b2241e16fa13b5063f360f4032d3b7414495e35f0977af5b3cbfd5ebb50efd86e7623cc98fc58d67998760c8fb3e3c1fa8ef8a9f689e0209ee81be5d2e7adad6b5a7073f9bdb81dc8fc926ffce661bfbfa1808f78c9bbc13ebf96912e781ed6ce11edb9a0d5eff9625f1228b190c14b0a1f4b2ff231c80fa2de17844c0dcbc1ffbb1b097c553e67bd4cbe6efa7c2bbc769d0c8e0d497d7953ec6fbc4cbeef14e968495cf9969109be94fa23fcf12568b019be2758a256ce7fda03ba8c48ea54259eca75eaf7f91c7fbebfa25628efacb0f6ace7af65dbe1ff8ef9954dc93d09763fa4ebd65dfbd12f707b729f0832c6910c422eb8d674b873b877e6fba346333f5398cdbe062ac412fd6cafd9d44ea11dd4f2f4667769ef9b170f2d3d3d2b178fe63d57fbec2593f45300d6c39c38315f8f36393096ce5200fc2661829c703a963057b60f1cc07acc037f12be7bcbe059b2ae3207a99f2682f2eae25e47b59ebf765c2de3387885c73069f9b1cee57a75556f77294257870b8330b24f3224bead6b1d1de0b274c4336d36520bd2c5d8b5f237cea73c6d297cc14c442ea59e2c1e18c9d2c29bc2c6989cf892b4f820790f6d7ae24a6c1a01f7a31dc3b36e231f80b1eafb0c31cf4b11d56897b46d9b87aafcfa07567b481843b73072c167a1bedf2beaa9f191e17ddfd2a9ec1bf3ec261783fdf57afa76a5b728f7fcecfc49822ba5721de877543df12e26d44a6de6f5f9888d76f5d49e0802dffa0d693cd8bdc9f51602be55853b1654e6305fabdfed1dba849109bfdeef6bcf09e7e051fa9a11f17f4b4efcb9b1ce62ce5e8f5b44b3056427f200c1d5b894afa568ed527f09471ed23164ffe40b8601c604f8f3a4dabaa7d3c17746d3220e8d78621fa638fce66b9cf68bdd6840fa7aec54312ffe57cc1dee1c2d0df687ffb2993368ddd0a9b3da6ba9ebd6babeb09937df79b69fd1adda560d0dfa175cdb2357c607acdf1d89f43e7946ccf62f1e27370e3ad42120f5c1c4edc017bda048f4f333b84fe65bbb47ad5baec174870edf69ada123f49640349d05d0e9ede577dc6df9890bc0fd59f67894f26ee579dba169b04c3ed12c9fdedfd03c413eaae9dc0f715b6c7ece81b1e8c5860b23bf2f44346b25713bf91ad7fefd8e1dceb69d77bd4320fea4e123fd05312303a275e6c36e22962acc8b5d5932789fcfbaa1f3bd6f9021a717d8eb7297cc5d4d6b030c4277ca6e2be794c29485d4bc377019d6f339eccd720c18b2f9dc385be5d8258dcf99cf9d01edc07236ae849e7159217d0faaf32cbeb3688c55d6021ba0211fff83441b4c23ab3c09e269d7d0e72da9ecb9cba2532ee800f9dcdb4e893e2dbee5d4f03cc9ddbe022fb960d17a29638dcfea24b70efdab31ff270d605772b60058917898c159ba977d92e83b1c28296f9d4e7d9176c8a4690f0d1673c248349f0d478eec439b4c3457fe7580af486db25a933781b6b478f3b33aedd5702c9dc4f067dec47d6c453917d017bb6f4247105ac13921b719b09f6c7102fc0d62e56afd2efb54ef1620d2e44e690b7ef1aa7840367a03d67df9f0579a03d53702109476fac25fe0832c0620e059cfcb45e9bfb1e57e506f27e163c16b3bbf2aeda10f342a3929f4a487efbbbf963ddeceb194d98fd93b21be609ba78e28f8cb738cc62215ae81d725df67b9971620a06bce1dada0ee8bc0a6cf5e25801f4d3fe0cd8f2d2e04c4417a38f9c1f99402d09a433ec9a433ed78b67893baf4bb6247e687f115e0fa430f153fe94c918fc81e075106c5e0251d8fb63f5a767998c1fc3f524664f7e8f39b4c36bbe2f03819acfcdef31ad3196ae6426800b990f7bc74ec7cc124822e3e86cf73cedfec5e0ccd4b5cccbcf79ff58f0101ff6be91b7f8397ff9ab633e2f13e6f69916e7f3a8acf2595d4f06370dbc5f2c1c83b1caf8b178cae6ddc03bfeb3f2f855d7c4607e82d42d65df0ed84cce9292cb44579ac68e8005c2c03a33f5b3acac8763139f9b1ef3efcabe729ef81060994f5c83793f97ab29799a84abfff7bea278ff67f22cb3fe5424bf30b284d755c58f882694ba48c7562fae151cde48ba3f56d78e756ee663c6617f2161decb6b9305dd4e5a97fd1cdb643c56fde5daaf3fe4b196227ee406df68e07ed1595990b9c59782583804a29a2c62e3873c5c76f6ed5afc5d3ce995f7508e8174954b9be741cba844f9c68f61a423deab514620c7d212bfd7df3976f4439640e88d557837cdacf330fc2dd9e377f0d62d7b701f8c70e2ce9394d0e17668fdac17ab78cfe54198f1abf3d3d2c57aa6e54e1ea3fd31a19f36d0d3eaefaa93571d5bdb4e6271e5a7459f51d7ba5bd6d30473a316b8c87e4d3299da09770a041c3ccc6ccd05b672ec96fb1ae639668349abcea3e4071bcffd7a0efb76b890cea1139bbb9aac41f37f886f0b0369d42d67486718143cf1e055c8db1c30cdb555188c55afca579675a34ca6b1e77cce53778c738583a532de67df8f19f4370917257f3fb735e8cdf91c4ea0e0b4f45dd32992f733fffbe7fcd4a19b8b9e7fe3db8381cef97f80871d0636a2e33c238b5ae28fa725ff644a90f124a38bd7cac61fab7bc73aef6ef2b8d99d338afb7307ef8aef9acdb130182b8993f20ca23f189ec7aa30b9c9539f8e3ec7869e74faeb0a279d3c38d64bc852085d2bd80643f659d5fbc5bd12ba75e6784e3ab09504d8aa40e8ad8505d7c45fa8c2e4d27156c3d3313fa781c7697ccbde1667553ba3377d5fbf4bd97d5b4d064ac9d3bdadfae115a6735e6c10e47c9d5fd54562586ce0ff561e27307e4f4b1dfb359b7703fff88fbe7712fad48ca7601af4c9197e7137d3fd14368ddd264bab42753d9e052f4e2a64df35ec45beef27fcc6338617d74ee0550f8e7506ccc2c63472f33bdfc51c4e38f8bd59f66e6134bc7d8c8455b6df7ce8f7d404704f5b0ab7716ae849cd7cd06274431738ce74533778a830b0b5a3c1ed137fd8ad8fcad6dfa4f3eae46b638fe31983833f807e4bdfcb261ebc87a7bdf22e77e97cc7753d6a56ae6ebd5ee0e899cee8d2a5effb57dffbe7e87b7d4cd335de4730350f9b78e72fe87f9be07b7a377c4ff5fb61903e6f9a572ef9ca71e3fb0d928b774e2c769e47ae3badca2c153ef294e990e6ddf28a27994cc15bcbc35cef34e7b14ed7e74cc667f755feb4ac9b63d9280c2671ce9b778c53bec94bafd182cbbeff397f8d1634cededea3db7db3d965f3584d77af6ee73119f45bf52a05fdcff9de42f7b3b507ca81d213ad60aeffbdea842aefe3e518b2a4ee1c5bbdc823167a46f13e6f3e05927900e3521776987102a2b5076c0b90d3a8c9a01f7a9be82f0a16c60af4620dfaab65c3fdcaf5f396b947e7d9c52bfa3d2d0cc6e66512b3d0d36bfd94f7f2ad195767fc7097de35e7c127917204e3e8363f3c7a8c7fc63fb4a796902ee67dd3e7c40db0771b7910d4e0a0f137de537cc49bc422f8de024b3cd9582615d66f2d7646e43efc66be7f3c4bfbc385a5166fbe7b7417bc8db9b7b960fd73febad511cf3fc8bfd1b7cb0587d781608eb17b880f5021fa561ebc203c769a0e5f4fd331bbf7d3683999f79f95f475d362a7529d8b8cf606d1c907da783aa7fc8dda20989cc42174ecfe4f2f7fe3f67bcc4e1ec1c3c4342f99ed178d0fc8367e0f5e2616794630f22423e9c4fbc4cf884dc6b1e00158b31fdd678ffb457b83f7da95ccd01785145867e8d82a040328d8b7d65e95a11e7e03b80977c5fe627cfc61ef19578297c926c71be45bd49cdf038b7d48c6ba35e7ff0a19ec0bef085fb683f9aaecf5c9f7836fb37f91f8f67783fbec5ed0991d3e6defd22427b5bf1374f2b48fc8470fbe0fdc6bdff2885cf4c8bb40238f7f872c71ff7b40138f55d7fbb6be03fceeb934edc11d677fe5b32f559b884ccf3f1920de4f838bc16999f19de625b3b9ff82debf436eb95b067950dfffa8bd4aa37cd376de445d55aee9d4ef7f877dca7f469ef96d7afda637b68adc52d2bf3bec510e37f5f8153b944e3945ccda7d4187df28a7d03091e9cf5c8b8f3d566516d61916f11cabfb4dea37ec81127b92f9640fe486bbd0c7759a0453b40f199e44344e3d7a6313c724a06199796e7d53e89077daec272a3ccf436f09c47e2e679cc0629bd355ff113b99cef1800439799cedf387bd4fbc181c8d9ec6233e97b0c738cc5855c7e72999692041e8f798bf6ef3f8af2f25af7bfb5bfc7bc00e677ddd1beda753ec0d14f6c0d652d79a1e721db830b9835f26ed736eca87846dd1cd6f33f89b3bb606655185c1189ddfeb5e1e999740c236def0cef5a6e85bbb97f741ac13d808a6d930904ce19e3399f44a39b35b7ee5b42458673e855ddf61fdffbcbf0516dcb8e399b0b818a79ff3bbe40ff20c1f7eebb9d75ea9fe0698cb2195f343f24569a784fd163f2f577cf26de6f336fa35b9602f54fd0026b6720c6c047f6ce471cc861aef73f64c87aafd16a2abc002473f6643628f102cc0dcb784c97d245bdf5eeeb23dcafc4a6feae22a6fd4dd3e48927800dc199a12dc83f927fc909adfa7db7467751bba512ef7def92efd88ce8c5a9b79874ea4070f0e6746b77053a92bdc68a117073b6062ffc2839fb797872f08ee018ed5b87afd81e0488f055fde3075fdd89df69c77e0e7c8b59dbb69ce8714a61df8a49966e63c911e8b7ba0b3cf48f6f67a015ad7dde31273cd61507d772c16d1e18c371930e7293cad7eeafcd4b155461e896b87334f816446f288857e4f0d0167fcc8dfd97f3d346e068f8c77619f9d810017e3fe0edb3dae105dc9788b49aa7deaec1d4b5d03bbcf004b2bf994b9a109cef8c1bdc9e6f8ad7378ec6c4e4744dbdccbd39516de09238f7effcfc1947af46290f8310bc1e0ca57beaf32baeeb6c93a1dbf407a1116dceb11e35aac07938f9e655eb01e7efe12dde92bc93816bff124d3702d164e62629e25ec9b8a3666973f6fe0c2c6dfb8932fb90492c804f6f410503401ebac62d756f6ff2d70e58ee5e30d3eef36dc6c9463c0629879689f3f242d0956b9fd17c3879e65080bf6b472386137d1d5c7e13ac3077d8753a13f46f71df10df8beff7874ffd17dbb7b5fbaefe8dae34efbe927f62787438a377a937818a4fd112a7b1b7fe29e44a2610e5e8ff27094bde70c5f93c900e745892631bb9f6c20bfb0a3e57cb4fca11bcc0fbf87e8327c187eff98fdbbe2af308f8d81f7e1fdc1b93d78af7e277c3fd33c7498c52f4165f3f033386b688ab3e5247d3de7f0707a9b9f706e3030e0f7de9ce71736e4e55128bf47acfabe512ff6404e7edec1237e61fffe64fa78b1078af0206ce39f119b3bc7d692203696b39cff702c7e0de6ffc2640526e7335333a877e741b443b201906607cf620e082617f3be3c1f26aaae27386edd9bcd3eb61703e12139e03f061b9c700031c4f81edbe8fc4bc3681a0695ff6e9c75dfd9dcd6c3d5dfcbbbfceea838360db0f44cd83be137d807fdefbeec3ff7d5f80f9fb439fe36bfb96fd3597dd24fae29ce43ab7d70b7efd323f11d1eb30bbed72fee91b80e8fd803dff9165cb3ef7dc086f6f61b5df56d1476da247cef5c98a63db8e3ec3f6fc7db850f4bfbce11e2cf9707c7522ec55bfa55df5efd359f5936cf7abc86076c3398f67e5bfddc6eda5290e77dadabc567e8b4e7fd0ebfb6ff485c8647ed7819f2dc2be36c7238c8ec769bfcd968df52927eddf263fbe6b781d9c68c416ca6d8e6e20bb6ba8d71cae8b81d396d8007100b7a30863b1c6fb21146085b18c43bc767b8104fab467c87ea465ae2c7e6baf037cef8be33eb59bc2f57fc78df1f79b7689139fc58e875f2cb5dbcb6789b17cdc7bde03dd2d967ca66808887358954dd60f159407fa3e137c67bf866c21ef73ebe72a4b2fe46c9deea7378910b9a77a7bed1e7d42db034d693cc741217fd6983c00231b0158cf77eceefe341ef7a7b2778d5dfe6cb172b2c88d11d437b617edf3b6f1b3fdecc7f27254c63db19f6e1988effda7efe6bfb7983bff8d7f673f0afed27f5fbd7f6f35fdbcfff0bb69f2334165cbb763ed6e0b7d8c7147481b243fc683c5bcaefd69763b00376e8cbab265c87eb462ea2a5bd5c5720663af1c0620ff6a0e21b58914bc9b8c10df1243efb66daa18b3ddfd6d3e7e3fad91e09889fb8ca0ba49d1a3f3458159f05b01506c704bb47c7fbb88de335ee8554c0caec937c6f096bdf6abb797d0fb8653bf5f9d86b88bf722d35094415fa31b6935d7a058f75619f1be302f498f637fa0e5d72f3fb46f427e9791f8d6ff17df688234ae628705645c74be0abf1f4d824e357f96ead38df51a103a06d3b1d42fef75361042c90381c647e8b1ef91bf51b0671ff7e8b5ee39fb3a1d71d2e84606cee802d2ff53c6ea39f36f8e77e9ffde1d65fbddc651fff5defdadffeee2b2a6120ddff26f9e85bebb7cff7337466a3dc6b33ff67ac71c4868b417f95e982e4258e87a127ff699b8b4fbf15df69f77721eeeb01c930145ebedf06e03fff5e9b7f7787cddd4b13adb965837c8f9df2478d4f7fe9e277fe395f893f28a7c06f8985faed314208bf8f711f82cfc85fff509e9419e14bef4b9ff729702afdb4fb16fc89398070beab10ebb85637e30d5cbf6d889b66c442ef164f6de0b797da1d197adce9a64f11963fab31878b3c4c353b099a87366d24d3b04df7d32a72dfdce099cbef1afa500d51bd8b97bfc64b6f88ff8ce332ded78f29c1935fcdfff187e0ad2b6c9d13bfa78dfd5860fd9bb12c886f1be2e87d2dae3619c7a8f38c5560b1adb1fc4859a3f4798deeea97f097d5865ecfc438bd030e48fc523d3fd237f13261c96f1be2818beada95cc28b0ced4fd6e822952d66a8087c1f51ef74fc09a75cf8ba9d0853f3aef57a94b0c7d2e5c7919acfd73748cc4c9ebce7855dbe9851f39b6ba756201f14b2f136e79e98c212be2dc8f35dedfb3e49277be1d5756b83316d41d31b7ea6b7a280657c3de51b233c6713773f4953c7e02c60dfe7f8fce01ed7157bca1eef91fefcd0dd1b27f53d75619ada71c03fb7519c462ea5ae22118621929f6c6e6c515ef3ae79b67ab4bf0128c82d4eb99a74984ed7efefa28e9f1cb5f1f03819ccb01bf2d7c65dccc3fa91cf34e18accd1bf3319fdce3fffaf3a9f1ebff9ed31f794e22e2b5d4c4e39e8e1f6b7a3f8b6f1ec54bf4de12fcd667f718f3e4b7e3c535b49b7b3dff917677e57a699adfad98ea05bcdea26977ccf925937f6a7aa9bdb32afd336ec525c7fbf941f37ff8fcffa8f98dd899c114baa1a7dbf77478c272df7f842f599fc978fe7fdede51fc38c6bdb7eed0cb84bdc14f0ccf68fe0df68aecaad4e7de8e657af4864f2f5d32ce1f78d657796df0f5bdccdaf359cc4d5bfe4fc5da7f9e73269ff1ef9a1860598cf9b3738a5fe72e793d658ff3af8f95a377533ec77e7a788ffd58d835f42796f11ee0adb5994fbe74467fa7adb9b03238eb9e139bd94334c8fabbdbefc38d6b50bc4d9f2d68f5ad3ee6167f0aec9adee3db64e4ecbbea5e613d716daf3f99e79dd427c36a9ff7e46429de7ab5322e83a2034b4c1d2e5ce19ccd9fcac942dcf1b179c27ea2a60a1d5b59bb8357411e84f06dfe2a7c34c4d0afe8806b6b9a6caafd8570b2d1423f0e6030e01bf22661bb757a4e92f9042c950d24335feb72f9317fdd2259b5860f06d1f2a3926b26eb03c6681d93780f17f3d7f04367960a93e99694342af50cb5d8e315df4740ec7bf12e99ef7fdfdb445b1aef31cfd51c2b9d796fb2dc45cf3e67867eac6e27837ed177e2c581d010f3bbb6dfb5bdc3bfdbf1be0b1b016da384806311acfc4768fc5d7cedf05cc113d4b857dadda5ffa9f749e3e38e9c158dbf717f87708d2b093b749e1fe66935b3b408e15b3fed1fc9f87ef2088eec81f2a0dcd00ffd1886132bb359fc7dfd6bd0e7d4d4b51408248547e338b17871ade9deb1b4c8e39ece9fe83bbbd73a5bc2f2cf79ffe821dec8e237e06a7fc5fad8f7a0b8d7e17db1dd899fc7f1136043d31f967dc28564ae035b834631f65db1cc895f992fdf8c3eec3d75071f98dff15ebddf8481077f6c16f2f36dfef3ebbcdb3ff786f6cff0197fc81bcf9772f67f33bfa7854e7c86b7f6d394f03df8fe77f6ecbb1afdfab86c29dee62b6f18243f56a3db0fbd755cf7539720070c00f19bceefca7f97f3019ead6e7ce69c04b12901cb8c7e621fc21bfcc827727d7c8596dfa93b7ce86de3c1dc7d244da7e3e646671cab438b4d08ae71180a9bc247fafdb2cea071df06fd27ffc23e4f754520e2f73e2b5cee9f37f07f2817e3341df79f94f4b4543801c168ec49424fb96c37380f6e1a089fd5ab7e484bee232ae3b05d3e06c2567d848722fbcaf1c927f5d7591f636d0b2cf1b60eb2bb8ff42bedf3f366c0905710cc0452271f7cef9ca20fd80f17d6f9e858b3a5398627a07fb9ef9749ef6b6bfd18088c2b99e1436f8e0d7be5a07b3abfcdb7b4ff1a70dda33c5b655dcea3b8836e6f3896f2188e28cee4d177983b748095fe1fca6bda9687e5de39b7e97b7f471e9705b3870b4b39221caed9007a1bad16fff84ff3e1d56221f50c6c8390de6197559139abfe0e35dd53eb9a6a3c5235f6f4637c366de376db76a861ee940c736b1f2879febbfc92312cdeafbf2bfc986ffad7ddc147d276a0ddfa3ac38fc583cf89590c0798ebc52425f4579ff7c70bc6a1a20db74bc4b7bb16bfc97c07f33a1bfb5796f2b03c64966f9291c843e6afaa4f672e43338b111cc943b6aeab236c86c931801d42a767d6f486efab3e92cf333ba191c9018b674a5de2e7f473246f5bf117a89dfdc18f0516f551fe7f6c5edc41b89c70d76f111d752cfee2e479258898c9781f7e5a64dc01e6f96a8bdd150384d6e5a133b9977ff7daf9f77bed783ffff6758fceee0e3a45e9ea07f4fbd555b690eff7c31855de43bea8ab33c74ae86dd4b0f0499e1b5a257eca4d9ea5a69ffbbe3eefd3c93dc26be5f19fca181f185f8c99a5c7f14317c77524ea2af8e2b1987cfda317ede1c2344f65de88b8aabf0f1f8b55dba58fbbb39fbb62c30f4ff41bd36d5fd4cefb50f24e0d32f784bd796fbf33d6c9bdefa67f527cc0afbf97927c5aeddda6754d355ea1dad743b6fb9fd55f12ed2ab8f4c63e907c58ff9b7c554b1a5fa1552f3f1a78d6477c5b6fbf87b6c737c8684a4af07691c006e33e1b88dfc353793d93417b3937663f64bcbff0002e047dbef556daf08e48f4b9fcb08c43208929e04ca688a3d6c267d4de34721eee873caaca4cb346beceb51cf4fdc1e54c5e1e8c848ff9eb46c330216fdee6258fd138e78eb74fc4bf33c4ff4f81ad6edfa44ade807ccd045f750c6c0dc1348efdffd6c25376c498c0f1f016bde29ce101f498e5c7fc263ff85cf5a3bb1117a2f19de40b6fa2f7d88adfa11fa5652d8a9f33afb6410fe40ca8be853e42ef4f9e24ae81151e3d4983fe9af5e5e21e0efa8a2656f2b2dda4f562ea5aa37d1eab10f18a1f19acccfe687eea7aaf35419684c38c0b432f0ee035775605578c1f8b837de73be7237b13b9b68a75b660c8d272caddfddce71f5f7bdfbccfbef496cddcddef9abf2b3fd8bffaaa7ff555ff03faaa811f8b07870bbf6a6796af57491d8b5fbb23387ac7713f95c48b7d92d7a9d884e4b65ef3d2aeabaeff89af7dfecfe8acb87ccd836b2e2667a3845eac6e719e2e328610a953eac8db8a63ac8df79fb1393b3c1227a6d1d6ec0bf6cfb76db5ef8af772b78dd9bd7e1834ae6d8bd9d7fcf3a573e870e6d6e3ce11b065c407e5f770f92dbaaa590e2b85edd82373736c2571e66c046c75edc770052c6db5c07ba4843e07d7134b8c80241ca6e683bc5f1ea3f1aa37badeebbbedc71ee23585c39c3379d37e2df9b81a4e78904f0312bce0b7436b26d0f2c9ddfddc95ebeba342936ec63d613aef41692fd6143be4f67dfd72bcb2aa9d17928b132f36d33bf425e5b70d365358df7d83b6cf719ca6baadd6237cc59fe86ff0dc6c234ef5d1e47f4ff21e573d4a430c8b05d36417a5dddf7f747defbf31fff637b34d2de671c5b7fe3a475a3fcf937b523ffff1be5baff4c0b87a2e1b16729a138b4db0fadccd733d706e518e37c5c6f3fb83630a5cf7ec33f1ebfc161ee7517b3812a774dabe49cbcb07ccfd0fe704cfbe3e1ddde1f44fb29f7fc8afb8d4314ae0e8affa2190b414d8ea05d8889fbfda8b4d067d86ba971b549fdf95f174e9587c54f2fb927999dc6be3d2fbfd36d0f9bedce55bfb887ff407291313f77d723bc6c1bdb6430fc594b8cfeee0e5ffc47e37e1d93f60df9be4e7dbbe01dfe4674dcc63eada00625bd841e779bf9439276e9c93897970c2867bd547bcc10e588847d48a5c9ee89b2db044ceb5cebc2cc183dfeb277e6c22dcc0cbc373786b1c77ac40b0c6f8711b8cb5937fd91e273d6d0bec02f7f2473fce626d0652088b3c85935848c1e57474f4a74327dc5e630236d2032a9657dd3ef6f7f8498cf7351d441937f70f8dc177e59de9b7d85b3c7c554e6eeeaf294f5c5d57f9bbfc26fe37fd1ef830889ae9d967f933620f6ee9f91ef5c3acf6b705739e716c6503ecd9217fafa1efaa5e9bd3a7de592bfc650256681dfc2f60474b5967047910883836c0ca4f4addd8bad6eeb65e309fd3cce2f9b7c10d9fd96e1e987e3f1d9c969fb1537b94afc6f77cde4fbc388bcdeed853accb0312e46efb9954ec3b6ed08c00dbd8b3bebcd1e062acf9f2ea7bfc0f1bf47225fc22da53c6a39b3f1d26f0b422745a977bc7a8bee7ca129b4e6c758f7301ad3adfedba798a3bf55ded7c500bdf303c6538bc6e8f7e833696b61cd0db987b590c74dd5637d83f828a05d7d7f3d8cfc4b9e338922ab0b5d4b5d4cb848039dd322f3e276ec0fc7c9dcf88c73e354e2ca0fb140663aaafc69883d738e3443f59dcc9c671cdd84c03c97ca2ca24789a5b7cec917d8cd8d08b47d45a1c8b0f754b3ce93d00fd58dc7983eaf7a2ead8fd8ffceed4daceacf3ceeb05108888ffd22a6bc7ed679e644680abb79d5b7c12b4b79b031b1cddd6760a0c62e157433bc58b21a3217a40d75d0083eb89587c5abf9031c9bd9b71611890fb80e3999b3ab03506d872e5fcf8d893e09afa7e54e8416ab11acaf72e5a0f12e857d8a1e08f59d87df8beea1f028b5d015b26eb709e99f715a673f518c21b8df72503e7d9768c30f4620dc7b0c7b40ee7a2d862bba3fc7d89f3381891b83ccb7b53b453705ead458f8c2b705d0b9963c78fcd8d6bab686d3292c33dc94cdf24f60258341f13db8aa33be7c4663a19f4b7c537ef2b9cf3399c231e5a3a437f45fb27ba45f946f5bce2ae1a7064239a51ce53aeefc3f5ae13b930fbacb7c1393b2fe8be5dc70cf73e171868cfb1ed95c4b39ea5d4e6022473076c0d92fb6371c41a45e6de79ac3d8e3f209ec9e4cc95c1096b973399b7713f0ca4e5d5f62b3d2d3d8efff025f330c176aeeaceeba930fbdb4cfd5848e9189645de4e618ddfd138780092d09bc4e7a3c3e5f9be88f564ef6f66eaa2bd1c043dffb2ddd46361e037c79dc765b4399084b5c79d961f199f51c8479ba6589a81ad209e65a9f482cbb56f12373f5dbf1bec0479e01f27a9bf7c4bfb783c57122ec1e0f5979ced4b2db64536ff00c3a8179b3d590ca003d5a3c3ed613008593f8e923a9f125c26b170f07a7de8ad5eb1ed8c8efe26f9a3fc1b873b1f7d0ee7122af79e5c43d09b1e100ef737cad1cffbd26c25f57a726daef9b7fb328642c527a2895f42f0febeeadb0653e8c0f05cde0c46789f6cfaa1bf51e19b641cb2dc54516dffe9bb8c70c0f5def9ec7eef73fe01f32d26536b8bedf70662f97dd3f9167c5f0b7f59e33b5ceabef90df32ef9ca0e9a5df8356af8be527b37c2792511ae3b5134b16227ff317f3d4f2fd31ef98d168bacc3990c3a97e98aa40138fe28c4b63d8357411ed274dc9544dce65d5ff2931ade7f3a4ed2fec0b1d5c461cb79b7c83ed95ba62189bc2709211850f71ae10b06c939762ff335a66c191abeabd5933869f5729445da0705ddb1cef955be6f9927f65f69991badbb5d6fabe7d23c4f9c3367b6f48bf1c4e6f84498768b579f570a6f23395ea77c95aef7527aa16c6daf78afbc73b57a523ebeb54ff43b411937f24a6328bc83e3445f0249dcfb04bd24e7eb58ea1ae110433a432005b06a2b7c9d3fce090cbd8dcafa6cce6b19ad6793e0b7ddf1f4873c12533f16f9c2e6f3839cdf55d74e7c97970d9fc8fe580fd39cfd00d1229c43b1f85e340fb88c51761ea7fea2fbc739a4678e0d771e2746ad3c4edd263b7b9baec262c64335ad370516e27bcd83c39991de62775d5bf770bb2cbe6d88c75583c9e25bfa9d2bef2bbb271fa55df2908203c4c3dd9c0be2e31e99c7dca0ef85138b17a01b4f77ddd7a815764adb6a9ce7b206b7dd73332d1ec3c10cc3cb8e9a5f265337df5b3f3663602bd08b550846598ef9167ef9e25ac101c7908e4da383af3e0596b2732d7502eca879efc76a02383e44f4ae3eafee751a1cdce812e6f32203f165dc1936c387127a92787010de69c211921881b1027d9c97f411bca42680c1771282917ac4ba154b2b6d9d2b70b143720cb0d1bd65437f782ece7d579cedc777cc6924ee5c4bbc74ef03cecdab3af6eb4bb1df93725f289c137a120c7da67d2ef919627a5ec6b6bab4c0570feb695a603a974d6c75ec61f9990f111c9ab91fdbfbaabff23861072cf150f9fec38fe1c6b510fe578e1e77868e45ad21f1190d7a92b941fd0074c763e1e84966e8d178b2f826f138de702d16629c7a699e27c8e2781cd01adbd7cdd7f64823e4c5a6fe308c182c0c24b12e931674c562d9208be933ea945b1bfd6cb01f0d04a3026e4b3b7f728c95639df1fea335e99678fa28e5a77371cfffa269687d0f88fee232a7ef1596fe5f0bee23bed5a063693837f547cb39e0d8eb16c673ffaf0d0735d23e781bbfcc8a3b4bcb83b93d6a0b2fc1093baf273f7867d5a317038427e9fb3ad69e6c0e466d34c297e021cb37ddff28ffbe873ea03db355c6b1d8138d1f90dc2d2460d87c7fbd5e3ff1e28ccfd4cbbfebeb9ba42fcbd958bb4c2cb8f1622105661b0dcdfb5835ef6f338d12582f9ed5f078f3fe02d68b739e510a60509173dec6af845e0252f42de020e370cbe5dbf8b549f7be766c6c7343f53789b0acf4a353a65bf57d197f27fa7255572ea921928d4b3940c43ccba1c2d3dfee1fd2fc723df65fcbfc2121970d93461d72e96b259e564686cfb1dfebdd6344200c2c15ded37f213fdedf37966beed87ff49dd6b0ff653ece3bf6d83cb81c7f0c389eeaa7fdedb8ff5cc626c032258bf83b0808db406c736a5f7d7ab3bcaaf5f8c94d7ac1c900eb340abd59cdceccb3e0c54905db6888c947f22933ec53a596f20229cf03ce642ab049caed05df439695fd64ef01940ee0ca3b896a82df5b8c821651bafa661939d70bb4acb31cb7fe96dcfc865fbe6b37d8822e9873e2c5fb9a5fd0c456109f0efd151b791c53b3815db0797dfe3edc9a3377c0163e9895b76a827e67f9b8c7c0e2a1cfc14ba9e336e0481ea2f9cbe7a93efaf6df75ffdae752b1c954b4c1ab80d678ff3862dbba33fdd428386a348d78f7381eebfba6d45bc1f918d06f34104890f5a8b78b3001dc727707af748dcd4ad1c8567a7cf1b873022418bb969ad9cd4001e760437caf67bfb6c81ef0e2f74ccc6bd9bddbba0a9f33cf818565ec9f657d33df93f83d9505b6f2d31f9b2b4f826b9bdbc3450b5d756df51258666af7d42da29d1d7c0721fbb5c8d3e37ee8e3f804ea6061e6727745e629751765fba7bf2ab242ea71fc6666f74f7e8c796324b3f4fd8d122ef4b21faa4dc099a1cb8827ac538fcd14f1a2335b491d3b2ae51c4ac61aab5b277b739bbad61e3e3296cf093bd79ab5c91cabdc5e4cd148bdce75ad948c0510dd195dfd24ee9837eb6c105e541960698307c6bae674ed98bbc709bf3aea8f0ef6f7d7922036770b0362bb8c8ebdb80496826d595c1b406f0c156f03905c19b5c974a0a78440323f4004120ff56d6b7c0b8c6ffc588c8021c45a0c0f8e754e8231c4b2db2d59c0eee570d9a8332c759e3f32df37ca2e39f4e25d4b3b15fab689f527d49b57e5be1b927809d07d88f7d05fb7c8a3e80ef534d5b1955fc056c64e1bfea0bfbb74eaa8eb38ae7cb33562f382f39c8eefd34164f575bb4d1276095ba88237f8eb1ef9a4a11dfd7e89ce6544e8fc281925d725967ac01979fe7b606b61f1665bcc59b74cc6b1329e9c94bd4839a90d9e80c547e87eea9678706a3221b5ce62cfaffac9aacc6dab50d5973ff09df9877487f53d19517b4fc5d3683903c287f1261e7538e1e0f7cc3db095cc66a34d47cf090710c3d4b3cc6856b621e4ecf4f53849fbcc62d04fc0a07f04d97b70ecdaca1e5833721c027e83d4b134a87340722d1ee12466419ce1637846a9c9a1d53d25e65dd1c956f8a716f9bbc4b31dba85f63195cbc33af3ecbd83f52c9a9636ace7af3aae2974a47de8c51ae2efb1bd4945df107af1a8054f52f36b82f3ec8d78ddf606d571779be659d05ffa4eb6ea427c494cb1cfce2d5a2d5d753bf7dc8707685f82e61ed82af6830a2491b9a13f2ff04fc12f0c5d09ee107eafe85faebc4bcbdab15fb154f21d90dc83c2277586bf99b5c345c9efa85bd73a47153d75b37ff9ad77a8ee719a756c77dd83fb78b3a67b78dd0f84bfce89d3d32e0fae755dda45516f84f5757dd4759ad533b7bc9e06fdcd947e9b28f175cb5bdd181c03a9859f6e1fb3b0c79c035b65bd314dc3bd427e4574b8f8db5420687b0319157fab457f1d675efa37cd81e5d47987169925d725fd2cdec83a69792603ef4a7f0c514d16b1b1fc98bfb2d32125cb1e028b591ab609fd0d1433bb968a2cdbd32444fb00b685a06c0a078ea5cd812db208976179f70ebd75439c34d2ce04d1493c6f59c2be9e846c5cfa0ae47905ce6120999740144a1b1b8a0e50e7f6b4fc98f73dbb668f8dc743326bea5ae68558db2ba5f79af7f73ee7ffb89e1db6cb3904d67947e29e6bcc0b71e54946f6eeb0de2ecb371816c188b9c3762588ae48a7e78e319945fee68bed9d36e6ce23ef7d753fc6da13c11765b2c1fcce7146221348e2da95b05fcd257f8ba0f6acf90ce8b7e9bbe659e234ea1da9c06d6ac903df37f7829f1c6298b758843f08de8fe011d2bbfaabf1cc86641e80040f994de9e8be73cf71d6fbaa5fc65478a45d469fb414584f3faab4c88fcdc37dfb5cc7c1f87e34e1fc47fa13097c9bf765c60253d88e92fd54ef35926d2b6f6fd5fdc77771610ae5b7a41c8efa07b1b8f339a3eb0c8b3ea0bf919bef01a1139fa42fa56f42479fb96d3d69ab99e9114b1d6467bbf0a79fcbb0efab3aedb90736483bfc4fec49f33b63cb9c034be97897bcbe751131647ee0f84a843eb96e578aef22e36fcc35c2fb6fe3caf7abfe9c8ef5d790b7a4f019a1c746fb47c7096cf21db182c447fc4554da476e4d56550b3be04999a7c2d815e320fc4dc41d2875ae4db1e9499d1291af0dcd2df47bf0e0a4afdb1b39eeaabe2288d7da0663a592bfeeb590cbf8fadb1f61078af8118cf3c49e634106d1d340ca62273a763f9994be39d7f83e652e2d8bf6ab902b76aa3760390c383109b0bfcef4e06ed4a3b75ab6f5d71cbb4e2ce86498e6fdd6db8f99a5c389d93b28c247ab0678691c03f12b0a9fdbed6e81ada46f7578111a6c5449dc58c8c3a4ee0dfadcd53718dbfbb6e50a1cd3fb6df7baf8020a4688d8493edaebd8b1ce17702327e04c2a7cb2491b6c3a0673a96343f31ee7f3196e97d5fa1b305cc377a8bf125e6eec03c26dcdf88c846b229656a5fdadfeb16d7aea37db3eb79ec9d586bbdd26ba112fb5c4d52af1cc51b9c6c2cae26975bdebde636fddbd8e32cec2f7aca3947fbe7d1d392cdd15fb551dbee2b8af6db8abc107f3b5b43d1877fb8a967075957ddbecf7731c43c266fef7f0eb77b3b8176f6322ded385d0cdaf323cd38223c8ffd7e9783ec6d52f09d38ccbc2e2d7f220a4744c77d22f0df35f0696577f2f0da3ef5202f258bf4dfd657703f5c75f725fbfcca765383ba94d39d206b7d697fbe388143d39e8b1c068991d500bcda36d495ae862b30f6796f3a14916fd3ccd35ca7eb69ead6e9a68a12ca921da777910229ebac1e6e88e7dca68740d0648bfa086bb5af25205ee42f7c0b155de8ba7cb37fabdfbc6dda4e9bf2e092196ebd210f1a4b061dd8cbf69e5294a3e289b4f10baf66c096213f1235b672084be141d4bbbc3f4255a7030eae0abb04f378e11b0c1764e2c82fb0f9d5922fcd68aafefe06f68dd0e4fe8735af074c12f17f1ba1b7179b30f6fe67f84e882dca413fb229c96f4668bf7b50996e6fdb5636b08ff667cdd0d3a57e2596a8f3218aff3126c271e079cc9d4fd8eaebc3fa5db4b5bf9c274d136e7eceea37d23f7310678bd88368b27772ed0ef70ab2bdc35f7897dfdf05960fbe7318667e163feca4c87b3d67b7ec71e52777f12f1c760048e81c5476df8b99b47a8e38aea5d0cc6cb56f86a5e3b40f3c46db13fe4f0f55996a2e5c7a0cf2c067ce11f73f024f3007adaf63ded276fe9ae7b4fb233cada8e32dba760bc3cb8597e858bc5c1401ebed4ca261b0582d84c81c5afaf36fa9aa20df8e2dd75f9be6ab6afeac20bfe0676dc719ace368c3fbf016bb9ee6d86696fb1e656586ba0c52d6336c262177daec202e0cc43e96350f88a96b6e46df8a6d6d706587cf14e5fc65fbffa9e76d9087e6d8c495cfa8460dfc6aff555e24d7496be1c9d3f6686266a83be6444822a8beafbccecebf39160d0baac8e9f1440af8cc1cfe3f7aeccce4fd15d2b987a9cfa0b589a8e78464f328bb3c57a964f8e71cde790c97d4f9338f357f3d97d62cff936ffaefbc6aaf757c036da33725f6ff6773b46468e731be66b34d0ffe9faf5f46677e01ce257c32b71b17f040fdd71ef3af1e59d6bfc6965bc62c6efddc63f93f465e95ac101c78a6ac765cdfc700b1f52e143e9b874ab90590ce03fc7e39a55bd6800838a1df1ccd618c752b7d8d67d3cfd73f888b91006632d74b810dbd5fbdcff7dbec269388bbb798cca5a2ab6c87d6a2fd390dedbf4cf8651d206eb0f82cfab0dddff00cfeb55cee09be09278830daffb39ffc3e07144d1b6c7f4555fd63b1563ff4fc8575dba89d337ea26287b92df7667ae36b8858dc30332233ecf82373c806c1d5f39c75a5fb77532cd71645bd65cd1a114705b8e5b1bef3fa743a9bd9b6e80adb5d881fcc3f7fbb7d395fff8bdfc827eef1ebb9dabace1a7fcdf3e271cde6a3c77236d68e8ef7b68d0241512c0f138e66ad75b6f935eafd15ef9137ae8afea93c93c87aea509138eb06ffa2dbcf87f135cd2f6e0ed6796ed2d9e5f9c5c3cee69fbf608eea46ccac2356177f6795c3a7839b6c9c0b7f9f28a0d3b05978d76eabf0f3e2df1e0cc85d286ee83b98eff31d79ec91c864e0b3ef8ca3bdde7ded4baee47937ffd97ef47b697b45de18f9a2fc25760d5a4fb7a1b57fe5fede36e5b1a6cc7f7693c5ae684fa077067615b59e0cedf017f7fce3bf15760fa11b9430981a860bf42bff7dbdebb739f8fe5d51676f0251ea3b0c9dd1630f1f9fbf075dbb2ae7b42d801ff133a9662df73db0ae6e894f3e1972d78e82befd85fa1fda56df4d5e69af421fa0e7821fb0bd7d7bfbfc293b6ebbe6feb3f1aecbbd37f425622f24466b212e113a4fe697072972dfce779c4a63309491fa92ff188b244c62c7a48aeaef958fd09f824c8fd06fe1c5e90a437e55e5de94ee1fb907e0b3e29fa2fe950e147f14ff0674d768808fe017e03bd69bbbef739bfd18f81e429fc8c97f889e0bcd1e7e4ba8614d82a3a8bd0934ecb201653d7c231e52e2de3338bdbb6d3cc82f0396a1fbfb8d3da53c33b1ced0f457e4fbdb576cee3789faf53631bd2cfe9f67edfe1bb447eef10fc79e7dec477fa2435b7a9d0ab9a4fd69df6f635bb300ca7ed3e77ddb6f8994d19bed71118d76d14f273207d8bee8677afb43544fd83d01bd371c51fb451aebc67e39cd2a5afe08d7b9add93b1f6d49037e3befd366fbd55bf6e2b6fa6b90f56f7fe07e3b0f21e8acf82f64bfca639d36f97af5bafe6377973ae95bb4be8443f3b4783c01f57fdfc5df3a16c93a878c55f98470557beddd4fbde37c7cabb3111f3a4d3a7aaeb3e7c34e3c6d72d1157e342cc99fcaedb66386ef32325758d9f9ef78cf235c53919c25bfea7376c9ceb3aa40a0d787e940728f400a4eee6adf0051d5e79e81b786745f8c1167f7f792eb47c8ccebbdb6ff6be3956e54642b6fcf49d6aa17d83b0123fa1e9bb1b74ab4d8621feffe579937cef20bc833fbe6fcea4df70b5ecf37326fd225eb7794e8dabefe67d7c2cfaf73fca03646dd49e9bcb8268de934d25ee43934f6c76ff5b62a6d274efbd23ff59beb6d2ef17d3126a0e339c63bd622b728d65d92eafe3dce6eea559c7e070e205ccabb138f92c76f437ccb71a33f49be72939b6b9066d715d6fc56ca5717739ef1cfe0efe35e746e8b7e41569da1b59c2f1427f3deac3d0e98b96c1f1b4f0cbcfe840e9e345c6d7cb695417fc97ed3e3307b1ccbf93e9d7eee291aab227faf77beeecbd3eac77ca3548fe185df3d6537e7983b0e2fb8563c8b4f004588e3ef97196db559634d697ce89c3890cb0a7cbb7b1baf57ae60e0cfa2b30efc78ead32f238480269b9f4387eb798f72fae9d4079383ad5f411d9fb42ce2335c46149f9d8b5f8686ef111b097dbb77191cb727670117cebf95d8d6184f1b1ce2c27faa8554f4afab57a08c7db2a6373449ef0f80cbd3860dcc1eb5f1ff35adc9bbbde3b1afbdda0f304cc5bab4f6ba7fdf10ec1acdfd37e96f18470be4bec4b8bcef1611fa319e23bed3e1b486644ebf7b2dc513e73859bb726fd58a6df8a513d82518bade78102b190ca03c22fe6be7ddfcbc351e63fb36696d3e16ee9ce997dab2ef3eac788705d3b1cb1fba4ae6f29e6694230c87d829bf381e2dfc7584b65690f173afb5cc0dccf7a1ec9eaef2528e283ddf21d189ea7aec5ff92c7daf1c3de77f97a639c8edf1ec7cc7d7d67f4e13aef5bbe05f9dc273826f4ee9e9ceb0cb8232ff9dd7b31de6f80ad55686448d33251c0fe226f76571ed07c1d3d2dba919f9c69c8978d7fddef6ed9af8ce78e634dcd5ae491e67856403263c736774df99ff37bbd9a0c9432def6db0ad3f0791653fb669eedb9d7f36fe5a39e7bbda02197b57af406d758de590eedd9de8985638075fce209e71b6f8a25ce15b99faf71df81ad9071ccf71ea73c4dec6c3eff702eec6fca71dd308ffc4def1a83278fb7598f515be1c9664b60870c92e1af67cd13b95f672f4696ef7897c5ee2df89547f32a973ca0807d0c735e38db23beb62f753a53e40a78dd36d3b5eb7a941568bc5f1f798cfa490452c70ab0ceaef3ae8aca3148f37d63f8d0b30c9c9bd9b3e4fd943dadeec1c9334e68cba15fc39957de99afe5d2fba96f978bd45f2a3d6679275e2be58c498cf3c8436fa3ddccb3fc3110861e77eac29d2f1356390697e6b57f0c840286243f163759ee8b47732077e71628f20528973d95c781f0a1db75fa3a8ec9bcfde2c91f087bd756d713424e41f79ae87be0e03cc0b77094120229c8fc05091ca54bf0128c82d4eb99a75b79ffc96ff37edaf14abe7f847d78972f638183f01b3be56f88f61e8f53c3155dfd9138e23338a41177d462e7482f577eabcc035fc4f06bfa1e460df82501956f4b3a3a08eb703e3c47aeedd039c7edbd2fc7ec0ae71bdf304b9733f90f7b5f99178c26b112fa9cc1be237ea90daf8cce89dfd3c67e2cb0fe90efbe8fe4b7035e092473ff01f358eb5d303e3c51b034892003acf639c9055f68ab8cd6538e81fd7a98db1af4f4eef9e1df88c8837687cfe787a425c1fa8e7e737c0324c87daccfc51de41c5b491c84bbcdd3caef996b34aecf9e561f9bfd01d8fe726ef18c37e0dff338d292d753f68e3ddbbecdf9b8f8db4bf93227d79bcd2ce78660ccf4d371168b11e08cbf3e06028281eefd2af021777b3d1f03e1e1bd6d3cfb88b48f7d7d71e6fdad1f9b719d8fa7fd01ae70c92e7feafcb36bcd0e456ec59ffae9e8e84f9807afc35a377d6b8231327fdb87345aba63058235fbec0c842b9d5f09656ca749aa3d7be935d6d34fab8ff59d54d967e6d80ccf4635c76bc71c1b7df6261b5a47896d83c7589f9180015f8b2bff8d732fe3f7e77a8a1ff998748cfa31f3e05834ae68faaef93e44cf040d3ffc9c53b990c95ce2e80c8fde18c05996cf6d5bcbeb9646044db8ea94f3ef6ab421d76d0eb25813a1e8c5ea114838963d3a3b4567b57e132e22f361e13b6f629982e45733bdf428bf2f23f3e07042042c44efce473f62136f33fbd1a0cf2e6cbc106d57e7069fc526a07419846eb5a37dbe667a6fcdf3818e4d2c1cfcde0ceb8ad11dd62cc4336a65de4cbcb6f927f206d1f9f470fccb1b7b91c76848c439c35b5ebc5f7917f56fcf1ab11e54c459a4bccd18ed688d80058cfd2f6d6870e65a7d9af714ce88597b3102637b203f267752b9a4aef87032a0f8956c8ef1355601992fcab1fba709c7263e373d5e736065b070954b337eee16cf96d10cb3ca3392f7f7965c4c7cdbaff6f38c70a9c79d396064675b5b47cf645ceb7cc1be3592907e916faced5bf17d439e9006b8ace792cdefe43537e608eb048f3896379689710ecd92cf9f4444fdf09ccffb846d45f03bd8d5d6eb002433cdf586359993c8118b60f423cbb3333b20decd4fc3669e7270e50bfc343a7896787a1b84bf801d153aebf29e2ef2fd7e8ff77031c7365fbbc0327e5478cfd25ff23a1fd54373b06d567833a979977dbf890d3818f14dab1679149e563fe77d344fa18c8d9af1dc079ad6b7f21c2fb768c02dba6fe671de89b34f6b67ff7f862fed3f13f055c00992b153040b6efeb6f396cb12b9bc90fcd49f5e721eb3b0113c0443d697372aeb702af47baa2faff9e72cfe0fbabfa7839ec7cdd76221f52c91791b440750fc2d998760acf0930d08bdb18979d905e25d386117c466769757c5bc108d40ff87c2c740c8f869c49760fef52979b3d93b74c7a723e6c76fe941bf8997a4f29e0fcfa12c8529b01c61c1d13135493fc39aec57c6a40a319fd67d3ffe795eb8157f147df5100fffb4acaea31e3f4945e71c7eac1fbb732d3227fd2edf257bf4e86f5bcea4ce27e77cff5ddffe5e9eba41ae2fe91ecee38ec67f684f69f9afe9bb4639f24ddf5ff5fb122fc8abd3aae44f065b6c2f6064baa832cf69ae9bda50bccc78dfcf728f1774ee44e880b4fbf27e127c5781c36ef035198e31ab7c157966b7746ac4b755fe0cd36252ae506aeb086c2df1c6d363c65367f9403dfcf6c033c05662c7c23628f89caf3246ff6acb58c9fffe195e68669d13c756ffc37ab32bed9387cc52e7b29c8113c4abd8d3ed6d1e659a4c6236f407cb2da25d850d52293f8df7192d592788e7d8c9e38cfebc6fda70d2753e16b7870b93157ecee19fa993c3f9e2e00ee8ecf3a2171cfd581b6476365b045799cd4dcaf6bc9e12d90345e8e0a9baf0699ec79386af6fd313ddc1efccae67dd208fd6e9db1d74fffa1bef093e9adf3bf6ebb6e45506fd2483a7d76dced3667c2b0785efd6f361bbec4d74c879f3e4e7bc2e4f95f38af3ffdbcc4ba1cb47b413af7b15253fcd3b78c87bf486dfc70313f9b53af90b32ee65c7fdc874835dfcd367f8898ef9e73489c84bd5c1e351b189db791f7c9f66f7f34a95ef99970937faebfbee619603fe3bf9403fcb13dfafea4beffefe9b795c8dc3397e0fd88e6c449ce5a07d4e806873dd9b97e5d7cf3fc0b98abd181e0073e58373fd6c9bccbff17a00fa319f787150dda7e53bce4faf424f72f6c5bc81a5619af3dd7022e7fce5fbedf3fc9cae17fffacf77bc47b7ed15f66b0446e60fa1acc07df646f53dca722ccefba3dc3fe3d67af1778ff2dd192dea966b69dd51f3ef161c633a6a10fe270327be87a676dd27dce7bcaf9239766fc33de6b1ae6dec4fc187d0bd9ffb7be2d3b6cc13ee3ddb6470dea6afc390e2592c1b4859be29ede61e55c71685cfdcdf1b7cc03d676a66fe344683ac59deb3c467a8332dda1c0249d0f3d823dbb74f9d6f9bae454900070f5d77d1b5d50f3f861bd77afa6df3d0247307ac00ddf9e8c65c46c03a43c0890cb066df309f2fe1c5a8988b6b09079cebda3a1f1d6ef715f81e917dcaa2967896b9cbf4f4b3a569f18c6b9d100c617e58c3f8b455afdd3abfb7d5eb798ae35cf18c87ed09c41d308b77b965f23b70eeff591d53e7fdca7d1edb69fc9ff3968b70dce7754d443e80d352cb751cc0d28a37a6a2fe5fbd53abdec97c0ab01fa41915ef685fd141759cc1bffaa83f5d1ff5151bb10e38fa57d7f4afaee9015ee4bf5ed754c8f5dd7673548ec0365eaa66ab76fbcdeef37aa52fc9a7b1b8f3242574b8fd351fd95764d3b2bfddf23b755a4df3bcb5b78d6d3ecdb3fd4e9917849e745e3996fa4b93cc1048e7c48b8dafc80592639d774e2caeddb43f02961879123c0024fb723c0c52ac53816f0fcee79f9003be02dbc1f7c858866bb1d0cb69a32c9aa8df1de2cd331b0c2c73b7f227c1bf72d4bf72d40d390adbe2c18a3c75e5f92beff2e7a25cccede22018e536fea3da3785edc2ae18b3d3eeeedaaedb4f64f3b07fcc73a72f0269ef57f7bd595fe50bed3261efeca72a9335caa757f9b02a472ec871729bd96699a82ea33a9c80d67dc8623e099db69333e2dbda1c18faed97fcb66eab4aeee1f4d861537008c6ea537dac7639e091713be4c81a4c107e8d259ccaa3e0a8d5e1eb82fd1e6ddc3fed0b5995e1c7fb4e9befc9a06a6b7ebf6c7eb57b06ac1767f8502ee2918bda91dca7324e39e14b857dc70bdbd45e90e4f154afb4e21a0fa56e6f2e9e56e4dd35387800dc19167d63db4ab4175d36edc3f3ddfe5a052ff061ef8fb57c81d8e7aedb7fceb566c2826bc87537668e1feb465b7d5f869d77aec8b5d7691bff21de7b6f1f5c63bd2f419660d4d4766e68c2e4f254b1ed57915c83608cc6e72292c34d5f5e270d3eaba54feb4b978dd0cd75546c487ecefb0918b2cf577eefaa23fa397ff9abd1df413cad3aeef67d67d3a16b20ef4e79a79ae698c58d69a77d0fc25ee9f33eecd8ff356d6357f18524fd5818afa785ded5ae5842b8b28ee7b44b891f708c2c31f5639147fb53f05da50e66755a221971a113718ff5ed52b7c4d347e91b735a7ab90d3069ff9ec53ad68e8124ee4afd4aadedf990e92ce4bfae7945b11e2d29e180ca11a4913132b27c8e8308db1467b05add03e3b9d455e0fcb4afdb4cdf17657940d37e220f4f250cfb29bf0316bf09a4e5b32c45bfded266db7d0fc7af29f650f55c93796e88e7729cc4d737d7491ca48ea5419d03926bf1a1274166317f0dd11a344e9026519800aeae9fcc7e44ace2791ec315fbd4f0b16b2b7b6091fe046a437c10ec639d781b1356e3a3503a45822e10fa842cbec4bce9fde9ebf4219b1f8e5f72c96802cebf4e8e5fe60ec53c54c738ef6df25a194f39a3bd053ec5f1fcaa3ab0567f22f8618e46c98d31707ca012deb3782ff41d98f31b60cfb6e5b845ffaba8f57d2f8bd783e60f06852e31cb3fd067311e4277c9c2b967eae30f5f9f5bf575f5b95d9ae7765afaf95e93b974dfd2ea7adbd7e0605e77d709439fc3f1af577c235d713cc627842c4cd3a4765ad07ebef84ec312f70ff8b8d4733044cc5c9d11e431ee3b762d1e829aff4fed779ca4fd8397f663426f120249e327837ea99fcaef70ea71e78b3cd6b6605ebcc7689d3238b04324f3ae832b5d50bc181cdfa4975dfdfcdbcf2fdb83320e5a0b3c314b609d113f75a31f7c570e5e2f8b717d7d1f5e269318e7c64c3ccbd8becd5fb0cea275bcebfe31ae6422dc98f8693fc4b1c5721d52167f189fcd4e9620837f63f3f2d1d967164f1f94f0d8a2abccee203eab66fcd838d76360cbcbabbd189e33e34ac69218e30e3f1f4413d42dc06b8431bd660d3a96b643f087ee842f41c43bdeee3383f1ec5c56fd1658bff6fdffd9bbb2364591a5fd83fae200965dc5a5a06ca594a2b2dd09586009e8d7aef8ebbf273359924d40ab67facc990b9e99b658728d888c78e38d967dfefe75d84aae94e6f4be0f359b9f9e396776866efaf13e2bed4b91e74e269bfb7d67e8f249eac118e565a54bbec9327d139c29f94c5e5a010de40f6568fe01e27c5ac4515af5afc10f378ede5c4b533d2b9c207b6ece7c19da4bc24bb731e768fd5931c6c6d02ed9fa6cde7b3d288ba817d7e13d1fef2fd05b0eb5740d5d02bffb26b25fd05a4f7dbbeaddb643ddc7f7cf4e3478c3e57b8d9fb8c67e2aae73f5c51124cfe829a93e9d6bfdc08abcf3982dd990f53affdbe6a97e6dded19b5b53333d47bb12f576556287966ca9532eff14e82cc41bbfc77248ebed86a7c62feb6bfa7ea1ce7e576d2b24a1ff23d5ef95df451cdf1f1b8c2f6b9be51281750cc769c3c8863e784bce32639649cf1f298f2d7e7ee1e37c7598933ba0c511bd413c57fd5fa6eedfdef9b753f98c98cbd14ddf57e2011c0ec019e32dff8d76e78f38071fe84e842bd81efdb55e750e41f537309bb1d226cae30de23ced45054e4248733763bf166c431d7f4271de515d3130d7db4c46c4cf9396303b99944abc97bf517c0faa75537c4f4bbbabfcfda27d51d88b4252efa0de3636327bfb9758b0d3efe6c80947d50aa00f8185319e08fa17c8dc6fc47eb120fa9db148953c05299ea8e40fedc48f873d37b4a84bd373609cfe24ceaaccef9ce5222f569a7382759302159e356a790c7aea09ce0b496fd07f910f18be37547c3b303db0ae54ad0fb1903126295b8bbc047fffd854cd73e6b75b25f99e402e6b926f677ea05fa6becdff1ecb488c1be36000fb948bdb4aa06fa6fa5348631127dcf7354dee27634c010b6b3affc0e24111b487757157b2fd625983d671c6739ac4770dd8d7821ec379f32a724e9701dd4bfab208b8a3b9205f75563a1a1be2a6b3127d279716f1c4ddd3c5697c6e5095f30ebe73b103ff68e8521f7e2b2ce145d25cdb8497a903eea31577d33d1e833585e6741c421fee43587134076dce1a70eee3b9ed47a666fa76a0027d917012bbd2c6a889f702bb4f05ebe6cbd47279cc77dee73dd19f163c01ddfb7c2bca07913582badc91ecdea59bced71d59f3ce277329ef4daaef813d61aa1023f7585cbec1a6c4ee697fce42fbf764537e68051ce1009bbedd18e0738d8fe39f36c71747930e2b4d1e9bfaf6ce7a664823b8ee8d881943399cf50d7bdeff6d7d6b91ab9fdc572703538ecca65cfeca98a370671d0bf2de24636c67a29f36d5dc59601da9f7628ec341138f15670e45525e8cfa305696ee9b1aceace1a8e97dec8243fee5647d3fca91a5b3926a05c793d5734eb9b6cd99c48f59c14d769f5734b56f8ad802c4037bdf8e02f34d16f1e69d788dbf1fa7fe1c7f551a9b5379fa2e1e2289a727f797b107fe9745f58790d356f7721883a44f2b0d728d95310401375cf12a6507f46946f991415dfd65e0872b21d78ea45f7bc88b16d18151c60de4cf01bd261c4adeae2be347f2b829b49e0abc80be3c5db4c5d2f8d753c2e966f7947e1ca3c9ceca1af732e7d5bd497904cc47fd1a5d2643e6b2e62e9b71c215c5c31cb3c0e2e91ebc27e04887a76d7193e27e7a2b4d2156c39dabb32221472afeb700cccf92f27f025daab3e28b3c8fff1edbbe0db90bc47ae48fa6b72c8e99ca08417901bf17eab0bc2f09fae35ece42fefe97df979b20282ff3e5accc331bc2dfab6cf0a4265dcefe7604b783ed0ddf11481b346e3598dcfb38f8e175270f8b7c9697f36a38abd759c200e641af211660f036eeddd16f2df8afef6313e5b3d590bb10f703e652c4eb9e5ef75adb15e0ec10aeb4fed2ea0d7e22aec3c29e68ba78d2b303676f6da5b32328670badfd6822302f3a2b1edada6e36cf6d51cdb2dc7bae5ddf63047464f26a340b68c2e1e923daebd265cd32378bbaee4d76f0656aaa8f78475ede56c3e58fe23e5174f906cf020bb016ba71d976e080c3e7af3237b7214fa0ccadda03fb2de552456bf471ec6853fb3453976e081fcbbc3a827b720235b229ff6c850fe5b2367d0fe28ced9ee259faa094b3b966fb04f6f7df8325ceedcd2a6e610ee5bd44ccc5e255785e87bc6b602ed8be17f3d3cdd0df544979887ba0719c60ad4353ebdf1c7de2dafcd587360ce43b46f304f524a59eec9e7a5bc67f07ebe6e1f340c5daef3a9eb81ccbe584a9978dc99281c5ab2f22bf27ed9eb237c3ed11f4c1e1d513b0c54c5de9999a0a6c8803b0f7c71af836791b6bb20ffd5dfe65d37a4cf139aee08b04369bc5fba1b5216fa6760dc6ba4c183a387ff827e8a7d6121f3b790063a9b32226976562ad5dfd26b97f6f8ced1ee3595f7dc90a2136ea6ddc932f86f6d26d9c737df4a2f1edd1f6a0f5b4d2fa31ee29ce2f84ff9e1d443ee5fc7cb4bff0ba9b47d8f56a9f77b87f629eaae7adbc968ec686887456fc91fa9c86153975a07d2113ad34d2b3431fb4f107ccbfc339289f5c07c52bc5079670bbf13a4f63497e9b9875e3f8b4e1806fbade5bc4aa2b2f8168952f58da3beded82527fe7e0bcb6457545d6c2ec046c6f27f0b7a62e263cb8f4ba7770539e6feeb2116f838bb16002d3bf6cc62caad516db37bea55e369f7a47798bf7a55b4d81ea778c4c6f4679be03ce6b5b796f07f2c1542578e612d9b7c7dbf6c4388f0b67e7b10fce26e61ed8884fe88494df0ec976b5decfdf740daf379be74e695d823f44a66378d3381f388b55afb2ba8b8ff5197de72e57f383f3d2cced0ce4e6a37355337785f84fa64b809e0e147f0decf8c49724989e1df89e15ce60fb6c41da5b1a17ad55781e7c5d15f299637dff4d7aa8ce2735db25bfb7e2306e1c97561cc74dd7fed1f5ff397f48273da483bacaa6e76c6ce6551494977100b997d2b8fa9d1807e4fcc26a7b25671188f74e79fbebce21613b3eeb2ebce7d05f5befd3a8f4fbe37f7f38de1a3f1fd7136bc7658ec9f9d6b2ee9fe00f897101e208f96eed5b773f4812bb5742c9332912c898d67ba49b5e61c07acee3147a299f7c1cf7baeea11c66634ef907f4cdb48053785436c5314a3a898d3f6277a2758662fbe09c82f2731f95dba95e44588107dad3d5d6786f279f812ca8aa37f87be44bb5ceca705d607c43623366a5ac1e68a89e129f6196a391e4662475fdfdd13b5ff86d98cf554afe1f8b05dc1cca270cca754bcf966b75c4f57648cfee29bebd4dbf7b4a6adb34d5f15968dccd013222aec73f5fc63195720ea29ae57228ac0d79f53cc9dac66dbc972306394031ec1b363ee51826ca055cf0dccff5523a5b497e61601e569a4cd8c4037d6c7e576d3be65a9f32b4eb1e6b73ebef563c5bf19d7b31db188fcf7bbe1d3a7bd09e953e7357fac435623c9bd9530f862ed9e286d92473a2409e3d8e1079e56cc6b8ef15cf51e69cf1445e01ba7e6f053221f2c056aec03767f396f0c924f35dcef5dbbc9dc5649db2581b8489ebf09ee7b03156bdfcdd9bcec31cb19bc332b2a1cb84a94be575c5a23a4cb2a02aa66afe9fac2b5735f095d5d0e9aba4232c7b0ab5225461a2ee8f2bc1a51c8dbbcd43459f11fb9f2b8d0e16ea65837de7fe1a661fabf994c41ebbac59710863afefcaf2f8a106fd5f46f0765b05a4276bfdb9b294d8f9561e59a4c7ab813a5e113352f68ddb7a748c1c5f3aaa3d8f57fc5cbf242b343d8bf7b7e93ed6fa71aeb7fbb7d6989a415f2db7b702356a8ca563f796309501bd35d5a61ac3fdb3c9ab35b9ef0777a5f5116f1acb9c8d50f6edd0f4ed0d73bfde31d686527e7d098389da674774a92e7239ae0fec92235daccb3ad6810daff8f686dc5a1411fe760ebe783d62f2bf3ee73fbea7758d2c6ccea6b75d6e0eb3fcd9623de6e57f723879bf70bfa0bccce159268ee7dc327c69bece737e2dbcabedea405b5b6c6d546156b13ce4424c3ee30d9e3f5e970be7c750787fbbd068129cd14b78d642fcdc2cadcd7e68ea4a3ebebdcdf27d8bfc468ee04966817fa5aa4d2ae51f2c600f3fde2eb0f67c07cfa14eedd746fcee6b3cffeee7bc8421a8b99f234d5deaeb941ad99b8beb081e3e4f6deb699f2af2a7af8ea6466b95f6edb05c6331af472bf1c3f08271fe50f1805d64d7fb1fde56c3d98f85a6128606799fdfc694db680fdbc317177b06e5780805eccdc81fc5f1e2ede79c3959bd19b88fb482d969cad2f567fae12527afabee7b2fe4687c76afd7969dc1a9f86ced2b677b983f57df3f77dfad31d26d5ce138e579ca3be1a6313bd0beeddcefc563b7c7cae6f7401fb7d992b333b05b49737e4970fe0fc5f29e8add55f9b4123f2e79d9e4ce2b9bc1afe44c2cb20777a213a538b2c3ab2fc0de80f567c8c762c269bbb4fe2f5150ce65fec3e49cf6b65df710872ae4fa7aca178af360569c2f85a476ddc3be5be8ffb382c383319627300ce86aedeb2d72cc56efd1efc127d7aec1459fb528fa9799f853473887466cfbb37dc2229fc49bdcffb60bb9f3ca9c852f982c3b017b7045a95bc8573e1ffc9f381c5d26c3c17e1c2ae7054f7f19dad55f26be08f6314c783516067189883c1d8823736f05dc61a52b7d8441c9c99ed00eb8adb9a40325f04fe0acec08bfbf1d880b7e59c6118d1af85054f8dcb7e38b8a6bb2ca0f57ed7ff59fa96f17e5ce2354621b5f5c8b926ea62e51a62edd3f1b09521d6719b2f5f4ce5c65d13d9c7013bf5ac11e877e2cdbcf9d7bb07345feddd9bee19a38ebdabca3fc6ddccedbb4c0b527f7fae9b8c4efabc611db7ee7f354047d38600e7df8ff83e47cfccec5b91585f97957d17dd8fab02bcf48052c771a6b7aa45e31685fd5d920fd1d5d088b7cbc2471b18af341f92cb2c0c60de95a98030cce420ac428a7b133783e528675f7431f4bfaed628d7b7cfeb06771fb37aac22f17ecebaa7b62d9d7ea4c0a6dfca99ee097df7e14c710ff7611178bfa4fbec2ff0a04e833bdee292fb5ef299f0fa212d76736b7681d86241aa327e4188a11def733817b2ae457a75ce1825cd95ba83ef641e4e98d4da99113a8b95ae396466fd62c89e7c844458ec9823fa22487323f5785efa2246f9ef215fd77c99b91bc3374258b8937e61197f387c17bff6259d3b0ff337902f31b2af7d835c9e5e0ed800b2d0dc8d0a29cc9df6ff5ec1afca30cb1857764422c6b508cadf61b753659cb67eed8be902f10d89076aa4ffa705dc35c8caa73c88669d7cee299a0690c92dcc53f77ac96d66de7ae7b98fee269baae9e8158ad7f4a3a2137c6cd6d4ce3b14df7c5b88c566d28e04dda3c531edff47c40fa764ff64c0a9e0532fd1d24bfab7fde980d2f507fd5f4bd2e6efebb74efdf97e7f998cead390b201d55e6d4681fcff936ce0f7cbd8c602e4355ae26f63ea66d7da4925f7b7adb95635a8bba78ca83f1120ed5e684ba894be5d143f988293f7400b104d17b190f01edf14cee29adfdfb62b55e2ec7f753dd3308a42a5e7bae036ea5c19f8ae939c8a56af1fe97234c1aeb353c9b7b18eb95668e12ec02b6be195cf7464fb93d2493dbe43a62d723f8e39af18c7dde835d527be8b9bc956fc336e7745dea03fb06fc72f16c17e7a9c53eff3eb1e6e8bdf930a62cb786c85639ac2dc7c3e2b73f163d666f05fed9fa02f60df27d8f03fab2d2faa02f71fd28c8dd71587d630e0ff8f612c5c5f0b13adb40466af4691c4a6747eb6f3f179733b8f75bf2627a6a2bbceadd7794f4c9e379228fe4d874c16377f2cda7fd6bce939e426e30bbf67df5fcc3ade533967fca34d7886a730e6bd1f7b6786678a1faa73787e78eb650c1c15df38d87729ae1953ba7e5c627ce1574d3d85581dbb0c3379e97b5b9f313f348fcaad826d9d4e59ba16179b748af9c2c5d0e75cadf3e8cfb8de7c4d1daebe57beff95be4e9f00ade33b77aeac91c567fd3867256f9966f4e59fa191df45df2b35b3e4b979cc46e3918c99834db76d939b346369295b60890b5553ea97b5c4e3affd20d5f58f2dbf60943f34fa62eb6f0df26f74a659f69b7336c54c0391e5ae01b0f157ee70f8b52fcd8775a1b2fc3b17355b1b74a6c638e3f873c1ba17bc4f935f3fee2921ff7200a47c1d4fabe4df9b785a6de6c8a0bcda53fea7c4eceb775016ca63678d025944db918d8f79cb7f3ede9cef5997b3ee6c382f5e5d5a49e69ea2b31798e3035f36c07a457b1765f17c07e4cf99452dfca11c81b8757a3b1a69cad79f9b959c0dd569a3ccb7cd0e93ea98a59b2862eef8d9437691616df57881bb57d6f1e5fe8d7bf7f46795e76fecf30a61255c11f45e4fdf9522956edf8d8bb2067d99865d2fb216f9b9e8d298a15937b9b9a9cb358a4538ce12c1c3857246843b9ff3531e7650fce3b38e7e36daa8a113d8fb9cd6227392e578cc3356a89bd4def2bc729de7e56c802dc5f783474e56b357cfb998b0321dbe762e89267e9938abfa16b856377a36bf179bace2f09ff7fcb243ebf9dce4aa74c6e225f94ddd26785eecb7c8668ada6358b90df24c2b9ba537fb082309f09e7f283f16ccc1f7b17ef5b882f34f9b1c6a1e4db944a2c29d5b30379f79ef3f3b67d87ec1bbaf4b51aa5bef162fd4e34ff6c3f99ebd34a9bedf135f5a916e2dd3c5e7bd0d95bfc55b502129c9789d887173d8121bef35d2027e493a133b7154f13b300ca675fd5992dc24b412e6c3447b79d9bfa1cd1ef481ecc2bda87f0bfb0b6cc32a90fab718441b9279be722432361bd66911dd1255e34a0077879370e19cf0eb823aab759f10db41f0acf96f6e5c98ee73ad5cf73afcdf74aeb028d5d15ff1a7372b4eba1799cf3f2b87a5ed377862626df11cf66b1dde5be82f313e847fc9d4f5413d0cfda219035715c29fd5675bb32decfc6fd11903733eaa7b122bd877870ebe45d9c3b57e86b91776e5f1fef816bcdf55ab6eb6c40f9a8ec9d403dac973e3cbfad50eda586d8135e27b00ebf730f3382cbee3bef86f5abfcafc677c6f977e97db016e0f284e95be2e34efc0fafeb58a5d7c7b7ea185bcd7cc15cfa96df2bda5ae7ea585d5257aa60c76c4dcfd164df1956af899af60d573cd7763ce0bdcde38fe5257ed3bce232a624430a3c935538ab35e557622d8ab2f7a324af512e08941f2c93e46dc0f18beb6c60b91c52db985115a60bd67e58693354ef61e4f856a0de56ba9cfa84e6cbfabd88e3e5ef6038f0f36e330681776fd36dd28e899bea09c86f38697e5e18fc986b69ed1cdfa4c0d90dd86e694dab9ea14fe2bfa7df497247ea316bb9b3785d3feaf454f5b8dbbaeadba1ff69ea5254653fe575d060770fffd6167b17cfc96e72eb677e3fbe7f7658c673026e6ff1dcc6e297ee783e2026c3d9db98726f2dded712db80f91a0567eff0ae3b5f26fb249fcbd302d3f21be7ab86d7b51ad3d4767dbf81f5db613dbf35e32f98d715389b0a8750649d3bfa0c5dd5365be99d479bb261ccb6150ea83a7edc1ee7c24b519d6eab596b8883aac337e2e7ca5c75ea6563f1905fda162b73b7a4988379709d0824ddf99b2cac8b71b37b2aaa1794e1f8a13d6f06740474c13b8fe544f0d02edadb3d9984357054ba862bf402cede5b93ed1fad79bfbfd6fdbe38f2c48f2d297f84f24d67c57d692d378e11567ba3612d95e6b182334a67a5c34a73760e07f397ba8f1d279f2ddedfae34736f501ccaff6b3f86883386f78395267bc8dff3c78f65c6a7d6e619e8f3aee0ae6978f65e5f9ae46aa30c81630fb1264d3aa31b16342f731af1221de4492b6c6479bd3f887fac7b47968bd67d9fc41796b7006d7318cb437661c5f9d5edbea693355a9d43f7d0bb2af38e3ace4576310b53e748c8873d673ee25a744056009d76b22915d8cd2783523f931adbffc03160b1fcd83b67a16eed7a665dc2abf13cdfee8267a200cb4b4e381fe3d8fc986572fc59ed6c9e7657abf3ce6357d51a48b87d6d719be3e371dfa3a48f835fe290a34b9c8e88a7f5886a5d1e6df1eb31f9d47401f9650507d7e1dfe8353538677e4f318d038c23e53589c91bc233ebba71ddb7ce3bfe2d63c1d230cffae97d52bc6af0dcdf388efb6f7997403cfd9e07657136fe1d72227efb5857e7393cbef646dcd6e4d52d1683bbddf39f358ed737d82fd955e3bbe87a21bbdd337925c7b9f6bf21e34bf3fb284fc4f7ca9faceda755c410d6ad54db23e6e370cf528233d549b7930ddef5ba1b9b9ea5b8e867e4c9bdb148f927be5997d5f1087cdf38fadff2aecff9b3efb9177b6937fe4f9fbdbe71acbffd1cd75337715deebc1cbcdd89bb355d457e9e27d7eef7c85c069dcbeafafbbf20f77d993460febd4ce01c8f0a77d900991ff319b9efd1e0fa392fd5e4407502348823fba5b3cdf19587d74e770ea1df217bd1dacb6abfb205be4f4949b9a0fc6764cc9db18036e269d5c567dd729d7ca34fa1f27aff167dc8d04fbf4778e20c56c60fffd3fc370be8b71eeedc3585f9b1d9c17f44d6314d7d128ac39d2b11fdb3d47b6c1cff68dd47c93b5353488b57b71f9b38061eca5f2b5edd3adad5ff5f198759cc85958e41cad5f5bfd1ff0525417cf84a377d4bd866bcd6d9bea8c30eb9d368106a9a7a93a2c14f91753eaca839365a79fdc9fe004e2673fd9f679ccad8be21ffa7c76854cfeb86f6540567da83fec13f792f293dc933f9a56b51869bf1d66d5d35e5e4cbe502ecac40ed8923f0db72573b4e256eb9df104345d7f7e8ea27ec86b6fc29c97732be8b76f3dfe91c33e7d09929e04eab367156bc1fdf19378de7a603174ae9d9d570f963a171d18a52a3a46ecb37c88d67ce40df6ccba16b09e6ea96ea2d705efaf58dbeeee7e5e477cb5d7861b1d825ca2b8d75926febaa6f0532ace3fa6d7ea06f9093df2d77e1c5319edd536443977e99ba2418a81e30dac33c777346a4670747dfde3a9efd8de7a26f58bbbf652fcc757966e83291ecfb4c17fbb7253e1e9befb373ff9bc6078e01aa750ed6cb2ddb37b97574fb53e4c7b371b74eba351ef7a42e529bf6e2f8db76fafb79ce39bcad0fe9c7efd067df6e4b431ca36f6f9899a34987953671e794dac7f72ffcbb4f5fd0dfe5cf15a5f6ff81f81ac9eec9a4a98b284711d76dd918dc563c1d39312fcd3fed3c91e56e318b95e69c0c9853b1c470567e68051ce1e892ffbf67f3b7a87bd07aed3153747e9f9dc05eb2232fb11b2298cf4c487d84e5db224e2881f16c98e72b43fc1fc403cd07dd7df1df2b03f1f73e84b5c4d7c51f8b490bd3b167d7aad2b779d54ae78984ff86e3a8cfefc5b4be31a6505d8fe22f8f1fad7b156b5227dca486638c6bf8d93687a1eb85306adf33cfc5ab0af766a5b2f16d1b9ff72e862e419e8059e8c331d0aac644252d14ebf39cdf173fc36cc9366b558deb7572e4f7cfcb6fc0cbfd4efcc43f23e6d59edf37f75c077b1b5dedf021d5b9713573cb756cc3df88eb7f069710fb48083ba04f26c15d6c413a3b811afd762c44bb3cc30e6bf67e3da4654f892caa1f8aa3ac8f55d8e6df8817fe0b7521b37004e96c05b63bd3998b1dd014383ffc053af01e6eef98e4628e23e5b576dd91990ef81df8ed24c68dc6c7616c8189ac9ee9dba19ce9c36fc4f17db3def94d988d27f0758fe2b0bbeba7c77178a8d6466b0e755cff74f0e1fc77f8699e398320bc740fc8ab4cae48095f6582833d2418e294b7f2c93dfcdd58b92aff84c81ffdf5827cd5594907fdfb1fd113a5be22def8ac9f1f1be6558a06e1b7cac43b793c15e799d27ad3623da6ff16dc777266717c433bfeab1fe0f5af7ec87de75ffd507dc579f02b9e3b583cdd5bf0fe2f73f90f3e53509e67f1d7b3435cf72b6a89d9da52452ecdefc90344e3fe17e66372f2ced0ae07abe74c56dad1ffc37547fd5afc8bce196dbeff9de7af6fcd15fa4db9a0cff8b61ecd057a844fe34fc56f35e2aae6df5717fcb7fbbf78f736cd7871dbf13f7dcb5837eb79542b31275bc1f9e0686c881b189f6ef5b51ef185a67c1a153c8d9df24d3af962d37a10cd9c58dd3855eed9747f71edbd758f234d5deaeb14e416dc5b81ed4a1bc39d72f265a5f52157baa1f5f796867880a6ea6563047464f2f03c789e868dfafcf95a65789ddbb20eafe2768dd784781033bedec0d1fa884773c36c57ba7cb178aebfd0b893a1aaa7953edb59e0ff173b37e128795fec5c3bae7b8dd5c7821c8376a0de1ced4a8843c8c56c8b699bdecea2806abc88827216f9be6fe8926ff7662eacbba5397ec6870af9062358e38057b7b02df3012d8e48cfe1ddb8be41dcaef936ad7bb1d20cf73dfe86a929b2a1f53d717871278bc16552ae751599ba4c5ac2cc9dce8bdfcad51fbf8267df23c61637cc5167c557d8179ef4ac804bb996455e3dd8d4f27e1b864ded18ece2da0dbe3902ef1fb9e308af956deed7bcba7d1f4ef6c066d459d19d53a42d7e1ddc71f4e6ae28b0f7f3ed4a79aab5ebcd9cc73c7f856f4c59f48de482dc7f05ce39c4d73ca045d62bcecb39ae8b9ed6465702ffc5d466bb49948e9b6ca997cd4734388f23e6686a8e07e74ecd7867931a6b9620fb313f70f13b6fd877d2ef156bcce0ebaf340fec5b360f682e4e0e4ff32bddf34dd6bdbdcf07bf44eeb211470e36cfcedea4b823781edb4bf13a6d39e7c3dc371f9afffcfc54af0595cfd682c3ab911d14da3d8fc7f799316b1a3b0edb2302e33b7ccdd8655cc671ff15db0a897feb58fcdd752c2aea3a8e599ccb9d261d81211df6e22e7a2a610b2a71aff67ba79acb986e6d98bfb40646c518e067f2a6f7e0b58b2a6a7a7007539788c6f9d4aebe1d568e25f4dd61352092e7816c234c5d3c9a3c7d946ea5e72af4705d8d03b9eabbe06f17475796168171c7b317d7e169c2d0aeaca15d2107a402c66799cd4d32a7768f28ae41d2e1fd831dd1c9bbabbecb3aba4258d4cb21573fbb431dce7f6b3efc536a3e705b13da0df2ff50cd87a4cf936fa8f9f0bf537b61a6295ba023ece86fa8bdf017f0a61ba07f9b8b9bf06b434e4c1eece5ec375397a2c7eae0439bfa66f340be33896cbe15c708d5dc972f90f77fc330762879ebc5b5acd7872fe03c64e9d5df21ad10bd43e4e3fb05b972cc1cad8fda34dcb9335d8a0c7dfb86d54a9ea276ce7e009b532389d29cc2f6f21c6568fec1d0a483a9d29b4467d9d18016b9a3738f43fe6fe632674c5e01baebf617729967df148e7b5320803e03b60bb4e7c78ddfb99cefc6c4500cac691cf6a53d50aa2932c8ceea3c9097622d9f3f38c7d8940a65a6c32f5dbbc7f85698d406cbd66275fd05f86e7cff4c93bd310eccb3bd553d837277effc5b5aaff87e0d11ef3c0e48709e01f2d71b07f2d90a65d2d2d4684641fde34e37f1d9b9c10f15f7e3640bea6dc57ae7f7f25ec3c68f48ceee8def4df71cdbbf38ba0cfb569a0ff68edc8ced89f73b38482447b05aa823a8bb3d3b50796b03fd03dec7a6fabc607ce5eaa52732a0edf86fc6a1f20273c475993034f2220e09a0a3bce2ef6de600ac2d2bb175236667e8a60f64af39676e8646fab93e724d1cd371fb027f3b0ef3b55fe64b58cbc235e64077f5895cdd9aad3f6ad35674bd9d33993b718d403d40bca2a09c0bed7e19b3cc0dd590973c9b52b7224f9f925863ab6f65fa13f52988bf3b4ae295697f127d23c158d5b0b1464ea34f1aed79ee6802db23e3463f88bc443a2cb35d69666042fcfacc758426bc4f565fc5d8548fff38b89e0d8a3b98cb641d2f77b57375779fdef1f7e2e3595cc3682c89355e5fb8661cefe193d1b8415bbcd606406d514fa9fc81f77b786de1a14591303f40095eaa7119b10d310ee5b31dce760ed69719b4cbb9c85c9aa77b3204b4d5e4d56895edb99c7e3443f56496ec8a58c6b53dbf465eaa1fc62ce301dd380e52fb7c9fd7019267f1dcc9a0963f45be4f5a9ae4037bcda0e883d513b1b357330ec1d04d6fa55d3d23b8fa3a95bc5705362d69536e23eee01ef60cb547a2417bd6dad59feac757c8b739e20e2bcd397d6c06a141a927875723a9d7ba3ec45b879857dc46f96cb1cc8b7d235f3ff4eef1de35259f810ee812737d242ff7218c8c703c99baedceb53e61b1fd98b35de2132e92f7793fe5253102ee006b6274e376fb5db1b68eb926d571f2cff95f5e83c6b57b4adfe297f4ba773c1aba14aeb43e6bf514c2a2889f2277d9c843e6b2e62e9b4f9df8919d15076f768cd99f86d0de7d1bf762bcf8edc55d53d0fe73c50541c33dcd5f50fc4e40f52cde85632c13aa6447ff606afdd0e13d5a1ca53a773f656954eb25241a6df7e6ba14e5f64ddbe19bde1ea9b1915dddf1b6e8fc8af93db6991d521cdf3bf79e2c5e3d993d6587ec3618d7685dd727b7afa1bf75e63a0117ad34eee40c61dcbd67e8d269a5f5c3aeb1776c6c6443774f30ce84e95111e8b439f4c3f4accd03f94a04f223776953273cca6fc88fc565bcdcfb16feaca7f26c57c3d98f19a65bc551a65ba72cbd939fe10c178e98fda17ea6725d2fadd9cb34626cd15776c0068dd7c5c98a18cc37c17c39ba0473172d619bb307c6fe65230e77ee9457f6cef398bb5cee3194f7dfc3a79961837a8abf1614c6e2fdd0fadab91225fbd087be71e8efc1ecc558c9c8d9991ab73575f1792ce0d3dcf1f1faef9adfd7bc1780fde2ae8509bdbef9df9f4f3bbcc6394bf68f19b25b317df89dfde884856e37d60f619f1aafcc3ed8a6f6fd7fc3983c90df5af31ea218837b1e9bb9a66a7cb24f722199bc4f4d370ff2b03f9b8ffcc0fcb5b5cbf1f9f84ebc206af713fc1579dd5cb4a5024b506f2bee210e3efc1b402fab69cc20b3a581fddcc91e2aadc35ee6c768a9a32b621713d7e8a911e41ee0affd5cbc61deb7c5cde0a738bc6e57baf1fcbec1dbab719777d63b7f57fe1bbcb233d95b728e99852ae140df5f12db215fad1e51534fb9cbb788a76a594c59fac931fd574efc03e5c4228e61a6719a6fb0eb9378487c9e77515de9e1e03f2277d9a8bce7dbc1d235a09ce89f13dfe6df231f625f659c2b6bb5f03576d82f589df1c4972f9110d3bf49ceb9337a4dd174a7dab7357bf3a99a66892df0848cfa168eaf477849baf29974cc3718930fd7366e5777f14fe01a148ea5faf2226b04e2f09a62fe449e3bad3412d5d0fd226d3190ce76a0f8b67fd98c6ffdbfd1175ba3971a63e7b8cfb502c315f8d0a76f06dc973967ce95d8b558e757c65ee378121e3f42733c71cbb682fae2007b4a98b8899f7186e1ada63c5d8dcf426dffb228c89d411a3de56c6fbc18ff5481111264d2e6d5e85d40589f726c2dc10fc984a12bbe3824ea7046be1540bfcdf663c3048676bd99257f35511e5f6c0e807c37415baab04ccdbeee6e7ef7e135c64836d652cfea82ebc7d0d4152df9f77b118714cf611aa765fbc45a675ad49664ced6563eac34f9d7543fb8ef499e6d948ebdef7068fcdf852336ce032fc6b7dd10ceac9ffeed73ee37fb8678e96051f2af3bfbf4ae9c69eb9bc9f93043028f3340ce849976dd9bd40b8c3158bc1a38718c61ddab1b5f7f3b0ee25a9e02d13e2615fb7e9eff7e7e7e217691bf7a06b5dce9ac04b9db60de1e77d9407efb797bf9168f55adef4f67a583a999449cf7f78a73f217b08e893d7172046f595ddfbc4f58441c7757d33c9bfde7a2857ddd42674e593ac121df8d3d413b1b8ba59a017d723879bf0e96704e3e1603bf659e63075dd7896f332703c7817a82b6a736fb4f6aa372ca1997cfcdb2618b62dc7c11475c7d35eee5b667a22e67902e1c03497f7b702d823180be7673f886d9ba10b7d535b7f268ea8a67f21c612cc8d7ba356e61b90f5dcf00387662aa1f0bd8576cafe3d890cebc170c3857403b0ae612dce90b382b415c2a0173c8baf4e73cfd82f98107ab092b85dad4f8ee16b2f5ae9fb44b3c3c677bc4e38bdb4a303f51970243937d91a78f95f657ba0e463fc5fcba8378411c8787cffb07c428c3baf0b88d5298b32cf732c6bc62364c3fc1de27e76619acdb1676dc31c58cf3dc695d386bdeb58910ae39db1f95d8e8743caab1bd38be8e2d3f9f1ba3eaefe7c7a8a20df9f55c6e47136f546beec55c4dcc9d7b6fcd76f23fb59483d8589f0cac1ef3f7f16e65fe83f756fb3b27f7ef72a4fc4df585ffdafac1bfb73ef0c39c1ecff3d3b6e4556de4e4b8ab0fdafb65aacf62b3444ea09cedd1cfeafcbad9ae202fa03dda91dfa492db5fcdcbfb82ed8c63417749aefac9e1e98945c99ec5ab0b4790f65660efde75a2337f5725d7fe36c3ae8b23f9eca09c90d79c1ca1e893dd538fa62e0dad9e7a7284eedf5e47b88ee87f59543f58e9d2d1d49421f41380b3c16610489bea719b51f4c90cfcc8d2d42d6867d2e68fcde0cd98333b3b508352fdd75e1e7f0db9440bfd4ade39cbfa08397ed65401df1f987b3b207d13fb365813c6e2a56eefd4fa7feecbfd26ff0fd477391f00ccd5cece007d9b5f9671f482dc5bc1bcb3c12e3907c4fcfc153a5d06e75a70ce5bac3407acbd5fa6a62cc0beb17835b12d923366b53f31c339db6200ceb61e91e66062f71a147733e78c2dfaf2de84e7c0231a639e8e4c4df93ddfda728795c6dd16f838a897cd47e5facdf49dce4a374793bf4c1dd68cbbf3fed8dee2d5ed82a7bf5694ba7de05b7b2b30cf55df3179353074f5e00cab6b6ea7b60c77d9983c7732292c373ab7aefe901cfb51ff6c02d906e67c9ee5da1b3a7319f7505ea51dd11fb97cd5727e7092db7a10b1dcd44fec7d96466fd62c89fac395f3f595627e5d7d5b4a79f1ff94fce2240ff363c3dc625d73b88701ce71c9a0be0f12de817730e6798e827d451e72298716bb2fe32d40ef06f7c2b94a7cd6d99c89c4643803e345001d9fade33ecc63b0a8be6f85b3b7ea734ec71cd05e9ce32b106e635eecadf48e26fbb9758e21e2c3523c2b700ee61cf3f56fdae5144e85661ca6ca7bbe28c4fd65196aa58d5ca977bc991a171994474b11b35d6933945f28f87b53bb6ee1d8ce532e8fdbbd7cc3294bd79d7d9ee4344ae4d4e0ff449e4bf3cb139e00a987fe5de25bf85fe6fbc8d9870d6380db7f15b274467191d9f80ed9b3838a76b03bd7d027ae0df5bad2b729ffa799f1665ca07e13fcdb4adffba5f91b499ec93b7ee33c04dcd6a42af5c8d6d44ccfd1aec48cf23c3b54a6b6a0ec818dfa59d40714b9b7a9c939beaf8ef3c3c79f4bc7013df37f764444bf4b77ac34c5b74265ef08db2c6fe95615ff03b6efccb5c0796729ef0c5d22163d06dacc30bf7a446f1027441f9cbff726f5b2cbf987d0d904d6032cca93f5887b3181bee18e3579d7cadea08e95cf6232d37374e5bca48e7b7bb8731d4122cdf91d9f354f7a6b0ebd77c1fbc7953efb290edd921ec3de1f00fb6409d6d962e77eb077dfbdb77ce9ecf088ebed6333b88ceff8412c8d7b59063461e8600dbdfc148783ea760844cdeff2ceea39c682e736a676bd7d6c06d7494dfbcc9eb43721e769f55c60fd4dcfbcb571d29ab3f8a75a6ee77ad930c7bc13ad3405ee05fbb6bb8b633179ff66f3576fbdd8b966c01d6c4aadc94daa1e0387f7bf56bd7afb468ccf37167fdd189afc0bf43fe3bc1b94fc63639689fd3e93dadcf42add9e975d9e6ce8ca6e1c701b3bf2d0fbe6dbfbf9d89dd7f7a4f5fa9e2cdaafc1fc7c3334bed61d9e3e5b82b2b785aaf166be0ced7a3002eeee7c58705d5f7e8abc495a013aa78bac4758147d70781fe532cc2f2ef21bd4f18b24ef520991bf7a46a01ec09938f635c033bc4da9844d1e0befcdfe368ff9dac7017afededca4e72b7eb05d53e8fecff960bbeec1f927d63a8c1bee161a47acd8be6784935d3a56087b7d4afc7cef3ae9567fab6aef95ed9d31cbd4eaab2496d19efba791d3e7c3d4fc70c54b677bf32077cf26de2770bcc54a9e1e348f7d7fa5393b23a0a385a602ddf505755131b680e9be71903da353a40fce2f466f02cebfa55828a61bcbfb10c5140e862e43df8a15a87b93f236564f924d5d89569a7c1b0732698730f7bc7b2ce1995ae72d63a7d311b0ad5ae6020eaf434397b6e3ad7436856d475c17b0f3facb95ae1ccc076ab43f5c575d38c2f91907fef611bee68edf7d43b6eaeca4f23e61f1dd9efdafc4f0ce19cfbec1df6e96c61dace771bdbfa38efbd40efc70a5bdb4c334deb9d691ed3e55c31bb5e7d58235b2a17ffb64c67e679da2a395e6ecad661ee0bb6bf6dbf8d5ff06ecfbbfeb36b74e527e26186b416bc64b7efbb77e7a272ef9df93effc60aec19477a9e9b6ef3b8273b68383fbce292f63527a795f009df3606ec0f0ca1a9a129a73e6b2d2ae0751303d3bf03d2b9cd13a2b1d80cde3700fc7bfe1b58e9ca5d5533c6bb87b4e0e267a39643c833afa8e207f3a3d69ef005bf119f907eb0fbe7d7bdbec40f59ea8838ee6e5c1fdf58cce99267e2e81d95bfc059787780cec99bcaa5789486ddc9fcfd57e645e0be7e1537a8ed866767a9a5f33eafbcec89f42ac7fe539a09fe6d52f0295982fdf4e8ee03e958706e662fc64fd99e2f9effeb941f93075455a448340da30adc6631c4a2f8fe6d33cbb56512d9da5bbe2619f88a97eb84d84f88cbd205fabfb8adabda4d468a5a9b7cf39734ecea653fd7858697dbfec637dfbe3f40c787f97f351727f032eb9becdb5b8e67a6c80b8b96c8afef318eb17fbff0761ec7b0e2be21669bca945fc22bdf78f8d6308c7cc4f1196b8abbfb278a0721b1398cfe0dbfdf09de3a28df1ce45b6cf6e8db84e2e8e49b28c6785db021ea439ce89ede99ba25dfd3a7ed6028618f32d2d4fd83b3ead4c7e07564fe20c4ddebdb31e3566995f777188980eb009f560ce634ecbe115f747211c2175a445dedf82feaf74a53fd58fbf804ca9c829a22b7efbded8ec166b77c4bc16c7731c5c7d2b7088153bf82142fea31c2755a6134299b3f8659adbfe39dfbe8d7be8be4f68574eeee2d09af31799618ea786a2c1bc7d39bcbacd8d7d749f13f6ee774afd51bf3d3fee1919b8268efe5a93ce406e2bba096403dd182b1e61f1e94d63ac33bbd72fc74bd754c2bb7e712d4aba99ba4499ba84f3da1f2d4a7a19eba82d557213e25853aefeb4af473ba0498757a3b1a69cad7909c7a3ad749934b4eb7e9de1496a65b71af83747e30e2b7d5fc6be7caf1e48ce3c0de38aece08ae7214f1f5c4b8274b61a63d1e6d90e488853b283ca18bd64850c99f84c9af4e45c0332aa3e3e8e7c82f7df01eea96807cc1f6bc65b5d2be2fb699e77d398a2fb2ad6e992a72fb0c66dd33b48e66cf3717dcb523be0ef0743f79776e08726d56c772cc03783abb756816de984f87b2bf262e3d8432ee64055acf3ff7c6c2ad73ffe1caecfc0fdf8da7e2de133f371968a6fd6d55ac03070ea651373a60e3059009f817830c8e78bfcc92267eeed9eea59bcff13e2f09ec53ff1580c67a4eccd110931c1efecf6a72898e79536abc88b2de46b54c80894b72611ef55f2bba69e834af9078b534f5652d361b1739d80de9b157973051ba46aae4fb0fe0ceb56f092df892985926f52fe0dacad39cf9d4cfeeadbe16457952784f58bb479c57378553375895869b26f13d7bda5f93156b7029f8bf4701e4b16e2739b6012fbb5ef7ee797406f4626a512e310d5cd6d68e7c5d0d59b89ea711c4d35bf96a6f3c1ce9cd7704fb49a73c67374d95fc29a52a4df34f74e5ccf22a9bff18d63b54078357767cefb601d86a63e4b63b0f76b42a4f53c4ee6c803f61bf2b7a1fa67fec786199bbabfb1282e32472a05f32e6b6c59c473bf3cad28b58f6a6a0c4205e69389e1fb3cb53d1f5bdb69fd8cfe76ce033b0bf9801ac79ca74393bafab380fb5a510eaab306f31138a0430e490c03ce455ded65c4795ec041e298defe57f6ae7e585f83e1de3e544f76a0862b5d264c5d120dadbfb57835b2a38afd9cb7e55b70d87efbfe6f8e6fd7e0219c408d1cdeff327520a3cdbd15a03d6572f417ccbd602fae4da9702c4d6d568719f22d1ed9ef3a85d711ae7a87f26924b5a835f5a6532807a41ad3c45045993306fb5067b2e71299a2cd0ee9de29beab0a375bb57fcbe7b3b8060b380b2b9f16fc6eec2f8b628e6ed86fff64f6aab0b9d89ac4b1119df200ef6252b1730cacfd91b32da62c0d7ebbf7cc9d5806d7beae69c273d0968f7b782dd8b6851ae1c9f7370cc45c4ed5cbc686b5263bc56972df18fb607f32bed516a390eba37fb205358d71a9300f90d99b43d216a1af48d9439e750dad519d157fa8d9be7263ccd4db98a8784f47ce9e9c9dcff66776a0c25cd46e1cea85b347c7f140bc0feacea2ae40e6c4312172ef70974de73c74c1bfa0398fb9effdcb468c6bf04ff56379ff87ca7919d77f7d677d5ae4e9d38cf23c2b70fc2c8f5dbd983c47986a3637680e94ce310598f334270f8626f956ed7c4b5df3e2613c6dac29be4dc9d14a937c9397fa30c7345b37470bb5d9163bcc6d5b0ead294be7f6475b1ea8fcfacb638a628cc955674517c65d60bd7ff9d8312ef4f61d6bbc5a0628fe5a98b92b0dc631b3b51591e9fa7d90bb3bb1f75cb4ef5bd63ab9331f715b3b6286f2f26529483ecc2bed2463ae793f46d79c6b8139189aecaf78fa60f26a846437b2151fd827906b26cdbde672b221cd09b92f0392dc99cedc15f11e4578cbe2deccfa24ba16d50736b96a0f537e8ba46d8c152822b0df2d60230b0fcb9fada9cb5f76e06f4c4dd9ac170539a427764f27f9db968bb3b8aefe241d3f057362f15c5f15a4bd4939711ca3cb7a4dfc3b22bd260fe10afa90c470cc0e4233a0bf1c7d12ea3a91e83cc47b07da1ac0f904ed3f276d00b653573c22e6df8aed89c48f251e8d80bbad34b9db98e032854bdf75423eee861af84dd7483dd93d3502368dc37b9ec332672bb8f64578e61db956a0fa26f4e19b677b036ce1a59b3ba76f98bd1d31e9d9ccd466257bb8ddbc5fced9b8f5a11dd3818fb0fa3d5f9db8fb1eb021535f68c6ada65e36564f25601ecc9cbc999a7cb602c5b3431faeab8c1f2d9169cad9a49c83b9943c833a8671bdee91a12bde2c3b8b9c9fc3bd402c010df16ceac3faf03577368a10e729f41d403fbbfccbecc5f5f84768ede4da1fd72ad05929f5098823bccf338403502f9b47b0b809df60472eddb2ace926ab36f6a625d6a068e7b7e588cc9f534afc2510efad021dfaf81c4f2b7ce9dd6dfe64fcc8572d7276681fdb079175028b92493b729ccf3973b178eecbd4608d19d0d628c19d897cd2862ddd99a376789d593d24b345dedf42599eca127263e8f2de7882dbe55be412762d798eb4818eefc53e537d92f223415e1154c32cb403eeb2621fc65da66302732a42a5635d9ff27ba65d64d0037cb718bff869465df70675a053ee42346673980faca9399fc8e7bc606fb495c70feae0750ff9a44d369681b16f5ae4623c44e09f4c32957733e8cb9a3373e4cf93f656e0d8627779fe96c6d43ac9a84b45dcabe5d9adbbcc6acb0f09f90d45c1bb4df5e3abdd633ceb6be7caf38b6b516660532af1b119449fed7d4f9df0e745dc23c6a3b9c1f5d8c786b1c58dbcf9d0c49e1100bb10abe1c75d360ee5ed1d5e0573d93dff62442e948849b984ba9d0951fbbb7cb3334eb48417ce782d0ddccf0fd7b8f8250793de449b10902f9447dc2b70fc4267b7d295b6bc97858b919784ede2bc3dffede334b96d6fe662467df3382d35f69fb396cc80db4e86d2d76f18a321c619d54986a25cff2e395bccabd4110bdc512e7d195fca66b230bf572e71cabeb13e31dee64730c11087df090bfe168fbf6bf3fe21c72b4ce5ce10b0ff2225921fc3ed65c25d3663c8217e3ddb8873b8b7e27dc254112f72575b48d5fabfac80ee59ddce18ddc7a7cbb902adb52c8e7fdbb9eb1ee6470ac1b940a5c72cb35ce90ccc157278ff92c6f1ea3803aabf83ed9fd959d5faf8bf7f8ac23158697d147fd3944f03d63157e8710ff3f9477d68ab892ce19a817f8a6db86d12fbfb9c5f3bef9b85ca2cd21c288e3eda829ce244c70179e9544baafbd82f4cedea1b3dc507f26bddcbe2a6e290eef2ddc94aebff1205e55ce2a0a348dfeec99e492dcf9270bca5df63fb7b5378844b9279c5e2bfa795363bd93d7563f794e87d383888c3d1a5538e00ca053cad3ae55c41597f04b2bc8b1c3042b153bda1591297d6a5db9848e3d8f13e7978aee2baadd85c70b467c3da0360efc9f8daafbcc7d4b37bd23ab01dfaf5b11984e3f9dbb1a31eeebab63bd792c2d6953b8d98a981706c10af62471ebe76615d702b54244590d9b58a3807138e5958f75beba7fc82d347734e622cb4281c93ef411ec0cfc5beb39c295ef8fa415c5deac919f9239b90fa88a32fff4d7dde3f1afa60f72ec4f7d66161ba5e4d3525ba5eed6551d23fc877f92ddf8ed75d32ffe350268d5026ec8d7b19b383eb84ddbaef11b07f9847ced0d56b84a5617f9fafb7e857e2413af4fbe15a478fc810746d5d684ffa5de24c2deba535e1f9d1d5ec336853a38157f6cea6cc8791c714c2dceecc766cda77c25eb202c55f0f77ee78313a880273b6293fe66c8258f48d4dd107079e49c4463bcae1e90be47a621958fba289f709b5c1d99b82b283dffb1a5d26ac6a8b9ba65a0bcc0ee64908c81e9e2c061749bd6c1abfc557d9d2ead6d480eebab73e18fa730e635daf45bc32d0ef75f885698ed3b3ec93aae7d17f79867314e2a31ab0ef73abe75460cee5163900f2d9aac0eae3790a184eddb385c1d94698eedb98c8e3b77f437e07cc296ccecfe322b3928fcff31caea90ff2ced095da3ea8b026f6b269fc97a81e6cfa7c3c0f58dd84382f2d8781e4716cdedbcf1c272cbe9678ac8df03efcdf656ebb36187b3c2fcfc0c6a94b5e1e1cdfd175ef042a6f6aeaf677e7e6ad29f266f6e4c94a377d25507db3928bb43c36d87b1a73dd9ee1ad69c9a180f8835ac7d31007cf2ca0b7eb6e677294bfeb2b7b87bffad32d98a7a50bc70de69b3dc861f49b6bed4f16128dfbdb24caf311f6dcfe29dd969789c0bc48d1c5952878460a2c9eee49b75d68e82a6145ce037eb6441fbbd4749bd88a714dfd87310f0aacc1f38c7d3615145813fec977dccdd76c39df8439ecf340874c599ae884e3aa59ff0e3ffbb1d0d49b4d71a1b9b89cc1bf9fb5c5a782b2c5e64f5286dff85e1fabd5f2fc7bdfc6bde7e605ccc38a57bda7e66278250c2053e6dd7124d9c5bc5aba1cda44a6039ee4f1416d7a9cbb07e9e10738d97e7bed52a2931c4feebf5fffe94e9beb6a757e9b8dfa401ef1d3b9b2cfda9638ef7d4047d612e20ca216b9a5053c2ab4f3703b3bb339eaf9f3872b9e23702eff476dfc47f362bf31aff774872ba2956d1be70c7d656302f34cb1315abe422e09bedfc8e359f8fb576e9cd1df715bb69c4f1acf9fa9f51fb26193bedca9fd9aee4fbba75e4c5ddcc57957fb0fec6ff99aa2033a7b37baa09d3e4afd593f45d60ec7ece03c8e10ced14a74aa9ab3797d3b94603c09710b2f0f22fb7686f96bc0c6d0255f141cb0d73d6b13dfbb61c075b27a4a2197af1f5804f67dbe4f5afcc51d476fae4dd147535776311ee82cf2cadeee310743dfba0eff06fae68b827a3375f120f2d7fd0aac194a3d39ecc8b57aa23b0be8f38ae5b2ef09c42b969f18cb2ba887cf8e3e0376ffc9d1ae878f08f6ffff1c5d26447e846acb6934e9b00c61454c646ae419d8bdf0fb7cdaf664cfc071b329393235f524f25ce0f06a248e5e5c9b52c17c6eed647e840ccb6d05b3629e683adee3885651fe65fccdb87e6ca6232a6bcbde9fe78a1c57ec7d90d323c9754cd79300daa9c8a62edf0ccd813c26862ef7ad60e2bef3cb9fe2a828b36769ce69da1694e3e88f83a3bf9e0fbce9827025428539e752c4bc7d96ea73c27d847f13e67b4ad136cd31ab58ef498e676edfe2e301c60aefcb7ba1e66561bcf6797ddc07b6d2e99d75cbfd4317583f7b73c378602d9b147d36d98beb504bd0e61b3877a2b583708d226fa6f51e4c8c531cac3dbba77e19947ab361dd27d4d6a26d9062f3a1be00fbdc7badc839846391d9c83b578aec43c57db05e4eeebe6c7f82350cf65738e62a78d3752982f1771eac27b9d4cecff9b6d42eb0cf8d10d62edc99da4b324647ab67fa310630ed77a253d0be97bfec40f5adcdc55d85eacd61194f1480ac91cf56c01d602eaad60f6bc68a5869a46ff55498476e532aa1a67bdcdda579c7e5b169dc670d72ad62bcc19e50233b80f88e8443be82a7bd3c769ff30baa6d361ce4643edcbff9779c0c8a230ccadde179e0356b16ac6d6073f40c7de21ada4b32af07510073a09c2de4aff1c1dff2ebb8b87eb953d2b74c4eaa85efb61c53de3f99019deed78fcd205c5034b40fe2f6795274ad782e1d5bc20ed5f66b12e8ed27d6a409fb5ceafb0daed1c0f340bb57fa04d57be1fb3edce31417ad8b731fcba54c07011d0ec62ad55b3b2c9fbc82c7bf8d6ca81a5fa40babf67959ff17e714eadac29a44bcf8e2707481f5aa17f939c6e7e17381db3f29c798bed2ae0755eb1f51ee35f2e915f44a924f908ccdbe6cef5c7d439796c9fe7f2f8deff615d9327bd2eecddc95f692d423eb9973e6cbe2552fcd01c9ec821ed007f1dac0da3c731d0a6275482b40fc1fb88e2ddb22797f65d637c8a3fe1aebdfbd15d8ee67456d56dce78a8f3d9e8b8d8fc534e59b372343738e31a63b3f6795beb9430831f7914397eec77c96557211fac47c64ef18f83e12ccbd11db4e2aacb576f5137f59e57bdae40420bc7b5d8e78311fb0f6ec5c91178cecfa5126d3c43b67ef52ae6ddcff54c7aa974dfd79bf3ea716e5514d8e86a66c2deae5aab3777c2e597ee15dfbeab342f7249745f5c159ea6452cb14938e718d9c4c81acff3e4f9fe694da57f541866707cf646348df1903a053e21ae4e42b7c0e7213dcfb1ee9adf998170e8cf917903bcc9d797afb51f9fd0afc77d537d33ec5f66341ff434ebaf7ba3536bc5e70ff3486f77425a1385fb14e19be413f88c9da1007b3d2fae0dcb5775887365806faacebd742f19d79d95fbb06e25876d57bdff58ab9c8f8cd4fc5df633f17fefbdb98bc2f8ff033099c2be1dfba8b799f19dccbb958d67dcecec2fdf5ef84f2ae5cb70be3b81250fd2e87833aaa2ba7d833dc608fd660817ea1df185ffc660e4c300f2d6a11627ea7bb9c09c32becff82f7297369faa636abc314fe3df503bf9113f24fc11d58543fb078ffcb11e446bf6ee9de3f174770b602f3b0d264c226330e5f94af72dd1b3de5f6dc3ec67107e56f75c316646dfafdb802acad782cabd26eaf19abdfc7a784adaf49b34c8963cf222f9d6d98dba736c79087d7b6f1c43747689b8b77255643aced237f04e3966d710f82b29b6eb9c80e7ccad0aef00cd8f9795ff221de0d8c41e767e1b9746991c93b96ee78ce1ceddbe5ecf06e1b3e74a2456ef6dbb8d732ce9fc46b1b638730ef3d5da399ce68e6fd68157f1d5eceb12cabe571ff162e63e1d89a07dd6ad05b695cab1cb7f3ec60d6684f1abab42dc51f095433b4aace29f42153577faca17b6c129c19fbf5b615cead9ed9cdb04e1f682fb0f18bbca8988d94d6c2cbe259a467051cb019c0dfbbd7ac4b6a9cc639deefecb6e0afcad94b55f20d8e2b960f96e13b599b980c99cb9ab50fa2c07826afecadc061ad9e425814f1531cba1798eb546f33e5e2e80dbc70b9fa650b8d3b1973e66cc6362bca2d2af3b87f2ecaf8a886efc0796ec60130bd95a68033eeab741b5d26ec32bc77864f2eacfe4438b90d2eb6e0b67a2eaeb7bb4cf88b66c0de896bdddef53f24177f3d1b9a023912205ef9ab3fb1280ee66c8a719fa72cbd5de9c68f36ed49ea666815becfca8b3bbe226eb69d2b51f0ac1e8e21e7ddce9588f4dff49865b0fb620eb78d7d48ea628233f74c93bfcc746f8cc2cff9c55df7600ec74f91754e8e466e10e70e13fb7ec037809e967d2b94493b626443eb7b52c4d0fabcc2775d7d9dc69b7e019f0879469b9fe7c83b3e96743de1b545aa7dc5159783f6038a1fdff1a5e5d782c7ac791fd5d8edc66d04f187600e60dc665e15c76a7e1ef21472c8ef02da90f95d06a1789bdc26910debc776c13199011d591a477c6c06ae4479bb8f803c7e84f2ad323671e76aff5d869ae9de1ee672450c81640b8cd9c135396699e34aeb6bb056ee62e74e50edd99639aab26f077e526bb80bf6e902c633cdc765edafc9d7e8662ee48dd423bacdd570f453148e69feaa144d8889c6f9c662db4a5ea17eb4ffa6c5aba189f28b5f6d9ebead927ad3ac4358bd41d8613d9cc711c35b3d318e915d7d93524f26c210042b7d16c7d3486f4525580224ff4498f733726d8af42cfeeab7c68fc5cf4399bc80eb21d60d3b57bab917690ee4578c7d85bfd9e0b72e6b1cf409d61b52297febf0ee4f7128926dc7166264200e4bfc290a07d7883991c1fad2c8cbc61424cf2495f392e74e30ef9d4bf9c886c0de5f81bfc1f8b9628b7ec775c41f7d5367246b8bf2c7c13761fdf36f5d430cdd664d8ea33788151305c5b77bcaadc57b238ba289180f45af7b8758778d8e0eafde1cdedf4a37309fa350149a647c8d9fbbaa3e53b52f0861088bf63716cbfa9ce37e1fe6f5112c5da52f37b5878b367ae79c0edcef8afc233a71df666f8d5183f3f29af18243bd88e3ce6a70638a6f061c6909588d22605b2eaf3eb4970284ab79024b96e7d2cef14863b993957e4a945b5087198ded5ad6a2947e3dce7e92e2eccd803e391ce4ea02bae132fef2225323c2b14056c6132bbe95d8d0455b1be93f9d28d719be7f0ec6d73d76c63884309739300f56cf0e3f368ee7e8ca19e50ae07ddb22d9ca3a174353a02d2bdd7621e8af08cf258328fb7fe77e6c266b538a3b6e9b170e7488a115f766fd1563f93b619a1ddecd8d0fa623436037d93d584fbf0fc708f2e2d93fc5e1e020e5392ae0bd88a3631982b3d932e04eabc40fd28df78c58e15c189173b17af21ef2ed6d6ca0b7817cfc5af5b690fbd2e1e90b909513f612e6785758782fe2c698c33982e7b9f97206fd297fca384199b0f893c6e9c517793a1047dcc11a766b57e2cf6acdd393f9b5dae615a5bea7b6b9fe057902fd25aded4cd8ff5add59ee0f99e6f4b4c1ed37f9279aef4b72b432599e617404d2b6c27c3c754db58e439eeed70bcb746a51cf2379de18dff1eca0a4f35fe39a977485de0f2d8a0e2d7e798cfd1537e89bb813f728fac7d098c4e7ccc7fd65e24a97098b722243231ea929741f177407db13afffa47e666d0cb0c1de2bdf9be4fe85c742dd09f4fb9fece792878ffbb9e6bc7f73783ab403eef8dfe1e73a8430eeb9f44740c734faa5a8ebd9bc8d2eefc897b5ff67f9a41ce8671347dedeee2967b3277956079fd16ac4bdacf4093cb362ef3c58947d9db01e7cf73be603b6a34188eab928075355fcb5a02c90de856772dc97719bdc26a12810dfe0ef497c94783b98bdb5615847937f99faec37b609fa05d8f53c93836396116219ecc672fa260a0ee4743328ef6cf5e4044bbb89db876a2bcc1968635b1a47ac34d9b3f86bbfb5bf8a7d3b8b827a837b8c1fb90ea51e2c96447c65108bef9cedc027563c11e373b1f5a04f4ead6b51446f2e2e0f52bf0de235da9bbc7a1305a56745d9bafdd8303b4c179c8c50fd5a512ab1847dbeb8c0c63328d745dc4952f28e5d6bff04c4ac720793a2a395aeecac39e359c1cc5df15c64f2f2397d5f71bc17078475c6c762de87f5dd67491b79353228f5e4f0fec19cbfb82aef9570d4f7c62ac97b1179fa82ec4de6646a2ad0834784c980dc3a405f26bc227b07e52b9c10663ac3d53a3a902bf01d609de7fba2cb5dd62b6145ccdea4fa305f10e1b71146d286b94f1cf2c3cd991d38e799ba08738a2c9eee81ff7778cfb3621cb01da84743f34f284f297dc7660df1ac15d8e8fa365d4c5dfa02e7788489f5cfce9cb9d9bcfab5d2ccfe78c32c11f73c777034f516b70fd8ed070be66dc80747537c9385fb1eb66d85add331cb6c1c7de69a3cdda54d27ab37730dcd0c205f39ef9d1d383e6a5f827327910675f421ff136c9f7f13c125a8375333492bc546c3be6cc1f9c761999ea1f50991a74987bfee4d5d02737ceeb2a62c946b10f753dd03b9e7502f6eb2afecdb01cee97a0eec86eb41e4415b516ea2a9415c36380fc13132033fb27bb3787eb99bc326eb4ab9c1dc869e02ced51de4038def75a837e07b47f158718c6f07b26f85ca1eea92e1b28bfc3f989ae3436e1ae1989de1be609cea6c05cb0e3eea58ee87939fc05e106fb3aba1a9dec7dc71fef575fe037d9d9c7a99c15c192c2f78f3721a472fa731c5dd6cb06f22589be8e604a5bce091d5734e2d9edf82fbc6a14c9964c9d73ab4a8cb218fedbbc01abe559807fc0c58ced54e72417d687fa95a7fefe07857d0ae9e4aacb4eb6d4ca6bedb46bc446adfc1effa27f356381b6e18c60e256fbdb82676f48f27ce8782a1aba139ff2d780a943bcc325f494d7215d5e9ace0b781b6ba35e188bc6dcdc35835b46b4cdd4431c40afc1aaa5971b8ea8b3fe36c8afba02d8d8b4cca3fcd029a7078faf8b1198413709e9eb7f6c3e671e2c1955c69391c4aeaf3edfcee58ce5460e11b9fa9c4d5b7b8d23c85a4de2c5ceff7722faac6a406d7ff9bda3ce5c51f95fb9df58a6b7bff39675e4ddebf017b72bd947786d60fcda5ff65512f3ba3a7469073924336da98652e76a052e9b38bcbd968ef8f4cf588455dbaf83c1187463b7e8f1ca6b3016797f7cfdcc1dae1f19acafcadf85dd332ce1bf31592d09f96c5af4cd20ae21ab7699ebe1fe70ba99241d1a7775e26c119d30ad5a311a85132fe28d710ca52ccbfc5eccdcd00ce19caf946f7becf99d754ae704727b54150fedf97a38bee7413df9be6d5d5c8a5e1756f69b66bf7a4afa97e54ed1117d948177996006bb3a8360be5fdd9212f9b84871062a6be502c677ceba7b84391570f36b5acc5b54d79ff6846cccd0e26f49a50ce0ed547efee11aea15d619d0e858767d5bbdfc4ed1a688340ddf352f0dd3ec765d2d126798db9c90f31fe11e978f6e22ec0f923a9fdc732136017a39c3d467278159c49e656cfa9f2e162f60c53fc1e94018d5c2f1a7732f25c2fcd7849ec998f4dee3b75dc21c7ec9e266e90ba182f7780e74a4d9959bcba855c53bf076309f75421c681b57f7932b4ebc1ea39bec98173860264e7c88e06f47441b88ed60776ccde0ad46d29865c58eb1a59b0250ab981b076335fd16f6152619f405b29a981ed59fcf5ec50ea76c95f7d9377fcf952b915f2df21063fedcb88431c0a64d627b82ed9010d64c847c518895a65db4e468cf95302ff00d6d138504f304eab95738d915c4adfc31894ecdb3d397bdfe8bab77bb3932da8b755958d14eb017c0fcd75c5b7e6cc2f13d688ba6c4c8dbc38c2f698f69525bdf83b8837ef9e9e81391d4b17f58921205f4bb875933e8a3cf405bb763acef56760c81f5cd8db55ba25cf4b502733d155bd16fb49fff89576254c5dccd62cca5181f3640674a468dcd78a75ddf7d82753cfeb50f85eed7ae95f1c5dded5e671d6cd579b3805a5f6a7fa91423676ffb602726ee48fda9cb12daa8ff05137f235e102b0028e5a698e07f6cc38900f2b9d41b5f5d97ecf0e7c02f98067bbb876ffc90cd58335f247ef7770d2781f4ddea7a69bc19bf1d57f4dde6153ded9865ce6c4db98127f88acfb662cb2bf27dff89c6fdfc6d4e84712ffb86fdb435efdfc78d6dbd6fb0a994417d75cfe8c0373eb539932a36898976cf7d41b265fe0da16874459ae41bbc3f56ad62a3c83995affe6e8d97a35b53eca652ec9e7e23ac4b0c25dd7e2f05ada8f227ff4d7887bd4b7748658cfc9b4df630dffd665d3747e81b1a53983f6a2a0dc60cc72ce60fd9d205d0aebdd253aed5eec1ac8c238c77ae413a656b90ef3f30bcefbdaf56656eba24a3d310eb07e12e6de1214dfde643a258999d9513fb07a126768f2ee9d1d24fba48e3ba5f4cd7beb681c32a44db955582bec7a3b8b9c3255466f3f810e5969ce09624843a5219e5a1cc73b39f2e91a46eba2bc8fdb3c8bd5a98b623e24beef39811f1aba72b637fd2f8bf72f4640436c82d393f60eaf2e4ddd2312b93c0e4cd2e2af92c2fa4df82fd447184f7d41e7c25efc8e50de011b6bbe84b52436d3cd6037e547d9df936f08c47ecad2def4eb728632ac117bd16a5dc2ebbd92b7c7cff39ca81d725e38e9ec44653ef784dba2728f427f45fd7934ce5fe982876ba50fbac4fcb1fec736d1c44df688388af764d73a4a6deb76519ded3a77da0dfb9ed66972022e5a69dcc981f58f6532b5cbbefa9c15701bf0fdac36d2cbcf8e78aea49e58aecea389cedb91ce8a3f14debfc57dc06b9cb51cd7167bbf82f3b9559dc22db4af2eb0e64c66b3fd9cb2f4a5d5fec7651c9bab65d012276f9ead5059acf43dcc2199b02f3d5997fc2e98004be35ee631b604be63b184d892f6b92f19d7b406738c38d2e1df4a7c65157ba6836f91796db4695bce336e837d335ead2ef652cd21f4df25df86b83df4b7cb38cc26f957ce2563fbaf9cbb77fdf7c9b93b67a6ff3a5957c993f4b76376d72413599413017b69167051cbd86da3ef15611c8f696c21c7e183f17998bc1a18ba7ac0b87c909f368753fa1b72d4b9fcb88033f14a233db0ffdbec370bccb57eac8acdb692fd16cf6d4ced42afa9c1b618e783633bef131661eed7bcba7d1f8afbcfb9ea56f997b29806bab2384ad57afb8be30c500ee7e30adfb5feeec4fe0fe0dc0e7d4ffa245b27947f32a8e54f7104f3c67f637c40a54cad4f20bfcfdfc6bdf05bf8135ae8819a1c2ff255674517d6ceecfe8edb4aeb7f990b82b642f5600ddf80bedee3b881ba1cb54f9df811cfbb0bf37975796fdf2ee7d5e2c5fdd80cde56786d35aaa47f5fec403d4a3d929e86f2de0a643fe3e24b70f4e8f771a89c173cfd6568577fd953a295d60fdf599f9eb2f47e1aded763ad63c1b1fec1f7123e062dc635b0a83ec2b002dd7e1b9c3e84b6f60583f377dc12fe8e365870a00fcce07a76c8ed4f918d73f2eeda442d6d89e25c04d0fe82be53fb1ed76429fe31f88b7167cddc6adfc57bf80df525fef63a1d48a626b9f6793e3803cba5b5231ada15317ebd3206bde0550fc8d4d8bfd9c0b708e3981353e3b6a62ea1784c893fa8226fa8f99dd8fd64bbd8bcd02edf19c3ee61b17095aee7d1c362b56a65df12ccdb5d2e4934478ee7684e69feefc4cc5bbcb3e2b9ea39982558ec95762df10656ad939cfd59dd77ce81f57161dcb7cdbc62f7c7ebaf3987ed3e976605ce617adbb9385602c733e235fdacfc9edc97fe9ec75becefe0217376fb6fc96947713d1cdb701f5750c02e227c02ceeb5ac63de2e3f1518dbd7cb529d5b3037987e2651737f9b72a789252596bb0be4d4d78ca5c1dd11afdd3e03bf0f03ec5fcc024b0b90cad1f5abc0a39f3c6a1dc07368ac90e02a9295fbfca4714289e153890ab73ea3bcc72db97165bfb678247409cf8fe4914606d91038627f3cd784eb13c8b23cac36736e69c393bba02f9a84d76d4ec0baaf707b4a9d9d8c053d00eeb38c56562db5c1fc43141afa91c2e068e8b1ae7868c8398fb9a45d89d093bf88fc81d2ee3afc1411c0e4e138e703ffc630efb83f66f3caee49dbf45fd83a9f5438777ddf18273b41be78cf37b0dec11dfd9c2f621dcb02e5b138e74da73f6c4b6ab7eb4c52d97d44081f2a29dcd3f38b7f0ddd4f2d467f3d37c4fbcff60db148a23cb352e6aed5288299feaedc67aba2068713870a711634dd897cb981d5cc65f8c230ef7162e7b6319928e7bfddf26270bc8dd9eb21359e2aaab87489f5f72ba01c8255337657c6d81f9d6abf8beabfb18e728c2fd93f387239d73d9b4ca23b935e35fefc6051a70b70fc55a1f5b27f771ef35f7778855949f6d770eacef17c6c36c09eadec47dd1bd846fd186e7e4f47cfb780dc9b6f8e8bbfdee82c9beb376b1f8346edb3dd83774b5923bade6e5c977c463b59986c7020614c5c2f3fed4a2ef70e0439cc593755b9f1c8bb731299d9d06d950ddef12a76ca7d857277ea1f29857f9ab2b7541e55ce84482176c376f64eccf8cdcfde7bc3e27aeb4c69a7d1575e3d288e96b611f75b0a15a7cb37c7f2b7f65ddb30fcd7bd6af74dd89bc7970347f8bfbdd6c9edbc2fa2630cf9149fd8e8fca33a8db1ed923f97e7f8fbc19e5f84f7367ece764fe4339490fafb9c6f182394b39fb1cc782e6fa3d0e95b312f82fa636db4d363e2db24b889ffd5bc7a33af6d8aeef39bf61c77e3c126bcfadd32adf4de579a9763e3e137c7d87f9c37df44db62abede5ac68fcbe3d3746ef9efb187733ed696670ae8e39aea47dcd7856a2f09e0eceb6f5b9f33e3b5210addcf601ad5f79d8819c19a85ec169dabd98b0bce66ba4ab81f41fdf9fc4f3df3643e8e867ddbdec66ee28facbeff4e7e628b671f921df04ab059616b2e91742e9e386b3d9203dc6d9fd57cb70506ba79cc631f9f8d7848bae394ee5c39eec111cecf9d705574e4feaebc30fea39eb35be98a7f3f9ed8f8be2ef9df77d6228afbdbcf8d63774c5c759f5ea568d09e73fb4f5a2bd48832bfcc60f28f5e2b799ee06f5b33edf224eaafe135e6987bae8fcb386e12c708ba6148b16bcad2cfb6e76d85ea413ed59f8a9aa21ce495de301e8a3b2dddf952b95b57b4c5da2212fe4207d63ab85767b4c595d510bd991a17199407638bcfc904e66c6d639e8605f99ad6a7e673b61389eadfab289619af85f78a1af6957528db5d4df182baf5f4a8aff1b9b3e6f0da9c3bd9fc8e045b7d811c599db03f8df3ba3134f997d9437cfb33ac16843ce43c531bf5bbd6c4a8bcb09a1d094ff2736bfc09df357629ba09e3f84f9fe191be7cdcf7d326c7f6def371bd9b276d87059217aeab0a926785b267f4505d8d7fb41c1794c8d0fab7a4ce8538f247adb863ef5ca82611698b21e4f07c563fa07cf305f99ac7253c2c43e195ab131d7949de7dee7c9dd48d56052f591b3b73de270c5d0a4d7d764af26d1fd72dedfddcf89a78241ed181d327b9ffeff1ab37f9f4aa6abdb7a9a51eb7b123e621876d7a20969cc6e65259db0e1780d628c4bcc2fce85bad1f2984389583a92a7b4b03bffb278352b7d3288f9f1a07313e81c070dac39dabe5fd87f01b8b802696f17b16591b3ae022103eb88419e0b99bc349bea5d114c63582c698837527ff5ccc049a3f889fedc8ed0c7d9278ae7d76666e872b80178fe17c6fe46b270cd4f0adb016707e813f663d60b88bbf7c4d34c568ff6aac551e7f5b87c10954c2a1e868454a7b83f27cbba7c0fabd49cdbfcf79b52ccae381155b0c89bf654f9570c9317f7c7eadf67d4770ce76709caf347967ea3201ebc0e331ba1e7167afe57d0e60aefe41389d0ee3c87d39bc4f996acbb5d253f64eb074b3fa91df3f8e711f5afbe8ab6b4d55c6cd3cd47eb5fd9a01f6af6efa85d86f0907df884df81df68d7eb4c580dc8c172df8b23a8f27cea97e1fdf81f3c9cfd1b984aec1408e809eb4037fe3c07a42fdbf4dc6e439f01b63ac788e8264850ce908f7648b02c62e5a691209f9adfdbf647da05864059753ce1f55d8ff35edbacbdff99ed564a651de609ebfb1322f9275626e44bb504327872769e085ceee2de55560764f7d7e0786892fe638080737c90718b3588ee386699d9ba3a43522a5780d15723a7aa87d7644736b8139c0fff76bf284c8fcf9fbb321e724ef9be87f6bbe8559ecd7e2eda73882750fc0b846c5fb1dc193cce1ceb5635c414d6e29f6ed34b714ffbb5f31466df232b0b12df8301ecfd5c0f35b462b4d91ad9e7a72d8724da342ae66a90fe3c0f11d2edfaef7426e061cbf42ce1c7c3f8fcd39e7ec2dfeaa5a017976b43e5191175bc8cd28cdd7c986f54867bbfc7e6eccb785fc94eb8821d6237f2b56e48154f159ae23e6ea686ab45669df0ec58328282f55cf56b4b382b3cec3df55cd5d79bf2e64a633da7214f32e312dada7fed96119cf09b8bdc5731b8b5fbae3f980980c676f630adc7f5fafd96df45561ad8882b37778d79d2f67eebaa7bccc35858edb11a01a778db6573d2f440b5ce97b21afa78e136c5a6ab7f2325fcee8b4cd82f232d58fc45ac0f47f458e7e175d82ce62f77508b8a75cc78d3eb4d03d877fbacec9e552378c077e6f6b7e626cbc60de5e550e1a5fdaff402f95da8ed5b97b996bb38cf7e0c1fcbf928e532f9b77b59ec723e138c0c67f6907dcc9a6e079ea6c6d39c2e1b9af154f42ffde9faa7b66ba42189abcb334684714f995a18cafd20f780ea94af9078b534f9646935638aba8d15be0f328add97e64eab20ffa94e387699727f90ad640a11fee6755ad87921dd3294771bbd20dbc76c2d1d0a570a5f597566ff013ec37c871ce5d36309f0cfd8db57a0a615144eeeff7f0d050cf14d6ce94a57772adae605e1dc1631c41f10cca3ba29cde41206d807ecebf671c90bedd93bd84ab5ada18cffa24dafaafde3af012a517d01585793d599a7ab3292ee1a83d1afa60f7ce933793f0b76396d937f124575d18a73ece8370caf155533e3dfdba7a22ef45a666d06b6a70c66ac29fd376cddfb66b0ab5e75363e869783cda942399905718f20697bfd11643f3ffec7d599b9acad6f00fda171f609b34978a82d04ab7a80c7527d00115d41347fcf5df53131450a076927df639efb9f04947a18655abd63c8c84477c4ae5ba9fed32c6a3f64f9eadf5752ca1de900fd7dbf977e8859f6dfac0e85e7d828217d5f4aba4ccc79bf98098849a8aec27bf309f095c2bc6bd6a2eab47f757a789ed3ae4a3bc8cf6a3bddf4f5e8c43cddc415e5fd1212e9e8bfa167ee3d79d4f36efabfe2d1c197b3fadc4bd157c41cef5ca2774c0856b27c1369901d744b58afe445f5b947f8f64bb29970ff98e2a7852740a3435f31cb1aa2fddab67f488cef2da78962bacb77db8c73d18b5d8de06d74618ce1d5bf01c643323babef87de9586d76dfe6f554e5242ccf417abbf9926dea1f467f7e51a6feafd535682ced9d1a3c38c6abb697e364e9747fe6f42c3f4311c24e00ae7e049a7cacd40e627a2b217ba8eda78950a389a4ef5a8d8fc0bd48f2214c6dc573cdc49cc70ac4634fc2b5302a745d0cb5e41064f28a3c53ab6b03d7198c6cc1d66486de58b5da34c84e3e9a9ce9f3ff565debefa2e77fb79d70238be1a82f86aa2a02d7e82e52fb86fbddfd4374b621599f12d7eaadc0f3186ffb7190aac720ebee59bbe183bad716b8d614f2c0a5d3dd22dfcfec8fcdf311bad62574ad429ef9f373a1f881d01193605bd36f8f9e6bad974a97e2ef69e94ccb3a68f20fb4bd22def8b45cc1b7c36a14b72e5100715d4b4e00d56f1a16bf0d0b1916f20e0e5c1fd7b793fa9ae87eed91b19fa6f2d9577ab2aec492e75c0abb4e867bc3f0722d968e87fbe4907a31ae6208c1d64674a03137a3b00ff3eafc7c7715e31612ff268ee3b0b2d059b4e6a3f07433ceda52cfb9de907dc96decc551d85187783e7d04e2204d627f3bc5bd93f21ad286fcb101b13f3293a24e35470ee3c545de8741c7730dd41b1acf23c69f8ed1380fe9e5c6d2fd7f9fad9ed27405f78006a92cfae9f439fb7ca71ffbeb2e926d3f14f91668eae9efb09dff8adcbf1c4cff9a1359e19edd88ca14bae2a5d4bec58f2f30eec7178c8e942e2c7c81a1954a4cbe9fdeb35d3c6d23faecf4a10eb6f7d310d762c3fbf8ba7d45e9e77c90d4bc7b38ef7339d21fcfc120f90fa477279499364bd7bcf89adac57585ecd3d29dee2af418e7f5ce501dd5a7e2e271cf992e8afd0b3a56ecbb3d38e709b8416469aa0066f1a5ccffbb02f36cf4b6ea5d2783dee50dd551b99e3d493d405932afcb317f3ccfaac1fed51ecbf7685df30159c756acf09912ece19d28e48ff9e50cef4c63cd39a9ce037fcb7d29e3e96371396c3fca0deee753c94988668be9377dd06ca70ccbcf9f8de2de323259977e67584a5728ebebc990d8359f7f6f7e397bf397261cb87fd78646e639ddf572980c83db2e7a16668ff75568e2cbfc0fa5a38c5de4e46d8dd84fcd1deedb25c68112d13e5c071dde69cd7ef98aad9ad0a9565ef1200d6ab6758b97d5b4587fa0af7a3fe99a75e5104d5ca116678f72f41411d5305fde8fb77fe4dc4ecbac2ff837f1bba7c8855eb4a23a75047117e780b862f45bf25047c70cb8e6d91f81649aaa37305fbc1470c8fb0dfe425e07dedb58b8eefdf4f02b7951bfc0e3d84ff2d43bd57e602df8f9486cf6337e8a669c9d770b3d64d51f203d7bb0e3d26d12df2efa8e9d4d2559f4b748aefb1a2c9bd7922e5de3081c6c430c3af611b8faefa0c9eb626c56f742b8ff9d4b8324f904d224f31dd2d30fadc590510fb95505fe4ab7b1ef690dff869cf73661e63956a26b728aea50a4ea61e95addf7559fbb36d0817a8dfd0136c5b3903ff078dc5779a385e65844bee445569a9c3ce7ba0f479bc8d6922398431c616aa0f074dd14ef692e016de974635f4b844f9c4ff3904cf4f45e7ebf9cc3eae8ed3a4f817325bd1ef988b5ba9faf15271eb9cbfcf9709f278ca739dff4b22bf1eb72cf99d693db3fc10348ed907a8ee3fb0acacbc368393212b0aef19eb24cb37add7c4a9353f9fe760d6b84efa49735ca405cdfe9fdf50288831b78a7ea3693788df2c8b564f3e60acfe4cef2e9c02af9fd3239a747508bcebcff87f50cf8f5daff596eb73ee84c5c51d92f2c9ebd6d746ce82153b3cd37fb82aa3647bb3a16cbbfeec185edc75bf365c0f97ce92a81851107d2427c67e4f426ffca5822cf90faf5fff369fc6e9f0685ef3fd5a741d6f7e77c1ad43f37586ac9018c8cc45ffdf9b9a08ce66bc99a134bd7ee6bc03877d76f00245ba03a899dca02e493d5f8f1aa1f609c5663f8babc337597cef5603bdde397cf756b2481640b6fbcd8f5bbf112281e81db53a07446377eac4580e33a7e00d7c8c64a9fea88075da3b4c8dc2d9deb06f2cde2f7d27915cfaae00ce95090f5657d20dcdd37a65fff14bb37bd57fff7ecdef45edcb37b53db0cc75efc8ccd8eea7c8605f5cdb6f80025a6f888eefcd77403eedc53cf3550dcccfbb37adb63327abe6e484b706c2989b91cf50ecb19f6c9f1f441da977de90a7fb5c8d3ac2de742ec8aad369800f711433dd079307ca886d2d37d329fd593fbdff93ab279f65370583aa610dcf64fc11febf2d7bdd7b18ad8dd67cfb382ffc81e42d6c3da291fd7b75e5ebd597f17a476fae11ea3b154f0ab31b5bf28504732656f24fc05fffded6777bf9fdc17fc0ddcbb360a52750366fd3358f50b7b00b223509adbdda26716725ad81b922fd998f8f8939c3ce92a065272f61354db2181ba60719ef5df7f1fad7989a652bcf7352b03ce23b58f8a7531effd16bc65c683f415fe4d696d52c4844f7e377d5a8f5346af79805679597755f0803f40b75677ecac832f9cfde8c0b5a5a1fcf7676857edcc72fa757b9aef36d2c592fcc6d2482e2d035a22b1e7fe05bfcb47eedf1aecdaec44d4e74df086da1693e138253a726123627d662b223b605cf9524ddd52df6d7e5e4772bfd644eb99b2788df58dcb9b12afc6da0ed73f6ccda3d8ff6a8dba169e43e930e43906e63977e4b23717e765fc5e5fcccb977c448ff6e16cbaebc8ce76cf6ed732dfa3fde479f4e199d88e9ca6503deb29592876fc8e55d8a67f9197501d7abca53a1f956f1fe31f4186eccedf838ef0353b2a814fd917f6c28d256b7cfe9e4cfa88ccf48c2d16ae6d7559b5f760ef6d493feb6d25769b6b037db8dffb90ed6bd8187ffe5eb2af55ecb89e0b56de7d5b3079ae6e07f65cef91776b76524b536f4b0dd7a7b99b8bc33cfb9b63e76738469ed8af5c213faf12dc8b58faeaf91536c6ede3f94c355bb8d08dc30d63df22351cbd4a4f7e6e2fd45495d85c0452cf977756df17a9bd59ba06c63715d2392b192bfd7928258227c572d5773076f133c14adcf89250dd3bca3b60ef495b0e02dbc7bd9a8bc0acdf04ae79f39c3029e726d573012a7d5b195b6f9ed769619b9391041dfb50bb3becd96dd40d18c1e7ccf23b4fe4a84d1d6b13a4f62d101f986f3dbd984f8c6d0e7ab5fc934fa19b2c9d70e7a5721674ee8dc53c2bd6d6e52c5d5384fad96785f6706baba4c92d74d4c3d2dda3be9f95b1064b4dade79154c6984a71cc810f23bf9af7ce9b7db686e7286ecf7da8df729d2e35e5662565dfc197f3072be3d4cfb538771abbfaf5bbc0cfe5689b93ea6c5f9f93ef6b79345767896b51659ff35de439dd6e917f40685152f8bc165097d0eab551eef9c6be52132128cd95fba98adcb1e48afd211097490d44486391ddf957f32a37561226d6d9972e9cbc7f645fbf04a98ce2f3c710ff56ddf7b960a9ae60bfdbab5efc318734bd9ff9922592b89a6d6d1c2c0bd27ec743e082852fc98720ebc9701d816bef8374b13324d6273b3d02cd96424d3efba3c9f66dd6dd0007c4f0bcdf39b9064c6e3933feeb5f15bf8fccca57bc1a0b96966ce6b4bec27c1785a9bc074a7b9d85522d5064ebeb22ff62832fa8b9ce42bb9f82e8d5a51a98819e3276fba4251e70702de43137be784e7783eaf66a61a0affa2b7083635df7408ae17daaf4622ebee7c7e15a8fc4e1d2f94f980e4cffb22479bed492a3efd8d9472e0716bfdf1fcfabd72186f2806b0bfe83b19150e7f0d363297621d45e6557d1cfa02c1b3ed13bb01b87ab2e92613e36561c4831ae5f08f5835495c69b87e312490ce3f1d95e6938ae5328f565157c78c62b88e7c916ee2bd842fef6786c0cbbf6796a439c58f91de386cfce3ba1391fe96b86f5a4f2fa1e59c7e05a930bf5917586e7ceda27be7c564fd94bd8588747f311fe11e72fb132d9df04ab921cf884dde41f80575496fbda3d79cab6f4642ecc5878ee3c901daab2cf5fa591ac2df86fc2a5927cfe9f052bac9b3c91bff41cfe331fac07fd83e81299e39e0f183ee3a56a36de98675fbbc6c1c84cea32cf5e0c3ad61e6c37470f9d8f7d0a1511cab38fdd532c8bb0b16a89e71aeba566c4c1eaa19e10c53a132bf91c3dde57f833532b7137ac9daddb018e71f325f327c0f1ba27a82300671a192bf0786fc47a8e69a0a7a84f019111c339a965b866e6885bf35af977f1419b6b370e5308dbee02ea2bf7e300f2e707be743d786effd6b2a6e2f996b8954527dca3f8c33b7363bd6f01656464630d3455580e10dfdc78aeb9cb6bb6afd898aea9fc2930725e5bbd97fbf394e5b3da3c25dbccafccc3fad18ed43636beedf740bdac4a79f803f1213bdadd7ae4c42ea86bf60b8a271ef5e3508bb0accde46978d4de95bd7e5b3a3c58f36c63551bcabd3ad0576c9f9df5934f0dd5a9b978aeb5abca92e34e3976fd01f8dcb1edfca67515711f7761d464ebf96de745e322eec386fa04abb6d0df84c7afc264303dbf6f093d6f5d8b2e4c06bf0603cacfab7320defb6b7b5a976c90b5b36562047e170d485acfed97e01456ecbad5794a76df07ead4b7eca7a4db8c255c5b3fd82675188a601f74ecd8d7926fbfba3f5ce7bdbe2f622b7e603fb9efa4c9f6d0523fec72becbdb46c78acc51c4e836fa3ff3773876425e0ccd809b9b5eaef182fca15fce2ff9bed46481e307daf99de9d1d764d48363dc4176d1aa3f69e64ba577797666f40c9a33b99ec6d96b5e2f451f91f50dad8fb95db2c59efd2dfc5ebd044a4fd6b5f81c2ad1eeb3c03b99c6c42c5219ca5b3bd4dfa063743fdc63fe37e409d856c8c2a6ff3de739247e1ce21f502e11cd4df01ce300669768cefe7f21c6c1a8ea6b0cbebb23838125813bee9799fa1de3e8b9853f1968aa001c700e52310e6beff6bf4399db4fed75a886899798674f3a26a8ae4d6a6fe19e806be89ed3ddf8f03c94bee86f8d0448c92dd4ec6ca6a927a05d936075896cd13403295c7cbafda4eef310f7813439db22f6c104c9f584d741ecdf4371ba10c4241c197b2febe33562fbea31184dbee95a57f41d2309c8bb1807ad1b934b82dfd98af5b155dacfa934ee9eadb5ff2e5e733b4698da198a055c37fceef6519d87f755ff143ae20ab87a69bdc011bee94331f11d39fb5c903d7526d1c7ac8f6a47cc1dfb08f164eed8429026eb2043f57b8bf1518d9a6b42f32dedd2ffd9fd9beba5666f42e79a04eb5db490cc1d702c119e131d5b1f08919fda1d5d659edd5038d379bb325a7f82fea639310bb6f7953e2acd4bfa60ed222f95cfbe66c73e7b2e1ae34f1ff59b9f1baa0b7bb08bfcad7df4523b6361b0d834ff3615ad4503ec672dbfc5a85fd3c84ac090a9e7db80036c0ef09ca99d5bc3b7a4117e26704448334ce0c2f1cd5b09865a9c786eff47d0496e0debdd0147bdb8927af03579ddfe4cb2f1b505ff8ed07952fb001cf5069c69eb73be64203f5670e3c31ef718932f9e6bdf802d6fbda6e7b6f6d195c2a675a3f1cb70e7e3e0d2eddf725c2ee1a0750e35f5106ac9a569ad21a41bb40ed60dbffbc346e3a3bf692df239edfb25241f95395e1ad69f7d36e0e6a3732e525500b69984238bb98f25fa7483f253c3fc49d0b1f6bea30a903ef0f03748f16fbfb4461e3d29c1c710fdb40bef42037d36e210e265652e8c6f62fc39344490822448ccfd67da84bfa6186c51ae86123a2005ae316f81cb063860ef4989a03f713e8d7c6358e8e605ad2e9d51afccbb519ff803b1bf7cd3876a16a46af78333cec7aa27ebea312cd1b53cae0bf7c428fad1c97bffb68ba6ae9179eee695c5d7f2385d066eea06d2398c57f111d3a0c937de9e90df7254ee51eb93dfc65beb06794859868851eeff38ed9ec32cda8f957ea06f62fd7d239aef5bf3e62a7a899f91bb847cac9e241f7ccd5e879abd196ffb6220453b3ad71bcbdb14c2a3573d9a0fc8c2f6e46bf60974ac9d3e78897c477dc9cf478032903af5a5e4148e26fb12be321fde988114efc116fb792beb906bf0d16c41d7ba49384c3e985cb775e81a28df079ed16cf15a832baa6b47dee3c11d9f1df2d36379bde8d7f763e9bcfef2bed9b328e157d6bd2db52425bd04383e9d3a0c5ac6ba84aeb9cbf7d90acf3e43f749df2409c296de7bd217a132771e1fc0c12ba7c3c1b5f49af869282c95de511fa8a57bc7d23e0cff300995fe0d38502fb7269e6bd25a9519a78fc21eea539f4a51c7b1795ebd011f488da0c1259af0e6c13023f97eddbbb8d90a1b09cfe596e44886f6e133d902771a791d3b0b50bf5e728eca06d10f828fc63cab9f0baedb48e6a5ef2bb8af02d63fcd04c95643c863a68d785aeca1158f217f26f724c79753a0a9eba5640b81287782341142cd3ee94a7e474be73ade42b9f0988423f347d831f6901ffbab6bcb9cc6bd39a11ebb7964be20b563a0b4cd85f41bd4331ba47206f93dba53b4f68ab23940fd6a368cbecd17c2b7a06306fa6a73e0df53a1765618ef79f12a90b75e0fad7764c8e8b06af5ee627c594876b674ec5bcbdd11d0bd19caab25d43f956e1c74cc3d905e769f1de1a06be6ce730d818e33eff48520e3c32ba073a997953d8a037d75898c8eb1f5d2e1ce9c4f0efa60f832512ed1643dec8e07c3bd91b5fdde3b99ca66fb56858fb2a9f34994476dbc401e3027b2f338556f81946cfd55fcfdc7ec1279521c075b6b0e5c630f5cf3231859b7b1cabde337fccc64e72ac60cf744e96d83345c79b3289bdc16709d3753b944e65c2fed61b29e8863a5779ddca6077db0c8eeee21e19e07eeaf3f42baaaefd6e976ea77f4e88dd03db8e7c9e0102d67bdd7063e70004e771b6ad1775ddbfc7ccb1a691baa674be580f755ff1db856c7ef183f678bd722b7bdc40b657f69d7719aec25f652fb10e47c88ca415d21c8ea674869c938c5359682917d5b2ab9cc740a478d3c31fb54bab8e6119165c64e3e57f6c9c197da3d2ad1f69746f89073f956ec8d7f0f50cd2b17ea15936fba7a143e954b146ce3b0866f257a4078c8833270598f2dd5f328e9db40b332e09a751b4d5e4301fb2a978e7c7221ce38e1de5ff3e5f62a7d6d90ff2f9e837cad37b713664bd71280f3d2663b2a8fc1dd3f63031e9aa86e35f69921dc289d17ae21d3a0c78cccb3af259ba503f6a8ae19ff99923d8707072f95cf4bc9cedaf4eaf27b15bd1ac76cae979a9a85aa9904699204827c09f19d67c7c23837d845ae62187e6a9e7d27390111f5694238ffbeeafbee8cc1430dec7dedf24d1fa19acf0776aca5d34d6ccd3e51bbda84e57b9a0179e236403517ac812f5dcf70ff057d8e0efac0bb40fa66de868789f222bccd0276fc95df3136c035dca56309cbc12e9a94d6659c0364f386672067efab9ca68aef9096ae7b90ae7626b3cbb561dc81e7f6e7e12839409dda900c311c4db7ec9d82f703687686f24f06bbc81105de3843cf35777309a481640befabde65bceef19e7b8372fc02f7ccfaa62be17189722b4a6bbb20597ff8e5bdd1f7f9b0cfcc14a45e698f8126efa11ede0aeb51ffbc74bac24c9325e01a0aba8f1d03de9bcd14caa11dfd1bb2f54b46fc3658bc8c959e84f8ee3cb862bedc3c163d8b2a7e4cd6fa653cd0b38972c926ebde6132dbf0d6adfb1d90041b02af24dc8391b57b5ff532ceb333cfb1f6a13bf9a60f7a1c98c5fb503562a02522bc6f9335f7997398dad92255374bd7bebdaf7a229ea72bb3ba3ad8da275a83369761349477cad470873204811dfb5d1ae6b0a036a0b2aed4c257081f8174c473c4a4f14e63feb3e29ea3666cc9df359993de87e2598c9f753e84cf78fae4f3adf8f5e0bb5fc527c2c37974f5166aaa10baa60b1c634ee27ea69e0bf5752142bed34ecdff817d4ec81e467d052694efe305c645647f799ff72e25bca9e60f94f3fbda6c54648d503ea07e919eac63bd624e7e2bdb408679ee42eca5d7441f8589b7257ea2218d8fb7ca76fe151c13d7d76fb571617bf23118993f18f9cf5ca866ce6373bf89dd9fe736ab926cd56687b37ef86effe64ab91f86b1cb313ea7db4b5de6adee1be1d515ef559533a883b91d62c34de423b5f3bfaffafd606bc49ff3eb0c3eb3906ca8833e67fbc3706998039e9d11879a3d0750c661e4110a2bbe7db92cc756e764ed046e879145f87b9b7b529c80917d60e6ff0be2aa230a8f9f8d631f1bcea6ea3f7b64ec22d68a5973ee031bb2fbb54dcfedbd52ba3956faeff9bb9b62ce3b7806ef9ee076ac7d057fcb7e8bdc07879ea3b06abf63655c13964d385c1ef31118e135b33968aabc46b5cb343bcbe7b8ed22b6be1da9fbcbe0524e33d83e4c033ace57ee29ebbf87eb23b2760ed780b181b7aeedb9bb4cfc17c6d997ae89e7a077511f94ba4d1dd3ea600bef889c71ed1a3497a863c5e1c8be8db7284ef30048fd5b7a3f1b7dba98df525b19a1cf5d81f5c58e37eac2567ab23ee8d5f44b6a732274fc54f225cfbab3a96d2db0defeec9ce6d7e714efcdc98927d856ee47dd46990127dc071d78ee71eca716a443e8aec373213d6f6af6ad7adc42ec2e04f10644ab1b680b2873e373cbd7665f90efc3a670a9ebf4bc388937359ccf5d736b8f920b9875197e66dec64a6f077912a3c3e1fa1fedbe0aa84fb37c91fa45c400c77d20fb6289476ae225c8361c5f8cc0f9ee3e6c981c21242704d925aaac814743bf3497ad259740c8c738d07b15bad81e3a47fcb144fbbe344f2b1d699ab76413a0f4f04b7851920f6a38b7b8c641c7e2ca106f7c3b52e5fd128ddb85234304b34dddeec3d80243a7fb857b659f1ed82b952d39e7f4d0fba53bc4f12935c425ddc3e1fab9f161a0efd8f8a671c2e2ded7d77307ffbe0aab12ce70d6d68a2720550f81b4d8dfb1ffe73d7d0b1acd1d2ffa98f576856c999cc08dd5139a70aaeabb823a2f94394a63b7e2f254a331db6c5c04e91fc7f129d67dc235dda1c92e4efd41accc76048e58c82e595de6e7efb359f6aecb76a575ff61d9b719462806477c789dcfc97c1cb8d570716424790c23a9bfdb8aef3613e7c8eaaf4a8c7bcccd38b45cb20524cf38b2182ad12eef41d3e21367d7c4e1c1077db0b84c06bdf67ba631f9e71c9ce5c76ec68d7608bedfa947f7f3289c907cfc56b313e10fe513e4bc33ecffa47b78e81d2a4fb0eb67f3a7721ac5fab79ea2518d7b433d14d93c2a563720721a9109247b154832f24b4ce93968f606e2bfc7fcbfa647b4ae8bb1c9e4e7c8da6a9ae8652eb71f81239c883dbfec3b1e42982e4e7e2a771a7cc7edfe7c96464962e2dbc59d67e21cfe6ab36535c6bc3c32c7d6dc2d1d20f0e852dd97fdc878d86797eb6aa998f89cbb5fd16f205ce9df7c5f6a7116b7c246a2fff93369e01b7fe46c9ae6fad5336a1cb772565be6b95559a665ef1b6b7ba0f1f7cc776d7a0b925bfc425e343936b0fa7bb797065d0ec7b2e90e2fa6f05ecccfcb7d58629f3cddcfa6890743bcd39518f9db9733accfebda26fa5018db5901833cdeec3debefdfb24363bc0e8e872bdb866afb148ffbbaecc4be4fded9b0762e1ebc8a582be67c1899a1bb85325e1ec348eaf8f3e645774951e9de0b79bee92ee073a93d5fc859bcf53e19535787c3c973ac0da3d737ea9cecbd6a80cdad0a9b31673f4df0a27a30506ab115b807c43d3c555ecfa85691234b60d6df846effb0744c88b3b7065ca5be959fa84756fbde7e0237b9bd299b463c25e79ddf135afb1968f6ed4d3becef9c7b1e8742cf98d10d4e408374de4ae0388f9e370b9f1ff3e333340bd97bf8767e243bdcf31534d12926eee5f7f02bc23f89ad1cade5474074d31c7e8866501afa681cb0f503c5b9dbf28dec8dc5051a7b147dacfa47cf8d73dcb63455f06cec0b6ca1bd3c9daed1e7f3eb7caf012e9d49351ea9ac2f7c0167581b21b2eb68622987a249b72134beb0cb153e80925d92636f383276ba13d4a911bd74fbb7da3d298d0fcf07ce51ca6bdbe1debbdd93df09766fb34be42a863e1beccdf97c7f0bc4cbaad1de91227b5a59a7c77857cc59c7bddc87ee333e9d2f9c41d57e8be50bbecfb3558678c04ef107e2e3eb733c132fffd0786d78fe94fd099d73cd07f7362ad98bbf55fc714d3017d8717e773e04f1f396fd7b58be61d7f6840e50f645fe213a58f547fe322e546d4854de0f593f40d62ce73f8813acafb2740fbd567fe23d5f68834eaeb5c60efe19fe7acfaf4b6da8cdeb7ac2067067ae3f4487eedb0c8b5c96afd909eeef8bd0aa75abefbbe4bf146ab682293e0711cd59c9bd80b4f181f8f9638071e8c3c3b5c14f9e6bde964e787a1b1de5313fceb3213f803c93c581be11a70bb1147b2e99d9259acc37d258e975df492c6111c7e775c64aeffa3ef70efa60733f7efe0fc59e576c3d657a426d20e89dc3cfe6dc2b0cd7225f8ecd4be7e7f854e772a4a46ee7c77ba07be4c498737c3db9ec04750bd4cbb8aa73c1df38bca5ea2bc79f7b3935bea6ae8073bdbdaff275f27105c9632a94b9e1b33ee2e3f59841f9cbf92398f7cd692e04373f11e55d3039c0d9efcf23993ad703594b399f641d1cf4c1b06bae2ed1fb7c83e3039befca65bc9eee8d2ca9ceb7aff12f8223e8fe93b3f8821de7217efd25bbce6d1795fcf24df7a12a83b4da7df03eabb9a050ce6ab44168b2e03957b4a7c69c0de6994699a466b7cdf39fdaf34aa0ae44d7cdcfe341b1b4509783cf3a1d064f4b71e1bd92fec0bfbbfd1ee277231bf2be6a8e22cb7f1eb82fb8a631f8033957a47feec65574862fe817c82bccf5e230592f6ed5bcabc9bad71d0f869239bb64e67c42e3fa6b3c9b737e08ef03493e2c1d6b0fd2e4cfec891dbf9c8b45f604d7af8b93acca0ff19e26830dd9f7b3f964856dfbcfec2bcfebaf9cd7f065b282b46b7a1d2b3dc9546afbaafe7e87b6d578fcca97e49fc099fe7e992535cebe74ac9e9308d7f9ae403a3dadd2e9f26f77708f6f0ba1b9580dbe7d0d9c83556f879fdd403de302e9ad3eb87c55aefd6a3e5d6b8c269bbffed47a7e335da734a489a693fcaa2639e9e64bd73dd09274e9b48cc1dce980a34b11bc62ee5f39bfafd84793ff89e51704279bc62038cb7bff6fce13c47dd89de9a194a786ffcfc0e242f3cf36bf55ded3d83a20f67d3e567a7ef12768091e7f856bb0fc499ef677d01586de7375f36765c0a63a538fcf6dfededcdd323e34e94a796d8ee9d64e01ea9d947ce3c5fafccd776fc5d6b5f9bdf7ca4a409aac97ee03b261feec9fe0cdf93a4a7ad4641e6528a773303ce8034fa8dda5daefff00bbc2bd188b67ed0bdcba6c4d7a157feedf6c6fc86b2835f150a0d9e9d231f7e1bf3fbf3d5febefbd376c0f2c8ac7dcb8c2625f1d4e3efd83b63e5a4fb0c5ceb7f1dccd01d5a374f583ae897b7f6b0b60768172fdda97ba9ba0eeb7a27547900d61eea8c252e9a6be269f83555ccdf5108311ce4f1967bdeb64d0bbf07c784ba78beab47eccfa268a254cc1c197e4ec6d446aba8c26f07d69c2c18b7c9d08b78be78d594fe2e485ecfc8e9d71d69dafa1691edf494ea8aeeb4028fe561691b9aee7ad004ded72e6c0732bafd1643de5e831e80c200cc8730bf85ca3be1da05cbfcb0af5b4e2d9d5352bfe9cf5e48f59efda1c7f85c6f9897d059be82deb07faaa3f4438817ba371ed7f0c3c91df10eff7259acc1af5865b38d2a3b79b8061a31c2257d1234b53bb417689787ba8c721a1da55e4fc5e647dd06b8fc5a0f0547ad7e6da47b97e90e9ca01c173a25e56707d4b4d16216c101c120e2c082dd035fb10488bc7c6276b42705eeff37cddeaf3755f021fee054e3e020f7ab77baffa6078b9138f929f97abe81778566f59714fefae7fd64ffc9199b4d758ca71eff1711f840b4313fe8232ec9d7a680c3dbb449379331c2beb0ef435bc2fbd9f0cdd69b867420450fcf763306fa6bded7068b6cb9b42b91ec853b6c02370c407e43c54e773fee9fe09bf111cbb172d3ac9ad625742761673de3be88340aacb79decb58e98913f8cccd7bda0eb8d4ec3818e23aa97fa00e930e1cf5a293f12bba6036595d2273b039e883a853d7057528bf0aefb34bf43e08beb82f54dbf58f9dd5ccb10ec0aed4995aeb077d30ed229fde40afdacdeabf7f655faa91f8f05f09c7aafe913363e6a89c5b8e6b3afc7b55b573d67eff27f8702af9445fb30536e9e9e53cfcdfad9fe734a74937c7758c3b66f7ce187d5fbb9ebdacc99e866b187bcef5e04b8dfa0d9a0be1fdac7d9c257aa6753d33e05c13a88f34dbf86af597ffedfe5a7cff4c24d3b1b4735c82cda5764f1fd4b1d8ba28c9e708f78d853aa3e7da8750e9333dc61704b68d75f24b39fb4cbdffa32f192f06e1bbf77b74f7033d2df722a53d5a7399b65c777a0e9cee86f67829c17f28de80c0a97956aa1d669f424788487f1635d81ae7a0e453ecbffb1d4bf33bf609a8cd30a37598ad54153dc91608cc4af71cf53590ec1340baa82a02d7447e715d0371e89849a836d7fb40efa932aad3c6ec2742325345966e7a17d554ef983f70cf0cf904cfd6954af079663c14eb0d9cee2d747fd398b57cd3c7ead2e0f5907e36835db460ff8f7a4374455fbbb4d5b6b8e29e387282ce9fa9d1846b0119e53a40a4a641097fe79cbec515bb029467e1b8a1630a7e47df957b0f2fbed1deedb417724bde6b79ee19eae55b7ab73d07d34cfcd49a017708cf260e3ac9c9cb7a8d7992953c3f74df50fd2a5c3b8e172f997d36cae5af673cff14d24c08f75bc89711b0df38b5114ff6dc305ebad308a4b6e049d1ce53e438d0366740eedb38b3be17355cbb1b5742bddfe50f495d7b927d0b505ff0a16ce4bd55100c7e788e89fa2bbbb8d7e40fdc4f58de839190a2f392ec53d0b16fa89fcc5cd87c927ac58fdc811f0ec7b7caea54a9cdd875703fe7c9ba45b7c2ef56f23e718f2bcb35328853653ad62d6817c7fec28cd998bbc4d709191d65d476efd48ee724f899acfbaf40924fbc987b8a93a16aed7dc73e87ee74d758bf4069c74bca07dee8ba1ae713a0bc58cbe925bf459ea4423c8bde343b0b5677e26d1bce02b8062f9f5ffe725cac4defad29faa3298a850dc87edf57653e78e72edfe81d46f1d1383fb7f5d99cbf0e84289fb3a99e4e99ae9df2deefb92cd96bea3957bd5f88df55efd1937914082e38a69cde796b53aec3771f56989e205b22fbffafc738e3b3ec139e6c7a4e3746fdec17c910e77910ba25ca47f81bc34f9b63df1fa16bf85e96c7fe6aec3edec380a1819c7da03a4c89bf35c52fef85a1c3fcfd70e6f8b53de5b530f872497b1d8cfc1d623f27e335e15759f6e0daa01fc52d2309245b68afff52bf5fc8febeb50f7e739da9fb38d560372fdfa1fa39b912aa85f86389e38c6a7262235c397261e959cc077f004c8bb9633f494770dfc4859d05a99c61dcb63348473ca7dbfd8df4b68e0f681e4e7c7a598f79213ad90638509fb80afa90ea1525997035568cbdef62bde593f6ca5cfd8ede66fdef0d7dc8983a3ab64c7bcdb98a817ac1f94e72f332d95d88f47cbac5fac4b25ccbf62ac36b10692f3a2a13e7b23aa36b1630413defc03e4c55b9e87987febf0d52f5b2d4f63783ed3553c095ea9b0e700d01b851e96e2d9d29bf77cea81fe3be0cc930108c2eaaf933df457347bd7ca8457d585a2b8ff2a48f352b8bf5f781280b4bb7c7d6b7a8fe9e2e9d2eeea958ae83511be793d3e38ba591b57aa5aab50f86c909a4af8fed594b6e28aef8ce3c54672ee48392de2d41382f1d33616b09daa99d859afdf2c11d0fea5753d4130e3e8363467a3294f35aebb1aaa57e948fd4652dd656e4557eb0f60f74be4cfddf7cddabf6ba9e78ed09a4b393a523ee911c3d188a93522dbfda7a98b347fc52f4b7531c6bd43617cee3c23933b57a81cc1e8504c2f608f1728eeaf0eaf5f80ccdca3cb7569b11d7e829c54c57f4d455bf6c07aac75a9dc719e4438ba2c78976ed22be4a622df4114882ad957c2a7d69e90ca325ae19ccf2ca4a4ddce2ddf7557e9f5bebf022db21b6edc6c108eafe704ef3615807925dc46abafd4b90ca1270a03c8363356b35179935ba1db0f76c79ed6bc97af9807d849dcbef187b202527c47b51cdf1bc8e21b366d6268ef573dcc3b7753f71909abb663b4f754c48638711e81871a04590d7fc2b60d64cbe67cf80d0e3645df2d98d484fd46a9fc1eafa34550c2474be2b5f920fc0514f35defb0fb0cdb0320bb66dc43aed4dcad3951fa82747f139af8708f51d4a7f38fae863f5f330fd2f8fa9259799d34dfdacbd4e61755fd89e6376fd74d226a736db90709c4d06b05f340e25751f2afd14b8d67aa9c4d158522fcb59633f628eaf8bb16768f4b9cd37e66f761e38ef69b935cffeaab15648de5f76bc45b4690ff5ad710acec1c68e3d29da85ab969a64acec9daa1ba052fa164b4d6bffc18b8d9cf5d71e82490fdb221ae189e4f2b3af2d4ebe266fdfd4cbca4ad5bdaff4053fa3702df6a46bc909de678667a258c1fbf68e1c8791afa43d06ab5e0f90d6335910da43757a44ab06cfe8f36ae64911d1e5d1df2744c366d117f2d8c9fc43f50486f11e48f161e9843bc44f95a85dbf4d4d4897b2454eafb939d9b816919beb4068ef6fb3669b1dc6e34440bd4b86f05f03f1bd19a441a90ae95b2167ae8af8c542f6989c9692dde5d6c2c1772fc536459e6dbd47ee7cb91e0c7037912f7911ee8dd1684f437b85738f53dcfb6c2e79bbcab9edefc5e6e07502d46700e2081c8f7f4ff1c7db1a89e71c1eb47dd6f199d4a92130d9e4f8dd44e7193ccecf9dec91912b715d24807a7d4cf763a5cfa977f8601d4dcc0bb1dd10d5b56eb6f5b3f9e39487deab35467b7503573f61db208a8f6c7f878cdda60f537e8ff2fc6af14b8db50a32a86b03d748825517f7be9df16a3ad6d7816aeedecbef6bb60f3885bc7cddfb4e82ed30f07eccefd76ba99d3f33067cf769baa4b17c03d518426333f26e136d427e17e022de47e53a62076279599884644c7ecd2e12c7588c73afce53f289f440a82f75abfa6c64ac3cac1b29b5dfeed001fb05f22d543b354d6eae04f67eaa1e96ee1ee7eb611fd6037c98798fd619500e3f9faa1586e46062679cf52f9e8bfa115e754d3d0125ff7fa66bc926c8fab7a5d35d8359bf03503c1fe429fd1598f537c0510f703fcd7384fb508b228fe8a9c0c5f2b6aec9277fb489bc8e91e0ba60c496a20d912e08f93a48657e2c77718ef0cea0dc8cd9c2ba4db7099211d1fdc1e743f66119d6c8543e6d543bb9e16e437c4276bfe2ecebb1d177e241499d9dafe0462e77272722276ea83ef6963dca0f9aee6f4d67a6b1f92d77a634d67aa9d9eb25a103cdb5aa9aea8a3377756b96eeea98e8f6777af86e8254eddca3fd6064c4a158c8a70de33eeff342f4abb03b419e15527d83e4b613dda3a19e0b9253d07a9838aa1a7fcdc76ca889476813de579b4f5b3333e0a07b1d137b50e2bb7de173d63ffbe902cb435af71cf271385f27ee3d42e1d9a85fe46789f7c6eca166c3ff77e32747fe29db9d7e22fee2f60d3f056744a33bd63e507aff4f1f0ca3f755bed7e27b45b8ea831daf4745f5595c9b09e3d069e99aa87651a35cc6c8bf81640b6f983e9d9628b712fdcd9187d9fecfc80676af3e0eba57b93ede342e4b67b8f568ea729e27c589271d0bbb61b3fed1596ac901cc7a75b99383176c5da02639e54e0ed50638d724d46c03283c7dc32c7a160ab8b7585b8dbe67ee37adf338e3c5f2e1cf799cf58f9e734cf4912906e9220aa50594e18f7e072490377fcefa47cf357e42980419a491d81e49edcc28a67b3489e85c801fcfc2d2d6c29e88fb2d97e0f33167fb11d3e7107d7a241e628d620093c27ed82c8b3fc8cbb22e59dfe201783ec1434af25598796e7f37de927aa38bee193c365f435d56782fa318cb05ed70f32419d2a453a31cd80027ac2b111ae19a3f5839e2b13df3644ae1f8fc3ee30add7b084f489d192cef8c670d31c40df1ae986fe7b52e702d57020b9e7cf836eb1e3db7b77ba3fe3015c985adbd74f0fccd633a1d762c3b64ed6b6f2310fb233b69adfdcfa1cde41ef6a98d1f2cae7b3f3decc2543d84cea21637cf9e4f3dd7b5e1fb126d7f48c76c5a17ae8757f8130cf0801d8cc834713156d2a2e33fae7f63bb937a0946c6394ceda48d2e97d6dc24773163ddc9372ae214a84f48f152762d33671a7dcc05998925a0b617c8df1fd2133ce99a78ae312f68f2b3b5a2d15a0bb8cf7e9fbe72effe726917039f3f493b9ee12ff7f0a22187f119f90bfb95946e061c11ee1dc5b8bf9571e58e3c56bbb325990edba511ddfa56c8f2ad7a0a8a196db0b5327691427622feb213906c01c55bcd7e8f2d669cbde67676da9bb5d1d6c0acdd5e6c98deef9897e35cfb300971bf537bd6ba464243504c916de07c1a1c6703697f20d9b8f72bcd8726bf5ba99c51b8a37e70da82d80238bdd4302cd07a91dd318747f8accd211fa3825331d02c8c4f8fe80e75db729e3786edef045e5b4e0cc96c73f21df5f2a6c4d4de42f86c5baf9b3fce4ba12c0de563c973ae2298f5f74186fede03a5df9f6fa6d19b06f9d6f1a66bc94dd7ec6330b2bafa509e41bc06ae91e0efbb675d837c274c80f312d1f5123bd91ae92e2323f157b51caf9a5c84d70165ecdeee4d51d1b98d53b286d1f555af7c37de423d64b1f3b5e4b4ccd07e0f4ba7fb739c82cc97c4423e27f2c0dbacb97e7d052e8846a07dcef098d41e174a71e2139da2d82bb65b062db4f82b3402c3a32d169ce50f85edb45d9ee5f0283237ea85806049e7bee476dcf698f4067a7ff7379ebc25ecdb7c26b85fb7a1f91d83d8c663d46f0ef9ee1fb79b133f1db669fe185d22f237df5e0a71ef39f9b9a80d0de518e4ffca6b2006faca5c99f3a83b19f439b9de351ba9b0749bfd67792e9b7a59e992b93235fd6a72e3326bfc1de2391b8b746f1d0fc93e553d2b1cf1ea7bb03858824bea39d3cb24351fcf81c76bcdeb85b88abe36d34967e24c045731f87270b59e0db2c3f749ec6f8dbfd4cee3b351ee2aaf6372dbdcc07c2a35ae83979388ce51ef7aeb70052a352838b94182476c2af7628891ed376bf6a19479634fc67197c39345e912fe77d75e5fab9025de57fdd8c7b118ced205f178436c0609d80337403dbe80741de57143b9ffba6623a77ee983e726e710d7512a8fb9b9c69fa87f5c37f53bc61a2cac7d407a84bd9569dca1f11e75fa48769ad3da5dabde75a234d47c24cf4e253901a9f74d1ff44e9341ef3269e8c116742ce4d3b7b53803aeb9f3a5ebe67dd5bb8cd743b121e71a9e83b474adeefbaa779cac1a6af68c8c1808e6193820c5e3f5eabdf9f178a80ecea26325c160174dd6bd863c76c8d7ad188f15d5eba9ce9aea41b13224b605bd69e8df569b01ed1184793aaa89f428ad68c3a979e0da71902e769379ef50aaf7c4e51b7169fec6989d3b74c74e13c99b754744b674968edd196fc3c44bc3c3a2a38a50ee7ba3b18f2aaaa7f61bd6c6e19fa5b3c0f6104a1bdad608f93e98c581be9a88ef039098373bd0571cb99cc830a476c2c6974cd177ec53a874b7c0b5545fb38fb8165c620025da8669720b1d6c370b5641b36fbf884b68a419cc33bb32bdba34d163483b04cf494e28be46b351ac3ca60531ee43ac51da51cfc16ea775b6041cd247a5422b091e1afeb62f8643fa5c5cc44816fd9dc9fa9bee157db77bf43bf60d2c707dd13705e3c563bd32ab7610d263b2dd5fc4e463e5ef957091d7fb7a9c8ae7d03593b966c761fa180d68b4839358592ece379c0b7001d4ad50acd6d2317ffe03e074d01bf36e85267e57d3cb91fe5be06c632c2b134b9385ce4b23afe6d87420df543dc7dcbd1119ba59762e8dc1f18f59c9a752d5f5ca748a27c7f89d5e6bac133bdf0379392c2c364bd7bcf81d931be754937b1a62e4c873384609e73fd5e3e5d9f363ed9bbc9cade7e29518fce2ea39077d04f6de02e3fdc723f96f159f4b390eae294ea1bc27f46e5b1e1a2f261ef5501bc6619ac453e9baf7a4039ff6213fbd28623e8875f09a7ecdd8b438f61dc88faaf69d267ef69bec629cbd4b72b674c2bd9fc86b6c13433846c6eae2ef6a74bff23b8afbecc7c1d64ca64856d07750bf781f2cbaeff3de85db07a91803d5dacdcfabc8b5f9973e189ecc061a41f37302c94efc0d3807db300ed26953ad4f2aa3df80639fa6a9ba5e76e0f356738d1e0ddc9818d70a3fe7cbbbc8ded82063e3df1e8cd32e9d4f6e4bce8a3887e658b126f91af28a86dfb0fde89eef0cc7750b3ab6b9d9b359d53614e35e88922d201b8d681bd83e77e0e3350b1bf27c8b9d16eade9bc96d22bd0f0c6e2f24c2b31aeb5f01a70be5d78ee71a9bea339c7bb2015bd380b28ce75a8c9d98c87be43e8e8bbb7dc7ef58f513f1f3769ae3c48403cdcd19ffe79c576143fada79299e63fe0c25350323b3bacff6d87a92bb8cf645faf9dee1db9426e77206b133a6a1d32539ad3d62c76db4ade47600783eedb49a9e494cecc12d3e8c87605dd28938b91bcfc779d7e54dc4d7b1fd02f14a3b0ed6af9c1ee977730ea8af14d935df387703f25e57c2b202f2bda2787866de55b39dbc395e9e1f7b508b8d793027ef997bcde6e355e71f67af04d63a3eeb0ce24908716dbb1cd56c9eb8a61be1252db6f91a1f69f3e5e90ed1835afc78a535766af7b12cdbba26c5f15b73bcd09d58007e4def67e4a0476140c724760e9d89516f9193eaebcec70968ae70d99ed2a043133a5de1514d724959ee31624f3aa2e79b7b06586920e0bc9d5093b39abd11ebc0f4df963a397d79fc5f2147b4d3cadfc997fe00fc49de4e838c59f819db64cc3fc2a7c81d25cfb7eb05e63c92c03c10b97a01dd6b53ad4fc73e59a99c21f8d79e69b053d5e374e09e4fa1733d3c42d34bfc88abdbb334eb6e1d4487cd25e5d4773b8fb3fedaeff4f7709d880fadfa31a971967a0eede545f32d62211cf56fefabd73390126139b25708ff67f2d61fd9476f251b73d1ea879a7a02d23541f3a440f453accbd7f053abc9b86b6f758942b777d035734564aa6f3896b5c8191f93b341fcc7253d172af5c631cd42f4b9e80f84f855493ec1b5da34798f7aadae985a026cfea614ef7d6d81723681d3457a74a5e7ed05f518d56c6eae2aa5a3052f65c6118fc5bb19a5a9359b03e29d9ea4d33db03e5444271bde237d27583a7840f98c789c2eb62534cb99645e63429f2bfec6f7b4c9ae86ef28b1abb83d940785694657f00514ff2fc37b81ed83c986c85eecb99e964e77ed8f6cf8f78e237754e21b36f7faea97c626390375fb08a1ffa85e0c8a2f6cad3f876cea4ba72bd66d5f3dbebec07cb07fd8bee098bff2bcbf0d3e5beb3c73a6fbb7c67afcbdc6fb7277cc47fd439c18b452dd96ad7dc279342f551e4a68fb86d0803ee7eea2e737d35c9eea5d3e07bdcbbb6327ef1a486bf782c4dd7dbafd04de835c0e9b0bb2ae84b4c604376e24f74b93f8b256bdb07d1e5a7b628bcf1e8fc79b13c7b3e0dff3fe2f2496c76c8e793c8fb3de3a48c3d558e96f4217f25f330eb545041c75bd44b0b304e0ea1170e33570fb82ae817d0069843269b8cb859c43f6720a52fbe26bea1acca2f39b7afcd445613f968283ae049bc96c7a353875961be220c9395763459a752fa827e81d230352b8f25235e6cb50581e00c39a8c66f8dbe92edf47c75e051d2b7b1b0cf7a8171057af257d0c5ad7db1e9f08cf3f5ff38a4f1338f8bc7b70cdd1c7e012bd2b9be887d2bb7ce6b85fae0fd9da7b6064ed8254eee84a48ee5f1fca144427efeffd557f07dc28a27dc469be663032124fb2719d30f5b2d2c5cb6abceaabe33438e9cae432d1403a19f44efa303c870a89b19bef2223ebfde4dda5269ac1dcfddcd75c8157a9be98bebaac985a5a2457efe5a0337d721ea9fffcf53a61fa69bc928f4bd75c8fc5708eeacc3135c2de56fd38c8fa335c07aca80f86eb475b28ee879d1bee71acf427707eab639c43b76f849a7d1c2bfd8f30b5335f53bbf6c8d803294c82d5255a68f205cb74976891ca1db60619ad51eda5f23944f59ed44b757d0bed2a0659f1ce78f572861fcf35519def71a77f08212fed806df5dd39ea4732296a63af5e4ee3ece53496d41bea599ba15c2d31c8bab7300d6b7b055a720bb46bfcb94035fb6c3f4d0476fd701da16bedfd118e8ff299ba5ca8e6ed42bc81acff9de2944f6a3b966a6a53fb13a90fc8d418fa5eaaaf436a38f27e87f77ae9bc44c14da6b889e24bcacf7665c81b3835d990cc01690679f7b684bf63bb8261313911ef22e52b6dbfa15ac1df90dfce319200c2652b966103799824674b545758350329803c84795f45717b3c38917ec726a9855983858fe5926ffa50cd8254ed7ea07d2cfe82ebfb615f4fbcbae353e77af03b6102d4fe0138d6169e512094cf8e9e8f9526072827bfaffa535fb33740b20d6b08f6fec8c27b5d153a27a9eba92d9d2bae27c28c9f8fd3b2ae85764d801626b38545c760e0649f507dad6abdba7cbd644ff41c472c4c501dfc0e702c5aa33efb60cea956e38df37c1d5ff8780db6f6c1affd467191d690a370a9dc1754131ae53a956ae59179915c3a5b4c79bf71f09fe0cf286ec05bf5887c4d83a2de047336f4aecc800bce4bc97e0a67dbee7da82547302fcf49f8e04bc3de62df4136daf63b86e80f8e5761ceea11980d3d17e55334af23972fb14e176ced35d6a5eb74615c1917feffb38c0ffb627d3d02136457a56b8da80e325b4cbf37e4441f897d78ef3b0bfe33f0dc71feec0b3b0e3cdfca19d37bad86a97d42f1e1232b41fd9886e89cf1f7a33be7f17b6174e0e12792d54b7b35c500eaf0740ee582f16b76c178af6cb8b0f11c31b7dbd3bf8bf3176bb8b5486dc9978e8985e27b50bd130138dd4d90f5115dc6df5b0c2d226396f9518956862343f43ac8f758c7d1ec92df130bc51f5cea78995d78f3d4702be8d817e0121bc6221952d85398437d92838bf48c512d33f2371f87b0ad11d72fb08d338af155a2d770a4fff531b236081f54f3e2392ff2e7cd923f129abba16600e27986713dc850fd3069e9d81d2ae3865a9ce89a29065b54eb24af2388eba4aa47e05a49b09d9c3e1459008397d731a4ebab2440f9e1c8f6827346e65a720b8789001c01c9f61fc3eb3ee858a32095c5007fff97adc549902e220fadad7b2e62df7e695d35b911ad2fb99ea00c0350ccff269accd93e8a97c89bf54fc00d68de085c53b684cf669728905ec919a17c99ccefd8dba576edea836107f78f3499fd8bf127a9e70bf05d76901e80ec77a81fe477628fcceb3c42bd19ea16619a9ca12c19109e3ceec0efe49f60d64f303d98a0dcf7a5642781d287b2ec7a99f5cf60f512bd29af99aec9a93eea1f4227dcfbdbc91968ea6da91967cf353663498c3f4bb4c554d85eb96f76519fd577d41772bf6e0bd2471cf9dbe6c85fc79523102fb0f1be99fb4072f7bbb14e72940231af2952aef9a9956055c8119a7afa9cbfe43128ccb8e9d235e03d8067427ba71cf3be7465f9288fb7aad40dbd04a92de1b593f531b56c290d4435d8d4c3653ce88739cd42b14a10a7a7f8fcd264bdd46cb81eb29609962d66f95ddbc335f8542e4578256728ae4a4b4eba66258154d436f7516d87c67aa774bfefc0b53a7ec7f8b9a0f30f8af5235b560d76b5b104bf63c5fe90f6e1e826e1283c07e9a1e035d85e7c9a0c4af03fc07b8671ced87b529c4058a0783617d565c0e3d1f3c7fce2866b13a21cab135dfb58e9dfa02c089c29d231e0735e5e4bbc7f0e522b616ad154f086ae1bf9db2560e76ba9c9e7b9ff2ff7d157ebed22b99fd6fcef433d3a4c175f8303a34f117d85ea0d688f909e2de1ddff3df8c0e2fa6fc409a61efc6fc30b66cc26dc70920cd5e8c1f3a13efac136b7cd6c806baef37aed1aae47d274a6ec394cc91a7e2f5c08de31f235a295ca0ba195fc7505237be56bc9baa84f497c95458d5e3ebe8ffaa2975ef75e466b63c60b2853b07d90fca6bb52bc1bfbdaf51c4af686d1ffa0dedfe77d3f77cd2dbb176c0be80ac0354e9e7341bcd273931bea9535223c80e03c8dcfaee9b8e47b3867b035e2cff99591eba6b5bbca9ee3e3ef7659bcc4beafb41bfb4a3f46efb99328d45ea380f40283f8b774ad3ddc13a1dd84efe6fc63efa78930fde21e964e771f967087c83b0ccf61752acc7790afac0afbd4cffa677fd53f40591ec52e907a3840a9adb98ac3501f1616f4f99ceee339ed920cccc44637e031d4674295d484714abd46b09c817a062dbee94394fbcdfa88f33da1318608f63392f3bfa9c078c1ea2e6c6c35f591c03dcd207c7f712dc87e2d750f9f331a87bd88721b9d0369732ea376969a7d6271a6b80721926b7d47de2c1db0078e45d749cfc62631decdf5afcbb84be8643e378e6fd7d46ece33b7c619e2b79f5a4de7cebc93f7b521b2206bb76164c4c15d7ac88e5987f723e3e63aacdcf137351b4ec9a6304f6561d1494e9e646f1ed22f48dd69bfa3133f30d22b5660d6bf7d3add35841dbcfff9f9ceaa707e791d0bf571dfe62dba37f65571723baaba4065ff4aefb15adf1b44574b75bee7a9dd6165d8aa7ef9404d72dc17c8512ff30e4882543df8caa59aef52972b6ababe910029b9859a9dcd34f504b46b12ac62c667b038119b751c0ce5938ff2cf6af310b9cb9e2d1d73075c53f8ea7e6a3657ce5c3c7ef7d5f930fda9cd856a4e00373420efa0f3fcda1c542f6c9883d84e7e698ea175f6997cc565f1ddfe5dfc0aceaac4e6b5a8e1eeafc284ee77ccd6641f769350a4702af0f4c7bc241fe5752d2bb937d8064d6b79976534c61eb4f9a68fc079e94cf9777e5b93eda8cc86c61f6fad6ce908bb62df7d99a179456e10b5e392ba2ff6289e935adb3b6a07b12b36e7b7f92e0a53790f94aafdae5ca7dcce6d96b4a704b279b1f5d60b1b5d33dc28fea1f3b0890d05d2659ffaa86e3bc65f85f3931a6cb2e750ea523b2a5aabdf094fb3c5f4ff55fe1fbdaf30bd86f88073906dc31a1ceb7105f43d56cfcf2a3eed66bb4dcdbe97ebff235c0311f9ca4721d4450f416ac760b489969a2a81593ff15359045244ec4af68d9ba75de70fa7408af7603bdd55efc40f9b17bb4ce8ff02e51f22de82ea946239a73883ac8bec906feb21eaab385658f8517d9dc8bef87956af0c2bf79ead23782cceddbe31f11b7fe983debe7c374a675db7bfe0985b0e4c4cffce5cc7892dfa135b88c65c983ef87e228655ff3c0747cb63e47177a57378f4eeb4f057941f700ca4e09b3ea4faf0d1a46796e75f94edf39d25e929e1a3732dfc46355b3e89edf25c33d1d5cb8acadcaea27fbb575facc16604710faef754f2a172cebfec1bc0f3e63e5bb1b01bd0f188ed84b37efcc97b04b4ed8fed53f8f01eb93690afed93ed57fbbbf79ae3e9633ca4660bf98fc135626f41ba29a669f877241737c28cca4965db5e2163229db2e023b7c6b3d48c0c38ea4fdeef9ea4dec0ac1fe81bb68fe265f57e27878de010ab3f51dbe32fe319f79c31dcb05dfac6e36de8ac50ecccf2d6c07f46ac7da50dcf38710f198b6bb9dfbf88751841d9b1e83dcaf59571e4767a864fca2c25b91cf784c0f20afdae11ff71fecc8df617bf67c361607b0ba584f42f466781f909ae1b17f1f865815bb4376c1b5e111b5c911fcdb75b35e2388afdc3fb62eb5aad05ae6f887fd77b553895ed4e58e644eb2cd5926e1b87ca710fda8b103e94ec5353ecc79f37e2bcfc77f0176a6f2c7244d05e78f693467860b996c08f91b73e502dec98faf8708f3352bbabad8e1bae6f728d834e015314474a7a4437c9a30d74f6197b1c84430537b09cda4ce7c4a76816c6412b01a92afaa369f3b9d0be572df21f86533709855cd6467e634a2b88ed77c7c19382b72f92e158e5e5b333323be4455b049f7f4de6bdcb44d91c9ac6c4711757ce9e116da1b104875a5e4f999793bb58c8b296a60a1eab3bdbac3f23cf6fa5b14d44e7a6f60f86c69762aff2da14353d26a0bdfc1eb245d2bb14ee43cddc91b94e4c3c171fe735330ea445e42a06b58106fa7adf984b51f4082ccbaaff1534b4b89b657bf0df7a2ff3f360e9c37367c2f30dfd779ccbff68e67f38cd64cf96fa426d221b97fa5b3d43630522fba0385162678372efaa143bca959fd1598cf2debe0ff92dc95ebfaeebfd4f2efaaf908b2a3a8cccab2500dc70e8b9565cf44a223678a20fbdf1ee306bbfe5de49d4af09f97e89be54b663368db945b6ec461a406339ff1eb988fa2258b988c2e61f2517fd8f0fff07f3e1ffddd1bf830f23be34f4a56e52a9c3ccf1fb97e36b02a6fe3bf6a9567ebf71ed5df76376987bf8703c0d77bdbcf8a48a1de9ee3da76395f926e7bddc4ef305fec8c6c8b0b06a8b7341b472bc7a3955ecc1542e08b9f8c2c4fff0f68ee4a5ece534de36d34197c12782b3093ca35043b1548737a6171cbfbe00ad9746ce44247d4a5b65187a0ed63ee8a05ada35dcc1feb6c369bceaf2f1b52a07d6659a7b31405598afebcf547d8b757accbdb3a44e06efdd8a9f541e2b3d11d221defdc6fa058ee546b2b466c740b3b3692ac7415a8f23a67ed345c73e96f24038e787f3daaf89e75849b0c1b1f8b4e641e85c0fa8cfc008d5384e974e3701b5f8a1327dd7d563ab7f12cbab2021f5586a720196ff219d8c17be409febe15c95f92ec2f50f2ed192d713b94ea353e0d81b4a779bf0e46364dde991714c3ee7e27752aba39c1bdac82fa99c63757d6d217f76dae56f3c0faaedb40d50cf6e0be77eaf771177de729f3f1a93f0ff74255883799c8214a4c66d17199d70b774adc4c8383c91c547b7711f7fb5c26670150094b546c901ccc576d9059fc903cfe08f97e2d8695b932f73cd4e43d588819688c1ed69985c27a3fe0b82c7adb7e5f1fa86f3c0b1fd1be31c8eacb3bfb826606bcd3cc7da87eee41ba9df0475ac73b0c579a128578fe9134663413eb2de7632ef5f3e95e09bae04977be7c1bb3bb533833c5dda446f59effa63d67b1d77accd477b1f99d7509bfef529f1d66dc93867aadb3ae7c7c8da7c6c8f394dc5b111f669e94e494d1cec2b7a738547d753dc91261acb7c1e79a6747689750e54630fa45858a4ea66e9e2fc711cdf64eefc8e816baa2c508cba5ce8f638de531fbc46c66d780946d1f67dd5db4e9480230bb6e3ef34958550938f8b14d5f7fb07e14ff7fb5b5e1b1cc7c3d3585ec83bde66bbeb64d03b4d94cd29d4646de9c60950a2eccd15923bb882f3ee38675f8b17e2d17fcd8c7dedbaf248ed2d52b3fd9b3ea475d3364c8e074fb6c51f36b62ad050bd831b3e6b92ab4ef22cab78f0364b1a6914aa57a45a672bb58bbaea4a7fcfb5af54e0cfd92bcbc74f2095330bd58589d79e733d78287fae1ec34aea4d21dec6d7078aba1a790eba446c9c386e228f2b40fba0325716d56435cc8f8d24e8d8071c8341ef07a2b92897f1ed7e9ccca1124bd0afe68755e187cf8ececbeb5dc483770e1b1f38e2251c2533bf13567ddb6c6fb6663986ce3d688a2f28f9eed7be245e42dcbb97e86021d1652b31534328d3b072e86457b31d603d3803ae09756ac6dec881797bcc4e15ee035e1ed67f29ece36a0ccdd3b84e6970217fefeec5e9e4b17d5beb1c6aea81eab534cee5ff16acd95cba5f82f7ba1e7bd402734e7cd17f2ddc311eea9026f85298798e887bbc287578b3fcb035a611c91facced77ffd51b317d57909ab3736f85cf27a518e7844798463a577716df16e0cf112e7d39c82912de47641a2f7be2949e97dc8477525c6efcd702d495ddb441f0fec21f7c90c0ed17276f8d9b08fdd12db812ea13ba5350c9b6c1c7e8566d4e368d5e3deade9329768eea8c252e91e7c29b84e72fb4af3da1d2909891cb7776d8eec65b7d85e0bdc66f666f1633625f908cf81c91bdb4258b3bc6886fa49cadb20558f044e1c3ec7da8d7871ac35dc827a7102d2e4446b8973e803374e19ea852827efbefdc24779aaab4b3451db63adb1ac8a7ac0923b87f2119330237ecb59b42fef179c0354531ebeb7c1f5c5b3fe5e1f3cba8f9c4e417cfef996f1f7c2de957bb60fa7f3881c61f94b5ba8ea29077d28c6a1169d7c4dde4ee63d1ead6ec275ac23da3cfd2469a30539fd60f7f89c0c4ce313fb4990427cb3f6beb66892c12eb8f717ea6357a103af675d037b3f9d46cbfc1e3c4767f51a9deda5c6ea013aab0cefd1595a83651f08548f857a947d008e98f8db29b60516ff7f4407e5cd83692cea6b1431726a1b7d8530b30c788f3f95385f1f5f7f2a7cfa648e365b32f6e72bc2b531ee143fd7ecc7c2bf6f8003e2d0b90a77c6a1b8b17be0ac4f3ee9e1a82bf01c1278e62fba728826b3cd5e575eabf1df6d777faf2bbbbcd6c997f659d54b1bee58c0d42d78ec6eb171e57ff87e71fd418d77a5c4378c95f728df88eff10d5a9366e99a1f795e981227b4e720b14de7ff7fc4e6c43b57cc3308de14fea87bfc02d295cd0cdf9d5db1469e8f998df9c6f3b4f9b471bc77ef389937f9dfc9738d71c94456a335d207ede3405cc4beccc7e405366f4a57e23da637bd9f95fbf628bf6dbd73555f4e835c7561eaa3c8e5da5f58b627be38a4df137a2d4d5d236b8a836a89f9676d07f5d88bd4be41fad6221bbce2fcf530f33bf665e65a89cf9127098d163e9d6bf2e11ebf879afd120ed5c3d2094fefabded693706f48a32336c6ad2f25bbfbe11eb64b620b333a1c99a0c5ceb848e5ce3d1bf354920ffa28be7db887eb8f19a9f9297463df59c8ae621cc78e2a869a1ce8eb3bb66f451ef8d2e59e3fe4fe33184fa8ddfdef9c73f1a9f40dabddfff13a16ccb37fcf0f00757ba5ff12dcc4efa62b3c34f7d21193f67d5ccef0ac1acf737039379d37b7ae5aa54f0747f748c28d9a052be2378274d2813cc7de20bf27b97fcfe8b5f46eddd51b721f27f663637b729977bcafd85a82d3839ed3e5467f27ca7905ce35c1fd6ffb7b7f6b0a1eaa2521a7459c3b89a369a1ef648de74093252ae700d7fb561fa3692d3d0e0dec35ea21a53b9dd74beeefc140fc0e5c2f8fb185321391054fa126cf492d8edddb4338487045cdf775b2b544407598dc09a405bb8978597de01a1679fc2f807897afa9bb58bad601ccdbef077f3fdd812f75059477d54eb36a63002d913e36068a81433eb7f92efa4079fef209dc5e7e7e4a790c05ce7177bafb10e2f72a8f15deff985fce41c7ca7ca9bbfd585fce68ccafac23c1350fed9111fb5b93d6f3fea60faeb770649cfd34f8eb43531f850f7327e513e9bf297f6624de44ebc6619a6c714fbeeedad7928b47fc2561c7d8879abd006e2c405e4962b5f63f9a7855cb67393212b016bf7b8a9c7c8efa07bf6324c14a1682543d051289af5abd6e3e253a8f257b77fc6b35bcdb1ee179a01a9bf02cbcf9cbebb8939fe1eb58b2f6e11d1e541b5343ef2cfc8cf293e937784ef939e3394f8c8fb7382345de2c5defe17b8369f015bd8363bafa6790d7805ef0e6c57545b7d679aec96bcfb926e83d9bd6a7887e0d27cbf7f2a9bbf5a1c853bfd3473d36ef3cbf6f824f239e1576e54be89a3b5ebc227ba7704d9b6bfc695bd9d209b790de62b9e858e80d796c63ef27e50310ae0b5a4f4349508c20791fd2b2d497707eaf3eea1f3cc7c43c612006fad63a07ea65a5231a681c3c77237f76729ac8f08f447e0896b5da468fde8b226ee453e2c7be18d94498386ae2cd37db319295c9f7795ccb25fa8adc59bbffcfc27b30bcbc35c7cc543fe7b1c4a36da81eddd9776ca8d3a05a92feaa8f7b12771ee76790777d66e12a742dc1975eb68fd0bfc7efd875e677826769049447a3cfd144febca932ada13e4fd523988b819e0a47cfb5051ff2dae7f80fa179c91164fd5b904ee44fb17f085d53d635f580703b41ff0ff455bfb3742c613910bf1b371dc56f7064ffcdd8310ebe64fed435f125d70356af4feef78edcda70efbff00efa7c4a85dd8eca454ff2bc8764fcfa3d7ffe1df41931f70af3e8bc6f0abe4bbd03ead9a21c22237b398d57e1c3f7f657e14ff442f1c7e3f25cd3bef6beb38032e9c497ccd8d76c46367d524e7844e72b3fffe81de5d68bbba79371f853e33b6f1c3cacf4ecc96106e96ad0b1623f35516fa64a4d756e5d1ef421b643cabfa9ad84c92f2375eb9b63838a4fa1bbdde1d318d685ee102d9da98ce4c10778f313f436974bc689b50f355443f8f6615f56cb8119e86b5c532ccf8970a6af63b1a6cf7c49179a4a32e49ba7f059ba80655005d9df719d936852d64f8effd34ffe4feb271aea17c4f4d361cfa2748746c26fd38950ee8626a7f95d9973e6add36df45ee9eefe82cec4ea19635477c742b6db87687571afef3c9f3c5d2f04d5e975a7db20ebc7c83ec3d6f147be15fbd492cb75cf7eccd2334e4facfe4f00750e8e1cd362df8942fafe1aca90e0ece17cdd28d0aeb127619e02e964a8c917f8bd4ff9d65cfc1ee47a22e39b79cc66f4b82dbcfa616ce328965342639c681f3ca8abe837fd3a9116376f151cf21e6cabde3694e27da82d505f14483fa6ce750f200d53c23540b5adf56d4bcc7e150f9e86f764de7b824ebd9e7da93b407acb4dfc4ef3cd80f61a05927c04aeb523b5d04f5017583ae6cfc7e5ad7e1cdcc4ef8664882806ff31d9f009fe679cc3db17e46062fb9e3c617764716ae9885b7d6466de4dfc8e7bb4313acc46dcfb5b8cdba1946c422d923fb32043390c1d81f4b430df3d474c20bebb8a7e7e964ffedbe4fff4b1bc99dadc4fcac4baf28c5fa48673df0b1b08e687e3ad297adbdc6e75192bbdcedbacf7535782d378f598cefd5be0ff94cfa57d5f55db1ccbf3fea8fed5e2c7e19cfb3dbf0e07b6d4ae952c8234d902a9cdc6c7e19d77e2f621ef6462082eb80fa389e406dad3ee8dd4e826f2053ff6b596e780dfa9fb7d7e5bbe03e1ef795fb13dea7b5b79c71ec5b4d7de0ee7354e493d924db34ec6f567d1f92ed1b29aeb8cf1b1e22bafe672be9eb16c626781b480fc3fa67f7be924f2a5eb06c57810b8e91aeaf1b00333d27ba7a4cff589afaf9be11e4b66f2a66c1a722e92aabfbc2166f7c1b8c8726e338edfafd761c7b514886c558ef1a8c707bcf1727f2bb59f9e8b791e36c63c976cd9f5fe59d57adb4df10f3426a12187fd819822825b686e4e7c73533c797e2e0bf6fd98937bccc92dafe6df601b06dd4b11d7857cc4bd6bb37f183f4f6285716f3414e36e219a76a78e72cdbfccad2139ea43b9200904c463f37e9979feeca2d27370b08bbc543efb9a1dfb2b5e2c09139f5bae159ed7dfaef6c29e34c449a1be15b8c7414ad7b57427a8b701e9e17940bdc5a9ac48f792415d6411014257db7cefe1c810abb5132bb6274af7b0bed709936083ea8aecde66ddbd9f9a87d0b192206bd873ed1d3e3d6cdcabd3457d6e8072c9fb6162fcb6e2a5d3bde535ce91cc6f1c9fde6b5906c13dc8c8fcc5dcfd55886a72d3f9ad3370cd93d1413ddc6f41b5763e99afe8fb51bfbb1cbe8170aeda67f46dd663fbb4f26a52b035bb4bfd83f25af4b307733510ef40f6961c77107fd0ac7d20a92b1ff79c8efd6d427d2f848f4f482f3fc23379bdc1737e50aec9417818eded8df782f86657f005540f369ba2b839786f9293275d45a0d9b7376ecdfbfa3b0d7989f09c918c9aaf79857ace257e9aef93fcfeefc1350c83fec697ec9bbf0a0572b7f93cb65a3381e9bd59f4e4cdebcd94fafabd67fa41677a57d39abf8dbdc5d5cbca77e4d5a78afb59313dca713f684da5fd4ed1ffd9f73cb77f1977f0bc4126e33e0fb81650a027a80761e043d9c711a2856b27c1365183ad710e181a3b4f65c142fe4e54e3e09ae7a50f8d18a84612c0f770cd87acd62f78685f7cc9dccd16d60cb8e605c53132bc07b8fdb327e1fb47eb24b4f4bf56034d5e2f87b8fe1dd35f99cc51e9eb8a659b04bda39a82e71a795fa65a0f5f3286e574378dcf8cc264e9843b4e3f1e04f78f624e5c4b5b25cff3fb14d77a3f5a1816b8a61a03a35a2fb68e9d05f0cc8672e639e6012cf0dadf5765f8b07d99f079d5fa98411973ef77ecdbbc63c49e744df01aa26ff4dc70fd1fb67f5597e9b5837a379e3dc7dafb6998cb9795de46d7d0b1b34f5b3ef8928a7acd35f76ae2ef37c078f903e018d3d8df6eb83da7f2fa422b28cf5a1f41aaae7dcdc630c1f553e2a0939cbcacb7e3d7612739a8a4360ab90f13baee374c47ab72a4106cf9b2442ee765107e6ac77312545324d4ccdd9b7a598d25f5b29cc90959dfd927673096687f562bd0575c7d04d16c28638db710af2d11ce01e51a73d06b8d97abf4edb1d0d92c203ec9d99baa8ac035ba966b647e473f31f77edf5c5786c8cdebfbf1fb05cea09cc075e81a19d687081ecfe85d6d8a2bcfef39e2db9e1bc64ba28b8cd3fdcd975e766ff08c733a910c17a97d0b34f914488bfd38cddf6fcc110110dfedca99511d46b205724751ddafb7623d5cf8e035e777310e711f2d885b315c17a6dbcc3de3e6969471b2724f7788e7cd2e78dd4877e5d96a7298a33e214b471603d40f14de8f05a5c1bc7a6971a8a933d2678bae9fe82361129668449c50988fe7432e3c404e4be85d28c6f7dc9cfe21d8f2deafe06ef97e2b71ea2179868545ed8c89bc4c6a3ed918dfe79a1ce31ea9748c6a2d0321f22495e41cd859b0e2dff7d6bb85dffb52af892adea1dedfaed9f5d349f4a6259b7bb593c291d1e5d7c3a231f8a5f34d01ca658aa32a7d3246c73d18895cdf79aeb367dd5ba8a94208c74472eff46236e85a2d3497c820710986e34df71c0ec13974ba9be63aa1b93c78df8e739f965e7e172d9da6ea6691da9017d6fbbd7164f6fbf91b55191fc1fe5f81249f6ab519ff14feb6c1fbc93e2a15ba86f532dafba259dec9e58831a1ab1519887b1f307de8768083eadcc0738772d8ee4d1b1e748d7f874abc6ed55fe5756866fd98fc5d85392f8e9fc27640795f65df0db62d621f6a800392a138fc23b729b48c59f44b372bf414d26904c32f9d2bbc4f909fa2bcc31659ab6d4fe5dea4251c2df898f0d47b54164d82ad5e978f4b3c02df5f57a2f26d507ffeb17e54a57b44ece759b0de459ed3edb6c186957bd11943f9f7f1b5625ec6f4c4e3cacab94dae8927a25c0faeec4ed6deb686e23da8f7cc1af5dea26e8472894afa832be09eacb3de16e9c04af0dd1d1981cf8cc3eb6f3856fa4cbf4c5bd63590f912eaed1c07a3ded977929b97c9ee42443a35d439f7be8bf5b1b715922167c051d7901f525d3a486d78c6a837749094f4f099dfb1e1fc4477bbb2f31d7dc97819bb4602f73b768d33dc6790d4e7fd14ae7b3f3db2ef66780d6286c7d78f40938faea2576180fb2c92badf145ee395cc7ebf25f3a1b517360aaaa79b3bcfb54ce09a37cf0911cdc86d4a783d45bfc61bf3dbc83a977acd8ef2dcc1231debdeef486fe78fbdf721bfd4d463c0d8e7c83e64345682fea679e487a50b12e4d351cdfd27aa81debb4e06784c0cb39a4d61b0d45481c2ee138d8def08b28fa21e59a486d5a8b16f3ce91f6dfdf05d73cbf6a19e4a711c0ec524e898319098def9cd63917e4e95f360e85a0e1fb5ba567267993dd47469c93e01f5015dbc797d37e07437ae54d0b07b6babf5ba76ec5b20a95b302fce94edbb1e34f65dcffbf897edb30cadcbcf19af3d2bddcbf92e5aa4b2186a7646ce9bdde789b92ba4869b4ddeab8d8bf16d64881e7c7e15df9be7407af3e7bf237f27b1072219331fbbc4afcae3a2dac4947e105b2273d62ceff099f1711d9ae2fff577eef71b4678ac94fae44ef2bb06e5cd1193339cdfcb1aafc9bf433d6be1dd5a30b55371ef05741fe7144766b91f39abfb5c91fd2af1b7d3088cec8baf256b740fb3de2e90e273e85c37ba6624ba06e2a0338d422911964affeca7d7ae3ec2f46132efedabb02ff53a853cd1350557126fa03339a1dcfc21c96f54629a57288c537ac7497d4fda8390ee03d5ebc37a05d48f4bf4b5a647f1e72e7c782fb2ae5df7616a6b902e2da4e41be977d6581fb6a80bcdd0a9ac7b5b6a491a2aa83f2dcf6725576153c2b1cafa88cf10eebb3ede4864e83aa17f777024d70921cd227d15393c2597d7cbf0cc7b9752da8b7a00e6ef33ebfb51bfdf853c5b7c47e5b939a47f9466bdf169125953ee2f39e5b254f1fcf33018b2b2556f97d3fb1beb1fc5f7a5f04d415add2893e5f24055860d6a72215a37d1cb71fe6fb0d5bf215f68d31d65f7afe63237fcb789def1d65ba2ed75d9378727ff590eaea1f50c4b7891db8579bc2997d12b6b863c97af33e7eb27f6b94d7dbfc426c3a301ad7663ad77f6dcfe7e2c21f9201a2bf575313042318dbe34fda62be1742e9a0b23bb72e7c4725e8ceb6b6f27df9ad6463f86806ae75c4254e7358c8351ffb074cc18dbdf656487689d0b8d91c7191f71cfc696b15a68db8f59db9e8c33186dbee9c3fd7c2ebc9ce8992e1dd07d1b1d916cffbe2ad5ad24bc36b7639d960eaa4f7946397bcef560a0dece059ee47fbb428d97505b40037dbd6f7b6a3edb8a2d93bd9f71a06fba6754770fc94d287f0ffe8efd09cd6316b61cee3e442e9c696d19c853b06d926397afdddfd2bdafd1d637e25f6d7a0fd701930f6086eace21d9a1fe6c5fd6358847a87f0ba43b8d7cb7f92e57ec5f3cb8e0d89fb3af2d508db1d66747d62e48e50ea9bf46cf0baded599e496c2cbb16f9f1c8ea0f35f9ba4e477ff8acde5ff8b89be97acbb33fec1a7f61eb4366e5f8292843988c4c1971ce8af868680d0adc0fb6bcb65aedbaa2874688eabac9c7400a4bfdcaf5c110d75d5c0bd104d553148e8d770fdbcca18cd338b62325f575e1f597ebfc37dec3de6b38ca73ab6b72e48f79b795aed2fae92de3336789c7473603977fbfd97149adf4f63e04832baab97d672cf4f99470df5e8aa71867daf3fc1ed91baaff7e6f9d644f732d392db3bee0df6a794bf9bafe3f7b7fd6a4b892ac8dc2ff256f57bd5d9280ccd432fb2e12251a810484c6cf8e6d431220a110689518245edbfffd5878680889216b75f7ee73b32fca8a040d317ab83ffeb8fbb858bc95f5da1a3d5f66b7bf311777fba91b8bfbbaf59dfe42fbaedfcff9ffd0dc00ff1ae21fed07f6003dee65bef587cfc7f3272b0fe6ef5666deac874e5ef147f286fe7c8f8f03f6acf82d1fe77f71c9ff1c2ed9bc8f5ddcf09f481fe7476ce70480158a973bef7b5b70bcf484ff24d67bbbc44fea67101cf1869333e7f8939be4a9d37b848d4ecf5ee2627d957988634a62e1278873ac9cd48b6afcb5346e52b8f6f4ecc92e7269beebee060f353c564558f70912a3c5776aae9b1ebc5e70a2b1bd3b98e96d5ff76ae825d34383bdd067e030f213f15471b5da586c89e93463a52e688e543d26b45e390c836b8b1745e9037cf2608c52bf3765f17bef70b4eafb57f6f48a75b7e52d97983c6bcf52f6fefbb9d4df985b4ce583573e47976f70f37afe7db6c4db5a7a0b70a4d200af7fc0a51fe3a2d4f85d21b6c2fe78af625dc6c2f0d3e3068927a11d8d277f3dc17a9d723e5d1bcf051bfa9f791537972923b570acc16ef5e059ff8ba1fe5d0cb5c94f5ccd6193ff1b8ffd237caa9c07c9fceefac2b582d4ef2d901f87a1972c32d7560e263b9dfa5c00f563216eb75c8be3ae7d6850ebb4b83d67ef9d559a182c97f6744f6cf38140f6ff36eb7236e6cd3a4bbfd1ff1fe34badf651b53da9fdf52d267c670eb05d1394b53b5bf2099fe75d9bf16fe29254bf69fcba1ca7b03e2f1ee147e5faace42a7067b03d47f4cc6a7fa2d198d81be93dccb2b3575bb13dcdf943f876b5fc90ffcd769678fce5da71469f8536c9b9d5e4406dd6de039cfa9fb28d9a3e0983e6f3088d36faf0ecc52486776667150781befeba92f89e0758a678fbfd9ea16ba2ed025bbd7a3de5d516d48bc7917a83b6a0f2ff565bec339facacc12f455e9c67f6713be6ccbe2fe5673f318b31c7b3813c6403e13d5e73d43e4f68fd63c13b32f37bef2263fed6ec89797b7f3cc07aeee8fbd0e6efed8e7fb7dd367ca36b96b7fa61abc5ca7643afac2dab451ff904f03412abe07062d6caedf61fb739dbe3ee27e6d5e3720efc60c5c7deb2ccab5a7cbc2a42f0e515c1bf6e73fddd7528b7f615d87fa6c4eb957e3abe422ddacbe4f33f640fde1fd3f3b8a87c792af212882709bd64be05df5f31a4e4ea3075a3611a08c383634fb64e62a23a7f1947fbf5a97fc0d7da86ad79c2cfe5fa0f3144721f60daa9b737d1330cf57e7fdf21cf1ae8e4d4d9e2ece36d40f21842ff7463be0da4f72de16e411e0c5f4952d6b387c0c357ee8e1791e9cd73a7c3d21f53d6801880cd54e7886fde7f0a12310b2cf3aa09f1231cbb196b066257af5847d684b07fef3c1c0bc3c1dd7392d2e7effbf4ba63596301fd7182ae7ecfc4fd27f9540466bbd6076d7b4187fa30fdd6d99a94f2c080b8ced04f8cc35a1f34b68e801eb7e1818cd4ba7a0ff58fe0926d9dafcd07a1d7128d6596f70870ae76c6fbb9efd705fc3a6feb001067c527cd73dbe7a75fa0277e02f28fd4646dd9bf84f32b1dd1fa1b7ff4ddb553d479287f07b7bb956f8d5e503e735baf637c3676f2fbbd55bf8d93e0ec46e0b3973dc639e912daaf848f9f8a788902096ca9a3df33cb7a1c9748f93c102c7dff77ceda7f411e3ff9371be5a99764581ef06beee30cf629b6736ce55cf7af58507d6dd6fec61af2bf89917e3787f79fffddb9faddbfdfc73e9f3ee35f1ce7b21669bd4fc2a0c7fc1ed6fa6cde487dd27a9dba1c9f6c96ff9eb62af2f1e4dafe7681ed2a3dacdf4170117472d9dfd48bfe4deda1c60ee4b16bab37b55cff99f9c5f7fabbdfbbf7911f915ac34f7499473c98fbf29fd84ddfcbb299bc28aa9acd0ff570e1e82b886f64247b897ed3e6d83a1c9f19bd61e8edd8b7e9efda059fb951f1fc56760a797b7c8e859a03bf3d479f39037512fecebc7ee6bf3d97ed7e6eff98d7327e8ef7e5e16fef4bdcdecfc1d0bce2f5befddbeb7d262f0eb338382f76ffcafd6dfd05afedd5dfdf17301e7a897f3679ecfe76bbaabab8bf3d8ed0de7f62ce9d848fd7bfe943237beed8ec85deefd9a8e45d780c800bf29bfbe07236c9d9ffbdddf73fe2f3ea3e8fce71602297c607699b82c6b61bae735d2bea1e5eddf67f7dfc05718922f10b553e1fb547fe56af47cadfd2be7631e2a7ddebc7d6e2ece9fe5bdbbf332cbc9e9bba9259d4be1a2168f9a3daef19be39f87904733b07bd29f263a86777f6f7a8f64ba95cf55dbc6fc5c90bc16e25894520a5d7b13dcc022b48bd88bd06327e179b7a89bfefc4d50f7d79483d57bcf8023ff4e58fee751dffda650b3c32a66e9bbdb2178732de9e7a1e7b76f6db63e5d3f24b9cbbdbe70affa6c6e8aedfad73df1d9f1bb60fa10f5768a73d39d3d839f8c0a8f959d43a64d5afbfe94fa39f9588acc399cc77ed695f67822f93ea93b5b2a7ac63e5e93aa9fd010f9f6526e81a586286cfaf47eda2f331747db03e69c375cc406c3f1903f326f78258e515c0cf78e673a4afebb683f6433f6e0770fdeeb7e39effe9f1736eae2ddb43fc60c0a7061b78bbb4f8c81286e5984e7d2f297d641ddf49edb310dbdf9318c43a2e83f60b411c15d64f5bfe9bf6f5a8bbae1adf48838996cf3bf86d3f11c41e579c34871edffa19d478ea1dbf937e69f97920ceb4eabb7467ac9b67defca675c66adc1e87563bddce3ea9c6a8b37f9ef635b8b3ee9bf97153bf67869e845e9bbe76fbde9a8363932b849a336adf74e78c5ee7d47c415c5ed5fed678cad51ef9e09b18c5a1afecdbe3660bca6b77ddd53948c44be4b565d96bcb4fa8e7cd7393eedac172e6b0756fe41d7d4f67ef45c31d152f94d5fe5241a5fd2badeb6fbe6f3d1f9fcb53148874fbdbdfd17dbd37c7647ceecd2ffd9e8e2c8b5af34bf70375e4d56b9577a11a336fcfbc95395eca7da1165e2fb8bab64aea3bf75488097a7c66c7ed7520d5dfe375765d5b835d5997b7589b411a48554e146ccbf23d9f338bfa777ce6ded913b6d43f8f8b61e142ce58655b9eb55baca3d8d2807068468bd9521f54d7d4f9816762a39f2872761a47834a0e76f3a3bf576734d5077ecd35bac9dd1a60237c5e91fac578ac66f6b1febcd13b351d480e4a7847fd2cfc1dde0f09c2edfea35e1fd2e2ecf4aafca5909fa1cca3bb10d6068a3521283c8e6754c81b08b1dc91ad63fb8e67fd648a8c843f0778be23957ff9f192ae7eadf7c7973fffefcb2cdebefcf9f2f2e365ba4ad6f8d37ffff78f976d740c4fde3ffc43f2333a1c57681d6cd7bf7e6e0f591825c9fad79f3f5374da46fbec67b0ca42efb0fa15fcdcfc3aec8feb7df0d33b4528f819ed8375fe8ff09820fc9268bf39e0ff83f57115a10c7fdc93d751d7fd78c9a2ebfae5cfc1fbdb8f97e410ac5ffeec730c7cfcaf630457730cc7fd1fe6f5ff70ec9265fee45eff1cbcffa3d71bf4d9f741bfe7befc7889b2ff0aa25f2f7f6e56285bff78c90a78d7e7fafcf2e7eb6b8fe57ebc28fbc3cb9f7c8f615ffb3f5ea628dac72f7fb23f5e26f0be5e8f7d7ffff16244c1cb9f2cc3303f5ea4e6a3fd5fff95ae02e6e54fe6c7cb22c08f647ebce84d938728261de833fc2bfef3e0c7d9cb9fef3f5e3e8e5182dba1affd973fd9d7c1e09d79e378e6c7cb34c3df0c7adce08d7d7fffef1f2f937b57b2efd595755ffffbc78bf0fb97dafff55fa7fd295b072f7ffeff991fcc0fe6fff96f3ccbe1fa178c0e1eb0979fc724fd99ec8f3f7d14adf7c79f971542ebe3cf74e5c7abed3a7bf9f1a224e9e1d771b63a86ad05435df179f0c94fcbd5afedfa483e2f0e87f2d36475f4c3973ff727847ebce87859d513057f2dd6abecb027d74a073142ebacba9abcbbfef3739dd69f97ebecd8b91a7fd5b96372084ef87dfff7a5ecc0374b1c9a1bed5ffe3cfe3aad7f74c608da373904f4b06d0fff480e01fc62ae7f65117484fd07fb0e1b2a859756bbedfb779763fbb7f6d97fff780956c7d5cb9f2f33418c3d6ecaaced2152a490f1accb1fca677e0824369b451fefc498ef6f67128b0269048a94bf9fa2e09389027b918c97db085f1794851c161cbf5c49e8e801f0b0087d2e8c3c4e2c5c30bcc935ca679e1107b78abc4f26220e76f3ba924c14084a593c808956f282f1e5c9ebb8e08f8e1dee5ca97fa2897f0eb73881e35be7232cd0fcdea270ec8ff354e85fc7bbd1d9e94daf634e3d7bbd0536f2425f181c5756ff84bf57a261eaed17c8eda96920c7bcb29f1e9ce5a43f15d8bdcbf00363374cadd1345a9a223761c3d497d870725d4c17c231d685f7dc45a3ded7e7fcbcdab93b4be7531d2d16a6c11f1c3628a6bded40dfbb67631f1a93985d0557d150a2e1ce4ff8abcff1c50a1b9e3b2672acc1d9dba3a3d733af4af4fe0716e8cd781390a22c6006c53bb042e4f5e6515d6c22fa78f7b969b1b2878c22438026afec17682dcfcfab44e41c7bbaf31374c163eaf7d4dd4c57ce60945c83f86b19c4eea7184e25a7ef7e1adc3431d8e9a7d21b27e955d941210572ef67ff9f7b47cf455eb238fb519f9b26f3ebf473524cb8d1c5b9aa89731df5a6bb8feb9730f8cb2f943f66027f757a6aeacbf33f6672f5bc21acc999ae4242f9319786412256d74524193903c9b37c81c706cee9ebf3839d70ea6e228d98e9a73298262376924c7aeee7e8b4da4f60dcaabee0cf0474ea6f67025fadf7ffdf7fe2c03baff7c1e1d73f5e5f835ebfc7f5568ccf6d7cf6ed95e9bdff63973d3f04bfb9b73a1879f695797dfd4f9c8d6f837fdfd958b5fac1f1c8bef1dcff9e90ff7b42fe8f9d90df6caee6d4d4e420c5d22d28063dd7522f8e35fda5efb119f3c1071c3ab912df1bef03e4ec87a1c31d351f9be672fe6eb14c5a51db2c362b6c3df7dcbd792a4bfe1c5c3d67c6523f5d172aeb734649af9e32caee781a27f343205c224757324d72592f21e1099a80de9af44f26afe971e645835893e7999228d1580893c01a942911b7e9ba57d325d28d1ea75f3d37f4a36131b3fa87891e670e7143655e4f790d123e75858fcb9884c9377fb75ce829e77128563e3fb2922a475d273281dc3c67a3e7e9cc564eb549484a38f503c149fc68b0c3e6592099a4342694211aa563e99da7c748b38f15047ef0aeeccc495244e85ed3ebca0a4e1b39a7fa1b22cd3e265e4f3904895828f23cf3764c3e9615deb1d57d40cca2260cecf3789ac9ca9b1765bf34cb3dfb51c839b6b275f461ea4543666689855b9a563e7b3cd93aaadfef63534ce2e1d41a2761e8337ccf43d8841c227fbf188c9369e849974320e4a1a63b8926999e63327c201e435b8f9b3994f01c0e20fc75ad97a99d25eabd05e2c7f284efae1bcd3e425bbd1dfbb659d27d56b62babbf75ff89b6ba7a5ee0b606c28094a41ff189262be9ecf32351a3f064f5d46066999e8f98f48b438946d2838633cb48d448a5e641e1673684ba9cdd6858b7c3e54c66d90b4ed88cf525b30864b45c5b6ce471f9b5ea8fb3642e5f1ccc453133f8689598bb4018406acf801bccfd84bfb8b6caaccde9c0b3d4b3274f0eae1ebf39cbbca0e635d48a2c6df743c5e34ff7c5734cb6eccf31b44d26ddd8f55e39e1316dfa336435c9a0f712bde6186a8d6ea9752dd6a57ca44be615e19b632f187f979e35f9c88f25e3047f47787ee7e998dae38a641c82d63e9f27ea7e7ef22cf1a2b5f67748e447d3ae629c4c0bd71219d7a8cbe91c0261c038960f6d5871e6e02b19e07796ef8f33570f9971323dacac3cd674c4c33fdc3e2e4c3d699e6a364bafbfad27c03e83f90a3ed9ee58907519e5785d9c7c0ebdba76fe0e145b3b451bf9124d2cf3a8ec8ef89d8d5c813dd2e781d2db94c14c619ca892326ae41cbc1d73f076fc492b94adb23b444a14ff72f5f67da59c4b711b483f737606a5b4c02ac9bc4ff6aa494666156a18c88b42892e51f95bd4da9f7223bf167579926de4f7dcbd12e5782ea1fcd68a335e95a44ee14a4ac4464ae62628f33e0f5193f28c945152a2bcbccfb44929d0433411546a5ef2742c5db235d792bda77159b6e92b793f002558e28baf048f1196e1eafb469e579fe159a58cce20b45d4699abc7d94a3253970b99af649495257c5e1d3def7b567ef2af0762897d1ecee35ed0c367dea4189cfdc43f4f761f9789c05f83c48f367a9c057a4b8e37eb5d50192843ae2b19a408127256d37354ad313c0e9acd5063ec9e57d67c3b1146fccc8a7fdedf43319400f4b15cb4abe75e0e6db9d8da33f86f7c3ebe064218e2354cef313cf781909f343b8b027b8aca10ae5d20286fae5e85492dae704eeee29e6633d96f9fdd7be5100871f7fa42b39b735d95c01df8ecbceee1f37a2cf54fae10326341953c89efcd39f1e47066e64922f4a34c35f9ec396e2033a9a6e7f5bb7563812034cd86b08c650094a1277a8698b6f58c980e3932a78efdf1ecfd536fdf7eff920ea934a728109ee938e1a9330e04c625e7cce3fb4629eadcb771ac3cf37a01e9af313d38163e5726cfdade77ed76db6d4eccf03c183d92d2712589f85cbbead6e0bab240c7294331e6cf9e6b7cf35cdcc7d867cc93fb746c86cffb68aac8b11657fc4c7fffb43dc7dbf6982777f43be39cdfb4019ff3736b715c598394a034b0079ebdffb3bb466c2e40c128c83c4e0d3d48e3be404ad4deeff4b96b241d5d18f180f8f8c914f9f2828c67f1ac1f3cd3edc7ca9e7e96a1c0a9970423d756d32021fbee595b7ceea62d856b4fff567f74ebe619d740128be077e6440eba735295197d6a1f74e50494c1eea9ecd377497977dc207cdab155e43fbb4f441ddba529b1f3746cbbf34c426152b76716cf65d8cdfc5667cc3090f8e3b377ae7aed71712573e7f5d430908c67e339e88e27e8f30942cfd721eab613ade505f292c5ac9516ef497b83fda233466ee6f5fc676d1dddb495339967ef306fde81f7abc8781cf3ec3d7f75f739a4b996cc28b002d0ef9ebd736e0deebc73817cc93cb912be07197e623e7dc6d2bed7eeea3c330b5356d1d37534ba59ef07e7f9192274c776052532d59d6b0f9f8ef1e2a6ade83a2fd3143cdd23bd3bf7416a4a345959c7a7e3e377db6a4f05af172277d40a337ed6df65f72ca1e4287a7a9e4969776c539f69e402d88dcfee1f4defdc8fd77ef0e958839d6be559a9f39429789ec98bc59d67fdf6182837736e4f5bfbb74c15faec195c77af749fb1b4c4cb5339c075f70bbab674afdabe7e360ec3aefed51907136cf2a77bee465674daf19d0e281dbb6df8e5dae8fa74efdcbcf3b7e7cee9bcab4a47fa74df98377b953fcd13139f85a8eaeb373ae1a1bb663c6e20b8d6f4ec59a6e9d5ed7f7e3e7a77da61905421bfb7ee85455777287e4bdf96dcee7e295c8b3d07c9d3b1b6bb7df6f7e649b706c3dfd057ce37f77e7366adbb6b623fbdac9fe2ab373280f19874f9546fbb79c7a270ace9d3b5a3caf7ee195c9ddf90f5d6cdbde62990d5d0e18edfc8da69779e39c7cad96fec21bd3be60117a2a7eb4214190a770e67e631f8626a5c2fc1e7f53a310e8e1ebf017e29c5fcbac7bcb5f0a6826e43f66b91182748bf330ad895b56861537e01d814b392d573500c594d18e563c948c782ea287bb68be9658180de569673502c230da4b0f07a7e45612329e004d52365b898ad12658740cedf95583c29123ae1f6ae2cf11408c3c4b1505926303c079cc9b9b652966a2b53c04379373e72f7e6d5e1446c1f6e9dc4dc39b67975cb9462e49ad1d697d5b32b9b553ba3003f5be8479a8ef825a7fee54208b85bb896f9eaea61aab5b1ca8c609530decc4c1fe55f7771cb6dbae650a20922a335b827befe42b0c9e1c593e3b2dc5d1efa49c002f6254fd28dcd02c6e7b6b03f3c47ed7973c85c34b209309b115fe2c5e712178e664b16b0698f73b6aedd9aa304fad260cdfc6cc90286e895e3a044233e90d1c5b5f844918cb45e77cbd15be903a0c62c4001d0bc1667b8c7e0e1f9d4f830b325d35cbfa7aeb5f37792ee9ae167767bcdad84108de579e645e8ad79d70241da60b3c1d94bcce9cdb506782c0b38fb968770a2e73d3f414cfdb790037d706505ac4fceab5765f99191905ce315eb051b8bc68b998e4f80c1bac2d4e35447898e88ee5fab4fe6f1642f19fcbeae0fa59e339843dd4994e5078cbdc50d824d7b8e2e1d6cbc0a2d4e214c351171bfd38d9c73e4d9ad7b379d7b11de5790762c99c27ac03a4eabaf72dcc6f92463bbb2206de7c9e1c0dfb0743bf313442dbc1a28ad066732a59fa1c4abc1e783347b7e72ac45ac497d7a5dfc9e0f03cb99c43dfbb1193adcf6d09289523f5d334ffc19c602556c05afa7e0f93c69fa00797bf3e8da2ae87b6ae432e3448c5d213c6944c7ee8471cf3bebc2ef8e55a226065d4affa7ab0f188f6dc2ffbe1248515997da77f5b8557abf337f5167fea05406de43ee922765331eedf3e57b046b333179d8a72386c767972b99c9ca1ae0b32ba47c48ba6bb919de576ae4d69fc709dff3e2235adb939f4662269e04637b0eb8c118eb875ff16ff98f7e3ec49047cfe66b107a9659cef9f4ec25d33010c2df5e279acdbcb6e4d2a8ed9303bcdf9e64c1952defbb1c940430e3ad73075bd3f47c32b3da6730bd075c9dec81d2770b7b598d9c83bb64a2b9bd387bc647a471ef07ac4b94296a4e50c2df32aabf539f1d966997034a1f2578183e67c6651a016c33ba163ab94ca3b3d2bf5729f55c5bbdce2cb2de5c7b5ebd275e596e621259c74f84bc4eb7e9f71643879b22bf3745ee481dccb04c2c539c43e9db5e8d91004ddab11768661e4ecb98376c76a1cf8de958370632e5e7432d79a80fce5eac2287e38fd836aadbde19d7f29d77af85f2cd9279c27dc3fb95b4fd9e2d404a65bbd600f9fb0955ea7bfbd8a7211907d8f73693b9fae0e2273ce3f548aafe47b6c2b76d37cd663eda6d4ad47d355ff79f4df7f5b1dc6bcb774d20fe45ac63b4fcd27ba0a017141673d3f6462f175199b222dde879770e0b17c26c1615367ff31c33310e9a7e73e6a56e14a27102656daf342644307903ef99d5184d8db9918bb5ceb43b3ebdc78a064b73244e16e0ff6a7ef78b41e2f554d1b1a687ae4f17ebaf587fa8712d0e219f2dd7f392c1cf340d9137962c3f9a9b0b11efe340c0fb136c0d2ca743bcbf5d7df0b56406a21ab932f878b1ac92e7f47c2e0349cc48f9defcf13bcdc3c96017c3e5c824bee172ecc7a209f3793b978b7395c2eef11c56e9d6b09c6332d766f09cf467167350e212471c5dd22f8e3ecfb2c6efd62b7d86a08fcd13350a9999354fc732f5bdd5075f3ffebee1bd80bc9974f53e059f598293ace4f9c18f7206db38d5779e0ddf9d343d2f36363cc79de1f52299e04f5e2fd3d65a1acbf3d69ac77316c84c86e575604d71ff43eff3e93d5fd5771b3dafc338bf92aefff2ee5995621ba8bcf7ba92885fe9f9bd83f2bb4b0e7e52717e8f6f52f370cccf8687836d6e839afb25e7be6fe4e3c6ee913d69b3efaf16cbf21d1dadd45b9ce4ce7bd018f19b723d6dec2bcb6cecfcfdce750de745ea03e7251010738fdf82752f38eb40df6519acc3821c25e3c07f5d0e672d1a6db5e8f0d77fe09f36e7f8cbda56c107af08e14ed387d395352dbcdef4ec4278205f6059589eed276524669e302cca32c4650a70c0934e429ca70e67e279881519f66e81f796ab0f87be24ee5692b15d4a68e75a0328936962d9c3e135f7518c771f5076c4d53fa2e61a25fd2a8603af676c3d4b1c2812a494677dced0c8d901a5b4b15ddb27a500406f069f8f2721d0db15394803694becdf51d53ee3a488e81ce8c3a363c75b8f5319c742270558e6fc655da78e33b4a62dc330108687405e5cbea2f773d00b7ae344bc609989cf6a3ff1cf5e75ad3d392f47e873610c960b9dc17dd304b4507473b29d33fc68a10f55a318ce8d98b77463212e84e16c190d87cbe8e3afb939d9eae6e42f65a40e0d062dc7c2d0d6cd85b2644d431183a181d4e1122dd48539d92e59053fef6b3142866ef05f46319c2df07350ace90cfa5a0897edc240863e327565643a86a88a064beed30d76be1c21115fa31b83cfa5688eb03ea288816a8ec29969ceb7cb119aeae662688e10691f8a9bfb3e527b6eaafadc1818ba612e9511af2ba3e96c192f54b81e4db64bc6d99a23642c4746a68c5cd51c0de0fd8b185f3bda1a23513747e8d334f2a1110de7a6a9ce97ec541c7fa4d385a97eea23f1cb1c89c272840c4b1fce8c68f8b564fa47dd1848468cbe168c395d180363bc3d680667a2ee5aebae2f6a2ef17eddfabd21723894acacc9d6c3e773cf84721c2ec7637df0042556e421f21336f57bd3d4e3065721114fae30cc56169b0625efc12f866c99fe8b69aff1bef61fdac75b2de2c1765cdce020951c0f4714872dc4fd71b9c1fba6ab1f51766820e4a7d97294f93b96c65cea32405f5cffdddf1d4f5a91a590e24926b81ab69b1579dee239829c6bdedfd2175792786ddb27f1c9e1b09cc17ac2a8929721919762a02d1b4cc0b59914ef435fca07a52e90d1efd5ec360e6414b4fdcd44d46f2d9bd0e8a1a393f0991ab9c8624bfb4c18a48164625978f61193793be6d2c26b20750ab41b69cbf4cd4bcc7ed03a5b5bf825b6a14fb31d8b9a52004ea249065f7156353d7fab7016179f4f261eeb63309616672f315e15cbe4371d3edcb2a8ce6f988bd34c7fc885ac6cb9444d4cafeaef38410cb6f103892fec25d643b7a117a166bc9764ecfc280fc752cc7bd160e75839e07c63e99db758e62d90d5015947db378dd681ecc5fb469e1fc7fac71f13214ed46874f0776c3a4e06682dcfb1bd777225fee42eb3d4ab5271c94a99fecd48371629a541d6e9885f7304cfc476fbc672532f11334f46e4fd3d255123b118273056a5ee159f2a3d43d39da4697b9cd2f7af2ce7e0e8a8c26dc37142deb3b1d9063fecb5b007116cdc660fa099790cc6f29c9f7c1e99598b433bc85c6bb00fa4ed5b2064bf34cbe0812fc80d768e3d3f2c8b90da6b532f1099b4bdde09de697cdedae2ae84624556592f1a668e9d0ef03e5cd98bb44a5be0174a3a960e7c35d75a99821dcbb8aa8451c327e0c9f5a309bfee31d97c49b8bd549f954a772bf51e3ef8e43fbfe21165230e3cd764df374278b23833a8d2a576b1c4360699326329404ff6cd57adf3c3ff53fc0e7e2c4f3bf780ed72e75aacffb27c073bfaa271eab1d42738fcf2036c178b1d0695ccf0772cb2b83400ceb1aca46b6e8b75c0f958185db465c51b6645ed195e43f185fd28ce1aec05f023fc5dfad55b14eb965e19f34611869a9e9ff13a06d9226cd3af423c976bfccdbbd27ba99c1779c2fbe8781eefddd0934d642f8f5762a3127d744ef8a45002662c4339deb32fe457b0bf1a0c30f38b418ced343f1119afa71a58c6baf6bcfbfdb083cdef1c52ca1bfc2033fb88c0e7b74bd1c666939535083d291fac495fcf6ae4845e31883d6e50726bd914dbe264dee3444dfa957c4d35fa7e988b79ed3309840179cf9ebd918f8b5bfba6b3ce88dc1ccb4acbee28e55de615a85a1bd8063fd3fe0a4d563247cfd3b1ac645e146765494a90a177717c7d7070ec697b6de8a54c92956c15c5557bae335bf55688795b096131960ed94208dfb04d856d60aa04b7b7422c70fbd760f37cbc3a7a7e697042c2c786f80a218fdd2a820e78bb7146ef7d13cb2cce64bef64aebfb3975b602777bb43d387a8e5a1c5a5139b4cee0e53b9ecb702c2bb52fa7e4e2b67c39daf280afab70e4968ee073587737aaf96fdd379695b4e307d0db58cfb6001c58af646ff8bef99c00eed89cbdf83cda467539d01d43f9724c6f02724cbd9632b78d1f9b596eebe87df339ef3c93f2555ca7410b0f1fc5147e4071354077e0d1574cfc15e39a2f83af8f7f5a587783f1c1ebf808b8289e076d9982ff68c66e4f953f0ae4731d47d3ba76535f6b89177cdd9a03ae3af873bef6f5bb201db8abe76f5ec9f9dee8f16bc72ff6dac5d55afd147d881f08f490a9e4a3b763254d185ddabedd108da57e56eeb36add9f67b6f2d38f06a997206655a59dd8f1c538699f6d4ddc48fcea4703e23f6ee283de4ca90ffe0328fbd9e27bc03e3978517e2638458cd713afb578e0c457e15a036edcf6c514e3c4c4faebc9e1cc6286e5e19e9ccff31dfbe64a26f23fc18746c67e5f3db3c15116d4dea27ec76bbfbf5e1ec289dcd65fcde88e1ff3137c1cc257a45665263afe0dbe9a3f349616c8b53fe0dcc5b27e2dc7afca72c8631dea8e3f57a8e6cc5cb2b636c26333e2cda28b0bdface3d2f7c2a28d9ccf09a699bf070960c8ef1b3938957eb85ff0dbdf5eeffdac1e5b9b49bf12a7bab6f2efe036d5b161f5da8ef0b89b97af6894e3756c17f06e679cb0a12f3c79fe93fdd08ca788f7d555134679e90f9367a67f584771a6ef585bebaef5d2477b8b7bc53f834fc2176fe18dc2bc8bbf837fcab1cd2c182d90c3f1c42ed9f188f87b45d69317a3e66c56f0fa3d00f7cc565e95e5a89455d0fe9feb5daa9678e278661f23afb77dbd8373ddb503673b2551d1e8a024ea792d2815be799a99ce2110e8f832c03b472e9e4b617e80333222be1dac3f01ffc31659c7cab1dd86ed38bc0efe897690b5a44471ad9b9a11c89f86470bf2e002be55fc5e984ff005b0a17f0f0fe5eeeaf07f4c222731f46de401ffedf1fbcab21a30c7aa109e086f85c407e173dcb5e77fbf9f505ae2dbf1ee431f3ae38dc7b73a276ef158128b72ff2ca4e310f1b957f6bfe6409463202b780c4e5a69434e96d8fe534ea5cc49a9781ba68c41c3ef2d281d7a1f0861a141dc66794d2d939bbd8df567efca865e14b6ec24673f3f78450efbccd1e3cceb31999f98c957ec673e1762bdf11c5cd3bcdabfa69e97a560e6affa9ec9ac762c59bd5f41f7db573eea963dddb2db9ee90b2d5ce42a06940e69d65806e198b4b10c18cb90e808fa1d9b7cc7ded701f07c2ed3bb5c087cad53cbdb9cb9a71b0442fc8ae52fc84a52ce04f6c45762c078f8119c91d49c2a6f7eb10d273ae25b324c1c1119566ca3851d5e70fb5c6bbec5fabe22f185222f7a5e418fe304d2ccb7cbbff7238d337e29517fbb007b1770dcd0e1a6a50f04dbf07159de76715664e034b5cab88f23e597ab6711a48e9468d9f91e6976e34f5871e6c02fc2b1a63ff48fb5ce624b3c227bc98eb1ad4bf1cc5663c9446379816606b61b46997627f66b0cb603aa79675e3400fbcabbb22732e6f9756689de4464df37f291ff621727e2ef176377d4e52593f58a6d04d0e19338f3e1fff7cca9e29ee18c21f60370f612830f24e3b0e6cc3cb0c4ccbfa6ee18aff3bdb9c36bd3b1725ed3f3c25dfeed7dd1e274b94d7c31e808edf8e2189ef35bdc2cdd4940a65877e532b51617e89b3d55ee1da69161b4bc93e7f83c7edb2c5b71b5786e7857cf8b719991e6118e187cf2d88602df14b67f88dec01644f69bef1bc928fd8ef9bb122919392778a4619b06bf53af4a54cd792f31b2ae3fde358f681c0f66a6c81b462c7e02ee7f658e1393e195eef78592c1f5c89cdbec6266338ba13932f889c8f04afbbb682c999eab0fe64b76bad40d7562993cf11d2f99dc5e329131e297068384a58836c41f5bdf535d57c075e56f1b3d5c6de4cbc1dab16f84ebd9c59de15ef011cf96c360a6abf05989726471c66939e2e5d952c4df4f968c5fbd4b306273a85fc9bbe64815e74686df85f0786a928966f611afef725f89a8e50306bba52ad924b23e67f06e072f5e59c6771cafb0630f9d4b7ecb35e010e3003e34885d1b3036e425d3d4b5a7659c237a733811cba755674e5e69ee607dcdcd3ca73bc79e2245ac7ce2f47d1fd4b38733839daaf338776d967006be120ae7ff648faebe0d27429c793b3671f52dd840ae3ea8e426946c7360dd56b66d9ece961f6fab651e7e71f12fada864d73befa3634ab0e35074f5f0ace9443e2cb00d25a12be1fb134c759ef0ac972c42128b84cec03f12b6e91767663e676c0996fc0e1c264d40bcc389e598d2731222d0e3e421d2e4798a75c98d85f0598875e40ba4d7b306bb95655e9ff227a2e1c1d54137bbb8d85ed52fe14466792a6e0b119cfbe67d79077fb8e231ecda43ca92e1f118949ce89b38be36b7d0442deeac65b4b84ae33de4c5f863f27994087e0c312da46479bc40be8cf5c48f44ddcf13753fc1e74e3a1eb95816de8d19ddc89730109ca494e1bb4050c2d992c5cf461e5e2bc91455f13e7e2f7fafcef716375a32684e44c971609146b0d10dec0be09e0c5050f3b1d0c9bd121e6463f7b5d65dadf76ad7d105af51571fb05ea29e036b102f24f3e23353fc99992d3ff06f45600d54f793f9a5312e1aef55d68b515c71bec752fc740e00d7c5e344b8f2bfb0febb904c28e70463bb23b6caac9ccb6fd67338b36b9f10d68591274f912203ded9fead8d958625372424b2a4f13b3c6bfbcceac679b77c12ad3504251da57e778fe3bf4fae1dcce87defefd8ae7cca9c2573c163f9682ec6d23b3ff93c9e6752fce615d92fcdce60cc3479c27be878b6c1d7831217115c5a8d9cc30ddf4ecf43bc67bcc249346900b8a65fc499a367bf34bdc4a8ef7184f64aa2466131b3278ff67fbab1fa8d3d658db23bfde64b8c32c5f3d4f83c895f6ba533c7af02bd815f4b0faf337be1ad4c261d278bd44d5c0bf027dd494cce38f8458ecaf636bf2d99cbc622cf72ca679578fd1be835f89916f4f9e6999a3c698d1d5ef7eba47a0fe2411f370f27d31c6ecc11bf598c446301392d1ecb433f024e58cd0dc4dfe3fd5ce6df28659d928e25b1b5e75d899c8f15bfbdb39edebaebcb62197a4d9eda63db3f8e97598ac72c108f275bcf11de33cfb860377cca16e778da91a12ea40c26fec1360fd04dd0c9b1f26c6d1f0f20fb3b7e0337310e950fc8257291f11371b7e2d0c965e81c067d0ad3792a474afdd76cf3f7cbf17cbecfdbf778567b0ef0bdf762ef29dc12b79fd8c0e5581a8919baf204ebb44cfb1c1a9231646ece0e12c77e653b782f3923499cc4c3f51692f3b72553d235f7787d767986345f3ef864293e23b63ff2bbeb8aaca9e7fcdcd69eb159c2079711ecb1200199b47797ec336ef588f6ab6837f14b4c3a16d413892f8edf5cce48d42440632a769cf8415bbed60830b3d2d6aaf09587318e56750e0fde370f3811744e99323ea35f9def107723ab6d5e41fdcc7ee6576d90467cc0c1f7d87ead7c964dcca7d0d87ae0a3a1fdf7bdc5c14ff89e228d4e2ec91b82d71ea2fdf04bc938383ae2dbeb31400d4655db6e97b134e25d92dedbc2ba579d73c73e5efcc4e4da7b2f0dc7906ade1dd27b60ce85a19704c8bfa6bf2a7d184adcc5f7d67ddae8cc09cfac2c7760f48683af68948f65fc3c952125a2d3625c9570c57ac8de455a91653eb67bad01538db96ecd5fd796c9537b74e02e596cdfd7f78ea5b6beb52c65c5da82fd84e86bd5c8bd6a829a7a7b37f424142b551ba221b65d76aba25ff205003f49bc1ef873016f71c1b7323d289278aaefdbbd479a9ee336a1f17e1892fc4154dbdafe926a4ef1392c810d6b0ff13c5c7d9694d768f2c5a857bcde343d77618def9fcc4b11673ef47900733abf23e3343d37c17e011d1db8c028885bf219f238d173067af17ecafab026a6d79b18d5fd845796ed736f5deaba548ea962661d11e1f2c23ec032e8d0f253b388d8f5746eafd679756c9f57c6637dfd992c6fd6318bc6723bfec8b29af3e5410e1abe63cf1a55bc46cd09837655985399fb47322f81b425cf2df3ce94f1ed23d71e32ab4fe6528e0bd643dbe3c23c7c1eefed1bdd3790896f6d2119fc8d9e4bc758016face54ba43848a56ea8abadf875a2739a1f4a743c6b42dce16e8ff03d61b94ee9b815e0a6ad96acdbf85c6a7ef715f27d953c3688bdc0732f9318126afeae2d1fa2d5cfea78171b7817c8b7cdd09327fc0a74c830f459f3e4272694df70ad2ab6c0e095e5085f5ffa3ed99326cf29ffaf928ee5294fc548df70b05b3a059c554d39eb8a2f0e72da668d1217eec67ef04d5ce2fc67e34f2cf3c0810ff870f0a2f63d1d3e20c1c0a47ebaa1e204da790317a81caf5297661f62b255ffb11d51c5f4b85608dc607fc7973131f5f30ad8bf89c9dfbc1370be9bf79425ce891e0eb6a310a2994dc60dcb1e90f3c600052cb906e2adf4110f7b08995f73261c2ee3405c08e8ad8e2fc2ef1ab5efd9d84cd6e54dde7bfe0dbe05dc18b38e51194bfca9fa4cc521b25e54add16385b7be96f1b6d0ffaf48657d6941f2cc48cdfbf058553e9e40402d3bd53406c0e15d30e6e88b8379c636169933caa675976c390fcd3e80f545e68bac67bd8abd2a73f195311bb5bfb02a094f6cc7ccd5e39f376d7834afa327e357c962bbf5fcb756db962067c99c97fbb292c1ae80cfa2bc1e73357277d458df19db9237f69996f937e9b136328fcbe3d23e7e0d6426dd609daccd2922d8f4a33c1ca4dd555c52ad03433bab31954ce22736cbf5d71edb7befa4f25b75e335e8389b69350e19f85a6ff675a5c377e57b2be6631b084ee2eae15bedbf24b16119b4657988aaf2f84a9437eb6d99b6f6ea58e233572cc7b5e25dc84c3a9616cfdbb85f9c75349d2d778f78d655c9798263de19ab26c6f5fadd3360adff52501669bdd61cfc521013dd7936598f069f3c8c759294328e1ed609d8f7dd3e527c67c6638705e1ba23ce3599efd655fd7e88c59217bc36baa463718a482c552b574b896728d902cbf8118f7e2366b496d7bf8b0774e33c210e0cb8b955cc97d95bd2bf59c44754c799322ac2df537953e09cfdbb71a8ff549c69895dd2b1a58e3dc536c30eeba9aeb510d64be652bf43e27bae3d6596cdbb886e776b6b57cf7b88a396bf6f6c8e0d7d09c5335dd995ba51d6917d80dd3a9651faed626aec2a9d0eaf75269cd4321c5d8dbd79f2f01e60a7289017c8dfb57f3701fb803d52c70e8e65d0fdc12faa54311989bff57ac3527f76cf7e19ff03f99d3e0f5b923bac6e53dcc6510cb0dfc774fc1fd851a56f4e509b5c51a5ac980bca2fafd8820de1732603f18ee4d957d75e30aeadf04e621ce8b865ad508ef85a28d313e5e4cc011db37d8611bb897cdec8974385eb3bb68a0c3a5e4fcedf29bfe04fabfe8cf7a2987da1b8e10635f3717538fe42fa0725e2d15aaed75f81dfbbb25544db67337d149218d6dbdfeaf86ace44fe48cc56b68bcaeb7fb99679995b791a24264ff3953ab2be8b3576644b1676cf9195e5e0317988df2877e251ff466cecadaff37f3e4ef6be5f10f6ebadcf0ecbe9953d350077b4067b8809b50c2cf3be16ba932c38e310088035330fb15c2a66f64ebcf2ffc69cff7f15738ef5859bd8ad3a870195fbd327febc783a70b81c29d2020592b9835c95123a418940ca8e5604e5574716bd52dfb5e4a1a65f2e958f72650d04f047c9f93b603af6ed39467c90668531b6654111e66e99435ed3f373f3d949ca7713fc9c114f0d7f05afd16e1ceef7fbbedc5fe59ead6d90b7a7f7d471e4908fbaceabf66c2d028ff9e19e65c0e7728717f1f3f93e2ffdf1fbf937beead6f99da8dfe407b89583b06fca73294ebf121e3536497d86f51c5b3dcd2d2875687aa5efc2b548ce5a7cf697f90a5aba74b5362adca7b61b84515ee17115cfa6b6f5689b5942c42eb62b4cd8a8f818adda04b7b1fd43e45a5957276dbfa7c9e55aea9bdb70a2139e11e176c475dc083e6f2107563bbef046d6e0b3fcbe9d5dda80e559afd9475613c4c73a4f74894c29448a5cfd0d71c78dfe220c4bdbf763af44c7b64d10f9db953d017e04895305aedbc5055ec9300de429f224e7a48c16a92b90186ac8f5690de2ceb5a1170d372d8e9df9beadece83207127280a7e79479c4a8fcb872134b342b9494cabba207d60062688d723c66faa8c6006b9c03fa5dc5bc54e3373dfb9027bee5977bae3bda2cef5af9d5d5cb3c6b84877d3377a54f6de8258b5ab7bb3923c0b761f05dfca15ae74ff7e90de72a3f3dd91f174dcf0b888b2cf7c046ce53e0a0d8f9bb6277300ec9c8bca8550f00724db4f6a2d54fc7b27ae77ce9ec835bccacc48280b7538f7595431c6c237d74211c92bb58ed2fadc89166cf79ac6b54d8516daf35f87b5b1fd5e3b772de084ff89321d858b2487d0eec4482c1c7c44e716c3575ed491a7cb2f79eddc65bf7d31d5e9b1dde053d8f8d4fe8fe1aecf8ace63cc126c512936b61f0773938639d796a0fddd1c1ae813d85f5f54077a1f5ebf78d10c6d439db91cb954fe69ebef1146ba9e2742adc9a57961f99b364eb781a3ae7f6ad8fb3aa77d12f795b44de2a36d48468627b4a7fbcab876f77b09b1a87f4da384edac26e1291d7f4fc003c339b2dc0e69646fcea819e187062e1c562e4f54cc6b42a1fbe1983fffb3687e0edfd12af190cfff55d2e998aaff62fe7a3d1b3c82aeeeb6bf4b33421ae30a1ee7afae730a14ebbff6d989064f2588f585806efe9dba8a951b0a8f1a02567a463718866661635b935e7d15850afbe8c681d1d7f77cb4f2b94560e772331f3c0c27ae1b455af41d937f62c754d37b779d43e1b55e4db66ea2726e527ece376dce353e0efe3953d856795fe4ec1eb611b512cf0d9819f4ff2cc42ffcc653c55e6c6405e18f3c8d6f3bfda72bab109822ab7c58e61ab3397c6ba67f691afbe7fcc2369615df739840d1654f1ea1abca9991b2a371a3acd13e0685238d6638cccbfb29eaddf5cd7ccd37ec25b2c25435995f592c1cd351426f7c0170ab925cb36def3e7d3bf9b6003389c59e6fe1d5c692ccfef0d07b4ed47e3892e87e59698ddf89063dc8e45d6bdde69d6bffe0083c929df42f5cce6da761e707a1c5a310f77f7400b736bf6cb9ce34f6e82f64199eb916ec353be238df1fd863f7d3c9a023fbb15233212514b363dcec3d85b5983d8ebf93fabba774dfc24b657959ffeee1005a0a7b9a907b9aaa9fcac443ffee97366e6eed2cf2aaf820e63f8912d1332968ba48b4bd5f6c590f04ca8fc7d88df903dd1e40d9d733cebede77f4c0427512ce364b33ce45c5894ebc42f9c441b8530c6c08dad9f51d6e79027107b7a7bdf006c7018b325c36b24d6eb2fc89159e7bd693d5b7197fcbde7ffd4a4e6f97ac36dffc4722a10327e72bf5d2d7953e2951b9b63cfce3e943d898fb0cedaf2717e02f73fbb779db63cd0f7abde7eca800fcaa830e9d1ddfb4a2c1df7fb55c37694b8483dcb3c07f81cebe4815e02563139286871706d15412c9b3e3c0656ceacec61e6ea972df02a1313b8398aec227f4ff2fe28129f2823f6eca0ed16f6a6eda271349c3ad611db6fac9f18dba5c54796304cfd6298799c1897b14dd95a1f9e211715c438413cd2d669f618d2e46cbbb2a7670f7818edba2c5fd190f1f726526426750425c5e33781781dac87a608dbf49d9ccb7a877b2e75f81c2af9bdcc53528d5fab6edfbcacdb171f818b6a627d11ef31b3bfe420c690f07acc23632f5964f51681b63c3ee1a130e182c44f275e4fddb94625b7a76d4e4d623479d7dab86be84af343c937788ce93cc650bec54b1e62341d8ebbc93d6c63ec5a390aa05e5e9c11dec85dce7ea2c62ab11f5af900c877eb629497b90a9efa962027d237d7d4f6dab3f3b7cab303f84b6b9d008f8e7073ea33fd97d6ce7b03d80e601f9f1ffc4c678e2dec50406f96049c3c2a8f8901f822c1c9b10ddfe0af255fe8dae4cd311a0e676f4ec598f479b2f68e27c0031e3eab0f32bcccbf787f2ea2109e314f4c3c3e943f1c6a003ece1f2bf51fe2c2c01f823c80ad38a1994b720ed5f61dbe6e637c333f583fea7091fd3b7cdf87f10c77625082cff7432094fa5cc9d7f324f11a8cc49dc399579f33e3f93eaef6cc6dae5b7b7e2a75d6ace47450bcf9c00b84fb7e45ad380633e066dcf3ab2eb02d8beecec527e866e8be1f01f246a524ffcee1f07cdfb5d6329cc973903971a62c479dfd58f14ccb7c501c7ff2399ec81fce3f28e808e765c9ef4636c1e850179f5b5960ffa480b559f3ad2b439ebab35256b4c7f25191d0e92b22181f757f446265685f28ee9b89c6b1aa2f0c714cd9e99ebd6cf9cbb624c72ae1ea424c65d4c4accf96229a14a8c3911a9eaafac04a84db35df7a96785aebc3a3d75391a62be917d73ff9b2795d09db48898ead981d3f8a4fab844fbd681bd9f23cd2f4ba2fc0dfeaca65923fbce32f7bee5f6b30d9ba6f595ee1da4bc8cb10675e74c1ba0eb46d41e96d4ab240cededcbb9c597cb1f9695ca4be87ea1cb55bb5507eb97aed23d9dbd2c0f710892dc667bb4bea24c1b565eec908ebe3ab6278f138740a8461e45ad310ea374a2d4ceae6d9a4b60259ff8a4cd68f2b0c61ccf1b5784fb5af1d9c830238bac4ef2721a68de10e7c2f4e59bf37dfba090fb64d990b91707d7b65dd0fc2f5bdae249ef5a4f9d64bf07553e49635865792b17525930b24feec95b1d73ee4551c16ae354db1aebcd687bd9524328a3c4c5d0b749a049e6b2b58a789f1b3fc6208387ad9bf03e0d425ae634b0303bf07ebc70e774c7cc038083eed804e969f3d90633eee4b59ab42641429478e3d6514b9cf8d97dbf2feece8ee55c87d8ec7628cf2932df523ad086f73f773c64f1287f9103f21dc2d49dcb9faf66c1569600bef67b7b844e34249bf2225d2f42c22eb02c6b6a32f4c487bcbfeb6b1455843af706fa4fcf2a2c15f78cd68828aff4eb502ff7f38db527fab081f5b258a0f5a157b304abfe5c590b800a8e97937a73a657fdde7b7d69c58b013683f03dff0eef8934ecbb225cb34fc05c0351407db6312e1b0def00a3a76aa1fd5cfa5e3001b2ce0364690faedeff37fbaf1528f308dc01a4480cf8c16c897a7c406a27ec77692630f53f7938994a2e482343e8fd1ca9e5e3c7c4e7e52b630e2539f9dee56921907567ee737e267abf5986bf7f70af3f03bdca35a7e353c009a57f9d8474e726d3fc0967c6e7a70ad05eb117ffb1dff57fd7bd736bedf5f397faf70759b4357a3be1f74a9ae8e4ae33ae57953e3db0ef812efb469654f970e1722573633d7fa96ffb8695fbfb897039ef51085c374f620c1b3efcc7bf95bcb4f7a7ffe299f788ded6f6a7e47add7e339ff2863d66a3e825ac575e0754f71b2eedc1fb462a63bfc4f712d414dd2149ed98e93809ac51b93e455bf832b13ecfc7ae347225ce0dae7b148fddef08c754acd2e6373ae1f747b6b3f21f10f56b17a396a789835e73efdea51eba8f203deec9727fb2941d78584aebec45f5d6b9ea8c982e2462388e7ae792b751d8032bf34897539b5628922a8570ee77ee5ebdedcdb33252f786187506b91c4fc0c3a78ec53ee31acab72dc501b5354d207df1f2af95df9c0d6557cf377feb5ca27be6ceaf858047b09941196bb3c4b38bf660c7142b2093e7bc8232e51e3057a05d61782d02f8624a72ad7df3afb78ebe843aa9edbf0ec47c3868751e5f1e606c8dbcf335a4786fe60dd6877fc3eb6889b9ebdfdf4ec55be9f68dbf44308c978917a3b545beefbdbfd9e7901ce3decf3cbd64d50bfa9a9c5278a04eb007497ba5e9aa422ac8f81fe9c346d29e3a30e5e047c2ddc8f7d896935f22f26cfd625f1e44af9536e4a2b979854f9f19894d41aeffafeaa3df9407eb7f608d865f7f60ee0a4f7f6f146be54f28ff64d121ec823eed3a89613c537fef8b892b5e304ebe3f38ad3427345bc80ade23d72744f767dcfc1a66a7b53fcebca2767eb777ceca52d78671f53b144048b22bad6250eaab19580578f36583eb6f2be2d508743f6db6ba53c3b51bbbec8b6135f56e18d377ba7d6e7b01cc77aee7a54d5289bff315b7e94f6f46fdd7ff525c8df79a8ea3a10ddf67867acda5cb976fea8107c032d8ce9b37fd9c8b07f1ef886a6ef9bd11169a2d8adf7b5a0f02d8a53d2f403fc199fcfb02beada226766cb8fb726c7e8f68fc96796aeafa30b9e77ad38025798c2114ad9b3a5f4f3fed69578e473fd7d2060f90718ffded5878c570c43459e92ba6cc4ae03ee8e8b6570f4914f3e3fb62b1bcbe30ad7eb6f0d593d3b58df9663e0ed603b16db268e3edcadad6946db7d956f29c0b66e2313802be89ad9c526b87d3d8f1301f2133635cb762c1aefa717a881a06f09af8570064e75ce98cf633193466f7e94fdd2ac81e723067024aaffd8ee793297c46f047321a624a680d2d19428d7804f42db47f6bc8595e99cf1a677e45e5b761a377e83c62f3fc7d7027fb31d93bc603a6b17cfddd5e3b0dc09423fe95378d1f4b23699ad4ee6e1e415ecd927752bb0be1007cdb9c1aeac3c2639bbdbede9e49a390502ded324c74bbb5d6ab75d2d4c85c6879aff2bbe53850f0dea1cf40ec1e78b8a5fa2e979ab261cc43e4bdd3876c87fdaae29283375fcf86d6ed763fdde3bb509efd722eca96920357fafac411a4808ebc7afaeadbc3eb205cafe8455eed88a1bb9b1a99c3f92c89479d69ed41868e3b38eddcdd549cd5f63ab3739044aff2655ffe04072c2fd4ebe7418977d377fa406feffbb39d10f551fbc284fab5c7eb80fb55c965097df58e5a8a3d6d207f829e87168e53da6724ab6f3471a3fc9b8138c6b235fa2996c9273d59ad77ad32c5232578f5f27bb8739de12357a58db8099712aaa72173ec913879ff128676e417231e3f55bfa93f7e0837a9ac3baf241577538db7d85fc09758c62bddedafebb733527d4be9dbafaa3dcd4c64fc8eb5bc7ac28ef580fc3ef7385612557ff50a2cbc31c75ee92475ffb2a16a4b1b5dab264da91250fc71ea9911356387c37b74427c71543e57238949fa312df3d39f83c06fd25eed492cc99a6f60089ef85ba56829368f29c5fd5f9defa99bf63198235dfc9b7178b6c80ed3babc6c54abb7e4e611c6681fb03fe412b0fd73a3a953e53cdd5c3e2b63e31cdb9c90e01c45c90780ca2172959203cc4c5cabc67662d1f9d1ef17b822eb23c7ef3ee29d6d5afa46eeee8f61c2376f0e946bfc76bb2d5de18fccc8130a8f54a88117cc091eae8552c6094c061a5ea6544836b8db7407e06c20dacdb612bf8ec4f03a1c4dfeee65f05b9593d332cb1cb9f1ab58ea8b309fc5dda323dcd7aff921c6db0237b5ef35a9b7d6cc2f875ce9c160fb5ae63c91e19db66ca5c9c0366b34c7ffb8c23f774756593a96439c4fdd84ce676af23fa025fe22af19d18760a2fdc7665d12e10bad750f3682b3f3b7fbf02c68ef7c9927fe8bfc17d81dc2816cf925c0d90f727736c2c0bd33890db75970381ce7dd3ec77e0b748fd66bf93fa0bd7b16cf0559e637cbedcc1bf33ef13afb5902dfdb80403d9bd1ffc1dd6579bbdea2c59a6ab7f75f24785dfe806745eb7a2ad6bc0dee1b565ca605b79a68ba7f1bec109fdc84914ab5f8d4de65c593c1f276ccf913dbe053cd8031d1bf85ba19f984b3a1670c6c6a74eadbfd3382973bcf6f2770be68be4a21fcb1f84df3c4a91261b3775d4dd7dfeee7ef21b4d885f5772feaec1fb3f32a7083724b62c6f8d9d173d9373b45df77e286b5e1ec0b72e88970ed6d0a921fe51cbab6e1b6b7e801e5eb4e511eb31ef1b413c6af2046a72f857f644f28f3a504fc44d50e11ae8e85966bcb244c6b5f2811ab919bede17e20cf7b9ac03c36ce4bcf91ed69ec383ce4dc9395fe8c839f9e39e9ca3d7f7815edf8dad31643441bd1b630731a4e4fa761e30929bbe9b8bff1208dbe81157e1d1b37c797e37dfd343bd4e567eae92fea1cc35fd17ec793d4f9fd49f2a663de5d58bf2f3cc327e29719efabd05f2489d224a77163d8f657e3ae6f16ceb8407b4d2e357f87bd9d4cfd6c4638a6dd456fb5af5d845cf35999f246f65dc95f115a72fb4383ef8e22abed0027992c9405d7bfd72297939576ca7a8915bf17db6a46d1d9b50e4996efece5bfed32403bbf95bae725e905c323557f4b373466039f51da69bad207713c579a6749cb1f4ce43ac6f8d79353ce756bd0c3d67697ec5134e345d270730168fcbc340322bee5ec9af72124d801c51c00f8078a1465e3736859cbf77e312e16f3ace88ba4fd39dc42fb6d1235e9d224f0f5ecfcc5c6118b9fa10623fc0fe484c3c47a8e2faadecc9d6afb0a162187afb784bf170af4a14975cd18f4c079ed916af93e3d8109126c44f78954ea28ddad7d4dcce6b1d6701395b298e63dacab365d77231ab633d3e9bbcc3583f2639804797af641afa9c1135b1aef3e82bb9806fc981359155d7e6f5b589c9b9b6525e37ea5c47ec26a7879f43ae77acbce7d8e8aaecd26c46ffcea9785dfdfae2ea1c49af786e6a7f721de746ea32aadc2dff5abd1e4a6e4416a9c565eb52f9e3556e8082c42cf0f72a276601270efcc2df926735b24e2d14c2b7bac7efb62ed9b39c58e51990a99153da61534681bcf7394fe718229c5bf7fb3dbd63420562b5e8bc69ef55beb4eff7e112dfffde590f4675ff6f71bf15dbb8ed7399476da68bbff79c28cee8fefb77fa7f874f1efa9dfb1c900324af2efe4ce1a41093aa09aa3d37d52fdd18c85fd170e45a2aeb16c3c4b5447c4e2045e24f9e1c9faa7d1b7028f384e1d7929de3fdbaf37ae0534afc843f563e1bbf18f656927952a4e1d3180d87707a9147f296c4e3482973293f95b7bca28b213e03d5c8454159b38c3af7078d9dff6dad4634e3dabe86afc4c0b6eddd183e6cf35a9c197c31b73575fc08611bb19899c7c2aeede411ffacfeff4232af4e4f4d7d19eac49d20279714f33ed6efac05eb701dcc549e83ce40c529829fabacaf94397afcb6d29da47927960be8446a31d57592f1599342fdcedbdaa2a91f8561a72e223db65ca353115e0c5d5364663a658d3daaa620ee9308351532bfaa49238de89a39e9589e276aa236b6a6344abbf95bddde6fd6e9d9e7ef9a50737da12ed18cf15fcd0edfd8d9dfd5c3b2559de712621a09067f65a71ae49febd40e9427bc5184670d9fdd24e74d553b90ad6a07064bf67a533b50baf0815ec7bfc654fdd8db9a8646ab5e20d603336d9955fefcdd4c0f4f58af26390afa3f3d74ccec651a93bc073ce32ed342d34334962e992b5cc28910bf39c5776bc4c83c21df611b8ae638384bf6adf4afbeba36db8a21f6f7e82dd09d44b10d526b14f222c73ce144c05ac2fb35adec34bf68c520631b256ce2d4abdca52adfaa67c8969c89169f94656e6a9dcb01a3496955f7a983b7054ca72625deef4d1d2f8267f1adf893560e5c277994471df2c2476171c3a3ba3287bbb974492dd3a7393ac6a49ed4898e13707552b3b1f64392ba58274d1f1c1dfbe310f4e629d4b16f8d537e679cc227e314b6f56cbbaae155e17ccc7d1cbee36b6c73f95b63477ca91c7a7597fdcb0672d803ced8cee96454b2d62d3c8e7996c3a4751f795e4c6aede0bee87156e5b95cf580074fcb3597f87aaaf83bf3ea73e2de5d32d122ce6726cb7fce8dc1e7c2c8270b631eb5ed911b1fd50d47d2b2dbb94217329165137df4183f875c246e065c915227f38b8f9cae13a54850337be7588393d7c33ab6b10d6cc279f58b21553f5489aa3c11641ddec5b4134fe27bb348b93faf0d0600d82ff1ad8fda7e0a29e6b5e2f82b10b0ed89184d9eff52a28f23d4ce4d50fc157d441a1793efa086ee3c1ab77c400ad494a2f4f42ca86c51593d7b16babafa4d8d3cea1c622e2dfc43a6f8fc52ff8d7a6e594bb9cfafecf901ebbe8ac0803db2b2e6e09b5de9e4bbb5859027cdb74a740cb522cbbc6270726dbc9eaa1ac7ef904fe16efd0c5901ae974bea10d0eb2da3f6d6e9ab37a975dd3ac7ed77e327a3d4b5f218b7d5d1b35f63e9fd54728b6a19eb111cac859335b576a0fe01d4696bfb00e687a0e1e1bd6f8496ee44c70932e3fde2e05a7daa26d0bcac33cd23bc8fabbc865f51789de1f38563539f03ce16b65939f047d4b8728cdb8fbc2864c7d225fdeacdabbf6392e3bacffb51ce36f523014fa7c61a729b603b30fb7eed4dc9de14941b2c8e60909344455346932755ce5934b3de9b1ad7751be22cf864f1597d5cd953c000b06e1d10df5479bec76f813060b03eac49f3cc15e2cc287d0f5e14c2dab6ec79a70677c91104bbd4ece01fa5bfa878acd3c2fc43ff40deee40cfb22e5d7c6cd6c67f01e7255c38aeaa27e956f52497a4c6082a66c614beabfc29b04ecce189c43935b97721470dc95fdaf8d75a71a2736add101ffb574fe1e775ae04f66eae593f6ae5992ddf7338b4bfffa66e54d2cfbabe083a576d6df3cb4c2776a5e557abdaf7f05dde8effa636e5b43a7b4f2b1207011c468de4e82dafbf5ba7b11e1b325e9dfbc11e2036507bed0c193af6a6ae71dae4760a27a4be502527019fadb8a765cc6267ae4739c9cf2b22ab1704d57ef68bc1c1b127789da774cda50a475e25655f285b636119c00369c6c7bc8de793d2ee79fba096e3a8c6240d72deb6cee039a9654a8fe5a375da790eac4d7a1f0deff895cb9830122bd0ca95fcf91e56fb05dbaf0fc6ecd590ca3d288c42d73cf66c3b7f5f0ba4deab05f205bd6fcaf1e9b447e9fa96bed533a08611e163b4d7fbe056676c6ad1b5ce8259c993f98ac5ea9eb6ceb3efd86f22198319079c42c0f275a80bb84dbff637756cab1a8b8033689251d610dca6da32e5aa5ab7a4deec6d0ddd96af5166d2a69e6cbbb67577dcc81cc43f49db4b5df259fc94097e48fcfc5ed92689d494247a79c796efe8c9010a8490704b97e9c37e97bed1ab26c4e9d7de2dc7b0aee37d78d037f55febdbc00b841ce291ffa9fea123f1457226c826fb9b3ec21a853a4f7f777e493bcbe7df1b8757faccc33270123dda1be1fb463a125967a144132bb957634164ef12ae1539ebabfc34f23cfde2463ffd6800fcac9277917eed958775b24b1e1085695039bb6d96e4599250a295359e358be44b23bc273ad75348c65547086a580a502fb7e1a80b2257fedee88244bebd29c980f52c15f91d3d0f64d827e44bbdba063a816ff97374019b4a0f99d98eb98c05f50b6c107d5861cf84dbfa49e3cb4a3a165d1257f1d9a7eac66fab98d892cfc832da1530202f1019de8b4afebf45740e93d42321b6dc92656e7019e91de2ec573a22f32dbd67abd29744610e654c419b636636e7021ecb793596444eabc8b3788ee4db3fde9d13573233d75e20b20648ad3dc88947cee9b4f4e357f1ec64deaad88e845c73a31715ea29b0d8c8b59548a175999297e34b62e173a6ea018fea924f200ecd38e0319e08976899f08c228d20f71c70a8ac41ecdadb5745f023ad376f62626b9e29cc6fb7f6bf70e79c9b977bf3938c53737ed53a64b987b08c5a49e215c6a5925b15df793f7fa7d6c2ebbd1a78e6be352f42c3afbb690bc8a9ea0cc1efadf7642d2f615ddd7f8fddc605ebb978c8bbebffbc53b3bd7d2fa5e7d5184555bb878e335cded4c7bea72fa6548e31e217b699da3fbd31513b77395553c9e9a908e29a4625f7a8c5ddafb81e2233b38f315ec34e6ff1097c667b42783d7608b1364b4bbcf88c78ad3044ff0a5cd4c2b5a6acbf9fa285ed227f8f9815c40841adf7167778d17b30c644fe31f899f31eda7912c43397799d890c1d4b83d67ce9cdba28f9d28d3ee724fcd993ccb0cb612ce5d95bf75d5ffb0570ca36f205ff9e438e67c85fd11a0bbecd8dbbf9fd67e99b65c027dc33f1de1483c42cd6f6e280f5cbaf68f4e8de7bef835c0aa5af72ead81f2ddeb22219879a434ae4fbe9d17bd5c8097579ded6c9e539b1e1920a836ecb7ebac630c9290ab9ad786217b4f55df81d729cb4f2338c60cd759f234e414652df036650e6b52bf7435d979bd1742759109e68568eef09db6c90a3774472f6fa8593d4358eed79a2ee955ae650ef296a5dabb27540d7c9df4b5fce69654f4b9d04bfb7e168e075eb473933168f01598b319ec36f75bb869b8cf59263489d7329c5e1a7cf2f7e0275a963aad6dafbbb7f3d9eb5224b4b8e460a9c0aca0e22b5598ff0fe8d9cb76aa919948fabcc3583c770e9daed1a052d5bcfea9f1eeef9baaea2d18c8bd4e4df6fe7d37c8c7103d7b4e49f34f907802709d847e52fe98e3dd56fe6618e683c0fdca5c1c9ab79a86a73cb2c9eff5e35ff2d5f9d48c94683c7eb3ac57b168f435b6e9658598dd39b7d12dbc886be3c1dfa4cb9afe44985f7c53323603459011cc1b5fd2d3cf3f7fb04f5cc5d617075edf9c1d1f39b7eb925ceed5c593910c2029f23eb1ef337e6240f35fbb8b3383198598d7c21fcae6939274e3327f291efb49f83fabd0f73778fd235e742dd513ce7f83de55940dabfa7ce33ab15b3c5005faef15ba2d28752e6b5b96be3be0542f64bb3882e49e3d5a027d43ee251fe55a891c7f1996b899d331e6a6257cf3b4e4ca694c9c6c997f80bd862555d5ee3c8107c0c64717107132beee71e19cc96b191a8542ca327f17b4d503dc80f2690b860d764409fae7ca910af2937f9365c6b00fe765750d231a94158e7b59f59fd9fae659cca7adeaf10db3ee2dbb53d47c7125f99f656256edcc41f54bc978fcbd7be1537f7b06667797d4e5dff17d66daceb30d096475267fb5369ea6b833fcaf4262293b96696dff2bfc2a71cf5ea3b4dcf693f2ecdb3ad6a2732da77be4551bc87f76d1fc73d84ef1b79feb0b67ef0c9a352af4bbf505a3f7b23e76f9b8e1e6aede737359f693ba0853346036685d7748fd4cdf077ecd5b51746f5dd4d1e59b23653b069ba7c502e3e5039c549be9732a6564181b230061b7384a60b83374d41a9d639cd4fa5639ce9ef2b4c3ba3dbab91bf495d36abdfc410a0e0e052f103356f3f310e5eb3f68faee5262e708672c28bb4ba797301c7c03627e474a662740f9a9e1750374a32431f35f9edfc28ce1c920f21edc8b50e16699e9ab5487c4c550d51e0fb8ab5cfa323c31590e1e49e982fe7ba188fe6878510be6d74e8cb5bc39f4e432c7bbfb87e37ae38c5ba92a36f239309c5256afb298103ddf29128948fa49ff9fb967dc7dcf0d601776cc7c475ae79103b03355eeeae5598db7d95f3b6edb7d8d8649d7b3bf60deb6d1d5e7e8d5b07109f10e077403c60c9cb3efb58cf277c6206cb0443a070edcf26f732b1139b7e7ac0af8d7f7a1165bf92d841b4b913bb40d9a1f09ea097bf2b446e33fededc05125fe0f180fce3f21cb7694eebb9ad73c75e109b0eaf99bb3812d6a995ae4e3da1b837455ddb9f3a7fa97c35a11ab927a86f58007738a4eb64123e31e44fabfa9e9538e6bdd888ae2c0c156b7022b91d9cc39a92599037cc66b20a0fa162f09ef9335acf0b084679f213f3e8f55cb017aae77abde00478f1357d5ca3b0bc1fb06246643c8ea9f345b4f39ce5ba6bb919d1fdf89e171fd1da9e1c489d32a89b8af505712d2f9057e6adbc8d19a1cf7975b4c6e78a85768ad4e2e76fbd5a7f6efbedddbd7a5e27e64989b07d23f29d7891b09d4bbef189afe51864474bb72371faa0d7af656ca3746a4f4b376da6fd3d90cb2d90cc82e49ae02bde06558b6e71f6f7b4af65d8e6b8dfe63bbf7d662f7f071c9ff25b415e09f318b4f66654e651c4732f5d1ec425405c4a134b8ff74dc1e450c7a7cc0d58c557bbfaa5cc6dd68eadaacee59a3348d734a7e2b1fd1d2bde6bf746ce3d5b8febfafd7e9317eecd59e6643debdb10f03a740c6d625b62f9702276c425d2a9672a5293d798e25453328b27f84a01f93d42452a39b5faffcbdcbbada7aa74ddc217f41e0c404de430a202824665cf994014049419dc8057ff3fd5ab80023119f3fdd6ffad75309f39a2c8a6a8ead537adb736a97d0f05d7d7421433d2b105ad05bd1371cdadd307f8cbfc20d732e8de025c6b263aba2d0da257f3c415fbe649cfb9c95ca978fdba1cd1ff17e6cbf1c57cc9fd57cff080fda2545a79ea198af3b3b516966b5b6e6a381a1df7cfc63bf20eeb79a38396feb5e92b76af6bfbf26a9f6aec21ec9bfe1fd8d7f573545d03ef551bfc39e8c06d71fec3a8fcfe43f619f5efe7c194bf7b11f0db57bd79d8bfa5fa7f5b396ba918efecd5a763e03dd7178790a3696bbdc7e4bb11e469312769d6739d49e89f56095a3738c7f3577b56f7b9d3454aec2567323807942cc9da3d7bc81e3775914e1ed145f7f4e83c3bf443bdf071906f92f9cc28d4d1be4b72d56b6bf886c6015dbfc2eeb85ad1aab7607cdf3d5c4a0cd64e079d707388d60170529f966faff541971d8d48e0042ca1a700b030a35b80fb35523fe5df5c6b18c1b56cb6cd1322869d9e759a7f658863e28efe3319cfdff9f148cce16845a64acb1af7e559c3b3073906146bcc1adc2ceebb19a8d2920fb4e2c79e7f7ccecb33a78214943b7bfb1bc702d163cc1efb1ad77d6ffcfb413852a4a62eab8aee95e415599c270a476beb9e23bb42e5109a5c9075c17a35fa85adeb2f6680622892833cdcd5e947ee6a710e1ae302858f100bb2fed9271eb57e2ec346a72de046893b656bbdc1eafe690efdda7fa8b5ae2b3dccf923985daec807d32bdbde70168581c85f48be7aa9e058e0973941b8041b4c788747a4d59f7c0804a89de458c36378b535b9d52bd8e508ebeaeefec08dd3c2bd7435acd7838e8e2ff080c56f7d5a56dd6bfacf7c6e7fa7a51db5e6cd7f96d3aa0e1e3e6b6ceb591f27d37fa721fcef746d9e9e85cec900be0430fec6f98bebe8309335a24a306e6f725d8394f3aa4eb9148ad015b7893b6d6b0dfbe5e841787132559cc72eee8961bd53a5b1ddc45395cd572552c3b5366f16cbe4556ce1ce3097f2e771c22b5a11d75ad2843fea590bbab3473e69dc7435877f8c3fbacf55e5937ab8b0564930c398e87aedf569a609fd3563147fbbfafdde60ed619dce2bce24cce176b892fd2190673c1b08a09f56824fa39f0f727449283cf18b7b3f107d41dc4f07ffd6474cdbff1992be68fc3c8a685c8093e1c8dc3f07f2d8d558e673207f2b6572b5068b80eac5abb4307aec65c8207b097db71813f1d3b1c82e5e7ae7fb8970001b3f8e759d93c0cff9da3efe3cde6120cfd89b2b26e90e70a0e063260d87e4f08df00e93b53c0a3d614269d31aa021e758c343ab7f5443fe117acec9c0b197352fb62b0c2345af38e980875cf520eeadfcbd9c0fa41eaec5c124df59abc4e4126647de591f9f0ddd2f85aef13968b4ce1d7b7bf3ea7d34e65fad539cf768f1bbfd7175e6fe991affd9e97cb2b6e237348f31172fbb72eced19d9c52fe180e2af6fdcd3b9e17fe0a8f9b3d3d8e43325f54c7bf36739cddae799b161201eae9e9540dd051d0f98971eae04478b73a89d10ee995a8bcb366bbbfadfd83e14dbbb167b0b52cab635f6f0ba279a8bb2356e6abae2ec3d98b2b71aaf626d496f6c715d5b63c020b9d696f78e0c7986664cbc6376edc75975eaf4cd5e7da67944214f899ffd51ad876ade68f636f1ecd5c23b6d6f668563abe60c15c361df70932e8e559db7e955ae3457bdc136734f095ec7668d5b49a08e5452bad4641fadaf27f5eaf39278cf5c04a279f199e41a88bc45e6e4d37ed7cac9434d7cd8c4b8d379b26af28ee7ba57a2b68f713d1e74dfc3560b3d746e1bfcfc26dfdd5d1f558ce86a45a20c36adb8be759dc7935daef6ca3beeb940beee2ac4be54db07544f2bb83f4534be414f5b9cf7f803a35b2026e917b18f1b2ecc3c716bfa22d6fdf869ccd65aa5ddc90fbcd48c81d7482bc2b5555c1bced89877ec62ec1ff9f72a67f6796af9a5798fb61dc19c6509d4a259a26577dae41e57c44407fecd3b316f18fb7ce9dd9b37b59d447ec52c5da48d6fb4ebf58dda636190f7fbb36d64c2962f2e38a9accf724767f3caf7c0f58cf9782fc97ffea7b6e3331de678dd83fd78b229940d20c7119b31cd9866fdfd4fc70d6bd4f9e290ffe2a87ce0f4a71c2ef0fb0cecb61f8b73b3756ed5f839eff1d22745f7b682d89fc265917eda02d7858ed9cf7e1dcdcd68833f89b9eef5a7676af94bd620085af5fe57b15fdd4763523c7098930834131fbfde1f5ecb42c2abd2f6a625abb5feeb33a1e396c0515ed9aabe5a0c558727bd8c32bf3c5eca5775f89a9f32624a5b6729dcfecaf313a66df3d03bd71bce857e3ebc9e7a7472093e39e04d382cf5ace1246c6cbcbdb3b7e7aa6fdbd5e2ea1c2555a30e7ff017697dd29f8e031f54957abeff0de747cdcb3e9fabb1254c0ed89669e77d52f96a57c7fcfe6bfde33d9816bdbd12440388e4a2a877c78216504bb3b4336faf2f9effda130fe44baca1dff35dc8abd2e4e6779fe3e55a0b293f2dacefabe79a97a576bf2bdabd50ccfc8e6b5a61e69e7ee022231aba0d1f6bf3dbc01a3d76629206ffcf8d779323a26b88d5f5f6681f004c66671d3f7340d7f174abfff904f9c6d2e78c9aa3d1d5dafc8c7bad78a03de0b92ed6e25aa7fa14e87cce087edbf8439b0ed75713a7ff7c7e5833391a3b2a2f52f971e740a8c726ebf453d31cdfff51f519a5ff5ccfb9ab3a9d3575cd5edeb8a77bc1f5ea2a46d40ba6678eb6fa27717c54eb0850ba59874aefa7955752a8fdc1e24cc0d4bce4c84db1fdb0b5c92490902f3e217a370bd02147f1238efbe30a237e5004f9dbd5f248d108df3ce8c6d43901cc29282de1386a7cebb9a79472a646930deca59c8162d0c4e1f2439d8317ddcc3fad18359aac031b6ba13ba07d8971eac8f6019f8855e4a0d783f3d4b5beb02c2e46849b04f00e3ddcaced3a0d354f8093aef69721679bac25b9b977fbc2c27bc77e4e15d7846b7be1b9267eb7383f1937dacc28de1387f9d7a0f2cb2a2d2139affd58e8ddc73e2ce5abd15acc4c13d73558ddcfc186df69a3e6381b7805ae6a4af58a003e30ce6aee1709ee95879cfdcf3e3bf1d36759d56f027924d108d78031a8f75cac35504e3ad8a0a739b6005f5c98dcdaef75fb50858f48e18c6f39c29a8e68adbbc83712c3d08b3e226540bd03fdf26a8f4990cd038d449be5f7fac593eb9846cee5d4cd1d1bb47f332f5de581b54db07e71bdeed177a017045ac490b3697df7a8fc6999d23342c70622bff4b855e889c00908352e5b7ba9b1952876feb247b4c21cb734a13933001c9738f27a74a07bfcc89fed46833579b61f7e19523689b68370ed869337eada7b8cd5b44abc377c6930e699276d133f22ff4e61fc5334c7353ccfe16f4f9c039e18b8736b0c2afa0d1bfae8ffa7d5cdb38cffb531edcb59a96d3f94f623a1bed16898b4f4097347ebc93988b3a66fcfbc24f6338741d8ae6f54dc02c0d51312ec2df89384ebc3934f8bc4954c323fc9bfcd45063a2109f323a7c8dfcc2b551cd2cf7ffd317fadd763d7f2e997739a2384f673f2bbad777868c5198a11a9e367bc1775c7d238033f447d3c6871503ecfaa33679b5a619757bcceb1ccf9ab2a2557e0bc6fd5484d92df9fc79e955c77f68aa93400e4a8b840cf1d5563c3bd5bf4fd2f314fcb29013c6bc03219c1b79dbca888bc23fbbed78a957764bbbe64abb7a3ce9d74f3a1f6067c94b5d1a9a9bea8c3a2f5b611b0ae56a345d6ec1b6bbbe2a9aeb19815b7eede4b18de49878d264983a7e27765d8d173197dbb76f2508438aaaed3d6b827fdc3ec367459869763b2e65ff14bced0f72ff69c14d72a3c644ba486cf0dff6672f7b862e4a6c05706fc77811826b2b862fdd322f14e9b83735adc82c12af1a3e16143fc12279d47ae75bff8229f7f596ee68977e0bb7338be7435f61fbfe413ffe1dcd035d5347bc8515c6b4ca17dde21756bc0f4d7da5c61e8336ce84f9fbff32cb374219f47d7753bf9a5843f3b4f79c86ebc88ae83f6f119ee79e9af5bf59ea7d27080e778e0fe8f9fb44fe95e1ea20d05d841b7e107e7ebb922ce1ff0bcb8e726219c1021c539c17b478233168d33fd3b8c8b3cb7e6a552ca5739ba9ca0dfb294ffc8d11d7a579fae877bc612643b5591857e8b1ff4279a772434fd99ae863529a8d880f427f5d58b90dff9c4adddf13bc95c28ab71086f4daeaf198fc0aaea08c53bce7166d775b960899f167d468bd01537912a767282dd9c27e1b4aa7d495bce3a73e63d9822dfaef91d8d0dadeaddf680f8b055cc41f8ffab3177ac6d955bc5b937b2ee7be65f35b67f3307cfe87c3d36275345bece132b9a93ca809fa2ea2c95ef5df3cc52bef78968343463f3cc652175de55c321c47b625de381f8613db860dec068513d5bcf7be173775ebd97f65a85f984e639f1c15411ece89b6bd7b9d6da2fb0a467edf540688d4d7f2e16cdefea1d1a649ecfd01ebd805c12a9cff7dcd32a0966cddc68f1de08c4de69ddf582fc142775ea5a585162dc12db60b17bf012afeeafafdefa1736e60a98e7a7fbdff4d9c47d553f2073b80fdfd0cac9a8098f8e0f3b360dc762a709f2c1433f353feb380db09e318aa344571b997abc9237c648da1a9ba626d2aa7dcc78ffc8bff7d4372a6c27597bc5cd13b755cc787d9a43dd9852cf709fe6e323c7b8b56de71e493f448d7d98f56aeed9dc3caee6f3afefe7013174356ee01b6c700d38ef9dcf74ffc46c4b7adb468997567818886389af318c14ceaf75a63fb9613d877d3c8773e0434536ae1e9be12f6be10334146cee927cd9ab49dbd727b84ee4f3e25ececaefa56b36e1da96ff3436681ebbc26bfbd3b6d95b9ed4a3dffdf61a0afbb439d13afd01cb44fcb26abfe1bb78a1fabdf7ce69c0b88006f85b7f2dd5a8796d7aefedff02e60aece04bddb949cf1c7c9567ebf853846ba6c776707d35628af71c5fb3dad7cada37a67afa93ab225d8053ae3f373be4b1167cc8107cf195708b620d3032afeb7cede9127bdc28f93cc979a52fe51ff96a8cdf5cf25e1d2de1f736d3f74c2846027ede9ff5028b3aa75b8d0f95335e7851f80e7ca84f39fd261751f1a592de17b86f15c77d047349695601af5c56aa52b556e43f35675e72096b7e197196d936cbef7beab45619eebd233b50e7753c92410dd2dedefc2809bacfdbf5af695e9a9e71ab73153fd8c4dc3f62ae549a7b776d2e6b9f62a7b361cd17abe7e14ec3e3f2c9c5bca3d5f3a0c19718e3f3aee69abb978a563cd6160ffd9381cedeacc73cf8e48c5a3745958c1cbd3bb0551d7e571493fec4efba43be961537fcae928cee89e677ad75381ced89dff5da60a08614bfebf33a2631d16f3e62932fc1dc2a58ffd132ae5017c571ae1374f21fd45efeed6a07e0c3c53d1e5007f813601e935779a76b274f033dd85e542416370a087753c56794f94c5dafc33c243fe464aab5ae9761a24e65bc2692fc6e032e62e42d4da615af60ee1fe823443ed79b0d367e7c76b551a7276ec6af0d14d760defe0d37bf7ac007935c77f63673ac22fb22fd479e36397ae2fce173e603cd79c7861cfc19623f81707ca3d87a8a31806aa7e78deccb19acc597cf5abc1c439cdb8adf2a0e0757fbf99e21ee1781171663125bfdbc49023c7a385ff62a1e2135feee9e417acb893e709f9ff2c4cd5dfb2e9bdc7b5ee3255ae3ae56dbff8cf04655ebf95db666843bf382fc87da3656f315ec4265eb398a6748045d3d9ae39359db9784f48d262dfe64dc0b1d2e222774885d5944ced93b22ffa8b2dd985b98d88bb235a698dfa3eeef0d04a2b5796281ab12fff734c6688fcd5fe8b7b674981b6eb8f0b96799ec1b2ad622ca4057a3b386508c0bebc02ec6c42650983803beefe1f868716161bf13f0d5558c9ed2bc5f0195c369e97462ade344b1c9da1487b96b5eae76abff76cbb77b32eade8b4a9314d7e344c85fe1f526f8a456e24798e727ae7b23306f04d690e8f6a9b9535657a898aee6cbd38ae3dadad05ce5c78aabdc79b0f13357f98177ca7a3fc6b91bc253b813e20cd7379b18107de64d41df15d790f07bbba0fdbe1d5f227f8170988987dc037fa4358fafbfcce323cce3b299c7fe918d5bf3f854eb85c54ff3581cd6f318c517d53c7eeaf743e3288edb9c745a315adb1ff4188eaa31fcd2d9fbd3184a0eb2eba33a0641f65df479453cf001b6f197b5ed221b4fc7d5f518135e1d6aace2dee3c85847bf8db513c5b90b3d75a053021c68ff86e7fd0b78dee336cfbbf082e75df84b9e770b780472e0daa3e62df08303b6da20ff4e98173efc94f41ec68a50f3e13558f319f02d556356d9e13c78b0ac9ae27e5f452b966b83a1fcd2031f94948d36eec446e7381f3fbb571cc7287619d65cc6f6e5afee11ebbe5c787dcaae9a39530cd7b65fdfc3be79977cd0decb7eec79eaf854b97c5aa13d3352a5e73ec11efc4b6f4ea9b767a18a1be1fc26af8ae635b0d884d6d8733a3a259fd1ecbec7bac72dbf2f10f98dce64eb177107609ed6f6857fd6619079a36cc5dff4da0c6bfba6e35c67dbbec5686d86edb539e677a0cd8c7ce9047c2f2fc9237f905c9c94cfdb5c07e33fde233b29e238b375f641d930e09da06c18f3377b31ce55d0366cf37a2f168d866b436b6c1855c3edd352bf69c953bcdab7ff9118e1d93f07ff9ae13f7f8b97aaf7d99f2f6f6aea3fc6998fa7b949ea000befabfc8814a6ad0fd089b3b33e2c7b8bcf56f4cf81107fcbc7caa7a57858b511e0031441ce6541ce94523eec4d26eaf1716a4d83bed8afb9d6f6971e2b1a13fbba5fcc6ff242589bd266d07a1c7847f6a208cf753f392a565e14e7ba38e4bf064cfe253ef188d0bdcd098555a6b9a0815b83ccd185d260fe01a38ffd48266a739bae9260f61129dcf85c6b753ed7174f5ec2f0bad8d417e93a9ac1994c938fe9ad39d6385e83ac4f7a6e99e2fc64eb4c84ced3d5eaa5fba240ebee458f0ee15f4271caa1d16a5dc26f646972f3a424c5f824e43760dd77e0df4bcd6b204c22744e9f334b359a4c77a279dc9593c8b1168927b0748d12fdf6e80d16896a650f95331fab8887dee2dd6949f5eb5035dbce5c6b7329124e19e0122f9245e4123cdb22f1c522747eab3976f384fa7fd9bf787cca3b96c08f057b45f79aabdcb5e6e52ff6a02fa63f7675216a7f5d28ae2ff68ba4d9bb2afc0bf876ff7aff70b4da3f6e6b1b76fc2ae09cfcc1af7220bf32a3fcaa21d6826afcaa6bed57454f7e55337fa50d9d5fc9307f414f8eb68ad17fa85baa92fc145b383a8a2da83e0d8d8e63e32a8ecdd6d6ec298ef51e6c46c7b1755e4a1ce7deff6379a95f3492da735758807ea51c15ef7d5ac1cfb5faff5ddfcab1b6f16ff1378ae514a9e9d523f7f82feaadaf6a1de6a0eabd71615f4dda7b3ac11c10db516109b22fb62f0fd0c406e8998033f4452f1ae883277cf837351caf5dc329d7d6f02f6a38ade722f5dafcae8ac356ef8b4f6b1ae0bdaac7f611bbf16c675bb82cdc6fd6bc0fe43f2abd98817354e5887ea91bfe5803af701854def48771faa1de4ef55ffd9bdab6f33a7efa3f5e8346cffa6b3ded693eb5f17f2d1fa6e2c37e513f73fbf365bfd65f9642c17475b19efc5e71c857b92e9cdb0d3bfd80878cc6e06bd6f0fcc5c1ded6abe1eb1fd984ee09501e4ca14af298ee1d45f604ec7a7261acc12250c591e7276ca08ab07fbec9fa9cffacea53c84ed92cdfb72ffd551d8f7a8e7f5197fb9b77f85ce7d23f72efc8b6750a3a35c2962ec35fd5c19ae759d3fda3834bc537f2ec8369e1d51a6cbe1516d9e47f37a64d5fda2ff6a5b92fa22380fc108377b511e331990e73eb87fc2cc567027b736fbed52ec6f07f7d7c0e0492838f0ebfd40dda782db0fd80718b3385e01ab0de8afb5084c5b4e256db59a32c1093d0139337579b800f8fd70360d0339a0bcb22fa33987bf8959dfe3b1e0c57ecc468dd394e717dfd60731ebff050c03b791987377ccce45efe5d1cdef55900b3009c2bafe2eef8ba4bf9cc8b0e1160fcb53c92e73df1b2999f5d6ec80765a17f596ce471f7ebcede2644ab2e6b63837f5ffb7be0ffb8f46178d1b347aa04dafeee5f626d891ee873cf68931ba9ed3c837b1736bcdbe5f078b075dc8ab11e0dd74e9fc6c7da9673da8643deb0caf30be155296592c397e9fec3e75a8b35eff1f35e8d1fc602b85afc03ae1138927ec7f93463913ff7bcd7d7011fd38f2699775a3158978c4fe5199f28c07f56715e36da622d4e05e035999d773acbd6eb42aaf177353ef2097f477aa5f752717d898da27da0e38501eef5dabf3379ec1b6f503c7647b6d4b11789def87fc0a98fe2df6d6a5c4d6334d566f3cf2d63ce289ece4e5ff7eccf8f3d42ad5ef764bc17872d1faad69cd18a4a97b3e58f0612e58f4a786c3bf79b633de8da4e41bcfa5f6186cb46631e383907c5b8da1fb10e6a727519c8b1b7d610eed3a33174218d2dbe36bca6156fc02cecf221545845ba4792704fcd5c2d2cff123f9c577568a84f6b457ded9ef1085d71dbcab141defd398626ba7acf5c218d3fe8868155305b4a0bb97e56bbcaa1ce4b88273b7e3f35afe8b5d0f1f361cf197ed9c5d88f9a7952c507680f95a3577d67b356df99d3ea3b63ab9a7483db064eb8f63ea146f2b70bf8d916469be2b2c018bd9d0618bd06033babf590d118655e6a367ac8e89d8a46fed237986daf1667067be97ede923e972fae97d7adcb077757c520f9c94f6bfa8ca15f92f0c33ef51b32959f898fc5f6b3d24483be2934f7ea1e0cd29347e51636d636ded9b45ff1ec3fa077b7e1f88b2f998c6b6d617c7ee49b888a5015e3dcab7941b6a10f1ad1970a4fc957bcda7ba9e8f474609c65d0ec7bed7788e63aac6b1e30178a763fbbc0bbc3634d740bb06a8c8a6d774b97a2cdfb98cc5c7b75f4d3043862891e6cb697d0fc99f1c82677f31d983b047f170c165920426e04f214bf695c0742f132a7697068eeb0e8fe752fb924b6cebe3fe55ae29ff5f89ff335b3e7be61dacf9a35ebfb2fe6d8bad94f6a9d31c24fc0647bcc2fdbb39f134ea0e7380072889d7dbbc9c574fab85fda250befd1dee3efec129aa35dbb54f57acba756ae08e72159c2cbdb8fc77fe577a0f957e23c20d95330af366004f01ca6b0ed5d3fec55fea1bb17d5981ca3c69076f63faa4fb8f7fb663fe3e27491c6f8deb08e5d95e338b4fdad2df42257ba311e851bafc7f129ffd31a7f3a17143ef71f3ce7b3bcb25f47ada79e957ba27972ac62e270abc41f3c732929765fbf7ab34e298d32e8215e94b81f7d51124e336b7574edd5c3b536075c0b354f3b01d760e87bc1fcc8c9558d26a6cf198705b74d1c8e2f1d7b9b2c4aec8f22df19e36fd07745e8a706ee199340a30ff78191ebc962c2c8d28a71ec6d06396c29a6af9f0542f09045e0372ae5e8bfe753fc5f8a232b3ead669f35e6b12b2670ae9f7cff1ffa61fa7b941a5fbcbd0f09bff9b1d83f6cf52748f26feb2cfc7d9dcdd2453aabd6d95db12b0cfaaff8ff5e3cbed69bbbc2784255dabcff605bfa7bb6cd4bf013de81eaddce5bf5293daf71059f5c0b6bd8d820637c76dad8e11be01de6ccfbcecc0bdb6aebd86f4503b081444fe946d769800f88c20d05d25fd4b7703c45d769981fea5b4953a731a83a4de3f757b9801667f17c7bfdbd9ecd4472d4cfeba7697153077a8a8b56eb801b51be69d5b76de44149630fa1fff71d3f038a8d363ce633e7d1f89681b562bc81dc689fb47318eb86cf3d8fe81e5eac53d7a9b91b64bd3575f78e264902e3d1c461c50973a5b7744ecef8190a34274ad2b73cf38e3d5a82580f2e53e7abebdaa8fdf6a39f9ac02981b1bced5e69bd1343623e725aa3b7182b33c06fe698933cc13cc733b32fc743ee693b714536f3d2e411480bc2a129e79635eccc8749c736ce42a724794e72cdad353ce3ebc65dede916e727a599d7d23159442ec94782b636e68079d2f6acfc8d4aab8ee83013ed06a87be098f8bbabd74ac6abd22e6bf527bafa0bdeb3297f6d61d2f4f359c17d1755ad027ca540805c03dd0f4b3e477e788135acb4a254480ce81fe13e3eb1cfb3491711d601c7dad6db409d3f69c333ebf270aef5733bbedad3752a1d5ffcbc43a20b3d77355a0bbbb5d6f8460bf7f0922302d91ff82d79cfddb5dad5606d6b64ad7ab03de6780f985e73e88b26b2fd57b79c3c3c8e4d64b19e274daf3e7eef7f36dcf05c6ba16bf15ba5f1bdb588c6f73c4bc833e3776d1763a225fbc7d5cf671dde7f016349b4b4dff07b277a635ddd73ebc9c7e8e893f3ff341a5593ebab6b13ddf9b71d99d73856247a7db390b6055dec58c599d2b60929cd13d9ab6353618c2e4bd0886bf19b93bc2dc4b8842b017477a87c12793ea9182f359e59eb4ca172c3960e3efaaefab7173d69e2337247f352d6d9eb67cdf3da70fc634dac05e503c8e15a676f8bc889aafc9e0cbad3e3965698dcd2f46a5d1fafb5072b7b11d9636a6da0253a77f3398abfe95a6ea3e3f640be36e8ad25753c763052f3b4b5c3bbadc96f98076fe1d5f738afb81a98a8e1c693913fceaf3539526a7d37ea3733a29590d0bfb930b2ce7c07d3f1b717cd78851bbe2da70caf0c367f96daf83b9832fc52e3af9fd105bd976feff87c9f5be83f67a2cf14b8fd22abe2c3142642a5d9879ea15a8ff81e2f57c205481f4f6a0e45201f6b7ec028b0ea5c53dce29fa87bc59cb4c197619ba5734e8d5f5174865f9b755f19f6a90c3eadfc192f8a7bc68a0dfd79ef33e9aebd85fb5b1f993b8a5b95f2c2075356c47a4dc5756db85705f66c987fecba75de8a8309f4b01e44a38d25da9ead39583fa7b41def85bf9f8bde94659efa7fc40dda4fdafd47787fc07ba1e0a4b2f6da26a331f6844e6d40bca33542af257aaf8d17911bcb62db4f7541ebadab0db6c83cacfd1b75fcae68670ddbcf68b3689c60dff4dbcf5eaea71f44b382813d696d211b7da9f4bc8e6b2d0c81b3757e099486b71ff7024d2f475563de214722ce3d8765ba3aba99c5ad02f03ff1b885ea69c2fae05fc7f94e23da36e23053a58ae73d3c422f65c59705b9b021c56146e33adc9b1f1dde9d92b97c9609606eb0fee60a6af50ecbe47ec414985b87da13f5394f74ca716f09e507e29a14ccc933c5cf8eeefdb8b69c8677bfc9e9628c027a869a530cddf392badeac67bc0ebc9b5c8eb6760f8d143421ce683f922de31ccc2f675b2bae161706aa245f961ade07e8676f73764e6e3e70d4c6957e672eeb13be89135a5a3fe233de91ecbf1ac597988cf17e4db4e0f7523122ffff26bae46dfc008a61e89e123d4bdada938b671f63d6bfa7f6e8e7b4b478dabe4bd2cd0d24143f4fd30f9b30fc573accddf658bcf5e5c471efc682f5aa3cabd5d6bd34aa1ad64fc710dbfa373cf94e7238acb4bc8dc5c57c7a07c71ac58dcdaeb4b0b60f359a2cdc6832f20666298be6354893d2e346c047258bdb9b6bafae8bc1e6e00fcc3bc4faf53e81f97faaf337fa6df7832f1609ec53e2f61670a3939fce63579b305e395979dcc291a79bab3c034cb0e65a7364d73f1d7b9b05a971d858a3d807bfeb7e007bc4253170e0d913380f70cdcd327d03bc43c348d1f3c66ed3fd07737eaf1bbc60cdf9d9d6740d9de19706cb4bfa8c173646b147e64063f9fd2272f736c3ae3749b8dfce4ccb9cf16b7dbeda6f9962bd89e74b9b09d73a73d9dbe528f3f098a167182ad2e5e14bf15b206d72d70e193f9d3f3e4f97936b6f67aeb5605d06e70b37d68857852d70007e9e025eb1997a6f247c62e7a5fec1818ed1d418e1dc745fbd228f0234a612f81ec8676ee2d7e800fa856b6b785ee15ee9ab323d40bf86178dae8a1867aab444c7a1d881053b18850f452bf2b5165e95e906eb284d9777d0199ea2df439c7184733ee24c151df4fbf213fa400e3ce44ad22404defd4a07470c6f7e9abc79dc8871ac7bfdf91efab88cab83fb87078ebd888dd44cbbdc752d7cad18f3557e4111ef5747036ed577c75a313bdb4d34ce1c7d468b9b97ac120fc515c282c73dde688d17a13f587d3a169ba0fbde69a3c8672725f263be84e20c3591745eeeacf935108a0bfa7b27f2e5cece6ede691b7a427187f3d8cbdc7eb0b4af7d5f978b78673bd1e7e923ff6a6a3667471b858a1666ea3c8fe8ebcbd13d724eab8d9f9ae90ef3fc718ebdc81cb4bea27bd4beae9ccbe9fc21274ca64a0ef5fc1bfcfcc0c7983c02813df929cffa82dca9ef3295c6fe655d2ecede60917da5fc3510e7b97c3c77aec5440a47728842c1aae9acce5d6cad2201ae3a213caae9accef328920cf781ec9c7bcc98bd568c54e912fa8f6caf8aabdcb1570f1df377dc14213efb65c1a9e2215d9c9c6f3942d73b00fe3088f248d5e46fe0edc3b8c4774f6beabe60afa525bf138a0bd1a5cd1d3b81f15c6b0bd0d0db0e16b7c0fe885491b9827e82cea6e85e036114ae2df6afd7504b9fb165c3c3928ad5d0fbcc5c6e34de8b5d4d9906ff1d4c99e273b019f772724f2f8c52e6141eec89df98ce631e88ef55fb13ed1c7918fa0c3ff0a87a40e34f1725c6a6991edaabbce452daad7e06935728ad676c83685ef2043827146993cbe92c529ff06cf57c2b495f736f7d5f3e990f57032d960cf9cd9fdcf0ea0a21a30a8ba31cddbb3d09b50f617326c1a9fed53d2c316ebab8aae9e61c08f7c8897ee0339b5df856de2f3a9495dd44b1f30e343586c0a5e83d900d941945cf15b53cff23cf30dfb87742fb1af0eb5dfcd40c510c161c8deb4a183242f4f10ff2b95dd11caa297b73253377b5d13ffefd7c500ee783124da6de6032f2d3e4b4933607455c66f254be2f75e3a05bc971279ab93c0f127fb025b93ae38ace09e79d43befee0733ceba7e81e563757340ee833f0b5ac11aef5009f28e1f49bb10b53a0efdbbda1efd13d826ece06ee69a919abb99eace6b2e8661e3aa73524f59dc5cd1b6c0eae98942ec4048b912c424cd4be17695bba16be57f54ed763278fb64f153ed6dacb98a5f22b508cf220ffeef585d434615c1b8d0f5faeb9d798ae46db8979ad01281a3fc551cd3da54f79696467e9ef43eaefd67a5d97cdf37c9e285d67d8d3da79a880d4aa2b4c17d636a2e23ed0736cf98206ba46cdfd48f5ce3bd07b353be0fd687980baa036a19fb593c7bd5739b09616d5727ab9aea50da54134fc564a8a976f7eb9daa0dfdfaaebf37e346a6149305ea128b1c60a8d3b61c2a5708f48cf30c49d7e04fd2a3476017ab27fc1c024aa84f180c00ddbf6d1e33ecdfa0062ebb053f703aebeeb2272a166e14571d7df3ff69f0b731dac99dfee7193d79870144b5823d6b35a181c14a3a73b2b60e99e166a2cde202ed3b34a27b37b7f693b1fff824314b4e7a04e11e278fb877995ac581443c9a239f4a54582f643345f3ddb7c04c224d9d9db33b23b4e6a1cb04f51e9efd2d78edf3bb541bec1a2ac4ad79a3328ee867a57fb7dbc77d6de5b337e46675c5ef4fed80cd1da63c81c6f8dd7b963a7ced4deff706dc011917b36d7ee916f61750c6aadeb9cf393adb9da2c8f9f9fe5f77ba9f8e93ca467234c3af77ae9c6bf8ac834e3785a25c19c1a3b834ff7d2d31edd8a73d584df137bb5b71f2c037a345a4f8c2c7d3ce992075231a6ea3d615b07d679d9571a4cf93e9c0ded6b279df9a8b9969bf8a9797538b38e7f71dd787276489ceaa466029c2369c2ecac79beb357892b7c5c6409cf5f45880f3b71fef0a28091c545e25ac303c463a219cb6dad70c0a37d9eb62dfb6c97cfe3a7481bfe8b3387101f4bcbb7af01cb8326811d420f1be86e09a3e44b827af683d40d47c8c7b7cb271e20c030fdc46180fc1c9be5139fa97c0cb9b127b8cfadae7bb5d67e2b3eeec9dfa6c897c5bd4bedcf0e11f175ae6e1d1bc8d9e7d1b92ff50fe004f78e7cbdf7418e4a589438b61fc11838d63d52f433b79cceeeaba8c87ebcc66911ba1cf29f37cd6fcae2f6d36f7cc0eaaf189b63915f54ffee534031e10fbf931637374d72d796abdf142b0162e41f7f13a4909768ae8362e91f7e836c52209ac366dc6677c80bbf1eb7d01f245787e52f1eb74de4287e5b1d3f8aa53ecb9d077b5d37b929d8ab65c0c5ad18a25f46b89cb77bcfe26357abaf59401cfffa9a757c6ea3182faa7f57a298ff87df3d027b75071fb4b9d64315999f7e73712df6d63c9791fbd39f9eab08bf4e71f38e8eaddefc3da5ef59e7eabb75cd8a3f6b6d513d9e96715d08dbeab8777f1064818875d2bf885e927fcc6abd25576713157c38a3fede9d66b82e232e49ad689291dac5c17f54df8ddf68cea5bad761da3ef722721335dac4d53aad6b53e2bd3a775a9d3ba0749c5cfd52c7cf945e13837937d0ef676f34df52c7371a757c6718cfb5cef0ce8065f0f3a27d8fdd23bbb6b157232f5dadd0bc5c5b1b64dba61e373a06367ab7234647734e678f706c35ef675013013f676dddabdf30ae1de27d0faf273ed00a468dcddc85f879c3fb11fadbbdf98081db6aaee5f02efeac74ac0062d6b505f615edd1e9ce2a12ffc83ed0b50d648fc579beb6202fa0e358744bee7b8c3ecb7cd60d3d3189eb9cc71cfb252ff7f013a9fd956d6cc35ebabfaea983b62cc3434d4434d0de76dc4b4502759441f51d5f7d7746e7eacd6902cea8f6d78017c5d586f14222f701baed13741e7a4e433e085d8f9e57807d40f7d5fdbd55f4fd3e055d3501b8fb1e5fd6e848def14b9c70d5cf86f9f7d079b7b027eeec55df5c1951dfc19cd880bf876207f9f5bb988fcfae16a3fbcbf768dea4c9a39e6fe003b9992b3ef141f4cef3a07ebe66eebdbcee5fe15b9cf4f9dd2caa3110e93ce8dfdc9f7baaee8f9ef7bfff6e573d173b293d0ec5f77f371efea0fe1df25942ef07de95e61dcfabe7ebacb5dfafe70db0f68422c57c00fc3ef1b5ede350b8f5bfc59b49712e435d65ce7ad226523427fda2f28c9f03e75af9c8aae4b4ec1afccdf1d79aaf0474888d3c88467d73b4f53965cfd0e7734fc4b93574ce6dca9701372fdd39da5f0b8eb663e87ba3f147d06f37c47742ff6e8d293a7667af2cc72a327756cdd92dc46ce4bb09f80f4c7ddf99cfb47c03fa3caf9e09ffe6b44dbe248881b89db54d7c74df69f268f2c4e4efeeb3a1cf1a5f0e9f8f9a87e4daf433663e4b72b378bc891febf7f8c9098a256b9f7a6dbb9037748eecbb83f59bea6732d13bb697756c88ed03e9317bfacc7ce09e976adee01e12ff017179bcb357774f9c8f709e1b3e23359f56ee1ace8b62baad68963bdb4ddc3960a293ed6971f30c34a7f8b2eead996d133f4d38d7daea01f06fbba5c7b1f4752f3b3bccbc133e2ff23f7dfa5e2bad537dc2ab3386ffe270ed091d5be76ce0386add903c035a27ae2d9371803888f4fc5039617c0fa19f26cc17fa9dc4e4c1837ddfeb9781c5f9ed399d30fc57d9ec33f8ba8bc44bb7897fc463d83b5662f2f0c522fc329a7bef3ee79e602cf429fb537c947f4d7feca5813a825f16df548c8fde61db8654981569995bffa237479d6fa89c46f0148bab33ea7bda8e9167335a18e909e1792fca0aa3e2d77a5b541ea7d2c1996d1a7cb7b9c1d81acd491d6dc6af8d4dba48a11f0deb26d955bfc5018edb9598af708779728f8ebd39efcaf0aa6871d6e2f37cb0036bb0a1fc0337d84b45a44a4b3e602f57dac7b0ed62ec44050b9a8f7ad1e01aa6f9b732a87df07c6d255e4074e3642d5c595c81ce097d29e4df8f45e43ec8bf6f8bc8bda17f37f8ce0d6f69e15515ef19c1842f61dc842256dadc99c8efa5f0b4f4bf995cefe2d33b7dd08a7d611b9eb2bacf25dfd92bc6b546897f5af2164bf3cc41dfa4f7c55d922ffd1c21bfb0e6e9fe590ff2b9c75c4c1e015acbf6e251615fdc36de8fe67046f152e60fb689979aa50fb5eb6df235e3811befb3640a9960b903a175ffb5aeaa220ef325e642cfabfb772d360b84863ffda9f7f5793c5ef216044297930bd702f72693113de4566d6e0bfe642be663c8dac0fd7b65f168e5ad2583efd7c645713ae4932ade05767d74fe041ac37d1e3f321493af8e97782d19efae907f2b56e1b902c37575795d5ac3abce4987a57a322b7da0c415e227ee1634c7773a9b211f7f3d2d422fe5af5f167b0bece57fd6919cfb0ff6b197d03311fd7d6be43926536137295d0cf2bdce5e2d6e1eaccb05f63d8fe73666efd8e530c47b8f222c8c9d681ce4e872534af9e008f2b75fe6912380f6e0c5b117dfaeb5819a418d27b136501b42c7ee3474ecfde09c4c461613c62f27a45f027e8fce5b2ae5e2a046adbe7cb8c7569f7ead6d5ae17f0b8f7ea736658f3c817029db0d57be8362312184f3aa180fdd3c2ff813b5fe55dc73fc5dd18a6b1b5ff4d1c2e0134da2fa9cbdbc1dfa3822faa0d1676a1c76d6e81160fe02141768ae15ccbfa48f3f54dcf0932e778b4f736d99e3bd70880cfa337bebc9f1e4a3c10c078663f911b2b77f93ef0bba58c2fabb84476bcad5e23ff2a9fa0c7a56e875f7cf33feaac3f92d0e2b2eeadc2ffb705a7fb74e90cf6f0821cc6f882feccd1534260741e2c7900339b738aa713f14d9a71a8deca0d6c35e907726bf790fb644fe69bb4704e3433f39c8517d571859bd8ec5b3dbda96d1bb6f734956dc04dddf59f3fbcbdf004f76757c1da3bcd5dccbedb56a7a69859f37635c7f0e0ddc4ff611a9b5be27ee6dadec9f975c42bbe6a60ed966bfbcbfe42d301add9e560e626d939aa4f834bf67d0ef52afe905d6e4c138cda48b41ad70d5d4f1a56b05c997f411517681d96be87e8b786d197fe4086a49ff3868dd73ab72674f1859fc889441df7c4076497e9323b9cbf752d70c340b70c8992b4ceec8dfc3e75a7ecbe907f452e2b8126c588e6c18d40e24b42f9aa40ff22352b8181d9f433dac7e2f13acf5daeac331709f668a7eb3c13de3940f027356aab8085beb6cfa6fd719c5abcfb6f02594d6b84778da2b9df7401fb2eb817159e9e73b8cb76ebcbbd382fde4408b3bb7b8cd656532adbdd4e2b6b4f6768d81f2a311eb9db6a563add0de913d7121f5e1ffa97a11dd43d0d6d0a5fa5e3befcae1f88b2ff2578c57acdf0bd478d0dc43be0ada578c3a96300e5eca437faac70da12659d5b1775198a8426d23b26a7c498f4dd99dcbe4fea8de25b9f30e60efcedd2973ffe436e380c63d836f0138e512f625a2cd5963e9e617561537f94e2b6eaab4fc96931ccf9f8489ba7ba2d2ed47ecb92f6a2db09e5810dc55c2efa243b8d4ee11990f91a2155335457bca86f4a8611e90ea38cc9b4bfd5d63e6c967c22fe7aa7ad46733be3a9e3a07f9eec02f891dd78f1067b670c79d1cd267c56ba1633e829ebae26b6c7d83afadcf57d52b1add4669c3cb09bf5f74703f72d4bc0757bb47b2708814eadd68c23d52b416464f56ca3c0f2406f706cd804b01dbebb9cc6f517c27ce19870b5724de4763b8581bce593e4dc2405c9d5d0b720da4be496aea949ffcd5d557b44ccf4818de352f1af20fbe0658df1be306465e3067c77be9c253f758aa697173b8cb03f85e45feb81bacc6fbe947ee47a38b6b6fcf1eb7c5df5926b313f9d81f14638b6572ffd4b25f7665bfa83551e93de66d4ddc46171d6a89b0f7118d1849fecff2c897aa2ebf2d8538dfe94cf9c9c563ff78c99432cf1cf392a9fa22e8e0e9325bbf30d57328658e3912484f128d996cf8d19cb3f760297f14dfa783de93c8b77a76abf3aa1a9313cd59324e4be025afc7a5fc49a7f9d25c0bec0c897f5a9874f9b9efbdc34f4de3745ec43b6527deb902e64dff7877f4e2fac9cd909d2f2186688f21f21d6c822baced9359165ed577af4adb80f23dcaa7fb9f3bbd78a26a8eaa92fcea9ec3ce3d97eba3fcc78f9812c76831bf3c5eb2b524bfef346447e7de4e63ca6e8cb633197aeeddd0337b8f22a43099370a93f9585b73cf6399778f9ae76aa38b7ef6cb78bc149cb4f53d89c5fdb2f1bb5af99f591ba7b915cd87335864beb4bdf9553f21e943da4bf730302f0b9bf6d3cc0b63a37dd9243c6c92f127d0dab8aacf531d3be11cc85fe08f5ca1fbae689e37d0ddc65c465a715b1bf2d9819e534aefbb0cb3b57de1d5594cb40197e79d768f5ccc27fe12dfe90d00af7954c43897418bb683d7146724d685f5877120d698df4421e4ad2a0eb48a63daac30ac244fa68ab3df9ebf3e7ea7114e4372ef5ddc10706009718e9e551516ad319723e0c3aa62d1626d639d7f63b0bdf9a9f9f88ce73c751f0fd79ae78a34abfad2a435e6f768e5a7bfb81f79968abd563cba1a15a04b027d127cee6aa381632fae8ab0801e0579965ce1fa225f7e428f877170ec05e035bf2ce8c365bc721206d23674b8c3c111eb5c3fc4163e877cace1c1018c0ced67351c21ae3019ececed591627557fc4411642e4af1fbc8abbd95e1c146d22ebccf22acf27b96b411dfb81fce69de58e008baa4dbae301d7c638d4a044f607f211adfb00bf2771accd559e25e8ef872cce8f0e673e7c2e41bef713f789539f6b3bf538f6ee71c02b7bc05c247fc58785de43e63310832dc833dffc63f65ee5c59eb17afd98b4671ea409dff1759427beaa2313edac11b62f9afc0d3ccfaddcb939de4b9b9a330178445bfd7e90f3eb7c56f15bdd23d31a7d7b293ff022b4d64033bd541e4ca4da411688878b1c5dae1537f4aeed6b5d3bf9b9b2a551326d72a73ef259689fe045ac52691d54b18a17c1fe7f47fbbf47edff7d76bfc6c6491bbed2ec508530595b87b31fc559775f7335b2afb10c60751c6e0e9a890ab20f27c03e27fdb5dacd35182c425f9a24eeacf1c3d796c9abb4ae95e89c7d6c33624592736b70f976edf84d3e91da48d49f57a572bae007777b0428dea2bb5f261497cce4d1d727a0487206be4e7241fb65eb786bb008a8775bf39d37d8a551cbc6eda5e27daf35fc76cd7109f629e9ba4109d8d84cb146688fe577e6e546735bbcacb56b5d6cae93f670f8a23dba546c06f33408e1553d2d12b7e6bd6ade9fd2e8039d1dade2e330eb1aad827be6b3bdcd06c0f1a185a11a0397d9cd03dd0a1a231877d69ec1fb51a1a3bd8df4a50e7cf0f14ccc4947ecd6dadefcc4a19fb936da8f0a09f6177a8f16361d3c29351749df058d35fd893398d45a203f23436f3cce132915fe5f88b317b928dcc327b6f6161dfddfd53e4ea03758ca276c8b01871e06e93cf3b02d0ce5191bee38e3e00fccd2d5265980f3cdf7aab6ec0a93e84b23fc10148603c539846f8e81788ff47d74704c2a65739eb1cf2d2c0dedebe6779be611e9d893e59cc9bbb58bca97d52a1f6e40f373260fdde2a32f6aff5d6bb34215c2ebdaacb800473d7b0883f69b6b7b9d6f78145b794764f786af7a8baec816621c7efbdebd84a1e704bf801c61f152bb139e471ce681506bfc5ce408b414611d5b53b65423dccf88f60b121347ea7c06f1ebce5e995ecade026bc4b8d606c5af3b7876d14ce0ffd216ff5f1c256badddf74ae3834dce0c770c1bfa531ef680e6efacc208e77e6a9058719c3b9681e367ee92f9f3daa666aa9824103f137c82c3255797ad7965516c97fcd09312028eb3c19ea58bb8ce6177bfcbfafb19d13ca57140ad3df241b80961ed3636e1757f17c4533a5fe1fedffe82cbf1fda9bf40fb9bfe828f7a3ff24e4c07076e2635de521c5fe1bab3ed5a3746375734321c6b3fe707bd125d73146f67fc4a4ff9d825fd2fb4a649374fd5fd9bce757858d7a0e1dcc5da01efd0d39102562e013c3ce8a818992a2d1235352f3b7b73fee24c0eadfd4fc83f43cf5454e314926d86b990477bbb84b9aee16316732fdd5c7a3ed703715e064281f6a4d09be3df03370770c8f967456301670feb25a9aeb3621c7bc180df59ed2f53d03e47e3f816484c155fc46ec579fd68cd9fa34bf70b892ee153a5390a3eba9c4ce15a671fa4071ff21f802fb33b387e748cb4691d13083d7c17cf9c0709e85f181d5e832acea538fd65e091a8fdbd679e834a079ae42a287b17227b87f9785faf15e43743ed08f810d0d8981ed4444c2647b6127dd7e238d267cdfcd327adb9e6a6c6732e06d7a4fe006711f2bba7b31bfa6ca9f1cc676a846bcb4817a74db8b6db3d04bbeebca5b45e209f6499543d05f49ff0f3603ec156beaf4f9737d099fafd04d3ba7f39f78ef5bf31bf8f3062fc747edc954f1a513b8c2d7d31cfa72cd47c80a317eb65008f1d3517ce7e34da3b56917b8380609a0847a0bdcc1401ed03cb6c6fad20a749fc68deb5d957d745eb8e6faf27ac67120809b39316b7a09cc4a0116225c095ae4a1bda96f055bea0e2986ee1b8509c447161373cbf6d1e17e0c4c3c775e3a757e7eb8db3603e1e910daee2cfcd7fe4a8b8559c8cf60063de35cc617975ac6251d76b3527adb454701e7abb4031bb9f8e428f8a3fd4842f3d8e67c0ce1ac9ac7ea684c7f8fb19d6d4f3d279aed5f53c345fffe61e467b5734a3c00a165ba97ed69efb71332735cb5a63ade7dadb34895c5bbedadc36714ee6493336ef3e6754dc9ea18b39b273eab3ccad78b361fd2c79571ba19838ae3982258397f5595debf2a311e699c0399588cedbefb47b24977246e5316faa203731851047c0dbdc5e1f589709b81aa12f317fe9674ad0fb51fbfe2697e4de1c8f2de1756c6cff3cc83cb1209c18874c1566989b6b7ed9da0dd730f29fee04e7f4c01c5f4942b00c8cc5cd13c05d69232abfd1ed1f776f7eba4a4c7b12e3755cd9cb18f762b6f438578041db59468e79f8d0be7a27710fffa8386e155acf59bc5fc95ca0efa1d28db95a6c18400f009e37d5fecb7b51716ddb3a925315d904e7cbea7c8dbdb38adcb446176f007b664f9d118f9d8b6c70cddf5cedbb17c76ed611b9fec2b3e64cebb96afd449381776c45d43bb06b3db0ec93c3bec62272af6e4b7329463eea15e3a6c277d776d138801e943fd896de208e3a7b3fe9c7c7fbbf6ba3fd9fc9e9f9b3159358b778169de7d966bbb9ab35faa4dddf55efbbcbb36d454e8a7ca95a0b455a9dbd8199bb337a6e129f59cf7eec2574413be1291fe961ad4816afff3973d0eccdc1e7ccc4b39787400c431427cac83fb3c93b821e8b09f8e032592f323d56386e64fc3439b99c09d8a40070bf387e4576301093a32c842407295f804b468b0fb8276a78306a9e9a564c4acfb307c489daa49a23283ebd79693192451ed9cb03d1472a557b95b9a27105be543caf1eb0ef8146f376bc17e647b7d69a22f919e483d94c9b8342acfd8ccabf12eb9e298887277bda7e412f20e9fdd3443e27b132e8e86febfe338c61b64bb9c96d499b5c267a4ff4ef5a9ca062fcac81cc5e42645f681badd2b89eaa8fd7c01a79f5bd8b09e76a80d9a839fe91ffb537fea257faff8c4e41d6f1a37ed418b4b851f02adf4ec621031e7c7145ec00c4da809da2c6e68adef167143eea772f0e013bfab4c7e17c11e95b68b8ee9ff895d13d35bc1d894ab82cf71d1e019babe7511b37dcee277a95e321f99cc91563a5278f9dc8b39eb881feeebaff91e0032bec1bc149547c5e994fb490ba3ca72e70fd421ee00ef6efb4ba79a2710db879e9458713e44e8449ad1dec1fcf07d35e655eea533505f91088e343950b97259ce3f34bb00bb16ba3358bfc4b339625f4db55224f37d7a53044e74a6471f251fd5611160f785e7d06fa4c3ee4370db41e0e1bb1d6402b65da1ece30df8d83fbdc0f7f71ae3375ef67da366f303f43a6581f045b6586c8ceb8d1a4757d659e57e72be4e87e90495e73192d02459bd0f58ca927ce1f3ef771021f79caab4dad1970a3680e9ed11c41b1626b3f68dbf37dad9dd0c47bc927d95f311f744f1e2beadd03704d8a7a9ecf68e2bea849b1988bbe3976514e50bc1b76f6006627ce19599ce7c8ceb912eeed968580d4a23627359a6c40478d43d7815c7ff7bc916b217fa8fa3e8179b6e048ee4ef023e09769f5c8a3186d763524b3740dfa7efe9be7361fb02e85a099efc0e93f3c18a477f8f93ac383298609f4804ac14d16e7c79d9824415afdcddf910fb3b3b7892c0637c72ad03e767585661d7b290ffdefe8fa5823803fb998c3013def0dfa65a36e6f209f50ba87d7da9f3a3e636ce85c9e1fd5315a1bd755d73e300e0fdb7c98f7adfe38590a42bf9c806e5d97bfa40f87f6c433f64203b99de75db6f2fabdb5012949082efb35c790243f63b9881e1ffc4774405e72728823e099a6fd75d0377ed233037f048eddd92b1c33109b04f8f156cd82f45d517d2838075de5b1c7b95f1639e4a685f0b1b6c64ff8d016478dd0da57ebba1e8a1fea5a9b08dc9ccd5890bd8e1aef8cc641ba11c9d189c8a7697a26aa384c8e8a4afff1d5fede891d8ab6aff55ca3c2bd06d29657c4d995aecfa0f9ffc43b660d9febace290683aa1e33bb5f3077b7dfaac2c6ee47e9a63e8bf4bb86ea7ef0c9da7f359593c5af1d67c79f604a82de6787ecdafaff8226b9f579a604e206d526161e97c04ecad6d3b596b701dd158d0f3732f15d7cf72dec53779321ddbceb6993bc37501e0c47b8a89cdab87e39a481516b40f3edb595bb3d2b0b3b597982a46b1f3b007576f913cf805636912bed29c52b01e34b1892d3c4075bd3fbf7c1fae75f6f2cb31e9227df27122e283fcf03bf3806b73f3ab2c52be50fa7170d2f9e3190b81b1e42826029c436a9e1ddbcdbc818c71b2d4fee30893d04b3707cfc23c641ef63760df6de1cc81e7c7cc03697995676ce89d4cc809c86272f145d2fb89f9dc0f3eb3329dbefd451c25ae457022a279adf7bb369612c54d6fbf8c23ef59c6d5e7c25b6015ad7a6a15d7eeb5f088b9e070fdcd2271a3def85d10c7a318cb29ef918ffb0fd17e7777b5f0a882ef86eb4264ae5fd6d6b2ce05517bcdb1d9fb5e6a729eddb63f9f7bc0ed4972915292107bfb4a773651d3d579671531babe2a0e7957ab3848414b32a9ef212a4288312599682a34fa06ce737f04ee0768f89b0f0e68833ccfd1f58cf27dab7aef94b9aad1f0b68ec0cfbe7ae524f7b8d109f9e33547ac68c6b4df059c8bd5ef05f0e3608ebad6e8e8213f05e6433bb6af75872a4cb038e635e8470c431a87b6d346611373d6bdfb67afc4750ba2653e72b54e8e566ff44190cf43def793fe178d2babf561b405f2b772575a24502fd459665d3675a4cfa8f53dc51bf0aa166d7ac19cf989872eb1b82458733ff731a8e2f6466aeee03f933ee812388eac11ac67e26f65d53bf039b47f4d989dc5c23b7204f9db8be2b7d7fe49efbd86fff65e31567fd6d773f150f035b2d7bd17c3bede8be67ed20fb02735ff6c1b537572b5a79ac993e6cccbde6d5c5f7dd43a9ed88674723ef17bc53543e5eb1fae4dfabb9f39bd22fcd9a5c2ab2401b9a6227663b3168efadfdf37ae0f76eaacf7706d0dff7847ac17bdefe4d33bf7baaa6b8e38075df79cb6fd2d996f8d897e697dbfb68cf698e98d2eb0cd3ed7090c6e14fa9097dc8a9e383f41eee0af8eafb558517ca37b280e467bc86c91b8295fba66850508afd0174de95eb7b0558f46a718e7160dde3fb1fc9785f5cbaa3ef5b57da9ecc05b901a39b506df82d4e45531c07c6bc856621ebd5993ab486e5e12847e8aecbc0f7b95930267dc23b0d1ba311f3eb34dd0ef1c6e0e73c244b63a4daeee03b0232ba89d0d60cd94aebd7a6c4513fdee88fb5d46368a4941d31a6a08309706ae5e7326c07da2ebee805f19f7eebb47dcf3aff7f0e2b4e302c08ed43daa9f2f62044592f9a738a1c5890d9c8b99a2d573e37daf154397f03b92f1cf5469d1c2d7054291607cdde6dfe0eba87d70346decf608f2bc9d757ea5c6296bf5467326b3e9f04ebc8e592adbd3eabb18d679bd3a6ed85c216f3eaf725bf07cc3be3cb22a75f0c7a9c9ef6d3650e79777fc2e1798a7c25e64416ac6068ca129fa297f213c0caf7ad31b1e49cbc83a76037f6e6f329adb0a7dd6e05240570e6b69a7498ed6a7225e124a0302f9d03dba09a37467158c6bcbe71d67509a082f732c0e8d17fb8c2606dedf4c0673d6d6dfc554aef00cf94b2e0cbd34485c81ae09cc71ad5cc4b957f0519adf85b59f4d7e2b8b6ce6722143f65fb0198e15845897727cc05cac8d3f2747712e23dbd1d8815a4393bcc37aad2a1685a3c47b77a25817c0912d2297b1b85100b52ef372b5fbeb2f7de3b3a130770f0abf77c5f8bd103de3b1baa7761e0df71b40fe5c9c1fff7f189b160fe3cb38bdbdaf0fdb581823a331c6389632b21d679cbd28869a201ab7b5657a5ed2c137a1f9d9ea319b0f5cf392a0b1954f8d6ddd54f386accfda1697809f49f64691f4e405de5b6bfa914df65ab144b102d89ed9efc7a3f8c6a87bf2b75daef316b71d1da7933e1306fa4c04dc1b8fe2a3d698bec81b6c381487f2574f8a0fbec8e75f689f14ef0db730750ebf94b35ead27ca47c4bd313ff0de944efa036f2de64b6d7c0201e770cd2a566cd9a35a931373dd57dc09802f47fe4ecfbdd2be775f8d7e85ebcefc15c502ddba34a9cfa238e0f53913f3d360e6e2d6e45ffd1ecd51747e534f56936d6cee9f7226753e25fef7f803ce44fb00c931f165df7318a97974ad842398c2877c3cbfeca30c84d1ebfbec5eaf046e675efe610c9eaefdaf9fb1aa57f361dfb3553983fffe992abfd1491571f6e3b3d4d78ae2bce1a01c8df762cde55756383b19c7ec757fd353dc0a9c7d1847a48ae3d7fcae4477f5a758605dfeea139c154d7e9381c76875756cc8ef309bd44cc1de91e7528438fa1c10bb4173169c56a19b1a07ac75bc1ac96291b9a979fcb256b96b2f0f011a4781e4f553a3e1e115411ba65d87aff34660975ab9ca8d3959f8e5c8f792e22a47974c2965c839f825687d7ecbd1240aec0dda671e5e89fb8c1c2bb956fb949bf2b927f2037cfe2271b9f9f14b4331a79b3883e4e801ff94fcad34efebba2e17be177da078f5fa19c991a2e5e7fadddaf21f19dd8bf0112903e022c894326cdeaf3e8e6c71789005f9dbd1cf911cc5dfe8785b1c81cfe2588b5b00e396a4aeb51a395cf15c83251ad6c867d1d1be9c0e0f9e0535dbd0497916d7c69207d44e703c71d88966e9ea99efa521134893c76734beb9a97cf52ce346f270170738f096177abeab16f5de34f6ec71fc37b2f144dfe865cee26f6cbcd2b776895d5b5b01dacfffc27eb191abfd6c1f7edb2f7ee32650bbb9ec7afdbfa86d353cfc778f2b46c8f7f584c92f31e821eb9ffbdbb3636f0eae3826795582f56e6355e83cf959d19a3c5b4bef3b8adf71ff57bf8d5a1b6cf259f5c3daedb16f618806afbf7bd6c5a6fbd7d80a0bf88c17a46ccc362d42f7c1ffd5b19fe9f0dd2fdbb956dc2b2b636cdaac4814fd222ac202dbd2c12ad1b951dda780c604c7371dfff2852fd4c23209c8179cb33b1b7cdf4acf8af1ca4984d622d5fb42f01187d08f460f5f7ad95f8339446c8279926afea207c999639f19ead56eb8b30ad28f1abfbfde0bc6d700633c234f34f74e0a1c03493d87ed25ddd7d0d2677089de0fe82e59fcd5e0808380f5500c91fe76de15dfcb25a31d3a1c55ff5eb76b5db67b473e4fcbb3cdf22b9d593836b39d9bc976ad33856e33c1526716137dce23d3abdaecb8a97bce131483838e1779273f6a79f9d1a8f399c9efb5c27075f6bdaa11180453e4daf29b0ff91f0ae7714a3e3d6e9b18a979dad92bc63fc56fde2fc7b8f662f4998e1255c2bc2af4fcf41f7db8c7d75a72750f8df0c2662597d6dcb3b509c6877350e3e9e0e2eafe2ec84dc133137e30c2c91fa1b5e37366a94672f6c966e3bd10eed61a68c9f39fecdfbd673525758319604cc8fa0a0d572b5c17704ffdfa43ca934e93d1f0f17779feca05e4cb2b0e79f9486a304251b6f170b3361e4ea87594309f584747a985f9d7da9cb94fba2e84ef622fdd69bd538ca5329968ad33fdbc91da88f1d88a93bad659efc4b3e39ede9a3bee4f88687d5472ddf9fff07ad2f2a957e2bfd28a179eb571884ec45ff07b36f52de8a9f889eb13d7f3a12786ea31217538d28b27547917d01626bad46d0dd4fadf6dbeb4bcc357d3d2b868bfa74e7f674a3483a367ae716a8e7c06161bb9f62200dbfabbbe74ad81a93c6bdab4b0bc4f7c4760d38b719ffef0ff6c7e3a6dcc6b54946bf312a8e20cc53f6dadd84a8f489cbd2be5e5aad8f2d547b1811032b8bf8781dc31cd67d3bed6a18f9384f4bc429f524ef24309e487ec2de487a8f3c131f2697b336a2e567cbc4a7d46b8eaaa31cf546909585d9c8336d76e84fbb05dadd14486dfd4df3f690e5d2a5f0af935d47bfa0e04aa4e097d0023361097e7cefbbd77de2fe9eb82beb4bb1ba138d6b8da8349bab62f89674f30d7af56b0dec97cb8d6d6f0b84be29d966f16cbe48135627dce8c356b740fec0d7c86e2113f75736fe0bfa9ba9c3b5c18faa7d5d2b55c461f008ef38ef153c5c23b4dd8600ae7cfbc13e1e0b717e127e6b7cf7755bd70c6debcd3f6fcfc39f2dfd9909c03dd4b59d718d19cb4366fb23ecb77f6eaf619cd0a559aa07b49dc19c4b81bc746fb40e6d95a91f8e9acd241bca058d81593c4d3712d4c9516a9f39087cba30ce70b3833d971dbf0cb60339f63a17f097342009664ef8bee935e0cb159f478d7ba0354bd1fde8f2a0e79bfd132bffae2bc44e38cd7197a86ed437dc60cb46bfcc28c27ba78e15a9b673e330a75343f133ec69cc4d09f7856b418f31535ef0df86d647b73752df61e48685ecf19b407631eb5eddc4f67ddcf56289ede91dfd5ef671e24ae75891d9b9ce354fd9dac76f6ea823979f16fe09e67095ac7cc2272203759cf89942f3d6b5e7ddef79ed3457408414fa47a7798f7a2f91bb08c31e1941cedab7d1ead3f4767c345e4dc717fe3e8b843e3cd14897bdaae01f7d47cd75d07751fe32272699bcea8e9227399f016d872a6567b6d639781c3df1b648917519cf6982bfdf6959ad70e5e3afce48cabcd250f1373d9f10e8d9bd346fb9a075eead3f4a872c1cc594fe79f2d7ed46aaee8fc59913e70ff8f16bff9d023de3bd650930c24b65c13aecc8ead87befd35f3fabb57bcc768de373aa3551f97cc7b4d7fe87fd6c7e19d704a30c0293d2dcacf01f014a2f5c5102e03a2d547d713475e3067701c4aefd9536acfb619d24fe6f08e36ba78c059bfad7d849d653ef09ee4f3d09f4aad71a7ab5d2bc9c01bb8b61d4a332f4915e8b182f735d12d1efcc4fa99ed620cf6974b1e1b83bd01b6aaf2c7a62c03368399afc87d55fe4fa656e7d480f7026c0bda476c2eaebf73a3fabb147fe7d4df7942fd5d8ebfbbd7df55eba4beb701e1e6c7f753697bd6c7075276698eddbe793a1cc77ca54c739ff6ca3467cb6c2fddcf64eea2bf79fabbfade3837f539931a1b3e754fab845cffe6a6eec3b59bebfba2539fd7171d1ecfe318e6017a3e8f5b851ef43de3633c91477636c1cf5ddcd09c71410774782735b72b70861d8b8c681ee68a38e383f9a55cdbaee7256c80ef0d6bad3a5abb6e45cf111dfbae510f7ff8de257d8a5b8243a838e990bd5ec3dac77eae292617d0548f913daf7fdfec25f85d5639939870a8617ed619fc2653855901fddec0f74e300668ad63cce19a8c69d5239303aea0ab5159fe16cbb04d6edba2346bac17f3bb6db79660174a7c9f8e36fa1dfb3058a238e6259744530f7dae8d2e22177a743dae4854e072189ee5b87d1d2a87fa260bf27757b3f34be8702e02b6a2c101f6f2a0d6e333bbba6d8c86ec58a3d813a16f3654d3f6bd68e2fcea8a45e24755cc093e438db920bcd92cb655f77e7e3d12d3d45c4a53cca58479d7645e8ee4fc85c64d9767a9d23fbe614d59f97bad2d7c0fb84ae36f39610e725474b95432bf0c9ff855bc32265c53ec4d296518e716e7ec6312581c1f28a59ccba07b2d233fe901dab7dae1ae0a4ca9d86ce249ab44eef00a5a5c127c0e8c2a4e40c7a1390639f70d75dc67f41129aff62eb84ee597a13831bbedace119e7f617be87eb03549e3086d8c9e172f0e9647dce537cf73fe2e2f7b8af9df4bee6b9a53f71a01a152ea3dac31d6d14b7704471187ae936776d395da4afe718c183e5967981be616586fb80e16fd0656dcff5add05afbed3c1e5da39d35fbfc22729f63c9fa9ca3f15ea07310cdef6c0db095fd1ad854acd570a3b4efd5289ff6657e2784ef7b0df2c1b006089e8251ece519fb07c82e8ecf184b11a78b747c065e1d2dfea3480b140bf25f032647f308c5872a8e3933553c9cfd041d5700ae40d1e2b7eadd605e1ebea4e2c937573473d7de26323e67a5b151e314fc1263a990dfeb9798936a11b93712e342ec08d7d3d9b3225d78959c87f6ef3a7cac6b9c07a3ec32e9f5873db61b93cf6a3ec84673409323854131cfe1ea580b9c2f41fba1c096946da9ae7f767514abf3d775297fcbc77384fe533539abcee18bfc4099ceeeea0cffed59f3a132fdc09cabd4fb5504b4964ce86154a6b34c192cfe765f001e801fd6468509f8eef295501abef0f74f7eabc5563ca338ffe96a4985b34c17e9b0c94fb47c6fe26fce3f78b50c7d8bbd7cd9f34ba02445a0d8f7b33dbf67eb32f434310c3c8b39fb8365b61e142b6f50ac749d5fad19e6cf7eb6bded67dbd956e4c7dbd9e6cf76cacfd6832276c5cd1f77ca8f5d71fc672f059e372806b6ce8f4df672dbcf83603d28b6de831feba7bc50a726bf9f27ae6526ae6517adffa3cff752f2be8ceeccde2e46e8372ee79f5d2e38adcbf8cf7e1648ca2c90b68f31bab7643f33c78e5d4cf662785e0f0a599bf2e31d97ffd98bec653d281efe831f1b0374cd84df4be1d8928ab7af233fb692f39fbd30cc54cecf7747e6a6cc0bcf6247bec532ffd87326db0ba16f0bf11f655618c6a0589a52b1d4a7fc72cddcffecc5e27da9dd99bd16dfdcb298624ed2195aa32d1f5da3722455ccede86cf9592e1e2447d3ca9583feb438e35f6105490f70696b870cc7fe4eaacce69e6b821f980702fe3b98e777db645e9e67ab85e113e730b52701a7c3631ea8d2d65b260c5c0bc58de8dcc816fd787fe588f8bc26f20143b48ebcc122066e07e1d7eb268addc145cd9eb42a50fc49f99fc8466ef82deee5ba56fe35f26b1ded90295a3105de2a638579a75fe0962a0e5ae42fa2d8dfe10e6743a8382337fc5228aec86faa63abc166ec1d2f0cf26136e62544d7b0753ec4d79a7b8e79616c937983ffebccd93fb2f09da28d481ee270b3e717cf9656bec1323745e74bdc7b5d840e679c55341707856f6b9b9b5bde2339827a51e9da93dcb1568922f0be2df027559023e505a761cd1927c9f94e6722f988f71fffc8dc3f0732baff12388db49cdf0a6188b91879f83fc56794287a069f51fe65b607dec338dfb017c646718606bd344fefbec99d911a713b3f28563e4585975ae91d3ecf8ebebe9a16372f0d20bea8f23484572ad9e3f8e91f352d427fb05d80fe10f0e00fffb3d63fd2457abe06a2f908406f22cfb0ae6a33e63bb44eb5e2e9f7aa38bcac699e26d1acf9d39fd6bcd6e542379ef522f48b06fbb2b9f0bc288ffc7201ff0ee60cdfc9bfbeb59fbfdf6eb83aaf613efa42b3b89eeb994cd397d0e25ff6694e28b053800f7eed179c8329fb86fb389d14f92670cfd86fa1fa5117787c66cfe36356790b660176ab138799dd7ac042dff0f8dd19c952ffb8cb3a7347ef7aa16feecb29c377ea1e45f7f7ebe9c71fdd9a333b01c58909ae0348f7fb678cf77f17cda781fce4c76d4bba2f8af976b502e2f2fa19a71fa05fbf88dccc673037beaba1d81fd9f021ef6b240fd0f68794277d8db6b6c653ae5c06dc4fa8521803e052574fa4de6d90fc8450734c130e9965f619553135b2ab6cebf916428f267b5ae7fbce8ace432ec002bcd62652ca90e4904d63f31847a6b99d827f15c5dfc19c392b7af6e918a3d635b4b2a98d766c76ba88ea1c31f67f8585889ed7b2ccd027fd4d8bc845f3e1fa059f1d60ce2d41f313d968fe1a8887337c76043dd6444d898dd1c767efc84a683c55c8e16c3dc2fbfd5de5bbd0fdafcb8569ce9611c652811dbbc21e529fbb18b84f9fc599a267d5d83cfe666cbca8d68f72d4f98c57d92256cb62b7d678df9dc3bf1357676eb6b87d5f0e981be6abe47d57ca99bd36cebdd4e05536ff564de60f3a667542c72c92eaf7eb127351a2f3dae2b6fe6cd7f90cfe3f1ddf30ff249cbf50a72b5e2d8b477d7df06bc67960b5afb9d4ee1cdc8b88cfa994e3dc15e96336df6a591cd179ac53e129251be0eb9dffc0ff05feb4d38af4e97be1f0e7f3581d13ff51b92053c510dd9fb71498916de777752ab3ab13eb2db8d9e52b29d8e57432590aac1fe81fec3676d1ff07cbe9c7c596ccd98a71455b32c54ffde3ae9a05bb8db7d36d02ff17e137862b2ea701febf0ebf11b7b129da361a0bb8ced862d1359c3bb90687aea1b22c1a8372a5bbbc322f1eca91f76cc9b8af8ef83acba92b6e13ea1838df8257b90e779e45c5386c0836700b7e3acf747b20fc36b72ef2ebff78c78ce9f0cfde9bde28aa5e383f002f8c35bf24b616d2b9d31cf29cc44f52f40cf280b546d29c4f14cc6f0c387b573b44f6fc1e819fa175fd8fd0b7ca646ccf51ecc064fb79e129731453b0e0472b6611ece785af103fbb838fa8ea8ab943d79fa5ed782f8ec67b6931de8b731ed65bfb79f7ee13aea1755f9e6ade6ff6bcf85a08e7ef75897cd4c2b3e7ecfbde64c097b2e7f77811c9d9de3cc0fe54f5c6aa929b90fd8faadd0649c747c17ea2bd7927daf2fd7b32ec03068ff665d21f9491da4f1b3b023a9a502be0f19ec3400d82aa41d73cbcfe9170eea6a6077b2e68243df7f4e17e047cdfdd316ffa4ae5ab3df0793f1aed8301d668c1355df89ce8313ce943ad68eed83ad72038a95f869c8bfc77cd49f1fd3190db50133ec4fc439d7c6e8b2b28aceb858a5d8c77f6ead33186e716a7e86c14ea47aa56af85cc420baf6b7d562adae5aa68e695f24f13e581aecf968a362e96d11df2bafe9107ff62fd90479fff1f777fd69d2ab3b681c23f681d046c32e53041453a3b5a3913888280b2820df8ebbf51775541819acce779d71e637ffb608e1969aa8a6aeff6ba0ef26071d04bcd95d37965553b374d5ff8976a1ecb173ea6fafe2b7dbde33f22f9562c2fe90a7045897e87f40574c6315c4a0daea4664e056db23fc909176bd322362d2ed6c64aa889cadcafe41f304208a7677d8e1525f0504059fcdc34e442176fb79ffcbc2ff53b2833ba5bbde81a1c599903fcc1b22a2a73d3e2e7727cbb69e38fee9c6cc9f7a46fb05fc442e7f9e4a4826f6cc86d677ab76c05c72e0eb9ad2817a84f54a374d86b0b3129d09e0bfd355352d528cf684f837e9b29a9363de59ac4a7b88d5cdcfdfecebeca69198e0d08f8f9c9ef2b1cda373d774fb844695dfc3f2c4b49bd9e3d5009668b86f61c34b606fa267e2ea7dc93bd33fd134e8bd235919c63e5685e00b644cf3a3915fd16d2ef4fdfa7311d04efd61930fe28dadff3d5c655085eb45cf831e39f33cf543e8d96fdb5afa3bdc8cc6f207375fdf4633e45df45627c75cfe462239b5e42675a7dd982e4394a45fe9e6f5ce5b09d0a9f01da53a7e877ba338ef6c5b3053574caa1cb4d79af6fdfc3a9607aee27e7e138a49dd99b737e4f49835458f87d2f8518a6549878ce3c25f14c9867d65d9de47414434e236987cb79e92685ba772bf7b372393efa82fa86a8ee02eae4a13ea8c7e586d710cad663ed38bff952caa9a2b2033eb29e2568dcdaf7b975b86c6c6c816b73ff75a7fcc89de9b9cac1fc78d3aad2f34c1eed8316fcdfd67d27ec5e4bf578c2bd27408c1347d749790d7b76b502bec93de5f6a13eb9ce58a6380689f801ebb50b311f16e0bed7f724e1e271748ee25816f0f1d01ce83e5e03e69332a88d4137e53f6a75ae5427117c23f2f5ccba6b3325a49877482ed902de5cbb1ea7af8434dfbcbbbf007e6a9c603d17ef451d3ec6ba6cc08968b70ffb4dc937d6fbcaaf65b276d4c328867585392adf3473122d4d0e9dedc30efec6ab3e2afc2ac9973d1203343e9d75083e8da2a59b76b0979f8f83268d72d51468ecd23bd9c3092e04e65a56a509e48ab7e2125ef43794e796a31fbfa507b697797b3e9557d548de3624766911ff58f793f1c07db19bdd7eec8300c67efd63dd6ddbc6bc2bb7d17ce24b1dbb22eed9981792abf85c9e0bc534f7e2fdd54d91eeb3ba6ac7751af45720a384637e86b1c6ed22e8597b5ccfea84f1545e9d65f5decaa92c1eb8643132ff4020b68bf3d6199c3c6348739f0a2c3f0d879e33ade0b798fc035db788f118ec6397708f68ddd8819ef52a7ef74d9d52fc491c53f0da978f3126895fff5da939711412bf25776cbd768a64961606faa36ec33579d9d0bff8ef194fe3a7c1e786f6a08dc9fbae51e668cf6acb60b75227b65bffc09fd5695179a65e845390bd6bdf099645dae7bd2a0d0af0bf820d06f3b075f7123f86bd24d7a4e479595574c1fa14e06fde42777e5267cff73a5a16697fa51de7709df4fb1db7c9c275f5840a6c9b46f9f09d418ae44a1ee94e15b64397d8560ddc2053c03ee9f451351fe377b776fd6e0eef525c8de66c31804f97c494d4baa4a87ca9c0db4d793d9411e49dc509924d7206b776d7feee352def793d62d9bd6e62dd76fd633b36ffbc1d7f556e10bf2ab7e31b963a6b0af8ef9237fdbee92d0e7a6feef24856f69ecac90dc70c3dbbe8da676d04a3a5990c1766f2b646eb66bcca17b1fc2dc7e794cafaba58fa729aa23a2ad7e8cafbfb4759fc98a61b573ea98655eae34f90310d717f43ba07f8ed0cb9984f39a43bc4d84e27b7ea41cfc8f18dc77529d066d4dfad32f0333d4d9cdc1e9e33f6b4dc423e2654be27f76f2595e7513b3c580720cb43bb82cc2a9c98c8e4d09624d666f3549bad6b3d00d78faedba9260d3bd751bb4ade33ca8bd7c8d61efd6efa7d8ea184daf803cbeda242bfe7f404178e73ee9fe1d29489bd92ea8002da4be01cb667e1752da5c7adbbf6607c252b5f2441ad5fa03690f17b5dbe33a131bc56d813265b27ccc3291ec77639c90b1d65edeb534e2065283eec37b75227f8751b637883b3cb5ef77d6e9d7bbd9403bbede18107b7f1390247477182ffcd416f311e950bf3e3b63828a95ea502d10dfeeb99bcdab10503d763cb2633a1677b59c73d22f985726a2e5af6ffc94d1737198e0b189d827b2bee2d55efab9b2e361c9438962929b6ee5cda3ac33c94ac13c1f161da846dd1045f89b98efd60dd3a183c2fe056568df2de3ef7a669c717d95ad3baf97153622f5d1eb8dbb2da9ffc034ff18edb9c64bd32dff46a99ab8d7b691737d7e4ebef6dc7e981ddfc82e4842e66af0fe7587a5f67e9658b9e2579ade8d935925da7747fc071ddc1937b1ed2fd8e2bc29b846df4845703c924755c12898b68b7db28b9765f45e9137ec2beda5f9dfd433ddfceea38f85e81adf576437a2e8e41b7ad15b78ebe8c7daeb9ab5c3183ef20e6ca76f9c3b46b9b2479f1855f95f7a539f99e57a7532872259acff3ea7cd15c19ca32308e3ae603656cb1cb31775bf64602daffb768dd9b935cedebefc17db88239688ee0ba7a9f14fe9dbf6bf627cc07d53ce1e7a591105449f1d587fe7cdf1a65b271d3a597e2df7ebfeddb59678f713430f74c5e86f958efe92591fd4654cecc7c49b806f19ec89a751d27d5e073d46eed1ee4ea9df5858e46ba29544b67f46d6516d21b98f2b912cffde4ddbf0f8d67752fab08bd7bb6b2ae3c8bfd5c4b87f1ffdc27f9228e5ad7205e1bfa264c3da7780fe212ca5864d30ed7acf264de90fec06d44f2a28cf784097eaed1f94ef8ec4ece417c8e5463d46fcf99347df4ebd5ebf1148ab73ecbd1ddc4f6ed6f68bf55f1b9df97e3d2978f619f9ccd71d81b2139a2ef39f637393363bb920ba7525cf4bf9e72859c865739bec55b777eb57b76baadd0f99b9c64c87d28e07d7a8e32cf14721ad0b394947fe3c9ef3ce8092e730dcec3b082f3949eaf7df29b395f83967dcde603c6bea6803d0bbd43be0fbe434e43f767dbd4da0fe2e13d74904e269f74f156aa76632727b6c504e42551497c5466b6061e7db06b66ebe4ff6073847ef1a4e930e0f8dc8f6b9cb0bcb69b66ebc413ffbdddb4ceeb71e726e8e4e28b3aa4558cbe4117bb67fe13fb6e27fe85c981b9373a5b4ae5b8d8abedbe4afdbd74aead9b7bf59ca8ef1bfb18ff7d8b3d919d73907f83e65dfa30ef7a3036859c5874eee167c793929d8ba4dc523792c28e1fdfd7811306e66122c765e551bb6b66b5e6e0da68cd5918ab6776543646961993f9d619127da39e6f50ae27c1bc7a267fb179bacdfcf9c9564cc7f7375b31338edd723619c8a5f07d744ed2725de3b19d58d6a1e7da44f0e3c61fd8aa07db67c89936687231c4066b72630a9c96ad9ed97eebf9b274ec563b61ce9079f063fba6c0173ba376712223be7b26175b7dfb82ca7639feeaa3356f0b56e8d877b8c687a9270dd3a087af6f677645fe96822c45dfb6b37a5334e678fe756cb876cf12e474cefba930f77bc39d3db35328730a65edd6472577f979148a0f366591b46d673a027a6f67f7ec9d2d45e89d9dd59b3cd69559c256b20adbc1ff07f8ff960d64dd7b719e1be5b58e2f7a6eb3c49c5144b765e6f6535bf0c37d6c3f69db0da70ff3a36d3376d28bfdbc9c0ae2670eb7fea22abe8338cd970e7772ee48febf95ae91c078aa4856abed8d7ceea7ddfa5af6dbee1e9d133ff54bdb78d776fdd0569be52866eafee7b66766fd3fdab49bbefee7b667b4ff78e25fd97a1fdaf06037cefebaac57e3ffcf6cd9cfe6c7830d5949608ffd2bfbfaf3f6fca53dd97dda3fbfdac19fcdcb877e88fffe1b5ecc45e89774b413ffc518ff6fbee15f8ee5ff436dfeb19f5ef80126f9ffcaa65cfbdec0bf75873dadce7962e2f1057d7ce696e3e04f2816dfaa3368fc5ee369a8825e9540ec6c70009beac35e633ae985b533838d76d6dd376a99b1b1259bcfcb63caba529b751027455011dbb334c9b5599dab849e2bd8e77c91794eba35cf99e72b6b8f0e2ac61e8dca6becd105fbdc93f3e647fbaa2ffe6eb77de89729f6a937fc960ff2d3b3771b99afb13d33731597a93ddb7b885f9c948d6d1da80d9c3d08c47decc6fb58ed5b976d26e47ebc8f77a29cab959c83ee6630675ebf7be6fca50dbafa477d84bef3afcaf55f96dbb66d2b10dbfda0f39cfcbe5d05d53e57cc49b59bdd4abd1d0fabd56b91db635bcd13bbf7af3a4ec6a748aedb3af699ae93ad24f0c1516fcee38ccffda3cd792ebef624b669f3745f488526a7dfc67bd5ceda9fe4640ff137c6648fe36fc61f859c41fe7d4cf4d213e8f359746a6ced607746f7bef1bdf3f75fdbe1a16ce50ef9b663996bf4c3e8ec3f8ddd61cb9063b55aa79ddc8b5ce5acda77b575867c28d977554c0a3d6ef4c3adc49f83befe54ff6473f2e4b8483ca3c626c27c90c679daf8b5d24be8ae533417b4b1ccd67df79c3992e11fea3624fefcca1752cf8958feeeceb5bff92ee3afbfebdce9ffe47b5d6366b373ea56b1df1bf4ec83df1b26f47bf1789d911e1ac931f68b1a3deb24279318f3e9412c137c03ec0948a79e6e4e744e69e3c99dea9f1b432e9cc6d7f129c7e5a6d681d1bc6474e0add8d281bf5bfa7212c9f877b9ad9f97f6ddb8a8ef6dd7d643e6dcc6a9cb3df90e7f0f2ab9d836d764dfe1624d9ad66da9fb5c4ad1b5a367443eb457546443446b48af639fc04685d6c70bfb1063c303fd70d15ffb3acf09fa618564d96a79ff780f8ea0b3e37a32d4cfcae70fe55d700cf7e7b9130b85aecd094e0a929beabd86eab5c42f748271039ffa539d16fb557862bf324aa22fd7b81d826c7e36be19d2c7bf7c7b23ab885cb560cad78e737e739c7341bc07fb37cee95a874b2b00fb23b5a90571926bb38f931f27974d961e0db46f1eb8489fd1be63f680471b051b9bc4c6ac9ee722c9a522f9529a29ff09a7c59de8f34c6ee54781dbb0f6e7d36edba30af60a68bbfdd076c8d9fca5ed640f79311e24c7f47fd04e95f5ab25d1d977e7f77f56efaad898ff8bf144fb505284d3827ff8066992136e1a983f9663154e6609468cfa09cecb98703aa7e198ff03f3df41f2aafcfed59f47be634f366ef22ea767cb075bdc67144eb9bd395dc59a344cbf666be63e7f0d8e80f7d77d0674ae5ac79b9e99fb907745cbf03c8c4588e4e5fdc65d87f2a4b4e4b82c36ee1ceb00f753ec70f04e284b60efda3bbd29e71a9fba8df6bddef4ec591093f32e27b7786794107fb4c698b004cb29ff634ed7e622564e8b8c3f2f8ef3bb3c99c4daa4b4e835fc1bc75869dc7aa2f1c4673c29f5454c622c27ab429e36d7cdf10962c44ce373a2899fd8272ceddf7d87dbaf0cb930c9335897bfed5f3fab089a54dbd4c05fb78815856215c984a34c9384ca93d2cbc6b9bdcbb19dc831f1112538e6c4a43998532cc32c629affa1085a55569e5346c0976b034ed3fb57cfe391ece099a778eb0cf68aabc78067d55fa1f2efb2343dfae85cb89fe28df19901e7797de6c945d0d7713b66f374d3132ede0cedfbdcbb9c4df6541690e3f2ec9ba7587156fb463e908bedf8146f9cc11e64b8582eb6d21e9725e133187ddb225622f4ed5fe0f75f91fb604f89b55900f584c4d711f603d21690add1fb73fc3eee1bf4dbacdb81e33fe4b81cc23333f057c5da2c1d2e6239f5c44ff02f05151a1712cf73cf75cf28eb5814d03fc6f9c0334ad01d16c773e2f783775d2c13bf9fbccf8f5cc1d87fdebf32ab68cbe683f755fb1a2dd345f574e5d1452cf81bf73374c5c19b6f0a8176185db72e5784b315e006f8c7d5431e1ed6c53af87716cd8947fa27b337cd56f5df3586019b9370e74ac028c4380190170778044d6cdde535361ecedf6ce5ec3dcb616ce578283b74d66a869c2fb276dcda16f8a99b33a9e11f8b5a7859e1f4cc011f3bc98b042e0b6393e17f689ffa44bad75d89bddf71cf9a9cded84dcf5f1a5f06eeb40cd57815ab384f360f67caf0ab2f0b16e0d14ce3cd512efc787fd7d1f926ca17ad92bf433129fcfeea14c4a9b0e9e11c64c8cf9cad213f04ea9b35385cf87adbf78bde6f7379b379329b4c15a3cbd201bc8db7107c91c97b40df319237cbb104ff707a8db1d170273fe1187cca03426c9ad65e8ecfa95ac9044fdabba23ab4f873b27556fb2f47e001873a0b5382655cf8bd69224b29b7ace0bc5b7bc670b77194b88331710f459683a3c64b6fcf6dc7e620be73b6ba40194876a2cfba6b0ef274ecd549a6783e16b51f0b3dcf55aaad83f6ab5b8c79e508969058c73dd26f3c51dd1470f38d1be00079597a540df826c26d62edd1fee6b9511ea071cb827ded7f893f090ed8eae24976b67586a94973b524da26c0062e602c322ff7aa644f390a295fc626c31c789ef889d6eb7ed35752c061c982fdc6c018bcb44e793a4f3de3f314ced6b7453cbafa04276c7b04aeafb3d60b79f4fd41353a687d8a4b14deb51ec504e729ced59560899ffdbe02f82b5e3602de99e0006b2e75d118923e61e3659b5c22882d4afde39af669deba8fe6fcc33376a8baf2cb7b5a2aa07329db3ac11fcf29ef5e0b1b913bf9073e0fc58883182cc05aaf71b9d8f8e00bda331e9eb1f9d14e8c5edce30487e7724d1a724e1fe32a02fe1ae977b78efd3c03b7c202e332e3be39ae05d5c0fc0c8b3e60d2d5fdb66378cda14f4d6cbb31abc854673289051ec29c5662ef42fafd158729dad3f01acaf0bcf270ac02ea2f928f22109b1e5e274cfd89e7942970eaccd6be677305d9a3d8f5c987229b4b0d7d9f2ab19732f868809fc7e85c789d637c5081c54dd35221da644aa51ab7c86378262dc722f1dd09c41b615ca995b0c57b5c2b97ca3379dfb379e1790eb645f1a51e6cbf4bf3e3cfd62c99b8bd823ecb818d1cb0086cc0a86afc7cf21962816bb9bebc2c0db40793678da2748d245ff6068d2f31e66295fa42faabffe8e306270bdddf74e2471a5c282e6ec592136e4eb42fb7300ddd55a61c154e9526851f27e8f75937d238c8ec687b3f739ac10b5ba3f866c679edb9dc438ebc3f5bb5f1030e801f173167fd458937671d7c201fc0c7c5e07e021fd2d219fabacd8df45939f2d3a274cd41a99ba372910d7d3de546ba0bd72bd71c422eb673ff0c3509dec99777f9dd4f91ae76bbed66e5c5b9cfc3e541e676b35b351f730294cd739912efe17cf7d38273dd72a4632e147f8ed62ecee3bf38772f54cdd11dd53b9fd6ede15c73c02fcc1107d79b76f2e43a0fd7d3fa7acf3507107f3b3f9cce3ae8f856aea5c235cceccacbca6bc8ada32f4bc870bc207051c0bbe17850614c8595a0c7c0699daa68ded7fd1582de14549b4c3327243f7e730ac75c5f7d560fcf62a17225c613c5e52fc4bafce6f93bcf21bd8fe4a927e198bbba697957e3fd6979cf69bef69ff9911fc1ff332ed78cfddb222d13575a9d217f7b56ba388f9b6ffe9e9534f77c4472bc73753c7a57a7eb912c26a726073c87e7d03d5226d4abc565e84aab6fd51ce5cb2a79538de865eef86e5aded5f404cf29e2a8d8f45782c60f83a03a9d50b94e559c5dbb4cbeee9eb09ba2ffd11e4bbf01e7c8efa661dd5e9b67da0df7f06fd5484ecbfbe964cf6e7bd588ea76d76dfa1fb5df3ba2f6e723da6e5ce6e97d09ed5ae590e33f5b090edfc4516b163fd7acf5448e6f57f67b359b192751089bf86da477f293b528171a8ffbe4d9b36b2e9cad2bdeb779deb52b7e8aca27f3e08cfb093dbfbaba46e9cb49385b73c1d9e1c310e2c0448a65c093f9312a6473cab661b29eacd8e7d0fff79dd16de7431baf9a3829a14e1a8b6df17352563d6775f353d078aea0b1dba6c57e6f44efcdd037e23687ccf7419b0197a1f9b690f443d31e1bfe47baf42dd2eda6aef5048f059445cbc06d65bec77b788fe95ffc8de86c75f1581b13b00dbc077dfd62f173d322ed70a5159e8363bc965c7118786241da1dc9d4bea14de7a6c5ebb8bfa76542e62b99bfe5d377487beab2c93bade7bacf907e9589ddb7d3560693627abb007e44fbf9e2e5f39d3652dbf3e37378fe18136c4b65efd7758975df5d511f0733bc676877016c2daeb83f69a680eacbb55e52b8b0a70c60fd9b8e70d94dd7bce796aee7ac47b614f1bb89576dddd2dcb8eb91d5b72faa717b73677abeaca2dadea2dae55d9de4917f2c25cf5146a633ad7693e92d3896f38d9b8e8ca37dd94d72de9f959fa1138eac9e7ddb4d8443382b177edf1bad25fb0065c01e2617682f76673ad94b9377758af707d84b63b23f19096a07deb7ecf568cdf1d66e7a9eae387ee5da67733de52dd5bd9d1c3e7f778d74a44e8b6fcde6c97a4c72b41f7db92be18bb7adc5e1a340efc3ffd6da5ac45c351f7f146b7b8efebeebe38f62c5ad9bbf797c7d7ef8284cfc3cfe1b3fcfe9878fc29aac9bbfa7f8fa62fcd9c6629879dc33cc2e8dc666836e9d14a1c927a1384cbf503fcdf47c372b0fec6f4dba095bc6a6a1492bc177576ddce4592d07e2b3354bef3ee6bbe596e60792750a16030cc9595bac8f23d9e4e2b951baa922deb94f43d548ff6c4cfe043607bbb8412c943181f888fa9d94fbb3392ae9c6390bb5be336e73a9635b45d4c27247e5e0382f54d73cac3906306e95e08dcfdc521a905804a41ff39cd35f8780ef96d903cfd14fa15ddc5d909913419dd9be9e229d46decb71f2edbba47dd3e7eddbfe4dfb5c9e70106d32aac7fdd57bf577ad438c13b18f3ca417d77dbb0ed5bf2be7ba3494ad7ce4311eb533f956a5147d23e650eb972319f2964a824989f5d216cef9988bf4b6bff8d8d66b789c1363a517d0a5c6931b1bb7158e6fc27c9cbce9997557fbab77f47b6126c3e57d32d4c71fdfe1386fe73948ca8f735d9b59853fe677f5bc865ccf84c56db9ba62e4bb711aaae92ddf4dcf819f969c6b00661c1adbd6b3eab4bcbb33fd5b7d711fc982ee4cffaf86b1e8daf76673246325e45e4e70c7893d6620f8d3828339ef94481e2f36265f387725d4a404dde35d88632c911c5d0477742f0cb5992538bd90031fd90ce9a6e9c593ec81d9dbe0d81526376903b949ed6bdb27d7fc0a7298426da667cab18e7761c7ed0ee366244538e6794d9c3ef577d5fa95638f76d3b0d536cf002c2a36ff0772b2004bd1e68a705a5410eb083c89d321c1cfc6bec0677c0563d8732edd390d3e63973bf953a43f969cc6e2f71fcea0872ddd15e8d2e12c3fbfe047035d9cb1710cb13d01ae73cdf50fcadb5d2d5d6c73369c21e4c2eae607e0b106b155eae3061f4d9dc9e78d915c75f3e3a61e3637b5371554a9f41753aef0a7c5d035cac2b94f6e2ee1b0f0c6fc27133f4071a62f6e6f42f29a9bdc22b3f615b0fc12b6b5e2587f3cac758c033fc3ba67907907fdb0af74f01112dc66a9cd73209bd3761eb4bb62fc760fd86ce9b2673598bb6301e9896d9c9bfeea0163af3eaf202f19b01ae03be8defd248f8eee31ecbc8ab46c780dab7d0b7f17c6db9da790f3cd9fb9a66f3cde974aafc9af819c36db9ecc492ef63ed7d8dc2ec20de89ab94f9e6de5bfd167cd062b8d23dc8b1883cde605ec33b72e2ed2f571bca980cfe8293aef1eafd9e8dacff89cedfd8f62907038d73e15faaa319cadfbe588b127ba0dcf29cf6989f5a64a89a0a33dc7049bc51c6c7f4938c3f36c0ad8e0ebcc3a39eeeaa41ab7521baf7292b704f94626f81886ae369ee49ab83f6d4c5a8655e846922fc7d3d14e9afc678ef1c579e01f3392771573abb2b62cf00f69d9fa1a5638969bb58161ffd530f1fb09daeb25cf88bc108d13c951acdb9e8547b6edbe48f2a80cf0e970ea6c7509abb2c0fb4bd1f083b8ab8b371e9d805f401c262ab6a344cbc306633d02163783292d0ed36515e1f78c73ae41dd16b65fa07bedf7f24586cef9a4080eb772372bab65aaa468cf801c48537865b3b803963dc5ef77adb757b610c82d40cfc6d17d690da16c368713ec8838ef91e631e3bd469a0ecd9e076b61e9ea17f6b70a76ae8633b7fb3cfa3eff0efd0e7b2cdedb15c098d7f035366fee3f96649dfc2a1ded08f756e73ec6d47efcbe09f38c20c31e3b10560e2aeb7623380f8c1da9fed6d235f90bb31f827f5215ebfb55fb3ee5ed44e71d7743f2ac5e11196dcc09f89d33e79a18a3aaf9cddf013bc005fc4f1cf7da8a79c573319c7202c6b3e2591e228c3b702731e7f7c9bb3eceebeb8bbbcc0157046eefdd35361970a99132e7532e530e755f46cedd0e295f0e79a7e71a8457aa57c72400e7445da6c9418c03f0551830667cd0b36d7ba2bfad1ceb7d05dcffed3cd8a082f8dad6b330379a7d14d573a2d890742f845c5389e1a2e8afdf7dec6344efdee91e5cc7a9490cf746ebacdbe75afd3e1e4f3fb307b80efabd531a03d5ecbb47cc9b8f6d9e70ede289b8feb01a26a08380dd119f91cfb8a6287f62eb5c24b65fca6fe4c5a8fcc9c5b0e74bf7beefe9e349debd6725ded8c5bc56c08de8f62638961acf7fc2ffc545faf8dcb2bda3fd429be945689405e0c1f7b09ee78df982b1ab1f96e60789c1b60475260b6bcc3f95e1f552fb74187ce774b49b9e4395c1daa3eb2034895e67f28097a189d16569448596e13e51679fa92a017711d22f7dd748610f40eb599546822fb2798b65c1ca887e9ce44c9dffd1c54d46fa80f23d61aeb23aee7a043a2b2a13dbfda36e79df8c7d3fd724fd7be90c1a9fbd517e3abd345c56d165d9c7e34cb8b604d99cbc77eaaeb9a69878f0b9674439c6f143fb3ac3cb236e32d91964ca91cc1fc2d1664bc2b7e70cef348e7c6b247f483d0f7c574b6775dea0f3a9f6ab0c6e4aece1f3e1685fc08f49b8ba68797eb3a7dd5df326e8a69c29f104f601524fbc7542d9ef03a709d92be6e1f2f081ce64a2d337b177340ea0b6a51f9f71b7e13d473bce8bad334fd5f1472d5bfa8e5d6d9d75ee39781f627e33ede47f8a9feb62ed084b67f0168ef3869b878973c6b16ec2e3b518e3f92c18fe9bad3b5f99e6e8a4e2183d12cf88319c012306fb21be31966289e3b4d19a75d7c0edb344e7cf6c95834fb2b596caba5ff11a63e2b08d865b5e9de9744cd2209b500e427a36b37ec08be72a51c0cdaffed14b8323c1c098e9cd590e317f21c1bc69ebeb1b9c5f807dbcc6672f7ce49b1c747476b015809d04ed5387b61c5d7335b172995b8e70dcc47087e6203d2ba1af6664af85f36a9029b10c1c95e15818aa332cab52ee4288f5344f27f948792a5b9c371ceda32d3a23db72e10de9de0c76541156801f8b7dc04654849883ea5d957488f320fa15b7c812b457bc757388dbbac984eeb7c06311e2f1c918ae8ddc8bf7989f8eb1bd90f17de0d043678786fbe544dac1ea308b8d35c8694cd106b8812668ef8df0decbdd346984db31e663e01c817167cf53fbeed9b6b522bceef5ef7bebac067dc5ed6df038a7e7c8354a1df753b9a3d8acd8be97145ba3203c5e8f7b952625689ddcd42370d73dee77cd797443e56ac7f9c1ef2be9d2498ae02ee4cb990c9c43e8b77fe0393407e81c0a8ee5686ba2f5575eb12f5016b64679417abc0fdfa7832ca89ae71360b91e91dc9d829eb5c8066ff84c4ede5f8caf80e7d3b940ed221c5f2d4c8e8d31bcf8fd00c983ef1b3ca7d2074eaf19cb178a74cf531c504ed236fffdab792604b3da8607eb8f6249e2b5323a85244f48c67ece963d0fd605e5b169ebeec5e65fbec7f2332e7b5d7bc0e47d630c0f4166a373400a32e18cd7f05ada3865b1c9a6872dc47337b8e0adfe12cfc0a541f48af72d5ab3e608ef7f260f7396e244a0b9f7034ec1a37d11e7a4f7718e55f2eee331ebda0eb0dd14e4cd660c6cdaf730bf987d0be97648afeac3ff9c67e69c96ada32f93d8949ccdc9e9af08fe4659639822d92014710e06c40b12b95583efc371a1e47ae14b29cdf9087fc24df08c4df60a8388d855841de0a7e4c9ab391d8ac9df8d1fd1fb30772ae5fe5b11ae1e22e7b5ecb367ee294ecc4c47bafa9f1dcbcd8c646f7785e413b0f987b37284d67628965cddf7229ab7381641893711e45d3a4374fe564b6780f60a1abf88f4cc2b9a1b4aecf184fb22c7bf6b3da8960561de9bccbbd2ed05df23d8190b66cf44f266cd95b831e05e016d11e15c4a71591bf41d05832f2e04f1adc65922e7113a770b58235dbd65a65f36ce3a51c79342ce56b16a94772d45675904f651b67f827eeb2cf7c236bf4e3d6fb6fd15832370032ec15fe7c09d1fa8a28279918dcf5b9009bdadb34e3df1330faacf8bdfc73c4b1b03389dae5e6f987f6576224f156985759abddf97f748ffc1718c7c148a833d8da52371935c70b469fb335477507dc61b67fe2dcfd65759caef74deaac66d1ff6a27cd3dbefb7ae8e6326674aea4b69b4c9ca5496a6872013ee41f519f9d26dbf392ad7b03f4f83a3bedf38c3449e21f9699efbbde15d8b3f17803f977863b07fc6826271a33dac6fe333f3fbca79e3aeefb234ad3ce333d9bae8ccb2ab8d13a69e38d85b52996edc798aeaf732bbc26d8db870f6f1ae5502e52dfd6f500d0f7e8fbb7a7d3bf724fbae55fa356c78b1aedba37ec6758ef6484f9325fe1a64d67eeb0c33bf1a3ce497a8eef9713fc57e0e8c6d599ff5a3589e2219407e873c57c243ac25a969f2a3c1fcf051b6ecdf62fa6787eea78ab4e247d5622c570ff7498e843d5b095fe23ea6e388f1aed38b2ca577596a38c03c6755c8331bc99d75fca6ef4c0784832edd38abcbbfe9335497e6f0d197388a1ff3fbc0369a2eed94ebda2b5abc4ae6435e669b8b236b63a22e7bd6089ebb0b90e7b6c8acf72fcc39956b9335b774f72739a331b0907f197de175c2709ed98926225dcdaad700e4cbc598b7d373a68916ff9b985354067fdeb8fb6b37bf86caf59ec97ba1d8f5254c2baf6f431d41953ce494b2df0ffa62870b658979ebde70bfe4e9e2989c482e0dbb2799a1f8c0ff073612e02d617ccc4aece5ea6c5ddb0cc2310f7e22d5b845a1d8ecdf0d56648ae65ecd470f1c5f80a931f9131c4aae8d272fe7809df2c8b9c2397d2584586769009cb44806c5bc4f6c5c3bce7b37fb2bc1a96aacc53870ed2838ae53c0e4cb68eec42da67916047ba9ce83d54485e45f5ae86f72e6afc8f5b2d8ba24374454c236be9fddf27d2eed00db640f3c87edb8ca6837fe809862ed38e5916eee916b1be0c2c66ddbcd6e374d4a048ac5b39b95c079ed633b333cefdf792cdf405c60c9a331c2b9c3f01bf889a92c83cb5ba1f2a8fc82eb8432f8dc97ca9cca3ac031d4a7580b8d3cf993ee057e3d6922987d361601c797522e26349702c23189e60d89056cb012260287ee313e8fd4e9af43cc5384391630fe2b13276a4eea79a58fcf97a534f9a356e70bcde930fb6bc23b0c7ec1aaf10b4eca451fdb49d65979056c33fbbc04ee499bcb91acb3aea2d4e104c807016e4ba4fb607b62231fcd309718832bc1ca88f7a5713ea8f769aa5779a2debd742ee605f9cd836ff1b0b9359831905323a8bdd1f7bcca592c1992abc37d6f8ce2ae1ee56fdd94ffebc7355e4bb271d71170f93178d7a0739b3c0ffb5c7d5de137995278684f6c61cc7d3ee4b23c7090baeb76beca71d5c159b646fa7874d68d7cbe71d7270d9debce305145ae54332ba7bc554126f07eb67a88c95d35f91f32924f9fe78593738362d1b8eb834979af45b4ceb858ade4769b441c8bad3916dcd70c39d7a4c1f7da88feb38ba354bb6f6e24079a5339ebb43b0e53c5dcdc68eef3ce9a73aaa86cd17eb180580bfcdb417b09fa8d7386b7725c66757e729ad7bf498e2dbcefa4a7d739b6bd012317d4be73ee2be30403e9c79945f1cff0da9b4cb9a5313a39fceddb15f9704762a7b45ed8c11c8db8a73c3046c4ed66382682da95bd162737b1e5997cb4c43ca8efa0671951b5343737358e2e4b637fdad8e788c9fd2c5db71c393c97ab15e01991fca2e833049b7581fa1fc616ecce36f7bdaea28b7357d0ba7ed3c727347e028e6bfe0c977df95d7395b6fdfe49fed7a28d7b40f9ace08cd0b279e1f786803d1e1cb85348f4a40de0b90aa976f4227f66a7666f7352cddcc33ae910cbd39690a962926bcea0653bc0f9d4c4af0f3ce3d1057c276c59c6b97ac177762179f317a63e6c47143beb72e275d625df5e5b5287efdccdaf7ed66099ab5d8edfe38ac5088864f7a90c41f715dc8f15f163513c12ca2b3fe31fbf6dcc77d62be1289aa4dcd210be54911fb962912fabfd1bc4f789a7dca9067be00b9e96895ae11840b58238e5fa6f1c0fdac4177f1d712ca3e696815a256f9608e5f99a710e977c71d3cca4d052eebfaa9dd0ba1eef59dceb7b76f0c37b2b7c2f8598e6935371dfae8939bf347118aa712aabe6e8d5bdf90ff74c1c6bbdbab6d6ef347cba7e2977b926dd04cf280f4b07d62883d18df7f465ef267cf5f83bf83e7aedb33ea8ca045f87b3a730b11d88e6830a0bbc4f8f7622e5bcdb7f7b68aca41be4678663a1009fa8714e17d9ad6b2341e75faa9aa7d3e6ce2b4cbc578e79ee602f466bfde0dca7e1b2e2cac5610236882ff384e495f775151df0de905f34694f7ecfc96f8efc5ee3df339dfcb6c97dfebe4882133aa774c7baabd9dc9fa748bfca2f3b6c6316be9a98bc5485ef1a0872cc81ed7bc317a56b8eceba792a35f8dee47d755c9d367c51b998cb70be48144e95e6101be6c74911de733114719b303eed8abec393774ef49d798adff14dfa4e88df99e9f49d01bce372d427222c9ddb1bb6d19ce29a039cb55d4ab74c89f7b17754aebea1209da5407b7c288d2017da07593aca91dea54ab70b7e2e41b224da870aedb8be62ecdaa4bb275cdb7ac5e8e4dff9452846574dc27c015b772e7a8e87f4e2935f256fa1c93ba11801bef522de9fc86f781e9d0b2d397aa60b9a6b3dcc1f6d66d5bc024b83e71b1e82a4088de4fdab3b9fef68de5079e974db19b713f497915c7c5717368ff516be389c033f2ea907624fb0de3ec5b69f7285f768e00a4b3551a9fd2b728ce542c60fd48a9379f66ed3af248622666335dbb65ff069b5ce03a5bb17088cad51f22521023d8ee186857c6351be407c637d8e440d87a539ba2db241ae1edbf29ddd3d670f2ddbe0de8f6bde08a4579ceb58ac16c76551eaf1e9148a353ef299c14a065fff06b859204f3af2a4d5892997f0620df3809b66a16457c4df7146e7311d2f74163fd97738cd38a7ccd98f6d7512f39ea8cce5f881e7d40e1ff94559db4e8b7b6ad189ab031feeb1e18143fa2cd2556d31e234e0f602fbca493506b1da5f7dcb7174f35c25f77bab02e42de07b4ac06ee649f62dc8ecc3c65d776c592d5b0d5bd625044e29b990679f6990a5574f4c2eff3e47769a78229f137f66ea8910271cf92f6c6078df007b6fa5cd64e0f50e6a3e95d205b96786e4658be823f336cef56cca3de1f7ca911efbe4dcba2e9d1ce2c3c8d985f64d01edf5c01149d7b2796edb43886f8af55b0571795762cf040c2d116cf535c78c6a9cef6a0638e3999214700ffbffe402786845056c7b106f5ee5687fcf89cf3ed1903c34054c8a1389996165caefad01cf574aec3d9311534d1246bb999eab2eef86e230f30ffc34145bb8f985dd5f353cd50fb2573d3751df83bf92da06d7fd9560bbab936edc62b42e00eff888af69e6a49001b3655d6dd0f912b77940955947ef7bee074e77b3f24187b488bfadbda79dbbba679ff8060e84f338c1beef72e4d1ff5ff8e7b6c0e75d5e9606d2ef1b9d007ca4078efa18b2ad53729e2b9f5a3eabd69a9f52de4b5237c7c6bde4da6c9529d95020ed7c1ef34af87cfc0aefffb26b61ee1b938b74e0f629303f0860d734b62a6c87a2e75cdb5e05bc7a19c10aa118d422c12546f3a7be8e73fed722b56929778cf1847149e46ccfd8b86cb8d7609bdc621fd57364f04fda3630fa7c6bcf7dbc86ed6541a500cee4b6e9bf36dea474fb138a85a01be965e9a47e388538fb68372bef98f793b579ca99924d69bfd7b1796d5b46d4cd3f781803c05a027cca22c6583bd4fe57c7dda1b6035ecf9a608583ef675a63d337583e800d0f18435388cb4e3b789a528b7bff7b694ef2e0c057f4fb202eb1a5770f32e5d8d6792d77c5728e327cd12557ffddc4349c2d88f32d538a97e41fb81fcf61b58a6adb23b9579fe7581e7a764ea3f1a698334dfb3523ba4079ae3cd2c723ca657a0a62fed9797c467b10534ebe88e1dd5c43f2d2e3f3df9de7cf419c00fe6a874f7ddbc9ddefe4da7ce0bdc014187e371cc743304ede6b3c0e23e2962eb6ebe2f3e3c1c6c651ac46d5e5230d7038a6bc3f5b4bd83fb5120887cfd9b4b8f37ab2b69a3cc8f95646badcc33b6b3b94f49fdef39d948b496e43ea1fc007c8c804c362e30c8faaf85c96309ce13d94ecc8136ffb362ec83e7fe41300fc8fa3e7aef6a114a5b254467e16f21b274c6b1c8fbe5d0146476f7091a75df984f20758a72e96888ffeefdb91d7b3ef5afc8019c79e092c064ebaec3fc7d35c1cdbd76bfcf5562edefa2936671327d59a4797474cfb2855dcd577282669d89e73d5d35c9b2e0f4eafe513fc9e8f3f6e84c7e3ac9b724f3fc8fdc5f863e099d63b1b0f40ed842d1b53bbadd15fd5cf359c39bfd5cf70ddd4f5b763099e7311e05838b48e148687a08d7dc3da73358cc180b1d6019718c7d76e31fefa95da9ea0dc6a4ff9ded2a5f9518463fecac478a5cbd9ea8f5a9d53d5adf9f0769e115d9d9e1d129c10881da1f1986ecf3af93ce08c107c0ecc1305f1abc0292ef89ecd5dfc6c5a0599d06f71dfb5ef9f3da3c59dc7d40b7b0aaa377f52ef65e32a95df0f72869f2e0db2e9fd474cde5ef23b266f0fadcbf962e3f0e9cff8bef2df96f589fae8e7760dfebe5df0dde1bfe4beebf0723b83c67f30fe289c1ee0c1109923029cdb50ece080482c6f4319d1f3626b76b0b2c6705648354635c4cd243896e8703a85e3c1696bf206e51bde1809f58da2314ffcb885075eb4eaecd868bd976de2171d4e2ec0f45e39d6694bce72f48ddb36ff11cbe7d4e2c5f3ab3afebfc30f56b6381f5569c4c4f453bdbef679615e4fe6199a7f45cbc198c3038a571ba335bc028c1cc275930c17142b57ceec6a63c15aa158c40bf39777bbf7317e157bbf5bfe30c2f88ee499630278c8c0cf6273857c4c81970895e530bc80f573c0fb427193ed6a63639c3dd2de21e6424a87501ecfd5ed7a5e167e8ef210b69ec37ea5851c97579fe2d7c2b7b47f9bb15cf8bd41fd3cf9dedf385e607f81beb2bb1cde4d39e6e399fc62af277dfa8a0f1ce91cb85db1c9fc4fafc3b57fcef58df7c81fb85e3690ab35c835344e261f2d8e1873b5d69927703d65be1b8d5f51fbf18ee9c36f345e7e83613c4463d879e621bee349ffefeab14e28fe6589f7c15939f2a5163e2fe81f5f58271936ffa743d467bad83ce7235deb29d62dc499c13eb231012f989177e91c569641b6cefd6c5a90fd3d53086719f50fb6f876f0190571ee0d4627197fd417ecb3d9933af0b8bd413c88c95fbab1f49dbe69f8dca50992f37ee479a41c9d5e2fa8d7ea6fd8ec100bc2bfe60c5d737f5f56cdfbf4a43c744ec9597884b611dea87acdcf6c74ce1dbd5e78f430e758ea39678f728ac2bb18a32666b9ad3aefcf30e60dd267eb98118fe52565be159583eac23c580fcfdfe0bb598e2bca6df9c07145cb1bd71c5733392e9386e32a8835a9e12f856f68e375c337b7f0bae9b776b84f69ff043dab089bb5587f77e85885df6087d7fdd95cc7bc6e753fc3788447fcbda4ef305eceec1ff2bc551d9eb7186378d3b283bfe18dfa9153b5c6cf4f2770eec9e9f4da8971229c6634be08c6780d9c4df1be150b35af68bcc224d6a613ca03bb7ecdd13a0d97a6fe5f7502714d679de1635b8bc0ef07f844c0ef97acafb55dcaa0f38b60fe8aca84b687dc2f1635b6fbaacd85365975e7c9c4af7e399724eb0df6589cff8af3c4279dbdc485dcdf9ddfc5173eaeea1c55c2f7ded9b36cdd7386b9e70c39f68c035b5bb29ec09e1c533cedf5abb38073ee0ac5c0a63112954772f118ceb0837f005e59626706fcfd3fd0df80cf54faa84ee8a3f13c44fdba9ed4fd5ee7feb2bc77cdb51b29a31e07f61ed7f43fd4736db0f7497d92cd60e1af27f4fbd1bd1f635cd8fcdf43c39186392138908b007fbf96b10836423d87eadf057a9eec4d4dbcde7852b7dd6ff3e89d7d865b999c99676cb7e4509b396a2ff3b201608b9b0cb6b36c4ef2058764371dda883918481ba9adb4e613ac7f17e879d2c6c62e3a9ed4fc94419b9ff21e540f6d04db2aaacf356e3c6de3561a14be33280209b7d56230aca1ad58474632a9f91b17c5ee38607827d8f8c67daedd27b7eeb90a185cbf9c85bf9559f360225dad5230ae179ac374cc197f0fcbbb4db1b588ccfc8aff62af9b1fff7d557f9b531c60d0cd86ebfb1517c947a98fff5999d0cef497763ad65d3dd65c23acfdfcf4d847755bfbbfb5d53357ffacadb8dcc1efe55affb85cd40f0bfbd77ee8fdd20f8afa107f0bfe913bddc31efc0fe3498fae33d406bf6715561da387be17ed6b0d8708ee03b896a2fd6e2b0d04fc1d7abce84597c6ce741316e6f9e4c78520a77aac3a7caa4ad14593c0e6cedab9762c37f93c45b2c1bef4d0192aca372d96bf497e0e5aab10136355f29fadd4e4402fc7dc10d5addee15e8ef604b4f6ddde205ff4f8cbd23a9de4a4eb1fc57b00d6354fb57efc950917afad5fbf7fc53557eabbdf1ba6547f26e7cfd03ff073edf859f9fdf515e24cdadfd77bc87d72f9a11f838f4058f757c59733b8307c0cc2e3595800c6271bf7dfc4136e32958d7fe791ae2068618b237c0e67e6b28ad2a5d379d668e529bd3bb3d589ad07c7ad636cd1ee754db29adc6af3c4e62215e1b8c94b6a7c2c7cba9b9518e764260be67175a231baaa31bc87d2b40a274246b96355a3cc97ce84e91b85fa0ba8cfbc52dd72d4f22dc5e515e763451375b606bcde651ffe6ff3d44903d091d0fd07fb4f46737ca2eb6e56bee21006bdcdcfd6511047d46e5738ee0a6300b81c1957f00909afd634b65f73e47b52419ba5172d5be75eb67998078f9cdf2d0e50361fa089ff9e0c23f3809f53499f7bd41763b4639818aca8c5c61afc09fa610e7808d244986716a7c651a51d6d6ec3511ffc3ed79ec719e7da6c257cc51107f878c0cf49fcb7873c5fda538edaf98238b9eaa64cf0e70afa2cf1adc9ef5b935fd7dcc933395ff494ca73a6df8b1e7007b0b2fac3b3da5def965bef7b8b2c11481bced006c7ba77cbaefdbda8cdd4aee9a272bd743e3e534ce503c49c90bc888772d1b366f759f0a5be6f4d3aee7ca539935cbbef7b73c9e2bbed2039184f9edfdce6e3882d3ff11c2f0a9d9243eda0cf3258cf97652f790f8ca89e9f685d99bdee5c63719fbbfc0a1c5ae7efe0eb436baf2b871c3861e9d8a39d3825eb868d2d49dbb94af7f33deca5d86e72e0db31b57721f20f79e5c725da3b71bf61bb6cbc38ae849ab3bbe69c2f4ad8c391ced5ed6f46cf7bfe6ec79e2b26677a7e531faf62eadf7a752b55832b1fe7098e85f9cbb2bf75e37939749cc3317fa13ed4860b9f9efb0d26172e97fab6bbbcb609ea93feb37a18aef87f59179d87c3167738ea37dd48bee7d5933120739eac431c7f71c8b9a553cbc0c31abfacd3f7b43d1eb59bdf27b9664eba6b1bf3aba132eb38ec763ebb0638187acf33adb39f0d4ea158d47ca72417f64d1f9f7a8c5cc887d29c89154f0a58cfcfe658a373a13eadf34edaf1ee25a7de39543ea9ff86fe7ef62dcd3e755c513ee46e7c540131218e75d79ce1459dad0a90930dae6439049a7634b156a108fe3bca6f517f1fae07f3d7c1df7db24750bc07a78ba58fd67954e79aa03e0c25fda49ac22b7ffdfbc618d67b14c591a0f24138e6178dffe7318fef91fffef31af4d7592d1388f4fcf42abfc73d91a37ec9958ca33ec9bd6ec7c4b9e5c8c15c03edf3d214dc508cfe84d2e89dc823599009e745660bac4f9fd4c5f8f893cb76669f37ce30ffcaac93ecae1efcf20dff659b1f4a6d7d23bff0fbc1c3dedded371cc34cf1e5ac7c679448fee4fcfb0366cd136eca6e6c20d8b51ef24ab15c877142583964c9879c3a3be37ec1df58a0fef25cae89a3a83917e9ef7dae1ac353e8f0919fa5ef9eb18f4231796ff7a38dfa235245d65741f62772b68592f057fd134a23820788ce1a32e77bf6e37c6ffa6682e7e9dca767a16b24387f14fcd534ce624ec6aa1ec3cfc7fc8f06038272776a19f0d264be24f4c958d5f1bd8f589f4d9c7348f2751669ca61dec43a97eff42c8f6537bb455036335e4abc393d3dd321c6e774821ca5471d33a7f126ec7ebbccda39418bceef25e97f266eaad101005f85dd3be9bc4fefabccce30eecaff1ff585d4e98be3c3b7235d6209d8aceddcaa911fb773ad9a3981be099df78367ba02b697437f4c1efa03726731a60807d7662bb68f22f579ee74d4dd0fb6c6639fa9a27c22fd542d5d65b413911c24e7385fad2ef7d303b93d8a40178b1b79918e2fe130c1e31027907312008f88f0e4d9043dfbce8c2d2d3fd7000fab993f566f7af61ef1bad8bcee7f357f82ff27e70ffaf6f63c7857a541f71a959d0ebe245c3c3823e71c927dd11a024c23b6cc317f5162efb2a4f20a134b48f48287771efad112aa95e321d9fa2fcf5ba4ab5be47e39aaafd3fc05bc8e1febf861cd3ff12d9a1bb037c1fdd1aeb95ee7dfe0faf15ecfe496bcda9b77746f266b0f6207978e7dc1edace31cb7a188efb367d4d25d93e7f8e86bcc4fc833e7ad3310ec19b6ff603f6d7af138afd838e1bd8b59d1f86df6a7af3ee02a121d9ef4d5436e21c39b262ad74d96a79bfe2a5e9a3cf7e57e42ac79ade7a1bde2152eb1585e3096713b57bdc953f7ea38b1afbe7dd9baabf7502c6f41965e832ce5becc5c74faeb70d78edf25fcf1fb1f6300301e1a29c7e039edf8596d1da1dabaeb21f62b417c39e01d414c9ac9574c9c5b8bcb70639e2f6a55e4e48cae9cde30d48ea8bdeb50956c3f48cf17d718f27e9672ae910a04670ee9becfcefabc3de7e6be67439e7b672ecee9d8d035f8ff013dfb76d3c6931fed307fa753f25dbd3805fdfa51afc2b1fd7fab2b3e69dbff5eaf4ebafa5aad07ff5b9d56ab65e03abe80d4c5954fea03fbe822c3df47fcc3fff2fb1ecafe1b3dfabcc43ae77713eb9dde0197fcfef10eb6c2e30bbbe018f4ef8731626c6d7f536f01753cd879ea33f4471d5c33f90b9ad7da789aea552a3cc639b7f2d6b91739eab87ccca98ce3f8f0d9700f1d850bb2e9211cf32ad9eb399f9b5641361d76f775bcff5a0259a764dd0e7d26f7a060730d34c96ae68c64613c9318ff4dfb90bcd3f8868c32ed6298a8621ad67a204771c2bae75f0b4ba2dedbbefa10a704f9d2f53c6bf87253664d170467aec9c7304acce50fcfd5bcfb45cd118cdf67b0fecb3a7f06d5d7e2de97bab9adf9c377a2e7768d3e083af4ebb395c5427c94c118bd52b138c10c674aee678ffa2570153e91115b7c93c0ff4730708c09e1a8053cc8b74719cee63655ad33b4ce51daffcbf1e768c7fe3e40d0e09b09f998abb79a438b72824dcf966b31bc51e0c33b6f5d437effbb674fb16ae61315ebdc9760a65c434900d9423baeaf863d5fd25c36a463d4322d1903246376faf1a49a798b5b03efbbecda2d7aba9893eb6d3f847a406bf949996d6ee1ad1c970b551a14727a8a5523796ff74f9d47e2db535e36c6f9d937f37b500d4d8b27f924b1d2e26273f875d8e5ec7262b9d6d1fce3fce63973ae3be77e9f2375ae4a63df10f75735fe88d51a7b28f996e38fff6a5552e7b96835de50fd7eac4913418ee56772b25e636acc6ea780e4ff3db57d9aa31a270dcf47f9bdc1091b62fc4a3b47ba2cae0ffab74c9786e2cbf1b952abe024a7dc51839caf9bd0391f33e5d83eb7c0a76b26c325e54c3b9c6a1e3c392e2f4b67f2adf045acdaa84c7296527ba2647d876211ff3446727cbea0f52c1fed9a8bd713e588c9cf34bf1c3ef67b37ca65112dedf9d07794ab2f0e916c99297134f4d3337d0eea5745e5e2f7d6e9f608675fee8bcd1cd0b2391ff4d757df90f3365e34ab6b2873326e23393e77fc91fb5cade4ffc8472ec772e5fa6aa4f3a57978a9b73cca865477eeae51ca0531abf7b8a7fbdb139daed9a71afb5dec398358c5bcb4609b95b375e2899f73d3e2f6ebc96a8ff7974f668d7dfa6b8eb75c3bdfca31d569907cbe7f59bfe94cb92d1a0b4900dde471bf18959e59eb6cb59efc72ff9fbd903b4c2f9d8ba7da57e013796637bbdd6a3f2fe560ee0db1cef7a28eaf1ec63aa7f61fc0ba27f3b6b9b629a81db8b956e37213b93def60d09414a393da496bdc5b7afed5b1ff0f73afb377b8af6cd176b5416732c174f64cee86d673103379ab66c92daae29b9e83b5bec1d81682fe1ae90aa86f21a64e8e938e9ca740be10d287373d6b0478dbd960b474f1f5d019725be7c6e8604a935f84f98d2ac8293ada97504a0bc6ce41aecf733f9bb3dc485593fb6437f260ac103b04931371ffff6cdf41ee16e6c76b3dfb500629fb65198dff498ec9da4b836c0a79512fe45f1a2f2cbcb2f1bfc86bab9ee7b5610e703a164fedcb758c49db7e16a4906f76df3ac38367de04e0573edc04729df78f684f67b0d1d3262feeffd27784fb9e961bcbc766cd9238d01fe71dd873ff59dfe54ffbcec1bc6e5bbbdd0fe437fefef1a85cc45cc98cd7537b23f1f976ecf865ceae41b42695d8ab96633e67d7ec6e56e69d35dc79aebb86bb760a3e52a5b4d5e7cdbde4bf7e7cc6e5641497ebe15c23b2093d8b305fcf36b3a8cd50f79ce9edf9d8d4fb8addd5c76b1da2c90778ed9f92ca8b96a1b1bcd178a754637331aa46bfafb95d0c46e7efee416d4eaa57714d2c3755e36b60f3281e6d854d3c9334e8c4595945375680b18774e3070addb8d576d9daa6748078b93274a6552821ddf187fa9b5c448c0397cdd3ad733ba90f7690a2548dd15d35f3b61d6aacff57952c886378120342fb035f1bf34b0fff4e366e7a379ce19c5c7f351ffa8d5ef3323e84d60163b574d1dc23dc590ffe48a23fbe3a73302718993b4f700b1deb2d1cd3ef9f269eb8efab71946aee2ac798198d1d1edba40a81cc7d1c3fd2d75fd933857546fdde94630ddefff76d207d603843ccedf5931de5c91ee8f63bf54f95f4c15606b615a14ffe1fb6d66a7faef86993f7f3bfacbf9d5755a6647dc2ff5f46770c5ef7c18fdf369e1473f16959485f7eb1b65b73d7f01e6d9435e720bb6eb1cd873ff8315d1b8940ae0f9facdddf63181b4e108ad10cf18974ae7563789878992e7f5763136438bcba1855c0fd08b1b23ff89a1a4c1f566704ce488a6de519c99b9c51cc2a16fb274a97eeaad9b3dd799dbba71ac99b67625ea0c591e5e3b4808f7307f9cdcfd77bb397a075046b88e0ee27efe18c99cba84ef37f3f0e6a63d3467bf9f7bce2ffe28c0972c50cfe625f60bea7f1dbe17de87ffc3d3507327004321c2baf7d55cf7952708e559f9e6f018fc713628ccc70b41b07adb982cfae3cfd718c1ff1dec14fc0fead1a567f89f44091eb3358ccade755b71ccdfbf57a6d38135f9d31561b9b58fd2976a396ad7fd65fbe484ea66a8c06f3c33a9d1bc9b7fe1c57a0d68d31c68d750ec55bec89b59d0d6cca7056129bf2d2ce53e273c5b66493273e578ce7b474bc0bf59b82cf600cf71b7c3cf7f352bfcfd893711d5dbb337f267b1d6b33fb257ebb96d75bf604c219fba34faf9e9bc496b348688c7754ef5f64febf9a9784bf99e21783af510ec528f38c32551ffd9bd41f4a64aa691c407cc4ad9cc784230eadb903d7d3591fa8dbf60d29b1073863c18197c2da7fcd6083937e583ab5cc587394c8e647cddb19c49b8cdc079ca500e371e59a94444b934f21ee0238bb68fdf3d3c6191e3d2bbd5833e5eaf59534e8eb6f1decbd547312922f77c31ccccd7941f0786cc54f3f2bbf17569e3bbfef66b7da26b4e945919f8568af5e0599700c32fb1e608ceabff21dbdaa8360d63658118fb19dd48f9b2f128febc429f0a1f428a33dc4bfb13ebaf1076068b3710d3fc4c13de020ab2fcb4c9e8ce9a4f08c7a2c1bbf991831f3038f6dc7c7c6da9bbbf641761dd0f60157f433bb366d5338cbcf68cc614ccc33e18f86d8893bb183b66227ea6f311ad9cf98ad4e9b1e33778de44f77adb6fd16c06ff4cc9f71837674f76eb25f6fa5e97de594b9d71ba6de04f6bb177b0e33d6c6b33d05e3be7ba64063373b36ffd34da373b59bf7e1a0330c38896ecc793cb1f8d56ff6e24e1dc3873382ea68ba9874fcc74d2c4fc7affc9f475b34d5e7acbcdbf6267eeec9fc167fefb3eebe5697c733f5bcd40127cf6492dafff1b4cc3b6f103f3259ebf56fc84703bc97df7c000de67b8cca970fa7dac68473de00f7e9b7b1ab656c39995f695e7828d9893cb52f5b177889225ffcb4b60e9fb27510ec45e0db217fef37cefc80f638bf2f3fc560b301770dfc8bfb6d8dc7368835697e51593d7ca6531e1f8c79274d0f9b9e7d0f7a42f584cb87c15f437a7dc35923c7e512ed53d027187712ca257fff5d7b67a0c731ed958b6d66117f0ddeafba9c43d0ffc6ef1c3b6a673dfc5ff98770bd5deea1873870462762e48978c2ca1370fe2f0d3eadcfb3ce3e87ca24326dbe88f9a77b0ac47411fd743d9d5b562fcabde33af5c680dd9707dcdab4a7f3d3d6f1d0383ec700eed9e9bfe90b6f36e734b72efb0a3c5ff1e7d9ef2b80d14a7d3480e9f6c84d04ba466df3426baddd56d6f7ffea99c616dee698db6fe288a37d87f6e3a51b41bcae0a3c832324bb319c0ec21963fe4e7212d70b7f6b4c9c4ea76f9fee71bfe41e0ac4f776de02a618c3b12cb25cc5097d2eda1c75f6b973fbb991a09378bde0c0dd167d79b431cf955a15b92a0d3225b3fd20e5906c077c4638567b9301ff4c5f095563222cade084799112c062572bd6d634fadeba1ce01e6f8c12e21356ae529158aeffe84d6ec10e9f616b732ba5195a83c0dbf3aaef665c9ddbeaf5068259b5b0875b98c09bec455c36ce3bc8970e073a143a1383b8e4583d6f639f2f2e70345b1dee0bbec65a21724f42b8024fc07fcbe6e71a658ae305e5b8e65875578c2eac34b82d629d7f49739c2b823748705b65345ed5723ca9167df95badd2088dc3d2c1650471b78c7aee476d3cebb08d155329b1df130acf995eba7ab42aad4e21ced101ce5436bf589bad8077518ee57c81ef0b1ec41e4c4aed6fdf23f859a097e131b92e1deb6ddbb655bceb6279c7f1b0b5fe142d9d41bb1f67ab429506df7e95a4f3aaac280e71970b777ec75cb8017f8e5c938f21264d8c22b537ca15332802825122b7f07de782d7fb395f9c5dab4d2c1dd823d1390cbece3aaf3915983ce6e17de3f0e91ae97accfc5b8b51a59a4255fb2244e065a9764679c4b1cec323c4ec58244e61fc2296b889c97b7c677a4e5d887f6afcdd7e1642ac10cd13737ad62594043b987da64102718327d5e6587d66b413a797657ff5ce62d03e966387c0a15e73c503bfcf4d7dcd571a034803e6e24877b35b6c5a9803c373cb1160dad4f1b84ae2496b129f6bbd7906e575df237d12e3a865f915ed9bc08df44b3b916c8dc6bb93e3f4bb9cd67ade163429bc6819c5f7b9fdaa13babdfad94b90d9375f9aa26f88156715931c3234f60d5fb5c9f7fc185ff3fb73aece1974bd0bd47d54525f9a72484684b8caa77ce92c065b3d572acf29a3504a7b9ebdce7dc7f6fd9419f3c9eab43192b70d83fba89a79c4f23b68959d68bd04ebb5d096cf28e8afa510facc7a66d7a378052fdbe09983dbb252325246bc8895dbc69d7372a76d7e9cbca175ad9af9a5d3a63b6a13e43a409b1ee3f7d9187ce2bbbdb4e2efa501ecf56b2413e07e21b92373f4b740eda74ea5ece4f87c714d9e63f0530f7e6f986d9d40f00c96272d5d7a09d69dcc0eee9329d997ad635fc2071cd2e8afded78e73a4ab1ebc26efe3015baa7ec648bee5e32d562b21f06645a98d1541ab8677e02eedd5f30ff00d7fc803436711c817b54fc055a2a08f79dee5ccbec87142b056f586274f2caba5336278fa06a3e0507cab3db4afcefb5b8c4555db027c1e7207b0afbcc13ba8ed068b2c113680733b6cfcd6cff12e5acf2c9d766cc7ce7d59378d4ba075f33ee4dfa617cf59c58b4c40f381c62408ba31ba3dc4efd776c23c5f3a9353bbdcbf883b91da756c5b7115a9c0d8adaeecd8118cc3dfb12e306f7d11d27de1219e8607b9ce763f6f9eab8c37ee9cf299dd90ec1232d8fac1a18c1655f11dc4299299f2a50bf225c1271e723e6fdf02c9ae56d097583e0d6de0dc84388fa7f5dc791ec9405a46b1539f9533c86b4c0dc8cdc17d6fc6755efca2f5773288171992334670ee303a04d4d51d438217fabe7536a7ad09e70f63c7856fecc6fa2fd87782fbb377783617c6c7e3300f3534b7247b60f63627cf48feb3343f1edec3670ee0188ffddeb0e7b90af72c7e80cdbd5b3a1613bb64d1f9f4a69ba733eb1b6031eac3b110a992f518e761e6cfaf1bc52914f9b48efd1093fffa477cce3ee0723feec94dec4f45edb8caee11cf5bce77b3f2dec1354632fc5b6b2f6ad5953fc1b68ed87e6ce154bf3ec375ea7b8f9fe05bc7aa5b8e825e3b4e03f483fe4b4cecf7569b09862dbb8e4d12fbf5afdac6625cff75bfb5f1749b38492893e0c4e231adf9b17ef2e74a48d6afcf316a57ca9b3e21f90dfc99c96f48c3a65e7abfc194a87994b2f44e65baddacfcf68ce4124af63d14915c308aa9ac241f4e31e6825947d88ea98448e6ad63566ceefdafdad8c486d2672ead72dd76bf58bde81a1c7ff46fee3d53c8d52edf2a3f3ff97d85531b8e08ca8b676e25a14232fdcf7d85df777a67b477a7411f74b537b98e7796dfe5e39cdb203dc7013f63ecda9d32b3e4a1bfc9f73c193b5cdfab7668adbaa8cc4c9fc1f2c9e31c02dd1be434c23908fee38736615ccce997343d844cfce01af8bd3af152a05fe173ed4539a39dd89d07248600f301b4f42cb3f5ae05bc01758c30f4d57afe58063e3b177d79a49bf29f202ebe898d215a3adcc9b92ba95e95950b38c6ac4d1cf49876797076b679419e3e633ee2db3731f094ef278a3411785399bc0ef922c7c0d3fa2dc72b827d9ffcfc8d7f5b1f9de3d20473d9b678e306316e4b112b80b38764b8a4f08f8c7cdb1e37742ea2b1cb97c64fdf56c4bbe9a0cef3e8ccebd3c6806f2d5ed7c1757807a217edc69c03aa515e9478c3eab81cc371fa640e617989ec6129eb9b0e881f9a96077ab0bb6afc1b7ddc9fffacbc3dd8fb7ef8dee7ef1ef9ce1ac667c55ff833db6bcab2071b67ce2dabe84ef169e4e619f6dc9ad65cdd4fceadbadd242ebf7bb6d6f7f1f57c11ff56dfed717f20e7af5d73c8b5f6398cfb4e30c881efe4718f6c3df3b85712fcf2a767c8fa5799e9c77d713c3ab13255e79b406e593bd60f724b7bcdfedacf6c9bc5e45d6dc9269db29836bc3a0769df3bced3be7fd6a64cc99ecc0fdc2e13e773acbbb261e78c6d8f07d82a7f888f5d13ec0352d6633c3073ed0bc92910fb4864e32cad82fe7ac27067fc6a876a6ca7c4ce91797970c49c6166cf83b8c35ff37170ec24c4661299b389a97a8a6144758946366862ed1879a94ff3acd37b3dcf996b4ecfca9498e66636fb0f53d665ebce2926e55fcb740c9608e5d852801ffbc9f7aa669e2e7b900f8ce3b66cee9dea2a4cfce07cfb8001c3f4a34938a1b8b48e0b65bfd374d2d7753fe92bf43c924b719c1f23d7759e79182bb2065eefbfadfe68cd47f6fd7fd256b2965afdf7388e642dcd1efa95ca434f6c95342e502e364699e3dc8f27f5bf92fb7a7f27f73db485dd7f1eea69cb76be935eecc76f61e5c33bde437e2ec73bda85fffc19c071c5bea0e0858c782b5d23c17305b84d079942b17e52210b9db27868e383bce8f1be54badd384aec73829c6db4474ebf661f27396de426669d5299a965cbd662b990d332d00ea38e0cf75bff3c93b1f6b11bcb3467e061cebe961f95c015076faf64d7a763f89bec7a6cafc37f5877aebd9ec7cfe557a63e5a975a29a3bfe98f97cf717ceec7541e2e9fec05afe7c0f6b96ed0c8e7485fc9d68927adc087138acddefe7caeff9dbc5bfb7d9ec8bbcfe7f890f3dc39e64d647211b16f11ad1325f1c40779fcbc75864fd702d5a1bd56fca68c73cd9d01d3a67ff07d548666c6f8771bcf2ffb6047ce63f6385696567f92a5d9bdfb859cc4cc15222399a7bfa8f7f66cefa572adc3c631be6c83b8c918de4c76ee3f97adfb0f7d9bbf3a3bffdfd6f7787ffc8beffa49d67ef9dccbf168c9be4bdb4e9fef11bfcbdcfff76f491fd607da73ff5f364ef3ad33fc7d9da03d37fd75ada0b27e1b9fe699315fbe58338f6d7ab56ea05dbf8f0bd3ef74fde401ff397f2d6f2a3782c797aa15d894389f2baf618ff1d964f3d3c6553e43717f6b745ebbda3aebdc731e3166b1dfaadecbd3e561522e7b8337f9f87946ba8035e1e245367893b329fc5e595cbc33ca6b2862cc046d76067bfa223dff217e8b77f9f071d3c79333f9176b339c13bb384caeba585e492cedbb6e94978dc3a78b58f9f4b3e1559eacaf487ed81a7251e777c7cae75a940bc83786fa57a8fe4e5d1f67dd94cffa9da92be64aedfe51d018fdc56152e07cfb534cb1f9e4c9fc1464e93d145bf589ab8aa92fd1e39dcd153ff20e99a7ab2badffe8c6adda213d6056dec35979f16665e589c95593ead884f757f9871ef089b15872c549373901f309a17b1f57ddfcc897950238f370cf5dbdc9c739d2d92aec571ac580c17cd0e10c5e564ae5814d7a7d92e354d8611e548c05e8ee4f0c1e0a5cfb39f61463bbd0fc9e562c678ce6435336e4fe982dfee20bf002034fede487d8d9a63d6c3e62a72e3e1413dc6f93f242f37c368e726f730247cff906ed905331372eeb4bb9b8bd2e0e532104711e61f985c1bb9ce90570ffa375de3c03eb59c3e510db68f33ef169c07b9ba31d6fb2127091d978bbed432eb535d2c73427d82bfc9e005c618b847c6fcfcefd470e5eaf6b3f998ff7375dcc53ed3ee1e6878fe1bcdf7adeea3eaf9bab9e3e4efa6a665de1dd361ff2e4811be4677b4a0479372e2fc0784de797a5b5bea8c0212fe7da44a0bf81ef65ed0c84b53438110ea8957fe0277ebc8fb722d2c372fa2c7007ad7ae4d92370d97dd2674de0948ae8b3c0916666f4591cd3c67c8ff40fbf878d816ffc7b68bedbe7d435f3c5c61a0a3b17e69ae11f78c97fe0b059c3b71ae85bb3c189e5e4578df29d7987f254e5da34bc2c2d0f7d0fc62283be53e835987bc0979391326bfb3c7ad7a6cf013e005c9b4d2f9dfcb862dd1b085ffdf97d715871da4c7f9f8fadc2374fdcdc284f8b835c69d2ea5d3f6c8af08e733db509f7ae9b53a1b5e62639bbe68a4d6b3e4f902e5b6cdc751e6636c4dbabb3f568379e14b231bd68108799e27922ae5fafebc9b9732646e9f2f0916b46942ec71fe87cffeef07d6f20bfe02ff2d4fe1aaf9bc6d0329cbe9a94147e55deb5992528d280b173b7c79e60fc14fe984b6a0c08b27fa846992c8df5e5c15e5b25c5e64ee348a6778bc18a6362550f9003ec4e4ea131ea0126fe982f55c9bace51ffccac74696e6e9a44ff1f08811125da7d52a17a15932b75c083b1de42902bbcfc4bb21375acb7f4708dbf5d96f78f6f451c15387e5506fcaccdfd765b5632c808725ce64bebfcec3ba2a5c96b7e1c1d5473146b86fc2ec772e1dfe15aa72f26029421e93953eebd536e67cf7e5efec628624b94bf5569f0b635ce17b5523c5c5ef2ad4a2b742d512b65de5cbbbdf9d5b9502b65525f437355b247bb99f526a7ab187d37c4658c85bbda5f7dcbc9bebee699c25ded59df72c235cfa16b7df95b4e75722d7997d38fdb5a54c8de88d6a4cd757899eab969fd1dee2f933b83f7a99d51aefd18e2d9bbb66f3c879bb8c504cdf7076ea1c7f34f307f9cdfadd8bcfbd22a99f1c2f6ec075fc39dd799f1afe304084664ab7c28efc975c02138b6dbd8604a92fb0d4e23bd5fe7d7e2fb241797d401589547da0e129351d78f7fe37a31be24bd47f26fc877ce056d3abd404ef833bce3a6bf07751fc01e7a2b91fc8ec63de8db713853a24dffe79887af7a5c4ab0f96ae624a7e3ffaf700c3017531dd3c9e0e73c8c3bce03ae63e81ff180194e9b3a0e99e0f6c26f23ad317f592c54d80bfaf27531de709e69154c8c2b9d27df8e33008e102696b1e66362b027e9bd1a97453ee44d8e723cbad3b83492e7cdbe7bd54d85c695bd6e27d7ce39b75beb84ce97563bfb048397e1911ef5d1f7ce0f1fdc02b8956accdc61fbb973d5f02f119e1cc05665da3d9639f5b8fa0ee2d17d9e35cf31d8b5acdcc7e962ce41dd99c5fdffd87bb3ee54992d6cf4079d8b006a2297092aad2d3d7702511050dea011fcf567d4ac020ad4acacbddfef7c639cb12fd658510b28aa995dcdf93c4d9e6583dfdcb6457301bc89d087593aa739653a98cff913ecbb3da99fcf19553f574baee65e012cb8ca1f048467cc423e59a50a8ae567e78b3f082fb20498dd7b393e835d49f616f2a5bb72c25a5ceadfccb6ee7de5c7643f30ad2cd8d843d867aeb39031d62bbb6edb81cce2b759d3066299c18d9d50f7aae5d847f31d5baf772417a2a62f36a9d333c8fd9a9cd4ff0413f15e367f917df20f659b8e82eadcdf33e9dc90ff991fccd13c3339f5362f17c033e4feb3a9eee4f0f7dc9073a8d93f6279e4700aeb664af1275c3eccf9c63eeb2bd2fb9dfda34973fe2e174d32f98e9d4de9c4ad31e4e7829bf937fc7f80fe97caf1d6b892efafe4fb2b7caf8ac9d7cac07b46cdce1775866cad79ae72635cd32594b79501b6d2bddeb19314b88b4413d94d39acfb2a29424ac7ac6c335d1cdefb76d7a5c50a6619a5b5bd18ede65e55bd641bbd630fd3f9615df8c877d4a38b769301cb19d97448c6f955926bd2fc6b654f0bbf6278e4332219e3421da28caeb9117bee46ec3956cbf0faf52bf477b34ed1b83635a341dcd4aaa3b58b6b929fe27d7e384dad3bd14f7fe09e4957cee944c5d4ee7d28f69caa95729353e6a4121f0aef973bdc0a9dec2fca1e482f4d5bb29f3fc9de22fa9bb738fc999cbf0be41e03b28f9fbd6749e3c3007ef32da8f56953c76b9167d56369115942f1253dd2d97fd6bdcf30d1eef89512ba7620c2356409bfe186adef9511bc6c81c6f4f948e9ba3be016159ed6b3650a9c919aa8cd436e8610783d13dee0947f3076ecec1670e9d18fa3b79d5e4a7e5ca2b5dce01c68c7798d53cbaf9cf52518ccd13372edb8b8c1e70a70e45b7d7f87c9533ee0167a10eb11cd1ce37fe0facec046fb65140515f034e75037e7cc2eaa38bdb8ce9cc41e203fbe84f3bc6c76437e373e67343bd77b025c5f74ae4ff0f5dea473fd00ae17e79deb3f712e5bb6b293f10aecbc79a6a405f0476f2d76bc13814be7a6c49e2f1f1737e457394e3906b9a6bb19705da7a8dd18b53b43bb8c3dcb71f98dda056dbb13b493e6a8dd09b78b4ec89f42ed42a36997e076266a97e0769b448e4bd6e9e3dc08531eed21b48690eeda4965b29a3025ee6b10a3fb7a93f2a21d0378a77010c49ab80955fd5ab72f9af60903ed7dd43e61a0bd6132b12696e14e2a0fed7d13686757cae853970b976572e05c77d685971637c760be3c6378d544cf5fcc1824d754d0c5d247f1a9638c0d4d74f35d9dab21ccb0df1e27850be7f7328fb13a16cce6087b275505a23b259c77d8e7700be214cbaa1e3ef1ca223affb8f97ef41dc14176892caab9d678fbb806f9d1d9f706cb90768ccfa4379f25585e3788b176bfabf6f9e338ee07dad7c87e851afd7bdc710a5740882efe6093bbd02e4a6571110562cab876795375b9b0c5618e656e1901deb23d2c74611fdb42c33bccfa593a241cdff167fb7d5363837e03cee6e31ead8bb4e66b46f7d0d8e24bb39817475c7fa9b3eb85c4d66f3b3d79d12ac2c39fee1fe100409e8b1f8f761ea9f9c2d8ec989f1973d658a22ff2113937060e74b8dff16fee1749d8af617255bfaa5a358ea8d8f53fc1358fb423604b2099cfcb07f9323f2497792c23dbc00b8532d232ef02d84ce214ec8367f87c36cb5c02ae447351e7df503cc9f3a2835f345b3018774049bd8caf3c5d263584e819b3e1bffb0ccc7f24c79883ced547973e775d278f0fc60ddabc507f9f54e3f4856dfdbaee730a98112b1bee09ebe807dbc20b053cb7ed7bfea276a2a943bfb6181c31be7eeb2c08e7c21cce33ea7de90fd6e873ee1fb1ae5e3970de91848e12c17a39b00e9ed7f46610fc8b9513a0363fe5fec1fa6a757e48d7b4b7d755801b1669045fcfce7eb4cfbc50e8cb3c8a43bb4a087793b5c5f83564dcbaf286addf65235915c6091ff2a60463d0cde7fc39a6b1a8df53eee5a7d7e3fd734ee0ddf9e4a01db76bdcbb3626eb30f16c2ff7336b5ecf5d80e7aee60f6dbe7f6c97b5584c4d5d2df66578cf5937f848a1b4f13d8b69b1f69d0d83717e3fa220b32ee1b4e6d8e2195c2b8eb112cc2aaa3fefc00fcad2231a33d53835187e480f6d317f27d4cb024f545bff0a380066154580515263a23980ef8fecaed83dca3cb2b755718873bea6e3532824f97ddf58d29712ff6fb01715ce76e1cc86604a75df0ff5a73706b09ed0da32c81a5ad5efd8dc1ff0af52ffb8a9c7bef0a0de8f67004b28e3714e11c191949bebdccc13adc27336a92ce1e777f004e1f96c67fdfe60cf7fa9d286216be44f399e759d4cfb2c8aa7503ef6732bd6712b0395b36b97f96766597e9632c18d7dd51e9c7d981023da3ce46369e501e1b99fe0dafcc01ebeca197516726fa397fe814d311617f4a75f076e6e25250db8e8db177f8e25d6f58ab2c1f01b6e84d77a87ef8b65564c784173b28c23c94ff17c6b8272235802a8bd84ec57e4f76ae05f4caf2a91d30f38f27faa6b4f09c7fc097014b14c2c64e3bd8385ba12186e55292d26842ebffa87eb796e8c635f9cdd705e64112fb3e1783e21df4d31cfb37fb896cdb538d676594de417391ba59f12f2b512b86e711bc77e660d9b7bc5f4f31478379a5ba6d6f1fa6cb33026d66e93b0e6ca394fd7d666664dd3c5c6e2e706b3f83026842fa4e1b0d960ae095d2e36d399b9b1368a615a3b63ca4fd666b933196b6230a3a9797b721d70543cbed6b0e6af3dfe18f39e6fa4843ef6f963e4b834759345df37fd23ef616cccc5ca483646f31be903f97d81fafae039cec6b4b465ac481b269434ebec3856e8c871b9309891a977c6058def8c473a4bede611157ebc1fcee30464e64e2f1fea59f968e1f82de69d88bbf902f29d0ee8d4301fcffcb2e5db2c5c83457e6dbe326bdf7af4e5413ea959e3d6572be3fd2d3894346e3d6004f9073687fc4709b87212cf8956e899aa312471aa19e0217880a343e729cc907f92a8a04fa73d7bb523ebaadd0fe340f2c0df8478fc8fbc3eede5e9e23b90d26a6b87a750783fb955b29f1fdecb45f5a17af67a6f713326e0f88bb6476d919d685d02ce4a6409b8682a59da9c3cfd63a15bebbd21a607cf1edd3cfdfd6498a9a9ead77dc059a910bfefb7d2860926a76f8dcb534f0aa3505a7cfbf1e8b87536a7d0962f5b7bfced7265140c169017145c4fff68d5acfb8e9502fe4bcd15221f1a19f1b6d34727d759ac420e302daf9ea3309fddf3fe08d9bd181388708559e71073fc9c9955c74e6aebef4301f2c471cde481a56ce3851fce18c8576d3192925626d7b9ac2df632929bf94ebac6fed13abb9955615999e49e3eba86cee2a44a72bee4ac02bd23ba96e03e013f6c7054a24f3daa54ddcd281e8e3adef1bdb2a717d7f9b8fa5242747459a9c6f91bf8c109e7a55fd15c91fbd827f19aa61fedd8dc00bb4392f3b6b6592e822ac994a3e2072c039cda8164ddb64274531d96a7f369b6199ffbf13e960539dfd9e6c573a22bd2b3c16d7ca239d557f6b4f07424633fbe83e3e6b6b2a7f9f248e93d3d7a8e1b2ece782d9b5d03b11ca13d61b30c9c35a922fd3cb6521d0638b61fda964fd65370602fea04d95753de8ff7038c79353c2d85a4f06fec45cb86a72d8e135dd4c91462437e3c8278b2265ed135e51cc7817cf91815727c8d7d31883541397b825cc8c7c5197df729cd63472f0f2bc7bcb8987f68e03a4a626656d6c7f7e9e30eb8c7c53ac8ac6cebec8bad8174e4a2709dc50d3873f4f2066d9c79e1de585a6fdf5695926c1d375e1ee785776057249e077129558f526d56c4d4bd519f0f4857060c602ea2cf515029a1aa97a756fe4585964d73e02acb16df3ee4ec305097114c589f8e1f79c047a5cc5c7b717a8061449f3722399b818d0139e69bd4172dc6d33fe0bb67b1485777b3da4675f5765fbafae81688b3cb72b0e6693c86ad538eb73a70745dea7c414d9251fbef20dba4c191d8c2d29a7749ee877f6360eea0d60ae71a7c79c629960f674689bd73bddf482d13b3aae458e5f65ffeed14cbf1f9a472e32f39666275d0d8f011d8f0c777b2a7f6b13f5012cf41d7d56de5b62de4c7536d6b8cc5f8fcad56f299f085e5aa5e9e1bfd239563bf9633e21ece265c7d7408320bf945335fc4b24f15e7451dc75525f9e2ea0970f87a7189f65eb63cae0b22a7017361998d2f10d3c43e67bdd60a9b4b430dad856c11854274d6a4771c33710087ee806cba60f051b84e0af759e9cac4e7ae31d28baec11e7eadc76bec307b785a08c0ab7b512701c47b915d80b1d186173f8ed078dc503bb4374303efe3a04a0a7f02fbb8841c1cab883fc52b5ae78587eccc8c4dd05e0d38067d37446b5f13e77ca88f22e03a3b8651906d74cf764faaf89ce3ddd34771c07e54c83ffd14903c312ff4386ad29c87b80813b2a184d61decdd54cb66374d743b6bd6bd8d634f4c39f9901f3471dfc4dd210ead233ba8f4e54cb99992927a108bbbc6f4b3401e65bc143a1b38a384df1d248b92c2375a99e00b20132e9aa054fe0072edae2b9bf99263f6e073e54d8ecb1de0cbb5b6470263925891cbedfbe3d1e0b36be290df828f784e3cbb4c0133157f26f2f7e9fe223e22730a276ced2f423d0badcb5abf68f802675a5c795b66c35c89bd5db33763f92b10904d06fb8521fb85d5b269cd8f86ecfa14c7f5a24c9b36b2ae0259279d2bcf7681ab602b946fbfdb1349e1ebe50dfa9b8dcfdec062802306ada976afec706c12e2936f6e354ab6cee2ea8bb311e643636233e307725ca23d44cece3760f30437f68d9ed7653c2d7748d76553de1dfc5a075eb46c0dbe96abcb45670e3bfa9787fef9f19e510d5a6f4e89de44fa1070ce912c8db46c5179f68cf1ccc5b77fdca49fd21ac9957cc9259735c75f02647b3972b1d5c17ee3b6f6260d0e1dfbedbbbfa76839153a8b14dd2714ad612824483f537db5c63b71e4873376bc9336fcff35d9827e37f059901fefd905b21160ccdc21e8d3ff4376001aafad3dbb8402eac343bb2059554aeedb41bcccd6ffa95dc0b98e92bbf688a1e5c976f2509e1cd0fb69767af6aa0ee6e6b3fd7778baff8492eec7ab5fed73559abf6c8502e44670cb4f9a88fda17a4f6d85fb3db5e666953785fe14e8f7da463525e53b90e63c8c799646fe715d734f9275c8f05ba1bc52b6d001fa2728a7852ee7da6c4cc9e739c86739db73729c149f94acf5606cf6b18bfa21b0b1cf6d46505b7978da86d93a9bc2d3e5e293597cfbcec7b79f599770925f77685ddd9e5e07d8f54faedd419dc0f367165b7bf425c7e5db9ae3cf81c85f90cdb08c9508783ea70cf5ae6bf2ae8b28c8d667bc2ffbcf3bc581a0f0aa5e0ea8f14bc8f8913512a5ae0d5cedb936bd3ebdbf97f1dff84c22293e274ffb8fd6f8d91f7869909598ef4d2cfe7d5d2eaea18d579507d87ff0eee509da01aea55521fb18b541f3ac49efe8efc3564c0b4f52521fe955b24fc343679fee1afb3d1d77e6f82ff6690c760d96c1f0b9b635710e005a77c85e88725fdc5450e7d3dafcf1139b1fcd01b20f16d4ef370dc953934d7d7b9cabcfe215c733ccb32e5a111a9775dbf757372ee276fe15a861b139a51b07eee816abf06ca8393979f128d2d28fca1f78398cb774c6e78f46bed83dd7f3dc4f7adeabeef4fc4905ac63b9f0043743163cd82a4279403a1ecf3b13abdcbcd8e2dfb14f81ec790e30c40bdfe09ff56544ecfd221092d700b8d6927cc915174f4c6f8158469f04075f4ef0f86b6201fcc0ae6315e10cbdfbc76de59c614e892df0a525e9d9bbb167d4d61253c6174d3e8ccb2f2d5db0ee7193876299aeeca0d85623015db77212f4f71cedfb952da3bf4dcf899895c9a0bf65cf9ea1b5c38715bab7f7ed0f80036f8eeeafdbecd1a8f79ac10e9703b0edbffeafe9df7f45bf7a4568a709b1d7a3a042f7a56216cefc45ce367918cbaf01d9ff5dd9e0feca5ef7b292ddda6bb2f7901f42ebf53ff8dfc74db4b54758668a0cdf8941b5394038b73e3ee7cb583ed7cffb852e4e7edc23f1c33d72d0c4e405d9dc5be17c5e66183f1fafe7f5a3f54cbf43e13dd2c71c9e07dac6f5a427362ed789095dd4c9fc3aaf92ff9b7121185b2fe3ab10e9a599927af1fef4f31948bb3ed0faf7f451636f91b578ddc2792fe81e5ae6ffe84706838fc88fe557b7eaaca708af27b3b02b85d275486f3476105a9bf0cc47fee51ffcc9d8b537474fff95edf7b7be175a6f8926324550b999af17b1e67ce43ef2e9c524533206c753b8e40f6b50893c314ce5b84c1ef959819816fee414cd1da6088551b4b237bc7667339417d529e210b836484db020bff9f1a852e1fc7678f18488d1044508327e10705665663c8bed983bde8616637fc0e07c24e2a7e9e2ecb69d29df90671affe4b3793cc69420e7084999fb59f1d359020718e06d3f97aee3cdb10df8bc7f86d3720d109f70a01aad5f69d8d6d91f28a3dfbc6b108fa25e1fd01c9c03b05d9e9f816899d27dd754493d31ad2046f0f3f30ebde7e9fec062bc9f7c6149be00bf023527bf7cb7b4f72c231467ccd65ee067824df6d33bf6e633ad3197ffd0d7defaf1380bb06443d15abbcee6f4873ee7bd3e9f5df4ccd947148afd3caa7e7ff36e7fc13e8cf260b0f90e8ec91fae3d3fb81672199ef19cd07d2e7a7d66030ebdab12f9cefc0fcf65ef9f6be1bd66604cfe3f5c3fea5d1fe6a118fd727e718ca5e6dff0e37d35171264879038cb18eb171172c3e1f705f2190de684740db299203ea3d77610b29dd6b81dae2becc7dfe9780bd33b2f83b89deb28c7106ceccdad892d030639e0dad4e75417c85d37dedf5ca3bc2cb9e9975aa595cdcdc2954d9db3019744334f381f19f336346759c836c279e2ccc5e5f80b9a6f5592e1ac8770055fb6627a0b45bea2fde9a0025d436aea3ea0368dc2f5eefb4d8c061884ebcef93df0006460cf3e9ba3ef273aabd232b3f8e49ab55de3789db6ce8241b24f1317a7ad5d2641665d6a7c8800db3697d6f71af1c8460925e6e457a3484b28dfb9c9fd76ef7248e8daf250d8e79ff84cba395be9cc417bd6592059ed39c1bee69b81dc58c2ffe11f08ff470afc1f9d735097e2b550256c7fb8c816a9cfe7901d81b1fee93867a5ea0d475aae65cd585171bdf9c58d9353280057cd15d9f3a1d4f2ccf5ede85028015ba5534709793023f0519ec90718db073e2492cf9a746ee6ac9ea766bde965ebb31f6a6e3cbcdeb4ac9ddf1d70146e785584b8f0c4e7d8abcf8dd0336a2e97d38f398bcff37e5e3c1df81ad29d5e9e7fc901dca903583194bf9ecdc1e623e7c7387f505ae7cbcce22146f194fbdde2b5d998c7e3d889a3bcd1f6a653b9993a1bf341bd76a58477aa3fd9bde9c5cf905d64659a24c31989eb78b9c7cd180fc918dbbcf8dc68e28be9615bd13919b54f04366cee67a3344036408c7ca9511466e911ed59380b69ae07bfea065c06e2acf2388b41f2b25d8f66731eb6d5cbb7e6ba5bde97a34c704cdf5cddcd5c1df2e90e2ee14240bf6d918ca9907cf9a83cc743b2745afb37c0372f41ce1365735a1cdaab9ebd19ef26efc01baa650a1b4a9b6fff588e919d2ba7fccdb3cb4c8ea7fcca598c7777672f2da71fae61b518d73ca79f4e39467eac2f6d34cf49c73bd1447351f9d3e6b71bf04ba1cf7acaa37beda4eb09f91b75bf3675cc41d8e79a249f541df046a8f5b1be201f7ae540df774aec313ba9bc68783fdc9f410a4a84ec6e95b223c303bbfba3af4ec5248147815a7bfe811f2db321f6e1db9a76e4ab01178326820f45ad93327bb2960ed4fe453e5083df86d652288e019baebd4f375ef583ac39817c3f2e905cadead8cfdd191a678d77d37eac745ad6e384f74c234b914c3fabe2fe0475c1596b2fe19ae7cee762e5c8705e46e6434673063929b11c6b52f2701f207f7f8bfcd2435e6862bbaf96d9837c7369cd6f919c41eb4fe40f24b7385f5651bee2862dde21f0cfc0395d8efca49dc3d07e22e4253a377e84e6d13bb0682d1d9647c06a40762c923bbc5b95cf7473a449adefa7893fe460424ebafc47b9e6c66ea68a32ef5535360dfaee67b966570af8d19abd600364671cd7b103f57e74de276031451e67c6cddacd6607c8e9347be73c9deb9217b96ea7cbaf5b9dc4a1ec05701a9983cd08f2700f77e745d715ced789dcc1ba70206e90ded6e43ab4063c92178ff760b9c01c18d625e052d226406dea185e61209beeb8603eed32d5a43d0f9c2555f985aea3e6abb0efe3043896ed28b9abb387d05120cf18620ba43feb7ecca1fb7e8f62df29c636453aa07d2f9c9fd3ac47d4eee6d9a3db167276e1ba262689ff4ee1ec443e6ebed1b5d47bc4dd9cbd27f24d922f5b01d901a31bb2a58398e8dafb7c98742795fdb38c68def804439ec8687a4e809f6f2b44434d1ce6f81f70dc5c916f8779634a73655f3325ebf0657dabb3e2a256a79795358c96f1e66da7ef739b2dc39dc007ce8cc9352e000c5265328d55bd9caeacf50b7d06bb8d91cdd879ce5b80fcd9496e6a22c6255f1edf0b7abd2c13a6a8e36ccb63c8d779e0da6ccecbfaf4e4dcf89d3a05cca6d78d9014c68d35565c57b67472fa9ed8b6350f546ddb7a505f886cdbe1d833ce1764db8633e09dead8b61dfe2e697df1b2b4407efd0ffc6b7b0f720946fff85c7a5105792fc7486fba455025af5e5cce56d6fce5912c3584f26da79707d5c8e7daecfd5ede3e9019cb749e29d96cbc23faa2130b4bc6686cd15e78dde825e3dff27ca7971ead8fbc6acaaf6cf9c514909dec02c7e0f696af69bb6b6517c533bd15c6e5bac9ebf97d3cf5773906522fbe91fde82fc73d1ffff0534ce0b317aff17e8a994c37bd7e983ff563d4eb47f6533fd6fd584cf5533f66bd7efc187bd8f5fa91ff18b3eb8dc7f6a738e2ac3f1e3fc610c55e3f8a9ffa611ebbfdf07f5a1fd3b4d78fe14ffd78edf5e3fba77ee8523f86295f21a641ce98b6e48cc945cfbf75e22dd5226ee231a3a580cfa3d4893c001b8b9c6579108f49462ae86638c34aa01e588f505b7689ef3550710e055cbfc4f1747cce202445f09cbbb21707e960453177b977b609310639ad63c8ac5cfbbc729c203be0ffd073e41c6c8a1fe317116537b5b1226ce7128e4f8c7bc3d031a16080b9273fb9d6c65d1ed794ef4ee9cc2383d6d06eeb2c16fec0ba345cbae2f0e20c3e525cab13ce9bf607b6f68dc973d243937b0439fcc34b688f0a34869e3de443818afb6425b2cd53ffce3ec4b5a69d3e209b98b31813bfcba9f32e9905ba524bf9ab678f92ad3d3a1aad0dc3631d9414fe919aa3b81beb027f49b218cf52befdc166013eea533e8c11d1e5a758abe42274946219cbdf725c5e491cf515fc6267413061a11de6207598c65e21b19c867798c2d9e9f86f1b314d0c9b67fde31d473fc549cd7e87e017af79d9786f3974803b36bd784c3b5e0d26f5719186b30503f809d2b95d03870663f6c178e2381cce25ac7dbf8db3b5cbc2b2476798af3b5c2e82ebdeae8306d39afaee44eefbc718d5f6499e835351f97271f9863165ccd707b1471243a36390f4de203148bcd668ffac20dcb3afa180df1fed5d33e3bfc3291b617ec0a7d75e60cd88607fe79a04e39ebb4c9303d8efdb8d9c7f20db98f19c88d9394cf1ecdd03a1fbee54ce4affbe6d9cee588e497cabce07e9c5edea71c33998386e973c8bdb7177f5c99dbaa2359a43cc9180fddfc2efd490cc1bde4e4d9249bde6ac0ab2d94805bb7dcacf27e768250edf5cbdf8521dc5772da61383b7b919957f1b31ab8673a6c93f4db519de338e8ee66f74c0d805495ef32aab7abb26a898c7b796ad91ff5dc7a5733416adeeed9fc9ae0bc079e9ee6fe45f409dd0f33a8ee4898f94fcabf17358430fe3e7f7feff5dfc9cc2b3696b4e70ed193d178dfe193c96b9750d19609c50e70c741d23c4c7eb3e4e37b937c532eeae7ebfbbbebffd04b76be55cbd9ef90b91a35d0e0f1277df81add57be6ccba7ae28ce9738934b297bab7e57c2448963e7a6efd5b5f4f139cbbfb67cfc2dc174bcbcf7ef9cea975f1f1bb35b2b55e033e376aeef3e8f9bf95bb24d7f3e91aeaf0e6776da354cbd834182c228f03ecba543b8627cf1e164137a7efb293ca0bb506f22771abddefe28369a68a9d1821dbc408f56b141c714cb72f67294e07b06d96545c95b299204eb2bdfd592f7915c4c7b12d33b98b8fe3b335d18a02cee481731acd0737b2709dbed9c3ca06aeed8a1acf08f34cb8277cbe53a635b72dfd7985b101d13aa3d7ca1d0e77f71e29af89cd735e4389c1b1428cebbb5839675e93022497e9b3d2f9dd794bb77e3b53e2285de9c85e4a8a0e1face066aab4e63f074cae09f277c3c56edc8d59eec5d102f3acb7180b501f45ea2a56f61c6429d2535bbb4ca11e95c24f584d66e9023d6fcafa9e859e5d0ed4aac8b18e3341867f0e3ed0dc329fc6299aa377b7697db6efe196b7f680476c010de7c7327e5556101b841a252aae294c315ec151feb30e988d3bb501586f5fefec66cf29c7fd58896c4cf3367f905ec33827fece6e87dcf8e94b10e31aa9e551a66263e5a1ab17e768ac5e9e9ca95d56ccf5e4c7700e1905d9ec1c54c96b7b56796de23d7e4ce263d83e7a358408f8de4331bae09aa035e02bb8368be455becc86f47cde565594a8e2bcae0bcb97d993711483e2936bf4c06b4fd6c13dc81e21723f7f7ece723f0e97501ce74b86fede855cc447efec56e5db96b346cb6c7841ffc3de92caba0f8c7fcbe1bc14d95e583f17686f14369c43536b71b66e62ea342e01c1357bdbe949a10a2daf7907af4c2ac70f6a6b19554f004763e59c2186b93c6e78ea5c05ea02ebf826a97121f1e432efac6f7b9a29d914e7041eebbc2f2a460f6dc699928d71aeea7191fac7458ee3f565d1dd2b66a61c5b3fc9eee541c01988641d3cbdeb4f120c8b868f528e6524332f77721eb8c0d614f6dcbaae11ff01938189e5f8cc68c8b613ce4cfb8ef037fd2ed5ca3efb3ee661fab2b95188e4a76a802cab7ab2aca2645904b5d962c223dbcbe3ac6130c90faa00f92004fbe49c7e3af357d7a1e2b3b3643cb74d580301c6a4c8b559f2a55649b17518b427df90be5f660915739e77e3d159c963dc45d8ff47cf89ae9a38e68318d7f86b92c9bb3a9a77eb80ebfd015b9c7da23f939563f9f31953780796d58e8b626b2f529cbbb3e7310eca9a96839912cf4e2b0ef6f3ebe70072aa5efdb86483ecfa2ac763c0cb25f349ea7690cec8134d4c6f1b7c6ef3ba155a9fdcaf906edbb02e673ea869e8e29c78169a53248bac70657bbe9f3285e730b9269d79d561f91ac34f755858079bfb58c15dfe105d175ee7f4103b8cf6831a5fe4518e4e3f6ef1bb1c1d721e80b97eff155d033520d28fba0673c2d736681b3f18efa475c7a70ec01e6c7245904dc986a295909cb2177cbe8e7dd7be8e5d66ed33704c863755b1e36b17edf509f2db718e1ed2c3fd336d09d933eba21b5b6a7dfee0c8409e597b3fa43fc7948f352cbc09fbddb1e385f280dad4be1fa5b388ac1de50143fc5c699e2bb10bb610755e83e4f06d6563bda6fd3067265a0b598a6cf802cdb92f59e9329bd5b8673096c16d1c53f3d8d105c18dbfa9e2345f1ee7afde847f667b271a6a93cd5fdc2a8aea33aa65ac506bae6303dc5683f9c9d5135c2b26fc2196d0d16bf3ee1934d9f3b83e6856ad9df5692e242f9e01f1b53edfc1aab643318f9a792fd7c5216f56514a9f01613db3a6d74f0f9b846796c993753368ed95e5b17b8f6060c548cea2b559c739901dd3b129a766f77d9fe529712665438d2f1ed44d7479544ce1473e8f469e847a7d8e9af29dbe8827d40edb1dd3f9ff5ff2ea223fdb149e05f9143fe04dad2f7e36e3b67688f698e95751aa09cadab21632e0b549ebcb569c5d3cb14ccd264fe307ee6481cad3b23650bb2ba7cacc9c961f6bc604ccac50189d5c7b94f8a235af63e54fe39fc74e7b01fba14ff332ff41b6e4ce7c18a3fa552cba33163ff1f63a9db803ccb5962911b22970bd4f370f29388c63f99057b88609e271e07f03fe358d4b61f06f3b23cf978339cedbb0f9cbca59173547093987f8097f8fceed7bbe6753246f922f3416cdb93df23590ed2b4e0b7acfb915c658d2a4f925749462659aa74e7f00d76ff834e657634e76e338258e5966b39b6763dde577e323809fb13caeb1cecc9ad871e11a9d76d56a70e6974719e77451b94d80234ecfc16d8c64e72bd46eb56b24a36b5e5c6791e21c06b9aea9aaeb25a9f7857cc1c3ca397772a63ab94f5dcc4a4315875f1b1de38f6ae20ccf1d70adf16b392ee9f38855d787c2e31fc2f8c35e6e62a2644fac91dfaa494d6e5bff77bdce53d3c4f07b99be9f54bd3cfa8c12b95cf16a0afb1c7dbfa96b9226f95a1512c0410fc536c65acb00837caf89301e5ffddfd730fe67fe1771ad1155dfd3ae5371dd89ffba557917b3427afe1731fa8f5fc4e829eeb5266e4ee294b44cafe5eae25f8b8377f6c42fe26a4ef5c7bc21c831a5f3865a7dd7c30bff9daddab79d276d9d3285e5239a0fe2efc327f1490ab712c72c1a1c746a5da03df2e61fd874d9605cf5ec5e096299b59d9c05197f5e0e64debf217b78dab1871fc522289bb6ce53fa867ab0e39ad88e11bfc3f8fa2f643e0ab4b6a83e5eb4ee1962a48977b63cd8d04bc00a2d7f6f074ebbb1b65eddc8498e8b93a7f7700c702e18c875552f6255978b9e8ea0731019ed1856c827f3ec0dd50fc86f44b2b6cd3babfdaf5911870305ed8fd49bd271fbfb3cd7ff72fd52389f8ffdada73e81f878ae83b864345237e81f9b7ca58eceefd700020e55fa688c902d569e5501d972655afbc3c6810519d7c122e9c689c56efecaf014f4b800cdae1db35467e39cd6655ddb39a1b99c485be223d27600673671c4e5f1dcb579a553679da1e76be29037e268a7eac46fa4b9290dde54a575cfd7447e0efbebfac73abee4c7fb92e4d45cfc18d9ad4f706238f8bbf2b952f12639d1f91fbc6a9c31b6cdbf9d7786eb24e97e3275eecfa2aaebaff677f5575ac59cb438f9f66ee40ca8a9d3ba923a60b3aebf823ae007f557542ca6b83afa88f159eb1a882dc7ab5ac1192fd22f2d6fb834efcbd9de59c4fa128abc85f66d9000b7cf09e31d2535f6f7a9d10dd2a6cbeb27bafddce5ae6d0636d79ae44375f37d1ed8b4386696911afdce595a99ad80a7a38b5fa0897bde17fe80cf41635b8a090f790a54fd3360d076eaa7e73ce0645765d6cd9b9ebf844e39aeebf71fd6444b6b5c03d0c3d4e8d44867b39b9c32507bdfc72b09aab2e37be3777b845f51f6e35f187f2d1bf6f1d708060593eff4f25463dcb46b797f8f0961bbc53d060e7bd3c4e8f7d8488ff153d32e875da3431abb4fedc5ef30875aa75eeb00fa41525817d97e07e028b9382c8fed2996dfad9ccdbf8285fa23de4455e34dacff13bc89518bf73405bca7be4e92b3f4124816a3d961e50facab66239fdeba78809de8feb9bdf381f67fea63dc957b2c0841c9fde3071b0aec31c878361058b0991f60f7002e22e0f788ccbf82851370e96b8341d9c1beb8d6981987eebebb369819bed0a9bba99ee3102cf2cfec618e3fc6aaa1f7d81d9e116010f4c647fe1d2622a93584738943cea0b5a549e7471854851f97b9127b17823147e31f9e1fe01f2ad09f299edf0673627287f1f3b6d3cbb3269d4dec03ed0b339b255b7b7c77aeddcaff67efb5af6bfd9e602fece3ad3dba86ce3aa67c342207cf387725562ad7dee47ea5f09a68e660df4e1727cf5e7cb9193ffcc1177e86f770aa731b9e61fbd47b41a664643d3658ee9c62978b52973bc7fe601feff43255b11cf8403ad0cfd648b6af83ccbae2f320afb1258267182244362c3b98c451f4d4bea138615531e1350e784c989d539e3f6fd36221b1e34f2739ad6ef9e8534f5e7642e4eb62b408d80de3e8693037f8b1cd9485cf2eb616330a7782e23bc8c68e95b1c29e3f1596f947a9f823b24134b68cd5c9f8d5663f166bc6fa70acb3b1997d84967445f75fbbf622f7b2f4b023b944ae9d5e76d305b2f52bd72ec71b7b867cf9ca3f961fa15846fe7193bb55b247f734079bc8cf3648168c37e26ce48be9712b6dc6489786d92cf7c5f4e255c9de12d3b3e7c0f324c3da8c2d6b3351f5fdcb322dce2acb069e54303b3d7951ad32d6b8a0086eccb7cd0ecf2a5b266b9ddd3a3a7a97279c4ec8679c4ca395f138776e275de380f0ec40fda38d6c9674bc13f8c013c6c80ebf615e83728ce3a865da9eb126852a9ac049d9729198f9d6861c998bcb41fc197841a0eed1e870c1a4909fed2c96ae3984d858cd6168a17568361c864acd1d22e3fc96b83e5776319665c3c51382cdbdf80ad83303fc4c52396ebeab5a1c9c8eed265c19d5286234e64b7cce1b29b11b6f18d6ac3fa3be8713e4f3d56790803f0279b372122eacc909ce196a2e24d9786ff2dfb713f6b2aa94a3e76c2c6b3a8f9731fa7b1d038699753ea99502e3031c6e504366f95ba188014b1f7fb7abbf338073651f3bfa1ee77ee3eb45e407023f225ae302e0dea536b7ff9213cc8f47ee736cef537364e3f66edd3e6d39b5e119d3a68f8b1e0721e943c0fb87f1759999c06587d7718e6cd2959779c0dba1eae57c65032747f13961c186d5c482ffe4d6afbe5e26de242f5411e9cf0dfa9bd5b2a45c8a98730efbe50b3f983185f7d3ef423170f4f2bc4cc75f73bd3cfb465ea833f47752f8367b5e1ecdcbd6980e1bfeb9299cd3de6c960f35913dfb36f31aeaa37c6e44979aebafbeb75315e53c658a4f2779adf9a85429c9dbb580745f3a42bf7feae5697974d3b9a18c779369a589d169995d4f616c96f363399e1b72ae4df7af615cca3a7a6fc94563fcea55e5c2407d1603e40bbdba71790b6ee833b267aeafbe102db4c93cd7a6f86fc8a1382a481e25ea94f99ea3f5a697ccf2e8a267bc34ef7204ee0ad091015b5c1da31dbf10cd9549c6e1360b3569f3a7ebabe7d72f426db67e0d0fd7727ee09fb4d984d43c305b9b4deb315e584c61fdf17aeff9f52c53d887bc5a558a6458eb78990d5fe4d432d795fcaaceea3331246feab3dce85b053e343976902c10f9ab2a2454ce5274d30419d986dfcb381aac0eef2f720c9cd45f729c7cf9c2be9c4fdeffe972b3927901cebc68a0622ef12fd226728ff3535825c073b91092c2bce5be7c04bc9838c0b591178c6f0e5c72beaf9be57c32bcad6eefafaac8a473e3fdaad9f07fb432a65755cfcf8a31bd3a7ae92c936b611cf2e1cee89c21b53eae98dcc712a91807e0d58bc5cb96052efe94cab5283cbd398b3bcf6b6cdd2e374051dbb5504b289a7cb34f70ce01d4c5cd0fe7b4e57328996595a62b5dbecaf199cee14dbb678aeb4e7c85d231274f1f21994ac9be3df04d233944e4e409d769876958f3cf233f5d18dd3c8770404a6b684fb8ce724d8f98bafda7becfd59b9b2b46f035afda732fba0fa1f0a00f1398df37e0daac9f230efbcfb9fcf81c49e6c9bd81f3e633e32f9ec967de7191024e00e10e7d286f0d9c47144eb1ecafdf51c79c9e275567ab8efe14d80bacd5c97ae819d439de64fad55bdf91da3d2f3fd0b8d450fb8cdf71a4d2bc679ddc3266005832763f4642c78f487cdb60d355a5609cea434ec74dd0f7ac0f180fe9c5b3d748a73678f632959fe0193cf5777e9f3f219af9aa5222fcbdfcfa39602ea1d870fbd539df486edc7c313d78fa7ea8094ca902cf7ff91d726d6c69e79817df9eddb68339ff49f132cbd926f1840fa463f69eb8de7f3ae9e853ff40f21fc97ce07909800b09af9565ac9c356efdfde924b126b2a927a6ac6fe2bc5e3963cfbefe9168c2c708dd079f798d8eb0ae8c538c745deff70c8d5ffd3be850e1ba7fd0ee069c643324efd173f6af86c9ecadd9baed83d5f9ed3518ccc9efe5b79f85b04e97b1725a26ec62795cdce4d9c69467a75813d39bcf90fe1f414fa2b1387be21affc692fb2691dc5c1b9779c0f1301eb0c68d538cc70df59b4d3c213415a66def5732b24dbe2d67738077adfb8a7400f2119c74a4d9ec59b33789c2ae8ffab47987a31d07b1265ac3404c2bcf59104cce865b89ccdf15e60e8d9b8c75fd9ebac7de8e151ef9bfa09b0eec5b6b9bcc5fed4a31428c03bb20f5f166887d6dc7c31895e65682cf629025e87fc375e07b23049ea7845cdbfc6d86b675035ef3f81a5b9c95f819f5598cd8e0b8a8db8a4196d67f1b2ee80624731464f750760ef45375713f45cf063cdb858b716d3f02a9fe0cf751c9fba8a10d58ff1fa10dfc1c86e7bca3ff57a4d67fe90f5cf4ffd4b3e7d0deb547aceb28d0cf4d66c5c1d18a307619bab702d86b7232bb06590ab888868ddf493f5a17384b4e72d69712f2cc90257ad3f09c0fc6b3d998e0f0aedcc1e61b3862d03d329ea37e9b7af622f56d2545b6b22651f60dd2c7100f53ae180f01380bae3e3c17be5fa3efd7267cbf367425dce925259798d30f5857ecaee15d028e6fc8c7fbff9e73056a6db9450cf5b1c013dc8dbfc1ef4c8d7db6a89226e68eeee5de1a3cd8ec6ff160812f76d2c7e274710c8c59b0c160f3ed5b4d2c0cf09e714cb33c537131c0d8d84a9bb33f8318568db391107c8d4eec3ac4184835ff7be1b5b8edc8afe394d8e334117091f280a9f9a1d7856174dac54aecc5049b03d987799d4381f13994d4b5372b3f2b4704a3e3103a0bc6e798625b6387ce926e2cff366e6243cbac28acfb38d5232cea07e304381aa300e375dcb64e0e781cd4f8009e0ed8951dac128ce141c605da50ef8fd77dfb9e18a7c79e2506372a3e714e07ee874ec5eba7eb0ef6589f5300c70e71ce4e90f1856eaf0bf3c60e57ec39d304a51eb3d83172df17ae31b2257d9d6ddacb2903f815f6ed23d4a6266fb245e9e05ce8e20e3f7e3a2e36686d57c9690b7c63a9ef0b80655ab8c8f7853e29e14a9f02a7fcd63813cec634530525dbda658a6b499a5cd8f5b28ad6907f6d9d0bb592cf5e96169ededec39458fa1e956b8f8e9e0e79c6cd39e3f6509cb607ba3f4ae46721f2fd2196e01fd87f7676cb61251f17a92f12fe7183f594d81bd6f75adf8ad3fa46dfab6e4bfa345df4be67629563c395cda0e74cf0732c82b9337d53a753a8a3b1b9925c3fc3d7ebf2976f31bcaf97979539e3ff18179d250f39702ca124f1c5fca449b0365f03a1ac7908daf565e4734d4c9365ca8f77d33bbe9c93aa47234d1c165ee566680d6b0e890dc5e54289dd78ebcccf5b7bc4b97689d63d8553eb3ec0a9f5be838c9d346b2cc658c80fb8d8334d3a8b9e6d256e363b6c6f79a16533fef772ba88e8736a642f425c4ee8dab1b4edeab0bcbe3167136bc64f3796671a0c3f37595e32a6bcb036cb9d3ee5573acbefd03b3fcbcffded3db40cc79c37d3c54c758aeb72b0a93e9df3ce6195d9da5c980eb39959e9666530a5e130e1dc60940f63c6cb06c36b0e0bf9cca9cb9da76b06f251799783dc0db0eb5d8ebf041c0f5c65c151417e44aa3a2cbfd389bfd6c19696474ba821fbdd59f89d4fdbe4ec355cb62d9f9d0eb8153b87b36e86cd2721dae354cdb76c7cf0aadec4c4e1dc6f6b8f52c0cc16ad2a941238fb5e7351141cd7b1269d53ff689d3d4789dcac4c9731920361daadd7ebd80039854b0778fc2185cd0de7ace9e2e002ff0cf87f42682b3160cc0ba3b58ff6c101b551224f9c552b677dd145beda22ffefb889fca9827f4feaffcbdccff0b55bc8c7184dfd8175dc8a231662994d5f5a4eafe60ccf314fb57de01a2cab8ac3d3dc58e7605790dfe6932087333dfcf9369f98f85c8f7c5e1c82bc172760fb7107e0d74bf99de72c163eb7617d116af7de9a33d7499eeeba3e6741e71aa8e2f57eaf1ecbf15dee3185c3ba32a66fe1a47c180b5f0ed65f6ad59ecf756ac5079b7049e52c07f147eec71f17b5e5b1ece4ac6dc5d9cd1884176afdd4fe24c4e5a1fed23a578ec15eec8112aa0edbc140fab956ba332649775ca364a53fcdad373e6d36f6b96ba6c4ca8dfcdd9119e6203dbb195f6859ca605c63beea604675e7b0f5af1de6f9191a70ecfea24f19e0105e90dc0ced05e30f40efd1bf47d4e72e5f6cd5becff2d8e6beef1ee4babb15b14de97c3a2adfff73c0f472fdeecf70917e86f3bf09c37b7adae07cec8c2ef735e07a5067f95bce1a05b88600b00d8203735d0ee4f1b68db3bd0571f1a5da437e8bd607e0f3a7481e0d0dce3df971f2ffac8c8ff14e8822a809b32ddf4f3b187fd14ec7ef07f555cdd923c493ba1c9fd662e4dbcab72fcd6b3b87e665fda9fdc9d313b2af647e3e39572b31a1f6918cf6d16565a77e9042ee798ef4dce794cf547198af0ecc95cab1ecd524419e451a1c3723dd59cc68195bd7a27b7a79517537ebf2bda63ccd6fd9d1b74feb3069eed9bf1eabea6fc60ad72acb7c108f907d097988bd3c1c7a5fb57a88b398ae1c49a79eb33804597a457b13afc7e4e2d923a86d776da568f06b483d6e5bf380d6333d4ea3ce386d710d088db9c1cf8ddff1bbd6b83eb271c7f3fa7227478113789dce0f3c35e6d145d5afd11cbd4bc6571b7b76d80afdbaccf4cd10480e4a7a661c9caff3daea80300da7fcc04fdb35b411ad9b3b50f240da7c07c7163b4eabed2eab699b7b0e9aabf2d7631f54a8cfc9ab17472dfe629ce44f79fcd01cff6ca3c0bbfdfa7d62a44bd6243782d61f1dfd70eed435e911c4fb03389b5ee09a5ea13d7b85f8f60ce4e70cdb6bfb78cdcd2e7ec633b208fb6fefea1fd8cfae3e22f44fa6de518ebbb236106a59dbeace1a3b3014dab5e4c71dae6006c9b6e540eeae6b83adb4ccba40fe6b368b7dd11aef8469a9213f83e32f5e961e43222bc08711148c53a32b48575750db1a8f06419632f87e0c5a6fc50f6b02ea8470fd6a027ba713bb9e8da91c8756272ab177ad73ba1bb986392b32e5f84ee457d93debc078ed84477bdfb1e969bf00c9919aa375e5ac7f9c3773605d3d47de231b3bc82c641fc17a40beb62c5ae8da34883f624fc775b7b2c857b238a56bbf62d5f8555e5aa61c7b725c3af772d1f2c6d6f6f4929a835334174ad436dbda218be715dbe3d84676b390c8efee78b97deefd13c5f786b1bfa8fe189cd7c775eee679dee5c9adb11cc5edbafaa4ea609574edfd077e5dc7becaac0cfc71a91ccb96927a5989c792b27bda7ae869097a69f6b89d765c9c5c9b69eb148d29dee3cf30cf2187311a51f7af7dbd4676e033aaae2dfbe04c44f76cafc07b06705598e008321c62f6daec1cdee715629d84e695f60fdbbecfc027a4ec984735c9c876e6436c3fe51e9593ef1aec406deaf6a83e897cb5e4867c33ee029d23b93e21fb8ef2050a576f78be2f2b47feb1ee9aea6bdcf2e9f7eb22e5fe3a8d60eeb35a0f408e49827443df97efecfb09bf003be5b8e9ac45436ff04d3a6764aab33905193f9045e09640f39506997571b9563ee077fa38b9cee2a20cd67b37b352e4a7fa59ca6ced19e47b78c2fb5996166c00b8adc91ef9357e1c32b2a8a49e3ddcc37a10ad448e3b9ca19d3e8655273ffb14de7edaa7ee4b47ffcd28d963f23fd587812f4964d0ce19b4b50f8fee0358ec0f7c83c6be883b39e0fbad0df9fb3fc6074017b45c79174da475159269ef455f4f41dc400aabadb3693eef904d619d19e41b6aa2856b6aa57de3a703b7afee669e3e4afda38b7c2bb45f93d0ae7570f97557b73520f5164623b78ec816efe6ab0fa99a082a07b4a9e71ae6daf47a426b6ee57431b1606fd7f5b2267f59437e551fdb34eaf1132c4eaea3307a932f66766bfbc529b2978fe41c3d426b65ed6c6621ce79cfd1fe8433e73aff713a6336c009b02efc1bb21590fd54e73e6e6ed4b53774adcf8d9ab865c040cec3d79203fc9193fff4b911a3a2fdac437e6ade9ceddff7e1140a487f25855fb9995fd567fe8ffad3dcf3a6c4deedee9ed2e2239c62be00e0be42ba504f9ab950f56b1c64d61d562ee464a03542de71e560ecd9ba1e3e9cb676609bd357a6148ec40ef90cf6e08cec9f57f909be9a1c3778800f711cebfa3d123b3ba90ecb6bd2937bd6f869ba5c34f642b7ae19e47e072f0d705c9428acd236ff05d76f269eb360828c1f35cfaecfeca4277d336a9c36d20f13af515548f99d4ef07762e5b61579d6173bb55f35fe56ac493596c2630eef7eddb37f604e90af636f2ad70990bf5ce7f7439ccf1f7cc03d90fec1580325eb7129fa9cc3efa275f4ec11f02a86c2e8e4d9e9712bad8bd0803ab5dc9336278cb532bd123c84fa5994edf00eb6430098d6e6652b5ab9c745cc4e2a592c6f4683adbd61b64233c6d17c02737121bfe33ed3b6057ee6692e94df54bc3157c584e41585a99f21ffe517d74832bae63b90a0cef2a6ea9d7e60993261c9dc6d2ad71edde00c09722766e0637531bd1e3d83cc0b17459ec80f902de4822ff05ef8428a7c8d07ef023952575fb28e5b7b747bbab67bf87c7fda339e68211be5fbf3f1fa63826c76093838bf0019057a4878bc677ab863096adf8ec3d3b81cb31aac89ddd3ca10d5c80157f4933ba79f9073629d7d2e7df5a8710eaabfd8bb19ba6edac79cb9849212f9c745e60f9433350fa76efd3b65733c9f3b7e2b44275c176d021e8f269d935aae07b73cc57d98dd3c6773839834f559cbd82810eef186a91a21520f5bf3ce9735566e1466d6a4e65e80fe388b3494e69097b6ebae137cfed2b6f9b30cd1fb3a1ff983fbc616209f913e7d30def06e9ae7a414062cdaf758ef18e22cf6ecf22360cee967cd1344627bab03f631905fe6ea6e263b721b3bd491bf623e8ddf10bcc0c2b595d407ace70472a531b6789229d86efff6e15c48a9fc817c52d873e5d9b34328b0586789f94d3394509e8551908d904ff22a4f21d6b2f7eaf1133e2e9e6d25109b90accbd699b19efe81c6fa224f95912c36fbb740ebc6d3df631fdef91acb52ebfbcb22b289eeee8d6c6636e0ac448b3f3e7c699306d92802cc2ebb1c69c2c7c81f987bdf9e8df0bdbcdc13cdbdabbfc7cd3da6e7f4d36af995e598c451a0fd3bd25d51287cd431e51bf2c9437b94078e95ca229a93e1119fa135f200d92a8fd6dae375d4a96fc4fbc605fdb75190dfe4daa303b22fc95ebbb315305e8a977b1596250d7ee9bd3dd7c465c83ebf3463202dc6bbd939a46549c0cd38cfacf9195adbeb077952d7efc2f3978dec6cdebfc6cb68f7fba01ca3fd4abe7f366e2755a7eaf3ef6dd88e8cb0b9b6b6fed91c23bbcd315806e361b6ef1c129cd7f65cf1f17c75f13fcabe0d41db080daeca63d9dc95bfb51ffd64fef2cfc11a70fd9ecd6ff3dc1b4b9d6fae91fd5020bf086370416c67e139cad1d37f71af0a6a34da5cd83fce15ae83eeafad7a3dd4e7d3ed7a8a9a1c58ffc6209d7eebdb1a3dbcdc66fde89c35a270b372ea19bdfd53bf7780fba5536bf0c6468ff40a5d1be8b3e7f4cf323b62548bc16751b19bf931b6c130362afe1bedcd46c772c3ba2fb740c4f52fa180fbd5f251e27369fcdd933836c44401731fdad90325447628dcdb3a570eaed3ab9fdbcca35b611c04dc871ee641a3a387b926c939e58330387f839edf39b9a789ee7969ee49649e83d6ce2f65d7cade9fb602d405fe5686e59a84ec88a7f3ce123fe0d493d1042f5999409f9ed86a7d99d6ac016cbb35f62fe1f3ab6de8c2056e3688d7115eb68f22b4c3dc3fcec10fc0efd6d401168dad9cb1a96ff3f96766b57624da5346071bb4da49d707b6ef839af3ac4c811357282b5233d6f8272b477e3e6ea4366cab53755a92597ce218e4abab97d86ecdae452b737246939af77c0d064c47b6f66de8a73637e0783e9bcf063bfbe63a5eba1e5855807dd546feab0d1ebad9e6231cb11c6fe42da52f1a1ff3aff4e59cf77e58a3cdbb422e3a655bd6188ff17fb4de1a5f926070832fa98953c899f4261d9ee066de1ed79d2e22ffe8011f7f5dff8b9f077c81f5735e43a1c47ee624bf401e58362d28ae48f2fefd3813c6d804cef42373eaf4a587396e08d1972680bd34073b743abb2199de8f9df4f2172ed83e2c217e42ee01ba016a151d64679dc9fa9cb67b4218e1da8c14d6f0c9e6babf915862e1eaf4d8819c0d55c0f551d2c0b1908f9e406e51bbe69a7850ef79b0ae71db26cef4376ddb98d4248f687d0e6353b5f3d4edf388c539d5652d8f7abfd7b1eef2db4fa867e118e1ebfdfbcfe93ddee9875fef2f6adf77afc7b51d06e79e1ef72129d07806d96cd01b8fd8e7f84293b0bc7998d787f16a3b760edaaf68dff9629906c7850f715b8b3a93c1f1f726e6ae37b9891f58370938874616df6395b3fc70c67cc9d9fb3e185857a4a33d7bbd0fc5f1de15e42f3f2e62571862fc3f2e4d4271ff6c1e9ed92b0fc67a817cd6b92a1685dce7ea477b9523f27c92bf35f993f8cceeea0f00ab1830d8dc8c6742913fcb47a6a8ebc83d91673d2eba400dbc18a55b3b3c859353b930de9bfecf6fef574d22f1bbdb299aeb65a3e39647640f3cb17d0ef9178ea796919b59c5da59a0df1bcc69db60bf96244e8f73c9588fe4b799ff456cfc714c1cad839ff0799fc553ff52362f3bfce6d41abcc701f8d2c4eb89f2735aacae3ec65e0ff7f0816e019cfd50b8b7a590cd44700c9226b75050200eb2b3985c1347bc2ac9f41eeb61ccad2f9b768df01689e33dc04686dc95067f12e9a62abaf4f20b7b38444c3d1717e0b5fe399fae995707ecc973cf66937fe797dd7eaf0fb75559604cc96e2c98e8c6a7985e8f63f7f8fcfdce7671dabd1888692a0376d7eff4649d37ba217362dee32dfd6f4efecb3901fc07fdeff68b81ae315883c8b2d5ff64d9bf2ecb62d791631ca76143552f2f3b3deaf491c600023f17e75cafc89cccfe3727fffa9c9cfc81927f66fc251467c51aedefbf936572fffa9569623931bbe7e6ffd4a30bc539c5acece0e4c75dbea25e6effb9cdff80f8c94f38a86dfee56c8cd685dfc43fc959e4f3b3a127b8fc5d99f100aba8287c3ac6d1f87818d3b11f83eaf00edcfbe90c8e29f5e7d1e26bdb593ee21a85bf9c23ddb537681fadc9b8fff3bf7df4afefa32bd49124b3cab3a77f27e3d28f6f5f9c552bfbf4f60ce3fd7ffbe6bfdc3799c2ba9952fcad4db03e5a31e4bc9af3ba9eef7f73f3afcbb4a636eb2ff74d5bd3b526724b9f74cf4a9af794e66fbd9a3079a7275dee41a8c57ae73006faefeae47e89f7b8e8713cc73f713cdbce7fc3013effa91fd7bfe10077fa1ce03f62d3b2f7d8b45d7f25eae614369c7278cd2433469dbc77f390c5266fbbad9b007e84b25ad9c3af79effc7c3990c7ae71bea837a6d424f96b654c73a85f31d8d41e28e112f086f9ab2ad41c5ee3875c52f7bc5d4c2cc71446f981c5f575c7c5d517534615e46f394ee15c4c13c7b5ae8073a050d8c75a25e73ba9f41d8c3d0939701ec607407b2382bc33f1ca0783721ce233c314be17cd7cc58df9e09057ed19929ba9e2b8c6552afc1be1b86938369242b6c714af093dde70efeff65eb53fb7e67df64c7dcf948e71beac74f982e76833de09f24523dc4e3be91a93efdb7c5ec84f68eb10dc1b73d54497f7a99a16ef30047e424d676ad9745ad9bcefa5cc9b1c0f01e76d3be173551c175e9cbccaf1903c7fffa28ac9c9afca4cd5cb835a15f9329b674a1cd56d0bb762ceaac3625e312185f5b2e4e667cd381f547b7c09edd16d2ba619cc473c8c55a3887ca91c13beaa6ffbf611eea412fec763cffbf31983e6ed5b3b5a97808b72efb83ec9b15ccbf9f3ca1e5fb6199ffb319e639a2f55895df45db432d8b3765cb0ee71c104f1fe3cc75c6e67f5c6c0359ac876718da5f95d7c1cdb45d6ca3bf0697df66170ee4935f227755e4d9b1667876081871d6e948fb4c62886bc13c03c1ddee5add5b578a144388a270cefc7548e185eb30f3894e8fcb3071c4be230c7baa1c6ae82e7376b17ff66719ea38cfa790280bf48d96c2aae5baa48dd12c9d56ff2c03bb95768fdd6b1ee4e0e3f85a7b972e69063ea1aec0dec60caee940d3c16ae0e793d2f1ed253e2346fb98848ed5b5bf316058345ee71436c8f225da22717cff1d2e098f4ea98faefb5813abff6dd287bc098f118c37b5f2daaaebde17539871ace73a2873f42617f550d3ec55ce9e71e36d82fb99ef4d12db4955b28c9a7b99ebcf66aa3b2fb3a901f6a44486ebd76dc7c1b223ff01c6542b85369ce27e6c1efb912bbe73914dccbdfab6a1ed3359d749fa99aa85c75182cef0db4a7eafd1931d4597dff7d4e7fd45f62ab8b34639a03be7d8b85797e3046e73ece178d5f8fcf051729c6ef29095fe88cf096824c4632bdf5c76237930fe358265c7caa38fd5ae9f20beee7b0a36757dcf015b55539c809c894583ee0bc36f4771421f924e33553f5d64cb584b6e74ad5cba85b37f45e9fe714aedee09ebf3de5ceaaa2fcde0fadc7c2c2ef1797480fc59a24f3722ca3fdd8a9d995e33992e578feed29ea3be4f5b61c5f538c9327506b5528a3c656c1b8ec6d0dad20bfd0f5169a01f8ae50538eb9299ab502b8909d674dde8b2df0729c5bce2223673489cce1e414aff0985e803b281b16309f935333d6985348e17718c3b5e6aee7c3c9e944e3dca862c23fc202011e248aab15f57bab531c4a06d832c5561fdd3c7b56b9dcfea55e33d4779db542ee51ffc6e375935c02ce8a826c81f450deac53b0954ae0f70ad0bde3797def930bf5b2d45a823ae304afe909acb7afba1ddc13df03e69daecf00fb8ac6fc21bcd11eb95f33664292931aacce98acec4dea727ce25996aeeb51e737d5610f04c712f38a23bd5a7ddcd5755a96a26c701ee50bae0fb474bdc1d50dd7cd78ebefb152759faf56412c8b8befd02e13591c7d8702d409269ebdf8f644c87d34913f22c3bf32df7256f1a97f1c5cc7ba79f67aef1e93bd6b0ff72d16cbc7d5739403f28b34dbbaa077dbdaa3a31607f932b3a89ae421d84c5a86fc47f602b95d681e5b99f382643d99af76cd74e53ebe47673cc7dd35a69751e77df5e4b5bb06d9ceefcb8cee03daf7bdfb137eea6d5776ee1ed51952ef02f67b772f7829b54e31b72059c3383719af37b80eff0db8095bce1a91bcaf2fcf4932e508189964cd95c0330bb59addfe8de8f3126c3735b135df69f2b3466f759d96ef7c303fc5a5a06eb2ebaba50d5777fd0c9ccb8ef3e31ce56ce15c6f7c969c6ebe7bf72f0896028dd7807c2a2aeff8690e7bba821cb7f2a21a79baac1e731a6f8d1f382e0f7ca58a49e1eac9ababefa3b940fe07599ee4355e13fe0d78c93017c1b4cc83c126f533ab7a92c38dfc916b9f0b4275ce173ccff5d9585397f32c5689d60f1b70fb531027fdb1079f87e896c7b8037d2c5883e10312b7d5d0be17d3ecd36cdf25b8f573a75a7fca7b8231ae35b8a92deea6d6e0469804ef62846cc81ee68a12c219fe0ff9e40f397289dcd5c421e19f67490d9dcbcbfa3e0eeda6f63ee9d8d6528874ec773828c7b243feae4689cf2dc83b3df9fe517caa1b573836dc0f423440b6a23f08ea5cafca279c761d8c125c0bd2a9cd0d396453f0032d6bb8dd881eb1c63be9ccefec05f01775e6f478e67b183a0bb206ef39f69d33afea2547f39ff9428fff0ce78235ef4071c3472b7d7f9e1b0cbfd22366d58e53c365e90f64c0850b92d911c648a76d1ae5c3cf36158e6bc8173946329c29894c7bd26e7d990b72be93aef8b9ce9ab2c3f7b161f33160b9cd169197cdaaad4edaead3bbb66b2eaa7c8e4d21462230a57cff5c07bf737893671f279f1ba5728cec7aefc158b8990c7b3232b0fc05fc81476396aff429b2c3913c6f7e6ff933f94a3b5a37cf513e3c0ed619dd1f33c8d2c4835aa284f00c637e61b45f5cced23ddbab3ce035343bb5a341e566c02382da721663c19ce0bcd80038b0d03a29777d7e1fef961fb429c3fb15f88ef39aa335bc75788d16ab9bfb6a00ee7b879bf2652b4409f23fa8ef72d538c5f2a1b35786773636ce0bae751bd4b4d4fa0c38429b7d41f1568a09ef76f4fd396afd947344742715a3bc82cdb0b2911d59ce553d2902a4e325196aba3b382955376e4af0d823b4de7d7d9f23ffafc1c09ecc3995f641e37250c7396c8305ac64fade16b6e9fafc453ad42ecde4b60e878a4168b304f039b6b637aab9253d47b9a9d0bee5cd36e351449ed3e311c638db3fe8854e6d793df6e0d3020ffb280ab3f4e83a9bef201eb10167556b3b4cfd636f8f0d94dc60e7b18a7115f29d54ce54694fd92949b75fb339d261d006c9432423f1f9c698978d6967dc366d1dfc4a35e1f7c212f6f992c33887769d8fffc0dec0fcba1f2b53900ba77ac05b3ee14d553ad763f75ab7a5c6f615785f9fd56a59dd79f00fec3fb47f48d675beacb0bcc37ef1909f0b6dac7a1bd3184ad8de039f12e49e8c7d4ae3bd8efb452b7b780e0ee708f945c68d89e642f981fc4c1c53c0319a9d83b12d574e3dbee53f2bebbc06dbdb623ae3bbeed6f0ef0de10c7181ee3a9ac23af2e3d1d1afda789e3e61ba76ce14eb6ea22b64f586ec6f37c36bc97c51a54677449e48f251297b4a1594ab3ff8206b462e3602f215ddac9503b3c42339afed7e904f32ecf9e8003cab9c196bb339923fe09fe980cfd43cb7f26cf63bccacbf7ff651497d9be73cf397cf2763b43930d19c9c0f9907f6ad392fc8a87dfe33e7ed5a13eb9ca608cec0d65509f84fbd75d9725049324ff0790a24d3b4aebcc8976cd2da2816aea9dd629e53d3afa2aae5b82e77bd3aff7a2fd23829135592810facc6d3811a7d224ba0ee579ce6b89605e35699d8473ee1b3c43cd724d236e3f986e748488a504f5bddd9f6ffb29594d43bb04c2d03f03bcfbb7ba9fbce785fe965b1b24f545cacbca9b769be04cc39ebb6056ead73faa927c5f6c016da6c7dfae4a8b9995986de930fc8a6ae7d8587fa2a8339e34389253ca72d17f1a3f31f82937425e77e5faa9020f94ef12b273fcb3c49ee708a6bb3f113be594a8e9973f031b6106f83dad0ef9523d7b10c8867bb7a0a35e1681fe0fe5bc4068a70fe5e9614a4fdab3f606a0e2d46d54b566d6d46ea3d68aec675fed77359c7dd1c388bf9c71e2c42d46732cf3db94e8d87d8cecdf2a8f0aa43f07da53ff77187b9ca0a8f1bbfae299ee89e6ff6a10a4c89dbf1628da3ddcf655ceb7b68e3c25a291ed475b731261c5b3291ee6bcff9ade442fbeedd1af80f71275d4f06e61215913faa76f8fe3a768e887409c829bd5c42df019f690f35370dd7f5531d985c3017ec28a165a247f32d4e3127606f9cc8b34a5c034ff3cece14e2d705fc2707b23576edd171793ca77e06712a88713dc78c91a347e7bb2bce7c95e3e9b71c9f0f1827a6ace35effe9fda8f8eb14e25d3bbdbcf803c0e43eddf7775e78a275f0b94d6a626ee564a797371f6290f99b678f3abf69621d2bfc884271ffea49bdf3bae9b58f0140c7920fbd5832e6264572a7e5bdb8dee36fede9bca7e7f237c61cf5b41d2877ce21898f37016efff69c0373f63048ee76cf7d0afc2e8f64682373cc9341f9d9f77d4abe2026cff5ec9759f2744f7d0e985c93bcf1aecfb72e4c4b2a1fed918f7759e9d1dffa76e2d651522fe387729c0027ba0b38fd611acee09a492dd76b9b72dbe5f38f565cf0ea12ce4d885dcf9ada40baddf7aa52f0ba12e457bf2ad95ffb6c71795839a11fb04ce1dcd88396e1982e5983857b40df75d6e55b17b78acafdb1e5d3a7b0cfe97ad0908c3bc6ee046c61c0ef2036abb77292532fc6627631a009ffe54c86f143ba91f8ab3c75c656d8fae8e20f36b9774ce75b67c178f6280d8ef353579796ba9611fd1ed73ec81a7c0cf386712fbbfb6ddcee0d7cd6c4a3f7d3249977708e7c839b12c4e917b28b3a7a4d9cf2868e39923bfd80dc887db4015b75cdbb3a70ea7dabddb3131c336e63cc101fae63c8249e529f93e0d8313edbc03111580b4973be8ef1e7e668ad9cb1ff40f6ede16cac6c6c83f57512b20336423a85d8e30c307540777efe6c4fa6c0abc1bec75a9faf0a62cceb174b88de5c8277b18cebb6949ece2c5eede49775ec4fbd1b1f18f2eb6a84e42fa3b767b767c807a8fd2a1bce222e945f55adccf905ed97704a61f2e273b037223b31cee481b9b63c4bec4573e437e0078475f35eacf52802bc108c43867428b29d6a9f6c867c32552fd72b6b7cdae8c9db06d930d67ba664c5c96cea4d4f789d4ce7bccd31a76d9c86dd7588fdb150f8effcb1bff6aba6e37c7900f922d3f1b120b3cefec04b313ed6a6dd6ff13e8675272e4e8437a130aa7a9fb9e0ebe35c6d99ffe4ea3c8c9c3a072f7ff4cdb77159c767e5bbbcda4eac69f3ed929c46ed38633d4719999c053887fe00bda712059c19ab3a3eef5d76313f095eeb8c014ee4a3c578fa3ec6fa46aecf66e7ea63fbf184fa8573e40a386374aa88553906783177fa1ffc387148fcb8e6aca096f17fe71388c3424e3f2c93d9dfefc147fe80cd9cfc18e2713b5532bf4201e7b420594764db9b796319ed2eaef4780c902db4b22d1ee4611dc778bcdf3a7b1978440d76d2f2d6bd17ae5e20bd9cd76723c84f5cdfd8fc37be9a4ff96a16b66fc19e6ff8017b32a6832ded407e4133fecd59c4dff9d6174d50f48df5315f9b8b199c55ffd9bf3eab183b8187b53358e7cb0192214dbe84b172909f0ff9778d9e5957745c89e9e93d1c93926b6ed3e9c2772da43f92a2278be9bed23189cb0ec934bc868ffe2dffd0c4f07b8d3934ba7e06037170dc8ea939b4d7f73ed304dac4682cbbf7c06341c7290163df60e8b30bded681976f1d64fc3990d63dffc31bef8468899ea181dc79cfb5a739ad2e1a531174dc74087d6f7c141db85219cf1e3ec5e1b275c8a74efd8c96835187df9ef865bd71c2cfd2248ca347733e9a47b66f0f919c60ea9e98d3efbcb587a7fa6fd7d9e3b8828eda76ee31fdf1aca8b57b53129f079e5b88ffd66bdbaef5ed949ca7606cd18d3d42367e8a31ece8fb4f5fec4afe965306dbaff89c06c9a8c827320070ee281bddbf8dafcb6c8cf1eeb273fa69367aa1e8dcdb315f16879cd5c435ffa9ef7b7523389fac9fafe2c665aaea65dce6ffb13160504b4aee39f419e7fa710c5eecc67edd673178d13d3d98272417129f634ec039c8d67ed1feb68813caa794e14c1defe93d6f09d14d833c1f9abb3341767afe473c33a92bbf9ee645e1dcce14c6db29c75ebcc738e47ac9adec6eecb887976ca231c1fee0fecbd3af574d049c6fb21eba7d0e0ef478039efc9b27fc29ae456c8007980e9ec11ffe14cb0fe212cbc449ceecf4e4d5adf6c44603191faf9c73ddc757a7ed6ff1a36d9af2fe76c614e4bd5fb742091ce25bdbba2dd37151d706e910b3cc394d02bdf59bd85f061cce3d3dff8b31227a7ef80b3ddfced71cd93e7667be9a18816a9c2fed3e19312b6e7809061f5827431e473bb7a15056aa915fe8dc05b7eadaf724b64ceb934a13b10c581ed745d3875b47cf34b1b8dfc4bd3de08dede9666efda7b837adef2e0f7433e81e371e35736c73f51846e1ca91fbeffa4c7f56357f15d19fff2f7b6fd6a428d3b58dfea0e7a001cb2a39ec5299710299ce044a4140f91a07e0d7efc8950924a8d575dfeff37e3b62c73ee8e85219922473cdebba4e2ff52717fc447f9e88fe3cbaf658f29fe84fb247dbfa5495dbd238c8ff5999bf33e5b49ed0cfd6be73e9759cb2bbc6135d6200a76002bcb5c267e573ec1d73ce7f17576c6def04d7caf46b6e70ac808a158a0ad2cb43bb0deacae593557bc627d406b9a375bc1cadafaec93eda7818ff6388adddc7f67094dcb5c78c2c7ad1ce2e53e020fb399f63dbc7e2c6dff5b1a4c33e96b2c140f36364df8da3aebf7d71233c7eb8467e0ab6f213fbf569ae97f496e01807b20f08c747ba62295e6d3367f612fe6d0fb85f73defde71c96be9c28e350b46ae0306430e7e83a960b3909a7c06d3a87efd6f83b6b2aa70ce01b7f499fb7e0b4a91f797a4a6477143b129378556bdf6252d72cb31cad79bf1a5ffdd1e28e6408d42e55e39b9f6d0bd7646fda09cb9660544e74e0d99c5cfd937501eeba264720a2e72f27ba4973a9e8456832f7e5683b093a39f8a15617b6bdff8cadec91152e39883b142bfb4ed766979dddbe2edc9a2575079fb7b03a94fa4c6634699b2fb9ed7f56b69e29f1e1eccdd806b7ffac8adb9b5b25d750e4c59d13a5de348a5423c9fb75ca6f77394ea07f86eab3817886376313dabfd24c19f37dd9eb3faab4fe25c7f2bb1cff8e55e352a80e5befa5fb39a899589fca83df8bb37fe42be071a4aea71bc97b901677c748e8fc04f8cd41cd2e43cce17a0d44a10a384bf4453e0aa711e08e0723f6bfdd0b57fc935eb810e3dd7dcbc58a7c103f3e8c873d107e3faf1e773d8ff29f414d2b7a7716f21982641105dcf6ac1a17aa2fe0500e6cf7baafc39f7358f5780828fbaed9cf3806dee16a7b6687df6eb384e3688a6cd3cf6a67b339e0a0124c42bae608c9d94e5e112e5c340ee042687b21631c1b3d74bd2ff19caacf9373aa3ff4e35bce9af9677f4c06e13d913a9e2c59eafd4eb862de620a7be4dcb37f4d9669e55e9d376b12d7b21810bf6ceb4b293f2e0e08a75abfd670fd2b9ce5edfe1c728c8446a79f9a796b7d1331813a3ae0dc35229aab36053dd0f1a1e69063b048edaf0138f3b7952df8bac01441cd46762d84c3fa30cf407e937c751bacbb3ecedbb1c1e05c39db4276b69992dd33259b44585f7835f40a0a1776c56ddffdaaab25dc19501b3443ef1e7834abe4b11695aa270d672fea49d11aa2eb49a5f57f7493673473feae433f14532eb9f9249c5d22b52af220bd449a29842b9bea59662f916342adedf549adadef590cd880c87e57252ceb48acb6b0b971a85a6cef7df9d3073d3ae47c63548cbbce2279de7fee37d05158b6df0b6fc65e3551e73de17253c524778c325bd91b7f6731c5ee912b38d1c8719a9886d8bfc372d13759c6e6d250937ef3a111659aa8179e75b938d817bc830c96123e10804bb7f33d9ff46ceca6f7b32ade09476c1aaeac49e10b978b63b2634dbc83efa7413dd0db593ffe1ef8d6eb479cc101470b8e9d6ed2204b39cfdee09a81ad876cc1a7b8b52d460fae25c8975c5b179e29a7060bdc629a1a92671c80d03b81b1bad350207be421efd0c4f51a7cc81e3f21e66910ad6ae778a947aeb13929c0d10cf8ba989f8db2dd9a71befdf28f39b6998c718c7c8386bf467dd1a3164aca78389e06a3a8c3f9263532a3deef1d7624f97de5ac1bcc89bd837c4f1bf2208ce72857d72e4d1fed092eba8573af70ed0072163f3abec5150dd19c5e5de7b3de893cb3ceaccc1f29a945f08e1b2e3a2f4bd1f9c557fb2ef0bcadecb7e67eb8d6ca64abbdc326c0f132b2ee81a4a4c16831f79ccfcab389bf94b698e0305e17c6ba6003e9b3f29c45bd11ad7b9059c4cf1b3baea3209fec84399cddabc3f275e87c62ae2c6693a27b34febbc509950f729f8974e95fd8f3d577f6fc62d01f2f7f679b6403db24face36d949ffa04fffb13f7e44fc0ad8d39a98f00d172ce01018b8eed88fc757903f928efb3ca70fbcf2916e9409b29529ce68e05df69c88213d1d3992797266bded9c0df29b0aefc8c41e5e63a05335f1807ebf86a25579f63ad644a6391eff2e3d62f9f4742a9a2faa7f7639020c5d6c8b10ac0b6c379613821d86f377d886cb9458b86a595a9b36cffa27b8e7af700a7e701a1c7382676645c1b1a72f21ceeb3a0ac8b4d0d1f9a6e609d9de2b2ef9a5227fa12aabf6fc14f6281bd46ca69a79b4b20fefd05378b2ae3ebef7ca4fe0b9277b694d7f0773b3aa14b6e19940f3b4ccf42288db7df4013253b2ea6526f09a245ffdcc7a0be78bc817cbd8b5177f9abc6e707ad0350ce65058ff55ee3db337e95e8d1dcc677f9c4d6e9accd3afaf51330ff9716fe68d7fd9d89f4c9f978eee311d1f295e96f9cede2cfc11b263d8a75c1b0d06fb96cc8b3a9ddf5b9c62a85912aaf63787299e5cbfe17e79587f4dbc9ff45641ce067a0b7a783f5d1eaf27f38c762e3e0678e4b97fe431ef0ae07ecff9957d009cf695ede6cbec0dd96219b26da04f4e021c66de37d2e6fa04a3da6ad6e45936e7c07387e48a4b6198585c5af842b3eed6fc40ce34ba1cf71cce912fbea1ecbb43be07d98374c126f76deb163a033fbdeb3fc3fe7a87f7de3c2bb3b3d9d41f59ccb2df67c6fb47b6d21a7d0a392ee54a6cf21e775a10e35a92201ea75f62ca68d21afe867d1b97d78efb087265ed3b5f8dbabf97a775ae4917387f996d0b2c97e4f7705a92fd2dbffb2716e66fb89e9eed8557757bedf3205fa3c58e7e3dbfe859d0bb5e35fa1ec946e0bdc1b28070c60d7f7bdb39ebb36a24ef83b96ef7a3c98d05f4ac2db743d36f716af624f4843cb5b5ba7d7b8e437b7c81bd275a897c62f07a387da64106dc3502969d0fd8928dfddf60de0cd744f3ee2ada2e0b45eb2d9cf1947d0971afebce59e0fd2f82df867b46fad7bb423d5d66652bf6523966ee871043f3723fdbcc4d865da2df5b7e414909a1bfc42aee4ee34f59e04f51b64fb7ded569826cfa6a35d2a9f5a45fc91afa90210e2a5cf75259b4ef911332cfa2ec52e9d2c882f79dc43ce870c23f8e9ee5d6e801cf463e17e6c855a5015f0437c6731f474887b7b8ecdfddd73bfdecbed0f72226855f2518033bedc5d0053f5b9fbde983cdc268a745e46596e9399bb666b8d35511ff6813ad1f9f27b3127cef868f079eff61dda1b5fd420ebde4d8f09c284732aaf91e7aa7c4f4e2d93c4b7828aa075e8e8c4f3c4b49bd23dff8e9efdfadad25f06d08c56ae8ef64fc7503f78f2a9a63e8f57cb18ff345f194f8647fc3bb82bafc2dfa6e8b79a55298930df249909d09f77d785fe9f7f75ffce8fe688d223f807e57adbcfa662dbaa3c7b548784b9bb548ecc8a85249fd068e3b8d8f9e5d2e91ddb906ee4aa8cd1eea3512e76ef5f475703cc5893294c9cd3deee7f63d0d8f213583644cb56b7be9b6939fcff09ebab5c8598c39b0d73027e0339f179d8befe1399b6f9f99b6551a8c5ee84fa66a9c5e3c0b2dbb2bdcbfec9e7d5c27cebc7a764ddc9e8318f6e5dfe6f1e1ddac8c79f9f2bc113cef3399f3745e5bffff41b7468c4ad99afdbd38be79a26578b6fbeb951ed1b286c768fded7e875816c12bf2804fab2f3f5c7b936cfa35f32ddf0b706f51dc15df9cd3f83cd137f2c97fbed62fe132bd5c9bf535f4151cf08d703cd127f1c441ece1d978ce3ba3bca94ecb199f2ab187d6e8b6b1f5d417f7c331265c9b15d0f277fa6a3fdeef640f34b8d1c3f534e0bf18da39381eddb363708d7f3e88e90cf64f8be579c55ca951ee8b9bcab3df0ad704bec7dc8fd1fee8ec2d62d33cf1f3d60dfe22b2338bd6e784f3dbdf5b3b19704e1fe71ceb62a2a335e0526874667af52ae04840321ff9dba937259fb1ceebfe16a963e1b395c0b59a751497c3de55e0fca19e3fd6a64aeec772213f3cbb5cc88fcf8e8e6f9e1dfd9db6c766edefedb3cbf13d7ef2ece898f6d9d131fd6747d7a29f9d7c8667a7fe16a963c9b3c3b5da67574295ae27137bf10e0abb727da538190ab437318e395a4725af4d5fe2595c57587645aa99dfb46c7e75b9f2e667f4b5e19eb39d98169ea4a4200bb31270cc34dcff59841273f6ab7134c4e0a563250ef438b3f7ce8ede6c815bca5e1701b1f908f709ff3562d0772d6e25e110e2bfb8f4ba8ce7a5260edef311781e1e7c0d7c6c13438163d2f6f869999263ee9ad8bc2bf9dda9ca9eddb94c27056d0b369fe15cea6ffa586287bc3bf8392c336157d676bcdd6cd73cb51e615d04d3b160cf53f8cdadcabb96584b6b6e19c6762cad6c177e37d38db04dacf9ca3eb4c7e3df19642fa72be793d7a6cf6b11a8d85bb598b990477c91b7ae3dbbcc406e52ff6b0dbedb8ce1bb3c909b059c55787199af1c65b21785c97e4edb4eca803757cea12fbd975b7f8637dac52dd68e52b94e827c2d8ca1675e52249b0291af4249e7fdd3bf88997e8be5f9a406a2abb77fe54fd2b2890d0023c1cd073d71c363042ff3d0e75c7de27f74393236c5b9212b4476dfbedf9b92f773b1f341dd29d5b372b26a6f4bd976c6e175de79dae5e2087e6d637374582843dc1834c6d126c4f82ecf72e6741e7bcb40fcd7b914ae938f374ec4201dfa924b527c3bc39afd96d78129908fe189fcc570d01e055c90619d121d3f253590ac82f638c11868b088ab210eb126111c86079c610a93bbc56af8e63a22ee7308eafcaaced668dc1fae3196824cb8ef66ec47985955c0e11a6775b6beeb71527823250ac4c3bb1f1fc650bbc8219924143b274f83e38bf19c2e85cf0909c44eb7b969326fe87c469fe9d0ef0c39139157b70cbf5c66687e7f33f8dd2da0fecab5cb3c941272ce36d744feee390ace879c74fc3dc495c2d4e79817f33cfed861dd577bf68241f7d18fee5d35ca1ce4e86991baa38dd1fcb698cd2bcc731ca66e1616f0dd31c89bcf863dbe870d8f940463a8164732868cbcc357f3117fa2f92c75f40ee6e935902c6679bac0fbf74f9f6c3867233f134e48f6c33cc749117256ec71e5b3dfabc5d1453e86158a6911d4f987272991c78d13a4bfd0b897a69e6b22d8e6ad0edd8a3cf11bdec83580ef2ff76dab227333528d12f8e1c1ee382da8630ff960ed940b033d4b197d213b75967f107c96f9ce51d0bca6de0c1d27734b2329487e31427e03bcbb23c450ed9d6d8d96a7cb16d9e6a1a3a4781c41a51ae5c8b395933f17185f146af27ddd7d9f5e5c3b4c4db0513e2b9f0b2bd766c8b593f69d99627addb1bddfab45bdee7e7f3cbf5ad4dbdef99e09cf315a74efc40c1c2b0ab22d399e5e236ce4715b3c8efa77fbfd06f65094bb23b276eb79ae093c7e16c16276f6fdfd6bf419a135b9e6f802c90ea8ab819ef905e73161e53a9fe79dbd68e6e24d35ca867b11ed43d8cf688cee6851d3f77b886d635c3de02524387a67395bd401750f8c7fd7e50a3d7b7d9585cfc2b385da333e41b7f95c89ecbc432b33e24fa4bfb99de34544661cd4d9fda04fdf46aaf1997b31e110ceacd49b7e221b14ad813acc42f01d37d08bc8575f4fb8c39fd5250623ef04ef6feb452ec68d3aec1cfde075f9d0d49bbe1db66299ba502f05f590371f3d57fcc921b980f3f87c264b5e1e66c209e4e0f4f77935fd7dd78e412e8b69264be92d3430f7b22ca68c1c2339bab8f936cbfa59cafc74bc2ec75f7cc7baee9ccdf827f31b6629e7daf89dc8641e9f8d479b7ede82f8f3b093364c20e9ef5ac59f76cee61cda32e43c344eb88699f0c735f82b792fd7802befaefdfbe0db7c12da658a9e696f944627278352857713e0751827c5faa4dcc2d1220d92f4ea65132217d6e81df66ca27f5123f9b4b66c8931b621dfba437aa766ce7e7ce0d058706de8301f8baea323f99e406e17f403e46e6b742d0feee3a27d7346bf2fea24d7448627710c525b8cf481fbc00b4bdb849e318e03f6b3f26c2fff9aa2b16e91bf1205a3c5d2b5d95483ba84f1b1f355ca028e413643bf4fb958554ab273dc7899ddd1f88679c9147cccd3621d6456b6730ec8df3b22791830d0030b9fbbfb201f4ea8e594e9e16153755309f40e8b6f859c8da3306691af7791915cebd5d676dc516ef5e0f77eec8d326bf808c269498fe7ddaf0e39c4a921f659d62aae21bc68d9260f469f85eba44b8c2ba92c5dc753e0fecd3a98b1174d98007e3dd2198093398375c8ad9c4bb27316919b95a937031f2a0aea7caf6502af89c17fe51d7a625abbb65278c817ac01afb9709d456d625c4d7887a4f7ff08c7e37e4fcd73606da55ac65f9bbe4a4d3ca07b4441555ea8f98ff0fc6f0bbb52a8fba3f7b6c9034e887de27bd3eb09ea8671bf6521675807136e4fe4ef9b9e5da2f783e309559f7fd8a7d694079877d08377751df7e223dd58c9b9266d9ffbf35272758da7efffa2499733ee39bd17f0ff695d50f3f1ee56f07ece9ad83dd7324b0a6abcef681e1fd68ea4177e5ce64aecc6d4fb8849ac1bada5d38bb5a4efecf11f392e4fda90efb16639d27719afeca0304d96d5b239e0c9859c5079029adb61ef50d79382c6a3894c11507e16c60f44fe2deeb909330b9e5ba6d6807c6272b49e8329ac8371af67cb9afc42ef3c8cc1d7e756ceef2bb5cf0baf66efdac98b822c453653e11ed93bc45ac53b1aff5dcb723680fefea408d1b1683f674a14c4a50ed7eac9a3031a032d8ffec031f682d9395e8ad692265098c6e21ceae38269e9833c41ebb12f83ba7e80f81e7b595af8b086db31c5788d7931896dfd4d661da156757b49bf0c05f999db079925b94466c9b9d66114746bb3c235986ded8d111dd179da7c426135eb505fba6e72aad3e4eca1354df71ad693f3ce644d2d53ea2dda7359fa86eed7e2f08fca495825ef66e566aac8f066353eba8e9218a21579a255adbb797abdafc4c3d37de53afafb17d87420577beb6a573dd92bf37ba18a6f10a7f2d3cbd6319968332daf3697fc916316edf1d831d9b9268e7ddf2862cd90ff782cc3cb867041df59d3de77a7f63b1bd6193a37eebe23ef364b536faa84ab2d53f838cfe1a946f946f6e6e2f9de74636dce3c706aaf9ccbff099d05f416e21819dcf71db0f5e7cc15f9d13e5aeb7306f8017735dbf4b02c7edef342f00d70ad3ac11b793b0771f26dcdd612388d092fec16631acb09d963499b838f21266db2d1bfefc1f921d6acb47ec49a1581d3e3ba12b71f7e5cfc519d8def0fb166b97148e7ba408648c8fefd0e73b6a9e5b478c041cfac24b417e9800782ea1deac575a37e0fca373d45183ffbb37ddee927c462b529a96917f9ab2f2587a089291b9fdd7d4e7a214bc0c194edec71ea4def077f241f700dda5bdcd38164ef02e6c3ec35ceaf7ffc615d368e39a3b98f56e2db876ba0b957a087bc3ff702f0de0cb8d9aa671ca101d8df4941e148fff3f57d3ce0b89681f65282f125badadadbcab99c3c677d08901ce152ce337af10974de7d0ffefffae073e3e3e0f77c65cf79d9fc84de6c2d03bcff0ef3d7de24cff02f42d1aac3a95cf8557943befb4f3033ba73ee913e4df23efe2fc6fa08ea875e2fc0d326f80115b21fdc8cbff9a2150dd624fa2deaead2277c00b98405d8ed418ce4f927c4223469cbfbc722da196ee623798f3ec7e3bd03f5f3d6642fd2b5e0db7310b79cfaaf7116a575e121bb18eac716912fdebb7581f379e4fa5b3e349202d9904fb122a57511a2773d92df832ae5bf3b0ecf0b4362ca8f79780dd72cb7d80941ec6672a6dc7cae4c5dfbad5f7376e42b34ee40427b6bfb1e1c2fe977d890a4570dea7a1d968779c658f07f3927e5f7780d96118c7d3a8e9ef6c1f5395b6afafb21c641d77b52429cef9fc86c87e5d380616f9e641580bd302d192d29733fbb80ee70ed148d9d0fa76305e34e3cf98dd4c6757b3639e3f8e6ef1cd723c3e76a6126b9fa34ceded509c21ca6fcde73160b9fdbb0beb8fde599f947c70b9ea77b8765b484f4c121fdc980de8a90bc0c8e2ccdef5684d331d8cfd8361272b4765636c523ffaa369c963ff5bcababaee54a1de44a5edad747367ae82790e4b31f27bffc634efce5cf67ef0b6a6f3c27bafb238519ca04d529a267184eb2bdcd7b3d56f3863b42c1fb474c33e07cb0c7577fb43e40af9de845beb418cb6263977e4641f5999258f02118594d2e2b5ff67b7d7ce413103bb9f20cc8b3665eac84adfe96d61d8f5a55fcf163c09ac49c080c3ff253b097d2e0b441fa02e9f8fc955eddb6e3e8c6ef66db03f1cd88fd763f045c8a64cc61e7ac0fae8d6c4e21f9323ecfaea383be0d44ab0aa5e4a054f29f50b85c1da388954a867e300a1fe36ff9a8961bb4b5abbafcc0cdef734fa33d0bdc35b87f8f92ad835eb917efeed8d5467ce6e8dd7c499f380e3dfd64fc0a783e229a07a9e3954b787846ca66d839e5446dbf677dc700de16c02b52a54b77af3aaf3471c17ccdf208e96f0fc970ce1b603161f94af70e623ce4aefff0bb39d30806297e0f29d46dd0bc0efd9ae03441fe75286e0fe49948ef2ec50f07fd5363a8f5d467977c25ce7beb6f67a411f4576554ed3ce01eb9996b606e3d97db9e77c6bda4ed2cf4ecb0c6fb38425dee2d06ee24b47ec93e9c53b526db0fda76eaf016de4a8c3bc6361c66f720e3197f04b87f2d0e43a34b7bd798cd418e76fc852f9fb7b5055ceb923be6e5463f7b6bab891334e76f48b7503c1548cef2835c2bc48256cefaea736f4887dfbccc45ba01fd8f3e673b4749d1ef582694e93fe8a56f62a68398f3a067dc51fedbbdc380d7d0b7379b98edf88ab1fe86fc91bdde884c8995baaba904ee8074c5cd911f866cf86433e71710cf071993773df9dcf61dec62e9596e377dd92b8f6cb27eeef7c2eca5fb399cb11f7bc253e7c798af30883f73c8d1d969a68a185bd21c8550cf426421d4f575f566eb57c7143b6a3f02779c5944ae534e3a1906bc72c06db51ac1df3c3eeedce3c65bd9c0f7c3d823255cd95bb4ff2bc728afe8738f8b4edafc2b7f618139f6aeea2c801e283f3ebca9045bd3c71c5b75e3373fc6d9e70c89b3a3630bd5288f2be782f998b3357aa74dcf70118afccd97367930cb13a8ed4176f914e283f0d96b78a371af33af89eebf89e7468f984b6f6d8ccd8f81ffb31f1713efe83cccdb28aefbd84bb3491c6642b1833ea37be1d6981fcfe74a66e7fc2ebc234bf7271f95d83b6ae2e12186e619540c6d10d385f580ec81eebab143d74fbc8c1f25c5f35e56c2af7d5a17f4bd96d9e4ac1a51ad89eb3f72ccc46a1565ab4a617c8e2f4231bdcbc773ec6556eae1fad998aa59fef0e271b27316775f14c626e130db50c76aa28beb21f1bbab57b65e105bfdc7f2a7c75b4becc74505fbe8aace0ecf7af14ad52859b2f66a8c6bdee47bd6ff5bf91c58cf816825e81ee81c7fa424a4a6f088f165f9ca13adca17ad3aa8ca0c7306f29ce7c8c56e06fc12f957b62d7ce09ae862bb01fca6a4c1e8f3067846d9b670ea7f950b6ac708eb8d8c077a0aa74a33dec27316188b048f0dcedb39395e939950ed6ce10af581fd31a1b5597c990f31f0ab36551888d31b72ae492edfe480be8cf2a2c4de58ade48b1c5f2e9a78c8945382d720772882cacdbe8c22d61c580b77dcfbb826c7b0d4fcca85db1c6b2bb720dba44156a6c14847ebaf39feec8fbc348891dfd7e4831ef359f269033924f9b19ef3636f947b4dbaf4e2ac614ce2b112c437915d7e6ff4897b64e1d9a0af56e4af38a62277fbf739c6d81d30948e6c4ce6e58ed632c8c5071efd43ec892927c7e5477f3f23dd1ed036c809eb66882d26ff255d503ed50575d2d7f3d2b6afe73177e4b1c10b071d601c1a8cb182f4ca660d2e3c603d3c8b2b36fde0246f3ac081beae2a25928ff995c8f02e3738453a097a3e34cf49e7fe2804cc81efe4329d67c2f5b497f46bbbb985dc1bac79ef751fd791f01b143ee042f3d735e0da141faa584ef612b23f804b29d54e9f15f1c1e64d3d297048cf800395f1479f90ab7201431bdb5ecbec2d5332f05b79cab66455516ff0be917d70d44ecacd17b7bc5b8d2b9f2bd3bd748fdd93c58422f271ca668ce877c8d9018734f01fdfc9f99bc825718295c1949ab8407353edecf9859e1b07e21e490135b64ff6d6ee494e03eba30daf897af1c5b5f3f3eec5253dcfef748e06bd9f07fc8c4a3e346b6ac75963c0ee015f00c78f362dbe0cd2172ec1974d0a6fdae9327ffaa8cbb69c90795be1ea72d12d8865a2bbca1feb2ebab63888fb5c329ee166c8f60fb9711a241d06ef5e2a29ee35f66775a192c2ff136e7ca253c99e5e377b7a44f634d45604a4b602fad9f0deef74a99160bc0ef43b920d35d456006e27ae9d40d73cf0ea34aa0033d3ba1cb54c09578652ef447e24c7656573fad5b5185e3e2dcefe2888714c8ee1bde93fd6cfb44c060e782d5b9c77769904997545f6018d21d3ed6f3a7f2f1732758e9c323096eebc3bc90db67d44f9502ed1fc551e5edf299acfaebf40ce946c42f720a6801f225c6e3dbb4e5cbfb0ebf4ab47ed21a2f73b9beeb1fe1f7a70f6680cd2a5ad175f662caf1a438c4888b7756b13dec1a2f0b931a56fa24a9b0f6a15a40b8ff4c71747cda599d7ea3439cb991779e236c6f1e3b657a8f7ae76c225758c5e1fdc876f7c53532f35fda5eb77bdfe7dffd735f60e53f8c633db5548d05ac0fbfc27b5c26ed5c534e76f2dee553d1fab9827e657105318a6ec26f2ea2666f9fb3b1cb75e6d28c6a462d3551f93f6979c5e6e643d1c2c8adfd131e477fa3713f9c702132fb3095a83879d4de1dd88db7cc5416df6fb0ef8c4fe991ffd6cacb8b7c97dc1e56ebd88d5d2be79bf374fcec6ac6f2bc87e1bf29cbeab1cc438e79817ef6dd8e7d4625ae947f76d31d3d9c56ccb026680b9ae96e67abc3806d5d2dc66ea4cbf2f6632bb34d7ece2987ea9d29a47ff163379bc9825dca296c70bc33dbffa5eaf756661fe1ee9c7e0ae0b6fe770c6326a2d97fa3118eba65ce92660c64d56b379a51a2ea31f136669ba23fd98b0aa356656c7b7ffe86692ab46512feaf568719cd74b5327e76c73e5d81b6faed63abb307f737abd2d75d3fb0a67f7c9d24872b55e570b733e5e9afa686906e47cfde17ce7b4fecfeaf8562e6274cf49b5381e18bdde320bd3e3a9382cf4c57d834389f1f832aff039be52c5b7b36ae418c3127ad836b710d907afebd2af98df86ede502be466d3dfbb5ad6ddfa60caef1e687dcb23d8cd3502a27601f7d9f7bae70cfdcfa65bc3874168ccfb106c1223e78229f06d527c4cc7d5b605cee70f09ce88ed6b767af0f6beb5359c69f305fea3439f4b8131dfde0db691d7060efd3716e64eb0aae3dc0b9a76c5cc07224714ae09def300acb25f7f61f7d565c34fb2d77819f6a8c312fe3a2c4b2c8f25d8b293ceb1239269be2b8ae0575003b24f34564af77dcf84aec31aa68f9ba009805f54eb2322f2bd361ef43cb891a9711c96700df0dc5b1ff11cedeeecb8ab984d3f4ba7208deca1473db68e29cf7accbd5314a18131a6728c03819c764233a56ba7758fe5fc43fe99a513217e0ab442f6c9c6739c45e7cf36f356143ccf1dd2b1f13c79c9ec668c2264693bdf5633427fd0c3d85fd9ac3b4ad7b7bd9d7f26d3c85d507fd6faef180e7f6939e226cebd03c3653370ba9de382b4b53a88d229c1a98431f70d367807beb6c004fe7cb2e53b29ff92626af5591bf36d89d632437af6e304b999b93b1b5664cfa36f680aff13bdee496d7c088726d2a5f94d93c06bc71a6bc8580e52ed41ef24df1583bae337152c8317b092a266eb8454293b939f1e11c62cce902e9a2bda4dc2096ed94b5cb09856724675b2abdbd904f746e9daf46e5c57536d5ce399cc9e7bbe72875205ab8decd29eb1d678d54219ad846f24b35d6b71dc1997d9d2b058eff0a783ab0fc7bcafd1d4e296c4b885da58587df07f8999ea3305f16eecf54251dfcd4bd5446505704381f5dced1ca8422b4b7678cf597b458f218231dce7dc965edb6b915c8a5458e79c9f7d21d62ac3b73f2909f6ddf9f71883ca79cc8cef68aeb413097b42acef315f7f667e5e867d748fec8c7f3418e2fb95ac91ff231afd49a8dd44a3e93ef72792abf53cfdfd4657473604435e10fcd55a3044c583f2e78f984fbec0157c6847b54700fe0ad6aaf770c460be85d516b265e56f21f8c95f37f39ee59ff86b827fa1d7a6dc0579b635fcdd9fef3780b5587ba331feaa0eb2626e33f6236fe2446d9d428d375e9c75e5d3ad4b1b231f4d34d5bce9464e52c267be0278378c62f399bc7cb18ed27e14a73bdbd8e9baf9fca64fffbb879def2ad1b4897badfd4052ad0d3d7e8a8ddb4bc40ef2ce44bb69c6a947bec3bebb926813f5e436e0574998efc8953e75bcbfc1717a53b3b3c87b3dc9733a84dcbfd74730ba0d6967c4e945b286d6ebea1849a14e69eb4392fd322f66da1f2b8f46a8a5616d2c7a74aee711123a7432e3d665893c1d89572f332aff69c75ac726033bcc2ea2578c7f3dc31ca6a652bbe67d118e56f7f08beb182f463f70e7ec33b08a725e026abc6bdd4a7c90f8e15c8b169cb93a84ea33389438cb56c11ae0ce5e87365e13a9f35f2f77602fa7ed3fb7e678f4f725c9eed517275538697b3c5cd17cb28901604972ff2bf8c71e4984cec727ce123ff12f019a25b58c9c56e9a14e68cfdd8d96fef8033d66036ccceb53efb5d0cf1ebb07ffb800300e7b6f849e0c7026628f283afd05795923efa84e535e9f06ff21b1d3e8298f43ea3392031541a5fa9f066b89f81e0241c494cb5ed31d744f7212e03398e5e5c86c1b1d9ae9710ed053a8e7b5955cad9b3d3d34e5ac7cb8c295cb07f9f3fbf36bff77274ee915f2c33b9f87a21877c1a7fa1c341c0ef96c24de8e2be2dee4283b3d31cfb97fa756aacf0f9f9f871cca9e07bb52d3dece4dfbf82e9215f9e7e17b6f950dbbe40baebbbbee96eafb8cf63a8c0d7b919fba2e5ef5886978fbf63a839c5bd3afeae2aaf8e9114d6ec7fe1de4d8fb8a1d4ee48b9f9e23d56b9cb2b99f2879629cbc1b8c187308a38900e307e8c0506e3cfd1f837ff1be31f8c01d723a0f77927d8c945e10b4cae09fa43bf81695b177f8809dde35c6af52087b9371f7937b413b69d6dee12aeb6f7f3ae2a5395cc0115b33b91fe222af65dfadeb4d435f112aa46b9a2746e8d7bf2d9d4b7274f30001e710342f0031eebc65b7bc8bafc714c9660ff26855bb5efe5f8a3bcb694f4e29ffd1cc2f3f8a75341fcf34d938a187a520c36fd923e233f035c8bf7af29ce89ac46872b92d304a3b48b95a649d1c34ca9f36d87c3a1a4de2c9fc367240767b9d9fe8d31f756e8399fc9dee1b3fa227fede54aa64ff38fcc30ff8873a96eb19b3e8faf86ec25758c7b1c7269128a07c01add556e269fb02d20f731c83ebe9ee099983362afd4ec9b26246dbfa435fb877d520f71f964985bbfbde8851bc8d3aef766d0cb983fda8c096d33d23aff75ff8d00bd1f339f1bd7a1cd02562660773dee3b8ab7f545ceeb497f24d8038dff62e3fa541762b7d02b7bfb49bef7b93d0a38a639d50bb77dd10b87f6c28c9a8b8f86dbd59a9626f619b6d01bf55faf95c0b604dd6b86f3b1a2107bf69df4490ab5261e7abadc3b4eba9ce531cf88ed70f313d0037f34e9f78b1c2eb5569ed4d80cf0990ad75652dcab8673bf3e379ef9627adcfdcc27617c2e3cf980b5446a4785effbcb6c648f38e504f9195f26bb47369525f2278f2b534d7279a71a53f2aa3c51f7375fe8828b127b17f0d3a524534ec999ac859697a19b47a6c1cfbd6b27a897e4e54c61c15f88bfd91fe2e1a99f14507e523b6f757e029f2e4b23cd2e2337b30af998279ad8cb17ddd46972de19e5559b0a1cf466b4f6b495601955167be9f5be08469f11920d833cd455ade4cbce5edcfc5869659c593de67dcc4ce0dc4ca89ab997e372f5a44ff483acd37739dddc3c2e2c3ce3f3ea3a5eee11bc74f944fa28e65bdeacca35e9bbc935f14cadcf35cc19bd6e3c2762d0be5e5318c4adef7a6280ebf69fee453a7749f6c307256ba017b57d5e740fc801f7f62fd4ef35e7209bde8f3bae27b447d1f15e85fcd8b72bda63d01b3d63afc81e41fbf20bfbb4837a29b80f2d033838c6d10bafdfffcead2ae8458e972717d9fe579c2310ae9e6825da9ce109e6217917e508621f5d0f31f2bfae5ae7b7a526f5db13bfe0fa243e41f6dffaa1afd5c5b67f86798564e00cc4cf0cb9e4d7b96574aea353d7deb4d86bddfa7be8ddee74d796ea21263e43f7ae717dc4ceb8c73e59d372fcd4667fcd4782d650e56661d5e204b5bc883d4c23a3d495d88b95d85ba07fc0098ff3d9236d7e2fdcb85c388055d5c9f1c6de82dc602670326078074806bd35752a785fa427c24b1737fd049b19fb07ede7663dcac722c671fff1a99f5f5ca3ebcd575b52cfc8ad9b1891f98feddbd3a55b5faf7358e4f985587598825a3fefc80e6fdff1ec1cc9b6c237fe40333f7fb57bb13d826410b7b301ff10edf122b4b7efdb11f3129b613b1d471af48678b907d88717ccf563e6dbfd4b1b233a69f301977c83e52031c5d774586b0631b0bd2616853775b3cd1430d9fe90dab50c6afad00aa9484ddf14d99ecd3e616275f4bbf00d3793332fff427bda90fff8d85f1bab4d4c8dd19ff50637fbf21d383a9abac4d939f6451c2f000c96c77d4ffa87f5d771ba582ed6d5780af1c5197b41c736fb72b5dda2df3adbc964e7f877eb2d9cb1ff87d4d8cdfeefd65b33a44f6c8ef92930276ff2af62bbcf6be90806c91bc1bda07adf71ad6bcfe770eba19def7e5ff7fc63fc923e7645503fd49ad6da54b9fba3cf5b9859956647a90bfbe53b5be659ad3470913204c7e4290605f19d8f242f70fcffe75ab9795212bff65da2fc3bb9e23dd4b0825c493482dd876305506bf92f7c4e7a0ec1e7c4793f2c279f61b9804f82e3395be293d0737cc0ef811b33c0998f7d91283829b7906d789a7ef3aab8bd06227f0f20aebabde2b8f043fdd6b39c083dbe1775dc69f1d4aec0be05aecfce842ac8f811f1e363f2beee6d4db7c88f90fd0079874e2f16ad5f73fabc05a4061cc9e395713837bdf23bb3c375df919e2f64876b869c237fc66699dcae3f696c81bff9b42fe33a41c6179e798edb3e91a95c9077f3ee4deff1d794edcdd7f2943cef6f1026c517e81aa5d69cf6d9909e1a033ee3f435ced1cb9c7dcfdf3823bfbaf24741bc37ca0bf0f3cff857fbe148382f0a2f4edebdb8eba778a87d1be1bc339c373bc74186f51bc8a77493876209f8b45e3c9e356b7265eb1faffb2c5a1fe1c37fe813ebe39eef8d43be1c6daa2fe7725dd9e3c91ef7938ad43931d56774de397aac1a877e4f7ea5347568fd1c34a905c0b8e96cd3fb9fefed5ecfeef5952ea5f2a3b50e3a734efe3e34fab3d6670d57d3a1d6cddf4d9eb4463af2599d7a536fa699f3c23fb25ddd5dfdfbddeb78c501cbb0c1ea76b932751df9ac9ac51f75b49ef8c782ea7b86ba96a6efbff69cf519f37d923c95c322bfaed7b348aec70771c9f6b87ea02e127a3779d778f8ede4396b7ef7f8fdd97574deaf1ebe4763e183aa8fcd16beaab3e9f7f5313fe8dda6fa2a212ed4ce9d1f339765053dcc950ab5482ce0a887d384eaf77c6bed62cd145ef6aff5d640955cb7847372d9effbae7e703ea3c7499b4f443217db0adb78f8acc12b4cdf5eafbb5efe83fe76dcab2f0a8c6bf17b4a6656aab4ce57dcd87fd12bc2acaaaebe63192b67d7599ce59479f7e3f1c5759ef6c40f9f7bac3f601e3fe1457f5147e239e504ea989f70a5863336552b39ee9e47be839f367533dde0d395c95c7463725f55f2459fcaefe1d3fecde7b5115d8dc906e9f5ab67d13df0eb42ee631fc49def738e7489c15c5e2d16c2bfc3db21d8cf67cf480affc8dc97dcdbc4332f57b52a72d2174e9dbb80bee67e3fc00fefd5e14cc3bd0274af918cee55a17be1ded0febd829469f13a0807178d9fdcd61c3e891fa27dd9c8bd88aaf74a9ff0855e55b3e10cc19cd9aec9024e2fd27d2ec527ab4fcb9cc293c85549ce1b4e33e8fbc6bd4363a8d333a26a65cf73e4350e312c82630fc3a2da0ff6185d73f6b31ae30edf04cb74d2bf6bfefe70cdb25a56c51fd748537bb4fee35a905bbcaa9c10eee93e6249fee975da5a27cfba302ae0ff587e386d6a33dffe905a4db8c7ca4ef9812e7c917f187f34f605b219bc9112f9e6037642d79b8c7c8fe1f106d699e134ba225bd54a2cc39a5baec32ee4f576236c63c0da44764fe11963719b0892b9b59696c09bc65c986f2c19d7db22fde56c18b4b6b65c0498672a709163ac9a50da442e17993b51483c473ebb38df916a19e0a1ac838c3f05997051c579ae4d85b4ad3503fc5d76ed3a4ae4db1643ce4db5a454cce4b2dfb29b4f4bb04cb5d5e1d09379f29c0db997a2f899773345fe84aebd6c3058a530f7b3cd2dacc6912f5a15e6d62e6baa772eda1b65fa256d523fdb108cf7fca94cddd9501bfe473792ffe31fc7549d2e256fa1c6d82b7c4e60f45a21980511756c7e558f329dd3aa80a705eadbcaaa872b6094477ff439c6b2214573c380df380aa38060516d45a142fb04d78c94b786d733a87bcf80f517258b8223fbb137ca66fd5e3bbc85e28fcacd9bb594afec31d417fb3573d10987b56b006734d8ff4aecc64ed57c46f60e1c73d14d865f19d10d7032398b593b1b24db6353e4094f29d4d3e6aa91bcaacf6ed78a2c6e6e9eb3b82aa3f561270a9c677c569e23b03be80dfd446baedad90a1b8adb77792affd919c947905ef2ae8640ce1d93bd617e150b634f9cb63170085ac5dd71ca899c4e9acfa563a4cf319293c52db4cbc48f434616bddc1b5995677cde42677df8b2791630044e1bc0a997e742e14f3f593f4b912cbe0415f0c5b2beb83e04a34d149cd6c83e6676d3dfa7d09a9c64a989c9df0f10fb140506624827b417f4f658171d1b13ec8206d78c9a67cb1ee7980baf5b0b485fee8ce435664c2b233e139fb36afc7c511466db4390596568a79567af0f61736d93d45c9a97cae6928ecb3f4ec395cdf3d41aae600d136cbd6566f56bcea4f5009f01fc70ec9b598b338eed4457d2779b6a27f25dbab8858e72f48ca842325f039b9abf04625a50e755aa718f0632a2275f8218c997c5cab43e15736e3dca1871fe5ac648f2773226528d32eacdc3bfabdf2e495de81538a87abe6b8b4188d7c134f9709ff43bad39a1f2e6ff13bcc207fcc49739720fc7799fe3f688db5ffd5a7aa81ba138d7373cac8f077cc497fce30d8fc55f6b7bfe823b055c55ae01bc582febca7de023c5321ad92d5063e334359390134935e93bfe89ffddf76c6602d7e59d9bfe36e1ff855ae42dd422abc09981f99417f56f1c436d73a5ff0edf03e3a16e9fd52467433ce6dd6c8